diff --git a/bundle/test.bundle.js b/bundle/test.bundle.js index ea3a8ce6b..84a5e90b7 100644 --- a/bundle/test.bundle.js +++ b/bundle/test.bundle.js @@ -423,7 +423,8 @@ module.exports.drawXYZTileInCanvas = function(geopackage, table, x, y, z, width, }; }).call(this,require('_process')) -},{"./lib/boundingBox":2,"./lib/dataColumns":8,"./lib/db/dataTypes":9,"./lib/db/geoPackageConnection":10,"./lib/db/tableCreator":14,"./lib/features/columns":20,"./lib/features/user/featureColumn":21,"./lib/geoPackage":26,"./lib/geoPackageManager":28,"./lib/geom/geometryData":30,"./lib/proj4Defs":33,"./lib/tiles/creator/tileUtilities":37,"./lib/tiles/features":39,"./lib/tiles/retriever":42,"./lib/tiles/tileBoundingBoxUtils":43,"./lib/tiles/user/tileColumn":45,"_process":357,"async":82,"fs":113,"path":332,"reproject":381,"sql.js":392,"wkx":419}],2:[function(require,module,exports){ + +},{"./lib/boundingBox":2,"./lib/dataColumns":8,"./lib/db/dataTypes":9,"./lib/db/geoPackageConnection":10,"./lib/db/tableCreator":14,"./lib/features/columns":20,"./lib/features/user/featureColumn":21,"./lib/geoPackage":26,"./lib/geoPackageManager":28,"./lib/geom/geometryData":30,"./lib/proj4Defs":33,"./lib/tiles/creator/tileUtilities":37,"./lib/tiles/features":39,"./lib/tiles/retriever":42,"./lib/tiles/tileBoundingBoxUtils":43,"./lib/tiles/user/tileColumn":45,"_process":650,"async":82,"fs":115,"path":625,"reproject":676,"sql.js":687,"wkx":714}],2:[function(require,module,exports){ var proj4 = require('proj4'); /** @@ -555,7 +556,7 @@ BoundingBox.prototype.projectBoundingBox = function (from, to) { // */ // -(struct GPKGBoundingBoxSize) sizeInMeters; -},{"proj4":358}],3:[function(require,module,exports){ +},{"proj4":651}],3:[function(require,module,exports){ /** * Contents module. * @module core/contents @@ -794,7 +795,7 @@ ContentsDao.prototype.idColumns = [ContentsDao.COLUMN_PK]; module.exports.ContentsDao = ContentsDao; module.exports.Contents = Contents; -},{"../../dao/dao":6,"../../features/columns":20,"../../tiles/matrix":40,"../../tiles/matrixset":41,"../srs":4,"util":403}],4:[function(require,module,exports){ +},{"../../dao/dao":6,"../../features/columns":20,"../../tiles/matrix":40,"../../tiles/matrixset":41,"../srs":4,"util":698}],4:[function(require,module,exports){ /** * SpatialReferenceSystem module. * @module dao/spatialReferenceSystem @@ -1104,7 +1105,7 @@ SpatialReferenceSystemDao.prototype.idColumns = [SpatialReferenceSystemDao.COLUM module.exports.SpatialReferenceSystemDao = SpatialReferenceSystemDao; module.exports.SpatialReferenceSystem = SpatialReferenceSystem; -},{"../../dao/dao":6,"proj4":358,"util":403}],5:[function(require,module,exports){ +},{"../../dao/dao":6,"proj4":651,"util":698}],5:[function(require,module,exports){ var ColumnValues = function() { this.values = {}; @@ -1615,7 +1616,7 @@ DataColumnConstraintsDao.prototype.idColumns = [DataColumnConstraintsDao.COLUMN_ module.exports.DataColumnConstraintsDao = DataColumnConstraintsDao; module.exports.DataColumnConstraints = DataColumnConstraints; -},{"../dao/dao":6,"util":403}],8:[function(require,module,exports){ +},{"../dao/dao":6,"util":698}],8:[function(require,module,exports){ /** * DataColumns module. * @module dataColumns @@ -1762,7 +1763,7 @@ DataColumnsDao.prototype.idColumns = [DataColumnsDao.COLUMN_PK1, DataColumnsDao. module.exports.DataColumnsDao = DataColumnsDao; module.exports.DataColumns = DataColumns; -},{"../core/contents":3,"../dao/dao":6,"util":403}],9:[function(require,module,exports){ +},{"../core/contents":3,"../dao/dao":6,"util":698}],9:[function(require,module,exports){ /** * Data Types module. * @module db/dataTypes @@ -2119,7 +2120,8 @@ GeoPackageConnection.connectWithDatabase = function(db, callback) { } }).call(this,require('_process'),require("buffer").Buffer) -},{"../geoPackageConstants":27,"./sqliteAdapter":11,"./sqljsAdapter":13,"_process":357,"buffer":116}],11:[function(require,module,exports){ + +},{"../geoPackageConstants":27,"./sqliteAdapter":11,"./sqljsAdapter":13,"_process":650,"buffer":119}],11:[function(require,module,exports){ var async = require('async') , fs = require('fs'); @@ -2211,7 +2213,7 @@ Adapter.prototype.count = function (tableName, callback) { }); }; -},{"async":82,"fs":113,"sqlite3":undefined}],12:[function(require,module,exports){ +},{"async":82,"fs":115,"sqlite3":undefined}],12:[function(require,module,exports){ /** * SQLite query builder module. * @module db/sqliteQueryBuilder @@ -2541,7 +2543,7 @@ Adapter.prototype.count = function (tableName, callback) { }); }; -},{"async":82,"sql.js/js/sql-memory-growth":391}],14:[function(require,module,exports){ +},{"async":82,"sql.js/js/sql-memory-growth":686}],14:[function(require,module,exports){ var async = require('async'); var SpatialReferenceSystemDao = require('../core/srs').SpatialReferenceSystemDao @@ -3346,7 +3348,7 @@ ExtensionDao.prototype.idColumns = [ExtensionDao.COLUMN_TABLE_NAME, ExtensionDao module.exports.ExtensionDao = ExtensionDao; module.exports.Extension = Extension; -},{"../dao/columnValues":5,"../dao/dao":6,"../db/tableCreator":14,"util":403}],17:[function(require,module,exports){ +},{"../dao/columnValues":5,"../dao/dao":6,"../db/tableCreator":14,"util":698}],17:[function(require,module,exports){ var Extension = require('../index').Extension , ExtensionDao = require('../index').ExtensionDao @@ -3607,7 +3609,7 @@ FeatureTableIndex.EXTENSION_GEOMETRY_INDEX_DEFINITION = 'http://ngageoint.github module.exports = FeatureTableIndex; -},{"../../core/contents":3,"../../geom/envelopeBuilder":29,"../baseExtension":15,"../index":16,"./geometryIndex":18,"./tableIndex":19,"util":403}],18:[function(require,module,exports){ +},{"../../core/contents":3,"../../geom/envelopeBuilder":29,"../baseExtension":15,"../index":16,"./geometryIndex":18,"./tableIndex":19,"util":698}],18:[function(require,module,exports){ /** * GeometryIndexDao module. * @module geometryIndexDao @@ -3800,7 +3802,7 @@ GeometryIndexDao.prototype.idColumns = [GeometryIndexDao.COLUMN_TABLE_NAME, Geom module.exports.GeometryIndexDao = GeometryIndexDao; module.exports.GeometryIndex = GeometryIndex; -},{"../../dao/dao":6,"../../db/tableCreator":14,"./tableIndex":19,"util":403}],19:[function(require,module,exports){ +},{"../../dao/dao":6,"../../db/tableCreator":14,"./tableIndex":19,"util":698}],19:[function(require,module,exports){ /** * TableIndexDao module. * @module tableIndexDao @@ -3870,7 +3872,7 @@ TableIndexDao.prototype.idColumns = [TableIndexDao.COLUMN_TABLE_NAME]; module.exports.TableIndexDao = TableIndexDao; module.exports.TableIndex = TableIndex; -},{"../../dao/dao":6,"../../db/tableCreator":14,"util":403}],20:[function(require,module,exports){ +},{"../../dao/dao":6,"../../db/tableCreator":14,"util":698}],20:[function(require,module,exports){ /** * GeometryColumns module. * @module dao/geometryColumns @@ -4112,7 +4114,7 @@ GeometryColumns.M = "m"; module.exports.GeometryColumnsDao = GeometryColumnsDao; module.exports.GeometryColumns = GeometryColumns; -},{"../../core/contents":3,"../../core/srs":4,"../../dao/dao":6,"util":403}],21:[function(require,module,exports){ +},{"../../core/contents":3,"../../core/srs":4,"../../dao/dao":6,"util":698}],21:[function(require,module,exports){ /** * featureColumn module. * @module features/user/featureColumn @@ -4205,7 +4207,7 @@ FeatureColumn.prototype.isGeometry = function () { module.exports = FeatureColumn; -},{"../../db/dataTypes":9,"../../user/userColumn":51,"util":403}],22:[function(require,module,exports){ +},{"../../db/dataTypes":9,"../../user/userColumn":51,"util":698}],22:[function(require,module,exports){ /** * featureDao module. * @module features/user/featureDao @@ -4364,7 +4366,7 @@ FeatureDao.prototype.getBoundingBox = function () { module.exports = FeatureDao; -},{"../../core/contents":3,"../../extension/index/featureTableIndex":17,"../../user/userDao":52,"../columns":20,"./featureRow":23,"util":403}],23:[function(require,module,exports){ +},{"../../core/contents":3,"../../extension/index/featureTableIndex":17,"../../user/userDao":52,"../columns":20,"./featureRow":23,"util":698}],23:[function(require,module,exports){ /** * featureRow module. * @module features/user/featureRow @@ -4442,7 +4444,7 @@ FeatureRow.prototype.toDatabaseValue = function(columnName) { module.exports = FeatureRow; -},{"../../geom/geometryData":30,"../../user/userRow":53,"./featureColumn":21,"util":403}],24:[function(require,module,exports){ +},{"../../geom/geometryData":30,"../../user/userRow":53,"./featureColumn":21,"util":698}],24:[function(require,module,exports){ /** * featureTable module. * @module features/user/featureTable @@ -4491,7 +4493,7 @@ FeatureTable.prototype.getTableType = function() { */ module.exports = FeatureTable; -},{"../../user/userTable":54,"util":403}],25:[function(require,module,exports){ +},{"../../user/userTable":54,"util":698}],25:[function(require,module,exports){ /** * featureTableReader module. * @module features/user/featureTableReader @@ -4588,7 +4590,7 @@ FeatureTableReader.prototype.createColumnWithResults = function (results, index, */ module.exports = FeatureTableReader; -},{"../../db/dataTypes":9,"../../user/userTableReader":55,"../../wkb":57,"../columns":20,"./featureColumn":21,"./featureTable":24,"util":403}],26:[function(require,module,exports){ +},{"../../db/dataTypes":9,"../../user/userTableReader":55,"../../wkb":57,"../columns":20,"./featureColumn":21,"./featureTable":24,"util":698}],26:[function(require,module,exports){ /** * GeoPackage module. * @module geoPackage @@ -5235,7 +5237,7 @@ GeoPackage.prototype.getInfoForTable = function (tableDao, callback) { module.exports = GeoPackage; -},{"./core/contents":3,"./core/srs":4,"./dataColumnConstraints":7,"./dataColumns":8,"./db/dataTypes":9,"./db/tableCreator":14,"./extension":16,"./extension/index/geometryIndex":18,"./extension/index/tableIndex":19,"./features/columns":20,"./features/user/featureDao":22,"./features/user/featureTable":24,"./features/user/featureTableReader":25,"./metadata":31,"./metadata/reference":32,"./proj4Defs":33,"./tiles/matrix":40,"./tiles/matrixset":41,"./tiles/tileBoundingBoxUtils":43,"./tiles/user/tileDao":46,"./tiles/user/tileTable":49,"./tiles/user/tileTableReader":50,"./user/userTable":54,"async":82,"proj4":358,"stream-to-array":394}],27:[function(require,module,exports){ +},{"./core/contents":3,"./core/srs":4,"./dataColumnConstraints":7,"./dataColumns":8,"./db/dataTypes":9,"./db/tableCreator":14,"./extension":16,"./extension/index/geometryIndex":18,"./extension/index/tableIndex":19,"./features/columns":20,"./features/user/featureDao":22,"./features/user/featureTable":24,"./features/user/featureTableReader":25,"./metadata":31,"./metadata/reference":32,"./proj4Defs":33,"./tiles/matrix":40,"./tiles/matrixset":41,"./tiles/tileBoundingBoxUtils":43,"./tiles/user/tileDao":46,"./tiles/user/tileTable":49,"./tiles/user/tileTableReader":50,"./user/userTable":54,"async":82,"proj4":651,"stream-to-array":689}],27:[function(require,module,exports){ /** * GeoPackage Constants module. * @module dao/geoPackageConstants @@ -5348,7 +5350,8 @@ module.exports.create = function(filePath, callback) { } }).call(this,require('_process')) -},{"./db/geoPackageConnection":10,"./geoPackage":26,"./validate/geoPackageValidate":56,"_process":357,"async":82,"fs":113,"path":332}],29:[function(require,module,exports){ + +},{"./db/geoPackageConnection":10,"./geoPackage":26,"./validate/geoPackageValidate":56,"_process":650,"async":82,"fs":115,"path":625}],29:[function(require,module,exports){ var wkx = require('wkx'); var turfBbox = require('@turf/bbox'); @@ -5367,7 +5370,7 @@ module.exports.expandEnvelopeForGeometry = function(envelope, wkbGeometry) { } -},{"@turf/bbox":59,"wkx":419}],30:[function(require,module,exports){ +},{"@turf/bbox":59,"wkx":714}],30:[function(require,module,exports){ (function (Buffer){ /** * GeometryData module. @@ -5599,7 +5602,8 @@ GeometryData.prototype.readEnvelope = function (envelopeIndicator, buffer) { }; }).call(this,require("buffer").Buffer) -},{"../geoPackageConstants":27,"buffer":116,"wkx":419}],31:[function(require,module,exports){ + +},{"../geoPackageConstants":27,"buffer":119,"wkx":714}],31:[function(require,module,exports){ /** * Metadata module. * @module metadata @@ -5815,7 +5819,7 @@ MetadataDao.prototype.idColumns = [MetadataDao.COLUMN_ID]; module.exports.MetadataDao = MetadataDao; module.exports.Metadata = Metadata; -},{"../dao/dao":6,"util":403}],32:[function(require,module,exports){ +},{"../dao/dao":6,"util":698}],32:[function(require,module,exports){ /** * MetadataReference module. * @module metadata/reference @@ -6002,7 +6006,7 @@ MetadataReferenceDao.prototype.idColumns = [MetadataReferenceDao.COLUMN_MD_FILE_ module.exports.MetadataReferenceDao = MetadataReferenceDao; module.exports.MetadataReference = MetadataReference; -},{"../../dao/columnValues":5,"../../dao/dao":6,"util":403}],33:[function(require,module,exports){ +},{"../../dao/columnValues":5,"../../dao/dao":6,"util":698}],33:[function(require,module,exports){ module.exports = { "EPSG:3819":'+proj=longlat +ellps=bessel +towgs84=595.48,121.69,515.35,4.115,-2.9383,0.853,-3.408 +no_defs ', "EPSG:3821":'+proj=longlat +ellps=aust_SA +no_defs ', @@ -10384,7 +10388,6 @@ var TileCreator = require('./index').TileCreator function CanvasTileCreator(width, height, tileMatrix, tileMatrixSet, tileBoundingBox, srs, projectionTo, canvas, callback) { TileCreator.apply(this, arguments); - this.canvas = canvas || document.createElement('canvas'); this.canvas.width = width; this.canvas.height = height; @@ -10526,7 +10529,7 @@ CanvasTileCreator.prototype.reproject = function (tileData, tilePieceBoundingBox module.exports = CanvasTileCreator; -},{"../tileBoundingBoxUtils":43,"./index":35,"./tileUtilities":37,"./tileWorker.js":38,"async":82,"file-type":199,"util":403,"webworkify":405}],35:[function(require,module,exports){ +},{"../tileBoundingBoxUtils":43,"./index":35,"./tileUtilities":37,"./tileWorker.js":38,"async":82,"file-type":496,"util":698,"webworkify":700}],35:[function(require,module,exports){ (function (process){ var proj4 = require('proj4') , async = require('async'); @@ -10534,7 +10537,9 @@ var proj4 = require('proj4') var TileBoundingBoxUtils = require('../tileBoundingBoxUtils'); module.exports.initialize = function(width, height, tileMatrix, tileMatrixSet, tileBoundingBox, srs, projectionTo, canvas, callback) { - if (typeof(process) !== 'undefined' && process.version) { + var isPhantom = !!(typeof window != 'undefined' && window.callPhantom && window._phantom); + var isNode = typeof(process) !== 'undefined' && process.version; + if (isNode && !isPhantom) { var LwipTileCreator = require('./lwip'); new LwipTileCreator(width, height, tileMatrix, tileMatrixSet, tileBoundingBox, srs, projectionTo, callback); } else { @@ -10660,7 +10665,8 @@ TileCreator.prototype.reproject = function (tileData, tilePieceBoundingBox, call }; }).call(this,require('_process')) -},{"../tileBoundingBoxUtils":43,"./canvas":34,"./lwip":36,"_process":357,"async":82,"proj4":358}],36:[function(require,module,exports){ + +},{"../tileBoundingBoxUtils":43,"./canvas":34,"./lwip":36,"_process":650,"async":82,"proj4":651}],36:[function(require,module,exports){ var util = require('util') , async = require('async') , fileType = require('file-type'); @@ -10727,7 +10733,7 @@ LwipTileCreator.prototype.getCompleteTile = function (format, callback) { module.exports = LwipTileCreator; -},{"./index":35,"async":82,"file-type":199,"lwip":undefined,"util":403}],37:[function(require,module,exports){ +},{"./index":35,"async":82,"file-type":496,"lwip":undefined,"util":698}],37:[function(require,module,exports){ (function (process,Buffer){ var proj4 = require('proj4'); @@ -10806,7 +10812,8 @@ function createPNGLwip(width, height, redArray, greenArray, blueArray, alphaOrAr } }).call(this,require('_process'),require("buffer").Buffer) -},{"_process":357,"buffer":116,"lwip":undefined,"proj4":358}],38:[function(require,module,exports){ + +},{"_process":650,"buffer":119,"lwip":undefined,"proj4":651}],38:[function(require,module,exports){ var proj4 = require('proj4') , async = require('async'); @@ -10917,7 +10924,7 @@ module.exports = function(self) { } }; -},{"../../proj4Defs":33,"./tileUtilities":37,"async":82,"proj4":358}],39:[function(require,module,exports){ +},{"../../proj4Defs":33,"./tileUtilities":37,"async":82,"proj4":651}],39:[function(require,module,exports){ var TileBoundingBoxUtils = require('../tileBoundingBoxUtils') , BoundingBox = require('../../boundingBox'); @@ -11094,7 +11101,7 @@ FeatureTiles.prototype.addFeatureToBatch = function(geoJson, context, xTranslate context.stroke(); } -},{"../../boundingBox":2,"../tileBoundingBoxUtils":43,"@mapbox/tilebelt":58,"@turf/bbox":59,"async":82,"concat-stream":148,"d3-geo":163,"fs":113,"pureimage":365,"reproject":381}],40:[function(require,module,exports){ +},{"../../boundingBox":2,"../tileBoundingBoxUtils":43,"@mapbox/tilebelt":58,"@turf/bbox":59,"async":82,"concat-stream":151,"d3-geo":460,"fs":115,"pureimage":658,"reproject":676}],40:[function(require,module,exports){ /** * TileMatrix module. * @module tiles/matrix @@ -11235,7 +11242,7 @@ TileMatrixDao.prototype.columns = [TileMatrixDao.COLUMN_TABLE_NAME, TileMatrixDa module.exports.TileMatrixDao = TileMatrixDao; module.exports.TileMatrix = TileMatrix; -},{"../../core/contents":3,"../../dao/dao":6,"../matrixset":41,"util":403}],41:[function(require,module,exports){ +},{"../../core/contents":3,"../../dao/dao":6,"../matrixset":41,"util":698}],41:[function(require,module,exports){ /** * TileMatrixSet module. * @module tiles/matrixset @@ -11412,7 +11419,7 @@ TileMatrixSetDao.prototype.columnToPropertyMap[TileMatrixSetDao.COLUMN_MAX_Y] = module.exports.TileMatrixSetDao = TileMatrixSetDao; module.exports.TileMatrixSet = TileMatrixSet; -},{"../../boundingBox":2,"../../core/contents":3,"../../core/srs":4,"../../dao/dao":6,"util":403}],42:[function(require,module,exports){ +},{"../../boundingBox":2,"../../core/contents":3,"../../core/srs":4,"../../dao/dao":6,"util":698}],42:[function(require,module,exports){ var TileMatrixSetDao = require('../matrixset').TileMatrixSetDao , TileBoundingBoxUtils = require('../tileBoundingBoxUtils') , TileCreator = require('../creator'); @@ -11543,7 +11550,7 @@ GeoPackageTileRetriever.prototype.retrieveTileResults = function (tileMatrixProj } }; -},{"../creator":35,"../matrixset":41,"../tileBoundingBoxUtils":43,"async":82,"proj4":358}],43:[function(require,module,exports){ +},{"../creator":35,"../matrixset":41,"../tileBoundingBoxUtils":43,"async":82,"proj4":651}],43:[function(require,module,exports){ var BoundingBox = require('../boundingBox') , TileGrid = require('./tileGrid'); @@ -11909,7 +11916,7 @@ module.exports.getTileGridBoundingBox = function(matrixSetBoundingBox, tileMatri return new BoundingBox(minLon, maxLon, minLat, maxLat); } -},{"../boundingBox":2,"./tileGrid":44,"proj4":358}],44:[function(require,module,exports){ +},{"../boundingBox":2,"./tileGrid":44,"proj4":651}],44:[function(require,module,exports){ /** * Tile grid with x and y ranges @@ -12010,7 +12017,7 @@ TileColumn.COLUMN_TILE_DATA = "tile_data"; module.exports = TileColumn; -},{"../../db/dataTypes":9,"../../user/userColumn":51,"util":403}],46:[function(require,module,exports){ +},{"../../db/dataTypes":9,"../../user/userColumn":51,"util":698}],46:[function(require,module,exports){ /** * tileDao module. * @module tiles/user/tileDao @@ -12380,7 +12387,7 @@ TileDao.prototype.getSrs = function(callback) { module.exports = TileDao; -},{"../../core/contents":3,"../../dao/columnValues":5,"../../user/userDao":52,"../matrixset":41,"../tileBoundingBoxUtils":43,"../tileGrid":44,"./tileColumn":45,"./tileDaoUtils":47,"./tileRow":48,"async":82,"proj4":358,"util":403}],47:[function(require,module,exports){ +},{"../../core/contents":3,"../../dao/columnValues":5,"../../user/userDao":52,"../matrixset":41,"../tileBoundingBoxUtils":43,"../tileGrid":44,"./tileColumn":45,"./tileDaoUtils":47,"./tileRow":48,"async":82,"proj4":651,"util":698}],47:[function(require,module,exports){ module.exports.adjustTileMatrixLengths = function(tileMatrixSet, tileMatrices) { var tileMatrixWidth = tileMatrixSet.maxX - tileMatrixSet.minX; @@ -12595,7 +12602,7 @@ TileRow.prototype.getTileDataImage = function () { module.exports = TileRow; -},{"../../user/userRow":53,"util":403}],49:[function(require,module,exports){ +},{"../../user/userRow":53,"util":698}],49:[function(require,module,exports){ /** * tileTable module. * @module tiles/user/tileTable @@ -12702,7 +12709,7 @@ TileTable.createRequiredColumnsWithStartingIndex = function(startingIndex) { return columns; } -},{"../../user/userTable":54,"./tileColumn":45,"util":403}],50:[function(require,module,exports){ +},{"../../user/userTable":54,"./tileColumn":45,"util":698}],50:[function(require,module,exports){ /** * tileTableReader module. * @module tiles/user/tileTableReader @@ -12754,7 +12761,7 @@ TileTableReader.prototype.createColumnWithResults = function (results, index, na */ module.exports = TileTableReader; -},{"../../db/dataTypes":9,"../../user/userTableReader":55,"../matrixset":41,"./tileColumn":45,"./tileTable":49,"util":403}],51:[function(require,module,exports){ +},{"../../db/dataTypes":9,"../../user/userTableReader":55,"../matrixset":41,"./tileColumn":45,"./tileTable":49,"util":698}],51:[function(require,module,exports){ /** * userColumn module. * @module user/userColumn @@ -12896,7 +12903,7 @@ UserDao.prototype.getCount = function (callback) { module.exports = UserDao; -},{"../dao/dao":6,"./userRow":53,"util":403}],53:[function(require,module,exports){ +},{"../dao/dao":6,"./userRow":53,"util":698}],53:[function(require,module,exports){ (function (Buffer){ /** * UserRow module. @@ -13132,7 +13139,8 @@ UserRow.prototype.validateValueWithColumn = function (column, value, valueTypes) }; }).call(this,require("buffer").Buffer) -},{"../db/dataTypes":9,"buffer":116}],54:[function(require,module,exports){ + +},{"../db/dataTypes":9,"buffer":119}],54:[function(require,module,exports){ /** * userTable module. * @module user/userTable @@ -13441,7 +13449,7 @@ exports.hasMinimumTables = function(geoPackage, callback) { * @param {Error} null if no error, otherwise describes the error */ -},{"../core/contents":3,"../core/srs":4,"../geoPackageConstants":27,"async":82,"path":332}],57:[function(require,module,exports){ +},{"../core/contents":3,"../core/srs":4,"../geoPackageConstants":27,"async":82,"path":625}],57:[function(require,module,exports){ /** * WKB module. * @module wkb @@ -13471,7 +13479,7 @@ module.exports.fromName = function(name) { return wktToEnum[name]; } -},{"wkx":419}],58:[function(require,module,exports){ +},{"wkx":714}],58:[function(require,module,exports){ 'use strict'; var d2r = Math.PI / 180, @@ -14660,7 +14668,7 @@ asn1.constants = require('./asn1/constants'); asn1.decoders = require('./asn1/decoders'); asn1.encoders = require('./asn1/encoders'); -},{"./asn1/api":67,"./asn1/base":69,"./asn1/constants":73,"./asn1/decoders":75,"./asn1/encoders":78,"bn.js":84}],67:[function(require,module,exports){ +},{"./asn1/api":67,"./asn1/base":69,"./asn1/constants":73,"./asn1/decoders":75,"./asn1/encoders":78,"bn.js":85}],67:[function(require,module,exports){ var asn1 = require('../asn1'); var inherits = require('inherits'); @@ -14723,7 +14731,7 @@ Entity.prototype.encode = function encode(data, enc, /* internal */ reporter) { return this._getEncoder(enc).encode(data, reporter); }; -},{"../asn1":66,"inherits":263,"vm":404}],68:[function(require,module,exports){ +},{"../asn1":66,"inherits":559,"vm":699}],68:[function(require,module,exports){ var inherits = require('inherits'); var Reporter = require('../base').Reporter; var Buffer = require('buffer').Buffer; @@ -14841,7 +14849,7 @@ EncoderBuffer.prototype.join = function join(out, offset) { return out; }; -},{"../base":69,"buffer":116,"inherits":263}],69:[function(require,module,exports){ +},{"../base":69,"buffer":119,"inherits":559}],69:[function(require,module,exports){ var base = exports; base.Reporter = require('./reporter').Reporter; @@ -15485,7 +15493,7 @@ Node.prototype._isPrintstr = function isPrintstr(str) { return /^[A-Za-z0-9 '\(\)\+,\-\.\/:=\?]*$/.test(str); }; -},{"../base":69,"minimalistic-assert":278}],71:[function(require,module,exports){ +},{"../base":69,"minimalistic-assert":571}],71:[function(require,module,exports){ var inherits = require('inherits'); function Reporter(options) { @@ -15608,7 +15616,7 @@ ReporterError.prototype.rethrow = function rethrow(msg) { return this; }; -},{"inherits":263}],72:[function(require,module,exports){ +},{"inherits":559}],72:[function(require,module,exports){ var constants = require('../constants'); exports.tagClass = { @@ -15999,7 +16007,7 @@ function derDecodeLen(buf, primitive, fail) { return len; } -},{"../../asn1":66,"inherits":263}],75:[function(require,module,exports){ +},{"../../asn1":66,"inherits":559}],75:[function(require,module,exports){ var decoders = exports; decoders.der = require('./der'); @@ -16056,7 +16064,7 @@ PEMDecoder.prototype.decode = function decode(data, options) { return DERDecoder.prototype.decode.call(this, input, options); }; -},{"./der":74,"buffer":116,"inherits":263}],77:[function(require,module,exports){ +},{"./der":74,"buffer":119,"inherits":559}],77:[function(require,module,exports){ var inherits = require('inherits'); var Buffer = require('buffer').Buffer; @@ -16353,7 +16361,7 @@ function encodeTag(tag, primitive, cls, reporter) { return res; } -},{"../../asn1":66,"buffer":116,"inherits":263}],78:[function(require,module,exports){ +},{"../../asn1":66,"buffer":119,"inherits":559}],78:[function(require,module,exports){ var encoders = exports; encoders.der = require('./der'); @@ -16382,7 +16390,7 @@ PEMEncoder.prototype.encode = function encode(data, options) { return out.join('\n'); }; -},{"./der":77,"inherits":263}],80:[function(require,module,exports){ +},{"./der":77,"inherits":559}],80:[function(require,module,exports){ (function (global){ 'use strict'; @@ -16876,7 +16884,8 @@ var objectKeys = Object.keys || function (obj) { }; }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"util/":403}],81:[function(require,module,exports){ + +},{"util/":698}],81:[function(require,module,exports){ /*! * assertion-error * Copyright(c) 2013 Jake Luer @@ -17088,12 +17097,142 @@ var initialParams = function (fn) { }); }; +/** + * Checks if `value` is the + * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) + * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an object, else `false`. + * @example + * + * _.isObject({}); + * // => true + * + * _.isObject([1, 2, 3]); + * // => true + * + * _.isObject(_.noop); + * // => true + * + * _.isObject(null); + * // => false + */ +function isObject(value) { + var type = typeof value; + return value != null && (type == 'object' || type == 'function'); +} + +/** + * Take a sync function and make it async, passing its return value to a + * callback. This is useful for plugging sync functions into a waterfall, + * series, or other async functions. Any arguments passed to the generated + * function will be passed to the wrapped function (except for the final + * callback argument). Errors thrown will be passed to the callback. + * + * If the function passed to `asyncify` returns a Promise, that promises's + * resolved/rejected state will be used to call the callback, rather than simply + * the synchronous return value. + * + * This also means you can asyncify ES2017 `async` functions. + * + * @name asyncify + * @static + * @memberOf module:Utils + * @method + * @alias wrapSync + * @category Util + * @param {Function} func - The synchronous funuction, or Promise-returning + * function to convert to an {@link AsyncFunction}. + * @returns {AsyncFunction} An asynchronous wrapper of the `func`. To be + * invoked with `(args..., callback)`. + * @example + * + * // passing a regular synchronous function + * async.waterfall([ + * async.apply(fs.readFile, filename, "utf8"), + * async.asyncify(JSON.parse), + * function (data, next) { + * // data is the result of parsing the text. + * // If there was a parsing error, it would have been caught. + * } + * ], callback); + * + * // passing a function returning a promise + * async.waterfall([ + * async.apply(fs.readFile, filename, "utf8"), + * async.asyncify(function (contents) { + * return db.model.create(contents); + * }), + * function (model, next) { + * // `model` is the instantiated model object. + * // If there was an error, this function would be skipped. + * } + * ], callback); + * + * // es2017 example, though `asyncify` is not needed if your JS environment + * // supports async functions out of the box + * var q = async.queue(async.asyncify(async function(file) { + * var intermediateStep = await processFile(file); + * return await somePromise(intermediateStep) + * })); + * + * q.push(files); + */ +function asyncify(func) { + return initialParams(function (args, callback) { + var result; + try { + result = func.apply(this, args); + } catch (e) { + return callback(e); + } + // if result is Promise object + if (isObject(result) && typeof result.then === 'function') { + result.then(function (value) { + callback(null, value); + }, function (err) { + callback(err.message ? err : new Error(err)); + }); + } else { + callback(null, result); + } + }); +} + +var supportsSymbol = typeof Symbol === 'function'; + +function supportsAsync() { + var supported; + try { + /* eslint no-eval: 0 */ + supported = isAsync(eval('(async function () {})')); + } catch (e) { + supported = false; + } + return supported; +} + +function isAsync(fn) { + return supportsSymbol && fn[Symbol.toStringTag] === 'AsyncFunction'; +} + +function wrapAsync(asyncFn) { + return isAsync(asyncFn) ? asyncify(asyncFn) : asyncFn; +} + +var wrapAsync$1 = supportsAsync() ? wrapAsync : identity; + function applyEach$1(eachfn) { return rest(function (fns, args) { var go = initialParams(function (args, callback) { var that = this; return eachfn(fns, function (fn, cb) { - fn.apply(that, args.concat(cb)); + wrapAsync$1(fn).apply(that, args.concat(cb)); }, callback); }); if (args.length) { @@ -17198,41 +17337,12 @@ function baseGetTag(value) { if (value == null) { return value === undefined ? undefinedTag : nullTag; } - return (symToStringTag && symToStringTag in Object(value)) + value = Object(value); + return (symToStringTag && symToStringTag in value) ? getRawTag(value) : objectToString(value); } -/** - * Checks if `value` is the - * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) - * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an object, else `false`. - * @example - * - * _.isObject({}); - * // => true - * - * _.isObject([1, 2, 3]); - * // => true - * - * _.isObject(_.noop); - * // => true - * - * _.isObject(null); - * // => false - */ -function isObject(value) { - var type = typeof value; - return value != null && (type == 'object' || type == 'function'); -} - /** `Object#toString` result references. */ var asyncTag = '[object AsyncFunction]'; var funcTag = '[object Function]'; @@ -17637,7 +17747,7 @@ var freeProcess = moduleExports$1 && freeGlobal.process; /** Used to access faster Node.js helpers. */ var nodeUtil = (function() { try { - return freeProcess && freeProcess.binding && freeProcess.binding('util'); + return freeProcess && freeProcess.binding('util'); } catch (e) {} }()); @@ -17897,17 +18007,15 @@ function _eachOfLimit(limit) { * @category Collection * @param {Array|Iterable|Object} coll - A collection to iterate over. * @param {number} limit - The maximum number of async operations at a time. - * @param {Function} iteratee - A function to apply to each + * @param {AsyncFunction} iteratee - An async function to apply to each * item in `coll`. The `key` is the item's key, or index in the case of an - * array. The iteratee is passed a `callback(err)` which must be called once it - * has completed. If no error has occurred, the callback should be run without - * arguments or with an explicit `null` argument. Invoked with - * (item, key, callback). + * array. + * Invoked with (item, key, callback). * @param {Function} [callback] - A callback which is called when all * `iteratee` functions have finished, or an error occurs. Invoked with (err). */ function eachOfLimit(coll, limit, iteratee, callback) { - _eachOfLimit(limit)(coll, iteratee, callback); + _eachOfLimit(limit)(coll, wrapAsync$1(iteratee), callback); } function doLimit(fn, limit) { @@ -17954,12 +18062,10 @@ var eachOfGeneric = doLimit(eachOfLimit, Infinity); * @category Collection * @see [async.each]{@link module:Collections.each} * @param {Array|Iterable|Object} coll - A collection to iterate over. - * @param {Function} iteratee - A function to apply to each - * item in `coll`. The `key` is the item's key, or index in the case of an - * array. The iteratee is passed a `callback(err)` which must be called once it - * has completed. If no error has occurred, the callback should be run without - * arguments or with an explicit `null` argument. Invoked with - * (item, key, callback). + * @param {AsyncFunction} iteratee - A function to apply to each + * item in `coll`. + * The `key` is the item's key, or index in the case of an array. + * Invoked with (item, key, callback). * @param {Function} [callback] - A callback which is called when all * `iteratee` functions have finished, or an error occurs. Invoked with (err). * @example @@ -17985,12 +18091,12 @@ var eachOfGeneric = doLimit(eachOfLimit, Infinity); */ var eachOf = function (coll, iteratee, callback) { var eachOfImplementation = isArrayLike(coll) ? eachOfArrayLike : eachOfGeneric; - eachOfImplementation(coll, iteratee, callback); + eachOfImplementation(coll, wrapAsync$1(iteratee), callback); }; function doParallel(fn) { return function (obj, iteratee, callback) { - return fn(eachOf, obj, iteratee, callback); + return fn(eachOf, obj, wrapAsync$1(iteratee), callback); }; } @@ -17999,10 +18105,11 @@ function _asyncMap(eachfn, arr, iteratee, callback) { arr = arr || []; var results = []; var counter = 0; + var _iteratee = wrapAsync$1(iteratee); eachfn(arr, function (value, _, callback) { var index = counter++; - iteratee(value, function (err, v) { + _iteratee(value, function (err, v) { results[index] = v; callback(err); }); @@ -18026,7 +18133,7 @@ function _asyncMap(eachfn, arr, iteratee, callback) { * * If `map` is passed an Object, the results will be an Array. The results * will roughly be in the order of the original Objects' keys (but this can - * vary across JavaScript engines) + * vary across JavaScript engines). * * @name map * @static @@ -18034,10 +18141,10 @@ function _asyncMap(eachfn, arr, iteratee, callback) { * @method * @category Collection * @param {Array|Iterable|Object} coll - A collection to iterate over. - * @param {Function} iteratee - A function to apply to each item in `coll`. - * The iteratee is passed a `callback(err, transformed)` which must be called - * once it has completed with an error (which can be `null`) and a - * transformed item. Invoked with (item, callback). + * @param {AsyncFunction} iteratee - An async function to apply to each item in + * `coll`. + * The iteratee should complete with the transformed item. + * Invoked with (item, callback). * @param {Function} [callback] - A callback which is called when all `iteratee` * functions have finished, or an error occurs. Results is an Array of the * transformed items from the `coll`. Invoked with (err, results). @@ -18061,7 +18168,7 @@ var map = doParallel(_asyncMap); * @memberOf module:ControlFlow * @method * @category Control Flow - * @param {Array|Iterable|Object} fns - A collection of asynchronous functions + * @param {Array|Iterable|Object} fns - A collection of {@link AsyncFunction}s * to all call with the same arguments * @param {...*} [args] - any number of separate arguments to pass to the * function. @@ -18086,7 +18193,7 @@ var applyEach = applyEach$1(map); function doParallelLimit(fn) { return function (obj, limit, iteratee, callback) { - return fn(_eachOfLimit(limit), obj, iteratee, callback); + return fn(_eachOfLimit(limit), obj, wrapAsync$1(iteratee), callback); }; } @@ -18101,10 +18208,10 @@ function doParallelLimit(fn) { * @category Collection * @param {Array|Iterable|Object} coll - A collection to iterate over. * @param {number} limit - The maximum number of async operations at a time. - * @param {Function} iteratee - A function to apply to each item in `coll`. - * The iteratee is passed a `callback(err, transformed)` which must be called - * once it has completed with an error (which can be `null`) and a transformed - * item. Invoked with (item, callback). + * @param {AsyncFunction} iteratee - An async function to apply to each item in + * `coll`. + * The iteratee should complete with the transformed item. + * Invoked with (item, callback). * @param {Function} [callback] - A callback which is called when all `iteratee` * functions have finished, or an error occurs. Results is an array of the * transformed items from the `coll`. Invoked with (err, results). @@ -18121,10 +18228,10 @@ var mapLimit = doParallelLimit(_asyncMap); * @see [async.map]{@link module:Collections.map} * @category Collection * @param {Array|Iterable|Object} coll - A collection to iterate over. - * @param {Function} iteratee - A function to apply to each item in `coll`. - * The iteratee is passed a `callback(err, transformed)` which must be called - * once it has completed with an error (which can be `null`) and a - * transformed item. Invoked with (item, callback). + * @param {AsyncFunction} iteratee - An async function to apply to each item in + * `coll`. + * The iteratee should complete with the transformed item. + * Invoked with (item, callback). * @param {Function} [callback] - A callback which is called when all `iteratee` * functions have finished, or an error occurs. Results is an array of the * transformed items from the `coll`. Invoked with (err, results). @@ -18140,7 +18247,7 @@ var mapSeries = doLimit(mapLimit, 1); * @method * @see [async.applyEach]{@link module:ControlFlow.applyEach} * @category Control Flow - * @param {Array|Iterable|Object} fns - A collection of asynchronous functions to all + * @param {Array|Iterable|Object} fns - A collection of {@link AsyncFunction}s to all * call with the same arguments * @param {...*} [args] - any number of separate arguments to pass to the * function. @@ -18202,82 +18309,6 @@ var apply$2 = rest(function (fn, args) { }); }); -/** - * Take a sync function and make it async, passing its return value to a - * callback. This is useful for plugging sync functions into a waterfall, - * series, or other async functions. Any arguments passed to the generated - * function will be passed to the wrapped function (except for the final - * callback argument). Errors thrown will be passed to the callback. - * - * If the function passed to `asyncify` returns a Promise, that promises's - * resolved/rejected state will be used to call the callback, rather than simply - * the synchronous return value. - * - * This also means you can asyncify ES2016 `async` functions. - * - * @name asyncify - * @static - * @memberOf module:Utils - * @method - * @alias wrapSync - * @category Util - * @param {Function} func - The synchronous function to convert to an - * asynchronous function. - * @returns {Function} An asynchronous wrapper of the `func`. To be invoked with - * (callback). - * @example - * - * // passing a regular synchronous function - * async.waterfall([ - * async.apply(fs.readFile, filename, "utf8"), - * async.asyncify(JSON.parse), - * function (data, next) { - * // data is the result of parsing the text. - * // If there was a parsing error, it would have been caught. - * } - * ], callback); - * - * // passing a function returning a promise - * async.waterfall([ - * async.apply(fs.readFile, filename, "utf8"), - * async.asyncify(function (contents) { - * return db.model.create(contents); - * }), - * function (model, next) { - * // `model` is the instantiated model object. - * // If there was an error, this function would be skipped. - * } - * ], callback); - * - * // es6 example - * var q = async.queue(async.asyncify(async function(file) { - * var intermediateStep = await processFile(file); - * return await somePromise(intermediateStep) - * })); - * - * q.push(files); - */ -function asyncify(func) { - return initialParams(function (args, callback) { - var result; - try { - result = func.apply(this, args); - } catch (e) { - return callback(e); - } - // if result is Promise object - if (isObject(result) && typeof result.then === 'function') { - result.then(function (value) { - callback(null, value); - }, function (err) { - callback(err.message ? err : new Error(err)); - }); - } else { - callback(null, result); - } - }); -} - /** * A specialized version of `_.forEach` for arrays without support for * iteratee shorthands. @@ -18420,17 +18451,17 @@ function baseIndexOf(array, value, fromIndex) { } /** - * Determines the best order for running the functions in `tasks`, based on + * Determines the best order for running the {@link AsyncFunction}s in `tasks`, based on * their requirements. Each function can optionally depend on other functions * being completed first, and each function is run as soon as its requirements * are satisfied. * - * If any of the functions pass an error to their callback, the `auto` sequence + * If any of the {@link AsyncFunction}s pass an error to their callback, the `auto` sequence * will stop. Further tasks will not execute (so any other functions depending * on it will not run), and the main `callback` is immediately called with the * error. * - * Functions also receive an object containing the results of functions which + * {@link AsyncFunction}s also receive an object containing the results of functions which * have completed so far as the first argument, if they have dependencies. If a * task function has no dependencies, it will only be passed a callback. * @@ -18440,7 +18471,7 @@ function baseIndexOf(array, value, fromIndex) { * @method * @category Control Flow * @param {Object} tasks - An object. Each of its properties is either a - * function or an array of requirements, with the function itself the last item + * function or an array of requirements, with the {@link AsyncFunction} itself the last item * in the array. The object's key of a property serves as the name of the task * defined by that property, i.e. can be used when specifying requirements for * other tasks. The function receives one or two arguments: @@ -18618,7 +18649,7 @@ var auto = function (tasks, concurrency, callback) { })); runningTasks++; - var taskFn = task[task.length - 1]; + var taskFn = wrapAsync$1(task[task.length - 1]); if (task.length > 1) { taskFn(results, taskCallback); } else { @@ -18825,17 +18856,15 @@ function asciiToArray(string) { /** Used to compose unicode character classes. */ var rsAstralRange = '\\ud800-\\udfff'; -var rsComboMarksRange = '\\u0300-\\u036f'; -var reComboHalfMarksRange = '\\ufe20-\\ufe2f'; -var rsComboSymbolsRange = '\\u20d0-\\u20ff'; -var rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange; +var rsComboMarksRange = '\\u0300-\\u036f\\ufe20-\\ufe23'; +var rsComboSymbolsRange = '\\u20d0-\\u20f0'; var rsVarRange = '\\ufe0e\\ufe0f'; /** Used to compose unicode capture groups. */ var rsZWJ = '\\u200d'; /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */ -var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']'); +var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboMarksRange + rsComboSymbolsRange + rsVarRange + ']'); /** * Checks if `string` contains Unicode symbols. @@ -18850,15 +18879,13 @@ function hasUnicode(string) { /** Used to compose unicode character classes. */ var rsAstralRange$1 = '\\ud800-\\udfff'; -var rsComboMarksRange$1 = '\\u0300-\\u036f'; -var reComboHalfMarksRange$1 = '\\ufe20-\\ufe2f'; -var rsComboSymbolsRange$1 = '\\u20d0-\\u20ff'; -var rsComboRange$1 = rsComboMarksRange$1 + reComboHalfMarksRange$1 + rsComboSymbolsRange$1; +var rsComboMarksRange$1 = '\\u0300-\\u036f\\ufe20-\\ufe23'; +var rsComboSymbolsRange$1 = '\\u20d0-\\u20f0'; var rsVarRange$1 = '\\ufe0e\\ufe0f'; /** Used to compose unicode capture groups. */ var rsAstral = '[' + rsAstralRange$1 + ']'; -var rsCombo = '[' + rsComboRange$1 + ']'; +var rsCombo = '[' + rsComboMarksRange$1 + rsComboSymbolsRange$1 + ']'; var rsFitz = '\\ud83c[\\udffb-\\udfff]'; var rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')'; var rsNonAstral = '[^' + rsAstralRange$1 + ']'; @@ -18966,7 +18993,7 @@ function trim(string, chars, guard) { return castSlice(strSymbols, start, end).join(''); } -var FN_ARGS = /^(function)?\s*[^\(]*\(\s*([^\)]*)\)/m; +var FN_ARGS = /^(?:async\s+)?(function)?\s*[^\(]*\(\s*([^\)]*)\)/m; var FN_ARG_SPLIT = /,/; var FN_ARG = /(=.+)?(\s*)$/; var STRIP_COMMENTS = /((\/\/.*$)|(\/\*[\s\S]*?\*\/))/mg; @@ -19000,7 +19027,7 @@ function parseParams(func) { * @method * @see [async.auto]{@link module:ControlFlow.auto} * @category Control Flow - * @param {Object} tasks - An object, each of whose properties is a function of + * @param {Object} tasks - An object, each of whose properties is an {@link AsyncFunction} of * the form 'func([dependencies...], callback). The object's key of a property * serves as the name of the task defined by that property, i.e. can be used * when specifying requirements for other tasks. @@ -19068,22 +19095,25 @@ function autoInject(tasks, callback) { baseForOwn(tasks, function (taskFn, key) { var params; + var fnIsAsync = isAsync(taskFn); + var hasNoDeps = !fnIsAsync && taskFn.length === 1 || fnIsAsync && taskFn.length === 0; if (isArray(taskFn)) { params = taskFn.slice(0, -1); taskFn = taskFn[taskFn.length - 1]; newTasks[key] = params.concat(params.length > 0 ? newTask : taskFn); - } else if (taskFn.length === 1) { + } else if (hasNoDeps) { // no dependencies, use the function as-is newTasks[key] = taskFn; } else { params = parseParams(taskFn); - if (taskFn.length === 0 && params.length === 0) { + if (taskFn.length === 0 && !fnIsAsync && params.length === 0) { throw new Error("autoInject task functions require explicit parameters."); } - params.pop(); + // remove callback param + if (!fnIsAsync) params.pop(); newTasks[key] = params.concat(newTask); } @@ -19093,7 +19123,7 @@ function autoInject(tasks, callback) { return results[name]; }); newArgs.push(taskCb); - taskFn.apply(null, newArgs); + wrapAsync$1(taskFn).apply(null, newArgs); } }); @@ -19191,6 +19221,10 @@ function queue(worker, concurrency, payload) { throw new Error('Concurrency must not be zero'); } + var _worker = wrapAsync$1(worker); + var numRunning = 0; + var workersList = []; + function _insert(data, insertAtFront, callback) { if (callback != null && typeof callback !== 'function') { throw new Error('task callback must be a function'); @@ -19223,7 +19257,7 @@ function queue(worker, concurrency, payload) { function _next(tasks) { return rest(function (args) { - workers -= 1; + numRunning -= 1; for (var i = 0, l = tasks.length; i < l; i++) { var task = tasks[i]; @@ -19239,7 +19273,7 @@ function queue(worker, concurrency, payload) { } } - if (workers <= q.concurrency - q.buffer) { + if (numRunning <= q.concurrency - q.buffer) { q.unsaturated(); } @@ -19250,8 +19284,6 @@ function queue(worker, concurrency, payload) { }); } - var workers = 0; - var workersList = []; var isProcessing = false; var q = { _tasks: new DLL(), @@ -19282,7 +19314,7 @@ function queue(worker, concurrency, payload) { return; } isProcessing = true; - while (!q.paused && workers < q.concurrency && q._tasks.length) { + while (!q.paused && numRunning < q.concurrency && q._tasks.length) { var tasks = [], data = []; var l = q._tasks.length; @@ -19296,15 +19328,15 @@ function queue(worker, concurrency, payload) { if (q._tasks.length === 0) { q.empty(); } - workers += 1; + numRunning += 1; workersList.push(tasks[0]); - if (workers === q.concurrency) { + if (numRunning === q.concurrency) { q.saturated(); } var cb = onlyOnce(_next(tasks)); - worker(data, cb); + _worker(data, cb); } isProcessing = false; }, @@ -19312,13 +19344,13 @@ function queue(worker, concurrency, payload) { return q._tasks.length; }, running: function () { - return workers; + return numRunning; }, workersList: function () { return workersList; }, idle: function () { - return q._tasks.length + workers === 0; + return q._tasks.length + numRunning === 0; }, pause: function () { q.paused = true; @@ -19382,9 +19414,8 @@ function queue(worker, concurrency, payload) { * @method * @see [async.queue]{@link module:ControlFlow.queue} * @category Control Flow - * @param {Function} worker - An asynchronous function for processing an array - * of queued tasks, which must call its `callback(err)` argument when finished, - * with an optional `err` argument. Invoked with `(tasks, callback)`. + * @param {AsyncFunction} worker - An asynchronous function for processing an array + * of queued tasks. Invoked with `(tasks, callback)`. * @param {number} [payload=Infinity] - An optional `integer` for determining * how many tasks should be processed per round; if omitted, the default is * unlimited. @@ -19427,11 +19458,9 @@ function cargo(worker, payload) { * @alias forEachOfSeries * @category Collection * @param {Array|Iterable|Object} coll - A collection to iterate over. - * @param {Function} iteratee - A function to apply to each item in `coll`. The - * `key` is the item's key, or index in the case of an array. The iteratee is - * passed a `callback(err)` which must be called once it has completed. If no - * error has occurred, the callback should be run without arguments or with an - * explicit `null` argument. Invoked with (item, key, callback). + * @param {AsyncFunction} iteratee - An async function to apply to each item in + * `coll`. + * Invoked with (item, key, callback). * @param {Function} [callback] - A callback which is called when all `iteratee` * functions have finished, or an error occurs. Invoked with (err). */ @@ -19457,12 +19486,12 @@ var eachOfSeries = doLimit(eachOfLimit, 1); * @category Collection * @param {Array|Iterable|Object} coll - A collection to iterate over. * @param {*} memo - The initial state of the reduction. - * @param {Function} iteratee - A function applied to each item in the - * array to produce the next step in the reduction. The `iteratee` is passed a - * `callback(err, reduction)` which accepts an optional error as its first - * argument, and the state of the reduction as the second. If an error is - * passed to the callback, the reduction is stopped and the main `callback` is - * immediately called with the error. Invoked with (memo, item, callback). + * @param {AsyncFunction} iteratee - A function applied to each item in the + * array to produce the next step in the reduction. + * The `iteratee` should complete with the next state of the reduction. + * If the iteratee complete with an error, the reduction is stopped and the + * main `callback` is immediately called with the error. + * Invoked with (memo, item, callback). * @param {Function} [callback] - A callback which is called after all the * `iteratee` functions have finished. Result is the reduced value. Invoked with * (err, result). @@ -19479,8 +19508,9 @@ var eachOfSeries = doLimit(eachOfLimit, 1); */ function reduce(coll, memo, iteratee, callback) { callback = once(callback || noop); + var _iteratee = wrapAsync$1(iteratee); eachOfSeries(coll, function (x, i, callback) { - iteratee(memo, x, function (err, v) { + _iteratee(memo, x, function (err, v) { memo = v; callback(err); }); @@ -19502,7 +19532,7 @@ function reduce(coll, memo, iteratee, callback) { * @method * @see [async.compose]{@link module:ControlFlow.compose} * @category Control Flow - * @param {...Function} functions - the asynchronous functions to compose + * @param {...AsyncFunction} functions - the asynchronous functions to compose * @returns {Function} a function that composes the `functions` in order * @example * @@ -19528,6 +19558,7 @@ function reduce(coll, memo, iteratee, callback) { * }); */ var seq$1 = rest(function seq(functions) { + var _functions = arrayMap(functions, wrapAsync$1); return rest(function (args) { var that = this; @@ -19538,7 +19569,7 @@ var seq$1 = rest(function seq(functions) { cb = noop; } - reduce(functions, args, function (newargs, fn, cb) { + reduce(_functions, args, function (newargs, fn, cb) { fn.apply(that, newargs.concat(rest(function (err, nextargs) { cb(err, nextargs); }))); @@ -19561,7 +19592,7 @@ var seq$1 = rest(function seq(functions) { * @memberOf module:ControlFlow * @method * @category Control Flow - * @param {...Function} functions - the asynchronous functions to compose + * @param {...AsyncFunction} functions - the asynchronous functions to compose * @returns {Function} an asynchronous function that is the composed * asynchronous `functions` * @example @@ -19612,10 +19643,8 @@ function concat$1(eachfn, arr, fn, callback) { * @method * @category Collection * @param {Array|Iterable|Object} coll - A collection to iterate over. - * @param {Function} iteratee - A function to apply to each item in `coll`. - * The iteratee is passed a `callback(err, results)` which must be called once - * it has completed with an error (which can be `null`) and an array of results. - * Invoked with (item, callback). + * @param {AsyncFunction} iteratee - A function to apply to each item in `coll`, + * which should use an array as its result. Invoked with (item, callback). * @param {Function} [callback(err)] - A callback which is called after all the * `iteratee` functions have finished, or an error occurs. Results is an array * containing the concatenated results of the `iteratee` function. Invoked with @@ -19630,7 +19659,7 @@ var concat = doParallel(concat$1); function doSeries(fn) { return function (obj, iteratee, callback) { - return fn(eachOfSeries, obj, iteratee, callback); + return fn(eachOfSeries, obj, wrapAsync$1(iteratee), callback); }; } @@ -19644,9 +19673,8 @@ function doSeries(fn) { * @see [async.concat]{@link module:Collections.concat} * @category Collection * @param {Array|Iterable|Object} coll - A collection to iterate over. - * @param {Function} iteratee - A function to apply to each item in `coll`. - * The iteratee is passed a `callback(err, results)` which must be called once - * it has completed with an error (which can be `null`) and an array of results. + * @param {AsyncFunction} iteratee - A function to apply to each item in `coll`. + * The iteratee should complete with an array an array of results. * Invoked with (item, callback). * @param {Function} [callback(err)] - A callback which is called after all the * `iteratee` functions have finished, or an error occurs. Results is an array @@ -19667,7 +19695,7 @@ var concatSeries = doSeries(concat$1); * @category Util * @param {...*} arguments... - Any number of arguments to automatically invoke * callback with. - * @returns {Function} Returns a function that when invoked, automatically + * @returns {AsyncFunction} Returns a function that when invoked, automatically * invokes the callback with the previous given arguments. * @example * @@ -19752,9 +19780,9 @@ function _findGetResult(v, x) { * @alias find * @category Collections * @param {Array|Iterable|Object} coll - A collection to iterate over. - * @param {Function} iteratee - A truth test to apply to each item in `coll`. - * The iteratee is passed a `callback(err, truthValue)` which must be called - * with a boolean argument once it has completed. Invoked with (item, callback). + * @param {AsyncFunction} iteratee - A truth test to apply to each item in `coll`. + * The iteratee must complete with a boolean value as its result. + * Invoked with (item, callback). * @param {Function} [callback] - A callback which is called as soon as any * iteratee returns `true`, or after all the `iteratee` functions have finished. * Result will be the first item in the array that passes the truth test @@ -19785,9 +19813,9 @@ var detect = doParallel(_createTester(identity, _findGetResult)); * @category Collections * @param {Array|Iterable|Object} coll - A collection to iterate over. * @param {number} limit - The maximum number of async operations at a time. - * @param {Function} iteratee - A truth test to apply to each item in `coll`. - * The iteratee is passed a `callback(err, truthValue)` which must be called - * with a boolean argument once it has completed. Invoked with (item, callback). + * @param {AsyncFunction} iteratee - A truth test to apply to each item in `coll`. + * The iteratee must complete with a boolean value as its result. + * Invoked with (item, callback). * @param {Function} [callback] - A callback which is called as soon as any * iteratee returns `true`, or after all the `iteratee` functions have finished. * Result will be the first item in the array that passes the truth test @@ -19807,9 +19835,9 @@ var detectLimit = doParallelLimit(_createTester(identity, _findGetResult)); * @alias findSeries * @category Collections * @param {Array|Iterable|Object} coll - A collection to iterate over. - * @param {Function} iteratee - A truth test to apply to each item in `coll`. - * The iteratee is passed a `callback(err, truthValue)` which must be called - * with a boolean argument once it has completed. Invoked with (item, callback). + * @param {AsyncFunction} iteratee - A truth test to apply to each item in `coll`. + * The iteratee must complete with a boolean value as its result. + * Invoked with (item, callback). * @param {Function} [callback] - A callback which is called as soon as any * iteratee returns `true`, or after all the `iteratee` functions have finished. * Result will be the first item in the array that passes the truth test @@ -19820,7 +19848,7 @@ var detectSeries = doLimit(detectLimit, 1); function consoleFunc(name) { return rest(function (fn, args) { - fn.apply(null, args.concat(rest(function (err, args) { + wrapAsync$1(fn).apply(null, args.concat(rest(function (err, args) { if (typeof console === 'object') { if (err) { if (console.error) { @@ -19837,10 +19865,11 @@ function consoleFunc(name) { } /** - * Logs the result of an `async` function to the `console` using `console.dir` - * to display the properties of the resulting object. Only works in Node.js or - * in browsers that support `console.dir` and `console.error` (such as FF and - * Chrome). If multiple arguments are returned from the async function, + * Logs the result of an [`async` function]{@link AsyncFunction} to the + * `console` using `console.dir` to display the properties of the resulting object. + * Only works in Node.js or in browsers that support `console.dir` and + * `console.error` (such as FF and Chrome). + * If multiple arguments are returned from the async function, * `console.dir` is called on each argument in order. * * @name dir @@ -19848,8 +19877,8 @@ function consoleFunc(name) { * @memberOf module:Utils * @method * @category Util - * @param {Function} function - The function you want to eventually apply all - * arguments to. + * @param {AsyncFunction} function - The function you want to eventually apply + * all arguments to. * @param {...*} arguments... - Any number of arguments to apply to the function. * @example * @@ -19877,29 +19906,30 @@ var dir = consoleFunc('dir'); * @method * @see [async.during]{@link module:ControlFlow.during} * @category Control Flow - * @param {Function} fn - A function which is called each time `test` passes. - * The function is passed a `callback(err)`, which must be called once it has - * completed with an optional `err` argument. Invoked with (callback). - * @param {Function} test - asynchronous truth test to perform before each + * @param {AsyncFunction} fn - An async function which is called each time + * `test` passes. Invoked with (callback). + * @param {AsyncFunction} test - asynchronous truth test to perform before each * execution of `fn`. Invoked with (...args, callback), where `...args` are the * non-error args from the previous callback of `fn`. * @param {Function} [callback] - A callback which is called after the test * function has failed and repeated execution of `fn` has stopped. `callback` - * will be passed an error if one occured, otherwise `null`. + * will be passed an error if one occurred, otherwise `null`. */ function doDuring(fn, test, callback) { callback = onlyOnce(callback || noop); + var _fn = wrapAsync$1(fn); + var _test = wrapAsync$1(test); var next = rest(function (err, args) { if (err) return callback(err); args.push(check); - test.apply(this, args); + _test.apply(this, args); }); function check(err, truth) { if (err) return callback(err); if (!truth) return callback(null); - fn(next); + _fn(next); } check(null, true); @@ -19917,11 +19947,10 @@ function doDuring(fn, test, callback) { * @method * @see [async.whilst]{@link module:ControlFlow.whilst} * @category Control Flow - * @param {Function} iteratee - A function which is called each time `test` - * passes. The function is passed a `callback(err)`, which must be called once - * it has completed with an optional `err` argument. Invoked with (callback). + * @param {AsyncFunction} iteratee - A function which is called each time `test` + * passes. Invoked with (callback). * @param {Function} test - synchronous truth test to perform after each - * execution of `iteratee`. Invoked with the non-error callback results of + * execution of `iteratee`. Invoked with any non-error callback results of * `iteratee`. * @param {Function} [callback] - A callback which is called after the test * function has failed and repeated execution of `iteratee` has stopped. @@ -19930,12 +19959,13 @@ function doDuring(fn, test, callback) { */ function doWhilst(iteratee, test, callback) { callback = onlyOnce(callback || noop); + var _iteratee = wrapAsync$1(iteratee); var next = rest(function (err, args) { if (err) return callback(err); - if (test.apply(this, args)) return iteratee(next); + if (test.apply(this, args)) return _iteratee(next); callback.apply(null, [null].concat(args)); }); - iteratee(next); + _iteratee(next); } /** @@ -19948,18 +19978,18 @@ function doWhilst(iteratee, test, callback) { * @method * @see [async.doWhilst]{@link module:ControlFlow.doWhilst} * @category Control Flow - * @param {Function} fn - A function which is called each time `test` fails. - * The function is passed a `callback(err)`, which must be called once it has - * completed with an optional `err` argument. Invoked with (callback). + * @param {AsyncFunction} iteratee - An async function which is called each time + * `test` fails. Invoked with (callback). * @param {Function} test - synchronous truth test to perform after each - * execution of `fn`. Invoked with the non-error callback results of `fn`. + * execution of `iteratee`. Invoked with any non-error callback results of + * `iteratee`. * @param {Function} [callback] - A callback which is called after the test - * function has passed and repeated execution of `fn` has stopped. `callback` - * will be passed an error and any arguments passed to the final `fn`'s + * function has passed and repeated execution of `iteratee` has stopped. `callback` + * will be passed an error and any arguments passed to the final `iteratee`'s * callback. Invoked with (err, [results]); */ -function doUntil(fn, test, callback) { - doWhilst(fn, function () { +function doUntil(iteratee, test, callback) { + doWhilst(iteratee, function () { return !test.apply(this, arguments); }, callback); } @@ -19976,14 +20006,13 @@ function doUntil(fn, test, callback) { * @method * @see [async.whilst]{@link module:ControlFlow.whilst} * @category Control Flow - * @param {Function} test - asynchronous truth test to perform before each + * @param {AsyncFunction} test - asynchronous truth test to perform before each * execution of `fn`. Invoked with (callback). - * @param {Function} fn - A function which is called each time `test` passes. - * The function is passed a `callback(err)`, which must be called once it has - * completed with an optional `err` argument. Invoked with (callback). + * @param {AsyncFunction} fn - An async function which is called each time + * `test` passes. Invoked with (callback). * @param {Function} [callback] - A callback which is called after the test * function has failed and repeated execution of `fn` has stopped. `callback` - * will be passed an error, if one occured, otherwise `null`. + * will be passed an error, if one occurred, otherwise `null`. * @example * * var count = 0; @@ -20003,19 +20032,21 @@ function doUntil(fn, test, callback) { */ function during(test, fn, callback) { callback = onlyOnce(callback || noop); + var _fn = wrapAsync$1(fn); + var _test = wrapAsync$1(test); function next(err) { if (err) return callback(err); - test(check); + _test(check); } function check(err, truth) { if (err) return callback(err); if (!truth) return callback(null); - fn(next); + _fn(next); } - test(check); + _test(check); } function _withoutIndex(iteratee) { @@ -20041,12 +20072,10 @@ function _withoutIndex(iteratee) { * @alias forEach * @category Collection * @param {Array|Iterable|Object} coll - A collection to iterate over. - * @param {Function} iteratee - A function to apply to each item - * in `coll`. The iteratee is passed a `callback(err)` which must be called once - * it has completed. If no error has occurred, the `callback` should be run - * without arguments or with an explicit `null` argument. The array index is not - * passed to the iteratee. Invoked with (item, callback). If you need the index, - * use `eachOf`. + * @param {AsyncFunction} iteratee - An async function to apply to + * each item in `coll`. Invoked with (item, callback). + * The array index is not passed to the iteratee. + * If you need the index, use `eachOf`. * @param {Function} [callback] - A callback which is called when all * `iteratee` functions have finished, or an error occurs. Invoked with (err). * @example @@ -20084,7 +20113,7 @@ function _withoutIndex(iteratee) { * }); */ function eachLimit(coll, iteratee, callback) { - eachOf(coll, _withoutIndex(iteratee), callback); + eachOf(coll, _withoutIndex(wrapAsync$1(iteratee)), callback); } /** @@ -20099,17 +20128,16 @@ function eachLimit(coll, iteratee, callback) { * @category Collection * @param {Array|Iterable|Object} coll - A collection to iterate over. * @param {number} limit - The maximum number of async operations at a time. - * @param {Function} iteratee - A function to apply to each item in `coll`. The - * iteratee is passed a `callback(err)` which must be called once it has - * completed. If no error has occurred, the `callback` should be run without - * arguments or with an explicit `null` argument. The array index is not passed - * to the iteratee. Invoked with (item, callback). If you need the index, use - * `eachOfLimit`. + * @param {AsyncFunction} iteratee - An async function to apply to each item in + * `coll`. + * The array index is not passed to the iteratee. + * If you need the index, use `eachOfLimit`. + * Invoked with (item, callback). * @param {Function} [callback] - A callback which is called when all * `iteratee` functions have finished, or an error occurs. Invoked with (err). */ function eachLimit$1(coll, limit, iteratee, callback) { - _eachOfLimit(limit)(coll, _withoutIndex(iteratee), callback); + _eachOfLimit(limit)(coll, _withoutIndex(wrapAsync$1(iteratee)), callback); } /** @@ -20123,12 +20151,11 @@ function eachLimit$1(coll, limit, iteratee, callback) { * @alias forEachSeries * @category Collection * @param {Array|Iterable|Object} coll - A collection to iterate over. - * @param {Function} iteratee - A function to apply to each - * item in `coll`. The iteratee is passed a `callback(err)` which must be called - * once it has completed. If no error has occurred, the `callback` should be run - * without arguments or with an explicit `null` argument. The array index is - * not passed to the iteratee. Invoked with (item, callback). If you need the - * index, use `eachOfSeries`. + * @param {AsyncFunction} iteratee - An async function to apply to each + * item in `coll`. + * The array index is not passed to the iteratee. + * If you need the index, use `eachOfSeries`. + * Invoked with (item, callback). * @param {Function} [callback] - A callback which is called when all * `iteratee` functions have finished, or an error occurs. Invoked with (err). */ @@ -20140,16 +20167,17 @@ var eachSeries = doLimit(eachLimit$1, 1); * no extra deferral is added. This is useful for preventing stack overflows * (`RangeError: Maximum call stack size exceeded`) and generally keeping * [Zalgo](http://blog.izs.me/post/59142742143/designing-apis-for-asynchrony) - * contained. + * contained. ES2017 `async` functions are returned as-is -- they are immune + * to Zalgo's corrupting influences, as they always resolve on a later tick. * * @name ensureAsync * @static * @memberOf module:Utils * @method * @category Util - * @param {Function} fn - an async function, one that expects a node-style + * @param {AsyncFunction} fn - an async function, one that expects a node-style * callback as its last argument. - * @returns {Function} Returns a wrapped function with the exact same call + * @returns {AsyncFunction} Returns a wrapped function with the exact same call * signature as the function passed in. * @example * @@ -20169,6 +20197,7 @@ var eachSeries = doLimit(eachLimit$1, 1); * async.mapSeries(args, async.ensureAsync(sometimesAsync), done); */ function ensureAsync(fn) { + if (isAsync(fn)) return fn; return initialParams(function (args, callback) { var sync = true; args.push(function () { @@ -20201,10 +20230,10 @@ function notId(v) { * @alias all * @category Collection * @param {Array|Iterable|Object} coll - A collection to iterate over. - * @param {Function} iteratee - A truth test to apply to each item in the - * collection in parallel. The iteratee is passed a `callback(err, truthValue)` - * which must be called with a boolean argument once it has completed. Invoked - * with (item, callback). + * @param {AsyncFunction} iteratee - An async truth test to apply to each item + * in the collection in parallel. + * The iteratee must complete with a boolean result value. + * Invoked with (item, callback). * @param {Function} [callback] - A callback which is called after all the * `iteratee` functions have finished. Result will be either `true` or `false` * depending on the values of the async tests. Invoked with (err, result). @@ -20232,10 +20261,10 @@ var every = doParallel(_createTester(notId, notId)); * @category Collection * @param {Array|Iterable|Object} coll - A collection to iterate over. * @param {number} limit - The maximum number of async operations at a time. - * @param {Function} iteratee - A truth test to apply to each item in the - * collection in parallel. The iteratee is passed a `callback(err, truthValue)` - * which must be called with a boolean argument once it has completed. Invoked - * with (item, callback). + * @param {AsyncFunction} iteratee - An async truth test to apply to each item + * in the collection in parallel. + * The iteratee must complete with a boolean result value. + * Invoked with (item, callback). * @param {Function} [callback] - A callback which is called after all the * `iteratee` functions have finished. Result will be either `true` or `false` * depending on the values of the async tests. Invoked with (err, result). @@ -20253,10 +20282,10 @@ var everyLimit = doParallelLimit(_createTester(notId, notId)); * @alias allSeries * @category Collection * @param {Array|Iterable|Object} coll - A collection to iterate over. - * @param {Function} iteratee - A truth test to apply to each item in the - * collection in parallel. The iteratee is passed a `callback(err, truthValue)` - * which must be called with a boolean argument once it has completed. Invoked - * with (item, callback). + * @param {AsyncFunction} iteratee - An async truth test to apply to each item + * in the collection in series. + * The iteratee must complete with a boolean result value. + * Invoked with (item, callback). * @param {Function} [callback] - A callback which is called after all the * `iteratee` functions have finished. Result will be either `true` or `false` * depending on the values of the async tests. Invoked with (err, result). @@ -20319,7 +20348,7 @@ function filterGeneric(eachfn, coll, iteratee, callback) { function _filter(eachfn, coll, iteratee, callback) { var filter = isArrayLike(coll) ? filterArray : filterGeneric; - filter(eachfn, coll, iteratee, callback || noop); + filter(eachfn, coll, wrapAsync$1(iteratee), callback || noop); } /** @@ -20395,16 +20424,16 @@ var filterSeries = doLimit(filterLimit, 1); * Calls the asynchronous function `fn` with a callback parameter that allows it * to call itself again, in series, indefinitely. - * If an error is passed to the - * callback then `errback` is called with the error, and execution stops, - * otherwise it will never be called. + * If an error is passed to the callback then `errback` is called with the + * error, and execution stops, otherwise it will never be called. * * @name forever * @static * @memberOf module:ControlFlow * @method * @category Control Flow - * @param {Function} fn - a function to call repeatedly. Invoked with (next). + * @param {AsyncFunction} fn - an async function to call repeatedly. + * Invoked with (next). * @param {Function} [errback] - when `fn` passes an error to it's callback, * this function will be called, and execution stops. Invoked with (err). * @example @@ -20422,7 +20451,7 @@ var filterSeries = doLimit(filterLimit, 1); */ function forever(fn, errback) { var done = onlyOnce(errback || noop); - var task = ensureAsync(fn); + var task = wrapAsync$1(ensureAsync(fn)); function next(err) { if (err) return done(err); @@ -20431,6 +20460,114 @@ function forever(fn, errback) { next(); } +/** + * The same as [`groupBy`]{@link module:Collections.groupBy} but runs a maximum of `limit` async operations at a time. + * + * @name groupByLimit + * @static + * @memberOf module:Collections + * @method + * @see [async.groupBy]{@link module:Collections.groupBy} + * @category Collection + * @param {Array|Iterable|Object} coll - A collection to iterate over. + * @param {number} limit - The maximum number of async operations at a time. + * @param {AsyncFunction} iteratee - An async function to apply to each item in + * `coll`. + * The iteratee should complete with a `key` to group the value under. + * Invoked with (value, callback). + * @param {Function} [callback] - A callback which is called when all `iteratee` + * functions have finished, or an error occurs. Result is an `Object` whoses + * properties are arrays of values which returned the corresponding key. + */ +var groupByLimit = function (coll, limit, iteratee, callback) { + callback = callback || noop; + var _iteratee = wrapAsync$1(iteratee); + mapLimit(coll, limit, function (val, callback) { + _iteratee(val, function (err, key) { + if (err) return callback(err); + return callback(null, { key: key, val: val }); + }); + }, function (err, mapResults) { + var result = {}; + // from MDN, handle object having an `hasOwnProperty` prop + var hasOwnProperty = Object.prototype.hasOwnProperty; + + for (var i = 0; i < mapResults.length; i++) { + if (mapResults[i]) { + var key = mapResults[i].key; + var val = mapResults[i].val; + + if (hasOwnProperty.call(result, key)) { + result[key].push(val); + } else { + result[key] = [val]; + } + } + } + + return callback(err, result); + }); +}; + +/** + * Returns a new object, where each value corresponds to an array of items, from + * `coll`, that returned the corresponding key. That is, the keys of the object + * correspond to the values passed to the `iteratee` callback. + * + * Note: Since this function applies the `iteratee` to each item in parallel, + * there is no guarantee that the `iteratee` functions will complete in order. + * However, the values for each key in the `result` will be in the same order as + * the original `coll`. For Objects, the values will roughly be in the order of + * the original Objects' keys (but this can vary across JavaScript engines). + * + * @name groupBy + * @static + * @memberOf module:Collections + * @method + * @category Collection + * @param {Array|Iterable|Object} coll - A collection to iterate over. + * @param {AsyncFunction} iteratee - An async function to apply to each item in + * `coll`. + * The iteratee should complete with a `key` to group the value under. + * Invoked with (value, callback). + * @param {Function} [callback] - A callback which is called when all `iteratee` + * functions have finished, or an error occurs. Result is an `Object` whoses + * properties are arrays of values which returned the corresponding key. + * @example + * + * async.groupBy(['userId1', 'userId2', 'userId3'], function(userId, callback) { + * db.findById(userId, function(err, user) { + * if (err) return callback(err); + * return callback(null, user.age); + * }); + * }, function(err, result) { + * // result is object containing the userIds grouped by age + * // e.g. { 30: ['userId1', 'userId3'], 42: ['userId2']}; + * }); + */ +var groupBy = doLimit(groupByLimit, Infinity); + +/** + * The same as [`groupBy`]{@link module:Collections.groupBy} but runs only a single async operation at a time. + * + * @name groupBySeries + * @static + * @memberOf module:Collections + * @method + * @see [async.groupBy]{@link module:Collections.groupBy} + * @category Collection + * @param {Array|Iterable|Object} coll - A collection to iterate over. + * @param {number} limit - The maximum number of async operations at a time. + * @param {AsyncFunction} iteratee - An async function to apply to each item in + * `coll`. + * The iteratee should complete with a `key` to group the value under. + * Invoked with (value, callback). + * @param {Function} [callback] - A callback which is called when all `iteratee` + * functions have finished, or an error occurs. Result is an `Object` whoses + * properties are arrays of values which returned the corresponding key. + */ +var groupBySeries = doLimit(groupByLimit, 1); + /** * Logs the result of an `async` function to the `console`. Only works in * Node.js or in browsers that support `console.log` and `console.error` (such @@ -20442,8 +20579,8 @@ function forever(fn, errback) { * @memberOf module:Utils * @method * @category Util - * @param {Function} function - The function you want to eventually apply all - * arguments to. + * @param {AsyncFunction} function - The function you want to eventually apply + * all arguments to. * @param {...*} arguments... - Any number of arguments to apply to the function. * @example * @@ -20472,10 +20609,10 @@ var log = consoleFunc('log'); * @category Collection * @param {Object} obj - A collection to iterate over. * @param {number} limit - The maximum number of async operations at a time. - * @param {Function} iteratee - A function to apply to each value in `obj`. - * The iteratee is passed a `callback(err, transformed)` which must be called - * once it has completed with an error (which can be `null`) and a - * transformed value. Invoked with (value, key, callback). + * @param {AsyncFunction} iteratee - A function to apply to each value and key + * in `coll`. + * The iteratee should complete with the transformed value as its result. + * Invoked with (value, key, callback). * @param {Function} [callback] - A callback which is called when all `iteratee` * functions have finished, or an error occurs. `result` is a new object consisting * of each key from `obj`, with each transformed value on the right-hand side. @@ -20484,8 +20621,9 @@ var log = consoleFunc('log'); function mapValuesLimit(obj, limit, iteratee, callback) { callback = once(callback || noop); var newObj = {}; + var _iteratee = wrapAsync$1(iteratee); eachOfLimit(obj, limit, function (val, key, next) { - iteratee(val, key, function (err, result) { + _iteratee(val, key, function (err, result) { if (err) return next(err); newObj[key] = result; next(); @@ -20514,10 +20652,10 @@ function mapValuesLimit(obj, limit, iteratee, callback) { * @method * @category Collection * @param {Object} obj - A collection to iterate over. - * @param {Function} iteratee - A function to apply to each value and key in - * `coll`. The iteratee is passed a `callback(err, transformed)` which must be - * called once it has completed with an error (which can be `null`) and a - * transformed value. Invoked with (value, key, callback). + * @param {AsyncFunction} iteratee - A function to apply to each value and key + * in `coll`. + * The iteratee should complete with the transformed value as its result. + * Invoked with (value, key, callback). * @param {Function} [callback] - A callback which is called when all `iteratee` * functions have finished, or an error occurs. `result` is a new object consisting * of each key from `obj`, with each transformed value on the right-hand side. @@ -20552,10 +20690,10 @@ var mapValues = doLimit(mapValuesLimit, Infinity); * @see [async.mapValues]{@link module:Collections.mapValues} * @category Collection * @param {Object} obj - A collection to iterate over. - * @param {Function} iteratee - A function to apply to each value in `obj`. - * The iteratee is passed a `callback(err, transformed)` which must be called - * once it has completed with an error (which can be `null`) and a - * transformed value. Invoked with (value, key, callback). + * @param {AsyncFunction} iteratee - A function to apply to each value and key + * in `coll`. + * The iteratee should complete with the transformed value as its result. + * Invoked with (value, key, callback). * @param {Function} [callback] - A callback which is called when all `iteratee` * functions have finished, or an error occurs. `result` is a new object consisting * of each key from `obj`, with each transformed value on the right-hand side. @@ -20568,7 +20706,7 @@ function has(obj, key) { } /** - * Caches the results of an `async` function. When creating a hash to store + * Caches the results of an async function. When creating a hash to store * function results against, the callback is omitted from the hash and an * optional hash function can be used. * @@ -20586,11 +20724,11 @@ function has(obj, key) { * @memberOf module:Utils * @method * @category Util - * @param {Function} fn - The function to proxy and cache results from. + * @param {AsyncFunction} fn - The async function to proxy and cache results from. * @param {Function} hasher - An optional function for generating a custom hash * for storing results. It has all the arguments applied to it apart from the * callback, and must be synchronous. - * @returns {Function} a memoized version of `fn` + * @returns {AsyncFunction} a memoized version of `fn` * @example * * var slow_fn = function(name, callback) { @@ -20608,6 +20746,7 @@ function memoize(fn, hasher) { var memo = Object.create(null); var queues = Object.create(null); hasher = hasher || identity; + var _fn = wrapAsync$1(fn); var memoized = initialParams(function memoized(args, callback) { var key = hasher.apply(null, args); if (has(memo, key)) { @@ -20618,7 +20757,7 @@ function memoize(fn, hasher) { queues[key].push(callback); } else { queues[key] = [callback]; - fn.apply(null, args.concat(rest(function (args) { + _fn.apply(null, args.concat(rest(function (args) { memo[key] = args; var q = queues[key]; delete queues[key]; @@ -20681,7 +20820,7 @@ function _parallel(eachfn, tasks, callback) { var results = isArrayLike(tasks) ? [] : {}; eachfn(tasks, function (task, key, callback) { - task(rest(function (err, args) { + wrapAsync$1(task)(rest(function (err, args) { if (args.length <= 1) { args = args[0]; } @@ -20706,6 +20845,9 @@ function _parallel(eachfn, tasks, callback) { * sections for each task will happen one after the other. JavaScript remains * single-threaded. * + * **Hint:** Use [`reflect`]{@link module:Utils.reflect} to continue the + * execution of other tasks when a task fails. + * * It is also possible to use an object instead of an array. Each property will * be run as a function and the results will be passed to the final `callback` * as an object instead of an array. This can be a more readable way of handling @@ -20716,14 +20858,14 @@ function _parallel(eachfn, tasks, callback) { * @memberOf module:ControlFlow * @method * @category Control Flow - * @param {Array|Iterable|Object} tasks - A collection containing functions to run. - * Each function is passed a `callback(err, result)` which it must call on - * completion with an error `err` (which can be `null`) and an optional `result` - * value. + * @param {Array|Iterable|Object} tasks - A collection of + * [async functions]{@link AsyncFunction} to run. + * Each async function can complete with any number of optional `result` values. * @param {Function} [callback] - An optional callback to run once all the * functions have completed successfully. This function gets a results array * (or object) containing all the result arguments passed to the task callbacks. * Invoked with (err, results). + * * @example * async.parallel([ * function(callback) { @@ -20773,10 +20915,9 @@ function parallelLimit(tasks, callback) { * @method * @see [async.parallel]{@link module:ControlFlow.parallel} * @category Control Flow - * @param {Array|Collection} tasks - A collection containing functions to run. - * Each function is passed a `callback(err, result)` which it must call on - * completion with an error `err` (which can be `null`) and an optional `result` - * value. + * @param {Array|Iterable|Object} tasks - A collection of + * [async functions]{@link AsyncFunction} to run. + * Each async function can complete with any number of optional `result` values. * @param {number} limit - The maximum number of async operations at a time. * @param {Function} [callback] - An optional callback to run once all the * functions have completed successfully. This function gets a results array @@ -20845,11 +20986,9 @@ function parallelLimit$1(tasks, limit, callback) { * @memberOf module:ControlFlow * @method * @category Control Flow - * @param {Function} worker - An asynchronous function for processing a queued - * task, which must call its `callback(err)` argument when finished, with an - * optional `error` as an argument. If you want to handle errors from an - * individual task, pass a callback to `q.push()`. Invoked with - * (task, callback). + * @param {AsyncFunction} worker - An async function for processing a queued task. + * If you want to handle errors from an individual task, pass a callback to + * `q.push()`. Invoked with (task, callback). * @param {number} [concurrency=1] - An `integer` for determining how many * `worker` functions should be run in parallel. If omitted, the concurrency * defaults to `1`. If the concurrency is `0`, an error is thrown. @@ -20888,8 +21027,9 @@ function parallelLimit$1(tasks, limit, callback) { * }); */ var queue$1 = function (worker, concurrency) { + var _worker = wrapAsync$1(worker); return queue(function (items, cb) { - worker(items[0], cb); + _worker(items[0], cb); }, concurrency, 1); }; @@ -20903,11 +21043,10 @@ var queue$1 = function (worker, concurrency) { * @method * @see [async.queue]{@link module:ControlFlow.queue} * @category Control Flow - * @param {Function} worker - An asynchronous function for processing a queued - * task, which must call its `callback(err)` argument when finished, with an - * optional `error` as an argument. If you want to handle errors from an - * individual task, pass a callback to `q.push()`. Invoked with - * (task, callback). + * @param {AsyncFunction} worker - An async function for processing a queued task. + * If you want to handle errors from an individual task, pass a callback to + * `q.push()`. + * Invoked with (task, callback). * @param {number} concurrency - An `integer` for determining how many `worker` * functions should be run in parallel. If omitted, the concurrency defaults to * `1`. If the concurrency is `0`, an error is thrown. @@ -20977,9 +21116,8 @@ var priorityQueue = function (worker, concurrency) { * @memberOf module:ControlFlow * @method * @category Control Flow - * @param {Array} tasks - An array containing functions to run. Each function - * is passed a `callback(err, result)` which it must call on completion with an - * error `err` (which can be `null`) and an optional `result` value. + * @param {Array} tasks - An array containing [async functions]{@link AsyncFunction} + * to run. Each function can complete with an optional `result` value. * @param {Function} callback - A callback to run once any of the functions have * completed. This function gets an error or result from the first function that * completed. Invoked with (err, result). @@ -21008,7 +21146,7 @@ function race(tasks, callback) { if (!isArray(tasks)) return callback(new TypeError('First argument to race must be an array of functions')); if (!tasks.length) return callback(); for (var i = 0, l = tasks.length; i < l; i++) { - tasks[i](callback); + wrapAsync$1(tasks[i])(callback); } } @@ -21026,12 +21164,12 @@ var slice = Array.prototype.slice; * @category Collection * @param {Array} array - A collection to iterate over. * @param {*} memo - The initial state of the reduction. - * @param {Function} iteratee - A function applied to each item in the - * array to produce the next step in the reduction. The `iteratee` is passed a - * `callback(err, reduction)` which accepts an optional error as its first - * argument, and the state of the reduction as the second. If an error is - * passed to the callback, the reduction is stopped and the main `callback` is - * immediately called with the error. Invoked with (memo, item, callback). + * @param {AsyncFunction} iteratee - A function applied to each item in the + * array to produce the next step in the reduction. + * The `iteratee` should complete with the next state of the reduction. + * If the iteratee complete with an error, the reduction is stopped and the + * main `callback` is immediately called with the error. + * Invoked with (memo, item, callback). * @param {Function} [callback] - A callback which is called after all the * `iteratee` functions have finished. Result is the reduced value. Invoked with * (err, result). @@ -21042,17 +21180,17 @@ function reduceRight(array, memo, iteratee, callback) { } /** - * Wraps the function in another function that always returns data even when it - * errors. + * Wraps the async function in another function that always completes with a + * result object, even when it errors. * - * The object returned has either the property `error` or `value`. + * The result object has either the property `error` or `value`. * * @name reflect * @static * @memberOf module:Utils * @method * @category Util - * @param {Function} fn - The function you want to wrap + * @param {AsyncFunction} fn - The async function you want to wrap * @returns {Function} - A function that always passes null to it's callback as * the error. The second argument to the callback will be an `object` with * either an `error` or a `value` property. @@ -21081,6 +21219,7 @@ function reduceRight(array, memo, iteratee, callback) { * }); */ function reflect(fn) { + var _fn = wrapAsync$1(fn); return initialParams(function reflectOn(args, reflectCallback) { args.push(rest(function callback(err, cbArgs) { if (err) { @@ -21100,7 +21239,7 @@ function reflect(fn) { } })); - return fn.apply(this, args); + return _fn.apply(this, args); }); } @@ -21122,9 +21261,10 @@ function reject$1(eachfn, arr, iteratee, callback) { * @see [async.filter]{@link module:Collections.filter} * @category Collection * @param {Array|Iterable|Object} coll - A collection to iterate over. - * @param {Function} iteratee - A truth test to apply to each item in `coll`. - * The `iteratee` is passed a `callback(err, truthValue)`, which must be called - * with a boolean argument once it has completed. Invoked with (item, callback). + * @param {Function} iteratee - An async truth test to apply to each item in + * `coll`. + * The should complete with a boolean value as its `result`. + * Invoked with (item, callback). * @param {Function} [callback] - A callback which is called after all the * `iteratee` functions have finished. Invoked with (err, results). * @example @@ -21141,7 +21281,7 @@ function reject$1(eachfn, arr, iteratee, callback) { var reject = doParallel(reject$1); /** - * A helper function that wraps an array or an object of functions with reflect. + * A helper function that wraps an array or an object of functions with `reflect`. * * @name reflectAll * @static @@ -21149,8 +21289,9 @@ var reject = doParallel(reject$1); * @method * @see [async.reflect]{@link module:Utils.reflect} * @category Util - * @param {Array} tasks - The array of functions to wrap in `async.reflect`. - * @returns {Array} Returns an array of functions, each function wrapped in + * @param {Array|Object|Iterable} tasks - The collection of + * [async functions]{@link AsyncFunction} to wrap in `async.reflect`. + * @returns {Array} Returns an array of async functions, each wrapped in * `async.reflect` * @example * @@ -21231,9 +21372,10 @@ function reflectAll(tasks) { * @category Collection * @param {Array|Iterable|Object} coll - A collection to iterate over. * @param {number} limit - The maximum number of async operations at a time. - * @param {Function} iteratee - A truth test to apply to each item in `coll`. - * The `iteratee` is passed a `callback(err, truthValue)`, which must be called - * with a boolean argument once it has completed. Invoked with (item, callback). + * @param {Function} iteratee - An async truth test to apply to each item in + * `coll`. + * The should complete with a boolean value as its `result`. + * Invoked with (item, callback). * @param {Function} [callback] - A callback which is called after all the * `iteratee` functions have finished. Invoked with (err, results). */ @@ -21249,9 +21391,10 @@ var rejectLimit = doParallelLimit(reject$1); * @see [async.reject]{@link module:Collections.reject} * @category Collection * @param {Array|Iterable|Object} coll - A collection to iterate over. - * @param {Function} iteratee - A truth test to apply to each item in `coll`. - * The `iteratee` is passed a `callback(err, truthValue)`, which must be called - * with a boolean argument once it has completed. Invoked with (item, callback). + * @param {Function} iteratee - An async truth test to apply to each item in + * `coll`. + * The should complete with a boolean value as its `result`. + * Invoked with (item, callback). * @param {Function} [callback] - A callback which is called after all the * `iteratee` functions have finished. Invoked with (err, results). */ @@ -21293,6 +21436,7 @@ function constant$1(value) { * @memberOf module:ControlFlow * @method * @category Control Flow + * @see [async.retryable]{@link module:ControlFlow.retryable} * @param {Object|number} [opts = {times: 5, interval: 0}| 5] - Can be either an * object with `times` and `interval` or a number. * * `times` - The number of attempts to make before giving up. The default @@ -21307,16 +21451,13 @@ function constant$1(value) { * Invoked with (err). * * If `opts` is a number, the number specifies the number of times to retry, * with the default interval of `0`. - * @param {Function} task - A function which receives two arguments: (1) a - * `callback(err, result)` which must be called when finished, passing `err` - * (which can be `null`) and the `result` of the function's execution, and (2) - * a `results` object, containing the results of the previously executed - * functions (if nested inside another control flow). Invoked with - * (callback, results). + * @param {AsyncFunction} task - An async function to retry. + * Invoked with (callback). * @param {Function} [callback] - An optional callback which is called when the * task has succeeded, or after the final failed attempt. It receives the `err` * and `result` arguments of the last attempt at completing the `task`. Invoked * with (err, results). + * * @example * * // The `retry` function can be used as a stand-alone control flow by passing @@ -21362,7 +21503,7 @@ function constant$1(value) { * // individual methods that are not as reliable, like this: * async.auto({ * users: api.getUsers.bind(api), - * payments: async.retry(3, api.getPayments.bind(api)) + * payments: async.retryable(3, api.getPayments.bind(api)) * }, function(err, results) { * // do something with the results * }); @@ -21403,9 +21544,11 @@ function retry(opts, task, callback) { throw new Error("Invalid arguments for async.retry"); } + var _task = wrapAsync$1(task); + var attempt = 1; function retryAttempt() { - task(function (err) { + _task(function (err) { if (err && attempt++ < options.times && (typeof options.errorFilter != 'function' || options.errorFilter(err))) { setTimeout(retryAttempt, options.intervalFunc(attempt)); } else { @@ -21418,8 +21561,9 @@ function retry(opts, task, callback) { } /** - * A close relative of [`retry`]{@link module:ControlFlow.retry}. This method wraps a task and makes it - * retryable, rather than immediately calling it with retries. + * A close relative of [`retry`]{@link module:ControlFlow.retry}. This method + * wraps a task and makes it retryable, rather than immediately calling it + * with retries. * * @name retryable * @static @@ -21429,9 +21573,12 @@ function retry(opts, task, callback) { * @category Control Flow * @param {Object|number} [opts = {times: 5, interval: 0}| 5] - optional * options, exactly the same as from `retry` - * @param {Function} task - the asynchronous function to wrap - * @returns {Functions} The wrapped function, which when invoked, will retry on - * an error, based on the parameters specified in `opts`. + * @param {AsyncFunction} task - the asynchronous function to wrap. + * This function will be passed any arguments passed to the returned wrapper. + * Invoked with (...args, callback). + * @returns {AsyncFunction} The wrapped function, which when invoked, will + * retry on an error, based on the parameters specified in `opts`. + * This function will accept the same parameters as `task`. * @example * * async.auto({ @@ -21446,9 +21593,10 @@ var retryable = function (opts, task) { task = opts; opts = null; } + var _task = wrapAsync$1(task); return initialParams(function (args, callback) { function taskFn(cb) { - task.apply(null, args.concat(cb)); + _task.apply(null, args.concat(cb)); } if (opts) retry(opts, taskFn, callback);else retry(taskFn, callback); @@ -21481,9 +21629,9 @@ var retryable = function (opts, task) { * @memberOf module:ControlFlow * @method * @category Control Flow - * @param {Array|Iterable|Object} tasks - A collection containing functions to run, each - * function is passed a `callback(err, result)` it must call on completion with - * an error `err` (which can be `null`) and an optional `result` value. + * @param {Array|Iterable|Object} tasks - A collection containing + * [async functions]{@link AsyncFunction} to run in series. + * Each function can complete with any number of optional `result` values. * @param {Function} [callback] - An optional callback to run once all the * functions have completed. This function gets a results array (or object) * containing all the result arguments passed to the `task` callbacks. Invoked @@ -21535,10 +21683,10 @@ function series(tasks, callback) { * @alias any * @category Collection * @param {Array|Iterable|Object} coll - A collection to iterate over. - * @param {Function} iteratee - A truth test to apply to each item in the array - * in parallel. The iteratee is passed a `callback(err, truthValue)` which must - * be called with a boolean argument once it has completed. Invoked with - * (item, callback). + * @param {AsyncFunction} iteratee - An async truth test to apply to each item + * in the collections in parallel. + * The iteratee should complete with a boolean `result` value. + * Invoked with (item, callback). * @param {Function} [callback] - A callback which is called as soon as any * iteratee returns `true`, or after all the iteratee functions have finished. * Result will be either `true` or `false` depending on the values of the async @@ -21567,10 +21715,10 @@ var some = doParallel(_createTester(Boolean, identity)); * @category Collection * @param {Array|Iterable|Object} coll - A collection to iterate over. * @param {number} limit - The maximum number of async operations at a time. - * @param {Function} iteratee - A truth test to apply to each item in the array - * in parallel. The iteratee is passed a `callback(err, truthValue)` which must - * be called with a boolean argument once it has completed. Invoked with - * (item, callback). + * @param {AsyncFunction} iteratee - An async truth test to apply to each item + * in the collections in parallel. + * The iteratee should complete with a boolean `result` value. + * Invoked with (item, callback). * @param {Function} [callback] - A callback which is called as soon as any * iteratee returns `true`, or after all the iteratee functions have finished. * Result will be either `true` or `false` depending on the values of the async @@ -21589,10 +21737,10 @@ var someLimit = doParallelLimit(_createTester(Boolean, identity)); * @alias anySeries * @category Collection * @param {Array|Iterable|Object} coll - A collection to iterate over. - * @param {Function} iteratee - A truth test to apply to each item in the array - * in parallel. The iteratee is passed a `callback(err, truthValue)` which must - * be called with a boolean argument once it has completed. Invoked with - * (item, callback). + * @param {AsyncFunction} iteratee - An async truth test to apply to each item + * in the collections in series. + * The iteratee should complete with a boolean `result` value. + * Invoked with (item, callback). * @param {Function} [callback] - A callback which is called as soon as any * iteratee returns `true`, or after all the iteratee functions have finished. * Result will be either `true` or `false` depending on the values of the async @@ -21610,10 +21758,11 @@ var someSeries = doLimit(someLimit, 1); * @method * @category Collection * @param {Array|Iterable|Object} coll - A collection to iterate over. - * @param {Function} iteratee - A function to apply to each item in `coll`. - * The iteratee is passed a `callback(err, sortValue)` which must be called once - * it has completed with an error (which can be `null`) and a value to use as - * the sort criteria. Invoked with (item, callback). + * @param {AsyncFunction} iteratee - An async function to apply to each item in + * `coll`. + * The iteratee should complete with a value to use as the sort criteria as + * its `result`. + * Invoked with (item, callback). * @param {Function} callback - A callback which is called after all the * `iteratee` functions have finished, or an error occurs. Results is the items * from the original `coll` sorted by the values returned by the `iteratee` @@ -21647,8 +21796,9 @@ var someSeries = doLimit(someLimit, 1); * }); */ function sortBy(coll, iteratee, callback) { + var _iteratee = wrapAsync$1(iteratee); map(coll, function (x, callback) { - iteratee(x, function (err, criteria) { + _iteratee(x, function (err, criteria) { if (err) return callback(err); callback(null, { value: x, criteria: criteria }); }); @@ -21674,14 +21824,13 @@ function sortBy(coll, iteratee, callback) { * @memberOf module:Utils * @method * @category Util - * @param {Function} asyncFn - The asynchronous function you want to set the - * time limit. + * @param {AsyncFunction} asyncFn - The async function to limit in time. * @param {number} milliseconds - The specified time limit. * @param {*} [info] - Any variable you want attached (`string`, `object`, etc) * to timeout Error for more information.. - * @returns {Function} Returns a wrapped function that can be used with any of - * the control flow functions. Invoke this function with the same - * parameters as you would `asyncFunc`. + * @returns {AsyncFunction} Returns a wrapped function that can be used with any + * of the control flow functions. + * Invoke this function with the same parameters as you would `asyncFunc`. * @example * * function myFunction(foo, callback) { @@ -21728,11 +21877,13 @@ function timeout(asyncFn, milliseconds, info) { originalCallback(error); } + var fn = wrapAsync$1(asyncFn); + return initialParams(function (args, origCallback) { originalCallback = origCallback; // setup timer and call original function timer = setTimeout(timeoutCallback, milliseconds); - asyncFn.apply(null, args.concat(injectedCallback)); + fn.apply(null, args.concat(injectedCallback)); }); } @@ -21775,12 +21926,13 @@ function baseRange(start, end, step, fromRight) { * @category Control Flow * @param {number} count - The number of times to run the function. * @param {number} limit - The maximum number of async operations at a time. - * @param {Function} iteratee - The function to call `n` times. Invoked with the - * iteration index and a callback (n, next). + * @param {AsyncFunction} iteratee - The async function to call `n` times. + * Invoked with the iteration index and a callback: (n, next). * @param {Function} callback - see [async.map]{@link module:Collections.map}. */ function timeLimit(count, limit, iteratee, callback) { - mapLimit(baseRange(0, count, 1), limit, iteratee, callback); + var _iteratee = wrapAsync$1(iteratee); + mapLimit(baseRange(0, count, 1), limit, _iteratee, callback); } /** @@ -21794,8 +21946,8 @@ function timeLimit(count, limit, iteratee, callback) { * @see [async.map]{@link module:Collections.map} * @category Control Flow * @param {number} n - The number of times to run the function. - * @param {Function} iteratee - The function to call `n` times. Invoked with the - * iteration index and a callback (n, next). + * @param {AsyncFunction} iteratee - The async function to call `n` times. + * Invoked with the iteration index and a callback: (n, next). * @param {Function} callback - see {@link module:Collections.map}. * @example * @@ -21827,8 +21979,8 @@ var times = doLimit(timeLimit, Infinity); * @see [async.times]{@link module:ControlFlow.times} * @category Control Flow * @param {number} n - The number of times to run the function. - * @param {Function} iteratee - The function to call `n` times. Invoked with the - * iteration index and a callback (n, next). + * @param {AsyncFunction} iteratee - The async function to call `n` times. + * Invoked with the iteration index and a callback: (n, next). * @param {Function} callback - see {@link module:Collections.map}. */ var timesSeries = doLimit(timeLimit, 1); @@ -21846,11 +21998,8 @@ var timesSeries = doLimit(timeLimit, 1); * @param {Array|Iterable|Object} coll - A collection to iterate over. * @param {*} [accumulator] - The initial state of the transform. If omitted, * it will default to an empty Object or Array, depending on the type of `coll` - * @param {Function} iteratee - A function applied to each item in the - * collection that potentially modifies the accumulator. The `iteratee` is - * passed a `callback(err)` which accepts an optional error as its first - * argument. If an error is passed to the callback, the transform is stopped - * and the main `callback` is immediately called with the error. + * @param {AsyncFunction} iteratee - A function applied to each item in the + * collection that potentially modifies the accumulator. * Invoked with (accumulator, item, key, callback). * @param {Function} [callback] - A callback which is called after all the * `iteratee` functions have finished. Result is the transformed accumulator. @@ -21879,15 +22028,16 @@ var timesSeries = doLimit(timeLimit, 1); * }) */ function transform(coll, accumulator, iteratee, callback) { - if (arguments.length === 3) { + if (arguments.length <= 3) { callback = iteratee; iteratee = accumulator; accumulator = isArray(coll) ? [] : {}; } callback = once(callback || noop); + var _iteratee = wrapAsync$1(iteratee); eachOf(coll, function (v, k, cb) { - iteratee(accumulator, v, k, cb); + _iteratee(accumulator, v, k, cb); }, function (err) { callback(err, accumulator); }); @@ -21903,8 +22053,8 @@ function transform(coll, accumulator, iteratee, callback) { * @method * @see [async.memoize]{@link module:Utils.memoize} * @category Util - * @param {Function} fn - the memoized function - * @returns {Function} a function that calls the original unmemoized function + * @param {AsyncFunction} fn - the memoized function + * @returns {AsyncFunction} a function that calls the original unmemoized function */ function unmemoize(fn) { return function () { @@ -21923,9 +22073,8 @@ function unmemoize(fn) { * @category Control Flow * @param {Function} test - synchronous truth test to perform before each * execution of `iteratee`. Invoked with (). - * @param {Function} iteratee - A function which is called each time `test` passes. - * The function is passed a `callback(err)`, which must be called once it has - * completed with an optional `err` argument. Invoked with (callback). + * @param {AsyncFunction} iteratee - An async function which is called each time + * `test` passes. Invoked with (callback). * @param {Function} [callback] - A callback which is called after the test * function has failed and repeated execution of `iteratee` has stopped. `callback` * will be passed an error and any arguments passed to the final `iteratee`'s @@ -21949,19 +22098,20 @@ function unmemoize(fn) { */ function whilst(test, iteratee, callback) { callback = onlyOnce(callback || noop); + var _iteratee = wrapAsync$1(iteratee); if (!test()) return callback(null); var next = rest(function (err, args) { if (err) return callback(err); - if (test()) return iteratee(next); + if (test()) return _iteratee(next); callback.apply(null, [null].concat(args)); }); - iteratee(next); + _iteratee(next); } /** - * Repeatedly call `fn` until `test` returns `true`. Calls `callback` when + * Repeatedly call `iteratee` until `test` returns `true`. Calls `callback` when * stopped, or an error occurs. `callback` will be passed an error and any - * arguments passed to the final `fn`'s callback. + * arguments passed to the final `iteratee`'s callback. * * The inverse of [whilst]{@link module:ControlFlow.whilst}. * @@ -21972,19 +22122,18 @@ function whilst(test, iteratee, callback) { * @see [async.whilst]{@link module:ControlFlow.whilst} * @category Control Flow * @param {Function} test - synchronous truth test to perform before each - * execution of `fn`. Invoked with (). - * @param {Function} fn - A function which is called each time `test` fails. - * The function is passed a `callback(err)`, which must be called once it has - * completed with an optional `err` argument. Invoked with (callback). + * execution of `iteratee`. Invoked with (). + * @param {AsyncFunction} iteratee - An async function which is called each time + * `test` fails. Invoked with (callback). * @param {Function} [callback] - A callback which is called after the test - * function has passed and repeated execution of `fn` has stopped. `callback` - * will be passed an error and any arguments passed to the final `fn`'s + * function has passed and repeated execution of `iteratee` has stopped. `callback` + * will be passed an error and any arguments passed to the final `iteratee`'s * callback. Invoked with (err, [results]); */ -function until(test, fn, callback) { +function until(test, iteratee, callback) { whilst(function () { return !test.apply(this, arguments); - }, fn, callback); + }, iteratee, callback); } /** @@ -21998,10 +22147,10 @@ function until(test, fn, callback) { * @memberOf module:ControlFlow * @method * @category Control Flow - * @param {Array} tasks - An array of functions to run, each function is passed - * a `callback(err, result1, result2, ...)` it must call on completion. The - * first argument is an error (which can be `null`) and any further arguments - * will be passed as arguments in order to the next task. + * @param {Array} tasks - An array of [async functions]{@link AsyncFunction} + * to run. + * Each function should complete with any number of `result` values. + * The `result` values will be passed as arguments, in order, to the next task. * @param {Function} [callback] - An optional callback to run once all the * functions have completed. This will be passed the results of the last task's * callback. Invoked with (err, [results]). @@ -22064,19 +22213,59 @@ var waterfall = function (tasks, callback) { args.push(taskCallback); - var task = tasks[taskIndex++]; + var task = wrapAsync$1(tasks[taskIndex++]); task.apply(null, args); } nextTask([]); }; +/** + * An "async function" in the context of Async is an asynchronous function with + * a variable number of parameters, with the final parameter being a callback. + * (`function (arg1, arg2, ..., callback) {}`) + * The final callback is of the form `callback(err, results...)`, which must be + * called once the function is completed. The callback should be called with a + * Error as its first argument to signal that an error occurred. + * Otherwise, if no error occurred, it should be called with `null` as the first + * argument, and any additional `result` arguments that may apply, to signal + * successful completion. + * The callback must be called exactly once, ideally on a later tick of the + * JavaScript event loop. + * + * This type of function is also referred to as a "Node-style async function", + * or a "continuation passing-style function" (CPS). Most of the methods of this + * library are themselves CPS/Node-style async functions, or functions that + * return CPS/Node-style async functions. + * + * Wherever we accept a Node-style async function, we also directly accept an + * [ES2017 `async` function]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function}. + * In this case, the `async` function will not be passed a final callback + * argument, and any thrown error will be used as the `err` argument of the + * implicit callback, and the return value will be used as the `result` value. + * (i.e. a `rejected` of the returned Promise becomes the `err` callback + * argument, and a `resolved` value becomes the `result`.) + * + * Note, due to JavaScript limitations, we can only detect native `async` + * functions and not transpilied implementations. + * Your environment must have `async`/`await` support for this to work. + * (e.g. Node > v7.6, or a recent version of a modern browser). + * If you are using `async` functions through a transpiler (e.g. Babel), you + * must still wrap the function with [asyncify]{@link module:Utils.asyncify}, + * because the `async function` will be compiled to an ordinary function that + * returns a promise. + * + * @typedef {Function} AsyncFunction + * @static + */ + /** * Async is a utility module which provides straight-forward, powerful functions * for working with asynchronous JavaScript. Although originally designed for * use with [Node.js](http://nodejs.org) and installable via * `npm install --save async`, it can also be used directly in the browser. * @module async + * @see AsyncFunction */ /** @@ -22094,6 +22283,7 @@ var waterfall = function (tasks, callback) { * A collection of `async` utility functions. * @module Utils */ + var index = { applyEach: applyEach, applyEachSeries: applyEachSeries, @@ -22128,6 +22318,9 @@ var index = { filterLimit: filterLimit, filterSeries: filterSeries, forever: forever, + groupBy: groupBy, + groupByLimit: groupByLimit, + groupBySeries: groupBySeries, log: log, map: map, mapLimit: mapLimit, @@ -22220,6 +22413,9 @@ exports.filter = filter; exports.filterLimit = filterLimit; exports.filterSeries = filterSeries; exports.forever = forever; +exports.groupBy = groupBy; +exports.groupByLimit = groupByLimit; +exports.groupBySeries = groupBySeries; exports.log = log; exports.map = map; exports.mapLimit = mapLimit; @@ -22287,7 +22483,40 @@ Object.defineProperty(exports, '__esModule', { value: true }); }))); }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"_process":357}],83:[function(require,module,exports){ + +},{"_process":650}],83:[function(require,module,exports){ +(function (global){ +"use strict"; + +require("core-js/shim"); + +require("regenerator-runtime/runtime"); + +require("core-js/fn/regexp/escape"); + +if (global._babelPolyfill) { + throw new Error("only one instance of babel-polyfill is allowed"); +} +global._babelPolyfill = true; + +var DEFINE_PROPERTY = "defineProperty"; +function define(O, key, value) { + O[key] || Object[DEFINE_PROPERTY](O, key, { + writable: true, + configurable: true, + value: value + }); +} + +define(String.prototype, "padLeft", "".padStart); +define(String.prototype, "padRight", "".padEnd); + +"pop,reverse,shift,keys,values,entries,indexOf,every,some,forEach,map,filter,find,findIndex,includes,join,slice,concat,push,splice,unshift,sort,lastIndexOf,reduce,reduceRight,copyWithin,fill".split(",").forEach(function (key) { + [][key] && define(Array, key, Function.call.bind([][key])); +}); +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) + +},{"core-js/fn/regexp/escape":153,"core-js/shim":446,"regenerator-runtime/runtime":675}],84:[function(require,module,exports){ 'use strict' exports.byteLength = byteLength @@ -22403,7 +22632,7 @@ function fromByteArray (uint8) { return parts.join('') } -},{}],84:[function(require,module,exports){ +},{}],85:[function(require,module,exports){ (function (module, exports) { 'use strict'; @@ -25832,7 +26061,7 @@ function fromByteArray (uint8) { }; })(typeof module === 'undefined' || module, this); -},{}],85:[function(require,module,exports){ +},{}],86:[function(require,module,exports){ var r; module.exports = function rand(len) { @@ -25899,9 +26128,9 @@ if (typeof self === 'object') { } } -},{"crypto":86}],86:[function(require,module,exports){ +},{"crypto":87}],87:[function(require,module,exports){ -},{}],87:[function(require,module,exports){ +},{}],88:[function(require,module,exports){ (function (Buffer){ // based on the aes implimentation in triple sec // https://github.com/keybase/triplesec @@ -26082,7 +26311,8 @@ AES.prototype._doCryptBlock = function (M, keySchedule, SUB_MIX, SBOX) { exports.AES = AES }).call(this,require("buffer").Buffer) -},{"buffer":116}],88:[function(require,module,exports){ + +},{"buffer":119}],89:[function(require,module,exports){ (function (Buffer){ var aes = require('./aes') var Transform = require('cipher-base') @@ -26183,7 +26413,8 @@ function xorTest (a, b) { } }).call(this,require("buffer").Buffer) -},{"./aes":87,"./ghash":92,"buffer":116,"buffer-xor":115,"cipher-base":147,"inherits":263}],89:[function(require,module,exports){ + +},{"./aes":88,"./ghash":93,"buffer":119,"buffer-xor":118,"cipher-base":150,"inherits":559}],90:[function(require,module,exports){ var ciphers = require('./encrypter') exports.createCipher = exports.Cipher = ciphers.createCipher exports.createCipheriv = exports.Cipheriv = ciphers.createCipheriv @@ -26196,7 +26427,7 @@ function getCiphers () { } exports.listCiphers = exports.getCiphers = getCiphers -},{"./decrypter":90,"./encrypter":91,"./modes":93}],90:[function(require,module,exports){ +},{"./decrypter":91,"./encrypter":92,"./modes":94}],91:[function(require,module,exports){ (function (Buffer){ var aes = require('./aes') var Transform = require('cipher-base') @@ -26337,7 +26568,8 @@ exports.createDecipher = createDecipher exports.createDecipheriv = createDecipheriv }).call(this,require("buffer").Buffer) -},{"./aes":87,"./authCipher":88,"./modes":93,"./modes/cbc":94,"./modes/cfb":95,"./modes/cfb1":96,"./modes/cfb8":97,"./modes/ctr":98,"./modes/ecb":99,"./modes/ofb":100,"./streamCipher":101,"buffer":116,"cipher-base":147,"evp_bytestokey":198,"inherits":263}],91:[function(require,module,exports){ + +},{"./aes":88,"./authCipher":89,"./modes":94,"./modes/cbc":95,"./modes/cfb":96,"./modes/cfb1":97,"./modes/cfb8":98,"./modes/ctr":99,"./modes/ecb":100,"./modes/ofb":101,"./streamCipher":102,"buffer":119,"cipher-base":150,"evp_bytestokey":495,"inherits":559}],92:[function(require,module,exports){ (function (Buffer){ var aes = require('./aes') var Transform = require('cipher-base') @@ -26463,7 +26695,8 @@ exports.createCipheriv = createCipheriv exports.createCipher = createCipher }).call(this,require("buffer").Buffer) -},{"./aes":87,"./authCipher":88,"./modes":93,"./modes/cbc":94,"./modes/cfb":95,"./modes/cfb1":96,"./modes/cfb8":97,"./modes/ctr":98,"./modes/ecb":99,"./modes/ofb":100,"./streamCipher":101,"buffer":116,"cipher-base":147,"evp_bytestokey":198,"inherits":263}],92:[function(require,module,exports){ + +},{"./aes":88,"./authCipher":89,"./modes":94,"./modes/cbc":95,"./modes/cfb":96,"./modes/cfb1":97,"./modes/cfb8":98,"./modes/ctr":99,"./modes/ecb":100,"./modes/ofb":101,"./streamCipher":102,"buffer":119,"cipher-base":150,"evp_bytestokey":495,"inherits":559}],93:[function(require,module,exports){ (function (Buffer){ var zeros = new Buffer(16) zeros.fill(0) @@ -26565,7 +26798,8 @@ function xor (a, b) { } }).call(this,require("buffer").Buffer) -},{"buffer":116}],93:[function(require,module,exports){ + +},{"buffer":119}],94:[function(require,module,exports){ exports['aes-128-ecb'] = { cipher: 'AES', key: 128, @@ -26738,7 +26972,7 @@ exports['aes-256-gcm'] = { type: 'auth' } -},{}],94:[function(require,module,exports){ +},{}],95:[function(require,module,exports){ var xor = require('buffer-xor') exports.encrypt = function (self, block) { @@ -26757,7 +26991,7 @@ exports.decrypt = function (self, block) { return xor(out, pad) } -},{"buffer-xor":115}],95:[function(require,module,exports){ +},{"buffer-xor":118}],96:[function(require,module,exports){ (function (Buffer){ var xor = require('buffer-xor') @@ -26792,7 +27026,8 @@ function encryptStart (self, data, decrypt) { } }).call(this,require("buffer").Buffer) -},{"buffer":116,"buffer-xor":115}],96:[function(require,module,exports){ + +},{"buffer":119,"buffer-xor":118}],97:[function(require,module,exports){ (function (Buffer){ function encryptByte (self, byteParam, decrypt) { var pad @@ -26830,7 +27065,8 @@ function shiftIn (buffer, value) { } }).call(this,require("buffer").Buffer) -},{"buffer":116}],97:[function(require,module,exports){ + +},{"buffer":119}],98:[function(require,module,exports){ (function (Buffer){ function encryptByte (self, byteParam, decrypt) { var pad = self._cipher.encryptBlock(self._prev) @@ -26849,7 +27085,8 @@ exports.encrypt = function (self, chunk, decrypt) { } }).call(this,require("buffer").Buffer) -},{"buffer":116}],98:[function(require,module,exports){ + +},{"buffer":119}],99:[function(require,module,exports){ (function (Buffer){ var xor = require('buffer-xor') @@ -26884,7 +27121,8 @@ exports.encrypt = function (self, chunk) { } }).call(this,require("buffer").Buffer) -},{"buffer":116,"buffer-xor":115}],99:[function(require,module,exports){ + +},{"buffer":119,"buffer-xor":118}],100:[function(require,module,exports){ exports.encrypt = function (self, block) { return self._cipher.encryptBlock(block) } @@ -26892,7 +27130,7 @@ exports.decrypt = function (self, block) { return self._cipher.decryptBlock(block) } -},{}],100:[function(require,module,exports){ +},{}],101:[function(require,module,exports){ (function (Buffer){ var xor = require('buffer-xor') @@ -26912,7 +27150,8 @@ exports.encrypt = function (self, chunk) { } }).call(this,require("buffer").Buffer) -},{"buffer":116,"buffer-xor":115}],101:[function(require,module,exports){ + +},{"buffer":119,"buffer-xor":118}],102:[function(require,module,exports){ (function (Buffer){ var aes = require('./aes') var Transform = require('cipher-base') @@ -26941,7 +27180,8 @@ StreamCipher.prototype._final = function () { } }).call(this,require("buffer").Buffer) -},{"./aes":87,"buffer":116,"cipher-base":147,"inherits":263}],102:[function(require,module,exports){ + +},{"./aes":88,"buffer":119,"cipher-base":150,"inherits":559}],103:[function(require,module,exports){ var ebtk = require('evp_bytestokey') var aes = require('browserify-aes/browser') var DES = require('browserify-des') @@ -27016,7 +27256,7 @@ function getCiphers () { } exports.listCiphers = exports.getCiphers = getCiphers -},{"browserify-aes/browser":89,"browserify-aes/modes":93,"browserify-des":103,"browserify-des/modes":104,"evp_bytestokey":198}],103:[function(require,module,exports){ +},{"browserify-aes/browser":90,"browserify-aes/modes":94,"browserify-des":104,"browserify-des/modes":105,"evp_bytestokey":495}],104:[function(require,module,exports){ (function (Buffer){ var CipherBase = require('cipher-base') var des = require('des.js') @@ -27063,7 +27303,8 @@ DES.prototype._final = function () { } }).call(this,require("buffer").Buffer) -},{"buffer":116,"cipher-base":147,"des.js":170,"inherits":263}],104:[function(require,module,exports){ + +},{"buffer":119,"cipher-base":150,"des.js":467,"inherits":559}],105:[function(require,module,exports){ exports['des-ecb'] = { key: 8, iv: 0 @@ -27089,7 +27330,7 @@ exports['des-ede'] = { iv: 0 } -},{}],105:[function(require,module,exports){ +},{}],106:[function(require,module,exports){ (function (Buffer){ var bn = require('bn.js'); var randomBytes = require('randombytes'); @@ -27133,103 +27374,193 @@ function getr(priv) { } }).call(this,require("buffer").Buffer) -},{"bn.js":84,"buffer":116,"randombytes":369}],106:[function(require,module,exports){ -(function (Buffer){ -'use strict' -exports['RSA-SHA224'] = exports.sha224WithRSAEncryption = { - sign: 'rsa', - hash: 'sha224', - id: new Buffer('302d300d06096086480165030402040500041c', 'hex') -} -exports['RSA-SHA256'] = exports.sha256WithRSAEncryption = { - sign: 'rsa', - hash: 'sha256', - id: new Buffer('3031300d060960864801650304020105000420', 'hex') -} -exports['RSA-SHA384'] = exports.sha384WithRSAEncryption = { - sign: 'rsa', - hash: 'sha384', - id: new Buffer('3041300d060960864801650304020205000430', 'hex') -} -exports['RSA-SHA512'] = exports.sha512WithRSAEncryption = { - sign: 'rsa', - hash: 'sha512', - id: new Buffer('3051300d060960864801650304020305000440', 'hex') -} -exports['RSA-SHA1'] = { - sign: 'rsa', - hash: 'sha1', - id: new Buffer('3021300906052b0e03021a05000414', 'hex') -} -exports['ecdsa-with-SHA1'] = { - sign: 'ecdsa', - hash: 'sha1', - id: new Buffer('', 'hex') -} - -exports.DSA = exports['DSA-SHA1'] = exports['DSA-SHA'] = { - sign: 'dsa', - hash: 'sha1', - id: new Buffer('', 'hex') -} -exports['DSA-SHA224'] = exports['DSA-WITH-SHA224'] = { - sign: 'dsa', - hash: 'sha224', - id: new Buffer('', 'hex') -} -exports['DSA-SHA256'] = exports['DSA-WITH-SHA256'] = { - sign: 'dsa', - hash: 'sha256', - id: new Buffer('', 'hex') -} -exports['DSA-SHA384'] = exports['DSA-WITH-SHA384'] = { - sign: 'dsa', - hash: 'sha384', - id: new Buffer('', 'hex') -} -exports['DSA-SHA512'] = exports['DSA-WITH-SHA512'] = { - sign: 'dsa', - hash: 'sha512', - id: new Buffer('', 'hex') -} -exports['DSA-RIPEMD160'] = { - sign: 'dsa', - hash: 'rmd160', - id: new Buffer('', 'hex') -} -exports['RSA-RIPEMD160'] = exports.ripemd160WithRSA = { - sign: 'rsa', - hash: 'rmd160', - id: new Buffer('3021300906052b2403020105000414', 'hex') -} -exports['RSA-MD5'] = exports.md5WithRSAEncryption = { - sign: 'rsa', - hash: 'md5', - id: new Buffer('3020300c06082a864886f70d020505000410', 'hex') + +},{"bn.js":85,"buffer":119,"randombytes":662}],107:[function(require,module,exports){ +module.exports = require('./browser/algorithms.json') + +},{"./browser/algorithms.json":108}],108:[function(require,module,exports){ +module.exports={ + "sha224WithRSAEncryption": { + "sign": "rsa", + "hash": "sha224", + "id": "302d300d06096086480165030402040500041c" + }, + "RSA-SHA224": { + "sign": "ecdsa/rsa", + "hash": "sha224", + "id": "302d300d06096086480165030402040500041c" + }, + "sha256WithRSAEncryption": { + "sign": "rsa", + "hash": "sha256", + "id": "3031300d060960864801650304020105000420" + }, + "RSA-SHA256": { + "sign": "ecdsa/rsa", + "hash": "sha256", + "id": "3031300d060960864801650304020105000420" + }, + "sha384WithRSAEncryption": { + "sign": "rsa", + "hash": "sha384", + "id": "3041300d060960864801650304020205000430" + }, + "RSA-SHA384": { + "sign": "ecdsa/rsa", + "hash": "sha384", + "id": "3041300d060960864801650304020205000430" + }, + "sha512WithRSAEncryption": { + "sign": "rsa", + "hash": "sha512", + "id": "3051300d060960864801650304020305000440" + }, + "RSA-SHA512": { + "sign": "ecdsa/rsa", + "hash": "sha512", + "id": "3051300d060960864801650304020305000440" + }, + "RSA-SHA1": { + "sign": "rsa", + "hash": "sha1", + "id": "3021300906052b0e03021a05000414" + }, + "ecdsa-with-SHA1": { + "sign": "ecdsa", + "hash": "sha1", + "id": "" + }, + "sha256": { + "sign": "ecdsa", + "hash": "sha256", + "id": "" + }, + "sha224": { + "sign": "ecdsa", + "hash": "sha224", + "id": "" + }, + "sha384": { + "sign": "ecdsa", + "hash": "sha384", + "id": "" + }, + "sha512": { + "sign": "ecdsa", + "hash": "sha512", + "id": "" + }, + "DSA-SHA": { + "sign": "dsa", + "hash": "sha1", + "id": "" + }, + "DSA-SHA1": { + "sign": "dsa", + "hash": "sha1", + "id": "" + }, + "DSA": { + "sign": "dsa", + "hash": "sha1", + "id": "" + }, + "DSA-WITH-SHA224": { + "sign": "dsa", + "hash": "sha224", + "id": "" + }, + "DSA-SHA224": { + "sign": "dsa", + "hash": "sha224", + "id": "" + }, + "DSA-WITH-SHA256": { + "sign": "dsa", + "hash": "sha256", + "id": "" + }, + "DSA-SHA256": { + "sign": "dsa", + "hash": "sha256", + "id": "" + }, + "DSA-WITH-SHA384": { + "sign": "dsa", + "hash": "sha384", + "id": "" + }, + "DSA-SHA384": { + "sign": "dsa", + "hash": "sha384", + "id": "" + }, + "DSA-WITH-SHA512": { + "sign": "dsa", + "hash": "sha512", + "id": "" + }, + "DSA-SHA512": { + "sign": "dsa", + "hash": "sha512", + "id": "" + }, + "DSA-RIPEMD160": { + "sign": "dsa", + "hash": "rmd160", + "id": "" + }, + "ripemd160WithRSA": { + "sign": "rsa", + "hash": "rmd160", + "id": "3021300906052b2403020105000414" + }, + "RSA-RIPEMD160": { + "sign": "rsa", + "hash": "rmd160", + "id": "3021300906052b2403020105000414" + }, + "md5WithRSAEncryption": { + "sign": "rsa", + "hash": "md5", + "id": "3020300c06082a864886f70d020505000410" + }, + "RSA-MD5": { + "sign": "rsa", + "hash": "md5", + "id": "3020300c06082a864886f70d020505000410" + } } -}).call(this,require("buffer").Buffer) -},{"buffer":116}],107:[function(require,module,exports){ +},{}],109:[function(require,module,exports){ +module.exports={ + "1.3.132.0.10": "secp256k1", + "1.3.132.0.33": "p224", + "1.2.840.10045.3.1.1": "p192", + "1.2.840.10045.3.1.7": "p256", + "1.3.132.0.34": "p384", + "1.3.132.0.35": "p521" +} + +},{}],110:[function(require,module,exports){ (function (Buffer){ -var _algos = require('./algos') var createHash = require('create-hash') +var stream = require('stream') var inherits = require('inherits') var sign = require('./sign') -var stream = require('stream') var verify = require('./verify') -var algos = {} -Object.keys(_algos).forEach(function (key) { - algos[key] = algos[key.toLowerCase()] = _algos[key] +var algorithms = require('./algorithms.json') +Object.keys(algorithms).forEach(function (key) { + algorithms[key].id = new Buffer(algorithms[key].id, 'hex') + algorithms[key.toLowerCase()] = algorithms[key] }) function Sign (algorithm) { stream.Writable.call(this) - var data = algos[algorithm] - if (!data) { - throw new Error('Unknown message digest') - } + var data = algorithms[algorithm] + if (!data) throw new Error('Unknown message digest') this._hashType = data.hash this._hash = createHash(data.hash) @@ -27244,9 +27575,7 @@ Sign.prototype._write = function _write (data, _, done) { } Sign.prototype.update = function update (data, enc) { - if (typeof data === 'string') { - data = new Buffer(data, enc) - } + if (typeof data === 'string') data = new Buffer(data, enc) this._hash.update(data) return this @@ -27255,7 +27584,7 @@ Sign.prototype.update = function update (data, enc) { Sign.prototype.sign = function signMethod (key, enc) { this.end() var hash = this._hash.digest() - var sig = sign(Buffer.concat([this._tag, hash]), key, this._hashType, this._signType) + var sig = sign(hash, key, this._hashType, this._signType, this._tag) return enc ? sig.toString(enc) : sig } @@ -27263,10 +27592,8 @@ Sign.prototype.sign = function signMethod (key, enc) { function Verify (algorithm) { stream.Writable.call(this) - var data = algos[algorithm] - if (!data) { - throw new Error('Unknown message digest') - } + var data = algorithms[algorithm] + if (!data) throw new Error('Unknown message digest') this._hash = createHash(data.hash) this._tag = data.id @@ -27276,28 +27603,22 @@ inherits(Verify, stream.Writable) Verify.prototype._write = function _write (data, _, done) { this._hash.update(data) - done() } Verify.prototype.update = function update (data, enc) { - if (typeof data === 'string') { - data = new Buffer(data, enc) - } + if (typeof data === 'string') data = new Buffer(data, enc) this._hash.update(data) return this } Verify.prototype.verify = function verifyMethod (key, sig, enc) { - if (typeof sig === 'string') { - sig = new Buffer(sig, enc) - } + if (typeof sig === 'string') sig = new Buffer(sig, enc) this.end() var hash = this._hash.digest() - - return verify(sig, Buffer.concat([this._tag, hash]), key, this._signType) + return verify(sig, hash, key, this._signType, this._tag) } function createSign (algorithm) { @@ -27316,57 +27637,36 @@ module.exports = { } }).call(this,require("buffer").Buffer) -},{"./algos":106,"./sign":109,"./verify":110,"buffer":116,"create-hash":152,"inherits":263,"stream":393}],108:[function(require,module,exports){ -'use strict' -exports['1.3.132.0.10'] = 'secp256k1' -exports['1.3.132.0.33'] = 'p224' - -exports['1.2.840.10045.3.1.1'] = 'p192' - -exports['1.2.840.10045.3.1.7'] = 'p256' - -exports['1.3.132.0.34'] = 'p384' - -exports['1.3.132.0.35'] = 'p521' - -},{}],109:[function(require,module,exports){ +},{"./algorithms.json":108,"./sign":111,"./verify":112,"buffer":119,"create-hash":449,"inherits":559,"stream":688}],111:[function(require,module,exports){ (function (Buffer){ // much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js var createHmac = require('create-hmac') var crt = require('browserify-rsa') -var curves = require('./curves') -var elliptic = require('elliptic') -var parseKeys = require('parse-asn1') - +var EC = require('elliptic').ec var BN = require('bn.js') -var EC = elliptic.ec +var parseKeys = require('parse-asn1') +var curves = require('./curves.json') -function sign (hash, key, hashType, signType) { +function sign (hash, key, hashType, signType, tag) { var priv = parseKeys(key) if (priv.curve) { - if (signType !== 'ecdsa') throw new Error('wrong private key type') - + // rsa keys can be interpreted as ecdsa ones in openssl + if (signType !== 'ecdsa' && signType !== 'ecdsa/rsa') throw new Error('wrong private key type') return ecSign(hash, priv) } else if (priv.type === 'dsa') { - if (signType !== 'dsa') { - throw new Error('wrong private key type') - } + if (signType !== 'dsa') throw new Error('wrong private key type') return dsaSign(hash, priv, hashType) } else { - if (signType !== 'rsa') throw new Error('wrong private key type') + if (signType !== 'rsa' && signType !== 'ecdsa/rsa') throw new Error('wrong private key type') } - + hash = Buffer.concat([tag, hash]) var len = priv.modulus.byteLength() var pad = [ 0, 1 ] - while (hash.length + pad.length + 1 < len) { - pad.push(0xff) - } + while (hash.length + pad.length + 1 < len) pad.push(0xff) pad.push(0x00) var i = -1 - while (++i < hash.length) { - pad.push(hash[i]) - } + while (++i < hash.length) pad.push(hash[i]) var out = crt(pad, priv) return out @@ -27377,9 +27677,7 @@ function ecSign (hash, priv) { if (!curveId) throw new Error('unknown curve ' + priv.curve.join('.')) var curve = new EC(curveId) - var key = curve.genKeyPair() - - key._importPrivate(priv.privateKey) + var key = curve.keyFromPrivate(priv.privateKey) var out = key.sign(hash) return new Buffer(out.toDER()) @@ -27399,7 +27697,7 @@ function dsaSign (hash, priv, algo) { k = makeKey(q, kv, algo) r = makeR(g, k, p, q) s = k.invm(q).imul(H.add(x.mul(r))).mod(q) - if (!s.cmpn(0)) { + if (s.cmpn(0) === 0) { s = false r = new BN(0) } @@ -27412,13 +27710,8 @@ function toDER (r, s) { s = s.toArray() // Pad values - if (r[0] & 0x80) { - r = [ 0 ].concat(r) - } - // Pad values - if (s[0] & 0x80) { - s = [0].concat(s) - } + if (r[0] & 0x80) r = [ 0 ].concat(r) + if (s[0] & 0x80) s = [ 0 ].concat(s) var total = r.length + s.length + 4 var res = [ 0x30, total, 0x02, r.length ] @@ -27431,7 +27724,7 @@ function getKey (x, q, hash, algo) { if (x.length < q.byteLength()) { var zeros = new Buffer(q.byteLength() - x.length) zeros.fill(0) - x = Buffer.concat([zeros, x]) + x = Buffer.concat([ zeros, x ]) } var hlen = hash.length var hbits = bits2octets(hash, q) @@ -27439,36 +27732,17 @@ function getKey (x, q, hash, algo) { v.fill(1) var k = new Buffer(hlen) k.fill(0) - k = createHmac(algo, k) - .update(v) - .update(new Buffer([0])) - .update(x) - .update(hbits) - .digest() - v = createHmac(algo, k) - .update(v) - .digest() - k = createHmac(algo, k) - .update(v) - .update(new Buffer([1])) - .update(x) - .update(hbits) - .digest() - v = createHmac(algo, k) - .update(v) - .digest() - return { - k: k, - v: v - } + k = createHmac(algo, k).update(v).update(new Buffer([ 0 ])).update(x).update(hbits).digest() + v = createHmac(algo, k).update(v).digest() + k = createHmac(algo, k).update(v).update(new Buffer([ 1 ])).update(x).update(hbits).digest() + v = createHmac(algo, k).update(v).digest() + return { k: k, v: v } } function bits2int (obits, q) { var bits = new BN(obits) var shift = (obits.length << 3) - q.bitLength() - if (shift > 0) { - bits.ishrn(shift) - } + if (shift > 0) bits.ishrn(shift) return bits } @@ -27479,32 +27753,26 @@ function bits2octets (bits, q) { if (out.length < q.byteLength()) { var zeros = new Buffer(q.byteLength() - out.length) zeros.fill(0) - out = Buffer.concat([zeros, out]) + out = Buffer.concat([ zeros, out ]) } return out } function makeKey (q, kv, algo) { - var t, k + var t + var k do { - t = new Buffer('') + t = new Buffer(0) while (t.length * 8 < q.bitLength()) { - kv.v = createHmac(algo, kv.k) - .update(kv.v) - .digest() - t = Buffer.concat([t, kv.v]) + kv.v = createHmac(algo, kv.k).update(kv.v).digest() + t = Buffer.concat([ t, kv.v ]) } k = bits2int(t, q) - kv.k = createHmac(algo, kv.k) - .update(kv.v) - .update(new Buffer([0])) - .digest() - kv.v = createHmac(algo, kv.k) - .update(kv.v) - .digest() + kv.k = createHmac(algo, kv.k).update(kv.v).update(new Buffer([ 0 ])).digest() + kv.v = createHmac(algo, kv.k).update(kv.v).digest() } while (k.cmp(q) !== -1) return k @@ -27519,33 +27787,28 @@ module.exports.getKey = getKey module.exports.makeKey = makeKey }).call(this,require("buffer").Buffer) -},{"./curves":108,"bn.js":84,"browserify-rsa":105,"buffer":116,"create-hmac":155,"elliptic":180,"parse-asn1":331}],110:[function(require,module,exports){ + +},{"./curves.json":109,"bn.js":85,"browserify-rsa":106,"buffer":119,"create-hmac":452,"elliptic":477,"parse-asn1":624}],112:[function(require,module,exports){ (function (Buffer){ // much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js -var curves = require('./curves') -var elliptic = require('elliptic') -var parseKeys = require('parse-asn1') - var BN = require('bn.js') -var EC = elliptic.ec +var EC = require('elliptic').ec +var parseKeys = require('parse-asn1') +var curves = require('./curves.json') -function verify (sig, hash, key, signType) { +function verify (sig, hash, key, signType, tag) { var pub = parseKeys(key) if (pub.type === 'ec') { - if (signType !== 'ecdsa') { - throw new Error('wrong public key type') - } + // rsa keys can be interpreted as ecdsa ones in openssl + if (signType !== 'ecdsa' && signType !== 'ecdsa/rsa') throw new Error('wrong public key type') return ecVerify(sig, hash, pub) } else if (pub.type === 'dsa') { - if (signType !== 'dsa') { - throw new Error('wrong public key type') - } + if (signType !== 'dsa') throw new Error('wrong public key type') return dsaVerify(sig, hash, pub) } else { - if (signType !== 'rsa') { - throw new Error('wrong public key type') - } + if (signType !== 'rsa' && signType !== 'ecdsa/rsa') throw new Error('wrong public key type') } + hash = Buffer.concat([tag, hash]) var len = pub.modulus.byteLength() var pad = [ 1 ] var padNum = 0 @@ -27563,21 +27826,13 @@ function verify (sig, hash, key, signType) { sig = new BN(sig).toRed(red) sig = sig.redPow(new BN(pub.publicExponent)) - sig = new Buffer(sig.fromRed().toArray()) - var out = 0 - if (padNum < 8) { - out = 1 - } + var out = padNum < 8 ? 1 : 0 len = Math.min(sig.length, pad.length) - if (sig.length !== pad.length) { - out = 1 - } + if (sig.length !== pad.length) out = 1 i = -1 - while (++i < len) { - out |= (sig[i] ^ pad[i]) - } + while (++i < len) out |= sig[i] ^ pad[i] return out === 0 } @@ -27606,27 +27861,22 @@ function dsaVerify (sig, hash, pub) { var v = g.toRed(montp) .redPow(new BN(hash).mul(w).mod(q)) .fromRed() - .mul( - y.toRed(montp) - .redPow(r.mul(w).mod(q)) - .fromRed() - ).mod(p).mod(q) - return !v.cmp(r) + .mul(y.toRed(montp).redPow(r.mul(w).mod(q)).fromRed()) + .mod(p) + .mod(q) + return v.cmp(r) === 0 } function checkValue (b, q) { - if (b.cmpn(0) <= 0) { - throw new Error('invalid sig') - } - if (b.cmp(q) >= q) { - throw new Error('invalid sig') - } + if (b.cmpn(0) <= 0) throw new Error('invalid sig') + if (b.cmp(q) >= q) throw new Error('invalid sig') } module.exports = verify }).call(this,require("buffer").Buffer) -},{"./curves":108,"bn.js":84,"buffer":116,"elliptic":180,"parse-asn1":331}],111:[function(require,module,exports){ + +},{"./curves.json":109,"bn.js":85,"buffer":119,"elliptic":477,"parse-asn1":624}],113:[function(require,module,exports){ (function (process,Buffer){ var msg = require('pako/lib/zlib/messages'); var zstream = require('pako/lib/zlib/zstream'); @@ -27866,7 +28116,8 @@ Zlib.prototype._error = function(status) { exports.Zlib = Zlib; }).call(this,require('_process'),require("buffer").Buffer) -},{"_process":357,"buffer":116,"pako/lib/zlib/constants":318,"pako/lib/zlib/deflate.js":320,"pako/lib/zlib/inflate.js":322,"pako/lib/zlib/messages":324,"pako/lib/zlib/zstream":326}],112:[function(require,module,exports){ + +},{"_process":650,"buffer":119,"pako/lib/zlib/constants":611,"pako/lib/zlib/deflate.js":613,"pako/lib/zlib/inflate.js":615,"pako/lib/zlib/messages":617,"pako/lib/zlib/zstream":619}],114:[function(require,module,exports){ (function (process,Buffer){ // Copyright Joyent, Inc. and other Node contributors. // @@ -28480,9 +28731,233 @@ util.inherits(InflateRaw, Zlib); util.inherits(Unzip, Zlib); }).call(this,require('_process'),require("buffer").Buffer) -},{"./binding":111,"_process":357,"_stream_transform":379,"assert":80,"buffer":116,"util":403}],113:[function(require,module,exports){ -arguments[4][86][0].apply(exports,arguments) -},{"dup":86}],114:[function(require,module,exports){ + +},{"./binding":113,"_process":650,"_stream_transform":673,"assert":80,"buffer":119,"util":698}],115:[function(require,module,exports){ +arguments[4][87][0].apply(exports,arguments) +},{"dup":87}],116:[function(require,module,exports){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +var Buffer = require('buffer').Buffer; + +var isBufferEncoding = Buffer.isEncoding + || function(encoding) { + switch (encoding && encoding.toLowerCase()) { + case 'hex': case 'utf8': case 'utf-8': case 'ascii': case 'binary': case 'base64': case 'ucs2': case 'ucs-2': case 'utf16le': case 'utf-16le': case 'raw': return true; + default: return false; + } + } + + +function assertEncoding(encoding) { + if (encoding && !isBufferEncoding(encoding)) { + throw new Error('Unknown encoding: ' + encoding); + } +} + +// StringDecoder provides an interface for efficiently splitting a series of +// buffers into a series of JS strings without breaking apart multi-byte +// characters. CESU-8 is handled as part of the UTF-8 encoding. +// +// @TODO Handling all encodings inside a single object makes it very difficult +// to reason about this code, so it should be split up in the future. +// @TODO There should be a utf8-strict encoding that rejects invalid UTF-8 code +// points as used by CESU-8. +var StringDecoder = exports.StringDecoder = function(encoding) { + this.encoding = (encoding || 'utf8').toLowerCase().replace(/[-_]/, ''); + assertEncoding(encoding); + switch (this.encoding) { + case 'utf8': + // CESU-8 represents each of Surrogate Pair by 3-bytes + this.surrogateSize = 3; + break; + case 'ucs2': + case 'utf16le': + // UTF-16 represents each of Surrogate Pair by 2-bytes + this.surrogateSize = 2; + this.detectIncompleteChar = utf16DetectIncompleteChar; + break; + case 'base64': + // Base-64 stores 3 bytes in 4 chars, and pads the remainder. + this.surrogateSize = 3; + this.detectIncompleteChar = base64DetectIncompleteChar; + break; + default: + this.write = passThroughWrite; + return; + } + + // Enough space to store all bytes of a single character. UTF-8 needs 4 + // bytes, but CESU-8 may require up to 6 (3 bytes per surrogate). + this.charBuffer = new Buffer(6); + // Number of bytes received for the current incomplete multi-byte character. + this.charReceived = 0; + // Number of bytes expected for the current incomplete multi-byte character. + this.charLength = 0; +}; + + +// write decodes the given buffer and returns it as JS string that is +// guaranteed to not contain any partial multi-byte characters. Any partial +// character found at the end of the buffer is buffered up, and will be +// returned when calling write again with the remaining bytes. +// +// Note: Converting a Buffer containing an orphan surrogate to a String +// currently works, but converting a String to a Buffer (via `new Buffer`, or +// Buffer#write) will replace incomplete surrogates with the unicode +// replacement character. See https://codereview.chromium.org/121173009/ . +StringDecoder.prototype.write = function(buffer) { + var charStr = ''; + // if our last write ended with an incomplete multibyte character + while (this.charLength) { + // determine how many remaining bytes this buffer has to offer for this char + var available = (buffer.length >= this.charLength - this.charReceived) ? + this.charLength - this.charReceived : + buffer.length; + + // add the new bytes to the char buffer + buffer.copy(this.charBuffer, this.charReceived, 0, available); + this.charReceived += available; + + if (this.charReceived < this.charLength) { + // still not enough chars in this buffer? wait for more ... + return ''; + } + + // remove bytes belonging to the current character from the buffer + buffer = buffer.slice(available, buffer.length); + + // get the character that was split + charStr = this.charBuffer.slice(0, this.charLength).toString(this.encoding); + + // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character + var charCode = charStr.charCodeAt(charStr.length - 1); + if (charCode >= 0xD800 && charCode <= 0xDBFF) { + this.charLength += this.surrogateSize; + charStr = ''; + continue; + } + this.charReceived = this.charLength = 0; + + // if there are no more bytes in this buffer, just emit our char + if (buffer.length === 0) { + return charStr; + } + break; + } + + // determine and set charLength / charReceived + this.detectIncompleteChar(buffer); + + var end = buffer.length; + if (this.charLength) { + // buffer the incomplete character bytes we got + buffer.copy(this.charBuffer, 0, buffer.length - this.charReceived, end); + end -= this.charReceived; + } + + charStr += buffer.toString(this.encoding, 0, end); + + var end = charStr.length - 1; + var charCode = charStr.charCodeAt(end); + // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character + if (charCode >= 0xD800 && charCode <= 0xDBFF) { + var size = this.surrogateSize; + this.charLength += size; + this.charReceived += size; + this.charBuffer.copy(this.charBuffer, size, 0, size); + buffer.copy(this.charBuffer, 0, 0, size); + return charStr.substring(0, end); + } + + // or just emit the charStr + return charStr; +}; + +// detectIncompleteChar determines if there is an incomplete UTF-8 character at +// the end of the given buffer. If so, it sets this.charLength to the byte +// length that character, and sets this.charReceived to the number of bytes +// that are available for this character. +StringDecoder.prototype.detectIncompleteChar = function(buffer) { + // determine how many bytes we have to check at the end of this buffer + var i = (buffer.length >= 3) ? 3 : buffer.length; + + // Figure out if one of the last i bytes of our buffer announces an + // incomplete char. + for (; i > 0; i--) { + var c = buffer[buffer.length - i]; + + // See http://en.wikipedia.org/wiki/UTF-8#Description + + // 110XXXXX + if (i == 1 && c >> 5 == 0x06) { + this.charLength = 2; + break; + } + + // 1110XXXX + if (i <= 2 && c >> 4 == 0x0E) { + this.charLength = 3; + break; + } + + // 11110XXX + if (i <= 3 && c >> 3 == 0x1E) { + this.charLength = 4; + break; + } + } + this.charReceived = i; +}; + +StringDecoder.prototype.end = function(buffer) { + var res = ''; + if (buffer && buffer.length) + res = this.write(buffer); + + if (this.charReceived) { + var cr = this.charReceived; + var buf = this.charBuffer; + var enc = this.encoding; + res += buf.slice(0, cr).toString(enc); + } + + return res; +}; + +function passThroughWrite(buffer) { + return buffer.toString(this.encoding); +} + +function utf16DetectIncompleteChar(buffer) { + this.charReceived = buffer.length % 2; + this.charLength = this.charReceived ? 2 : 0; +} + +function base64DetectIncompleteChar(buffer) { + this.charReceived = buffer.length % 3; + this.charLength = this.charReceived ? 3 : 0; +} + +},{"buffer":119}],117:[function(require,module,exports){ (function (global){ 'use strict'; @@ -28594,7 +29069,8 @@ exports.allocUnsafeSlow = function allocUnsafeSlow(size) { } }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"buffer":116}],115:[function(require,module,exports){ + +},{"buffer":119}],118:[function(require,module,exports){ (function (Buffer){ module.exports = function xor (a, b) { var length = Math.min(a.length, b.length) @@ -28608,7 +29084,8 @@ module.exports = function xor (a, b) { } }).call(this,require("buffer").Buffer) -},{"buffer":116}],116:[function(require,module,exports){ + +},{"buffer":119}],119:[function(require,module,exports){ /*! * The buffer module from node.js, for the browser. * @@ -28863,8 +29340,8 @@ function fromObject (obj) { } if (obj) { - if (ArrayBuffer.isView(obj) || 'length' in obj) { - if (typeof obj.length !== 'number' || isnan(obj.length)) { + if (isArrayBufferView(obj) || 'length' in obj) { + if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) { return createBuffer(0) } return fromArrayLike(obj) @@ -28975,7 +29452,7 @@ function byteLength (string, encoding) { if (Buffer.isBuffer(string)) { return string.length } - if (ArrayBuffer.isView(string) || string instanceof ArrayBuffer) { + if (isArrayBufferView(string) || string instanceof ArrayBuffer) { return string.byteLength } if (typeof string !== 'string') { @@ -29241,7 +29718,7 @@ function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) { byteOffset = -0x80000000 } byteOffset = +byteOffset // Coerce to Number. - if (isNaN(byteOffset)) { + if (numberIsNaN(byteOffset)) { // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer byteOffset = dir ? 0 : (buffer.length - 1) } @@ -29372,7 +29849,7 @@ function hexWrite (buf, string, offset, length) { } for (var i = 0; i < length; ++i) { var parsed = parseInt(string.substr(i * 2, 2), 16) - if (isNaN(parsed)) return i + if (numberIsNaN(parsed)) return i buf[offset + i] = parsed } return i @@ -30175,7 +30652,7 @@ var INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g function base64clean (str) { // Node strips out invalid characters like \n and \t from the string, base64-js does not - str = stringtrim(str).replace(INVALID_BASE64_RE, '') + str = str.trim().replace(INVALID_BASE64_RE, '') // Node converts strings with length < 2 to '' if (str.length < 2) return '' // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not @@ -30185,11 +30662,6 @@ function base64clean (str) { return str } -function stringtrim (str) { - if (str.trim) return str.trim() - return str.replace(/^\s+|\s+$/g, '') -} - function toHex (n) { if (n < 16) return '0' + n.toString(16) return n.toString(16) @@ -30312,11 +30784,16 @@ function blitBuffer (src, dst, offset, length) { return i } -function isnan (val) { - return val !== val // eslint-disable-line no-self-compare +// Node 0.10 supports `ArrayBuffer` but lacks `ArrayBuffer.isView` +function isArrayBufferView (obj) { + return (typeof ArrayBuffer.isView === 'function') && ArrayBuffer.isView(obj) } -},{"base64-js":83,"ieee754":256}],117:[function(require,module,exports){ +function numberIsNaN (obj) { + return obj !== obj // eslint-disable-line no-self-compare +} + +},{"base64-js":84,"ieee754":552}],120:[function(require,module,exports){ (function (Buffer){ var spawn = require('cross-spawn-async'); var createError = require('err-code'); @@ -30419,10 +30896,11 @@ function buffered(command, args, options, callback) { module.exports = buffered; }).call(this,require("buffer").Buffer) -},{"buffer":116,"cross-spawn-async":156,"err-code":196,"q":368}],118:[function(require,module,exports){ + +},{"buffer":119,"cross-spawn-async":453,"err-code":493,"q":661}],121:[function(require,module,exports){ module.exports = require('./lib/chai'); -},{"./lib/chai":119}],119:[function(require,module,exports){ +},{"./lib/chai":122}],122:[function(require,module,exports){ /*! * chai * Copyright(c) 2011-2014 Jake Luer @@ -30517,7 +30995,7 @@ exports.use(should); var assert = require('./chai/interface/assert'); exports.use(assert); -},{"./chai/assertion":120,"./chai/config":121,"./chai/core/assertions":122,"./chai/interface/assert":123,"./chai/interface/expect":124,"./chai/interface/should":125,"./chai/utils":139,"assertion-error":81}],120:[function(require,module,exports){ +},{"./chai/assertion":123,"./chai/config":124,"./chai/core/assertions":125,"./chai/interface/assert":126,"./chai/interface/expect":127,"./chai/interface/should":128,"./chai/utils":142,"assertion-error":81}],123:[function(require,module,exports){ /*! * chai * http://chaijs.com @@ -30650,7 +31128,7 @@ module.exports = function (_chai, util) { }); }; -},{"./config":121}],121:[function(require,module,exports){ +},{"./config":124}],124:[function(require,module,exports){ module.exports = { /** @@ -30707,7 +31185,7 @@ module.exports = { }; -},{}],122:[function(require,module,exports){ +},{}],125:[function(require,module,exports){ /*! * chai * http://chaijs.com @@ -32569,7 +33047,7 @@ module.exports = function (chai, _) { }); }; -},{}],123:[function(require,module,exports){ +},{}],126:[function(require,module,exports){ /*! * chai * Copyright(c) 2011-2014 Jake Luer @@ -34216,7 +34694,7 @@ module.exports = function (chai, util) { ('isNotFrozen', 'notFrozen'); }; -},{}],124:[function(require,module,exports){ +},{}],127:[function(require,module,exports){ /*! * chai * Copyright(c) 2011-2014 Jake Luer @@ -34252,7 +34730,7 @@ module.exports = function (chai, util) { }; }; -},{}],125:[function(require,module,exports){ +},{}],128:[function(require,module,exports){ /*! * chai * Copyright(c) 2011-2014 Jake Luer @@ -34455,7 +34933,7 @@ module.exports = function (chai, util) { chai.Should = loadShould; }; -},{}],126:[function(require,module,exports){ +},{}],129:[function(require,module,exports){ /*! * Chai - addChainingMethod utility * Copyright(c) 2012-2014 Jake Luer @@ -34569,7 +35047,7 @@ module.exports = function (ctx, name, method, chainingBehavior) { }); }; -},{"../config":121,"./flag":130,"./transferFlags":146}],127:[function(require,module,exports){ +},{"../config":124,"./flag":133,"./transferFlags":149}],130:[function(require,module,exports){ /*! * Chai - addMethod utility * Copyright(c) 2012-2014 Jake Luer @@ -34615,7 +35093,7 @@ module.exports = function (ctx, name, method) { }; }; -},{"../config":121,"./flag":130}],128:[function(require,module,exports){ +},{"../config":124,"./flag":133}],131:[function(require,module,exports){ /*! * Chai - addProperty utility * Copyright(c) 2012-2014 Jake Luer @@ -34665,7 +35143,7 @@ module.exports = function (ctx, name, getter) { }); }; -},{"../config":121,"./flag":130}],129:[function(require,module,exports){ +},{"../config":124,"./flag":133}],132:[function(require,module,exports){ /*! * Chai - expectTypes utility * Copyright(c) 2012-2014 Jake Luer @@ -34709,7 +35187,7 @@ module.exports = function (obj, types) { } }; -},{"./flag":130,"assertion-error":81,"type-detect":397}],130:[function(require,module,exports){ +},{"./flag":133,"assertion-error":81,"type-detect":692}],133:[function(require,module,exports){ /*! * Chai - flag utility * Copyright(c) 2012-2014 Jake Luer @@ -34744,7 +35222,7 @@ module.exports = function (obj, key, value) { } }; -},{}],131:[function(require,module,exports){ +},{}],134:[function(require,module,exports){ /*! * Chai - getActual utility * Copyright(c) 2012-2014 Jake Luer @@ -34766,7 +35244,7 @@ module.exports = function (obj, args) { return args.length > 4 ? args[4] : obj._obj; }; -},{}],132:[function(require,module,exports){ +},{}],135:[function(require,module,exports){ /*! * Chai - getEnumerableProperties utility * Copyright(c) 2012-2014 Jake Luer @@ -34794,7 +35272,7 @@ module.exports = function getEnumerableProperties(object) { return result; }; -},{}],133:[function(require,module,exports){ +},{}],136:[function(require,module,exports){ /*! * Chai - message composition utility * Copyright(c) 2012-2014 Jake Luer @@ -34847,7 +35325,7 @@ module.exports = function (obj, args) { return flagMsg ? flagMsg + ': ' + msg : msg; }; -},{"./flag":130,"./getActual":131,"./inspect":140,"./objDisplay":141}],134:[function(require,module,exports){ +},{"./flag":133,"./getActual":134,"./inspect":143,"./objDisplay":144}],137:[function(require,module,exports){ /*! * Chai - getName utility * Copyright(c) 2012-2014 Jake Luer @@ -34871,7 +35349,7 @@ module.exports = function (func) { return match && match[1] ? match[1] : ""; }; -},{}],135:[function(require,module,exports){ +},{}],138:[function(require,module,exports){ /*! * Chai - getPathInfo utility * Copyright(c) 2012-2014 Jake Luer @@ -34984,7 +35462,7 @@ function _getPathValue (parsed, obj, index) { return res; } -},{"./hasProperty":138}],136:[function(require,module,exports){ +},{"./hasProperty":141}],139:[function(require,module,exports){ /*! * Chai - getPathValue utility * Copyright(c) 2012-2014 Jake Luer @@ -35029,7 +35507,7 @@ module.exports = function(path, obj) { return info.value; }; -},{"./getPathInfo":135}],137:[function(require,module,exports){ +},{"./getPathInfo":138}],140:[function(require,module,exports){ /*! * Chai - getProperties utility * Copyright(c) 2012-2014 Jake Luer @@ -35067,7 +35545,7 @@ module.exports = function getProperties(object) { return result; }; -},{}],138:[function(require,module,exports){ +},{}],141:[function(require,module,exports){ /*! * Chai - hasProperty utility * Copyright(c) 2012-2014 Jake Luer @@ -35133,7 +35611,7 @@ module.exports = function hasProperty(name, obj) { return name in obj; }; -},{"type-detect":397}],139:[function(require,module,exports){ +},{"type-detect":692}],142:[function(require,module,exports){ /*! * chai * Copyright(c) 2011 Jake Luer @@ -35265,7 +35743,7 @@ exports.addChainableMethod = require('./addChainableMethod'); exports.overwriteChainableMethod = require('./overwriteChainableMethod'); -},{"./addChainableMethod":126,"./addMethod":127,"./addProperty":128,"./expectTypes":129,"./flag":130,"./getActual":131,"./getMessage":133,"./getName":134,"./getPathInfo":135,"./getPathValue":136,"./hasProperty":138,"./inspect":140,"./objDisplay":141,"./overwriteChainableMethod":142,"./overwriteMethod":143,"./overwriteProperty":144,"./test":145,"./transferFlags":146,"deep-eql":166,"type-detect":397}],140:[function(require,module,exports){ +},{"./addChainableMethod":129,"./addMethod":130,"./addProperty":131,"./expectTypes":132,"./flag":133,"./getActual":134,"./getMessage":136,"./getName":137,"./getPathInfo":138,"./getPathValue":139,"./hasProperty":141,"./inspect":143,"./objDisplay":144,"./overwriteChainableMethod":145,"./overwriteMethod":146,"./overwriteProperty":147,"./test":148,"./transferFlags":149,"deep-eql":463,"type-detect":692}],143:[function(require,module,exports){ // This is (almost) directly from Node.js utils // https://github.com/joyent/node/blob/f8c335d0caf47f16d31413f89aa28eda3878e3aa/lib/util.js @@ -35602,7 +36080,7 @@ function objectToString(o) { return Object.prototype.toString.call(o); } -},{"./getEnumerableProperties":132,"./getName":134,"./getProperties":137}],141:[function(require,module,exports){ +},{"./getEnumerableProperties":135,"./getName":137,"./getProperties":140}],144:[function(require,module,exports){ /*! * Chai - flag utility * Copyright(c) 2012-2014 Jake Luer @@ -35654,7 +36132,7 @@ module.exports = function (obj) { } }; -},{"../config":121,"./inspect":140}],142:[function(require,module,exports){ +},{"../config":124,"./inspect":143}],145:[function(require,module,exports){ /*! * Chai - overwriteChainableMethod utility * Copyright(c) 2012-2014 Jake Luer @@ -35710,7 +36188,7 @@ module.exports = function (ctx, name, method, chainingBehavior) { }; }; -},{}],143:[function(require,module,exports){ +},{}],146:[function(require,module,exports){ /*! * Chai - overwriteMethod utility * Copyright(c) 2012-2014 Jake Luer @@ -35764,7 +36242,7 @@ module.exports = function (ctx, name, method) { } }; -},{}],144:[function(require,module,exports){ +},{}],147:[function(require,module,exports){ /*! * Chai - overwriteProperty utility * Copyright(c) 2012-2014 Jake Luer @@ -35821,7 +36299,7 @@ module.exports = function (ctx, name, getter) { }); }; -},{}],145:[function(require,module,exports){ +},{}],148:[function(require,module,exports){ /*! * Chai - test utility * Copyright(c) 2012-2014 Jake Luer @@ -35851,7 +36329,7 @@ module.exports = function (obj, args) { return negate ? !expr : expr; }; -},{"./flag":130}],146:[function(require,module,exports){ +},{"./flag":133}],149:[function(require,module,exports){ /*! * Chai - transferFlags utility * Copyright(c) 2012-2014 Jake Luer @@ -35898,7 +36376,7 @@ module.exports = function (assertion, object, includeAll) { } }; -},{}],147:[function(require,module,exports){ +},{}],150:[function(require,module,exports){ (function (Buffer){ var Transform = require('stream').Transform var inherits = require('inherits') @@ -35992,7 +36470,8 @@ CipherBase.prototype._toString = function (value, enc, fin) { } }).call(this,require("buffer").Buffer) -},{"buffer":116,"inherits":263,"stream":393,"string_decoder":395}],148:[function(require,module,exports){ + +},{"buffer":119,"inherits":559,"stream":688,"string_decoder":116}],151:[function(require,module,exports){ (function (Buffer){ var Writable = require('readable-stream').Writable var inherits = require('inherits') @@ -36010,347 +36489,6402 @@ function ConcatStream(opts, cb) { cb = opts opts = {} } - if (!opts) opts = {} + if (!opts) opts = {} + + var encoding = opts.encoding + var shouldInferEncoding = false + + if (!encoding) { + shouldInferEncoding = true + } else { + encoding = String(encoding).toLowerCase() + if (encoding === 'u8' || encoding === 'uint8') { + encoding = 'uint8array' + } + } + + Writable.call(this, { objectMode: true }) + + this.encoding = encoding + this.shouldInferEncoding = shouldInferEncoding + + if (cb) this.on('finish', function () { cb(this.getBody()) }) + this.body = [] +} + +module.exports = ConcatStream +inherits(ConcatStream, Writable) + +ConcatStream.prototype._write = function(chunk, enc, next) { + this.body.push(chunk) + next() +} + +ConcatStream.prototype.inferEncoding = function (buff) { + var firstBuffer = buff === undefined ? this.body[0] : buff; + if (Buffer.isBuffer(firstBuffer)) return 'buffer' + if (typeof Uint8Array !== 'undefined' && firstBuffer instanceof Uint8Array) return 'uint8array' + if (Array.isArray(firstBuffer)) return 'array' + if (typeof firstBuffer === 'string') return 'string' + if (Object.prototype.toString.call(firstBuffer) === "[object Object]") return 'object' + return 'buffer' +} + +ConcatStream.prototype.getBody = function () { + if (!this.encoding && this.body.length === 0) return [] + if (this.shouldInferEncoding) this.encoding = this.inferEncoding() + if (this.encoding === 'array') return arrayConcat(this.body) + if (this.encoding === 'string') return stringConcat(this.body) + if (this.encoding === 'buffer') return bufferConcat(this.body) + if (this.encoding === 'uint8array') return u8Concat(this.body) + return this.body +} + +var isArray = Array.isArray || function (arr) { + return Object.prototype.toString.call(arr) == '[object Array]' +} + +function isArrayish (arr) { + return /Array\]$/.test(Object.prototype.toString.call(arr)) +} + +function isBufferish (p) { + return typeof p === 'string' || isArrayish(p) || (p && typeof p.subarray === 'function') +} + +function stringConcat (parts) { + var strings = [] + var needsToString = false + for (var i = 0; i < parts.length; i++) { + var p = parts[i] + if (typeof p === 'string') { + strings.push(p) + } else if (Buffer.isBuffer(p)) { + strings.push(p) + } else if (isBufferish(p)) { + strings.push(new Buffer(p)) + } else { + strings.push(new Buffer(String(p))) + } + } + if (Buffer.isBuffer(parts[0])) { + strings = Buffer.concat(strings) + strings = strings.toString('utf8') + } else { + strings = strings.join('') + } + return strings +} + +function bufferConcat (parts) { + var bufs = [] + for (var i = 0; i < parts.length; i++) { + var p = parts[i] + if (Buffer.isBuffer(p)) { + bufs.push(p) + } else if (isBufferish(p)) { + bufs.push(new Buffer(p)) + } else { + bufs.push(new Buffer(String(p))) + } + } + return Buffer.concat(bufs) +} + +function arrayConcat (parts) { + var res = [] + for (var i = 0; i < parts.length; i++) { + res.push.apply(res, parts[i]) + } + return res +} + +function u8Concat (parts) { + var len = 0 + for (var i = 0; i < parts.length; i++) { + if (typeof parts[i] === 'string') { + parts[i] = new Buffer(parts[i]) + } + len += parts[i].length + } + var u8 = new U8(len) + for (var i = 0, offset = 0; i < parts.length; i++) { + var part = parts[i] + for (var j = 0; j < part.length; j++) { + u8[offset++] = part[j] + } + } + return u8 +} + +}).call(this,require("buffer").Buffer) + +},{"buffer":119,"inherits":559,"readable-stream":672,"typedarray":694}],152:[function(require,module,exports){ +module.exports={ + "O_RDONLY": 0, + "O_WRONLY": 1, + "O_RDWR": 2, + "S_IFMT": 61440, + "S_IFREG": 32768, + "S_IFDIR": 16384, + "S_IFCHR": 8192, + "S_IFBLK": 24576, + "S_IFIFO": 4096, + "S_IFLNK": 40960, + "S_IFSOCK": 49152, + "O_CREAT": 512, + "O_EXCL": 2048, + "O_NOCTTY": 131072, + "O_TRUNC": 1024, + "O_APPEND": 8, + "O_DIRECTORY": 1048576, + "O_NOFOLLOW": 256, + "O_SYNC": 128, + "O_SYMLINK": 2097152, + "O_NONBLOCK": 4, + "S_IRWXU": 448, + "S_IRUSR": 256, + "S_IWUSR": 128, + "S_IXUSR": 64, + "S_IRWXG": 56, + "S_IRGRP": 32, + "S_IWGRP": 16, + "S_IXGRP": 8, + "S_IRWXO": 7, + "S_IROTH": 4, + "S_IWOTH": 2, + "S_IXOTH": 1, + "E2BIG": 7, + "EACCES": 13, + "EADDRINUSE": 48, + "EADDRNOTAVAIL": 49, + "EAFNOSUPPORT": 47, + "EAGAIN": 35, + "EALREADY": 37, + "EBADF": 9, + "EBADMSG": 94, + "EBUSY": 16, + "ECANCELED": 89, + "ECHILD": 10, + "ECONNABORTED": 53, + "ECONNREFUSED": 61, + "ECONNRESET": 54, + "EDEADLK": 11, + "EDESTADDRREQ": 39, + "EDOM": 33, + "EDQUOT": 69, + "EEXIST": 17, + "EFAULT": 14, + "EFBIG": 27, + "EHOSTUNREACH": 65, + "EIDRM": 90, + "EILSEQ": 92, + "EINPROGRESS": 36, + "EINTR": 4, + "EINVAL": 22, + "EIO": 5, + "EISCONN": 56, + "EISDIR": 21, + "ELOOP": 62, + "EMFILE": 24, + "EMLINK": 31, + "EMSGSIZE": 40, + "EMULTIHOP": 95, + "ENAMETOOLONG": 63, + "ENETDOWN": 50, + "ENETRESET": 52, + "ENETUNREACH": 51, + "ENFILE": 23, + "ENOBUFS": 55, + "ENODATA": 96, + "ENODEV": 19, + "ENOENT": 2, + "ENOEXEC": 8, + "ENOLCK": 77, + "ENOLINK": 97, + "ENOMEM": 12, + "ENOMSG": 91, + "ENOPROTOOPT": 42, + "ENOSPC": 28, + "ENOSR": 98, + "ENOSTR": 99, + "ENOSYS": 78, + "ENOTCONN": 57, + "ENOTDIR": 20, + "ENOTEMPTY": 66, + "ENOTSOCK": 38, + "ENOTSUP": 45, + "ENOTTY": 25, + "ENXIO": 6, + "EOPNOTSUPP": 102, + "EOVERFLOW": 84, + "EPERM": 1, + "EPIPE": 32, + "EPROTO": 100, + "EPROTONOSUPPORT": 43, + "EPROTOTYPE": 41, + "ERANGE": 34, + "EROFS": 30, + "ESPIPE": 29, + "ESRCH": 3, + "ESTALE": 70, + "ETIME": 101, + "ETIMEDOUT": 60, + "ETXTBSY": 26, + "EWOULDBLOCK": 35, + "EXDEV": 18, + "SIGHUP": 1, + "SIGINT": 2, + "SIGQUIT": 3, + "SIGILL": 4, + "SIGTRAP": 5, + "SIGABRT": 6, + "SIGIOT": 6, + "SIGBUS": 10, + "SIGFPE": 8, + "SIGKILL": 9, + "SIGUSR1": 30, + "SIGSEGV": 11, + "SIGUSR2": 31, + "SIGPIPE": 13, + "SIGALRM": 14, + "SIGTERM": 15, + "SIGCHLD": 20, + "SIGCONT": 19, + "SIGSTOP": 17, + "SIGTSTP": 18, + "SIGTTIN": 21, + "SIGTTOU": 22, + "SIGURG": 16, + "SIGXCPU": 24, + "SIGXFSZ": 25, + "SIGVTALRM": 26, + "SIGPROF": 27, + "SIGWINCH": 28, + "SIGIO": 23, + "SIGSYS": 12, + "SSL_OP_ALL": 2147486719, + "SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION": 262144, + "SSL_OP_CIPHER_SERVER_PREFERENCE": 4194304, + "SSL_OP_CISCO_ANYCONNECT": 32768, + "SSL_OP_COOKIE_EXCHANGE": 8192, + "SSL_OP_CRYPTOPRO_TLSEXT_BUG": 2147483648, + "SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS": 2048, + "SSL_OP_EPHEMERAL_RSA": 0, + "SSL_OP_LEGACY_SERVER_CONNECT": 4, + "SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER": 32, + "SSL_OP_MICROSOFT_SESS_ID_BUG": 1, + "SSL_OP_MSIE_SSLV2_RSA_PADDING": 0, + "SSL_OP_NETSCAPE_CA_DN_BUG": 536870912, + "SSL_OP_NETSCAPE_CHALLENGE_BUG": 2, + "SSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG": 1073741824, + "SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG": 8, + "SSL_OP_NO_COMPRESSION": 131072, + "SSL_OP_NO_QUERY_MTU": 4096, + "SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION": 65536, + "SSL_OP_NO_SSLv2": 16777216, + "SSL_OP_NO_SSLv3": 33554432, + "SSL_OP_NO_TICKET": 16384, + "SSL_OP_NO_TLSv1": 67108864, + "SSL_OP_NO_TLSv1_1": 268435456, + "SSL_OP_NO_TLSv1_2": 134217728, + "SSL_OP_PKCS1_CHECK_1": 0, + "SSL_OP_PKCS1_CHECK_2": 0, + "SSL_OP_SINGLE_DH_USE": 1048576, + "SSL_OP_SINGLE_ECDH_USE": 524288, + "SSL_OP_SSLEAY_080_CLIENT_DH_BUG": 128, + "SSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG": 0, + "SSL_OP_TLS_BLOCK_PADDING_BUG": 512, + "SSL_OP_TLS_D5_BUG": 256, + "SSL_OP_TLS_ROLLBACK_BUG": 8388608, + "ENGINE_METHOD_DSA": 2, + "ENGINE_METHOD_DH": 4, + "ENGINE_METHOD_RAND": 8, + "ENGINE_METHOD_ECDH": 16, + "ENGINE_METHOD_ECDSA": 32, + "ENGINE_METHOD_CIPHERS": 64, + "ENGINE_METHOD_DIGESTS": 128, + "ENGINE_METHOD_STORE": 256, + "ENGINE_METHOD_PKEY_METHS": 512, + "ENGINE_METHOD_PKEY_ASN1_METHS": 1024, + "ENGINE_METHOD_ALL": 65535, + "ENGINE_METHOD_NONE": 0, + "DH_CHECK_P_NOT_SAFE_PRIME": 2, + "DH_CHECK_P_NOT_PRIME": 1, + "DH_UNABLE_TO_CHECK_GENERATOR": 4, + "DH_NOT_SUITABLE_GENERATOR": 8, + "NPN_ENABLED": 1, + "RSA_PKCS1_PADDING": 1, + "RSA_SSLV23_PADDING": 2, + "RSA_NO_PADDING": 3, + "RSA_PKCS1_OAEP_PADDING": 4, + "RSA_X931_PADDING": 5, + "RSA_PKCS1_PSS_PADDING": 6, + "POINT_CONVERSION_COMPRESSED": 2, + "POINT_CONVERSION_UNCOMPRESSED": 4, + "POINT_CONVERSION_HYBRID": 6, + "F_OK": 0, + "R_OK": 4, + "W_OK": 2, + "X_OK": 1, + "UV_UDP_REUSEADDR": 4 +} + +},{}],153:[function(require,module,exports){ +require('../../modules/core.regexp.escape'); +module.exports = require('../../modules/_core').RegExp.escape; +},{"../../modules/_core":174,"../../modules/core.regexp.escape":270}],154:[function(require,module,exports){ +module.exports = function(it){ + if(typeof it != 'function')throw TypeError(it + ' is not a function!'); + return it; +}; +},{}],155:[function(require,module,exports){ +var cof = require('./_cof'); +module.exports = function(it, msg){ + if(typeof it != 'number' && cof(it) != 'Number')throw TypeError(msg); + return +it; +}; +},{"./_cof":169}],156:[function(require,module,exports){ +// 22.1.3.31 Array.prototype[@@unscopables] +var UNSCOPABLES = require('./_wks')('unscopables') + , ArrayProto = Array.prototype; +if(ArrayProto[UNSCOPABLES] == undefined)require('./_hide')(ArrayProto, UNSCOPABLES, {}); +module.exports = function(key){ + ArrayProto[UNSCOPABLES][key] = true; +}; +},{"./_hide":191,"./_wks":268}],157:[function(require,module,exports){ +module.exports = function(it, Constructor, name, forbiddenField){ + if(!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)){ + throw TypeError(name + ': incorrect invocation!'); + } return it; +}; +},{}],158:[function(require,module,exports){ +var isObject = require('./_is-object'); +module.exports = function(it){ + if(!isObject(it))throw TypeError(it + ' is not an object!'); + return it; +}; +},{"./_is-object":200}],159:[function(require,module,exports){ +// 22.1.3.3 Array.prototype.copyWithin(target, start, end = this.length) +'use strict'; +var toObject = require('./_to-object') + , toIndex = require('./_to-index') + , toLength = require('./_to-length'); + +module.exports = [].copyWithin || function copyWithin(target/*= 0*/, start/*= 0, end = @length*/){ + var O = toObject(this) + , len = toLength(O.length) + , to = toIndex(target, len) + , from = toIndex(start, len) + , end = arguments.length > 2 ? arguments[2] : undefined + , count = Math.min((end === undefined ? len : toIndex(end, len)) - from, len - to) + , inc = 1; + if(from < to && to < from + count){ + inc = -1; + from += count - 1; + to += count - 1; + } + while(count-- > 0){ + if(from in O)O[to] = O[from]; + else delete O[to]; + to += inc; + from += inc; + } return O; +}; +},{"./_to-index":256,"./_to-length":259,"./_to-object":260}],160:[function(require,module,exports){ +// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length) +'use strict'; +var toObject = require('./_to-object') + , toIndex = require('./_to-index') + , toLength = require('./_to-length'); +module.exports = function fill(value /*, start = 0, end = @length */){ + var O = toObject(this) + , length = toLength(O.length) + , aLen = arguments.length + , index = toIndex(aLen > 1 ? arguments[1] : undefined, length) + , end = aLen > 2 ? arguments[2] : undefined + , endPos = end === undefined ? length : toIndex(end, length); + while(endPos > index)O[index++] = value; + return O; +}; +},{"./_to-index":256,"./_to-length":259,"./_to-object":260}],161:[function(require,module,exports){ +var forOf = require('./_for-of'); + +module.exports = function(iter, ITERATOR){ + var result = []; + forOf(iter, false, result.push, result, ITERATOR); + return result; +}; + +},{"./_for-of":188}],162:[function(require,module,exports){ +// false -> Array#indexOf +// true -> Array#includes +var toIObject = require('./_to-iobject') + , toLength = require('./_to-length') + , toIndex = require('./_to-index'); +module.exports = function(IS_INCLUDES){ + return function($this, el, fromIndex){ + var O = toIObject($this) + , length = toLength(O.length) + , index = toIndex(fromIndex, length) + , value; + // Array#includes uses SameValueZero equality algorithm + if(IS_INCLUDES && el != el)while(length > index){ + value = O[index++]; + if(value != value)return true; + // Array#toIndex ignores holes, Array#includes - not + } else for(;length > index; index++)if(IS_INCLUDES || index in O){ + if(O[index] === el)return IS_INCLUDES || index || 0; + } return !IS_INCLUDES && -1; + }; +}; +},{"./_to-index":256,"./_to-iobject":258,"./_to-length":259}],163:[function(require,module,exports){ +// 0 -> Array#forEach +// 1 -> Array#map +// 2 -> Array#filter +// 3 -> Array#some +// 4 -> Array#every +// 5 -> Array#find +// 6 -> Array#findIndex +var ctx = require('./_ctx') + , IObject = require('./_iobject') + , toObject = require('./_to-object') + , toLength = require('./_to-length') + , asc = require('./_array-species-create'); +module.exports = function(TYPE, $create){ + var IS_MAP = TYPE == 1 + , IS_FILTER = TYPE == 2 + , IS_SOME = TYPE == 3 + , IS_EVERY = TYPE == 4 + , IS_FIND_INDEX = TYPE == 6 + , NO_HOLES = TYPE == 5 || IS_FIND_INDEX + , create = $create || asc; + return function($this, callbackfn, that){ + var O = toObject($this) + , self = IObject(O) + , f = ctx(callbackfn, that, 3) + , length = toLength(self.length) + , index = 0 + , result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined + , val, res; + for(;length > index; index++)if(NO_HOLES || index in self){ + val = self[index]; + res = f(val, index, O); + if(TYPE){ + if(IS_MAP)result[index] = res; // map + else if(res)switch(TYPE){ + case 3: return true; // some + case 5: return val; // find + case 6: return index; // findIndex + case 2: result.push(val); // filter + } else if(IS_EVERY)return false; // every + } + } + return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result; + }; +}; +},{"./_array-species-create":166,"./_ctx":176,"./_iobject":196,"./_to-length":259,"./_to-object":260}],164:[function(require,module,exports){ +var aFunction = require('./_a-function') + , toObject = require('./_to-object') + , IObject = require('./_iobject') + , toLength = require('./_to-length'); + +module.exports = function(that, callbackfn, aLen, memo, isRight){ + aFunction(callbackfn); + var O = toObject(that) + , self = IObject(O) + , length = toLength(O.length) + , index = isRight ? length - 1 : 0 + , i = isRight ? -1 : 1; + if(aLen < 2)for(;;){ + if(index in self){ + memo = self[index]; + index += i; + break; + } + index += i; + if(isRight ? index < 0 : length <= index){ + throw TypeError('Reduce of empty array with no initial value'); + } + } + for(;isRight ? index >= 0 : length > index; index += i)if(index in self){ + memo = callbackfn(memo, self[index], index, O); + } + return memo; +}; +},{"./_a-function":154,"./_iobject":196,"./_to-length":259,"./_to-object":260}],165:[function(require,module,exports){ +var isObject = require('./_is-object') + , isArray = require('./_is-array') + , SPECIES = require('./_wks')('species'); + +module.exports = function(original){ + var C; + if(isArray(original)){ + C = original.constructor; + // cross-realm fallback + if(typeof C == 'function' && (C === Array || isArray(C.prototype)))C = undefined; + if(isObject(C)){ + C = C[SPECIES]; + if(C === null)C = undefined; + } + } return C === undefined ? Array : C; +}; +},{"./_is-array":198,"./_is-object":200,"./_wks":268}],166:[function(require,module,exports){ +// 9.4.2.3 ArraySpeciesCreate(originalArray, length) +var speciesConstructor = require('./_array-species-constructor'); + +module.exports = function(original, length){ + return new (speciesConstructor(original))(length); +}; +},{"./_array-species-constructor":165}],167:[function(require,module,exports){ +'use strict'; +var aFunction = require('./_a-function') + , isObject = require('./_is-object') + , invoke = require('./_invoke') + , arraySlice = [].slice + , factories = {}; + +var construct = function(F, len, args){ + if(!(len in factories)){ + for(var n = [], i = 0; i < len; i++)n[i] = 'a[' + i + ']'; + factories[len] = Function('F,a', 'return new F(' + n.join(',') + ')'); + } return factories[len](F, args); +}; + +module.exports = Function.bind || function bind(that /*, args... */){ + var fn = aFunction(this) + , partArgs = arraySlice.call(arguments, 1); + var bound = function(/* args... */){ + var args = partArgs.concat(arraySlice.call(arguments)); + return this instanceof bound ? construct(fn, args.length, args) : invoke(fn, args, that); + }; + if(isObject(fn.prototype))bound.prototype = fn.prototype; + return bound; +}; +},{"./_a-function":154,"./_invoke":195,"./_is-object":200}],168:[function(require,module,exports){ +// getting tag from 19.1.3.6 Object.prototype.toString() +var cof = require('./_cof') + , TAG = require('./_wks')('toStringTag') + // ES3 wrong here + , ARG = cof(function(){ return arguments; }()) == 'Arguments'; + +// fallback for IE11 Script Access Denied error +var tryGet = function(it, key){ + try { + return it[key]; + } catch(e){ /* empty */ } +}; + +module.exports = function(it){ + var O, T, B; + return it === undefined ? 'Undefined' : it === null ? 'Null' + // @@toStringTag case + : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T + // builtinTag case + : ARG ? cof(O) + // ES3 arguments fallback + : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B; +}; +},{"./_cof":169,"./_wks":268}],169:[function(require,module,exports){ +var toString = {}.toString; + +module.exports = function(it){ + return toString.call(it).slice(8, -1); +}; +},{}],170:[function(require,module,exports){ +'use strict'; +var dP = require('./_object-dp').f + , create = require('./_object-create') + , redefineAll = require('./_redefine-all') + , ctx = require('./_ctx') + , anInstance = require('./_an-instance') + , defined = require('./_defined') + , forOf = require('./_for-of') + , $iterDefine = require('./_iter-define') + , step = require('./_iter-step') + , setSpecies = require('./_set-species') + , DESCRIPTORS = require('./_descriptors') + , fastKey = require('./_meta').fastKey + , SIZE = DESCRIPTORS ? '_s' : 'size'; + +var getEntry = function(that, key){ + // fast case + var index = fastKey(key), entry; + if(index !== 'F')return that._i[index]; + // frozen object case + for(entry = that._f; entry; entry = entry.n){ + if(entry.k == key)return entry; + } +}; + +module.exports = { + getConstructor: function(wrapper, NAME, IS_MAP, ADDER){ + var C = wrapper(function(that, iterable){ + anInstance(that, C, NAME, '_i'); + that._i = create(null); // index + that._f = undefined; // first entry + that._l = undefined; // last entry + that[SIZE] = 0; // size + if(iterable != undefined)forOf(iterable, IS_MAP, that[ADDER], that); + }); + redefineAll(C.prototype, { + // 23.1.3.1 Map.prototype.clear() + // 23.2.3.2 Set.prototype.clear() + clear: function clear(){ + for(var that = this, data = that._i, entry = that._f; entry; entry = entry.n){ + entry.r = true; + if(entry.p)entry.p = entry.p.n = undefined; + delete data[entry.i]; + } + that._f = that._l = undefined; + that[SIZE] = 0; + }, + // 23.1.3.3 Map.prototype.delete(key) + // 23.2.3.4 Set.prototype.delete(value) + 'delete': function(key){ + var that = this + , entry = getEntry(that, key); + if(entry){ + var next = entry.n + , prev = entry.p; + delete that._i[entry.i]; + entry.r = true; + if(prev)prev.n = next; + if(next)next.p = prev; + if(that._f == entry)that._f = next; + if(that._l == entry)that._l = prev; + that[SIZE]--; + } return !!entry; + }, + // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined) + // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined) + forEach: function forEach(callbackfn /*, that = undefined */){ + anInstance(this, C, 'forEach'); + var f = ctx(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3) + , entry; + while(entry = entry ? entry.n : this._f){ + f(entry.v, entry.k, this); + // revert to the last existing entry + while(entry && entry.r)entry = entry.p; + } + }, + // 23.1.3.7 Map.prototype.has(key) + // 23.2.3.7 Set.prototype.has(value) + has: function has(key){ + return !!getEntry(this, key); + } + }); + if(DESCRIPTORS)dP(C.prototype, 'size', { + get: function(){ + return defined(this[SIZE]); + } + }); + return C; + }, + def: function(that, key, value){ + var entry = getEntry(that, key) + , prev, index; + // change existing entry + if(entry){ + entry.v = value; + // create new entry + } else { + that._l = entry = { + i: index = fastKey(key, true), // <- index + k: key, // <- key + v: value, // <- value + p: prev = that._l, // <- previous entry + n: undefined, // <- next entry + r: false // <- removed + }; + if(!that._f)that._f = entry; + if(prev)prev.n = entry; + that[SIZE]++; + // add to index + if(index !== 'F')that._i[index] = entry; + } return that; + }, + getEntry: getEntry, + setStrong: function(C, NAME, IS_MAP){ + // add .keys, .values, .entries, [@@iterator] + // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11 + $iterDefine(C, NAME, function(iterated, kind){ + this._t = iterated; // target + this._k = kind; // kind + this._l = undefined; // previous + }, function(){ + var that = this + , kind = that._k + , entry = that._l; + // revert to the last existing entry + while(entry && entry.r)entry = entry.p; + // get next entry + if(!that._t || !(that._l = entry = entry ? entry.n : that._t._f)){ + // or finish the iteration + that._t = undefined; + return step(1); + } + // return step by kind + if(kind == 'keys' )return step(0, entry.k); + if(kind == 'values')return step(0, entry.v); + return step(0, [entry.k, entry.v]); + }, IS_MAP ? 'entries' : 'values' , !IS_MAP, true); + + // add [@@species], 23.1.2.2, 23.2.2.2 + setSpecies(NAME); + } +}; +},{"./_an-instance":157,"./_ctx":176,"./_defined":178,"./_descriptors":179,"./_for-of":188,"./_iter-define":204,"./_iter-step":206,"./_meta":213,"./_object-create":217,"./_object-dp":218,"./_redefine-all":237,"./_set-species":242}],171:[function(require,module,exports){ +// https://github.com/DavidBruant/Map-Set.prototype.toJSON +var classof = require('./_classof') + , from = require('./_array-from-iterable'); +module.exports = function(NAME){ + return function toJSON(){ + if(classof(this) != NAME)throw TypeError(NAME + "#toJSON isn't generic"); + return from(this); + }; +}; +},{"./_array-from-iterable":161,"./_classof":168}],172:[function(require,module,exports){ +'use strict'; +var redefineAll = require('./_redefine-all') + , getWeak = require('./_meta').getWeak + , anObject = require('./_an-object') + , isObject = require('./_is-object') + , anInstance = require('./_an-instance') + , forOf = require('./_for-of') + , createArrayMethod = require('./_array-methods') + , $has = require('./_has') + , arrayFind = createArrayMethod(5) + , arrayFindIndex = createArrayMethod(6) + , id = 0; + +// fallback for uncaught frozen keys +var uncaughtFrozenStore = function(that){ + return that._l || (that._l = new UncaughtFrozenStore); +}; +var UncaughtFrozenStore = function(){ + this.a = []; +}; +var findUncaughtFrozen = function(store, key){ + return arrayFind(store.a, function(it){ + return it[0] === key; + }); +}; +UncaughtFrozenStore.prototype = { + get: function(key){ + var entry = findUncaughtFrozen(this, key); + if(entry)return entry[1]; + }, + has: function(key){ + return !!findUncaughtFrozen(this, key); + }, + set: function(key, value){ + var entry = findUncaughtFrozen(this, key); + if(entry)entry[1] = value; + else this.a.push([key, value]); + }, + 'delete': function(key){ + var index = arrayFindIndex(this.a, function(it){ + return it[0] === key; + }); + if(~index)this.a.splice(index, 1); + return !!~index; + } +}; + +module.exports = { + getConstructor: function(wrapper, NAME, IS_MAP, ADDER){ + var C = wrapper(function(that, iterable){ + anInstance(that, C, NAME, '_i'); + that._i = id++; // collection id + that._l = undefined; // leak store for uncaught frozen objects + if(iterable != undefined)forOf(iterable, IS_MAP, that[ADDER], that); + }); + redefineAll(C.prototype, { + // 23.3.3.2 WeakMap.prototype.delete(key) + // 23.4.3.3 WeakSet.prototype.delete(value) + 'delete': function(key){ + if(!isObject(key))return false; + var data = getWeak(key); + if(data === true)return uncaughtFrozenStore(this)['delete'](key); + return data && $has(data, this._i) && delete data[this._i]; + }, + // 23.3.3.4 WeakMap.prototype.has(key) + // 23.4.3.4 WeakSet.prototype.has(value) + has: function has(key){ + if(!isObject(key))return false; + var data = getWeak(key); + if(data === true)return uncaughtFrozenStore(this).has(key); + return data && $has(data, this._i); + } + }); + return C; + }, + def: function(that, key, value){ + var data = getWeak(anObject(key), true); + if(data === true)uncaughtFrozenStore(that).set(key, value); + else data[that._i] = value; + return that; + }, + ufstore: uncaughtFrozenStore +}; +},{"./_an-instance":157,"./_an-object":158,"./_array-methods":163,"./_for-of":188,"./_has":190,"./_is-object":200,"./_meta":213,"./_redefine-all":237}],173:[function(require,module,exports){ +'use strict'; +var global = require('./_global') + , $export = require('./_export') + , redefine = require('./_redefine') + , redefineAll = require('./_redefine-all') + , meta = require('./_meta') + , forOf = require('./_for-of') + , anInstance = require('./_an-instance') + , isObject = require('./_is-object') + , fails = require('./_fails') + , $iterDetect = require('./_iter-detect') + , setToStringTag = require('./_set-to-string-tag') + , inheritIfRequired = require('./_inherit-if-required'); + +module.exports = function(NAME, wrapper, methods, common, IS_MAP, IS_WEAK){ + var Base = global[NAME] + , C = Base + , ADDER = IS_MAP ? 'set' : 'add' + , proto = C && C.prototype + , O = {}; + var fixMethod = function(KEY){ + var fn = proto[KEY]; + redefine(proto, KEY, + KEY == 'delete' ? function(a){ + return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a); + } : KEY == 'has' ? function has(a){ + return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a); + } : KEY == 'get' ? function get(a){ + return IS_WEAK && !isObject(a) ? undefined : fn.call(this, a === 0 ? 0 : a); + } : KEY == 'add' ? function add(a){ fn.call(this, a === 0 ? 0 : a); return this; } + : function set(a, b){ fn.call(this, a === 0 ? 0 : a, b); return this; } + ); + }; + if(typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function(){ + new C().entries().next(); + }))){ + // create collection constructor + C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER); + redefineAll(C.prototype, methods); + meta.NEED = true; + } else { + var instance = new C + // early implementations not supports chaining + , HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance + // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false + , THROWS_ON_PRIMITIVES = fails(function(){ instance.has(1); }) + // most early implementations doesn't supports iterables, most modern - not close it correctly + , ACCEPT_ITERABLES = $iterDetect(function(iter){ new C(iter); }) // eslint-disable-line no-new + // for early implementations -0 and +0 not the same + , BUGGY_ZERO = !IS_WEAK && fails(function(){ + // V8 ~ Chromium 42- fails only with 5+ elements + var $instance = new C() + , index = 5; + while(index--)$instance[ADDER](index, index); + return !$instance.has(-0); + }); + if(!ACCEPT_ITERABLES){ + C = wrapper(function(target, iterable){ + anInstance(target, C, NAME); + var that = inheritIfRequired(new Base, target, C); + if(iterable != undefined)forOf(iterable, IS_MAP, that[ADDER], that); + return that; + }); + C.prototype = proto; + proto.constructor = C; + } + if(THROWS_ON_PRIMITIVES || BUGGY_ZERO){ + fixMethod('delete'); + fixMethod('has'); + IS_MAP && fixMethod('get'); + } + if(BUGGY_ZERO || HASNT_CHAINING)fixMethod(ADDER); + // weak collections should not contains .clear method + if(IS_WEAK && proto.clear)delete proto.clear; + } + + setToStringTag(C, NAME); + + O[NAME] = C; + $export($export.G + $export.W + $export.F * (C != Base), O); + + if(!IS_WEAK)common.setStrong(C, NAME, IS_MAP); + + return C; +}; +},{"./_an-instance":157,"./_export":183,"./_fails":185,"./_for-of":188,"./_global":189,"./_inherit-if-required":194,"./_is-object":200,"./_iter-detect":205,"./_meta":213,"./_redefine":238,"./_redefine-all":237,"./_set-to-string-tag":243}],174:[function(require,module,exports){ +var core = module.exports = {version: '2.4.0'}; +if(typeof __e == 'number')__e = core; // eslint-disable-line no-undef +},{}],175:[function(require,module,exports){ +'use strict'; +var $defineProperty = require('./_object-dp') + , createDesc = require('./_property-desc'); + +module.exports = function(object, index, value){ + if(index in object)$defineProperty.f(object, index, createDesc(0, value)); + else object[index] = value; +}; +},{"./_object-dp":218,"./_property-desc":236}],176:[function(require,module,exports){ +// optional / simple context binding +var aFunction = require('./_a-function'); +module.exports = function(fn, that, length){ + aFunction(fn); + if(that === undefined)return fn; + switch(length){ + case 1: return function(a){ + return fn.call(that, a); + }; + case 2: return function(a, b){ + return fn.call(that, a, b); + }; + case 3: return function(a, b, c){ + return fn.call(that, a, b, c); + }; + } + return function(/* ...args */){ + return fn.apply(that, arguments); + }; +}; +},{"./_a-function":154}],177:[function(require,module,exports){ +'use strict'; +var anObject = require('./_an-object') + , toPrimitive = require('./_to-primitive') + , NUMBER = 'number'; + +module.exports = function(hint){ + if(hint !== 'string' && hint !== NUMBER && hint !== 'default')throw TypeError('Incorrect hint'); + return toPrimitive(anObject(this), hint != NUMBER); +}; +},{"./_an-object":158,"./_to-primitive":261}],178:[function(require,module,exports){ +// 7.2.1 RequireObjectCoercible(argument) +module.exports = function(it){ + if(it == undefined)throw TypeError("Can't call method on " + it); + return it; +}; +},{}],179:[function(require,module,exports){ +// Thank's IE8 for his funny defineProperty +module.exports = !require('./_fails')(function(){ + return Object.defineProperty({}, 'a', {get: function(){ return 7; }}).a != 7; +}); +},{"./_fails":185}],180:[function(require,module,exports){ +var isObject = require('./_is-object') + , document = require('./_global').document + // in old IE typeof document.createElement is 'object' + , is = isObject(document) && isObject(document.createElement); +module.exports = function(it){ + return is ? document.createElement(it) : {}; +}; +},{"./_global":189,"./_is-object":200}],181:[function(require,module,exports){ +// IE 8- don't enum bug keys +module.exports = ( + 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf' +).split(','); +},{}],182:[function(require,module,exports){ +// all enumerable object keys, includes symbols +var getKeys = require('./_object-keys') + , gOPS = require('./_object-gops') + , pIE = require('./_object-pie'); +module.exports = function(it){ + var result = getKeys(it) + , getSymbols = gOPS.f; + if(getSymbols){ + var symbols = getSymbols(it) + , isEnum = pIE.f + , i = 0 + , key; + while(symbols.length > i)if(isEnum.call(it, key = symbols[i++]))result.push(key); + } return result; +}; +},{"./_object-gops":224,"./_object-keys":227,"./_object-pie":228}],183:[function(require,module,exports){ +var global = require('./_global') + , core = require('./_core') + , hide = require('./_hide') + , redefine = require('./_redefine') + , ctx = require('./_ctx') + , PROTOTYPE = 'prototype'; + +var $export = function(type, name, source){ + var IS_FORCED = type & $export.F + , IS_GLOBAL = type & $export.G + , IS_STATIC = type & $export.S + , IS_PROTO = type & $export.P + , IS_BIND = type & $export.B + , target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE] + , exports = IS_GLOBAL ? core : core[name] || (core[name] = {}) + , expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {}) + , key, own, out, exp; + if(IS_GLOBAL)source = name; + for(key in source){ + // contains in native + own = !IS_FORCED && target && target[key] !== undefined; + // export native or passed + out = (own ? target : source)[key]; + // bind timers to global for call from export context + exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out; + // extend global + if(target)redefine(target, key, out, type & $export.U); + // export + if(exports[key] != out)hide(exports, key, exp); + if(IS_PROTO && expProto[key] != out)expProto[key] = out; + } +}; +global.core = core; +// type bitmap +$export.F = 1; // forced +$export.G = 2; // global +$export.S = 4; // static +$export.P = 8; // proto +$export.B = 16; // bind +$export.W = 32; // wrap +$export.U = 64; // safe +$export.R = 128; // real proto method for `library` +module.exports = $export; +},{"./_core":174,"./_ctx":176,"./_global":189,"./_hide":191,"./_redefine":238}],184:[function(require,module,exports){ +var MATCH = require('./_wks')('match'); +module.exports = function(KEY){ + var re = /./; + try { + '/./'[KEY](re); + } catch(e){ + try { + re[MATCH] = false; + return !'/./'[KEY](re); + } catch(f){ /* empty */ } + } return true; +}; +},{"./_wks":268}],185:[function(require,module,exports){ +module.exports = function(exec){ + try { + return !!exec(); + } catch(e){ + return true; + } +}; +},{}],186:[function(require,module,exports){ +'use strict'; +var hide = require('./_hide') + , redefine = require('./_redefine') + , fails = require('./_fails') + , defined = require('./_defined') + , wks = require('./_wks'); + +module.exports = function(KEY, length, exec){ + var SYMBOL = wks(KEY) + , fns = exec(defined, SYMBOL, ''[KEY]) + , strfn = fns[0] + , rxfn = fns[1]; + if(fails(function(){ + var O = {}; + O[SYMBOL] = function(){ return 7; }; + return ''[KEY](O) != 7; + })){ + redefine(String.prototype, KEY, strfn); + hide(RegExp.prototype, SYMBOL, length == 2 + // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue) + // 21.2.5.11 RegExp.prototype[@@split](string, limit) + ? function(string, arg){ return rxfn.call(string, this, arg); } + // 21.2.5.6 RegExp.prototype[@@match](string) + // 21.2.5.9 RegExp.prototype[@@search](string) + : function(string){ return rxfn.call(string, this); } + ); + } +}; +},{"./_defined":178,"./_fails":185,"./_hide":191,"./_redefine":238,"./_wks":268}],187:[function(require,module,exports){ +'use strict'; +// 21.2.5.3 get RegExp.prototype.flags +var anObject = require('./_an-object'); +module.exports = function(){ + var that = anObject(this) + , result = ''; + if(that.global) result += 'g'; + if(that.ignoreCase) result += 'i'; + if(that.multiline) result += 'm'; + if(that.unicode) result += 'u'; + if(that.sticky) result += 'y'; + return result; +}; +},{"./_an-object":158}],188:[function(require,module,exports){ +var ctx = require('./_ctx') + , call = require('./_iter-call') + , isArrayIter = require('./_is-array-iter') + , anObject = require('./_an-object') + , toLength = require('./_to-length') + , getIterFn = require('./core.get-iterator-method') + , BREAK = {} + , RETURN = {}; +var exports = module.exports = function(iterable, entries, fn, that, ITERATOR){ + var iterFn = ITERATOR ? function(){ return iterable; } : getIterFn(iterable) + , f = ctx(fn, that, entries ? 2 : 1) + , index = 0 + , length, step, iterator, result; + if(typeof iterFn != 'function')throw TypeError(iterable + ' is not iterable!'); + // fast case for arrays with default iterator + if(isArrayIter(iterFn))for(length = toLength(iterable.length); length > index; index++){ + result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]); + if(result === BREAK || result === RETURN)return result; + } else for(iterator = iterFn.call(iterable); !(step = iterator.next()).done; ){ + result = call(iterator, f, step.value, entries); + if(result === BREAK || result === RETURN)return result; + } +}; +exports.BREAK = BREAK; +exports.RETURN = RETURN; +},{"./_an-object":158,"./_ctx":176,"./_is-array-iter":197,"./_iter-call":202,"./_to-length":259,"./core.get-iterator-method":269}],189:[function(require,module,exports){ +// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 +var global = module.exports = typeof window != 'undefined' && window.Math == Math + ? window : typeof self != 'undefined' && self.Math == Math ? self : Function('return this')(); +if(typeof __g == 'number')__g = global; // eslint-disable-line no-undef +},{}],190:[function(require,module,exports){ +var hasOwnProperty = {}.hasOwnProperty; +module.exports = function(it, key){ + return hasOwnProperty.call(it, key); +}; +},{}],191:[function(require,module,exports){ +var dP = require('./_object-dp') + , createDesc = require('./_property-desc'); +module.exports = require('./_descriptors') ? function(object, key, value){ + return dP.f(object, key, createDesc(1, value)); +} : function(object, key, value){ + object[key] = value; + return object; +}; +},{"./_descriptors":179,"./_object-dp":218,"./_property-desc":236}],192:[function(require,module,exports){ +module.exports = require('./_global').document && document.documentElement; +},{"./_global":189}],193:[function(require,module,exports){ +module.exports = !require('./_descriptors') && !require('./_fails')(function(){ + return Object.defineProperty(require('./_dom-create')('div'), 'a', {get: function(){ return 7; }}).a != 7; +}); +},{"./_descriptors":179,"./_dom-create":180,"./_fails":185}],194:[function(require,module,exports){ +var isObject = require('./_is-object') + , setPrototypeOf = require('./_set-proto').set; +module.exports = function(that, target, C){ + var P, S = target.constructor; + if(S !== C && typeof S == 'function' && (P = S.prototype) !== C.prototype && isObject(P) && setPrototypeOf){ + setPrototypeOf(that, P); + } return that; +}; +},{"./_is-object":200,"./_set-proto":241}],195:[function(require,module,exports){ +// fast apply, http://jsperf.lnkit.com/fast-apply/5 +module.exports = function(fn, args, that){ + var un = that === undefined; + switch(args.length){ + case 0: return un ? fn() + : fn.call(that); + case 1: return un ? fn(args[0]) + : fn.call(that, args[0]); + case 2: return un ? fn(args[0], args[1]) + : fn.call(that, args[0], args[1]); + case 3: return un ? fn(args[0], args[1], args[2]) + : fn.call(that, args[0], args[1], args[2]); + case 4: return un ? fn(args[0], args[1], args[2], args[3]) + : fn.call(that, args[0], args[1], args[2], args[3]); + } return fn.apply(that, args); +}; +},{}],196:[function(require,module,exports){ +// fallback for non-array-like ES3 and non-enumerable old V8 strings +var cof = require('./_cof'); +module.exports = Object('z').propertyIsEnumerable(0) ? Object : function(it){ + return cof(it) == 'String' ? it.split('') : Object(it); +}; +},{"./_cof":169}],197:[function(require,module,exports){ +// check on default Array iterator +var Iterators = require('./_iterators') + , ITERATOR = require('./_wks')('iterator') + , ArrayProto = Array.prototype; + +module.exports = function(it){ + return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it); +}; +},{"./_iterators":207,"./_wks":268}],198:[function(require,module,exports){ +// 7.2.2 IsArray(argument) +var cof = require('./_cof'); +module.exports = Array.isArray || function isArray(arg){ + return cof(arg) == 'Array'; +}; +},{"./_cof":169}],199:[function(require,module,exports){ +// 20.1.2.3 Number.isInteger(number) +var isObject = require('./_is-object') + , floor = Math.floor; +module.exports = function isInteger(it){ + return !isObject(it) && isFinite(it) && floor(it) === it; +}; +},{"./_is-object":200}],200:[function(require,module,exports){ +module.exports = function(it){ + return typeof it === 'object' ? it !== null : typeof it === 'function'; +}; +},{}],201:[function(require,module,exports){ +// 7.2.8 IsRegExp(argument) +var isObject = require('./_is-object') + , cof = require('./_cof') + , MATCH = require('./_wks')('match'); +module.exports = function(it){ + var isRegExp; + return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp'); +}; +},{"./_cof":169,"./_is-object":200,"./_wks":268}],202:[function(require,module,exports){ +// call something on iterator step with safe closing on error +var anObject = require('./_an-object'); +module.exports = function(iterator, fn, value, entries){ + try { + return entries ? fn(anObject(value)[0], value[1]) : fn(value); + // 7.4.6 IteratorClose(iterator, completion) + } catch(e){ + var ret = iterator['return']; + if(ret !== undefined)anObject(ret.call(iterator)); + throw e; + } +}; +},{"./_an-object":158}],203:[function(require,module,exports){ +'use strict'; +var create = require('./_object-create') + , descriptor = require('./_property-desc') + , setToStringTag = require('./_set-to-string-tag') + , IteratorPrototype = {}; + +// 25.1.2.1.1 %IteratorPrototype%[@@iterator]() +require('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function(){ return this; }); + +module.exports = function(Constructor, NAME, next){ + Constructor.prototype = create(IteratorPrototype, {next: descriptor(1, next)}); + setToStringTag(Constructor, NAME + ' Iterator'); +}; +},{"./_hide":191,"./_object-create":217,"./_property-desc":236,"./_set-to-string-tag":243,"./_wks":268}],204:[function(require,module,exports){ +'use strict'; +var LIBRARY = require('./_library') + , $export = require('./_export') + , redefine = require('./_redefine') + , hide = require('./_hide') + , has = require('./_has') + , Iterators = require('./_iterators') + , $iterCreate = require('./_iter-create') + , setToStringTag = require('./_set-to-string-tag') + , getPrototypeOf = require('./_object-gpo') + , ITERATOR = require('./_wks')('iterator') + , BUGGY = !([].keys && 'next' in [].keys()) // Safari has buggy iterators w/o `next` + , FF_ITERATOR = '@@iterator' + , KEYS = 'keys' + , VALUES = 'values'; + +var returnThis = function(){ return this; }; + +module.exports = function(Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED){ + $iterCreate(Constructor, NAME, next); + var getMethod = function(kind){ + if(!BUGGY && kind in proto)return proto[kind]; + switch(kind){ + case KEYS: return function keys(){ return new Constructor(this, kind); }; + case VALUES: return function values(){ return new Constructor(this, kind); }; + } return function entries(){ return new Constructor(this, kind); }; + }; + var TAG = NAME + ' Iterator' + , DEF_VALUES = DEFAULT == VALUES + , VALUES_BUG = false + , proto = Base.prototype + , $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT] + , $default = $native || getMethod(DEFAULT) + , $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined + , $anyNative = NAME == 'Array' ? proto.entries || $native : $native + , methods, key, IteratorPrototype; + // Fix native + if($anyNative){ + IteratorPrototype = getPrototypeOf($anyNative.call(new Base)); + if(IteratorPrototype !== Object.prototype){ + // Set @@toStringTag to native iterators + setToStringTag(IteratorPrototype, TAG, true); + // fix for some old engines + if(!LIBRARY && !has(IteratorPrototype, ITERATOR))hide(IteratorPrototype, ITERATOR, returnThis); + } + } + // fix Array#{values, @@iterator}.name in V8 / FF + if(DEF_VALUES && $native && $native.name !== VALUES){ + VALUES_BUG = true; + $default = function values(){ return $native.call(this); }; + } + // Define iterator + if((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])){ + hide(proto, ITERATOR, $default); + } + // Plug for library + Iterators[NAME] = $default; + Iterators[TAG] = returnThis; + if(DEFAULT){ + methods = { + values: DEF_VALUES ? $default : getMethod(VALUES), + keys: IS_SET ? $default : getMethod(KEYS), + entries: $entries + }; + if(FORCED)for(key in methods){ + if(!(key in proto))redefine(proto, key, methods[key]); + } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods); + } + return methods; +}; +},{"./_export":183,"./_has":190,"./_hide":191,"./_iter-create":203,"./_iterators":207,"./_library":209,"./_object-gpo":225,"./_redefine":238,"./_set-to-string-tag":243,"./_wks":268}],205:[function(require,module,exports){ +var ITERATOR = require('./_wks')('iterator') + , SAFE_CLOSING = false; + +try { + var riter = [7][ITERATOR](); + riter['return'] = function(){ SAFE_CLOSING = true; }; + Array.from(riter, function(){ throw 2; }); +} catch(e){ /* empty */ } + +module.exports = function(exec, skipClosing){ + if(!skipClosing && !SAFE_CLOSING)return false; + var safe = false; + try { + var arr = [7] + , iter = arr[ITERATOR](); + iter.next = function(){ return {done: safe = true}; }; + arr[ITERATOR] = function(){ return iter; }; + exec(arr); + } catch(e){ /* empty */ } + return safe; +}; +},{"./_wks":268}],206:[function(require,module,exports){ +module.exports = function(done, value){ + return {value: value, done: !!done}; +}; +},{}],207:[function(require,module,exports){ +module.exports = {}; +},{}],208:[function(require,module,exports){ +var getKeys = require('./_object-keys') + , toIObject = require('./_to-iobject'); +module.exports = function(object, el){ + var O = toIObject(object) + , keys = getKeys(O) + , length = keys.length + , index = 0 + , key; + while(length > index)if(O[key = keys[index++]] === el)return key; +}; +},{"./_object-keys":227,"./_to-iobject":258}],209:[function(require,module,exports){ +module.exports = false; +},{}],210:[function(require,module,exports){ +// 20.2.2.14 Math.expm1(x) +var $expm1 = Math.expm1; +module.exports = (!$expm1 + // Old FF bug + || $expm1(10) > 22025.465794806719 || $expm1(10) < 22025.4657948067165168 + // Tor Browser bug + || $expm1(-2e-17) != -2e-17 +) ? function expm1(x){ + return (x = +x) == 0 ? x : x > -1e-6 && x < 1e-6 ? x + x * x / 2 : Math.exp(x) - 1; +} : $expm1; +},{}],211:[function(require,module,exports){ +// 20.2.2.20 Math.log1p(x) +module.exports = Math.log1p || function log1p(x){ + return (x = +x) > -1e-8 && x < 1e-8 ? x - x * x / 2 : Math.log(1 + x); +}; +},{}],212:[function(require,module,exports){ +// 20.2.2.28 Math.sign(x) +module.exports = Math.sign || function sign(x){ + return (x = +x) == 0 || x != x ? x : x < 0 ? -1 : 1; +}; +},{}],213:[function(require,module,exports){ +var META = require('./_uid')('meta') + , isObject = require('./_is-object') + , has = require('./_has') + , setDesc = require('./_object-dp').f + , id = 0; +var isExtensible = Object.isExtensible || function(){ + return true; +}; +var FREEZE = !require('./_fails')(function(){ + return isExtensible(Object.preventExtensions({})); +}); +var setMeta = function(it){ + setDesc(it, META, {value: { + i: 'O' + ++id, // object ID + w: {} // weak collections IDs + }}); +}; +var fastKey = function(it, create){ + // return primitive with prefix + if(!isObject(it))return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it; + if(!has(it, META)){ + // can't set metadata to uncaught frozen object + if(!isExtensible(it))return 'F'; + // not necessary to add metadata + if(!create)return 'E'; + // add missing metadata + setMeta(it); + // return object ID + } return it[META].i; +}; +var getWeak = function(it, create){ + if(!has(it, META)){ + // can't set metadata to uncaught frozen object + if(!isExtensible(it))return true; + // not necessary to add metadata + if(!create)return false; + // add missing metadata + setMeta(it); + // return hash weak collections IDs + } return it[META].w; +}; +// add metadata on freeze-family methods calling +var onFreeze = function(it){ + if(FREEZE && meta.NEED && isExtensible(it) && !has(it, META))setMeta(it); + return it; +}; +var meta = module.exports = { + KEY: META, + NEED: false, + fastKey: fastKey, + getWeak: getWeak, + onFreeze: onFreeze +}; +},{"./_fails":185,"./_has":190,"./_is-object":200,"./_object-dp":218,"./_uid":265}],214:[function(require,module,exports){ +var Map = require('./es6.map') + , $export = require('./_export') + , shared = require('./_shared')('metadata') + , store = shared.store || (shared.store = new (require('./es6.weak-map'))); + +var getOrCreateMetadataMap = function(target, targetKey, create){ + var targetMetadata = store.get(target); + if(!targetMetadata){ + if(!create)return undefined; + store.set(target, targetMetadata = new Map); + } + var keyMetadata = targetMetadata.get(targetKey); + if(!keyMetadata){ + if(!create)return undefined; + targetMetadata.set(targetKey, keyMetadata = new Map); + } return keyMetadata; +}; +var ordinaryHasOwnMetadata = function(MetadataKey, O, P){ + var metadataMap = getOrCreateMetadataMap(O, P, false); + return metadataMap === undefined ? false : metadataMap.has(MetadataKey); +}; +var ordinaryGetOwnMetadata = function(MetadataKey, O, P){ + var metadataMap = getOrCreateMetadataMap(O, P, false); + return metadataMap === undefined ? undefined : metadataMap.get(MetadataKey); +}; +var ordinaryDefineOwnMetadata = function(MetadataKey, MetadataValue, O, P){ + getOrCreateMetadataMap(O, P, true).set(MetadataKey, MetadataValue); +}; +var ordinaryOwnMetadataKeys = function(target, targetKey){ + var metadataMap = getOrCreateMetadataMap(target, targetKey, false) + , keys = []; + if(metadataMap)metadataMap.forEach(function(_, key){ keys.push(key); }); + return keys; +}; +var toMetaKey = function(it){ + return it === undefined || typeof it == 'symbol' ? it : String(it); +}; +var exp = function(O){ + $export($export.S, 'Reflect', O); +}; + +module.exports = { + store: store, + map: getOrCreateMetadataMap, + has: ordinaryHasOwnMetadata, + get: ordinaryGetOwnMetadata, + set: ordinaryDefineOwnMetadata, + keys: ordinaryOwnMetadataKeys, + key: toMetaKey, + exp: exp +}; +},{"./_export":183,"./_shared":245,"./es6.map":300,"./es6.weak-map":406}],215:[function(require,module,exports){ +var global = require('./_global') + , macrotask = require('./_task').set + , Observer = global.MutationObserver || global.WebKitMutationObserver + , process = global.process + , Promise = global.Promise + , isNode = require('./_cof')(process) == 'process'; + +module.exports = function(){ + var head, last, notify; + + var flush = function(){ + var parent, fn; + if(isNode && (parent = process.domain))parent.exit(); + while(head){ + fn = head.fn; + head = head.next; + try { + fn(); + } catch(e){ + if(head)notify(); + else last = undefined; + throw e; + } + } last = undefined; + if(parent)parent.enter(); + }; + + // Node.js + if(isNode){ + notify = function(){ + process.nextTick(flush); + }; + // browsers with MutationObserver + } else if(Observer){ + var toggle = true + , node = document.createTextNode(''); + new Observer(flush).observe(node, {characterData: true}); // eslint-disable-line no-new + notify = function(){ + node.data = toggle = !toggle; + }; + // environments with maybe non-completely correct, but existent Promise + } else if(Promise && Promise.resolve){ + var promise = Promise.resolve(); + notify = function(){ + promise.then(flush); + }; + // for other environments - macrotask based on: + // - setImmediate + // - MessageChannel + // - window.postMessag + // - onreadystatechange + // - setTimeout + } else { + notify = function(){ + // strange IE + webpack dev server bug - use .call(global) + macrotask.call(global, flush); + }; + } + + return function(fn){ + var task = {fn: fn, next: undefined}; + if(last)last.next = task; + if(!head){ + head = task; + notify(); + } last = task; + }; +}; +},{"./_cof":169,"./_global":189,"./_task":255}],216:[function(require,module,exports){ +'use strict'; +// 19.1.2.1 Object.assign(target, source, ...) +var getKeys = require('./_object-keys') + , gOPS = require('./_object-gops') + , pIE = require('./_object-pie') + , toObject = require('./_to-object') + , IObject = require('./_iobject') + , $assign = Object.assign; + +// should work with symbols and should have deterministic property order (V8 bug) +module.exports = !$assign || require('./_fails')(function(){ + var A = {} + , B = {} + , S = Symbol() + , K = 'abcdefghijklmnopqrst'; + A[S] = 7; + K.split('').forEach(function(k){ B[k] = k; }); + return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K; +}) ? function assign(target, source){ // eslint-disable-line no-unused-vars + var T = toObject(target) + , aLen = arguments.length + , index = 1 + , getSymbols = gOPS.f + , isEnum = pIE.f; + while(aLen > index){ + var S = IObject(arguments[index++]) + , keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S) + , length = keys.length + , j = 0 + , key; + while(length > j)if(isEnum.call(S, key = keys[j++]))T[key] = S[key]; + } return T; +} : $assign; +},{"./_fails":185,"./_iobject":196,"./_object-gops":224,"./_object-keys":227,"./_object-pie":228,"./_to-object":260}],217:[function(require,module,exports){ +// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties]) +var anObject = require('./_an-object') + , dPs = require('./_object-dps') + , enumBugKeys = require('./_enum-bug-keys') + , IE_PROTO = require('./_shared-key')('IE_PROTO') + , Empty = function(){ /* empty */ } + , PROTOTYPE = 'prototype'; + +// Create object with fake `null` prototype: use iframe Object with cleared prototype +var createDict = function(){ + // Thrash, waste and sodomy: IE GC bug + var iframe = require('./_dom-create')('iframe') + , i = enumBugKeys.length + , lt = '<' + , gt = '>' + , iframeDocument; + iframe.style.display = 'none'; + require('./_html').appendChild(iframe); + iframe.src = 'javascript:'; // eslint-disable-line no-script-url + // createDict = iframe.contentWindow.Object; + // html.removeChild(iframe); + iframeDocument = iframe.contentWindow.document; + iframeDocument.open(); + iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt); + iframeDocument.close(); + createDict = iframeDocument.F; + while(i--)delete createDict[PROTOTYPE][enumBugKeys[i]]; + return createDict(); +}; + +module.exports = Object.create || function create(O, Properties){ + var result; + if(O !== null){ + Empty[PROTOTYPE] = anObject(O); + result = new Empty; + Empty[PROTOTYPE] = null; + // add "__proto__" for Object.getPrototypeOf polyfill + result[IE_PROTO] = O; + } else result = createDict(); + return Properties === undefined ? result : dPs(result, Properties); +}; + +},{"./_an-object":158,"./_dom-create":180,"./_enum-bug-keys":181,"./_html":192,"./_object-dps":219,"./_shared-key":244}],218:[function(require,module,exports){ +var anObject = require('./_an-object') + , IE8_DOM_DEFINE = require('./_ie8-dom-define') + , toPrimitive = require('./_to-primitive') + , dP = Object.defineProperty; + +exports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes){ + anObject(O); + P = toPrimitive(P, true); + anObject(Attributes); + if(IE8_DOM_DEFINE)try { + return dP(O, P, Attributes); + } catch(e){ /* empty */ } + if('get' in Attributes || 'set' in Attributes)throw TypeError('Accessors not supported!'); + if('value' in Attributes)O[P] = Attributes.value; + return O; +}; +},{"./_an-object":158,"./_descriptors":179,"./_ie8-dom-define":193,"./_to-primitive":261}],219:[function(require,module,exports){ +var dP = require('./_object-dp') + , anObject = require('./_an-object') + , getKeys = require('./_object-keys'); + +module.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties){ + anObject(O); + var keys = getKeys(Properties) + , length = keys.length + , i = 0 + , P; + while(length > i)dP.f(O, P = keys[i++], Properties[P]); + return O; +}; +},{"./_an-object":158,"./_descriptors":179,"./_object-dp":218,"./_object-keys":227}],220:[function(require,module,exports){ +// Forced replacement prototype accessors methods +module.exports = require('./_library')|| !require('./_fails')(function(){ + var K = Math.random(); + // In FF throws only define methods + __defineSetter__.call(null, K, function(){ /* empty */}); + delete require('./_global')[K]; +}); +},{"./_fails":185,"./_global":189,"./_library":209}],221:[function(require,module,exports){ +var pIE = require('./_object-pie') + , createDesc = require('./_property-desc') + , toIObject = require('./_to-iobject') + , toPrimitive = require('./_to-primitive') + , has = require('./_has') + , IE8_DOM_DEFINE = require('./_ie8-dom-define') + , gOPD = Object.getOwnPropertyDescriptor; + +exports.f = require('./_descriptors') ? gOPD : function getOwnPropertyDescriptor(O, P){ + O = toIObject(O); + P = toPrimitive(P, true); + if(IE8_DOM_DEFINE)try { + return gOPD(O, P); + } catch(e){ /* empty */ } + if(has(O, P))return createDesc(!pIE.f.call(O, P), O[P]); +}; +},{"./_descriptors":179,"./_has":190,"./_ie8-dom-define":193,"./_object-pie":228,"./_property-desc":236,"./_to-iobject":258,"./_to-primitive":261}],222:[function(require,module,exports){ +// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window +var toIObject = require('./_to-iobject') + , gOPN = require('./_object-gopn').f + , toString = {}.toString; + +var windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames + ? Object.getOwnPropertyNames(window) : []; + +var getWindowNames = function(it){ + try { + return gOPN(it); + } catch(e){ + return windowNames.slice(); + } +}; + +module.exports.f = function getOwnPropertyNames(it){ + return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it)); +}; + +},{"./_object-gopn":223,"./_to-iobject":258}],223:[function(require,module,exports){ +// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O) +var $keys = require('./_object-keys-internal') + , hiddenKeys = require('./_enum-bug-keys').concat('length', 'prototype'); + +exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O){ + return $keys(O, hiddenKeys); +}; +},{"./_enum-bug-keys":181,"./_object-keys-internal":226}],224:[function(require,module,exports){ +exports.f = Object.getOwnPropertySymbols; +},{}],225:[function(require,module,exports){ +// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O) +var has = require('./_has') + , toObject = require('./_to-object') + , IE_PROTO = require('./_shared-key')('IE_PROTO') + , ObjectProto = Object.prototype; + +module.exports = Object.getPrototypeOf || function(O){ + O = toObject(O); + if(has(O, IE_PROTO))return O[IE_PROTO]; + if(typeof O.constructor == 'function' && O instanceof O.constructor){ + return O.constructor.prototype; + } return O instanceof Object ? ObjectProto : null; +}; +},{"./_has":190,"./_shared-key":244,"./_to-object":260}],226:[function(require,module,exports){ +var has = require('./_has') + , toIObject = require('./_to-iobject') + , arrayIndexOf = require('./_array-includes')(false) + , IE_PROTO = require('./_shared-key')('IE_PROTO'); + +module.exports = function(object, names){ + var O = toIObject(object) + , i = 0 + , result = [] + , key; + for(key in O)if(key != IE_PROTO)has(O, key) && result.push(key); + // Don't enum bug & hidden keys + while(names.length > i)if(has(O, key = names[i++])){ + ~arrayIndexOf(result, key) || result.push(key); + } + return result; +}; +},{"./_array-includes":162,"./_has":190,"./_shared-key":244,"./_to-iobject":258}],227:[function(require,module,exports){ +// 19.1.2.14 / 15.2.3.14 Object.keys(O) +var $keys = require('./_object-keys-internal') + , enumBugKeys = require('./_enum-bug-keys'); + +module.exports = Object.keys || function keys(O){ + return $keys(O, enumBugKeys); +}; +},{"./_enum-bug-keys":181,"./_object-keys-internal":226}],228:[function(require,module,exports){ +exports.f = {}.propertyIsEnumerable; +},{}],229:[function(require,module,exports){ +// most Object methods by ES6 should accept primitives +var $export = require('./_export') + , core = require('./_core') + , fails = require('./_fails'); +module.exports = function(KEY, exec){ + var fn = (core.Object || {})[KEY] || Object[KEY] + , exp = {}; + exp[KEY] = exec(fn); + $export($export.S + $export.F * fails(function(){ fn(1); }), 'Object', exp); +}; +},{"./_core":174,"./_export":183,"./_fails":185}],230:[function(require,module,exports){ +var getKeys = require('./_object-keys') + , toIObject = require('./_to-iobject') + , isEnum = require('./_object-pie').f; +module.exports = function(isEntries){ + return function(it){ + var O = toIObject(it) + , keys = getKeys(O) + , length = keys.length + , i = 0 + , result = [] + , key; + while(length > i)if(isEnum.call(O, key = keys[i++])){ + result.push(isEntries ? [key, O[key]] : O[key]); + } return result; + }; +}; +},{"./_object-keys":227,"./_object-pie":228,"./_to-iobject":258}],231:[function(require,module,exports){ +// all object keys, includes non-enumerable and symbols +var gOPN = require('./_object-gopn') + , gOPS = require('./_object-gops') + , anObject = require('./_an-object') + , Reflect = require('./_global').Reflect; +module.exports = Reflect && Reflect.ownKeys || function ownKeys(it){ + var keys = gOPN.f(anObject(it)) + , getSymbols = gOPS.f; + return getSymbols ? keys.concat(getSymbols(it)) : keys; +}; +},{"./_an-object":158,"./_global":189,"./_object-gopn":223,"./_object-gops":224}],232:[function(require,module,exports){ +var $parseFloat = require('./_global').parseFloat + , $trim = require('./_string-trim').trim; + +module.exports = 1 / $parseFloat(require('./_string-ws') + '-0') !== -Infinity ? function parseFloat(str){ + var string = $trim(String(str), 3) + , result = $parseFloat(string); + return result === 0 && string.charAt(0) == '-' ? -0 : result; +} : $parseFloat; +},{"./_global":189,"./_string-trim":253,"./_string-ws":254}],233:[function(require,module,exports){ +var $parseInt = require('./_global').parseInt + , $trim = require('./_string-trim').trim + , ws = require('./_string-ws') + , hex = /^[\-+]?0[xX]/; + +module.exports = $parseInt(ws + '08') !== 8 || $parseInt(ws + '0x16') !== 22 ? function parseInt(str, radix){ + var string = $trim(String(str), 3); + return $parseInt(string, (radix >>> 0) || (hex.test(string) ? 16 : 10)); +} : $parseInt; +},{"./_global":189,"./_string-trim":253,"./_string-ws":254}],234:[function(require,module,exports){ +'use strict'; +var path = require('./_path') + , invoke = require('./_invoke') + , aFunction = require('./_a-function'); +module.exports = function(/* ...pargs */){ + var fn = aFunction(this) + , length = arguments.length + , pargs = Array(length) + , i = 0 + , _ = path._ + , holder = false; + while(length > i)if((pargs[i] = arguments[i++]) === _)holder = true; + return function(/* ...args */){ + var that = this + , aLen = arguments.length + , j = 0, k = 0, args; + if(!holder && !aLen)return invoke(fn, pargs, that); + args = pargs.slice(); + if(holder)for(;length > j; j++)if(args[j] === _)args[j] = arguments[k++]; + while(aLen > k)args.push(arguments[k++]); + return invoke(fn, args, that); + }; +}; +},{"./_a-function":154,"./_invoke":195,"./_path":235}],235:[function(require,module,exports){ +module.exports = require('./_global'); +},{"./_global":189}],236:[function(require,module,exports){ +module.exports = function(bitmap, value){ + return { + enumerable : !(bitmap & 1), + configurable: !(bitmap & 2), + writable : !(bitmap & 4), + value : value + }; +}; +},{}],237:[function(require,module,exports){ +var redefine = require('./_redefine'); +module.exports = function(target, src, safe){ + for(var key in src)redefine(target, key, src[key], safe); + return target; +}; +},{"./_redefine":238}],238:[function(require,module,exports){ +var global = require('./_global') + , hide = require('./_hide') + , has = require('./_has') + , SRC = require('./_uid')('src') + , TO_STRING = 'toString' + , $toString = Function[TO_STRING] + , TPL = ('' + $toString).split(TO_STRING); + +require('./_core').inspectSource = function(it){ + return $toString.call(it); +}; + +(module.exports = function(O, key, val, safe){ + var isFunction = typeof val == 'function'; + if(isFunction)has(val, 'name') || hide(val, 'name', key); + if(O[key] === val)return; + if(isFunction)has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key))); + if(O === global){ + O[key] = val; + } else { + if(!safe){ + delete O[key]; + hide(O, key, val); + } else { + if(O[key])O[key] = val; + else hide(O, key, val); + } + } +// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative +})(Function.prototype, TO_STRING, function toString(){ + return typeof this == 'function' && this[SRC] || $toString.call(this); +}); +},{"./_core":174,"./_global":189,"./_has":190,"./_hide":191,"./_uid":265}],239:[function(require,module,exports){ +module.exports = function(regExp, replace){ + var replacer = replace === Object(replace) ? function(part){ + return replace[part]; + } : replace; + return function(it){ + return String(it).replace(regExp, replacer); + }; +}; +},{}],240:[function(require,module,exports){ +// 7.2.9 SameValue(x, y) +module.exports = Object.is || function is(x, y){ + return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y; +}; +},{}],241:[function(require,module,exports){ +// Works with __proto__ only. Old v8 can't work with null proto objects. +/* eslint-disable no-proto */ +var isObject = require('./_is-object') + , anObject = require('./_an-object'); +var check = function(O, proto){ + anObject(O); + if(!isObject(proto) && proto !== null)throw TypeError(proto + ": can't set as prototype!"); +}; +module.exports = { + set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line + function(test, buggy, set){ + try { + set = require('./_ctx')(Function.call, require('./_object-gopd').f(Object.prototype, '__proto__').set, 2); + set(test, []); + buggy = !(test instanceof Array); + } catch(e){ buggy = true; } + return function setPrototypeOf(O, proto){ + check(O, proto); + if(buggy)O.__proto__ = proto; + else set(O, proto); + return O; + }; + }({}, false) : undefined), + check: check +}; +},{"./_an-object":158,"./_ctx":176,"./_is-object":200,"./_object-gopd":221}],242:[function(require,module,exports){ +'use strict'; +var global = require('./_global') + , dP = require('./_object-dp') + , DESCRIPTORS = require('./_descriptors') + , SPECIES = require('./_wks')('species'); + +module.exports = function(KEY){ + var C = global[KEY]; + if(DESCRIPTORS && C && !C[SPECIES])dP.f(C, SPECIES, { + configurable: true, + get: function(){ return this; } + }); +}; +},{"./_descriptors":179,"./_global":189,"./_object-dp":218,"./_wks":268}],243:[function(require,module,exports){ +var def = require('./_object-dp').f + , has = require('./_has') + , TAG = require('./_wks')('toStringTag'); + +module.exports = function(it, tag, stat){ + if(it && !has(it = stat ? it : it.prototype, TAG))def(it, TAG, {configurable: true, value: tag}); +}; +},{"./_has":190,"./_object-dp":218,"./_wks":268}],244:[function(require,module,exports){ +var shared = require('./_shared')('keys') + , uid = require('./_uid'); +module.exports = function(key){ + return shared[key] || (shared[key] = uid(key)); +}; +},{"./_shared":245,"./_uid":265}],245:[function(require,module,exports){ +var global = require('./_global') + , SHARED = '__core-js_shared__' + , store = global[SHARED] || (global[SHARED] = {}); +module.exports = function(key){ + return store[key] || (store[key] = {}); +}; +},{"./_global":189}],246:[function(require,module,exports){ +// 7.3.20 SpeciesConstructor(O, defaultConstructor) +var anObject = require('./_an-object') + , aFunction = require('./_a-function') + , SPECIES = require('./_wks')('species'); +module.exports = function(O, D){ + var C = anObject(O).constructor, S; + return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S); +}; +},{"./_a-function":154,"./_an-object":158,"./_wks":268}],247:[function(require,module,exports){ +var fails = require('./_fails'); + +module.exports = function(method, arg){ + return !!method && fails(function(){ + arg ? method.call(null, function(){}, 1) : method.call(null); + }); +}; +},{"./_fails":185}],248:[function(require,module,exports){ +var toInteger = require('./_to-integer') + , defined = require('./_defined'); +// true -> String#at +// false -> String#codePointAt +module.exports = function(TO_STRING){ + return function(that, pos){ + var s = String(defined(that)) + , i = toInteger(pos) + , l = s.length + , a, b; + if(i < 0 || i >= l)return TO_STRING ? '' : undefined; + a = s.charCodeAt(i); + return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff + ? TO_STRING ? s.charAt(i) : a + : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000; + }; +}; +},{"./_defined":178,"./_to-integer":257}],249:[function(require,module,exports){ +// helper for String#{startsWith, endsWith, includes} +var isRegExp = require('./_is-regexp') + , defined = require('./_defined'); + +module.exports = function(that, searchString, NAME){ + if(isRegExp(searchString))throw TypeError('String#' + NAME + " doesn't accept regex!"); + return String(defined(that)); +}; +},{"./_defined":178,"./_is-regexp":201}],250:[function(require,module,exports){ +var $export = require('./_export') + , fails = require('./_fails') + , defined = require('./_defined') + , quot = /"/g; +// B.2.3.2.1 CreateHTML(string, tag, attribute, value) +var createHTML = function(string, tag, attribute, value) { + var S = String(defined(string)) + , p1 = '<' + tag; + if(attribute !== '')p1 += ' ' + attribute + '="' + String(value).replace(quot, '"') + '"'; + return p1 + '>' + S + ''; +}; +module.exports = function(NAME, exec){ + var O = {}; + O[NAME] = exec(createHTML); + $export($export.P + $export.F * fails(function(){ + var test = ''[NAME]('"'); + return test !== test.toLowerCase() || test.split('"').length > 3; + }), 'String', O); +}; +},{"./_defined":178,"./_export":183,"./_fails":185}],251:[function(require,module,exports){ +// https://github.com/tc39/proposal-string-pad-start-end +var toLength = require('./_to-length') + , repeat = require('./_string-repeat') + , defined = require('./_defined'); + +module.exports = function(that, maxLength, fillString, left){ + var S = String(defined(that)) + , stringLength = S.length + , fillStr = fillString === undefined ? ' ' : String(fillString) + , intMaxLength = toLength(maxLength); + if(intMaxLength <= stringLength || fillStr == '')return S; + var fillLen = intMaxLength - stringLength + , stringFiller = repeat.call(fillStr, Math.ceil(fillLen / fillStr.length)); + if(stringFiller.length > fillLen)stringFiller = stringFiller.slice(0, fillLen); + return left ? stringFiller + S : S + stringFiller; +}; + +},{"./_defined":178,"./_string-repeat":252,"./_to-length":259}],252:[function(require,module,exports){ +'use strict'; +var toInteger = require('./_to-integer') + , defined = require('./_defined'); + +module.exports = function repeat(count){ + var str = String(defined(this)) + , res = '' + , n = toInteger(count); + if(n < 0 || n == Infinity)throw RangeError("Count can't be negative"); + for(;n > 0; (n >>>= 1) && (str += str))if(n & 1)res += str; + return res; +}; +},{"./_defined":178,"./_to-integer":257}],253:[function(require,module,exports){ +var $export = require('./_export') + , defined = require('./_defined') + , fails = require('./_fails') + , spaces = require('./_string-ws') + , space = '[' + spaces + ']' + , non = '\u200b\u0085' + , ltrim = RegExp('^' + space + space + '*') + , rtrim = RegExp(space + space + '*$'); + +var exporter = function(KEY, exec, ALIAS){ + var exp = {}; + var FORCE = fails(function(){ + return !!spaces[KEY]() || non[KEY]() != non; + }); + var fn = exp[KEY] = FORCE ? exec(trim) : spaces[KEY]; + if(ALIAS)exp[ALIAS] = fn; + $export($export.P + $export.F * FORCE, 'String', exp); +}; + +// 1 -> String#trimLeft +// 2 -> String#trimRight +// 3 -> String#trim +var trim = exporter.trim = function(string, TYPE){ + string = String(defined(string)); + if(TYPE & 1)string = string.replace(ltrim, ''); + if(TYPE & 2)string = string.replace(rtrim, ''); + return string; +}; + +module.exports = exporter; +},{"./_defined":178,"./_export":183,"./_fails":185,"./_string-ws":254}],254:[function(require,module,exports){ +module.exports = '\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u180E\u2000\u2001\u2002\u2003' + + '\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF'; +},{}],255:[function(require,module,exports){ +var ctx = require('./_ctx') + , invoke = require('./_invoke') + , html = require('./_html') + , cel = require('./_dom-create') + , global = require('./_global') + , process = global.process + , setTask = global.setImmediate + , clearTask = global.clearImmediate + , MessageChannel = global.MessageChannel + , counter = 0 + , queue = {} + , ONREADYSTATECHANGE = 'onreadystatechange' + , defer, channel, port; +var run = function(){ + var id = +this; + if(queue.hasOwnProperty(id)){ + var fn = queue[id]; + delete queue[id]; + fn(); + } +}; +var listener = function(event){ + run.call(event.data); +}; +// Node.js 0.9+ & IE10+ has setImmediate, otherwise: +if(!setTask || !clearTask){ + setTask = function setImmediate(fn){ + var args = [], i = 1; + while(arguments.length > i)args.push(arguments[i++]); + queue[++counter] = function(){ + invoke(typeof fn == 'function' ? fn : Function(fn), args); + }; + defer(counter); + return counter; + }; + clearTask = function clearImmediate(id){ + delete queue[id]; + }; + // Node.js 0.8- + if(require('./_cof')(process) == 'process'){ + defer = function(id){ + process.nextTick(ctx(run, id, 1)); + }; + // Browsers with MessageChannel, includes WebWorkers + } else if(MessageChannel){ + channel = new MessageChannel; + port = channel.port2; + channel.port1.onmessage = listener; + defer = ctx(port.postMessage, port, 1); + // Browsers with postMessage, skip WebWorkers + // IE8 has postMessage, but it's sync & typeof its postMessage is 'object' + } else if(global.addEventListener && typeof postMessage == 'function' && !global.importScripts){ + defer = function(id){ + global.postMessage(id + '', '*'); + }; + global.addEventListener('message', listener, false); + // IE8- + } else if(ONREADYSTATECHANGE in cel('script')){ + defer = function(id){ + html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function(){ + html.removeChild(this); + run.call(id); + }; + }; + // Rest old browsers + } else { + defer = function(id){ + setTimeout(ctx(run, id, 1), 0); + }; + } +} +module.exports = { + set: setTask, + clear: clearTask +}; +},{"./_cof":169,"./_ctx":176,"./_dom-create":180,"./_global":189,"./_html":192,"./_invoke":195}],256:[function(require,module,exports){ +var toInteger = require('./_to-integer') + , max = Math.max + , min = Math.min; +module.exports = function(index, length){ + index = toInteger(index); + return index < 0 ? max(index + length, 0) : min(index, length); +}; +},{"./_to-integer":257}],257:[function(require,module,exports){ +// 7.1.4 ToInteger +var ceil = Math.ceil + , floor = Math.floor; +module.exports = function(it){ + return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it); +}; +},{}],258:[function(require,module,exports){ +// to indexed object, toObject with fallback for non-array-like ES3 strings +var IObject = require('./_iobject') + , defined = require('./_defined'); +module.exports = function(it){ + return IObject(defined(it)); +}; +},{"./_defined":178,"./_iobject":196}],259:[function(require,module,exports){ +// 7.1.15 ToLength +var toInteger = require('./_to-integer') + , min = Math.min; +module.exports = function(it){ + return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991 +}; +},{"./_to-integer":257}],260:[function(require,module,exports){ +// 7.1.13 ToObject(argument) +var defined = require('./_defined'); +module.exports = function(it){ + return Object(defined(it)); +}; +},{"./_defined":178}],261:[function(require,module,exports){ +// 7.1.1 ToPrimitive(input [, PreferredType]) +var isObject = require('./_is-object'); +// instead of the ES6 spec version, we didn't implement @@toPrimitive case +// and the second argument - flag - preferred type is a string +module.exports = function(it, S){ + if(!isObject(it))return it; + var fn, val; + if(S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it)))return val; + if(typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it)))return val; + if(!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it)))return val; + throw TypeError("Can't convert object to primitive value"); +}; +},{"./_is-object":200}],262:[function(require,module,exports){ +'use strict'; +if(require('./_descriptors')){ + var LIBRARY = require('./_library') + , global = require('./_global') + , fails = require('./_fails') + , $export = require('./_export') + , $typed = require('./_typed') + , $buffer = require('./_typed-buffer') + , ctx = require('./_ctx') + , anInstance = require('./_an-instance') + , propertyDesc = require('./_property-desc') + , hide = require('./_hide') + , redefineAll = require('./_redefine-all') + , toInteger = require('./_to-integer') + , toLength = require('./_to-length') + , toIndex = require('./_to-index') + , toPrimitive = require('./_to-primitive') + , has = require('./_has') + , same = require('./_same-value') + , classof = require('./_classof') + , isObject = require('./_is-object') + , toObject = require('./_to-object') + , isArrayIter = require('./_is-array-iter') + , create = require('./_object-create') + , getPrototypeOf = require('./_object-gpo') + , gOPN = require('./_object-gopn').f + , getIterFn = require('./core.get-iterator-method') + , uid = require('./_uid') + , wks = require('./_wks') + , createArrayMethod = require('./_array-methods') + , createArrayIncludes = require('./_array-includes') + , speciesConstructor = require('./_species-constructor') + , ArrayIterators = require('./es6.array.iterator') + , Iterators = require('./_iterators') + , $iterDetect = require('./_iter-detect') + , setSpecies = require('./_set-species') + , arrayFill = require('./_array-fill') + , arrayCopyWithin = require('./_array-copy-within') + , $DP = require('./_object-dp') + , $GOPD = require('./_object-gopd') + , dP = $DP.f + , gOPD = $GOPD.f + , RangeError = global.RangeError + , TypeError = global.TypeError + , Uint8Array = global.Uint8Array + , ARRAY_BUFFER = 'ArrayBuffer' + , SHARED_BUFFER = 'Shared' + ARRAY_BUFFER + , BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT' + , PROTOTYPE = 'prototype' + , ArrayProto = Array[PROTOTYPE] + , $ArrayBuffer = $buffer.ArrayBuffer + , $DataView = $buffer.DataView + , arrayForEach = createArrayMethod(0) + , arrayFilter = createArrayMethod(2) + , arraySome = createArrayMethod(3) + , arrayEvery = createArrayMethod(4) + , arrayFind = createArrayMethod(5) + , arrayFindIndex = createArrayMethod(6) + , arrayIncludes = createArrayIncludes(true) + , arrayIndexOf = createArrayIncludes(false) + , arrayValues = ArrayIterators.values + , arrayKeys = ArrayIterators.keys + , arrayEntries = ArrayIterators.entries + , arrayLastIndexOf = ArrayProto.lastIndexOf + , arrayReduce = ArrayProto.reduce + , arrayReduceRight = ArrayProto.reduceRight + , arrayJoin = ArrayProto.join + , arraySort = ArrayProto.sort + , arraySlice = ArrayProto.slice + , arrayToString = ArrayProto.toString + , arrayToLocaleString = ArrayProto.toLocaleString + , ITERATOR = wks('iterator') + , TAG = wks('toStringTag') + , TYPED_CONSTRUCTOR = uid('typed_constructor') + , DEF_CONSTRUCTOR = uid('def_constructor') + , ALL_CONSTRUCTORS = $typed.CONSTR + , TYPED_ARRAY = $typed.TYPED + , VIEW = $typed.VIEW + , WRONG_LENGTH = 'Wrong length!'; + + var $map = createArrayMethod(1, function(O, length){ + return allocate(speciesConstructor(O, O[DEF_CONSTRUCTOR]), length); + }); + + var LITTLE_ENDIAN = fails(function(){ + return new Uint8Array(new Uint16Array([1]).buffer)[0] === 1; + }); + + var FORCED_SET = !!Uint8Array && !!Uint8Array[PROTOTYPE].set && fails(function(){ + new Uint8Array(1).set({}); + }); + + var strictToLength = function(it, SAME){ + if(it === undefined)throw TypeError(WRONG_LENGTH); + var number = +it + , length = toLength(it); + if(SAME && !same(number, length))throw RangeError(WRONG_LENGTH); + return length; + }; + + var toOffset = function(it, BYTES){ + var offset = toInteger(it); + if(offset < 0 || offset % BYTES)throw RangeError('Wrong offset!'); + return offset; + }; + + var validate = function(it){ + if(isObject(it) && TYPED_ARRAY in it)return it; + throw TypeError(it + ' is not a typed array!'); + }; + + var allocate = function(C, length){ + if(!(isObject(C) && TYPED_CONSTRUCTOR in C)){ + throw TypeError('It is not a typed array constructor!'); + } return new C(length); + }; + + var speciesFromList = function(O, list){ + return fromList(speciesConstructor(O, O[DEF_CONSTRUCTOR]), list); + }; + + var fromList = function(C, list){ + var index = 0 + , length = list.length + , result = allocate(C, length); + while(length > index)result[index] = list[index++]; + return result; + }; + + var addGetter = function(it, key, internal){ + dP(it, key, {get: function(){ return this._d[internal]; }}); + }; + + var $from = function from(source /*, mapfn, thisArg */){ + var O = toObject(source) + , aLen = arguments.length + , mapfn = aLen > 1 ? arguments[1] : undefined + , mapping = mapfn !== undefined + , iterFn = getIterFn(O) + , i, length, values, result, step, iterator; + if(iterFn != undefined && !isArrayIter(iterFn)){ + for(iterator = iterFn.call(O), values = [], i = 0; !(step = iterator.next()).done; i++){ + values.push(step.value); + } O = values; + } + if(mapping && aLen > 2)mapfn = ctx(mapfn, arguments[2], 2); + for(i = 0, length = toLength(O.length), result = allocate(this, length); length > i; i++){ + result[i] = mapping ? mapfn(O[i], i) : O[i]; + } + return result; + }; + + var $of = function of(/*...items*/){ + var index = 0 + , length = arguments.length + , result = allocate(this, length); + while(length > index)result[index] = arguments[index++]; + return result; + }; + + // iOS Safari 6.x fails here + var TO_LOCALE_BUG = !!Uint8Array && fails(function(){ arrayToLocaleString.call(new Uint8Array(1)); }); + + var $toLocaleString = function toLocaleString(){ + return arrayToLocaleString.apply(TO_LOCALE_BUG ? arraySlice.call(validate(this)) : validate(this), arguments); + }; + + var proto = { + copyWithin: function copyWithin(target, start /*, end */){ + return arrayCopyWithin.call(validate(this), target, start, arguments.length > 2 ? arguments[2] : undefined); + }, + every: function every(callbackfn /*, thisArg */){ + return arrayEvery(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined); + }, + fill: function fill(value /*, start, end */){ // eslint-disable-line no-unused-vars + return arrayFill.apply(validate(this), arguments); + }, + filter: function filter(callbackfn /*, thisArg */){ + return speciesFromList(this, arrayFilter(validate(this), callbackfn, + arguments.length > 1 ? arguments[1] : undefined)); + }, + find: function find(predicate /*, thisArg */){ + return arrayFind(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined); + }, + findIndex: function findIndex(predicate /*, thisArg */){ + return arrayFindIndex(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined); + }, + forEach: function forEach(callbackfn /*, thisArg */){ + arrayForEach(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined); + }, + indexOf: function indexOf(searchElement /*, fromIndex */){ + return arrayIndexOf(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined); + }, + includes: function includes(searchElement /*, fromIndex */){ + return arrayIncludes(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined); + }, + join: function join(separator){ // eslint-disable-line no-unused-vars + return arrayJoin.apply(validate(this), arguments); + }, + lastIndexOf: function lastIndexOf(searchElement /*, fromIndex */){ // eslint-disable-line no-unused-vars + return arrayLastIndexOf.apply(validate(this), arguments); + }, + map: function map(mapfn /*, thisArg */){ + return $map(validate(this), mapfn, arguments.length > 1 ? arguments[1] : undefined); + }, + reduce: function reduce(callbackfn /*, initialValue */){ // eslint-disable-line no-unused-vars + return arrayReduce.apply(validate(this), arguments); + }, + reduceRight: function reduceRight(callbackfn /*, initialValue */){ // eslint-disable-line no-unused-vars + return arrayReduceRight.apply(validate(this), arguments); + }, + reverse: function reverse(){ + var that = this + , length = validate(that).length + , middle = Math.floor(length / 2) + , index = 0 + , value; + while(index < middle){ + value = that[index]; + that[index++] = that[--length]; + that[length] = value; + } return that; + }, + some: function some(callbackfn /*, thisArg */){ + return arraySome(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined); + }, + sort: function sort(comparefn){ + return arraySort.call(validate(this), comparefn); + }, + subarray: function subarray(begin, end){ + var O = validate(this) + , length = O.length + , $begin = toIndex(begin, length); + return new (speciesConstructor(O, O[DEF_CONSTRUCTOR]))( + O.buffer, + O.byteOffset + $begin * O.BYTES_PER_ELEMENT, + toLength((end === undefined ? length : toIndex(end, length)) - $begin) + ); + } + }; + + var $slice = function slice(start, end){ + return speciesFromList(this, arraySlice.call(validate(this), start, end)); + }; + + var $set = function set(arrayLike /*, offset */){ + validate(this); + var offset = toOffset(arguments[1], 1) + , length = this.length + , src = toObject(arrayLike) + , len = toLength(src.length) + , index = 0; + if(len + offset > length)throw RangeError(WRONG_LENGTH); + while(index < len)this[offset + index] = src[index++]; + }; + + var $iterators = { + entries: function entries(){ + return arrayEntries.call(validate(this)); + }, + keys: function keys(){ + return arrayKeys.call(validate(this)); + }, + values: function values(){ + return arrayValues.call(validate(this)); + } + }; + + var isTAIndex = function(target, key){ + return isObject(target) + && target[TYPED_ARRAY] + && typeof key != 'symbol' + && key in target + && String(+key) == String(key); + }; + var $getDesc = function getOwnPropertyDescriptor(target, key){ + return isTAIndex(target, key = toPrimitive(key, true)) + ? propertyDesc(2, target[key]) + : gOPD(target, key); + }; + var $setDesc = function defineProperty(target, key, desc){ + if(isTAIndex(target, key = toPrimitive(key, true)) + && isObject(desc) + && has(desc, 'value') + && !has(desc, 'get') + && !has(desc, 'set') + // TODO: add validation descriptor w/o calling accessors + && !desc.configurable + && (!has(desc, 'writable') || desc.writable) + && (!has(desc, 'enumerable') || desc.enumerable) + ){ + target[key] = desc.value; + return target; + } else return dP(target, key, desc); + }; + + if(!ALL_CONSTRUCTORS){ + $GOPD.f = $getDesc; + $DP.f = $setDesc; + } + + $export($export.S + $export.F * !ALL_CONSTRUCTORS, 'Object', { + getOwnPropertyDescriptor: $getDesc, + defineProperty: $setDesc + }); + + if(fails(function(){ arrayToString.call({}); })){ + arrayToString = arrayToLocaleString = function toString(){ + return arrayJoin.call(this); + } + } + + var $TypedArrayPrototype$ = redefineAll({}, proto); + redefineAll($TypedArrayPrototype$, $iterators); + hide($TypedArrayPrototype$, ITERATOR, $iterators.values); + redefineAll($TypedArrayPrototype$, { + slice: $slice, + set: $set, + constructor: function(){ /* noop */ }, + toString: arrayToString, + toLocaleString: $toLocaleString + }); + addGetter($TypedArrayPrototype$, 'buffer', 'b'); + addGetter($TypedArrayPrototype$, 'byteOffset', 'o'); + addGetter($TypedArrayPrototype$, 'byteLength', 'l'); + addGetter($TypedArrayPrototype$, 'length', 'e'); + dP($TypedArrayPrototype$, TAG, { + get: function(){ return this[TYPED_ARRAY]; } + }); + + module.exports = function(KEY, BYTES, wrapper, CLAMPED){ + CLAMPED = !!CLAMPED; + var NAME = KEY + (CLAMPED ? 'Clamped' : '') + 'Array' + , ISNT_UINT8 = NAME != 'Uint8Array' + , GETTER = 'get' + KEY + , SETTER = 'set' + KEY + , TypedArray = global[NAME] + , Base = TypedArray || {} + , TAC = TypedArray && getPrototypeOf(TypedArray) + , FORCED = !TypedArray || !$typed.ABV + , O = {} + , TypedArrayPrototype = TypedArray && TypedArray[PROTOTYPE]; + var getter = function(that, index){ + var data = that._d; + return data.v[GETTER](index * BYTES + data.o, LITTLE_ENDIAN); + }; + var setter = function(that, index, value){ + var data = that._d; + if(CLAMPED)value = (value = Math.round(value)) < 0 ? 0 : value > 0xff ? 0xff : value & 0xff; + data.v[SETTER](index * BYTES + data.o, value, LITTLE_ENDIAN); + }; + var addElement = function(that, index){ + dP(that, index, { + get: function(){ + return getter(this, index); + }, + set: function(value){ + return setter(this, index, value); + }, + enumerable: true + }); + }; + if(FORCED){ + TypedArray = wrapper(function(that, data, $offset, $length){ + anInstance(that, TypedArray, NAME, '_d'); + var index = 0 + , offset = 0 + , buffer, byteLength, length, klass; + if(!isObject(data)){ + length = strictToLength(data, true) + byteLength = length * BYTES; + buffer = new $ArrayBuffer(byteLength); + } else if(data instanceof $ArrayBuffer || (klass = classof(data)) == ARRAY_BUFFER || klass == SHARED_BUFFER){ + buffer = data; + offset = toOffset($offset, BYTES); + var $len = data.byteLength; + if($length === undefined){ + if($len % BYTES)throw RangeError(WRONG_LENGTH); + byteLength = $len - offset; + if(byteLength < 0)throw RangeError(WRONG_LENGTH); + } else { + byteLength = toLength($length) * BYTES; + if(byteLength + offset > $len)throw RangeError(WRONG_LENGTH); + } + length = byteLength / BYTES; + } else if(TYPED_ARRAY in data){ + return fromList(TypedArray, data); + } else { + return $from.call(TypedArray, data); + } + hide(that, '_d', { + b: buffer, + o: offset, + l: byteLength, + e: length, + v: new $DataView(buffer) + }); + while(index < length)addElement(that, index++); + }); + TypedArrayPrototype = TypedArray[PROTOTYPE] = create($TypedArrayPrototype$); + hide(TypedArrayPrototype, 'constructor', TypedArray); + } else if(!$iterDetect(function(iter){ + // V8 works with iterators, but fails in many other cases + // https://code.google.com/p/v8/issues/detail?id=4552 + new TypedArray(null); // eslint-disable-line no-new + new TypedArray(iter); // eslint-disable-line no-new + }, true)){ + TypedArray = wrapper(function(that, data, $offset, $length){ + anInstance(that, TypedArray, NAME); + var klass; + // `ws` module bug, temporarily remove validation length for Uint8Array + // https://github.com/websockets/ws/pull/645 + if(!isObject(data))return new Base(strictToLength(data, ISNT_UINT8)); + if(data instanceof $ArrayBuffer || (klass = classof(data)) == ARRAY_BUFFER || klass == SHARED_BUFFER){ + return $length !== undefined + ? new Base(data, toOffset($offset, BYTES), $length) + : $offset !== undefined + ? new Base(data, toOffset($offset, BYTES)) + : new Base(data); + } + if(TYPED_ARRAY in data)return fromList(TypedArray, data); + return $from.call(TypedArray, data); + }); + arrayForEach(TAC !== Function.prototype ? gOPN(Base).concat(gOPN(TAC)) : gOPN(Base), function(key){ + if(!(key in TypedArray))hide(TypedArray, key, Base[key]); + }); + TypedArray[PROTOTYPE] = TypedArrayPrototype; + if(!LIBRARY)TypedArrayPrototype.constructor = TypedArray; + } + var $nativeIterator = TypedArrayPrototype[ITERATOR] + , CORRECT_ITER_NAME = !!$nativeIterator && ($nativeIterator.name == 'values' || $nativeIterator.name == undefined) + , $iterator = $iterators.values; + hide(TypedArray, TYPED_CONSTRUCTOR, true); + hide(TypedArrayPrototype, TYPED_ARRAY, NAME); + hide(TypedArrayPrototype, VIEW, true); + hide(TypedArrayPrototype, DEF_CONSTRUCTOR, TypedArray); + + if(CLAMPED ? new TypedArray(1)[TAG] != NAME : !(TAG in TypedArrayPrototype)){ + dP(TypedArrayPrototype, TAG, { + get: function(){ return NAME; } + }); + } + + O[NAME] = TypedArray; + + $export($export.G + $export.W + $export.F * (TypedArray != Base), O); + + $export($export.S, NAME, { + BYTES_PER_ELEMENT: BYTES, + from: $from, + of: $of + }); + + if(!(BYTES_PER_ELEMENT in TypedArrayPrototype))hide(TypedArrayPrototype, BYTES_PER_ELEMENT, BYTES); + + $export($export.P, NAME, proto); + + setSpecies(NAME); + + $export($export.P + $export.F * FORCED_SET, NAME, {set: $set}); + + $export($export.P + $export.F * !CORRECT_ITER_NAME, NAME, $iterators); + + $export($export.P + $export.F * (TypedArrayPrototype.toString != arrayToString), NAME, {toString: arrayToString}); + + $export($export.P + $export.F * fails(function(){ + new TypedArray(1).slice(); + }), NAME, {slice: $slice}); + + $export($export.P + $export.F * (fails(function(){ + return [1, 2].toLocaleString() != new TypedArray([1, 2]).toLocaleString() + }) || !fails(function(){ + TypedArrayPrototype.toLocaleString.call([1, 2]); + })), NAME, {toLocaleString: $toLocaleString}); + + Iterators[NAME] = CORRECT_ITER_NAME ? $nativeIterator : $iterator; + if(!LIBRARY && !CORRECT_ITER_NAME)hide(TypedArrayPrototype, ITERATOR, $iterator); + }; +} else module.exports = function(){ /* empty */ }; +},{"./_an-instance":157,"./_array-copy-within":159,"./_array-fill":160,"./_array-includes":162,"./_array-methods":163,"./_classof":168,"./_ctx":176,"./_descriptors":179,"./_export":183,"./_fails":185,"./_global":189,"./_has":190,"./_hide":191,"./_is-array-iter":197,"./_is-object":200,"./_iter-detect":205,"./_iterators":207,"./_library":209,"./_object-create":217,"./_object-dp":218,"./_object-gopd":221,"./_object-gopn":223,"./_object-gpo":225,"./_property-desc":236,"./_redefine-all":237,"./_same-value":240,"./_set-species":242,"./_species-constructor":246,"./_to-index":256,"./_to-integer":257,"./_to-length":259,"./_to-object":260,"./_to-primitive":261,"./_typed":264,"./_typed-buffer":263,"./_uid":265,"./_wks":268,"./core.get-iterator-method":269,"./es6.array.iterator":281}],263:[function(require,module,exports){ +'use strict'; +var global = require('./_global') + , DESCRIPTORS = require('./_descriptors') + , LIBRARY = require('./_library') + , $typed = require('./_typed') + , hide = require('./_hide') + , redefineAll = require('./_redefine-all') + , fails = require('./_fails') + , anInstance = require('./_an-instance') + , toInteger = require('./_to-integer') + , toLength = require('./_to-length') + , gOPN = require('./_object-gopn').f + , dP = require('./_object-dp').f + , arrayFill = require('./_array-fill') + , setToStringTag = require('./_set-to-string-tag') + , ARRAY_BUFFER = 'ArrayBuffer' + , DATA_VIEW = 'DataView' + , PROTOTYPE = 'prototype' + , WRONG_LENGTH = 'Wrong length!' + , WRONG_INDEX = 'Wrong index!' + , $ArrayBuffer = global[ARRAY_BUFFER] + , $DataView = global[DATA_VIEW] + , Math = global.Math + , RangeError = global.RangeError + , Infinity = global.Infinity + , BaseBuffer = $ArrayBuffer + , abs = Math.abs + , pow = Math.pow + , floor = Math.floor + , log = Math.log + , LN2 = Math.LN2 + , BUFFER = 'buffer' + , BYTE_LENGTH = 'byteLength' + , BYTE_OFFSET = 'byteOffset' + , $BUFFER = DESCRIPTORS ? '_b' : BUFFER + , $LENGTH = DESCRIPTORS ? '_l' : BYTE_LENGTH + , $OFFSET = DESCRIPTORS ? '_o' : BYTE_OFFSET; + +// IEEE754 conversions based on https://github.com/feross/ieee754 +var packIEEE754 = function(value, mLen, nBytes){ + var buffer = Array(nBytes) + , eLen = nBytes * 8 - mLen - 1 + , eMax = (1 << eLen) - 1 + , eBias = eMax >> 1 + , rt = mLen === 23 ? pow(2, -24) - pow(2, -77) : 0 + , i = 0 + , s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0 + , e, m, c; + value = abs(value) + if(value != value || value === Infinity){ + m = value != value ? 1 : 0; + e = eMax; + } else { + e = floor(log(value) / LN2); + if(value * (c = pow(2, -e)) < 1){ + e--; + c *= 2; + } + if(e + eBias >= 1){ + value += rt / c; + } else { + value += rt * pow(2, 1 - eBias); + } + if(value * c >= 2){ + e++; + c /= 2; + } + if(e + eBias >= eMax){ + m = 0; + e = eMax; + } else if(e + eBias >= 1){ + m = (value * c - 1) * pow(2, mLen); + e = e + eBias; + } else { + m = value * pow(2, eBias - 1) * pow(2, mLen); + e = 0; + } + } + for(; mLen >= 8; buffer[i++] = m & 255, m /= 256, mLen -= 8); + e = e << mLen | m; + eLen += mLen; + for(; eLen > 0; buffer[i++] = e & 255, e /= 256, eLen -= 8); + buffer[--i] |= s * 128; + return buffer; +}; +var unpackIEEE754 = function(buffer, mLen, nBytes){ + var eLen = nBytes * 8 - mLen - 1 + , eMax = (1 << eLen) - 1 + , eBias = eMax >> 1 + , nBits = eLen - 7 + , i = nBytes - 1 + , s = buffer[i--] + , e = s & 127 + , m; + s >>= 7; + for(; nBits > 0; e = e * 256 + buffer[i], i--, nBits -= 8); + m = e & (1 << -nBits) - 1; + e >>= -nBits; + nBits += mLen; + for(; nBits > 0; m = m * 256 + buffer[i], i--, nBits -= 8); + if(e === 0){ + e = 1 - eBias; + } else if(e === eMax){ + return m ? NaN : s ? -Infinity : Infinity; + } else { + m = m + pow(2, mLen); + e = e - eBias; + } return (s ? -1 : 1) * m * pow(2, e - mLen); +}; + +var unpackI32 = function(bytes){ + return bytes[3] << 24 | bytes[2] << 16 | bytes[1] << 8 | bytes[0]; +}; +var packI8 = function(it){ + return [it & 0xff]; +}; +var packI16 = function(it){ + return [it & 0xff, it >> 8 & 0xff]; +}; +var packI32 = function(it){ + return [it & 0xff, it >> 8 & 0xff, it >> 16 & 0xff, it >> 24 & 0xff]; +}; +var packF64 = function(it){ + return packIEEE754(it, 52, 8); +}; +var packF32 = function(it){ + return packIEEE754(it, 23, 4); +}; + +var addGetter = function(C, key, internal){ + dP(C[PROTOTYPE], key, {get: function(){ return this[internal]; }}); +}; + +var get = function(view, bytes, index, isLittleEndian){ + var numIndex = +index + , intIndex = toInteger(numIndex); + if(numIndex != intIndex || intIndex < 0 || intIndex + bytes > view[$LENGTH])throw RangeError(WRONG_INDEX); + var store = view[$BUFFER]._b + , start = intIndex + view[$OFFSET] + , pack = store.slice(start, start + bytes); + return isLittleEndian ? pack : pack.reverse(); +}; +var set = function(view, bytes, index, conversion, value, isLittleEndian){ + var numIndex = +index + , intIndex = toInteger(numIndex); + if(numIndex != intIndex || intIndex < 0 || intIndex + bytes > view[$LENGTH])throw RangeError(WRONG_INDEX); + var store = view[$BUFFER]._b + , start = intIndex + view[$OFFSET] + , pack = conversion(+value); + for(var i = 0; i < bytes; i++)store[start + i] = pack[isLittleEndian ? i : bytes - i - 1]; +}; + +var validateArrayBufferArguments = function(that, length){ + anInstance(that, $ArrayBuffer, ARRAY_BUFFER); + var numberLength = +length + , byteLength = toLength(numberLength); + if(numberLength != byteLength)throw RangeError(WRONG_LENGTH); + return byteLength; +}; + +if(!$typed.ABV){ + $ArrayBuffer = function ArrayBuffer(length){ + var byteLength = validateArrayBufferArguments(this, length); + this._b = arrayFill.call(Array(byteLength), 0); + this[$LENGTH] = byteLength; + }; + + $DataView = function DataView(buffer, byteOffset, byteLength){ + anInstance(this, $DataView, DATA_VIEW); + anInstance(buffer, $ArrayBuffer, DATA_VIEW); + var bufferLength = buffer[$LENGTH] + , offset = toInteger(byteOffset); + if(offset < 0 || offset > bufferLength)throw RangeError('Wrong offset!'); + byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength); + if(offset + byteLength > bufferLength)throw RangeError(WRONG_LENGTH); + this[$BUFFER] = buffer; + this[$OFFSET] = offset; + this[$LENGTH] = byteLength; + }; + + if(DESCRIPTORS){ + addGetter($ArrayBuffer, BYTE_LENGTH, '_l'); + addGetter($DataView, BUFFER, '_b'); + addGetter($DataView, BYTE_LENGTH, '_l'); + addGetter($DataView, BYTE_OFFSET, '_o'); + } + + redefineAll($DataView[PROTOTYPE], { + getInt8: function getInt8(byteOffset){ + return get(this, 1, byteOffset)[0] << 24 >> 24; + }, + getUint8: function getUint8(byteOffset){ + return get(this, 1, byteOffset)[0]; + }, + getInt16: function getInt16(byteOffset /*, littleEndian */){ + var bytes = get(this, 2, byteOffset, arguments[1]); + return (bytes[1] << 8 | bytes[0]) << 16 >> 16; + }, + getUint16: function getUint16(byteOffset /*, littleEndian */){ + var bytes = get(this, 2, byteOffset, arguments[1]); + return bytes[1] << 8 | bytes[0]; + }, + getInt32: function getInt32(byteOffset /*, littleEndian */){ + return unpackI32(get(this, 4, byteOffset, arguments[1])); + }, + getUint32: function getUint32(byteOffset /*, littleEndian */){ + return unpackI32(get(this, 4, byteOffset, arguments[1])) >>> 0; + }, + getFloat32: function getFloat32(byteOffset /*, littleEndian */){ + return unpackIEEE754(get(this, 4, byteOffset, arguments[1]), 23, 4); + }, + getFloat64: function getFloat64(byteOffset /*, littleEndian */){ + return unpackIEEE754(get(this, 8, byteOffset, arguments[1]), 52, 8); + }, + setInt8: function setInt8(byteOffset, value){ + set(this, 1, byteOffset, packI8, value); + }, + setUint8: function setUint8(byteOffset, value){ + set(this, 1, byteOffset, packI8, value); + }, + setInt16: function setInt16(byteOffset, value /*, littleEndian */){ + set(this, 2, byteOffset, packI16, value, arguments[2]); + }, + setUint16: function setUint16(byteOffset, value /*, littleEndian */){ + set(this, 2, byteOffset, packI16, value, arguments[2]); + }, + setInt32: function setInt32(byteOffset, value /*, littleEndian */){ + set(this, 4, byteOffset, packI32, value, arguments[2]); + }, + setUint32: function setUint32(byteOffset, value /*, littleEndian */){ + set(this, 4, byteOffset, packI32, value, arguments[2]); + }, + setFloat32: function setFloat32(byteOffset, value /*, littleEndian */){ + set(this, 4, byteOffset, packF32, value, arguments[2]); + }, + setFloat64: function setFloat64(byteOffset, value /*, littleEndian */){ + set(this, 8, byteOffset, packF64, value, arguments[2]); + } + }); +} else { + if(!fails(function(){ + new $ArrayBuffer; // eslint-disable-line no-new + }) || !fails(function(){ + new $ArrayBuffer(.5); // eslint-disable-line no-new + })){ + $ArrayBuffer = function ArrayBuffer(length){ + return new BaseBuffer(validateArrayBufferArguments(this, length)); + }; + var ArrayBufferProto = $ArrayBuffer[PROTOTYPE] = BaseBuffer[PROTOTYPE]; + for(var keys = gOPN(BaseBuffer), j = 0, key; keys.length > j; ){ + if(!((key = keys[j++]) in $ArrayBuffer))hide($ArrayBuffer, key, BaseBuffer[key]); + }; + if(!LIBRARY)ArrayBufferProto.constructor = $ArrayBuffer; + } + // iOS Safari 7.x bug + var view = new $DataView(new $ArrayBuffer(2)) + , $setInt8 = $DataView[PROTOTYPE].setInt8; + view.setInt8(0, 2147483648); + view.setInt8(1, 2147483649); + if(view.getInt8(0) || !view.getInt8(1))redefineAll($DataView[PROTOTYPE], { + setInt8: function setInt8(byteOffset, value){ + $setInt8.call(this, byteOffset, value << 24 >> 24); + }, + setUint8: function setUint8(byteOffset, value){ + $setInt8.call(this, byteOffset, value << 24 >> 24); + } + }, true); +} +setToStringTag($ArrayBuffer, ARRAY_BUFFER); +setToStringTag($DataView, DATA_VIEW); +hide($DataView[PROTOTYPE], $typed.VIEW, true); +exports[ARRAY_BUFFER] = $ArrayBuffer; +exports[DATA_VIEW] = $DataView; +},{"./_an-instance":157,"./_array-fill":160,"./_descriptors":179,"./_fails":185,"./_global":189,"./_hide":191,"./_library":209,"./_object-dp":218,"./_object-gopn":223,"./_redefine-all":237,"./_set-to-string-tag":243,"./_to-integer":257,"./_to-length":259,"./_typed":264}],264:[function(require,module,exports){ +var global = require('./_global') + , hide = require('./_hide') + , uid = require('./_uid') + , TYPED = uid('typed_array') + , VIEW = uid('view') + , ABV = !!(global.ArrayBuffer && global.DataView) + , CONSTR = ABV + , i = 0, l = 9, Typed; + +var TypedArrayConstructors = ( + 'Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array' +).split(','); + +while(i < l){ + if(Typed = global[TypedArrayConstructors[i++]]){ + hide(Typed.prototype, TYPED, true); + hide(Typed.prototype, VIEW, true); + } else CONSTR = false; +} + +module.exports = { + ABV: ABV, + CONSTR: CONSTR, + TYPED: TYPED, + VIEW: VIEW +}; +},{"./_global":189,"./_hide":191,"./_uid":265}],265:[function(require,module,exports){ +var id = 0 + , px = Math.random(); +module.exports = function(key){ + return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36)); +}; +},{}],266:[function(require,module,exports){ +var global = require('./_global') + , core = require('./_core') + , LIBRARY = require('./_library') + , wksExt = require('./_wks-ext') + , defineProperty = require('./_object-dp').f; +module.exports = function(name){ + var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {}); + if(name.charAt(0) != '_' && !(name in $Symbol))defineProperty($Symbol, name, {value: wksExt.f(name)}); +}; +},{"./_core":174,"./_global":189,"./_library":209,"./_object-dp":218,"./_wks-ext":267}],267:[function(require,module,exports){ +exports.f = require('./_wks'); +},{"./_wks":268}],268:[function(require,module,exports){ +var store = require('./_shared')('wks') + , uid = require('./_uid') + , Symbol = require('./_global').Symbol + , USE_SYMBOL = typeof Symbol == 'function'; + +var $exports = module.exports = function(name){ + return store[name] || (store[name] = + USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name)); +}; + +$exports.store = store; +},{"./_global":189,"./_shared":245,"./_uid":265}],269:[function(require,module,exports){ +var classof = require('./_classof') + , ITERATOR = require('./_wks')('iterator') + , Iterators = require('./_iterators'); +module.exports = require('./_core').getIteratorMethod = function(it){ + if(it != undefined)return it[ITERATOR] + || it['@@iterator'] + || Iterators[classof(it)]; +}; +},{"./_classof":168,"./_core":174,"./_iterators":207,"./_wks":268}],270:[function(require,module,exports){ +// https://github.com/benjamingr/RexExp.escape +var $export = require('./_export') + , $re = require('./_replacer')(/[\\^$*+?.()|[\]{}]/g, '\\$&'); + +$export($export.S, 'RegExp', {escape: function escape(it){ return $re(it); }}); + +},{"./_export":183,"./_replacer":239}],271:[function(require,module,exports){ +// 22.1.3.3 Array.prototype.copyWithin(target, start, end = this.length) +var $export = require('./_export'); + +$export($export.P, 'Array', {copyWithin: require('./_array-copy-within')}); + +require('./_add-to-unscopables')('copyWithin'); +},{"./_add-to-unscopables":156,"./_array-copy-within":159,"./_export":183}],272:[function(require,module,exports){ +'use strict'; +var $export = require('./_export') + , $every = require('./_array-methods')(4); + +$export($export.P + $export.F * !require('./_strict-method')([].every, true), 'Array', { + // 22.1.3.5 / 15.4.4.16 Array.prototype.every(callbackfn [, thisArg]) + every: function every(callbackfn /* , thisArg */){ + return $every(this, callbackfn, arguments[1]); + } +}); +},{"./_array-methods":163,"./_export":183,"./_strict-method":247}],273:[function(require,module,exports){ +// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length) +var $export = require('./_export'); + +$export($export.P, 'Array', {fill: require('./_array-fill')}); + +require('./_add-to-unscopables')('fill'); +},{"./_add-to-unscopables":156,"./_array-fill":160,"./_export":183}],274:[function(require,module,exports){ +'use strict'; +var $export = require('./_export') + , $filter = require('./_array-methods')(2); + +$export($export.P + $export.F * !require('./_strict-method')([].filter, true), 'Array', { + // 22.1.3.7 / 15.4.4.20 Array.prototype.filter(callbackfn [, thisArg]) + filter: function filter(callbackfn /* , thisArg */){ + return $filter(this, callbackfn, arguments[1]); + } +}); +},{"./_array-methods":163,"./_export":183,"./_strict-method":247}],275:[function(require,module,exports){ +'use strict'; +// 22.1.3.9 Array.prototype.findIndex(predicate, thisArg = undefined) +var $export = require('./_export') + , $find = require('./_array-methods')(6) + , KEY = 'findIndex' + , forced = true; +// Shouldn't skip holes +if(KEY in [])Array(1)[KEY](function(){ forced = false; }); +$export($export.P + $export.F * forced, 'Array', { + findIndex: function findIndex(callbackfn/*, that = undefined */){ + return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); + } +}); +require('./_add-to-unscopables')(KEY); +},{"./_add-to-unscopables":156,"./_array-methods":163,"./_export":183}],276:[function(require,module,exports){ +'use strict'; +// 22.1.3.8 Array.prototype.find(predicate, thisArg = undefined) +var $export = require('./_export') + , $find = require('./_array-methods')(5) + , KEY = 'find' + , forced = true; +// Shouldn't skip holes +if(KEY in [])Array(1)[KEY](function(){ forced = false; }); +$export($export.P + $export.F * forced, 'Array', { + find: function find(callbackfn/*, that = undefined */){ + return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); + } +}); +require('./_add-to-unscopables')(KEY); +},{"./_add-to-unscopables":156,"./_array-methods":163,"./_export":183}],277:[function(require,module,exports){ +'use strict'; +var $export = require('./_export') + , $forEach = require('./_array-methods')(0) + , STRICT = require('./_strict-method')([].forEach, true); + +$export($export.P + $export.F * !STRICT, 'Array', { + // 22.1.3.10 / 15.4.4.18 Array.prototype.forEach(callbackfn [, thisArg]) + forEach: function forEach(callbackfn /* , thisArg */){ + return $forEach(this, callbackfn, arguments[1]); + } +}); +},{"./_array-methods":163,"./_export":183,"./_strict-method":247}],278:[function(require,module,exports){ +'use strict'; +var ctx = require('./_ctx') + , $export = require('./_export') + , toObject = require('./_to-object') + , call = require('./_iter-call') + , isArrayIter = require('./_is-array-iter') + , toLength = require('./_to-length') + , createProperty = require('./_create-property') + , getIterFn = require('./core.get-iterator-method'); + +$export($export.S + $export.F * !require('./_iter-detect')(function(iter){ Array.from(iter); }), 'Array', { + // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined) + from: function from(arrayLike/*, mapfn = undefined, thisArg = undefined*/){ + var O = toObject(arrayLike) + , C = typeof this == 'function' ? this : Array + , aLen = arguments.length + , mapfn = aLen > 1 ? arguments[1] : undefined + , mapping = mapfn !== undefined + , index = 0 + , iterFn = getIterFn(O) + , length, result, step, iterator; + if(mapping)mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2); + // if object isn't iterable or it's array with default iterator - use simple case + if(iterFn != undefined && !(C == Array && isArrayIter(iterFn))){ + for(iterator = iterFn.call(O), result = new C; !(step = iterator.next()).done; index++){ + createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value); + } + } else { + length = toLength(O.length); + for(result = new C(length); length > index; index++){ + createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]); + } + } + result.length = index; + return result; + } +}); + +},{"./_create-property":175,"./_ctx":176,"./_export":183,"./_is-array-iter":197,"./_iter-call":202,"./_iter-detect":205,"./_to-length":259,"./_to-object":260,"./core.get-iterator-method":269}],279:[function(require,module,exports){ +'use strict'; +var $export = require('./_export') + , $indexOf = require('./_array-includes')(false) + , $native = [].indexOf + , NEGATIVE_ZERO = !!$native && 1 / [1].indexOf(1, -0) < 0; + +$export($export.P + $export.F * (NEGATIVE_ZERO || !require('./_strict-method')($native)), 'Array', { + // 22.1.3.11 / 15.4.4.14 Array.prototype.indexOf(searchElement [, fromIndex]) + indexOf: function indexOf(searchElement /*, fromIndex = 0 */){ + return NEGATIVE_ZERO + // convert -0 to +0 + ? $native.apply(this, arguments) || 0 + : $indexOf(this, searchElement, arguments[1]); + } +}); +},{"./_array-includes":162,"./_export":183,"./_strict-method":247}],280:[function(require,module,exports){ +// 22.1.2.2 / 15.4.3.2 Array.isArray(arg) +var $export = require('./_export'); + +$export($export.S, 'Array', {isArray: require('./_is-array')}); +},{"./_export":183,"./_is-array":198}],281:[function(require,module,exports){ +'use strict'; +var addToUnscopables = require('./_add-to-unscopables') + , step = require('./_iter-step') + , Iterators = require('./_iterators') + , toIObject = require('./_to-iobject'); + +// 22.1.3.4 Array.prototype.entries() +// 22.1.3.13 Array.prototype.keys() +// 22.1.3.29 Array.prototype.values() +// 22.1.3.30 Array.prototype[@@iterator]() +module.exports = require('./_iter-define')(Array, 'Array', function(iterated, kind){ + this._t = toIObject(iterated); // target + this._i = 0; // next index + this._k = kind; // kind +// 22.1.5.2.1 %ArrayIteratorPrototype%.next() +}, function(){ + var O = this._t + , kind = this._k + , index = this._i++; + if(!O || index >= O.length){ + this._t = undefined; + return step(1); + } + if(kind == 'keys' )return step(0, index); + if(kind == 'values')return step(0, O[index]); + return step(0, [index, O[index]]); +}, 'values'); + +// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7) +Iterators.Arguments = Iterators.Array; + +addToUnscopables('keys'); +addToUnscopables('values'); +addToUnscopables('entries'); +},{"./_add-to-unscopables":156,"./_iter-define":204,"./_iter-step":206,"./_iterators":207,"./_to-iobject":258}],282:[function(require,module,exports){ +'use strict'; +// 22.1.3.13 Array.prototype.join(separator) +var $export = require('./_export') + , toIObject = require('./_to-iobject') + , arrayJoin = [].join; + +// fallback for not array-like strings +$export($export.P + $export.F * (require('./_iobject') != Object || !require('./_strict-method')(arrayJoin)), 'Array', { + join: function join(separator){ + return arrayJoin.call(toIObject(this), separator === undefined ? ',' : separator); + } +}); +},{"./_export":183,"./_iobject":196,"./_strict-method":247,"./_to-iobject":258}],283:[function(require,module,exports){ +'use strict'; +var $export = require('./_export') + , toIObject = require('./_to-iobject') + , toInteger = require('./_to-integer') + , toLength = require('./_to-length') + , $native = [].lastIndexOf + , NEGATIVE_ZERO = !!$native && 1 / [1].lastIndexOf(1, -0) < 0; + +$export($export.P + $export.F * (NEGATIVE_ZERO || !require('./_strict-method')($native)), 'Array', { + // 22.1.3.14 / 15.4.4.15 Array.prototype.lastIndexOf(searchElement [, fromIndex]) + lastIndexOf: function lastIndexOf(searchElement /*, fromIndex = @[*-1] */){ + // convert -0 to +0 + if(NEGATIVE_ZERO)return $native.apply(this, arguments) || 0; + var O = toIObject(this) + , length = toLength(O.length) + , index = length - 1; + if(arguments.length > 1)index = Math.min(index, toInteger(arguments[1])); + if(index < 0)index = length + index; + for(;index >= 0; index--)if(index in O)if(O[index] === searchElement)return index || 0; + return -1; + } +}); +},{"./_export":183,"./_strict-method":247,"./_to-integer":257,"./_to-iobject":258,"./_to-length":259}],284:[function(require,module,exports){ +'use strict'; +var $export = require('./_export') + , $map = require('./_array-methods')(1); + +$export($export.P + $export.F * !require('./_strict-method')([].map, true), 'Array', { + // 22.1.3.15 / 15.4.4.19 Array.prototype.map(callbackfn [, thisArg]) + map: function map(callbackfn /* , thisArg */){ + return $map(this, callbackfn, arguments[1]); + } +}); +},{"./_array-methods":163,"./_export":183,"./_strict-method":247}],285:[function(require,module,exports){ +'use strict'; +var $export = require('./_export') + , createProperty = require('./_create-property'); + +// WebKit Array.of isn't generic +$export($export.S + $export.F * require('./_fails')(function(){ + function F(){} + return !(Array.of.call(F) instanceof F); +}), 'Array', { + // 22.1.2.3 Array.of( ...items) + of: function of(/* ...args */){ + var index = 0 + , aLen = arguments.length + , result = new (typeof this == 'function' ? this : Array)(aLen); + while(aLen > index)createProperty(result, index, arguments[index++]); + result.length = aLen; + return result; + } +}); +},{"./_create-property":175,"./_export":183,"./_fails":185}],286:[function(require,module,exports){ +'use strict'; +var $export = require('./_export') + , $reduce = require('./_array-reduce'); + +$export($export.P + $export.F * !require('./_strict-method')([].reduceRight, true), 'Array', { + // 22.1.3.19 / 15.4.4.22 Array.prototype.reduceRight(callbackfn [, initialValue]) + reduceRight: function reduceRight(callbackfn /* , initialValue */){ + return $reduce(this, callbackfn, arguments.length, arguments[1], true); + } +}); +},{"./_array-reduce":164,"./_export":183,"./_strict-method":247}],287:[function(require,module,exports){ +'use strict'; +var $export = require('./_export') + , $reduce = require('./_array-reduce'); + +$export($export.P + $export.F * !require('./_strict-method')([].reduce, true), 'Array', { + // 22.1.3.18 / 15.4.4.21 Array.prototype.reduce(callbackfn [, initialValue]) + reduce: function reduce(callbackfn /* , initialValue */){ + return $reduce(this, callbackfn, arguments.length, arguments[1], false); + } +}); +},{"./_array-reduce":164,"./_export":183,"./_strict-method":247}],288:[function(require,module,exports){ +'use strict'; +var $export = require('./_export') + , html = require('./_html') + , cof = require('./_cof') + , toIndex = require('./_to-index') + , toLength = require('./_to-length') + , arraySlice = [].slice; + +// fallback for not array-like ES3 strings and DOM objects +$export($export.P + $export.F * require('./_fails')(function(){ + if(html)arraySlice.call(html); +}), 'Array', { + slice: function slice(begin, end){ + var len = toLength(this.length) + , klass = cof(this); + end = end === undefined ? len : end; + if(klass == 'Array')return arraySlice.call(this, begin, end); + var start = toIndex(begin, len) + , upTo = toIndex(end, len) + , size = toLength(upTo - start) + , cloned = Array(size) + , i = 0; + for(; i < size; i++)cloned[i] = klass == 'String' + ? this.charAt(start + i) + : this[start + i]; + return cloned; + } +}); +},{"./_cof":169,"./_export":183,"./_fails":185,"./_html":192,"./_to-index":256,"./_to-length":259}],289:[function(require,module,exports){ +'use strict'; +var $export = require('./_export') + , $some = require('./_array-methods')(3); + +$export($export.P + $export.F * !require('./_strict-method')([].some, true), 'Array', { + // 22.1.3.23 / 15.4.4.17 Array.prototype.some(callbackfn [, thisArg]) + some: function some(callbackfn /* , thisArg */){ + return $some(this, callbackfn, arguments[1]); + } +}); +},{"./_array-methods":163,"./_export":183,"./_strict-method":247}],290:[function(require,module,exports){ +'use strict'; +var $export = require('./_export') + , aFunction = require('./_a-function') + , toObject = require('./_to-object') + , fails = require('./_fails') + , $sort = [].sort + , test = [1, 2, 3]; + +$export($export.P + $export.F * (fails(function(){ + // IE8- + test.sort(undefined); +}) || !fails(function(){ + // V8 bug + test.sort(null); + // Old WebKit +}) || !require('./_strict-method')($sort)), 'Array', { + // 22.1.3.25 Array.prototype.sort(comparefn) + sort: function sort(comparefn){ + return comparefn === undefined + ? $sort.call(toObject(this)) + : $sort.call(toObject(this), aFunction(comparefn)); + } +}); +},{"./_a-function":154,"./_export":183,"./_fails":185,"./_strict-method":247,"./_to-object":260}],291:[function(require,module,exports){ +require('./_set-species')('Array'); +},{"./_set-species":242}],292:[function(require,module,exports){ +// 20.3.3.1 / 15.9.4.4 Date.now() +var $export = require('./_export'); + +$export($export.S, 'Date', {now: function(){ return new Date().getTime(); }}); +},{"./_export":183}],293:[function(require,module,exports){ +'use strict'; +// 20.3.4.36 / 15.9.5.43 Date.prototype.toISOString() +var $export = require('./_export') + , fails = require('./_fails') + , getTime = Date.prototype.getTime; + +var lz = function(num){ + return num > 9 ? num : '0' + num; +}; + +// PhantomJS / old WebKit has a broken implementations +$export($export.P + $export.F * (fails(function(){ + return new Date(-5e13 - 1).toISOString() != '0385-07-25T07:06:39.999Z'; +}) || !fails(function(){ + new Date(NaN).toISOString(); +})), 'Date', { + toISOString: function toISOString(){ + if(!isFinite(getTime.call(this)))throw RangeError('Invalid time value'); + var d = this + , y = d.getUTCFullYear() + , m = d.getUTCMilliseconds() + , s = y < 0 ? '-' : y > 9999 ? '+' : ''; + return s + ('00000' + Math.abs(y)).slice(s ? -6 : -4) + + '-' + lz(d.getUTCMonth() + 1) + '-' + lz(d.getUTCDate()) + + 'T' + lz(d.getUTCHours()) + ':' + lz(d.getUTCMinutes()) + + ':' + lz(d.getUTCSeconds()) + '.' + (m > 99 ? m : '0' + lz(m)) + 'Z'; + } +}); +},{"./_export":183,"./_fails":185}],294:[function(require,module,exports){ +'use strict'; +var $export = require('./_export') + , toObject = require('./_to-object') + , toPrimitive = require('./_to-primitive'); + +$export($export.P + $export.F * require('./_fails')(function(){ + return new Date(NaN).toJSON() !== null || Date.prototype.toJSON.call({toISOString: function(){ return 1; }}) !== 1; +}), 'Date', { + toJSON: function toJSON(key){ + var O = toObject(this) + , pv = toPrimitive(O); + return typeof pv == 'number' && !isFinite(pv) ? null : O.toISOString(); + } +}); +},{"./_export":183,"./_fails":185,"./_to-object":260,"./_to-primitive":261}],295:[function(require,module,exports){ +var TO_PRIMITIVE = require('./_wks')('toPrimitive') + , proto = Date.prototype; + +if(!(TO_PRIMITIVE in proto))require('./_hide')(proto, TO_PRIMITIVE, require('./_date-to-primitive')); +},{"./_date-to-primitive":177,"./_hide":191,"./_wks":268}],296:[function(require,module,exports){ +var DateProto = Date.prototype + , INVALID_DATE = 'Invalid Date' + , TO_STRING = 'toString' + , $toString = DateProto[TO_STRING] + , getTime = DateProto.getTime; +if(new Date(NaN) + '' != INVALID_DATE){ + require('./_redefine')(DateProto, TO_STRING, function toString(){ + var value = getTime.call(this); + return value === value ? $toString.call(this) : INVALID_DATE; + }); +} +},{"./_redefine":238}],297:[function(require,module,exports){ +// 19.2.3.2 / 15.3.4.5 Function.prototype.bind(thisArg, args...) +var $export = require('./_export'); + +$export($export.P, 'Function', {bind: require('./_bind')}); +},{"./_bind":167,"./_export":183}],298:[function(require,module,exports){ +'use strict'; +var isObject = require('./_is-object') + , getPrototypeOf = require('./_object-gpo') + , HAS_INSTANCE = require('./_wks')('hasInstance') + , FunctionProto = Function.prototype; +// 19.2.3.6 Function.prototype[@@hasInstance](V) +if(!(HAS_INSTANCE in FunctionProto))require('./_object-dp').f(FunctionProto, HAS_INSTANCE, {value: function(O){ + if(typeof this != 'function' || !isObject(O))return false; + if(!isObject(this.prototype))return O instanceof this; + // for environment w/o native `@@hasInstance` logic enough `instanceof`, but add this: + while(O = getPrototypeOf(O))if(this.prototype === O)return true; + return false; +}}); +},{"./_is-object":200,"./_object-dp":218,"./_object-gpo":225,"./_wks":268}],299:[function(require,module,exports){ +var dP = require('./_object-dp').f + , createDesc = require('./_property-desc') + , has = require('./_has') + , FProto = Function.prototype + , nameRE = /^\s*function ([^ (]*)/ + , NAME = 'name'; + +var isExtensible = Object.isExtensible || function(){ + return true; +}; + +// 19.2.4.2 name +NAME in FProto || require('./_descriptors') && dP(FProto, NAME, { + configurable: true, + get: function(){ + try { + var that = this + , name = ('' + that).match(nameRE)[1]; + has(that, NAME) || !isExtensible(that) || dP(that, NAME, createDesc(5, name)); + return name; + } catch(e){ + return ''; + } + } +}); +},{"./_descriptors":179,"./_has":190,"./_object-dp":218,"./_property-desc":236}],300:[function(require,module,exports){ +'use strict'; +var strong = require('./_collection-strong'); + +// 23.1 Map Objects +module.exports = require('./_collection')('Map', function(get){ + return function Map(){ return get(this, arguments.length > 0 ? arguments[0] : undefined); }; +}, { + // 23.1.3.6 Map.prototype.get(key) + get: function get(key){ + var entry = strong.getEntry(this, key); + return entry && entry.v; + }, + // 23.1.3.9 Map.prototype.set(key, value) + set: function set(key, value){ + return strong.def(this, key === 0 ? 0 : key, value); + } +}, strong, true); +},{"./_collection":173,"./_collection-strong":170}],301:[function(require,module,exports){ +// 20.2.2.3 Math.acosh(x) +var $export = require('./_export') + , log1p = require('./_math-log1p') + , sqrt = Math.sqrt + , $acosh = Math.acosh; + +$export($export.S + $export.F * !($acosh + // V8 bug: https://code.google.com/p/v8/issues/detail?id=3509 + && Math.floor($acosh(Number.MAX_VALUE)) == 710 + // Tor Browser bug: Math.acosh(Infinity) -> NaN + && $acosh(Infinity) == Infinity +), 'Math', { + acosh: function acosh(x){ + return (x = +x) < 1 ? NaN : x > 94906265.62425156 + ? Math.log(x) + Math.LN2 + : log1p(x - 1 + sqrt(x - 1) * sqrt(x + 1)); + } +}); +},{"./_export":183,"./_math-log1p":211}],302:[function(require,module,exports){ +// 20.2.2.5 Math.asinh(x) +var $export = require('./_export') + , $asinh = Math.asinh; + +function asinh(x){ + return !isFinite(x = +x) || x == 0 ? x : x < 0 ? -asinh(-x) : Math.log(x + Math.sqrt(x * x + 1)); +} + +// Tor Browser bug: Math.asinh(0) -> -0 +$export($export.S + $export.F * !($asinh && 1 / $asinh(0) > 0), 'Math', {asinh: asinh}); +},{"./_export":183}],303:[function(require,module,exports){ +// 20.2.2.7 Math.atanh(x) +var $export = require('./_export') + , $atanh = Math.atanh; + +// Tor Browser bug: Math.atanh(-0) -> 0 +$export($export.S + $export.F * !($atanh && 1 / $atanh(-0) < 0), 'Math', { + atanh: function atanh(x){ + return (x = +x) == 0 ? x : Math.log((1 + x) / (1 - x)) / 2; + } +}); +},{"./_export":183}],304:[function(require,module,exports){ +// 20.2.2.9 Math.cbrt(x) +var $export = require('./_export') + , sign = require('./_math-sign'); + +$export($export.S, 'Math', { + cbrt: function cbrt(x){ + return sign(x = +x) * Math.pow(Math.abs(x), 1 / 3); + } +}); +},{"./_export":183,"./_math-sign":212}],305:[function(require,module,exports){ +// 20.2.2.11 Math.clz32(x) +var $export = require('./_export'); + +$export($export.S, 'Math', { + clz32: function clz32(x){ + return (x >>>= 0) ? 31 - Math.floor(Math.log(x + 0.5) * Math.LOG2E) : 32; + } +}); +},{"./_export":183}],306:[function(require,module,exports){ +// 20.2.2.12 Math.cosh(x) +var $export = require('./_export') + , exp = Math.exp; + +$export($export.S, 'Math', { + cosh: function cosh(x){ + return (exp(x = +x) + exp(-x)) / 2; + } +}); +},{"./_export":183}],307:[function(require,module,exports){ +// 20.2.2.14 Math.expm1(x) +var $export = require('./_export') + , $expm1 = require('./_math-expm1'); + +$export($export.S + $export.F * ($expm1 != Math.expm1), 'Math', {expm1: $expm1}); +},{"./_export":183,"./_math-expm1":210}],308:[function(require,module,exports){ +// 20.2.2.16 Math.fround(x) +var $export = require('./_export') + , sign = require('./_math-sign') + , pow = Math.pow + , EPSILON = pow(2, -52) + , EPSILON32 = pow(2, -23) + , MAX32 = pow(2, 127) * (2 - EPSILON32) + , MIN32 = pow(2, -126); + +var roundTiesToEven = function(n){ + return n + 1 / EPSILON - 1 / EPSILON; +}; + + +$export($export.S, 'Math', { + fround: function fround(x){ + var $abs = Math.abs(x) + , $sign = sign(x) + , a, result; + if($abs < MIN32)return $sign * roundTiesToEven($abs / MIN32 / EPSILON32) * MIN32 * EPSILON32; + a = (1 + EPSILON32 / EPSILON) * $abs; + result = a - (a - $abs); + if(result > MAX32 || result != result)return $sign * Infinity; + return $sign * result; + } +}); +},{"./_export":183,"./_math-sign":212}],309:[function(require,module,exports){ +// 20.2.2.17 Math.hypot([value1[, value2[, … ]]]) +var $export = require('./_export') + , abs = Math.abs; + +$export($export.S, 'Math', { + hypot: function hypot(value1, value2){ // eslint-disable-line no-unused-vars + var sum = 0 + , i = 0 + , aLen = arguments.length + , larg = 0 + , arg, div; + while(i < aLen){ + arg = abs(arguments[i++]); + if(larg < arg){ + div = larg / arg; + sum = sum * div * div + 1; + larg = arg; + } else if(arg > 0){ + div = arg / larg; + sum += div * div; + } else sum += arg; + } + return larg === Infinity ? Infinity : larg * Math.sqrt(sum); + } +}); +},{"./_export":183}],310:[function(require,module,exports){ +// 20.2.2.18 Math.imul(x, y) +var $export = require('./_export') + , $imul = Math.imul; + +// some WebKit versions fails with big numbers, some has wrong arity +$export($export.S + $export.F * require('./_fails')(function(){ + return $imul(0xffffffff, 5) != -5 || $imul.length != 2; +}), 'Math', { + imul: function imul(x, y){ + var UINT16 = 0xffff + , xn = +x + , yn = +y + , xl = UINT16 & xn + , yl = UINT16 & yn; + return 0 | xl * yl + ((UINT16 & xn >>> 16) * yl + xl * (UINT16 & yn >>> 16) << 16 >>> 0); + } +}); +},{"./_export":183,"./_fails":185}],311:[function(require,module,exports){ +// 20.2.2.21 Math.log10(x) +var $export = require('./_export'); + +$export($export.S, 'Math', { + log10: function log10(x){ + return Math.log(x) / Math.LN10; + } +}); +},{"./_export":183}],312:[function(require,module,exports){ +// 20.2.2.20 Math.log1p(x) +var $export = require('./_export'); + +$export($export.S, 'Math', {log1p: require('./_math-log1p')}); +},{"./_export":183,"./_math-log1p":211}],313:[function(require,module,exports){ +// 20.2.2.22 Math.log2(x) +var $export = require('./_export'); + +$export($export.S, 'Math', { + log2: function log2(x){ + return Math.log(x) / Math.LN2; + } +}); +},{"./_export":183}],314:[function(require,module,exports){ +// 20.2.2.28 Math.sign(x) +var $export = require('./_export'); + +$export($export.S, 'Math', {sign: require('./_math-sign')}); +},{"./_export":183,"./_math-sign":212}],315:[function(require,module,exports){ +// 20.2.2.30 Math.sinh(x) +var $export = require('./_export') + , expm1 = require('./_math-expm1') + , exp = Math.exp; + +// V8 near Chromium 38 has a problem with very small numbers +$export($export.S + $export.F * require('./_fails')(function(){ + return !Math.sinh(-2e-17) != -2e-17; +}), 'Math', { + sinh: function sinh(x){ + return Math.abs(x = +x) < 1 + ? (expm1(x) - expm1(-x)) / 2 + : (exp(x - 1) - exp(-x - 1)) * (Math.E / 2); + } +}); +},{"./_export":183,"./_fails":185,"./_math-expm1":210}],316:[function(require,module,exports){ +// 20.2.2.33 Math.tanh(x) +var $export = require('./_export') + , expm1 = require('./_math-expm1') + , exp = Math.exp; + +$export($export.S, 'Math', { + tanh: function tanh(x){ + var a = expm1(x = +x) + , b = expm1(-x); + return a == Infinity ? 1 : b == Infinity ? -1 : (a - b) / (exp(x) + exp(-x)); + } +}); +},{"./_export":183,"./_math-expm1":210}],317:[function(require,module,exports){ +// 20.2.2.34 Math.trunc(x) +var $export = require('./_export'); + +$export($export.S, 'Math', { + trunc: function trunc(it){ + return (it > 0 ? Math.floor : Math.ceil)(it); + } +}); +},{"./_export":183}],318:[function(require,module,exports){ +'use strict'; +var global = require('./_global') + , has = require('./_has') + , cof = require('./_cof') + , inheritIfRequired = require('./_inherit-if-required') + , toPrimitive = require('./_to-primitive') + , fails = require('./_fails') + , gOPN = require('./_object-gopn').f + , gOPD = require('./_object-gopd').f + , dP = require('./_object-dp').f + , $trim = require('./_string-trim').trim + , NUMBER = 'Number' + , $Number = global[NUMBER] + , Base = $Number + , proto = $Number.prototype + // Opera ~12 has broken Object#toString + , BROKEN_COF = cof(require('./_object-create')(proto)) == NUMBER + , TRIM = 'trim' in String.prototype; + +// 7.1.3 ToNumber(argument) +var toNumber = function(argument){ + var it = toPrimitive(argument, false); + if(typeof it == 'string' && it.length > 2){ + it = TRIM ? it.trim() : $trim(it, 3); + var first = it.charCodeAt(0) + , third, radix, maxCode; + if(first === 43 || first === 45){ + third = it.charCodeAt(2); + if(third === 88 || third === 120)return NaN; // Number('+0x1') should be NaN, old V8 fix + } else if(first === 48){ + switch(it.charCodeAt(1)){ + case 66 : case 98 : radix = 2; maxCode = 49; break; // fast equal /^0b[01]+$/i + case 79 : case 111 : radix = 8; maxCode = 55; break; // fast equal /^0o[0-7]+$/i + default : return +it; + } + for(var digits = it.slice(2), i = 0, l = digits.length, code; i < l; i++){ + code = digits.charCodeAt(i); + // parseInt parses a string to a first unavailable symbol + // but ToNumber should return NaN if a string contains unavailable symbols + if(code < 48 || code > maxCode)return NaN; + } return parseInt(digits, radix); + } + } return +it; +}; + +if(!$Number(' 0o1') || !$Number('0b1') || $Number('+0x1')){ + $Number = function Number(value){ + var it = arguments.length < 1 ? 0 : value + , that = this; + return that instanceof $Number + // check on 1..constructor(foo) case + && (BROKEN_COF ? fails(function(){ proto.valueOf.call(that); }) : cof(that) != NUMBER) + ? inheritIfRequired(new Base(toNumber(it)), that, $Number) : toNumber(it); + }; + for(var keys = require('./_descriptors') ? gOPN(Base) : ( + // ES3: + 'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' + + // ES6 (in case, if modules with ES6 Number statics required before): + 'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' + + 'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger' + ).split(','), j = 0, key; keys.length > j; j++){ + if(has(Base, key = keys[j]) && !has($Number, key)){ + dP($Number, key, gOPD(Base, key)); + } + } + $Number.prototype = proto; + proto.constructor = $Number; + require('./_redefine')(global, NUMBER, $Number); +} +},{"./_cof":169,"./_descriptors":179,"./_fails":185,"./_global":189,"./_has":190,"./_inherit-if-required":194,"./_object-create":217,"./_object-dp":218,"./_object-gopd":221,"./_object-gopn":223,"./_redefine":238,"./_string-trim":253,"./_to-primitive":261}],319:[function(require,module,exports){ +// 20.1.2.1 Number.EPSILON +var $export = require('./_export'); + +$export($export.S, 'Number', {EPSILON: Math.pow(2, -52)}); +},{"./_export":183}],320:[function(require,module,exports){ +// 20.1.2.2 Number.isFinite(number) +var $export = require('./_export') + , _isFinite = require('./_global').isFinite; + +$export($export.S, 'Number', { + isFinite: function isFinite(it){ + return typeof it == 'number' && _isFinite(it); + } +}); +},{"./_export":183,"./_global":189}],321:[function(require,module,exports){ +// 20.1.2.3 Number.isInteger(number) +var $export = require('./_export'); + +$export($export.S, 'Number', {isInteger: require('./_is-integer')}); +},{"./_export":183,"./_is-integer":199}],322:[function(require,module,exports){ +// 20.1.2.4 Number.isNaN(number) +var $export = require('./_export'); + +$export($export.S, 'Number', { + isNaN: function isNaN(number){ + return number != number; + } +}); +},{"./_export":183}],323:[function(require,module,exports){ +// 20.1.2.5 Number.isSafeInteger(number) +var $export = require('./_export') + , isInteger = require('./_is-integer') + , abs = Math.abs; + +$export($export.S, 'Number', { + isSafeInteger: function isSafeInteger(number){ + return isInteger(number) && abs(number) <= 0x1fffffffffffff; + } +}); +},{"./_export":183,"./_is-integer":199}],324:[function(require,module,exports){ +// 20.1.2.6 Number.MAX_SAFE_INTEGER +var $export = require('./_export'); + +$export($export.S, 'Number', {MAX_SAFE_INTEGER: 0x1fffffffffffff}); +},{"./_export":183}],325:[function(require,module,exports){ +// 20.1.2.10 Number.MIN_SAFE_INTEGER +var $export = require('./_export'); + +$export($export.S, 'Number', {MIN_SAFE_INTEGER: -0x1fffffffffffff}); +},{"./_export":183}],326:[function(require,module,exports){ +var $export = require('./_export') + , $parseFloat = require('./_parse-float'); +// 20.1.2.12 Number.parseFloat(string) +$export($export.S + $export.F * (Number.parseFloat != $parseFloat), 'Number', {parseFloat: $parseFloat}); +},{"./_export":183,"./_parse-float":232}],327:[function(require,module,exports){ +var $export = require('./_export') + , $parseInt = require('./_parse-int'); +// 20.1.2.13 Number.parseInt(string, radix) +$export($export.S + $export.F * (Number.parseInt != $parseInt), 'Number', {parseInt: $parseInt}); +},{"./_export":183,"./_parse-int":233}],328:[function(require,module,exports){ +'use strict'; +var $export = require('./_export') + , toInteger = require('./_to-integer') + , aNumberValue = require('./_a-number-value') + , repeat = require('./_string-repeat') + , $toFixed = 1..toFixed + , floor = Math.floor + , data = [0, 0, 0, 0, 0, 0] + , ERROR = 'Number.toFixed: incorrect invocation!' + , ZERO = '0'; + +var multiply = function(n, c){ + var i = -1 + , c2 = c; + while(++i < 6){ + c2 += n * data[i]; + data[i] = c2 % 1e7; + c2 = floor(c2 / 1e7); + } +}; +var divide = function(n){ + var i = 6 + , c = 0; + while(--i >= 0){ + c += data[i]; + data[i] = floor(c / n); + c = (c % n) * 1e7; + } +}; +var numToString = function(){ + var i = 6 + , s = ''; + while(--i >= 0){ + if(s !== '' || i === 0 || data[i] !== 0){ + var t = String(data[i]); + s = s === '' ? t : s + repeat.call(ZERO, 7 - t.length) + t; + } + } return s; +}; +var pow = function(x, n, acc){ + return n === 0 ? acc : n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc); +}; +var log = function(x){ + var n = 0 + , x2 = x; + while(x2 >= 4096){ + n += 12; + x2 /= 4096; + } + while(x2 >= 2){ + n += 1; + x2 /= 2; + } return n; +}; + +$export($export.P + $export.F * (!!$toFixed && ( + 0.00008.toFixed(3) !== '0.000' || + 0.9.toFixed(0) !== '1' || + 1.255.toFixed(2) !== '1.25' || + 1000000000000000128..toFixed(0) !== '1000000000000000128' +) || !require('./_fails')(function(){ + // V8 ~ Android 4.3- + $toFixed.call({}); +})), 'Number', { + toFixed: function toFixed(fractionDigits){ + var x = aNumberValue(this, ERROR) + , f = toInteger(fractionDigits) + , s = '' + , m = ZERO + , e, z, j, k; + if(f < 0 || f > 20)throw RangeError(ERROR); + if(x != x)return 'NaN'; + if(x <= -1e21 || x >= 1e21)return String(x); + if(x < 0){ + s = '-'; + x = -x; + } + if(x > 1e-21){ + e = log(x * pow(2, 69, 1)) - 69; + z = e < 0 ? x * pow(2, -e, 1) : x / pow(2, e, 1); + z *= 0x10000000000000; + e = 52 - e; + if(e > 0){ + multiply(0, z); + j = f; + while(j >= 7){ + multiply(1e7, 0); + j -= 7; + } + multiply(pow(10, j, 1), 0); + j = e - 1; + while(j >= 23){ + divide(1 << 23); + j -= 23; + } + divide(1 << j); + multiply(1, 1); + divide(2); + m = numToString(); + } else { + multiply(0, z); + multiply(1 << -e, 0); + m = numToString() + repeat.call(ZERO, f); + } + } + if(f > 0){ + k = m.length; + m = s + (k <= f ? '0.' + repeat.call(ZERO, f - k) + m : m.slice(0, k - f) + '.' + m.slice(k - f)); + } else { + m = s + m; + } return m; + } +}); +},{"./_a-number-value":155,"./_export":183,"./_fails":185,"./_string-repeat":252,"./_to-integer":257}],329:[function(require,module,exports){ +'use strict'; +var $export = require('./_export') + , $fails = require('./_fails') + , aNumberValue = require('./_a-number-value') + , $toPrecision = 1..toPrecision; + +$export($export.P + $export.F * ($fails(function(){ + // IE7- + return $toPrecision.call(1, undefined) !== '1'; +}) || !$fails(function(){ + // V8 ~ Android 4.3- + $toPrecision.call({}); +})), 'Number', { + toPrecision: function toPrecision(precision){ + var that = aNumberValue(this, 'Number#toPrecision: incorrect invocation!'); + return precision === undefined ? $toPrecision.call(that) : $toPrecision.call(that, precision); + } +}); +},{"./_a-number-value":155,"./_export":183,"./_fails":185}],330:[function(require,module,exports){ +// 19.1.3.1 Object.assign(target, source) +var $export = require('./_export'); + +$export($export.S + $export.F, 'Object', {assign: require('./_object-assign')}); +},{"./_export":183,"./_object-assign":216}],331:[function(require,module,exports){ +var $export = require('./_export') +// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties]) +$export($export.S, 'Object', {create: require('./_object-create')}); +},{"./_export":183,"./_object-create":217}],332:[function(require,module,exports){ +var $export = require('./_export'); +// 19.1.2.3 / 15.2.3.7 Object.defineProperties(O, Properties) +$export($export.S + $export.F * !require('./_descriptors'), 'Object', {defineProperties: require('./_object-dps')}); +},{"./_descriptors":179,"./_export":183,"./_object-dps":219}],333:[function(require,module,exports){ +var $export = require('./_export'); +// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes) +$export($export.S + $export.F * !require('./_descriptors'), 'Object', {defineProperty: require('./_object-dp').f}); +},{"./_descriptors":179,"./_export":183,"./_object-dp":218}],334:[function(require,module,exports){ +// 19.1.2.5 Object.freeze(O) +var isObject = require('./_is-object') + , meta = require('./_meta').onFreeze; + +require('./_object-sap')('freeze', function($freeze){ + return function freeze(it){ + return $freeze && isObject(it) ? $freeze(meta(it)) : it; + }; +}); +},{"./_is-object":200,"./_meta":213,"./_object-sap":229}],335:[function(require,module,exports){ +// 19.1.2.6 Object.getOwnPropertyDescriptor(O, P) +var toIObject = require('./_to-iobject') + , $getOwnPropertyDescriptor = require('./_object-gopd').f; + +require('./_object-sap')('getOwnPropertyDescriptor', function(){ + return function getOwnPropertyDescriptor(it, key){ + return $getOwnPropertyDescriptor(toIObject(it), key); + }; +}); +},{"./_object-gopd":221,"./_object-sap":229,"./_to-iobject":258}],336:[function(require,module,exports){ +// 19.1.2.7 Object.getOwnPropertyNames(O) +require('./_object-sap')('getOwnPropertyNames', function(){ + return require('./_object-gopn-ext').f; +}); +},{"./_object-gopn-ext":222,"./_object-sap":229}],337:[function(require,module,exports){ +// 19.1.2.9 Object.getPrototypeOf(O) +var toObject = require('./_to-object') + , $getPrototypeOf = require('./_object-gpo'); + +require('./_object-sap')('getPrototypeOf', function(){ + return function getPrototypeOf(it){ + return $getPrototypeOf(toObject(it)); + }; +}); +},{"./_object-gpo":225,"./_object-sap":229,"./_to-object":260}],338:[function(require,module,exports){ +// 19.1.2.11 Object.isExtensible(O) +var isObject = require('./_is-object'); + +require('./_object-sap')('isExtensible', function($isExtensible){ + return function isExtensible(it){ + return isObject(it) ? $isExtensible ? $isExtensible(it) : true : false; + }; +}); +},{"./_is-object":200,"./_object-sap":229}],339:[function(require,module,exports){ +// 19.1.2.12 Object.isFrozen(O) +var isObject = require('./_is-object'); + +require('./_object-sap')('isFrozen', function($isFrozen){ + return function isFrozen(it){ + return isObject(it) ? $isFrozen ? $isFrozen(it) : false : true; + }; +}); +},{"./_is-object":200,"./_object-sap":229}],340:[function(require,module,exports){ +// 19.1.2.13 Object.isSealed(O) +var isObject = require('./_is-object'); + +require('./_object-sap')('isSealed', function($isSealed){ + return function isSealed(it){ + return isObject(it) ? $isSealed ? $isSealed(it) : false : true; + }; +}); +},{"./_is-object":200,"./_object-sap":229}],341:[function(require,module,exports){ +// 19.1.3.10 Object.is(value1, value2) +var $export = require('./_export'); +$export($export.S, 'Object', {is: require('./_same-value')}); +},{"./_export":183,"./_same-value":240}],342:[function(require,module,exports){ +// 19.1.2.14 Object.keys(O) +var toObject = require('./_to-object') + , $keys = require('./_object-keys'); + +require('./_object-sap')('keys', function(){ + return function keys(it){ + return $keys(toObject(it)); + }; +}); +},{"./_object-keys":227,"./_object-sap":229,"./_to-object":260}],343:[function(require,module,exports){ +// 19.1.2.15 Object.preventExtensions(O) +var isObject = require('./_is-object') + , meta = require('./_meta').onFreeze; + +require('./_object-sap')('preventExtensions', function($preventExtensions){ + return function preventExtensions(it){ + return $preventExtensions && isObject(it) ? $preventExtensions(meta(it)) : it; + }; +}); +},{"./_is-object":200,"./_meta":213,"./_object-sap":229}],344:[function(require,module,exports){ +// 19.1.2.17 Object.seal(O) +var isObject = require('./_is-object') + , meta = require('./_meta').onFreeze; + +require('./_object-sap')('seal', function($seal){ + return function seal(it){ + return $seal && isObject(it) ? $seal(meta(it)) : it; + }; +}); +},{"./_is-object":200,"./_meta":213,"./_object-sap":229}],345:[function(require,module,exports){ +// 19.1.3.19 Object.setPrototypeOf(O, proto) +var $export = require('./_export'); +$export($export.S, 'Object', {setPrototypeOf: require('./_set-proto').set}); +},{"./_export":183,"./_set-proto":241}],346:[function(require,module,exports){ +'use strict'; +// 19.1.3.6 Object.prototype.toString() +var classof = require('./_classof') + , test = {}; +test[require('./_wks')('toStringTag')] = 'z'; +if(test + '' != '[object z]'){ + require('./_redefine')(Object.prototype, 'toString', function toString(){ + return '[object ' + classof(this) + ']'; + }, true); +} +},{"./_classof":168,"./_redefine":238,"./_wks":268}],347:[function(require,module,exports){ +var $export = require('./_export') + , $parseFloat = require('./_parse-float'); +// 18.2.4 parseFloat(string) +$export($export.G + $export.F * (parseFloat != $parseFloat), {parseFloat: $parseFloat}); +},{"./_export":183,"./_parse-float":232}],348:[function(require,module,exports){ +var $export = require('./_export') + , $parseInt = require('./_parse-int'); +// 18.2.5 parseInt(string, radix) +$export($export.G + $export.F * (parseInt != $parseInt), {parseInt: $parseInt}); +},{"./_export":183,"./_parse-int":233}],349:[function(require,module,exports){ +'use strict'; +var LIBRARY = require('./_library') + , global = require('./_global') + , ctx = require('./_ctx') + , classof = require('./_classof') + , $export = require('./_export') + , isObject = require('./_is-object') + , aFunction = require('./_a-function') + , anInstance = require('./_an-instance') + , forOf = require('./_for-of') + , speciesConstructor = require('./_species-constructor') + , task = require('./_task').set + , microtask = require('./_microtask')() + , PROMISE = 'Promise' + , TypeError = global.TypeError + , process = global.process + , $Promise = global[PROMISE] + , process = global.process + , isNode = classof(process) == 'process' + , empty = function(){ /* empty */ } + , Internal, GenericPromiseCapability, Wrapper; + +var USE_NATIVE = !!function(){ + try { + // correct subclassing with @@species support + var promise = $Promise.resolve(1) + , FakePromise = (promise.constructor = {})[require('./_wks')('species')] = function(exec){ exec(empty, empty); }; + // unhandled rejections tracking support, NodeJS Promise without it fails @@species test + return (isNode || typeof PromiseRejectionEvent == 'function') && promise.then(empty) instanceof FakePromise; + } catch(e){ /* empty */ } +}(); + +// helpers +var sameConstructor = function(a, b){ + // with library wrapper special case + return a === b || a === $Promise && b === Wrapper; +}; +var isThenable = function(it){ + var then; + return isObject(it) && typeof (then = it.then) == 'function' ? then : false; +}; +var newPromiseCapability = function(C){ + return sameConstructor($Promise, C) + ? new PromiseCapability(C) + : new GenericPromiseCapability(C); +}; +var PromiseCapability = GenericPromiseCapability = function(C){ + var resolve, reject; + this.promise = new C(function($$resolve, $$reject){ + if(resolve !== undefined || reject !== undefined)throw TypeError('Bad Promise constructor'); + resolve = $$resolve; + reject = $$reject; + }); + this.resolve = aFunction(resolve); + this.reject = aFunction(reject); +}; +var perform = function(exec){ + try { + exec(); + } catch(e){ + return {error: e}; + } +}; +var notify = function(promise, isReject){ + if(promise._n)return; + promise._n = true; + var chain = promise._c; + microtask(function(){ + var value = promise._v + , ok = promise._s == 1 + , i = 0; + var run = function(reaction){ + var handler = ok ? reaction.ok : reaction.fail + , resolve = reaction.resolve + , reject = reaction.reject + , domain = reaction.domain + , result, then; + try { + if(handler){ + if(!ok){ + if(promise._h == 2)onHandleUnhandled(promise); + promise._h = 1; + } + if(handler === true)result = value; + else { + if(domain)domain.enter(); + result = handler(value); + if(domain)domain.exit(); + } + if(result === reaction.promise){ + reject(TypeError('Promise-chain cycle')); + } else if(then = isThenable(result)){ + then.call(result, resolve, reject); + } else resolve(result); + } else reject(value); + } catch(e){ + reject(e); + } + }; + while(chain.length > i)run(chain[i++]); // variable length - can't use forEach + promise._c = []; + promise._n = false; + if(isReject && !promise._h)onUnhandled(promise); + }); +}; +var onUnhandled = function(promise){ + task.call(global, function(){ + var value = promise._v + , abrupt, handler, console; + if(isUnhandled(promise)){ + abrupt = perform(function(){ + if(isNode){ + process.emit('unhandledRejection', value, promise); + } else if(handler = global.onunhandledrejection){ + handler({promise: promise, reason: value}); + } else if((console = global.console) && console.error){ + console.error('Unhandled promise rejection', value); + } + }); + // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should + promise._h = isNode || isUnhandled(promise) ? 2 : 1; + } promise._a = undefined; + if(abrupt)throw abrupt.error; + }); +}; +var isUnhandled = function(promise){ + if(promise._h == 1)return false; + var chain = promise._a || promise._c + , i = 0 + , reaction; + while(chain.length > i){ + reaction = chain[i++]; + if(reaction.fail || !isUnhandled(reaction.promise))return false; + } return true; +}; +var onHandleUnhandled = function(promise){ + task.call(global, function(){ + var handler; + if(isNode){ + process.emit('rejectionHandled', promise); + } else if(handler = global.onrejectionhandled){ + handler({promise: promise, reason: promise._v}); + } + }); +}; +var $reject = function(value){ + var promise = this; + if(promise._d)return; + promise._d = true; + promise = promise._w || promise; // unwrap + promise._v = value; + promise._s = 2; + if(!promise._a)promise._a = promise._c.slice(); + notify(promise, true); +}; +var $resolve = function(value){ + var promise = this + , then; + if(promise._d)return; + promise._d = true; + promise = promise._w || promise; // unwrap + try { + if(promise === value)throw TypeError("Promise can't be resolved itself"); + if(then = isThenable(value)){ + microtask(function(){ + var wrapper = {_w: promise, _d: false}; // wrap + try { + then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1)); + } catch(e){ + $reject.call(wrapper, e); + } + }); + } else { + promise._v = value; + promise._s = 1; + notify(promise, false); + } + } catch(e){ + $reject.call({_w: promise, _d: false}, e); // wrap + } +}; + +// constructor polyfill +if(!USE_NATIVE){ + // 25.4.3.1 Promise(executor) + $Promise = function Promise(executor){ + anInstance(this, $Promise, PROMISE, '_h'); + aFunction(executor); + Internal.call(this); + try { + executor(ctx($resolve, this, 1), ctx($reject, this, 1)); + } catch(err){ + $reject.call(this, err); + } + }; + Internal = function Promise(executor){ + this._c = []; // <- awaiting reactions + this._a = undefined; // <- checked in isUnhandled reactions + this._s = 0; // <- state + this._d = false; // <- done + this._v = undefined; // <- value + this._h = 0; // <- rejection state, 0 - default, 1 - handled, 2 - unhandled + this._n = false; // <- notify + }; + Internal.prototype = require('./_redefine-all')($Promise.prototype, { + // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected) + then: function then(onFulfilled, onRejected){ + var reaction = newPromiseCapability(speciesConstructor(this, $Promise)); + reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true; + reaction.fail = typeof onRejected == 'function' && onRejected; + reaction.domain = isNode ? process.domain : undefined; + this._c.push(reaction); + if(this._a)this._a.push(reaction); + if(this._s)notify(this, false); + return reaction.promise; + }, + // 25.4.5.1 Promise.prototype.catch(onRejected) + 'catch': function(onRejected){ + return this.then(undefined, onRejected); + } + }); + PromiseCapability = function(){ + var promise = new Internal; + this.promise = promise; + this.resolve = ctx($resolve, promise, 1); + this.reject = ctx($reject, promise, 1); + }; +} + +$export($export.G + $export.W + $export.F * !USE_NATIVE, {Promise: $Promise}); +require('./_set-to-string-tag')($Promise, PROMISE); +require('./_set-species')(PROMISE); +Wrapper = require('./_core')[PROMISE]; + +// statics +$export($export.S + $export.F * !USE_NATIVE, PROMISE, { + // 25.4.4.5 Promise.reject(r) + reject: function reject(r){ + var capability = newPromiseCapability(this) + , $$reject = capability.reject; + $$reject(r); + return capability.promise; + } +}); +$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, { + // 25.4.4.6 Promise.resolve(x) + resolve: function resolve(x){ + // instanceof instead of internal slot check because we should fix it without replacement native Promise core + if(x instanceof $Promise && sameConstructor(x.constructor, this))return x; + var capability = newPromiseCapability(this) + , $$resolve = capability.resolve; + $$resolve(x); + return capability.promise; + } +}); +$export($export.S + $export.F * !(USE_NATIVE && require('./_iter-detect')(function(iter){ + $Promise.all(iter)['catch'](empty); +})), PROMISE, { + // 25.4.4.1 Promise.all(iterable) + all: function all(iterable){ + var C = this + , capability = newPromiseCapability(C) + , resolve = capability.resolve + , reject = capability.reject; + var abrupt = perform(function(){ + var values = [] + , index = 0 + , remaining = 1; + forOf(iterable, false, function(promise){ + var $index = index++ + , alreadyCalled = false; + values.push(undefined); + remaining++; + C.resolve(promise).then(function(value){ + if(alreadyCalled)return; + alreadyCalled = true; + values[$index] = value; + --remaining || resolve(values); + }, reject); + }); + --remaining || resolve(values); + }); + if(abrupt)reject(abrupt.error); + return capability.promise; + }, + // 25.4.4.4 Promise.race(iterable) + race: function race(iterable){ + var C = this + , capability = newPromiseCapability(C) + , reject = capability.reject; + var abrupt = perform(function(){ + forOf(iterable, false, function(promise){ + C.resolve(promise).then(capability.resolve, reject); + }); + }); + if(abrupt)reject(abrupt.error); + return capability.promise; + } +}); +},{"./_a-function":154,"./_an-instance":157,"./_classof":168,"./_core":174,"./_ctx":176,"./_export":183,"./_for-of":188,"./_global":189,"./_is-object":200,"./_iter-detect":205,"./_library":209,"./_microtask":215,"./_redefine-all":237,"./_set-species":242,"./_set-to-string-tag":243,"./_species-constructor":246,"./_task":255,"./_wks":268}],350:[function(require,module,exports){ +// 26.1.1 Reflect.apply(target, thisArgument, argumentsList) +var $export = require('./_export') + , aFunction = require('./_a-function') + , anObject = require('./_an-object') + , rApply = (require('./_global').Reflect || {}).apply + , fApply = Function.apply; +// MS Edge argumentsList argument is optional +$export($export.S + $export.F * !require('./_fails')(function(){ + rApply(function(){}); +}), 'Reflect', { + apply: function apply(target, thisArgument, argumentsList){ + var T = aFunction(target) + , L = anObject(argumentsList); + return rApply ? rApply(T, thisArgument, L) : fApply.call(T, thisArgument, L); + } +}); +},{"./_a-function":154,"./_an-object":158,"./_export":183,"./_fails":185,"./_global":189}],351:[function(require,module,exports){ +// 26.1.2 Reflect.construct(target, argumentsList [, newTarget]) +var $export = require('./_export') + , create = require('./_object-create') + , aFunction = require('./_a-function') + , anObject = require('./_an-object') + , isObject = require('./_is-object') + , fails = require('./_fails') + , bind = require('./_bind') + , rConstruct = (require('./_global').Reflect || {}).construct; + +// MS Edge supports only 2 arguments and argumentsList argument is optional +// FF Nightly sets third argument as `new.target`, but does not create `this` from it +var NEW_TARGET_BUG = fails(function(){ + function F(){} + return !(rConstruct(function(){}, [], F) instanceof F); +}); +var ARGS_BUG = !fails(function(){ + rConstruct(function(){}); +}); + +$export($export.S + $export.F * (NEW_TARGET_BUG || ARGS_BUG), 'Reflect', { + construct: function construct(Target, args /*, newTarget*/){ + aFunction(Target); + anObject(args); + var newTarget = arguments.length < 3 ? Target : aFunction(arguments[2]); + if(ARGS_BUG && !NEW_TARGET_BUG)return rConstruct(Target, args, newTarget); + if(Target == newTarget){ + // w/o altered newTarget, optimization for 0-4 arguments + switch(args.length){ + case 0: return new Target; + case 1: return new Target(args[0]); + case 2: return new Target(args[0], args[1]); + case 3: return new Target(args[0], args[1], args[2]); + case 4: return new Target(args[0], args[1], args[2], args[3]); + } + // w/o altered newTarget, lot of arguments case + var $args = [null]; + $args.push.apply($args, args); + return new (bind.apply(Target, $args)); + } + // with altered newTarget, not support built-in constructors + var proto = newTarget.prototype + , instance = create(isObject(proto) ? proto : Object.prototype) + , result = Function.apply.call(Target, instance, args); + return isObject(result) ? result : instance; + } +}); +},{"./_a-function":154,"./_an-object":158,"./_bind":167,"./_export":183,"./_fails":185,"./_global":189,"./_is-object":200,"./_object-create":217}],352:[function(require,module,exports){ +// 26.1.3 Reflect.defineProperty(target, propertyKey, attributes) +var dP = require('./_object-dp') + , $export = require('./_export') + , anObject = require('./_an-object') + , toPrimitive = require('./_to-primitive'); + +// MS Edge has broken Reflect.defineProperty - throwing instead of returning false +$export($export.S + $export.F * require('./_fails')(function(){ + Reflect.defineProperty(dP.f({}, 1, {value: 1}), 1, {value: 2}); +}), 'Reflect', { + defineProperty: function defineProperty(target, propertyKey, attributes){ + anObject(target); + propertyKey = toPrimitive(propertyKey, true); + anObject(attributes); + try { + dP.f(target, propertyKey, attributes); + return true; + } catch(e){ + return false; + } + } +}); +},{"./_an-object":158,"./_export":183,"./_fails":185,"./_object-dp":218,"./_to-primitive":261}],353:[function(require,module,exports){ +// 26.1.4 Reflect.deleteProperty(target, propertyKey) +var $export = require('./_export') + , gOPD = require('./_object-gopd').f + , anObject = require('./_an-object'); + +$export($export.S, 'Reflect', { + deleteProperty: function deleteProperty(target, propertyKey){ + var desc = gOPD(anObject(target), propertyKey); + return desc && !desc.configurable ? false : delete target[propertyKey]; + } +}); +},{"./_an-object":158,"./_export":183,"./_object-gopd":221}],354:[function(require,module,exports){ +'use strict'; +// 26.1.5 Reflect.enumerate(target) +var $export = require('./_export') + , anObject = require('./_an-object'); +var Enumerate = function(iterated){ + this._t = anObject(iterated); // target + this._i = 0; // next index + var keys = this._k = [] // keys + , key; + for(key in iterated)keys.push(key); +}; +require('./_iter-create')(Enumerate, 'Object', function(){ + var that = this + , keys = that._k + , key; + do { + if(that._i >= keys.length)return {value: undefined, done: true}; + } while(!((key = keys[that._i++]) in that._t)); + return {value: key, done: false}; +}); + +$export($export.S, 'Reflect', { + enumerate: function enumerate(target){ + return new Enumerate(target); + } +}); +},{"./_an-object":158,"./_export":183,"./_iter-create":203}],355:[function(require,module,exports){ +// 26.1.7 Reflect.getOwnPropertyDescriptor(target, propertyKey) +var gOPD = require('./_object-gopd') + , $export = require('./_export') + , anObject = require('./_an-object'); + +$export($export.S, 'Reflect', { + getOwnPropertyDescriptor: function getOwnPropertyDescriptor(target, propertyKey){ + return gOPD.f(anObject(target), propertyKey); + } +}); +},{"./_an-object":158,"./_export":183,"./_object-gopd":221}],356:[function(require,module,exports){ +// 26.1.8 Reflect.getPrototypeOf(target) +var $export = require('./_export') + , getProto = require('./_object-gpo') + , anObject = require('./_an-object'); + +$export($export.S, 'Reflect', { + getPrototypeOf: function getPrototypeOf(target){ + return getProto(anObject(target)); + } +}); +},{"./_an-object":158,"./_export":183,"./_object-gpo":225}],357:[function(require,module,exports){ +// 26.1.6 Reflect.get(target, propertyKey [, receiver]) +var gOPD = require('./_object-gopd') + , getPrototypeOf = require('./_object-gpo') + , has = require('./_has') + , $export = require('./_export') + , isObject = require('./_is-object') + , anObject = require('./_an-object'); + +function get(target, propertyKey/*, receiver*/){ + var receiver = arguments.length < 3 ? target : arguments[2] + , desc, proto; + if(anObject(target) === receiver)return target[propertyKey]; + if(desc = gOPD.f(target, propertyKey))return has(desc, 'value') + ? desc.value + : desc.get !== undefined + ? desc.get.call(receiver) + : undefined; + if(isObject(proto = getPrototypeOf(target)))return get(proto, propertyKey, receiver); +} + +$export($export.S, 'Reflect', {get: get}); +},{"./_an-object":158,"./_export":183,"./_has":190,"./_is-object":200,"./_object-gopd":221,"./_object-gpo":225}],358:[function(require,module,exports){ +// 26.1.9 Reflect.has(target, propertyKey) +var $export = require('./_export'); + +$export($export.S, 'Reflect', { + has: function has(target, propertyKey){ + return propertyKey in target; + } +}); +},{"./_export":183}],359:[function(require,module,exports){ +// 26.1.10 Reflect.isExtensible(target) +var $export = require('./_export') + , anObject = require('./_an-object') + , $isExtensible = Object.isExtensible; + +$export($export.S, 'Reflect', { + isExtensible: function isExtensible(target){ + anObject(target); + return $isExtensible ? $isExtensible(target) : true; + } +}); +},{"./_an-object":158,"./_export":183}],360:[function(require,module,exports){ +// 26.1.11 Reflect.ownKeys(target) +var $export = require('./_export'); + +$export($export.S, 'Reflect', {ownKeys: require('./_own-keys')}); +},{"./_export":183,"./_own-keys":231}],361:[function(require,module,exports){ +// 26.1.12 Reflect.preventExtensions(target) +var $export = require('./_export') + , anObject = require('./_an-object') + , $preventExtensions = Object.preventExtensions; + +$export($export.S, 'Reflect', { + preventExtensions: function preventExtensions(target){ + anObject(target); + try { + if($preventExtensions)$preventExtensions(target); + return true; + } catch(e){ + return false; + } + } +}); +},{"./_an-object":158,"./_export":183}],362:[function(require,module,exports){ +// 26.1.14 Reflect.setPrototypeOf(target, proto) +var $export = require('./_export') + , setProto = require('./_set-proto'); + +if(setProto)$export($export.S, 'Reflect', { + setPrototypeOf: function setPrototypeOf(target, proto){ + setProto.check(target, proto); + try { + setProto.set(target, proto); + return true; + } catch(e){ + return false; + } + } +}); +},{"./_export":183,"./_set-proto":241}],363:[function(require,module,exports){ +// 26.1.13 Reflect.set(target, propertyKey, V [, receiver]) +var dP = require('./_object-dp') + , gOPD = require('./_object-gopd') + , getPrototypeOf = require('./_object-gpo') + , has = require('./_has') + , $export = require('./_export') + , createDesc = require('./_property-desc') + , anObject = require('./_an-object') + , isObject = require('./_is-object'); + +function set(target, propertyKey, V/*, receiver*/){ + var receiver = arguments.length < 4 ? target : arguments[3] + , ownDesc = gOPD.f(anObject(target), propertyKey) + , existingDescriptor, proto; + if(!ownDesc){ + if(isObject(proto = getPrototypeOf(target))){ + return set(proto, propertyKey, V, receiver); + } + ownDesc = createDesc(0); + } + if(has(ownDesc, 'value')){ + if(ownDesc.writable === false || !isObject(receiver))return false; + existingDescriptor = gOPD.f(receiver, propertyKey) || createDesc(0); + existingDescriptor.value = V; + dP.f(receiver, propertyKey, existingDescriptor); + return true; + } + return ownDesc.set === undefined ? false : (ownDesc.set.call(receiver, V), true); +} + +$export($export.S, 'Reflect', {set: set}); +},{"./_an-object":158,"./_export":183,"./_has":190,"./_is-object":200,"./_object-dp":218,"./_object-gopd":221,"./_object-gpo":225,"./_property-desc":236}],364:[function(require,module,exports){ +var global = require('./_global') + , inheritIfRequired = require('./_inherit-if-required') + , dP = require('./_object-dp').f + , gOPN = require('./_object-gopn').f + , isRegExp = require('./_is-regexp') + , $flags = require('./_flags') + , $RegExp = global.RegExp + , Base = $RegExp + , proto = $RegExp.prototype + , re1 = /a/g + , re2 = /a/g + // "new" creates a new object, old webkit buggy here + , CORRECT_NEW = new $RegExp(re1) !== re1; + +if(require('./_descriptors') && (!CORRECT_NEW || require('./_fails')(function(){ + re2[require('./_wks')('match')] = false; + // RegExp constructor can alter flags and IsRegExp works correct with @@match + return $RegExp(re1) != re1 || $RegExp(re2) == re2 || $RegExp(re1, 'i') != '/a/i'; +}))){ + $RegExp = function RegExp(p, f){ + var tiRE = this instanceof $RegExp + , piRE = isRegExp(p) + , fiU = f === undefined; + return !tiRE && piRE && p.constructor === $RegExp && fiU ? p + : inheritIfRequired(CORRECT_NEW + ? new Base(piRE && !fiU ? p.source : p, f) + : Base((piRE = p instanceof $RegExp) ? p.source : p, piRE && fiU ? $flags.call(p) : f) + , tiRE ? this : proto, $RegExp); + }; + var proxy = function(key){ + key in $RegExp || dP($RegExp, key, { + configurable: true, + get: function(){ return Base[key]; }, + set: function(it){ Base[key] = it; } + }); + }; + for(var keys = gOPN(Base), i = 0; keys.length > i; )proxy(keys[i++]); + proto.constructor = $RegExp; + $RegExp.prototype = proto; + require('./_redefine')(global, 'RegExp', $RegExp); +} + +require('./_set-species')('RegExp'); +},{"./_descriptors":179,"./_fails":185,"./_flags":187,"./_global":189,"./_inherit-if-required":194,"./_is-regexp":201,"./_object-dp":218,"./_object-gopn":223,"./_redefine":238,"./_set-species":242,"./_wks":268}],365:[function(require,module,exports){ +// 21.2.5.3 get RegExp.prototype.flags() +if(require('./_descriptors') && /./g.flags != 'g')require('./_object-dp').f(RegExp.prototype, 'flags', { + configurable: true, + get: require('./_flags') +}); +},{"./_descriptors":179,"./_flags":187,"./_object-dp":218}],366:[function(require,module,exports){ +// @@match logic +require('./_fix-re-wks')('match', 1, function(defined, MATCH, $match){ + // 21.1.3.11 String.prototype.match(regexp) + return [function match(regexp){ + 'use strict'; + var O = defined(this) + , fn = regexp == undefined ? undefined : regexp[MATCH]; + return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[MATCH](String(O)); + }, $match]; +}); +},{"./_fix-re-wks":186}],367:[function(require,module,exports){ +// @@replace logic +require('./_fix-re-wks')('replace', 2, function(defined, REPLACE, $replace){ + // 21.1.3.14 String.prototype.replace(searchValue, replaceValue) + return [function replace(searchValue, replaceValue){ + 'use strict'; + var O = defined(this) + , fn = searchValue == undefined ? undefined : searchValue[REPLACE]; + return fn !== undefined + ? fn.call(searchValue, O, replaceValue) + : $replace.call(String(O), searchValue, replaceValue); + }, $replace]; +}); +},{"./_fix-re-wks":186}],368:[function(require,module,exports){ +// @@search logic +require('./_fix-re-wks')('search', 1, function(defined, SEARCH, $search){ + // 21.1.3.15 String.prototype.search(regexp) + return [function search(regexp){ + 'use strict'; + var O = defined(this) + , fn = regexp == undefined ? undefined : regexp[SEARCH]; + return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[SEARCH](String(O)); + }, $search]; +}); +},{"./_fix-re-wks":186}],369:[function(require,module,exports){ +// @@split logic +require('./_fix-re-wks')('split', 2, function(defined, SPLIT, $split){ + 'use strict'; + var isRegExp = require('./_is-regexp') + , _split = $split + , $push = [].push + , $SPLIT = 'split' + , LENGTH = 'length' + , LAST_INDEX = 'lastIndex'; + if( + 'abbc'[$SPLIT](/(b)*/)[1] == 'c' || + 'test'[$SPLIT](/(?:)/, -1)[LENGTH] != 4 || + 'ab'[$SPLIT](/(?:ab)*/)[LENGTH] != 2 || + '.'[$SPLIT](/(.?)(.?)/)[LENGTH] != 4 || + '.'[$SPLIT](/()()/)[LENGTH] > 1 || + ''[$SPLIT](/.?/)[LENGTH] + ){ + var NPCG = /()??/.exec('')[1] === undefined; // nonparticipating capturing group + // based on es5-shim implementation, need to rework it + $split = function(separator, limit){ + var string = String(this); + if(separator === undefined && limit === 0)return []; + // If `separator` is not a regex, use native split + if(!isRegExp(separator))return _split.call(string, separator, limit); + var output = []; + var flags = (separator.ignoreCase ? 'i' : '') + + (separator.multiline ? 'm' : '') + + (separator.unicode ? 'u' : '') + + (separator.sticky ? 'y' : ''); + var lastLastIndex = 0; + var splitLimit = limit === undefined ? 4294967295 : limit >>> 0; + // Make `global` and avoid `lastIndex` issues by working with a copy + var separatorCopy = new RegExp(separator.source, flags + 'g'); + var separator2, match, lastIndex, lastLength, i; + // Doesn't need flags gy, but they don't hurt + if(!NPCG)separator2 = new RegExp('^' + separatorCopy.source + '$(?!\\s)', flags); + while(match = separatorCopy.exec(string)){ + // `separatorCopy.lastIndex` is not reliable cross-browser + lastIndex = match.index + match[0][LENGTH]; + if(lastIndex > lastLastIndex){ + output.push(string.slice(lastLastIndex, match.index)); + // Fix browsers whose `exec` methods don't consistently return `undefined` for NPCG + if(!NPCG && match[LENGTH] > 1)match[0].replace(separator2, function(){ + for(i = 1; i < arguments[LENGTH] - 2; i++)if(arguments[i] === undefined)match[i] = undefined; + }); + if(match[LENGTH] > 1 && match.index < string[LENGTH])$push.apply(output, match.slice(1)); + lastLength = match[0][LENGTH]; + lastLastIndex = lastIndex; + if(output[LENGTH] >= splitLimit)break; + } + if(separatorCopy[LAST_INDEX] === match.index)separatorCopy[LAST_INDEX]++; // Avoid an infinite loop + } + if(lastLastIndex === string[LENGTH]){ + if(lastLength || !separatorCopy.test(''))output.push(''); + } else output.push(string.slice(lastLastIndex)); + return output[LENGTH] > splitLimit ? output.slice(0, splitLimit) : output; + }; + // Chakra, V8 + } else if('0'[$SPLIT](undefined, 0)[LENGTH]){ + $split = function(separator, limit){ + return separator === undefined && limit === 0 ? [] : _split.call(this, separator, limit); + }; + } + // 21.1.3.17 String.prototype.split(separator, limit) + return [function split(separator, limit){ + var O = defined(this) + , fn = separator == undefined ? undefined : separator[SPLIT]; + return fn !== undefined ? fn.call(separator, O, limit) : $split.call(String(O), separator, limit); + }, $split]; +}); +},{"./_fix-re-wks":186,"./_is-regexp":201}],370:[function(require,module,exports){ +'use strict'; +require('./es6.regexp.flags'); +var anObject = require('./_an-object') + , $flags = require('./_flags') + , DESCRIPTORS = require('./_descriptors') + , TO_STRING = 'toString' + , $toString = /./[TO_STRING]; + +var define = function(fn){ + require('./_redefine')(RegExp.prototype, TO_STRING, fn, true); +}; + +// 21.2.5.14 RegExp.prototype.toString() +if(require('./_fails')(function(){ return $toString.call({source: 'a', flags: 'b'}) != '/a/b'; })){ + define(function toString(){ + var R = anObject(this); + return '/'.concat(R.source, '/', + 'flags' in R ? R.flags : !DESCRIPTORS && R instanceof RegExp ? $flags.call(R) : undefined); + }); +// FF44- RegExp#toString has a wrong name +} else if($toString.name != TO_STRING){ + define(function toString(){ + return $toString.call(this); + }); +} +},{"./_an-object":158,"./_descriptors":179,"./_fails":185,"./_flags":187,"./_redefine":238,"./es6.regexp.flags":365}],371:[function(require,module,exports){ +'use strict'; +var strong = require('./_collection-strong'); + +// 23.2 Set Objects +module.exports = require('./_collection')('Set', function(get){ + return function Set(){ return get(this, arguments.length > 0 ? arguments[0] : undefined); }; +}, { + // 23.2.3.1 Set.prototype.add(value) + add: function add(value){ + return strong.def(this, value = value === 0 ? 0 : value, value); + } +}, strong); +},{"./_collection":173,"./_collection-strong":170}],372:[function(require,module,exports){ +'use strict'; +// B.2.3.2 String.prototype.anchor(name) +require('./_string-html')('anchor', function(createHTML){ + return function anchor(name){ + return createHTML(this, 'a', 'name', name); + } +}); +},{"./_string-html":250}],373:[function(require,module,exports){ +'use strict'; +// B.2.3.3 String.prototype.big() +require('./_string-html')('big', function(createHTML){ + return function big(){ + return createHTML(this, 'big', '', ''); + } +}); +},{"./_string-html":250}],374:[function(require,module,exports){ +'use strict'; +// B.2.3.4 String.prototype.blink() +require('./_string-html')('blink', function(createHTML){ + return function blink(){ + return createHTML(this, 'blink', '', ''); + } +}); +},{"./_string-html":250}],375:[function(require,module,exports){ +'use strict'; +// B.2.3.5 String.prototype.bold() +require('./_string-html')('bold', function(createHTML){ + return function bold(){ + return createHTML(this, 'b', '', ''); + } +}); +},{"./_string-html":250}],376:[function(require,module,exports){ +'use strict'; +var $export = require('./_export') + , $at = require('./_string-at')(false); +$export($export.P, 'String', { + // 21.1.3.3 String.prototype.codePointAt(pos) + codePointAt: function codePointAt(pos){ + return $at(this, pos); + } +}); +},{"./_export":183,"./_string-at":248}],377:[function(require,module,exports){ +// 21.1.3.6 String.prototype.endsWith(searchString [, endPosition]) +'use strict'; +var $export = require('./_export') + , toLength = require('./_to-length') + , context = require('./_string-context') + , ENDS_WITH = 'endsWith' + , $endsWith = ''[ENDS_WITH]; + +$export($export.P + $export.F * require('./_fails-is-regexp')(ENDS_WITH), 'String', { + endsWith: function endsWith(searchString /*, endPosition = @length */){ + var that = context(this, searchString, ENDS_WITH) + , endPosition = arguments.length > 1 ? arguments[1] : undefined + , len = toLength(that.length) + , end = endPosition === undefined ? len : Math.min(toLength(endPosition), len) + , search = String(searchString); + return $endsWith + ? $endsWith.call(that, search, end) + : that.slice(end - search.length, end) === search; + } +}); +},{"./_export":183,"./_fails-is-regexp":184,"./_string-context":249,"./_to-length":259}],378:[function(require,module,exports){ +'use strict'; +// B.2.3.6 String.prototype.fixed() +require('./_string-html')('fixed', function(createHTML){ + return function fixed(){ + return createHTML(this, 'tt', '', ''); + } +}); +},{"./_string-html":250}],379:[function(require,module,exports){ +'use strict'; +// B.2.3.7 String.prototype.fontcolor(color) +require('./_string-html')('fontcolor', function(createHTML){ + return function fontcolor(color){ + return createHTML(this, 'font', 'color', color); + } +}); +},{"./_string-html":250}],380:[function(require,module,exports){ +'use strict'; +// B.2.3.8 String.prototype.fontsize(size) +require('./_string-html')('fontsize', function(createHTML){ + return function fontsize(size){ + return createHTML(this, 'font', 'size', size); + } +}); +},{"./_string-html":250}],381:[function(require,module,exports){ +var $export = require('./_export') + , toIndex = require('./_to-index') + , fromCharCode = String.fromCharCode + , $fromCodePoint = String.fromCodePoint; + +// length should be 1, old FF problem +$export($export.S + $export.F * (!!$fromCodePoint && $fromCodePoint.length != 1), 'String', { + // 21.1.2.2 String.fromCodePoint(...codePoints) + fromCodePoint: function fromCodePoint(x){ // eslint-disable-line no-unused-vars + var res = [] + , aLen = arguments.length + , i = 0 + , code; + while(aLen > i){ + code = +arguments[i++]; + if(toIndex(code, 0x10ffff) !== code)throw RangeError(code + ' is not a valid code point'); + res.push(code < 0x10000 + ? fromCharCode(code) + : fromCharCode(((code -= 0x10000) >> 10) + 0xd800, code % 0x400 + 0xdc00) + ); + } return res.join(''); + } +}); +},{"./_export":183,"./_to-index":256}],382:[function(require,module,exports){ +// 21.1.3.7 String.prototype.includes(searchString, position = 0) +'use strict'; +var $export = require('./_export') + , context = require('./_string-context') + , INCLUDES = 'includes'; + +$export($export.P + $export.F * require('./_fails-is-regexp')(INCLUDES), 'String', { + includes: function includes(searchString /*, position = 0 */){ + return !!~context(this, searchString, INCLUDES) + .indexOf(searchString, arguments.length > 1 ? arguments[1] : undefined); + } +}); +},{"./_export":183,"./_fails-is-regexp":184,"./_string-context":249}],383:[function(require,module,exports){ +'use strict'; +// B.2.3.9 String.prototype.italics() +require('./_string-html')('italics', function(createHTML){ + return function italics(){ + return createHTML(this, 'i', '', ''); + } +}); +},{"./_string-html":250}],384:[function(require,module,exports){ +'use strict'; +var $at = require('./_string-at')(true); + +// 21.1.3.27 String.prototype[@@iterator]() +require('./_iter-define')(String, 'String', function(iterated){ + this._t = String(iterated); // target + this._i = 0; // next index +// 21.1.5.2.1 %StringIteratorPrototype%.next() +}, function(){ + var O = this._t + , index = this._i + , point; + if(index >= O.length)return {value: undefined, done: true}; + point = $at(O, index); + this._i += point.length; + return {value: point, done: false}; +}); +},{"./_iter-define":204,"./_string-at":248}],385:[function(require,module,exports){ +'use strict'; +// B.2.3.10 String.prototype.link(url) +require('./_string-html')('link', function(createHTML){ + return function link(url){ + return createHTML(this, 'a', 'href', url); + } +}); +},{"./_string-html":250}],386:[function(require,module,exports){ +var $export = require('./_export') + , toIObject = require('./_to-iobject') + , toLength = require('./_to-length'); + +$export($export.S, 'String', { + // 21.1.2.4 String.raw(callSite, ...substitutions) + raw: function raw(callSite){ + var tpl = toIObject(callSite.raw) + , len = toLength(tpl.length) + , aLen = arguments.length + , res = [] + , i = 0; + while(len > i){ + res.push(String(tpl[i++])); + if(i < aLen)res.push(String(arguments[i])); + } return res.join(''); + } +}); +},{"./_export":183,"./_to-iobject":258,"./_to-length":259}],387:[function(require,module,exports){ +var $export = require('./_export'); + +$export($export.P, 'String', { + // 21.1.3.13 String.prototype.repeat(count) + repeat: require('./_string-repeat') +}); +},{"./_export":183,"./_string-repeat":252}],388:[function(require,module,exports){ +'use strict'; +// B.2.3.11 String.prototype.small() +require('./_string-html')('small', function(createHTML){ + return function small(){ + return createHTML(this, 'small', '', ''); + } +}); +},{"./_string-html":250}],389:[function(require,module,exports){ +// 21.1.3.18 String.prototype.startsWith(searchString [, position ]) +'use strict'; +var $export = require('./_export') + , toLength = require('./_to-length') + , context = require('./_string-context') + , STARTS_WITH = 'startsWith' + , $startsWith = ''[STARTS_WITH]; + +$export($export.P + $export.F * require('./_fails-is-regexp')(STARTS_WITH), 'String', { + startsWith: function startsWith(searchString /*, position = 0 */){ + var that = context(this, searchString, STARTS_WITH) + , index = toLength(Math.min(arguments.length > 1 ? arguments[1] : undefined, that.length)) + , search = String(searchString); + return $startsWith + ? $startsWith.call(that, search, index) + : that.slice(index, index + search.length) === search; + } +}); +},{"./_export":183,"./_fails-is-regexp":184,"./_string-context":249,"./_to-length":259}],390:[function(require,module,exports){ +'use strict'; +// B.2.3.12 String.prototype.strike() +require('./_string-html')('strike', function(createHTML){ + return function strike(){ + return createHTML(this, 'strike', '', ''); + } +}); +},{"./_string-html":250}],391:[function(require,module,exports){ +'use strict'; +// B.2.3.13 String.prototype.sub() +require('./_string-html')('sub', function(createHTML){ + return function sub(){ + return createHTML(this, 'sub', '', ''); + } +}); +},{"./_string-html":250}],392:[function(require,module,exports){ +'use strict'; +// B.2.3.14 String.prototype.sup() +require('./_string-html')('sup', function(createHTML){ + return function sup(){ + return createHTML(this, 'sup', '', ''); + } +}); +},{"./_string-html":250}],393:[function(require,module,exports){ +'use strict'; +// 21.1.3.25 String.prototype.trim() +require('./_string-trim')('trim', function($trim){ + return function trim(){ + return $trim(this, 3); + }; +}); +},{"./_string-trim":253}],394:[function(require,module,exports){ +'use strict'; +// ECMAScript 6 symbols shim +var global = require('./_global') + , has = require('./_has') + , DESCRIPTORS = require('./_descriptors') + , $export = require('./_export') + , redefine = require('./_redefine') + , META = require('./_meta').KEY + , $fails = require('./_fails') + , shared = require('./_shared') + , setToStringTag = require('./_set-to-string-tag') + , uid = require('./_uid') + , wks = require('./_wks') + , wksExt = require('./_wks-ext') + , wksDefine = require('./_wks-define') + , keyOf = require('./_keyof') + , enumKeys = require('./_enum-keys') + , isArray = require('./_is-array') + , anObject = require('./_an-object') + , toIObject = require('./_to-iobject') + , toPrimitive = require('./_to-primitive') + , createDesc = require('./_property-desc') + , _create = require('./_object-create') + , gOPNExt = require('./_object-gopn-ext') + , $GOPD = require('./_object-gopd') + , $DP = require('./_object-dp') + , $keys = require('./_object-keys') + , gOPD = $GOPD.f + , dP = $DP.f + , gOPN = gOPNExt.f + , $Symbol = global.Symbol + , $JSON = global.JSON + , _stringify = $JSON && $JSON.stringify + , PROTOTYPE = 'prototype' + , HIDDEN = wks('_hidden') + , TO_PRIMITIVE = wks('toPrimitive') + , isEnum = {}.propertyIsEnumerable + , SymbolRegistry = shared('symbol-registry') + , AllSymbols = shared('symbols') + , OPSymbols = shared('op-symbols') + , ObjectProto = Object[PROTOTYPE] + , USE_NATIVE = typeof $Symbol == 'function' + , QObject = global.QObject; +// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173 +var setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild; + +// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687 +var setSymbolDesc = DESCRIPTORS && $fails(function(){ + return _create(dP({}, 'a', { + get: function(){ return dP(this, 'a', {value: 7}).a; } + })).a != 7; +}) ? function(it, key, D){ + var protoDesc = gOPD(ObjectProto, key); + if(protoDesc)delete ObjectProto[key]; + dP(it, key, D); + if(protoDesc && it !== ObjectProto)dP(ObjectProto, key, protoDesc); +} : dP; + +var wrap = function(tag){ + var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]); + sym._k = tag; + return sym; +}; + +var isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function(it){ + return typeof it == 'symbol'; +} : function(it){ + return it instanceof $Symbol; +}; + +var $defineProperty = function defineProperty(it, key, D){ + if(it === ObjectProto)$defineProperty(OPSymbols, key, D); + anObject(it); + key = toPrimitive(key, true); + anObject(D); + if(has(AllSymbols, key)){ + if(!D.enumerable){ + if(!has(it, HIDDEN))dP(it, HIDDEN, createDesc(1, {})); + it[HIDDEN][key] = true; + } else { + if(has(it, HIDDEN) && it[HIDDEN][key])it[HIDDEN][key] = false; + D = _create(D, {enumerable: createDesc(0, false)}); + } return setSymbolDesc(it, key, D); + } return dP(it, key, D); +}; +var $defineProperties = function defineProperties(it, P){ + anObject(it); + var keys = enumKeys(P = toIObject(P)) + , i = 0 + , l = keys.length + , key; + while(l > i)$defineProperty(it, key = keys[i++], P[key]); + return it; +}; +var $create = function create(it, P){ + return P === undefined ? _create(it) : $defineProperties(_create(it), P); +}; +var $propertyIsEnumerable = function propertyIsEnumerable(key){ + var E = isEnum.call(this, key = toPrimitive(key, true)); + if(this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key))return false; + return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true; +}; +var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key){ + it = toIObject(it); + key = toPrimitive(key, true); + if(it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key))return; + var D = gOPD(it, key); + if(D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key]))D.enumerable = true; + return D; +}; +var $getOwnPropertyNames = function getOwnPropertyNames(it){ + var names = gOPN(toIObject(it)) + , result = [] + , i = 0 + , key; + while(names.length > i){ + if(!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META)result.push(key); + } return result; +}; +var $getOwnPropertySymbols = function getOwnPropertySymbols(it){ + var IS_OP = it === ObjectProto + , names = gOPN(IS_OP ? OPSymbols : toIObject(it)) + , result = [] + , i = 0 + , key; + while(names.length > i){ + if(has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true))result.push(AllSymbols[key]); + } return result; +}; + +// 19.4.1.1 Symbol([description]) +if(!USE_NATIVE){ + $Symbol = function Symbol(){ + if(this instanceof $Symbol)throw TypeError('Symbol is not a constructor!'); + var tag = uid(arguments.length > 0 ? arguments[0] : undefined); + var $set = function(value){ + if(this === ObjectProto)$set.call(OPSymbols, value); + if(has(this, HIDDEN) && has(this[HIDDEN], tag))this[HIDDEN][tag] = false; + setSymbolDesc(this, tag, createDesc(1, value)); + }; + if(DESCRIPTORS && setter)setSymbolDesc(ObjectProto, tag, {configurable: true, set: $set}); + return wrap(tag); + }; + redefine($Symbol[PROTOTYPE], 'toString', function toString(){ + return this._k; + }); + + $GOPD.f = $getOwnPropertyDescriptor; + $DP.f = $defineProperty; + require('./_object-gopn').f = gOPNExt.f = $getOwnPropertyNames; + require('./_object-pie').f = $propertyIsEnumerable; + require('./_object-gops').f = $getOwnPropertySymbols; + + if(DESCRIPTORS && !require('./_library')){ + redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true); + } + + wksExt.f = function(name){ + return wrap(wks(name)); + } +} + +$export($export.G + $export.W + $export.F * !USE_NATIVE, {Symbol: $Symbol}); + +for(var symbols = ( + // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14 + 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables' +).split(','), i = 0; symbols.length > i; )wks(symbols[i++]); + +for(var symbols = $keys(wks.store), i = 0; symbols.length > i; )wksDefine(symbols[i++]); + +$export($export.S + $export.F * !USE_NATIVE, 'Symbol', { + // 19.4.2.1 Symbol.for(key) + 'for': function(key){ + return has(SymbolRegistry, key += '') + ? SymbolRegistry[key] + : SymbolRegistry[key] = $Symbol(key); + }, + // 19.4.2.5 Symbol.keyFor(sym) + keyFor: function keyFor(key){ + if(isSymbol(key))return keyOf(SymbolRegistry, key); + throw TypeError(key + ' is not a symbol!'); + }, + useSetter: function(){ setter = true; }, + useSimple: function(){ setter = false; } +}); + +$export($export.S + $export.F * !USE_NATIVE, 'Object', { + // 19.1.2.2 Object.create(O [, Properties]) + create: $create, + // 19.1.2.4 Object.defineProperty(O, P, Attributes) + defineProperty: $defineProperty, + // 19.1.2.3 Object.defineProperties(O, Properties) + defineProperties: $defineProperties, + // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P) + getOwnPropertyDescriptor: $getOwnPropertyDescriptor, + // 19.1.2.7 Object.getOwnPropertyNames(O) + getOwnPropertyNames: $getOwnPropertyNames, + // 19.1.2.8 Object.getOwnPropertySymbols(O) + getOwnPropertySymbols: $getOwnPropertySymbols +}); + +// 24.3.2 JSON.stringify(value [, replacer [, space]]) +$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function(){ + var S = $Symbol(); + // MS Edge converts symbol values to JSON as {} + // WebKit converts symbol values to JSON as null + // V8 throws on boxed symbols + return _stringify([S]) != '[null]' || _stringify({a: S}) != '{}' || _stringify(Object(S)) != '{}'; +})), 'JSON', { + stringify: function stringify(it){ + if(it === undefined || isSymbol(it))return; // IE8 returns string on undefined + var args = [it] + , i = 1 + , replacer, $replacer; + while(arguments.length > i)args.push(arguments[i++]); + replacer = args[1]; + if(typeof replacer == 'function')$replacer = replacer; + if($replacer || !isArray(replacer))replacer = function(key, value){ + if($replacer)value = $replacer.call(this, key, value); + if(!isSymbol(value))return value; + }; + args[1] = replacer; + return _stringify.apply($JSON, args); + } +}); + +// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint) +$Symbol[PROTOTYPE][TO_PRIMITIVE] || require('./_hide')($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf); +// 19.4.3.5 Symbol.prototype[@@toStringTag] +setToStringTag($Symbol, 'Symbol'); +// 20.2.1.9 Math[@@toStringTag] +setToStringTag(Math, 'Math', true); +// 24.3.3 JSON[@@toStringTag] +setToStringTag(global.JSON, 'JSON', true); +},{"./_an-object":158,"./_descriptors":179,"./_enum-keys":182,"./_export":183,"./_fails":185,"./_global":189,"./_has":190,"./_hide":191,"./_is-array":198,"./_keyof":208,"./_library":209,"./_meta":213,"./_object-create":217,"./_object-dp":218,"./_object-gopd":221,"./_object-gopn":223,"./_object-gopn-ext":222,"./_object-gops":224,"./_object-keys":227,"./_object-pie":228,"./_property-desc":236,"./_redefine":238,"./_set-to-string-tag":243,"./_shared":245,"./_to-iobject":258,"./_to-primitive":261,"./_uid":265,"./_wks":268,"./_wks-define":266,"./_wks-ext":267}],395:[function(require,module,exports){ +'use strict'; +var $export = require('./_export') + , $typed = require('./_typed') + , buffer = require('./_typed-buffer') + , anObject = require('./_an-object') + , toIndex = require('./_to-index') + , toLength = require('./_to-length') + , isObject = require('./_is-object') + , ArrayBuffer = require('./_global').ArrayBuffer + , speciesConstructor = require('./_species-constructor') + , $ArrayBuffer = buffer.ArrayBuffer + , $DataView = buffer.DataView + , $isView = $typed.ABV && ArrayBuffer.isView + , $slice = $ArrayBuffer.prototype.slice + , VIEW = $typed.VIEW + , ARRAY_BUFFER = 'ArrayBuffer'; + +$export($export.G + $export.W + $export.F * (ArrayBuffer !== $ArrayBuffer), {ArrayBuffer: $ArrayBuffer}); + +$export($export.S + $export.F * !$typed.CONSTR, ARRAY_BUFFER, { + // 24.1.3.1 ArrayBuffer.isView(arg) + isView: function isView(it){ + return $isView && $isView(it) || isObject(it) && VIEW in it; + } +}); + +$export($export.P + $export.U + $export.F * require('./_fails')(function(){ + return !new $ArrayBuffer(2).slice(1, undefined).byteLength; +}), ARRAY_BUFFER, { + // 24.1.4.3 ArrayBuffer.prototype.slice(start, end) + slice: function slice(start, end){ + if($slice !== undefined && end === undefined)return $slice.call(anObject(this), start); // FF fix + var len = anObject(this).byteLength + , first = toIndex(start, len) + , final = toIndex(end === undefined ? len : end, len) + , result = new (speciesConstructor(this, $ArrayBuffer))(toLength(final - first)) + , viewS = new $DataView(this) + , viewT = new $DataView(result) + , index = 0; + while(first < final){ + viewT.setUint8(index++, viewS.getUint8(first++)); + } return result; + } +}); + +require('./_set-species')(ARRAY_BUFFER); +},{"./_an-object":158,"./_export":183,"./_fails":185,"./_global":189,"./_is-object":200,"./_set-species":242,"./_species-constructor":246,"./_to-index":256,"./_to-length":259,"./_typed":264,"./_typed-buffer":263}],396:[function(require,module,exports){ +var $export = require('./_export'); +$export($export.G + $export.W + $export.F * !require('./_typed').ABV, { + DataView: require('./_typed-buffer').DataView +}); +},{"./_export":183,"./_typed":264,"./_typed-buffer":263}],397:[function(require,module,exports){ +require('./_typed-array')('Float32', 4, function(init){ + return function Float32Array(data, byteOffset, length){ + return init(this, data, byteOffset, length); + }; +}); +},{"./_typed-array":262}],398:[function(require,module,exports){ +require('./_typed-array')('Float64', 8, function(init){ + return function Float64Array(data, byteOffset, length){ + return init(this, data, byteOffset, length); + }; +}); +},{"./_typed-array":262}],399:[function(require,module,exports){ +require('./_typed-array')('Int16', 2, function(init){ + return function Int16Array(data, byteOffset, length){ + return init(this, data, byteOffset, length); + }; +}); +},{"./_typed-array":262}],400:[function(require,module,exports){ +require('./_typed-array')('Int32', 4, function(init){ + return function Int32Array(data, byteOffset, length){ + return init(this, data, byteOffset, length); + }; +}); +},{"./_typed-array":262}],401:[function(require,module,exports){ +require('./_typed-array')('Int8', 1, function(init){ + return function Int8Array(data, byteOffset, length){ + return init(this, data, byteOffset, length); + }; +}); +},{"./_typed-array":262}],402:[function(require,module,exports){ +require('./_typed-array')('Uint16', 2, function(init){ + return function Uint16Array(data, byteOffset, length){ + return init(this, data, byteOffset, length); + }; +}); +},{"./_typed-array":262}],403:[function(require,module,exports){ +require('./_typed-array')('Uint32', 4, function(init){ + return function Uint32Array(data, byteOffset, length){ + return init(this, data, byteOffset, length); + }; +}); +},{"./_typed-array":262}],404:[function(require,module,exports){ +require('./_typed-array')('Uint8', 1, function(init){ + return function Uint8Array(data, byteOffset, length){ + return init(this, data, byteOffset, length); + }; +}); +},{"./_typed-array":262}],405:[function(require,module,exports){ +require('./_typed-array')('Uint8', 1, function(init){ + return function Uint8ClampedArray(data, byteOffset, length){ + return init(this, data, byteOffset, length); + }; +}, true); +},{"./_typed-array":262}],406:[function(require,module,exports){ +'use strict'; +var each = require('./_array-methods')(0) + , redefine = require('./_redefine') + , meta = require('./_meta') + , assign = require('./_object-assign') + , weak = require('./_collection-weak') + , isObject = require('./_is-object') + , getWeak = meta.getWeak + , isExtensible = Object.isExtensible + , uncaughtFrozenStore = weak.ufstore + , tmp = {} + , InternalMap; + +var wrapper = function(get){ + return function WeakMap(){ + return get(this, arguments.length > 0 ? arguments[0] : undefined); + }; +}; + +var methods = { + // 23.3.3.3 WeakMap.prototype.get(key) + get: function get(key){ + if(isObject(key)){ + var data = getWeak(key); + if(data === true)return uncaughtFrozenStore(this).get(key); + return data ? data[this._i] : undefined; + } + }, + // 23.3.3.5 WeakMap.prototype.set(key, value) + set: function set(key, value){ + return weak.def(this, key, value); + } +}; + +// 23.3 WeakMap Objects +var $WeakMap = module.exports = require('./_collection')('WeakMap', wrapper, methods, weak, true, true); + +// IE11 WeakMap frozen keys fix +if(new $WeakMap().set((Object.freeze || Object)(tmp), 7).get(tmp) != 7){ + InternalMap = weak.getConstructor(wrapper); + assign(InternalMap.prototype, methods); + meta.NEED = true; + each(['delete', 'has', 'get', 'set'], function(key){ + var proto = $WeakMap.prototype + , method = proto[key]; + redefine(proto, key, function(a, b){ + // store frozen objects on internal weakmap shim + if(isObject(a) && !isExtensible(a)){ + if(!this._f)this._f = new InternalMap; + var result = this._f[key](a, b); + return key == 'set' ? this : result; + // store all the rest on native weakmap + } return method.call(this, a, b); + }); + }); +} +},{"./_array-methods":163,"./_collection":173,"./_collection-weak":172,"./_is-object":200,"./_meta":213,"./_object-assign":216,"./_redefine":238}],407:[function(require,module,exports){ +'use strict'; +var weak = require('./_collection-weak'); + +// 23.4 WeakSet Objects +require('./_collection')('WeakSet', function(get){ + return function WeakSet(){ return get(this, arguments.length > 0 ? arguments[0] : undefined); }; +}, { + // 23.4.3.1 WeakSet.prototype.add(value) + add: function add(value){ + return weak.def(this, value, true); + } +}, weak, false, true); +},{"./_collection":173,"./_collection-weak":172}],408:[function(require,module,exports){ +'use strict'; +// https://github.com/tc39/Array.prototype.includes +var $export = require('./_export') + , $includes = require('./_array-includes')(true); + +$export($export.P, 'Array', { + includes: function includes(el /*, fromIndex = 0 */){ + return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined); + } +}); - var encoding = opts.encoding - var shouldInferEncoding = false +require('./_add-to-unscopables')('includes'); +},{"./_add-to-unscopables":156,"./_array-includes":162,"./_export":183}],409:[function(require,module,exports){ +// https://github.com/rwaldron/tc39-notes/blob/master/es6/2014-09/sept-25.md#510-globalasap-for-enqueuing-a-microtask +var $export = require('./_export') + , microtask = require('./_microtask')() + , process = require('./_global').process + , isNode = require('./_cof')(process) == 'process'; - if (!encoding) { - shouldInferEncoding = true - } else { - encoding = String(encoding).toLowerCase() - if (encoding === 'u8' || encoding === 'uint8') { - encoding = 'uint8array' - } +$export($export.G, { + asap: function asap(fn){ + var domain = isNode && process.domain; + microtask(domain ? domain.bind(fn) : fn); } +}); +},{"./_cof":169,"./_export":183,"./_global":189,"./_microtask":215}],410:[function(require,module,exports){ +// https://github.com/ljharb/proposal-is-error +var $export = require('./_export') + , cof = require('./_cof'); - Writable.call(this, { objectMode: true }) +$export($export.S, 'Error', { + isError: function isError(it){ + return cof(it) === 'Error'; + } +}); +},{"./_cof":169,"./_export":183}],411:[function(require,module,exports){ +// https://github.com/DavidBruant/Map-Set.prototype.toJSON +var $export = require('./_export'); + +$export($export.P + $export.R, 'Map', {toJSON: require('./_collection-to-json')('Map')}); +},{"./_collection-to-json":171,"./_export":183}],412:[function(require,module,exports){ +// https://gist.github.com/BrendanEich/4294d5c212a6d2254703 +var $export = require('./_export'); + +$export($export.S, 'Math', { + iaddh: function iaddh(x0, x1, y0, y1){ + var $x0 = x0 >>> 0 + , $x1 = x1 >>> 0 + , $y0 = y0 >>> 0; + return $x1 + (y1 >>> 0) + (($x0 & $y0 | ($x0 | $y0) & ~($x0 + $y0 >>> 0)) >>> 31) | 0; + } +}); +},{"./_export":183}],413:[function(require,module,exports){ +// https://gist.github.com/BrendanEich/4294d5c212a6d2254703 +var $export = require('./_export'); + +$export($export.S, 'Math', { + imulh: function imulh(u, v){ + var UINT16 = 0xffff + , $u = +u + , $v = +v + , u0 = $u & UINT16 + , v0 = $v & UINT16 + , u1 = $u >> 16 + , v1 = $v >> 16 + , t = (u1 * v0 >>> 0) + (u0 * v0 >>> 16); + return u1 * v1 + (t >> 16) + ((u0 * v1 >>> 0) + (t & UINT16) >> 16); + } +}); +},{"./_export":183}],414:[function(require,module,exports){ +// https://gist.github.com/BrendanEich/4294d5c212a6d2254703 +var $export = require('./_export'); - this.encoding = encoding - this.shouldInferEncoding = shouldInferEncoding +$export($export.S, 'Math', { + isubh: function isubh(x0, x1, y0, y1){ + var $x0 = x0 >>> 0 + , $x1 = x1 >>> 0 + , $y0 = y0 >>> 0; + return $x1 - (y1 >>> 0) - ((~$x0 & $y0 | ~($x0 ^ $y0) & $x0 - $y0 >>> 0) >>> 31) | 0; + } +}); +},{"./_export":183}],415:[function(require,module,exports){ +// https://gist.github.com/BrendanEich/4294d5c212a6d2254703 +var $export = require('./_export'); + +$export($export.S, 'Math', { + umulh: function umulh(u, v){ + var UINT16 = 0xffff + , $u = +u + , $v = +v + , u0 = $u & UINT16 + , v0 = $v & UINT16 + , u1 = $u >>> 16 + , v1 = $v >>> 16 + , t = (u1 * v0 >>> 0) + (u0 * v0 >>> 16); + return u1 * v1 + (t >>> 16) + ((u0 * v1 >>> 0) + (t & UINT16) >>> 16); + } +}); +},{"./_export":183}],416:[function(require,module,exports){ +'use strict'; +var $export = require('./_export') + , toObject = require('./_to-object') + , aFunction = require('./_a-function') + , $defineProperty = require('./_object-dp'); - if (cb) this.on('finish', function () { cb(this.getBody()) }) - this.body = [] -} +// B.2.2.2 Object.prototype.__defineGetter__(P, getter) +require('./_descriptors') && $export($export.P + require('./_object-forced-pam'), 'Object', { + __defineGetter__: function __defineGetter__(P, getter){ + $defineProperty.f(toObject(this), P, {get: aFunction(getter), enumerable: true, configurable: true}); + } +}); +},{"./_a-function":154,"./_descriptors":179,"./_export":183,"./_object-dp":218,"./_object-forced-pam":220,"./_to-object":260}],417:[function(require,module,exports){ +'use strict'; +var $export = require('./_export') + , toObject = require('./_to-object') + , aFunction = require('./_a-function') + , $defineProperty = require('./_object-dp'); -module.exports = ConcatStream -inherits(ConcatStream, Writable) +// B.2.2.3 Object.prototype.__defineSetter__(P, setter) +require('./_descriptors') && $export($export.P + require('./_object-forced-pam'), 'Object', { + __defineSetter__: function __defineSetter__(P, setter){ + $defineProperty.f(toObject(this), P, {set: aFunction(setter), enumerable: true, configurable: true}); + } +}); +},{"./_a-function":154,"./_descriptors":179,"./_export":183,"./_object-dp":218,"./_object-forced-pam":220,"./_to-object":260}],418:[function(require,module,exports){ +// https://github.com/tc39/proposal-object-values-entries +var $export = require('./_export') + , $entries = require('./_object-to-array')(true); -ConcatStream.prototype._write = function(chunk, enc, next) { - this.body.push(chunk) - next() -} +$export($export.S, 'Object', { + entries: function entries(it){ + return $entries(it); + } +}); +},{"./_export":183,"./_object-to-array":230}],419:[function(require,module,exports){ +// https://github.com/tc39/proposal-object-getownpropertydescriptors +var $export = require('./_export') + , ownKeys = require('./_own-keys') + , toIObject = require('./_to-iobject') + , gOPD = require('./_object-gopd') + , createProperty = require('./_create-property'); + +$export($export.S, 'Object', { + getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object){ + var O = toIObject(object) + , getDesc = gOPD.f + , keys = ownKeys(O) + , result = {} + , i = 0 + , key; + while(keys.length > i)createProperty(result, key = keys[i++], getDesc(O, key)); + return result; + } +}); +},{"./_create-property":175,"./_export":183,"./_object-gopd":221,"./_own-keys":231,"./_to-iobject":258}],420:[function(require,module,exports){ +'use strict'; +var $export = require('./_export') + , toObject = require('./_to-object') + , toPrimitive = require('./_to-primitive') + , getPrototypeOf = require('./_object-gpo') + , getOwnPropertyDescriptor = require('./_object-gopd').f; + +// B.2.2.4 Object.prototype.__lookupGetter__(P) +require('./_descriptors') && $export($export.P + require('./_object-forced-pam'), 'Object', { + __lookupGetter__: function __lookupGetter__(P){ + var O = toObject(this) + , K = toPrimitive(P, true) + , D; + do { + if(D = getOwnPropertyDescriptor(O, K))return D.get; + } while(O = getPrototypeOf(O)); + } +}); +},{"./_descriptors":179,"./_export":183,"./_object-forced-pam":220,"./_object-gopd":221,"./_object-gpo":225,"./_to-object":260,"./_to-primitive":261}],421:[function(require,module,exports){ +'use strict'; +var $export = require('./_export') + , toObject = require('./_to-object') + , toPrimitive = require('./_to-primitive') + , getPrototypeOf = require('./_object-gpo') + , getOwnPropertyDescriptor = require('./_object-gopd').f; + +// B.2.2.5 Object.prototype.__lookupSetter__(P) +require('./_descriptors') && $export($export.P + require('./_object-forced-pam'), 'Object', { + __lookupSetter__: function __lookupSetter__(P){ + var O = toObject(this) + , K = toPrimitive(P, true) + , D; + do { + if(D = getOwnPropertyDescriptor(O, K))return D.set; + } while(O = getPrototypeOf(O)); + } +}); +},{"./_descriptors":179,"./_export":183,"./_object-forced-pam":220,"./_object-gopd":221,"./_object-gpo":225,"./_to-object":260,"./_to-primitive":261}],422:[function(require,module,exports){ +// https://github.com/tc39/proposal-object-values-entries +var $export = require('./_export') + , $values = require('./_object-to-array')(false); -ConcatStream.prototype.inferEncoding = function (buff) { - var firstBuffer = buff === undefined ? this.body[0] : buff; - if (Buffer.isBuffer(firstBuffer)) return 'buffer' - if (typeof Uint8Array !== 'undefined' && firstBuffer instanceof Uint8Array) return 'uint8array' - if (Array.isArray(firstBuffer)) return 'array' - if (typeof firstBuffer === 'string') return 'string' - if (Object.prototype.toString.call(firstBuffer) === "[object Object]") return 'object' - return 'buffer' -} +$export($export.S, 'Object', { + values: function values(it){ + return $values(it); + } +}); +},{"./_export":183,"./_object-to-array":230}],423:[function(require,module,exports){ +'use strict'; +// https://github.com/zenparsing/es-observable +var $export = require('./_export') + , global = require('./_global') + , core = require('./_core') + , microtask = require('./_microtask')() + , OBSERVABLE = require('./_wks')('observable') + , aFunction = require('./_a-function') + , anObject = require('./_an-object') + , anInstance = require('./_an-instance') + , redefineAll = require('./_redefine-all') + , hide = require('./_hide') + , forOf = require('./_for-of') + , RETURN = forOf.RETURN; + +var getMethod = function(fn){ + return fn == null ? undefined : aFunction(fn); +}; + +var cleanupSubscription = function(subscription){ + var cleanup = subscription._c; + if(cleanup){ + subscription._c = undefined; + cleanup(); + } +}; -ConcatStream.prototype.getBody = function () { - if (!this.encoding && this.body.length === 0) return [] - if (this.shouldInferEncoding) this.encoding = this.inferEncoding() - if (this.encoding === 'array') return arrayConcat(this.body) - if (this.encoding === 'string') return stringConcat(this.body) - if (this.encoding === 'buffer') return bufferConcat(this.body) - if (this.encoding === 'uint8array') return u8Concat(this.body) - return this.body -} +var subscriptionClosed = function(subscription){ + return subscription._o === undefined; +}; -var isArray = Array.isArray || function (arr) { - return Object.prototype.toString.call(arr) == '[object Array]' -} +var closeSubscription = function(subscription){ + if(!subscriptionClosed(subscription)){ + subscription._o = undefined; + cleanupSubscription(subscription); + } +}; -function isArrayish (arr) { - return /Array\]$/.test(Object.prototype.toString.call(arr)) -} +var Subscription = function(observer, subscriber){ + anObject(observer); + this._c = undefined; + this._o = observer; + observer = new SubscriptionObserver(this); + try { + var cleanup = subscriber(observer) + , subscription = cleanup; + if(cleanup != null){ + if(typeof cleanup.unsubscribe === 'function')cleanup = function(){ subscription.unsubscribe(); }; + else aFunction(cleanup); + this._c = cleanup; + } + } catch(e){ + observer.error(e); + return; + } if(subscriptionClosed(this))cleanupSubscription(this); +}; -function isBufferish (p) { - return typeof p === 'string' || isArrayish(p) || (p && typeof p.subarray === 'function') -} +Subscription.prototype = redefineAll({}, { + unsubscribe: function unsubscribe(){ closeSubscription(this); } +}); -function stringConcat (parts) { - var strings = [] - var needsToString = false - for (var i = 0; i < parts.length; i++) { - var p = parts[i] - if (typeof p === 'string') { - strings.push(p) - } else if (Buffer.isBuffer(p)) { - strings.push(p) - } else if (isBufferish(p)) { - strings.push(new Buffer(p)) - } else { - strings.push(new Buffer(String(p))) +var SubscriptionObserver = function(subscription){ + this._s = subscription; +}; + +SubscriptionObserver.prototype = redefineAll({}, { + next: function next(value){ + var subscription = this._s; + if(!subscriptionClosed(subscription)){ + var observer = subscription._o; + try { + var m = getMethod(observer.next); + if(m)return m.call(observer, value); + } catch(e){ + try { + closeSubscription(subscription); + } finally { + throw e; + } + } + } + }, + error: function error(value){ + var subscription = this._s; + if(subscriptionClosed(subscription))throw value; + var observer = subscription._o; + subscription._o = undefined; + try { + var m = getMethod(observer.error); + if(!m)throw value; + value = m.call(observer, value); + } catch(e){ + try { + cleanupSubscription(subscription); + } finally { + throw e; + } + } cleanupSubscription(subscription); + return value; + }, + complete: function complete(value){ + var subscription = this._s; + if(!subscriptionClosed(subscription)){ + var observer = subscription._o; + subscription._o = undefined; + try { + var m = getMethod(observer.complete); + value = m ? m.call(observer, value) : undefined; + } catch(e){ + try { + cleanupSubscription(subscription); + } finally { + throw e; + } + } cleanupSubscription(subscription); + return value; } } - if (Buffer.isBuffer(parts[0])) { - strings = Buffer.concat(strings) - strings = strings.toString('utf8') - } else { - strings = strings.join('') +}); + +var $Observable = function Observable(subscriber){ + anInstance(this, $Observable, 'Observable', '_f')._f = aFunction(subscriber); +}; + +redefineAll($Observable.prototype, { + subscribe: function subscribe(observer){ + return new Subscription(observer, this._f); + }, + forEach: function forEach(fn){ + var that = this; + return new (core.Promise || global.Promise)(function(resolve, reject){ + aFunction(fn); + var subscription = that.subscribe({ + next : function(value){ + try { + return fn(value); + } catch(e){ + reject(e); + subscription.unsubscribe(); + } + }, + error: reject, + complete: resolve + }); + }); } - return strings -} +}); -function bufferConcat (parts) { - var bufs = [] - for (var i = 0; i < parts.length; i++) { - var p = parts[i] - if (Buffer.isBuffer(p)) { - bufs.push(p) - } else if (isBufferish(p)) { - bufs.push(new Buffer(p)) - } else { - bufs.push(new Buffer(String(p))) +redefineAll($Observable, { + from: function from(x){ + var C = typeof this === 'function' ? this : $Observable; + var method = getMethod(anObject(x)[OBSERVABLE]); + if(method){ + var observable = anObject(method.call(x)); + return observable.constructor === C ? observable : new C(function(observer){ + return observable.subscribe(observer); + }); } + return new C(function(observer){ + var done = false; + microtask(function(){ + if(!done){ + try { + if(forOf(x, false, function(it){ + observer.next(it); + if(done)return RETURN; + }) === RETURN)return; + } catch(e){ + if(done)throw e; + observer.error(e); + return; + } observer.complete(); + } + }); + return function(){ done = true; }; + }); + }, + of: function of(){ + for(var i = 0, l = arguments.length, items = Array(l); i < l;)items[i] = arguments[i++]; + return new (typeof this === 'function' ? this : $Observable)(function(observer){ + var done = false; + microtask(function(){ + if(!done){ + for(var i = 0; i < items.length; ++i){ + observer.next(items[i]); + if(done)return; + } observer.complete(); + } + }); + return function(){ done = true; }; + }); } - return Buffer.concat(bufs) -} +}); -function arrayConcat (parts) { - var res = [] - for (var i = 0; i < parts.length; i++) { - res.push.apply(res, parts[i]) - } - return res -} +hide($Observable.prototype, OBSERVABLE, function(){ return this; }); + +$export($export.G, {Observable: $Observable}); + +require('./_set-species')('Observable'); +},{"./_a-function":154,"./_an-instance":157,"./_an-object":158,"./_core":174,"./_export":183,"./_for-of":188,"./_global":189,"./_hide":191,"./_microtask":215,"./_redefine-all":237,"./_set-species":242,"./_wks":268}],424:[function(require,module,exports){ +var metadata = require('./_metadata') + , anObject = require('./_an-object') + , toMetaKey = metadata.key + , ordinaryDefineOwnMetadata = metadata.set; + +metadata.exp({defineMetadata: function defineMetadata(metadataKey, metadataValue, target, targetKey){ + ordinaryDefineOwnMetadata(metadataKey, metadataValue, anObject(target), toMetaKey(targetKey)); +}}); +},{"./_an-object":158,"./_metadata":214}],425:[function(require,module,exports){ +var metadata = require('./_metadata') + , anObject = require('./_an-object') + , toMetaKey = metadata.key + , getOrCreateMetadataMap = metadata.map + , store = metadata.store; + +metadata.exp({deleteMetadata: function deleteMetadata(metadataKey, target /*, targetKey */){ + var targetKey = arguments.length < 3 ? undefined : toMetaKey(arguments[2]) + , metadataMap = getOrCreateMetadataMap(anObject(target), targetKey, false); + if(metadataMap === undefined || !metadataMap['delete'](metadataKey))return false; + if(metadataMap.size)return true; + var targetMetadata = store.get(target); + targetMetadata['delete'](targetKey); + return !!targetMetadata.size || store['delete'](target); +}}); +},{"./_an-object":158,"./_metadata":214}],426:[function(require,module,exports){ +var Set = require('./es6.set') + , from = require('./_array-from-iterable') + , metadata = require('./_metadata') + , anObject = require('./_an-object') + , getPrototypeOf = require('./_object-gpo') + , ordinaryOwnMetadataKeys = metadata.keys + , toMetaKey = metadata.key; + +var ordinaryMetadataKeys = function(O, P){ + var oKeys = ordinaryOwnMetadataKeys(O, P) + , parent = getPrototypeOf(O); + if(parent === null)return oKeys; + var pKeys = ordinaryMetadataKeys(parent, P); + return pKeys.length ? oKeys.length ? from(new Set(oKeys.concat(pKeys))) : pKeys : oKeys; +}; + +metadata.exp({getMetadataKeys: function getMetadataKeys(target /*, targetKey */){ + return ordinaryMetadataKeys(anObject(target), arguments.length < 2 ? undefined : toMetaKey(arguments[1])); +}}); +},{"./_an-object":158,"./_array-from-iterable":161,"./_metadata":214,"./_object-gpo":225,"./es6.set":371}],427:[function(require,module,exports){ +var metadata = require('./_metadata') + , anObject = require('./_an-object') + , getPrototypeOf = require('./_object-gpo') + , ordinaryHasOwnMetadata = metadata.has + , ordinaryGetOwnMetadata = metadata.get + , toMetaKey = metadata.key; + +var ordinaryGetMetadata = function(MetadataKey, O, P){ + var hasOwn = ordinaryHasOwnMetadata(MetadataKey, O, P); + if(hasOwn)return ordinaryGetOwnMetadata(MetadataKey, O, P); + var parent = getPrototypeOf(O); + return parent !== null ? ordinaryGetMetadata(MetadataKey, parent, P) : undefined; +}; + +metadata.exp({getMetadata: function getMetadata(metadataKey, target /*, targetKey */){ + return ordinaryGetMetadata(metadataKey, anObject(target), arguments.length < 3 ? undefined : toMetaKey(arguments[2])); +}}); +},{"./_an-object":158,"./_metadata":214,"./_object-gpo":225}],428:[function(require,module,exports){ +var metadata = require('./_metadata') + , anObject = require('./_an-object') + , ordinaryOwnMetadataKeys = metadata.keys + , toMetaKey = metadata.key; + +metadata.exp({getOwnMetadataKeys: function getOwnMetadataKeys(target /*, targetKey */){ + return ordinaryOwnMetadataKeys(anObject(target), arguments.length < 2 ? undefined : toMetaKey(arguments[1])); +}}); +},{"./_an-object":158,"./_metadata":214}],429:[function(require,module,exports){ +var metadata = require('./_metadata') + , anObject = require('./_an-object') + , ordinaryGetOwnMetadata = metadata.get + , toMetaKey = metadata.key; + +metadata.exp({getOwnMetadata: function getOwnMetadata(metadataKey, target /*, targetKey */){ + return ordinaryGetOwnMetadata(metadataKey, anObject(target) + , arguments.length < 3 ? undefined : toMetaKey(arguments[2])); +}}); +},{"./_an-object":158,"./_metadata":214}],430:[function(require,module,exports){ +var metadata = require('./_metadata') + , anObject = require('./_an-object') + , getPrototypeOf = require('./_object-gpo') + , ordinaryHasOwnMetadata = metadata.has + , toMetaKey = metadata.key; + +var ordinaryHasMetadata = function(MetadataKey, O, P){ + var hasOwn = ordinaryHasOwnMetadata(MetadataKey, O, P); + if(hasOwn)return true; + var parent = getPrototypeOf(O); + return parent !== null ? ordinaryHasMetadata(MetadataKey, parent, P) : false; +}; + +metadata.exp({hasMetadata: function hasMetadata(metadataKey, target /*, targetKey */){ + return ordinaryHasMetadata(metadataKey, anObject(target), arguments.length < 3 ? undefined : toMetaKey(arguments[2])); +}}); +},{"./_an-object":158,"./_metadata":214,"./_object-gpo":225}],431:[function(require,module,exports){ +var metadata = require('./_metadata') + , anObject = require('./_an-object') + , ordinaryHasOwnMetadata = metadata.has + , toMetaKey = metadata.key; + +metadata.exp({hasOwnMetadata: function hasOwnMetadata(metadataKey, target /*, targetKey */){ + return ordinaryHasOwnMetadata(metadataKey, anObject(target) + , arguments.length < 3 ? undefined : toMetaKey(arguments[2])); +}}); +},{"./_an-object":158,"./_metadata":214}],432:[function(require,module,exports){ +var metadata = require('./_metadata') + , anObject = require('./_an-object') + , aFunction = require('./_a-function') + , toMetaKey = metadata.key + , ordinaryDefineOwnMetadata = metadata.set; + +metadata.exp({metadata: function metadata(metadataKey, metadataValue){ + return function decorator(target, targetKey){ + ordinaryDefineOwnMetadata( + metadataKey, metadataValue, + (targetKey !== undefined ? anObject : aFunction)(target), + toMetaKey(targetKey) + ); + }; +}}); +},{"./_a-function":154,"./_an-object":158,"./_metadata":214}],433:[function(require,module,exports){ +// https://github.com/DavidBruant/Map-Set.prototype.toJSON +var $export = require('./_export'); -function u8Concat (parts) { - var len = 0 - for (var i = 0; i < parts.length; i++) { - if (typeof parts[i] === 'string') { - parts[i] = new Buffer(parts[i]) - } - len += parts[i].length +$export($export.P + $export.R, 'Set', {toJSON: require('./_collection-to-json')('Set')}); +},{"./_collection-to-json":171,"./_export":183}],434:[function(require,module,exports){ +'use strict'; +// https://github.com/mathiasbynens/String.prototype.at +var $export = require('./_export') + , $at = require('./_string-at')(true); + +$export($export.P, 'String', { + at: function at(pos){ + return $at(this, pos); } - var u8 = new U8(len) - for (var i = 0, offset = 0; i < parts.length; i++) { - var part = parts[i] - for (var j = 0; j < part.length; j++) { - u8[offset++] = part[j] - } +}); +},{"./_export":183,"./_string-at":248}],435:[function(require,module,exports){ +'use strict'; +// https://tc39.github.io/String.prototype.matchAll/ +var $export = require('./_export') + , defined = require('./_defined') + , toLength = require('./_to-length') + , isRegExp = require('./_is-regexp') + , getFlags = require('./_flags') + , RegExpProto = RegExp.prototype; + +var $RegExpStringIterator = function(regexp, string){ + this._r = regexp; + this._s = string; +}; + +require('./_iter-create')($RegExpStringIterator, 'RegExp String', function next(){ + var match = this._r.exec(this._s); + return {value: match, done: match === null}; +}); + +$export($export.P, 'String', { + matchAll: function matchAll(regexp){ + defined(this); + if(!isRegExp(regexp))throw TypeError(regexp + ' is not a regexp!'); + var S = String(this) + , flags = 'flags' in RegExpProto ? String(regexp.flags) : getFlags.call(regexp) + , rx = new RegExp(regexp.source, ~flags.indexOf('g') ? flags : 'g' + flags); + rx.lastIndex = toLength(regexp.lastIndex); + return new $RegExpStringIterator(rx, S); } - return u8 -} +}); +},{"./_defined":178,"./_export":183,"./_flags":187,"./_is-regexp":201,"./_iter-create":203,"./_to-length":259}],436:[function(require,module,exports){ +'use strict'; +// https://github.com/tc39/proposal-string-pad-start-end +var $export = require('./_export') + , $pad = require('./_string-pad'); -}).call(this,require("buffer").Buffer) -},{"buffer":116,"inherits":263,"readable-stream":378,"typedarray":399}],149:[function(require,module,exports){ -module.exports={ - "O_RDONLY": 0, - "O_WRONLY": 1, - "O_RDWR": 2, - "S_IFMT": 61440, - "S_IFREG": 32768, - "S_IFDIR": 16384, - "S_IFCHR": 8192, - "S_IFBLK": 24576, - "S_IFIFO": 4096, - "S_IFLNK": 40960, - "S_IFSOCK": 49152, - "O_CREAT": 512, - "O_EXCL": 2048, - "O_NOCTTY": 131072, - "O_TRUNC": 1024, - "O_APPEND": 8, - "O_DIRECTORY": 1048576, - "O_NOFOLLOW": 256, - "O_SYNC": 128, - "O_SYMLINK": 2097152, - "O_NONBLOCK": 4, - "S_IRWXU": 448, - "S_IRUSR": 256, - "S_IWUSR": 128, - "S_IXUSR": 64, - "S_IRWXG": 56, - "S_IRGRP": 32, - "S_IWGRP": 16, - "S_IXGRP": 8, - "S_IRWXO": 7, - "S_IROTH": 4, - "S_IWOTH": 2, - "S_IXOTH": 1, - "E2BIG": 7, - "EACCES": 13, - "EADDRINUSE": 48, - "EADDRNOTAVAIL": 49, - "EAFNOSUPPORT": 47, - "EAGAIN": 35, - "EALREADY": 37, - "EBADF": 9, - "EBADMSG": 94, - "EBUSY": 16, - "ECANCELED": 89, - "ECHILD": 10, - "ECONNABORTED": 53, - "ECONNREFUSED": 61, - "ECONNRESET": 54, - "EDEADLK": 11, - "EDESTADDRREQ": 39, - "EDOM": 33, - "EDQUOT": 69, - "EEXIST": 17, - "EFAULT": 14, - "EFBIG": 27, - "EHOSTUNREACH": 65, - "EIDRM": 90, - "EILSEQ": 92, - "EINPROGRESS": 36, - "EINTR": 4, - "EINVAL": 22, - "EIO": 5, - "EISCONN": 56, - "EISDIR": 21, - "ELOOP": 62, - "EMFILE": 24, - "EMLINK": 31, - "EMSGSIZE": 40, - "EMULTIHOP": 95, - "ENAMETOOLONG": 63, - "ENETDOWN": 50, - "ENETRESET": 52, - "ENETUNREACH": 51, - "ENFILE": 23, - "ENOBUFS": 55, - "ENODATA": 96, - "ENODEV": 19, - "ENOENT": 2, - "ENOEXEC": 8, - "ENOLCK": 77, - "ENOLINK": 97, - "ENOMEM": 12, - "ENOMSG": 91, - "ENOPROTOOPT": 42, - "ENOSPC": 28, - "ENOSR": 98, - "ENOSTR": 99, - "ENOSYS": 78, - "ENOTCONN": 57, - "ENOTDIR": 20, - "ENOTEMPTY": 66, - "ENOTSOCK": 38, - "ENOTSUP": 45, - "ENOTTY": 25, - "ENXIO": 6, - "EOPNOTSUPP": 102, - "EOVERFLOW": 84, - "EPERM": 1, - "EPIPE": 32, - "EPROTO": 100, - "EPROTONOSUPPORT": 43, - "EPROTOTYPE": 41, - "ERANGE": 34, - "EROFS": 30, - "ESPIPE": 29, - "ESRCH": 3, - "ESTALE": 70, - "ETIME": 101, - "ETIMEDOUT": 60, - "ETXTBSY": 26, - "EWOULDBLOCK": 35, - "EXDEV": 18, - "SIGHUP": 1, - "SIGINT": 2, - "SIGQUIT": 3, - "SIGILL": 4, - "SIGTRAP": 5, - "SIGABRT": 6, - "SIGIOT": 6, - "SIGBUS": 10, - "SIGFPE": 8, - "SIGKILL": 9, - "SIGUSR1": 30, - "SIGSEGV": 11, - "SIGUSR2": 31, - "SIGPIPE": 13, - "SIGALRM": 14, - "SIGTERM": 15, - "SIGCHLD": 20, - "SIGCONT": 19, - "SIGSTOP": 17, - "SIGTSTP": 18, - "SIGTTIN": 21, - "SIGTTOU": 22, - "SIGURG": 16, - "SIGXCPU": 24, - "SIGXFSZ": 25, - "SIGVTALRM": 26, - "SIGPROF": 27, - "SIGWINCH": 28, - "SIGIO": 23, - "SIGSYS": 12, - "SSL_OP_ALL": 2147486719, - "SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION": 262144, - "SSL_OP_CIPHER_SERVER_PREFERENCE": 4194304, - "SSL_OP_CISCO_ANYCONNECT": 32768, - "SSL_OP_COOKIE_EXCHANGE": 8192, - "SSL_OP_CRYPTOPRO_TLSEXT_BUG": 2147483648, - "SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS": 2048, - "SSL_OP_EPHEMERAL_RSA": 0, - "SSL_OP_LEGACY_SERVER_CONNECT": 4, - "SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER": 32, - "SSL_OP_MICROSOFT_SESS_ID_BUG": 1, - "SSL_OP_MSIE_SSLV2_RSA_PADDING": 0, - "SSL_OP_NETSCAPE_CA_DN_BUG": 536870912, - "SSL_OP_NETSCAPE_CHALLENGE_BUG": 2, - "SSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG": 1073741824, - "SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG": 8, - "SSL_OP_NO_COMPRESSION": 131072, - "SSL_OP_NO_QUERY_MTU": 4096, - "SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION": 65536, - "SSL_OP_NO_SSLv2": 16777216, - "SSL_OP_NO_SSLv3": 33554432, - "SSL_OP_NO_TICKET": 16384, - "SSL_OP_NO_TLSv1": 67108864, - "SSL_OP_NO_TLSv1_1": 268435456, - "SSL_OP_NO_TLSv1_2": 134217728, - "SSL_OP_PKCS1_CHECK_1": 0, - "SSL_OP_PKCS1_CHECK_2": 0, - "SSL_OP_SINGLE_DH_USE": 1048576, - "SSL_OP_SINGLE_ECDH_USE": 524288, - "SSL_OP_SSLEAY_080_CLIENT_DH_BUG": 128, - "SSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG": 0, - "SSL_OP_TLS_BLOCK_PADDING_BUG": 512, - "SSL_OP_TLS_D5_BUG": 256, - "SSL_OP_TLS_ROLLBACK_BUG": 8388608, - "ENGINE_METHOD_DSA": 2, - "ENGINE_METHOD_DH": 4, - "ENGINE_METHOD_RAND": 8, - "ENGINE_METHOD_ECDH": 16, - "ENGINE_METHOD_ECDSA": 32, - "ENGINE_METHOD_CIPHERS": 64, - "ENGINE_METHOD_DIGESTS": 128, - "ENGINE_METHOD_STORE": 256, - "ENGINE_METHOD_PKEY_METHS": 512, - "ENGINE_METHOD_PKEY_ASN1_METHS": 1024, - "ENGINE_METHOD_ALL": 65535, - "ENGINE_METHOD_NONE": 0, - "DH_CHECK_P_NOT_SAFE_PRIME": 2, - "DH_CHECK_P_NOT_PRIME": 1, - "DH_UNABLE_TO_CHECK_GENERATOR": 4, - "DH_NOT_SUITABLE_GENERATOR": 8, - "NPN_ENABLED": 1, - "RSA_PKCS1_PADDING": 1, - "RSA_SSLV23_PADDING": 2, - "RSA_NO_PADDING": 3, - "RSA_PKCS1_OAEP_PADDING": 4, - "RSA_X931_PADDING": 5, - "RSA_PKCS1_PSS_PADDING": 6, - "POINT_CONVERSION_COMPRESSED": 2, - "POINT_CONVERSION_UNCOMPRESSED": 4, - "POINT_CONVERSION_HYBRID": 6, - "F_OK": 0, - "R_OK": 4, - "W_OK": 2, - "X_OK": 1, - "UV_UDP_REUSEADDR": 4 -} +$export($export.P, 'String', { + padEnd: function padEnd(maxLength /*, fillString = ' ' */){ + return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, false); + } +}); +},{"./_export":183,"./_string-pad":251}],437:[function(require,module,exports){ +'use strict'; +// https://github.com/tc39/proposal-string-pad-start-end +var $export = require('./_export') + , $pad = require('./_string-pad'); -},{}],150:[function(require,module,exports){ +$export($export.P, 'String', { + padStart: function padStart(maxLength /*, fillString = ' ' */){ + return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, true); + } +}); +},{"./_export":183,"./_string-pad":251}],438:[function(require,module,exports){ +'use strict'; +// https://github.com/sebmarkbage/ecmascript-string-left-right-trim +require('./_string-trim')('trimLeft', function($trim){ + return function trimLeft(){ + return $trim(this, 1); + }; +}, 'trimStart'); +},{"./_string-trim":253}],439:[function(require,module,exports){ +'use strict'; +// https://github.com/sebmarkbage/ecmascript-string-left-right-trim +require('./_string-trim')('trimRight', function($trim){ + return function trimRight(){ + return $trim(this, 2); + }; +}, 'trimEnd'); +},{"./_string-trim":253}],440:[function(require,module,exports){ +require('./_wks-define')('asyncIterator'); +},{"./_wks-define":266}],441:[function(require,module,exports){ +require('./_wks-define')('observable'); +},{"./_wks-define":266}],442:[function(require,module,exports){ +// https://github.com/ljharb/proposal-global +var $export = require('./_export'); + +$export($export.S, 'System', {global: require('./_global')}); +},{"./_export":183,"./_global":189}],443:[function(require,module,exports){ +var $iterators = require('./es6.array.iterator') + , redefine = require('./_redefine') + , global = require('./_global') + , hide = require('./_hide') + , Iterators = require('./_iterators') + , wks = require('./_wks') + , ITERATOR = wks('iterator') + , TO_STRING_TAG = wks('toStringTag') + , ArrayValues = Iterators.Array; + +for(var collections = ['NodeList', 'DOMTokenList', 'MediaList', 'StyleSheetList', 'CSSRuleList'], i = 0; i < 5; i++){ + var NAME = collections[i] + , Collection = global[NAME] + , proto = Collection && Collection.prototype + , key; + if(proto){ + if(!proto[ITERATOR])hide(proto, ITERATOR, ArrayValues); + if(!proto[TO_STRING_TAG])hide(proto, TO_STRING_TAG, NAME); + Iterators[NAME] = ArrayValues; + for(key in $iterators)if(!proto[key])redefine(proto, key, $iterators[key], true); + } +} +},{"./_global":189,"./_hide":191,"./_iterators":207,"./_redefine":238,"./_wks":268,"./es6.array.iterator":281}],444:[function(require,module,exports){ +var $export = require('./_export') + , $task = require('./_task'); +$export($export.G + $export.B, { + setImmediate: $task.set, + clearImmediate: $task.clear +}); +},{"./_export":183,"./_task":255}],445:[function(require,module,exports){ +// ie9- setTimeout & setInterval additional parameters fix +var global = require('./_global') + , $export = require('./_export') + , invoke = require('./_invoke') + , partial = require('./_partial') + , navigator = global.navigator + , MSIE = !!navigator && /MSIE .\./.test(navigator.userAgent); // <- dirty ie9- check +var wrap = function(set){ + return MSIE ? function(fn, time /*, ...args */){ + return set(invoke( + partial, + [].slice.call(arguments, 2), + typeof fn == 'function' ? fn : Function(fn) + ), time); + } : set; +}; +$export($export.G + $export.B + $export.F * MSIE, { + setTimeout: wrap(global.setTimeout), + setInterval: wrap(global.setInterval) +}); +},{"./_export":183,"./_global":189,"./_invoke":195,"./_partial":234}],446:[function(require,module,exports){ +require('./modules/es6.symbol'); +require('./modules/es6.object.create'); +require('./modules/es6.object.define-property'); +require('./modules/es6.object.define-properties'); +require('./modules/es6.object.get-own-property-descriptor'); +require('./modules/es6.object.get-prototype-of'); +require('./modules/es6.object.keys'); +require('./modules/es6.object.get-own-property-names'); +require('./modules/es6.object.freeze'); +require('./modules/es6.object.seal'); +require('./modules/es6.object.prevent-extensions'); +require('./modules/es6.object.is-frozen'); +require('./modules/es6.object.is-sealed'); +require('./modules/es6.object.is-extensible'); +require('./modules/es6.object.assign'); +require('./modules/es6.object.is'); +require('./modules/es6.object.set-prototype-of'); +require('./modules/es6.object.to-string'); +require('./modules/es6.function.bind'); +require('./modules/es6.function.name'); +require('./modules/es6.function.has-instance'); +require('./modules/es6.parse-int'); +require('./modules/es6.parse-float'); +require('./modules/es6.number.constructor'); +require('./modules/es6.number.to-fixed'); +require('./modules/es6.number.to-precision'); +require('./modules/es6.number.epsilon'); +require('./modules/es6.number.is-finite'); +require('./modules/es6.number.is-integer'); +require('./modules/es6.number.is-nan'); +require('./modules/es6.number.is-safe-integer'); +require('./modules/es6.number.max-safe-integer'); +require('./modules/es6.number.min-safe-integer'); +require('./modules/es6.number.parse-float'); +require('./modules/es6.number.parse-int'); +require('./modules/es6.math.acosh'); +require('./modules/es6.math.asinh'); +require('./modules/es6.math.atanh'); +require('./modules/es6.math.cbrt'); +require('./modules/es6.math.clz32'); +require('./modules/es6.math.cosh'); +require('./modules/es6.math.expm1'); +require('./modules/es6.math.fround'); +require('./modules/es6.math.hypot'); +require('./modules/es6.math.imul'); +require('./modules/es6.math.log10'); +require('./modules/es6.math.log1p'); +require('./modules/es6.math.log2'); +require('./modules/es6.math.sign'); +require('./modules/es6.math.sinh'); +require('./modules/es6.math.tanh'); +require('./modules/es6.math.trunc'); +require('./modules/es6.string.from-code-point'); +require('./modules/es6.string.raw'); +require('./modules/es6.string.trim'); +require('./modules/es6.string.iterator'); +require('./modules/es6.string.code-point-at'); +require('./modules/es6.string.ends-with'); +require('./modules/es6.string.includes'); +require('./modules/es6.string.repeat'); +require('./modules/es6.string.starts-with'); +require('./modules/es6.string.anchor'); +require('./modules/es6.string.big'); +require('./modules/es6.string.blink'); +require('./modules/es6.string.bold'); +require('./modules/es6.string.fixed'); +require('./modules/es6.string.fontcolor'); +require('./modules/es6.string.fontsize'); +require('./modules/es6.string.italics'); +require('./modules/es6.string.link'); +require('./modules/es6.string.small'); +require('./modules/es6.string.strike'); +require('./modules/es6.string.sub'); +require('./modules/es6.string.sup'); +require('./modules/es6.date.now'); +require('./modules/es6.date.to-json'); +require('./modules/es6.date.to-iso-string'); +require('./modules/es6.date.to-string'); +require('./modules/es6.date.to-primitive'); +require('./modules/es6.array.is-array'); +require('./modules/es6.array.from'); +require('./modules/es6.array.of'); +require('./modules/es6.array.join'); +require('./modules/es6.array.slice'); +require('./modules/es6.array.sort'); +require('./modules/es6.array.for-each'); +require('./modules/es6.array.map'); +require('./modules/es6.array.filter'); +require('./modules/es6.array.some'); +require('./modules/es6.array.every'); +require('./modules/es6.array.reduce'); +require('./modules/es6.array.reduce-right'); +require('./modules/es6.array.index-of'); +require('./modules/es6.array.last-index-of'); +require('./modules/es6.array.copy-within'); +require('./modules/es6.array.fill'); +require('./modules/es6.array.find'); +require('./modules/es6.array.find-index'); +require('./modules/es6.array.species'); +require('./modules/es6.array.iterator'); +require('./modules/es6.regexp.constructor'); +require('./modules/es6.regexp.to-string'); +require('./modules/es6.regexp.flags'); +require('./modules/es6.regexp.match'); +require('./modules/es6.regexp.replace'); +require('./modules/es6.regexp.search'); +require('./modules/es6.regexp.split'); +require('./modules/es6.promise'); +require('./modules/es6.map'); +require('./modules/es6.set'); +require('./modules/es6.weak-map'); +require('./modules/es6.weak-set'); +require('./modules/es6.typed.array-buffer'); +require('./modules/es6.typed.data-view'); +require('./modules/es6.typed.int8-array'); +require('./modules/es6.typed.uint8-array'); +require('./modules/es6.typed.uint8-clamped-array'); +require('./modules/es6.typed.int16-array'); +require('./modules/es6.typed.uint16-array'); +require('./modules/es6.typed.int32-array'); +require('./modules/es6.typed.uint32-array'); +require('./modules/es6.typed.float32-array'); +require('./modules/es6.typed.float64-array'); +require('./modules/es6.reflect.apply'); +require('./modules/es6.reflect.construct'); +require('./modules/es6.reflect.define-property'); +require('./modules/es6.reflect.delete-property'); +require('./modules/es6.reflect.enumerate'); +require('./modules/es6.reflect.get'); +require('./modules/es6.reflect.get-own-property-descriptor'); +require('./modules/es6.reflect.get-prototype-of'); +require('./modules/es6.reflect.has'); +require('./modules/es6.reflect.is-extensible'); +require('./modules/es6.reflect.own-keys'); +require('./modules/es6.reflect.prevent-extensions'); +require('./modules/es6.reflect.set'); +require('./modules/es6.reflect.set-prototype-of'); +require('./modules/es7.array.includes'); +require('./modules/es7.string.at'); +require('./modules/es7.string.pad-start'); +require('./modules/es7.string.pad-end'); +require('./modules/es7.string.trim-left'); +require('./modules/es7.string.trim-right'); +require('./modules/es7.string.match-all'); +require('./modules/es7.symbol.async-iterator'); +require('./modules/es7.symbol.observable'); +require('./modules/es7.object.get-own-property-descriptors'); +require('./modules/es7.object.values'); +require('./modules/es7.object.entries'); +require('./modules/es7.object.define-getter'); +require('./modules/es7.object.define-setter'); +require('./modules/es7.object.lookup-getter'); +require('./modules/es7.object.lookup-setter'); +require('./modules/es7.map.to-json'); +require('./modules/es7.set.to-json'); +require('./modules/es7.system.global'); +require('./modules/es7.error.is-error'); +require('./modules/es7.math.iaddh'); +require('./modules/es7.math.isubh'); +require('./modules/es7.math.imulh'); +require('./modules/es7.math.umulh'); +require('./modules/es7.reflect.define-metadata'); +require('./modules/es7.reflect.delete-metadata'); +require('./modules/es7.reflect.get-metadata'); +require('./modules/es7.reflect.get-metadata-keys'); +require('./modules/es7.reflect.get-own-metadata'); +require('./modules/es7.reflect.get-own-metadata-keys'); +require('./modules/es7.reflect.has-metadata'); +require('./modules/es7.reflect.has-own-metadata'); +require('./modules/es7.reflect.metadata'); +require('./modules/es7.asap'); +require('./modules/es7.observable'); +require('./modules/web.timers'); +require('./modules/web.immediate'); +require('./modules/web.dom.iterable'); +module.exports = require('./modules/_core'); +},{"./modules/_core":174,"./modules/es6.array.copy-within":271,"./modules/es6.array.every":272,"./modules/es6.array.fill":273,"./modules/es6.array.filter":274,"./modules/es6.array.find":276,"./modules/es6.array.find-index":275,"./modules/es6.array.for-each":277,"./modules/es6.array.from":278,"./modules/es6.array.index-of":279,"./modules/es6.array.is-array":280,"./modules/es6.array.iterator":281,"./modules/es6.array.join":282,"./modules/es6.array.last-index-of":283,"./modules/es6.array.map":284,"./modules/es6.array.of":285,"./modules/es6.array.reduce":287,"./modules/es6.array.reduce-right":286,"./modules/es6.array.slice":288,"./modules/es6.array.some":289,"./modules/es6.array.sort":290,"./modules/es6.array.species":291,"./modules/es6.date.now":292,"./modules/es6.date.to-iso-string":293,"./modules/es6.date.to-json":294,"./modules/es6.date.to-primitive":295,"./modules/es6.date.to-string":296,"./modules/es6.function.bind":297,"./modules/es6.function.has-instance":298,"./modules/es6.function.name":299,"./modules/es6.map":300,"./modules/es6.math.acosh":301,"./modules/es6.math.asinh":302,"./modules/es6.math.atanh":303,"./modules/es6.math.cbrt":304,"./modules/es6.math.clz32":305,"./modules/es6.math.cosh":306,"./modules/es6.math.expm1":307,"./modules/es6.math.fround":308,"./modules/es6.math.hypot":309,"./modules/es6.math.imul":310,"./modules/es6.math.log10":311,"./modules/es6.math.log1p":312,"./modules/es6.math.log2":313,"./modules/es6.math.sign":314,"./modules/es6.math.sinh":315,"./modules/es6.math.tanh":316,"./modules/es6.math.trunc":317,"./modules/es6.number.constructor":318,"./modules/es6.number.epsilon":319,"./modules/es6.number.is-finite":320,"./modules/es6.number.is-integer":321,"./modules/es6.number.is-nan":322,"./modules/es6.number.is-safe-integer":323,"./modules/es6.number.max-safe-integer":324,"./modules/es6.number.min-safe-integer":325,"./modules/es6.number.parse-float":326,"./modules/es6.number.parse-int":327,"./modules/es6.number.to-fixed":328,"./modules/es6.number.to-precision":329,"./modules/es6.object.assign":330,"./modules/es6.object.create":331,"./modules/es6.object.define-properties":332,"./modules/es6.object.define-property":333,"./modules/es6.object.freeze":334,"./modules/es6.object.get-own-property-descriptor":335,"./modules/es6.object.get-own-property-names":336,"./modules/es6.object.get-prototype-of":337,"./modules/es6.object.is":341,"./modules/es6.object.is-extensible":338,"./modules/es6.object.is-frozen":339,"./modules/es6.object.is-sealed":340,"./modules/es6.object.keys":342,"./modules/es6.object.prevent-extensions":343,"./modules/es6.object.seal":344,"./modules/es6.object.set-prototype-of":345,"./modules/es6.object.to-string":346,"./modules/es6.parse-float":347,"./modules/es6.parse-int":348,"./modules/es6.promise":349,"./modules/es6.reflect.apply":350,"./modules/es6.reflect.construct":351,"./modules/es6.reflect.define-property":352,"./modules/es6.reflect.delete-property":353,"./modules/es6.reflect.enumerate":354,"./modules/es6.reflect.get":357,"./modules/es6.reflect.get-own-property-descriptor":355,"./modules/es6.reflect.get-prototype-of":356,"./modules/es6.reflect.has":358,"./modules/es6.reflect.is-extensible":359,"./modules/es6.reflect.own-keys":360,"./modules/es6.reflect.prevent-extensions":361,"./modules/es6.reflect.set":363,"./modules/es6.reflect.set-prototype-of":362,"./modules/es6.regexp.constructor":364,"./modules/es6.regexp.flags":365,"./modules/es6.regexp.match":366,"./modules/es6.regexp.replace":367,"./modules/es6.regexp.search":368,"./modules/es6.regexp.split":369,"./modules/es6.regexp.to-string":370,"./modules/es6.set":371,"./modules/es6.string.anchor":372,"./modules/es6.string.big":373,"./modules/es6.string.blink":374,"./modules/es6.string.bold":375,"./modules/es6.string.code-point-at":376,"./modules/es6.string.ends-with":377,"./modules/es6.string.fixed":378,"./modules/es6.string.fontcolor":379,"./modules/es6.string.fontsize":380,"./modules/es6.string.from-code-point":381,"./modules/es6.string.includes":382,"./modules/es6.string.italics":383,"./modules/es6.string.iterator":384,"./modules/es6.string.link":385,"./modules/es6.string.raw":386,"./modules/es6.string.repeat":387,"./modules/es6.string.small":388,"./modules/es6.string.starts-with":389,"./modules/es6.string.strike":390,"./modules/es6.string.sub":391,"./modules/es6.string.sup":392,"./modules/es6.string.trim":393,"./modules/es6.symbol":394,"./modules/es6.typed.array-buffer":395,"./modules/es6.typed.data-view":396,"./modules/es6.typed.float32-array":397,"./modules/es6.typed.float64-array":398,"./modules/es6.typed.int16-array":399,"./modules/es6.typed.int32-array":400,"./modules/es6.typed.int8-array":401,"./modules/es6.typed.uint16-array":402,"./modules/es6.typed.uint32-array":403,"./modules/es6.typed.uint8-array":404,"./modules/es6.typed.uint8-clamped-array":405,"./modules/es6.weak-map":406,"./modules/es6.weak-set":407,"./modules/es7.array.includes":408,"./modules/es7.asap":409,"./modules/es7.error.is-error":410,"./modules/es7.map.to-json":411,"./modules/es7.math.iaddh":412,"./modules/es7.math.imulh":413,"./modules/es7.math.isubh":414,"./modules/es7.math.umulh":415,"./modules/es7.object.define-getter":416,"./modules/es7.object.define-setter":417,"./modules/es7.object.entries":418,"./modules/es7.object.get-own-property-descriptors":419,"./modules/es7.object.lookup-getter":420,"./modules/es7.object.lookup-setter":421,"./modules/es7.object.values":422,"./modules/es7.observable":423,"./modules/es7.reflect.define-metadata":424,"./modules/es7.reflect.delete-metadata":425,"./modules/es7.reflect.get-metadata":427,"./modules/es7.reflect.get-metadata-keys":426,"./modules/es7.reflect.get-own-metadata":429,"./modules/es7.reflect.get-own-metadata-keys":428,"./modules/es7.reflect.has-metadata":430,"./modules/es7.reflect.has-own-metadata":431,"./modules/es7.reflect.metadata":432,"./modules/es7.set.to-json":433,"./modules/es7.string.at":434,"./modules/es7.string.match-all":435,"./modules/es7.string.pad-end":436,"./modules/es7.string.pad-start":437,"./modules/es7.string.trim-left":438,"./modules/es7.string.trim-right":439,"./modules/es7.symbol.async-iterator":440,"./modules/es7.symbol.observable":441,"./modules/es7.system.global":442,"./modules/web.dom.iterable":443,"./modules/web.immediate":444,"./modules/web.timers":445}],447:[function(require,module,exports){ (function (Buffer){ // Copyright Joyent, Inc. and other Node contributors. // @@ -36461,7 +42995,8 @@ function objectToString(o) { } }).call(this,{"isBuffer":require("../../is-buffer/index.js")}) -},{"../../is-buffer/index.js":264}],151:[function(require,module,exports){ + +},{"../../is-buffer/index.js":560}],448:[function(require,module,exports){ (function (Buffer){ var elliptic = require('elliptic'); var BN = require('bn.js'); @@ -36587,7 +43122,8 @@ function formatReturnValue(bn, enc, len) { } }).call(this,require("buffer").Buffer) -},{"bn.js":84,"buffer":116,"elliptic":180}],152:[function(require,module,exports){ + +},{"bn.js":85,"buffer":119,"elliptic":477}],449:[function(require,module,exports){ (function (Buffer){ 'use strict'; var inherits = require('inherits') @@ -36643,7 +43179,8 @@ module.exports = function createHash (alg) { } }).call(this,require("buffer").Buffer) -},{"./md5":154,"buffer":116,"cipher-base":147,"inherits":263,"ripemd160":382,"sha.js":384}],153:[function(require,module,exports){ + +},{"./md5":451,"buffer":119,"cipher-base":150,"inherits":559,"ripemd160":677,"sha.js":679}],450:[function(require,module,exports){ (function (Buffer){ 'use strict'; var intSize = 4; @@ -36680,7 +43217,8 @@ function hash(buf, fn, hashSize, bigEndian) { } exports.hash = hash; }).call(this,require("buffer").Buffer) -},{"buffer":116}],154:[function(require,module,exports){ + +},{"buffer":119}],451:[function(require,module,exports){ 'use strict'; /* * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message @@ -36837,7 +43375,7 @@ function bit_rol(num, cnt) module.exports = function md5(buf) { return helpers.hash(buf, core_md5, 16); }; -},{"./helpers":153}],155:[function(require,module,exports){ +},{"./helpers":450}],452:[function(require,module,exports){ (function (Buffer){ 'use strict'; var createHash = require('create-hash/browser'); @@ -36909,7 +43447,8 @@ module.exports = function createHmac(alg, key) { } }).call(this,require("buffer").Buffer) -},{"buffer":116,"create-hash/browser":152,"inherits":263,"stream":393}],156:[function(require,module,exports){ + +},{"buffer":119,"create-hash/browser":449,"inherits":559,"stream":688}],453:[function(require,module,exports){ var cp = require('child_process'); var parse = require('./lib/parse'); var enoent = require('./lib/enoent'); @@ -36934,7 +43473,7 @@ function spawn(command, args, options) { module.exports = spawn; module.exports.spawn = spawn; -},{"./lib/enoent":157,"./lib/parse":158,"child_process":113}],157:[function(require,module,exports){ +},{"./lib/enoent":454,"./lib/parse":455,"child_process":115}],454:[function(require,module,exports){ (function (process){ 'use strict'; @@ -36989,7 +43528,8 @@ module.exports.verifyENOENT = verifyENOENT; module.exports.notFoundError = notFoundError; }).call(this,require('_process')) -},{"_process":357}],158:[function(require,module,exports){ + +},{"_process":650}],455:[function(require,module,exports){ (function (process,Buffer){ var fs = require('fs'); var LRU = require('lru-cache'); @@ -37119,7 +43659,8 @@ function parseCall(command, args, options) { module.exports = parseCall; }).call(this,require('_process'),require("buffer").Buffer) -},{"./resolveCommand":159,"./util/mixIn":160,"_process":357,"buffer":116,"fs":113,"lru-cache":276}],159:[function(require,module,exports){ + +},{"./resolveCommand":456,"./util/mixIn":457,"_process":650,"buffer":119,"fs":115,"lru-cache":569}],456:[function(require,module,exports){ (function (process){ 'use strict'; @@ -37154,7 +43695,8 @@ function resolveCommand(command, noExtension) { module.exports = resolveCommand; }).call(this,require('_process')) -},{"_process":357,"lru-cache":276,"path":332,"which":406}],160:[function(require,module,exports){ + +},{"_process":650,"lru-cache":569,"path":625,"which":701}],457:[function(require,module,exports){ 'use strict'; function mixIn(target, source) { @@ -37171,7 +43713,7 @@ function mixIn(target, source) { module.exports = mixIn; -},{}],161:[function(require,module,exports){ +},{}],458:[function(require,module,exports){ 'use strict' exports.randomBytes = exports.rng = exports.pseudoRandomBytes = exports.prng = require('randombytes') @@ -37250,7 +43792,7 @@ var publicEncrypt = require('public-encrypt') } }) -},{"browserify-cipher":102,"browserify-sign":107,"browserify-sign/algos":106,"create-ecdh":151,"create-hash":152,"create-hmac":155,"diffie-hellman":176,"pbkdf2":333,"public-encrypt":359,"randombytes":369}],162:[function(require,module,exports){ +},{"browserify-cipher":103,"browserify-sign":110,"browserify-sign/algos":107,"create-ecdh":448,"create-hash":449,"create-hmac":452,"diffie-hellman":473,"pbkdf2":626,"public-encrypt":652,"randombytes":662}],459:[function(require,module,exports){ // https://d3js.org/d3-array/ Version 1.1.1. Copyright 2017 Mike Bostock. (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : @@ -37730,7 +44272,7 @@ Object.defineProperty(exports, '__esModule', { value: true }); }))); -},{}],163:[function(require,module,exports){ +},{}],460:[function(require,module,exports){ // https://d3js.org/d3-geo/ Version 1.6.3. Copyright 2017 Mike Bostock. (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('d3-array')) : @@ -40686,7 +47228,7 @@ Object.defineProperty(exports, '__esModule', { value: true }); }))); -},{"d3-array":162}],164:[function(require,module,exports){ +},{"d3-array":459}],461:[function(require,module,exports){ /** * This is the web browser implementation of `debug()`. @@ -40856,7 +47398,7 @@ function localstorage(){ } catch (e) {} } -},{"./debug":165}],165:[function(require,module,exports){ +},{"./debug":462}],462:[function(require,module,exports){ /** * This is the common logic for both the Node.js and web browser @@ -41055,10 +47597,10 @@ function coerce(val) { return val; } -},{"ms":281}],166:[function(require,module,exports){ +},{"ms":574}],463:[function(require,module,exports){ module.exports = require('./lib/eql'); -},{"./lib/eql":167}],167:[function(require,module,exports){ +},{"./lib/eql":464}],464:[function(require,module,exports){ /*! * deep-eql * Copyright(c) 2013 Jake Luer @@ -41317,10 +47859,10 @@ function objectEqual(a, b, m) { return true; } -},{"buffer":116,"type-detect":168}],168:[function(require,module,exports){ +},{"buffer":119,"type-detect":465}],465:[function(require,module,exports){ module.exports = require('./lib/type'); -},{"./lib/type":169}],169:[function(require,module,exports){ +},{"./lib/type":466}],466:[function(require,module,exports){ /*! * type-detect * Copyright(c) 2013 jake luer @@ -41464,7 +48006,7 @@ Library.prototype.test = function (obj, type) { } }; -},{}],170:[function(require,module,exports){ +},{}],467:[function(require,module,exports){ 'use strict'; exports.utils = require('./des/utils'); @@ -41473,7 +48015,7 @@ exports.DES = require('./des/des'); exports.CBC = require('./des/cbc'); exports.EDE = require('./des/ede'); -},{"./des/cbc":171,"./des/cipher":172,"./des/des":173,"./des/ede":174,"./des/utils":175}],171:[function(require,module,exports){ +},{"./des/cbc":468,"./des/cipher":469,"./des/des":470,"./des/ede":471,"./des/utils":472}],468:[function(require,module,exports){ 'use strict'; var assert = require('minimalistic-assert'); @@ -41540,7 +48082,7 @@ proto._update = function _update(inp, inOff, out, outOff) { } }; -},{"inherits":263,"minimalistic-assert":278}],172:[function(require,module,exports){ +},{"inherits":559,"minimalistic-assert":571}],469:[function(require,module,exports){ 'use strict'; var assert = require('minimalistic-assert'); @@ -41683,7 +48225,7 @@ Cipher.prototype._finalDecrypt = function _finalDecrypt() { return this._unpad(out); }; -},{"minimalistic-assert":278}],173:[function(require,module,exports){ +},{"minimalistic-assert":571}],470:[function(require,module,exports){ 'use strict'; var assert = require('minimalistic-assert'); @@ -41828,7 +48370,7 @@ DES.prototype._decrypt = function _decrypt(state, lStart, rStart, out, off) { utils.rip(l, r, out, off); }; -},{"../des":170,"inherits":263,"minimalistic-assert":278}],174:[function(require,module,exports){ +},{"../des":467,"inherits":559,"minimalistic-assert":571}],471:[function(require,module,exports){ 'use strict'; var assert = require('minimalistic-assert'); @@ -41885,7 +48427,7 @@ EDE.prototype._update = function _update(inp, inOff, out, outOff) { EDE.prototype._pad = DES.prototype._pad; EDE.prototype._unpad = DES.prototype._unpad; -},{"../des":170,"inherits":263,"minimalistic-assert":278}],175:[function(require,module,exports){ +},{"../des":467,"inherits":559,"minimalistic-assert":571}],472:[function(require,module,exports){ 'use strict'; exports.readUInt32BE = function readUInt32BE(bytes, off) { @@ -42143,7 +48685,7 @@ exports.padSplit = function padSplit(num, size, group) { return out.join(' '); }; -},{}],176:[function(require,module,exports){ +},{}],473:[function(require,module,exports){ (function (Buffer){ var generatePrime = require('./lib/generatePrime') var primes = require('./lib/primes.json') @@ -42189,7 +48731,8 @@ exports.DiffieHellmanGroup = exports.createDiffieHellmanGroup = exports.getDiffi exports.createDiffieHellman = exports.DiffieHellman = createDiffieHellman }).call(this,require("buffer").Buffer) -},{"./lib/dh":177,"./lib/generatePrime":178,"./lib/primes.json":179,"buffer":116}],177:[function(require,module,exports){ + +},{"./lib/dh":474,"./lib/generatePrime":475,"./lib/primes.json":476,"buffer":119}],474:[function(require,module,exports){ (function (Buffer){ var BN = require('bn.js'); var MillerRabin = require('miller-rabin'); @@ -42357,7 +48900,8 @@ function formatReturnValue(bn, enc) { } }).call(this,require("buffer").Buffer) -},{"./generatePrime":178,"bn.js":84,"buffer":116,"miller-rabin":277,"randombytes":369}],178:[function(require,module,exports){ + +},{"./generatePrime":475,"bn.js":85,"buffer":119,"miller-rabin":570,"randombytes":662}],475:[function(require,module,exports){ var randomBytes = require('randombytes'); module.exports = findPrime; findPrime.simpleSieve = simpleSieve; @@ -42464,7 +49008,7 @@ function findPrime(bits, gen) { } -},{"bn.js":84,"miller-rabin":277,"randombytes":369}],179:[function(require,module,exports){ +},{"bn.js":85,"miller-rabin":570,"randombytes":662}],476:[function(require,module,exports){ module.exports={ "modp1": { "gen": "02", @@ -42499,7 +49043,7 @@ module.exports={ "prime": "ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dbe115974a3926f12fee5e438777cb6a932df8cd8bec4d073b931ba3bc832b68d9dd300741fa7bf8afc47ed2576f6936ba424663aab639c5ae4f5683423b4742bf1c978238f16cbe39d652de3fdb8befc848ad922222e04a4037c0713eb57a81a23f0c73473fc646cea306b4bcbc8862f8385ddfa9d4b7fa2c087e879683303ed5bdd3a062b3cf5b3a278a66d2a13f83f44f82ddf310ee074ab6a364597e899a0255dc164f31cc50846851df9ab48195ded7ea1b1d510bd7ee74d73faf36bc31ecfa268359046f4eb879f924009438b481c6cd7889a002ed5ee382bc9190da6fc026e479558e4475677e9aa9e3050e2765694dfc81f56e880b96e7160c980dd98edd3dfffffffffffffffff" } } -},{}],180:[function(require,module,exports){ +},{}],477:[function(require,module,exports){ 'use strict'; var elliptic = exports; @@ -42514,7 +49058,7 @@ elliptic.curves = require('./elliptic/curves'); elliptic.ec = require('./elliptic/ec'); elliptic.eddsa = require('./elliptic/eddsa'); -},{"../package.json":195,"./elliptic/curve":183,"./elliptic/curves":186,"./elliptic/ec":187,"./elliptic/eddsa":190,"./elliptic/utils":194,"brorand":85}],181:[function(require,module,exports){ +},{"../package.json":492,"./elliptic/curve":480,"./elliptic/curves":483,"./elliptic/ec":484,"./elliptic/eddsa":487,"./elliptic/utils":491,"brorand":86}],478:[function(require,module,exports){ 'use strict'; var BN = require('bn.js'); @@ -42891,7 +49435,7 @@ BasePoint.prototype.dblp = function dblp(k) { return r; }; -},{"../../elliptic":180,"bn.js":84}],182:[function(require,module,exports){ +},{"../../elliptic":477,"bn.js":85}],479:[function(require,module,exports){ 'use strict'; var curve = require('../curve'); @@ -43326,7 +49870,7 @@ Point.prototype.eqXToP = function eqXToP(x) { Point.prototype.toP = Point.prototype.normalize; Point.prototype.mixedAdd = Point.prototype.add; -},{"../../elliptic":180,"../curve":183,"bn.js":84,"inherits":263}],183:[function(require,module,exports){ +},{"../../elliptic":477,"../curve":480,"bn.js":85,"inherits":559}],480:[function(require,module,exports){ 'use strict'; var curve = exports; @@ -43336,7 +49880,7 @@ curve.short = require('./short'); curve.mont = require('./mont'); curve.edwards = require('./edwards'); -},{"./base":181,"./edwards":182,"./mont":184,"./short":185}],184:[function(require,module,exports){ +},{"./base":478,"./edwards":479,"./mont":481,"./short":482}],481:[function(require,module,exports){ 'use strict'; var curve = require('../curve'); @@ -43518,7 +50062,7 @@ Point.prototype.getX = function getX() { return this.x.fromRed(); }; -},{"../../elliptic":180,"../curve":183,"bn.js":84,"inherits":263}],185:[function(require,module,exports){ +},{"../../elliptic":477,"../curve":480,"bn.js":85,"inherits":559}],482:[function(require,module,exports){ 'use strict'; var curve = require('../curve'); @@ -44458,7 +51002,7 @@ JPoint.prototype.isInfinity = function isInfinity() { return this.z.cmpn(0) === 0; }; -},{"../../elliptic":180,"../curve":183,"bn.js":84,"inherits":263}],186:[function(require,module,exports){ +},{"../../elliptic":477,"../curve":480,"bn.js":85,"inherits":559}],483:[function(require,module,exports){ 'use strict'; var curves = exports; @@ -44665,7 +51209,7 @@ defineCurve('secp256k1', { ] }); -},{"../elliptic":180,"./precomputed/secp256k1":193,"hash.js":249}],187:[function(require,module,exports){ +},{"../elliptic":477,"./precomputed/secp256k1":490,"hash.js":545}],484:[function(require,module,exports){ 'use strict'; var BN = require('bn.js'); @@ -44907,7 +51451,7 @@ EC.prototype.getKeyRecoveryParam = function(e, signature, Q, enc) { throw new Error('Unable to find valid recovery factor'); }; -},{"../../elliptic":180,"./key":188,"./signature":189,"bn.js":84,"hmac-drbg":255}],188:[function(require,module,exports){ +},{"../../elliptic":477,"./key":485,"./signature":486,"bn.js":85,"hmac-drbg":551}],485:[function(require,module,exports){ 'use strict'; var BN = require('bn.js'); @@ -45028,7 +51572,7 @@ KeyPair.prototype.inspect = function inspect() { ' pub: ' + (this.pub && this.pub.inspect()) + ' >'; }; -},{"../../elliptic":180,"bn.js":84}],189:[function(require,module,exports){ +},{"../../elliptic":477,"bn.js":85}],486:[function(require,module,exports){ 'use strict'; var BN = require('bn.js'); @@ -45165,7 +51709,7 @@ Signature.prototype.toDER = function toDER(enc) { return utils.encode(res, enc); }; -},{"../../elliptic":180,"bn.js":84}],190:[function(require,module,exports){ +},{"../../elliptic":477,"bn.js":85}],487:[function(require,module,exports){ 'use strict'; var hash = require('hash.js'); @@ -45285,7 +51829,7 @@ EDDSA.prototype.isPoint = function isPoint(val) { return val instanceof this.pointClass; }; -},{"../../elliptic":180,"./key":191,"./signature":192,"hash.js":249}],191:[function(require,module,exports){ +},{"../../elliptic":477,"./key":488,"./signature":489,"hash.js":545}],488:[function(require,module,exports){ 'use strict'; var elliptic = require('../../elliptic'); @@ -45383,7 +51927,7 @@ KeyPair.prototype.getPublic = function getPublic(enc) { module.exports = KeyPair; -},{"../../elliptic":180}],192:[function(require,module,exports){ +},{"../../elliptic":477}],489:[function(require,module,exports){ 'use strict'; var BN = require('bn.js'); @@ -45451,7 +51995,7 @@ Signature.prototype.toHex = function toHex() { module.exports = Signature; -},{"../../elliptic":180,"bn.js":84}],193:[function(require,module,exports){ +},{"../../elliptic":477,"bn.js":85}],490:[function(require,module,exports){ module.exports = { doubles: { step: 4, @@ -46233,7 +52777,7 @@ module.exports = { } }; -},{}],194:[function(require,module,exports){ +},{}],491:[function(require,module,exports){ 'use strict'; var utils = exports; @@ -46355,7 +52899,7 @@ function intFromLE(bytes) { utils.intFromLE = intFromLE; -},{"bn.js":84,"minimalistic-assert":278,"minimalistic-crypto-utils":279}],195:[function(require,module,exports){ +},{"bn.js":85,"minimalistic-assert":571,"minimalistic-crypto-utils":572}],492:[function(require,module,exports){ module.exports={ "_args": [ [ @@ -46479,7 +53023,7 @@ module.exports={ "version": "6.4.0" } -},{}],196:[function(require,module,exports){ +},{}],493:[function(require,module,exports){ 'use strict'; function createError(msg, code, props) { @@ -46501,7 +53045,7 @@ function createError(msg, code, props) { module.exports = createError; -},{}],197:[function(require,module,exports){ +},{}],494:[function(require,module,exports){ // Copyright Joyent, Inc. and other Node contributors. // // Permission is hereby granted, free of charge, to any person obtaining a @@ -46805,7 +53349,7 @@ function isUndefined(arg) { return arg === void 0; } -},{}],198:[function(require,module,exports){ +},{}],495:[function(require,module,exports){ (function (Buffer){ var md5 = require('create-hash/md5') module.exports = EVP_BytesToKey @@ -46877,7 +53421,8 @@ function EVP_BytesToKey (password, salt, keyLen, ivLen) { } }).call(this,require("buffer").Buffer) -},{"buffer":116,"create-hash/md5":154}],199:[function(require,module,exports){ + +},{"buffer":119,"create-hash/md5":451}],496:[function(require,module,exports){ 'use strict'; module.exports = input => { const buf = new Uint8Array(input); @@ -47349,34 +53894,33 @@ module.exports = input => { return null; }; -},{}],200:[function(require,module,exports){ +},{}],497:[function(require,module,exports){ (function (Buffer){ -var fs = require('graceful-fs') +'use strict' -var BUF_LENGTH = 64 * 1024 -var _buff = new Buffer(BUF_LENGTH) +const fs = require('graceful-fs') + +const BUF_LENGTH = 64 * 1024 +const _buff = new Buffer(BUF_LENGTH) function copyFileSync (srcFile, destFile, options) { - var clobber = options.clobber - var preserveTimestamps = options.preserveTimestamps + const overwrite = options.overwrite + const errorOnExist = options.errorOnExist + const preserveTimestamps = options.preserveTimestamps if (fs.existsSync(destFile)) { - if (clobber) { + if (overwrite) { fs.unlinkSync(destFile) - } else { - var err = new Error('EEXIST: ' + destFile + ' already exists.') - err.code = 'EEXIST' - err.errno = -17 - err.path = destFile - throw err - } + } else if (errorOnExist) { + throw new Error(`${destFile} already exists`) + } else return } - var fdr = fs.openSync(srcFile, 'r') - var stat = fs.fstatSync(fdr) - var fdw = fs.openSync(destFile, 'w', stat.mode) - var bytesRead = 1 - var pos = 0 + const fdr = fs.openSync(srcFile, 'r') + const stat = fs.fstatSync(fdr) + const fdw = fs.openSync(destFile, 'w', stat.mode) + let bytesRead = 1 + let pos = 0 while (bytesRead > 0) { bytesRead = fs.readSync(fdr, _buff, 0, BUF_LENGTH, pos) @@ -47395,12 +53939,15 @@ function copyFileSync (srcFile, destFile, options) { module.exports = copyFileSync }).call(this,require("buffer").Buffer) -},{"buffer":116,"graceful-fs":246}],201:[function(require,module,exports){ + +},{"buffer":119,"graceful-fs":542}],498:[function(require,module,exports){ (function (process){ -var fs = require('graceful-fs') -var path = require('path') -var copyFileSync = require('./copy-file-sync') -var mkdir = require('../mkdirs') +'use strict' + +const fs = require('graceful-fs') +const path = require('path') +const copyFileSync = require('./copy-file-sync') +const mkdir = require('../mkdirs') function copySync (src, dest, options) { if (typeof options === 'function' || options instanceof RegExp) { @@ -47412,6 +53959,8 @@ function copySync (src, dest, options) { // default to true for now options.clobber = 'clobber' in options ? !!options.clobber : true + // overwrite falls back to clobber + options.overwrite = 'overwrite' in options ? !!options.overwrite : options.clobber options.dereference = 'dereference' in options ? !!options.dereference : false options.preserveTimestamps = 'preserveTimestamps' in options ? !!options.preserveTimestamps : false @@ -47419,35 +53968,37 @@ function copySync (src, dest, options) { // Warn about using preserveTimestamps on 32-bit node: if (options.preserveTimestamps && process.arch === 'ia32') { - console.warn('fs-extra: Using the preserveTimestamps option in 32-bit node is not recommended;\n' + - 'see https://github.com/jprichardson/node-fs-extra/issues/269') - } - - var stats = (options.recursive && !options.dereference) ? fs.lstatSync(src) : fs.statSync(src) - var destFolder = path.dirname(dest) - var destFolderExists = fs.existsSync(destFolder) - var performCopy = false - - if (stats.isFile()) { - if (options.filter instanceof RegExp) { - console.warn('Warning: fs-extra: Passing a RegExp filter is deprecated, use a function') - performCopy = options.filter.test(src) - } else if (typeof options.filter === 'function') performCopy = options.filter(src) - - if (performCopy) { - if (!destFolderExists) mkdir.mkdirsSync(destFolder) - copyFileSync(src, dest, {clobber: options.clobber, preserveTimestamps: options.preserveTimestamps}) - } - } else if (stats.isDirectory()) { + console.warn(`fs-extra: Using the preserveTimestamps option in 32-bit node is not recommended;\n + see https://github.com/jprichardson/node-fs-extra/issues/269`) + } + + const stats = (options.recursive && !options.dereference) ? fs.lstatSync(src) : fs.statSync(src) + const destFolder = path.dirname(dest) + const destFolderExists = fs.existsSync(destFolder) + let performCopy = false + + if (options.filter instanceof RegExp) { + console.warn('Warning: fs-extra: Passing a RegExp filter is deprecated, use a function') + performCopy = options.filter.test(src) + } else if (typeof options.filter === 'function') performCopy = options.filter(src, dest) + + if (stats.isFile() && performCopy) { + if (!destFolderExists) mkdir.mkdirsSync(destFolder) + copyFileSync(src, dest, { + overwrite: options.overwrite, + errorOnExist: options.errorOnExist, + preserveTimestamps: options.preserveTimestamps + }) + } else if (stats.isDirectory() && performCopy) { if (!fs.existsSync(dest)) mkdir.mkdirsSync(dest) - var contents = fs.readdirSync(src) - contents.forEach(function (content) { - var opts = options + const contents = fs.readdirSync(src) + contents.forEach(content => { + const opts = options opts.recursive = true copySync(path.join(src, content), path.join(dest, content), opts) }) - } else if (options.recursive && stats.isSymbolicLink()) { - var srcPath = fs.readlinkSync(src) + } else if (options.recursive && stats.isSymbolicLink() && performCopy) { + const srcPath = fs.readlinkSync(src) fs.symlinkSync(srcPath, dest) } } @@ -47455,17 +54006,20 @@ function copySync (src, dest, options) { module.exports = copySync }).call(this,require('_process')) -},{"../mkdirs":218,"./copy-file-sync":200,"_process":357,"graceful-fs":246,"path":332}],202:[function(require,module,exports){ + +},{"../mkdirs":515,"./copy-file-sync":497,"_process":650,"graceful-fs":542,"path":625}],499:[function(require,module,exports){ module.exports = { copySync: require('./copy-sync') } -},{"./copy-sync":201}],203:[function(require,module,exports){ +},{"./copy-sync":498}],500:[function(require,module,exports){ (function (process){ -var fs = require('graceful-fs') -var path = require('path') -var ncp = require('./ncp') -var mkdir = require('../mkdirs') +'use strict' + +const fs = require('graceful-fs') +const path = require('path') +const ncp = require('./ncp') +const mkdir = require('../mkdirs') function copy (src, dest, options, callback) { if (typeof options === 'function' && !callback) { @@ -47479,31 +54033,31 @@ function copy (src, dest, options, callback) { // Warn about using preserveTimestamps on 32-bit node: if (options.preserveTimestamps && process.arch === 'ia32') { - console.warn('fs-extra: Using the preserveTimestamps option in 32-bit node is not recommended;\n' + - 'see https://github.com/jprichardson/node-fs-extra/issues/269') + console.warn(`fs-extra: Using the preserveTimestamps option in 32-bit node is not recommended;\n + see https://github.com/jprichardson/node-fs-extra/issues/269`) } // don't allow src and dest to be the same - var basePath = process.cwd() - var currentPath = path.resolve(basePath, src) - var targetPath = path.resolve(basePath, dest) + const basePath = process.cwd() + const currentPath = path.resolve(basePath, src) + const targetPath = path.resolve(basePath, dest) if (currentPath === targetPath) return callback(new Error('Source and destination must not be the same.')) - fs.lstat(src, function (err, stats) { + fs.lstat(src, (err, stats) => { if (err) return callback(err) - var dir = null + let dir = null if (stats.isDirectory()) { - var parts = dest.split(path.sep) + const parts = dest.split(path.sep) parts.pop() dir = parts.join(path.sep) } else { dir = path.dirname(dest) } - fs.exists(dir, function (dirExists) { + fs.exists(dir, dirExists => { if (dirExists) return ncp(src, dest, options, callback) - mkdir.mkdirs(dir, function (err) { + mkdir.mkdirs(dir, err => { if (err) return callback(err) ncp(src, dest, options, callback) }) @@ -47514,12 +54068,13 @@ function copy (src, dest, options, callback) { module.exports = copy }).call(this,require('_process')) -},{"../mkdirs":218,"./ncp":205,"_process":357,"graceful-fs":246,"path":332}],204:[function(require,module,exports){ + +},{"../mkdirs":515,"./ncp":502,"_process":650,"graceful-fs":542,"path":625}],501:[function(require,module,exports){ module.exports = { copy: require('./copy') } -},{"./copy":203}],205:[function(require,module,exports){ +},{"./copy":500}],502:[function(require,module,exports){ (function (process){ // imported from ncp (this is temporary, will rewrite) @@ -47539,7 +54094,11 @@ function ncp (source, dest, options, callback) { var filter = options.filter var transform = options.transform - var clobber = options.clobber !== false // default true + var overwrite = options.overwrite + // If overwrite is undefined, use clobber, otherwise default to true: + if (overwrite === undefined) overwrite = options.clobber + if (overwrite === undefined) overwrite = true + var errorOnExist = options.errorOnExist var dereference = options.dereference var preserveTimestamps = options.preserveTimestamps === true @@ -47560,7 +54119,7 @@ function ncp (source, dest, options, callback) { return doneOne(true) } } else if (typeof filter === 'function') { - if (!filter(source)) { + if (!filter(source, dest)) { return doneOne(true) } } @@ -47600,16 +54159,14 @@ function ncp (source, dest, options, callback) { if (writable) { copyFile(file, target) } else { - if (clobber) { + if (overwrite) { rmFile(target, function () { copyFile(file, target) }) + } else if (errorOnExist) { + onError(new Error(target + ' already exists')) } else { - var err = new Error('EEXIST: ' + target + ' already exists.') - err.code = 'EEXIST' - err.errno = -17 - err.path = target - onError(err) + doneOne() } } }) @@ -47630,7 +54187,7 @@ function ncp (source, dest, options, callback) { }) } - writeStream.once('finish', function () { + writeStream.once('close', function () { fs.chmod(target, file.mode, function (err) { if (err) return onError(err) if (preserveTimestamps) { @@ -47755,27 +54312,28 @@ function ncp (source, dest, options, callback) { module.exports = ncp }).call(this,require('_process')) -},{"../util/utimes":227,"_process":357,"graceful-fs":246,"path":332}],206:[function(require,module,exports){ -var fs = require('fs') -var path = require('path') -var mkdir = require('../mkdirs') -var remove = require('../remove') + +},{"../util/utimes":525,"_process":650,"graceful-fs":542,"path":625}],503:[function(require,module,exports){ +'use strict' + +const fs = require('fs') +const path = require('path') +const mkdir = require('../mkdirs') +const remove = require('../remove') function emptyDir (dir, callback) { callback = callback || function () {} - fs.readdir(dir, function (err, items) { + fs.readdir(dir, (err, items) => { if (err) return mkdir.mkdirs(dir, callback) - items = items.map(function (item) { - return path.join(dir, item) - }) + items = items.map(item => path.join(dir, item)) deleteItem() function deleteItem () { - var item = items.pop() + const item = items.pop() if (!item) return callback() - remove.remove(item, function (err) { + remove.remove(item, err => { if (err) return callback(err) deleteItem() }) @@ -47784,45 +54342,47 @@ function emptyDir (dir, callback) { } function emptyDirSync (dir) { - var items + let items try { items = fs.readdirSync(dir) } catch (err) { return mkdir.mkdirsSync(dir) } - items.forEach(function (item) { + items.forEach(item => { item = path.join(dir, item) remove.removeSync(item) }) } module.exports = { - emptyDirSync: emptyDirSync, + emptyDirSync, emptydirSync: emptyDirSync, - emptyDir: emptyDir, + emptyDir, emptydir: emptyDir } -},{"../mkdirs":218,"../remove":224,"fs":113,"path":332}],207:[function(require,module,exports){ -var path = require('path') -var fs = require('graceful-fs') -var mkdir = require('../mkdirs') +},{"../mkdirs":515,"../remove":522,"fs":115,"path":625}],504:[function(require,module,exports){ +'use strict' + +const path = require('path') +const fs = require('graceful-fs') +const mkdir = require('../mkdirs') function createFile (file, callback) { function makeFile () { - fs.writeFile(file, '', function (err) { + fs.writeFile(file, '', err => { if (err) return callback(err) callback() }) } - fs.exists(file, function (fileExists) { + fs.exists(file, fileExists => { if (fileExists) return callback() - var dir = path.dirname(file) - fs.exists(dir, function (dirExists) { + const dir = path.dirname(file) + fs.exists(dir, dirExists => { if (dirExists) return makeFile() - mkdir.mkdirs(dir, function (err) { + mkdir.mkdirs(dir, err => { if (err) return callback(err) makeFile() }) @@ -47833,7 +54393,7 @@ function createFile (file, callback) { function createFileSync (file) { if (fs.existsSync(file)) return - var dir = path.dirname(file) + const dir = path.dirname(file) if (!fs.existsSync(dir)) { mkdir.mkdirsSync(dir) } @@ -47842,17 +54402,19 @@ function createFileSync (file) { } module.exports = { - createFile: createFile, - createFileSync: createFileSync, + createFile, + createFileSync, // alias ensureFile: createFile, ensureFileSync: createFileSync } -},{"../mkdirs":218,"graceful-fs":246,"path":332}],208:[function(require,module,exports){ -var file = require('./file') -var link = require('./link') -var symlink = require('./symlink') +},{"../mkdirs":515,"graceful-fs":542,"path":625}],505:[function(require,module,exports){ +'use strict' + +const file = require('./file') +const link = require('./link') +const symlink = require('./symlink') module.exports = { // file @@ -47872,31 +54434,33 @@ module.exports = { ensureSymlinkSync: symlink.createSymlinkSync } -},{"./file":207,"./link":209,"./symlink":212}],209:[function(require,module,exports){ -var path = require('path') -var fs = require('graceful-fs') -var mkdir = require('../mkdirs') +},{"./file":504,"./link":506,"./symlink":509}],506:[function(require,module,exports){ +'use strict' + +const path = require('path') +const fs = require('graceful-fs') +const mkdir = require('../mkdirs') function createLink (srcpath, dstpath, callback) { function makeLink (srcpath, dstpath) { - fs.link(srcpath, dstpath, function (err) { + fs.link(srcpath, dstpath, err => { if (err) return callback(err) callback(null) }) } - fs.exists(dstpath, function (destinationExists) { + fs.exists(dstpath, destinationExists => { if (destinationExists) return callback(null) - fs.lstat(srcpath, function (err, stat) { + fs.lstat(srcpath, (err, stat) => { if (err) { err.message = err.message.replace('lstat', 'ensureLink') return callback(err) } - var dir = path.dirname(dstpath) - fs.exists(dir, function (dirExists) { + const dir = path.dirname(dstpath) + fs.exists(dir, dirExists => { if (dirExists) return makeLink(srcpath, dstpath) - mkdir.mkdirs(dir, function (err) { + mkdir.mkdirs(dir, err => { if (err) return callback(err) makeLink(srcpath, dstpath) }) @@ -47906,7 +54470,7 @@ function createLink (srcpath, dstpath, callback) { } function createLinkSync (srcpath, dstpath, callback) { - var destinationExists = fs.existsSync(dstpath) + const destinationExists = fs.existsSync(dstpath) if (destinationExists) return undefined try { @@ -47916,8 +54480,8 @@ function createLinkSync (srcpath, dstpath, callback) { throw err } - var dir = path.dirname(dstpath) - var dirExists = fs.existsSync(dir) + const dir = path.dirname(dstpath) + const dirExists = fs.existsSync(dir) if (dirExists) return fs.linkSync(srcpath, dstpath) mkdir.mkdirsSync(dir) @@ -47925,17 +54489,18 @@ function createLinkSync (srcpath, dstpath, callback) { } module.exports = { - createLink: createLink, - createLinkSync: createLinkSync, + createLink, + createLinkSync, // alias ensureLink: createLink, ensureLinkSync: createLinkSync } -},{"../mkdirs":218,"graceful-fs":246,"path":332}],210:[function(require,module,exports){ -var path = require('path') -// path.isAbsolute shim for Node.js 0.10 support -var fs = require('graceful-fs') +},{"../mkdirs":515,"graceful-fs":542,"path":625}],507:[function(require,module,exports){ +'use strict' + +const path = require('path') +const fs = require('graceful-fs') /** * Function that returns two types of paths, one relative to symlink, and one @@ -47961,7 +54526,7 @@ var fs = require('graceful-fs') function symlinkPaths (srcpath, dstpath, callback) { if (path.isAbsolute(srcpath)) { - return fs.lstat(srcpath, function (err, stat) { + return fs.lstat(srcpath, (err, stat) => { if (err) { err.message = err.message.replace('lstat', 'ensureSymlink') return callback(err) @@ -47972,16 +54537,16 @@ function symlinkPaths (srcpath, dstpath, callback) { }) }) } else { - var dstdir = path.dirname(dstpath) - var relativeToDst = path.join(dstdir, srcpath) - return fs.exists(relativeToDst, function (exists) { + const dstdir = path.dirname(dstpath) + const relativeToDst = path.join(dstdir, srcpath) + return fs.exists(relativeToDst, exists => { if (exists) { return callback(null, { 'toCwd': relativeToDst, 'toDst': srcpath }) } else { - return fs.lstat(srcpath, function (err, stat) { + return fs.lstat(srcpath, (err, stat) => { if (err) { err.message = err.message.replace('lstat', 'ensureSymlink') return callback(err) @@ -47997,7 +54562,7 @@ function symlinkPaths (srcpath, dstpath, callback) { } function symlinkPathsSync (srcpath, dstpath) { - var exists + let exists if (path.isAbsolute(srcpath)) { exists = fs.existsSync(srcpath) if (!exists) throw new Error('absolute srcpath does not exist') @@ -48006,8 +54571,8 @@ function symlinkPathsSync (srcpath, dstpath) { 'toDst': srcpath } } else { - var dstdir = path.dirname(dstpath) - var relativeToDst = path.join(dstdir, srcpath) + const dstdir = path.dirname(dstpath) + const relativeToDst = path.join(dstdir, srcpath) exists = fs.existsSync(relativeToDst) if (exists) { return { @@ -48026,18 +54591,20 @@ function symlinkPathsSync (srcpath, dstpath) { } module.exports = { - 'symlinkPaths': symlinkPaths, - 'symlinkPathsSync': symlinkPathsSync + symlinkPaths, + symlinkPathsSync } -},{"graceful-fs":246,"path":332}],211:[function(require,module,exports){ -var fs = require('graceful-fs') +},{"graceful-fs":542,"path":625}],508:[function(require,module,exports){ +'use strict' + +const fs = require('graceful-fs') function symlinkType (srcpath, type, callback) { callback = (typeof type === 'function') ? type : callback type = (typeof type === 'function') ? false : type if (type) return callback(null, type) - fs.lstat(srcpath, function (err, stats) { + fs.lstat(srcpath, (err, stats) => { if (err) return callback(null, 'file') type = (stats && stats.isDirectory()) ? 'dir' : 'file' callback(null, type) @@ -48045,9 +54612,11 @@ function symlinkType (srcpath, type, callback) { } function symlinkTypeSync (srcpath, type) { + let stats + if (type) return type try { - var stats = fs.lstatSync(srcpath) + stats = fs.lstatSync(srcpath) } catch (e) { return 'file' } @@ -48055,40 +54624,42 @@ function symlinkTypeSync (srcpath, type) { } module.exports = { - symlinkType: symlinkType, - symlinkTypeSync: symlinkTypeSync + symlinkType, + symlinkTypeSync } -},{"graceful-fs":246}],212:[function(require,module,exports){ -var path = require('path') -var fs = require('graceful-fs') -var _mkdirs = require('../mkdirs') -var mkdirs = _mkdirs.mkdirs -var mkdirsSync = _mkdirs.mkdirsSync +},{"graceful-fs":542}],509:[function(require,module,exports){ +'use strict' -var _symlinkPaths = require('./symlink-paths') -var symlinkPaths = _symlinkPaths.symlinkPaths -var symlinkPathsSync = _symlinkPaths.symlinkPathsSync +const path = require('path') +const fs = require('graceful-fs') +const _mkdirs = require('../mkdirs') +const mkdirs = _mkdirs.mkdirs +const mkdirsSync = _mkdirs.mkdirsSync -var _symlinkType = require('./symlink-type') -var symlinkType = _symlinkType.symlinkType -var symlinkTypeSync = _symlinkType.symlinkTypeSync +const _symlinkPaths = require('./symlink-paths') +const symlinkPaths = _symlinkPaths.symlinkPaths +const symlinkPathsSync = _symlinkPaths.symlinkPathsSync + +const _symlinkType = require('./symlink-type') +const symlinkType = _symlinkType.symlinkType +const symlinkTypeSync = _symlinkType.symlinkTypeSync function createSymlink (srcpath, dstpath, type, callback) { callback = (typeof type === 'function') ? type : callback type = (typeof type === 'function') ? false : type - fs.exists(dstpath, function (destinationExists) { + fs.exists(dstpath, destinationExists => { if (destinationExists) return callback(null) - symlinkPaths(srcpath, dstpath, function (err, relative) { + symlinkPaths(srcpath, dstpath, (err, relative) => { if (err) return callback(err) srcpath = relative.toDst - symlinkType(relative.toCwd, type, function (err, type) { + symlinkType(relative.toCwd, type, (err, type) => { if (err) return callback(err) - var dir = path.dirname(dstpath) - fs.exists(dir, function (dirExists) { + const dir = path.dirname(dstpath) + fs.exists(dir, dirExists => { if (dirExists) return fs.symlink(srcpath, dstpath, type, callback) - mkdirs(dir, function (err) { + mkdirs(dir, err => { if (err) return callback(err) fs.symlink(srcpath, dstpath, type, callback) }) @@ -48102,39 +54673,41 @@ function createSymlinkSync (srcpath, dstpath, type, callback) { callback = (typeof type === 'function') ? type : callback type = (typeof type === 'function') ? false : type - var destinationExists = fs.existsSync(dstpath) + const destinationExists = fs.existsSync(dstpath) if (destinationExists) return undefined - var relative = symlinkPathsSync(srcpath, dstpath) + const relative = symlinkPathsSync(srcpath, dstpath) srcpath = relative.toDst type = symlinkTypeSync(relative.toCwd, type) - var dir = path.dirname(dstpath) - var exists = fs.existsSync(dir) + const dir = path.dirname(dstpath) + const exists = fs.existsSync(dir) if (exists) return fs.symlinkSync(srcpath, dstpath, type) mkdirsSync(dir) return fs.symlinkSync(srcpath, dstpath, type) } module.exports = { - createSymlink: createSymlink, - createSymlinkSync: createSymlinkSync, + createSymlink, + createSymlinkSync, // alias ensureSymlink: createSymlink, ensureSymlinkSync: createSymlinkSync } -},{"../mkdirs":218,"./symlink-paths":210,"./symlink-type":211,"graceful-fs":246,"path":332}],213:[function(require,module,exports){ -var assign = require('./util/assign') +},{"../mkdirs":515,"./symlink-paths":507,"./symlink-type":508,"graceful-fs":542,"path":625}],510:[function(require,module,exports){ +'use strict' + +const assign = require('./util/assign') -var fse = {} -var gfs = require('graceful-fs') +const fse = {} +const gfs = require('graceful-fs') // attach fs methods to fse -Object.keys(gfs).forEach(function (key) { +Object.keys(gfs).forEach(key => { fse[key] = gfs[key] }) -var fs = fse +const fs = fse assign(fs, require('./copy')) assign(fs, require('./copy-sync')) @@ -48142,29 +54715,28 @@ assign(fs, require('./mkdirs')) assign(fs, require('./remove')) assign(fs, require('./json')) assign(fs, require('./move')) +assign(fs, require('./move-sync')) assign(fs, require('./empty')) assign(fs, require('./ensure')) assign(fs, require('./output')) -assign(fs, require('./walk')) -assign(fs, require('./walk-sync')) module.exports = fs // maintain backwards compatibility for awhile -var jsonfile = {} +const jsonfile = {} Object.defineProperty(jsonfile, 'spaces', { - get: function () { - return fs.spaces // found in ./json - }, - set: function (val) { + get: () => fs.spaces, // found in ./json + set: val => { fs.spaces = val } }) module.exports.jsonfile = jsonfile // so users of fs-extra can modify jsonFile.spaces -},{"./copy":204,"./copy-sync":202,"./empty":206,"./ensure":208,"./json":214,"./mkdirs":218,"./move":222,"./output":223,"./remove":224,"./util/assign":226,"./walk":229,"./walk-sync":228,"graceful-fs":246}],214:[function(require,module,exports){ -var jsonFile = require('./jsonfile') +},{"./copy":501,"./copy-sync":499,"./empty":503,"./ensure":505,"./json":511,"./mkdirs":515,"./move":520,"./move-sync":519,"./output":521,"./remove":522,"./util/assign":524,"graceful-fs":542}],511:[function(require,module,exports){ +'use strict' + +const jsonFile = require('./jsonfile') jsonFile.outputJsonSync = require('./output-json-sync') jsonFile.outputJson = require('./output-json') @@ -48174,8 +54746,10 @@ jsonFile.outputJSON = require('./output-json') module.exports = jsonFile -},{"./jsonfile":215,"./output-json":217,"./output-json-sync":216}],215:[function(require,module,exports){ -var jsonFile = require('jsonfile') +},{"./jsonfile":512,"./output-json":514,"./output-json-sync":513}],512:[function(require,module,exports){ +'use strict' + +const jsonFile = require('jsonfile') module.exports = { // jsonfile exports @@ -48190,14 +54764,16 @@ module.exports = { spaces: 2 // default in fs-extra } -},{"jsonfile":273}],216:[function(require,module,exports){ -var fs = require('graceful-fs') -var path = require('path') -var jsonFile = require('./jsonfile') -var mkdir = require('../mkdirs') +},{"jsonfile":568}],513:[function(require,module,exports){ +'use strict' + +const fs = require('graceful-fs') +const path = require('path') +const mkdir = require('../mkdirs') +const jsonFile = require('./jsonfile') function outputJsonSync (file, data, options) { - var dir = path.dirname(file) + const dir = path.dirname(file) if (!fs.existsSync(dir)) { mkdir.mkdirsSync(dir) @@ -48208,11 +54784,13 @@ function outputJsonSync (file, data, options) { module.exports = outputJsonSync -},{"../mkdirs":218,"./jsonfile":215,"graceful-fs":246,"path":332}],217:[function(require,module,exports){ -var fs = require('graceful-fs') -var path = require('path') -var jsonFile = require('./jsonfile') -var mkdir = require('../mkdirs') +},{"../mkdirs":515,"./jsonfile":512,"graceful-fs":542,"path":625}],514:[function(require,module,exports){ +'use strict' + +const fs = require('graceful-fs') +const path = require('path') +const mkdir = require('../mkdirs') +const jsonFile = require('./jsonfile') function outputJson (file, data, options, callback) { if (typeof options === 'function') { @@ -48220,12 +54798,12 @@ function outputJson (file, data, options, callback) { options = {} } - var dir = path.dirname(file) + const dir = path.dirname(file) - fs.exists(dir, function (itDoes) { + fs.exists(dir, itDoes => { if (itDoes) return jsonFile.writeJson(file, data, options, callback) - mkdir.mkdirs(dir, function (err) { + mkdir.mkdirs(dir, err => { if (err) return callback(err) jsonFile.writeJson(file, data, options, callback) }) @@ -48234,7 +54812,7 @@ function outputJson (file, data, options, callback) { module.exports = outputJson -},{"../mkdirs":218,"./jsonfile":215,"graceful-fs":246,"path":332}],218:[function(require,module,exports){ +},{"../mkdirs":515,"./jsonfile":512,"graceful-fs":542,"path":625}],515:[function(require,module,exports){ module.exports = { mkdirs: require('./mkdirs'), mkdirsSync: require('./mkdirs-sync'), @@ -48245,24 +54823,26 @@ module.exports = { ensureDirSync: require('./mkdirs-sync') } -},{"./mkdirs":220,"./mkdirs-sync":219}],219:[function(require,module,exports){ +},{"./mkdirs":517,"./mkdirs-sync":516}],516:[function(require,module,exports){ (function (process){ -var fs = require('graceful-fs') -var path = require('path') -var invalidWin32Path = require('./win32').invalidWin32Path +'use strict' -var o777 = parseInt('0777', 8) +const fs = require('graceful-fs') +const path = require('path') +const invalidWin32Path = require('./win32').invalidWin32Path + +const o777 = parseInt('0777', 8) function mkdirsSync (p, opts, made) { if (!opts || typeof opts !== 'object') { opts = { mode: opts } } - var mode = opts.mode - var xfs = opts.fs || fs + let mode = opts.mode + const xfs = opts.fs || fs if (process.platform === 'win32' && invalidWin32Path(p)) { - var errInval = new Error(p + ' contains invalid WIN32 path characters.') + const errInval = new Error(p + ' contains invalid WIN32 path characters.') errInval.code = 'EINVAL' throw errInval } @@ -48289,7 +54869,7 @@ function mkdirsSync (p, opts, made) { // there already. If so, then hooray! If not, then something // is borked. default: - var stat + let stat try { stat = xfs.statSync(p) } catch (err1) { @@ -48306,13 +54886,16 @@ function mkdirsSync (p, opts, made) { module.exports = mkdirsSync }).call(this,require('_process')) -},{"./win32":221,"_process":357,"graceful-fs":246,"path":332}],220:[function(require,module,exports){ + +},{"./win32":518,"_process":650,"graceful-fs":542,"path":625}],517:[function(require,module,exports){ (function (process){ -var fs = require('graceful-fs') -var path = require('path') -var invalidWin32Path = require('./win32').invalidWin32Path +'use strict' + +const fs = require('graceful-fs') +const path = require('path') +const invalidWin32Path = require('./win32').invalidWin32Path -var o777 = parseInt('0777', 8) +const o777 = parseInt('0777', 8) function mkdirs (p, opts, callback, made) { if (typeof opts === 'function') { @@ -48323,13 +54906,13 @@ function mkdirs (p, opts, callback, made) { } if (process.platform === 'win32' && invalidWin32Path(p)) { - var errInval = new Error(p + ' contains invalid WIN32 path characters.') + const errInval = new Error(p + ' contains invalid WIN32 path characters.') errInval.code = 'EINVAL' return callback(errInval) } - var mode = opts.mode - var xfs = opts.fs || fs + let mode = opts.mode + const xfs = opts.fs || fs if (mode === undefined) { mode = o777 & (~process.umask()) @@ -48339,7 +54922,7 @@ function mkdirs (p, opts, callback, made) { callback = callback || function () {} p = path.resolve(p) - xfs.mkdir(p, mode, function (er) { + xfs.mkdir(p, mode, er => { if (!er) { made = made || p return callback(null, made) @@ -48347,7 +54930,7 @@ function mkdirs (p, opts, callback, made) { switch (er.code) { case 'ENOENT': if (path.dirname(p) === p) return callback(er) - mkdirs(path.dirname(p), opts, function (er, made) { + mkdirs(path.dirname(p), opts, (er, made) => { if (er) callback(er, made) else mkdirs(p, opts, callback, made) }) @@ -48357,7 +54940,7 @@ function mkdirs (p, opts, callback, made) { // there already. If so, then hooray! If not, then something // is borked. default: - xfs.stat(p, function (er2, stat) { + xfs.stat(p, (er2, stat) => { // if the stat fails, then that's super weird. // let the original error be the failure reason. if (er2 || !stat.isDirectory()) callback(er, made) @@ -48371,55 +54954,179 @@ function mkdirs (p, opts, callback, made) { module.exports = mkdirs }).call(this,require('_process')) -},{"./win32":221,"_process":357,"graceful-fs":246,"path":332}],221:[function(require,module,exports){ + +},{"./win32":518,"_process":650,"graceful-fs":542,"path":625}],518:[function(require,module,exports){ 'use strict' -var path = require('path') + +const path = require('path') // get drive on windows function getRootPath (p) { p = path.normalize(path.resolve(p)).split(path.sep) if (p.length > 0) return p[0] - else return null + return null } // http://stackoverflow.com/a/62888/10333 contains more accurate // TODO: expand to include the rest -var INVALID_PATH_CHARS = /[<>:"|?*]/ +const INVALID_PATH_CHARS = /[<>:"|?*]/ function invalidWin32Path (p) { - var rp = getRootPath(p) + const rp = getRootPath(p) p = p.replace(rp, '') return INVALID_PATH_CHARS.test(p) } module.exports = { - getRootPath: getRootPath, - invalidWin32Path: invalidWin32Path + getRootPath, + invalidWin32Path +} + +},{"path":625}],519:[function(require,module,exports){ +(function (Buffer){ +'use strict' + +const fs = require('graceful-fs') +const path = require('path') +const copySync = require('../copy-sync').copySync +const removeSync = require('../remove').removeSync +const mkdirpSync = require('../mkdirs').mkdirsSync + +function moveSync (src, dest, options) { + options = options || {} + const overwrite = options.overwrite || options.clobber || false + + src = path.resolve(src) + dest = path.resolve(dest) + + if (src === dest) return + + if (isSrcSubdir(src, dest)) throw new Error(`Cannot move '${src}' into itself '${dest}'.`) + + mkdirpSync(path.dirname(dest)) + tryRenameSync() + + function tryRenameSync () { + if (overwrite) { + try { + return fs.renameSync(src, dest) + } catch (err) { + if (err.code === 'ENOTEMPTY' || err.code === 'EEXIST' || err.code === 'EPERM') { + removeSync(dest) + options.overwrite = false // just overwriteed it, no need to do it again + return moveSync(src, dest, options) + } + + if (err.code !== 'EXDEV') throw err + return moveSyncAcrossDevice(src, dest, overwrite) + } + } else { + try { + fs.linkSync(src, dest) + return fs.unlinkSync(src) + } catch (err) { + if (err.code === 'EXDEV' || err.code === 'EISDIR' || err.code === 'EPERM' || err.code === 'ENOTSUP') { + return moveSyncAcrossDevice(src, dest, overwrite) + } + throw err + } + } + } +} + +function moveSyncAcrossDevice (src, dest, overwrite) { + const stat = fs.statSync(src) + + if (stat.isDirectory()) { + return moveDirSyncAcrossDevice(src, dest, overwrite) + } else { + return moveFileSyncAcrossDevice(src, dest, overwrite) + } } -},{"path":332}],222:[function(require,module,exports){ +function moveFileSyncAcrossDevice (src, dest, overwrite) { + const BUF_LENGTH = 64 * 1024 + const _buff = new Buffer(BUF_LENGTH) + + const flags = overwrite ? 'w' : 'wx' + + const fdr = fs.openSync(src, 'r') + const stat = fs.fstatSync(fdr) + const fdw = fs.openSync(dest, flags, stat.mode) + let bytesRead = 1 + let pos = 0 + + while (bytesRead > 0) { + bytesRead = fs.readSync(fdr, _buff, 0, BUF_LENGTH, pos) + fs.writeSync(fdw, _buff, 0, bytesRead) + pos += bytesRead + } + + fs.closeSync(fdr) + fs.closeSync(fdw) + return fs.unlinkSync(src) +} + +function moveDirSyncAcrossDevice (src, dest, overwrite) { + const options = { + overwrite: false + } + + if (overwrite) { + removeSync(dest) + tryCopySync() + } else { + tryCopySync() + } + + function tryCopySync () { + copySync(src, dest, options) + return removeSync(src) + } +} + +// return true if dest is a subdir of src, otherwise false. +// extract dest base dir and check if that is the same as src basename +function isSrcSubdir (src, dest) { + try { + return fs.statSync(src).isDirectory() && + src !== dest && + dest.indexOf(src) > -1 && + dest.split(path.dirname(src) + path.sep)[1].split(path.sep)[0] === path.basename(src) + } catch (e) { + return false + } +} + +module.exports = { + moveSync +} + +}).call(this,require("buffer").Buffer) + +},{"../copy-sync":499,"../mkdirs":515,"../remove":522,"buffer":119,"graceful-fs":542,"path":625}],520:[function(require,module,exports){ +'use strict' + // most of this code was written by Andrew Kelley // licensed under the BSD license: see // https://github.com/andrewrk/node-mv/blob/master/package.json // this needs a cleanup -var fs = require('graceful-fs') -var ncp = require('../copy/ncp') -var path = require('path') -var remove = require('../remove').remove -var mkdirp = require('../mkdirs').mkdirs +const fs = require('graceful-fs') +const ncp = require('../copy/ncp') +const path = require('path') +const remove = require('../remove').remove +const mkdirp = require('../mkdirs').mkdirs -function mv (source, dest, options, callback) { +function move (source, dest, options, callback) { if (typeof options === 'function') { callback = options options = {} } - var shouldMkdirp = ('mkdirp' in options) ? options.mkdirp : true - var clobber = ('clobber' in options) ? options.clobber : false - - var limit = options.limit || 16 + const shouldMkdirp = ('mkdirp' in options) ? options.mkdirp : true + const overwrite = options.overwrite || options.clobber || false if (shouldMkdirp) { mkdirs() @@ -48428,46 +55135,48 @@ function mv (source, dest, options, callback) { } function mkdirs () { - mkdirp(path.dirname(dest), function (err) { + mkdirp(path.dirname(dest), err => { if (err) return callback(err) doRename() }) } function doRename () { - if (clobber) { - fs.rename(source, dest, function (err) { + if (path.resolve(source) === path.resolve(dest)) { + setImmediate(callback) + } else if (overwrite) { + fs.rename(source, dest, err => { if (!err) return callback() if (err.code === 'ENOTEMPTY' || err.code === 'EEXIST') { - remove(dest, function (err) { + remove(dest, err => { if (err) return callback(err) - options.clobber = false // just clobbered it, no need to do it again - mv(source, dest, options, callback) + options.overwrite = false // just overwriteed it, no need to do it again + move(source, dest, options, callback) }) return } // weird Windows shit if (err.code === 'EPERM') { - setTimeout(function () { - remove(dest, function (err) { + setTimeout(() => { + remove(dest, err => { if (err) return callback(err) - options.clobber = false - mv(source, dest, options, callback) + options.overwrite = false + move(source, dest, options, callback) }) }, 200) return } if (err.code !== 'EXDEV') return callback(err) - moveAcrossDevice(source, dest, clobber, limit, callback) + moveAcrossDevice(source, dest, overwrite, callback) }) } else { - fs.link(source, dest, function (err) { + fs.link(source, dest, err => { if (err) { - if (err.code === 'EXDEV' || err.code === 'EISDIR' || err.code === 'EPERM') { - moveAcrossDevice(source, dest, clobber, limit, callback) + if (err.code === 'EXDEV' || err.code === 'EISDIR' || err.code === 'EPERM' || err.code === 'ENOTSUP') { + moveAcrossDevice(source, dest, overwrite, callback) return } callback(err) @@ -48479,27 +55188,27 @@ function mv (source, dest, options, callback) { } } -function moveAcrossDevice (source, dest, clobber, limit, callback) { - fs.stat(source, function (err, stat) { +function moveAcrossDevice (source, dest, overwrite, callback) { + fs.stat(source, (err, stat) => { if (err) { callback(err) return } if (stat.isDirectory()) { - moveDirAcrossDevice(source, dest, clobber, limit, callback) + moveDirAcrossDevice(source, dest, overwrite, callback) } else { - moveFileAcrossDevice(source, dest, clobber, limit, callback) + moveFileAcrossDevice(source, dest, overwrite, callback) } }) } -function moveFileAcrossDevice (source, dest, clobber, limit, callback) { - var outFlags = clobber ? 'w' : 'wx' - var ins = fs.createReadStream(source) - var outs = fs.createWriteStream(dest, {flags: outFlags}) +function moveFileAcrossDevice (source, dest, overwrite, callback) { + const flags = overwrite ? 'w' : 'wx' + const ins = fs.createReadStream(source) + const outs = fs.createWriteStream(dest, { flags }) - ins.on('error', function (err) { + ins.on('error', err => { ins.destroy() outs.destroy() outs.removeListener('close', onClose) @@ -48507,17 +55216,17 @@ function moveFileAcrossDevice (source, dest, clobber, limit, callback) { // may want to create a directory but `out` line above // creates an empty file for us: See #108 // don't care about error here - fs.unlink(dest, function () { + fs.unlink(dest, () => { // note: `err` here is from the input stream errror if (err.code === 'EISDIR' || err.code === 'EPERM') { - moveDirAcrossDevice(source, dest, clobber, limit, callback) + moveDirAcrossDevice(source, dest, overwrite, callback) } else { callback(err) } }) }) - outs.on('error', function (err) { + outs.on('error', err => { ins.destroy() outs.destroy() outs.removeListener('close', onClose) @@ -48532,38 +55241,38 @@ function moveFileAcrossDevice (source, dest, clobber, limit, callback) { } } -function moveDirAcrossDevice (source, dest, clobber, limit, callback) { - var options = { - stopOnErr: true, - clobber: false, - limit: limit +function moveDirAcrossDevice (source, dest, overwrite, callback) { + const options = { + overwrite: false } - function startNcp () { - ncp(source, dest, options, function (errList) { - if (errList) return callback(errList[0]) - remove(source, callback) - }) - } - - if (clobber) { - remove(dest, function (err) { + if (overwrite) { + remove(dest, err => { if (err) return callback(err) startNcp() }) } else { startNcp() } + + function startNcp () { + ncp(source, dest, options, err => { + if (err) return callback(err) + remove(source, callback) + }) + } } module.exports = { - move: mv + move } -},{"../copy/ncp":205,"../mkdirs":218,"../remove":224,"graceful-fs":246,"path":332}],223:[function(require,module,exports){ -var path = require('path') -var fs = require('graceful-fs') -var mkdir = require('../mkdirs') +},{"../copy/ncp":502,"../mkdirs":515,"../remove":522,"graceful-fs":542,"path":625}],521:[function(require,module,exports){ +'use strict' + +const fs = require('graceful-fs') +const path = require('path') +const mkdir = require('../mkdirs') function outputFile (file, data, encoding, callback) { if (typeof encoding === 'function') { @@ -48571,11 +55280,11 @@ function outputFile (file, data, encoding, callback) { encoding = 'utf8' } - var dir = path.dirname(file) - fs.exists(dir, function (itDoes) { + const dir = path.dirname(file) + fs.exists(dir, itDoes => { if (itDoes) return fs.writeFile(file, data, encoding, callback) - mkdir.mkdirs(dir, function (err) { + mkdir.mkdirs(dir, err => { if (err) return callback(err) fs.writeFile(file, data, encoding, callback) @@ -48584,7 +55293,7 @@ function outputFile (file, data, encoding, callback) { } function outputFileSync (file, data, encoding) { - var dir = path.dirname(file) + const dir = path.dirname(file) if (fs.existsSync(dir)) { return fs.writeFileSync.apply(fs, arguments) } @@ -48593,40 +55302,41 @@ function outputFileSync (file, data, encoding) { } module.exports = { - outputFile: outputFile, - outputFileSync: outputFileSync + outputFile, + outputFileSync } -},{"../mkdirs":218,"graceful-fs":246,"path":332}],224:[function(require,module,exports){ -var rimraf = require('./rimraf') +},{"../mkdirs":515,"graceful-fs":542,"path":625}],522:[function(require,module,exports){ +'use strict' + +const rimraf = require('./rimraf') function removeSync (dir) { return rimraf.sync(dir, {disableGlob: true}) } function remove (dir, callback) { - var options = {disableGlob: true} + const options = {disableGlob: true} return callback ? rimraf(dir, options, callback) : rimraf(dir, options, function () {}) } module.exports = { - remove: remove, - removeSync: removeSync + remove, + removeSync } -},{"./rimraf":225}],225:[function(require,module,exports){ +},{"./rimraf":523}],523:[function(require,module,exports){ (function (process){ -module.exports = rimraf -rimraf.sync = rimrafSync +'use strict' -var assert = require('assert') -var path = require('path') -var fs = require('graceful-fs') +const fs = require('graceful-fs') +const path = require('path') +const assert = require('assert') -var isWindows = (process.platform === 'win32') +const isWindows = (process.platform === 'win32') function defaults (options) { - var methods = [ + const methods = [ 'unlink', 'chmod', 'stat', @@ -48634,7 +55344,7 @@ function defaults (options) { 'rmdir', 'readdir' ] - methods.forEach(function (m) { + methods.forEach(m => { options[m] = options[m] || fs[m] m = m + 'Sync' options[m] = options[m] || fs[m] @@ -48644,6 +55354,8 @@ function defaults (options) { } function rimraf (p, options, cb) { + let busyTries = 0 + if (typeof options === 'function') { cb = options options = {} @@ -48657,18 +55369,14 @@ function rimraf (p, options, cb) { defaults(options) - var busyTries = 0 - rimraf_(p, options, function CB (er) { if (er) { if (isWindows && (er.code === 'EBUSY' || er.code === 'ENOTEMPTY' || er.code === 'EPERM') && busyTries < options.maxBusyTries) { busyTries++ - var time = busyTries * 100 + let time = busyTries * 100 // try again, with the same exact callback as this one. - return setTimeout(function () { - rimraf_(p, options, CB) - }, time) + return setTimeout(() => rimraf_(p, options, CB), time) } // already gone @@ -48697,21 +55405,21 @@ function rimraf_ (p, options, cb) { // sunos lets the root user unlink directories, which is... weird. // so we have to lstat here and make sure it's not a dir. - options.lstat(p, function (er, st) { + options.lstat(p, (er, st) => { if (er && er.code === 'ENOENT') { return cb(null) } // Windows can EPERM on stat. Life is suffering. if (er && er.code === 'EPERM' && isWindows) { - fixWinEPERM(p, options, er, cb) + return fixWinEPERM(p, options, er, cb) } if (st && st.isDirectory()) { return rmdir(p, options, er, cb) } - options.unlink(p, function (er) { + options.unlink(p, er => { if (er) { if (er.code === 'ENOENT') { return cb(null) @@ -48738,11 +55446,11 @@ function fixWinEPERM (p, options, er, cb) { assert(er instanceof Error) } - options.chmod(p, 666, function (er2) { + options.chmod(p, 666, er2 => { if (er2) { cb(er2.code === 'ENOENT' ? null : er) } else { - options.stat(p, function (er3, stats) { + options.stat(p, (er3, stats) => { if (er3) { cb(er3.code === 'ENOENT' ? null : er) } else if (stats.isDirectory()) { @@ -48756,6 +55464,8 @@ function fixWinEPERM (p, options, er, cb) { } function fixWinEPERMSync (p, options, er) { + let stats + assert(p) assert(options) if (er) { @@ -48773,7 +55483,7 @@ function fixWinEPERMSync (p, options, er) { } try { - var stats = options.statSync(p) + stats = options.statSync(p) } catch (er3) { if (er3.code === 'ENOENT') { return @@ -48800,7 +55510,7 @@ function rmdir (p, options, originalEr, cb) { // try to rmdir first, and only readdir on ENOTEMPTY or EEXIST (SunOS) // if we guessed wrong, and it's not a directory, then // raise the original error. - options.rmdir(p, function (er) { + options.rmdir(p, er => { if (er && (er.code === 'ENOTEMPTY' || er.code === 'EEXIST' || er.code === 'EPERM')) { rmkids(p, options, cb) } else if (er && er.code === 'ENOTDIR') { @@ -48816,23 +55526,20 @@ function rmkids (p, options, cb) { assert(options) assert(typeof cb === 'function') - options.readdir(p, function (er, files) { - if (er) { - return cb(er) - } - var n = files.length - if (n === 0) { - return options.rmdir(p, cb) - } - var errState - files.forEach(function (f) { - rimraf(path.join(p, f), options, function (er) { + options.readdir(p, (er, files) => { + if (er) return cb(er) + + let n = files.length + let errState + + if (n === 0) return options.rmdir(p, cb) + + files.forEach(f => { + rimraf(path.join(p, f), options, er => { if (errState) { return } - if (er) { - return cb(errState = er) - } + if (er) return cb(errState = er) if (--n === 0) { options.rmdir(p, cb) } @@ -48845,6 +55552,8 @@ function rmkids (p, options, cb) { // tie up the JavaScript thread and fail on excessively // deep directory trees. function rimrafSync (p, options) { + let st + options = options || {} defaults(options) @@ -48854,7 +55563,7 @@ function rimrafSync (p, options) { assert.equal(typeof options, 'object', 'rimraf: options should be object') try { - var st = options.lstatSync(p) + st = options.lstatSync(p) } catch (er) { if (er.code === 'ENOENT') { return @@ -48876,11 +55585,9 @@ function rimrafSync (p, options) { } catch (er) { if (er.code === 'ENOENT') { return - } - if (er.code === 'EPERM') { + } else if (er.code === 'EPERM') { return isWindows ? fixWinEPERMSync(p, options, er) : rmdirSync(p, options, er) - } - if (er.code !== 'EISDIR') { + } else if (er.code !== 'EISDIR') { throw er } rmdirSync(p, options, er) @@ -48899,11 +55606,9 @@ function rmdirSync (p, options, originalEr) { } catch (er) { if (er.code === 'ENOENT') { return - } - if (er.code === 'ENOTDIR') { + } else if (er.code === 'ENOTDIR') { throw originalEr - } - if (er.code === 'ENOTEMPTY' || er.code === 'EEXIST' || er.code === 'EPERM') { + } else if (er.code === 'ENOTEMPTY' || er.code === 'EEXIST' || er.code === 'EPERM') { rmkidsSync(p, options) } } @@ -48912,20 +55617,24 @@ function rmdirSync (p, options, originalEr) { function rmkidsSync (p, options) { assert(p) assert(options) - options.readdirSync(p).forEach(function (f) { - rimrafSync(path.join(p, f), options) - }) + options.readdirSync(p).forEach(f => rimrafSync(path.join(p, f), options)) options.rmdirSync(p, options) } +module.exports = rimraf +rimraf.sync = rimrafSync + }).call(this,require('_process')) -},{"_process":357,"assert":80,"graceful-fs":246,"path":332}],226:[function(require,module,exports){ + +},{"_process":650,"assert":80,"graceful-fs":542,"path":625}],524:[function(require,module,exports){ +'use strict' + // simple mutable assign function assign () { - var args = [].slice.call(arguments).filter(function (i) { return i }) - var dest = args.shift() - args.forEach(function (src) { - Object.keys(src).forEach(function (key) { + const args = [].slice.call(arguments).filter(i => i) + const dest = args.shift() + args.forEach(src => { + Object.keys(src).forEach(key => { dest[key] = src[key] }) }) @@ -48935,40 +55644,42 @@ function assign () { module.exports = assign -},{}],227:[function(require,module,exports){ -var fs = require('graceful-fs') -var path = require('path') -var os = require('os') +},{}],525:[function(require,module,exports){ +'use strict' + +const fs = require('graceful-fs') +const os = require('os') +const path = require('path') // HFS, ext{2,3}, FAT do not, Node.js v0.10 does not function hasMillisResSync () { - var tmpfile = path.join('millis-test-sync' + Date.now().toString() + Math.random().toString().slice(2)) + let tmpfile = path.join('millis-test-sync' + Date.now().toString() + Math.random().toString().slice(2)) tmpfile = path.join(os.tmpdir(), tmpfile) // 550 millis past UNIX epoch - var d = new Date(1435410243862) + const d = new Date(1435410243862) fs.writeFileSync(tmpfile, 'https://github.com/jprichardson/node-fs-extra/pull/141') - var fd = fs.openSync(tmpfile, 'r+') + const fd = fs.openSync(tmpfile, 'r+') fs.futimesSync(fd, d, d) fs.closeSync(fd) return fs.statSync(tmpfile).mtime > 1435410243000 } function hasMillisRes (callback) { - var tmpfile = path.join('millis-test' + Date.now().toString() + Math.random().toString().slice(2)) + let tmpfile = path.join('millis-test' + Date.now().toString() + Math.random().toString().slice(2)) tmpfile = path.join(os.tmpdir(), tmpfile) // 550 millis past UNIX epoch - var d = new Date(1435410243862) - fs.writeFile(tmpfile, 'https://github.com/jprichardson/node-fs-extra/pull/141', function (err) { + const d = new Date(1435410243862) + fs.writeFile(tmpfile, 'https://github.com/jprichardson/node-fs-extra/pull/141', err => { if (err) return callback(err) - fs.open(tmpfile, 'r+', function (err, fd) { + fs.open(tmpfile, 'r+', (err, fd) => { if (err) return callback(err) - fs.futimes(fd, d, d, function (err) { + fs.futimes(fd, d, d, err => { if (err) return callback(err) - fs.close(fd, function (err) { + fs.close(fd, err => { if (err) return callback(err) - fs.stat(tmpfile, function (err, stats) { + fs.stat(tmpfile, (err, stats) => { if (err) return callback(err) callback(null, stats.mtime > 1435410243000) }) @@ -48990,10 +55701,10 @@ function timeRemoveMillis (timestamp) { function utimesMillis (path, atime, mtime, callback) { // if (!HAS_MILLIS_RES) return fs.utimes(path, atime, mtime, callback) - fs.open(path, 'r+', function (err, fd) { + fs.open(path, 'r+', (err, fd) => { if (err) return callback(err) - fs.futimes(fd, atime, mtime, function (futimesErr) { - fs.close(fd, function (closeErr) { + fs.futimes(fd, atime, mtime, futimesErr => { + fs.close(fd, closeErr => { if (callback) callback(futimesErr || closeErr) }) }) @@ -49001,42 +55712,13 @@ function utimesMillis (path, atime, mtime, callback) { } module.exports = { - hasMillisRes: hasMillisRes, - hasMillisResSync: hasMillisResSync, - timeRemoveMillis: timeRemoveMillis, - utimesMillis: utimesMillis -} - -},{"graceful-fs":246,"os":315,"path":332}],228:[function(require,module,exports){ -var fs = require('graceful-fs') -var path = require('path') - -var walkSync = function (dir, filelist) { - var files = fs.readdirSync(dir) - filelist = filelist || [] - files.forEach(function (file) { - var nestedPath = path.join(dir, file) - if (fs.lstatSync(nestedPath).isDirectory()) { - filelist = walkSync(nestedPath, filelist) - } else { - filelist.push(nestedPath) - } - }) - return filelist + hasMillisRes, + hasMillisResSync, + timeRemoveMillis, + utimesMillis } -module.exports = { - walkSync: walkSync -} - -},{"graceful-fs":246,"path":332}],229:[function(require,module,exports){ -var klaw = require('klaw') - -module.exports = { - walk: klaw -} - -},{"klaw":275}],230:[function(require,module,exports){ +},{"graceful-fs":542,"os":608,"path":625}],526:[function(require,module,exports){ (function (Buffer,__dirname){ /** @@ -49172,7 +55854,8 @@ module.exports.version = JSON.parse( }).call(this,{"isBuffer":require("../is-buffer/index.js")},"/node_modules/gm") -},{"../is-buffer/index.js":264,"./lib/args":231,"./lib/command":232,"./lib/compare":233,"./lib/composite":234,"./lib/convenience":235,"./lib/drawing":240,"./lib/getters":241,"./lib/montage":242,"./lib/options":243,"./lib/utils":244,"events":197,"fs":113,"stream":393,"util":403}],231:[function(require,module,exports){ + +},{"../is-buffer/index.js":560,"./lib/args":527,"./lib/command":528,"./lib/compare":529,"./lib/composite":530,"./lib/convenience":531,"./lib/drawing":536,"./lib/getters":537,"./lib/montage":538,"./lib/options":539,"./lib/utils":540,"events":494,"fs":115,"stream":688,"util":698}],527:[function(require,module,exports){ /** * Dependencies */ @@ -50279,7 +56962,7 @@ function comment (arg) { } } -},{"./utils":244}],232:[function(require,module,exports){ +},{"./utils":540}],528:[function(require,module,exports){ (function (Buffer){ /** @@ -50694,7 +57377,8 @@ module.exports = function (proto) { } }).call(this,require("buffer").Buffer) -},{"./utils":244,"array-series":65,"buffer":116,"child_process":113,"debug":164,"stream":393}],233:[function(require,module,exports){ + +},{"./utils":540,"array-series":65,"buffer":119,"child_process":115,"debug":461,"stream":688}],529:[function(require,module,exports){ // compare var spawn = require('child_process').spawn; @@ -50816,7 +57500,7 @@ module.exports = exports = function (proto) { }; -},{"child_process":113}],234:[function(require,module,exports){ +},{"child_process":115}],530:[function(require,module,exports){ // composite /** @@ -50847,7 +57531,7 @@ module.exports = exports = function(proto) { } } -},{}],235:[function(require,module,exports){ +},{}],531:[function(require,module,exports){ /** * Extend proto @@ -50860,7 +57544,7 @@ module.exports = function (proto) { require("./convenience/autoOrient")(proto); } -},{"./convenience/autoOrient":236,"./convenience/morph":237,"./convenience/sepia":238,"./convenience/thumb":239}],236:[function(require,module,exports){ +},{"./convenience/autoOrient":532,"./convenience/morph":533,"./convenience/sepia":534,"./convenience/thumb":535}],532:[function(require,module,exports){ /** * Extend proto. @@ -50919,7 +57603,7 @@ module.exports = function (proto) { } } -},{}],237:[function(require,module,exports){ +},{}],533:[function(require,module,exports){ /** * Module dependencies. @@ -50982,7 +57666,7 @@ module.exports = function (proto) { } } -},{"array-parallel":64,"fs":113}],238:[function(require,module,exports){ +},{"array-parallel":64,"fs":115}],534:[function(require,module,exports){ /** * Extend proto. @@ -50994,7 +57678,7 @@ module.exports = function (proto) { } } -},{}],239:[function(require,module,exports){ +},{}],535:[function(require,module,exports){ /** * Extend proto. @@ -51088,7 +57772,7 @@ module.exports = function (proto) { }; }; -},{}],240:[function(require,module,exports){ +},{}],536:[function(require,module,exports){ /** * Module dependencies. @@ -51250,7 +57934,7 @@ function formatPoints (points) { return result; } -},{"./utils":244}],241:[function(require,module,exports){ +},{"./utils":540}],537:[function(require,module,exports){ /** * Extend proto. */ @@ -51584,7 +58268,7 @@ module.exports = function (gm) { }; } -},{}],242:[function(require,module,exports){ +},{}],538:[function(require,module,exports){ // montage /** @@ -51610,7 +58294,7 @@ module.exports = exports = function(proto) { } } -},{}],243:[function(require,module,exports){ +},{}],539:[function(require,module,exports){ module.exports = exports = function (proto) { proto._options = {}; @@ -51629,7 +58313,7 @@ module.exports = exports = function (proto) { } } -},{}],244:[function(require,module,exports){ +},{}],540:[function(require,module,exports){ /** * Escape the given shell `arg`. @@ -51673,7 +58357,7 @@ exports.isUtil = function (v) { } return ty; } -},{}],245:[function(require,module,exports){ +},{}],541:[function(require,module,exports){ 'use strict' var fs = require('fs') @@ -51696,7 +58380,7 @@ function clone (obj) { return copy } -},{"fs":113}],246:[function(require,module,exports){ +},{"fs":115}],542:[function(require,module,exports){ (function (process){ var fs = require('fs') var polyfills = require('./polyfills.js') @@ -51962,7 +58646,8 @@ function retry () { } }).call(this,require('_process')) -},{"./fs.js":245,"./legacy-streams.js":247,"./polyfills.js":248,"_process":357,"assert":80,"fs":113,"util":403}],247:[function(require,module,exports){ + +},{"./fs.js":541,"./legacy-streams.js":543,"./polyfills.js":544,"_process":650,"assert":80,"fs":115,"util":698}],543:[function(require,module,exports){ (function (process){ var Stream = require('stream').Stream @@ -52084,7 +58769,8 @@ function legacy (fs) { } }).call(this,require('_process')) -},{"_process":357,"stream":393}],248:[function(require,module,exports){ + +},{"_process":650,"stream":688}],544:[function(require,module,exports){ (function (process){ var fs = require('./fs.js') var constants = require('constants') @@ -52418,7 +59104,8 @@ function chownErOk (er) { } }).call(this,require('_process')) -},{"./fs.js":245,"_process":357,"constants":149}],249:[function(require,module,exports){ + +},{"./fs.js":541,"_process":650,"constants":152}],545:[function(require,module,exports){ var hash = exports; hash.utils = require('./hash/utils'); @@ -52435,7 +59122,7 @@ hash.sha384 = hash.sha.sha384; hash.sha512 = hash.sha.sha512; hash.ripemd160 = hash.ripemd.ripemd160; -},{"./hash/common":250,"./hash/hmac":251,"./hash/ripemd":252,"./hash/sha":253,"./hash/utils":254}],250:[function(require,module,exports){ +},{"./hash/common":546,"./hash/hmac":547,"./hash/ripemd":548,"./hash/sha":549,"./hash/utils":550}],546:[function(require,module,exports){ var hash = require('../hash'); var utils = hash.utils; var assert = utils.assert; @@ -52528,7 +59215,7 @@ BlockHash.prototype._pad = function pad() { return res; }; -},{"../hash":249}],251:[function(require,module,exports){ +},{"../hash":545}],547:[function(require,module,exports){ var hmac = exports; var hash = require('../hash'); @@ -52578,7 +59265,7 @@ Hmac.prototype.digest = function digest(enc) { return this.outer.digest(enc); }; -},{"../hash":249}],252:[function(require,module,exports){ +},{"../hash":545}],548:[function(require,module,exports){ var hash = require('../hash'); var utils = hash.utils; @@ -52724,7 +59411,7 @@ var sh = [ 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11 ]; -},{"../hash":249}],253:[function(require,module,exports){ +},{"../hash":545}],549:[function(require,module,exports){ var hash = require('../hash'); var utils = hash.utils; var assert = utils.assert; @@ -53290,7 +59977,7 @@ function g1_512_lo(xh, xl) { return r; } -},{"../hash":249}],254:[function(require,module,exports){ +},{"../hash":545}],550:[function(require,module,exports){ var utils = exports; var inherits = require('inherits'); @@ -53549,7 +60236,7 @@ function shr64_lo(ah, al, num) { }; exports.shr64_lo = shr64_lo; -},{"inherits":263}],255:[function(require,module,exports){ +},{"inherits":559}],551:[function(require,module,exports){ 'use strict'; var hash = require('hash.js'); @@ -53565,7 +60252,7 @@ function HmacDRBG(options) { this.outLen = this.hash.outSize; this.minEntropy = options.minEntropy || this.hash.hmacStrength; - this.reseed = null; + this._reseed = null; this.reseedInterval = null; this.K = null; this.V = null; @@ -53590,7 +60277,7 @@ HmacDRBG.prototype._init = function init(entropy, nonce, pers) { } this._update(seed); - this.reseed = 1; + this._reseed = 1; this.reseedInterval = 0x1000000000000; // 2^48 }; @@ -53632,11 +60319,11 @@ HmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) { 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits'); this._update(entropy.concat(add || [])); - this.reseed = 1; + this._reseed = 1; }; HmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) { - if (this.reseed > this.reseedInterval) + if (this._reseed > this.reseedInterval) throw new Error('Reseed is required'); // Optional encoding @@ -53660,11 +60347,11 @@ HmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) { var res = temp.slice(0, len); this._update(add); - this.reseed++; + this._reseed++; return utils.encode(res, enc); }; -},{"hash.js":249,"minimalistic-assert":278,"minimalistic-crypto-utils":279}],256:[function(require,module,exports){ +},{"hash.js":545,"minimalistic-assert":571,"minimalistic-crypto-utils":572}],552:[function(require,module,exports){ exports.read = function (buffer, offset, isLE, mLen, nBytes) { var e, m var eLen = nBytes * 8 - mLen - 1 @@ -53750,7 +60437,7 @@ exports.write = function (buffer, value, offset, isLE, mLen, nBytes) { buffer[offset + i - d] |= s * 128 } -},{}],257:[function(require,module,exports){ +},{}],553:[function(require,module,exports){ (function (process){ // Load in our dependencies var assert = require('assert'); @@ -54015,7 +60702,8 @@ imageDiff.ImageDiff = ImageDiff; module.exports = imageDiff; }).call(this,require('_process')) -},{"_process":357,"assert":80,"async":258,"buffered-spawn":117,"fs":113,"gm":230,"mkdirp":280,"path":332,"tmp":259}],258:[function(require,module,exports){ + +},{"_process":650,"assert":80,"async":554,"buffered-spawn":120,"fs":115,"gm":526,"mkdirp":573,"path":625,"tmp":555}],554:[function(require,module,exports){ (function (process){ /*global setImmediate: false, setTimeout: false, console: false */ (function () { @@ -54977,7 +61665,8 @@ module.exports = imageDiff; }()); }).call(this,require('_process')) -},{"_process":357}],259:[function(require,module,exports){ + +},{"_process":650}],555:[function(require,module,exports){ (function (process){ /*! * Tmp @@ -55261,14 +61950,15 @@ module.exports.tmpName = _getTmpName; module.exports.setGracefulCleanup = _setGracefulCleanup; }).call(this,require('_process')) -},{"_process":357,"constants":149,"fs":113,"os":315,"path":332}],260:[function(require,module,exports){ + +},{"_process":650,"constants":152,"fs":115,"os":608,"path":625}],556:[function(require,module,exports){ "use strict"; module.exports = function Canvas () { return document.createElement('canvas'); }; -},{}],261:[function(require,module,exports){ +},{}],557:[function(require,module,exports){ (function (Buffer){ // js-imagediff 1.0.3 // (c) 2011-2012 Carl Sutherland, Humble Software @@ -55672,7 +62362,8 @@ module.exports = function Canvas () { }); }).call(this,require("buffer").Buffer) -},{"buffer":116,"canvas":260,"fs":113}],262:[function(require,module,exports){ + +},{"buffer":119,"canvas":556,"fs":115}],558:[function(require,module,exports){ var indexOf = [].indexOf; @@ -55683,7 +62374,7 @@ module.exports = function(arr, obj){ } return -1; }; -},{}],263:[function(require,module,exports){ +},{}],559:[function(require,module,exports){ if (typeof Object.create === 'function') { // implementation from standard node.js 'util' module module.exports = function inherits(ctor, superCtor) { @@ -55708,7 +62399,7 @@ if (typeof Object.create === 'function') { } } -},{}],264:[function(require,module,exports){ +},{}],560:[function(require,module,exports){ /*! * Determine if an object is a Buffer * @@ -55731,38 +62422,19 @@ function isSlowBuffer (obj) { return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0)) } -},{}],265:[function(require,module,exports){ +},{}],561:[function(require,module,exports){ var toString = {}.toString; module.exports = Array.isArray || function (arr) { return toString.call(arr) == '[object Array]'; }; -},{}],266:[function(require,module,exports){ -module.exports = isexe -isexe.sync = sync - -var fs = require('fs') - -function isexe (path, _, cb) { - fs.access(path, fs.X_OK, function (er) { - cb(er, !er) - }) -} - -function sync (path, _) { - fs.accessSync(path, fs.X_OK) - return true -} - -},{"fs":113}],267:[function(require,module,exports){ +},{}],562:[function(require,module,exports){ (function (process,global){ var fs = require('fs') var core if (process.platform === 'win32' || global.TESTING_WINDOWS) { core = require('./windows.js') -} else if (typeof fs.access === 'function') { - core = require('./access.js') } else { core = require('./mode.js') } @@ -55818,7 +62490,8 @@ function sync (path, options) { } }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"./access.js":266,"./mode.js":268,"./windows.js":269,"_process":357,"fs":113}],268:[function(require,module,exports){ + +},{"./mode.js":563,"./windows.js":564,"_process":650,"fs":115}],563:[function(require,module,exports){ (function (process){ module.exports = isexe isexe.sync = sync @@ -55826,13 +62499,17 @@ isexe.sync = sync var fs = require('fs') function isexe (path, options, cb) { - fs.stat(path, function (er, st) { - cb(er, er ? false : checkMode(st, options)) + fs.stat(path, function (er, stat) { + cb(er, er ? false : checkStat(stat, options)) }) } function sync (path, options) { - return checkMode(fs.statSync(path), options) + return checkStat(fs.statSync(path), options) +} + +function checkStat (stat, options) { + return stat.isFile() && checkMode(stat, options) } function checkMode (stat, options) { @@ -55859,7 +62536,8 @@ function checkMode (stat, options) { } }).call(this,require('_process')) -},{"_process":357,"fs":113}],269:[function(require,module,exports){ + +},{"_process":650,"fs":115}],564:[function(require,module,exports){ (function (process){ module.exports = isexe isexe.sync = sync @@ -55887,19 +62565,26 @@ function checkPathExt (path, options) { return false } +function checkStat (stat, path, options) { + if (!stat.isSymbolicLink() && !stat.isFile()) { + return false + } + return checkPathExt(path, options) +} + function isexe (path, options, cb) { - fs.stat(path, function (er, st) { - cb(er, er ? false : checkPathExt(path, options)) + fs.stat(path, function (er, stat) { + cb(er, er ? false : checkStat(stat, path, options)) }) } function sync (path, options) { - fs.statSync(path) - return checkPathExt(path, options) + return checkStat(fs.statSync(path), path, options) } }).call(this,require('_process')) -},{"_process":357,"fs":113}],270:[function(require,module,exports){ + +},{"_process":650,"fs":115}],565:[function(require,module,exports){ var encode = require('./lib/encoder'), decode = require('./lib/decoder'); @@ -55908,7 +62593,7 @@ module.exports = { decode: decode }; -},{"./lib/decoder":271,"./lib/encoder":272}],271:[function(require,module,exports){ +},{"./lib/decoder":566,"./lib/encoder":567}],566:[function(require,module,exports){ (function (Buffer){ /* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- / /* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */ @@ -56900,7 +63585,8 @@ function decode(jpegData, useTArray) { } }).call(this,require("buffer").Buffer) -},{"buffer":116}],272:[function(require,module,exports){ + +},{"buffer":119}],567:[function(require,module,exports){ (function (Buffer){ /* Copyright (c) 2008, Adobe Systems Incorporated @@ -57670,7 +64356,8 @@ function getImageDataFromImage(idOrElement){ } }).call(this,require("buffer").Buffer) -},{"buffer":116}],273:[function(require,module,exports){ + +},{"buffer":119}],568:[function(require,module,exports){ (function (Buffer){ var _fs try { @@ -57807,84 +64494,8 @@ var jsonfile = { module.exports = jsonfile }).call(this,{"isBuffer":require("../is-buffer/index.js")}) -},{"../is-buffer/index.js":264,"fs":113,"graceful-fs":246}],274:[function(require,module,exports){ -// simple mutable assign (extracted from fs-extra) -// I really like object-assign package, but I wanted a lean package with zero deps -function _assign () { - var args = [].slice.call(arguments).filter(function (i) { return i }) - var dest = args.shift() - args.forEach(function (src) { - Object.keys(src).forEach(function (key) { - dest[key] = src[key] - }) - }) - - return dest -} - -// thank you baby Jesus for Node v4 and Object.assign -module.exports = Object.assign || _assign -},{}],275:[function(require,module,exports){ -var assert = require('assert') -var fs -try { - fs = require('graceful-fs') -} catch (e) { - fs = require('fs') -} -var path = require('path') -var Readable = require('stream').Readable -var util = require('util') -var assign = require('./assign') - -function Walker (dir, options) { - assert.strictEqual(typeof dir, 'string', '`dir` parameter should be of type string. Got type: ' + typeof dir) - var defaultStreamOptions = { objectMode: true } - var defaultOpts = { queueMethod: 'shift', pathSorter: undefined, filter: undefined } - options = assign(defaultOpts, options, defaultStreamOptions) - - Readable.call(this, options) - this.root = path.resolve(dir) - this.paths = [this.root] - this.options = options - this.fs = options.fs || fs // mock-fs -} -util.inherits(Walker, Readable) - -Walker.prototype._read = function () { - if (this.paths.length === 0) return this.push(null) - var self = this - var pathItem = this.paths[this.options.queueMethod]() - - self.fs.lstat(pathItem, function (err, stats) { - var item = { path: pathItem, stats: stats } - if (err) return self.emit('error', err, item) - if (!stats.isDirectory()) return self.push(item) - - self.fs.readdir(pathItem, function (err, pathItems) { - if (err) { - self.push(item) - return self.emit('error', err, item) - } - - pathItems = pathItems.map(function (part) { return path.join(pathItem, part) }) - if (self.options.filter) pathItems = pathItems.filter(self.options.filter) - if (self.options.pathSorter) pathItems.sort(self.options.pathSorter) - pathItems.forEach(function (pi) { self.paths.push(pi) }) - - self.push(item) - }) - }) -} - -function walk (root, options) { - return new Walker(root, options) -} - -module.exports = walk - -},{"./assign":274,"assert":80,"fs":113,"graceful-fs":246,"path":332,"stream":393,"util":403}],276:[function(require,module,exports){ +},{"../is-buffer/index.js":560,"fs":115,"graceful-fs":542}],569:[function(require,module,exports){ ;(function () { // closure for web browsers if (typeof module === 'object' && module.exports) { @@ -58220,7 +64831,7 @@ function Entry (key, value, lu, length, now, maxAge) { })() -},{}],277:[function(require,module,exports){ +},{}],570:[function(require,module,exports){ var bn = require('bn.js'); var brorand = require('brorand'); @@ -58335,7 +64946,7 @@ MillerRabin.prototype.getDivisor = function getDivisor(n, k) { return false; }; -},{"bn.js":84,"brorand":85}],278:[function(require,module,exports){ +},{"bn.js":85,"brorand":86}],571:[function(require,module,exports){ module.exports = assert; function assert(val, msg) { @@ -58348,7 +64959,7 @@ assert.equal = function assertEqual(l, r, msg) { throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r)); }; -},{}],279:[function(require,module,exports){ +},{}],572:[function(require,module,exports){ 'use strict'; var utils = exports; @@ -58408,7 +65019,7 @@ utils.encode = function encode(arr, enc) { return arr; }; -},{}],280:[function(require,module,exports){ +},{}],573:[function(require,module,exports){ (function (process){ var path = require('path'); var fs = require('fs'); @@ -58494,7 +65105,8 @@ mkdirP.sync = function sync (p, mode, made) { }; }).call(this,require('_process')) -},{"_process":357,"fs":113,"path":332}],281:[function(require,module,exports){ + +},{"_process":650,"fs":115,"path":625}],574:[function(require,module,exports){ /** * Helpers. */ @@ -58621,7 +65233,7 @@ function plural(ms, n, name) { return Math.ceil(ms / n) + ' ' + name + 's'; } -},{}],282:[function(require,module,exports){ +},{}],575:[function(require,module,exports){ // The Bounding Box object 'use strict'; @@ -58783,7 +65395,7 @@ BoundingBox.prototype.addQuad = function(x0, y0, x1, y1, x, y) { exports.BoundingBox = BoundingBox; -},{}],283:[function(require,module,exports){ +},{}],576:[function(require,module,exports){ // Run-time checking of preconditions. 'use strict'; @@ -58804,7 +65416,7 @@ exports.argument = function(predicate, message) { // If not, it will throw an error. exports.assert = exports.argument; -},{}],284:[function(require,module,exports){ +},{}],577:[function(require,module,exports){ // Drawing utility functions. 'use strict'; @@ -58819,7 +65431,7 @@ function line(ctx, x1, y1, x2, y2) { exports.line = line; -},{}],285:[function(require,module,exports){ +},{}],578:[function(require,module,exports){ // Glyph encoding 'use strict'; @@ -59102,7 +65714,7 @@ exports.CffEncoding = CffEncoding; exports.GlyphNames = GlyphNames; exports.addGlyphNames = addGlyphNames; -},{}],286:[function(require,module,exports){ +},{}],579:[function(require,module,exports){ // The Font object 'use strict'; @@ -59632,7 +66244,7 @@ Font.prototype.usWeightClasses = { exports.Font = Font; -},{"./encoding":285,"./glyphset":288,"./path":292,"./substitution":293,"./tables/sfnt":312,"./util":314,"fs":86}],287:[function(require,module,exports){ +},{"./encoding":578,"./glyphset":581,"./path":585,"./substitution":586,"./tables/sfnt":605,"./util":607,"fs":87}],580:[function(require,module,exports){ // The Glyph object 'use strict'; @@ -59975,7 +66587,7 @@ Glyph.prototype.drawMetrics = function(ctx, x, y, fontSize) { exports.Glyph = Glyph; -},{"./check":283,"./draw":284,"./path":292}],288:[function(require,module,exports){ +},{"./check":576,"./draw":577,"./path":585}],581:[function(require,module,exports){ // The GlyphSet object 'use strict'; @@ -60109,7 +66721,7 @@ exports.glyphLoader = glyphLoader; exports.ttfGlyphLoader = ttfGlyphLoader; exports.cffGlyphLoader = cffGlyphLoader; -},{"./glyph":287}],289:[function(require,module,exports){ +},{"./glyph":580}],582:[function(require,module,exports){ // The Layout object is the prototype of Substition objects, and provides utility methods to manipulate // common layout tables (GPOS, GSUB, GDEF...) @@ -60393,7 +67005,7 @@ Layout.prototype = { module.exports = Layout; -},{"./check":283}],290:[function(require,module,exports){ +},{"./check":576}],583:[function(require,module,exports){ // opentype.js // https://github.com/nodebox/opentype.js // (c) 2015 Frederik De Bleser @@ -60785,7 +67397,7 @@ exports.parse = parseBuffer; exports.load = load; exports.loadSync = loadSync; -},{"./bbox":282,"./encoding":285,"./font":286,"./glyph":287,"./parse":291,"./path":292,"./tables/cff":295,"./tables/cmap":296,"./tables/fvar":297,"./tables/glyf":298,"./tables/gpos":299,"./tables/gsub":300,"./tables/head":301,"./tables/hhea":302,"./tables/hmtx":303,"./tables/kern":304,"./tables/loca":305,"./tables/ltag":306,"./tables/maxp":307,"./tables/meta":308,"./tables/name":309,"./tables/os2":310,"./tables/post":311,"./util":314,"fs":86,"tiny-inflate":396}],291:[function(require,module,exports){ +},{"./bbox":575,"./encoding":578,"./font":579,"./glyph":580,"./parse":584,"./path":585,"./tables/cff":588,"./tables/cmap":589,"./tables/fvar":590,"./tables/glyf":591,"./tables/gpos":592,"./tables/gsub":593,"./tables/head":594,"./tables/hhea":595,"./tables/hmtx":596,"./tables/kern":597,"./tables/loca":598,"./tables/ltag":599,"./tables/maxp":600,"./tables/meta":601,"./tables/name":602,"./tables/os2":603,"./tables/post":604,"./util":607,"fs":87,"tiny-inflate":691}],584:[function(require,module,exports){ // Parsing utility functions 'use strict'; @@ -61236,7 +67848,7 @@ Parser.prototype.parseLookupList = function(lookupTableParsers) { exports.Parser = Parser; -},{"./check":283}],292:[function(require,module,exports){ +},{"./check":576}],585:[function(require,module,exports){ // Geometric objects 'use strict'; @@ -61554,7 +68166,7 @@ Path.prototype.toDOMElement = function(decimalPlaces) { exports.Path = Path; -},{"./bbox":282}],293:[function(require,module,exports){ +},{"./bbox":575}],586:[function(require,module,exports){ // The Substitution object provides utility methods to manipulate // the GSUB substitution table. @@ -61857,7 +68469,7 @@ Substitution.prototype.add = function(feature, sub, script, language) { module.exports = Substitution; -},{"./check":283,"./layout":289}],294:[function(require,module,exports){ +},{"./check":576,"./layout":582}],587:[function(require,module,exports){ // Table metadata 'use strict'; @@ -62059,7 +68671,7 @@ exports.ushortList = ushortList; exports.tableList = tableList; exports.recordList = recordList; -},{"./check":283,"./types":313}],295:[function(require,module,exports){ +},{"./check":576,"./types":606}],588:[function(require,module,exports){ // The `CFF` table contains the glyph outlines in PostScript format. // https://www.microsoft.com/typography/OTSPEC/cff.htm // http://download.microsoft.com/download/8/0/1/801a191c-029d-4af3-9642-555f6fe514ee/cff.pdf @@ -63173,7 +69785,7 @@ function makeCFFTable(glyphs, options) { exports.parse = parseCFFTable; exports.make = makeCFFTable; -},{"../encoding":285,"../glyphset":288,"../parse":291,"../path":292,"../table":294}],296:[function(require,module,exports){ +},{"../encoding":578,"../glyphset":581,"../parse":584,"../path":585,"../table":587}],589:[function(require,module,exports){ // The `cmap` table stores the mappings from characters to glyphs. // https://www.microsoft.com/typography/OTSPEC/cmap.htm @@ -63397,7 +70009,7 @@ function makeCmapTable(glyphs) { exports.parse = parseCmapTable; exports.make = makeCmapTable; -},{"../check":283,"../parse":291,"../table":294}],297:[function(require,module,exports){ +},{"../check":576,"../parse":584,"../table":587}],590:[function(require,module,exports){ // The `fvar` table stores font variation axes and instances. // https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6fvar.html @@ -63538,7 +70150,7 @@ function parseFvarTable(data, start, names) { exports.make = makeFvarTable; exports.parse = parseFvarTable; -},{"../check":283,"../parse":291,"../table":294}],298:[function(require,module,exports){ +},{"../check":576,"../parse":584,"../table":587}],591:[function(require,module,exports){ // The `glyf` table describes the glyphs in TrueType outline format. // http://www.microsoft.com/typography/otspec/glyf.htm @@ -63875,7 +70487,7 @@ function parseGlyfTable(data, start, loca, font) { exports.parse = parseGlyfTable; -},{"../check":283,"../glyphset":288,"../parse":291,"../path":292}],299:[function(require,module,exports){ +},{"../check":576,"../glyphset":581,"../parse":584,"../path":585}],592:[function(require,module,exports){ // The `GPOS` table contains kerning pairs, among other things. // https://www.microsoft.com/typography/OTSPEC/gpos.htm @@ -64114,7 +70726,7 @@ function parseGposTable(data, start, font) { exports.parse = parseGposTable; -},{"../check":283,"../parse":291}],300:[function(require,module,exports){ +},{"../check":576,"../parse":584}],593:[function(require,module,exports){ // The `GSUB` table contains ligatures, among other things. // https://www.microsoft.com/typography/OTSPEC/gsub.htm @@ -64374,7 +70986,7 @@ function makeGsubTable(gsub) { exports.parse = parseGsubTable; exports.make = makeGsubTable; -},{"../check":283,"../parse":291,"../table":294}],301:[function(require,module,exports){ +},{"../check":576,"../parse":584,"../table":587}],594:[function(require,module,exports){ // The `head` table contains global information about the font. // https://www.microsoft.com/typography/OTSPEC/head.htm @@ -64442,7 +71054,7 @@ function makeHeadTable(options) { exports.parse = parseHeadTable; exports.make = makeHeadTable; -},{"../check":283,"../parse":291,"../table":294}],302:[function(require,module,exports){ +},{"../check":576,"../parse":584,"../table":587}],595:[function(require,module,exports){ // The `hhea` table contains information for horizontal layout. // https://www.microsoft.com/typography/OTSPEC/hhea.htm @@ -64497,7 +71109,7 @@ function makeHheaTable(options) { exports.parse = parseHheaTable; exports.make = makeHheaTable; -},{"../parse":291,"../table":294}],303:[function(require,module,exports){ +},{"../parse":584,"../table":587}],596:[function(require,module,exports){ // The `hmtx` table contains the horizontal metrics for all glyphs. // https://www.microsoft.com/typography/OTSPEC/hmtx.htm @@ -64541,7 +71153,7 @@ function makeHmtxTable(glyphs) { exports.parse = parseHmtxTable; exports.make = makeHmtxTable; -},{"../parse":291,"../table":294}],304:[function(require,module,exports){ +},{"../parse":584,"../table":587}],597:[function(require,module,exports){ // The `kern` table contains kerning pairs. // Note that some fonts use the GPOS OpenType layout table to specify kerning. // https://www.microsoft.com/typography/OTSPEC/kern.htm @@ -64614,7 +71226,7 @@ function parseKernTable(data, start) { exports.parse = parseKernTable; -},{"../check":283,"../parse":291}],305:[function(require,module,exports){ +},{"../check":576,"../parse":584}],598:[function(require,module,exports){ // The `loca` table stores the offsets to the locations of the glyphs in the font. // https://www.microsoft.com/typography/OTSPEC/loca.htm @@ -64649,7 +71261,7 @@ function parseLocaTable(data, start, numGlyphs, shortVersion) { exports.parse = parseLocaTable; -},{"../parse":291}],306:[function(require,module,exports){ +},{"../parse":584}],599:[function(require,module,exports){ // The `ltag` table stores IETF BCP-47 language tags. It allows supporting // languages for which TrueType does not assign a numeric code. // https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6ltag.html @@ -64712,7 +71324,7 @@ function parseLtagTable(data, start) { exports.make = makeLtagTable; exports.parse = parseLtagTable; -},{"../check":283,"../parse":291,"../table":294}],307:[function(require,module,exports){ +},{"../check":576,"../parse":584,"../table":587}],600:[function(require,module,exports){ // The `maxp` table establishes the memory requirements for the font. // We need it just to get the number of glyphs in the font. // https://www.microsoft.com/typography/OTSPEC/maxp.htm @@ -64757,7 +71369,7 @@ function makeMaxpTable(numGlyphs) { exports.parse = parseMaxpTable; exports.make = makeMaxpTable; -},{"../parse":291,"../table":294}],308:[function(require,module,exports){ +},{"../parse":584,"../table":587}],601:[function(require,module,exports){ // The `GPOS` table contains kerning pairs, among other things. // https://www.microsoft.com/typography/OTSPEC/gpos.htm @@ -64820,7 +71432,7 @@ function makeMetaTable(tags) { exports.parse = parseMetaTable; exports.make = makeMetaTable; -},{"../check":283,"../parse":291,"../table":294,"../types":313}],309:[function(require,module,exports){ +},{"../check":576,"../parse":584,"../table":587,"../types":606}],602:[function(require,module,exports){ // The `name` naming table. // https://www.microsoft.com/typography/OTSPEC/name.htm @@ -65657,7 +72269,7 @@ function makeNameTable(names, ltag) { exports.parse = parseNameTable; exports.make = makeNameTable; -},{"../parse":291,"../table":294,"../types":313}],310:[function(require,module,exports){ +},{"../parse":584,"../table":587,"../types":606}],603:[function(require,module,exports){ // The `OS/2` table contains metrics required in OpenType fonts. // https://www.microsoft.com/typography/OTSPEC/os2.htm @@ -65913,7 +72525,7 @@ exports.getUnicodeRange = getUnicodeRange; exports.parse = parseOS2Table; exports.make = makeOS2Table; -},{"../parse":291,"../table":294}],311:[function(require,module,exports){ +},{"../parse":584,"../table":587}],604:[function(require,module,exports){ // The `post` table stores additional PostScript information, such as glyph names. // https://www.microsoft.com/typography/OTSPEC/post.htm @@ -65986,7 +72598,7 @@ function makePostTable() { exports.parse = parsePostTable; exports.make = makePostTable; -},{"../encoding":285,"../parse":291,"../table":294}],312:[function(require,module,exports){ +},{"../encoding":578,"../parse":584,"../table":587}],605:[function(require,module,exports){ // The `sfnt` wrapper provides organization for the tables in the font. // It is the top-level data structure in a font. // https://www.microsoft.com/typography/OTSPEC/otff.htm @@ -66330,7 +72942,7 @@ exports.computeCheckSum = computeCheckSum; exports.make = makeSfntTable; exports.fontToTable = fontToSfntTable; -},{"../check":283,"../table":294,"./cff":295,"./cmap":296,"./gsub":300,"./head":301,"./hhea":302,"./hmtx":303,"./ltag":306,"./maxp":307,"./meta":308,"./name":309,"./os2":310,"./post":311}],313:[function(require,module,exports){ +},{"../check":576,"../table":587,"./cff":588,"./cmap":589,"./gsub":593,"./head":594,"./hhea":595,"./hmtx":596,"./ltag":599,"./maxp":600,"./meta":601,"./name":602,"./os2":603,"./post":604}],606:[function(require,module,exports){ // Data types used in the OpenType font file. // All OpenType fonts use Motorola-style byte ordering (Big Endian) @@ -67197,7 +73809,7 @@ exports.decode = decode; exports.encode = encode; exports.sizeOf = sizeOf; -},{"./check":283}],314:[function(require,module,exports){ +},{"./check":576}],607:[function(require,module,exports){ (function (Buffer){ 'use strict'; @@ -67236,7 +73848,8 @@ exports.checkArgument = function(expression, message) { }; }).call(this,require("buffer").Buffer) -},{"buffer":116}],315:[function(require,module,exports){ + +},{"buffer":119}],608:[function(require,module,exports){ exports.endianness = function () { return 'LE' }; exports.hostname = function () { @@ -67283,7 +73896,7 @@ exports.tmpdir = exports.tmpDir = function () { exports.EOL = '\n'; -},{}],316:[function(require,module,exports){ +},{}],609:[function(require,module,exports){ 'use strict'; @@ -67387,7 +74000,7 @@ exports.setTyped = function (on) { exports.setTyped(TYPED_OK); -},{}],317:[function(require,module,exports){ +},{}],610:[function(require,module,exports){ 'use strict'; // Note: adler32 takes 12% for level 0 and 2% for level 6. @@ -67421,7 +74034,7 @@ function adler32(adler, buf, len, pos) { module.exports = adler32; -},{}],318:[function(require,module,exports){ +},{}],611:[function(require,module,exports){ 'use strict'; @@ -67473,7 +74086,7 @@ module.exports = { //Z_NULL: null // Use -1 or null inline, depending on var type }; -},{}],319:[function(require,module,exports){ +},{}],612:[function(require,module,exports){ 'use strict'; // Note: we can't get significant speed boost here. @@ -67516,7 +74129,7 @@ function crc32(crc, buf, len, pos) { module.exports = crc32; -},{}],320:[function(require,module,exports){ +},{}],613:[function(require,module,exports){ 'use strict'; var utils = require('../utils/common'); @@ -69373,7 +75986,7 @@ exports.deflatePrime = deflatePrime; exports.deflateTune = deflateTune; */ -},{"../utils/common":316,"./adler32":317,"./crc32":319,"./messages":324,"./trees":325}],321:[function(require,module,exports){ +},{"../utils/common":609,"./adler32":610,"./crc32":612,"./messages":617,"./trees":618}],614:[function(require,module,exports){ 'use strict'; // See state defs from inflate.js @@ -69701,7 +76314,7 @@ module.exports = function inflate_fast(strm, start) { return; }; -},{}],322:[function(require,module,exports){ +},{}],615:[function(require,module,exports){ 'use strict'; @@ -71241,7 +77854,7 @@ exports.inflateSyncPoint = inflateSyncPoint; exports.inflateUndermine = inflateUndermine; */ -},{"../utils/common":316,"./adler32":317,"./crc32":319,"./inffast":321,"./inftrees":323}],323:[function(require,module,exports){ +},{"../utils/common":609,"./adler32":610,"./crc32":612,"./inffast":614,"./inftrees":616}],616:[function(require,module,exports){ 'use strict'; @@ -71570,7 +78183,7 @@ module.exports = function inflate_table(type, lens, lens_index, codes, table, ta return 0; }; -},{"../utils/common":316}],324:[function(require,module,exports){ +},{"../utils/common":609}],617:[function(require,module,exports){ 'use strict'; module.exports = { @@ -71585,7 +78198,7 @@ module.exports = { '-6': 'incompatible version' /* Z_VERSION_ERROR (-6) */ }; -},{}],325:[function(require,module,exports){ +},{}],618:[function(require,module,exports){ 'use strict'; @@ -72789,7 +79402,7 @@ exports._tr_flush_block = _tr_flush_block; exports._tr_tally = _tr_tally; exports._tr_align = _tr_align; -},{"../utils/common":316}],326:[function(require,module,exports){ +},{"../utils/common":609}],619:[function(require,module,exports){ 'use strict'; @@ -72820,7 +79433,7 @@ function ZStream() { module.exports = ZStream; -},{}],327:[function(require,module,exports){ +},{}],620:[function(require,module,exports){ module.exports={"2.16.840.1.101.3.4.1.1": "aes-128-ecb", "2.16.840.1.101.3.4.1.2": "aes-128-cbc", "2.16.840.1.101.3.4.1.3": "aes-128-ofb", @@ -72834,7 +79447,7 @@ module.exports={"2.16.840.1.101.3.4.1.1": "aes-128-ecb", "2.16.840.1.101.3.4.1.43": "aes-256-ofb", "2.16.840.1.101.3.4.1.44": "aes-256-cfb" } -},{}],328:[function(require,module,exports){ +},{}],621:[function(require,module,exports){ // from https://github.com/indutny/self-signed/blob/gh-pages/lib/asn1.js // Fedor, you are amazing. 'use strict' @@ -72958,7 +79571,7 @@ exports.signature = asn1.define('signature', function () { ) }) -},{"./certificate":329,"asn1.js":66}],329:[function(require,module,exports){ +},{"./certificate":622,"asn1.js":66}],622:[function(require,module,exports){ // from https://github.com/Rantanen/node-dtls/blob/25a7dc861bda38cfeac93a723500eea4f0ac2e86/Certificate.js // thanks to @Rantanen @@ -73048,7 +79661,7 @@ var X509Certificate = asn.define('X509Certificate', function () { module.exports = X509Certificate -},{"asn1.js":66}],330:[function(require,module,exports){ +},{"asn1.js":66}],623:[function(require,module,exports){ (function (Buffer){ // adapted from https://github.com/apatil/pemstrip var findProc = /Proc-Type: 4,ENCRYPTED\n\r?DEK-Info: AES-((?:128)|(?:192)|(?:256))-CBC,([0-9A-H]+)\n\r?\n\r?([0-9A-z\n\r\+\/\=]+)\n\r?/m @@ -73082,7 +79695,8 @@ module.exports = function (okey, password) { } }).call(this,require("buffer").Buffer) -},{"browserify-aes":89,"buffer":116,"evp_bytestokey":198}],331:[function(require,module,exports){ + +},{"browserify-aes":90,"buffer":119,"evp_bytestokey":495}],624:[function(require,module,exports){ (function (Buffer){ var asn1 = require('./asn1') var aesid = require('./aesid.json') @@ -73192,7 +79806,8 @@ function decrypt (data, password) { } }).call(this,require("buffer").Buffer) -},{"./aesid.json":327,"./asn1":328,"./fixProc":330,"browserify-aes":89,"buffer":116,"pbkdf2":333}],332:[function(require,module,exports){ + +},{"./aesid.json":620,"./asn1":621,"./fixProc":623,"browserify-aes":90,"buffer":119,"pbkdf2":626}],625:[function(require,module,exports){ (function (process){ // Copyright Joyent, Inc. and other Node contributors. // @@ -73420,7 +80035,8 @@ var substr = 'ab'.substr(-1) === 'b' ; }).call(this,require('_process')) -},{"_process":357}],333:[function(require,module,exports){ + +},{"_process":650}],626:[function(require,module,exports){ (function (process,Buffer){ var createHmac = require('create-hmac') var checkParameters = require('./precondition') @@ -73492,7 +80108,8 @@ exports.pbkdf2Sync = function (password, salt, iterations, keylen, digest) { } }).call(this,require('_process'),require("buffer").Buffer) -},{"./precondition":334,"_process":357,"buffer":116,"create-hmac":155}],334:[function(require,module,exports){ + +},{"./precondition":627,"_process":650,"buffer":119,"create-hmac":452}],627:[function(require,module,exports){ var MAX_ALLOC = Math.pow(2, 30) - 1 // default in iojs module.exports = function (iterations, keylen) { if (typeof iterations !== 'number') { @@ -73512,7 +80129,7 @@ module.exports = function (iterations, keylen) { } } -},{}],335:[function(require,module,exports){ +},{}],628:[function(require,module,exports){ (function (Buffer){ 'use strict'; @@ -73713,7 +80330,8 @@ exports.dataToBitMap = function(data, bitmapInfo) { }; }).call(this,require("buffer").Buffer) -},{"./interlace":345,"buffer":116}],336:[function(require,module,exports){ + +},{"./interlace":638,"buffer":119}],629:[function(require,module,exports){ (function (Buffer){ 'use strict'; @@ -73781,7 +80399,8 @@ module.exports = function(data, width, height, options) { }; }).call(this,require("buffer").Buffer) -},{"./constants":338,"buffer":116}],337:[function(require,module,exports){ + +},{"./constants":631,"buffer":119}],630:[function(require,module,exports){ (function (process,Buffer){ 'use strict'; @@ -73994,7 +80613,8 @@ ChunkStream.prototype._process = function() { }; }).call(this,require('_process'),require("buffer").Buffer) -},{"_process":357,"buffer":116,"stream":393,"util":403}],338:[function(require,module,exports){ + +},{"_process":650,"buffer":119,"stream":688,"util":698}],631:[function(require,module,exports){ 'use strict'; @@ -74030,7 +80650,7 @@ module.exports = { GAMMA_DIVISION: 100000 }; -},{}],339:[function(require,module,exports){ +},{}],632:[function(require,module,exports){ 'use strict'; var crcTable = []; @@ -74076,7 +80696,7 @@ CrcCalculator.crc32 = function(buf) { return crc ^ -1; }; -},{}],340:[function(require,module,exports){ +},{}],633:[function(require,module,exports){ (function (Buffer){ 'use strict'; @@ -74263,7 +80883,8 @@ module.exports = function(pxData, width, height, options, bpp) { }; }).call(this,require("buffer").Buffer) -},{"./paeth-predictor":349,"buffer":116}],341:[function(require,module,exports){ + +},{"./paeth-predictor":642,"buffer":119}],634:[function(require,module,exports){ (function (Buffer){ 'use strict'; @@ -74292,7 +80913,8 @@ var FilterAsync = module.exports = function(bitmapInfo) { util.inherits(FilterAsync, ChunkStream); }).call(this,require("buffer").Buffer) -},{"./chunkstream":337,"./filter-parse":343,"buffer":116,"util":403}],342:[function(require,module,exports){ + +},{"./chunkstream":630,"./filter-parse":636,"buffer":119,"util":698}],635:[function(require,module,exports){ (function (Buffer){ 'use strict'; @@ -74319,7 +80941,8 @@ exports.process = function(inBuffer, bitmapInfo) { return Buffer.concat(outBuffers); }; }).call(this,require("buffer").Buffer) -},{"./filter-parse":343,"./sync-reader":355,"buffer":116}],343:[function(require,module,exports){ + +},{"./filter-parse":636,"./sync-reader":648,"buffer":119}],636:[function(require,module,exports){ (function (Buffer){ 'use strict'; @@ -74494,7 +81117,8 @@ Filter.prototype._reverseFilterLine = function(rawData) { }; }).call(this,require("buffer").Buffer) -},{"./interlace":345,"./paeth-predictor":349,"buffer":116}],344:[function(require,module,exports){ + +},{"./interlace":638,"./paeth-predictor":642,"buffer":119}],637:[function(require,module,exports){ (function (Buffer){ 'use strict'; @@ -74587,7 +81211,8 @@ module.exports = function(indata, imageData) { }; }).call(this,require("buffer").Buffer) -},{"buffer":116}],345:[function(require,module,exports){ + +},{"buffer":119}],638:[function(require,module,exports){ 'use strict'; // Adam 7 @@ -74675,7 +81300,7 @@ exports.getInterlaceIterator = function(width) { return (outerX * 4) + (outerY * width * 4); }; }; -},{}],346:[function(require,module,exports){ +},{}],639:[function(require,module,exports){ (function (Buffer){ 'use strict'; @@ -74724,7 +81349,8 @@ PackerAsync.prototype.pack = function(data, width, height, gamma) { }; }).call(this,require("buffer").Buffer) -},{"./constants":338,"./packer":348,"buffer":116,"stream":393,"util":403}],347:[function(require,module,exports){ + +},{"./constants":631,"./packer":641,"buffer":119,"stream":688,"util":698}],640:[function(require,module,exports){ (function (Buffer){ 'use strict'; @@ -74773,7 +81399,8 @@ module.exports = function(metaData, opt) { }; }).call(this,require("buffer").Buffer) -},{"./constants":338,"./packer":348,"buffer":116,"zlib":112}],348:[function(require,module,exports){ + +},{"./constants":631,"./packer":641,"buffer":119,"zlib":114}],641:[function(require,module,exports){ (function (Buffer){ 'use strict'; @@ -74868,7 +81495,8 @@ Packer.prototype.packIEND = function() { return this._packChunk(constants.TYPE_IEND, null); }; }).call(this,require("buffer").Buffer) -},{"./bitpacker":336,"./constants":338,"./crc":339,"./filter-pack":340,"buffer":116,"zlib":112}],349:[function(require,module,exports){ + +},{"./bitpacker":629,"./constants":631,"./crc":632,"./filter-pack":633,"buffer":119,"zlib":114}],642:[function(require,module,exports){ 'use strict'; module.exports = function paethPredictor(left, above, upLeft) { @@ -74886,7 +81514,7 @@ module.exports = function paethPredictor(left, above, upLeft) { } return upLeft; }; -},{}],350:[function(require,module,exports){ +},{}],643:[function(require,module,exports){ 'use strict'; var util = require('util'); @@ -74998,7 +81626,7 @@ ParserAsync.prototype._complete = function(filteredData) { this.emit('parsed', normalisedBitmapData); }; -},{"./bitmapper":335,"./chunkstream":337,"./filter-parse-async":341,"./format-normaliser":344,"./parser":352,"util":403,"zlib":112}],351:[function(require,module,exports){ +},{"./bitmapper":628,"./chunkstream":630,"./filter-parse-async":634,"./format-normaliser":637,"./parser":645,"util":698,"zlib":114}],644:[function(require,module,exports){ (function (Buffer){ 'use strict'; @@ -75090,7 +81718,8 @@ module.exports = function(buffer, options) { }; }).call(this,require("buffer").Buffer) -},{"./bitmapper":335,"./filter-parse-sync":342,"./format-normaliser":344,"./parser":352,"./sync-reader":355,"buffer":116,"zlib":112}],352:[function(require,module,exports){ + +},{"./bitmapper":628,"./filter-parse-sync":635,"./format-normaliser":637,"./parser":645,"./sync-reader":648,"buffer":119,"zlib":114}],645:[function(require,module,exports){ (function (Buffer){ 'use strict'; @@ -75384,7 +82013,8 @@ Parser.prototype._parseIEND = function(data) { }; }).call(this,require("buffer").Buffer) -},{"./constants":338,"./crc":339,"buffer":116}],353:[function(require,module,exports){ + +},{"./constants":631,"./crc":632,"buffer":119}],646:[function(require,module,exports){ 'use strict'; @@ -75402,7 +82032,7 @@ exports.write = function(png) { return pack(png); }; -},{"./packer-sync":347,"./parser-sync":351}],354:[function(require,module,exports){ +},{"./packer-sync":640,"./parser-sync":644}],647:[function(require,module,exports){ (function (process,Buffer){ 'use strict'; @@ -75579,7 +82209,8 @@ PNG.prototype.adjustGamma = function() { }; }).call(this,require('_process'),require("buffer").Buffer) -},{"./packer-async":346,"./parser-async":350,"./png-sync":353,"_process":357,"buffer":116,"stream":393,"util":403}],355:[function(require,module,exports){ + +},{"./packer-async":639,"./parser-async":643,"./png-sync":646,"_process":650,"buffer":119,"stream":688,"util":698}],648:[function(require,module,exports){ 'use strict'; var SyncReader = module.exports = function(buffer) { @@ -75632,7 +82263,7 @@ SyncReader.prototype.process = function() { }; -},{}],356:[function(require,module,exports){ +},{}],649:[function(require,module,exports){ (function (process){ 'use strict'; @@ -75679,7 +82310,8 @@ function nextTick(fn, arg1, arg2, arg3) { } }).call(this,require('_process')) -},{"_process":357}],357:[function(require,module,exports){ + +},{"_process":650}],650:[function(require,module,exports){ // shim for using process in browser var process = module.exports = {}; @@ -75861,7 +82493,7 @@ process.chdir = function (dir) { }; process.umask = function() { return 0; }; -},{}],358:[function(require,module,exports){ +},{}],651:[function(require,module,exports){ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : @@ -81780,7 +88412,7 @@ process.umask = function() { return 0; }; }))); -},{}],359:[function(require,module,exports){ +},{}],652:[function(require,module,exports){ exports.publicEncrypt = require('./publicEncrypt'); exports.privateDecrypt = require('./privateDecrypt'); @@ -81791,7 +88423,7 @@ exports.privateEncrypt = function privateEncrypt(key, buf) { exports.publicDecrypt = function publicDecrypt(key, buf) { return exports.privateDecrypt(key, buf, true); }; -},{"./privateDecrypt":361,"./publicEncrypt":362}],360:[function(require,module,exports){ +},{"./privateDecrypt":654,"./publicEncrypt":655}],653:[function(require,module,exports){ (function (Buffer){ var createHash = require('create-hash'); module.exports = function (seed, len) { @@ -81810,7 +88442,8 @@ function i2ops(c) { return out; } }).call(this,require("buffer").Buffer) -},{"buffer":116,"create-hash":152}],361:[function(require,module,exports){ + +},{"buffer":119,"create-hash":449}],654:[function(require,module,exports){ (function (Buffer){ var parseKeys = require('parse-asn1'); var mgf = require('./mgf'); @@ -81921,7 +88554,8 @@ function compare(a, b){ return dif; } }).call(this,require("buffer").Buffer) -},{"./mgf":360,"./withPublic":363,"./xor":364,"bn.js":84,"browserify-rsa":105,"buffer":116,"create-hash":152,"parse-asn1":331}],362:[function(require,module,exports){ + +},{"./mgf":653,"./withPublic":656,"./xor":657,"bn.js":85,"browserify-rsa":106,"buffer":119,"create-hash":449,"parse-asn1":624}],655:[function(require,module,exports){ (function (Buffer){ var parseKeys = require('parse-asn1'); var randomBytes = require('randombytes'); @@ -82019,7 +88653,8 @@ function nonZero(len, crypto) { return out; } }).call(this,require("buffer").Buffer) -},{"./mgf":360,"./withPublic":363,"./xor":364,"bn.js":84,"browserify-rsa":105,"buffer":116,"create-hash":152,"parse-asn1":331,"randombytes":369}],363:[function(require,module,exports){ + +},{"./mgf":653,"./withPublic":656,"./xor":657,"bn.js":85,"browserify-rsa":106,"buffer":119,"create-hash":449,"parse-asn1":624,"randombytes":662}],656:[function(require,module,exports){ (function (Buffer){ var bn = require('bn.js'); function withPublic(paddedMsg, key) { @@ -82032,7 +88667,8 @@ function withPublic(paddedMsg, key) { module.exports = withPublic; }).call(this,require("buffer").Buffer) -},{"bn.js":84,"buffer":116}],364:[function(require,module,exports){ + +},{"bn.js":85,"buffer":119}],657:[function(require,module,exports){ module.exports = function xor(a, b) { var len = a.length; var i = -1; @@ -82041,7 +88677,7 @@ module.exports = function xor(a, b) { } return a }; -},{}],365:[function(require,module,exports){ +},{}],658:[function(require,module,exports){ (function (Buffer){ // Pure Image uses existing libraries for font parsing, jpeg/png encode/decode // and borrowed code for transform management and unsigned integer manipulation @@ -82771,7 +89407,8 @@ var cache = { } }).call(this,require("buffer").Buffer) -},{"./transform":366,"./uint32":367,"buffer":116,"fs":113,"jpeg-js":270,"opentype.js":290,"pngjs":354}],366:[function(require,module,exports){ + +},{"./transform":659,"./uint32":660,"buffer":119,"fs":115,"jpeg-js":565,"opentype.js":583,"pngjs":647}],659:[function(require,module,exports){ //transform code from https://github.com/kcmoot/transform-tracker/blob/master/transform-tracker.js @@ -82956,7 +89593,7 @@ function Transform(context) { exports.Transform = Transform; -},{}],367:[function(require,module,exports){ +},{}],660:[function(require,module,exports){ //from https://github.com/fxa/uint32.js @@ -83211,13 +89848,13 @@ exports.Transform = Transform; }) ((typeof module !== 'undefined') ? module.exports = {} : window.uint32 = {}); -},{}],368:[function(require,module,exports){ +},{}],661:[function(require,module,exports){ (function (process){ // vim:ts=4:sts=4:sw=4: /*! * - * Copyright 2009-2012 Kris Kowal under the terms of the MIT - * license found at http://github.com/kriskowal/q/raw/master/LICENSE + * Copyright 2009-2017 Kris Kowal under the terms of the MIT + * license found at https://github.com/kriskowal/q/blob/v1/LICENSE * * With parts by Tyler Close * Copyright 2007-2009 Tyler Close under the terms of the MIT X license found @@ -83405,7 +90042,7 @@ var nextTick =(function () { // `setTimeout`. In this case `setImmediate` is preferred because // it is faster. Browserify's `process.toString()` yields // "[object Object]", while in a real Node environment - // `process.nextTick()` yields "[object process]". + // `process.toString()` yields "[object process]". isNodeJS = true; requestTick = function () { @@ -83542,6 +90179,11 @@ var object_create = Object.create || function (prototype) { return new Type(); }; +var object_defineProperty = Object.defineProperty || function (obj, prop, descriptor) { + obj[prop] = descriptor.value; + return obj; +}; + var object_hasOwnProperty = uncurryThis(Object.prototype.hasOwnProperty); var object_keys = Object.keys || function (object) { @@ -83592,19 +90234,20 @@ function makeStackTraceLong(error, promise) { promise.stack && typeof error === "object" && error !== null && - error.stack && - error.stack.indexOf(STACK_JUMP_SEPARATOR) === -1 + error.stack ) { var stacks = []; for (var p = promise; !!p; p = p.source) { - if (p.stack) { + if (p.stack && (!error.__minimumStackCounter__ || error.__minimumStackCounter__ > p.stackCounter)) { + object_defineProperty(error, "__minimumStackCounter__", {value: p.stackCounter, configurable: true}); stacks.unshift(p.stack); } } stacks.unshift(error.stack); var concatedStacks = stacks.join("\n" + STACK_JUMP_SEPARATOR + "\n"); - error.stack = filterStackString(concatedStacks); + var stack = filterStackString(concatedStacks); + object_defineProperty(error, "stack", {value: stack, configurable: true}); } } @@ -83731,6 +90374,14 @@ Q.nextTick = nextTick; */ Q.longStackSupport = false; +/** + * The counter is used to determine the stopping point for building + * long stack traces. In makeStackTraceLong we walk backwards through + * the linked list of promises, only stacks which were created before + * the rejection are concatenated. + */ +var longStackCounter = 1; + // enable long stacks if Q_DEBUG is set if (typeof process === "object" && process && process.env && process.env.Q_DEBUG) { Q.longStackSupport = true; @@ -83803,6 +90454,7 @@ function defer() { // At the same time, cut off the first line; it's always just // "[object Promise]\n", as per the `toString`. promise.stack = e.stack.substring(e.stack.indexOf("\n") + 1); + promise.stackCounter = longStackCounter++; } } @@ -83812,7 +90464,12 @@ function defer() { function become(newPromise) { resolvedPromise = newPromise; - promise.source = newPromise; + + if (Q.longStackSupport && hasStacks) { + // Only hold a reference to the new promise if long stacks + // are enabled to reduce memory usage + promise.source = newPromise; + } array_reduce(messages, function (undefined, message) { Q.nextTick(function () { @@ -83940,7 +90597,7 @@ Promise.prototype.join = function (that) { // TODO: "===" should be Object.is or equiv return x; } else { - throw new Error("Can't join: not the same: " + x + " " + y); + throw new Error("Q can't join: not the same: " + x + " " + y); } }); }; @@ -84837,13 +91494,12 @@ function any(promises) { function onFulfilled(result) { deferred.resolve(result); } - function onRejected() { + function onRejected(err) { pendingCount--; if (pendingCount === 0) { - deferred.reject(new Error( - "Can't get fulfillment value from any promise, all " + - "promises were rejected." - )); + err.message = ("Q can't get fulfillment value from any promise, all " + + "promises were rejected. Last error message: " + err.message); + deferred.reject(err); } } function onProgress(progress) { @@ -84967,6 +91623,9 @@ Q["finally"] = function (object, callback) { Promise.prototype.fin = // XXX legacy Promise.prototype["finally"] = function (callback) { + if (!callback || typeof callback.apply !== "function") { + throw new Error("Q can't apply finally callback"); + } callback = Q(callback); return this.then(function (value) { return callback.fcall().then(function () { @@ -85130,6 +91789,9 @@ Promise.prototype.nfcall = function (/*...args*/) { */ Q.nfbind = Q.denodeify = function (callback /*...args*/) { + if (callback === undefined) { + throw new Error("Q can't wrap an undefined function"); + } var baseArgs = array_slice(arguments, 1); return function () { var nodeArgs = baseArgs.concat(array_slice(arguments)); @@ -85263,7 +91925,8 @@ return Q; }); }).call(this,require('_process')) -},{"_process":357}],369:[function(require,module,exports){ + +},{"_process":650}],662:[function(require,module,exports){ (function (process,global,Buffer){ 'use strict' @@ -85303,10 +91966,11 @@ function randomBytes (size, cb) { } }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer) -},{"_process":357,"buffer":116}],370:[function(require,module,exports){ -module.exports = require("./lib/_stream_duplex.js") -},{"./lib/_stream_duplex.js":371}],371:[function(require,module,exports){ +},{"_process":650,"buffer":119}],663:[function(require,module,exports){ +module.exports = require('./lib/_stream_duplex.js'); + +},{"./lib/_stream_duplex.js":664}],664:[function(require,module,exports){ // a duplex stream is just a stream that is both readable and writable. // Since JS doesn't have multiple prototypal inheritance, this class // prototypally inherits from Readable, and then parasitically from @@ -85382,7 +92046,7 @@ function forEach(xs, f) { f(xs[i], i); } } -},{"./_stream_readable":373,"./_stream_writable":375,"core-util-is":150,"inherits":263,"process-nextick-args":356}],372:[function(require,module,exports){ +},{"./_stream_readable":666,"./_stream_writable":668,"core-util-is":447,"inherits":559,"process-nextick-args":649}],665:[function(require,module,exports){ // a passthrough stream. // basically just the most minimal sort of Transform stream. // Every written chunk gets output as-is. @@ -85409,7 +92073,7 @@ function PassThrough(options) { PassThrough.prototype._transform = function (chunk, encoding, cb) { cb(null, chunk); }; -},{"./_stream_transform":374,"core-util-is":150,"inherits":263}],373:[function(require,module,exports){ +},{"./_stream_transform":667,"core-util-is":447,"inherits":559}],666:[function(require,module,exports){ (function (process){ 'use strict'; @@ -85438,14 +92102,7 @@ var EElistenerCount = function (emitter, type) { /**/ /**/ -var Stream; -(function () { - try { - Stream = require('st' + 'ream'); - } catch (_) {} finally { - if (!Stream) Stream = require('events').EventEmitter; - } -})(); +var Stream = require('./internal/streams/stream'); /**/ var Buffer = require('buffer').Buffer; @@ -85473,6 +92130,8 @@ var StringDecoder; util.inherits(Readable, Stream); +var kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume']; + function prependListener(emitter, event, fn) { // Sadly this is not cacheable as some libraries bundle their own // event emitter implementation with them. @@ -86197,10 +92856,9 @@ Readable.prototype.wrap = function (stream) { } // proxy certain important events. - var events = ['error', 'close', 'destroy', 'pause', 'resume']; - forEach(events, function (ev) { - stream.on(ev, self.emit.bind(self, ev)); - }); + for (var n = 0; n < kProxyEvents.length; n++) { + stream.on(kProxyEvents[n], self.emit.bind(self, kProxyEvents[n])); + } // when we try to consume some more bytes, simply unpause the // underlying stream. @@ -86353,7 +93011,8 @@ function indexOf(xs, x) { return -1; } }).call(this,require('_process')) -},{"./_stream_duplex":371,"./internal/streams/BufferList":376,"_process":357,"buffer":116,"buffer-shims":114,"core-util-is":150,"events":197,"inherits":263,"isarray":265,"process-nextick-args":356,"string_decoder/":395,"util":86}],374:[function(require,module,exports){ + +},{"./_stream_duplex":664,"./internal/streams/BufferList":669,"./internal/streams/stream":670,"_process":650,"buffer":119,"buffer-shims":117,"core-util-is":447,"events":494,"inherits":559,"isarray":561,"process-nextick-args":649,"string_decoder/":690,"util":87}],667:[function(require,module,exports){ // a transform stream is a readable/writable stream where you do // something with the data. Sometimes it's called a "filter", // but that's not a great name for it, since that implies a thing where @@ -86536,7 +93195,7 @@ function done(stream, er, data) { return stream.push(null); } -},{"./_stream_duplex":371,"core-util-is":150,"inherits":263}],375:[function(require,module,exports){ +},{"./_stream_duplex":664,"core-util-is":447,"inherits":559}],668:[function(require,module,exports){ (function (process){ // A bit simpler than readable streams. // Implement an async ._write(chunk, encoding, cb), and it'll handle all @@ -86546,14 +93205,6 @@ function done(stream, er, data) { module.exports = Writable; -// It seems a linked list but it is not -// there will be only 2 of these for each stream -function CorkedRequest(state) { - this.next = null; - this.entry = null; - this.finish = onCorkedFinish.bind(undefined, this, state); -} - /**/ var processNextTick = require('process-nextick-args'); /**/ @@ -86580,14 +93231,7 @@ var internalUtil = { /**/ /**/ -var Stream; -(function () { - try { - Stream = require('st' + 'ream'); - } catch (_) {} finally { - if (!Stream) Stream = require('events').EventEmitter; - } -})(); +var Stream = require('./internal/streams/stream'); /**/ var Buffer = require('buffer').Buffer; @@ -87097,9 +93741,9 @@ function CorkedRequest(state) { } }; } - }).call(this,require('_process')) -},{"./_stream_duplex":371,"_process":357,"buffer":116,"buffer-shims":114,"core-util-is":150,"events":197,"inherits":263,"process-nextick-args":356,"util-deprecate":400}],376:[function(require,module,exports){ + +},{"./_stream_duplex":664,"./internal/streams/stream":670,"_process":650,"buffer":119,"buffer-shims":117,"core-util-is":447,"inherits":559,"process-nextick-args":649,"util-deprecate":695}],669:[function(require,module,exports){ 'use strict'; var Buffer = require('buffer').Buffer; @@ -87164,36 +93808,756 @@ BufferList.prototype.concat = function (n) { } return ret; }; -},{"buffer":116,"buffer-shims":114}],377:[function(require,module,exports){ -module.exports = require("./lib/_stream_passthrough.js") +},{"buffer":119,"buffer-shims":117}],670:[function(require,module,exports){ +module.exports = require('events').EventEmitter; -},{"./lib/_stream_passthrough.js":372}],378:[function(require,module,exports){ -(function (process){ -var Stream = (function (){ - try { - return require('st' + 'ream'); // hack to fix a circular dependency issue when used with browserify - } catch(_){} -}()); +},{"events":494}],671:[function(require,module,exports){ +module.exports = require('./readable').PassThrough + +},{"./readable":672}],672:[function(require,module,exports){ exports = module.exports = require('./lib/_stream_readable.js'); -exports.Stream = Stream || exports; +exports.Stream = exports; exports.Readable = exports; exports.Writable = require('./lib/_stream_writable.js'); exports.Duplex = require('./lib/_stream_duplex.js'); exports.Transform = require('./lib/_stream_transform.js'); exports.PassThrough = require('./lib/_stream_passthrough.js'); -if (!process.browser && process.env.READABLE_STREAM === 'disable' && Stream) { - module.exports = Stream; -} +},{"./lib/_stream_duplex.js":664,"./lib/_stream_passthrough.js":665,"./lib/_stream_readable.js":666,"./lib/_stream_transform.js":667,"./lib/_stream_writable.js":668}],673:[function(require,module,exports){ +module.exports = require('./readable').Transform -}).call(this,require('_process')) -},{"./lib/_stream_duplex.js":371,"./lib/_stream_passthrough.js":372,"./lib/_stream_readable.js":373,"./lib/_stream_transform.js":374,"./lib/_stream_writable.js":375,"_process":357}],379:[function(require,module,exports){ -module.exports = require("./lib/_stream_transform.js") +},{"./readable":672}],674:[function(require,module,exports){ +module.exports = require('./lib/_stream_writable.js'); + +},{"./lib/_stream_writable.js":668}],675:[function(require,module,exports){ +(function (process,global){ +/** + * Copyright (c) 2014, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * https://raw.github.com/facebook/regenerator/master/LICENSE file. An + * additional grant of patent rights can be found in the PATENTS file in + * the same directory. + */ + +!(function(global) { + "use strict"; + + var Op = Object.prototype; + var hasOwn = Op.hasOwnProperty; + var undefined; // More compressible than void 0. + var $Symbol = typeof Symbol === "function" ? Symbol : {}; + var iteratorSymbol = $Symbol.iterator || "@@iterator"; + var toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; + + var inModule = typeof module === "object"; + var runtime = global.regeneratorRuntime; + if (runtime) { + if (inModule) { + // If regeneratorRuntime is defined globally and we're in a module, + // make the exports object identical to regeneratorRuntime. + module.exports = runtime; + } + // Don't bother evaluating the rest of this file if the runtime was + // already defined globally. + return; + } + + // Define the runtime globally (as expected by generated code) as either + // module.exports (if we're in a module) or a new, empty object. + runtime = global.regeneratorRuntime = inModule ? module.exports : {}; + + function wrap(innerFn, outerFn, self, tryLocsList) { + // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator. + var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator; + var generator = Object.create(protoGenerator.prototype); + var context = new Context(tryLocsList || []); + + // The ._invoke method unifies the implementations of the .next, + // .throw, and .return methods. + generator._invoke = makeInvokeMethod(innerFn, self, context); + + return generator; + } + runtime.wrap = wrap; + + // Try/catch helper to minimize deoptimizations. Returns a completion + // record like context.tryEntries[i].completion. This interface could + // have been (and was previously) designed to take a closure to be + // invoked without arguments, but in all the cases we care about we + // already have an existing method we want to call, so there's no need + // to create a new function object. We can even get away with assuming + // the method takes exactly one argument, since that happens to be true + // in every case, so we don't have to touch the arguments object. The + // only additional allocation required is the completion record, which + // has a stable shape and so hopefully should be cheap to allocate. + function tryCatch(fn, obj, arg) { + try { + return { type: "normal", arg: fn.call(obj, arg) }; + } catch (err) { + return { type: "throw", arg: err }; + } + } + + var GenStateSuspendedStart = "suspendedStart"; + var GenStateSuspendedYield = "suspendedYield"; + var GenStateExecuting = "executing"; + var GenStateCompleted = "completed"; + + // Returning this object from the innerFn has the same effect as + // breaking out of the dispatch switch statement. + var ContinueSentinel = {}; + + // Dummy constructor functions that we use as the .constructor and + // .constructor.prototype properties for functions that return Generator + // objects. For full spec compliance, you may wish to configure your + // minifier not to mangle the names of these two functions. + function Generator() {} + function GeneratorFunction() {} + function GeneratorFunctionPrototype() {} + + // This is a polyfill for %IteratorPrototype% for environments that + // don't natively support it. + var IteratorPrototype = {}; + IteratorPrototype[iteratorSymbol] = function () { + return this; + }; + + var getProto = Object.getPrototypeOf; + var NativeIteratorPrototype = getProto && getProto(getProto(values([]))); + if (NativeIteratorPrototype && + NativeIteratorPrototype !== Op && + hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) { + // This environment has a native %IteratorPrototype%; use it instead + // of the polyfill. + IteratorPrototype = NativeIteratorPrototype; + } + + var Gp = GeneratorFunctionPrototype.prototype = + Generator.prototype = Object.create(IteratorPrototype); + GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype; + GeneratorFunctionPrototype.constructor = GeneratorFunction; + GeneratorFunctionPrototype[toStringTagSymbol] = + GeneratorFunction.displayName = "GeneratorFunction"; + + // Helper for defining the .next, .throw, and .return methods of the + // Iterator interface in terms of a single ._invoke method. + function defineIteratorMethods(prototype) { + ["next", "throw", "return"].forEach(function(method) { + prototype[method] = function(arg) { + return this._invoke(method, arg); + }; + }); + } + + runtime.isGeneratorFunction = function(genFun) { + var ctor = typeof genFun === "function" && genFun.constructor; + return ctor + ? ctor === GeneratorFunction || + // For the native GeneratorFunction constructor, the best we can + // do is to check its .name property. + (ctor.displayName || ctor.name) === "GeneratorFunction" + : false; + }; + + runtime.mark = function(genFun) { + if (Object.setPrototypeOf) { + Object.setPrototypeOf(genFun, GeneratorFunctionPrototype); + } else { + genFun.__proto__ = GeneratorFunctionPrototype; + if (!(toStringTagSymbol in genFun)) { + genFun[toStringTagSymbol] = "GeneratorFunction"; + } + } + genFun.prototype = Object.create(Gp); + return genFun; + }; + + // Within the body of any async function, `await x` is transformed to + // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test + // `hasOwn.call(value, "__await")` to determine if the yielded value is + // meant to be awaited. + runtime.awrap = function(arg) { + return { __await: arg }; + }; + + function AsyncIterator(generator) { + function invoke(method, arg, resolve, reject) { + var record = tryCatch(generator[method], generator, arg); + if (record.type === "throw") { + reject(record.arg); + } else { + var result = record.arg; + var value = result.value; + if (value && + typeof value === "object" && + hasOwn.call(value, "__await")) { + return Promise.resolve(value.__await).then(function(value) { + invoke("next", value, resolve, reject); + }, function(err) { + invoke("throw", err, resolve, reject); + }); + } + + return Promise.resolve(value).then(function(unwrapped) { + // When a yielded Promise is resolved, its final value becomes + // the .value of the Promise<{value,done}> result for the + // current iteration. If the Promise is rejected, however, the + // result for this iteration will be rejected with the same + // reason. Note that rejections of yielded Promises are not + // thrown back into the generator function, as is the case + // when an awaited Promise is rejected. This difference in + // behavior between yield and await is important, because it + // allows the consumer to decide what to do with the yielded + // rejection (swallow it and continue, manually .throw it back + // into the generator, abandon iteration, whatever). With + // await, by contrast, there is no opportunity to examine the + // rejection reason outside the generator function, so the + // only option is to throw it from the await expression, and + // let the generator function handle the exception. + result.value = unwrapped; + resolve(result); + }, reject); + } + } + + if (typeof process === "object" && process.domain) { + invoke = process.domain.bind(invoke); + } + + var previousPromise; + + function enqueue(method, arg) { + function callInvokeWithMethodAndArg() { + return new Promise(function(resolve, reject) { + invoke(method, arg, resolve, reject); + }); + } + + return previousPromise = + // If enqueue has been called before, then we want to wait until + // all previous Promises have been resolved before calling invoke, + // so that results are always delivered in the correct order. If + // enqueue has not been called before, then it is important to + // call invoke immediately, without waiting on a callback to fire, + // so that the async generator function has the opportunity to do + // any necessary setup in a predictable way. This predictability + // is why the Promise constructor synchronously invokes its + // executor callback, and why async functions synchronously + // execute code before the first await. Since we implement simple + // async functions in terms of async generators, it is especially + // important to get this right, even though it requires care. + previousPromise ? previousPromise.then( + callInvokeWithMethodAndArg, + // Avoid propagating failures to Promises returned by later + // invocations of the iterator. + callInvokeWithMethodAndArg + ) : callInvokeWithMethodAndArg(); + } + + // Define the unified helper method that is used to implement .next, + // .throw, and .return (see defineIteratorMethods). + this._invoke = enqueue; + } + + defineIteratorMethods(AsyncIterator.prototype); + runtime.AsyncIterator = AsyncIterator; + + // Note that simple async functions are implemented on top of + // AsyncIterator objects; they just return a Promise for the value of + // the final result produced by the iterator. + runtime.async = function(innerFn, outerFn, self, tryLocsList) { + var iter = new AsyncIterator( + wrap(innerFn, outerFn, self, tryLocsList) + ); + + return runtime.isGeneratorFunction(outerFn) + ? iter // If outerFn is a generator, return the full iterator. + : iter.next().then(function(result) { + return result.done ? result.value : iter.next(); + }); + }; + + function makeInvokeMethod(innerFn, self, context) { + var state = GenStateSuspendedStart; + + return function invoke(method, arg) { + if (state === GenStateExecuting) { + throw new Error("Generator is already running"); + } + + if (state === GenStateCompleted) { + if (method === "throw") { + throw arg; + } + + // Be forgiving, per 25.3.3.3.3 of the spec: + // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume + return doneResult(); + } + + context.method = method; + context.arg = arg; + + while (true) { + var delegate = context.delegate; + if (delegate) { + var delegateResult = maybeInvokeDelegate(delegate, context); + if (delegateResult) { + if (delegateResult === ContinueSentinel) continue; + return delegateResult; + } + } + + if (context.method === "next") { + // Setting context._sent for legacy support of Babel's + // function.sent implementation. + context.sent = context._sent = context.arg; + + } else if (context.method === "throw") { + if (state === GenStateSuspendedStart) { + state = GenStateCompleted; + throw context.arg; + } + + context.dispatchException(context.arg); + + } else if (context.method === "return") { + context.abrupt("return", context.arg); + } + + state = GenStateExecuting; + + var record = tryCatch(innerFn, self, context); + if (record.type === "normal") { + // If an exception is thrown from innerFn, we leave state === + // GenStateExecuting and loop back for another invocation. + state = context.done + ? GenStateCompleted + : GenStateSuspendedYield; + + if (record.arg === ContinueSentinel) { + continue; + } + + return { + value: record.arg, + done: context.done + }; + + } else if (record.type === "throw") { + state = GenStateCompleted; + // Dispatch the exception by looping back around to the + // context.dispatchException(context.arg) call above. + context.method = "throw"; + context.arg = record.arg; + } + } + }; + } + + // Call delegate.iterator[context.method](context.arg) and handle the + // result, either by returning a { value, done } result from the + // delegate iterator, or by modifying context.method and context.arg, + // setting context.delegate to null, and returning the ContinueSentinel. + function maybeInvokeDelegate(delegate, context) { + var method = delegate.iterator[context.method]; + if (method === undefined) { + // A .throw or .return when the delegate iterator has no .throw + // method always terminates the yield* loop. + context.delegate = null; + + if (context.method === "throw") { + if (delegate.iterator.return) { + // If the delegate iterator has a return method, give it a + // chance to clean up. + context.method = "return"; + context.arg = undefined; + maybeInvokeDelegate(delegate, context); + + if (context.method === "throw") { + // If maybeInvokeDelegate(context) changed context.method from + // "return" to "throw", let that override the TypeError below. + return ContinueSentinel; + } + } + + context.method = "throw"; + context.arg = new TypeError( + "The iterator does not provide a 'throw' method"); + } + + return ContinueSentinel; + } + + var record = tryCatch(method, delegate.iterator, context.arg); + + if (record.type === "throw") { + context.method = "throw"; + context.arg = record.arg; + context.delegate = null; + return ContinueSentinel; + } + + var info = record.arg; + + if (! info) { + context.method = "throw"; + context.arg = new TypeError("iterator result is not an object"); + context.delegate = null; + return ContinueSentinel; + } + + if (info.done) { + // Assign the result of the finished delegate to the temporary + // variable specified by delegate.resultName (see delegateYield). + context[delegate.resultName] = info.value; + + // Resume execution at the desired location (see delegateYield). + context.next = delegate.nextLoc; + + // If context.method was "throw" but the delegate handled the + // exception, let the outer generator proceed normally. If + // context.method was "next", forget context.arg since it has been + // "consumed" by the delegate iterator. If context.method was + // "return", allow the original .return call to continue in the + // outer generator. + if (context.method !== "return") { + context.method = "next"; + context.arg = undefined; + } + + } else { + // Re-yield the result returned by the delegate method. + return info; + } + + // The delegate iterator is finished, so forget it and continue with + // the outer generator. + context.delegate = null; + return ContinueSentinel; + } + + // Define Generator.prototype.{next,throw,return} in terms of the + // unified ._invoke helper method. + defineIteratorMethods(Gp); + + Gp[toStringTagSymbol] = "Generator"; + + Gp.toString = function() { + return "[object Generator]"; + }; + + function pushTryEntry(locs) { + var entry = { tryLoc: locs[0] }; -},{"./lib/_stream_transform.js":374}],380:[function(require,module,exports){ -module.exports = require("./lib/_stream_writable.js") + if (1 in locs) { + entry.catchLoc = locs[1]; + } + + if (2 in locs) { + entry.finallyLoc = locs[2]; + entry.afterLoc = locs[3]; + } + + this.tryEntries.push(entry); + } + + function resetTryEntry(entry) { + var record = entry.completion || {}; + record.type = "normal"; + delete record.arg; + entry.completion = record; + } + + function Context(tryLocsList) { + // The root entry object (effectively a try statement without a catch + // or a finally block) gives us a place to store values thrown from + // locations where there is no enclosing try statement. + this.tryEntries = [{ tryLoc: "root" }]; + tryLocsList.forEach(pushTryEntry, this); + this.reset(true); + } + + runtime.keys = function(object) { + var keys = []; + for (var key in object) { + keys.push(key); + } + keys.reverse(); + + // Rather than returning an object with a next method, we keep + // things simple and return the next function itself. + return function next() { + while (keys.length) { + var key = keys.pop(); + if (key in object) { + next.value = key; + next.done = false; + return next; + } + } + + // To avoid creating an additional object, we just hang the .value + // and .done properties off the next function object itself. This + // also ensures that the minifier will not anonymize the function. + next.done = true; + return next; + }; + }; + + function values(iterable) { + if (iterable) { + var iteratorMethod = iterable[iteratorSymbol]; + if (iteratorMethod) { + return iteratorMethod.call(iterable); + } + + if (typeof iterable.next === "function") { + return iterable; + } + + if (!isNaN(iterable.length)) { + var i = -1, next = function next() { + while (++i < iterable.length) { + if (hasOwn.call(iterable, i)) { + next.value = iterable[i]; + next.done = false; + return next; + } + } + + next.value = undefined; + next.done = true; + + return next; + }; + + return next.next = next; + } + } + + // Return an iterator with no values. + return { next: doneResult }; + } + runtime.values = values; + + function doneResult() { + return { value: undefined, done: true }; + } + + Context.prototype = { + constructor: Context, + + reset: function(skipTempReset) { + this.prev = 0; + this.next = 0; + // Resetting context._sent for legacy support of Babel's + // function.sent implementation. + this.sent = this._sent = undefined; + this.done = false; + this.delegate = null; + + this.method = "next"; + this.arg = undefined; + + this.tryEntries.forEach(resetTryEntry); + + if (!skipTempReset) { + for (var name in this) { + // Not sure about the optimal order of these conditions: + if (name.charAt(0) === "t" && + hasOwn.call(this, name) && + !isNaN(+name.slice(1))) { + this[name] = undefined; + } + } + } + }, + + stop: function() { + this.done = true; + + var rootEntry = this.tryEntries[0]; + var rootRecord = rootEntry.completion; + if (rootRecord.type === "throw") { + throw rootRecord.arg; + } + + return this.rval; + }, + + dispatchException: function(exception) { + if (this.done) { + throw exception; + } + + var context = this; + function handle(loc, caught) { + record.type = "throw"; + record.arg = exception; + context.next = loc; + + if (caught) { + // If the dispatched exception was caught by a catch block, + // then let that catch block handle the exception normally. + context.method = "next"; + context.arg = undefined; + } + + return !! caught; + } + + for (var i = this.tryEntries.length - 1; i >= 0; --i) { + var entry = this.tryEntries[i]; + var record = entry.completion; + + if (entry.tryLoc === "root") { + // Exception thrown outside of any try block that could handle + // it, so set the completion value of the entire function to + // throw the exception. + return handle("end"); + } -},{"./lib/_stream_writable.js":375}],381:[function(require,module,exports){ + if (entry.tryLoc <= this.prev) { + var hasCatch = hasOwn.call(entry, "catchLoc"); + var hasFinally = hasOwn.call(entry, "finallyLoc"); + + if (hasCatch && hasFinally) { + if (this.prev < entry.catchLoc) { + return handle(entry.catchLoc, true); + } else if (this.prev < entry.finallyLoc) { + return handle(entry.finallyLoc); + } + + } else if (hasCatch) { + if (this.prev < entry.catchLoc) { + return handle(entry.catchLoc, true); + } + + } else if (hasFinally) { + if (this.prev < entry.finallyLoc) { + return handle(entry.finallyLoc); + } + + } else { + throw new Error("try statement without catch or finally"); + } + } + } + }, + + abrupt: function(type, arg) { + for (var i = this.tryEntries.length - 1; i >= 0; --i) { + var entry = this.tryEntries[i]; + if (entry.tryLoc <= this.prev && + hasOwn.call(entry, "finallyLoc") && + this.prev < entry.finallyLoc) { + var finallyEntry = entry; + break; + } + } + + if (finallyEntry && + (type === "break" || + type === "continue") && + finallyEntry.tryLoc <= arg && + arg <= finallyEntry.finallyLoc) { + // Ignore the finally entry if control is not jumping to a + // location outside the try/catch block. + finallyEntry = null; + } + + var record = finallyEntry ? finallyEntry.completion : {}; + record.type = type; + record.arg = arg; + + if (finallyEntry) { + this.method = "next"; + this.next = finallyEntry.finallyLoc; + return ContinueSentinel; + } + + return this.complete(record); + }, + + complete: function(record, afterLoc) { + if (record.type === "throw") { + throw record.arg; + } + + if (record.type === "break" || + record.type === "continue") { + this.next = record.arg; + } else if (record.type === "return") { + this.rval = this.arg = record.arg; + this.method = "return"; + this.next = "end"; + } else if (record.type === "normal" && afterLoc) { + this.next = afterLoc; + } + + return ContinueSentinel; + }, + + finish: function(finallyLoc) { + for (var i = this.tryEntries.length - 1; i >= 0; --i) { + var entry = this.tryEntries[i]; + if (entry.finallyLoc === finallyLoc) { + this.complete(entry.completion, entry.afterLoc); + resetTryEntry(entry); + return ContinueSentinel; + } + } + }, + + "catch": function(tryLoc) { + for (var i = this.tryEntries.length - 1; i >= 0; --i) { + var entry = this.tryEntries[i]; + if (entry.tryLoc === tryLoc) { + var record = entry.completion; + if (record.type === "throw") { + var thrown = record.arg; + resetTryEntry(entry); + } + return thrown; + } + } + + // The context.catch method must only be called with a location + // argument that corresponds to a known catch block. + throw new Error("illegal catch attempt"); + }, + + delegateYield: function(iterable, resultName, nextLoc) { + this.delegate = { + iterator: values(iterable), + resultName: resultName, + nextLoc: nextLoc + }; + + if (this.method === "next") { + // Deliberately forget the last sent value so that we don't + // accidentally pass it on to the delegate. + this.arg = undefined; + } + + return ContinueSentinel; + } + }; +})( + // Among the various tricks for obtaining a reference to the global + // object, this seems to be the most reliable technique that does not + // use indirect eval (which violates Content Security Policy). + typeof global === "object" ? global : + typeof window === "object" ? window : + typeof self === "object" ? self : this +); + +}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) + +},{"_process":650}],676:[function(require,module,exports){ 'use strict'; var proj4 = require('proj4'); @@ -87330,7 +94694,7 @@ module.exports = { } }; -},{"proj4":358}],382:[function(require,module,exports){ +},{"proj4":651}],677:[function(require,module,exports){ (function (Buffer){ /* CryptoJS v3.1.2 @@ -87544,7 +94908,8 @@ function ripemd160 (message) { module.exports = ripemd160 }).call(this,require("buffer").Buffer) -},{"buffer":116}],383:[function(require,module,exports){ + +},{"buffer":119}],678:[function(require,module,exports){ (function (Buffer){ // prototype class for hash functions function Hash (blockSize, finalSize) { @@ -87617,7 +94982,8 @@ Hash.prototype._update = function () { module.exports = Hash }).call(this,require("buffer").Buffer) -},{"buffer":116}],384:[function(require,module,exports){ + +},{"buffer":119}],679:[function(require,module,exports){ var exports = module.exports = function SHA (algorithm) { algorithm = algorithm.toLowerCase() @@ -87634,7 +95000,7 @@ exports.sha256 = require('./sha256') exports.sha384 = require('./sha384') exports.sha512 = require('./sha512') -},{"./sha":385,"./sha1":386,"./sha224":387,"./sha256":388,"./sha384":389,"./sha512":390}],385:[function(require,module,exports){ +},{"./sha":680,"./sha1":681,"./sha224":682,"./sha256":683,"./sha384":684,"./sha512":685}],680:[function(require,module,exports){ (function (Buffer){ /* * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined @@ -87731,7 +95097,8 @@ Sha.prototype._hash = function () { module.exports = Sha }).call(this,require("buffer").Buffer) -},{"./hash":383,"buffer":116,"inherits":263}],386:[function(require,module,exports){ + +},{"./hash":678,"buffer":119,"inherits":559}],681:[function(require,module,exports){ (function (Buffer){ /* * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined @@ -87833,7 +95200,8 @@ Sha1.prototype._hash = function () { module.exports = Sha1 }).call(this,require("buffer").Buffer) -},{"./hash":383,"buffer":116,"inherits":263}],387:[function(require,module,exports){ + +},{"./hash":678,"buffer":119,"inherits":559}],682:[function(require,module,exports){ (function (Buffer){ /** * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined @@ -87889,7 +95257,8 @@ Sha224.prototype._hash = function () { module.exports = Sha224 }).call(this,require("buffer").Buffer) -},{"./hash":383,"./sha256":388,"buffer":116,"inherits":263}],388:[function(require,module,exports){ + +},{"./hash":678,"./sha256":683,"buffer":119,"inherits":559}],683:[function(require,module,exports){ (function (Buffer){ /** * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined @@ -88027,7 +95396,8 @@ Sha256.prototype._hash = function () { module.exports = Sha256 }).call(this,require("buffer").Buffer) -},{"./hash":383,"buffer":116,"inherits":263}],389:[function(require,module,exports){ + +},{"./hash":678,"buffer":119,"inherits":559}],684:[function(require,module,exports){ (function (Buffer){ var inherits = require('inherits') var SHA512 = require('./sha512') @@ -88087,7 +95457,8 @@ Sha384.prototype._hash = function () { module.exports = Sha384 }).call(this,require("buffer").Buffer) -},{"./hash":383,"./sha512":390,"buffer":116,"inherits":263}],390:[function(require,module,exports){ + +},{"./hash":678,"./sha512":685,"buffer":119,"inherits":559}],685:[function(require,module,exports){ (function (Buffer){ var inherits = require('inherits') var Hash = require('./hash') @@ -88350,7 +95721,8 @@ Sha512.prototype._hash = function () { module.exports = Sha512 }).call(this,require("buffer").Buffer) -},{"./hash":383,"buffer":116,"inherits":263}],391:[function(require,module,exports){ + +},{"./hash":678,"buffer":119,"inherits":559}],686:[function(require,module,exports){ (function (process,Buffer,__dirname){ // This prevents pollution of the global namespace var SQL = (function () { @@ -88860,7 +96232,8 @@ if (typeof module !== 'undefined') module.exports = SQL; if (typeof define === 'function') define(SQL); }).call(this,require('_process'),require("buffer").Buffer,"/node_modules/sql.js/js") -},{"_process":357,"buffer":116,"crypto":161,"fs":113,"path":332}],392:[function(require,module,exports){ + +},{"_process":650,"buffer":119,"crypto":458,"fs":115,"path":625}],687:[function(require,module,exports){ (function (process,Buffer,__dirname){ // This prevents pollution of the global namespace var SQL = (function () { @@ -89369,7 +96742,8 @@ if (typeof module !== 'undefined') module.exports = SQL; if (typeof define === 'function') define(SQL); }).call(this,require('_process'),require("buffer").Buffer,"/node_modules/sql.js/js") -},{"_process":357,"buffer":116,"crypto":161,"fs":113,"path":332}],393:[function(require,module,exports){ + +},{"_process":650,"buffer":119,"crypto":458,"fs":115,"path":625}],688:[function(require,module,exports){ // Copyright Joyent, Inc. and other Node contributors. // // Permission is hereby granted, free of charge, to any person obtaining a @@ -89498,7 +96872,7 @@ Stream.prototype.pipe = function(dest, options) { return dest; }; -},{"events":197,"inherits":263,"readable-stream/duplex.js":370,"readable-stream/passthrough.js":377,"readable-stream/readable.js":378,"readable-stream/transform.js":379,"readable-stream/writable.js":380}],394:[function(require,module,exports){ +},{"events":494,"inherits":559,"readable-stream/duplex.js":663,"readable-stream/passthrough.js":671,"readable-stream/readable.js":672,"readable-stream/transform.js":673,"readable-stream/writable.js":674}],689:[function(require,module,exports){ (function (process){ var Promise = require('any-promise') @@ -89562,230 +96936,282 @@ module.exports = function (stream, done) { } }).call(this,require('_process')) -},{"_process":357,"any-promise":61}],395:[function(require,module,exports){ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. -var Buffer = require('buffer').Buffer; +},{"_process":650,"any-promise":61}],690:[function(require,module,exports){ +'use strict'; -var isBufferEncoding = Buffer.isEncoding - || function(encoding) { - switch (encoding && encoding.toLowerCase()) { - case 'hex': case 'utf8': case 'utf-8': case 'ascii': case 'binary': case 'base64': case 'ucs2': case 'ucs-2': case 'utf16le': case 'utf-16le': case 'raw': return true; - default: return false; - } - } +var Buffer = require('buffer').Buffer; +var bufferShim = require('buffer-shims'); +var isEncoding = Buffer.isEncoding || function (encoding) { + encoding = '' + encoding; + switch (encoding && encoding.toLowerCase()) { + case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw': + return true; + default: + return false; + } +}; -function assertEncoding(encoding) { - if (encoding && !isBufferEncoding(encoding)) { - throw new Error('Unknown encoding: ' + encoding); +function _normalizeEncoding(enc) { + if (!enc) return 'utf8'; + var retried; + while (true) { + switch (enc) { + case 'utf8': + case 'utf-8': + return 'utf8'; + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return 'utf16le'; + case 'latin1': + case 'binary': + return 'latin1'; + case 'base64': + case 'ascii': + case 'hex': + return enc; + default: + if (retried) return; // undefined + enc = ('' + enc).toLowerCase(); + retried = true; + } } +}; + +// Do not cache `Buffer.isEncoding` when checking encoding names as some +// modules monkey-patch it to support additional encodings +function normalizeEncoding(enc) { + var nenc = _normalizeEncoding(enc); + if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc); + return nenc || enc; } // StringDecoder provides an interface for efficiently splitting a series of // buffers into a series of JS strings without breaking apart multi-byte -// characters. CESU-8 is handled as part of the UTF-8 encoding. -// -// @TODO Handling all encodings inside a single object makes it very difficult -// to reason about this code, so it should be split up in the future. -// @TODO There should be a utf8-strict encoding that rejects invalid UTF-8 code -// points as used by CESU-8. -var StringDecoder = exports.StringDecoder = function(encoding) { - this.encoding = (encoding || 'utf8').toLowerCase().replace(/[-_]/, ''); - assertEncoding(encoding); +// characters. +exports.StringDecoder = StringDecoder; +function StringDecoder(encoding) { + this.encoding = normalizeEncoding(encoding); + var nb; switch (this.encoding) { - case 'utf8': - // CESU-8 represents each of Surrogate Pair by 3-bytes - this.surrogateSize = 3; - break; - case 'ucs2': case 'utf16le': - // UTF-16 represents each of Surrogate Pair by 2-bytes - this.surrogateSize = 2; - this.detectIncompleteChar = utf16DetectIncompleteChar; + this.text = utf16Text; + this.end = utf16End; + nb = 4; + break; + case 'utf8': + this.fillLast = utf8FillLast; + nb = 4; break; case 'base64': - // Base-64 stores 3 bytes in 4 chars, and pads the remainder. - this.surrogateSize = 3; - this.detectIncompleteChar = base64DetectIncompleteChar; + this.text = base64Text; + this.end = base64End; + nb = 3; break; default: - this.write = passThroughWrite; + this.write = simpleWrite; + this.end = simpleEnd; return; } + this.lastNeed = 0; + this.lastTotal = 0; + this.lastChar = bufferShim.allocUnsafe(nb); +} - // Enough space to store all bytes of a single character. UTF-8 needs 4 - // bytes, but CESU-8 may require up to 6 (3 bytes per surrogate). - this.charBuffer = new Buffer(6); - // Number of bytes received for the current incomplete multi-byte character. - this.charReceived = 0; - // Number of bytes expected for the current incomplete multi-byte character. - this.charLength = 0; +StringDecoder.prototype.write = function (buf) { + if (buf.length === 0) return ''; + var r; + var i; + if (this.lastNeed) { + r = this.fillLast(buf); + if (r === undefined) return ''; + i = this.lastNeed; + this.lastNeed = 0; + } else { + i = 0; + } + if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i); + return r || ''; }; +StringDecoder.prototype.end = utf8End; -// write decodes the given buffer and returns it as JS string that is -// guaranteed to not contain any partial multi-byte characters. Any partial -// character found at the end of the buffer is buffered up, and will be -// returned when calling write again with the remaining bytes. -// -// Note: Converting a Buffer containing an orphan surrogate to a String -// currently works, but converting a String to a Buffer (via `new Buffer`, or -// Buffer#write) will replace incomplete surrogates with the unicode -// replacement character. See https://codereview.chromium.org/121173009/ . -StringDecoder.prototype.write = function(buffer) { - var charStr = ''; - // if our last write ended with an incomplete multibyte character - while (this.charLength) { - // determine how many remaining bytes this buffer has to offer for this char - var available = (buffer.length >= this.charLength - this.charReceived) ? - this.charLength - this.charReceived : - buffer.length; +// Returns only complete characters in a Buffer +StringDecoder.prototype.text = utf8Text; - // add the new bytes to the char buffer - buffer.copy(this.charBuffer, this.charReceived, 0, available); - this.charReceived += available; - - if (this.charReceived < this.charLength) { - // still not enough chars in this buffer? wait for more ... - return ''; - } - - // remove bytes belonging to the current character from the buffer - buffer = buffer.slice(available, buffer.length); - - // get the character that was split - charStr = this.charBuffer.slice(0, this.charLength).toString(this.encoding); +// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer +StringDecoder.prototype.fillLast = function (buf) { + if (this.lastNeed <= buf.length) { + buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed); + return this.lastChar.toString(this.encoding, 0, this.lastTotal); + } + buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length); + this.lastNeed -= buf.length; +}; - // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character - var charCode = charStr.charCodeAt(charStr.length - 1); - if (charCode >= 0xD800 && charCode <= 0xDBFF) { - this.charLength += this.surrogateSize; - charStr = ''; - continue; - } - this.charReceived = this.charLength = 0; +// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a +// continuation byte. +function utf8CheckByte(byte) { + if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4; + return -1; +} - // if there are no more bytes in this buffer, just emit our char - if (buffer.length === 0) { - return charStr; +// Checks at most 3 bytes at the end of a Buffer in order to detect an +// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4) +// needed to complete the UTF-8 character (if applicable) are returned. +function utf8CheckIncomplete(self, buf, i) { + var j = buf.length - 1; + if (j < i) return 0; + var nb = utf8CheckByte(buf[j]); + if (nb >= 0) { + if (nb > 0) self.lastNeed = nb - 1; + return nb; + } + if (--j < i) return 0; + nb = utf8CheckByte(buf[j]); + if (nb >= 0) { + if (nb > 0) self.lastNeed = nb - 2; + return nb; + } + if (--j < i) return 0; + nb = utf8CheckByte(buf[j]); + if (nb >= 0) { + if (nb > 0) { + if (nb === 2) nb = 0;else self.lastNeed = nb - 3; } - break; + return nb; } + return 0; +} - // determine and set charLength / charReceived - this.detectIncompleteChar(buffer); - - var end = buffer.length; - if (this.charLength) { - // buffer the incomplete character bytes we got - buffer.copy(this.charBuffer, 0, buffer.length - this.charReceived, end); - end -= this.charReceived; +// Validates as many continuation bytes for a multi-byte UTF-8 character as +// needed or are available. If we see a non-continuation byte where we expect +// one, we "replace" the validated continuation bytes we've seen so far with +// UTF-8 replacement characters ('\ufffd'), to match v8's UTF-8 decoding +// behavior. The continuation byte check is included three times in the case +// where all of the continuation bytes for a character exist in the same buffer. +// It is also done this way as a slight performance increase instead of using a +// loop. +function utf8CheckExtraBytes(self, buf, p) { + if ((buf[0] & 0xC0) !== 0x80) { + self.lastNeed = 0; + return '\ufffd'.repeat(p); + } + if (self.lastNeed > 1 && buf.length > 1) { + if ((buf[1] & 0xC0) !== 0x80) { + self.lastNeed = 1; + return '\ufffd'.repeat(p + 1); + } + if (self.lastNeed > 2 && buf.length > 2) { + if ((buf[2] & 0xC0) !== 0x80) { + self.lastNeed = 2; + return '\ufffd'.repeat(p + 2); + } + } } +} - charStr += buffer.toString(this.encoding, 0, end); - - var end = charStr.length - 1; - var charCode = charStr.charCodeAt(end); - // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character - if (charCode >= 0xD800 && charCode <= 0xDBFF) { - var size = this.surrogateSize; - this.charLength += size; - this.charReceived += size; - this.charBuffer.copy(this.charBuffer, size, 0, size); - buffer.copy(this.charBuffer, 0, 0, size); - return charStr.substring(0, end); +// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer. +function utf8FillLast(buf) { + var p = this.lastTotal - this.lastNeed; + var r = utf8CheckExtraBytes(this, buf, p); + if (r !== undefined) return r; + if (this.lastNeed <= buf.length) { + buf.copy(this.lastChar, p, 0, this.lastNeed); + return this.lastChar.toString(this.encoding, 0, this.lastTotal); } + buf.copy(this.lastChar, p, 0, buf.length); + this.lastNeed -= buf.length; +} - // or just emit the charStr - return charStr; -}; - -// detectIncompleteChar determines if there is an incomplete UTF-8 character at -// the end of the given buffer. If so, it sets this.charLength to the byte -// length that character, and sets this.charReceived to the number of bytes -// that are available for this character. -StringDecoder.prototype.detectIncompleteChar = function(buffer) { - // determine how many bytes we have to check at the end of this buffer - var i = (buffer.length >= 3) ? 3 : buffer.length; - - // Figure out if one of the last i bytes of our buffer announces an - // incomplete char. - for (; i > 0; i--) { - var c = buffer[buffer.length - i]; - - // See http://en.wikipedia.org/wiki/UTF-8#Description - - // 110XXXXX - if (i == 1 && c >> 5 == 0x06) { - this.charLength = 2; - break; - } +// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a +// partial character, the character's bytes are buffered until the required +// number of bytes are available. +function utf8Text(buf, i) { + var total = utf8CheckIncomplete(this, buf, i); + if (!this.lastNeed) return buf.toString('utf8', i); + this.lastTotal = total; + var end = buf.length - (total - this.lastNeed); + buf.copy(this.lastChar, 0, end); + return buf.toString('utf8', i, end); +} - // 1110XXXX - if (i <= 2 && c >> 4 == 0x0E) { - this.charLength = 3; - break; - } +// For UTF-8, a replacement character for each buffered byte of a (partial) +// character needs to be added to the output. +function utf8End(buf) { + var r = buf && buf.length ? this.write(buf) : ''; + if (this.lastNeed) return r + '\ufffd'.repeat(this.lastTotal - this.lastNeed); + return r; +} - // 11110XXX - if (i <= 3 && c >> 3 == 0x1E) { - this.charLength = 4; - break; +// UTF-16LE typically needs two bytes per character, but even if we have an even +// number of bytes available, we need to check if we end on a leading/high +// surrogate. In that case, we need to wait for the next two bytes in order to +// decode the last character properly. +function utf16Text(buf, i) { + if ((buf.length - i) % 2 === 0) { + var r = buf.toString('utf16le', i); + if (r) { + var c = r.charCodeAt(r.length - 1); + if (c >= 0xD800 && c <= 0xDBFF) { + this.lastNeed = 2; + this.lastTotal = 4; + this.lastChar[0] = buf[buf.length - 2]; + this.lastChar[1] = buf[buf.length - 1]; + return r.slice(0, -1); + } } + return r; } - this.charReceived = i; -}; - -StringDecoder.prototype.end = function(buffer) { - var res = ''; - if (buffer && buffer.length) - res = this.write(buffer); + this.lastNeed = 1; + this.lastTotal = 2; + this.lastChar[0] = buf[buf.length - 1]; + return buf.toString('utf16le', i, buf.length - 1); +} - if (this.charReceived) { - var cr = this.charReceived; - var buf = this.charBuffer; - var enc = this.encoding; - res += buf.slice(0, cr).toString(enc); +// For UTF-16LE we do not explicitly append special replacement characters if we +// end on a partial character, we simply let v8 handle that. +function utf16End(buf) { + var r = buf && buf.length ? this.write(buf) : ''; + if (this.lastNeed) { + var end = this.lastTotal - this.lastNeed; + return r + this.lastChar.toString('utf16le', 0, end); } + return r; +} - return res; -}; - -function passThroughWrite(buffer) { - return buffer.toString(this.encoding); +function base64Text(buf, i) { + var n = (buf.length - i) % 3; + if (n === 0) return buf.toString('base64', i); + this.lastNeed = 3 - n; + this.lastTotal = 3; + if (n === 1) { + this.lastChar[0] = buf[buf.length - 1]; + } else { + this.lastChar[0] = buf[buf.length - 2]; + this.lastChar[1] = buf[buf.length - 1]; + } + return buf.toString('base64', i, buf.length - n); } -function utf16DetectIncompleteChar(buffer) { - this.charReceived = buffer.length % 2; - this.charLength = this.charReceived ? 2 : 0; +function base64End(buf) { + var r = buf && buf.length ? this.write(buf) : ''; + if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed); + return r; } -function base64DetectIncompleteChar(buffer) { - this.charReceived = buffer.length % 3; - this.charLength = this.charReceived ? 3 : 0; +// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex) +function simpleWrite(buf) { + return buf.toString(this.encoding); } -},{"buffer":116}],396:[function(require,module,exports){ +function simpleEnd(buf) { + return buf && buf.length ? this.write(buf) : ''; +} +},{"buffer":119,"buffer-shims":117}],691:[function(require,module,exports){ var TINF_OK = 0; var TINF_DATA_ERROR = -3; @@ -90162,9 +97588,9 @@ length_base[28] = 258; module.exports = tinf_uncompress; -},{}],397:[function(require,module,exports){ -arguments[4][168][0].apply(exports,arguments) -},{"./lib/type":398,"dup":168}],398:[function(require,module,exports){ +},{}],692:[function(require,module,exports){ +arguments[4][465][0].apply(exports,arguments) +},{"./lib/type":693,"dup":465}],693:[function(require,module,exports){ /*! * type-detect * Copyright(c) 2013 jake luer @@ -90300,7 +97726,7 @@ Library.prototype.test = function(obj, type) { } }; -},{}],399:[function(require,module,exports){ +},{}],694:[function(require,module,exports){ var undefined = (void 0); // Paranoia // Beyond this value, index getters/setters (i.e. array[0], array[1]) are so slow to @@ -90932,7 +98358,7 @@ function packF32(v) { return packIEEE754(v, 8, 23); } }()); -},{}],400:[function(require,module,exports){ +},{}],695:[function(require,module,exports){ (function (global){ /** @@ -91003,16 +98429,17 @@ function config (name) { } }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{}],401:[function(require,module,exports){ -arguments[4][263][0].apply(exports,arguments) -},{"dup":263}],402:[function(require,module,exports){ + +},{}],696:[function(require,module,exports){ +arguments[4][559][0].apply(exports,arguments) +},{"dup":559}],697:[function(require,module,exports){ module.exports = function isBuffer(arg) { return arg && typeof arg === 'object' && typeof arg.copy === 'function' && typeof arg.fill === 'function' && typeof arg.readUInt8 === 'function'; } -},{}],403:[function(require,module,exports){ +},{}],698:[function(require,module,exports){ (function (process,global){ // Copyright Joyent, Inc. and other Node contributors. // @@ -91602,7 +99029,8 @@ function hasOwnProperty(obj, prop) { } }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"./support/isBuffer":402,"_process":357,"inherits":401}],404:[function(require,module,exports){ + +},{"./support/isBuffer":697,"_process":650,"inherits":696}],699:[function(require,module,exports){ var indexOf = require('indexof'); var Object_keys = function (obj) { @@ -91742,7 +99170,7 @@ exports.createContext = Script.createContext = function (context) { return copy; }; -},{"indexof":262}],405:[function(require,module,exports){ +},{"indexof":558}],700:[function(require,module,exports){ var bundleFn = arguments[3]; var sources = arguments[4]; var cache = arguments[5]; @@ -91825,7 +99253,7 @@ module.exports = function (fn, options) { return worker; }; -},{}],406:[function(require,module,exports){ +},{}],701:[function(require,module,exports){ (function (process){ module.exports = which which.sync = whichSync @@ -91961,7 +99389,8 @@ function whichSync (cmd, opt) { } }).call(this,require('_process')) -},{"_process":357,"isexe":267,"path":332}],407:[function(require,module,exports){ + +},{"_process":650,"isexe":562,"path":625}],702:[function(require,module,exports){ (function (Buffer){ module.exports = BinaryReader; @@ -92012,7 +99441,8 @@ BinaryReader.prototype.readVarInt = function () { }; }).call(this,require("buffer").Buffer) -},{"buffer":116}],408:[function(require,module,exports){ + +},{"buffer":119}],703:[function(require,module,exports){ (function (Buffer){ module.exports = BinaryWriter; @@ -92081,7 +99511,8 @@ BinaryWriter.prototype.ensureSize = function (size) { }; }).call(this,require("buffer").Buffer) -},{"buffer":116}],409:[function(require,module,exports){ + +},{"buffer":119}],704:[function(require,module,exports){ (function (Buffer){ module.exports = Geometry; @@ -92462,7 +99893,8 @@ Geometry.prototype.toGeoJSON = function (options) { }; }).call(this,{"isBuffer":require("../../is-buffer/index.js")}) -},{"../../is-buffer/index.js":264,"./binaryreader":407,"./binarywriter":408,"./geometrycollection":410,"./linestring":411,"./multilinestring":412,"./multipoint":413,"./multipolygon":414,"./point":415,"./polygon":416,"./types":417,"./wktparser":418,"./zigzag.js":420}],410:[function(require,module,exports){ + +},{"../../is-buffer/index.js":560,"./binaryreader":702,"./binarywriter":703,"./geometrycollection":705,"./linestring":706,"./multilinestring":707,"./multipoint":708,"./multipolygon":709,"./point":710,"./polygon":711,"./types":712,"./wktparser":713,"./zigzag.js":715}],705:[function(require,module,exports){ module.exports = GeometryCollection; var util = require('util'); @@ -92632,7 +100064,7 @@ GeometryCollection.prototype.toGeoJSON = function (options) { return geoJSON; }; -},{"./binarywriter":408,"./geometry":409,"./types":417,"util":403}],411:[function(require,module,exports){ +},{"./binarywriter":703,"./geometry":704,"./types":712,"util":698}],706:[function(require,module,exports){ module.exports = LineString; var util = require('util'); @@ -92811,7 +100243,7 @@ LineString.prototype.toGeoJSON = function (options) { return geoJSON; }; -},{"./binarywriter":408,"./geometry":409,"./point":415,"./types":417,"util":403}],412:[function(require,module,exports){ +},{"./binarywriter":703,"./geometry":704,"./point":710,"./types":712,"util":698}],707:[function(require,module,exports){ module.exports = MultiLineString; var util = require('util'); @@ -93001,7 +100433,7 @@ MultiLineString.prototype.toGeoJSON = function (options) { return geoJSON; }; -},{"./binarywriter":408,"./geometry":409,"./linestring":411,"./point":415,"./types":417,"util":403}],413:[function(require,module,exports){ +},{"./binarywriter":703,"./geometry":704,"./linestring":706,"./point":710,"./types":712,"util":698}],708:[function(require,module,exports){ module.exports = MultiPoint; var util = require('util'); @@ -93174,7 +100606,7 @@ MultiPoint.prototype.toGeoJSON = function (options) { return geoJSON; }; -},{"./binarywriter":408,"./geometry":409,"./point":415,"./types":417,"util":403}],414:[function(require,module,exports){ +},{"./binarywriter":703,"./geometry":704,"./point":710,"./types":712,"util":698}],709:[function(require,module,exports){ module.exports = MultiPolygon; var util = require('util'); @@ -93401,7 +100833,7 @@ MultiPolygon.prototype.toGeoJSON = function (options) { return geoJSON; }; -},{"./binarywriter":408,"./geometry":409,"./point":415,"./polygon":416,"./types":417,"util":403}],415:[function(require,module,exports){ +},{"./binarywriter":703,"./geometry":704,"./point":710,"./polygon":711,"./types":712,"util":698}],710:[function(require,module,exports){ module.exports = Point; var util = require('util'); @@ -93619,7 +101051,7 @@ Point.prototype.toGeoJSON = function (options) { return geoJSON; }; -},{"./binarywriter":408,"./geometry":409,"./types":417,"./zigzag.js":420,"util":403}],416:[function(require,module,exports){ +},{"./binarywriter":703,"./geometry":704,"./types":712,"./zigzag.js":715,"util":698}],711:[function(require,module,exports){ module.exports = Polygon; var util = require('util'); @@ -93908,7 +101340,7 @@ Polygon.prototype.toGeoJSON = function (options) { return geoJSON; }; -},{"./binarywriter":408,"./geometry":409,"./point":415,"./types":417,"util":403}],417:[function(require,module,exports){ +},{"./binarywriter":703,"./geometry":704,"./point":710,"./types":712,"util":698}],712:[function(require,module,exports){ module.exports = { wkt: { Point: 'POINT', @@ -93939,7 +101371,7 @@ module.exports = { } }; -},{}],418:[function(require,module,exports){ +},{}],713:[function(require,module,exports){ module.exports = WktParser; var Types = require('./types'); @@ -94065,7 +101497,7 @@ WktParser.prototype.skipWhitespaces = function () { this.position++; }; -},{"./point":415,"./types":417}],419:[function(require,module,exports){ +},{"./point":710,"./types":712}],714:[function(require,module,exports){ exports.Types = require('./types'); exports.Geometry = require('./geometry'); exports.Point = require('./point'); @@ -94075,7 +101507,7 @@ exports.MultiPoint = require('./multipoint'); exports.MultiLineString = require('./multilinestring'); exports.MultiPolygon = require('./multipolygon'); exports.GeometryCollection = require('./geometrycollection'); -},{"./geometry":409,"./geometrycollection":410,"./linestring":411,"./multilinestring":412,"./multipoint":413,"./multipolygon":414,"./point":415,"./polygon":416,"./types":417}],420:[function(require,module,exports){ +},{"./geometry":704,"./geometrycollection":705,"./linestring":706,"./multilinestring":707,"./multipoint":708,"./multipolygon":709,"./point":710,"./polygon":711,"./types":712}],715:[function(require,module,exports){ module.exports = { encode: function (value) { return (value << 1) ^ (value >> 31); @@ -94085,7 +101517,7 @@ module.exports = { } }; -},{}],421:[function(require,module,exports){ +},{}],716:[function(require,module,exports){ var FeatureColumn = require('../../lib/features/user/featureColumn') , FeatureTable = require('../../lib/features/user/featureTable') , GeometryColumns = require('../../lib/features/columns').GeometryColumns @@ -94117,7 +101549,7 @@ module.exports.buildGeometryColumns = function(tableName, geometryColumn, geomet return geometryColumns; } -},{"../../lib/db/dataTypes":9,"../../lib/features/columns":20,"../../lib/features/user/featureColumn":21,"../../lib/features/user/featureTable":24}],422:[function(require,module,exports){ +},{"../../lib/db/dataTypes":9,"../../lib/features/columns":20,"../../lib/features/user/featureColumn":21,"../../lib/features/user/featureTable":24}],717:[function(require,module,exports){ (function (process,Buffer){ var fs = require('fs') , async = require('async') @@ -94266,13 +101698,6 @@ module.exports.diffImagesWithDimensions = function(actualTile, expectedTilePath, currentTag.appendChild(expected); currentTag.appendChild(diffCanvas); } - delete ctx; - delete ctx2; - delete image; - delete image2; - delete expected; - delete actual; - callback(null, equal); } image2.src = 'data:image/png;base64,' + expectedBase64; @@ -94284,7 +101709,8 @@ module.exports.diffImagesWithDimensions = function(actualTile, expectedTilePath, } }).call(this,require('_process'),require("buffer").Buffer) -},{"../../lib/db/geoPackageConnection":10,"../../lib/db/tableCreator":14,"../../lib/geoPackage":26,"_process":357,"async":82,"buffer":116,"fs":113,"image-diff":257,"imagediff":261,"path":332}],423:[function(require,module,exports){ + +},{"../../lib/db/geoPackageConnection":10,"../../lib/db/tableCreator":14,"../../lib/geoPackage":26,"_process":650,"async":82,"buffer":119,"fs":115,"image-diff":553,"imagediff":557,"path":625}],718:[function(require,module,exports){ var should = require('chai').should(); module.exports.compareProperties = function(o1, o2) { @@ -94297,7 +101723,7 @@ module.exports.compareProperties = function(o1, o2) { } } -},{"chai":118}],424:[function(require,module,exports){ +},{"chai":121}],719:[function(require,module,exports){ var async = require('async'); module.exports.verifySRS = function(geopackage, done) { @@ -94515,7 +101941,7 @@ module.exports.verifyTableExists = function(geopackage, table, done) { }); } -},{"async":82}],425:[function(require,module,exports){ +},{"async":82}],720:[function(require,module,exports){ (function (__dirname){ var GeoPackageManager = require('../../../../lib/geoPackageManager') , ContentsDao = require('../../../../lib/core/contents').ContentsDao @@ -94736,7 +102162,8 @@ describe('Contents tests', function() { }); }).call(this,"/test/lib/core/contents") -},{"../../../../lib/core/contents":3,"../../../../lib/geoPackageManager":28,"../../../../lib/tiles/matrix":40,"chai":118,"path":332}],426:[function(require,module,exports){ + +},{"../../../../lib/core/contents":3,"../../../../lib/geoPackageManager":28,"../../../../lib/tiles/matrix":40,"chai":121,"path":625}],721:[function(require,module,exports){ (function (__dirname){ var GeoPackageManager = require('../../../../lib/geoPackageManager') , SpatialReferenceSystemDao = require('../../../../lib/core/srs').SpatialReferenceSystemDao @@ -94818,7 +102245,8 @@ describe('SpatialReferenceSystem tests', function() { }); }).call(this,"/test/lib/core/srs") -},{"../../../../lib/core/srs":4,"../../../../lib/geoPackageManager":28,"chai":118,"path":332}],427:[function(require,module,exports){ + +},{"../../../../lib/core/srs":4,"../../../../lib/geoPackageManager":28,"chai":121,"path":625}],722:[function(require,module,exports){ (function (process,__dirname){ var DataColumnsDao = require('../../../lib/dataColumns').DataColumnsDao , DataColumns = require('../../../lib/dataColumns').DataColumns @@ -95034,7 +102462,8 @@ describe('Data Columns tests', function() { }); }).call(this,require('_process'),"/test/lib/dataColumns") -},{"../../../lib/dataColumnConstraints":7,"../../../lib/dataColumns":8,"../../../lib/db/geoPackageConnection":10,"../../../lib/db/tableCreator":14,"_process":357,"chai":118,"fs":113,"fs-extra":213,"path":332}],428:[function(require,module,exports){ + +},{"../../../lib/dataColumnConstraints":7,"../../../lib/dataColumns":8,"../../../lib/db/geoPackageConnection":10,"../../../lib/db/tableCreator":14,"_process":650,"chai":121,"fs":115,"fs-extra":510,"path":625}],723:[function(require,module,exports){ var DataTypes = require('../../../lib/db/dataTypes.js'); describe('DataTypes tests', function() { @@ -95103,7 +102532,7 @@ describe('DataTypes tests', function() { }); -},{"../../../lib/db/dataTypes.js":9}],429:[function(require,module,exports){ +},{"../../../lib/db/dataTypes.js":9}],724:[function(require,module,exports){ (function (__dirname){ var GeoPackageConnection = require('../../../lib/db/geoPackageConnection') , GeoPackage = require('../../../lib/geoPackage') @@ -95280,7 +102709,204 @@ describe('TableCreator tests', function() { }); }).call(this,"/test/lib/db") -},{"../../../lib/db/geoPackageConnection":10,"../../../lib/db/tableCreator":14,"../../../lib/geoPackage":26,"../../../lib/tiles/user/tileDao":46,"../../../lib/tiles/user/tileTable":49,"../../fixtures/setupFeatureTable.js":421,"../../fixtures/testSetup":422,"../../fixtures/verification":424,"async":82,"chai":118,"path":332,"wkx":419}],430:[function(require,module,exports){ + +},{"../../../lib/db/geoPackageConnection":10,"../../../lib/db/tableCreator":14,"../../../lib/geoPackage":26,"../../../lib/tiles/user/tileDao":46,"../../../lib/tiles/user/tileTable":49,"../../fixtures/setupFeatureTable.js":716,"../../fixtures/testSetup":717,"../../fixtures/verification":719,"async":82,"chai":121,"path":625,"wkx":714}],725:[function(require,module,exports){ +(function (__dirname){ +var GeoPackageManager = require('../../../../lib/geoPackageManager') + , GeoPackage = require('../../../../lib/geoPackage') + , FeatureTableIndex = require('../../../../lib/extension/index/featureTableIndex') + , sqliteQueryBuilder = require('../../../../lib/db/sqliteQueryBuilder') + , Verification = require('../../../fixtures/verification') + , testSetup = require('../../../fixtures/testSetup') + , should = require('chai').should() + , fs = require('fs-extra') + , path = require('path') + , async = require('async'); + +describe('GeoPackage Feature Table Index Extension tests', function() { + + describe('Create new index', function() { + var geoPackage; + var featureDao; + + var originalFilename = path.join(__dirname, '..', '..', '..', 'fixtures', 'rivers.gpkg'); + var filename = path.join(__dirname, '..', '..', '..', 'fixtures', 'tmp', 'rivers.gpkg'); + + beforeEach('should open the geopackage', function(done) { + fs.copy(originalFilename, filename, function(err) { + GeoPackageManager.open(filename, function(err, gp) { + geoPackage = gp; + should.not.exist(err); + should.exist(gp); + should.exist(gp.getDatabase().getDBConnection()); + gp.getPath().should.be.equal(filename); + geoPackage.getFeatureDaoWithTableName('FEATURESriversds', function(err, riverFeatureDao) { + featureDao = riverFeatureDao; + done(); + }); + }); + }); + }); + + afterEach('should close the geopackage', function(done) { + geoPackage.close(); + fs.remove(filename, done); + }); + + it('should return the index status of false', function(done) { + var fti = new FeatureTableIndex(geoPackage.getDatabase(), featureDao); + fti.isIndexed(function(err, indexed){ + should.not.exist(err); + indexed.should.be.equal(false); + done(); + }); + }); + + it('should index the table', function(done) { + var fti = new FeatureTableIndex(geoPackage.getDatabase(), featureDao); + fti.getTableIndex(function(err, tableIndex) { + should.not.exist(tableIndex); + should.not.exist(err); + fti.index(function() { + console.log('progress', arguments); + }, function(err) { + should.not.exist(err); + // ensure it was created + var fti2 = new FeatureTableIndex(geoPackage.getDatabase(), featureDao); + fti2.getTableIndex(function(err, tableIndex) { + should.exist(tableIndex); + should.not.exist(err); + should.exist(tableIndex.last_indexed); + done(); + }); + }); + }); + }); + }); + + describe('Test existing index', function() { + + var geoPackage; + var featureDao; + + var originalFilename = path.join(__dirname, '..', '..', '..', 'fixtures', 'rivers_indexed.gpkg'); + var filename = path.join(__dirname, '..', '..', '..', 'fixtures', 'tmp', 'rivers_indexed.gpkg'); + + beforeEach('should open the geopackage', function(done) { + fs.copy(originalFilename, filename, function(err) { + GeoPackageManager.open(filename, function(err, gp) { + geoPackage = gp; + should.not.exist(err); + should.exist(gp); + should.exist(gp.getDatabase().getDBConnection()); + gp.getPath().should.be.equal(filename); + geoPackage.getFeatureDaoWithTableName('rivers', function(err, riverFeatureDao) { + featureDao = riverFeatureDao; + done(); + }); + }); + }); + }); + + afterEach('should close the geopackage', function(done) { + geoPackage.close(); + fs.remove(filename, done); + }); + + it('should query for the index row rivers, 315', function(done) { + var whereString = 'table_name = ? and geom_id = ?'; + var whereArgs = [ 'rivers', 315 ]; + + var query = sqliteQueryBuilder.buildQuery(false, "'nga_geometry_index'", undefined, whereString); + geoPackage.getDatabase().get(query, whereArgs, function(err, result) { + should.exist(result); + done(err); + }.bind(this)); + }); + + it('should get the extension row', function(done) { + var fti = new FeatureTableIndex(geoPackage.getDatabase(), featureDao); + fti.getFeatureTableIndexExtension(function(err, extension){ + should.not.exist(err); + should.exist(extension); + done(); + }); + }); + + it('should return the index status of true', function(done) { + var fti = new FeatureTableIndex(geoPackage.getDatabase(), featureDao); + fti.isIndexed(function(err, indexed){ + should.not.exist(err); + indexed.should.be.equal(true); + done(); + }); + }); + + it('should force index the table', function(done) { + var fti = new FeatureTableIndex(geoPackage.getDatabase(), featureDao); + fti.getTableIndex(function(err, tableIndex) { + tableIndex.last_indexed.should.be.equal('2016-05-02T12:08:14.144Z'); + fti.indexWithForce(true, function() { + console.log('progress', arguments); + }, function(err) { + should.not.exist(err); + // ensure it was created + var fti2 = new FeatureTableIndex(geoPackage.getDatabase(), featureDao); + fti2.getTableIndex(function(err, tableIndex) { + should.exist(tableIndex); + should.not.exist(err); + tableIndex.last_indexed.should.not.be.equal('2016-05-02T12:08:14.144Z'); + done(); + }); + }); + }); + }); + }); +}); + +}).call(this,"/test/lib/extension/index") + +},{"../../../../lib/db/sqliteQueryBuilder":12,"../../../../lib/extension/index/featureTableIndex":17,"../../../../lib/geoPackage":26,"../../../../lib/geoPackageManager":28,"../../../fixtures/testSetup":717,"../../../fixtures/verification":719,"async":82,"chai":121,"fs-extra":510,"path":625}],726:[function(require,module,exports){ +(function (__dirname){ +var GeoPackageConnection = require('../../../lib/db/geoPackageConnection') + , GeoPackage = require('../../../lib/geoPackage') + , Verification = require('../../fixtures/verification') + , testSetup = require('../../fixtures/testSetup') + , should = require('chai').should() + , path = require('path') + , async = require('async'); + +describe('GeoPackage Extension Dao tests', function() { + var testGeoPackage = path.join(__dirname, '..', 'tmp', 'test.gpkg'); + var tableName = 'test_features.test'; + var geopackage; + + beforeEach(function(done) { + testSetup.deleteGeoPackage(testGeoPackage, function() { + testSetup.createGeoPackage(testGeoPackage, function(err, gp) { + geopackage = gp; + done(); + }); + }); + }); + + afterEach(function(done) { + geopackage.close(); + testSetup.deleteGeoPackage(testGeoPackage, done); + }); + + it('should create an extensions table', function(done) { + var extensionDao = geopackage.getExtensionDao(); + extensionDao.createTable(function(err, table) { + Verification.verifyExtensions(geopackage, done); + }); + }); + +}); + +}).call(this,"/test/lib/extension") + +},{"../../../lib/db/geoPackageConnection":10,"../../../lib/geoPackage":26,"../../fixtures/testSetup":717,"../../fixtures/verification":719,"async":82,"chai":121,"path":625}],727:[function(require,module,exports){ (function (__dirname){ var GeoPackageManager = require('../../../../lib/geoPackageManager') , GeometryColumnsDao = require('../../../../lib/features/columns').GeometryColumnsDao @@ -95468,7 +103094,8 @@ describe('GeometryColumns tests', function() { }); }).call(this,"/test/lib/features/columns") -},{"../../../../lib/db/geoPackageConnection":10,"../../../../lib/features/columns":20,"../../../../lib/geoPackageManager":28,"../../../fixtures/testUtils":423,"chai":118,"path":332}],431:[function(require,module,exports){ + +},{"../../../../lib/db/geoPackageConnection":10,"../../../../lib/features/columns":20,"../../../../lib/geoPackageManager":28,"../../../fixtures/testUtils":718,"chai":121,"path":625}],728:[function(require,module,exports){ (function (__dirname){ var FeatureDao = require('../../../../lib/features/user/featureDao.js') , GeoPackageManager = require('../../../../lib/geoPackageManager.js') @@ -95506,7 +103133,8 @@ describe('FeatureDao tests', function() { }); }).call(this,"/test/lib/features/user") -},{"../../../../lib/features/user/featureDao.js":22,"../../../../lib/geoPackageManager.js":28,"chai":118,"path":332}],432:[function(require,module,exports){ + +},{"../../../../lib/features/user/featureDao.js":22,"../../../../lib/geoPackageManager.js":28,"chai":121,"path":625}],729:[function(require,module,exports){ (function (__dirname){ var FeatureTableReader = require('../../../../lib/features/user/featureTableReader.js') , GeometryColumnsDao = require('../../../../lib/features/columns').GeometryColumnsDao @@ -95574,7 +103202,8 @@ describe('FeatureTableReader tests', function() { }); }).call(this,"/test/lib/features/user") -},{"../../../../lib/db/geoPackageConnection.js":10,"../../../../lib/features/columns":20,"../../../../lib/features/user/featureTableReader.js":25,"chai":118,"path":332}],433:[function(require,module,exports){ + +},{"../../../../lib/db/geoPackageConnection.js":10,"../../../../lib/features/columns":20,"../../../../lib/features/user/featureTableReader.js":25,"chai":121,"path":625}],730:[function(require,module,exports){ (function (Buffer){ var GeometryData = require('../../../lib/geom/geometryData.js'); @@ -95873,7 +103502,52 @@ describe('Geometry Data tests', function() { }); }).call(this,require("buffer").Buffer) -},{"../../../lib/geom/geometryData.js":30,"buffer":116,"wkx":419}],434:[function(require,module,exports){ + +},{"../../../lib/geom/geometryData.js":30,"buffer":119,"wkx":714}],731:[function(require,module,exports){ +(function (__dirname){ +var GeoPackage = require('../../../lib/geoPackage') + , GeoPackageConnection = require('../../../lib/db/geoPackageConnection') + , GeoPackageTileRetriever = require('../../../lib/tiles/retriever'); + +var path = require('path') + , should = require('chai').should(); +// , proj4 = require('proj4'); + +describe('Tests for issue 68', function() { + + it('should get a tile', function(done) { + + // this.timeout(5000); + GeoPackageConnection.connect(path.join(__dirname, '..', '..', 'fixtures', 'issue_68.gpkg'), function(err, connection) { + var geoPackage = new GeoPackage('', '', connection); + geoPackage.getTileTables(function(err, tables) { + tables[0].should.be.equal('package_tiles'); + geoPackage.getTileDaoWithTableName('package_tiles', function(err, tileDao) { + if (err) return done(err); + should.exist(tileDao); + geoPackage.getInfoForTable(tileDao, function(err, info) { + if (err) return done(err); + should.exist(info); + done(); + // var gpr = new GeoPackageTileRetriever(tileDao, 256, 256); + // gpr.getTile(192,401,10,function(err, tile) { + // if (err) return done(err); + // should.exist(tile); + // delete tile; + // geoPackage.close(); + // done(); + // }); + }); + }); + }); + }); + }); + +}); + +}).call(this,"/test/lib/issues") + +},{"../../../lib/db/geoPackageConnection":10,"../../../lib/geoPackage":26,"../../../lib/tiles/retriever":42,"chai":121,"path":625}],732:[function(require,module,exports){ (function (__dirname){ var fs = require('fs') , should = require('chai').should() @@ -96189,7 +103863,8 @@ describe('Metadata Reference tests', function() { }); }).call(this,"/test/lib/metadata/reference") -},{"../../../../lib/db/tableCreator":14,"../../../../lib/geoPackage":26,"../../../../lib/metadata":31,"../../../../lib/metadata/reference":32,"../../../fixtures/testSetup":422,"../../../fixtures/verification":424,"async":82,"chai":118,"fs":113,"path":332}],435:[function(require,module,exports){ + +},{"../../../../lib/db/tableCreator":14,"../../../../lib/geoPackage":26,"../../../../lib/metadata":31,"../../../../lib/metadata/reference":32,"../../../fixtures/testSetup":717,"../../../fixtures/verification":719,"async":82,"chai":121,"fs":115,"path":625}],733:[function(require,module,exports){ var fs = require('fs') , should = require('chai').should() , path = require('path') @@ -96298,7 +103973,7 @@ describe('Metadata tests', function() { }); }); -},{"../../../lib/metadata":31,"async":82,"chai":118,"fs":113,"path":332}],436:[function(require,module,exports){ +},{"../../../lib/metadata":31,"async":82,"chai":121,"fs":115,"path":625}],734:[function(require,module,exports){ var BoundingBox = require('../../lib/boundingBox.js'); describe('BoundingBox tests', function() { @@ -96362,7 +104037,7 @@ describe('BoundingBox tests', function() { }); -},{"../../lib/boundingBox.js":2}],437:[function(require,module,exports){ +},{"../../lib/boundingBox.js":2}],735:[function(require,module,exports){ (function (Buffer,__dirname){ var GeoPackageConnection = require('../../lib/db/geoPackageConnection') , GeoPackage = require('../../lib/geoPackage') @@ -96650,7 +104325,8 @@ describe('GeoPackage Feature table create tests', function() { }); }).call(this,require("buffer").Buffer,"/test/lib") -},{"../../lib/boundingBox":2,"../../lib/db/dataTypes":9,"../../lib/db/geoPackageConnection":10,"../../lib/db/tableCreator":14,"../../lib/features/user/featureColumn":21,"../../lib/geoPackage":26,"../../lib/geom/geometryData":30,"../../lib/tiles/user/tileTable":49,"../../lib/user/userTableReader":55,"../fixtures/setupFeatureTable":421,"../fixtures/testSetup":422,"../fixtures/verification":424,"async":82,"buffer":116,"chai":118,"path":332,"wkx":419}],438:[function(require,module,exports){ + +},{"../../lib/boundingBox":2,"../../lib/db/dataTypes":9,"../../lib/db/geoPackageConnection":10,"../../lib/db/tableCreator":14,"../../lib/features/user/featureColumn":21,"../../lib/geoPackage":26,"../../lib/geom/geometryData":30,"../../lib/tiles/user/tileTable":49,"../../lib/user/userTableReader":55,"../fixtures/setupFeatureTable":716,"../fixtures/testSetup":717,"../fixtures/verification":719,"async":82,"buffer":119,"chai":121,"path":625,"wkx":714}],736:[function(require,module,exports){ (function (__dirname){ var GeoPackage = require('../../lib/geoPackage') , GeoPackageConnection = require('../../lib/db/geoPackageConnection') @@ -96861,7 +104537,8 @@ describe('GeoPackage tests', function() { }); }).call(this,"/test/lib") -},{"../../lib/db/geoPackageConnection":10,"../../lib/geoPackage":26,"../../lib/tiles/retriever":42,"async":82,"chai":118,"fs":113,"path":332,"proj4":358}],439:[function(require,module,exports){ + +},{"../../lib/db/geoPackageConnection":10,"../../lib/geoPackage":26,"../../lib/tiles/retriever":42,"async":82,"chai":121,"fs":115,"path":625,"proj4":651}],737:[function(require,module,exports){ (function (__dirname){ var GeoPackageConnection = require('../../lib/db/geoPackageConnection') , GeoPackage = require('../../lib/geoPackage') @@ -97023,7 +104700,8 @@ describe('GeoPackage create tests', function() { }); }).call(this,"/test/lib") -},{"../../lib/db/geoPackageConnection":10,"../../lib/geoPackage":26,"../../lib/tiles/user/tileTable":49,"../fixtures/setupFeatureTable":421,"../fixtures/testSetup":422,"../fixtures/verification":424,"async":82,"chai":118,"path":332,"wkx":419}],440:[function(require,module,exports){ + +},{"../../lib/db/geoPackageConnection":10,"../../lib/geoPackage":26,"../../lib/tiles/user/tileTable":49,"../fixtures/setupFeatureTable":716,"../fixtures/testSetup":717,"../fixtures/verification":719,"async":82,"chai":121,"path":625,"wkx":714}],738:[function(require,module,exports){ (function (__filename,__dirname){ var GeoPackageManager = require('../../lib/geoPackageManager') , should = require('chai').should() @@ -97054,7 +104732,8 @@ describe('GeoPackageManager tests', function() { }); }).call(this,"/test/lib/testGeoPackageManager.js","/test/lib") -},{"../../lib/geoPackageManager":28,"chai":118,"path":332}],441:[function(require,module,exports){ + +},{"../../lib/geoPackageManager":28,"chai":121,"path":625}],739:[function(require,module,exports){ (function (Buffer,__dirname){ var GeoPackageManager = require('../../lib/geoPackageManager') , testSetup = require('../fixtures/testSetup') @@ -97105,7 +104784,8 @@ describe('GeoPackageManager Create tests', function() { }); }).call(this,require("buffer").Buffer,"/test/lib") -},{"../../lib/geoPackageManager":28,"../fixtures/testSetup":422,"buffer":116,"chai":118,"path":332}],442:[function(require,module,exports){ + +},{"../../lib/geoPackageManager":28,"../fixtures/testSetup":717,"buffer":119,"chai":121,"path":625}],740:[function(require,module,exports){ (function (__dirname){ var GeoPackageConnection = require('../../lib/db/geoPackageConnection') , GeoPackage = require('../../lib/geoPackage') @@ -97317,7 +104997,173 @@ describe('GeoPackage Tile table create tests', function() { }); }).call(this,"/test/lib") -},{"../../lib/boundingBox":2,"../../lib/db/dataTypes":9,"../../lib/db/geoPackageConnection":10,"../../lib/db/tableCreator":14,"../../lib/features/user/featureColumn":21,"../../lib/geoPackage":26,"../../lib/geom/geometryData":30,"../../lib/tiles/tileBoundingBoxUtils":43,"../../lib/tiles/user/tileTable":49,"../fixtures/setupFeatureTable":421,"../fixtures/testSetup":422,"../fixtures/verification":424,"async":82,"chai":118,"path":332,"wkx":419}],443:[function(require,module,exports){ + +},{"../../lib/boundingBox":2,"../../lib/db/dataTypes":9,"../../lib/db/geoPackageConnection":10,"../../lib/db/tableCreator":14,"../../lib/features/user/featureColumn":21,"../../lib/geoPackage":26,"../../lib/geom/geometryData":30,"../../lib/tiles/tileBoundingBoxUtils":43,"../../lib/tiles/user/tileTable":49,"../fixtures/setupFeatureTable":716,"../fixtures/testSetup":717,"../fixtures/verification":719,"async":82,"chai":121,"path":625,"wkx":714}],741:[function(require,module,exports){ +(function (__dirname){ +var GeoPackageManager = require('../../../../lib/geoPackageManager') + , FeatureTiles = require('../../../../lib/tiles/features') + , GeoPackage = require('../../../..') + , testSetup = require('../../../fixtures/testSetup') + , fs = require('fs') + , async = require('async') + , should = require('chai').should() + , path = require('path'); + +describe('GeoPackage FeatureTiles tests', function() { + + describe('Rivers GeoPackage tests', function() { + + var geoPackage; + var featureDao; + + beforeEach('should open the geopackage', function(done) { + var filename = path.join(__dirname, '..', '..', '..', 'fixtures', 'rivers.gpkg'); + GeoPackageManager.open(filename, function(err, gp) { + geoPackage = gp; + should.not.exist(err); + should.exist(gp); + should.exist(gp.getDatabase().getDBConnection()); + gp.getPath().should.be.equal(filename); + geoPackage.getFeatureDaoWithTableName('FEATURESriversds', function(err, riverFeatureDao) { + featureDao = riverFeatureDao; + done(); + }); + }); + }); + + afterEach('should close the geopackage', function() { + geoPackage.close(); + }); + + it('should get the x: 1, y: 0, z: 1 tile', function(done) { + this.timeout(30000); + var ft = new FeatureTiles(featureDao); + ft.drawTile(1, 0, 1, function(err, image) { + testSetup.diffImages(image, path.join(__dirname, '..','..','..', 'fixtures','featuretiles','1_1_0.png'), function(err, equal) { + equal.should.be.equal(true); + done(); + }); + }); + }); + + it('should get the x: 1, y: 0, z: 1 tile from the GeoPackage api', function(done) { + this.timeout(30000); + console.time('Generating non indexed tiles'); + GeoPackage.getFeatureTileFromXYZ(geoPackage, 'FEATURESriversds', 1, 0, 1, 256, 256, function(err, data) { + if (!data) return done(err); + // fs.writeFile('/tmp/1_1_0_unindexed.png', data, function() { + // done(err); + // }); + console.timeEnd('Generating non indexed tiles'); + testSetup.diffImages(data, path.join(__dirname, '..','..','..','fixtures','featuretiles','1_1_0.png'), function(err, equal) { + equal.should.be.equal(true); + done(); + }); + }); + }); + + it('should get the x: 8, y: 12, z: 5 tile from the GeoPackage api', function(done) { + this.timeout(30000); + console.time('Generating non indexed tiles'); + GeoPackage.getFeatureTileFromXYZ(geoPackage, 'FEATURESriversds', 8, 12, 5, 256, 256, function(err, data) { + console.timeEnd('Generating non indexed tiles'); + if (!data) return done(err); + testSetup.diffImages(data, path.join(__dirname, '..','..','..','fixtures','featuretiles','5_8_12.png'), function(err, equal) { + equal.should.be.equal(true); + delete data; + done(); + }); + }); + }); + }); + + describe('Indexed Rivers GeoPackage tests', function() { + + var geoPackage; + var featureDao; + + beforeEach('should open the geopackage', function(done) { + var filename = path.join(__dirname, '..', '..', '..', 'fixtures', 'rivers_indexed.gpkg'); + GeoPackageManager.open(filename, function(err, gp) { + geoPackage = gp; + should.not.exist(err); + should.exist(gp); + should.exist(gp.getDatabase().getDBConnection()); + gp.getPath().should.be.equal(filename); + geoPackage.getFeatureDaoWithTableName('rivers', function(err, riverFeatureDao) { + featureDao = riverFeatureDao; + done(); + }); + }); + }); + + afterEach('should close the geopackage', function() { + geoPackage.close(); + }); + + it('should get the x: 1, y: 0, z: 1 tile', function(done) { + this.timeout(30000); + var ft = new FeatureTiles(featureDao); + ft.drawTile(1, 0, 1, function(err, image) { + testSetup.diffImages(image, path.join(__dirname, '..','..','..','fixtures','featuretiles','1_1_0.png'), function(err, equal) { + equal.should.be.equal(true); + delete image; + done(); + }); + }); + }); + + it('should get the x: 1, y: 0, z: 1 tile from the GeoPackage api', function(done) { + this.timeout(30000); + console.time('generating indexed tile'); + GeoPackage.getFeatureTileFromXYZ(geoPackage, 'rivers', 1, 0, 1, 256, 256, function(err, data) { + console.timeEnd('generating indexed tile'); + if (!data) return done(err); + testSetup.diffImages(data, path.join(__dirname, '..','..','..','fixtures','featuretiles','1_1_0.png'), function(err, equal) { + equal.should.be.equal(true); + delete data; + done(); + }); + }); + }); + + it('should get the x: 0, y: 0, z: 0 tile from the GeoPackage api', function(done) { + this.timeout(30000); + console.time('generating indexed tile'); + GeoPackage.getFeatureTileFromXYZ(geoPackage, 'rivers', 0, 0, 0, 256, 256, function(err, data) { + console.timeEnd('generating indexed tile'); + if (!data) return done(err); + // fs.writeFile('/tmp/0_0_0.png', data, function() { + // done(); + // }); + testSetup.diffImages(data, path.join(__dirname, '..','..','..','fixtures','featuretiles','0_0_0.png'), function(err, equal) { + equal.should.be.equal(true); + delete data; + done(); + }); + }); + }); + + it('should get the x: 8, y: 12, z: 5 tile from the GeoPackage api', function(done) { + this.timeout(30000); + console.time('generating indexed tile'); + GeoPackage.getFeatureTileFromXYZ(geoPackage, 'rivers', 8, 12, 5, 256, 256, function(err, data) { + console.timeEnd('generating indexed tile'); + if (!data) return done(err); + testSetup.diffImages(data, path.join(__dirname, '..','..','..','fixtures','featuretiles','5_8_12.png'), function(err, equal) { + equal.should.be.equal(true); + delete data; + done(); + }); + }); + }); + + }); +}); + +}).call(this,"/test/lib/tiles/features") + +},{"../../../..":1,"../../../../lib/geoPackageManager":28,"../../../../lib/tiles/features":39,"../../../fixtures/testSetup":717,"async":82,"chai":121,"fs":115,"path":625}],742:[function(require,module,exports){ (function (process,__dirname){ var GeoPackageManager = require('../../../lib/geoPackageManager') , GeoPackageTileRetriever = require('../../../lib/tiles/retriever') @@ -97400,7 +105246,6 @@ describe('GeoPackage Tile Retriever tests', function() { testSetup.diffImages(tile, path.join(__dirname, '..', '..', 'fixtures', 'tiles', zoom.toString(), xTile.toString(), yTile.toString()+'.png'), function(err, equal) { console.log(path.join(__dirname, '..', '..', 'fixtures', 'tiles', zoom.toString(), xTile.toString(), yTile.toString()+'.png') + ' passes?', equal); equal.should.be.equal(true); - delete tile; yDone(); }); }); @@ -97522,7 +105367,6 @@ describe('GeoPackage Tile Retriever tests', function() { } testSetup.diffImages(tile, expectedPath, function (err, imagesAreSame) { imagesAreSame.should.be.equal(true); - delete tile; done(err); }); }); @@ -97534,7 +105378,6 @@ describe('GeoPackage Tile Retriever tests', function() { gpr.getTile(0, 4, 4, function(err, tile) { testSetup.diffImagesWithDimensions(tile, path.join(__dirname, '..','..','fixtures','tiles','450tile.png'), 450, 450, function (err, imagesAreSame) { imagesAreSame.should.be.equal(true); - delete tile; done(err); }); }); @@ -97580,7 +105423,6 @@ describe('GeoPackage Tile Retriever tests', function() { } testSetup.diffImages(tile, expectedPath, function (err, imagesAreSame) { imagesAreSame.should.be.equal(true); - delete tile; done(err); }); }); @@ -97589,7 +105431,8 @@ describe('GeoPackage Tile Retriever tests', function() { }); }).call(this,require('_process'),"/test/lib/tiles") -},{"../../..":1,"../../../lib/boundingBox":2,"../../../lib/geoPackageManager":28,"../../../lib/tiles/retriever":42,"../../fixtures/testSetup":422,"_process":357,"async":82,"chai":118,"fs":113,"path":332}],444:[function(require,module,exports){ + +},{"../../..":1,"../../../lib/boundingBox":2,"../../../lib/geoPackageManager":28,"../../../lib/tiles/retriever":42,"../../fixtures/testSetup":717,"_process":650,"async":82,"chai":121,"fs":115,"path":625}],743:[function(require,module,exports){ var TileBoundingBoxUtils = require('../../../lib/tiles/tileBoundingBoxUtils') , BoundingBox = require('../../../lib/boundingBox'); @@ -97921,7 +105764,7 @@ describe('TileBoundingBoxUtils tests', function() { }); -},{"../../../lib/boundingBox":2,"../../../lib/tiles/tileBoundingBoxUtils":43}],445:[function(require,module,exports){ +},{"../../../lib/boundingBox":2,"../../../lib/tiles/tileBoundingBoxUtils":43}],744:[function(require,module,exports){ (function (__dirname){ var GeoPackageManager = require('../../../lib/geoPackageManager') , TileDao = require('../../../lib/tiles/user/tileDao') @@ -98228,7 +106071,8 @@ describe('TileDao tests', function() { }); }).call(this,"/test/lib/tiles") -},{"../../../lib/geoPackageManager":28,"../../../lib/tiles/user/tileDao":46,"async":82,"chai":118,"path":332}],446:[function(require,module,exports){ + +},{"../../../lib/geoPackageManager":28,"../../../lib/tiles/user/tileDao":46,"async":82,"chai":121,"path":625}],745:[function(require,module,exports){ var TileGrid = require('../../../lib/tiles/tileGrid.js'); describe('TileGrid tests', function() { @@ -98257,7 +106101,7 @@ describe('TileGrid tests', function() { }); -},{"../../../lib/tiles/tileGrid.js":44}],447:[function(require,module,exports){ +},{"../../../lib/tiles/tileGrid.js":44}],746:[function(require,module,exports){ (function (__dirname){ var GeoPackageManager = require('../../../lib/geoPackageManager') , TileMatrixDao = require('../../../lib/tiles/matrix').TileMatrixDao @@ -98363,7 +106207,8 @@ describe('Tile Matrix tests', function() { }); }).call(this,"/test/lib/tiles") -},{"../../../lib/geoPackageManager":28,"../../../lib/tiles/matrix":40,"chai":118,"path":332}],448:[function(require,module,exports){ + +},{"../../../lib/geoPackageManager":28,"../../../lib/tiles/matrix":40,"chai":121,"path":625}],747:[function(require,module,exports){ (function (__dirname){ var GeoPackageManager = require('../../../lib/geoPackageManager') , TileMatrixSetDao = require('../../../lib/tiles/matrixset').TileMatrixSetDao @@ -98489,7 +106334,8 @@ describe('Tile Matrix Set tests', function() { }); }).call(this,"/test/lib/tiles") -},{"../../../lib/boundingBox":2,"../../../lib/geoPackageManager":28,"../../../lib/tiles/matrixset":41,"chai":118,"path":332}],449:[function(require,module,exports){ + +},{"../../../lib/boundingBox":2,"../../../lib/geoPackageManager":28,"../../../lib/tiles/matrixset":41,"chai":121,"path":625}],748:[function(require,module,exports){ (function (__dirname){ var UserTableReader = require('../../../lib/user/userTableReader.js') , UserDao = require('../../../lib/user/userDao') @@ -98570,7 +106416,8 @@ describe('UserTableReader tests', function() { }); }).call(this,"/test/lib/user") -},{"../../../lib/db/geoPackageConnection.js":10,"../../../lib/user/userDao":52,"../../../lib/user/userTableReader.js":55,"chai":118,"path":332}],450:[function(require,module,exports){ + +},{"../../../lib/db/geoPackageConnection.js":10,"../../../lib/user/userDao":52,"../../../lib/user/userTableReader.js":55,"chai":121,"path":625}],749:[function(require,module,exports){ (function (__dirname){ var GeoPackageValidate = require('../../../lib/validate/geoPackageValidate') , GeoPackage = require('../../../lib/geoPackage') @@ -98640,7 +106487,8 @@ describe('GeoPackage Validate tests', function() { }); }).call(this,"/test/lib/validate") -},{"../../../lib/db/geoPackageConnection":10,"../../../lib/geoPackage":26,"../../../lib/validate/geoPackageValidate":56,"chai":118,"path":332}],451:[function(require,module,exports){ + +},{"../../../lib/db/geoPackageConnection":10,"../../../lib/geoPackage":26,"../../../lib/validate/geoPackageValidate":56,"chai":121,"path":625}],750:[function(require,module,exports){ var WKB = require('../../../lib/wkb'); var wkx = require('wkx'); @@ -98687,7 +106535,9 @@ describe('WKB tests', function() { }); }); -},{"../../../lib/wkb":57,"wkx":419}],452:[function(require,module,exports){ +},{"../../../lib/wkb":57,"wkx":714}],751:[function(require,module,exports){ +var polyfill = require('babel-polyfill'); + require('chai').should(); require('./lib/core/contents/testContents'); @@ -98718,6 +106568,10 @@ require('./lib/testGeoPackageCreate'); require('./lib/testGeoPackageManager'); require('./lib/testGeoPackageManagerCreate'); require('./lib/testTileCreate'); +require('./lib/issues/issue68.js'); +require('./lib/tiles/features/testFeatureTiles'); +require('./lib/extension/index/testFeatureTableIndex'); +require('./lib/extension/testExtensionDao'); describe('Array', function() { describe('#indexOf()', function() { @@ -98728,5 +106582,6 @@ describe('Array', function() { }); }); -},{"./lib/core/contents/testContents":425,"./lib/core/srs/testSpatialReferenceSystem":426,"./lib/dataColumns/testDataColumns":427,"./lib/db/testDataTypes":428,"./lib/db/testTableCreator":429,"./lib/features/columns/testGeometryColumns":430,"./lib/features/user/testFeatureDao":431,"./lib/features/user/testFeatureTableReader":432,"./lib/geom/testGeometryData":433,"./lib/metadata/reference/testMetadataReference.js":434,"./lib/metadata/testMetadata":435,"./lib/testBoundingBox":436,"./lib/testFeatureCreate":437,"./lib/testGeoPackage":438,"./lib/testGeoPackageCreate":439,"./lib/testGeoPackageManager":440,"./lib/testGeoPackageManagerCreate":441,"./lib/testTileCreate":442,"./lib/tiles/testGeopackageTileRetriever":443,"./lib/tiles/testTileBoundingBoxUtils":444,"./lib/tiles/testTileDao":445,"./lib/tiles/testTileGrid":446,"./lib/tiles/testTileMatrix":447,"./lib/tiles/testTileMatrixSet":448,"./lib/user/testUserTableReader":449,"./lib/validate/testGeoPackageValidate":450,"./lib/wkb/testWkb":451,"chai":118}]},{},[452])(452) -}); \ No newline at end of file +},{"./lib/core/contents/testContents":720,"./lib/core/srs/testSpatialReferenceSystem":721,"./lib/dataColumns/testDataColumns":722,"./lib/db/testDataTypes":723,"./lib/db/testTableCreator":724,"./lib/extension/index/testFeatureTableIndex":725,"./lib/extension/testExtensionDao":726,"./lib/features/columns/testGeometryColumns":727,"./lib/features/user/testFeatureDao":728,"./lib/features/user/testFeatureTableReader":729,"./lib/geom/testGeometryData":730,"./lib/issues/issue68.js":731,"./lib/metadata/reference/testMetadataReference.js":732,"./lib/metadata/testMetadata":733,"./lib/testBoundingBox":734,"./lib/testFeatureCreate":735,"./lib/testGeoPackage":736,"./lib/testGeoPackageCreate":737,"./lib/testGeoPackageManager":738,"./lib/testGeoPackageManagerCreate":739,"./lib/testTileCreate":740,"./lib/tiles/features/testFeatureTiles":741,"./lib/tiles/testGeopackageTileRetriever":742,"./lib/tiles/testTileBoundingBoxUtils":743,"./lib/tiles/testTileDao":744,"./lib/tiles/testTileGrid":745,"./lib/tiles/testTileMatrix":746,"./lib/tiles/testTileMatrixSet":747,"./lib/user/testUserTableReader":748,"./lib/validate/testGeoPackageValidate":749,"./lib/wkb/testWkb":750,"babel-polyfill":83,"chai":121}]},{},[751])(751) +}); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCJpbmRleC5qcyIsImxpYi9ib3VuZGluZ0JveC5qcyIsImxpYi9jb3JlL2NvbnRlbnRzL2luZGV4LmpzIiwibGliL2NvcmUvc3JzL2luZGV4LmpzIiwibGliL2Rhby9jb2x1bW5WYWx1ZXMuanMiLCJsaWIvZGFvL2Rhby5qcyIsImxpYi9kYXRhQ29sdW1uQ29uc3RyYWludHMvaW5kZXguanMiLCJsaWIvZGF0YUNvbHVtbnMvaW5kZXguanMiLCJsaWIvZGIvZGF0YVR5cGVzLmpzIiwibGliL2RiL2dlb1BhY2thZ2VDb25uZWN0aW9uLmpzIiwibGliL2RiL3NxbGl0ZUFkYXB0ZXIuanMiLCJsaWIvZGIvc3FsaXRlUXVlcnlCdWlsZGVyLmpzIiwibGliL2RiL3NxbGpzQWRhcHRlci5qcyIsImxpYi9kYi90YWJsZUNyZWF0b3IuanMiLCJsaWIvZXh0ZW5zaW9uL2Jhc2VFeHRlbnNpb24uanMiLCJsaWIvZXh0ZW5zaW9uL2luZGV4LmpzIiwibGliL2V4dGVuc2lvbi9pbmRleC9mZWF0dXJlVGFibGVJbmRleC5qcyIsImxpYi9leHRlbnNpb24vaW5kZXgvZ2VvbWV0cnlJbmRleC5qcyIsImxpYi9leHRlbnNpb24vaW5kZXgvdGFibGVJbmRleC5qcyIsImxpYi9mZWF0dXJlcy9jb2x1bW5zL2luZGV4LmpzIiwibGliL2ZlYXR1cmVzL3VzZXIvZmVhdHVyZUNvbHVtbi5qcyIsImxpYi9mZWF0dXJlcy91c2VyL2ZlYXR1cmVEYW8uanMiLCJsaWIvZmVhdHVyZXMvdXNlci9mZWF0dXJlUm93LmpzIiwibGliL2ZlYXR1cmVzL3VzZXIvZmVhdHVyZVRhYmxlLmpzIiwibGliL2ZlYXR1cmVzL3VzZXIvZmVhdHVyZVRhYmxlUmVhZGVyLmpzIiwibGliL2dlb1BhY2thZ2UuanMiLCJsaWIvZ2VvUGFja2FnZUNvbnN0YW50cy5qcyIsImxpYi9nZW9QYWNrYWdlTWFuYWdlci5qcyIsImxpYi9nZW9tL2VudmVsb3BlQnVpbGRlci5qcyIsImxpYi9nZW9tL2dlb21ldHJ5RGF0YS5qcyIsImxpYi9tZXRhZGF0YS9pbmRleC5qcyIsImxpYi9tZXRhZGF0YS9yZWZlcmVuY2UvaW5kZXguanMiLCJsaWIvcHJvajREZWZzLmpzIiwibGliL3RpbGVzL2NyZWF0b3IvY2FudmFzLmpzIiwibGliL3RpbGVzL2NyZWF0b3IvaW5kZXguanMiLCJsaWIvdGlsZXMvY3JlYXRvci9sd2lwLmpzIiwibGliL3RpbGVzL2NyZWF0b3IvdGlsZVV0aWxpdGllcy5qcyIsImxpYi90aWxlcy9jcmVhdG9yL3RpbGVXb3JrZXIuanMiLCJsaWIvdGlsZXMvZmVhdHVyZXMvaW5kZXguanMiLCJsaWIvdGlsZXMvbWF0cml4L2luZGV4LmpzIiwibGliL3RpbGVzL21hdHJpeHNldC9pbmRleC5qcyIsImxpYi90aWxlcy9yZXRyaWV2ZXIvaW5kZXguanMiLCJsaWIvdGlsZXMvdGlsZUJvdW5kaW5nQm94VXRpbHMuanMiLCJsaWIvdGlsZXMvdGlsZUdyaWQuanMiLCJsaWIvdGlsZXMvdXNlci90aWxlQ29sdW1uLmpzIiwibGliL3RpbGVzL3VzZXIvdGlsZURhby5qcyIsImxpYi90aWxlcy91c2VyL3RpbGVEYW9VdGlscy5qcyIsImxpYi90aWxlcy91c2VyL3RpbGVSb3cuanMiLCJsaWIvdGlsZXMvdXNlci90aWxlVGFibGUuanMiLCJsaWIvdGlsZXMvdXNlci90aWxlVGFibGVSZWFkZXIuanMiLCJsaWIvdXNlci91c2VyQ29sdW1uLmpzIiwibGliL3VzZXIvdXNlckRhby5qcyIsImxpYi91c2VyL3VzZXJSb3cuanMiLCJsaWIvdXNlci91c2VyVGFibGUuanMiLCJsaWIvdXNlci91c2VyVGFibGVSZWFkZXIuanMiLCJsaWIvdmFsaWRhdGUvZ2VvUGFja2FnZVZhbGlkYXRlLmpzIiwibGliL3drYi9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9AbWFwYm94L3RpbGViZWx0L2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL0B0dXJmL2Jib3gvaW5kZXguanMiLCJub2RlX21vZHVsZXMvQHR1cmYvbWV0YS9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9hbnktcHJvbWlzZS9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9hbnktcHJvbWlzZS9sb2FkZXIuanMiLCJub2RlX21vZHVsZXMvYW55LXByb21pc2UvcmVnaXN0ZXItc2hpbS5qcyIsIm5vZGVfbW9kdWxlcy9hcnJheS1wYXJhbGxlbC9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9hcnJheS1zZXJpZXMvaW5kZXguanMiLCJub2RlX21vZHVsZXMvYXNuMS5qcy9saWIvYXNuMS5qcyIsIm5vZGVfbW9kdWxlcy9hc24xLmpzL2xpYi9hc24xL2FwaS5qcyIsIm5vZGVfbW9kdWxlcy9hc24xLmpzL2xpYi9hc24xL2Jhc2UvYnVmZmVyLmpzIiwibm9kZV9tb2R1bGVzL2FzbjEuanMvbGliL2FzbjEvYmFzZS9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9hc24xLmpzL2xpYi9hc24xL2Jhc2Uvbm9kZS5qcyIsIm5vZGVfbW9kdWxlcy9hc24xLmpzL2xpYi9hc24xL2Jhc2UvcmVwb3J0ZXIuanMiLCJub2RlX21vZHVsZXMvYXNuMS5qcy9saWIvYXNuMS9jb25zdGFudHMvZGVyLmpzIiwibm9kZV9tb2R1bGVzL2FzbjEuanMvbGliL2FzbjEvY29uc3RhbnRzL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2FzbjEuanMvbGliL2FzbjEvZGVjb2RlcnMvZGVyLmpzIiwibm9kZV9tb2R1bGVzL2FzbjEuanMvbGliL2FzbjEvZGVjb2RlcnMvaW5kZXguanMiLCJub2RlX21vZHVsZXMvYXNuMS5qcy9saWIvYXNuMS9kZWNvZGVycy9wZW0uanMiLCJub2RlX21vZHVsZXMvYXNuMS5qcy9saWIvYXNuMS9lbmNvZGVycy9kZXIuanMiLCJub2RlX21vZHVsZXMvYXNuMS5qcy9saWIvYXNuMS9lbmNvZGVycy9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9hc24xLmpzL2xpYi9hc24xL2VuY29kZXJzL3BlbS5qcyIsIm5vZGVfbW9kdWxlcy9hc3NlcnQvYXNzZXJ0LmpzIiwibm9kZV9tb2R1bGVzL2Fzc2VydGlvbi1lcnJvci9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9hc3luYy9kaXN0L2FzeW5jLmpzIiwibm9kZV9tb2R1bGVzL2JhYmVsLXBvbHlmaWxsL2xpYi9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9iYXNlNjQtanMvaW5kZXguanMiLCJub2RlX21vZHVsZXMvYm4uanMvbGliL2JuLmpzIiwibm9kZV9tb2R1bGVzL2Jyb3JhbmQvaW5kZXguanMiLCJub2RlX21vZHVsZXMvYnJvd3Nlci1yZXNvbHZlL2VtcHR5LmpzIiwibm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktYWVzL2Flcy5qcyIsIm5vZGVfbW9kdWxlcy9icm93c2VyaWZ5LWFlcy9hdXRoQ2lwaGVyLmpzIiwibm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktYWVzL2Jyb3dzZXIuanMiLCJub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1hZXMvZGVjcnlwdGVyLmpzIiwibm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktYWVzL2VuY3J5cHRlci5qcyIsIm5vZGVfbW9kdWxlcy9icm93c2VyaWZ5LWFlcy9naGFzaC5qcyIsIm5vZGVfbW9kdWxlcy9icm93c2VyaWZ5LWFlcy9tb2Rlcy5qcyIsIm5vZGVfbW9kdWxlcy9icm93c2VyaWZ5LWFlcy9tb2Rlcy9jYmMuanMiLCJub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1hZXMvbW9kZXMvY2ZiLmpzIiwibm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktYWVzL21vZGVzL2NmYjEuanMiLCJub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1hZXMvbW9kZXMvY2ZiOC5qcyIsIm5vZGVfbW9kdWxlcy9icm93c2VyaWZ5LWFlcy9tb2Rlcy9jdHIuanMiLCJub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1hZXMvbW9kZXMvZWNiLmpzIiwibm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktYWVzL21vZGVzL29mYi5qcyIsIm5vZGVfbW9kdWxlcy9icm93c2VyaWZ5LWFlcy9zdHJlYW1DaXBoZXIuanMiLCJub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1jaXBoZXIvYnJvd3Nlci5qcyIsIm5vZGVfbW9kdWxlcy9icm93c2VyaWZ5LWRlcy9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9icm93c2VyaWZ5LWRlcy9tb2Rlcy5qcyIsIm5vZGVfbW9kdWxlcy9icm93c2VyaWZ5LXJzYS9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9icm93c2VyaWZ5LXNpZ24vYWxnb3MuanMiLCJub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1zaWduL2Jyb3dzZXIvYWxnb3JpdGhtcy5qc29uIiwibm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktc2lnbi9icm93c2VyL2N1cnZlcy5qc29uIiwibm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktc2lnbi9icm93c2VyL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktc2lnbi9icm93c2VyL3NpZ24uanMiLCJub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1zaWduL2Jyb3dzZXIvdmVyaWZ5LmpzIiwibm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktemxpYi9zcmMvYmluZGluZy5qcyIsIm5vZGVfbW9kdWxlcy9icm93c2VyaWZ5LXpsaWIvc3JjL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnkvbm9kZV9tb2R1bGVzL3N0cmluZ19kZWNvZGVyL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2J1ZmZlci1zaGltcy9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9idWZmZXIteG9yL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2J1ZmZlci9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9idWZmZXJlZC1zcGF3bi9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9jaGFpL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2NoYWkvbGliL2NoYWkuanMiLCJub2RlX21vZHVsZXMvY2hhaS9saWIvY2hhaS9hc3NlcnRpb24uanMiLCJub2RlX21vZHVsZXMvY2hhaS9saWIvY2hhaS9jb25maWcuanMiLCJub2RlX21vZHVsZXMvY2hhaS9saWIvY2hhaS9jb3JlL2Fzc2VydGlvbnMuanMiLCJub2RlX21vZHVsZXMvY2hhaS9saWIvY2hhaS9pbnRlcmZhY2UvYXNzZXJ0LmpzIiwibm9kZV9tb2R1bGVzL2NoYWkvbGliL2NoYWkvaW50ZXJmYWNlL2V4cGVjdC5qcyIsIm5vZGVfbW9kdWxlcy9jaGFpL2xpYi9jaGFpL2ludGVyZmFjZS9zaG91bGQuanMiLCJub2RlX21vZHVsZXMvY2hhaS9saWIvY2hhaS91dGlscy9hZGRDaGFpbmFibGVNZXRob2QuanMiLCJub2RlX21vZHVsZXMvY2hhaS9saWIvY2hhaS91dGlscy9hZGRNZXRob2QuanMiLCJub2RlX21vZHVsZXMvY2hhaS9saWIvY2hhaS91dGlscy9hZGRQcm9wZXJ0eS5qcyIsIm5vZGVfbW9kdWxlcy9jaGFpL2xpYi9jaGFpL3V0aWxzL2V4cGVjdFR5cGVzLmpzIiwibm9kZV9tb2R1bGVzL2NoYWkvbGliL2NoYWkvdXRpbHMvZmxhZy5qcyIsIm5vZGVfbW9kdWxlcy9jaGFpL2xpYi9jaGFpL3V0aWxzL2dldEFjdHVhbC5qcyIsIm5vZGVfbW9kdWxlcy9jaGFpL2xpYi9jaGFpL3V0aWxzL2dldEVudW1lcmFibGVQcm9wZXJ0aWVzLmpzIiwibm9kZV9tb2R1bGVzL2NoYWkvbGliL2NoYWkvdXRpbHMvZ2V0TWVzc2FnZS5qcyIsIm5vZGVfbW9kdWxlcy9jaGFpL2xpYi9jaGFpL3V0aWxzL2dldE5hbWUuanMiLCJub2RlX21vZHVsZXMvY2hhaS9saWIvY2hhaS91dGlscy9nZXRQYXRoSW5mby5qcyIsIm5vZGVfbW9kdWxlcy9jaGFpL2xpYi9jaGFpL3V0aWxzL2dldFBhdGhWYWx1ZS5qcyIsIm5vZGVfbW9kdWxlcy9jaGFpL2xpYi9jaGFpL3V0aWxzL2dldFByb3BlcnRpZXMuanMiLCJub2RlX21vZHVsZXMvY2hhaS9saWIvY2hhaS91dGlscy9oYXNQcm9wZXJ0eS5qcyIsIm5vZGVfbW9kdWxlcy9jaGFpL2xpYi9jaGFpL3V0aWxzL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2NoYWkvbGliL2NoYWkvdXRpbHMvaW5zcGVjdC5qcyIsIm5vZGVfbW9kdWxlcy9jaGFpL2xpYi9jaGFpL3V0aWxzL29iakRpc3BsYXkuanMiLCJub2RlX21vZHVsZXMvY2hhaS9saWIvY2hhaS91dGlscy9vdmVyd3JpdGVDaGFpbmFibGVNZXRob2QuanMiLCJub2RlX21vZHVsZXMvY2hhaS9saWIvY2hhaS91dGlscy9vdmVyd3JpdGVNZXRob2QuanMiLCJub2RlX21vZHVsZXMvY2hhaS9saWIvY2hhaS91dGlscy9vdmVyd3JpdGVQcm9wZXJ0eS5qcyIsIm5vZGVfbW9kdWxlcy9jaGFpL2xpYi9jaGFpL3V0aWxzL3Rlc3QuanMiLCJub2RlX21vZHVsZXMvY2hhaS9saWIvY2hhaS91dGlscy90cmFuc2ZlckZsYWdzLmpzIiwibm9kZV9tb2R1bGVzL2NpcGhlci1iYXNlL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2NvbmNhdC1zdHJlYW0vaW5kZXguanMiLCJub2RlX21vZHVsZXMvY29uc3RhbnRzLWJyb3dzZXJpZnkvY29uc3RhbnRzLmpzb24iLCJub2RlX21vZHVsZXMvY29yZS1qcy9mbi9yZWdleHAvZXNjYXBlLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fYS1mdW5jdGlvbi5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2EtbnVtYmVyLXZhbHVlLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fYWRkLXRvLXVuc2NvcGFibGVzLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fYW4taW5zdGFuY2UuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19hbi1vYmplY3QuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19hcnJheS1jb3B5LXdpdGhpbi5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2FycmF5LWZpbGwuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19hcnJheS1mcm9tLWl0ZXJhYmxlLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fYXJyYXktaW5jbHVkZXMuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19hcnJheS1tZXRob2RzLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fYXJyYXktcmVkdWNlLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fYXJyYXktc3BlY2llcy1jb25zdHJ1Y3Rvci5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2FycmF5LXNwZWNpZXMtY3JlYXRlLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fYmluZC5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2NsYXNzb2YuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19jb2YuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19jb2xsZWN0aW9uLXN0cm9uZy5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2NvbGxlY3Rpb24tdG8tanNvbi5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2NvbGxlY3Rpb24td2Vhay5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2NvbGxlY3Rpb24uanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19jb3JlLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fY3JlYXRlLXByb3BlcnR5LmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fY3R4LmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fZGF0ZS10by1wcmltaXRpdmUuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19kZWZpbmVkLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fZGVzY3JpcHRvcnMuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19kb20tY3JlYXRlLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fZW51bS1idWcta2V5cy5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2VudW0ta2V5cy5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2V4cG9ydC5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2ZhaWxzLWlzLXJlZ2V4cC5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2ZhaWxzLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fZml4LXJlLXdrcy5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2ZsYWdzLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fZm9yLW9mLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fZ2xvYmFsLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9faGFzLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9faGlkZS5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2h0bWwuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19pZTgtZG9tLWRlZmluZS5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2luaGVyaXQtaWYtcmVxdWlyZWQuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19pbnZva2UuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19pb2JqZWN0LmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9faXMtYXJyYXktaXRlci5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2lzLWFycmF5LmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9faXMtaW50ZWdlci5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2lzLW9iamVjdC5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2lzLXJlZ2V4cC5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2l0ZXItY2FsbC5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2l0ZXItY3JlYXRlLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9faXRlci1kZWZpbmUuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19pdGVyLWRldGVjdC5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2l0ZXItc3RlcC5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2l0ZXJhdG9ycy5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX2tleW9mLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fbGlicmFyeS5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX21hdGgtZXhwbTEuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19tYXRoLWxvZzFwLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fbWF0aC1zaWduLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fbWV0YS5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX21ldGFkYXRhLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fbWljcm90YXNrLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fb2JqZWN0LWFzc2lnbi5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX29iamVjdC1jcmVhdGUuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19vYmplY3QtZHAuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19vYmplY3QtZHBzLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fb2JqZWN0LWZvcmNlZC1wYW0uanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19vYmplY3QtZ29wZC5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX29iamVjdC1nb3BuLWV4dC5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX29iamVjdC1nb3BuLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fb2JqZWN0LWdvcHMuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19vYmplY3QtZ3BvLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fb2JqZWN0LWtleXMtaW50ZXJuYWwuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19vYmplY3Qta2V5cy5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX29iamVjdC1waWUuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19vYmplY3Qtc2FwLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fb2JqZWN0LXRvLWFycmF5LmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fb3duLWtleXMuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19wYXJzZS1mbG9hdC5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3BhcnNlLWludC5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3BhcnRpYWwuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19wYXRoLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fcHJvcGVydHktZGVzYy5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3JlZGVmaW5lLWFsbC5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3JlZGVmaW5lLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fcmVwbGFjZXIuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19zYW1lLXZhbHVlLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fc2V0LXByb3RvLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fc2V0LXNwZWNpZXMuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19zZXQtdG8tc3RyaW5nLXRhZy5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3NoYXJlZC1rZXkuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19zaGFyZWQuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19zcGVjaWVzLWNvbnN0cnVjdG9yLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fc3RyaWN0LW1ldGhvZC5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3N0cmluZy1hdC5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3N0cmluZy1jb250ZXh0LmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fc3RyaW5nLWh0bWwuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL19zdHJpbmctcGFkLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fc3RyaW5nLXJlcGVhdC5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3N0cmluZy10cmltLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fc3RyaW5nLXdzLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fdGFzay5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3RvLWluZGV4LmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fdG8taW50ZWdlci5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3RvLWlvYmplY3QuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL190by1sZW5ndGguanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL190by1vYmplY3QuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL190by1wcmltaXRpdmUuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL190eXBlZC1hcnJheS5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3R5cGVkLWJ1ZmZlci5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3R5cGVkLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fdWlkLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9fd2tzLWRlZmluZS5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvX3drcy1leHQuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL193a3MuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2NvcmUuZ2V0LWl0ZXJhdG9yLW1ldGhvZC5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvY29yZS5yZWdleHAuZXNjYXBlLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkuY29weS13aXRoaW4uanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5hcnJheS5ldmVyeS5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LmFycmF5LmZpbGwuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5hcnJheS5maWx0ZXIuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5hcnJheS5maW5kLWluZGV4LmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkuZmluZC5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LmFycmF5LmZvci1lYWNoLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkuZnJvbS5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LmFycmF5LmluZGV4LW9mLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkuaXMtYXJyYXkuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5hcnJheS5pdGVyYXRvci5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LmFycmF5LmpvaW4uanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5hcnJheS5sYXN0LWluZGV4LW9mLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkubWFwLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkub2YuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5hcnJheS5yZWR1Y2UtcmlnaHQuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5hcnJheS5yZWR1Y2UuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5hcnJheS5zbGljZS5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LmFycmF5LnNvbWUuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5hcnJheS5zb3J0LmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuYXJyYXkuc3BlY2llcy5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LmRhdGUubm93LmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuZGF0ZS50by1pc28tc3RyaW5nLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuZGF0ZS50by1qc29uLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuZGF0ZS50by1wcmltaXRpdmUuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5kYXRlLnRvLXN0cmluZy5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LmZ1bmN0aW9uLmJpbmQuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5mdW5jdGlvbi5oYXMtaW5zdGFuY2UuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5mdW5jdGlvbi5uYW1lLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubWFwLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubWF0aC5hY29zaC5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm1hdGguYXNpbmguanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5tYXRoLmF0YW5oLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubWF0aC5jYnJ0LmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubWF0aC5jbHozMi5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm1hdGguY29zaC5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm1hdGguZXhwbTEuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5tYXRoLmZyb3VuZC5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm1hdGguaHlwb3QuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5tYXRoLmltdWwuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5tYXRoLmxvZzEwLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubWF0aC5sb2cxcC5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm1hdGgubG9nMi5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm1hdGguc2lnbi5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm1hdGguc2luaC5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm1hdGgudGFuaC5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm1hdGgudHJ1bmMuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5udW1iZXIuY29uc3RydWN0b3IuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5udW1iZXIuZXBzaWxvbi5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm51bWJlci5pcy1maW5pdGUuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5udW1iZXIuaXMtaW50ZWdlci5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm51bWJlci5pcy1uYW4uanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5udW1iZXIuaXMtc2FmZS1pbnRlZ2VyLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYubnVtYmVyLm1heC1zYWZlLWludGVnZXIuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5udW1iZXIubWluLXNhZmUtaW50ZWdlci5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm51bWJlci5wYXJzZS1mbG9hdC5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm51bWJlci5wYXJzZS1pbnQuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5udW1iZXIudG8tZml4ZWQuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5udW1iZXIudG8tcHJlY2lzaW9uLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYub2JqZWN0LmFzc2lnbi5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm9iamVjdC5jcmVhdGUuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5vYmplY3QuZGVmaW5lLXByb3BlcnRpZXMuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5vYmplY3QuZGVmaW5lLXByb3BlcnR5LmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYub2JqZWN0LmZyZWV6ZS5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm9iamVjdC5nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3IuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5vYmplY3QuZ2V0LW93bi1wcm9wZXJ0eS1uYW1lcy5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm9iamVjdC5nZXQtcHJvdG90eXBlLW9mLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYub2JqZWN0LmlzLWV4dGVuc2libGUuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5vYmplY3QuaXMtZnJvemVuLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYub2JqZWN0LmlzLXNlYWxlZC5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm9iamVjdC5pcy5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm9iamVjdC5rZXlzLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYub2JqZWN0LnByZXZlbnQtZXh0ZW5zaW9ucy5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2Lm9iamVjdC5zZWFsLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYub2JqZWN0LnNldC1wcm90b3R5cGUtb2YuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5vYmplY3QudG8tc3RyaW5nLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucGFyc2UtZmxvYXQuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5wYXJzZS1pbnQuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5wcm9taXNlLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucmVmbGVjdC5hcHBseS5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnJlZmxlY3QuY29uc3RydWN0LmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucmVmbGVjdC5kZWZpbmUtcHJvcGVydHkuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5yZWZsZWN0LmRlbGV0ZS1wcm9wZXJ0eS5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnJlZmxlY3QuZW51bWVyYXRlLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucmVmbGVjdC5nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3IuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5yZWZsZWN0LmdldC1wcm90b3R5cGUtb2YuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5yZWZsZWN0LmdldC5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnJlZmxlY3QuaGFzLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucmVmbGVjdC5pcy1leHRlbnNpYmxlLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucmVmbGVjdC5vd24ta2V5cy5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnJlZmxlY3QucHJldmVudC1leHRlbnNpb25zLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucmVmbGVjdC5zZXQtcHJvdG90eXBlLW9mLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYucmVmbGVjdC5zZXQuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5yZWdleHAuY29uc3RydWN0b3IuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5yZWdleHAuZmxhZ3MuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5yZWdleHAubWF0Y2guanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5yZWdleHAucmVwbGFjZS5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnJlZ2V4cC5zZWFyY2guanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5yZWdleHAuc3BsaXQuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5yZWdleHAudG8tc3RyaW5nLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc2V0LmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLmFuY2hvci5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnN0cmluZy5iaWcuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5zdHJpbmcuYmxpbmsuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5zdHJpbmcuYm9sZC5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnN0cmluZy5jb2RlLXBvaW50LWF0LmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLmVuZHMtd2l0aC5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnN0cmluZy5maXhlZC5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnN0cmluZy5mb250Y29sb3IuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5zdHJpbmcuZm9udHNpemUuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5zdHJpbmcuZnJvbS1jb2RlLXBvaW50LmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLmluY2x1ZGVzLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLml0YWxpY3MuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5zdHJpbmcuaXRlcmF0b3IuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5zdHJpbmcubGluay5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnN0cmluZy5yYXcuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5zdHJpbmcucmVwZWF0LmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLnNtYWxsLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLnN0YXJ0cy13aXRoLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLnN0cmlrZS5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnN0cmluZy5zdWIuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5zdHJpbmcuc3VwLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYuc3RyaW5nLnRyaW0uanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi5zeW1ib2wuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi50eXBlZC5hcnJheS1idWZmZXIuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi50eXBlZC5kYXRhLXZpZXcuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi50eXBlZC5mbG9hdDMyLWFycmF5LmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYudHlwZWQuZmxvYXQ2NC1hcnJheS5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM2LnR5cGVkLmludDE2LWFycmF5LmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYudHlwZWQuaW50MzItYXJyYXkuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi50eXBlZC5pbnQ4LWFycmF5LmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYudHlwZWQudWludDE2LWFycmF5LmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYudHlwZWQudWludDMyLWFycmF5LmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYudHlwZWQudWludDgtYXJyYXkuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi50eXBlZC51aW50OC1jbGFtcGVkLWFycmF5LmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczYud2Vhay1tYXAuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNi53ZWFrLXNldC5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3LmFycmF5LmluY2x1ZGVzLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcuYXNhcC5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3LmVycm9yLmlzLWVycm9yLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcubWFwLnRvLWpzb24uanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5tYXRoLmlhZGRoLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcubWF0aC5pbXVsaC5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3Lm1hdGguaXN1YmguanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5tYXRoLnVtdWxoLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcub2JqZWN0LmRlZmluZS1nZXR0ZXIuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5vYmplY3QuZGVmaW5lLXNldHRlci5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3Lm9iamVjdC5lbnRyaWVzLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcub2JqZWN0LmdldC1vd24tcHJvcGVydHktZGVzY3JpcHRvcnMuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5vYmplY3QubG9va3VwLWdldHRlci5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3Lm9iamVjdC5sb29rdXAtc2V0dGVyLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcub2JqZWN0LnZhbHVlcy5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3Lm9ic2VydmFibGUuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5yZWZsZWN0LmRlZmluZS1tZXRhZGF0YS5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3LnJlZmxlY3QuZGVsZXRlLW1ldGFkYXRhLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcucmVmbGVjdC5nZXQtbWV0YWRhdGEta2V5cy5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3LnJlZmxlY3QuZ2V0LW1ldGFkYXRhLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcucmVmbGVjdC5nZXQtb3duLW1ldGFkYXRhLWtleXMuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5yZWZsZWN0LmdldC1vd24tbWV0YWRhdGEuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5yZWZsZWN0Lmhhcy1tZXRhZGF0YS5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3LnJlZmxlY3QuaGFzLW93bi1tZXRhZGF0YS5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3LnJlZmxlY3QubWV0YWRhdGEuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5zZXQudG8tanNvbi5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3LnN0cmluZy5hdC5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3LnN0cmluZy5tYXRjaC1hbGwuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5zdHJpbmcucGFkLWVuZC5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3LnN0cmluZy5wYWQtc3RhcnQuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5zdHJpbmcudHJpbS1sZWZ0LmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lczcuc3RyaW5nLnRyaW0tcmlnaHQuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5zeW1ib2wuYXN5bmMtaXRlcmF0b3IuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzNy5zeW1ib2wub2JzZXJ2YWJsZS5qcyIsIm5vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXM3LnN5c3RlbS5nbG9iYWwuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL3dlYi5kb20uaXRlcmFibGUuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL3dlYi5pbW1lZGlhdGUuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL3dlYi50aW1lcnMuanMiLCJub2RlX21vZHVsZXMvY29yZS1qcy9zaGltLmpzIiwibm9kZV9tb2R1bGVzL2NvcmUtdXRpbC1pcy9saWIvdXRpbC5qcyIsIm5vZGVfbW9kdWxlcy9jcmVhdGUtZWNkaC9icm93c2VyLmpzIiwibm9kZV9tb2R1bGVzL2NyZWF0ZS1oYXNoL2Jyb3dzZXIuanMiLCJub2RlX21vZHVsZXMvY3JlYXRlLWhhc2gvaGVscGVycy5qcyIsIm5vZGVfbW9kdWxlcy9jcmVhdGUtaGFzaC9tZDUuanMiLCJub2RlX21vZHVsZXMvY3JlYXRlLWhtYWMvYnJvd3Nlci5qcyIsIm5vZGVfbW9kdWxlcy9jcm9zcy1zcGF3bi1hc3luYy9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9jcm9zcy1zcGF3bi1hc3luYy9saWIvZW5vZW50LmpzIiwibm9kZV9tb2R1bGVzL2Nyb3NzLXNwYXduLWFzeW5jL2xpYi9wYXJzZS5qcyIsIm5vZGVfbW9kdWxlcy9jcm9zcy1zcGF3bi1hc3luYy9saWIvcmVzb2x2ZUNvbW1hbmQuanMiLCJub2RlX21vZHVsZXMvY3Jvc3Mtc3Bhd24tYXN5bmMvbGliL3V0aWwvbWl4SW4uanMiLCJub2RlX21vZHVsZXMvY3J5cHRvLWJyb3dzZXJpZnkvaW5kZXguanMiLCJub2RlX21vZHVsZXMvZDMtYXJyYXkvYnVpbGQvZDMtYXJyYXkuanMiLCJub2RlX21vZHVsZXMvZDMtZ2VvL2J1aWxkL2QzLWdlby5qcyIsIm5vZGVfbW9kdWxlcy9kZWJ1Zy9icm93c2VyLmpzIiwibm9kZV9tb2R1bGVzL2RlYnVnL2RlYnVnLmpzIiwibm9kZV9tb2R1bGVzL2RlZXAtZXFsL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2RlZXAtZXFsL2xpYi9lcWwuanMiLCJub2RlX21vZHVsZXMvZGVlcC1lcWwvbm9kZV9tb2R1bGVzL3R5cGUtZGV0ZWN0L2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2RlZXAtZXFsL25vZGVfbW9kdWxlcy90eXBlLWRldGVjdC9saWIvdHlwZS5qcyIsIm5vZGVfbW9kdWxlcy9kZXMuanMvbGliL2Rlcy5qcyIsIm5vZGVfbW9kdWxlcy9kZXMuanMvbGliL2Rlcy9jYmMuanMiLCJub2RlX21vZHVsZXMvZGVzLmpzL2xpYi9kZXMvY2lwaGVyLmpzIiwibm9kZV9tb2R1bGVzL2Rlcy5qcy9saWIvZGVzL2Rlcy5qcyIsIm5vZGVfbW9kdWxlcy9kZXMuanMvbGliL2Rlcy9lZGUuanMiLCJub2RlX21vZHVsZXMvZGVzLmpzL2xpYi9kZXMvdXRpbHMuanMiLCJub2RlX21vZHVsZXMvZGlmZmllLWhlbGxtYW4vYnJvd3Nlci5qcyIsIm5vZGVfbW9kdWxlcy9kaWZmaWUtaGVsbG1hbi9saWIvZGguanMiLCJub2RlX21vZHVsZXMvZGlmZmllLWhlbGxtYW4vbGliL2dlbmVyYXRlUHJpbWUuanMiLCJub2RlX21vZHVsZXMvZGlmZmllLWhlbGxtYW4vbGliL3ByaW1lcy5qc29uIiwibm9kZV9tb2R1bGVzL2VsbGlwdGljL2xpYi9lbGxpcHRpYy5qcyIsIm5vZGVfbW9kdWxlcy9lbGxpcHRpYy9saWIvZWxsaXB0aWMvY3VydmUvYmFzZS5qcyIsIm5vZGVfbW9kdWxlcy9lbGxpcHRpYy9saWIvZWxsaXB0aWMvY3VydmUvZWR3YXJkcy5qcyIsIm5vZGVfbW9kdWxlcy9lbGxpcHRpYy9saWIvZWxsaXB0aWMvY3VydmUvaW5kZXguanMiLCJub2RlX21vZHVsZXMvZWxsaXB0aWMvbGliL2VsbGlwdGljL2N1cnZlL21vbnQuanMiLCJub2RlX21vZHVsZXMvZWxsaXB0aWMvbGliL2VsbGlwdGljL2N1cnZlL3Nob3J0LmpzIiwibm9kZV9tb2R1bGVzL2VsbGlwdGljL2xpYi9lbGxpcHRpYy9jdXJ2ZXMuanMiLCJub2RlX21vZHVsZXMvZWxsaXB0aWMvbGliL2VsbGlwdGljL2VjL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2VsbGlwdGljL2xpYi9lbGxpcHRpYy9lYy9rZXkuanMiLCJub2RlX21vZHVsZXMvZWxsaXB0aWMvbGliL2VsbGlwdGljL2VjL3NpZ25hdHVyZS5qcyIsIm5vZGVfbW9kdWxlcy9lbGxpcHRpYy9saWIvZWxsaXB0aWMvZWRkc2EvaW5kZXguanMiLCJub2RlX21vZHVsZXMvZWxsaXB0aWMvbGliL2VsbGlwdGljL2VkZHNhL2tleS5qcyIsIm5vZGVfbW9kdWxlcy9lbGxpcHRpYy9saWIvZWxsaXB0aWMvZWRkc2Evc2lnbmF0dXJlLmpzIiwibm9kZV9tb2R1bGVzL2VsbGlwdGljL2xpYi9lbGxpcHRpYy9wcmVjb21wdXRlZC9zZWNwMjU2azEuanMiLCJub2RlX21vZHVsZXMvZWxsaXB0aWMvbGliL2VsbGlwdGljL3V0aWxzLmpzIiwibm9kZV9tb2R1bGVzL2VsbGlwdGljL3BhY2thZ2UuanNvbiIsIm5vZGVfbW9kdWxlcy9lcnItY29kZS9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9ldmVudHMvZXZlbnRzLmpzIiwibm9kZV9tb2R1bGVzL2V2cF9ieXRlc3Rva2V5L2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2ZpbGUtdHlwZS9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9mcy1leHRyYS9saWIvY29weS1zeW5jL2NvcHktZmlsZS1zeW5jLmpzIiwibm9kZV9tb2R1bGVzL2ZzLWV4dHJhL2xpYi9jb3B5LXN5bmMvY29weS1zeW5jLmpzIiwibm9kZV9tb2R1bGVzL2ZzLWV4dHJhL2xpYi9jb3B5LXN5bmMvaW5kZXguanMiLCJub2RlX21vZHVsZXMvZnMtZXh0cmEvbGliL2NvcHkvY29weS5qcyIsIm5vZGVfbW9kdWxlcy9mcy1leHRyYS9saWIvY29weS9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9mcy1leHRyYS9saWIvY29weS9uY3AuanMiLCJub2RlX21vZHVsZXMvZnMtZXh0cmEvbGliL2VtcHR5L2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2ZzLWV4dHJhL2xpYi9lbnN1cmUvZmlsZS5qcyIsIm5vZGVfbW9kdWxlcy9mcy1leHRyYS9saWIvZW5zdXJlL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2ZzLWV4dHJhL2xpYi9lbnN1cmUvbGluay5qcyIsIm5vZGVfbW9kdWxlcy9mcy1leHRyYS9saWIvZW5zdXJlL3N5bWxpbmstcGF0aHMuanMiLCJub2RlX21vZHVsZXMvZnMtZXh0cmEvbGliL2Vuc3VyZS9zeW1saW5rLXR5cGUuanMiLCJub2RlX21vZHVsZXMvZnMtZXh0cmEvbGliL2Vuc3VyZS9zeW1saW5rLmpzIiwibm9kZV9tb2R1bGVzL2ZzLWV4dHJhL2xpYi9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9mcy1leHRyYS9saWIvanNvbi9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9mcy1leHRyYS9saWIvanNvbi9qc29uZmlsZS5qcyIsIm5vZGVfbW9kdWxlcy9mcy1leHRyYS9saWIvanNvbi9vdXRwdXQtanNvbi1zeW5jLmpzIiwibm9kZV9tb2R1bGVzL2ZzLWV4dHJhL2xpYi9qc29uL291dHB1dC1qc29uLmpzIiwibm9kZV9tb2R1bGVzL2ZzLWV4dHJhL2xpYi9ta2RpcnMvaW5kZXguanMiLCJub2RlX21vZHVsZXMvZnMtZXh0cmEvbGliL21rZGlycy9ta2RpcnMtc3luYy5qcyIsIm5vZGVfbW9kdWxlcy9mcy1leHRyYS9saWIvbWtkaXJzL21rZGlycy5qcyIsIm5vZGVfbW9kdWxlcy9mcy1leHRyYS9saWIvbWtkaXJzL3dpbjMyLmpzIiwibm9kZV9tb2R1bGVzL2ZzLWV4dHJhL2xpYi9tb3ZlLXN5bmMvaW5kZXguanMiLCJub2RlX21vZHVsZXMvZnMtZXh0cmEvbGliL21vdmUvaW5kZXguanMiLCJub2RlX21vZHVsZXMvZnMtZXh0cmEvbGliL291dHB1dC9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9mcy1leHRyYS9saWIvcmVtb3ZlL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2ZzLWV4dHJhL2xpYi9yZW1vdmUvcmltcmFmLmpzIiwibm9kZV9tb2R1bGVzL2ZzLWV4dHJhL2xpYi91dGlsL2Fzc2lnbi5qcyIsIm5vZGVfbW9kdWxlcy9mcy1leHRyYS9saWIvdXRpbC91dGltZXMuanMiLCJub2RlX21vZHVsZXMvZ20vaW5kZXguanMiLCJub2RlX21vZHVsZXMvZ20vbGliL2FyZ3MuanMiLCJub2RlX21vZHVsZXMvZ20vbGliL2NvbW1hbmQuanMiLCJub2RlX21vZHVsZXMvZ20vbGliL2NvbXBhcmUuanMiLCJub2RlX21vZHVsZXMvZ20vbGliL2NvbXBvc2l0ZS5qcyIsIm5vZGVfbW9kdWxlcy9nbS9saWIvY29udmVuaWVuY2UuanMiLCJub2RlX21vZHVsZXMvZ20vbGliL2NvbnZlbmllbmNlL2F1dG9PcmllbnQuanMiLCJub2RlX21vZHVsZXMvZ20vbGliL2NvbnZlbmllbmNlL21vcnBoLmpzIiwibm9kZV9tb2R1bGVzL2dtL2xpYi9jb252ZW5pZW5jZS9zZXBpYS5qcyIsIm5vZGVfbW9kdWxlcy9nbS9saWIvY29udmVuaWVuY2UvdGh1bWIuanMiLCJub2RlX21vZHVsZXMvZ20vbGliL2RyYXdpbmcuanMiLCJub2RlX21vZHVsZXMvZ20vbGliL2dldHRlcnMuanMiLCJub2RlX21vZHVsZXMvZ20vbGliL21vbnRhZ2UuanMiLCJub2RlX21vZHVsZXMvZ20vbGliL29wdGlvbnMuanMiLCJub2RlX21vZHVsZXMvZ20vbGliL3V0aWxzLmpzIiwibm9kZV9tb2R1bGVzL2dyYWNlZnVsLWZzL2ZzLmpzIiwibm9kZV9tb2R1bGVzL2dyYWNlZnVsLWZzL2dyYWNlZnVsLWZzLmpzIiwibm9kZV9tb2R1bGVzL2dyYWNlZnVsLWZzL2xlZ2FjeS1zdHJlYW1zLmpzIiwibm9kZV9tb2R1bGVzL2dyYWNlZnVsLWZzL3BvbHlmaWxscy5qcyIsIm5vZGVfbW9kdWxlcy9oYXNoLmpzL2xpYi9oYXNoLmpzIiwibm9kZV9tb2R1bGVzL2hhc2guanMvbGliL2hhc2gvY29tbW9uLmpzIiwibm9kZV9tb2R1bGVzL2hhc2guanMvbGliL2hhc2gvaG1hYy5qcyIsIm5vZGVfbW9kdWxlcy9oYXNoLmpzL2xpYi9oYXNoL3JpcGVtZC5qcyIsIm5vZGVfbW9kdWxlcy9oYXNoLmpzL2xpYi9oYXNoL3NoYS5qcyIsIm5vZGVfbW9kdWxlcy9oYXNoLmpzL2xpYi9oYXNoL3V0aWxzLmpzIiwibm9kZV9tb2R1bGVzL2htYWMtZHJiZy9saWIvaG1hYy1kcmJnLmpzIiwibm9kZV9tb2R1bGVzL2llZWU3NTQvaW5kZXguanMiLCJub2RlX21vZHVsZXMvaW1hZ2UtZGlmZi9saWIvaW1hZ2UtZGlmZi5qcyIsIm5vZGVfbW9kdWxlcy9pbWFnZS1kaWZmL25vZGVfbW9kdWxlcy9hc3luYy9saWIvYXN5bmMuanMiLCJub2RlX21vZHVsZXMvaW1hZ2UtZGlmZi9ub2RlX21vZHVsZXMvdG1wL2xpYi90bXAuanMiLCJub2RlX21vZHVsZXMvaW1hZ2VkaWZmL2Jyb3dzZXIvY2FudmFzLmpzIiwibm9kZV9tb2R1bGVzL2ltYWdlZGlmZi9pbWFnZWRpZmYuanMiLCJub2RlX21vZHVsZXMvaW5kZXhvZi9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9pbmhlcml0cy9pbmhlcml0c19icm93c2VyLmpzIiwibm9kZV9tb2R1bGVzL2lzLWJ1ZmZlci9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9pc2FycmF5L2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2lzZXhlL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2lzZXhlL21vZGUuanMiLCJub2RlX21vZHVsZXMvaXNleGUvd2luZG93cy5qcyIsIm5vZGVfbW9kdWxlcy9qcGVnLWpzL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2pwZWctanMvbGliL2RlY29kZXIuanMiLCJub2RlX21vZHVsZXMvanBlZy1qcy9saWIvZW5jb2Rlci5qcyIsIm5vZGVfbW9kdWxlcy9qc29uZmlsZS9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9scnUtY2FjaGUvbGliL2xydS1jYWNoZS5qcyIsIm5vZGVfbW9kdWxlcy9taWxsZXItcmFiaW4vbGliL21yLmpzIiwibm9kZV9tb2R1bGVzL21pbmltYWxpc3RpYy1hc3NlcnQvaW5kZXguanMiLCJub2RlX21vZHVsZXMvbWluaW1hbGlzdGljLWNyeXB0by11dGlscy9saWIvdXRpbHMuanMiLCJub2RlX21vZHVsZXMvbWtkaXJwL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL21zL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL29wZW50eXBlLmpzL3NyYy9iYm94LmpzIiwibm9kZV9tb2R1bGVzL29wZW50eXBlLmpzL3NyYy9jaGVjay5qcyIsIm5vZGVfbW9kdWxlcy9vcGVudHlwZS5qcy9zcmMvZHJhdy5qcyIsIm5vZGVfbW9kdWxlcy9vcGVudHlwZS5qcy9zcmMvZW5jb2RpbmcuanMiLCJub2RlX21vZHVsZXMvb3BlbnR5cGUuanMvc3JjL2ZvbnQuanMiLCJub2RlX21vZHVsZXMvb3BlbnR5cGUuanMvc3JjL2dseXBoLmpzIiwibm9kZV9tb2R1bGVzL29wZW50eXBlLmpzL3NyYy9nbHlwaHNldC5qcyIsIm5vZGVfbW9kdWxlcy9vcGVudHlwZS5qcy9zcmMvbGF5b3V0LmpzIiwibm9kZV9tb2R1bGVzL29wZW50eXBlLmpzL3NyYy9vcGVudHlwZS5qcyIsIm5vZGVfbW9kdWxlcy9vcGVudHlwZS5qcy9zcmMvcGFyc2UuanMiLCJub2RlX21vZHVsZXMvb3BlbnR5cGUuanMvc3JjL3BhdGguanMiLCJub2RlX21vZHVsZXMvb3BlbnR5cGUuanMvc3JjL3N1YnN0aXR1dGlvbi5qcyIsIm5vZGVfbW9kdWxlcy9vcGVudHlwZS5qcy9zcmMvdGFibGUuanMiLCJub2RlX21vZHVsZXMvb3BlbnR5cGUuanMvc3JjL3RhYmxlcy9jZmYuanMiLCJub2RlX21vZHVsZXMvb3BlbnR5cGUuanMvc3JjL3RhYmxlcy9jbWFwLmpzIiwibm9kZV9tb2R1bGVzL29wZW50eXBlLmpzL3NyYy90YWJsZXMvZnZhci5qcyIsIm5vZGVfbW9kdWxlcy9vcGVudHlwZS5qcy9zcmMvdGFibGVzL2dseWYuanMiLCJub2RlX21vZHVsZXMvb3BlbnR5cGUuanMvc3JjL3RhYmxlcy9ncG9zLmpzIiwibm9kZV9tb2R1bGVzL29wZW50eXBlLmpzL3NyYy90YWJsZXMvZ3N1Yi5qcyIsIm5vZGVfbW9kdWxlcy9vcGVudHlwZS5qcy9zcmMvdGFibGVzL2hlYWQuanMiLCJub2RlX21vZHVsZXMvb3BlbnR5cGUuanMvc3JjL3RhYmxlcy9oaGVhLmpzIiwibm9kZV9tb2R1bGVzL29wZW50eXBlLmpzL3NyYy90YWJsZXMvaG10eC5qcyIsIm5vZGVfbW9kdWxlcy9vcGVudHlwZS5qcy9zcmMvdGFibGVzL2tlcm4uanMiLCJub2RlX21vZHVsZXMvb3BlbnR5cGUuanMvc3JjL3RhYmxlcy9sb2NhLmpzIiwibm9kZV9tb2R1bGVzL29wZW50eXBlLmpzL3NyYy90YWJsZXMvbHRhZy5qcyIsIm5vZGVfbW9kdWxlcy9vcGVudHlwZS5qcy9zcmMvdGFibGVzL21heHAuanMiLCJub2RlX21vZHVsZXMvb3BlbnR5cGUuanMvc3JjL3RhYmxlcy9tZXRhLmpzIiwibm9kZV9tb2R1bGVzL29wZW50eXBlLmpzL3NyYy90YWJsZXMvbmFtZS5qcyIsIm5vZGVfbW9kdWxlcy9vcGVudHlwZS5qcy9zcmMvdGFibGVzL29zMi5qcyIsIm5vZGVfbW9kdWxlcy9vcGVudHlwZS5qcy9zcmMvdGFibGVzL3Bvc3QuanMiLCJub2RlX21vZHVsZXMvb3BlbnR5cGUuanMvc3JjL3RhYmxlcy9zZm50LmpzIiwibm9kZV9tb2R1bGVzL29wZW50eXBlLmpzL3NyYy90eXBlcy5qcyIsIm5vZGVfbW9kdWxlcy9vcGVudHlwZS5qcy9zcmMvdXRpbC5qcyIsIm5vZGVfbW9kdWxlcy9vcy1icm93c2VyaWZ5L2Jyb3dzZXIuanMiLCJub2RlX21vZHVsZXMvcGFrby9saWIvdXRpbHMvY29tbW9uLmpzIiwibm9kZV9tb2R1bGVzL3Bha28vbGliL3psaWIvYWRsZXIzMi5qcyIsIm5vZGVfbW9kdWxlcy9wYWtvL2xpYi96bGliL2NvbnN0YW50cy5qcyIsIm5vZGVfbW9kdWxlcy9wYWtvL2xpYi96bGliL2NyYzMyLmpzIiwibm9kZV9tb2R1bGVzL3Bha28vbGliL3psaWIvZGVmbGF0ZS5qcyIsIm5vZGVfbW9kdWxlcy9wYWtvL2xpYi96bGliL2luZmZhc3QuanMiLCJub2RlX21vZHVsZXMvcGFrby9saWIvemxpYi9pbmZsYXRlLmpzIiwibm9kZV9tb2R1bGVzL3Bha28vbGliL3psaWIvaW5mdHJlZXMuanMiLCJub2RlX21vZHVsZXMvcGFrby9saWIvemxpYi9tZXNzYWdlcy5qcyIsIm5vZGVfbW9kdWxlcy9wYWtvL2xpYi96bGliL3RyZWVzLmpzIiwibm9kZV9tb2R1bGVzL3Bha28vbGliL3psaWIvenN0cmVhbS5qcyIsIm5vZGVfbW9kdWxlcy9wYXJzZS1hc24xL2Flc2lkLmpzb24iLCJub2RlX21vZHVsZXMvcGFyc2UtYXNuMS9hc24xLmpzIiwibm9kZV9tb2R1bGVzL3BhcnNlLWFzbjEvY2VydGlmaWNhdGUuanMiLCJub2RlX21vZHVsZXMvcGFyc2UtYXNuMS9maXhQcm9jLmpzIiwibm9kZV9tb2R1bGVzL3BhcnNlLWFzbjEvaW5kZXguanMiLCJub2RlX21vZHVsZXMvcGF0aC1icm93c2VyaWZ5L2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL3Bia2RmMi9icm93c2VyLmpzIiwibm9kZV9tb2R1bGVzL3Bia2RmMi9wcmVjb25kaXRpb24uanMiLCJub2RlX21vZHVsZXMvcG5nanMvbGliL2JpdG1hcHBlci5qcyIsIm5vZGVfbW9kdWxlcy9wbmdqcy9saWIvYml0cGFja2VyLmpzIiwibm9kZV9tb2R1bGVzL3BuZ2pzL2xpYi9jaHVua3N0cmVhbS5qcyIsIm5vZGVfbW9kdWxlcy9wbmdqcy9saWIvY29uc3RhbnRzLmpzIiwibm9kZV9tb2R1bGVzL3BuZ2pzL2xpYi9jcmMuanMiLCJub2RlX21vZHVsZXMvcG5nanMvbGliL2ZpbHRlci1wYWNrLmpzIiwibm9kZV9tb2R1bGVzL3BuZ2pzL2xpYi9maWx0ZXItcGFyc2UtYXN5bmMuanMiLCJub2RlX21vZHVsZXMvcG5nanMvbGliL2ZpbHRlci1wYXJzZS1zeW5jLmpzIiwibm9kZV9tb2R1bGVzL3BuZ2pzL2xpYi9maWx0ZXItcGFyc2UuanMiLCJub2RlX21vZHVsZXMvcG5nanMvbGliL2Zvcm1hdC1ub3JtYWxpc2VyLmpzIiwibm9kZV9tb2R1bGVzL3BuZ2pzL2xpYi9pbnRlcmxhY2UuanMiLCJub2RlX21vZHVsZXMvcG5nanMvbGliL3BhY2tlci1hc3luYy5qcyIsIm5vZGVfbW9kdWxlcy9wbmdqcy9saWIvcGFja2VyLXN5bmMuanMiLCJub2RlX21vZHVsZXMvcG5nanMvbGliL3BhY2tlci5qcyIsIm5vZGVfbW9kdWxlcy9wbmdqcy9saWIvcGFldGgtcHJlZGljdG9yLmpzIiwibm9kZV9tb2R1bGVzL3BuZ2pzL2xpYi9wYXJzZXItYXN5bmMuanMiLCJub2RlX21vZHVsZXMvcG5nanMvbGliL3BhcnNlci1zeW5jLmpzIiwibm9kZV9tb2R1bGVzL3BuZ2pzL2xpYi9wYXJzZXIuanMiLCJub2RlX21vZHVsZXMvcG5nanMvbGliL3BuZy1zeW5jLmpzIiwibm9kZV9tb2R1bGVzL3BuZ2pzL2xpYi9wbmcuanMiLCJub2RlX21vZHVsZXMvcG5nanMvbGliL3N5bmMtcmVhZGVyLmpzIiwibm9kZV9tb2R1bGVzL3Byb2Nlc3MtbmV4dGljay1hcmdzL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL3Byb2Nlc3MvYnJvd3Nlci5qcyIsIm5vZGVfbW9kdWxlcy9wcm9qNC9kaXN0L3Byb2o0LXNyYy5qcyIsIm5vZGVfbW9kdWxlcy9wdWJsaWMtZW5jcnlwdC9icm93c2VyLmpzIiwibm9kZV9tb2R1bGVzL3B1YmxpYy1lbmNyeXB0L21nZi5qcyIsIm5vZGVfbW9kdWxlcy9wdWJsaWMtZW5jcnlwdC9wcml2YXRlRGVjcnlwdC5qcyIsIm5vZGVfbW9kdWxlcy9wdWJsaWMtZW5jcnlwdC9wdWJsaWNFbmNyeXB0LmpzIiwibm9kZV9tb2R1bGVzL3B1YmxpYy1lbmNyeXB0L3dpdGhQdWJsaWMuanMiLCJub2RlX21vZHVsZXMvcHVibGljLWVuY3J5cHQveG9yLmpzIiwibm9kZV9tb2R1bGVzL3B1cmVpbWFnZS9zcmMvcHVyZWltYWdlLmpzIiwibm9kZV9tb2R1bGVzL3B1cmVpbWFnZS9zcmMvdHJhbnNmb3JtLmpzIiwibm9kZV9tb2R1bGVzL3B1cmVpbWFnZS9zcmMvdWludDMyLmpzIiwibm9kZV9tb2R1bGVzL3EvcS5qcyIsIm5vZGVfbW9kdWxlcy9yYW5kb21ieXRlcy9icm93c2VyLmpzIiwibm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS9kdXBsZXgtYnJvd3Nlci5qcyIsIm5vZGVfbW9kdWxlcy9yZWFkYWJsZS1zdHJlYW0vbGliL19zdHJlYW1fZHVwbGV4LmpzIiwibm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS9saWIvX3N0cmVhbV9wYXNzdGhyb3VnaC5qcyIsIm5vZGVfbW9kdWxlcy9yZWFkYWJsZS1zdHJlYW0vbGliL19zdHJlYW1fcmVhZGFibGUuanMiLCJub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL2xpYi9fc3RyZWFtX3RyYW5zZm9ybS5qcyIsIm5vZGVfbW9kdWxlcy9yZWFkYWJsZS1zdHJlYW0vbGliL19zdHJlYW1fd3JpdGFibGUuanMiLCJub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL2xpYi9pbnRlcm5hbC9zdHJlYW1zL0J1ZmZlckxpc3QuanMiLCJub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL2xpYi9pbnRlcm5hbC9zdHJlYW1zL3N0cmVhbS1icm93c2VyLmpzIiwibm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS9wYXNzdGhyb3VnaC5qcyIsIm5vZGVfbW9kdWxlcy9yZWFkYWJsZS1zdHJlYW0vcmVhZGFibGUtYnJvd3Nlci5qcyIsIm5vZGVfbW9kdWxlcy9yZWFkYWJsZS1zdHJlYW0vdHJhbnNmb3JtLmpzIiwibm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS93cml0YWJsZS1icm93c2VyLmpzIiwibm9kZV9tb2R1bGVzL3JlZ2VuZXJhdG9yLXJ1bnRpbWUvcnVudGltZS5qcyIsIm5vZGVfbW9kdWxlcy9yZXByb2plY3QvaW5kZXguanMiLCJub2RlX21vZHVsZXMvcmlwZW1kMTYwL2xpYi9yaXBlbWQxNjAuanMiLCJub2RlX21vZHVsZXMvc2hhLmpzL2hhc2guanMiLCJub2RlX21vZHVsZXMvc2hhLmpzL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL3NoYS5qcy9zaGEuanMiLCJub2RlX21vZHVsZXMvc2hhLmpzL3NoYTEuanMiLCJub2RlX21vZHVsZXMvc2hhLmpzL3NoYTIyNC5qcyIsIm5vZGVfbW9kdWxlcy9zaGEuanMvc2hhMjU2LmpzIiwibm9kZV9tb2R1bGVzL3NoYS5qcy9zaGEzODQuanMiLCJub2RlX21vZHVsZXMvc2hhLmpzL3NoYTUxMi5qcyIsIm5vZGVfbW9kdWxlcy9zcWwuanMvanMvc3FsLW1lbW9yeS1ncm93dGguanMiLCJub2RlX21vZHVsZXMvc3FsLmpzL2pzL3NxbC5qcyIsIm5vZGVfbW9kdWxlcy9zdHJlYW0tYnJvd3NlcmlmeS9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9zdHJlYW0tdG8tYXJyYXkvaW5kZXguanMiLCJub2RlX21vZHVsZXMvc3RyaW5nX2RlY29kZXIvbGliL3N0cmluZ19kZWNvZGVyLmpzIiwibm9kZV9tb2R1bGVzL3RpbnktaW5mbGF0ZS9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy90eXBlLWRldGVjdC9saWIvdHlwZS5qcyIsIm5vZGVfbW9kdWxlcy90eXBlZGFycmF5L2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL3V0aWwtZGVwcmVjYXRlL2Jyb3dzZXIuanMiLCJub2RlX21vZHVsZXMvdXRpbC9zdXBwb3J0L2lzQnVmZmVyQnJvd3Nlci5qcyIsIm5vZGVfbW9kdWxlcy91dGlsL3V0aWwuanMiLCJub2RlX21vZHVsZXMvdm0tYnJvd3NlcmlmeS9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy93ZWJ3b3JraWZ5L2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL3doaWNoL3doaWNoLmpzIiwibm9kZV9tb2R1bGVzL3dreC9saWIvYmluYXJ5cmVhZGVyLmpzIiwibm9kZV9tb2R1bGVzL3dreC9saWIvYmluYXJ5d3JpdGVyLmpzIiwibm9kZV9tb2R1bGVzL3dreC9saWIvZ2VvbWV0cnkuanMiLCJub2RlX21vZHVsZXMvd2t4L2xpYi9nZW9tZXRyeWNvbGxlY3Rpb24uanMiLCJub2RlX21vZHVsZXMvd2t4L2xpYi9saW5lc3RyaW5nLmpzIiwibm9kZV9tb2R1bGVzL3dreC9saWIvbXVsdGlsaW5lc3RyaW5nLmpzIiwibm9kZV9tb2R1bGVzL3dreC9saWIvbXVsdGlwb2ludC5qcyIsIm5vZGVfbW9kdWxlcy93a3gvbGliL211bHRpcG9seWdvbi5qcyIsIm5vZGVfbW9kdWxlcy93a3gvbGliL3BvaW50LmpzIiwibm9kZV9tb2R1bGVzL3dreC9saWIvcG9seWdvbi5qcyIsIm5vZGVfbW9kdWxlcy93a3gvbGliL3R5cGVzLmpzIiwibm9kZV9tb2R1bGVzL3dreC9saWIvd2t0cGFyc2VyLmpzIiwibm9kZV9tb2R1bGVzL3dreC9saWIvd2t4LmpzIiwibm9kZV9tb2R1bGVzL3dreC9saWIvemlnemFnLmpzIiwidGVzdC9maXh0dXJlcy9zZXR1cEZlYXR1cmVUYWJsZS5qcyIsInRlc3QvZml4dHVyZXMvdGVzdFNldHVwLmpzIiwidGVzdC9maXh0dXJlcy90ZXN0VXRpbHMuanMiLCJ0ZXN0L2ZpeHR1cmVzL3ZlcmlmaWNhdGlvbi5qcyIsInRlc3QvbGliL2NvcmUvY29udGVudHMvdGVzdENvbnRlbnRzLmpzIiwidGVzdC9saWIvY29yZS9zcnMvdGVzdFNwYXRpYWxSZWZlcmVuY2VTeXN0ZW0uanMiLCJ0ZXN0L2xpYi9kYXRhQ29sdW1ucy90ZXN0RGF0YUNvbHVtbnMuanMiLCJ0ZXN0L2xpYi9kYi90ZXN0RGF0YVR5cGVzLmpzIiwidGVzdC9saWIvZGIvdGVzdFRhYmxlQ3JlYXRvci5qcyIsInRlc3QvbGliL2V4dGVuc2lvbi9pbmRleC90ZXN0RmVhdHVyZVRhYmxlSW5kZXguanMiLCJ0ZXN0L2xpYi9leHRlbnNpb24vdGVzdEV4dGVuc2lvbkRhby5qcyIsInRlc3QvbGliL2ZlYXR1cmVzL2NvbHVtbnMvdGVzdEdlb21ldHJ5Q29sdW1ucy5qcyIsInRlc3QvbGliL2ZlYXR1cmVzL3VzZXIvdGVzdEZlYXR1cmVEYW8uanMiLCJ0ZXN0L2xpYi9mZWF0dXJlcy91c2VyL3Rlc3RGZWF0dXJlVGFibGVSZWFkZXIuanMiLCJ0ZXN0L2xpYi9nZW9tL3Rlc3RHZW9tZXRyeURhdGEuanMiLCJ0ZXN0L2xpYi9pc3N1ZXMvaXNzdWU2OC5qcyIsInRlc3QvbGliL21ldGFkYXRhL3JlZmVyZW5jZS90ZXN0TWV0YWRhdGFSZWZlcmVuY2UuanMiLCJ0ZXN0L2xpYi9tZXRhZGF0YS90ZXN0TWV0YWRhdGEuanMiLCJ0ZXN0L2xpYi90ZXN0Qm91bmRpbmdCb3guanMiLCJ0ZXN0L2xpYi90ZXN0RmVhdHVyZUNyZWF0ZS5qcyIsInRlc3QvbGliL3Rlc3RHZW9QYWNrYWdlLmpzIiwidGVzdC9saWIvdGVzdEdlb1BhY2thZ2VDcmVhdGUuanMiLCJ0ZXN0L2xpYi90ZXN0R2VvUGFja2FnZU1hbmFnZXIuanMiLCJ0ZXN0L2xpYi90ZXN0R2VvUGFja2FnZU1hbmFnZXJDcmVhdGUuanMiLCJ0ZXN0L2xpYi90ZXN0VGlsZUNyZWF0ZS5qcyIsInRlc3QvbGliL3RpbGVzL2ZlYXR1cmVzL3Rlc3RGZWF0dXJlVGlsZXMuanMiLCJ0ZXN0L2xpYi90aWxlcy90ZXN0R2VvcGFja2FnZVRpbGVSZXRyaWV2ZXIuanMiLCJ0ZXN0L2xpYi90aWxlcy90ZXN0VGlsZUJvdW5kaW5nQm94VXRpbHMuanMiLCJ0ZXN0L2xpYi90aWxlcy90ZXN0VGlsZURhby5qcyIsInRlc3QvbGliL3RpbGVzL3Rlc3RUaWxlR3JpZC5qcyIsInRlc3QvbGliL3RpbGVzL3Rlc3RUaWxlTWF0cml4LmpzIiwidGVzdC9saWIvdGlsZXMvdGVzdFRpbGVNYXRyaXhTZXQuanMiLCJ0ZXN0L2xpYi91c2VyL3Rlc3RVc2VyVGFibGVSZWFkZXIuanMiLCJ0ZXN0L2xpYi92YWxpZGF0ZS90ZXN0R2VvUGFja2FnZVZhbGlkYXRlLmpzIiwidGVzdC9saWIvd2tiL3Rlc3RXa2IuanMiLCJ0ZXN0L3Rlc3QuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQ3JhQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2xJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUM3T0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3BUQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDcEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDNVdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDekhBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDakpBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUMvTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUNoSkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDMUZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3JLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDaktBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDdmtCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUMzRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDN0lBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDblFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUMvTEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3BFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNoUEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUMzRkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUM3SkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUM1RUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQy9DQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDL0ZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3JvQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQ3JCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUN0RkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUNqQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUNwT0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUN0TkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3pMQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNoeElBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQ3ZKQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQ3BJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQ2pFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQzNFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzdHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQy9LQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzNJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQy9LQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNqSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUM1V0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDeEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDekVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNoWEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNoQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDbk1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3pHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDbERBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDckNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FDckdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUN4T0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUMxSkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUMvRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUN0RUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUM1QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDbFRBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNuQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzFvQkE7QUFDQTs7QUNEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUM5RUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDbEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDeENBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDbENBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ1RBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDN0RBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNwSEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDTkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUMxbkJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDekhBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ25CQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNwVUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNKQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2pEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3ZTQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ0pBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUNyQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQzFlQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQ3BIQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQ3AyS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUMzQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDbEhBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDbjJHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDakVBOzs7QUNBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUNqTEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQ2pHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQ1hBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUN6SUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQzFIQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUNsR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDM0tBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FDakJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDL0JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDbENBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQ2ZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUMvQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQ05BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDaEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUN6QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FDekVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUMzQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQ3hCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDeENBO0FBQ0E7O0FDREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3hKQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQ1JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDM0ZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDakpBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUNuRkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQzVPQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7QUNsbUJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FDN05BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQzVHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDVkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUMxcURBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDbkdBO0FBQ0E7O0FDREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDN0ZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNuSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUN2REE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDcDBEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzdtREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNsQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDek1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDaEhBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUM1Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDaERBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNqQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3BCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDMUJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ25EQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3RCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUMvR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUMzQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDcENBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDaEVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDbElBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUMvVUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2xEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUN0REE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNwREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUN2REE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUM1QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQzdDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUMxRkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDL0lBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNqTkE7QUFDQTs7QUNEQTtBQUNBO0FBQ0E7QUFDQTs7QUNIQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ0pBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ05BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDSkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNKQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3pCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDZEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNQQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDcEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDM0NBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzNCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNmQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDTEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3ZCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3RCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ0pBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzdJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDUkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNsRkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDcEZBO0FBQ0E7O0FDREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNQQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ25CQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDUkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNKQTtBQUNBO0FBQ0E7QUFDQTs7QUNIQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNOQTtBQUNBO0FBQ0E7QUFDQTs7QUNIQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDZEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDMUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNYQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNOQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUMzQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDWkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDeEJBO0FBQ0E7QUFDQTtBQUNBOztBQ0hBO0FBQ0E7QUFDQTtBQUNBOztBQ0hBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDUEE7O0FDQUE7QUFDQTtBQUNBOztBQ0ZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDUEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDZkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNKQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ1BBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDSkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ0xBO0FBQ0E7QUFDQTs7QUNGQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ1BBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNYQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNaQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNyRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3BCQTtBQUNBO0FBQ0E7O0FDRkE7O0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDVEE7O0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDVEE7QUFDQTtBQUNBO0FBQ0E7O0FDSEE7QUFDQTtBQUNBO0FBQ0E7O0FDSEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNwREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2xEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ25FQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDaENBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUN6Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDZkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDWkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDTkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDZkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNuQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDTkE7O0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDWkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNoQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDTkE7O0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDVEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDZkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDVEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNQQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDUkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUN0QkE7O0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNQQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ0pBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDL0JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDUEE7QUFDQTtBQUNBO0FBQ0E7O0FDSEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDeEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ1pBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ05BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDSkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ0xBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDUEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDTkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNoQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNQQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNsQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNoQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ1hBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUM3QkE7QUFDQTs7QUNEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDMUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ05BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNMQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDTEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ0xBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDSkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ1hBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDOWRBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNoUkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUN6QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNKQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDUkE7O0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNWQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ1BBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNMQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDTEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDVEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ0xBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ1RBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDYkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNiQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ1ZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDckNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNkQTtBQUNBO0FBQ0E7QUFDQTs7QUNIQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNqQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ1hBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3JCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNUQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNsQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDVEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDVEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDM0JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ1RBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDdEJBOztBQ0FBO0FBQ0E7QUFDQTtBQUNBOztBQ0hBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzNCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2JBO0FBQ0E7QUFDQTtBQUNBOztBQ0hBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDVkE7QUFDQTtBQUNBO0FBQ0E7O0FDSEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDWkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDeEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDaEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNqQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDVEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDVEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ1JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDUEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ1JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDSkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUN6QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDeEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDaEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDUEE7QUFDQTtBQUNBO0FBQ0E7O0FDSEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNQQTtBQUNBO0FBQ0E7QUFDQTs7QUNIQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDZEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ1hBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDUEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3BFQTtBQUNBO0FBQ0E7QUFDQTs7QUNIQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDUkE7QUFDQTtBQUNBO0FBQ0E7O0FDSEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNQQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNUQTtBQUNBO0FBQ0E7QUFDQTs7QUNIQTtBQUNBO0FBQ0E7QUFDQTs7QUNIQTtBQUNBO0FBQ0E7QUFDQTs7QUNIQTtBQUNBO0FBQ0E7QUFDQTs7QUNIQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2hIQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDakJBO0FBQ0E7QUFDQTtBQUNBOztBQ0hBO0FBQ0E7QUFDQTs7QUNGQTtBQUNBO0FBQ0E7O0FDRkE7QUFDQTtBQUNBOztBQ0ZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNSQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDUkE7QUFDQTtBQUNBO0FBQ0E7O0FDSEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ1JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDUEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNQQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ1BBO0FBQ0E7QUFDQTs7QUNGQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDUkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ1JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNSQTtBQUNBO0FBQ0E7O0FDRkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDVEE7QUFDQTtBQUNBO0FBQ0E7O0FDSEE7QUFDQTtBQUNBO0FBQ0E7O0FDSEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUMxU0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDZkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUM5Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDckJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDVkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUN6QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDVEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDVEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3BCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ1BBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDVkE7QUFDQTtBQUNBO0FBQ0E7O0FDSEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDZkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2RBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzlCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUMxQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNKQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNUQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDWEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDVEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDckVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3hCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDWEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDTkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDTkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDTkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDTkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ1JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDbkJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ05BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ05BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ05BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDdEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNYQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNOQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2hCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNOQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDakJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNMQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNOQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDakJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ05BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ05BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ05BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ05BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzFPQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUM3Q0E7QUFDQTtBQUNBO0FBQ0E7O0FDSEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNKQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ0pBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDSkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNKQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ0pBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDSkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNKQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ0pBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDSkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUN2REE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ1hBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNYQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDWEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ1JBO0FBQ0E7QUFDQTtBQUNBOztBQ0hBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDVkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDZkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNWQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNmQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDWEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ1hBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNSQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNsQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2pCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDakJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNSQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUN0TUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNQQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDZEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDbEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDaEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDUEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ1JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2ZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNSQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDZEE7QUFDQTtBQUNBO0FBQ0E7O0FDSEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDVEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzdCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNUQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNUQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNOQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNOQTs7QUNBQTs7QUNBQTtBQUNBO0FBQ0E7QUFDQTs7QUNIQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNyQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ0xBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDbkJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQy9LQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDM0dBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUMxSEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUNwREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUNqQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUMzSkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDcEVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FDdkJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQ25EQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUM5SEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQy9CQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNmQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDN0VBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDOWRBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUMxNEZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3hLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDck1BO0FBQ0E7O0FDREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2pRQTtBQUNBOztBQ0RBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDOUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDUEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2pFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUM3SUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQy9JQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3ZEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUNoUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDMUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQ3BLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUN6R0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDakNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDYkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDdlhBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDamJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNSQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNwTEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzE2QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUM3TUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDaFBBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUN2SEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDdklBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDdEhBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2hHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNsRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDNXdCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUN4SEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzFIQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDcEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FDOVNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQ3BFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQ3RkQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDekNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQzlEQTtBQUNBO0FBQ0E7QUFDQTs7O0FDSEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQ3BEQTtBQUNBO0FBQ0E7QUFDQTs7O0FDSEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUMxT0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQy9DQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUM3Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3ZCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUM1REE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNqR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUMvQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNoRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNyQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ1hBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDaEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2xCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDMUJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUNUQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDM0RBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDL0RBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQ3pCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQ3JIQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDaktBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDckNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FDakJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQ3hTQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2hCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FDeEVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDcElBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQ2psQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUMzWkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDeEhBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUM3QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ1hBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3pEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzdEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ1ZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUM1RkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNoS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzVVQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUN4QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2pCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUMxQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQ3JCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQ3RRQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQ3RIQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQzFVQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNmQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzNGQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNoREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDaEpBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3BqQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2pRQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDakhBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUNwRkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDclFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDOTdCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDeFJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FDTEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQ2haQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNUQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDdkJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3JCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQ0xBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQ3pEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDekNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDMUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQ1BBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDNTlCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQzl2QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQ3JJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzlVQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDakhBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNYQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUMxREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQ2xGQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDN0hBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDaEtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDbkJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDYkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3pSQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNoaEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNyVkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDcElBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzFSQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUN0WUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2pjQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzVUQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzdTQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDeE1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUN4bENBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzlOQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzNJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDL1VBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzdPQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNsUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDbEVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNyREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDMUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUN2RUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDakNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDN0RBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDM0NBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDN0RBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDbjBCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDOVBBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUN2RUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDdFZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQ2oyQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDbkNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzdDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUN0R0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2hDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDbERBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUN6Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUMvekRBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUN0VUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2xnREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDdlVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDYkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2xyQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzdCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNaQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDMUhBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQ3hGQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUM5QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUMxR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQ2hPQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUNwRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQ2xCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDck1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDaEVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQ2pOQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2xDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQzVDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUN2TEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUN6QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQ3ZCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUMzS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDekZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FDdEZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQzdDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUM3Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQzNGQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2hCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQzlHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQ3hGQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUNsU0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FDaEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQzdLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FDbkRBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUMzQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDcExBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDN3hMQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FDVEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDZkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQzNHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQzlGQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQ1RBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQ1BBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDdHRCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUN2TEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FDN1BBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQ3poRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUNwQ0E7QUFDQTs7QUNEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDMUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQ3pCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDdDZCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUNyTEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUMvaEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQy9EQTtBQUNBOztBQ0RBO0FBQ0E7O0FDREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNQQTtBQUNBOztBQ0RBO0FBQ0E7OztBQ0RBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDbnRCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FDdklBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQ2xOQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQ3JFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FDZkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDN0ZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUNsR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUNwREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQ3RJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDeERBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDblFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUMxZkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQ3pmQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUMvSEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUM1REE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2hSQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQ3ZYQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDdElBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUN0bkJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7OztBQ25FQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQ0xBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUMxa0JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FDakZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQ3BJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDL0NBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUNqRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDelhBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3hLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNqTEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzVMQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUMzS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDak9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ3hOQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDL1JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUM3QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUM1SEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ1JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNSQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FDOUJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDNUpBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNYQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FDeE5BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDek5BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQzlFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUNwTkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FDbkVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUM3S0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUN2SkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQ25DQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQ3hMQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQ2xDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQ2hFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQ3ZTQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUN2Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUN4VEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzNHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQzlEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDNVJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQy9NQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDOUpBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQzNCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDL0NBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDaE5BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDaEtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDeFFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUMxVUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUMvU0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQzNCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUN0R0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQzFIQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDN0VBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDbEVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzdDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiJnZW5lcmF0ZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uIGUodCxuLHIpe2Z1bmN0aW9uIHMobyx1KXtpZighbltvXSl7aWYoIXRbb10pe3ZhciBhPXR5cGVvZiByZXF1aXJlPT1cImZ1bmN0aW9uXCImJnJlcXVpcmU7aWYoIXUmJmEpcmV0dXJuIGEobywhMCk7aWYoaSlyZXR1cm4gaShvLCEwKTt2YXIgZj1uZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiK28rXCInXCIpO3Rocm93IGYuY29kZT1cIk1PRFVMRV9OT1RfRk9VTkRcIixmfXZhciBsPW5bb109e2V4cG9ydHM6e319O3Rbb11bMF0uY2FsbChsLmV4cG9ydHMsZnVuY3Rpb24oZSl7dmFyIG49dFtvXVsxXVtlXTtyZXR1cm4gcyhuP246ZSl9LGwsbC5leHBvcnRzLGUsdCxuLHIpfXJldHVybiBuW29dLmV4cG9ydHN9dmFyIGk9dHlwZW9mIHJlcXVpcmU9PVwiZnVuY3Rpb25cIiYmcmVxdWlyZTtmb3IodmFyIG89MDtvPHIubGVuZ3RoO28rKylzKHJbb10pO3JldHVybiBzfSkiLCIvKipcbiAqIEdlb1BhY2thZ2UgbW9kdWxlLlxuICogQG1vZHVsZSBHZW9QYWNrYWdlXG4gKi9cblxudmFyIHdreCA9IHJlcXVpcmUoJ3dreCcpXG4gICwgcmVwcm9qZWN0ID0gcmVxdWlyZSgncmVwcm9qZWN0JylcbiAgLCBwYXRoID0gcmVxdWlyZSgncGF0aCcpXG4gICwgU1FMID0gcmVxdWlyZSgnc3FsLmpzJylcbiAgLCBhc3luYyA9IHJlcXVpcmUoJ2FzeW5jJylcbiAgLCBmcyA9IHJlcXVpcmUoJ2ZzJyk7XG5cbnZhciBHZW9QYWNrYWdlTWFuYWdlciA9IHJlcXVpcmUoJy4vbGliL2dlb1BhY2thZ2VNYW5hZ2VyJylcbiAgLCBHZW9QYWNrYWdlID0gcmVxdWlyZSgnLi9saWIvZ2VvUGFja2FnZScpXG4gICwgR2VvUGFja2FnZVRpbGVSZXRyaWV2ZXIgPSByZXF1aXJlKCcuL2xpYi90aWxlcy9yZXRyaWV2ZXInKVxuICAsIEdlb1BhY2thZ2VDb25uZWN0aW9uID0gcmVxdWlyZSgnLi9saWIvZGIvZ2VvUGFja2FnZUNvbm5lY3Rpb24nKVxuICAsIEJvdW5kaW5nQm94ID0gcmVxdWlyZSgnLi9saWIvYm91bmRpbmdCb3gnKVxuICAsIEdlb21ldHJ5RGF0YSA9IHJlcXVpcmUoJy4vbGliL2dlb20vZ2VvbWV0cnlEYXRhJylcbiAgLCBUYWJsZUNyZWF0b3IgPSByZXF1aXJlKCcuL2xpYi9kYi90YWJsZUNyZWF0b3InKVxuICAsIFRpbGVCb3VuZGluZ0JveFV0aWxzID0gcmVxdWlyZSgnLi9saWIvdGlsZXMvdGlsZUJvdW5kaW5nQm94VXRpbHMnKVxuICAsIEZlYXR1cmVUaWxlID0gcmVxdWlyZSgnLi9saWIvdGlsZXMvZmVhdHVyZXMnKTtcblxudmFyIHByb2o0RGVmcyA9IHJlcXVpcmUoJy4vbGliL3Byb2o0RGVmcycpO1xubW9kdWxlLmV4cG9ydHMucHJvajREZWZzID0gcHJvajREZWZzO1xubW9kdWxlLmV4cG9ydHMuR2VvUGFja2FnZVRpbGVSZXRyaWV2ZXIgPSBHZW9QYWNrYWdlVGlsZVJldHJpZXZlcjtcbm1vZHVsZS5leHBvcnRzLkdlb1BhY2thZ2VDb25uZWN0aW9uID0gR2VvUGFja2FnZUNvbm5lY3Rpb247XG5cbi8qKlxuICogT3BlbiBhIEdlb1BhY2thZ2UgYXQgdGhlIHBhdGggc3BlY2lmaWVkXG4gKiBAcGFyYW0gIHtTdHJpbmd9ICAgZ3BwYXRoICAgcGF0aCB3aGVyZSB0aGUgR2VvUGFja2FnZSBleGlzdHNcbiAqIEBwYXJhbSAge0Z1bmN0aW9ufSBjYWxsYmFjayBjYWxsZWQgd2l0aCBhbiBlcnJvciBhbmQgdGhlIEdlb1BhY2thZ2Ugb2JqZWN0IGlmIG9wZW5lZFxuICovXG5tb2R1bGUuZXhwb3J0cy5vcGVuR2VvUGFja2FnZSA9IGZ1bmN0aW9uKGdwcGF0aCwgY2FsbGJhY2spIHtcbiAgR2VvUGFja2FnZU1hbmFnZXIub3BlbihncHBhdGgsIGNhbGxiYWNrKTtcbn07XG5cbi8qKlxuICogT3BlbiBhIEdlb1BhY2thZ2UgZnJvbSB0aGUgYnl0ZSBhcnJheVxuICogQHBhcmFtICB7VWludDhBcnJheX0gICBhcnJheSAgICBBcnJheSBvZiBHZW9QYWNrYWdlIGJ5dGVzXG4gKiBAcGFyYW0gIHtGdW5jdGlvbn0gY2FsbGJhY2sgY2FsbGVkIHdpdGggYW4gZXJyb3IgaWYgaXQgb2NjdXJyZWQgYW5kIHRoZSBvcGVuIEdlb1BhY2thZ2Ugb2JqZWN0XG4gKi9cbm1vZHVsZS5leHBvcnRzLm9wZW5HZW9QYWNrYWdlQnl0ZUFycmF5ID0gZnVuY3Rpb24oYXJyYXksIGNhbGxiYWNrKSB7XG4gIHZhciBkYiA9IG5ldyBTUUwuRGF0YWJhc2UoYXJyYXkpO1xuICBHZW9QYWNrYWdlQ29ubmVjdGlvbi5jb25uZWN0V2l0aERhdGFiYXNlKGRiLCBmdW5jdGlvbihlcnIsIGNvbm5lY3Rpb24pIHtcbiAgICB2YXIgZ2VvUGFja2FnZSA9IG5ldyBHZW9QYWNrYWdlKCcnLCAnJywgY29ubmVjdGlvbik7XG4gICAgY2FsbGJhY2sobnVsbCwgZ2VvUGFja2FnZSk7XG4gIH0pO1xufTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgR2VvUGFja2FnZSBmaWxlIGF0IHRoZSBwYXRoIHNwZWNpZmllZCBpbiBub2RlIG9yIG9wZW5zIGFuIGluIG1lbW9yeSBHZW9QYWNrYWdlIG9uIHRoZSBicm93c2VyXG4gKiBAcGFyYW0gIHtTdHJpbmd9ICAgZ3BwYXRoICAgcGF0aCB0byBHZW9QYWNrYWdlIGZpbGVUeXBlXG4gKiBAcGFyYW0gIHtGdW5jdGlvbn0gY2FsbGJhY2sgY2FsbGVkIHdpdGggYW4gZXJyb3IgaWYgb25lIG9jY3VycmVkIGFuZCB0aGUgb3BlbiBHZW9QYWNrYWdlIG9iamVjdFxuICovXG5tb2R1bGUuZXhwb3J0cy5jcmVhdGVHZW9QYWNrYWdlID0gZnVuY3Rpb24oZ3BwYXRoLCBjYWxsYmFjaykge1xuICBpZiAoIWNhbGxiYWNrKSB7XG4gICAgY2FsbGJhY2sgPSBncHBhdGg7XG4gICAgZ3BwYXRoID0gdW5kZWZpbmVkO1xuICB9XG4gIGFzeW5jLnNlcmllcyhbXG4gICAgZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAgICAgIGlmICh0eXBlb2YocHJvY2VzcykgIT09ICd1bmRlZmluZWQnICYmIHByb2Nlc3MudmVyc2lvbiAmJiBncHBhdGgpIHtcbiAgICAgICAgZnMubWtkaXIocGF0aC5kaXJuYW1lKGdwcGF0aCksIGZ1bmN0aW9uKCkge1xuICAgICAgICAgIGZzLm9wZW4oZ3BwYXRoLCAndycsIGNhbGxiYWNrKTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjYWxsYmFjaygpO1xuICAgICAgfVxuICAgIH1cbiAgXSwgZnVuY3Rpb24oKSB7XG4gICAgR2VvUGFja2FnZUNvbm5lY3Rpb24uY29ubmVjdChncHBhdGgsIGZ1bmN0aW9uKGVyciwgY29ubmVjdGlvbikge1xuICAgICAgdmFyIG5hbWUgPSBncHBhdGggPyBwYXRoLmJhc2VuYW1lKGdwcGF0aCkgOiAnZ2VvcGFja2FnZSc7XG4gICAgICB2YXIgZ2VvcGFja2FnZSA9IG5ldyBHZW9QYWNrYWdlKG5hbWUsIGdwcGF0aCwgY29ubmVjdGlvbik7XG4gICAgICB2YXIgdGMgPSBuZXcgVGFibGVDcmVhdG9yKGdlb3BhY2thZ2UpO1xuICAgICAgdGMuY3JlYXRlUmVxdWlyZWQoZnVuY3Rpb24oKSB7XG4gICAgICAgIGNhbGxiYWNrKG51bGwsIGdlb3BhY2thZ2UpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xufTtcblxubW9kdWxlLmV4cG9ydHMuVGlsZUNvbHVtbiA9IHJlcXVpcmUoJy4vbGliL3RpbGVzL3VzZXIvdGlsZUNvbHVtbicpO1xubW9kdWxlLmV4cG9ydHMuQm91bmRpbmdCb3ggPSByZXF1aXJlKCcuL2xpYi9ib3VuZGluZ0JveCcpO1xubW9kdWxlLmV4cG9ydHMuVGlsZVV0aWxpdGllcyA9IHJlcXVpcmUoJy4vbGliL3RpbGVzL2NyZWF0b3IvdGlsZVV0aWxpdGllcycpO1xuXG5tb2R1bGUuZXhwb3J0cy5jcmVhdGVUaWxlVGFibGUgPSBmdW5jdGlvbihnZW9wYWNrYWdlLCB0YWJsZU5hbWUsIGNvbnRlbnRzQm91bmRpbmdCb3gsIGNvbnRlbnRzU3JzSWQsIHRpbGVNYXRyaXhTZXRCb3VuZGluZ0JveCwgdGlsZU1hdHJpeFNldFNyc0lkLCBjYWxsYmFjaykge1xuICBnZW9wYWNrYWdlLmNyZWF0ZVRpbGVUYWJsZVdpdGhUYWJsZU5hbWUodGFibGVOYW1lLCBjb250ZW50c0JvdW5kaW5nQm94LCBjb250ZW50c1Nyc0lkLCB0aWxlTWF0cml4U2V0Qm91bmRpbmdCb3gsIHRpbGVNYXRyaXhTZXRTcnNJZCwgY2FsbGJhY2spO1xufTtcblxubW9kdWxlLmV4cG9ydHMuY3JlYXRlU3RhbmRhcmRXZWJNZXJjYXRvclRpbGVUYWJsZSA9IGZ1bmN0aW9uKGdlb3BhY2thZ2UsIHRhYmxlTmFtZSwgY29udGVudHNCb3VuZGluZ0JveCwgY29udGVudHNTcnNJZCwgdGlsZU1hdHJpeFNldEJvdW5kaW5nQm94LCB0aWxlTWF0cml4U2V0U3JzSWQsIG1pblpvb20sIG1heFpvb20sIGNhbGxiYWNrKSB7XG4gIG1vZHVsZS5leHBvcnRzLmNyZWF0ZVRpbGVUYWJsZShnZW9wYWNrYWdlLCB0YWJsZU5hbWUsIGNvbnRlbnRzQm91bmRpbmdCb3gsIGNvbnRlbnRzU3JzSWQsIHRpbGVNYXRyaXhTZXRCb3VuZGluZ0JveCwgdGlsZU1hdHJpeFNldFNyc0lkLCBmdW5jdGlvbihlcnIsIHRpbGVNYXRyaXhTZXQpIHtcbiAgICBnZW9wYWNrYWdlLmNyZWF0ZVN0YW5kYXJkV2ViTWVyY2F0b3JUaWxlTWF0cml4KHRpbGVNYXRyaXhTZXRCb3VuZGluZ0JveCwgdGlsZU1hdHJpeFNldCwgbWluWm9vbSwgbWF4Wm9vbSwgZnVuY3Rpb24oZXJyLCByZXN1bHQpIHtcbiAgICAgIGNhbGxiYWNrKGVyciwgdGlsZU1hdHJpeFNldCk7XG4gICAgfSk7XG4gIH0pO1xufVxuXG4vKipcbiAqIEFkZHMgYSB0aWxlIHRvIHRoZSBHZW9QYWNrYWdlXG4gKiBAcGFyYW0gIHtHZW9QYWNrYWdlfSAgIGdlb3BhY2thZ2Ugb3BlbiBHZW9QYWNrYWdlIG9iamVjdFxuICogQHBhcmFtICB7b2JqZWN0fSAgIHRpbGUgICAgICAgQnl0ZSBhcnJheSBvciBCdWZmZXIgY29udGFpbmluZyB0aGUgdGlsZSBieXRlc1xuICogQHBhcmFtICB7U3RyaW5nfSAgIHRhYmxlTmFtZSAgVGFibGUgbmFtZSB0byBhZGQgdGhlIHRpbGUgdG9cbiAqIEBwYXJhbSAge051bWJlcn0gICB6b29tICAgICAgIHpvb20gbGV2ZWwgb2YgdGhpcyB0aWxlXG4gKiBAcGFyYW0gIHtOdW1iZXJ9ICAgdGlsZVJvdyAgICByb3cgb2YgdGhpcyB0aWxlXG4gKiBAcGFyYW0gIHtOdW1iZXJ9ICAgdGlsZUNvbHVtbiBjb2x1bW4gb2YgdGhpcyB0aWxlXG4gKiBAcGFyYW0gIHtGdW5jdGlvbn0gY2FsbGJhY2sgICBjYWxsZWQgd2l0aCBhbiBlcm9yIGlmIG9uZSBvY2N1cnJlZCBhbmQgdGhlIGluc2VydGVkIHJvd1xuICovXG5tb2R1bGUuZXhwb3J0cy5hZGRUaWxlVG9HZW9QYWNrYWdlID0gZnVuY3Rpb24oZ2VvcGFja2FnZSwgdGlsZSwgdGFibGVOYW1lLCB6b29tLCB0aWxlUm93LCB0aWxlQ29sdW1uLCBjYWxsYmFjaykge1xuICBnZW9wYWNrYWdlLmFkZFRpbGUodGlsZSwgdGFibGVOYW1lLCB6b29tLCB0aWxlUm93LCB0aWxlQ29sdW1uLCBjYWxsYmFjayk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cy5GZWF0dXJlQ29sdW1uID0gcmVxdWlyZSgnLi9saWIvZmVhdHVyZXMvdXNlci9mZWF0dXJlQ29sdW1uJyk7XG5tb2R1bGUuZXhwb3J0cy5HZW9tZXRyeUNvbHVtbnMgPSByZXF1aXJlKCcuL2xpYi9mZWF0dXJlcy9jb2x1bW5zJykuR2VvbWV0cnlDb2x1bW5zO1xubW9kdWxlLmV4cG9ydHMuRGF0YUNvbHVtbnMgPSByZXF1aXJlKCcuL2xpYi9kYXRhQ29sdW1ucycpLkRhdGFDb2x1bW5zO1xubW9kdWxlLmV4cG9ydHMuRGF0YVR5cGVzID0gcmVxdWlyZSgnLi9saWIvZGIvZGF0YVR5cGVzJyk7XG5cbm1vZHVsZS5leHBvcnRzLmNyZWF0ZUZlYXR1cmVUYWJsZSA9IGZ1bmN0aW9uKGdlb3BhY2thZ2UsIHRhYmxlTmFtZSwgZ2VvbWV0cnlDb2x1bW4sIGZlYXR1cmVDb2x1bW5zLCBjYWxsYmFjaykge1xuICBtb2R1bGUuZXhwb3J0cy5jcmVhdGVGZWF0dXJlVGFibGVXaXRoRGF0YUNvbHVtbnMoZ2VvcGFja2FnZSwgdGFibGVOYW1lLCBnZW9tZXRyeUNvbHVtbiwgZmVhdHVyZUNvbHVtbnMsIG51bGwsIGNhbGxiYWNrKTtcbn07XG5cbm1vZHVsZS5leHBvcnRzLmNyZWF0ZUZlYXR1cmVUYWJsZVdpdGhEYXRhQ29sdW1ucyA9IGZ1bmN0aW9uKGdlb3BhY2thZ2UsIHRhYmxlTmFtZSwgZ2VvbWV0cnlDb2x1bW4sIGZlYXR1cmVDb2x1bW5zLCBkYXRhQ29sdW1ucywgY2FsbGJhY2spIHtcbiAgdmFyIGJvdW5kaW5nQm94ID0gbmV3IEJvdW5kaW5nQm94KC0xODAsIDE4MCwgLTkwLCA5MCk7XG4gIG1vZHVsZS5leHBvcnRzLmNyZWF0ZUZlYXR1cmVUYWJsZVdpdGhEYXRhQ29sdW1uc0FuZEJvdW5kaW5nQm94KGdlb3BhY2thZ2UsIHRhYmxlTmFtZSwgZ2VvbWV0cnlDb2x1bW4sIGZlYXR1cmVDb2x1bW5zLCBkYXRhQ29sdW1ucywgYm91bmRpbmdCb3gsIDQzMjYsIGNhbGxiYWNrKTtcbn07XG5cbm1vZHVsZS5leHBvcnRzLmNyZWF0ZUZlYXR1cmVUYWJsZVdpdGhEYXRhQ29sdW1uc0FuZEJvdW5kaW5nQm94ID0gZnVuY3Rpb24oZ2VvcGFja2FnZSwgdGFibGVOYW1lLCBnZW9tZXRyeUNvbHVtbiwgZmVhdHVyZUNvbHVtbnMsIGRhdGFDb2x1bW5zLCBib3VuZGluZ0JveCwgYm91bmRpbmdCb3hTcnNJZCwgY2FsbGJhY2spIHtcbiAgZ2VvcGFja2FnZS5jcmVhdGVGZWF0dXJlVGFibGVXaXRoR2VvbWV0cnlDb2x1bW5zQW5kRGF0YUNvbHVtbnMoZ2VvbWV0cnlDb2x1bW4sIGJvdW5kaW5nQm94LCBib3VuZGluZ0JveFNyc0lkLCBmZWF0dXJlQ29sdW1ucywgZGF0YUNvbHVtbnMsIGZ1bmN0aW9uKGVyciwgcmVzdWx0KSB7XG4gICAgZ2VvcGFja2FnZS5nZXRGZWF0dXJlRGFvV2l0aFRhYmxlTmFtZSh0YWJsZU5hbWUsIGNhbGxiYWNrKTtcbiAgfSk7XG59O1xuXG4vKipcbiAqIEFkZHMgYSBHZW9KU09OIGZlYXR1cmUgdG8gdGhlIEdlb1BhY2thZ2VcbiAqIEBwYXJhbSAge0dlb1BhY2thZ2V9ICAgZ2VvcGFja2FnZSBvcGVuIEdlb1BhY2thZ2Ugb2JqZWN0XG4gKiBAcGFyYW0gIHtvYmplY3R9ICAgZmVhdHVyZSAgICBHZW9KU09OIGZlYXR1cmUgdG8gYWRkXG4gKiBAcGFyYW0gIHtTdHJpbmd9ICAgdGFibGVOYW1lICBUYWJsZSBuYW1lIHRvIGFkZCB0aGUgdGlsZSB0b1xuICogQHBhcmFtICB7RnVuY3Rpb259IGNhbGxiYWNrICAgY2FsbGVkIHdpdGggYW4gZXJyb3IgaWYgb25lIG9jY3VycmVkIGFuZCB0aGUgaW5zZXJ0ZWQgcm93XG4gKi9cbm1vZHVsZS5leHBvcnRzLmFkZEdlb0pTT05GZWF0dXJlVG9HZW9QYWNrYWdlID0gZnVuY3Rpb24oZ2VvcGFja2FnZSwgZmVhdHVyZSwgdGFibGVOYW1lLCBjYWxsYmFjaykge1xuICBnZW9wYWNrYWdlLmdldEZlYXR1cmVEYW9XaXRoVGFibGVOYW1lKHRhYmxlTmFtZSwgZnVuY3Rpb24oZXJyLCBmZWF0dXJlRGFvKSB7XG4gICAgdmFyIGZlYXR1cmVSb3cgPSBmZWF0dXJlRGFvLm5ld1JvdygpO1xuICAgIHZhciBnZW9tZXRyeURhdGEgPSBuZXcgR2VvbWV0cnlEYXRhKCk7XG4gICAgZ2VvbWV0cnlEYXRhLnNldFNyc0lkKDQzMjYpO1xuICAgIHZhciBmZWF0dXJlR2VvbWV0cnkgPSB0eXBlb2YgZmVhdHVyZS5nZW9tZXRyeSA9PT0gJ3N0cmluZycgPyBKU09OLnBhcnNlKGZlYXR1cmUuZ2VvbWV0cnkpIDogZmVhdHVyZS5nZW9tZXRyeTtcbiAgICB2YXIgZ2VvbWV0cnkgPSB3a3guR2VvbWV0cnkucGFyc2VHZW9KU09OKGZlYXR1cmVHZW9tZXRyeSk7XG4gICAgZ2VvbWV0cnlEYXRhLnNldEdlb21ldHJ5KGdlb21ldHJ5KTtcbiAgICBmZWF0dXJlUm93LnNldEdlb21ldHJ5KGdlb21ldHJ5RGF0YSk7XG4gICAgZm9yICh2YXIgcHJvcGVydHlLZXkgaW4gZmVhdHVyZS5wcm9wZXJ0aWVzKSB7XG4gICAgICBpZiAoZmVhdHVyZS5wcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KHByb3BlcnR5S2V5KSkge1xuICAgICAgICBmZWF0dXJlUm93LnNldFZhbHVlV2l0aENvbHVtbk5hbWUocHJvcGVydHlLZXksIGZlYXR1cmUucHJvcGVydGllc1twcm9wZXJ0eUtleV0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZlYXR1cmVEYW8uY3JlYXRlKGZlYXR1cmVSb3csIGNhbGxiYWNrKTtcbiAgfSk7XG59O1xuXG4vKipcbiAqIEdldHMgdGhlIGZlYXR1cmUgdGFibGVzIGZyb20gdGhlIEdlb1BhY2thZ2VcbiAqIEBwYXJhbSAge0dlb1BhY2thZ2V9ICAgZ2VvcGFja2FnZSBvcGVuIEdlb1BhY2thZ2Ugb2JqZWN0XG4gKiBAcGFyYW0gIHtGdW5jdGlvbn0gY2FsbGJhY2sgICBjYWxsZWQgd2l0aCBhbiBlcnJvciBpZiBvbmUgb2NjdXJyZWQgYW5kIHRoZSBhcnJheSBvZiBmZWF0dXJlIHRhYmxlIG5hbWVzXG4gKi9cbm1vZHVsZS5leHBvcnRzLmdldEZlYXR1cmVUYWJsZXMgPSBmdW5jdGlvbihnZW9wYWNrYWdlLCBjYWxsYmFjaykge1xuICBnZW9wYWNrYWdlLmdldEZlYXR1cmVUYWJsZXMoY2FsbGJhY2spO1xufTtcblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIGZlYXR1cmUgdGFibGUgZXhpc3RzIGluIHRoZSBHZW9QYWNrYWdlXG4gKiBAcGFyYW0gIHtHZW9QYWNrYWdlfSAgIGdlb3BhY2thZ2Ugb3BlbiBHZW9QYWNrYWdlIG9iamVjdFxuICogQHBhcmFtICB7U3RyaW5nfSBmZWF0dXJlVGFibGVOYW1lIG5hbWUgb2YgdGhlIHRhYmxlIHRvIHF1ZXJ5IGZvclxuICogQHBhcmFtICB7RnVuY3Rpb259IGNhbGxiYWNrICAgY2FsbGVkIHdpdGggYW4gZXJyb3IgaWYgb25lIG9jY3VycmVkIGFuZCB0cnVlIG9yIGZhbHNlIGZvciB0aGUgZXhpc3RlbmNlIG9mIHRoZSB0YWJsZVxuICovXG5tb2R1bGUuZXhwb3J0cy5oYXNGZWF0dXJlVGFibGUgPSBmdW5jdGlvbihnZW9wYWNrYWdlLCBmZWF0dXJlVGFibGVOYW1lLCBjYWxsYmFjaykge1xuICBnZW9wYWNrYWdlLmdldEZlYXR1cmVUYWJsZXMoZnVuY3Rpb24oZXJyLCB0YWJsZXMpIHtcbiAgICByZXR1cm4gY2FsbGJhY2soZXJyLCB0YWJsZXMgJiYgdGFibGVzLmluZGV4T2YoZmVhdHVyZVRhYmxlTmFtZSkgIT0gLTEpO1xuICB9KTtcbn07XG5cbi8qKlxuICogSXRlcmF0ZSBHZW9KU09OIGZlYXR1cmVzIGZyb20gdGFibGVcbiAqIEBwYXJhbSAge0dlb1BhY2thZ2V9IGdlb3BhY2thZ2UgICAgICBvcGVuIEdlb1BhY2thZ2Ugb2JqZWN0XG4gKiBAcGFyYW0gIHtTdHJpbmd9IHRhYmxlICAgICAgICAgICBUYWJsZSBuYW1lIHRvIEl0ZXJhdGVcbiAqIEBwYXJhbSAge0Z1bmN0aW9ufSBmZWF0dXJlQ2FsbGJhY2sgY2FsbGVkIHdpdGggYW4gZXJyb3IgaWYgb25lIG9jY3VycmVkIGFuZCB0aGUgbmV4dCBHZW9KU09OIGZlYXR1cmUgaW4gdGhlIHRhYmxlXG4gKiBAcGFyYW0gIHtGdW5jdGlvbn0gZG9uZUNhbGxiYWNrICAgIGNhbGxlZCB3aGVuIGFsbCByb3dzIGFyZSBjb21wbGV0ZVxuICovXG5tb2R1bGUuZXhwb3J0cy5pdGVyYXRlR2VvSlNPTkZlYXR1cmVzRnJvbVRhYmxlID0gZnVuY3Rpb24oZ2VvcGFja2FnZSwgdGFibGUsIGZlYXR1cmVDYWxsYmFjaywgZG9uZUNhbGxiYWNrKSB7XG4gIGdlb3BhY2thZ2UuZ2V0RmVhdHVyZURhb1dpdGhUYWJsZU5hbWUodGFibGUsIGZ1bmN0aW9uKGVyciwgZmVhdHVyZURhbykge1xuICAgIGlmIChlcnIpIHtcbiAgICAgIHJldHVybiBkb25lQ2FsbGJhY2soZXJyKTtcbiAgICB9XG4gICAgZmVhdHVyZURhby5nZXRTcnMoZnVuY3Rpb24oZXJyLCBzcnMpIHtcbiAgICAgIGZlYXR1cmVEYW8ucXVlcnlGb3JFYWNoKGZ1bmN0aW9uKGVyciwgcm93LCByb3dEb25lKSB7XG4gICAgICAgIHZhciBjdXJyZW50Um93ID0gZmVhdHVyZURhby5nZXRGZWF0dXJlUm93KHJvdyk7XG4gICAgICAgIHZhciBnZW9tZXRyeSA9IGN1cnJlbnRSb3cuZ2V0R2VvbWV0cnkoKTtcbiAgICAgICAgaWYgKGdlb21ldHJ5KSB7XG4gICAgICAgICAgdmFyIGdlb20gPSBnZW9tZXRyeS5nZW9tZXRyeTtcbiAgICAgICAgICB2YXIgZ2VvSnNvbkdlb20gPSBnZW9tZXRyeS5nZW9tZXRyeS50b0dlb0pTT04oKTtcbiAgICAgICAgICBpZiAoc3JzLmRlZmluaXRpb24gJiYgc3JzLmRlZmluaXRpb24gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICBnZW9Kc29uR2VvbSA9IHJlcHJvamVjdC5yZXByb2plY3QoZ2VvSnNvbkdlb20sIHNycy5vcmdhbml6YXRpb24gKyAnOicgKyBzcnMub3JnYW5pemF0aW9uX2Nvb3Jkc3lzX2lkLCAnRVBTRzo0MzI2Jyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHZhciBnZW9Kc29uID0ge1xuICAgICAgICAgIGdlb21ldHJ5OiBnZW9Kc29uR2VvbSxcbiAgICAgICAgICB0eXBlOiAnRmVhdHVyZScsXG4gICAgICAgICAgcHJvcGVydGllczoge31cbiAgICAgICAgfTtcbiAgICAgICAgZm9yICh2YXIga2V5IGluIGN1cnJlbnRSb3cudmFsdWVzKSB7XG4gICAgICAgICAgaWYoY3VycmVudFJvdy52YWx1ZXMuaGFzT3duUHJvcGVydHkoa2V5KSAmJiBrZXkgIT0gY3VycmVudFJvdy5nZXRHZW9tZXRyeUNvbHVtbigpLm5hbWUpIHtcbiAgICAgICAgICAgIGdlb0pzb24ucHJvcGVydGllc1trZXldID0gY3VycmVudFJvdy52YWx1ZXNba2V5XTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGN1cnJlbnRSb3cuZ2V0R2VvbWV0cnlDb2x1bW4oKS5uYW1lID09PSBrZXkpIHtcbiAgICAgICAgICAgIGdlb0pzb24ucHJvcGVydGllc1trZXldID0gZ2VvbWV0cnkgPyAnVmFsaWQnIDogJ05vIEdlb21ldHJ5JztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZ2VvSnNvbi5pZCA9IGN1cnJlbnRSb3cuZ2V0SWQoKTtcbiAgICAgICAgZmVhdHVyZUNhbGxiYWNrKGVyciwgZ2VvSnNvbiwgcm93RG9uZSk7XG4gICAgICB9LCBkb25lQ2FsbGJhY2spO1xuICAgIH0pO1xuICB9KTtcbn07XG5cbi8qKlxuICogR2V0cyBhIEdlb0pTT04gZmVhdHVyZSBmcm9tIHRoZSB0YWJsZSBieSBpZFxuICogQHBhcmFtICB7R2VvUGFja2FnZX0gICBnZW9wYWNrYWdlIG9wZW4gR2VvUGFja2FnZSBvYmplY3RcbiAqIEBwYXJhbSAge1N0cmluZ30gICB0YWJsZSAgICAgIG5hbWUgb2YgdGhlIHRhYmxlIHRvIGdldCB0aGUgZmVhdHVyZSBmcm9tXG4gKiBAcGFyYW0gIHtOdW1iZXJ9ICAgZmVhdHVyZUlkICBJRCBvZiB0aGUgZmVhdHVyZVxuICogQHBhcmFtICB7RnVuY3Rpb259IGNhbGxiYWNrICAgY2FsbGVkIHdpdGggYW4gZXJyb3IgaWYgb25lIG9jY3VycmVkIGFuZCB0aGUgR2VvSlNPTiBmZWF0dXJlXG4gKi9cbm1vZHVsZS5leHBvcnRzLmdldEZlYXR1cmUgPSBmdW5jdGlvbihnZW9wYWNrYWdlLCB0YWJsZSwgZmVhdHVyZUlkLCBjYWxsYmFjaykge1xuICBnZW9wYWNrYWdlLmdldEZlYXR1cmVEYW9XaXRoVGFibGVOYW1lKHRhYmxlLCBmdW5jdGlvbihlcnIsIGZlYXR1cmVEYW8pIHtcbiAgICBmZWF0dXJlRGFvLmdldFNycyhmdW5jdGlvbihlcnIsIHNycykge1xuICAgICAgZmVhdHVyZURhby5xdWVyeUZvcklkT2JqZWN0KGZlYXR1cmVJZCwgZnVuY3Rpb24oZXJyLCBvYmplY3QsIGZlYXR1cmUpIHtcbiAgICAgICAgdmFyIGN1cnJlbnRSb3cgPSBmZWF0dXJlRGFvLmdldEZlYXR1cmVSb3coZmVhdHVyZSk7XG4gICAgICAgIHZhciBnZW9tZXRyeSA9IGN1cnJlbnRSb3cuZ2V0R2VvbWV0cnkoKTtcbiAgICAgICAgdmFyIGdlb0pzb24gPSB7fTtcbiAgICAgICAgaWYgKGdlb21ldHJ5KSB7XG4gICAgICAgICAgdmFyIGdlb20gPSBnZW9tZXRyeS5nZW9tZXRyeS50b0dlb0pTT04oKTtcbiAgICAgICAgICBpZiAoc3JzLmRlZmluaXRpb24gJiYgc3JzLmRlZmluaXRpb24gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICBnZW9tID0gcmVwcm9qZWN0LnJlcHJvamVjdChnZW9tLCBzcnMub3JnYW5pemF0aW9uICsgJzonICsgc3JzLm9yZ2FuaXphdGlvbl9jb29yZHN5c19pZCwgJ0VQU0c6NDMyNicpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBnZW9Kc29uLmdlb21ldHJ5ID0gZ2VvbTtcbiAgICAgICAgfVxuICAgICAgICBnZW9Kc29uLnR5cGUgPSAnRmVhdHVyZSc7XG4gICAgICAgIGdlb0pzb24ucHJvcGVydGllcyA9IHt9O1xuICAgICAgICBmb3IgKHZhciBrZXkgaW4gY3VycmVudFJvdy52YWx1ZXMpIHtcbiAgICAgICAgICBpZihjdXJyZW50Um93LnZhbHVlcy5oYXNPd25Qcm9wZXJ0eShrZXkpICYmIGtleSAhPSBjdXJyZW50Um93LmdldEdlb21ldHJ5Q29sdW1uKCkubmFtZSkge1xuICAgICAgICAgICAgZ2VvSnNvbi5wcm9wZXJ0aWVzW2tleV0gPSBjdXJyZW50Um93LnZhbHVlc1trZXldO1xuICAgICAgICAgIH0gZWxzZSBpZiAoY3VycmVudFJvdy5nZXRHZW9tZXRyeUNvbHVtbigpLm5hbWUgPT09IGtleSkge1xuICAgICAgICAgICAgZ2VvSnNvbi5wcm9wZXJ0aWVzW2tleV0gPSBnZW9tZXRyeSA/ICdWYWxpZCcgOiAnTm8gR2VvbWV0cnknO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBnZW9Kc29uLmlkID0gY3VycmVudFJvdy5nZXRJZCgpO1xuICAgICAgICBjYWxsYmFjayhudWxsLCBnZW9Kc29uKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcbn07XG5cbi8qKlxuICogR2V0cyB0aGUgdGlsZSB0YWJsZSBuYW1lcyBmcm9tIHRoZSBHZW9QYWNrYWdlXG4gKiBAcGFyYW0gIHtHZW9QYWNrYWdlfSAgIGdlb3BhY2thZ2Ugb3BlbiBHZW9QYWNrYWdlIG9iamVjdFxuICogQHBhcmFtICB7RnVuY3Rpb259IGNhbGxiYWNrICAgY2FsbGVkIHdpdGggYW4gZXJyb3IgaWYgb25lIG9jY3VycmVkIGFuZCB0aGUgYXJyYXkgb2YgdGlsZSB0YWJsZSBuYW1lc1xuICovXG5tb2R1bGUuZXhwb3J0cy5nZXRUaWxlVGFibGVzID0gZnVuY3Rpb24oZ2VvcGFja2FnZSwgY2FsbGJhY2spIHtcbiAgZ2VvcGFja2FnZS5nZXRUaWxlVGFibGVzKGNhbGxiYWNrKTtcbn07XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSB0aWxlIHRhYmxlIGV4aXN0cyBpbiB0aGUgR2VvUGFja2FnZVxuICogQHBhcmFtICB7R2VvUGFja2FnZX0gICBnZW9wYWNrYWdlIG9wZW4gR2VvUGFja2FnZSBvYmplY3RcbiAqIEBwYXJhbSAge1N0cmluZ30gdGlsZVRhYmxlTmFtZSBuYW1lIG9mIHRoZSB0YWJsZSB0byBxdWVyeSBmb3JcbiAqIEBwYXJhbSAge0Z1bmN0aW9ufSBjYWxsYmFjayAgIGNhbGxlZCB3aXRoIGFuIGVycm9yIGlmIG9uZSBvY2N1cnJlZCBhbmQgdHJ1ZSBvciBmYWxzZSBmb3IgdGhlIGV4aXN0ZW5jZSBvZiB0aGUgdGFibGVcbiAqL1xubW9kdWxlLmV4cG9ydHMuaGFzVGlsZVRhYmxlID0gZnVuY3Rpb24oZ2VvcGFja2FnZSwgdGlsZVRhYmxlTmFtZSwgY2FsbGJhY2spIHtcbiAgZ2VvcGFja2FnZS5nZXRUaWxlVGFibGVzKGZ1bmN0aW9uKGVyciwgdGFibGVzKSB7XG4gICAgcmV0dXJuIGNhbGxiYWNrKGVyciwgdGFibGVzICYmIHRhYmxlcy5pbmRleE9mKHRpbGVUYWJsZU5hbWUpICE9IC0xKTtcbiAgfSk7XG59O1xuXG4vKipcbiAqIEdldHMgYSB0aWxlIGZyb20gdGhlIHNwZWNpZmllZCB0YWJsZVxuICogQHBhcmFtICB7R2VvUGFja2FnZX0gICBnZW9wYWNrYWdlIG9wZW4gR2VvUGFja2FnZSBvYmplY3RcbiAqIEBwYXJhbSAge1N0cmluZ30gICB0YWJsZSAgICAgIG5hbWUgb2YgdGhlIHRhYmxlIHRvIGdldCB0aGUgdGlsZSBmcm9tXG4gKiBAcGFyYW0gIHtOdW1iZXJ9ICAgem9vbSAgICAgICB6b29tIGxldmVsIG9mIHRoZSB0aWxlXG4gKiBAcGFyYW0gIHtOdW1iZXJ9ICAgdGlsZVJvdyAgICByb3cgb2YgdGhlIHRpbGVcbiAqIEBwYXJhbSAge051bWJlcn0gICB0aWxlQ29sdW1uIGNvbHVtbiBvZiB0aGUgdGlsZVxuICogQHBhcmFtICB7RnVuY3Rpb259IGNhbGxiYWNrICAgY2FsbGVkIHdpdGggYW4gZXJyb3IgaWYgb25lIG9jY3VycmVkIGFuZCB0aGUgVGlsZVJvdyBvYmplY3RcbiAqL1xubW9kdWxlLmV4cG9ydHMuZ2V0VGlsZUZyb21UYWJsZSA9IGZ1bmN0aW9uKGdlb3BhY2thZ2UsIHRhYmxlLCB6b29tLCB0aWxlUm93LCB0aWxlQ29sdW1uLCBjYWxsYmFjaykge1xuICBnZW9wYWNrYWdlLmdldFRpbGVEYW9XaXRoVGFibGVOYW1lKHRhYmxlLCBmdW5jdGlvbihlcnIsIHRpbGVEYW8pIHtcbiAgICBpZiAoZXJyKSByZXR1cm4gY2FsbGJhY2soKTtcbiAgICB0aWxlRGFvLnF1ZXJ5Rm9yVGlsZSh0aWxlQ29sdW1uLCB0aWxlUm93LCB6b29tLCBjYWxsYmFjayk7XG4gIH0pO1xufTtcblxuLyoqXG4gKiBHZXRzIHRoZSB0aWxlcyBpbiB0aGUgRVBTRzo0MzI2IGJvdW5kaW5nIGJveFxuICogQHBhcmFtICB7R2VvUGFja2FnZX0gICBnZW9wYWNrYWdlIG9wZW4gR2VvUGFja2FnZSBvYmplY3RcbiAqIEBwYXJhbSAge1N0cmluZ30gICB0YWJsZSAgICAgIG5hbWUgb2YgdGhlIHRpbGUgdGFibGVcbiAqIEBwYXJhbSAge051bWJlcn0gICB6b29tICAgICAgIFpvb20gb2YgdGhlIHRpbGVzIHRvIHF1ZXJ5IGZvclxuICogQHBhcmFtICB7TnVtYmVyfSAgIHdlc3QgICAgICAgRVBTRzo0MzI2IHdlc3Rlcm4gYm91bmRhcnlcbiAqIEBwYXJhbSAge051bWJlcn0gICBlYXN0ICAgICAgIEVQU0c6NDMyNiBlYXN0ZXJuIGJvdW5kYXJ5XG4gKiBAcGFyYW0gIHtOdW1iZXJ9ICAgc291dGggICAgICBFUFNHOjQzMjYgc291dGhlcm4gYm91bmRhcnlcbiAqIEBwYXJhbSAge051bWJlcn0gICBub3J0aCAgICAgIEVQU0c6NDMyNiBub3J0aGVybiBib3VuZGFyeVxuICogQHBhcmFtICB7RnVuY3Rpb259IGNhbGxiYWNrICAgY2FsbGVkIHdpdGggYW4gZXJyb3IgaWYgb25lIG9jY3VycmVkIGFuZCBhIHRpbGVzIG9iamVjdCBkZXNjcmliaW5nIHRoZSB0aWxlc1xuICovXG5tb2R1bGUuZXhwb3J0cy5nZXRUaWxlc0luQm91bmRpbmdCb3ggPSBmdW5jdGlvbihnZW9wYWNrYWdlLCB0YWJsZSwgem9vbSwgd2VzdCwgZWFzdCwgc291dGgsIG5vcnRoLCBjYWxsYmFjaykge1xuICB2YXIgdGlsZXMgPSB7fTtcblxuICBnZW9wYWNrYWdlLmdldFRpbGVEYW9XaXRoVGFibGVOYW1lKHRhYmxlLCBmdW5jdGlvbihlcnIsIHRpbGVEYW8pIHtcbiAgICBpZiAoZXJyKSB7XG4gICAgICByZXR1cm4gY2FsbGJhY2soKTtcbiAgICB9XG4gICAgaWYgKHpvb20gPCB0aWxlRGFvLm1pblpvb20gfHwgem9vbSA+IHRpbGVEYW8ubWF4Wm9vbSkge1xuICAgICAgcmV0dXJuIGNhbGxiYWNrKCk7XG4gICAgfVxuICAgIHRpbGVzLmNvbHVtbnMgPSBbXTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRpbGVEYW8udGFibGUuY29sdW1ucy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGNvbHVtbiA9IHRpbGVEYW8udGFibGUuY29sdW1uc1tpXTtcbiAgICAgIHRpbGVzLmNvbHVtbnMucHVzaCh7XG4gICAgICAgIGluZGV4OiBjb2x1bW4uaW5kZXgsXG4gICAgICAgIG5hbWU6IGNvbHVtbi5uYW1lLFxuICAgICAgICBtYXg6IGNvbHVtbi5tYXgsXG4gICAgICAgIG1pbjogY29sdW1uLm1pbixcbiAgICAgICAgbm90TnVsbDogY29sdW1uLm5vdE51bGwsXG4gICAgICAgIHByaW1hcnlLZXk6IGNvbHVtbi5wcmltYXJ5S2V5XG4gICAgICB9KTtcbiAgICB9XG4gICAgdGlsZURhby5nZXRTcnMoZnVuY3Rpb24oZXJyLCBzcnMpIHtcbiAgICAgIHRpbGVzLnNycyA9IHNycztcbiAgICAgIHRpbGVzLnRpbGVzID0gW107XG5cbiAgICAgIHZhciB0bXMgPSB0aWxlRGFvLnRpbGVNYXRyaXhTZXQ7XG4gICAgICB2YXIgdG0gPSB0aWxlRGFvLmdldFRpbGVNYXRyaXhXaXRoWm9vbUxldmVsKHpvb20pO1xuICAgICAgdmFyIG1hcEJvdW5kaW5nQm94ID0gbmV3IEJvdW5kaW5nQm94KE1hdGgubWF4KC0xODAsIHdlc3QpLCBNYXRoLm1pbihlYXN0LCAxODApLCBzb3V0aCwgbm9ydGgpO1xuICAgICAgdGlsZXMud2VzdCA9IE1hdGgubWF4KC0xODAsIHdlc3QpLnRvRml4ZWQoMik7XG4gICAgICB0aWxlcy5lYXN0ID0gTWF0aC5taW4oZWFzdCwgMTgwKS50b0ZpeGVkKDIpO1xuICAgICAgdGlsZXMuc291dGggPSBzb3V0aC50b0ZpeGVkKDIpO1xuICAgICAgdGlsZXMubm9ydGggPSBub3J0aC50b0ZpeGVkKDIpO1xuICAgICAgdGlsZXMuem9vbSA9IHpvb207XG4gICAgICBtYXBCb3VuZGluZ0JveCA9IG1hcEJvdW5kaW5nQm94LnByb2plY3RCb3VuZGluZ0JveCgnRVBTRzo0MzI2JywgdGlsZURhby5zcnMub3JnYW5pemF0aW9uLnRvVXBwZXJDYXNlKCkgKyAnOicgKyB0aWxlRGFvLnNycy5vcmdhbml6YXRpb25fY29vcmRzeXNfaWQpO1xuXG4gICAgICB2YXIgZ3JpZCA9IFRpbGVCb3VuZGluZ0JveFV0aWxzLmdldFRpbGVHcmlkV2l0aFRvdGFsQm91bmRpbmdCb3godG1zLmdldEJvdW5kaW5nQm94KCksIHRtLm1hdHJpeF93aWR0aCwgdG0ubWF0cml4X2hlaWdodCwgbWFwQm91bmRpbmdCb3gpO1xuXG4gICAgICB0aWxlRGFvLnF1ZXJ5QnlUaWxlR3JpZChncmlkLCB6b29tLCBmdW5jdGlvbihlcnIsIHJvdywgcm93RG9uZSkge1xuICAgICAgICB2YXIgdGlsZSA9IHt9O1xuICAgICAgICB0aWxlLnRhYmxlTmFtZSA9IHRhYmxlO1xuICAgICAgICB0aWxlLmlkID0gcm93LmdldElkKCk7XG5cbiAgICAgICAgdmFyIHRpbGVCQiA9IFRpbGVCb3VuZGluZ0JveFV0aWxzLmdldFRpbGVCb3VuZGluZ0JveCh0bXMuZ2V0Qm91bmRpbmdCb3goKSwgdG0sIHJvdy5nZXRUaWxlQ29sdW1uKCksIHJvdy5nZXRUaWxlUm93KCkpO1xuICAgICAgICB0aWxlLm1pbkxvbmdpdHVkZSA9IHRpbGVCQi5taW5Mb25naXR1ZGU7XG4gICAgICAgIHRpbGUubWF4TG9uZ2l0dWRlID0gdGlsZUJCLm1heExvbmdpdHVkZTtcbiAgICAgICAgdGlsZS5taW5MYXRpdHVkZSA9IHRpbGVCQi5taW5MYXRpdHVkZTtcbiAgICAgICAgdGlsZS5tYXhMYXRpdHVkZSA9IHRpbGVCQi5tYXhMYXRpdHVkZTtcbiAgICAgICAgdGlsZS5wcm9qZWN0aW9uID0gdGlsZURhby5zcnMub3JnYW5pemF0aW9uLnRvVXBwZXJDYXNlKCkgKyAnOicgKyB0aWxlRGFvLnNycy5vcmdhbml6YXRpb25fY29vcmRzeXNfaWQ7XG4gICAgICAgIHRpbGUudmFsdWVzID0gW107XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGlsZXMuY29sdW1ucy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIHZhciB2YWx1ZSA9IHJvdy52YWx1ZXNbdGlsZXMuY29sdW1uc1tpXS5uYW1lXTtcbiAgICAgICAgICBpZiAodGlsZXMuY29sdW1uc1tpXS5uYW1lID09PSAndGlsZV9kYXRhJykge1xuICAgICAgICAgICAgdGlsZS52YWx1ZXMucHVzaCgnZGF0YScpO1xuICAgICAgICAgIH0gZWxzZVxuICAgICAgICAgIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gJ251bGwnKSB7XG4gICAgICAgICAgICB0aWxlLnZhbHVlcy5wdXNoKCcnKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGlsZS52YWx1ZXMucHVzaCh2YWx1ZS50b1N0cmluZygpKTtcbiAgICAgICAgICAgIHRpbGVbdGlsZXMuY29sdW1uc1tpXS5uYW1lXSA9IHZhbHVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aWxlcy50aWxlcy5wdXNoKHRpbGUpO1xuICAgICAgICByb3dEb25lKCk7XG4gICAgICB9LCBmdW5jdGlvbihlcnIpIHtcbiAgICAgICAgY2FsbGJhY2soZXJyLCB0aWxlcyk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cy5nZXRGZWF0dXJlVGlsZUZyb21YWVogPSBmdW5jdGlvbihnZW9wYWNrYWdlLCB0YWJsZSwgeCwgeSwgeiwgd2lkdGgsIGhlaWdodCwgY2FsbGJhY2spIHtcbiAgZ2VvcGFja2FnZS5nZXRGZWF0dXJlRGFvV2l0aFRhYmxlTmFtZSh0YWJsZSwgZnVuY3Rpb24oZXJyLCBmZWF0dXJlRGFvKSB7XG4gICAgaWYgKGVyciB8fCAhZmVhdHVyZURhbykgcmV0dXJuIGNhbGxiYWNrKGVycik7XG4gICAgdmFyIGZ0ID0gbmV3IEZlYXR1cmVUaWxlKGZlYXR1cmVEYW8sIHdpZHRoLCBoZWlnaHQpO1xuICAgIGZ0LmRyYXdUaWxlKHgsIHksIHosIGNhbGxiYWNrKTtcbiAgfSk7XG59XG5cbi8qKlxuICogR2V0cyBhIHRpbGUgaW1hZ2UgZm9yIGFuIFhZWiB0aWxlIHB5cmFtaWQgbG9jYXRpb25cbiAqIEBwYXJhbSAge0dlb1BhY2thZ2V9ICAgZ2VvcGFja2FnZSBvcGVuIEdlb1BhY2thZ2Ugb2JqZWN0XG4gKiBAcGFyYW0gIHtTdHJpbmd9ICAgdGFibGUgICAgICBuYW1lIG9mIHRoZSB0YWJsZSBjb250YWluaW5nIHRoZSB0aWxlc1xuICogQHBhcmFtICB7TnVtYmVyfSAgIHggICAgICAgICAgeCBpbmRleCBvZiB0aGUgdGlsZVxuICogQHBhcmFtICB7TnVtYmVyfSAgIHkgICAgICAgICAgeSBpbmRleCBvZiB0aGUgdGlsZVxuICogQHBhcmFtICB7TnVtYmVyfSAgIHogICAgICAgICAgem9vbSBsZXZlbCBvZiB0aGUgdGlsZVxuICogQHBhcmFtICB7TnVtYmVyfSAgIHdpZHRoICAgICAgd2lkdGggb2YgdGhlIHJlc3VsdGluZyB0aWxlXG4gKiBAcGFyYW0gIHtOdW1iZXJ9ICAgaGVpZ2h0ICAgICBoZWlnaHQgb2YgdGhlIHJlc3VsdGluZyB0aWxlXG4gKiBAcGFyYW0gIHtGdW5jdGlvbn0gY2FsbGJhY2sgICBDYWxsZWQgd2l0aCBhbiBlcnJvciBpZiBvbmUgb2NjdXJyZWQgYW5kIHRoZSB0aWxlIGJ1ZmZlclxuICovXG5tb2R1bGUuZXhwb3J0cy5nZXRUaWxlRnJvbVhZWiA9IGZ1bmN0aW9uKGdlb3BhY2thZ2UsIHRhYmxlLCB4LCB5LCB6LCB3aWR0aCwgaGVpZ2h0LCBjYWxsYmFjaykge1xuICBnZW9wYWNrYWdlLmdldFRpbGVEYW9XaXRoVGFibGVOYW1lKHRhYmxlLCBmdW5jdGlvbihlcnIsIHRpbGVEYW8pIHtcbiAgICBpZiAoZXJyIHx8ICF0aWxlRGFvKSByZXR1cm4gY2FsbGJhY2soZXJyKTtcbiAgICB2YXIgcmV0cmlldmVyID0gbmV3IEdlb1BhY2thZ2VUaWxlUmV0cmlldmVyKHRpbGVEYW8sIHdpZHRoLCBoZWlnaHQpO1xuICAgIHJldHJpZXZlci5nZXRUaWxlKHgsIHksIHosIGNhbGxiYWNrKTtcbiAgfSk7XG59O1xuXG4vKipcbiAqIERyYXdzIGFuIFhZWiB0aWxlIHB5cmFtaWQgbG9jYXRpb24gaW50byB0aGUgcHJvdmlkZWQgY2FudmFzXG4gKiBAcGFyYW0gIHtHZW9QYWNrYWdlfSAgIGdlb3BhY2thZ2Ugb3BlbiBHZW9QYWNrYWdlIG9iamVjdFxuICogQHBhcmFtICB7U3RyaW5nfSAgIHRhYmxlICAgICAgbmFtZSBvZiB0aGUgdGFibGUgY29udGFpbmluZyB0aGUgdGlsZXNcbiAqIEBwYXJhbSAge051bWJlcn0gICB4ICAgICAgICAgIHggaW5kZXggb2YgdGhlIHRpbGVcbiAqIEBwYXJhbSAge051bWJlcn0gICB5ICAgICAgICAgIHkgaW5kZXggb2YgdGhlIHRpbGVcbiAqIEBwYXJhbSAge051bWJlcn0gICB6ICAgICAgICAgIHpvb20gbGV2ZWwgb2YgdGhlIHRpbGVcbiAqIEBwYXJhbSAge051bWJlcn0gICB3aWR0aCAgICAgIHdpZHRoIG9mIHRoZSByZXN1bHRpbmcgdGlsZVxuICogQHBhcmFtICB7TnVtYmVyfSAgIGhlaWdodCAgICAgaGVpZ2h0IG9mIHRoZSByZXN1bHRpbmcgdGlsZVxuICogQHBhcmFtICB7Q2FudmFzfSAgIGNhbnZhcyAgICAgY2FudmFzIGVsZW1lbnQgdG8gZHJhdyB0aGUgdGlsZSBpbnRvXG4gKiBAcGFyYW0gIHtGdW5jdGlvbn0gY2FsbGJhY2sgICBDYWxsZWQgd2l0aCBhbiBlcnJvciBpZiBvbmUgb2NjdXJyZWRcbiAqL1xubW9kdWxlLmV4cG9ydHMuZHJhd1hZWlRpbGVJbkNhbnZhcyA9IGZ1bmN0aW9uKGdlb3BhY2thZ2UsIHRhYmxlLCB4LCB5LCB6LCB3aWR0aCwgaGVpZ2h0LCBjYW52YXMsIGNhbGxiYWNrKSB7XG4gIGdlb3BhY2thZ2UuZ2V0VGlsZURhb1dpdGhUYWJsZU5hbWUodGFibGUsIGZ1bmN0aW9uKGVyciwgdGlsZURhbykge1xuICAgIHZhciByZXRyaWV2ZXIgPSBuZXcgR2VvUGFja2FnZVRpbGVSZXRyaWV2ZXIodGlsZURhbywgd2lkdGgsIGhlaWdodCk7XG4gICAgcmV0cmlldmVyLmRyYXdUaWxlSW4oeCwgeSwgeiwgY2FudmFzLCBjYWxsYmFjayk7XG4gIH0pO1xufTtcbiIsInZhciBwcm9qNCA9IHJlcXVpcmUoJ3Byb2o0Jyk7XG5cbi8qKlxuICogQ3JlYXRlIGEgbmV3IGJvdW5kaW5nIGJveFxuICogQHBhcmFtICB7TnVtYmVyfSBtaW5Mb25naXR1ZGVPckJvdW5kaW5nQm94IG1pbmltdW0gbG9uZ2l0dWRlIG9yIGJvdW5kaW5nIGJveCB0byBjb3B5ICh3ZXN0KVxuICogQHBhcmFtICB7TnVtYmVyfSBtYXhMb25naXR1ZGUgICAgICAgICAgICAgIG1heGltdW0gbG9uZ2l0dWRlIChlYXN0KVxuICogQHBhcmFtICB7TnVtYmVyfSBtaW5MYXRpdHVkZSAgICAgICAgICAgICAgIE1pbmltdW0gbGF0aXR1ZGUgKHNvdXRoKVxuICogQHBhcmFtICB7TnVtYmVyfSBtYXhMYXRpdHVkZSAgICAgICAgICAgICAgIE1heGltdW0gbGF0aXR1ZGUgKG5vcnRoKVxuICogQHJldHVybiB7Qm91bmRpbmdCb3h9ICAgICAgICAgICAgICAgICAgICAgIG5ld2x5IGNvbnN0cnVjdGVkIGJvdW5kaW5nIGJveFxuICovXG52YXIgQm91bmRpbmdCb3ggPSBmdW5jdGlvbihtaW5Mb25naXR1ZGVPckJvdW5kaW5nQm94LCBtYXhMb25naXR1ZGUsIG1pbkxhdGl0dWRlLCBtYXhMYXRpdHVkZSkge1xuICAvLyBpZiB0aGVyZSBpcyBhIHNlY29uZCBhcmd1bWVudCB0aGUgZmlyc3QgYXJndW1lbnQgaXMgdGhlIG1pbkxvbmdpdHVkZVxuICBpZiAobWF4TG9uZ2l0dWRlICE9PSB1bmRlZmluZWQpIHtcbiAgICB0aGlzLm1pbkxvbmdpdHVkZSA9IG1pbkxvbmdpdHVkZU9yQm91bmRpbmdCb3g7XG4gICAgdGhpcy5tYXhMb25naXR1ZGUgPSBtYXhMb25naXR1ZGU7XG4gICAgdGhpcy5taW5MYXRpdHVkZSA9IG1pbkxhdGl0dWRlO1xuICAgIHRoaXMubWF4TGF0aXR1ZGUgPSBtYXhMYXRpdHVkZTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgYm91bmRpbmdCb3ggPSBtaW5Mb25naXR1ZGVPckJvdW5kaW5nQm94O1xuICAgIHRoaXMubWluTG9uZ2l0dWRlID0gYm91bmRpbmdCb3gubWluTG9uZ2l0dWRlO1xuICAgIHRoaXMubWF4TG9uZ2l0dWRlID0gYm91bmRpbmdCb3gubWF4TG9uZ2l0dWRlO1xuICAgIHRoaXMubWluTGF0aXR1ZGUgPSBib3VuZGluZ0JveC5taW5MYXRpdHVkZTtcbiAgICB0aGlzLm1heExhdGl0dWRlID0gYm91bmRpbmdCb3gubWF4TGF0aXR1ZGU7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBCb3VuZGluZ0JveDtcblxuLyoqXG4gKiBCdWlsZCBhIEdlb21ldHJ5IEVudmVsb3BlIGZyb20gdGhlIGJvdW5kaW5nIGJveFxuICpcbiAqIEByZXR1cm4gZ2VvbWV0cnkgZW52ZWxvcGVcbiAqL1xuQm91bmRpbmdCb3gucHJvdG90eXBlLmJ1aWxkRW52ZWxvcGUgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB7XG4gICAgbWluWTogdGhpcy5taW5MYXRpdHVkZSxcbiAgICBtaW5YOiB0aGlzLm1pbkxvbmdpdHVkZSxcbiAgICBtYXhZOiB0aGlzLm1heExhdGl0dWRlLFxuICAgIG1heFg6IHRoaXMubWF4TG9uZ2l0dWRlXG4gIH07XG59O1xuXG5Cb3VuZGluZ0JveC5wcm90b3R5cGUudG9HZW9KU09OID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiB7XG4gICAgXCJ0eXBlXCI6IFwiRmVhdHVyZVwiLFxuICAgIFwicHJvcGVydGllc1wiOiB7fSxcbiAgICBcImdlb21ldHJ5XCI6IHtcbiAgICAgIFwidHlwZVwiOiBcIlBvbHlnb25cIixcbiAgICAgIFwiY29vcmRpbmF0ZXNcIjogW1xuICAgICAgICBbXG4gICAgICAgICAgW3RoaXMubWluTG9uZ2l0dWRlLHRoaXMubWluTGF0aXR1ZGVdLFxuICAgICAgICAgIFt0aGlzLm1heExvbmdpdHVkZSx0aGlzLm1pbkxhdGl0dWRlXSxcbiAgICAgICAgICBbdGhpcy5tYXhMb25naXR1ZGUsdGhpcy5tYXhMYXRpdHVkZV0sXG4gICAgICAgICAgW3RoaXMubWluTG9uZ2l0dWRlLHRoaXMubWF4TGF0aXR1ZGVdLFxuICAgICAgICAgIFt0aGlzLm1pbkxvbmdpdHVkZSx0aGlzLm1pbkxhdGl0dWRlXVxuICAgICAgICBdXG4gICAgICBdXG4gICAgfVxuICB9O1xufVxuXG4vKipcbiAqIERldGVybWluZSBpZiBlcXVhbCB0byB0aGUgcHJvdmlkZWQgYm91bmRpbmcgYm94XG4gKiBAcGFyYW0gIHtCb3VuZGluZ0JveH0gYm91bmRpbmdCb3ggYm91bmRpbmcgYm91bmRpbmdCb3hcbiAqIEByZXR1cm4ge0Jvb2xlYW59ICAgICAgICAgICAgIHRydWUgaWYgZXF1YWwsIGZhbHNlIGlmIG5vdFxuICovXG5Cb3VuZGluZ0JveC5wcm90b3R5cGUuZXF1YWxzID0gZnVuY3Rpb24gKGJvdW5kaW5nQm94KSB7XG4gIGlmICghYm91bmRpbmdCb3gpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAodGhpcyA9PT0gYm91bmRpbmdCb3gpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiB0aGlzLm1heExhdGl0dWRlID09PSBib3VuZGluZ0JveC5tYXhMYXRpdHVkZVxuICAgICYmIHRoaXMubWluTGF0aXR1ZGUgPT09IGJvdW5kaW5nQm94Lm1pbkxhdGl0dWRlXG4gICAgJiYgdGhpcy5tYXhMb25naXR1ZGUgPT09IGJvdW5kaW5nQm94Lm1heExvbmdpdHVkZVxuICAgICYmIHRoaXMubWF4TGF0aXR1ZGUgPT09IGJvdW5kaW5nQm94Lm1heExhdGl0dWRlO1xufTtcblxuQm91bmRpbmdCb3gucHJvdG90eXBlLnByb2plY3RCb3VuZGluZ0JveCA9IGZ1bmN0aW9uIChmcm9tLCB0bykge1xuICBpZiAoZnJvbSAmJiBmcm9tICE9PSAndW5kZWZpbmVkJyAmJiB0byAmJiB0byAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICB2YXIgdG9Qcm9qID0gcHJvajQodG8pO1xuICAgIHZhciBmcm9tUHJvaiA9IHByb2o0KGZyb20pO1xuICAgIHZhciBtaW4gPSBwcm9qNChmcm9tLCB0bywgW3RoaXMubWluTG9uZ2l0dWRlLCB0aGlzLm1pbkxhdGl0dWRlXSk7XG4gICAgdmFyIG1heCA9IHByb2o0KGZyb20sIHRvLCBbdGhpcy5tYXhMb25naXR1ZGUsIHRoaXMubWF4TGF0aXR1ZGVdKTtcbiAgICB2YXIgcHJvamVjdGVkID0gbmV3IEJvdW5kaW5nQm94KG1pblswXSwgbWF4WzBdLCBtaW5bMV0sIG1heFsxXSk7XG4gICAgcmV0dXJuIHByb2plY3RlZDtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxufTtcblxuXG5cbi8vIC8qKlxuLy8gICogIEdldCBhIE1hcCBSZWN0YW5nbGUgcmVwcmVzZW50aW5nIHRoZSBib3VuZGluZyBib3hcbi8vICAqXG4vLyAgKiAgQHJldHVybiBtYXAgcmVjdGFuZ2xlXG4vLyAgKi9cbi8vIC0oTUtNYXBSZWN0KSBnZXRNYXBSZWN0O1xuLy9cbi8vIC8qKlxuLy8gICogIEdldCBhIENvb3JkaW5hdGUgUmVnaW9uIG9mIHRoZSBib3VuZGluZyBib3hcbi8vICAqXG4vLyAgKiAgQHJldHVybiBDb29yZGluYXRlIFJlZ2lvblxuLy8gICovXG4vLyAtKE1LQ29vcmRpbmF0ZVJlZ2lvbikgZ2V0Q29vcmRpbmF0ZVJlZ2lvbjtcbi8vXG4vLyAvKipcbi8vICAqICBHZXQgdGhlIFNwYW4gb2YgdGhlIGJvdW5kaW5nIGJveFxuLy8gICpcbi8vICAqICBAcmV0dXJuIFNwYW5cbi8vICAqL1xuLy8gLShNS0Nvb3JkaW5hdGVTcGFuKSBnZXRTcGFuO1xuLy9cbi8vIC8qKlxuLy8gICogIEdldCB0aGUgY2VudGVyIG9mIHRoZSBib3VuZGluZyBib3hcbi8vICAqXG4vLyAgKiAgQHJldHVybiBjZW50ZXIgbG9jYXRpb25cbi8vICAqL1xuLy8gLShDTExvY2F0aW9uQ29vcmRpbmF0ZTJEKSBnZXRDZW50ZXI7XG4vL1xuLy8gLyoqXG4vLyAgKiAgR2V0IHdpdGggd2lkdGggYW5kIGhlaWdodCBvZiB0aGUgYm91bmRpbmcgYm94IGluIG1ldGVyc1xuLy8gICpcbi8vICAqICBAcmV0dXJuIGJvdW5kaW5nIGJveCBzaXplXG4vLyAgKi9cbi8vIC0oc3RydWN0IEdQS0dCb3VuZGluZ0JveFNpemUpIHNpemVJbk1ldGVycztcbiIsIi8qKlxuICogQ29udGVudHMgbW9kdWxlLlxuICogQG1vZHVsZSBjb3JlL2NvbnRlbnRzXG4gKiBAc2VlIG1vZHVsZTpkYW8vZGFvXG4gKi9cblxudmFyIERhbyA9IHJlcXVpcmUoJy4uLy4uL2Rhby9kYW8nKVxuXG4gICwgU3BhdGlhbFJlZmVyZW5jZVN5c3RlbURhbyA9IHJlcXVpcmUoJy4uL3NycycpLlNwYXRpYWxSZWZlcmVuY2VTeXN0ZW1EYW9cbiAgLCBUaWxlTWF0cml4RGFvID0gcmVxdWlyZSgnLi4vLi4vdGlsZXMvbWF0cml4JykuVGlsZU1hdHJpeERhb1xuICAsIFRpbGVNYXRyaXhTZXREYW8gPSByZXF1aXJlKCcuLi8uLi90aWxlcy9tYXRyaXhzZXQnKS5UaWxlTWF0cml4U2V0RGFvO1xuXG52YXIgdXRpbCA9IHJlcXVpcmUoJ3V0aWwnKTtcblxuLyoqXG4gKiBDb250ZW50cyBvYmplY3QuIFByb3ZpZGVzIGlkZW50aWZ5aW5nIGFuZCBkZXNjcmlwdGl2ZSBpbmZvcm1hdGlvbiB0aGF0IGFuXG4gKiBhcHBsaWNhdGlvbiBjYW4gZGlzcGxheSB0byBhIHVzZXIgaW4gYSBtZW51IG9mIGdlb3NwYXRpYWwgZGF0YSB0aGF0IGlzXG4gKiBhdmFpbGFibGUgZm9yIGFjY2VzcyBhbmQvb3IgdXBkYXRlLlxuICogQGNsYXNzIENvbnRlbnRzXG4gKi9cbnZhciBDb250ZW50cyA9IGZ1bmN0aW9uKCkge1xuICAvKipcbiAgICogdGhlIG5hbWUgb2YgdGhlIHRpbGVzLCBvciBmZWF0dXJlIHRhYmxlXG4gICAqIEBtZW1iZXIge3N0cmluZ31cbiAgICovXG4gIHRoaXMudGFibGVfbmFtZTtcblxuICAvKipcbiAgICogVHlwZSBvZiBkYXRhIHN0b3JlZCBpbiB0aGUgdGFibGU6LiDigJxmZWF0dXJlc+KAnSBwZXIgY2xhdXNlIEZlYXR1cmVzLFxuICAgKiDigJx0aWxlc+KAnSBwZXIgY2xhdXNlIFRpbGVzLCBvciBhbiBpbXBsZW1lbnRlci1kZWZpbmVkIHZhbHVlIGZvciBvdGhlciBkYXRhXG4gICAqIHRhYmxlcyBwZXIgY2xhdXNlIGluIGFuIEV4dGVuZGVkIEdlb1BhY2thZ2UuXG4gICAqIEBtZW1iZXIge3N0cmluZ31cbiAgICovXG4gIHRoaXMuZGF0YV90eXBlO1xuXG4gIC8qKlxuICAgKiBBIGh1bWFuLXJlYWRhYmxlIGlkZW50aWZpZXIgKGUuZy4gc2hvcnQgbmFtZSkgZm9yIHRoZSB0YWJsZV9uYW1lIGNvbnRlbnRcbiAgICogQG1lbWJlciB7c3RyaW5nfVxuICAgKi9cbiAgdGhpcy5pZGVudGlmaWVyO1xuXG4gIC8qKlxuICAgKiBBIGh1bWFuLXJlYWRhYmxlIGRlc2NyaXB0aW9uIGZvciB0aGUgdGFibGVfbmFtZSBjb250ZW50XG4gICAqIEBtZW1iZXIge3N0cmluZ31cbiAgICovXG4gIHRoaXMuZGVzY3JpcHRpb247XG5cbiAgLyoqXG4gICAqIHRpbWVzdGFtcCB2YWx1ZSBpbiBJU08gODYwMSBmb3JtYXQgYXMgZGVmaW5lZCBieSB0aGUgc3RyZnRpbWUgZnVuY3Rpb25cbiAgICogJVktJW0tJWRUJUg6JU06JWZaIGZvcm1hdCBzdHJpbmcgYXBwbGllZCB0byB0aGUgY3VycmVudCB0aW1lXG4gICAqIEBtZW1iZXIge0RhdGV9XG4gICAqL1xuICB0aGlzLmxhc3RfY2hhbmdlO1xuXG4gIC8qKlxuICAgKiBCb3VuZGluZyBib3ggbWluaW11bSBlYXN0aW5nIG9yIGxvbmdpdHVkZSBmb3IgYWxsIGNvbnRlbnQgaW4gdGFibGVfbmFtZVxuICAgKiBAbWVtYmVyIHtOdW1iZXJ9XG4gICAqL1xuICB0aGlzLm1pbl94O1xuXG4gIC8qKlxuICAgKiBCb3VuZGluZyBib3ggbWluaW11bSBub3J0aGluZyBvciBsYXRpdHVkZSBmb3IgYWxsIGNvbnRlbnQgaW4gdGFibGVfbmFtZVxuICAgKiBAbWVtYmVyIHtOdW1iZXJ9XG4gICAqL1xuICB0aGlzLm1pbl95O1xuXG4gIC8qKlxuICAgKiBCb3VuZGluZyBib3ggbWF4aW11bSBlYXN0aW5nIG9yIGxvbmdpdHVkZSBmb3IgYWxsIGNvbnRlbnQgaW4gdGFibGVfbmFtZVxuICAgKiBAbWVtYmVyIHtOdW1iZXJ9XG4gICAqL1xuICB0aGlzLm1heF94O1xuXG4gIC8qKlxuICAgKiBCb3VuZGluZyBib3ggbWF4aW11bSBub3J0aGluZyBvciBsYXRpdHVkZSBmb3IgYWxsIGNvbnRlbnQgaW4gdGFibGVfbmFtZVxuICAgKiBAbWVtYmVyIHtOdW1iZXJ9XG4gICAqL1xuICB0aGlzLm1heF95O1xuXG4gIC8qKlxuICAgKiBVbmlxdWUgaWRlbnRpZmllciBmb3IgZWFjaCBTcGF0aWFsIFJlZmVyZW5jZSBTeXN0ZW0gd2l0aGluIGEgR2VvUGFja2FnZVxuICAgKiBAbWVtYmVyIHtOdW1iZXJ9XG4gICAqL1xuICB0aGlzLnNyc19pZDtcbn1cblxuLyoqXG4gKiBDb250ZW50cyBvYmplY3QuIFByb3ZpZGVzIGlkZW50aWZ5aW5nIGFuZCBkZXNjcmlwdGl2ZSBpbmZvcm1hdGlvbiB0aGF0IGFuXG4gKiBhcHBsaWNhdGlvbiBjYW4gZGlzcGxheSB0byBhIHVzZXIgaW4gYSBtZW51IG9mIGdlb3NwYXRpYWwgZGF0YSB0aGF0IGlzXG4gKiBhdmFpbGFibGUgZm9yIGFjY2VzcyBhbmQvb3IgdXBkYXRlLlxuICogQGNsYXNzXG4gKiBAZXh0ZW5kcyB7bW9kdWxlOmRhby9kYW9+RGFvfVxuICovXG52YXIgQ29udGVudHNEYW8gPSBmdW5jdGlvbihkYikge1xuICBEYW8uY2FsbCh0aGlzLCBkYik7XG59XG5cbnV0aWwuaW5oZXJpdHMoQ29udGVudHNEYW8sIERhbyk7XG5cbkNvbnRlbnRzRGFvLnByb3RvdHlwZS5jcmVhdGVPYmplY3QgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBuZXcgQ29udGVudHMoKTtcbn07XG5cbkNvbnRlbnRzRGFvLnByb3RvdHlwZS5nZXRQcm9qZWN0aW9uID0gZnVuY3Rpb24gKGNvbnRlbnRzLCBjYWxsYmFjaykge1xuICB0aGlzLmdldFNycyhjb250ZW50cywgZnVuY3Rpb24oZXJyLCBzcnMpIHtcbiAgICB2YXIgc3JzRGFvID0gdGhpcy5nZXRTcGF0aWFsUmVmZXJlbmNlU3lzdGVtRGFvKCk7XG4gICAgY2FsbGJhY2sobnVsbCwgc3JzRGFvLmdldFByb2plY3Rpb24oc3JzKSk7XG4gIH0uYmluZCh0aGlzKSk7XG59O1xuXG5Db250ZW50c0Rhby5wcm90b3R5cGUudmFsaWRhdGVPYmplY3QgPSBmdW5jdGlvbihvYmplY3QpIHtcbiAgdGhyb3cgbmV3IEVycm9yKCdub3QgaW1wbGVtZW50ZWQnKTtcbn1cblxuQ29udGVudHNEYW8ucHJvdG90eXBlLmRlbGV0ZUNhc2NhZGUgPSBmdW5jdGlvbiAoKSB7XG4gIHRocm93IG5ldyBFcnJvcignbm90IGltcGxlbWVudGVkJyk7XG59O1xuXG5Db250ZW50c0Rhby5wcm90b3R5cGUuZGVsZXRlQ2FzY2FkZVdpdGhVc2VyVGFibGUgPSBmdW5jdGlvbiAoY29udGVudHMsIHVzZXJUYWJsZSkge1xuICB0aHJvdyBuZXcgRXJyb3IoJ25vdCBpbXBsZW1lbnRlZCcpO1xufTtcblxuQ29udGVudHNEYW8ucHJvdG90eXBlLmRlbGV0ZUNhc2NhZGVXaXRoQ29sbGVjdGlvbiA9IGZ1bmN0aW9uIChjb250ZW50c0NvbGxlY3Rpb24pIHtcbiAgdGhyb3cgbmV3IEVycm9yKCdub3QgaW1wbGVtZW50ZWQnKTtcbn07XG5cbkNvbnRlbnRzRGFvLnByb3RvdHlwZS5kZWxldGVDYXNjYWRlV2l0aENvbGxlY3Rpb25BbmRVc2VyVGFibGUgPSBmdW5jdGlvbiAoY29udGVudHNDb2xsZWN0aW9uLCB1c2VyVGFibGUpIHtcbiAgdGhyb3cgbmV3IEVycm9yKCdub3QgaW1wbGVtZW50ZWQnKTtcbn07XG5cbkNvbnRlbnRzRGFvLnByb3RvdHlwZS5kZWxldGVDYXNjYWRlV2hlcmUgPSBmdW5jdGlvbiAod2hlcmUsIHdoZXJlQXJncykge1xuICB0aHJvdyBuZXcgRXJyb3IoJ25vdCBpbXBsZW1lbnRlZCcpO1xufTtcblxuQ29udGVudHNEYW8ucHJvdG90eXBlLmRlbGV0ZUNhc2NhZGVXaGVyZVdpdGhVc2VyVGFibGUgPSBmdW5jdGlvbiAod2hlcmUsIHdoZXJlQXJncywgdXNlclRhYmxlKSB7XG4gIHRocm93IG5ldyBFcnJvcignbm90IGltcGxlbWVudGVkJyk7XG59O1xuXG5Db250ZW50c0Rhby5wcm90b3R5cGUuZGVsZXRlQnlJZENhc2NhZGUgPSBmdW5jdGlvbiAoaWQpIHtcbiAgdGhyb3cgbmV3IEVycm9yKCdub3QgaW1wbGVtZW50ZWQnKTtcbn07XG5cbkNvbnRlbnRzRGFvLnByb3RvdHlwZS5kZWxldGVCeUlkQ2FzY2FkZVdpdGhVc2VyVGFibGUgPSBmdW5jdGlvbiAoaWQsIHVzZXJUYWJsZSkge1xuICB0aHJvdyBuZXcgRXJyb3IoJ25vdCBpbXBsZW1lbnRlZCcpO1xufTtcblxuQ29udGVudHNEYW8ucHJvdG90eXBlLmRlbGV0ZUJ5SWRzQ2FzY2FkZSA9IGZ1bmN0aW9uIChpZENvbGxlY3Rpb24pIHtcbiAgdGhyb3cgbmV3IEVycm9yKCdub3QgaW1wbGVtZW50ZWQnKTtcbn07XG5cbkNvbnRlbnRzRGFvLnByb3RvdHlwZS5kZWxldGVCeUlkc0Nhc2NhZGVXaXRoVXNlclRhYmxlID0gZnVuY3Rpb24gKGlkQ29sbGVjdGlvbiwgdXNlclRhYmxlKSB7XG4gIHRocm93IG5ldyBFcnJvcignbm90IGltcGxlbWVudGVkJyk7XG59O1xuXG5Db250ZW50c0Rhby5wcm90b3R5cGUuZGVsZXRlVGFibGUgPSBmdW5jdGlvbiAodGFibGVOYW1lKSB7XG4gIHRocm93IG5ldyBFcnJvcignbm90IGltcGxlbWVudGVkJyk7XG59O1xuXG5Db250ZW50c0Rhby5wcm90b3R5cGUuZ2V0U3JzID0gZnVuY3Rpb24gKGNvbnRlbnRzLCBjYWxsYmFjaykge1xuICB2YXIgZGFvID0gdGhpcy5nZXRTcGF0aWFsUmVmZXJlbmNlU3lzdGVtRGFvKCk7XG4gIGRhby5xdWVyeUZvcklkT2JqZWN0KGNvbnRlbnRzLnNyc19pZCwgY2FsbGJhY2spO1xufTtcblxuQ29udGVudHNEYW8ucHJvdG90eXBlLmdldEdlb21ldHJ5Q29sdW1ucyA9IGZ1bmN0aW9uIChjb250ZW50cywgY2FsbGJhY2spIHtcbiAgdmFyIGRhbyA9IHRoaXMuZ2V0R2VvbWV0cnlDb2x1bW5zRGFvKCk7XG4gIC8vIFRPRE8gd2hhdCBpcyBjYXVzaW5nIHRoaXMgdG8gbmVlZCB0byBiZSBoZXJlIGFuZCBub3QgdXAgaW4gdGhlIHJlcXVpcmUgc2VjdGlvblxuICB2YXIgR2VvbWV0cnlDb2x1bW5zRGFvID0gcmVxdWlyZSgnLi4vLi4vZmVhdHVyZXMvY29sdW1ucycpLkdlb21ldHJ5Q29sdW1uc0RhbztcbiAgZGFvLnF1ZXJ5Rm9yRXFXaXRoRmllbGRBbmRWYWx1ZShHZW9tZXRyeUNvbHVtbnNEYW8uQ09MVU1OX1RBQkxFX05BTUUsIGNvbnRlbnRzLnRhYmxlX25hbWUsIGZ1bmN0aW9uKGVyciwgcmVzdWx0cykge1xuICAgIGlmIChlcnIgfHwgIXJlc3VsdHMgfHwgIXJlc3VsdHMubGVuZ3RoKSByZXR1cm4gY2FsbGJhY2soZXJyKTtcbiAgICB2YXIgZ2MgPSBkYW8uY3JlYXRlT2JqZWN0KCk7XG4gICAgZGFvLnBvcHVsYXRlT2JqZWN0RnJvbVJlc3VsdChnYywgcmVzdWx0c1swXSk7XG4gICAgY2FsbGJhY2soZXJyLCBnYyk7XG4gIH0pO1xufTtcblxuQ29udGVudHNEYW8ucHJvdG90eXBlLmdldFRpbGVNYXRyaXhTZXQgPSBmdW5jdGlvbiAoY29udGVudHMsIGNhbGxiYWNrKSB7XG4gIHZhciBkYW8gPSB0aGlzLmdldFRpbGVNYXRyaXhTZXREYW8oKTtcbiAgZGFvLnF1ZXJ5Rm9yRXFXaXRoRmllbGRBbmRWYWx1ZShUaWxlTWF0cml4U2V0RGFvLkNPTFVNTl9UQUJMRV9OQU1FLCBjb250ZW50cy50YWJsZV9uYW1lLCBmdW5jdGlvbihlcnIsIHJlc3VsdHMpIHtcbiAgICBpZiAoZXJyIHx8ICFyZXN1bHRzIHx8ICFyZXN1bHRzLmxlbmd0aCkgcmV0dXJuIGNhbGxiYWNrKGVycik7XG4gICAgdmFyIGdjID0gZGFvLmNyZWF0ZU9iamVjdCgpO1xuICAgIGRhby5wb3B1bGF0ZU9iamVjdEZyb21SZXN1bHQoZ2MsIHJlc3VsdHNbMF0pO1xuICAgIGNhbGxiYWNrKGVyciwgZ2MpO1xuICB9KTtcbn07XG5cbkNvbnRlbnRzRGFvLnByb3RvdHlwZS5nZXRUaWxlTWF0cml4ID0gZnVuY3Rpb24gKGNvbnRlbnRzLCBjYWxsYmFjaykge1xuICB2YXIgZGFvID0gdGhpcy5nZXRUaWxlTWF0cml4RGFvKCk7XG4gIGRhby5xdWVyeUZvckVxV2l0aEZpZWxkQW5kVmFsdWUoVGlsZU1hdHJpeERhby5DT0xVTU5fVEFCTEVfTkFNRSwgY29udGVudHMudGFibGVfbmFtZSwgZnVuY3Rpb24oZXJyLCByZXN1bHRzKSB7XG4gICAgaWYgKGVyciB8fCAhcmVzdWx0cyB8fCAhcmVzdWx0cy5sZW5ndGgpIHJldHVybiBjYWxsYmFjayhlcnIpO1xuICAgIHZhciB0aWxlTWF0cmljaWVzID0gW107XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZXN1bHRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgZ2MgPSBkYW8uY3JlYXRlT2JqZWN0KCk7XG4gICAgICBkYW8ucG9wdWxhdGVPYmplY3RGcm9tUmVzdWx0KGdjLCByZXN1bHRzW2ldKTtcbiAgICAgIHRpbGVNYXRyaWNpZXMucHVzaChnYyk7XG4gICAgfVxuICAgIGNhbGxiYWNrKGVyciwgdGlsZU1hdHJpY2llcyk7XG4gIH0pO1xufTtcblxuQ29udGVudHNEYW8ucHJvdG90eXBlLmdldEdlb21ldHJ5Q29sdW1uc0RhbyA9IGZ1bmN0aW9uICgpIHtcbiAgLy8gVE9ETyB3aGF0IGlzIGNhdXNpbmcgdGhpcyB0byBuZWVkIHRvIGJlIGhlcmUgYW5kIG5vdCB1cCBpbiB0aGUgcmVxdWlyZSBzZWN0aW9uXG4gIHZhciBHZW9tZXRyeUNvbHVtbnNEYW8gPSByZXF1aXJlKCcuLi8uLi9mZWF0dXJlcy9jb2x1bW5zJykuR2VvbWV0cnlDb2x1bW5zRGFvO1xuICByZXR1cm4gbmV3IEdlb21ldHJ5Q29sdW1uc0Rhbyh0aGlzLmNvbm5lY3Rpb24pO1xufTtcblxuQ29udGVudHNEYW8ucHJvdG90eXBlLmdldFNwYXRpYWxSZWZlcmVuY2VTeXN0ZW1EYW8gPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBuZXcgU3BhdGlhbFJlZmVyZW5jZVN5c3RlbURhbyh0aGlzLmNvbm5lY3Rpb24pO1xufTtcblxuQ29udGVudHNEYW8ucHJvdG90eXBlLmdldFRpbGVNYXRyaXhTZXREYW8gPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBuZXcgVGlsZU1hdHJpeFNldERhbyh0aGlzLmNvbm5lY3Rpb24pO1xufTtcblxuQ29udGVudHNEYW8ucHJvdG90eXBlLmdldFRpbGVNYXRyaXhEYW8gPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBuZXcgVGlsZU1hdHJpeERhbyh0aGlzLmNvbm5lY3Rpb24pO1xufTtcblxuQ29udGVudHNEYW8uVEFCTEVfTkFNRSA9IFwiZ3BrZ19jb250ZW50c1wiO1xuQ29udGVudHNEYW8uQ09MVU1OX1BLID0gXCJ0YWJsZV9uYW1lXCI7XG5Db250ZW50c0Rhby5DT0xVTU5fVEFCTEVfTkFNRSA9IFwidGFibGVfbmFtZVwiO1xuQ29udGVudHNEYW8uQ09MVU1OX0RBVEFfVFlQRSA9IFwiZGF0YV90eXBlXCI7XG5Db250ZW50c0Rhby5DT0xVTU5fSURFTlRJRklFUiA9IFwiaWRlbnRpZmllclwiO1xuQ29udGVudHNEYW8uQ09MVU1OX0RFU0NSSVBUSU9OID0gXCJkZXNjcmlwdGlvblwiO1xuQ29udGVudHNEYW8uQ09MVU1OX0xBU1RfQ0hBTkdFID0gXCJsYXN0X2NoYW5nZVwiO1xuQ29udGVudHNEYW8uQ09MVU1OX01JTl9YID0gXCJtaW5feFwiO1xuQ29udGVudHNEYW8uQ09MVU1OX01JTl9ZID0gXCJtaW5feVwiO1xuQ29udGVudHNEYW8uQ09MVU1OX01BWF9YID0gXCJtYXhfeFwiO1xuQ29udGVudHNEYW8uQ09MVU1OX01BWF9ZID0gXCJtYXhfeVwiO1xuQ29udGVudHNEYW8uQ09MVU1OX1NSU19JRCA9IFwic3JzX2lkXCI7XG5cbkNvbnRlbnRzRGFvLkdQS0dfQ0RUX0ZFQVRVUkVTX05BTUUgPSBcImZlYXR1cmVzXCI7XG5Db250ZW50c0Rhby5HUEtHX0NEVF9USUxFU19OQU1FID0gXCJ0aWxlc1wiO1xuXG5Db250ZW50c0Rhby5wcm90b3R5cGUuZ3BrZ1RhYmxlTmFtZSA9IENvbnRlbnRzRGFvLlRBQkxFX05BTUU7XG5Db250ZW50c0Rhby5wcm90b3R5cGUuaWRDb2x1bW5zID0gW0NvbnRlbnRzRGFvLkNPTFVNTl9QS107XG5cbm1vZHVsZS5leHBvcnRzLkNvbnRlbnRzRGFvID0gQ29udGVudHNEYW87XG5tb2R1bGUuZXhwb3J0cy5Db250ZW50cyA9IENvbnRlbnRzO1xuIiwiLyoqXG4gKiBTcGF0aWFsUmVmZXJlbmNlU3lzdGVtIG1vZHVsZS5cbiAqIEBtb2R1bGUgZGFvL3NwYXRpYWxSZWZlcmVuY2VTeXN0ZW1cbiAqIEBzZWUgbW9kdWxlOmRhby9kYW9cbiAqL1xuXG52YXIgRGFvID0gcmVxdWlyZSgnLi4vLi4vZGFvL2RhbycpO1xuXG52YXIgdXRpbCA9IHJlcXVpcmUoJ3V0aWwnKVxuICAsIHByb2o0ID0gcmVxdWlyZSgncHJvajQnKTtcblxuLyoqXG4gKiBTcGF0aWFsIFJlZmVyZW5jZSBTeXN0ZW0gb2JqZWN0LiBUaGUgY29vcmRpbmF0ZSByZWZlcmVuY2Ugc3lzdGVtIGRlZmluaXRpb25zIGl0IGNvbnRhaW5zIGFyZSByZWZlcmVuY2VkIGJ5IHRoZSBHZW9QYWNrYWdlIENvbnRlbnRzIGFuZCBHZW9tZXRyeUNvbHVtbnMgb2JqZWN0cyB0byByZWxhdGUgdGhlIHZlY3RvciBhbmQgdGlsZSBkYXRhIGluIHVzZXIgdGFibGVzIHRvIGxvY2F0aW9ucyBvbiB0aGUgZWFydGguXG4gKiBAY2xhc3MgU3BhdGlhbFJlZmVyZW5jZVN5c3RlbVxuICovXG52YXIgU3BhdGlhbFJlZmVyZW5jZVN5c3RlbSA9IGZ1bmN0aW9uKCkge1xuICAvKipcbiAgICogSHVtYW4gcmVhZGFibGUgbmFtZSBvZiB0aGlzIFNSU1xuICAgKiBAbWVtYmVyIHtzdHJpbmd9XG4gICAqL1xuICB0aGlzLnNyc19uYW1lO1xuICAvKipcbiAgICogVW5pcXVlIGlkZW50aWZpZXIgZm9yIGVhY2ggU3BhdGlhbCBSZWZlcmVuY2UgU3lzdGVtIHdpdGhpbiBhIEdlb1BhY2thZ2VcbiAgICogQG1lbWJlciB7TnVtYmVyfVxuICAgKi9cbiAgdGhpcy5zcnNfaWQ7XG5cbiAgLyoqXG4gICAqIENhc2UtaW5zZW5zaXRpdmUgbmFtZSBvZiB0aGUgZGVmaW5pbmcgb3JnYW5pemF0aW9uIGUuZy4gRVBTRyBvciBlcHNnXG4gICAqIEBtZW1iZXIge3N0cmluZ31cbiAgICovXG4gIHRoaXMub3JnYW5pemF0aW9uO1xuXG4gIC8qKlxuICAgKiBOdW1lcmljIElEIG9mIHRoZSBTcGF0aWFsIFJlZmVyZW5jZSBTeXN0ZW0gYXNzaWduZWQgYnkgdGhlIG9yZ2FuaXphdGlvblxuICAgKiBAbWVtYmVyIHtOdW1iZXJ9XG4gICAqL1xuICB0aGlzLm9yZ2FuaXphdGlvbl9jb29yZHN5c19pZDtcblxuICAvKipcbiAgICogV2VsbC1rbm93biBUZXh0IFszMl0gUmVwcmVzZW50YXRpb24gb2YgdGhlIFNwYXRpYWwgUmVmZXJlbmNlIFN5c3RlbVxuICAgKiBAbWVtYmVyIHtzdHJpbmd9XG4gICAqL1xuICB0aGlzLmRlZmluaXRpb247XG5cbiAgLyoqXG4gICAqIEh1bWFuIHJlYWRhYmxlIGRlc2NyaXB0aW9uIG9mIHRoaXMgU1JTXG4gICAqIEBtZW1iZXIge3N0cmluZ31cbiAgICovXG4gIHRoaXMuZGVzY3JpcHRpb247XG59O1xuXG4gIC8vIC8qKlxuICAvLyAgKiBDb250ZW50c1xuICAvLyAgKi9cbiAgLy8gQEZvcmVpZ25Db2xsZWN0aW9uRmllbGQoZWFnZXIgPSBmYWxzZSlcbiAgLy8gcHJpdmF0ZSBGb3JlaWduQ29sbGVjdGlvbjxDb250ZW50cz4gY29udGVudHM7XG4gIC8vXG4gIC8vIC8qKlxuICAvLyAgKiBHZW9tZXRyeSBDb2x1bW5zXG4gIC8vICAqL1xuICAvLyBARm9yZWlnbkNvbGxlY3Rpb25GaWVsZChlYWdlciA9IGZhbHNlKVxuICAvLyBwcml2YXRlIEZvcmVpZ25Db2xsZWN0aW9uPEdlb21ldHJ5Q29sdW1ucz4gZ2VvbWV0cnlDb2x1bW5zO1xuICAvL1xuICAvLyAvKipcbiAgLy8gICogTWF0cml4IFRpbGUgU2V0XG4gIC8vICAqL1xuICAvLyBARm9yZWlnbkNvbGxlY3Rpb25GaWVsZChlYWdlciA9IGZhbHNlKVxuICAvLyBwcml2YXRlIEZvcmVpZ25Db2xsZWN0aW9uPFRpbGVNYXRyaXhTZXQ+IHRpbGVNYXRyaXhTZXQ7XG5cblxuXG4vKipcbiAqIFNwYXRpYWwgUmVmZXJlbmNlIFN5c3RlbSBEYXRhIEFjY2VzcyBPYmplY3RcbiAqIEBjbGFzcyBTcGF0aWFsUmVmZXJlbmNlU3lzdGVtRGFvXG4gKiBAZXh0ZW5kcyB7bW9kdWxlOmRhby9kYW9+RGFvfVxuICovXG52YXIgU3BhdGlhbFJlZmVyZW5jZVN5c3RlbURhbyA9IGZ1bmN0aW9uKGNvbm5lY3Rpb24pIHtcbiAgRGFvLmNhbGwodGhpcywgY29ubmVjdGlvbik7XG59XG5cbnV0aWwuaW5oZXJpdHMoU3BhdGlhbFJlZmVyZW5jZVN5c3RlbURhbywgRGFvKTtcblxuU3BhdGlhbFJlZmVyZW5jZVN5c3RlbURhby5wcm90b3R5cGUuY3JlYXRlT2JqZWN0ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gbmV3IFNwYXRpYWxSZWZlcmVuY2VTeXN0ZW0oKTtcbn07XG5cbi8qKlxuICogR2V0IHRoZSBTcGF0aWFsIFJlZmVyZW5jZSBTeXN0ZW0gZm9yIHRoZSBwcm92aWRlZCBpZFxuICogQHBhcmFtICB7TnVtYmVyfSAgIHNyc0lkIHNycyBpZFxuICogQHBhcmFtIHtjYWxsYmFja30gY2FsbGJhY2sgY2FsbGVkIHdpdGggYW4gZXJyb3IgaWYgb25lIG9jY3VycmVkIGFuZCB0aGUgU3BhdGlhbFJlZmVyZW5jZVN5c3RlbSBpZiBvbmUgZXhpc3RzIGluIHRoaXMgR2VvUGFja2FnZSB3aXRoIHRoZSBpZFxuICovXG5TcGF0aWFsUmVmZXJlbmNlU3lzdGVtRGFvLnByb3RvdHlwZS5nZXRCeVNyc0lkID0gZnVuY3Rpb24oc3JzSWQsIGNhbGxiYWNrKSB7XG4gIHRoaXMucXVlcnlGb3JJZE9iamVjdChzcnNJZCwgY2FsbGJhY2spO1xufTtcblxuU3BhdGlhbFJlZmVyZW5jZVN5c3RlbURhby5wcm90b3R5cGUuZ2V0UHJvamVjdGlvbiA9IGZ1bmN0aW9uIChzcnMpIHtcbiAgaWYoc3JzLm9yZ2FuaXphdGlvbl9jb29yZHN5c19pZCA9PT0gNDMyNiAmJiAoc3JzLm9yZ2FuaXphdGlvbiA9PT0gJ0VQU0cnIHx8IHNycy5vcmdhbml6YXRpb24gPT09ICdlcHNnJykpIHtcbiAgICByZXR1cm4gcHJvajQoJ0VQU0c6NDMyNicpO1xuICB9IGVsc2UgaWYgKHNycy5kZWZpbml0aW9uICYmIHNycy5kZWZpbml0aW9uICE9PSAnJyAmJiBzcnMuZGVmaW5pdGlvbiAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHJldHVybiBwcm9qNChzcnMuZGVmaW5pdGlvbik7XG4gIH0gZWxzZSBpZiAoc3JzLm9yZ2FuaXphdGlvbiAmJiBzcnMub3JnYW5pemF0aW9uX2Nvb3Jkc3lzX2lkKSB7XG4gICAgcmV0dXJuIHByb2o0KHNycy5vcmdhbml6YXRpb24udG9VcHBlckNhc2UoKSArICc6JyArIHNycy5vcmdhbml6YXRpb25fY29vcmRzeXNfaWQpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB7fTtcbiAgfVxufTtcblxuLyoqXG4gKiBDcmVhdGVzIHRoZSByZXF1aXJlZCBFUFNHIFdHUzg0IFNwYXRpYWwgUmVmZXJlbmNlIFN5c3RlbSAoc3BlY1xuICogUmVxdWlyZW1lbnQgMTEpXG4gKlxuICogQHBhcmFtIHtjYWxsYmFja30gY2FsbGJhY2sgY2FsbGVkIHdpdGggYW4gZXJyb3IgaWYgb25lIG9jY3VycmVkIGFuZCB0aGUgd2dzODQgc3JzXG4gKi9cblNwYXRpYWxSZWZlcmVuY2VTeXN0ZW1EYW8ucHJvdG90eXBlLmNyZWF0ZVdnczg0ID0gZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAgdmFyIHNycyA9IG5ldyBTcGF0aWFsUmVmZXJlbmNlU3lzdGVtKCk7XG4gIHNycy5zcnNfbmFtZSA9ICdXR1MgODQgZ2VvZGV0aWMnO1xuICBzcnMuc3JzX2lkID0gNDMyNjtcbiAgc3JzLm9yZ2FuaXphdGlvbiA9ICdFUFNHJztcbiAgc3JzLm9yZ2FuaXphdGlvbl9jb29yZHN5c19pZCA9IDQzMjY7XG4gIHNycy5kZWZpbml0aW9uID0gJ0dFT0dDU1tcIldHUyA4NFwiLERBVFVNW1wiV0dTXzE5ODRcIixTUEhFUk9JRFtcIldHUyA4NFwiLDYzNzgxMzcsMjk4LjI1NzIyMzU2MyxBVVRIT1JJVFlbXCJFUFNHXCIsXCI3MDMwXCJdXSxBVVRIT1JJVFlbXCJFUFNHXCIsXCI2MzI2XCJdXSxQUklNRU1bXCJHcmVlbndpY2hcIiwwLEFVVEhPUklUWVtcIkVQU0dcIixcIjg5MDFcIl1dLFVOSVRbXCJkZWdyZWVcIiwwLjAxNzQ1MzI5MjUxOTk0MzI4LEFVVEhPUklUWVtcIkVQU0dcIixcIjkxMjJcIl1dLEFVVEhPUklUWVtcIkVQU0dcIixcIjQzMjZcIl1dJztcbiAgc3JzLmRlc2NyaXB0aW9uID0gJ2xvbmdpdHVkZS9sYXRpdHVkZSBjb29yZGluYXRlcyBpbiBkZWNpbWFsIGRlZ3JlZXMgb24gdGhlIFdHUyA4NCBzcGhlcm9pZCc7XG4gIC8vIFRPRE8gaW1wbGVtZW50IEdlb1BhY2thZ2UgMS4xXG4gIC8vIHNycy5kZWZpbml0aW9uXzEyXzE2MyA9ICdHRU9HQ1NbXCJXR1MgODRcIixEQVRVTVtcIldHU18xOTg0XCIsU1BIRVJPSURbXCJXR1MgODRcIiw2Mzc4MTM3LDI5OC4yNTcyMjM1NjMsQVVUSE9SSVRZW1wiRVBTR1wiLFwiNzAzMFwiXV0sQVVUSE9SSVRZW1wiRVBTR1wiLFwiNjMyNlwiXV0sUFJJTUVNW1wiR3JlZW53aWNoXCIsMCxBVVRIT1JJVFlbXCJFUFNHXCIsXCI4OTAxXCJdXSxVTklUW1wiZGVncmVlXCIsMC4wMTc0NTMyOTI1MTk5NDMyOCxBVVRIT1JJVFlbXCJFUFNHXCIsXCI5MTIyXCJdXSxBVVRIT1JJVFlbXCJFUFNHXCIsXCI0MzI2XCJdXSc7XG4gIHRoaXMuY3JlYXRlKHNycywgY2FsbGJhY2spO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgdGhlIHJlcXVpcmVkIFVuZGVmaW5lZCBDYXJ0ZXNpYW4gU3BhdGlhbCBSZWZlcmVuY2UgU3lzdGVtIChzcGVjXG4gKiBSZXF1aXJlbWVudCAxMSlcbiAqXG4gKiBAcGFyYW0ge2NhbGxiYWNrfSBjYWxsYmFjayBjYWxsZWQgd2l0aCBhbiBlcnJvciBpZiBvbmUgb2NjdXJyZWQgYW5kIHRoZSB1bmRlZmluZWQgY2FydGVzaWFuIHNyc1xuICovXG5TcGF0aWFsUmVmZXJlbmNlU3lzdGVtRGFvLnByb3RvdHlwZS5jcmVhdGVVbmRlZmluZWRDYXJ0ZXNpYW4gPSBmdW5jdGlvbihjYWxsYmFjaykge1xuICB2YXIgc3JzID0gbmV3IFNwYXRpYWxSZWZlcmVuY2VTeXN0ZW0oKTtcbiAgc3JzLnNyc19uYW1lID0gJ1VuZGVmaW5lZCBjYXJ0ZXNpYW4gU1JTJztcbiAgc3JzLnNyc19pZCA9IC0xO1xuICBzcnMub3JnYW5pemF0aW9uID0gJ05PTkUnO1xuICBzcnMub3JnYW5pemF0aW9uX2Nvb3Jkc3lzX2lkID0gLTE7XG4gIHNycy5kZWZpbml0aW9uID0gJ3VuZGVmaW5lZCc7XG4gIHNycy5kZXNjcmlwdGlvbiA9ICd1bmRlZmluZWQgY2FydGVzaWFuIGNvb3JkaW5hdGUgcmVmZXJlbmNlIHN5c3RlbSc7XG4gIC8vIFRPRE8gaW1wbGVtZW50IEdlb1BhY2thZ2UgMS4xXG4gIC8vIHNycy5kZWZpbml0aW9uXzEyXzE2MyA9ICd1bmRlZmluZWQnO1xuICB0aGlzLmNyZWF0ZShzcnMsIGNhbGxiYWNrKTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIHRoZSByZXF1aXJlZCBVbmRlZmluZWQgR2VvZ3JhcGhpYyBTcGF0aWFsIFJlZmVyZW5jZSBTeXN0ZW0gKHNwZWNcbiAqIFJlcXVpcmVtZW50IDExKVxuICpcbiAqIEBwYXJhbSB7Y2FsbGJhY2t9IGNhbGxiYWNrIGNhbGxlZCB3aXRoIGFuIGVycm9yIGlmIG9uZSBvY2N1cnJlZCBhbmQgdGhlIHVuZGVmaW5lZCBHZW9ncmFwaGljIHNyc1xuICovXG5TcGF0aWFsUmVmZXJlbmNlU3lzdGVtRGFvLnByb3RvdHlwZS5jcmVhdGVVbmRlZmluZWRHZW9ncmFwaGljID0gZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAgdmFyIHNycyA9IG5ldyBTcGF0aWFsUmVmZXJlbmNlU3lzdGVtKCk7XG4gIHNycy5zcnNfbmFtZSA9ICdVbmRlZmluZWQgZ2VvZ3JhcGhpYyBTUlMnO1xuICBzcnMuc3JzX2lkID0gMDtcbiAgc3JzLm9yZ2FuaXphdGlvbiA9ICdOT05FJztcbiAgc3JzLm9yZ2FuaXphdGlvbl9jb29yZHN5c19pZCA9IDA7XG4gIHNycy5kZWZpbml0aW9uID0gJ3VuZGVmaW5lZCc7XG4gIHNycy5kZXNjcmlwdGlvbiA9ICd1bmRlZmluZWQgZ2VvZ3JhcGhpYyBjb29yZGluYXRlIHJlZmVyZW5jZSBzeXN0ZW0nO1xuICAvLyBUT0RPIGltcGxlbWVudCBHZW9QYWNrYWdlIDEuMVxuICAvLyBzcnMuZGVmaW5pdGlvbl8xMl8xNjMgPSAndW5kZWZpbmVkJztcbiAgdGhpcy5jcmVhdGUoc3JzLCBjYWxsYmFjayk7XG59XG5cbi8qKlxuICogQ3JlYXRlcyB0aGUgV2ViIE1lcmNhdG9yIFNwYXRpYWwgUmVmZXJlbmNlIFN5c3RlbSBpZiBpdCBkb2VzIG5vdCBhbHJlYWR5XG4gKiBleGlzdFxuICpcbiAqIEBwYXJhbSB7Y2FsbGJhY2t9IGNhbGxiYWNrIGNhbGxlZCB3aXRoIGFuIGVycm9yIGlmIG9uZSBvY2N1cnJlZCBhbmQgdGhlIFdlYiBNZXJjYXRvciBzcnNcbiAqL1xuU3BhdGlhbFJlZmVyZW5jZVN5c3RlbURhby5wcm90b3R5cGUuY3JlYXRlV2ViTWVyY2F0b3IgPSBmdW5jdGlvbihjYWxsYmFjaykge1xuICB2YXIgc3JzID0gbmV3IFNwYXRpYWxSZWZlcmVuY2VTeXN0ZW0oKTtcbiAgc3JzLnNyc19uYW1lID0gJ1dHUyA4NCAvIFBzZXVkby1NZXJjYXRvcic7XG4gIHNycy5zcnNfaWQgPSAzODU3O1xuICBzcnMub3JnYW5pemF0aW9uID0gJ0VQU0cnO1xuICBzcnMub3JnYW5pemF0aW9uX2Nvb3Jkc3lzX2lkID0gMzg1NztcbiAgc3JzLmRlZmluaXRpb24gPSAnUFJPSkNTW1wiV0dTIDg0IC8gUHNldWRvLU1lcmNhdG9yXCIsR0VPR0NTW1wiV0dTIDg0XCIsREFUVU1bXCJXR1NfMTk4NFwiLFNQSEVST0lEW1wiV0dTIDg0XCIsNjM3ODEzNywyOTguMjU3MjIzNTYzLEFVVEhPUklUWVtcIkVQU0dcIixcIjcwMzBcIl1dLEFVVEhPUklUWVtcIkVQU0dcIixcIjYzMjZcIl1dLFBSSU1FTVtcIkdyZWVud2ljaFwiLDAsQVVUSE9SSVRZW1wiRVBTR1wiLFwiODkwMVwiXV0sVU5JVFtcImRlZ3JlZVwiLDAuMDE3NDUzMjkyNTE5OTQzMyxBVVRIT1JJVFlbXCJFUFNHXCIsXCI5MTIyXCJdXSxBVVRIT1JJVFlbXCJFUFNHXCIsXCI0MzI2XCJdXSxQUk9KRUNUSU9OW1wiTWVyY2F0b3JfMVNQXCJdLFBBUkFNRVRFUltcImNlbnRyYWxfbWVyaWRpYW5cIiwwXSxQQVJBTUVURVJbXCJzY2FsZV9mYWN0b3JcIiwxXSxQQVJBTUVURVJbXCJmYWxzZV9lYXN0aW5nXCIsMF0sUEFSQU1FVEVSW1wiZmFsc2Vfbm9ydGhpbmdcIiwwXSxVTklUW1wibWV0cmVcIiwxLEFVVEhPUklUWVtcIkVQU0dcIixcIjkwMDFcIl1dLEFYSVNbXCJYXCIsRUFTVF0sQVhJU1tcIllcIixOT1JUSF0sRVhURU5TSU9OW1wiUFJPSjRcIixcIitwcm9qPW1lcmMgK2E9NjM3ODEzNyArYj02Mzc4MTM3ICtsYXRfdHM9MC4wICtsb25fMD0wLjAgK3hfMD0wLjAgK3lfMD0wICtrPTEuMCArdW5pdHM9bSArbmFkZ3JpZHM9QG51bGwgK3drdGV4dCAgK25vX2RlZnNcIl0sQVVUSE9SSVRZW1wiRVBTR1wiLFwiMzg1N1wiXV0nO1xuICBzcnMuZGVzY3JpcHRpb24gPSAnU3BoZXJpY2FsIE1lcmNhdG9yIHByb2plY3Rpb24gY29vcmRpbmF0ZSBzeXN0ZW0nO1xuICAvLyBUT0RPIGltcGxlbWVudCBHZW9QYWNrYWdlIDEuMVxuICAvLyBzcnMuZGVmaW5pdGlvbl8xMl8xNjMgPSAnUFJPSkNTW1wiV0dTIDg0IC8gUHNldWRvLU1lcmNhdG9yXCIsR0VPR0NTW1wiV0dTIDg0XCIsREFUVU1bXCJXR1NfMTk4NFwiLFNQSEVST0lEW1wiV0dTIDg0XCIsNjM3ODEzNywyOTguMjU3MjIzNTYzLEFVVEhPUklUWVtcIkVQU0dcIixcIjcwMzBcIl1dLEFVVEhPUklUWVtcIkVQU0dcIixcIjYzMjZcIl1dLFBSSU1FTVtcIkdyZWVud2ljaFwiLDAsQVVUSE9SSVRZW1wiRVBTR1wiLFwiODkwMVwiXV0sVU5JVFtcImRlZ3JlZVwiLDAuMDE3NDUzMjkyNTE5OTQzMyxBVVRIT1JJVFlbXCJFUFNHXCIsXCI5MTIyXCJdXSxBVVRIT1JJVFlbXCJFUFNHXCIsXCI0MzI2XCJdXSxQUk9KRUNUSU9OW1wiTWVyY2F0b3JfMVNQXCJdLFBBUkFNRVRFUltcImNlbnRyYWxfbWVyaWRpYW5cIiwwXSxQQVJBTUVURVJbXCJzY2FsZV9mYWN0b3JcIiwxXSxQQVJBTUVURVJbXCJmYWxzZV9lYXN0aW5nXCIsMF0sUEFSQU1FVEVSW1wiZmFsc2Vfbm9ydGhpbmdcIiwwXSxVTklUW1wibWV0cmVcIiwxLEFVVEhPUklUWVtcIkVQU0dcIixcIjkwMDFcIl1dLEFYSVNbXCJYXCIsRUFTVF0sQVhJU1tcIllcIixOT1JUSF0sRVhURU5TSU9OW1wiUFJPSjRcIixcIitwcm9qPW1lcmMgK2E9NjM3ODEzNyArYj02Mzc4MTM3ICtsYXRfdHM9MC4wICtsb25fMD0wLjAgK3hfMD0wLjAgK3lfMD0wICtrPTEuMCArdW5pdHM9bSArbmFkZ3JpZHM9QG51bGwgK3drdGV4dCAgK25vX2RlZnNcIl0sQVVUSE9SSVRZW1wiRVBTR1wiLFwiMzg1N1wiXV0nO1xuICB0aGlzLmNyZWF0ZShzcnMsIGNhbGxiYWNrKTtcbn1cblxuLyoqXG4gKiAgRGVsZXRlIHRoZSBTcGF0aWFsIFJlZmVyZW5jZSBTeXN0ZW0sIGNhc2NhZGluZ1xuICpcbiAqICBAcGFyYW0ge1NwYXRpYWxSZWZlcmVuY2VTeXN0ZW19IHNyc1xuICogIEBwYXJhbSB7Y2FsbGJhY2t9IGNhbGxiYWNrIGNhbGxlZCB3aXRoIGFuIGVycm9yIGlmIG9uZSBvY2N1cnJlZCBhbmQgcm93cyBkZWxldGVkXG4gKi9cblNwYXRpYWxSZWZlcmVuY2VTeXN0ZW1EYW8ucHJvdG90eXBlLmRlbGV0ZUNhc2NhZGUgPSBmdW5jdGlvbiAoc3JzLCBjYWxsYmFjaykge1xuICBjYWxsYmFjayhuZXcgRXJyb3IoXCJub3QgaW1wbGVtZW50ZWRcIikpO1xufTtcblxuLyoqXG4gKiAgRGVsZXRlIHRoZSBTcGF0aWFsIFJlZmVyZW5jZSBTeXN0ZW0gd2hlcmUsIGNhc2NhZGluZ1xuICpcbiAqICBAcGFyYW0ge3N0cmluZ30gICAgIHdoZXJlIGNsYXVzZVxuICogIEBwYXJhbSB7c3RyaW5nfSB3aGVyZSBhcmdzXG4gKiAgQHBhcmFtIHtjYWxsYmFja30gY2FsbGJhY2sgY2FsbGVkIHdpdGggYW4gZXJyb3IgaWYgb25lIG9jY3VycmVkIGFuZCByb3dzIGRlbGV0ZWRcbiAqL1xuU3BhdGlhbFJlZmVyZW5jZVN5c3RlbURhby5wcm90b3R5cGUuZGVsZXRlQ2FzY2FkZVdoZXJlID0gZnVuY3Rpb24gKHdoZXJlLCB3aGVyZUFyZ3MsIGNhbGxiYWNrKSB7XG4gIGNhbGxiYWNrKG5ldyBFcnJvcihcIm5vdCBpbXBsZW1lbnRlZFwiKSk7XG59O1xuXG4vKipcbiAqICBEZWxldGUgdGhlIFNwYXRpYWwgUmVmZXJlbmNlIFN5c3RlbSBieSBpZCwgY2FzY2FkaW5nXG4gKlxuICogIEBwYXJhbSB7TnVtYmVyfSBpZFxuICogIEBwYXJhbSB7Y2FsbGJhY2t9IGNhbGxiYWNrIGNhbGxlZCB3aXRoIGFuIGVycm9yIGlmIG9uZSBvY2N1cnJlZCBhbmQgcm93cyBkZWxldGVkXG4gKi9cblNwYXRpYWxSZWZlcmVuY2VTeXN0ZW1EYW8ucHJvdG90eXBlLmRlbGV0ZUJ5SWRDYXNjYWRlID0gZnVuY3Rpb24gKGlkLCBjYWxsYmFjaykge1xuICBjYWxsYmFjayhuZXcgRXJyb3IoXCJub3QgaW1wbGVtZW50ZWRcIikpO1xufTtcblxuLyoqXG4gKiAgRGVsZXRlIHRoZSBTcGF0aWFsIFJlZmVyZW5jZSBTeXN0ZW0gYnkgaWRzLCBjYXNjYWRpbmdcbiAqXG4gKiAgQHBhcmFtIHtBcnJheX0gaWRzXG4gKiAgQHBhcmFtIHtjYWxsYmFja30gY2FsbGJhY2sgY2FsbGVkIHdpdGggYW4gZXJyb3IgaWYgb25lIG9jY3VycmVkIGFuZCByb3dzIGRlbGV0ZWRcbiAqL1xuU3BhdGlhbFJlZmVyZW5jZVN5c3RlbURhby5wcm90b3R5cGUuZGVsZXRlQnlJZHNDYXNjYWRlID0gZnVuY3Rpb24gKGlkLCBjYWxsYmFjaykge1xuICBjYWxsYmFjayhuZXcgRXJyb3IoXCJub3QgaW1wbGVtZW50ZWRcIikpO1xufTtcblxuLyoqXG4gKiAgR2V0IENvbnRlbnRzIHJlZmVyZW5jaW5nIHRoZSBTUlNcbiAqXG4gKiAgQHBhcmFtIHtTcGF0aWFsUmVmZXJlbmNlU3lzdGVtfSBzcnNcbiAqICBAcGFyYW0ge2NhbGxiYWNrfSBjYWxsYmFjayBjYWxsZWQgd2l0aCBhbiBlcnJvciBpZiBvbmUgb2NjdXJyZWQgYW5kIHRoZSB7Q29udGVudHN9XG4gKi9cblNwYXRpYWxSZWZlcmVuY2VTeXN0ZW1EYW8ucHJvdG90eXBlLmdldENvbnRlbnRzID0gZnVuY3Rpb24gKHNycywgY2FsbGJhY2spIHtcbiAgY2FsbGJhY2sobmV3IEVycm9yKFwibm90IGltcGxlbWVudGVkXCIpKTtcbn07XG5cbi8qKlxuICogIEdldCBHZW9tZXRyeSBDb2x1bW5zIHJlZmVyZW5jaW5nIHRoZSBTUlNcbiAqXG4gKiAgQHBhcmFtIHtTcGF0aWFsUmVmZXJlbmNlU3lzdGVtfSBzcnNcbiAqICBAcGFyYW0ge2NhbGxiYWNrfSBjYWxsYmFjayBjYWxsZWQgd2l0aCBhbiBlcnJvciBpZiBvbmUgb2NjdXJyZWQgYW5kIHRoZSB7bW9kdWxlOmRhby9nZW9tZXRyeUNvbHVtbnN+R2VvbWV0cnlDb2x1bW5zfVxuICovXG5TcGF0aWFsUmVmZXJlbmNlU3lzdGVtRGFvLnByb3RvdHlwZS5nZXRHZW9tZXRyeUNvbHVtbnMgPSBmdW5jdGlvbiAoc3JzLCBjYWxsYmFjaykge1xuICBjYWxsYmFjayhuZXcgRXJyb3IoXCJub3QgaW1wbGVtZW50ZWRcIikpO1xufTtcblxuLyoqXG4gKiAgR2V0IFRpbGUgTWF0cml4IFNldHMgcmVmZXJlbmNpbmcgdGhlIFNSU1xuICpcbiAqICBAcGFyYW0ge1NwYXRpYWxSZWZlcmVuY2VTeXN0ZW19IHNyc1xuICogIEBwYXJhbSB7Y2FsbGJhY2t9IGNhbGxiYWNrIGNhbGxlZCB3aXRoIGFuIGVycm9yIGlmIG9uZSBvY2N1cnJlZCBhbmQgdGhlIHtUaWxlTWF0cml4U2V0fVxuICovXG5TcGF0aWFsUmVmZXJlbmNlU3lzdGVtRGFvLnByb3RvdHlwZS5nZXRUaWxlTWF0cml4U2V0ID0gZnVuY3Rpb24gKHNycywgY2FsbGJhY2spIHtcbiAgY2FsbGJhY2sobmV3IEVycm9yKFwibm90IGltcGxlbWVudGVkXCIpKTtcbn07XG5cbi8qKlxuICogVGFibGUgTmFtZVxuICogQHR5cGUge1N0cmluZ31cbiAqL1xuU3BhdGlhbFJlZmVyZW5jZVN5c3RlbURhby5wcm90b3R5cGUuZ3BrZ1RhYmxlTmFtZSA9ICdncGtnX3NwYXRpYWxfcmVmX3N5cyc7XG5cbi8qKlxuICogc3JzTmFtZSBmaWVsZCBuYW1lXG4gKiBAdHlwZSB7U3RyaW5nfVxuICovXG5TcGF0aWFsUmVmZXJlbmNlU3lzdGVtRGFvLkNPTFVNTl9TUlNfTkFNRSA9IFwic3JzX25hbWVcIjtcblxuLyoqXG4gKiBzcnNJZCBmaWVsZCBuYW1lXG4gKiBAdHlwZSB7U3RyaW5nfVxuICovXG5TcGF0aWFsUmVmZXJlbmNlU3lzdGVtRGFvLkNPTFVNTl9TUlNfSUQgPSBcInNyc19pZFwiO1xuXG4vKipcbiAqIGlkIGZpZWxkIG5hbWUsIHNyc0lkXG4gKiBAdHlwZSB7U3RyaW5nfVxuICovXG5TcGF0aWFsUmVmZXJlbmNlU3lzdGVtRGFvLkNPTFVNTl9JRCA9IFNwYXRpYWxSZWZlcmVuY2VTeXN0ZW1EYW8uQ09MVU1OX1NSU19JRDtcblxuLyoqXG4gKiBvcmdhbml6YXRpb24gZmllbGQgbmFtZVxuICogQHR5cGUge1N0cmluZ31cbiAqL1xuU3BhdGlhbFJlZmVyZW5jZVN5c3RlbURhby5DT0xVTU5fT1JHQU5JWkFUSU9OID0gXCJvcmdhbml6YXRpb25cIjtcblxuLyoqXG4gKiBvcmdhbml6YXRpb25Db29yZHN5c0lkIGZpZWxkIG5hbWVcbiAqIEB0eXBlIHtTdHJpbmd9XG4gKi9cblNwYXRpYWxSZWZlcmVuY2VTeXN0ZW1EYW8uQ09MVU1OX09SR0FOSVpBVElPTl9DT09SRFNZU19JRCA9IFwib3JnYW5pemF0aW9uX2Nvb3Jkc3lzX2lkXCI7XG5cbi8qKlxuICogZGVmaW5pdGlvbiBmaWVsZCBuYW1lXG4gKiBAdHlwZSB7U3RyaW5nfVxuICovXG5TcGF0aWFsUmVmZXJlbmNlU3lzdGVtRGFvLkNPTFVNTl9ERUZJTklUSU9OID0gXCJkZWZpbml0aW9uXCI7XG5cbi8qKlxuICogZGVzY3JpcHRpb24gZmllbGQgbmFtZVxuICogQHR5cGUge1N0cmluZ31cbiAqL1xuU3BhdGlhbFJlZmVyZW5jZVN5c3RlbURhby5DT0xVTU5fREVTQ1JJUFRJT04gPSBcImRlc2NyaXB0aW9uXCI7XG5cblxuU3BhdGlhbFJlZmVyZW5jZVN5c3RlbURhby5wcm90b3R5cGUuaWRDb2x1bW5zID0gW1NwYXRpYWxSZWZlcmVuY2VTeXN0ZW1EYW8uQ09MVU1OX1NSU19JRF07XG5cbm1vZHVsZS5leHBvcnRzLlNwYXRpYWxSZWZlcmVuY2VTeXN0ZW1EYW8gPSBTcGF0aWFsUmVmZXJlbmNlU3lzdGVtRGFvO1xubW9kdWxlLmV4cG9ydHMuU3BhdGlhbFJlZmVyZW5jZVN5c3RlbSA9IFNwYXRpYWxSZWZlcmVuY2VTeXN0ZW07XG4iLCJcbnZhciBDb2x1bW5WYWx1ZXMgPSBmdW5jdGlvbigpIHtcbiAgdGhpcy52YWx1ZXMgPSB7fTtcbiAgdGhpcy5jb2x1bW5zID0gW107XG59XG5cbm1vZHVsZS5leHBvcnRzID0gQ29sdW1uVmFsdWVzO1xuXG5Db2x1bW5WYWx1ZXMucHJvdG90eXBlLmNvdW50ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gT2JqZWN0LmtleXModGhpcy52YWx1ZXMpLmxlbmd0aDtcbn07XG5cbkNvbHVtblZhbHVlcy5wcm90b3R5cGUuYWRkQ29sdW1uID0gZnVuY3Rpb24gKGNvbHVtbiwgdmFsdWUpIHtcbiAgdGhpcy5jb2x1bW5zLnB1c2goY29sdW1uKTtcbiAgdGhpcy52YWx1ZXNbY29sdW1uXSA9IHZhbHVlO1xufTtcblxuQ29sdW1uVmFsdWVzLnByb3RvdHlwZS5nZXRWYWx1ZSA9IGZ1bmN0aW9uIChjb2x1bW4pIHtcbiAgcmV0dXJuIHRoaXMudmFsdWVzW2NvbHVtbl07XG59O1xuIiwiLyoqXG4gKiBEYW8gbW9kdWxlLlxuICogQG1vZHVsZSBkYW8vZGFvXG4gKi9cblxudmFyIHNxbGl0ZVF1ZXJ5QnVpbGRlciA9IHJlcXVpcmUoJy4uL2RiL3NxbGl0ZVF1ZXJ5QnVpbGRlcicpXG4gICwgQ29sdW1uVmFsdWVzID0gcmVxdWlyZSgnLi9jb2x1bW5WYWx1ZXMnKVxuICAsIGFzeW5jID0gcmVxdWlyZSgnYXN5bmMnKTtcblxuLyoqIEBjbGFzcyBEYW8gKi9cbnZhciBEYW8gPSBmdW5jdGlvbihjb25uZWN0aW9uKSB7XG4gIHRoaXMuY29ubmVjdGlvbiA9IGNvbm5lY3Rpb247XG59XG5cbkRhby5wcm90b3R5cGUucG9wdWxhdGVPYmplY3RGcm9tUmVzdWx0ID0gZnVuY3Rpb24gKG9iamVjdCwgcmVzdWx0KSB7XG4gIGlmICghcmVzdWx0KSByZXR1cm47XG4gIGZvciAodmFyIGtleSBpbiByZXN1bHQpIHtcbiAgICBvYmplY3Rba2V5XSA9IHJlc3VsdFtrZXldO1xuICB9XG59O1xuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgdGFibGUgZXhpc3RzXG4gKiBAcGFyYW0gIHt2YWxpZGF0aW9uQ2FsbGJhY2t9IGNhbGxiYWNrIC0gQ2FsbGJhY2sgdG8gY2FsbCB3aXRoIHRoZSByZXN1bHRzIG9mIGlmIHRoZSB0YWJsZSBleGlzdHMgb3Igbm90XG4gKi9cbkRhby5wcm90b3R5cGUuaXNUYWJsZUV4aXN0cyA9IGZ1bmN0aW9uIChjYWxsYmFjaykge1xuICB0aGlzLmNvbm5lY3Rpb24uZ2V0KFwiU0VMRUNUIG5hbWUgRlJPTSBzcWxpdGVfbWFzdGVyIFdIRVJFIHR5cGU9J3RhYmxlJyBBTkQgbmFtZT0/XCIsIFt0aGlzLmdwa2dUYWJsZU5hbWVdLCBmdW5jdGlvbihlcnIsIHJlc3VsdHMpIHtcbiAgICBpZighcmVzdWx0cykge1xuICAgICAgcmV0dXJuIGNhbGxiYWNrKG5ldyBFcnJvcignVGFibGUgJyArIHRoaXMuZ3BrZ1RhYmxlTmFtZSArICcgZG9lcyBub3QgZXhpc3QnKSwgZmFsc2UpO1xuICAgIH1cbiAgICByZXR1cm4gY2FsbGJhY2soZXJyLCByZXN1bHRzKTtcbiAgfSk7XG59O1xuXG5EYW8ucHJvdG90eXBlLnF1ZXJ5Rm9ySWRPYmplY3QgPSBmdW5jdGlvbihpZCwgY2FsbGJhY2spIHtcbiAgdmFyIHdoZXJlU3RyaW5nID0gdGhpcy5idWlsZFBrV2hlcmVXaXRoVmFsdWUoaWQpO1xuICB2YXIgd2hlcmVBcmdzID0gdGhpcy5idWlsZFBrV2hlcmVBcmdzV2l0aFZhbHVlKGlkKTtcbiAgdmFyIHF1ZXJ5ID0gc3FsaXRlUXVlcnlCdWlsZGVyLmJ1aWxkUXVlcnkoZmFsc2UsIFwiJ1wiK3RoaXMuZ3BrZ1RhYmxlTmFtZStcIidcIiwgdW5kZWZpbmVkLCB3aGVyZVN0cmluZyk7XG5cbiAgdGhpcy5jb25uZWN0aW9uLmdldChxdWVyeSwgd2hlcmVBcmdzLCBmdW5jdGlvbihlcnIsIHJlc3VsdCkge1xuICAgIGlmIChlcnIpIHJldHVybiBjYWxsYmFjayhlcnIpO1xuICAgIGlmICghcmVzdWx0KSByZXR1cm4gY2FsbGJhY2soKTtcbiAgICB2YXIgb2JqZWN0ID0gdGhpcy5jcmVhdGVPYmplY3QocmVzdWx0KTtcbiAgICAvLyBUT09EIHNvbWV0aGluZyBpcyB3cm9uZyBoZXJlXG4gICAgdGhpcy5wb3B1bGF0ZU9iamVjdEZyb21SZXN1bHQob2JqZWN0LCByZXN1bHQpO1xuICAgIGNhbGxiYWNrKGVyciwgb2JqZWN0LCByZXN1bHQpO1xuICB9LmJpbmQodGhpcykpO1xufTtcblxuRGFvLnByb3RvdHlwZS5xdWVyeUZvclNhbWVJZCA9IGZ1bmN0aW9uIChvYmplY3QsIGNhbGxiYWNrKSB7XG4gIHZhciBpZEFycmF5ID0gdGhpcy5nZXRNdWx0aUlkKG9iamVjdCk7XG4gIHRoaXMucXVlcnlGb3JNdWx0aUlkT2JqZWN0KGlkQXJyYXksIGNhbGxiYWNrKTtcbn07XG5cbkRhby5wcm90b3R5cGUuZ2V0TXVsdGlJZCA9IGZ1bmN0aW9uIChvYmplY3QpIHtcbiAgdmFyIGlkVmFsdWVzID0gW107XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5pZENvbHVtbnMubGVuZ3RoOyBpKyspIHtcbiAgICBpZFZhbHVlcy5wdXNoKG9iamVjdFt0aGlzLmlkQ29sdW1uc1tpXV0pO1xuICB9XG4gIHJldHVybiBpZFZhbHVlcztcbn07XG5cbkRhby5wcm90b3R5cGUucXVlcnlGb3JNdWx0aUlkT2JqZWN0ID0gZnVuY3Rpb24gKGlkVmFsdWVzLCBjYWxsYmFjaykge1xuICB2YXIgd2hlcmVTdHJpbmcgPSB0aGlzLmJ1aWxkUGtXaGVyZVdpdGhWYWx1ZXMoaWRWYWx1ZXMpO1xuICB2YXIgd2hlcmVBcmdzID0gdGhpcy5idWlsZFBrV2hlcmVBcmdzV2l0aFZhbHVlcyhpZFZhbHVlcyk7XG5cbiAgdmFyIHF1ZXJ5ID0gc3FsaXRlUXVlcnlCdWlsZGVyLmJ1aWxkUXVlcnkoZmFsc2UsIFwiJ1wiK3RoaXMuZ3BrZ1RhYmxlTmFtZStcIidcIiwgdW5kZWZpbmVkLCB3aGVyZVN0cmluZyk7XG5cbiAgdGhpcy5jb25uZWN0aW9uLmdldChxdWVyeSwgd2hlcmVBcmdzLCBmdW5jdGlvbihlcnIsIHJlc3VsdCkge1xuICAgIGlmIChlcnIpIHJldHVybiBjYWxsYmFjayhlcnIpO1xuICAgIGlmICghcmVzdWx0KSByZXR1cm4gY2FsbGJhY2soKTtcbiAgICB2YXIgb2JqZWN0ID0gdGhpcy5jcmVhdGVPYmplY3QocmVzdWx0KTtcbiAgICAvLyBUT09EIHNvbWV0aGluZyBpcyB3cm9uZyBoZXJlXG4gICAgdGhpcy5wb3B1bGF0ZU9iamVjdEZyb21SZXN1bHQob2JqZWN0LCByZXN1bHQpO1xuICAgIGNhbGxiYWNrKGVyciwgb2JqZWN0LCByZXN1bHQpO1xuICB9LmJpbmQodGhpcykpO1xufTtcblxuLyoqXG4gKiBRdWVyaWVzIGZvciBhbGwgbWF0Y2hlcyBhbmQgcmV0dXJucyB0aGVtIGluIHRoZSBjYWxsYmFjay4gIEJlIGF3YXJlIHRoaXMgcHVsbHMgYWxsIHJlc3VsdHMgaW50byBtZW1vcnlcbiAqIEBwYXJhbSAge0Z1bmN0aW9ufSBjYWxsYmFjayBjYWxsZWQgd2l0aCBhbiBlcnJvciBpZiBvbmUgb2NjdXJyZWQgYW5kIHRoZSBhcnJheSBvZiByZXN1bHRzXG4gKi9cbkRhby5wcm90b3R5cGUucXVlcnlGb3JBbGwgPSBmdW5jdGlvbiAoY2FsbGJhY2spIHtcbiAgdmFyIHF1ZXJ5ID0gc3FsaXRlUXVlcnlCdWlsZGVyLmJ1aWxkUXVlcnkoZmFsc2UsIFwiJ1wiK3RoaXMuZ3BrZ1RhYmxlTmFtZStcIidcIik7XG4gIHRoaXMuY29ubmVjdGlvbi5hbGwocXVlcnksIGNhbGxiYWNrKTtcbn07XG5cbkRhby5wcm90b3R5cGUucXVlcnlGb3JFYWNoID0gZnVuY3Rpb24gKHJvd0NhbGxiYWNrLCBjYWxsYmFjaykge1xuICB2YXIgcXVlcnkgPSBzcWxpdGVRdWVyeUJ1aWxkZXIuYnVpbGRRdWVyeShmYWxzZSwgXCInXCIrdGhpcy5ncGtnVGFibGVOYW1lK1wiJ1wiKTtcbiAgdGhpcy5jb25uZWN0aW9uLmVhY2gocXVlcnksIHJvd0NhbGxiYWNrLCBjYWxsYmFjayk7XG59O1xuXG5EYW8ucHJvdG90eXBlLnF1ZXJ5Rm9yRmllbGRWYWx1ZXMgPSBmdW5jdGlvbiAoZmllbGRWYWx1ZXMsIHJvd0NhbGxiYWNrLCBjYWxsYmFjaykge1xuICB2YXIgd2hlcmVTdHJpbmcgPSB0aGlzLmJ1aWxkV2hlcmVXaXRoRmllbGRzKGZpZWxkVmFsdWVzKTtcbiAgdmFyIHdoZXJlQXJncyA9IHRoaXMuYnVpbGRXaGVyZUFyZ3NXaXRoVmFsdWVzKGZpZWxkVmFsdWVzKTtcbiAgdmFyIHF1ZXJ5ID0gc3FsaXRlUXVlcnlCdWlsZGVyLmJ1aWxkUXVlcnkoZmFsc2UsIFwiJ1wiK3RoaXMuZ3BrZ1RhYmxlTmFtZStcIidcIiwgdW5kZWZpbmVkLCB3aGVyZVN0cmluZyk7XG4gIHRoaXMuY29ubmVjdGlvbi5lYWNoKHF1ZXJ5LCB3aGVyZUFyZ3MsIHJvd0NhbGxiYWNrLCBjYWxsYmFjayk7XG59O1xuXG5EYW8ucHJvdG90eXBlLnF1ZXJ5Sm9pbldoZXJlV2l0aEFyZ3MgPSBmdW5jdGlvbihqb2luLCB3aGVyZSwgd2hlcmVBcmdzLCBjb2x1bW5zLCByb3dDYWxsYmFjaywgZG9uZUNhbGxiYWNrKSB7XG4gIHZhciBxdWVyeSA9IHNxbGl0ZVF1ZXJ5QnVpbGRlci5idWlsZFF1ZXJ5KGZhbHNlLCBcIidcIit0aGlzLmdwa2dUYWJsZU5hbWUrXCInXCIsIGNvbHVtbnMsIHdoZXJlLCBqb2luKTtcbiAgdGhpcy5jb25uZWN0aW9uLmVhY2gocXVlcnksIHdoZXJlQXJncywgcm93Q2FsbGJhY2ssIGRvbmVDYWxsYmFjayk7XG59XG5cbkRhby5wcm90b3R5cGUucXVlcnlXaGVyZVdpdGhBcmdzRGlzdGluY3QgPSBmdW5jdGlvbih3aGVyZSwgd2hlcmVBcmdzLCByb3dDYWxsYmFjaywgZG9uZUNhbGxiYWNrKSB7XG4gIHZhciBxdWVyeSA9IHNxbGl0ZVF1ZXJ5QnVpbGRlci5idWlsZFF1ZXJ5KHRydWUsIFwiJ1wiK3RoaXMuZ3BrZ1RhYmxlTmFtZStcIidcIiwgdW5kZWZpbmVkLCB3aGVyZSk7XG4gIHRoaXMuY29ubmVjdGlvbi5lYWNoKHF1ZXJ5LCB3aGVyZUFyZ3MsIHJvd0NhbGxiYWNrLCBkb25lQ2FsbGJhY2spO1xufVxuXG5EYW8ucHJvdG90eXBlLnF1ZXJ5V2hlcmVXaXRoQXJncyA9IGZ1bmN0aW9uKHdoZXJlLCB3aGVyZUFyZ3MsIHJvd0NhbGxiYWNrLCBkb25lQ2FsbGJhY2spIHtcbiAgdGhpcy5xdWVyeVdoZXJlKHdoZXJlLCB3aGVyZUFyZ3MsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgcm93Q2FsbGJhY2ssIGRvbmVDYWxsYmFjayk7XG59XG5cbkRhby5wcm90b3R5cGUucXVlcnlXaGVyZSA9IGZ1bmN0aW9uICh3aGVyZSwgd2hlcmVBcmdzLCBncm91cEJ5LCBoYXZpbmcsIG9yZGVyQnksIGxpbWl0LCByb3dDYWxsYmFjaywgZG9uZUNhbGxiYWNrKSB7XG4gIHZhciBxdWVyeSA9IHNxbGl0ZVF1ZXJ5QnVpbGRlci5idWlsZFF1ZXJ5KGZhbHNlLCBcIidcIit0aGlzLmdwa2dUYWJsZU5hbWUrXCInXCIsIHVuZGVmaW5lZCwgd2hlcmUsIHVuZGVmaW5lZCwgZ3JvdXBCeSwgaGF2aW5nLCBvcmRlckJ5LCBsaW1pdCk7XG4gIHRoaXMuY29ubmVjdGlvbi5lYWNoKHF1ZXJ5LCB3aGVyZUFyZ3MsIHJvd0NhbGxiYWNrLCBkb25lQ2FsbGJhY2spO1xufTtcblxuRGFvLnByb3RvdHlwZS5idWlsZFBrV2hlcmVXaXRoVmFsdWUgPSBmdW5jdGlvbihpZFZhbHVlKSB7XG4gIHJldHVybiB0aGlzLmJ1aWxkV2hlcmVXaXRoRmllbGRBbmRWYWx1ZSh0aGlzLmlkQ29sdW1ucywgaWRWYWx1ZSk7XG59O1xuXG5EYW8ucHJvdG90eXBlLmJ1aWxkUGtXaGVyZUFyZ3NXaXRoVmFsdWUgPSBmdW5jdGlvbiAoaWRWYWx1ZSkge1xuICByZXR1cm4gdGhpcy5idWlsZFdoZXJlQXJnc1dpdGhWYWx1ZShpZFZhbHVlKTtcbn07XG5cbkRhby5wcm90b3R5cGUuYnVpbGRQa1doZXJlV2l0aFZhbHVlcyA9IGZ1bmN0aW9uIChpZFZhbHVlc0FycmF5KSB7XG4gIHZhciBpZENvbHVtblZhbHVlcyA9IG5ldyBDb2x1bW5WYWx1ZXMoKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBpZFZhbHVlc0FycmF5Lmxlbmd0aDsgaSsrKSB7XG4gICAgaWRDb2x1bW5WYWx1ZXMuYWRkQ29sdW1uKHRoaXMuaWRDb2x1bW5zW2ldLCBpZFZhbHVlc0FycmF5W2ldKTtcbiAgfVxuICByZXR1cm4gdGhpcy5idWlsZFdoZXJlV2l0aEZpZWxkcyhpZENvbHVtblZhbHVlcyk7XG59O1xuXG5EYW8ucHJvdG90eXBlLmJ1aWxkUGtXaGVyZUFyZ3NXaXRoVmFsdWVzID0gZnVuY3Rpb24gKGlkVmFsdWVzQXJyYXkpIHtcbiAgdmFyIHZhbHVlcyA9IFtdO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGlkVmFsdWVzQXJyYXkubGVuZ3RoOyBpKyspIHtcbiAgICB2YWx1ZXMgPSB2YWx1ZXMuY29uY2F0KHRoaXMuYnVpbGRXaGVyZUFyZ3NXaXRoVmFsdWUoaWRWYWx1ZXNBcnJheVtpXSkpO1xuICB9XG4gIHJldHVybiB2YWx1ZXM7XG59O1xuXG5EYW8ucHJvdG90eXBlLmJ1aWxkV2hlcmVXaXRoRmllbGRzID0gZnVuY3Rpb24gKGZpZWxkcykge1xuICByZXR1cm4gdGhpcy5idWlsZFdoZXJlV2l0aEZpZWxkc0FuZE9wZXJhdGlvbihmaWVsZHMsICdhbmQnKTtcbn07XG5cbkRhby5wcm90b3R5cGUuYnVpbGRXaGVyZVdpdGhGaWVsZHNBbmRPcGVyYXRpb24gPSBmdW5jdGlvbiAoZmllbGRzLCBvcGVyYXRpb24pIHtcbiAgdmFyIHdoZXJlU3RyaW5nID0gJyc7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBmaWVsZHMuY29sdW1ucy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBjb2x1bW4gPSBmaWVsZHMuY29sdW1uc1tpXTtcbiAgICBpZiAoaSkge1xuICAgICAgd2hlcmVTdHJpbmcgKz0gJyAnICsgb3BlcmF0aW9uICsgJyAnO1xuICAgIH1cbiAgICB3aGVyZVN0cmluZyArPSB0aGlzLmJ1aWxkV2hlcmVXaXRoRmllbGRBbmRWYWx1ZShjb2x1bW4sIGZpZWxkcy5nZXRWYWx1ZShjb2x1bW4pKTtcbiAgfVxuICByZXR1cm4gd2hlcmVTdHJpbmc7XG59O1xuXG5EYW8ucHJvdG90eXBlLmJ1aWxkV2hlcmVBcmdzV2l0aFZhbHVlID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gIHZhciBhcmdzID0gW107XG4gIGlmKHZhbHVlICE9PSB1bmRlZmluZWQgfHwgdmFsdWUgIT09IG51bGwpIHtcbiAgICBhcmdzLnB1c2godmFsdWUpO1xuICB9XG4gIHJldHVybiBhcmdzO1xufTtcblxuRGFvLnByb3RvdHlwZS5idWlsZFdoZXJlQXJnc1dpdGhWYWx1ZUFycmF5ID0gZnVuY3Rpb24gKHZhbHVlcykge1xuICB2YXIgYXJncyA9IFtdO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHZhbHVlcy5sZW5ndGg7IGkrKykge1xuICAgIHZhciB2YWx1ZSA9IHZhbHVlc1tpXTtcbiAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCAmJiB2YWx1ZSAhPT0gbnVsbCkge1xuICAgICAgYXJncy5wdXNoKHZhbHVlKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGFyZ3MuY291bnQgPyBudWxsIDogYXJncztcbn07XG5cbkRhby5wcm90b3R5cGUuYnVpbGRXaGVyZUFyZ3NXaXRoVmFsdWVzID0gZnVuY3Rpb24gKHZhbHVlcykge1xuICB2YXIgYXJncyA9IFtdO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHZhbHVlcy5jb2x1bW5zLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGNvbHVtbiA9IHZhbHVlcy5jb2x1bW5zW2ldO1xuICAgIHZhciB2YWx1ZSA9IHZhbHVlcy5nZXRWYWx1ZShjb2x1bW4pO1xuICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHZhbHVlICE9PSBudWxsKSB7XG4gICAgICBhcmdzLnB1c2godmFsdWUpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gYXJncy5jb3VudCA/IG51bGwgOiBhcmdzO1xufTtcblxuRGFvLnByb3RvdHlwZS5idWlsZFdoZXJlV2l0aEZpZWxkQW5kVmFsdWUgPSBmdW5jdGlvbiAoZmllbGQsIHZhbHVlKSB7XG4gIHJldHVybiB0aGlzLmJ1aWxkV2hlcmVXaXRoRmllbGRBbmRWYWx1ZUFuZE9wZXJhdGlvbihmaWVsZCwgdmFsdWUsICc9Jyk7XG59O1xuXG5EYW8ucHJvdG90eXBlLmJ1aWxkV2hlcmVXaXRoRmllbGRBbmRWYWx1ZUFuZE9wZXJhdGlvbiA9IGZ1bmN0aW9uIChmaWVsZCwgdmFsdWUsIG9wZXJhdGlvbikge1xuICB2YXIgd2hlcmVTdHJpbmcgPSAnJyArIGZpZWxkICsgJyAnO1xuICBpZih2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsKXtcbiAgICB3aGVyZVN0cmluZyArPSBcImlzIG51bGxcIjtcbiAgfSBlbHNlIHtcbiAgICB3aGVyZVN0cmluZyArPSBvcGVyYXRpb24gKyAnID8nO1xuICB9XG4gIHJldHVybiB3aGVyZVN0cmluZztcbn07XG5cbkRhby5wcm90b3R5cGUucXVlcnlGb3JFcVdpdGhGaWVsZEFuZFZhbHVlID0gZnVuY3Rpb24gKGZpZWxkLCB2YWx1ZSwgY2FsbGJhY2sxLCBjYWxsYmFjazIpIHtcbiAgdGhpcy5xdWVyeUZvckVxV2l0aEZpZWxkKGZpZWxkLCB2YWx1ZSwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgY2FsbGJhY2sxLCBjYWxsYmFjazIpO1xufTtcblxuRGFvLnByb3RvdHlwZS5xdWVyeUZvckVxV2l0aEZpZWxkID0gZnVuY3Rpb24oZmllbGQsIHZhbHVlLCBncm91cEJ5LCBoYXZpbmcsIG9yZGVyQnksIGNhbGxiYWNrMSwgY2FsbGJhY2syKSB7XG4gIHZhciB3aGVyZVN0cmluZyA9IHRoaXMuYnVpbGRXaGVyZVdpdGhGaWVsZEFuZFZhbHVlKGZpZWxkLCB2YWx1ZSk7XG4gIHZhciB3aGVyZUFyZ3MgPSB0aGlzLmJ1aWxkV2hlcmVBcmdzV2l0aFZhbHVlKHZhbHVlKTtcbiAgdmFyIHF1ZXJ5ID0gc3FsaXRlUXVlcnlCdWlsZGVyLmJ1aWxkUXVlcnkoZmFsc2UsIFwiJ1wiK3RoaXMuZ3BrZ1RhYmxlTmFtZStcIidcIiwgdW5kZWZpbmVkLCB3aGVyZVN0cmluZyk7XG4gIGlmIChjYWxsYmFjazIpIHtcbiAgICB0aGlzLmNvbm5lY3Rpb24uZWFjaChxdWVyeSwgd2hlcmVBcmdzLCBjYWxsYmFjazEsIGNhbGxiYWNrMik7XG4gIH0gZWxzZSB7XG4gICAgdGhpcy5jb25uZWN0aW9uLmFsbChxdWVyeSwgd2hlcmVBcmdzLCBjYWxsYmFjazEpO1xuICB9XG59O1xuXG5EYW8ucHJvdG90eXBlLmNvdW50QnlFcVdpdGhGaWVsZEFuZFZhbHVlID0gZnVuY3Rpb24oZmllbGQsIHZhbHVlLCBjYWxsYmFjaykge1xuICB2YXIgd2hlcmVTdHJpbmcgPSB0aGlzLmJ1aWxkV2hlcmVXaXRoRmllbGRBbmRWYWx1ZShmaWVsZCwgdmFsdWUpO1xuICB2YXIgd2hlcmVBcmdzID0gdGhpcy5idWlsZFdoZXJlQXJnc1dpdGhWYWx1ZSh2YWx1ZSk7XG4gIHZhciBxdWVyeSA9IHNxbGl0ZVF1ZXJ5QnVpbGRlci5idWlsZENvdW50KFwiJ1wiK3RoaXMuZ3BrZ1RhYmxlTmFtZStcIidcIiwgd2hlcmVTdHJpbmcpO1xuXG4gIHRoaXMuY29ubmVjdGlvbi5nZXQocXVlcnksIHdoZXJlQXJncywgZnVuY3Rpb24oZXJyLCByZXN1bHQpIHtcbiAgICBpZiAoZXJyKSByZXR1cm4gY2FsbGJhY2soZXJyKTtcbiAgICBpZiAoIXJlc3VsdCkgcmV0dXJuIGNhbGxiYWNrKCk7XG4gICAgY2FsbGJhY2soZXJyLCByZXN1bHQuY291bnQpO1xuICB9LmJpbmQodGhpcykpO1xufTtcblxuRGFvLnByb3RvdHlwZS5nZXRJZCA9IGZ1bmN0aW9uIChvYmplY3QpIHtcbiAgcmV0dXJuIHRoaXMuZ2V0VmFsdWVGcm9tT2JqZWN0V2l0aENvbHVtbk5hbWUob2JqZWN0LCB0aGlzLmlkQ29sdW1uc1swXSk7XG59O1xuXG5EYW8ucHJvdG90eXBlLmdldFZhbHVlRnJvbU9iamVjdFdpdGhDb2x1bW5OYW1lID0gZnVuY3Rpb24gKG9iamVjdCwgY29sdW1uKSB7XG4gIHJldHVybiBvYmplY3RbY29sdW1uXTtcbn07XG5cbkRhby5wcm90b3R5cGUuZ2V0VmFsdWUgPSBmdW5jdGlvbihjb2x1bW4pIHtcbiAgcmV0dXJuIHRoaXNbY29sdW1uXTtcbn1cblxuRGFvLnByb3RvdHlwZS5taW5PZkNvbHVtbiA9IGZ1bmN0aW9uIChjb2x1bW4sIHdoZXJlLCB3aGVyZUFyZ3MsIGNhbGxiYWNrKSB7XG4gIHRoaXMuY29ubmVjdGlvbi5taW5PZkNvbHVtbihcIidcIit0aGlzLmdwa2dUYWJsZU5hbWUrXCInXCIsIGNvbHVtbiwgd2hlcmUsIHdoZXJlQXJncywgY2FsbGJhY2spO1xufTtcblxuRGFvLnByb3RvdHlwZS5tYXhPZkNvbHVtbiA9IGZ1bmN0aW9uIChjb2x1bW4sIHdoZXJlLCB3aGVyZUFyZ3MsIGNhbGxiYWNrKSB7XG4gIHRoaXMuY29ubmVjdGlvbi5tYXhPZkNvbHVtbihcIidcIit0aGlzLmdwa2dUYWJsZU5hbWUrXCInXCIsIGNvbHVtbiwgd2hlcmUsIHdoZXJlQXJncywgY2FsbGJhY2spO1xufTtcblxuRGFvLnByb3RvdHlwZS5kZWxldGUgPSBmdW5jdGlvbihvYmplY3QsIGNhbGxiYWNrKSB7XG4gIGlmIChvYmplY3QuZ2V0SWQpIHtcbiAgICByZXR1cm4gdGhpcy5kZWxldGVCeUlkKG9iamVjdC5nZXRJZCgpLCBjYWxsYmFjayk7XG4gIH1cbiAgdGhpcy5kZWxldGVCeU11bHRpSWQodGhpcy5nZXRNdWx0aUlkKG9iamVjdCksIGNhbGxiYWNrKTtcbn07XG5cbkRhby5wcm90b3R5cGUuZGVsZXRlQnlJZCA9IGZ1bmN0aW9uKGlkVmFsdWUsIGNhbGxiYWNrKSB7XG4gIHZhciB3aGVyZSA9IHRoaXMuYnVpbGRQa1doZXJlV2l0aFZhbHVlKGlkVmFsdWUpO1xuICB2YXIgd2hlcmVBcmdzID0gdGhpcy5idWlsZFBrV2hlcmVBcmdzV2l0aFZhbHVlKGlkVmFsdWUpO1xuXG4gIHRoaXMuY29ubmVjdGlvbi5kZWxldGUoXCInXCIrdGhpcy5ncGtnVGFibGVOYW1lK1wiJ1wiLCB3aGVyZSwgd2hlcmVBcmdzLCBjYWxsYmFjayk7XG59O1xuXG5EYW8ucHJvdG90eXBlLmRlbGV0ZUJ5TXVsdGlJZCA9IGZ1bmN0aW9uKGlkVmFsdWVzLCBjYWxsYmFjaykge1xuICB2YXIgd2hlcmUgPSB0aGlzLmJ1aWxkUGtXaGVyZVdpdGhWYWx1ZXMoaWRWYWx1ZXMpO1xuICB2YXIgd2hlcmVBcmdzID0gdGhpcy5idWlsZFBrV2hlcmVBcmdzV2l0aFZhbHVlcyhpZFZhbHVlcyk7XG5cbiAgdGhpcy5jb25uZWN0aW9uLmRlbGV0ZShcIidcIit0aGlzLmdwa2dUYWJsZU5hbWUrXCInXCIsIHdoZXJlLCB3aGVyZUFyZ3MsIGNhbGxiYWNrKTtcbn07XG5cbkRhby5wcm90b3R5cGUuZGVsZXRlV2hlcmUgPSBmdW5jdGlvbih3aGVyZSwgd2hlcmVBcmdzLCBjYWxsYmFjaykge1xuICB0aGlzLmNvbm5lY3Rpb24uZGVsZXRlKFwiJ1wiK3RoaXMuZ3BrZ1RhYmxlTmFtZStcIidcIiwgd2hlcmUsIHdoZXJlQXJncywgY2FsbGJhY2spO1xufTtcblxuRGFvLnByb3RvdHlwZS5kZWxldGVBbGwgPSBmdW5jdGlvbihjYWxsYmFjaykge1xuICB0aGlzLmNvbm5lY3Rpb24uZGVsZXRlKFwiJ1wiK3RoaXMuZ3BrZ1RhYmxlTmFtZStcIidcIiwgbnVsbCwgbnVsbCwgY2FsbGJhY2spO1xufTtcblxuRGFvLnByb3RvdHlwZS5jcmVhdGUgPSBmdW5jdGlvbihvYmplY3QsIGNhbGxiYWNrKSB7XG4gIHZhciBzcWwgPSBzcWxpdGVRdWVyeUJ1aWxkZXIuYnVpbGRJbnNlcnQoXCInXCIrdGhpcy5ncGtnVGFibGVOYW1lK1wiJ1wiLCBvYmplY3QpO1xuICB2YXIgaW5zZXJ0T2JqZWN0ID0ge307XG4gIGlmIChvYmplY3QuZ2V0Q29sdW1uTmFtZXMpIHtcbiAgICB2YXIgY29sdW1uTmFtZXMgPSBvYmplY3QuZ2V0Q29sdW1uTmFtZXMoKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvbHVtbk5hbWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpbnNlcnRPYmplY3RbJyQnK2NvbHVtbk5hbWVzW2ldLnJlcGxhY2UoJ1xcLicsICdfJyldID0gb2JqZWN0LnRvRGF0YWJhc2VWYWx1ZShjb2x1bW5OYW1lc1tpXSk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGZvciAodmFyIGtleSBpbiBvYmplY3QpIHtcbiAgICAgIGlmIChvYmplY3QuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICBpZiAob2JqZWN0LnRvRGF0YWJhc2VWYWx1ZSkge1xuICAgICAgICAgIGluc2VydE9iamVjdFsnJCcgKyBrZXkucmVwbGFjZSgnXFwuJywgJ18nKV0gPSBvYmplY3QudG9EYXRhYmFzZVZhbHVlKGtleSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaW5zZXJ0T2JqZWN0WyckJyArIGtleS5yZXBsYWNlKCdcXC4nLCAnXycpXSA9IG9iamVjdFtrZXldO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHRoaXMuY29ubmVjdGlvbi5pbnNlcnQoc3FsLCBpbnNlcnRPYmplY3QsIGNhbGxiYWNrKTtcbn07XG5cbkRhby5wcm90b3R5cGUudXBkYXRlV2l0aFZhbHVlcyA9IGZ1bmN0aW9uICh2YWx1ZXMsIHdoZXJlLCB3aGVyZUFyZ3MsIGNhbGxiYWNrKSB7XG4gIHZhciB1cGRhdGUgPSBzcWxpdGVRdWVyeUJ1aWxkZXIuYnVpbGRVcGRhdGUoXCInXCIrdGhpcy5ncGtnVGFibGVOYW1lK1wiJ1wiLCB2YWx1ZXMsIHdoZXJlLCB3aGVyZUFyZ3MpO1xuICB0aGlzLmNvbm5lY3Rpb24ucnVuKHVwZGF0ZS5zcWwsIHVwZGF0ZS5hcmdzLCBjYWxsYmFjayk7XG59O1xuXG5EYW8ucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uKG9iamVjdCwgY2FsbGJhY2spIHtcbiAgdmFyIHVwZGF0ZVZhbHVlcyA9IHt9O1xuICBpZiAob2JqZWN0LmdldENvbHVtbk5hbWVzKSB7XG4gICAgdmFyIGNvbHVtbk5hbWVzID0gb2JqZWN0LmdldENvbHVtbk5hbWVzKCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb2x1bW5OYW1lcy5sZW5ndGg7IGkrKykge1xuICAgICAgdXBkYXRlVmFsdWVzWyckJytjb2x1bW5OYW1lc1tpXS5yZXBsYWNlKCdcXC4nLCAnXycpXSA9IG9iamVjdC50b0RhdGFiYXNlVmFsdWUoY29sdW1uTmFtZXNbaV0pO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBmb3IgKHZhciBrZXkgaW4gb2JqZWN0KSB7XG4gICAgICBpZiAob2JqZWN0Lmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgaWYgKG9iamVjdC50b0RhdGFiYXNlVmFsdWUpIHtcbiAgICAgICAgICB1cGRhdGVWYWx1ZXNbJyQnICsga2V5LnJlcGxhY2UoJ1xcLicsICdfJyldID0gb2JqZWN0LnRvRGF0YWJhc2VWYWx1ZShrZXkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHVwZGF0ZVZhbHVlc1snJCcgKyBrZXkucmVwbGFjZSgnXFwuJywgJ18nKV0gPSBvYmplY3Rba2V5XTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHZhciBtdWx0aUlkID0gdGhpcy5nZXRNdWx0aUlkKG9iamVjdCk7XG4gIHZhciB3aGVyZSA9ICcgd2hlcmUgJztcbiAgdmFyIGlkQ29sdW1uVmFsdWVzID0gbmV3IENvbHVtblZhbHVlcygpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IG11bHRpSWQubGVuZ3RoOyBpKyspIHtcbiAgICB3aGVyZSArPSAnXCInICsgdGhpcy5pZENvbHVtbnNbaV0gKyAnXCIgPSAkJyArIHRoaXMuaWRDb2x1bW5zW2ldLnJlcGxhY2UoJ1xcLicsICdfJykgKycnO1xuICAgIHVwZGF0ZVZhbHVlc1snJCcgKyB0aGlzLmlkQ29sdW1uc1tpXS5yZXBsYWNlKCdcXC4nLCAnXycpICsnJ10gPSBtdWx0aUlkW2ldO1xuICB9XG4gIHZhciB3aGVyZUFyZ3MgPSB0aGlzLmJ1aWxkUGtXaGVyZUFyZ3NXaXRoVmFsdWVzKG11bHRpSWQpO1xuICB2YXIgdXBkYXRlID0gc3FsaXRlUXVlcnlCdWlsZGVyLmJ1aWxkT2JqZWN0VXBkYXRlKFwiJ1wiK3RoaXMuZ3BrZ1RhYmxlTmFtZStcIidcIiwgb2JqZWN0KTtcbiAgdXBkYXRlLnNxbCArPSB3aGVyZTtcbiAgdGhpcy5jb25uZWN0aW9uLnJ1bih1cGRhdGUsIHVwZGF0ZVZhbHVlcywgY2FsbGJhY2spO1xufTtcblxuRGFvLnByb3RvdHlwZS5jcmVhdGVPclVwZGF0ZSA9IGZ1bmN0aW9uKG9iamVjdCwgY2FsbGJhY2spIHtcbiAgdGhpcy5xdWVyeUZvclNhbWVJZChvYmplY3QsIGZ1bmN0aW9uKGVyciwgZXhpc3RpbmcpIHtcbiAgICBpZiAoIWV4aXN0aW5nKSB7XG4gICAgICB0aGlzLmNyZWF0ZShvYmplY3QsIGNhbGxiYWNrKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy51cGRhdGUob2JqZWN0LCBjYWxsYmFjayk7XG4gICAgfVxuICB9LmJpbmQodGhpcykpO1xufTtcblxuRGFvLnByb3RvdHlwZS5kcm9wVGFibGUgPSBmdW5jdGlvbihjYWxsYmFjaykge1xuICB0aGlzLmNvbm5lY3Rpb24uZHJvcFRhYmxlKFwiJ1wiK3RoaXMuZ3BrZ1RhYmxlTmFtZStcIidcIiwgY2FsbGJhY2spO1xufTtcblxuLyoqXG4gKiBUaGUgRGFvXG4gKiBAdHlwZSB7RGFvfVxuICovXG5tb2R1bGUuZXhwb3J0cyA9IERhbztcblxuLyoqXG4gKiBWYWxpZGF0aW9uIGNhbGxiYWNrIGlzIHBhc3NlZCBhbiBlcnJvciBpZiB0aGUgdmFsaWRhdGlvbiBmYWlsZWQuXG4gKiBAY2FsbGJhY2sgdmFsaWRhdGlvbkNhbGxiYWNrXG4gKiBAcGFyYW0ge0Vycm9yfSBudWxsIGlmIG5vIGVycm9yLCBvdGhlcndpc2UgZGVzY3JpYmVzIHRoZSBlcnJvclxuICovXG4iLCIvKipcbiAqIERhdGFDb2x1bW5Db25zdHJhaW50cyBtb2R1bGUuXG4gKiBAbW9kdWxlIGRhdGFDb2x1bW5Db25zdHJhaW50c1xuICogQHNlZSBtb2R1bGU6ZGFvL2Rhb1xuICovXG5cbnZhciBEYW8gPSByZXF1aXJlKCcuLi9kYW8vZGFvJyk7XG5cbnZhciB1dGlsID0gcmVxdWlyZSgndXRpbCcpO1xuXG4vKipcbiAqIENvbnRhaW5zIGRhdGEgdG8gc3BlY2lmeSByZXN0cmljdGlvbnMgb24gYmFzaWMgZGF0YSB0eXBlIGNvbHVtbiB2YWx1ZXNcbiAqIEBjbGFzcyBEYXRhQ29sdW1uQ29uc3RyYWludHNcbiAqL1xudmFyIERhdGFDb2x1bW5Db25zdHJhaW50cyA9IGZ1bmN0aW9uKCkge1xuXG4gIC8qKlxuICAgKiBDYXNlIHNlbnNpdGl2ZSBuYW1lIG9mIGNvbnN0cmFpbnRcbiAgICogQG1lbWJlciB7c3RyaW5nfVxuICAgKi9cbiAgdGhpcy5jb25zdHJhaW50X25hbWU7XG5cbiAgLyoqXG4gICAqIExvd2VyY2FzZSB0eXBlIG5hbWUgb2YgY29uc3RyYWludDogcmFuZ2UgfCBlbnVtIHwgZ2xvYlxuICAgKiBAbWVtYmVyIHtzdHJpbmd9XG4gICAqL1xuICB0aGlzLmNvbnN0cmFpbnRfdHlwZTtcblxuICAvKipcbiAgICogU3BlY2lmaWVkIGNhc2Ugc2Vuc2l0aXZlIHZhbHVlIGZvciBlbnVtIG9yIGdsb2Igb3IgTlVMTCBmb3IgcmFuZ2UgY29uc3RyYWludF90eXBlXG4gICAqIEBtZW1iZXIge3N0cmluZ31cbiAgICovXG4gIHRoaXMudmFsdWU7XG5cbiAgLyoqXG4gICAqIE1pbmltdW0gdmFsdWUgZm9yICdyYW5nZScgb3IgTlVMTCBmb3IgJ2VudW0nIG9yICdnbG9iJyBjb25zdHJhaW50X3R5cGVcbiAgICogQG1lbWJlciB7TnVtYmVyfVxuICAgKi9cbiAgdGhpcy5taW47XG5cbiAgLyoqXG4gICAqIDAgKGZhbHNlKSBpZiBtaW4gdmFsdWUgaXMgZXhjbHVzaXZlLCBvciAxICh0cnVlKSBpZiBtaW4gdmFsdWUgaXMgaW5jbHVzaXZlXG4gICAqIEBtZW1iZXIge051bWJlcn1cbiAgICovXG4gIHRoaXMubWluX2lzX2luY2x1c2l2ZTtcblxuICAvKipcbiAgICogTWF4aW11bSB2YWx1ZSBmb3IgJ3JhbmdlJyBvciBOVUxMIGZvciAnZW51bScgb3IgJ2dsb2InIGNvbnN0cmFpbnRfdHlwZVxuICAgKiBAbWVtYmVyIHtOdW1iZXJ9XG4gICAqL1xuICB0aGlzLm1heDtcblxuICAvKipcbiAgICogMCAoZmFsc2UpIGlmIG1heCB2YWx1ZSBpcyBleGNsdXNpdmUsIG9yIDEgKHRydWUpIGlmIG1heCB2YWx1ZSBpcyBpbmNsdXNpdmVcbiAgICogQG1lbWJlciB7TnVtYmVyfVxuICAgKi9cbiAgdGhpcy5tYXhfaXNfaW5jbHVzaXZlO1xuXG4gIC8qKlxuICAgKiBGb3IgcmFuZ2VzIGFuZCBnbG9icywgZGVzY3JpYmVzIHRoZSBjb25zdHJhaW5nOyBmb3IgZW51bXMsIGRlc2NyaWJlcyB0aGUgZW51bSB2YWx1ZS5cbiAgICovXG4gIHRoaXMuZGVzY3JpcHRpb247XG5cbn1cblxuLyoqXG4gKiBEYXRhIENvbHVtbiBDb25zdHJhaW50cyBEYXRhIEFjY2VzcyBPYmplY3RcbiAqIEBjbGFzc1xuICogQGV4dGVuZHMge21vZHVsZTpkYW8vZGFvfkRhb31cbiAqL1xudmFyIERhdGFDb2x1bW5Db25zdHJhaW50c0RhbyA9IGZ1bmN0aW9uKGNvbm5lY3Rpb24pIHtcbiAgRGFvLmNhbGwodGhpcywgY29ubmVjdGlvbik7XG59XG5cbnV0aWwuaW5oZXJpdHMoRGF0YUNvbHVtbkNvbnN0cmFpbnRzRGFvLCBEYW8pO1xuXG5EYXRhQ29sdW1uQ29uc3RyYWludHNEYW8ucHJvdG90eXBlLmNyZWF0ZU9iamVjdCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIG5ldyBEYXRhQ29sdW1uQ29uc3RyYWludHMoKTtcbn07XG5cbi8qKlxuICogcXVlcnkgYnkgY29uc3RyYWludCBuYW1lXG4gKiBAcGFyYW0gIHtTdHJpbmd9IGNvbnN0cmFpbnROYW1lICAgICBjb25zdHJhaW50IG5hbWVcbiAqIEBwYXJhbSAge0Z1bmN0aW9ufSBkYXRhQ29sdW1uQ29uc3RyYWludENhbGxiYWNrIGNhbGxiYWNrIGZvciBlYWNoIHJlc3VsdFxuICogQHBhcmFtICB7RnVuY3Rpb259IGRvbmVDYWxsYmFjayAgICAgICBjYWxsYmFjayBmb3IgZG9uZVxuICovXG5EYXRhQ29sdW1uQ29uc3RyYWludHNEYW8ucHJvdG90eXBlLnF1ZXJ5QnlDb25zdHJhaW50TmFtZSA9IGZ1bmN0aW9uIChjb25zdHJhaW50TmFtZSwgZGF0YUNvbHVtbkNvbnN0cmFpbnRDYWxsYmFjaywgZG9uZUNhbGxiYWNrKSB7XG4gIHRoaXMucXVlcnlGb3JFcVdpdGhGaWVsZEFuZFZhbHVlKERhdGFDb2x1bW5Db25zdHJhaW50c0Rhby5DT0xVTU5fQ09OU1RSQUlOVF9OQU1FLCBjb25zdHJhaW50TmFtZSwgZGF0YUNvbHVtbkNvbnN0cmFpbnRDYWxsYmFjaywgZG9uZUNhbGxiYWNrKTtcbn07XG5cbi8qKlxuICogUXVlcnkgYnkgdGhlIHVuaXF1ZSBjb2x1bW4gdmFsdWVzXG4gKiBAcGFyYW0gIHtTdHJpbmd9IGNvbnN0cmFpbnROYW1lICAgICBjb25zdHJhaW50IG5hbWVcbiAqIEBwYXJhbSAge1N0cmluZ30gY29uc3RyYWludFR5cGUgICAgIGNvbnN0cmFpbnQgdHlwZVxuICogQHBhcmFtICB7U3RyaW5nfSB2YWx1ZSAgICAgICAgICAgICAgdmFsdWVcbiAqIEBwYXJhbSAge0Z1bmN0aW9ufSBjYWxsYmFjayAgICAgICBjYWxsYmFjayB3aXRoIHRoZSByZXN1bHRcbiAqL1xuRGF0YUNvbHVtbkNvbnN0cmFpbnRzRGFvLnByb3RvdHlwZS5xdWVyeVVuaXF1ZSA9IGZ1bmN0aW9uIChjb25zdHJhaW50TmFtZSwgY29uc3RyYWludFR5cGUsIHZhbHVlLCBjYWxsYmFjaykge1xuICB2YXIgZGF0YUNvbHVtbkNvbnN0cmFpbnRzID0gbmV3IERhdGFDb2x1bW5Db25zdHJhaW50cygpO1xuICBkYXRhQ29sdW1uQ29uc3RyYWludHMuY29uc3RyYWludF9uYW1lID0gY29uc3RyYWludE5hbWU7XG4gIGRhdGFDb2x1bW5Db25zdHJhaW50cy5jb25zdHJhaW50X3R5cGUgPSBjb25zdHJhaW50VHlwZTtcbiAgZGF0YUNvbHVtbkNvbnN0cmFpbnRzLnZhbHVlID0gdmFsdWU7XG5cbiAgdGhpcy5xdWVyeUZvclNhbWVJZChkYXRhQ29sdW1uQ29uc3RyYWludHMsIGNhbGxiYWNrKTtcbn07XG5cbkRhdGFDb2x1bW5Db25zdHJhaW50c0Rhby5UQUJMRV9OQU1FID0gXCJncGtnX2RhdGFfY29sdW1uX2NvbnN0cmFpbnRzXCI7XG5EYXRhQ29sdW1uQ29uc3RyYWludHNEYW8uQ09MVU1OX0NPTlNUUkFJTlRfTkFNRSA9IFwiY29uc3RyYWludF9uYW1lXCI7XG5EYXRhQ29sdW1uQ29uc3RyYWludHNEYW8uQ09MVU1OX0NPTlNUUkFJTlRfVFlQRSA9IFwiY29uc3RyYWludF90eXBlXCI7XG5EYXRhQ29sdW1uQ29uc3RyYWludHNEYW8uQ09MVU1OX1ZBTFVFID0gXCJ2YWx1ZVwiO1xuRGF0YUNvbHVtbkNvbnN0cmFpbnRzRGFvLkNPTFVNTl9NSU4gPSBcIm1pblwiO1xuRGF0YUNvbHVtbkNvbnN0cmFpbnRzRGFvLkNPTFVNTl9NSU5fSVNfSU5DTFVTSVZFID0gXCJtaW5faXNfaW5jbHVzaXZlXCI7XG5EYXRhQ29sdW1uQ29uc3RyYWludHNEYW8uQ09MVU1OX01BWCA9IFwibWF4XCI7XG5EYXRhQ29sdW1uQ29uc3RyYWludHNEYW8uQ09MVU1OX01BWF9JU19JTkNMVVNJVkUgPSBcIm1heF9pc19pbmNsdXNpdmVcIjtcbkRhdGFDb2x1bW5Db25zdHJhaW50c0Rhby5DT0xVTU5fREVTQ1JJUFRJT04gPSBcImRlc2NyaXB0aW9uXCI7XG5cbkRhdGFDb2x1bW5Db25zdHJhaW50c0Rhby5wcm90b3R5cGUuZ3BrZ1RhYmxlTmFtZSA9IERhdGFDb2x1bW5Db25zdHJhaW50c0Rhby5UQUJMRV9OQU1FO1xuRGF0YUNvbHVtbkNvbnN0cmFpbnRzRGFvLnByb3RvdHlwZS5pZENvbHVtbnMgPSBbRGF0YUNvbHVtbkNvbnN0cmFpbnRzRGFvLkNPTFVNTl9DT05TVFJBSU5UX05BTUUsIERhdGFDb2x1bW5Db25zdHJhaW50c0Rhby5DT0xVTU5fQ09OU1RSQUlOVF9UWVBFLCBEYXRhQ29sdW1uQ29uc3RyYWludHNEYW8uQ09MVU1OX1ZBTFVFXTtcblxubW9kdWxlLmV4cG9ydHMuRGF0YUNvbHVtbkNvbnN0cmFpbnRzRGFvID0gRGF0YUNvbHVtbkNvbnN0cmFpbnRzRGFvO1xubW9kdWxlLmV4cG9ydHMuRGF0YUNvbHVtbkNvbnN0cmFpbnRzID0gRGF0YUNvbHVtbkNvbnN0cmFpbnRzO1xuIiwiLyoqXG4gKiBEYXRhQ29sdW1ucyBtb2R1bGUuXG4gKiBAbW9kdWxlIGRhdGFDb2x1bW5zXG4gKiBAc2VlIG1vZHVsZTpkYW8vZGFvXG4gKi9cblxudmFyIERhbyA9IHJlcXVpcmUoJy4uL2Rhby9kYW8nKVxuICAsIENvbnRlbnRzRGFvID0gcmVxdWlyZSgnLi4vY29yZS9jb250ZW50cycpLkNvbnRlbnRzRGFvO1xuXG52YXIgdXRpbCA9IHJlcXVpcmUoJ3V0aWwnKTtcblxuLyoqXG4gKiBTdG9yZXMgbWluaW1hbCBhcHBsaWNhdGlvbiBzY2hlbWEgaWRlbnRpZnlpbmcsIGRlc2NyaXB0aXZlIGFuZCBNSU1FIHR5cGVcbiAqIGluZm9ybWF0aW9uIGFib3V0IGNvbHVtbnMgaW4gdXNlciB2ZWN0b3IgZmVhdHVyZSBhbmQgdGlsZSBtYXRyaXggZGF0YSB0YWJsZXNcbiAqIHRoYXQgc3VwcGxlbWVudHMgdGhlIGRhdGEgYXZhaWxhYmxlIGZyb20gdGhlIFNRTGl0ZSBzcWxpdGVfbWFzdGVyIHRhYmxlIGFuZFxuICogcHJhZ21hIHRhYmxlX2luZm8odGFibGVfbmFtZSkgU1FMIGZ1bmN0aW9uLiBUaGUgZ3BrZ19kYXRhX2NvbHVtbnMgZGF0YSBDQU4gYmVcbiAqIHVzZWQgdG8gcHJvdmlkZSBtb3JlIHNwZWNpZmljIGNvbHVtbiBkYXRhIHR5cGVzIGFuZCB2YWx1ZSByYW5nZXMgYW5kXG4gKiBhcHBsaWNhdGlvbiBzcGVjaWZpYyBzdHJ1Y3R1cmFsIGFuZCBzZW1hbnRpYyBpbmZvcm1hdGlvbiB0byBlbmFibGUgbW9yZVxuICogaW5mb3JtYXRpdmUgdXNlciBtZW51IGRpc3BsYXlzIGFuZCBtb3JlIGVmZmVjdGl2ZSB1c2VyIGRlY2lzaW9ucyBvbiB0aGVcbiAqIHN1aXRhYmlsaXR5IG9mIEdlb1BhY2thZ2UgY29udGVudHMgZm9yIHNwZWNpZmljIHB1cnBvc2VzLlxuICogQGNsYXNzIERhdGFDb2x1bW5zXG4gKi9cbnZhciBEYXRhQ29sdW1ucyA9IGZ1bmN0aW9uKCkge1xuICAvKipcbiAgICogdGhlIG5hbWUgb2YgdGhlIHRpbGVzLCBvciBmZWF0dXJlIHRhYmxlXG4gICAqIEBtZW1iZXIge3N0cmluZ31cbiAgICovXG4gIHRoaXMudGFibGVfbmFtZTtcblxuICAvKipcbiAgICogdGhlIG5hbWUgb2YgdGhlIHRhYmxlIGNvbHVtblxuICAgKiBAbWVtYmVyIHtzdHJpbmd9XG4gICAqL1xuICB0aGlzLmNvbHVtbl9uYW1lO1xuXG4gIC8qKlxuICAgKiBBIGh1bWFuLXJlYWRhYmxlIGlkZW50aWZpZXIgKGUuZy4gc2hvcnQgbmFtZSkgZm9yIHRoZSBjb2x1bW5fbmFtZSBjb250ZW50XG4gICAqIEBtZW1iZXIge3N0cmluZ31cbiAgICovXG4gIHRoaXMubmFtZTtcblxuICAvKipcbiAgICogQSBodW1hbi1yZWFkYWJsZSBmb3JtYWwgdGl0bGUgZm9yIHRoZSBjb2x1bW5fbmFtZSBjb250ZW50XG4gICAqIEBtZW1iZXIge3N0cmluZ31cbiAgICovXG4gIHRoaXMudGl0bGU7XG5cbiAgLyoqXG4gICAqIEEgaHVtYW4tcmVhZGFibGUgZGVzY3JpcHRpb24gZm9yIHRoZSB0YWJsZV9uYW1lIGNvbnRlbnRlXG4gICAqIEBtZW1iZXIge3N0cmluZ31cbiAgICovXG4gIHRoaXMuZGVzY3JpcHRpb247XG5cbiAgLyoqXG4gICAqIE1JTUUgdHlwZSBvZiBjb2x1bW5OYW1lIGlmIEJMT0IgdHlwZSBvciBOVUxMIGZvciBvdGhlciB0eXBlc1xuICAgKiBAbWVtYmVyIHtzdHJpbmd9XG4gICAqL1xuICB0aGlzLm1pbWVfdHlwZTtcblxuICAvKipcbiAgICogQ2FzZSBzZW5zaXRpdmUgY29sdW1uIHZhbHVlIGNvbnN0cmFpbnQgbmFtZSBzcGVjaWZpZWRcbiAgICovXG4gIHRoaXMuY29uc3RyYWludF9uYW1lO1xufVxuXG4vKipcbiAqIENvbnRlbnRzIG9iamVjdC4gUHJvdmlkZXMgaWRlbnRpZnlpbmcgYW5kIGRlc2NyaXB0aXZlIGluZm9ybWF0aW9uIHRoYXQgYW5cbiAqIGFwcGxpY2F0aW9uIGNhbiBkaXNwbGF5IHRvIGEgdXNlciBpbiBhIG1lbnUgb2YgZ2Vvc3BhdGlhbCBkYXRhIHRoYXQgaXNcbiAqIGF2YWlsYWJsZSBmb3IgYWNjZXNzIGFuZC9vciB1cGRhdGUuXG4gKiBAY2xhc3NcbiAqIEBleHRlbmRzIHttb2R1bGU6ZGFvL2Rhb35EYW99XG4gKi9cbnZhciBEYXRhQ29sdW1uc0RhbyA9IGZ1bmN0aW9uKGNvbm5lY3Rpb24pIHtcbiAgRGFvLmNhbGwodGhpcywgY29ubmVjdGlvbik7XG59XG5cbnV0aWwuaW5oZXJpdHMoRGF0YUNvbHVtbnNEYW8sIERhbyk7XG5cbkRhdGFDb2x1bW5zRGFvLnByb3RvdHlwZS5jcmVhdGVPYmplY3QgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBuZXcgRGF0YUNvbHVtbnMoKTtcbn07XG5cbi8qKlxuICogR2V0IHRoZSBDb250ZW50cyBmcm9tIHRoZSBEYXRhIENvbHVtbnNcbiAqIEBwYXJhbSAge0RhdGFDb2x1bW5zfSBkYXRhQ29sdW1ucyBkYXRhIGNvbHVtbnNcbiAqIEByZXR1cm4ge0NvbnRlbnRzfSAgICAgICAgICAgICBjb250ZW50c1xuICovXG5EYXRhQ29sdW1uc0Rhby5wcm90b3R5cGUuZ2V0Q29udGVudHMgPSBmdW5jdGlvbiAoZGF0YUNvbHVtbnMsIGNhbGxiYWNrKSB7XG4gIHZhciBjZCA9IG5ldyBDb250ZW50c0Rhbyh0aGlzLmNvbm5lY3Rpb24pO1xuICBjZC5xdWVyeUZvcklkT2JqZWN0KGRhdGFDb2x1bW5zLnRhYmxlX25hbWUsIGNhbGxiYWNrKTtcbn07XG5cbi8qKlxuICogcXVlcnkgYnkgY29uc3RyYWludCBuYW1lXG4gKiBAcGFyYW0gIHtTdHJpbmd9IGNvbnN0cmFpbnROYW1lICAgICBjb25zdHJhaW50IG5hbWVcbiAqIEBwYXJhbSAge0Z1bmN0aW9ufSBkYXRhQ29sdW1uQ2FsbGJhY2sgY2FsbGJhY2sgZm9yIGVhY2ggcmVzdWx0XG4gKiBAcGFyYW0gIHtGdW5jdGlvbn0gZG9uZUNhbGxiYWNrICAgICAgIGNhbGxiYWNrIGZvciBkb25lXG4gKi9cbkRhdGFDb2x1bW5zRGFvLnByb3RvdHlwZS5xdWVyeUJ5Q29uc3RyYWludE5hbWUgPSBmdW5jdGlvbiAoY29uc3RyYWludE5hbWUsIGRhdGFDb2x1bW5DYWxsYmFjaywgZG9uZUNhbGxiYWNrKSB7XG4gIHRoaXMucXVlcnlGb3JFcVdpdGhGaWVsZEFuZFZhbHVlKERhdGFDb2x1bW5zRGFvLkNPTFVNTl9DT05TVFJBSU5UX05BTUUsIGNvbnN0cmFpbnROYW1lLCBkYXRhQ29sdW1uQ2FsbGJhY2ssIGRvbmVDYWxsYmFjayk7XG59O1xuXG4vKipcbiAqIEdldCBEYXRhQ29sdW1uIGJ5IGNvbHVtbiBuYW1lIGFuZCB0YWJsZSBuYW1lXG4gKiBAcGFyYW0gIHtTdHJpbmd9IHRhYmxlTmFtZSAgdGFibGUgbmFtZVxuICogQHBhcmFtICB7U3RyaW5nfSBjb2x1bW5OYW1lIGNvbHVtbiBuYW1lXG4gKiBAcGFyYW0gIHtGdW5jdGlvbn0gY2FsbGJhY2sgY2FsbGJhY2sgd2l0aCBkYXRhIGNvbHVtblxuICovXG5EYXRhQ29sdW1uc0Rhby5wcm90b3R5cGUuZ2V0RGF0YUNvbHVtbnMgPSBmdW5jdGlvbiAodGFibGVOYW1lLCBjb2x1bW5OYW1lLCBjYWxsYmFjaykge1xuICB0aGlzLmlzVGFibGVFeGlzdHMoZnVuY3Rpb24oZXJyLCByZXN1bHRzKSB7XG4gICAgaWYgKGVyciB8fCAhcmVzdWx0cykge1xuICAgICAgcmV0dXJuIGNhbGxiYWNrKCk7XG4gICAgfVxuICAgIHZhciB3aGVyZSA9IHRoaXMuYnVpbGRXaGVyZVdpdGhGaWVsZEFuZFZhbHVlKERhdGFDb2x1bW5zRGFvLkNPTFVNTl9UQUJMRV9OQU1FLCB0YWJsZU5hbWUpICtcbiAgICAgICcgYW5kICcgK1xuICAgICAgdGhpcy5idWlsZFdoZXJlV2l0aEZpZWxkQW5kVmFsdWUoRGF0YUNvbHVtbnNEYW8uQ09MVU1OX0NPTFVNTl9OQU1FLCBjb2x1bW5OYW1lKTtcbiAgICB2YXIgdmFsdWVzID0gW3RhYmxlTmFtZSwgY29sdW1uTmFtZV07XG4gICAgdmFyIGRhdGFDb2x1bW47XG4gICAgdGhpcy5xdWVyeVdoZXJlV2l0aEFyZ3Mod2hlcmUsIHZhbHVlcywgZnVuY3Rpb24oZXJyLCByb3csIHJvd0RvbmUpIHtcbiAgICAgIGlmICghZGF0YUNvbHVtbikge1xuICAgICAgICBkYXRhQ29sdW1uID0gcm93O1xuICAgICAgfVxuICAgICAgcm93RG9uZSgpO1xuICAgIH0sIGZ1bmN0aW9uKGVycikge1xuICAgICAgY2FsbGJhY2soZXJyLCBkYXRhQ29sdW1uKTtcbiAgICB9KVxuICB9LmJpbmQodGhpcykpO1xufTtcblxuRGF0YUNvbHVtbnNEYW8uVEFCTEVfTkFNRSA9IFwiZ3BrZ19kYXRhX2NvbHVtbnNcIjtcbkRhdGFDb2x1bW5zRGFvLkNPTFVNTl9QSzEgPSBcInRhYmxlX25hbWVcIjtcbkRhdGFDb2x1bW5zRGFvLkNPTFVNTl9QSzIgPSBcImNvbHVtbl9uYW1lXCI7XG5EYXRhQ29sdW1uc0Rhby5DT0xVTU5fVEFCTEVfTkFNRSA9IFwidGFibGVfbmFtZVwiO1xuRGF0YUNvbHVtbnNEYW8uQ09MVU1OX0NPTFVNTl9OQU1FID0gXCJjb2x1bW5fbmFtZVwiO1xuRGF0YUNvbHVtbnNEYW8uQ09MVU1OX05BTUUgPSBcIm5hbWVcIjtcbkRhdGFDb2x1bW5zRGFvLkNPTFVNTl9USVRMRSA9IFwidGl0bGVcIjtcbkRhdGFDb2x1bW5zRGFvLkNPTFVNTl9ERVNDUklQVElPTiA9IFwiZGVzY3JpcHRpb25cIjtcbkRhdGFDb2x1bW5zRGFvLkNPTFVNTl9NSU1FX1RZUEUgPSBcIm1pbWVfdHlwZVwiO1xuRGF0YUNvbHVtbnNEYW8uQ09MVU1OX0NPTlNUUkFJTlRfTkFNRSA9IFwiY29uc3RyYWludF9uYW1lXCI7XG5cbkRhdGFDb2x1bW5zRGFvLnByb3RvdHlwZS5ncGtnVGFibGVOYW1lID0gRGF0YUNvbHVtbnNEYW8uVEFCTEVfTkFNRTtcbkRhdGFDb2x1bW5zRGFvLnByb3RvdHlwZS5pZENvbHVtbnMgPSBbRGF0YUNvbHVtbnNEYW8uQ09MVU1OX1BLMSwgRGF0YUNvbHVtbnNEYW8uQ09MVU1OX1BLMl07XG5cbm1vZHVsZS5leHBvcnRzLkRhdGFDb2x1bW5zRGFvID0gRGF0YUNvbHVtbnNEYW87XG5tb2R1bGUuZXhwb3J0cy5EYXRhQ29sdW1ucyA9IERhdGFDb2x1bW5zO1xuIiwiLyoqXG4gKiBEYXRhIFR5cGVzIG1vZHVsZS5cbiAqIEBtb2R1bGUgZGIvZGF0YVR5cGVzXG4gKi9cblxuLyoqXG4gKiBBIGJvb2xlYW4gdmFsdWUgcmVwcmVzZW50aW5nIHRydWUgb3IgZmFsc2UuXG4gKiBAdHlwZSB7U3RyaW5nfVxuICovXG5tb2R1bGUuZXhwb3J0cy5HUEtHX0RUX0JPT0xFQU5fTkFNRSA9IFwiQk9PTEVBTlwiO1xuLyoqXG4gKiA4LWJpdCBzaWduZWQgdHdv4oCZcyBjb21wbGVtZW50IGludGVnZXIuXG4gKiBAdHlwZSB7U3RyaW5nfVxuICovXG5tb2R1bGUuZXhwb3J0cy5HUEtHX0RUX1RJTllJTlRfTkFNRSA9IFwiVElOWUlOVFwiO1xuLyoqXG4gKiAxNi1iaXQgc2lnbmVkIHR3b+KAmXMgY29tcGxlbWVudCBpbnRlZ2VyLlxuICogQHR5cGUge1N0cmluZ31cbiAqL1xubW9kdWxlLmV4cG9ydHMuR1BLR19EVF9TTUFMTElOVF9OQU1FID0gXCJTTUFMTElOVFwiO1xuLyoqXG4gKiAzMi1iaXQgc2lnbmVkIHR3b+KAmXMgY29tcGxlbWVudCBpbnRlZ2VyLlxuICogQHR5cGUge1N0cmluZ31cbiAqL1xubW9kdWxlLmV4cG9ydHMuR1BLR19EVF9NRURJVU1JTlRfTkFNRSA9IFwiTUVESVVNSU5UXCI7XG4vKipcbiAqIDY0LWJpdCBzaWduZWQgdHdv4oCZcyBjb21wbGVtZW50IGludGVnZXIuXG4gKiBAdHlwZSB7U3RyaW5nfVxuICovXG5tb2R1bGUuZXhwb3J0cy5HUEtHX0RUX0lOVF9OQU1FID0gXCJJTlRcIjtcbi8qKlxuICogNjQtYml0IHNpZ25lZCB0d2/igJlzIGNvbXBsZW1lbnQgaW50ZWdlci5cbiAqIEB0eXBlIHtTdHJpbmd9XG4gKi9cbm1vZHVsZS5leHBvcnRzLkdQS0dfRFRfSU5URUdFUl9OQU1FID0gXCJJTlRFR0VSXCI7XG4vKipcbiAqIDMyLWJpdCBJRUVFIGZsb2F0aW5nIHBvaW50IG51bWJlci5cbiAqIEB0eXBlIHtTdHJpbmd9XG4gKi9cbm1vZHVsZS5leHBvcnRzLkdQS0dfRFRfRkxPQVRfTkFNRSA9IFwiRkxPQVRcIjtcbi8qKlxuICogNjQtYml0IElFRUUgZmxvYXRpbmcgcG9pbnQgbnVtYmVyLlxuICogQHR5cGUge1N0cmluZ31cbiAqL1xubW9kdWxlLmV4cG9ydHMuR1BLR19EVF9ET1VCTEVfTkFNRSA9IFwiRE9VQkxFXCI7XG4vKipcbiAqIDY0LWJpdCBJRUVFIGZsb2F0aW5nIHBvaW50IG51bWJlci5cbiAqIEB0eXBlIHtTdHJpbmd9XG4gKi9cbm1vZHVsZS5leHBvcnRzLkdQS0dfRFRfUkVBTF9OQU1FID0gXCJSRUFMXCI7XG4vKipcbiAqIFRFWFR7KG1heGNoYXJfY291bnQpfTogVmFyaWFibGUgbGVuZ3RoIHN0cmluZyBlbmNvZGVkIGluIGVpdGhlciBVVEYtOCBvciBVVEYtMTYsIGRldGVybWluZWQgYnkgUFJBR01BIGVuY29kaW5nOyBzZWUgaHR0cDovL3d3dy5zcWxpdGUub3JnL3ByYWdtYS5odG1sI3ByYWdtYV9lbmNvZGluZy5cbiAqIEB0eXBlIHtTdHJpbmd9XG4gKi9cbm1vZHVsZS5leHBvcnRzLkdQS0dfRFRfVEVYVF9OQU1FID0gXCJURVhUXCI7XG4vKipcbiAqIEJMT0J7KG1heF9zaXplKX06IFZhcmlhYmxlIGxlbmd0aCBiaW5hcnkgZGF0YS5cbiAqIEB0eXBlIHtTdHJpbmd9XG4gKi9cbm1vZHVsZS5leHBvcnRzLkdQS0dfRFRfQkxPQl9OQU1FID0gXCJCTE9CXCI7XG4vKipcbiAqIElTTy04NjAxIGRhdGUgc3RyaW5nIGluIHRoZSBmb3JtIFlZWVktTU0tREQgZW5jb2RlZCBpbiBlaXRoZXIgVVRGLTggb3IgVVRGLTE2LlxuICogQHR5cGUge1N0cmluZ31cbiAqL1xubW9kdWxlLmV4cG9ydHMuR1BLR19EVF9EQVRFX05BTUUgPSBcIkRBVEVcIjtcbi8qKlxuICogSVNPLTg2MDEgZGF0ZS90aW1lIHN0cmluZyBpbiB0aGUgZm9ybSBZWVlZLU1NLUREVEhIOk1NOlNTLlNTU1ogd2l0aCBUIHNlcGFyYXRvciBjaGFyYWN0ZXIgYW5kIFogc3VmZml4IGZvciBjb29yZGluYXRlZCB1bml2ZXJzYWwgdGltZSAoVVRDKSBlbmNvZGVkIGluIGVpdGhlciBVVEYtOCBvciBVVEYtMTYuXG4gKiBAdHlwZSB7U3RyaW5nfVxuICovXG5tb2R1bGUuZXhwb3J0cy5HUEtHX0RUX0RBVEVUSU1FX05BTUUgPSBcIkRBVEVUSU1FXCI7XG5tb2R1bGUuZXhwb3J0cy5HUEtHX0RUX0dFT01FVFJZX05BTUUgPSBcIkdFT01FVFJZXCI7XG5cbm1vZHVsZS5leHBvcnRzLkdQS0dEYXRhVHlwZSA9IHt9O1xubW9kdWxlLmV4cG9ydHMuR1BLR0RhdGFUeXBlW21vZHVsZS5leHBvcnRzLkdQS0dfRFRfQk9PTEVBTl9OQU1FXSA9IDA7XG5tb2R1bGUuZXhwb3J0cy5HUEtHRGF0YVR5cGVbbW9kdWxlLmV4cG9ydHMuR1BLR19EVF9USU5ZSU5UX05BTUVdID0gMTtcbm1vZHVsZS5leHBvcnRzLkdQS0dEYXRhVHlwZVttb2R1bGUuZXhwb3J0cy5HUEtHX0RUX1NNQUxMSU5UX05BTUVdID0gMjtcbm1vZHVsZS5leHBvcnRzLkdQS0dEYXRhVHlwZVttb2R1bGUuZXhwb3J0cy5HUEtHX0RUX01FRElVTUlOVF9OQU1FXSA9IDM7XG5tb2R1bGUuZXhwb3J0cy5HUEtHRGF0YVR5cGVbbW9kdWxlLmV4cG9ydHMuR1BLR19EVF9JTlRfTkFNRV0gPSA0O1xubW9kdWxlLmV4cG9ydHMuR1BLR0RhdGFUeXBlW21vZHVsZS5leHBvcnRzLkdQS0dfRFRfSU5URUdFUl9OQU1FXSA9IDU7XG5tb2R1bGUuZXhwb3J0cy5HUEtHRGF0YVR5cGVbbW9kdWxlLmV4cG9ydHMuR1BLR19EVF9GTE9BVF9OQU1FXSA9IDY7XG5tb2R1bGUuZXhwb3J0cy5HUEtHRGF0YVR5cGVbbW9kdWxlLmV4cG9ydHMuR1BLR19EVF9ET1VCTEVfTkFNRV0gPSA3O1xubW9kdWxlLmV4cG9ydHMuR1BLR0RhdGFUeXBlW21vZHVsZS5leHBvcnRzLkdQS0dfRFRfUkVBTF9OQU1FXSA9IDg7XG5tb2R1bGUuZXhwb3J0cy5HUEtHRGF0YVR5cGVbbW9kdWxlLmV4cG9ydHMuR1BLR19EVF9URVhUX05BTUVdID0gOTtcbm1vZHVsZS5leHBvcnRzLkdQS0dEYXRhVHlwZVttb2R1bGUuZXhwb3J0cy5HUEtHX0RUX0JMT0JfTkFNRV0gPSAxMDtcbm1vZHVsZS5leHBvcnRzLkdQS0dEYXRhVHlwZVttb2R1bGUuZXhwb3J0cy5HUEtHX0RUX0RBVEVfTkFNRV0gPSAxMTtcbm1vZHVsZS5leHBvcnRzLkdQS0dEYXRhVHlwZVttb2R1bGUuZXhwb3J0cy5HUEtHX0RUX0RBVEVUSU1FX05BTUVdID0gMTI7XG5tb2R1bGUuZXhwb3J0cy5HUEtHRGF0YVR5cGVbbW9kdWxlLmV4cG9ydHMuR1BLR19EVF9HRU9NRVRSWV9OQU1FXSA9IDEzO1xuXG5tb2R1bGUuZXhwb3J0cy5HUEtHRGF0YVR5cGUuR1BLR19EVF9CT09MRUFOID0gMDtcbm1vZHVsZS5leHBvcnRzLkdQS0dEYXRhVHlwZS5HUEtHX0RUX1RJTllJTlQgPSAxO1xubW9kdWxlLmV4cG9ydHMuR1BLR0RhdGFUeXBlLkdQS0dfRFRfU01BTExJTlQgPSAyO1xubW9kdWxlLmV4cG9ydHMuR1BLR0RhdGFUeXBlLkdQS0dfRFRfTUVESVVNSU5UID0gMztcbm1vZHVsZS5leHBvcnRzLkdQS0dEYXRhVHlwZS5HUEtHX0RUX0lOVCA9IDQ7XG5tb2R1bGUuZXhwb3J0cy5HUEtHRGF0YVR5cGUuR1BLR19EVF9JTlRFR0VSID0gNTtcbm1vZHVsZS5leHBvcnRzLkdQS0dEYXRhVHlwZS5HUEtHX0RUX0ZMT0FUID0gNjtcbm1vZHVsZS5leHBvcnRzLkdQS0dEYXRhVHlwZS5HUEtHX0RUX0RPVUJMRSA9IDc7XG5tb2R1bGUuZXhwb3J0cy5HUEtHRGF0YVR5cGUuR1BLR19EVF9SRUFMID0gODtcbm1vZHVsZS5leHBvcnRzLkdQS0dEYXRhVHlwZS5HUEtHX0RUX1RFWFQgPSA5O1xubW9kdWxlLmV4cG9ydHMuR1BLR0RhdGFUeXBlLkdQS0dfRFRfQkxPQiA9IDEwO1xubW9kdWxlLmV4cG9ydHMuR1BLR0RhdGFUeXBlLkdQS0dfRFRfREFURSA9IDExO1xubW9kdWxlLmV4cG9ydHMuR1BLR0RhdGFUeXBlLkdQS0dfRFRfREFURVRJTUUgPSAxMjtcbm1vZHVsZS5leHBvcnRzLkdQS0dEYXRhVHlwZS5HUEtHX0RUX0dFT01FVFJZID0gMTM7XG5cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSB7c3RyaW5nfSBmcm9tIHRoaXMgZGF0YSB0eXBlXG4gKiBAcGFyYW0gIHtHUEtHRGF0YVR5cGV9IGRhdGFUeXBlIHRoZSBlbnVtIHRvIHJldHJpZXZlIHRoZSBuYW1lIGZvclxuICogQHJldHVybiB7U3RyaW5nfSAgICAgICAgICB0aGUgc3RyaW5nIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGVudW1cbiAqL1xubW9kdWxlLmV4cG9ydHMubmFtZSA9IGZ1bmN0aW9uKGRhdGFUeXBlKSB7XG4gIHZhciBuYW1lID0gdW5kZWZpbmVkO1xuXG4gIHN3aXRjaChkYXRhVHlwZSl7XG4gICAgY2FzZSBtb2R1bGUuZXhwb3J0cy5HUEtHRGF0YVR5cGUuR1BLR19EVF9CT09MRUFOOlxuICAgICAgbmFtZSA9IG1vZHVsZS5leHBvcnRzLkdQS0dfRFRfQk9PTEVBTl9OQU1FO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBtb2R1bGUuZXhwb3J0cy5HUEtHRGF0YVR5cGUuR1BLR19EVF9USU5ZSU5UOlxuICAgICAgbmFtZSA9IG1vZHVsZS5leHBvcnRzLkdQS0dfRFRfVElOWUlOVF9OQU1FO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBtb2R1bGUuZXhwb3J0cy5HUEtHRGF0YVR5cGUuR1BLR19EVF9TTUFMTElOVDpcbiAgICAgIG5hbWUgPSBtb2R1bGUuZXhwb3J0cy5HUEtHX0RUX1NNQUxMSU5UX05BTUU7XG4gICAgICBicmVhaztcbiAgICBjYXNlIG1vZHVsZS5leHBvcnRzLkdQS0dEYXRhVHlwZS5HUEtHX0RUX01FRElVTUlOVDpcbiAgICAgIG5hbWUgPSBtb2R1bGUuZXhwb3J0cy5HUEtHX0RUX01FRElVTUlOVF9OQU1FO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBtb2R1bGUuZXhwb3J0cy5HUEtHRGF0YVR5cGUuR1BLR19EVF9JTlQ6XG4gICAgICBuYW1lID0gbW9kdWxlLmV4cG9ydHMuR1BLR19EVF9JTlRfTkFNRTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgbW9kdWxlLmV4cG9ydHMuR1BLR0RhdGFUeXBlLkdQS0dfRFRfSU5URUdFUjpcbiAgICAgIG5hbWUgPSBtb2R1bGUuZXhwb3J0cy5HUEtHX0RUX0lOVEVHRVJfTkFNRTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgbW9kdWxlLmV4cG9ydHMuR1BLR0RhdGFUeXBlLkdQS0dfRFRfRkxPQVQ6XG4gICAgICBuYW1lID0gbW9kdWxlLmV4cG9ydHMuR1BLR19EVF9GTE9BVF9OQU1FO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBtb2R1bGUuZXhwb3J0cy5HUEtHRGF0YVR5cGUuR1BLR19EVF9ET1VCTEU6XG4gICAgICBuYW1lID0gbW9kdWxlLmV4cG9ydHMuR1BLR19EVF9ET1VCTEVfTkFNRTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgbW9kdWxlLmV4cG9ydHMuR1BLR0RhdGFUeXBlLkdQS0dfRFRfUkVBTDpcbiAgICAgIG5hbWUgPSBtb2R1bGUuZXhwb3J0cy5HUEtHX0RUX1JFQUxfTkFNRTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgbW9kdWxlLmV4cG9ydHMuR1BLR0RhdGFUeXBlLkdQS0dfRFRfVEVYVDpcbiAgICAgIG5hbWUgPSBtb2R1bGUuZXhwb3J0cy5HUEtHX0RUX1RFWFRfTkFNRTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgbW9kdWxlLmV4cG9ydHMuR1BLR0RhdGFUeXBlLkdQS0dfRFRfQkxPQjpcbiAgICAgIG5hbWUgPSBtb2R1bGUuZXhwb3J0cy5HUEtHX0RUX0JMT0JfTkFNRTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgbW9kdWxlLmV4cG9ydHMuR1BLR0RhdGFUeXBlLkdQS0dfRFRfREFURTpcbiAgICAgIG5hbWUgPSBtb2R1bGUuZXhwb3J0cy5HUEtHX0RUX0RBVEVfTkFNRTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgbW9kdWxlLmV4cG9ydHMuR1BLR0RhdGFUeXBlLkdQS0dfRFRfREFURVRJTUU6XG4gICAgICBuYW1lID0gbW9kdWxlLmV4cG9ydHMuR1BLR19EVF9EQVRFVElNRV9OQU1FO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBtb2R1bGUuZXhwb3J0cy5HUEtHRGF0YVR5cGUuR1BLR19EVF9HRU9NRVRSWTpcbiAgICAgIG5hbWUgPSBtb2R1bGUuZXhwb3J0cy5HUEtHX0RUX0dFT01FVFJZX05BTUU7XG4gICAgICBicmVhaztcbiAgfVxuXG4gIHJldHVybiBuYW1lO1xufVxuXG4vKipcbiAqIEdldCB0aGUgRGF0YSBUeXBlIGZyb20gdGhlIG5hbWUsIGlnbm9yaW5nIGNhc2VcbiAqIEBwYXJhbSAge1N0cmluZ30gbmFtZSB0aGUgbmFtZSBvZiB0aGUgZW51bVxuICogQHJldHVybiB7R1BLR0RhdGFUeXBlfSAgICAgIHRoZSBlbnVtIHZhbHVlXG4gKi9cbm1vZHVsZS5leHBvcnRzLmZyb21OYW1lID0gZnVuY3Rpb24obmFtZSkge1xuICB2YXIgdmFsdWUgPSA5O1xuICBpZiAobmFtZSkge1xuICAgIG5hbWUgPSBuYW1lLnRvVXBwZXJDYXNlKCk7XG4gICAgdmFsdWUgPSBtb2R1bGUuZXhwb3J0cy5HUEtHRGF0YVR5cGVbbmFtZV07XG4gIH1cbiAgcmV0dXJuIHZhbHVlO1xufVxuXG4vLyBtb2R1bGUuZXhwb3J0cy5jbGFzc1R5cGUgPSBmdW5jdGlvbihkYXRhVHlwZSkge1xuLy8gICAgIENsYXNzIGNsYXNzID0gbmlsO1xuLy9cbi8vICAgICBzd2l0Y2goZGF0YVR5cGUpe1xuLy8gICAgICAgICBjYXNlIEdQS0dfRFRfQk9PTEVBTjpcbi8vICAgICAgICAgY2FzZSBHUEtHX0RUX1RJTllJTlQ6XG4vLyAgICAgICAgIGNhc2UgR1BLR19EVF9TTUFMTElOVDpcbi8vICAgICAgICAgY2FzZSBHUEtHX0RUX01FRElVTUlOVDpcbi8vICAgICAgICAgY2FzZSBHUEtHX0RUX0lOVDpcbi8vICAgICAgICAgY2FzZSBHUEtHX0RUX0lOVEVHRVI6XG4vLyAgICAgICAgICAgICBjbGFzcyA9IFtOU051bWJlciBjbGFzc107XG4vLyAgICAgICAgICAgICBicmVhaztcbi8vICAgICAgICAgY2FzZSBHUEtHX0RUX0ZMT0FUOlxuLy8gICAgICAgICBjYXNlIEdQS0dfRFRfRE9VQkxFOlxuLy8gICAgICAgICBjYXNlIEdQS0dfRFRfUkVBTDpcbi8vICAgICAgICAgICAgIGNsYXNzID0gW05TRGVjaW1hbE51bWJlciBjbGFzc107XG4vLyAgICAgICAgICAgICBicmVhaztcbi8vICAgICAgICAgY2FzZSBHUEtHX0RUX1RFWFQ6XG4vLyAgICAgICAgICAgICBjbGFzcyA9IFtOU1N0cmluZyBjbGFzc107XG4vLyAgICAgICAgICAgICBicmVhaztcbi8vICAgICAgICAgY2FzZSBHUEtHX0RUX0JMT0I6XG4vLyAgICAgICAgICAgICBjbGFzcyA9IFtOU0RhdGEgY2xhc3NdO1xuLy8gICAgICAgICAgICAgYnJlYWs7XG4vLyAgICAgICAgIGNhc2UgR1BLR19EVF9EQVRFOlxuLy8gICAgICAgICBjYXNlIEdQS0dfRFRfREFURVRJTUU6XG4vLyAgICAgICAgICAgICBjbGFzcyA9IFtOU0RhdGUgY2xhc3NdO1xuLy8gICAgICAgICAgICAgYnJlYWs7XG4vLyAgICAgICAgIGNhc2UgR1BLR19EVF9HRU9NRVRSWTpcbi8vICAgICAgICAgICAgIGJyZWFrO1xuLy8gICAgIH1cbi8vXG4vLyAgICAgcmV0dXJuIGNsYXNzO1xuLy8gfVxuIiwidmFyIEdlb1BhY2thZ2VDb25zdGFudHMgPSByZXF1aXJlKCcuLi9nZW9QYWNrYWdlQ29uc3RhbnRzJyk7XG5cbnZhciBHZW9QYWNrYWdlQ29ubmVjdGlvbiA9IGZ1bmN0aW9uKGZpbGVQYXRoLCBjYWxsYmFjaykge1xuICBpZiAodHlwZW9mKHByb2Nlc3MpICE9PSAndW5kZWZpbmVkJyAmJiBwcm9jZXNzLnZlcnNpb24pIHtcbiAgICB0aGlzLmFkYXB0ZXJDcmVhdG9yID0gcmVxdWlyZSgnLi9zcWxpdGVBZGFwdGVyJyk7XG4gIH0gZWxzZSB7XG4gICAgdGhpcy5hZGFwdGVyQ3JlYXRvciA9IHJlcXVpcmUoJy4vc3FsanNBZGFwdGVyJyk7XG4gIH1cblxuICB0aGlzLmFkYXB0ZXJDcmVhdG9yLmNyZWF0ZUFkYXB0ZXIoZmlsZVBhdGgsIGZ1bmN0aW9uKGVyciwgYWRhcHRlcikge1xuICAgIHRoaXMuYWRhcHRlciA9IGFkYXB0ZXI7XG4gICAgY2FsbGJhY2soZXJyLCB0aGlzKTtcbiAgfS5iaW5kKHRoaXMpKTtcbn1cblxuR2VvUGFja2FnZUNvbm5lY3Rpb24ucHJvdG90eXBlLmNsb3NlID0gZnVuY3Rpb24oKSB7XG4gIHRoaXMuYWRhcHRlci5jbG9zZSgpO1xufVxuXG5HZW9QYWNrYWdlQ29ubmVjdGlvbi5wcm90b3R5cGUuZXhwb3J0ID0gZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAgdGhpcy5hZGFwdGVyLmV4cG9ydChjYWxsYmFjayk7XG59XG5cbkdlb1BhY2thZ2VDb25uZWN0aW9uLnByb3RvdHlwZS5nZXREQkNvbm5lY3Rpb24gPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLmFkYXB0ZXIuZGI7XG59O1xuXG5HZW9QYWNrYWdlQ29ubmVjdGlvbi5wcm90b3R5cGUuc2V0REJDb25uZWN0aW9uID0gZnVuY3Rpb24gKGRiKSB7XG4gIHRoaXMuYWRhcHRlciA9IHRoaXMuYWRhcHRlckNyZWF0b3IuY3JlYXRlQWRhcHRlckZyb21EYihkYik7XG59O1xuXG5HZW9QYWNrYWdlQ29ubmVjdGlvbi5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24gKHNxbCwgcGFyYW1zLCBjYWxsYmFjaykge1xuICB0aGlzLmFkYXB0ZXIuZ2V0KHNxbCwgcGFyYW1zLCBjYWxsYmFjayk7XG59O1xuXG5HZW9QYWNrYWdlQ29ubmVjdGlvbi5wcm90b3R5cGUucHJlcGFyZSA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5hZGFwdGVyLnByZXBhcmUoYXJndW1lbnRzKTtcbn07XG5cbkdlb1BhY2thZ2VDb25uZWN0aW9uLnByb3RvdHlwZS5ydW4gPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuYWRhcHRlci5ydW4uYXBwbHkodGhpcy5hZGFwdGVyLCBhcmd1bWVudHMpO1xufTtcblxuR2VvUGFja2FnZUNvbm5lY3Rpb24ucHJvdG90eXBlLmFsbCA9IGZ1bmN0aW9uIChzcWwsIHBhcmFtcywgY2FsbGJhY2spIHtcbiAgaWYgKHR5cGVvZiBwYXJhbXMgPT09ICdmdW5jdGlvbicpIHtcbiAgICBjYWxsYmFjayA9IHBhcmFtcztcbiAgICBwYXJhbXMgPSBbXTtcbiAgfVxuICB0aGlzLmFkYXB0ZXIuYWxsKHNxbCwgcGFyYW1zLCBjYWxsYmFjayk7XG59O1xuXG5HZW9QYWNrYWdlQ29ubmVjdGlvbi5wcm90b3R5cGUuZWFjaCA9IGZ1bmN0aW9uIChzcWwsIHBhcmFtcywgZWFjaENhbGxiYWNrLCBkb25lQ2FsbGJhY2spIHtcbiAgaWYgKHR5cGVvZiBwYXJhbXMgPT09ICdmdW5jdGlvbicpIHtcbiAgICBkb25lQ2FsbGJhY2sgPSBlYWNoQ2FsbGJhY2s7XG4gICAgZWFjaENhbGxiYWNrID0gcGFyYW1zO1xuICAgIHBhcmFtcyA9IFtdO1xuICB9XG4gIGlmICghZG9uZUNhbGxiYWNrKSBkb25lQ2FsbGJhY2sgPSBmdW5jdGlvbigpe307XG4gIHRoaXMuYWRhcHRlci5lYWNoKHNxbCwgcGFyYW1zLCBlYWNoQ2FsbGJhY2ssIGRvbmVDYWxsYmFjayk7XG59O1xuXG5HZW9QYWNrYWdlQ29ubmVjdGlvbi5wcm90b3R5cGUubWluT2ZDb2x1bW4gPSBmdW5jdGlvbih0YWJsZSwgY29sdW1uLCB3aGVyZSwgd2hlcmVBcmdzLCBjYWxsYmFjaykge1xuICB2YXIgbWluU3RhdGVtZW50ID0gJ3NlbGVjdCBtaW4oJytjb2x1bW4rJykgYXMgbWluIGZyb20gJyArIHRhYmxlO1xuICBpZih3aGVyZSkge1xuICAgIG1pblN0YXRlbWVudCArPSAnICc7XG4gICAgaWYgKHdoZXJlLmluZGV4T2YoJ3doZXJlJykpIHtcbiAgICAgIHdoZXJlID0gJ3doZXJlICcgKyB3aGVyZTtcbiAgICB9XG4gICAgbWluU3RhdGVtZW50ICs9IHdoZXJlO1xuICB9XG4gIHRoaXMuYWRhcHRlci5nZXQobWluU3RhdGVtZW50LCB3aGVyZUFyZ3MsIGZ1bmN0aW9uKGVyciwgcmVzdWx0KSB7XG4gICAgaWYgKGVyciB8fCAhcmVzdWx0KSByZXR1cm4gY2FsbGJhY2soZXJyKTtcbiAgICBjYWxsYmFjayhlcnIsIHJlc3VsdC5taW4pO1xuICB9KTtcbn07XG5cbkdlb1BhY2thZ2VDb25uZWN0aW9uLnByb3RvdHlwZS5tYXhPZkNvbHVtbiA9IGZ1bmN0aW9uKHRhYmxlLCBjb2x1bW4sIHdoZXJlLCB3aGVyZUFyZ3MsIGNhbGxiYWNrKSB7XG4gIHZhciBtYXhTdGF0ZW1lbnQgPSAnc2VsZWN0IG1heCgnK2NvbHVtbisnKSBhcyBtYXggZnJvbSAnICsgdGFibGU7XG4gIGlmKHdoZXJlKSB7XG4gICAgbWF4U3RhdGVtZW50ICs9ICcgJztcbiAgICBpZiAod2hlcmUuaW5kZXhPZignd2hlcmUnKSkge1xuICAgICAgd2hlcmUgPSAnd2hlcmUgJyArIHdoZXJlO1xuICAgIH1cbiAgICBtYXhTdGF0ZW1lbnQgKz0gd2hlcmU7XG4gIH1cbiAgdGhpcy5hZGFwdGVyLmdldChtYXhTdGF0ZW1lbnQsIHdoZXJlQXJncywgZnVuY3Rpb24oZXJyLCByZXN1bHQpIHtcbiAgICBpZiAoZXJyIHx8ICFyZXN1bHQpIHJldHVybiBjYWxsYmFjayhlcnIpO1xuICAgIGNhbGxiYWNrKGVyciwgcmVzdWx0Lm1heCk7XG4gIH0pO1xufTtcblxuR2VvUGFja2FnZUNvbm5lY3Rpb24ucHJvdG90eXBlLmNvdW50ID0gZnVuY3Rpb24odGFibGUsIGNhbGxiYWNrKSB7XG4gIHRoaXMuYWRhcHRlci5jb3VudCh0YWJsZSwgY2FsbGJhY2spO1xufTtcblxuR2VvUGFja2FnZUNvbm5lY3Rpb24ucHJvdG90eXBlLmluc2VydCA9IGZ1bmN0aW9uIChzcWwsIHBhcmFtcywgY2FsbGJhY2spIHtcbiAgdGhpcy5hZGFwdGVyLmluc2VydChzcWwsIHBhcmFtcywgY2FsbGJhY2spO1xufTtcblxuR2VvUGFja2FnZUNvbm5lY3Rpb24ucHJvdG90eXBlLmRlbGV0ZSA9IGZ1bmN0aW9uKHRhYmxlTmFtZSwgd2hlcmUsIHdoZXJlQXJncywgY2FsbGJhY2spIHtcbiAgdmFyIGRlbGV0ZVN0YXRlbWVudCA9ICdERUxFVEUgRlJPTSAnICsgdGFibGVOYW1lICsgJyc7XG5cbiAgaWYgKHdoZXJlKSB7XG4gICAgZGVsZXRlU3RhdGVtZW50ICs9ICcgV0hFUkUgJyArIHdoZXJlO1xuICB9XG5cbiAgdGhpcy5hZGFwdGVyLmRlbGV0ZShkZWxldGVTdGF0ZW1lbnQsIHdoZXJlQXJncywgY2FsbGJhY2spO1xufTtcblxuR2VvUGFja2FnZUNvbm5lY3Rpb24ucHJvdG90eXBlLmRyb3BUYWJsZSA9IGZ1bmN0aW9uKHRhYmxlTmFtZSwgY2FsbGJhY2spIHtcbiAgdGhpcy5hZGFwdGVyLmRyb3BUYWJsZSh0YWJsZU5hbWUsIGNhbGxiYWNrKTtcbn07XG5cbkdlb1BhY2thZ2VDb25uZWN0aW9uLnByb3RvdHlwZS50YWJsZUV4aXN0cyA9IGZ1bmN0aW9uKHRhYmxlTmFtZSwgY2FsbGJhY2spIHtcbiAgdGhpcy5hZGFwdGVyLmdldCgnU0VMRUNUIG5hbWUgRlJPTSBzcWxpdGVfbWFzdGVyIFdIRVJFIHR5cGU9XCJ0YWJsZVwiIEFORCBuYW1lPT8nLCBbdGFibGVOYW1lXSwgY2FsbGJhY2spO1xufTtcblxuR2VvUGFja2FnZUNvbm5lY3Rpb24ucHJvdG90eXBlLnNldEFwcGxpY2F0aW9uSWQgPSBmdW5jdGlvbihjYWxsYmFjaykge1xuICB2YXIgYnVmZiA9IG5ldyBCdWZmZXIoR2VvUGFja2FnZUNvbnN0YW50cy5BUFBMSUNBVElPTl9JRCk7XG4gIHZhciBhcHBsaWNhdGlvbklkID0gYnVmZi5yZWFkVUludDMyQkUoMCk7XG4gIHRoaXMuYWRhcHRlci5ydW4oJ1BSQUdNQSBhcHBsaWNhdGlvbl9pZCA9ICcgKyBhcHBsaWNhdGlvbklkLCBjYWxsYmFjayk7XG59XG5cbkdlb1BhY2thZ2VDb25uZWN0aW9uLnByb3RvdHlwZS5nZXRBcHBsaWNhdGlvbklkID0gZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAgdGhpcy5hZGFwdGVyLmdldCgnUFJBR01BIGFwcGxpY2F0aW9uX2lkJywgZnVuY3Rpb24oZXJyLCByZXN1bHRzKSB7XG4gICAgaWYgKGVyciB8fCAhcmVzdWx0cykge1xuICAgICAgcmV0dXJuIGNhbGxiYWNrKGVycik7XG4gICAgfVxuICAgIGNhbGxiYWNrKGVyciwgcmVzdWx0cy5hcHBsaWNhdGlvbl9pZCk7XG4gIH0pO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IEdlb1BhY2thZ2VDb25uZWN0aW9uO1xuXG5HZW9QYWNrYWdlQ29ubmVjdGlvbi5jb25uZWN0ID0gZnVuY3Rpb24oZmlsZVBhdGgsIGNhbGxiYWNrKSB7XG4gIG5ldyBHZW9QYWNrYWdlQ29ubmVjdGlvbihmaWxlUGF0aCwgY2FsbGJhY2spO1xufVxuXG5HZW9QYWNrYWdlQ29ubmVjdGlvbi5jb25uZWN0V2l0aERhdGFiYXNlID0gZnVuY3Rpb24oZGIsIGNhbGxiYWNrKSB7XG4gIG5ldyBHZW9QYWNrYWdlQ29ubmVjdGlvbih1bmRlZmluZWQsIGZ1bmN0aW9uKGVyciwgY29ubmVjdGlvbikge1xuICAgIGNvbm5lY3Rpb24uc2V0REJDb25uZWN0aW9uKGRiKTtcbiAgICBjYWxsYmFjayhlcnIsIGNvbm5lY3Rpb24pO1xuICB9KTtcbn1cbiIsInZhciBhc3luYyA9IHJlcXVpcmUoJ2FzeW5jJylcbiAgLCBmcyA9IHJlcXVpcmUoJ2ZzJyk7XG5cbm1vZHVsZS5leHBvcnRzLmNyZWF0ZUFkYXB0ZXIgPSBmdW5jdGlvbihmaWxlUGF0aCwgY2FsbGJhY2spIHtcbiAgdmFyIHNxbGl0ZTMgPSByZXF1aXJlKCdzcWxpdGUzJykudmVyYm9zZSgpO1xuICBmaWxlUGF0aCA9IGZpbGVQYXRoIHx8IFwiXCI7XG4gIHZhciBkYiA9IG5ldyBzcWxpdGUzLkRhdGFiYXNlKGZpbGVQYXRoLCBmdW5jdGlvbihlcnIpIHtcbiAgICBpZiAoZXJyKSB7XG4gICAgICBjb25zb2xlLmxvZygnY2Fubm90IG9wZW4gJyArIGZpbGVQYXRoKTtcbiAgICAgIHJldHVybiBjYWxsYmFjayhlcnIpO1xuICAgIH1cbiAgICB2YXIgYWRhcHRlciA9IG5ldyBBZGFwdGVyKGRiKTtcbiAgICBhZGFwdGVyLmZpbGVQYXRoID0gZmlsZVBhdGg7XG4gICAgY2FsbGJhY2soZXJyLCBhZGFwdGVyKTtcbiAgfSk7XG59XG5cbm1vZHVsZS5leHBvcnRzLmNyZWF0ZUFkYXB0ZXJGcm9tRGIgPSBmdW5jdGlvbihkYikge1xuICByZXR1cm4gbmV3IEFkYXB0ZXIoZGIpO1xufVxuXG5mdW5jdGlvbiBBZGFwdGVyKGRiKSB7XG4gIHRoaXMuZGIgPSBkYjtcbn1cblxuQWRhcHRlci5wcm90b3R5cGUuY2xvc2UgPSBmdW5jdGlvbigpIHtcbiAgdGhpcy5kYi5jbG9zZSgpO1xufVxuXG5BZGFwdGVyLnByb3RvdHlwZS5leHBvcnQgPSBmdW5jdGlvbihjYWxsYmFjaykge1xuICBmcy5yZWFkRmlsZSh0aGlzLmZpbGVQYXRoLCBjYWxsYmFjayk7XG59XG5cbkFkYXB0ZXIucHJvdG90eXBlLmdldERCQ29ubmVjdGlvbiA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMuZGI7XG59O1xuXG5BZGFwdGVyLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbiAoc3FsLCBwYXJhbXMsIGNhbGxiYWNrKSB7XG4gIHRoaXMuZGIuZ2V0LmFwcGx5KHRoaXMuZGIsIGFyZ3VtZW50cyk7XG59O1xuXG5BZGFwdGVyLnByb3RvdHlwZS5wcmVwYXJlID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLmRiLnByZXBhcmUuYXBwbHkodGhpcy5kYiwgYXJndW1lbnRzKTtcbn07XG5cbkFkYXB0ZXIucHJvdG90eXBlLmFsbCA9IGZ1bmN0aW9uIChzcWwsIHBhcmFtcywgY2FsbGJhY2spIHtcbiAgdGhpcy5kYi5hbGwuYXBwbHkodGhpcy5kYiwgYXJndW1lbnRzKTtcbn07XG5cbkFkYXB0ZXIucHJvdG90eXBlLnJ1biA9IGZ1bmN0aW9uKHNxbCwgcGFyYW1zLCBjYWxsYmFjaykge1xuICBpZiAoY2FsbGJhY2spIHtcbiAgICByZXR1cm4gdGhpcy5kYi5ydW4oc3FsLCBwYXJhbXMsIGNhbGxiYWNrKTtcbiAgfVxuICB0aGlzLmRiLnJ1bihzcWwsIHBhcmFtcyk7XG59XG5cbkFkYXB0ZXIucHJvdG90eXBlLmluc2VydCA9IGZ1bmN0aW9uKHNxbCwgcGFyYW1zLCBjYWxsYmFjaykge1xuICB0aGlzLmRiLnJ1bihzcWwsIHBhcmFtcywgZnVuY3Rpb24oZXJyKSB7XG4gICAgaWYoZXJyKSByZXR1cm4gY2FsbGJhY2soZXJyKTtcbiAgICByZXR1cm4gY2FsbGJhY2soZXJyLCB0aGlzLmxhc3RJRCk7XG4gIH0pO1xufTtcblxuQWRhcHRlci5wcm90b3R5cGUuZGVsZXRlID0gZnVuY3Rpb24oc3FsLCBwYXJhbXMsIGNhbGxiYWNrKSB7XG4gIHRoaXMuZGIucnVuKHNxbCwgcGFyYW1zLCBmdW5jdGlvbihlcnIpIHtcbiAgICBjYWxsYmFjayhlcnIsIHRoaXMuY2hhbmdlcyk7XG4gIH0pO1xufTtcblxuQWRhcHRlci5wcm90b3R5cGUuZWFjaCA9IGZ1bmN0aW9uIChzcWwsIHBhcmFtcywgZWFjaENhbGxiYWNrLCBkb25lQ2FsbGJhY2spIHtcbiAgaWYgKGVhY2hDYWxsYmFjaykge1xuICAgIHZhciByb3dDYWxsYmFjayA9IGZ1bmN0aW9uKGVyciwgcmVzdWx0KSB7XG4gICAgICBlYWNoQ2FsbGJhY2soZXJyLCByZXN1bHQsIGZ1bmN0aW9uKCkge30pO1xuICAgIH1cbiAgfVxuICB0aGlzLmRiLmVhY2goc3FsLCBwYXJhbXMsIHJvd0NhbGxiYWNrLCBkb25lQ2FsbGJhY2spO1xufTtcblxuQWRhcHRlci5wcm90b3R5cGUuZHJvcFRhYmxlID0gZnVuY3Rpb24odGFibGUsIGNhbGxiYWNrKSB7XG4gIHRoaXMuZGIucnVuKCdEUk9QIFRBQkxFIElGIEVYSVNUUyBcIicgKyB0YWJsZSArICdcIicsIGZ1bmN0aW9uKGVycikge1xuICAgIGlmKGVycikgcmV0dXJuIGNhbGxiYWNrKGVycik7XG4gICAgcmV0dXJuIGNhbGxiYWNrKGVyciwgISF0aGlzLmNoYW5nZXMpO1xuICB9KTtcbn07XG5cbkFkYXB0ZXIucHJvdG90eXBlLmNvdW50ID0gZnVuY3Rpb24gKHRhYmxlTmFtZSwgY2FsbGJhY2spIHtcbiAgdGhpcy5nZXQoJ1NFTEVDVCBDT1VOVCgqKSBhcyBjb3VudCBGUk9NIFwiJyArIHRhYmxlTmFtZSArICdcIicsIGZ1bmN0aW9uKGVyciwgcmVzdWx0KSB7XG4gICAgY2FsbGJhY2soZXJyLCByZXN1bHQuY291bnQpO1xuICB9KTtcbn07XG4iLCIvKipcbiAqIFNRTGl0ZSBxdWVyeSBidWlsZGVyIG1vZHVsZS5cbiAqIEBtb2R1bGUgZGIvc3FsaXRlUXVlcnlCdWlsZGVyXG4gKi9cblxubW9kdWxlLmV4cG9ydHMuYnVpbGRRdWVyeSA9IGZ1bmN0aW9uKGRpc3RpbmN0LCB0YWJsZXMsIGNvbHVtbnMsIHdoZXJlLCBqb2luLCBncm91cEJ5LCBoYXZpbmcsIG9yZGVyQnksIGxpbWl0KSB7XG5cbiAgdmFyIHF1ZXJ5ID0gJyc7XG4gIGlmIChpc0VtcHR5KGdyb3VwQnkpICYmICFpc0VtcHR5KGhhdmluZykpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0lsbGVnYWwgQXJndW1lbnRzOiBoYXZpbmcgY2xhdXNlcyByZXF1aXJlIGEgZ3JvdXBCeSBjbGF1c2UnKTtcbiAgfVxuXG4gIHF1ZXJ5ICs9ICdzZWxlY3QgJztcbiAgaWYgKGRpc3RpbmN0KSB7XG4gICAgcXVlcnkgKz0gJ2Rpc3RpbmN0ICc7XG4gIH1cbiAgaWYoY29sdW1ucyAmJiBjb2x1bW5zLmxlbmd0aCkge1xuICAgIHF1ZXJ5ID0gYXBwZW5kQ29sdW1uc1RvU3RyaW5nKGNvbHVtbnMsIHF1ZXJ5KTtcbiAgfSBlbHNlIHtcbiAgICBxdWVyeSArPSAnKiAnO1xuICB9XG5cbiAgcXVlcnkgKz0gJ2Zyb20gJyArIHRhYmxlcztcbiAgaWYgKGpvaW4pIHtcbiAgICBxdWVyeSArPSAnICcgKyBqb2luO1xuICB9XG4gIHF1ZXJ5ID0gYXBwZW5kQ2xhdXNlVG9TdHJpbmcocXVlcnksICcgd2hlcmUgJywgd2hlcmUpO1xuICBxdWVyeSA9IGFwcGVuZENsYXVzZVRvU3RyaW5nKHF1ZXJ5LCAnIGdyb3VwIGJ5ICcsIGdyb3VwQnkpO1xuICBxdWVyeSA9IGFwcGVuZENsYXVzZVRvU3RyaW5nKHF1ZXJ5LCAnIGhhdmluZyAnLCBoYXZpbmcpO1xuICBxdWVyeSA9IGFwcGVuZENsYXVzZVRvU3RyaW5nKHF1ZXJ5LCAnIG9yZGVyIGJ5ICcsIG9yZGVyQnkpO1xuICBxdWVyeSA9IGFwcGVuZENsYXVzZVRvU3RyaW5nKHF1ZXJ5LCAnIGxpbWl0ICcsIGxpbWl0KTtcblxuICByZXR1cm4gcXVlcnk7XG59XG5cbm1vZHVsZS5leHBvcnRzLmJ1aWxkQ291bnQgPSBmdW5jdGlvbih0YWJsZXMsIHdoZXJlKSB7XG4gIHZhciBxdWVyeSA9ICdzZWxlY3QgY291bnQoKikgYXMgY291bnQgZnJvbSAnICsgdGFibGVzO1xuICBxdWVyeSA9IGFwcGVuZENsYXVzZVRvU3RyaW5nKHF1ZXJ5LCAnIHdoZXJlICcsIHdoZXJlKTtcbiAgcmV0dXJuIHF1ZXJ5O1xufVxuXG5tb2R1bGUuZXhwb3J0cy5idWlsZEluc2VydCA9IGZ1bmN0aW9uKHRhYmxlLCBvYmplY3QpIHtcbiAgaWYgKG9iamVjdC5nZXRDb2x1bW5OYW1lcykge1xuICAgIHJldHVybiBtb2R1bGUuZXhwb3J0cy5idWlsZEluc2VydEZyb21Db2x1bW5OYW1lcyh0YWJsZSwgb2JqZWN0KTtcbiAgfVxuICB2YXIgaW5zZXJ0ID0gJ2luc2VydCBpbnRvICcgKyB0YWJsZSArICcgKCc7XG4gIHZhciBrZXlzID0gJyc7XG4gIHZhciB2YWx1ZXMgPSAnJztcbiAgdmFyIGZpcnN0ID0gdHJ1ZTtcbiAgZm9yICh2YXIga2V5IGluIG9iamVjdCkge1xuICAgIGlmIChvYmplY3QuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgaWYgKCFmaXJzdCkge1xuICAgICAgICBrZXlzICs9ICcsJztcbiAgICAgICAgdmFsdWVzICs9ICcsJztcbiAgICAgIH1cbiAgICAgIGZpcnN0ID0gZmFsc2U7XG4gICAgICBrZXlzICs9IGtleTtcbiAgICAgIHZhbHVlcyArPSAnJCcgKyBrZXkucmVwbGFjZSgnXFwuJywgJ18nKTtcbiAgICB9XG4gIH1cblxuICBpbnNlcnQgKz0ga2V5cyArICcpIHZhbHVlcyAoJyArIHZhbHVlcyArICcpJztcbiAgcmV0dXJuIGluc2VydDtcbn1cblxubW9kdWxlLmV4cG9ydHMuYnVpbGRJbnNlcnRGcm9tQ29sdW1uTmFtZXMgPSBmdW5jdGlvbih0YWJsZSwgb2JqZWN0KSB7XG4gIHZhciBpbnNlcnQgPSAnaW5zZXJ0IGludG8gJyArIHRhYmxlICsgJyAoJztcbiAgdmFyIGtleXMgPSAnJztcbiAgdmFyIHZhbHVlcyA9ICcnO1xuICB2YXIgZmlyc3QgPSB0cnVlO1xuICB2YXIgY29sdW1uTmFtZXMgPSBvYmplY3QuZ2V0Q29sdW1uTmFtZXMoKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb2x1bW5OYW1lcy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBrZXkgPSBjb2x1bW5OYW1lc1tpXTtcbiAgICBpZiAoIWZpcnN0KSB7XG4gICAgICBrZXlzICs9ICcsJztcbiAgICAgIHZhbHVlcyArPSAnLCc7XG4gICAgfVxuICAgIGZpcnN0ID0gZmFsc2U7XG4gICAga2V5cyArPSAnXCInICsga2V5ICsgJ1wiJztcbiAgICB2YWx1ZXMgKz0gJyQnICsga2V5LnJlcGxhY2UoJ1xcLicsICdfJykgKycnO1xuICB9XG5cbiAgaW5zZXJ0ICs9IGtleXMgKyAnKSB2YWx1ZXMgKCcgKyB2YWx1ZXMgKyAnKSc7XG4gIHJldHVybiBpbnNlcnQ7XG59XG5cbm1vZHVsZS5leHBvcnRzLmJ1aWxkVXBkYXRlID0gZnVuY3Rpb24odGFibGUsIHZhbHVlcywgd2hlcmUsIHdoZXJlQXJncykge1xuICB2YXIgYXJncyA9IFtdO1xuICB2YXIgdXBkYXRlID0gJ3VwZGF0ZSAnICsgdGFibGUgKyAnIHNldCAnO1xuICB2YXIgZmlyc3QgPSB0cnVlO1xuICBmb3IgKHZhciBjb2x1bW5OYW1lIGluIHZhbHVlcykge1xuICAgIGlmICghZmlyc3QpIHtcbiAgICAgIHVwZGF0ZSArPSAnLCAnO1xuICAgIH1cbiAgICBmaXJzdCA9IGZhbHNlO1xuICAgIHVwZGF0ZSArPSAnXCInKyBjb2x1bW5OYW1lICsgJ1wiJztcbiAgICBhcmdzLnB1c2godmFsdWVzW2NvbHVtbk5hbWVdKTtcbiAgICB1cGRhdGUgKz0gJz0/JztcbiAgfVxuICBpZiAod2hlcmVBcmdzKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB3aGVyZUFyZ3MubGVuZ3RoOyBpKyspIHtcbiAgICAgIGFyZ3MucHVzaCh3aGVyZUFyZ3NbaV0pO1xuICAgIH1cbiAgfVxuICBpZiAod2hlcmUpIHtcbiAgICB1cGRhdGUgKz0gJyB3aGVyZSAnO1xuICAgIHVwZGF0ZSArPSB3aGVyZTtcbiAgfVxuICByZXR1cm4ge1xuICAgIHNxbDogdXBkYXRlLFxuICAgIGFyZ3M6IGFyZ3NcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMuYnVpbGRPYmplY3RVcGRhdGUgPSBmdW5jdGlvbih0YWJsZSwgb2JqZWN0KSB7XG4gIHZhciB1cGRhdGUgPSAndXBkYXRlICcgKyB0YWJsZSArICcgc2V0ICc7XG4gIHZhciBmaXJzdCA9IHRydWU7XG4gIGlmIChvYmplY3QuZ2V0Q29sdW1uTmFtZXMpIHtcbiAgICB2YXIgY29sdW1uTmFtZXMgPSBvYmplY3QuZ2V0Q29sdW1uTmFtZXMoKTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY29sdW1uTmFtZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBrZXkgPSBjb2x1bW5OYW1lc1tpXTtcbiAgICAgIGlmICghZmlyc3QpIHtcbiAgICAgICAgdXBkYXRlICs9ICcsICc7XG4gICAgICB9XG4gICAgICBmaXJzdCA9IGZhbHNlO1xuICAgICAgdXBkYXRlICs9ICdcIicgKyBrZXkgKyAnXCI9JztcbiAgICAgIHVwZGF0ZSArPSAnJCcgKyBrZXkucmVwbGFjZSgnXFwuJywgJ18nKSArJyc7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGZvciAodmFyIGtleSBpbiBvYmplY3QpIHtcbiAgICAgIGlmICghZmlyc3QpIHtcbiAgICAgICAgdXBkYXRlICs9ICcsICc7XG4gICAgICB9XG4gICAgICBmaXJzdCA9IGZhbHNlO1xuXG4gICAgICBpZiAob2JqZWN0Lmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgdXBkYXRlICs9ICdcIicgKyBrZXkgKyAnXCI9JztcbiAgICAgICAgdXBkYXRlICs9ICckJyArIGtleS5yZXBsYWNlKCdcXC4nLCAnXycpICsnJztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gdXBkYXRlO1xufVxuXG5mdW5jdGlvbiBhcHBlbmRDbGF1c2VUb1N0cmluZyhzdHJpbmcsIG5hbWUsIGNsYXVzZSkge1xuICBpZiAoY2xhdXNlKSB7XG4gICAgc3RyaW5nICs9IG5hbWUgKyBjbGF1c2U7XG4gIH1cbiAgcmV0dXJuIHN0cmluZztcbn1cblxuZnVuY3Rpb24gYXBwZW5kQ29sdW1uc1RvU3RyaW5nKGNvbHVtbnMsIHN0cmluZykge1xuICBzdHJpbmcgKz0gY29sdW1uc1swXTtcbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBjb2x1bW5zLmxlbmd0aDsgaSsrKSB7XG4gICAgc3RyaW5nICs9ICcsIFwiJyArIGNvbHVtbiArICdcIic7XG4gIH1cbiAgc3RyaW5nICs9ICcgJztcbiAgcmV0dXJuIHN0cmluZztcbn1cblxuZnVuY3Rpb24gaXNFbXB0eShzdHJpbmcpIHtcbiAgcmV0dXJuICFzdHJpbmcgfHwgc3RyaW5nLmxlbmd0aCA9PT0gMDtcbn1cbiIsInZhciBhc3luYyA9IHJlcXVpcmUoJ2FzeW5jJyk7XG5cbnZhciBzcWxqcyA9IHJlcXVpcmUoJ3NxbC5qcy9qcy9zcWwtbWVtb3J5LWdyb3d0aCcpO1xubW9kdWxlLmV4cG9ydHMuY3JlYXRlQWRhcHRlciA9IGZ1bmN0aW9uKGZpbGVQYXRoLCBjYWxsYmFjaykge1xuICBpZiAoZmlsZVBhdGgpIHtcbiAgICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7XG4gICAgeGhyLm9wZW4oJ0dFVCcsIGZpbGVQYXRoLCB0cnVlKTtcbiAgICB4aHIucmVzcG9uc2VUeXBlID0gJ2FycmF5YnVmZmVyJztcblxuICAgIHhoci5vbmxvYWQgPSBmdW5jdGlvbihlKSB7XG4gICAgICBpZiAoeGhyLnN0YXR1cyAhPT0gMjAwKSB7XG4gICAgICAgIHZhciBkYiA9IG5ldyBzcWxqcy5EYXRhYmFzZSgpO1xuICAgICAgICB2YXIgYWRhcHRlciA9IG5ldyBBZGFwdGVyKGRiKTtcbiAgICAgICAgcmV0dXJuIGNhbGxiYWNrKG51bGwsIGFkYXB0ZXIpO1xuICAgICAgfVxuICAgICAgdmFyIHVJbnQ4QXJyYXkgPSBuZXcgVWludDhBcnJheSh0aGlzLnJlc3BvbnNlKTtcbiAgICAgIHZhciBkYiA9IG5ldyBzcWxqcy5EYXRhYmFzZSh1SW50OEFycmF5KTtcbiAgICAgIHZhciBhZGFwdGVyID0gbmV3IEFkYXB0ZXIoZGIpO1xuICAgICAgY2FsbGJhY2sobnVsbCwgYWRhcHRlcik7XG4gICAgfTtcbiAgICB4aHIub25lcnJvciA9IGZ1bmN0aW9uKGUpIHtcbiAgICAgIHZhciBkYiA9IG5ldyBzcWxqcy5EYXRhYmFzZSgpO1xuICAgICAgdmFyIGFkYXB0ZXIgPSBuZXcgQWRhcHRlcihkYik7XG4gICAgICByZXR1cm4gY2FsbGJhY2sobnVsbCwgYWRhcHRlcik7XG4gICAgfTtcbiAgICB4aHIuc2VuZCgpO1xuICB9IGVsc2Uge1xuICAgIHZhciBkYiA9IG5ldyBzcWxqcy5EYXRhYmFzZSgpO1xuICAgIHZhciBhZGFwdGVyID0gbmV3IEFkYXB0ZXIoZGIpO1xuICAgIGNhbGxiYWNrKG51bGwsIGFkYXB0ZXIpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzLmNyZWF0ZUFkYXB0ZXJGcm9tRGIgPSBmdW5jdGlvbihkYikge1xuICByZXR1cm4gbmV3IEFkYXB0ZXIoZGIpO1xufVxuXG5mdW5jdGlvbiBBZGFwdGVyKGRiKSB7XG4gIHRoaXMuZGIgPSBkYjtcbn1cblxuQWRhcHRlci5wcm90b3R5cGUuY2xvc2UgPSBmdW5jdGlvbigpIHtcbiAgdGhpcy5kYi5jbG9zZSgpO1xufVxuXG5BZGFwdGVyLnByb3RvdHlwZS5nZXREQkNvbm5lY3Rpb24gPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLmRiO1xufTtcblxuQWRhcHRlci5wcm90b3R5cGUuZXhwb3J0ID0gZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAgY2FsbGJhY2sobnVsbCwgdGhpcy5kYi5leHBvcnQoKSk7XG59XG5cbkFkYXB0ZXIucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uIChzcWwsIHBhcmFtcywgY2FsbGJhY2spIHtcbiAgaWYgKHR5cGVvZiBwYXJhbXMgPT09ICdmdW5jdGlvbicpIHtcbiAgICBjYWxsYmFjayA9IHBhcmFtcztcbiAgICBwYXJhbXMgPSBbXTtcbiAgfVxuICB2YXIgc3RhdGVtZW50ID0gdGhpcy5kYi5wcmVwYXJlKHNxbCk7XG4gIHN0YXRlbWVudC5iaW5kKHBhcmFtcyk7XG4gIHZhciBoYXNSZXN1bHQgPSBzdGF0ZW1lbnQuc3RlcCgpO1xuICB2YXIgcm93O1xuXG4gIGlmIChoYXNSZXN1bHQpIHtcbiAgICByb3cgPSBzdGF0ZW1lbnQuZ2V0QXNPYmplY3QoKTtcbiAgfVxuXG4gIHN0YXRlbWVudC5mcmVlKCk7XG4gIGNhbGxiYWNrKG51bGwsIHJvdyk7XG59O1xuXG5BZGFwdGVyLnByb3RvdHlwZS5wcmVwYXJlID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLmRiLnByZXBhcmUuYXBwbHkodGhpcy5kYiwgYXJndW1lbnRzKTtcbn07XG5cbkFkYXB0ZXIucHJvdG90eXBlLmFsbCA9IGZ1bmN0aW9uIChzcWwsIHBhcmFtcywgY2FsbGJhY2spIHtcbiAgdmFyIHJvd3MgPSBbXTtcbiAgdGhpcy5lYWNoKHNxbCwgcGFyYW1zLCBmdW5jdGlvbihlcnIsIHJvdywgcm93RG9uZSkge1xuICAgIHJvd3MucHVzaChyb3cpO1xuICAgIHJvd0RvbmUoKTtcbiAgfSwgZnVuY3Rpb24oZXJyKSB7XG4gICAgY2FsbGJhY2soZXJyLCByb3dzKTtcbiAgfSk7XG59O1xuXG5BZGFwdGVyLnByb3RvdHlwZS5lYWNoID0gZnVuY3Rpb24gKHNxbCwgcGFyYW1zLCBlYWNoQ2FsbGJhY2ssIGRvbmVDYWxsYmFjaykge1xuICBpZiAodHlwZW9mIHBhcmFtcyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGRvbmVDYWxsYmFjayA9IGVhY2hDYWxsYmFjaztcbiAgICBlYWNoQ2FsbGJhY2sgPSBwYXJhbXM7XG4gICAgcGFyYW1zID0gW107XG4gIH1cbiAgdmFyIHN0YXRlbWVudCA9IHRoaXMuZGIucHJlcGFyZShzcWwpO1xuICBzdGF0ZW1lbnQuYmluZChwYXJhbXMpO1xuICB2YXIgY291bnQgPSAwO1xuXG4gIGFzeW5jLndoaWxzdChcbiAgICBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBzdGF0ZW1lbnQuc3RlcCgpO1xuICAgIH0sXG4gICAgZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAgICAgIGFzeW5jLnNldEltbWVkaWF0ZShmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIHJvdyA9IHN0YXRlbWVudC5nZXRBc09iamVjdCgpO1xuICAgICAgICBjb3VudCsrO1xuICAgICAgICBlYWNoQ2FsbGJhY2sobnVsbCwgcm93LCBjYWxsYmFjayk7XG4gICAgICB9KTtcbiAgICB9LFxuICAgIGZ1bmN0aW9uKCkge1xuICAgICAgc3RhdGVtZW50LmZyZWUoKTtcbiAgICAgIGRvbmVDYWxsYmFjayhudWxsLCBjb3VudCk7XG4gICAgfVxuICApO1xufTtcblxuQWRhcHRlci5wcm90b3R5cGUucnVuID0gZnVuY3Rpb24oc3FsLCBwYXJhbXMsIGNhbGxiYWNrKSB7XG4gIGlmIChjYWxsYmFjaykge1xuICAgIHRoaXMuZGIucnVuKHNxbCwgcGFyYW1zKTtcbiAgICByZXR1cm4gY2FsbGJhY2soKTtcbiAgfVxuICB0aGlzLmRiLnJ1bihzcWwpO1xuICBwYXJhbXMoKTtcbn07XG5cbkFkYXB0ZXIucHJvdG90eXBlLmluc2VydCA9IGZ1bmN0aW9uKHNxbCwgcGFyYW1zLCBjYWxsYmFjaykge1xuICB0cnkge1xuICAgIHZhciBzdGF0ZW1lbnQgPSB0aGlzLmRiLnByZXBhcmUoc3FsLCBwYXJhbXMpO1xuICAgIHN0YXRlbWVudC5zdGVwKCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gY2FsbGJhY2soZSk7XG4gIH1cbiAgc3RhdGVtZW50LmZyZWUoKTtcbiAgdmFyIGxhc3RJZCA9IHRoaXMuZGIuZXhlYygnc2VsZWN0IGxhc3RfaW5zZXJ0X3Jvd2lkKCk7Jyk7XG4gIGlmIChsYXN0SWQpIHtcbiAgICByZXR1cm4gY2FsbGJhY2sobnVsbCwgbGFzdElkWzBdLnZhbHVlc1swXVswXSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGNhbGxiYWNrKCk7XG4gIH1cbn07XG5cbkFkYXB0ZXIucHJvdG90eXBlLmRlbGV0ZSA9IGZ1bmN0aW9uKHNxbCwgcGFyYW1zLCBjYWxsYmFjaykge1xuICB2YXIgcm93c01vZGlmaWVkID0gMDtcbiAgdHJ5IHtcbiAgICB2YXIgc3RhdGVtZW50ID0gdGhpcy5kYi5wcmVwYXJlKHNxbCwgcGFyYW1zKTtcbiAgICBzdGF0ZW1lbnQuc3RlcCgpO1xuICAgIHJvd3NNb2RpZmllZCA9IHRoaXMuZGIuZ2V0Um93c01vZGlmaWVkKCk7XG4gICAgc3RhdGVtZW50LmZyZWUoKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBjYWxsYmFjayhlKTtcbiAgfVxuICByZXR1cm4gY2FsbGJhY2sobnVsbCwgcm93c01vZGlmaWVkKTtcbn07XG5cbkFkYXB0ZXIucHJvdG90eXBlLmRyb3BUYWJsZSA9IGZ1bmN0aW9uKHRhYmxlLCBjYWxsYmFjaykge1xuICB2YXIgcmVzcG9uc2UgPSB0aGlzLmRiLmV4ZWMoJ0RST1AgVEFCTEUgSUYgRVhJU1RTIFwiJyArIHRhYmxlICsgJ1wiJyk7XG4gIHJldHVybiBjYWxsYmFjayhudWxsLCAhIXJlc3BvbnNlKTtcbn07XG5cbkFkYXB0ZXIucHJvdG90eXBlLmNvdW50ID0gZnVuY3Rpb24gKHRhYmxlTmFtZSwgY2FsbGJhY2spIHtcbiAgdGhpcy5nZXQoJ1NFTEVDVCBDT1VOVCgqKSBhcyBjb3VudCBGUk9NIFwiJyArIHRhYmxlTmFtZSArICdcIicsIGZ1bmN0aW9uKGVyciwgcmVzdWx0KSB7XG4gICAgY2FsbGJhY2sobnVsbCwgcmVzdWx0LmNvdW50KTtcbiAgfSk7XG59O1xuIiwidmFyIGFzeW5jID0gcmVxdWlyZSgnYXN5bmMnKTtcblxudmFyIFNwYXRpYWxSZWZlcmVuY2VTeXN0ZW1EYW8gPSByZXF1aXJlKCcuLi9jb3JlL3NycycpLlNwYXRpYWxSZWZlcmVuY2VTeXN0ZW1EYW9cbiAgLCBEYXRhVHlwZXMgPSByZXF1aXJlKCcuL2RhdGFUeXBlcycpXG4gICwgR2VvUGFja2FnZUNvbm5lY3Rpb24gPSByZXF1aXJlKCcuL2dlb1BhY2thZ2VDb25uZWN0aW9uJyk7XG5cbnZhciBUYWJsZUNyZWF0b3IgPSBmdW5jdGlvbihnZW9wYWNrYWdlKSB7XG4gIGlmIChnZW9wYWNrYWdlIGluc3RhbmNlb2YgR2VvUGFja2FnZUNvbm5lY3Rpb24pIHtcbiAgICB0aGlzLmNvbm5lY3Rpb24gPSBnZW9wYWNrYWdlO1xuICB9IGVsc2Uge1xuICAgIHRoaXMuY29ubmVjdGlvbiA9IGdlb3BhY2thZ2UuZ2V0RGF0YWJhc2UoKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFRhYmxlQ3JlYXRvcjtcblxuVGFibGVDcmVhdG9yLnByb3RvdHlwZS5jcmVhdGVSZXF1aXJlZCA9IGZ1bmN0aW9uIChjYWxsYmFjaykge1xuICB2YXIgZGFvID0gbmV3IFNwYXRpYWxSZWZlcmVuY2VTeXN0ZW1EYW8odGhpcy5jb25uZWN0aW9uKTtcblxuICBhc3luYy5zZXJpZXMoW1xuICAgIC8vIENyZWF0ZSB0aGUgU3BhdGlhbCBSZWZlcmVuY2UgU3lzdGVtIHRhYmxlIChzcGVjIFJlcXVpcmVtZW50IDEwKVxuICAgIHRoaXMuY3JlYXRlU3BhdGlhbFJlZmVyZW5jZVN5c3RlbS5iaW5kKHRoaXMpLFxuXG4gICAgLy8gQ3JlYXRlIHRoZSBDb250ZW50cyB0YWJsZSAoc3BlYyBSZXF1aXJlbWVudCAxMylcbiAgICB0aGlzLmNyZWF0ZUNvbnRlbnRzLmJpbmQodGhpcyksXG5cbiAgICAvLyBDcmVhdGUgdGhlIHJlcXVpcmVkIFNwYXRpYWwgUmVmZXJlbmNlIFN5c3RlbXMgKHNwZWMgUmVxdWlyZW1lbnQgMTEpXG4gICAgZGFvLmNyZWF0ZVVuZGVmaW5lZEdlb2dyYXBoaWMuYmluZChkYW8pLFxuICAgIGRhby5jcmVhdGVXZ3M4NC5iaW5kKGRhbyksXG4gIFx0ZGFvLmNyZWF0ZVVuZGVmaW5lZENhcnRlc2lhbi5iaW5kKGRhbyksXG4gICAgLy8gbm90IHJlcXVpcmVkIGJ1dCB2ZXJ5IGNvbW1vblxuICAgIGRhby5jcmVhdGVXZWJNZXJjYXRvci5iaW5kKGRhbylcbiAgXSwgZnVuY3Rpb24oZXJyLCByZXN1bHRzKSB7XG4gICAgaWYgKGVycikge1xuICAgICAgcmV0dXJuIGNhbGxiYWNrKG5ldyBFcnJvcihcIkVycm9yIGNyZWF0aW5nIGRlZmF1bHQgcmVxdWlyZWQgdGFibGVzIFwiICsgZXJyLm1lc3NhZ2UpKTtcbiAgICB9XG4gICAgY2FsbGJhY2soZXJyLCByZXN1bHRzKTtcbiAgfSlcbn07XG5cblRhYmxlQ3JlYXRvci5wcm90b3R5cGUuY3JlYXRlU3BhdGlhbFJlZmVyZW5jZVN5c3RlbSA9IGZ1bmN0aW9uKGNhbGxiYWNrKSB7XG4gIHRoaXMuY3JlYXRlVGFibGUoJ3NwYXRpYWxfcmVmZXJlbmNlX3N5c3RlbScsIGNhbGxiYWNrKTtcbn1cblxuVGFibGVDcmVhdG9yLnByb3RvdHlwZS5jcmVhdGVDb250ZW50cyA9IGZ1bmN0aW9uKGNhbGxiYWNrKSB7XG4gIHRoaXMuY3JlYXRlVGFibGUoJ2NvbnRlbnRzJywgY2FsbGJhY2spO1xufVxuXG5UYWJsZUNyZWF0b3IucHJvdG90eXBlLmNyZWF0ZUdlb21ldHJ5Q29sdW1ucyA9IGZ1bmN0aW9uKGNhbGxiYWNrKSB7XG4gIHRoaXMuY3JlYXRlVGFibGUoJ2dlb21ldHJ5X2NvbHVtbnMnLCBjYWxsYmFjayk7XG59XG5cblRhYmxlQ3JlYXRvci5wcm90b3R5cGUuY3JlYXRlVGlsZU1hdHJpeFNldCA9IGZ1bmN0aW9uKGNhbGxiYWNrKSB7XG4gIHRoaXMuY3JlYXRlVGFibGUoJ3RpbGVfbWF0cml4X3NldCcsIGNhbGxiYWNrKTtcbn1cblxuVGFibGVDcmVhdG9yLnByb3RvdHlwZS5jcmVhdGVUaWxlTWF0cml4ID0gZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAgdGhpcy5jcmVhdGVUYWJsZSgndGlsZV9tYXRyaXgnLCBjYWxsYmFjayk7XG59XG5cblRhYmxlQ3JlYXRvci5wcm90b3R5cGUuY3JlYXRlRGF0YUNvbHVtbnMgPSBmdW5jdGlvbihjYWxsYmFjaykge1xuICB0aGlzLmNyZWF0ZVRhYmxlKCdkYXRhX2NvbHVtbnMnLCBjYWxsYmFjayk7XG59XG5cblRhYmxlQ3JlYXRvci5wcm90b3R5cGUuY3JlYXRlRGF0YUNvbHVtbkNvbnN0cmFpbnRzID0gZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAgdGhpcy5jcmVhdGVUYWJsZSgnZGF0YV9jb2x1bW5fY29uc3RyYWludHMnLCBjYWxsYmFjayk7XG59XG5cblRhYmxlQ3JlYXRvci5wcm90b3R5cGUuY3JlYXRlTWV0YWRhdGEgPSBmdW5jdGlvbihjYWxsYmFjaykge1xuICB0aGlzLmNyZWF0ZVRhYmxlKCdtZXRhZGF0YScsIGNhbGxiYWNrKTtcbn1cblxuVGFibGVDcmVhdG9yLnByb3RvdHlwZS5jcmVhdGVNZXRhZGF0YVJlZmVyZW5jZSA9IGZ1bmN0aW9uKGNhbGxiYWNrKSB7XG4gIHRoaXMuY3JlYXRlVGFibGUoJ21ldGFkYXRhX3JlZmVyZW5jZScsIGNhbGxiYWNrKTtcbn1cblxuVGFibGVDcmVhdG9yLnByb3RvdHlwZS5jcmVhdGVFeHRlbnNpb25zID0gZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAgdGhpcy5jcmVhdGVUYWJsZSgnZXh0ZW5zaW9ucycsIGNhbGxiYWNrKTtcbn1cblxuVGFibGVDcmVhdG9yLnByb3RvdHlwZS5jcmVhdGVUYWJsZUluZGV4ID0gZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAgdGhpcy5jcmVhdGVUYWJsZSgndGFibGVfaW5kZXgnLCBjYWxsYmFjayk7XG59XG5cblRhYmxlQ3JlYXRvci5wcm90b3R5cGUuY3JlYXRlR2VvbWV0cnlJbmRleCA9IGZ1bmN0aW9uKGNhbGxiYWNrKSB7XG4gIHRoaXMuY3JlYXRlVGFibGUoJ2dlb21ldHJ5X2luZGV4JywgY2FsbGJhY2spO1xufVxuXG5UYWJsZUNyZWF0b3IucHJvdG90eXBlLmNyZWF0ZUZlYXR1cmVUaWxlTGluayA9IGZ1bmN0aW9uKGNhbGxiYWNrKSB7XG4gIHRoaXMuY3JlYXRlVGFibGUoJ2ZlYXR1cmVfdGlsZV9saW5rJywgY2FsbGJhY2spO1xufVxuXG5UYWJsZUNyZWF0b3IucHJvdG90eXBlLmNyZWF0ZVRhYmxlID0gZnVuY3Rpb24odGFibGVOYW1lLCBjYWxsYmFjaykge1xuICB2YXIgY29ubmVjdGlvbiA9IHRoaXMuY29ubmVjdGlvbjtcbiAgYXN5bmMuZWFjaFNlcmllcyh0YWJsZUNyZWF0aW9uU2NyaXB0c1t0YWJsZU5hbWVdLCBmdW5jdGlvbihzcWwsIGNhbGxiYWNrKSB7XG4gICAgY29ubmVjdGlvbi5ydW4oc3FsLCBjYWxsYmFjayk7XG4gIH0sIGNhbGxiYWNrKTtcbn1cblxuVGFibGVDcmVhdG9yLnByb3RvdHlwZS5jcmVhdGVVc2VyVGFibGUgPSBmdW5jdGlvbiAodXNlclRhYmxlLCBjYWxsYmFjaykge1xuICB2YXIgY29ubmVjdGlvbiA9IHRoaXMuY29ubmVjdGlvbjtcbiAgY29ubmVjdGlvbi50YWJsZUV4aXN0cyh1c2VyVGFibGUudGFibGVfbmFtZSwgZnVuY3Rpb24oZXJyLCByZXN1bHQpIHtcbiAgICBpZihlcnIgfHwgcmVzdWx0KSB7XG4gICAgICByZXR1cm4gY2FsbGJhY2sobmV3IEVycm9yKCdUYWJsZSBhbHJlYWR5IGV4aXN0cyBhbmQgY2Fubm90IGJlIGNyZWF0ZWQ6ICcgKyB1c2VyVGFibGUudGFibGVfbmFtZSkpO1xuICAgIH1cbiAgICB2YXIgY2hlY2sgPSAnJztcblxuICAgIHZhciBzcWwgPSAnY3JlYXRlIHRhYmxlIFxcJycgKyB1c2VyVGFibGUudGFibGVfbmFtZSArICdcXCcgKCc7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB1c2VyVGFibGUuY29sdW1ucy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHRjID0gdXNlclRhYmxlLmNvbHVtbnNbaV07XG4gICAgICBpZiAoaSkge1xuICAgICAgICBzcWwgKz0gJywgJztcbiAgICAgIH1cbiAgICAgIHNxbCArPSAnXFxuXFwnJyArIHRjLm5hbWUgKyAnXFwnICcgKyBEYXRhVHlwZXMubmFtZSh0Yy5kYXRhVHlwZSk7XG4gICAgICBpZiAodGMubWF4ICE9IG51bGwpIHtcbiAgICAgICAgc3FsICs9ICcoJyArIHRjLm1heCArICcpJztcbiAgICAgICAgaWYgKGNoZWNrLmxlbmd0aCkge1xuICAgICAgICAgIGNoZWNrICs9ICcgQU5EXFxuJztcbiAgICAgICAgfVxuICAgICAgICBjaGVjayArPSAnXFx0bGVuZ3RoKFwiJyt0Yy5uYW1lKydcIikgPD0gJyArIHRjLm1heDtcbiAgICAgIH1cbiAgICAgIGlmICh0Yy5ub3ROdWxsKSB7XG4gICAgICAgIHNxbCArPSAnIG5vdCBudWxsJ1xuICAgICAgfVxuICAgICAgaWYgKHRjLnByaW1hcnlLZXkpIHtcbiAgICAgICAgc3FsICs9ICcgcHJpbWFyeSBrZXkgYXV0b2luY3JlbWVudCc7XG4gICAgICB9XG4gICAgICBpZiAodGMuZGVmYXVsdFZhbHVlKSB7XG4gICAgICAgIGlmICh0Yy5kYXRhVHlwZSA9PT0gRGF0YVR5cGVzLkdQS0dEYXRhVHlwZS5HUEtHX0RUX1RFWFQpIHtcbiAgICAgICAgICBzcWwgKz0gJyBkZWZhdWx0IFxcJycgKyB0Yy5kZWZhdWx0VmFsdWUgKyAnXFwnJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzcWwgKz0gJyBkZWZhdWx0ICcgKyB0Yy5kZWZhdWx0VmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHVzZXJUYWJsZS51bmlxdWVDb25zdHJhaW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHVuaXF1ZUNvbnN0cmFpbnQgPSB1c2VyVGFibGUudW5pcXVlQ29uc3RyYWludHNbaV07XG4gICAgICBzcWwgKz0gJyxcXG4gdW5pcXVlICgnO1xuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCB1bmlxdWVDb25zdHJhaW50LmNvbHVtbnMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgdmFyIHVuaXF1ZUNvbHVtbiA9IHVuaXF1ZUNvbnN0cmFpbnQuY29sdW1uc1tqXTtcbiAgICAgICAgaWYgKGopIHtcbiAgICAgICAgICBzcWwgKz0gJywgJztcbiAgICAgICAgfVxuICAgICAgICBzcWwgKz0gdW5pcXVlQ29sdW1uLm5hbWU7XG4gICAgICB9XG4gICAgICBzcWwgKz0gJyknO1xuICAgIH1cblxuICAgIGlmIChjaGVjay5sZW5ndGgpIHtcbiAgICAgIHNxbCArPSAnXFxuQ0hFQ0soXFxuJyArIGNoZWNrICsgJ1xcbiknO1xuICAgIH1cblxuICAgIHNxbCArPSAnXFxuKTsnO1xuXG4gICAgY29ubmVjdGlvbi5ydW4oc3FsLCBjYWxsYmFjayk7XG4gIH0pO1xufTtcblxudmFyIHRhYmxlQ3JlYXRpb25TY3JpcHRzID0ge1xuICBzcGF0aWFsX3JlZmVyZW5jZV9zeXN0ZW06IFtcbiAgICAnQ1JFQVRFIFRBQkxFIGdwa2dfc3BhdGlhbF9yZWZfc3lzICgnK1xuICAgICcgIHNyc19uYW1lIFRFWFQgTk9UIE5VTEwsJytcbiAgICAnICBzcnNfaWQgSU5URUdFUiBOT1QgTlVMTCBQUklNQVJZIEtFWSwnK1xuICAgICcgIG9yZ2FuaXphdGlvbiBURVhUIE5PVCBOVUxMLCcrXG4gICAgJyAgb3JnYW5pemF0aW9uX2Nvb3Jkc3lzX2lkIElOVEVHRVIgTk9UIE5VTEwsJytcbiAgICAnICBkZWZpbml0aW9uICBURVhUIE5PVCBOVUxMLCcrXG4gICAgJyAgZGVzY3JpcHRpb24gVEVYVCcrXG4gICAgJyknLFxuXG4gICAgJ0NSRUFURSBWSUVXIHN0X3NwYXRpYWxfcmVmX3N5cyBBUycrXG4gICAgJyBTRUxFQ1QnK1xuICAgICcgICBzcnNfbmFtZSwnK1xuICAgICcgICBzcnNfaWQsJytcbiAgICAnICAgb3JnYW5pemF0aW9uLCcrXG4gICAgJyAgIG9yZ2FuaXphdGlvbl9jb29yZHN5c19pZCwnK1xuICAgICcgICBkZWZpbml0aW9uLCcrXG4gICAgJyAgIGRlc2NyaXB0aW9uJytcbiAgICAnIEZST00gZ3BrZ19zcGF0aWFsX3JlZl9zeXMnLFxuXG4gICAgJ0NSRUFURSBWSUVXIHNwYXRpYWxfcmVmX3N5cyBBUycrXG4gICAgJyBTRUxFQ1QnK1xuICAgICcgICBzcnNfaWQgQVMgc3JpZCwnK1xuICAgICcgICBvcmdhbml6YXRpb24gQVMgYXV0aF9uYW1lLCcrXG4gICAgJyAgIG9yZ2FuaXphdGlvbl9jb29yZHN5c19pZCBBUyBhdXRoX3NyaWQsJytcbiAgICAnICAgZGVmaW5pdGlvbiBBUyBzcnRleHQnK1xuICAgICcgRlJPTSBncGtnX3NwYXRpYWxfcmVmX3N5cydcbiAgXSxcbiAgY29udGVudHM6IFtcbiAgICAnQ1JFQVRFIFRBQkxFIGdwa2dfY29udGVudHMgKCcrXG4gICAgJyB0YWJsZV9uYW1lIFRFWFQgTk9UIE5VTEwgUFJJTUFSWSBLRVksJytcbiAgICAnIGRhdGFfdHlwZSBURVhUIE5PVCBOVUxMLCcrXG4gICAgJyBpZGVudGlmaWVyIFRFWFQgVU5JUVVFLCcrXG4gICAgXCIgZGVzY3JpcHRpb24gVEVYVCBERUZBVUxUICcnLFwiK1xuICAgIFwiIGxhc3RfY2hhbmdlIERBVEVUSU1FIE5PVCBOVUxMIERFRkFVTFQgKHN0cmZ0aW1lKCclWS0lbS0lZFQlSDolTTolZlonLCdub3cnKSksXCIrXG4gICAgJyBtaW5feCBET1VCTEUsJytcbiAgICAnIG1pbl95IERPVUJMRSwnK1xuICAgICcgbWF4X3ggRE9VQkxFLCcrXG4gICAgJyBtYXhfeSBET1VCTEUsJytcbiAgICAnIHNyc19pZCBJTlRFR0VSLCcrXG4gICAgJyBDT05TVFJBSU5UIGZrX2djX3Jfc3JzX2lkIEZPUkVJR04gS0VZIChzcnNfaWQpIFJFRkVSRU5DRVMgZ3BrZ19zcGF0aWFsX3JlZl9zeXMoc3JzX2lkKScrXG4gICAgJyknXG4gIF0sXG4gIGdlb21ldHJ5X2NvbHVtbnM6IFtcbiAgICAnQ1JFQVRFIFRBQkxFIGdwa2dfZ2VvbWV0cnlfY29sdW1ucyAoJytcbiAgICAnICB0YWJsZV9uYW1lIFRFWFQgTk9UIE5VTEwsJytcbiAgICAnICBjb2x1bW5fbmFtZSBURVhUIE5PVCBOVUxMLCcrXG4gICAgJyAgZ2VvbWV0cnlfdHlwZV9uYW1lIFRFWFQgTk9UIE5VTEwsJytcbiAgICAnICBzcnNfaWQgSU5URUdFUiBOT1QgTlVMTCwnK1xuICAgICcgIHogVElOWUlOVCBOT1QgTlVMTCwnK1xuICAgICcgIG0gVElOWUlOVCBOT1QgTlVMTCwnK1xuICAgICcgIENPTlNUUkFJTlQgcGtfZ2VvbV9jb2xzIFBSSU1BUlkgS0VZICh0YWJsZV9uYW1lLCBjb2x1bW5fbmFtZSksJytcbiAgICAnICBDT05TVFJBSU5UIHVrX2djX3RhYmxlX25hbWUgVU5JUVVFICh0YWJsZV9uYW1lKSwnK1xuICAgICcgIENPTlNUUkFJTlQgZmtfZ2NfdG4gRk9SRUlHTiBLRVkgKHRhYmxlX25hbWUpIFJFRkVSRU5DRVMgZ3BrZ19jb250ZW50cyh0YWJsZV9uYW1lKSwnK1xuICAgICcgIENPTlNUUkFJTlQgZmtfZ2Nfc3JzIEZPUkVJR04gS0VZIChzcnNfaWQpIFJFRkVSRU5DRVMgZ3BrZ19zcGF0aWFsX3JlZl9zeXMgKHNyc19pZCknK1xuICAgICcpJyxcblxuICAgICdDUkVBVEUgVklFVyBzdF9nZW9tZXRyeV9jb2x1bW5zIEFTJytcbiAgICAnICBTRUxFQ1QnK1xuICAgICcgICAgdGFibGVfbmFtZSwnK1xuICAgICcgICAgY29sdW1uX25hbWUsJytcbiAgICAnICAgIFwiU1RfXCIgfHwgZ2VvbWV0cnlfdHlwZV9uYW1lIEFTIGdlb21ldHJ5X3R5cGVfbmFtZSwnK1xuICAgICcgICAgZy5zcnNfaWQsJytcbiAgICAnICAgIHNyc19uYW1lJytcbiAgICAnICBGUk9NIGdwa2dfZ2VvbWV0cnlfY29sdW1ucyBhcyBnIEpPSU4gZ3BrZ19zcGF0aWFsX3JlZl9zeXMgQVMgcycrXG4gICAgJyAgV0hFUkUgZy5zcnNfaWQgPSBzLnNyc19pZCcsXG5cbiAgICAnQ1JFQVRFIFZJRVcgZ2VvbWV0cnlfY29sdW1ucyBBUycrXG4gICAgJyAgU0VMRUNUJytcbiAgICAnICAgIHRhYmxlX25hbWUgQVMgZl90YWJsZV9uYW1lLCcrXG4gICAgJyAgICBjb2x1bW5fbmFtZSBBUyBmX2dlb21ldHJ5X2NvbHVtbiwnK1xuICAgICcgICAgKENBU0UgZ2VvbWV0cnlfdHlwZV9uYW1lJytcbiAgICAnICAgIFx0V0hFTiBcIkdFT01FVFJZXCIgVEhFTiAwJytcbiAgICAnICAgIFx0V0hFTiBcIlBPSU5UXCIgVEhFTiAxJytcbiAgICAnICAgIFx0V0hFTiBcIkxJTkVTVFJJTkdcIiBUSEVOIDInK1xuICAgICcgICAgXHRXSEVOIFwiUE9MWUdPTlwiIFRIRU4gMycrXG4gICAgJyAgICBcdFdIRU4gXCJNVUxUSVBPSU5UXCIgVEhFTiA0JytcbiAgICAnICAgIFx0V0hFTiBcIk1VTFRJTElORVNUUklOR1wiIFRIRU4gNScrXG4gICAgJyAgICBcdFdIRU4gXCJNVUxUSVBPTFlHT05cIiBUSEVOIDYnK1xuICAgICcgICAgXHRXSEVOIFwiR0VPTUVUUllDT0xMRUNUSU9OXCIgVEhFTiA3JytcbiAgICAnICAgIFx0V0hFTiBcIkNJUkNVTEFSU1RSSU5HXCIgVEhFTiA4JytcbiAgICAnICAgIFx0V0hFTiBcIkNPTVBPVU5EQ1VSVkVcIiBUSEVOIDknK1xuICAgICcgICAgXHRXSEVOIFwiQ1VSVkVQT0xZR09OXCIgVEhFTiAxMCcrXG4gICAgJyAgICBcdFdIRU4gXCJNVUxUSUNVUlZFXCIgVEhFTiAxMScrXG4gICAgJyAgICBcdFdIRU4gXCJNVUxUSVNVUkZBQ0VcIiBUSEVOIDEyJytcbiAgICAnICAgIFx0V0hFTiBcIkNVUlZFXCIgVEhFTiAxMycrXG4gICAgJyAgICBcdFdIRU4gXCJTVVJGQUNFXCIgVEhFTiAxNCcrXG4gICAgJyAgICBcdFdIRU4gXCJQT0xZSEVEUkFMU1VSRkFDRVwiIFRIRU4gMTUnK1xuICAgICcgICAgXHRXSEVOIFwiVElOXCIgVEhFTiAxNicrXG4gICAgJyAgICBcdFdIRU4gXCJUUklBTkdMRVwiIFRIRU4gMTcnK1xuICAgICcgICAgXHRFTFNFIDAgRU5EKSBBUyBnZW9tZXRyeV90eXBlLCcrXG4gICAgJyAgICAyICsgKENBU0UgeiBXSEVOIDEgVEhFTiAxIFdIRU4gMiBUSEVOIDEgRUxTRSAwIEVORCkgKyAoQ0FTRSBtIFdIRU4gMSBUSEVOIDEgV0hFTiAyIFRIRU4gMSBFTFNFIDAgRU5EKSBBUyBjb29yZF9kaW1lbnNpb24sJytcbiAgICAnICAgIHNyc19pZCBBUyBzcmlkJytcbiAgICAnICBGUk9NIGdwa2dfZ2VvbWV0cnlfY29sdW1ucydcbiAgXSxcbiAgdGlsZV9tYXRyaXhfc2V0OiBbXG4gICAgJ0NSRUFURSBUQUJMRSBncGtnX3RpbGVfbWF0cml4X3NldCAoJytcbiAgICAnICB0YWJsZV9uYW1lIFRFWFQgTk9UIE5VTEwgUFJJTUFSWSBLRVksJytcbiAgICAnICBzcnNfaWQgSU5URUdFUiBOT1QgTlVMTCwnK1xuICAgICcgIG1pbl94IERPVUJMRSBOT1QgTlVMTCwnK1xuICAgICcgIG1pbl95IERPVUJMRSBOT1QgTlVMTCwnK1xuICAgICcgIG1heF94IERPVUJMRSBOT1QgTlVMTCwnK1xuICAgICcgIG1heF95IERPVUJMRSBOT1QgTlVMTCwnK1xuICAgICcgIENPTlNUUkFJTlQgZmtfZ3Rtc190YWJsZV9uYW1lIEZPUkVJR04gS0VZICh0YWJsZV9uYW1lKSBSRUZFUkVOQ0VTIGdwa2dfY29udGVudHModGFibGVfbmFtZSksJytcbiAgICAnICBDT05TVFJBSU5UIGZrX2d0bXNfc3JzIEZPUkVJR04gS0VZIChzcnNfaWQpIFJFRkVSRU5DRVMgZ3BrZ19zcGF0aWFsX3JlZl9zeXMgKHNyc19pZCknK1xuICAgICcpJ1xuICBdLFxuICB0aWxlX21hdHJpeDogW1xuICAgICdDUkVBVEUgVEFCTEUgZ3BrZ190aWxlX21hdHJpeCAoJytcbiAgICAnICB0YWJsZV9uYW1lIFRFWFQgTk9UIE5VTEwsJytcbiAgICAnICB6b29tX2xldmVsIElOVEVHRVIgTk9UIE5VTEwsJytcbiAgICAnICBtYXRyaXhfd2lkdGggSU5URUdFUiBOT1QgTlVMTCwnK1xuICAgICcgIG1hdHJpeF9oZWlnaHQgSU5URUdFUiBOT1QgTlVMTCwnK1xuICAgICcgIHRpbGVfd2lkdGggSU5URUdFUiBOT1QgTlVMTCwnK1xuICAgICcgIHRpbGVfaGVpZ2h0IElOVEVHRVIgTk9UIE5VTEwsJytcbiAgICAnICBwaXhlbF94X3NpemUgRE9VQkxFIE5PVCBOVUxMLCcrXG4gICAgJyAgcGl4ZWxfeV9zaXplIERPVUJMRSBOT1QgTlVMTCwnK1xuICAgICcgIENPTlNUUkFJTlQgcGtfdHRtIFBSSU1BUlkgS0VZICh0YWJsZV9uYW1lLCB6b29tX2xldmVsKSwnK1xuICAgICcgIENPTlNUUkFJTlQgZmtfdG1tX3RhYmxlX25hbWUgRk9SRUlHTiBLRVkgKHRhYmxlX25hbWUpIFJFRkVSRU5DRVMgZ3BrZ19jb250ZW50cyh0YWJsZV9uYW1lKScrXG4gICAgJyknLFxuXG4gICAgXCJDUkVBVEUgVFJJR0dFUiAnZ3BrZ190aWxlX21hdHJpeF96b29tX2xldmVsX2luc2VydCdcIitcbiAgICBcIkJFRk9SRSBJTlNFUlQgT04gJ2dwa2dfdGlsZV9tYXRyaXgnXCIrXG4gICAgXCJGT1IgRUFDSCBST1cgQkVHSU4gXCIrXG4gICAgXCJTRUxFQ1QgUkFJU0UoQUJPUlQsICdpbnNlcnQgb24gdGFibGUgJydncGtnX3RpbGVfbWF0cml4JycgdmlvbGF0ZXMgY29uc3RyYWludDogem9vbV9sZXZlbCBjYW5ub3QgYmUgbGVzcyB0aGFuIDAnKVwiK1xuICAgIFwiV0hFUkUgKE5FVy56b29tX2xldmVsIDwgMCk7XCIrXG4gICAgXCJFTkRcIixcblxuICAgIFwiQ1JFQVRFIFRSSUdHRVIgJ2dwa2dfdGlsZV9tYXRyaXhfem9vbV9sZXZlbF91cGRhdGUnXCIrXG4gICAgXCJCRUZPUkUgVVBEQVRFIG9mIHpvb21fbGV2ZWwgT04gJ2dwa2dfdGlsZV9tYXRyaXgnXCIrXG4gICAgXCJGT1IgRUFDSCBST1cgQkVHSU4gXCIrXG4gICAgXCJTRUxFQ1QgUkFJU0UoQUJPUlQsICd1cGRhdGUgb24gdGFibGUgJydncGtnX3RpbGVfbWF0cml4JycgdmlvbGF0ZXMgY29uc3RyYWludDogem9vbV9sZXZlbCBjYW5ub3QgYmUgbGVzcyB0aGFuIDAnKVwiK1xuICAgIFwiV0hFUkUgKE5FVy56b29tX2xldmVsIDwgMCk7XCIrXG4gICAgXCJFTkRcIixcblxuICAgIFwiQ1JFQVRFIFRSSUdHRVIgJ2dwa2dfdGlsZV9tYXRyaXhfbWF0cml4X3dpZHRoX2luc2VydCdcIitcbiAgICBcIkJFRk9SRSBJTlNFUlQgT04gJ2dwa2dfdGlsZV9tYXRyaXgnXCIrXG4gICAgXCJGT1IgRUFDSCBST1cgQkVHSU4gXCIrXG4gICAgXCJTRUxFQ1QgUkFJU0UoQUJPUlQsICdpbnNlcnQgb24gdGFibGUgJydncGtnX3RpbGVfbWF0cml4JycgdmlvbGF0ZXMgY29uc3RyYWludDogbWF0cml4X3dpZHRoIGNhbm5vdCBiZSBsZXNzIHRoYW4gMScpXCIrXG4gICAgXCJXSEVSRSAoTkVXLm1hdHJpeF93aWR0aCA8IDEpO1wiK1xuICAgIFwiRU5EXCIsXG5cbiAgICBcIkNSRUFURSBUUklHR0VSICdncGtnX3RpbGVfbWF0cml4X21hdHJpeF93aWR0aF91cGRhdGUnXCIrXG4gICAgXCJCRUZPUkUgVVBEQVRFIE9GIG1hdHJpeF93aWR0aCBPTiAnZ3BrZ190aWxlX21hdHJpeCdcIitcbiAgICBcIkZPUiBFQUNIIFJPVyBCRUdJTiBcIitcbiAgICBcIlNFTEVDVCBSQUlTRShBQk9SVCwgJ3VwZGF0ZSBvbiB0YWJsZSAnJ2dwa2dfdGlsZV9tYXRyaXgnJyB2aW9sYXRlcyBjb25zdHJhaW50OiBtYXRyaXhfd2lkdGggY2Fubm90IGJlIGxlc3MgdGhhbiAxJylcIitcbiAgICBcIldIRVJFIChORVcubWF0cml4X3dpZHRoIDwgMSk7XCIrXG4gICAgXCJFTkRcIixcblxuICAgIFwiQ1JFQVRFIFRSSUdHRVIgJ2dwa2dfdGlsZV9tYXRyaXhfbWF0cml4X2hlaWdodF9pbnNlcnQnXCIrXG4gICAgXCJCRUZPUkUgSU5TRVJUIE9OICdncGtnX3RpbGVfbWF0cml4J1wiK1xuICAgIFwiRk9SIEVBQ0ggUk9XIEJFR0lOIFwiK1xuICAgIFwiU0VMRUNUIFJBSVNFKEFCT1JULCAnaW5zZXJ0IG9uIHRhYmxlICcnZ3BrZ190aWxlX21hdHJpeCcnIHZpb2xhdGVzIGNvbnN0cmFpbnQ6IG1hdHJpeF9oZWlnaHQgY2Fubm90IGJlIGxlc3MgdGhhbiAxJylcIitcbiAgICBcIldIRVJFIChORVcubWF0cml4X2hlaWdodCA8IDEpO1wiK1xuICAgIFwiRU5EXCIsXG5cbiAgICBcIkNSRUFURSBUUklHR0VSICdncGtnX3RpbGVfbWF0cml4X21hdHJpeF9oZWlnaHRfdXBkYXRlJ1wiK1xuICAgIFwiQkVGT1JFIFVQREFURSBPRiBtYXRyaXhfaGVpZ2h0IE9OICdncGtnX3RpbGVfbWF0cml4J1wiK1xuICAgIFwiRk9SIEVBQ0ggUk9XIEJFR0lOIFwiK1xuICAgIFwiU0VMRUNUIFJBSVNFKEFCT1JULCAndXBkYXRlIG9uIHRhYmxlICcnZ3BrZ190aWxlX21hdHJpeCcnIHZpb2xhdGVzIGNvbnN0cmFpbnQ6IG1hdHJpeF9oZWlnaHQgY2Fubm90IGJlIGxlc3MgdGhhbiAxJylcIitcbiAgICBcIldIRVJFIChORVcubWF0cml4X2hlaWdodCA8IDEpO1wiK1xuICAgIFwiRU5EXCIsXG5cbiAgICBcIkNSRUFURSBUUklHR0VSICdncGtnX3RpbGVfbWF0cml4X3BpeGVsX3hfc2l6ZV9pbnNlcnQnXCIrXG4gICAgXCJCRUZPUkUgSU5TRVJUIE9OICdncGtnX3RpbGVfbWF0cml4J1wiK1xuICAgIFwiRk9SIEVBQ0ggUk9XIEJFR0lOIFwiK1xuICAgIFwiU0VMRUNUIFJBSVNFKEFCT1JULCAnaW5zZXJ0IG9uIHRhYmxlICcnZ3BrZ190aWxlX21hdHJpeCcnIHZpb2xhdGVzIGNvbnN0cmFpbnQ6IHBpeGVsX3hfc2l6ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAwJylcIitcbiAgICBcIldIRVJFIE5PVCAoTkVXLnBpeGVsX3hfc2l6ZSA+IDApO1wiK1xuICAgIFwiRU5EXCIsXG5cbiAgICBcIkNSRUFURSBUUklHR0VSICdncGtnX3RpbGVfbWF0cml4X3BpeGVsX3hfc2l6ZV91cGRhdGUnXCIrXG4gICAgXCJCRUZPUkUgVVBEQVRFIE9GIHBpeGVsX3hfc2l6ZSBPTiAnZ3BrZ190aWxlX21hdHJpeCdcIitcbiAgICBcIkZPUiBFQUNIIFJPVyBCRUdJTiBcIitcbiAgICBcIlNFTEVDVCBSQUlTRShBQk9SVCwgJ3VwZGF0ZSBvbiB0YWJsZSAnJ2dwa2dfdGlsZV9tYXRyaXgnJyB2aW9sYXRlcyBjb25zdHJhaW50OiBwaXhlbF94X3NpemUgbXVzdCBiZSBncmVhdGVyIHRoYW4gMCcpXCIrXG4gICAgXCJXSEVSRSBOT1QgKE5FVy5waXhlbF94X3NpemUgPiAwKTtcIitcbiAgICBcIkVORFwiLFxuXG4gICAgXCJDUkVBVEUgVFJJR0dFUiAnZ3BrZ190aWxlX21hdHJpeF9waXhlbF95X3NpemVfaW5zZXJ0J1wiK1xuICAgIFwiQkVGT1JFIElOU0VSVCBPTiAnZ3BrZ190aWxlX21hdHJpeCdcIitcbiAgICBcIkZPUiBFQUNIIFJPVyBCRUdJTiBcIitcbiAgICBcIlNFTEVDVCBSQUlTRShBQk9SVCwgJ2luc2VydCBvbiB0YWJsZSAnJ2dwa2dfdGlsZV9tYXRyaXgnJyB2aW9sYXRlcyBjb25zdHJhaW50OiBwaXhlbF95X3NpemUgbXVzdCBiZSBncmVhdGVyIHRoYW4gMCcpXCIrXG4gICAgXCJXSEVSRSBOT1QgKE5FVy5waXhlbF95X3NpemUgPiAwKTtcIitcbiAgICBcIkVORFwiLFxuXG4gICAgXCJDUkVBVEUgVFJJR0dFUiAnZ3BrZ190aWxlX21hdHJpeF9waXhlbF95X3NpemVfdXBkYXRlJ1wiK1xuICAgIFwiQkVGT1JFIFVQREFURSBPRiBwaXhlbF95X3NpemUgT04gJ2dwa2dfdGlsZV9tYXRyaXgnXCIrXG4gICAgXCJGT1IgRUFDSCBST1cgQkVHSU4gXCIrXG4gICAgXCJTRUxFQ1QgUkFJU0UoQUJPUlQsICd1cGRhdGUgb24gdGFibGUgJydncGtnX3RpbGVfbWF0cml4JycgdmlvbGF0ZXMgY29uc3RyYWludDogcGl4ZWxfeV9zaXplIG11c3QgYmUgZ3JlYXRlciB0aGFuIDAnKVwiK1xuICAgIFwiV0hFUkUgTk9UIChORVcucGl4ZWxfeV9zaXplID4gMCk7XCIrXG4gICAgXCJFTkRcIlxuICBdLFxuICBkYXRhX2NvbHVtbnM6IFtcbiAgICAnQ1JFQVRFIFRBQkxFIGdwa2dfZGF0YV9jb2x1bW5zICgnK1xuICAgICcgIHRhYmxlX25hbWUgVEVYVCBOT1QgTlVMTCwnK1xuICAgICcgIGNvbHVtbl9uYW1lIFRFWFQgTk9UIE5VTEwsJytcbiAgICAnICBuYW1lIFRFWFQsJytcbiAgICAnICB0aXRsZSBURVhULCcrXG4gICAgJyAgZGVzY3JpcHRpb24gVEVYVCwnK1xuICAgICcgIG1pbWVfdHlwZSBURVhULCcrXG4gICAgJyAgY29uc3RyYWludF9uYW1lIFRFWFQsJytcbiAgICAnICBDT05TVFJBSU5UIHBrX2dkYyBQUklNQVJZIEtFWSAodGFibGVfbmFtZSwgY29sdW1uX25hbWUpLCcrXG4gICAgJyAgQ09OU1RSQUlOVCBma19nZGNfdG4gRk9SRUlHTiBLRVkgKHRhYmxlX25hbWUpIFJFRkVSRU5DRVMgZ3BrZ19jb250ZW50cyh0YWJsZV9uYW1lKScrXG4gICAgJyknXG4gIF0sXG4gIGRhdGFfY29sdW1uX2NvbnN0cmFpbnRzOiBbXG4gICAgJ0NSRUFURSBUQUJMRSBncGtnX2RhdGFfY29sdW1uX2NvbnN0cmFpbnRzICgnK1xuICAgICcgIGNvbnN0cmFpbnRfbmFtZSBURVhUIE5PVCBOVUxMLCcrXG4gICAgJyAgY29uc3RyYWludF90eXBlIFRFWFQgTk9UIE5VTEwsIC8qIFwicmFuZ2VcIiB8IFwiZW51bVwiIHwgXCJnbG9iXCIgKi8nK1xuICAgICcgIHZhbHVlIFRFWFQsJytcbiAgICAnICBtaW4gTlVNRVJJQywnK1xuICAgICcgIG1pbl9pc19pbmNsdXNpdmUgQk9PTEVBTiwgLyogMCA9IGZhbHNlLCAxID0gdHJ1ZSAqLycrXG4gICAgJyAgbWF4IE5VTUVSSUMsJytcbiAgICAnICBtYXhfaXNfaW5jbHVzaXZlIEJPT0xFQU4sIC8qIDAgPSBmYWxzZSwgMSA9IHRydWUgKi8nK1xuICAgICcgIGRlc2NyaXB0aW9uIFRFWFQsJytcbiAgICAnICBDT05TVFJBSU5UIGdkY2NfbnR2IFVOSVFVRSAoY29uc3RyYWludF9uYW1lLCBjb25zdHJhaW50X3R5cGUsIHZhbHVlKScrXG4gICAgJyknXG4gIF0sXG4gIG1ldGFkYXRhOiBbXG4gICAgJ0NSRUFURSBUQUJMRSBncGtnX21ldGFkYXRhICgnK1xuICAgICcgIGlkIElOVEVHRVIgQ09OU1RSQUlOVCBtX3BrIFBSSU1BUlkgS0VZIEFTQyBOT1QgTlVMTCBVTklRVUUsJytcbiAgICAnICBtZF9zY29wZSBURVhUIE5PVCBOVUxMIERFRkFVTFQgXCJkYXRhc2V0XCIsJytcbiAgICAnICBtZF9zdGFuZGFyZF91cmkgVEVYVCBOT1QgTlVMTCwnK1xuICAgICcgIG1pbWVfdHlwZSBURVhUIE5PVCBOVUxMIERFRkFVTFQgXCJ0ZXh0L3htbFwiLCcrXG4gICAgJyAgbWV0YWRhdGEgVEVYVCBOT1QgTlVMTCcrXG4gICAgJyknLFxuXG4gICAgXCJDUkVBVEUgVFJJR0dFUiAnZ3BrZ19tZXRhZGF0YV9tZF9zY29wZV9pbnNlcnQnIFwiK1xuICAgIFwiQkVGT1JFIElOU0VSVCBPTiAnZ3BrZ19tZXRhZGF0YScgXCIrXG4gICAgXCJGT1IgRUFDSCBST1cgQkVHSU4gXCIrXG4gICAgXCJTRUxFQ1QgUkFJU0UoQUJPUlQsICdpbnNlcnQgb24gdGFibGUgZ3BrZ19tZXRhZGF0YSB2aW9sYXRlcyBcIitcbiAgICBcImNvbnN0cmFpbnQ6IG1kX3Njb3BlIG11c3QgYmUgb25lIG9mIHVuZGVmaW5lZCB8IGZpZWxkU2Vzc2lvbiB8IFwiK1xuICAgIFwiY29sbGVjdGlvblNlc3Npb24gfCBzZXJpZXMgfCBkYXRhc2V0IHwgZmVhdHVyZVR5cGUgfCBmZWF0dXJlIHwgXCIrXG4gICAgXCJhdHRyaWJ1dGVUeXBlIHwgYXR0cmlidXRlIHwgdGlsZSB8IG1vZGVsIHwgY2F0YWxvZ3VlIHwgc2NoZW1hIHwgXCIrXG4gICAgXCJ0YXhvbm9teSBzb2Z0d2FyZSB8IHNlcnZpY2UgfCBjb2xsZWN0aW9uSGFyZHdhcmUgfCBcIitcbiAgICBcIm5vbkdlb2dyYXBoaWNEYXRhc2V0IHwgZGltZW5zaW9uR3JvdXAnKSBcIitcbiAgICBcIldIRVJFIE5PVChORVcubWRfc2NvcGUgSU4gXCIrXG4gICAgXCIoJ3VuZGVmaW5lZCcsJ2ZpZWxkU2Vzc2lvbicsJ2NvbGxlY3Rpb25TZXNzaW9uJywnc2VyaWVzJywnZGF0YXNldCcsIFwiK1xuICAgIFwiJ2ZlYXR1cmVUeXBlJywnZmVhdHVyZScsJ2F0dHJpYnV0ZVR5cGUnLCdhdHRyaWJ1dGUnLCd0aWxlJywnbW9kZWwnLCBcIitcbiAgICBcIidjYXRhbG9ndWUnLCdzY2hlbWEnLCd0YXhvbm9teScsJ3NvZnR3YXJlJywnc2VydmljZScsIFwiK1xuICAgIFwiJ2NvbGxlY3Rpb25IYXJkd2FyZScsJ25vbkdlb2dyYXBoaWNEYXRhc2V0JywnZGltZW5zaW9uR3JvdXAnKSk7IFwiK1xuICAgIFwiRU5EXCIsXG5cbiAgICBcIkNSRUFURSBUUklHR0VSICdncGtnX21ldGFkYXRhX21kX3Njb3BlX3VwZGF0ZScgXCIrXG4gICAgXCJCRUZPUkUgVVBEQVRFIE9GICdtZF9zY29wZScgT04gJ2dwa2dfbWV0YWRhdGEnIFwiK1xuICAgIFwiRk9SIEVBQ0ggUk9XIEJFR0lOIFwiK1xuICAgIFwiU0VMRUNUIFJBSVNFKEFCT1JULCAndXBkYXRlIG9uIHRhYmxlIGdwa2dfbWV0YWRhdGEgdmlvbGF0ZXMgXCIrXG4gICAgXCJjb25zdHJhaW50OiBtZF9zY29wZSBtdXN0IGJlIG9uZSBvZiB1bmRlZmluZWQgfCBmaWVsZFNlc3Npb24gfCBcIitcbiAgICBcImNvbGxlY3Rpb25TZXNzaW9uIHwgc2VyaWVzIHwgZGF0YXNldCB8IGZlYXR1cmVUeXBlIHwgZmVhdHVyZSB8IFwiK1xuICAgIFwiYXR0cmlidXRlVHlwZSB8IGF0dHJpYnV0ZSB8IHRpbGUgfCBtb2RlbCB8IGNhdGFsb2d1ZSB8IHNjaGVtYSB8IFwiK1xuICAgIFwidGF4b25vbXkgc29mdHdhcmUgfCBzZXJ2aWNlIHwgY29sbGVjdGlvbkhhcmR3YXJlIHwgXCIrXG4gICAgXCJub25HZW9ncmFwaGljRGF0YXNldCB8IGRpbWVuc2lvbkdyb3VwJykgXCIrXG4gICAgXCJXSEVSRSBOT1QoTkVXLm1kX3Njb3BlIElOIFwiK1xuICAgIFwiKCd1bmRlZmluZWQnLCdmaWVsZFNlc3Npb24nLCdjb2xsZWN0aW9uU2Vzc2lvbicsJ3NlcmllcycsJ2RhdGFzZXQnLCBcIitcbiAgICBcIidmZWF0dXJlVHlwZScsJ2ZlYXR1cmUnLCdhdHRyaWJ1dGVUeXBlJywnYXR0cmlidXRlJywndGlsZScsJ21vZGVsJywgXCIrXG4gICAgXCInY2F0YWxvZ3VlJywnc2NoZW1hJywndGF4b25vbXknLCdzb2Z0d2FyZScsJ3NlcnZpY2UnLCBcIitcbiAgICBcIidjb2xsZWN0aW9uSGFyZHdhcmUnLCdub25HZW9ncmFwaGljRGF0YXNldCcsJ2RpbWVuc2lvbkdyb3VwJykpOyBcIitcbiAgICBcIkVORFwiXG4gIF0sXG4gIG1ldGFkYXRhX3JlZmVyZW5jZTogW1xuICAgIFwiQ1JFQVRFIFRBQkxFIGdwa2dfbWV0YWRhdGFfcmVmZXJlbmNlIChcIiArXG4gICAgXCIgIHJlZmVyZW5jZV9zY29wZSBURVhUIE5PVCBOVUxMLFwiICtcbiAgICBcIiAgdGFibGVfbmFtZSBURVhULFwiICtcbiAgICBcIiAgY29sdW1uX25hbWUgVEVYVCxcIiArXG4gICAgXCIgIHJvd19pZF92YWx1ZSBJTlRFR0VSLFwiICtcbiAgICBcIiAgdGltZXN0YW1wIERBVEVUSU1FIE5PVCBOVUxMIERFRkFVTFQgKHN0cmZ0aW1lKCclWS0lbS0lZFQlSDolTTolZlonLCdub3cnKSksXCIgK1xuICAgIFwiICBtZF9maWxlX2lkIElOVEVHRVIgTk9UIE5VTEwsXCIgK1xuICAgIFwiICBtZF9wYXJlbnRfaWQgSU5URUdFUixcIiArXG4gICAgXCIgIENPTlNUUkFJTlQgY3Jtcl9tZmlfZmsgRk9SRUlHTiBLRVkgKG1kX2ZpbGVfaWQpIFJFRkVSRU5DRVMgZ3BrZ19tZXRhZGF0YShpZCksXCIgK1xuICAgIFwiICBDT05TVFJBSU5UIGNybXJfbXBpX2ZrIEZPUkVJR04gS0VZIChtZF9wYXJlbnRfaWQpIFJFRkVSRU5DRVMgZ3BrZ19tZXRhZGF0YShpZClcIiArXG4gICAgXCIpXCIsXG5cbiAgICBcIkNSRUFURSBUUklHR0VSICdncGtnX21ldGFkYXRhX3JlZmVyZW5jZV9yZWZlcmVuY2Vfc2NvcGVfaW5zZXJ0JyBcIitcbiAgICBcIkJFRk9SRSBJTlNFUlQgT04gJ2dwa2dfbWV0YWRhdGFfcmVmZXJlbmNlJyBcIitcbiAgICBcIkZPUiBFQUNIIFJPVyBCRUdJTiBcIitcbiAgICBcIlNFTEVDVCBSQUlTRShBQk9SVCwgJ2luc2VydCBvbiB0YWJsZSBncGtnX21ldGFkYXRhX3JlZmVyZW5jZSBcIitcbiAgICBcInZpb2xhdGVzIGNvbnN0cmFpbnQ6IHJlZmVyZW5jZV9zY29wZSBtdXN0IGJlIG9uZSBvZiBcXFwiZ2VvcGFja2FnZVxcXCIsIFwiK1xuICAgIFwidGFibGVcXFwiLCBcXFwiY29sdW1uXFxcIiwgXFxcInJvd1xcXCIsIFxcXCJyb3cvY29sXFxcIicpIFwiK1xuICAgIFwiV0hFUkUgTk9UIE5FVy5yZWZlcmVuY2Vfc2NvcGUgSU4gXCIrXG4gICAgXCIoJ2dlb3BhY2thZ2UnLCd0YWJsZScsJ2NvbHVtbicsJ3JvdycsJ3Jvdy9jb2wnKTsgXCIrXG4gICAgXCJFTkRcIixcblxuICAgIFwiQ1JFQVRFIFRSSUdHRVIgJ2dwa2dfbWV0YWRhdGFfcmVmZXJlbmNlX3JlZmVyZW5jZV9zY29wZV91cGRhdGUnIFwiK1xuICAgIFwiQkVGT1JFIFVQREFURSBPRiAncmVmZXJlbmNlX3Njb3BlJyBPTiAnZ3BrZ19tZXRhZGF0YV9yZWZlcmVuY2UnIFwiK1xuICAgIFwiRk9SIEVBQ0ggUk9XIEJFR0lOIFwiK1xuICAgIFwiU0VMRUNUIFJBSVNFKEFCT1JULCAndXBkYXRlIG9uIHRhYmxlIGdwa2dfbWV0YWRhdGFfcmVmZXJlbmNlIFwiK1xuICAgIFwidmlvbGF0ZXMgY29uc3RyYWludDogcmVmZXJyZW5jZV9zY29wZSBtdXN0IGJlIG9uZSBvZiBcXFwiZ2VvcGFja2FnZVxcXCIsIFwiK1xuICAgIFwiXFxcInRhYmxlXFxcIiwgXFxcImNvbHVtblxcXCIsIFxcXCJyb3dcXFwiLCBcXFwicm93L2NvbFxcXCInKSBcIitcbiAgICBcIldIRVJFIE5PVCBORVcucmVmZXJlbmNlX3Njb3BlIElOIFwiK1xuICAgIFwiKCdnZW9wYWNrYWdlJywndGFibGUnLCdjb2x1bW4nLCdyb3cnLCdyb3cvY29sJyk7IFwiK1xuICAgIFwiRU5EXCIsXG5cbiAgICBcIkNSRUFURSBUUklHR0VSICdncGtnX21ldGFkYXRhX3JlZmVyZW5jZV9jb2x1bW5fbmFtZV9pbnNlcnQnIFwiK1xuICAgIFwiQkVGT1JFIElOU0VSVCBPTiAnZ3BrZ19tZXRhZGF0YV9yZWZlcmVuY2UnIFwiK1xuICAgIFwiRk9SIEVBQ0ggUk9XIEJFR0lOIFwiK1xuICAgIFwiU0VMRUNUIFJBSVNFKEFCT1JULCAnaW5zZXJ0IG9uIHRhYmxlIGdwa2dfbWV0YWRhdGFfcmVmZXJlbmNlIFwiK1xuICAgIFwidmlvbGF0ZXMgY29uc3RyYWludDogY29sdW1uIG5hbWUgbXVzdCBiZSBOVUxMIHdoZW4gcmVmZXJlbmNlX3Njb3BlIFwiK1xuICAgIFwiaXMgXFxcImdlb3BhY2thZ2VcXFwiLCBcXFwidGFibGVcXFwiIG9yIFxcXCJyb3dcXFwiJykgXCIrXG4gICAgXCJXSEVSRSAoTkVXLnJlZmVyZW5jZV9zY29wZSBJTiAoJ2dlb3BhY2thZ2UnLCd0YWJsZScsJ3JvdycpIFwiK1xuICAgIFwiQU5EIE5FVy5jb2x1bW5fbmFtZSBJUyBOT1QgTlVMTCk7IFwiK1xuICAgIFwiU0VMRUNUIFJBSVNFKEFCT1JULCAnaW5zZXJ0IG9uIHRhYmxlIGdwa2dfbWV0YWRhdGFfcmVmZXJlbmNlIFwiK1xuICAgIFwidmlvbGF0ZXMgY29uc3RyYWludDogY29sdW1uIG5hbWUgbXVzdCBiZSBkZWZpbmVkIGZvciB0aGUgc3BlY2lmaWVkIFwiK1xuICAgIFwidGFibGUgd2hlbiByZWZlcmVuY2Vfc2NvcGUgaXMgXFxcImNvbHVtblxcXCIgb3IgXFxcInJvdy9jb2xcXFwiJykgXCIrXG4gICAgXCJXSEVSRSAoTkVXLnJlZmVyZW5jZV9zY29wZSBJTiAoJ2NvbHVtbicsJ3Jvdy9jb2wnKSBcIitcbiAgICBcIkFORCBOT1QgTkVXLnRhYmxlX25hbWUgSU4gKCBcIitcbiAgICBcIlNFTEVDVCBuYW1lIEZST00gU1FMSVRFX01BU1RFUiBXSEVSRSB0eXBlID0gJ3RhYmxlJyBcIitcbiAgICBcIkFORCBuYW1lID0gTkVXLnRhYmxlX25hbWUgXCIrXG4gICAgXCJBTkQgc3FsIExJS0UgKCclJyB8fCBORVcuY29sdW1uX25hbWUgfHwgJyUnKSkpOyBcIitcbiAgICBcIkVORFwiLFxuXG4gICAgXCJDUkVBVEUgVFJJR0dFUiAnZ3BrZ19tZXRhZGF0YV9yZWZlcmVuY2VfY29sdW1uX25hbWVfdXBkYXRlJyBcIitcbiAgICBcIkJFRk9SRSBVUERBVEUgT0YgY29sdW1uX25hbWUgT04gJ2dwa2dfbWV0YWRhdGFfcmVmZXJlbmNlJyBcIitcbiAgICBcIkZPUiBFQUNIIFJPVyBCRUdJTiBcIitcbiAgICBcIlNFTEVDVCBSQUlTRShBQk9SVCwgJ3VwZGF0ZSBvbiB0YWJsZSBncGtnX21ldGFkYXRhX3JlZmVyZW5jZSBcIitcbiAgICBcInZpb2xhdGVzIGNvbnN0cmFpbnQ6IGNvbHVtbiBuYW1lIG11c3QgYmUgTlVMTCB3aGVuIHJlZmVyZW5jZV9zY29wZSBcIitcbiAgICBcImlzIFxcXCJnZW9wYWNrYWdlXFxcIiwgXFxcInRhYmxlXFxcIiBvciBcXFwicm93XFxcIicpIFwiK1xuICAgIFwiV0hFUkUgKE5FVy5yZWZlcmVuY2Vfc2NvcGUgSU4gKCdnZW9wYWNrYWdlJywndGFibGUnLCdyb3cnKSBcIitcbiAgICBcIkFORCBORVcuY29sdW1uX25hbWVJUyBOT1QgTlVMTCk7IFwiK1xuICAgIFwiU0VMRUNUIFJBSVNFKEFCT1JULCAndXBkYXRlIG9uIHRhYmxlIGdwa2dfbWV0YWRhdGFfcmVmZXJlbmNlIFwiK1xuICAgIFwidmlvbGF0ZXMgY29uc3RyYWludDogY29sdW1uIG5hbWUgbXVzdCBiZSBkZWZpbmVkIGZvciB0aGUgc3BlY2lmaWVkIFwiK1xuICAgIFwidGFibGUgd2hlbiByZWZlcmVuY2Vfc2NvcGUgaXMgXFxcImNvbHVtblxcXCIgb3IgXFxcInJvdy9jb2xcXFwiJykgXCIrXG4gICAgXCJXSEVSRSAoTkVXLnJlZmVyZW5jZV9zY29wZSBJTiAoJ2NvbHVtbicsJ3Jvdy9jb2wnKSBcIitcbiAgICBcIkFORCBOT1QgTkVXLnRhYmxlX25hbWUgSU4gKCBcIitcbiAgICBcIlNFTEVDVCBuYW1lIEZST00gU1FMSVRFX01BU1RFUiBXSEVSRSB0eXBlID0gJ3RhYmxlJyBcIitcbiAgICBcIkFORCBuYW1lID0gTkVXLnRhYmxlX25hbWUgXCIrXG4gICAgXCJBTkQgc3FsIExJS0UgKCclJyB8fCBORVcuY29sdW1uX25hbWUgfHwgJyUnKSkpOyBcIitcbiAgICBcIkVORFwiLFxuXG4gICAgXCJDUkVBVEUgVFJJR0dFUiAnZ3BrZ19tZXRhZGF0YV9yZWZlcmVuY2Vfcm93X2lkX3ZhbHVlX2luc2VydCcgXCIrXG4gICAgXCJCRUZPUkUgSU5TRVJUIE9OICdncGtnX21ldGFkYXRhX3JlZmVyZW5jZScgXCIrXG4gICAgXCJGT1IgRUFDSCBST1cgQkVHSU4gXCIrXG4gICAgXCJTRUxFQ1QgUkFJU0UoQUJPUlQsICdpbnNlcnQgb24gdGFibGUgZ3BrZ19tZXRhZGF0YV9yZWZlcmVuY2UgXCIrXG4gICAgXCJ2aW9sYXRlcyBjb25zdHJhaW50OiByb3dfaWRfdmFsdWUgbXVzdCBiZSBOVUxMIHdoZW4gcmVmZXJlbmNlX3Njb3BlIFwiK1xuICAgIFwiaXMgXFxcImdlb3BhY2thZ2VcXFwiLCBcXFwidGFibGVcXFwiIG9yIFxcXCJjb2x1bW5cXFwiJykgXCIrXG4gICAgXCJXSEVSRSBORVcucmVmZXJlbmNlX3Njb3BlIElOICgnZ2VvcGFja2FnZScsJ3RhYmxlJywnY29sdW1uJykgXCIrXG4gICAgXCJBTkQgTkVXLnJvd19pZF92YWx1ZSBJUyBOT1QgTlVMTDsgXCIrXG4gICAgXCJTRUxFQ1QgUkFJU0UoQUJPUlQsICdpbnNlcnQgb24gdGFibGUgZ3BrZ19tZXRhZGF0YV9yZWZlcmVuY2UgXCIrXG4gICAgXCJ2aW9sYXRlcyBjb25zdHJhaW50OiByb3dfaWRfdmFsdWUgbXVzdCBleGlzdCBpbiBzcGVjaWZpZWQgdGFibGUgd2hlbiBcIitcbiAgICBcInJlZmVyZW5jZV9zY29wZSBpcyBcXFwicm93XFxcIiBvciBcXFwicm93L2NvbFxcXCInKSBcIitcbiAgICBcIldIRVJFIE5FVy5yZWZlcmVuY2Vfc2NvcGUgSU4gKCdyb3cnLCdyb3cvY29sJykgXCIrXG4gICAgXCJBTkQgTk9UIEVYSVNUUyAoU0VMRUNUIHJvd2lkIFwiK1xuICAgIFwiRlJPTSAoU0VMRUNUIE5FVy50YWJsZV9uYW1lIEFTIHRhYmxlX25hbWUpIFdIRVJFIHJvd2lkID0gXCIrXG4gICAgXCJORVcucm93X2lkX3ZhbHVlKTsgXCIrXG4gICAgXCJFTkRcIixcblxuICAgIFwiQ1JFQVRFIFRSSUdHRVIgJ2dwa2dfbWV0YWRhdGFfcmVmZXJlbmNlX3Jvd19pZF92YWx1ZV91cGRhdGUnIFwiK1xuICAgIFwiQkVGT1JFIFVQREFURSBPRiAncm93X2lkX3ZhbHVlJyBPTiAnZ3BrZ19tZXRhZGF0YV9yZWZlcmVuY2UnIFwiK1xuICAgIFwiRk9SIEVBQ0ggUk9XIEJFR0lOIFwiK1xuICAgIFwiU0VMRUNUIFJBSVNFKEFCT1JULCAndXBkYXRlIG9uIHRhYmxlIGdwa2dfbWV0YWRhdGFfcmVmZXJlbmNlIFwiK1xuICAgIFwidmlvbGF0ZXMgY29uc3RyYWludDogcm93X2lkX3ZhbHVlIG11c3QgYmUgTlVMTCB3aGVuIHJlZmVyZW5jZV9zY29wZSBcIitcbiAgICBcImlzIFxcXCJnZW9wYWNrYWdlXFxcIiwgXFxcInRhYmxlXFxcIiBvciBcXFwiY29sdW1uXFxcIicpIFwiK1xuICAgIFwiV0hFUkUgTkVXLnJlZmVyZW5jZV9zY29wZSBJTiAoJ2dlb3BhY2thZ2UnLCd0YWJsZScsJ2NvbHVtbicpIFwiK1xuICAgIFwiQU5EIE5FVy5yb3dfaWRfdmFsdWUgSVMgTk9UIE5VTEw7IFwiK1xuICAgIFwiU0VMRUNUIFJBSVNFKEFCT1JULCAndXBkYXRlIG9uIHRhYmxlIGdwa2dfbWV0YWRhdGFfcmVmZXJlbmNlIFwiK1xuICAgIFwidmlvbGF0ZXMgY29uc3RyYWludDogcm93X2lkX3ZhbHVlIG11c3QgZXhpc3QgaW4gc3BlY2lmaWVkIHRhYmxlIHdoZW4gXCIrXG4gICAgXCJyZWZlcmVuY2Vfc2NvcGUgaXMgXFxcInJvd1xcXCIgb3IgXFxcInJvdy9jb2xcXFwiJykgXCIrXG4gICAgXCJXSEVSRSBORVcucmVmZXJlbmNlX3Njb3BlIElOICgncm93Jywncm93L2NvbCcpIFwiK1xuICAgIFwiQU5EIE5PVCBFWElTVFMgKFNFTEVDVCByb3dpZCBcIitcbiAgICBcIkZST00gKFNFTEVDVCBORVcudGFibGVfbmFtZSBBUyB0YWJsZV9uYW1lKSBXSEVSRSByb3dpZCA9IFwiK1xuICAgIFwiTkVXLnJvd19pZF92YWx1ZSk7IFwiK1xuICAgIFwiRU5EXCIsXG5cbiAgICBcIkNSRUFURSBUUklHR0VSICdncGtnX21ldGFkYXRhX3JlZmVyZW5jZV90aW1lc3RhbXBfaW5zZXJ0JyBcIitcbiAgICBcIkJFRk9SRSBJTlNFUlQgT04gJ2dwa2dfbWV0YWRhdGFfcmVmZXJlbmNlJyBcIitcbiAgICBcIkZPUiBFQUNIIFJPVyBCRUdJTiBcIitcbiAgICBcIlNFTEVDVCBSQUlTRShBQk9SVCwgJ2luc2VydCBvbiB0YWJsZSBncGtnX21ldGFkYXRhX3JlZmVyZW5jZSBcIitcbiAgICBcInZpb2xhdGVzIGNvbnN0cmFpbnQ6IHRpbWVzdGFtcCBtdXN0IGJlIGEgdmFsaWQgdGltZSBpbiBJU08gODYwMSBcIitcbiAgICBcIlxcXCJ5eXl5LW1tLWRkVGhoOm1tOnNzLmNjY1pcXFwiIGZvcm0nKSBcIitcbiAgICBcIldIRVJFIE5PVCAoTkVXLnRpbWVzdGFtcCBHTE9CIFwiK1xuICAgIFwiJ1sxLTJdWzAtOV1bMC05XVswLTldLVswLTFdWzAtOV0tWzAtM11bMC05XVRbMC0yXVswLTldOlswLTVdWzAtOV06WzAtNV1bMC05XS5bMC05XVswLTldWzAtOV1aJyBcIitcbiAgICBcIkFORCBzdHJmdGltZSgnJXMnLE5FVy50aW1lc3RhbXApIE5PVCBOVUxMKTsgXCIrXG4gICAgXCJFTkRcIixcblxuICAgIFwiQ1JFQVRFIFRSSUdHRVIgJ2dwa2dfbWV0YWRhdGFfcmVmZXJlbmNlX3RpbWVzdGFtcF91cGRhdGUnIFwiK1xuICAgIFwiQkVGT1JFIFVQREFURSBPRiAndGltZXN0YW1wJyBPTiAnZ3BrZ19tZXRhZGF0YV9yZWZlcmVuY2UnIFwiK1xuICAgIFwiRk9SIEVBQ0ggUk9XIEJFR0lOIFwiK1xuICAgIFwiU0VMRUNUIFJBSVNFKEFCT1JULCAndXBkYXRlIG9uIHRhYmxlIGdwa2dfbWV0YWRhdGFfcmVmZXJlbmNlIFwiK1xuICAgIFwidmlvbGF0ZXMgY29uc3RyYWludDogdGltZXN0YW1wIG11c3QgYmUgYSB2YWxpZCB0aW1lIGluIElTTyA4NjAxIFwiK1xuICAgIFwiXFxcInl5eXktbW0tZGRUaGg6bW06c3MuY2NjWlxcXCIgZm9ybScpIFwiK1xuICAgIFwiV0hFUkUgTk9UIChORVcudGltZXN0YW1wIEdMT0IgXCIrXG4gICAgXCInWzEtMl1bMC05XVswLTldWzAtOV0tWzAtMV1bMC05XS1bMC0zXVswLTldVFswLTJdWzAtOV06WzAtNV1bMC05XTpbMC01XVswLTldLlswLTldWzAtOV1bMC05XVonIFwiK1xuICAgIFwiQU5EIHN0cmZ0aW1lKCclcycsTkVXLnRpbWVzdGFtcCkgTk9UIE5VTEwpOyBcIitcbiAgICBcIkVORCBcIlxuICBdLFxuICBleHRlbnNpb25zOiBbXG4gICAgJ0NSRUFURSBUQUJMRSBncGtnX2V4dGVuc2lvbnMgKCcrXG4gICAgJyAgdGFibGVfbmFtZSBURVhULCcrXG4gICAgJyAgY29sdW1uX25hbWUgVEVYVCwnK1xuICAgICcgIGV4dGVuc2lvbl9uYW1lIFRFWFQgTk9UIE5VTEwsJytcbiAgICAnICBkZWZpbml0aW9uIFRFWFQgTk9UIE5VTEwsJytcbiAgICAnICBzY29wZSBURVhUIE5PVCBOVUxMLCcrXG4gICAgJyAgQ09OU1RSQUlOVCBnZV90Y2UgVU5JUVVFICh0YWJsZV9uYW1lLCBjb2x1bW5fbmFtZSwgZXh0ZW5zaW9uX25hbWUpJytcbiAgICAnKSdcbiAgXSxcbiAgdGFibGVfaW5kZXg6IFtcbiAgICAnQ1JFQVRFIFRBQkxFIG5nYV90YWJsZV9pbmRleCAoJytcbiAgICAnICB0YWJsZV9uYW1lIFRFWFQgTk9UIE5VTEwgUFJJTUFSWSBLRVksJytcbiAgICAnICBsYXN0X2luZGV4ZWQgREFURVRJTUUnK1xuICAgICcpJ1xuICBdLFxuICBnZW9tZXRyeV9pbmRleDogW1xuICAgICdDUkVBVEUgVEFCTEUgbmdhX2dlb21ldHJ5X2luZGV4ICgnK1xuICAgICcgIHRhYmxlX25hbWUgVEVYVCBOT1QgTlVMTCwnK1xuICAgICcgIGdlb21faWQgSU5URUdFUiBOT1QgTlVMTCwnK1xuICAgICcgIG1pbl94IERPVUJMRSBOT1QgTlVMTCwnK1xuICAgICcgIG1heF94IERPVUJMRSBOT1QgTlVMTCwnK1xuICAgICcgIG1pbl95IERPVUJMRSBOT1QgTlVMTCwnK1xuICAgICcgIG1heF95IERPVUJMRSBOT1QgTlVMTCwnK1xuICAgICcgIG1pbl96IERPVUJMRSwnK1xuICAgICcgIG1heF96IERPVUJMRSwnK1xuICAgICcgIG1pbl9tIERPVUJMRSwnK1xuICAgICcgIG1heF9tIERPVUJMRSwnK1xuICAgICcgIENPTlNUUkFJTlQgcGtfbmdpIFBSSU1BUlkgS0VZICh0YWJsZV9uYW1lLCBnZW9tX2lkKSwnK1xuICAgICcgIENPTlNUUkFJTlQgZmtfbmdpX250aV90biBGT1JFSUdOIEtFWSAodGFibGVfbmFtZSkgUkVGRVJFTkNFUyBuZ2FfdGFibGVfaW5kZXgodGFibGVfbmFtZSknK1xuICAgICcpJ1xuICBdLFxuICBmZWF0dXJlX3RpbGVfbGluazogW1xuICAgICdDUkVBVEUgVEFCTEUgbmdhX2ZlYXR1cmVfdGlsZV9saW5rICgnK1xuICAgICcgIGZlYXR1cmVfdGFibGVfbmFtZSBURVhUIE5PVCBOVUxMLCcrXG4gICAgJyAgdGlsZV90YWJsZV9uYW1lIFRFWFQgTk9UIE5VTEwsJytcbiAgICAnICBDT05TVFJBSU5UIHBrX25mdGwgUFJJTUFSWSBLRVkgKGZlYXR1cmVfdGFibGVfbmFtZSwgdGlsZV90YWJsZV9uYW1lKScrXG4gICAgJyknXG4gIF1cbn07XG4iLCJ2YXIgRXh0ZW5zaW9uID0gcmVxdWlyZSgnLi9pbmRleCcpLkV4dGVuc2lvblxuICAsIEV4dGVuc2lvbkRhbyA9IHJlcXVpcmUoJy4vaW5kZXgnKS5FeHRlbnNpb25EYW87XG4vKipcbiAqIEFic3RyYWN0IGJhc2UgR2VvUGFja2FnZSBleHRlbnNpb25cbiAqL1xudmFyIEJhc2VFeHRlbnNpb24gPSBmdW5jdGlvbihjb25uZWN0aW9uKSB7XG4gIHRoaXMuY29ubmVjdGlvbiA9IGNvbm5lY3Rpb247XG4gIHRoaXMuZXh0ZW5zaW9uc0RhbyA9IG5ldyBFeHRlbnNpb25EYW8oY29ubmVjdGlvbik7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gQmFzZUV4dGVuc2lvbjtcblxuLyoqXG4gKiBHZXQgdGhlIGV4dGVuc2lvbiBvciBjcmVhdGUgYXMgbmVlZGVkXG4gKiBAcGFyYW0gIHtTdHJpbmd9ICAgZXh0ZW5zaW9uTmFtZSBleHRlbnNpb24gbmFtZVxuICogQHBhcmFtICB7U3RyaW5nfSAgIHRhYmxlTmFtZSAgICAgdGFibGUgbmFtZVxuICogQHBhcmFtICB7U3RyaW5nfSAgIGNvbHVtbk5hbWUgICAgY29sdW1uIG5hbWVcbiAqIEBwYXJhbSAge1N0cmluZ30gICBkZWZpbml0aW9uICAgIGV4dGVuc2lvbiBkZWZpbml0aW9uXG4gKiBAcGFyYW0gIHtTdHJpbmd9ICAgc2NvcGVUeXBlICAgICBleHRlbnNpb24gc2NvcGUgdHlwZVxuICogQHBhcmFtICB7RnVuY3Rpb259IGNhbGxiYWNrICAgICAgY2FsbGVkIHdpdGggZXJyIGlmIG9uZSBvY2N1cnJlZCBhbmQgdGhlIGV4dGVuc2lvblxuICovXG5CYXNlRXh0ZW5zaW9uLnByb3RvdHlwZS5nZXRPckNyZWF0ZSA9IGZ1bmN0aW9uKGV4dGVuc2lvbk5hbWUsIHRhYmxlTmFtZSwgY29sdW1uTmFtZSwgZGVmaW5pdGlvbiwgc2NvcGVUeXBlLCBjYWxsYmFjaykge1xuICB0aGlzLmdldEV4dGVuc2lvbihleHRlbnNpb25OYW1lLCB0YWJsZU5hbWUsIGNvbHVtbk5hbWUsIGZ1bmN0aW9uKGVyciwgZXh0ZW5zaW9uKSB7XG4gICAgaWYgKGV4dGVuc2lvbikge1xuICAgICAgcmV0dXJuIGNhbGxiYWNrKGVyciwgZXh0ZW5zaW9uKTtcbiAgICB9XG4gICAgdGhpcy5leHRlbnNpb25zRGFvLmlzVGFibGVFeGlzdHMoZnVuY3Rpb24oZXJyLCBleGlzdHMpIHtcbiAgICAgIGlmICghZXhpc3RzKSB7XG4gICAgICAgIHRoaXMuZXh0ZW5zaW9uc0Rhby5jcmVhdGVUYWJsZShmdW5jdGlvbigpIHtcblxuICAgICAgICAgIHRoaXMuY3JlYXRlRXh0ZW5zaW9uKGV4dGVuc2lvbk5hbWUsIHRhYmxlTmFtZSwgY29sdW1uTmFtZSwgZGVmaW5pdGlvbiwgc2NvcGVUeXBlLCBjYWxsYmFjayk7XG4gICAgICAgIH0uYmluZCh0aGlzKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmNyZWF0ZUV4dGVuc2lvbihleHRlbnNpb25OYW1lLCB0YWJsZU5hbWUsIGNvbHVtbk5hbWUsIGRlZmluaXRpb24sIHNjb3BlVHlwZSwgY2FsbGJhY2spO1xuICAgICAgfVxuICAgIH0uYmluZCh0aGlzKSk7XG4gIH0uYmluZCh0aGlzKSk7XG59O1xuXG4vKipcbiAqIEdldCB0aGUgZXh0ZW5zaW9uIGZvciB0aGUgbmFtZSwgdGFibGUgbmFtZSBhbmQgY29sdW1uIG5hbWVcbiAqIEBwYXJhbSAge1N0cmluZ30gICBleHRlbnNpb25OYW1lIGV4dGVuc2lvbiBuYW1lXG4gKiBAcGFyYW0gIHtTdHJpbmd9ICAgdGFibGVOYW1lICAgICB0YWJsZSBuYW1lXG4gKiBAcGFyYW0gIHtTdHJpbmd9ICAgY29sdW1uTmFtZSAgICBjb2x1bW4gbmFtZVxuICogQHBhcmFtICB7RnVuY3Rpb259IGNhbGxiYWNrICAgICAgQ2FsbGVkIHdpdGggZXJyIGlmIG9uZSBvY2N1cnJlZCBhbmQgdGhlIGV4dGVuc2lvblxuICovXG5CYXNlRXh0ZW5zaW9uLnByb3RvdHlwZS5nZXRFeHRlbnNpb24gPSBmdW5jdGlvbihleHRlbnNpb25OYW1lLCB0YWJsZU5hbWUsIGNvbHVtbk5hbWUsIGNhbGxiYWNrKSB7XG4gIHRoaXMuZXh0ZW5zaW9uc0Rhby5pc1RhYmxlRXhpc3RzKGZ1bmN0aW9uKGVyciwgZXhpc3RzKSB7XG4gICAgaWYgKCFleGlzdHMpIHtcbiAgICAgIHJldHVybiBjYWxsYmFjaygpO1xuICAgIH1cbiAgICB0aGlzLmV4dGVuc2lvbnNEYW8ucXVlcnlCeUV4dGVuc2lvbkFuZFRhYmxlTmFtZUFuZENvbHVtbk5hbWUoZXh0ZW5zaW9uTmFtZSwgdGFibGVOYW1lLCBjb2x1bW5OYW1lLCBjYWxsYmFjayk7XG4gIH0uYmluZCh0aGlzKSk7XG59O1xuXG4vKipcbiAqIERldGVybWluZSBpZiB0aGUgR2VvUGFja2FnZSBoYXMgdGhlIGV4dGVuc2lvblxuICogQHBhcmFtICB7U3RyaW5nfSAgIGV4dGVuc2lvbk5hbWUgZXh0ZW5zaW9uIG5hbWVcbiAqIEBwYXJhbSAge1N0cmluZ30gICB0YWJsZU5hbWUgICAgIHRhYmxlIG5hbWVcbiAqIEBwYXJhbSAge1N0cmluZ30gICBjb2x1bW5OYW1lICAgIGNvbHVtbiBuYW1lXG4gKiBAcGFyYW0gIHtGdW5jdGlvbn0gY2FsbGJhY2sgICAgICBjYWxsZWQgd2l0aCBlcnIgaWYgb25lIG9jY3VycmVkIGFuZCBhIHRydWUgb3IgZmFsc2UgaW5kaWNhdGluZyB0aGUgZXhpc3RlbmNlIG9mIHRoZSBleHRlbnNpb25cbiAqL1xuQmFzZUV4dGVuc2lvbi5wcm90b3R5cGUuaGFzRXh0ZW5zaW9uID0gZnVuY3Rpb24oZXh0ZW5zaW9uTmFtZSwgdGFibGVOYW1lLCBjb2x1bW5OYW1lLCBjYWxsYmFjaykge1xuXG59O1xuXG5CYXNlRXh0ZW5zaW9uLnByb3RvdHlwZS5jcmVhdGVFeHRlbnNpb24gPSBmdW5jdGlvbihleHRlbnNpb25OYW1lLCB0YWJsZU5hbWUsIGNvbHVtbk5hbWUsIGRlZmluaXRpb24sIHNjb3BlVHlwZSwgY2FsbGJhY2spIHtcbiAgdmFyIGV4dGVuc2lvbiA9IG5ldyBFeHRlbnNpb24oKTtcbiAgZXh0ZW5zaW9uLnRhYmxlX25hbWUgPSB0YWJsZU5hbWU7XG4gIGV4dGVuc2lvbi5jb2x1bW5fbmFtZSA9IGNvbHVtbk5hbWU7XG4gIGV4dGVuc2lvbi5leHRlbnNpb25fbmFtZSA9IGV4dGVuc2lvbk5hbWU7XG4gIGV4dGVuc2lvbi5kZWZpbml0aW9uID0gZGVmaW5pdGlvbjtcbiAgZXh0ZW5zaW9uLnNjb3BlID0gc2NvcGVUeXBlO1xuICB0aGlzLmV4dGVuc2lvbnNEYW8uY3JlYXRlKGV4dGVuc2lvbiwgY2FsbGJhY2spO1xufTtcbiIsIi8qKlxuICogTWV0YWRhdGEgbW9kdWxlLlxuICogQG1vZHVsZSBtZXRhZGF0YVxuICogQHNlZSBtb2R1bGU6ZGFvL2Rhb1xuICovXG5cbnZhciBEYW8gPSByZXF1aXJlKCcuLi9kYW8vZGFvJylcbiAgLCBDb2x1bW5WYWx1ZXMgPSByZXF1aXJlKCcuLi9kYW8vY29sdW1uVmFsdWVzJylcbiAgLCBUYWJsZUNyZWF0b3IgPSByZXF1aXJlKCcuLi9kYi90YWJsZUNyZWF0b3InKTtcblxudmFyIHV0aWwgPSByZXF1aXJlKCd1dGlsJyk7XG5cbi8qKlxuICAqIEluZGljYXRlcyB0aGF0IGEgcGFydGljdWxhciBleHRlbnNpb24gYXBwbGllcyB0byBhIEdlb1BhY2thZ2UsIGEgdGFibGUgaW4gYVxuICAqIEdlb1BhY2thZ2Ugb3IgYSBjb2x1bW4gb2YgYSB0YWJsZSBpbiBhIEdlb1BhY2thZ2UuIEFuIGFwcGxpY2F0aW9uIHRoYXQgYWNjZXNzXG4gICogYSBHZW9QYWNrYWdlIGNhbiBxdWVyeSB0aGUgZ3BrZ19leHRlbnNpb25zIHRhYmxlIGluc3RlYWQgb2YgdGhlIGNvbnRlbnRzIG9mXG4gICogYWxsIHRoZSB1c2VyIGRhdGEgdGFibGVzIHRvIGRldGVybWluZSBpZiBpdCBoYXMgdGhlIHJlcXVpcmVkIGNhcGFiaWxpdGllcyB0b1xuICAqIHJlYWQgb3Igd3JpdGUgdG8gdGFibGVzIHdpdGggZXh0ZW5zaW9ucywgYW5kIHRvIOKAnGZhaWwgZmFzdOKAnSBhbmQgcmV0dXJuIGFuXG4gICogZXJyb3IgbWVzc2FnZSBpZiBpdCBkb2VzIG5vdC5cbiAqIEBjbGFzcyBFeHRlbnNpb25cbiAqL1xudmFyIEV4dGVuc2lvbiA9IGZ1bmN0aW9uKCkge1xuXG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSB0YWJsZSB0aGF0IHJlcXVpcmVzIHRoZSBleHRlbnNpb24uIFdoZW4gTlVMTCwgdGhlIGV4dGVuc2lvblxuICAgKiBpcyByZXF1aXJlZCBmb3IgdGhlIGVudGlyZSBHZW9QYWNrYWdlLiBTSEFMTCBOT1QgYmUgTlVMTCB3aGVuIHRoZVxuICAgKiBjb2x1bW5fbmFtZSBpcyBub3QgTlVMTC5cbiAgICogQG1lbWJlciB7U3RyaW5nfVxuICAgKi9cbiAgdGhpcy50YWJsZV9uYW1lO1xuXG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBjb2x1bW4gdGhhdCByZXF1aXJlcyB0aGUgZXh0ZW5zaW9uLiBXaGVuIE5VTEwsIHRoZSBleHRlbnNpb25cbiAgICogaXMgcmVxdWlyZWQgZm9yIHRoZSBlbnRpcmUgdGFibGUuXG4gICAqIEBtZW1iZXIge1N0cmluZ31cbiAgICovXG4gIHRoaXMuY29sdW1uX25hbWU7XG5cbiAgLyoqXG4gICAqIFRoZSBjYXNlIHNlbnNpdGl2ZSBuYW1lIG9mIHRoZSBleHRlbnNpb24gdGhhdCBpcyByZXF1aXJlZCwgaW4gdGhlIGZvcm1cbiAgICogPGF1dGhvcj5fPGV4dGVuc2lvbl9uYW1lPi5cbiAgICogQG1lbWJlciB7U3RyaW5nfVxuICAgKi9cbiAgdGhpcy5leHRlbnNpb25fbmFtZTtcblxuICAvKipcbiAgICogRGVmaW5pdGlvbiBvZiB0aGUgZXh0ZW5zaW9uIGluIHRoZSBmb3JtIHNwZWNmaWVkIGJ5IHRoZSB0ZW1wbGF0ZSBpblxuICAgKiBHZW9QYWNrYWdlIEV4dGVuc2lvbiBUZW1wbGF0ZSAoTm9ybWF0aXZlKSBvciByZWZlcmVuY2UgdGhlcmV0by5cbiAgICogQG1lbWJlciB7U3RyaW5nfVxuICAgKi9cbiAgdGhpcy5kZWZpbml0aW9uO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgc2NvcGUgb2YgZXh0ZW5zaW9uIGVmZmVjdHMgb24gcmVhZGVycyAvIHdyaXRlcnM6IHJlYWQtd3JpdGUgb3JcbiAgICogd3JpdGUtb25seSBpbiBsb3dlcmNhc2UuXG4gICAqIEBtZW1iZXIge1N0cmluZ31cbiAgICovXG4gIHRoaXMuc2NvcGU7XG59XG5cbkV4dGVuc2lvbi5FWFRFTlNJT05fTkFNRV9ESVZJREVSID0gXCJfXCI7XG5cbkV4dGVuc2lvbi5SRUFEX1dSSVRFID0gXCJyZWFkLXdyaXRlXCI7XG5FeHRlbnNpb24uV1JJVEVfT05MWSA9IFwid3JpdGUtb25seVwiO1xuXG5FeHRlbnNpb24ucHJvdG90eXBlLnNldEV4dGVuc2lvbk5hbWUgPSBmdW5jdGlvbihhdXRob3IsIGV4dGVuc2lvbk5hbWUpIHtcbiAgdGhpcy5leHRlbnNpb25fbmFtZSA9IEV4dGVuc2lvbi5idWlsZEV4dGVuc2lvbk5hbWUoYXV0aG9yLCBleHRlbnNpb25OYW1lKTtcbn07XG5cbkV4dGVuc2lvbi5wcm90b3R5cGUuZ2V0QXV0aG9yID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiBFeHRlbnNpb24uZ2V0QXV0aG9yV2l0aEV4dGVuc2lvbk5hbWUodGhpcy5leHRlbnNpb25fbmFtZSk7XG59XG5cbkV4dGVuc2lvbi5wcm90b3R5cGUuZ2V0RXh0ZW5zaW9uTmFtZU5vQXV0aG9yID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiBFeHRlbnNpb24uZ2V0RXh0ZW5zaW9uTmFtZU5vQXV0aG9yKHRoaXMuZXh0ZW5zaW9uX25hbWUpO1xufVxuXG5FeHRlbnNpb24uYnVpbGRFeHRlbnNpb25OYW1lID0gZnVuY3Rpb24oYXV0aG9yLCBleHRlbnNpb25OYW1lKSB7XG4gIHJldHVybiBhdXRob3IgKyBFeHRlbnNpb24uRVhURU5TSU9OX05BTUVfRElWSURFUiArIGV4dGVuc2lvbk5hbWU7XG59XG5cbkV4dGVuc2lvbi5nZXRBdXRob3JXaXRoRXh0ZW5zaW9uTmFtZSA9IGZ1bmN0aW9uKGV4dGVuc2lvbk5hbWUpIHtcbiAgcmV0dXJuIGV4dGVuc2lvbk5hbWUuc3BsaXQoRXh0ZW5zaW9uLkVYVEVOU0lPTl9OQU1FX0RJVklERVIpWzBdO1xufVxuXG5FeHRlbnNpb24uZ2V0RXh0ZW5zaW9uTmFtZU5vQXV0aG9yID0gZnVuY3Rpb24oZXh0ZW5zaW9uTmFtZSkge1xuICB2YXIgc3BsaXQgPSBleHRlbnNpb25OYW1lLnNwbGl0KEV4dGVuc2lvbi5FWFRFTlNJT05fTkFNRV9ESVZJREVSKTtcbiAgcmV0dXJuIHNwbGl0W3NwbGl0Lmxlbmd0aC0xXTtcbn1cblxuLyoqXG4gKiBFeHRlbnNpb24gRGF0YSBBY2Nlc3MgT2JqZWN0XG4gKiBAY2xhc3NcbiAqIEBleHRlbmRzIHttb2R1bGU6ZGFvL2Rhb35EYW99XG4gKi9cbnZhciBFeHRlbnNpb25EYW8gPSBmdW5jdGlvbihjb25uZWN0aW9uKSB7XG4gIERhby5jYWxsKHRoaXMsIGNvbm5lY3Rpb24pO1xufTtcblxudXRpbC5pbmhlcml0cyhFeHRlbnNpb25EYW8sIERhbyk7XG5cbkV4dGVuc2lvbkRhby5wcm90b3R5cGUuY3JlYXRlT2JqZWN0ID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiBuZXcgRXh0ZW5zaW9uKCk7XG59O1xuXG5FeHRlbnNpb25EYW8ucHJvdG90eXBlLnF1ZXJ5QnlFeHRlbnNpb24gPSBmdW5jdGlvbihleHRlbnNpb25OYW1lLCBjYWxsYmFjaykge1xuICB0aGlzLnF1ZXJ5Rm9yRXFXaXRoRmllbGRBbmRWYWx1ZShFeHRlbnNpb25EYW8uQ09MVU1OX0VYVEVOU0lPTl9OQU1FLCBleHRlbnNpb25OYW1lLCBjYWxsYmFjayk7XG59XG5cbkV4dGVuc2lvbkRhby5wcm90b3R5cGUucXVlcnlCeUV4dGVuc2lvbkFuZFRhYmxlTmFtZSA9IGZ1bmN0aW9uKGV4dGVuc2lvbk5hbWUsIHRhYmxlTmFtZSwgcm93Q2FsbGJhY2ssIGNhbGxiYWNrKSB7XG4gIHZhciB2YWx1ZXMgPSBuZXcgQ29sdW1uVmFsdWVzKCk7XG4gIHZhbHVlcy5hZGRDb2x1bW4oRXh0ZW5zaW9uRGFvLkNPTFVNTl9FWFRFTlNJT05fTkFNRSwgZXh0ZW5zaW9uTmFtZSk7XG4gIHZhbHVlcy5hZGRDb2x1bW4oRXh0ZW5zaW9uRGFvLkNPTFVNTl9UQUJMRV9OQU1FLCB0YWJsZU5hbWUpO1xuICB0aGlzLnF1ZXJ5Rm9yRmllbGRWYWx1ZXModmFsdWVzLCByb3dDYWxsYmFjaywgY2FsbGJhY2spO1xufVxuXG5FeHRlbnNpb25EYW8ucHJvdG90eXBlLnF1ZXJ5QnlFeHRlbnNpb25BbmRUYWJsZU5hbWVBbmRDb2x1bW5OYW1lID0gZnVuY3Rpb24gKGV4dGVuc2lvbk5hbWUsIHRhYmxlTmFtZSwgY29sdW1uTmFtZSwgcm93Q2FsbGJhY2ssIGNhbGxiYWNrKSB7XG4gIHZhciB2YWx1ZXMgPSBuZXcgQ29sdW1uVmFsdWVzKCk7XG4gIHZhbHVlcy5hZGRDb2x1bW4oRXh0ZW5zaW9uRGFvLkNPTFVNTl9FWFRFTlNJT05fTkFNRSwgZXh0ZW5zaW9uTmFtZSk7XG4gIHZhbHVlcy5hZGRDb2x1bW4oRXh0ZW5zaW9uRGFvLkNPTFVNTl9UQUJMRV9OQU1FLCB0YWJsZU5hbWUpO1xuICB2YWx1ZXMuYWRkQ29sdW1uKEV4dGVuc2lvbkRhby5DT0xVTU5fQ09MVU1OX05BTUUsIGNvbHVtbk5hbWUpO1xuICB0aGlzLnF1ZXJ5Rm9yRmllbGRWYWx1ZXModmFsdWVzLCByb3dDYWxsYmFjaywgY2FsbGJhY2spO1xufTtcblxuRXh0ZW5zaW9uRGFvLnByb3RvdHlwZS5jcmVhdGVUYWJsZSA9IGZ1bmN0aW9uKGNhbGxiYWNrKSB7XG4gIHZhciB0YyA9IG5ldyBUYWJsZUNyZWF0b3IodGhpcy5jb25uZWN0aW9uKTtcbiAgdGMuY3JlYXRlRXh0ZW5zaW9ucyhjYWxsYmFjayk7XG59XG5cbkV4dGVuc2lvbkRhby5UQUJMRV9OQU1FID0gXCJncGtnX2V4dGVuc2lvbnNcIjtcbkV4dGVuc2lvbkRhby5DT0xVTU5fVEFCTEVfTkFNRSA9IFwidGFibGVfbmFtZVwiO1xuRXh0ZW5zaW9uRGFvLkNPTFVNTl9DT0xVTU5fTkFNRSA9IFwiY29sdW1uX25hbWVcIjtcbkV4dGVuc2lvbkRhby5DT0xVTU5fRVhURU5TSU9OX05BTUUgPSBcImV4dGVuc2lvbl9uYW1lXCI7XG5FeHRlbnNpb25EYW8uQ09MVU1OX0RFRklOSVRJT04gPSBcImRlZmluaXRpb25cIjtcbkV4dGVuc2lvbkRhby5DT0xVTU5fU0NPUEUgPSBcInNjb3BlXCI7XG5cbkV4dGVuc2lvbkRhby5wcm90b3R5cGUuZ3BrZ1RhYmxlTmFtZSA9IEV4dGVuc2lvbkRhby5UQUJMRV9OQU1FO1xuRXh0ZW5zaW9uRGFvLnByb3RvdHlwZS5pZENvbHVtbnMgPSBbRXh0ZW5zaW9uRGFvLkNPTFVNTl9UQUJMRV9OQU1FLCBFeHRlbnNpb25EYW8uQ09MVU1OX0NPTFVNTl9OQU1FLCBFeHRlbnNpb25EYW8uQ09MVU1OX0VYVEVOU0lPTl9OQU1FXTtcblxubW9kdWxlLmV4cG9ydHMuRXh0ZW5zaW9uRGFvID0gRXh0ZW5zaW9uRGFvO1xubW9kdWxlLmV4cG9ydHMuRXh0ZW5zaW9uID0gRXh0ZW5zaW9uO1xuIiwiXG52YXIgRXh0ZW5zaW9uID0gcmVxdWlyZSgnLi4vaW5kZXgnKS5FeHRlbnNpb25cbiAgLCBFeHRlbnNpb25EYW8gPSByZXF1aXJlKCcuLi9pbmRleCcpLkV4dGVuc2lvbkRhb1xuICAsIEJhc2VFeHRlbnNpb24gPSByZXF1aXJlKCcuLi9iYXNlRXh0ZW5zaW9uJylcbiAgLCBUYWJsZUluZGV4RGFvID0gcmVxdWlyZSgnLi90YWJsZUluZGV4JykuVGFibGVJbmRleERhb1xuICAsIFRhYmxlSW5kZXggPSByZXF1aXJlKCcuL3RhYmxlSW5kZXgnKS5UYWJsZUluZGV4XG4gICwgR2VvbWV0cnlJbmRleERhbyA9IHJlcXVpcmUoJy4vZ2VvbWV0cnlJbmRleCcpLkdlb21ldHJ5SW5kZXhEYW9cbiAgLCBDb250ZW50c0RhbyA9IHJlcXVpcmUoJy4uLy4uL2NvcmUvY29udGVudHMnKS5Db250ZW50c0Rhb1xuICAsIEVudmVsb3BlQnVpbGRlciA9IHJlcXVpcmUoJy4uLy4uL2dlb20vZW52ZWxvcGVCdWlsZGVyJyk7XG5cbnZhciB1dGlsID0gcmVxdWlyZSgndXRpbCcpO1xuXG4vKipcbiAqIEZlYXR1cmUgVGFibGUgSW5kZXggTkdBIEV4dGVuc2lvbiBpbXBsZW1lbnRhdGlvbi4gVGhpcyBleHRlbnNpb24gaXMgdXNlZCB0b1xuICogaW5kZXggR2VvbWV0cmllcyB3aXRoaW4gYSBmZWF0dXJlIHRhYmxlIGJ5IHRoZWlyIG1pbmltdW0gYm91bmRpbmcgYm94IGZvclxuICogYm91bmRpbmcgYm94IHF1ZXJpZXMuIFRoaXMgZXh0ZW5zaW9uIGlzIHJlcXVpcmVkIHRvIHByb3ZpZGUgYW4gaW5kZXhcbiAqIGltcGxlbWVudGF0aW9uIHdoZW4gYSBTUUxpdGUgdmVyc2lvbiBpcyB1c2VkIGJlZm9yZSBTcGF0aWFsTGl0ZSBzdXBwb3J0XG4gKiAoaU9TKS5cbiAqL1xudmFyIEZlYXR1cmVUYWJsZUluZGV4ID0gZnVuY3Rpb24oY29ubmVjdGlvbiwgZmVhdHVyZURhbykge1xuXG4gIC8qKlxuICAgKiBQcm9ncmVzc1xuICAgKi9cbiAgdGhpcy5wcm9ncmVzcztcblxuICB0aGlzLmNvbm5lY3Rpb24gPSBjb25uZWN0aW9uO1xuXG4gIHRoaXMuZmVhdHVyZURhbyA9IGZlYXR1cmVEYW87XG5cbiAgdGhpcy5leHRlbnNpb25OYW1lID0gRXh0ZW5zaW9uLmJ1aWxkRXh0ZW5zaW9uTmFtZShGZWF0dXJlVGFibGVJbmRleC5FWFRFTlNJT05fR0VPTUVUUllfSU5ERVhfQVVUSE9SLCBGZWF0dXJlVGFibGVJbmRleC5FWFRFTlNJT05fR0VPTUVUUllfSU5ERVhfTkFNRV9OT19BVVRIT1IpO1xuXG4gIHRoaXMuZXh0ZW5zaW9uRGVmaW5pdGlvbiA9IEZlYXR1cmVUYWJsZUluZGV4LkVYVEVOU0lPTl9HRU9NRVRSWV9JTkRFWF9ERUZJTklUSU9OO1xuXG4gIHRoaXMudGFibGVOYW1lID0gZmVhdHVyZURhby50YWJsZV9uYW1lO1xuXG4gIHRoaXMuY29sdW1uTmFtZSA9IGZlYXR1cmVEYW8uZ2V0R2VvbWV0cnlDb2x1bW5OYW1lKCk7XG5cbiAgdGhpcy5leHRlbnNpb25zRGFvID0gbmV3IEV4dGVuc2lvbkRhbyhjb25uZWN0aW9uKTtcblxuICB0aGlzLnRhYmxlSW5kZXhEYW8gPSBuZXcgVGFibGVJbmRleERhbyhjb25uZWN0aW9uKTtcblxuICB0aGlzLmdlb21ldHJ5SW5kZXhEYW8gPSBuZXcgR2VvbWV0cnlJbmRleERhbyhjb25uZWN0aW9uKTtcblxufVxuXG51dGlsLmluaGVyaXRzKEZlYXR1cmVUYWJsZUluZGV4LCBCYXNlRXh0ZW5zaW9uKTtcblxuRmVhdHVyZVRhYmxlSW5kZXgucHJvdG90eXBlLmluZGV4ID0gZnVuY3Rpb24ocHJvZ3Jlc3NDYWxsYmFjaywgY2FsbGJhY2spIHtcbiAgdGhpcy5pbmRleFdpdGhGb3JjZShmYWxzZSwgcHJvZ3Jlc3NDYWxsYmFjaywgY2FsbGJhY2spO1xufTtcblxuRmVhdHVyZVRhYmxlSW5kZXgucHJvdG90eXBlLmluZGV4V2l0aEZvcmNlID0gZnVuY3Rpb24oZm9yY2UsIHByb2dyZXNzQ2FsbGJhY2ssIGNhbGxiYWNrKSB7XG4gIHRoaXMuaXNJbmRleGVkKGZ1bmN0aW9uKGVyciwgaW5kZXhlZCkge1xuICAgIGlmIChlcnIpIHJldHVybiBjYWxsYmFjayhlcnIpO1xuICAgIGlmIChmb3JjZSB8fCAhaW5kZXhlZCkge1xuICAgICAgdGhpcy5nZXRPckNyZWF0ZUV4dGVuc2lvbihmdW5jdGlvbihlcnIpIHtcbiAgICAgICAgaWYgKGVycikgcmV0dXJuIGNhbGxiYWNrKGVycik7XG4gICAgICAgIHRoaXMuZ2V0T3JDcmVhdGVUYWJsZUluZGV4KGZ1bmN0aW9uKGVyciwgdGFibGVJbmRleCkge1xuICAgICAgICAgIHRoaXMuY3JlYXRlT3JDbGVhckdlb21ldHJ5SW5kaWNpZXMoZnVuY3Rpb24oZXJyKSB7XG4gICAgICAgICAgICB0aGlzLmluZGV4VGFibGUodGFibGVJbmRleCwgcHJvZ3Jlc3NDYWxsYmFjaywgY2FsbGJhY2spO1xuICAgICAgICAgIH0uYmluZCh0aGlzKSk7XG4gICAgICAgIH0uYmluZCh0aGlzKSk7XG4gICAgICB9LmJpbmQodGhpcykpO1xuICAgIH1cbiAgfS5iaW5kKHRoaXMpKTtcbn1cblxuRmVhdHVyZVRhYmxlSW5kZXgucHJvdG90eXBlLmlzSW5kZXhlZCA9IGZ1bmN0aW9uIChjYWxsYmFjaykge1xuICB0aGlzLmdldEZlYXR1cmVUYWJsZUluZGV4RXh0ZW5zaW9uKGZ1bmN0aW9uKGVyciwgcmVzdWx0KSB7XG4gICAgaWYgKHJlc3VsdCkge1xuICAgICAgdmFyIGNvbnRlbnRzRGFvID0gbmV3IENvbnRlbnRzRGFvKHRoaXMuY29ubmVjdGlvbik7XG4gICAgICBjb250ZW50c0Rhby5xdWVyeUZvcklkT2JqZWN0KHRoaXMudGFibGVOYW1lLCBmdW5jdGlvbihlcnIsIGNvbnRlbnRzKSB7XG4gICAgICAgIGlmICghY29udGVudHMpIHJldHVybiBjYWxsYmFjayhudWxsLCBmYWxzZSk7XG4gICAgICAgIHZhciBsYXN0Q2hhbmdlID0gbmV3IERhdGUoY29udGVudHMubGFzdF9jaGFuZ2UpO1xuICAgICAgICB0aGlzLnRhYmxlSW5kZXhEYW8ucXVlcnlGb3JJZE9iamVjdCh0aGlzLnRhYmxlTmFtZSwgZnVuY3Rpb24oZXJyLCB0YWJsZUluZGV4KSB7XG4gICAgICAgICAgaWYgKCF0YWJsZUluZGV4IHx8ICF0YWJsZUluZGV4Lmxhc3RfaW5kZXhlZCkge1xuICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKG51bGwsIGZhbHNlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdmFyIGxhc3RJbmRleGVkID0gbmV3IERhdGUodGFibGVJbmRleC5sYXN0X2luZGV4ZWQpO1xuICAgICAgICAgIGNhbGxiYWNrKG51bGwsIGxhc3RJbmRleGVkID49IGxhc3RDaGFuZ2UpO1xuICAgICAgICB9KTtcbiAgICAgIH0uYmluZCh0aGlzKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBjYWxsYmFjayhudWxsLCBmYWxzZSk7XG4gICAgfVxuICB9LmJpbmQodGhpcykpO1xufTtcblxuRmVhdHVyZVRhYmxlSW5kZXgucHJvdG90eXBlLmdldEZlYXR1cmVUYWJsZUluZGV4RXh0ZW5zaW9uID0gZnVuY3Rpb24gKGNhbGxiYWNrKSB7XG4gIHRoaXMuZXh0ZW5zaW9uc0Rhby5pc1RhYmxlRXhpc3RzKGZ1bmN0aW9uKGVyciwgZXhpc3RzKSB7XG4gICAgaWYgKGV4aXN0cykge1xuICAgICAgdmFyIGV4dGVuc2lvbjtcbiAgICAgIHRoaXMuZXh0ZW5zaW9uc0Rhby5xdWVyeUJ5RXh0ZW5zaW9uQW5kVGFibGVOYW1lQW5kQ29sdW1uTmFtZSh0aGlzLmV4dGVuc2lvbk5hbWUsIHRoaXMudGFibGVOYW1lLCB0aGlzLmNvbHVtbk5hbWUsIGZ1bmN0aW9uKGVyciwgcm93LCByb3dEb25lKSB7XG4gICAgICAgIGV4dGVuc2lvbiA9IHJvdztcbiAgICAgICAgcm93RG9uZSgpO1xuICAgICAgfSwgZnVuY3Rpb24oKSB7XG4gICAgICAgIGNhbGxiYWNrKG51bGwsIGV4dGVuc2lvbik7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2FsbGJhY2soZXJyKTtcbiAgICB9XG4gIH0uYmluZCh0aGlzKSk7XG59O1xuXG5GZWF0dXJlVGFibGVJbmRleC5wcm90b3R5cGUuZ2V0T3JDcmVhdGVFeHRlbnNpb24gPSBmdW5jdGlvbihjYWxsYmFjaykge1xuICB0aGlzLmdldE9yQ3JlYXRlKHRoaXMuZXh0ZW5zaW9uTmFtZSwgdGhpcy50YWJsZU5hbWUsIHRoaXMuY29sdW1uTmFtZSwgdGhpcy5leHRlbnNpb25EZWZpbml0aW9uLCBFeHRlbnNpb24uUkVBRF9XUklURSwgY2FsbGJhY2spO1xufTtcblxuRmVhdHVyZVRhYmxlSW5kZXgucHJvdG90eXBlLmdldE9yQ3JlYXRlVGFibGVJbmRleCA9IGZ1bmN0aW9uKGNhbGxiYWNrKSB7XG4gIHRoaXMuZ2V0VGFibGVJbmRleChmdW5jdGlvbihlcnIsIHRhYmxlSW5kZXgpIHtcbiAgICBpZiAodGFibGVJbmRleCkgcmV0dXJuIGNhbGxiYWNrKGVyciwgdGFibGVJbmRleCk7XG4gICAgdGhpcy50YWJsZUluZGV4RGFvLmlzVGFibGVFeGlzdHMoZnVuY3Rpb24oZXJyLCBleGlzdHMpIHtcbiAgICAgIGlmICghZXhpc3RzKSB7XG4gICAgICAgIHRoaXMudGFibGVJbmRleERhby5jcmVhdGVUYWJsZShmdW5jdGlvbihlcnIpIHtcbiAgICAgICAgICB0aGlzLmNyZWF0ZVRhYmxlSW5kZXgoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICB0aGlzLmdldFRhYmxlSW5kZXgoY2FsbGJhY2spO1xuICAgICAgICAgIH0uYmluZCh0aGlzKSk7XG4gICAgICAgIH0uYmluZCh0aGlzKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmNyZWF0ZVRhYmxlSW5kZXgoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgdGhpcy5nZXRUYWJsZUluZGV4KGNhbGxiYWNrKTtcbiAgICAgICAgfS5iaW5kKHRoaXMpKTtcbiAgICAgIH1cbiAgICB9LmJpbmQodGhpcykpO1xuICB9LmJpbmQodGhpcykpO1xufTtcblxuRmVhdHVyZVRhYmxlSW5kZXgucHJvdG90eXBlLmNyZWF0ZVRhYmxlSW5kZXggPSBmdW5jdGlvbihjYWxsYmFjaykge1xuICB2YXIgdGkgPSBuZXcgVGFibGVJbmRleCgpO1xuICB0aS50YWJsZV9uYW1lID0gdGhpcy50YWJsZU5hbWU7XG4gIHRpLmxhc3RfaW5kZXhlZCA9IHRoaXMubGFzdEluZGV4ZWQ7XG4gIHRoaXMudGFibGVJbmRleERhby5jcmVhdGUodGksIGNhbGxiYWNrKTtcbn07XG5cbkZlYXR1cmVUYWJsZUluZGV4LnByb3RvdHlwZS5nZXRUYWJsZUluZGV4ID0gZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAgdGhpcy50YWJsZUluZGV4RGFvLmlzVGFibGVFeGlzdHMoZnVuY3Rpb24oZXJyLCBleGlzdHMpe1xuICAgIGlmIChleGlzdHMpIHtcbiAgICAgIHRoaXMudGFibGVJbmRleERhby5xdWVyeUZvcklkT2JqZWN0KHRoaXMudGFibGVOYW1lLCBjYWxsYmFjayk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNhbGxiYWNrKCk7XG4gICAgfVxuICB9LmJpbmQodGhpcykpO1xufTtcblxuRmVhdHVyZVRhYmxlSW5kZXgucHJvdG90eXBlLmNyZWF0ZU9yQ2xlYXJHZW9tZXRyeUluZGljaWVzID0gZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAgdGhpcy5nZW9tZXRyeUluZGV4RGFvLmNyZWF0ZVRhYmxlKGZ1bmN0aW9uKGVyciwgZXhpc3RzKSB7XG4gICAgdGhpcy5jbGVhckdlb21ldHJ5SW5kaWNpZXMoY2FsbGJhY2spO1xuICB9LmJpbmQodGhpcykpO1xufTtcblxuRmVhdHVyZVRhYmxlSW5kZXgucHJvdG90eXBlLmNsZWFyR2VvbWV0cnlJbmRpY2llcyA9IGZ1bmN0aW9uKGNhbGxiYWNrKSB7XG4gIHZhciB3aGVyZSA9IHRoaXMuZ2VvbWV0cnlJbmRleERhby5idWlsZFdoZXJlV2l0aEZpZWxkQW5kVmFsdWUoR2VvbWV0cnlJbmRleERhby5DT0xVTU5fVEFCTEVfTkFNRSwgdGhpcy50YWJsZU5hbWUpO1xuICB2YXIgd2hlcmVBcmdzID0gdGhpcy5nZW9tZXRyeUluZGV4RGFvLmJ1aWxkV2hlcmVBcmdzV2l0aFZhbHVlKHRoaXMudGFibGVOYW1lKTtcbiAgdGhpcy5nZW9tZXRyeUluZGV4RGFvLmRlbGV0ZVdoZXJlKHdoZXJlLCB3aGVyZUFyZ3MsIGNhbGxiYWNrKTtcbn07XG5cbkZlYXR1cmVUYWJsZUluZGV4LnByb3RvdHlwZS5pbmRleFRhYmxlID0gZnVuY3Rpb24odGFibGVJbmRleCwgcHJvZ3Jlc3NDYWxsYmFjaywgY2FsbGJhY2spIHtcbiAgaWYgKCFjYWxsYmFjaykge1xuICAgIGNhbGxiYWNrID0gcHJvZ3Jlc3NDYWxsYmFjaztcbiAgICBwcm9ncmVzc0NhbGxiYWNrID0gZnVuY3Rpb24oKSB7fVxuICB9XG4gIHRoaXMuZmVhdHVyZURhby5xdWVyeUZvckVhY2goZnVuY3Rpb24oZXJyLCByb3csIHJvd0RvbmUpIHtcbiAgICB2YXIgZnIgPSB0aGlzLmZlYXR1cmVEYW8uZ2V0RmVhdHVyZVJvdyhyb3cpO1xuICAgIHRoaXMuaW5kZXhSb3codGFibGVJbmRleCwgZnIuZ2V0SWQoKSwgZnIuZ2V0R2VvbWV0cnkoKSwgcm93RG9uZSk7XG4gIH0uYmluZCh0aGlzKSwgZnVuY3Rpb24oZXJyKSB7XG4gICAgdGhpcy51cGRhdGVMYXN0SW5kZXhlZCh0YWJsZUluZGV4LCBjYWxsYmFjayk7XG4gIH0uYmluZCh0aGlzKSk7XG59O1xuXG5GZWF0dXJlVGFibGVJbmRleC5wcm90b3R5cGUuaW5kZXhSb3cgPSBmdW5jdGlvbih0YWJsZUluZGV4LCBnZW9tSWQsIGdlb21EYXRhLCBjYWxsYmFjaykge1xuICBpZiAoIWdlb21EYXRhKSByZXR1cm4gY2FsbGJhY2soKTtcbiAgdmFyIGVudmVsb3BlID0gZ2VvbURhdGEuZW52ZWxvcGU7XG4gIGlmICghZW52ZWxvcGUpIHtcbiAgICB2YXIgZ2VvbWV0cnkgPSBnZW9tRGF0YS5nZW9tZXRyeTtcbiAgICBpZiAoZ2VvbWV0cnkpIHtcbiAgICAgIGVudmVsb3BlID0gRW52ZWxvcGVCdWlsZGVyLmJ1aWxkRW52ZWxvcGVXaXRoR2VvbWV0cnkoZ2VvbWV0cnkpO1xuICAgIH1cbiAgfVxuICBpZiAoZW52ZWxvcGUpIHtcbiAgICB2YXIgZ2VvbWV0cnlJbmRleCA9IHRoaXMuZ2VvbWV0cnlJbmRleERhby5wb3B1bGF0ZSh0YWJsZUluZGV4LCBnZW9tSWQsIGVudmVsb3BlKTtcbiAgICByZXR1cm4gdGhpcy5nZW9tZXRyeUluZGV4RGFvLmNyZWF0ZU9yVXBkYXRlKGdlb21ldHJ5SW5kZXgsIGNhbGxiYWNrKTtcbiAgfSBlbHNlIHtcbiAgICBjYWxsYmFjayhudWxsLCBmYWxzZSk7XG4gIH1cbn07XG5cbkZlYXR1cmVUYWJsZUluZGV4LnByb3RvdHlwZS51cGRhdGVMYXN0SW5kZXhlZCA9IGZ1bmN0aW9uKHRhYmxlSW5kZXgsIGNhbGxiYWNrKSB7XG4gIGlmICghdGFibGVJbmRleCkge1xuICAgIHRhYmxlSW5kZXggPSBuZXcgVGFibGVJbmRleCgpO1xuICAgIHRhYmxlSW5kZXgudGFibGVfbmFtZSA9IHRoaXMudGFibGVOYW1lO1xuICB9XG4gIHRhYmxlSW5kZXgubGFzdF9pbmRleGVkID0gbmV3IERhdGUoKS50b0lTT1N0cmluZygpO1xuICB0aGlzLnRhYmxlSW5kZXhEYW8uY3JlYXRlT3JVcGRhdGUodGFibGVJbmRleCwgY2FsbGJhY2spO1xufVxuXG5GZWF0dXJlVGFibGVJbmRleC5wcm90b3R5cGUucXVlcnlXaXRoQm91bmRpbmdCb3ggPSBmdW5jdGlvbihib3VuZGluZ0JveCwgcHJvamVjdGlvbiwgcm93Q2FsbGJhY2ssIGRvbmVDYWxsYmFjaykge1xuICB2YXIgcHJvamVjdGVkQm91bmRpbmdCb3ggPSBib3VuZGluZ0JveC5wcm9qZWN0Qm91bmRpbmdCb3gocHJvamVjdGlvbiwgdGhpcy5mZWF0dXJlRGFvLmdldFByb2plY3Rpb24oKSk7XG4gIHZhciBlbnZlbG9wZSA9IGJvdW5kaW5nQm94LmJ1aWxkRW52ZWxvcGUoKTtcbiAgdGhpcy5xdWVyeVdpdGhHZW9tZXRyeUVudmVsb3BlKGVudmVsb3BlLCByb3dDYWxsYmFjaywgZG9uZUNhbGxiYWNrKTtcbn1cblxuRmVhdHVyZVRhYmxlSW5kZXgucHJvdG90eXBlLnF1ZXJ5V2l0aEdlb21ldHJ5RW52ZWxvcGUgPSBmdW5jdGlvbihlbnZlbG9wZSwgcm93Q2FsbGJhY2ssIGRvbmVDYWxsYmFjaykge1xuICB2YXIgd2hlcmUgPSAnJztcbiAgd2hlcmUgKz0gdGhpcy5nZW9tZXRyeUluZGV4RGFvLmJ1aWxkV2hlcmVXaXRoRmllbGRBbmRWYWx1ZShHZW9tZXRyeUluZGV4RGFvLkNPTFVNTl9UQUJMRV9OQU1FLCB0aGlzLnRhYmxlTmFtZSk7XG4gIHdoZXJlICs9ICcgYW5kICc7XG4gIHZhciBtaW5YTGVzc1RoYW5NYXhYID0gZW52ZWxvcGUubWluWCA8IGVudmVsb3BlLm1heFg7XG4gIGlmIChtaW5YTGVzc1RoYW5NYXhYKSB7XG4gICAgd2hlcmUgKz0gdGhpcy5nZW9tZXRyeUluZGV4RGFvLmJ1aWxkV2hlcmVXaXRoRmllbGRBbmRWYWx1ZUFuZE9wZXJhdGlvbihHZW9tZXRyeUluZGV4RGFvLkNPTFVNTl9NSU5fWCwgZW52ZWxvcGUubWF4WCwgJzw9Jyk7XG4gICAgd2hlcmUgKz0gJyBhbmQgJztcbiAgICB3aGVyZSArPSB0aGlzLmdlb21ldHJ5SW5kZXhEYW8uYnVpbGRXaGVyZVdpdGhGaWVsZEFuZFZhbHVlQW5kT3BlcmF0aW9uKEdlb21ldHJ5SW5kZXhEYW8uQ09MVU1OX01BWF9YLCBlbnZlbG9wZS5taW5YLCAnPj0nKTtcbiAgfSBlbHNlIHtcbiAgICB3aGVyZSArPSAnKCc7XG4gICAgd2hlcmUgKz0gdGhpcy5nZW9tZXRyeUluZGV4RGFvLmJ1aWxkV2hlcmVXaXRoRmllbGRBbmRWYWx1ZUFuZE9wZXJhdGlvbihHZW9tZXRyeUluZGV4RGFvLkNPTFVNTl9NSU5fWCwgZW52ZWxvcGUubWF4WCwgJzw9Jyk7XG4gICAgd2hlcmUgKz0gJyBvciAnO1xuICAgIHdoZXJlICs9IHRoaXMuZ2VvbWV0cnlJbmRleERhby5idWlsZFdoZXJlV2l0aEZpZWxkQW5kVmFsdWVBbmRPcGVyYXRpb24oR2VvbWV0cnlJbmRleERhby5DT0xVTU5fTUFYX1gsIGVudmVsb3BlLm1pblgsICc+PScpO1xuICAgIHdoZXJlICs9ICcgb3IgJztcbiAgICB3aGVyZSArPSB0aGlzLmdlb21ldHJ5SW5kZXhEYW8uYnVpbGRXaGVyZVdpdGhGaWVsZEFuZFZhbHVlQW5kT3BlcmF0aW9uKEdlb21ldHJ5SW5kZXhEYW8uQ09MVU1OX01JTl9YLCBlbnZlbG9wZS5taW5YLCAnPj0nKTtcbiAgICB3aGVyZSArPSAnIG9yICc7XG4gICAgd2hlcmUgKz0gdGhpcy5nZW9tZXRyeUluZGV4RGFvLmJ1aWxkV2hlcmVXaXRoRmllbGRBbmRWYWx1ZUFuZE9wZXJhdGlvbihHZW9tZXRyeUluZGV4RGFvLkNPTFVNTl9NQVhfWCwgZW52ZWxvcGUubWF4WCwgJzw9Jyk7XG4gICAgd2hlcmUgKz0gJyknO1xuICB9XG5cbiAgd2hlcmUgKz0gJyBhbmQgJztcbiAgd2hlcmUgKz0gdGhpcy5nZW9tZXRyeUluZGV4RGFvLmJ1aWxkV2hlcmVXaXRoRmllbGRBbmRWYWx1ZUFuZE9wZXJhdGlvbihHZW9tZXRyeUluZGV4RGFvLkNPTFVNTl9NSU5fWSwgZW52ZWxvcGUubWF4WSwgJzw9Jyk7XG4gIHdoZXJlICs9ICcgYW5kICc7XG4gIHdoZXJlICs9IHRoaXMuZ2VvbWV0cnlJbmRleERhby5idWlsZFdoZXJlV2l0aEZpZWxkQW5kVmFsdWVBbmRPcGVyYXRpb24oR2VvbWV0cnlJbmRleERhby5DT0xVTU5fTUFYX1ksIGVudmVsb3BlLm1pblksICc+PScpO1xuXG4gIHZhciB3aGVyZUFyZ3MgPSBbdGhpcy50YWJsZU5hbWUsIGVudmVsb3BlLm1heFgsIGVudmVsb3BlLm1pblhdO1xuICBpZiAoIW1pblhMZXNzVGhhbk1heFgpIHtcbiAgICB3aGVyZUFyZ3MucHVzaChlbnZlbG9wZS5taW5YLCBlbnZlbG9wZS5tYXhYKTtcbiAgfVxuICB3aGVyZUFyZ3MucHVzaChlbnZlbG9wZS5tYXhZLCBlbnZlbG9wZS5taW5ZKTtcbiAgaWYgKGVudmVsb3BlLmhhc1opIHtcbiAgICB3aGVyZSArPSAnIGFuZCAnO1xuICAgIHdoZXJlICs9IHRoaXMuZ2VvbWV0cnlJbmRleERhby5idWlsZFdoZXJlV2l0aEZpZWxkQW5kVmFsdWVBbmRPcGVyYXRpb24oR2VvbWV0cnlJbmRleERhby5DT0xVTU5fTUlOX1osIGVudmVsb3BlLm1pblosICc8PScpO1xuICAgIHdoZXJlICs9ICcgYW5kICc7XG4gICAgd2hlcmUgKz0gdGhpcy5nZW9tZXRyeUluZGV4RGFvLmJ1aWxkV2hlcmVXaXRoRmllbGRBbmRWYWx1ZUFuZE9wZXJhdGlvbihHZW9tZXRyeUluZGV4RGFvLkNPTFVNTl9NQVhfWiwgZW52ZWxvcGUubWF4WiwgJz49Jyk7XG4gICAgd2hlcmVBcmdzLnB1c2goZW52ZWxvcGUubWF4WiwgZW52ZWxvcGUubWluWik7XG4gIH1cblxuICBpZiAoZW52ZWxvcGUuaGFzTSkge1xuICAgIHdoZXJlICs9ICcgYW5kICc7XG4gICAgd2hlcmUgKz0gdGhpcy5nZW9tZXRyeUluZGV4RGFvLmJ1aWxkV2hlcmVXaXRoRmllbGRBbmRWYWx1ZUFuZE9wZXJhdGlvbihHZW9tZXRyeUluZGV4RGFvLkNPTFVNTl9NSU5fTSwgZW52ZWxvcGUubWluTSwgJzw9Jyk7XG4gICAgd2hlcmUgKz0gJyBhbmQgJztcbiAgICB3aGVyZSArPSB0aGlzLmdlb21ldHJ5SW5kZXhEYW8uYnVpbGRXaGVyZVdpdGhGaWVsZEFuZFZhbHVlQW5kT3BlcmF0aW9uKEdlb21ldHJ5SW5kZXhEYW8uQ09MVU1OX01BWF9NLCBlbnZlbG9wZS5tYXhNLCAnPj0nKTtcbiAgICB3aGVyZUFyZ3MucHVzaChlbnZlbG9wZS5tYXhNLCBlbnZlbG9wZS5taW5NKTtcbiAgfVxuXG4gIHZhciBqb2luID0gJ2lubmVyIGpvaW4gJyArIHRoaXMudGFibGVOYW1lICsgJyBvbiAnICsgdGhpcy50YWJsZU5hbWUgKyAnLmlkID0gJyArIEdlb21ldHJ5SW5kZXhEYW8uQ09MVU1OX0dFT01fSUQ7XG5cbiAgdGhpcy5nZW9tZXRyeUluZGV4RGFvLnF1ZXJ5Sm9pbldoZXJlV2l0aEFyZ3Moam9pbiwgd2hlcmUsIHdoZXJlQXJncywgW3RoaXMudGFibGVOYW1lICsgJy4nICsgdGhpcy5mZWF0dXJlRGFvLmdldEdlb21ldHJ5Q29sdW1uTmFtZSgpXSwgcm93Q2FsbGJhY2ssIGRvbmVDYWxsYmFjayk7XG59XG5cbkZlYXR1cmVUYWJsZUluZGV4LkVYVEVOU0lPTl9HRU9NRVRSWV9JTkRFWF9BVVRIT1IgPSAnbmdhJztcbkZlYXR1cmVUYWJsZUluZGV4LkVYVEVOU0lPTl9HRU9NRVRSWV9JTkRFWF9OQU1FX05PX0FVVEhPUiA9ICdnZW9tZXRyeV9pbmRleCc7XG5GZWF0dXJlVGFibGVJbmRleC5FWFRFTlNJT05fR0VPTUVUUllfSU5ERVhfREVGSU5JVElPTiA9ICdodHRwOi8vbmdhZ2VvaW50LmdpdGh1Yi5pby9HZW9QYWNrYWdlL2RvY3MvZXh0ZW5zaW9ucy9nZW9tZXRyeS1pbmRleC5odG1sJztcblxubW9kdWxlLmV4cG9ydHMgPSBGZWF0dXJlVGFibGVJbmRleDtcbiIsIi8qKlxuICogR2VvbWV0cnlJbmRleERhbyBtb2R1bGUuXG4gKiBAbW9kdWxlIGdlb21ldHJ5SW5kZXhEYW9cbiAqIEBzZWUgbW9kdWxlOmRhby9kYW9cbiAqL1xuXG52YXIgRGFvID0gcmVxdWlyZSgnLi4vLi4vZGFvL2RhbycpXG4gICwgVGFibGVJbmRleERhbyA9IHJlcXVpcmUoJy4vdGFibGVJbmRleCcpLlRhYmxlSW5kZXhEYW9cbiAgLCBUYWJsZUNyZWF0b3IgPSByZXF1aXJlKCcuLi8uLi9kYi90YWJsZUNyZWF0b3InKTtcblxudmFyIHV0aWwgPSByZXF1aXJlKCd1dGlsJyk7XG5cbi8qKlxuICogR2VvbWV0cnkgSW5kZXggb2JqZWN0LCBmb3IgaW5kZXhpbmcgZGF0YSB3aXRoaW4gdXNlciB0YWJsZXNcbiAqIEBjbGFzcyBUYWJsZUluZGV4XG4gKi9cbnZhciBHZW9tZXRyeUluZGV4ID0gZnVuY3Rpb24oKSB7XG5cbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIHRhYmxlXG4gICAqIEBtZW1iZXIge1N0cmluZ31cbiAgICovXG4gIHRoaXMudGFibGVfbmFtZTtcblxuICAvKipcbiAgICogR2VvbWV0cnkgSWQgY29sdW1uXG4gICAqIEBtZW1iZXIge051bWJlcn1cbiAgICovXG4gIHRoaXMuZ2VvbV9pZDtcblxuICAvKipcbiAgICogTWluIFhcbiAgICogQG1lbWJlciB7TnVtYmVyfVxuICAgKi9cbiAgdGhpcy5taW5feDtcblxuICAvKipcbiAgICogTWF4IFhcbiAgICogQG1lbWJlciB7TnVtYmVyfVxuICAgKi9cbiAgdGhpcy5tYXhfeDtcblxuICAvKipcbiAgICogTWluIFlcbiAgICogQG1lbWJlciB7TnVtYmVyfVxuICAgKi9cbiAgdGhpcy5taW5feTtcblxuICAvKipcbiAgICogTWF4IFlcbiAgICogQG1lbWJlciB7TnVtYmVyfVxuICAgKi9cbiAgdGhpcy5tYXhfeTtcblxuICAvKipcbiAgICogTWluIFpcbiAgICogQG1lbWJlciB7TnVtYmVyfVxuICAgKi9cbiAgdGhpcy5taW5fejtcblxuICAvKipcbiAgICogTWF4IFpcbiAgICogQG1lbWJlciB7TnVtYmVyfVxuICAgKi9cbiAgdGhpcy5tYXhfejtcblxuICAvKipcbiAgICogTWluIE1cbiAgICogQG1lbWJlciB7TnVtYmVyfVxuICAgKi9cbiAgdGhpcy5taW5fbTtcblxuICAvKipcbiAgICogTWF4IE1cbiAgICogQG1lbWJlciB7TnVtYmVyfVxuICAgKi9cbiAgdGhpcy5tYXhfbTtcbn1cblxuR2VvbWV0cnlJbmRleC5wcm90b3R5cGUuc2V0VGFibGVJbmRleCA9IGZ1bmN0aW9uKHRhYmxlSW5kZXgpIHtcbiAgaWYgKHRhYmxlSW5kZXgpIHtcbiAgICB0aGlzLnRhYmxlX25hbWUgPSB0YWJsZUluZGV4LnRhYmxlX25hbWU7XG4gIH0gZWxzZSB7XG4gICAgdGhpcy50YWJsZV9uYW1lID0gdW5kZWZpbmVkO1xuICB9XG59XG5cbi8qKlxuICogR2VvbWV0cnkgSW5kZXggRGF0YSBBY2Nlc3MgT2JqZWN0XG4gKiBAY2xhc3NcbiAqIEBleHRlbmRzIHttb2R1bGU6ZGFvL2Rhb35EYW99XG4gKi9cbnZhciBHZW9tZXRyeUluZGV4RGFvID0gZnVuY3Rpb24oY29ubmVjdGlvbikge1xuICBEYW8uY2FsbCh0aGlzLCBjb25uZWN0aW9uKTtcbn07XG5cbnV0aWwuaW5oZXJpdHMoR2VvbWV0cnlJbmRleERhbywgRGFvKTtcblxuR2VvbWV0cnlJbmRleERhby5wcm90b3R5cGUuY3JlYXRlT2JqZWN0ID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiBuZXcgR2VvbWV0cnlJbmRleERhbygpO1xufTtcblxuLyoqXG4gKiAgR2V0IHRoZSBUYWJsZSBJbmRleCBvZiB0aGUgR2VvbWV0cnkgSW5kZXhcbiAqXG4gKiAgQHBhcmFtIGdlb21ldHJ5SW5kZXggZ2VvbWV0cnkgaW5kZXhcbiAqL1xuR2VvbWV0cnlJbmRleERhby5wcm90b3R5cGUuZ2V0VGFibGVJbmRleCA9IGZ1bmN0aW9uKGdlb21ldHJ5SW5kZXgsIGNhbGxiYWNrKSB7XG4gIHZhciBkYW8gPSB0aGlzLmdldFRhYmxlSW5kZXhEYW8oKTtcbiAgZGFvLnF1ZXJ5Rm9ySWRPYmplY3QoZ2VvbWV0cnlJbmRleC50YWJsZU5hbWUsIGNhbGxiYWNrKTtcbn07XG5cbkdlb21ldHJ5SW5kZXhEYW8ucHJvdG90eXBlLmdldFRhYmxlSW5kZXhEYW8gPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIG5ldyBUYWJsZUluZGV4RGFvKHRoaXMuY29ubmVjdGlvbik7XG59O1xuXG4vKipcbiAqICBRdWVyeSBieSB0YWJsZSBuYW1lXG4gKlxuICogIEBwYXJhbSB0YWJsZU5hbWUgdGFibGUgbmFtZVxuICpcbiAqICBAcmV0dXJuIGdlb21ldHJ5IGluZGV4IHJlc3VsdHNcbiAqL1xuR2VvbWV0cnlJbmRleERhby5wcm90b3R5cGUucXVlcnlGb3JUYWJsZU5hbWUgPSBmdW5jdGlvbih0YWJsZU5hbWUsIGVhY2hDYWxsYmFjaywgZG9uZUNhbGxiYWNrKSB7XG4gIHRoaXMucXVlcnlGb3JFcVdpdGhGaWVsZEFuZFZhbHVlKEdlb21ldHJ5SW5kZXhEYW8uQ09MVU1OX1RBQkxFX05BTUUsIHRhYmxlTmFtZSwgZWFjaENhbGxiYWNrLCBkb25lQ2FsbGJhY2spO1xufTtcblxuLyoqXG4gKiAgQ291bnQgYnkgdGFibGUgbmFtZVxuICpcbiAqICBAcGFyYW0gdGFibGVOYW1lIHRhYmxlIG5hbWVcbiAqXG4gKiAgQHJldHVybiBjb3VudFxuICovXG5HZW9tZXRyeUluZGV4RGFvLnByb3RvdHlwZS5jb3VudEJ5VGFibGVOYW1lID0gZnVuY3Rpb24odGFibGVOYW1lLCBjYWxsYmFjaykge1xuICB0aGlzLmNvdW50QnlFcVdpdGhGaWVsZEFuZFZhbHVlKEdlb21ldHJ5SW5kZXhEYW8uQ09MVU1OX1RBQkxFX05BTUUsIHRhYmxlTmFtZSwgY2FsbGJhY2spO1xufTtcblxuLyoqXG4gKiAgUG9wdWxhdGUgYSBuZXcgZ2VvbWV0cnkgaW5kZXggZnJvbSBhbiBlbnZlbG9wZVxuICpcbiAqICBAcGFyYW0gdGFibGVJbmRleCB0YWJsZSBpbmRleFxuICogIEBwYXJhbSBnZW9tSWQgICAgIGdlb21ldHJ5IGlkXG4gKiAgQHBhcmFtIGVudmVsb3BlICAgZ2VvbWV0cnkgZW52ZWxvcGVcbiAqICBAcGFyYW0gY2FsbGJhY2sgY2FsbGVkIHdpdGggcmVzdWx0cyBvZiB0aGUgcG9wdWxhdGVcbiAqL1xuR2VvbWV0cnlJbmRleERhby5wcm90b3R5cGUucG9wdWxhdGUgPSBmdW5jdGlvbih0YWJsZUluZGV4LCBnZW9tZXRyeUlkLCBlbnZlbG9wZSkge1xuICB2YXIgZ2VvbWV0cnlJbmRleCAgPSBuZXcgR2VvbWV0cnlJbmRleCgpO1xuICBnZW9tZXRyeUluZGV4LnNldFRhYmxlSW5kZXgodGFibGVJbmRleCk7XG4gIGdlb21ldHJ5SW5kZXguZ2VvbV9pZCA9IGdlb21ldHJ5SWQ7XG4gIGdlb21ldHJ5SW5kZXgubWluX3ggPSBlbnZlbG9wZS5taW5YO1xuICBnZW9tZXRyeUluZGV4Lm1pbl95ID0gZW52ZWxvcGUubWluWTtcbiAgZ2VvbWV0cnlJbmRleC5tYXhfeCA9IGVudmVsb3BlLm1heFg7XG4gIGdlb21ldHJ5SW5kZXgubWF4X3kgPSBlbnZlbG9wZS5tYXhZO1xuICBpZiAoZW52ZWxvcGUuaGFzWikge1xuICAgIGdlb21ldHJ5SW5kZXgubWluX3ogPSBlbnZlbG9wZS5taW5aO1xuICAgIGdlb21ldHJ5SW5kZXgubWF4X3ogPSBlbnZlbG9wZS5tYXhaO1xuICB9XG5cbiAgaWYgKGVudmVsb3BlLmhhc00pIHtcbiAgICBnZW9tZXRyeUluZGV4Lm1pbl9tID0gZW52ZWxvcGUubWluTTtcbiAgICBnZW9tZXRyeUluZGV4Lm1heF9tID0gZW52ZWxvcGUubWF4TTtcbiAgfVxuICByZXR1cm4gZ2VvbWV0cnlJbmRleDtcbn07XG5cbkdlb21ldHJ5SW5kZXhEYW8ucHJvdG90eXBlLmNyZWF0ZVRhYmxlID0gZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAgdGhpcy5pc1RhYmxlRXhpc3RzKGZ1bmN0aW9uKGVyciwgZXhpc3RzKSB7XG4gICAgaWYgKGV4aXN0cykgcmV0dXJuIGNhbGxiYWNrKGVyciwgZXhpc3RzKTtcbiAgICB2YXIgdGMgPSBuZXcgVGFibGVDcmVhdG9yKHRoaXMuY29ubmVjdGlvbik7XG4gICAgdGMuY3JlYXRlR2VvbWV0cnlJbmRleChjYWxsYmFjayk7XG4gIH0uYmluZCh0aGlzKSk7XG59XG5cbkdlb21ldHJ5SW5kZXhEYW8uVEFCTEVfTkFNRSA9IFwibmdhX2dlb21ldHJ5X2luZGV4XCI7XG5HZW9tZXRyeUluZGV4RGFvLkNPTFVNTl9UQUJMRV9OQU1FID0gR2VvbWV0cnlJbmRleERhby5UQUJMRV9OQU1FICsgXCIudGFibGVfbmFtZVwiO1xuR2VvbWV0cnlJbmRleERhby5DT0xVTU5fR0VPTV9JRCA9IEdlb21ldHJ5SW5kZXhEYW8uVEFCTEVfTkFNRSArIFwiLmdlb21faWRcIjtcbkdlb21ldHJ5SW5kZXhEYW8uQ09MVU1OX01JTl9YID0gR2VvbWV0cnlJbmRleERhby5UQUJMRV9OQU1FICsgXCIubWluX3hcIjtcbkdlb21ldHJ5SW5kZXhEYW8uQ09MVU1OX01BWF9YID0gR2VvbWV0cnlJbmRleERhby5UQUJMRV9OQU1FICsgXCIubWF4X3hcIjtcbkdlb21ldHJ5SW5kZXhEYW8uQ09MVU1OX01JTl9ZID0gR2VvbWV0cnlJbmRleERhby5UQUJMRV9OQU1FICsgXCIubWluX3lcIjtcbkdlb21ldHJ5SW5kZXhEYW8uQ09MVU1OX01BWF9ZID0gR2VvbWV0cnlJbmRleERhby5UQUJMRV9OQU1FICsgXCIubWF4X3lcIjtcbkdlb21ldHJ5SW5kZXhEYW8uQ09MVU1OX01JTl9aID0gR2VvbWV0cnlJbmRleERhby5UQUJMRV9OQU1FICsgXCIubWluX3pcIjtcbkdlb21ldHJ5SW5kZXhEYW8uQ09MVU1OX01BWF9aID0gR2VvbWV0cnlJbmRleERhby5UQUJMRV9OQU1FICsgXCIubWF4X3pcIjtcbkdlb21ldHJ5SW5kZXhEYW8uQ09MVU1OX01JTl9NID0gR2VvbWV0cnlJbmRleERhby5UQUJMRV9OQU1FICsgXCIubWluX21cIjtcbkdlb21ldHJ5SW5kZXhEYW8uQ09MVU1OX01BWF9NID0gR2VvbWV0cnlJbmRleERhby5UQUJMRV9OQU1FICsgXCIubWF4X21cIjtcblxuR2VvbWV0cnlJbmRleERhby5wcm90b3R5cGUuZ3BrZ1RhYmxlTmFtZSA9IEdlb21ldHJ5SW5kZXhEYW8uVEFCTEVfTkFNRTtcbkdlb21ldHJ5SW5kZXhEYW8ucHJvdG90eXBlLmlkQ29sdW1ucyA9IFtHZW9tZXRyeUluZGV4RGFvLkNPTFVNTl9UQUJMRV9OQU1FLCBHZW9tZXRyeUluZGV4RGFvLkNPTFVNTl9HRU9NX0lEXTtcblxubW9kdWxlLmV4cG9ydHMuR2VvbWV0cnlJbmRleERhbyA9IEdlb21ldHJ5SW5kZXhEYW87XG5tb2R1bGUuZXhwb3J0cy5HZW9tZXRyeUluZGV4ID0gR2VvbWV0cnlJbmRleDtcbiIsIi8qKlxuICogVGFibGVJbmRleERhbyBtb2R1bGUuXG4gKiBAbW9kdWxlIHRhYmxlSW5kZXhEYW9cbiAqIEBzZWUgbW9kdWxlOmRhby9kYW9cbiAqL1xuXG52YXIgRGFvID0gcmVxdWlyZSgnLi4vLi4vZGFvL2RhbycpXG4gICwgVGFibGVDcmVhdG9yID0gcmVxdWlyZSgnLi4vLi4vZGIvdGFibGVDcmVhdG9yJyk7XG5cbnZhciB1dGlsID0gcmVxdWlyZSgndXRpbCcpO1xuXG4vKipcbiAqIFRhYmxlIEluZGV4IG9iamVjdCwgZm9yIGluZGV4aW5nIGRhdGEgd2l0aGluIHVzZXIgdGFibGVzXG4gKiBAY2xhc3MgVGFibGVJbmRleFxuICovXG52YXIgVGFibGVJbmRleCA9IGZ1bmN0aW9uKCkge1xuXG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSB0YWJsZVxuICAgKiBAbWVtYmVyIHtTdHJpbmd9XG4gICAqL1xuICB0aGlzLnRhYmxlX25hbWU7XG5cbiAgLyoqXG4gICAqIExhc3QgaW5kZXhlZCBkYXRlXG4gICAqIEBtZW1iZXIge1N0cmluZ31cbiAgICovXG4gIHRoaXMubGFzdF9pbmRleGVkO1xufVxuXG4vKipcbiAqIFRhYmxlIEluZGV4IERhdGEgQWNjZXNzIE9iamVjdFxuICogQGNsYXNzXG4gKiBAZXh0ZW5kcyB7bW9kdWxlOmRhby9kYW9+RGFvfVxuICovXG52YXIgVGFibGVJbmRleERhbyA9IGZ1bmN0aW9uKGNvbm5lY3Rpb24pIHtcbiAgRGFvLmNhbGwodGhpcywgY29ubmVjdGlvbik7XG59O1xuXG51dGlsLmluaGVyaXRzKFRhYmxlSW5kZXhEYW8sIERhbyk7XG5cblRhYmxlSW5kZXhEYW8ucHJvdG90eXBlLmNyZWF0ZU9iamVjdCA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gbmV3IFRhYmxlSW5kZXgoKTtcbn07XG5cblRhYmxlSW5kZXhEYW8ucHJvdG90eXBlLmdldEdlb21ldHJ5SW5kaWNlcyA9IGZ1bmN0aW9uKHRhYmxlSW5kZXgpIHtcblxufTtcblxuVGFibGVJbmRleERhby5wcm90b3R5cGUuZ2V0R2VvbWV0cnlJbmRleENvdW50ID0gZnVuY3Rpb24odGFibGVJbmRleCkge1xuXG59O1xuXG5UYWJsZUluZGV4RGFvLnByb3RvdHlwZS5jcmVhdGVUYWJsZSA9IGZ1bmN0aW9uKGNhbGxiYWNrKSB7XG4gIHZhciB0YyA9IG5ldyBUYWJsZUNyZWF0b3IodGhpcy5jb25uZWN0aW9uKTtcbiAgdGMuY3JlYXRlVGFibGVJbmRleChjYWxsYmFjayk7XG59XG5cblxuVGFibGVJbmRleERhby5UQUJMRV9OQU1FID0gXCJuZ2FfdGFibGVfaW5kZXhcIjtcblRhYmxlSW5kZXhEYW8uQ09MVU1OX1RBQkxFX05BTUUgPSBcInRhYmxlX25hbWVcIjtcblRhYmxlSW5kZXhEYW8uQ09MVU1OX0xBU1RfSU5ERVhFRCA9IFwibGFzdF9pbmRleGVkXCI7XG5cblRhYmxlSW5kZXhEYW8ucHJvdG90eXBlLmdwa2dUYWJsZU5hbWUgPSBUYWJsZUluZGV4RGFvLlRBQkxFX05BTUU7XG5UYWJsZUluZGV4RGFvLnByb3RvdHlwZS5pZENvbHVtbnMgPSBbVGFibGVJbmRleERhby5DT0xVTU5fVEFCTEVfTkFNRV07XG5cbm1vZHVsZS5leHBvcnRzLlRhYmxlSW5kZXhEYW8gPSBUYWJsZUluZGV4RGFvO1xubW9kdWxlLmV4cG9ydHMuVGFibGVJbmRleCA9IFRhYmxlSW5kZXg7XG4iLCIvKipcbiAqIEdlb21ldHJ5Q29sdW1ucyBtb2R1bGUuXG4gKiBAbW9kdWxlIGRhby9nZW9tZXRyeUNvbHVtbnNcbiAqIEBzZWUgbW9kdWxlOmRhby9kYW9cbiAqL1xuXG52YXIgRGFvID0gcmVxdWlyZSgnLi4vLi4vZGFvL2RhbycpXG4gICwgU3BhdGlhbFJlZmVyZW5jZVN5c3RlbURhbyA9IHJlcXVpcmUoJy4uLy4uL2NvcmUvc3JzJykuU3BhdGlhbFJlZmVyZW5jZVN5c3RlbURhb1xuICAsIENvbnRlbnRzRGFvID0gcmVxdWlyZSgnLi4vLi4vY29yZS9jb250ZW50cycpLkNvbnRlbnRzRGFvXG4gICwgQ29udGVudHMgPSByZXF1aXJlKCcuLi8uLi9jb3JlL2NvbnRlbnRzJykuQ29udGVudHM7XG5cbnZhciB1dGlsID0gcmVxdWlyZSgndXRpbCcpO1xuXG4vKipcbiAqIFNwYXRpYWwgUmVmZXJlbmNlIFN5c3RlbSBvYmplY3QuIFRoZSBjb29yZGluYXRlIHJlZmVyZW5jZSBzeXN0ZW0gZGVmaW5pdGlvbnMgaXQgY29udGFpbnMgYXJlIHJlZmVyZW5jZWQgYnkgdGhlIEdlb1BhY2thZ2UgQ29udGVudHMgYW5kIEdlb21ldHJ5Q29sdW1ucyBvYmplY3RzIHRvIHJlbGF0ZSB0aGUgdmVjdG9yIGFuZCB0aWxlIGRhdGEgaW4gdXNlciB0YWJsZXMgdG8gbG9jYXRpb25zIG9uIHRoZSBlYXJ0aC5cbiAqIEBjbGFzcyBTcGF0aWFsUmVmZXJlbmNlU3lzdGVtXG4gKi9cbnZhciBHZW9tZXRyeUNvbHVtbnMgPSBmdW5jdGlvbigpIHtcbiAgLyoqXG5cdCAqIE5hbWUgb2YgdGhlIHRhYmxlIGNvbnRhaW5pbmcgdGhlIGdlb21ldHJ5IGNvbHVtblxuXHQgKiBAbWVtYmVyIHtzdHJpbmd9XG5cdCAqL1xuXHR0aGlzLnRhYmxlX25hbWU7XG5cblx0LyoqXG5cdCAqIE5hbWUgb2YgYSBjb2x1bW4gaW4gdGhlIGZlYXR1cmUgdGFibGUgdGhhdCBpcyBhIEdlb21ldHJ5IENvbHVtblxuXHQgKiBAbWVtYmVyIHtzdHJpbmd9XG5cdCAqL1xuXHR0aGlzLmNvbHVtbl9uYW1lO1xuXG5cdC8qKlxuXHQgKiBOYW1lIGZyb20gR2VvbWV0cnkgVHlwZSBDb2RlcyAoQ29yZSkgb3IgR2VvbWV0cnkgVHlwZSBDb2RlcyAoRXh0ZW5zaW9uKVxuXHQgKiBpbiBHZW9tZXRyeSBUeXBlcyAoTm9ybWF0aXZlKVxuXHQgKiBAbWVtYmVyIHtzdHJpbmd9XG5cdCAqL1xuXHR0aGlzLmdlb21ldHJ5X3R5cGVfbmFtZTtcblxuXHQvKipcblx0ICogU3BhdGlhbCBSZWZlcmVuY2UgU3lzdGVtIElEOiBncGtnX3NwYXRpYWxfcmVmX3N5cy5zcnNfaWRcblx0ICogQG1lbWJlciB7bW9kdWxlOmRhby9zcGF0aWFsUmVmZXJlbmNlU3lzdGVtflNwYXRpYWxSZWZlcmVuY2VTeXN0ZW19XG5cdCAqL1xuXHR0aGlzLnNycztcblxuXHQvKipcblx0ICogVW5pcXVlIGlkZW50aWZpZXIgZm9yIGVhY2ggU3BhdGlhbCBSZWZlcmVuY2UgU3lzdGVtIHdpdGhpbiBhIEdlb1BhY2thZ2Vcblx0ICogQG1lbWJlciB7TnVtYmVyfVxuXHQgKi9cblx0dGhpcy5zcnNfaWQ7XG5cblx0LyoqXG5cdCAqIDA6IHogdmFsdWVzIHByb2hpYml0ZWQ7IDE6IHogdmFsdWVzIG1hbmRhdG9yeTsgMjogeiB2YWx1ZXMgb3B0aW9uYWxcblx0ICogQG1lbWJlciB7Ynl0ZX1cblx0ICovXG5cdHRoaXMuejtcblxuXHQvKipcblx0ICogMDogbSB2YWx1ZXMgcHJvaGliaXRlZDsgMTogbSB2YWx1ZXMgbWFuZGF0b3J5OyAyOiBtIHZhbHVlcyBvcHRpb25hbFxuXHQgKiBAbWVtYmVyIHtieXRlfVxuXHQgKi9cblx0dGhpcy5tO1xuXG59O1xuXG5HZW9tZXRyeUNvbHVtbnMucHJvdG90eXBlLmdldEdlb21ldHJ5VHlwZSA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gdGhpcy5nZW9tZXRyeV90eXBlX25hbWU7XG59O1xuXG4gIC8vIC8qKlxuICAvLyAgKiBDb250ZW50c1xuICAvLyAgKi9cbiAgLy8gQEZvcmVpZ25Db2xsZWN0aW9uRmllbGQoZWFnZXIgPSBmYWxzZSlcbiAgLy8gcHJpdmF0ZSBGb3JlaWduQ29sbGVjdGlvbjxDb250ZW50cz4gY29udGVudHM7XG4gIC8vXG4gIC8vIC8qKlxuICAvLyAgKiBHZW9tZXRyeSBDb2x1bW5zXG4gIC8vICAqL1xuICAvLyBARm9yZWlnbkNvbGxlY3Rpb25GaWVsZChlYWdlciA9IGZhbHNlKVxuICAvLyBwcml2YXRlIEZvcmVpZ25Db2xsZWN0aW9uPEdlb21ldHJ5Q29sdW1ucz4gZ2VvbWV0cnlDb2x1bW5zO1xuICAvL1xuICAvLyAvKipcbiAgLy8gICogTWF0cml4IFRpbGUgU2V0XG4gIC8vICAqL1xuICAvLyBARm9yZWlnbkNvbGxlY3Rpb25GaWVsZChlYWdlciA9IGZhbHNlKVxuICAvLyBwcml2YXRlIEZvcmVpZ25Db2xsZWN0aW9uPFRpbGVNYXRyaXhTZXQ+IHRpbGVNYXRyaXhTZXQ7XG5cblxuXG4vKipcbiAqIEdlb21ldHJ5IENvbHVtbnMgRGF0YSBBY2Nlc3MgT2JqZWN0XG4gKiBAY2xhc3MgR2VvbWV0cnlDb2x1bW5zRGFvXG4gKiBAZXh0ZW5kcyB7bW9kdWxlOmRhby9kYW9+RGFvfVxuICovXG52YXIgR2VvbWV0cnlDb2x1bW5zRGFvID0gZnVuY3Rpb24oY29ubmVjdGlvbikge1xuICBEYW8uY2FsbCh0aGlzLCBjb25uZWN0aW9uKTtcbn1cblxudXRpbC5pbmhlcml0cyhHZW9tZXRyeUNvbHVtbnNEYW8sIERhbyk7XG5cbkdlb21ldHJ5Q29sdW1uc0Rhby5wcm90b3R5cGUuY3JlYXRlT2JqZWN0ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gbmV3IEdlb21ldHJ5Q29sdW1ucygpO1xufTtcblxuLyoqXG4gKiAgUXVlcnkgZm9yIHRoZSB0YWJsZSBuYW1lXG4gKlxuICogIEBwYXJhbSB7c3RyaW5nfSB0YWJsZU5hbWUgdGFibGUgbmFtZVxuICogIEBwYXJhbSB7Y2FsbGJhY2t9IGNhbGxiYWNrIGNhbGxlZCB3aXRoIGFuIGVycm9yIGlmIG9uZSBvY2N1cnJlZCBhbmQgdGhlIHttb2R1bGU6ZGFvL2dlb21ldHJ5Q29sdW1uc35HZW9tZXRyeUNvbHVtbnN9XG4gKi9cbkdlb21ldHJ5Q29sdW1uc0Rhby5wcm90b3R5cGUucXVlcnlGb3JUYWJsZU5hbWUgPSBmdW5jdGlvbiAodGFibGVOYW1lLCBjYWxsYmFjaykge1xuICB0aGlzLnF1ZXJ5Rm9yRXFXaXRoRmllbGRBbmRWYWx1ZShHZW9tZXRyeUNvbHVtbnNEYW8uQ09MVU1OX1RBQkxFX05BTUUsIHRhYmxlTmFtZSwgZnVuY3Rpb24oZXJyLCByZXN1bHRzKSB7XG4gICAgaWYgKHJlc3VsdHMgJiYgcmVzdWx0cy5sZW5ndGgpIHtcbiAgICAgIHZhciBnYyA9IHRoaXMuY3JlYXRlT2JqZWN0KCk7XG4gICAgICB0aGlzLnBvcHVsYXRlT2JqZWN0RnJvbVJlc3VsdChnYywgcmVzdWx0c1swXSk7XG4gICAgICByZXR1cm4gY2FsbGJhY2soZXJyLCBnYyk7XG4gICAgfVxuICAgIHJldHVybiBjYWxsYmFjayhlcnIpO1xuICB9LmJpbmQodGhpcykpO1xufTtcblxuLyoqXG4gKiAgR2V0IHRoZSBmZWF0dXJlIHRhYmxlIG5hbWVzXG4gKlxuICogIEBwYXJhbSB7Y2FsbGJhY2t9IGNhbGxiYWNrIGNhbGxlZCB3aXRoIGFuIGVycm9yIGlmIG9uZSBvY2N1cnJlZCBhbmQgYW4gYXJyYXkgb2YgdGhlIHtGZWF0dXJlVGFibGV9XG4gKi9cbkdlb21ldHJ5Q29sdW1uc0Rhby5wcm90b3R5cGUuZ2V0RmVhdHVyZVRhYmxlcyA9IGZ1bmN0aW9uIChjYWxsYmFjaykge1xuICB2YXIgdGFibGVOYW1lcyA9IFtdO1xuICB0aGlzLmNvbm5lY3Rpb24uZWFjaCgnc2VsZWN0ICcgKyBHZW9tZXRyeUNvbHVtbnNEYW8uQ09MVU1OX1RBQkxFX05BTUUgKyAnIGZyb20gJyArIHRoaXMuZ3BrZ1RhYmxlTmFtZSwgZnVuY3Rpb24oZXJyLCByZXN1bHQsIHJvd0RvbmUpIHtcbiAgICBpZiAoZXJyKSByZXR1cm4gcm93RG9uZShlcnIpO1xuICAgIHRhYmxlTmFtZXMucHVzaChyZXN1bHRbR2VvbWV0cnlDb2x1bW5zRGFvLkNPTFVNTl9UQUJMRV9OQU1FXSk7XG4gICAgcm93RG9uZSgpO1xuICB9LCBmdW5jdGlvbihlcnIsIG51bWJlck9mUmVzdWx0cykge1xuICAgIGNhbGxiYWNrKGVyciwgdGFibGVOYW1lcyk7XG4gIH0pO1xufTtcblxuLyoqXG4gKiAgR2V0IHRoZSBTcGF0aWFsIFJlZmVyZW5jZSBTeXN0ZW0gb2YgdGhlIEdlb21ldHJ5IENvbHVtbnNcbiAqXG4gKiAgQHBhcmFtIHttb2R1bGU6ZGFvL2dlb21ldHJ5Q29sdW1uc35HZW9tZXRyeUNvbHVtbnN9IGdlb21ldHJ5Q29sdW1ucyBnZW9tZXRyeSBjb2x1bW5zXG4gKiAgQHBhcmFtIHtjYWxsYmFja30gY2FsbGJhY2sgY2FsbGVkIHdpdGggYW4gZXJyb3IgaWYgb25lIG9jY3VycmVkIGFuZCB0aGUge1NwYXRpYWxSZWZlcmVuY2VTeXN0ZW19XG4gKi9cbkdlb21ldHJ5Q29sdW1uc0Rhby5wcm90b3R5cGUuZ2V0U3JzID0gZnVuY3Rpb24gKGdlb21ldHJ5Q29sdW1ucywgY2FsbGJhY2spIHtcbiAgdmFyIGRhbyA9IHRoaXMuZ2V0U3BhdGlhbFJlZmVyZW5jZVN5c3RlbURhbygpO1xuICByZXR1cm4gZGFvLnF1ZXJ5Rm9ySWRPYmplY3QoZ2VvbWV0cnlDb2x1bW5zLnNyc19pZCwgY2FsbGJhY2spO1xufTtcblxuLyoqXG4gKiAgR2V0IHRoZSBDb250ZW50cyBvZiB0aGUgR2VvbWV0cnkgQ29sdW1uc1xuICpcbiAqICBAcGFyYW0ge21vZHVsZTpkYW8vZ2VvbWV0cnlDb2x1bW5zfkdlb21ldHJ5Q29sdW1uc30gZ2VvbWV0cnlDb2x1bW5zIGdlb21ldHJ5IGNvbHVtbnNcbiAqICBAcmV0dXJuIHtDb250ZW50c0Rhb30gY29udGVudHMgZGFvXG4gKi9cbkdlb21ldHJ5Q29sdW1uc0Rhby5wcm90b3R5cGUuZ2V0Q29udGVudHMgPSBmdW5jdGlvbiAoZ2VvbWV0cnlDb2x1bW5zLCBjYWxsYmFjaykge1xuICB2YXIgZGFvID0gdGhpcy5nZXRDb250ZW50c0RhbygpO1xuICByZXR1cm4gZGFvLnF1ZXJ5Rm9ySWRPYmplY3QoZ2VvbWV0cnlDb2x1bW5zLnRhYmxlX25hbWUsIGNhbGxiYWNrKTtcbn07XG5cbkdlb21ldHJ5Q29sdW1uc0Rhby5wcm90b3R5cGUuZ2V0U3BhdGlhbFJlZmVyZW5jZVN5c3RlbURhbyA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIG5ldyBTcGF0aWFsUmVmZXJlbmNlU3lzdGVtRGFvKHRoaXMuY29ubmVjdGlvbik7XG59O1xuXG5HZW9tZXRyeUNvbHVtbnNEYW8ucHJvdG90eXBlLmdldENvbnRlbnRzRGFvID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gbmV3IENvbnRlbnRzRGFvKHRoaXMuY29ubmVjdGlvbik7XG59O1xuXG5HZW9tZXRyeUNvbHVtbnNEYW8ucHJvdG90eXBlLmdldFByb2plY3Rpb24gPSBmdW5jdGlvbiAocHJvamVjdGlvbk9iamVjdCwgY2FsbGJhY2spIHtcbiAgdGhpcy5nZXRTcnMocHJvamVjdGlvbk9iamVjdCwgZnVuY3Rpb24oZXJyLCBzcnMpIHtcbiAgICB2YXIgc3JzRGFvID0gdGhpcy5nZXRTcGF0aWFsUmVmZXJlbmNlU3lzdGVtRGFvKCk7XG4gICAgdmFyIHByb2plY3Rpb24gPSBzcnNEYW8uZ2V0UHJvamVjdGlvbihzcnMpO1xuICAgIGNhbGxiYWNrKG51bGwsIHByb2plY3Rpb24pO1xuICB9LmJpbmQodGhpcykpO1xufTtcblxuLyoqXG4gKiB0YWJsZU5hbWUgZmllbGQgbmFtZVxuICogQHR5cGUge1N0cmluZ31cbiAqL1xuR2VvbWV0cnlDb2x1bW5zRGFvLkNPTFVNTl9UQUJMRV9OQU1FID0gXCJ0YWJsZV9uYW1lXCI7XG5cbi8qKlxuICogY29sdW1uTmFtZSBmaWVsZCBuYW1lXG4gKiBAdHlwZSB7U3RyaW5nfVxuICovXG5HZW9tZXRyeUNvbHVtbnNEYW8uQ09MVU1OX0NPTFVNTl9OQU1FID0gXCJjb2x1bW5fbmFtZVwiO1xuXG4vKipcbiAqIGlkIDEgZmllbGQgbmFtZSwgdGFibGVOYW1lXG4gKiBAdHlwZSB7U3RyaW5nfVxuICovXG5HZW9tZXRyeUNvbHVtbnNEYW8uQ09MVU1OX0lEXzEgPSBHZW9tZXRyeUNvbHVtbnNEYW8uQ09MVU1OX1RBQkxFX05BTUU7XG5cbi8qKlxuICogaWQgMiBmaWVsZCBuYW1lLCBjb2x1bW5OYW1lXG4gKiBAdHlwZSB7U3RyaW5nfVxuICovXG5HZW9tZXRyeUNvbHVtbnNEYW8uQ09MVU1OX0lEXzIgPSBHZW9tZXRyeUNvbHVtbnNEYW8uQ09MVU1OX0NPTFVNTl9OQU1FO1xuXG4vKipcbiAqIGdlb21ldHJ5VHlwZU5hbWUgZmllbGQgbmFtZVxuICogQHR5cGUge1N0cmluZ31cbiAqL1xuR2VvbWV0cnlDb2x1bW5zRGFvLkNPTFVNTl9HRU9NRVRSWV9UWVBFX05BTUUgPSBcImdlb21ldHJ5X3R5cGVfbmFtZVwiO1xuXG4vKipcbiAqIHNyc0lkIGZpZWxkIG5hbWVcbiAqIEB0eXBlIHtTdHJpbmd9XG4gKi9cbkdlb21ldHJ5Q29sdW1uc0Rhby5DT0xVTU5fU1JTX0lEID0gJ3Nyc19pZCc7XG5cbi8qKlxuICogeiBmaWVsZCBuYW1lXG4gKiBAdHlwZSB7U3RyaW5nfVxuICovXG5HZW9tZXRyeUNvbHVtbnNEYW8uQ09MVU1OX1ogPSBcInpcIjtcblxuLyoqXG4gKiBtIGZpZWxkIG5hbWVcbiAqIEB0eXBlIHtTdHJpbmd9XG4gKi9cbkdlb21ldHJ5Q29sdW1uc0Rhby5DT0xVTU5fTSA9IFwibVwiO1xuXG4vKipcbiAqIFRhYmxlIE5hbWVcbiAqIEB0eXBlIHtTdHJpbmd9XG4gKi9cbkdlb21ldHJ5Q29sdW1uc0Rhby5wcm90b3R5cGUuZ3BrZ1RhYmxlTmFtZSA9ICdncGtnX2dlb21ldHJ5X2NvbHVtbnMnO1xuXG5HZW9tZXRyeUNvbHVtbnNEYW8ucHJvdG90eXBlLmlkQ29sdW1ucyA9IFtHZW9tZXRyeUNvbHVtbnNEYW8uQ09MVU1OX0lEXzEsIEdlb21ldHJ5Q29sdW1uc0Rhby5DT0xVTU5fSURfMl07XG5HZW9tZXRyeUNvbHVtbnNEYW8ucHJvdG90eXBlLmNvbHVtbnMgPVxuICBbR2VvbWV0cnlDb2x1bW5zRGFvLkNPTFVNTl9UQUJMRV9OQU1FLCBHZW9tZXRyeUNvbHVtbnNEYW8uQ09MVU1OX0NPTFVNTl9OQU1FLCBHZW9tZXRyeUNvbHVtbnNEYW8uQ09MVU1OX0dFT01FVFJZX1RZUEVfTkFNRSwgR2VvbWV0cnlDb2x1bW5zRGFvLkNPTFVNTl9TUlNfSUQsIEdlb21ldHJ5Q29sdW1uc0Rhby5DT0xVTU5fWiwgR2VvbWV0cnlDb2x1bW5zRGFvLkNPTFVNTl9NXTtcblxuR2VvbWV0cnlDb2x1bW5zLlRBQkxFX05BTUUgPSBcInRhYmxlTmFtZVwiO1xuR2VvbWV0cnlDb2x1bW5zLkNPTFVNTl9OQU1FID0gXCJjb2x1bW5OYW1lXCI7XG5HZW9tZXRyeUNvbHVtbnMuR0VPTUVUUllfVFlQRV9OQU1FID0gXCJnZW9tZXRyeVR5cGVOYW1lXCI7XG5HZW9tZXRyeUNvbHVtbnMuU1JTX0lEID0gXCJzcnNJZFwiO1xuR2VvbWV0cnlDb2x1bW5zLlogPSBcInpcIjtcbkdlb21ldHJ5Q29sdW1ucy5NID0gXCJtXCI7XG5cbm1vZHVsZS5leHBvcnRzLkdlb21ldHJ5Q29sdW1uc0RhbyA9IEdlb21ldHJ5Q29sdW1uc0Rhbztcbm1vZHVsZS5leHBvcnRzLkdlb21ldHJ5Q29sdW1ucyA9IEdlb21ldHJ5Q29sdW1ucztcbiIsIi8qKlxuICogZmVhdHVyZUNvbHVtbiBtb2R1bGUuXG4gKiBAbW9kdWxlIGZlYXR1cmVzL3VzZXIvZmVhdHVyZUNvbHVtblxuICovXG5cbnZhciBVc2VyQ29sdW1uID0gcmVxdWlyZSgnLi4vLi4vdXNlci91c2VyQ29sdW1uJylcbiAgLCBEYXRhVHlwZXMgPSByZXF1aXJlKCcuLi8uLi9kYi9kYXRhVHlwZXMnKTtcblxudmFyIHV0aWwgPSByZXF1aXJlKCd1dGlsJyk7XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIHVzZXIgZmVhdHVyZSBjb2x1bW5cbiAqL1xudmFyIEZlYXR1cmVDb2x1bW4gPSBmdW5jdGlvbihpbmRleCwgbmFtZSwgZGF0YVR5cGUsIG1heCwgbm90TnVsbCwgZGVmYXVsdFZhbHVlLCBwcmltYXJ5S2V5LCBnZW9tZXRyeVR5cGUpIHtcbiAgVXNlckNvbHVtbi5jYWxsKHRoaXMsIGluZGV4LCBuYW1lLCBkYXRhVHlwZSwgbWF4LCBub3ROdWxsLCBkZWZhdWx0VmFsdWUsIHByaW1hcnlLZXkpO1xuICB0aGlzLmdlb21ldHJ5VHlwZSA9IGdlb21ldHJ5VHlwZTtcblxuICBpZiAoIWdlb21ldHJ5VHlwZSAmJiBkYXRhVHlwZSA9PT0gRGF0YVR5cGVzLkdQS0dEYXRhVHlwZS5HUEtHX0RUX0dFT01FVFJZKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdEYXRhIG9yIEdlb21ldHJ5IFR5cGUgaXMgcmVxdWlyZWQgdG8gY3JlYXRlIGNvbHVtbjogJyArIG5hbWUpO1xuICB9XG59XG5cbnV0aWwuaW5oZXJpdHMoRmVhdHVyZUNvbHVtbiwgVXNlckNvbHVtbik7XG5cbi8qKlxuICogIENyZWF0ZSBhIG5ldyBwcmltYXJ5IGtleSBjb2x1bW5cbiAqXG4gKiAgQHBhcmFtIHtOdW1iZXJ9IGluZGV4IGNvbHVtbiBpbmRleFxuICogIEBwYXJhbSB7c3RyaW5nfSBuYW1lICBjb2x1bW4gbmFtZVxuICpcbiAqICBAcmV0dXJuIGZlYXR1cmUgY29sdW1uXG4gKi9cbkZlYXR1cmVDb2x1bW4uY3JlYXRlUHJpbWFyeUtleUNvbHVtbldpdGhJbmRleEFuZE5hbWUgPSBmdW5jdGlvbihpbmRleCwgbmFtZSkge1xuICByZXR1cm4gbmV3IEZlYXR1cmVDb2x1bW4oaW5kZXgsIG5hbWUsIERhdGFUeXBlcy5HUEtHRGF0YVR5cGUuR1BLR19EVF9JTlRFR0VSLCB1bmRlZmluZWQsIHRydWUsIHVuZGVmaW5lZCwgdHJ1ZSk7XG59XG5cbi8qKlxuICogIENyZWF0ZSBhIG5ldyBnZW9tZXRyeSBjb2x1bW5cbiAqXG4gKiAgQHBhcmFtIHtOdW1iZXJ9IGluZGV4ICAgICAgICBjb2x1bW4gaW5kZXhcbiAqICBAcGFyYW0ge3N0cmluZ30gbmFtZSAgICAgICAgIGNvbHVtbiBuYW1lXG4gKiAgQHBhcmFtIHtXS0JHZW9tZXRyeVR5cGV9IHR5cGUgICAgICAgICBnZW9tZXRyeSB0eXBlXG4gKiAgQHBhcmFtIHtCb29sZWFufSBub3ROdWxsICAgICAgbm90IG51bGxcbiAqICBAcGFyYW0ge09iamVjdH0gZGVmYXVsdFZhbHVlIGRlZmF1bHQgdmFsdWUgb3IgbmlsXG4gKlxuICogIEByZXR1cm4gZmVhdHVyZSBjb2x1bW5cbiAqL1xuRmVhdHVyZUNvbHVtbi5jcmVhdGVHZW9tZXRyeUNvbHVtbiA9IGZ1bmN0aW9uKGluZGV4LCBuYW1lLCB0eXBlLCBub3ROdWxsLCBkZWZhdWx0VmFsdWUpIHtcbiAgcmV0dXJuIG5ldyBGZWF0dXJlQ29sdW1uKGluZGV4LCBuYW1lLCBEYXRhVHlwZXMuR1BLR0RhdGFUeXBlLkdQS0dfRFRfR0VPTUVUUlksIHVuZGVmaW5lZCwgbm90TnVsbCwgZGVmYXVsdFZhbHVlLCBmYWxzZSwgdHlwZSk7XG59XG5cbi8qKlxuICogIENyZWF0ZSBhIG5ldyBjb2x1bW5cbiAqXG4gKiAgQHBhcmFtIHtOdW1iZXJ9IGluZGV4ICAgICAgICBjb2x1bW4gaW5kZXhcbiAqICBAcGFyYW0ge3N0cmluZ30gbmFtZSAgICAgICAgIGNvbHVtbiBuYW1lXG4gKiAgQHBhcmFtIHttb2R1bGU6ZGIvZGF0YVR5cGVzfkdQS0dEYXRhVHlwZX0gdHlwZSAgICAgICAgIGRhdGEgdHlwZVxuICogIEBwYXJhbSB7Qm9vbGVhbn0gbm90TnVsbCAgICAgIG5vdCBudWxsXG4gKiAgQHBhcmFtIHtPYmplY3R9IGRlZmF1bHRWYWx1ZSBkZWZhdWx0IHZhbHVlIG9yIG5pbFxuICpcbiAqICBAcmV0dXJuIGZlYXR1cmUgY29sdW1uXG4gKi9cbkZlYXR1cmVDb2x1bW4uY3JlYXRlQ29sdW1uV2l0aEluZGV4ID0gZnVuY3Rpb24oaW5kZXgsIG5hbWUsIHR5cGUsIG5vdE51bGwsIGRlZmF1bHRWYWx1ZSkge1xuICByZXR1cm4gRmVhdHVyZUNvbHVtbi5jcmVhdGVDb2x1bW5XaXRoSW5kZXhBbmRNYXgoaW5kZXgsIG5hbWUsIHR5cGUsIHVuZGVmaW5lZCwgbm90TnVsbCwgZGVmYXVsdFZhbHVlKTtcbn1cblxuLyoqXG4gKiAgQ3JlYXRlIGEgbmV3IGNvbHVtblxuICpcbiAqICBAcGFyYW0ge051bWJlcn0gaW5kZXggICAgICAgIGNvbHVtbiBpbmRleFxuICogIEBwYXJhbSB7c3RyaW5nfSBuYW1lICAgICAgICAgY29sdW1uIG5hbWVcbiAqICBAcGFyYW0ge21vZHVsZTpkYi9kYXRhVHlwZXN+R1BLR0RhdGFUeXBlfSB0eXBlICAgICAgICAgZGF0YSB0eXBlXG4gKiAgQHBhcmFtIHtOdW1iZXJ9IG1heCBtYXggdmFsdWVcbiAqICBAcGFyYW0ge0Jvb2xlYW59IG5vdE51bGwgICAgICBub3QgbnVsbFxuICogIEBwYXJhbSB7T2JqZWN0fSBkZWZhdWx0VmFsdWUgZGVmYXVsdCB2YWx1ZSBvciBuaWxcbiAqXG4gKiAgQHJldHVybiBmZWF0dXJlIGNvbHVtblxuICovXG5GZWF0dXJlQ29sdW1uLmNyZWF0ZUNvbHVtbldpdGhJbmRleEFuZE1heCA9IGZ1bmN0aW9uKGluZGV4LCBuYW1lLCB0eXBlLCBtYXgsIG5vdE51bGwsIGRlZmF1bHRWYWx1ZSkge1xuICByZXR1cm4gbmV3IEZlYXR1cmVDb2x1bW4oaW5kZXgsIG5hbWUsIHR5cGUsIG1heCwgbm90TnVsbCwgZGVmYXVsdFZhbHVlLCBmYWxzZSk7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIHRoaXMgY29sdW1uIGlzIGEgZ2VvbWV0cnlcbiAqIEByZXR1cm4ge0Jvb2xlYW59IHRydWUgaWYgYSBnZW9tZXRyeSBjb2x1bW5cbiAqL1xuRmVhdHVyZUNvbHVtbi5wcm90b3R5cGUuaXNHZW9tZXRyeSA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMuZ2VvbWV0cnlUeXBlICE9PSB1bmRlZmluZWQ7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IEZlYXR1cmVDb2x1bW47XG4iLCIvKipcbiAqIGZlYXR1cmVEYW8gbW9kdWxlLlxuICogQG1vZHVsZSBmZWF0dXJlcy91c2VyL2ZlYXR1cmVEYW9cbiAqL1xuXG52YXIgVXNlckRhbyA9IHJlcXVpcmUoJy4uLy4uL3VzZXIvdXNlckRhbycpXG4gICwgR2VvbWV0cnlDb2x1bW5zRGFvID0gcmVxdWlyZSgnLi4vY29sdW1ucycpLkdlb21ldHJ5Q29sdW1uc0Rhb1xuICAsIENvbnRlbnRzRGFvID0gcmVxdWlyZSgnLi4vLi4vY29yZS9jb250ZW50cycpLkNvbnRlbnRzRGFvXG4gICwgRmVhdHVyZVJvdyA9IHJlcXVpcmUoJy4vZmVhdHVyZVJvdycpXG4gICwgRmVhdHVyZVRhYmxlSW5kZXggPSByZXF1aXJlKCcuLi8uLi9leHRlbnNpb24vaW5kZXgvZmVhdHVyZVRhYmxlSW5kZXgnKTtcblxudmFyIHV0aWwgPSByZXF1aXJlKCd1dGlsJyk7XG5cbi8qKlxuICogIEluaXRpYWxpemVcbiAqXG4gKiAgQHBhcmFtIGRhdGFiYXNlICAgICAgICBkYXRhYmFzZSBjb25uZWN0aW9uXG4gKiAgQHBhcmFtIHRhYmxlICAgICAgICAgICBmZWF0dXJlIHRhYmxlXG4gKiAgQHBhcmFtIGdlb21ldHJ5Q29sdW1ucyBnZW9tZXRyeSBjb2x1bW5zXG4gKlxuICogIEByZXR1cm4gbmV3IGZlYXR1cmUgZGFvXG4gKi9cbi8qKlxuICogSW5pdGlhbGl6ZVxuICogQHBhcmFtICB7c3FsaXRlM30gZGIgICAgICAgICAgICAgIGRhdGFiYXNlIGNvbm5lY3Rpb25cbiAqIEBwYXJhbSAge0ZlYXR1cmVUYWJsZX0gdGFibGUgICAgICAgICAgIGZlYXR1cmUgdGFibGVcbiAqIEBwYXJhbSAge0dlb21ldHJ5Q29sdW1uc30gZ2VvbWV0cnlDb2x1bW5zIGdlb21ldHJ5IGNvbHVtbnNcbiAqIEBwYXJhbSAge01ldGFkYXRhRGJ9IG1ldGFkYXRhRGIgICAgICBtZXRhZGF0YSBkYlxuICovXG52YXIgRmVhdHVyZURhbyA9IGZ1bmN0aW9uKGRiLCB0YWJsZSwgZ2VvbWV0cnlDb2x1bW5zLCBtZXRhZGF0YURiKSB7XG4gIFVzZXJEYW8uY2FsbCh0aGlzLCBkYiwgdGFibGUpO1xuICB0aGlzLmdlb21ldHJ5Q29sdW1ucyA9IGdlb21ldHJ5Q29sdW1ucztcbiAgdGhpcy5tZXRhZGF0YURiID0gbWV0YWRhdGFEYjtcbiAgdGhpcy5mZWF0dXJlVGFibGVJbmRleCA9IG5ldyBGZWF0dXJlVGFibGVJbmRleCh0aGlzLmNvbm5lY3Rpb24sIHRoaXMpO1xuICB2YXIgZGFvID0gdGhpcy5nZXRHZW9tZXRyeUNvbHVtbnNEYW8oKTtcbiAgLy8gVE9ETyBmaWd1cmUgb3V0IGhvdyB0byBhc3luYyBJbml0aWFsaXplXG4gIC8vIGlmICghZGFvLmdldENvbnRlbnRzKGdlb21ldHJ5Q29sdW1ucykpIHtcbiAgLy8gICB0aHJvdyBuZXcgRXJyb3IoJ0dlb21ldHJ5IENvbHVtbnMgJyArIGRhby5nZXRJZChnZW9tZXRyeUNvbHVtbnMpICsgJyBoYXMgbnVsbCBDb250ZW50cycpO1xuICAvLyB9XG4gIC8vIGlmICghZGFvLmdldFNycyhnZW9tZXRyeUNvbHVtbnMpKSB7XG4gIC8vICAgdGhyb3cgbmV3IEVycm9yKCdHZW9tZXRyeSBDb2x1bW5zICcgKyBkYW8uZ2V0SWQoZ2VvbWV0cnlDb2x1bW5zKSArICcgaGFzIG51bGwgU3BhdGlhbCBSZWZlcmVuY2UgU3lzdGVtJyk7XG4gIC8vIH1cbiAgLy8gdGhpcy5wcm9qZWN0aW9uID0gZGFvLmdldFByb2plY3Rpb24oZ2VvbWV0cnlDb2x1bW5zKTtcbn1cblxudXRpbC5pbmhlcml0cyhGZWF0dXJlRGFvLCBVc2VyRGFvKTtcblxuRmVhdHVyZURhby5wcm90b3R5cGUuY3JlYXRlT2JqZWN0ID0gZnVuY3Rpb24gKHJlc3VsdHMpIHtcbiAgaWYgKHJlc3VsdHMpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRSb3cocmVzdWx0cyk7XG4gIH1cbiAgcmV0dXJuIHRoaXMubmV3Um93KCk7XG59O1xuXG4vKipcbiAqIEdldCB0aGUgZmVhdHVyZSB0YWJsZVxuICogQHJldHVybiB7RmVhdHVyZVRhYmxlfSB0aGUgZmVhdHVyZSB0YWJsZVxuICovXG5GZWF0dXJlRGFvLnByb3RvdHlwZS5nZXRGZWF0dXJlVGFibGUgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLnRhYmxlO1xufTtcblxuLyoqXG4gKiBHZXQgdGhlIGZlYXR1cmUgcm93IGZvciB0aGUgY3VycmVudCByZXN1bHQgaW4gdGhlIHJlc3VsdCBzZXRcbiAqIEBwYXJhbSAge29iamVjdH0gcmVzdWx0cyByZXN1bHRzXG4gKiBAcmV0dXJuIHtGZWF0dXJlUm93fSAgICAgICAgIGZlYXR1cmUgcm93XG4gKi9cbkZlYXR1cmVEYW8ucHJvdG90eXBlLmdldEZlYXR1cmVSb3cgPSBmdW5jdGlvbiAocmVzdWx0cykge1xuICByZXR1cm4gdGhpcy5nZXRSb3cocmVzdWx0cyk7XG59O1xuXG4vKipcbiAqIENyZWF0ZSBhIG5ldyBmZWF0dXJlIHJvdyB3aXRoIHRoZSBjb2x1bW4gdHlwZXMgYW5kIHZhbHVlc1xuICogQHBhcmFtICB7QXJyYXl9IGNvbHVtblR5cGVzIGNvbHVtbiB0eXBlc1xuICogQHBhcmFtICB7QXJyYXl9IHZhbHVlcyAgICAgIHZhbHVlc1xuICogQHJldHVybiB7RmVhdHVyZVJvd30gICAgICAgICAgICAgZmVhdHVyZSByb3dcbiAqL1xuRmVhdHVyZURhby5wcm90b3R5cGUubmV3Um93V2l0aENvbHVtblR5cGVzID0gZnVuY3Rpb24gKGNvbHVtblR5cGVzLCB2YWx1ZXMpIHtcbiAgcmV0dXJuIG5ldyBGZWF0dXJlUm93KHRoaXMuZ2V0RmVhdHVyZVRhYmxlKCksIGNvbHVtblR5cGVzLCB2YWx1ZXMpO1xufTtcblxuLyoqXG4gKiBDcmVhdGUgYSBuZXcgZmVhdHVyZSByb3dcbiAqIEByZXR1cm4ge0ZlYXR1cmVSb3d9IGZlYXR1cmUgcm93XG4gKi9cbkZlYXR1cmVEYW8ucHJvdG90eXBlLm5ld1JvdyA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIG5ldyBGZWF0dXJlUm93KHRoaXMuZ2V0RmVhdHVyZVRhYmxlKCkpO1xufTtcblxuLyoqXG4gKiBHZXQgdGhlIGdlb21ldHJ5IGNvbHVtbiBuYW1lXG4gKiBAcmV0dXJuIHtzdHJpbmd9IHRoZSBnZW9tZXRyeSBjb2x1bW4gbmFtZVxuICovXG5GZWF0dXJlRGFvLnByb3RvdHlwZS5nZXRHZW9tZXRyeUNvbHVtbk5hbWUgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLmdlb21ldHJ5Q29sdW1ucy5jb2x1bW5fbmFtZTtcbn07XG5cbi8qKlxuICogR2V0IHRoZSBnZW9tZXRyeSB0eXBlc1xuICogQHJldHVybiB7V0tCR2VvbWV0cnlUeXBlfSB3ZWxsIGtub3duIGJpbmFyeSBnZW9tZXRyeSB0eXBlXG4gKi9cbkZlYXR1cmVEYW8ucHJvdG90eXBlLmdldEdlb21ldHJ5VHlwZSA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMuZ2VvbWV0cnlDb2x1bW5zLmdldEdlb21ldHJ5VHlwZSgpO1xufTtcblxuLyoqXG4gKiBHZXQgdGhlIEdlb21ldHJ5IENvbHVtbnMgREFPXG4gKiBAcmV0dXJuIHtHZW9tZXRyeUNvbHVtbnNEYW99IGdlb21ldHJ5IGNvbHVtbnMgZGFvXG4gKi9cbkZlYXR1cmVEYW8ucHJvdG90eXBlLmdldEdlb21ldHJ5Q29sdW1uc0RhbyA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIG5ldyBHZW9tZXRyeUNvbHVtbnNEYW8odGhpcy5jb25uZWN0aW9uKTtcbn07XG5cbi8qKlxuICogR2V0IHRoZSBDb250ZW50c0Rhb1xuICogQHJldHVybiB7Q29udGVudHNEYW99IGNvbnRlbnRzIGRhb1xuICovXG5GZWF0dXJlRGFvLnByb3RvdHlwZS5nZXRDb250ZW50c0RhbyA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIG5ldyBDb250ZW50c0Rhbyh0aGlzLmNvbm5lY3Rpb24pO1xufTtcblxuRmVhdHVyZURhby5wcm90b3R5cGUuZ2V0U3JzID0gZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAgdGhpcy5nZXRHZW9tZXRyeUNvbHVtbnNEYW8oKS5nZXRTcnModGhpcy5nZW9tZXRyeUNvbHVtbnMsIGNhbGxiYWNrKTtcbn07XG5cbi8qKlxuICogRGV0ZXJtaW5lIGlmIHRoZSBmZWF0dXJlIHRhYmxlIGlzIGluZGV4ZWRcbiAqIEBwYXJhbSAge0Z1bmN0aW9ufSBjYWxsYmFjayBjYWxsZWQgd2l0aCBlcnIgaWYgb25lIG9jY3VycmVkIGFuZCB0cnVlIG9yIGZhbHNlIGluZGljYXRpbmcgdGhlIGluZGV4ZWQgc3RhdHVzXG4gKi9cbkZlYXR1cmVEYW8ucHJvdG90eXBlLmlzSW5kZXhlZCA9IGZ1bmN0aW9uKGNhbGxiYWNrKSB7XG4gIHJldHVybiB0aGlzLmZlYXR1cmVUYWJsZUluZGV4LmlzSW5kZXhlZChjYWxsYmFjayk7XG59XG5cbkZlYXR1cmVEYW8ucHJvdG90eXBlLnF1ZXJ5SW5kZXhlZEZlYXR1cmVzV2l0aFdlYk1lcmNhdG9yQm91bmRpbmdCb3ggPSBmdW5jdGlvbihib3VuZGluZ0JveCwgZmVhdHVyZVJvd0NhbGxiYWNrLCBkb25lQ2FsbGJhY2spIHtcbiAgdGhpcy5mZWF0dXJlVGFibGVJbmRleC5xdWVyeVdpdGhCb3VuZGluZ0JveChib3VuZGluZ0JveCwgMzg1NywgZnVuY3Rpb24oZXJyLCByb3csIHJvd0NhbGxiYWNrKSB7XG4gICAgZmVhdHVyZVJvd0NhbGxiYWNrKGVyciwgdGhpcy5nZXRGZWF0dXJlUm93KHJvdyksIHJvd0NhbGxiYWNrKTtcbiAgfS5iaW5kKHRoaXMpLCBkb25lQ2FsbGJhY2spO1xufVxuXG5GZWF0dXJlRGFvLnByb3RvdHlwZS5nZXRCb3VuZGluZ0JveCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgLy8gVE9ET1xuICAvLyBHUEtHR2VvbWV0cnlDb2x1bW5zRGFvICogZ2VvbWV0cnlDb2x1bW5zRGFvID0gW3NlbGYgZ2V0R2VvbWV0cnlDb2x1bW5zRGFvXTtcbiAgLy8gR1BLR0NvbnRlbnRzICogY29udGVudHMgPSBbZ2VvbWV0cnlDb2x1bW5zRGFvIGdldENvbnRlbnRzOnNlbGYuZ2VvbWV0cnlDb2x1bW5zXTtcbiAgLy8gR1BLR0NvbnRlbnRzRGFvICogY29udGVudHNEYW8gPSBbc2VsZiBnZXRDb250ZW50c0Rhb107XG4gIC8vIEdQS0dQcm9qZWN0aW9uICogY29udGVudHNQcm9qZWN0aW9uID0gW2NvbnRlbnRzRGFvIGdldFByb2plY3Rpb246Y29udGVudHNdO1xuICAvL1xuICAvLyBHUEtHQm91bmRpbmdCb3ggKiBib3VuZGluZ0JveCA9IFtjb250ZW50cyBnZXRCb3VuZGluZ0JveF07XG4gIC8vIGlmKFtzZWxmLnByb2plY3Rpb24uZXBzZyBjb21wYXJlOmNvbnRlbnRzUHJvamVjdGlvbi5lcHNnXSAhPSBOU09yZGVyZWRTYW1lKXtcbiAgLy8gICAgIEdQS0dQcm9qZWN0aW9uVHJhbnNmb3JtICogdHJhbnNmb3JtID0gW1tHUEtHUHJvamVjdGlvblRyYW5zZm9ybSBhbGxvY10gaW5pdFdpdGhGcm9tUHJvamVjdGlvbjpjb250ZW50c1Byb2plY3Rpb24gYW5kVG9Qcm9qZWN0aW9uOnNlbGYucHJvamVjdGlvbl07XG4gIC8vICAgICBib3VuZGluZ0JveCA9IFt0cmFuc2Zvcm0gdHJhbnNmb3JtV2l0aEJvdW5kaW5nQm94OmJvdW5kaW5nQm94XTtcbiAgLy8gfVxuICAvL1xuICAvLyByZXR1cm4gYm91bmRpbmdCb3g7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IEZlYXR1cmVEYW87XG4iLCIvKipcbiAqIGZlYXR1cmVSb3cgbW9kdWxlLlxuICogQG1vZHVsZSBmZWF0dXJlcy91c2VyL2ZlYXR1cmVSb3dcbiAqL1xuXG52YXIgVXNlclJvdyA9IHJlcXVpcmUoJy4uLy4uL3VzZXIvdXNlclJvdycpXG4gICwgRmVhdHVyZUNvbHVtbiA9IHJlcXVpcmUoJy4vZmVhdHVyZUNvbHVtbicpXG4gICwgR2VvbWV0cnlEYXRhID0gcmVxdWlyZSgnLi4vLi4vZ2VvbS9nZW9tZXRyeURhdGEnKTtcblxudmFyIHV0aWwgPSByZXF1aXJlKCd1dGlsJyk7XG5cbi8qKlxuICogRmVhdHVyZSBSb3cgY29udGFpbmluZyB0aGUgdmFsdWVzIGZyb20gYSBzaW5nbGUgcmVzdWx0IHNldCByb3dcbiAqIEBwYXJhbSAge0ZlYXR1cmVUYWJsZX0gZmVhdHVyZVRhYmxlIGZlYXR1cmUgdGFibGVcbiAqIEBwYXJhbSAge0FycmF5fSBjb2x1bW5UeXBlcyAgY29sdW1uIHR5cGVzXG4gKiBAcGFyYW0gIHtBcnJheX0gdmFsdWVzICAgICAgIHZhbHVlc1xuICovXG52YXIgRmVhdHVyZVJvdyA9IGZ1bmN0aW9uKGZlYXR1cmVUYWJsZSwgY29sdW1uVHlwZXMsIHZhbHVlcykge1xuICBVc2VyUm93LmNhbGwodGhpcywgZmVhdHVyZVRhYmxlLCBjb2x1bW5UeXBlcywgdmFsdWVzKTtcbiAgdGhpcy5mZWF0dXJlVGFibGUgPSBmZWF0dXJlVGFibGU7XG59XG5cbnV0aWwuaW5oZXJpdHMoRmVhdHVyZVJvdywgVXNlclJvdyk7XG5cbi8qKlxuICogR2V0IHRoZSBnZW9tZXRyeSBjb2x1bW4gaW5kZXhcbiAqIEByZXR1cm4ge051bWJlcn0gZ2VvbWV0cnkgY29sdW1uIGluZGV4XG4gKi9cbkZlYXR1cmVSb3cucHJvdG90eXBlLmdldEdlb21ldHJ5Q29sdW1uSW5kZXggPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLmZlYXR1cmVUYWJsZS5nZW9tZXRyeUluZGV4O1xufTtcblxuLyoqXG4gKiBHZXQgdGhlIGdlb21ldHJ5IGNvbHVtblxuICogQHJldHVybiB7RmVhdHVyZUNvbHVtbn0gZ2VvbWV0cnkgY29sdW1uXG4gKi9cbkZlYXR1cmVSb3cucHJvdG90eXBlLmdldEdlb21ldHJ5Q29sdW1uID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5mZWF0dXJlVGFibGUuZ2V0R2VvbWV0cnlDb2x1bW4oKTtcbn07XG5cbi8qKlxuICogR2V0IHRoZSBnZW9tZXRyeVxuICogQHJldHVybiB7QnVmZmVyfSBnZW9tZXRyeSBkYXRhXG4gKi9cbkZlYXR1cmVSb3cucHJvdG90eXBlLmdldEdlb21ldHJ5ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5nZXRWYWx1ZVdpdGhJbmRleCh0aGlzLmZlYXR1cmVUYWJsZS5nZW9tZXRyeUluZGV4KTtcbn07XG5cbi8qKlxuICogc2V0IHRoZSBnZW9tZXRyeVxuICogQHBhcmFtIHtCdWZmZXJ9IGdlb21ldHJ5RGF0YSBnZW9tZXRyeSBkYXRhXG4gKi9cbkZlYXR1cmVSb3cucHJvdG90eXBlLnNldEdlb21ldHJ5ID0gZnVuY3Rpb24gKGdlb21ldHJ5RGF0YSkge1xuICB0aGlzLnNldFZhbHVlV2l0aEluZGV4KHRoaXMuZmVhdHVyZVRhYmxlLmdlb21ldHJ5SW5kZXgsIGdlb21ldHJ5RGF0YSk7XG59O1xuXG5GZWF0dXJlUm93LnByb3RvdHlwZS50b09iamVjdFZhbHVlID0gZnVuY3Rpb24gKGluZGV4LCB2YWx1ZSkge1xuICB2YXIgb2JqZWN0VmFsdWUgPSB2YWx1ZTtcbiAgdmFyIGNvbHVtbiA9IHRoaXMuZ2V0Q29sdW1uV2l0aEluZGV4KGluZGV4KTtcbiAgaWYgKGNvbHVtbi5pc0dlb21ldHJ5KCkgJiYgdmFsdWUpIHtcbiAgICBvYmplY3RWYWx1ZSA9IG5ldyBHZW9tZXRyeURhdGEodmFsdWUpO1xuICB9XG4gIHJldHVybiBvYmplY3RWYWx1ZTtcbn07XG5cbkZlYXR1cmVSb3cucHJvdG90eXBlLnRvRGF0YWJhc2VWYWx1ZSA9IGZ1bmN0aW9uKGNvbHVtbk5hbWUpIHtcbiAgdmFyIGNvbHVtbiA9IHRoaXMuZ2V0Q29sdW1uV2l0aENvbHVtbk5hbWUoY29sdW1uTmFtZSk7XG4gIHZhciB2YWx1ZSA9IHRoaXMuZ2V0VmFsdWVXaXRoQ29sdW1uTmFtZShjb2x1bW5OYW1lKTtcbiAgaWYgKGNvbHVtbi5pc0dlb21ldHJ5KCkpIHtcbiAgICByZXR1cm4gdmFsdWUudG9EYXRhKCk7XG4gIH1cblxuICByZXR1cm4gdmFsdWU7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gRmVhdHVyZVJvdztcbiIsIi8qKlxuICogZmVhdHVyZVRhYmxlIG1vZHVsZS5cbiAqIEBtb2R1bGUgZmVhdHVyZXMvdXNlci9mZWF0dXJlVGFibGVcbiAqL1xuXG52YXIgVXNlclRhYmxlID0gcmVxdWlyZSgnLi4vLi4vdXNlci91c2VyVGFibGUnKTtcblxudmFyIHV0aWwgPSByZXF1aXJlKCd1dGlsJyk7XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIHVzZXIgZmVhdHVyZSB0YWJsZVxuICogQHBhcmFtICB7c3RyaW5nfSB0YWJsZU5hbWUgdGFibGUgbmFtZVxuICogQHBhcmFtICB7YXJyYXl9IGNvbHVtbnMgICBmZWF0dXJlIGNvbHVtbnNcbiAqL1xudmFyIEZlYXR1cmVUYWJsZSA9IGZ1bmN0aW9uKHRhYmxlTmFtZSwgY29sdW1ucykge1xuICBVc2VyVGFibGUuY2FsbCh0aGlzLCB0YWJsZU5hbWUsIGNvbHVtbnMpO1xuICB2YXIgZ2VvbWV0cnkgPSB1bmRlZmluZWQ7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgY29sdW1ucy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBjb2x1bW4gPSBjb2x1bW5zW2ldO1xuICAgIGlmIChjb2x1bW4uaXNHZW9tZXRyeSgpKSB7XG4gICAgICB0aGlzLmR1cGxpY2F0ZUNoZWNrKGNvbHVtbi5pbmRleCwgZ2VvbWV0cnksIC8qIFdLQl9HRU9NRVRSWV9OQU1FICovICdHRU9NRVRSWScpO1xuICAgICAgZ2VvbWV0cnkgPSBjb2x1bW4uaW5kZXg7XG4gICAgfVxuICB9XG4gIHRoaXMubWlzc2luZ0NoZWNrKGdlb21ldHJ5LCAvKiBXS0JfR0VPTUVUUllfTkFNRSAqLyAnR0VPTUVUUlknKTtcbiAgdGhpcy5nZW9tZXRyeUluZGV4ID0gZ2VvbWV0cnk7XG59XG5cbnV0aWwuaW5oZXJpdHMoRmVhdHVyZVRhYmxlLCBVc2VyVGFibGUpO1xuXG4vKipcbiAqIEdldCB0aGUgZ2VvbWV0cnkgZmVhdHVyZSBjb2x1bW5cbiAqIEByZXR1cm4ge0ZlYXR1cmVDb2x1bW59IGdlb21ldHJ5IGZlYXR1cmUgY29sdW1uXG4gKi9cbkZlYXR1cmVUYWJsZS5wcm90b3R5cGUuZ2V0R2VvbWV0cnlDb2x1bW4gPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLmdldENvbHVtbldpdGhJbmRleCh0aGlzLmdlb21ldHJ5SW5kZXgpO1xufTtcblxuRmVhdHVyZVRhYmxlLnByb3RvdHlwZS5nZXRUYWJsZVR5cGUgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIFVzZXJUYWJsZS5GRUFUVVJFX1RBQkxFO1xufVxuXG4vKipcbiAqIFRoZSBGZWF0dXJlVGFibGVcbiAqIEB0eXBlIHtGZWF0dXJlVGFibGV9XG4gKi9cbm1vZHVsZS5leHBvcnRzID0gRmVhdHVyZVRhYmxlO1xuIiwiLyoqXG4gKiBmZWF0dXJlVGFibGVSZWFkZXIgbW9kdWxlLlxuICogQG1vZHVsZSBmZWF0dXJlcy91c2VyL2ZlYXR1cmVUYWJsZVJlYWRlclxuICovXG5cbnZhciBVc2VyVGFibGVSZWFkZXIgPSByZXF1aXJlKCcuLi8uLi91c2VyL3VzZXJUYWJsZVJlYWRlcicpXG4gICwgRmVhdHVyZVRhYmxlID0gcmVxdWlyZSgnLi9mZWF0dXJlVGFibGUnKVxuICAsIEZlYXR1cmVDb2x1bW4gPSByZXF1aXJlKCcuL2ZlYXR1cmVDb2x1bW4nKVxuICAsIEdlb21ldHJ5Q29sdW1uc0RhbyA9IHJlcXVpcmUoJy4uL2NvbHVtbnMnKS5HZW9tZXRyeUNvbHVtbnNEYW9cbiAgLCBEYXRhVHlwZXMgPSByZXF1aXJlKCcuLi8uLi9kYi9kYXRhVHlwZXMnKVxuICAsIHdrYiA9IHJlcXVpcmUoJy4uLy4uL3drYicpO1xuXG52YXIgdXRpbCA9IHJlcXVpcmUoJ3V0aWwnKTtcblxuLyoqXG4qIFJlYWRzIHRoZSBtZXRhZGF0YSBmcm9tIGFuIGV4aXN0aW5nIGZlYXR1cmUgdGFibGVcbiogQGNsYXNzIEZlYXR1cmVUYWJsZVJlYWRlclxuKiBAZXh0ZW5kcyB7bW9kdWxlOnVzZXJ+VXNlclRhYmxlUmVhZGVyfVxuKi9cbnZhciBGZWF0dXJlVGFibGVSZWFkZXIgPSBmdW5jdGlvbih0YWJsZU5hbWVPckdlb21ldHJ5Q29sdW1ucykge1xuICBpZiAodXRpbC5pc1N0cmluZyh0YWJsZU5hbWVPckdlb21ldHJ5Q29sdW1ucykpIHtcbiAgICBVc2VyVGFibGVSZWFkZXIuY2FsbCh0aGlzLCB0YWJsZU5hbWVPckdlb21ldHJ5Q29sdW1ucyk7XG4gIH0gZWxzZSB7XG4gICAgVXNlclRhYmxlUmVhZGVyLmNhbGwodGhpcywgdGFibGVOYW1lT3JHZW9tZXRyeUNvbHVtbnMudGFibGVfbmFtZSk7XG4gICAgdGhpcy5nZW9tZXRyeUNvbHVtbnMgPSB0YWJsZU5hbWVPckdlb21ldHJ5Q29sdW1ucztcbiAgfVxufVxuXG51dGlsLmluaGVyaXRzKEZlYXR1cmVUYWJsZVJlYWRlciwgVXNlclRhYmxlUmVhZGVyKTtcblxuRmVhdHVyZVRhYmxlUmVhZGVyLnByb3RvdHlwZS5yZWFkRmVhdHVyZVRhYmxlID0gZnVuY3Rpb24gKGRiLCBjYWxsYmFjaykge1xuICBpZiAoIXRoaXMuZ2VvbWV0cnlDb2x1bW5zKSB7XG4gICAgbmV3IEdlb21ldHJ5Q29sdW1uc0RhbyhkYikucXVlcnlGb3JUYWJsZU5hbWUodGhpcy50YWJsZV9uYW1lLCBmdW5jdGlvbihlcnIsIGdlb21ldHJ5Q29sdW1ucykge1xuICAgICAgdGhpcy5nZW9tZXRyeUNvbHVtbnMgPSBnZW9tZXRyeUNvbHVtbnM7XG4gICAgICB0aGlzLnJlYWRUYWJsZShkYiwgY2FsbGJhY2spO1xuICAgIH0uYmluZCh0aGlzKSk7XG4gIH0gZWxzZSB7XG4gICAgdGhpcy5yZWFkVGFibGUoZGIsIGNhbGxiYWNrKTtcbiAgfVxufTtcblxuRmVhdHVyZVRhYmxlUmVhZGVyLnByb3RvdHlwZS5jcmVhdGVUYWJsZVdpdGhOYW1lQW5kQ29sdW1ucyA9IGZ1bmN0aW9uICh0YWJsZU5hbWUsIGNvbHVtbnMpIHtcbiAgcmV0dXJuIG5ldyBGZWF0dXJlVGFibGUodGFibGVOYW1lLCBjb2x1bW5zKTtcbn07XG5cbkZlYXR1cmVUYWJsZVJlYWRlci5wcm90b3R5cGUuY3JlYXRlQ29sdW1uV2l0aFJlc3VsdHMgPSBmdW5jdGlvbiAocmVzdWx0cywgaW5kZXgsIG5hbWUsIHR5cGUsIG1heCwgbm90TnVsbCwgZGVmYXVsdFZhbHVlSW5kZXgsIHByaW1hcnlLZXkpIHtcbiAgdmFyIGdlb21ldHJ5ID0gbmFtZSA9PT0gdGhpcy5nZW9tZXRyeUNvbHVtbnMuY29sdW1uX25hbWU7XG4gIHZhciBnZW9tZXRyeVR5cGUgPSB1bmRlZmluZWQ7XG4gIHZhciBkYXRhVHlwZSA9IHVuZGVmaW5lZDtcbiAgaWYgKGdlb21ldHJ5KSB7XG4gICAgZ2VvbWV0cnlUeXBlID0gd2tiLmZyb21OYW1lKHR5cGUpO1xuICB9IGVsc2Uge1xuICAgIGRhdGFUeXBlID0gRGF0YVR5cGVzLmZyb21OYW1lKHR5cGUpO1xuICB9XG4gIHZhciBkZWZhdWx0VmFsdWUgPSB1bmRlZmluZWQ7XG4gIGlmIChkZWZhdWx0VmFsdWVJbmRleCkge1xuICB9XG4gIHZhciBjb2x1bW4gPSBuZXcgRmVhdHVyZUNvbHVtbihpbmRleCwgbmFtZSwgZGF0YVR5cGUsIG1heCwgbm90TnVsbCwgZGVmYXVsdFZhbHVlLCBwcmltYXJ5S2V5LCBnZW9tZXRyeVR5cGUpO1xuXG4gIHJldHVybiBjb2x1bW47XG59O1xuXG4vKipcbiAqIC0oR1BLR1VzZXJDb2x1bW4gKikgY3JlYXRlQ29sdW1uV2l0aFJlc3VsdHM6IChHUEtHUmVzdWx0U2V0ICopIHJlc3VsdHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kSW5kZXg6IChpbnQpIGluZGV4XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmROYW1lOiAoTlNTdHJpbmcgKikgbmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kVHlwZTogKE5TU3RyaW5nICopIHR5cGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmRNYXg6IChOU051bWJlciAqKSBtYXhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZE5vdE51bGw6IChCT09MKSBub3ROdWxsXG4gICAgICAgICAgICAgICAgICAgICAgIGFuZERlZmF1bHRWYWx1ZUluZGV4OiAoaW50KSBkZWZhdWx0VmFsdWVJbmRleFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kUHJpbWFyeUtleTogKEJPT0wpIHByaW1hcnlLZXl7XG5cbiAgICBCT09MIGdlb21ldHJ5ID0gW25hbWUgaXNFcXVhbFRvU3RyaW5nOnNlbGYuZ2VvbWV0cnlDb2x1bW5zLmNvbHVtbk5hbWVdO1xuXG4gICAgZW51bSBXS0JHZW9tZXRyeVR5cGUgZ2VvbWV0cnlUeXBlID0gV0tCX05PTkU7XG4gICAgZW51bSBHUEtHRGF0YVR5cGUgZGF0YVR5cGUgPSBHUEtHX0RUX0dFT01FVFJZO1xuICAgIGlmKGdlb21ldHJ5KXtcbiAgICAgICAgZ2VvbWV0cnlUeXBlID0gW1dLQkdlb21ldHJ5VHlwZXMgZnJvbU5hbWU6dHlwZV07XG4gICAgfWVsc2V7XG4gICAgICAgIGRhdGFUeXBlID0gW0dQS0dEYXRhVHlwZXMgZnJvbU5hbWU6dHlwZV07XG4gICAgfVxuXG4gICAgTlNPYmplY3QgKiBkZWZhdWx0VmFsdWUgPSBbcmVzdWx0cyBnZXRWYWx1ZVdpdGhJbmRleDpkZWZhdWx0VmFsdWVJbmRleF07XG5cbiAgICBHUEtHRmVhdHVyZUNvbHVtbiAqIGNvbHVtbiA9IFtbR1BLR0ZlYXR1cmVDb2x1bW4gYWxsb2NdIGluaXRXaXRoSW5kZXg6aW5kZXggYW5kTmFtZTpuYW1lIGFuZERhdGFUeXBlOmRhdGFUeXBlIGFuZE1heDptYXggYW5kTm90TnVsbDpub3ROdWxsIGFuZERlZmF1bHRWYWx1ZTpkZWZhdWx0VmFsdWUgYW5kUHJpbWFyeUtleTpwcmltYXJ5S2V5IGFuZEdlb21ldHJ5VHlwZTpnZW9tZXRyeVR5cGVdO1xuXG4gICAgcmV0dXJuIGNvbHVtbjtcbn1cbiAqL1xuXG4vKipcbiAqIFRoZSBGZWF0dXJlVGFibGVSZWFkZXJcbiAqIEB0eXBlIHtGZWF0dXJlVGFibGVSZWFkZXJ9XG4gKi9cbm1vZHVsZS5leHBvcnRzID0gRmVhdHVyZVRhYmxlUmVhZGVyO1xuIiwiLyoqXG4gKiBHZW9QYWNrYWdlIG1vZHVsZS5cbiAqIEBtb2R1bGUgZ2VvUGFja2FnZVxuICovXG5cbnZhciBTcGF0aWFsUmVmZXJlbmNlU3lzdGVtRGFvID0gcmVxdWlyZSgnLi9jb3JlL3NycycpLlNwYXRpYWxSZWZlcmVuY2VTeXN0ZW1EYW9cbiAgLCBHZW9tZXRyeUNvbHVtbnNEYW8gPSByZXF1aXJlKCcuL2ZlYXR1cmVzL2NvbHVtbnMnKS5HZW9tZXRyeUNvbHVtbnNEYW9cbiAgLCBGZWF0dXJlRGFvID0gcmVxdWlyZSgnLi9mZWF0dXJlcy91c2VyL2ZlYXR1cmVEYW8nKVxuICAsIEZlYXR1cmVUYWJsZVJlYWRlciA9IHJlcXVpcmUoJy4vZmVhdHVyZXMvdXNlci9mZWF0dXJlVGFibGVSZWFkZXInKVxuICAsIENvbnRlbnRzRGFvID0gcmVxdWlyZSgnLi9jb3JlL2NvbnRlbnRzJykuQ29udGVudHNEYW9cbiAgLCBDb250ZW50cyA9IHJlcXVpcmUoJy4vY29yZS9jb250ZW50cycpLkNvbnRlbnRzXG4gICwgVGlsZU1hdHJpeFNldERhbyA9IHJlcXVpcmUoJy4vdGlsZXMvbWF0cml4c2V0JykuVGlsZU1hdHJpeFNldERhb1xuICAsIFRpbGVNYXRyaXhTZXQgPSByZXF1aXJlKCcuL3RpbGVzL21hdHJpeHNldCcpLlRpbGVNYXRyaXhTZXRcbiAgLCBUaWxlTWF0cml4RGFvID0gcmVxdWlyZSgnLi90aWxlcy9tYXRyaXgnKS5UaWxlTWF0cml4RGFvXG4gICwgVGlsZU1hdHJpeCA9IHJlcXVpcmUoJy4vdGlsZXMvbWF0cml4JykuVGlsZU1hdHJpeFxuICAsIFRpbGVUYWJsZVJlYWRlciA9IHJlcXVpcmUoJy4vdGlsZXMvdXNlci90aWxlVGFibGVSZWFkZXInKVxuICAsIFRpbGVEYW8gPSByZXF1aXJlKCcuL3RpbGVzL3VzZXIvdGlsZURhbycpXG4gICwgVGlsZVRhYmxlID0gcmVxdWlyZSgnLi90aWxlcy91c2VyL3RpbGVUYWJsZScpXG4gICwgVGlsZUJvdW5kaW5nQm94VXRpbHMgPSByZXF1aXJlKCcuL3RpbGVzL3RpbGVCb3VuZGluZ0JveFV0aWxzJylcbiAgLCBUYWJsZUNyZWF0b3IgPSByZXF1aXJlKCcuL2RiL3RhYmxlQ3JlYXRvcicpXG4gICwgVXNlclRhYmxlID0gcmVxdWlyZSgnLi91c2VyL3VzZXJUYWJsZScpXG4gICwgRmVhdHVyZVRhYmxlID0gcmVxdWlyZSgnLi9mZWF0dXJlcy91c2VyL2ZlYXR1cmVUYWJsZScpXG4gICwgRGF0YUNvbHVtbnNEYW8gPSByZXF1aXJlKCcuL2RhdGFDb2x1bW5zJykuRGF0YUNvbHVtbnNEYW9cbiAgLCBEYXRhQ29sdW1uQ29uc3RyYWludHNEYW8gPSByZXF1aXJlKCcuL2RhdGFDb2x1bW5Db25zdHJhaW50cycpLkRhdGFDb2x1bW5Db25zdHJhaW50c0Rhb1xuICAsIE1ldGFkYXRhRGFvID0gcmVxdWlyZSgnLi9tZXRhZGF0YScpLk1ldGFkYXRhRGFvXG4gICwgTWV0YWRhdGFSZWZlcmVuY2VEYW8gPSByZXF1aXJlKCcuL21ldGFkYXRhL3JlZmVyZW5jZScpLk1ldGFkYXRhUmVmZXJlbmNlRGFvXG4gICwgRXh0ZW5zaW9uRGFvID0gcmVxdWlyZSgnLi9leHRlbnNpb24nKS5FeHRlbnNpb25EYW9cbiAgLCBUYWJsZUluZGV4RGFvID0gcmVxdWlyZSgnLi9leHRlbnNpb24vaW5kZXgvdGFibGVJbmRleCcpLlRhYmxlSW5kZXhEYW9cbiAgLCBHZW9tZXRyeUluZGV4RGFvID0gcmVxdWlyZSgnLi9leHRlbnNpb24vaW5kZXgvZ2VvbWV0cnlJbmRleCcpLkdlb21ldHJ5SW5kZXhEYW9cbiAgLCBEYXRhVHlwZXMgPSByZXF1aXJlKCcuL2RiL2RhdGFUeXBlcycpO1xuXG52YXIgYXN5bmMgPSByZXF1aXJlKCdhc3luYycpXG4gICwgcHJvajQgPSByZXF1aXJlKCdwcm9qNCcpXG4gICwgdG9BcnJheSA9IHJlcXVpcmUoJ3N0cmVhbS10by1hcnJheScpO1xuXG52YXIgZGVmcyA9IHJlcXVpcmUoJy4vcHJvajREZWZzJyk7XG5mb3IgKHZhciBuYW1lIGluIGRlZnMpIHtcbiAgaWYgKGRlZnNbbmFtZV0pIHtcbiAgICBwcm9qNC5kZWZzKG5hbWUsIGRlZnNbbmFtZV0pO1xuICB9XG59XG5cbi8qKlxuICogR2VvUGFja2FnZSBkYXRhYmFzZVxuICogQGNsYXNzIEdlb1BhY2thZ2VcbiAqL1xudmFyIEdlb1BhY2thZ2UgPSBmdW5jdGlvbihuYW1lLCBwYXRoLCBjb25uZWN0aW9uKSB7XG4gIHRoaXMubmFtZSA9IG5hbWU7XG4gIHRoaXMucGF0aCA9IHBhdGg7XG4gIHRoaXMuY29ubmVjdGlvbiA9IGNvbm5lY3Rpb247XG4gIHRoaXMudGFibGVDcmVhdG9yID0gbmV3IFRhYmxlQ3JlYXRvcih0aGlzKTtcbn1cblxuR2VvUGFja2FnZS5wcm90b3R5cGUuY2xvc2UgPSBmdW5jdGlvbigpIHtcbiAgdGhpcy5jb25uZWN0aW9uLmNsb3NlKCk7XG59XG5cbkdlb1BhY2thZ2UucHJvdG90eXBlLmdldERhdGFiYXNlID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiB0aGlzLmNvbm5lY3Rpb247XG59XG5cbkdlb1BhY2thZ2UucHJvdG90eXBlLmdldFBhdGggPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHRoaXMucGF0aDtcbn1cblxuR2VvUGFja2FnZS5wcm90b3R5cGUuZXhwb3J0ID0gZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAgdGhpcy5jb25uZWN0aW9uLmV4cG9ydChjYWxsYmFjayk7XG59XG5cbi8qKlxuICogR2V0IHRoZSBHZW9QYWNrYWdlIG5hbWVcbiAqIEByZXR1cm4ge1N0cmluZ30gdGhlIEdlb1BhY2thZ2UgbmFtZVxuICovXG5HZW9QYWNrYWdlLnByb3RvdHlwZS5nZXROYW1lID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiB0aGlzLm5hbWU7XG59XG5cbkdlb1BhY2thZ2UucHJvdG90eXBlLmdldFNwYXRpYWxSZWZlcmVuY2VTeXN0ZW1EYW8gPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIG5ldyBTcGF0aWFsUmVmZXJlbmNlU3lzdGVtRGFvKHRoaXMuY29ubmVjdGlvbik7XG59XG5cbkdlb1BhY2thZ2UucHJvdG90eXBlLmdldENvbnRlbnRzRGFvID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiBuZXcgQ29udGVudHNEYW8odGhpcy5jb25uZWN0aW9uKTtcbn1cblxuR2VvUGFja2FnZS5wcm90b3R5cGUuZ2V0VGlsZU1hdHJpeFNldERhbyA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIG5ldyBUaWxlTWF0cml4U2V0RGFvKHRoaXMuY29ubmVjdGlvbik7XG59O1xuXG5HZW9QYWNrYWdlLnByb3RvdHlwZS5nZXRUaWxlTWF0cml4RGFvID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiBuZXcgVGlsZU1hdHJpeERhbyh0aGlzLmNvbm5lY3Rpb24pO1xufVxuXG5HZW9QYWNrYWdlLnByb3RvdHlwZS5nZXREYXRhQ29sdW1uc0RhbyA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gbmV3IERhdGFDb2x1bW5zRGFvKHRoaXMuY29ubmVjdGlvbik7XG59XG5cbkdlb1BhY2thZ2UucHJvdG90eXBlLmdldEV4dGVuc2lvbkRhbyA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gbmV3IEV4dGVuc2lvbkRhbyh0aGlzLmNvbm5lY3Rpb24pO1xufVxuXG5HZW9QYWNrYWdlLnByb3RvdHlwZS5nZXRUYWJsZUluZGV4RGFvID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiBuZXcgVGFibGVJbmRleERhbyh0aGlzLmNvbm5lY3Rpb24pO1xufVxuXG5HZW9QYWNrYWdlLnByb3RvdHlwZS5nZXRHZW9tZXRyeUluZGV4RGFvID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiBuZXcgR2VvbWV0cnlJbmRleERhbyh0aGlzLmNvbm5lY3Rpb24pO1xufVxuXG5HZW9QYWNrYWdlLnByb3RvdHlwZS5jcmVhdGVEYW8gPSBmdW5jdGlvbiAoKSB7XG5cbn07XG5cbkdlb1BhY2thZ2UucHJvdG90eXBlLmdldFNycyA9IGZ1bmN0aW9uKHNyc0lkLCBjYWxsYmFjaykge1xuICB2YXIgZGFvID0gdGhpcy5nZXRTcGF0aWFsUmVmZXJlbmNlU3lzdGVtRGFvKCk7XG4gIGRhby5xdWVyeUZvcklkT2JqZWN0KHNyc0lkLCBjYWxsYmFjayk7XG59XG5cbkdlb1BhY2thZ2UucHJvdG90eXBlLmdldFRpbGVEYW9XaXRoVGlsZU1hdHJpeFNldCA9IGZ1bmN0aW9uICh0aWxlTWF0cml4U2V0LCBjYWxsYmFjaykge1xuICB2YXIgdGlsZU1hdHJpY2VzID0gW107XG4gIHZhciB0aWxlTWF0cml4RGFvID0gdGhpcy5nZXRUaWxlTWF0cml4RGFvKCk7XG4gIHRpbGVNYXRyaXhEYW8ucXVlcnlGb3JFcVdpdGhGaWVsZChUaWxlTWF0cml4RGFvLkNPTFVNTl9UQUJMRV9OQU1FLCB0aWxlTWF0cml4U2V0LnRhYmxlX25hbWUsIG51bGwsIG51bGwsIFRpbGVNYXRyaXhEYW8uQ09MVU1OX1pPT01fTEVWRUwgKyAnIEFTQywgJyArIFRpbGVNYXRyaXhEYW8uQ09MVU1OX1BJWEVMX1hfU0laRSArICcgREVTQywgJyArIFRpbGVNYXRyaXhEYW8uQ09MVU1OX1BJWEVMX1lfU0laRSArICcgREVTQycsIGZ1bmN0aW9uKGVyciwgcmVzdWx0cykge1xuICAgIGFzeW5jLmVhY2hTZXJpZXMocmVzdWx0cywgZnVuY3Rpb24ocmVzdWx0LCBjYWxsYmFjaykge1xuICAgICAgdmFyIHRtID0gbmV3IFRpbGVNYXRyaXgoKTtcbiAgICAgIHRpbGVNYXRyaXhEYW8ucG9wdWxhdGVPYmplY3RGcm9tUmVzdWx0KHRtLCByZXN1bHQpO1xuICAgICAgdGlsZU1hdHJpY2VzLnB1c2godG0pO1xuICAgICAgY2FsbGJhY2soKTtcbiAgICB9LCBmdW5jdGlvbihlcnIpIHtcbiAgICAgIHZhciB0YWJsZVJlYWRlciA9IG5ldyBUaWxlVGFibGVSZWFkZXIodGlsZU1hdHJpeFNldCk7XG4gICAgICB0YWJsZVJlYWRlci5yZWFkVGlsZVRhYmxlKHRoaXMuY29ubmVjdGlvbiwgZnVuY3Rpb24oZXJyLCB0aWxlVGFibGUpIHtcbiAgICAgICAgbmV3IFRpbGVEYW8odGhpcy5jb25uZWN0aW9uLCB0aWxlVGFibGUsIHRpbGVNYXRyaXhTZXQsIHRpbGVNYXRyaWNlcywgZnVuY3Rpb24oZXJyLCB0aWxlRGFvKXtcbiAgICAgICAgICBjYWxsYmFjayhlcnIsIHRpbGVEYW8pO1xuICAgICAgICB9KTtcbiAgICAgIH0uYmluZCh0aGlzKSk7XG4gICAgfS5iaW5kKHRoaXMpKTtcbiAgfS5iaW5kKHRoaXMpKTtcbn07XG5cbkdlb1BhY2thZ2UucHJvdG90eXBlLmdldFRpbGVEYW9XaXRoQ29udGVudHMgPSBmdW5jdGlvbiAoY29udGVudHMsIGNhbGxiYWNrKSB7XG4gIHZhciBkYW8gPSB0aGlzLmdldENvbnRlbnRzRGFvKCk7XG4gIGRhby5nZXRUaWxlTWF0cml4U2V0KGNvbnRlbnRzLCBmdW5jdGlvbihlcnIsIGNvbHVtbnMpIHtcbiAgICB0aGlzLmdldFRpbGVEYW9XaXRoVGlsZU1hdHJpeFNldChjb2x1bW5zLCBjYWxsYmFjayk7XG4gIH0uYmluZCh0aGlzKSk7XG59O1xuXG5HZW9QYWNrYWdlLnByb3RvdHlwZS5nZXRUaWxlRGFvV2l0aFRhYmxlTmFtZSA9IGZ1bmN0aW9uICh0YWJsZU5hbWUsIGNhbGxiYWNrKSB7XG4gIHZhciB0bXMgPSB0aGlzLmdldFRpbGVNYXRyaXhTZXREYW8oKTtcbiAgdG1zLnF1ZXJ5Rm9yRXFXaXRoRmllbGRBbmRWYWx1ZShUaWxlTWF0cml4U2V0RGFvLkNPTFVNTl9UQUJMRV9OQU1FLCB0YWJsZU5hbWUsIGZ1bmN0aW9uKGVyciwgcmVzdWx0cykge1xuICAgIGlmIChyZXN1bHRzLmxlbmd0aCA+IDEpIHtcbiAgICAgIHJldHVybiBjYWxsYmFjayhuZXcgRXJyb3IoJ1VuZXhwZWN0ZWQgc3RhdGUuIE1vcmUgdGhhbiBvbmUgVGlsZSBNYXRyaXggU2V0IG1hdGNoZWQgZm9yIHRhYmxlIG5hbWU6ICcgKyB0YWJsZU5hbWUgKyAnLCBjb3VudDogJyArIHJlc3VsdHMubGVuZ3RoKSk7XG4gICAgfSBlbHNlIGlmIChyZXN1bHRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIGNhbGxiYWNrKG5ldyBFcnJvcignTm8gVGlsZSBNYXRyaXggZm91bmQgZm9yIHRhYmxlIG5hbWU6ICcgKyB0YWJsZU5hbWUpKTtcbiAgICB9XG4gICAgdmFyIHRpbGVNYXRyaXhTZXQgPSBuZXcgVGlsZU1hdHJpeFNldCgpO1xuICAgIHRtcy5wb3B1bGF0ZU9iamVjdEZyb21SZXN1bHQodGlsZU1hdHJpeFNldCwgcmVzdWx0c1swXSk7XG4gICAgdGhpcy5nZXRUaWxlRGFvV2l0aFRpbGVNYXRyaXhTZXQodGlsZU1hdHJpeFNldCwgY2FsbGJhY2spO1xuICB9LmJpbmQodGhpcykpO1xufTtcblxuLyoqXG4gKiAgR2V0IHRoZSB0aWxlIHRhYmxlc1xuICogIEBwYXJhbSB7Y2FsbGJhY2t9IGNhbGxiYWNrIGNhbGxlZCB3aXRoIGFuIGVycm9yIGlmIG9uZSBvY2N1cnJlZCBhbmQgdGhlIGFycmF5IG9mIHtUaWxlVGFibGV9IG5hbWVzXG4gKi9cbkdlb1BhY2thZ2UucHJvdG90eXBlLmdldFRpbGVUYWJsZXMgPSBmdW5jdGlvbiAoY2FsbGJhY2spIHtcbiAgdmFyIHRtcyA9IHRoaXMuZ2V0VGlsZU1hdHJpeFNldERhbygpO1xuICB0bXMuaXNUYWJsZUV4aXN0cyhmdW5jdGlvbihlcnIsIGV4aXN0cykge1xuICAgIGlmICghZXhpc3RzKSB7XG4gICAgICByZXR1cm4gY2FsbGJhY2sobnVsbCwgW10pO1xuICAgIH1cbiAgICB0bXMuZ2V0VGlsZVRhYmxlcyhjYWxsYmFjayk7XG4gIH0pO1xufTtcblxuLyoqXG4gKiAgR2V0IHRoZSBmZWF0dXJlIHRhYmxlc1xuICogIEBwYXJhbSB7Y2FsbGJhY2t9IGNhbGxiYWNrIGNhbGxlZCB3aXRoIGFuIGVycm9yIGlmIG9uZSBvY2N1cnJlZCBhbmQgdGhlIGFycmF5IG9mIHtGZWF0dXJlVGFibGV9IG5hbWVzXG4gKi9cbkdlb1BhY2thZ2UucHJvdG90eXBlLmdldEZlYXR1cmVUYWJsZXMgPSBmdW5jdGlvbiAoY2FsbGJhY2spIHtcbiAgdmFyIGdjZCA9IHRoaXMuZ2V0R2VvbWV0cnlDb2x1bW5zRGFvKCk7XG4gIGdjZC5pc1RhYmxlRXhpc3RzKGZ1bmN0aW9uKGVyciwgZXhpc3RzKSB7XG4gICAgaWYgKCFleGlzdHMpIHtcbiAgICAgIHJldHVybiBjYWxsYmFjayhudWxsLCBbXSk7XG4gICAgfVxuICAgIGdjZC5nZXRGZWF0dXJlVGFibGVzKGNhbGxiYWNrKTtcbiAgfSk7XG59O1xuXG5HZW9QYWNrYWdlLnByb3RvdHlwZS5nZXRHZW9tZXRyeUNvbHVtbnNEYW8gPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBuZXcgR2VvbWV0cnlDb2x1bW5zRGFvKHRoaXMuY29ubmVjdGlvbik7XG59O1xuXG5HZW9QYWNrYWdlLnByb3RvdHlwZS5nZXREYXRhQ29sdW1uQ29uc3RyYWludHNEYW8gPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBuZXcgRGF0YUNvbHVtbkNvbnN0cmFpbnRzRGFvKHRoaXMuY29ubmVjdGlvbik7XG59O1xuXG5HZW9QYWNrYWdlLnByb3RvdHlwZS5nZXRNZXRhZGF0YVJlZmVyZW5jZURhbyA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIG5ldyBNZXRhZGF0YVJlZmVyZW5jZURhbyh0aGlzLmNvbm5lY3Rpb24pO1xufTtcblxuR2VvUGFja2FnZS5wcm90b3R5cGUuZ2V0TWV0YWRhdGFEYW8gPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBuZXcgTWV0YWRhdGFEYW8odGhpcy5jb25uZWN0aW9uKTtcbn07XG5cbi8qKlxuICogIEdldCBhIEZlYXR1cmUgREFPIGZyb20gR2VvbWV0cnkgQ29sdW1uc1xuICpcbiAqICBAcGFyYW0ge0dlb21ldHJ5Q29sdW1uc30gZ2VvbWV0cnlDb2x1bW5zIEdlb21ldHJ5IENvbHVtbnNcbiAqICBAcGFyYW0ge2NhbGxiYWNrfSBjYWxsYmFjayBjYWxsZWQgd2l0aCBhbiBlcnJvciBpZiBvbmUgb2NjdXJyZWQgYW5kIHRoZSB7RmVhdHVyZURhb31cbiAqL1xuR2VvUGFja2FnZS5wcm90b3R5cGUuZ2V0RmVhdHVyZURhb1dpdGhHZW9tZXRyeUNvbHVtbnMgPSBmdW5jdGlvbiAoZ2VvbWV0cnlDb2x1bW5zLCBjYWxsYmFjaykge1xuICBpZiAoIWdlb21ldHJ5Q29sdW1ucykge1xuICAgIHJldHVybiBjYWxsYmFjayhuZXcgRXJyb3IoJ05vbiBudWxsIEdlb21ldHJ5IENvbHVtbnMgaXMgcmVxdWlyZWQgdG8gY3JlYXRlIEZlYXR1cmUgREFPJykpO1xuICB9XG5cbiAgdmFyIHRhYmxlUmVhZGVyID0gbmV3IEZlYXR1cmVUYWJsZVJlYWRlcihnZW9tZXRyeUNvbHVtbnMpO1xuICB2YXIgZmVhdHVyZVRhYmxlID0gdGFibGVSZWFkZXIucmVhZEZlYXR1cmVUYWJsZSh0aGlzLmNvbm5lY3Rpb24sIGZ1bmN0aW9uKGVyciwgZmVhdHVyZVRhYmxlKSB7XG4gICAgaWYgKGVycikge1xuICAgICAgcmV0dXJuIGNhbGxiYWNrKGVycik7XG4gICAgfVxuICAgIHZhciBkYW8gPSBuZXcgRmVhdHVyZURhbyh0aGlzLmNvbm5lY3Rpb24sIGZlYXR1cmVUYWJsZSwgZ2VvbWV0cnlDb2x1bW5zLCB0aGlzLm1ldGFkYXRhRGIpO1xuXG4gICAgY2FsbGJhY2sobnVsbCwgZGFvKTtcbiAgfS5iaW5kKHRoaXMpKTtcbn07XG5cbi8qKlxuICogR2V0IGEgRmVhdHVyZSBEQU8gZnJvbSBDb250ZW50c1xuICogQHBhcmFtICB7Q29udGVudHN9ICAgY29udGVudHMgQ29udGVudHNcbiAqIEBwYXJhbSAge0Z1bmN0aW9ufSBjYWxsYmFjayBjYWxsYmFjayBjYWxsZWQgd2l0aCBhbiBlcnJvciBpZiBvbmUgb2NjdXJyZWQgYW5kIHRoZSB7RmVhdHVyZURhb31cbiAqL1xuR2VvUGFja2FnZS5wcm90b3R5cGUuZ2V0RmVhdHVyZURhb1dpdGhDb250ZW50cyA9IGZ1bmN0aW9uIChjb250ZW50cywgY2FsbGJhY2spIHtcbiAgdmFyIGRhbyA9IHRoaXMuZ2V0Q29udGVudHNEYW8oKTtcbiAgZGFvLmdldEdlb21ldHJ5Q29sdW1ucyhjb250ZW50cywgZnVuY3Rpb24oZXJyLCBjb2x1bW5zKSB7XG4gICAgdGhpcy5nZXRGZWF0dXJlRGFvV2l0aEdlb21ldHJ5Q29sdW1ucyhjb2x1bW5zLCBjYWxsYmFjayk7XG4gIH0uYmluZCh0aGlzKSk7XG59O1xuXG4vKipcbiAqIEdldCBhIEZlYXR1cmUgREFPIGZyb20gQ29udGVudHNcbiAqIEBwYXJhbSAge3N0cmluZ30gICB0YWJsZU5hbWUgdGFibGUgbmFtZVxuICogQHBhcmFtICB7RnVuY3Rpb259IGNhbGxiYWNrIGNhbGxiYWNrIGNhbGxlZCB3aXRoIGFuIGVycm9yIGlmIG9uZSBvY2N1cnJlZCBhbmQgdGhlIHtGZWF0dXJlRGFvfVxuICovXG5HZW9QYWNrYWdlLnByb3RvdHlwZS5nZXRGZWF0dXJlRGFvV2l0aFRhYmxlTmFtZSA9IGZ1bmN0aW9uICh0YWJsZU5hbWUsIGNhbGxiYWNrKSB7XG4gIHZhciBzZWxmID0gdGhpcztcbiAgdmFyIGRhbyA9IHRoaXMuZ2V0R2VvbWV0cnlDb2x1bW5zRGFvKCk7XG4gIHZhciBnZW9tZXRyeUNvbHVtbnMgPSBkYW8ucXVlcnlGb3JUYWJsZU5hbWUodGFibGVOYW1lLCBmdW5jdGlvbihlcnIsIGdlb21ldHJ5Q29sdW1ucykge1xuICAgIGlmICghZ2VvbWV0cnlDb2x1bW5zKSB7XG4gICAgICByZXR1cm4gY2FsbGJhY2sobmV3IEVycm9yKCdObyBGZWF0dXJlIFRhYmxlIGV4aXN0cyBmb3IgdGFibGUgbmFtZTogJyArIHRhYmxlTmFtZSkpO1xuICAgIH1cbiAgICBzZWxmLmdldEZlYXR1cmVEYW9XaXRoR2VvbWV0cnlDb2x1bW5zKGdlb21ldHJ5Q29sdW1ucywgY2FsbGJhY2spO1xuICB9KTtcbn07XG5cbi8qKlxuICogQ3JlYXRlIHRoZSBHZW9tZXRyeSBDb2x1bW5zIHRhYmxlIGlmIGl0IGRvZXMgbm90IGFscmVhZHkgZXhpc3RcbiAqIEBwYXJhbSAge0Z1bmN0aW9ufSBjYWxsYmFjayBjYWxsZWQgd2l0aCBhbiBlcnJvciBpZiBvbmUgb2NjdXJyZWQgb3RoZXJ3aXNlIHRoZSB0YWJsZSBub3cgZXhpc3RzXG4gKi9cbkdlb1BhY2thZ2UucHJvdG90eXBlLmNyZWF0ZUdlb21ldHJ5Q29sdW1uc1RhYmxlID0gZnVuY3Rpb24gKGNhbGxiYWNrKSB7XG4gIHZhciBkYW8gPSB0aGlzLmdldEdlb21ldHJ5Q29sdW1uc0RhbygpO1xuICBkYW8uaXNUYWJsZUV4aXN0cyhmdW5jdGlvbihlcnIsIHJlc3VsdCkge1xuICAgIGlmIChyZXN1bHQpIHtcbiAgICAgIHJldHVybiBjYWxsYmFjayhudWxsLCByZXN1bHQpO1xuICAgIH1cbiAgICB0aGlzLnRhYmxlQ3JlYXRvci5jcmVhdGVHZW9tZXRyeUNvbHVtbnMoY2FsbGJhY2spO1xuICB9LmJpbmQodGhpcykpO1xufTtcblxuLyoqXG4gKiBDcmVhdGUgYSBuZXcgZmVhdHVyZSB0YWJsZVxuICogQHBhcmFtICB7RmVhdHVyZVRhYmxlfSAgIGZlYXR1cmVUYWJsZSAgICBmZWF0dXJlIHRhYmxlXG4gKiBAcGFyYW0gIHtGdW5jdGlvbn0gY2FsbGJhY2sgY2FsbGVkIHdpdGggYW4gZXJyb3IgaWYgb25lIG9jY3VycmVkIG90aGVyd2lzZSB0aGUgdGFibGUgbm93IGV4aXN0c1xuICovXG5HZW9QYWNrYWdlLnByb3RvdHlwZS5jcmVhdGVGZWF0dXJlVGFibGUgPSBmdW5jdGlvbihmZWF0dXJlVGFibGUsIGNhbGxiYWNrKSB7XG4gIHRoaXMudGFibGVDcmVhdG9yLmNyZWF0ZVVzZXJUYWJsZShmZWF0dXJlVGFibGUsIGNhbGxiYWNrKTtcbn07XG5cbkdlb1BhY2thZ2UucHJvdG90eXBlLmNyZWF0ZUZlYXR1cmVUYWJsZVdpdGhHZW9tZXRyeUNvbHVtbnMgPSBmdW5jdGlvbihnZW9tZXRyeUNvbHVtbnMsIGJvdW5kaW5nQm94LCBzcnNJZCwgY29sdW1ucywgY2FsbGJhY2spIHtcbiAgdGhpcy5jcmVhdGVGZWF0dXJlVGFibGVXaXRoR2VvbWV0cnlDb2x1bW5zQW5kRGF0YUNvbHVtbnMoZ2VvbWV0cnlDb2x1bW5zLCBib3VuZGluZ0JveCwgc3JzSWQsIGNvbHVtbnMsIHVuZGVmaW5lZCwgY2FsbGJhY2spO1xufTtcblxuR2VvUGFja2FnZS5wcm90b3R5cGUuY3JlYXRlRmVhdHVyZVRhYmxlV2l0aEdlb21ldHJ5Q29sdW1uc0FuZERhdGFDb2x1bW5zID0gZnVuY3Rpb24oZ2VvbWV0cnlDb2x1bW5zLCBib3VuZGluZ0JveCwgc3JzSWQsIGNvbHVtbnMsIGRhdGFDb2x1bW5zLCBjYWxsYmFjaykge1xuICB0aGlzLmNyZWF0ZUdlb21ldHJ5Q29sdW1uc1RhYmxlKGZ1bmN0aW9uKGVyciwgcmVzdWx0KSB7XG4gICAgdmFyIGZlYXR1cmVUYWJsZSA9IG5ldyBGZWF0dXJlVGFibGUoZ2VvbWV0cnlDb2x1bW5zLnRhYmxlX25hbWUsIGNvbHVtbnMpO1xuICAgIHRoaXMuY3JlYXRlRmVhdHVyZVRhYmxlKGZlYXR1cmVUYWJsZSwgZnVuY3Rpb24oZXJyLCByZXN1bHQpIHtcbiAgICAgIHZhciBjb250ZW50cyA9IG5ldyBDb250ZW50cygpO1xuICAgICAgY29udGVudHMudGFibGVfbmFtZSA9IGdlb21ldHJ5Q29sdW1ucy50YWJsZV9uYW1lO1xuICAgICAgY29udGVudHMuZGF0YV90eXBlID0gJ2ZlYXR1cmVzJztcbiAgICAgIGNvbnRlbnRzLmlkZW50aWZpZXIgPSBnZW9tZXRyeUNvbHVtbnMudGFibGVfbmFtZTtcbiAgICAgIGNvbnRlbnRzLmxhc3RfY2hhbmdlID0gbmV3IERhdGUoKS50b0lTT1N0cmluZygpO1xuICAgICAgY29udGVudHMubWluX3ggPSBib3VuZGluZ0JveC5taW5Mb25naXR1ZGU7XG4gICAgICBjb250ZW50cy5taW5feSA9IGJvdW5kaW5nQm94Lm1pbkxhdGl0dWRlO1xuICAgICAgY29udGVudHMubWF4X3ggPSBib3VuZGluZ0JveC5tYXhMb25naXR1ZGU7XG4gICAgICBjb250ZW50cy5tYXhfeSA9IGJvdW5kaW5nQm94Lm1heExhdGl0dWRlO1xuICAgICAgY29udGVudHMuc3JzX2lkID0gc3JzSWQ7XG5cbiAgICAgIHRoaXMuZ2V0Q29udGVudHNEYW8oKS5jcmVhdGUoY29udGVudHMsIGZ1bmN0aW9uKGVyciwgcmVzdWx0KSB7XG4gICAgICAgIGdlb21ldHJ5Q29sdW1ucy5zcnNfaWQgPSBzcnNJZDtcbiAgICAgICAgdGhpcy5nZXRHZW9tZXRyeUNvbHVtbnNEYW8oKS5jcmVhdGUoZ2VvbWV0cnlDb2x1bW5zLCBmdW5jdGlvbihlcnIsIGdjZFJlc3VsdCkge1xuICAgICAgICAgIGlmIChkYXRhQ29sdW1ucykge1xuICAgICAgICAgICAgdGhpcy5jcmVhdGVEYXRhQ29sdW1ucyhmdW5jdGlvbihlcnIsIHJlc3VsdCkge1xuICAgICAgICAgICAgICB2YXIgZGF0YUNvbHVtbnNEYW8gPSB0aGlzLmdldERhdGFDb2x1bW5zRGFvKCk7XG4gICAgICAgICAgICAgIGFzeW5jLmVhY2hTZXJpZXMoZGF0YUNvbHVtbnMsIGZ1bmN0aW9uKGRhdGFDb2x1bW4sIGNhbGxiYWNrKSB7XG4gICAgICAgICAgICAgICAgZGF0YUNvbHVtbnNEYW8uY3JlYXRlKGRhdGFDb2x1bW4sIGNhbGxiYWNrKTtcbiAgICAgICAgICAgICAgfSwgZnVuY3Rpb24gZG9uZSgpIHtcbiAgICAgICAgICAgICAgICBjYWxsYmFjayhlcnIsIGdjZFJlc3VsdCk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfS5iaW5kKHRoaXMpKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY2FsbGJhY2soZXJyLCBnY2RSZXN1bHQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfS5iaW5kKHRoaXMpKTtcbiAgICAgIH0uYmluZCh0aGlzKSk7XG4gICAgfS5iaW5kKHRoaXMpKTtcbiAgfS5iaW5kKHRoaXMpKTtcbn07XG5cbi8qKlxuICogQ3JlYXRlIHRoZSBUaWxlIE1hdHJpeCBTZXQgdGFibGUgaWYgaXQgZG9lcyBub3QgYWxyZWFkeSBleGlzdFxuICogQHBhcmFtICB7RnVuY3Rpb259IGNhbGxiYWNrIGNhbGxlZCB3aXRoIGFuIGVycm9yIGlmIG9uZSBvY2N1cnJlZCBvdGhlcndpc2UgdGhlIHRhYmxlIG5vdyBleGlzdHNcbiAqL1xuR2VvUGFja2FnZS5wcm90b3R5cGUuY3JlYXRlVGlsZU1hdHJpeFNldFRhYmxlID0gZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAgdmFyIGRhbyA9IHRoaXMuZ2V0VGlsZU1hdHJpeFNldERhbygpO1xuICBkYW8uaXNUYWJsZUV4aXN0cyhmdW5jdGlvbihlcnIsIHJlc3VsdCkge1xuICAgIGlmIChyZXN1bHQpIHtcbiAgICAgIHJldHVybiBjYWxsYmFjayhudWxsLCByZXN1bHQpO1xuICAgIH1cbiAgICB0aGlzLnRhYmxlQ3JlYXRvci5jcmVhdGVUaWxlTWF0cml4U2V0KGNhbGxiYWNrKTtcbiAgfS5iaW5kKHRoaXMpKTtcbn1cblxuLyoqXG4gKiBDcmVhdGUgdGhlIFRpbGUgTWF0cml4IHRhYmxlIGlmIGl0IGRvZXMgbm90IGFscmVhZHkgZXhpc3RcbiAqIEBwYXJhbSAge0Z1bmN0aW9ufSBjYWxsYmFjayBjYWxsZWQgd2l0aCBhbiBlcnJvciBpZiBvbmUgb2NjdXJyZWQgb3RoZXJ3aXNlIHRoZSB0YWJsZSBub3cgZXhpc3RzXG4gKi9cbkdlb1BhY2thZ2UucHJvdG90eXBlLmNyZWF0ZVRpbGVNYXRyaXhUYWJsZSA9IGZ1bmN0aW9uKGNhbGxiYWNrKSB7XG4gIHZhciBkYW8gPSB0aGlzLmdldFRpbGVNYXRyaXhEYW8oKTtcbiAgZGFvLmlzVGFibGVFeGlzdHMoZnVuY3Rpb24oZXJyLCByZXN1bHQpIHtcbiAgICBpZiAocmVzdWx0KSB7XG4gICAgICByZXR1cm4gY2FsbGJhY2sobnVsbCwgcmVzdWx0KTtcbiAgICB9XG4gICAgdGhpcy50YWJsZUNyZWF0b3IuY3JlYXRlVGlsZU1hdHJpeChjYWxsYmFjayk7XG4gIH0uYmluZCh0aGlzKSk7XG59O1xuXG4vKipcbiAqIENyZWF0ZSBhIG5ldyB0aWxlIHRhYmxlXG4gKiBAcGFyYW0gIHtUaWxlVGFibGV9ICAgdGlsZVRhYmxlICAgIHRpbGUgdGFibGVcbiAqIEBwYXJhbSAge0Z1bmN0aW9ufSBjYWxsYmFjayBjYWxsZWQgd2l0aCBhbiBlcnJvciBpZiBvbmUgb2NjdXJyZWQgb3RoZXJ3aXNlIHRoZSB0YWJsZSBub3cgZXhpc3RzXG4gKi9cbkdlb1BhY2thZ2UucHJvdG90eXBlLmNyZWF0ZVRpbGVUYWJsZSA9IGZ1bmN0aW9uKHRpbGVUYWJsZSwgY2FsbGJhY2spIHtcbiAgdGhpcy50YWJsZUNyZWF0b3IuY3JlYXRlVXNlclRhYmxlKHRpbGVUYWJsZSwgY2FsbGJhY2spO1xufTtcblxuLyoqXG4gKiBDcmVhdGUgYSBuZXcgdGlsZSB0YWJsZVxuICogQHBhcmFtICB7U3RyaW5nfSAgIHRhYmxlTmFtZSAgICB0aWxlIHRhYmxlIG5hbWVcbiAqIEBwYXJhbSAge0JvdW5kaW5nQm94fSBjb250ZW50c0JvdW5kaW5nQm94ICBib3VuZGluZyBib3ggb2YgdGhlIGNvbnRlbnRzIHRhYmxlXG4gKiBAcGFyYW0gIHtOdW1iZXJ9IGNvbnRlbnRzU3JzSWQgc3JzIGlkIG9mIHRoZSBjb250ZW50cyB0YWJsZVxuICogQHBhcmFtICB7Qm91bmRpbmdCb3h9ICB0aWxlTWF0cml4U2V0Qm91bmRpbmdCb3ggIGJvdW5kaW5nIGJveCBvZiB0aGUgbWF0cml4IHNldFxuICogQHBhcmFtICB7TnVtYmVyfSB0aWxlTWF0cml4U2V0U3JzSWQgIHNycyBpZCBvZiB0aGUgbWF0cml4IHNldFxuICogQHBhcmFtICB7RnVuY3Rpb259IGNhbGxiYWNrIGNhbGxlZCB3aXRoIGFuIGVycm9yIGlmIG9uZSBvY2N1cnJlZCBvdGhlcndpc2UgdGhlIHRhYmxlIG5vdyBleGlzdHNcbiAqL1xuR2VvUGFja2FnZS5wcm90b3R5cGUuY3JlYXRlVGlsZVRhYmxlV2l0aFRhYmxlTmFtZSA9IGZ1bmN0aW9uKHRhYmxlTmFtZSwgY29udGVudHNCb3VuZGluZ0JveCwgY29udGVudHNTcnNJZCwgdGlsZU1hdHJpeFNldEJvdW5kaW5nQm94LCB0aWxlTWF0cml4U2V0U3JzSWQsIGNhbGxiYWNrKSB7XG4gIHZhciB0aWxlTWF0cml4U2V0O1xuXG4gIGFzeW5jLnNlcmllcyhbXG4gICAgdGhpcy5jcmVhdGVUaWxlTWF0cml4U2V0VGFibGUuYmluZCh0aGlzKSxcbiAgICB0aGlzLmNyZWF0ZVRpbGVNYXRyaXhUYWJsZS5iaW5kKHRoaXMpLFxuICAgIGZ1bmN0aW9uKGNhbGxiYWNrKSB7XG4gICAgICB2YXIgY29sdW1ucyA9IFRpbGVUYWJsZS5jcmVhdGVSZXF1aXJlZENvbHVtbnMoKTtcbiAgICAgIHZhciB0aWxlVGFibGUgPSBuZXcgVGlsZVRhYmxlKHRhYmxlTmFtZSwgY29sdW1ucyk7XG4gICAgICB0aGlzLmNyZWF0ZVRpbGVUYWJsZSh0aWxlVGFibGUsIGNhbGxiYWNrKTtcbiAgICB9LmJpbmQodGhpcyksXG4gICAgZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAgICAgIHZhciBjb250ZW50cyA9IG5ldyBDb250ZW50cygpO1xuICAgICAgY29udGVudHMudGFibGVfbmFtZSA9IHRhYmxlTmFtZTtcbiAgICAgIGNvbnRlbnRzLmRhdGFfdHlwZSA9ICd0aWxlcyc7XG4gICAgICBjb250ZW50cy5pZGVudGlmaWVyID0gdGFibGVOYW1lO1xuICAgICAgY29udGVudHMubGFzdF9jaGFuZ2UgPSBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCk7XG4gICAgICBjb250ZW50cy5taW5feCA9IGNvbnRlbnRzQm91bmRpbmdCb3gubWluTG9uZ2l0dWRlO1xuICAgICAgY29udGVudHMubWluX3kgPSBjb250ZW50c0JvdW5kaW5nQm94Lm1pbkxhdGl0dWRlO1xuICAgICAgY29udGVudHMubWF4X3ggPSBjb250ZW50c0JvdW5kaW5nQm94Lm1heExvbmdpdHVkZTtcbiAgICAgIGNvbnRlbnRzLm1heF95ID0gY29udGVudHNCb3VuZGluZ0JveC5tYXhMYXRpdHVkZTtcbiAgICAgIGNvbnRlbnRzLnNyc19pZCA9IGNvbnRlbnRzU3JzSWQ7XG5cbiAgICAgIHRpbGVNYXRyaXhTZXQgPSBuZXcgVGlsZU1hdHJpeFNldCgpO1xuICAgICAgdGlsZU1hdHJpeFNldC5zZXRDb250ZW50cyhjb250ZW50cyk7XG4gICAgICB0aWxlTWF0cml4U2V0LnNyc19pZCA9IHRpbGVNYXRyaXhTZXRTcnNJZDtcbiAgICAgIHRpbGVNYXRyaXhTZXQubWluX3ggPSB0aWxlTWF0cml4U2V0Qm91bmRpbmdCb3gubWluTG9uZ2l0dWRlO1xuICAgICAgdGlsZU1hdHJpeFNldC5taW5feSA9IHRpbGVNYXRyaXhTZXRCb3VuZGluZ0JveC5taW5MYXRpdHVkZTtcbiAgICAgIHRpbGVNYXRyaXhTZXQubWF4X3ggPSB0aWxlTWF0cml4U2V0Qm91bmRpbmdCb3gubWF4TG9uZ2l0dWRlO1xuICAgICAgdGlsZU1hdHJpeFNldC5tYXhfeSA9IHRpbGVNYXRyaXhTZXRCb3VuZGluZ0JveC5tYXhMYXRpdHVkZTtcbiAgICAgIHRoaXMuZ2V0Q29udGVudHNEYW8oKS5jcmVhdGUoY29udGVudHMsIGZ1bmN0aW9uKGVyciwgcmVzdWx0KSB7XG4gICAgICAgIHRoaXMuZ2V0VGlsZU1hdHJpeFNldERhbygpLmNyZWF0ZSh0aWxlTWF0cml4U2V0LCBjYWxsYmFjayk7XG4gICAgICB9LmJpbmQodGhpcykpO1xuICAgIH0uYmluZCh0aGlzKVxuICBdLCBmdW5jdGlvbihlcnIsIHJlc3VsdHMpIHtcbiAgICBjYWxsYmFjayhlcnIsIHRpbGVNYXRyaXhTZXQpO1xuICB9KTtcbn07XG5cbkdlb1BhY2thZ2UucHJvdG90eXBlLmNyZWF0ZVN0YW5kYXJkV2ViTWVyY2F0b3JUaWxlTWF0cml4ID0gZnVuY3Rpb24oZXBzZzM4NTdUaWxlQm91bmRpbmdCb3gsIHRpbGVNYXRyaXhTZXQsIG1pblpvb20sIG1heFpvb20sIGNhbGxiYWNrKSB7XG4gIHZhciB0aWxlTWF0cml4RGFvID0gdGhpcy5nZXRUaWxlTWF0cml4RGFvKCk7XG5cbiAgdmFyIHpvb20gPSBtaW5ab29tO1xuXG4gIGFzeW5jLndoaWxzdChcbiAgICBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB6b29tIDw9IG1heFpvb207XG4gICAgfSxcbiAgICBmdW5jdGlvbihjYWxsYmFjaykge1xuICAgICAgdmFyIGJveCA9IFRpbGVCb3VuZGluZ0JveFV0aWxzLndlYk1lcmNhdG9yVGlsZUJveChlcHNnMzg1N1RpbGVCb3VuZGluZ0JveCwgem9vbSk7XG4gICAgICB2YXIgbWF0cml4V2lkdGggPSAoYm94Lm1heFggLSBib3gubWluWCkgKyAxO1xuICAgICAgdmFyIG1hdHJpeEhlaWdodCA9IChib3gubWF4WSAtIGJveC5taW5ZKSArIDE7XG5cbiAgICAgIHZhciBwaXhlbFhTaXplID0gKChlcHNnMzg1N1RpbGVCb3VuZGluZ0JveC5tYXhMb25naXR1ZGUgLSBlcHNnMzg1N1RpbGVCb3VuZGluZ0JveC5taW5Mb25naXR1ZGUpIC8gbWF0cml4V2lkdGgpIC8gMjU2O1xuICAgICAgdmFyIHBpeGVsWVNpemUgPSAoKGVwc2czODU3VGlsZUJvdW5kaW5nQm94Lm1heExhdGl0dWRlIC0gZXBzZzM4NTdUaWxlQm91bmRpbmdCb3gubWluTGF0aXR1ZGUpIC8gbWF0cml4SGVpZ2h0KSAvIDI1NjtcblxuICAgICAgdmFyIHRpbGVNYXRyaXggPSBuZXcgVGlsZU1hdHJpeCgpO1xuICAgICAgdGlsZU1hdHJpeC50YWJsZV9uYW1lID0gdGlsZU1hdHJpeFNldC50YWJsZV9uYW1lO1xuICAgICAgdGlsZU1hdHJpeC56b29tX2xldmVsID0gem9vbTtcbiAgICAgIHRpbGVNYXRyaXgubWF0cml4X3dpZHRoID0gbWF0cml4V2lkdGg7XG4gICAgICB0aWxlTWF0cml4Lm1hdHJpeF9oZWlnaHQgPSBtYXRyaXhIZWlnaHQ7XG4gICAgICB0aWxlTWF0cml4LnRpbGVfd2lkdGggPSAyNTY7XG4gICAgICB0aWxlTWF0cml4LnRpbGVfaGVpZ2h0ID0gMjU2O1xuICAgICAgdGlsZU1hdHJpeC5waXhlbF94X3NpemUgPSBwaXhlbFhTaXplO1xuICAgICAgdGlsZU1hdHJpeC5waXhlbF95X3NpemUgPSBwaXhlbFlTaXplO1xuXG4gICAgICB6b29tKys7XG5cbiAgICAgIHRpbGVNYXRyaXhEYW8uY3JlYXRlKHRpbGVNYXRyaXgsIGNhbGxiYWNrKTtcbiAgICB9LFxuICAgIGNhbGxiYWNrXG4gIClcbn07XG5cbkdlb1BhY2thZ2UucHJvdG90eXBlLmFkZFRpbGUgPSBmdW5jdGlvbih0aWxlU3RyZWFtLCB0YWJsZU5hbWUsIHpvb20sIHRpbGVSb3csIHRpbGVDb2x1bW4sIGNhbGxiYWNrKSB7XG4gIHRoaXMuZ2V0VGlsZURhb1dpdGhUYWJsZU5hbWUodGFibGVOYW1lLCBmdW5jdGlvbihlcnIsIHRpbGVEYW8pIHtcbiAgICB2YXIgbmV3Um93ID0gdGlsZURhby5uZXdSb3coKTtcbiAgICBuZXdSb3cuc2V0Wm9vbUxldmVsKHpvb20pO1xuICAgIG5ld1Jvdy5zZXRUaWxlQ29sdW1uKHRpbGVDb2x1bW4pO1xuICAgIG5ld1Jvdy5zZXRUaWxlUm93KHRpbGVSb3cpO1xuICAgIG5ld1Jvdy5zZXRUaWxlRGF0YSh0aWxlU3RyZWFtKTtcbiAgICB0aWxlRGFvLmNyZWF0ZShuZXdSb3csIGNhbGxiYWNrKTtcbiAgfSk7XG59O1xuXG4vKipcbiAqIENyZWF0ZSB0aGUgRGF0YSBDb2x1bW5zIHRhYmxlIGlmIGl0IGRvZXMgbm90IGFscmVhZHkgZXhpc3RcbiAqIEBwYXJhbSAge0Z1bmN0aW9ufSBjYWxsYmFjayBjYWxsZWQgd2l0aCBhbiBlcnJvciBpZiBvbmUgb2NjdXJyZWQgb3RoZXJ3aXNlIHRoZSB0YWJsZSBub3cgZXhpc3RzXG4gKi9cbkdlb1BhY2thZ2UucHJvdG90eXBlLmNyZWF0ZURhdGFDb2x1bW5zID0gZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAgdmFyIGRhbyA9IHRoaXMuZ2V0RGF0YUNvbHVtbnNEYW8oKTtcbiAgZGFvLmlzVGFibGVFeGlzdHMoZnVuY3Rpb24oZXJyLCByZXN1bHQpIHtcbiAgICBpZiAocmVzdWx0KSB7XG4gICAgICByZXR1cm4gY2FsbGJhY2sobnVsbCwgcmVzdWx0KTtcbiAgICB9XG4gICAgdGhpcy50YWJsZUNyZWF0b3IuY3JlYXRlRGF0YUNvbHVtbnMoY2FsbGJhY2spO1xuICB9LmJpbmQodGhpcykpO1xufTtcblxuLyoqXG4gKiBDcmVhdGUgdGhlIERhdGEgQ29sdW1uIENvbnN0cmFpbnRzIHRhYmxlIGlmIGl0IGRvZXMgbm90IGFscmVhZHkgZXhpc3RcbiAqIEBwYXJhbSAge0Z1bmN0aW9ufSBjYWxsYmFjayBjYWxsZWQgd2l0aCBhbiBlcnJvciBpZiBvbmUgb2NjdXJyZWQgb3RoZXJ3aXNlIHRoZSB0YWJsZSBub3cgZXhpc3RzXG4gKi9cbkdlb1BhY2thZ2UucHJvdG90eXBlLmNyZWF0ZURhdGFDb2x1bW5Db25zdHJhaW50c1RhYmxlID0gZnVuY3Rpb24gKGNhbGxiYWNrKSB7XG4gIHZhciBkYW8gPSB0aGlzLmdldERhdGFDb2x1bW5Db25zdHJhaW50c0RhbygpO1xuICBkYW8uaXNUYWJsZUV4aXN0cyhmdW5jdGlvbihlcnIsIHJlc3VsdCkge1xuICAgIGlmIChyZXN1bHQpIHtcbiAgICAgIHJldHVybiBjYWxsYmFjayhudWxsLCByZXN1bHQpO1xuICAgIH1cbiAgICB0aGlzLnRhYmxlQ3JlYXRvci5jcmVhdGVEYXRhQ29sdW1uQ29uc3RyYWludHMoY2FsbGJhY2spO1xuICB9LmJpbmQodGhpcykpO1xufTtcblxuR2VvUGFja2FnZS5wcm90b3R5cGUuY3JlYXRlTWV0YWRhdGFUYWJsZSA9IGZ1bmN0aW9uIChjYWxsYmFjaykge1xuICB2YXIgZGFvID0gdGhpcy5nZXRNZXRhZGF0YURhbygpXG4gIGRhby5pc1RhYmxlRXhpc3RzKGZ1bmN0aW9uKGVyciwgcmVzdWx0KSB7XG4gICAgaWYgKHJlc3VsdCkge1xuICAgICAgcmV0dXJuIGNhbGxiYWNrKG51bGwsIHJlc3VsdCk7XG4gICAgfVxuICAgIHRoaXMudGFibGVDcmVhdG9yLmNyZWF0ZU1ldGFkYXRhKGNhbGxiYWNrKTtcbiAgfS5iaW5kKHRoaXMpKTtcbn07XG5cbkdlb1BhY2thZ2UucHJvdG90eXBlLmNyZWF0ZU1ldGFkYXRhUmVmZXJlbmNlVGFibGUgPSBmdW5jdGlvbiAoY2FsbGJhY2spIHtcbiAgdmFyIGRhbyA9IHRoaXMuZ2V0TWV0YWRhdGFSZWZlcmVuY2VEYW8oKVxuICBkYW8uaXNUYWJsZUV4aXN0cyhmdW5jdGlvbihlcnIsIHJlc3VsdCkge1xuICAgIGlmIChyZXN1bHQpIHtcbiAgICAgIHJldHVybiBjYWxsYmFjayhudWxsLCByZXN1bHQpO1xuICAgIH1cbiAgICB0aGlzLnRhYmxlQ3JlYXRvci5jcmVhdGVNZXRhZGF0YVJlZmVyZW5jZShjYWxsYmFjayk7XG4gIH0uYmluZCh0aGlzKSk7XG59O1xuXG5HZW9QYWNrYWdlLnByb3RvdHlwZS5jcmVhdGVFeHRlbnNpb25UYWJsZSA9IGZ1bmN0aW9uIChjYWxsYmFjaykge1xuICB2YXIgZGFvID0gdGhpcy5nZXRFeHRlbnNpb25EYW8oKVxuICBkYW8uaXNUYWJsZUV4aXN0cyhmdW5jdGlvbihlcnIsIHJlc3VsdCkge1xuICAgIGlmIChyZXN1bHQpIHtcbiAgICAgIHJldHVybiBjYWxsYmFjayhudWxsLCByZXN1bHQpO1xuICAgIH1cbiAgICB0aGlzLnRhYmxlQ3JlYXRvci5jcmVhdGVFeHRlbnNpb25zKGNhbGxiYWNrKTtcbiAgfS5iaW5kKHRoaXMpKTtcbn07XG5cbkdlb1BhY2thZ2UucHJvdG90eXBlLmNyZWF0ZVRhYmxlSW5kZXhUYWJsZSA9IGZ1bmN0aW9uIChjYWxsYmFjaykge1xuICB2YXIgZGFvID0gdGhpcy5nZXRUYWJsZUluZGV4RGFvKCk7XG4gIGRhby5pc1RhYmxlRXhpc3RzKGZ1bmN0aW9uKGVyciwgcmVzdWx0KSB7XG4gICAgaWYgKHJlc3VsdCkge1xuICAgICAgcmV0dXJuIGNhbGxiYWNrKG51bGwsIHJlc3VsdCk7XG4gICAgfVxuICAgIHRoaXMudGFibGVDcmVhdG9yLmNyZWF0ZVRhYmxlSW5kZXgoY2FsbGJhY2spO1xuICB9LmJpbmQodGhpcykpO1xufTtcblxuR2VvUGFja2FnZS5wcm90b3R5cGUuY3JlYXRlR2VvbWV0cnlJbmRleFRhYmxlID0gZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAgdmFyIGRhbyA9IHRoaXMuZ2V0R2VvbWV0cnlJbmRleERhbygpO1xuICBkYW8uaXNUYWJsZUV4aXN0cyhmdW5jdGlvbihlcnIsIHJlc3VsdCkge1xuICAgIGlmIChyZXN1bHQpIHtcbiAgICAgIHJldHVybiBjYWxsYmFjayhudWxsLCByZXN1bHQpO1xuICAgIH1cbiAgICB0aGlzLnRhYmxlQ3JlYXRvci5jcmVhdGVHZW9tZXRyeUluZGV4KGNhbGxiYWNrKTtcbiAgfS5iaW5kKHRoaXMpKTtcbn07XG5cbkdlb1BhY2thZ2UucHJvdG90eXBlLmNyZWF0ZUZlYXR1cmVUaWxlTGlua1RhYmxlID0gZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAgY2FsbGJhY2sobmV3IEVycm9yKCdub3QgaW1wbGVtZW50ZWQnKSk7XG59O1xuXG4vKipcbiAqIEdldCB0aGUgYXBwbGljYXRpb24gaWQgb2YgdGhlIEdlb1BhY2thZ2VcbiAqIEBwYXJhbSAge0Z1bmN0aW9ufSBjYWxsYmFjayBjYWxsYmFjayBjYWxsZWQgd2l0aCB0aGUgYXBwbGljYXRpb24gaWRcbiAqL1xuR2VvUGFja2FnZS5wcm90b3R5cGUuZ2V0QXBwbGljYXRpb25JZCA9IGZ1bmN0aW9uKGNhbGxiYWNrKSB7XG4gIHZhciBjb25uZWN0aW9uID0gdGhpcy5nZXREYXRhYmFzZSgpO1xuICBjb25uZWN0aW9uLmdldEFwcGxpY2F0aW9uSWQoY2FsbGJhY2spO1xufVxuXG5HZW9QYWNrYWdlLnByb3RvdHlwZS5nZXRJbmZvRm9yVGFibGUgPSBmdW5jdGlvbiAodGFibGVEYW8sIGNhbGxiYWNrKSB7XG4gIHZhciBncCA9IHRoaXM7XG4gIGFzeW5jLndhdGVyZmFsbChbXG4gICAgZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAgICAgIHZhciBpbmZvID0ge307XG4gICAgICBpbmZvLnRhYmxlTmFtZSA9IHRhYmxlRGFvLnRhYmxlX25hbWU7XG4gICAgICBpbmZvLnRhYmxlVHlwZSA9IHRhYmxlRGFvLnRhYmxlLmdldFRhYmxlVHlwZSgpO1xuICAgICAgY2FsbGJhY2sobnVsbCwgaW5mbyk7XG4gICAgfSxcbiAgICBmdW5jdGlvbihpbmZvLCBjYWxsYmFjaykge1xuICAgICAgdGFibGVEYW8uZ2V0Q291bnQoZnVuY3Rpb24oZXJyLCBjb3VudCkge1xuICAgICAgICBpbmZvLmNvdW50ID0gY291bnQ7XG4gICAgICAgIGNhbGxiYWNrKG51bGwsIGluZm8pO1xuICAgICAgfSk7XG4gICAgfSwgZnVuY3Rpb24oaW5mbywgY2FsbGJhY2spIHtcbiAgICAgIGlmIChpbmZvLnRhYmxlVHlwZSAhPT0gVXNlclRhYmxlLkZFQVRVUkVfVEFCTEUpIHJldHVybiBjYWxsYmFjayhudWxsLCBpbmZvKTtcbiAgICAgIGluZm8uZ2VvbWV0cnlDb2x1bW5zID0ge307XG4gICAgICBpbmZvLmdlb21ldHJ5Q29sdW1ucy50YWJsZU5hbWUgPSB0YWJsZURhby5nZW9tZXRyeUNvbHVtbnMudGFibGVfbmFtZTtcbiAgICAgIGluZm8uZ2VvbWV0cnlDb2x1bW5zLmdlb21ldHJ5Q29sdW1uID0gdGFibGVEYW8uZ2VvbWV0cnlDb2x1bW5zLmNvbHVtbl9uYW1lO1xuICAgICAgaW5mby5nZW9tZXRyeUNvbHVtbnMuZ2VvbWV0cnlUeXBlTmFtZSA9IHRhYmxlRGFvLmdlb21ldHJ5Q29sdW1ucy5nZW9tZXRyeV90eXBlX25hbWU7XG4gICAgICBpbmZvLmdlb21ldHJ5Q29sdW1ucy56ID0gdGFibGVEYW8uZ2VvbWV0cnlDb2x1bW5zLno7XG4gICAgICBpbmZvLmdlb21ldHJ5Q29sdW1ucy5tID0gdGFibGVEYW8uZ2VvbWV0cnlDb2x1bW5zLm07XG4gICAgICBjYWxsYmFjayhudWxsLCBpbmZvKTtcbiAgICB9LCBmdW5jdGlvbihpbmZvLCBjYWxsYmFjaykge1xuICAgICAgaWYgKGluZm8udGFibGVUeXBlICE9PSBVc2VyVGFibGUuVElMRV9UQUJMRSkgcmV0dXJuIGNhbGxiYWNrKG51bGwsIGluZm8pO1xuICAgICAgaW5mby5taW5ab29tID0gdGFibGVEYW8ubWluWm9vbTtcbiAgICAgIGluZm8ubWF4Wm9vbSA9IHRhYmxlRGFvLm1heFpvb207XG4gICAgICBpbmZvLnpvb21MZXZlbHMgPSB0YWJsZURhby50aWxlTWF0cmljZXMubGVuZ3RoO1xuICAgICAgY2FsbGJhY2sobnVsbCwgaW5mbyk7XG4gICAgfSwgZnVuY3Rpb24oaW5mbywgY2FsbGJhY2spIHtcbiAgICAgIHZhciBkYW87XG4gICAgICB2YXIgY29udGVudHNSZXRyaWV2ZXI7XG4gICAgICBpZiAoaW5mby50YWJsZVR5cGUgPT09IFVzZXJUYWJsZS5GRUFUVVJFX1RBQkxFKSB7XG4gICAgICAgIGRhbyA9IHRhYmxlRGFvLmdldEdlb21ldHJ5Q29sdW1uc0RhbygpO1xuICAgICAgICBjb250ZW50c1JldHJpZXZlciA9IHRhYmxlRGFvLmdlb21ldHJ5Q29sdW1ucztcbiAgICAgIH0gZWxzZSBpZiAoaW5mby50YWJsZVR5cGUgPT09IFVzZXJUYWJsZS5USUxFX1RBQkxFKSB7XG4gICAgICAgIGRhbyA9IHRhYmxlRGFvLmdldFRpbGVNYXRyaXhTZXREYW8oKTtcbiAgICAgICAgY29udGVudHNSZXRyaWV2ZXIgPSB0YWJsZURhby50aWxlTWF0cml4U2V0O1xuICAgICAgICBpbmZvLnRpbGVNYXRyaXhTZXQgPSB7fTtcbiAgICAgICAgaW5mby50aWxlTWF0cml4U2V0LnNyc0lkID0gdGFibGVEYW8udGlsZU1hdHJpeFNldC5zcnNfaWQ7XG4gICAgICAgIGluZm8udGlsZU1hdHJpeFNldC5taW5YID0gdGFibGVEYW8udGlsZU1hdHJpeFNldC5taW5feDtcbiAgICAgICAgaW5mby50aWxlTWF0cml4U2V0Lm1heFggPSB0YWJsZURhby50aWxlTWF0cml4U2V0Lm1heF94O1xuICAgICAgICBpbmZvLnRpbGVNYXRyaXhTZXQubWluWSA9IHRhYmxlRGFvLnRpbGVNYXRyaXhTZXQubWluX3k7XG4gICAgICAgIGluZm8udGlsZU1hdHJpeFNldC5tYXhZID0gdGFibGVEYW8udGlsZU1hdHJpeFNldC5tYXhfeTtcbiAgICAgIH1cbiAgICAgIGRhby5nZXRDb250ZW50cyhjb250ZW50c1JldHJpZXZlciwgZnVuY3Rpb24oZXJyLCBjb250ZW50cykge1xuICAgICAgICBpbmZvLmNvbnRlbnRzID0ge307XG4gICAgICAgIGluZm8uY29udGVudHMudGFibGVOYW1lID0gY29udGVudHMudGFibGVfbmFtZTtcbiAgICAgICAgaW5mby5jb250ZW50cy5kYXRhVHlwZSA9IGNvbnRlbnRzLmRhdGFfdHlwZTtcbiAgICAgICAgaW5mby5jb250ZW50cy5pZGVudGlmaWVyID0gY29udGVudHMuaWRlbnRpZmllcjtcbiAgICAgICAgaW5mby5jb250ZW50cy5kZXNjcmlwdGlvbiA9IGNvbnRlbnRzLmRlc2NyaXB0aW9uO1xuICAgICAgICBpbmZvLmNvbnRlbnRzLmxhc3RDaGFuZ2UgPSBjb250ZW50cy5sYXN0X2NoYW5nZTtcbiAgICAgICAgaW5mby5jb250ZW50cy5taW5YID0gY29udGVudHMubWluX3g7XG4gICAgICAgIGluZm8uY29udGVudHMubWF4WCA9IGNvbnRlbnRzLm1heF94O1xuICAgICAgICBpbmZvLmNvbnRlbnRzLm1pblkgPSBjb250ZW50cy5taW5feTtcbiAgICAgICAgaW5mby5jb250ZW50cy5tYXhZID0gY29udGVudHMubWF4X3k7XG4gICAgICAgIHZhciBjb250ZW50c0RhbyA9IHRhYmxlRGFvLmdldENvbnRlbnRzRGFvKCk7XG4gICAgICAgIGNvbnRlbnRzRGFvLmdldFNycyhjb250ZW50cywgZnVuY3Rpb24oZXJyLCBjb250ZW50c1Nycykge1xuICAgICAgICAgIGluZm8uY29udGVudHMuc3JzID0ge1xuICAgICAgICAgICAgbmFtZTpjb250ZW50c1Nycy5zcnNfbmFtZSxcbiAgICAgICAgICAgIGlkOmNvbnRlbnRzU3JzLnNyc19pZCxcbiAgICAgICAgICAgIG9yZ2FuaXphdGlvbjpjb250ZW50c1Nycy5vcmdhbml6YXRpb24sXG4gICAgICAgICAgICBvcmdhbml6YXRpb25fY29vcmRzeXNfaWQ6Y29udGVudHNTcnMub3JnYW5pemF0aW9uX2Nvb3Jkc3lzX2lkLFxuICAgICAgICAgICAgZGVmaW5pdGlvbjpjb250ZW50c1Nycy5kZWZpbml0aW9uLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246Y29udGVudHNTcnMuZGVzY3JpcHRpb25cbiAgICAgICAgICB9O1xuICAgICAgICAgIHRhYmxlRGFvLmdldFNycyhmdW5jdGlvbihlcnIsIHNycyl7XG4gICAgICAgICAgICBpbmZvLnNycyA9IHtcbiAgICAgICAgICAgICAgbmFtZTpzcnMuc3JzX25hbWUsXG4gICAgICAgICAgICAgIGlkOnNycy5zcnNfaWQsXG4gICAgICAgICAgICAgIG9yZ2FuaXphdGlvbjpzcnMub3JnYW5pemF0aW9uLFxuICAgICAgICAgICAgICBvcmdhbml6YXRpb25fY29vcmRzeXNfaWQ6c3JzLm9yZ2FuaXphdGlvbl9jb29yZHN5c19pZCxcbiAgICAgICAgICAgICAgZGVmaW5pdGlvbjpzcnMuZGVmaW5pdGlvbixcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb246c3JzLmRlc2NyaXB0aW9uXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgY2FsbGJhY2sobnVsbCwgaW5mbyk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSwgZnVuY3Rpb24oaW5mbywgY2FsbGJhY2spIHtcbiAgICAgIGluZm8uY29sdW1ucyA9IFtdO1xuICAgICAgaW5mby5jb2x1bW5NYXAgPSB7fTtcbiAgICAgIGFzeW5jLmVhY2hTZXJpZXModGFibGVEYW8udGFibGUuY29sdW1ucywgZnVuY3Rpb24oY29sdW1uLCBjb2x1bW5Eb25lKSB7XG4gICAgICAgIHZhciBkY2QgPSBncC5nZXREYXRhQ29sdW1uc0RhbygpO1xuICAgICAgICBkY2QuZ2V0RGF0YUNvbHVtbnModGFibGVEYW8udGFibGUudGFibGVfbmFtZSwgY29sdW1uLm5hbWUsIGZ1bmN0aW9uKGVyciwgZGF0YUNvbHVtbikge1xuICAgICAgICAgIGluZm8uY29sdW1ucy5wdXNoKHtcbiAgICAgICAgICAgIGluZGV4OiBjb2x1bW4uaW5kZXgsXG4gICAgICAgICAgICBuYW1lOiBjb2x1bW4ubmFtZSxcbiAgICAgICAgICAgIG1heDogY29sdW1uLm1heCxcbiAgICAgICAgICAgIG1pbjogY29sdW1uLm1pbixcbiAgICAgICAgICAgIG5vdE51bGw6IGNvbHVtbi5ub3ROdWxsLFxuICAgICAgICAgICAgcHJpbWFyeUtleTogY29sdW1uLnByaW1hcnlLZXksXG4gICAgICAgICAgICBkYXRhVHlwZTogY29sdW1uLmRhdGFUeXBlID8gRGF0YVR5cGVzLm5hbWUoY29sdW1uLmRhdGFUeXBlKSA6ICcnLFxuICAgICAgICAgICAgZGlzcGxheU5hbWU6IGRhdGFDb2x1bW4gJiYgZGF0YUNvbHVtbi5uYW1lID8gZGF0YUNvbHVtbi5uYW1lIDogY29sdW1uLm5hbWUsXG4gICAgICAgICAgICBkYXRhQ29sdW1uOiBkYXRhQ29sdW1uXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgaW5mby5jb2x1bW5NYXBbY29sdW1uLm5hbWVdID0gaW5mby5jb2x1bW5zW2luZm8uY29sdW1ucy5sZW5ndGgtMV07XG4gICAgICAgICAgY29sdW1uRG9uZSgpO1xuICAgICAgICB9KTtcbiAgICAgIH0sIGZ1bmN0aW9uKGVycikge1xuICAgICAgICBjYWxsYmFjayhudWxsLCBpbmZvKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgXSwgY2FsbGJhY2spO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBHZW9QYWNrYWdlO1xuIiwiLyoqXG4gKiBHZW9QYWNrYWdlIENvbnN0YW50cyBtb2R1bGUuXG4gKiBAbW9kdWxlIGRhby9nZW9QYWNrYWdlQ29uc3RhbnRzXG4gKi9cblxuLyoqIEBjb25zdGFudCB7c3RyaW5nfSBHRU9QQUNLQUdFX0VYVEVOU0lPTiBFeHRlbnNpb24gdG8gR2VvUGFja2FnZSBmaWxlcyAqL1xuZXhwb3J0cy5HRU9QQUNLQUdFX0VYVEVOU0lPTiA9ICdncGtnJztcbi8qKiBAY29uc3RhbnQge3N0cmluZ30gR0VPUEFDS0FHRV9FWFRFTkRFRF9FWFRFTlNJT04gRXh0ZW5zaW9uIHRvIEdlb1BhY2thZ2UgZXh0ZW5zaW9uIGZpbGVzICovXG5leHBvcnRzLkdFT1BBQ0tBR0VfRVhURU5ERURfRVhURU5TSU9OID0gJ2dwa3gnO1xuLyoqIEBjb25zdGFudCB7c3RyaW5nfSBBUFBMSUNBVElPTl9JRCBHZW9QYWNrYWdlIGFwcGxpY2F0aW9uIGlkICovXG5leHBvcnRzLkFQUExJQ0FUSU9OX0lEID0gJ0dQMTAnO1xuLyoqIEBjb25zdGFudCB7c3RyaW5nfSBHRU9QQUNLQUdFX0VYVEVOU0lPTl9BVVRIT1IgR2VvUGFja2FnZSBhdXRob3IgKi9cbmV4cG9ydHMuR0VPUEFDS0FHRV9FWFRFTlNJT05fQVVUSE9SID0gZXhwb3J0cy5HRU9QQUNLQUdFX0VYVEVOU0lPTjtcbi8qKiBAY29uc3RhbnQge3N0cmluZ30gR0VPTUVUUllfRVhURU5TSU9OX1BSRUZJWCBHZW9tZXRyeSBleHRlbnNpb24gcHJlZml4ICovXG5leHBvcnRzLkdFT01FVFJZX0VYVEVOU0lPTl9QUkVGSVggPSAnZ2VvbSc7XG4vKiogQGNvbnN0YW50IHtzdHJpbmd9IEdFT1BBQ0tBR0VfR0VPTUVUUllfTUFHSVhfTlVNQkVSIEV4cGVjdGVkIG1hZ2ljIG51bWJlciAqL1xuZXhwb3J0cy5HRU9QQUNLQUdFX0dFT01FVFJZX01BR0lDX05VTUJFUiA9ICdHUCc7XG4vKiogQGNvbnN0YW50IHtzdHJpbmd9IEdFT1BBQ0tBR0VfR0VPTUVUUllfVkVSU0lPTl8xIEV4cGVjdGVkIHZlcnNpb24gMSB2YWx1ZSAqL1xuZXhwb3J0cy5HRU9QQUNLQUdFX0dFT01FVFJZX1ZFUlNJT05fMSA9IDA7XG4vKiogQGNvbnN0YW50IHtzdHJpbmd9IFNRTElURV9IRUFERVJfUFJFRklYIFNRTGl0ZSBoZWFkZXIgc3RyaW5nIHByZWZpeCAqL1xuZXhwb3J0cy5TUUxJVEVfSEVBREVSX1BSRUZJWCA9ICdTUUxpdGUgZm9ybWF0IDMnO1xuIiwiLyoqXG4gKiBHZW9QYWNrYWdlIE1hbmFnZXIgdXNlZCB0byBjcmVhdGUgYW5kIG9wZW4gR2VvUGFja2FnZXNcbiAqIEBtb2R1bGUgZ2VvUGFja2FnZU1hbmFnZXJcbiAqL1xuXG52YXIgYXN5bmMgPSByZXF1aXJlKCdhc3luYycpXG4gICwgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKVxuICAsIGZzID0gcmVxdWlyZSgnZnMnKTtcblxudmFyIEdlb1BhY2thZ2UgPSByZXF1aXJlKCcuL2dlb1BhY2thZ2UnKVxuICAsIEdlb1BhY2thZ2VWYWxpZGF0ZSA9IHJlcXVpcmUoJy4vdmFsaWRhdGUvZ2VvUGFja2FnZVZhbGlkYXRlJylcbiAgLCBHZW9QYWNrYWdlQ29ubmVjdGlvbiA9IHJlcXVpcmUoJy4vZGIvZ2VvUGFja2FnZUNvbm5lY3Rpb24nKTtcblxuLyoqXG4gKiBPcGVuIGEgR2VvUGFja2FnZVxuICogQHBhcmFtICB7c3RyaW5nfSAgIGZpbGVQYXRoIEFic29sdXRlIHBhdGggdG8gdGhlIEdlb1BhY2thZ2UgdG8gb3BlblxuICogQHBhcmFtIHtjYWxsYmFja30gY2FsbGJhY2sgd2hpY2ggZ2V0cyBwYXNzZWQgYW4gZXJyb3IgYW5kIHRoZSBHZW9QYWNrYWdlXG4gKi9cbm1vZHVsZS5leHBvcnRzLm9wZW4gPSBmdW5jdGlvbihmaWxlUGF0aCwgY2FsbGJhY2spIHtcbiAgdmFyIGVycm9yID0gR2VvUGFja2FnZVZhbGlkYXRlLnZhbGlkYXRlR2VvUGFja2FnZUV4dGVuc2lvbihmaWxlUGF0aCk7XG4gIGlmIChlcnJvcikgcmV0dXJuIGNhbGxiYWNrKGVycm9yKTtcblxuICB2YXIgcmVzdWx0cyA9IHt9O1xuICBhc3luYy53YXRlcmZhbGwoW2Z1bmN0aW9uKGNhbGxiYWNrKSB7XG4gICAgR2VvUGFja2FnZUNvbm5lY3Rpb24uY29ubmVjdChmaWxlUGF0aCwgZnVuY3Rpb24oZXJyLCBjb25uZWN0aW9uKSB7XG4gICAgICBpZiAoZXJyKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdjYW5ub3Qgb3BlbiAnICsgZmlsZVBhdGgpO1xuICAgICAgICByZXR1cm4gY2FsbGJhY2soZXJyKTtcbiAgICAgIH1cbiAgICAgIHJlc3VsdHMuY29ubmVjdGlvbiA9IGNvbm5lY3Rpb247XG4gICAgICBjYWxsYmFjayhlcnIsIHJlc3VsdHMpO1xuICAgIH0pO1xuICB9LCBmdW5jdGlvbihyZXN1bHRzLCBjYWxsYmFjaykge1xuICAgIHJlc3VsdHMuZ2VvUGFja2FnZSA9IG5ldyBHZW9QYWNrYWdlKHBhdGguYmFzZW5hbWUoZmlsZVBhdGgpLCBmaWxlUGF0aCwgcmVzdWx0cy5jb25uZWN0aW9uKTtcbiAgICBjYWxsYmFjayhudWxsLCByZXN1bHRzKTtcbiAgfSwgZnVuY3Rpb24ocmVzdWx0cywgY2FsbGJhY2spIHtcbiAgICBHZW9QYWNrYWdlVmFsaWRhdGUuaGFzTWluaW11bVRhYmxlcyhyZXN1bHRzLmdlb1BhY2thZ2UsIGZ1bmN0aW9uKGVycikge1xuICAgICAgY2FsbGJhY2soZXJyLCByZXN1bHRzKTtcbiAgICB9KTtcbiAgfV0sIGZ1bmN0aW9uKGVyciwgcmVzdWx0cykge1xuICAgIGlmIChlcnIpIHtcbiAgICAgIHJldHVybiBjYWxsYmFjayhlcnIpO1xuICAgIH1cbiAgICBjYWxsYmFjayhlcnIsIHJlc3VsdHMuZ2VvUGFja2FnZSk7XG4gIH0pO1xufVxuXG5tb2R1bGUuZXhwb3J0cy5jcmVhdGUgPSBmdW5jdGlvbihmaWxlUGF0aCwgY2FsbGJhY2spIHtcbiAgaWYgKCFjYWxsYmFjaykge1xuICAgIGNhbGxiYWNrID0gZmlsZVBhdGg7XG4gICAgZmlsZVBhdGggPSB1bmRlZmluZWQ7XG4gIH1cbiAgYXN5bmMud2F0ZXJmYWxsKFtcbiAgICBmdW5jdGlvbihjYWxsYmFjaykge1xuICAgICAgaWYgKGZpbGVQYXRoKSB7XG4gICAgICAgIHZhciBlcnJvciA9IEdlb1BhY2thZ2VWYWxpZGF0ZS52YWxpZGF0ZUdlb1BhY2thZ2VFeHRlbnNpb24oZmlsZVBhdGgpO1xuICAgICAgICBpZiAoZXJyb3IpIHJldHVybiBjYWxsYmFjayhlcnJvcik7XG4gICAgICAgIGlmICh0eXBlb2YocHJvY2VzcykgIT09ICd1bmRlZmluZWQnICYmIHByb2Nlc3MudmVyc2lvbikge1xuICAgICAgICAgIGZzLnN0YXQoZmlsZVBhdGgsIGZ1bmN0aW9uKGVyciwgc3RhdHMpIHtcbiAgICAgICAgICAgIGlmIChlcnIgfHwgIXN0YXRzKSB7XG4gICAgICAgICAgICAgIGNhbGxiYWNrKGVycik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYWxsYmFjayhudWxsLCBmaWxlUGF0aCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY2FsbGJhY2sobnVsbCwgZmlsZVBhdGgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSwgZnVuY3Rpb24oZmlsZVBhdGgsIGNhbGxiYWNrKSB7XG4gICAgICBHZW9QYWNrYWdlQ29ubmVjdGlvbi5jb25uZWN0KGZpbGVQYXRoLCBmdW5jdGlvbihlcnIsIGNvbm5lY3Rpb24pIHtcbiAgICAgICAgY2FsbGJhY2soZXJyLCBjb25uZWN0aW9uKTtcbiAgICAgIH0pO1xuICAgIH0sIGZ1bmN0aW9uKGNvbm5lY3Rpb24sIGNhbGxiYWNrKSB7XG4gICAgICBjb25uZWN0aW9uLnNldEFwcGxpY2F0aW9uSWQoZnVuY3Rpb24oZXJyKSB7XG4gICAgICAgIGNhbGxiYWNrKGVyciwgY29ubmVjdGlvbik7XG4gICAgICB9KTtcbiAgICB9LCBmdW5jdGlvbihjb25uZWN0aW9uLCBjYWxsYmFjaykge1xuICAgICAgY2FsbGJhY2sobnVsbCwgbmV3IEdlb1BhY2thZ2UocGF0aC5iYXNlbmFtZShmaWxlUGF0aCksIGZpbGVQYXRoLCBjb25uZWN0aW9uKSk7XG4gICAgfVxuICBdLCBmdW5jdGlvbihlcnIsIGdlb3BhY2thZ2UpIHtcbiAgICBpZiAoZXJyIHx8ICFnZW9wYWNrYWdlKSB7XG4gICAgICByZXR1cm4gY2FsbGJhY2soZXJyKTtcbiAgICB9XG4gICAgY2FsbGJhY2soZXJyLCBnZW9wYWNrYWdlKTtcbiAgfSk7XG59XG4iLCJ2YXIgd2t4ID0gcmVxdWlyZSgnd2t4Jyk7XG52YXIgdHVyZkJib3ggPSByZXF1aXJlKCdAdHVyZi9iYm94Jyk7XG5cbm1vZHVsZS5leHBvcnRzLmJ1aWxkRW52ZWxvcGVXaXRoR2VvbWV0cnkgPSBmdW5jdGlvbih3a2JHZW9tZXRyeSkge1xuICB2YXIgZ2VvSnNvbiA9IHdrYkdlb21ldHJ5LnRvR2VvSlNPTigpO1xuICB2YXIgYmJveCA9IHR1cmZCYm94KGdlb0pzb24pO1xuICByZXR1cm4ge1xuICAgIG1pblg6IGJib3hbMF0sXG4gICAgbWluWTogYmJveFsxXSxcbiAgICBtYXhYOiBiYm94WzJdLFxuICAgIG1heFk6IGJib3hbM11cbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMuZXhwYW5kRW52ZWxvcGVGb3JHZW9tZXRyeSA9IGZ1bmN0aW9uKGVudmVsb3BlLCB3a2JHZW9tZXRyeSkge1xuXG59XG4iLCIvKipcbiAqIEdlb21ldHJ5RGF0YSBtb2R1bGUuXG4gKiBAbW9kdWxlIGdlb20vZ2VvbWV0cnlEYXRhXG4gKi9cblxudmFyIEdlb1BhY2thZ2VDb25zdGFudHMgPSByZXF1aXJlKCcuLi9nZW9QYWNrYWdlQ29uc3RhbnRzJyk7XG5cbnZhciB3a3ggPSByZXF1aXJlKCd3a3gnKTtcblxudmFyIEJJR19FTkRJQU4gPSAwO1xudmFyIExJVFRMRV9FTkRJQU4gPSAxO1xuXG4vKipcbiAqIEdlb1BhY2thZ2UgR2VvbWV0cnkgRGF0YVxuICovXG52YXIgR2VvbWV0cnlEYXRhID0gZnVuY3Rpb24oYnVmZmVyKSB7XG4gIHRoaXMuZW1wdHkgPSB0cnVlO1xuICB0aGlzLmJ5dGVPcmRlciA9IEJJR19FTkRJQU47XG4gIGlmIChidWZmZXIpIHtcbiAgICB0aGlzLmZyb21EYXRhKGJ1ZmZlcik7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBHZW9tZXRyeURhdGE7XG5cbkdlb21ldHJ5RGF0YS5wcm90b3R5cGUuc2V0U3JzSWQgPSBmdW5jdGlvbihzcnNJZCkge1xuICB0aGlzLnNyc0lkID0gc3JzSWQ7XG59XG5cbkdlb21ldHJ5RGF0YS5wcm90b3R5cGUuc2V0R2VvbWV0cnkgPSBmdW5jdGlvbih3a2JHZW9tZXRyeSkge1xuICB0aGlzLmVtcHR5ID0gZmFsc2U7XG4gIHRoaXMuZ2VvbWV0cnkgPSB3a2JHZW9tZXRyeTtcbn1cblxuR2VvbWV0cnlEYXRhLnByb3RvdHlwZS5zZXRFbnZlbG9wZSA9IGZ1bmN0aW9uKGVudmVsb3BlKSB7XG4gIHRoaXMuZW52ZWxvcGUgPSBlbnZlbG9wZTtcbn1cblxuR2VvbWV0cnlEYXRhLnByb3RvdHlwZS5mcm9tRGF0YSA9IGZ1bmN0aW9uIChidWZmZXIpIHtcbiAgdGhpcy5idWZmZXIgPSBidWZmZXI7XG4gIGlmIChidWZmZXIgaW5zdGFuY2VvZiBVaW50OEFycmF5KSB7XG4gICAgdGhpcy5idWZmZXIgPSBidWZmZXIgPSBuZXcgQnVmZmVyKGJ1ZmZlcik7XG4gIH1cbiAgdmFyIG1hZ2ljU3RyaW5nID0gYnVmZmVyLnRvU3RyaW5nKCdhc2NpaScsIDAsIDIpO1xuICBpZiAobWFnaWNTdHJpbmcgIT09IEdlb1BhY2thZ2VDb25zdGFudHMuR0VPUEFDS0FHRV9HRU9NRVRSWV9NQUdJQ19OVU1CRVIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1VuZXhwZWN0ZWQgR2VvUGFja2FnZSBHZW9tZXRyeSBtYWdpYyBudW1iZXI6ICcgKyBtYWdpY1N0cmluZyArICcsIEV4cGVjdGVkOiAnICsgR2VvUGFja2FnZUNvbnN0YW50cy5HRU9QQUNLQUdFX0dFT01FVFJZX01BR0lDX05VTUJFUik7XG4gIH1cblxuICB2YXIgdmVyc2lvbiA9IGJ1ZmZlci5yZWFkVUludDgoMik7XG4gIGlmICh2ZXJzaW9uICE9PSBHZW9QYWNrYWdlQ29uc3RhbnRzLkdFT1BBQ0tBR0VfR0VPTUVUUllfVkVSU0lPTl8xKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdVbmV4cGVjdGVkIEdlb1BhY2thZ2UgR2VvbWV0cnkgdmVyc2lvbiAnICsgdmVyc2lvbiArICcsIEV4cGVjdGVkOiAnICsgR2VvUGFja2FnZUNvbnN0YW50cy5HRU9QQUNLQUdFX0dFT01FVFJZX1ZFUlNJT05fMSk7XG4gIH1cblxuICB2YXIgZmxhZ3MgPSBidWZmZXIucmVhZFVJbnQ4KDMpO1xuICB2YXIgZW52ZWxvcGVJbmRpY2F0b3IgPSB0aGlzLnJlYWRGbGFncyhmbGFncyk7XG5cbiAgdGhpcy5zcnNJZCA9IGJ1ZmZlclt0aGlzLmJ5dGVPcmRlciA/ICdyZWFkVUludDMyTEUnIDogJ3JlYWRVSW50MzJCRSddKDQpO1xuICB2YXIgZW52ZWxvcGVBbmRPZmZlc3QgPSB0aGlzLnJlYWRFbnZlbG9wZShlbnZlbG9wZUluZGljYXRvciwgYnVmZmVyKTtcbiAgdGhpcy5lbnZlbG9wZSA9IGVudmVsb3BlQW5kT2ZmZXN0LmVudmVsb3BlO1xuXG4gIHZhciBvZmZzZXQgPSBlbnZlbG9wZUFuZE9mZmVzdC5vZmZzZXQ7XG5cbiAgdmFyIHdrYkJ1ZmZlciA9IGJ1ZmZlci5zbGljZShvZmZzZXQpO1xuICB0aGlzLmdlb21ldHJ5ID0gd2t4Lkdlb21ldHJ5LnBhcnNlKHdrYkJ1ZmZlcik7XG59O1xuXG5HZW9tZXRyeURhdGEucHJvdG90eXBlLnRvRGF0YSA9IGZ1bmN0aW9uKCkge1xuICB2YXIgaGVhZGVyID0gbmV3IEJ1ZmZlcig4KTtcblxuICAvLyBXcml0ZSBHUCBhcyB0aGUgMiBieXRlIG1hZ2ljIG51bWJlclxuICBoZWFkZXIud3JpdGUoR2VvUGFja2FnZUNvbnN0YW50cy5HRU9QQUNLQUdFX0dFT01FVFJZX01BR0lDX05VTUJFUik7XG5cbiAgLy8gV3JpdGUgYSBieXRlIGFzIHRoZSB2ZXJzaW9uIHZhbHVlIG9mIDAgPSB2ZXJzaW9uIDFcbiAgaGVhZGVyLndyaXRlVUludDgoR2VvUGFja2FnZUNvbnN0YW50cy5HRU9QQUNLQUdFX0dFT01FVFJZX1ZFUlNJT05fMSwgMik7XG5cbiAgLy8gQnVpbGQgYW5kIHdyaXRlIGEgZmxhZ3MgYnl0ZVxuICB2YXIgZmxhZ3MgPSB0aGlzLmJ1aWxkRmxhZ3NCeXRlKCk7XG4gIGhlYWRlci53cml0ZVVJbnQ4KGZsYWdzLCAzKTtcblxuICAvLyB3cml0ZSB0aGUgNCBieXRlIHNycyBpZFxuICBoZWFkZXJbdGhpcy5ieXRlT3JkZXIgPyAnd3JpdGVVSW50MzJMRScgOiAnd3JpdGVVSW50MzJCRSddKHRoaXMuc3JzSWQsIDQpO1xuXG4gIHZhciBlbnZlbG9wZUJ1ZmZlciA9IHRoaXMud3JpdGVFbnZlbG9wZSh0aGlzLmVudmVsb3BlKTtcblxuICB0aGlzLmJ1ZmZlciA9IEJ1ZmZlci5jb25jYXQoW2hlYWRlciwgZW52ZWxvcGVCdWZmZXIsIHRoaXMuZ2VvbWV0cnkudG9Xa2IoKV0pO1xuICByZXR1cm4gdGhpcy5idWZmZXI7XG59O1xuXG5HZW9tZXRyeURhdGEucHJvdG90eXBlLndyaXRlRW52ZWxvcGUgPSBmdW5jdGlvbigpIHtcbiAgaWYgKCF0aGlzLmVudmVsb3BlKSByZXR1cm4gbmV3IEJ1ZmZlcigwKTtcblxuICB2YXIgd3JpdGVEb3VibGVNZXRob2QgPSAnd3JpdGVEb3VibGUnICsgKHRoaXMuYnl0ZU9yZGVyID8gJ0xFJyA6ICdCRScpO1xuXG4gIHZhciBsZW5ndGggPSAzMjtcbiAgaWYgKHRoaXMuZW52ZWxvcGUuaGFzWikge1xuICAgIGxlbmd0aCArPSAxNjtcbiAgfVxuICBpZiAodGhpcy5lbnZlbG9wZS5oYXNNKSB7XG4gICAgbGVuZ3RoICs9IDE2O1xuICB9XG4gIHZhciBlbnZlbG9wZUJ1ZmZlciA9IG5ldyBCdWZmZXIobGVuZ3RoKTtcbiAgZW52ZWxvcGVCdWZmZXJbd3JpdGVEb3VibGVNZXRob2RdKHRoaXMuZW52ZWxvcGUubWluWCwgMCk7XG4gIGVudmVsb3BlQnVmZmVyW3dyaXRlRG91YmxlTWV0aG9kXSh0aGlzLmVudmVsb3BlLm1heFgsIDgpO1xuICBlbnZlbG9wZUJ1ZmZlclt3cml0ZURvdWJsZU1ldGhvZF0odGhpcy5lbnZlbG9wZS5taW5ZLCAxNik7XG4gIGVudmVsb3BlQnVmZmVyW3dyaXRlRG91YmxlTWV0aG9kXSh0aGlzLmVudmVsb3BlLm1heFksIDI0KTtcblxuICB2YXIgcG9zaXRpb24gPSAzMjtcbiAgaWYgKHRoaXMuZW52ZWxvcGUuaGFzWikge1xuICAgIGVudmVsb3BlQnVmZmVyW3dyaXRlRG91YmxlTWV0aG9kXSh0aGlzLmVudmVsb3BlLm1pblosIHBvc2l0aW9uKTtcbiAgICBlbnZlbG9wZUJ1ZmZlclt3cml0ZURvdWJsZU1ldGhvZF0odGhpcy5lbnZlbG9wZS5tYXhaLCBwb3NpdGlvbis4KTtcbiAgICBwb3NpdGlvbiA9IDQ4O1xuICB9XG4gIGlmICh0aGlzLmVudmVsb3BlLmhhc00pIHtcbiAgICBlbnZlbG9wZUJ1ZmZlclt3cml0ZURvdWJsZU1ldGhvZF0odGhpcy5lbnZlbG9wZS5taW5NLCBwb3NpdGlvbik7XG4gICAgZW52ZWxvcGVCdWZmZXJbd3JpdGVEb3VibGVNZXRob2RdKHRoaXMuZW52ZWxvcGUubWF4TSwgcG9zaXRpb24rOCk7XG4gIH1cblxuICByZXR1cm4gZW52ZWxvcGVCdWZmZXI7XG59O1xuXG5HZW9tZXRyeURhdGEucHJvdG90eXBlLmJ1aWxkRmxhZ3NCeXRlID0gZnVuY3Rpb24oKSB7XG4gIHZhciBmbGFnID0gMDtcblxuICAvLyBBZGQgdGhlIGJpbmFyeSB0eXBlIHRvIGJpdCA1LCAwIGZvciBzdGFuZGFyZCBhbmQgMSBmb3IgZXh0ZW5kZWRcbiAgdmFyIGJpbmFyeVR5cGUgPSB0aGlzLmV4dGVuZGVkID8gMSA6IDA7XG4gIGZsYWcgKz0gKGJpbmFyeVR5cGUgPDwgNSk7XG5cbiAgLy8gQWRkIHRoZSBlbXB0eSBnZW9tZXRyeSBmbGFnIHRvIGJpdCA0LCAwIGZvciBub24tZW1wdHkgYW5kIDEgZm9yIGVtcHR5XG4gIHZhciBlbXB0eVZhbHVlID0gdGhpcy5lbXB0eSA/IDEgOiAwO1xuICBmbGFnICs9IChlbXB0eVZhbHVlIDw8IDQpO1xuXG4gIC8vIEFkZCB0aGUgZW52ZWxvcGUgY29udGVudHMgaW5kaWNhdG9yIGNvZGUgKDMtYml0IHVuc2lnbmVkIGludGVnZXIgdG8gYml0cyAzLCAyLCBhbmQgMSlcbiAgdmFyIGVudmVsb3BlSW5kaWNhdG9yID0gIXRoaXMuZW52ZWxvcGUgPyAwIDogdGhpcy5nZXRJbmRpY2F0b3JXaXRoRW52ZWxvcGUodGhpcy5lbnZlbG9wZSk7XG4gIGZsYWcgKz0gKGVudmVsb3BlSW5kaWNhdG9yIDw8IDEpO1xuXG4gIC8vIEFkZCB0aGUgYnl0ZSBvcmRlciB0byBiaXQgMCwgMCBmb3IgQmlnIEVuZGlhbiBhbmQgMSBmb3IgTGl0dGxlIEVuZGlhblxuICB2YXIgYnl0ZU9yZGVyVmFsdWUgPSAodGhpcy5ieXRlT3JkZXIgPT09IEJJR19FTkRJQU4pID8gMCA6IDE7XG4gIGZsYWcgKz0gYnl0ZU9yZGVyVmFsdWU7XG5cbiAgcmV0dXJuIGZsYWc7XG59O1xuXG5HZW9tZXRyeURhdGEucHJvdG90eXBlLmdldEluZGljYXRvcldpdGhFbnZlbG9wZSA9IGZ1bmN0aW9uKGVudmVsb3BlKSB7XG4gIHZhciBpbmRpY2F0b3IgPSAxO1xuICBpZiAoZW52ZWxvcGUuaGFzWikge1xuICAgIGluZGljYXRvcisrO1xuICB9XG4gIGlmIChlbnZlbG9wZS5oYXNNKSB7XG4gICAgaW5kaWNhdG9yICs9IDI7XG4gIH1cbiAgcmV0dXJuIGluZGljYXRvcjtcbn07XG5cbkdlb21ldHJ5RGF0YS5wcm90b3R5cGUucmVhZEZsYWdzID0gZnVuY3Rpb24gKGZsYWdzSW50KSB7XG4gIC8vIFZlcmlmeSB0aGUgcmVzZXJ2ZWQgYml0cyBhdCA3IGFuZCA2IGFyZSAwXG4gIHZhciByZXNlcnZlZDcgPSAoZmxhZ3NJbnQgPj4gNykgJiAxO1xuICB2YXIgcmVzZXJ2ZWQ2ID0gKGZsYWdzSW50ID4+IDYpICYgMTtcbiAgaWYgKHJlc2VydmVkNyAhPT0gMCB8fCByZXNlcnZlZDYgIT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVW5leHBlY3RlZCBHZW9QYWNrYWdlIEdlb21ldHJ5IGZsYWdzLiBGbGFnIGJpdCA3IGFuZCA2IHNob3VsZCBib3RoIGJlIDAsIDc9JytyZXNlcnZlZDcrJywgNj0nKyByZXNlcnZlZDYpO1xuICB9XG5cbiAgLy8gR2V0IHRoZSBiaW5hcnkgdHlwZSBmcm9tIGJpdCA1LCAwIGZvciBzdGFuZGFyZCBhbmQgMSBmb3IgZXh0ZW5kZWRcbiAgdmFyIGJpbmFyeVR5cGUgPSAoZmxhZ3NJbnQgPj4gNSkgJiAxO1xuICB0aGlzLmV4dGVuZGVkID0gYmluYXJ5VHlwZSA9PSAxO1xuXG4gIC8vIEdldCB0aGUgZW1wdHkgZ2VvbWV0cnkgZmxhZyBmcm9tIGJpdCA0LCAwIGZvciBub24tZW1wdHkgYW5kIDEgZm9yXG4gIC8vIGVtcHR5XG4gIHZhciBlbXB0eVZhbHVlID0gKGZsYWdzSW50ID4+IDQpICYgMTtcbiAgdGhpcy5lbXB0eSA9IGVtcHR5VmFsdWUgPT0gMTtcblxuICAvLyBHZXQgdGhlIGVudmVsb3BlIGNvbnRlbnRzIGluZGljYXRvciBjb2RlICgzLWJpdCB1bnNpZ25lZCBpbnRlZ2VyIGZyb21cbiAgLy8gYml0cyAzLCAyLCBhbmQgMSlcbiAgdmFyIGVudmVsb3BlSW5kaWNhdG9yID0gKGZsYWdzSW50ID4+IDEpICYgNztcbiAgaWYgKGVudmVsb3BlSW5kaWNhdG9yID4gNCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmV4cGVjdGVkIEdlb1BhY2thZ2UgR2VvbWV0cnkgZmxhZ3MuIEVudmVsb3BlIGNvbnRlbnRzIGluZGljYXRvciBtdXN0IGJlIGJldHdlZW4gMCBhbmQgNC4gQWN0dWFsOiAnICsgZW52ZWxvcGVJbmRpY2F0b3IpO1xuICB9XG5cbiAgLy8gR2V0IHRoZSBieXRlIG9yZGVyIGZyb20gYml0IDAsIDAgZm9yIEJpZyBFbmRpYW4gYW5kIDEgZm9yIExpdHRsZSBFbmRpYW5cbiAgdmFyIGJ5dGVPcmRlclZhbHVlID0gZmxhZ3NJbnQgJiAxO1xuICB0aGlzLmJ5dGVPcmRlciA9IGJ5dGVPcmRlclZhbHVlO1xuICByZXR1cm4gZW52ZWxvcGVJbmRpY2F0b3I7XG59O1xuXG5HZW9tZXRyeURhdGEucHJvdG90eXBlLnJlYWRFbnZlbG9wZSA9IGZ1bmN0aW9uIChlbnZlbG9wZUluZGljYXRvciwgYnVmZmVyKSB7XG4gIHZhciByZWFkRG91YmxlTWV0aG9kID0gJ3JlYWREb3VibGUnICsgKHRoaXMuYnl0ZU9yZGVyID8gJ0xFJyA6ICdCRScpO1xuXG4gIHZhciBlbnZlbG9wZUJ5dGVPZmZzZXQgPSA4O1xuICByZWFkcyA9IDA7XG4gIHZhciBlbnZlbG9wZUFuZE9mZnNldCA9IHtcbiAgICBlbnZlbG9wZTogdW5kZWZpbmVkLFxuICAgIG9mZnNldDogZW52ZWxvcGVCeXRlT2Zmc2V0XG4gIH07XG5cbiAgaWYgKGVudmVsb3BlSW5kaWNhdG9yIDw9IDApIHtcbiAgICByZXR1cm4gZW52ZWxvcGVBbmRPZmZzZXQ7XG4gIH1cbiAgdmFyIGVudmVsb3BlID0ge307XG4gIC8vIFJlYWQgeCBhbmQgeSB2YWx1ZXMgYW5kIGNyZWF0ZSBlbnZlbG9wZVxuICBlbnZlbG9wZS5taW5YID0gYnVmZmVyW3JlYWREb3VibGVNZXRob2RdKGVudmVsb3BlQnl0ZU9mZnNldCArICg4ICogcmVhZHMrKykpO1xuICBlbnZlbG9wZS5tYXhYID0gYnVmZmVyW3JlYWREb3VibGVNZXRob2RdKGVudmVsb3BlQnl0ZU9mZnNldCArICg4ICogcmVhZHMrKykpO1xuICBlbnZlbG9wZS5taW5ZID0gYnVmZmVyW3JlYWREb3VibGVNZXRob2RdKGVudmVsb3BlQnl0ZU9mZnNldCArICg4ICogcmVhZHMrKykpO1xuICBlbnZlbG9wZS5tYXhZID0gYnVmZmVyW3JlYWREb3VibGVNZXRob2RdKGVudmVsb3BlQnl0ZU9mZnNldCArICg4ICogcmVhZHMrKykpO1xuXG4gIGVudmVsb3BlLmhhc1ogPSBmYWxzZTtcbiAgdmFyIG1pblogPSB1bmRlZmluZWQ7XG4gIHZhciBtYXhaID0gdW5kZWZpbmVkO1xuXG4gIGVudmVsb3BlLmhhc00gPSBmYWxzZTtcbiAgdmFyIG1pbk0gPSB1bmRlZmluZWQ7XG4gIHZhciBtYXhNID0gdW5kZWZpbmVkO1xuXG4gIC8vIFJlYWQgeiB2YWx1ZXNcbiAgaWYgKGVudmVsb3BlSW5kaWNhdG9yID09PSAyIHx8IGVudmVsb3BlSW5kaWNhdG9yID09PSA0KSB7XG4gICAgZW52ZWxvcGUuaGFzWiA9IHRydWU7XG4gICAgZW52ZWxvcGUubWluWiA9IGJ1ZmZlcltyZWFkRG91YmxlTWV0aG9kXShlbnZlbG9wZUJ5dGVPZmZzZXQgKyAoOCAqIHJlYWRzKyspKTtcbiAgICBlbnZlbG9wZS5tYXhaID0gYnVmZmVyW3JlYWREb3VibGVNZXRob2RdKGVudmVsb3BlQnl0ZU9mZnNldCArICg4ICogcmVhZHMrKykpO1xuICB9XG5cbiAgLy8gUmVhZCBtIHZhbHVlc1xuICBpZiAoZW52ZWxvcGVJbmRpY2F0b3IgPT09IDMgfHwgZW52ZWxvcGVJbmRpY2F0b3IgPT09IDQpIHtcbiAgICBlbnZlbG9wZS5oYXNNID0gdHJ1ZTtcbiAgICBlbnZlbG9wZS5taW5NID0gYnVmZmVyW3JlYWREb3VibGVNZXRob2RdKGVudmVsb3BlQnl0ZU9mZnNldCArICg4ICogcmVhZHMrKykpO1xuICAgIGVudmVsb3BlLm1heE0gPSBidWZmZXJbcmVhZERvdWJsZU1ldGhvZF0oZW52ZWxvcGVCeXRlT2Zmc2V0ICsgKDggKiByZWFkcysrKSk7XG4gIH1cbiAgZW52ZWxvcGVBbmRPZmZzZXQuZW52ZWxvcGUgPSBlbnZlbG9wZTtcbiAgZW52ZWxvcGVBbmRPZmZzZXQub2Zmc2V0ID0gZW52ZWxvcGVCeXRlT2Zmc2V0ICsgKDggKiByZWFkcyk7XG4gIHJldHVybiBlbnZlbG9wZUFuZE9mZnNldDtcbn07XG4iLCIvKipcbiAqIE1ldGFkYXRhIG1vZHVsZS5cbiAqIEBtb2R1bGUgbWV0YWRhdGFcbiAqIEBzZWUgbW9kdWxlOmRhby9kYW9cbiAqL1xuXG52YXIgRGFvID0gcmVxdWlyZSgnLi4vZGFvL2RhbycpO1xuXG52YXIgdXRpbCA9IHJlcXVpcmUoJ3V0aWwnKTtcblxuLyoqXG4gKiBDb250YWlucyBtZXRhZGF0YSBpbiBNSU1FIGVuY29kaW5ncyBzdHJ1Y3R1cmVkIGluIGFjY29yZGFuY2Ugd2l0aCBhbnlcbiAqIGF1dGhvcml0YXRpdmUgbWV0YWRhdGEgc3BlY2lmaWNhdGlvblxuICogQGNsYXNzIE1ldGFkYXRhXG4gKi9cbnZhciBNZXRhZGF0YSA9IGZ1bmN0aW9uKCkge1xuXG4gIC8qKlxuICAgKiBNZXRhZGF0YSBwcmltYXJ5IGtleVxuICAgKiBAbWVtYmVyIHtOdW1iZXJ9XG4gICAqL1xuICB0aGlzLmlkO1xuXG4gIC8qKlxuICAgKiBDYXNlIHNlbnNpdGl2ZSBuYW1lIG9mIHRoZSBkYXRhIHNjb3BlIHRvIHdoaWNoIHRoaXMgbWV0YWRhdGEgYXBwbGllczsgc2VlIE1ldGFkYXRhIFNjb3BlcyBiZWxvd1xuICAgKiBAbWVtYmVyIHtzdHJpbmd9XG4gICAqL1xuICB0aGlzLm1kX3Njb3BlO1xuXG4gIC8qKlxuICAgKiBVUkkgcmVmZXJlbmNlIHRvIHRoZSBtZXRhZGF0YSBzdHJ1Y3R1cmUgZGVmaW5pdGlvbiBhdXRob3JpdHlcbiAgICogQG1lbWJlciB7c3RyaW5nfVxuICAgKi9cbiAgdGhpcy5tZF9zdGFuZGFyZF91cmk7XG5cbiAgLyoqXG4gICAqIE1JTUUgZW5jb2Rpbmcgb2YgbWV0YWRhdGFcbiAgICogQG1lbWJlciB7c3RyaW5nfVxuICAgKi9cbiAgdGhpcy5taW1lX3R5cGU7XG5cbiAgLyoqXG4gICAqIG1ldGFkYXRhXG4gICAqIEBtZW1iZXIge3N0cmluZ31cbiAgICovXG4gIHRoaXMubWV0YWRhdGE7XG59XG5cbk1ldGFkYXRhLlVOREVGSU5FRCA9IFwidW5kZWZpbmVkXCI7XG5NZXRhZGF0YS5GSUVMRF9TRVNTSU9OID0gXCJmaWVsZFNlc3Npb25cIjtcbk1ldGFkYXRhLkNPTExFQ1RJT05fU0VTU0lPTiA9IFwiY29sbGVjdGlvblNlc3Npb25cIjtcbk1ldGFkYXRhLlNFUklFUyA9IFwic2VyaWVzXCI7XG5NZXRhZGF0YS5EQVRBU0VUID0gXCJkYXRhc2V0XCI7XG5NZXRhZGF0YS5GRUFUVVJFX1RZUEUgPSBcImZlYXR1cmVUeXBlXCI7XG5NZXRhZGF0YS5GRUFUVVJFID0gXCJmZWF0dXJlXCI7XG5NZXRhZGF0YS5BVFRSSUJVVEVfVFlQRSA9IFwiYXR0cmlidXRlVHlwZVwiO1xuTWV0YWRhdGEuQVRUUklCVVRFID0gXCJhdHRyaWJ1dGVcIjtcbk1ldGFkYXRhLlRJTEUgPSBcInRpbGVcIjtcbk1ldGFkYXRhLk1PREVMID0gXCJtb2RlbFwiO1xuTWV0YWRhdGEuQ0FUQUxPRyA9IFwiY2F0YWxvZ1wiO1xuTWV0YWRhdGEuU0NIRU1BID0gXCJzY2hlbWFcIjtcbk1ldGFkYXRhLlRBWE9OT01ZID0gXCJ0YXhvbm9teVwiO1xuTWV0YWRhdGEuU09GVFdBUkUgPSBcInNvZnR3YXJlXCI7XG5NZXRhZGF0YS5TRVJWSUNFID0gXCJzZXJ2aWNlXCI7XG5NZXRhZGF0YS5DT0xMRUNUSU9OX0hBUkRXQVJFID0gXCJjb2xsZWN0aW9uSGFyZHdhcmVcIjtcbk1ldGFkYXRhLk5PTl9HRU9HUkFQSElDX0RBVEFTRVQgPSBcIm5vbkdlb2dyYXBoaWNEYXRhc2V0XCI7XG5NZXRhZGF0YS5ESU1FTlNJT05fR1JPVVAgPSBcImRpbWVuc2lvbkdyb3VwXCI7XG5cbk1ldGFkYXRhLnByb3RvdHlwZS5nZXRTY29wZUluZm9ybWF0aW9uID0gZnVuY3Rpb24odHlwZSkge1xuICBzd2l0Y2godHlwZSkge1xuICAgIGNhc2UgTWV0YWRhdGEuVU5ERUZJTkVEOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbmFtZTogTWV0YWRhdGEuVU5ERUZJTkVELFxuICAgICAgICBjb2RlOiAnTkEnLFxuICAgICAgICBkZWZpbml0aW9uOiAnTWV0YWRhdGEgaW5mb3JtYXRpb24gc2NvcGUgaXMgdW5kZWZpbmVkJ1xuICAgICAgfTtcbiAgICBjYXNlIE1ldGFkYXRhLkZJRUxEX1NFU1NJT046XG4gICAgICByZXR1cm4ge1xuICAgICAgICBuYW1lOiBNZXRhZGF0YS5GSUVMRF9TRVNTSU9OLFxuICAgICAgICBjb2RlOiAnMDEyJyxcbiAgICAgICAgZGVmaW5pdGlvbjogJ0luZm9ybWF0aW9uIGFwcGxpZXMgdG8gdGhlIGZpZWxkIHNlc3Npb24nXG4gICAgICB9O1xuICAgIGNhc2UgTWV0YWRhdGEuQ09MTEVDVElPTl9TRVNTSU9OOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbmFtZTogTWV0YWRhdGEuQ09MTEVDVElPTl9TRVNTSU9OLFxuICAgICAgICBjb2RlOiAnMDA0JyxcbiAgICAgICAgZGVmaW5pdGlvbjogJ0luZm9ybWF0aW9uIGFwcGxpZXMgdG8gdGhlIGNvbGxlY3Rpb24gc2Vzc2lvbidcbiAgICAgIH07XG4gICAgY2FzZSBNZXRhZGF0YS5TRVJJRVM6XG4gICAgICByZXR1cm4ge1xuICAgICAgICBuYW1lOiBNZXRhZGF0YS5TRVJJRVMsXG4gICAgICAgIGNvZGU6ICcwMDYnLFxuICAgICAgICBkZWZpbml0aW9uOiAnSW5mb3JtYXRpb24gYXBwbGllcyB0byB0aGUgKGRhdGFzZXQpIHNlcmllcydcbiAgICAgIH07XG4gICAgY2FzZSBNZXRhZGF0YS5EQVRBU0VUOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbmFtZTogTWV0YWRhdGEuREFUQVNFVCxcbiAgICAgICAgY29kZTogJzAwNScsXG4gICAgICAgIGRlZmluaXRpb246ICdJbmZvcm1hdGlvbiBhcHBsaWVzIHRvIHRoZSAoZ2VvZ3JhcGhpYyBmZWF0dXJlKSBkYXRhc2V0J1xuICAgICAgfTtcbiAgICBjYXNlIE1ldGFkYXRhLkZFQVRVUkVfVFlQRTpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG5hbWU6IE1ldGFkYXRhLkZFQVRVUkVfVFlQRSxcbiAgICAgICAgY29kZTogJzAxMCcsXG4gICAgICAgIGRlZmluaXRpb246ICdJbmZvcm1hdGlvbiBhcHBsaWVzIHRvIGEgZmVhdHVyZSB0eXBlIChjbGFzcyknXG4gICAgICB9O1xuICAgIGNhc2UgTWV0YWRhdGEuRkVBVFVSRTpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG5hbWU6IE1ldGFkYXRhLkZFQVRVUkUsXG4gICAgICAgIGNvZGU6ICcwMDknLFxuICAgICAgICBkZWZpbml0aW9uOiAnSW5mb3JtYXRpb24gYXBwbGllcyB0byBhIGZlYXR1cmUgKGluc3RhbmNlKSdcbiAgICAgIH07XG4gICAgY2FzZSBNZXRhZGF0YS5BVFRSSUJVVEVfVFlQRTpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG5hbWU6IE1ldGFkYXRhLkFUVFJJQlVURV9UWVBFLFxuICAgICAgICBjb2RlOiAnMDAyJyxcbiAgICAgICAgZGVmaW5pdGlvbjogJ0luZm9ybWF0aW9uIGFwcGxpZXMgdG8gdGhlIGF0dHJpYnV0ZSBjbGFzcydcbiAgICAgIH07XG4gICAgY2FzZSBNZXRhZGF0YS5BVFRSSUJVVEU6XG4gICAgICByZXR1cm4ge1xuICAgICAgICBuYW1lOiBNZXRhZGF0YS5BVFRSSUJVVEUsXG4gICAgICAgIGNvZGU6ICcwMDEnLFxuICAgICAgICBkZWZpbml0aW9uOiAnSW5mb3JtYXRpb24gYXBwbGllcyB0byB0aGUgY2hhcmFjdGVyaXN0aWMgb2YgYSBmZWF0dXJlIChpbnN0YW5jZSknXG4gICAgICB9O1xuICAgIGNhc2UgTWV0YWRhdGEuVElMRTpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG5hbWU6IE1ldGFkYXRhLlRJTEUsXG4gICAgICAgIGNvZGU6ICcwMTYnLFxuICAgICAgICBkZWZpbml0aW9uOiAnSW5mb3JtYXRpb24gYXBwbGllcyB0byBhIHRpbGUsIGEgc3BhdGlhbCBzdWJzZXQgb2YgZ2VvZ3JhcGhpYyBkYXRhJ1xuICAgICAgfTtcbiAgICBjYXNlIE1ldGFkYXRhLk1PREVMOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbmFtZTogTWV0YWRhdGEuTU9ERUwsXG4gICAgICAgIGNvZGU6ICcwMTUnLFxuICAgICAgICBkZWZpbml0aW9uOiAnSW5mb3JtYXRpb24gYXBwbGllcyB0byBhIGNvcHkgb3IgaW1pdGF0aW9uIG9mIGFuIGV4aXN0aW5nIG9yIGh5cG90aGV0aWNhbCBvYmplY3QnXG4gICAgICB9O1xuICAgIGNhc2UgTWV0YWRhdGEuQ0FUQUxPRzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG5hbWU6IE1ldGFkYXRhLkNBVEFMT0csXG4gICAgICAgIGNvZGU6ICdOQScsXG4gICAgICAgIGRlZmluaXRpb246ICdNZXRhZGF0YSBhcHBsaWVzIHRvIGEgZmVhdHVyZSBjYXRhbG9nJ1xuICAgICAgfTtcbiAgICBjYXNlIE1ldGFkYXRhLlNDSEVNQTpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG5hbWU6IE1ldGFkYXRhLlNDSEVNQSxcbiAgICAgICAgY29kZTogJ05BJyxcbiAgICAgICAgZGVmaW5pdGlvbjogJ01ldGFkYXRhIGFwcGxpZXMgdG8gYW4gYXBwbGljYXRpb24gc2NoZW1hJ1xuICAgICAgfTtcbiAgICBjYXNlIE1ldGFkYXRhLlRBWE9OT01ZOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbmFtZTogTWV0YWRhdGEuVEFYT05PTVksXG4gICAgICAgIGNvZGU6ICdOQScsXG4gICAgICAgIGRlZmluaXRpb246ICdNZXRhZGF0YSBhcHBsaWVzIHRvIGEgdGF4b25vbXkgb3Iga25vd2xlZGdlIHN5c3RlbSdcbiAgICAgIH07XG4gICAgY2FzZSBNZXRhZGF0YS5TT0ZUV0FSRTpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG5hbWU6IE1ldGFkYXRhLlNPRlRXQVJFLFxuICAgICAgICBjb2RlOiAnMDEzJyxcbiAgICAgICAgZGVmaW5pdGlvbjogJ0luZm9ybWF0aW9uIGFwcGxpZXMgdG8gYSBjb21wdXRlciBwcm9ncmFtIG9yIHJvdXRpbmUnXG4gICAgICB9O1xuICAgIGNhc2UgTWV0YWRhdGEuU0VSVklDRTpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG5hbWU6IE1ldGFkYXRhLlNFUlZJQ0UsXG4gICAgICAgIGNvZGU6ICcwMTQnLFxuICAgICAgICBkZWZpbml0aW9uOiAnSW5mb3JtYXRpb24gYXBwbGllcyB0byBhIGNhcGFiaWxpdHkgd2hpY2ggYSBzZXJ2aWNlIHByb3ZpZGVyIGVudGl0eSBtYWtlcyBhdmFpbGFibGUgdG8gYSBzZXJ2aWNlIHVzZXIgZW50aXR5IHRocm91Z2ggYSBzZXQgb2YgaW50ZXJmYWNlcyB0aGF0IGRlZmluZSBhIGJlaGF2aW91ciwgc3VjaCBhcyBhIHVzZSBjYXNlJ1xuICAgICAgfTtcbiAgICBjYXNlIE1ldGFkYXRhLkNPTExFQ1RJT05fSEFSRFdBUkU6XG4gICAgICByZXR1cm4ge1xuICAgICAgICBuYW1lOiBNZXRhZGF0YS5DT0xMRUNUSU9OX0hBUkRXQVJFLFxuICAgICAgICBjb2RlOiAnMDAzJyxcbiAgICAgICAgZGVmaW5pdGlvbjogJ0luZm9ybWF0aW9uIGFwcGxpZXMgdG8gdGhlIGNvbGxlY3Rpb24gaGFyZHdhcmUgY2xhc3MnXG4gICAgICB9O1xuICAgIGNhc2UgTWV0YWRhdGEuTk9OX0dFT0dSQVBISUNfREFUQVNFVDpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG5hbWU6IE1ldGFkYXRhLk5PTl9HRU9HUkFQSElDX0RBVEFTRVQsXG4gICAgICAgIGNvZGU6ICcwMDcnLFxuICAgICAgICBkZWZpbml0aW9uOiAnSW5mb3JtYXRpb24gYXBwbGllcyB0byBub24tZ2VvZ3JhcGhpYyBkYXRhJ1xuICAgICAgfTtcbiAgICBjYXNlIE1ldGFkYXRhLkRJTUVOU0lPTl9HUk9VUDpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG5hbWU6IE1ldGFkYXRhLkRJTUVOU0lPTl9HUk9VUCxcbiAgICAgICAgY29kZTogJzAwOCcsXG4gICAgICAgIGRlZmluaXRpb246ICdJbmZvcm1hdGlvbiBhcHBsaWVzIHRvIGEgZGltZW5zaW9uIGdyb3VwJ1xuICAgICAgfTtcbiAgfVxufVxuXG4vKipcbiAqIE1ldGFkYXRhIERhdGEgQWNjZXNzIE9iamVjdFxuICogQGNsYXNzXG4gKiBAZXh0ZW5kcyB7bW9kdWxlOmRhby9kYW9+RGFvfVxuICovXG52YXIgTWV0YWRhdGFEYW8gPSBmdW5jdGlvbihjb25uZWN0aW9uKSB7XG4gIERhby5jYWxsKHRoaXMsIGNvbm5lY3Rpb24pO1xufTtcblxudXRpbC5pbmhlcml0cyhNZXRhZGF0YURhbywgRGFvKTtcblxuTWV0YWRhdGFEYW8ucHJvdG90eXBlLmNyZWF0ZU9iamVjdCA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gbmV3IE1ldGFkYXRhKCk7XG59O1xuXG5NZXRhZGF0YURhby5UQUJMRV9OQU1FID0gXCJncGtnX21ldGFkYXRhXCI7XG5NZXRhZGF0YURhby5DT0xVTU5fSUQgPSBcImlkXCI7XG5NZXRhZGF0YURhby5DT0xVTU5fTURfU0NPUEUgPSBcIm1kX3Njb3BlXCI7XG5NZXRhZGF0YURhby5DT0xVTU5fTURfU1RBTkRBUkRfVVJJID0gXCJtZF9zdGFuZGFyZF91cmlcIjtcbk1ldGFkYXRhRGFvLkNPTFVNTl9NSU1FX1RZUEUgPSBcIm1pbWVfdHlwZVwiO1xuTWV0YWRhdGFEYW8uQ09MVU1OX01FVEFEQVRBID0gXCJtZXRhZGF0YVwiO1xuXG5NZXRhZGF0YURhby5wcm90b3R5cGUuZ3BrZ1RhYmxlTmFtZSA9IE1ldGFkYXRhRGFvLlRBQkxFX05BTUU7XG5NZXRhZGF0YURhby5wcm90b3R5cGUuaWRDb2x1bW5zID0gW01ldGFkYXRhRGFvLkNPTFVNTl9JRF07XG5cbm1vZHVsZS5leHBvcnRzLk1ldGFkYXRhRGFvID0gTWV0YWRhdGFEYW87XG5tb2R1bGUuZXhwb3J0cy5NZXRhZGF0YSA9IE1ldGFkYXRhO1xuIiwiLyoqXG4gKiBNZXRhZGF0YVJlZmVyZW5jZSBtb2R1bGUuXG4gKiBAbW9kdWxlIG1ldGFkYXRhL3JlZmVyZW5jZVxuICogQHNlZSBtb2R1bGU6ZGFvL2Rhb1xuICovXG5cbnZhciBEYW8gPSByZXF1aXJlKCcuLi8uLi9kYW8vZGFvJylcbiAgLCBDb2x1bW5WYWx1ZXMgPSByZXF1aXJlKCcuLi8uLi9kYW8vY29sdW1uVmFsdWVzJyk7XG5cbnZhciB1dGlsID0gcmVxdWlyZSgndXRpbCcpO1xuXG4vKipcbiAqIExpbmtzIG1ldGFkYXRhIGluIHRoZSBncGtnX21ldGFkYXRhIHRhYmxlIHRvIGRhdGEgaW4gdGhlIGZlYXR1cmUsIGFuZCB0aWxlcyB0YWJsZXNcbiAqIEBjbGFzcyBNZXRhZGF0YVJlZmVyZW5jZVxuICovXG52YXIgTWV0YWRhdGFSZWZlcmVuY2UgPSBmdW5jdGlvbigpIHtcblxuICAvKipcbiAgICogTG93ZXJjYXNlIG1ldGFkYXRhIHJlZmVyZW5jZSBzY29wZTsgb25lIG9mIOKAmGdlb3BhY2thZ2XigJksIOKAmHRhYmxl4oCZLCDigJhjb2x1bW7igJksIOKAmXJvd+KAmSwg4oCZcm93L2NvbOKAmVxuICAgKiBAbWVtYmVyIHtzdHJpbmd9XG4gICAqL1xuICB0aGlzLnJlZmVyZW5jZV9zY29wZTtcblxuICAvKipcbiAgICogTmFtZSBvZiB0aGUgdGFibGUgdG8gd2hpY2ggdGhpcyBtZXRhZGF0YSByZWZlcmVuY2UgYXBwbGllcywgb3IgTlVMTCBmb3IgcmVmZXJlbmNlX3Njb3BlIG9mIOKAmGdlb3BhY2thZ2XigJkuXG4gICAqIEBtZW1iZXIge3N0cmluZ31cbiAgICovXG4gIHRoaXMudGFibGVfbmFtZTtcblxuICAvKipcbiAgICogTmFtZSBvZiB0aGUgY29sdW1uIHRvIHdoaWNoIHRoaXMgbWV0YWRhdGEgcmVmZXJlbmNlIGFwcGxpZXM7IE5VTEwgZm9yXG4gICAqIHJlZmVyZW5jZV9zY29wZSBvZiDigJhnZW9wYWNrYWdl4oCZLOKAmHRhYmxl4oCZIG9yIOKAmHJvd+KAmSwgb3IgdGhlIG5hbWUgb2YgYSBjb2x1bW5cbiAgICogaW4gdGhlIHRhYmxlX25hbWUgdGFibGUgZm9yIHJlZmVyZW5jZV9zY29wZSBvZiDigJhjb2x1bW7igJkgb3Ig4oCYcm93L2NvbOKAmVxuICAgKiBAbWVtYmVyIHtzdHJpbmd9XG4gICAqL1xuICB0aGlzLmNvbHVtbl9uYW1lO1xuXG4gIC8qKlxuICAgKiBOVUxMIGZvciByZWZlcmVuY2Vfc2NvcGUgb2Yg4oCYZ2VvcGFja2FnZeKAmSwg4oCYdGFibGXigJkgb3Ig4oCYY29sdW1u4oCZLCBvciB0aGVcbiAgICogcm93ZWQgb2YgYSByb3cgcmVjb3JkIGluIHRoZSB0YWJsZV9uYW1lIHRhYmxlIGZvciByZWZlcmVuY2Vfc2NvcGUgb2ZcbiAgICog4oCYcm934oCZIG9yIOKAmHJvdy9jb2zigJlcbiAgICogQG1lbWJlciB7TnVtYmVyfVxuICAgKi9cbiAgdGhpcy5yb3dfaWRfdmFsdWU7XG5cbiAgLyoqXG4gICAqIHRpbWVzdGFtcCB2YWx1ZSBpbiBJU08gODYwMSBmb3JtYXQgYXMgZGVmaW5lZCBieSB0aGUgc3RyZnRpbWUgZnVuY3Rpb25cbiAgICogJyVZLSVtLSVkVCVIOiVNOiVmWicgZm9ybWF0IHN0cmluZyBhcHBsaWVkIHRvIHRoZSBjdXJyZW50IHRpbWVcbiAgICogQG1lbWJlciB7RGF0ZX1cbiAgICovXG4gIHRoaXMudGltZXN0YW1wO1xuXG4gIC8qKlxuICAgKiBncGtnX21ldGFkYXRhIHRhYmxlIGlkIGNvbHVtbiB2YWx1ZSBmb3IgdGhlIG1ldGFkYXRhIHRvIHdoaWNoIHRoaXNcbiAgICogZ3BrZ19tZXRhZGF0YV9yZWZlcmVuY2UgYXBwbGllc1xuICAgKiBAbWVtYmVyIHtOdW1iZXJ9XG4gICAqL1xuICB0aGlzLm1kX2ZpbGVfaWQ7XG5cbiAgLyoqXG4gICAqIGdwa2dfbWV0YWRhdGEgdGFibGUgaWQgY29sdW1uIHZhbHVlIGZvciB0aGUgaGllcmFyY2hpY2FsIHBhcmVudFxuICAgKiBncGtnX21ldGFkYXRhIGZvciB0aGUgZ3BrZ19tZXRhZGF0YSB0byB3aGljaCB0aGlzIGdwa2dfbWV0YWRhdGFfcmVmZXJlbmNlXG4gICAqIGFwcGxpZXMsIG9yIE5VTEwgaWYgbWRfZmlsZV9pZCBmb3JtcyB0aGUgcm9vdCBvZiBhIG1ldGFkYXRhIGhpZXJhcmNoeVxuICAgKiBAbWVtYmVyIHtOdW1iZXJ9XG4gICAqL1xuICB0aGlzLm1kX3BhcmVudF9pZDtcbn1cblxuTWV0YWRhdGFSZWZlcmVuY2UucHJvdG90eXBlLnRvRGF0YWJhc2VWYWx1ZSA9IGZ1bmN0aW9uKGNvbHVtbk5hbWUpIHtcbiAgaWYgKGNvbHVtbk5hbWUgPT09ICd0aW1lc3RhbXAnKSB7XG4gICAgcmV0dXJuIHRoaXMudGltZXN0YW1wLnRvSVNPU3RyaW5nKCk7XG4gIH1cbiAgcmV0dXJuIHRoaXNbY29sdW1uTmFtZV07XG59XG5cbi8qKlxuICogU2V0IHRoZSBtZXRhZGF0YVxuICogQHBhcmFtICB7TWV0YWRhdGF9IG1ldGFkYXRhIG1ldGFkYXRhXG4gKi9cbk1ldGFkYXRhUmVmZXJlbmNlLnByb3RvdHlwZS5zZXRNZXRhZGF0YSA9IGZ1bmN0aW9uKG1ldGFkYXRhKSB7XG4gIGlmIChtZXRhZGF0YSkge1xuICAgIHRoaXMubWRfZmlsZV9pZCA9IG1ldGFkYXRhLmlkO1xuICB9IGVsc2Uge1xuICAgIHRoaXMubWRfZmlsZV9pZCA9IC0xO1xuICB9XG59XG5cbi8qKlxuICogU2V0IHRoZSBwYXJlbnQgbWV0YWRhdGFcbiAqIEBwYXJhbSAge01ldGFkYXRhfSBtZXRhZGF0YSBwYXJlbnQgbWV0YWRhdGFcbiAqL1xuTWV0YWRhdGFSZWZlcmVuY2UucHJvdG90eXBlLnNldFBhcmVudE1ldGFkYXRhID0gZnVuY3Rpb24obWV0YWRhdGEpIHtcbiAgaWYgKG1ldGFkYXRhKSB7XG4gICAgdGhpcy5tZF9wYXJlbnRfaWQgPSBtZXRhZGF0YS5pZDtcbiAgfSBlbHNlIHtcbiAgICB0aGlzLm1kX3BhcmVudF9pZCA9IC0xO1xuICB9XG59XG5cbk1ldGFkYXRhUmVmZXJlbmNlLnByb3RvdHlwZS5zZXRSZWZlcmVuY2VTY29wZVR5cGUgPSBmdW5jdGlvbihyZWZlcmVuY2VTY29wZVR5cGUpIHtcbiAgdGhpcy5yZWZlcmVuY2Vfc2NvcGUgPSByZWZlcmVuY2VTY29wZVR5cGU7XG4gIHN3aXRjaChyZWZlcmVuY2VTY29wZVR5cGUpIHtcbiAgICBjYXNlIE1ldGFkYXRhUmVmZXJlbmNlLkdFT1BBQ0tBR0U6XG4gICAgICB0aGlzLnRhYmxlX25hbWUgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLmNvbHVtbl9uYW1lID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5yb3dfaWRfdmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgICBicmVhaztcbiAgICBjYXNlIE1ldGFkYXRhUmVmZXJlbmNlLlRBQkxFOlxuICAgICAgdGhpcy5jb2x1bW5fbmFtZSA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMucm93X2lkX3ZhbHVlID0gdW5kZWZpbmVkO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBNZXRhZGF0YVJlZmVyZW5jZS5ST1c6XG4gICAgICB0aGlzLmNvbHVtbl9uYW1lID0gdW5kZWZpbmVkO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBNZXRhZGF0YVJlZmVyZW5jZS5DT0xVTU46XG4gICAgICB0aGlzLnJvd19pZF92YWx1ZSA9IHVuZGVmaW5lZDtcbiAgICAgIGJyZWFrO1xuICB9XG59XG5cbk1ldGFkYXRhUmVmZXJlbmNlLkdFT1BBQ0tBR0UgPSBcImdlb3BhY2thZ2VcIjtcbk1ldGFkYXRhUmVmZXJlbmNlLlRBQkxFID0gXCJ0YWJsZVwiO1xuTWV0YWRhdGFSZWZlcmVuY2UuQ09MVU1OID0gXCJjb2x1bW5cIjtcbk1ldGFkYXRhUmVmZXJlbmNlLlJPVyA9IFwicm93XCI7XG5NZXRhZGF0YVJlZmVyZW5jZS5ST1dfQ09MID0gXCJyb3cvY29sXCI7XG5cbi8qKlxuICogTWV0YWRhdGEgUmVmZXJlbmNlIERhdGEgQWNjZXNzIE9iamVjdFxuICogQGNsYXNzXG4gKiBAZXh0ZW5kcyB7bW9kdWxlOmRhby9kYW9+RGFvfVxuICovXG52YXIgTWV0YWRhdGFSZWZlcmVuY2VEYW8gPSBmdW5jdGlvbihjb25uZWN0aW9uKSB7XG4gIERhby5jYWxsKHRoaXMsIGNvbm5lY3Rpb24pO1xufTtcblxudXRpbC5pbmhlcml0cyhNZXRhZGF0YVJlZmVyZW5jZURhbywgRGFvKTtcblxuTWV0YWRhdGFSZWZlcmVuY2VEYW8ucHJvdG90eXBlLmNyZWF0ZU9iamVjdCA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gbmV3IE1ldGFkYXRhUmVmZXJlbmNlKCk7XG59O1xuXG5NZXRhZGF0YVJlZmVyZW5jZURhby5wcm90b3R5cGUucmVtb3ZlTWV0YWRhdGFQYXJlbnQgPSBmdW5jdGlvbihwYXJlbnRJZCwgY2FsbGJhY2spIHtcbiAgdmFyIHZhbHVlcyA9IHt9O1xuICB2YWx1ZXNbTWV0YWRhdGFSZWZlcmVuY2VEYW8uQ09MVU1OX01EX1BBUkVOVF9JRF0gPSBudWxsO1xuXG4gIHZhciB3aGVyZSA9IHRoaXMuYnVpbGRXaGVyZVdpdGhGaWVsZEFuZFZhbHVlKE1ldGFkYXRhUmVmZXJlbmNlRGFvLkNPTFVNTl9NRF9QQVJFTlRfSUQsIHBhcmVudElkKTtcbiAgdmFyIHdoZXJlQXJncyA9IHRoaXMuYnVpbGRXaGVyZUFyZ3NXaXRoVmFsdWUocGFyZW50SWQpO1xuXG4gIHRoaXMudXBkYXRlV2l0aFZhbHVlcyh2YWx1ZXMsIHdoZXJlLCB3aGVyZUFyZ3MsIGNhbGxiYWNrKTtcbn1cblxuTWV0YWRhdGFSZWZlcmVuY2VEYW8ucHJvdG90eXBlLnF1ZXJ5QnlNZXRhZGF0YUFuZFBhcmVudCA9IGZ1bmN0aW9uIChmaWxlSWQsIHBhcmVudElkLCByb3dDYWxsYmFjaywgZG9uZUNhbGxiYWNrKSB7XG4gIHZhciBjb2x1bW5WYWx1ZXMgPSBuZXcgQ29sdW1uVmFsdWVzKCk7XG4gIGNvbHVtblZhbHVlcy5hZGRDb2x1bW4oTWV0YWRhdGFSZWZlcmVuY2VEYW8uQ09MVU1OX01EX0ZJTEVfSUQsIGZpbGVJZCk7XG4gIGNvbHVtblZhbHVlcy5hZGRDb2x1bW4oTWV0YWRhdGFSZWZlcmVuY2VEYW8uQ09MVU1OX01EX1BBUkVOVF9JRCwgcGFyZW50SWQpO1xuICB0aGlzLnF1ZXJ5Rm9yRmllbGRWYWx1ZXMoY29sdW1uVmFsdWVzLCByb3dDYWxsYmFjaywgZG9uZUNhbGxiYWNrKTtcbn07XG5cbk1ldGFkYXRhUmVmZXJlbmNlRGFvLnByb3RvdHlwZS5xdWVyeUJ5TWV0YWRhdGEgPSBmdW5jdGlvbihmaWxlSWQsIHJvd0NhbGxiYWNrLCBkb25lQ2FsbGJhY2spIHtcbiAgdmFyIGNvbHVtblZhbHVlcyA9IG5ldyBDb2x1bW5WYWx1ZXMoKTtcbiAgY29sdW1uVmFsdWVzLmFkZENvbHVtbihNZXRhZGF0YVJlZmVyZW5jZURhby5DT0xVTU5fTURfRklMRV9JRCwgZmlsZUlkKTtcbiAgdGhpcy5xdWVyeUZvckZpZWxkVmFsdWVzKGNvbHVtblZhbHVlcywgcm93Q2FsbGJhY2ssIGRvbmVDYWxsYmFjayk7XG59O1xuXG5NZXRhZGF0YVJlZmVyZW5jZURhby5wcm90b3R5cGUucXVlcnlCeU1ldGFkYXRhUGFyZW50ID0gZnVuY3Rpb24ocGFyZW50SWQsIHJvd0NhbGxiYWNrLCBkb25lQ2FsbGJhY2spIHtcbiAgdmFyIGNvbHVtblZhbHVlcyA9IG5ldyBDb2x1bW5WYWx1ZXMoKTtcbiAgY29sdW1uVmFsdWVzLmFkZENvbHVtbihNZXRhZGF0YVJlZmVyZW5jZURhby5DT0xVTU5fTURfUEFSRU5UX0lELCBwYXJlbnRJZCk7XG4gIHRoaXMucXVlcnlGb3JGaWVsZFZhbHVlcyhjb2x1bW5WYWx1ZXMsIHJvd0NhbGxiYWNrLCBkb25lQ2FsbGJhY2spO1xufTtcblxuTWV0YWRhdGFSZWZlcmVuY2VEYW8uVEFCTEVfTkFNRSA9IFwiZ3BrZ19tZXRhZGF0YV9yZWZlcmVuY2VcIjtcbk1ldGFkYXRhUmVmZXJlbmNlRGFvLkNPTFVNTl9SRUZFUkVOQ0VfU0NPUEUgPSBcInJlZmVyZW5jZV9zY29wZVwiO1xuTWV0YWRhdGFSZWZlcmVuY2VEYW8uQ09MVU1OX1RBQkxFX05BTUUgPSBcInRhYmxlX25hbWVcIjtcbk1ldGFkYXRhUmVmZXJlbmNlRGFvLkNPTFVNTl9DT0xVTU5fTkFNRSA9IFwiY29sdW1uX25hbWVcIjtcbk1ldGFkYXRhUmVmZXJlbmNlRGFvLkNPTFVNTl9ST1dfSUQgPSBcInJvd19pZFwiO1xuTWV0YWRhdGFSZWZlcmVuY2VEYW8uQ09MVU1OX1RJTUVTVEFNUCA9IFwidGltZXN0YW1wXCI7XG5NZXRhZGF0YVJlZmVyZW5jZURhby5DT0xVTU5fTURfRklMRV9JRCA9IFwibWRfZmlsZV9pZFwiO1xuTWV0YWRhdGFSZWZlcmVuY2VEYW8uQ09MVU1OX01EX1BBUkVOVF9JRCA9IFwibWRfcGFyZW50X2lkXCI7XG5cblxuTWV0YWRhdGFSZWZlcmVuY2VEYW8ucHJvdG90eXBlLmdwa2dUYWJsZU5hbWUgPSBNZXRhZGF0YVJlZmVyZW5jZURhby5UQUJMRV9OQU1FO1xuTWV0YWRhdGFSZWZlcmVuY2VEYW8ucHJvdG90eXBlLmlkQ29sdW1ucyA9IFtNZXRhZGF0YVJlZmVyZW5jZURhby5DT0xVTU5fTURfRklMRV9JRCwgTWV0YWRhdGFSZWZlcmVuY2VEYW8uQ09MVU1OX01EX1BBUkVOVF9JRF07XG5cbm1vZHVsZS5leHBvcnRzLk1ldGFkYXRhUmVmZXJlbmNlRGFvID0gTWV0YWRhdGFSZWZlcmVuY2VEYW87XG5tb2R1bGUuZXhwb3J0cy5NZXRhZGF0YVJlZmVyZW5jZSA9IE1ldGFkYXRhUmVmZXJlbmNlO1xuIiwibW9kdWxlLmV4cG9ydHMgPSB7XG4gIFwiRVBTRzozODE5XCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPWJlc3NlbCArdG93Z3M4ND01OTUuNDgsMTIxLjY5LDUxNS4zNSw0LjExNSwtMi45MzgzLDAuODUzLC0zLjQwOCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzgyMVwiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1hdXN0X1NBICtub19kZWZzICcsXG4gIFwiRVBTRzozODI0XCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM4ODlcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzkwNlwiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1iZXNzZWwgK3Rvd2dzODQ9NjgyLC0yMDMsNDgwLDAsMCwwLDAgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQwMDFcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9YWlyeSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDAwMlwiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1tb2RfYWlyeSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDAwM1wiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1hdXN0X1NBICtub19kZWZzICcsXG4gIFwiRVBTRzo0MDA0XCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPWJlc3NlbCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDAwNVwiOicrcHJvaj1sb25nbGF0ICthPTYzNzc0OTIuMDE4ICtiPTYzNTYxNzMuNTA4NzEyNjk2ICtub19kZWZzICcsXG4gIFwiRVBTRzo0MDA2XCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPWJlc3NfbmFtICtub19kZWZzICcsXG4gIFwiRVBTRzo0MDA3XCI6Jytwcm9qPWxvbmdsYXQgK2E9NjM3ODI5My42NDUyMDg3NTkgK2I9NjM1NjYxNy45ODc2Nzk4MzggK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQwMDhcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9Y2xyazY2ICtub19kZWZzICcsXG4gIFwiRVBTRzo0MDA5XCI6Jytwcm9qPWxvbmdsYXQgK2E9NjM3ODQ1MC4wNDc1NDg4OTYgK2I9NjM1NjgyNi42MjE0ODg0NDQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQwMTBcIjonK3Byb2o9bG9uZ2xhdCArYT02Mzc4MzAwLjc4OSArYj02MzU2NTY2LjQzNSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDAxMVwiOicrcHJvaj1sb25nbGF0ICthPTYzNzgyNDkuMiArYj02MzU2NTE1ICtub19kZWZzICcsXG4gIFwiRVBTRzo0MDEyXCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPWNscms4MCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDAxM1wiOicrcHJvaj1sb25nbGF0ICthPTYzNzgyNDkuMTQ1ICtiPTYzNTY1MTQuOTY2Mzk4NzUzICtub19kZWZzICcsXG4gIFwiRVBTRzo0MDE0XCI6Jytwcm9qPWxvbmdsYXQgK2E9NjM3ODI0OS4yICtiPTYzNTY1MTQuOTk2OTQxNzc5ICtub19kZWZzICcsXG4gIFwiRVBTRzo0MDE1XCI6Jytwcm9qPWxvbmdsYXQgK2E9NjM3NzI3Ni4zNDUgK2I9NjM1NjA3NS40MTMxNDAyNCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDAxNlwiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1ldnJzdFNTICtub19kZWZzICcsXG4gIFwiRVBTRzo0MDE4XCI6Jytwcm9qPWxvbmdsYXQgK2E9NjM3NzMwNC4wNjMgK2I9NjM1NjEwMy4wMzg5OTMxNTUgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQwMTlcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9R1JTODAgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQwMjBcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9aGVsbWVydCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDAyMVwiOicrcHJvaj1sb25nbGF0ICthPTYzNzgxNjAgK2I9NjM1Njc3NC41MDQwODU1NCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDAyMlwiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1pbnRsICtub19kZWZzICcsXG4gIFwiRVBTRzo0MDIzXCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQwMjRcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9a3Jhc3MgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQwMjVcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9V0dTNjYgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQwMjdcIjonK3Byb2o9bG9uZ2xhdCArYT02Mzc2NTIzICtiPTYzNTU4NjIuOTMzMjU1NTczICtub19kZWZzICcsXG4gIFwiRVBTRzo0MDI4XCI6Jytwcm9qPWxvbmdsYXQgK2E9NjM3ODI5OC4zICtiPTYzNTY2NTcuMTQyNjY5NTYxICtub19kZWZzICcsXG4gIFwiRVBTRzo0MDI5XCI6Jytwcm9qPWxvbmdsYXQgK2E9NjM3ODMwMCArYj02MzU2NzUxLjY4OTE4OTE4OSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDAzMFwiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1XR1M4NCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDAzMVwiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1XR1M4NCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDAzMlwiOicrcHJvaj1sb25nbGF0ICthPTYzNzgxMzYuMiArYj02MzU2NzUxLjUxNjkyNzQyOSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDAzM1wiOicrcHJvaj1sb25nbGF0ICthPTYzNzgxMzYuMyArYj02MzU2NzUxLjYxNjU5MjE0NiArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDAzNFwiOicrcHJvaj1sb25nbGF0ICthPTYzNzgyNDkuMTQ0ODA4MDExICtiPTYzNTY1MTQuOTY2MjA0MTM0ICtub19kZWZzICcsXG4gIFwiRVBTRzo0MDM1XCI6Jytwcm9qPWxvbmdsYXQgK2E9NjM3MTAwMCArYj02MzcxMDAwICtub19kZWZzICcsXG4gIFwiRVBTRzo0MDM2XCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPUdSUzY3ICtub19kZWZzICcsXG4gIFwiRVBTRzo0MDQxXCI6Jytwcm9qPWxvbmdsYXQgK2E9NjM3ODEzNSArYj02MzU2NzUwLjMwNDkyMTU5NCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDA0MlwiOicrcHJvaj1sb25nbGF0ICthPTYzNzcyOTkuMzY1NTk1MzggK2I9NjM1NjA5OC4zNTkwMDUxNTYgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQwNDNcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9V0dTNzIgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQwNDRcIjonK3Byb2o9bG9uZ2xhdCArYT02Mzc3MzAxLjI0MyArYj02MzU2MTAwLjIzMDE2NTM4NCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDA0NVwiOicrcHJvaj1sb25nbGF0ICthPTYzNzcyOTkuMTUxICtiPTYzNTYwOTguMTQ1MTIwMTMyICtub19kZWZzICcsXG4gIFwiRVBTRzo0MDQ2XCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQwNDdcIjonK3Byb2o9bG9uZ2xhdCArYT02MzcxMDA3ICtiPTYzNzEwMDcgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQwNTJcIjonK3Byb2o9bG9uZ2xhdCArYT02MzcwOTk3ICtiPTYzNzA5OTcgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQwNTNcIjonK3Byb2o9bG9uZ2xhdCArYT02MzcxMjI4ICtiPTYzNzEyMjggK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQwNTRcIjonK3Byb2o9bG9uZ2xhdCArYT02Mzc4MjczICtiPTYzNTY4ODkuNDQ5ICtub19kZWZzICcsXG4gIFwiRVBTRzo0MDU1XCI6Jytwcm9qPWxvbmdsYXQgK2E9NjM3ODEzNyArYj02Mzc4MTM3ICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQwNzVcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDA4MVwiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICtub19kZWZzICcsXG4gIFwiRVBTRzo0MTIwXCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPWJlc3NlbCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDEyMVwiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1HUlM4MCArdG93Z3M4ND0tMTk5Ljg3LDc0Ljc5LDI0Ni42MiwwLDAsMCwwICtub19kZWZzICcsXG4gIFwiRVBTRzo0MTIyXCI6Jytwcm9qPWxvbmdsYXQgK2E9NjM3ODEzNSArYj02MzU2NzUwLjMwNDkyMTU5NCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDEyM1wiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1pbnRsICt0b3dnczg0PS05Ni4wNjIsLTgyLjQyOCwtMTIxLjc1Myw0LjgwMSwwLjM0NSwtMS4zNzYsMS40OTYgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQxMjRcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9YmVzc2VsICt0b3dnczg0PTQxNC4xLDQxLjMsNjAzLjEsLTAuODU1LDIuMTQxLC03LjAyMywwICtub19kZWZzICcsXG4gIFwiRVBTRzo0MTI1XCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPWJlc3NlbCArdG93Z3M4ND0tNDA0Ljc4LDY4NS42OCw0NS40NywwLDAsMCwwICtub19kZWZzICcsXG4gIFwiRVBTRzo0MTI2XCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPUdSUzgwICtub19kZWZzICcsXG4gIFwiRVBTRzo0MTI3XCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPWNscms2NiArdG93Z3M4ND0tNzMuNDcyLC01MS42NiwtMTEyLjQ4MiwwLjk1Myw0LjYsLTIuMzY4LDAuNTg2ICtub19kZWZzICcsXG4gIFwiRVBTRzo0MTI4XCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPWNscms2NiArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDEyOVwiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1jbHJrNjYgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQxMzBcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9V0dTODQgK3Rvd2dzODQ9MCwwLDAsLTAsLTAsLTAsMCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDEzMVwiOicrcHJvaj1sb25nbGF0ICthPTYzNzcyNzYuMzQ1ICtiPTYzNTYwNzUuNDEzMTQwMjQgK3Rvd2dzODQ9MTk4LDg4MSwzMTcsMCwwLDAsMCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDEzMlwiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1jbHJrODAgK3Rvd2dzODQ9LTI0MS41NCwtMTYzLjY0LDM5Ni4wNiwwLDAsMCwwICtub19kZWZzICcsXG4gIFwiRVBTRzo0MTMzXCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAuMDU1LC0wLjU0MSwtMC4xODUsMC4wMTgzLC0wLjAwMDMsLTAuMDA3LC0wLjAxNCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDEzNFwiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1jbHJrODAgK3Rvd2dzODQ9LTE4MC42MjQsLTIyNS41MTYsMTczLjkxOSwtMC44MSwtMS44OTgsOC4zMzYsMTYuNzEwMSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDEzNVwiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1jbHJrNjYgK3Rvd2dzODQ9NjEsLTI4NSwtMTgxLDAsMCwwLDAgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQxMzZcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9Y2xyazY2ICtub19kZWZzICcsXG4gIFwiRVBTRzo0MTM3XCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPWNscms2NiArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDEzOFwiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1jbHJrNjYgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQxMzlcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9Y2xyazY2ICt0b3dnczg0PTExLDcyLC0xMDEsMCwwLDAsMCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDE0MFwiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICtub19kZWZzICcsXG4gIFwiRVBTRzo0MTQxXCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPUdSUzgwICt0b3dnczg0PS00OCw1NSw1MiwwLDAsMCwwICtub19kZWZzICcsXG4gIFwiRVBTRzo0MTQyXCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPWNscms4MCArdG93Z3M4ND0tMTI1LDUzLDQ2NywwLDAsMCwwICtub19kZWZzICcsXG4gIFwiRVBTRzo0MTQzXCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPWNscms4MCArdG93Z3M4ND0tMTI0Ljc2LDUzLDQ2Ni43OSwwLDAsMCwwICtub19kZWZzICcsXG4gIFwiRVBTRzo0MTQ0XCI6Jytwcm9qPWxvbmdsYXQgK2E9NjM3NzI3Ni4zNDUgK2I9NjM1NjA3NS40MTMxNDAyNCArdG93Z3M4ND0yMTQsODA0LDI2OCwwLDAsMCwwICtub19kZWZzICcsXG4gIFwiRVBTRzo0MTQ1XCI6Jytwcm9qPWxvbmdsYXQgK2E9NjM3NzMwMS4yNDMgK2I9NjM1NjEwMC4yMzAxNjUzODQgK3Rvd2dzODQ9MjgzLDY4MiwyMzEsMCwwLDAsMCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDE0NlwiOicrcHJvaj1sb25nbGF0ICthPTYzNzcyOTkuMTUxICtiPTYzNTYwOTguMTQ1MTIwMTMyICt0b3dnczg0PTI5NSw3MzYsMjU3LDAsMCwwLDAgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQxNDdcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9LTE3LjUxLC0xMDguMzIsLTYyLjM5LDAsMCwwLDAgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQxNDhcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9V0dTODQgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDE0OVwiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1iZXNzZWwgK3Rvd2dzODQ9Njc0LjQsMTUuMSw0MDUuMywwLDAsMCwwICtub19kZWZzICcsXG4gIFwiRVBTRzo0MTUwXCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPWJlc3NlbCArdG93Z3M4ND02NzQuMzc0LDE1LjA1Niw0MDUuMzQ2LDAsMCwwLDAgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQxNTFcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDE1MlwiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICtub19kZWZzICcsXG4gIFwiRVBTRzo0MTUzXCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPWludGwgK3Rvd2dzODQ9LTEzMy42MywtMTU3LjUsLTE1OC42MiwwLDAsMCwwICtub19kZWZzICcsXG4gIFwiRVBTRzo0MTU0XCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPWludGwgK3Rvd2dzODQ9LTExNywtMTMyLC0xNjQsMCwwLDAsMCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDE1NVwiOicrcHJvaj1sb25nbGF0ICthPTYzNzgyNDkuMiArYj02MzU2NTE1ICt0b3dnczg0PS04MywzNywxMjQsMCwwLDAsMCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDE1NlwiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1iZXNzZWwgK3Rvd2dzODQ9NTg5LDc2LDQ4MCwwLDAsMCwwICtub19kZWZzICcsXG4gIFwiRVBTRzo0MTU3XCI6Jytwcm9qPWxvbmdsYXQgK2E9NjM3ODI5My42NDUyMDg3NTkgK2I9NjM1NjYxNy45ODc2Nzk4MzggK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQxNThcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9aW50bCArdG93Z3M4ND0tMC40NjUsMzcyLjA5NSwxNzEuNzM2LDAsMCwwLDAgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQxNTlcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9aW50bCArdG93Z3M4ND0tMTE1Ljg1NCwtOTkuMDU4MywtMTUyLjQ2MiwwLDAsMCwwICtub19kZWZzICcsXG4gIFwiRVBTRzo0MTYwXCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPWludGwgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQxNjFcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9aW50bCArdG93Z3M4ND0yNy41LDE0LDE4Ni40LDAsMCwwLDAgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQxNjJcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9YmVzc2VsICtub19kZWZzICcsXG4gIFwiRVBTRzo0MTYzXCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPVdHUzg0ICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQxNjRcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9LTc2LC0xMzgsNjcsMCwwLDAsMCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDE2NVwiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1pbnRsICt0b3dnczg0PS0xNzMsMjUzLDI3LDAsMCwwLDAgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQxNjZcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9V0dTODQgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDE2N1wiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICtub19kZWZzICcsXG4gIFwiRVBTRzo0MTY4XCI6Jytwcm9qPWxvbmdsYXQgK2E9NjM3ODMwMCArYj02MzU2NzUxLjY4OTE4OTE4OSArdG93Z3M4ND0tMTk5LDMyLDMyMiwwLDAsMCwwICtub19kZWZzICcsXG4gIFwiRVBTRzo0MTY5XCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPWNscms2NiArdG93Z3M4ND0tMTE1LDExOCw0MjYsMCwwLDAsMCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDE3MFwiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICtub19kZWZzICcsXG4gIFwiRVBTRzo0MTcxXCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQxNzJcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDE3M1wiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICtub19kZWZzICcsXG4gIFwiRVBTRzo0MTc0XCI6Jytwcm9qPWxvbmdsYXQgK2E9NjM3ODMwMCArYj02MzU2NzUxLjY4OTE4OTE4OSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDE3NVwiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1jbHJrODAgK3Rvd2dzODQ9LTg4LDQsMTAxLDAsMCwwLDAgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQxNzZcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDE3OFwiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yNiwtMTIxLC03OCwwLDAsMCwwICtub19kZWZzICcsXG4gIFwiRVBTRzo0MTc5XCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPWtyYXNzICt0b3dnczg0PTMzLjQsLTE0Ni42LC03Ni4zLC0wLjM1OSwtMC4wNTMsMC44NDQsLTAuODQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQxODBcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDE4MVwiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1pbnRsICt0b3dnczg0PS0xODkuNjgxLDE4LjM0NjMsLTQyLjc2OTUsLTAuMzM3NDYsLTMuMDkyNjQsMi41Mzg2MSwwLjQ1OTggK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQxODJcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9aW50bCArdG93Z3M4ND0tNDI1LC0xNjksODEsMCwwLDAsMCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDE4M1wiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1pbnRsICt0b3dnczg0PS0xMDQsMTY3LC0zOCwwLDAsMCwwICtub19kZWZzICcsXG4gIFwiRVBTRzo0MTg0XCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPWludGwgK3Rvd2dzODQ9LTIwMywxNDEsNTMsMCwwLDAsMCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDE4NVwiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1pbnRsICtub19kZWZzICcsXG4gIFwiRVBTRzo0MTg4XCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPWFpcnkgK3Rvd2dzODQ9NDgyLjUsLTEzMC42LDU2NC42LC0xLjA0MiwtMC4yMTQsLTAuNjMxLDguMTUgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQxODlcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDE5MFwiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICtub19kZWZzICcsXG4gIFwiRVBTRzo0MTkxXCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPWtyYXNzICtub19kZWZzICcsXG4gIFwiRVBTRzo0MTkyXCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPWludGwgK3Rvd2dzODQ9LTIwNi4xLC0xNzQuNywtODcuNywwLDAsMCwwICtub19kZWZzICcsXG4gIFwiRVBTRzo0MTkzXCI6Jytwcm9qPWxvbmdsYXQgK2E9NjM3ODI0OS4yICtiPTYzNTY1MTUgK3Rvd2dzODQ9LTcwLjksLTE1MS44LC00MS40LDAsMCwwLDAgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQxOTRcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9aW50bCArdG93Z3M4ND0xNjQsMTM4LC0xODksMCwwLDAsMCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDE5NVwiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1pbnRsICt0b3dnczg0PTEwNSwzMjYsLTEwMi41LDAsMCwwLjgxNCwtMC42ICtub19kZWZzICcsXG4gIFwiRVBTRzo0MTk2XCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPWludGwgK3Rvd2dzODQ9LTQ1LDQxNywtMy41LDAsMCwwLjgxNCwtMC42ICtub19kZWZzICcsXG4gIFwiRVBTRzo0MTk3XCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPWNscms4MCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDE5OFwiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1jbHJrODAgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQxOTlcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9aW50bCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDIwMFwiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yNC40NywtMTMwLjg5LC04MS41NiwtMCwtMCwwLjEzLC0wLjIyICtub19kZWZzICcsXG4gIFwiRVBTRzo0MjAxXCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPWNscms4MCArdG93Z3M4ND0tMTY2LC0xNSwyMDQsMCwwLDAsMCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDIwMlwiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1hdXN0X1NBICt0b3dnczg0PS0xMTcuODA4LC01MS41MzYsMTM3Ljc4NCwwLjMwMywwLjQ0NiwwLjIzNCwtMC4yOSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDIwM1wiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1hdXN0X1NBICt0b3dnczg0PS0xMzQsLTQ4LDE0OSwwLDAsMCwwICtub19kZWZzICcsXG4gIFwiRVBTRzo0MjA0XCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPWludGwgK3Rvd2dzODQ9LTE0MywtMjM2LDcsMCwwLDAsMCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDIwNVwiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1rcmFzcyArdG93Z3M4ND0tNDMsLTE2Myw0NSwwLDAsMCwwICtub19kZWZzICcsXG4gIFwiRVBTRzo0MjA2XCI6Jytwcm9qPWxvbmdsYXQgK2E9NjM3ODI0OS4yICtiPTYzNTY1MTUgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQyMDdcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9aW50bCArdG93Z3M4ND0tMzA0LjA0NiwtNjAuNTc2LDEwMy42NCwwLDAsMCwwICtub19kZWZzICcsXG4gIFwiRVBTRzo0MjA4XCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPWludGwgK3Rvd2dzODQ9LTE1MS45OSwyODcuMDQsLTE0Ny40NSwwLDAsMCwwICtub19kZWZzICcsXG4gIFwiRVBTRzo0MjA5XCI6Jytwcm9qPWxvbmdsYXQgK2E9NjM3ODI0OS4xNDUgK2I9NjM1NjUxNC45NjYzOTg3NTMgK3Rvd2dzODQ9LTE0MywtOTAsLTI5NCwwLDAsMCwwICtub19kZWZzICcsXG4gIFwiRVBTRzo0MjEwXCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPWNscms4MCArdG93Z3M4ND0tMTYwLC02LC0zMDIsMCwwLDAsMCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDIxMVwiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1iZXNzZWwgK3Rvd2dzODQ9LTM3Nyw2ODEsLTUwLDAsMCwwLDAgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQyMTJcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9Y2xyazgwICt0b3dnczg0PTMxLjk1LDMwMC45OSw0MTkuMTksMCwwLDAsMCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDIxM1wiOicrcHJvaj1sb25nbGF0ICthPTYzNzgyNDkuMiArYj02MzU2NTE1ICt0b3dnczg0PS0xMDYsLTg3LDE4OCwwLDAsMCwwICtub19kZWZzICcsXG4gIFwiRVBTRzo0MjE0XCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPWtyYXNzICt0b3dnczg0PTE1LjgsLTE1NC40LC04Mi4zLDAsMCwwLDAgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQyMTVcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9aW50bCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDIxNlwiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1jbHJrNjYgK3Rvd2dzODQ9LTczLDIxMywyOTYsMCwwLDAsMCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDIxOFwiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1pbnRsICt0b3dnczg0PTMwNywzMDQsLTMxOCwwLDAsMCwwICtub19kZWZzICcsXG4gIFwiRVBTRzo0MjE5XCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPWJlc3NlbCArdG93Z3M4ND0tMzg0LDY2NCwtNDgsMCwwLDAsMCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDIyMFwiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1jbHJrODAgK3Rvd2dzODQ9LTUwLjksLTM0Ny42LC0yMzEsMCwwLDAsMCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDIyMVwiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1pbnRsICt0b3dnczg0PS0xNDgsMTM2LDkwLDAsMCwwLDAgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQyMjJcIjonK3Byb2o9bG9uZ2xhdCArYT02Mzc4MjQ5LjE0NSArYj02MzU2NTE0Ljk2NjM5ODc1MyArdG93Z3M4ND0tMTM2LC0xMDgsLTI5MiwwLDAsMCwwICtub19kZWZzICcsXG4gIFwiRVBTRzo0MjIzXCI6Jytwcm9qPWxvbmdsYXQgK2E9NjM3ODI0OS4yICtiPTYzNTY1MTUgK3Rvd2dzODQ9LTI2Myw2LDQzMSwwLDAsMCwwICtub19kZWZzICcsXG4gIFwiRVBTRzo0MjI0XCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPWludGwgK3Rvd2dzODQ9LTEzNCwyMjksLTI5LDAsMCwwLDAgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQyMjVcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9aW50bCArdG93Z3M4ND0tMjA2LDE3MiwtNiwwLDAsMCwwICtub19kZWZzICcsXG4gIFwiRVBTRzo0MjI2XCI6Jytwcm9qPWxvbmdsYXQgK2E9NjM3ODI0OS4yICtiPTYzNTY1MTUgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQyMjdcIjonK3Byb2o9bG9uZ2xhdCArYT02Mzc4MjQ5LjIgK2I9NjM1NjUxNSArdG93Z3M4ND0tMTkwLjQyMSw4LjUzMiwyMzguNjksMCwwLDAsMCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDIyOFwiOicrcHJvaj1sb25nbGF0ICthPTYzNzgyNDkuMiArYj02MzU2NTE1ICtub19kZWZzICcsXG4gIFwiRVBTRzo0MjI5XCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPWhlbG1lcnQgK3Rvd2dzODQ9LTEzMCwxMTAsLTEzLDAsMCwwLDAgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQyMzBcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9aW50bCArdG93Z3M4ND0tODcsLTk4LC0xMjEsMCwwLDAsMCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDIzMVwiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1pbnRsICt0b3dnczg0PS04My4xMSwtOTcuMzgsLTExNy4yMiwwLjAwNTY5MjkxLC0wLjA0NDY5NzYsMC4wNDQyODUxLDAuMTIxOCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDIzMlwiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1jbHJrODAgK3Rvd2dzODQ9LTM0NiwtMSwyMjQsMCwwLDAsMCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDIzM1wiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1pbnRsICt0b3dnczg0PS0xMzMsLTMyMSw1MCwwLDAsMCwwICtub19kZWZzICcsXG4gIFwiRVBTRzo0MjM0XCI6Jytwcm9qPWxvbmdsYXQgK2E9NjM3ODI0OS4yICtiPTYzNTY1MTUgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQyMzVcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9aW50bCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDIzNlwiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1pbnRsICt0b3dnczg0PS02MzcsLTU0OSwtMjAzLDAsMCwwLDAgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQyMzdcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9R1JTNjcgK3Rvd2dzODQ9NTIuMTcsLTcxLjgyLC0xNC45LDAsMCwwLDAgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQyMzhcIjonK3Byb2o9bG9uZ2xhdCArYT02Mzc4MTYwICtiPTYzNTY3NzQuNTA0MDg1NTQgK3Rvd2dzODQ9LTI0LC0xNSw1LDAsMCwwLDAgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQyMzlcIjonK3Byb2o9bG9uZ2xhdCArYT02Mzc3Mjc2LjM0NSArYj02MzU2MDc1LjQxMzE0MDI0ICt0b3dnczg0PTIxNyw4MjMsMjk5LDAsMCwwLDAgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQyNDBcIjonK3Byb2o9bG9uZ2xhdCArYT02Mzc3Mjc2LjM0NSArYj02MzU2MDc1LjQxMzE0MDI0ICt0b3dnczg0PTIxMCw4MTQsMjg5LDAsMCwwLDAgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQyNDFcIjonK3Byb2o9bG9uZ2xhdCArYT02Mzc4MjQ5LjE0NDgwODAxMSArYj02MzU2NTE0Ljk2NjIwNDEzNCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDI0MlwiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1jbHJrNjYgK3Rvd2dzODQ9NzAsMjA3LDM4OS41LDAsMCwwLDAgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQyNDNcIjonK3Byb2o9bG9uZ2xhdCArYT02Mzc3Mjk5LjM2NTU5NTM4ICtiPTYzNTYwOTguMzU5MDA1MTU2ICtub19kZWZzICcsXG4gIFwiRVBTRzo0MjQ0XCI6Jytwcm9qPWxvbmdsYXQgK2E9NjM3NzI3Ni4zNDUgK2I9NjM1NjA3NS40MTMxNDAyNCArdG93Z3M4ND0tOTcsNzg3LDg2LDAsMCwwLDAgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQyNDVcIjonK3Byb2o9bG9uZ2xhdCArYT02Mzc3MzA0LjA2MyArYj02MzU2MTAzLjAzODk5MzE1NSArdG93Z3M4ND0tMTEsODUxLDUsMCwwLDAsMCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDI0NlwiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1jbHJrODAgK3Rvd2dzODQ9LTI5NC43LC0yMDAuMSw1MjUuNSwwLDAsMCwwICtub19kZWZzICcsXG4gIFwiRVBTRzo0MjQ3XCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPWludGwgK3Rvd2dzODQ9LTI3My41LDExMC42LC0zNTcuOSwwLDAsMCwwICtub19kZWZzICcsXG4gIFwiRVBTRzo0MjQ4XCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPWludGwgK3Rvd2dzODQ9LTI4OCwxNzUsLTM3NiwwLDAsMCwwICtub19kZWZzICcsXG4gIFwiRVBTRzo0MjQ5XCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPWludGwgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQyNTBcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9Y2xyazgwICt0b3dnczg0PS0xMzAsMjksMzY0LDAsMCwwLDAgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQyNTFcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9Y2xyazgwICt0b3dnczg0PS05MCw0MCw4OCwwLDAsMCwwICtub19kZWZzICcsXG4gIFwiRVBTRzo0MjUyXCI6Jytwcm9qPWxvbmdsYXQgK2E9NjM3ODI0OS4yICtiPTYzNTY1MTUgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQyNTNcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9Y2xyazY2ICt0b3dnczg0PS0xMzMsLTc3LC01MSwwLDAsMCwwICtub19kZWZzICcsXG4gIFwiRVBTRzo0MjU0XCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPWludGwgK3Rvd2dzODQ9MTYsMTk2LDkzLDAsMCwwLDAgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQyNTVcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9aW50bCArdG93Z3M4ND0tMzMzLC0yMjIsMTE0LDAsMCwwLDAgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQyNTZcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9Y2xyazgwICt0b3dnczg0PTQxLC0yMjAsLTEzNCwwLDAsMCwwICtub19kZWZzICcsXG4gIFwiRVBTRzo0MjU3XCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPWJlc3NlbCArdG93Z3M4ND0tNTg3LjgsNTE5Ljc1LDE0NS43NiwwLDAsMCwwICtub19kZWZzICcsXG4gIFwiRVBTRzo0MjU4XCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQyNTlcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9aW50bCArdG93Z3M4ND0tMjU0LjEsLTUuMzYsLTEwMC4yOSwwLDAsMCwwICtub19kZWZzICcsXG4gIFwiRVBTRzo0MjYwXCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPWNscms4MCArdG93Z3M4ND0tNzAuOSwtMTUxLjgsLTQxLjQsMCwwLDAsMCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDI2MVwiOicrcHJvaj1sb25nbGF0ICthPTYzNzgyNDkuMiArYj02MzU2NTE1ICt0b3dnczg0PTMxLDE0Niw0NywwLDAsMCwwICtub19kZWZzICcsXG4gIFwiRVBTRzo0MjYyXCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPWJlc3NlbCArdG93Z3M4ND02MzksNDA1LDYwLDAsMCwwLDAgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQyNjNcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9Y2xyazgwICt0b3dnczg0PS05MiwtOTMsMTIyLDAsMCwwLDAgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQyNjRcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9aW50bCArdG93Z3M4ND0tMjUyLjk1LC00LjExLC05Ni4zOCwwLDAsMCwwICtub19kZWZzICcsXG4gIFwiRVBTRzo0MjY1XCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPWludGwgK3Rvd2dzODQ9LTEwNC4xLC00OS4xLC05LjksMC45NzEsLTIuOTE3LDAuNzE0LC0xMS42OCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDI2NlwiOicrcHJvaj1sb25nbGF0ICthPTYzNzgyNDkuMiArYj02MzU2NTE1ICt0b3dnczg0PS03NCwtMTMwLDQyLDAsMCwwLDAgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQyNjdcIjonK3Byb2o9bG9uZ2xhdCArZGF0dW09TkFEMjcgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQyNjhcIjonK3Byb2o9bG9uZ2xhdCArYT02Mzc4NDUwLjA0NzU0ODg5NiArYj02MzU2ODI2LjYyMTQ4ODQ0NCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDI2OVwiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICtub19kZWZzICcsXG4gIFwiRVBTRzo0MjcwXCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPWNscms4MCArdG93Z3M4ND0tMjQyLjIsLTE0NC45LDM3MC4zLDAsMCwwLDAgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQyNzFcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9aW50bCArdG93Z3M4ND0tMTAsMzc1LDE2NSwwLDAsMCwwICtub19kZWZzICcsXG4gIFwiRVBTRzo0MjcyXCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPWludGwgK3Rvd2dzODQ9NTkuNDcsLTUuMDQsMTg3LjQ0LDAuNDcsLTAuMSwxLjAyNCwtNC41OTkzICtub19kZWZzICcsXG4gIFwiRVBTRzo0MjczXCI6Jytwcm9qPWxvbmdsYXQgK2E9NjM3NzQ5Mi4wMTggK2I9NjM1NjE3My41MDg3MTI2OTYgK3Rvd2dzODQ9Mjc4LjMsOTMsNDc0LjUsNy44ODksMC4wNSwtNi42MSw2LjIxICtub19kZWZzICcsXG4gIFwiRVBTRzo0Mjc0XCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPWludGwgK3Rvd2dzODQ9LTIyMy4yMzcsMTEwLjE5MywzNi42NDksMCwwLDAsMCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDI3NVwiOicrcHJvaj1sb25nbGF0ICthPTYzNzgyNDkuMiArYj02MzU2NTE1ICt0b3dnczg0PS0xNjgsLTYwLDMyMCwwLDAsMCwwICtub19kZWZzICcsXG4gIFwiRVBTRzo0Mjc2XCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPVdHUzY2ICtub19kZWZzICcsXG4gIFwiRVBTRzo0Mjc3XCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPWFpcnkgK3Rvd2dzODQ9NDQ2LjQ0OCwtMTI1LjE1Nyw1NDIuMDYsMC4xNSwwLjI0NywwLjg0MiwtMjAuNDg5ICtub19kZWZzICcsXG4gIFwiRVBTRzo0Mjc4XCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPWFpcnkgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQyNzlcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9YWlyeSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDI4MFwiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1iZXNzZWwgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQyODFcIjonK3Byb2o9bG9uZ2xhdCArYT02Mzc4MzAwLjc4OSArYj02MzU2NTY2LjQzNSArdG93Z3M4ND0tMjc1LjcyMiw5NC43ODI0LDM0MC44OTQsLTguMDAxLC00LjQyLC0xMS44MjEsMSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDI4MlwiOicrcHJvaj1sb25nbGF0ICthPTYzNzgyNDkuMiArYj02MzU2NTE1ICt0b3dnczg0PS0xNDgsNTEsLTI5MSwwLDAsMCwwICtub19kZWZzICcsXG4gIFwiRVBTRzo0MjgzXCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQyODRcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjMuOTIsLTE0MS4yNywtODAuOSwtMCwwLjM1LDAuODIsLTAuMTIgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQyODVcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9aW50bCArdG93Z3M4ND0tMTI4LjE2LC0yODIuNDIsMjEuOTMsMCwwLDAsMCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDI4NlwiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1oZWxtZXJ0ICtub19kZWZzICcsXG4gIFwiRVBTRzo0Mjg3XCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPWludGwgK3Rvd2dzODQ9MTY0LDEzOCwtMTg5LDAsMCwwLDAgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQyODhcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9aW50bCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDI4OVwiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1iZXNzZWwgK3Rvd2dzODQ9NTY1LjQxNyw1MC4zMzE5LDQ2NS41NTIsLTAuMzk4OTU3LDAuMzQzOTg4LC0xLjg3NzQsNC4wNzI1ICtub19kZWZzICcsXG4gIFwiRVBTRzo0MjkxXCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPUdSUzY3ICt0b3dnczg0PS01NywxLC00MSwwLDAsMCwwICtub19kZWZzICcsXG4gIFwiRVBTRzo0MjkyXCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPWludGwgK3Rvd2dzODQ9LTM1NSwyMSw3MiwwLDAsMCwwICtub19kZWZzICcsXG4gIFwiRVBTRzo0MjkzXCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPWJlc3NfbmFtICt0b3dnczg0PTYxNiw5NywtMjUxLDAsMCwwLDAgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQyOTRcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9YmVzc2VsICt0b3dnczg0PS00MDMsNjg0LDQxLDAsMCwwLDAgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQyOTVcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9YmVzc2VsICtub19kZWZzICcsXG4gIFwiRVBTRzo0Mjk2XCI6Jytwcm9qPWxvbmdsYXQgK2E9NjM3ODI0OS4yICtiPTYzNTY1MTUgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQyOTdcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9aW50bCArdG93Z3M4ND0tMTg5LC0yNDIsLTkxLDAsMCwwLDAgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQyOThcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9ZXZyc3RTUyArdG93Z3M4ND0tNjc5LDY2OSwtNDgsMCwwLDAsMCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDI5OVwiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1tb2RfYWlyeSArdG93Z3M4ND00ODIuNSwtMTMwLjYsNTY0LjYsLTEuMDQyLC0wLjIxNCwtMC42MzEsOC4xNSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDMwMFwiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1tb2RfYWlyeSArdG93Z3M4ND00ODIuNSwtMTMwLjYsNTY0LjYsLTEuMDQyLC0wLjIxNCwtMC42MzEsOC4xNSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDMwMVwiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1iZXNzZWwgK3Rvd2dzODQ9LTE0Ni40MTQsNTA3LjMzNyw2ODAuNTA3LDAsMCwwLDAgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQzMDJcIjonK3Byb2o9bG9uZ2xhdCArYT02Mzc4MjkzLjY0NTIwODc1OSArYj02MzU2NjE3Ljk4NzY3OTgzOCArdG93Z3M4ND0tNjEuNzAyLDI4NC40ODgsNDcyLjA1MiwwLDAsMCwwICtub19kZWZzICcsXG4gIFwiRVBTRzo0MzAzXCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPWhlbG1lcnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQzMDRcIjonK3Byb2o9bG9uZ2xhdCArYT02Mzc4MjQ5LjIgK2I9NjM1NjUxNSArdG93Z3M4ND0tNzMsLTI0NywyMjcsMCwwLDAsMCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDMwNlwiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1iZXNzZWwgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQzMDdcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9Y2xyazgwICt0b3dnczg0PS0yMDkuMzYyLC04Ny44MTYyLDQwNC42MiwwLjAwNDYsMy40Nzg0LDAuNTgwNSwtMS40NTQ3ICtub19kZWZzICcsXG4gIFwiRVBTRzo0MzA4XCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPWJlc3NlbCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDMwOVwiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1pbnRsICt0b3dnczg0PS0xNTUsMTcxLDM3LDAsMCwwLDAgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQzMTBcIjonK3Byb2o9bG9uZ2xhdCArYT02Mzc4MjQ5LjIgK2I9NjM1NjUxNSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDMxMVwiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1pbnRsICt0b3dnczg0PS0yNjUsMTIwLC0zNTgsMCwwLDAsMCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDMxMlwiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1iZXNzZWwgK3Rvd2dzODQ9NTc3LjMyNiw5MC4xMjksNDYzLjkxOSw1LjEzNywxLjQ3NCw1LjI5NywyLjQyMzIgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQzMTNcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9aW50bCArdG93Z3M4ND0tMTA2Ljg2OSw1Mi4yOTc4LC0xMDMuNzI0LDAuMzM2NiwtMC40NTcsMS44NDIyLC0xLjI3NDcgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQzMTRcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9YmVzc2VsICt0b3dnczg0PTU5OC4xLDczLjcsNDE4LjIsMC4yMDIsMC4wNDUsLTIuNDU1LDYuNyArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDMxNVwiOicrcHJvaj1sb25nbGF0ICthPTYzNzgyNDkuMiArYj02MzU2NTE1ICt0b3dnczg0PS0yMywyNTksLTksMCwwLDAsMCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDMxNlwiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1pbnRsICt0b3dnczg0PTEwMy4yNSwtMTAwLjQsLTMwNy4xOSwwLDAsMCwwICtub19kZWZzICcsXG4gIFwiRVBTRzo0MzE3XCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPWtyYXNzICt0b3dnczg0PTI4LC0xMjEsLTc3LDAsMCwwLDAgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQzMThcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9V0dTODQgK3Rvd2dzODQ9LTMuMiwtNS43LDIuOCwwLDAsMCwwICtub19kZWZzICcsXG4gIFwiRVBTRzo0MzE5XCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPUdSUzgwICt0b3dnczg0PS0yMC44LDExLjMsMi40LDAsMCwwLDAgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQzMjJcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9V0dTNzIgK3Rvd2dzODQ9MCwwLDQuNSwwLDAsMC41NTQsMC4yMjYzICtub19kZWZzICcsXG4gIFwiRVBTRzo0MzI0XCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCwxLjksMCwwLDAuODE0LC0wLjM4ICtub19kZWZzICcsXG4gIFwiRVBTRzo0MzI2XCI6Jytwcm9qPWxvbmdsYXQgK2RhdHVtPVdHUzg0ICtub19kZWZzICcsXG4gIFwiRVBTRzo0NDYzXCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ0NzBcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDQ3NVwiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1pbnRsICt0b3dnczg0PS0zODEuNzg4LC01Ny41MDEsLTI1Ni42NzMsMCwwLDAsMCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDQ4M1wiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICtub19kZWZzICcsXG4gIFwiRVBTRzo0NDkwXCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPUdSUzgwICtub19kZWZzICcsXG4gIFwiRVBTRzo0NTU1XCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPWtyYXNzICtub19kZWZzICcsXG4gIFwiRVBTRzo0NTU4XCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ2MDBcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9Y2xyazgwICtub19kZWZzICcsXG4gIFwiRVBTRzo0NjAxXCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPWNscms4MCArdG93Z3M4ND0tMjU1LC0xNSw3MSwwLDAsMCwwICtub19kZWZzICcsXG4gIFwiRVBTRzo0NjAyXCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPWNscms4MCArdG93Z3M4ND03MjUsNjg1LDUzNiwwLDAsMCwwICtub19kZWZzICcsXG4gIFwiRVBTRzo0NjAzXCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPWNscms4MCArdG93Z3M4ND03MiwyMTMuNyw5MywwLDAsMCwwICtub19kZWZzICcsXG4gIFwiRVBTRzo0NjA0XCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPWNscms4MCArdG93Z3M4ND0xNzQsMzU5LDM2NSwwLDAsMCwwICtub19kZWZzICcsXG4gIFwiRVBTRzo0NjA1XCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPWNscms4MCArdG93Z3M4ND05LDE4MywyMzYsMCwwLDAsMCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDYwNlwiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1jbHJrODAgK3Rvd2dzODQ9LTE0OSwxMjgsMjk2LDAsMCwwLDAgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ2MDdcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9Y2xyazgwICt0b3dnczg0PTE5NS42NzEsMzMyLjUxNywyNzQuNjA3LDAsMCwwLDAgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ2MDhcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9Y2xyazY2ICtub19kZWZzICcsXG4gIFwiRVBTRzo0NjA5XCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPWNscms2NiArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDYxMFwiOicrcHJvaj1sb25nbGF0ICthPTYzNzgxNDAgK2I9NjM1Njc1NS4yODgxNTc1MjggK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ2MTFcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9aW50bCArdG93Z3M4ND0tMTYyLjYxOSwtMjc2Ljk1OSwtMTYxLjc2NCwwLjA2Nzc1MywtMi4yNDM2NSwtMS4xNTg4MywtMS4wOTQyNSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDYxMlwiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICtub19kZWZzICcsXG4gIFwiRVBTRzo0NjEzXCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPWJlc3NlbCArdG93Z3M4ND0tNDAzLDY4NCw0MSwwLDAsMCwwICtub19kZWZzICcsXG4gIFwiRVBTRzo0NjE0XCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPWludGwgK3Rvd2dzODQ9LTExOS40MjUsLTMwMy42NTksLTExLjAwMDYsMS4xNjQzLDAuMTc0NDU4LDEuMDk2MjYsMy42NTcwNiArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDYxNVwiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1pbnRsICt0b3dnczg0PS00OTksLTI0OSwzMTQsMCwwLDAsMCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDYxNlwiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1pbnRsICt0b3dnczg0PS0yODksLTEyNCw2MCwwLDAsMCwwICtub19kZWZzICcsXG4gIFwiRVBTRzo0NjE3XCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ2MThcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9YXVzdF9TQSArdG93Z3M4ND0tNTcsMSwtNDEsMCwwLDAsMCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDYxOVwiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICtub19kZWZzICcsXG4gIFwiRVBTRzo0NjIwXCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPWNscms4MCArdG93Z3M4ND0tMTA2LC0xMjksMTY1LDAsMCwwLDAgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ2MjFcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9aW50bCArdG93Z3M4ND0xMzcsMjQ4LC00MzAsMCwwLDAsMCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDYyMlwiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1pbnRsICt0b3dnczg0PS00NjcsLTE2LC0zMDAsMCwwLDAsMCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDYyM1wiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1pbnRsICt0b3dnczg0PS0xODYsMjMwLDExMCwwLDAsMCwwICtub19kZWZzICcsXG4gIFwiRVBTRzo0NjI0XCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ2MjVcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9aW50bCArdG93Z3M4ND0xODYsNDgyLDE1MSwwLDAsMCwwICtub19kZWZzICcsXG4gIFwiRVBTRzo0NjI2XCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPWludGwgK3Rvd2dzODQ9OTQsLTk0OCwtMTI2MiwwLDAsMCwwICtub19kZWZzICcsXG4gIFwiRVBTRzo0NjI3XCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ2MjhcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9aW50bCArdG93Z3M4ND0xNjIsMTE3LDE1NCwwLDAsMCwwICtub19kZWZzICcsXG4gIFwiRVBTRzo0NjI5XCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPWludGwgK3Rvd2dzODQ9NzIuNDM4LDM0NS45MTgsNzkuNDg2LDEuNjA0NSwwLjg4MjMsMC41NTY1LDEuMzc0NiArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDYzMFwiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1pbnRsICt0b3dnczg0PTg0LDI3NCw2NSwwLDAsMCwwICtub19kZWZzICcsXG4gIFwiRVBTRzo0NjMxXCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPWludGwgK3Rvd2dzODQ9MTQ1LC0xODcsMTAzLDAsMCwwLDAgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ2MzJcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9aW50bCArdG93Z3M4ND0tMzgyLC01OSwtMjYyLDAsMCwwLDAgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ2MzNcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9aW50bCArdG93Z3M4ND0zMzUuNDcsMjIyLjU4LC0yMzAuOTQsMCwwLDAsMCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDYzNFwiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1pbnRsICt0b3dnczg0PS0xMywtMzQ4LDI5MiwwLDAsMCwwICtub19kZWZzICcsXG4gIFwiRVBTRzo0NjM1XCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPWludGwgK3Rvd2dzODQ9LTEyMi4zODMsLTE4OC42OTYsMTAzLjM0NCwzLjUxMDcsLTQuOTY2OCwtNS43MDQ3LDQuNDc5OCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDYzNlwiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1pbnRsICt0b3dnczg0PTM2NSwxOTQsMTY2LDAsMCwwLDAgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ2MzdcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9aW50bCArdG93Z3M4ND0zMjUsMTU0LDE3MiwwLDAsMCwwICtub19kZWZzICcsXG4gIFwiRVBTRzo0NjM4XCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPWNscms2NiArdG93Z3M4ND0zMCw0MzAsMzY4LDAsMCwwLDAgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ2MzlcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9aW50bCArdG93Z3M4ND0yNTMsLTEzMiwtMTI3LDAsMCwwLDAgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ2NDBcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9V0dTODQgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDY0MVwiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1pbnRsICt0b3dnczg0PTI4Ny41OCwxNzcuNzgsLTEzNS40MSwwLDAsMCwwICtub19kZWZzICcsXG4gIFwiRVBTRzo0NjQyXCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPWludGwgK3Rvd2dzODQ9LTEzLC0zNDgsMjkyLDAsMCwwLDAgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ2NDNcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9aW50bCArdG93Z3M4ND0tNDgwLjI2LC00MzguMzIsLTY0My40MjksMTYuMzExOSwyMC4xNzIxLC00LjAzNDksLTExMS43ICtub19kZWZzICcsXG4gIFwiRVBTRzo0NjQ0XCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPWludGwgK3Rvd2dzODQ9LTEwLjE4LC0zNTAuNDMsMjkxLjM3LDAsMCwwLDAgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ2NDVcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9aW50bCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICtub19kZWZzICcsXG4gIFwiRVBTRzo0NjQ2XCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPWludGwgK3Rvd2dzODQ9LTk2Myw1MTAsLTM1OSwwLDAsMCwwICtub19kZWZzICcsXG4gIFwiRVBTRzo0NjU3XCI6Jytwcm9qPWxvbmdsYXQgK2E9NjM3NzAxOS4yNyArYj02MzU1NzYyLjUzOTEgK3Rvd2dzODQ9LTI4LDE5OSw1LDAsMCwwLDAgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ2NThcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9aW50bCArdG93Z3M4ND0tNzMsNDYsLTg2LDAsMCwwLDAgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ2NTlcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDY2MFwiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1pbnRsICt0b3dnczg0PTk4Mi42MDksNTUyLjc1MywtNTQwLjg3Myw2LjY4MTYzLC0zMS42MTE1LC0xOS44NDgyLDE2LjgwNSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDY2MVwiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICtub19kZWZzICcsXG4gIFwiRVBTRzo0NjYyXCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPWludGwgK3Rvd2dzODQ9LTExLjY0LC0zNDguNiwyOTEuOTgsMCwwLDAsMCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDY2M1wiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1pbnRsICt0b3dnczg0PS01MDIuODYyLC0yNDcuNDM4LDMxMi43MjQsMCwwLDAsMCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDY2NFwiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1pbnRsICt0b3dnczg0PS0yMDQuNjE5LDE0MC4xNzYsNTUuMjI2LDAsMCwwLDAgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ2NjVcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9aW50bCArdG93Z3M4ND0tMTA2LjIyNiwxNjYuMzY2LC0zNy44OTMsMCwwLDAsMCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDY2NlwiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1iZXNzZWwgK3Rvd2dzODQ9NTA4LjA4OCwtMTkxLjA0Miw1NjUuMjIzLDAsMCwwLDAgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ2NjdcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9V0dTODQgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDY2OFwiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1pbnRsICt0b3dnczg0PS04NiwtOTgsLTExOSwwLDAsMCwwICtub19kZWZzICcsXG4gIFwiRVBTRzo0NjY5XCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ2NzBcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9V0dTODQgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDY3MVwiOicrcHJvaj1sb25nbGF0ICthPTYzNzgyNDkuMiArYj02MzU2NTE1ICtub19kZWZzICcsXG4gIFwiRVBTRzo0NjcyXCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPWludGwgK3Rvd2dzODQ9MTc1LC0zOCwxMTMsMCwwLDAsMCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDY3M1wiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1pbnRsICt0b3dnczg0PTE3NC4wNSwtMjUuNDksMTEyLjU3LC0wLC0wLDAuNTU0LDAuMjI2MyArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDY3NFwiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICtub19kZWZzICcsXG4gIFwiRVBTRzo0Njc1XCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPWNscms2NiArdG93Z3M4ND0tMTAwLC0yNDgsMjU5LDAsMCwwLDAgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ2NzZcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9a3Jhc3MgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ2NzdcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9a3Jhc3MgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ2NzhcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9NDQuNTg1LC0xMzEuMjEyLC0zOS41NDQsMCwwLDAsMCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDY3OVwiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1jbHJrODAgK3Rvd2dzODQ9LTgwLjAxLDI1My4yNiwyOTEuMTksMCwwLDAsMCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDY4MFwiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1jbHJrODAgK3Rvd2dzODQ9MTI0LjUsLTYzLjUsLTI4MSwwLDAsMCwwICtub19kZWZzICcsXG4gIFwiRVBTRzo0NjgxXCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPWNscms4MCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDY4MlwiOicrcHJvaj1sb25nbGF0ICthPTYzNzcyNzYuMzQ1ICtiPTYzNTYwNzUuNDEzMTQwMjQgK3Rvd2dzODQ9MjgzLjcsNzM1LjksMjYxLjEsMCwwLDAsMCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDY4M1wiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1jbHJrNjYgK3Rvd2dzODQ9LTEyNy42MiwtNjcuMjQsLTQ3LjA0LC0zLjA2OCw0LjkwMywxLjU3OCwtMS4wNiArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDY4NFwiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1pbnRsICt0b3dnczg0PS0xMzMsLTMyMSw1MCwwLDAsMCwwICtub19kZWZzICcsXG4gIFwiRVBTRzo0Njg1XCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPWludGwgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ2ODZcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDY4N1wiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLjA3MiwtMC41MDcsLTAuMjQ1LC0wLjAxODMsMC4wMDAzLC0wLjAwNywtMC4wMDkzICtub19kZWZzICcsXG4gIFwiRVBTRzo0Njg4XCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPWludGwgK3Rvd2dzODQ9MzQ3LjEwMywxMDc4LjEyLDI2MjMuOTIsLTMzLjg4NzUsNzAuNjc3MywtOS4zOTQzLDE4Ni4wNzQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ2ODlcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9aW50bCArdG93Z3M4ND00MTAuNzIxLDU1LjA0OSw4MC43NDYsMi41Nzc5LDIuMzUxNCwwLjY2NjQsMTcuMzMxMSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDY5MFwiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1pbnRsICt0b3dnczg0PTIyMS41MjUsMTUyLjk0OCwxNzYuNzY4LC0yLjM4NDcsLTEuMzg5NiwtMC44NzcsMTEuNDc0MSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDY5MVwiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1pbnRsICt0b3dnczg0PTIxNS41MjUsMTQ5LjU5MywxNzYuMjI5LC0zLjI2MjQsLTEuNjkyLC0xLjE1NzEsMTAuNDc3MyArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDY5MlwiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1pbnRsICt0b3dnczg0PTIxNy4wMzcsODYuOTU5LDIzLjk1NiwwLDAsMCwwICtub19kZWZzICcsXG4gIFwiRVBTRzo0NjkzXCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPVdHUzg0ICt0b3dnczg0PTAsLTAuMTUsMC42OCwwLDAsMCwwICtub19kZWZzICcsXG4gIFwiRVBTRzo0Njk0XCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPVdHUzg0ICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ2OTVcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9Y2xyazY2ICt0b3dnczg0PS0xMDMuNzQ2LC05LjYxNCwtMjU1Ljk1LDAsMCwwLDAgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ2OTZcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9Y2xyazgwICtub19kZWZzICcsXG4gIFwiRVBTRzo0Njk3XCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPWNscms4MCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDY5OFwiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1pbnRsICt0b3dnczg0PTE0NSwtMTg3LDEwMywwLDAsMCwwICtub19kZWZzICcsXG4gIFwiRVBTRzo0Njk5XCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPWNscms4MCArdG93Z3M4ND0tNzcwLjEsMTU4LjQsLTQ5OC4yLDAsMCwwLDAgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ3MDBcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9Y2xyazgwICtub19kZWZzICcsXG4gIFwiRVBTRzo0NzAxXCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPWNscms4MCArdG93Z3M4ND0tNzkuOSwtMTU4LC0xNjguOSwwLDAsMCwwICtub19kZWZzICcsXG4gIFwiRVBTRzo0NzAyXCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ3MDNcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9Y2xyazgwICtub19kZWZzICcsXG4gIFwiRVBTRzo0NzA0XCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPWludGwgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ3MDVcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9aW50bCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDcwNlwiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1oZWxtZXJ0ICt0b3dnczg0PS0xNDYuMjEsMTEyLjYzLDQuMDUsMCwwLDAsMCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDcwN1wiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1pbnRsICt0b3dnczg0PTExNCwtMTE2LC0zMzMsMCwwLDAsMCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDcwOFwiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1hdXN0X1NBICt0b3dnczg0PS00OTEsLTIyLDQzNSwwLDAsMCwwICtub19kZWZzICcsXG4gIFwiRVBTRzo0NzA5XCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPWludGwgK3Rvd2dzODQ9MTQ1LDc1LC0yNzIsMCwwLDAsMCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDcxMFwiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1pbnRsICt0b3dnczg0PS0zMjAsNTUwLC00OTQsMCwwLDAsMCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDcxMVwiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1pbnRsICt0b3dnczg0PTEyNCwtMjM0LC0yNSwwLDAsMCwwICtub19kZWZzICcsXG4gIFwiRVBTRzo0NzEyXCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPWludGwgK3Rvd2dzODQ9LTIwNSwxMDcsNTMsMCwwLDAsMCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDcxM1wiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1jbHJrODAgK3Rvd2dzODQ9LTc5LC0xMjksMTQ1LDAsMCwwLDAgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ3MTRcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9aW50bCArdG93Z3M4ND0tMTI3LC03NjksNDcyLDAsMCwwLDAgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ3MTVcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9aW50bCArdG93Z3M4ND0tMTA0LC0xMjksMjM5LDAsMCwwLDAgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ3MTZcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9aW50bCArdG93Z3M4ND0yOTgsLTMwNCwtMzc1LDAsMCwwLDAgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ3MTdcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9Y2xyazY2ICt0b3dnczg0PS0yLDE1MSwxODEsMCwwLDAsMCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDcxOFwiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1pbnRsICt0b3dnczg0PTIzMCwtMTk5LC03NTIsMCwwLDAsMCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDcxOVwiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1pbnRsICt0b3dnczg0PTIxMSwxNDcsMTExLDAsMCwwLDAgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ3MjBcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9V0dTNzIgK3Rvd2dzODQ9MCwwLDQuNSwwLDAsMC41NTQsMC4yMjYzICtub19kZWZzICcsXG4gIFwiRVBTRzo0NzIxXCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPWludGwgK3Rvd2dzODQ9MjY1LjAyNSwzODQuOTI5LC0xOTQuMDQ2LDAsMCwwLDAgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ3MjJcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9aW50bCArdG93Z3M4ND0tNzk0LDExOSwtMjk4LDAsMCwwLDAgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ3MjNcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9Y2xyazY2ICt0b3dnczg0PS0xNzkuNDgzLC02OS4zNzksLTI3LjU4NCwtNy44NjIsOC4xNjMsNi4wNDIsLTEzLjkyNSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDcyNFwiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1pbnRsICt0b3dnczg0PTIwOCwtNDM1LC0yMjksMCwwLDAsMCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDcyNVwiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1pbnRsICt0b3dnczg0PTE4OSwtNzksLTIwMiwwLDAsMCwwICtub19kZWZzICcsXG4gIFwiRVBTRzo0NzI2XCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPWNscms2NiArdG93Z3M4ND04Ljg1MywtNTIuNjQ0LDE4MC4zMDQsLTAuMzkzLC0yLjMyMywyLjk2LC0yNC4wODEgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ3MjdcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9aW50bCArdG93Z3M4ND00MDMsLTgxLDI3NywwLDAsMCwwICtub19kZWZzICcsXG4gIFwiRVBTRzo0NzI4XCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPWludGwgK3Rvd2dzODQ9LTMwNywtOTIsMTI3LDAsMCwwLDAgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ3MjlcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9aW50bCArdG93Z3M4ND0xODUsMTY1LDQyLDAsMCwwLDAgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ3MzBcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9aW50bCArdG93Z3M4ND0xNzAsNDIsODQsMCwwLDAsMCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDczMVwiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1jbHJrODAgK3Rvd2dzODQ9NTEsMzkxLC0zNiwwLDAsMCwwICtub19kZWZzICcsXG4gIFwiRVBTRzo0NzMyXCI6Jytwcm9qPWxvbmdsYXQgK2E9NjM3ODI3MCArYj02MzU2Nzk0LjM0MzQzNDM0MyArdG93Z3M4ND0xMDIsNTIsLTM4LDAsMCwwLDAgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ3MzNcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9aW50bCArdG93Z3M4ND0yNzYsLTU3LDE0OSwwLDAsMCwwICtub19kZWZzICcsXG4gIFwiRVBTRzo0NzM0XCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPWludGwgK3Rvd2dzODQ9LTYzMiw0MzgsLTYwOSwwLDAsMCwwICtub19kZWZzICcsXG4gIFwiRVBTRzo0NzM1XCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPWludGwgK3Rvd2dzODQ9NjQ3LDE3NzcsLTExMjQsMCwwLDAsMCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDczNlwiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1jbHJrODAgK3Rvd2dzODQ9MjYwLDEyLC0xNDcsMCwwLDAsMCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDczN1wiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICtub19kZWZzICcsXG4gIFwiRVBTRzo0NzM4XCI6Jytwcm9qPWxvbmdsYXQgK2E9NjM3ODI5My42NDUyMDg3NTkgK2I9NjM1NjYxNy45ODc2Nzk4MzggK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ3MzlcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9aW50bCArdG93Z3M4ND0tMTU2LC0yNzEsLTE4OSwwLDAsMCwwICtub19kZWZzICcsXG4gIFwiRVBTRzo0NzQwXCI6Jytwcm9qPWxvbmdsYXQgK2E9NjM3ODEzNiArYj02MzU2NzUxLjM2MTc0NTcxMiArdG93Z3M4ND0wLDAsMS41LC0wLC0wLDAuMDc2LDAgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ3NDFcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9aW50bCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDc0MlwiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1HUlM4MCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDc0M1wiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1jbHJrODAgK3Rvd2dzODQ9NzAuOTk1LC0zMzUuOTE2LDI2Mi44OTgsMCwwLDAsMCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDc0NFwiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1jbHJrODAgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ3NDVcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9YmVzc2VsICtub19kZWZzICcsXG4gIFwiRVBTRzo0NzQ2XCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPWJlc3NlbCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDc0N1wiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICtub19kZWZzICcsXG4gIFwiRVBTRzo0NzQ4XCI6Jytwcm9qPWxvbmdsYXQgK2E9NjM3ODMwNi4zNjk2ICtiPTYzNTY1NzEuOTk2ICt0b3dnczg0PTUxLDM5MSwtMzYsMCwwLDAsMCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDc0OVwiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICtub19kZWZzICcsXG4gIFwiRVBTRzo0NzUwXCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPVdHUzg0ICt0b3dnczg0PS01Ni4yNjMsMTYuMTM2LC0yMi44NTYsMCwwLDAsMCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDc1MVwiOicrcHJvaj1sb25nbGF0ICthPTYzNzcyOTUuNjY0ICtiPTYzNTYwOTQuNjY3OTE1MjA0ICtub19kZWZzICcsXG4gIFwiRVBTRzo0NzUyXCI6Jytwcm9qPWxvbmdsYXQgK2E9NjM3ODMwNi4zNjk2ICtiPTYzNTY1NzEuOTk2ICt0b3dnczg0PTUxLDM5MSwtMzYsMCwwLDAsMCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDc1M1wiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1pbnRsICtub19kZWZzICcsXG4gIFwiRVBTRzo0NzU0XCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPWludGwgK3Rvd2dzODQ9LTIwOC40MDYsLTEwOS44NzgsLTIuNTc2NCwwLDAsMCwwICtub19kZWZzICcsXG4gIFwiRVBTRzo0NzU1XCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPVdHUzg0ICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ3NTZcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9V0dTODQgK3Rvd2dzODQ9LTE5Mi44NzMsLTM5LjM4MiwtMTExLjIwMiwtMC4wMDIwNSwtMC4wMDA1LDAuMDAzMzUsMC4wMTg4ICtub19kZWZzICcsXG4gIFwiRVBTRzo0NzU3XCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPVdHUzg0ICtub19kZWZzICcsXG4gIFwiRVBTRzo0NzU4XCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPVdHUzg0ICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ3NTlcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDc2MFwiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1XR1M2NiArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDc2MVwiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICtub19kZWZzICcsXG4gIFwiRVBTRzo0NzYyXCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPVdHUzg0ICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ3NjNcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9V0dTODQgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDc2NFwiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICtub19kZWZzICcsXG4gIFwiRVBTRzo0NzY1XCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ4MDFcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9YmVzc2VsICt0b3dnczg0PTY3NC40LDE1LjEsNDA1LjMsMCwwLDAsMCArcG09YmVybiArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDgwMlwiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1pbnRsICt0b3dnczg0PTMwNywzMDQsLTMxOCwwLDAsMCwwICtwbT1ib2dvdGEgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ4MDNcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9aW50bCArdG93Z3M4ND0tMzA0LjA0NiwtNjAuNTc2LDEwMy42NCwwLDAsMCwwICtwbT1saXNib24gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ4MDRcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9YmVzc2VsICt0b3dnczg0PS01ODcuOCw1MTkuNzUsMTQ1Ljc2LDAsMCwwLDAgK3BtPWpha2FydGEgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ4MDVcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9YmVzc2VsICt0b3dnczg0PTY4MiwtMjAzLDQ4MCwwLDAsMCwwICtwbT1mZXJybyArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDgwNlwiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1pbnRsICt0b3dnczg0PS0xMDQuMSwtNDkuMSwtOS45LDAuOTcxLC0yLjkxNywwLjcxNCwtMTEuNjggK3BtPXJvbWUgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ4MDdcIjonK3Byb2o9bG9uZ2xhdCArYT02Mzc4MjQ5LjIgK2I9NjM1NjUxNSArdG93Z3M4ND0tMTY4LC02MCwzMjAsMCwwLDAsMCArcG09cGFyaXMgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ4MDhcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9YmVzc2VsICtwbT1qYWthcnRhICtub19kZWZzICcsXG4gIFwiRVBTRzo0ODA5XCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPWludGwgK3BtPWJydXNzZWxzICtub19kZWZzICcsXG4gIFwiRVBTRzo0ODEwXCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPWludGwgK3Rvd2dzODQ9LTE4OSwtMjQyLC05MSwwLDAsMCwwICtwbT1wYXJpcyArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDgxMVwiOicrcHJvaj1sb25nbGF0ICthPTYzNzgyNDkuMiArYj02MzU2NTE1ICt0b3dnczg0PS03MywtMjQ3LDIyNywwLDAsMCwwICtwbT1wYXJpcyArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDgxM1wiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1iZXNzZWwgK3Rvd2dzODQ9LTM3Nyw2ODEsLTUwLDAsMCwwLDAgK3BtPWpha2FydGEgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ4MTRcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9YmVzc2VsICtwbT1zdG9ja2hvbG0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ4MTVcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9YmVzc2VsICtwbT1hdGhlbnMgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ4MTZcIjonK3Byb2o9bG9uZ2xhdCArYT02Mzc4MjQ5LjIgK2I9NjM1NjUxNSArdG93Z3M4ND0tMjYzLDYsNDMxLDAsMCwwLDAgK3BtPXBhcmlzICtub19kZWZzICcsXG4gIFwiRVBTRzo0ODE3XCI6Jytwcm9qPWxvbmdsYXQgK2E9NjM3NzQ5Mi4wMTggK2I9NjM1NjE3My41MDg3MTI2OTYgK3Rvd2dzODQ9Mjc4LjMsOTMsNDc0LjUsNy44ODksMC4wNSwtNi42MSw2LjIxICtwbT1vc2xvICtub19kZWZzICcsXG4gIFwiRVBTRzo0ODE4XCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPWJlc3NlbCArdG93Z3M4ND01ODksNzYsNDgwLDAsMCwwLDAgK3BtPWZlcnJvICtub19kZWZzICcsXG4gIFwiRVBTRzo0ODE5XCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPWNscms4MCArdG93Z3M4ND0tMjA5LjM2MiwtODcuODE2Miw0MDQuNjIsMC4wMDQ2LDMuNDc4NCwwLjU4MDUsLTEuNDU0NyArcG09cGFyaXMgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ4MjBcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9YmVzc2VsICt0b3dnczg0PS00MDMsNjg0LDQxLDAsMCwwLDAgK3BtPWpha2FydGEgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ4MjFcIjonK3Byb2o9bG9uZ2xhdCArYT02Mzc4MjQ5LjIgK2I9NjM1NjUxNSArcG09cGFyaXMgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ4MjNcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9aW50bCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDgyNFwiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1pbnRsICtub19kZWZzICcsXG4gIFwiRVBTRzo0OTAxXCI6Jytwcm9qPWxvbmdsYXQgK2E9NjM3NjUyMyArYj02MzU1ODYyLjkzMzI1NTU3MyArcG09Mi4zMzcyMDgzMzMzMzMzMzMgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ5MDJcIjonK3Byb2o9bG9uZ2xhdCArYT02Mzc2NTIzICtiPTYzNTU4NjIuOTMzMjU1NTczICtwbT1wYXJpcyArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDkwM1wiOicrcHJvaj1sb25nbGF0ICthPTYzNzgyOTguMyArYj02MzU2NjU3LjE0MjY2OTU2MSArcG09bWFkcmlkICtub19kZWZzICcsXG4gIFwiRVBTRzo0OTA0XCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPWJlc3NlbCArdG93Z3M4ND01MDguMDg4LC0xOTEuMDQyLDU2NS4yMjMsMCwwLDAsMCArcG09bGlzYm9uICtub19kZWZzICcsXG4gIFwiRVBTRzo1MDEzXCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjUxMzJcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9YmVzc2VsICtub19kZWZzICcsXG4gIFwiRVBTRzo1MjI4XCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPWJlc3NlbCArdG93Z3M4ND01NzIuMjEzLDg1LjMzNCw0NjEuOTQsNC45NzMyLDEuNTI5LDUuMjQ4NCwzLjUzNzggK25vX2RlZnMgJyxcbiAgXCJFUFNHOjUyMjlcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9YmVzc2VsICt0b3dnczg0PTU3Mi4yMTMsODUuMzM0LDQ2MS45NCw0Ljk3MzIsMS41MjksNS4yNDg0LDMuNTM3OCArcG09ZmVycm8gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjUyMzNcIjonK3Byb2o9bG9uZ2xhdCArYT02Mzc3Mjc2LjM0NSArYj02MzU2MDc1LjQxMzE0MDI0ICt0b3dnczg0PS0wLjI5Myw3NjYuOTUsODcuNzEzLDAuMTk1NzA0LDEuNjk1MDcsMy40NzMwMiwtMC4wMzkzMzggK25vX2RlZnMgJyxcbiAgXCJFUFNHOjUyNDZcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9R1JTODAgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjUyNTJcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NTI2NFwiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICtub19kZWZzICcsXG4gIFwiRVBTRzo1MzI0XCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjUzNDBcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NTM1NFwiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICtub19kZWZzICcsXG4gIFwiRVBTRzo1MzYwXCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjUzNjVcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9V0dTODQgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NTM3MVwiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICtub19kZWZzICcsXG4gIFwiRVBTRzo1MzczXCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjUzODFcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9V0dTODQgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NTM5M1wiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICtub19kZWZzICcsXG4gIFwiRVBTRzo1NDUxXCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPWNscms2NiArdG93Z3M4ND0yMTMuMTEsOS4zNywtNzQuOTUsMCwwLDAsMCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NTQ2NFwiOicrcHJvaj1sb25nbGF0ICthPTYzNzgyOTMuNjQ1MjA4NzU5ICtiPTYzNTY2MTcuOTg3Njc5ODM4ICtub19kZWZzICcsXG4gIFwiRVBTRzo1NDY3XCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPWNscms2NiArbm9fZGVmcyAnLFxuICBcIkVQU0c6NTQ4OVwiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICtub19kZWZzICcsXG4gIFwiRVBTRzo1NTI0XCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPWludGwgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjU1MjdcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9YXVzdF9TQSArdG93Z3M4ND0tNjcuMzUsMy44OCwtMzguMjIsMCwwLDAsMCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NTU0NlwiOicrcHJvaj1sb25nbGF0ICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICtub19kZWZzICcsXG4gIFwiRVBTRzo1NTYxXCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPWtyYXNzICt0b3dnczg0PTI1LC0xNDEsLTc4LjUsLTAsMC4zNSwwLjczNiwwICtub19kZWZzICcsXG4gIFwiRVBTRzo1NTkzXCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjU2ODFcIjonK3Byb2o9bG9uZ2xhdCArZWxscHM9YmVzc2VsICtub19kZWZzICcsXG4gIFwiRVBTRzo1ODg2XCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPUdSUzgwICtub19kZWZzICcsXG4gIFwiRVBTRzo2MTM1XCI6Jytwcm9qPWxvbmdsYXQgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIwMDBcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPS02MiAraz0wLjk5OTUwMDAwMDAwMDAwMDEgK3hfMD00MDAwMDAgK3lfMD0wICtlbGxwcz1jbHJrODAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIwMDFcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPS02MiAraz0wLjk5OTUwMDAwMDAwMDAwMDEgK3hfMD00MDAwMDAgK3lfMD0wICtlbGxwcz1jbHJrODAgK3Rvd2dzODQ9LTI1NSwtMTUsNzEsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjAwMlwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9LTYyICtrPTAuOTk5NTAwMDAwMDAwMDAwMSAreF8wPTQwMDAwMCAreV8wPTAgK2VsbHBzPWNscms4MCArdG93Z3M4ND03MjUsNjg1LDUzNiwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMDAzXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0tNjIgK2s9MC45OTk1MDAwMDAwMDAwMDAxICt4XzA9NDAwMDAwICt5XzA9MCArZWxscHM9Y2xyazgwICt0b3dnczg0PTcyLDIxMy43LDkzLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIwMDRcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPS02MiAraz0wLjk5OTUwMDAwMDAwMDAwMDEgK3hfMD00MDAwMDAgK3lfMD0wICtlbGxwcz1jbHJrODAgK3Rvd2dzODQ9MTc0LDM1OSwzNjUsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjAwNVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9LTYyICtrPTAuOTk5NTAwMDAwMDAwMDAwMSAreF8wPTQwMDAwMCAreV8wPTAgK2VsbHBzPWNscms4MCArdG93Z3M4ND05LDE4MywyMzYsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjAwNlwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9LTYyICtrPTAuOTk5NTAwMDAwMDAwMDAwMSAreF8wPTQwMDAwMCAreV8wPTAgK2VsbHBzPWNscms4MCArdG93Z3M4ND0tMTQ5LDEyOCwyOTYsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjAwN1wiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9LTYyICtrPTAuOTk5NTAwMDAwMDAwMDAwMSAreF8wPTQwMDAwMCAreV8wPTAgK2VsbHBzPWNscms4MCArdG93Z3M4ND0xOTUuNjcxLDMzMi41MTcsMjc0LjYwNywwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMDA4XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0tNTUuNSAraz0wLjk5OTkgK3hfMD0zMDQ4MDAgK3lfMD0wICtlbGxwcz1jbHJrNjYgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIwMDlcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPS01OC41ICtrPTAuOTk5OSAreF8wPTMwNDgwMCAreV8wPTAgK2VsbHBzPWNscms2NiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjAxMFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9LTYxLjUgK2s9MC45OTk5ICt4XzA9MzA0ODAwICt5XzA9MCArZWxscHM9Y2xyazY2ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMDExXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0tNjQuNSAraz0wLjk5OTkgK3hfMD0zMDQ4MDAgK3lfMD0wICtlbGxwcz1jbHJrNjYgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIwMTJcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPS02Ny41ICtrPTAuOTk5OSAreF8wPTMwNDgwMCAreV8wPTAgK2VsbHBzPWNscms2NiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjAxM1wiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9LTcwLjUgK2s9MC45OTk5ICt4XzA9MzA0ODAwICt5XzA9MCArZWxscHM9Y2xyazY2ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMDE0XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0tNzMuNSAraz0wLjk5OTkgK3hfMD0zMDQ4MDAgK3lfMD0wICtlbGxwcz1jbHJrNjYgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIwMTVcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPS03Ni41ICtrPTAuOTk5OSAreF8wPTMwNDgwMCAreV8wPTAgK2VsbHBzPWNscms2NiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjAxNlwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9LTc5LjUgK2s9MC45OTk5ICt4XzA9MzA0ODAwICt5XzA9MCArZWxscHM9Y2xyazY2ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMDE3XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0tNzMuNSAraz0wLjk5OTkgK3hfMD0zMDQ4MDAgK3lfMD0wICtlbGxwcz1jbHJrNjYgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIwMThcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPS03Ni41ICtrPTAuOTk5OSAreF8wPTMwNDgwMCAreV8wPTAgK2VsbHBzPWNscms2NiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjAxOVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9LTc5LjUgK2s9MC45OTk5ICt4XzA9MzA0ODAwICt5XzA9MCArZWxscHM9Y2xyazY2ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMDIwXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0tODIuNSAraz0wLjk5OTkgK3hfMD0zMDQ4MDAgK3lfMD0wICtlbGxwcz1jbHJrNjYgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIwMjFcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPS04MSAraz0wLjk5OTkgK3hfMD0zMDQ4MDAgK3lfMD0wICtlbGxwcz1jbHJrNjYgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIwMjJcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPS04NCAraz0wLjk5OTkgK3hfMD0zMDQ4MDAgK3lfMD0wICtlbGxwcz1jbHJrNjYgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIwMjNcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPS04NyAraz0wLjk5OTkgK3hfMD0zMDQ4MDAgK3lfMD0wICtlbGxwcz1jbHJrNjYgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIwMjRcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPS05MCAraz0wLjk5OTkgK3hfMD0zMDQ4MDAgK3lfMD0wICtlbGxwcz1jbHJrNjYgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIwMjVcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPS05MyAraz0wLjk5OTkgK3hfMD0zMDQ4MDAgK3lfMD0wICtlbGxwcz1jbHJrNjYgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIwMjZcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPS05NiAraz0wLjk5OTkgK3hfMD0zMDQ4MDAgK3lfMD0wICtlbGxwcz1jbHJrNjYgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIwMjdcIjonK3Byb2o9dXRtICt6b25lPTE1ICtlbGxwcz1jbHJrNjYgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIwMjhcIjonK3Byb2o9dXRtICt6b25lPTE2ICtlbGxwcz1jbHJrNjYgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIwMjlcIjonK3Byb2o9dXRtICt6b25lPTE3ICtlbGxwcz1jbHJrNjYgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIwMzBcIjonK3Byb2o9dXRtICt6b25lPTE4ICtlbGxwcz1jbHJrNjYgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIwMzFcIjonK3Byb2o9dXRtICt6b25lPTE3ICtlbGxwcz1jbHJrNjYgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIwMzJcIjonK3Byb2o9dXRtICt6b25lPTE4ICtlbGxwcz1jbHJrNjYgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIwMzNcIjonK3Byb2o9dXRtICt6b25lPTE5ICtlbGxwcz1jbHJrNjYgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIwMzRcIjonK3Byb2o9dXRtICt6b25lPTIwICtlbGxwcz1jbHJrNjYgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIwMzVcIjonK3Byb2o9dXRtICt6b25lPTIxICtlbGxwcz1jbHJrNjYgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIwMzZcIjonK3Byb2o9c3RlcmVhICtsYXRfMD00Ni41ICtsb25fMD0tNjYuNSAraz0wLjk5OTkxMiAreF8wPTI1MDAwMDAgK3lfMD03NTAwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMDM3XCI6Jytwcm9qPXV0bSArem9uZT0xOSArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjAzOFwiOicrcHJvaj11dG0gK3pvbmU9MjAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIwMzlcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTMxLjczNDM5MzYxMTExMTExICtsb25fMD0zNS4yMDQ1MTY5NDQ0NDQ0NSAraz0xLjAwMDAwNjcgK3hfMD0yMTk1MjkuNTg0ICt5XzA9NjI2OTA3LjM5ICtlbGxwcz1HUlM4MCArdG93Z3M4ND0tNDgsNTUsNTIsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjA0MFwiOicrcHJvaj11dG0gK3pvbmU9MzAgK2VsbHBzPWNscms4MCArdG93Z3M4ND0tMTI1LDUzLDQ2NywwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMDQxXCI6Jytwcm9qPXV0bSArem9uZT0zMCArZWxscHM9Y2xyazgwICt0b3dnczg0PS0xMjQuNzYsNTMsNDY2Ljc5LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIwNDJcIjonK3Byb2o9dXRtICt6b25lPTI5ICtlbGxwcz1jbHJrODAgK3Rvd2dzODQ9LTEyNSw1Myw0NjcsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjA0M1wiOicrcHJvaj11dG0gK3pvbmU9MjkgK2VsbHBzPWNscms4MCArdG93Z3M4ND0tMTI0Ljc2LDUzLDQ2Ni43OSwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMDQ0XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMDUgK2s9MSAreF8wPTE4NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9LTE3LjUxLC0xMDguMzIsLTYyLjM5LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIwNDVcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTExMSAraz0xICt4XzA9MTk1MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0tMTcuNTEsLTEwOC4zMiwtNjIuMzksMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjA0NlwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTUgK2s9MSAreF8wPTAgK3lfMD0wICtheGlzPXdzdSArZWxscHM9V0dTODQgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjA0N1wiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTcgK2s9MSAreF8wPTAgK3lfMD0wICtheGlzPXdzdSArZWxscHM9V0dTODQgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjA0OFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTkgK2s9MSAreF8wPTAgK3lfMD0wICtheGlzPXdzdSArZWxscHM9V0dTODQgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjA0OVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MjEgK2s9MSAreF8wPTAgK3lfMD0wICtheGlzPXdzdSArZWxscHM9V0dTODQgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjA1MFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MjMgK2s9MSAreF8wPTAgK3lfMD0wICtheGlzPXdzdSArZWxscHM9V0dTODQgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjA1MVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MjUgK2s9MSAreF8wPTAgK3lfMD0wICtheGlzPXdzdSArZWxscHM9V0dTODQgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjA1MlwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MjcgK2s9MSAreF8wPTAgK3lfMD0wICtheGlzPXdzdSArZWxscHM9V0dTODQgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjA1M1wiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MjkgK2s9MSAreF8wPTAgK3lfMD0wICtheGlzPXdzdSArZWxscHM9V0dTODQgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjA1NFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MzEgK2s9MSAreF8wPTAgK3lfMD0wICtheGlzPXdzdSArZWxscHM9V0dTODQgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjA1NVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MzMgK2s9MSAreF8wPTAgK3lfMD0wICtheGlzPXdzdSArZWxscHM9V0dTODQgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjA1NlwiOicrcHJvaj1zb21lcmMgK2xhdF8wPTQ2Ljk1MjQwNTU1NTU1NTU2ICtsb25fMD03LjQzOTU4MzMzMzMzMzMzMyAra18wPTEgK3hfMD0yNjAwMDAwICt5XzA9MTIwMDAwMCArZWxscHM9YmVzc2VsICt0b3dnczg0PTY3NC4zNzQsMTUuMDU2LDQwNS4zNDYsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjA1N1wiOicrcHJvaj1vbWVyYyArbGF0XzA9MjcuNTE4ODI4ODA1NTU1NTUgK2xvbmM9NTIuNjAzNTM5MTY2NjY2NjcgK2FscGhhPTAuNTcxNjYxMTk0NDQ0NDQ0NCAraz0wLjk5OTg5NTkzNCAreF8wPTY1ODM3Ny40MzcgK3lfMD0zMDQ0OTY5LjE5NCArZ2FtbWE9MC41NzE2NjExOTQ0NDQ0NDQ0ICtlbGxwcz1pbnRsICt0b3dnczg0PS0xMzMuNjMsLTE1Ny41LC0xNTguNjIsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjA1OFwiOicrcHJvaj11dG0gK3pvbmU9MzggK2VsbHBzPWludGwgK3Rvd2dzODQ9LTExNywtMTMyLC0xNjQsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjA1OVwiOicrcHJvaj11dG0gK3pvbmU9MzkgK2VsbHBzPWludGwgK3Rvd2dzODQ9LTExNywtMTMyLC0xNjQsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjA2MFwiOicrcHJvaj11dG0gK3pvbmU9NDAgK2VsbHBzPWludGwgK3Rvd2dzODQ9LTExNywtMTMyLC0xNjQsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjA2MVwiOicrcHJvaj11dG0gK3pvbmU9NDEgK2VsbHBzPWludGwgK3Rvd2dzODQ9LTExNywtMTMyLC0xNjQsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjA2MlwiOicrcHJvaj1sY2MgK2xhdF8xPTQwICtsYXRfMD00MCArbG9uXzA9MCAra18wPTAuOTk4ODA4NTI5MyAreF8wPTYwMDAwMCAreV8wPTYwMDAwMCArYT02Mzc4Mjk4LjMgK2I9NjM1NjY1Ny4xNDI2Njk1NjEgK3BtPW1hZHJpZCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjA2M1wiOicrcHJvaj11dG0gK3pvbmU9MjggK2E9NjM3ODI0OS4yICtiPTYzNTY1MTUgK3Rvd2dzODQ9LTIzLDI1OSwtOSwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMDY0XCI6Jytwcm9qPXV0bSArem9uZT0yOSArYT02Mzc4MjQ5LjIgK2I9NjM1NjUxNSArdG93Z3M4ND0tMjMsMjU5LC05LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIwNjVcIjonK3Byb2o9a3JvdmFrICtsYXRfMD00OS41ICtsb25fMD00Mi41ICthbHBoYT0zMC4yODgxMzk3MjIyMjIyMiAraz0wLjk5OTkgK3hfMD0wICt5XzA9MCArZWxscHM9YmVzc2VsICt0b3dnczg0PTU4OSw3Niw0ODAsMCwwLDAsMCArcG09ZmVycm8gK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIwNjZcIjonK3Byb2o9Y2FzcyArbGF0XzA9MTEuMjUyMTc4NjExMTExMTEgK2xvbl8wPS02MC42ODYwMDg4ODg4ODg4OSAreF8wPTM3NzE4LjY2MTU5MzI1ICt5XzA9MzYyMDkuOTE1MTI5NTIgK2E9NjM3ODI5My42NDUyMDg3NTkgK2I9NjM1NjYxNy45ODc2Nzk4MzggK3RvX21ldGVyPTAuMjAxMTY2MTk1MTY0ICtub19kZWZzICcsXG4gIFwiRVBTRzoyMDY3XCI6Jytwcm9qPXV0bSArem9uZT0yMCArZWxscHM9aW50bCArdG93Z3M4ND0tMC40NjUsMzcyLjA5NSwxNzEuNzM2LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIwNjhcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTkgK2s9MC45OTk5ICt4XzA9MjAwMDAwICt5XzA9MCArZWxscHM9aW50bCArdG93Z3M4ND0tMTE1Ljg1NCwtOTkuMDU4MywtMTUyLjQ2MiwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMDY5XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMSAraz0wLjk5OTkgK3hfMD0yMDAwMDAgK3lfMD0wICtlbGxwcz1pbnRsICt0b3dnczg0PS0xMTUuODU0LC05OS4wNTgzLC0xNTIuNDYyLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIwNzBcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTEzICtrPTAuOTk5OSAreF8wPTIwMDAwMCAreV8wPTAgK2VsbHBzPWludGwgK3Rvd2dzODQ9LTExNS44NTQsLTk5LjA1ODMsLTE1Mi40NjIsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjA3MVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTUgK2s9MC45OTk5ICt4XzA9MjAwMDAwICt5XzA9MCArZWxscHM9aW50bCArdG93Z3M4ND0tMTE1Ljg1NCwtOTkuMDU4MywtMTUyLjQ2MiwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMDcyXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xNyAraz0wLjk5OTkgK3hfMD0yMDAwMDAgK3lfMD0wICtlbGxwcz1pbnRsICt0b3dnczg0PS0xMTUuODU0LC05OS4wNTgzLC0xNTIuNDYyLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIwNzNcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTE5ICtrPTAuOTk5OSAreF8wPTIwMDAwMCAreV8wPTAgK2VsbHBzPWludGwgK3Rvd2dzODQ9LTExNS44NTQsLTk5LjA1ODMsLTE1Mi40NjIsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjA3NFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MjEgK2s9MC45OTk5ICt4XzA9MjAwMDAwICt5XzA9MCArZWxscHM9aW50bCArdG93Z3M4ND0tMTE1Ljg1NCwtOTkuMDU4MywtMTUyLjQ2MiwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMDc1XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0yMyAraz0wLjk5OTkgK3hfMD0yMDAwMDAgK3lfMD0wICtlbGxwcz1pbnRsICt0b3dnczg0PS0xMTUuODU0LC05OS4wNTgzLC0xNTIuNDYyLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIwNzZcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTI1ICtrPTAuOTk5OSAreF8wPTIwMDAwMCAreV8wPTAgK2VsbHBzPWludGwgK3Rvd2dzODQ9LTExNS44NTQsLTk5LjA1ODMsLTE1Mi40NjIsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjA3N1wiOicrcHJvaj11dG0gK3pvbmU9MzIgK2VsbHBzPWludGwgK3Rvd2dzODQ9LTExNS44NTQsLTk5LjA1ODMsLTE1Mi40NjIsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjA3OFwiOicrcHJvaj11dG0gK3pvbmU9MzMgK2VsbHBzPWludGwgK3Rvd2dzODQ9LTExNS44NTQsLTk5LjA1ODMsLTE1Mi40NjIsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjA3OVwiOicrcHJvaj11dG0gK3pvbmU9MzQgK2VsbHBzPWludGwgK3Rvd2dzODQ9LTExNS44NTQsLTk5LjA1ODMsLTE1Mi40NjIsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjA4MFwiOicrcHJvaj11dG0gK3pvbmU9MzUgK2VsbHBzPWludGwgK3Rvd2dzODQ9LTExNS44NTQsLTk5LjA1ODMsLTE1Mi40NjIsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjA4MVwiOicrcHJvaj10bWVyYyArbGF0XzA9LTkwICtsb25fMD0tNjkgK2s9MSAreF8wPTI1MDAwMDAgK3lfMD0wICtlbGxwcz1pbnRsICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMDgyXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0tOTAgK2xvbl8wPS02OSAraz0xICt4XzA9MjUwMDAwMCAreV8wPTAgK2VsbHBzPWludGwgK3Rvd2dzODQ9MjcuNSwxNCwxODYuNCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMDgzXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0tOTAgK2xvbl8wPS02OSAraz0xICt4XzA9MjUwMDAwMCAreV8wPTAgK2VsbHBzPWludGwgK3Rvd2dzODQ9MTYsMTk2LDkzLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIwODRcIjonK3Byb2o9dXRtICt6b25lPTE5ICtzb3V0aCArZWxscHM9aW50bCArdG93Z3M4ND0xNiwxOTYsOTMsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjA4NVwiOicrcHJvaj1sY2MgK2xhdF8xPTIyLjM1ICtsYXRfMD0yMi4zNSArbG9uXzA9LTgxICtrXzA9MC45OTk5MzYwMiAreF8wPTUwMDAwMCAreV8wPTI4MDI5Ni4wMTYgK2RhdHVtPU5BRDI3ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMDg2XCI6Jytwcm9qPWxjYyArbGF0XzE9MjAuNzE2NjY2NjY2NjY2NjcgK2xhdF8wPTIwLjcxNjY2NjY2NjY2NjY3ICtsb25fMD0tNzYuODMzMzMzMzMzMzMzMzMgK2tfMD0wLjk5OTk0ODQ4ICt4XzA9NTAwMDAwICt5XzA9MjI5MTI2LjkzOSArZGF0dW09TkFEMjcgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIwODdcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTEyICtrPTAuOTk5NiAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWludGwgK3Rvd2dzODQ9LTExNS44NTQsLTk5LjA1ODMsLTE1Mi40NjIsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjA4OFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTEgK2s9MC45OTk2ICt4XzA9NTAwMDAwICt5XzA9MCArYT02Mzc4MjQ5LjIgK2I9NjM1NjUxNSArdG93Z3M4ND0tMjYzLDYsNDMxLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIwODlcIjonK3Byb2o9dXRtICt6b25lPTM4ICtlbGxwcz1XR1M4NCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMDkwXCI6Jytwcm9qPXV0bSArem9uZT0zOSArZWxscHM9V0dTODQgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjA5MVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9NDUgK2s9MSAreF8wPTg1MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0tNzYsLTEzOCw2NywwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMDkyXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD01MSAraz0xICt4XzA9OTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PS03NiwtMTM4LDY3LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIwOTNcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTEwNiAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9LTE3LjUxLC0xMDguMzIsLTYyLjM5LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIwOTRcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTEwNiAraz0wLjk5OTYgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1XR1M3MiArdG93Z3M4ND0wLDAsMS45LDAsMCwwLjgxNCwtMC4zOCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjA5NVwiOicrcHJvaj11dG0gK3pvbmU9MjggK2VsbHBzPWludGwgK3Rvd2dzODQ9LTE3MywyNTMsMjcsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjA5NlwiOicrcHJvaj10bWVyYyArbGF0XzA9MzggK2xvbl8wPTEyOSAraz0xICt4XzA9MjAwMDAwICt5XzA9NTAwMDAwICtlbGxwcz1iZXNzZWwgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIwOTdcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTM4ICtsb25fMD0xMjcgK2s9MSAreF8wPTIwMDAwMCAreV8wPTUwMDAwMCArZWxscHM9YmVzc2VsICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMDk4XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0zOCArbG9uXzA9MTI1ICtrPTEgK3hfMD0yMDAwMDAgK3lfMD01MDAwMDAgK2VsbHBzPWJlc3NlbCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjA5OVwiOicrcHJvaj1jYXNzICtsYXRfMD0yNS4zODIzNjExMTExMTExMSArbG9uXzA9NTAuNzYxMzg4ODg4ODg4ODkgK3hfMD0xMDAwMDAgK3lfMD0xMDAwMDAgK2VsbHBzPWhlbG1lcnQgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIxMDBcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTI0ICtrPTAuOTk5NiAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PS0xOTkuODcsNzQuNzksMjQ2LjYyLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIxMDFcIjonK3Byb2o9bGNjICtsYXRfMT0xMC4xNjY2NjY2NjY2NjY2NyArbGF0XzA9MTAuMTY2NjY2NjY2NjY2NjcgK2xvbl8wPS03MS42MDU2MTc3Nzc3Nzc3NyAra18wPTEgK3hfMD0wICt5XzA9LTUyNjg0Ljk3MiArZWxscHM9aW50bCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjEwMlwiOicrcHJvaj1sY2MgK2xhdF8xPTEwLjE2NjY2NjY2NjY2NjY3ICtsYXRfMD0xMC4xNjY2NjY2NjY2NjY2NyArbG9uXzA9LTcxLjYwNTYxNzc3Nzc3Nzc3ICtrXzA9MSAreF8wPTIwMDAwMCAreV8wPTE0NzMxNS4wMjggK2VsbHBzPWludGwgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIxMDNcIjonK3Byb2o9bGNjICtsYXRfMT0xMC4xNjY2NjY2NjY2NjY2NyArbGF0XzA9MTAuMTY2NjY2NjY2NjY2NjcgK2xvbl8wPS03MS42MDU2MTc3Nzc3Nzc3NyAra18wPTEgK3hfMD01MDAwMDAgK3lfMD00NDczMTUuMDI4ICtlbGxwcz1pbnRsICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMTA0XCI6Jytwcm9qPWxjYyArbGF0XzE9MTAuMTY2NjY2NjY2NjY2NjcgK2xhdF8wPTEwLjE2NjY2NjY2NjY2NjY3ICtsb25fMD0tNzEuNjA1NjE3Nzc3Nzc3NzcgK2tfMD0xICt4XzA9LTE3MDQ0ICt5XzA9LTIzMTM5Ljk3ICtlbGxwcz1pbnRsICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMTA1XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0tMzYuODc5NzIyMjIyMjIyMjIgK2xvbl8wPTE3NC43NjQxNjY2NjY2NjY3ICtrPTAuOTk5OSAreF8wPTQwMDAwMCAreV8wPTgwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjEwNlwiOicrcHJvaj10bWVyYyArbGF0XzA9LTM3Ljc2MTExMTExMTExMTExICtsb25fMD0xNzYuNDY2MTExMTExMTExMSAraz0xICt4XzA9NDAwMDAwICt5XzA9ODAwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMTA3XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0tMzguNjI0NDQ0NDQ0NDQ0NDQgK2xvbl8wPTE3Ny44ODU1NTU1NTU1NTU2ICtrPTEgK3hfMD00MDAwMDAgK3lfMD04MDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIxMDhcIjonK3Byb2o9dG1lcmMgK2xhdF8wPS0zOS42NTA4MzMzMzMzMzMzMyArbG9uXzA9MTc2LjY3MzYxMTExMTExMTEgK2s9MSAreF8wPTQwMDAwMCAreV8wPTgwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjEwOVwiOicrcHJvaj10bWVyYyArbGF0XzA9LTM5LjEzNTU1NTU1NTU1NTU2ICtsb25fMD0xNzQuMjI3Nzc3Nzc3Nzc3OCAraz0xICt4XzA9NDAwMDAwICt5XzA9ODAwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMTEwXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0tMzkuNTEyMjIyMjIyMjIyMjIgK2xvbl8wPTE3NS42NCAraz0xICt4XzA9NDAwMDAwICt5XzA9ODAwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMTExXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0tNDAuMjQxOTQ0NDQ0NDQ0NDQgK2xvbl8wPTE3NS40ODgwNTU1NTU1NTU1ICtrPTEgK3hfMD00MDAwMDAgK3lfMD04MDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIxMTJcIjonK3Byb2o9dG1lcmMgK2xhdF8wPS00MC45MjUyNzc3Nzc3Nzc3NyArbG9uXzA9MTc1LjY0NzIyMjIyMjIyMjIgK2s9MSAreF8wPTQwMDAwMCAreV8wPTgwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjExM1wiOicrcHJvaj10bWVyYyArbGF0XzA9LTQxLjMwMTExMTExMTExMTEgK2xvbl8wPTE3NC43NzYzODg4ODg4ODg5ICtrPTEgK3hfMD00MDAwMDAgK3lfMD04MDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIxMTRcIjonK3Byb2o9dG1lcmMgK2xhdF8wPS00MC43MTQ3MjIyMjIyMjIyMyArbG9uXzA9MTcyLjY3MTk0NDQ0NDQ0NDQgK2s9MSAreF8wPTQwMDAwMCAreV8wPTgwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjExNVwiOicrcHJvaj10bWVyYyArbGF0XzA9LTQxLjI3NDQ0NDQ0NDQ0NDQ0ICtsb25fMD0xNzMuMjk5MTY2NjY2NjY2NyAraz0xICt4XzA9NDAwMDAwICt5XzA9ODAwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMTE2XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0tNDEuMjg5NzIyMjIyMjIyMjIgK2xvbl8wPTE3Mi4xMDg4ODg4ODg4ODg5ICtrPTEgK3hfMD00MDAwMDAgK3lfMD04MDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIxMTdcIjonK3Byb2o9dG1lcmMgK2xhdF8wPS00MS44MTA1NTU1NTU1NTU1NSArbG9uXzA9MTcxLjU4MTExMTExMTExMTEgK2s9MSAreF8wPTQwMDAwMCAreV8wPTgwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjExOFwiOicrcHJvaj10bWVyYyArbGF0XzA9LTQyLjMzMzYxMTExMTExMTExICtsb25fMD0xNzEuNTQ5NzIyMjIyMjIyMiAraz0xICt4XzA9NDAwMDAwICt5XzA9ODAwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMTE5XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0tNDIuNjg4ODg4ODg4ODg4ODggK2xvbl8wPTE3My4wMSAraz0xICt4XzA9NDAwMDAwICt5XzA9ODAwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMTIwXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0tNDEuNTQ0NDQ0NDQ0NDQ0NDQgK2xvbl8wPTE3My44MDE5NDQ0NDQ0NDQ0ICtrPTEgK3hfMD00MDAwMDAgK3lfMD04MDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIxMjFcIjonK3Byb2o9dG1lcmMgK2xhdF8wPS00Mi44ODYxMTExMTExMTExMSArbG9uXzA9MTcwLjk3OTcyMjIyMjIyMjIgK2s9MSAreF8wPTQwMDAwMCAreV8wPTgwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjEyMlwiOicrcHJvaj10bWVyYyArbGF0XzA9LTQzLjExICtsb25fMD0xNzAuMjYwODMzMzMzMzMzMyAraz0xICt4XzA9NDAwMDAwICt5XzA9ODAwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMTIzXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0tNDMuOTc3Nzc3Nzc3Nzc3NzggK2xvbl8wPTE2OC42MDYxMTExMTExMTExICtrPTEgK3hfMD00MDAwMDAgK3lfMD04MDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIxMjRcIjonK3Byb2o9dG1lcmMgK2xhdF8wPS00My41OTA1NTU1NTU1NTU1NiArbG9uXzA9MTcyLjcyNjk0NDQ0NDQ0NDUgK2s9MSAreF8wPTQwMDAwMCAreV8wPTgwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjEyNVwiOicrcHJvaj10bWVyYyArbGF0XzA9LTQzLjc0ODYxMTExMTExMTExICtsb25fMD0xNzEuMzYwNTU1NTU1NTU1NSAraz0xICt4XzA9NDAwMDAwICt5XzA9ODAwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMTI2XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0tNDQuNDAxOTQ0NDQ0NDQ0NDUgK2xvbl8wPTE3MS4wNTcyMjIyMjIyMjIyICtrPTEgK3hfMD00MDAwMDAgK3lfMD04MDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIxMjdcIjonK3Byb2o9dG1lcmMgK2xhdF8wPS00NC43MzUgK2xvbl8wPTE2OS40Njc1ICtrPTEgK3hfMD00MDAwMDAgK3lfMD04MDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIxMjhcIjonK3Byb2o9dG1lcmMgK2xhdF8wPS00NS4xMzI3Nzc3Nzc3Nzc3OCArbG9uXzA9MTY4LjM5ODYxMTExMTExMTEgK2s9MSAreF8wPTQwMDAwMCAreV8wPTgwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjEyOVwiOicrcHJvaj10bWVyYyArbGF0XzA9LTQ1LjU2MzYxMTExMTExMTExICtsb25fMD0xNjcuNzM4NjExMTExMTExMSAraz0xICt4XzA9NDAwMDAwICt5XzA9ODAwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMTMwXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0tNDUuODE2MTExMTExMTExMTEgK2xvbl8wPTE3MC42MjgzMzMzMzMzMzMzICtrPTEgK3hfMD00MDAwMDAgK3lfMD04MDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIxMzFcIjonK3Byb2o9dG1lcmMgK2xhdF8wPS00NS44NjEzODg4ODg4ODg4OSArbG9uXzA9MTcwLjI4MjUgK2s9MC45OTk5NiAreF8wPTQwMDAwMCAreV8wPTgwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjEzMlwiOicrcHJvaj10bWVyYyArbGF0XzA9LTQ2LjYgK2xvbl8wPTE2OC4zNDI3Nzc3Nzc3Nzc4ICtrPTEgK3hfMD00MDAwMDAgK3lfMD04MDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIxMzNcIjonK3Byb2o9dXRtICt6b25lPTU4ICtzb3V0aCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjEzNFwiOicrcHJvaj11dG0gK3pvbmU9NTkgK3NvdXRoICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMTM1XCI6Jytwcm9qPXV0bSArem9uZT02MCArc291dGggK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIxMzZcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTQuNjY2NjY2NjY2NjY2NjY3ICtsb25fMD0tMSAraz0wLjk5OTc1ICt4XzA9Mjc0MzE5LjczOTE2MzM1NzkgK3lfMD0wICthPTYzNzgzMDAgK2I9NjM1Njc1MS42ODkxODkxODkgK3Rvd2dzODQ9LTE5OSwzMiwzMjIsMCwwLDAsMCArdG9fbWV0ZXI9MC4zMDQ3OTk3MTAxODE1MDg4ICtub19kZWZzICcsXG4gIFwiRVBTRzoyMTM3XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0tMSAraz0wLjk5OTYgK3hfMD01MDAwMDAgK3lfMD0wICthPTYzNzgzMDAgK2I9NjM1Njc1MS42ODkxODkxODkgK3Rvd2dzODQ9LTE5OSwzMiwzMjIsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjEzOFwiOicrcHJvaj1sY2MgK2xhdF8xPTYwICtsYXRfMj00NiArbGF0XzA9NDQgK2xvbl8wPS02OC41ICt4XzA9MCAreV8wPTAgK2VsbHBzPWNscms2NiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjEzOVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9LTU1LjUgK2s9MC45OTk5ICt4XzA9MzA0ODAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjE0MFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9LTU4LjUgK2s9MC45OTk5ICt4XzA9MzA0ODAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjE0MVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9LTYxLjUgK2s9MC45OTk5ICt4XzA9MzA0ODAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjE0MlwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9LTY0LjUgK2s9MC45OTk5ICt4XzA9MzA0ODAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjE0M1wiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9LTY3LjUgK2s9MC45OTk5ICt4XzA9MzA0ODAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjE0NFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9LTcwLjUgK2s9MC45OTk5ICt4XzA9MzA0ODAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjE0NVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9LTczLjUgK2s9MC45OTk5ICt4XzA9MzA0ODAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjE0NlwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9LTc2LjUgK2s9MC45OTk5ICt4XzA9MzA0ODAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjE0N1wiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9LTc5LjUgK2s9MC45OTk5ICt4XzA9MzA0ODAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjE0OFwiOicrcHJvaj11dG0gK3pvbmU9MjEgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIxNDlcIjonK3Byb2o9dXRtICt6b25lPTE4ICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMTUwXCI6Jytwcm9qPXV0bSArem9uZT0xNyArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjE1MVwiOicrcHJvaj11dG0gK3pvbmU9MTMgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIxNTJcIjonK3Byb2o9dXRtICt6b25lPTEyICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMTUzXCI6Jytwcm9qPXV0bSArem9uZT0xMSArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjE1NFwiOicrcHJvaj1sY2MgK2xhdF8xPTQ5ICtsYXRfMj00NCArbGF0XzA9NDYuNSArbG9uXzA9MyAreF8wPTcwMDAwMCAreV8wPTY2MDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIxNTVcIjonK3Byb2o9bGNjICtsYXRfMT0tMTQuMjY2NjY2NjY2NjY2NjcgK2xhdF8wPS0xNC4yNjY2NjY2NjY2NjY2NyArbG9uXzA9MTcwICtrXzA9MSAreF8wPTE1MjQwMC4zMDQ4MDA2MDk2ICt5XzA9MCArZWxscHM9Y2xyazY2ICt0b3dnczg0PS0xMTUsMTE4LDQyNiwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjE1NlwiOicrcHJvaj11dG0gK3pvbmU9NTkgK3NvdXRoICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMTU3XCI6Jytwcm9qPXRtZXJjICtsYXRfMD01My41ICtsb25fMD0tOCAraz0wLjk5OTgyICt4XzA9NjAwMDAwICt5XzA9NzUwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMTU4XCI6Jytwcm9qPXV0bSArem9uZT0yOSArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjE1OVwiOicrcHJvaj10bWVyYyArbGF0XzA9Ni42NjY2NjY2NjY2NjY2NjcgK2xvbl8wPS0xMiAraz0xICt4XzA9MTUyMzk5Ljg1NTA5MDc1NDQgK3lfMD0wICthPTYzNzgzMDAgK2I9NjM1Njc1MS42ODkxODkxODkgK3RvX21ldGVyPTAuMzA0Nzk5NzEwMTgxNTA4OCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjE2MFwiOicrcHJvaj10bWVyYyArbGF0XzA9Ni42NjY2NjY2NjY2NjY2NjcgK2xvbl8wPS0xMiAraz0xICt4XzA9MjQzODM5Ljc2ODE0NTIwNzEgK3lfMD0xODI4NzkuODI2MTA4OTA1MyArYT02Mzc4MzAwICtiPTYzNTY3NTEuNjg5MTg5MTg5ICt0b19tZXRlcj0wLjMwNDc5OTcxMDE4MTUwODggK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIxNjFcIjonK3Byb2o9dXRtICt6b25lPTI4ICtlbGxwcz1jbHJrODAgK3Rvd2dzODQ9LTg4LDQsMTAxLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIxNjJcIjonK3Byb2o9dXRtICt6b25lPTI5ICtlbGxwcz1jbHJrODAgK3Rvd2dzODQ9LTg4LDQsMTAxLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIxNjNcIjonK3Byb2o9bGFlYSArbGF0XzA9NDUgK2xvbl8wPS0xMDAgK3hfMD0wICt5XzA9MCArYT02MzcwOTk3ICtiPTYzNzA5OTcgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIxNjRcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPS01ICtrPTAuOTk5NiAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWNscms4MCArdG93Z3M4ND0tMTI1LDUzLDQ2NywwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMTY1XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0tNSAraz0wLjk5OTYgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1jbHJrODAgK3Rvd2dzODQ9LTEyNC43Niw1Myw0NjYuNzksMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjE2NlwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9OSAraz0xICt4XzA9MzUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTI2LC0xMjEsLTc4LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIxNjdcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTEyICtrPTEgK3hfMD00NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjYsLTEyMSwtNzgsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjE2OFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTUgK2s9MSAreF8wPTU1MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yNiwtMTIxLC03OCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMTY5XCI6Jytwcm9qPXRtZXJjICtsYXRfMD00OS44MzMzMzMzMzMzMzMzNCArbG9uXzA9Ni4xNjY2NjY2NjY2NjY2NjcgK2s9MSAreF8wPTgwMDAwICt5XzA9MTAwMDAwICtlbGxwcz1pbnRsICt0b3dnczg0PS0xODkuNjgxLDE4LjM0NjMsLTQyLjc2OTUsLTAuMzM3NDYsLTMuMDkyNjQsMi41Mzg2MSwwLjQ1OTggK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIxNzBcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTE1ICtrPTAuOTk5OSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWJlc3NlbCArdG93Z3M4ND01NzcuMzI2LDkwLjEyOSw0NjMuOTE5LDUuMTM3LDEuNDc0LDUuMjk3LDIuNDIzMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjE3MVwiOicrcHJvaj1zdGVyZWEgK2xhdF8wPTUwLjYyNSArbG9uXzA9MjEuMDgzMzMzMzMzMzMzMzMgK2s9MC45OTk4ICt4XzA9NDYzNzAwMCAreV8wPTU2NDcwMDAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTMzLjQsLTE0Ni42LC03Ni4zLC0wLjM1OSwtMC4wNTMsMC44NDQsLTAuODQgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIxNzJcIjonK3Byb2o9c3RlcmVhICtsYXRfMD01My4wMDE5NDQ0NDQ0NDQ0NSArbG9uXzA9MjEuNTAyNzc3Nzc3Nzc3NzggK2s9MC45OTk4ICt4XzA9NDYwMzAwMCAreV8wPTU4MDYwMDAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTMzLjQsLTE0Ni42LC03Ni4zLC0wLjM1OSwtMC4wNTMsMC44NDQsLTAuODQgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIxNzNcIjonK3Byb2o9c3RlcmVhICtsYXRfMD01My41ODMzMzMzMzMzMzMzNCArbG9uXzA9MTcuMDA4MzMzMzMzMzMzMzMgK2s9MC45OTk4ICt4XzA9MzUwMTAwMCAreV8wPTU5OTkwMDAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTMzLjQsLTE0Ni42LC03Ni4zLC0wLjM1OSwtMC4wNTMsMC44NDQsLTAuODQgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIxNzRcIjonK3Byb2o9c3RlcmVhICtsYXRfMD01MS42NzA4MzMzMzMzMzMzMyArbG9uXzA9MTYuNjcyMjIyMjIyMjIyMjIgK2s9MC45OTk4ICt4XzA9MzcwMzAwMCAreV8wPTU2MjcwMDAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTMzLjQsLTE0Ni42LC03Ni4zLC0wLjM1OSwtMC4wNTMsMC44NDQsLTAuODQgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIxNzVcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTE4Ljk1ODMzMzMzMzMzMzMzICtrPTAuOTk5OTgzICt4XzA9MjM3MDAwICt5XzA9LTQ3MDAwMDAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTMzLjQsLTE0Ni42LC03Ni4zLC0wLjM1OSwtMC4wNTMsMC44NDQsLTAuODQgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIxNzZcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTE1ICtrPTAuOTk5OTIzICt4XzA9NTUwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIxNzdcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTE4ICtrPTAuOTk5OTIzICt4XzA9NjUwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIxNzhcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTIxICtrPTAuOTk5OTIzICt4XzA9NzUwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIxNzlcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTI0ICtrPTAuOTk5OTIzICt4XzA9ODUwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIxODBcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTE5ICtrPTAuOTk5MyAreF8wPTUwMDAwMCAreV8wPS01MzAwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMTg4XCI6Jytwcm9qPXV0bSArem9uZT0yNSArZWxscHM9aW50bCArdG93Z3M4ND0tNDI1LC0xNjksODEsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjE4OVwiOicrcHJvaj11dG0gK3pvbmU9MjYgK2VsbHBzPWludGwgK3Rvd2dzODQ9LTEwNCwxNjcsLTM4LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIxOTBcIjonK3Byb2o9dXRtICt6b25lPTI2ICtlbGxwcz1pbnRsICt0b3dnczg0PS0yMDMsMTQxLDUzLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIxOTFcIjonK3Byb2o9dXRtICt6b25lPTI4ICtlbGxwcz1pbnRsICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMTkyXCI6Jytwcm9qPWxjYyArbGF0XzE9NDYuOCArbGF0XzA9NDYuOCArbG9uXzA9Mi4zMzcyMjkxNjY2NjY2NjcgK2tfMD0wLjk5OTg3NzQyICt4XzA9NjAwMDAwICt5XzA9MjIwMDAwMCArZWxscHM9aW50bCArdG93Z3M4ND0tODcsLTk4LC0xMjEsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjE5M1wiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTczICtrPTAuOTk5NiAreF8wPTE2MDAwMDAgK3lfMD0xMDAwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjE5NFwiOicrcHJvaj1sY2MgK2xhdF8xPS0xNC4yNjY2NjY2NjY2NjY2NyArbGF0XzA9LTE0LjI2NjY2NjY2NjY2NjY3ICtsb25fMD0tMTcwICtrXzA9MSAreF8wPTE1MjQwMC4zMDQ4MDA2MDk2ICt5XzA9MCArZWxscHM9Y2xyazY2ICt0b3dnczg0PS0xMTUsMTE4LDQyNiwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjE5NVwiOicrcHJvaj11dG0gK3pvbmU9MiArc291dGggK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIxOTZcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTkuNSAraz0wLjk5OTk1ICt4XzA9MjAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjE5N1wiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTIgK2s9MC45OTk5NSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIxOThcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTE1ICtrPTEgK3hfMD05MDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMTk5XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0yMSAraz0xICt4XzA9NDUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMjAwXCI6Jytwcm9qPXN0ZXJlYSArbGF0XzA9NDYuNSArbG9uXzA9LTY2LjUgK2s9MC45OTk5MTIgK3hfMD0zMDAwMDAgK3lfMD04MDAwMDAgK2E9NjM3ODEzNSArYj02MzU2NzUwLjMwNDkyMTU5NCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjIwMVwiOicrcHJvaj11dG0gK3pvbmU9MTggK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIyMDJcIjonK3Byb2o9dXRtICt6b25lPTE5ICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMjAzXCI6Jytwcm9qPXV0bSArem9uZT0yMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjIwNFwiOicrcHJvaj1sY2MgK2xhdF8xPTM1LjI1ICtsYXRfMj0zNi40MTY2NjY2NjY2NjY2NiArbGF0XzA9MzQuNjY2NjY2NjY2NjY2NjYgK2xvbl8wPS04NiAreF8wPTYwOTYwMS4yMTkyMDI0Mzg0ICt5XzA9MzA0ODAuMDYwOTYwMTIxOTIgK2RhdHVtPU5BRDI3ICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjIwNVwiOicrcHJvaj1sY2MgK2xhdF8xPTM3Ljk2NjY2NjY2NjY2NjY3ICtsYXRfMj0zOC45NjY2NjY2NjY2NjY2NyArbGF0XzA9MzcuNSArbG9uXzA9LTg0LjI1ICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjIwNlwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MjcgK2s9MSAreF8wPTk1MDAwMDAgK3lfMD0wICtlbGxwcz1pbnRsICt0b3dnczg0PS04NywtOTgsLTEyMSwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMjA3XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0zMCAraz0xICt4XzA9MTA1MDAwMDAgK3lfMD0wICtlbGxwcz1pbnRsICt0b3dnczg0PS04NywtOTgsLTEyMSwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMjA4XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0zMyAraz0xICt4XzA9MTE1MDAwMDAgK3lfMD0wICtlbGxwcz1pbnRsICt0b3dnczg0PS04NywtOTgsLTEyMSwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMjA5XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0zNiAraz0xICt4XzA9MTI1MDAwMDAgK3lfMD0wICtlbGxwcz1pbnRsICt0b3dnczg0PS04NywtOTgsLTEyMSwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMjEwXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0zOSAraz0xICt4XzA9MTM1MDAwMDAgK3lfMD0wICtlbGxwcz1pbnRsICt0b3dnczg0PS04NywtOTgsLTEyMSwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMjExXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD00MiAraz0xICt4XzA9MTQ1MDAwMDAgK3lfMD0wICtlbGxwcz1pbnRsICt0b3dnczg0PS04NywtOTgsLTEyMSwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMjEyXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD00NSAraz0xICt4XzA9MTU1MDAwMDAgK3lfMD0wICtlbGxwcz1pbnRsICt0b3dnczg0PS04NywtOTgsLTEyMSwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMjEzXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0zMCAraz0wLjk5OTYgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMjE0XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMC41ICtrPTAuOTk5ICt4XzA9MTAwMDAwMCAreV8wPTEwMDAwMDAgK2VsbHBzPWludGwgK3Rvd2dzODQ9LTIwNi4xLC0xNzQuNywtODcuNywwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMjE1XCI6Jytwcm9qPXV0bSArem9uZT0zMiArYT02Mzc4MjQ5LjIgK2I9NjM1NjUxNSArdG93Z3M4ND0tNzAuOSwtMTUxLjgsLTQxLjQsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjIxNlwiOicrcHJvaj11dG0gK3pvbmU9MjIgK2VsbHBzPWludGwgK3Rvd2dzODQ9MTY0LDEzOCwtMTg5LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIyMTdcIjonK3Byb2o9dXRtICt6b25lPTIzICtlbGxwcz1pbnRsICt0b3dnczg0PTE2NCwxMzgsLTE4OSwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMjE5XCI6Jytwcm9qPXV0bSArem9uZT0xOSArYT02Mzc4MTM1ICtiPTYzNTY3NTAuMzA0OTIxNTk0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMjIwXCI6Jytwcm9qPXV0bSArem9uZT0yMCArYT02Mzc4MTM1ICtiPTYzNTY3NTAuMzA0OTIxNTk0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMjIyXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0zMSArbG9uXzA9LTExMC4xNjY2NjY2NjY2NjY3ICtrPTAuOTk5OSAreF8wPTIxMzM2MCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzoyMjIzXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0zMSArbG9uXzA9LTExMS45MTY2NjY2NjY2NjY3ICtrPTAuOTk5OSAreF8wPTIxMzM2MCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzoyMjI0XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0zMSArbG9uXzA9LTExMy43NSAraz0wLjk5OTkzMzMzMyAreF8wPTIxMzM2MCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzoyMjI1XCI6Jytwcm9qPWxjYyArbGF0XzE9NDEuNjY2NjY2NjY2NjY2NjYgK2xhdF8yPTQwICtsYXRfMD0zOS4zMzMzMzMzMzMzMzMzNCArbG9uXzA9LTEyMiAreF8wPTIwMDAwMDAuMDAwMTAxNiAreV8wPTUwMDAwMC4wMDAxMDE2MDAxICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjIyNlwiOicrcHJvaj1sY2MgK2xhdF8xPTM5LjgzMzMzMzMzMzMzMzM0ICtsYXRfMj0zOC4zMzMzMzMzMzMzMzMzNCArbGF0XzA9MzcuNjY2NjY2NjY2NjY2NjYgK2xvbl8wPS0xMjIgK3hfMD0yMDAwMDAwLjAwMDEwMTYgK3lfMD01MDAwMDAuMDAwMTAxNjAwMSArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIyMjdcIjonK3Byb2o9bGNjICtsYXRfMT0zOC40MzMzMzMzMzMzMzMzMyArbGF0XzI9MzcuMDY2NjY2NjY2NjY2NjcgK2xhdF8wPTM2LjUgK2xvbl8wPS0xMjAuNSAreF8wPTIwMDAwMDAuMDAwMTAxNiAreV8wPTUwMDAwMC4wMDAxMDE2MDAxICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjIyOFwiOicrcHJvaj1sY2MgK2xhdF8xPTM3LjI1ICtsYXRfMj0zNiArbGF0XzA9MzUuMzMzMzMzMzMzMzMzMzQgK2xvbl8wPS0xMTkgK3hfMD0yMDAwMDAwLjAwMDEwMTYgK3lfMD01MDAwMDAuMDAwMTAxNjAwMSArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIyMjlcIjonK3Byb2o9bGNjICtsYXRfMT0zNS40NjY2NjY2NjY2NjY2NyArbGF0XzI9MzQuMDMzMzMzMzMzMzMzMzMgK2xhdF8wPTMzLjUgK2xvbl8wPS0xMTggK3hfMD0yMDAwMDAwLjAwMDEwMTYgK3lfMD01MDAwMDAuMDAwMTAxNjAwMSArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIyMzBcIjonK3Byb2o9bGNjICtsYXRfMT0zMy44ODMzMzMzMzMzMzMzMyArbGF0XzI9MzIuNzgzMzMzMzMzMzMzMzMgK2xhdF8wPTMyLjE2NjY2NjY2NjY2NjY2ICtsb25fMD0tMTE2LjI1ICt4XzA9MjAwMDAwMC4wMDAxMDE2ICt5XzA9NTAwMDAwLjAwMDEwMTYwMDEgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzoyMjMxXCI6Jytwcm9qPWxjYyArbGF0XzE9NDAuNzgzMzMzMzMzMzMzMzMgK2xhdF8yPTM5LjcxNjY2NjY2NjY2NjY3ICtsYXRfMD0zOS4zMzMzMzMzMzMzMzMzNCArbG9uXzA9LTEwNS41ICt4XzA9OTE0NDAxLjgyODgwMzY1NzYgK3lfMD0zMDQ4MDAuNjA5NjAxMjE5MiArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIyMzJcIjonK3Byb2o9bGNjICtsYXRfMT0zOS43NSArbGF0XzI9MzguNDUgK2xhdF8wPTM3LjgzMzMzMzMzMzMzMzM0ICtsb25fMD0tMTA1LjUgK3hfMD05MTQ0MDEuODI4ODAzNjU3NiAreV8wPTMwNDgwMC42MDk2MDEyMTkyICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjIzM1wiOicrcHJvaj1sY2MgK2xhdF8xPTM4LjQzMzMzMzMzMzMzMzMzICtsYXRfMj0zNy4yMzMzMzMzMzMzMzMzMyArbGF0XzA9MzYuNjY2NjY2NjY2NjY2NjYgK2xvbl8wPS0xMDUuNSAreF8wPTkxNDQwMS44Mjg4MDM2NTc2ICt5XzA9MzA0ODAwLjYwOTYwMTIxOTIgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzoyMjM0XCI6Jytwcm9qPWxjYyArbGF0XzE9NDEuODY2NjY2NjY2NjY2NjcgK2xhdF8yPTQxLjIgK2xhdF8wPTQwLjgzMzMzMzMzMzMzMzM0ICtsb25fMD0tNzIuNzUgK3hfMD0zMDQ4MDAuNjA5NjAxMjE5MiAreV8wPTE1MjQwMC4zMDQ4MDA2MDk2ICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjIzNVwiOicrcHJvaj10bWVyYyArbGF0XzA9MzggK2xvbl8wPS03NS40MTY2NjY2NjY2NjY2NyAraz0wLjk5OTk5NSAreF8wPTIwMDAwMC4wMDAxMDE2MDAyICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIyMzZcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTI0LjMzMzMzMzMzMzMzMzMzICtsb25fMD0tODEgK2s9MC45OTk5NDExNzcgK3hfMD0yMDAwMDAuMDAwMTAxNjAwMiAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzoyMjM3XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0yNC4zMzMzMzMzMzMzMzMzMyArbG9uXzA9LTgyICtrPTAuOTk5OTQxMTc3ICt4XzA9MjAwMDAwLjAwMDEwMTYwMDIgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjIzOFwiOicrcHJvaj1sY2MgK2xhdF8xPTMwLjc1ICtsYXRfMj0yOS41ODMzMzMzMzMzMzMzMyArbGF0XzA9MjkgK2xvbl8wPS04NC41ICt4XzA9NjAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIyMzlcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTMwICtsb25fMD0tODIuMTY2NjY2NjY2NjY2NjcgK2s9MC45OTk5ICt4XzA9MjAwMDAwLjAwMDEwMTYwMDIgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjI0MFwiOicrcHJvaj10bWVyYyArbGF0XzA9MzAgK2xvbl8wPS04NC4xNjY2NjY2NjY2NjY2NyAraz0wLjk5OTkgK3hfMD02OTk5OTkuOTk5ODk4Mzk5OCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzoyMjQxXCI6Jytwcm9qPXRtZXJjICtsYXRfMD00MS42NjY2NjY2NjY2NjY2NiArbG9uXzA9LTExMi4xNjY2NjY2NjY2NjY3ICtrPTAuOTk5OTQ3MzY3OTk5OTk5OSAreF8wPTIwMDAwMC4wMDAxMDE2MDAyICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIyNDJcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTQxLjY2NjY2NjY2NjY2NjY2ICtsb25fMD0tMTE0ICtrPTAuOTk5OTQ3MzY3OTk5OTk5OSAreF8wPTUwMDAwMC4wMDAxMDE2MDAxICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIyNDNcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTQxLjY2NjY2NjY2NjY2NjY2ICtsb25fMD0tMTE1Ljc1ICtrPTAuOTk5OTMzMzMzICt4XzA9ODAwMDAwLjAwMDEwMTYwMDEgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjI0NFwiOicrcHJvaj10bWVyYyArbGF0XzA9MzcuNSArbG9uXzA9LTg1LjY2NjY2NjY2NjY2NjY3ICtrPTAuOTk5OTY2NjY3ICt4XzA9OTk5OTkuOTk5ODk4Mzk5NzggK3lfMD0yNDkzNjQuOTk4NzI5OTk3NSArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIyNDVcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTM3LjUgK2xvbl8wPS04Ny4wODMzMzMzMzMzMzMzMyAraz0wLjk5OTk2NjY2NyAreF8wPTkwMDAwMCAreV8wPTI0OTM2NC45OTg3Mjk5OTc1ICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjI0NlwiOicrcHJvaj1sY2MgK2xhdF8xPTM3Ljk2NjY2NjY2NjY2NjY3ICtsYXRfMj0zOC45NjY2NjY2NjY2NjY2NyArbGF0XzA9MzcuNSArbG9uXzA9LTg0LjI1ICt4XzA9NTAwMDAwLjAwMDEwMTYwMDEgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjI0N1wiOicrcHJvaj1sY2MgK2xhdF8xPTM3LjkzMzMzMzMzMzMzMzMzICtsYXRfMj0zNi43MzMzMzMzMzMzMzMzMyArbGF0XzA9MzYuMzMzMzMzMzMzMzMzMzQgK2xvbl8wPS04NS43NSAreF8wPTUwMDAwMC4wMDAxMDE2MDAxICt5XzA9NTAwMDAwLjAwMDEwMTYwMDEgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzoyMjQ4XCI6Jytwcm9qPWxjYyArbGF0XzE9MzkuNDUgK2xhdF8yPTM4LjMgK2xhdF8wPTM3LjY2NjY2NjY2NjY2NjY2ICtsb25fMD0tNzcgK3hfMD0zOTk5OTkuOTk5ODk4Mzk5OCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzoyMjQ5XCI6Jytwcm9qPWxjYyArbGF0XzE9NDIuNjgzMzMzMzMzMzMzMzMgK2xhdF8yPTQxLjcxNjY2NjY2NjY2NjY3ICtsYXRfMD00MSArbG9uXzA9LTcxLjUgK3hfMD0yMDAwMDAuMDAwMTAxNjAwMiAreV8wPTc1MDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIyNTBcIjonK3Byb2o9bGNjICtsYXRfMT00MS40ODMzMzMzMzMzMzMzMyArbGF0XzI9NDEuMjgzMzMzMzMzMzMzMzMgK2xhdF8wPTQxICtsb25fMD0tNzAuNSAreF8wPTUwMDAwMC4wMDAxMDE2MDAxICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIyNTFcIjonK3Byb2o9bGNjICtsYXRfMT00Ny4wODMzMzMzMzMzMzMzNCArbGF0XzI9NDUuNDgzMzMzMzMzMzMzMzMgK2xhdF8wPTQ0Ljc4MzMzMzMzMzMzMzMzICtsb25fMD0tODcgK3hfMD03OTk5OTk5Ljk5OTk2ODAwMSAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzoyMjUyXCI6Jytwcm9qPWxjYyArbGF0XzE9NDUuNyArbGF0XzI9NDQuMTgzMzMzMzMzMzMzMzMgK2xhdF8wPTQzLjMxNjY2NjY2NjY2NjY3ICtsb25fMD0tODQuMzY2NjY2NjY2NjY2NjYgK3hfMD01OTk5OTk5Ljk5OTk3NjAwMSAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzoyMjUzXCI6Jytwcm9qPWxjYyArbGF0XzE9NDMuNjY2NjY2NjY2NjY2NjYgK2xhdF8yPTQyLjEgK2xhdF8wPTQxLjUgK2xvbl8wPS04NC4zNjY2NjY2NjY2NjY2NiAreF8wPTM5OTk5OTkuOTk5OTg0ICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9ZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIyNTRcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTI5LjUgK2xvbl8wPS04OC44MzMzMzMzMzMzMzMzMyAraz0wLjk5OTk1ICt4XzA9MzAwMDAwLjAwMDAwMDAwMDEgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjI1NVwiOicrcHJvaj10bWVyYyArbGF0XzA9MjkuNSArbG9uXzA9LTkwLjMzMzMzMzMzMzMzMzMzICtrPTAuOTk5OTUgK3hfMD02OTk5OTkuOTk5ODk4Mzk5OCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzoyMjU2XCI6Jytwcm9qPWxjYyArbGF0XzE9NDkgK2xhdF8yPTQ1ICtsYXRfMD00NC4yNSArbG9uXzA9LTEwOS41ICt4XzA9NTk5OTk5Ljk5OTk5NzYgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjI1N1wiOicrcHJvaj10bWVyYyArbGF0XzA9MzEgK2xvbl8wPS0xMDQuMzMzMzMzMzMzMzMzMyAraz0wLjk5OTkwOTA5MSAreF8wPTE2NTAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzoyMjU4XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0zMSArbG9uXzA9LTEwNi4yNSAraz0wLjk5OTkgK3hfMD01MDAwMDAuMDAwMTAxNjAwMSAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzoyMjU5XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0zMSArbG9uXzA9LTEwNy44MzMzMzMzMzMzMzMzICtrPTAuOTk5OTE2NjY3ICt4XzA9ODMwMDAwLjAwMDEwMTYwMDEgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjI2MFwiOicrcHJvaj10bWVyYyArbGF0XzA9MzguODMzMzMzMzMzMzMzMzQgK2xvbl8wPS03NC41ICtrPTAuOTk5OSAreF8wPTE1MDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzoyMjYxXCI6Jytwcm9qPXRtZXJjICtsYXRfMD00MCArbG9uXzA9LTc2LjU4MzMzMzMzMzMzMzMzICtrPTAuOTk5OTM3NSAreF8wPTI0OTk5OS45OTk4OTgzOTk4ICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIyNjJcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTQwICtsb25fMD0tNzguNTgzMzMzMzMzMzMzMzMgK2s9MC45OTk5Mzc1ICt4XzA9MzUwMDAwLjAwMDEwMTYwMDEgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjI2M1wiOicrcHJvaj1sY2MgK2xhdF8xPTQxLjAzMzMzMzMzMzMzMzMzICtsYXRfMj00MC42NjY2NjY2NjY2NjY2NiArbGF0XzA9NDAuMTY2NjY2NjY2NjY2NjYgK2xvbl8wPS03NCAreF8wPTMwMDAwMC4wMDAwMDAwMDAxICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIyNjRcIjonK3Byb2o9bGNjICtsYXRfMT0zNi4xNjY2NjY2NjY2NjY2NiArbGF0XzI9MzQuMzMzMzMzMzMzMzMzMzQgK2xhdF8wPTMzLjc1ICtsb25fMD0tNzkgK3hfMD02MDk2MDEuMjE5MjAyNDM4NCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzoyMjY1XCI6Jytwcm9qPWxjYyArbGF0XzE9NDguNzMzMzMzMzMzMzMzMzMgK2xhdF8yPTQ3LjQzMzMzMzMzMzMzMzMzICtsYXRfMD00NyArbG9uXzA9LTEwMC41ICt4XzA9NTk5OTk5Ljk5OTk5NzYgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjI2NlwiOicrcHJvaj1sY2MgK2xhdF8xPTQ3LjQ4MzMzMzMzMzMzMzMzICtsYXRfMj00Ni4xODMzMzMzMzMzMzMzMyArbGF0XzA9NDUuNjY2NjY2NjY2NjY2NjYgK2xvbl8wPS0xMDAuNSAreF8wPTU5OTk5OS45OTk5OTc2ICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9ZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIyNjdcIjonK3Byb2o9bGNjICtsYXRfMT0zNi43NjY2NjY2NjY2NjY2NyArbGF0XzI9MzUuNTY2NjY2NjY2NjY2NjcgK2xhdF8wPTM1ICtsb25fMD0tOTggK3hfMD02MDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjI2OFwiOicrcHJvaj1sY2MgK2xhdF8xPTM1LjIzMzMzMzMzMzMzMzMzICtsYXRfMj0zMy45MzMzMzMzMzMzMzMzMyArbGF0XzA9MzMuMzMzMzMzMzMzMzMzMzQgK2xvbl8wPS05OCAreF8wPTYwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzoyMjY5XCI6Jytwcm9qPWxjYyArbGF0XzE9NDYgK2xhdF8yPTQ0LjMzMzMzMzMzMzMzMzM0ICtsYXRfMD00My42NjY2NjY2NjY2NjY2NiArbG9uXzA9LTEyMC41ICt4XzA9MjUwMDAwMC4wMDAxNDI0ICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9ZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIyNzBcIjonK3Byb2o9bGNjICtsYXRfMT00NCArbGF0XzI9NDIuMzMzMzMzMzMzMzMzMzQgK2xhdF8wPTQxLjY2NjY2NjY2NjY2NjY2ICtsb25fMD0tMTIwLjUgK3hfMD0xNTAwMDAwLjAwMDE0NjQgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjI3MVwiOicrcHJvaj1sY2MgK2xhdF8xPTQxLjk1ICtsYXRfMj00MC44ODMzMzMzMzMzMzMzMyArbGF0XzA9NDAuMTY2NjY2NjY2NjY2NjYgK2xvbl8wPS03Ny43NSAreF8wPTYwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzoyMjcyXCI6Jytwcm9qPWxjYyArbGF0XzE9NDAuOTY2NjY2NjY2NjY2NjcgK2xhdF8yPTM5LjkzMzMzMzMzMzMzMzMzICtsYXRfMD0zOS4zMzMzMzMzMzMzMzMzNCArbG9uXzA9LTc3Ljc1ICt4XzA9NjAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIyNzNcIjonK3Byb2o9bGNjICtsYXRfMT0zNC44MzMzMzMzMzMzMzMzNCArbGF0XzI9MzIuNSArbGF0XzA9MzEuODMzMzMzMzMzMzMzMzMgK2xvbl8wPS04MSAreF8wPTYwOTYwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzoyMjc0XCI6Jytwcm9qPWxjYyArbGF0XzE9MzYuNDE2NjY2NjY2NjY2NjYgK2xhdF8yPTM1LjI1ICtsYXRfMD0zNC4zMzMzMzMzMzMzMzMzNCArbG9uXzA9LTg2ICt4XzA9NjAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIyNzVcIjonK3Byb2o9bGNjICtsYXRfMT0zNi4xODMzMzMzMzMzMzMzMyArbGF0XzI9MzQuNjUgK2xhdF8wPTM0ICtsb25fMD0tMTAxLjUgK3hfMD0yMDAwMDAuMDAwMTAxNjAwMiAreV8wPTk5OTk5OS45OTk4OTgzOTk4ICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjI3NlwiOicrcHJvaj1sY2MgK2xhdF8xPTMzLjk2NjY2NjY2NjY2NjY3ICtsYXRfMj0zMi4xMzMzMzMzMzMzMzMzMyArbGF0XzA9MzEuNjY2NjY2NjY2NjY2NjcgK2xvbl8wPS05OC41ICt4XzA9NjAwMDAwICt5XzA9MjAwMDAwMC4wMDAxMDE2ICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjI3N1wiOicrcHJvaj1sY2MgK2xhdF8xPTMxLjg4MzMzMzMzMzMzMzMzICtsYXRfMj0zMC4xMTY2NjY2NjY2NjY2NyArbGF0XzA9MjkuNjY2NjY2NjY2NjY2NjcgK2xvbl8wPS0xMDAuMzMzMzMzMzMzMzMzMyAreF8wPTY5OTk5OS45OTk4OTgzOTk4ICt5XzA9MzAwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIyNzhcIjonK3Byb2o9bGNjICtsYXRfMT0zMC4yODMzMzMzMzMzMzMzMyArbGF0XzI9MjguMzgzMzMzMzMzMzMzMzMgK2xhdF8wPTI3LjgzMzMzMzMzMzMzMzMzICtsb25fMD0tOTkgK3hfMD02MDAwMDAgK3lfMD0zOTk5OTk5Ljk5OTg5ODQgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzoyMjc5XCI6Jytwcm9qPWxjYyArbGF0XzE9MjcuODMzMzMzMzMzMzMzMzMgK2xhdF8yPTI2LjE2NjY2NjY2NjY2NjY3ICtsYXRfMD0yNS42NjY2NjY2NjY2NjY2NyArbG9uXzA9LTk4LjUgK3hfMD0zMDAwMDAuMDAwMDAwMDAwMSAreV8wPTUwMDAwMDAuMDAwMTAxNiArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIyODBcIjonK3Byb2o9bGNjICtsYXRfMT00MS43ODMzMzMzMzMzMzMzMyArbGF0XzI9NDAuNzE2NjY2NjY2NjY2NjcgK2xhdF8wPTQwLjMzMzMzMzMzMzMzMzM0ICtsb25fMD0tMTExLjUgK3hfMD01MDAwMDAuMDAwMTUwNCAreV8wPTk5OTk5OS45OTk5OTYwMDAxICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjI4MVwiOicrcHJvaj1sY2MgK2xhdF8xPTQwLjY1ICtsYXRfMj0zOS4wMTY2NjY2NjY2NjY2NyArbGF0XzA9MzguMzMzMzMzMzMzMzMzMzQgK2xvbl8wPS0xMTEuNSAreF8wPTUwMDAwMC4wMDAxNTA0ICt5XzA9MTk5OTk5OS45OTk5OTIgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzoyMjgyXCI6Jytwcm9qPWxjYyArbGF0XzE9MzguMzUgK2xhdF8yPTM3LjIxNjY2NjY2NjY2NjY3ICtsYXRfMD0zNi42NjY2NjY2NjY2NjY2NiArbG9uXzA9LTExMS41ICt4XzA9NTAwMDAwLjAwMDE1MDQgK3lfMD0yOTk5OTk5Ljk5OTk4OCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9ZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIyODNcIjonK3Byb2o9bGNjICtsYXRfMT0zOS4yICtsYXRfMj0zOC4wMzMzMzMzMzMzMzMzMyArbGF0XzA9MzcuNjY2NjY2NjY2NjY2NjYgK2xvbl8wPS03OC41ICt4XzA9MzUwMDAwMC4wMDAxMDE2ICt5XzA9MjAwMDAwMC4wMDAxMDE2ICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjI4NFwiOicrcHJvaj1sY2MgK2xhdF8xPTM3Ljk2NjY2NjY2NjY2NjY3ICtsYXRfMj0zNi43NjY2NjY2NjY2NjY2NyArbGF0XzA9MzYuMzMzMzMzMzMzMzMzMzQgK2xvbl8wPS03OC41ICt4XzA9MzUwMDAwMC4wMDAxMDE2ICt5XzA9OTk5OTk5Ljk5OTg5ODM5OTggK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzoyMjg1XCI6Jytwcm9qPWxjYyArbGF0XzE9NDguNzMzMzMzMzMzMzMzMzMgK2xhdF8yPTQ3LjUgK2xhdF8wPTQ3ICtsb25fMD0tMTIwLjgzMzMzMzMzMzMzMzMgK3hfMD01MDAwMDAuMDAwMTAxNjAwMSAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzoyMjg2XCI6Jytwcm9qPWxjYyArbGF0XzE9NDcuMzMzMzMzMzMzMzMzMzQgK2xhdF8yPTQ1LjgzMzMzMzMzMzMzMzM0ICtsYXRfMD00NS4zMzMzMzMzMzMzMzMzNCArbG9uXzA9LTEyMC41ICt4XzA9NTAwMDAwLjAwMDEwMTYwMDEgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjI4N1wiOicrcHJvaj1sY2MgK2xhdF8xPTQ2Ljc2NjY2NjY2NjY2NjY3ICtsYXRfMj00NS41NjY2NjY2NjY2NjY2NyArbGF0XzA9NDUuMTY2NjY2NjY2NjY2NjYgK2xvbl8wPS05MCAreF8wPTYwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzoyMjg4XCI6Jytwcm9qPWxjYyArbGF0XzE9NDUuNSArbGF0XzI9NDQuMjUgK2xhdF8wPTQzLjgzMzMzMzMzMzMzMzM0ICtsb25fMD0tOTAgK3hfMD02MDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjI4OVwiOicrcHJvaj1sY2MgK2xhdF8xPTQ0LjA2NjY2NjY2NjY2NjY3ICtsYXRfMj00Mi43MzMzMzMzMzMzMzMzMyArbGF0XzA9NDIgK2xvbl8wPS05MCAreF8wPTYwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzoyMjkwXCI6Jytwcm9qPXN0ZXJlYSArbGF0XzA9NDcuMjUgK2xvbl8wPS02MyAraz0wLjk5OTkxMiAreF8wPTcwMDAwMCAreV8wPTQwMDAwMCArYT02Mzc4MTM1ICtiPTYzNTY3NTAuMzA0OTIxNTk0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMjkxXCI6Jytwcm9qPXN0ZXJlYSArbGF0XzA9NDcuMjUgK2xvbl8wPS02MyAraz0wLjk5OTkxMiAreF8wPTQwMDAwMCAreV8wPTgwMDAwMCArYT02Mzc4MTM1ICtiPTYzNTY3NTAuMzA0OTIxNTk0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMjkyXCI6Jytwcm9qPXN0ZXJlYSArbGF0XzA9NDcuMjUgK2xvbl8wPS02MyAraz0wLjk5OTkxMiAreF8wPTQwMDAwMCAreV8wPTgwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjI5NFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9LTYxLjUgK2s9MC45OTk5ICt4XzA9NDUwMDAwMCAreV8wPTAgK2E9NjM3ODEzNSArYj02MzU2NzUwLjMwNDkyMTU5NCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjI5NVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9LTY0LjUgK2s9MC45OTk5ICt4XzA9NTUwMDAwMCAreV8wPTAgK2E9NjM3ODEzNSArYj02MzU2NzUwLjMwNDkyMTU5NCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjMwOFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTA5ICtrPTAuOTk5NiAreF8wPTUwMDAwMCAreV8wPTEwMDAwMDAwICtlbGxwcz1iZXNzZWwgK3Rvd2dzODQ9LTM3Nyw2ODEsLTUwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIzMDlcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTExNiAraz0wLjk5OTYgK3hfMD01MDAwMDAgK3lfMD0xMDAwMDAwMCArZGF0dW09V0dTODQgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIzMTBcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTEzMiAraz0wLjk5OTYgK3hfMD01MDAwMDAgK3lfMD0xMDAwMDAwMCArZGF0dW09V0dTODQgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIzMTFcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTYgK2s9MC45OTk2ICt4XzA9NTAwMDAwICt5XzA9MCArZGF0dW09V0dTODQgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIzMTJcIjonK3Byb2o9dXRtICt6b25lPTMzICtlbGxwcz1jbHJrODAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIzMTNcIjonK3Byb2o9dXRtICt6b25lPTMzICtlbGxwcz1jbHJrODAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIzMTRcIjonK3Byb2o9Y2FzcyArbGF0XzA9MTAuNDQxNjY2NjY2NjY2NjcgK2xvbl8wPS02MS4zMzMzMzMzMzMzMzMzNCAreF8wPTg2NTAxLjQ2MzkyMDUyMDAxICt5XzA9NjUzNzkuMDEzNDI4MyArYT02Mzc4MjkzLjY0NTIwODc1OSArYj02MzU2NjE3Ljk4NzY3OTgzOCArdG93Z3M4ND0tNjEuNzAyLDI4NC40ODgsNDcyLjA1MiwwLDAsMCwwICt0b19tZXRlcj0wLjMwNDc5NzI2NTQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIzMTVcIjonK3Byb2o9dXRtICt6b25lPTE5ICtzb3V0aCArZWxscHM9aW50bCArdG93Z3M4ND0tMTQ4LDEzNiw5MCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMzE2XCI6Jytwcm9qPXV0bSArem9uZT0yMCArc291dGggK2VsbHBzPWludGwgK3Rvd2dzODQ9LTE0OCwxMzYsOTAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjMxN1wiOicrcHJvaj1sY2MgK2xhdF8xPTkgK2xhdF8yPTMgK2xhdF8wPTYgK2xvbl8wPS02NiAreF8wPTEwMDAwMDAgK3lfMD0xMDAwMDAwICtlbGxwcz1pbnRsICt0b3dnczg0PS0yODgsMTc1LC0zNzYsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjMxOFwiOicrcHJvaj1sY2MgK2xhdF8xPTE3ICtsYXRfMj0zMyArbGF0XzA9MjUuMDg5NTEgK2xvbl8wPTQ4ICt4XzA9MCAreV8wPTAgK2VsbHBzPWludGwgK3Rvd2dzODQ9LTE0MywtMjM2LDcsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjMxOVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MjcgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWludGwgK3Rvd2dzODQ9LTg3LC05OCwtMTIxLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIzMjBcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTMwICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1pbnRsICt0b3dnczg0PS04NywtOTgsLTEyMSwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMzIxXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0zMyAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9aW50bCArdG93Z3M4ND0tODcsLTk4LC0xMjEsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjMyMlwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MzYgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWludGwgK3Rvd2dzODQ9LTg3LC05OCwtMTIxLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIzMjNcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTM5ICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1pbnRsICt0b3dnczg0PS04NywtOTgsLTEyMSwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMzI0XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD00MiAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9aW50bCArdG93Z3M4ND0tODcsLTk4LC0xMjEsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjMyNVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9NDUgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWludGwgK3Rvd2dzODQ9LTg3LC05OCwtMTIxLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIzMjZcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTIyLjMxMjEzMzMzMzMzMzM0ICtsb25fMD0xMTQuMTc4NTU1NTU1NTU1NiAraz0xICt4XzA9ODM2Njk0LjA1ICt5XzA9ODE5MDY5LjggK2VsbHBzPWludGwgK3Rvd2dzODQ9LTE2Mi42MTksLTI3Ni45NTksLTE2MS43NjQsMC4wNjc3NTMsLTIuMjQzNjUsLTEuMTU4ODMsLTEuMDk0MjUgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIzMjdcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTc1ICtrPTEgK3hfMD0xMzUwMDAwMCAreV8wPTAgK2E9NjM3ODE0MCArYj02MzU2NzU1LjI4ODE1NzUyOCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjMyOFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9ODEgK2s9MSAreF8wPTE0NTAwMDAwICt5XzA9MCArYT02Mzc4MTQwICtiPTYzNTY3NTUuMjg4MTU3NTI4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMzI5XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD04NyAraz0xICt4XzA9MTU1MDAwMDAgK3lfMD0wICthPTYzNzgxNDAgK2I9NjM1Njc1NS4yODgxNTc1MjggK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIzMzBcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTkzICtrPTEgK3hfMD0xNjUwMDAwMCAreV8wPTAgK2E9NjM3ODE0MCArYj02MzU2NzU1LjI4ODE1NzUyOCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjMzMVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9OTkgK2s9MSAreF8wPTE3NTAwMDAwICt5XzA9MCArYT02Mzc4MTQwICtiPTYzNTY3NTUuMjg4MTU3NTI4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMzMyXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMDUgK2s9MSAreF8wPTE4NTAwMDAwICt5XzA9MCArYT02Mzc4MTQwICtiPTYzNTY3NTUuMjg4MTU3NTI4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMzMzXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMTEgK2s9MSAreF8wPTE5NTAwMDAwICt5XzA9MCArYT02Mzc4MTQwICtiPTYzNTY3NTUuMjg4MTU3NTI4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMzM0XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMTcgK2s9MSAreF8wPTIwNTAwMDAwICt5XzA9MCArYT02Mzc4MTQwICtiPTYzNTY3NTUuMjg4MTU3NTI4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMzM1XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMjMgK2s9MSAreF8wPTIxNTAwMDAwICt5XzA9MCArYT02Mzc4MTQwICtiPTYzNTY3NTUuMjg4MTU3NTI4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMzM2XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMjkgK2s9MSAreF8wPTIyNTAwMDAwICt5XzA9MCArYT02Mzc4MTQwICtiPTYzNTY3NTUuMjg4MTU3NTI4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMzM3XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMzUgK2s9MSAreF8wPTIzNTAwMDAwICt5XzA9MCArYT02Mzc4MTQwICtiPTYzNTY3NTUuMjg4MTU3NTI4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMzM4XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD03NSAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArYT02Mzc4MTQwICtiPTYzNTY3NTUuMjg4MTU3NTI4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMzM5XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD04MSAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArYT02Mzc4MTQwICtiPTYzNTY3NTUuMjg4MTU3NTI4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMzQwXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD04NyAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArYT02Mzc4MTQwICtiPTYzNTY3NTUuMjg4MTU3NTI4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMzQxXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD05MyAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArYT02Mzc4MTQwICtiPTYzNTY3NTUuMjg4MTU3NTI4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMzQyXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD05OSAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArYT02Mzc4MTQwICtiPTYzNTY3NTUuMjg4MTU3NTI4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMzQzXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMDUgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2E9NjM3ODE0MCArYj02MzU2NzU1LjI4ODE1NzUyOCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjM0NFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTExICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICthPTYzNzgxNDAgK2I9NjM1Njc1NS4yODgxNTc1MjggK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIzNDVcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTExNyAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArYT02Mzc4MTQwICtiPTYzNTY3NTUuMjg4MTU3NTI4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMzQ2XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMjMgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2E9NjM3ODE0MCArYj02MzU2NzU1LjI4ODE1NzUyOCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjM0N1wiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTI5ICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICthPTYzNzgxNDAgK2I9NjM1Njc1NS4yODgxNTc1MjggK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIzNDhcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTEzNSAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArYT02Mzc4MTQwICtiPTYzNTY3NTUuMjg4MTU3NTI4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMzQ5XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD03NSAraz0xICt4XzA9MjU1MDAwMDAgK3lfMD0wICthPTYzNzgxNDAgK2I9NjM1Njc1NS4yODgxNTc1MjggK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIzNTBcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTc4ICtrPTEgK3hfMD0yNjUwMDAwMCAreV8wPTAgK2E9NjM3ODE0MCArYj02MzU2NzU1LjI4ODE1NzUyOCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjM1MVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9ODEgK2s9MSAreF8wPTI3NTAwMDAwICt5XzA9MCArYT02Mzc4MTQwICtiPTYzNTY3NTUuMjg4MTU3NTI4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMzUyXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD04NCAraz0xICt4XzA9Mjg1MDAwMDAgK3lfMD0wICthPTYzNzgxNDAgK2I9NjM1Njc1NS4yODgxNTc1MjggK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIzNTNcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTg3ICtrPTEgK3hfMD0yOTUwMDAwMCAreV8wPTAgK2E9NjM3ODE0MCArYj02MzU2NzU1LjI4ODE1NzUyOCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjM1NFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9OTAgK2s9MSAreF8wPTMwNTAwMDAwICt5XzA9MCArYT02Mzc4MTQwICtiPTYzNTY3NTUuMjg4MTU3NTI4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMzU1XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD05MyAraz0xICt4XzA9MzE1MDAwMDAgK3lfMD0wICthPTYzNzgxNDAgK2I9NjM1Njc1NS4yODgxNTc1MjggK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIzNTZcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTk2ICtrPTEgK3hfMD0zMjUwMDAwMCAreV8wPTAgK2E9NjM3ODE0MCArYj02MzU2NzU1LjI4ODE1NzUyOCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjM1N1wiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9OTkgK2s9MSAreF8wPTMzNTAwMDAwICt5XzA9MCArYT02Mzc4MTQwICtiPTYzNTY3NTUuMjg4MTU3NTI4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMzU4XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMDIgK2s9MSAreF8wPTM0NTAwMDAwICt5XzA9MCArYT02Mzc4MTQwICtiPTYzNTY3NTUuMjg4MTU3NTI4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMzU5XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMDUgK2s9MSAreF8wPTM1NTAwMDAwICt5XzA9MCArYT02Mzc4MTQwICtiPTYzNTY3NTUuMjg4MTU3NTI4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMzYwXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMDggK2s9MSAreF8wPTM2NTAwMDAwICt5XzA9MCArYT02Mzc4MTQwICtiPTYzNTY3NTUuMjg4MTU3NTI4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMzYxXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMTEgK2s9MSAreF8wPTM3NTAwMDAwICt5XzA9MCArYT02Mzc4MTQwICtiPTYzNTY3NTUuMjg4MTU3NTI4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMzYyXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMTQgK2s9MSAreF8wPTM4NTAwMDAwICt5XzA9MCArYT02Mzc4MTQwICtiPTYzNTY3NTUuMjg4MTU3NTI4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMzYzXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMTcgK2s9MSAreF8wPTM5NTAwMDAwICt5XzA9MCArYT02Mzc4MTQwICtiPTYzNTY3NTUuMjg4MTU3NTI4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMzY0XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMjAgK2s9MSAreF8wPTQwNTAwMDAwICt5XzA9MCArYT02Mzc4MTQwICtiPTYzNTY3NTUuMjg4MTU3NTI4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMzY1XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMjMgK2s9MSAreF8wPTQxNTAwMDAwICt5XzA9MCArYT02Mzc4MTQwICtiPTYzNTY3NTUuMjg4MTU3NTI4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMzY2XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMjYgK2s9MSAreF8wPTQyNTAwMDAwICt5XzA9MCArYT02Mzc4MTQwICtiPTYzNTY3NTUuMjg4MTU3NTI4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMzY3XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMjkgK2s9MSAreF8wPTQzNTAwMDAwICt5XzA9MCArYT02Mzc4MTQwICtiPTYzNTY3NTUuMjg4MTU3NTI4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMzY4XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMzIgK2s9MSAreF8wPTQ0NTAwMDAwICt5XzA9MCArYT02Mzc4MTQwICtiPTYzNTY3NTUuMjg4MTU3NTI4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMzY5XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMzUgK2s9MSAreF8wPTQ1NTAwMDAwICt5XzA9MCArYT02Mzc4MTQwICtiPTYzNTY3NTUuMjg4MTU3NTI4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMzcwXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD03NSAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArYT02Mzc4MTQwICtiPTYzNTY3NTUuMjg4MTU3NTI4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMzcxXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD03OCAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArYT02Mzc4MTQwICtiPTYzNTY3NTUuMjg4MTU3NTI4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMzcyXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD04MSAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArYT02Mzc4MTQwICtiPTYzNTY3NTUuMjg4MTU3NTI4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMzczXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD04NCAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArYT02Mzc4MTQwICtiPTYzNTY3NTUuMjg4MTU3NTI4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMzc0XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD04NyAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArYT02Mzc4MTQwICtiPTYzNTY3NTUuMjg4MTU3NTI4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMzc1XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD05MCAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArYT02Mzc4MTQwICtiPTYzNTY3NTUuMjg4MTU3NTI4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMzc2XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD05MyAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArYT02Mzc4MTQwICtiPTYzNTY3NTUuMjg4MTU3NTI4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMzc3XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD05NiAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArYT02Mzc4MTQwICtiPTYzNTY3NTUuMjg4MTU3NTI4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMzc4XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD05OSAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArYT02Mzc4MTQwICtiPTYzNTY3NTUuMjg4MTU3NTI4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMzc5XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMDIgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2E9NjM3ODE0MCArYj02MzU2NzU1LjI4ODE1NzUyOCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjM4MFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTA1ICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICthPTYzNzgxNDAgK2I9NjM1Njc1NS4yODgxNTc1MjggK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIzODFcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTEwOCAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArYT02Mzc4MTQwICtiPTYzNTY3NTUuMjg4MTU3NTI4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMzgyXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMTEgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2E9NjM3ODE0MCArYj02MzU2NzU1LjI4ODE1NzUyOCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjM4M1wiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTE0ICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICthPTYzNzgxNDAgK2I9NjM1Njc1NS4yODgxNTc1MjggK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIzODRcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTExNyAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArYT02Mzc4MTQwICtiPTYzNTY3NTUuMjg4MTU3NTI4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMzg1XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMjAgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2E9NjM3ODE0MCArYj02MzU2NzU1LjI4ODE1NzUyOCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjM4NlwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTIzICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICthPTYzNzgxNDAgK2I9NjM1Njc1NS4yODgxNTc1MjggK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIzODdcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTEyNiAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArYT02Mzc4MTQwICtiPTYzNTY3NTUuMjg4MTU3NTI4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMzg4XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMjkgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2E9NjM3ODE0MCArYj02MzU2NzU1LjI4ODE1NzUyOCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjM4OVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTMyICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICthPTYzNzgxNDAgK2I9NjM1Njc1NS4yODgxNTc1MjggK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIzOTBcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTEzNSAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArYT02Mzc4MTQwICtiPTYzNTY3NTUuMjg4MTU3NTI4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMzkxXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0yMSAraz0xICt4XzA9MTUwMDAwMCAreV8wPTAgK2VsbHBzPWludGwgK3Rvd2dzODQ9LTk2LjA2MiwtODIuNDI4LC0xMjEuNzUzLDQuODAxLDAuMzQ1LC0xLjM3NiwxLjQ5NiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjM5MlwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MjQgK2s9MSAreF8wPTI1MDAwMDAgK3lfMD0wICtlbGxwcz1pbnRsICt0b3dnczg0PS05Ni4wNjIsLTgyLjQyOCwtMTIxLjc1Myw0LjgwMSwwLjM0NSwtMS4zNzYsMS40OTYgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIzOTNcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTI3ICtrPTEgK3hfMD0zNTAwMDAwICt5XzA9MCArZWxscHM9aW50bCArdG93Z3M4ND0tOTYuMDYyLC04Mi40MjgsLTEyMS43NTMsNC44MDEsMC4zNDUsLTEuMzc2LDEuNDk2ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMzk0XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0zMCAraz0xICt4XzA9NDUwMDAwMCAreV8wPTAgK2VsbHBzPWludGwgK3Rvd2dzODQ9LTk2LjA2MiwtODIuNDI4LC0xMjEuNzUzLDQuODAxLDAuMzQ1LC0xLjM3NiwxLjQ5NiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjM5NVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9NDUgK2s9MSAreF8wPTg1MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0tNzYsLTEzOCw2NywwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMzk2XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD01MSAraz0xICt4XzA9OTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PS03NiwtMTM4LDY3LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIzOTdcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTkgK2s9MSAreF8wPTM1MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yNiwtMTIxLC03OCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMzk4XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMiAraz0xICt4XzA9NDUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTI2LC0xMjEsLTc4LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIzOTlcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTE1ICtrPTEgK3hfMD01NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjYsLTEyMSwtNzgsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjQwMFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTUuODA4Mjc3Nzc3Nzc3NzggK2s9MSAreF8wPTE1MDAwMDAgK3lfMD0wICtlbGxwcz1iZXNzZWwgK3Rvd2dzODQ9NDE0LjEsNDEuMyw2MDMuMSwtMC44NTUsMi4xNDEsLTcuMDIzLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI0MDFcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTc1ICtrPTEgK3hfMD0yNTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTE1LjgsLTE1NC40LC04Mi4zLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI0MDJcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTc4ICtrPTEgK3hfMD0yNjUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTE1LjgsLTE1NC40LC04Mi4zLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI0MDNcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTgxICtrPTEgK3hfMD0yNzUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTE1LjgsLTE1NC40LC04Mi4zLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI0MDRcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTg0ICtrPTEgK3hfMD0yODUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTE1LjgsLTE1NC40LC04Mi4zLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI0MDVcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTg3ICtrPTEgK3hfMD0yOTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTE1LjgsLTE1NC40LC04Mi4zLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI0MDZcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTkwICtrPTEgK3hfMD0zMDUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTE1LjgsLTE1NC40LC04Mi4zLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI0MDdcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTkzICtrPTEgK3hfMD0zMTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTE1LjgsLTE1NC40LC04Mi4zLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI0MDhcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTk2ICtrPTEgK3hfMD0zMjUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTE1LjgsLTE1NC40LC04Mi4zLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI0MDlcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTk5ICtrPTEgK3hfMD0zMzUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTE1LjgsLTE1NC40LC04Mi4zLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI0MTBcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTEwMiAraz0xICt4XzA9MzQ1MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0xNS44LC0xNTQuNCwtODIuMywwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNDExXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMDUgK2s9MSAreF8wPTM1NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MTUuOCwtMTU0LjQsLTgyLjMsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjQxMlwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTA4ICtrPTEgK3hfMD0zNjUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTE1LjgsLTE1NC40LC04Mi4zLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI0MTNcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTExMSAraz0xICt4XzA9Mzc1MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0xNS44LC0xNTQuNCwtODIuMywwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNDE0XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMTQgK2s9MSAreF8wPTM4NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MTUuOCwtMTU0LjQsLTgyLjMsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjQxNVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTE3ICtrPTEgK3hfMD0zOTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTE1LjgsLTE1NC40LC04Mi4zLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI0MTZcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTEyMCAraz0xICt4XzA9NDA1MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0xNS44LC0xNTQuNCwtODIuMywwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNDE3XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMjMgK2s9MSAreF8wPTQxNTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MTUuOCwtMTU0LjQsLTgyLjMsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjQxOFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTI2ICtrPTEgK3hfMD00MjUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTE1LjgsLTE1NC40LC04Mi4zLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI0MTlcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTEyOSAraz0xICt4XzA9NDM1MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0xNS44LC0xNTQuNCwtODIuMywwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNDIwXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMzIgK2s9MSAreF8wPTQ0NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MTUuOCwtMTU0LjQsLTgyLjMsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjQyMVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTM1ICtrPTEgK3hfMD00NTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTE1LjgsLTE1NC40LC04Mi4zLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI0MjJcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTc1ICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0xNS44LC0xNTQuNCwtODIuMywwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNDIzXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD03OCAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MTUuOCwtMTU0LjQsLTgyLjMsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjQyNFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9ODEgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTE1LjgsLTE1NC40LC04Mi4zLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI0MjVcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTg0ICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0xNS44LC0xNTQuNCwtODIuMywwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNDI2XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD04NyAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MTUuOCwtMTU0LjQsLTgyLjMsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjQyN1wiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9OTAgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTE1LjgsLTE1NC40LC04Mi4zLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI0MjhcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTkzICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0xNS44LC0xNTQuNCwtODIuMywwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNDI5XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD05NiAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MTUuOCwtMTU0LjQsLTgyLjMsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjQzMFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9OTkgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTE1LjgsLTE1NC40LC04Mi4zLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI0MzFcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTEwMiAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MTUuOCwtMTU0LjQsLTgyLjMsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjQzMlwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTA1ICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0xNS44LC0xNTQuNCwtODIuMywwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNDMzXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMDggK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTE1LjgsLTE1NC40LC04Mi4zLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI0MzRcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTExMSAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MTUuOCwtMTU0LjQsLTgyLjMsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjQzNVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTE0ICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0xNS44LC0xNTQuNCwtODIuMywwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNDM2XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMTcgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTE1LjgsLTE1NC40LC04Mi4zLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI0MzdcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTEyMCAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MTUuOCwtMTU0LjQsLTgyLjMsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjQzOFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTIzICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0xNS44LC0xNTQuNCwtODIuMywwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNDM5XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMjYgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTE1LjgsLTE1NC40LC04Mi4zLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI0NDBcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTEyOSAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MTUuOCwtMTU0LjQsLTgyLjMsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjQ0MVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTMyICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0xNS44LC0xNTQuNCwtODIuMywwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNDQyXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMzUgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTE1LjgsLTE1NC40LC04Mi4zLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI0NDNcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTMzICtsb25fMD0xMjkuNSAraz0wLjk5OTkgK3hfMD0wICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjQ0NFwiOicrcHJvaj10bWVyYyArbGF0XzA9MzMgK2xvbl8wPTEzMSAraz0wLjk5OTkgK3hfMD0wICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjQ0NVwiOicrcHJvaj10bWVyYyArbGF0XzA9MzYgK2xvbl8wPTEzMi4xNjY2NjY2NjY2NjY3ICtrPTAuOTk5OSAreF8wPTAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNDQ2XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0zMyArbG9uXzA9MTMzLjUgK2s9MC45OTk5ICt4XzA9MCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI0NDdcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTM2ICtsb25fMD0xMzQuMzMzMzMzMzMzMzMzMyAraz0wLjk5OTkgK3hfMD0wICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjQ0OFwiOicrcHJvaj10bWVyYyArbGF0XzA9MzYgK2xvbl8wPTEzNiAraz0wLjk5OTkgK3hfMD0wICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjQ0OVwiOicrcHJvaj10bWVyYyArbGF0XzA9MzYgK2xvbl8wPTEzNy4xNjY2NjY2NjY2NjY3ICtrPTAuOTk5OSAreF8wPTAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNDUwXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0zNiArbG9uXzA9MTM4LjUgK2s9MC45OTk5ICt4XzA9MCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI0NTFcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTM2ICtsb25fMD0xMzkuODMzMzMzMzMzMzMzMyAraz0wLjk5OTkgK3hfMD0wICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjQ1MlwiOicrcHJvaj10bWVyYyArbGF0XzA9NDAgK2xvbl8wPTE0MC44MzMzMzMzMzMzMzMzICtrPTAuOTk5OSAreF8wPTAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNDUzXCI6Jytwcm9qPXRtZXJjICtsYXRfMD00NCArbG9uXzA9MTQwLjI1ICtrPTAuOTk5OSAreF8wPTAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNDU0XCI6Jytwcm9qPXRtZXJjICtsYXRfMD00NCArbG9uXzA9MTQyLjI1ICtrPTAuOTk5OSAreF8wPTAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNDU1XCI6Jytwcm9qPXRtZXJjICtsYXRfMD00NCArbG9uXzA9MTQ0LjI1ICtrPTAuOTk5OSAreF8wPTAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNDU2XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0yNiArbG9uXzA9MTQyICtrPTAuOTk5OSAreF8wPTAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNDU3XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0yNiArbG9uXzA9MTI3LjUgK2s9MC45OTk5ICt4XzA9MCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI0NThcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTI2ICtsb25fMD0xMjQgK2s9MC45OTk5ICt4XzA9MCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI0NTlcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTI2ICtsb25fMD0xMzEgK2s9MC45OTk5ICt4XzA9MCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI0NjBcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTIwICtsb25fMD0xMzYgK2s9MC45OTk5ICt4XzA9MCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI0NjFcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTI2ICtsb25fMD0xNTQgK2s9MC45OTk5ICt4XzA9MCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI0NjJcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTIxICtrPTEgK3hfMD00NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI0NjNcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTIxICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yNC40NywtMTMwLjg5LC04MS41NiwtMCwtMCwwLjEzLC0wLjIyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNDY0XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0yNyAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjQuNDcsLTEzMC44OSwtODEuNTYsLTAsLTAsMC4xMywtMC4yMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjQ2NVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MzMgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTI0LjQ3LC0xMzAuODksLTgxLjU2LC0wLC0wLDAuMTMsLTAuMjIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI0NjZcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTM5ICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yNC40NywtMTMwLjg5LC04MS41NiwtMCwtMCwwLjEzLC0wLjIyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNDY3XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD00NSAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjQuNDcsLTEzMC44OSwtODEuNTYsLTAsLTAsMC4xMywtMC4yMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjQ2OFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9NTEgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTI0LjQ3LC0xMzAuODksLTgxLjU2LC0wLC0wLDAuMTMsLTAuMjIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI0NjlcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTU3ICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yNC40NywtMTMwLjg5LC04MS41NiwtMCwtMCwwLjEzLC0wLjIyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNDcwXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD02MyAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjQuNDcsLTEzMC44OSwtODEuNTYsLTAsLTAsMC4xMywtMC4yMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjQ3MVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9NjkgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTI0LjQ3LC0xMzAuODksLTgxLjU2LC0wLC0wLDAuMTMsLTAuMjIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI0NzJcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTc1ICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yNC40NywtMTMwLjg5LC04MS41NiwtMCwtMCwwLjEzLC0wLjIyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNDczXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD04MSAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjQuNDcsLTEzMC44OSwtODEuNTYsLTAsLTAsMC4xMywtMC4yMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjQ3NFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9ODcgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTI0LjQ3LC0xMzAuODksLTgxLjU2LC0wLC0wLDAuMTMsLTAuMjIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI0NzVcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTkzICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yNC40NywtMTMwLjg5LC04MS41NiwtMCwtMCwwLjEzLC0wLjIyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNDc2XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD05OSAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjQuNDcsLTEzMC44OSwtODEuNTYsLTAsLTAsMC4xMywtMC4yMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjQ3N1wiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTA1ICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yNC40NywtMTMwLjg5LC04MS41NiwtMCwtMCwwLjEzLC0wLjIyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNDc4XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMTEgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTI0LjQ3LC0xMzAuODksLTgxLjU2LC0wLC0wLDAuMTMsLTAuMjIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI0NzlcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTExNyAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjQuNDcsLTEzMC44OSwtODEuNTYsLTAsLTAsMC4xMywtMC4yMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjQ4MFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTIzICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yNC40NywtMTMwLjg5LC04MS41NiwtMCwtMCwwLjEzLC0wLjIyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNDgxXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMjkgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTI0LjQ3LC0xMzAuODksLTgxLjU2LC0wLC0wLDAuMTMsLTAuMjIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI0ODJcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTEzNSAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjQuNDcsLTEzMC44OSwtODEuNTYsLTAsLTAsMC4xMywtMC4yMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjQ4M1wiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTQxICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yNC40NywtMTMwLjg5LC04MS41NiwtMCwtMCwwLjEzLC0wLjIyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNDg0XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xNDcgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTI0LjQ3LC0xMzAuODksLTgxLjU2LC0wLC0wLDAuMTMsLTAuMjIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI0ODVcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTE1MyAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjQuNDcsLTEzMC44OSwtODEuNTYsLTAsLTAsMC4xMywtMC4yMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjQ4NlwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTU5ICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yNC40NywtMTMwLjg5LC04MS41NiwtMCwtMCwwLjEzLC0wLjIyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNDg3XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xNjUgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTI0LjQ3LC0xMzAuODksLTgxLjU2LC0wLC0wLDAuMTMsLTAuMjIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI0ODhcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTE3MSAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjQuNDcsLTEzMC44OSwtODEuNTYsLTAsLTAsMC4xMywtMC4yMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjQ4OVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTc3ICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yNC40NywtMTMwLjg5LC04MS41NiwtMCwtMCwwLjEzLC0wLjIyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNDkwXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0tMTc3ICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yNC40NywtMTMwLjg5LC04MS41NiwtMCwtMCwwLjEzLC0wLjIyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNDkxXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0tMTcxICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yNC40NywtMTMwLjg5LC04MS41NiwtMCwtMCwwLjEzLC0wLjIyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNDkyXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD05ICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yMy45MiwtMTQxLjI3LC04MC45LC0wLDAuMzUsMC44MiwtMC4xMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjQ5M1wiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTUgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTIzLjkyLC0xNDEuMjcsLTgwLjksLTAsMC4zNSwwLjgyLC0wLjEyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNDk0XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0yMSAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjMuOTIsLTE0MS4yNywtODAuOSwtMCwwLjM1LDAuODIsLTAuMTIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI0OTVcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTI3ICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yMy45MiwtMTQxLjI3LC04MC45LC0wLDAuMzUsMC44MiwtMC4xMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjQ5NlwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MzMgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTIzLjkyLC0xNDEuMjcsLTgwLjksLTAsMC4zNSwwLjgyLC0wLjEyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNDk3XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0zOSAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjMuOTIsLTE0MS4yNywtODAuOSwtMCwwLjM1LDAuODIsLTAuMTIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI0OThcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTQ1ICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yMy45MiwtMTQxLjI3LC04MC45LC0wLDAuMzUsMC44MiwtMC4xMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjQ5OVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9NTEgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTIzLjkyLC0xNDEuMjcsLTgwLjksLTAsMC4zNSwwLjgyLC0wLjEyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNTAwXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD01NyAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjMuOTIsLTE0MS4yNywtODAuOSwtMCwwLjM1LDAuODIsLTAuMTIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI1MDFcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTYzICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yMy45MiwtMTQxLjI3LC04MC45LC0wLDAuMzUsMC44MiwtMC4xMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjUwMlwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9NjkgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTIzLjkyLC0xNDEuMjcsLTgwLjksLTAsMC4zNSwwLjgyLC0wLjEyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNTAzXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD03NSAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjMuOTIsLTE0MS4yNywtODAuOSwtMCwwLjM1LDAuODIsLTAuMTIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI1MDRcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTgxICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yMy45MiwtMTQxLjI3LC04MC45LC0wLDAuMzUsMC44MiwtMC4xMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjUwNVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9ODcgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTIzLjkyLC0xNDEuMjcsLTgwLjksLTAsMC4zNSwwLjgyLC0wLjEyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNTA2XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD05MyAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjMuOTIsLTE0MS4yNywtODAuOSwtMCwwLjM1LDAuODIsLTAuMTIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI1MDdcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTk5ICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yMy45MiwtMTQxLjI3LC04MC45LC0wLDAuMzUsMC44MiwtMC4xMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjUwOFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTA1ICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yMy45MiwtMTQxLjI3LC04MC45LC0wLDAuMzUsMC44MiwtMC4xMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjUwOVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTExICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yMy45MiwtMTQxLjI3LC04MC45LC0wLDAuMzUsMC44MiwtMC4xMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjUxMFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTE3ICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yMy45MiwtMTQxLjI3LC04MC45LC0wLDAuMzUsMC44MiwtMC4xMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjUxMVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTIzICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yMy45MiwtMTQxLjI3LC04MC45LC0wLDAuMzUsMC44MiwtMC4xMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjUxMlwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTI5ICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yMy45MiwtMTQxLjI3LC04MC45LC0wLDAuMzUsMC44MiwtMC4xMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjUxM1wiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTM1ICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yMy45MiwtMTQxLjI3LC04MC45LC0wLDAuMzUsMC44MiwtMC4xMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjUxNFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTQxICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yMy45MiwtMTQxLjI3LC04MC45LC0wLDAuMzUsMC44MiwtMC4xMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjUxNVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTQ3ICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yMy45MiwtMTQxLjI3LC04MC45LC0wLDAuMzUsMC44MiwtMC4xMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjUxNlwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTUzICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yMy45MiwtMTQxLjI3LC04MC45LC0wLDAuMzUsMC44MiwtMC4xMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjUxN1wiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTU5ICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yMy45MiwtMTQxLjI3LC04MC45LC0wLDAuMzUsMC44MiwtMC4xMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjUxOFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTY1ICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yMy45MiwtMTQxLjI3LC04MC45LC0wLDAuMzUsMC44MiwtMC4xMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjUxOVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTcxICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yMy45MiwtMTQxLjI3LC04MC45LC0wLDAuMzUsMC44MiwtMC4xMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjUyMFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTc3ICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yMy45MiwtMTQxLjI3LC04MC45LC0wLDAuMzUsMC44MiwtMC4xMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjUyMVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9LTE3NyAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjMuOTIsLTE0MS4yNywtODAuOSwtMCwwLjM1LDAuODIsLTAuMTIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI1MjJcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPS0xNzEgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTIzLjkyLC0xNDEuMjcsLTgwLjksLTAsMC4zNSwwLjgyLC0wLjEyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNTIzXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0yMSAraz0xICt4XzA9NzUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTIzLjkyLC0xNDEuMjcsLTgwLjksLTAsMC4zNSwwLjgyLC0wLjEyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNTI0XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0yNCAraz0xICt4XzA9ODUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTIzLjkyLC0xNDEuMjcsLTgwLjksLTAsMC4zNSwwLjgyLC0wLjEyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNTI1XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0yNyAraz0xICt4XzA9OTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTIzLjkyLC0xNDEuMjcsLTgwLjksLTAsMC4zNSwwLjgyLC0wLjEyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNTI2XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0zMCAraz0xICt4XzA9MTA1MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yMy45MiwtMTQxLjI3LC04MC45LC0wLDAuMzUsMC44MiwtMC4xMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjUyN1wiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MzMgK2s9MSAreF8wPTExNTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjMuOTIsLTE0MS4yNywtODAuOSwtMCwwLjM1LDAuODIsLTAuMTIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI1MjhcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTM2ICtrPTEgK3hfMD0xMjUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTIzLjkyLC0xNDEuMjcsLTgwLjksLTAsMC4zNSwwLjgyLC0wLjEyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNTI5XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0zOSAraz0xICt4XzA9MTM1MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yMy45MiwtMTQxLjI3LC04MC45LC0wLDAuMzUsMC44MiwtMC4xMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjUzMFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9NDIgK2s9MSAreF8wPTE0NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjMuOTIsLTE0MS4yNywtODAuOSwtMCwwLjM1LDAuODIsLTAuMTIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI1MzFcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTQ1ICtrPTEgK3hfMD0xNTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTIzLjkyLC0xNDEuMjcsLTgwLjksLTAsMC4zNSwwLjgyLC0wLjEyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNTMyXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD00OCAraz0xICt4XzA9MTY1MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yMy45MiwtMTQxLjI3LC04MC45LC0wLDAuMzUsMC44MiwtMC4xMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjUzM1wiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9NTEgK2s9MSAreF8wPTE3NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjMuOTIsLTE0MS4yNywtODAuOSwtMCwwLjM1LDAuODIsLTAuMTIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI1MzRcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTU0ICtrPTEgK3hfMD0xODUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTIzLjkyLC0xNDEuMjcsLTgwLjksLTAsMC4zNSwwLjgyLC0wLjEyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNTM1XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD01NyAraz0xICt4XzA9MTk1MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yMy45MiwtMTQxLjI3LC04MC45LC0wLDAuMzUsMC44MiwtMC4xMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjUzNlwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9NjAgK2s9MSAreF8wPTIwNTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjMuOTIsLTE0MS4yNywtODAuOSwtMCwwLjM1LDAuODIsLTAuMTIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI1MzdcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTYzICtrPTEgK3hfMD0yMTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTIzLjkyLC0xNDEuMjcsLTgwLjksLTAsMC4zNSwwLjgyLC0wLjEyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNTM4XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD02NiAraz0xICt4XzA9MjI1MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yMy45MiwtMTQxLjI3LC04MC45LC0wLDAuMzUsMC44MiwtMC4xMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjUzOVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9NjkgK2s9MSAreF8wPTIzNTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjMuOTIsLTE0MS4yNywtODAuOSwtMCwwLjM1LDAuODIsLTAuMTIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI1NDBcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTcyICtrPTEgK3hfMD0yNDUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTIzLjkyLC0xNDEuMjcsLTgwLjksLTAsMC4zNSwwLjgyLC0wLjEyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNTQxXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD03NSAraz0xICt4XzA9MjU1MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yMy45MiwtMTQxLjI3LC04MC45LC0wLDAuMzUsMC44MiwtMC4xMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjU0MlwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9NzggK2s9MSAreF8wPTI2NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjMuOTIsLTE0MS4yNywtODAuOSwtMCwwLjM1LDAuODIsLTAuMTIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI1NDNcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTgxICtrPTEgK3hfMD0yNzUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTIzLjkyLC0xNDEuMjcsLTgwLjksLTAsMC4zNSwwLjgyLC0wLjEyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNTQ0XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD04NCAraz0xICt4XzA9Mjg1MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yMy45MiwtMTQxLjI3LC04MC45LC0wLDAuMzUsMC44MiwtMC4xMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjU0NVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9ODcgK2s9MSAreF8wPTI5NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjMuOTIsLTE0MS4yNywtODAuOSwtMCwwLjM1LDAuODIsLTAuMTIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI1NDZcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTkwICtrPTEgK3hfMD0zMDUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTIzLjkyLC0xNDEuMjcsLTgwLjksLTAsMC4zNSwwLjgyLC0wLjEyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNTQ3XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD05MyAraz0xICt4XzA9MzE1MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yMy45MiwtMTQxLjI3LC04MC45LC0wLDAuMzUsMC44MiwtMC4xMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjU0OFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9OTYgK2s9MSAreF8wPTMyNTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjMuOTIsLTE0MS4yNywtODAuOSwtMCwwLjM1LDAuODIsLTAuMTIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI1NDlcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTk5ICtrPTEgK3hfMD0zMzUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTIzLjkyLC0xNDEuMjcsLTgwLjksLTAsMC4zNSwwLjgyLC0wLjEyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNTUwXCI6Jytwcm9qPXV0bSArem9uZT01MCArc291dGggK2VsbHBzPWJlc3NlbCArdG93Z3M4ND0tNDA0Ljc4LDY4NS42OCw0NS40NywwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNTUxXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMDIgK2s9MSAreF8wPTM0NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjMuOTIsLTE0MS4yNywtODAuOSwtMCwwLjM1LDAuODIsLTAuMTIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI1NTJcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTEwNSAraz0xICt4XzA9MzU1MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yMy45MiwtMTQxLjI3LC04MC45LC0wLDAuMzUsMC44MiwtMC4xMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjU1M1wiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTA4ICtrPTEgK3hfMD0zNjUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTIzLjkyLC0xNDEuMjcsLTgwLjksLTAsMC4zNSwwLjgyLC0wLjEyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNTU0XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMTEgK2s9MSAreF8wPTM3NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjMuOTIsLTE0MS4yNywtODAuOSwtMCwwLjM1LDAuODIsLTAuMTIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI1NTVcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTExNCAraz0xICt4XzA9Mzg1MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yMy45MiwtMTQxLjI3LC04MC45LC0wLDAuMzUsMC44MiwtMC4xMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjU1NlwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTE3ICtrPTEgK3hfMD0zOTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTIzLjkyLC0xNDEuMjcsLTgwLjksLTAsMC4zNSwwLjgyLC0wLjEyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNTU3XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMjAgK2s9MSAreF8wPTQwNTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjMuOTIsLTE0MS4yNywtODAuOSwtMCwwLjM1LDAuODIsLTAuMTIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI1NThcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTEyMyAraz0xICt4XzA9NDE1MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yMy45MiwtMTQxLjI3LC04MC45LC0wLDAuMzUsMC44MiwtMC4xMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjU1OVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTI2ICtrPTEgK3hfMD00MjUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTIzLjkyLC0xNDEuMjcsLTgwLjksLTAsMC4zNSwwLjgyLC0wLjEyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNTYwXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMjkgK2s9MSAreF8wPTQzNTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjMuOTIsLTE0MS4yNywtODAuOSwtMCwwLjM1LDAuODIsLTAuMTIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI1NjFcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTEzMiAraz0xICt4XzA9NDQ1MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yMy45MiwtMTQxLjI3LC04MC45LC0wLDAuMzUsMC44MiwtMC4xMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjU2MlwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTM1ICtrPTEgK3hfMD00NTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTIzLjkyLC0xNDEuMjcsLTgwLjksLTAsMC4zNSwwLjgyLC0wLjEyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNTYzXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMzggK2s9MSAreF8wPTQ2NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjMuOTIsLTE0MS4yNywtODAuOSwtMCwwLjM1LDAuODIsLTAuMTIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI1NjRcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTE0MSAraz0xICt4XzA9NDc1MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yMy45MiwtMTQxLjI3LC04MC45LC0wLDAuMzUsMC44MiwtMC4xMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjU2NVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTQ0ICtrPTEgK3hfMD00ODUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTIzLjkyLC0xNDEuMjcsLTgwLjksLTAsMC4zNSwwLjgyLC0wLjEyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNTY2XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xNDcgK2s9MSAreF8wPTQ5NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjMuOTIsLTE0MS4yNywtODAuOSwtMCwwLjM1LDAuODIsLTAuMTIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI1NjdcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTE1MCAraz0xICt4XzA9NTA1MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yMy45MiwtMTQxLjI3LC04MC45LC0wLDAuMzUsMC44MiwtMC4xMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjU2OFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTUzICtrPTEgK3hfMD01MTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTIzLjkyLC0xNDEuMjcsLTgwLjksLTAsMC4zNSwwLjgyLC0wLjEyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNTY5XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xNTYgK2s9MSAreF8wPTUyNTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjMuOTIsLTE0MS4yNywtODAuOSwtMCwwLjM1LDAuODIsLTAuMTIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI1NzBcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTE1OSAraz0xICt4XzA9NTM1MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yMy45MiwtMTQxLjI3LC04MC45LC0wLDAuMzUsMC44MiwtMC4xMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjU3MVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTYyICtrPTEgK3hfMD01NDUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTIzLjkyLC0xNDEuMjcsLTgwLjksLTAsMC4zNSwwLjgyLC0wLjEyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNTcyXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xNjUgK2s9MSAreF8wPTU1NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjMuOTIsLTE0MS4yNywtODAuOSwtMCwwLjM1LDAuODIsLTAuMTIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI1NzNcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTE2OCAraz0xICt4XzA9NTY1MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yMy45MiwtMTQxLjI3LC04MC45LC0wLDAuMzUsMC44MiwtMC4xMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjU3NFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTcxICtrPTEgK3hfMD01NzUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTIzLjkyLC0xNDEuMjcsLTgwLjksLTAsMC4zNSwwLjgyLC0wLjEyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNTc1XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xNzQgK2s9MSAreF8wPTU4NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjMuOTIsLTE0MS4yNywtODAuOSwtMCwwLjM1LDAuODIsLTAuMTIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI1NzZcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTE3NyAraz0xICt4XzA9NTk1MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yMy45MiwtMTQxLjI3LC04MC45LC0wLDAuMzUsMC44MiwtMC4xMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjU3N1wiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTgwICtrPTEgK3hfMD02MDAwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTIzLjkyLC0xNDEuMjcsLTgwLjksLTAsMC4zNSwwLjgyLC0wLjEyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNTc4XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0tMTc3ICtrPTEgK3hfMD02MTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTIzLjkyLC0xNDEuMjcsLTgwLjksLTAsMC4zNSwwLjgyLC0wLjEyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNTc5XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0tMTc0ICtrPTEgK3hfMD02MjUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTIzLjkyLC0xNDEuMjcsLTgwLjksLTAsMC4zNSwwLjgyLC0wLjEyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNTgwXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0tMTcxICtrPTEgK3hfMD02MzUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTIzLjkyLC0xNDEuMjcsLTgwLjksLTAsMC4zNSwwLjgyLC0wLjEyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNTgxXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0tMTY4ICtrPTEgK3hfMD02NDUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTIzLjkyLC0xNDEuMjcsLTgwLjksLTAsMC4zNSwwLjgyLC0wLjEyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNTgyXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0yMSAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjMuOTIsLTE0MS4yNywtODAuOSwtMCwwLjM1LDAuODIsLTAuMTIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI1ODNcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTI0ICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yMy45MiwtMTQxLjI3LC04MC45LC0wLDAuMzUsMC44MiwtMC4xMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjU4NFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MjcgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTIzLjkyLC0xNDEuMjcsLTgwLjksLTAsMC4zNSwwLjgyLC0wLjEyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNTg1XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0zMCAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjMuOTIsLTE0MS4yNywtODAuOSwtMCwwLjM1LDAuODIsLTAuMTIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI1ODZcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTMzICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yMy45MiwtMTQxLjI3LC04MC45LC0wLDAuMzUsMC44MiwtMC4xMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjU4N1wiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MzYgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTIzLjkyLC0xNDEuMjcsLTgwLjksLTAsMC4zNSwwLjgyLC0wLjEyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNTg4XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0zOSAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjMuOTIsLTE0MS4yNywtODAuOSwtMCwwLjM1LDAuODIsLTAuMTIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI1ODlcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTQyICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yMy45MiwtMTQxLjI3LC04MC45LC0wLDAuMzUsMC44MiwtMC4xMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjU5MFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9NDUgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTIzLjkyLC0xNDEuMjcsLTgwLjksLTAsMC4zNSwwLjgyLC0wLjEyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNTkxXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD00OCAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjMuOTIsLTE0MS4yNywtODAuOSwtMCwwLjM1LDAuODIsLTAuMTIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI1OTJcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTUxICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yMy45MiwtMTQxLjI3LC04MC45LC0wLDAuMzUsMC44MiwtMC4xMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjU5M1wiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9NTQgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTIzLjkyLC0xNDEuMjcsLTgwLjksLTAsMC4zNSwwLjgyLC0wLjEyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNTk0XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD01NyAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjMuOTIsLTE0MS4yNywtODAuOSwtMCwwLjM1LDAuODIsLTAuMTIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI1OTVcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTYwICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yMy45MiwtMTQxLjI3LC04MC45LC0wLDAuMzUsMC44MiwtMC4xMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjU5NlwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9NjMgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTIzLjkyLC0xNDEuMjcsLTgwLjksLTAsMC4zNSwwLjgyLC0wLjEyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNTk3XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD02NiAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjMuOTIsLTE0MS4yNywtODAuOSwtMCwwLjM1LDAuODIsLTAuMTIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI1OThcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTY5ICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yMy45MiwtMTQxLjI3LC04MC45LC0wLDAuMzUsMC44MiwtMC4xMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjU5OVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9NzIgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTIzLjkyLC0xNDEuMjcsLTgwLjksLTAsMC4zNSwwLjgyLC0wLjEyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjAwXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0yNCAraz0wLjk5OTggK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjAxXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD03NSAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjMuOTIsLTE0MS4yNywtODAuOSwtMCwwLjM1LDAuODIsLTAuMTIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2MDJcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTc4ICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yMy45MiwtMTQxLjI3LC04MC45LC0wLDAuMzUsMC44MiwtMC4xMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjYwM1wiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9ODEgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTIzLjkyLC0xNDEuMjcsLTgwLjksLTAsMC4zNSwwLjgyLC0wLjEyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjA0XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD04NCAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjMuOTIsLTE0MS4yNywtODAuOSwtMCwwLjM1LDAuODIsLTAuMTIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2MDVcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTg3ICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yMy45MiwtMTQxLjI3LC04MC45LC0wLDAuMzUsMC44MiwtMC4xMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjYwNlwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9OTAgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTIzLjkyLC0xNDEuMjcsLTgwLjksLTAsMC4zNSwwLjgyLC0wLjEyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjA3XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD05MyAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjMuOTIsLTE0MS4yNywtODAuOSwtMCwwLjM1LDAuODIsLTAuMTIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2MDhcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTk2ICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yMy45MiwtMTQxLjI3LC04MC45LC0wLDAuMzUsMC44MiwtMC4xMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjYwOVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9OTkgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTIzLjkyLC0xNDEuMjcsLTgwLjksLTAsMC4zNSwwLjgyLC0wLjEyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjEwXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMDIgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTIzLjkyLC0xNDEuMjcsLTgwLjksLTAsMC4zNSwwLjgyLC0wLjEyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjExXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMDUgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTIzLjkyLC0xNDEuMjcsLTgwLjksLTAsMC4zNSwwLjgyLC0wLjEyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjEyXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMDggK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTIzLjkyLC0xNDEuMjcsLTgwLjksLTAsMC4zNSwwLjgyLC0wLjEyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjEzXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMTEgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTIzLjkyLC0xNDEuMjcsLTgwLjksLTAsMC4zNSwwLjgyLC0wLjEyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjE0XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMTQgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTIzLjkyLC0xNDEuMjcsLTgwLjksLTAsMC4zNSwwLjgyLC0wLjEyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjE1XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMTcgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTIzLjkyLC0xNDEuMjcsLTgwLjksLTAsMC4zNSwwLjgyLC0wLjEyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjE2XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMjAgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTIzLjkyLC0xNDEuMjcsLTgwLjksLTAsMC4zNSwwLjgyLC0wLjEyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjE3XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMjMgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTIzLjkyLC0xNDEuMjcsLTgwLjksLTAsMC4zNSwwLjgyLC0wLjEyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjE4XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMjYgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTIzLjkyLC0xNDEuMjcsLTgwLjksLTAsMC4zNSwwLjgyLC0wLjEyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjE5XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMjkgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTIzLjkyLC0xNDEuMjcsLTgwLjksLTAsMC4zNSwwLjgyLC0wLjEyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjIwXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMzIgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTIzLjkyLC0xNDEuMjcsLTgwLjksLTAsMC4zNSwwLjgyLC0wLjEyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjIxXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMzUgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTIzLjkyLC0xNDEuMjcsLTgwLjksLTAsMC4zNSwwLjgyLC0wLjEyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjIyXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMzggK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTIzLjkyLC0xNDEuMjcsLTgwLjksLTAsMC4zNSwwLjgyLC0wLjEyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjIzXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xNDEgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTIzLjkyLC0xNDEuMjcsLTgwLjksLTAsMC4zNSwwLjgyLC0wLjEyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjI0XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xNDQgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTIzLjkyLC0xNDEuMjcsLTgwLjksLTAsMC4zNSwwLjgyLC0wLjEyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjI1XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xNDcgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTIzLjkyLC0xNDEuMjcsLTgwLjksLTAsMC4zNSwwLjgyLC0wLjEyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjI2XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xNTAgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTIzLjkyLC0xNDEuMjcsLTgwLjksLTAsMC4zNSwwLjgyLC0wLjEyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjI3XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xNTMgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTIzLjkyLC0xNDEuMjcsLTgwLjksLTAsMC4zNSwwLjgyLC0wLjEyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjI4XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xNTYgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTIzLjkyLC0xNDEuMjcsLTgwLjksLTAsMC4zNSwwLjgyLC0wLjEyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjI5XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xNTkgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTIzLjkyLC0xNDEuMjcsLTgwLjksLTAsMC4zNSwwLjgyLC0wLjEyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjMwXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xNjIgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTIzLjkyLC0xNDEuMjcsLTgwLjksLTAsMC4zNSwwLjgyLC0wLjEyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjMxXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xNjUgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTIzLjkyLC0xNDEuMjcsLTgwLjksLTAsMC4zNSwwLjgyLC0wLjEyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjMyXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xNjggK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTIzLjkyLC0xNDEuMjcsLTgwLjksLTAsMC4zNSwwLjgyLC0wLjEyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjMzXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xNzEgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTIzLjkyLC0xNDEuMjcsLTgwLjksLTAsMC4zNSwwLjgyLC0wLjEyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjM0XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xNzQgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTIzLjkyLC0xNDEuMjcsLTgwLjksLTAsMC4zNSwwLjgyLC0wLjEyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjM1XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xNzcgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTIzLjkyLC0xNDEuMjcsLTgwLjksLTAsMC4zNSwwLjgyLC0wLjEyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjM2XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xODAgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTIzLjkyLC0xNDEuMjcsLTgwLjksLTAsMC4zNSwwLjgyLC0wLjEyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjM3XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0tMTc3ICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yMy45MiwtMTQxLjI3LC04MC45LC0wLDAuMzUsMC44MiwtMC4xMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjYzOFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9LTE3NCAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjMuOTIsLTE0MS4yNywtODAuOSwtMCwwLjM1LDAuODIsLTAuMTIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2MzlcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPS0xNzEgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTIzLjkyLC0xNDEuMjcsLTgwLjksLTAsMC4zNSwwLjgyLC0wLjEyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjQwXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0tMTY4ICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yMy45MiwtMTQxLjI3LC04MC45LC0wLDAuMzUsMC44MiwtMC4xMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY0MVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MjEgK2s9MSAreF8wPTc1MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yNC40NywtMTMwLjg5LC04MS41NiwtMCwtMCwwLjEzLC0wLjIyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjQyXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0yNCAraz0xICt4XzA9ODUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTI0LjQ3LC0xMzAuODksLTgxLjU2LC0wLC0wLDAuMTMsLTAuMjIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2NDNcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTI3ICtrPTEgK3hfMD05NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjQuNDcsLTEzMC44OSwtODEuNTYsLTAsLTAsMC4xMywtMC4yMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY0NFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MzAgK2s9MSAreF8wPTEwNTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjQuNDcsLTEzMC44OSwtODEuNTYsLTAsLTAsMC4xMywtMC4yMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY0NVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MzMgK2s9MSAreF8wPTExNTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjQuNDcsLTEzMC44OSwtODEuNTYsLTAsLTAsMC4xMywtMC4yMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY0NlwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MzYgK2s9MSAreF8wPTEyNTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjQuNDcsLTEzMC44OSwtODEuNTYsLTAsLTAsMC4xMywtMC4yMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY0N1wiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MzkgK2s9MSAreF8wPTEzNTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjQuNDcsLTEzMC44OSwtODEuNTYsLTAsLTAsMC4xMywtMC4yMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY0OFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9NDIgK2s9MSAreF8wPTE0NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjQuNDcsLTEzMC44OSwtODEuNTYsLTAsLTAsMC4xMywtMC4yMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY0OVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9NDUgK2s9MSAreF8wPTE1NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjQuNDcsLTEzMC44OSwtODEuNTYsLTAsLTAsMC4xMywtMC4yMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY1MFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9NDggK2s9MSAreF8wPTE2NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjQuNDcsLTEzMC44OSwtODEuNTYsLTAsLTAsMC4xMywtMC4yMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY1MVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9NTEgK2s9MSAreF8wPTE3NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjQuNDcsLTEzMC44OSwtODEuNTYsLTAsLTAsMC4xMywtMC4yMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY1MlwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9NTQgK2s9MSAreF8wPTE4NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjQuNDcsLTEzMC44OSwtODEuNTYsLTAsLTAsMC4xMywtMC4yMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY1M1wiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9NTcgK2s9MSAreF8wPTE5NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjQuNDcsLTEzMC44OSwtODEuNTYsLTAsLTAsMC4xMywtMC4yMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY1NFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9NjAgK2s9MSAreF8wPTIwNTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjQuNDcsLTEzMC44OSwtODEuNTYsLTAsLTAsMC4xMywtMC4yMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY1NVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9NjMgK2s9MSAreF8wPTIxNTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjQuNDcsLTEzMC44OSwtODEuNTYsLTAsLTAsMC4xMywtMC4yMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY1NlwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9NjYgK2s9MSAreF8wPTIyNTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjQuNDcsLTEzMC44OSwtODEuNTYsLTAsLTAsMC4xMywtMC4yMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY1N1wiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9NjkgK2s9MSAreF8wPTIzNTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjQuNDcsLTEzMC44OSwtODEuNTYsLTAsLTAsMC4xMywtMC4yMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY1OFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9NzIgK2s9MSAreF8wPTI0NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjQuNDcsLTEzMC44OSwtODEuNTYsLTAsLTAsMC4xMywtMC4yMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY1OVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9NzUgK2s9MSAreF8wPTI1NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjQuNDcsLTEzMC44OSwtODEuNTYsLTAsLTAsMC4xMywtMC4yMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY2MFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9NzggK2s9MSAreF8wPTI2NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjQuNDcsLTEzMC44OSwtODEuNTYsLTAsLTAsMC4xMywtMC4yMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY2MVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9ODEgK2s9MSAreF8wPTI3NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjQuNDcsLTEzMC44OSwtODEuNTYsLTAsLTAsMC4xMywtMC4yMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY2MlwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9ODQgK2s9MSAreF8wPTI4NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjQuNDcsLTEzMC44OSwtODEuNTYsLTAsLTAsMC4xMywtMC4yMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY2M1wiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9ODcgK2s9MSAreF8wPTI5NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjQuNDcsLTEzMC44OSwtODEuNTYsLTAsLTAsMC4xMywtMC4yMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY2NFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9OTAgK2s9MSAreF8wPTMwNTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjQuNDcsLTEzMC44OSwtODEuNTYsLTAsLTAsMC4xMywtMC4yMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY2NVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9OTMgK2s9MSAreF8wPTMxNTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjQuNDcsLTEzMC44OSwtODEuNTYsLTAsLTAsMC4xMywtMC4yMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY2NlwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9OTYgK2s9MSAreF8wPTMyNTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjQuNDcsLTEzMC44OSwtODEuNTYsLTAsLTAsMC4xMywtMC4yMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY2N1wiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9OTkgK2s9MSAreF8wPTMzNTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjQuNDcsLTEzMC44OSwtODEuNTYsLTAsLTAsMC4xMywtMC4yMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY2OFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTAyICtrPTEgK3hfMD0zNDUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTI0LjQ3LC0xMzAuODksLTgxLjU2LC0wLC0wLDAuMTMsLTAuMjIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2NjlcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTEwNSAraz0xICt4XzA9MzU1MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yNC40NywtMTMwLjg5LC04MS41NiwtMCwtMCwwLjEzLC0wLjIyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjcwXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMDggK2s9MSAreF8wPTM2NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjQuNDcsLTEzMC44OSwtODEuNTYsLTAsLTAsMC4xMywtMC4yMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY3MVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTExICtrPTEgK3hfMD0zNzUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTI0LjQ3LC0xMzAuODksLTgxLjU2LC0wLC0wLDAuMTMsLTAuMjIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2NzJcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTExNCAraz0xICt4XzA9Mzg1MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yNC40NywtMTMwLjg5LC04MS41NiwtMCwtMCwwLjEzLC0wLjIyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjczXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMTcgK2s9MSAreF8wPTM5NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjQuNDcsLTEzMC44OSwtODEuNTYsLTAsLTAsMC4xMywtMC4yMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY3NFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTIwICtrPTEgK3hfMD00MDUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTI0LjQ3LC0xMzAuODksLTgxLjU2LC0wLC0wLDAuMTMsLTAuMjIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2NzVcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTEyMyAraz0xICt4XzA9NDE1MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yNC40NywtMTMwLjg5LC04MS41NiwtMCwtMCwwLjEzLC0wLjIyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjc2XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMjYgK2s9MSAreF8wPTQyNTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjQuNDcsLTEzMC44OSwtODEuNTYsLTAsLTAsMC4xMywtMC4yMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY3N1wiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTI5ICtrPTEgK3hfMD00MzUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTI0LjQ3LC0xMzAuODksLTgxLjU2LC0wLC0wLDAuMTMsLTAuMjIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2NzhcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTEzMiAraz0xICt4XzA9NDQ1MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yNC40NywtMTMwLjg5LC04MS41NiwtMCwtMCwwLjEzLC0wLjIyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjc5XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMzUgK2s9MSAreF8wPTQ1NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjQuNDcsLTEzMC44OSwtODEuNTYsLTAsLTAsMC4xMywtMC4yMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY4MFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTM4ICtrPTEgK3hfMD00NjUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTI0LjQ3LC0xMzAuODksLTgxLjU2LC0wLC0wLDAuMTMsLTAuMjIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2ODFcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTE0MSAraz0xICt4XzA9NDc1MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yNC40NywtMTMwLjg5LC04MS41NiwtMCwtMCwwLjEzLC0wLjIyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjgyXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xNDQgK2s9MSAreF8wPTQ4NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjQuNDcsLTEzMC44OSwtODEuNTYsLTAsLTAsMC4xMywtMC4yMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY4M1wiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTQ3ICtrPTEgK3hfMD00OTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTI0LjQ3LC0xMzAuODksLTgxLjU2LC0wLC0wLDAuMTMsLTAuMjIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2ODRcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTE1MCAraz0xICt4XzA9NTA1MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yNC40NywtMTMwLjg5LC04MS41NiwtMCwtMCwwLjEzLC0wLjIyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjg1XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xNTMgK2s9MSAreF8wPTUxNTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjQuNDcsLTEzMC44OSwtODEuNTYsLTAsLTAsMC4xMywtMC4yMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY4NlwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTU2ICtrPTEgK3hfMD01MjUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTI0LjQ3LC0xMzAuODksLTgxLjU2LC0wLC0wLDAuMTMsLTAuMjIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2ODdcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTE1OSAraz0xICt4XzA9NTM1MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yNC40NywtMTMwLjg5LC04MS41NiwtMCwtMCwwLjEzLC0wLjIyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjg4XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xNjIgK2s9MSAreF8wPTU0NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjQuNDcsLTEzMC44OSwtODEuNTYsLTAsLTAsMC4xMywtMC4yMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY4OVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTY1ICtrPTEgK3hfMD01NTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTI0LjQ3LC0xMzAuODksLTgxLjU2LC0wLC0wLDAuMTMsLTAuMjIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2OTBcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTE2OCAraz0xICt4XzA9NTY1MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yNC40NywtMTMwLjg5LC04MS41NiwtMCwtMCwwLjEzLC0wLjIyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjkxXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xNzEgK2s9MSAreF8wPTU3NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjQuNDcsLTEzMC44OSwtODEuNTYsLTAsLTAsMC4xMywtMC4yMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY5MlwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTc0ICtrPTEgK3hfMD01ODUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTI0LjQ3LC0xMzAuODksLTgxLjU2LC0wLC0wLDAuMTMsLTAuMjIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2OTNcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTE3NyAraz0xICt4XzA9NTk1MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yNC40NywtMTMwLjg5LC04MS41NiwtMCwtMCwwLjEzLC0wLjIyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjk0XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xODAgK2s9MSAreF8wPTYwMDAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjQuNDcsLTEzMC44OSwtODEuNTYsLTAsLTAsMC4xMywtMC4yMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY5NVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9LTE3NyAraz0xICt4XzA9NjE1MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yNC40NywtMTMwLjg5LC04MS41NiwtMCwtMCwwLjEzLC0wLjIyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjk2XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0tMTc0ICtrPTEgK3hfMD02MjUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTI0LjQ3LC0xMzAuODksLTgxLjU2LC0wLC0wLDAuMTMsLTAuMjIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2OTdcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPS0xNzEgK2s9MSAreF8wPTYzNTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjQuNDcsLTEzMC44OSwtODEuNTYsLTAsLTAsMC4xMywtMC4yMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY5OFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9LTE2OCAraz0xICt4XzA9NjQ1MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yNC40NywtMTMwLjg5LC04MS41NiwtMCwtMCwwLjEzLC0wLjIyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjk5XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0yMSAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjQuNDcsLTEzMC44OSwtODEuNTYsLTAsLTAsMC4xMywtMC4yMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjcwMFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MjQgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTI0LjQ3LC0xMzAuODksLTgxLjU2LC0wLC0wLDAuMTMsLTAuMjIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI3MDFcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTI3ICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yNC40NywtMTMwLjg5LC04MS41NiwtMCwtMCwwLjEzLC0wLjIyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNzAyXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0zMCAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjQuNDcsLTEzMC44OSwtODEuNTYsLTAsLTAsMC4xMywtMC4yMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjcwM1wiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MzMgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTI0LjQ3LC0xMzAuODksLTgxLjU2LC0wLC0wLDAuMTMsLTAuMjIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI3MDRcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTM2ICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yNC40NywtMTMwLjg5LC04MS41NiwtMCwtMCwwLjEzLC0wLjIyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNzA1XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0zOSAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjQuNDcsLTEzMC44OSwtODEuNTYsLTAsLTAsMC4xMywtMC4yMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjcwNlwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9NDIgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTI0LjQ3LC0xMzAuODksLTgxLjU2LC0wLC0wLDAuMTMsLTAuMjIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI3MDdcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTQ1ICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yNC40NywtMTMwLjg5LC04MS41NiwtMCwtMCwwLjEzLC0wLjIyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNzA4XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD00OCAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjQuNDcsLTEzMC44OSwtODEuNTYsLTAsLTAsMC4xMywtMC4yMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjcwOVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9NTEgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTI0LjQ3LC0xMzAuODksLTgxLjU2LC0wLC0wLDAuMTMsLTAuMjIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI3MTBcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTU0ICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yNC40NywtMTMwLjg5LC04MS41NiwtMCwtMCwwLjEzLC0wLjIyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNzExXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD01NyAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjQuNDcsLTEzMC44OSwtODEuNTYsLTAsLTAsMC4xMywtMC4yMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjcxMlwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9NjAgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTI0LjQ3LC0xMzAuODksLTgxLjU2LC0wLC0wLDAuMTMsLTAuMjIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI3MTNcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTYzICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yNC40NywtMTMwLjg5LC04MS41NiwtMCwtMCwwLjEzLC0wLjIyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNzE0XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD02NiAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjQuNDcsLTEzMC44OSwtODEuNTYsLTAsLTAsMC4xMywtMC4yMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjcxNVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9NjkgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTI0LjQ3LC0xMzAuODksLTgxLjU2LC0wLC0wLDAuMTMsLTAuMjIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI3MTZcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTcyICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yNC40NywtMTMwLjg5LC04MS41NiwtMCwtMCwwLjEzLC0wLjIyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNzE3XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD03NSAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjQuNDcsLTEzMC44OSwtODEuNTYsLTAsLTAsMC4xMywtMC4yMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjcxOFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9NzggK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTI0LjQ3LC0xMzAuODksLTgxLjU2LC0wLC0wLDAuMTMsLTAuMjIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI3MTlcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTgxICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yNC40NywtMTMwLjg5LC04MS41NiwtMCwtMCwwLjEzLC0wLjIyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNzIwXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD04NCAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjQuNDcsLTEzMC44OSwtODEuNTYsLTAsLTAsMC4xMywtMC4yMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjcyMVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9ODcgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTI0LjQ3LC0xMzAuODksLTgxLjU2LC0wLC0wLDAuMTMsLTAuMjIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI3MjJcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTkwICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yNC40NywtMTMwLjg5LC04MS41NiwtMCwtMCwwLjEzLC0wLjIyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNzIzXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD05MyAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjQuNDcsLTEzMC44OSwtODEuNTYsLTAsLTAsMC4xMywtMC4yMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjcyNFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9OTYgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTI0LjQ3LC0xMzAuODksLTgxLjU2LC0wLC0wLDAuMTMsLTAuMjIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI3MjVcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTk5ICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yNC40NywtMTMwLjg5LC04MS41NiwtMCwtMCwwLjEzLC0wLjIyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNzI2XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMDIgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTI0LjQ3LC0xMzAuODksLTgxLjU2LC0wLC0wLDAuMTMsLTAuMjIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI3MjdcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTEwNSAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjQuNDcsLTEzMC44OSwtODEuNTYsLTAsLTAsMC4xMywtMC4yMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjcyOFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTA4ICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yNC40NywtMTMwLjg5LC04MS41NiwtMCwtMCwwLjEzLC0wLjIyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNzI5XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMTEgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTI0LjQ3LC0xMzAuODksLTgxLjU2LC0wLC0wLDAuMTMsLTAuMjIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI3MzBcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTExNCAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjQuNDcsLTEzMC44OSwtODEuNTYsLTAsLTAsMC4xMywtMC4yMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjczMVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTE3ICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yNC40NywtMTMwLjg5LC04MS41NiwtMCwtMCwwLjEzLC0wLjIyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNzMyXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMjAgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTI0LjQ3LC0xMzAuODksLTgxLjU2LC0wLC0wLDAuMTMsLTAuMjIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI3MzNcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTEyMyAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjQuNDcsLTEzMC44OSwtODEuNTYsLTAsLTAsMC4xMywtMC4yMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjczNFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTI2ICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yNC40NywtMTMwLjg5LC04MS41NiwtMCwtMCwwLjEzLC0wLjIyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNzM1XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMjkgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTI0LjQ3LC0xMzAuODksLTgxLjU2LC0wLC0wLDAuMTMsLTAuMjIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI3MzZcIjonK3Byb2o9dXRtICt6b25lPTM2ICtzb3V0aCArZWxscHM9Y2xyazY2ICt0b3dnczg0PS03My40NzIsLTUxLjY2LC0xMTIuNDgyLDAuOTUzLDQuNiwtMi4zNjgsMC41ODYgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI3MzdcIjonK3Byb2o9dXRtICt6b25lPTM3ICtzb3V0aCArZWxscHM9Y2xyazY2ICt0b3dnczg0PS03My40NzIsLTUxLjY2LC0xMTIuNDgyLDAuOTUzLDQuNiwtMi4zNjgsMC41ODYgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI3MzhcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTEzMiAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjQuNDcsLTEzMC44OSwtODEuNTYsLTAsLTAsMC4xMywtMC4yMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjczOVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTM1ICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yNC40NywtMTMwLjg5LC04MS41NiwtMCwtMCwwLjEzLC0wLjIyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNzQwXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMzggK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTI0LjQ3LC0xMzAuODksLTgxLjU2LC0wLC0wLDAuMTMsLTAuMjIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI3NDFcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTE0MSAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjQuNDcsLTEzMC44OSwtODEuNTYsLTAsLTAsMC4xMywtMC4yMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mjc0MlwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTQ0ICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yNC40NywtMTMwLjg5LC04MS41NiwtMCwtMCwwLjEzLC0wLjIyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNzQzXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xNDcgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTI0LjQ3LC0xMzAuODksLTgxLjU2LC0wLC0wLDAuMTMsLTAuMjIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI3NDRcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTE1MCAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjQuNDcsLTEzMC44OSwtODEuNTYsLTAsLTAsMC4xMywtMC4yMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mjc0NVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTUzICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yNC40NywtMTMwLjg5LC04MS41NiwtMCwtMCwwLjEzLC0wLjIyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNzQ2XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xNTYgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTI0LjQ3LC0xMzAuODksLTgxLjU2LC0wLC0wLDAuMTMsLTAuMjIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI3NDdcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTE1OSAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjQuNDcsLTEzMC44OSwtODEuNTYsLTAsLTAsMC4xMywtMC4yMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mjc0OFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTYyICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yNC40NywtMTMwLjg5LC04MS41NiwtMCwtMCwwLjEzLC0wLjIyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNzQ5XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xNjUgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTI0LjQ3LC0xMzAuODksLTgxLjU2LC0wLC0wLDAuMTMsLTAuMjIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI3NTBcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTE2OCAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjQuNDcsLTEzMC44OSwtODEuNTYsLTAsLTAsMC4xMywtMC4yMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mjc1MVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTcxICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yNC40NywtMTMwLjg5LC04MS41NiwtMCwtMCwwLjEzLC0wLjIyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNzUyXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xNzQgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTI0LjQ3LC0xMzAuODksLTgxLjU2LC0wLC0wLDAuMTMsLTAuMjIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI3NTNcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTE3NyAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjQuNDcsLTEzMC44OSwtODEuNTYsLTAsLTAsMC4xMywtMC4yMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mjc1NFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTgwICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yNC40NywtMTMwLjg5LC04MS41NiwtMCwtMCwwLjEzLC0wLjIyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNzU1XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0tMTc3ICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yNC40NywtMTMwLjg5LC04MS41NiwtMCwtMCwwLjEzLC0wLjIyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNzU2XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0tMTc0ICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yNC40NywtMTMwLjg5LC04MS41NiwtMCwtMCwwLjEzLC0wLjIyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNzU3XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0tMTcxICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yNC40NywtMTMwLjg5LC04MS41NiwtMCwtMCwwLjEzLC0wLjIyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNzU4XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0tMTY4ICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yNC40NywtMTMwLjg5LC04MS41NiwtMCwtMCwwLjEzLC0wLjIyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNzU5XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0zMC41ICtsb25fMD0tODUuODMzMzMzMzMzMzMzMzMgK2s9MC45OTk5NiAreF8wPTIwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI3NjBcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTMwICtsb25fMD0tODcuNSAraz0wLjk5OTkzMzMzMyAreF8wPTYwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI3NjFcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTMxICtsb25fMD0tMTEwLjE2NjY2NjY2NjY2NjcgK2s9MC45OTk5ICt4XzA9MjEzMzYwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mjc2MlwiOicrcHJvaj10bWVyYyArbGF0XzA9MzEgK2xvbl8wPS0xMTEuOTE2NjY2NjY2NjY2NyAraz0wLjk5OTkgK3hfMD0yMTMzNjAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNzYzXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0zMSArbG9uXzA9LTExMy43NSAraz0wLjk5OTkzMzMzMyAreF8wPTIxMzM2MCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI3NjRcIjonK3Byb2o9bGNjICtsYXRfMT0zNi4yMzMzMzMzMzMzMzMzMyArbGF0XzI9MzQuOTMzMzMzMzMzMzMzMzMgK2xhdF8wPTM0LjMzMzMzMzMzMzMzMzM0ICtsb25fMD0tOTIgK3hfMD00MDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNzY1XCI6Jytwcm9qPWxjYyArbGF0XzE9MzQuNzY2NjY2NjY2NjY2NjcgK2xhdF8yPTMzLjMgK2xhdF8wPTMyLjY2NjY2NjY2NjY2NjY2ICtsb25fMD0tOTIgK3hfMD00MDAwMDAgK3lfMD00MDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI3NjZcIjonK3Byb2o9bGNjICtsYXRfMT00MS42NjY2NjY2NjY2NjY2NiArbGF0XzI9NDAgK2xhdF8wPTM5LjMzMzMzMzMzMzMzMzM0ICtsb25fMD0tMTIyICt4XzA9MjAwMDAwMCAreV8wPTUwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mjc2N1wiOicrcHJvaj1sY2MgK2xhdF8xPTM5LjgzMzMzMzMzMzMzMzM0ICtsYXRfMj0zOC4zMzMzMzMzMzMzMzMzNCArbGF0XzA9MzcuNjY2NjY2NjY2NjY2NjYgK2xvbl8wPS0xMjIgK3hfMD0yMDAwMDAwICt5XzA9NTAwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNzY4XCI6Jytwcm9qPWxjYyArbGF0XzE9MzguNDMzMzMzMzMzMzMzMzMgK2xhdF8yPTM3LjA2NjY2NjY2NjY2NjY3ICtsYXRfMD0zNi41ICtsb25fMD0tMTIwLjUgK3hfMD0yMDAwMDAwICt5XzA9NTAwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNzY5XCI6Jytwcm9qPWxjYyArbGF0XzE9MzcuMjUgK2xhdF8yPTM2ICtsYXRfMD0zNS4zMzMzMzMzMzMzMzMzNCArbG9uXzA9LTExOSAreF8wPTIwMDAwMDAgK3lfMD01MDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI3NzBcIjonK3Byb2o9bGNjICtsYXRfMT0zNS40NjY2NjY2NjY2NjY2NyArbGF0XzI9MzQuMDMzMzMzMzMzMzMzMzMgK2xhdF8wPTMzLjUgK2xvbl8wPS0xMTggK3hfMD0yMDAwMDAwICt5XzA9NTAwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNzcxXCI6Jytwcm9qPWxjYyArbGF0XzE9MzMuODgzMzMzMzMzMzMzMzMgK2xhdF8yPTMyLjc4MzMzMzMzMzMzMzMzICtsYXRfMD0zMi4xNjY2NjY2NjY2NjY2NiArbG9uXzA9LTExNi4yNSAreF8wPTIwMDAwMDAgK3lfMD01MDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI3NzJcIjonK3Byb2o9bGNjICtsYXRfMT00MC43ODMzMzMzMzMzMzMzMyArbGF0XzI9MzkuNzE2NjY2NjY2NjY2NjcgK2xhdF8wPTM5LjMzMzMzMzMzMzMzMzM0ICtsb25fMD0tMTA1LjUgK3hfMD05MTQ0MDEuODI4OSAreV8wPTMwNDgwMC42MDk2ICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNzczXCI6Jytwcm9qPWxjYyArbGF0XzE9MzkuNzUgK2xhdF8yPTM4LjQ1ICtsYXRfMD0zNy44MzMzMzMzMzMzMzMzNCArbG9uXzA9LTEwNS41ICt4XzA9OTE0NDAxLjgyODkgK3lfMD0zMDQ4MDAuNjA5NiArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mjc3NFwiOicrcHJvaj1sY2MgK2xhdF8xPTM4LjQzMzMzMzMzMzMzMzMzICtsYXRfMj0zNy4yMzMzMzMzMzMzMzMzMyArbGF0XzA9MzYuNjY2NjY2NjY2NjY2NjYgK2xvbl8wPS0xMDUuNSAreF8wPTkxNDQwMS44Mjg5ICt5XzA9MzA0ODAwLjYwOTYgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI3NzVcIjonK3Byb2o9bGNjICtsYXRfMT00MS44NjY2NjY2NjY2NjY2NyArbGF0XzI9NDEuMiArbGF0XzA9NDAuODMzMzMzMzMzMzMzMzQgK2xvbl8wPS03Mi43NSAreF8wPTMwNDgwMC42MDk2ICt5XzA9MTUyNDAwLjMwNDggK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI3NzZcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTM4ICtsb25fMD0tNzUuNDE2NjY2NjY2NjY2NjcgK2s9MC45OTk5OTUgK3hfMD0yMDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNzc3XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0yNC4zMzMzMzMzMzMzMzMzMyArbG9uXzA9LTgxICtrPTAuOTk5OTQxMTc3ICt4XzA9MjAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mjc3OFwiOicrcHJvaj10bWVyYyArbGF0XzA9MjQuMzMzMzMzMzMzMzMzMzMgK2xvbl8wPS04MiAraz0wLjk5OTk0MTE3NyAreF8wPTIwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI3NzlcIjonK3Byb2o9bGNjICtsYXRfMT0zMC43NSArbGF0XzI9MjkuNTgzMzMzMzMzMzMzMzMgK2xhdF8wPTI5ICtsb25fMD0tODQuNSAreF8wPTYwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI3ODBcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTMwICtsb25fMD0tODIuMTY2NjY2NjY2NjY2NjcgK2s9MC45OTk5ICt4XzA9MjAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mjc4MVwiOicrcHJvaj10bWVyYyArbGF0XzA9MzAgK2xvbl8wPS04NC4xNjY2NjY2NjY2NjY2NyAraz0wLjk5OTkgK3hfMD03MDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNzgyXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0xOC44MzMzMzMzMzMzMzMzMyArbG9uXzA9LTE1NS41ICtrPTAuOTk5OTY2NjY3ICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mjc4M1wiOicrcHJvaj10bWVyYyArbGF0XzA9MjAuMzMzMzMzMzMzMzMzMzMgK2xvbl8wPS0xNTYuNjY2NjY2NjY2NjY2NyAraz0wLjk5OTk2NjY2NyAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI3ODRcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTIxLjE2NjY2NjY2NjY2NjY3ICtsb25fMD0tMTU4ICtrPTAuOTk5OTkgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNzg1XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0yMS44MzMzMzMzMzMzMzMzMyArbG9uXzA9LTE1OS41ICtrPTAuOTk5OTkgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNzg2XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0yMS42NjY2NjY2NjY2NjY2NyArbG9uXzA9LTE2MC4xNjY2NjY2NjY2NjY3ICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNzg3XCI6Jytwcm9qPXRtZXJjICtsYXRfMD00MS42NjY2NjY2NjY2NjY2NiArbG9uXzA9LTExMi4xNjY2NjY2NjY2NjY3ICtrPTAuOTk5OTQ3MzY3OTk5OTk5OSAreF8wPTIwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI3ODhcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTQxLjY2NjY2NjY2NjY2NjY2ICtsb25fMD0tMTE0ICtrPTAuOTk5OTQ3MzY3OTk5OTk5OSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI3ODlcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTQxLjY2NjY2NjY2NjY2NjY2ICtsb25fMD0tMTE1Ljc1ICtrPTAuOTk5OTMzMzMzICt4XzA9ODAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mjc5MFwiOicrcHJvaj10bWVyYyArbGF0XzA9MzYuNjY2NjY2NjY2NjY2NjYgK2xvbl8wPS04OC4zMzMzMzMzMzMzMzMzMyAraz0wLjk5OTk3NDk5OTk5OTk5OTkgK3hfMD0zMDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNzkxXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0zNi42NjY2NjY2NjY2NjY2NiArbG9uXzA9LTkwLjE2NjY2NjY2NjY2NjY3ICtrPTAuOTk5OTQxMTc3ICt4XzA9NzAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mjc5MlwiOicrcHJvaj10bWVyYyArbGF0XzA9MzcuNSArbG9uXzA9LTg1LjY2NjY2NjY2NjY2NjY3ICtrPTAuOTk5OTY2NjY3ICt4XzA9MTAwMDAwICt5XzA9MjUwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNzkzXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0zNy41ICtsb25fMD0tODcuMDgzMzMzMzMzMzMzMzMgK2s9MC45OTk5NjY2NjcgK3hfMD05MDAwMDAgK3lfMD0yNTAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI3OTRcIjonK3Byb2o9bGNjICtsYXRfMT00My4yNjY2NjY2NjY2NjY2NyArbGF0XzI9NDIuMDY2NjY2NjY2NjY2NjcgK2xhdF8wPTQxLjUgK2xvbl8wPS05My41ICt4XzA9MTUwMDAwMCAreV8wPTEwMDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI3OTVcIjonK3Byb2o9bGNjICtsYXRfMT00MS43ODMzMzMzMzMzMzMzMyArbGF0XzI9NDAuNjE2NjY2NjY2NjY2NjcgK2xhdF8wPTQwICtsb25fMD0tOTMuNSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI3OTZcIjonK3Byb2o9bGNjICtsYXRfMT0zOS43ODMzMzMzMzMzMzMzMyArbGF0XzI9MzguNzE2NjY2NjY2NjY2NjcgK2xhdF8wPTM4LjMzMzMzMzMzMzMzMzM0ICtsb25fMD0tOTggK3hfMD00MDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNzk3XCI6Jytwcm9qPWxjYyArbGF0XzE9MzguNTY2NjY2NjY2NjY2NjcgK2xhdF8yPTM3LjI2NjY2NjY2NjY2NjY3ICtsYXRfMD0zNi42NjY2NjY2NjY2NjY2NiArbG9uXzA9LTk4LjUgK3hfMD00MDAwMDAgK3lfMD00MDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI3OThcIjonK3Byb2o9bGNjICtsYXRfMT0zNy45NjY2NjY2NjY2NjY2NyArbGF0XzI9MzguOTY2NjY2NjY2NjY2NjcgK2xhdF8wPTM3LjUgK2xvbl8wPS04NC4yNSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI3OTlcIjonK3Byb2o9bGNjICtsYXRfMT0zNy45MzMzMzMzMzMzMzMzMyArbGF0XzI9MzYuNzMzMzMzMzMzMzMzMzMgK2xhdF8wPTM2LjMzMzMzMzMzMzMzMzM0ICtsb25fMD0tODUuNzUgK3hfMD01MDAwMDAgK3lfMD01MDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI4MDBcIjonK3Byb2o9bGNjICtsYXRfMT0zMi42NjY2NjY2NjY2NjY2NiArbGF0XzI9MzEuMTY2NjY2NjY2NjY2NjcgK2xhdF8wPTMwLjUgK2xvbl8wPS05Mi41ICt4XzA9MTAwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI4MDFcIjonK3Byb2o9bGNjICtsYXRfMT0zMC43ICtsYXRfMj0yOS4zICtsYXRfMD0yOC41ICtsb25fMD0tOTEuMzMzMzMzMzMzMzMzMzMgK3hfMD0xMDAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjgwMlwiOicrcHJvaj10bWVyYyArbGF0XzA9NDMuNjY2NjY2NjY2NjY2NjYgK2xvbl8wPS02OC41ICtrPTAuOTk5OSAreF8wPTMwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI4MDNcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTQyLjgzMzMzMzMzMzMzMzM0ICtsb25fMD0tNzAuMTY2NjY2NjY2NjY2NjcgK2s9MC45OTk5NjY2NjcgK3hfMD05MDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyODA0XCI6Jytwcm9qPWxjYyArbGF0XzE9MzkuNDUgK2xhdF8yPTM4LjMgK2xhdF8wPTM3LjY2NjY2NjY2NjY2NjY2ICtsb25fMD0tNzcgK3hfMD00MDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyODA1XCI6Jytwcm9qPWxjYyArbGF0XzE9NDIuNjgzMzMzMzMzMzMzMzMgK2xhdF8yPTQxLjcxNjY2NjY2NjY2NjY3ICtsYXRfMD00MSArbG9uXzA9LTcxLjUgK3hfMD0yMDAwMDAgK3lfMD03NTAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI4MDZcIjonK3Byb2o9bGNjICtsYXRfMT00MS40ODMzMzMzMzMzMzMzMyArbGF0XzI9NDEuMjgzMzMzMzMzMzMzMzMgK2xhdF8wPTQxICtsb25fMD0tNzAuNSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI4MDdcIjonK3Byb2o9bGNjICtsYXRfMT00Ny4wODMzMzMzMzMzMzMzNCArbGF0XzI9NDUuNDgzMzMzMzMzMzMzMzMgK2xhdF8wPTQ0Ljc4MzMzMzMzMzMzMzMzICtsb25fMD0tODcgK3hfMD04MDAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjgwOFwiOicrcHJvaj1sY2MgK2xhdF8xPTQ1LjcgK2xhdF8yPTQ0LjE4MzMzMzMzMzMzMzMzICtsYXRfMD00My4zMTY2NjY2NjY2NjY2NyArbG9uXzA9LTg0LjM2NjY2NjY2NjY2NjY2ICt4XzA9NjAwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI4MDlcIjonK3Byb2o9bGNjICtsYXRfMT00My42NjY2NjY2NjY2NjY2NiArbGF0XzI9NDIuMSArbGF0XzA9NDEuNSArbG9uXzA9LTg0LjM2NjY2NjY2NjY2NjY2ICt4XzA9NDAwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI4MTBcIjonK3Byb2o9bGNjICtsYXRfMT00OC42MzMzMzMzMzMzMzMzMyArbGF0XzI9NDcuMDMzMzMzMzMzMzMzMzMgK2xhdF8wPTQ2LjUgK2xvbl8wPS05My4wOTk5OTk5OTk5OTk5OSAreF8wPTgwMDAwMCAreV8wPTEwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjgxMVwiOicrcHJvaj1sY2MgK2xhdF8xPTQ3LjA1ICtsYXRfMj00NS42MTY2NjY2NjY2NjY2NyArbGF0XzA9NDUgK2xvbl8wPS05NC4yNSAreF8wPTgwMDAwMCAreV8wPTEwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjgxMlwiOicrcHJvaj1sY2MgK2xhdF8xPTQ1LjIxNjY2NjY2NjY2NjY3ICtsYXRfMj00My43ODMzMzMzMzMzMzMzMyArbGF0XzA9NDMgK2xvbl8wPS05NCAreF8wPTgwMDAwMCAreV8wPTEwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjgxM1wiOicrcHJvaj10bWVyYyArbGF0XzA9MjkuNSArbG9uXzA9LTg4LjgzMzMzMzMzMzMzMzMzICtrPTAuOTk5OTUgK3hfMD0zMDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyODE0XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0yOS41ICtsb25fMD0tOTAuMzMzMzMzMzMzMzMzMzMgK2s9MC45OTk5NSAreF8wPTcwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI4MTVcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTM1LjgzMzMzMzMzMzMzMzM0ICtsb25fMD0tOTAuNSAraz0wLjk5OTkzMzMzMyAreF8wPTI1MDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI4MTZcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTM1LjgzMzMzMzMzMzMzMzM0ICtsb25fMD0tOTIuNSAraz0wLjk5OTkzMzMzMyAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI4MTdcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTM2LjE2NjY2NjY2NjY2NjY2ICtsb25fMD0tOTQuNSAraz0wLjk5OTk0MTE3NyAreF8wPTg1MDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI4MThcIjonK3Byb2o9bGNjICtsYXRfMT00OSArbGF0XzI9NDUgK2xhdF8wPTQ0LjI1ICtsb25fMD0tMTA5LjUgK3hfMD02MDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyODE5XCI6Jytwcm9qPWxjYyArbGF0XzE9NDMgK2xhdF8yPTQwICtsYXRfMD0zOS44MzMzMzMzMzMzMzMzNCArbG9uXzA9LTEwMCAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI4MjBcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTM0Ljc1ICtsb25fMD0tMTE1LjU4MzMzMzMzMzMzMzMgK2s9MC45OTk5ICt4XzA9MjAwMDAwICt5XzA9ODAwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjgyMVwiOicrcHJvaj10bWVyYyArbGF0XzA9MzQuNzUgK2xvbl8wPS0xMTYuNjY2NjY2NjY2NjY2NyAraz0wLjk5OTkgK3hfMD01MDAwMDAgK3lfMD02MDAwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyODIyXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0zNC43NSArbG9uXzA9LTExOC41ODMzMzMzMzMzMzMzICtrPTAuOTk5OSAreF8wPTgwMDAwMCAreV8wPTQwMDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI4MjNcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTQyLjUgK2xvbl8wPS03MS42NjY2NjY2NjY2NjY2NyAraz0wLjk5OTk2NjY2NyAreF8wPTMwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI4MjRcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTM4LjgzMzMzMzMzMzMzMzM0ICtsb25fMD0tNzQuNSAraz0wLjk5OTkgK3hfMD0xNTAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyODI1XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0zMSArbG9uXzA9LTEwNC4zMzMzMzMzMzMzMzMzICtrPTAuOTk5OTA5MDkxICt4XzA9MTY1MDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjgyNlwiOicrcHJvaj10bWVyYyArbGF0XzA9MzEgK2xvbl8wPS0xMDYuMjUgK2s9MC45OTk5ICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjgyN1wiOicrcHJvaj10bWVyYyArbGF0XzA9MzEgK2xvbl8wPS0xMDcuODMzMzMzMzMzMzMzMyAraz0wLjk5OTkxNjY2NyAreF8wPTgzMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI4MjhcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTM4LjgzMzMzMzMzMzMzMzM0ICtsb25fMD0tNzQuNSAraz0wLjk5OTkgK3hfMD0xNTAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyODI5XCI6Jytwcm9qPXRtZXJjICtsYXRfMD00MCArbG9uXzA9LTc2LjU4MzMzMzMzMzMzMzMzICtrPTAuOTk5OTM3NSAreF8wPTI1MDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI4MzBcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTQwICtsb25fMD0tNzguNTgzMzMzMzMzMzMzMzMgK2s9MC45OTk5Mzc1ICt4XzA9MzUwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjgzMVwiOicrcHJvaj1sY2MgK2xhdF8xPTQxLjAzMzMzMzMzMzMzMzMzICtsYXRfMj00MC42NjY2NjY2NjY2NjY2NiArbGF0XzA9NDAuMTY2NjY2NjY2NjY2NjYgK2xvbl8wPS03NCAreF8wPTMwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI4MzJcIjonK3Byb2o9bGNjICtsYXRfMT00OC43MzMzMzMzMzMzMzMzMyArbGF0XzI9NDcuNDMzMzMzMzMzMzMzMzMgK2xhdF8wPTQ3ICtsb25fMD0tMTAwLjUgK3hfMD02MDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyODMzXCI6Jytwcm9qPWxjYyArbGF0XzE9NDcuNDgzMzMzMzMzMzMzMzMgK2xhdF8yPTQ2LjE4MzMzMzMzMzMzMzMzICtsYXRfMD00NS42NjY2NjY2NjY2NjY2NiArbG9uXzA9LTEwMC41ICt4XzA9NjAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjgzNFwiOicrcHJvaj1sY2MgK2xhdF8xPTQxLjcgK2xhdF8yPTQwLjQzMzMzMzMzMzMzMzMzICtsYXRfMD0zOS42NjY2NjY2NjY2NjY2NiArbG9uXzA9LTgyLjUgK3hfMD02MDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyODM1XCI6Jytwcm9qPWxjYyArbGF0XzE9NDAuMDMzMzMzMzMzMzMzMzMgK2xhdF8yPTM4LjczMzMzMzMzMzMzMzMzICtsYXRfMD0zOCArbG9uXzA9LTgyLjUgK3hfMD02MDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyODM2XCI6Jytwcm9qPWxjYyArbGF0XzE9MzYuNzY2NjY2NjY2NjY2NjcgK2xhdF8yPTM1LjU2NjY2NjY2NjY2NjY3ICtsYXRfMD0zNSArbG9uXzA9LTk4ICt4XzA9NjAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjgzN1wiOicrcHJvaj1sY2MgK2xhdF8xPTM1LjIzMzMzMzMzMzMzMzMzICtsYXRfMj0zMy45MzMzMzMzMzMzMzMzMyArbGF0XzA9MzMuMzMzMzMzMzMzMzMzMzQgK2xvbl8wPS05OCAreF8wPTYwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI4MzhcIjonK3Byb2o9bGNjICtsYXRfMT00NiArbGF0XzI9NDQuMzMzMzMzMzMzMzMzMzQgK2xhdF8wPTQzLjY2NjY2NjY2NjY2NjY2ICtsb25fMD0tMTIwLjUgK3hfMD0yNTAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjgzOVwiOicrcHJvaj1sY2MgK2xhdF8xPTQ0ICtsYXRfMj00Mi4zMzMzMzMzMzMzMzMzNCArbGF0XzA9NDEuNjY2NjY2NjY2NjY2NjYgK2xvbl8wPS0xMjAuNSAreF8wPTE1MDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyODQwXCI6Jytwcm9qPXRtZXJjICtsYXRfMD00MS4wODMzMzMzMzMzMzMzNCArbG9uXzA9LTcxLjUgK2s9MC45OTk5OTM3NSAreF8wPTEwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI4NDFcIjonK3Byb2o9bGNjICtsYXRfMT00NS42ODMzMzMzMzMzMzMzMyArbGF0XzI9NDQuNDE2NjY2NjY2NjY2NjYgK2xhdF8wPTQzLjgzMzMzMzMzMzMzMzM0ICtsb25fMD0tMTAwICt4XzA9NjAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mjg0MlwiOicrcHJvaj1sY2MgK2xhdF8xPTQ0LjQgK2xhdF8yPTQyLjgzMzMzMzMzMzMzMzM0ICtsYXRfMD00Mi4zMzMzMzMzMzMzMzMzNCArbG9uXzA9LTEwMC4zMzMzMzMzMzMzMzMzICt4XzA9NjAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mjg0M1wiOicrcHJvaj1sY2MgK2xhdF8xPTM2LjQxNjY2NjY2NjY2NjY2ICtsYXRfMj0zNS4yNSArbGF0XzA9MzQuMzMzMzMzMzMzMzMzMzQgK2xvbl8wPS04NiAreF8wPTYwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI4NDRcIjonK3Byb2o9bGNjICtsYXRfMT0zNi4xODMzMzMzMzMzMzMzMyArbGF0XzI9MzQuNjUgK2xhdF8wPTM0ICtsb25fMD0tMTAxLjUgK3hfMD0yMDAwMDAgK3lfMD0xMDAwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyODQ1XCI6Jytwcm9qPWxjYyArbGF0XzE9MzMuOTY2NjY2NjY2NjY2NjcgK2xhdF8yPTMyLjEzMzMzMzMzMzMzMzMzICtsYXRfMD0zMS42NjY2NjY2NjY2NjY2NyArbG9uXzA9LTk4LjUgK3hfMD02MDAwMDAgK3lfMD0yMDAwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyODQ2XCI6Jytwcm9qPWxjYyArbGF0XzE9MzEuODgzMzMzMzMzMzMzMzMgK2xhdF8yPTMwLjExNjY2NjY2NjY2NjY3ICtsYXRfMD0yOS42NjY2NjY2NjY2NjY2NyArbG9uXzA9LTEwMC4zMzMzMzMzMzMzMzMzICt4XzA9NzAwMDAwICt5XzA9MzAwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mjg0N1wiOicrcHJvaj1sY2MgK2xhdF8xPTMwLjI4MzMzMzMzMzMzMzMzICtsYXRfMj0yOC4zODMzMzMzMzMzMzMzMyArbGF0XzA9MjcuODMzMzMzMzMzMzMzMzMgK2xvbl8wPS05OSAreF8wPTYwMDAwMCAreV8wPTQwMDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI4NDhcIjonK3Byb2o9bGNjICtsYXRfMT0yNy44MzMzMzMzMzMzMzMzMyArbGF0XzI9MjYuMTY2NjY2NjY2NjY2NjcgK2xhdF8wPTI1LjY2NjY2NjY2NjY2NjY3ICtsb25fMD0tOTguNSAreF8wPTMwMDAwMCAreV8wPTUwMDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI4NDlcIjonK3Byb2o9bGNjICtsYXRfMT00MS43ODMzMzMzMzMzMzMzMyArbGF0XzI9NDAuNzE2NjY2NjY2NjY2NjcgK2xhdF8wPTQwLjMzMzMzMzMzMzMzMzM0ICtsb25fMD0tMTExLjUgK3hfMD01MDAwMDAgK3lfMD0xMDAwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyODUwXCI6Jytwcm9qPWxjYyArbGF0XzE9NDAuNjUgK2xhdF8yPTM5LjAxNjY2NjY2NjY2NjY3ICtsYXRfMD0zOC4zMzMzMzMzMzMzMzMzNCArbG9uXzA9LTExMS41ICt4XzA9NTAwMDAwICt5XzA9MjAwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mjg1MVwiOicrcHJvaj1sY2MgK2xhdF8xPTM4LjM1ICtsYXRfMj0zNy4yMTY2NjY2NjY2NjY2NyArbGF0XzA9MzYuNjY2NjY2NjY2NjY2NjYgK2xvbl8wPS0xMTEuNSAreF8wPTUwMDAwMCAreV8wPTMwMDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI4NTJcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTQyLjUgK2xvbl8wPS03Mi41ICtrPTAuOTk5OTY0Mjg2ICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mjg1M1wiOicrcHJvaj1sY2MgK2xhdF8xPTM5LjIgK2xhdF8yPTM4LjAzMzMzMzMzMzMzMzMzICtsYXRfMD0zNy42NjY2NjY2NjY2NjY2NiArbG9uXzA9LTc4LjUgK3hfMD0zNTAwMDAwICt5XzA9MjAwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mjg1NFwiOicrcHJvaj1sY2MgK2xhdF8xPTM3Ljk2NjY2NjY2NjY2NjY3ICtsYXRfMj0zNi43NjY2NjY2NjY2NjY2NyArbGF0XzA9MzYuMzMzMzMzMzMzMzMzMzQgK2xvbl8wPS03OC41ICt4XzA9MzUwMDAwMCAreV8wPTEwMDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI4NTVcIjonK3Byb2o9bGNjICtsYXRfMT00OC43MzMzMzMzMzMzMzMzMyArbGF0XzI9NDcuNSArbGF0XzA9NDcgK2xvbl8wPS0xMjAuODMzMzMzMzMzMzMzMyAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI4NTZcIjonK3Byb2o9bGNjICtsYXRfMT00Ny4zMzMzMzMzMzMzMzMzNCArbGF0XzI9NDUuODMzMzMzMzMzMzMzMzQgK2xhdF8wPTQ1LjMzMzMzMzMzMzMzMzM0ICtsb25fMD0tMTIwLjUgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyODU3XCI6Jytwcm9qPWxjYyArbGF0XzE9NDAuMjUgK2xhdF8yPTM5ICtsYXRfMD0zOC41ICtsb25fMD0tNzkuNSAreF8wPTYwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI4NThcIjonK3Byb2o9bGNjICtsYXRfMT0zOC44ODMzMzMzMzMzMzMzMyArbGF0XzI9MzcuNDgzMzMzMzMzMzMzMzMgK2xhdF8wPTM3ICtsb25fMD0tODEgK3hfMD02MDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyODU5XCI6Jytwcm9qPWxjYyArbGF0XzE9NDYuNzY2NjY2NjY2NjY2NjcgK2xhdF8yPTQ1LjU2NjY2NjY2NjY2NjY3ICtsYXRfMD00NS4xNjY2NjY2NjY2NjY2NiArbG9uXzA9LTkwICt4XzA9NjAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mjg2MFwiOicrcHJvaj1sY2MgK2xhdF8xPTQ1LjUgK2xhdF8yPTQ0LjI1ICtsYXRfMD00My44MzMzMzMzMzMzMzMzNCArbG9uXzA9LTkwICt4XzA9NjAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mjg2MVwiOicrcHJvaj1sY2MgK2xhdF8xPTQ0LjA2NjY2NjY2NjY2NjY3ICtsYXRfMj00Mi43MzMzMzMzMzMzMzMzMyArbGF0XzA9NDIgK2xvbl8wPS05MCAreF8wPTYwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI4NjJcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTQwLjUgK2xvbl8wPS0xMDUuMTY2NjY2NjY2NjY2NyAraz0wLjk5OTkzNzUgK3hfMD0yMDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyODYzXCI6Jytwcm9qPXRtZXJjICtsYXRfMD00MC41ICtsb25fMD0tMTA3LjMzMzMzMzMzMzMzMzMgK2s9MC45OTk5Mzc1ICt4XzA9NDAwMDAwICt5XzA9MTAwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyODY0XCI6Jytwcm9qPXRtZXJjICtsYXRfMD00MC41ICtsb25fMD0tMTA4Ljc1ICtrPTAuOTk5OTM3NSAreF8wPTYwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI4NjVcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTQwLjUgK2xvbl8wPS0xMTAuMDgzMzMzMzMzMzMzMyAraz0wLjk5OTkzNzUgK3hfMD04MDAwMDAgK3lfMD0xMDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI4NjZcIjonK3Byb2o9bGNjICtsYXRfMT0xOC40MzMzMzMzMzMzMzMzMyArbGF0XzI9MTguMDMzMzMzMzMzMzMzMzMgK2xhdF8wPTE3LjgzMzMzMzMzMzMzMzMzICtsb25fMD0tNjYuNDMzMzMzMzMzMzMzMzQgK3hfMD0yMDAwMDAgK3lfMD0yMDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI4NjdcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTMxICtsb25fMD0tMTEwLjE2NjY2NjY2NjY2NjcgK2s9MC45OTk5ICt4XzA9MjEzMzYwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9ZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI4NjhcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTMxICtsb25fMD0tMTExLjkxNjY2NjY2NjY2NjcgK2s9MC45OTk5ICt4XzA9MjEzMzYwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9ZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI4NjlcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTMxICtsb25fMD0tMTEzLjc1ICtrPTAuOTk5OTMzMzMzICt4XzA9MjEzMzYwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9ZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI4NzBcIjonK3Byb2o9bGNjICtsYXRfMT00MS42NjY2NjY2NjY2NjY2NiArbGF0XzI9NDAgK2xhdF8wPTM5LjMzMzMzMzMzMzMzMzM0ICtsb25fMD0tMTIyICt4XzA9MjAwMDAwMC4wMDAxMDE2ICt5XzA9NTAwMDAwLjAwMDEwMTYwMDEgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzoyODcxXCI6Jytwcm9qPWxjYyArbGF0XzE9MzkuODMzMzMzMzMzMzMzMzQgK2xhdF8yPTM4LjMzMzMzMzMzMzMzMzM0ICtsYXRfMD0zNy42NjY2NjY2NjY2NjY2NiArbG9uXzA9LTEyMiAreF8wPTIwMDAwMDAuMDAwMTAxNiAreV8wPTUwMDAwMC4wMDAxMDE2MDAxICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mjg3MlwiOicrcHJvaj1sY2MgK2xhdF8xPTM4LjQzMzMzMzMzMzMzMzMzICtsYXRfMj0zNy4wNjY2NjY2NjY2NjY2NyArbGF0XzA9MzYuNSArbG9uXzA9LTEyMC41ICt4XzA9MjAwMDAwMC4wMDAxMDE2ICt5XzA9NTAwMDAwLjAwMDEwMTYwMDEgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzoyODczXCI6Jytwcm9qPWxjYyArbGF0XzE9MzcuMjUgK2xhdF8yPTM2ICtsYXRfMD0zNS4zMzMzMzMzMzMzMzMzNCArbG9uXzA9LTExOSAreF8wPTIwMDAwMDAuMDAwMTAxNiAreV8wPTUwMDAwMC4wMDAxMDE2MDAxICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mjg3NFwiOicrcHJvaj1sY2MgK2xhdF8xPTM1LjQ2NjY2NjY2NjY2NjY3ICtsYXRfMj0zNC4wMzMzMzMzMzMzMzMzMyArbGF0XzA9MzMuNSArbG9uXzA9LTExOCAreF8wPTIwMDAwMDAuMDAwMTAxNiAreV8wPTUwMDAwMC4wMDAxMDE2MDAxICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mjg3NVwiOicrcHJvaj1sY2MgK2xhdF8xPTMzLjg4MzMzMzMzMzMzMzMzICtsYXRfMj0zMi43ODMzMzMzMzMzMzMzMyArbGF0XzA9MzIuMTY2NjY2NjY2NjY2NjYgK2xvbl8wPS0xMTYuMjUgK3hfMD0yMDAwMDAwLjAwMDEwMTYgK3lfMD01MDAwMDAuMDAwMTAxNjAwMSArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI4NzZcIjonK3Byb2o9bGNjICtsYXRfMT00MC43ODMzMzMzMzMzMzMzMyArbGF0XzI9MzkuNzE2NjY2NjY2NjY2NjcgK2xhdF8wPTM5LjMzMzMzMzMzMzMzMzM0ICtsb25fMD0tMTA1LjUgK3hfMD05MTQ0MDEuODI4ODAzNjU3NiAreV8wPTMwNDgwMC42MDk2MDEyMTkyICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mjg3N1wiOicrcHJvaj1sY2MgK2xhdF8xPTM5Ljc1ICtsYXRfMj0zOC40NSArbGF0XzA9MzcuODMzMzMzMzMzMzMzMzQgK2xvbl8wPS0xMDUuNSAreF8wPTkxNDQwMS44Mjg4MDM2NTc2ICt5XzA9MzA0ODAwLjYwOTYwMTIxOTIgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzoyODc4XCI6Jytwcm9qPWxjYyArbGF0XzE9MzguNDMzMzMzMzMzMzMzMzMgK2xhdF8yPTM3LjIzMzMzMzMzMzMzMzMzICtsYXRfMD0zNi42NjY2NjY2NjY2NjY2NiArbG9uXzA9LTEwNS41ICt4XzA9OTE0NDAxLjgyODgwMzY1NzYgK3lfMD0zMDQ4MDAuNjA5NjAxMjE5MiArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI4NzlcIjonK3Byb2o9bGNjICtsYXRfMT00MS44NjY2NjY2NjY2NjY2NyArbGF0XzI9NDEuMiArbGF0XzA9NDAuODMzMzMzMzMzMzMzMzQgK2xvbl8wPS03Mi43NSAreF8wPTMwNDgwMC42MDk2MDEyMTkyICt5XzA9MTUyNDAwLjMwNDgwMDYwOTYgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzoyODgwXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0zOCArbG9uXzA9LTc1LjQxNjY2NjY2NjY2NjY3ICtrPTAuOTk5OTk1ICt4XzA9MjAwMDAwLjAwMDEwMTYwMDIgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mjg4MVwiOicrcHJvaj10bWVyYyArbGF0XzA9MjQuMzMzMzMzMzMzMzMzMzMgK2xvbl8wPS04MSAraz0wLjk5OTk0MTE3NyAreF8wPTIwMDAwMC4wMDAxMDE2MDAyICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI4ODJcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTI0LjMzMzMzMzMzMzMzMzMzICtsb25fMD0tODIgK2s9MC45OTk5NDExNzcgK3hfMD0yMDAwMDAuMDAwMTAxNjAwMiAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzoyODgzXCI6Jytwcm9qPWxjYyArbGF0XzE9MzAuNzUgK2xhdF8yPTI5LjU4MzMzMzMzMzMzMzMzICtsYXRfMD0yOSArbG9uXzA9LTg0LjUgK3hfMD02MDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mjg4NFwiOicrcHJvaj10bWVyYyArbGF0XzA9MzAgK2xvbl8wPS04Mi4xNjY2NjY2NjY2NjY2NyAraz0wLjk5OTkgK3hfMD0yMDAwMDAuMDAwMTAxNjAwMiAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzoyODg1XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0zMCArbG9uXzA9LTg0LjE2NjY2NjY2NjY2NjY3ICtrPTAuOTk5OSAreF8wPTY5OTk5OS45OTk4OTgzOTk4ICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI4ODZcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTQxLjY2NjY2NjY2NjY2NjY2ICtsb25fMD0tMTEyLjE2NjY2NjY2NjY2NjcgK2s9MC45OTk5NDczNjc5OTk5OTk5ICt4XzA9MjAwMDAwLjAwMDEwMTYwMDIgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mjg4N1wiOicrcHJvaj10bWVyYyArbGF0XzA9NDEuNjY2NjY2NjY2NjY2NjYgK2xvbl8wPS0xMTQgK2s9MC45OTk5NDczNjc5OTk5OTk5ICt4XzA9NTAwMDAwLjAwMDEwMTYwMDEgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mjg4OFwiOicrcHJvaj10bWVyYyArbGF0XzA9NDEuNjY2NjY2NjY2NjY2NjYgK2xvbl8wPS0xMTUuNzUgK2s9MC45OTk5MzMzMzMgK3hfMD04MDAwMDAuMDAwMTAxNjAwMSAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzoyODg5XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0zNy41ICtsb25fMD0tODUuNjY2NjY2NjY2NjY2NjcgK2s9MC45OTk5NjY2NjcgK3hfMD05OTk5OS45OTk4OTgzOTk3OCAreV8wPTI0OTM2NC45OTg3Mjk5OTc1ICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mjg5MFwiOicrcHJvaj10bWVyYyArbGF0XzA9MzcuNSArbG9uXzA9LTg3LjA4MzMzMzMzMzMzMzMzICtrPTAuOTk5OTY2NjY3ICt4XzA9OTAwMDAwICt5XzA9MjQ5MzY0Ljk5ODcyOTk5NzUgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzoyODkxXCI6Jytwcm9qPWxjYyArbGF0XzE9MzcuOTY2NjY2NjY2NjY2NjcgK2xhdF8yPTM4Ljk2NjY2NjY2NjY2NjY3ICtsYXRfMD0zNy41ICtsb25fMD0tODQuMjUgK3hfMD01MDAwMDAuMDAwMTAxNjAwMSAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzoyODkyXCI6Jytwcm9qPWxjYyArbGF0XzE9MzcuOTMzMzMzMzMzMzMzMzMgK2xhdF8yPTM2LjczMzMzMzMzMzMzMzMzICtsYXRfMD0zNi4zMzMzMzMzMzMzMzMzNCArbG9uXzA9LTg1Ljc1ICt4XzA9NTAwMDAwLjAwMDEwMTYwMDEgK3lfMD01MDAwMDAuMDAwMTAxNjAwMSArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI4OTNcIjonK3Byb2o9bGNjICtsYXRfMT0zOS40NSArbGF0XzI9MzguMyArbGF0XzA9MzcuNjY2NjY2NjY2NjY2NjYgK2xvbl8wPS03NyAreF8wPTM5OTk5OS45OTk4OTgzOTk4ICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI4OTRcIjonK3Byb2o9bGNjICtsYXRfMT00Mi42ODMzMzMzMzMzMzMzMyArbGF0XzI9NDEuNzE2NjY2NjY2NjY2NjcgK2xhdF8wPTQxICtsb25fMD0tNzEuNSAreF8wPTIwMDAwMC4wMDAxMDE2MDAyICt5XzA9NzUwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mjg5NVwiOicrcHJvaj1sY2MgK2xhdF8xPTQxLjQ4MzMzMzMzMzMzMzMzICtsYXRfMj00MS4yODMzMzMzMzMzMzMzMyArbGF0XzA9NDEgK2xvbl8wPS03MC41ICt4XzA9NTAwMDAwLjAwMDEwMTYwMDEgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mjg5NlwiOicrcHJvaj1sY2MgK2xhdF8xPTQ3LjA4MzMzMzMzMzMzMzM0ICtsYXRfMj00NS40ODMzMzMzMzMzMzMzMyArbGF0XzA9NDQuNzgzMzMzMzMzMzMzMzMgK2xvbl8wPS04NyAreF8wPTc5OTk5OTkuOTk5OTY4MDAxICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9ZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI4OTdcIjonK3Byb2o9bGNjICtsYXRfMT00NS43ICtsYXRfMj00NC4xODMzMzMzMzMzMzMzMyArbGF0XzA9NDMuMzE2NjY2NjY2NjY2NjcgK2xvbl8wPS04NC4zNjY2NjY2NjY2NjY2NiAreF8wPTU5OTk5OTkuOTk5OTc2MDAxICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9ZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI4OThcIjonK3Byb2o9bGNjICtsYXRfMT00My42NjY2NjY2NjY2NjY2NiArbGF0XzI9NDIuMSArbGF0XzA9NDEuNSArbG9uXzA9LTg0LjM2NjY2NjY2NjY2NjY2ICt4XzA9Mzk5OTk5OS45OTk5ODQgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mjg5OVwiOicrcHJvaj10bWVyYyArbGF0XzA9MjkuNSArbG9uXzA9LTg4LjgzMzMzMzMzMzMzMzMzICtrPTAuOTk5OTUgK3hfMD0zMDAwMDAuMDAwMDAwMDAwMSAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzoyOTAwXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0yOS41ICtsb25fMD0tOTAuMzMzMzMzMzMzMzMzMzMgK2s9MC45OTk5NSAreF8wPTY5OTk5OS45OTk4OTgzOTk4ICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI5MDFcIjonK3Byb2o9bGNjICtsYXRfMT00OSArbGF0XzI9NDUgK2xhdF8wPTQ0LjI1ICtsb25fMD0tMTA5LjUgK3hfMD01OTk5OTkuOTk5OTk3NiAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzoyOTAyXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0zMSArbG9uXzA9LTEwNC4zMzMzMzMzMzMzMzMzICtrPTAuOTk5OTA5MDkxICt4XzA9MTY1MDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI5MDNcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTMxICtsb25fMD0tMTA2LjI1ICtrPTAuOTk5OSAreF8wPTUwMDAwMC4wMDAxMDE2MDAxICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI5MDRcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTMxICtsb25fMD0tMTA3LjgzMzMzMzMzMzMzMzMgK2s9MC45OTk5MTY2NjcgK3hfMD04MzAwMDAuMDAwMTAxNjAwMSAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzoyOTA1XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0zOC44MzMzMzMzMzMzMzMzNCArbG9uXzA9LTc0LjUgK2s9MC45OTk5ICt4XzA9MTUwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI5MDZcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTQwICtsb25fMD0tNzYuNTgzMzMzMzMzMzMzMzMgK2s9MC45OTk5Mzc1ICt4XzA9MjQ5OTk5Ljk5OTg5ODM5OTggK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjkwN1wiOicrcHJvaj10bWVyYyArbGF0XzA9NDAgK2xvbl8wPS03OC41ODMzMzMzMzMzMzMzMyAraz0wLjk5OTkzNzUgK3hfMD0zNTAwMDAuMDAwMTAxNjAwMSAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzoyOTA4XCI6Jytwcm9qPWxjYyArbGF0XzE9NDEuMDMzMzMzMzMzMzMzMzMgK2xhdF8yPTQwLjY2NjY2NjY2NjY2NjY2ICtsYXRfMD00MC4xNjY2NjY2NjY2NjY2NiArbG9uXzA9LTc0ICt4XzA9MzAwMDAwLjAwMDAwMDAwMDEgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjkwOVwiOicrcHJvaj1sY2MgK2xhdF8xPTQ4LjczMzMzMzMzMzMzMzMzICtsYXRfMj00Ny40MzMzMzMzMzMzMzMzMyArbGF0XzA9NDcgK2xvbl8wPS0xMDAuNSAreF8wPTU5OTk5OS45OTk5OTc2ICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9ZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI5MTBcIjonK3Byb2o9bGNjICtsYXRfMT00Ny40ODMzMzMzMzMzMzMzMyArbGF0XzI9NDYuMTgzMzMzMzMzMzMzMzMgK2xhdF8wPTQ1LjY2NjY2NjY2NjY2NjY2ICtsb25fMD0tMTAwLjUgK3hfMD01OTk5OTkuOTk5OTk3NiAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzoyOTExXCI6Jytwcm9qPWxjYyArbGF0XzE9MzYuNzY2NjY2NjY2NjY2NjcgK2xhdF8yPTM1LjU2NjY2NjY2NjY2NjY3ICtsYXRfMD0zNSArbG9uXzA9LTk4ICt4XzA9NjAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI5MTJcIjonK3Byb2o9bGNjICtsYXRfMT0zNS4yMzMzMzMzMzMzMzMzMyArbGF0XzI9MzMuOTMzMzMzMzMzMzMzMzMgK2xhdF8wPTMzLjMzMzMzMzMzMzMzMzM0ICtsb25fMD0tOTggK3hfMD02MDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjkxM1wiOicrcHJvaj1sY2MgK2xhdF8xPTQ2ICtsYXRfMj00NC4zMzMzMzMzMzMzMzMzNCArbGF0XzA9NDMuNjY2NjY2NjY2NjY2NjYgK2xvbl8wPS0xMjAuNSAreF8wPTI1MDAwMDAuMDAwMTQyNCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzoyOTE0XCI6Jytwcm9qPWxjYyArbGF0XzE9NDQgK2xhdF8yPTQyLjMzMzMzMzMzMzMzMzM0ICtsYXRfMD00MS42NjY2NjY2NjY2NjY2NiArbG9uXzA9LTEyMC41ICt4XzA9MTUwMDAwMC4wMDAxNDY0ICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9ZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI5MTVcIjonK3Byb2o9bGNjICtsYXRfMT0zNi40MTY2NjY2NjY2NjY2NiArbGF0XzI9MzUuMjUgK2xhdF8wPTM0LjMzMzMzMzMzMzMzMzM0ICtsb25fMD0tODYgK3hfMD02MDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjkxNlwiOicrcHJvaj1sY2MgK2xhdF8xPTM2LjE4MzMzMzMzMzMzMzMzICtsYXRfMj0zNC42NSArbGF0XzA9MzQgK2xvbl8wPS0xMDEuNSAreF8wPTIwMDAwMC4wMDAxMDE2MDAyICt5XzA9OTk5OTk5Ljk5OTg5ODM5OTggK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzoyOTE3XCI6Jytwcm9qPWxjYyArbGF0XzE9MzMuOTY2NjY2NjY2NjY2NjcgK2xhdF8yPTMyLjEzMzMzMzMzMzMzMzMzICtsYXRfMD0zMS42NjY2NjY2NjY2NjY2NyArbG9uXzA9LTk4LjUgK3hfMD02MDAwMDAgK3lfMD0yMDAwMDAwLjAwMDEwMTYgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzoyOTE4XCI6Jytwcm9qPWxjYyArbGF0XzE9MzEuODgzMzMzMzMzMzMzMzMgK2xhdF8yPTMwLjExNjY2NjY2NjY2NjY3ICtsYXRfMD0yOS42NjY2NjY2NjY2NjY2NyArbG9uXzA9LTEwMC4zMzMzMzMzMzMzMzMzICt4XzA9Njk5OTk5Ljk5OTg5ODM5OTggK3lfMD0zMDAwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjkxOVwiOicrcHJvaj1sY2MgK2xhdF8xPTMwLjI4MzMzMzMzMzMzMzMzICtsYXRfMj0yOC4zODMzMzMzMzMzMzMzMyArbGF0XzA9MjcuODMzMzMzMzMzMzMzMzMgK2xvbl8wPS05OSAreF8wPTYwMDAwMCAreV8wPTM5OTk5OTkuOTk5ODk4NCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI5MjBcIjonK3Byb2o9bGNjICtsYXRfMT0yNy44MzMzMzMzMzMzMzMzMyArbGF0XzI9MjYuMTY2NjY2NjY2NjY2NjcgK2xhdF8wPTI1LjY2NjY2NjY2NjY2NjY3ICtsb25fMD0tOTguNSAreF8wPTMwMDAwMC4wMDAwMDAwMDAxICt5XzA9NTAwMDAwMC4wMDAxMDE2ICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjkyMVwiOicrcHJvaj1sY2MgK2xhdF8xPTQxLjc4MzMzMzMzMzMzMzMzICtsYXRfMj00MC43MTY2NjY2NjY2NjY2NyArbGF0XzA9NDAuMzMzMzMzMzMzMzMzMzQgK2xvbl8wPS0xMTEuNSAreF8wPTUwMDAwMC4wMDAxNTA0ICt5XzA9OTk5OTk5Ljk5OTk5NjAwMDEgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzoyOTIyXCI6Jytwcm9qPWxjYyArbGF0XzE9NDAuNjUgK2xhdF8yPTM5LjAxNjY2NjY2NjY2NjY3ICtsYXRfMD0zOC4zMzMzMzMzMzMzMzMzNCArbG9uXzA9LTExMS41ICt4XzA9NTAwMDAwLjAwMDE1MDQgK3lfMD0xOTk5OTk5Ljk5OTk5MiArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9ZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI5MjNcIjonK3Byb2o9bGNjICtsYXRfMT0zOC4zNSArbGF0XzI9MzcuMjE2NjY2NjY2NjY2NjcgK2xhdF8wPTM2LjY2NjY2NjY2NjY2NjY2ICtsb25fMD0tMTExLjUgK3hfMD01MDAwMDAuMDAwMTUwNCAreV8wPTI5OTk5OTkuOTk5OTg4ICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjkyNFwiOicrcHJvaj1sY2MgK2xhdF8xPTM5LjIgK2xhdF8yPTM4LjAzMzMzMzMzMzMzMzMzICtsYXRfMD0zNy42NjY2NjY2NjY2NjY2NiArbG9uXzA9LTc4LjUgK3hfMD0zNTAwMDAwLjAwMDEwMTYgK3lfMD0yMDAwMDAwLjAwMDEwMTYgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzoyOTI1XCI6Jytwcm9qPWxjYyArbGF0XzE9MzcuOTY2NjY2NjY2NjY2NjcgK2xhdF8yPTM2Ljc2NjY2NjY2NjY2NjY3ICtsYXRfMD0zNi4zMzMzMzMzMzMzMzMzNCArbG9uXzA9LTc4LjUgK3hfMD0zNTAwMDAwLjAwMDEwMTYgK3lfMD05OTk5OTkuOTk5ODk4Mzk5OCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI5MjZcIjonK3Byb2o9bGNjICtsYXRfMT00OC43MzMzMzMzMzMzMzMzMyArbGF0XzI9NDcuNSArbGF0XzA9NDcgK2xvbl8wPS0xMjAuODMzMzMzMzMzMzMzMyAreF8wPTUwMDAwMC4wMDAxMDE2MDAxICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI5MjdcIjonK3Byb2o9bGNjICtsYXRfMT00Ny4zMzMzMzMzMzMzMzMzNCArbGF0XzI9NDUuODMzMzMzMzMzMzMzMzQgK2xhdF8wPTQ1LjMzMzMzMzMzMzMzMzM0ICtsb25fMD0tMTIwLjUgK3hfMD01MDAwMDAuMDAwMTAxNjAwMSAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzoyOTI4XCI6Jytwcm9qPWxjYyArbGF0XzE9NDYuNzY2NjY2NjY2NjY2NjcgK2xhdF8yPTQ1LjU2NjY2NjY2NjY2NjY3ICtsYXRfMD00NS4xNjY2NjY2NjY2NjY2NiArbG9uXzA9LTkwICt4XzA9NjAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI5MjlcIjonK3Byb2o9bGNjICtsYXRfMT00NS41ICtsYXRfMj00NC4yNSArbGF0XzA9NDMuODMzMzMzMzMzMzMzMzQgK2xvbl8wPS05MCAreF8wPTYwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzoyOTMwXCI6Jytwcm9qPWxjYyArbGF0XzE9NDQuMDY2NjY2NjY2NjY2NjcgK2xhdF8yPTQyLjczMzMzMzMzMzMzMzMzICtsYXRfMD00MiArbG9uXzA9LTkwICt4XzA9NjAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI5MzFcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTEzICtrPTAuOTk5NiAreF8wPTUwMDAwMCAreV8wPTAgK2E9NjM3ODI0OS4yICtiPTYzNTY1MTUgK3Rvd2dzODQ9LTEwNiwtODcsMTg4LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI5MzJcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTI0LjQ1ICtsb25fMD01MS4yMTY2NjY2NjY2NjY2NyAraz0wLjk5OTk5ICt4XzA9MjAwMDAwICt5XzA9MzAwMDAwICtlbGxwcz1pbnRsICt0b3dnczg0PS0xMTkuNDI1LC0zMDMuNjU5LC0xMS4wMDA2LDEuMTY0MywwLjE3NDQ1OCwxLjA5NjI2LDMuNjU3MDYgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI5MzNcIjonK3Byb2o9dXRtICt6b25lPTUwICtzb3V0aCArZWxscHM9YmVzc2VsICt0b3dnczg0PS00MDMsNjg0LDQxLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI5MzRcIjonK3Byb2o9bWVyYyArbG9uXzA9MTEwICtrPTAuOTk3ICt4XzA9MzkwMDAwMCAreV8wPTkwMDAwMCArZWxscHM9YmVzc2VsICt0b3dnczg0PS00MDMsNjg0LDQxLDAsMCwwLDAgK3BtPWpha2FydGEgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI5MzVcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAuMTE2NjY2NjY2NjY2NjY2NyArbG9uXzA9NDEuNTMzMzMzMzMzMzMzMzMgK2s9MSAreF8wPTEzMDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yMy45MiwtMTQxLjI3LC04MC45LC0wLDAuMzUsMC44MiwtMC4xMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjkzNlwiOicrcHJvaj10bWVyYyArbGF0XzA9MC4xMTY2NjY2NjY2NjY2NjY3ICtsb25fMD00NC41MzMzMzMzMzMzMzMzMyAraz0xICt4XzA9MjMwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTIzLjkyLC0xNDEuMjcsLTgwLjksLTAsMC4zNSwwLjgyLC0wLjEyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyOTM3XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wLjExNjY2NjY2NjY2NjY2NjcgK2xvbl8wPTQ3LjUzMzMzMzMzMzMzMzMzICtrPTEgK3hfMD0zMzAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjMuOTIsLTE0MS4yNywtODAuOSwtMCwwLjM1LDAuODIsLTAuMTIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI5MzhcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAuMTE2NjY2NjY2NjY2NjY2NyArbG9uXzA9NTAuNTMzMzMzMzMzMzMzMzMgK2s9MSAreF8wPTQzMDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yMy45MiwtMTQxLjI3LC04MC45LC0wLDAuMzUsMC44MiwtMC4xMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjkzOVwiOicrcHJvaj10bWVyYyArbGF0XzA9MC4xMzMzMzMzMzMzMzMzMzMzICtsb25fMD01MC43NjY2NjY2NjY2NjY2NyAraz0xICt4XzA9MjMwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTIzLjkyLC0xNDEuMjcsLTgwLjksLTAsMC4zNSwwLjgyLC0wLjEyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyOTQwXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wLjEzMzMzMzMzMzMzMzMzMzMgK2xvbl8wPTUzLjc2NjY2NjY2NjY2NjY3ICtrPTEgK3hfMD0zMzAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjMuOTIsLTE0MS4yNywtODAuOSwtMCwwLjM1LDAuODIsLTAuMTIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI5NDFcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAuMTMzMzMzMzMzMzMzMzMzMyArbG9uXzA9NTYuNzY2NjY2NjY2NjY2NjcgK2s9MSAreF8wPTQzMDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yMy45MiwtMTQxLjI3LC04MC45LC0wLDAuMzUsMC44MiwtMC4xMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mjk0MlwiOicrcHJvaj11dG0gK3pvbmU9MjggK2VsbHBzPWludGwgK3Rvd2dzODQ9LTQ5OSwtMjQ5LDMxNCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyOTQzXCI6Jytwcm9qPXV0bSArem9uZT0yOCArZWxscHM9aW50bCArdG93Z3M4ND0tMjg5LC0xMjQsNjAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mjk0NFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9LTU1LjUgK2s9MC45OTk5ICt4XzA9MzA0ODAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mjk0NVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9LTU4LjUgK2s9MC45OTk5ICt4XzA9MzA0ODAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mjk0NlwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9LTYxLjUgK2s9MC45OTk5ICt4XzA9MzA0ODAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mjk0N1wiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9LTY0LjUgK2s9MC45OTk5ICt4XzA9MzA0ODAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mjk0OFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9LTY3LjUgK2s9MC45OTk5ICt4XzA9MzA0ODAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mjk0OVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9LTcwLjUgK2s9MC45OTk5ICt4XzA9MzA0ODAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mjk1MFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9LTczLjUgK2s9MC45OTk5ICt4XzA9MzA0ODAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mjk1MVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9LTc2LjUgK2s9MC45OTk5ICt4XzA9MzA0ODAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mjk1MlwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9LTc5LjUgK2s9MC45OTk5ICt4XzA9MzA0ODAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mjk1M1wiOicrcHJvaj1zdGVyZWEgK2xhdF8wPTQ2LjUgK2xvbl8wPS02Ni41ICtrPTAuOTk5OTEyICt4XzA9MjUwMDAwMCAreV8wPTc1MDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI5NTRcIjonK3Byb2o9c3RlcmVhICtsYXRfMD00Ny4yNSArbG9uXzA9LTYzICtrPTAuOTk5OTEyICt4XzA9NDAwMDAwICt5XzA9ODAwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyOTU1XCI6Jytwcm9qPXV0bSArem9uZT0xMSArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mjk1NlwiOicrcHJvaj11dG0gK3pvbmU9MTIgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI5NTdcIjonK3Byb2o9dXRtICt6b25lPTEzICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyOTU4XCI6Jytwcm9qPXV0bSArem9uZT0xNyArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mjk1OVwiOicrcHJvaj11dG0gK3pvbmU9MTggK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI5NjBcIjonK3Byb2o9dXRtICt6b25lPTE5ICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyOTYxXCI6Jytwcm9qPXV0bSArem9uZT0yMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mjk2MlwiOicrcHJvaj11dG0gK3pvbmU9MjEgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI5NjRcIjonK3Byb2o9YWVhICtsYXRfMT01NSArbGF0XzI9NjUgK2xhdF8wPTUwICtsb25fMD0tMTU0ICt4XzA9MCAreV8wPTAgK2RhdHVtPU5BRDI3ICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mjk2NVwiOicrcHJvaj10bWVyYyArbGF0XzA9MzcuNSArbG9uXzA9LTg1LjY2NjY2NjY2NjY2NjY3ICtrPTAuOTk5OTY2NjY3ICt4XzA9OTk5OTkuOTk5ODk4Mzk5NzggK3lfMD0yNDk5OTkuOTk5ODk4Mzk5OCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI5NjZcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTM3LjUgK2xvbl8wPS04Ny4wODMzMzMzMzMzMzMzMyAraz0wLjk5OTk2NjY2NyAreF8wPTkwMDAwMCAreV8wPTI0OTk5OS45OTk4OTgzOTk4ICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mjk2N1wiOicrcHJvaj10bWVyYyArbGF0XzA9MzcuNSArbG9uXzA9LTg1LjY2NjY2NjY2NjY2NjY3ICtrPTAuOTk5OTY2NjY3ICt4XzA9OTk5OTkuOTk5ODk4Mzk5NzggK3lfMD0yNDk5OTkuOTk5ODk4Mzk5OCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI5NjhcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTM3LjUgK2xvbl8wPS04Ny4wODMzMzMzMzMzMzMzMyAraz0wLjk5OTk2NjY2NyAreF8wPTkwMDAwMCAreV8wPTI0OTk5OS45OTk4OTgzOTk4ICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mjk2OVwiOicrcHJvaj11dG0gK3pvbmU9MjAgK2VsbHBzPWludGwgK3Rvd2dzODQ9MTM3LDI0OCwtNDMwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI5NzBcIjonK3Byb2o9dXRtICt6b25lPTIwICtlbGxwcz1pbnRsICt0b3dnczg0PS00NjcsLTE2LC0zMDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mjk3MVwiOicrcHJvaj11dG0gK3pvbmU9MjIgK2VsbHBzPWludGwgK3Rvd2dzODQ9LTE4NiwyMzAsMTEwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI5NzJcIjonK3Byb2o9dXRtICt6b25lPTIyICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyOTczXCI6Jytwcm9qPXV0bSArem9uZT0yMCArZWxscHM9aW50bCArdG93Z3M4ND0xODYsNDgyLDE1MSwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyOTc1XCI6Jytwcm9qPXV0bSArem9uZT00MCArc291dGggK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI5NzZcIjonK3Byb2o9dXRtICt6b25lPTYgK3NvdXRoICtlbGxwcz1pbnRsICt0b3dnczg0PTE2MiwxMTcsMTU0LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI5NzdcIjonK3Byb2o9dXRtICt6b25lPTUgK3NvdXRoICtlbGxwcz1pbnRsICt0b3dnczg0PTcyLjQzOCwzNDUuOTE4LDc5LjQ4NiwxLjYwNDUsMC44ODIzLDAuNTU2NSwxLjM3NDYgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI5NzhcIjonK3Byb2o9dXRtICt6b25lPTcgK3NvdXRoICtlbGxwcz1pbnRsICt0b3dnczg0PTg0LDI3NCw2NSwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyOTc5XCI6Jytwcm9qPXV0bSArem9uZT00MiArc291dGggK2VsbHBzPWludGwgK3Rvd2dzODQ9MTQ1LC0xODcsMTAzLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI5ODBcIjonK3Byb2o9dXRtICt6b25lPTM4ICtzb3V0aCArZWxscHM9aW50bCArdG93Z3M4ND0tMzgyLC01OSwtMjYyLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI5ODFcIjonK3Byb2o9dXRtICt6b25lPTU4ICtzb3V0aCArZWxscHM9aW50bCArdG93Z3M4ND0zMzUuNDcsMjIyLjU4LC0yMzAuOTQsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mjk4MlwiOicrcHJvaj11dG0gK3pvbmU9NTggK3NvdXRoICtlbGxwcz1pbnRsICt0b3dnczg0PS0xMywtMzQ4LDI5MiwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyOTgzXCI6Jytwcm9qPXV0bSArem9uZT01OCArc291dGggK2VsbHBzPWludGwgK3Rvd2dzODQ9LTEyMi4zODMsLTE4OC42OTYsMTAzLjM0NCwzLjUxMDcsLTQuOTY2OCwtNS43MDQ3LDQuNDc5OCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mjk4NFwiOicrcHJvaj1sY2MgK2xhdF8xPS0yMC42NjY2NjY2NjY2NjY2NyArbGF0XzI9LTIyLjMzMzMzMzMzMzMzMzMzICtsYXRfMD0tMjEuNSArbG9uXzA9MTY2ICt4XzA9NDAwMDAwICt5XzA9MzAwMDAwICtlbGxwcz1pbnRsICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI5ODdcIjonK3Byb2o9dXRtICt6b25lPTIxICtlbGxwcz1jbHJrNjYgK3Rvd2dzODQ9MzAsNDMwLDM2OCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyOTg4XCI6Jytwcm9qPXV0bSArem9uZT0xICtzb3V0aCArZWxscHM9aW50bCArdG93Z3M4ND0yNTMsLTEzMiwtMTI3LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI5ODlcIjonK3Byb2o9dXRtICt6b25lPTIwICtlbGxwcz1XR1M4NCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyOTkwXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0tMjEuMTE2NjY2NjY2NjY2NjcgK2xvbl8wPTU1LjUzMzMzMzMzMzMzMzMzICtrPTEgK3hfMD01MDAwMCAreV8wPTE2MDAwMCArZWxscHM9aW50bCArdG93Z3M4ND05NCwtOTQ4LC0xMjYyLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI5OTFcIjonK3Byb2o9bGNjICtsYXRfMT00MyArbGF0XzI9NDUuNSArbGF0XzA9NDEuNzUgK2xvbl8wPS0xMjAuNSAreF8wPTQwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI5OTJcIjonK3Byb2o9bGNjICtsYXRfMT00MyArbGF0XzI9NDUuNSArbGF0XzA9NDEuNzUgK2xvbl8wPS0xMjAuNSAreF8wPTM5OTk5OS45OTk5OTg0ICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9ZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI5OTNcIjonK3Byb2o9bGNjICtsYXRfMT00MyArbGF0XzI9NDUuNSArbGF0XzA9NDEuNzUgK2xvbl8wPS0xMjAuNSAreF8wPTQwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI5OTRcIjonK3Byb2o9bGNjICtsYXRfMT00MyArbGF0XzI9NDUuNSArbGF0XzA9NDEuNzUgK2xvbl8wPS0xMjAuNSAreF8wPTM5OTk5OS45OTk5OTg0ICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9ZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI5OTVcIjonK3Byb2o9dXRtICt6b25lPTU4ICtzb3V0aCArZWxscHM9aW50bCArdG93Z3M4ND0yODcuNTgsMTc3Ljc4LC0xMzUuNDEsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mjk5NlwiOicrcHJvaj11dG0gK3pvbmU9NTggK3NvdXRoICtlbGxwcz1pbnRsICt0b3dnczg0PS0xMywtMzQ4LDI5MiwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyOTk3XCI6Jytwcm9qPXV0bSArem9uZT01OCArc291dGggK2VsbHBzPWludGwgK3Rvd2dzODQ9LTQ4MC4yNiwtNDM4LjMyLC02NDMuNDI5LDE2LjMxMTksMjAuMTcyMSwtNC4wMzQ5LC0xMTEuNyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mjk5OFwiOicrcHJvaj11dG0gK3pvbmU9NTggK3NvdXRoICtlbGxwcz1pbnRsICt0b3dnczg0PS0xMC4xOCwtMzUwLjQzLDI5MS4zNywwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyOTk5XCI6Jytwcm9qPXV0bSArem9uZT0zOCArc291dGggK2VsbHBzPWludGwgK3Rvd2dzODQ9LTk2Myw1MTAsLTM1OSwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMDAwXCI6Jytwcm9qPW1lcmMgK2xvbl8wPTExMCAraz0wLjk5NyAreF8wPTM5MDAwMDAgK3lfMD05MDAwMDAgK2VsbHBzPWJlc3NlbCArdG93Z3M4ND0tNDAzLDY4NCw0MSwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMDAxXCI6Jytwcm9qPW1lcmMgK2xvbl8wPTExMCAraz0wLjk5NyAreF8wPTM5MDAwMDAgK3lfMD05MDAwMDAgK2VsbHBzPWJlc3NlbCArdG93Z3M4ND0tMzc3LDY4MSwtNTAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzAwMlwiOicrcHJvaj1tZXJjICtsb25fMD0xMTAgK2s9MC45OTcgK3hfMD0zOTAwMDAwICt5XzA9OTAwMDAwICtlbGxwcz1iZXNzZWwgK3Rvd2dzODQ9LTU4Ny44LDUxOS43NSwxNDUuNzYsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzAwM1wiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9OSAraz0wLjk5OTYgK3hfMD0xNTAwMDAwICt5XzA9MCArZWxscHM9aW50bCArdG93Z3M4ND0tMTA0LjEsLTQ5LjEsLTkuOSwwLjk3MSwtMi45MTcsMC43MTQsLTExLjY4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMDA0XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xNSAraz0wLjk5OTYgK3hfMD0yNTIwMDAwICt5XzA9MCArZWxscHM9aW50bCArdG93Z3M4ND0tMTA0LjEsLTQ5LjEsLTkuOSwwLjk3MSwtMi45MTcsMC43MTQsLTExLjY4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMDA1XCI6Jytwcm9qPWFlYSArbGF0XzE9NTAgK2xhdF8yPTU4LjUgK2xhdF8wPTQ1ICtsb25fMD0tMTI2ICt4XzA9MTAwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMwMDZcIjonK3Byb2o9dXRtICt6b25lPTMzICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMDA3XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMiAraz0xICt4XzA9MTUwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzAwOFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTMuNSAraz0xICt4XzA9MTUwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzAwOVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTUgK2s9MSAreF8wPTE1MDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMwMTBcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTE2LjUgK2s9MSAreF8wPTE1MDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMwMTFcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTE4ICtrPTEgK3hfMD0xNTAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMDEyXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xNC4yNSAraz0xICt4XzA9MTUwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzAxM1wiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTUuNzUgK2s9MSAreF8wPTE1MDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMwMTRcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTE3LjI1ICtrPTEgK3hfMD0xNTAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMDE1XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xOC43NSAraz0xICt4XzA9MTUwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzAxNlwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MjAuMjUgK2s9MSAreF8wPTE1MDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMwMTdcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTIxLjc1ICtrPTEgK3hfMD0xNTAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMDE4XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0yMy4yNSAraz0xICt4XzA9MTUwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzAxOVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTEuMzA4Mjc3Nzc3Nzc3NzggK2s9MSAreF8wPTE1MDAwMDAgK3lfMD0wICtlbGxwcz1iZXNzZWwgK3Rvd2dzODQ9NDE0LjEsNDEuMyw2MDMuMSwtMC44NTUsMi4xNDEsLTcuMDIzLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMwMjBcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTEzLjU1ODI3Nzc3Nzc3Nzc4ICtrPTEgK3hfMD0xNTAwMDAwICt5XzA9MCArZWxscHM9YmVzc2VsICt0b3dnczg0PTQxNC4xLDQxLjMsNjAzLjEsLTAuODU1LDIuMTQxLC03LjAyMywwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMDIxXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xNS44MDgyNzc3Nzc3Nzc3OCAraz0xICt4XzA9MTUwMDAwMCAreV8wPTAgK2VsbHBzPWJlc3NlbCArdG93Z3M4ND00MTQuMSw0MS4zLDYwMy4xLC0wLjg1NSwyLjE0MSwtNy4wMjMsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzAyMlwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTguMDU4Mjc3Nzc3Nzc3NzggK2s9MSAreF8wPTE1MDAwMDAgK3lfMD0wICtlbGxwcz1iZXNzZWwgK3Rvd2dzODQ9NDE0LjEsNDEuMyw2MDMuMSwtMC44NTUsMi4xNDEsLTcuMDIzLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMwMjNcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTIwLjMwODI3Nzc3Nzc3Nzc4ICtrPTEgK3hfMD0xNTAwMDAwICt5XzA9MCArZWxscHM9YmVzc2VsICt0b3dnczg0PTQxNC4xLDQxLjMsNjAzLjEsLTAuODU1LDIuMTQxLC03LjAyMywwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMDI0XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0yMi41NTgyNzc3Nzc3Nzc3OCAraz0xICt4XzA9MTUwMDAwMCAreV8wPTAgK2VsbHBzPWJlc3NlbCArdG93Z3M4ND00MTQuMSw0MS4zLDYwMy4xLC0wLjg1NSwyLjE0MSwtNy4wMjMsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzAyNVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTEuMzA4Mjc3Nzc3Nzc3NzggK2s9MSAreF8wPTE1MDAwMDAgK3lfMD0wICtlbGxwcz1iZXNzZWwgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMwMjZcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTEzLjU1ODI3Nzc3Nzc3Nzc4ICtrPTEgK3hfMD0xNTAwMDAwICt5XzA9MCArZWxscHM9YmVzc2VsICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMDI3XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xNS44MDgyNzc3Nzc3Nzc3OCAraz0xICt4XzA9MTUwMDAwMCAreV8wPTAgK2VsbHBzPWJlc3NlbCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzAyOFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTguMDU4Mjc3Nzc3Nzc3NzggK2s9MSAreF8wPTE1MDAwMDAgK3lfMD0wICtlbGxwcz1iZXNzZWwgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMwMjlcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTIwLjMwODI3Nzc3Nzc3Nzc4ICtrPTEgK3hfMD0xNTAwMDAwICt5XzA9MCArZWxscHM9YmVzc2VsICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMDMwXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0yMi41NTgyNzc3Nzc3Nzc3OCAraz0xICt4XzA9MTUwMDAwMCAreV8wPTAgK2VsbHBzPWJlc3NlbCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzAzMVwiOicrcHJvaj1zdGVyZSArbGF0XzA9LTkwICtsYXRfdHM9LTcxICtsb25fMD0wICtrPTEgK3hfMD0wICt5XzA9MCArZGF0dW09V0dTODQgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMwMzJcIjonK3Byb2o9c3RlcmUgK2xhdF8wPS05MCArbGF0X3RzPS03MSArbG9uXzA9NzAgK2s9MSAreF8wPTYwMDAwMDAgK3lfMD02MDAwMDAwICtkYXR1bT1XR1M4NCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzAzM1wiOicrcHJvaj1sY2MgK2xhdF8xPS02OC41ICtsYXRfMj0tNzQuNSArbGF0XzA9LTUwICtsb25fMD03MCAreF8wPTYwMDAwMDAgK3lfMD02MDAwMDAwICtkYXR1bT1XR1M4NCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzAzNFwiOicrcHJvaj1sY2MgK2xhdF8xPTM1ICtsYXRfMj02NSArbGF0XzA9NTIgK2xvbl8wPTEwICt4XzA9NDAwMDAwMCAreV8wPTI4MDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMwMzVcIjonK3Byb2o9bGFlYSArbGF0XzA9NTIgK2xvbl8wPTEwICt4XzA9NDMyMTAwMCAreV8wPTMyMTAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMwMzZcIjonK3Byb2o9dXRtICt6b25lPTM2ICtzb3V0aCArZWxscHM9V0dTODQgK3Rvd2dzODQ9MCwwLDAsLTAsLTAsLTAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzAzN1wiOicrcHJvaj11dG0gK3pvbmU9MzcgK3NvdXRoICtlbGxwcz1XR1M4NCArdG93Z3M4ND0wLDAsMCwtMCwtMCwtMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMDM4XCI6Jytwcm9qPXV0bSArem9uZT0yNiArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzAzOVwiOicrcHJvaj11dG0gK3pvbmU9MjcgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMwNDBcIjonK3Byb2o9dXRtICt6b25lPTI4ICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMDQxXCI6Jytwcm9qPXV0bSArem9uZT0yOSArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzA0MlwiOicrcHJvaj11dG0gK3pvbmU9MzAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMwNDNcIjonK3Byb2o9dXRtICt6b25lPTMxICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMDQ0XCI6Jytwcm9qPXV0bSArem9uZT0zMiArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzA0NVwiOicrcHJvaj11dG0gK3pvbmU9MzMgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMwNDZcIjonK3Byb2o9dXRtICt6b25lPTM0ICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMDQ3XCI6Jytwcm9qPXV0bSArem9uZT0zNSArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzA0OFwiOicrcHJvaj11dG0gK3pvbmU9MzYgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMwNDlcIjonK3Byb2o9dXRtICt6b25lPTM3ICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMDUwXCI6Jytwcm9qPXV0bSArem9uZT0zOCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzA1MVwiOicrcHJvaj11dG0gK3pvbmU9MzkgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMwNTRcIjonK3Byb2o9dXRtICt6b25lPTI2ICtlbGxwcz1pbnRsICt0b3dnczg0PS03Myw0NiwtODYsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzA1NVwiOicrcHJvaj11dG0gK3pvbmU9MjcgK2VsbHBzPWludGwgK3Rvd2dzODQ9LTczLDQ2LC04NiwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMDU2XCI6Jytwcm9qPXV0bSArem9uZT0yOCArZWxscHM9aW50bCArdG93Z3M4ND0tNzMsNDYsLTg2LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMwNTdcIjonK3Byb2o9bGNjICtsYXRfMT02NC4yNSArbGF0XzI9NjUuNzUgK2xhdF8wPTY1ICtsb25fMD0tMTkgK3hfMD01MDAwMDAgK3lfMD01MDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMwNThcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPS04LjUgK2s9MSAreF8wPTUwMDAwICt5XzA9LTc4MDAwMDAgK2VsbHBzPWludGwgK3Rvd2dzODQ9OTgyLjYwOSw1NTIuNzUzLC01NDAuODczLDYuNjgxNjMsLTMxLjYxMTUsLTE5Ljg0ODIsMTYuODA1ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMDU5XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0yNCAraz0wLjk5OTYgK3hfMD01MDAwMDAgK3lfMD0tNjAwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzA2MFwiOicrcHJvaj11dG0gK3pvbmU9NTggK3NvdXRoICtlbGxwcz1pbnRsICt0b3dnczg0PS0xMS42NCwtMzQ4LjYsMjkxLjk4LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMwNjFcIjonK3Byb2o9dXRtICt6b25lPTI4ICtlbGxwcz1pbnRsICt0b3dnczg0PS01MDIuODYyLC0yNDcuNDM4LDMxMi43MjQsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzA2MlwiOicrcHJvaj11dG0gK3pvbmU9MjYgK2VsbHBzPWludGwgK3Rvd2dzODQ9LTIwNC42MTksMTQwLjE3Niw1NS4yMjYsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzA2M1wiOicrcHJvaj11dG0gK3pvbmU9MjYgK2VsbHBzPWludGwgK3Rvd2dzODQ9LTEwNi4yMjYsMTY2LjM2NiwtMzcuODkzLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMwNjRcIjonK3Byb2o9dXRtICt6b25lPTMyICtlbGxwcz1XR1M4NCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMDY1XCI6Jytwcm9qPXV0bSArem9uZT0zMyArZWxscHM9V0dTODQgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzA2NlwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MzcgK2s9MC45OTk4ICt4XzA9NTAwMDAwICt5XzA9LTMwMDAwMDAgK2VsbHBzPWludGwgK3Rvd2dzODQ9LTg3LC05OCwtMTIxLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMwNjdcIjonK3Byb2o9dXRtICt6b25lPTM1ICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMDY4XCI6Jytwcm9qPWNhc3MgK2xhdF8wPTUyLjQxODY0ODI3Nzc3Nzc4ICtsb25fMD0xMy42MjcyMDM2NjY2NjY2NyAreF8wPTQwMDAwICt5XzA9MTAwMDAgK2VsbHBzPWJlc3NlbCArdG93Z3M4ND01OTguMSw3My43LDQxOC4yLDAuMjAyLDAuMDQ1LC0yLjQ1NSw2LjcgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMwNjlcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPS05MCAraz0wLjk5OTYgK3hfMD01MDAwMDAgK3lfMD0tNDUwMDAwMCArZGF0dW09TkFEMjcgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMwNzBcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPS05MCAraz0wLjk5OTYgK3hfMD01MjAwMDAgK3lfMD0tNDQ4MDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzA3MVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9LTkwICtrPTAuOTk5NiAreF8wPTUyMDAwMCAreV8wPS00NDgwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMDcyXCI6Jytwcm9qPXRtZXJjICtsYXRfMD00My44MzMzMzMzMzMzMzMzNCArbG9uXzA9LTY3Ljg3NSAraz0wLjk5OTk4ICt4XzA9NzAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzA3M1wiOicrcHJvaj10bWVyYyArbGF0XzA9NDMgK2xvbl8wPS02OS4xMjUgK2s9MC45OTk5OCAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMwNzRcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTQyLjgzMzMzMzMzMzMzMzM0ICtsb25fMD0tNzAuMzc1ICtrPTAuOTk5OTggK3hfMD0zMDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMDc1XCI6Jytwcm9qPXRtZXJjICtsYXRfMD00My44MzMzMzMzMzMzMzMzNCArbG9uXzA9LTY3Ljg3NSAraz0wLjk5OTk4ICt4XzA9NzAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzA3NlwiOicrcHJvaj10bWVyYyArbGF0XzA9NDMgK2xvbl8wPS02OS4xMjUgK2s9MC45OTk5OCAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMwNzdcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTQyLjgzMzMzMzMzMzMzMzM0ICtsb25fMD0tNzAuMzc1ICtrPTAuOTk5OTggK3hfMD0zMDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMDc4XCI6Jytwcm9qPW9tZXJjICtsYXRfMD00NS4zMDkxNjY2NjY2NjY2NiArbG9uYz0tODYgK2FscGhhPTMzNy4yNTU1NiAraz0wLjk5OTYgK3hfMD0yNTQ2NzMxLjQ5NiAreV8wPS00MzU0MDA5LjgxNiArbm9fdW9mZiArZ2FtbWE9MzM3LjI1NTU2ICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMDc5XCI6Jytwcm9qPW9tZXJjICtsYXRfMD00NS4zMDkxNjY2NjY2NjY2NiArbG9uYz0tODYgK2FscGhhPTMzNy4yNTU1NiAraz0wLjk5OTYgK3hfMD0yNTQ2NzMxLjQ5NiAreV8wPS00MzU0MDA5LjgxNiArbm9fdW9mZiArZ2FtbWE9MzM3LjI1NTU2ICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMDgwXCI6Jytwcm9qPWxjYyArbGF0XzE9MjcuNDE2NjY2NjY2NjY2NjcgK2xhdF8yPTM0LjkxNjY2NjY2NjY2NjY2ICtsYXRfMD0zMS4xNjY2NjY2NjY2NjY2NyArbG9uXzA9LTEwMCAreF8wPTkxNDQwMCAreV8wPTkxNDQwMCArZGF0dW09TkFEMjcgK3VuaXRzPWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzozMDgxXCI6Jytwcm9qPWxjYyArbGF0XzE9MjcuNDE2NjY2NjY2NjY2NjcgK2xhdF8yPTM0LjkxNjY2NjY2NjY2NjY2ICtsYXRfMD0zMS4xNjY2NjY2NjY2NjY2NyArbG9uXzA9LTEwMCAreF8wPTEwMDAwMDAgK3lfMD0xMDAwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMDgyXCI6Jytwcm9qPWxjYyArbGF0XzE9MjcuNSArbGF0XzI9MzUgK2xhdF8wPTE4ICtsb25fMD0tMTAwICt4XzA9MTUwMDAwMCAreV8wPTUwMDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMwODNcIjonK3Byb2o9YWVhICtsYXRfMT0yNy41ICtsYXRfMj0zNSArbGF0XzA9MTggK2xvbl8wPS0xMDAgK3hfMD0xNTAwMDAwICt5XzA9NjAwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzA4NFwiOicrcHJvaj1sY2MgK2xhdF8xPTI3LjUgK2xhdF8yPTM1ICtsYXRfMD0xOCArbG9uXzA9LTEwMCAreF8wPTE1MDAwMDAgK3lfMD01MDAwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMDg1XCI6Jytwcm9qPWFlYSArbGF0XzE9MjcuNSArbGF0XzI9MzUgK2xhdF8wPTE4ICtsb25fMD0tMTAwICt4XzA9MTUwMDAwMCAreV8wPTYwMDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMwODZcIjonK3Byb2o9YWVhICtsYXRfMT0yNCArbGF0XzI9MzEuNSArbGF0XzA9MjQgK2xvbl8wPS04NCAreF8wPTQwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMwODdcIjonK3Byb2o9YWVhICtsYXRfMT0yNCArbGF0XzI9MzEuNSArbGF0XzA9MjQgK2xvbl8wPS04NCAreF8wPTQwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMwODhcIjonK3Byb2o9bGNjICtsYXRfMT0zNy4wODMzMzMzMzMzMzMzNCArbGF0XzI9MzguNjY2NjY2NjY2NjY2NjYgK2xhdF8wPTM2LjMzMzMzMzMzMzMzMzM0ICtsb25fMD0tODUuNzUgK3hfMD0xNTAwMDAwICt5XzA9MTAwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzA4OVwiOicrcHJvaj1sY2MgK2xhdF8xPTM3LjA4MzMzMzMzMzMzMzM0ICtsYXRfMj0zOC42NjY2NjY2NjY2NjY2NiArbGF0XzA9MzYuMzMzMzMzMzMzMzMzMzQgK2xvbl8wPS04NS43NSAreF8wPTE1MDAwMDAgK3lfMD05OTk5OTkuOTk5ODk4Mzk5OCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMwOTBcIjonK3Byb2o9bGNjICtsYXRfMT0zNy4wODMzMzMzMzMzMzMzNCArbGF0XzI9MzguNjY2NjY2NjY2NjY2NjYgK2xhdF8wPTM2LjMzMzMzMzMzMzMzMzM0ICtsb25fMD0tODUuNzUgK3hfMD0xNTAwMDAwICt5XzA9MTAwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzA5MVwiOicrcHJvaj1sY2MgK2xhdF8xPTM3LjA4MzMzMzMzMzMzMzM0ICtsYXRfMj0zOC42NjY2NjY2NjY2NjY2NiArbGF0XzA9MzYuMzMzMzMzMzMzMzMzMzQgK2xvbl8wPS04NS43NSAreF8wPTE1MDAwMDAgK3lfMD05OTk5OTkuOTk5ODk4Mzk5OCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMwOTJcIjonK3Byb2o9dXRtICt6b25lPTUxICtlbGxwcz1iZXNzZWwgK3Rvd2dzODQ9LTE0Ni40MTQsNTA3LjMzNyw2ODAuNTA3LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMwOTNcIjonK3Byb2o9dXRtICt6b25lPTUyICtlbGxwcz1iZXNzZWwgK3Rvd2dzODQ9LTE0Ni40MTQsNTA3LjMzNyw2ODAuNTA3LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMwOTRcIjonK3Byb2o9dXRtICt6b25lPTUzICtlbGxwcz1iZXNzZWwgK3Rvd2dzODQ9LTE0Ni40MTQsNTA3LjMzNyw2ODAuNTA3LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMwOTVcIjonK3Byb2o9dXRtICt6b25lPTU0ICtlbGxwcz1iZXNzZWwgK3Rvd2dzODQ9LTE0Ni40MTQsNTA3LjMzNyw2ODAuNTA3LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMwOTZcIjonK3Byb2o9dXRtICt6b25lPTU1ICtlbGxwcz1iZXNzZWwgK3Rvd2dzODQ9LTE0Ni40MTQsNTA3LjMzNyw2ODAuNTA3LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMwOTdcIjonK3Byb2o9dXRtICt6b25lPTUxICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMDk4XCI6Jytwcm9qPXV0bSArem9uZT01MiArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzA5OVwiOicrcHJvaj11dG0gK3pvbmU9NTMgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMxMDBcIjonK3Byb2o9dXRtICt6b25lPTU0ICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMTAxXCI6Jytwcm9qPXV0bSArem9uZT01NSArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzEwMlwiOicrcHJvaj1sY2MgK2xhdF8xPS0xNC4yNjY2NjY2NjY2NjY2NyArbGF0XzA9LTE0LjI2NjY2NjY2NjY2NjY3ICtsb25fMD0tMTcwICtrXzA9MSAreF8wPTE1MjQwMC4zMDQ4MDA2MDk2ICt5XzA9OTUxNjkuMzExNjU4NjIzMzIgK2VsbHBzPWNscms2NiArdG93Z3M4ND0tMTE1LDExOCw0MjYsMCwwLDAsMCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMxMDNcIjonK3Byb2o9dXRtICt6b25lPTI4ICtlbGxwcz1jbHJrODAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMxMDRcIjonK3Byb2o9dXRtICt6b25lPTI5ICtlbGxwcz1jbHJrODAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMxMDVcIjonK3Byb2o9dXRtICt6b25lPTMwICtlbGxwcz1jbHJrODAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMxMDZcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTkwICtrPTAuOTk5NiAreF8wPTUwMDAwMCAreV8wPTAgK2E9NjM3NzI3Ni4zNDUgK2I9NjM1NjA3NS40MTMxNDAyNCArdG93Z3M4ND0yODMuNyw3MzUuOSwyNjEuMSwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMTA3XCI6Jytwcm9qPWxjYyArbGF0XzE9LTI4ICtsYXRfMj0tMzYgK2xhdF8wPS0zMiArbG9uXzA9MTM1ICt4XzA9MTAwMDAwMCAreV8wPTIwMDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMxMDhcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTQ5LjUgK2xvbl8wPS0yLjQxNjY2NjY2NjY2NjY2NyAraz0wLjk5OTk5NyAreF8wPTQ3MDAwICt5XzA9NTAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMxMDlcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTQ5LjIyNSArbG9uXzA9LTIuMTM1ICtrPTAuOTk5OTk5OTAwMDAwMDAwMSAreF8wPTQwMDAwICt5XzA9NzAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMxMTBcIjonK3Byb2o9bGNjICtsYXRfMT0tMzYgK2xhdF8yPS0zOCArbGF0XzA9LTM3ICtsb25fMD0xNDUgK3hfMD0yNTAwMDAwICt5XzA9NDUwMDAwMCArZWxscHM9YXVzdF9TQSArdG93Z3M4ND0tMTE3LjgwOCwtNTEuNTM2LDEzNy43ODQsMC4zMDMsMC40NDYsMC4yMzQsLTAuMjkgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMxMTFcIjonK3Byb2o9bGNjICtsYXRfMT0tMzYgK2xhdF8yPS0zOCArbGF0XzA9LTM3ICtsb25fMD0xNDUgK3hfMD0yNTAwMDAwICt5XzA9MjUwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzExMlwiOicrcHJvaj1sY2MgK2xhdF8xPS0xOCArbGF0XzI9LTM2ICtsYXRfMD0wICtsb25fMD0xMzQgK3hfMD0wICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzExM1wiOicrcHJvaj10bWVyYyArbGF0XzA9LTI4ICtsb25fMD0xNTMgK2s9MC45OTk5OSAreF8wPTUwMDAwICt5XzA9MTAwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMTE0XCI6Jytwcm9qPXRtZXJjICtsYXRfMD00LjU5NjIwMDQxNjY2NjY2NiArbG9uXzA9LTgwLjA3NzUwNzkxNjY2NjY2ICtrPTEgK3hfMD0xMDAwMDAwICt5XzA9MTAwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzExNVwiOicrcHJvaj10bWVyYyArbGF0XzA9NC41OTYyMDA0MTY2NjY2NjYgK2xvbl8wPS03Ny4wNzc1MDc5MTY2NjY2NiAraz0xICt4XzA9MTAwMDAwMCAreV8wPTEwMDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMxMTZcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTQuNTk2MjAwNDE2NjY2NjY2ICtsb25fMD0tNzQuMDc3NTA3OTE2NjY2NjYgK2s9MSAreF8wPTEwMDAwMDAgK3lfMD0xMDAwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMTE3XCI6Jytwcm9qPXRtZXJjICtsYXRfMD00LjU5NjIwMDQxNjY2NjY2NiArbG9uXzA9LTcxLjA3NzUwNzkxNjY2NjY2ICtrPTEgK3hfMD0xMDAwMDAwICt5XzA9MTAwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzExOFwiOicrcHJvaj10bWVyYyArbGF0XzA9NC41OTYyMDA0MTY2NjY2NjYgK2xvbl8wPS02OC4wNzc1MDc5MTY2NjY2NiAraz0xICt4XzA9MTAwMDAwMCAreV8wPTEwMDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMxMTlcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTEwLjUgK2s9MC45OTkgK3hfMD0xMDAwMDAwICt5XzA9MTAwMDAwMCArZWxscHM9aW50bCArdG93Z3M4ND0tMjA2LjEsLTE3NC43LC04Ny43LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMxMjBcIjonK3Byb2o9c3RlcmVhICtsYXRfMD01MC42MjUgK2xvbl8wPTIxLjA4MzMzMzMzMzMzMzMzICtrPTAuOTk5OCAreF8wPTQ2MzcwMDAgK3lfMD01NDY3MDAwICtlbGxwcz1rcmFzcyArdG93Z3M4ND0zMy40LC0xNDYuNiwtNzYuMywtMC4zNTksLTAuMDUzLDAuODQ0LC0wLjg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMTIxXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMTcgK2s9MC45OTk5NSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWNscms2NiArdG93Z3M4ND0tMTI3LjYyLC02Ny4yNCwtNDcuMDQsLTMuMDY4LDQuOTAzLDEuNTc4LC0xLjA2ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMTIyXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMTkgK2s9MC45OTk5NSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWNscms2NiArdG93Z3M4ND0tMTI3LjYyLC02Ny4yNCwtNDcuMDQsLTMuMDY4LDQuOTAzLDEuNTc4LC0xLjA2ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMTIzXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMjEgK2s9MC45OTk5NSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWNscms2NiArdG93Z3M4ND0tMTI3LjYyLC02Ny4yNCwtNDcuMDQsLTMuMDY4LDQuOTAzLDEuNTc4LC0xLjA2ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMTI0XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMjMgK2s9MC45OTk5NSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWNscms2NiArdG93Z3M4ND0tMTI3LjYyLC02Ny4yNCwtNDcuMDQsLTMuMDY4LDQuOTAzLDEuNTc4LC0xLjA2ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMTI1XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMjUgK2s9MC45OTk5NSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWNscms2NiArdG93Z3M4ND0tMTI3LjYyLC02Ny4yNCwtNDcuMDQsLTMuMDY4LDQuOTAzLDEuNTc4LC0xLjA2ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMTI2XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xOSAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzEyN1wiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MjAgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMxMjhcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTIxICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMTI5XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0yMiAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzEzMFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MjMgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMxMzFcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTI0ICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMTMyXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0yNSAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzEzM1wiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MjYgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMxMzRcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTI3ICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMTM1XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0yOCAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzEzNlwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MjkgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMxMzdcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTMwICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMTM4XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0zMSAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzE0MFwiOicrcHJvaj1jYXNzICtsYXRfMD0tMTggK2xvbl8wPTE3OCAreF8wPTEwOTQzNS4zOTIgK3lfMD0xNDE2MjIuMjcyICthPTYzNzgzMDYuMzY5NiArYj02MzU2NTcxLjk5NiArdG93Z3M4ND01MSwzOTEsLTM2LDAsMCwwLDAgK3RvX21ldGVyPTAuMjAxMTY4ICtub19kZWZzICcsXG4gIFwiRVBTRzozMTQxXCI6Jytwcm9qPXV0bSArem9uZT02MCArc291dGggK2VsbHBzPWludGwgK3Rvd2dzODQ9MjY1LjAyNSwzODQuOTI5LC0xOTQuMDQ2LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMxNDJcIjonK3Byb2o9dXRtICt6b25lPTEgK3NvdXRoICtlbGxwcz1pbnRsICt0b3dnczg0PTI2NS4wMjUsMzg0LjkyOSwtMTk0LjA0NiwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMTQzXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0tMTcgK2xvbl8wPTE3OC43NSAraz0wLjk5OTg1ICt4XzA9MjAwMDAwMCAreV8wPTQwMDAwMDAgK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCw0LjUsMCwwLDAuNTU0LDAuMjI2MyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzE0NlwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTggK2s9MSAreF8wPTY1MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yMy45MiwtMTQxLjI3LC04MC45LC0wLDAuMzUsMC44MiwtMC4xMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzE0N1wiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTggK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTIzLjkyLC0xNDEuMjcsLTgwLjksLTAsMC4zNSwwLjgyLC0wLjEyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMTQ4XCI6Jytwcm9qPXV0bSArem9uZT00OCArYT02Mzc3Mjc2LjM0NSArYj02MzU2MDc1LjQxMzE0MDI0ICt0b3dnczg0PTE5OCw4ODEsMzE3LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMxNDlcIjonK3Byb2o9dXRtICt6b25lPTQ5ICthPTYzNzcyNzYuMzQ1ICtiPTYzNTYwNzUuNDEzMTQwMjQgK3Rvd2dzODQ9MTk4LDg4MSwzMTcsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzE1MFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTggK2s9MSAreF8wPTY1MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yNC40NywtMTMwLjg5LC04MS41NiwtMCwtMCwwLjEzLC0wLjIyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMTUxXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xOCAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjQuNDcsLTEzMC44OSwtODEuNTYsLTAsLTAsMC4xMywtMC4yMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzE1MlwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTguMDU3NzkgK2s9MC45OTk5OTQyNSAreF8wPTEwMDE3OC4xODA4ICt5XzA9LTY1MDA2MTQuNzgzNiArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzE1M1wiOicrcHJvaj1hZWEgK2xhdF8xPTUwICtsYXRfMj01OC41ICtsYXRfMD00NSArbG9uXzA9LTEyNiAreF8wPTEwMDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMTU0XCI6Jytwcm9qPXV0bSArem9uZT03ICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMTU1XCI6Jytwcm9qPXV0bSArem9uZT04ICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMTU2XCI6Jytwcm9qPXV0bSArem9uZT05ICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMTU3XCI6Jytwcm9qPXV0bSArem9uZT0xMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzE1OFwiOicrcHJvaj11dG0gK3pvbmU9MTQgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMxNTlcIjonK3Byb2o9dXRtICt6b25lPTE1ICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMTYwXCI6Jytwcm9qPXV0bSArem9uZT0xNiArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzE2MVwiOicrcHJvaj1sY2MgK2xhdF8xPTQ0LjUgK2xhdF8yPTUzLjUgK2xhdF8wPTAgK2xvbl8wPS04NSAreF8wPTkzMDAwMCAreV8wPTY0MzAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMxNjJcIjonK3Byb2o9bGNjICtsYXRfMT00NC41ICtsYXRfMj01My41ICtsYXRfMD0wICtsb25fMD0tODUgK3hfMD05MzAwMDAgK3lfMD02NDMwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMTYzXCI6Jytwcm9qPWxjYyArbGF0XzE9LTIwLjY2NjY2NjY2NjY2NjY3ICtsYXRfMj0tMjIuMzMzMzMzMzMzMzMzMzMgK2xhdF8wPS0yMS41ICtsb25fMD0xNjYgK3hfMD00MDAwMDAgK3lfMD0zMDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMxNjRcIjonK3Byb2o9dXRtICt6b25lPTU4ICtzb3V0aCArZWxscHM9V0dTODQgK3Rvd2dzODQ9LTU2LjI2MywxNi4xMzYsLTIyLjg1NiwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMTY1XCI6Jytwcm9qPWxjYyArbGF0XzE9LTIyLjI0NDY5MTc1ICtsYXRfMj0tMjIuMjk0NjkxNzUgK2xhdF8wPS0yMi4yNjk2OTE3NSArbG9uXzA9MTY2LjQ0MjQyNTc1ICt4XzA9MC42NiAreV8wPTEuMDIgK2VsbHBzPWludGwgK3Rvd2dzODQ9LTEwLjE4LC0zNTAuNDMsMjkxLjM3LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMxNjZcIjonK3Byb2o9bGNjICtsYXRfMT0tMjIuMjQ0NzIyMjIyMjIyMjIgK2xhdF8yPS0yMi4yOTQ3MjIyMjIyMjIyMiArbGF0XzA9LTIyLjI2OTcyMjIyMjIyMjIyICtsb25fMD0xNjYuNDQyNSAreF8wPTguMzEzMDAwMDAwMDAwMDAxICt5XzA9LTIuMzU0ICtlbGxwcz1pbnRsICt0b3dnczg0PS0xMC4xOCwtMzUwLjQzLDI5MS4zNywwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMTY3XCI6Jytwcm9qPW9tZXJjICtsYXRfMD00ICtsb25jPTEwMi4yNSArYWxwaGE9MzIzLjAyNTc5MDUgK2s9MC45OTk4NCAreF8wPTQwMDAwICt5XzA9MCArbm9fdW9mZiArZ2FtbWE9MzIzLjEzMDEwMjM2MTExMTEgK2E9NjM3NzI5NS42NjQgK2I9NjM1NjA5NC42Njc5MTUyMDQgK3RvX21ldGVyPTIwLjExNjc1NiArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzE2OFwiOicrcHJvaj1vbWVyYyArbGF0XzA9NCArbG9uYz0xMDIuMjUgK2FscGhhPTMyMy4wMjU3OTA1ICtrPTAuOTk5ODQgK3hfMD04MDQ2NzAuMjQgK3lfMD0wICtub191b2ZmICtnYW1tYT0zMjMuMTMwMTAyMzYxMTExMSArYT02Mzc3Mjk1LjY2NCArYj02MzU2MDk0LjY2NzkxNTIwNCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzE2OVwiOicrcHJvaj11dG0gK3pvbmU9NTcgK3NvdXRoICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMTcwXCI6Jytwcm9qPXV0bSArem9uZT01OCArc291dGggK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMxNzFcIjonK3Byb2o9dXRtICt6b25lPTU5ICtzb3V0aCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzE3MlwiOicrcHJvaj11dG0gK3pvbmU9NTkgK3NvdXRoICtlbGxwcz1pbnRsICt0b3dnczg0PTI4Ny41OCwxNzcuNzgsLTEzNS40MSwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMTc0XCI6Jytwcm9qPWFlYSArbGF0XzE9NDIuMTIyNzc0ICtsYXRfMj00OS4wMTUxOCArbGF0XzA9NDUuNTY4OTc3ICtsb25fMD0tODQuNDU1OTU1ICt4XzA9MTAwMDAwMCAreV8wPTEwMDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMxNzVcIjonK3Byb2o9YWVhICtsYXRfMT00Mi4xMjI3NzQgK2xhdF8yPTQ5LjAxNTE4ICtsYXRfMD00NS41Njg5NzcgK2xvbl8wPS04My4yNDg2MjcgK3hfMD0xMDAwMDAwICt5XzA9MTAwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzE3NlwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTA2ICtrPTAuOTk5NiAreF8wPTUwMDAwMCAreV8wPTAgK2E9NjM3NzI3Ni4zNDUgK2I9NjM1NjA3NS40MTMxNDAyNCArdG93Z3M4ND0xOTgsODgxLDMxNywwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMTc3XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xNyAraz0wLjk5NjUwMDAwMDAwMDAwMDEgK3hfMD0xMDAwMDAwICt5XzA9MCArZWxscHM9aW50bCArdG93Z3M4ND0tMjA4LjQwNiwtMTA5Ljg3OCwtMi41NzY0LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMxNzhcIjonK3Byb2o9dXRtICt6b25lPTE4ICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMTc5XCI6Jytwcm9qPXV0bSArem9uZT0xOSArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzE4MFwiOicrcHJvaj11dG0gK3pvbmU9MjAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMxODFcIjonK3Byb2o9dXRtICt6b25lPTIxICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMTgyXCI6Jytwcm9qPXV0bSArem9uZT0yMiArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzE4M1wiOicrcHJvaj11dG0gK3pvbmU9MjMgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMxODRcIjonK3Byb2o9dXRtICt6b25lPTI0ICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMTg1XCI6Jytwcm9qPXV0bSArem9uZT0yNSArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzE4NlwiOicrcHJvaj11dG0gK3pvbmU9MjYgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMxODdcIjonK3Byb2o9dXRtICt6b25lPTI3ICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMTg4XCI6Jytwcm9qPXV0bSArem9uZT0yOCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzE4OVwiOicrcHJvaj11dG0gK3pvbmU9MjkgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMxOTBcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTkgK2s9MC45OTk5NSAreF8wPTIwMDAwMCAreV8wPTAgK2VsbHBzPWludGwgK3Rvd2dzODQ9LTIwOC40MDYsLTEwOS44NzgsLTIuNTc2NCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMTkxXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMSAraz0wLjk5OTk1ICt4XzA9MjAwMDAwICt5XzA9MCArZWxscHM9aW50bCArdG93Z3M4ND0tMjA4LjQwNiwtMTA5Ljg3OCwtMi41NzY0LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMxOTJcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTEzICtrPTAuOTk5OTUgK3hfMD0yMDAwMDAgK3lfMD0wICtlbGxwcz1pbnRsICt0b3dnczg0PS0yMDguNDA2LC0xMDkuODc4LC0yLjU3NjQsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzE5M1wiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTUgK2s9MC45OTk5NSAreF8wPTIwMDAwMCAreV8wPTAgK2VsbHBzPWludGwgK3Rvd2dzODQ9LTIwOC40MDYsLTEwOS44NzgsLTIuNTc2NCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMTk0XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xNyAraz0wLjk5OTk1ICt4XzA9MjAwMDAwICt5XzA9MCArZWxscHM9aW50bCArdG93Z3M4ND0tMjA4LjQwNiwtMTA5Ljg3OCwtMi41NzY0LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMxOTVcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTE5ICtrPTAuOTk5OTUgK3hfMD0yMDAwMDAgK3lfMD0wICtlbGxwcz1pbnRsICt0b3dnczg0PS0yMDguNDA2LC0xMDkuODc4LC0yLjU3NjQsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzE5NlwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MjEgK2s9MC45OTk5NSAreF8wPTIwMDAwMCAreV8wPTAgK2VsbHBzPWludGwgK3Rvd2dzODQ9LTIwOC40MDYsLTEwOS44NzgsLTIuNTc2NCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMTk3XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0yMyAraz0wLjk5OTk1ICt4XzA9MjAwMDAwICt5XzA9MCArZWxscHM9aW50bCArdG93Z3M4ND0tMjA4LjQwNiwtMTA5Ljg3OCwtMi41NzY0LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMxOThcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTI1ICtrPTAuOTk5OTUgK3hfMD0yMDAwMDAgK3lfMD0wICtlbGxwcz1pbnRsICt0b3dnczg0PS0yMDguNDA2LC0xMDkuODc4LC0yLjU3NjQsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzE5OVwiOicrcHJvaj11dG0gK3pvbmU9MzIgK2VsbHBzPWludGwgK3Rvd2dzODQ9LTIwOC40MDYsLTEwOS44NzgsLTIuNTc2NCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjAwXCI6Jytwcm9qPWxjYyArbGF0XzE9MzIuNSArbGF0XzA9MzIuNSArbG9uXzA9NDUgK2tfMD0wLjk5ODc4NjQwNzgwMDAwMDEgK3hfMD0xNTAwMDAwICt5XzA9MTE2NjIwMCArZWxscHM9Y2xyazgwICt0b3dnczg0PS0yNDEuNTQsLTE2My42NCwzOTYuMDYsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIwMVwiOicrcHJvaj11dG0gK3pvbmU9MzMgK2VsbHBzPWludGwgK3Rvd2dzODQ9LTIwOC40MDYsLTEwOS44NzgsLTIuNTc2NCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjAyXCI6Jytwcm9qPXV0bSArem9uZT0zNCArZWxscHM9aW50bCArdG93Z3M4ND0tMjA4LjQwNiwtMTA5Ljg3OCwtMi41NzY0LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyMDNcIjonK3Byb2o9dXRtICt6b25lPTM1ICtlbGxwcz1pbnRsICt0b3dnczg0PS0yMDguNDA2LC0xMDkuODc4LC0yLjU3NjQsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIwNFwiOicrcHJvaj1sY2MgK2xhdF8xPS02MC42NjY2NjY2NjY2NjY2NiArbGF0XzI9LTYzLjMzMzMzMzMzMzMzMzM0ICtsYXRfMD0tOTAgK2xvbl8wPS02NiAreF8wPTAgK3lfMD0wICtkYXR1bT1XR1M4NCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIwNVwiOicrcHJvaj1sY2MgK2xhdF8xPS02MC42NjY2NjY2NjY2NjY2NiArbGF0XzI9LTYzLjMzMzMzMzMzMzMzMzM0ICtsYXRfMD0tOTAgK2xvbl8wPS01NCAreF8wPTAgK3lfMD0wICtkYXR1bT1XR1M4NCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIwNlwiOicrcHJvaj1sY2MgK2xhdF8xPS02MC42NjY2NjY2NjY2NjY2NiArbGF0XzI9LTYzLjMzMzMzMzMzMzMzMzM0ICtsYXRfMD0tOTAgK2xvbl8wPS00MiAreF8wPTAgK3lfMD0wICtkYXR1bT1XR1M4NCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIwN1wiOicrcHJvaj1sY2MgK2xhdF8xPS02NC42NjY2NjY2NjY2NjY2NyArbGF0XzI9LTY3LjMzMzMzMzMzMzMzMzMzICtsYXRfMD0tOTAgK2xvbl8wPS0xNzQgK3hfMD0wICt5XzA9MCArZGF0dW09V0dTODQgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyMDhcIjonK3Byb2o9bGNjICtsYXRfMT0tNjQuNjY2NjY2NjY2NjY2NjcgK2xhdF8yPS02Ny4zMzMzMzMzMzMzMzMzMyArbGF0XzA9LTkwICtsb25fMD0tNjYgK3hfMD0wICt5XzA9MCArZGF0dW09V0dTODQgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyMDlcIjonK3Byb2o9bGNjICtsYXRfMT0tNjQuNjY2NjY2NjY2NjY2NjcgK2xhdF8yPS02Ny4zMzMzMzMzMzMzMzMzMyArbGF0XzA9LTkwICtsb25fMD0tNTQgK3hfMD0wICt5XzA9MCArZGF0dW09V0dTODQgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyMTBcIjonK3Byb2o9bGNjICtsYXRfMT0tNjQuNjY2NjY2NjY2NjY2NjcgK2xhdF8yPS02Ny4zMzMzMzMzMzMzMzMzMyArbGF0XzA9LTkwICtsb25fMD00MiAreF8wPTAgK3lfMD0wICtkYXR1bT1XR1M4NCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIxMVwiOicrcHJvaj1sY2MgK2xhdF8xPS02NC42NjY2NjY2NjY2NjY2NyArbGF0XzI9LTY3LjMzMzMzMzMzMzMzMzMzICtsYXRfMD0tOTAgK2xvbl8wPTU0ICt4XzA9MCAreV8wPTAgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjEyXCI6Jytwcm9qPWxjYyArbGF0XzE9LTY0LjY2NjY2NjY2NjY2NjY3ICtsYXRfMj0tNjcuMzMzMzMzMzMzMzMzMzMgK2xhdF8wPS05MCArbG9uXzA9NjYgK3hfMD0wICt5XzA9MCArZGF0dW09V0dTODQgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyMTNcIjonK3Byb2o9bGNjICtsYXRfMT0tNjQuNjY2NjY2NjY2NjY2NjcgK2xhdF8yPS02Ny4zMzMzMzMzMzMzMzMzMyArbGF0XzA9LTkwICtsb25fMD03OCAreF8wPTAgK3lfMD0wICtkYXR1bT1XR1M4NCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIxNFwiOicrcHJvaj1sY2MgK2xhdF8xPS02NC42NjY2NjY2NjY2NjY2NyArbGF0XzI9LTY3LjMzMzMzMzMzMzMzMzMzICtsYXRfMD0tOTAgK2xvbl8wPTkwICt4XzA9MCAreV8wPTAgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjE1XCI6Jytwcm9qPWxjYyArbGF0XzE9LTY0LjY2NjY2NjY2NjY2NjY3ICtsYXRfMj0tNjcuMzMzMzMzMzMzMzMzMzMgK2xhdF8wPS05MCArbG9uXzA9MTAyICt4XzA9MCAreV8wPTAgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjE2XCI6Jytwcm9qPWxjYyArbGF0XzE9LTY0LjY2NjY2NjY2NjY2NjY3ICtsYXRfMj0tNjcuMzMzMzMzMzMzMzMzMzMgK2xhdF8wPS05MCArbG9uXzA9MTE0ICt4XzA9MCAreV8wPTAgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjE3XCI6Jytwcm9qPWxjYyArbGF0XzE9LTY0LjY2NjY2NjY2NjY2NjY3ICtsYXRfMj0tNjcuMzMzMzMzMzMzMzMzMzMgK2xhdF8wPS05MCArbG9uXzA9MTI2ICt4XzA9MCAreV8wPTAgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjE4XCI6Jytwcm9qPWxjYyArbGF0XzE9LTY0LjY2NjY2NjY2NjY2NjY3ICtsYXRfMj0tNjcuMzMzMzMzMzMzMzMzMzMgK2xhdF8wPS05MCArbG9uXzA9MTM4ICt4XzA9MCAreV8wPTAgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjE5XCI6Jytwcm9qPWxjYyArbGF0XzE9LTY0LjY2NjY2NjY2NjY2NjY3ICtsYXRfMj0tNjcuMzMzMzMzMzMzMzMzMzMgK2xhdF8wPS05MCArbG9uXzA9MTUwICt4XzA9MCAreV8wPTAgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjIwXCI6Jytwcm9qPWxjYyArbGF0XzE9LTY0LjY2NjY2NjY2NjY2NjY3ICtsYXRfMj0tNjcuMzMzMzMzMzMzMzMzMzMgK2xhdF8wPS05MCArbG9uXzA9MTYyICt4XzA9MCAreV8wPTAgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjIxXCI6Jytwcm9qPWxjYyArbGF0XzE9LTY4LjY2NjY2NjY2NjY2NjY3ICtsYXRfMj0tNzEuMzMzMzMzMzMzMzMzMzMgK2xhdF8wPS05MCArbG9uXzA9LTEwMiAreF8wPTAgK3lfMD0wICtkYXR1bT1XR1M4NCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIyMlwiOicrcHJvaj1sY2MgK2xhdF8xPS02OC42NjY2NjY2NjY2NjY2NyArbGF0XzI9LTcxLjMzMzMzMzMzMzMzMzMzICtsYXRfMD0tOTAgK2xvbl8wPS05MCAreF8wPTAgK3lfMD0wICtkYXR1bT1XR1M4NCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIyM1wiOicrcHJvaj1sY2MgK2xhdF8xPS02OC42NjY2NjY2NjY2NjY2NyArbGF0XzI9LTcxLjMzMzMzMzMzMzMzMzMzICtsYXRfMD0tOTAgK2xvbl8wPS03OCAreF8wPTAgK3lfMD0wICtkYXR1bT1XR1M4NCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIyNFwiOicrcHJvaj1sY2MgK2xhdF8xPS02OC42NjY2NjY2NjY2NjY2NyArbGF0XzI9LTcxLjMzMzMzMzMzMzMzMzMzICtsYXRfMD0tOTAgK2xvbl8wPS02NiAreF8wPTAgK3lfMD0wICtkYXR1bT1XR1M4NCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIyNVwiOicrcHJvaj1sY2MgK2xhdF8xPS02OC42NjY2NjY2NjY2NjY2NyArbGF0XzI9LTcxLjMzMzMzMzMzMzMzMzMzICtsYXRfMD0tOTAgK2xvbl8wPS0xOCAreF8wPTAgK3lfMD0wICtkYXR1bT1XR1M4NCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIyNlwiOicrcHJvaj1sY2MgK2xhdF8xPS02OC42NjY2NjY2NjY2NjY2NyArbGF0XzI9LTcxLjMzMzMzMzMzMzMzMzMzICtsYXRfMD0tOTAgK2xvbl8wPS02ICt4XzA9MCAreV8wPTAgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjI3XCI6Jytwcm9qPWxjYyArbGF0XzE9LTY4LjY2NjY2NjY2NjY2NjY3ICtsYXRfMj0tNzEuMzMzMzMzMzMzMzMzMzMgK2xhdF8wPS05MCArbG9uXzA9NiAreF8wPTAgK3lfMD0wICtkYXR1bT1XR1M4NCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIyOFwiOicrcHJvaj1sY2MgK2xhdF8xPS02OC42NjY2NjY2NjY2NjY2NyArbGF0XzI9LTcxLjMzMzMzMzMzMzMzMzMzICtsYXRfMD0tOTAgK2xvbl8wPTE4ICt4XzA9MCAreV8wPTAgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjI5XCI6Jytwcm9qPWxjYyArbGF0XzE9LTY4LjY2NjY2NjY2NjY2NjY3ICtsYXRfMj0tNzEuMzMzMzMzMzMzMzMzMzMgK2xhdF8wPS05MCArbG9uXzA9MzAgK3hfMD0wICt5XzA9MCArZGF0dW09V0dTODQgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyMzBcIjonK3Byb2o9bGNjICtsYXRfMT0tNjguNjY2NjY2NjY2NjY2NjcgK2xhdF8yPS03MS4zMzMzMzMzMzMzMzMzMyArbGF0XzA9LTkwICtsb25fMD00MiAreF8wPTAgK3lfMD0wICtkYXR1bT1XR1M4NCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIzMVwiOicrcHJvaj1sY2MgK2xhdF8xPS02OC42NjY2NjY2NjY2NjY2NyArbGF0XzI9LTcxLjMzMzMzMzMzMzMzMzMzICtsYXRfMD0tOTAgK2xvbl8wPTU0ICt4XzA9MCAreV8wPTAgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjMyXCI6Jytwcm9qPWxjYyArbGF0XzE9LTY4LjY2NjY2NjY2NjY2NjY3ICtsYXRfMj0tNzEuMzMzMzMzMzMzMzMzMzMgK2xhdF8wPS05MCArbG9uXzA9NjYgK3hfMD0wICt5XzA9MCArZGF0dW09V0dTODQgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyMzNcIjonK3Byb2o9bGNjICtsYXRfMT0tNjguNjY2NjY2NjY2NjY2NjcgK2xhdF8yPS03MS4zMzMzMzMzMzMzMzMzMyArbGF0XzA9LTkwICtsb25fMD03OCAreF8wPTAgK3lfMD0wICtkYXR1bT1XR1M4NCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIzNFwiOicrcHJvaj1sY2MgK2xhdF8xPS02OC42NjY2NjY2NjY2NjY2NyArbGF0XzI9LTcxLjMzMzMzMzMzMzMzMzMzICtsYXRfMD0tOTAgK2xvbl8wPTkwICt4XzA9MCAreV8wPTAgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjM1XCI6Jytwcm9qPWxjYyArbGF0XzE9LTY4LjY2NjY2NjY2NjY2NjY3ICtsYXRfMj0tNzEuMzMzMzMzMzMzMzMzMzMgK2xhdF8wPS05MCArbG9uXzA9MTAyICt4XzA9MCAreV8wPTAgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjM2XCI6Jytwcm9qPWxjYyArbGF0XzE9LTY4LjY2NjY2NjY2NjY2NjY3ICtsYXRfMj0tNzEuMzMzMzMzMzMzMzMzMzMgK2xhdF8wPS05MCArbG9uXzA9MTE0ICt4XzA9MCAreV8wPTAgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjM3XCI6Jytwcm9qPWxjYyArbGF0XzE9LTY4LjY2NjY2NjY2NjY2NjY3ICtsYXRfMj0tNzEuMzMzMzMzMzMzMzMzMzMgK2xhdF8wPS05MCArbG9uXzA9MTI2ICt4XzA9MCAreV8wPTAgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjM4XCI6Jytwcm9qPWxjYyArbGF0XzE9LTY4LjY2NjY2NjY2NjY2NjY3ICtsYXRfMj0tNzEuMzMzMzMzMzMzMzMzMzMgK2xhdF8wPS05MCArbG9uXzA9MTM4ICt4XzA9MCAreV8wPTAgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjM5XCI6Jytwcm9qPWxjYyArbGF0XzE9LTY4LjY2NjY2NjY2NjY2NjY3ICtsYXRfMj0tNzEuMzMzMzMzMzMzMzMzMzMgK2xhdF8wPS05MCArbG9uXzA9MTUwICt4XzA9MCAreV8wPTAgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjQwXCI6Jytwcm9qPWxjYyArbGF0XzE9LTY4LjY2NjY2NjY2NjY2NjY3ICtsYXRfMj0tNzEuMzMzMzMzMzMzMzMzMzMgK2xhdF8wPS05MCArbG9uXzA9MTYyICt4XzA9MCAreV8wPTAgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjQxXCI6Jytwcm9qPWxjYyArbGF0XzE9LTY4LjY2NjY2NjY2NjY2NjY3ICtsYXRfMj0tNzEuMzMzMzMzMzMzMzMzMzMgK2xhdF8wPS05MCArbG9uXzA9MTc0ICt4XzA9MCAreV8wPTAgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjQyXCI6Jytwcm9qPWxjYyArbGF0XzE9LTcyLjY2NjY2NjY2NjY2NjY3ICtsYXRfMj0tNzUuMzMzMzMzMzMzMzMzMzMgK2xhdF8wPS05MCArbG9uXzA9LTE1MyAreF8wPTAgK3lfMD0wICtkYXR1bT1XR1M4NCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzI0M1wiOicrcHJvaj1sY2MgK2xhdF8xPS03Mi42NjY2NjY2NjY2NjY2NyArbGF0XzI9LTc1LjMzMzMzMzMzMzMzMzMzICtsYXRfMD0tOTAgK2xvbl8wPS0xMzUgK3hfMD0wICt5XzA9MCArZGF0dW09V0dTODQgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyNDRcIjonK3Byb2o9bGNjICtsYXRfMT0tNzIuNjY2NjY2NjY2NjY2NjcgK2xhdF8yPS03NS4zMzMzMzMzMzMzMzMzMyArbGF0XzA9LTkwICtsb25fMD0tMTE3ICt4XzA9MCAreV8wPTAgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjQ1XCI6Jytwcm9qPWxjYyArbGF0XzE9LTcyLjY2NjY2NjY2NjY2NjY3ICtsYXRfMj0tNzUuMzMzMzMzMzMzMzMzMzMgK2xhdF8wPS05MCArbG9uXzA9LTk5ICt4XzA9MCAreV8wPTAgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjQ2XCI6Jytwcm9qPWxjYyArbGF0XzE9LTcyLjY2NjY2NjY2NjY2NjY3ICtsYXRfMj0tNzUuMzMzMzMzMzMzMzMzMzMgK2xhdF8wPS05MCArbG9uXzA9LTgxICt4XzA9MCAreV8wPTAgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjQ3XCI6Jytwcm9qPWxjYyArbGF0XzE9LTcyLjY2NjY2NjY2NjY2NjY3ICtsYXRfMj0tNzUuMzMzMzMzMzMzMzMzMzMgK2xhdF8wPS05MCArbG9uXzA9LTYzICt4XzA9MCAreV8wPTAgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjQ4XCI6Jytwcm9qPWxjYyArbGF0XzE9LTcyLjY2NjY2NjY2NjY2NjY3ICtsYXRfMj0tNzUuMzMzMzMzMzMzMzMzMzMgK2xhdF8wPS05MCArbG9uXzA9LTI3ICt4XzA9MCAreV8wPTAgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjQ5XCI6Jytwcm9qPWxjYyArbGF0XzE9LTcyLjY2NjY2NjY2NjY2NjY3ICtsYXRfMj0tNzUuMzMzMzMzMzMzMzMzMzMgK2xhdF8wPS05MCArbG9uXzA9LTkgK3hfMD0wICt5XzA9MCArZGF0dW09V0dTODQgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyNTBcIjonK3Byb2o9bGNjICtsYXRfMT0tNzIuNjY2NjY2NjY2NjY2NjcgK2xhdF8yPS03NS4zMzMzMzMzMzMzMzMzMyArbGF0XzA9LTkwICtsb25fMD05ICt4XzA9MCAreV8wPTAgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjUxXCI6Jytwcm9qPWxjYyArbGF0XzE9LTcyLjY2NjY2NjY2NjY2NjY3ICtsYXRfMj0tNzUuMzMzMzMzMzMzMzMzMzMgK2xhdF8wPS05MCArbG9uXzA9MjcgK3hfMD0wICt5XzA9MCArZGF0dW09V0dTODQgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyNTJcIjonK3Byb2o9bGNjICtsYXRfMT0tNzIuNjY2NjY2NjY2NjY2NjcgK2xhdF8yPS03NS4zMzMzMzMzMzMzMzMzMyArbGF0XzA9LTkwICtsb25fMD00NSAreF8wPTAgK3lfMD0wICtkYXR1bT1XR1M4NCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzI1M1wiOicrcHJvaj1sY2MgK2xhdF8xPS03Mi42NjY2NjY2NjY2NjY2NyArbGF0XzI9LTc1LjMzMzMzMzMzMzMzMzMzICtsYXRfMD0tOTAgK2xvbl8wPTYzICt4XzA9MCAreV8wPTAgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjU0XCI6Jytwcm9qPWxjYyArbGF0XzE9LTcyLjY2NjY2NjY2NjY2NjY3ICtsYXRfMj0tNzUuMzMzMzMzMzMzMzMzMzMgK2xhdF8wPS05MCArbG9uXzA9ODEgK3hfMD0wICt5XzA9MCArZGF0dW09V0dTODQgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyNTVcIjonK3Byb2o9bGNjICtsYXRfMT0tNzIuNjY2NjY2NjY2NjY2NjcgK2xhdF8yPS03NS4zMzMzMzMzMzMzMzMzMyArbGF0XzA9LTkwICtsb25fMD05OSAreF8wPTAgK3lfMD0wICtkYXR1bT1XR1M4NCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzI1NlwiOicrcHJvaj1sY2MgK2xhdF8xPS03Mi42NjY2NjY2NjY2NjY2NyArbGF0XzI9LTc1LjMzMzMzMzMzMzMzMzMzICtsYXRfMD0tOTAgK2xvbl8wPTExNyAreF8wPTAgK3lfMD0wICtkYXR1bT1XR1M4NCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzI1N1wiOicrcHJvaj1sY2MgK2xhdF8xPS03Mi42NjY2NjY2NjY2NjY2NyArbGF0XzI9LTc1LjMzMzMzMzMzMzMzMzMzICtsYXRfMD0tOTAgK2xvbl8wPTEzNSAreF8wPTAgK3lfMD0wICtkYXR1bT1XR1M4NCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzI1OFwiOicrcHJvaj1sY2MgK2xhdF8xPS03Mi42NjY2NjY2NjY2NjY2NyArbGF0XzI9LTc1LjMzMzMzMzMzMzMzMzMzICtsYXRfMD0tOTAgK2xvbl8wPTE1MyAreF8wPTAgK3lfMD0wICtkYXR1bT1XR1M4NCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzI1OVwiOicrcHJvaj1sY2MgK2xhdF8xPS03Mi42NjY2NjY2NjY2NjY2NyArbGF0XzI9LTc1LjMzMzMzMzMzMzMzMzMzICtsYXRfMD0tOTAgK2xvbl8wPTE3MSAreF8wPTAgK3lfMD0wICtkYXR1bT1XR1M4NCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzI2MFwiOicrcHJvaj1sY2MgK2xhdF8xPS03Ni42NjY2NjY2NjY2NjY2NyArbGF0XzI9LTc5LjMzMzMzMzMzMzMzMzMzICtsYXRfMD0tOTAgK2xvbl8wPS0xNjggK3hfMD0wICt5XzA9MCArZGF0dW09V0dTODQgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyNjFcIjonK3Byb2o9bGNjICtsYXRfMT0tNzYuNjY2NjY2NjY2NjY2NjcgK2xhdF8yPS03OS4zMzMzMzMzMzMzMzMzMyArbGF0XzA9LTkwICtsb25fMD0tMTQ0ICt4XzA9MCAreV8wPTAgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjYyXCI6Jytwcm9qPWxjYyArbGF0XzE9LTc2LjY2NjY2NjY2NjY2NjY3ICtsYXRfMj0tNzkuMzMzMzMzMzMzMzMzMzMgK2xhdF8wPS05MCArbG9uXzA9LTEyMCAreF8wPTAgK3lfMD0wICtkYXR1bT1XR1M4NCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzI2M1wiOicrcHJvaj1sY2MgK2xhdF8xPS03Ni42NjY2NjY2NjY2NjY2NyArbGF0XzI9LTc5LjMzMzMzMzMzMzMzMzMzICtsYXRfMD0tOTAgK2xvbl8wPS05NiAreF8wPTAgK3lfMD0wICtkYXR1bT1XR1M4NCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzI2NFwiOicrcHJvaj1sY2MgK2xhdF8xPS03Ni42NjY2NjY2NjY2NjY2NyArbGF0XzI9LTc5LjMzMzMzMzMzMzMzMzMzICtsYXRfMD0tOTAgK2xvbl8wPS03MiAreF8wPTAgK3lfMD0wICtkYXR1bT1XR1M4NCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzI2NVwiOicrcHJvaj1sY2MgK2xhdF8xPS03Ni42NjY2NjY2NjY2NjY2NyArbGF0XzI9LTc5LjMzMzMzMzMzMzMzMzMzICtsYXRfMD0tOTAgK2xvbl8wPS00OCAreF8wPTAgK3lfMD0wICtkYXR1bT1XR1M4NCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzI2NlwiOicrcHJvaj1sY2MgK2xhdF8xPS03Ni42NjY2NjY2NjY2NjY2NyArbGF0XzI9LTc5LjMzMzMzMzMzMzMzMzMzICtsYXRfMD0tOTAgK2xvbl8wPS0yNCAreF8wPTAgK3lfMD0wICtkYXR1bT1XR1M4NCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzI2N1wiOicrcHJvaj1sY2MgK2xhdF8xPS03Ni42NjY2NjY2NjY2NjY2NyArbGF0XzI9LTc5LjMzMzMzMzMzMzMzMzMzICtsYXRfMD0tOTAgK2xvbl8wPTAgK3hfMD0wICt5XzA9MCArZGF0dW09V0dTODQgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyNjhcIjonK3Byb2o9bGNjICtsYXRfMT0tNzYuNjY2NjY2NjY2NjY2NjcgK2xhdF8yPS03OS4zMzMzMzMzMzMzMzMzMyArbGF0XzA9LTkwICtsb25fMD0yNCAreF8wPTAgK3lfMD0wICtkYXR1bT1XR1M4NCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzI2OVwiOicrcHJvaj1sY2MgK2xhdF8xPS03Ni42NjY2NjY2NjY2NjY2NyArbGF0XzI9LTc5LjMzMzMzMzMzMzMzMzMzICtsYXRfMD0tOTAgK2xvbl8wPTQ4ICt4XzA9MCAreV8wPTAgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjcwXCI6Jytwcm9qPWxjYyArbGF0XzE9LTc2LjY2NjY2NjY2NjY2NjY3ICtsYXRfMj0tNzkuMzMzMzMzMzMzMzMzMzMgK2xhdF8wPS05MCArbG9uXzA9NzIgK3hfMD0wICt5XzA9MCArZGF0dW09V0dTODQgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyNzFcIjonK3Byb2o9bGNjICtsYXRfMT0tNzYuNjY2NjY2NjY2NjY2NjcgK2xhdF8yPS03OS4zMzMzMzMzMzMzMzMzMyArbGF0XzA9LTkwICtsb25fMD05NiAreF8wPTAgK3lfMD0wICtkYXR1bT1XR1M4NCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzI3MlwiOicrcHJvaj1sY2MgK2xhdF8xPS03Ni42NjY2NjY2NjY2NjY2NyArbGF0XzI9LTc5LjMzMzMzMzMzMzMzMzMzICtsYXRfMD0tOTAgK2xvbl8wPTEyMCAreF8wPTAgK3lfMD0wICtkYXR1bT1XR1M4NCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzI3M1wiOicrcHJvaj1sY2MgK2xhdF8xPS03Ni42NjY2NjY2NjY2NjY2NyArbGF0XzI9LTc5LjMzMzMzMzMzMzMzMzMzICtsYXRfMD0tOTAgK2xvbl8wPTE0NCAreF8wPTAgK3lfMD0wICtkYXR1bT1XR1M4NCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzI3NFwiOicrcHJvaj1sY2MgK2xhdF8xPS03Ni42NjY2NjY2NjY2NjY2NyArbGF0XzI9LTc5LjMzMzMzMzMzMzMzMzMzICtsYXRfMD0tOTAgK2xvbl8wPTE2OCAreF8wPTAgK3lfMD0wICtkYXR1bT1XR1M4NCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzI3NVwiOicrcHJvaj1zdGVyZSArbGF0XzA9LTkwICtsYXRfdHM9LTgwLjIzODYxMTExMTExMTExICtsb25fMD0tMTY1ICtrPTEgK3hfMD0wICt5XzA9MCArZGF0dW09V0dTODQgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyNzZcIjonK3Byb2o9c3RlcmUgK2xhdF8wPS05MCArbGF0X3RzPS04MC4yMzg2MTExMTExMTExMSArbG9uXzA9LTEzNSAraz0xICt4XzA9MCAreV8wPTAgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjc3XCI6Jytwcm9qPXN0ZXJlICtsYXRfMD0tOTAgK2xhdF90cz0tODAuMjM4NjExMTExMTExMTEgK2xvbl8wPS0xMDUgK2s9MSAreF8wPTAgK3lfMD0wICtkYXR1bT1XR1M4NCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzI3OFwiOicrcHJvaj1zdGVyZSArbGF0XzA9LTkwICtsYXRfdHM9LTgwLjIzODYxMTExMTExMTExICtsb25fMD0tNzUgK2s9MSAreF8wPTAgK3lfMD0wICtkYXR1bT1XR1M4NCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzI3OVwiOicrcHJvaj1zdGVyZSArbGF0XzA9LTkwICtsYXRfdHM9LTgwLjIzODYxMTExMTExMTExICtsb25fMD0tNDUgK2s9MSAreF8wPTAgK3lfMD0wICtkYXR1bT1XR1M4NCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzI4MFwiOicrcHJvaj1zdGVyZSArbGF0XzA9LTkwICtsYXRfdHM9LTgwLjIzODYxMTExMTExMTExICtsb25fMD0tMTUgK2s9MSAreF8wPTAgK3lfMD0wICtkYXR1bT1XR1M4NCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzI4MVwiOicrcHJvaj1zdGVyZSArbGF0XzA9LTkwICtsYXRfdHM9LTgwLjIzODYxMTExMTExMTExICtsb25fMD0xNSAraz0xICt4XzA9MCAreV8wPTAgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjgyXCI6Jytwcm9qPXN0ZXJlICtsYXRfMD0tOTAgK2xhdF90cz0tODAuMjM4NjExMTExMTExMTEgK2xvbl8wPTQ1ICtrPTEgK3hfMD0wICt5XzA9MCArZGF0dW09V0dTODQgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyODNcIjonK3Byb2o9c3RlcmUgK2xhdF8wPS05MCArbGF0X3RzPS04MC4yMzg2MTExMTExMTExMSArbG9uXzA9NzUgK2s9MSAreF8wPTAgK3lfMD0wICtkYXR1bT1XR1M4NCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzI4NFwiOicrcHJvaj1zdGVyZSArbGF0XzA9LTkwICtsYXRfdHM9LTgwLjIzODYxMTExMTExMTExICtsb25fMD0xMDUgK2s9MSAreF8wPTAgK3lfMD0wICtkYXR1bT1XR1M4NCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzI4NVwiOicrcHJvaj1zdGVyZSArbGF0XzA9LTkwICtsYXRfdHM9LTgwLjIzODYxMTExMTExMTExICtsb25fMD0xMzUgK2s9MSAreF8wPTAgK3lfMD0wICtkYXR1bT1XR1M4NCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzI4NlwiOicrcHJvaj1zdGVyZSArbGF0XzA9LTkwICtsYXRfdHM9LTgwLjIzODYxMTExMTExMTExICtsb25fMD0xNjUgK2s9MSAreF8wPTAgK3lfMD0wICtkYXR1bT1XR1M4NCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzI4N1wiOicrcHJvaj1zdGVyZSArbGF0XzA9LTkwICtsYXRfdHM9LTgwLjIzODYxMTExMTExMTExICtsb25fMD0tMTUwICtrPTEgK3hfMD0wICt5XzA9MCArZGF0dW09V0dTODQgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyODhcIjonK3Byb2o9c3RlcmUgK2xhdF8wPS05MCArbGF0X3RzPS04MC4yMzg2MTExMTExMTExMSArbG9uXzA9LTkwICtrPTEgK3hfMD0wICt5XzA9MCArZGF0dW09V0dTODQgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyODlcIjonK3Byb2o9c3RlcmUgK2xhdF8wPS05MCArbGF0X3RzPS04MC4yMzg2MTExMTExMTExMSArbG9uXzA9LTMwICtrPTEgK3hfMD0wICt5XzA9MCArZGF0dW09V0dTODQgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyOTBcIjonK3Byb2o9c3RlcmUgK2xhdF8wPS05MCArbGF0X3RzPS04MC4yMzg2MTExMTExMTExMSArbG9uXzA9MzAgK2s9MSAreF8wPTAgK3lfMD0wICtkYXR1bT1XR1M4NCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzI5MVwiOicrcHJvaj1zdGVyZSArbGF0XzA9LTkwICtsYXRfdHM9LTgwLjIzODYxMTExMTExMTExICtsb25fMD05MCAraz0xICt4XzA9MCAreV8wPTAgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjkyXCI6Jytwcm9qPXN0ZXJlICtsYXRfMD0tOTAgK2xhdF90cz0tODAuMjM4NjExMTExMTExMTEgK2xvbl8wPTE1MCAraz0xICt4XzA9MCAreV8wPTAgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjkzXCI6Jytwcm9qPXN0ZXJlICtsYXRfMD0tOTAgK2xhdF90cz0tODAuMjM4NjExMTExMTExMTEgK2xvbl8wPTAgK2s9MSAreF8wPTAgK3lfMD0wICtkYXR1bT1XR1M4NCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzI5NFwiOicrcHJvaj1sY2MgK2xhdF8xPS03Ni42NjY2NjY2NjY2NjY2NyArbGF0XzI9LTc5LjMzMzMzMzMzMzMzMzMzICtsYXRfMD0tNzggK2xvbl8wPTE2MiAreF8wPTAgK3lfMD0wICtkYXR1bT1XR1M4NCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzI5NlwiOicrcHJvaj11dG0gK3pvbmU9NSArc291dGggK2VsbHBzPUdSUzgwICt0b3dnczg0PTAuMDcyLC0wLjUwNywtMC4yNDUsLTAuMDE4MywwLjAwMDMsLTAuMDA3LC0wLjAwOTMgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyOTdcIjonK3Byb2o9dXRtICt6b25lPTYgK3NvdXRoICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLjA3MiwtMC41MDcsLTAuMjQ1LC0wLjAxODMsMC4wMDAzLC0wLjAwNywtMC4wMDkzICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjk4XCI6Jytwcm9qPXV0bSArem9uZT03ICtzb3V0aCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MC4wNzIsLTAuNTA3LC0wLjI0NSwtMC4wMTgzLDAuMDAwMywtMC4wMDcsLTAuMDA5MyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzI5OVwiOicrcHJvaj11dG0gK3pvbmU9OCArc291dGggK2VsbHBzPUdSUzgwICt0b3dnczg0PTAuMDcyLC0wLjUwNywtMC4yNDUsLTAuMDE4MywwLjAwMDMsLTAuMDA3LC0wLjAwOTMgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMzMDBcIjonK3Byb2o9bGNjICtsYXRfMT01OS4zMzMzMzMzMzMzMzMzNCArbGF0XzI9NTggK2xhdF8wPTU3LjUxNzU1MzkzMDU1NTU2ICtsb25fMD0yNCAreF8wPTUwMDAwMCAreV8wPTYzNzUwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAuMDU1LC0wLjU0MSwtMC4xODUsMC4wMTgzLC0wLjAwMDMsLTAuMDA3LC0wLjAxNCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzMwMVwiOicrcHJvaj1sY2MgK2xhdF8xPTU5LjMzMzMzMzMzMzMzMzM0ICtsYXRfMj01OCArbGF0XzA9NTcuNTE3NTUzOTMwNTU1NTYgK2xvbl8wPTI0ICt4XzA9NTAwMDAwICt5XzA9NjM3NTAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzMwMlwiOicrcHJvaj11dG0gK3pvbmU9NyArc291dGggK2VsbHBzPWludGwgK3Rvd2dzODQ9NDEwLjcyMSw1NS4wNDksODAuNzQ2LDIuNTc3OSwyLjM1MTQsMC42NjY0LDE3LjMzMTEgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMzMDNcIjonK3Byb2o9dXRtICt6b25lPTcgK3NvdXRoICtlbGxwcz1pbnRsICt0b3dnczg0PTM0Ny4xMDMsMTA3OC4xMiwyNjIzLjkyLC0zMy44ODc1LDcwLjY3NzMsLTkuMzk0MywxODYuMDc0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMzA0XCI6Jytwcm9qPXV0bSArem9uZT02ICtzb3V0aCArZWxscHM9aW50bCArdG93Z3M4ND0yMjEuNTI1LDE1Mi45NDgsMTc2Ljc2OCwtMi4zODQ3LC0xLjM4OTYsLTAuODc3LDExLjQ3NDEgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMzMDVcIjonK3Byb2o9dXRtICt6b25lPTYgK3NvdXRoICtlbGxwcz1pbnRsICt0b3dnczg0PTIxNS41MjUsMTQ5LjU5MywxNzYuMjI5LC0zLjI2MjQsLTEuNjkyLC0xLjE1NzEsMTAuNDc3MyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzMwNlwiOicrcHJvaj11dG0gK3pvbmU9NSArc291dGggK2VsbHBzPWludGwgK3Rvd2dzODQ9MjE3LjAzNyw4Ni45NTksMjMuOTU2LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMzMDdcIjonK3Byb2o9dXRtICt6b25lPTM5ICtlbGxwcz1XR1M4NCArdG93Z3M4ND0wLC0wLjE1LDAuNjgsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzMwOFwiOicrcHJvaj1sY2MgK2xhdF8xPS0zMC43NSArbGF0XzI9LTM1Ljc1ICtsYXRfMD0tMzMuMjUgK2xvbl8wPTE0NyAreF8wPTkzMDAwMDAgK3lfMD00NTAwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMzA5XCI6Jytwcm9qPWFlYSArbGF0XzE9MzQgK2xhdF8yPTQwLjUgK2xhdF8wPTAgK2xvbl8wPS0xMjAgK3hfMD0wICt5XzA9LTQwMDAwMDAgK2RhdHVtPU5BRDI3ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMzEwXCI6Jytwcm9qPWFlYSArbGF0XzE9MzQgK2xhdF8yPTQwLjUgK2xhdF8wPTAgK2xvbl8wPS0xMjAgK3hfMD0wICt5XzA9LTQwMDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMzMTFcIjonK3Byb2o9YWVhICtsYXRfMT0zNCArbGF0XzI9NDAuNSArbGF0XzA9MCArbG9uXzA9LTEyMCAreF8wPTAgK3lfMD0tNDAwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzMxMlwiOicrcHJvaj11dG0gK3pvbmU9MjEgK2VsbHBzPWludGwgK3Rvd2dzODQ9LTE4NiwyMzAsMTEwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMzMTNcIjonK3Byb2o9dXRtICt6b25lPTIxICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMzE0XCI6Jytwcm9qPWxjYyArbGF0XzE9LTYuNSArbGF0XzI9LTExLjUgK2xhdF8wPTAgK2xvbl8wPTI2ICt4XzA9MCAreV8wPTAgK2VsbHBzPWNscms2NiArdG93Z3M4ND0tMTAzLjc0NiwtOS42MTQsLTI1NS45NSwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMzE1XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0tOSArbG9uXzA9MjYgK2s9MC45OTk4ICt4XzA9MCAreV8wPTAgK2VsbHBzPWNscms2NiArdG93Z3M4ND0tMTAzLjc0NiwtOS42MTQsLTI1NS45NSwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMzE2XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0yMiAraz0wLjk5OTkgK3hfMD01MDAwMDAgK3lfMD0xMDAwMDAwMCArZWxscHM9Y2xyazgwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMzE3XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0yNCAraz0wLjk5OTkgK3hfMD01MDAwMDAgK3lfMD0xMDAwMDAwMCArZWxscHM9Y2xyazgwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMzE4XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMiAraz0wLjk5OTkgK3hfMD01MDAwMDAgK3lfMD0xMDAwMDAwMCArZWxscHM9Y2xyazgwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMzE5XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xNCAraz0wLjk5OTkgK3hfMD01MDAwMDAgK3lfMD0xMDAwMDAwMCArZWxscHM9Y2xyazgwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMzIwXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xNiAraz0wLjk5OTkgK3hfMD01MDAwMDAgK3lfMD0xMDAwMDAwMCArZWxscHM9Y2xyazgwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMzIxXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xOCAraz0wLjk5OTkgK3hfMD01MDAwMDAgK3lfMD0xMDAwMDAwMCArZWxscHM9Y2xyazgwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMzIyXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0yMCAraz0wLjk5OTkgK3hfMD01MDAwMDAgK3lfMD0xMDAwMDAwMCArZWxscHM9Y2xyazgwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMzIzXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0yMiAraz0wLjk5OTkgK3hfMD01MDAwMDAgK3lfMD0xMDAwMDAwMCArZWxscHM9Y2xyazgwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMzI0XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0yNCAraz0wLjk5OTkgK3hfMD01MDAwMDAgK3lfMD0xMDAwMDAwMCArZWxscHM9Y2xyazgwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMzI1XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0yNiAraz0wLjk5OTkgK3hfMD01MDAwMDAgK3lfMD0xMDAwMDAwMCArZWxscHM9Y2xyazgwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMzI2XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0yOCAraz0wLjk5OTkgK3hfMD01MDAwMDAgK3lfMD0xMDAwMDAwMCArZWxscHM9Y2xyazgwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMzI3XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0zMCAraz0wLjk5OTkgK3hfMD01MDAwMDAgK3lfMD0xMDAwMDAwMCArZWxscHM9Y2xyazgwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMzI4XCI6Jytwcm9qPXN0ZXJlYSArbGF0XzA9NTIuMTY2NjY2NjY2NjY2NjYgK2xvbl8wPTE5LjE2NjY2NjY2NjY2NjY3ICtrPTAuOTk5NzE0ICt4XzA9NTAwMDAwICt5XzA9NTAwMDAwICtlbGxwcz1rcmFzcyArdG93Z3M4ND0zMy40LC0xNDYuNiwtNzYuMywtMC4zNTksLTAuMDUzLDAuODQ0LC0wLjg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMzI5XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xNSAraz0xICt4XzA9NTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTMzLjQsLTE0Ni42LC03Ni4zLC0wLjM1OSwtMC4wNTMsMC44NDQsLTAuODQgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMzMzBcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTE4ICtrPTEgK3hfMD02NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MzMuNCwtMTQ2LjYsLTc2LjMsLTAuMzU5LC0wLjA1MywwLjg0NCwtMC44NCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzMzMVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MjEgK2s9MSAreF8wPTc1MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0zMy40LC0xNDYuNiwtNzYuMywtMC4zNTksLTAuMDUzLDAuODQ0LC0wLjg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMzMyXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0yNCAraz0xICt4XzA9ODUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTMzLjQsLTE0Ni42LC03Ni4zLC0wLjM1OSwtMC4wNTMsMC44NDQsLTAuODQgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMzMzNcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTE1ICtrPTEgK3hfMD0zNTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MzMuNCwtMTQ2LjYsLTc2LjMsLTAuMzU5LC0wLjA1MywwLjg0NCwtMC44NCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzMzNFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MjEgK2s9MSAreF8wPTQ1MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0zMy40LC0xNDYuNiwtNzYuMywtMC4zNTksLTAuMDUzLDAuODQ0LC0wLjg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMzM1XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0yNyAraz0xICt4XzA9NTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTMzLjQsLTE0Ni42LC03Ni4zLC0wLjM1OSwtMC4wNTMsMC44NDQsLTAuODQgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMzMzZcIjonK3Byb2o9dXRtICt6b25lPTQyICtzb3V0aCArZWxscHM9aW50bCArdG93Z3M4ND0xNDUsLTE4NywxMDMsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzMzN1wiOicrcHJvaj1sY2MgK2xhdF8xPS0yMC4xOTUwNjk0NDQ0NDQ0NSArbGF0XzA9LTIwLjE5NTA2OTQ0NDQ0NDQ1ICtsb25fMD01Ny41MjE4Mjc3Nzc3Nzc3OCAra18wPTEgK3hfMD0xMDAwMDAwICt5XzA9MTAwMDAwMCArZWxscHM9Y2xyazgwICt0b3dnczg0PS03NzAuMSwxNTguNCwtNDk4LjIsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzMzOFwiOicrcHJvaj1hZWEgK2xhdF8xPTU1ICtsYXRfMj02NSArbGF0XzA9NTAgK2xvbl8wPS0xNTQgK3hfMD0wICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzMzOVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTIgK2s9MC45OTk5ICt4XzA9NTAwMDAwICt5XzA9MTAwMDAwMDAgK2VsbHBzPWNscms4MCArdG93Z3M4ND0tNzkuOSwtMTU4LC0xNjguOSwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMzQwXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xNCAraz0wLjk5OTkgK3hfMD01MDAwMDAgK3lfMD0xMDAwMDAwMCArZWxscHM9Y2xyazgwICt0b3dnczg0PS03OS45LC0xNTgsLTE2OC45LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMzNDFcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTE2ICtrPTAuOTk5OSAreF8wPTUwMDAwMCAreV8wPTEwMDAwMDAwICtlbGxwcz1jbHJrODAgK3Rvd2dzODQ9LTc5LjksLTE1OCwtMTY4LjksMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzM0MlwiOicrcHJvaj11dG0gK3pvbmU9MzMgK3NvdXRoICtlbGxwcz1jbHJrODAgK3Rvd2dzODQ9LTc5LjksLTE1OCwtMTY4LjksMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzM0M1wiOicrcHJvaj11dG0gK3pvbmU9MjggK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMzNDRcIjonK3Byb2o9dXRtICt6b25lPTI5ICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMzQ1XCI6Jytwcm9qPXV0bSArem9uZT0zMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzM0NlwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MjQgK2s9MC45OTk4ICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzM0N1wiOicrcHJvaj1sY2MgK2xhdF8xPTQ5ICtsYXRfMj03NyArbGF0XzA9NjMuMzkwNjc1ICtsb25fMD0tOTEuODY2NjY2NjY2NjY2NjYgK3hfMD02MjAwMDAwICt5XzA9MzAwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzM0OFwiOicrcHJvaj1sY2MgK2xhdF8xPTQ5ICtsYXRfMj03NyArbGF0XzA9NjMuMzkwNjc1ICtsb25fMD0tOTEuODY2NjY2NjY2NjY2NjYgK3hfMD02MjAwMDAwICt5XzA9MzAwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzM0OVwiOicrcHJvaj1tZXJjICtsb25fMD0tMTUwICtrPTEgK3hfMD0wICt5XzA9MCArZGF0dW09V0dTODQgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMzNTBcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAuMSArbG9uXzA9MjEuOTUgK2s9MSAreF8wPTI1MDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTIzLjkyLC0xNDEuMjcsLTgwLjksLTAsMC4zNSwwLjgyLC0wLjEyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMzUxXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wLjEgK2xvbl8wPTI0Ljk1ICtrPTEgK3hfMD0xMjUwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjMuOTIsLTE0MS4yNywtODAuOSwtMCwwLjM1LDAuODIsLTAuMTIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMzNTJcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAuMSArbG9uXzA9MjcuOTUgK2s9MSAreF8wPTIyNTAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yMy45MiwtMTQxLjI3LC04MC45LC0wLDAuMzUsMC44MiwtMC4xMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzM1M1wiOicrcHJvaj11dG0gK3pvbmU9MzIgK3NvdXRoICtlbGxwcz1pbnRsICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMzU0XCI6Jytwcm9qPXV0bSArem9uZT0zMiArc291dGggK2VsbHBzPWludGwgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMzNTVcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTMwICtsb25fMD0zMSAraz0xICt4XzA9NjE1MDAwICt5XzA9ODEwMDAwICtlbGxwcz1oZWxtZXJ0ICt0b3dnczg0PS0xNDYuMjEsMTEyLjYzLDQuMDUsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzM1NlwiOicrcHJvaj11dG0gK3pvbmU9MTcgK2VsbHBzPWNscms2NiArdG93Z3M4ND0tMTc5LjQ4MywtNjkuMzc5LC0yNy41ODQsLTcuODYyLDguMTYzLDYuMDQyLC0xMy45MjUgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMzNTdcIjonK3Byb2o9dXRtICt6b25lPTE3ICtlbGxwcz1jbHJrNjYgK3Rvd2dzODQ9OC44NTMsLTUyLjY0NCwxODAuMzA0LC0wLjM5MywtMi4zMjMsMi45NiwtMjQuMDgxICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMzU4XCI6Jytwcm9qPWxjYyArbGF0XzE9MzYuMTY2NjY2NjY2NjY2NjYgK2xhdF8yPTM0LjMzMzMzMzMzMzMzMzM0ICtsYXRfMD0zMy43NSArbG9uXzA9LTc5ICt4XzA9NjA5NjAxLjIyICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzM1OVwiOicrcHJvaj1sY2MgK2xhdF8xPTM2LjE2NjY2NjY2NjY2NjY2ICtsYXRfMj0zNC4zMzMzMzMzMzMzMzMzNCArbGF0XzA9MzMuNzUgK2xvbl8wPS03OSAreF8wPTYwOTYwMS4yMTkyMDI0Mzg1ICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9ZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMzNjBcIjonK3Byb2o9bGNjICtsYXRfMT0zNC44MzMzMzMzMzMzMzMzNCArbGF0XzI9MzIuNSArbGF0XzA9MzEuODMzMzMzMzMzMzMzMzMgK2xvbl8wPS04MSAreF8wPTYwOTYwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMzNjFcIjonK3Byb2o9bGNjICtsYXRfMT0zNC44MzMzMzMzMzMzMzMzNCArbGF0XzI9MzIuNSArbGF0XzA9MzEuODMzMzMzMzMzMzMzMzMgK2xvbl8wPS04MSAreF8wPTYwOTYwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzozMzYyXCI6Jytwcm9qPWxjYyArbGF0XzE9NDEuOTUgK2xhdF8yPTQwLjg4MzMzMzMzMzMzMzMzICtsYXRfMD00MC4xNjY2NjY2NjY2NjY2NiArbG9uXzA9LTc3Ljc1ICt4XzA9NjAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzM2M1wiOicrcHJvaj1sY2MgK2xhdF8xPTQxLjk1ICtsYXRfMj00MC44ODMzMzMzMzMzMzMzMyArbGF0XzA9NDAuMTY2NjY2NjY2NjY2NjYgK2xvbl8wPS03Ny43NSAreF8wPTYwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzozMzY0XCI6Jytwcm9qPWxjYyArbGF0XzE9NDAuOTY2NjY2NjY2NjY2NjcgK2xhdF8yPTM5LjkzMzMzMzMzMzMzMzMzICtsYXRfMD0zOS4zMzMzMzMzMzMzMzMzNCArbG9uXzA9LTc3Ljc1ICt4XzA9NjAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzM2NVwiOicrcHJvaj1sY2MgK2xhdF8xPTQwLjk2NjY2NjY2NjY2NjY3ICtsYXRfMj0zOS45MzMzMzMzMzMzMzMzMyArbGF0XzA9MzkuMzMzMzMzMzMzMzMzMzQgK2xvbl8wPS03Ny43NSAreF8wPTYwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzozMzY2XCI6Jytwcm9qPWNhc3MgK2xhdF8wPTIyLjMxMjEzMzMzMzMzMzM0ICtsb25fMD0xMTQuMTc4NTU1NTU1NTU1NiAreF8wPTQwMjQzLjU3Nzc1NjA0MjM3ICt5XzA9MTkwNjkuOTMzNTE1MTI1NzggK2E9NjM3ODI5My42NDUyMDg3NTkgK2I9NjM1NjYxNy45ODc2Nzk4MzggK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMzNjdcIjonK3Byb2o9dXRtICt6b25lPTI4ICtlbGxwcz1jbHJrODAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMzNjhcIjonK3Byb2o9dXRtICt6b25lPTI5ICtlbGxwcz1jbHJrODAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMzNjlcIjonK3Byb2o9dXRtICt6b25lPTMwICtlbGxwcz1jbHJrODAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMzNzBcIjonK3Byb2o9dXRtICt6b25lPTU5ICtkYXR1bT1OQUQyNyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzM3MVwiOicrcHJvaj11dG0gK3pvbmU9NjAgK2RhdHVtPU5BRDI3ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMzcyXCI6Jytwcm9qPXV0bSArem9uZT01OSArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzM3M1wiOicrcHJvaj11dG0gK3pvbmU9NjAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMzNzRcIjonK3Byb2o9dXRtICt6b25lPTI5ICtlbGxwcz1pbnRsICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMzc1XCI6Jytwcm9qPW9tZXJjICtsYXRfMD00ICtsb25jPTEwMi4yNSArYWxwaGE9MzIzLjAyNTc5NjQ2NjY2NjYgK2s9MC45OTk4NCAreF8wPTgwNDY3MSAreV8wPTAgK25vX3VvZmYgK2dhbW1hPTMyMy4xMzAxMDIzNjExMTExICtlbGxwcz1HUlM4MCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzM3NlwiOicrcHJvaj1vbWVyYyArbGF0XzA9NCArbG9uYz0xMTUgK2FscGhhPTUzLjMxNTgwOTk1ICtrPTAuOTk5ODQgK3hfMD0wICt5XzA9MCArbm9fdW9mZiArZ2FtbWE9NTMuMTMwMTAyMzYxMTExMTEgK2VsbHBzPUdSUzgwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMzc3XCI6Jytwcm9qPWNhc3MgK2xhdF8wPTIuMTIxNjc5NzQ0NDQ0NDQ1ICtsb25fMD0xMDMuNDI3OTM2MjM2MTExMSAreF8wPS0xNDgxMC41NjIgK3lfMD04NzU4LjMyICtlbGxwcz1HUlM4MCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzM3OFwiOicrcHJvaj1jYXNzICtsYXRfMD0yLjY4MjM0NzYzNjExMTExMSArbG9uXzA9MTAxLjk3NDkwNTA0MTY2NjcgK3hfMD0zNjczLjc4NSAreV8wPS00MjQwLjU3MyArZWxscHM9R1JTODAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMzNzlcIjonK3Byb2o9Y2FzcyArbGF0XzA9My43NjkzODgwODg4ODg4ODkgK2xvbl8wPTEwMi4zNjgyOTg5ODMzMzMzICt4XzA9LTczNjguMjI4ICt5XzA9NjQ4NS44NTggK2VsbHBzPUdSUzgwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMzgwXCI6Jytwcm9qPWNhc3MgK2xhdF8wPTMuNjg0NjQ5MDUgK2xvbl8wPTEwMS4zODkxMDc5MTM4ODg5ICt4XzA9LTM0ODM2LjE2MSAreV8wPTU2NDY0LjA0OSArZWxscHM9R1JTODAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMzODFcIjonK3Byb2o9Y2FzcyArbGF0XzA9NC45NzYyODUyICtsb25fMD0xMDMuMDcwMjc1NjI1ICt4XzA9MTk1OTQuMjQ1ICt5XzA9MzM3MS44OTUgK2VsbHBzPUdSUzgwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMzgyXCI6Jytwcm9qPWNhc3MgK2xhdF8wPTUuNDIxNTE3NTQxNjY2NjY3ICtsb25fMD0xMDAuMzQ0Mzc2OTYzODg4OSAreF8wPS0yMy40MTQgK3lfMD02Mi4yODMgK2VsbHBzPUdSUzgwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMzgzXCI6Jytwcm9qPWNhc3MgK2xhdF8wPTUuOTY0NjcyNzEzODg4ODg5ICtsb25fMD0xMDAuNjM2MzcxMTExMTExMSAreF8wPTAgK3lfMD0wICtlbGxwcz1HUlM4MCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzM4NFwiOicrcHJvaj1jYXNzICtsYXRfMD00Ljg1OTA2MzAyMjIyMjIyMiArbG9uXzA9MTAwLjgxNTQxMDU4NjExMTEgK3hfMD0tMS43NjkgK3lfMD0xMzM0NTQuNzc5ICtlbGxwcz1HUlM4MCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzM4NVwiOicrcHJvaj1jYXNzICtsYXRfMD01Ljk3MjU0MzY1ODMzMzMzNCArbG9uXzA9MTAyLjI5NTI0MTY2OTQ0NDQgK3hfMD0xMzIyNy44NTEgK3lfMD04NzM5Ljg5NCArZWxscHM9R1JTODAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMzODZcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTE4ICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1pbnRsICt0b3dnczg0PS05Ni4wNjIsLTgyLjQyOCwtMTIxLjc1Myw0LjgwMSwwLjM0NSwtMS4zNzYsMS40OTYgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMzODdcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTMzICtrPTEgK3hfMD01NTAwMDAwICt5XzA9MCArZWxscHM9aW50bCArdG93Z3M4ND0tOTYuMDYyLC04Mi40MjgsLTEyMS43NTMsNC44MDEsMC4zNDUsLTEuMzc2LDEuNDk2ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMzg4XCI6Jytwcm9qPW1lcmMgK2xvbl8wPTUxICtsYXRfdHM9NDIgK3hfMD0wICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjMuOTIsLTE0MS4yNywtODAuOSwtMCwwLjM1LDAuODIsLTAuMTIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMzODlcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTE4MCAraz0xICt4XzA9NjA1MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yMy45MiwtMTQxLjI3LC04MC45LC0wLDAuMzUsMC44MiwtMC4xMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzM5MFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTgwICtrPTEgK3hfMD02MDUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTI0LjQ3LC0xMzAuODksLTgxLjU2LC0wLC0wLDAuMTMsLTAuMjIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMzOTFcIjonK3Byb2o9dXRtICt6b25lPTM3ICtlbGxwcz1jbHJrODAgK3Rvd2dzODQ9NzAuOTk1LC0zMzUuOTE2LDI2Mi44OTgsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzM5MlwiOicrcHJvaj11dG0gK3pvbmU9MzggK2VsbHBzPWNscms4MCArdG93Z3M4ND03MC45OTUsLTMzNS45MTYsMjYyLjg5OCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMzkzXCI6Jytwcm9qPXV0bSArem9uZT0zOSArZWxscHM9Y2xyazgwICt0b3dnczg0PTcwLjk5NSwtMzM1LjkxNiwyNjIuODk4LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMzOTRcIjonK3Byb2o9bGNjICtsYXRfMT0zMi41ICtsYXRfMD0zMi41ICtsb25fMD00NSAra18wPTAuOTk4Nzg2NDA3ODAwMDAwMSAreF8wPTE1MDAwMDAgK3lfMD0xMTY2MjAwICtlbGxwcz1jbHJrODAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMzOTVcIjonK3Byb2o9bWVyYyArbG9uXzA9MCAraz0xICt4XzA9MCAreV8wPTAgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMzk2XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD05ICtrPTEgK3hfMD0zNTAwMDAwICt5XzA9MCArZWxscHM9YmVzc2VsICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMzk3XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMiAraz0xICt4XzA9NDUwMDAwMCAreV8wPTAgK2VsbHBzPWJlc3NlbCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzM5OFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTIgK2s9MSAreF8wPTQ1MDAwMDAgK3lfMD0wICtlbGxwcz1iZXNzZWwgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMzOTlcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTE1ICtrPTEgK3hfMD01NTAwMDAwICt5XzA9MCArZWxscHM9YmVzc2VsICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozNDAwXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0tMTE1ICtrPTAuOTk5MiAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM0MDFcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPS0xMTUgK2s9MC45OTkyICt4XzA9MCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM0MDJcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPS0xMTUgK2s9MC45OTkyICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzQwM1wiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9LTExNSAraz0wLjk5OTIgK3hfMD0wICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzQwNFwiOicrcHJvaj1sY2MgK2xhdF8xPTM2LjE2NjY2NjY2NjY2NjY2ICtsYXRfMj0zNC4zMzMzMzMzMzMzMzMzNCArbGF0XzA9MzMuNzUgK2xvbl8wPS03OSAreF8wPTYwOTYwMS4yMTkyMDI0Mzg0ICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM0MDVcIjonK3Byb2o9dXRtICt6b25lPTQ4ICtlbGxwcz1XR1M4NCArdG93Z3M4ND0tMTkyLjg3MywtMzkuMzgyLC0xMTEuMjAyLC0wLjAwMjA1LC0wLjAwMDUsMC4wMDMzNSwwLjAxODggK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM0MDZcIjonK3Byb2o9dXRtICt6b25lPTQ5ICtlbGxwcz1XR1M4NCArdG93Z3M4ND0tMTkyLjg3MywtMzkuMzgyLC0xMTEuMjAyLC0wLjAwMjA1LC0wLjAwMDUsMC4wMDMzNSwwLjAxODggK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM0MDdcIjonK3Byb2o9Y2FzcyArbGF0XzA9MjIuMzEyMTMzMzMzMzMzMzQgK2xvbl8wPTExNC4xNzg1NTU1NTU1NTU2ICt4XzA9NDAyNDMuNTc3NzU2MDQyMzcgK3lfMD0xOTA2OS45MzM1MTUxMjU3OCArYT02Mzc4MjkzLjY0NTIwODc1OSArYj02MzU2NjE3Ljk4NzY3OTgzOCArdG9fbWV0ZXI9MC4zMDQ3OTcyNjU0ICtub19kZWZzICcsXG4gIFwiRVBTRzozNDA4XCI6Jytwcm9qPWxhZWEgK2xhdF8wPTkwICtsb25fMD0wICt4XzA9MCAreV8wPTAgK2E9NjM3MTIyOCArYj02MzcxMjI4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozNDA5XCI6Jytwcm9qPWxhZWEgK2xhdF8wPS05MCArbG9uXzA9MCAreF8wPTAgK3lfMD0wICthPTYzNzEyMjggK2I9NjM3MTIyOCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzQxMFwiOicrcHJvaj1jZWEgK2xvbl8wPTAgK2xhdF90cz0zMCAreF8wPTAgK3lfMD0wICthPTYzNzEyMjggK2I9NjM3MTIyOCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzQxMVwiOicrcHJvaj1zdGVyZSArbGF0XzA9OTAgK2xhdF90cz03MCArbG9uXzA9LTQ1ICtrPTEgK3hfMD0wICt5XzA9MCArYT02Mzc4MjczICtiPTYzNTY4ODkuNDQ5ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozNDEyXCI6Jytwcm9qPXN0ZXJlICtsYXRfMD0tOTAgK2xhdF90cz0tNzAgK2xvbl8wPTAgK2s9MSAreF8wPTAgK3lfMD0wICthPTYzNzgyNzMgK2I9NjM1Njg4OS40NDkgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM0MTNcIjonK3Byb2o9c3RlcmUgK2xhdF8wPTkwICtsYXRfdHM9NzAgK2xvbl8wPS00NSAraz0xICt4XzA9MCAreV8wPTAgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozNDE0XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0xLjM2NjY2NjY2NjY2NjY2NyArbG9uXzA9MTAzLjgzMzMzMzMzMzMzMzMgK2s9MSAreF8wPTI4MDAxLjY0MiAreV8wPTM4NzQ0LjU3MiArZWxscHM9V0dTODQgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM0MTVcIjonK3Byb2o9bGNjICtsYXRfMT0xOCArbGF0XzI9MjQgK2xhdF8wPTIxICtsb25fMD0xMTQgK3hfMD01MDAwMDAgK3lfMD01MDAwMDAgK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCwxLjksMCwwLDAuODE0LC0wLjM4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozNDE2XCI6Jytwcm9qPWxjYyArbGF0XzE9NDkgK2xhdF8yPTQ2ICtsYXRfMD00Ny41ICtsb25fMD0xMy4zMzMzMzMzMzMzMzMzMyAreF8wPTQwMDAwMCAreV8wPTQwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzQxN1wiOicrcHJvaj1sY2MgK2xhdF8xPTQzLjI2NjY2NjY2NjY2NjY3ICtsYXRfMj00Mi4wNjY2NjY2NjY2NjY2NyArbGF0XzA9NDEuNSArbG9uXzA9LTkzLjUgK3hfMD0xNTAwMDAwICt5XzA9OTk5OTk5Ljk5OTk4OTg0MDIgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzozNDE4XCI6Jytwcm9qPWxjYyArbGF0XzE9NDEuNzgzMzMzMzMzMzMzMzMgK2xhdF8yPTQwLjYxNjY2NjY2NjY2NjY3ICtsYXRfMD00MCArbG9uXzA9LTkzLjUgK3hfMD01MDAwMDAuMDAwMDEwMTYgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzQxOVwiOicrcHJvaj1sY2MgK2xhdF8xPTM5Ljc4MzMzMzMzMzMzMzMzICtsYXRfMj0zOC43MTY2NjY2NjY2NjY2NyArbGF0XzA9MzguMzMzMzMzMzMzMzMzMzQgK2xvbl8wPS05OCAreF8wPTM5OTk5OS45OTk5ODk4NCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzozNDIwXCI6Jytwcm9qPWxjYyArbGF0XzE9MzguNTY2NjY2NjY2NjY2NjcgK2xhdF8yPTM3LjI2NjY2NjY2NjY2NjY3ICtsYXRfMD0zNi42NjY2NjY2NjY2NjY2NiArbG9uXzA9LTk4LjUgK3hfMD0zOTk5OTkuOTk5OTg5ODQgK3lfMD0zOTk5OTkuOTk5OTg5ODQgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzozNDIxXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0zNC43NSArbG9uXzA9LTExNS41ODMzMzMzMzMzMzMzICtrPTAuOTk5OSAreF8wPTIwMDAwMC4wMDAwMTAxNiAreV8wPTgwMDAwMDAuMDAwMDEwMTYzICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzQyMlwiOicrcHJvaj10bWVyYyArbGF0XzA9MzQuNzUgK2xvbl8wPS0xMTYuNjY2NjY2NjY2NjY2NyAraz0wLjk5OTkgK3hfMD01MDAwMDAuMDAwMDEwMTYgK3lfMD02MDAwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzQyM1wiOicrcHJvaj10bWVyYyArbGF0XzA9MzQuNzUgK2xvbl8wPS0xMTguNTgzMzMzMzMzMzMzMyAraz0wLjk5OTkgK3hfMD04MDAwMDAuMDAwMDEwMTU5OSAreV8wPTM5OTk5OTkuOTk5OTg5ODQgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzozNDI0XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0zOC44MzMzMzMzMzMzMzMzNCArbG9uXzA9LTc0LjUgK2s9MC45OTk5ICt4XzA9MTUwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM0MjVcIjonK3Byb2o9bGNjICtsYXRfMT00My4yNjY2NjY2NjY2NjY2NyArbGF0XzI9NDIuMDY2NjY2NjY2NjY2NjcgK2xhdF8wPTQxLjUgK2xvbl8wPS05My41ICt4XzA9MTUwMDAwMCAreV8wPTk5OTk5OS45OTk5ODk4NDAyICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzQyNlwiOicrcHJvaj1sY2MgK2xhdF8xPTQxLjc4MzMzMzMzMzMzMzMzICtsYXRfMj00MC42MTY2NjY2NjY2NjY2NyArbGF0XzA9NDAgK2xvbl8wPS05My41ICt4XzA9NTAwMDAwLjAwMDAxMDE2ICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM0MjdcIjonK3Byb2o9bGNjICtsYXRfMT0zOS43ODMzMzMzMzMzMzMzMyArbGF0XzI9MzguNzE2NjY2NjY2NjY2NjcgK2xhdF8wPTM4LjMzMzMzMzMzMzMzMzM0ICtsb25fMD0tOTggK3hfMD0zOTk5OTkuOTk5OTg5ODQgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzQyOFwiOicrcHJvaj1sY2MgK2xhdF8xPTM4LjU2NjY2NjY2NjY2NjY3ICtsYXRfMj0zNy4yNjY2NjY2NjY2NjY2NyArbGF0XzA9MzYuNjY2NjY2NjY2NjY2NjYgK2xvbl8wPS05OC41ICt4XzA9Mzk5OTk5Ljk5OTk4OTg0ICt5XzA9Mzk5OTk5Ljk5OTk4OTg0ICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzQyOVwiOicrcHJvaj10bWVyYyArbGF0XzA9MzQuNzUgK2xvbl8wPS0xMTUuNTgzMzMzMzMzMzMzMyAraz0wLjk5OTkgK3hfMD0yMDAwMDAuMDAwMDEwMTYgK3lfMD04MDAwMDAwLjAwMDAxMDE2MyArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM0MzBcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTM0Ljc1ICtsb25fMD0tMTE2LjY2NjY2NjY2NjY2NjcgK2s9MC45OTk5ICt4XzA9NTAwMDAwLjAwMDAxMDE2ICt5XzA9NjAwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM0MzFcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTM0Ljc1ICtsb25fMD0tMTE4LjU4MzMzMzMzMzMzMzMgK2s9MC45OTk5ICt4XzA9ODAwMDAwLjAwMDAxMDE1OTkgK3lfMD0zOTk5OTk5Ljk5OTk4OTg0ICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzQzMlwiOicrcHJvaj10bWVyYyArbGF0XzA9MzguODMzMzMzMzMzMzMzMzQgK2xvbl8wPS03NC41ICtrPTAuOTk5OSAreF8wPTE1MDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzozNDMzXCI6Jytwcm9qPWxjYyArbGF0XzE9MzYuMjMzMzMzMzMzMzMzMzMgK2xhdF8yPTM0LjkzMzMzMzMzMzMzMzMzICtsYXRfMD0zNC4zMzMzMzMzMzMzMzMzNCArbG9uXzA9LTkyICt4XzA9Mzk5OTk5Ljk5OTk4OTg0ICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM0MzRcIjonK3Byb2o9bGNjICtsYXRfMT0zNC43NjY2NjY2NjY2NjY2NyArbGF0XzI9MzMuMyArbGF0XzA9MzIuNjY2NjY2NjY2NjY2NjYgK2xvbl8wPS05MiAreF8wPTM5OTk5OS45OTk5ODk4NCAreV8wPTM5OTk5OS45OTk5ODk4NCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM0MzVcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTM2LjY2NjY2NjY2NjY2NjY2ICtsb25fMD0tODguMzMzMzMzMzMzMzMzMzMgK2s9MC45OTk5NzQ5OTk5OTk5OTk5ICt4XzA9MzAwMDAwLjAwMDAwMDAwMDEgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzQzNlwiOicrcHJvaj10bWVyYyArbGF0XzA9MzYuNjY2NjY2NjY2NjY2NjYgK2xvbl8wPS05MC4xNjY2NjY2NjY2NjY2NyAraz0wLjk5OTk0MTE3NyAreF8wPTY5OTk5OS45OTk5ODk4NDAyICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM0MzdcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTQyLjUgK2xvbl8wPS03MS42NjY2NjY2NjY2NjY2NyAraz0wLjk5OTk2NjY2NyAreF8wPTMwMDAwMC4wMDAwMDAwMDAxICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM0MzhcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTQxLjA4MzMzMzMzMzMzMzM0ICtsb25fMD0tNzEuNSAraz0wLjk5OTk5Mzc1ICt4XzA9OTk5OTkuOTk5OTg5ODM5OTcgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzQzOVwiOicrcHJvaj11dG0gK3pvbmU9MzkgK2VsbHBzPWNscms4MCArdG93Z3M4ND0tMTgwLjYyNCwtMjI1LjUxNiwxNzMuOTE5LC0wLjgxLC0xLjg5OCw4LjMzNiwxNi43MTAxICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozNDQwXCI6Jytwcm9qPXV0bSArem9uZT00MCArZWxscHM9Y2xyazgwICt0b3dnczg0PS0xODAuNjI0LC0yMjUuNTE2LDE3My45MTksLTAuODEsLTEuODk4LDguMzM2LDE2LjcxMDEgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM0NDFcIjonK3Byb2o9bGNjICtsYXRfMT0zNi4yMzMzMzMzMzMzMzMzMyArbGF0XzI9MzQuOTMzMzMzMzMzMzMzMzMgK2xhdF8wPTM0LjMzMzMzMzMzMzMzMzM0ICtsb25fMD0tOTIgK3hfMD0zOTk5OTkuOTk5OTg5ODQgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzQ0MlwiOicrcHJvaj1sY2MgK2xhdF8xPTM0Ljc2NjY2NjY2NjY2NjY3ICtsYXRfMj0zMy4zICtsYXRfMD0zMi42NjY2NjY2NjY2NjY2NiArbG9uXzA9LTkyICt4XzA9Mzk5OTk5Ljk5OTk4OTg0ICt5XzA9Mzk5OTk5Ljk5OTk4OTg0ICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzQ0M1wiOicrcHJvaj10bWVyYyArbGF0XzA9MzYuNjY2NjY2NjY2NjY2NjYgK2xvbl8wPS04OC4zMzMzMzMzMzMzMzMzMyAraz0wLjk5OTk3NDk5OTk5OTk5OTkgK3hfMD0zMDAwMDAuMDAwMDAwMDAwMSAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzozNDQ0XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0zNi42NjY2NjY2NjY2NjY2NiArbG9uXzA9LTkwLjE2NjY2NjY2NjY2NjY3ICtrPTAuOTk5OTQxMTc3ICt4XzA9Njk5OTk5Ljk5OTk4OTg0MDIgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzQ0NVwiOicrcHJvaj10bWVyYyArbGF0XzA9NDIuNSArbG9uXzA9LTcxLjY2NjY2NjY2NjY2NjY3ICtrPTAuOTk5OTY2NjY3ICt4XzA9MzAwMDAwLjAwMDAwMDAwMDEgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzQ0NlwiOicrcHJvaj10bWVyYyArbGF0XzA9NDEuMDgzMzMzMzMzMzMzMzQgK2xvbl8wPS03MS41ICtrPTAuOTk5OTkzNzUgK3hfMD05OTk5OS45OTk5ODk4Mzk5NyAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzozNDQ3XCI6Jytwcm9qPWxjYyArbGF0XzE9NDkuODMzMzMzMzMzMzMzMzQgK2xhdF8yPTUxLjE2NjY2NjY2NjY2NjY2ICtsYXRfMD01MC43OTc4MTUgK2xvbl8wPTQuMzU5MjE1ODMzMzMzMzMzICt4XzA9MTUwMzI4ICt5XzA9MTY2MjYyICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozNDQ4XCI6Jytwcm9qPWxjYyArbGF0XzE9MTggK2xhdF8wPTE4ICtsb25fMD0tNzcgK2tfMD0xICt4XzA9NzUwMDAwICt5XzA9NjUwMDAwICtlbGxwcz1XR1M4NCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozNDQ5XCI6Jytwcm9qPXV0bSArem9uZT0xNyArZWxscHM9V0dTODQgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzQ1MFwiOicrcHJvaj11dG0gK3pvbmU9MTggK2VsbHBzPVdHUzg0ICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM0NTFcIjonK3Byb2o9bGNjICtsYXRfMT0zMi42NjY2NjY2NjY2NjY2NiArbGF0XzI9MzEuMTY2NjY2NjY2NjY2NjcgK2xhdF8wPTMwLjUgK2xvbl8wPS05Mi41ICt4XzA9OTk5OTk5Ljk5OTk4OTg0MDIgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzQ1MlwiOicrcHJvaj1sY2MgK2xhdF8xPTMwLjcgK2xhdF8yPTI5LjMgK2xhdF8wPTI4LjUgK2xvbl8wPS05MS4zMzMzMzMzMzMzMzMzMyAreF8wPTk5OTk5OS45OTk5ODk4NDAyICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM0NTNcIjonK3Byb2o9bGNjICtsYXRfMT0yNy44MzMzMzMzMzMzMzMzMyArbGF0XzI9MjYuMTY2NjY2NjY2NjY2NjcgK2xhdF8wPTI1LjUgK2xvbl8wPS05MS4zMzMzMzMzMzMzMzMzMyAreF8wPTk5OTk5OS45OTk5ODk4NDAyICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM0NTRcIjonK3Byb2o9bGNjICtsYXRfMT00NC40ICtsYXRfMj00Mi44MzMzMzMzMzMzMzMzNCArbGF0XzA9NDIuMzMzMzMzMzMzMzMzMzQgK2xvbl8wPS0xMDAuMzMzMzMzMzMzMzMzMyAreF8wPTYwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzozNDU1XCI6Jytwcm9qPWxjYyArbGF0XzE9NDQuNCArbGF0XzI9NDIuODMzMzMzMzMzMzMzMzQgK2xhdF8wPTQyLjMzMzMzMzMzMzMzMzM0ICtsb25fMD0tMTAwLjMzMzMzMzMzMzMzMzMgK3hfMD02MDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzQ1NlwiOicrcHJvaj1sY2MgK2xhdF8xPTMyLjY2NjY2NjY2NjY2NjY2ICtsYXRfMj0zMS4xNjY2NjY2NjY2NjY2NyArbGF0XzA9MzAuNSArbG9uXzA9LTkyLjUgK3hfMD05OTk5OTkuOTk5OTg5ODQwMiAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzozNDU3XCI6Jytwcm9qPWxjYyArbGF0XzE9MzAuNyArbGF0XzI9MjkuMyArbGF0XzA9MjguNSArbG9uXzA9LTkxLjMzMzMzMzMzMzMzMzMzICt4XzA9OTk5OTk5Ljk5OTk4OTg0MDIgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzQ1OFwiOicrcHJvaj1sY2MgK2xhdF8xPTQ1LjY4MzMzMzMzMzMzMzMzICtsYXRfMj00NC40MTY2NjY2NjY2NjY2NiArbGF0XzA9NDMuODMzMzMzMzMzMzMzMzQgK2xvbl8wPS0xMDAgK3hfMD02MDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzQ1OVwiOicrcHJvaj1sY2MgK2xhdF8xPTQ0LjQgK2xhdF8yPTQyLjgzMzMzMzMzMzMzMzM0ICtsYXRfMD00Mi4zMzMzMzMzMzMzMzMzNCArbG9uXzA9LTEwMC4zMzMzMzMzMzMzMzMzICt4XzA9NjAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM0NjBcIjonK3Byb2o9dG1lcmMgK2xhdF8wPS0xNyArbG9uXzA9MTc4Ljc1ICtrPTAuOTk5ODUgK3hfMD0yMDAwMDAwICt5XzA9NDAwMDAwMCArZWxscHM9V0dTNzIgK3Rvd2dzODQ9MCwwLDQuNSwwLDAsMC41NTQsMC4yMjYzICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozNDYxXCI6Jytwcm9qPXV0bSArem9uZT0yOCArYT02Mzc4MjQ5LjIgK2I9NjM1NjUxNSArdG93Z3M4ND0tODMsMzcsMTI0LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM0NjJcIjonK3Byb2o9dXRtICt6b25lPTI5ICthPTYzNzgyNDkuMiArYj02MzU2NTE1ICt0b3dnczg0PS04MywzNywxMjQsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzQ2M1wiOicrcHJvaj10bWVyYyArbGF0XzA9NDMuNSArbG9uXzA9LTY5LjEyNSAraz0wLjk5OTk4ICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzQ2NFwiOicrcHJvaj10bWVyYyArbGF0XzA9NDMuNSArbG9uXzA9LTY5LjEyNSAraz0wLjk5OTk4ICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzQ2NVwiOicrcHJvaj10bWVyYyArbGF0XzA9MzAuNSArbG9uXzA9LTg1LjgzMzMzMzMzMzMzMzMzICtrPTAuOTk5OTYgK3hfMD0yMDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozNDY2XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0zMCArbG9uXzA9LTg3LjUgK2s9MC45OTk5MzMzMzMgK3hfMD02MDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozNDY3XCI6Jytwcm9qPWFlYSArbGF0XzE9NTUgK2xhdF8yPTY1ICtsYXRfMD01MCArbG9uXzA9LTE1NCAreF8wPTAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozNDY4XCI6Jytwcm9qPW9tZXJjICtsYXRfMD01NyArbG9uYz0tMTMzLjY2NjY2NjY2NjY2NjcgK2FscGhhPTMyMy4xMzAxMDIzNjExMTExICtrPTAuOTk5OSAreF8wPTUwMDAwMDAgK3lfMD0tNTAwMDAwMCArbm9fdW9mZiArZ2FtbWE9MzIzLjEzMDEwMjM2MTExMTEgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM0NjlcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTU0ICtsb25fMD0tMTQyICtrPTAuOTk5OSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM0NzBcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTU0ICtsb25fMD0tMTQ2ICtrPTAuOTk5OSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM0NzFcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTU0ICtsb25fMD0tMTUwICtrPTAuOTk5OSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM0NzJcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTU0ICtsb25fMD0tMTU0ICtrPTAuOTk5OSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM0NzNcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTU0ICtsb25fMD0tMTU4ICtrPTAuOTk5OSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM0NzRcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTU0ICtsb25fMD0tMTYyICtrPTAuOTk5OSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM0NzVcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTU0ICtsb25fMD0tMTY2ICtrPTAuOTk5OSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM0NzZcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTU0ICtsb25fMD0tMTcwICtrPTAuOTk5OSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM0NzdcIjonK3Byb2o9bGNjICtsYXRfMT01My44MzMzMzMzMzMzMzMzNCArbGF0XzI9NTEuODMzMzMzMzMzMzMzMzQgK2xhdF8wPTUxICtsb25fMD0tMTc2ICt4XzA9MTAwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM0NzhcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTMxICtsb25fMD0tMTExLjkxNjY2NjY2NjY2NjcgK2s9MC45OTk5ICt4XzA9MjEzMzYwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzQ3OVwiOicrcHJvaj10bWVyYyArbGF0XzA9MzEgK2xvbl8wPS0xMTEuOTE2NjY2NjY2NjY2NyAraz0wLjk5OTkgK3hfMD0yMTMzNjAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzQ4MFwiOicrcHJvaj10bWVyYyArbGF0XzA9MzEgK2xvbl8wPS0xMTAuMTY2NjY2NjY2NjY2NyAraz0wLjk5OTkgK3hfMD0yMTMzNjAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozNDgxXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0zMSArbG9uXzA9LTExMC4xNjY2NjY2NjY2NjY3ICtrPTAuOTk5OSAreF8wPTIxMzM2MCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzozNDgyXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0zMSArbG9uXzA9LTExMy43NSAraz0wLjk5OTkzMzMzMyAreF8wPTIxMzM2MCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM0ODNcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTMxICtsb25fMD0tMTEzLjc1ICtrPTAuOTk5OTMzMzMzICt4XzA9MjEzMzYwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9ZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM0ODRcIjonK3Byb2o9bGNjICtsYXRfMT0zNi4yMzMzMzMzMzMzMzMzMyArbGF0XzI9MzQuOTMzMzMzMzMzMzMzMzMgK2xhdF8wPTM0LjMzMzMzMzMzMzMzMzM0ICtsb25fMD0tOTIgK3hfMD00MDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozNDg1XCI6Jytwcm9qPWxjYyArbGF0XzE9MzYuMjMzMzMzMzMzMzMzMzMgK2xhdF8yPTM0LjkzMzMzMzMzMzMzMzMzICtsYXRfMD0zNC4zMzMzMzMzMzMzMzMzNCArbG9uXzA9LTkyICt4XzA9Mzk5OTk5Ljk5OTk4OTg0ICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM0ODZcIjonK3Byb2o9bGNjICtsYXRfMT0zNC43NjY2NjY2NjY2NjY2NyArbGF0XzI9MzMuMyArbGF0XzA9MzIuNjY2NjY2NjY2NjY2NjYgK2xvbl8wPS05MiAreF8wPTQwMDAwMCAreV8wPTQwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzQ4N1wiOicrcHJvaj1sY2MgK2xhdF8xPTM0Ljc2NjY2NjY2NjY2NjY3ICtsYXRfMj0zMy4zICtsYXRfMD0zMi42NjY2NjY2NjY2NjY2NiArbG9uXzA9LTkyICt4XzA9Mzk5OTk5Ljk5OTk4OTg0ICt5XzA9Mzk5OTk5Ljk5OTk4OTg0ICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzQ4OFwiOicrcHJvaj1hZWEgK2xhdF8xPTM0ICtsYXRfMj00MC41ICtsYXRfMD0wICtsb25fMD0tMTIwICt4XzA9MCAreV8wPS00MDAwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozNDg5XCI6Jytwcm9qPWxjYyArbGF0XzE9NDEuNjY2NjY2NjY2NjY2NjYgK2xhdF8yPTQwICtsYXRfMD0zOS4zMzMzMzMzMzMzMzMzNCArbG9uXzA9LTEyMiAreF8wPTIwMDAwMDAgK3lfMD01MDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM0OTBcIjonK3Byb2o9bGNjICtsYXRfMT00MS42NjY2NjY2NjY2NjY2NiArbGF0XzI9NDAgK2xhdF8wPTM5LjMzMzMzMzMzMzMzMzM0ICtsb25fMD0tMTIyICt4XzA9MjAwMDAwMC4wMDAxMDE2ICt5XzA9NTAwMDAwLjAwMDEwMTYwMDEgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzozNDkxXCI6Jytwcm9qPWxjYyArbGF0XzE9MzkuODMzMzMzMzMzMzMzMzQgK2xhdF8yPTM4LjMzMzMzMzMzMzMzMzM0ICtsYXRfMD0zNy42NjY2NjY2NjY2NjY2NiArbG9uXzA9LTEyMiAreF8wPTIwMDAwMDAgK3lfMD01MDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM0OTJcIjonK3Byb2o9bGNjICtsYXRfMT0zOS44MzMzMzMzMzMzMzMzNCArbGF0XzI9MzguMzMzMzMzMzMzMzMzMzQgK2xhdF8wPTM3LjY2NjY2NjY2NjY2NjY2ICtsb25fMD0tMTIyICt4XzA9MjAwMDAwMC4wMDAxMDE2ICt5XzA9NTAwMDAwLjAwMDEwMTYwMDEgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzozNDkzXCI6Jytwcm9qPWxjYyArbGF0XzE9MzguNDMzMzMzMzMzMzMzMzMgK2xhdF8yPTM3LjA2NjY2NjY2NjY2NjY3ICtsYXRfMD0zNi41ICtsb25fMD0tMTIwLjUgK3hfMD0yMDAwMDAwICt5XzA9NTAwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozNDk0XCI6Jytwcm9qPWxjYyArbGF0XzE9MzguNDMzMzMzMzMzMzMzMzMgK2xhdF8yPTM3LjA2NjY2NjY2NjY2NjY3ICtsYXRfMD0zNi41ICtsb25fMD0tMTIwLjUgK3hfMD0yMDAwMDAwLjAwMDEwMTYgK3lfMD01MDAwMDAuMDAwMTAxNjAwMSArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM0OTVcIjonK3Byb2o9bGNjICtsYXRfMT0zNy4yNSArbGF0XzI9MzYgK2xhdF8wPTM1LjMzMzMzMzMzMzMzMzM0ICtsb25fMD0tMTE5ICt4XzA9MjAwMDAwMCAreV8wPTUwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzQ5NlwiOicrcHJvaj1sY2MgK2xhdF8xPTM3LjI1ICtsYXRfMj0zNiArbGF0XzA9MzUuMzMzMzMzMzMzMzMzMzQgK2xvbl8wPS0xMTkgK3hfMD0yMDAwMDAwLjAwMDEwMTYgK3lfMD01MDAwMDAuMDAwMTAxNjAwMSArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM0OTdcIjonK3Byb2o9bGNjICtsYXRfMT0zNS40NjY2NjY2NjY2NjY2NyArbGF0XzI9MzQuMDMzMzMzMzMzMzMzMzMgK2xhdF8wPTMzLjUgK2xvbl8wPS0xMTggK3hfMD0yMDAwMDAwICt5XzA9NTAwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozNDk4XCI6Jytwcm9qPWxjYyArbGF0XzE9MzUuNDY2NjY2NjY2NjY2NjcgK2xhdF8yPTM0LjAzMzMzMzMzMzMzMzMzICtsYXRfMD0zMy41ICtsb25fMD0tMTE4ICt4XzA9MjAwMDAwMC4wMDAxMDE2ICt5XzA9NTAwMDAwLjAwMDEwMTYwMDEgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzozNDk5XCI6Jytwcm9qPWxjYyArbGF0XzE9MzMuODgzMzMzMzMzMzMzMzMgK2xhdF8yPTMyLjc4MzMzMzMzMzMzMzMzICtsYXRfMD0zMi4xNjY2NjY2NjY2NjY2NiArbG9uXzA9LTExNi4yNSAreF8wPTIwMDAwMDAgK3lfMD01MDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM1MDBcIjonK3Byb2o9bGNjICtsYXRfMT0zMy44ODMzMzMzMzMzMzMzMyArbGF0XzI9MzIuNzgzMzMzMzMzMzMzMzMgK2xhdF8wPTMyLjE2NjY2NjY2NjY2NjY2ICtsb25fMD0tMTE2LjI1ICt4XzA9MjAwMDAwMC4wMDAxMDE2ICt5XzA9NTAwMDAwLjAwMDEwMTYwMDEgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzozNTAxXCI6Jytwcm9qPWxjYyArbGF0XzE9MzkuNzUgK2xhdF8yPTM4LjQ1ICtsYXRfMD0zNy44MzMzMzMzMzMzMzMzNCArbG9uXzA9LTEwNS41ICt4XzA9OTE0NDAxLjgyODkgK3lfMD0zMDQ4MDAuNjA5NiArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzUwMlwiOicrcHJvaj1sY2MgK2xhdF8xPTM5Ljc1ICtsYXRfMj0zOC40NSArbGF0XzA9MzcuODMzMzMzMzMzMzMzMzQgK2xvbl8wPS0xMDUuNSAreF8wPTkxNDQwMS44Mjg4MDM2NTc2ICt5XzA9MzA0ODAwLjYwOTYwMTIxOTIgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzozNTAzXCI6Jytwcm9qPWxjYyArbGF0XzE9NDAuNzgzMzMzMzMzMzMzMzMgK2xhdF8yPTM5LjcxNjY2NjY2NjY2NjY3ICtsYXRfMD0zOS4zMzMzMzMzMzMzMzMzNCArbG9uXzA9LTEwNS41ICt4XzA9OTE0NDAxLjgyODkgK3lfMD0zMDQ4MDAuNjA5NiArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzUwNFwiOicrcHJvaj1sY2MgK2xhdF8xPTQwLjc4MzMzMzMzMzMzMzMzICtsYXRfMj0zOS43MTY2NjY2NjY2NjY2NyArbGF0XzA9MzkuMzMzMzMzMzMzMzMzMzQgK2xvbl8wPS0xMDUuNSAreF8wPTkxNDQwMS44Mjg4MDM2NTc2ICt5XzA9MzA0ODAwLjYwOTYwMTIxOTIgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzozNTA1XCI6Jytwcm9qPWxjYyArbGF0XzE9MzguNDMzMzMzMzMzMzMzMzMgK2xhdF8yPTM3LjIzMzMzMzMzMzMzMzMzICtsYXRfMD0zNi42NjY2NjY2NjY2NjY2NiArbG9uXzA9LTEwNS41ICt4XzA9OTE0NDAxLjgyODkgK3lfMD0zMDQ4MDAuNjA5NiArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzUwNlwiOicrcHJvaj1sY2MgK2xhdF8xPTM4LjQzMzMzMzMzMzMzMzMzICtsYXRfMj0zNy4yMzMzMzMzMzMzMzMzMyArbGF0XzA9MzYuNjY2NjY2NjY2NjY2NjYgK2xvbl8wPS0xMDUuNSAreF8wPTkxNDQwMS44Mjg4MDM2NTc2ICt5XzA9MzA0ODAwLjYwOTYwMTIxOTIgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzozNTA3XCI6Jytwcm9qPWxjYyArbGF0XzE9NDEuODY2NjY2NjY2NjY2NjcgK2xhdF8yPTQxLjIgK2xhdF8wPTQwLjgzMzMzMzMzMzMzMzM0ICtsb25fMD0tNzIuNzUgK3hfMD0zMDQ4MDAuNjA5NiAreV8wPTE1MjQwMC4zMDQ4ICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozNTA4XCI6Jytwcm9qPWxjYyArbGF0XzE9NDEuODY2NjY2NjY2NjY2NjcgK2xhdF8yPTQxLjIgK2xhdF8wPTQwLjgzMzMzMzMzMzMzMzM0ICtsb25fMD0tNzIuNzUgK3hfMD0zMDQ4MDAuNjA5NjAxMjE5MiAreV8wPTE1MjQwMC4zMDQ4MDA2MDk2ICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzUwOVwiOicrcHJvaj10bWVyYyArbGF0XzA9MzggK2xvbl8wPS03NS40MTY2NjY2NjY2NjY2NyAraz0wLjk5OTk5NSAreF8wPTIwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM1MTBcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTM4ICtsb25fMD0tNzUuNDE2NjY2NjY2NjY2NjcgK2s9MC45OTk5OTUgK3hfMD0yMDAwMDAuMDAwMTAxNjAwMiAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzozNTExXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0yNC4zMzMzMzMzMzMzMzMzMyArbG9uXzA9LTgxICtrPTAuOTk5OTQxMTc3ICt4XzA9MjAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzUxMlwiOicrcHJvaj10bWVyYyArbGF0XzA9MjQuMzMzMzMzMzMzMzMzMzMgK2xvbl8wPS04MSAraz0wLjk5OTk0MTE3NyAreF8wPTIwMDAwMC4wMDAxMDE2MDAyICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM1MTNcIjonK3Byb2o9YWVhICtsYXRfMT0yNCArbGF0XzI9MzEuNSArbGF0XzA9MjQgK2xvbl8wPS04NCAreF8wPTQwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM1MTRcIjonK3Byb2o9bGNjICtsYXRfMT0zMC43NSArbGF0XzI9MjkuNTgzMzMzMzMzMzMzMzMgK2xhdF8wPTI5ICtsb25fMD0tODQuNSAreF8wPTYwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM1MTVcIjonK3Byb2o9bGNjICtsYXRfMT0zMC43NSArbGF0XzI9MjkuNTgzMzMzMzMzMzMzMzMgK2xhdF8wPTI5ICtsb25fMD0tODQuNSAreF8wPTYwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzozNTE2XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0yNC4zMzMzMzMzMzMzMzMzMyArbG9uXzA9LTgyICtrPTAuOTk5OTQxMTc3ICt4XzA9MjAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzUxN1wiOicrcHJvaj10bWVyYyArbGF0XzA9MjQuMzMzMzMzMzMzMzMzMzMgK2xvbl8wPS04MiAraz0wLjk5OTk0MTE3NyAreF8wPTIwMDAwMC4wMDAxMDE2MDAyICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM1MThcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTMwICtsb25fMD0tODIuMTY2NjY2NjY2NjY2NjcgK2s9MC45OTk5ICt4XzA9MjAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzUxOVwiOicrcHJvaj10bWVyYyArbGF0XzA9MzAgK2xvbl8wPS04Mi4xNjY2NjY2NjY2NjY2NyAraz0wLjk5OTkgK3hfMD0yMDAwMDAuMDAwMTAxNjAwMiAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzozNTIwXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0zMCArbG9uXzA9LTg0LjE2NjY2NjY2NjY2NjY3ICtrPTAuOTk5OSAreF8wPTcwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM1MjFcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTMwICtsb25fMD0tODQuMTY2NjY2NjY2NjY2NjcgK2s9MC45OTk5ICt4XzA9Njk5OTk5Ljk5OTg5ODM5OTggK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzUyMlwiOicrcHJvaj10bWVyYyArbGF0XzA9NDEuNjY2NjY2NjY2NjY2NjYgK2xvbl8wPS0xMTQgK2s9MC45OTk5NDczNjc5OTk5OTk5ICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzUyM1wiOicrcHJvaj10bWVyYyArbGF0XzA9NDEuNjY2NjY2NjY2NjY2NjYgK2xvbl8wPS0xMTQgK2s9MC45OTk5NDczNjc5OTk5OTk5ICt4XzA9NTAwMDAwLjAwMDEwMTYwMDEgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzUyNFwiOicrcHJvaj10bWVyYyArbGF0XzA9NDEuNjY2NjY2NjY2NjY2NjYgK2xvbl8wPS0xMTIuMTY2NjY2NjY2NjY2NyAraz0wLjk5OTk0NzM2Nzk5OTk5OTkgK3hfMD0yMDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozNTI1XCI6Jytwcm9qPXRtZXJjICtsYXRfMD00MS42NjY2NjY2NjY2NjY2NiArbG9uXzA9LTExMi4xNjY2NjY2NjY2NjY3ICtrPTAuOTk5OTQ3MzY3OTk5OTk5OSAreF8wPTIwMDAwMC4wMDAxMDE2MDAyICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM1MjZcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTQxLjY2NjY2NjY2NjY2NjY2ICtsb25fMD0tMTE1Ljc1ICtrPTAuOTk5OTMzMzMzICt4XzA9ODAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzUyN1wiOicrcHJvaj10bWVyYyArbGF0XzA9NDEuNjY2NjY2NjY2NjY2NjYgK2xvbl8wPS0xMTUuNzUgK2s9MC45OTk5MzMzMzMgK3hfMD04MDAwMDAuMDAwMTAxNjAwMSAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzozNTI4XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0zNi42NjY2NjY2NjY2NjY2NiArbG9uXzA9LTg4LjMzMzMzMzMzMzMzMzMzICtrPTAuOTk5OTc0OTk5OTk5OTk5OSAreF8wPTMwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM1MjlcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTM2LjY2NjY2NjY2NjY2NjY2ICtsb25fMD0tODguMzMzMzMzMzMzMzMzMzMgK2s9MC45OTk5NzQ5OTk5OTk5OTk5ICt4XzA9MzAwMDAwLjAwMDAwMDAwMDEgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzUzMFwiOicrcHJvaj10bWVyYyArbGF0XzA9MzYuNjY2NjY2NjY2NjY2NjYgK2xvbl8wPS05MC4xNjY2NjY2NjY2NjY2NyAraz0wLjk5OTk0MTE3NyAreF8wPTcwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM1MzFcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTM2LjY2NjY2NjY2NjY2NjY2ICtsb25fMD0tOTAuMTY2NjY2NjY2NjY2NjcgK2s9MC45OTk5NDExNzcgK3hfMD02OTk5OTkuOTk5OTg5ODQwMiAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzozNTMyXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0zNy41ICtsb25fMD0tODUuNjY2NjY2NjY2NjY2NjcgK2s9MC45OTk5NjY2NjcgK3hfMD0xMDAwMDAgK3lfMD0yNTAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM1MzNcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTM3LjUgK2xvbl8wPS04NS42NjY2NjY2NjY2NjY2NyAraz0wLjk5OTk2NjY2NyAreF8wPTk5OTk5Ljk5OTg5ODM5OTc4ICt5XzA9MjQ5OTk5Ljk5OTg5ODM5OTggK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzozNTM0XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0zNy41ICtsb25fMD0tODcuMDgzMzMzMzMzMzMzMzMgK2s9MC45OTk5NjY2NjcgK3hfMD05MDAwMDAgK3lfMD0yNTAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM1MzVcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTM3LjUgK2xvbl8wPS04Ny4wODMzMzMzMzMzMzMzMyAraz0wLjk5OTk2NjY2NyAreF8wPTkwMDAwMCAreV8wPTI0OTk5OS45OTk4OTgzOTk4ICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzUzNlwiOicrcHJvaj1sY2MgK2xhdF8xPTQzLjI2NjY2NjY2NjY2NjY3ICtsYXRfMj00Mi4wNjY2NjY2NjY2NjY2NyArbGF0XzA9NDEuNSArbG9uXzA9LTkzLjUgK3hfMD0xNTAwMDAwICt5XzA9MTAwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzUzN1wiOicrcHJvaj1sY2MgK2xhdF8xPTQzLjI2NjY2NjY2NjY2NjY3ICtsYXRfMj00Mi4wNjY2NjY2NjY2NjY2NyArbGF0XzA9NDEuNSArbG9uXzA9LTkzLjUgK3hfMD0xNTAwMDAwICt5XzA9OTk5OTk5Ljk5OTk4OTg0MDIgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzozNTM4XCI6Jytwcm9qPWxjYyArbGF0XzE9NDEuNzgzMzMzMzMzMzMzMzMgK2xhdF8yPTQwLjYxNjY2NjY2NjY2NjY3ICtsYXRfMD00MCArbG9uXzA9LTkzLjUgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozNTM5XCI6Jytwcm9qPWxjYyArbGF0XzE9NDEuNzgzMzMzMzMzMzMzMzMgK2xhdF8yPTQwLjYxNjY2NjY2NjY2NjY3ICtsYXRfMD00MCArbG9uXzA9LTkzLjUgK3hfMD01MDAwMDAuMDAwMDEwMTYgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzU0MFwiOicrcHJvaj1sY2MgK2xhdF8xPTM5Ljc4MzMzMzMzMzMzMzMzICtsYXRfMj0zOC43MTY2NjY2NjY2NjY2NyArbGF0XzA9MzguMzMzMzMzMzMzMzMzMzQgK2xvbl8wPS05OCAreF8wPTQwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM1NDFcIjonK3Byb2o9bGNjICtsYXRfMT0zOS43ODMzMzMzMzMzMzMzMyArbGF0XzI9MzguNzE2NjY2NjY2NjY2NjcgK2xhdF8wPTM4LjMzMzMzMzMzMzMzMzM0ICtsb25fMD0tOTggK3hfMD0zOTk5OTkuOTk5OTg5ODQgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzU0MlwiOicrcHJvaj1sY2MgK2xhdF8xPTM4LjU2NjY2NjY2NjY2NjY3ICtsYXRfMj0zNy4yNjY2NjY2NjY2NjY2NyArbGF0XzA9MzYuNjY2NjY2NjY2NjY2NjYgK2xvbl8wPS05OC41ICt4XzA9NDAwMDAwICt5XzA9NDAwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozNTQzXCI6Jytwcm9qPWxjYyArbGF0XzE9MzguNTY2NjY2NjY2NjY2NjcgK2xhdF8yPTM3LjI2NjY2NjY2NjY2NjY3ICtsYXRfMD0zNi42NjY2NjY2NjY2NjY2NiArbG9uXzA9LTk4LjUgK3hfMD0zOTk5OTkuOTk5OTg5ODQgK3lfMD0zOTk5OTkuOTk5OTg5ODQgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzozNTQ0XCI6Jytwcm9qPWxjYyArbGF0XzE9MzcuOTY2NjY2NjY2NjY2NjcgK2xhdF8yPTM4Ljk2NjY2NjY2NjY2NjY3ICtsYXRfMD0zNy41ICtsb25fMD0tODQuMjUgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozNTQ1XCI6Jytwcm9qPWxjYyArbGF0XzE9MzcuOTY2NjY2NjY2NjY2NjcgK2xhdF8yPTM4Ljk2NjY2NjY2NjY2NjY3ICtsYXRfMD0zNy41ICtsb25fMD0tODQuMjUgK3hfMD01MDAwMDAuMDAwMTAxNjAwMSAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzozNTQ2XCI6Jytwcm9qPWxjYyArbGF0XzE9MzcuMDgzMzMzMzMzMzMzMzQgK2xhdF8yPTM4LjY2NjY2NjY2NjY2NjY2ICtsYXRfMD0zNi4zMzMzMzMzMzMzMzMzNCArbG9uXzA9LTg1Ljc1ICt4XzA9MTUwMDAwMCAreV8wPTEwMDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM1NDdcIjonK3Byb2o9bGNjICtsYXRfMT0zNy4wODMzMzMzMzMzMzMzNCArbGF0XzI9MzguNjY2NjY2NjY2NjY2NjYgK2xhdF8wPTM2LjMzMzMzMzMzMzMzMzM0ICtsb25fMD0tODUuNzUgK3hfMD0xNTAwMDAwICt5XzA9OTk5OTk5Ljk5OTg5ODM5OTggK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzozNTQ4XCI6Jytwcm9qPWxjYyArbGF0XzE9MzcuOTMzMzMzMzMzMzMzMzMgK2xhdF8yPTM2LjczMzMzMzMzMzMzMzMzICtsYXRfMD0zNi4zMzMzMzMzMzMzMzMzNCArbG9uXzA9LTg1Ljc1ICt4XzA9NTAwMDAwICt5XzA9NTAwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozNTQ5XCI6Jytwcm9qPWxjYyArbGF0XzE9MzcuOTMzMzMzMzMzMzMzMzMgK2xhdF8yPTM2LjczMzMzMzMzMzMzMzMzICtsYXRfMD0zNi4zMzMzMzMzMzMzMzMzNCArbG9uXzA9LTg1Ljc1ICt4XzA9NTAwMDAwLjAwMDEwMTYwMDEgK3lfMD01MDAwMDAuMDAwMTAxNjAwMSArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM1NTBcIjonK3Byb2o9bGNjICtsYXRfMT0zMi42NjY2NjY2NjY2NjY2NiArbGF0XzI9MzEuMTY2NjY2NjY2NjY2NjcgK2xhdF8wPTMwLjUgK2xvbl8wPS05Mi41ICt4XzA9MTAwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM1NTFcIjonK3Byb2o9bGNjICtsYXRfMT0zMi42NjY2NjY2NjY2NjY2NiArbGF0XzI9MzEuMTY2NjY2NjY2NjY2NjcgK2xhdF8wPTMwLjUgK2xvbl8wPS05Mi41ICt4XzA9OTk5OTk5Ljk5OTk4OTg0MDIgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzU1MlwiOicrcHJvaj1sY2MgK2xhdF8xPTMwLjcgK2xhdF8yPTI5LjMgK2xhdF8wPTI4LjUgK2xvbl8wPS05MS4zMzMzMzMzMzMzMzMzMyAreF8wPTEwMDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozNTUzXCI6Jytwcm9qPWxjYyArbGF0XzE9MzAuNyArbGF0XzI9MjkuMyArbGF0XzA9MjguNSArbG9uXzA9LTkxLjMzMzMzMzMzMzMzMzMzICt4XzA9OTk5OTk5Ljk5OTk4OTg0MDIgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzU1NFwiOicrcHJvaj10bWVyYyArbGF0XzA9NDMuNSArbG9uXzA9LTY5LjEyNSAraz0wLjk5OTk4ICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzU1NVwiOicrcHJvaj10bWVyYyArbGF0XzA9NDMuODMzMzMzMzMzMzMzMzQgK2xvbl8wPS02Ny44NzUgK2s9MC45OTk5OCAreF8wPTcwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM1NTZcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTQyLjgzMzMzMzMzMzMzMzM0ICtsb25fMD0tNzAuMzc1ICtrPTAuOTk5OTggK3hfMD0zMDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozNTU3XCI6Jytwcm9qPXRtZXJjICtsYXRfMD00My42NjY2NjY2NjY2NjY2NiArbG9uXzA9LTY4LjUgK2s9MC45OTk5ICt4XzA9MzAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzU1OFwiOicrcHJvaj10bWVyYyArbGF0XzA9NDIuODMzMzMzMzMzMzMzMzQgK2xvbl8wPS03MC4xNjY2NjY2NjY2NjY2NyAraz0wLjk5OTk2NjY2NyAreF8wPTkwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM1NTlcIjonK3Byb2o9bGNjICtsYXRfMT0zOS40NSArbGF0XzI9MzguMyArbGF0XzA9MzcuNjY2NjY2NjY2NjY2NjYgK2xvbl8wPS03NyAreF8wPTQwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM1NjBcIjonK3Byb2o9bGNjICtsYXRfMT00MS43ODMzMzMzMzMzMzMzMyArbGF0XzI9NDAuNzE2NjY2NjY2NjY2NjcgK2xhdF8wPTQwLjMzMzMzMzMzMzMzMzM0ICtsb25fMD0tMTExLjUgK3hfMD01MDAwMDAuMDAwMDEwMTYgK3lfMD05OTk5OTkuOTk5OTg5ODQwMiArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM1NjFcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTE4LjgzMzMzMzMzMzMzMzMzICtsb25fMD0tMTU1LjUgK2s9MC45OTk5NjY2NjcgK3hfMD0xNTI0MDAuMzA0ODAwNjA5NiAreV8wPTAgK2VsbHBzPWNscms2NiArdG93Z3M4ND02MSwtMjg1LC0xODEsMCwwLDAsMCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM1NjJcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTIwLjMzMzMzMzMzMzMzMzMzICtsb25fMD0tMTU2LjY2NjY2NjY2NjY2NjcgK2s9MC45OTk5NjY2NjcgK3hfMD0xNTI0MDAuMzA0ODAwNjA5NiAreV8wPTAgK2VsbHBzPWNscms2NiArdG93Z3M4ND02MSwtMjg1LC0xODEsMCwwLDAsMCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM1NjNcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTIxLjE2NjY2NjY2NjY2NjY3ICtsb25fMD0tMTU4ICtrPTAuOTk5OTkgK3hfMD0xNTI0MDAuMzA0ODAwNjA5NiAreV8wPTAgK2VsbHBzPWNscms2NiArdG93Z3M4ND02MSwtMjg1LC0xODEsMCwwLDAsMCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM1NjRcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTIxLjgzMzMzMzMzMzMzMzMzICtsb25fMD0tMTU5LjUgK2s9MC45OTk5OSAreF8wPTE1MjQwMC4zMDQ4MDA2MDk2ICt5XzA9MCArZWxscHM9Y2xyazY2ICt0b3dnczg0PTYxLC0yODUsLTE4MSwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzU2NVwiOicrcHJvaj10bWVyYyArbGF0XzA9MjEuNjY2NjY2NjY2NjY2NjcgK2xvbl8wPS0xNjAuMTY2NjY2NjY2NjY2NyAraz0xICt4XzA9MTUyNDAwLjMwNDgwMDYwOTYgK3lfMD0wICtlbGxwcz1jbHJrNjYgK3Rvd2dzODQ9NjEsLTI4NSwtMTgxLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzozNTY2XCI6Jytwcm9qPWxjYyArbGF0XzE9NDAuNjUgK2xhdF8yPTM5LjAxNjY2NjY2NjY2NjY3ICtsYXRfMD0zOC4zMzMzMzMzMzMzMzMzNCArbG9uXzA9LTExMS41ICt4XzA9NTAwMDAwLjAwMDAxMDE2ICt5XzA9MjAwMDAwMC4wMDAwMTAxNiArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM1NjdcIjonK3Byb2o9bGNjICtsYXRfMT0zOC4zNSArbGF0XzI9MzcuMjE2NjY2NjY2NjY2NjcgK2xhdF8wPTM2LjY2NjY2NjY2NjY2NjY2ICtsb25fMD0tMTExLjUgK3hfMD01MDAwMDAuMDAwMDEwMTYgK3lfMD0zMDAwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzU2OFwiOicrcHJvaj1sY2MgK2xhdF8xPTQxLjc4MzMzMzMzMzMzMzMzICtsYXRfMj00MC43MTY2NjY2NjY2NjY2NyArbGF0XzA9NDAuMzMzMzMzMzMzMzMzMzQgK2xvbl8wPS0xMTEuNSAreF8wPTUwMDAwMC4wMDAwMTAxNiAreV8wPTk5OTk5OS45OTk5ODk4NDAyICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzU2OVwiOicrcHJvaj1sY2MgK2xhdF8xPTQwLjY1ICtsYXRfMj0zOS4wMTY2NjY2NjY2NjY2NyArbGF0XzA9MzguMzMzMzMzMzMzMzMzMzQgK2xvbl8wPS0xMTEuNSAreF8wPTUwMDAwMC4wMDAwMTAxNiAreV8wPTIwMDAwMDAuMDAwMDEwMTYgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzozNTcwXCI6Jytwcm9qPWxjYyArbGF0XzE9MzguMzUgK2xhdF8yPTM3LjIxNjY2NjY2NjY2NjY3ICtsYXRfMD0zNi42NjY2NjY2NjY2NjY2NiArbG9uXzA9LTExMS41ICt4XzA9NTAwMDAwLjAwMDAxMDE2ICt5XzA9MzAwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM1NzFcIjonK3Byb2o9bGFlYSArbGF0XzA9OTAgK2xvbl8wPTE4MCAreF8wPTAgK3lfMD0wICtkYXR1bT1XR1M4NCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzU3MlwiOicrcHJvaj1sYWVhICtsYXRfMD05MCArbG9uXzA9LTE1MCAreF8wPTAgK3lfMD0wICtkYXR1bT1XR1M4NCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzU3M1wiOicrcHJvaj1sYWVhICtsYXRfMD05MCArbG9uXzA9LTEwMCAreF8wPTAgK3lfMD0wICtkYXR1bT1XR1M4NCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzU3NFwiOicrcHJvaj1sYWVhICtsYXRfMD05MCArbG9uXzA9LTQwICt4XzA9MCAreV8wPTAgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozNTc1XCI6Jytwcm9qPWxhZWEgK2xhdF8wPTkwICtsb25fMD0xMCAreF8wPTAgK3lfMD0wICtkYXR1bT1XR1M4NCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzU3NlwiOicrcHJvaj1sYWVhICtsYXRfMD05MCArbG9uXzA9OTAgK3hfMD0wICt5XzA9MCArZGF0dW09V0dTODQgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM1NzdcIjonK3Byb2o9YWVhICtsYXRfMT0tMTggK2xhdF8yPS0zNiArbGF0XzA9MCArbG9uXzA9MTMyICt4XzA9MCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM1NzhcIjonK3Byb2o9YWVhICtsYXRfMT02MS42NjY2NjY2NjY2NjY2NiArbGF0XzI9NjggK2xhdF8wPTU5ICtsb25fMD0tMTMyLjUgK3hfMD01MDAwMDAgK3lfMD01MDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM1NzlcIjonK3Byb2o9YWVhICtsYXRfMT02MS42NjY2NjY2NjY2NjY2NiArbGF0XzI9NjggK2xhdF8wPTU5ICtsb25fMD0tMTMyLjUgK3hfMD01MDAwMDAgK3lfMD01MDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM1ODBcIjonK3Byb2o9bGNjICtsYXRfMT02MiArbGF0XzI9NzAgK2xhdF8wPTAgK2xvbl8wPS0xMTIgK3hfMD0wICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzU4MVwiOicrcHJvaj1sY2MgK2xhdF8xPTYyICtsYXRfMj03MCArbGF0XzA9MCArbG9uXzA9LTExMiAreF8wPTAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozNTgyXCI6Jytwcm9qPWxjYyArbGF0XzE9MzkuNDUgK2xhdF8yPTM4LjMgK2xhdF8wPTM3LjY2NjY2NjY2NjY2NjY2ICtsb25fMD0tNzcgK3hfMD0zOTk5OTkuOTk5ODk4Mzk5OCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzozNTgzXCI6Jytwcm9qPWxjYyArbGF0XzE9NDEuNDgzMzMzMzMzMzMzMzMgK2xhdF8yPTQxLjI4MzMzMzMzMzMzMzMzICtsYXRfMD00MSArbG9uXzA9LTcwLjUgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozNTg0XCI6Jytwcm9qPWxjYyArbGF0XzE9NDEuNDgzMzMzMzMzMzMzMzMgK2xhdF8yPTQxLjI4MzMzMzMzMzMzMzMzICtsYXRfMD00MSArbG9uXzA9LTcwLjUgK3hfMD01MDAwMDAuMDAwMTAxNjAwMSAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzozNTg1XCI6Jytwcm9qPWxjYyArbGF0XzE9NDIuNjgzMzMzMzMzMzMzMzMgK2xhdF8yPTQxLjcxNjY2NjY2NjY2NjY3ICtsYXRfMD00MSArbG9uXzA9LTcxLjUgK3hfMD0yMDAwMDAgK3lfMD03NTAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM1ODZcIjonK3Byb2o9bGNjICtsYXRfMT00Mi42ODMzMzMzMzMzMzMzMyArbGF0XzI9NDEuNzE2NjY2NjY2NjY2NjcgK2xhdF8wPTQxICtsb25fMD0tNzEuNSAreF8wPTIwMDAwMC4wMDAxMDE2MDAyICt5XzA9NzUwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzU4N1wiOicrcHJvaj1sY2MgK2xhdF8xPTQ1LjcgK2xhdF8yPTQ0LjE4MzMzMzMzMzMzMzMzICtsYXRfMD00My4zMTY2NjY2NjY2NjY2NyArbG9uXzA9LTg0LjM2NjY2NjY2NjY2NjY2ICt4XzA9NjAwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM1ODhcIjonK3Byb2o9bGNjICtsYXRfMT00NS43ICtsYXRfMj00NC4xODMzMzMzMzMzMzMzMyArbGF0XzA9NDMuMzE2NjY2NjY2NjY2NjcgK2xvbl8wPS04NC4zNjY2NjY2NjY2NjY2NiAreF8wPTU5OTk5OTkuOTk5OTc2MDAxICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9ZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM1ODlcIjonK3Byb2o9bGNjICtsYXRfMT00Ny4wODMzMzMzMzMzMzMzNCArbGF0XzI9NDUuNDgzMzMzMzMzMzMzMzMgK2xhdF8wPTQ0Ljc4MzMzMzMzMzMzMzMzICtsb25fMD0tODcgK3hfMD04MDAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzU5MFwiOicrcHJvaj1sY2MgK2xhdF8xPTQ3LjA4MzMzMzMzMzMzMzM0ICtsYXRfMj00NS40ODMzMzMzMzMzMzMzMyArbGF0XzA9NDQuNzgzMzMzMzMzMzMzMzMgK2xvbl8wPS04NyAreF8wPTc5OTk5OTkuOTk5OTY4MDAxICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9ZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM1OTFcIjonK3Byb2o9b21lcmMgK2xhdF8wPTQ1LjMwOTE2NjY2NjY2NjY2ICtsb25jPS04NiArYWxwaGE9MzM3LjI1NTU2ICtrPTAuOTk5NiAreF8wPTI1NDY3MzEuNDk2ICt5XzA9LTQzNTQwMDkuODE2ICtub191b2ZmICtnYW1tYT0zMzcuMjU1NTYgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM1OTJcIjonK3Byb2o9bGNjICtsYXRfMT00My42NjY2NjY2NjY2NjY2NiArbGF0XzI9NDIuMSArbGF0XzA9NDEuNSArbG9uXzA9LTg0LjM2NjY2NjY2NjY2NjY2ICt4XzA9NDAwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM1OTNcIjonK3Byb2o9bGNjICtsYXRfMT00My42NjY2NjY2NjY2NjY2NiArbGF0XzI9NDIuMSArbGF0XzA9NDEuNSArbG9uXzA9LTg0LjM2NjY2NjY2NjY2NjY2ICt4XzA9Mzk5OTk5OS45OTk5ODQgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzU5NFwiOicrcHJvaj1sY2MgK2xhdF8xPTQ3LjA1ICtsYXRfMj00NS42MTY2NjY2NjY2NjY2NyArbGF0XzA9NDUgK2xvbl8wPS05NC4yNSAreF8wPTgwMDAwMCAreV8wPTEwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzU5NVwiOicrcHJvaj1sY2MgK2xhdF8xPTQ4LjYzMzMzMzMzMzMzMzMzICtsYXRfMj00Ny4wMzMzMzMzMzMzMzMzMyArbGF0XzA9NDYuNSArbG9uXzA9LTkzLjA5OTk5OTk5OTk5OTk5ICt4XzA9ODAwMDAwICt5XzA9MTAwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozNTk2XCI6Jytwcm9qPWxjYyArbGF0XzE9NDUuMjE2NjY2NjY2NjY2NjcgK2xhdF8yPTQzLjc4MzMzMzMzMzMzMzMzICtsYXRfMD00MyArbG9uXzA9LTk0ICt4XzA9ODAwMDAwICt5XzA9MTAwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozNTk3XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0yOS41ICtsb25fMD0tODguODMzMzMzMzMzMzMzMzMgK2s9MC45OTk5NSAreF8wPTMwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM1OThcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTI5LjUgK2xvbl8wPS04OC44MzMzMzMzMzMzMzMzMyAraz0wLjk5OTk1ICt4XzA9MzAwMDAwLjAwMDAwMDAwMDEgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzU5OVwiOicrcHJvaj10bWVyYyArbGF0XzA9MjkuNSArbG9uXzA9LTkwLjMzMzMzMzMzMzMzMzMzICtrPTAuOTk5OTUgK3hfMD03MDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozNjAwXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0yOS41ICtsb25fMD0tOTAuMzMzMzMzMzMzMzMzMzMgK2s9MC45OTk5NSAreF8wPTY5OTk5OS45OTk4OTgzOTk4ICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM2MDFcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTM1LjgzMzMzMzMzMzMzMzM0ICtsb25fMD0tOTIuNSAraz0wLjk5OTkzMzMzMyAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM2MDJcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTM1LjgzMzMzMzMzMzMzMzM0ICtsb25fMD0tOTAuNSAraz0wLjk5OTkzMzMzMyAreF8wPTI1MDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM2MDNcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTM2LjE2NjY2NjY2NjY2NjY2ICtsb25fMD0tOTQuNSAraz0wLjk5OTk0MTE3NyAreF8wPTg1MDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM2MDRcIjonK3Byb2o9bGNjICtsYXRfMT00OSArbGF0XzI9NDUgK2xhdF8wPTQ0LjI1ICtsb25fMD0tMTA5LjUgK3hfMD02MDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozNjA1XCI6Jytwcm9qPWxjYyArbGF0XzE9NDkgK2xhdF8yPTQ1ICtsYXRfMD00NC4yNSArbG9uXzA9LTEwOS41ICt4XzA9NTk5OTk5Ljk5OTk5NzYgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzYwNlwiOicrcHJvaj1sY2MgK2xhdF8xPTQzICtsYXRfMj00MCArbGF0XzA9MzkuODMzMzMzMzMzMzMzMzQgK2xvbl8wPS0xMDAgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozNjA3XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0zNC43NSArbG9uXzA9LTExNi42NjY2NjY2NjY2NjY3ICtrPTAuOTk5OSAreF8wPTUwMDAwMCAreV8wPTYwMDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM2MDhcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTM0Ljc1ICtsb25fMD0tMTE2LjY2NjY2NjY2NjY2NjcgK2s9MC45OTk5ICt4XzA9NTAwMDAwLjAwMDAxMDE2ICt5XzA9NjAwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM2MDlcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTM0Ljc1ICtsb25fMD0tMTE1LjU4MzMzMzMzMzMzMzMgK2s9MC45OTk5ICt4XzA9MjAwMDAwICt5XzA9ODAwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzYxMFwiOicrcHJvaj10bWVyYyArbGF0XzA9MzQuNzUgK2xvbl8wPS0xMTUuNTgzMzMzMzMzMzMzMyAraz0wLjk5OTkgK3hfMD0yMDAwMDAuMDAwMDEwMTYgK3lfMD04MDAwMDAwLjAwMDAxMDE2MyArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM2MTFcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTM0Ljc1ICtsb25fMD0tMTE4LjU4MzMzMzMzMzMzMzMgK2s9MC45OTk5ICt4XzA9ODAwMDAwICt5XzA9NDAwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzYxMlwiOicrcHJvaj10bWVyYyArbGF0XzA9MzQuNzUgK2xvbl8wPS0xMTguNTgzMzMzMzMzMzMzMyAraz0wLjk5OTkgK3hfMD04MDAwMDAuMDAwMDEwMTU5OSAreV8wPTM5OTk5OTkuOTk5OTg5ODQgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzozNjEzXCI6Jytwcm9qPXRtZXJjICtsYXRfMD00Mi41ICtsb25fMD0tNzEuNjY2NjY2NjY2NjY2NjcgK2s9MC45OTk5NjY2NjcgK3hfMD0zMDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozNjE0XCI6Jytwcm9qPXRtZXJjICtsYXRfMD00Mi41ICtsb25fMD0tNzEuNjY2NjY2NjY2NjY2NjcgK2s9MC45OTk5NjY2NjcgK3hfMD0zMDAwMDAuMDAwMDAwMDAwMSAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzozNjE1XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0zOC44MzMzMzMzMzMzMzMzNCArbG9uXzA9LTc0LjUgK2s9MC45OTk5ICt4XzA9MTUwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzYxNlwiOicrcHJvaj10bWVyYyArbGF0XzA9MzguODMzMzMzMzMzMzMzMzQgK2xvbl8wPS03NC41ICtrPTAuOTk5OSAreF8wPTE1MDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzozNjE3XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0zMSArbG9uXzA9LTEwNi4yNSAraz0wLjk5OTkgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozNjE4XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0zMSArbG9uXzA9LTEwNi4yNSAraz0wLjk5OTkgK3hfMD01MDAwMDAuMDAwMTAxNjAwMSAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzozNjE5XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0zMSArbG9uXzA9LTEwNC4zMzMzMzMzMzMzMzMzICtrPTAuOTk5OTA5MDkxICt4XzA9MTY1MDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzYyMFwiOicrcHJvaj10bWVyYyArbGF0XzA9MzEgK2xvbl8wPS0xMDQuMzMzMzMzMzMzMzMzMyAraz0wLjk5OTkwOTA5MSAreF8wPTE2NTAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzozNjIxXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0zMSArbG9uXzA9LTEwNy44MzMzMzMzMzMzMzMzICtrPTAuOTk5OTE2NjY3ICt4XzA9ODMwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzYyMlwiOicrcHJvaj10bWVyYyArbGF0XzA9MzEgK2xvbl8wPS0xMDcuODMzMzMzMzMzMzMzMyAraz0wLjk5OTkxNjY2NyAreF8wPTgzMDAwMC4wMDAxMDE2MDAxICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM2MjNcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTQwICtsb25fMD0tNzYuNTgzMzMzMzMzMzMzMzMgK2s9MC45OTk5Mzc1ICt4XzA9MjUwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzYyNFwiOicrcHJvaj10bWVyYyArbGF0XzA9NDAgK2xvbl8wPS03Ni41ODMzMzMzMzMzMzMzMyAraz0wLjk5OTkzNzUgK3hfMD0yNDk5OTkuOTk5ODk4Mzk5OCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzozNjI1XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0zOC44MzMzMzMzMzMzMzMzNCArbG9uXzA9LTc0LjUgK2s9MC45OTk5ICt4XzA9MTUwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzYyNlwiOicrcHJvaj10bWVyYyArbGF0XzA9MzguODMzMzMzMzMzMzMzMzQgK2xvbl8wPS03NC41ICtrPTAuOTk5OSAreF8wPTE1MDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzozNjI3XCI6Jytwcm9qPWxjYyArbGF0XzE9NDEuMDMzMzMzMzMzMzMzMzMgK2xhdF8yPTQwLjY2NjY2NjY2NjY2NjY2ICtsYXRfMD00MC4xNjY2NjY2NjY2NjY2NiArbG9uXzA9LTc0ICt4XzA9MzAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzYyOFwiOicrcHJvaj1sY2MgK2xhdF8xPTQxLjAzMzMzMzMzMzMzMzMzICtsYXRfMj00MC42NjY2NjY2NjY2NjY2NiArbGF0XzA9NDAuMTY2NjY2NjY2NjY2NjYgK2xvbl8wPS03NCAreF8wPTMwMDAwMC4wMDAwMDAwMDAxICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM2MjlcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTQwICtsb25fMD0tNzguNTgzMzMzMzMzMzMzMzMgK2s9MC45OTk5Mzc1ICt4XzA9MzUwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzYzMFwiOicrcHJvaj10bWVyYyArbGF0XzA9NDAgK2xvbl8wPS03OC41ODMzMzMzMzMzMzMzMyAraz0wLjk5OTkzNzUgK3hfMD0zNTAwMDAuMDAwMTAxNjAwMSAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzozNjMxXCI6Jytwcm9qPWxjYyArbGF0XzE9MzYuMTY2NjY2NjY2NjY2NjYgK2xhdF8yPTM0LjMzMzMzMzMzMzMzMzM0ICtsYXRfMD0zMy43NSArbG9uXzA9LTc5ICt4XzA9NjA5NjAxLjIyICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzYzMlwiOicrcHJvaj1sY2MgK2xhdF8xPTM2LjE2NjY2NjY2NjY2NjY2ICtsYXRfMj0zNC4zMzMzMzMzMzMzMzMzNCArbGF0XzA9MzMuNzUgK2xvbl8wPS03OSAreF8wPTYwOTYwMS4yMTkyMDI0Mzg0ICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM2MzNcIjonK3Byb2o9bGNjICtsYXRfMT00OC43MzMzMzMzMzMzMzMzMyArbGF0XzI9NDcuNDMzMzMzMzMzMzMzMzMgK2xhdF8wPTQ3ICtsb25fMD0tMTAwLjUgK3hfMD02MDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozNjM0XCI6Jytwcm9qPWxjYyArbGF0XzE9NDguNzMzMzMzMzMzMzMzMzMgK2xhdF8yPTQ3LjQzMzMzMzMzMzMzMzMzICtsYXRfMD00NyArbG9uXzA9LTEwMC41ICt4XzA9NTk5OTk5Ljk5OTk5NzYgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzYzNVwiOicrcHJvaj1sY2MgK2xhdF8xPTQ3LjQ4MzMzMzMzMzMzMzMzICtsYXRfMj00Ni4xODMzMzMzMzMzMzMzMyArbGF0XzA9NDUuNjY2NjY2NjY2NjY2NjYgK2xvbl8wPS0xMDAuNSAreF8wPTYwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM2MzZcIjonK3Byb2o9bGNjICtsYXRfMT00Ny40ODMzMzMzMzMzMzMzMyArbGF0XzI9NDYuMTgzMzMzMzMzMzMzMzMgK2xhdF8wPTQ1LjY2NjY2NjY2NjY2NjY2ICtsb25fMD0tMTAwLjUgK3hfMD01OTk5OTkuOTk5OTk3NiAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzozNjM3XCI6Jytwcm9qPWxjYyArbGF0XzE9NDEuNyArbGF0XzI9NDAuNDMzMzMzMzMzMzMzMzMgK2xhdF8wPTM5LjY2NjY2NjY2NjY2NjY2ICtsb25fMD0tODIuNSAreF8wPTYwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM2MzhcIjonK3Byb2o9bGNjICtsYXRfMT00MC4wMzMzMzMzMzMzMzMzMyArbGF0XzI9MzguNzMzMzMzMzMzMzMzMzMgK2xhdF8wPTM4ICtsb25fMD0tODIuNSAreF8wPTYwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM2MzlcIjonK3Byb2o9bGNjICtsYXRfMT0zNi43NjY2NjY2NjY2NjY2NyArbGF0XzI9MzUuNTY2NjY2NjY2NjY2NjcgK2xhdF8wPTM1ICtsb25fMD0tOTggK3hfMD02MDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozNjQwXCI6Jytwcm9qPWxjYyArbGF0XzE9MzYuNzY2NjY2NjY2NjY2NjcgK2xhdF8yPTM1LjU2NjY2NjY2NjY2NjY3ICtsYXRfMD0zNSArbG9uXzA9LTk4ICt4XzA9NjAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM2NDFcIjonK3Byb2o9bGNjICtsYXRfMT0zNS4yMzMzMzMzMzMzMzMzMyArbGF0XzI9MzMuOTMzMzMzMzMzMzMzMzMgK2xhdF8wPTMzLjMzMzMzMzMzMzMzMzM0ICtsb25fMD0tOTggK3hfMD02MDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozNjQyXCI6Jytwcm9qPWxjYyArbGF0XzE9MzUuMjMzMzMzMzMzMzMzMzMgK2xhdF8yPTMzLjkzMzMzMzMzMzMzMzMzICtsYXRfMD0zMy4zMzMzMzMzMzMzMzMzNCArbG9uXzA9LTk4ICt4XzA9NjAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM2NDNcIjonK3Byb2o9bGNjICtsYXRfMT00MyArbGF0XzI9NDUuNSArbGF0XzA9NDEuNzUgK2xvbl8wPS0xMjAuNSAreF8wPTQwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM2NDRcIjonK3Byb2o9bGNjICtsYXRfMT00MyArbGF0XzI9NDUuNSArbGF0XzA9NDEuNzUgK2xvbl8wPS0xMjAuNSAreF8wPTM5OTk5OS45OTk5OTg0ICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9ZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM2NDVcIjonK3Byb2o9bGNjICtsYXRfMT00NiArbGF0XzI9NDQuMzMzMzMzMzMzMzMzMzQgK2xhdF8wPTQzLjY2NjY2NjY2NjY2NjY2ICtsb25fMD0tMTIwLjUgK3hfMD0yNTAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzY0NlwiOicrcHJvaj1sY2MgK2xhdF8xPTQ2ICtsYXRfMj00NC4zMzMzMzMzMzMzMzMzNCArbGF0XzA9NDMuNjY2NjY2NjY2NjY2NjYgK2xvbl8wPS0xMjAuNSAreF8wPTI1MDAwMDAuMDAwMTQyNCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzozNjQ3XCI6Jytwcm9qPWxjYyArbGF0XzE9NDQgK2xhdF8yPTQyLjMzMzMzMzMzMzMzMzM0ICtsYXRfMD00MS42NjY2NjY2NjY2NjY2NiArbG9uXzA9LTEyMC41ICt4XzA9MTUwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM2NDhcIjonK3Byb2o9bGNjICtsYXRfMT00NCArbGF0XzI9NDIuMzMzMzMzMzMzMzMzMzQgK2xhdF8wPTQxLjY2NjY2NjY2NjY2NjY2ICtsb25fMD0tMTIwLjUgK3hfMD0xNTAwMDAwLjAwMDE0NjQgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzY0OVwiOicrcHJvaj1sY2MgK2xhdF8xPTQxLjk1ICtsYXRfMj00MC44ODMzMzMzMzMzMzMzMyArbGF0XzA9NDAuMTY2NjY2NjY2NjY2NjYgK2xvbl8wPS03Ny43NSAreF8wPTYwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM2NTBcIjonK3Byb2o9bGNjICtsYXRfMT00MS45NSArbGF0XzI9NDAuODgzMzMzMzMzMzMzMzMgK2xhdF8wPTQwLjE2NjY2NjY2NjY2NjY2ICtsb25fMD0tNzcuNzUgK3hfMD02MDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzY1MVwiOicrcHJvaj1sY2MgK2xhdF8xPTQwLjk2NjY2NjY2NjY2NjY3ICtsYXRfMj0zOS45MzMzMzMzMzMzMzMzMyArbGF0XzA9MzkuMzMzMzMzMzMzMzMzMzQgK2xvbl8wPS03Ny43NSAreF8wPTYwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM2NTJcIjonK3Byb2o9bGNjICtsYXRfMT00MC45NjY2NjY2NjY2NjY2NyArbGF0XzI9MzkuOTMzMzMzMzMzMzMzMzMgK2xhdF8wPTM5LjMzMzMzMzMzMzMzMzM0ICtsb25fMD0tNzcuNzUgK3hfMD02MDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzY1M1wiOicrcHJvaj10bWVyYyArbGF0XzA9NDEuMDgzMzMzMzMzMzMzMzQgK2xvbl8wPS03MS41ICtrPTAuOTk5OTkzNzUgK3hfMD0xMDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozNjU0XCI6Jytwcm9qPXRtZXJjICtsYXRfMD00MS4wODMzMzMzMzMzMzMzNCArbG9uXzA9LTcxLjUgK2s9MC45OTk5OTM3NSAreF8wPTk5OTk5Ljk5OTk4OTgzOTk3ICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM2NTVcIjonK3Byb2o9bGNjICtsYXRfMT0zNC44MzMzMzMzMzMzMzMzNCArbGF0XzI9MzIuNSArbGF0XzA9MzEuODMzMzMzMzMzMzMzMzMgK2xvbl8wPS04MSAreF8wPTYwOTYwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM2NTZcIjonK3Byb2o9bGNjICtsYXRfMT0zNC44MzMzMzMzMzMzMzMzNCArbGF0XzI9MzIuNSArbGF0XzA9MzEuODMzMzMzMzMzMzMzMzMgK2xvbl8wPS04MSAreF8wPTYwOTYwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzozNjU3XCI6Jytwcm9qPWxjYyArbGF0XzE9NDUuNjgzMzMzMzMzMzMzMzMgK2xhdF8yPTQ0LjQxNjY2NjY2NjY2NjY2ICtsYXRfMD00My44MzMzMzMzMzMzMzMzNCArbG9uXzA9LTEwMCAreF8wPTYwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM2NThcIjonK3Byb2o9bGNjICtsYXRfMT00NS42ODMzMzMzMzMzMzMzMyArbGF0XzI9NDQuNDE2NjY2NjY2NjY2NjYgK2xhdF8wPTQzLjgzMzMzMzMzMzMzMzM0ICtsb25fMD0tMTAwICt4XzA9NjAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM2NTlcIjonK3Byb2o9bGNjICtsYXRfMT00NC40ICtsYXRfMj00Mi44MzMzMzMzMzMzMzMzNCArbGF0XzA9NDIuMzMzMzMzMzMzMzMzMzQgK2xvbl8wPS0xMDAuMzMzMzMzMzMzMzMzMyAreF8wPTYwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM2NjBcIjonK3Byb2o9bGNjICtsYXRfMT00NC40ICtsYXRfMj00Mi44MzMzMzMzMzMzMzMzNCArbGF0XzA9NDIuMzMzMzMzMzMzMzMzMzQgK2xvbl8wPS0xMDAuMzMzMzMzMzMzMzMzMyAreF8wPTYwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzozNjYxXCI6Jytwcm9qPWxjYyArbGF0XzE9MzYuNDE2NjY2NjY2NjY2NjYgK2xhdF8yPTM1LjI1ICtsYXRfMD0zNC4zMzMzMzMzMzMzMzMzNCArbG9uXzA9LTg2ICt4XzA9NjAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzY2MlwiOicrcHJvaj1sY2MgK2xhdF8xPTM2LjQxNjY2NjY2NjY2NjY2ICtsYXRfMj0zNS4yNSArbGF0XzA9MzQuMzMzMzMzMzMzMzMzMzQgK2xvbl8wPS04NiAreF8wPTYwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzozNjYzXCI6Jytwcm9qPWxjYyArbGF0XzE9MzEuODgzMzMzMzMzMzMzMzMgK2xhdF8yPTMwLjExNjY2NjY2NjY2NjY3ICtsYXRfMD0yOS42NjY2NjY2NjY2NjY2NyArbG9uXzA9LTEwMC4zMzMzMzMzMzMzMzMzICt4XzA9NzAwMDAwICt5XzA9MzAwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzY2NFwiOicrcHJvaj1sY2MgK2xhdF8xPTMxLjg4MzMzMzMzMzMzMzMzICtsYXRfMj0zMC4xMTY2NjY2NjY2NjY2NyArbGF0XzA9MjkuNjY2NjY2NjY2NjY2NjcgK2xvbl8wPS0xMDAuMzMzMzMzMzMzMzMzMyAreF8wPTY5OTk5OS45OTk4OTgzOTk4ICt5XzA9MzAwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM2NjVcIjonK3Byb2o9YWVhICtsYXRfMT0yNy41ICtsYXRfMj0zNSArbGF0XzA9MTggK2xvbl8wPS0xMDAgK3hfMD0xNTAwMDAwICt5XzA9NjAwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzY2NlwiOicrcHJvaj1sY2MgK2xhdF8xPTI3LjUgK2xhdF8yPTM1ICtsYXRfMD0xOCArbG9uXzA9LTEwMCAreF8wPTE1MDAwMDAgK3lfMD01MDAwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozNjY3XCI6Jytwcm9qPWxjYyArbGF0XzE9MzYuMTgzMzMzMzMzMzMzMzMgK2xhdF8yPTM0LjY1ICtsYXRfMD0zNCArbG9uXzA9LTEwMS41ICt4XzA9MjAwMDAwICt5XzA9MTAwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzY2OFwiOicrcHJvaj1sY2MgK2xhdF8xPTM2LjE4MzMzMzMzMzMzMzMzICtsYXRfMj0zNC42NSArbGF0XzA9MzQgK2xvbl8wPS0xMDEuNSAreF8wPTIwMDAwMC4wMDAxMDE2MDAyICt5XzA9OTk5OTk5Ljk5OTg5ODM5OTggK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzozNjY5XCI6Jytwcm9qPWxjYyArbGF0XzE9MzMuOTY2NjY2NjY2NjY2NjcgK2xhdF8yPTMyLjEzMzMzMzMzMzMzMzMzICtsYXRfMD0zMS42NjY2NjY2NjY2NjY2NyArbG9uXzA9LTk4LjUgK3hfMD02MDAwMDAgK3lfMD0yMDAwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozNjcwXCI6Jytwcm9qPWxjYyArbGF0XzE9MzMuOTY2NjY2NjY2NjY2NjcgK2xhdF8yPTMyLjEzMzMzMzMzMzMzMzMzICtsYXRfMD0zMS42NjY2NjY2NjY2NjY2NyArbG9uXzA9LTk4LjUgK3hfMD02MDAwMDAgK3lfMD0yMDAwMDAwLjAwMDEwMTYgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzozNjcxXCI6Jytwcm9qPWxjYyArbGF0XzE9MjcuODMzMzMzMzMzMzMzMzMgK2xhdF8yPTI2LjE2NjY2NjY2NjY2NjY3ICtsYXRfMD0yNS42NjY2NjY2NjY2NjY2NyArbG9uXzA9LTk4LjUgK3hfMD0zMDAwMDAgK3lfMD01MDAwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozNjcyXCI6Jytwcm9qPWxjYyArbGF0XzE9MjcuODMzMzMzMzMzMzMzMzMgK2xhdF8yPTI2LjE2NjY2NjY2NjY2NjY3ICtsYXRfMD0yNS42NjY2NjY2NjY2NjY2NyArbG9uXzA9LTk4LjUgK3hfMD0zMDAwMDAuMDAwMDAwMDAwMSAreV8wPTUwMDAwMDAuMDAwMTAxNiArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM2NzNcIjonK3Byb2o9bGNjICtsYXRfMT0zMC4yODMzMzMzMzMzMzMzMyArbGF0XzI9MjguMzgzMzMzMzMzMzMzMzMgK2xhdF8wPTI3LjgzMzMzMzMzMzMzMzMzICtsb25fMD0tOTkgK3hfMD02MDAwMDAgK3lfMD00MDAwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozNjc0XCI6Jytwcm9qPWxjYyArbGF0XzE9MzAuMjgzMzMzMzMzMzMzMzMgK2xhdF8yPTI4LjM4MzMzMzMzMzMzMzMzICtsYXRfMD0yNy44MzMzMzMzMzMzMzMzMyArbG9uXzA9LTk5ICt4XzA9NjAwMDAwICt5XzA9Mzk5OTk5OS45OTk4OTg0ICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzY3NVwiOicrcHJvaj1sY2MgK2xhdF8xPTQwLjY1ICtsYXRfMj0zOS4wMTY2NjY2NjY2NjY2NyArbGF0XzA9MzguMzMzMzMzMzMzMzMzMzQgK2xvbl8wPS0xMTEuNSAreF8wPTUwMDAwMCAreV8wPTIwMDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM2NzZcIjonK3Byb2o9bGNjICtsYXRfMT00MC42NSArbGF0XzI9MzkuMDE2NjY2NjY2NjY2NjcgK2xhdF8wPTM4LjMzMzMzMzMzMzMzMzM0ICtsb25fMD0tMTExLjUgK3hfMD01MDAwMDAuMDAwMTUwNCAreV8wPTE5OTk5OTkuOTk5OTkyICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzY3N1wiOicrcHJvaj1sY2MgK2xhdF8xPTQwLjY1ICtsYXRfMj0zOS4wMTY2NjY2NjY2NjY2NyArbGF0XzA9MzguMzMzMzMzMzMzMzMzMzQgK2xvbl8wPS0xMTEuNSAreF8wPTUwMDAwMC4wMDAwMTAxNiAreV8wPTIwMDAwMDAuMDAwMDEwMTYgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzozNjc4XCI6Jytwcm9qPWxjYyArbGF0XzE9NDEuNzgzMzMzMzMzMzMzMzMgK2xhdF8yPTQwLjcxNjY2NjY2NjY2NjY3ICtsYXRfMD00MC4zMzMzMzMzMzMzMzMzNCArbG9uXzA9LTExMS41ICt4XzA9NTAwMDAwICt5XzA9MTAwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzY3OVwiOicrcHJvaj1sY2MgK2xhdF8xPTQxLjc4MzMzMzMzMzMzMzMzICtsYXRfMj00MC43MTY2NjY2NjY2NjY2NyArbGF0XzA9NDAuMzMzMzMzMzMzMzMzMzQgK2xvbl8wPS0xMTEuNSAreF8wPTUwMDAwMC4wMDAxNTA0ICt5XzA9OTk5OTk5Ljk5OTk5NjAwMDEgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzozNjgwXCI6Jytwcm9qPWxjYyArbGF0XzE9NDEuNzgzMzMzMzMzMzMzMzMgK2xhdF8yPTQwLjcxNjY2NjY2NjY2NjY3ICtsYXRfMD00MC4zMzMzMzMzMzMzMzMzNCArbG9uXzA9LTExMS41ICt4XzA9NTAwMDAwLjAwMDAxMDE2ICt5XzA9OTk5OTk5Ljk5OTk4OTg0MDIgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzozNjgxXCI6Jytwcm9qPWxjYyArbGF0XzE9MzguMzUgK2xhdF8yPTM3LjIxNjY2NjY2NjY2NjY3ICtsYXRfMD0zNi42NjY2NjY2NjY2NjY2NiArbG9uXzA9LTExMS41ICt4XzA9NTAwMDAwICt5XzA9MzAwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzY4MlwiOicrcHJvaj1sY2MgK2xhdF8xPTM4LjM1ICtsYXRfMj0zNy4yMTY2NjY2NjY2NjY2NyArbGF0XzA9MzYuNjY2NjY2NjY2NjY2NjYgK2xvbl8wPS0xMTEuNSAreF8wPTUwMDAwMC4wMDAxNTA0ICt5XzA9Mjk5OTk5OS45OTk5ODggK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzozNjgzXCI6Jytwcm9qPWxjYyArbGF0XzE9MzguMzUgK2xhdF8yPTM3LjIxNjY2NjY2NjY2NjY3ICtsYXRfMD0zNi42NjY2NjY2NjY2NjY2NiArbG9uXzA9LTExMS41ICt4XzA9NTAwMDAwLjAwMDAxMDE2ICt5XzA9MzAwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM2ODRcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTQyLjUgK2xvbl8wPS03Mi41ICtrPTAuOTk5OTY0Mjg2ICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzY4NVwiOicrcHJvaj1sY2MgK2xhdF8xPTM5LjIgK2xhdF8yPTM4LjAzMzMzMzMzMzMzMzMzICtsYXRfMD0zNy42NjY2NjY2NjY2NjY2NiArbG9uXzA9LTc4LjUgK3hfMD0zNTAwMDAwICt5XzA9MjAwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzY4NlwiOicrcHJvaj1sY2MgK2xhdF8xPTM5LjIgK2xhdF8yPTM4LjAzMzMzMzMzMzMzMzMzICtsYXRfMD0zNy42NjY2NjY2NjY2NjY2NiArbG9uXzA9LTc4LjUgK3hfMD0zNTAwMDAwLjAwMDEwMTYgK3lfMD0yMDAwMDAwLjAwMDEwMTYgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzozNjg3XCI6Jytwcm9qPWxjYyArbGF0XzE9MzcuOTY2NjY2NjY2NjY2NjcgK2xhdF8yPTM2Ljc2NjY2NjY2NjY2NjY3ICtsYXRfMD0zNi4zMzMzMzMzMzMzMzMzNCArbG9uXzA9LTc4LjUgK3hfMD0zNTAwMDAwICt5XzA9MTAwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzY4OFwiOicrcHJvaj1sY2MgK2xhdF8xPTM3Ljk2NjY2NjY2NjY2NjY3ICtsYXRfMj0zNi43NjY2NjY2NjY2NjY2NyArbGF0XzA9MzYuMzMzMzMzMzMzMzMzMzQgK2xvbl8wPS03OC41ICt4XzA9MzUwMDAwMC4wMDAxMDE2ICt5XzA9OTk5OTk5Ljk5OTg5ODM5OTggK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzozNjg5XCI6Jytwcm9qPWxjYyArbGF0XzE9NDguNzMzMzMzMzMzMzMzMzMgK2xhdF8yPTQ3LjUgK2xhdF8wPTQ3ICtsb25fMD0tMTIwLjgzMzMzMzMzMzMzMzMgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozNjkwXCI6Jytwcm9qPWxjYyArbGF0XzE9NDguNzMzMzMzMzMzMzMzMzMgK2xhdF8yPTQ3LjUgK2xhdF8wPTQ3ICtsb25fMD0tMTIwLjgzMzMzMzMzMzMzMzMgK3hfMD01MDAwMDAuMDAwMTAxNjAwMSAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzozNjkxXCI6Jytwcm9qPWxjYyArbGF0XzE9NDcuMzMzMzMzMzMzMzMzMzQgK2xhdF8yPTQ1LjgzMzMzMzMzMzMzMzM0ICtsYXRfMD00NS4zMzMzMzMzMzMzMzMzNCArbG9uXzA9LTEyMC41ICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzY5MlwiOicrcHJvaj1sY2MgK2xhdF8xPTQ3LjMzMzMzMzMzMzMzMzM0ICtsYXRfMj00NS44MzMzMzMzMzMzMzMzNCArbGF0XzA9NDUuMzMzMzMzMzMzMzMzMzQgK2xvbl8wPS0xMjAuNSAreF8wPTUwMDAwMC4wMDAxMDE2MDAxICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM2OTNcIjonK3Byb2o9bGNjICtsYXRfMT00MC4yNSArbGF0XzI9MzkgK2xhdF8wPTM4LjUgK2xvbl8wPS03OS41ICt4XzA9NjAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzY5NFwiOicrcHJvaj1sY2MgK2xhdF8xPTM4Ljg4MzMzMzMzMzMzMzMzICtsYXRfMj0zNy40ODMzMzMzMzMzMzMzMyArbGF0XzA9MzcgK2xvbl8wPS04MSAreF8wPTYwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM2OTVcIjonK3Byb2o9bGNjICtsYXRfMT00NS41ICtsYXRfMj00NC4yNSArbGF0XzA9NDMuODMzMzMzMzMzMzMzMzQgK2xvbl8wPS05MCAreF8wPTYwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM2OTZcIjonK3Byb2o9bGNjICtsYXRfMT00NS41ICtsYXRfMj00NC4yNSArbGF0XzA9NDMuODMzMzMzMzMzMzMzMzQgK2xvbl8wPS05MCAreF8wPTYwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzozNjk3XCI6Jytwcm9qPWxjYyArbGF0XzE9NDYuNzY2NjY2NjY2NjY2NjcgK2xhdF8yPTQ1LjU2NjY2NjY2NjY2NjY3ICtsYXRfMD00NS4xNjY2NjY2NjY2NjY2NiArbG9uXzA9LTkwICt4XzA9NjAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzY5OFwiOicrcHJvaj1sY2MgK2xhdF8xPTQ2Ljc2NjY2NjY2NjY2NjY3ICtsYXRfMj00NS41NjY2NjY2NjY2NjY2NyArbGF0XzA9NDUuMTY2NjY2NjY2NjY2NjYgK2xvbl8wPS05MCAreF8wPTYwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzozNjk5XCI6Jytwcm9qPWxjYyArbGF0XzE9NDQuMDY2NjY2NjY2NjY2NjcgK2xhdF8yPTQyLjczMzMzMzMzMzMzMzMzICtsYXRfMD00MiArbG9uXzA9LTkwICt4XzA9NjAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzcwMFwiOicrcHJvaj1sY2MgK2xhdF8xPTQ0LjA2NjY2NjY2NjY2NjY3ICtsYXRfMj00Mi43MzMzMzMzMzMzMzMzMyArbGF0XzA9NDIgK2xvbl8wPS05MCAreF8wPTYwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzozNzAxXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0tOTAgK2s9MC45OTk2ICt4XzA9NTIwMDAwICt5XzA9LTQ0ODAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM3MDJcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTQwLjUgK2xvbl8wPS0xMDUuMTY2NjY2NjY2NjY2NyAraz0wLjk5OTkzNzUgK3hfMD0yMDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozNzAzXCI6Jytwcm9qPXRtZXJjICtsYXRfMD00MC41ICtsb25fMD0tMTA3LjMzMzMzMzMzMzMzMzMgK2s9MC45OTk5Mzc1ICt4XzA9NDAwMDAwICt5XzA9MTAwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozNzA0XCI6Jytwcm9qPXRtZXJjICtsYXRfMD00MC41ICtsb25fMD0tMTA4Ljc1ICtrPTAuOTk5OTM3NSAreF8wPTYwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM3MDVcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTQwLjUgK2xvbl8wPS0xMTAuMDgzMzMzMzMzMzMzMyAraz0wLjk5OTkzNzUgK3hfMD04MDAwMDAgK3lfMD0xMDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM3MDZcIjonK3Byb2o9dXRtICt6b25lPTU5ICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozNzA3XCI6Jytwcm9qPXV0bSArem9uZT02MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzcwOFwiOicrcHJvaj11dG0gK3pvbmU9MSArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzcwOVwiOicrcHJvaj11dG0gK3pvbmU9MiArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzcxMFwiOicrcHJvaj11dG0gK3pvbmU9MyArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzcxMVwiOicrcHJvaj11dG0gK3pvbmU9NCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzcxMlwiOicrcHJvaj11dG0gK3pvbmU9NSArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzcxM1wiOicrcHJvaj11dG0gK3pvbmU9NiArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzcxNFwiOicrcHJvaj11dG0gK3pvbmU9NyArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzcxNVwiOicrcHJvaj11dG0gK3pvbmU9OCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzcxNlwiOicrcHJvaj11dG0gK3pvbmU9OSArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzcxN1wiOicrcHJvaj11dG0gK3pvbmU9MTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM3MThcIjonK3Byb2o9dXRtICt6b25lPTExICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozNzE5XCI6Jytwcm9qPXV0bSArem9uZT0xMiArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzcyMFwiOicrcHJvaj11dG0gK3pvbmU9MTMgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM3MjFcIjonK3Byb2o9dXRtICt6b25lPTE0ICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozNzIyXCI6Jytwcm9qPXV0bSArem9uZT0xNSArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzcyM1wiOicrcHJvaj11dG0gK3pvbmU9MTYgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM3MjRcIjonK3Byb2o9dXRtICt6b25lPTE3ICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozNzI1XCI6Jytwcm9qPXV0bSArem9uZT0xOCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzcyNlwiOicrcHJvaj11dG0gK3pvbmU9MTkgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM3MjdcIjonK3Byb2o9dG1lcmMgK2xhdF8wPS0yMS4xMTY2NjY2NjY2NjY2NyArbG9uXzA9NTUuNTMzMzMzMzMzMzMzMzMgK2s9MSAreF8wPTE2MDAwMCAreV8wPTUwMDAwICtlbGxwcz1pbnRsICt0b3dnczg0PTk0LC05NDgsLTEyNjIsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzcyOFwiOicrcHJvaj1sY2MgK2xhdF8xPTQxLjcgK2xhdF8yPTQwLjQzMzMzMzMzMzMzMzMzICtsYXRfMD0zOS42NjY2NjY2NjY2NjY2NiArbG9uXzA9LTgyLjUgK3hfMD02MDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzcyOVwiOicrcHJvaj1sY2MgK2xhdF8xPTQwLjAzMzMzMzMzMzMzMzMzICtsYXRfMj0zOC43MzMzMzMzMzMzMzMzMyArbGF0XzA9MzggK2xvbl8wPS04Mi41ICt4XzA9NjAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM3MzBcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTQwLjUgK2xvbl8wPS0xMDUuMTY2NjY2NjY2NjY2NyAraz0wLjk5OTkzNzUgK3hfMD0yMDAwMDAuMDAwMDEwMTYgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzczMVwiOicrcHJvaj10bWVyYyArbGF0XzA9NDAuNSArbG9uXzA9LTEwNy4zMzMzMzMzMzMzMzMzICtrPTAuOTk5OTM3NSAreF8wPTM5OTk5OS45OTk5ODk4NCAreV8wPTk5OTk5Ljk5OTk4OTgzOTk3ICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzczMlwiOicrcHJvaj10bWVyYyArbGF0XzA9NDAuNSArbG9uXzA9LTEwOC43NSAraz0wLjk5OTkzNzUgK3hfMD02MDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzczM1wiOicrcHJvaj10bWVyYyArbGF0XzA9NDAuNSArbG9uXzA9LTExMC4wODMzMzMzMzMzMzMzICtrPTAuOTk5OTM3NSAreF8wPTgwMDAwMC4wMDAwMTAxNTk5ICt5XzA9OTk5OTkuOTk5OTg5ODM5OTcgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzozNzM0XCI6Jytwcm9qPWxjYyArbGF0XzE9NDEuNyArbGF0XzI9NDAuNDMzMzMzMzMzMzMzMzMgK2xhdF8wPTM5LjY2NjY2NjY2NjY2NjY2ICtsb25fMD0tODIuNSAreF8wPTYwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzozNzM1XCI6Jytwcm9qPWxjYyArbGF0XzE9NDAuMDMzMzMzMzMzMzMzMzMgK2xhdF8yPTM4LjczMzMzMzMzMzMzMzMzICtsYXRfMD0zOCArbG9uXzA9LTgyLjUgK3hfMD02MDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzczNlwiOicrcHJvaj10bWVyYyArbGF0XzA9NDAuNSArbG9uXzA9LTEwNS4xNjY2NjY2NjY2NjY3ICtrPTAuOTk5OTM3NSAreF8wPTIwMDAwMC4wMDAwMTAxNiAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzozNzM3XCI6Jytwcm9qPXRtZXJjICtsYXRfMD00MC41ICtsb25fMD0tMTA3LjMzMzMzMzMzMzMzMzMgK2s9MC45OTk5Mzc1ICt4XzA9Mzk5OTk5Ljk5OTk4OTg0ICt5XzA9OTk5OTkuOTk5OTg5ODM5OTcgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzozNzM4XCI6Jytwcm9qPXRtZXJjICtsYXRfMD00MC41ICtsb25fMD0tMTA4Ljc1ICtrPTAuOTk5OTM3NSAreF8wPTYwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzozNzM5XCI6Jytwcm9qPXRtZXJjICtsYXRfMD00MC41ICtsb25fMD0tMTEwLjA4MzMzMzMzMzMzMzMgK2s9MC45OTk5Mzc1ICt4XzA9ODAwMDAwLjAwMDAxMDE1OTkgK3lfMD05OTk5OS45OTk5ODk4Mzk5NyArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM3NDBcIjonK3Byb2o9dXRtICt6b25lPTEwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozNzQxXCI6Jytwcm9qPXV0bSArem9uZT0xMSArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mzc0MlwiOicrcHJvaj11dG0gK3pvbmU9MTIgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM3NDNcIjonK3Byb2o9dXRtICt6b25lPTEzICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozNzQ0XCI6Jytwcm9qPXV0bSArem9uZT0xNCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mzc0NVwiOicrcHJvaj11dG0gK3pvbmU9MTUgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM3NDZcIjonK3Byb2o9dXRtICt6b25lPTE2ICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozNzQ3XCI6Jytwcm9qPXV0bSArem9uZT0xNyArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mzc0OFwiOicrcHJvaj11dG0gK3pvbmU9MTggK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM3NDlcIjonK3Byb2o9dXRtICt6b25lPTE5ICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozNzUwXCI6Jytwcm9qPXV0bSArem9uZT00ICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozNzUxXCI6Jytwcm9qPXV0bSArem9uZT01ICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozNzUyXCI6Jytwcm9qPW1lcmMgK2xvbl8wPTEwMCArbGF0X3RzPS00MSAreF8wPTAgK3lfMD0wICtkYXR1bT1XR1M4NCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mzc1M1wiOicrcHJvaj1sY2MgK2xhdF8xPTQxLjcgK2xhdF8yPTQwLjQzMzMzMzMzMzMzMzMzICtsYXRfMD0zOS42NjY2NjY2NjY2NjY2NiArbG9uXzA9LTgyLjUgK3hfMD02MDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mzc1NFwiOicrcHJvaj1sY2MgK2xhdF8xPTQwLjAzMzMzMzMzMzMzMzMzICtsYXRfMj0zOC43MzMzMzMzMzMzMzMzMyArbGF0XzA9MzggK2xvbl8wPS04Mi41ICt4XzA9NjAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM3NTVcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTQwLjUgK2xvbl8wPS0xMDUuMTY2NjY2NjY2NjY2NyAraz0wLjk5OTkzNzUgK3hfMD0yMDAwMDAuMDAwMDEwMTYgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mzc1NlwiOicrcHJvaj10bWVyYyArbGF0XzA9NDAuNSArbG9uXzA9LTEwNy4zMzMzMzMzMzMzMzMzICtrPTAuOTk5OTM3NSAreF8wPTM5OTk5OS45OTk5ODk4NCAreV8wPTk5OTk5Ljk5OTk4OTgzOTk3ICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mzc1N1wiOicrcHJvaj10bWVyYyArbGF0XzA9NDAuNSArbG9uXzA9LTEwOC43NSAraz0wLjk5OTkzNzUgK3hfMD02MDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mzc1OFwiOicrcHJvaj10bWVyYyArbGF0XzA9NDAuNSArbG9uXzA9LTExMC4wODMzMzMzMzMzMzMzICtrPTAuOTk5OTM3NSAreF8wPTgwMDAwMC4wMDAwMTAxNTk5ICt5XzA9OTk5OTkuOTk5OTg5ODM5OTcgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzozNzU5XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0yMS4xNjY2NjY2NjY2NjY2NyArbG9uXzA9LTE1OCAraz0wLjk5OTk5ICt4XzA9NTAwMDAwLjAwMDAxMDE2ICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM3NjBcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTIxLjE2NjY2NjY2NjY2NjY3ICtsb25fMD0tMTU4ICtrPTAuOTk5OTkgK3hfMD01MDAwMDAuMDAwMDEwMTYgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mzc2MVwiOicrcHJvaj11dG0gK3pvbmU9MjIgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM3NjJcIjonK3Byb2o9bGNjICtsYXRfMT0tNTQgK2xhdF8yPS01NC43NSArbGF0XzA9LTU1ICtsb25fMD0tMzcgK3hfMD0wICt5XzA9MCArZGF0dW09V0dTODQgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM3NjNcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTM5LjY2ODI1ODMzMzMzMzMzICtsb25fMD0tOC4xMzMxMDgzMzMzMzMzMzQgK2s9MSAreF8wPTAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozNzY0XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0tNDQgK2xvbl8wPS0xNzYuNSAraz0xICt4XzA9NDAwMDAwICt5XzA9ODAwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozNzY1XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xNi41ICtrPTAuOTk5OSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM3NjZcIjonK3Byb2o9bGNjICtsYXRfMT00NS45MTY2NjY2NjY2NjY2NiArbGF0XzI9NDMuMDgzMzMzMzMzMzMzMzQgK2xhdF8wPTAgK2xvbl8wPTE2LjUgK3hfMD0wICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mzc2N1wiOicrcHJvaj11dG0gK3pvbmU9MzMgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM3NjhcIjonK3Byb2o9dXRtICt6b25lPTM0ICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozNzY5XCI6Jytwcm9qPXV0bSArem9uZT0yMCArZWxscHM9Y2xyazY2ICt0b3dnczg0PS03MywyMTMsMjk2LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM3NzBcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTMyICtsb25fMD0tNjQuNzUgK2s9MSAreF8wPTU1MDAwMCAreV8wPTEwMDAwMCArZWxscHM9V0dTODQgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mzc3MVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9LTExMSAraz0wLjk5OTkgK3hfMD0wICt5XzA9MCArZGF0dW09TkFEMjcgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM3NzJcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPS0xMTQgK2s9MC45OTk5ICt4XzA9MCAreV8wPTAgK2RhdHVtPU5BRDI3ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozNzczXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0tMTE3ICtrPTAuOTk5OSAreF8wPTAgK3lfMD0wICtkYXR1bT1OQUQyNyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mzc3NFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9LTEyMCAraz0wLjk5OTkgK3hfMD0wICt5XzA9MCArZGF0dW09TkFEMjcgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM3NzVcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPS0xMTEgK2s9MC45OTk5ICt4XzA9MCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM3NzZcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPS0xMTQgK2s9MC45OTk5ICt4XzA9MCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM3NzdcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPS0xMTcgK2s9MC45OTk5ICt4XzA9MCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM3NzhcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPS0xMjAgK2s9MC45OTk5ICt4XzA9MCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM3NzlcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPS0xMTEgK2s9MC45OTk5ICt4XzA9MCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM3ODBcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPS0xMTQgK2s9MC45OTk5ICt4XzA9MCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM3ODFcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPS0xMTcgK2s9MC45OTk5ICt4XzA9MCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM3ODJcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPS0xMjAgK2s9MC45OTk5ICt4XzA9MCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM3ODNcIjonK3Byb2o9dG1lcmMgK2xhdF8wPS0yNS4wNjg1NTI2MTExMTExMSArbG9uXzA9LTEzMC4xMTI5NjcxMTExMTExICtrPTEgK3hfMD0xNDIwMCAreV8wPTE1NTAwICtlbGxwcz1XR1M4NCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozNzg0XCI6Jytwcm9qPXV0bSArem9uZT05ICtzb3V0aCArZWxscHM9aW50bCArdG93Z3M4ND0xODUsMTY1LDQyLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM3ODVcIjonK3Byb2o9bWVyYyArYT02Mzc4MTM3ICtiPTYzNzgxMzcgK2xhdF90cz0wLjAgK2xvbl8wPTAuMCAreF8wPTAuMCAreV8wPTAgK2s9MS4wICt1bml0cz1tICtuYWRncmlkcz1AbnVsbCArd2t0ZXh0ICtub19kZWZzJyxcbiAgXCJFUFNHOjM3ODZcIjonK3Byb2o9ZXFjICtsYXRfdHM9MCArbGF0XzA9MCArbG9uXzA9MCAreF8wPTAgK3lfMD0wICthPTYzNzEwMDcgK2I9NjM3MTAwNyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mzc4N1wiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTUgK2s9MC45OTk5ICt4XzA9NTAwMDAwICt5XzA9LTUwMDAwMDAgK2VsbHBzPWJlc3NlbCArdG93Z3M4ND01NzcuMzI2LDkwLjEyOSw0NjMuOTE5LDUuMTM3LDEuNDc0LDUuMjk3LDIuNDIzMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mzc4OFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTY2ICtrPTEgK3hfMD0zNTAwMDAwICt5XzA9MTAwMDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM3ODlcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTE2OSAraz0xICt4XzA9MzUwMDAwMCAreV8wPTEwMDAwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozNzkwXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xNzkgK2s9MSAreF8wPTM1MDAwMDAgK3lfMD0xMDAwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mzc5MVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9LTE3OCAraz0xICt4XzA9MzUwMDAwMCAreV8wPTEwMDAwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozNzkzXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0tMTc2LjUgK2s9MSAreF8wPTM1MDAwMDAgK3lfMD0xMDAwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mzc5NFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTUgK2s9MC45OTk5ICt4XzA9NTAwMDAwICt5XzA9LTUwMDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM3OTVcIjonK3Byb2o9bGNjICtsYXRfMT0yMyArbGF0XzI9MjEuNyArbGF0XzA9MjIuMzUgK2xvbl8wPS04MSAreF8wPTUwMDAwMCAreV8wPTI4MDI5Ni4wMTYgK2RhdHVtPU5BRDI3ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozNzk2XCI6Jytwcm9qPWxjYyArbGF0XzE9MjEuMyArbGF0XzI9MjAuMTMzMzMzMzMzMzMzMzMgK2xhdF8wPTIwLjcxNjY2NjY2NjY2NjY3ICtsb25fMD0tNzYuODMzMzMzMzMzMzMzMzMgK3hfMD01MDAwMDAgK3lfMD0yMjkxMjYuOTM5ICtkYXR1bT1OQUQyNyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mzc5N1wiOicrcHJvaj1sY2MgK2xhdF8xPTUwICtsYXRfMj00NiArbGF0XzA9NDQgK2xvbl8wPS03MCAreF8wPTgwMDAwMCAreV8wPTAgK2RhdHVtPU5BRDI3ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozNzk4XCI6Jytwcm9qPWxjYyArbGF0XzE9NTAgK2xhdF8yPTQ2ICtsYXRfMD00NCArbG9uXzA9LTcwICt4XzA9ODAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mzc5OVwiOicrcHJvaj1sY2MgK2xhdF8xPTUwICtsYXRfMj00NiArbGF0XzA9NDQgK2xvbl8wPS03MCAreF8wPTgwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM4MDBcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPS0xMjAgK2s9MC45OTk5ICt4XzA9MCAreV8wPTAgK2RhdHVtPU5BRDI3ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozODAxXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0tMTIwICtrPTAuOTk5OSAreF8wPTAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozODAyXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0tMTIwICtrPTAuOTk5OSAreF8wPTAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozODEyXCI6Jytwcm9qPWxjYyArbGF0XzE9NDkuODMzMzMzMzMzMzMzMzQgK2xhdF8yPTUxLjE2NjY2NjY2NjY2NjY2ICtsYXRfMD01MC43OTc4MTUgK2xvbl8wPTQuMzU5MjE1ODMzMzMzMzMzICt4XzA9NjQ5MzI4ICt5XzA9NjY1MjYyICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozODE0XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0zMi41ICtsb25fMD0tODkuNzUgK2s9MC45OTk4MzM1ICt4XzA9NTAwMDAwICt5XzA9MTMwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzgxNVwiOicrcHJvaj10bWVyYyArbGF0XzA9MzIuNSArbG9uXzA9LTg5Ljc1ICtrPTAuOTk5ODMzNSAreF8wPTUwMDAwMCAreV8wPTEzMDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM4MTZcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTMyLjUgK2xvbl8wPS04OS43NSAraz0wLjk5OTgzMzUgK3hfMD01MDAwMDAgK3lfMD0xMzAwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozODI1XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMTkgK2s9MC45OTk5ICt4XzA9MjUwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzgyNlwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTIxICtrPTAuOTk5OSAreF8wPTI1MDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM4MjdcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTExOSAraz0wLjk5OTkgK3hfMD0yNTAwMDAgK3lfMD0wICtlbGxwcz1hdXN0X1NBICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozODI4XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMjEgK2s9MC45OTk5ICt4XzA9MjUwMDAwICt5XzA9MCArZWxscHM9YXVzdF9TQSArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzgyOVwiOicrcHJvaj11dG0gK3pvbmU9NTEgK2VsbHBzPWludGwgK3Rvd2dzODQ9LTYzNywtNTQ5LC0yMDMsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzgzMlwiOicrcHJvaj1tZXJjICtsb25fMD0xNTAgK2s9MSAreF8wPTAgK3lfMD0wICtkYXR1bT1XR1M4NCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzgzM1wiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9OSAraz0xICt4XzA9MjUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTMzLjQsLTE0Ni42LC03Ni4zLC0wLjM1OSwtMC4wNTMsMC44NDQsLTAuODQgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM4MzRcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTkgK2s9MSAreF8wPTI1MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yNiwtMTIxLC03OCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozODM1XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xNSAraz0xICt4XzA9MzUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTI2LC0xMjEsLTc4LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM4MzZcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTIxICtrPTEgK3hfMD00NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjYsLTEyMSwtNzgsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzgzN1wiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9OSAraz0xICt4XzA9MzUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTMzLjQsLTE0Ni42LC03Ni4zLC0wLjM1OSwtMC4wNTMsMC44NDQsLTAuODQgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM4MzhcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTEyICtrPTEgK3hfMD00NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MzMuNCwtMTQ2LjYsLTc2LjMsLTAuMzU5LC0wLjA1MywwLjg0NCwtMC44NCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzgzOVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MjcgK2s9MSAreF8wPTk1MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0zMy40LC0xNDYuNiwtNzYuMywtMC4zNTksLTAuMDUzLDAuODQ0LC0wLjg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozODQwXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0zMCAraz0xICt4XzA9MTA1MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0zMy40LC0xNDYuNiwtNzYuMywtMC4zNTksLTAuMDUzLDAuODQ0LC0wLjg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozODQxXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xOCAraz0xICt4XzA9NjUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTI2LC0xMjEsLTc4LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM4NDJcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTE4ICtrPTEgK3hfMD02NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjYsLTEyMSwtNzgsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mzg0M1wiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTggK2s9MSAreF8wPTY1MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yNiwtMTIxLC03OCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozODQ0XCI6Jytwcm9qPXN0ZXJlYSArbGF0XzA9NDYgK2xvbl8wPTI1ICtrPTAuOTk5NzUgK3hfMD01MDAwMDAgK3lfMD01MDAwMDAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTMzLjQsLTE0Ni42LC03Ni4zLC0wLjM1OSwtMC4wNTMsMC44NDQsLTAuODQgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM4NDVcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTExLjMwNjI1ICtrPTEuMDAwMDA2ICt4XzA9MTUwMDAyNS4xNDEgK3lfMD0tNjY3LjI4MiArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mzg0NlwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTMuNTU2MjY2NjY2NjY2NjcgK2s9MS4wMDAwMDU4ICt4XzA9MTUwMDA0NC42OTUgK3lfMD0tNjY3LjEzICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozODQ3XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xNS44MDYyODQ1Mjk0NDQ0NSAraz0xLjAwMDAwNTYxMDI0ICt4XzA9MTUwMDA2NC4yNzQgK3lfMD0tNjY3LjcxMSArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mzg0OFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTguMDU2MyAraz0xLjAwMDAwNTQgK3hfMD0xNTAwMDgzLjUyMSAreV8wPS02NjguODQ0MDAwMDAwMDAwMSArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mzg0OVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MjAuMzA2MzE2NjY2NjY2NjcgK2s9MS4wMDAwMDUyICt4XzA9MTUwMDEwMi43NjUgK3lfMD0tNjcwLjcwNiArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mzg1MFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MjIuNTU2MzMzMzMzMzMzMzMgK2s9MS4wMDAwMDQ5ICt4XzA9MTUwMDEyMS44NDYgK3lfMD0tNjcyLjU1NyArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mzg1MVwiOicrcHJvaj1sY2MgK2xhdF8xPS0zNy41ICtsYXRfMj0tNDQuNSArbGF0XzA9LTQxICtsb25fMD0xNzMgK3hfMD0zMDAwMDAwICt5XzA9NzAwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mzg1MlwiOicrcHJvaj1sY2MgK2xhdF8xPS03Ni42NjY2NjY2NjY2NjY2NyArbGF0XzI9LTc5LjMzMzMzMzMzMzMzMzMzICtsYXRfMD0tOTAgK2xvbl8wPTE1NyAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM4NTRcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTE4LjA1Nzg3ICtrPTAuOTk5OTk1MDYgK3hfMD0xMDAxODIuNzQwNiAreV8wPS02NTAwNjIwLjEyMDcgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgLy9cIkVQU0c6Mzg1N1wiOicrcHJvaj1tZXJjICthPTYzNzgxMzcgK2I9NjM3ODEzNyArbGF0X3RzPTAuMCArbG9uXzA9MC4wICt4XzA9MC4wICt5XzA9MCAraz0xLjAgK3VuaXRzPW0gK25hZGdyaWRzPUBudWxsICt3a3RleHQgK25vX2RlZnMnLFxuICBcIkVQU0c6Mzg3M1wiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTkgK2s9MSAreF8wPTE5NTAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mzg3NFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MjAgK2s9MSAreF8wPTIwNTAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mzg3NVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MjEgK2s9MSAreF8wPTIxNTAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mzg3NlwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MjIgK2s9MSAreF8wPTIyNTAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mzg3N1wiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MjMgK2s9MSAreF8wPTIzNTAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mzg3OFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MjQgK2s9MSAreF8wPTI0NTAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mzg3OVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MjUgK2s9MSAreF8wPTI1NTAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mzg4MFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MjYgK2s9MSAreF8wPTI2NTAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mzg4MVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MjcgK2s9MSAreF8wPTI3NTAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mzg4MlwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MjggK2s9MSAreF8wPTI4NTAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mzg4M1wiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MjkgK2s9MSAreF8wPTI5NTAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mzg4NFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MzAgK2s9MSAreF8wPTMwNTAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mzg4NVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MzEgK2s9MSAreF8wPTMxNTAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mzg5MFwiOicrcHJvaj11dG0gK3pvbmU9MzcgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM4OTFcIjonK3Byb2o9dXRtICt6b25lPTM4ICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozODkyXCI6Jytwcm9qPXV0bSArem9uZT0zOSArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mzg5M1wiOicrcHJvaj10bWVyYyArbGF0XzA9MjkuMDI2MjY4MzMzMzMzMzMgK2xvbl8wPTQ2LjUgK2s9MC45OTk0ICt4XzA9ODAwMDAwICt5XzA9MCArZWxscHM9aW50bCArdG93Z3M4ND0tODcsLTk4LC0xMjEsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzkwN1wiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTUgK2s9MC45OTk5ICt4XzA9NTUwMDAwMCAreV8wPTAgK2VsbHBzPWJlc3NlbCArdG93Z3M4ND02ODIsLTIwMyw0ODAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzkwOFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTggK2s9MC45OTk5ICt4XzA9NjUwMDAwMCAreV8wPTAgK2VsbHBzPWJlc3NlbCArdG93Z3M4ND02ODIsLTIwMyw0ODAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzkwOVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MjEgK2s9MC45OTk5ICt4XzA9NzUwMDAwMCAreV8wPTAgK2VsbHBzPWJlc3NlbCArdG93Z3M4ND02ODIsLTIwMyw0ODAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzkxMFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MjQgK2s9MC45OTk5ICt4XzA9ODUwMDAwMCAreV8wPTAgK2VsbHBzPWJlc3NlbCArdG93Z3M4ND02ODIsLTIwMyw0ODAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzkxMVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTUgK2s9MC45OTk5ICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9YmVzc2VsICt0b3dnczg0PTY4MiwtMjAzLDQ4MCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozOTEyXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xNSAraz0wLjk5OTkgK3hfMD01MDAwMDAgK3lfMD0tNTAwMDAwMCArZWxscHM9YmVzc2VsICt0b3dnczg0PTY4MiwtMjAzLDQ4MCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozOTIwXCI6Jytwcm9qPXV0bSArem9uZT0yMCArZWxscHM9Y2xyazY2ICt0b3dnczg0PTExLDcyLC0xMDEsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mzk0MlwiOicrcHJvaj1sY2MgK2xhdF8xPTQxLjI1ICtsYXRfMj00Mi43NSArbGF0XzA9NDIgK2xvbl8wPTMgK3hfMD0xNzAwMDAwICt5XzA9MTIwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mzk0M1wiOicrcHJvaj1sY2MgK2xhdF8xPTQyLjI1ICtsYXRfMj00My43NSArbGF0XzA9NDMgK2xvbl8wPTMgK3hfMD0xNzAwMDAwICt5XzA9MjIwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mzk0NFwiOicrcHJvaj1sY2MgK2xhdF8xPTQzLjI1ICtsYXRfMj00NC43NSArbGF0XzA9NDQgK2xvbl8wPTMgK3hfMD0xNzAwMDAwICt5XzA9MzIwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mzk0NVwiOicrcHJvaj1sY2MgK2xhdF8xPTQ0LjI1ICtsYXRfMj00NS43NSArbGF0XzA9NDUgK2xvbl8wPTMgK3hfMD0xNzAwMDAwICt5XzA9NDIwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mzk0NlwiOicrcHJvaj1sY2MgK2xhdF8xPTQ1LjI1ICtsYXRfMj00Ni43NSArbGF0XzA9NDYgK2xvbl8wPTMgK3hfMD0xNzAwMDAwICt5XzA9NTIwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mzk0N1wiOicrcHJvaj1sY2MgK2xhdF8xPTQ2LjI1ICtsYXRfMj00Ny43NSArbGF0XzA9NDcgK2xvbl8wPTMgK3hfMD0xNzAwMDAwICt5XzA9NjIwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mzk0OFwiOicrcHJvaj1sY2MgK2xhdF8xPTQ3LjI1ICtsYXRfMj00OC43NSArbGF0XzA9NDggK2xvbl8wPTMgK3hfMD0xNzAwMDAwICt5XzA9NzIwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mzk0OVwiOicrcHJvaj1sY2MgK2xhdF8xPTQ4LjI1ICtsYXRfMj00OS43NSArbGF0XzA9NDkgK2xvbl8wPTMgK3hfMD0xNzAwMDAwICt5XzA9ODIwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mzk1MFwiOicrcHJvaj1sY2MgK2xhdF8xPTQ5LjI1ICtsYXRfMj01MC43NSArbGF0XzA9NTAgK2xvbl8wPTMgK3hfMD0xNzAwMDAwICt5XzA9OTIwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mzk2OFwiOicrcHJvaj1sY2MgK2xhdF8xPTM3ICtsYXRfMj0zOS41ICtsYXRfMD0zNiArbG9uXzA9LTc5LjUgK3hfMD0wICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mzk2OVwiOicrcHJvaj1sY2MgK2xhdF8xPTM3ICtsYXRfMj0zOS41ICtsYXRfMD0zNiArbG9uXzA9LTc5LjUgK3hfMD0wICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mzk3MFwiOicrcHJvaj1sY2MgK2xhdF8xPTM3ICtsYXRfMj0zOS41ICtsYXRfMD0zNiArbG9uXzA9LTc5LjUgK3hfMD0wICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mzk3M1wiOicrcHJvaj1sYWVhICtsYXRfMD05MCArbG9uXzA9MCAreF8wPTAgK3lfMD0wICtkYXR1bT1XR1M4NCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mzk3NFwiOicrcHJvaj1sYWVhICtsYXRfMD0tOTAgK2xvbl8wPTAgK3hfMD0wICt5XzA9MCArZGF0dW09V0dTODQgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM5NzVcIjonK3Byb2o9Y2VhICtsb25fMD0wICtsYXRfdHM9MzAgK3hfMD0wICt5XzA9MCArZGF0dW09V0dTODQgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM5NzZcIjonK3Byb2o9c3RlcmUgK2xhdF8wPS05MCArbGF0X3RzPS03MCArbG9uXzA9MCAraz0xICt4XzA9MCAreV8wPTAgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozOTc4XCI6Jytwcm9qPWxjYyArbGF0XzE9NDkgK2xhdF8yPTc3ICtsYXRfMD00OSArbG9uXzA9LTk1ICt4XzA9MCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM5NzlcIjonK3Byb2o9bGNjICtsYXRfMT00OSArbGF0XzI9NzcgK2xhdF8wPTQ5ICtsb25fMD0tOTUgK3hfMD0wICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mzk4NVwiOicrcHJvaj1sY2MgK2xhdF8xPS02LjUgK2xhdF8yPS0xMS41ICtsYXRfMD05ICtsb25fMD0yNiAreF8wPTUwMDAwMCAreV8wPTUwMDAwMCArZWxscHM9Y2xyazY2ICt0b3dnczg0PS0xMDMuNzQ2LC05LjYxNCwtMjU1Ljk1LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM5ODZcIjonK3Byb2o9dG1lcmMgK2xhdF8wPS05ICtsb25fMD0zMCAraz0xICt4XzA9MjAwMDAwICt5XzA9NTAwMDAwICtlbGxwcz1jbHJrNjYgK3Rvd2dzODQ9LTEwMy43NDYsLTkuNjE0LC0yNTUuOTUsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mzk4N1wiOicrcHJvaj10bWVyYyArbGF0XzA9LTkgK2xvbl8wPTI4ICtrPTEgK3hfMD0yMDAwMDAgK3lfMD01MDAwMDAgK2VsbHBzPWNscms2NiArdG93Z3M4ND0tMTAzLjc0NiwtOS42MTQsLTI1NS45NSwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozOTg4XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0tOSArbG9uXzA9MjYgK2s9MSAreF8wPTIwMDAwMCAreV8wPTUwMDAwMCArZWxscHM9Y2xyazY2ICt0b3dnczg0PS0xMDMuNzQ2LC05LjYxNCwtMjU1Ljk1LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM5ODlcIjonK3Byb2o9dG1lcmMgK2xhdF8wPS05ICtsb25fMD0yNCAraz0xICt4XzA9MjAwMDAwICt5XzA9NTAwMDAwICtlbGxwcz1jbHJrNjYgK3Rvd2dzODQ9LTEwMy43NDYsLTkuNjE0LC0yNTUuOTUsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mzk5MVwiOicrcHJvaj1sY2MgK2xhdF8xPTE4LjQzMzMzMzMzMzMzMzMzICtsYXRfMj0xOC4wMzMzMzMzMzMzMzMzMyArbGF0XzA9MTcuODMzMzMzMzMzMzMzMzMgK2xvbl8wPS02Ni40MzMzMzMzMzMzMzMzNCAreF8wPTE1MjQwMC4zMDQ4MDA2MDk2ICt5XzA9MCArZWxscHM9Y2xyazY2ICt0b3dnczg0PTExLDcyLC0xMDEsMCwwLDAsMCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM5OTJcIjonK3Byb2o9bGNjICtsYXRfMT0xOC40MzMzMzMzMzMzMzMzMyArbGF0XzI9MTguMDMzMzMzMzMzMzMzMzMgK2xhdF8wPTE3LjgzMzMzMzMzMzMzMzMzICtsb25fMD0tNjYuNDMzMzMzMzMzMzMzMzQgK3hfMD0xNTI0MDAuMzA0ODAwNjA5NiAreV8wPTMwNDgwLjA2MDk2MDEyMTkyICtlbGxwcz1jbHJrNjYgK3Rvd2dzODQ9MTEsNzIsLTEwMSwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mzk5NFwiOicrcHJvaj1tZXJjICtsb25fMD0xMDAgK2xhdF90cz0tNDEgK3hfMD0wICt5XzA9MCArZGF0dW09V0dTODQgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjM5OTVcIjonK3Byb2o9c3RlcmUgK2xhdF8wPTkwICtsYXRfdHM9NzEgK2xvbl8wPTAgK2s9MSAreF8wPTAgK3lfMD0wICtkYXR1bT1XR1M4NCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mzk5NlwiOicrcHJvaj1zdGVyZSArbGF0XzA9OTAgK2xhdF90cz03NSArbG9uXzA9MCAraz0xICt4XzA9MCAreV8wPTAgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozOTk3XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD01NS4zMzMzMzMzMzMzMzMzNCAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZGF0dW09V0dTODQgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQwMjZcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTI4LjQgK2s9MC45OTk5NDAwMDAwMDAwMDAxICt4XzA9MjAwMDAwICt5XzA9LTUwMDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQwMzdcIjonK3Byb2o9dXRtICt6b25lPTM1ICtkYXR1bT1XR1M4NCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDAzOFwiOicrcHJvaj11dG0gK3pvbmU9MzYgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo0MDQ4XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMiAraz0wLjk5OTkgK3hfMD01MDAwMDAgK3lfMD0xMDAwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDA0OVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTQgK2s9MC45OTk5ICt4XzA9NTAwMDAwICt5XzA9MTAwMDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQwNTBcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTE2ICtrPTAuOTk5OSAreF8wPTUwMDAwMCAreV8wPTEwMDAwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo0MDUxXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xOCAraz0wLjk5OTkgK3hfMD01MDAwMDAgK3lfMD0xMDAwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDA1NlwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MjAgK2s9MC45OTk5ICt4XzA9NTAwMDAwICt5XzA9MTAwMDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQwNTdcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTIyICtrPTAuOTk5OSAreF8wPTUwMDAwMCAreV8wPTEwMDAwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo0MDU4XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0yNCAraz0wLjk5OTkgK3hfMD01MDAwMDAgK3lfMD0xMDAwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDA1OVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MjYgK2s9MC45OTk5ICt4XzA9NTAwMDAwICt5XzA9MTAwMDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQwNjBcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTI4ICtrPTAuOTk5OSAreF8wPTUwMDAwMCAreV8wPTEwMDAwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo0MDYxXCI6Jytwcm9qPXV0bSArem9uZT0zMyArc291dGggK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQwNjJcIjonK3Byb2o9dXRtICt6b25lPTM0ICtzb3V0aCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDA2M1wiOicrcHJvaj11dG0gK3pvbmU9MzUgK3NvdXRoICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo0MDcxXCI6Jytwcm9qPXV0bSArem9uZT0yMyArc291dGggK2VsbHBzPWludGwgK3Rvd2dzODQ9LTEzNCwyMjksLTI5LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQwODJcIjonK3Byb2o9dXRtICt6b25lPTI3ICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo0MDgzXCI6Jytwcm9qPXV0bSArem9uZT0yOCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDA4N1wiOicrcHJvaj1lcWMgK2xhdF90cz0wICtsYXRfMD0wICtsb25fMD0wICt4XzA9MCAreV8wPTAgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo0MDg4XCI6Jytwcm9qPWVxYyArbGF0X3RzPTAgK2xhdF8wPTAgK2xvbl8wPTAgK3hfMD0wICt5XzA9MCArYT02MzcxMDA3ICtiPTYzNzEwMDcgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQwOTNcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTkgK2s9MC45OTk5OCAreF8wPTIwMDAwMCAreV8wPS01MDAwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo0MDk0XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMCAraz0wLjk5OTk4ICt4XzA9NDAwMDAwICt5XzA9LTUwMDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQwOTVcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTExLjc1ICtrPTAuOTk5OTggK3hfMD02MDAwMDAgK3lfMD0tNTAwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDA5NlwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTUgK2s9MSAreF8wPTgwMDAwMCAreV8wPS01MDAwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo0MjE3XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xNzEgK2s9MC45OTk2ICt4XzA9NTAwMDAwLjAwMTAxNjAwMiAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzo0Mzk5XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xNzEgK2s9MC45OTk2ICt4XzA9NTAwMDAwLjAwMTAxNjAwMiAreV8wPTAgK2RhdHVtPU5BRDI3ICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDQwMFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTc3ICtrPTAuOTk5NiAreF8wPTUwMDAwMC4wMDEwMTYwMDIgK3lfMD0wICtkYXR1bT1OQUQyNyArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ0MDFcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPS0xNzcgK2s9MC45OTk2ICt4XzA9NTAwMDAwLjAwMTAxNjAwMiAreV8wPTAgK2RhdHVtPU5BRDI3ICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDQwMlwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9LTE3MSAraz0wLjk5OTYgK3hfMD01MDAwMDAuMDAxMDE2MDAyICt5XzA9MCArZGF0dW09TkFEMjcgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzo0NDAzXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0tMTY1ICtrPTAuOTk5NiAreF8wPTUwMDAwMC4wMDEwMTYwMDIgK3lfMD0wICtkYXR1bT1OQUQyNyArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ0MDRcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPS0xNTkgK2s9MC45OTk2ICt4XzA9NTAwMDAwLjAwMTAxNjAwMiAreV8wPTAgK2RhdHVtPU5BRDI3ICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDQwNVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9LTE1MyAraz0wLjk5OTYgK3hfMD01MDAwMDAuMDAxMDE2MDAyICt5XzA9MCArZGF0dW09TkFEMjcgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzo0NDA2XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0tMTQ3ICtrPTAuOTk5NiAreF8wPTUwMDAwMC4wMDEwMTYwMDIgK3lfMD0wICtkYXR1bT1OQUQyNyArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ0MDdcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPS0xNDEgK2s9MC45OTk2ICt4XzA9NTAwMDAwLjAwMTAxNjAwMiAreV8wPTAgK2RhdHVtPU5BRDI3ICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDQwOFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9LTEzNSAraz0wLjk5OTYgK3hfMD01MDAwMDAuMDAxMDE2MDAyICt5XzA9MCArZGF0dW09TkFEMjcgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzo0NDA5XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0tMTI5ICtrPTAuOTk5NiAreF8wPTUwMDAwMC4wMDEwMTYwMDIgK3lfMD0wICtkYXR1bT1OQUQyNyArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ0MTBcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPS0xMjMgK2s9MC45OTk2ICt4XzA9NTAwMDAwLjAwMTAxNjAwMiAreV8wPTAgK2RhdHVtPU5BRDI3ICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDQxMVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9LTExNyAraz0wLjk5OTYgK3hfMD01MDAwMDAuMDAxMDE2MDAyICt5XzA9MCArZGF0dW09TkFEMjcgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzo0NDEyXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0tMTExICtrPTAuOTk5NiAreF8wPTUwMDAwMC4wMDEwMTYwMDIgK3lfMD0wICtkYXR1bT1OQUQyNyArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ0MTNcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPS0xMDUgK2s9MC45OTk2ICt4XzA9NTAwMDAwLjAwMTAxNjAwMiAreV8wPTAgK2RhdHVtPU5BRDI3ICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDQxNFwiOicrcHJvaj10bWVyYyArbGF0XzA9MTMuNSArbG9uXzA9MTQ0Ljc1ICtrPTEgK3hfMD0xMDAwMDAgK3lfMD0yMDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ0MTVcIjonK3Byb2o9bGNjICtsYXRfMT0tNi41ICtsYXRfMj0tMTEuNSArbGF0XzA9LTkgK2xvbl8wPTI2ICt4XzA9NTAwMDAwICt5XzA9NTAwMDAwICtlbGxwcz1jbHJrNjYgK3Rvd2dzODQ9LTEwMy43NDYsLTkuNjE0LC0yNTUuOTUsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDQxN1wiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MjEgK2s9MSAreF8wPTc1MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yNiwtMTIxLC03OCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo0NDE4XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0tNzUgK2s9MC45OTk2ICt4XzA9NTAwMDAwLjAwMTAxNjAwMiAreV8wPTAgK2RhdHVtPU5BRDI3ICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDQxOVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9LTY5ICtrPTAuOTk5NiAreF8wPTUwMDAwMC4wMDEwMTYwMDIgK3lfMD0wICtkYXR1bT1OQUQyNyArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ0MjBcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTE3NyAraz0wLjk5OTYgK3hfMD01MDAwMDAuMDAxMDE2MDAyICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ0MjFcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPS0xNzcgK2s9MC45OTk2ICt4XzA9NTAwMDAwLjAwMTAxNjAwMiAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzo0NDIyXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0tMTcxICtrPTAuOTk5NiAreF8wPTUwMDAwMC4wMDEwMTYwMDIgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDQyM1wiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9LTE2NSAraz0wLjk5OTYgK3hfMD01MDAwMDAuMDAxMDE2MDAyICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ0MjRcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPS0xNTkgK2s9MC45OTk2ICt4XzA9NTAwMDAwLjAwMTAxNjAwMiAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzo0NDI1XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0tMTUzICtrPTAuOTk5NiAreF8wPTUwMDAwMC4wMDEwMTYwMDIgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDQyNlwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9LTE0NyAraz0wLjk5OTYgK3hfMD01MDAwMDAuMDAxMDE2MDAyICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ0MjdcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPS0xNDEgK2s9MC45OTk2ICt4XzA9NTAwMDAwLjAwMTAxNjAwMiAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzo0NDI4XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0tMTM1ICtrPTAuOTk5NiAreF8wPTUwMDAwMC4wMDEwMTYwMDIgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDQyOVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9LTEyOSAraz0wLjk5OTYgK3hfMD01MDAwMDAuMDAxMDE2MDAyICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ0MzBcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPS0xMjMgK2s9MC45OTk2ICt4XzA9NTAwMDAwLjAwMTAxNjAwMiAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzo0NDMxXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0tMTE3ICtrPTAuOTk5NiAreF8wPTUwMDAwMC4wMDEwMTYwMDIgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDQzMlwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9LTExMSAraz0wLjk5OTYgK3hfMD01MDAwMDAuMDAxMDE2MDAyICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ0MzNcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPS0xMDUgK2s9MC45OTk2ICt4XzA9NTAwMDAwLjAwMTAxNjAwMiAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzo0NDM0XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0yNCAraz0xICt4XzA9ODUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTI2LC0xMjEsLTc4LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ0MzdcIjonK3Byb2o9bGNjICtsYXRfMT0xOC40MzMzMzMzMzMzMzMzMyArbGF0XzI9MTguMDMzMzMzMzMzMzMzMzMgK2xhdF8wPTE3LjgzMzMzMzMzMzMzMzMzICtsb25fMD0tNjYuNDMzMzMzMzMzMzMzMzQgK3hfMD0yMDAwMDAgK3lfMD0yMDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ0MzhcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPS03NSAraz0wLjk5OTYgK3hfMD01MDAwMDAuMDAxMDE2MDAyICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ0MzlcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPS02OSAraz0wLjk5OTYgK3hfMD01MDAwMDAuMDAxMDE2MDAyICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ0NTVcIjonK3Byb2o9bGNjICtsYXRfMT00MC45NjY2NjY2NjY2NjY2NyArbGF0XzI9MzkuOTMzMzMzMzMzMzMzMzMgK2xhdF8wPTM5LjMzMzMzMzMzMzMzMzM0ICtsb25fMD0tNzcuNzUgK3hfMD02MDk2MDEuMjE5MjAyNDM4NCAreV8wPTAgK2RhdHVtPU5BRDI3ICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDQ1NlwiOicrcHJvaj1sY2MgK2xhdF8xPTQxLjAzMzMzMzMzMzMzMzMzICtsYXRfMj00MC42NjY2NjY2NjY2NjY2NiArbGF0XzA9NDAuNSArbG9uXzA9LTc0ICt4XzA9NjA5NjAxLjIxOTIwMjQzODQgK3lfMD0zMDQ4MC4wNjA5NjAxMjE5MiArZGF0dW09TkFEMjcgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzo0NDU3XCI6Jytwcm9qPWxjYyArbGF0XzE9NDUuNjgzMzMzMzMzMzMzMzMgK2xhdF8yPTQ0LjQxNjY2NjY2NjY2NjY2ICtsYXRfMD00My44MzMzMzMzMzMzMzMzNCArbG9uXzA9LTEwMCAreF8wPTYwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzo0NDYyXCI6Jytwcm9qPWxjYyArbGF0XzE9LTE4ICtsYXRfMj0tMzYgK2xhdF8wPS0yNyArbG9uXzA9MTMyICt4XzA9MCAreV8wPTAgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo0NDY3XCI6Jytwcm9qPXV0bSArem9uZT0yMSArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDQ3MVwiOicrcHJvaj11dG0gK3pvbmU9MzggK3NvdXRoICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo0NDc0XCI6Jytwcm9qPXV0bSArem9uZT0zOCArc291dGggK2VsbHBzPWludGwgK3Rvd2dzODQ9LTM4MiwtNTksLTI2MiwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo0NDg0XCI6Jytwcm9qPXV0bSArem9uZT0xMSArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDQ4NVwiOicrcHJvaj11dG0gK3pvbmU9MTIgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ0ODZcIjonK3Byb2o9dXRtICt6b25lPTEzICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo0NDg3XCI6Jytwcm9qPXV0bSArem9uZT0xNCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDQ4OFwiOicrcHJvaj11dG0gK3pvbmU9MTUgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ0ODlcIjonK3Byb2o9dXRtICt6b25lPTE2ICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo0NDkxXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD03NSAraz0xICt4XzA9MTM1MDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDQ5MlwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9ODEgK2s9MSAreF8wPTE0NTAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ0OTNcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTg3ICtrPTEgK3hfMD0xNTUwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo0NDk0XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD05MyAraz0xICt4XzA9MTY1MDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDQ5NVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9OTkgK2s9MSAreF8wPTE3NTAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ0OTZcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTEwNSAraz0xICt4XzA9MTg1MDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDQ5N1wiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTExICtrPTEgK3hfMD0xOTUwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo0NDk4XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMTcgK2s9MSAreF8wPTIwNTAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ0OTlcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTEyMyAraz0xICt4XzA9MjE1MDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDUwMFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTI5ICtrPTEgK3hfMD0yMjUwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo0NTAxXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMzUgK2s9MSAreF8wPTIzNTAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ1MDJcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTc1ICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDUwM1wiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9ODEgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo0NTA0XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD04NyAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ1MDVcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTkzICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDUwNlwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9OTkgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo0NTA3XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMDUgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo0NTA4XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMTEgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo0NTA5XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMTcgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo0NTEwXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMjMgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo0NTExXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMjkgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo0NTEyXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMzUgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo0NTEzXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD03NSAraz0xICt4XzA9MjU1MDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDUxNFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9NzggK2s9MSAreF8wPTI2NTAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ1MTVcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTgxICtrPTEgK3hfMD0yNzUwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo0NTE2XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD04NCAraz0xICt4XzA9Mjg1MDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDUxN1wiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9ODcgK2s9MSAreF8wPTI5NTAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ1MThcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTkwICtrPTEgK3hfMD0zMDUwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo0NTE5XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD05MyAraz0xICt4XzA9MzE1MDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDUyMFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9OTYgK2s9MSAreF8wPTMyNTAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ1MjFcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTk5ICtrPTEgK3hfMD0zMzUwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo0NTIyXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMDIgK2s9MSAreF8wPTM0NTAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ1MjNcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTEwNSAraz0xICt4XzA9MzU1MDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDUyNFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTA4ICtrPTEgK3hfMD0zNjUwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo0NTI1XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMTEgK2s9MSAreF8wPTM3NTAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ1MjZcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTExNCAraz0xICt4XzA9Mzg1MDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDUyN1wiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTE3ICtrPTEgK3hfMD0zOTUwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo0NTI4XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMjAgK2s9MSAreF8wPTQwNTAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ1MjlcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTEyMyAraz0xICt4XzA9NDE1MDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDUzMFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTI2ICtrPTEgK3hfMD00MjUwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo0NTMxXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMjkgK2s9MSAreF8wPTQzNTAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ1MzJcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTEzMiAraz0xICt4XzA9NDQ1MDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDUzM1wiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTM1ICtrPTEgK3hfMD00NTUwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo0NTM0XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD03NSAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ1MzVcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTc4ICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDUzNlwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9ODEgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo0NTM3XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD04NCAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ1MzhcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTg3ICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDUzOVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9OTAgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo0NTQwXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD05MyAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ1NDFcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTk2ICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDU0MlwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9OTkgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo0NTQzXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMDIgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo0NTQ0XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMDUgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo0NTQ1XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMDggK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo0NTQ2XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMTEgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo0NTQ3XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMTQgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo0NTQ4XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMTcgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo0NTQ5XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMjAgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo0NTUwXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMjMgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo0NTUxXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMjYgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo0NTUyXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMjkgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo0NTUzXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMzIgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo0NTU0XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMzUgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo0NTU5XCI6Jytwcm9qPXV0bSArem9uZT0yMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDU2OFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9NzUgK2s9MSAreF8wPTEzNTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ1NjlcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTgxICtrPTEgK3hfMD0xNDUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo0NTcwXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD04NyAraz0xICt4XzA9MTU1MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDU3MVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9OTMgK2s9MSAreF8wPTE2NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ1NzJcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTk5ICtrPTEgK3hfMD0xNzUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo0NTczXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMDUgK2s9MSAreF8wPTE4NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ1NzRcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTExMSAraz0xICt4XzA9MTk1MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDU3NVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTE3ICtrPTEgK3hfMD0yMDUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo0NTc2XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMjMgK2s9MSAreF8wPTIxNTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ1NzdcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTEyOSAraz0xICt4XzA9MjI1MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDU3OFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTM1ICtrPTEgK3hfMD0yMzUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo0NTc5XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD03NSAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ1ODBcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTgxICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDU4MVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9ODcgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo0NTgyXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD05MyAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ1ODNcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTk5ICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDU4NFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTA1ICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDU4NVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTExICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDU4NlwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTE3ICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDU4N1wiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTIzICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDU4OFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTI5ICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDU4OVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTM1ICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDY0N1wiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9OSAraz0wLjk5OTYgK3hfMD0zMjUwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ2NTJcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTc1ICtrPTEgK3hfMD0yNTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo0NjUzXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD03OCAraz0xICt4XzA9MjY1MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDY1NFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9ODEgK2s9MSAreF8wPTI3NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ2NTVcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTg0ICtrPTEgK3hfMD0yODUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo0NjU2XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD04NyAraz0xICt4XzA9Mjk1MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDc2NlwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9OTAgK2s9MSAreF8wPTMwNTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ3NjdcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTkzICtrPTEgK3hfMD0zMTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo0NzY4XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD05NiAraz0xICt4XzA9MzI1MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDc2OVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9OTkgK2s9MSAreF8wPTMzNTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ3NzBcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTEwMiAraz0xICt4XzA9MzQ1MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDc3MVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTA1ICtrPTEgK3hfMD0zNTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo0NzcyXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMDggK2s9MSAreF8wPTM2NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ3NzNcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTExMSAraz0xICt4XzA9Mzc1MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDc3NFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTE0ICtrPTEgK3hfMD0zODUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo0Nzc1XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMTcgK2s9MSAreF8wPTM5NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ3NzZcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTEyMCAraz0xICt4XzA9NDA1MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDc3N1wiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTIzICtrPTEgK3hfMD00MTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo0Nzc4XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMjYgK2s9MSAreF8wPTQyNTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ3NzlcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTEyOSAraz0xICt4XzA9NDM1MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDc4MFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTMyICtrPTEgK3hfMD00NDUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo0NzgxXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMzUgK2s9MSAreF8wPTQ1NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ3ODJcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTc1ICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDc4M1wiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9NzggK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo0Nzg0XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD04MSAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ3ODVcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTg0ICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDc4NlwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9ODcgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo0Nzg3XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD05MCAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ3ODhcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTkzICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDc4OVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9OTYgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo0NzkwXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD05OSAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ3OTFcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTEwMiAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ3OTJcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTEwNSAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ3OTNcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTEwOCAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ3OTRcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTExMSAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ3OTVcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTExNCAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ3OTZcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTExNyAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ3OTdcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTEyMCAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ3OThcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTEyMyAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ3OTlcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTEyNiAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ4MDBcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTEyOSAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ4MTJcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTEzMiAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ4MjJcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTEzNSAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ4MjZcIjonK3Byb2o9bGNjICtsYXRfMT0xNSArbGF0XzI9MTYuNjY2NjY2NjY2NjY2NjcgK2xhdF8wPTE1LjgzMzMzMzMzMzMzMzMzICtsb25fMD0tMjQgK3hfMD0xNjE1ODcuODMgK3lfMD0xMjg1MTEuMjAyICtkYXR1bT1XR1M4NCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDgzOVwiOicrcHJvaj1sY2MgK2xhdF8xPTQ4LjY2NjY2NjY2NjY2NjY2ICtsYXRfMj01My42NjY2NjY2NjY2NjY2NiArbGF0XzA9NTEgK2xvbl8wPTEwLjUgK3hfMD0wICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDg1NVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9NS41ICtrPTEgK3hfMD0xMDAwMDAgK3lfMD0xMDAwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo0ODU2XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD02LjUgK2s9MSAreF8wPTEwMDAwMCAreV8wPTEwMDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ4NTdcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTcuNSAraz0xICt4XzA9MTAwMDAwICt5XzA9MTAwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NDg1OFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9OC41ICtrPTEgK3hfMD0xMDAwMDAgK3lfMD0xMDAwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo0ODU5XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD05LjUgK2s9MSAreF8wPTEwMDAwMCAreV8wPTEwMDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ4NjBcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTEwLjUgK2s9MSAreF8wPTEwMDAwMCAreV8wPTEwMDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ4NjFcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTExLjUgK2s9MSAreF8wPTEwMDAwMCAreV8wPTEwMDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ4NjJcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTEyLjUgK2s9MSAreF8wPTEwMDAwMCAreV8wPTEwMDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ4NjNcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTEzLjUgK2s9MSAreF8wPTEwMDAwMCAreV8wPTEwMDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ4NjRcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTE0LjUgK2s9MSAreF8wPTEwMDAwMCAreV8wPTEwMDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ4NjVcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTE1LjUgK2s9MSAreF8wPTEwMDAwMCAreV8wPTEwMDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ4NjZcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTE2LjUgK2s9MSAreF8wPTEwMDAwMCAreV8wPTEwMDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ4NjdcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTE3LjUgK2s9MSAreF8wPTEwMDAwMCAreV8wPTEwMDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ4NjhcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTE4LjUgK2s9MSAreF8wPTEwMDAwMCAreV8wPTEwMDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ4NjlcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTE5LjUgK2s9MSAreF8wPTEwMDAwMCAreV8wPTEwMDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ4NzBcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTIwLjUgK2s9MSAreF8wPTEwMDAwMCAreV8wPTEwMDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ4NzFcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTIxLjUgK2s9MSAreF8wPTEwMDAwMCAreV8wPTEwMDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ4NzJcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTIyLjUgK2s9MSAreF8wPTEwMDAwMCAreV8wPTEwMDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ4NzNcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTIzLjUgK2s9MSAreF8wPTEwMDAwMCAreV8wPTEwMDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ4NzRcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTI0LjUgK2s9MSAreF8wPTEwMDAwMCAreV8wPTEwMDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ4NzVcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTI1LjUgK2s9MSAreF8wPTEwMDAwMCAreV8wPTEwMDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ4NzZcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTI2LjUgK2s9MSAreF8wPTEwMDAwMCAreV8wPTEwMDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ4NzdcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTI3LjUgK2s9MSAreF8wPTEwMDAwMCAreV8wPTEwMDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ4NzhcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTI4LjUgK2s9MSAreF8wPTEwMDAwMCAreV8wPTEwMDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ4NzlcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTI5LjUgK2s9MSAreF8wPTEwMDAwMCAreV8wPTEwMDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjQ4ODBcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTMwLjUgK2s9MSAreF8wPTEwMDAwMCAreV8wPTEwMDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjUwMTRcIjonK3Byb2o9dXRtICt6b25lPTI1ICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo1MDE1XCI6Jytwcm9qPXV0bSArem9uZT0yNiArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NTAxNlwiOicrcHJvaj11dG0gK3pvbmU9MjggK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjUwMThcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTM5LjY2NjY2NjY2NjY2NjY2ICtsb25fMD0tOC4xMzE5MDYxMTExMTExMTIgK2s9MSAreF8wPTAgK3lfMD0wICtlbGxwcz1pbnRsICt0b3dnczg0PS0zMDQuMDQ2LC02MC41NzYsMTAzLjY0LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjUwNDFcIjonK3Byb2o9c3RlcmUgK2xhdF8wPTkwICtsYXRfdHM9OTAgK2xvbl8wPTAgK2s9MC45OTQgK3hfMD0yMDAwMDAwICt5XzA9MjAwMDAwMCArZGF0dW09V0dTODQgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjUwNDJcIjonK3Byb2o9c3RlcmUgK2xhdF8wPS05MCArbGF0X3RzPS05MCArbG9uXzA9MCAraz0wLjk5NCAreF8wPTIwMDAwMDAgK3lfMD0yMDAwMDAwICtkYXR1bT1XR1M4NCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NTA0OFwiOicrcHJvaj11dG0gK3pvbmU9MzUgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjUwNjlcIjonK3Byb2o9YWVhICtsYXRfMT0yOS41ICtsYXRfMj00NS41ICtsYXRfMD0yMyArbG9uXzA9LTk2ICt4XzA9MCAreV8wPTAgK2RhdHVtPU5BRDI3ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo1MDcwXCI6Jytwcm9qPWFlYSArbGF0XzE9MjkuNSArbGF0XzI9NDUuNSArbGF0XzA9MjMgK2xvbl8wPS05NiAreF8wPTAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo1MDcxXCI6Jytwcm9qPWFlYSArbGF0XzE9MjkuNSArbGF0XzI9NDUuNSArbGF0XzA9MjMgK2xvbl8wPS05NiAreF8wPTAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo1MDcyXCI6Jytwcm9qPWFlYSArbGF0XzE9MjkuNSArbGF0XzI9NDUuNSArbGF0XzA9MjMgK2xvbl8wPS05NiAreF8wPTAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo1MTA1XCI6Jytwcm9qPXRtZXJjICtsYXRfMD01OCArbG9uXzA9NS41ICtrPTEgK3hfMD0xMDAwMDAgK3lfMD0xMDAwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo1MTA2XCI6Jytwcm9qPXRtZXJjICtsYXRfMD01OCArbG9uXzA9Ni41ICtrPTEgK3hfMD0xMDAwMDAgK3lfMD0xMDAwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo1MTA3XCI6Jytwcm9qPXRtZXJjICtsYXRfMD01OCArbG9uXzA9Ny41ICtrPTEgK3hfMD0xMDAwMDAgK3lfMD0xMDAwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo1MTA4XCI6Jytwcm9qPXRtZXJjICtsYXRfMD01OCArbG9uXzA9OC41ICtrPTEgK3hfMD0xMDAwMDAgK3lfMD0xMDAwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo1MTA5XCI6Jytwcm9qPXRtZXJjICtsYXRfMD01OCArbG9uXzA9OS41ICtrPTEgK3hfMD0xMDAwMDAgK3lfMD0xMDAwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo1MTEwXCI6Jytwcm9qPXRtZXJjICtsYXRfMD01OCArbG9uXzA9MTAuNSAraz0xICt4XzA9MTAwMDAwICt5XzA9MTAwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NTExMVwiOicrcHJvaj10bWVyYyArbGF0XzA9NTggK2xvbl8wPTExLjUgK2s9MSAreF8wPTEwMDAwMCAreV8wPTEwMDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjUxMTJcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTU4ICtsb25fMD0xMi41ICtrPTEgK3hfMD0xMDAwMDAgK3lfMD0xMDAwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo1MTEzXCI6Jytwcm9qPXRtZXJjICtsYXRfMD01OCArbG9uXzA9MTMuNSAraz0xICt4XzA9MTAwMDAwICt5XzA9MTAwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NTExNFwiOicrcHJvaj10bWVyYyArbGF0XzA9NTggK2xvbl8wPTE0LjUgK2s9MSAreF8wPTEwMDAwMCAreV8wPTEwMDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjUxMTVcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTU4ICtsb25fMD0xNS41ICtrPTEgK3hfMD0xMDAwMDAgK3lfMD0xMDAwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo1MTE2XCI6Jytwcm9qPXRtZXJjICtsYXRfMD01OCArbG9uXzA9MTYuNSAraz0xICt4XzA9MTAwMDAwICt5XzA9MTAwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NTExN1wiOicrcHJvaj10bWVyYyArbGF0XzA9NTggK2xvbl8wPTE3LjUgK2s9MSAreF8wPTEwMDAwMCAreV8wPTEwMDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjUxMThcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTU4ICtsb25fMD0xOC41ICtrPTEgK3hfMD0xMDAwMDAgK3lfMD0xMDAwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo1MTE5XCI6Jytwcm9qPXRtZXJjICtsYXRfMD01OCArbG9uXzA9MTkuNSAraz0xICt4XzA9MTAwMDAwICt5XzA9MTAwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NTEyMFwiOicrcHJvaj10bWVyYyArbGF0XzA9NTggK2xvbl8wPTIwLjUgK2s9MSAreF8wPTEwMDAwMCAreV8wPTEwMDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjUxMjFcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTU4ICtsb25fMD0yMS41ICtrPTEgK3hfMD0xMDAwMDAgK3lfMD0xMDAwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo1MTIyXCI6Jytwcm9qPXRtZXJjICtsYXRfMD01OCArbG9uXzA9MjIuNSAraz0xICt4XzA9MTAwMDAwICt5XzA9MTAwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NTEyM1wiOicrcHJvaj10bWVyYyArbGF0XzA9NTggK2xvbl8wPTIzLjUgK2s9MSAreF8wPTEwMDAwMCAreV8wPTEwMDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjUxMjRcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTU4ICtsb25fMD0yNC41ICtrPTEgK3hfMD0xMDAwMDAgK3lfMD0xMDAwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo1MTI1XCI6Jytwcm9qPXRtZXJjICtsYXRfMD01OCArbG9uXzA9MjUuNSAraz0xICt4XzA9MTAwMDAwICt5XzA9MTAwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NTEyNlwiOicrcHJvaj10bWVyYyArbGF0XzA9NTggK2xvbl8wPTI2LjUgK2s9MSAreF8wPTEwMDAwMCAreV8wPTEwMDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjUxMjdcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTU4ICtsb25fMD0yNy41ICtrPTEgK3hfMD0xMDAwMDAgK3lfMD0xMDAwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo1MTI4XCI6Jytwcm9qPXRtZXJjICtsYXRfMD01OCArbG9uXzA9MjguNSAraz0xICt4XzA9MTAwMDAwICt5XzA9MTAwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NTEyOVwiOicrcHJvaj10bWVyYyArbGF0XzA9NTggK2xvbl8wPTI5LjUgK2s9MSAreF8wPTEwMDAwMCAreV8wPTEwMDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjUxMzBcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTU4ICtsb25fMD0zMC41ICtrPTEgK3hfMD0xMDAwMDAgK3lfMD0xMDAwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo1MTY3XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0zOCArbG9uXzA9MTMxICtrPTEgK3hfMD0yMDAwMDAgK3lfMD01MDAwMDAgK2VsbHBzPWJlc3NlbCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NTE2OFwiOicrcHJvaj10bWVyYyArbGF0XzA9MzggK2xvbl8wPTEyNyAraz0xICt4XzA9MjAwMDAwICt5XzA9NTUwMDAwICtlbGxwcz1iZXNzZWwgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjUxNjlcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTM4ICtsb25fMD0xMjUgK2s9MSAreF8wPTIwMDAwMCAreV8wPTUwMDAwMCArZWxscHM9YmVzc2VsICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo1MTcwXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0zOCArbG9uXzA9MTI3ICtrPTEgK3hfMD0yMDAwMDAgK3lfMD01MDAwMDAgK2VsbHBzPWJlc3NlbCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NTE3MVwiOicrcHJvaj10bWVyYyArbGF0XzA9MzggK2xvbl8wPTEyOSAraz0xICt4XzA9MjAwMDAwICt5XzA9NTAwMDAwICtlbGxwcz1iZXNzZWwgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjUxNzJcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTM4ICtsb25fMD0xMzEgK2s9MSAreF8wPTIwMDAwMCAreV8wPTUwMDAwMCArZWxscHM9YmVzc2VsICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo1MTczXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0zOCArbG9uXzA9MTI1LjAwMjg5MDI3Nzc3NzggK2s9MSAreF8wPTIwMDAwMCAreV8wPTUwMDAwMCArZWxscHM9YmVzc2VsICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo1MTc0XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0zOCArbG9uXzA9MTI3LjAwMjg5MDI3Nzc3NzggK2s9MSAreF8wPTIwMDAwMCAreV8wPTUwMDAwMCArZWxscHM9YmVzc2VsICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo1MTc1XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0zOCArbG9uXzA9MTI3LjAwMjg5MDI3Nzc3NzggK2s9MSAreF8wPTIwMDAwMCAreV8wPTU1MDAwMCArZWxscHM9YmVzc2VsICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo1MTc2XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0zOCArbG9uXzA9MTI5LjAwMjg5MDI3Nzc3NzggK2s9MSAreF8wPTIwMDAwMCAreV8wPTUwMDAwMCArZWxscHM9YmVzc2VsICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo1MTc3XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0zOCArbG9uXzA9MTMxLjAwMjg5MDI3Nzc3NzggK2s9MSAreF8wPTIwMDAwMCAreV8wPTUwMDAwMCArZWxscHM9YmVzc2VsICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo1MTc4XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0zOCArbG9uXzA9MTI3LjUgK2s9MC45OTk2ICt4XzA9MTAwMDAwMCAreV8wPTIwMDAwMDAgK2VsbHBzPWJlc3NlbCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NTE3OVwiOicrcHJvaj10bWVyYyArbGF0XzA9MzggK2xvbl8wPTEyNy41ICtrPTAuOTk5NiAreF8wPTEwMDAwMDAgK3lfMD0yMDAwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo1MTgwXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0zOCArbG9uXzA9MTI1ICtrPTEgK3hfMD0yMDAwMDAgK3lfMD01MDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjUxODFcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTM4ICtsb25fMD0xMjcgK2s9MSAreF8wPTIwMDAwMCAreV8wPTUwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NTE4MlwiOicrcHJvaj10bWVyYyArbGF0XzA9MzggK2xvbl8wPTEyNyAraz0xICt4XzA9MjAwMDAwICt5XzA9NTUwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo1MTgzXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0zOCArbG9uXzA9MTI5ICtrPTEgK3hfMD0yMDAwMDAgK3lfMD01MDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjUxODRcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTM4ICtsb25fMD0xMzEgK2s9MSAreF8wPTIwMDAwMCAreV8wPTUwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NTE4NVwiOicrcHJvaj10bWVyYyArbGF0XzA9MzggK2xvbl8wPTEyNSAraz0xICt4XzA9MjAwMDAwICt5XzA9NjAwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo1MTg2XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0zOCArbG9uXzA9MTI3ICtrPTEgK3hfMD0yMDAwMDAgK3lfMD02MDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjUxODdcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTM4ICtsb25fMD0xMjkgK2s9MSAreF8wPTIwMDAwMCAreV8wPTYwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NTE4OFwiOicrcHJvaj10bWVyYyArbGF0XzA9MzggK2xvbl8wPTEzMSAraz0xICt4XzA9MjAwMDAwICt5XzA9NjAwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo1MjIxXCI6Jytwcm9qPWtyb3ZhayArbGF0XzA9NDkuNSArbG9uXzA9NDIuNSArYWxwaGE9MzAuMjg4MTM5NzIyMjIyMjIgK2s9MC45OTk5ICt4XzA9MCAreV8wPTAgK2VsbHBzPWJlc3NlbCArdG93Z3M4ND01ODksNzYsNDgwLDAsMCwwLDAgK3BtPWZlcnJvICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo1MjIzXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMiAraz0wLjk5OTYgK3hfMD01MDAwMDAgK3lfMD01MDAwMDAgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo1MjM0XCI6Jytwcm9qPXRtZXJjICtsYXRfMD03LjAwMDQ4MDI3Nzc3Nzc3OCArbG9uXzA9ODAuNzcxNzExMTExMTExMTIgK2s9MC45OTk5MjM4NDE4ICt4XzA9MjAwMDAwICt5XzA9MjAwMDAwICthPTYzNzcyNzYuMzQ1ICtiPTYzNTYwNzUuNDEzMTQwMjQgK3Rvd2dzODQ9LTk3LDc4Nyw4NiwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo1MjM1XCI6Jytwcm9qPXRtZXJjICtsYXRfMD03LjAwMDQ3MTUyNzc3Nzc3OCArbG9uXzA9ODAuNzcxNzEzMDgzMzMzMzQgK2s9MC45OTk5MjM4NDE4ICt4XzA9NTAwMDAwICt5XzA9NTAwMDAwICthPTYzNzcyNzYuMzQ1ICtiPTYzNTYwNzUuNDEzMTQwMjQgK3Rvd2dzODQ9LTAuMjkzLDc2Ni45NSw4Ny43MTMsMC4xOTU3MDQsMS42OTUwNywzLjQ3MzAyLC0wLjAzOTMzOCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NTI0M1wiOicrcHJvaj1sY2MgK2xhdF8xPTQ4LjY2NjY2NjY2NjY2NjY2ICtsYXRfMj01My42NjY2NjY2NjY2NjY2NiArbGF0XzA9NTEgK2xvbl8wPTEwLjUgK3hfMD0wICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NTI0N1wiOicrcHJvaj1vbWVyYyArbGF0XzA9NCArbG9uYz0xMTUgK2FscGhhPTUzLjMxNTgwOTk1ICtrPTAuOTk5ODQgK3hfMD0wICt5XzA9MCArbm9fdW9mZiArZ2FtbWE9NTMuMTMwMTAyMzYxMTExMTEgK2VsbHBzPUdSUzgwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo1MjUzXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0yNyAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NTI1NFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MzAgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjUyNTVcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTMzICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo1MjU2XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0zNiAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NTI1N1wiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MzkgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjUyNThcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTQyICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo1MjU5XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD00NSAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NTI2NlwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9OTAgK2s9MSAreF8wPTI1MDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjUyNjlcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTI3ICtrPTEgK3hfMD05NTAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NTI3MFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MzAgK2s9MSAreF8wPTEwNTAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NTI3MVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MzMgK2s9MSAreF8wPTExNTAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NTI3MlwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MzYgK2s9MSAreF8wPTEyNTAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NTI3M1wiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MzkgK2s9MSAreF8wPTEzNTAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NTI3NFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9NDIgK2s9MSAreF8wPTE0NTAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NTI3NVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9NDUgK2s9MSAreF8wPTE1NTAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NTI5MlwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9OTAuNzMzMzMzMzMzMzMzMzMgK2s9MSAreF8wPTI1MDAwMCAreV8wPS0yNTAwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo1MjkzXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD04OS41NSAraz0xICt4XzA9MjUwMDAwICt5XzA9LTI1MDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjUyOTRcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTg5Ljg0OTk5OTk5OTk5OTk5ICtrPTEgK3hfMD0yNTAwMDAgK3lfMD0tMjUwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NTI5NVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9OTAuMDMzMzMzMzMzMzMzMzMgK2s9MSAreF8wPTI1MDAwMCAreV8wPS0yNTAwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo1Mjk2XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD05MC4xNTAwMDAwMDAwMDAwMSAraz0xICt4XzA9MjUwMDAwICt5XzA9LTI1MDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjUyOTdcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTkxLjEzMzMzMzMzMzMzMzM0ICtrPTEgK3hfMD0yNTAwMDAgK3lfMD0tMjUwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NTI5OFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9OTEuMjMzMzMzMzMzMzMzMzMgK2s9MSAreF8wPTI1MDAwMCAreV8wPS0yNTAwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo1Mjk5XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD04OS4zNDk5OTk5OTk5OTk5OSAraz0xICt4XzA9MjUwMDAwICt5XzA9LTI1MDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjUzMDBcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTkxLjM0OTk5OTk5OTk5OTk5ICtrPTEgK3hfMD0yNTAwMDAgK3lfMD0tMjUwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NTMwMVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9ODkuODQ5OTk5OTk5OTk5OTkgK2s9MSAreF8wPTI1MDAwMCAreV8wPS0yNTAwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo1MzAyXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD05MS41NjY2NjY2NjY2NjY2NiAraz0xICt4XzA9MjUwMDAwICt5XzA9LTI1MDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjUzMDNcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTg5LjA2NjY2NjY2NjY2NjY2ICtrPTEgK3hfMD0yNTAwMDAgK3lfMD0tMjUwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NTMwNFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9OTAuMjY2NjY2NjY2NjY2NjcgK2s9MSAreF8wPTI1MDAwMCAreV8wPS0yNTAwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo1MzA1XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD04OS41NSAraz0xICt4XzA9MjUwMDAwICt5XzA9LTI1MDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjUzMDZcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTkxLjc1ICtrPTEgK3hfMD0yNTAwMDAgK3lfMD0tMjUwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NTMwN1wiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9OTAuNSAraz0xICt4XzA9MjUwMDAwICt5XzA9LTI1MDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjUzMDhcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTkwLjE2NjY2NjY2NjY2NjY3ICtrPTEgK3hfMD0yNTAwMDAgK3lfMD0tMjUwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NTMwOVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9OTAuMTE2NjY2NjY2NjY2NjYgK2s9MSAreF8wPTI1MDAwMCAreV8wPS0yNTAwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo1MzEwXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD05MS41NjY2NjY2NjY2NjY2NiAraz0xICt4XzA9MjUwMDAwICt5XzA9LTI1MDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjUzMTFcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTkwLjg2NjY2NjY2NjY2NjY2ICtrPTEgK3hfMD0yNTAwMDAgK3lfMD0tMjUwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NTMxNlwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9LTcgK2s9MC45OTk5OTcgK3hfMD0yMDAwMDAgK3lfMD0tNjAwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NTMyMFwiOicrcHJvaj1sY2MgK2xhdF8xPTQ0LjUgK2xhdF8yPTU0LjUgK2xhdF8wPTAgK2xvbl8wPS04NCAreF8wPTEwMDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo1MzIxXCI6Jytwcm9qPWxjYyArbGF0XzE9NDQuNSArbGF0XzI9NTQuNSArbGF0XzA9MCArbG9uXzA9LTg0ICt4XzA9MTAwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjUzMjVcIjonK3Byb2o9bGNjICtsYXRfMT02NC4yNSArbGF0XzI9NjUuNzUgK2xhdF8wPTY1ICtsb25fMD0tMTkgK3hfMD0xNzAwMDAwICt5XzA9MzAwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo1MzI5XCI6Jytwcm9qPW1lcmMgK2xvbl8wPTMuMTkyMjgwNTU1NTU1NTU2ICtrPTAuOTk3ICt4XzA9MzkwMDAwMCAreV8wPTkwMDAwMCArZWxscHM9YmVzc2VsICt0b3dnczg0PS00MDMsNjg0LDQxLDAsMCwwLDAgK3BtPWpha2FydGEgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjUzMzBcIjonK3Byb2o9bWVyYyArbG9uXzA9My4xOTIyODA1NTU1NTU1NTYgK2s9MC45OTcgK3hfMD0zOTAwMDAwICt5XzA9OTAwMDAwICtlbGxwcz1iZXNzZWwgK3Rvd2dzODQ9LTM3Nyw2ODEsLTUwLDAsMCwwLDAgK3BtPWpha2FydGEgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjUzMzFcIjonK3Byb2o9bWVyYyArbG9uXzA9My4xOTIyODA1NTU1NTU1NTYgK2s9MC45OTcgK3hfMD0zOTAwMDAwICt5XzA9OTAwMDAwICtlbGxwcz1iZXNzZWwgK3Rvd2dzODQ9LTU4Ny44LDUxOS43NSwxNDUuNzYsMCwwLDAsMCArcG09amFrYXJ0YSArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NTMzN1wiOicrcHJvaj11dG0gK3pvbmU9MjUgK3NvdXRoICtlbGxwcz1pbnRsICt0b3dnczg0PS0xNTEuOTksMjg3LjA0LC0xNDcuNDUsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NTM0M1wiOicrcHJvaj10bWVyYyArbGF0XzA9LTkwICtsb25fMD0tNzIgK2s9MSAreF8wPTE1MDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo1MzQ0XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0tOTAgK2xvbl8wPS02OSAraz0xICt4XzA9MjUwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjUzNDVcIjonK3Byb2o9dG1lcmMgK2xhdF8wPS05MCArbG9uXzA9LTY2ICtrPTEgK3hfMD0zNTAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NTM0NlwiOicrcHJvaj10bWVyYyArbGF0XzA9LTkwICtsb25fMD0tNjMgK2s9MSAreF8wPTQ1MDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo1MzQ3XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0tOTAgK2xvbl8wPS02MCAraz0xICt4XzA9NTUwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjUzNDhcIjonK3Byb2o9dG1lcmMgK2xhdF8wPS05MCArbG9uXzA9LTU3ICtrPTEgK3hfMD02NTAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NTM0OVwiOicrcHJvaj10bWVyYyArbGF0XzA9LTkwICtsb25fMD0tNTQgK2s9MSAreF8wPTc1MDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo1MzU1XCI6Jytwcm9qPXV0bSArem9uZT0yMCArc291dGggK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjUzNTZcIjonK3Byb2o9dXRtICt6b25lPTE5ICtzb3V0aCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NTM1N1wiOicrcHJvaj11dG0gK3pvbmU9MjEgK3NvdXRoICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo1MzYxXCI6Jytwcm9qPXV0bSArem9uZT0xOSArc291dGggK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjUzNjJcIjonK3Byb2o9dXRtICt6b25lPTE4ICtzb3V0aCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NTM2N1wiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9LTg0ICtrPTAuOTk5OSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPVdHUzg0ICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjUzODJcIjonK3Byb2o9dXRtICt6b25lPTIxICtzb3V0aCArZWxscHM9V0dTODQgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NTM4M1wiOicrcHJvaj11dG0gK3pvbmU9MjIgK3NvdXRoICtlbGxwcz1XR1M4NCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo1Mzg3XCI6Jytwcm9qPXV0bSArem9uZT0xOCArc291dGggK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjUzODhcIjonK3Byb2o9dXRtICt6b25lPTE3ICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo1Mzg5XCI6Jytwcm9qPXV0bSArem9uZT0xOSArc291dGggK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjUzOTZcIjonK3Byb2o9dXRtICt6b25lPTI2ICtzb3V0aCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NTQ1NlwiOicrcHJvaj1sY2MgK2xhdF8xPTEwLjQ2NjY2NjY2NjY2NjY3ICtsYXRfMD0xMC40NjY2NjY2NjY2NjY2NyArbG9uXzA9LTg0LjMzMzMzMzMzMzMzMzMzICtrXzA9MC45OTk5NTY5NiAreF8wPTUwMDAwMCAreV8wPTI3MTgyMC41MjIgK2VsbHBzPWNscms2NiArdG93Z3M4ND0yMTMuMTEsOS4zNywtNzQuOTUsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NTQ1N1wiOicrcHJvaj1sY2MgK2xhdF8xPTkgK2xhdF8wPTkgK2xvbl8wPS04My42NjY2NjY2NjY2NjY2NyAra18wPTAuOTk5OTU2OTYgK3hfMD01MDAwMDAgK3lfMD0zMjc5ODcuNDM2ICtlbGxwcz1jbHJrNjYgK3Rvd2dzODQ9MjEzLjExLDkuMzcsLTc0Ljk1LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjU0NThcIjonK3Byb2o9bGNjICtsYXRfMT0xNi44MTY2NjY2NjY2NjY2NyArbGF0XzA9MTYuODE2NjY2NjY2NjY2NjcgK2xvbl8wPS05MC4zMzMzMzMzMzMzMzMzMyAra18wPTAuOTk5OTIyMjYgK3hfMD01MDAwMDAgK3lfMD0yOTIyMDkuNTc5ICtkYXR1bT1OQUQyNyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NTQ1OVwiOicrcHJvaj1sY2MgK2xhdF8xPTE0LjkgK2xhdF8wPTE0LjkgK2xvbl8wPS05MC4zMzMzMzMzMzMzMzMzMyAra18wPTAuOTk5ODk5MDYgK3hfMD01MDAwMDAgK3lfMD0zMjU5OTIuNjgxICtlbGxwcz1jbHJrNjYgK3Rvd2dzODQ9MjEzLjExLDkuMzcsLTc0Ljk1LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjU0NjBcIjonK3Byb2o9bGNjICtsYXRfMT0xMy43ODMzMzMzMzMzMzMzMyArbGF0XzA9MTMuNzgzMzMzMzMzMzMzMzMgK2xvbl8wPS04OSAra18wPTAuOTk5OTY3MDQgK3hfMD01MDAwMDAgK3lfMD0yOTU4MDkuMTg0ICtlbGxwcz1jbHJrNjYgK3Rvd2dzODQ9MjEzLjExLDkuMzcsLTc0Ljk1LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjU0NjFcIjonK3Byb2o9bGNjICtsYXRfMT0xMy44NjY2NjY2NjY2NjY2NyArbGF0XzA9MTMuODY2NjY2NjY2NjY2NjcgK2xvbl8wPS04NS41ICtrXzA9MC45OTk5MDMxNCAreF8wPTUwMDAwMCAreV8wPTM1OTg5MS44MTYgK2VsbHBzPWNscms2NiArdG93Z3M4ND0yMTMuMTEsOS4zNywtNzQuOTUsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NTQ2MlwiOicrcHJvaj1sY2MgK2xhdF8xPTExLjczMzMzMzMzMzMzMzMzICtsYXRfMD0xMS43MzMzMzMzMzMzMzMzMyArbG9uXzA9LTg1LjUgK2tfMD0wLjk5OTkyMjI4MDAwMDAwMDEgK3hfMD01MDAwMDAgK3lfMD0yODg4NzYuMzI3ICtlbGxwcz1jbHJrNjYgK3Rvd2dzODQ9MjEzLjExLDkuMzcsLTc0Ljk1LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjU0NjNcIjonK3Byb2o9dXRtICt6b25lPTE3ICtlbGxwcz1hdXN0X1NBICt0b3dnczg0PS01NywxLC00MSwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo1NDY2XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0xNy4wNjEyNDE5NDQ0NDQ0NCArbG9uXzA9LTg4LjYzMTg1NzUgK2s9MSAreF8wPTY2MjIwLjAyODMzMDgyNzYxICt5XzA9MTM1Nzc5LjUwOTk4ODUyOTkgK2E9NjM3ODI5My42NDUyMDg3NTkgK2I9NjM1NjYxNy45ODc2Nzk4MzggK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjU0NjlcIjonK3Byb2o9bGNjICtsYXRfMT04LjQxNjY2NjY2NjY2NjY2NiArbGF0XzA9OC40MTY2NjY2NjY2NjY2NjYgK2xvbl8wPS04MCAra18wPTAuOTk5ODk5MDkgK3hfMD01MDAwMDAgK3lfMD0yOTQ4NjUuMzAzICtlbGxwcz1jbHJrNjYgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjU0NzJcIjonK3Byb2o9cG9seSArbGF0XzA9OC4yNSArbG9uXzA9LTgxICt4XzA9OTE0MzkxLjc5NjIgK3lfMD05OTk0MDQuNzIxNzE1NDg2MSArZWxscHM9Y2xyazY2ICt0b19tZXRlcj0wLjkxNDM5MTc5NjIgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjU0NzlcIjonK3Byb2o9bGNjICtsYXRfMT0tNzYuNjY2NjY2NjY2NjY2NjcgK2xhdF8yPS03OS4zMzMzMzMzMzMzMzMzMyArbGF0XzA9LTc4ICtsb25fMD0xNjMgK3hfMD03MDAwMDAwICt5XzA9NTAwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NTQ4MFwiOicrcHJvaj1sY2MgK2xhdF8xPS03My42NjY2NjY2NjY2NjY2NyArbGF0XzI9LTc1LjMzMzMzMzMzMzMzMzMzICtsYXRfMD0tNzQuNSArbG9uXzA9MTY1ICt4XzA9NTAwMDAwMCAreV8wPTMwMDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjU0ODFcIjonK3Byb2o9bGNjICtsYXRfMT0tNzAuNjY2NjY2NjY2NjY2NjcgK2xhdF8yPS03Mi4zMzMzMzMzMzMzMzMzMyArbGF0XzA9LTcxLjUgK2xvbl8wPTE2NiAreF8wPTMwMDAwMDAgK3lfMD0xMDAwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo1NDgyXCI6Jytwcm9qPXN0ZXJlICtsYXRfMD0tOTAgK2xhdF90cz0tOTAgK2xvbl8wPTE4MCAraz0wLjk5NCAreF8wPTUwMDAwMDAgK3lfMD0xMDAwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo1NDkwXCI6Jytwcm9qPXV0bSArem9uZT0yMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NTUxM1wiOicrcHJvaj1rcm92YWsgK2xhdF8wPTQ5LjUgK2xvbl8wPTI0LjgzMzMzMzMzMzMzMzMzICthbHBoYT0zMC4yODgxMzk3MjIyMjIyMiAraz0wLjk5OTkgK3hfMD0wICt5XzA9MCArZWxscHM9YmVzc2VsICt0b3dnczg0PTU4OSw3Niw0ODAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NTUxNFwiOicrcHJvaj1rcm92YWsgK2xhdF8wPTQ5LjUgK2xvbl8wPTI0LjgzMzMzMzMzMzMzMzMzICthbHBoYT0zMC4yODgxMzk3MjIyMjIyMiAraz0wLjk5OTkgK3hfMD0wICt5XzA9MCArZWxscHM9YmVzc2VsICt0b3dnczg0PTU4OSw3Niw0ODAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NTUxOFwiOicrcHJvaj10bWVyYyArbGF0XzA9LTQ0ICtsb25fMD0tMTc2LjUgK2s9MSAreF8wPTM1MDAwMCAreV8wPTY1MDAwMCArZWxscHM9aW50bCArdG93Z3M4ND0xNzUsLTM4LDExMywwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo1NTE5XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0tNDQgK2xvbl8wPS0xNzYuNSAraz0xICt4XzA9MzUwMDAwICt5XzA9NjUwMDAwICtlbGxwcz1pbnRsICt0b3dnczg0PTE3NC4wNSwtMjUuNDksMTEyLjU3LC0wLC0wLDAuNTU0LDAuMjI2MyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NTUyMFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MyAraz0xICt4XzA9MTUwMDAwMCAreV8wPTAgK2VsbHBzPWJlc3NlbCArdG93Z3M4ND01OTguMSw3My43LDQxOC4yLDAuMjAyLDAuMDQ1LC0yLjQ1NSw2LjcgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjU1MjNcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTExLjUgK2s9MC45OTk2ICt4XzA9MTUwMDAwMCAreV8wPTU1MDAwMDAgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo1NTMwXCI6Jytwcm9qPXBvbHkgK2xhdF8wPTAgK2xvbl8wPS01NCAreF8wPTUwMDAwMDAgK3lfMD0xMDAwMDAwMCArZWxscHM9YXVzdF9TQSArdG93Z3M4ND0tNjcuMzUsMy44OCwtMzguMjIsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NTUzMVwiOicrcHJvaj11dG0gK3pvbmU9MjEgK3NvdXRoICtlbGxwcz1hdXN0X1NBICt0b3dnczg0PS02Ny4zNSwzLjg4LC0zOC4yMiwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo1NTMyXCI6Jytwcm9qPXV0bSArem9uZT0yMiArc291dGggK2VsbHBzPWF1c3RfU0EgK3Rvd2dzODQ9LTU3LDEsLTQxLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjU1MzNcIjonK3Byb2o9dXRtICt6b25lPTIzICtzb3V0aCArZWxscHM9YXVzdF9TQSArdG93Z3M4ND0tNjcuMzUsMy44OCwtMzguMjIsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NTUzNFwiOicrcHJvaj11dG0gK3pvbmU9MjQgK3NvdXRoICtlbGxwcz1hdXN0X1NBICt0b3dnczg0PS02Ny4zNSwzLjg4LC0zOC4yMiwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo1NTM1XCI6Jytwcm9qPXV0bSArem9uZT0yNSArc291dGggK2VsbHBzPWF1c3RfU0EgK3Rvd2dzODQ9LTY3LjM1LDMuODgsLTM4LjIyLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjU1MzZcIjonK3Byb2o9dXRtICt6b25lPTIxICtzb3V0aCArZWxscHM9aW50bCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NTUzN1wiOicrcHJvaj11dG0gK3pvbmU9MjIgK3NvdXRoICtlbGxwcz1pbnRsICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo1NTM4XCI6Jytwcm9qPXV0bSArem9uZT0yMyArc291dGggK2VsbHBzPWludGwgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjU1MzlcIjonK3Byb2o9dXRtICt6b25lPTI0ICtzb3V0aCArZWxscHM9aW50bCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NTU1MFwiOicrcHJvaj11dG0gK3pvbmU9NTQgK3NvdXRoICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo1NTUxXCI6Jytwcm9qPXV0bSArem9uZT01NSArc291dGggK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjU1NTJcIjonK3Byb2o9dXRtICt6b25lPTU2ICtzb3V0aCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NTU1OVwiOicrcHJvaj1sY2MgK2xhdF8xPTE2LjgxNjY2NjY2NjY2NjY3ICtsYXRfMD0xNi44MTY2NjY2NjY2NjY2NyArbG9uXzA9LTkwLjMzMzMzMzMzMzMzMzMzICtrXzA9MC45OTk5MjIyNiAreF8wPTUwMDAwMCAreV8wPTI5MjIwOS41NzkgK2VsbHBzPWNscms2NiArdG93Z3M4ND0yMTMuMTEsOS4zNywtNzQuOTUsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NTU2MlwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MjEgK2s9MSAreF8wPTQ1MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yNSwtMTQxLC03OC41LC0wLDAuMzUsMC43MzYsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NTU2M1wiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MjcgK2s9MSAreF8wPTU1MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yNSwtMTQxLC03OC41LC0wLDAuMzUsMC43MzYsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NTU2NFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MzMgK2s9MSAreF8wPTY1MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yNSwtMTQxLC03OC41LC0wLDAuMzUsMC43MzYsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NTU2NVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MzkgK2s9MSAreF8wPTc1MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yNSwtMTQxLC03OC41LC0wLDAuMzUsMC43MzYsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NTU2NlwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MjEgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTI1LC0xNDEsLTc4LjUsLTAsMC4zNSwwLjczNiwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo1NTY3XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0yNyAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjUsLTE0MSwtNzguNSwtMCwwLjM1LDAuNzM2LDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjU1NjhcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTMzICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yNSwtMTQxLC03OC41LC0wLDAuMzUsMC43MzYsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NTU2OVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MzkgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTI1LC0xNDEsLTc4LjUsLTAsMC4zNSwwLjczNiwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo1NTcwXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0yMSAraz0xICt4XzA9NzUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTI1LC0xNDEsLTc4LjUsLTAsMC4zNSwwLjczNiwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo1NTcxXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0yNCAraz0xICt4XzA9ODUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTI1LC0xNDEsLTc4LjUsLTAsMC4zNSwwLjczNiwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo1NTcyXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0yNyAraz0xICt4XzA9OTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTI1LC0xNDEsLTc4LjUsLTAsMC4zNSwwLjczNiwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo1NTczXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0zMCAraz0xICt4XzA9MTA1MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yNSwtMTQxLC03OC41LC0wLDAuMzUsMC43MzYsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NTU3NFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MzMgK2s9MSAreF8wPTExNTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjUsLTE0MSwtNzguNSwtMCwwLjM1LDAuNzM2LDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjU1NzVcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTM2ICtrPTEgK3hfMD0xMjUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTI1LC0xNDEsLTc4LjUsLTAsMC4zNSwwLjczNiwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo1NTc2XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0zOSAraz0xICt4XzA9MTM1MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yNSwtMTQxLC03OC41LC0wLDAuMzUsMC43MzYsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NTU3N1wiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MjEgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTI1LC0xNDEsLTc4LjUsLTAsMC4zNSwwLjczNiwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo1NTc4XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0yNCAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjUsLTE0MSwtNzguNSwtMCwwLjM1LDAuNzM2LDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjU1NzlcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTI3ICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yNSwtMTQxLC03OC41LC0wLDAuMzUsMC43MzYsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NTU4MFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MzAgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTI1LC0xNDEsLTc4LjUsLTAsMC4zNSwwLjczNiwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo1NTgxXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0zMyAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjUsLTE0MSwtNzguNSwtMCwwLjM1LDAuNzM2LDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjU1ODJcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTM2ICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yNSwtMTQxLC03OC41LC0wLDAuMzUsMC43MzYsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NTU4M1wiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MzkgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTI1LC0xNDEsLTc4LjUsLTAsMC4zNSwwLjczNiwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo1NTg4XCI6Jytwcm9qPXN0ZXJlYSArbGF0XzA9NDYuNSArbG9uXzA9LTY2LjUgK2s9MC45OTk5MTIgK3hfMD0zMDQ4MDAgK3lfMD0zMDQ4MDAgK2RhdHVtPU5BRDI3ICt1bml0cz1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NTU4OVwiOicrcHJvaj10bWVyYyArbGF0XzA9MTcuMDYxMjQxOTQ0NDQ0NDQgK2xvbl8wPS04OC42MzE4NTc1ICtrPTEgK3hfMD02NjIyMC4wMjgzMzA4Mjc2MSAreV8wPTEzNTc3OS41MDk5ODg1Mjk5ICthPTYzNzgyOTMuNjQ1MjA4NzU5ICtiPTYzNTY2MTcuOTg3Njc5ODM4ICt0b19tZXRlcj0wLjMwNDc5NzI2NTQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjU1OTZcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTExLjMzMzMzMzMzMzMzMzMzICtrPTEgK3hfMD0xMDAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NTYyM1wiOicrcHJvaj10bWVyYyArbGF0XzA9NDEuNSArbG9uXzA9LTgzLjY2NjY2NjY2NjY2NjY3ICtrPTAuOTk5OTQyODU3ICt4XzA9MTUyNDAwLjMwNDgwMDYwOTYgK3lfMD0wICtkYXR1bT1OQUQyNyArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjU2MjRcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTQxLjUgK2xvbl8wPS04NS43NSAraz0wLjk5OTkwOTA5MSAreF8wPTE1MjQwMC4zMDQ4MDA2MDk2ICt5XzA9MCArZGF0dW09TkFEMjcgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzo1NjI1XCI6Jytwcm9qPXRtZXJjICtsYXRfMD00MS41ICtsb25fMD0tODguNzUgK2s9MC45OTk5MDkwOTEgK3hfMD0xNTI0MDAuMzA0ODAwNjA5NiAreV8wPTAgK2RhdHVtPU5BRDI3ICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NTYyN1wiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9NiAraz0wLjk5OTYgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1pbnRsICt0b3dnczg0PS04NywtOTgsLTEyMSwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo1NjI5XCI6Jytwcm9qPXV0bSArem9uZT0zOCArc291dGggK2VsbHBzPVdHUzg0ICt0b3dnczg0PTAsMCwwLC0wLC0wLC0wLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjU2MzFcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTkgK2s9MSAreF8wPTI1MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0zMy40LC0xNDYuNiwtNzYuMywtMC4zNTksLTAuMDUzLDAuODQ0LC0wLjg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo1NjMyXCI6Jytwcm9qPWxjYyArbGF0XzE9MzUgK2xhdF8yPTY1ICtsYXRfMD01MiArbG9uXzA9MTAgK3hfMD00MDAwMDAwICt5XzA9MjgwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NTYzM1wiOicrcHJvaj1sYWVhICtsYXRfMD01MiArbG9uXzA9MTAgK3hfMD00MzIxMDAwICt5XzA9MzIxMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NTYzNFwiOicrcHJvaj1sY2MgK2xhdF8xPTM1ICtsYXRfMj02NSArbGF0XzA9NTIgK2xvbl8wPTEwICt4XzA9NDAwMDAwMCAreV8wPTI4MDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjU2MzVcIjonK3Byb2o9bGFlYSArbGF0XzA9NTIgK2xvbl8wPTEwICt4XzA9NDMyMTAwMCAreV8wPTMyMTAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjU2MzZcIjonK3Byb2o9bGFlYSArbGF0XzA9NTIgK2xvbl8wPTEwICt4XzA9NDMyMTAwMCAreV8wPTMyMTAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjU2MzdcIjonK3Byb2o9bGNjICtsYXRfMT0zNSArbGF0XzI9NjUgK2xhdF8wPTUyICtsb25fMD0xMCAreF8wPTQwMDAwMDAgK3lfMD0yODAwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo1NjM4XCI6Jytwcm9qPWxhZWEgK2xhdF8wPTUyICtsb25fMD0xMCAreF8wPTQzMjEwMDAgK3lfMD0zMjEwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo1NjM5XCI6Jytwcm9qPWxjYyArbGF0XzE9MzUgK2xhdF8yPTY1ICtsYXRfMD01MiArbG9uXzA9MTAgK3hfMD00MDAwMDAwICt5XzA9MjgwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NTY0MVwiOicrcHJvaj1tZXJjICtsb25fMD0tNDMgK2xhdF90cz0tMiAreF8wPTUwMDAwMDAgK3lfMD0xMDAwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NTY0M1wiOicrcHJvaj1sY2MgK2xhdF8xPTUyLjY2NjY2NjY2NjY2NjY2ICtsYXRfMj01NC4zMzMzMzMzMzMzMzMzNCArbGF0XzA9NDggK2xvbl8wPTEwICt4XzA9ODE1MDAwICt5XzA9MCArZWxscHM9aW50bCArdG93Z3M4ND0tODcsLTk4LC0xMjEsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NTY0NFwiOicrcHJvaj11dG0gK3pvbmU9MzkgK3NvdXRoICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo1NjQ2XCI6Jytwcm9qPXRtZXJjICtsYXRfMD00Mi41ICtsb25fMD0tNzIuNSAraz0wLjk5OTk2NDI4NiAreF8wPTUwMDAwMC4wMDAwMTAxNiAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzo1NjQ5XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0zICtrPTAuOTk5NiAreF8wPTMxNTAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NTY1MFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTUgK2s9MC45OTk2ICt4XzA9MzM1MDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo1NjUxXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0zICtrPTAuOTk5NiAreF8wPTMxNTAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NTY1MlwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9OSAraz0wLjk5OTYgK3hfMD0zMjUwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjU2NTNcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTE1ICtrPTAuOTk5NiAreF8wPTMzNTAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NTY1NFwiOicrcHJvaj10bWVyYyArbGF0XzA9NDIuNSArbG9uXzA9LTcyLjUgK2s9MC45OTk5NjQyODYgK3hfMD01MDAwMDAuMDAwMDEwMTYgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NTY1NVwiOicrcHJvaj10bWVyYyArbGF0XzA9NDIuNSArbG9uXzA9LTcyLjUgK2s9MC45OTk5NjQyODYgK3hfMD01MDAwMDAuMDAwMDEwMTYgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6NTY1OVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9OSAraz0wLjk5OTYgK3hfMD01MDAwNTMgK3lfMD0tMzk5OTgyMCArZWxscHM9aW50bCArdG93Z3M4ND0tMTA0LjEsLTQ5LjEsLTkuOSwwLjk3MSwtMi45MTcsMC43MTQsLTExLjY4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo1NjYzXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xNSAraz0xICt4XzA9MzUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTMzLjQsLTE0Ni42LC03Ni4zLC0wLjM1OSwtMC4wNTMsMC44NDQsLTAuODQgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjU2NjRcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTkgK2s9MSAreF8wPTI1MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yNiwtMTIxLC03OCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo1NjY1XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xNSAraz0xICt4XzA9MzUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTI2LC0xMjEsLTc4LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjU2NjZcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTkgK2s9MSAreF8wPTM1MDAwMDAgK3lfMD0wICtlbGxwcz1iZXNzZWwgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjU2NjdcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTEyICtrPTEgK3hfMD00NTAwMDAwICt5XzA9MCArZWxscHM9YmVzc2VsICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo1NjY4XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMiAraz0xICt4XzA9NDUwMDAwMCAreV8wPTAgK2VsbHBzPWJlc3NlbCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NTY2OVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTUgK2s9MSAreF8wPTU1MDAwMDAgK3lfMD0wICtlbGxwcz1iZXNzZWwgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjU2NzBcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTkgK2s9MSAreF8wPTM1MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0zMy40LC0xNDYuNiwtNzYuMywtMC4zNTksLTAuMDUzLDAuODQ0LC0wLjg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo1NjcxXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMiAraz0xICt4XzA9NDUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTMzLjQsLTE0Ni42LC03Ni4zLC0wLjM1OSwtMC4wNTMsMC44NDQsLTAuODQgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjU2NzJcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTE1ICtrPTEgK3hfMD01NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MzMuNCwtMTQ2LjYsLTc2LjMsLTAuMzU5LC0wLjA1MywwLjg0NCwtMC44NCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NTY3M1wiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9OSAraz0xICt4XzA9MzUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTI2LC0xMjEsLTc4LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjU2NzRcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTEyICtrPTEgK3hfMD00NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjYsLTEyMSwtNzgsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NTY3NVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTUgK2s9MSAreF8wPTU1MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yNiwtMTIxLC03OCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo1Njc2XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD02ICtrPTEgK3hfMD0yNTAwMDAwICt5XzA9MCArZWxscHM9YmVzc2VsICt0b3dnczg0PTU5OC4xLDczLjcsNDE4LjIsMC4yMDIsMC4wNDUsLTIuNDU1LDYuNyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NTY3N1wiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9OSAraz0xICt4XzA9MzUwMDAwMCAreV8wPTAgK2VsbHBzPWJlc3NlbCArdG93Z3M4ND01OTguMSw3My43LDQxOC4yLDAuMjAyLDAuMDQ1LC0yLjQ1NSw2LjcgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjU2NzhcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTEyICtrPTEgK3hfMD00NTAwMDAwICt5XzA9MCArZWxscHM9YmVzc2VsICt0b3dnczg0PTU5OC4xLDczLjcsNDE4LjIsMC4yMDIsMC4wNDUsLTIuNDU1LDYuNyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NTY3OVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTUgK2s9MSAreF8wPTU1MDAwMDAgK3lfMD0wICtlbGxwcz1iZXNzZWwgK3Rvd2dzODQ9NTk4LjEsNzMuNyw0MTguMiwwLjIwMiwwLjA0NSwtMi40NTUsNi43ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo1NjgwXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0zICtrPTEgK3hfMD0xNTAwMDAwICt5XzA9MCArZWxscHM9YmVzc2VsICt0b3dnczg0PTU5OC4xLDczLjcsNDE4LjIsMC4yMDIsMC4wNDUsLTIuNDU1LDYuNyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NTY4MlwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9NiAraz0xICt4XzA9MjUwMDAwMCAreV8wPTAgK2VsbHBzPWJlc3NlbCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NTY4M1wiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9OSAraz0xICt4XzA9MzUwMDAwMCAreV8wPTAgK2VsbHBzPWJlc3NlbCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NTY4NFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTIgK2s9MSAreF8wPTQ1MDAwMDAgK3lfMD0wICtlbGxwcz1iZXNzZWwgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjU2ODVcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTE1ICtrPTEgK3hfMD01NTAwMDAwICt5XzA9MCArZWxscHM9YmVzc2VsICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo1NzAwXCI6Jytwcm9qPXV0bSArem9uZT0xICtzb3V0aCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NTgyNVwiOicrcHJvaj10bWVyYyArbGF0XzA9LTM1LjMxNzczNjI3Nzc3Nzc4ICtsb25fMD0xNDkuMDA5Mjk0ODMwNTU1NSAraz0xLjAwMDA4NiAreF8wPTIwMDAwMCAreV8wPTYwMDAwMCArZWxscHM9YXVzdF9TQSArdG93Z3M4ND0tMTE3LjgwOCwtNTEuNTM2LDEzNy43ODQsMC4zMDMsMC40NDYsMC4yMzQsLTAuMjkgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjU4MzZcIjonK3Byb2o9dXRtICt6b25lPTM3ICtlbGxwcz1XR1M4NCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo1ODM3XCI6Jytwcm9qPXV0bSArem9uZT00MCArZWxscHM9V0dTODQgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NTgzOVwiOicrcHJvaj11dG0gK3pvbmU9MTcgK3NvdXRoICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo1ODQyXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMiAraz0wLjk5OTYgK3hfMD01MDAwMDAgK3lfMD0xMDAwMDAwMCArZGF0dW09V0dTODQgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjU4NDRcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTMwICtrPTAuOTk5OSAreF8wPTUwMDAwMCAreV8wPTEwMDAwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo1ODU4XCI6Jytwcm9qPXV0bSArem9uZT0yMiArc291dGggK2VsbHBzPWF1c3RfU0EgK3Rvd2dzODQ9LTY3LjM1LDMuODgsLTM4LjIyLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjU4NzVcIjonK3Byb2o9dXRtICt6b25lPTE4ICtzb3V0aCArZWxscHM9YXVzdF9TQSArdG93Z3M4ND0tNjcuMzUsMy44OCwtMzguMjIsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NTg3NlwiOicrcHJvaj11dG0gK3pvbmU9MTkgK3NvdXRoICtlbGxwcz1hdXN0X1NBICt0b3dnczg0PS02Ny4zNSwzLjg4LC0zOC4yMiwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo1ODc3XCI6Jytwcm9qPXV0bSArem9uZT0yMCArc291dGggK2VsbHBzPWF1c3RfU0EgK3Rvd2dzODQ9LTY3LjM1LDMuODgsLTM4LjIyLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjU4NzlcIjonK3Byb2o9dXRtICt6b25lPTM4ICtzb3V0aCArZWxscHM9aW50bCArdG93Z3M4ND0tMzgxLjc4OCwtNTcuNTAxLC0yNTYuNjczLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjU4ODBcIjonK3Byb2o9cG9seSArbGF0XzA9MCArbG9uXzA9LTU0ICt4XzA9NTAwMDAwMCAreV8wPTEwMDAwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo1ODg3XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0tMTc3ICtrPTAuOTk5NiAreF8wPTE1MDAwMDAgK3lfMD01MDAwMDAwICtlbGxwcz1HUlM4MCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NTg5MFwiOicrcHJvaj1zdGVyZSArbGF0XzA9OTAgK2xhdF90cz03MCArbG9uXzA9OTAgK2s9MSAreF8wPTAgK3lfMD0wICthPTYzNzgyNzMgK2I9NjM1Njg4OS40NDkgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjU5MjFcIjonK3Byb2o9bGNjICtsYXRfMT04NSArbGF0XzI9NzcgK2xhdF8wPTgxLjMxNzIyNjAwMDAwMDAxICtsb25fMD0tMTExICt4XzA9MCAreV8wPTAgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo1OTIyXCI6Jytwcm9qPWxjYyArbGF0XzE9ODUgK2xhdF8yPTc3ICtsYXRfMD04MS4zMTcyMjYwMDAwMDAwMSArbG9uXzA9LTM5ICt4XzA9MCAreV8wPTAgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo1OTIzXCI6Jytwcm9qPWxjYyArbGF0XzE9ODUgK2xhdF8yPTc3ICtsYXRfMD04MS4zMTcyMjYwMDAwMDAwMSArbG9uXzA9MzMgK3hfMD0wICt5XzA9MCArZGF0dW09V0dTODQgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjU5MjRcIjonK3Byb2o9bGNjICtsYXRfMT04NSArbGF0XzI9NzcgK2xhdF8wPTgxLjMxNzIyNjAwMDAwMDAxICtsb25fMD0xMDUgK3hfMD0wICt5XzA9MCArZGF0dW09V0dTODQgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjU5MjVcIjonK3Byb2o9bGNjICtsYXRfMT04NSArbGF0XzI9NzcgK2xhdF8wPTgxLjMxNzIyNjAwMDAwMDAxICtsb25fMD0xNzcgK3hfMD0wICt5XzA9MCArZGF0dW09V0dTODQgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjU5MjZcIjonK3Byb2o9bGNjICtsYXRfMT03NyArbGF0XzI9NjkgK2xhdF8wPTczLjE1NTc0MDg2MTExMTExICtsb25fMD0tMTExICt4XzA9MCAreV8wPTAgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo1OTI3XCI6Jytwcm9qPWxjYyArbGF0XzE9NzcgK2xhdF8yPTY5ICtsYXRfMD03My4xNTU3NDA4NjExMTExMSArbG9uXzA9LTM5ICt4XzA9MCAreV8wPTAgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo1OTI4XCI6Jytwcm9qPWxjYyArbGF0XzE9NzcgK2xhdF8yPTY5ICtsYXRfMD03My4xNTU3NDA4NjExMTExMSArbG9uXzA9MzMgK3hfMD0wICt5XzA9MCArZGF0dW09V0dTODQgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjU5MjlcIjonK3Byb2o9bGNjICtsYXRfMT03NyArbGF0XzI9NjkgK2xhdF8wPTczLjE1NTc0MDg2MTExMTExICtsb25fMD0xMDUgK3hfMD0wICt5XzA9MCArZGF0dW09V0dTODQgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjU5MzBcIjonK3Byb2o9bGNjICtsYXRfMT03NyArbGF0XzI9NjkgK2xhdF8wPTczLjE1NTc0MDg2MTExMTExICtsb25fMD0xNzcgK3hfMD0wICt5XzA9MCArZGF0dW09V0dTODQgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjU5MzFcIjonK3Byb2o9bGNjICtsYXRfMT02OSArbGF0XzI9NjEgK2xhdF8wPTY1LjEwMTI3MDg4ODg4ODg4ICtsb25fMD0tMTExICt4XzA9MCAreV8wPTAgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo1OTMyXCI6Jytwcm9qPWxjYyArbGF0XzE9NjkgK2xhdF8yPTYxICtsYXRfMD02NS4xMDEyNzA4ODg4ODg4OCArbG9uXzA9LTM5ICt4XzA9MCAreV8wPTAgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo1OTMzXCI6Jytwcm9qPWxjYyArbGF0XzE9NjkgK2xhdF8yPTYxICtsYXRfMD02NS4xMDEyNzA4ODg4ODg4OCArbG9uXzA9MzMgK3hfMD0wICt5XzA9MCArZGF0dW09V0dTODQgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjU5MzRcIjonK3Byb2o9bGNjICtsYXRfMT02OSArbGF0XzI9NjEgK2xhdF8wPTY1LjEwMTI3MDg4ODg4ODg4ICtsb25fMD0xMDUgK3hfMD0wICt5XzA9MCArZGF0dW09V0dTODQgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjU5MzVcIjonK3Byb2o9bGNjICtsYXRfMT02OSArbGF0XzI9NjEgK2xhdF8wPTY1LjEwMTI3MDg4ODg4ODg4ICtsb25fMD0xNzcgK3hfMD0wICt5XzA9MCArZGF0dW09V0dTODQgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjU5MzZcIjonK3Byb2o9c3RlcmUgK2xhdF8wPTkwICtsYXRfdHM9OTAgK2xvbl8wPS0xNTAgK2s9MC45OTQgK3hfMD0yMDAwMDAwICt5XzA9MjAwMDAwMCArZGF0dW09V0dTODQgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjU5MzdcIjonK3Byb2o9c3RlcmUgK2xhdF8wPTkwICtsYXRfdHM9OTAgK2xvbl8wPS0xMDAgK2s9MC45OTQgK3hfMD0yMDAwMDAwICt5XzA9MjAwMDAwMCArZGF0dW09V0dTODQgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjU5MzhcIjonK3Byb2o9c3RlcmUgK2xhdF8wPTkwICtsYXRfdHM9OTAgK2xvbl8wPS0zMyAraz0wLjk5NCAreF8wPTIwMDAwMDAgK3lfMD0yMDAwMDAwICtkYXR1bT1XR1M4NCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NTkzOVwiOicrcHJvaj1zdGVyZSArbGF0XzA9OTAgK2xhdF90cz05MCArbG9uXzA9MTggK2s9MC45OTQgK3hfMD0yMDAwMDAwICt5XzA9MjAwMDAwMCArZGF0dW09V0dTODQgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjU5NDBcIjonK3Byb2o9c3RlcmUgK2xhdF8wPTkwICtsYXRfdHM9OTAgK2xvbl8wPTEwNSAraz0wLjk5NCAreF8wPTIwMDAwMDAgK3lfMD0yMDAwMDAwICtkYXR1bT1XR1M4NCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NjA1MFwiOicrcHJvaj1sY2MgK2xhdF8xPTg3ICtsYXRfMj04My42NjY2NjY2NjY2NjY2NyArbGF0XzA9ODUuNDM3MTE4MzMzMzMzMzMgK2xvbl8wPS0zMCAreF8wPTI1NTAwMDAwICt5XzA9MTUwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NjA1MVwiOicrcHJvaj1sY2MgK2xhdF8xPTgzLjY2NjY2NjY2NjY2NjY3ICtsYXRfMj04MC4zMzMzMzMzMzMzMzMzMyArbGF0XzA9ODIuMDU4NDI0ODg4ODg4ODggK2xvbl8wPS01MiAreF8wPTE4NTAwMDAwICt5XzA9MjUwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NjA1MlwiOicrcHJvaj1sY2MgK2xhdF8xPTgzLjY2NjY2NjY2NjY2NjY3ICtsYXRfMj04MC4zMzMzMzMzMzMzMzMzMyArbGF0XzA9ODIuMDU4NDI0ODg4ODg4ODggK2xvbl8wPS0xMiAreF8wPTIwNTAwMDAwICt5XzA9MjUwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NjA1M1wiOicrcHJvaj1sY2MgK2xhdF8xPTgwLjMzMzMzMzMzMzMzMzMzICtsYXRfMj03NyArbGF0XzA9NzguNzA3MzM3NTI3Nzc3NzggK2xvbl8wPS02OSAreF8wPTI5NTAwMDAwICt5XzA9MzUwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NjA1NFwiOicrcHJvaj1sY2MgK2xhdF8xPTgwLjMzMzMzMzMzMzMzMzMzICtsYXRfMj03NyArbGF0XzA9NzguNzA3MzM3NTI3Nzc3NzggK2xvbl8wPS0zOSAreF8wPTMxNTAwMDAwICt5XzA9MzUwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NjA1NVwiOicrcHJvaj1sY2MgK2xhdF8xPTgwLjMzMzMzMzMzMzMzMzMzICtsYXRfMj03NyArbGF0XzA9NzguNzA3MzM3NTI3Nzc3NzggK2xvbl8wPS0xMCAreF8wPTMzNTAwMDAwICt5XzA9MzUwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NjA1NlwiOicrcHJvaj1sY2MgK2xhdF8xPTc3ICtsYXRfMj03My42NjY2NjY2NjY2NjY2NyArbGF0XzA9NzUuMzY0NDAzMzA1NTU1NTYgK2xvbl8wPS02NCAreF8wPTIwNTAwMDAwICt5XzA9NDUwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NjA1N1wiOicrcHJvaj1sY2MgK2xhdF8xPTc3ICtsYXRfMj03My42NjY2NjY2NjY2NjY2NyArbGF0XzA9NzUuMzY0NDAzMzA1NTU1NTYgK2xvbl8wPS0zOSAreF8wPTIyNTAwMDAwICt5XzA9NDUwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NjA1OFwiOicrcHJvaj1sY2MgK2xhdF8xPTc3ICtsYXRfMj03My42NjY2NjY2NjY2NjY2NyArbGF0XzA9NzUuMzY0NDAzMzA1NTU1NTYgK2xvbl8wPS0xNCAreF8wPTI0NTAwMDAwICt5XzA9NDUwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NjA1OVwiOicrcHJvaj1sY2MgK2xhdF8xPTczLjY2NjY2NjY2NjY2NjY3ICtsYXRfMj03MC4zMzMzMzMzMzMzMzMzMyArbGF0XzA9NzIuMDI1MDA5MTk0NDQ0NDUgK2xvbl8wPS02MiAreF8wPTQxNTAwMDAwICt5XzA9NTUwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NjA2MFwiOicrcHJvaj1sY2MgK2xhdF8xPTczLjY2NjY2NjY2NjY2NjY3ICtsYXRfMj03MC4zMzMzMzMzMzMzMzMzMyArbGF0XzA9NzIuMDI1MDA5MTk0NDQ0NDUgK2xvbl8wPS00MiAreF8wPTQzNTAwMDAwICt5XzA9NTUwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NjA2MVwiOicrcHJvaj1sY2MgK2xhdF8xPTczLjY2NjY2NjY2NjY2NjY3ICtsYXRfMj03MC4zMzMzMzMzMzMzMzMzMyArbGF0XzA9NzIuMDI1MDA5MTk0NDQ0NDUgK2xvbl8wPS0yMiAreF8wPTQ1NTAwMDAwICt5XzA9NTUwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NjA2MlwiOicrcHJvaj1sY2MgK2xhdF8xPTcwLjMzMzMzMzMzMzMzMzMzICtsYXRfMj02NyArbGF0XzA9NjguNjg3NDc1NTU1NTU1NTcgK2xvbl8wPS01NiAreF8wPTI2NTAwMDAwICt5XzA9NjUwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NjA2M1wiOicrcHJvaj1sY2MgK2xhdF8xPTcwLjMzMzMzMzMzMzMzMzMzICtsYXRfMj02NyArbGF0XzA9NjguNjg3NDc1NTU1NTU1NTcgK2xvbl8wPS0zOCAreF8wPTI4NTAwMDAwICt5XzA9NjUwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NjA2NFwiOicrcHJvaj1sY2MgK2xhdF8xPTcwLjMzMzMzMzMzMzMzMzMzICtsYXRfMj02NyArbGF0XzA9NjguNjg3NDc1NTU1NTU1NTcgK2xvbl8wPS0yMCAreF8wPTMwNTAwMDAwICt5XzA9NjUwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NjA2NVwiOicrcHJvaj1sY2MgK2xhdF8xPTY3ICtsYXRfMj02My42NjY2NjY2NjY2NjY2NiArbGF0XzA9NjUuMzUxMDM5MzA1NTU1NTUgK2xvbl8wPS01MSAreF8wPTExNTAwMDAwICt5XzA9NzUwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NjA2NlwiOicrcHJvaj1sY2MgK2xhdF8xPTY3ICtsYXRfMj02My42NjY2NjY2NjY2NjY2NiArbGF0XzA9NjUuMzUxMDM5MzA1NTU1NTUgK2xvbl8wPS0zNCAreF8wPTEzNTAwMDAwICt5XzA9NzUwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NjA2N1wiOicrcHJvaj1sY2MgK2xhdF8xPTYzLjY2NjY2NjY2NjY2NjY2ICtsYXRfMj02MC4zMzMzMzMzMzMzMzMzNCArbGF0XzA9NjIuMDE1MzA2ODg4ODg4ODkgK2xvbl8wPS01MiAreF8wPTIwNTAwMDAwICt5XzA9ODUwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NjA2OFwiOicrcHJvaj1sY2MgK2xhdF8xPTYzLjY2NjY2NjY2NjY2NjY2ICtsYXRfMj02MC4zMzMzMzMzMzMzMzMzNCArbGF0XzA9NjIuMDE1MzA2ODg4ODg4ODkgK2xvbl8wPS0zNyAreF8wPTIyNTAwMDAwICt5XzA9ODUwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NjA2OVwiOicrcHJvaj1sY2MgK2xhdF8xPTgzLjY2NjY2NjY2NjY2NjY3ICtsYXRfMj04MC4zMzMzMzMzMzMzMzMzMyArbGF0XzA9ODIuMDU4NDI0ODg4ODg4ODggK2xvbl8wPTE2ICt4XzA9MjI1MDAwMDAgK3lfMD0yNTAwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo2MDcwXCI6Jytwcm9qPWxjYyArbGF0XzE9ODAuMzMzMzMzMzMzMzMzMzMgK2xhdF8yPTc3ICtsYXRfMD03OC43MDczMzc1Mjc3Nzc3OCArbG9uXzA9MjEgK3hfMD0xMTUwMDAwMCAreV8wPTM1MDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjYwNzFcIjonK3Byb2o9bGNjICtsYXRfMT03NyArbGF0XzI9NzMuNjY2NjY2NjY2NjY2NjcgK2xhdF8wPTc1LjM2NDQwMzMwNTU1NTU2ICtsb25fMD0xMCAreF8wPTI2NTAwMDAwICt5XzA9NDUwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NjA3MlwiOicrcHJvaj1sY2MgK2xhdF8xPTc3ICtsYXRfMj03My42NjY2NjY2NjY2NjY2NyArbGF0XzA9NzUuMzY0NDAzMzA1NTU1NTYgK2xvbl8wPTM0ICt4XzA9Mjg1MDAwMDAgK3lfMD00NTAwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo2MDczXCI6Jytwcm9qPWxjYyArbGF0XzE9NzMuNjY2NjY2NjY2NjY2NjcgK2xhdF8yPTcwLjMzMzMzMzMzMzMzMzMzICtsYXRfMD03Mi4wMjUwMDkxOTQ0NDQ0NSArbG9uXzA9MTQgK3hfMD0xMTUwMDAwMCAreV8wPTU1MDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjYwNzRcIjonK3Byb2o9bGNjICtsYXRfMT03My42NjY2NjY2NjY2NjY2NyArbGF0XzI9NzAuMzMzMzMzMzMzMzMzMzMgK2xhdF8wPTcyLjAyNTAwOTE5NDQ0NDQ1ICtsb25fMD0zNCAreF8wPTEzNTAwMDAwICt5XzA9NTUwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NjA3NVwiOicrcHJvaj1sY2MgK2xhdF8xPTgzLjY2NjY2NjY2NjY2NjY3ICtsYXRfMj04MC4zMzMzMzMzMzMzMzMzMyArbGF0XzA9ODIuMDU4NDI0ODg4ODg4ODggK2xvbl8wPTUzICt4XzA9MjQ1MDAwMDAgK3lfMD0yNTAwMDAwICtkYXR1bT1XR1M4NCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NjA3NlwiOicrcHJvaj1sY2MgK2xhdF8xPTgzLjY2NjY2NjY2NjY2NjY3ICtsYXRfMj04MC4zMzMzMzMzMzMzMzMzMyArbGF0XzA9ODIuMDU4NDI0ODg4ODg4ODggK2xvbl8wPTkzICt4XzA9MjY1MDAwMDAgK3lfMD0yNTAwMDAwICtkYXR1bT1XR1M4NCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NjA3N1wiOicrcHJvaj1sY2MgK2xhdF8xPTgwLjMzMzMzMzMzMzMzMzMzICtsYXRfMj03NyArbGF0XzA9NzguNzA3MzM3NTI3Nzc3NzggK2xvbl8wPTUyICt4XzA9MTM1MDAwMDAgK3lfMD0zNTAwMDAwICtkYXR1bT1XR1M4NCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NjA3OFwiOicrcHJvaj1sY2MgK2xhdF8xPTgwLjMzMzMzMzMzMzMzMzMzICtsYXRfMj03NyArbGF0XzA9NzguNzA3MzM3NTI3Nzc3NzggK2xvbl8wPTgzICt4XzA9MTU1MDAwMDAgK3lfMD0zNTAwMDAwICtkYXR1bT1XR1M4NCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NjA3OVwiOicrcHJvaj1sY2MgK2xhdF8xPTgwLjMzMzMzMzMzMzMzMzMzICtsYXRfMj03NyArbGF0XzA9NzguNzA3MzM3NTI3Nzc3NzggK2xvbl8wPTExNCAreF8wPTE3NTAwMDAwICt5XzA9MzUwMDAwMCArZGF0dW09V0dTODQgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjYwODBcIjonK3Byb2o9bGNjICtsYXRfMT04MC4zMzMzMzMzMzMzMzMzMyArbGF0XzI9NzcgK2xhdF8wPTc4LjcwNzMzNzUyNzc3Nzc4ICtsb25fMD0xNDUgK3hfMD0xOTUwMDAwMCAreV8wPTM1MDAwMDAgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo2MDgxXCI6Jytwcm9qPWxjYyArbGF0XzE9NzcgK2xhdF8yPTczLjY2NjY2NjY2NjY2NjY3ICtsYXRfMD03NS4zNjQ0MDMzMDU1NTU1NiArbG9uXzA9NTggK3hfMD0zMDUwMDAwMCAreV8wPTQ1MDAwMDAgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo2MDgyXCI6Jytwcm9qPWxjYyArbGF0XzE9NzcgK2xhdF8yPTczLjY2NjY2NjY2NjY2NjY3ICtsYXRfMD03NS4zNjQ0MDMzMDU1NTU1NiArbG9uXzA9ODIgK3hfMD0zMjUwMDAwMCAreV8wPTQ1MDAwMDAgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo2MDgzXCI6Jytwcm9qPWxjYyArbGF0XzE9NzcgK2xhdF8yPTczLjY2NjY2NjY2NjY2NjY3ICtsYXRfMD03NS4zNjQ0MDMzMDU1NTU1NiArbG9uXzA9MTA2ICt4XzA9MzQ1MDAwMDAgK3lfMD00NTAwMDAwICtkYXR1bT1XR1M4NCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NjA4NFwiOicrcHJvaj1sY2MgK2xhdF8xPTc3ICtsYXRfMj03My42NjY2NjY2NjY2NjY2NyArbGF0XzA9NzUuMzY0NDAzMzA1NTU1NTYgK2xvbl8wPTEzMCAreF8wPTM2NTAwMDAwICt5XzA9NDUwMDAwMCArZGF0dW09V0dTODQgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjYwODVcIjonK3Byb2o9bGNjICtsYXRfMT03NyArbGF0XzI9NzMuNjY2NjY2NjY2NjY2NjcgK2xhdF8wPTc1LjM2NDQwMzMwNTU1NTU2ICtsb25fMD0xNTQgK3hfMD0zODUwMDAwMCAreV8wPTQ1MDAwMDAgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo2MDg2XCI6Jytwcm9qPWxjYyArbGF0XzE9NzcgK2xhdF8yPTczLjY2NjY2NjY2NjY2NjY3ICtsYXRfMD03NS4zNjQ0MDMzMDU1NTU1NiArbG9uXzA9MTc5ICt4XzA9NDA1MDAwMDAgK3lfMD00NTAwMDAwICtkYXR1bT1XR1M4NCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NjA4N1wiOicrcHJvaj1sY2MgK2xhdF8xPTczLjY2NjY2NjY2NjY2NjY3ICtsYXRfMj03MC4zMzMzMzMzMzMzMzMzMyArbGF0XzA9NzIuMDI1MDA5MTk0NDQ0NDUgK2xvbl8wPTU0ICt4XzA9MTU1MDAwMDAgK3lfMD01NTAwMDAwICtkYXR1bT1XR1M4NCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NjA4OFwiOicrcHJvaj1sY2MgK2xhdF8xPTczLjY2NjY2NjY2NjY2NjY3ICtsYXRfMj03MC4zMzMzMzMzMzMzMzMzMyArbGF0XzA9NzIuMDI1MDA5MTk0NDQ0NDUgK2xvbl8wPTc0ICt4XzA9MTc1MDAwMDAgK3lfMD01NTAwMDAwICtkYXR1bT1XR1M4NCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NjA4OVwiOicrcHJvaj1sY2MgK2xhdF8xPTczLjY2NjY2NjY2NjY2NjY3ICtsYXRfMj03MC4zMzMzMzMzMzMzMzMzMyArbGF0XzA9NzIuMDI1MDA5MTk0NDQ0NDUgK2xvbl8wPTk1ICt4XzA9MTk1MDAwMDAgK3lfMD01NTAwMDAwICtkYXR1bT1XR1M4NCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NjA5MFwiOicrcHJvaj1sY2MgK2xhdF8xPTczLjY2NjY2NjY2NjY2NjY3ICtsYXRfMj03MC4zMzMzMzMzMzMzMzMzMyArbGF0XzA9NzIuMDI1MDA5MTk0NDQ0NDUgK2xvbl8wPTExNiAreF8wPTIxNTAwMDAwICt5XzA9NTUwMDAwMCArZGF0dW09V0dTODQgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjYwOTFcIjonK3Byb2o9bGNjICtsYXRfMT03My42NjY2NjY2NjY2NjY2NyArbGF0XzI9NzAuMzMzMzMzMzMzMzMzMzMgK2xhdF8wPTcyLjAyNTAwOTE5NDQ0NDQ1ICtsb25fMD0xMzcgK3hfMD0yMzUwMDAwMCAreV8wPTU1MDAwMDAgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo2MDkyXCI6Jytwcm9qPWxjYyArbGF0XzE9NzMuNjY2NjY2NjY2NjY2NjcgK2xhdF8yPTcwLjMzMzMzMzMzMzMzMzMzICtsYXRfMD03Mi4wMjUwMDkxOTQ0NDQ0NSArbG9uXzA9MTU4ICt4XzA9MjU1MDAwMDAgK3lfMD01NTAwMDAwICtkYXR1bT1XR1M4NCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NjA5M1wiOicrcHJvaj1sY2MgK2xhdF8xPTczLjY2NjY2NjY2NjY2NjY3ICtsYXRfMj03MC4zMzMzMzMzMzMzMzMzMyArbGF0XzA9NzIuMDI1MDA5MTk0NDQ0NDUgK2xvbl8wPTE3OSAreF8wPTI3NTAwMDAwICt5XzA9NTUwMDAwMCArZGF0dW09V0dTODQgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjYwOTRcIjonK3Byb2o9bGNjICtsYXRfMT03My42NjY2NjY2NjY2NjY2NyArbGF0XzI9NzAuMzMzMzMzMzMzMzMzMzMgK2xhdF8wPTcyLjAyNTAwOTE5NDQ0NDQ1ICtsb25fMD0tMTYzICt4XzA9Mjk1MDAwMDAgK3lfMD01NTAwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo2MDk1XCI6Jytwcm9qPWxjYyArbGF0XzE9NzMuNjY2NjY2NjY2NjY2NjcgK2xhdF8yPTcwLjMzMzMzMzMzMzMzMzMzICtsYXRfMD03Mi4wMjUwMDkxOTQ0NDQ0NSArbG9uXzA9LTE0NyAreF8wPTMxNTAwMDAwICt5XzA9NTUwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NjA5NlwiOicrcHJvaj1sY2MgK2xhdF8xPTcwLjMzMzMzMzMzMzMzMzMzICtsYXRfMj02NyArbGF0XzA9NjguNjg3NDc1NTU1NTU1NTcgK2xvbl8wPS0xNjUgK3hfMD0xNDUwMDAwMCAreV8wPTY1MDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjYwOTdcIjonK3Byb2o9bGNjICtsYXRfMT03MC4zMzMzMzMzMzMzMzMzMyArbGF0XzI9NjcgK2xhdF8wPTY4LjY4NzQ3NTU1NTU1NTU3ICtsb25fMD0tMTQ3ICt4XzA9MTY1MDAwMDAgK3lfMD02NTAwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo2MDk4XCI6Jytwcm9qPWxjYyArbGF0XzE9ODcgK2xhdF8yPTgzLjY2NjY2NjY2NjY2NjY3ICtsYXRfMD04NS40MzcxMTgzMzMzMzMzMyArbG9uXzA9LTkwICt4XzA9MjM1MDAwMDAgK3lfMD0xNTAwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo2MDk5XCI6Jytwcm9qPWxjYyArbGF0XzE9ODMuNjY2NjY2NjY2NjY2NjcgK2xhdF8yPTgwLjMzMzMzMzMzMzMzMzMzICtsYXRfMD04Mi4wNTg0MjQ4ODg4ODg4OCArbG9uXzA9LTExNSAreF8wPTE0NTAwMDAwICt5XzA9MjUwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NjEwMFwiOicrcHJvaj1sY2MgK2xhdF8xPTgzLjY2NjY2NjY2NjY2NjY3ICtsYXRfMj04MC4zMzMzMzMzMzMzMzMzMyArbGF0XzA9ODIuMDU4NDI0ODg4ODg4ODggK2xvbl8wPS03NSAreF8wPTE2NTAwMDAwICt5XzA9MjUwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NjEwMVwiOicrcHJvaj1sY2MgK2xhdF8xPTgwLjMzMzMzMzMzMzMzMzMzICtsYXRfMj03NyArbGF0XzA9NzguNzA3MzM3NTI3Nzc3NzggK2xvbl8wPS0xMjkgK3hfMD0yNTUwMDAwMCAreV8wPTM1MDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjYxMDJcIjonK3Byb2o9bGNjICtsYXRfMT04MC4zMzMzMzMzMzMzMzMzMyArbGF0XzI9NzcgK2xhdF8wPTc4LjcwNzMzNzUyNzc3Nzc4ICtsb25fMD0tOTkgK3hfMD0yNzUwMDAwMCAreV8wPTM1MDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjYxMDNcIjonK3Byb2o9bGNjICtsYXRfMT04MC4zMzMzMzMzMzMzMzMzMyArbGF0XzI9NzcgK2xhdF8wPTc4LjcwNzMzNzUyNzc3Nzc4ICtsb25fMD0tNjkgK3hfMD0yOTUwMDAwMCAreV8wPTM1MDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjYxMDRcIjonK3Byb2o9bGNjICtsYXRfMT03NyArbGF0XzI9NzMuNjY2NjY2NjY2NjY2NjcgK2xhdF8wPTc1LjM2NDQwMzMwNTU1NTU2ICtsb25fMD0tMTI5ICt4XzA9MTQ1MDAwMDAgK3lfMD00NTAwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo2MTA1XCI6Jytwcm9qPWxjYyArbGF0XzE9NzcgK2xhdF8yPTczLjY2NjY2NjY2NjY2NjY3ICtsYXRfMD03NS4zNjQ0MDMzMDU1NTU1NiArbG9uXzA9LTEwNCAreF8wPTE2NTAwMDAwICt5XzA9NDUwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NjEwNlwiOicrcHJvaj1sY2MgK2xhdF8xPTc3ICtsYXRfMj03My42NjY2NjY2NjY2NjY2NyArbGF0XzA9NzUuMzY0NDAzMzA1NTU1NTYgK2xvbl8wPS03OSAreF8wPTE4NTAwMDAwICt5XzA9NDUwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NjEwN1wiOicrcHJvaj1sY2MgK2xhdF8xPTczLjY2NjY2NjY2NjY2NjY3ICtsYXRfMj03MC4zMzMzMzMzMzMzMzMzMyArbGF0XzA9NzIuMDI1MDA5MTk0NDQ0NDUgK2xvbl8wPS0xMzEgK3hfMD0zMzUwMDAwMCAreV8wPTU1MDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjYxMDhcIjonK3Byb2o9bGNjICtsYXRfMT03My42NjY2NjY2NjY2NjY2NyArbGF0XzI9NzAuMzMzMzMzMzMzMzMzMzMgK2xhdF8wPTcyLjAyNTAwOTE5NDQ0NDQ1ICtsb25fMD0tMTExICt4XzA9MzU1MDAwMDAgK3lfMD01NTAwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo2MTA5XCI6Jytwcm9qPWxjYyArbGF0XzE9NzMuNjY2NjY2NjY2NjY2NjcgK2xhdF8yPTcwLjMzMzMzMzMzMzMzMzMzICtsYXRfMD03Mi4wMjUwMDkxOTQ0NDQ0NSArbG9uXzA9LTkxICt4XzA9Mzc1MDAwMDAgK3lfMD01NTAwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo2MTEwXCI6Jytwcm9qPWxjYyArbGF0XzE9NzMuNjY2NjY2NjY2NjY2NjcgK2xhdF8yPTcwLjMzMzMzMzMzMzMzMzMzICtsYXRfMD03Mi4wMjUwMDkxOTQ0NDQ0NSArbG9uXzA9LTcxICt4XzA9Mzk1MDAwMDAgK3lfMD01NTAwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo2MTExXCI6Jytwcm9qPWxjYyArbGF0XzE9NzAuMzMzMzMzMzMzMzMzMzMgK2xhdF8yPTY3ICtsYXRfMD02OC42ODc0NzU1NTU1NTU1NyArbG9uXzA9LTEzMiAreF8wPTE4NTAwMDAwICt5XzA9NjUwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NjExMlwiOicrcHJvaj1sY2MgK2xhdF8xPTcwLjMzMzMzMzMzMzMzMzMzICtsYXRfMj02NyArbGF0XzA9NjguNjg3NDc1NTU1NTU1NTcgK2xvbl8wPS0xMTMgK3hfMD0yMDUwMDAwMCAreV8wPTY1MDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjYxMTNcIjonK3Byb2o9bGNjICtsYXRfMT03MC4zMzMzMzMzMzMzMzMzMyArbGF0XzI9NjcgK2xhdF8wPTY4LjY4NzQ3NTU1NTU1NTU3ICtsb25fMD0tOTQgK3hfMD0yMjUwMDAwMCAreV8wPTY1MDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjYxMTRcIjonK3Byb2o9bGNjICtsYXRfMT03MC4zMzMzMzMzMzMzMzMzMyArbGF0XzI9NjcgK2xhdF8wPTY4LjY4NzQ3NTU1NTU1NTU3ICtsb25fMD0tNzUgK3hfMD0yNDUwMDAwMCAreV8wPTY1MDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjYxMTVcIjonK3Byb2o9bGNjICtsYXRfMT04NyArbGF0XzI9ODMuNjY2NjY2NjY2NjY2NjcgK2xhdF8wPTg1LjQzNzExODMzMzMzMzMzICtsb25fMD0zMCAreF8wPTI3NTAwMDAwICt5XzA9MTUwMDAwMCArZGF0dW09V0dTODQgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjYxMTZcIjonK3Byb2o9bGNjICtsYXRfMT04NyArbGF0XzI9ODMuNjY2NjY2NjY2NjY2NjcgK2xhdF8wPTg1LjQzNzExODMzMzMzMzMzICtsb25fMD05MCAreF8wPTI5NTAwMDAwICt5XzA9MTUwMDAwMCArZGF0dW09V0dTODQgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjYxMTdcIjonK3Byb2o9bGNjICtsYXRfMT04NyArbGF0XzI9ODMuNjY2NjY2NjY2NjY2NjcgK2xhdF8wPTg1LjQzNzExODMzMzMzMzMzICtsb25fMD0xNTAgK3hfMD0zMTUwMDAwMCAreV8wPTE1MDAwMDAgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo2MTE4XCI6Jytwcm9qPWxjYyArbGF0XzE9ODcgK2xhdF8yPTgzLjY2NjY2NjY2NjY2NjY3ICtsYXRfMD04NS40MzcxMTgzMzMzMzMzMyArbG9uXzA9LTE1MCAreF8wPTIxNTAwMDAwICt5XzA9MTUwMDAwMCArZGF0dW09V0dTODQgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjYxMTlcIjonK3Byb2o9bGNjICtsYXRfMT04My42NjY2NjY2NjY2NjY2NyArbGF0XzI9ODAuMzMzMzMzMzMzMzMzMzMgK2xhdF8wPTgyLjA1ODQyNDg4ODg4ODg4ICtsb25fMD0xMzMgK3hfMD0yODUwMDAwMCAreV8wPTI1MDAwMDAgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo2MTIwXCI6Jytwcm9qPWxjYyArbGF0XzE9ODMuNjY2NjY2NjY2NjY2NjcgK2xhdF8yPTgwLjMzMzMzMzMzMzMzMzMzICtsYXRfMD04Mi4wNTg0MjQ4ODg4ODg4OCArbG9uXzA9MTY2ICt4XzA9MTA1MDAwMDAgK3lfMD0yNTAwMDAwICtkYXR1bT1XR1M4NCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NjEyMVwiOicrcHJvaj1sY2MgK2xhdF8xPTgzLjY2NjY2NjY2NjY2NjY3ICtsYXRfMj04MC4zMzMzMzMzMzMzMzMzMyArbGF0XzA9ODIuMDU4NDI0ODg4ODg4ODggK2xvbl8wPS0xNTQgK3hfMD0xMjUwMDAwMCAreV8wPTI1MDAwMDAgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo2MTIyXCI6Jytwcm9qPWxjYyArbGF0XzE9ODAuMzMzMzMzMzMzMzMzMzMgK2xhdF8yPTc3ICtsYXRfMD03OC43MDczMzc1Mjc3Nzc3OCArbG9uXzA9MTc2ICt4XzA9MjE1MDAwMDAgK3lfMD0zNTAwMDAwICtkYXR1bT1XR1M4NCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NjEyM1wiOicrcHJvaj1sY2MgK2xhdF8xPTgwLjMzMzMzMzMzMzMzMzMzICtsYXRfMj03NyArbGF0XzA9NzguNzA3MzM3NTI3Nzc3NzggK2xvbl8wPS0xNTMgK3hfMD0yMzUwMDAwMCAreV8wPTM1MDAwMDAgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzo2MTI0XCI6Jytwcm9qPWxjYyArbGF0XzE9NzcgK2xhdF8yPTczLjY2NjY2NjY2NjY2NjY3ICtsYXRfMD03NS4zNjQ0MDMzMDU1NTU1NiArbG9uXzA9LTE1NSAreF8wPTEyNTAwMDAwICt5XzA9NDUwMDAwMCArZGF0dW09V0dTODQgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjYxMjVcIjonK3Byb2o9bGNjICtsYXRfMT03My42NjY2NjY2NjY2NjY2NyArbGF0XzI9NzAuMzMzMzMzMzMzMzMzMzMgK2xhdF8wPTcyLjAyNTAwOTE5NDQ0NDQ1ICtsb25fMD0tNSAreF8wPTQ3NTAwMDAwICt5XzA9NTUwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6NjEyOFwiOicrcHJvaj11dG0gK3pvbmU9MTcgK2VsbHBzPWNscms2NiArdG93Z3M4ND0tMTc5LjQ4MywtNjkuMzc5LC0yNy41ODQsLTcuODYyLDguMTYzLDYuMDQyLC0xMy45MjUgK3VuaXRzPWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzo2MTI5XCI6Jytwcm9qPXV0bSArem9uZT0xNyArZWxscHM9Y2xyazY2ICt0b3dnczg0PTguODUzLC01Mi42NDQsMTgwLjMwNCwtMC4zOTMsLTIuMzIzLDIuOTYsLTI0LjA4MSArdW5pdHM9ZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjYxNDFcIjonK3Byb2o9bGNjICtsYXRfMT0xOS4zMzMzMzMzMzMzMzMzMyArbGF0XzI9MTkuNyArbGF0XzA9MTkuMzMzMzMzMzMzMzMzMzMgK2xvbl8wPTgwLjU2NjY2NjY2NjY2NjY2ICt4XzA9ODk5MTYwICt5XzA9NTc5MTIwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjAwMDRcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTIxICtrPTEgK3hfMD00NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjQuNDcsLTEzMC44OSwtODEuNTYsLTAsLTAsMC4xMywtMC4yMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjAwMDVcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTI3ICtrPTEgK3hfMD01NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjQuNDcsLTEzMC44OSwtODEuNTYsLTAsLTAsMC4xMywtMC4yMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjAwMDZcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTMzICtrPTEgK3hfMD02NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjQuNDcsLTEzMC44OSwtODEuNTYsLTAsLTAsMC4xMywtMC4yMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjAwMDdcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTM5ICtrPTEgK3hfMD03NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjQuNDcsLTEzMC44OSwtODEuNTYsLTAsLTAsMC4xMywtMC4yMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjAwMDhcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTQ1ICtrPTEgK3hfMD04NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjQuNDcsLTEzMC44OSwtODEuNTYsLTAsLTAsMC4xMywtMC4yMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjAwMDlcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTUxICtrPTEgK3hfMD05NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjQuNDcsLTEzMC44OSwtODEuNTYsLTAsLTAsMC4xMywtMC4yMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjAwMTBcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTU3ICtrPTEgK3hfMD0xMDUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTI0LjQ3LC0xMzAuODksLTgxLjU2LC0wLC0wLDAuMTMsLTAuMjIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIwMDExXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD02MyAraz0xICt4XzA9MTE1MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yNC40NywtMTMwLjg5LC04MS41NiwtMCwtMCwwLjEzLC0wLjIyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMDAxMlwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9NjkgK2s9MSAreF8wPTEyNTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjQuNDcsLTEzMC44OSwtODEuNTYsLTAsLTAsMC4xMywtMC4yMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjAwMTNcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTc1ICtrPTEgK3hfMD0xMzUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTI0LjQ3LC0xMzAuODksLTgxLjU2LC0wLC0wLDAuMTMsLTAuMjIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIwMDE0XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD04MSAraz0xICt4XzA9MTQ1MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yNC40NywtMTMwLjg5LC04MS41NiwtMCwtMCwwLjEzLC0wLjIyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMDAxNVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9ODcgK2s9MSAreF8wPTE1NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjQuNDcsLTEzMC44OSwtODEuNTYsLTAsLTAsMC4xMywtMC4yMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjAwMTZcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTkzICtrPTEgK3hfMD0xNjUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTI0LjQ3LC0xMzAuODksLTgxLjU2LC0wLC0wLDAuMTMsLTAuMjIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIwMDE3XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD05OSAraz0xICt4XzA9MTc1MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yNC40NywtMTMwLjg5LC04MS41NiwtMCwtMCwwLjEzLC0wLjIyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMDAxOFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTA1ICtrPTEgK3hfMD0xODUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTI0LjQ3LC0xMzAuODksLTgxLjU2LC0wLC0wLDAuMTMsLTAuMjIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIwMDE5XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMTEgK2s9MSAreF8wPTE5NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjQuNDcsLTEzMC44OSwtODEuNTYsLTAsLTAsMC4xMywtMC4yMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjAwMjBcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTExNyAraz0xICt4XzA9MjA1MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yNC40NywtMTMwLjg5LC04MS41NiwtMCwtMCwwLjEzLC0wLjIyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMDAyMVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTIzICtrPTEgK3hfMD0yMTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTI0LjQ3LC0xMzAuODksLTgxLjU2LC0wLC0wLDAuMTMsLTAuMjIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIwMDIyXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMjkgK2s9MSAreF8wPTIyNTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjQuNDcsLTEzMC44OSwtODEuNTYsLTAsLTAsMC4xMywtMC4yMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjAwMjNcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTEzNSAraz0xICt4XzA9MjM1MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yNC40NywtMTMwLjg5LC04MS41NiwtMCwtMCwwLjEzLC0wLjIyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMDAyNFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTQxICtrPTEgK3hfMD0yNDUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTI0LjQ3LC0xMzAuODksLTgxLjU2LC0wLC0wLDAuMTMsLTAuMjIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIwMDI1XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xNDcgK2s9MSAreF8wPTI1NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjQuNDcsLTEzMC44OSwtODEuNTYsLTAsLTAsMC4xMywtMC4yMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjAwMjZcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTE1MyAraz0xICt4XzA9MjY1MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yNC40NywtMTMwLjg5LC04MS41NiwtMCwtMCwwLjEzLC0wLjIyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMDAyN1wiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTU5ICtrPTEgK3hfMD0yNzUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTI0LjQ3LC0xMzAuODksLTgxLjU2LC0wLC0wLDAuMTMsLTAuMjIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIwMDI4XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xNjUgK2s9MSAreF8wPTI4NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjQuNDcsLTEzMC44OSwtODEuNTYsLTAsLTAsMC4xMywtMC4yMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjAwMjlcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTE3MSAraz0xICt4XzA9Mjk1MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yNC40NywtMTMwLjg5LC04MS41NiwtMCwtMCwwLjEzLC0wLjIyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMDAzMFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTc3ICtrPTEgK3hfMD0zMDUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTI0LjQ3LC0xMzAuODksLTgxLjU2LC0wLC0wLDAuMTMsLTAuMjIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIwMDMxXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0tMTc3ICtrPTEgK3hfMD0zMTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTI0LjQ3LC0xMzAuODksLTgxLjU2LC0wLC0wLDAuMTMsLTAuMjIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIwMDMyXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0tMTcxICtrPTEgK3hfMD0zMjUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTI0LjQ3LC0xMzAuODksLTgxLjU2LC0wLC0wLDAuMTMsLTAuMjIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIwMDY0XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0yMSAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjQuNDcsLTEzMC44OSwtODEuNTYsLTAsLTAsMC4xMywtMC4yMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjAwNjVcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTI3ICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yNC40NywtMTMwLjg5LC04MS41NiwtMCwtMCwwLjEzLC0wLjIyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMDA2NlwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MzMgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTI0LjQ3LC0xMzAuODksLTgxLjU2LC0wLC0wLDAuMTMsLTAuMjIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIwMDY3XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0zOSAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjQuNDcsLTEzMC44OSwtODEuNTYsLTAsLTAsMC4xMywtMC4yMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjAwNjhcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTQ1ICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yNC40NywtMTMwLjg5LC04MS41NiwtMCwtMCwwLjEzLC0wLjIyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMDA2OVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9NTEgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTI0LjQ3LC0xMzAuODksLTgxLjU2LC0wLC0wLDAuMTMsLTAuMjIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIwMDcwXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD01NyAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjQuNDcsLTEzMC44OSwtODEuNTYsLTAsLTAsMC4xMywtMC4yMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjAwNzFcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTYzICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yNC40NywtMTMwLjg5LC04MS41NiwtMCwtMCwwLjEzLC0wLjIyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMDA3MlwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9NjkgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTI0LjQ3LC0xMzAuODksLTgxLjU2LC0wLC0wLDAuMTMsLTAuMjIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIwMDczXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD03NSAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjQuNDcsLTEzMC44OSwtODEuNTYsLTAsLTAsMC4xMywtMC4yMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjAwNzRcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTgxICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yNC40NywtMTMwLjg5LC04MS41NiwtMCwtMCwwLjEzLC0wLjIyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMDA3NVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9ODcgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTI0LjQ3LC0xMzAuODksLTgxLjU2LC0wLC0wLDAuMTMsLTAuMjIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIwMDc2XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD05MyAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjQuNDcsLTEzMC44OSwtODEuNTYsLTAsLTAsMC4xMywtMC4yMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjAwNzdcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTk5ICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yNC40NywtMTMwLjg5LC04MS41NiwtMCwtMCwwLjEzLC0wLjIyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMDA3OFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTA1ICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yNC40NywtMTMwLjg5LC04MS41NiwtMCwtMCwwLjEzLC0wLjIyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMDA3OVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTExICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yNC40NywtMTMwLjg5LC04MS41NiwtMCwtMCwwLjEzLC0wLjIyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMDA4MFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTE3ICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yNC40NywtMTMwLjg5LC04MS41NiwtMCwtMCwwLjEzLC0wLjIyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMDA4MVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTIzICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yNC40NywtMTMwLjg5LC04MS41NiwtMCwtMCwwLjEzLC0wLjIyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMDA4MlwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTI5ICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yNC40NywtMTMwLjg5LC04MS41NiwtMCwtMCwwLjEzLC0wLjIyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMDA4M1wiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTM1ICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yNC40NywtMTMwLjg5LC04MS41NiwtMCwtMCwwLjEzLC0wLjIyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMDA4NFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTQxICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yNC40NywtMTMwLjg5LC04MS41NiwtMCwtMCwwLjEzLC0wLjIyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMDA4NVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTQ3ICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yNC40NywtMTMwLjg5LC04MS41NiwtMCwtMCwwLjEzLC0wLjIyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMDA4NlwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTUzICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yNC40NywtMTMwLjg5LC04MS41NiwtMCwtMCwwLjEzLC0wLjIyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMDA4N1wiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTU5ICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yNC40NywtMTMwLjg5LC04MS41NiwtMCwtMCwwLjEzLC0wLjIyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMDA4OFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTY1ICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yNC40NywtMTMwLjg5LC04MS41NiwtMCwtMCwwLjEzLC0wLjIyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMDA4OVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTcxICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yNC40NywtMTMwLjg5LC04MS41NiwtMCwtMCwwLjEzLC0wLjIyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMDA5MFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTc3ICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yNC40NywtMTMwLjg5LC04MS41NiwtMCwtMCwwLjEzLC0wLjIyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMDA5MVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9LTE3NyAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjQuNDcsLTEzMC44OSwtODEuNTYsLTAsLTAsMC4xMywtMC4yMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjAwOTJcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPS0xNzEgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTI0LjQ3LC0xMzAuODksLTgxLjU2LC0wLC0wLDAuMTMsLTAuMjIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIwMTM1XCI6Jytwcm9qPXV0bSArem9uZT0zNSArZWxscHM9Y2xyazgwICt0b3dnczg0PS0xNjYsLTE1LDIwNCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMDEzNlwiOicrcHJvaj11dG0gK3pvbmU9MzYgK2VsbHBzPWNscms4MCArdG93Z3M4ND0tMTY2LC0xNSwyMDQsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjAxMzdcIjonK3Byb2o9dXRtICt6b25lPTM3ICtlbGxwcz1jbHJrODAgK3Rvd2dzODQ9LTE2NiwtMTUsMjA0LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIwMTM4XCI6Jytwcm9qPXV0bSArem9uZT0zOCArZWxscHM9Y2xyazgwICt0b3dnczg0PS0xNjYsLTE1LDIwNCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMDI0OFwiOicrcHJvaj11dG0gK3pvbmU9NDggK3NvdXRoICtlbGxwcz1hdXN0X1NBICt0b3dnczg0PS0xMTcuODA4LC01MS41MzYsMTM3Ljc4NCwwLjMwMywwLjQ0NiwwLjIzNCwtMC4yOSArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjAyNDlcIjonK3Byb2o9dXRtICt6b25lPTQ5ICtzb3V0aCArZWxscHM9YXVzdF9TQSArdG93Z3M4ND0tMTE3LjgwOCwtNTEuNTM2LDEzNy43ODQsMC4zMDMsMC40NDYsMC4yMzQsLTAuMjkgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIwMjUwXCI6Jytwcm9qPXV0bSArem9uZT01MCArc291dGggK2VsbHBzPWF1c3RfU0EgK3Rvd2dzODQ9LTExNy44MDgsLTUxLjUzNiwxMzcuNzg0LDAuMzAzLDAuNDQ2LDAuMjM0LC0wLjI5ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMDI1MVwiOicrcHJvaj11dG0gK3pvbmU9NTEgK3NvdXRoICtlbGxwcz1hdXN0X1NBICt0b3dnczg0PS0xMTcuODA4LC01MS41MzYsMTM3Ljc4NCwwLjMwMywwLjQ0NiwwLjIzNCwtMC4yOSArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjAyNTJcIjonK3Byb2o9dXRtICt6b25lPTUyICtzb3V0aCArZWxscHM9YXVzdF9TQSArdG93Z3M4ND0tMTE3LjgwOCwtNTEuNTM2LDEzNy43ODQsMC4zMDMsMC40NDYsMC4yMzQsLTAuMjkgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIwMjUzXCI6Jytwcm9qPXV0bSArem9uZT01MyArc291dGggK2VsbHBzPWF1c3RfU0EgK3Rvd2dzODQ9LTExNy44MDgsLTUxLjUzNiwxMzcuNzg0LDAuMzAzLDAuNDQ2LDAuMjM0LC0wLjI5ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMDI1NFwiOicrcHJvaj11dG0gK3pvbmU9NTQgK3NvdXRoICtlbGxwcz1hdXN0X1NBICt0b3dnczg0PS0xMTcuODA4LC01MS41MzYsMTM3Ljc4NCwwLjMwMywwLjQ0NiwwLjIzNCwtMC4yOSArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjAyNTVcIjonK3Byb2o9dXRtICt6b25lPTU1ICtzb3V0aCArZWxscHM9YXVzdF9TQSArdG93Z3M4ND0tMTE3LjgwOCwtNTEuNTM2LDEzNy43ODQsMC4zMDMsMC40NDYsMC4yMzQsLTAuMjkgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIwMjU2XCI6Jytwcm9qPXV0bSArem9uZT01NiArc291dGggK2VsbHBzPWF1c3RfU0EgK3Rvd2dzODQ9LTExNy44MDgsLTUxLjUzNiwxMzcuNzg0LDAuMzAzLDAuNDQ2LDAuMjM0LC0wLjI5ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMDI1N1wiOicrcHJvaj11dG0gK3pvbmU9NTcgK3NvdXRoICtlbGxwcz1hdXN0X1NBICt0b3dnczg0PS0xMTcuODA4LC01MS41MzYsMTM3Ljc4NCwwLjMwMywwLjQ0NiwwLjIzNCwtMC4yOSArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjAyNThcIjonK3Byb2o9dXRtICt6b25lPTU4ICtzb3V0aCArZWxscHM9YXVzdF9TQSArdG93Z3M4ND0tMTE3LjgwOCwtNTEuNTM2LDEzNy43ODQsMC4zMDMsMC40NDYsMC4yMzQsLTAuMjkgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIwMzQ4XCI6Jytwcm9qPXV0bSArem9uZT00OCArc291dGggK2VsbHBzPWF1c3RfU0EgK3Rvd2dzODQ9LTEzNCwtNDgsMTQ5LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIwMzQ5XCI6Jytwcm9qPXV0bSArem9uZT00OSArc291dGggK2VsbHBzPWF1c3RfU0EgK3Rvd2dzODQ9LTEzNCwtNDgsMTQ5LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIwMzUwXCI6Jytwcm9qPXV0bSArem9uZT01MCArc291dGggK2VsbHBzPWF1c3RfU0EgK3Rvd2dzODQ9LTEzNCwtNDgsMTQ5LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIwMzUxXCI6Jytwcm9qPXV0bSArem9uZT01MSArc291dGggK2VsbHBzPWF1c3RfU0EgK3Rvd2dzODQ9LTEzNCwtNDgsMTQ5LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIwMzUyXCI6Jytwcm9qPXV0bSArem9uZT01MiArc291dGggK2VsbHBzPWF1c3RfU0EgK3Rvd2dzODQ9LTEzNCwtNDgsMTQ5LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIwMzUzXCI6Jytwcm9qPXV0bSArem9uZT01MyArc291dGggK2VsbHBzPWF1c3RfU0EgK3Rvd2dzODQ9LTEzNCwtNDgsMTQ5LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIwMzU0XCI6Jytwcm9qPXV0bSArem9uZT01NCArc291dGggK2VsbHBzPWF1c3RfU0EgK3Rvd2dzODQ9LTEzNCwtNDgsMTQ5LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIwMzU1XCI6Jytwcm9qPXV0bSArem9uZT01NSArc291dGggK2VsbHBzPWF1c3RfU0EgK3Rvd2dzODQ9LTEzNCwtNDgsMTQ5LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIwMzU2XCI6Jytwcm9qPXV0bSArem9uZT01NiArc291dGggK2VsbHBzPWF1c3RfU0EgK3Rvd2dzODQ9LTEzNCwtNDgsMTQ5LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIwMzU3XCI6Jytwcm9qPXV0bSArem9uZT01NyArc291dGggK2VsbHBzPWF1c3RfU0EgK3Rvd2dzODQ9LTEzNCwtNDgsMTQ5LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIwMzU4XCI6Jytwcm9qPXV0bSArem9uZT01OCArc291dGggK2VsbHBzPWF1c3RfU0EgK3Rvd2dzODQ9LTEzNCwtNDgsMTQ5LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIwNDM2XCI6Jytwcm9qPXV0bSArem9uZT0zNiArZWxscHM9aW50bCArdG93Z3M4ND0tMTQzLC0yMzYsNywwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMDQzN1wiOicrcHJvaj11dG0gK3pvbmU9MzcgK2VsbHBzPWludGwgK3Rvd2dzODQ9LTE0MywtMjM2LDcsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjA0MzhcIjonK3Byb2o9dXRtICt6b25lPTM4ICtlbGxwcz1pbnRsICt0b3dnczg0PS0xNDMsLTIzNiw3LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIwNDM5XCI6Jytwcm9qPXV0bSArem9uZT0zOSArZWxscHM9aW50bCArdG93Z3M4ND0tMTQzLC0yMzYsNywwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMDQ0MFwiOicrcHJvaj11dG0gK3pvbmU9NDAgK2VsbHBzPWludGwgK3Rvd2dzODQ9LTE0MywtMjM2LDcsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjA0OTlcIjonK3Byb2o9dXRtICt6b25lPTM5ICtlbGxwcz1pbnRsICt0b3dnczg0PS0xNDMsLTIzNiw3LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIwNTM4XCI6Jytwcm9qPXV0bSArem9uZT0zOCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9LTQzLC0xNjMsNDUsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjA1MzlcIjonK3Byb2o9dXRtICt6b25lPTM5ICtlbGxwcz1rcmFzcyArdG93Z3M4ND0tNDMsLTE2Myw0NSwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMDc5MFwiOicrcHJvaj10bWVyYyArbGF0XzA9MzkuNjY2NjY2NjY2NjY2NjYgK2xvbl8wPTEgK2s9MSAreF8wPTIwMDAwMCAreV8wPTMwMDAwMCArZWxscHM9aW50bCArdG93Z3M4ND0tMzA0LjA0NiwtNjAuNTc2LDEwMy42NCwwLDAsMCwwICtwbT1saXNib24gK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIwNzkxXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0zOS42NjY2NjY2NjY2NjY2NiArbG9uXzA9MSAraz0xICt4XzA9MCAreV8wPTAgK2VsbHBzPWludGwgK3Rvd2dzODQ9LTMwNC4wNDYsLTYwLjU3NiwxMDMuNjQsMCwwLDAsMCArcG09bGlzYm9uICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMDgyMlwiOicrcHJvaj11dG0gK3pvbmU9MjIgK3NvdXRoICtlbGxwcz1pbnRsICt0b3dnczg0PS0xNTEuOTksMjg3LjA0LC0xNDcuNDUsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjA4MjNcIjonK3Byb2o9dXRtICt6b25lPTIzICtzb3V0aCArZWxscHM9aW50bCArdG93Z3M4ND0tMTUxLjk5LDI4Ny4wNCwtMTQ3LjQ1LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIwODI0XCI6Jytwcm9qPXV0bSArem9uZT0yNCArc291dGggK2VsbHBzPWludGwgK3Rvd2dzODQ9LTE1MS45OSwyODcuMDQsLTE0Ny40NSwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMDkzNFwiOicrcHJvaj11dG0gK3pvbmU9MzQgK3NvdXRoICthPTYzNzgyNDkuMTQ1ICtiPTYzNTY1MTQuOTY2Mzk4NzUzICt0b3dnczg0PS0xNDMsLTkwLC0yOTQsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjA5MzVcIjonK3Byb2o9dXRtICt6b25lPTM1ICtzb3V0aCArYT02Mzc4MjQ5LjE0NSArYj02MzU2NTE0Ljk2NjM5ODc1MyArdG93Z3M4ND0tMTQzLC05MCwtMjk0LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIwOTM2XCI6Jytwcm9qPXV0bSArem9uZT0zNiArc291dGggK2E9NjM3ODI0OS4xNDUgK2I9NjM1NjUxNC45NjYzOTg3NTMgK3Rvd2dzODQ9LTE0MywtOTAsLTI5NCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMTAzNVwiOicrcHJvaj11dG0gK3pvbmU9MzUgK3NvdXRoICtlbGxwcz1jbHJrODAgK3Rvd2dzODQ9LTE2MCwtNiwtMzAyLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIxMDM2XCI6Jytwcm9qPXV0bSArem9uZT0zNiArc291dGggK2VsbHBzPWNscms4MCArdG93Z3M4ND0tMTYwLC02LC0zMDIsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjEwMzdcIjonK3Byb2o9dXRtICt6b25lPTM3ICtzb3V0aCArZWxscHM9Y2xyazgwICt0b3dnczg0PS0xNjAsLTYsLTMwMiwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMTA5NVwiOicrcHJvaj11dG0gK3pvbmU9MzUgK2VsbHBzPWNscms4MCArdG93Z3M4ND0tMTYwLC02LC0zMDIsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjEwOTZcIjonK3Byb2o9dXRtICt6b25lPTM2ICtlbGxwcz1jbHJrODAgK3Rvd2dzODQ9LTE2MCwtNiwtMzAyLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIxMDk3XCI6Jytwcm9qPXV0bSArem9uZT0zNyArZWxscHM9Y2xyazgwICt0b3dnczg0PS0xNjAsLTYsLTMwMiwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMTEwMFwiOicrcHJvaj1tZXJjICtsb25fMD0xMTAgK2s9MC45OTcgK3hfMD0zOTAwMDAwICt5XzA9OTAwMDAwICtlbGxwcz1iZXNzZWwgK3Rvd2dzODQ9LTM3Nyw2ODEsLTUwLDAsMCwwLDAgK3BtPWpha2FydGEgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIxMTQ4XCI6Jytwcm9qPXV0bSArem9uZT00OCArc291dGggK2VsbHBzPWJlc3NlbCArdG93Z3M4ND0tMzc3LDY4MSwtNTAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjExNDlcIjonK3Byb2o9dXRtICt6b25lPTQ5ICtzb3V0aCArZWxscHM9YmVzc2VsICt0b3dnczg0PS0zNzcsNjgxLC01MCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMTE1MFwiOicrcHJvaj11dG0gK3pvbmU9NTAgK3NvdXRoICtlbGxwcz1iZXNzZWwgK3Rvd2dzODQ9LTM3Nyw2ODEsLTUwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIxMjkxXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0tNjIgK2s9MC45OTk1MDAwMDAwMDAwMDAxICt4XzA9NDAwMDAwICt5XzA9MCArZWxscHM9Y2xyazgwICt0b3dnczg0PTMxLjk1LDMwMC45OSw0MTkuMTksMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjEyOTJcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTEzLjE3NjM4ODg4ODg4ODg5ICtsb25fMD0tNTkuNTU5NzIyMjIyMjIyMjIgK2s9MC45OTk5OTg2ICt4XzA9MzAwMDAgK3lfMD03NTAwMCArZWxscHM9Y2xyazgwICt0b3dnczg0PTMxLjk1LDMwMC45OSw0MTkuMTksMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjE0MTNcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTc1ICtrPTEgK3hfMD0xMzUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTE1LjgsLTE1NC40LC04Mi4zLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIxNDE0XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD04MSAraz0xICt4XzA9MTQ1MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0xNS44LC0xNTQuNCwtODIuMywwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMTQxNVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9ODcgK2s9MSAreF8wPTE1NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MTUuOCwtMTU0LjQsLTgyLjMsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjE0MTZcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTkzICtrPTEgK3hfMD0xNjUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTE1LjgsLTE1NC40LC04Mi4zLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIxNDE3XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD05OSAraz0xICt4XzA9MTc1MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0xNS44LC0xNTQuNCwtODIuMywwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMTQxOFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTA1ICtrPTEgK3hfMD0xODUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTE1LjgsLTE1NC40LC04Mi4zLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIxNDE5XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMTEgK2s9MSAreF8wPTE5NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MTUuOCwtMTU0LjQsLTgyLjMsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjE0MjBcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTExNyAraz0xICt4XzA9MjA1MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0xNS44LC0xNTQuNCwtODIuMywwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMTQyMVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTIzICtrPTEgK3hfMD0yMTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTE1LjgsLTE1NC40LC04Mi4zLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIxNDIyXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMjkgK2s9MSAreF8wPTIyNTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MTUuOCwtMTU0LjQsLTgyLjMsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjE0MjNcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTEzNSAraz0xICt4XzA9MjM1MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0xNS44LC0xNTQuNCwtODIuMywwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMTQ1M1wiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9NzUgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTE1LjgsLTE1NC40LC04Mi4zLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIxNDU0XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD04MSAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MTUuOCwtMTU0LjQsLTgyLjMsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjE0NTVcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTg3ICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0xNS44LC0xNTQuNCwtODIuMywwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMTQ1NlwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9OTMgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTE1LjgsLTE1NC40LC04Mi4zLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIxNDU3XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD05OSAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MTUuOCwtMTU0LjQsLTgyLjMsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjE0NThcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTEwNSAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MTUuOCwtMTU0LjQsLTgyLjMsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjE0NTlcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTExMSAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MTUuOCwtMTU0LjQsLTgyLjMsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjE0NjBcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTExNyAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MTUuOCwtMTU0LjQsLTgyLjMsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjE0NjFcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTEyMyAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MTUuOCwtMTU0LjQsLTgyLjMsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjE0NjJcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTEyOSAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MTUuOCwtMTU0LjQsLTgyLjMsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjE0NjNcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTEzNSAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MTUuOCwtMTU0LjQsLTgyLjMsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjE0NzNcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTc1ICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0xNS44LC0xNTQuNCwtODIuMywwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMTQ3NFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9ODEgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTE1LjgsLTE1NC40LC04Mi4zLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIxNDc1XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD04NyAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MTUuOCwtMTU0LjQsLTgyLjMsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjE0NzZcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTkzICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0xNS44LC0xNTQuNCwtODIuMywwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMTQ3N1wiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9OTkgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTE1LjgsLTE1NC40LC04Mi4zLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIxNDc4XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMDUgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTE1LjgsLTE1NC40LC04Mi4zLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIxNDc5XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMTEgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTE1LjgsLTE1NC40LC04Mi4zLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIxNDgwXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMTcgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTE1LjgsLTE1NC40LC04Mi4zLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIxNDgxXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMjMgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTE1LjgsLTE1NC40LC04Mi4zLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIxNDgyXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMjkgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTE1LjgsLTE1NC40LC04Mi4zLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIxNDgzXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMzUgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTE1LjgsLTE1NC40LC04Mi4zLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIxNTAwXCI6Jytwcm9qPWxjYyArbGF0XzE9NDkuODMzMzMzMzMzMzMzMzQgK2xhdF8yPTUxLjE2NjY2NjY2NjY2NjY2ICtsYXRfMD05MCArbG9uXzA9MCAreF8wPTE1MDAwMCAreV8wPTU0MDAwMDAgK2VsbHBzPWludGwgK3BtPWJydXNzZWxzICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMTc4MFwiOicrcHJvaj1zb21lcmMgK2xhdF8wPTQ2Ljk1MjQwNTU1NTU1NTU2ICtsb25fMD0wICtrXzA9MSAreF8wPTAgK3lfMD0wICtlbGxwcz1iZXNzZWwgK3Rvd2dzODQ9Njc0LjQsMTUuMSw0MDUuMywwLDAsMCwwICtwbT1iZXJuICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMTc4MVwiOicrcHJvaj1zb21lcmMgK2xhdF8wPTQ2Ljk1MjQwNTU1NTU1NTU2ICtsb25fMD03LjQzOTU4MzMzMzMzMzMzMyAra18wPTEgK3hfMD02MDAwMDAgK3lfMD0yMDAwMDAgK2VsbHBzPWJlc3NlbCArdG93Z3M4ND02NzQuNCwxNS4xLDQwNS4zLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIxNzgyXCI6Jytwcm9qPXNvbWVyYyArbGF0XzA9NDYuOTUyNDA1NTU1NTU1NTYgK2xvbl8wPTcuNDM5NTgzMzMzMzMzMzMzICtrXzA9MSAreF8wPTAgK3lfMD0wICtlbGxwcz1iZXNzZWwgK3Rvd2dzODQ9Njc0LjQsMTUuMSw0MDUuMywwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMTgxN1wiOicrcHJvaj11dG0gK3pvbmU9MTcgK2VsbHBzPWludGwgK3Rvd2dzODQ9MzA3LDMwNCwtMzE4LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIxODE4XCI6Jytwcm9qPXV0bSArem9uZT0xOCArZWxscHM9aW50bCArdG93Z3M4ND0zMDcsMzA0LC0zMTgsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjE4OTFcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTQuNTk5MDQ3MjIyMjIyMjIyICtsb25fMD0tNzcuMDgwOTE2NjY2NjY2NjcgK2s9MSAreF8wPTEwMDAwMDAgK3lfMD0xMDAwMDAwICtlbGxwcz1pbnRsICt0b3dnczg0PTMwNywzMDQsLTMxOCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMTg5MlwiOicrcHJvaj10bWVyYyArbGF0XzA9NC41OTkwNDcyMjIyMjIyMjIgK2xvbl8wPS03NC4wODA5MTY2NjY2NjY2NyAraz0xICt4XzA9MTAwMDAwMCAreV8wPTEwMDAwMDAgK2VsbHBzPWludGwgK3Rvd2dzODQ9MzA3LDMwNCwtMzE4LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIxODkzXCI6Jytwcm9qPXRtZXJjICtsYXRfMD00LjU5OTA0NzIyMjIyMjIyMiArbG9uXzA9LTcxLjA4MDkxNjY2NjY2NjY3ICtrPTEgK3hfMD0xMDAwMDAwICt5XzA9MTAwMDAwMCArZWxscHM9aW50bCArdG93Z3M4ND0zMDcsMzA0LC0zMTgsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjE4OTRcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTQuNTk5MDQ3MjIyMjIyMjIyICtsb25fMD0tNjguMDgwOTE2NjY2NjY2NjcgK2s9MSAreF8wPTEwMDAwMDAgK3lfMD0xMDAwMDAwICtlbGxwcz1pbnRsICt0b3dnczg0PTMwNywzMDQsLTMxOCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMTg5NlwiOicrcHJvaj10bWVyYyArbGF0XzA9NC41OTkwNDcyMjIyMjIyMjIgK2xvbl8wPS03Ny4wODA5MTY2NjY2NjY2NyAraz0xICt4XzA9MTAwMDAwMCAreV8wPTEwMDAwMDAgK2VsbHBzPWludGwgK3Rvd2dzODQ9MzA3LDMwNCwtMzE4LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIxODk3XCI6Jytwcm9qPXRtZXJjICtsYXRfMD00LjU5OTA0NzIyMjIyMjIyMiArbG9uXzA9LTc0LjA4MDkxNjY2NjY2NjY3ICtrPTEgK3hfMD0xMDAwMDAwICt5XzA9MTAwMDAwMCArZWxscHM9aW50bCArdG93Z3M4ND0zMDcsMzA0LC0zMTgsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjE4OThcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTQuNTk5MDQ3MjIyMjIyMjIyICtsb25fMD0tNzEuMDgwOTE2NjY2NjY2NjcgK2s9MSAreF8wPTEwMDAwMDAgK3lfMD0xMDAwMDAwICtlbGxwcz1pbnRsICt0b3dnczg0PTMwNywzMDQsLTMxOCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMTg5OVwiOicrcHJvaj10bWVyYyArbGF0XzA9NC41OTkwNDcyMjIyMjIyMjIgK2xvbl8wPS02OC4wODA5MTY2NjY2NjY2NyAraz0xICt4XzA9MTAwMDAwMCAreV8wPTEwMDAwMDAgK2VsbHBzPWludGwgK3Rvd2dzODQ9MzA3LDMwNCwtMzE4LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIyMDMyXCI6Jytwcm9qPXV0bSArem9uZT0zMiArc291dGggK2VsbHBzPWNscms4MCArdG93Z3M4ND0tNTAuOSwtMzQ3LjYsLTIzMSwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMjAzM1wiOicrcHJvaj11dG0gK3pvbmU9MzMgK3NvdXRoICtlbGxwcz1jbHJrODAgK3Rvd2dzODQ9LTUwLjksLTM0Ny42LC0yMzEsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjIwOTFcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTExLjUgK2s9MC45OTk2ICt4XzA9NTAwMDAwICt5XzA9MTAwMDAwMDAgK2VsbHBzPWNscms4MCArdG93Z3M4ND0tNTAuOSwtMzQ3LjYsLTIzMSwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMjA5MlwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTIgK2s9MC45OTk2ICt4XzA9NTAwMDAwICt5XzA9MTAwMDAwMDAgK2VsbHBzPWNscms4MCArdG93Z3M4ND0tNTAuOSwtMzQ3LjYsLTIzMSwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMjE3MVwiOicrcHJvaj10bWVyYyArbGF0XzA9LTkwICtsb25fMD0tNzIgK2s9MSAreF8wPTE1MDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMjE3MlwiOicrcHJvaj10bWVyYyArbGF0XzA9LTkwICtsb25fMD0tNjkgK2s9MSAreF8wPTI1MDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMjE3M1wiOicrcHJvaj10bWVyYyArbGF0XzA9LTkwICtsb25fMD0tNjYgK2s9MSAreF8wPTM1MDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMjE3NFwiOicrcHJvaj10bWVyYyArbGF0XzA9LTkwICtsb25fMD0tNjMgK2s9MSAreF8wPTQ1MDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMjE3NVwiOicrcHJvaj10bWVyYyArbGF0XzA9LTkwICtsb25fMD0tNjAgK2s9MSAreF8wPTU1MDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMjE3NlwiOicrcHJvaj10bWVyYyArbGF0XzA9LTkwICtsb25fMD0tNTcgK2s9MSAreF8wPTY1MDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMjE3N1wiOicrcHJvaj10bWVyYyArbGF0XzA9LTkwICtsb25fMD0tNTQgK2s9MSAreF8wPTc1MDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMjE4MVwiOicrcHJvaj10bWVyYyArbGF0XzA9LTkwICtsb25fMD0tNzIgK2s9MSAreF8wPTE1MDAwMDAgK3lfMD0wICtlbGxwcz1XR1M4NCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMjE4MlwiOicrcHJvaj10bWVyYyArbGF0XzA9LTkwICtsb25fMD0tNjkgK2s9MSAreF8wPTI1MDAwMDAgK3lfMD0wICtlbGxwcz1XR1M4NCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMjE4M1wiOicrcHJvaj10bWVyYyArbGF0XzA9LTkwICtsb25fMD0tNjYgK2s9MSAreF8wPTM1MDAwMDAgK3lfMD0wICtlbGxwcz1XR1M4NCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMjE4NFwiOicrcHJvaj10bWVyYyArbGF0XzA9LTkwICtsb25fMD0tNjMgK2s9MSAreF8wPTQ1MDAwMDAgK3lfMD0wICtlbGxwcz1XR1M4NCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMjE4NVwiOicrcHJvaj10bWVyYyArbGF0XzA9LTkwICtsb25fMD0tNjAgK2s9MSAreF8wPTU1MDAwMDAgK3lfMD0wICtlbGxwcz1XR1M4NCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMjE4NlwiOicrcHJvaj10bWVyYyArbGF0XzA9LTkwICtsb25fMD0tNTcgK2s9MSAreF8wPTY1MDAwMDAgK3lfMD0wICtlbGxwcz1XR1M4NCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMjE4N1wiOicrcHJvaj10bWVyYyArbGF0XzA9LTkwICtsb25fMD0tNTQgK2s9MSAreF8wPTc1MDAwMDAgK3lfMD0wICtlbGxwcz1XR1M4NCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMjE5MVwiOicrcHJvaj10bWVyYyArbGF0XzA9LTkwICtsb25fMD0tNzIgK2s9MSAreF8wPTE1MDAwMDAgK3lfMD0wICtlbGxwcz1pbnRsICt0b3dnczg0PS0xNDgsMTM2LDkwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIyMTkyXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0tOTAgK2xvbl8wPS02OSAraz0xICt4XzA9MjUwMDAwMCAreV8wPTAgK2VsbHBzPWludGwgK3Rvd2dzODQ9LTE0OCwxMzYsOTAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjIxOTNcIjonK3Byb2o9dG1lcmMgK2xhdF8wPS05MCArbG9uXzA9LTY2ICtrPTEgK3hfMD0zNTAwMDAwICt5XzA9MCArZWxscHM9aW50bCArdG93Z3M4ND0tMTQ4LDEzNiw5MCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMjE5NFwiOicrcHJvaj10bWVyYyArbGF0XzA9LTkwICtsb25fMD0tNjMgK2s9MSAreF8wPTQ1MDAwMDAgK3lfMD0wICtlbGxwcz1pbnRsICt0b3dnczg0PS0xNDgsMTM2LDkwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIyMTk1XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0tOTAgK2xvbl8wPS02MCAraz0xICt4XzA9NTUwMDAwMCAreV8wPTAgK2VsbHBzPWludGwgK3Rvd2dzODQ9LTE0OCwxMzYsOTAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjIxOTZcIjonK3Byb2o9dG1lcmMgK2xhdF8wPS05MCArbG9uXzA9LTU3ICtrPTEgK3hfMD02NTAwMDAwICt5XzA9MCArZWxscHM9aW50bCArdG93Z3M4ND0tMTQ4LDEzNiw5MCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMjE5N1wiOicrcHJvaj10bWVyYyArbGF0XzA9LTkwICtsb25fMD0tNTQgK2s9MSAreF8wPTc1MDAwMDAgK3lfMD0wICtlbGxwcz1pbnRsICt0b3dnczg0PS0xNDgsMTM2LDkwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIyMjM0XCI6Jytwcm9qPXV0bSArem9uZT0zNCArc291dGggK2E9NjM3ODI0OS4xNDUgK2I9NjM1NjUxNC45NjYzOTg3NTMgK3Rvd2dzODQ9LTEzNiwtMTA4LC0yOTIsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjIyMzVcIjonK3Byb2o9dXRtICt6b25lPTM1ICtzb3V0aCArYT02Mzc4MjQ5LjE0NSArYj02MzU2NTE0Ljk2NjM5ODc1MyArdG93Z3M4ND0tMTM2LC0xMDgsLTI5MiwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMjIzNlwiOicrcHJvaj11dG0gK3pvbmU9MzYgK3NvdXRoICthPTYzNzgyNDkuMTQ1ICtiPTYzNTY1MTQuOTY2Mzk4NzUzICt0b3dnczg0PS0xMzYsLTEwOCwtMjkyLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIyMjc1XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xNSAraz0xICt4XzA9MCAreV8wPTAgK2F4aXM9d3N1ICthPTYzNzgyNDkuMTQ1ICtiPTYzNTY1MTQuOTY2Mzk4NzUzICt0b3dnczg0PS0xMzYsLTEwOCwtMjkyLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIyMjc3XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xNyAraz0xICt4XzA9MCAreV8wPTAgK2F4aXM9d3N1ICthPTYzNzgyNDkuMTQ1ICtiPTYzNTY1MTQuOTY2Mzk4NzUzICt0b3dnczg0PS0xMzYsLTEwOCwtMjkyLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIyMjc5XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xOSAraz0xICt4XzA9MCAreV8wPTAgK2F4aXM9d3N1ICthPTYzNzgyNDkuMTQ1ICtiPTYzNTY1MTQuOTY2Mzk4NzUzICt0b3dnczg0PS0xMzYsLTEwOCwtMjkyLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIyMjgxXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0yMSAraz0xICt4XzA9MCAreV8wPTAgK2F4aXM9d3N1ICthPTYzNzgyNDkuMTQ1ICtiPTYzNTY1MTQuOTY2Mzk4NzUzICt0b3dnczg0PS0xMzYsLTEwOCwtMjkyLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIyMjgzXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0yMyAraz0xICt4XzA9MCAreV8wPTAgK2F4aXM9d3N1ICthPTYzNzgyNDkuMTQ1ICtiPTYzNTY1MTQuOTY2Mzk4NzUzICt0b3dnczg0PS0xMzYsLTEwOCwtMjkyLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIyMjg1XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0yNSAraz0xICt4XzA9MCAreV8wPTAgK2F4aXM9d3N1ICthPTYzNzgyNDkuMTQ1ICtiPTYzNTY1MTQuOTY2Mzk4NzUzICt0b3dnczg0PS0xMzYsLTEwOCwtMjkyLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIyMjg3XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0yNyAraz0xICt4XzA9MCAreV8wPTAgK2F4aXM9d3N1ICthPTYzNzgyNDkuMTQ1ICtiPTYzNTY1MTQuOTY2Mzk4NzUzICt0b3dnczg0PS0xMzYsLTEwOCwtMjkyLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIyMjg5XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0yOSAraz0xICt4XzA9MCAreV8wPTAgK2F4aXM9d3N1ICthPTYzNzgyNDkuMTQ1ICtiPTYzNTY1MTQuOTY2Mzk4NzUzICt0b3dnczg0PS0xMzYsLTEwOCwtMjkyLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIyMjkxXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0zMSAraz0xICt4XzA9MCAreV8wPTAgK2F4aXM9d3N1ICthPTYzNzgyNDkuMTQ1ICtiPTYzNTY1MTQuOTY2Mzk4NzUzICt0b3dnczg0PS0xMzYsLTEwOCwtMjkyLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIyMjkzXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0zMyAraz0xICt4XzA9MCAreV8wPTAgK2F4aXM9d3N1ICthPTYzNzgyNDkuMTQ1ICtiPTYzNTY1MTQuOTY2Mzk4NzUzICt0b3dnczg0PS0xMzYsLTEwOCwtMjkyLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIyMzMyXCI6Jytwcm9qPXV0bSArem9uZT0zMiArYT02Mzc4MjQ5LjIgK2I9NjM1NjUxNSArdG93Z3M4ND0tMjYzLDYsNDMxLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIyMzkxXCI6Jytwcm9qPWxjYyArbGF0XzE9MzYgK2xhdF8wPTM2ICtsb25fMD05LjkgK2tfMD0wLjk5OTYyNTU0NCAreF8wPTUwMDAwMCAreV8wPTMwMDAwMCArYT02Mzc4MjQ5LjIgK2I9NjM1NjUxNSArdG93Z3M4ND0tMjYzLDYsNDMxLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIyMzkyXCI6Jytwcm9qPWxjYyArbGF0XzE9MzMuMyArbGF0XzA9MzMuMyArbG9uXzA9OS45ICtrXzA9MC45OTk2MjU3NjkgK3hfMD01MDAwMDAgK3lfMD0zMDAwMDAgK2E9NjM3ODI0OS4yICtiPTYzNTY1MTUgK3Rvd2dzODQ9LTI2Myw2LDQzMSwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMjUyMVwiOicrcHJvaj11dG0gK3pvbmU9MjEgK3NvdXRoICtlbGxwcz1pbnRsICt0b3dnczg0PS0yMDYsMTcyLC02LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIyNTIyXCI6Jytwcm9qPXV0bSArem9uZT0yMiArc291dGggK2VsbHBzPWludGwgK3Rvd2dzODQ9LTIwNiwxNzIsLTYsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjI1MjNcIjonK3Byb2o9dXRtICt6b25lPTIzICtzb3V0aCArZWxscHM9aW50bCArdG93Z3M4ND0tMjA2LDE3MiwtNiwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMjUyNFwiOicrcHJvaj11dG0gK3pvbmU9MjQgK3NvdXRoICtlbGxwcz1pbnRsICt0b3dnczg0PS0yMDYsMTcyLC02LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIyNTI1XCI6Jytwcm9qPXV0bSArem9uZT0yNSArc291dGggK2VsbHBzPWludGwgK3Rvd2dzODQ9LTIwNiwxNzIsLTYsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjI3MDBcIjonK3Byb2o9bGNjICtsYXRfMT0zNC42NSArbGF0XzA9MzQuNjUgK2xvbl8wPTM3LjM1ICtrXzA9MC45OTk2MjU2ICt4XzA9MzAwMDAwICt5XzA9MzAwMDAwICthPTYzNzgyNDkuMiArYj02MzU2NTE1ICt0b3dnczg0PS0xOTAuNDIxLDguNTMyLDIzOC42OSwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMjc3MFwiOicrcHJvaj1sY2MgK2xhdF8xPTM0LjY1ICtsYXRfMD0zNC42NSArbG9uXzA9MzcuMzUgK2tfMD0wLjk5OTYyNTYgK3hfMD0zMDAwMDAgK3lfMD0zMDAwMDAgK2E9NjM3ODI0OS4yICtiPTYzNTY1MTUgK3Rvd2dzODQ9LTE5MC40MjEsOC41MzIsMjM4LjY5LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIyNzgwXCI6Jytwcm9qPXN0ZXJlYSArbGF0XzA9MzQuMiArbG9uXzA9MzkuMTUgK2s9MC45OTk1MzQxICt4XzA9MCAreV8wPTAgK2E9NjM3ODI0OS4yICtiPTYzNTY1MTUgK3Rvd2dzODQ9LTE5MC40MjEsOC41MzIsMjM4LjY5LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIyODMyXCI6Jytwcm9qPXV0bSArem9uZT0zMiArYT02Mzc4MjQ5LjIgK2I9NjM1NjUxNSArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjI5OTFcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTMwICtsb25fMD0zNSAraz0xICt4XzA9MzAwMDAwICt5XzA9MTEwMDAwMCArZWxscHM9aGVsbWVydCArdG93Z3M4ND0tMTMwLDExMCwtMTMsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjI5OTJcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTMwICtsb25fMD0zMSAraz0xICt4XzA9NjE1MDAwICt5XzA9ODEwMDAwICtlbGxwcz1oZWxtZXJ0ICt0b3dnczg0PS0xMzAsMTEwLC0xMywwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMjk5M1wiOicrcHJvaj10bWVyYyArbGF0XzA9MzAgK2xvbl8wPTI3ICtrPTEgK3hfMD03MDAwMDAgK3lfMD0yMDAwMDAgK2VsbHBzPWhlbG1lcnQgK3Rvd2dzODQ9LTEzMCwxMTAsLTEzLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIyOTk0XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0zMCArbG9uXzA9MjcgK2s9MSAreF8wPTcwMDAwMCAreV8wPTEyMDAwMDAgK2VsbHBzPWhlbG1lcnQgK3Rvd2dzODQ9LTEzMCwxMTAsLTEzLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIzMDI4XCI6Jytwcm9qPXV0bSArem9uZT0yOCArZWxscHM9aW50bCArdG93Z3M4ND0tODcsLTk4LC0xMjEsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjMwMjlcIjonK3Byb2o9dXRtICt6b25lPTI5ICtlbGxwcz1pbnRsICt0b3dnczg0PS04NywtOTgsLTEyMSwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMzAzMFwiOicrcHJvaj11dG0gK3pvbmU9MzAgK2VsbHBzPWludGwgK3Rvd2dzODQ9LTg3LC05OCwtMTIxLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIzMDMxXCI6Jytwcm9qPXV0bSArem9uZT0zMSArZWxscHM9aW50bCArdG93Z3M4ND0tODcsLTk4LC0xMjEsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjMwMzJcIjonK3Byb2o9dXRtICt6b25lPTMyICtlbGxwcz1pbnRsICt0b3dnczg0PS04NywtOTgsLTEyMSwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMzAzM1wiOicrcHJvaj11dG0gK3pvbmU9MzMgK2VsbHBzPWludGwgK3Rvd2dzODQ9LTg3LC05OCwtMTIxLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIzMDM0XCI6Jytwcm9qPXV0bSArem9uZT0zNCArZWxscHM9aW50bCArdG93Z3M4ND0tODcsLTk4LC0xMjEsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjMwMzVcIjonK3Byb2o9dXRtICt6b25lPTM1ICtlbGxwcz1pbnRsICt0b3dnczg0PS04NywtOTgsLTEyMSwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMzAzNlwiOicrcHJvaj11dG0gK3pvbmU9MzYgK2VsbHBzPWludGwgK3Rvd2dzODQ9LTg3LC05OCwtMTIxLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIzMDM3XCI6Jytwcm9qPXV0bSArem9uZT0zNyArZWxscHM9aW50bCArdG93Z3M4ND0tODcsLTk4LC0xMjEsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjMwMzhcIjonK3Byb2o9dXRtICt6b25lPTM4ICtlbGxwcz1pbnRsICt0b3dnczg0PS04NywtOTgsLTEyMSwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMzA5MFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MCAraz0wLjk5OTYgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1pbnRsICt0b3dnczg0PS04NywtOTgsLTEyMSwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMzA5NVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9NSAraz0wLjk5OTYgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1pbnRsICt0b3dnczg0PS04NywtOTgsLTEyMSwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMzIzOVwiOicrcHJvaj11dG0gK3pvbmU9MzkgK2VsbHBzPWNscms4MCArdG93Z3M4ND0tMzQ2LC0xLDIyNCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMzI0MFwiOicrcHJvaj11dG0gK3pvbmU9NDAgK2VsbHBzPWNscms4MCArdG93Z3M4ND0tMzQ2LC0xLDIyNCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMzQzM1wiOicrcHJvaj11dG0gK3pvbmU9MzMgK2E9NjM3ODI0OS4yICtiPTYzNTY1MTUgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIzNzAwXCI6Jytwcm9qPXNvbWVyYyArbGF0XzA9NDcuMTQ0MzkzNzIyMjIyMjIgK2xvbl8wPTE5LjA0ODU3MTc3Nzc3Nzc4ICtrXzA9MC45OTk5MyAreF8wPTY1MDAwMCAreV8wPTIwMDAwMCArZWxscHM9R1JTNjcgK3Rvd2dzODQ9NTIuMTcsLTcxLjgyLC0xNC45LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIzODMwXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD05NC41ICtrPTAuOTk5OSAreF8wPTIwMDAwMCAreV8wPTE1MDAwMDAgK2VsbHBzPVdHUzg0ICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIzODMxXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD05Ny41ICtrPTAuOTk5OSAreF8wPTIwMDAwMCAreV8wPTE1MDAwMDAgK2VsbHBzPVdHUzg0ICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIzODMyXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMDAuNSAraz0wLjk5OTkgK3hfMD0yMDAwMDAgK3lfMD0xNTAwMDAwICtlbGxwcz1XR1M4NCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMzgzM1wiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTAzLjUgK2s9MC45OTk5ICt4XzA9MjAwMDAwICt5XzA9MTUwMDAwMCArZWxscHM9V0dTODQgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjM4MzRcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTEwNi41ICtrPTAuOTk5OSAreF8wPTIwMDAwMCAreV8wPTE1MDAwMDAgK2VsbHBzPVdHUzg0ICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIzODM1XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMDkuNSAraz0wLjk5OTkgK3hfMD0yMDAwMDAgK3lfMD0xNTAwMDAwICtlbGxwcz1XR1M4NCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMzgzNlwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTEyLjUgK2s9MC45OTk5ICt4XzA9MjAwMDAwICt5XzA9MTUwMDAwMCArZWxscHM9V0dTODQgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjM4MzdcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTExNS41ICtrPTAuOTk5OSAreF8wPTIwMDAwMCAreV8wPTE1MDAwMDAgK2VsbHBzPVdHUzg0ICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIzODM4XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMTguNSAraz0wLjk5OTkgK3hfMD0yMDAwMDAgK3lfMD0xNTAwMDAwICtlbGxwcz1XR1M4NCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMzgzOVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTIxLjUgK2s9MC45OTk5ICt4XzA9MjAwMDAwICt5XzA9MTUwMDAwMCArZWxscHM9V0dTODQgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjM4NDBcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTEyNC41ICtrPTAuOTk5OSAreF8wPTIwMDAwMCAreV8wPTE1MDAwMDAgK2VsbHBzPVdHUzg0ICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIzODQxXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMjcuNSAraz0wLjk5OTkgK3hfMD0yMDAwMDAgK3lfMD0xNTAwMDAwICtlbGxwcz1XR1M4NCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMzg0MlwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTMwLjUgK2s9MC45OTk5ICt4XzA9MjAwMDAwICt5XzA9MTUwMDAwMCArZWxscHM9V0dTODQgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjM4NDNcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTEzMy41ICtrPTAuOTk5OSAreF8wPTIwMDAwMCAreV8wPTE1MDAwMDAgK2VsbHBzPVdHUzg0ICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIzODQ0XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMzYuNSAraz0wLjk5OTkgK3hfMD0yMDAwMDAgK3lfMD0xNTAwMDAwICtlbGxwcz1XR1M4NCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMzg0NVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTM5LjUgK2s9MC45OTk5ICt4XzA9MjAwMDAwICt5XzA9MTUwMDAwMCArZWxscHM9V0dTODQgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjM4NDZcIjonK3Byb2o9dXRtICt6b25lPTQ2ICthPTYzNzgxNjAgK2I9NjM1Njc3NC41MDQwODU1NCArdG93Z3M4ND0tMjQsLTE1LDUsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjM4NDdcIjonK3Byb2o9dXRtICt6b25lPTQ3ICthPTYzNzgxNjAgK2I9NjM1Njc3NC41MDQwODU1NCArdG93Z3M4ND0tMjQsLTE1LDUsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjM4NDhcIjonK3Byb2o9dXRtICt6b25lPTQ4ICthPTYzNzgxNjAgK2I9NjM1Njc3NC41MDQwODU1NCArdG93Z3M4ND0tMjQsLTE1LDUsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjM4NDlcIjonK3Byb2o9dXRtICt6b25lPTQ5ICthPTYzNzgxNjAgK2I9NjM1Njc3NC41MDQwODU1NCArdG93Z3M4ND0tMjQsLTE1LDUsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjM4NTBcIjonK3Byb2o9dXRtICt6b25lPTUwICthPTYzNzgxNjAgK2I9NjM1Njc3NC41MDQwODU1NCArdG93Z3M4ND0tMjQsLTE1LDUsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjM4NTFcIjonK3Byb2o9dXRtICt6b25lPTUxICthPTYzNzgxNjAgK2I9NjM1Njc3NC41MDQwODU1NCArdG93Z3M4ND0tMjQsLTE1LDUsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjM4NTJcIjonK3Byb2o9dXRtICt6b25lPTUyICthPTYzNzgxNjAgK2I9NjM1Njc3NC41MDQwODU1NCArdG93Z3M4ND0tMjQsLTE1LDUsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjM4NTNcIjonK3Byb2o9dXRtICt6b25lPTUzICthPTYzNzgxNjAgK2I9NjM1Njc3NC41MDQwODU1NCArdG93Z3M4ND0tMjQsLTE1LDUsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjM4NjZcIjonK3Byb2o9dXRtICt6b25lPTQ2ICtlbGxwcz1XR1M4NCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMzg2N1wiOicrcHJvaj11dG0gK3pvbmU9NDcgK2VsbHBzPVdHUzg0ICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIzODY4XCI6Jytwcm9qPXV0bSArem9uZT00OCArZWxscHM9V0dTODQgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjM4NjlcIjonK3Byb2o9dXRtICt6b25lPTQ5ICtlbGxwcz1XR1M4NCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMzg3MFwiOicrcHJvaj11dG0gK3pvbmU9NTAgK2VsbHBzPVdHUzg0ICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIzODcxXCI6Jytwcm9qPXV0bSArem9uZT01MSArZWxscHM9V0dTODQgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjM4NzJcIjonK3Byb2o9dXRtICt6b25lPTUyICtlbGxwcz1XR1M4NCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMzg3N1wiOicrcHJvaj11dG0gK3pvbmU9NDcgK3NvdXRoICtlbGxwcz1XR1M4NCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMzg3OFwiOicrcHJvaj11dG0gK3pvbmU9NDggK3NvdXRoICtlbGxwcz1XR1M4NCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMzg3OVwiOicrcHJvaj11dG0gK3pvbmU9NDkgK3NvdXRoICtlbGxwcz1XR1M4NCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMzg4MFwiOicrcHJvaj11dG0gK3pvbmU9NTAgK3NvdXRoICtlbGxwcz1XR1M4NCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMzg4MVwiOicrcHJvaj11dG0gK3pvbmU9NTEgK3NvdXRoICtlbGxwcz1XR1M4NCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMzg4MlwiOicrcHJvaj11dG0gK3pvbmU9NTIgK3NvdXRoICtlbGxwcz1XR1M4NCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMzg4M1wiOicrcHJvaj11dG0gK3pvbmU9NTMgK3NvdXRoICtlbGxwcz1XR1M4NCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMzg4NFwiOicrcHJvaj11dG0gK3pvbmU9NTQgK3NvdXRoICtlbGxwcz1XR1M4NCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMzg4NlwiOicrcHJvaj11dG0gK3pvbmU9NDYgK3NvdXRoICthPTYzNzgxNjAgK2I9NjM1Njc3NC41MDQwODU1NCArdG93Z3M4ND0tMjQsLTE1LDUsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjM4ODdcIjonK3Byb2o9dXRtICt6b25lPTQ3ICtzb3V0aCArYT02Mzc4MTYwICtiPTYzNTY3NzQuNTA0MDg1NTQgK3Rvd2dzODQ9LTI0LC0xNSw1LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIzODg4XCI6Jytwcm9qPXV0bSArem9uZT00OCArc291dGggK2E9NjM3ODE2MCArYj02MzU2Nzc0LjUwNDA4NTU0ICt0b3dnczg0PS0yNCwtMTUsNSwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMzg4OVwiOicrcHJvaj11dG0gK3pvbmU9NDkgK3NvdXRoICthPTYzNzgxNjAgK2I9NjM1Njc3NC41MDQwODU1NCArdG93Z3M4ND0tMjQsLTE1LDUsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjM4OTBcIjonK3Byb2o9dXRtICt6b25lPTUwICtzb3V0aCArYT02Mzc4MTYwICtiPTYzNTY3NzQuNTA0MDg1NTQgK3Rvd2dzODQ9LTI0LC0xNSw1LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIzODkxXCI6Jytwcm9qPXV0bSArem9uZT01MSArc291dGggK2E9NjM3ODE2MCArYj02MzU2Nzc0LjUwNDA4NTU0ICt0b3dnczg0PS0yNCwtMTUsNSwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMzg5MlwiOicrcHJvaj11dG0gK3pvbmU9NTIgK3NvdXRoICthPTYzNzgxNjAgK2I9NjM1Njc3NC41MDQwODU1NCArdG93Z3M4ND0tMjQsLTE1LDUsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjM4OTNcIjonK3Byb2o9dXRtICt6b25lPTUzICtzb3V0aCArYT02Mzc4MTYwICtiPTYzNTY3NzQuNTA0MDg1NTQgK3Rvd2dzODQ9LTI0LC0xNSw1LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjIzODk0XCI6Jytwcm9qPXV0bSArem9uZT01NCArc291dGggK2E9NjM3ODE2MCArYj02MzU2Nzc0LjUwNDA4NTU0ICt0b3dnczg0PS0yNCwtMTUsNSwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMzk0NlwiOicrcHJvaj11dG0gK3pvbmU9NDYgK2E9NjM3NzI3Ni4zNDUgK2I9NjM1NjA3NS40MTMxNDAyNCArdG93Z3M4ND0yMTcsODIzLDI5OSwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMzk0N1wiOicrcHJvaj11dG0gK3pvbmU9NDcgK2E9NjM3NzI3Ni4zNDUgK2I9NjM1NjA3NS40MTMxNDAyNCArdG93Z3M4ND0yMTcsODIzLDI5OSwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyMzk0OFwiOicrcHJvaj11dG0gK3pvbmU9NDggK2E9NjM3NzI3Ni4zNDUgK2I9NjM1NjA3NS40MTMxNDAyNCArdG93Z3M4ND0yMTcsODIzLDI5OSwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNDA0N1wiOicrcHJvaj11dG0gK3pvbmU9NDcgK2E9NjM3NzI3Ni4zNDUgK2I9NjM1NjA3NS40MTMxNDAyNCArdG93Z3M4ND0yMTAsODE0LDI4OSwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNDA0OFwiOicrcHJvaj11dG0gK3pvbmU9NDggK2E9NjM3NzI3Ni4zNDUgK2I9NjM1NjA3NS40MTMxNDAyNCArdG93Z3M4ND0yMTAsODE0LDI4OSwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNDEwMFwiOicrcHJvaj1sY2MgK2xhdF8xPTE4ICtsYXRfMD0xOCArbG9uXzA9LTc3ICtrXzA9MSAreF8wPTE2NzYzOC40OTU5NyAreV8wPTEyMTkxOC45MDYxNiArYT02Mzc4MjQ5LjE0NDgwODAxMSArYj02MzU2NTE0Ljk2NjIwNDEzNCArdG9fbWV0ZXI9MC4zMDQ3OTcyNjU0ICtub19kZWZzICcsXG4gIFwiRVBTRzoyNDIwMFwiOicrcHJvaj1sY2MgK2xhdF8xPTE4ICtsYXRfMD0xOCArbG9uXzA9LTc3ICtrXzA9MSAreF8wPTI1MDAwMCAreV8wPTE1MDAwMCArZWxscHM9Y2xyazY2ICt0b3dnczg0PTcwLDIwNywzODkuNSwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNDMwNVwiOicrcHJvaj11dG0gK3pvbmU9NDUgK2E9NjM3NzI3Ni4zNDUgK2I9NjM1NjA3NS40MTMxNDAyNCArdG93Z3M4ND0yMTQsODA0LDI2OCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNDMwNlwiOicrcHJvaj11dG0gK3pvbmU9NDYgK2E9NjM3NzI3Ni4zNDUgK2I9NjM1NjA3NS40MTMxNDAyNCArdG93Z3M4ND0yMTQsODA0LDI2OCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNDMxMVwiOicrcHJvaj11dG0gK3pvbmU9NDEgK2E9NjM3NzMwMS4yNDMgK2I9NjM1NjEwMC4yMzAxNjUzODQgK3Rvd2dzODQ9MjgzLDY4MiwyMzEsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjQzMTJcIjonK3Byb2o9dXRtICt6b25lPTQyICthPTYzNzczMDEuMjQzICtiPTYzNTYxMDAuMjMwMTY1Mzg0ICt0b3dnczg0PTI4Myw2ODIsMjMxLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI0MzEzXCI6Jytwcm9qPXV0bSArem9uZT00MyArYT02Mzc3MzAxLjI0MyArYj02MzU2MTAwLjIzMDE2NTM4NCArdG93Z3M4ND0yODMsNjgyLDIzMSwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNDM0MlwiOicrcHJvaj11dG0gK3pvbmU9NDIgK2E9NjM3NzI5OS4xNTEgK2I9NjM1NjA5OC4xNDUxMjAxMzIgK3Rvd2dzODQ9Mjk1LDczNiwyNTcsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjQzNDNcIjonK3Byb2o9dXRtICt6b25lPTQzICthPTYzNzcyOTkuMTUxICtiPTYzNTYwOTguMTQ1MTIwMTMyICt0b3dnczg0PTI5NSw3MzYsMjU3LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI0MzQ0XCI6Jytwcm9qPXV0bSArem9uZT00NCArYT02Mzc3Mjk5LjE1MSArYj02MzU2MDk4LjE0NTEyMDEzMiArdG93Z3M4ND0yOTUsNzM2LDI1NywwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNDM0NVwiOicrcHJvaj11dG0gK3pvbmU9NDUgK2E9NjM3NzI5OS4xNTEgK2I9NjM1NjA5OC4xNDUxMjAxMzIgK3Rvd2dzODQ9Mjk1LDczNiwyNTcsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjQzNDZcIjonK3Byb2o9dXRtICt6b25lPTQ2ICthPTYzNzcyOTkuMTUxICtiPTYzNTYwOTguMTQ1MTIwMTMyICt0b3dnczg0PTI5NSw3MzYsMjU3LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI0MzQ3XCI6Jytwcm9qPXV0bSArem9uZT00NyArYT02Mzc3Mjk5LjE1MSArYj02MzU2MDk4LjE0NTEyMDEzMiArdG93Z3M4ND0yOTUsNzM2LDI1NywwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNDM3MFwiOicrcHJvaj1sY2MgK2xhdF8xPTM5LjUgK2xhdF8wPTM5LjUgK2xvbl8wPTY4ICtrXzA9MC45OTg0NjE1NCAreF8wPTIxNTM4NjUuNzM5MTY4NTMgK3lfMD0yMzY4MjkyLjE5NDYyODEwMiArYT02Mzc3Mjk5LjM2NTU5NTM4ICtiPTYzNTYwOTguMzU5MDA1MTU2ICt0b19tZXRlcj0wLjkxNDM5ODUzMDc0NDQ0MDggK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI0MzcxXCI6Jytwcm9qPWxjYyArbGF0XzE9MzIuNSArbGF0XzA9MzIuNSArbG9uXzA9NjggK2tfMD0wLjk5ODc4NjQxICt4XzA9Mjc0MzE5NS41OTIyMzMzMjIgK3lfMD05MTQzOTguNTMwNzQ0NDQwNyArYT02Mzc3Mjk5LjM2NTU5NTM4ICtiPTYzNTYwOTguMzU5MDA1MTU2ICt0b19tZXRlcj0wLjkxNDM5ODUzMDc0NDQ0MDggK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI0MzcyXCI6Jytwcm9qPWxjYyArbGF0XzE9MjYgK2xhdF8wPTI2ICtsb25fMD03NCAra18wPTAuOTk4Nzg2NDEgK3hfMD0yNzQzMTk1LjU5MjIzMzMyMiAreV8wPTkxNDM5OC41MzA3NDQ0NDA3ICthPTYzNzcyOTkuMzY1NTk1MzggK2I9NjM1NjA5OC4zNTkwMDUxNTYgK3RvX21ldGVyPTAuOTE0Mzk4NTMwNzQ0NDQwOCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjQzNzNcIjonK3Byb2o9bGNjICtsYXRfMT0xOSArbGF0XzA9MTkgK2xvbl8wPTgwICtrXzA9MC45OTg3ODY0MSAreF8wPTI3NDMxOTUuNTkyMjMzMzIyICt5XzA9OTE0Mzk4LjUzMDc0NDQ0MDcgK2E9NjM3NzI5OS4zNjU1OTUzOCArYj02MzU2MDk4LjM1OTAwNTE1NiArdG9fbWV0ZXI9MC45MTQzOTg1MzA3NDQ0NDA4ICtub19kZWZzICcsXG4gIFwiRVBTRzoyNDM3NFwiOicrcHJvaj1sY2MgK2xhdF8xPTEyICtsYXRfMD0xMiArbG9uXzA9ODAgK2tfMD0wLjk5ODc4NjQxICt4XzA9Mjc0MzE5NS41OTIyMzMzMjIgK3lfMD05MTQzOTguNTMwNzQ0NDQwNyArYT02Mzc3Mjk5LjM2NTU5NTM4ICtiPTYzNTYwOTguMzU5MDA1MTU2ICt0b19tZXRlcj0wLjkxNDM5ODUzMDc0NDQ0MDggK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI0Mzc1XCI6Jytwcm9qPWxjYyArbGF0XzE9MjYgK2xhdF8wPTI2ICtsb25fMD05MCAra18wPTAuOTk4Nzg2NDEgK3hfMD0yNzQzMTg1LjY5ICt5XzA9OTE0Mzk1LjIzICthPTYzNzcyNzYuMzQ1ICtiPTYzNTYwNzUuNDEzMTQwMjQgK3Rvd2dzODQ9MjE0LDgwNCwyNjgsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjQzNzZcIjonK3Byb2o9bGNjICtsYXRfMT0zMi41ICtsYXRfMD0zMi41ICtsb25fMD02OCAra18wPTAuOTk4Nzg2NDEgK3hfMD0yNzQzMTk2LjQgK3lfMD05MTQzOTguOCArYT02Mzc3MzAxLjI0MyArYj02MzU2MTAwLjIzMDE2NTM4NCArdG93Z3M4ND0yODMsNjgyLDIzMSwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNDM3N1wiOicrcHJvaj1sY2MgK2xhdF8xPTI2ICtsYXRfMD0yNiArbG9uXzA9NzQgK2tfMD0wLjk5ODc4NjQxICt4XzA9Mjc0MzE5Ni40ICt5XzA9OTE0Mzk4LjggK2E9NjM3NzMwMS4yNDMgK2I9NjM1NjEwMC4yMzAxNjUzODQgK3Rvd2dzODQ9MjgzLDY4MiwyMzEsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjQzNzhcIjonK3Byb2o9bGNjICtsYXRfMT0zMi41ICtsYXRfMD0zMi41ICtsb25fMD02OCAra18wPTAuOTk4Nzg2NDEgK3hfMD0yNzQzMTk1LjUgK3lfMD05MTQzOTguNSArYT02Mzc3Mjk5LjE1MSArYj02MzU2MDk4LjE0NTEyMDEzMiArdG93Z3M4ND0yOTUsNzM2LDI1NywwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNDM3OVwiOicrcHJvaj1sY2MgK2xhdF8xPTI2ICtsYXRfMD0yNiArbG9uXzA9NzQgK2tfMD0wLjk5ODc4NjQxICt4XzA9Mjc0MzE5NS41ICt5XzA9OTE0Mzk4LjUgK2E9NjM3NzI5OS4xNTEgK2I9NjM1NjA5OC4xNDUxMjAxMzIgK3Rvd2dzODQ9Mjk1LDczNiwyNTcsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjQzODBcIjonK3Byb2o9bGNjICtsYXRfMT0yNiArbGF0XzA9MjYgK2xvbl8wPTkwICtrXzA9MC45OTg3ODY0MSAreF8wPTI3NDMxOTUuNSAreV8wPTkxNDM5OC41ICthPTYzNzcyOTkuMTUxICtiPTYzNTYwOTguMTQ1MTIwMTMyICt0b3dnczg0PTI5NSw3MzYsMjU3LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI0MzgxXCI6Jytwcm9qPWxjYyArbGF0XzE9MTkgK2xhdF8wPTE5ICtsb25fMD04MCAra18wPTAuOTk4Nzg2NDEgK3hfMD0yNzQzMTk1LjUgK3lfMD05MTQzOTguNSArYT02Mzc3Mjk5LjE1MSArYj02MzU2MDk4LjE0NTEyMDEzMiArdG93Z3M4ND0yOTUsNzM2LDI1NywwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNDM4MlwiOicrcHJvaj1sY2MgK2xhdF8xPTI2ICtsYXRfMD0yNiArbG9uXzA9OTAgK2tfMD0wLjk5ODc4NjQxICt4XzA9Mjc0MzE5NS41OTIyMzMzMjIgK3lfMD05MTQzOTguNTMwNzQ0NDQwNyArYT02Mzc3Mjk5LjM2NTU5NTM4ICtiPTYzNTYwOTguMzU5MDA1MTU2ICt0b19tZXRlcj0wLjkxNDM5ODUzMDc0NDQ0MDggK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI0MzgzXCI6Jytwcm9qPWxjYyArbGF0XzE9MTIgK2xhdF8wPTEyICtsb25fMD04MCAra18wPTAuOTk4Nzg2NDEgK3hfMD0yNzQzMTk1LjUgK3lfMD05MTQzOTguNSArYT02Mzc3Mjk5LjE1MSArYj02MzU2MDk4LjE0NTEyMDEzMiArdG93Z3M4ND0yOTUsNzM2LDI1NywwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNDUwMFwiOicrcHJvaj1jYXNzICtsYXRfMD0xLjI4NzY0NjY2NjY2NjY2NyArbG9uXzA9MTAzLjg1MzAwMjIyMjIyMjIgK3hfMD0zMDAwMCAreV8wPTMwMDAwICthPTYzNzczMDQuMDYzICtiPTYzNTYxMDMuMDM4OTkzMTU1ICt0b3dnczg0PS0xMSw4NTEsNSwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNDU0N1wiOicrcHJvaj11dG0gK3pvbmU9NDcgK2E9NjM3NzMwNC4wNjMgK2I9NjM1NjEwMy4wMzg5OTMxNTUgK3Rvd2dzODQ9LTExLDg1MSw1LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI0NTQ4XCI6Jytwcm9qPXV0bSArem9uZT00OCArYT02Mzc3MzA0LjA2MyArYj02MzU2MTAzLjAzODk5MzE1NSArdG93Z3M4ND0tMTEsODUxLDUsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjQ1NzFcIjonK3Byb2o9b21lcmMgK2xhdF8wPTQgK2xvbmM9MTAyLjI1ICthbHBoYT0zMjMuMDI1NzkwNSAraz0wLjk5OTg0ICt4XzA9ODA0NjcxLjI5OTc3NTAzNDggK3lfMD0wICtub191b2ZmICtnYW1tYT0zMjMuMTMwMTAyMzYxMTExMSArYT02Mzc3MzA0LjA2MyArYj02MzU2MTAzLjAzODk5MzE1NSArdG93Z3M4ND0tMTEsODUxLDUsMCwwLDAsMCArdG9fbWV0ZXI9MjAuMTE2NzgyNDk0Mzc1ODcgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI0NjAwXCI6Jytwcm9qPWxjYyArbGF0XzE9MzIuNSArbGF0XzA9MzIuNSArbG9uXzA9NDUgK2tfMD0wLjk5ODc4NjQwNzgwMDAwMDEgK3hfMD0xNTAwMDAwICt5XzA9MTE2NjIwMCArZWxscHM9Y2xyazgwICt0b3dnczg0PS0yOTQuNywtMjAwLjEsNTI1LjUsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjQ3MThcIjonK3Byb2o9dXRtICt6b25lPTE4ICtlbGxwcz1pbnRsICt0b3dnczg0PS0yNzMuNSwxMTAuNiwtMzU3LjksMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjQ3MTlcIjonK3Byb2o9dXRtICt6b25lPTE5ICtlbGxwcz1pbnRsICt0b3dnczg0PS0yNzMuNSwxMTAuNiwtMzU3LjksMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjQ3MjBcIjonK3Byb2o9dXRtICt6b25lPTIwICtlbGxwcz1pbnRsICt0b3dnczg0PS0yNzMuNSwxMTAuNiwtMzU3LjksMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjQ4MTdcIjonK3Byb2o9dXRtICt6b25lPTE3ICtlbGxwcz1pbnRsICt0b3dnczg0PS0yODgsMTc1LC0zNzYsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjQ4MThcIjonK3Byb2o9dXRtICt6b25lPTE4ICtlbGxwcz1pbnRsICt0b3dnczg0PS0yODgsMTc1LC0zNzYsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjQ4MTlcIjonK3Byb2o9dXRtICt6b25lPTE5ICtlbGxwcz1pbnRsICt0b3dnczg0PS0yODgsMTc1LC0zNzYsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjQ4MjBcIjonK3Byb2o9dXRtICt6b25lPTIwICtlbGxwcz1pbnRsICt0b3dnczg0PS0yODgsMTc1LC0zNzYsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjQ4MjFcIjonK3Byb2o9dXRtICt6b25lPTIxICtlbGxwcz1pbnRsICt0b3dnczg0PS0yODgsMTc1LC0zNzYsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjQ4NzdcIjonK3Byb2o9dXRtICt6b25lPTE3ICtzb3V0aCArZWxscHM9aW50bCArdG93Z3M4ND0tMjg4LDE3NSwtMzc2LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI0ODc4XCI6Jytwcm9qPXV0bSArem9uZT0xOCArc291dGggK2VsbHBzPWludGwgK3Rvd2dzODQ9LTI4OCwxNzUsLTM3NiwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNDg3OVwiOicrcHJvaj11dG0gK3pvbmU9MTkgK3NvdXRoICtlbGxwcz1pbnRsICt0b3dnczg0PS0yODgsMTc1LC0zNzYsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjQ4ODBcIjonK3Byb2o9dXRtICt6b25lPTIwICtzb3V0aCArZWxscHM9aW50bCArdG93Z3M4ND0tMjg4LDE3NSwtMzc2LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI0ODgxXCI6Jytwcm9qPXV0bSArem9uZT0yMSArc291dGggK2VsbHBzPWludGwgK3Rvd2dzODQ9LTI4OCwxNzUsLTM3NiwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNDg4MlwiOicrcHJvaj11dG0gK3pvbmU9MjIgK3NvdXRoICtlbGxwcz1pbnRsICt0b3dnczg0PS0yODgsMTc1LC0zNzYsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjQ4OTFcIjonK3Byb2o9dG1lcmMgK2xhdF8wPS02ICtsb25fMD0tODAuNSAraz0wLjk5OTgzMDA4ICt4XzA9MjIyMDAwICt5XzA9MTQyNjgzNC43NDMgK2VsbHBzPWludGwgK3Rvd2dzODQ9LTI4OCwxNzUsLTM3NiwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNDg5MlwiOicrcHJvaj10bWVyYyArbGF0XzA9LTkuNSArbG9uXzA9LTc2ICtrPTAuOTk5MzI5OTQgK3hfMD03MjAwMDAgK3lfMD0xMDM5OTc5LjE1OSArZWxscHM9aW50bCArdG93Z3M4ND0tMjg4LDE3NSwtMzc2LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI0ODkzXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0tOS41ICtsb25fMD0tNzAuNSAraz0wLjk5OTUyOTkyICt4XzA9MTMyNDAwMCAreV8wPTEwNDAwODQuNTU4ICtlbGxwcz1pbnRsICt0b3dnczg0PS0yODgsMTc1LC0zNzYsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjUwMDBcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTQuNjY2NjY2NjY2NjY2NjY3ICtsb25fMD0tMSAraz0wLjk5OTc1ICt4XzA9Mjc0MzE5LjUxICt5XzA9MCArZWxscHM9Y2xyazgwICt0b3dnczg0PS0xMzAsMjksMzY0LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI1MjMxXCI6Jytwcm9qPXV0bSArem9uZT0zMSArYT02Mzc4MjQ5LjIgK2I9NjM1NjUxNSArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjUzOTFcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTExNyAraz0wLjk5OTk1ICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9Y2xyazY2ICt0b3dnczg0PS0xMzMsLTc3LC01MSwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNTM5MlwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTE5ICtrPTAuOTk5OTUgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1jbHJrNjYgK3Rvd2dzODQ9LTEzMywtNzcsLTUxLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI1MzkzXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMjEgK2s9MC45OTk5NSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWNscms2NiArdG93Z3M4ND0tMTMzLC03NywtNTEsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjUzOTRcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTEyMyAraz0wLjk5OTk1ICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9Y2xyazY2ICt0b3dnczg0PS0xMzMsLTc3LC01MSwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNTM5NVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTI1ICtrPTAuOTk5OTUgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1jbHJrNjYgK3Rvd2dzODQ9LTEzMywtNzcsLTUxLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI1NzAwXCI6Jytwcm9qPW1lcmMgK2xvbl8wPTExMCAraz0wLjk5NyAreF8wPTM5MDAwMDAgK3lfMD05MDAwMDAgK2VsbHBzPWJlc3NlbCArdG93Z3M4ND0tNTg3LjgsNTE5Ljc1LDE0NS43NiwwLDAsMCwwICtwbT1qYWthcnRhICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNTgyOFwiOicrcHJvaj11dG0gK3pvbmU9MjggK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI1ODI5XCI6Jytwcm9qPXV0bSArem9uZT0yOSArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjU4MzBcIjonK3Byb2o9dXRtICt6b25lPTMwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNTgzMVwiOicrcHJvaj11dG0gK3pvbmU9MzEgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI1ODMyXCI6Jytwcm9qPXV0bSArem9uZT0zMiArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjU4MzNcIjonK3Byb2o9dXRtICt6b25lPTMzICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNTgzNFwiOicrcHJvaj11dG0gK3pvbmU9MzQgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI1ODM1XCI6Jytwcm9qPXV0bSArem9uZT0zNSArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjU4MzZcIjonK3Byb2o9dXRtICt6b25lPTM2ICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNTgzN1wiOicrcHJvaj11dG0gK3pvbmU9MzcgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI1ODM4XCI6Jytwcm9qPXV0bSArem9uZT0zOCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjU4ODRcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTI0ICtrPTAuOTk5NiAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI1OTMyXCI6Jytwcm9qPXV0bSArem9uZT0zMiArc291dGggK2VsbHBzPWludGwgK3Rvd2dzODQ9LTI1NC4xLC01LjM2LC0xMDAuMjksMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjYxOTFcIjonK3Byb2o9bGNjICtsYXRfMT0zMy4zICtsYXRfMD0zMy4zICtsb25fMD0tNS40ICtrXzA9MC45OTk2MjU3NjkgK3hfMD01MDAwMDAgK3lfMD0zMDAwMDAgK2E9NjM3ODI0OS4yICtiPTYzNTY1MTUgK3Rvd2dzODQ9MzEsMTQ2LDQ3LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2MTkyXCI6Jytwcm9qPWxjYyArbGF0XzE9MjkuNyArbGF0XzA9MjkuNyArbG9uXzA9LTUuNCAra18wPTAuOTk5NjE1NTk2MDAwMDAwMSAreF8wPTUwMDAwMCAreV8wPTMwMDAwMCArYT02Mzc4MjQ5LjIgK2I9NjM1NjUxNSArdG93Z3M4ND0zMSwxNDYsNDcsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjYxOTNcIjonK3Byb2o9bGNjICtsYXRfMT0yNi4xICtsYXRfMD0yNi4xICtsb25fMD0tNS40ICtrXzA9MC45OTk2ICt4XzA9MTIwMDAwMCAreV8wPTQwMDAwMCArYT02Mzc4MjQ5LjIgK2I9NjM1NjUxNSArdG93Z3M4ND0zMSwxNDYsNDcsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjYxOTRcIjonK3Byb2o9bGNjICtsYXRfMT0yNi4xICtsYXRfMD0yNi4xICtsb25fMD0tNS40ICtrXzA9MC45OTk2MTYzMDQgK3hfMD0xMjAwMDAwICt5XzA9NDAwMDAwICthPTYzNzgyNDkuMiArYj02MzU2NTE1ICt0b3dnczg0PTMxLDE0Niw0NywwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjE5NVwiOicrcHJvaj1sY2MgK2xhdF8xPTIyLjUgK2xhdF8wPTIyLjUgK2xvbl8wPS01LjQgK2tfMD0wLjk5OTYxNjQzNyAreF8wPTE1MDAwMDAgK3lfMD00MDAwMDAgK2E9NjM3ODI0OS4yICtiPTYzNTY1MTUgK3Rvd2dzODQ9MzEsMTQ2LDQ3LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2MjM3XCI6Jytwcm9qPXV0bSArem9uZT0zNyArZWxscHM9YmVzc2VsICt0b3dnczg0PTYzOSw0MDUsNjAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjYzMzFcIjonK3Byb2o9dXRtICt6b25lPTMxICtlbGxwcz1jbHJrODAgK3Rvd2dzODQ9LTkyLC05MywxMjIsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjYzMzJcIjonK3Byb2o9dXRtICt6b25lPTMyICtlbGxwcz1jbHJrODAgK3Rvd2dzODQ9LTkyLC05MywxMjIsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjYzOTFcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTQgK2xvbl8wPTQuNSAraz0wLjk5OTc1ICt4XzA9MjMwNzM4LjI2ICt5XzA9MCArZWxscHM9Y2xyazgwICt0b3dnczg0PS05MiwtOTMsMTIyLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2MzkyXCI6Jytwcm9qPXRtZXJjICtsYXRfMD00ICtsb25fMD04LjUgK2s9MC45OTk3NSAreF8wPTY3MDU1My45OCAreV8wPTAgK2VsbHBzPWNscms4MCArdG93Z3M4ND0tOTIsLTkzLDEyMiwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjM5M1wiOicrcHJvaj10bWVyYyArbGF0XzA9NCArbG9uXzA9MTIuNSAraz0wLjk5OTc1ICt4XzA9MTExMDM2OS43ICt5XzA9MCArZWxscHM9Y2xyazgwICt0b3dnczg0PS05MiwtOTMsMTIyLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2NDMyXCI6Jytwcm9qPXV0bSArem9uZT0zMiArc291dGggK2VsbHBzPWludGwgK3Rvd2dzODQ9LTI1Mi45NSwtNC4xMSwtOTYuMzgsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY1OTFcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPS0zLjQ1MjMzMzMzMzMzMzMzICtrPTAuOTk5NiAreF8wPTE1MDAwMDAgK3lfMD0wICtlbGxwcz1pbnRsICt0b3dnczg0PS0xMDQuMSwtNDkuMSwtOS45LDAuOTcxLC0yLjkxNywwLjcxNCwtMTEuNjggK3BtPXJvbWUgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2NTkyXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0yLjU0NzY2NjY2NjY2NjY2ICtrPTAuOTk5NiAreF8wPTI1MjAwMDAgK3lfMD0wICtlbGxwcz1pbnRsICt0b3dnczg0PS0xMDQuMSwtNDkuMSwtOS45LDAuOTcxLC0yLjkxNywwLjcxNCwtMTEuNjggK3BtPXJvbWUgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2NjMyXCI6Jytwcm9qPXV0bSArem9uZT0zMiArYT02Mzc4MjQ5LjIgK2I9NjM1NjUxNSArdG93Z3M4ND0tNzQsLTEzMCw0MiwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjY5MlwiOicrcHJvaj11dG0gK3pvbmU9MzIgK3NvdXRoICthPTYzNzgyNDkuMiArYj02MzU2NTE1ICt0b3dnczg0PS03NCwtMTMwLDQyLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2NzAxXCI6Jytwcm9qPXV0bSArem9uZT0xICtkYXR1bT1OQUQyNyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY3MDJcIjonK3Byb2o9dXRtICt6b25lPTIgK2RhdHVtPU5BRDI3ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjcwM1wiOicrcHJvaj11dG0gK3pvbmU9MyArZGF0dW09TkFEMjcgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2NzA0XCI6Jytwcm9qPXV0bSArem9uZT00ICtkYXR1bT1OQUQyNyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY3MDVcIjonK3Byb2o9dXRtICt6b25lPTUgK2RhdHVtPU5BRDI3ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjcwNlwiOicrcHJvaj11dG0gK3pvbmU9NiArZGF0dW09TkFEMjcgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2NzA3XCI6Jytwcm9qPXV0bSArem9uZT03ICtkYXR1bT1OQUQyNyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY3MDhcIjonK3Byb2o9dXRtICt6b25lPTggK2RhdHVtPU5BRDI3ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjcwOVwiOicrcHJvaj11dG0gK3pvbmU9OSArZGF0dW09TkFEMjcgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2NzEwXCI6Jytwcm9qPXV0bSArem9uZT0xMCArZGF0dW09TkFEMjcgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2NzExXCI6Jytwcm9qPXV0bSArem9uZT0xMSArZGF0dW09TkFEMjcgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2NzEyXCI6Jytwcm9qPXV0bSArem9uZT0xMiArZGF0dW09TkFEMjcgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2NzEzXCI6Jytwcm9qPXV0bSArem9uZT0xMyArZGF0dW09TkFEMjcgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2NzE0XCI6Jytwcm9qPXV0bSArem9uZT0xNCArZGF0dW09TkFEMjcgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2NzE1XCI6Jytwcm9qPXV0bSArem9uZT0xNSArZGF0dW09TkFEMjcgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2NzE2XCI6Jytwcm9qPXV0bSArem9uZT0xNiArZGF0dW09TkFEMjcgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2NzE3XCI6Jytwcm9qPXV0bSArem9uZT0xNyArZGF0dW09TkFEMjcgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2NzE4XCI6Jytwcm9qPXV0bSArem9uZT0xOCArZGF0dW09TkFEMjcgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2NzE5XCI6Jytwcm9qPXV0bSArem9uZT0xOSArZGF0dW09TkFEMjcgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2NzIwXCI6Jytwcm9qPXV0bSArem9uZT0yMCArZGF0dW09TkFEMjcgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2NzIxXCI6Jytwcm9qPXV0bSArem9uZT0yMSArZGF0dW09TkFEMjcgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2NzIyXCI6Jytwcm9qPXV0bSArem9uZT0yMiArZGF0dW09TkFEMjcgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2NzI5XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0zMC41ICtsb25fMD0tODUuODMzMzMzMzMzMzMzMzMgK2s9MC45OTk5NiAreF8wPTE1MjQwMC4zMDQ4MDA2MDk2ICt5XzA9MCArZGF0dW09TkFEMjcgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjczMFwiOicrcHJvaj10bWVyYyArbGF0XzA9MzAgK2xvbl8wPS04Ny41ICtrPTAuOTk5OTMzMzMzICt4XzA9MTUyNDAwLjMwNDgwMDYwOTYgK3lfMD0wICtkYXR1bT1OQUQyNyArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2NzMxXCI6Jytwcm9qPW9tZXJjICtsYXRfMD01NyArbG9uYz0tMTMzLjY2NjY2NjY2NjY2NjcgK2FscGhhPTMyMy4xMzAxMDIzNjExMTExICtrPTAuOTk5OSAreF8wPTUwMDAwMDAuMDAxMDE2MDAyICt5XzA9LTUwMDAwMDAuMDAxMDE2MDAyICtub191b2ZmICtnYW1tYT0zMjMuMTMwMTAyMzYxMTExMSArZGF0dW09TkFEMjcgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjczMlwiOicrcHJvaj10bWVyYyArbGF0XzA9NTQgK2xvbl8wPS0xNDIgK2s9MC45OTk5ICt4XzA9MTUyNDAwLjMwNDgwMDYwOTYgK3lfMD0wICtkYXR1bT1OQUQyNyArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2NzMzXCI6Jytwcm9qPXRtZXJjICtsYXRfMD01NCArbG9uXzA9LTE0NiAraz0wLjk5OTkgK3hfMD0xNTI0MDAuMzA0ODAwNjA5NiAreV8wPTAgK2RhdHVtPU5BRDI3ICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY3MzRcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTU0ICtsb25fMD0tMTUwICtrPTAuOTk5OSAreF8wPTE1MjQwMC4zMDQ4MDA2MDk2ICt5XzA9MCArZGF0dW09TkFEMjcgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjczNVwiOicrcHJvaj10bWVyYyArbGF0XzA9NTQgK2xvbl8wPS0xNTQgK2s9MC45OTk5ICt4XzA9MTUyNDAwLjMwNDgwMDYwOTYgK3lfMD0wICtkYXR1bT1OQUQyNyArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2NzM2XCI6Jytwcm9qPXRtZXJjICtsYXRfMD01NCArbG9uXzA9LTE1OCAraz0wLjk5OTkgK3hfMD0xNTI0MDAuMzA0ODAwNjA5NiAreV8wPTAgK2RhdHVtPU5BRDI3ICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY3MzdcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTU0ICtsb25fMD0tMTYyICtrPTAuOTk5OSAreF8wPTIxMzM2MC40MjY3MjA4NTM0ICt5XzA9MCArZGF0dW09TkFEMjcgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjczOFwiOicrcHJvaj10bWVyYyArbGF0XzA9NTQgK2xvbl8wPS0xNjYgK2s9MC45OTk5ICt4XzA9MTUyNDAwLjMwNDgwMDYwOTYgK3lfMD0wICtkYXR1bT1OQUQyNyArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2NzM5XCI6Jytwcm9qPXRtZXJjICtsYXRfMD01NCArbG9uXzA9LTE3MCAraz0wLjk5OTkgK3hfMD0xODI4ODAuMzY1NzYwNzMxNSAreV8wPTAgK2RhdHVtPU5BRDI3ICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY3NDBcIjonK3Byb2o9bGNjICtsYXRfMT01My44MzMzMzMzMzMzMzMzNCArbGF0XzI9NTEuODMzMzMzMzMzMzMzMzQgK2xhdF8wPTUxICtsb25fMD0tMTc2ICt4XzA9OTE0NDAxLjgyODgwMzY1NzYgK3lfMD0wICtkYXR1bT1OQUQyNyArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2NzQxXCI6Jytwcm9qPWxjYyArbGF0XzE9NDEuNjY2NjY2NjY2NjY2NjYgK2xhdF8yPTQwICtsYXRfMD0zOS4zMzMzMzMzMzMzMzMzNCArbG9uXzA9LTEyMiAreF8wPTYwOTYwMS4yMTkyMDI0Mzg0ICt5XzA9MCArZGF0dW09TkFEMjcgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjc0MlwiOicrcHJvaj1sY2MgK2xhdF8xPTM5LjgzMzMzMzMzMzMzMzM0ICtsYXRfMj0zOC4zMzMzMzMzMzMzMzMzNCArbGF0XzA9MzcuNjY2NjY2NjY2NjY2NjYgK2xvbl8wPS0xMjIgK3hfMD02MDk2MDEuMjE5MjAyNDM4NCAreV8wPTAgK2RhdHVtPU5BRDI3ICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY3NDNcIjonK3Byb2o9bGNjICtsYXRfMT0zOC40MzMzMzMzMzMzMzMzMyArbGF0XzI9MzcuMDY2NjY2NjY2NjY2NjcgK2xhdF8wPTM2LjUgK2xvbl8wPS0xMjAuNSAreF8wPTYwOTYwMS4yMTkyMDI0Mzg0ICt5XzA9MCArZGF0dW09TkFEMjcgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjc0NFwiOicrcHJvaj1sY2MgK2xhdF8xPTM3LjI1ICtsYXRfMj0zNiArbGF0XzA9MzUuMzMzMzMzMzMzMzMzMzQgK2xvbl8wPS0xMTkgK3hfMD02MDk2MDEuMjE5MjAyNDM4NCAreV8wPTAgK2RhdHVtPU5BRDI3ICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY3NDVcIjonK3Byb2o9bGNjICtsYXRfMT0zNS40NjY2NjY2NjY2NjY2NyArbGF0XzI9MzQuMDMzMzMzMzMzMzMzMzMgK2xhdF8wPTMzLjUgK2xvbl8wPS0xMTggK3hfMD02MDk2MDEuMjE5MjAyNDM4NCAreV8wPTAgK2RhdHVtPU5BRDI3ICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY3NDZcIjonK3Byb2o9bGNjICtsYXRfMT0zMy44ODMzMzMzMzMzMzMzMyArbGF0XzI9MzIuNzgzMzMzMzMzMzMzMzMgK2xhdF8wPTMyLjE2NjY2NjY2NjY2NjY2ICtsb25fMD0tMTE2LjI1ICt4XzA9NjA5NjAxLjIxOTIwMjQzODQgK3lfMD0wICtkYXR1bT1OQUQyNyArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2NzQ3XCI6Jytwcm9qPWxjYyArbGF0XzE9MzQuNDE2NjY2NjY2NjY2NjYgK2xhdF8yPTMzLjg2NjY2NjY2NjY2NjY3ICtsYXRfMD0zNC4xMzMzMzMzMzMzMzMzMyArbG9uXzA9LTExOC4zMzMzMzMzMzMzMzMzICt4XzA9MTI3NjEwNi40NTA1OTY5MDEgK3lfMD0xMjcwNzkuNTI0NTExMDQ5ICtkYXR1bT1OQUQyNyArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2NzQ4XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0zMSArbG9uXzA9LTExMC4xNjY2NjY2NjY2NjY3ICtrPTAuOTk5OSAreF8wPTE1MjQwMC4zMDQ4MDA2MDk2ICt5XzA9MCArZGF0dW09TkFEMjcgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjc0OVwiOicrcHJvaj10bWVyYyArbGF0XzA9MzEgK2xvbl8wPS0xMTEuOTE2NjY2NjY2NjY2NyAraz0wLjk5OTkgK3hfMD0xNTI0MDAuMzA0ODAwNjA5NiAreV8wPTAgK2RhdHVtPU5BRDI3ICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY3NTBcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTMxICtsb25fMD0tMTEzLjc1ICtrPTAuOTk5OTMzMzMzICt4XzA9MTUyNDAwLjMwNDgwMDYwOTYgK3lfMD0wICtkYXR1bT1OQUQyNyArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2NzUxXCI6Jytwcm9qPWxjYyArbGF0XzE9MzYuMjMzMzMzMzMzMzMzMzMgK2xhdF8yPTM0LjkzMzMzMzMzMzMzMzMzICtsYXRfMD0zNC4zMzMzMzMzMzMzMzMzNCArbG9uXzA9LTkyICt4XzA9NjA5NjAxLjIxOTIwMjQzODQgK3lfMD0wICtkYXR1bT1OQUQyNyArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2NzUyXCI6Jytwcm9qPWxjYyArbGF0XzE9MzQuNzY2NjY2NjY2NjY2NjcgK2xhdF8yPTMzLjMgK2xhdF8wPTMyLjY2NjY2NjY2NjY2NjY2ICtsb25fMD0tOTIgK3hfMD02MDk2MDEuMjE5MjAyNDM4NCAreV8wPTAgK2RhdHVtPU5BRDI3ICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY3NTNcIjonK3Byb2o9bGNjICtsYXRfMT0zOS43MTY2NjY2NjY2NjY2NyArbGF0XzI9NDAuNzgzMzMzMzMzMzMzMzMgK2xhdF8wPTM5LjMzMzMzMzMzMzMzMzM0ICtsb25fMD0tMTA1LjUgK3hfMD02MDk2MDEuMjE5MjAyNDM4NCAreV8wPTAgK2RhdHVtPU5BRDI3ICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY3NTRcIjonK3Byb2o9bGNjICtsYXRfMT0zOS43NSArbGF0XzI9MzguNDUgK2xhdF8wPTM3LjgzMzMzMzMzMzMzMzM0ICtsb25fMD0tMTA1LjUgK3hfMD02MDk2MDEuMjE5MjAyNDM4NCAreV8wPTAgK2RhdHVtPU5BRDI3ICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY3NTVcIjonK3Byb2o9bGNjICtsYXRfMT0zOC40MzMzMzMzMzMzMzMzMyArbGF0XzI9MzcuMjMzMzMzMzMzMzMzMzMgK2xhdF8wPTM2LjY2NjY2NjY2NjY2NjY2ICtsb25fMD0tMTA1LjUgK3hfMD02MDk2MDEuMjE5MjAyNDM4NCAreV8wPTAgK2RhdHVtPU5BRDI3ICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY3NTZcIjonK3Byb2o9bGNjICtsYXRfMT00MS44NjY2NjY2NjY2NjY2NyArbGF0XzI9NDEuMiArbGF0XzA9NDAuODMzMzMzMzMzMzMzMzQgK2xvbl8wPS03Mi43NSAreF8wPTE4Mjg4MC4zNjU3NjA3MzE1ICt5XzA9MCArZGF0dW09TkFEMjcgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjc1N1wiOicrcHJvaj10bWVyYyArbGF0XzA9MzggK2xvbl8wPS03NS40MTY2NjY2NjY2NjY2NyAraz0wLjk5OTk5NSAreF8wPTE1MjQwMC4zMDQ4MDA2MDk2ICt5XzA9MCArZGF0dW09TkFEMjcgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjc1OFwiOicrcHJvaj10bWVyYyArbGF0XzA9MjQuMzMzMzMzMzMzMzMzMzMgK2xvbl8wPS04MSAraz0wLjk5OTk0MTE3NyAreF8wPTE1MjQwMC4zMDQ4MDA2MDk2ICt5XzA9MCArZGF0dW09TkFEMjcgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjc1OVwiOicrcHJvaj10bWVyYyArbGF0XzA9MjQuMzMzMzMzMzMzMzMzMzMgK2xvbl8wPS04MiAraz0wLjk5OTk0MTE3NyAreF8wPTE1MjQwMC4zMDQ4MDA2MDk2ICt5XzA9MCArZGF0dW09TkFEMjcgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjc2MFwiOicrcHJvaj1sY2MgK2xhdF8xPTMwLjc1ICtsYXRfMj0yOS41ODMzMzMzMzMzMzMzMyArbGF0XzA9MjkgK2xvbl8wPS04NC41ICt4XzA9NjA5NjAxLjIxOTIwMjQzODQgK3lfMD0wICtkYXR1bT1OQUQyNyArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2NzY2XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0zMCArbG9uXzA9LTgyLjE2NjY2NjY2NjY2NjY3ICtrPTAuOTk5OSAreF8wPTE1MjQwMC4zMDQ4MDA2MDk2ICt5XzA9MCArZGF0dW09TkFEMjcgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjc2N1wiOicrcHJvaj10bWVyYyArbGF0XzA9MzAgK2xvbl8wPS04NC4xNjY2NjY2NjY2NjY2NyAraz0wLjk5OTkgK3hfMD0xNTI0MDAuMzA0ODAwNjA5NiAreV8wPTAgK2RhdHVtPU5BRDI3ICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY3NjhcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTQxLjY2NjY2NjY2NjY2NjY2ICtsb25fMD0tMTEyLjE2NjY2NjY2NjY2NjcgK2s9MC45OTk5NDczNjc5OTk5OTk5ICt4XzA9MTUyNDAwLjMwNDgwMDYwOTYgK3lfMD0wICtkYXR1bT1OQUQyNyArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2NzY5XCI6Jytwcm9qPXRtZXJjICtsYXRfMD00MS42NjY2NjY2NjY2NjY2NiArbG9uXzA9LTExNCAraz0wLjk5OTk0NzM2Nzk5OTk5OTkgK3hfMD0xNTI0MDAuMzA0ODAwNjA5NiAreV8wPTAgK2RhdHVtPU5BRDI3ICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY3NzBcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTQxLjY2NjY2NjY2NjY2NjY2ICtsb25fMD0tMTE1Ljc1ICtrPTAuOTk5OTMzMzMzICt4XzA9MTUyNDAwLjMwNDgwMDYwOTYgK3lfMD0wICtkYXR1bT1OQUQyNyArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2NzcxXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0zNi42NjY2NjY2NjY2NjY2NiArbG9uXzA9LTg4LjMzMzMzMzMzMzMzMzMzICtrPTAuOTk5OTc0OTk5OTk5OTk5OSAreF8wPTE1MjQwMC4zMDQ4MDA2MDk2ICt5XzA9MCArZGF0dW09TkFEMjcgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjc3MlwiOicrcHJvaj10bWVyYyArbGF0XzA9MzYuNjY2NjY2NjY2NjY2NjYgK2xvbl8wPS05MC4xNjY2NjY2NjY2NjY2NyAraz0wLjk5OTk0MTE3NyAreF8wPTE1MjQwMC4zMDQ4MDA2MDk2ICt5XzA9MCArZGF0dW09TkFEMjcgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjc3M1wiOicrcHJvaj10bWVyYyArbGF0XzA9MzcuNSArbG9uXzA9LTg1LjY2NjY2NjY2NjY2NjY3ICtrPTAuOTk5OTY2NjY3ICt4XzA9MTUyNDAwLjMwNDgwMDYwOTYgK3lfMD0wICtkYXR1bT1OQUQyNyArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2Nzc0XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0zNy41ICtsb25fMD0tODcuMDgzMzMzMzMzMzMzMzMgK2s9MC45OTk5NjY2NjcgK3hfMD0xNTI0MDAuMzA0ODAwNjA5NiAreV8wPTAgK2RhdHVtPU5BRDI3ICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY3NzVcIjonK3Byb2o9bGNjICtsYXRfMT00My4yNjY2NjY2NjY2NjY2NyArbGF0XzI9NDIuMDY2NjY2NjY2NjY2NjcgK2xhdF8wPTQxLjUgK2xvbl8wPS05My41ICt4XzA9NjA5NjAxLjIxOTIwMjQzODQgK3lfMD0wICtkYXR1bT1OQUQyNyArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2Nzc2XCI6Jytwcm9qPWxjYyArbGF0XzE9NDEuNzgzMzMzMzMzMzMzMzMgK2xhdF8yPTQwLjYxNjY2NjY2NjY2NjY3ICtsYXRfMD00MCArbG9uXzA9LTkzLjUgK3hfMD02MDk2MDEuMjE5MjAyNDM4NCAreV8wPTAgK2RhdHVtPU5BRDI3ICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY3NzdcIjonK3Byb2o9bGNjICtsYXRfMT0zOS43ODMzMzMzMzMzMzMzMyArbGF0XzI9MzguNzE2NjY2NjY2NjY2NjcgK2xhdF8wPTM4LjMzMzMzMzMzMzMzMzM0ICtsb25fMD0tOTggK3hfMD02MDk2MDEuMjE5MjAyNDM4NCAreV8wPTAgK2RhdHVtPU5BRDI3ICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY3NzhcIjonK3Byb2o9bGNjICtsYXRfMT0zOC41NjY2NjY2NjY2NjY2NyArbGF0XzI9MzcuMjY2NjY2NjY2NjY2NjcgK2xhdF8wPTM2LjY2NjY2NjY2NjY2NjY2ICtsb25fMD0tOTguNSAreF8wPTYwOTYwMS4yMTkyMDI0Mzg0ICt5XzA9MCArZGF0dW09TkFEMjcgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjc3OVwiOicrcHJvaj1sY2MgK2xhdF8xPTM3Ljk2NjY2NjY2NjY2NjY3ICtsYXRfMj0zOC45NjY2NjY2NjY2NjY2NyArbGF0XzA9MzcuNSArbG9uXzA9LTg0LjI1ICt4XzA9NjA5NjAxLjIxOTIwMjQzODQgK3lfMD0wICtkYXR1bT1OQUQyNyArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2NzgwXCI6Jytwcm9qPWxjYyArbGF0XzE9MzYuNzMzMzMzMzMzMzMzMzMgK2xhdF8yPTM3LjkzMzMzMzMzMzMzMzMzICtsYXRfMD0zNi4zMzMzMzMzMzMzMzMzNCArbG9uXzA9LTg1Ljc1ICt4XzA9NjA5NjAxLjIxOTIwMjQzODQgK3lfMD0wICtkYXR1bT1OQUQyNyArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2NzgxXCI6Jytwcm9qPWxjYyArbGF0XzE9MzEuMTY2NjY2NjY2NjY2NjcgK2xhdF8yPTMyLjY2NjY2NjY2NjY2NjY2ICtsYXRfMD0zMC42NjY2NjY2NjY2NjY2NyArbG9uXzA9LTkyLjUgK3hfMD02MDk2MDEuMjE5MjAyNDM4NCAreV8wPTAgK2RhdHVtPU5BRDI3ICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY3ODJcIjonK3Byb2o9bGNjICtsYXRfMT0yOS4zICtsYXRfMj0zMC43ICtsYXRfMD0yOC42NjY2NjY2NjY2NjY2NyArbG9uXzA9LTkxLjMzMzMzMzMzMzMzMzMzICt4XzA9NjA5NjAxLjIxOTIwMjQzODQgK3lfMD0wICtkYXR1bT1OQUQyNyArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2NzgzXCI6Jytwcm9qPXRtZXJjICtsYXRfMD00My44MzMzMzMzMzMzMzMzNCArbG9uXzA9LTY4LjUgK2s9MC45OTk5ICt4XzA9MTUyNDAwLjMwNDgwMDYwOTYgK3lfMD0wICtkYXR1bT1OQUQyNyArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2Nzg0XCI6Jytwcm9qPXRtZXJjICtsYXRfMD00Mi44MzMzMzMzMzMzMzMzNCArbG9uXzA9LTcwLjE2NjY2NjY2NjY2NjY3ICtrPTAuOTk5OTY2NjY3ICt4XzA9MTUyNDAwLjMwNDgwMDYwOTYgK3lfMD0wICtkYXR1bT1OQUQyNyArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2Nzg1XCI6Jytwcm9qPWxjYyArbGF0XzE9MzguMyArbGF0XzI9MzkuNDUgK2xhdF8wPTM3LjgzMzMzMzMzMzMzMzM0ICtsb25fMD0tNzcgK3hfMD0yNDM4NDAuNDg3NjgwOTc1NCAreV8wPTAgK2RhdHVtPU5BRDI3ICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY3ODZcIjonK3Byb2o9bGNjICtsYXRfMT00MS43MTY2NjY2NjY2NjY2NyArbGF0XzI9NDIuNjgzMzMzMzMzMzMzMzMgK2xhdF8wPTQxICtsb25fMD0tNzEuNSAreF8wPTE4Mjg4MC4zNjU3NjA3MzE1ICt5XzA9MCArZGF0dW09TkFEMjcgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjc4N1wiOicrcHJvaj1sY2MgK2xhdF8xPTQxLjI4MzMzMzMzMzMzMzMzICtsYXRfMj00MS40ODMzMzMzMzMzMzMzMyArbGF0XzA9NDEgK2xvbl8wPS03MC41ICt4XzA9NjA5NjAuMTIxOTIwMjQzODQgK3lfMD0wICtkYXR1bT1OQUQyNyArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2NzkxXCI6Jytwcm9qPWxjYyArbGF0XzE9NDcuMDMzMzMzMzMzMzMzMzMgK2xhdF8yPTQ4LjYzMzMzMzMzMzMzMzMzICtsYXRfMD00Ni41ICtsb25fMD0tOTMuMDk5OTk5OTk5OTk5OTkgK3hfMD02MDk2MDEuMjE5MjAyNDM4NCAreV8wPTAgK2RhdHVtPU5BRDI3ICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY3OTJcIjonK3Byb2o9bGNjICtsYXRfMT00NS42MTY2NjY2NjY2NjY2NyArbGF0XzI9NDcuMDUgK2xhdF8wPTQ1ICtsb25fMD0tOTQuMjUgK3hfMD02MDk2MDEuMjE5MjAyNDM4NCAreV8wPTAgK2RhdHVtPU5BRDI3ICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY3OTNcIjonK3Byb2o9bGNjICtsYXRfMT00My43ODMzMzMzMzMzMzMzMyArbGF0XzI9NDUuMjE2NjY2NjY2NjY2NjcgK2xhdF8wPTQzICtsb25fMD0tOTQgK3hfMD02MDk2MDEuMjE5MjAyNDM4NCAreV8wPTAgK2RhdHVtPU5BRDI3ICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY3OTRcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTI5LjY2NjY2NjY2NjY2NjY3ICtsb25fMD0tODguODMzMzMzMzMzMzMzMzMgK2s9MC45OTk5NiAreF8wPTE1MjQwMC4zMDQ4MDA2MDk2ICt5XzA9MCArZGF0dW09TkFEMjcgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjc5NVwiOicrcHJvaj10bWVyYyArbGF0XzA9MzAuNSArbG9uXzA9LTkwLjMzMzMzMzMzMzMzMzMzICtrPTAuOTk5OTQxMTc3ICt4XzA9MTUyNDAwLjMwNDgwMDYwOTYgK3lfMD0wICtkYXR1bT1OQUQyNyArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2Nzk2XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0zNS44MzMzMzMzMzMzMzMzNCArbG9uXzA9LTkwLjUgK2s9MC45OTk5MzMzMzMgK3hfMD0xNTI0MDAuMzA0ODAwNjA5NiAreV8wPTAgK2RhdHVtPU5BRDI3ICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY3OTdcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTM1LjgzMzMzMzMzMzMzMzM0ICtsb25fMD0tOTIuNSAraz0wLjk5OTkzMzMzMyAreF8wPTE1MjQwMC4zMDQ4MDA2MDk2ICt5XzA9MCArZGF0dW09TkFEMjcgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjc5OFwiOicrcHJvaj10bWVyYyArbGF0XzA9MzYuMTY2NjY2NjY2NjY2NjYgK2xvbl8wPS05NC41ICtrPTAuOTk5OTQxMTc3ICt4XzA9MTUyNDAwLjMwNDgwMDYwOTYgK3lfMD0wICtkYXR1bT1OQUQyNyArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2Nzk5XCI6Jytwcm9qPWxjYyArbGF0XzE9MzQuNDE2NjY2NjY2NjY2NjYgK2xhdF8yPTMzLjg2NjY2NjY2NjY2NjY3ICtsYXRfMD0zNC4xMzMzMzMzMzMzMzMzMyArbG9uXzA9LTExOC4zMzMzMzMzMzMzMzMzICt4XzA9MTI3NjEwNi40NTA1OTY5MDEgK3lfMD0xMjY4MjUzLjAwNjg1ODAxNCArZGF0dW09TkFEMjcgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjgwMVwiOicrcHJvaj10bWVyYyArbGF0XzA9NDEuNSArbG9uXzA9LTgzLjY2NjY2NjY2NjY2NjY3ICtrPTAuOTk5OTQyODU3ICt4XzA9MTUyNDAwLjMwNDgwMDYwOTYgK3lfMD0wICthPTYzNzg0NTAuMDQ3NTQ4ODk2ICtiPTYzNTY4MjYuNjIxNDg4NDQ0ICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY4MDJcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTQxLjUgK2xvbl8wPS04NS43NSAraz0wLjk5OTkwOTA5MSAreF8wPTE1MjQwMC4zMDQ4MDA2MDk2ICt5XzA9MCArYT02Mzc4NDUwLjA0NzU0ODg5NiArYj02MzU2ODI2LjYyMTQ4ODQ0NCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2ODAzXCI6Jytwcm9qPXRtZXJjICtsYXRfMD00MS41ICtsb25fMD0tODguNzUgK2s9MC45OTk5MDkwOTEgK3hfMD0xNTI0MDAuMzA0ODAwNjA5NiAreV8wPTAgK2E9NjM3ODQ1MC4wNDc1NDg4OTYgK2I9NjM1NjgyNi42MjE0ODg0NDQgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjgxMVwiOicrcHJvaj1sY2MgK2xhdF8xPTQ1LjQ4MzMzMzMzMzMzMzMzICtsYXRfMj00Ny4wODMzMzMzMzMzMzMzNCArbGF0XzA9NDQuNzgzMzMzMzMzMzMzMzMgK2xvbl8wPS04NyAreF8wPTYwOTYwMS4yMTkyMDI0Mzg0ICt5XzA9MCArYT02Mzc4NDUwLjA0NzU0ODg5NiArYj02MzU2ODI2LjYyMTQ4ODQ0NCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2ODEyXCI6Jytwcm9qPWxjYyArbGF0XzE9NDQuMTgzMzMzMzMzMzMzMzMgK2xhdF8yPTQ1LjcgK2xhdF8wPTQzLjMxNjY2NjY2NjY2NjY3ICtsb25fMD0tODQuMzMzMzMzMzMzMzMzMzMgK3hfMD02MDk2MDEuMjE5MjAyNDM4NCAreV8wPTAgK2E9NjM3ODQ1MC4wNDc1NDg4OTYgK2I9NjM1NjgyNi42MjE0ODg0NDQgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjgxM1wiOicrcHJvaj1sY2MgK2xhdF8xPTQyLjEgK2xhdF8yPTQzLjY2NjY2NjY2NjY2NjY2ICtsYXRfMD00MS41ICtsb25fMD0tODQuMzMzMzMzMzMzMzMzMzMgK3hfMD02MDk2MDEuMjE5MjAyNDM4NCAreV8wPTAgK2E9NjM3ODQ1MC4wNDc1NDg4OTYgK2I9NjM1NjgyNi42MjE0ODg0NDQgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjgxNFwiOicrcHJvaj10bWVyYyArbGF0XzA9NDMuNjY2NjY2NjY2NjY2NjYgK2xvbl8wPS02OC41ICtrPTAuOTk5OSAreF8wPTMwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2ODE1XCI6Jytwcm9qPXRtZXJjICtsYXRfMD00Mi44MzMzMzMzMzMzMzMzNCArbG9uXzA9LTcwLjE2NjY2NjY2NjY2NjY3ICtrPTAuOTk5OTY2NjY3ICt4XzA9OTAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY4MTlcIjonK3Byb2o9bGNjICtsYXRfMT00OC42MzMzMzMzMzMzMzMzMyArbGF0XzI9NDcuMDMzMzMzMzMzMzMzMzMgK2xhdF8wPTQ2LjUgK2xvbl8wPS05My4wOTk5OTk5OTk5OTk5OSAreF8wPTgwMDAwMC4wMDAwMTAxNjAxICt5XzA9OTk5OTkuOTk5OTg5ODQgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2ODIwXCI6Jytwcm9qPWxjYyArbGF0XzE9NDcuMDUgK2xhdF8yPTQ1LjYxNjY2NjY2NjY2NjY3ICtsYXRfMD00NSArbG9uXzA9LTk0LjI1ICt4XzA9ODAwMDAwLjAwMDAxMDE2MDEgK3lfMD05OTk5OS45OTk5ODk4NCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY4MjFcIjonK3Byb2o9bGNjICtsYXRfMT00NS4yMTY2NjY2NjY2NjY2NyArbGF0XzI9NDMuNzgzMzMzMzMzMzMzMzMgK2xhdF8wPTQzICtsb25fMD0tOTQgK3hfMD04MDAwMDAuMDAwMDEwMTYwMSAreV8wPTk5OTk5Ljk5OTk4OTg0ICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjgyMlwiOicrcHJvaj1sY2MgK2xhdF8xPTQzICtsYXRfMj00MCArbGF0XzA9MzkuODMzMzMzMzMzMzMzMzQgK2xvbl8wPS0xMDAgK3hfMD01MDAwMDAuMDAwMDEwMTYwMSAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2ODIzXCI6Jytwcm9qPWxjYyArbGF0XzE9NDAuMjUgK2xhdF8yPTM5ICtsYXRfMD0zOC41ICtsb25fMD0tNzkuNSAreF8wPTE5Njg1MDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjgyNFwiOicrcHJvaj1sY2MgK2xhdF8xPTM4Ljg4MzMzMzMzMzMzMzMzICtsYXRfMj0zNy40ODMzMzMzMzMzMzMzMyArbGF0XzA9MzcgK2xvbl8wPS04MSAreF8wPTE5Njg1MDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjgyNVwiOicrcHJvaj10bWVyYyArbGF0XzA9NDMuNjY2NjY2NjY2NjY2NjYgK2xvbl8wPS02OC41ICtrPTAuOTk5OSAreF8wPTMwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2ODI2XCI6Jytwcm9qPXRtZXJjICtsYXRfMD00Mi44MzMzMzMzMzMzMzMzNCArbG9uXzA9LTcwLjE2NjY2NjY2NjY2NjY3ICtrPTAuOTk5OTY2NjY3ICt4XzA9OTAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY4MzBcIjonK3Byb2o9bGNjICtsYXRfMT00OC42MzMzMzMzMzMzMzMzMyArbGF0XzI9NDcuMDMzMzMzMzMzMzMzMzMgK2xhdF8wPTQ2LjUgK2xvbl8wPS05My4wOTk5OTk5OTk5OTk5OSAreF8wPTgwMDAwMC4wMDAwMTAxNjAxICt5XzA9OTk5OTkuOTk5OTg5ODQgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2ODMxXCI6Jytwcm9qPWxjYyArbGF0XzE9NDcuMDUgK2xhdF8yPTQ1LjYxNjY2NjY2NjY2NjY3ICtsYXRfMD00NSArbG9uXzA9LTk0LjI1ICt4XzA9ODAwMDAwLjAwMDAxMDE2MDEgK3lfMD05OTk5OS45OTk5ODk4NCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY4MzJcIjonK3Byb2o9bGNjICtsYXRfMT00NS4yMTY2NjY2NjY2NjY2NyArbGF0XzI9NDMuNzgzMzMzMzMzMzMzMzMgK2xhdF8wPTQzICtsb25fMD0tOTQgK3hfMD04MDAwMDAuMDAwMDEwMTYwMSAreV8wPTk5OTk5Ljk5OTk4OTg0ICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjgzM1wiOicrcHJvaj1sY2MgK2xhdF8xPTQzICtsYXRfMj00MCArbGF0XzA9MzkuODMzMzMzMzMzMzMzMzQgK2xvbl8wPS0xMDAgK3hfMD01MDAwMDAuMDAwMDEwMTYwMSAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2ODM0XCI6Jytwcm9qPWxjYyArbGF0XzE9NDAuMjUgK2xhdF8yPTM5ICtsYXRfMD0zOC41ICtsb25fMD0tNzkuNSAreF8wPTE5Njg1MDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjgzNVwiOicrcHJvaj1sY2MgK2xhdF8xPTM4Ljg4MzMzMzMzMzMzMzMzICtsYXRfMj0zNy40ODMzMzMzMzMzMzMzMyArbGF0XzA9MzcgK2xvbl8wPS04MSAreF8wPTE5Njg1MDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjgzNlwiOicrcHJvaj10bWVyYyArbGF0XzA9NDMuNjY2NjY2NjY2NjY2NjYgK2xvbl8wPS02OC41ICtrPTAuOTk5OSAreF8wPTMwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2ODM3XCI6Jytwcm9qPXRtZXJjICtsYXRfMD00Mi44MzMzMzMzMzMzMzMzNCArbG9uXzA9LTcwLjE2NjY2NjY2NjY2NjY3ICtrPTAuOTk5OTY2NjY3ICt4XzA9OTAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY4NDFcIjonK3Byb2o9bGNjICtsYXRfMT00OC42MzMzMzMzMzMzMzMzMyArbGF0XzI9NDcuMDMzMzMzMzMzMzMzMzMgK2xhdF8wPTQ2LjUgK2xvbl8wPS05My4wOTk5OTk5OTk5OTk5OSAreF8wPTgwMDAwMC4wMDAwMTAxNjAxICt5XzA9OTk5OTkuOTk5OTg5ODQgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2ODQyXCI6Jytwcm9qPWxjYyArbGF0XzE9NDcuMDUgK2xhdF8yPTQ1LjYxNjY2NjY2NjY2NjY3ICtsYXRfMD00NSArbG9uXzA9LTk0LjI1ICt4XzA9ODAwMDAwLjAwMDAxMDE2MDEgK3lfMD05OTk5OS45OTk5ODk4NCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY4NDNcIjonK3Byb2o9bGNjICtsYXRfMT00NS4yMTY2NjY2NjY2NjY2NyArbGF0XzI9NDMuNzgzMzMzMzMzMzMzMzMgK2xhdF8wPTQzICtsb25fMD0tOTQgK3hfMD04MDAwMDAuMDAwMDEwMTYwMSAreV8wPTk5OTk5Ljk5OTk4OTg0ICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjg0NFwiOicrcHJvaj1sY2MgK2xhdF8xPTQzICtsYXRfMj00MCArbGF0XzA9MzkuODMzMzMzMzMzMzMzMzQgK2xvbl8wPS0xMDAgK3hfMD01MDAwMDAuMDAwMDEwMTYwMSAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2ODQ1XCI6Jytwcm9qPWxjYyArbGF0XzE9NDAuMjUgK2xhdF8yPTM5ICtsYXRfMD0zOC41ICtsb25fMD0tNzkuNSAreF8wPTE5Njg1MDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjg0NlwiOicrcHJvaj1sY2MgK2xhdF8xPTM4Ljg4MzMzMzMzMzMzMzMzICtsYXRfMj0zNy40ODMzMzMzMzMzMzMzMyArbGF0XzA9MzcgK2xvbl8wPS04MSAreF8wPTE5Njg1MDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjg0N1wiOicrcHJvaj10bWVyYyArbGF0XzA9NDMuNjY2NjY2NjY2NjY2NjYgK2xvbl8wPS02OC41ICtrPTAuOTk5OSAreF8wPTMwMDAwMC4wMDAwMDAwMDAxICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2ODQ4XCI6Jytwcm9qPXRtZXJjICtsYXRfMD00Mi44MzMzMzMzMzMzMzMzNCArbG9uXzA9LTcwLjE2NjY2NjY2NjY2NjY3ICtrPTAuOTk5OTY2NjY3ICt4XzA9OTAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2ODQ5XCI6Jytwcm9qPWxjYyArbGF0XzE9NDguNjMzMzMzMzMzMzMzMzMgK2xhdF8yPTQ3LjAzMzMzMzMzMzMzMzMzICtsYXRfMD00Ni41ICtsb25fMD0tOTMuMDk5OTk5OTk5OTk5OTkgK3hfMD04MDAwMDAuMDAwMDEwMTU5OSAreV8wPTk5OTk5Ljk5OTk4OTgzOTk3ICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY4NTBcIjonK3Byb2o9bGNjICtsYXRfMT00Ny4wNSArbGF0XzI9NDUuNjE2NjY2NjY2NjY2NjcgK2xhdF8wPTQ1ICtsb25fMD0tOTQuMjUgK3hfMD04MDAwMDAuMDAwMDEwMTU5OSAreV8wPTk5OTk5Ljk5OTk4OTgzOTk3ICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY4NTFcIjonK3Byb2o9bGNjICtsYXRfMT00NS4yMTY2NjY2NjY2NjY2NyArbGF0XzI9NDMuNzgzMzMzMzMzMzMzMzMgK2xhdF8wPTQzICtsb25fMD0tOTQgK3hfMD04MDAwMDAuMDAwMDEwMTU5OSAreV8wPTk5OTk5Ljk5OTk4OTgzOTk3ICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY4NTJcIjonK3Byb2o9bGNjICtsYXRfMT00MyArbGF0XzI9NDAgK2xhdF8wPTM5LjgzMzMzMzMzMzMzMzM0ICtsb25fMD0tMTAwICt4XzA9NTAwMDAwLjAwMDAxMDE2ICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2ODUzXCI6Jytwcm9qPWxjYyArbGF0XzE9NDAuMjUgK2xhdF8yPTM5ICtsYXRfMD0zOC41ICtsb25fMD0tNzkuNSAreF8wPTYwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjg1NFwiOicrcHJvaj1sY2MgK2xhdF8xPTM4Ljg4MzMzMzMzMzMzMzMzICtsYXRfMj0zNy40ODMzMzMzMzMzMzMzMyArbGF0XzA9MzcgK2xvbl8wPS04MSAreF8wPTYwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjg1NVwiOicrcHJvaj10bWVyYyArbGF0XzA9NDMuNjY2NjY2NjY2NjY2NjYgK2xvbl8wPS02OC41ICtrPTAuOTk5OSAreF8wPTMwMDAwMC4wMDAwMDAwMDAxICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2ODU2XCI6Jytwcm9qPXRtZXJjICtsYXRfMD00Mi44MzMzMzMzMzMzMzMzNCArbG9uXzA9LTcwLjE2NjY2NjY2NjY2NjY3ICtrPTAuOTk5OTY2NjY3ICt4XzA9OTAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2ODU3XCI6Jytwcm9qPWxjYyArbGF0XzE9NDguNjMzMzMzMzMzMzMzMzMgK2xhdF8yPTQ3LjAzMzMzMzMzMzMzMzMzICtsYXRfMD00Ni41ICtsb25fMD0tOTMuMDk5OTk5OTk5OTk5OTkgK3hfMD04MDAwMDAuMDAwMDEwMTU5OSAreV8wPTk5OTk5Ljk5OTk4OTgzOTk3ICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY4NThcIjonK3Byb2o9bGNjICtsYXRfMT00Ny4wNSArbGF0XzI9NDUuNjE2NjY2NjY2NjY2NjcgK2xhdF8wPTQ1ICtsb25fMD0tOTQuMjUgK3hfMD04MDAwMDAuMDAwMDEwMTU5OSAreV8wPTk5OTk5Ljk5OTk4OTgzOTk3ICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY4NTlcIjonK3Byb2o9bGNjICtsYXRfMT00NS4yMTY2NjY2NjY2NjY2NyArbGF0XzI9NDMuNzgzMzMzMzMzMzMzMzMgK2xhdF8wPTQzICtsb25fMD0tOTQgK3hfMD04MDAwMDAuMDAwMDEwMTU5OSAreV8wPTk5OTk5Ljk5OTk4OTgzOTk3ICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY4NjBcIjonK3Byb2o9bGNjICtsYXRfMT00MyArbGF0XzI9NDAgK2xhdF8wPTM5LjgzMzMzMzMzMzMzMzM0ICtsb25fMD0tMTAwICt4XzA9NTAwMDAwLjAwMDAxMDE2ICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2ODYxXCI6Jytwcm9qPWxjYyArbGF0XzE9NDAuMjUgK2xhdF8yPTM5ICtsYXRfMD0zOC41ICtsb25fMD0tNzkuNSAreF8wPTYwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjg2MlwiOicrcHJvaj1sY2MgK2xhdF8xPTM4Ljg4MzMzMzMzMzMzMzMzICtsYXRfMj0zNy40ODMzMzMzMzMzMzMzMyArbGF0XzA9MzcgK2xvbl8wPS04MSAreF8wPTYwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjg2M1wiOicrcHJvaj10bWVyYyArbGF0XzA9NDMuNjY2NjY2NjY2NjY2NjYgK2xvbl8wPS02OC41ICtrPTAuOTk5OSAreF8wPTMwMDAwMC4wMDAwMDAwMDAxICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2ODY0XCI6Jytwcm9qPXRtZXJjICtsYXRfMD00Mi44MzMzMzMzMzMzMzMzNCArbG9uXzA9LTcwLjE2NjY2NjY2NjY2NjY3ICtrPTAuOTk5OTY2NjY3ICt4XzA9OTAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2ODY1XCI6Jytwcm9qPWxjYyArbGF0XzE9NDguNjMzMzMzMzMzMzMzMzMgK2xhdF8yPTQ3LjAzMzMzMzMzMzMzMzMzICtsYXRfMD00Ni41ICtsb25fMD0tOTMuMDk5OTk5OTk5OTk5OTkgK3hfMD04MDAwMDAuMDAwMDEwMTU5OSAreV8wPTk5OTk5Ljk5OTk4OTgzOTk3ICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY4NjZcIjonK3Byb2o9bGNjICtsYXRfMT00Ny4wNSArbGF0XzI9NDUuNjE2NjY2NjY2NjY2NjcgK2xhdF8wPTQ1ICtsb25fMD0tOTQuMjUgK3hfMD04MDAwMDAuMDAwMDEwMTU5OSAreV8wPTk5OTk5Ljk5OTk4OTgzOTk3ICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY4NjdcIjonK3Byb2o9bGNjICtsYXRfMT00NS4yMTY2NjY2NjY2NjY2NyArbGF0XzI9NDMuNzgzMzMzMzMzMzMzMzMgK2xhdF8wPTQzICtsb25fMD0tOTQgK3hfMD04MDAwMDAuMDAwMDEwMTU5OSAreV8wPTk5OTk5Ljk5OTk4OTgzOTk3ICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY4NjhcIjonK3Byb2o9bGNjICtsYXRfMT00MyArbGF0XzI9NDAgK2xhdF8wPTM5LjgzMzMzMzMzMzMzMzM0ICtsb25fMD0tMTAwICt4XzA9NTAwMDAwLjAwMDAxMDE2ICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2ODY5XCI6Jytwcm9qPWxjYyArbGF0XzE9NDAuMjUgK2xhdF8yPTM5ICtsYXRfMD0zOC41ICtsb25fMD0tNzkuNSAreF8wPTYwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjg3MFwiOicrcHJvaj1sY2MgK2xhdF8xPTM4Ljg4MzMzMzMzMzMzMzMzICtsYXRfMj0zNy40ODMzMzMzMzMzMzMzMyArbGF0XzA9MzcgK2xvbl8wPS04MSAreF8wPTYwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjg5MVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9LTgyLjUgK2s9MC45OTk5ICt4XzA9MzA0ODAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY4OTJcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPS04MSAraz0wLjk5OTkgK3hfMD0zMDQ4MDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjg5M1wiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9LTg0ICtrPTAuOTk5OSAreF8wPTMwNDgwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2ODk0XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0tODcgK2s9MC45OTk5ICt4XzA9MzA0ODAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY4OTVcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPS05MCAraz0wLjk5OTkgK3hfMD0zMDQ4MDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjg5NlwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9LTkzICtrPTAuOTk5OSAreF8wPTMwNDgwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2ODk3XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0tOTYgK2s9MC45OTk5ICt4XzA9MzA0ODAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY4OThcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPS01MyAraz0wLjk5OTkgK3hfMD0zMDQ4MDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjg5OVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9LTU2ICtrPTAuOTk5OSAreF8wPTMwNDgwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2OTAxXCI6Jytwcm9qPXV0bSArem9uZT0xICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjkwMlwiOicrcHJvaj11dG0gK3pvbmU9MiArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY5MDNcIjonK3Byb2o9dXRtICt6b25lPTMgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2OTA0XCI6Jytwcm9qPXV0bSArem9uZT00ICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjkwNVwiOicrcHJvaj11dG0gK3pvbmU9NSArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY5MDZcIjonK3Byb2o9dXRtICt6b25lPTYgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2OTA3XCI6Jytwcm9qPXV0bSArem9uZT03ICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjkwOFwiOicrcHJvaj11dG0gK3pvbmU9OCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY5MDlcIjonK3Byb2o9dXRtICt6b25lPTkgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2OTEwXCI6Jytwcm9qPXV0bSArem9uZT0xMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY5MTFcIjonK3Byb2o9dXRtICt6b25lPTExICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjkxMlwiOicrcHJvaj11dG0gK3pvbmU9MTIgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2OTEzXCI6Jytwcm9qPXV0bSArem9uZT0xMyArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY5MTRcIjonK3Byb2o9dXRtICt6b25lPTE0ICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjkxNVwiOicrcHJvaj11dG0gK3pvbmU9MTUgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2OTE2XCI6Jytwcm9qPXV0bSArem9uZT0xNiArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY5MTdcIjonK3Byb2o9dXRtICt6b25lPTE3ICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjkxOFwiOicrcHJvaj11dG0gK3pvbmU9MTggK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2OTE5XCI6Jytwcm9qPXV0bSArem9uZT0xOSArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY5MjBcIjonK3Byb2o9dXRtICt6b25lPTIwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjkyMVwiOicrcHJvaj11dG0gK3pvbmU9MjEgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2OTIyXCI6Jytwcm9qPXV0bSArem9uZT0yMiArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY5MjNcIjonK3Byb2o9dXRtICt6b25lPTIzICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjkyOVwiOicrcHJvaj10bWVyYyArbGF0XzA9MzAuNSArbG9uXzA9LTg1LjgzMzMzMzMzMzMzMzMzICtrPTAuOTk5OTYgK3hfMD0yMDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjkzMFwiOicrcHJvaj10bWVyYyArbGF0XzA9MzAgK2xvbl8wPS04Ny41ICtrPTAuOTk5OTMzMzMzICt4XzA9NjAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY5MzFcIjonK3Byb2o9b21lcmMgK2xhdF8wPTU3ICtsb25jPS0xMzMuNjY2NjY2NjY2NjY2NyArYWxwaGE9MzIzLjEzMDEwMjM2MTExMTEgK2s9MC45OTk5ICt4XzA9NTAwMDAwMCAreV8wPS01MDAwMDAwICtub191b2ZmICtnYW1tYT0zMjMuMTMwMTAyMzYxMTExMSArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY5MzJcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTU0ICtsb25fMD0tMTQyICtrPTAuOTk5OSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2OTMzXCI6Jytwcm9qPXRtZXJjICtsYXRfMD01NCArbG9uXzA9LTE0NiAraz0wLjk5OTkgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjkzNFwiOicrcHJvaj10bWVyYyArbGF0XzA9NTQgK2xvbl8wPS0xNTAgK2s9MC45OTk5ICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY5MzVcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTU0ICtsb25fMD0tMTU0ICtrPTAuOTk5OSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2OTM2XCI6Jytwcm9qPXRtZXJjICtsYXRfMD01NCArbG9uXzA9LTE1OCAraz0wLjk5OTkgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjkzN1wiOicrcHJvaj10bWVyYyArbGF0XzA9NTQgK2xvbl8wPS0xNjIgK2s9MC45OTk5ICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY5MzhcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTU0ICtsb25fMD0tMTY2ICtrPTAuOTk5OSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2OTM5XCI6Jytwcm9qPXRtZXJjICtsYXRfMD01NCArbG9uXzA9LTE3MCAraz0wLjk5OTkgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjk0MFwiOicrcHJvaj1sY2MgK2xhdF8xPTUzLjgzMzMzMzMzMzMzMzM0ICtsYXRfMj01MS44MzMzMzMzMzMzMzMzNCArbGF0XzA9NTEgK2xvbl8wPS0xNzYgK3hfMD0xMDAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY5NDFcIjonK3Byb2o9bGNjICtsYXRfMT00MS42NjY2NjY2NjY2NjY2NiArbGF0XzI9NDAgK2xhdF8wPTM5LjMzMzMzMzMzMzMzMzM0ICtsb25fMD0tMTIyICt4XzA9MjAwMDAwMCAreV8wPTUwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY5NDJcIjonK3Byb2o9bGNjICtsYXRfMT0zOS44MzMzMzMzMzMzMzMzNCArbGF0XzI9MzguMzMzMzMzMzMzMzMzMzQgK2xhdF8wPTM3LjY2NjY2NjY2NjY2NjY2ICtsb25fMD0tMTIyICt4XzA9MjAwMDAwMCAreV8wPTUwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY5NDNcIjonK3Byb2o9bGNjICtsYXRfMT0zOC40MzMzMzMzMzMzMzMzMyArbGF0XzI9MzcuMDY2NjY2NjY2NjY2NjcgK2xhdF8wPTM2LjUgK2xvbl8wPS0xMjAuNSAreF8wPTIwMDAwMDAgK3lfMD01MDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2OTQ0XCI6Jytwcm9qPWxjYyArbGF0XzE9MzcuMjUgK2xhdF8yPTM2ICtsYXRfMD0zNS4zMzMzMzMzMzMzMzMzNCArbG9uXzA9LTExOSAreF8wPTIwMDAwMDAgK3lfMD01MDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2OTQ1XCI6Jytwcm9qPWxjYyArbGF0XzE9MzUuNDY2NjY2NjY2NjY2NjcgK2xhdF8yPTM0LjAzMzMzMzMzMzMzMzMzICtsYXRfMD0zMy41ICtsb25fMD0tMTE4ICt4XzA9MjAwMDAwMCAreV8wPTUwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY5NDZcIjonK3Byb2o9bGNjICtsYXRfMT0zMy44ODMzMzMzMzMzMzMzMyArbGF0XzI9MzIuNzgzMzMzMzMzMzMzMzMgK2xhdF8wPTMyLjE2NjY2NjY2NjY2NjY2ICtsb25fMD0tMTE2LjI1ICt4XzA9MjAwMDAwMCAreV8wPTUwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY5NDhcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTMxICtsb25fMD0tMTEwLjE2NjY2NjY2NjY2NjcgK2s9MC45OTk5ICt4XzA9MjEzMzYwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY5NDlcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTMxICtsb25fMD0tMTExLjkxNjY2NjY2NjY2NjcgK2s9MC45OTk5ICt4XzA9MjEzMzYwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY5NTBcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTMxICtsb25fMD0tMTEzLjc1ICtrPTAuOTk5OTMzMzMzICt4XzA9MjEzMzYwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY5NTFcIjonK3Byb2o9bGNjICtsYXRfMT0zNi4yMzMzMzMzMzMzMzMzMyArbGF0XzI9MzQuOTMzMzMzMzMzMzMzMzMgK2xhdF8wPTM0LjMzMzMzMzMzMzMzMzM0ICtsb25fMD0tOTIgK3hfMD00MDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjk1MlwiOicrcHJvaj1sY2MgK2xhdF8xPTM0Ljc2NjY2NjY2NjY2NjY3ICtsYXRfMj0zMy4zICtsYXRfMD0zMi42NjY2NjY2NjY2NjY2NiArbG9uXzA9LTkyICt4XzA9NDAwMDAwICt5XzA9NDAwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjk1M1wiOicrcHJvaj1sY2MgK2xhdF8xPTQwLjc4MzMzMzMzMzMzMzMzICtsYXRfMj0zOS43MTY2NjY2NjY2NjY2NyArbGF0XzA9MzkuMzMzMzMzMzMzMzMzMzQgK2xvbl8wPS0xMDUuNSAreF8wPTkxNDQwMS44Mjg5ICt5XzA9MzA0ODAwLjYwOTYgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2OTU0XCI6Jytwcm9qPWxjYyArbGF0XzE9MzkuNzUgK2xhdF8yPTM4LjQ1ICtsYXRfMD0zNy44MzMzMzMzMzMzMzMzNCArbG9uXzA9LTEwNS41ICt4XzA9OTE0NDAxLjgyODkgK3lfMD0zMDQ4MDAuNjA5NiArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY5NTVcIjonK3Byb2o9bGNjICtsYXRfMT0zOC40MzMzMzMzMzMzMzMzMyArbGF0XzI9MzcuMjMzMzMzMzMzMzMzMzMgK2xhdF8wPTM2LjY2NjY2NjY2NjY2NjY2ICtsb25fMD0tMTA1LjUgK3hfMD05MTQ0MDEuODI4OSAreV8wPTMwNDgwMC42MDk2ICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjk1NlwiOicrcHJvaj1sY2MgK2xhdF8xPTQxLjg2NjY2NjY2NjY2NjY3ICtsYXRfMj00MS4yICtsYXRfMD00MC44MzMzMzMzMzMzMzMzNCArbG9uXzA9LTcyLjc1ICt4XzA9MzA0ODAwLjYwOTYgK3lfMD0xNTI0MDAuMzA0OCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY5NTdcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTM4ICtsb25fMD0tNzUuNDE2NjY2NjY2NjY2NjcgK2s9MC45OTk5OTUgK3hfMD0yMDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjk1OFwiOicrcHJvaj10bWVyYyArbGF0XzA9MjQuMzMzMzMzMzMzMzMzMzMgK2xvbl8wPS04MSAraz0wLjk5OTk0MTE3NyAreF8wPTIwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2OTU5XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0yNC4zMzMzMzMzMzMzMzMzMyArbG9uXzA9LTgyICtrPTAuOTk5OTQxMTc3ICt4XzA9MjAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY5NjBcIjonK3Byb2o9bGNjICtsYXRfMT0zMC43NSArbGF0XzI9MjkuNTgzMzMzMzMzMzMzMzMgK2xhdF8wPTI5ICtsb25fMD0tODQuNSAreF8wPTYwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2OTYxXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0xOC44MzMzMzMzMzMzMzMzMyArbG9uXzA9LTE1NS41ICtrPTAuOTk5OTY2NjY3ICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY5NjJcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTIwLjMzMzMzMzMzMzMzMzMzICtsb25fMD0tMTU2LjY2NjY2NjY2NjY2NjcgK2s9MC45OTk5NjY2NjcgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjk2M1wiOicrcHJvaj10bWVyYyArbGF0XzA9MjEuMTY2NjY2NjY2NjY2NjcgK2xvbl8wPS0xNTggK2s9MC45OTk5OSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2OTY0XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0yMS44MzMzMzMzMzMzMzMzMyArbG9uXzA9LTE1OS41ICtrPTAuOTk5OTkgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjk2NVwiOicrcHJvaj10bWVyYyArbGF0XzA9MjEuNjY2NjY2NjY2NjY2NjcgK2xvbl8wPS0xNjAuMTY2NjY2NjY2NjY2NyAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY5NjZcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTMwICtsb25fMD0tODIuMTY2NjY2NjY2NjY2NjcgK2s9MC45OTk5ICt4XzA9MjAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY5NjdcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTMwICtsb25fMD0tODQuMTY2NjY2NjY2NjY2NjcgK2s9MC45OTk5ICt4XzA9NzAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY5NjhcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTQxLjY2NjY2NjY2NjY2NjY2ICtsb25fMD0tMTEyLjE2NjY2NjY2NjY2NjcgK2s9MC45OTk5NDczNjc5OTk5OTk5ICt4XzA9MjAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY5NjlcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTQxLjY2NjY2NjY2NjY2NjY2ICtsb25fMD0tMTE0ICtrPTAuOTk5OTQ3MzY3OTk5OTk5OSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2OTcwXCI6Jytwcm9qPXRtZXJjICtsYXRfMD00MS42NjY2NjY2NjY2NjY2NiArbG9uXzA9LTExNS43NSAraz0wLjk5OTkzMzMzMyAreF8wPTgwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2OTcxXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0zNi42NjY2NjY2NjY2NjY2NiArbG9uXzA9LTg4LjMzMzMzMzMzMzMzMzMzICtrPTAuOTk5OTc0OTk5OTk5OTk5OSAreF8wPTMwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2OTcyXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0zNi42NjY2NjY2NjY2NjY2NiArbG9uXzA9LTkwLjE2NjY2NjY2NjY2NjY3ICtrPTAuOTk5OTQxMTc3ICt4XzA9NzAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY5NzNcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTM3LjUgK2xvbl8wPS04NS42NjY2NjY2NjY2NjY2NyAraz0wLjk5OTk2NjY2NyAreF8wPTEwMDAwMCAreV8wPTI1MDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY5NzRcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTM3LjUgK2xvbl8wPS04Ny4wODMzMzMzMzMzMzMzMyAraz0wLjk5OTk2NjY2NyAreF8wPTkwMDAwMCAreV8wPTI1MDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY5NzVcIjonK3Byb2o9bGNjICtsYXRfMT00My4yNjY2NjY2NjY2NjY2NyArbGF0XzI9NDIuMDY2NjY2NjY2NjY2NjcgK2xhdF8wPTQxLjUgK2xvbl8wPS05My41ICt4XzA9MTUwMDAwMCAreV8wPTEwMDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2OTc2XCI6Jytwcm9qPWxjYyArbGF0XzE9NDEuNzgzMzMzMzMzMzMzMzMgK2xhdF8yPTQwLjYxNjY2NjY2NjY2NjY3ICtsYXRfMD00MCArbG9uXzA9LTkzLjUgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjk3N1wiOicrcHJvaj1sY2MgK2xhdF8xPTM5Ljc4MzMzMzMzMzMzMzMzICtsYXRfMj0zOC43MTY2NjY2NjY2NjY2NyArbGF0XzA9MzguMzMzMzMzMzMzMzMzMzQgK2xvbl8wPS05OCAreF8wPTQwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2OTc4XCI6Jytwcm9qPWxjYyArbGF0XzE9MzguNTY2NjY2NjY2NjY2NjcgK2xhdF8yPTM3LjI2NjY2NjY2NjY2NjY3ICtsYXRfMD0zNi42NjY2NjY2NjY2NjY2NiArbG9uXzA9LTk4LjUgK3hfMD00MDAwMDAgK3lfMD00MDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2OTc5XCI6Jytwcm9qPWxjYyArbGF0XzE9MzcuOTY2NjY2NjY2NjY2NjcgK2xhdF8yPTM3Ljk2NjY2NjY2NjY2NjY3ICtsYXRfMD0zNy41ICtsb25fMD0tODQuMjUgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjk4MFwiOicrcHJvaj1sY2MgK2xhdF8xPTM3LjkzMzMzMzMzMzMzMzMzICtsYXRfMj0zNi43MzMzMzMzMzMzMzMzMyArbGF0XzA9MzYuMzMzMzMzMzMzMzMzMzQgK2xvbl8wPS04NS43NSAreF8wPTUwMDAwMCAreV8wPTUwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY5ODFcIjonK3Byb2o9bGNjICtsYXRfMT0zMi42NjY2NjY2NjY2NjY2NiArbGF0XzI9MzEuMTY2NjY2NjY2NjY2NjcgK2xhdF8wPTMwLjUgK2xvbl8wPS05Mi41ICt4XzA9MTAwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2OTgyXCI6Jytwcm9qPWxjYyArbGF0XzE9MzAuNyArbGF0XzI9MjkuMyArbGF0XzA9MjguNSArbG9uXzA9LTkxLjMzMzMzMzMzMzMzMzMzICt4XzA9MTAwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2OTgzXCI6Jytwcm9qPXRtZXJjICtsYXRfMD00My42NjY2NjY2NjY2NjY2NiArbG9uXzA9LTY4LjUgK2s9MC45OTk5ICt4XzA9MzAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY5ODRcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTQyLjgzMzMzMzMzMzMzMzM0ICtsb25fMD0tNzAuMTY2NjY2NjY2NjY2NjcgK2s9MC45OTk5NjY2NjcgK3hfMD05MDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjk4NVwiOicrcHJvaj1sY2MgK2xhdF8xPTM5LjQ1ICtsYXRfMj0zOC4zICtsYXRfMD0zNy42NjY2NjY2NjY2NjY2NiArbG9uXzA9LTc3ICt4XzA9NDAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY5ODZcIjonK3Byb2o9bGNjICtsYXRfMT00Mi42ODMzMzMzMzMzMzMzMyArbGF0XzI9NDEuNzE2NjY2NjY2NjY2NjcgK2xhdF8wPTQxICtsb25fMD0tNzEuNSAreF8wPTIwMDAwMCAreV8wPTc1MDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY5ODdcIjonK3Byb2o9bGNjICtsYXRfMT00MS40ODMzMzMzMzMzMzMzMyArbGF0XzI9NDEuMjgzMzMzMzMzMzMzMzMgK2xhdF8wPTQxICtsb25fMD0tNzAuNSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2OTg4XCI6Jytwcm9qPWxjYyArbGF0XzE9NDcuMDgzMzMzMzMzMzMzMzQgK2xhdF8yPTQ1LjQ4MzMzMzMzMzMzMzMzICtsYXRfMD00NC43ODMzMzMzMzMzMzMzMyArbG9uXzA9LTg3ICt4XzA9ODAwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2OTg5XCI6Jytwcm9qPWxjYyArbGF0XzE9NDUuNyArbGF0XzI9NDQuMTgzMzMzMzMzMzMzMzMgK2xhdF8wPTQzLjMxNjY2NjY2NjY2NjY3ICtsb25fMD0tODQuMzY2NjY2NjY2NjY2NjYgK3hfMD02MDAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY5OTBcIjonK3Byb2o9bGNjICtsYXRfMT00My42NjY2NjY2NjY2NjY2NiArbGF0XzI9NDIuMSArbGF0XzA9NDEuNSArbG9uXzA9LTg0LjM2NjY2NjY2NjY2NjY2ICt4XzA9NDAwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2OTkxXCI6Jytwcm9qPWxjYyArbGF0XzE9NDguNjMzMzMzMzMzMzMzMzMgK2xhdF8yPTQ3LjAzMzMzMzMzMzMzMzMzICtsYXRfMD00Ni41ICtsb25fMD0tOTMuMDk5OTk5OTk5OTk5OTkgK3hfMD04MDAwMDAgK3lfMD0xMDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2OTkyXCI6Jytwcm9qPWxjYyArbGF0XzE9NDcuMDUgK2xhdF8yPTQ1LjYxNjY2NjY2NjY2NjY3ICtsYXRfMD00NSArbG9uXzA9LTk0LjI1ICt4XzA9ODAwMDAwICt5XzA9MTAwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjk5M1wiOicrcHJvaj1sY2MgK2xhdF8xPTQ1LjIxNjY2NjY2NjY2NjY3ICtsYXRfMj00My43ODMzMzMzMzMzMzMzMyArbGF0XzA9NDMgK2xvbl8wPS05NCAreF8wPTgwMDAwMCAreV8wPTEwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY5OTRcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTI5LjUgK2xvbl8wPS04OC44MzMzMzMzMzMzMzMzMyAraz0wLjk5OTk1ICt4XzA9MzAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY5OTVcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTI5LjUgK2xvbl8wPS05MC4zMzMzMzMzMzMzMzMzMyAraz0wLjk5OTk1ICt4XzA9NzAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjY5OTZcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTM1LjgzMzMzMzMzMzMzMzM0ICtsb25fMD0tOTAuNSAraz0wLjk5OTkzMzMzMyAreF8wPTI1MDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI2OTk3XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0zNS44MzMzMzMzMzMzMzMzNCArbG9uXzA9LTkyLjUgK2s9MC45OTk5MzMzMzMgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNjk5OFwiOicrcHJvaj10bWVyYyArbGF0XzA9MzYuMTY2NjY2NjY2NjY2NjYgK2xvbl8wPS05NC41ICtrPTAuOTk5OTQxMTc3ICt4XzA9ODUwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjcwMzdcIjonK3Byb2o9dXRtICt6b25lPTM3ICtlbGxwcz1jbHJrODAgK3Rvd2dzODQ9LTI0Mi4yLC0xNDQuOSwzNzAuMywwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNzAzOFwiOicrcHJvaj11dG0gK3pvbmU9MzggK2VsbHBzPWNscms4MCArdG93Z3M4ND0tMjQyLjIsLTE0NC45LDM3MC4zLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI3MDM5XCI6Jytwcm9qPXV0bSArem9uZT0zOSArZWxscHM9Y2xyazgwICt0b3dnczg0PS0yNDIuMiwtMTQ0LjksMzcwLjMsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjcwNDBcIjonK3Byb2o9dXRtICt6b25lPTQwICtlbGxwcz1jbHJrODAgK3Rvd2dzODQ9LTI0Mi4yLC0xNDQuOSwzNzAuMywwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNzEyMFwiOicrcHJvaj11dG0gK3pvbmU9MjAgK2VsbHBzPWludGwgK3Rvd2dzODQ9LTEwLDM3NSwxNjUsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjcyMDBcIjonK3Byb2o9bnptZyArbGF0XzA9LTQxICtsb25fMD0xNzMgK3hfMD0yNTEwMDAwICt5XzA9NjAyMzE1MCArZWxscHM9aW50bCArdG93Z3M4ND01OS40NywtNS4wNCwxODcuNDQsMC40NywtMC4xLDEuMDI0LC00LjU5OTMgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI3MjA1XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0tMzYuODc5ODY1Mjc3Nzc3NzggK2xvbl8wPTE3NC43NjQzMzkzNjExMTExICtrPTAuOTk5OSAreF8wPTMwMDAwMCAreV8wPTcwMDAwMCArZWxscHM9aW50bCArdG93Z3M4ND01OS40NywtNS4wNCwxODcuNDQsMC40NywtMC4xLDEuMDI0LC00LjU5OTMgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI3MjA2XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0tMzcuNzYxMjQ5ODA1NTU1NTYgK2xvbl8wPTE3Ni40NjYxOTcyNSAraz0xICt4XzA9MzAwMDAwICt5XzA9NzAwMDAwICtlbGxwcz1pbnRsICt0b3dnczg0PTU5LjQ3LC01LjA0LDE4Ny40NCwwLjQ3LC0wLjEsMS4wMjQsLTQuNTk5MyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjcyMDdcIjonK3Byb2o9dG1lcmMgK2xhdF8wPS0zOC42MjQ3MDI3Nzc3Nzc3OCArbG9uXzA9MTc3Ljg4NTYzNjI3Nzc3NzggK2s9MSAreF8wPTMwMDAwMCAreV8wPTcwMDAwMCArZWxscHM9aW50bCArdG93Z3M4ND01OS40NywtNS4wNCwxODcuNDQsMC40NywtMC4xLDEuMDI0LC00LjU5OTMgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI3MjA4XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0tMzkuNjUwOTI5MzA1NTU1NTYgK2xvbl8wPTE3Ni42NzM2ODA1Mjc3Nzc4ICtrPTEgK3hfMD0zMDAwMDAgK3lfMD03MDAwMDAgK2VsbHBzPWludGwgK3Rvd2dzODQ9NTkuNDcsLTUuMDQsMTg3LjQ0LDAuNDcsLTAuMSwxLjAyNCwtNC41OTkzICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNzIwOVwiOicrcHJvaj10bWVyYyArbGF0XzA9LTM5LjEzNTc1ODMwNTU1NTU2ICtsb25fMD0xNzQuMjI4MDExNzUgK2s9MSAreF8wPTMwMDAwMCAreV8wPTcwMDAwMCArZWxscHM9aW50bCArdG93Z3M4ND01OS40NywtNS4wNCwxODcuNDQsMC40NywtMC4xLDEuMDI0LC00LjU5OTMgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI3MjEwXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0tMzkuNTEyNDcwMzg4ODg4ODkgK2xvbl8wPTE3NS42NDAwMzY4MDU1NTU2ICtrPTEgK3hfMD0zMDAwMDAgK3lfMD03MDAwMDAgK2VsbHBzPWludGwgK3Rvd2dzODQ9NTkuNDcsLTUuMDQsMTg3LjQ0LDAuNDcsLTAuMSwxLjAyNCwtNC41OTkzICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNzIxMVwiOicrcHJvaj10bWVyYyArbGF0XzA9LTQwLjI0MTk0NzEzODg4ODg5ICtsb25fMD0xNzUuNDg4MDk5NjExMTExMSAraz0xICt4XzA9MzAwMDAwICt5XzA9NzAwMDAwICtlbGxwcz1pbnRsICt0b3dnczg0PTU5LjQ3LC01LjA0LDE4Ny40NCwwLjQ3LC0wLjEsMS4wMjQsLTQuNTk5MyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjcyMTJcIjonK3Byb2o9dG1lcmMgK2xhdF8wPS00MC45MjU1MzI2Mzg4ODg4OSArbG9uXzA9MTc1LjY0NzM0OTY2NjY2NjcgK2s9MSAreF8wPTMwMDAwMCAreV8wPTcwMDAwMCArZWxscHM9aW50bCArdG93Z3M4ND01OS40NywtNS4wNCwxODcuNDQsMC40NywtMC4xLDEuMDI0LC00LjU5OTMgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI3MjEzXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0tNDEuMzAxMzE5NjM4ODg4ODggK2xvbl8wPTE3NC43NzY2MjMxMTExMTExICtrPTEgK3hfMD0zMDAwMDAgK3lfMD03MDAwMDAgK2VsbHBzPWludGwgK3Rvd2dzODQ9NTkuNDcsLTUuMDQsMTg3LjQ0LDAuNDcsLTAuMSwxLjAyNCwtNC41OTkzICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNzIxNFwiOicrcHJvaj10bWVyYyArbGF0XzA9LTQwLjcxNDc1OTA1NTU1NTU2ICtsb25fMD0xNzIuNjcyMDQ2NSAraz0xICt4XzA9MzAwMDAwICt5XzA9NzAwMDAwICtlbGxwcz1pbnRsICt0b3dnczg0PTU5LjQ3LC01LjA0LDE4Ny40NCwwLjQ3LC0wLjEsMS4wMjQsLTQuNTk5MyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjcyMTVcIjonK3Byb2o9dG1lcmMgK2xhdF8wPS00MS4yNzQ1NDQ3MjIyMjIyMiArbG9uXzA9MTczLjI5OTMxNjgwNTU1NTUgK2s9MSAreF8wPTMwMDAwMCAreV8wPTcwMDAwMCArZWxscHM9aW50bCArdG93Z3M4ND01OS40NywtNS4wNCwxODcuNDQsMC40NywtMC4xLDEuMDI0LC00LjU5OTMgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI3MjE2XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0tNDEuMjg5OTExNTI3Nzc3NzggK2xvbl8wPTE3Mi4xMDkwMjgxOTQ0NDQ0ICtrPTEgK3hfMD0zMDAwMDAgK3lfMD03MDAwMDAgK2VsbHBzPWludGwgK3Rvd2dzODQ9NTkuNDcsLTUuMDQsMTg3LjQ0LDAuNDcsLTAuMSwxLjAyNCwtNC41OTkzICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNzIxN1wiOicrcHJvaj10bWVyYyArbGF0XzA9LTQxLjgxMDgwMjg2MTExMTExICtsb25fMD0xNzEuNTgxMjYwMDU1NTU1NiAraz0xICt4XzA9MzAwMDAwICt5XzA9NzAwMDAwICtlbGxwcz1pbnRsICt0b3dnczg0PTU5LjQ3LC01LjA0LDE4Ny40NCwwLjQ3LC0wLjEsMS4wMjQsLTQuNTk5MyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjcyMThcIjonK3Byb2o9dG1lcmMgK2xhdF8wPS00Mi4zMzM2OTQyNzc3Nzc3OCArbG9uXzA9MTcxLjU0OTc3MTMwNTU1NTYgK2s9MSAreF8wPTMwMDAwMCAreV8wPTcwMDAwMCArZWxscHM9aW50bCArdG93Z3M4ND01OS40NywtNS4wNCwxODcuNDQsMC40NywtMC4xLDEuMDI0LC00LjU5OTMgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI3MjE5XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0tNDIuNjg5MTE2NTgzMzMzMzMgK2xvbl8wPTE3My4wMTAxMzMzODg4ODg5ICtrPTEgK3hfMD0zMDAwMDAgK3lfMD03MDAwMDAgK2VsbHBzPWludGwgK3Rvd2dzODQ9NTkuNDcsLTUuMDQsMTg3LjQ0LDAuNDcsLTAuMSwxLjAyNCwtNC41OTkzICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNzIyMFwiOicrcHJvaj10bWVyYyArbGF0XzA9LTQxLjU0NDQ4NjY2NjY2NjY2ICtsb25fMD0xNzMuODAyMDc0MTExMTExMSAraz0xICt4XzA9MzAwMDAwICt5XzA9NzAwMDAwICtlbGxwcz1pbnRsICt0b3dnczg0PTU5LjQ3LC01LjA0LDE4Ny40NCwwLjQ3LC0wLjEsMS4wMjQsLTQuNTk5MyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjcyMjFcIjonK3Byb2o9dG1lcmMgK2xhdF8wPS00Mi44ODYzMjIzNjExMTExMSArbG9uXzA9MTcwLjk3OTk5MzUgK2s9MSAreF8wPTMwMDAwMCAreV8wPTcwMDAwMCArZWxscHM9aW50bCArdG93Z3M4ND01OS40NywtNS4wNCwxODcuNDQsMC40NywtMC4xLDEuMDI0LC00LjU5OTMgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI3MjIyXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0tNDMuMTEwMTI4MTM4ODg4ODkgK2xvbl8wPTE3MC4yNjA5MjU4MzMzMzMzICtrPTEgK3hfMD0zMDAwMDAgK3lfMD03MDAwMDAgK2VsbHBzPWludGwgK3Rvd2dzODQ9NTkuNDcsLTUuMDQsMTg3LjQ0LDAuNDcsLTAuMSwxLjAyNCwtNC41OTkzICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNzIyM1wiOicrcHJvaj10bWVyYyArbGF0XzA9LTQzLjk3NzgwMjg4ODg4ODg5ICtsb25fMD0xNjguNjA2MjY3ICtrPTEgK3hfMD0zMDAwMDAgK3lfMD03MDAwMDAgK2VsbHBzPWludGwgK3Rvd2dzODQ9NTkuNDcsLTUuMDQsMTg3LjQ0LDAuNDcsLTAuMSwxLjAyNCwtNC41OTkzICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNzIyNFwiOicrcHJvaj10bWVyYyArbGF0XzA9LTQzLjU5MDYzNzU4MzMzMzMzICtsb25fMD0xNzIuNzI3MTkzNTgzMzMzMyAraz0xICt4XzA9MzAwMDAwICt5XzA9NzAwMDAwICtlbGxwcz1pbnRsICt0b3dnczg0PTU5LjQ3LC01LjA0LDE4Ny40NCwwLjQ3LC0wLjEsMS4wMjQsLTQuNTk5MyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjcyMjVcIjonK3Byb2o9dG1lcmMgK2xhdF8wPS00My43NDg3MTE1NTU1NTU1NiArbG9uXzA9MTcxLjM2MDc0ODQ3MjIyMjIgK2s9MSAreF8wPTMwMDAwMCAreV8wPTcwMDAwMCArZWxscHM9aW50bCArdG93Z3M4ND01OS40NywtNS4wNCwxODcuNDQsMC40NywtMC4xLDEuMDI0LC00LjU5OTMgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI3MjI2XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0tNDQuNDAyMjIwMzYxMTExMTEgK2xvbl8wPTE3MS4wNTcyNTA4MzMzMzMzICtrPTEgK3hfMD0zMDAwMDAgK3lfMD03MDAwMDAgK2VsbHBzPWludGwgK3Rvd2dzODQ9NTkuNDcsLTUuMDQsMTg3LjQ0LDAuNDcsLTAuMSwxLjAyNCwtNC41OTkzICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNzIyN1wiOicrcHJvaj10bWVyYyArbGF0XzA9LTQ0LjczNTI2Nzk3MjIyMjIyICtsb25fMD0xNjkuNDY3NzU1MDgzMzMzMyAraz0xICt4XzA9MzAwMDAwICt5XzA9NzAwMDAwICtlbGxwcz1pbnRsICt0b3dnczg0PTU5LjQ3LC01LjA0LDE4Ny40NCwwLjQ3LC0wLjEsMS4wMjQsLTQuNTk5MyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjcyMjhcIjonK3Byb2o9dG1lcmMgK2xhdF8wPS00NS4xMzI5MDI1ODMzMzMzMyArbG9uXzA9MTY4LjM5ODY0MTE5NDQ0NDQgK2s9MSAreF8wPTMwMDAwMCAreV8wPTcwMDAwMCArZWxscHM9aW50bCArdG93Z3M4ND01OS40NywtNS4wNCwxODcuNDQsMC40NywtMC4xLDEuMDI0LC00LjU5OTMgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI3MjI5XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0tNDUuNTYzNzI2MTY2NjY2NjYgK2xvbl8wPTE2Ny43Mzg4NjE3Nzc3Nzc4ICtrPTEgK3hfMD0zMDAwMDAgK3lfMD03MDAwMDAgK2VsbHBzPWludGwgK3Rvd2dzODQ9NTkuNDcsLTUuMDQsMTg3LjQ0LDAuNDcsLTAuMSwxLjAyNCwtNC41OTkzICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNzIzMFwiOicrcHJvaj10bWVyYyArbGF0XzA9LTQ1LjgxNjE5NjYxMTExMTExICtsb25fMD0xNzAuNjI4NTk1MTY2NjY2NyAraz0xICt4XzA9MzAwMDAwICt5XzA9NzAwMDAwICtlbGxwcz1pbnRsICt0b3dnczg0PTU5LjQ3LC01LjA0LDE4Ny40NCwwLjQ3LC0wLjEsMS4wMjQsLTQuNTk5MyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjcyMzFcIjonK3Byb2o9dG1lcmMgK2xhdF8wPS00NS44NjE1MTMzNjExMTExMSArbG9uXzA9MTcwLjI4MjU4OTExMTExMTEgK2s9MC45OTk5NiAreF8wPTMwMDAwMCAreV8wPTcwMDAwMCArZWxscHM9aW50bCArdG93Z3M4ND01OS40NywtNS4wNCwxODcuNDQsMC40NywtMC4xLDEuMDI0LC00LjU5OTMgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI3MjMyXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0tNDYuNjAwMDA5NjExMTExMTEgK2xvbl8wPTE2OC4zNDI4NzIgK2s9MSAreF8wPTMwMDAwMi42NiAreV8wPTY5OTk5OS41OCArZWxscHM9aW50bCArdG93Z3M4ND01OS40NywtNS4wNCwxODcuNDQsMC40NywtMC4xLDEuMDI0LC00LjU5OTMgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI3MjU4XCI6Jytwcm9qPXV0bSArem9uZT01OCArc291dGggK2VsbHBzPWludGwgK3Rvd2dzODQ9NTkuNDcsLTUuMDQsMTg3LjQ0LDAuNDcsLTAuMSwxLjAyNCwtNC41OTkzICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNzI1OVwiOicrcHJvaj11dG0gK3pvbmU9NTkgK3NvdXRoICtlbGxwcz1pbnRsICt0b3dnczg0PTU5LjQ3LC01LjA0LDE4Ny40NCwwLjQ3LC0wLjEsMS4wMjQsLTQuNTk5MyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjcyNjBcIjonK3Byb2o9dXRtICt6b25lPTYwICtzb3V0aCArZWxscHM9aW50bCArdG93Z3M4ND01OS40NywtNS4wNCwxODcuNDQsMC40NywtMC4xLDEuMDI0LC00LjU5OTMgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI3MjkxXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0tMzkgK2xvbl8wPTE3NS41ICtrPTEgK3hfMD0yNzQzMTkuNTI0Mzg0ODA4NiAreV8wPTM2NTc1OS4zNjU4NDY0MTE0ICtlbGxwcz1pbnRsICt0b3dnczg0PTU5LjQ3LC01LjA0LDE4Ny40NCwwLjQ3LC0wLjEsMS4wMjQsLTQuNTk5MyArdG9fbWV0ZXI9MC45MTQzOTg0MTQ2MTYwMjg3ICtub19kZWZzICcsXG4gIFwiRVBTRzoyNzI5MlwiOicrcHJvaj10bWVyYyArbGF0XzA9LTQ0ICtsb25fMD0xNzEuNSAraz0xICt4XzA9NDU3MTk5LjIwNzMwODAxNDMgK3lfMD00NTcxOTkuMjA3MzA4MDE0MyArZWxscHM9aW50bCArdG93Z3M4ND01OS40NywtNS4wNCwxODcuNDQsMC40NywtMC4xLDEuMDI0LC00LjU5OTMgK3RvX21ldGVyPTAuOTE0Mzk4NDE0NjE2MDI4NyArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjczOTFcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTU4ICtsb25fMD0tNC42NjY2NjY2NjY2NjY2NjcgK2s9MSAreF8wPTAgK3lfMD0wICthPTYzNzc0OTIuMDE4ICtiPTYzNTYxNzMuNTA4NzEyNjk2ICt0b3dnczg0PTI3OC4zLDkzLDQ3NC41LDcuODg5LDAuMDUsLTYuNjEsNi4yMSArcG09b3NsbyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjczOTJcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTU4ICtsb25fMD0tMi4zMzMzMzMzMzMzMzMzMzMgK2s9MSAreF8wPTAgK3lfMD0wICthPTYzNzc0OTIuMDE4ICtiPTYzNTYxNzMuNTA4NzEyNjk2ICt0b3dnczg0PTI3OC4zLDkzLDQ3NC41LDcuODg5LDAuMDUsLTYuNjEsNi4yMSArcG09b3NsbyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjczOTNcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTU4ICtsb25fMD0wICtrPTEgK3hfMD0wICt5XzA9MCArYT02Mzc3NDkyLjAxOCArYj02MzU2MTczLjUwODcxMjY5NiArdG93Z3M4ND0yNzguMyw5Myw0NzQuNSw3Ljg4OSwwLjA1LC02LjYxLDYuMjEgK3BtPW9zbG8gK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI3Mzk0XCI6Jytwcm9qPXRtZXJjICtsYXRfMD01OCArbG9uXzA9Mi41ICtrPTEgK3hfMD0wICt5XzA9MCArYT02Mzc3NDkyLjAxOCArYj02MzU2MTczLjUwODcxMjY5NiArdG93Z3M4ND0yNzguMyw5Myw0NzQuNSw3Ljg4OSwwLjA1LC02LjYxLDYuMjEgK3BtPW9zbG8gK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI3Mzk1XCI6Jytwcm9qPXRtZXJjICtsYXRfMD01OCArbG9uXzA9Ni4xNjY2NjY2NjY2NjY2NjcgK2s9MSAreF8wPTAgK3lfMD0wICthPTYzNzc0OTIuMDE4ICtiPTYzNTYxNzMuNTA4NzEyNjk2ICt0b3dnczg0PTI3OC4zLDkzLDQ3NC41LDcuODg5LDAuMDUsLTYuNjEsNi4yMSArcG09b3NsbyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjczOTZcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTU4ICtsb25fMD0xMC4xNjY2NjY2NjY2NjY2NyAraz0xICt4XzA9MCAreV8wPTAgK2E9NjM3NzQ5Mi4wMTggK2I9NjM1NjE3My41MDg3MTI2OTYgK3Rvd2dzODQ9Mjc4LjMsOTMsNDc0LjUsNy44ODksMC4wNSwtNi42MSw2LjIxICtwbT1vc2xvICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNzM5N1wiOicrcHJvaj10bWVyYyArbGF0XzA9NTggK2xvbl8wPTE0LjE2NjY2NjY2NjY2NjY3ICtrPTEgK3hfMD0wICt5XzA9MCArYT02Mzc3NDkyLjAxOCArYj02MzU2MTczLjUwODcxMjY5NiArdG93Z3M4ND0yNzguMyw5Myw0NzQuNSw3Ljg4OSwwLjA1LC02LjYxLDYuMjEgK3BtPW9zbG8gK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI3Mzk4XCI6Jytwcm9qPXRtZXJjICtsYXRfMD01OCArbG9uXzA9MTguMzMzMzMzMzMzMzMzMzMgK2s9MSAreF8wPTAgK3lfMD0wICthPTYzNzc0OTIuMDE4ICtiPTYzNTYxNzMuNTA4NzEyNjk2ICt0b3dnczg0PTI3OC4zLDkzLDQ3NC41LDcuODg5LDAuMDUsLTYuNjEsNi4yMSArcG09b3NsbyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mjc0MjlcIjonK3Byb2o9dXRtICt6b25lPTI5ICtlbGxwcz1pbnRsICt0b3dnczg0PS0yMjMuMjM3LDExMC4xOTMsMzYuNjQ5LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI3NDkyXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0zOS42NjY2NjY2NjY2NjY2NiArbG9uXzA9LTguMTMxOTA2MTExMTExMTEyICtrPTEgK3hfMD0xODAuNTk4ICt5XzA9LTg2Ljk4OTk5OTk5OTk5OTk5ICtlbGxwcz1pbnRsICt0b3dnczg0PS0yMjMuMjM3LDExMC4xOTMsMzYuNjQ5LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI3NDkzXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0zOS42NjY2NjY2NjY2NjY2NiArbG9uXzA9LTguMTMxOTA2MTExMTExMTEyICtrPTEgK3hfMD0xODAuNTk4ICt5XzA9LTg2Ljk4OTk5OTk5OTk5OTk5ICtlbGxwcz1pbnRsICt0b3dnczg0PS0yMjMuMjM3LDExMC4xOTMsMzYuNjQ5LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI3NTAwXCI6Jytwcm9qPWxjYyArbGF0XzE9NDkuNTAwMDAwMDAwMDAwMDEgK2xhdF8wPTQ5LjUwMDAwMDAwMDAwMDAxICtsb25fMD01LjM5OTk5OTk5OTk5OTk5OSAra18wPTAuOTk5NTA5MDggK3hfMD01MDAwMDAgK3lfMD0zMDAwMDAgK2E9NjM3NjUyMyArYj02MzU1ODYyLjkzMzI1NTU3MyArcG09Mi4zMzcyMDgzMzMzMzMzMzMgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI3NTYxXCI6Jytwcm9qPWxjYyArbGF0XzE9NDkuNTAwMDAwMDAwMDAwMDEgK2xhdF8wPTQ5LjUwMDAwMDAwMDAwMDAxICtsb25fMD0wICtrXzA9MC45OTk4NzczNDEgK3hfMD02MDAwMDAgK3lfMD0yMDAwMDAgK2E9NjM3ODI0OS4yICtiPTYzNTY1MTUgK3Rvd2dzODQ9LTE2OCwtNjAsMzIwLDAsMCwwLDAgK3BtPXBhcmlzICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNzU2MlwiOicrcHJvaj1sY2MgK2xhdF8xPTQ2LjggK2xhdF8wPTQ2LjggK2xvbl8wPTAgK2tfMD0wLjk5OTg3NzQyICt4XzA9NjAwMDAwICt5XzA9MjAwMDAwICthPTYzNzgyNDkuMiArYj02MzU2NTE1ICt0b3dnczg0PS0xNjgsLTYwLDMyMCwwLDAsMCwwICtwbT1wYXJpcyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mjc1NjNcIjonK3Byb2o9bGNjICtsYXRfMT00NC4xMDAwMDAwMDAwMDAwMSArbGF0XzA9NDQuMTAwMDAwMDAwMDAwMDEgK2xvbl8wPTAgK2tfMD0wLjk5OTg3NzQ5OSAreF8wPTYwMDAwMCAreV8wPTIwMDAwMCArYT02Mzc4MjQ5LjIgK2I9NjM1NjUxNSArdG93Z3M4ND0tMTY4LC02MCwzMjAsMCwwLDAsMCArcG09cGFyaXMgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI3NTY0XCI6Jytwcm9qPWxjYyArbGF0XzE9NDIuMTY1MDAwMDAwMDAwMDEgK2xhdF8wPTQyLjE2NTAwMDAwMDAwMDAxICtsb25fMD0wICtrXzA9MC45OTk5NDQ3MSAreF8wPTIzNC4zNTggK3lfMD0xODU4NjEuMzY5ICthPTYzNzgyNDkuMiArYj02MzU2NTE1ICt0b3dnczg0PS0xNjgsLTYwLDMyMCwwLDAsMCwwICtwbT1wYXJpcyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mjc1NzFcIjonK3Byb2o9bGNjICtsYXRfMT00OS41MDAwMDAwMDAwMDAwMSArbGF0XzA9NDkuNTAwMDAwMDAwMDAwMDEgK2xvbl8wPTAgK2tfMD0wLjk5OTg3NzM0MSAreF8wPTYwMDAwMCAreV8wPTEyMDAwMDAgK2E9NjM3ODI0OS4yICtiPTYzNTY1MTUgK3Rvd2dzODQ9LTE2OCwtNjAsMzIwLDAsMCwwLDAgK3BtPXBhcmlzICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNzU3MlwiOicrcHJvaj1sY2MgK2xhdF8xPTQ2LjggK2xhdF8wPTQ2LjggK2xvbl8wPTAgK2tfMD0wLjk5OTg3NzQyICt4XzA9NjAwMDAwICt5XzA9MjIwMDAwMCArYT02Mzc4MjQ5LjIgK2I9NjM1NjUxNSArdG93Z3M4ND0tMTY4LC02MCwzMjAsMCwwLDAsMCArcG09cGFyaXMgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI3NTczXCI6Jytwcm9qPWxjYyArbGF0XzE9NDQuMTAwMDAwMDAwMDAwMDEgK2xhdF8wPTQ0LjEwMDAwMDAwMDAwMDAxICtsb25fMD0wICtrXzA9MC45OTk4Nzc0OTkgK3hfMD02MDAwMDAgK3lfMD0zMjAwMDAwICthPTYzNzgyNDkuMiArYj02MzU2NTE1ICt0b3dnczg0PS0xNjgsLTYwLDMyMCwwLDAsMCwwICtwbT1wYXJpcyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mjc1NzRcIjonK3Byb2o9bGNjICtsYXRfMT00Mi4xNjUwMDAwMDAwMDAwMSArbGF0XzA9NDIuMTY1MDAwMDAwMDAwMDEgK2xvbl8wPTAgK2tfMD0wLjk5OTk0NDcxICt4XzA9MjM0LjM1OCAreV8wPTQxODU4NjEuMzY5ICthPTYzNzgyNDkuMiArYj02MzU2NTE1ICt0b3dnczg0PS0xNjgsLTYwLDMyMCwwLDAsMCwwICtwbT1wYXJpcyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mjc1ODFcIjonK3Byb2o9bGNjICtsYXRfMT00OS41MDAwMDAwMDAwMDAwMSArbGF0XzA9NDkuNTAwMDAwMDAwMDAwMDEgK2xvbl8wPTAgK2tfMD0wLjk5OTg3NzM0MSAreF8wPTYwMDAwMCAreV8wPTEyMDAwMDAgK2E9NjM3ODI0OS4yICtiPTYzNTY1MTUgK3Rvd2dzODQ9LTE2OCwtNjAsMzIwLDAsMCwwLDAgK3BtPXBhcmlzICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNzU4MlwiOicrcHJvaj1sY2MgK2xhdF8xPTQ2LjggK2xhdF8wPTQ2LjggK2xvbl8wPTAgK2tfMD0wLjk5OTg3NzQyICt4XzA9NjAwMDAwICt5XzA9MjIwMDAwMCArYT02Mzc4MjQ5LjIgK2I9NjM1NjUxNSArdG93Z3M4ND0tMTY4LC02MCwzMjAsMCwwLDAsMCArcG09cGFyaXMgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI3NTgzXCI6Jytwcm9qPWxjYyArbGF0XzE9NDQuMTAwMDAwMDAwMDAwMDEgK2xhdF8wPTQ0LjEwMDAwMDAwMDAwMDAxICtsb25fMD0wICtrXzA9MC45OTk4Nzc0OTkgK3hfMD02MDAwMDAgK3lfMD0zMjAwMDAwICthPTYzNzgyNDkuMiArYj02MzU2NTE1ICt0b3dnczg0PS0xNjgsLTYwLDMyMCwwLDAsMCwwICtwbT1wYXJpcyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mjc1ODRcIjonK3Byb2o9bGNjICtsYXRfMT00Mi4xNjUwMDAwMDAwMDAwMSArbGF0XzA9NDIuMTY1MDAwMDAwMDAwMDEgK2xvbl8wPTAgK2tfMD0wLjk5OTk0NDcxICt4XzA9MjM0LjM1OCAreV8wPTQxODU4NjEuMzY5ICthPTYzNzgyNDkuMiArYj02MzU2NTE1ICt0b3dnczg0PS0xNjgsLTYwLDMyMCwwLDAsMCwwICtwbT1wYXJpcyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mjc1OTFcIjonK3Byb2o9bGNjICtsYXRfMT00OS41MDAwMDAwMDAwMDAwMSArbGF0XzA9NDkuNTAwMDAwMDAwMDAwMDEgK2xvbl8wPTAgK2tfMD0wLjk5OTg3NzM0MSAreF8wPTYwMDAwMCAreV8wPTIwMDAwMCArYT02Mzc4MjQ5LjIgK2I9NjM1NjUxNSArdG93Z3M4ND0tMTY4LC02MCwzMjAsMCwwLDAsMCArcG09cGFyaXMgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI3NTkyXCI6Jytwcm9qPWxjYyArbGF0XzE9NDYuOCArbGF0XzA9NDYuOCArbG9uXzA9MCAra18wPTAuOTk5ODc3NDIgK3hfMD02MDAwMDAgK3lfMD0yMDAwMDAgK2E9NjM3ODI0OS4yICtiPTYzNTY1MTUgK3Rvd2dzODQ9LTE2OCwtNjAsMzIwLDAsMCwwLDAgK3BtPXBhcmlzICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNzU5M1wiOicrcHJvaj1sY2MgK2xhdF8xPTQ0LjEwMDAwMDAwMDAwMDAxICtsYXRfMD00NC4xMDAwMDAwMDAwMDAwMSArbG9uXzA9MCAra18wPTAuOTk5ODc3NDk5ICt4XzA9NjAwMDAwICt5XzA9MjAwMDAwICthPTYzNzgyNDkuMiArYj02MzU2NTE1ICt0b3dnczg0PS0xNjgsLTYwLDMyMCwwLDAsMCwwICtwbT1wYXJpcyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mjc1OTRcIjonK3Byb2o9bGNjICtsYXRfMT00Mi4xNjUwMDAwMDAwMDAwMSArbGF0XzA9NDIuMTY1MDAwMDAwMDAwMDEgK2xvbl8wPTAgK2tfMD0wLjk5OTk0NDcxICt4XzA9MjM0LjM1OCAreV8wPTE4NTg2MS4zNjkgK2E9NjM3ODI0OS4yICtiPTYzNTY1MTUgK3Rvd2dzODQ9LTE2OCwtNjAsMzIwLDAsMCwwLDAgK3BtPXBhcmlzICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyNzcwMFwiOicrcHJvaj10bWVyYyArbGF0XzA9NDkgK2xvbl8wPS0yICtrPTAuOTk5NjAxMjcxNyAreF8wPTQwMDAwMCAreV8wPS0xMDAwMDAgK2VsbHBzPWFpcnkgK3Rvd2dzODQ9NDQ2LjQ0OCwtMTI1LjE1Nyw1NDIuMDYsMC4xNSwwLjI0NywwLjg0MiwtMjAuNDg5ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyODE5MVwiOicrcHJvaj1jYXNzICtsYXRfMD0zMS43MzQwOTY5NDQ0NDQ0NSArbG9uXzA9MzUuMjEyMDgwNTU1NTU1NTYgK3hfMD0xNzAyNTEuNTU1ICt5XzA9MTI2ODY3LjkwOSArYT02Mzc4MzAwLjc4OSArYj02MzU2NTY2LjQzNSArdG93Z3M4ND0tMjc1LjcyMiw5NC43ODI0LDM0MC44OTQsLTguMDAxLC00LjQyLC0xMS44MjEsMSArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjgxOTJcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTMxLjczNDA5Njk0NDQ0NDQ1ICtsb25fMD0zNS4yMTIwODA1NTU1NTU1NiAraz0xICt4XzA9MTcwMjUxLjU1NSAreV8wPTExMjY4NjcuOTA5ICthPTYzNzgzMDAuNzg5ICtiPTYzNTY1NjYuNDM1ICt0b3dnczg0PS0yNzUuNzIyLDk0Ljc4MjQsMzQwLjg5NCwtOC4wMDEsLTQuNDIsLTExLjgyMSwxICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyODE5M1wiOicrcHJvaj1jYXNzICtsYXRfMD0zMS43MzQwOTY5NDQ0NDQ0NSArbG9uXzA9MzUuMjEyMDgwNTU1NTU1NTYgK3hfMD0xNzAyNTEuNTU1ICt5XzA9MTEyNjg2Ny45MDkgK2E9NjM3ODMwMC43ODkgK2I9NjM1NjU2Ni40MzUgK3Rvd2dzODQ9LTI3NS43MjIsOTQuNzgyNCwzNDAuODk0LC04LjAwMSwtNC40MiwtMTEuODIxLDEgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI4MjMyXCI6Jytwcm9qPXV0bSArem9uZT0zMiArc291dGggK2E9NjM3ODI0OS4yICtiPTYzNTY1MTUgK3Rvd2dzODQ9LTE0OCw1MSwtMjkxLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI4MzQ4XCI6Jytwcm9qPXV0bSArem9uZT00OCArc291dGggK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI4MzQ5XCI6Jytwcm9qPXV0bSArem9uZT00OSArc291dGggK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI4MzUwXCI6Jytwcm9qPXV0bSArem9uZT01MCArc291dGggK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI4MzUxXCI6Jytwcm9qPXV0bSArem9uZT01MSArc291dGggK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI4MzUyXCI6Jytwcm9qPXV0bSArem9uZT01MiArc291dGggK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI4MzUzXCI6Jytwcm9qPXV0bSArem9uZT01MyArc291dGggK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI4MzU0XCI6Jytwcm9qPXV0bSArem9uZT01NCArc291dGggK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI4MzU1XCI6Jytwcm9qPXV0bSArem9uZT01NSArc291dGggK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI4MzU2XCI6Jytwcm9qPXV0bSArem9uZT01NiArc291dGggK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI4MzU3XCI6Jytwcm9qPXV0bSArem9uZT01NyArc291dGggK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI4MzU4XCI6Jytwcm9qPXV0bSArem9uZT01OCArc291dGggK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI4NDAyXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD05ICtrPTEgK3hfMD0yNTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjMuOTIsLTE0MS4yNywtODAuOSwtMCwwLjM1LDAuODIsLTAuMTIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI4NDAzXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xNSAraz0xICt4XzA9MzUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTIzLjkyLC0xNDEuMjcsLTgwLjksLTAsMC4zNSwwLjgyLC0wLjEyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyODQwNFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MjEgK2s9MSAreF8wPTQ1MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yMy45MiwtMTQxLjI3LC04MC45LC0wLDAuMzUsMC44MiwtMC4xMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mjg0MDVcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTI3ICtrPTEgK3hfMD01NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjMuOTIsLTE0MS4yNywtODAuOSwtMCwwLjM1LDAuODIsLTAuMTIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI4NDA2XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0zMyAraz0xICt4XzA9NjUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTIzLjkyLC0xNDEuMjcsLTgwLjksLTAsMC4zNSwwLjgyLC0wLjEyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyODQwN1wiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MzkgK2s9MSAreF8wPTc1MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yMy45MiwtMTQxLjI3LC04MC45LC0wLDAuMzUsMC44MiwtMC4xMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mjg0MDhcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTQ1ICtrPTEgK3hfMD04NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjMuOTIsLTE0MS4yNywtODAuOSwtMCwwLjM1LDAuODIsLTAuMTIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI4NDA5XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD01MSAraz0xICt4XzA9OTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTIzLjkyLC0xNDEuMjcsLTgwLjksLTAsMC4zNSwwLjgyLC0wLjEyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyODQxMFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9NTcgK2s9MSAreF8wPTEwNTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjMuOTIsLTE0MS4yNywtODAuOSwtMCwwLjM1LDAuODIsLTAuMTIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI4NDExXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD02MyAraz0xICt4XzA9MTE1MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yMy45MiwtMTQxLjI3LC04MC45LC0wLDAuMzUsMC44MiwtMC4xMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mjg0MTJcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTY5ICtrPTEgK3hfMD0xMjUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTIzLjkyLC0xNDEuMjcsLTgwLjksLTAsMC4zNSwwLjgyLC0wLjEyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyODQxM1wiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9NzUgK2s9MSAreF8wPTEzNTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjMuOTIsLTE0MS4yNywtODAuOSwtMCwwLjM1LDAuODIsLTAuMTIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI4NDE0XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD04MSAraz0xICt4XzA9MTQ1MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yMy45MiwtMTQxLjI3LC04MC45LC0wLDAuMzUsMC44MiwtMC4xMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mjg0MTVcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTg3ICtrPTEgK3hfMD0xNTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTIzLjkyLC0xNDEuMjcsLTgwLjksLTAsMC4zNSwwLjgyLC0wLjEyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyODQxNlwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9OTMgK2s9MSAreF8wPTE2NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjMuOTIsLTE0MS4yNywtODAuOSwtMCwwLjM1LDAuODIsLTAuMTIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI4NDE3XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD05OSAraz0xICt4XzA9MTc1MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yMy45MiwtMTQxLjI3LC04MC45LC0wLDAuMzUsMC44MiwtMC4xMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mjg0MThcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTEwNSAraz0xICt4XzA9MTg1MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yMy45MiwtMTQxLjI3LC04MC45LC0wLDAuMzUsMC44MiwtMC4xMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mjg0MTlcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTExMSAraz0xICt4XzA9MTk1MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yMy45MiwtMTQxLjI3LC04MC45LC0wLDAuMzUsMC44MiwtMC4xMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mjg0MjBcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTExNyAraz0xICt4XzA9MjA1MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yMy45MiwtMTQxLjI3LC04MC45LC0wLDAuMzUsMC44MiwtMC4xMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mjg0MjFcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTEyMyAraz0xICt4XzA9MjE1MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yMy45MiwtMTQxLjI3LC04MC45LC0wLDAuMzUsMC44MiwtMC4xMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mjg0MjJcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTEyOSAraz0xICt4XzA9MjI1MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yMy45MiwtMTQxLjI3LC04MC45LC0wLDAuMzUsMC44MiwtMC4xMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mjg0MjNcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTEzNSAraz0xICt4XzA9MjM1MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yMy45MiwtMTQxLjI3LC04MC45LC0wLDAuMzUsMC44MiwtMC4xMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mjg0MjRcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTE0MSAraz0xICt4XzA9MjQ1MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yMy45MiwtMTQxLjI3LC04MC45LC0wLDAuMzUsMC44MiwtMC4xMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mjg0MjVcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTE0NyAraz0xICt4XzA9MjU1MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yMy45MiwtMTQxLjI3LC04MC45LC0wLDAuMzUsMC44MiwtMC4xMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mjg0MjZcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTE1MyAraz0xICt4XzA9MjY1MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yMy45MiwtMTQxLjI3LC04MC45LC0wLDAuMzUsMC44MiwtMC4xMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mjg0MjdcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTE1OSAraz0xICt4XzA9Mjc1MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yMy45MiwtMTQxLjI3LC04MC45LC0wLDAuMzUsMC44MiwtMC4xMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mjg0MjhcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTE2NSAraz0xICt4XzA9Mjg1MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yMy45MiwtMTQxLjI3LC04MC45LC0wLDAuMzUsMC44MiwtMC4xMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mjg0MjlcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTE3MSAraz0xICt4XzA9Mjk1MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yMy45MiwtMTQxLjI3LC04MC45LC0wLDAuMzUsMC44MiwtMC4xMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mjg0MzBcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTE3NyAraz0xICt4XzA9MzA1MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yMy45MiwtMTQxLjI3LC04MC45LC0wLDAuMzUsMC44MiwtMC4xMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mjg0MzFcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPS0xNzcgK2s9MSAreF8wPTMxNTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjMuOTIsLTE0MS4yNywtODAuOSwtMCwwLjM1LDAuODIsLTAuMTIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI4NDMyXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0tMTcxICtrPTEgK3hfMD0zMjUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTIzLjkyLC0xNDEuMjcsLTgwLjksLTAsMC4zNSwwLjgyLC0wLjEyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyODQ2MlwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9OSAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjMuOTIsLTE0MS4yNywtODAuOSwtMCwwLjM1LDAuODIsLTAuMTIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI4NDYzXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xNSAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjMuOTIsLTE0MS4yNywtODAuOSwtMCwwLjM1LDAuODIsLTAuMTIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI4NDY0XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0yMSAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjMuOTIsLTE0MS4yNywtODAuOSwtMCwwLjM1LDAuODIsLTAuMTIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI4NDY1XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0yNyAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjMuOTIsLTE0MS4yNywtODAuOSwtMCwwLjM1LDAuODIsLTAuMTIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI4NDY2XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0zMyAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjMuOTIsLTE0MS4yNywtODAuOSwtMCwwLjM1LDAuODIsLTAuMTIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI4NDY3XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0zOSAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjMuOTIsLTE0MS4yNywtODAuOSwtMCwwLjM1LDAuODIsLTAuMTIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI4NDY4XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD00NSAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjMuOTIsLTE0MS4yNywtODAuOSwtMCwwLjM1LDAuODIsLTAuMTIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI4NDY5XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD01MSAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjMuOTIsLTE0MS4yNywtODAuOSwtMCwwLjM1LDAuODIsLTAuMTIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI4NDcwXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD01NyAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjMuOTIsLTE0MS4yNywtODAuOSwtMCwwLjM1LDAuODIsLTAuMTIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI4NDcxXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD02MyAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjMuOTIsLTE0MS4yNywtODAuOSwtMCwwLjM1LDAuODIsLTAuMTIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI4NDcyXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD02OSAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjMuOTIsLTE0MS4yNywtODAuOSwtMCwwLjM1LDAuODIsLTAuMTIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI4NDczXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD03NSAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjMuOTIsLTE0MS4yNywtODAuOSwtMCwwLjM1LDAuODIsLTAuMTIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI4NDc0XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD04MSAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjMuOTIsLTE0MS4yNywtODAuOSwtMCwwLjM1LDAuODIsLTAuMTIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI4NDc1XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD04NyAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjMuOTIsLTE0MS4yNywtODAuOSwtMCwwLjM1LDAuODIsLTAuMTIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI4NDc2XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD05MyAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjMuOTIsLTE0MS4yNywtODAuOSwtMCwwLjM1LDAuODIsLTAuMTIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI4NDc3XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD05OSAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjMuOTIsLTE0MS4yNywtODAuOSwtMCwwLjM1LDAuODIsLTAuMTIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI4NDc4XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMDUgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTIzLjkyLC0xNDEuMjcsLTgwLjksLTAsMC4zNSwwLjgyLC0wLjEyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyODQ3OVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTExICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yMy45MiwtMTQxLjI3LC04MC45LC0wLDAuMzUsMC44MiwtMC4xMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mjg0ODBcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTExNyAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjMuOTIsLTE0MS4yNywtODAuOSwtMCwwLjM1LDAuODIsLTAuMTIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI4NDgxXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMjMgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTIzLjkyLC0xNDEuMjcsLTgwLjksLTAsMC4zNSwwLjgyLC0wLjEyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyODQ4MlwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTI5ICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yMy45MiwtMTQxLjI3LC04MC45LC0wLDAuMzUsMC44MiwtMC4xMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mjg0ODNcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTEzNSAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjMuOTIsLTE0MS4yNywtODAuOSwtMCwwLjM1LDAuODIsLTAuMTIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI4NDg0XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xNDEgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTIzLjkyLC0xNDEuMjcsLTgwLjksLTAsMC4zNSwwLjgyLC0wLjEyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyODQ4NVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTQ3ICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yMy45MiwtMTQxLjI3LC04MC45LC0wLDAuMzUsMC44MiwtMC4xMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mjg0ODZcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTE1MyAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjMuOTIsLTE0MS4yNywtODAuOSwtMCwwLjM1LDAuODIsLTAuMTIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI4NDg3XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xNTkgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTIzLjkyLC0xNDEuMjcsLTgwLjksLTAsMC4zNSwwLjgyLC0wLjEyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyODQ4OFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTY1ICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yMy45MiwtMTQxLjI3LC04MC45LC0wLDAuMzUsMC44MiwtMC4xMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mjg0ODlcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTE3MSAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjMuOTIsLTE0MS4yNywtODAuOSwtMCwwLjM1LDAuODIsLTAuMTIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI4NDkwXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xNzcgK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWtyYXNzICt0b3dnczg0PTIzLjkyLC0xNDEuMjcsLTgwLjksLTAsMC4zNSwwLjgyLC0wLjEyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyODQ5MVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9LTE3NyAraz0xICt4XzA9NTAwMDAwICt5XzA9MCArZWxscHM9a3Jhc3MgK3Rvd2dzODQ9MjMuOTIsLTE0MS4yNywtODAuOSwtMCwwLjM1LDAuODIsLTAuMTIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI4NDkyXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0tMTcxICtrPTEgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yMy45MiwtMTQxLjI3LC04MC45LC0wLDAuMzUsMC44MiwtMC4xMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mjg2MDBcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTI0LjQ1ICtsb25fMD01MS4yMTY2NjY2NjY2NjY2NyAraz0wLjk5OTk5ICt4XzA9MjAwMDAwICt5XzA9MzAwMDAwICtlbGxwcz1pbnRsICt0b3dnczg0PS0xMjguMTYsLTI4Mi40MiwyMS45MywwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyODk5MVwiOicrcHJvaj1zdGVyZWEgK2xhdF8wPTUyLjE1NjE2MDU1NTU1NTU1ICtsb25fMD01LjM4NzYzODg4ODg4ODg5ICtrPTAuOTk5OTA3OSAreF8wPTAgK3lfMD0wICtlbGxwcz1iZXNzZWwgK3Rvd2dzODQ9NTY1LjQxNyw1MC4zMzE5LDQ2NS41NTIsLTAuMzk4OTU3LDAuMzQzOTg4LC0xLjg3NzQsNC4wNzI1ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyODk5MlwiOicrcHJvaj1zdGVyZWEgK2xhdF8wPTUyLjE1NjE2MDU1NTU1NTU1ICtsb25fMD01LjM4NzYzODg4ODg4ODg5ICtrPTAuOTk5OTA3OSAreF8wPTE1NTAwMCAreV8wPTQ2MzAwMCArZWxscHM9YmVzc2VsICt0b3dnczg0PTU2NS40MTcsNTAuMzMxOSw0NjUuNTUyLC0wLjM5ODk1NywwLjM0Mzk4OCwtMS44Nzc0LDQuMDcyNSArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjkxMDBcIjonK3Byb2o9cG9seSArbGF0XzA9MCArbG9uXzA9LTU0ICt4XzA9NTAwMDAwMCAreV8wPTEwMDAwMDAwICtlbGxwcz1HUlM2NyArdG93Z3M4ND0tNTcsMSwtNDEsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjkxMDFcIjonK3Byb2o9cG9seSArbGF0XzA9MCArbG9uXzA9LTU0ICt4XzA9NTAwMDAwMCAreV8wPTEwMDAwMDAwICtlbGxwcz1hdXN0X1NBICt0b3dnczg0PS01NywxLC00MSwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyOTExOFwiOicrcHJvaj11dG0gK3pvbmU9MTggK2VsbHBzPUdSUzY3ICt0b3dnczg0PS01NywxLC00MSwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyOTExOVwiOicrcHJvaj11dG0gK3pvbmU9MTkgK2VsbHBzPUdSUzY3ICt0b3dnczg0PS01NywxLC00MSwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyOTEyMFwiOicrcHJvaj11dG0gK3pvbmU9MjAgK2VsbHBzPUdSUzY3ICt0b3dnczg0PS01NywxLC00MSwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyOTEyMVwiOicrcHJvaj11dG0gK3pvbmU9MjEgK2VsbHBzPUdSUzY3ICt0b3dnczg0PS01NywxLC00MSwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyOTEyMlwiOicrcHJvaj11dG0gK3pvbmU9MjIgK2VsbHBzPUdSUzY3ICt0b3dnczg0PS01NywxLC00MSwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyOTE2OFwiOicrcHJvaj11dG0gK3pvbmU9MTggK2VsbHBzPWF1c3RfU0EgK3Rvd2dzODQ9LTU3LDEsLTQxLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI5MTY5XCI6Jytwcm9qPXV0bSArem9uZT0xOSArZWxscHM9YXVzdF9TQSArdG93Z3M4ND0tNTcsMSwtNDEsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjkxNzBcIjonK3Byb2o9dXRtICt6b25lPTIwICtlbGxwcz1hdXN0X1NBICt0b3dnczg0PS01NywxLC00MSwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyOTE3MVwiOicrcHJvaj11dG0gK3pvbmU9MjEgK2VsbHBzPWF1c3RfU0EgK3Rvd2dzODQ9LTU3LDEsLTQxLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI5MTcyXCI6Jytwcm9qPXV0bSArem9uZT0yMiArZWxscHM9YXVzdF9TQSArdG93Z3M4ND0tNTcsMSwtNDEsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjkxNzdcIjonK3Byb2o9dXRtICt6b25lPTE3ICtzb3V0aCArZWxscHM9R1JTNjcgK3Rvd2dzODQ9LTU3LDEsLTQxLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI5MTc4XCI6Jytwcm9qPXV0bSArem9uZT0xOCArc291dGggK2VsbHBzPUdSUzY3ICt0b3dnczg0PS01NywxLC00MSwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyOTE3OVwiOicrcHJvaj11dG0gK3pvbmU9MTkgK3NvdXRoICtlbGxwcz1HUlM2NyArdG93Z3M4ND0tNTcsMSwtNDEsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjkxODBcIjonK3Byb2o9dXRtICt6b25lPTIwICtzb3V0aCArZWxscHM9R1JTNjcgK3Rvd2dzODQ9LTU3LDEsLTQxLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI5MTgxXCI6Jytwcm9qPXV0bSArem9uZT0yMSArc291dGggK2VsbHBzPUdSUzY3ICt0b3dnczg0PS01NywxLC00MSwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyOTE4MlwiOicrcHJvaj11dG0gK3pvbmU9MjIgK3NvdXRoICtlbGxwcz1HUlM2NyArdG93Z3M4ND0tNTcsMSwtNDEsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjkxODNcIjonK3Byb2o9dXRtICt6b25lPTIzICtzb3V0aCArZWxscHM9R1JTNjcgK3Rvd2dzODQ9LTU3LDEsLTQxLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI5MTg0XCI6Jytwcm9qPXV0bSArem9uZT0yNCArc291dGggK2VsbHBzPUdSUzY3ICt0b3dnczg0PS01NywxLC00MSwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyOTE4NVwiOicrcHJvaj11dG0gK3pvbmU9MjUgK3NvdXRoICtlbGxwcz1HUlM2NyArdG93Z3M4ND0tNTcsMSwtNDEsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjkxODdcIjonK3Byb2o9dXRtICt6b25lPTE3ICtzb3V0aCArZWxscHM9YXVzdF9TQSArdG93Z3M4ND0tNTcsMSwtNDEsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjkxODhcIjonK3Byb2o9dXRtICt6b25lPTE4ICtzb3V0aCArZWxscHM9YXVzdF9TQSArdG93Z3M4ND0tNTcsMSwtNDEsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjkxODlcIjonK3Byb2o9dXRtICt6b25lPTE5ICtzb3V0aCArZWxscHM9YXVzdF9TQSArdG93Z3M4ND0tNTcsMSwtNDEsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjkxOTBcIjonK3Byb2o9dXRtICt6b25lPTIwICtzb3V0aCArZWxscHM9YXVzdF9TQSArdG93Z3M4ND0tNTcsMSwtNDEsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjkxOTFcIjonK3Byb2o9dXRtICt6b25lPTIxICtzb3V0aCArZWxscHM9YXVzdF9TQSArdG93Z3M4ND0tNTcsMSwtNDEsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjkxOTJcIjonK3Byb2o9dXRtICt6b25lPTIyICtzb3V0aCArZWxscHM9YXVzdF9TQSArdG93Z3M4ND0tNTcsMSwtNDEsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjkxOTNcIjonK3Byb2o9dXRtICt6b25lPTIzICtzb3V0aCArZWxscHM9YXVzdF9TQSArdG93Z3M4ND0tNTcsMSwtNDEsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjkxOTRcIjonK3Byb2o9dXRtICt6b25lPTI0ICtzb3V0aCArZWxscHM9YXVzdF9TQSArdG93Z3M4ND0tNTcsMSwtNDEsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjkxOTVcIjonK3Byb2o9dXRtICt6b25lPTI1ICtzb3V0aCArZWxscHM9YXVzdF9TQSArdG93Z3M4ND0tNTcsMSwtNDEsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjkyMjBcIjonK3Byb2o9dXRtICt6b25lPTIwICtzb3V0aCArZWxscHM9aW50bCArdG93Z3M4ND0tMzU1LDIxLDcyLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI5MjIxXCI6Jytwcm9qPXV0bSArem9uZT0yMSArc291dGggK2VsbHBzPWludGwgK3Rvd2dzODQ9LTM1NSwyMSw3MiwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyOTMzM1wiOicrcHJvaj11dG0gK3pvbmU9MzMgK3NvdXRoICtlbGxwcz1iZXNzX25hbSArdG93Z3M4ND02MTYsOTcsLTI1MSwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyOTM3MVwiOicrcHJvaj10bWVyYyArbGF0XzA9LTIyICtsb25fMD0xMSAraz0xICt4XzA9MCAreV8wPTAgK2F4aXM9d3N1ICtlbGxwcz1iZXNzX25hbSArdG93Z3M4ND02MTYsOTcsLTI1MSwwLDAsMCwwICt0b19tZXRlcj0xLjAwMDAxMzU5NjUgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI5MzczXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0tMjIgK2xvbl8wPTEzICtrPTEgK3hfMD0wICt5XzA9MCArYXhpcz13c3UgK2VsbHBzPWJlc3NfbmFtICt0b3dnczg0PTYxNiw5NywtMjUxLDAsMCwwLDAgK3RvX21ldGVyPTEuMDAwMDEzNTk2NSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjkzNzVcIjonK3Byb2o9dG1lcmMgK2xhdF8wPS0yMiArbG9uXzA9MTUgK2s9MSAreF8wPTAgK3lfMD0wICtheGlzPXdzdSArZWxscHM9YmVzc19uYW0gK3Rvd2dzODQ9NjE2LDk3LC0yNTEsMCwwLDAsMCArdG9fbWV0ZXI9MS4wMDAwMTM1OTY1ICtub19kZWZzICcsXG4gIFwiRVBTRzoyOTM3N1wiOicrcHJvaj10bWVyYyArbGF0XzA9LTIyICtsb25fMD0xNyAraz0xICt4XzA9MCAreV8wPTAgK2F4aXM9d3N1ICtlbGxwcz1iZXNzX25hbSArdG93Z3M4ND02MTYsOTcsLTI1MSwwLDAsMCwwICt0b19tZXRlcj0xLjAwMDAxMzU5NjUgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI5Mzc5XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0tMjIgK2xvbl8wPTE5ICtrPTEgK3hfMD0wICt5XzA9MCArYXhpcz13c3UgK2VsbHBzPWJlc3NfbmFtICt0b3dnczg0PTYxNiw5NywtMjUxLDAsMCwwLDAgK3RvX21ldGVyPTEuMDAwMDEzNTk2NSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MjkzODFcIjonK3Byb2o9dG1lcmMgK2xhdF8wPS0yMiArbG9uXzA9MjEgK2s9MSAreF8wPTAgK3lfMD0wICtheGlzPXdzdSArZWxscHM9YmVzc19uYW0gK3Rvd2dzODQ9NjE2LDk3LC0yNTEsMCwwLDAsMCArdG9fbWV0ZXI9MS4wMDAwMTM1OTY1ICtub19kZWZzICcsXG4gIFwiRVBTRzoyOTM4M1wiOicrcHJvaj10bWVyYyArbGF0XzA9LTIyICtsb25fMD0yMyAraz0xICt4XzA9MCAreV8wPTAgK2F4aXM9d3N1ICtlbGxwcz1iZXNzX25hbSArdG93Z3M4ND02MTYsOTcsLTI1MSwwLDAsMCwwICt0b19tZXRlcj0xLjAwMDAxMzU5NjUgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI5Mzg1XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0tMjIgK2xvbl8wPTI1ICtrPTEgK3hfMD0wICt5XzA9MCArYXhpcz13c3UgK2VsbHBzPWJlc3NfbmFtICt0b3dnczg0PTYxNiw5NywtMjUxLDAsMCwwLDAgK3RvX21ldGVyPTEuMDAwMDEzNTk2NSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mjk2MzVcIjonK3Byb2o9dXRtICt6b25lPTM1ICthPTYzNzgyNDkuMiArYj02MzU2NTE1ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyOTYzNlwiOicrcHJvaj11dG0gK3pvbmU9MzYgK2E9NjM3ODI0OS4yICtiPTYzNTY1MTUgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI5NzAwXCI6Jytwcm9qPW9tZXJjICtsYXRfMD0tMTguOSArbG9uYz00NC4xMDAwMDAwMDAwMDAwMSArYWxwaGE9MTguOSAraz0wLjk5OTUwMDAwMDAwMDAwMDEgK3hfMD00MDAwMDAgK3lfMD04MDAwMDAgK2dhbW1hPTE4LjkgK2VsbHBzPWludGwgK3Rvd2dzODQ9LTE4OSwtMjQyLC05MSwwLDAsMCwwICtwbT1wYXJpcyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mjk3MDJcIjonK3Byb2o9b21lcmMgK2xhdF8wPS0xOC45ICtsb25jPTQ0LjEwMDAwMDAwMDAwMDAxICthbHBoYT0xOC45ICtrPTAuOTk5NTAwMDAwMDAwMDAwMSAreF8wPTQwMDAwMCAreV8wPTgwMDAwMCArZ2FtbWE9MTguOSArZWxscHM9aW50bCArdG93Z3M4ND0tMTg5LC0yNDIsLTkxLDAsMCwwLDAgK3BtPXBhcmlzICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyOTczOFwiOicrcHJvaj11dG0gK3pvbmU9MzggK3NvdXRoICtlbGxwcz1pbnRsICt0b3dnczg0PS0xODksLTI0MiwtOTEsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mjk3MzlcIjonK3Byb2o9dXRtICt6b25lPTM5ICtzb3V0aCArZWxscHM9aW50bCArdG93Z3M4ND0tMTg5LC0yNDIsLTkxLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI5ODQ5XCI6Jytwcm9qPXV0bSArem9uZT00OSArZWxscHM9ZXZyc3RTUyArdG93Z3M4ND0tNjc5LDY2OSwtNDgsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mjk4NTBcIjonK3Byb2o9dXRtICt6b25lPTUwICtlbGxwcz1ldnJzdFNTICt0b3dnczg0PS02NzksNjY5LC00OCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzoyOTg3MVwiOicrcHJvaj1vbWVyYyArbGF0XzA9NCArbG9uYz0xMTUgK2FscGhhPTUzLjMxNTgyMDQ3MjIyMjIyICtrPTAuOTk5ODQgK3hfMD01OTA0NzYuODcxNDYzMDQwMSAreV8wPTQ0Mjg1Ny42NTMwOTQzNjEgK2dhbW1hPTUzLjEzMDEwMjM2MTExMTExICtlbGxwcz1ldnJzdFNTICt0b3dnczg0PS02NzksNjY5LC00OCwwLDAsMCwwICt0b19tZXRlcj0yMC4xMTY3NjUxMjE1NTI2MyArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mjk4NzJcIjonK3Byb2o9b21lcmMgK2xhdF8wPTQgK2xvbmM9MTE1ICthbHBoYT01My4zMTU4MjA0NzIyMjIyMiAraz0wLjk5OTg0ICt4XzA9NTkwNDc2Ljg3Mjc0MzE5NzkgK3lfMD00NDI4NTcuNjU0NTU3Mzk4NSArZ2FtbWE9NTMuMTMwMTAyMzYxMTExMTEgK2VsbHBzPWV2cnN0U1MgK3Rvd2dzODQ9LTY3OSw2NjksLTQ4LDAsMCwwLDAgK3RvX21ldGVyPTAuMzA0Nzk5NDcxNTM4Njc2MiArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mjk4NzNcIjonK3Byb2o9b21lcmMgK2xhdF8wPTQgK2xvbmM9MTE1ICthbHBoYT01My4zMTU4MjA0NzIyMjIyMiAraz0wLjk5OTg0ICt4XzA9NTkwNDc2Ljg3ICt5XzA9NDQyODU3LjY1ICtnYW1tYT01My4xMzAxMDIzNjExMTExMSArZWxscHM9ZXZyc3RTUyArdG93Z3M4ND0tNjc5LDY2OSwtNDgsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mjk5MDBcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTUzLjUgK2xvbl8wPS04ICtrPTEuMDAwMDM1ICt4XzA9MjAwMDAwICt5XzA9MjUwMDAwICtlbGxwcz1tb2RfYWlyeSArdG93Z3M4ND00ODIuNSwtMTMwLjYsNTY0LjYsLTEuMDQyLC0wLjIxNCwtMC42MzEsOC4xNSArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6Mjk5MDFcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTUzLjUgK2xvbl8wPS04ICtrPTEgK3hfMD0yMDAwMDAgK3lfMD0yNTAwMDAgK2VsbHBzPWFpcnkgK3Rvd2dzODQ9NDgyLjUsLTEzMC42LDU2NC42LC0xLjA0MiwtMC4yMTQsLTAuNjMxLDguMTUgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI5OTAyXCI6Jytwcm9qPXRtZXJjICtsYXRfMD01My41ICtsb25fMD0tOCAraz0xLjAwMDAzNSAreF8wPTIwMDAwMCAreV8wPTI1MDAwMCArZWxscHM9bW9kX2FpcnkgK3Rvd2dzODQ9NDgyLjUsLTEzMC42LDU2NC42LC0xLjA0MiwtMC4yMTQsLTAuNjMxLDguMTUgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjI5OTAzXCI6Jytwcm9qPXRtZXJjICtsYXRfMD01My41ICtsb25fMD0tOCAraz0xLjAwMDAzNSAreF8wPTIwMDAwMCAreV8wPTI1MDAwMCArZWxscHM9bW9kX2FpcnkgK3Rvd2dzODQ9NDgyLjUsLTEzMC42LDU2NC42LC0xLjA0MiwtMC4yMTQsLTAuNjMxLDguMTUgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMwMTYxXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0zMyArbG9uXzA9MTI5LjUgK2s9MC45OTk5ICt4XzA9MCAreV8wPTAgK2VsbHBzPWJlc3NlbCArdG93Z3M4ND0tMTQ2LjQxNCw1MDcuMzM3LDY4MC41MDcsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzAxNjJcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTMzICtsb25fMD0xMzEgK2s9MC45OTk5ICt4XzA9MCAreV8wPTAgK2VsbHBzPWJlc3NlbCArdG93Z3M4ND0tMTQ2LjQxNCw1MDcuMzM3LDY4MC41MDcsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzAxNjNcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTM2ICtsb25fMD0xMzIuMTY2NjY2NjY2NjY2NyAraz0wLjk5OTkgK3hfMD0wICt5XzA9MCArZWxscHM9YmVzc2VsICt0b3dnczg0PS0xNDYuNDE0LDUwNy4zMzcsNjgwLjUwNywwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMDE2NFwiOicrcHJvaj10bWVyYyArbGF0XzA9MzMgK2xvbl8wPTEzMy41ICtrPTAuOTk5OSAreF8wPTAgK3lfMD0wICtlbGxwcz1iZXNzZWwgK3Rvd2dzODQ9LTE0Ni40MTQsNTA3LjMzNyw2ODAuNTA3LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMwMTY1XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0zNiArbG9uXzA9MTM0LjMzMzMzMzMzMzMzMzMgK2s9MC45OTk5ICt4XzA9MCAreV8wPTAgK2VsbHBzPWJlc3NlbCArdG93Z3M4ND0tMTQ2LjQxNCw1MDcuMzM3LDY4MC41MDcsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzAxNjZcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTM2ICtsb25fMD0xMzYgK2s9MC45OTk5ICt4XzA9MCAreV8wPTAgK2VsbHBzPWJlc3NlbCArdG93Z3M4ND0tMTQ2LjQxNCw1MDcuMzM3LDY4MC41MDcsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzAxNjdcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTM2ICtsb25fMD0xMzcuMTY2NjY2NjY2NjY2NyAraz0wLjk5OTkgK3hfMD0wICt5XzA9MCArZWxscHM9YmVzc2VsICt0b3dnczg0PS0xNDYuNDE0LDUwNy4zMzcsNjgwLjUwNywwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMDE2OFwiOicrcHJvaj10bWVyYyArbGF0XzA9MzYgK2xvbl8wPTEzOC41ICtrPTAuOTk5OSAreF8wPTAgK3lfMD0wICtlbGxwcz1iZXNzZWwgK3Rvd2dzODQ9LTE0Ni40MTQsNTA3LjMzNyw2ODAuNTA3LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMwMTY5XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0zNiArbG9uXzA9MTM5LjgzMzMzMzMzMzMzMzMgK2s9MC45OTk5ICt4XzA9MCAreV8wPTAgK2VsbHBzPWJlc3NlbCArdG93Z3M4ND0tMTQ2LjQxNCw1MDcuMzM3LDY4MC41MDcsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzAxNzBcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTQwICtsb25fMD0xNDAuODMzMzMzMzMzMzMzMyAraz0wLjk5OTkgK3hfMD0wICt5XzA9MCArZWxscHM9YmVzc2VsICt0b3dnczg0PS0xNDYuNDE0LDUwNy4zMzcsNjgwLjUwNywwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMDE3MVwiOicrcHJvaj10bWVyYyArbGF0XzA9NDQgK2xvbl8wPTE0MC4yNSAraz0wLjk5OTkgK3hfMD0wICt5XzA9MCArZWxscHM9YmVzc2VsICt0b3dnczg0PS0xNDYuNDE0LDUwNy4zMzcsNjgwLjUwNywwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMDE3MlwiOicrcHJvaj10bWVyYyArbGF0XzA9NDQgK2xvbl8wPTE0Mi4yNSAraz0wLjk5OTkgK3hfMD0wICt5XzA9MCArZWxscHM9YmVzc2VsICt0b3dnczg0PS0xNDYuNDE0LDUwNy4zMzcsNjgwLjUwNywwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMDE3M1wiOicrcHJvaj10bWVyYyArbGF0XzA9NDQgK2xvbl8wPTE0NC4yNSAraz0wLjk5OTkgK3hfMD0wICt5XzA9MCArZWxscHM9YmVzc2VsICt0b3dnczg0PS0xNDYuNDE0LDUwNy4zMzcsNjgwLjUwNywwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMDE3NFwiOicrcHJvaj10bWVyYyArbGF0XzA9MjYgK2xvbl8wPTE0MiAraz0wLjk5OTkgK3hfMD0wICt5XzA9MCArZWxscHM9YmVzc2VsICt0b3dnczg0PS0xNDYuNDE0LDUwNy4zMzcsNjgwLjUwNywwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMDE3NVwiOicrcHJvaj10bWVyYyArbGF0XzA9MjYgK2xvbl8wPTEyNy41ICtrPTAuOTk5OSAreF8wPTAgK3lfMD0wICtlbGxwcz1iZXNzZWwgK3Rvd2dzODQ9LTE0Ni40MTQsNTA3LjMzNyw2ODAuNTA3LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMwMTc2XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0yNiArbG9uXzA9MTI0ICtrPTAuOTk5OSAreF8wPTAgK3lfMD0wICtlbGxwcz1iZXNzZWwgK3Rvd2dzODQ9LTE0Ni40MTQsNTA3LjMzNyw2ODAuNTA3LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMwMTc3XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0yNiArbG9uXzA9MTMxICtrPTAuOTk5OSAreF8wPTAgK3lfMD0wICtlbGxwcz1iZXNzZWwgK3Rvd2dzODQ9LTE0Ni40MTQsNTA3LjMzNyw2ODAuNTA3LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMwMTc4XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0yMCArbG9uXzA9MTM2ICtrPTAuOTk5OSAreF8wPTAgK3lfMD0wICtlbGxwcz1iZXNzZWwgK3Rvd2dzODQ9LTE0Ni40MTQsNTA3LjMzNyw2ODAuNTA3LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMwMTc5XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0yNiArbG9uXzA9MTU0ICtrPTAuOTk5OSAreF8wPTAgK3lfMD0wICtlbGxwcz1iZXNzZWwgK3Rvd2dzODQ9LTE0Ni40MTQsNTA3LjMzNyw2ODAuNTA3LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMwMjAwXCI6Jytwcm9qPWNhc3MgK2xhdF8wPTEwLjQ0MTY2NjY2NjY2NjY3ICtsb25fMD0tNjEuMzMzMzMzMzMzMzMzMzQgK3hfMD04NjUwMS40NjM5MjA1MTk5OSAreV8wPTY1Mzc5LjAxMzQyODMgK2E9NjM3ODI5My42NDUyMDg3NTkgK2I9NjM1NjYxNy45ODc2Nzk4MzggK3Rvd2dzODQ9LTYxLjcwMiwyODQuNDg4LDQ3Mi4wNTIsMCwwLDAsMCArdG9fbWV0ZXI9MC4yMDExNjYxOTUxNjQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMwMzM5XCI6Jytwcm9qPXV0bSArem9uZT0zOSArZWxscHM9aGVsbWVydCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzAzNDBcIjonK3Byb2o9dXRtICt6b25lPTQwICtlbGxwcz1oZWxtZXJ0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMDQ5MVwiOicrcHJvaj1sY2MgK2xhdF8xPTM2ICtsYXRfMD0zNiArbG9uXzA9Mi43ICtrXzA9MC45OTk2MjU1NDQgK3hfMD01MDAwMDAgK3lfMD0zMDAwMDAgK2E9NjM3ODI0OS4yICtiPTYzNTY1MTUgK3Rvd2dzODQ9LTczLC0yNDcsMjI3LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMwNDkyXCI6Jytwcm9qPWxjYyArbGF0XzE9MzMuMyArbGF0XzA9MzMuMyArbG9uXzA9Mi43ICtrXzA9MC45OTk2MjU3NjkgK3hfMD01MDAwMDAgK3lfMD0zMDAwMDAgK2E9NjM3ODI0OS4yICtiPTYzNTY1MTUgK3Rvd2dzODQ9LTczLC0yNDcsMjI3LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMwNDkzXCI6Jytwcm9qPWxjYyArbGF0XzE9MzYgK2xhdF8wPTM2ICtsb25fMD0yLjcgK2tfMD0wLjk5OTYyNTU0NCAreF8wPTUwMDAwMCAreV8wPTMwMDAwMCArYT02Mzc4MjQ5LjIgK2I9NjM1NjUxNSArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzA0OTRcIjonK3Byb2o9bGNjICtsYXRfMT0zMy4zICtsYXRfMD0zMy4zICtsb25fMD0yLjcgK2tfMD0wLjk5OTYyNTc2OSAreF8wPTUwMDAwMCAreV8wPTMwMDAwMCArYT02Mzc4MjQ5LjIgK2I9NjM1NjUxNSArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzA3MjlcIjonK3Byb2o9dXRtICt6b25lPTI5ICtlbGxwcz1jbHJrODAgK3Rvd2dzODQ9LTIwOS4zNjIsLTg3LjgxNjIsNDA0LjYyLDAuMDA0NiwzLjQ3ODQsMC41ODA1LC0xLjQ1NDcgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMwNzMwXCI6Jytwcm9qPXV0bSArem9uZT0zMCArZWxscHM9Y2xyazgwICt0b3dnczg0PS0yMDkuMzYyLC04Ny44MTYyLDQwNC42MiwwLjAwNDYsMy40Nzg0LDAuNTgwNSwtMS40NTQ3ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMDczMVwiOicrcHJvaj11dG0gK3pvbmU9MzEgK2VsbHBzPWNscms4MCArdG93Z3M4ND0tMjA5LjM2MiwtODcuODE2Miw0MDQuNjIsMC4wMDQ2LDMuNDc4NCwwLjU4MDUsLTEuNDU0NyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzA3MzJcIjonK3Byb2o9dXRtICt6b25lPTMyICtlbGxwcz1jbHJrODAgK3Rvd2dzODQ9LTIwOS4zNjIsLTg3LjgxNjIsNDA0LjYyLDAuMDA0NiwzLjQ3ODQsMC41ODA1LC0xLjQ1NDcgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMwNzkxXCI6Jytwcm9qPWxjYyArbGF0XzE9MzYgK2xhdF8wPTM2ICtsb25fMD0yLjcgK2tfMD0wLjk5OTYyNTU0NCAreF8wPTUwMDEzNSAreV8wPTMwMDA5MCArZWxscHM9Y2xyazgwICt0b3dnczg0PS0yMDkuMzYyLC04Ny44MTYyLDQwNC42MiwwLjAwNDYsMy40Nzg0LDAuNTgwNSwtMS40NTQ3ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMDc5MlwiOicrcHJvaj1sY2MgK2xhdF8xPTMzLjMgK2xhdF8wPTMzLjMgK2xvbl8wPTIuNyAra18wPTAuOTk5NjI1NzY5ICt4XzA9NTAwMTM1ICt5XzA9MzAwMDkwICtlbGxwcz1jbHJrODAgK3Rvd2dzODQ9LTIwOS4zNjIsLTg3LjgxNjIsNDA0LjYyLDAuMDA0NiwzLjQ3ODQsMC41ODA1LC0xLjQ1NDcgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMwODAwXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xNS44MDgyNzc3Nzc3Nzc3OCAraz0xICt4XzA9MTUwMDAwMCAreV8wPTAgK2VsbHBzPWJlc3NlbCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzEwMjhcIjonK3Byb2o9dXRtICt6b25lPTI4ICthPTYzNzgyNDkuMiArYj02MzU2NTE1ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMTEyMVwiOicrcHJvaj11dG0gK3pvbmU9MjEgK2VsbHBzPWludGwgK3Rvd2dzODQ9LTI2NSwxMjAsLTM1OCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMTE1NFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9LTU0ICtrPTAuOTk5NiAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWludGwgK3Rvd2dzODQ9LTI2NSwxMjAsLTM1OCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMTE3MFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9LTU1LjY4MzMzMzMzMzMzMzMzICtrPTAuOTk5NiAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWludGwgK3Rvd2dzODQ9LTI2NSwxMjAsLTM1OCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMTE3MVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9LTU1LjY4MzMzMzMzMzMzMzMzICtrPTAuOTk5OSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPWludGwgK3Rvd2dzODQ9LTI2NSwxMjAsLTM1OCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMTI1MVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MjggK2s9MSAreF8wPTAgK3lfMD0tNTAwMDAwMCArZWxscHM9YmVzc2VsICt0b3dnczg0PTY4MiwtMjAzLDQ4MCwwLDAsMCwwICtwbT1mZXJybyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzEyNTJcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTMxICtrPTEgK3hfMD0wICt5XzA9LTUwMDAwMDAgK2VsbHBzPWJlc3NlbCArdG93Z3M4ND02ODIsLTIwMyw0ODAsMCwwLDAsMCArcG09ZmVycm8gK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMxMjUzXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0zNCAraz0xICt4XzA9MCAreV8wPS01MDAwMDAwICtlbGxwcz1iZXNzZWwgK3Rvd2dzODQ9NjgyLC0yMDMsNDgwLDAsMCwwLDAgK3BtPWZlcnJvICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMTI1NFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTAuMzMzMzMzMzMzMzMzMzMgK2s9MSAreF8wPTAgK3lfMD0tNTAwMDAwMCArZWxscHM9YmVzc2VsICt0b3dnczg0PTU3Ny4zMjYsOTAuMTI5LDQ2My45MTksNS4xMzcsMS40NzQsNS4yOTcsMi40MjMyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMTI1NVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTMuMzMzMzMzMzMzMzMzMzMgK2s9MSAreF8wPTAgK3lfMD0tNTAwMDAwMCArZWxscHM9YmVzc2VsICt0b3dnczg0PTU3Ny4zMjYsOTAuMTI5LDQ2My45MTksNS4xMzcsMS40NzQsNS4yOTcsMi40MjMyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMTI1NlwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTYuMzMzMzMzMzMzMzMzMzMgK2s9MSAreF8wPTAgK3lfMD0tNTAwMDAwMCArZWxscHM9YmVzc2VsICt0b3dnczg0PTU3Ny4zMjYsOTAuMTI5LDQ2My45MTksNS4xMzcsMS40NzQsNS4yOTcsMi40MjMyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMTI1N1wiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTAuMzMzMzMzMzMzMzMzMzMgK2s9MSAreF8wPTE1MDAwMCAreV8wPS01MDAwMDAwICtlbGxwcz1iZXNzZWwgK3Rvd2dzODQ9NTc3LjMyNiw5MC4xMjksNDYzLjkxOSw1LjEzNywxLjQ3NCw1LjI5NywyLjQyMzIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMxMjU4XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMy4zMzMzMzMzMzMzMzMzMyAraz0xICt4XzA9NDUwMDAwICt5XzA9LTUwMDAwMDAgK2VsbHBzPWJlc3NlbCArdG93Z3M4ND01NzcuMzI2LDkwLjEyOSw0NjMuOTE5LDUuMTM3LDEuNDc0LDUuMjk3LDIuNDIzMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzEyNTlcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTE2LjMzMzMzMzMzMzMzMzMzICtrPTEgK3hfMD03NTAwMDAgK3lfMD0tNTAwMDAwMCArZWxscHM9YmVzc2VsICt0b3dnczg0PTU3Ny4zMjYsOTAuMTI5LDQ2My45MTksNS4xMzcsMS40NzQsNS4yOTcsMi40MjMyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMTI2NVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTUgK2s9MSAreF8wPTU1MDAwMDAgK3lfMD0wICtlbGxwcz1iZXNzZWwgK3Rvd2dzODQ9NTc3LjMyNiw5MC4xMjksNDYzLjkxOSw1LjEzNywxLjQ3NCw1LjI5NywyLjQyMzIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMxMjY2XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xOCAraz0xICt4XzA9NjUwMDAwMCAreV8wPTAgK2VsbHBzPWJlc3NlbCArdG93Z3M4ND01NzcuMzI2LDkwLjEyOSw0NjMuOTE5LDUuMTM3LDEuNDc0LDUuMjk3LDIuNDIzMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzEyNjdcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTIxICtrPTEgK3hfMD03NTAwMDAwICt5XzA9MCArZWxscHM9YmVzc2VsICt0b3dnczg0PTU3Ny4zMjYsOTAuMTI5LDQ2My45MTksNS4xMzcsMS40NzQsNS4yOTcsMi40MjMyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMTI2OFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MjQgK2s9MSAreF8wPTg1MDAwMDAgK3lfMD0wICtlbGxwcz1iZXNzZWwgK3Rvd2dzODQ9NTc3LjMyNiw5MC4xMjksNDYzLjkxOSw1LjEzNywxLjQ3NCw1LjI5NywyLjQyMzIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMxMjc1XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xNSAraz0wLjk5OTkgK3hfMD01NTAwMDAwICt5XzA9MCArZWxscHM9YmVzc2VsICt0b3dnczg0PTU3Ny4zMjYsOTAuMTI5LDQ2My45MTksNS4xMzcsMS40NzQsNS4yOTcsMi40MjMyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMTI3NlwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTggK2s9MC45OTk5ICt4XzA9NjUwMDAwMCAreV8wPTAgK2VsbHBzPWJlc3NlbCArdG93Z3M4ND01NzcuMzI2LDkwLjEyOSw0NjMuOTE5LDUuMTM3LDEuNDc0LDUuMjk3LDIuNDIzMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzEyNzdcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTIxICtrPTAuOTk5OSAreF8wPTc1MDAwMDAgK3lfMD0wICtlbGxwcz1iZXNzZWwgK3Rvd2dzODQ9NTc3LjMyNiw5MC4xMjksNDYzLjkxOSw1LjEzNywxLjQ3NCw1LjI5NywyLjQyMzIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMxMjc4XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0yMSAraz0wLjk5OTkgK3hfMD03NTAwMDAwICt5XzA9MCArZWxscHM9YmVzc2VsICt0b3dnczg0PTU3Ny4zMjYsOTAuMTI5LDQ2My45MTksNS4xMzcsMS40NzQsNS4yOTcsMi40MjMyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMTI3OVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MjQgK2s9MC45OTk5ICt4XzA9ODUwMDAwMCAreV8wPTAgK2VsbHBzPWJlc3NlbCArdG93Z3M4ND01NzcuMzI2LDkwLjEyOSw0NjMuOTE5LDUuMTM3LDEuNDc0LDUuMjk3LDIuNDIzMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzEyODFcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTI4ICtrPTEgK3hfMD0wICt5XzA9MCArZWxscHM9YmVzc2VsICt0b3dnczg0PTY4MiwtMjAzLDQ4MCwwLDAsMCwwICtwbT1mZXJybyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzEyODJcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTMxICtrPTEgK3hfMD0wICt5XzA9MCArZWxscHM9YmVzc2VsICt0b3dnczg0PTY4MiwtMjAzLDQ4MCwwLDAsMCwwICtwbT1mZXJybyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzEyODNcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTM0ICtrPTEgK3hfMD0wICt5XzA9MCArZWxscHM9YmVzc2VsICt0b3dnczg0PTY4MiwtMjAzLDQ4MCwwLDAsMCwwICtwbT1mZXJybyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzEyODRcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTEwLjMzMzMzMzMzMzMzMzMzICtrPTEgK3hfMD0xNTAwMDAgK3lfMD0wICtlbGxwcz1iZXNzZWwgK3Rvd2dzODQ9NTc3LjMyNiw5MC4xMjksNDYzLjkxOSw1LjEzNywxLjQ3NCw1LjI5NywyLjQyMzIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMxMjg1XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMy4zMzMzMzMzMzMzMzMzMyAraz0xICt4XzA9NDUwMDAwICt5XzA9MCArZWxscHM9YmVzc2VsICt0b3dnczg0PTU3Ny4zMjYsOTAuMTI5LDQ2My45MTksNS4xMzcsMS40NzQsNS4yOTcsMi40MjMyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMTI4NlwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTYuMzMzMzMzMzMzMzMzMzMgK2s9MSAreF8wPTc1MDAwMCAreV8wPTAgK2VsbHBzPWJlc3NlbCArdG93Z3M4ND01NzcuMzI2LDkwLjEyOSw0NjMuOTE5LDUuMTM3LDEuNDc0LDUuMjk3LDIuNDIzMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzEyODdcIjonK3Byb2o9bGNjICtsYXRfMT00OSArbGF0XzI9NDYgK2xhdF8wPTQ3LjUgK2xvbl8wPTEzLjMzMzMzMzMzMzMzMzMzICt4XzA9NDAwMDAwICt5XzA9NDAwMDAwICtlbGxwcz1iZXNzZWwgK3Rvd2dzODQ9NTc3LjMyNiw5MC4xMjksNDYzLjkxOSw1LjEzNywxLjQ3NCw1LjI5NywyLjQyMzIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMxMjg4XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0yOCAraz0xICt4XzA9MTUwMDAwICt5XzA9MCArZWxscHM9YmVzc2VsICt0b3dnczg0PTY4MiwtMjAzLDQ4MCwwLDAsMCwwICtwbT1mZXJybyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzEyODlcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTMxICtrPTEgK3hfMD00NTAwMDAgK3lfMD0wICtlbGxwcz1iZXNzZWwgK3Rvd2dzODQ9NjgyLC0yMDMsNDgwLDAsMCwwLDAgK3BtPWZlcnJvICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMTI5MFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MzQgK2s9MSAreF8wPTc1MDAwMCAreV8wPTAgK2VsbHBzPWJlc3NlbCArdG93Z3M4ND02ODIsLTIwMyw0ODAsMCwwLDAsMCArcG09ZmVycm8gK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMxMjkxXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0yOCAraz0xICt4XzA9MCAreV8wPTAgK2VsbHBzPWJlc3NlbCArdG93Z3M4ND02ODIsLTIwMyw0ODAsMCwwLDAsMCArcG09ZmVycm8gK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMxMjkyXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0zMSAraz0xICt4XzA9MCAreV8wPTAgK2VsbHBzPWJlc3NlbCArdG93Z3M4ND02ODIsLTIwMyw0ODAsMCwwLDAsMCArcG09ZmVycm8gK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMxMjkzXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0zNCAraz0xICt4XzA9MCAreV8wPTAgK2VsbHBzPWJlc3NlbCArdG93Z3M4ND02ODIsLTIwMyw0ODAsMCwwLDAsMCArcG09ZmVycm8gK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMxMjk0XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMC4zMzMzMzMzMzMzMzMzMyAraz0xICt4XzA9MTUwMDAwICt5XzA9MCArZWxscHM9YmVzc2VsICt0b3dnczg0PTU3Ny4zMjYsOTAuMTI5LDQ2My45MTksNS4xMzcsMS40NzQsNS4yOTcsMi40MjMyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMTI5NVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9MTMuMzMzMzMzMzMzMzMzMzMgK2s9MSAreF8wPTQ1MDAwMCAreV8wPTAgK2VsbHBzPWJlc3NlbCArdG93Z3M4ND01NzcuMzI2LDkwLjEyOSw0NjMuOTE5LDUuMTM3LDEuNDc0LDUuMjk3LDIuNDIzMiArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzEyOTZcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTE2LjMzMzMzMzMzMzMzMzMzICtrPTEgK3hfMD03NTAwMDAgK3lfMD0wICtlbGxwcz1iZXNzZWwgK3Rvd2dzODQ9NTc3LjMyNiw5MC4xMjksNDYzLjkxOSw1LjEzNywxLjQ3NCw1LjI5NywyLjQyMzIgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMxMjk3XCI6Jytwcm9qPWxjYyArbGF0XzE9NDkgK2xhdF8yPTQ2ICtsYXRfMD00Ny41ICtsb25fMD0xMy4zMzMzMzMzMzMzMzMzMyAreF8wPTQwMDAwMCAreV8wPTQwMDAwMCArZWxscHM9YmVzc2VsICt0b3dnczg0PTU3Ny4zMjYsOTAuMTI5LDQ2My45MTksNS4xMzcsMS40NzQsNS4yOTcsMi40MjMyICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMTMwMFwiOicrcHJvaj1sY2MgK2xhdF8xPTQ5LjgzMzMzMzMzMzMzMzM0ICtsYXRfMj01MS4xNjY2NjY2NjY2NjY2NiArbGF0XzA9OTAgK2xvbl8wPTQuMzU2OTM5NzIyMjIyMjIyICt4XzA9MTUwMDAwLjAxMjU2ICt5XzA9NTQwMDA4OC40Mzc4ICtlbGxwcz1pbnRsICt0b3dnczg0PS0xMDYuODY5LDUyLjI5NzgsLTEwMy43MjQsMC4zMzY2LC0wLjQ1NywxLjg0MjIsLTEuMjc0NyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzEzNzBcIjonK3Byb2o9bGNjICtsYXRfMT01MS4xNjY2NjcyMzMzMzMzMyArbGF0XzI9NDkuODMzMzMzOSArbGF0XzA9OTAgK2xvbl8wPTQuMzY3NDg2NjY2NjY2NjY2ICt4XzA9MTUwMDAwLjAxMyAreV8wPTU0MDAwODguNDM4ICtlbGxwcz1pbnRsICt0b3dnczg0PS0xMDYuODY5LDUyLjI5NzgsLTEwMy43MjQsMC4zMzY2LC0wLjQ1NywxLjg0MjIsLTEuMjc0NyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzE0NjFcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTMgK2s9MSAreF8wPTE1MDAwMDAgK3lfMD0wICtlbGxwcz1iZXNzZWwgK3Rvd2dzODQ9NTk4LjEsNzMuNyw0MTguMiwwLjIwMiwwLjA0NSwtMi40NTUsNi43ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMTQ2MlwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9NiAraz0xICt4XzA9MjUwMDAwMCAreV8wPTAgK2VsbHBzPWJlc3NlbCArdG93Z3M4ND01OTguMSw3My43LDQxOC4yLDAuMjAyLDAuMDQ1LC0yLjQ1NSw2LjcgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMxNDYzXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD05ICtrPTEgK3hfMD0zNTAwMDAwICt5XzA9MCArZWxscHM9YmVzc2VsICt0b3dnczg0PTU5OC4xLDczLjcsNDE4LjIsMC4yMDIsMC4wNDUsLTIuNDU1LDYuNyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzE0NjRcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTEyICtrPTEgK3hfMD00NTAwMDAwICt5XzA9MCArZWxscHM9YmVzc2VsICt0b3dnczg0PTU5OC4xLDczLjcsNDE4LjIsMC4yMDIsMC4wNDUsLTIuNDU1LDYuNyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzE0NjVcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTE1ICtrPTEgK3hfMD01NTAwMDAwICt5XzA9MCArZWxscHM9YmVzc2VsICt0b3dnczg0PTU5OC4xLDczLjcsNDE4LjIsMC4yMDIsMC4wNDUsLTIuNDU1LDYuNyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzE0NjZcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPTYgK2s9MSAreF8wPTI1MDAwMDAgK3lfMD0wICtlbGxwcz1iZXNzZWwgK3Rvd2dzODQ9NTk4LjEsNzMuNyw0MTguMiwwLjIwMiwwLjA0NSwtMi40NTUsNi43ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMTQ2N1wiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9OSAraz0xICt4XzA9MzUwMDAwMCAreV8wPTAgK2VsbHBzPWJlc3NlbCArdG93Z3M4ND01OTguMSw3My43LDQxOC4yLDAuMjAyLDAuMDQ1LC0yLjQ1NSw2LjcgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMxNDY4XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xMiAraz0xICt4XzA9NDUwMDAwMCAreV8wPTAgK2VsbHBzPWJlc3NlbCArdG93Z3M4ND01OTguMSw3My43LDQxOC4yLDAuMjAyLDAuMDQ1LC0yLjQ1NSw2LjcgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMxNDY5XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0xNSAraz0xICt4XzA9NTUwMDAwMCAreV8wPTAgK2VsbHBzPWJlc3NlbCArdG93Z3M4ND01OTguMSw3My43LDQxOC4yLDAuMjAyLDAuMDQ1LC0yLjQ1NSw2LjcgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMxNTI4XCI6Jytwcm9qPXV0bSArem9uZT0yOCArYT02Mzc4MjQ5LjIgK2I9NjM1NjUxNSArdG93Z3M4ND0tMjMsMjU5LC05LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMxNTI5XCI6Jytwcm9qPXV0bSArem9uZT0yOSArYT02Mzc4MjQ5LjIgK2I9NjM1NjUxNSArdG93Z3M4ND0tMjMsMjU5LC05LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMxNjAwXCI6Jytwcm9qPXN0ZXJlYSArbGF0XzA9NDUuOSArbG9uXzA9MjUuMzkyNDY1ODg4ODg4ODkgK2s9MC45OTk2NjY3ICt4XzA9NTAwMDAwICt5XzA9NTAwMDAwICtlbGxwcz1pbnRsICt0b3dnczg0PTEwMy4yNSwtMTAwLjQsLTMwNy4xOSwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMTcwMFwiOicrcHJvaj1zdGVyZWEgK2xhdF8wPTQ2ICtsb25fMD0yNSAraz0wLjk5OTc1ICt4XzA9NTAwMDAwICt5XzA9NTAwMDAwICtlbGxwcz1rcmFzcyArdG93Z3M4ND0yOCwtMTIxLC03NywwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMTgzOFwiOicrcHJvaj11dG0gK3pvbmU9MzggK2VsbHBzPVdHUzg0ICt0b3dnczg0PS0zLjIsLTUuNywyLjgsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzE4MzlcIjonK3Byb2o9dXRtICt6b25lPTM5ICtlbGxwcz1XR1M4NCArdG93Z3M4ND0tMy4yLC01LjcsMi44LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMxOTAwXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD00OCAraz0wLjk5OTYgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0tMjAuOCwxMS4zLDIuNCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMTkwMVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9NDggK2s9MSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PS0yMC44LDExLjMsMi40LDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMxOTY1XCI6Jytwcm9qPXV0bSArem9uZT0xMSArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzE5NjZcIjonK3Byb2o9dXRtICt6b25lPTEyICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMTk2N1wiOicrcHJvaj11dG0gK3pvbmU9MTMgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMxOTY4XCI6Jytwcm9qPXV0bSArem9uZT0xNCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzE5NjlcIjonK3Byb2o9dXRtICt6b25lPTE1ICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMTk3MFwiOicrcHJvaj11dG0gK3pvbmU9MTYgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMxOTcxXCI6Jytwcm9qPXV0bSArem9uZT0xNyArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzE5NzJcIjonK3Byb2o9dXRtICt6b25lPTE4ICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMTk3M1wiOicrcHJvaj11dG0gK3pvbmU9MTkgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMxOTc0XCI6Jytwcm9qPXV0bSArem9uZT0yMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzE5NzVcIjonK3Byb2o9dXRtICt6b25lPTIxICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMTk3NlwiOicrcHJvaj11dG0gK3pvbmU9MjIgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMxOTc3XCI6Jytwcm9qPXV0bSArem9uZT0xNyArc291dGggK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMxOTc4XCI6Jytwcm9qPXV0bSArem9uZT0xOCArc291dGggK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMxOTc5XCI6Jytwcm9qPXV0bSArem9uZT0xOSArc291dGggK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMxOTgwXCI6Jytwcm9qPXV0bSArem9uZT0yMCArc291dGggK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMxOTgxXCI6Jytwcm9qPXV0bSArem9uZT0yMSArc291dGggK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMxOTgyXCI6Jytwcm9qPXV0bSArem9uZT0yMiArc291dGggK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMxOTgzXCI6Jytwcm9qPXV0bSArem9uZT0yMyArc291dGggK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMxOTg0XCI6Jytwcm9qPXV0bSArem9uZT0yNCArc291dGggK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMxOTg1XCI6Jytwcm9qPXV0bSArem9uZT0yNSArc291dGggK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMxOTg2XCI6Jytwcm9qPXV0bSArem9uZT0xNyArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzE5ODdcIjonK3Byb2o9dXRtICt6b25lPTE4ICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMTk4OFwiOicrcHJvaj11dG0gK3pvbmU9MTkgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMxOTg5XCI6Jytwcm9qPXV0bSArem9uZT0yMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzE5OTBcIjonK3Byb2o9dXRtICt6b25lPTIxICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMTk5MVwiOicrcHJvaj11dG0gK3pvbmU9MjIgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMxOTkyXCI6Jytwcm9qPXV0bSArem9uZT0xNyArc291dGggK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMxOTkzXCI6Jytwcm9qPXV0bSArem9uZT0xOCArc291dGggK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMxOTk0XCI6Jytwcm9qPXV0bSArem9uZT0xOSArc291dGggK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMxOTk1XCI6Jytwcm9qPXV0bSArem9uZT0yMCArc291dGggK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMxOTk2XCI6Jytwcm9qPXV0bSArem9uZT0yMSArc291dGggK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMxOTk3XCI6Jytwcm9qPXV0bSArem9uZT0yMiArc291dGggK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMxOTk4XCI6Jytwcm9qPXV0bSArem9uZT0yMyArc291dGggK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMxOTk5XCI6Jytwcm9qPXV0bSArem9uZT0yNCArc291dGggK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyMDAwXCI6Jytwcm9qPXV0bSArem9uZT0yNSArc291dGggK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyMDAxXCI6Jytwcm9qPWxjYyArbGF0XzE9NDguNzE2NjY2NjY2NjY2NjcgK2xhdF8yPTQ3Ljg1ICtsYXRfMD00NyArbG9uXzA9LTEwOS41ICt4XzA9NjA5NjAxLjIxOTIwMjQzODQgK3lfMD0wICtkYXR1bT1OQUQyNyArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyMDAyXCI6Jytwcm9qPWxjYyArbGF0XzE9NDcuODgzMzMzMzMzMzMzMzMgK2xhdF8yPTQ2LjQ1ICtsYXRfMD00NS44MzMzMzMzMzMzMzMzNCArbG9uXzA9LTEwOS41ICt4XzA9NjA5NjAxLjIxOTIwMjQzODQgK3lfMD0wICtkYXR1bT1OQUQyNyArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyMDAzXCI6Jytwcm9qPWxjYyArbGF0XzE9NDYuNCArbGF0XzI9NDQuODY2NjY2NjY2NjY2NjcgK2xhdF8wPTQ0ICtsb25fMD0tMTA5LjUgK3hfMD02MDk2MDEuMjE5MjAyNDM4NCAreV8wPTAgK2RhdHVtPU5BRDI3ICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIwMDVcIjonK3Byb2o9bGNjICtsYXRfMT00MS44NSArbGF0XzI9NDIuODE2NjY2NjY2NjY2NjcgK2xhdF8wPTQxLjMzMzMzMzMzMzMzMzM0ICtsb25fMD0tMTAwICt4XzA9NjA5NjAxLjIxOTIwMjQzODQgK3lfMD0wICtkYXR1bT1OQUQyNyArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyMDA2XCI6Jytwcm9qPWxjYyArbGF0XzE9NDAuMjgzMzMzMzMzMzMzMzMgK2xhdF8yPTQxLjcxNjY2NjY2NjY2NjY3ICtsYXRfMD0zOS42NjY2NjY2NjY2NjY2NiArbG9uXzA9LTk5LjUgK3hfMD02MDk2MDEuMjE5MjAyNDM4NCAreV8wPTAgK2RhdHVtPU5BRDI3ICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIwMDdcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTM0Ljc1ICtsb25fMD0tMTE1LjU4MzMzMzMzMzMzMzMgK2s9MC45OTk5ICt4XzA9MTUyNDAwLjMwNDgwMDYwOTYgK3lfMD0wICtkYXR1bT1OQUQyNyArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyMDA4XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0zNC43NSArbG9uXzA9LTExNi42NjY2NjY2NjY2NjY3ICtrPTAuOTk5OSAreF8wPTE1MjQwMC4zMDQ4MDA2MDk2ICt5XzA9MCArZGF0dW09TkFEMjcgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzozMjAwOVwiOicrcHJvaj10bWVyYyArbGF0XzA9MzQuNzUgK2xvbl8wPS0xMTguNTgzMzMzMzMzMzMzMyAraz0wLjk5OTkgK3hfMD0xNTI0MDAuMzA0ODAwNjA5NiAreV8wPTAgK2RhdHVtPU5BRDI3ICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIwMTBcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTQyLjUgK2xvbl8wPS03MS42NjY2NjY2NjY2NjY2NyAraz0wLjk5OTk2NjY2NyAreF8wPTE1MjQwMC4zMDQ4MDA2MDk2ICt5XzA9MCArZGF0dW09TkFEMjcgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzozMjAxMVwiOicrcHJvaj10bWVyYyArbGF0XzA9MzguODMzMzMzMzMzMzMzMzQgK2xvbl8wPS03NC42NjY2NjY2NjY2NjY2NyAraz0wLjk5OTk3NDk5OTk5OTk5OTkgK3hfMD02MDk2MDEuMjE5MjAyNDM4NCAreV8wPTAgK2RhdHVtPU5BRDI3ICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIwMTJcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTMxICtsb25fMD0tMTA0LjMzMzMzMzMzMzMzMzMgK2s9MC45OTk5MDkwOTEgK3hfMD0xNTI0MDAuMzA0ODAwNjA5NiAreV8wPTAgK2RhdHVtPU5BRDI3ICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIwMTNcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTMxICtsb25fMD0tMTA2LjI1ICtrPTAuOTk5OSAreF8wPTE1MjQwMC4zMDQ4MDA2MDk2ICt5XzA9MCArZGF0dW09TkFEMjcgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzozMjAxNFwiOicrcHJvaj10bWVyYyArbGF0XzA9MzEgK2xvbl8wPS0xMDcuODMzMzMzMzMzMzMzMyAraz0wLjk5OTkxNjY2NyAreF8wPTE1MjQwMC4zMDQ4MDA2MDk2ICt5XzA9MCArZGF0dW09TkFEMjcgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzozMjAxNVwiOicrcHJvaj10bWVyYyArbGF0XzA9NDAgK2xvbl8wPS03NC4zMzMzMzMzMzMzMzMzMyAraz0wLjk5OTk2NjY2NyAreF8wPTE1MjQwMC4zMDQ4MDA2MDk2ICt5XzA9MCArZGF0dW09TkFEMjcgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzozMjAxNlwiOicrcHJvaj10bWVyYyArbGF0XzA9NDAgK2xvbl8wPS03Ni41ODMzMzMzMzMzMzMzMyAraz0wLjk5OTkzNzUgK3hfMD0xNTI0MDAuMzA0ODAwNjA5NiAreV8wPTAgK2RhdHVtPU5BRDI3ICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIwMTdcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTQwICtsb25fMD0tNzguNTgzMzMzMzMzMzMzMzMgK2s9MC45OTk5Mzc1ICt4XzA9MTUyNDAwLjMwNDgwMDYwOTYgK3lfMD0wICtkYXR1bT1OQUQyNyArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyMDE4XCI6Jytwcm9qPWxjYyArbGF0XzE9NDEuMDMzMzMzMzMzMzMzMzMgK2xhdF8yPTQwLjY2NjY2NjY2NjY2NjY2ICtsYXRfMD00MC41ICtsb25fMD0tNzQgK3hfMD0zMDQ4MDAuNjA5NjAxMjE5MiAreV8wPTAgK2RhdHVtPU5BRDI3ICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIwMTlcIjonK3Byb2o9bGNjICtsYXRfMT0zNC4zMzMzMzMzMzMzMzMzNCArbGF0XzI9MzYuMTY2NjY2NjY2NjY2NjYgK2xhdF8wPTMzLjc1ICtsb25fMD0tNzkgK3hfMD02MDk2MDEuMjE5MjAyNDM4NCAreV8wPTAgK2RhdHVtPU5BRDI3ICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIwMjBcIjonK3Byb2o9bGNjICtsYXRfMT00Ny40MzMzMzMzMzMzMzMzMyArbGF0XzI9NDguNzMzMzMzMzMzMzMzMzMgK2xhdF8wPTQ3ICtsb25fMD0tMTAwLjUgK3hfMD02MDk2MDEuMjE5MjAyNDM4NCAreV8wPTAgK2RhdHVtPU5BRDI3ICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIwMjFcIjonK3Byb2o9bGNjICtsYXRfMT00Ni4xODMzMzMzMzMzMzMzMyArbGF0XzI9NDcuNDgzMzMzMzMzMzMzMzMgK2xhdF8wPTQ1LjY2NjY2NjY2NjY2NjY2ICtsb25fMD0tMTAwLjUgK3hfMD02MDk2MDEuMjE5MjAyNDM4NCAreV8wPTAgK2RhdHVtPU5BRDI3ICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIwMjJcIjonK3Byb2o9bGNjICtsYXRfMT00MC40MzMzMzMzMzMzMzMzMyArbGF0XzI9NDEuNyArbGF0XzA9MzkuNjY2NjY2NjY2NjY2NjYgK2xvbl8wPS04Mi41ICt4XzA9NjA5NjAxLjIxOTIwMjQzODQgK3lfMD0wICtkYXR1bT1OQUQyNyArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyMDIzXCI6Jytwcm9qPWxjYyArbGF0XzE9MzguNzMzMzMzMzMzMzMzMzMgK2xhdF8yPTQwLjAzMzMzMzMzMzMzMzMzICtsYXRfMD0zOCArbG9uXzA9LTgyLjUgK3hfMD02MDk2MDEuMjE5MjAyNDM4NCAreV8wPTAgK2RhdHVtPU5BRDI3ICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIwMjRcIjonK3Byb2o9bGNjICtsYXRfMT0zNS41NjY2NjY2NjY2NjY2NyArbGF0XzI9MzYuNzY2NjY2NjY2NjY2NjcgK2xhdF8wPTM1ICtsb25fMD0tOTggK3hfMD02MDk2MDEuMjE5MjAyNDM4NCAreV8wPTAgK2RhdHVtPU5BRDI3ICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIwMjVcIjonK3Byb2o9bGNjICtsYXRfMT0zMy45MzMzMzMzMzMzMzMzMyArbGF0XzI9MzUuMjMzMzMzMzMzMzMzMzMgK2xhdF8wPTMzLjMzMzMzMzMzMzMzMzM0ICtsb25fMD0tOTggK3hfMD02MDk2MDEuMjE5MjAyNDM4NCAreV8wPTAgK2RhdHVtPU5BRDI3ICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIwMjZcIjonK3Byb2o9bGNjICtsYXRfMT00NC4zMzMzMzMzMzMzMzMzNCArbGF0XzI9NDYgK2xhdF8wPTQzLjY2NjY2NjY2NjY2NjY2ICtsb25fMD0tMTIwLjUgK3hfMD02MDk2MDEuMjE5MjAyNDM4NCAreV8wPTAgK2RhdHVtPU5BRDI3ICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIwMjdcIjonK3Byb2o9bGNjICtsYXRfMT00Mi4zMzMzMzMzMzMzMzMzNCArbGF0XzI9NDQgK2xhdF8wPTQxLjY2NjY2NjY2NjY2NjY2ICtsb25fMD0tMTIwLjUgK3hfMD02MDk2MDEuMjE5MjAyNDM4NCAreV8wPTAgK2RhdHVtPU5BRDI3ICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIwMjhcIjonK3Byb2o9bGNjICtsYXRfMT00MC44ODMzMzMzMzMzMzMzMyArbGF0XzI9NDEuOTUgK2xhdF8wPTQwLjE2NjY2NjY2NjY2NjY2ICtsb25fMD0tNzcuNzUgK3hfMD02MDk2MDEuMjE5MjAyNDM4NCAreV8wPTAgK2RhdHVtPU5BRDI3ICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIwMjlcIjonK3Byb2o9bGNjICtsYXRfMT0zOS45MzMzMzMzMzMzMzMzMyArbGF0XzI9NDAuOCArbGF0XzA9MzkuMzMzMzMzMzMzMzMzMzQgK2xvbl8wPS03Ny43NSAreF8wPTYwOTYwMS4yMTkyMDI0Mzg0ICt5XzA9MCArZGF0dW09TkFEMjcgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzozMjAzMFwiOicrcHJvaj10bWVyYyArbGF0XzA9NDEuMDgzMzMzMzMzMzMzMzQgK2xvbl8wPS03MS41ICtrPTAuOTk5OTkzOCAreF8wPTE1MjQwMC4zMDQ4MDA2MDk2ICt5XzA9MCArZGF0dW09TkFEMjcgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzozMjAzMVwiOicrcHJvaj1sY2MgK2xhdF8xPTMzLjc2NjY2NjY2NjY2NjY3ICtsYXRfMj0zNC45NjY2NjY2NjY2NjY2NyArbGF0XzA9MzMgK2xvbl8wPS04MSAreF8wPTYwOTYwMS4yMTkyMDI0Mzg0ICt5XzA9MCArZGF0dW09TkFEMjcgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzozMjAzM1wiOicrcHJvaj1sY2MgK2xhdF8xPTMyLjMzMzMzMzMzMzMzMzM0ICtsYXRfMj0zMy42NjY2NjY2NjY2NjY2NiArbGF0XzA9MzEuODMzMzMzMzMzMzMzMzMgK2xvbl8wPS04MSAreF8wPTYwOTYwMS4yMTkyMDI0Mzg0ICt5XzA9MCArZGF0dW09TkFEMjcgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzozMjAzNFwiOicrcHJvaj1sY2MgK2xhdF8xPTQ0LjQxNjY2NjY2NjY2NjY2ICtsYXRfMj00NS42ODMzMzMzMzMzMzMzMyArbGF0XzA9NDMuODMzMzMzMzMzMzMzMzQgK2xvbl8wPS0xMDAgK3hfMD02MDk2MDEuMjE5MjAyNDM4NCAreV8wPTAgK2RhdHVtPU5BRDI3ICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIwMzVcIjonK3Byb2o9bGNjICtsYXRfMT00Mi44MzMzMzMzMzMzMzMzNCArbGF0XzI9NDQuNCArbGF0XzA9NDIuMzMzMzMzMzMzMzMzMzQgK2xvbl8wPS0xMDAuMzMzMzMzMzMzMzMzMyAreF8wPTYwOTYwMS4yMTkyMDI0Mzg0ICt5XzA9MCArZGF0dW09TkFEMjcgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzozMjAzNlwiOicrcHJvaj1sY2MgK2xhdF8xPTM1LjI1ICtsYXRfMj0zNi40MTY2NjY2NjY2NjY2NiArbGF0XzA9MzQuNjY2NjY2NjY2NjY2NjYgK2xvbl8wPS04NiAreF8wPTMwNDgwLjA2MDk2MDEyMTkyICt5XzA9MCArZGF0dW09TkFEMjcgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzozMjAzN1wiOicrcHJvaj1sY2MgK2xhdF8xPTM0LjY1ICtsYXRfMj0zNi4xODMzMzMzMzMzMzMzMyArbGF0XzA9MzQgK2xvbl8wPS0xMDEuNSAreF8wPTYwOTYwMS4yMTkyMDI0Mzg0ICt5XzA9MCArZGF0dW09TkFEMjcgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzozMjAzOFwiOicrcHJvaj1sY2MgK2xhdF8xPTMyLjEzMzMzMzMzMzMzMzMzICtsYXRfMj0zMy45NjY2NjY2NjY2NjY2NyArbGF0XzA9MzEuNjY2NjY2NjY2NjY2NjcgK2xvbl8wPS05Ny41ICt4XzA9NjA5NjAxLjIxOTIwMjQzODQgK3lfMD0wICtkYXR1bT1OQUQyNyArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyMDM5XCI6Jytwcm9qPWxjYyArbGF0XzE9MzAuMTE2NjY2NjY2NjY2NjcgK2xhdF8yPTMxLjg4MzMzMzMzMzMzMzMzICtsYXRfMD0yOS42NjY2NjY2NjY2NjY2NyArbG9uXzA9LTEwMC4zMzMzMzMzMzMzMzMzICt4XzA9NjA5NjAxLjIxOTIwMjQzODQgK3lfMD0wICtkYXR1bT1OQUQyNyArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyMDQwXCI6Jytwcm9qPWxjYyArbGF0XzE9MjguMzgzMzMzMzMzMzMzMzMgK2xhdF8yPTMwLjI4MzMzMzMzMzMzMzMzICtsYXRfMD0yNy44MzMzMzMzMzMzMzMzMyArbG9uXzA9LTk5ICt4XzA9NjA5NjAxLjIxOTIwMjQzODQgK3lfMD0wICtkYXR1bT1OQUQyNyArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyMDQxXCI6Jytwcm9qPWxjYyArbGF0XzE9MjYuMTY2NjY2NjY2NjY2NjcgK2xhdF8yPTI3LjgzMzMzMzMzMzMzMzMzICtsYXRfMD0yNS42NjY2NjY2NjY2NjY2NyArbG9uXzA9LTk4LjUgK3hfMD02MDk2MDEuMjE5MjAyNDM4NCAreV8wPTAgK2RhdHVtPU5BRDI3ICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIwNDJcIjonK3Byb2o9bGNjICtsYXRfMT00MC43MTY2NjY2NjY2NjY2NyArbGF0XzI9NDEuNzgzMzMzMzMzMzMzMzMgK2xhdF8wPTQwLjMzMzMzMzMzMzMzMzM0ICtsb25fMD0tMTExLjUgK3hfMD02MDk2MDEuMjE5MjAyNDM4NCAreV8wPTAgK2RhdHVtPU5BRDI3ICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIwNDNcIjonK3Byb2o9bGNjICtsYXRfMT0zOS4wMTY2NjY2NjY2NjY2NyArbGF0XzI9NDAuNjUgK2xhdF8wPTM4LjMzMzMzMzMzMzMzMzM0ICtsb25fMD0tMTExLjUgK3hfMD02MDk2MDEuMjE5MjAyNDM4NCAreV8wPTAgK2RhdHVtPU5BRDI3ICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIwNDRcIjonK3Byb2o9bGNjICtsYXRfMT0zNy4yMTY2NjY2NjY2NjY2NyArbGF0XzI9MzguMzUgK2xhdF8wPTM2LjY2NjY2NjY2NjY2NjY2ICtsb25fMD0tMTExLjUgK3hfMD02MDk2MDEuMjE5MjAyNDM4NCAreV8wPTAgK2RhdHVtPU5BRDI3ICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIwNDVcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTQyLjUgK2xvbl8wPS03Mi41ICtrPTAuOTk5OTY0Mjg2ICt4XzA9MTUyNDAwLjMwNDgwMDYwOTYgK3lfMD0wICtkYXR1bT1OQUQyNyArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyMDQ2XCI6Jytwcm9qPWxjYyArbGF0XzE9MzguMDMzMzMzMzMzMzMzMzMgK2xhdF8yPTM5LjIgK2xhdF8wPTM3LjY2NjY2NjY2NjY2NjY2ICtsb25fMD0tNzguNSAreF8wPTYwOTYwMS4yMTkyMDI0Mzg0ICt5XzA9MCArZGF0dW09TkFEMjcgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzozMjA0N1wiOicrcHJvaj1sY2MgK2xhdF8xPTM2Ljc2NjY2NjY2NjY2NjY3ICtsYXRfMj0zNy45NjY2NjY2NjY2NjY2NyArbGF0XzA9MzYuMzMzMzMzMzMzMzMzMzQgK2xvbl8wPS03OC41ICt4XzA9NjA5NjAxLjIxOTIwMjQzODQgK3lfMD0wICtkYXR1bT1OQUQyNyArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyMDQ4XCI6Jytwcm9qPWxjYyArbGF0XzE9NDcuNSArbGF0XzI9NDguNzMzMzMzMzMzMzMzMzMgK2xhdF8wPTQ3ICtsb25fMD0tMTIwLjgzMzMzMzMzMzMzMzMgK3hfMD02MDk2MDEuMjE5MjAyNDM4NCAreV8wPTAgK2RhdHVtPU5BRDI3ICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIwNDlcIjonK3Byb2o9bGNjICtsYXRfMT00NS44MzMzMzMzMzMzMzMzNCArbGF0XzI9NDcuMzMzMzMzMzMzMzMzMzQgK2xhdF8wPTQ1LjMzMzMzMzMzMzMzMzM0ICtsb25fMD0tMTIwLjUgK3hfMD02MDk2MDEuMjE5MjAyNDM4NCAreV8wPTAgK2RhdHVtPU5BRDI3ICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIwNTBcIjonK3Byb2o9bGNjICtsYXRfMT0zOSArbGF0XzI9NDAuMjUgK2xhdF8wPTM4LjUgK2xvbl8wPS03OS41ICt4XzA9NjA5NjAxLjIxOTIwMjQzODQgK3lfMD0wICtkYXR1bT1OQUQyNyArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyMDUxXCI6Jytwcm9qPWxjYyArbGF0XzE9MzcuNDgzMzMzMzMzMzMzMzMgK2xhdF8yPTM4Ljg4MzMzMzMzMzMzMzMzICtsYXRfMD0zNyArbG9uXzA9LTgxICt4XzA9NjA5NjAxLjIxOTIwMjQzODQgK3lfMD0wICtkYXR1bT1OQUQyNyArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyMDUyXCI6Jytwcm9qPWxjYyArbGF0XzE9NDUuNTY2NjY2NjY2NjY2NjcgK2xhdF8yPTQ2Ljc2NjY2NjY2NjY2NjY3ICtsYXRfMD00NS4xNjY2NjY2NjY2NjY2NiArbG9uXzA9LTkwICt4XzA9NjA5NjAxLjIxOTIwMjQzODQgK3lfMD0wICtkYXR1bT1OQUQyNyArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyMDUzXCI6Jytwcm9qPWxjYyArbGF0XzE9NDQuMjUgK2xhdF8yPTQ1LjUgK2xhdF8wPTQzLjgzMzMzMzMzMzMzMzM0ICtsb25fMD0tOTAgK3hfMD02MDk2MDEuMjE5MjAyNDM4NCAreV8wPTAgK2RhdHVtPU5BRDI3ICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIwNTRcIjonK3Byb2o9bGNjICtsYXRfMT00Mi43MzMzMzMzMzMzMzMzMyArbGF0XzI9NDQuMDY2NjY2NjY2NjY2NjcgK2xhdF8wPTQyICtsb25fMD0tOTAgK3hfMD02MDk2MDEuMjE5MjAyNDM4NCAreV8wPTAgK2RhdHVtPU5BRDI3ICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIwNTVcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTQwLjY2NjY2NjY2NjY2NjY2ICtsb25fMD0tMTA1LjE2NjY2NjY2NjY2NjcgK2s9MC45OTk5NDExNzcgK3hfMD0xNTI0MDAuMzA0ODAwNjA5NiAreV8wPTAgK2RhdHVtPU5BRDI3ICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIwNTZcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTQwLjY2NjY2NjY2NjY2NjY2ICtsb25fMD0tMTA3LjMzMzMzMzMzMzMzMzMgK2s9MC45OTk5NDExNzcgK3hfMD0xNTI0MDAuMzA0ODAwNjA5NiAreV8wPTAgK2RhdHVtPU5BRDI3ICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIwNTdcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTQwLjY2NjY2NjY2NjY2NjY2ICtsb25fMD0tMTA4Ljc1ICtrPTAuOTk5OTQxMTc3ICt4XzA9MTUyNDAwLjMwNDgwMDYwOTYgK3lfMD0wICtkYXR1bT1OQUQyNyArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyMDU4XCI6Jytwcm9qPXRtZXJjICtsYXRfMD00MC42NjY2NjY2NjY2NjY2NiArbG9uXzA9LTExMC4wODMzMzMzMzMzMzMzICtrPTAuOTk5OTQxMTc3ICt4XzA9MTUyNDAwLjMwNDgwMDYwOTYgK3lfMD0wICtkYXR1bT1OQUQyNyArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyMDYxXCI6Jytwcm9qPWxjYyArbGF0XzE9MTYuODE2NjY2NjY2NjY2NjcgK2xhdF8wPTE2LjgxNjY2NjY2NjY2NjY3ICtsb25fMD0tOTAuMzMzMzMzMzMzMzMzMzMgK2tfMD0wLjk5OTkyMjI2ICt4XzA9NTAwMDAwICt5XzA9MjkyMjA5LjU3OSArZGF0dW09TkFEMjcgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyMDYyXCI6Jytwcm9qPWxjYyArbGF0XzE9MTQuOSArbGF0XzA9MTQuOSArbG9uXzA9LTkwLjMzMzMzMzMzMzMzMzMzICtrXzA9MC45OTk4OTkwNiAreF8wPTUwMDAwMCAreV8wPTMyNTk5Mi42ODEgK2RhdHVtPU5BRDI3ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjA2NFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9LTk5ICtrPTAuOTk5NiAreF8wPTUwMDAwMC4wMDEwMTYwMDIgK3lfMD0wICtkYXR1bT1OQUQyNyArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyMDY1XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0tOTMgK2s9MC45OTk2ICt4XzA9NTAwMDAwLjAwMTAxNjAwMiAreV8wPTAgK2RhdHVtPU5BRDI3ICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIwNjZcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPS04NyAraz0wLjk5OTYgK3hfMD01MDAwMDAuMDAxMDE2MDAyICt5XzA9MCArZGF0dW09TkFEMjcgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzozMjA2N1wiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9LTgxICtrPTAuOTk5NiAreF8wPTUwMDAwMC4wMDEwMTYwMDIgK3lfMD0wICtkYXR1bT1OQUQyNyArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyMDc0XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0tOTkgK2s9MC45OTk2ICt4XzA9NTAwMDAwLjAwMTAxNjAwMiAreV8wPTAgK2RhdHVtPU5BRDI3ICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIwNzVcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPS05MyAraz0wLjk5OTYgK3hfMD01MDAwMDAuMDAxMDE2MDAyICt5XzA9MCArZGF0dW09TkFEMjcgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzozMjA3NlwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9LTg3ICtrPTAuOTk5NiAreF8wPTUwMDAwMC4wMDEwMTYwMDIgK3lfMD0wICtkYXR1bT1OQUQyNyArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyMDc3XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0tODEgK2s9MC45OTk2ICt4XzA9NTAwMDAwLjAwMTAxNjAwMiAreV8wPTAgK2RhdHVtPU5BRDI3ICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIwODFcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPS01MyAraz0wLjk5OTkgK3hfMD0zMDQ4MDAgK3lfMD0wICtkYXR1bT1OQUQyNyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIwODJcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPS01NiAraz0wLjk5OTkgK3hfMD0zMDQ4MDAgK3lfMD0wICtkYXR1bT1OQUQyNyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIwODNcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPS01OC41ICtrPTAuOTk5OSAreF8wPTMwNDgwMCAreV8wPTAgK2RhdHVtPU5BRDI3ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjA4NFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9LTYxLjUgK2s9MC45OTk5ICt4XzA9MzA0ODAwICt5XzA9MCArZGF0dW09TkFEMjcgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyMDg1XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0tNjQuNSAraz0wLjk5OTkgK3hfMD0zMDQ4MDAgK3lfMD0wICtkYXR1bT1OQUQyNyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIwODZcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPS02Ny41ICtrPTAuOTk5OSAreF8wPTMwNDgwMCAreV8wPTAgK2RhdHVtPU5BRDI3ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjA5OFwiOicrcHJvaj1sY2MgK2xhdF8xPTYwICtsYXRfMj00NiArbGF0XzA9NDQgK2xvbl8wPS02OC41ICt4XzA9MCAreV8wPTAgK2RhdHVtPU5BRDI3ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjA5OVwiOicrcHJvaj1sY2MgK2xhdF8xPTI3LjgzMzMzMzMzMzMzMzMzICtsYXRfMj0yNi4xNjY2NjY2NjY2NjY2NyArbGF0XzA9MjUuNjY2NjY2NjY2NjY2NjcgK2xvbl8wPS05MS4zMzMzMzMzMzMzMzMzMyAreF8wPTYwOTYwMS4yMTkyMDI0Mzg0ICt5XzA9MCArZGF0dW09TkFEMjcgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzozMjEwMFwiOicrcHJvaj1sY2MgK2xhdF8xPTQ5ICtsYXRfMj00NSArbGF0XzA9NDQuMjUgK2xvbl8wPS0xMDkuNSAreF8wPTYwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyMTA0XCI6Jytwcm9qPWxjYyArbGF0XzE9NDMgK2xhdF8yPTQwICtsYXRfMD0zOS44MzMzMzMzMzMzMzMzNCArbG9uXzA9LTEwMCAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyMTA3XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0zNC43NSArbG9uXzA9LTExNS41ODMzMzMzMzMzMzMzICtrPTAuOTk5OSAreF8wPTIwMDAwMCAreV8wPTgwMDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyMTA4XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0zNC43NSArbG9uXzA9LTExNi42NjY2NjY2NjY2NjY3ICtrPTAuOTk5OSAreF8wPTUwMDAwMCAreV8wPTYwMDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyMTA5XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0zNC43NSArbG9uXzA9LTExOC41ODMzMzMzMzMzMzMzICtrPTAuOTk5OSAreF8wPTgwMDAwMCAreV8wPTQwMDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyMTEwXCI6Jytwcm9qPXRtZXJjICtsYXRfMD00Mi41ICtsb25fMD0tNzEuNjY2NjY2NjY2NjY2NjcgK2s9MC45OTk5NjY2NjcgK3hfMD0zMDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjExMVwiOicrcHJvaj10bWVyYyArbGF0XzA9MzguODMzMzMzMzMzMzMzMzQgK2xvbl8wPS03NC41ICtrPTAuOTk5OSAreF8wPTE1MDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyMTEyXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0zMSArbG9uXzA9LTEwNC4zMzMzMzMzMzMzMzMzICtrPTAuOTk5OTA5MDkxICt4XzA9MTY1MDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIxMTNcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTMxICtsb25fMD0tMTA2LjI1ICtrPTAuOTk5OSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyMTE0XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0zMSArbG9uXzA9LTEwNy44MzMzMzMzMzMzMzMzICtrPTAuOTk5OTE2NjY3ICt4XzA9ODMwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIxMTVcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTM4LjgzMzMzMzMzMzMzMzM0ICtsb25fMD0tNzQuNSAraz0wLjk5OTkgK3hfMD0xNTAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjExNlwiOicrcHJvaj10bWVyYyArbGF0XzA9NDAgK2xvbl8wPS03Ni41ODMzMzMzMzMzMzMzMyAraz0wLjk5OTkzNzUgK3hfMD0yNTAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjExN1wiOicrcHJvaj10bWVyYyArbGF0XzA9NDAgK2xvbl8wPS03OC41ODMzMzMzMzMzMzMzMyAraz0wLjk5OTkzNzUgK3hfMD0zNTAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjExOFwiOicrcHJvaj1sY2MgK2xhdF8xPTQxLjAzMzMzMzMzMzMzMzMzICtsYXRfMj00MC42NjY2NjY2NjY2NjY2NiArbGF0XzA9NDAuMTY2NjY2NjY2NjY2NjYgK2xvbl8wPS03NCAreF8wPTMwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyMTE5XCI6Jytwcm9qPWxjYyArbGF0XzE9MzYuMTY2NjY2NjY2NjY2NjYgK2xhdF8yPTM0LjMzMzMzMzMzMzMzMzM0ICtsYXRfMD0zMy43NSArbG9uXzA9LTc5ICt4XzA9NjA5NjAxLjIyICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIxMjBcIjonK3Byb2o9bGNjICtsYXRfMT00OC43MzMzMzMzMzMzMzMzMyArbGF0XzI9NDcuNDMzMzMzMzMzMzMzMzMgK2xhdF8wPTQ3ICtsb25fMD0tMTAwLjUgK3hfMD02MDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjEyMVwiOicrcHJvaj1sY2MgK2xhdF8xPTQ3LjQ4MzMzMzMzMzMzMzMzICtsYXRfMj00Ni4xODMzMzMzMzMzMzMzMyArbGF0XzA9NDUuNjY2NjY2NjY2NjY2NjYgK2xvbl8wPS0xMDAuNSAreF8wPTYwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyMTIyXCI6Jytwcm9qPWxjYyArbGF0XzE9NDEuNyArbGF0XzI9NDAuNDMzMzMzMzMzMzMzMzMgK2xhdF8wPTM5LjY2NjY2NjY2NjY2NjY2ICtsb25fMD0tODIuNSAreF8wPTYwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyMTIzXCI6Jytwcm9qPWxjYyArbGF0XzE9NDAuMDMzMzMzMzMzMzMzMzMgK2xhdF8yPTM4LjczMzMzMzMzMzMzMzMzICtsYXRfMD0zOCArbG9uXzA9LTgyLjUgK3hfMD02MDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjEyNFwiOicrcHJvaj1sY2MgK2xhdF8xPTM2Ljc2NjY2NjY2NjY2NjY3ICtsYXRfMj0zNS41NjY2NjY2NjY2NjY2NyArbGF0XzA9MzUgK2xvbl8wPS05OCAreF8wPTYwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyMTI1XCI6Jytwcm9qPWxjYyArbGF0XzE9MzUuMjMzMzMzMzMzMzMzMzMgK2xhdF8yPTMzLjkzMzMzMzMzMzMzMzMzICtsYXRfMD0zMy4zMzMzMzMzMzMzMzMzNCArbG9uXzA9LTk4ICt4XzA9NjAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIxMjZcIjonK3Byb2o9bGNjICtsYXRfMT00NiArbGF0XzI9NDQuMzMzMzMzMzMzMzMzMzQgK2xhdF8wPTQzLjY2NjY2NjY2NjY2NjY2ICtsb25fMD0tMTIwLjUgK3hfMD0yNTAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIxMjdcIjonK3Byb2o9bGNjICtsYXRfMT00NCArbGF0XzI9NDIuMzMzMzMzMzMzMzMzMzQgK2xhdF8wPTQxLjY2NjY2NjY2NjY2NjY2ICtsb25fMD0tMTIwLjUgK3hfMD0xNTAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIxMjhcIjonK3Byb2o9bGNjICtsYXRfMT00MS45NSArbGF0XzI9NDAuODgzMzMzMzMzMzMzMzMgK2xhdF8wPTQwLjE2NjY2NjY2NjY2NjY2ICtsb25fMD0tNzcuNzUgK3hfMD02MDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjEyOVwiOicrcHJvaj1sY2MgK2xhdF8xPTQwLjk2NjY2NjY2NjY2NjY3ICtsYXRfMj0zOS45MzMzMzMzMzMzMzMzMyArbGF0XzA9MzkuMzMzMzMzMzMzMzMzMzQgK2xvbl8wPS03Ny43NSAreF8wPTYwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyMTMwXCI6Jytwcm9qPXRtZXJjICtsYXRfMD00MS4wODMzMzMzMzMzMzMzNCArbG9uXzA9LTcxLjUgK2s9MC45OTk5OTM3NSAreF8wPTEwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyMTMzXCI6Jytwcm9qPWxjYyArbGF0XzE9MzQuODMzMzMzMzMzMzMzMzQgK2xhdF8yPTMyLjUgK2xhdF8wPTMxLjgzMzMzMzMzMzMzMzMzICtsb25fMD0tODEgK3hfMD02MDk2MDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjEzNFwiOicrcHJvaj1sY2MgK2xhdF8xPTQ1LjY4MzMzMzMzMzMzMzMzICtsYXRfMj00NC40MTY2NjY2NjY2NjY2NiArbGF0XzA9NDMuODMzMzMzMzMzMzMzMzQgK2xvbl8wPS0xMDAgK3hfMD02MDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjEzNVwiOicrcHJvaj1sY2MgK2xhdF8xPTQ0LjQgK2xhdF8yPTQyLjgzMzMzMzMzMzMzMzM0ICtsYXRfMD00Mi4zMzMzMzMzMzMzMzMzNCArbG9uXzA9LTEwMC4zMzMzMzMzMzMzMzMzICt4XzA9NjAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIxMzZcIjonK3Byb2o9bGNjICtsYXRfMT0zNi40MTY2NjY2NjY2NjY2NiArbGF0XzI9MzUuMjUgK2xhdF8wPTM0LjMzMzMzMzMzMzMzMzM0ICtsb25fMD0tODYgK3hfMD02MDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjEzN1wiOicrcHJvaj1sY2MgK2xhdF8xPTM2LjE4MzMzMzMzMzMzMzMzICtsYXRfMj0zNC42NSArbGF0XzA9MzQgK2xvbl8wPS0xMDEuNSAreF8wPTIwMDAwMCAreV8wPTEwMDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyMTM4XCI6Jytwcm9qPWxjYyArbGF0XzE9MzMuOTY2NjY2NjY2NjY2NjcgK2xhdF8yPTMyLjEzMzMzMzMzMzMzMzMzICtsYXRfMD0zMS42NjY2NjY2NjY2NjY2NyArbG9uXzA9LTk4LjUgK3hfMD02MDAwMDAgK3lfMD0yMDAwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjEzOVwiOicrcHJvaj1sY2MgK2xhdF8xPTMxLjg4MzMzMzMzMzMzMzMzICtsYXRfMj0zMC4xMTY2NjY2NjY2NjY2NyArbGF0XzA9MjkuNjY2NjY2NjY2NjY2NjcgK2xvbl8wPS0xMDAuMzMzMzMzMzMzMzMzMyAreF8wPTcwMDAwMCAreV8wPTMwMDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyMTQwXCI6Jytwcm9qPWxjYyArbGF0XzE9MzAuMjgzMzMzMzMzMzMzMzMgK2xhdF8yPTI4LjM4MzMzMzMzMzMzMzMzICtsYXRfMD0yNy44MzMzMzMzMzMzMzMzMyArbG9uXzA9LTk5ICt4XzA9NjAwMDAwICt5XzA9NDAwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIxNDFcIjonK3Byb2o9bGNjICtsYXRfMT0yNy44MzMzMzMzMzMzMzMzMyArbGF0XzI9MjYuMTY2NjY2NjY2NjY2NjcgK2xhdF8wPTI1LjY2NjY2NjY2NjY2NjY3ICtsb25fMD0tOTguNSAreF8wPTMwMDAwMCAreV8wPTUwMDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyMTQyXCI6Jytwcm9qPWxjYyArbGF0XzE9NDEuNzgzMzMzMzMzMzMzMzMgK2xhdF8yPTQwLjcxNjY2NjY2NjY2NjY3ICtsYXRfMD00MC4zMzMzMzMzMzMzMzMzNCArbG9uXzA9LTExMS41ICt4XzA9NTAwMDAwICt5XzA9MTAwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIxNDNcIjonK3Byb2o9bGNjICtsYXRfMT00MC42NSArbGF0XzI9MzkuMDE2NjY2NjY2NjY2NjcgK2xhdF8wPTM4LjMzMzMzMzMzMzMzMzM0ICtsb25fMD0tMTExLjUgK3hfMD01MDAwMDAgK3lfMD0yMDAwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjE0NFwiOicrcHJvaj1sY2MgK2xhdF8xPTM4LjM1ICtsYXRfMj0zNy4yMTY2NjY2NjY2NjY2NyArbGF0XzA9MzYuNjY2NjY2NjY2NjY2NjYgK2xvbl8wPS0xMTEuNSAreF8wPTUwMDAwMCAreV8wPTMwMDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyMTQ1XCI6Jytwcm9qPXRtZXJjICtsYXRfMD00Mi41ICtsb25fMD0tNzIuNSAraz0wLjk5OTk2NDI4NiAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyMTQ2XCI6Jytwcm9qPWxjYyArbGF0XzE9MzkuMiArbGF0XzI9MzguMDMzMzMzMzMzMzMzMzMgK2xhdF8wPTM3LjY2NjY2NjY2NjY2NjY2ICtsb25fMD0tNzguNSAreF8wPTM1MDAwMDAgK3lfMD0yMDAwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjE0N1wiOicrcHJvaj1sY2MgK2xhdF8xPTM3Ljk2NjY2NjY2NjY2NjY3ICtsYXRfMj0zNi43NjY2NjY2NjY2NjY2NyArbGF0XzA9MzYuMzMzMzMzMzMzMzMzMzQgK2xvbl8wPS03OC41ICt4XzA9MzUwMDAwMCAreV8wPTEwMDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyMTQ4XCI6Jytwcm9qPWxjYyArbGF0XzE9NDguNzMzMzMzMzMzMzMzMzMgK2xhdF8yPTQ3LjUgK2xhdF8wPTQ3ICtsb25fMD0tMTIwLjgzMzMzMzMzMzMzMzMgK3hfMD01MDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjE0OVwiOicrcHJvaj1sY2MgK2xhdF8xPTQ3LjMzMzMzMzMzMzMzMzM0ICtsYXRfMj00NS44MzMzMzMzMzMzMzMzNCArbGF0XzA9NDUuMzMzMzMzMzMzMzMzMzQgK2xvbl8wPS0xMjAuNSAreF8wPTUwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyMTUwXCI6Jytwcm9qPWxjYyArbGF0XzE9NDAuMjUgK2xhdF8yPTM5ICtsYXRfMD0zOC41ICtsb25fMD0tNzkuNSAreF8wPTYwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyMTUxXCI6Jytwcm9qPWxjYyArbGF0XzE9MzguODgzMzMzMzMzMzMzMzMgK2xhdF8yPTM3LjQ4MzMzMzMzMzMzMzMzICtsYXRfMD0zNyArbG9uXzA9LTgxICt4XzA9NjAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIxNTJcIjonK3Byb2o9bGNjICtsYXRfMT00Ni43NjY2NjY2NjY2NjY2NyArbGF0XzI9NDUuNTY2NjY2NjY2NjY2NjcgK2xhdF8wPTQ1LjE2NjY2NjY2NjY2NjY2ICtsb25fMD0tOTAgK3hfMD02MDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjE1M1wiOicrcHJvaj1sY2MgK2xhdF8xPTQ1LjUgK2xhdF8yPTQ0LjI1ICtsYXRfMD00My44MzMzMzMzMzMzMzMzNCArbG9uXzA9LTkwICt4XzA9NjAwMDAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIxNTRcIjonK3Byb2o9bGNjICtsYXRfMT00NC4wNjY2NjY2NjY2NjY2NyArbGF0XzI9NDIuNzMzMzMzMzMzMzMzMzMgK2xhdF8wPTQyICtsb25fMD0tOTAgK3hfMD02MDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjE1NVwiOicrcHJvaj10bWVyYyArbGF0XzA9NDAuNSArbG9uXzA9LTEwNS4xNjY2NjY2NjY2NjY3ICtrPTAuOTk5OTM3NSAreF8wPTIwMDAwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyMTU2XCI6Jytwcm9qPXRtZXJjICtsYXRfMD00MC41ICtsb25fMD0tMTA3LjMzMzMzMzMzMzMzMzMgK2s9MC45OTk5Mzc1ICt4XzA9NDAwMDAwICt5XzA9MTAwMDAwICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjE1N1wiOicrcHJvaj10bWVyYyArbGF0XzA9NDAuNSArbG9uXzA9LTEwOC43NSAraz0wLjk5OTkzNzUgK3hfMD02MDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjE1OFwiOicrcHJvaj10bWVyYyArbGF0XzA9NDAuNSArbG9uXzA9LTExMC4wODMzMzMzMzMzMzMzICtrPTAuOTk5OTM3NSAreF8wPTgwMDAwMCAreV8wPTEwMDAwMCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIxNjFcIjonK3Byb2o9bGNjICtsYXRfMT0xOC40MzMzMzMzMzMzMzMzMyArbGF0XzI9MTguMDMzMzMzMzMzMzMzMzMgK2xhdF8wPTE3LjgzMzMzMzMzMzMzMzMzICtsb25fMD0tNjYuNDMzMzMzMzMzMzMzMzQgK3hfMD0yMDAwMDAgK3lfMD0yMDAwMDAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyMTY0XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0tOTkgK2s9MC45OTk2ICt4XzA9NTAwMDAwLjAwMTAxNjAwMiAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzozMjE2NVwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9LTkzICtrPTAuOTk5NiAreF8wPTUwMDAwMC4wMDEwMTYwMDIgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIxNjZcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPS04NyAraz0wLjk5OTYgK3hfMD01MDAwMDAuMDAxMDE2MDAyICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyMTY3XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0tODEgK2s9MC45OTk2ICt4XzA9NTAwMDAwLjAwMTAxNjAwMiAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzozMjE4MFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9LTU1LjUgK2s9MC45OTk5ICt4XzA9MzA0ODAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIxODFcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPS01MyAraz0wLjk5OTkgK3hfMD0zMDQ4MDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjE4MlwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9LTU2ICtrPTAuOTk5OSAreF8wPTMwNDgwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyMTgzXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0tNTguNSAraz0wLjk5OTkgK3hfMD0zMDQ4MDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjE4NFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9LTYxLjUgK2s9MC45OTk5ICt4XzA9MzA0ODAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIxODVcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPS02NC41ICtrPTAuOTk5OSAreF8wPTMwNDgwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyMTg2XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0tNjcuNSAraz0wLjk5OTkgK3hfMD0zMDQ4MDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjE4N1wiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9LTcwLjUgK2s9MC45OTk5ICt4XzA9MzA0ODAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIxODhcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPS03My41ICtrPTAuOTk5OSAreF8wPTMwNDgwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyMTg5XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0tNzYuNSAraz0wLjk5OTkgK3hfMD0zMDQ4MDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjE5MFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9LTc5LjUgK2s9MC45OTk5ICt4XzA9MzA0ODAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIxOTFcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPS04Mi41ICtrPTAuOTk5OSAreF8wPTMwNDgwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyMTkyXCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0tODEgK2s9MC45OTk5ICt4XzA9MzA0ODAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIxOTNcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPS04NCAraz0wLjk5OTkgK3hfMD0zMDQ4MDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjE5NFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9LTg3ICtrPTAuOTk5OSAreF8wPTMwNDgwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyMTk1XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0tOTAgK2s9MC45OTk5ICt4XzA9MzA0ODAwICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIxOTZcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPS05MyAraz0wLjk5OTkgK3hfMD0zMDQ4MDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjE5N1wiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9LTk2ICtrPTAuOTk5OSAreF8wPTMwNDgwMCAreV8wPTAgK2VsbHBzPUdSUzgwICt0b3dnczg0PTAsMCwwLDAsMCwwLDAgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyMTk4XCI6Jytwcm9qPWxjYyArbGF0XzE9NjAgK2xhdF8yPTQ2ICtsYXRfMD00NCArbG9uXzA9LTY4LjUgK3hfMD0wICt5XzA9MCArZWxscHM9R1JTODAgK3Rvd2dzODQ9MCwwLDAsMCwwLDAsMCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIxOTlcIjonK3Byb2o9bGNjICtsYXRfMT0yNy44MzMzMzMzMzMzMzMzMyArbGF0XzI9MjYuMTY2NjY2NjY2NjY2NjcgK2xhdF8wPTI1LjUgK2xvbl8wPS05MS4zMzMzMzMzMzMzMzMzMyAreF8wPTEwMDAwMDAgK3lfMD0wICtlbGxwcz1HUlM4MCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjIwMVwiOicrcHJvaj11dG0gK3pvbmU9MSArZWxscHM9V0dTNzIgK3Rvd2dzODQ9MCwwLDQuNSwwLDAsMC41NTQsMC4yMjYzICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjIwMlwiOicrcHJvaj11dG0gK3pvbmU9MiArZWxscHM9V0dTNzIgK3Rvd2dzODQ9MCwwLDQuNSwwLDAsMC41NTQsMC4yMjYzICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjIwM1wiOicrcHJvaj11dG0gK3pvbmU9MyArZWxscHM9V0dTNzIgK3Rvd2dzODQ9MCwwLDQuNSwwLDAsMC41NTQsMC4yMjYzICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjIwNFwiOicrcHJvaj11dG0gK3pvbmU9NCArZWxscHM9V0dTNzIgK3Rvd2dzODQ9MCwwLDQuNSwwLDAsMC41NTQsMC4yMjYzICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjIwNVwiOicrcHJvaj11dG0gK3pvbmU9NSArZWxscHM9V0dTNzIgK3Rvd2dzODQ9MCwwLDQuNSwwLDAsMC41NTQsMC4yMjYzICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjIwNlwiOicrcHJvaj11dG0gK3pvbmU9NiArZWxscHM9V0dTNzIgK3Rvd2dzODQ9MCwwLDQuNSwwLDAsMC41NTQsMC4yMjYzICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjIwN1wiOicrcHJvaj11dG0gK3pvbmU9NyArZWxscHM9V0dTNzIgK3Rvd2dzODQ9MCwwLDQuNSwwLDAsMC41NTQsMC4yMjYzICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjIwOFwiOicrcHJvaj11dG0gK3pvbmU9OCArZWxscHM9V0dTNzIgK3Rvd2dzODQ9MCwwLDQuNSwwLDAsMC41NTQsMC4yMjYzICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjIwOVwiOicrcHJvaj11dG0gK3pvbmU9OSArZWxscHM9V0dTNzIgK3Rvd2dzODQ9MCwwLDQuNSwwLDAsMC41NTQsMC4yMjYzICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjIxMFwiOicrcHJvaj11dG0gK3pvbmU9MTAgK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCw0LjUsMCwwLDAuNTU0LDAuMjI2MyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIyMTFcIjonK3Byb2o9dXRtICt6b25lPTExICtlbGxwcz1XR1M3MiArdG93Z3M4ND0wLDAsNC41LDAsMCwwLjU1NCwwLjIyNjMgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyMjEyXCI6Jytwcm9qPXV0bSArem9uZT0xMiArZWxscHM9V0dTNzIgK3Rvd2dzODQ9MCwwLDQuNSwwLDAsMC41NTQsMC4yMjYzICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjIxM1wiOicrcHJvaj11dG0gK3pvbmU9MTMgK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCw0LjUsMCwwLDAuNTU0LDAuMjI2MyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIyMTRcIjonK3Byb2o9dXRtICt6b25lPTE0ICtlbGxwcz1XR1M3MiArdG93Z3M4ND0wLDAsNC41LDAsMCwwLjU1NCwwLjIyNjMgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyMjE1XCI6Jytwcm9qPXV0bSArem9uZT0xNSArZWxscHM9V0dTNzIgK3Rvd2dzODQ9MCwwLDQuNSwwLDAsMC41NTQsMC4yMjYzICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjIxNlwiOicrcHJvaj11dG0gK3pvbmU9MTYgK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCw0LjUsMCwwLDAuNTU0LDAuMjI2MyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIyMTdcIjonK3Byb2o9dXRtICt6b25lPTE3ICtlbGxwcz1XR1M3MiArdG93Z3M4ND0wLDAsNC41LDAsMCwwLjU1NCwwLjIyNjMgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyMjE4XCI6Jytwcm9qPXV0bSArem9uZT0xOCArZWxscHM9V0dTNzIgK3Rvd2dzODQ9MCwwLDQuNSwwLDAsMC41NTQsMC4yMjYzICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjIxOVwiOicrcHJvaj11dG0gK3pvbmU9MTkgK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCw0LjUsMCwwLDAuNTU0LDAuMjI2MyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIyMjBcIjonK3Byb2o9dXRtICt6b25lPTIwICtlbGxwcz1XR1M3MiArdG93Z3M4ND0wLDAsNC41LDAsMCwwLjU1NCwwLjIyNjMgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyMjIxXCI6Jytwcm9qPXV0bSArem9uZT0yMSArZWxscHM9V0dTNzIgK3Rvd2dzODQ9MCwwLDQuNSwwLDAsMC41NTQsMC4yMjYzICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjIyMlwiOicrcHJvaj11dG0gK3pvbmU9MjIgK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCw0LjUsMCwwLDAuNTU0LDAuMjI2MyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIyMjNcIjonK3Byb2o9dXRtICt6b25lPTIzICtlbGxwcz1XR1M3MiArdG93Z3M4ND0wLDAsNC41LDAsMCwwLjU1NCwwLjIyNjMgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyMjI0XCI6Jytwcm9qPXV0bSArem9uZT0yNCArZWxscHM9V0dTNzIgK3Rvd2dzODQ9MCwwLDQuNSwwLDAsMC41NTQsMC4yMjYzICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjIyNVwiOicrcHJvaj11dG0gK3pvbmU9MjUgK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCw0LjUsMCwwLDAuNTU0LDAuMjI2MyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIyMjZcIjonK3Byb2o9dXRtICt6b25lPTI2ICtlbGxwcz1XR1M3MiArdG93Z3M4ND0wLDAsNC41LDAsMCwwLjU1NCwwLjIyNjMgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyMjI3XCI6Jytwcm9qPXV0bSArem9uZT0yNyArZWxscHM9V0dTNzIgK3Rvd2dzODQ9MCwwLDQuNSwwLDAsMC41NTQsMC4yMjYzICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjIyOFwiOicrcHJvaj11dG0gK3pvbmU9MjggK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCw0LjUsMCwwLDAuNTU0LDAuMjI2MyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIyMjlcIjonK3Byb2o9dXRtICt6b25lPTI5ICtlbGxwcz1XR1M3MiArdG93Z3M4ND0wLDAsNC41LDAsMCwwLjU1NCwwLjIyNjMgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyMjMwXCI6Jytwcm9qPXV0bSArem9uZT0zMCArZWxscHM9V0dTNzIgK3Rvd2dzODQ9MCwwLDQuNSwwLDAsMC41NTQsMC4yMjYzICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjIzMVwiOicrcHJvaj11dG0gK3pvbmU9MzEgK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCw0LjUsMCwwLDAuNTU0LDAuMjI2MyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIyMzJcIjonK3Byb2o9dXRtICt6b25lPTMyICtlbGxwcz1XR1M3MiArdG93Z3M4ND0wLDAsNC41LDAsMCwwLjU1NCwwLjIyNjMgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyMjMzXCI6Jytwcm9qPXV0bSArem9uZT0zMyArZWxscHM9V0dTNzIgK3Rvd2dzODQ9MCwwLDQuNSwwLDAsMC41NTQsMC4yMjYzICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjIzNFwiOicrcHJvaj11dG0gK3pvbmU9MzQgK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCw0LjUsMCwwLDAuNTU0LDAuMjI2MyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIyMzVcIjonK3Byb2o9dXRtICt6b25lPTM1ICtlbGxwcz1XR1M3MiArdG93Z3M4ND0wLDAsNC41LDAsMCwwLjU1NCwwLjIyNjMgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyMjM2XCI6Jytwcm9qPXV0bSArem9uZT0zNiArZWxscHM9V0dTNzIgK3Rvd2dzODQ9MCwwLDQuNSwwLDAsMC41NTQsMC4yMjYzICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjIzN1wiOicrcHJvaj11dG0gK3pvbmU9MzcgK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCw0LjUsMCwwLDAuNTU0LDAuMjI2MyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIyMzhcIjonK3Byb2o9dXRtICt6b25lPTM4ICtlbGxwcz1XR1M3MiArdG93Z3M4ND0wLDAsNC41LDAsMCwwLjU1NCwwLjIyNjMgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyMjM5XCI6Jytwcm9qPXV0bSArem9uZT0zOSArZWxscHM9V0dTNzIgK3Rvd2dzODQ9MCwwLDQuNSwwLDAsMC41NTQsMC4yMjYzICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjI0MFwiOicrcHJvaj11dG0gK3pvbmU9NDAgK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCw0LjUsMCwwLDAuNTU0LDAuMjI2MyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIyNDFcIjonK3Byb2o9dXRtICt6b25lPTQxICtlbGxwcz1XR1M3MiArdG93Z3M4ND0wLDAsNC41LDAsMCwwLjU1NCwwLjIyNjMgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyMjQyXCI6Jytwcm9qPXV0bSArem9uZT00MiArZWxscHM9V0dTNzIgK3Rvd2dzODQ9MCwwLDQuNSwwLDAsMC41NTQsMC4yMjYzICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjI0M1wiOicrcHJvaj11dG0gK3pvbmU9NDMgK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCw0LjUsMCwwLDAuNTU0LDAuMjI2MyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIyNDRcIjonK3Byb2o9dXRtICt6b25lPTQ0ICtlbGxwcz1XR1M3MiArdG93Z3M4ND0wLDAsNC41LDAsMCwwLjU1NCwwLjIyNjMgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyMjQ1XCI6Jytwcm9qPXV0bSArem9uZT00NSArZWxscHM9V0dTNzIgK3Rvd2dzODQ9MCwwLDQuNSwwLDAsMC41NTQsMC4yMjYzICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjI0NlwiOicrcHJvaj11dG0gK3pvbmU9NDYgK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCw0LjUsMCwwLDAuNTU0LDAuMjI2MyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIyNDdcIjonK3Byb2o9dXRtICt6b25lPTQ3ICtlbGxwcz1XR1M3MiArdG93Z3M4ND0wLDAsNC41LDAsMCwwLjU1NCwwLjIyNjMgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyMjQ4XCI6Jytwcm9qPXV0bSArem9uZT00OCArZWxscHM9V0dTNzIgK3Rvd2dzODQ9MCwwLDQuNSwwLDAsMC41NTQsMC4yMjYzICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjI0OVwiOicrcHJvaj11dG0gK3pvbmU9NDkgK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCw0LjUsMCwwLDAuNTU0LDAuMjI2MyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIyNTBcIjonK3Byb2o9dXRtICt6b25lPTUwICtlbGxwcz1XR1M3MiArdG93Z3M4ND0wLDAsNC41LDAsMCwwLjU1NCwwLjIyNjMgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyMjUxXCI6Jytwcm9qPXV0bSArem9uZT01MSArZWxscHM9V0dTNzIgK3Rvd2dzODQ9MCwwLDQuNSwwLDAsMC41NTQsMC4yMjYzICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjI1MlwiOicrcHJvaj11dG0gK3pvbmU9NTIgK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCw0LjUsMCwwLDAuNTU0LDAuMjI2MyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIyNTNcIjonK3Byb2o9dXRtICt6b25lPTUzICtlbGxwcz1XR1M3MiArdG93Z3M4ND0wLDAsNC41LDAsMCwwLjU1NCwwLjIyNjMgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyMjU0XCI6Jytwcm9qPXV0bSArem9uZT01NCArZWxscHM9V0dTNzIgK3Rvd2dzODQ9MCwwLDQuNSwwLDAsMC41NTQsMC4yMjYzICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjI1NVwiOicrcHJvaj11dG0gK3pvbmU9NTUgK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCw0LjUsMCwwLDAuNTU0LDAuMjI2MyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIyNTZcIjonK3Byb2o9dXRtICt6b25lPTU2ICtlbGxwcz1XR1M3MiArdG93Z3M4ND0wLDAsNC41LDAsMCwwLjU1NCwwLjIyNjMgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyMjU3XCI6Jytwcm9qPXV0bSArem9uZT01NyArZWxscHM9V0dTNzIgK3Rvd2dzODQ9MCwwLDQuNSwwLDAsMC41NTQsMC4yMjYzICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjI1OFwiOicrcHJvaj11dG0gK3pvbmU9NTggK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCw0LjUsMCwwLDAuNTU0LDAuMjI2MyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIyNTlcIjonK3Byb2o9dXRtICt6b25lPTU5ICtlbGxwcz1XR1M3MiArdG93Z3M4ND0wLDAsNC41LDAsMCwwLjU1NCwwLjIyNjMgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyMjYwXCI6Jytwcm9qPXV0bSArem9uZT02MCArZWxscHM9V0dTNzIgK3Rvd2dzODQ9MCwwLDQuNSwwLDAsMC41NTQsMC4yMjYzICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjMwMVwiOicrcHJvaj11dG0gK3pvbmU9MSArc291dGggK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCw0LjUsMCwwLDAuNTU0LDAuMjI2MyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIzMDJcIjonK3Byb2o9dXRtICt6b25lPTIgK3NvdXRoICtlbGxwcz1XR1M3MiArdG93Z3M4ND0wLDAsNC41LDAsMCwwLjU1NCwwLjIyNjMgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyMzAzXCI6Jytwcm9qPXV0bSArem9uZT0zICtzb3V0aCArZWxscHM9V0dTNzIgK3Rvd2dzODQ9MCwwLDQuNSwwLDAsMC41NTQsMC4yMjYzICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjMwNFwiOicrcHJvaj11dG0gK3pvbmU9NCArc291dGggK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCw0LjUsMCwwLDAuNTU0LDAuMjI2MyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIzMDVcIjonK3Byb2o9dXRtICt6b25lPTUgK3NvdXRoICtlbGxwcz1XR1M3MiArdG93Z3M4ND0wLDAsNC41LDAsMCwwLjU1NCwwLjIyNjMgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyMzA2XCI6Jytwcm9qPXV0bSArem9uZT02ICtzb3V0aCArZWxscHM9V0dTNzIgK3Rvd2dzODQ9MCwwLDQuNSwwLDAsMC41NTQsMC4yMjYzICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjMwN1wiOicrcHJvaj11dG0gK3pvbmU9NyArc291dGggK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCw0LjUsMCwwLDAuNTU0LDAuMjI2MyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIzMDhcIjonK3Byb2o9dXRtICt6b25lPTggK3NvdXRoICtlbGxwcz1XR1M3MiArdG93Z3M4ND0wLDAsNC41LDAsMCwwLjU1NCwwLjIyNjMgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyMzA5XCI6Jytwcm9qPXV0bSArem9uZT05ICtzb3V0aCArZWxscHM9V0dTNzIgK3Rvd2dzODQ9MCwwLDQuNSwwLDAsMC41NTQsMC4yMjYzICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjMxMFwiOicrcHJvaj11dG0gK3pvbmU9MTAgK3NvdXRoICtlbGxwcz1XR1M3MiArdG93Z3M4ND0wLDAsNC41LDAsMCwwLjU1NCwwLjIyNjMgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyMzExXCI6Jytwcm9qPXV0bSArem9uZT0xMSArc291dGggK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCw0LjUsMCwwLDAuNTU0LDAuMjI2MyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIzMTJcIjonK3Byb2o9dXRtICt6b25lPTEyICtzb3V0aCArZWxscHM9V0dTNzIgK3Rvd2dzODQ9MCwwLDQuNSwwLDAsMC41NTQsMC4yMjYzICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjMxM1wiOicrcHJvaj11dG0gK3pvbmU9MTMgK3NvdXRoICtlbGxwcz1XR1M3MiArdG93Z3M4ND0wLDAsNC41LDAsMCwwLjU1NCwwLjIyNjMgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyMzE0XCI6Jytwcm9qPXV0bSArem9uZT0xNCArc291dGggK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCw0LjUsMCwwLDAuNTU0LDAuMjI2MyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIzMTVcIjonK3Byb2o9dXRtICt6b25lPTE1ICtzb3V0aCArZWxscHM9V0dTNzIgK3Rvd2dzODQ9MCwwLDQuNSwwLDAsMC41NTQsMC4yMjYzICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjMxNlwiOicrcHJvaj11dG0gK3pvbmU9MTYgK3NvdXRoICtlbGxwcz1XR1M3MiArdG93Z3M4ND0wLDAsNC41LDAsMCwwLjU1NCwwLjIyNjMgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyMzE3XCI6Jytwcm9qPXV0bSArem9uZT0xNyArc291dGggK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCw0LjUsMCwwLDAuNTU0LDAuMjI2MyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIzMThcIjonK3Byb2o9dXRtICt6b25lPTE4ICtzb3V0aCArZWxscHM9V0dTNzIgK3Rvd2dzODQ9MCwwLDQuNSwwLDAsMC41NTQsMC4yMjYzICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjMxOVwiOicrcHJvaj11dG0gK3pvbmU9MTkgK3NvdXRoICtlbGxwcz1XR1M3MiArdG93Z3M4ND0wLDAsNC41LDAsMCwwLjU1NCwwLjIyNjMgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyMzIwXCI6Jytwcm9qPXV0bSArem9uZT0yMCArc291dGggK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCw0LjUsMCwwLDAuNTU0LDAuMjI2MyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIzMjFcIjonK3Byb2o9dXRtICt6b25lPTIxICtzb3V0aCArZWxscHM9V0dTNzIgK3Rvd2dzODQ9MCwwLDQuNSwwLDAsMC41NTQsMC4yMjYzICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjMyMlwiOicrcHJvaj11dG0gK3pvbmU9MjIgK3NvdXRoICtlbGxwcz1XR1M3MiArdG93Z3M4ND0wLDAsNC41LDAsMCwwLjU1NCwwLjIyNjMgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyMzIzXCI6Jytwcm9qPXV0bSArem9uZT0yMyArc291dGggK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCw0LjUsMCwwLDAuNTU0LDAuMjI2MyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIzMjRcIjonK3Byb2o9dXRtICt6b25lPTI0ICtzb3V0aCArZWxscHM9V0dTNzIgK3Rvd2dzODQ9MCwwLDQuNSwwLDAsMC41NTQsMC4yMjYzICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjMyNVwiOicrcHJvaj11dG0gK3pvbmU9MjUgK3NvdXRoICtlbGxwcz1XR1M3MiArdG93Z3M4ND0wLDAsNC41LDAsMCwwLjU1NCwwLjIyNjMgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyMzI2XCI6Jytwcm9qPXV0bSArem9uZT0yNiArc291dGggK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCw0LjUsMCwwLDAuNTU0LDAuMjI2MyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIzMjdcIjonK3Byb2o9dXRtICt6b25lPTI3ICtzb3V0aCArZWxscHM9V0dTNzIgK3Rvd2dzODQ9MCwwLDQuNSwwLDAsMC41NTQsMC4yMjYzICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjMyOFwiOicrcHJvaj11dG0gK3pvbmU9MjggK3NvdXRoICtlbGxwcz1XR1M3MiArdG93Z3M4ND0wLDAsNC41LDAsMCwwLjU1NCwwLjIyNjMgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyMzI5XCI6Jytwcm9qPXV0bSArem9uZT0yOSArc291dGggK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCw0LjUsMCwwLDAuNTU0LDAuMjI2MyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIzMzBcIjonK3Byb2o9dXRtICt6b25lPTMwICtzb3V0aCArZWxscHM9V0dTNzIgK3Rvd2dzODQ9MCwwLDQuNSwwLDAsMC41NTQsMC4yMjYzICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjMzMVwiOicrcHJvaj11dG0gK3pvbmU9MzEgK3NvdXRoICtlbGxwcz1XR1M3MiArdG93Z3M4ND0wLDAsNC41LDAsMCwwLjU1NCwwLjIyNjMgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyMzMyXCI6Jytwcm9qPXV0bSArem9uZT0zMiArc291dGggK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCw0LjUsMCwwLDAuNTU0LDAuMjI2MyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIzMzNcIjonK3Byb2o9dXRtICt6b25lPTMzICtzb3V0aCArZWxscHM9V0dTNzIgK3Rvd2dzODQ9MCwwLDQuNSwwLDAsMC41NTQsMC4yMjYzICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjMzNFwiOicrcHJvaj11dG0gK3pvbmU9MzQgK3NvdXRoICtlbGxwcz1XR1M3MiArdG93Z3M4ND0wLDAsNC41LDAsMCwwLjU1NCwwLjIyNjMgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyMzM1XCI6Jytwcm9qPXV0bSArem9uZT0zNSArc291dGggK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCw0LjUsMCwwLDAuNTU0LDAuMjI2MyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIzMzZcIjonK3Byb2o9dXRtICt6b25lPTM2ICtzb3V0aCArZWxscHM9V0dTNzIgK3Rvd2dzODQ9MCwwLDQuNSwwLDAsMC41NTQsMC4yMjYzICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjMzN1wiOicrcHJvaj11dG0gK3pvbmU9MzcgK3NvdXRoICtlbGxwcz1XR1M3MiArdG93Z3M4ND0wLDAsNC41LDAsMCwwLjU1NCwwLjIyNjMgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyMzM4XCI6Jytwcm9qPXV0bSArem9uZT0zOCArc291dGggK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCw0LjUsMCwwLDAuNTU0LDAuMjI2MyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIzMzlcIjonK3Byb2o9dXRtICt6b25lPTM5ICtzb3V0aCArZWxscHM9V0dTNzIgK3Rvd2dzODQ9MCwwLDQuNSwwLDAsMC41NTQsMC4yMjYzICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjM0MFwiOicrcHJvaj11dG0gK3pvbmU9NDAgK3NvdXRoICtlbGxwcz1XR1M3MiArdG93Z3M4ND0wLDAsNC41LDAsMCwwLjU1NCwwLjIyNjMgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyMzQxXCI6Jytwcm9qPXV0bSArem9uZT00MSArc291dGggK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCw0LjUsMCwwLDAuNTU0LDAuMjI2MyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIzNDJcIjonK3Byb2o9dXRtICt6b25lPTQyICtzb3V0aCArZWxscHM9V0dTNzIgK3Rvd2dzODQ9MCwwLDQuNSwwLDAsMC41NTQsMC4yMjYzICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjM0M1wiOicrcHJvaj11dG0gK3pvbmU9NDMgK3NvdXRoICtlbGxwcz1XR1M3MiArdG93Z3M4ND0wLDAsNC41LDAsMCwwLjU1NCwwLjIyNjMgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyMzQ0XCI6Jytwcm9qPXV0bSArem9uZT00NCArc291dGggK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCw0LjUsMCwwLDAuNTU0LDAuMjI2MyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIzNDVcIjonK3Byb2o9dXRtICt6b25lPTQ1ICtzb3V0aCArZWxscHM9V0dTNzIgK3Rvd2dzODQ9MCwwLDQuNSwwLDAsMC41NTQsMC4yMjYzICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjM0NlwiOicrcHJvaj11dG0gK3pvbmU9NDYgK3NvdXRoICtlbGxwcz1XR1M3MiArdG93Z3M4ND0wLDAsNC41LDAsMCwwLjU1NCwwLjIyNjMgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyMzQ3XCI6Jytwcm9qPXV0bSArem9uZT00NyArc291dGggK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCw0LjUsMCwwLDAuNTU0LDAuMjI2MyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIzNDhcIjonK3Byb2o9dXRtICt6b25lPTQ4ICtzb3V0aCArZWxscHM9V0dTNzIgK3Rvd2dzODQ9MCwwLDQuNSwwLDAsMC41NTQsMC4yMjYzICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjM0OVwiOicrcHJvaj11dG0gK3pvbmU9NDkgK3NvdXRoICtlbGxwcz1XR1M3MiArdG93Z3M4ND0wLDAsNC41LDAsMCwwLjU1NCwwLjIyNjMgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyMzUwXCI6Jytwcm9qPXV0bSArem9uZT01MCArc291dGggK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCw0LjUsMCwwLDAuNTU0LDAuMjI2MyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIzNTFcIjonK3Byb2o9dXRtICt6b25lPTUxICtzb3V0aCArZWxscHM9V0dTNzIgK3Rvd2dzODQ9MCwwLDQuNSwwLDAsMC41NTQsMC4yMjYzICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjM1MlwiOicrcHJvaj11dG0gK3pvbmU9NTIgK3NvdXRoICtlbGxwcz1XR1M3MiArdG93Z3M4ND0wLDAsNC41LDAsMCwwLjU1NCwwLjIyNjMgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyMzUzXCI6Jytwcm9qPXV0bSArem9uZT01MyArc291dGggK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCw0LjUsMCwwLDAuNTU0LDAuMjI2MyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIzNTRcIjonK3Byb2o9dXRtICt6b25lPTU0ICtzb3V0aCArZWxscHM9V0dTNzIgK3Rvd2dzODQ9MCwwLDQuNSwwLDAsMC41NTQsMC4yMjYzICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjM1NVwiOicrcHJvaj11dG0gK3pvbmU9NTUgK3NvdXRoICtlbGxwcz1XR1M3MiArdG93Z3M4ND0wLDAsNC41LDAsMCwwLjU1NCwwLjIyNjMgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyMzU2XCI6Jytwcm9qPXV0bSArem9uZT01NiArc291dGggK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCw0LjUsMCwwLDAuNTU0LDAuMjI2MyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIzNTdcIjonK3Byb2o9dXRtICt6b25lPTU3ICtzb3V0aCArZWxscHM9V0dTNzIgK3Rvd2dzODQ9MCwwLDQuNSwwLDAsMC41NTQsMC4yMjYzICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjM1OFwiOicrcHJvaj11dG0gK3pvbmU9NTggK3NvdXRoICtlbGxwcz1XR1M3MiArdG93Z3M4ND0wLDAsNC41LDAsMCwwLjU1NCwwLjIyNjMgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyMzU5XCI6Jytwcm9qPXV0bSArem9uZT01OSArc291dGggK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCw0LjUsMCwwLDAuNTU0LDAuMjI2MyArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzIzNjBcIjonK3Byb2o9dXRtICt6b25lPTYwICtzb3V0aCArZWxscHM9V0dTNzIgK3Rvd2dzODQ9MCwwLDQuNSwwLDAsMC41NTQsMC4yMjYzICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjQwMVwiOicrcHJvaj11dG0gK3pvbmU9MSArZWxscHM9V0dTNzIgK3Rvd2dzODQ9MCwwLDEuOSwwLDAsMC44MTQsLTAuMzggK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyNDAyXCI6Jytwcm9qPXV0bSArem9uZT0yICtlbGxwcz1XR1M3MiArdG93Z3M4ND0wLDAsMS45LDAsMCwwLjgxNCwtMC4zOCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzI0MDNcIjonK3Byb2o9dXRtICt6b25lPTMgK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCwxLjksMCwwLDAuODE0LC0wLjM4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjQwNFwiOicrcHJvaj11dG0gK3pvbmU9NCArZWxscHM9V0dTNzIgK3Rvd2dzODQ9MCwwLDEuOSwwLDAsMC44MTQsLTAuMzggK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyNDA1XCI6Jytwcm9qPXV0bSArem9uZT01ICtlbGxwcz1XR1M3MiArdG93Z3M4ND0wLDAsMS45LDAsMCwwLjgxNCwtMC4zOCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzI0MDZcIjonK3Byb2o9dXRtICt6b25lPTYgK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCwxLjksMCwwLDAuODE0LC0wLjM4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjQwN1wiOicrcHJvaj11dG0gK3pvbmU9NyArZWxscHM9V0dTNzIgK3Rvd2dzODQ9MCwwLDEuOSwwLDAsMC44MTQsLTAuMzggK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyNDA4XCI6Jytwcm9qPXV0bSArem9uZT04ICtlbGxwcz1XR1M3MiArdG93Z3M4ND0wLDAsMS45LDAsMCwwLjgxNCwtMC4zOCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzI0MDlcIjonK3Byb2o9dXRtICt6b25lPTkgK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCwxLjksMCwwLDAuODE0LC0wLjM4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjQxMFwiOicrcHJvaj11dG0gK3pvbmU9MTAgK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCwxLjksMCwwLDAuODE0LC0wLjM4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjQxMVwiOicrcHJvaj11dG0gK3pvbmU9MTEgK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCwxLjksMCwwLDAuODE0LC0wLjM4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjQxMlwiOicrcHJvaj11dG0gK3pvbmU9MTIgK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCwxLjksMCwwLDAuODE0LC0wLjM4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjQxM1wiOicrcHJvaj11dG0gK3pvbmU9MTMgK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCwxLjksMCwwLDAuODE0LC0wLjM4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjQxNFwiOicrcHJvaj11dG0gK3pvbmU9MTQgK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCwxLjksMCwwLDAuODE0LC0wLjM4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjQxNVwiOicrcHJvaj11dG0gK3pvbmU9MTUgK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCwxLjksMCwwLDAuODE0LC0wLjM4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjQxNlwiOicrcHJvaj11dG0gK3pvbmU9MTYgK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCwxLjksMCwwLDAuODE0LC0wLjM4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjQxN1wiOicrcHJvaj11dG0gK3pvbmU9MTcgK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCwxLjksMCwwLDAuODE0LC0wLjM4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjQxOFwiOicrcHJvaj11dG0gK3pvbmU9MTggK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCwxLjksMCwwLDAuODE0LC0wLjM4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjQxOVwiOicrcHJvaj11dG0gK3pvbmU9MTkgK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCwxLjksMCwwLDAuODE0LC0wLjM4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjQyMFwiOicrcHJvaj11dG0gK3pvbmU9MjAgK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCwxLjksMCwwLDAuODE0LC0wLjM4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjQyMVwiOicrcHJvaj11dG0gK3pvbmU9MjEgK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCwxLjksMCwwLDAuODE0LC0wLjM4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjQyMlwiOicrcHJvaj11dG0gK3pvbmU9MjIgK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCwxLjksMCwwLDAuODE0LC0wLjM4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjQyM1wiOicrcHJvaj11dG0gK3pvbmU9MjMgK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCwxLjksMCwwLDAuODE0LC0wLjM4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjQyNFwiOicrcHJvaj11dG0gK3pvbmU9MjQgK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCwxLjksMCwwLDAuODE0LC0wLjM4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjQyNVwiOicrcHJvaj11dG0gK3pvbmU9MjUgK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCwxLjksMCwwLDAuODE0LC0wLjM4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjQyNlwiOicrcHJvaj11dG0gK3pvbmU9MjYgK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCwxLjksMCwwLDAuODE0LC0wLjM4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjQyN1wiOicrcHJvaj11dG0gK3pvbmU9MjcgK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCwxLjksMCwwLDAuODE0LC0wLjM4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjQyOFwiOicrcHJvaj11dG0gK3pvbmU9MjggK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCwxLjksMCwwLDAuODE0LC0wLjM4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjQyOVwiOicrcHJvaj11dG0gK3pvbmU9MjkgK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCwxLjksMCwwLDAuODE0LC0wLjM4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjQzMFwiOicrcHJvaj11dG0gK3pvbmU9MzAgK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCwxLjksMCwwLDAuODE0LC0wLjM4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjQzMVwiOicrcHJvaj11dG0gK3pvbmU9MzEgK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCwxLjksMCwwLDAuODE0LC0wLjM4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjQzMlwiOicrcHJvaj11dG0gK3pvbmU9MzIgK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCwxLjksMCwwLDAuODE0LC0wLjM4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjQzM1wiOicrcHJvaj11dG0gK3pvbmU9MzMgK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCwxLjksMCwwLDAuODE0LC0wLjM4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjQzNFwiOicrcHJvaj11dG0gK3pvbmU9MzQgK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCwxLjksMCwwLDAuODE0LC0wLjM4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjQzNVwiOicrcHJvaj11dG0gK3pvbmU9MzUgK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCwxLjksMCwwLDAuODE0LC0wLjM4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjQzNlwiOicrcHJvaj11dG0gK3pvbmU9MzYgK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCwxLjksMCwwLDAuODE0LC0wLjM4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjQzN1wiOicrcHJvaj11dG0gK3pvbmU9MzcgK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCwxLjksMCwwLDAuODE0LC0wLjM4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjQzOFwiOicrcHJvaj11dG0gK3pvbmU9MzggK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCwxLjksMCwwLDAuODE0LC0wLjM4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjQzOVwiOicrcHJvaj11dG0gK3pvbmU9MzkgK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCwxLjksMCwwLDAuODE0LC0wLjM4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjQ0MFwiOicrcHJvaj11dG0gK3pvbmU9NDAgK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCwxLjksMCwwLDAuODE0LC0wLjM4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjQ0MVwiOicrcHJvaj11dG0gK3pvbmU9NDEgK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCwxLjksMCwwLDAuODE0LC0wLjM4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjQ0MlwiOicrcHJvaj11dG0gK3pvbmU9NDIgK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCwxLjksMCwwLDAuODE0LC0wLjM4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjQ0M1wiOicrcHJvaj11dG0gK3pvbmU9NDMgK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCwxLjksMCwwLDAuODE0LC0wLjM4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjQ0NFwiOicrcHJvaj11dG0gK3pvbmU9NDQgK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCwxLjksMCwwLDAuODE0LC0wLjM4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjQ0NVwiOicrcHJvaj11dG0gK3pvbmU9NDUgK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCwxLjksMCwwLDAuODE0LC0wLjM4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjQ0NlwiOicrcHJvaj11dG0gK3pvbmU9NDYgK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCwxLjksMCwwLDAuODE0LC0wLjM4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjQ0N1wiOicrcHJvaj11dG0gK3pvbmU9NDcgK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCwxLjksMCwwLDAuODE0LC0wLjM4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjQ0OFwiOicrcHJvaj11dG0gK3pvbmU9NDggK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCwxLjksMCwwLDAuODE0LC0wLjM4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjQ0OVwiOicrcHJvaj11dG0gK3pvbmU9NDkgK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCwxLjksMCwwLDAuODE0LC0wLjM4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjQ1MFwiOicrcHJvaj11dG0gK3pvbmU9NTAgK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCwxLjksMCwwLDAuODE0LC0wLjM4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjQ1MVwiOicrcHJvaj11dG0gK3pvbmU9NTEgK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCwxLjksMCwwLDAuODE0LC0wLjM4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjQ1MlwiOicrcHJvaj11dG0gK3pvbmU9NTIgK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCwxLjksMCwwLDAuODE0LC0wLjM4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjQ1M1wiOicrcHJvaj11dG0gK3pvbmU9NTMgK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCwxLjksMCwwLDAuODE0LC0wLjM4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjQ1NFwiOicrcHJvaj11dG0gK3pvbmU9NTQgK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCwxLjksMCwwLDAuODE0LC0wLjM4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjQ1NVwiOicrcHJvaj11dG0gK3pvbmU9NTUgK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCwxLjksMCwwLDAuODE0LC0wLjM4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjQ1NlwiOicrcHJvaj11dG0gK3pvbmU9NTYgK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCwxLjksMCwwLDAuODE0LC0wLjM4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjQ1N1wiOicrcHJvaj11dG0gK3pvbmU9NTcgK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCwxLjksMCwwLDAuODE0LC0wLjM4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjQ1OFwiOicrcHJvaj11dG0gK3pvbmU9NTggK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCwxLjksMCwwLDAuODE0LC0wLjM4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjQ1OVwiOicrcHJvaj11dG0gK3pvbmU9NTkgK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCwxLjksMCwwLDAuODE0LC0wLjM4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjQ2MFwiOicrcHJvaj11dG0gK3pvbmU9NjAgK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCwxLjksMCwwLDAuODE0LC0wLjM4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjUwMVwiOicrcHJvaj11dG0gK3pvbmU9MSArc291dGggK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCwxLjksMCwwLDAuODE0LC0wLjM4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjUwMlwiOicrcHJvaj11dG0gK3pvbmU9MiArc291dGggK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCwxLjksMCwwLDAuODE0LC0wLjM4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjUwM1wiOicrcHJvaj11dG0gK3pvbmU9MyArc291dGggK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCwxLjksMCwwLDAuODE0LC0wLjM4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjUwNFwiOicrcHJvaj11dG0gK3pvbmU9NCArc291dGggK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCwxLjksMCwwLDAuODE0LC0wLjM4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjUwNVwiOicrcHJvaj11dG0gK3pvbmU9NSArc291dGggK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCwxLjksMCwwLDAuODE0LC0wLjM4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjUwNlwiOicrcHJvaj11dG0gK3pvbmU9NiArc291dGggK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCwxLjksMCwwLDAuODE0LC0wLjM4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjUwN1wiOicrcHJvaj11dG0gK3pvbmU9NyArc291dGggK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCwxLjksMCwwLDAuODE0LC0wLjM4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjUwOFwiOicrcHJvaj11dG0gK3pvbmU9OCArc291dGggK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCwxLjksMCwwLDAuODE0LC0wLjM4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjUwOVwiOicrcHJvaj11dG0gK3pvbmU9OSArc291dGggK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCwxLjksMCwwLDAuODE0LC0wLjM4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjUxMFwiOicrcHJvaj11dG0gK3pvbmU9MTAgK3NvdXRoICtlbGxwcz1XR1M3MiArdG93Z3M4ND0wLDAsMS45LDAsMCwwLjgxNCwtMC4zOCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzI1MTFcIjonK3Byb2o9dXRtICt6b25lPTExICtzb3V0aCArZWxscHM9V0dTNzIgK3Rvd2dzODQ9MCwwLDEuOSwwLDAsMC44MTQsLTAuMzggK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyNTEyXCI6Jytwcm9qPXV0bSArem9uZT0xMiArc291dGggK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCwxLjksMCwwLDAuODE0LC0wLjM4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjUxM1wiOicrcHJvaj11dG0gK3pvbmU9MTMgK3NvdXRoICtlbGxwcz1XR1M3MiArdG93Z3M4ND0wLDAsMS45LDAsMCwwLjgxNCwtMC4zOCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzI1MTRcIjonK3Byb2o9dXRtICt6b25lPTE0ICtzb3V0aCArZWxscHM9V0dTNzIgK3Rvd2dzODQ9MCwwLDEuOSwwLDAsMC44MTQsLTAuMzggK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyNTE1XCI6Jytwcm9qPXV0bSArem9uZT0xNSArc291dGggK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCwxLjksMCwwLDAuODE0LC0wLjM4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjUxNlwiOicrcHJvaj11dG0gK3pvbmU9MTYgK3NvdXRoICtlbGxwcz1XR1M3MiArdG93Z3M4ND0wLDAsMS45LDAsMCwwLjgxNCwtMC4zOCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzI1MTdcIjonK3Byb2o9dXRtICt6b25lPTE3ICtzb3V0aCArZWxscHM9V0dTNzIgK3Rvd2dzODQ9MCwwLDEuOSwwLDAsMC44MTQsLTAuMzggK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyNTE4XCI6Jytwcm9qPXV0bSArem9uZT0xOCArc291dGggK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCwxLjksMCwwLDAuODE0LC0wLjM4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjUxOVwiOicrcHJvaj11dG0gK3pvbmU9MTkgK3NvdXRoICtlbGxwcz1XR1M3MiArdG93Z3M4ND0wLDAsMS45LDAsMCwwLjgxNCwtMC4zOCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzI1MjBcIjonK3Byb2o9dXRtICt6b25lPTIwICtzb3V0aCArZWxscHM9V0dTNzIgK3Rvd2dzODQ9MCwwLDEuOSwwLDAsMC44MTQsLTAuMzggK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyNTIxXCI6Jytwcm9qPXV0bSArem9uZT0yMSArc291dGggK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCwxLjksMCwwLDAuODE0LC0wLjM4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjUyMlwiOicrcHJvaj11dG0gK3pvbmU9MjIgK3NvdXRoICtlbGxwcz1XR1M3MiArdG93Z3M4ND0wLDAsMS45LDAsMCwwLjgxNCwtMC4zOCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzI1MjNcIjonK3Byb2o9dXRtICt6b25lPTIzICtzb3V0aCArZWxscHM9V0dTNzIgK3Rvd2dzODQ9MCwwLDEuOSwwLDAsMC44MTQsLTAuMzggK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyNTI0XCI6Jytwcm9qPXV0bSArem9uZT0yNCArc291dGggK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCwxLjksMCwwLDAuODE0LC0wLjM4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjUyNVwiOicrcHJvaj11dG0gK3pvbmU9MjUgK3NvdXRoICtlbGxwcz1XR1M3MiArdG93Z3M4ND0wLDAsMS45LDAsMCwwLjgxNCwtMC4zOCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzI1MjZcIjonK3Byb2o9dXRtICt6b25lPTI2ICtzb3V0aCArZWxscHM9V0dTNzIgK3Rvd2dzODQ9MCwwLDEuOSwwLDAsMC44MTQsLTAuMzggK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyNTI3XCI6Jytwcm9qPXV0bSArem9uZT0yNyArc291dGggK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCwxLjksMCwwLDAuODE0LC0wLjM4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjUyOFwiOicrcHJvaj11dG0gK3pvbmU9MjggK3NvdXRoICtlbGxwcz1XR1M3MiArdG93Z3M4ND0wLDAsMS45LDAsMCwwLjgxNCwtMC4zOCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzI1MjlcIjonK3Byb2o9dXRtICt6b25lPTI5ICtzb3V0aCArZWxscHM9V0dTNzIgK3Rvd2dzODQ9MCwwLDEuOSwwLDAsMC44MTQsLTAuMzggK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyNTMwXCI6Jytwcm9qPXV0bSArem9uZT0zMCArc291dGggK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCwxLjksMCwwLDAuODE0LC0wLjM4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjUzMVwiOicrcHJvaj11dG0gK3pvbmU9MzEgK3NvdXRoICtlbGxwcz1XR1M3MiArdG93Z3M4ND0wLDAsMS45LDAsMCwwLjgxNCwtMC4zOCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzI1MzJcIjonK3Byb2o9dXRtICt6b25lPTMyICtzb3V0aCArZWxscHM9V0dTNzIgK3Rvd2dzODQ9MCwwLDEuOSwwLDAsMC44MTQsLTAuMzggK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyNTMzXCI6Jytwcm9qPXV0bSArem9uZT0zMyArc291dGggK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCwxLjksMCwwLDAuODE0LC0wLjM4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjUzNFwiOicrcHJvaj11dG0gK3pvbmU9MzQgK3NvdXRoICtlbGxwcz1XR1M3MiArdG93Z3M4ND0wLDAsMS45LDAsMCwwLjgxNCwtMC4zOCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzI1MzVcIjonK3Byb2o9dXRtICt6b25lPTM1ICtzb3V0aCArZWxscHM9V0dTNzIgK3Rvd2dzODQ9MCwwLDEuOSwwLDAsMC44MTQsLTAuMzggK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyNTM2XCI6Jytwcm9qPXV0bSArem9uZT0zNiArc291dGggK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCwxLjksMCwwLDAuODE0LC0wLjM4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjUzN1wiOicrcHJvaj11dG0gK3pvbmU9MzcgK3NvdXRoICtlbGxwcz1XR1M3MiArdG93Z3M4ND0wLDAsMS45LDAsMCwwLjgxNCwtMC4zOCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzI1MzhcIjonK3Byb2o9dXRtICt6b25lPTM4ICtzb3V0aCArZWxscHM9V0dTNzIgK3Rvd2dzODQ9MCwwLDEuOSwwLDAsMC44MTQsLTAuMzggK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyNTM5XCI6Jytwcm9qPXV0bSArem9uZT0zOSArc291dGggK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCwxLjksMCwwLDAuODE0LC0wLjM4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjU0MFwiOicrcHJvaj11dG0gK3pvbmU9NDAgK3NvdXRoICtlbGxwcz1XR1M3MiArdG93Z3M4ND0wLDAsMS45LDAsMCwwLjgxNCwtMC4zOCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzI1NDFcIjonK3Byb2o9dXRtICt6b25lPTQxICtzb3V0aCArZWxscHM9V0dTNzIgK3Rvd2dzODQ9MCwwLDEuOSwwLDAsMC44MTQsLTAuMzggK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyNTQyXCI6Jytwcm9qPXV0bSArem9uZT00MiArc291dGggK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCwxLjksMCwwLDAuODE0LC0wLjM4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjU0M1wiOicrcHJvaj11dG0gK3pvbmU9NDMgK3NvdXRoICtlbGxwcz1XR1M3MiArdG93Z3M4ND0wLDAsMS45LDAsMCwwLjgxNCwtMC4zOCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzI1NDRcIjonK3Byb2o9dXRtICt6b25lPTQ0ICtzb3V0aCArZWxscHM9V0dTNzIgK3Rvd2dzODQ9MCwwLDEuOSwwLDAsMC44MTQsLTAuMzggK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyNTQ1XCI6Jytwcm9qPXV0bSArem9uZT00NSArc291dGggK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCwxLjksMCwwLDAuODE0LC0wLjM4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjU0NlwiOicrcHJvaj11dG0gK3pvbmU9NDYgK3NvdXRoICtlbGxwcz1XR1M3MiArdG93Z3M4ND0wLDAsMS45LDAsMCwwLjgxNCwtMC4zOCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzI1NDdcIjonK3Byb2o9dXRtICt6b25lPTQ3ICtzb3V0aCArZWxscHM9V0dTNzIgK3Rvd2dzODQ9MCwwLDEuOSwwLDAsMC44MTQsLTAuMzggK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyNTQ4XCI6Jytwcm9qPXV0bSArem9uZT00OCArc291dGggK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCwxLjksMCwwLDAuODE0LC0wLjM4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjU0OVwiOicrcHJvaj11dG0gK3pvbmU9NDkgK3NvdXRoICtlbGxwcz1XR1M3MiArdG93Z3M4ND0wLDAsMS45LDAsMCwwLjgxNCwtMC4zOCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzI1NTBcIjonK3Byb2o9dXRtICt6b25lPTUwICtzb3V0aCArZWxscHM9V0dTNzIgK3Rvd2dzODQ9MCwwLDEuOSwwLDAsMC44MTQsLTAuMzggK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyNTUxXCI6Jytwcm9qPXV0bSArem9uZT01MSArc291dGggK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCwxLjksMCwwLDAuODE0LC0wLjM4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjU1MlwiOicrcHJvaj11dG0gK3pvbmU9NTIgK3NvdXRoICtlbGxwcz1XR1M3MiArdG93Z3M4ND0wLDAsMS45LDAsMCwwLjgxNCwtMC4zOCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzI1NTNcIjonK3Byb2o9dXRtICt6b25lPTUzICtzb3V0aCArZWxscHM9V0dTNzIgK3Rvd2dzODQ9MCwwLDEuOSwwLDAsMC44MTQsLTAuMzggK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyNTU0XCI6Jytwcm9qPXV0bSArem9uZT01NCArc291dGggK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCwxLjksMCwwLDAuODE0LC0wLjM4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjU1NVwiOicrcHJvaj11dG0gK3pvbmU9NTUgK3NvdXRoICtlbGxwcz1XR1M3MiArdG93Z3M4ND0wLDAsMS45LDAsMCwwLjgxNCwtMC4zOCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzI1NTZcIjonK3Byb2o9dXRtICt6b25lPTU2ICtzb3V0aCArZWxscHM9V0dTNzIgK3Rvd2dzODQ9MCwwLDEuOSwwLDAsMC44MTQsLTAuMzggK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyNTU3XCI6Jytwcm9qPXV0bSArem9uZT01NyArc291dGggK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCwxLjksMCwwLDAuODE0LC0wLjM4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjU1OFwiOicrcHJvaj11dG0gK3pvbmU9NTggK3NvdXRoICtlbGxwcz1XR1M3MiArdG93Z3M4ND0wLDAsMS45LDAsMCwwLjgxNCwtMC4zOCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzI1NTlcIjonK3Byb2o9dXRtICt6b25lPTU5ICtzb3V0aCArZWxscHM9V0dTNzIgK3Rvd2dzODQ9MCwwLDEuOSwwLDAsMC44MTQsLTAuMzggK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyNTYwXCI6Jytwcm9qPXV0bSArem9uZT02MCArc291dGggK2VsbHBzPVdHUzcyICt0b3dnczg0PTAsMCwxLjksMCwwLDAuODE0LC0wLjM4ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjYwMVwiOicrcHJvaj11dG0gK3pvbmU9MSArZGF0dW09V0dTODQgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyNjAyXCI6Jytwcm9qPXV0bSArem9uZT0yICtkYXR1bT1XR1M4NCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzI2MDNcIjonK3Byb2o9dXRtICt6b25lPTMgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjYwNFwiOicrcHJvaj11dG0gK3pvbmU9NCArZGF0dW09V0dTODQgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyNjA1XCI6Jytwcm9qPXV0bSArem9uZT01ICtkYXR1bT1XR1M4NCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzI2MDZcIjonK3Byb2o9dXRtICt6b25lPTYgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjYwN1wiOicrcHJvaj11dG0gK3pvbmU9NyArZGF0dW09V0dTODQgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyNjA4XCI6Jytwcm9qPXV0bSArem9uZT04ICtkYXR1bT1XR1M4NCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzI2MDlcIjonK3Byb2o9dXRtICt6b25lPTkgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjYxMFwiOicrcHJvaj11dG0gK3pvbmU9MTAgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjYxMVwiOicrcHJvaj11dG0gK3pvbmU9MTEgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjYxMlwiOicrcHJvaj11dG0gK3pvbmU9MTIgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjYxM1wiOicrcHJvaj11dG0gK3pvbmU9MTMgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjYxNFwiOicrcHJvaj11dG0gK3pvbmU9MTQgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjYxNVwiOicrcHJvaj11dG0gK3pvbmU9MTUgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjYxNlwiOicrcHJvaj11dG0gK3pvbmU9MTYgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjYxN1wiOicrcHJvaj11dG0gK3pvbmU9MTcgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjYxOFwiOicrcHJvaj11dG0gK3pvbmU9MTggK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjYxOVwiOicrcHJvaj11dG0gK3pvbmU9MTkgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjYyMFwiOicrcHJvaj11dG0gK3pvbmU9MjAgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjYyMVwiOicrcHJvaj11dG0gK3pvbmU9MjEgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjYyMlwiOicrcHJvaj11dG0gK3pvbmU9MjIgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjYyM1wiOicrcHJvaj11dG0gK3pvbmU9MjMgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjYyNFwiOicrcHJvaj11dG0gK3pvbmU9MjQgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjYyNVwiOicrcHJvaj11dG0gK3pvbmU9MjUgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjYyNlwiOicrcHJvaj11dG0gK3pvbmU9MjYgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjYyN1wiOicrcHJvaj11dG0gK3pvbmU9MjcgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjYyOFwiOicrcHJvaj11dG0gK3pvbmU9MjggK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjYyOVwiOicrcHJvaj11dG0gK3pvbmU9MjkgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjYzMFwiOicrcHJvaj11dG0gK3pvbmU9MzAgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjYzMVwiOicrcHJvaj11dG0gK3pvbmU9MzEgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjYzMlwiOicrcHJvaj11dG0gK3pvbmU9MzIgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjYzM1wiOicrcHJvaj11dG0gK3pvbmU9MzMgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjYzNFwiOicrcHJvaj11dG0gK3pvbmU9MzQgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjYzNVwiOicrcHJvaj11dG0gK3pvbmU9MzUgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjYzNlwiOicrcHJvaj11dG0gK3pvbmU9MzYgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjYzN1wiOicrcHJvaj11dG0gK3pvbmU9MzcgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjYzOFwiOicrcHJvaj11dG0gK3pvbmU9MzggK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjYzOVwiOicrcHJvaj11dG0gK3pvbmU9MzkgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjY0MFwiOicrcHJvaj11dG0gK3pvbmU9NDAgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjY0MVwiOicrcHJvaj11dG0gK3pvbmU9NDEgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjY0MlwiOicrcHJvaj11dG0gK3pvbmU9NDIgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjY0M1wiOicrcHJvaj11dG0gK3pvbmU9NDMgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjY0NFwiOicrcHJvaj11dG0gK3pvbmU9NDQgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjY0NVwiOicrcHJvaj11dG0gK3pvbmU9NDUgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjY0NlwiOicrcHJvaj11dG0gK3pvbmU9NDYgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjY0N1wiOicrcHJvaj11dG0gK3pvbmU9NDcgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjY0OFwiOicrcHJvaj11dG0gK3pvbmU9NDggK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjY0OVwiOicrcHJvaj11dG0gK3pvbmU9NDkgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjY1MFwiOicrcHJvaj11dG0gK3pvbmU9NTAgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjY1MVwiOicrcHJvaj11dG0gK3pvbmU9NTEgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjY1MlwiOicrcHJvaj11dG0gK3pvbmU9NTIgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjY1M1wiOicrcHJvaj11dG0gK3pvbmU9NTMgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjY1NFwiOicrcHJvaj11dG0gK3pvbmU9NTQgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjY1NVwiOicrcHJvaj11dG0gK3pvbmU9NTUgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjY1NlwiOicrcHJvaj11dG0gK3pvbmU9NTYgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjY1N1wiOicrcHJvaj11dG0gK3pvbmU9NTcgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjY1OFwiOicrcHJvaj11dG0gK3pvbmU9NTggK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjY1OVwiOicrcHJvaj11dG0gK3pvbmU9NTkgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjY2MFwiOicrcHJvaj11dG0gK3pvbmU9NjAgK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjY2MVwiOicrcHJvaj1zdGVyZSArbGF0XzA9OTAgK2xhdF90cz05MCArbG9uXzA9MCAraz0wLjk5NCAreF8wPTIwMDAwMDAgK3lfMD0yMDAwMDAwICtkYXR1bT1XR1M4NCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzI2NjJcIjonK3Byb2o9ZXFjICtsYXRfdHM9MCArbGF0XzA9MCArbG9uXzA9MCAreF8wPTAgK3lfMD0wICtkYXR1bT1XR1M4NCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzI2NjNcIjonK3Byb2o9ZXFjICtsYXRfdHM9MCArbGF0XzA9MCArbG9uXzA9MCAreF8wPTAgK3lfMD0wICtlbGxwcz1XR1M4NCArdG93Z3M4ND0wLDAsMCwwLDAsMCwwICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjY2NFwiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9LTk5ICtrPTAuOTk5NiAreF8wPTUwMDAwMC4wMDEwMTYwMDIgK3lfMD0wICtkYXR1bT1XR1M4NCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyNjY1XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0tOTMgK2s9MC45OTk2ICt4XzA9NTAwMDAwLjAwMTAxNjAwMiAreV8wPTAgK2RhdHVtPVdHUzg0ICt1bml0cz11cy1mdCArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzI2NjZcIjonK3Byb2o9dG1lcmMgK2xhdF8wPTAgK2xvbl8wPS04NyAraz0wLjk5OTYgK3hfMD01MDAwMDAuMDAxMDE2MDAyICt5XzA9MCArZGF0dW09V0dTODQgK3VuaXRzPXVzLWZ0ICtub19kZWZzICcsXG4gIFwiRVBTRzozMjY2N1wiOicrcHJvaj10bWVyYyArbGF0XzA9MCArbG9uXzA9LTgxICtrPTAuOTk5NiAreF8wPTUwMDAwMC4wMDEwMTYwMDIgK3lfMD0wICtkYXR1bT1XR1M4NCArdW5pdHM9dXMtZnQgK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyNzAxXCI6Jytwcm9qPXV0bSArem9uZT0xICtzb3V0aCArZGF0dW09V0dTODQgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyNzAyXCI6Jytwcm9qPXV0bSArem9uZT0yICtzb3V0aCArZGF0dW09V0dTODQgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyNzAzXCI6Jytwcm9qPXV0bSArem9uZT0zICtzb3V0aCArZGF0dW09V0dTODQgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyNzA0XCI6Jytwcm9qPXV0bSArem9uZT00ICtzb3V0aCArZGF0dW09V0dTODQgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyNzA1XCI6Jytwcm9qPXV0bSArem9uZT01ICtzb3V0aCArZGF0dW09V0dTODQgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyNzA2XCI6Jytwcm9qPXV0bSArem9uZT02ICtzb3V0aCArZGF0dW09V0dTODQgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyNzA3XCI6Jytwcm9qPXV0bSArem9uZT03ICtzb3V0aCArZGF0dW09V0dTODQgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyNzA4XCI6Jytwcm9qPXV0bSArem9uZT04ICtzb3V0aCArZGF0dW09V0dTODQgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyNzA5XCI6Jytwcm9qPXV0bSArem9uZT05ICtzb3V0aCArZGF0dW09V0dTODQgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyNzEwXCI6Jytwcm9qPXV0bSArem9uZT0xMCArc291dGggK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjcxMVwiOicrcHJvaj11dG0gK3pvbmU9MTEgK3NvdXRoICtkYXR1bT1XR1M4NCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzI3MTJcIjonK3Byb2o9dXRtICt6b25lPTEyICtzb3V0aCArZGF0dW09V0dTODQgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyNzEzXCI6Jytwcm9qPXV0bSArem9uZT0xMyArc291dGggK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjcxNFwiOicrcHJvaj11dG0gK3pvbmU9MTQgK3NvdXRoICtkYXR1bT1XR1M4NCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzI3MTVcIjonK3Byb2o9dXRtICt6b25lPTE1ICtzb3V0aCArZGF0dW09V0dTODQgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyNzE2XCI6Jytwcm9qPXV0bSArem9uZT0xNiArc291dGggK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjcxN1wiOicrcHJvaj11dG0gK3pvbmU9MTcgK3NvdXRoICtkYXR1bT1XR1M4NCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzI3MThcIjonK3Byb2o9dXRtICt6b25lPTE4ICtzb3V0aCArZGF0dW09V0dTODQgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyNzE5XCI6Jytwcm9qPXV0bSArem9uZT0xOSArc291dGggK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjcyMFwiOicrcHJvaj11dG0gK3pvbmU9MjAgK3NvdXRoICtkYXR1bT1XR1M4NCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzI3MjFcIjonK3Byb2o9dXRtICt6b25lPTIxICtzb3V0aCArZGF0dW09V0dTODQgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyNzIyXCI6Jytwcm9qPXV0bSArem9uZT0yMiArc291dGggK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjcyM1wiOicrcHJvaj11dG0gK3pvbmU9MjMgK3NvdXRoICtkYXR1bT1XR1M4NCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzI3MjRcIjonK3Byb2o9dXRtICt6b25lPTI0ICtzb3V0aCArZGF0dW09V0dTODQgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyNzI1XCI6Jytwcm9qPXV0bSArem9uZT0yNSArc291dGggK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjcyNlwiOicrcHJvaj11dG0gK3pvbmU9MjYgK3NvdXRoICtkYXR1bT1XR1M4NCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzI3MjdcIjonK3Byb2o9dXRtICt6b25lPTI3ICtzb3V0aCArZGF0dW09V0dTODQgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyNzI4XCI6Jytwcm9qPXV0bSArem9uZT0yOCArc291dGggK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjcyOVwiOicrcHJvaj11dG0gK3pvbmU9MjkgK3NvdXRoICtkYXR1bT1XR1M4NCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzI3MzBcIjonK3Byb2o9dXRtICt6b25lPTMwICtzb3V0aCArZGF0dW09V0dTODQgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyNzMxXCI6Jytwcm9qPXV0bSArem9uZT0zMSArc291dGggK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjczMlwiOicrcHJvaj11dG0gK3pvbmU9MzIgK3NvdXRoICtkYXR1bT1XR1M4NCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzI3MzNcIjonK3Byb2o9dXRtICt6b25lPTMzICtzb3V0aCArZGF0dW09V0dTODQgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyNzM0XCI6Jytwcm9qPXV0bSArem9uZT0zNCArc291dGggK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjczNVwiOicrcHJvaj11dG0gK3pvbmU9MzUgK3NvdXRoICtkYXR1bT1XR1M4NCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzI3MzZcIjonK3Byb2o9dXRtICt6b25lPTM2ICtzb3V0aCArZGF0dW09V0dTODQgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyNzM3XCI6Jytwcm9qPXV0bSArem9uZT0zNyArc291dGggK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjczOFwiOicrcHJvaj11dG0gK3pvbmU9MzggK3NvdXRoICtkYXR1bT1XR1M4NCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzI3MzlcIjonK3Byb2o9dXRtICt6b25lPTM5ICtzb3V0aCArZGF0dW09V0dTODQgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyNzQwXCI6Jytwcm9qPXV0bSArem9uZT00MCArc291dGggK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjc0MVwiOicrcHJvaj11dG0gK3pvbmU9NDEgK3NvdXRoICtkYXR1bT1XR1M4NCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzI3NDJcIjonK3Byb2o9dXRtICt6b25lPTQyICtzb3V0aCArZGF0dW09V0dTODQgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyNzQzXCI6Jytwcm9qPXV0bSArem9uZT00MyArc291dGggK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjc0NFwiOicrcHJvaj11dG0gK3pvbmU9NDQgK3NvdXRoICtkYXR1bT1XR1M4NCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzI3NDVcIjonK3Byb2o9dXRtICt6b25lPTQ1ICtzb3V0aCArZGF0dW09V0dTODQgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyNzQ2XCI6Jytwcm9qPXV0bSArem9uZT00NiArc291dGggK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjc0N1wiOicrcHJvaj11dG0gK3pvbmU9NDcgK3NvdXRoICtkYXR1bT1XR1M4NCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzI3NDhcIjonK3Byb2o9dXRtICt6b25lPTQ4ICtzb3V0aCArZGF0dW09V0dTODQgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyNzQ5XCI6Jytwcm9qPXV0bSArem9uZT00OSArc291dGggK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjc1MFwiOicrcHJvaj11dG0gK3pvbmU9NTAgK3NvdXRoICtkYXR1bT1XR1M4NCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzI3NTFcIjonK3Byb2o9dXRtICt6b25lPTUxICtzb3V0aCArZGF0dW09V0dTODQgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyNzUyXCI6Jytwcm9qPXV0bSArem9uZT01MiArc291dGggK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjc1M1wiOicrcHJvaj11dG0gK3pvbmU9NTMgK3NvdXRoICtkYXR1bT1XR1M4NCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzI3NTRcIjonK3Byb2o9dXRtICt6b25lPTU0ICtzb3V0aCArZGF0dW09V0dTODQgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyNzU1XCI6Jytwcm9qPXV0bSArem9uZT01NSArc291dGggK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjc1NlwiOicrcHJvaj11dG0gK3pvbmU9NTYgK3NvdXRoICtkYXR1bT1XR1M4NCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzI3NTdcIjonK3Byb2o9dXRtICt6b25lPTU3ICtzb3V0aCArZGF0dW09V0dTODQgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyNzU4XCI6Jytwcm9qPXV0bSArem9uZT01OCArc291dGggK2RhdHVtPVdHUzg0ICt1bml0cz1tICtub19kZWZzICcsXG4gIFwiRVBTRzozMjc1OVwiOicrcHJvaj11dG0gK3pvbmU9NTkgK3NvdXRoICtkYXR1bT1XR1M4NCArdW5pdHM9bSArbm9fZGVmcyAnLFxuICBcIkVQU0c6MzI3NjBcIjonK3Byb2o9dXRtICt6b25lPTYwICtzb3V0aCArZGF0dW09V0dTODQgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyNzYxXCI6Jytwcm9qPXN0ZXJlICtsYXRfMD0tOTAgK2xhdF90cz0tOTAgK2xvbl8wPTAgK2s9MC45OTQgK3hfMD0yMDAwMDAwICt5XzA9MjAwMDAwMCArZGF0dW09V0dTODQgK3VuaXRzPW0gK25vX2RlZnMgJyxcbiAgXCJFUFNHOjMyNzY2XCI6Jytwcm9qPXRtZXJjICtsYXRfMD0wICtsb25fMD0zNiAraz0wLjk5OTYgK3hfMD01MDAwMDAgK3lfMD0xMDAwMDAwMCArZGF0dW09V0dTODQgK3VuaXRzPW0gK25vX2RlZnMgJ1xufTtcbiIsInZhciB1dGlsID0gcmVxdWlyZSgndXRpbCcpXG4gICwgYXN5bmMgPSByZXF1aXJlKCdhc3luYycpXG4gICwgZmlsZVR5cGUgPSByZXF1aXJlKCdmaWxlLXR5cGUnKVxuICAsIHdvcmsgPSByZXF1aXJlKCd3ZWJ3b3JraWZ5Jyk7XG5cbnZhciBUaWxlQ3JlYXRvciA9IHJlcXVpcmUoJy4vaW5kZXgnKS5UaWxlQ3JlYXRvclxuICAsIFRpbGVCb3VuZGluZ0JveFV0aWxzID0gcmVxdWlyZSgnLi4vdGlsZUJvdW5kaW5nQm94VXRpbHMnKVxuICAsIFRpbGVVdGlsaXRpZXMgPSByZXF1aXJlKCcuL3RpbGVVdGlsaXRpZXMnKTtcblxuZnVuY3Rpb24gQ2FudmFzVGlsZUNyZWF0b3Iod2lkdGgsIGhlaWdodCwgdGlsZU1hdHJpeCwgdGlsZU1hdHJpeFNldCwgdGlsZUJvdW5kaW5nQm94LCBzcnMsIHByb2plY3Rpb25UbywgY2FudmFzLCBjYWxsYmFjaykge1xuICBUaWxlQ3JlYXRvci5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICB0aGlzLmNhbnZhcyA9IGNhbnZhcyB8fCBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcbiAgdGhpcy5jYW52YXMud2lkdGggID0gd2lkdGg7XG4gIHRoaXMuY2FudmFzLmhlaWdodCA9IGhlaWdodDtcbiAgdGhpcy5jdHggPSB0aGlzLmNhbnZhcy5nZXRDb250ZXh0KCcyZCcpO1xuXG4gIHRoaXMuaW1hZ2UgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbWcnKTtcblxuICB0aGlzLnRpbGVDYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcbiAgdGhpcy50aWxlQ29udGV4dCA9IHRoaXMudGlsZUNhbnZhcy5nZXRDb250ZXh0KCcyZCcpO1xuICB0aGlzLnRpbGVDYW52YXMud2lkdGggPSB0aWxlTWF0cml4LnRpbGVfd2lkdGg7XG4gIHRoaXMudGlsZUNhbnZhcy5oZWlnaHQgPSB0aWxlTWF0cml4LnRpbGVfaGVpZ2h0O1xuXG4gIHRoaXMuaW1hZ2VEYXRhID0gbmV3IFVpbnQ4Q2xhbXBlZEFycmF5KHdpZHRoICogaGVpZ2h0ICogNCk7XG5cbiAgY2FsbGJhY2sobnVsbCwgdGhpcyk7XG59XG5cbnV0aWwuaW5oZXJpdHMoQ2FudmFzVGlsZUNyZWF0b3IsIFRpbGVDcmVhdG9yKTtcblxuQ2FudmFzVGlsZUNyZWF0b3IucHJvdG90eXBlLmFkZFBpeGVsID0gZnVuY3Rpb24gKHRhcmdldFgsIHRhcmdldFksIHNvdXJjZVgsIHNvdXJjZVkpIHtcbiAgdmFyIGNvbG9yID0gdGhpcy50aWxlQ29udGV4dC5nZXRJbWFnZURhdGEoc291cmNlWCwgc291cmNlWSwgMSwgMSk7XG4gIHRoaXMuaW1hZ2VEYXRhLnNldChjb2xvci5kYXRhLCAodGFyZ2V0WSAqIHRoaXMud2lkdGggKiA0KSArICh0YXJnZXRYICogNCkpO1xufTtcblxuQ2FudmFzVGlsZUNyZWF0b3IucHJvdG90eXBlLmFkZFRpbGUgPSBmdW5jdGlvbiAodGlsZURhdGEsIGdyaWRDb2x1bW4sIGdyaWRSb3csIGNhbGxiYWNrKSB7XG4gIHZhciBiYiA9IFRpbGVCb3VuZGluZ0JveFV0aWxzLmdldFRpbGVCb3VuZGluZ0JveCh0aGlzLnRpbGVNYXRyaXhTZXQuZ2V0Qm91bmRpbmdCb3goKSwgdGhpcy50aWxlTWF0cml4LCBncmlkQ29sdW1uLCBncmlkUm93KTtcblxuICB2YXIgdHlwZSA9IGZpbGVUeXBlKHRpbGVEYXRhKTtcbiAgdmFyIGJpbmFyeSA9ICcnO1xuICB2YXIgYnl0ZXMgPSB0aWxlRGF0YTtcbiAgdmFyIGxlbiA9IGJ5dGVzLmJ5dGVMZW5ndGg7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICBiaW5hcnkgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSggYnl0ZXNbIGkgXSApO1xuICB9XG4gIHZhciBiYXNlNjREYXRhID0gYnRvYSggYmluYXJ5ICk7XG4gIHRoaXMuaW1hZ2Uub25sb2FkID0gZnVuY3Rpb24oKSB7XG4gICAgYXN5bmMuc2V0SW1tZWRpYXRlKGZ1bmN0aW9uKCkge1xuICAgICAgdGhpcy50aWxlQ29udGV4dC5kcmF3SW1hZ2UodGhpcy5pbWFnZSwgMCwgMCk7XG4gICAgICB0aGlzLnByb2plY3RUaWxlKHRpbGVEYXRhLCBncmlkQ29sdW1uLCBncmlkUm93LCBmdW5jdGlvbihlcnIsIGltYWdlRGF0YSkge1xuICAgICAgICBhc3luYy5lYWNoU2VyaWVzKHRoaXMuY2h1bmtzLCBmdW5jdGlvbihjaHVuaywgY2h1bmtEb25lKSB7XG4gICAgICAgICAgYXN5bmMuc2V0SW1tZWRpYXRlKGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdmFyIHR5cGUgPSBmaWxlVHlwZSh0aWxlRGF0YSk7XG5cbiAgICAgICAgICAgIHZhciBiaW5hcnkgPSAnJztcbiAgICAgICAgICAgIHZhciBieXRlcyA9IGNodW5rLmNodW5rO1xuICAgICAgICAgICAgdmFyIGxlbiA9IGJ5dGVzLmJ5dGVMZW5ndGg7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgICAgICAgIGJpbmFyeSArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKCBieXRlc1sgaSBdICk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHZhciBiYXNlNjREYXRhQ2h1bmsgPSBidG9hKCBiaW5hcnkgKTtcbiAgICAgICAgICAgIHZhciBpbWFnZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2ltZycpO1xuICAgICAgICAgICAgaW1hZ2Uub25sb2FkID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgIHZhciBwID0gY2h1bmsucG9zaXRpb247XG5cbiAgICAgICAgICAgICAgdmFyIHhQb3NpdGlvbk9mSW1hZ2VUb0RyYXdGcm9tID0gcC50aWxlQ3JvcFhTdGFydDtcbiAgICAgICAgICAgICAgdmFyIHlQb3NpdGlvbk9mSW1hZ2VUb0RyYXdGcm9tID0gcC50aWxlQ3JvcFlTdGFydDtcbiAgICAgICAgICAgICAgdmFyIHdpZHRoT2ZJbWFnZVRvRHJhdyA9IDEgKyBwLnRpbGVDcm9wWEVuZCAtIHAudGlsZUNyb3BYU3RhcnQ7XG4gICAgICAgICAgICAgIHZhciBoZWlnaHRPZkltYWdlVG9EcmF3ID0gMSArIHAudGlsZUNyb3BZRW5kIC0gcC50aWxlQ3JvcFlTdGFydDtcbiAgICAgICAgICAgICAgdmFyIHhQb3NpdGlvblRvUGxhY2VJbWFnZUluQ2FudmFzID0gcC54UG9zaXRpb25JbkZpbmFsVGlsZVN0YXJ0O1xuICAgICAgICAgICAgICB2YXIgeVBvc2l0aW9uVG9QbGFjZUltYWdlSW5DYW52YXMgPSBwLnlQb3NpdGlvbkluRmluYWxUaWxlU3RhcnQ7XG4gICAgICAgICAgICAgIHZhciBpbWFnZVdpZHRoID0gcC54UG9zaXRpb25JbkZpbmFsVGlsZUVuZCAtIHAueFBvc2l0aW9uSW5GaW5hbFRpbGVTdGFydDtcbiAgICAgICAgICAgICAgdmFyIGltYWdlSGVpZ2h0ID0gcC55UG9zaXRpb25JbkZpbmFsVGlsZUVuZCAtIHAueVBvc2l0aW9uSW5GaW5hbFRpbGVTdGFydDtcblxuICAgICAgICAgICAgICB0aGlzLmN0eC5kcmF3SW1hZ2UoaW1hZ2UsXG4gICAgICAgICAgICAgICAgeFBvc2l0aW9uT2ZJbWFnZVRvRHJhd0Zyb20sXG4gICAgICAgICAgICAgICAgeVBvc2l0aW9uT2ZJbWFnZVRvRHJhd0Zyb20sXG4gICAgICAgICAgICAgICAgd2lkdGhPZkltYWdlVG9EcmF3LFxuICAgICAgICAgICAgICAgIGhlaWdodE9mSW1hZ2VUb0RyYXcsXG4gICAgICAgICAgICAgICAgeFBvc2l0aW9uVG9QbGFjZUltYWdlSW5DYW52YXMsXG4gICAgICAgICAgICAgICAgeVBvc2l0aW9uVG9QbGFjZUltYWdlSW5DYW52YXMsXG4gICAgICAgICAgICAgICAgaW1hZ2VXaWR0aCxcbiAgICAgICAgICAgICAgICBpbWFnZUhlaWdodFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICBjaHVua0RvbmUoKTtcbiAgICAgICAgICAgIH0uYmluZCh0aGlzKTtcbiAgICAgICAgICAgIGltYWdlLnNyYyA9ICdkYXRhOicrdHlwZS5taW1lKyc7YmFzZTY0LCcgKyBiYXNlNjREYXRhQ2h1bms7XG4gICAgICAgICAgfS5iaW5kKHRoaXMpKTtcbiAgICAgICAgfS5iaW5kKHRoaXMpLCBjYWxsYmFjayk7XG4gICAgICB9LmJpbmQodGhpcykpO1xuICAgIH0uYmluZCh0aGlzKSk7XG4gIH0uYmluZCh0aGlzKTtcbiAgdGhpcy5pbWFnZS5zcmMgPSAnZGF0YTonK3R5cGUubWltZSsnO2Jhc2U2NCwnICsgYmFzZTY0RGF0YTtcbn07XG5cbkNhbnZhc1RpbGVDcmVhdG9yLnByb3RvdHlwZS5nZXRDb21wbGV0ZVRpbGUgPSBmdW5jdGlvbiAoZm9ybWF0LCBjYWxsYmFjaykge1xuICBjYWxsYmFjayhudWxsLCB0aGlzLmNhbnZhcy50b0RhdGFVUkwoKSk7XG59O1xuXG5DYW52YXNUaWxlQ3JlYXRvci5wcm90b3R5cGUucmVwcm9qZWN0ID0gZnVuY3Rpb24gKHRpbGVEYXRhLCB0aWxlUGllY2VCb3VuZGluZ0JveCwgY2FsbGJhY2spIHtcbiAgdmFyIGN0eCA9IHRoaXMuY3R4O1xuICB2YXIgd2lkdGggPSB0aGlzLndpZHRoO1xuICB2YXIgaGVpZ2h0ID0gdGhpcy5oZWlnaHQ7XG4gIHZhciBjYiA9IGNhbGxiYWNrO1xuXG4gIHZhciBwaWVjZVBvc2l0aW9uID0gVGlsZVV0aWxpdGllcy5nZXRQaWVjZVBvc2l0aW9uKHRpbGVQaWVjZUJvdW5kaW5nQm94LCB0aGlzLnRpbGVCb3VuZGluZ0JveCwgdGhpcy5oZWlnaHQsIHRoaXMud2lkdGgsIHRoaXMucHJvamVjdGlvblRvLCB0aGlzLnByb2plY3Rpb25Gcm9tLCB0aGlzLnByb2plY3Rpb25Gcm9tRGVmaW5pdGlvbiwgdGhpcy50aWxlSGVpZ2h0VW5pdHNQZXJQaXhlbCwgdGhpcy50aWxlV2lkdGhVbml0c1BlclBpeGVsLCB0aGlzLnRpbGVNYXRyaXgucGl4ZWxfeF9zaXplLCB0aGlzLnRpbGVNYXRyaXgucGl4ZWxfeV9zaXplKTtcblxuICB2YXIgd29ya2VyID0gd29yayhyZXF1aXJlKCcuL3RpbGVXb3JrZXIuanMnKSk7XG5cbiAgd29ya2VyLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGUpIHtcbiAgICBpZiAoZS5kYXRhLm1lc3NhZ2UgPT09ICdkb25lJykge1xuICAgICAgdmFyIGltYWdlRGF0YSA9IG5ldyBVaW50OENsYW1wZWRBcnJheShlLmRhdGEuaW1hZ2VEYXRhKTtcbiAgICAgIHZhciBvZmZzZXRYID0gcGllY2VQb3NpdGlvbi5zdGFydFg7XG4gICAgICB2YXIgb2Zmc2V0WSA9IHBpZWNlUG9zaXRpb24uc3RhcnRZO1xuICAgICAgdmFyIGZpbmFsV2lkdGggPSBlLmRhdGEuZmluYWxXaWR0aDtcbiAgICAgIHZhciBmaW5hbEhlaWdodCA9IGUuZGF0YS5maW5hbEhlaWdodDtcblxuICAgICAgdmFyIHRtcENhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xuICAgICAgdG1wQ2FudmFzLndpZHRoID0gZmluYWxXaWR0aDtcbiAgICAgIHRtcENhbnZhcy5oZWlnaHQgPSBmaW5hbEhlaWdodDtcbiAgICAgIHRtcENhbnZhcy5nZXRDb250ZXh0KCcyZCcpLnB1dEltYWdlRGF0YShuZXcgSW1hZ2VEYXRhKGltYWdlRGF0YSwgZmluYWxXaWR0aCwgZmluYWxIZWlnaHQpLCAwLCAwKTtcblxuICAgICAgY3R4LmRyYXdJbWFnZSh0bXBDYW52YXMsIG9mZnNldFgsIG9mZnNldFkpO1xuICAgICAgY2IoKTtcbiAgICB9IGVsc2UgaWYgKGUuZGF0YS5tZXNzYWdlID09PSAnZG9uZW5vZGF0YScpIHtcbiAgICAgIGNiKCk7XG4gICAgfVxuICB9O1xuXG4gIHdvcmtlci5wb3N0TWVzc2FnZSh7XG4gICAgdGlsZUJvdW5kaW5nQm94OiBKU09OLnN0cmluZ2lmeSh0aGlzLnRpbGVCb3VuZGluZ0JveCksXG4gICAgdGlsZVdpZHRoVW5pdHNQZXJQaXhlbDogdGhpcy50aWxlV2lkdGhVbml0c1BlclBpeGVsLFxuICAgIHRpbGVIZWlnaHRVbml0c1BlclBpeGVsOiB0aGlzLnRpbGVIZWlnaHRVbml0c1BlclBpeGVsLFxuICAgIHByb2plY3Rpb25UbzogdGhpcy5wcm9qZWN0aW9uVG8sXG4gICAgcHJvamVjdGlvbkZyb206IHRoaXMucHJvamVjdGlvbkZyb20sXG4gICAgcHJvamVjdGlvbkZyb21EZWZpbml0aW9uOiB0aGlzLnByb2plY3Rpb25Gcm9tRGVmaW5pdGlvbixcbiAgICB0aWxlV2lkdGg6IHRoaXMudGlsZU1hdHJpeC50aWxlX3dpZHRoLFxuICAgIHRpbGVIZWlnaHQ6IHRoaXMudGlsZU1hdHJpeC50aWxlX2hlaWdodCxcbiAgICBwaXhlbFlTaXplOiB0aGlzLnRpbGVNYXRyaXgucGl4ZWxfeV9zaXplLFxuICAgIHBpeGVsWFNpemU6IHRoaXMudGlsZU1hdHJpeC5waXhlbF94X3NpemUsXG4gICAgaGVpZ2h0OiB0aGlzLmhlaWdodCxcbiAgICB3aWR0aDogdGhpcy53aWR0aCxcbiAgICB0aWxlUGllY2VCb3VuZGluZ0JveDogSlNPTi5zdHJpbmdpZnkodGlsZVBpZWNlQm91bmRpbmdCb3gpLFxuICAgIGltYWdlRGF0YTogdGhpcy50aWxlQ29udGV4dC5nZXRJbWFnZURhdGEoMCwgMCwgdGhpcy50aWxlTWF0cml4LnRpbGVfd2lkdGgsIHRoaXMudGlsZU1hdHJpeC50aWxlX2hlaWdodCkuZGF0YS5idWZmZXJcbiAgfSwgW3RoaXMudGlsZUNvbnRleHQuZ2V0SW1hZ2VEYXRhKDAsIDAsIHRoaXMudGlsZU1hdHJpeC50aWxlX3dpZHRoLCB0aGlzLnRpbGVNYXRyaXgudGlsZV9oZWlnaHQpLmRhdGEuYnVmZmVyXSk7XG5cbn07XG5cblxubW9kdWxlLmV4cG9ydHMgPSBDYW52YXNUaWxlQ3JlYXRvcjtcbiIsInZhciBwcm9qNCA9IHJlcXVpcmUoJ3Byb2o0JylcbiAgLCBhc3luYyA9IHJlcXVpcmUoJ2FzeW5jJyk7XG5cbnZhciBUaWxlQm91bmRpbmdCb3hVdGlscyA9IHJlcXVpcmUoJy4uL3RpbGVCb3VuZGluZ0JveFV0aWxzJyk7XG5cbm1vZHVsZS5leHBvcnRzLmluaXRpYWxpemUgPSBmdW5jdGlvbih3aWR0aCwgaGVpZ2h0LCB0aWxlTWF0cml4LCB0aWxlTWF0cml4U2V0LCB0aWxlQm91bmRpbmdCb3gsIHNycywgcHJvamVjdGlvblRvLCBjYW52YXMsIGNhbGxiYWNrKSB7XG4gIHZhciBpc1BoYW50b20gPSAhISh0eXBlb2Ygd2luZG93ICE9ICd1bmRlZmluZWQnICYmIHdpbmRvdy5jYWxsUGhhbnRvbSAmJiB3aW5kb3cuX3BoYW50b20pO1xuICB2YXIgaXNOb2RlID0gdHlwZW9mKHByb2Nlc3MpICE9PSAndW5kZWZpbmVkJyAmJiBwcm9jZXNzLnZlcnNpb247XG4gIGlmIChpc05vZGUgJiYgIWlzUGhhbnRvbSkge1xuICAgIHZhciBMd2lwVGlsZUNyZWF0b3IgPSByZXF1aXJlKCcuL2x3aXAnKTtcbiAgICBuZXcgTHdpcFRpbGVDcmVhdG9yKHdpZHRoLCBoZWlnaHQsIHRpbGVNYXRyaXgsIHRpbGVNYXRyaXhTZXQsIHRpbGVCb3VuZGluZ0JveCwgc3JzLCBwcm9qZWN0aW9uVG8sIGNhbGxiYWNrKTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgQ2FudmFzVGlsZUNyZWF0b3IgPSByZXF1aXJlKCcuL2NhbnZhcycpO1xuICAgIG5ldyBDYW52YXNUaWxlQ3JlYXRvcih3aWR0aCwgaGVpZ2h0LCB0aWxlTWF0cml4LCB0aWxlTWF0cml4U2V0LCB0aWxlQm91bmRpbmdCb3gsIHNycywgcHJvamVjdGlvblRvLCBjYW52YXMsIGNhbGxiYWNrKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBUaWxlQ3JlYXRvcih3aWR0aCwgaGVpZ2h0LCB0aWxlTWF0cml4LCB0aWxlTWF0cml4U2V0LCB0aWxlQm91bmRpbmdCb3gsIHNycywgcHJvamVjdGlvblRvLCBjYWxsYmFjaykge1xuICB0aGlzLndpZHRoID0gd2lkdGg7XG4gIHRoaXMuaGVpZ2h0ID0gaGVpZ2h0O1xuICB0aGlzLnRpbGVNYXRyaXggPSB0aWxlTWF0cml4O1xuICB0aGlzLnByb2plY3Rpb25Gcm9tID0gc3JzLm9yZ2FuaXphdGlvbi50b1VwcGVyQ2FzZSgpICsgJzonICsgc3JzLm9yZ2FuaXphdGlvbl9jb29yZHN5c19pZDtcbiAgdGhpcy5wcm9qZWN0aW9uRnJvbURlZmluaXRpb24gPSBzcnMuZGVmaW5pdGlvbjtcbiAgdGhpcy5wcm9qZWN0aW9uVG8gPSBwcm9qZWN0aW9uVG8udG9VcHBlckNhc2UoKTtcbiAgdGhpcy50aWxlQm91bmRpbmdCb3ggPSB0aWxlQm91bmRpbmdCb3g7XG4gIHRoaXMudGlsZU1hdHJpeFNldCA9IHRpbGVNYXRyaXhTZXQ7XG4gIHRoaXMuY2h1bmtzID0gW107XG5cbiAgdGhpcy50aWxlSGVpZ2h0VW5pdHNQZXJQaXhlbCA9ICh0aWxlQm91bmRpbmdCb3gubWF4TGF0aXR1ZGUgLSB0aWxlQm91bmRpbmdCb3gubWluTGF0aXR1ZGUpIC8gaGVpZ2h0O1xuICB0aGlzLnRpbGVXaWR0aFVuaXRzUGVyUGl4ZWwgPSAodGlsZUJvdW5kaW5nQm94Lm1heExvbmdpdHVkZSAtIHRpbGVCb3VuZGluZ0JveC5taW5Mb25naXR1ZGUpIC8gd2lkdGg7XG5cbiAgLy8gdXNlIHRoaXMgYXMgYSBxdWljayBjaGVjayBpZiB0aGUgcHJvamVjdGlvbnMgYXJlIGVxdWFsLiAgSWYgdGhleSBhcmUgd2UgY2FuIHNob3J0Y3V0IHNvbWUgbWF0aFxuICAvLyBzcGVjaWFsIGNhc2VzICdFUFNHOjkwMDkxMycgPT0nRVBTRzozODU3JyA9PSAnRVBTRzoxMDIxMTMnXG4gIHRoaXMuc2FtZVByb2plY3Rpb24gPSAodGhpcy5wcm9qZWN0aW9uRnJvbSA9PT0gdGhpcy5wcm9qZWN0aW9uVG8pIHx8ICh0aGlzLnByb2plY3Rpb25UbyA9PT0gJ0VQU0c6Mzg1NycgJiYgKHRoaXMucHJvamVjdGlvbkZyb20gPT09ICdFUFNHOjkwMDkxMycgfHwgdGhpcy5wcm9qZWN0aW9uRnJvbSA9PT0gJ0VQU0c6MTAyMTEzJykpO1xufVxuXG5tb2R1bGUuZXhwb3J0cy5UaWxlQ3JlYXRvciA9IFRpbGVDcmVhdG9yO1xuXG5UaWxlQ3JlYXRvci5wcm90b3R5cGUucHJvamVjdFRpbGUgPSBmdW5jdGlvbih0aWxlRGF0YSwgZ3JpZENvbHVtbiwgZ3JpZFJvdywgY2FsbGJhY2spIHtcbiAgdmFyIGJiID0gVGlsZUJvdW5kaW5nQm94VXRpbHMuZ2V0VGlsZUJvdW5kaW5nQm94KHRoaXMudGlsZU1hdHJpeFNldC5nZXRCb3VuZGluZ0JveCgpLCB0aGlzLnRpbGVNYXRyaXgsIGdyaWRDb2x1bW4sIGdyaWRSb3cpO1xuXG4gIGlmICghdGhpcy5zYW1lUHJvamVjdGlvbikge1xuICAgIHRoaXMucmVwcm9qZWN0KHRpbGVEYXRhLCBiYiwgY2FsbGJhY2spO1xuICB9IGVsc2Uge1xuICAgIHRoaXMuY3V0QW5kU2NhbGUodGlsZURhdGEsIGJiLCBjYWxsYmFjayk7XG4gIH1cbn1cblxuVGlsZUNyZWF0b3IucHJvdG90eXBlLmN1dEFuZFNjYWxlID0gZnVuY3Rpb24gKHRpbGVEYXRhLCB0aWxlUGllY2VCb3VuZGluZ0JveCwgY2FsbGJhY2spIHtcblxuICB2YXIgcG9zaXRpb24gPSBUaWxlQm91bmRpbmdCb3hVdGlscy5kZXRlcm1pbmVQb3NpdGlvbkFuZFNjYWxlKHRpbGVQaWVjZUJvdW5kaW5nQm94LCB0aGlzLnRpbGVNYXRyaXgudGlsZV9oZWlnaHQsIHRoaXMudGlsZU1hdHJpeC50aWxlX3dpZHRoLCB0aGlzLnRpbGVCb3VuZGluZ0JveCwgdGhpcy5oZWlnaHQsIHRoaXMud2lkdGgpO1xuXG4gIGlmIChwb3NpdGlvbi54UG9zaXRpb25JbkZpbmFsVGlsZVN0YXJ0ID49IHRoaXMud2lkdGggfHwgcG9zaXRpb24ueFBvc2l0aW9uSW5GaW5hbFRpbGVFbmQgPD0gMCB8fCBwb3NpdGlvbi55UG9zaXRpb25JbkZpbmFsVGlsZVN0YXJ0ID49IHRoaXMuaGVpZ2h0IHx8IHBvc2l0aW9uLnlQb3NpdGlvbkluRmluYWxUaWxlRW5kIDw9IDApIHtcbiAgICAvLyB0aGlzIHRpbGUgZG9lc24ndCBiZWxvbmcganVzdCBza2lwIGl0XG4gICAgY2FsbGJhY2soKTtcbiAgfSBlbHNlIHtcbiAgICB0aGlzLmFkZENodW5rKHRpbGVEYXRhLCBwb3NpdGlvbik7XG4gICAgY2FsbGJhY2soKTtcbiAgfVxufTtcblxuVGlsZUNyZWF0b3IucHJvdG90eXBlLmFkZENodW5rID0gZnVuY3Rpb24gKGNodW5rLCBwb3NpdGlvbikge1xuICB0aGlzLmNodW5rcy5wdXNoKHtcbiAgICBjaHVuazogY2h1bmssXG4gICAgcG9zaXRpb246IHBvc2l0aW9uXG4gIH0pO1xufTtcblxuVGlsZUNyZWF0b3IucHJvdG90eXBlLnJlcHJvamVjdCA9IGZ1bmN0aW9uICh0aWxlRGF0YSwgdGlsZVBpZWNlQm91bmRpbmdCb3gsIGNhbGxiYWNrKSB7XG4gIHZhciB5ID0gMDtcbiAgdmFyIHggPSAwO1xuICB2YXIgaGVpZ2h0ID0gdGhpcy5oZWlnaHQ7XG4gIHZhciB3aWR0aCA9IHRoaXMud2lkdGg7XG4gIHZhciBwcm9qNFRvID0gcHJvajQodGhpcy5wcm9qZWN0aW9uVG8pO1xuICB2YXIgcHJvajRGcm9tO1xuICBpZiAodGhpcy5wcm9qZWN0aW9uRnJvbSkge1xuICAgIHRyeSB7XG4gICAgICBwcm9qNEZyb20gPSBwcm9qNCh0aGlzLnByb2plY3Rpb25Gcm9tKTtcbiAgICB9IGNhdGNoIChlKSB7fVxuICB9XG4gIGlmICghcHJvajRGcm9tICYmIHRoaXMucHJvamVjdGlvbkZyb21EZWZpbml0aW9uKSB7XG4gICAgcHJvajRGcm9tID0gcHJvajQodGhpcy5wcm9qZWN0aW9uRnJvbURlZmluaXRpb24pO1xuICB9XG4gIHZhciBjb252ZXJzaW9uO1xuICB0cnkge1xuICAgIGNvbnZlcnNpb24gPSBwcm9qNCh0aGlzLnByb2plY3Rpb25UbywgdGhpcy5wcm9qZWN0aW9uRnJvbSk7XG4gIH0gY2F0Y2ggKGUpIHt9XG4gIGlmICghY29udmVyc2lvbikge1xuICAgIGNvbnZlcnNpb24gPSBwcm9qNCh0aGlzLnByb2plY3Rpb25UbywgdGhpcy5wcm9qZWN0aW9uRnJvbURlZmluaXRpb24pO1xuICB9XG5cbiAgdmFyIGxhdGl0dWRlO1xuICBhc3luYy53aGlsc3QoXG4gICAgZnVuY3Rpb24oKSB7XG4gICAgICBsYXRpdHVkZSA9IHRoaXMudGlsZUJvdW5kaW5nQm94Lm1heExhdGl0dWRlIC0gKHkqdGhpcy50aWxlSGVpZ2h0VW5pdHNQZXJQaXhlbCk7XG4gICAgICByZXR1cm4geSA8IGhlaWdodDtcbiAgICB9LmJpbmQodGhpcyksXG4gICAgZnVuY3Rpb24oeURvbmUpIHtcbiAgICAgIGFzeW5jLnNldEltbWVkaWF0ZShmdW5jdGlvbiAoKSB7XG4gICAgICAgIGFzeW5jLndoaWxzdChcbiAgICAgICAgICBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHJldHVybiB4IDwgd2lkdGg7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBmdW5jdGlvbih4RG9uZSkge1xuICAgICAgICAgICAgYXN5bmMuc2V0SW1tZWRpYXRlKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgdmFyIGxvbmdpdHVkZSA9IHRoaXMudGlsZUJvdW5kaW5nQm94Lm1pbkxvbmdpdHVkZSArICh4KnRoaXMudGlsZVdpZHRoVW5pdHNQZXJQaXhlbCk7XG4gICAgICAgICAgICAgIHZhciBwcm9qZWN0ZWQgPSBjb252ZXJzaW9uLmZvcndhcmQoW2xvbmdpdHVkZSwgbGF0aXR1ZGVdKTtcbiAgICAgICAgICAgICAgdmFyIHByb2plY3RlZExvbmdpdHVkZSA9IHByb2plY3RlZFswXTtcbiAgICAgICAgICAgICAgdmFyIHByb2plY3RlZExhdGl0dWRlID0gcHJvamVjdGVkWzFdO1xuICAgICAgICAgICAgICB2YXIgeFBpeGVsID0gdGhpcy50aWxlTWF0cml4LnRpbGVfd2lkdGggLSBNYXRoLnJvdW5kKCh0aWxlUGllY2VCb3VuZGluZ0JveC5tYXhMb25naXR1ZGUgLSBwcm9qZWN0ZWRMb25naXR1ZGUpIC8gdGhpcy50aWxlTWF0cml4LnBpeGVsX3hfc2l6ZSk7XG4gICAgICAgICAgICAgIHZhciB5UGl4ZWwgPSBNYXRoLnJvdW5kKCh0aWxlUGllY2VCb3VuZGluZ0JveC5tYXhMYXRpdHVkZSAtIHByb2plY3RlZExhdGl0dWRlKSAvIHRoaXMudGlsZU1hdHJpeC5waXhlbF95X3NpemUpO1xuICAgICAgICAgICAgICBpZiAoeFBpeGVsID49IDAgJiYgeFBpeGVsIDwgdGhpcy50aWxlTWF0cml4LnRpbGVfd2lkdGhcbiAgICAgICAgICAgICAgJiYgeVBpeGVsID49IDAgJiYgeVBpeGVsIDwgdGhpcy50aWxlTWF0cml4LnRpbGVfaGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hZGRQaXhlbCh4LCB5LCB4UGl4ZWwsIHlQaXhlbCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgeCsrO1xuICAgICAgICAgICAgICB4RG9uZSgpO1xuICAgICAgICAgICAgfS5iaW5kKHRoaXMpKTtcbiAgICAgICAgICB9LmJpbmQodGhpcyksXG4gICAgICAgICAgZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICB4ID0gMDtcbiAgICAgICAgICAgIHkrKztcbiAgICAgICAgICAgIHlEb25lKCk7XG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgfS5iaW5kKHRoaXMpKTtcbiAgICB9LmJpbmQodGhpcyksXG4gICAgZnVuY3Rpb24oKSB7XG4gICAgICBjYWxsYmFjaygpO1xuICAgIH1cbiAgKTtcbn07XG4iLCJ2YXIgdXRpbCA9IHJlcXVpcmUoJ3V0aWwnKVxuICAsIGFzeW5jID0gcmVxdWlyZSgnYXN5bmMnKVxuICAsIGZpbGVUeXBlID0gcmVxdWlyZSgnZmlsZS10eXBlJyk7XG5cbnZhciBUaWxlQ3JlYXRvciA9IHJlcXVpcmUoJy4vaW5kZXgnKS5UaWxlQ3JlYXRvcjtcblxuZnVuY3Rpb24gTHdpcFRpbGVDcmVhdG9yKHdpZHRoLCBoZWlnaHQsIHRpbGVNYXRyaXgsIHRpbGVNYXRyaXhTZXQsIHRpbGVCb3VuZGluZ0JveCwgcHJvamVjdGlvbkZyb20sIHByb2plY3Rpb25UbywgY2FsbGJhY2spIHtcbiAgVGlsZUNyZWF0b3IuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcblxuICB0aGlzLmx3aXAgPSByZXF1aXJlKCdsd2lwJyk7XG4gIHRoaXMucGl4ZWxzID0gW107XG4gIHRoaXMubHdpcC5jcmVhdGUodGhpcy53aWR0aCwgdGhpcy5oZWlnaHQsIGZ1bmN0aW9uKGVyciwgaW1hZ2Upe1xuICAgIHRoaXMuaW1hZ2UgPSBpbWFnZTtcbiAgICBjYWxsYmFjayhudWxsLCB0aGlzKTtcbiAgfS5iaW5kKHRoaXMpKTtcbn1cblxudXRpbC5pbmhlcml0cyhMd2lwVGlsZUNyZWF0b3IsIFRpbGVDcmVhdG9yKTtcblxuTHdpcFRpbGVDcmVhdG9yLnByb3RvdHlwZS5hZGRQaXhlbCA9IGZ1bmN0aW9uICh0YXJnZXRYLCB0YXJnZXRZLCBzb3VyY2VYLCBzb3VyY2VZKSB7XG4gIHRoaXMucGl4ZWxzLnB1c2goe1xuICAgIHg6IHRhcmdldFgsXG4gICAgeTogdGFyZ2V0WSxcbiAgICBjb2xvcjogdGhpcy50aWxlLmdldFBpeGVsKHNvdXJjZVgsIHNvdXJjZVkpXG4gIH0pO1xufTtcblxuTHdpcFRpbGVDcmVhdG9yLnByb3RvdHlwZS5hZGRUaWxlID0gZnVuY3Rpb24gKHRpbGVEYXRhLCBncmlkQ29sdW1uLCBncmlkUm93LCBjYWxsYmFjaykge1xuICB2YXIgdHlwZSA9IGZpbGVUeXBlKHRpbGVEYXRhKTtcbiAgdGhpcy5sd2lwLm9wZW4odGlsZURhdGEsIHR5cGUuZXh0LCBmdW5jdGlvbihlcnIsIHRpbGUpIHtcbiAgICB0aGlzLnRpbGUgPSB0aWxlO1xuICAgIHRoaXMucHJvamVjdFRpbGUodGlsZURhdGEsIGdyaWRDb2x1bW4sIGdyaWRSb3csIGZ1bmN0aW9uKCkge1xuICAgICAgYXN5bmMuZWFjaFNlcmllcyh0aGlzLnBpeGVscywgZnVuY3Rpb24ocGl4ZWwsIHBpeGVsRG9uZSkge1xuICAgICAgICB0aGlzLmltYWdlLnNldFBpeGVsKHBpeGVsLngsIHBpeGVsLnksIHBpeGVsLmNvbG9yLCBwaXhlbERvbmUpO1xuICAgICAgfS5iaW5kKHRoaXMpLCBmdW5jdGlvbihlcnIpIHtcbiAgICAgICAgYXN5bmMuZWFjaFNlcmllcyh0aGlzLmNodW5rcywgZnVuY3Rpb24oY2h1bmssIGNodW5rRG9uZSkge1xuICAgICAgICAgIHZhciB0eXBlID0gZmlsZVR5cGUoY2h1bmsuY2h1bmspO1xuICAgICAgICAgIHZhciBpbWFnZSA9IHRoaXMuaW1hZ2U7XG4gICAgICAgICAgdGhpcy5sd2lwLm9wZW4oY2h1bmsuY2h1bmssIHR5cGUuZXh0LCBmdW5jdGlvbihlcnIsIHRpbGUpIHtcbiAgICAgICAgICAgIHZhciBwID0gY2h1bmsucG9zaXRpb247XG4gICAgICAgICAgICB2YXIgYmF0Y2ggPSB0aWxlLmJhdGNoKCk7XG4gICAgICAgICAgICBiYXRjaFxuICAgICAgICAgICAgLmNyb3AocC50aWxlQ3JvcFhTdGFydCwgcC50aWxlQ3JvcFlTdGFydCwgcC50aWxlQ3JvcFhFbmQsIHAudGlsZUNyb3BZRW5kKVxuICAgICAgICAgICAgLnNjYWxlKHAueFNjYWxlLCBwLnlTY2FsZSlcbiAgICAgICAgICAgIC5leGVjKGZ1bmN0aW9uKGVyciwgc2NhbGVkVGlsZSkge1xuICAgICAgICAgICAgICBpbWFnZS5wYXN0ZShwLnhQb3NpdGlvbkluRmluYWxUaWxlU3RhcnQsIHAueVBvc2l0aW9uSW5GaW5hbFRpbGVTdGFydCwgc2NhbGVkVGlsZSwgY2h1bmtEb25lKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0uYmluZCh0aGlzKSk7XG4gICAgICAgIH0uYmluZCh0aGlzKSwgZnVuY3Rpb24oZXJyKSB7XG4gICAgICAgICAgY2FsbGJhY2soZXJyLCB0aGlzLmltYWdlKTtcbiAgICAgICAgfSk7XG4gICAgICB9LmJpbmQodGhpcykpO1xuICAgIH0uYmluZCh0aGlzKSk7XG4gIH0uYmluZCh0aGlzKSk7XG59O1xuXG5Md2lwVGlsZUNyZWF0b3IucHJvdG90eXBlLmdldENvbXBsZXRlVGlsZSA9IGZ1bmN0aW9uIChmb3JtYXQsIGNhbGxiYWNrKSB7XG4gIHRoaXMuaW1hZ2Uud3JpdGVGaWxlKCcvdG1wL2x3aXAucG5nJywgZnVuY3Rpb24oZXJyKSB7XG4gICAgdGhpcy5pbWFnZS5iYXRjaCgpXG4gICAgLnRvQnVmZmVyKGZvcm1hdCwgY2FsbGJhY2spO1xuXG4gIH0uYmluZCh0aGlzKSk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IEx3aXBUaWxlQ3JlYXRvcjtcbiIsInZhciBwcm9qNCA9IHJlcXVpcmUoJ3Byb2o0Jyk7XG5cbm1vZHVsZS5leHBvcnRzLmdldFBpZWNlUG9zaXRpb24gPSBmdW5jdGlvbih0aWxlUGllY2VCb3VuZGluZ0JveCwgdGlsZUJvdW5kaW5nQm94LCBoZWlnaHQsIHdpZHRoLCBwcm9qZWN0aW9uVG8sIHByb2plY3Rpb25Gcm9tLCBwcm9qZWN0aW9uRnJvbURlZmluaXRpb24sIHRpbGVIZWlnaHRVbml0c1BlclBpeGVsLCB0aWxlV2lkdGhVbml0c1BlclBpeGVsLCBwaXhlbFhTaXplLCBwaXhlbFlTaXplKSB7XG4gIHZhciBjb252ZXJzaW9uO1xuICB0cnkge1xuICAgIGNvbnZlcnNpb24gPSBwcm9qNChwcm9qZWN0aW9uVG8sIHByb2plY3Rpb25Gcm9tKTtcbiAgfSBjYXRjaCAoZSkge31cbiAgaWYgKCFjb252ZXJzaW9uKSB7XG4gICAgY29udmVyc2lvbiA9IHByb2o0KHByb2plY3Rpb25UbywgcHJvamVjdGlvbkZyb21EZWZpbml0aW9uKTtcbiAgfVxuXG4gIHZhciBtYXhMYXRpdHVkZSA9IHRpbGVQaWVjZUJvdW5kaW5nQm94Lm1heExhdGl0dWRlO1xuICB2YXIgbWluTGF0aXR1ZGUgPSB0aWxlUGllY2VCb3VuZGluZ0JveC5taW5MYXRpdHVkZTtcbiAgdmFyIG1pbkxvbmdpdHVkZSA9IHRpbGVQaWVjZUJvdW5kaW5nQm94Lm1pbkxvbmdpdHVkZSAtIHBpeGVsWFNpemU7XG4gIHZhciBtYXhMb25naXR1ZGUgPSB0aWxlUGllY2VCb3VuZGluZ0JveC5tYXhMb25naXR1ZGUgKyBwaXhlbFhTaXplO1xuXG4gIGlmIChwcm9qZWN0aW9uVG8udG9VcHBlckNhc2UoKSA9PT0gJ0VQU0c6Mzg1NycgJiYgcHJvamVjdGlvbkZyb20udG9VcHBlckNhc2UoKSA9PT0gJ0VQU0c6NDMyNicpIHtcbiAgICBtYXhMYXRpdHVkZSA9IG1heExhdGl0dWRlID4gODUuMDUxMSA/IDg1LjA1MTEgOiBtYXhMYXRpdHVkZTtcbiAgICBtaW5MYXRpdHVkZSA9IG1pbkxhdGl0dWRlIDwgLTg1LjA1MTEgPyAtODUuMDUxMSA6IG1pbkxhdGl0dWRlO1xuICAgIG1pbkxvbmdpdHVkZSA9IG1pbkxvbmdpdHVkZSA8IC0xODAuMCA/IC0xODAuMCA6IG1pbkxvbmdpdHVkZTtcbiAgICBtYXhMb25naXR1ZGUgPSBtYXhMb25naXR1ZGUgPiAxODAuMCA/IDE4MC4wIDogbWF4TG9uZ2l0dWRlO1xuICB9XG5cbiAgdmFyIHBpZWNlQm91bmRpbmdCb3hJblRpbGVQcm9qZWN0aW9uU1cgPSBjb252ZXJzaW9uLmludmVyc2UoW21pbkxvbmdpdHVkZSwgbWluTGF0aXR1ZGVdKTtcbiAgdmFyIHBpZWNlQm91bmRpbmdCb3hJblRpbGVQcm9qZWN0aW9uTkUgPSBjb252ZXJzaW9uLmludmVyc2UoW21heExvbmdpdHVkZSwgbWF4TGF0aXR1ZGVdKTtcbiAgdmFyIHBpZWNlQkJQcm9qZWN0ZWQgPSB7XG4gICAgbWluTGF0aXR1ZGU6IGlzTmFOKHBpZWNlQm91bmRpbmdCb3hJblRpbGVQcm9qZWN0aW9uU1dbMV0pID8gdGlsZUJvdW5kaW5nQm94Lm1pbkxhdGl0dWRlIDogcGllY2VCb3VuZGluZ0JveEluVGlsZVByb2plY3Rpb25TV1sxXSxcbiAgICBtYXhMYXRpdHVkZTogaXNOYU4ocGllY2VCb3VuZGluZ0JveEluVGlsZVByb2plY3Rpb25ORVsxXSkgPyB0aWxlQm91bmRpbmdCb3gubWF4TGF0aXR1ZGUgOiBwaWVjZUJvdW5kaW5nQm94SW5UaWxlUHJvamVjdGlvbk5FWzFdLFxuICAgIG1pbkxvbmdpdHVkZTogcGllY2VCb3VuZGluZ0JveEluVGlsZVByb2plY3Rpb25TV1swXSxcbiAgICBtYXhMb25naXR1ZGU6IHBpZWNlQm91bmRpbmdCb3hJblRpbGVQcm9qZWN0aW9uTkVbMF1cbiAgfTtcblxuICB2YXIgc3RhcnRZID0geSA9IE1hdGgubWF4KDAsIE1hdGguZmxvb3IoKHRpbGVCb3VuZGluZ0JveC5tYXhMYXRpdHVkZSAtIHBpZWNlQkJQcm9qZWN0ZWQubWF4TGF0aXR1ZGUpIC8gdGlsZUhlaWdodFVuaXRzUGVyUGl4ZWwpKTtcbiAgdmFyIHN0YXJ0WCA9IHggPSBNYXRoLm1heCgwLCBNYXRoLmZsb29yKChwaWVjZUJCUHJvamVjdGVkLm1pbkxvbmdpdHVkZSAtIHRpbGVCb3VuZGluZ0JveC5taW5Mb25naXR1ZGUpIC8gdGlsZVdpZHRoVW5pdHNQZXJQaXhlbCkpO1xuXG4gIHZhciBlbmRZID0gTWF0aC5taW4oaGVpZ2h0LCBoZWlnaHQgLSBNYXRoLmZsb29yKChwaWVjZUJCUHJvamVjdGVkLm1pbkxhdGl0dWRlIC0gdGlsZUJvdW5kaW5nQm94Lm1pbkxhdGl0dWRlKSAvIHRpbGVIZWlnaHRVbml0c1BlclBpeGVsKSk7XG4gIHZhciBlbmRYID0gTWF0aC5taW4od2lkdGgsIHdpZHRoIC0gTWF0aC5mbG9vcigodGlsZUJvdW5kaW5nQm94Lm1heExvbmdpdHVkZSAtIHBpZWNlQkJQcm9qZWN0ZWQubWF4TG9uZ2l0dWRlKSAvIHRpbGVXaWR0aFVuaXRzUGVyUGl4ZWwpKTtcblxuICByZXR1cm4ge1xuICAgIHN0YXJ0WTogc3RhcnRZLFxuICAgIHN0YXJ0WDogc3RhcnRYLFxuICAgIGVuZFk6IGVuZFksXG4gICAgZW5kWDogZW5kWFxuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cy5jcmVhdGVQTkcgPSBmdW5jdGlvbih3aWR0aCwgaGVpZ2h0LCByZWRBcnJheSwgZ3JlZW5BcnJheSwgYmx1ZUFycmF5LCBhbHBoYU9yQXJyYXksIGZpbmFsV2lkdGgsIGZpbmFsSGVpZ2h0LCBjYWxsYmFjaykge1xuICBpZiAodHlwZW9mKHByb2Nlc3MpICE9PSAndW5kZWZpbmVkJyAmJiBwcm9jZXNzLnZlcnNpb24pIHtcbiAgICBjcmVhdGVQTkdMd2lwKHdpZHRoLCBoZWlnaHQsIHJlZEFycmF5LCBncmVlbkFycmF5LCBibHVlQXJyYXksIGFscGhhT3JBcnJheSwgZmluYWxXaWR0aCwgZmluYWxIZWlnaHQsIGNhbGxiYWNrKTtcbiAgfSBlbHNlIHtcbiAgfVxufVxuXG5mdW5jdGlvbiBjcmVhdGVQTkdMd2lwKHdpZHRoLCBoZWlnaHQsIHJlZEFycmF5LCBncmVlbkFycmF5LCBibHVlQXJyYXksIGFscGhhT3JBcnJheSwgZmluYWxXaWR0aCwgZmluYWxIZWlnaHQsIGNhbGxiYWNrKSB7XG4gIHZhciBsd2lwID0gcmVxdWlyZSgnbHdpcCcpO1xuICB2YXIgciA9IFtdO1xuICB2YXIgZyA9IFtdO1xuICB2YXIgYiA9IFtdO1xuICB2YXIgYnVmZiA9IG5ldyBCdWZmZXIod2lkdGggKiBoZWlnaHQgKiAzKTtcblxuICB2YXIgbGVuZ3RoID0gcmVkQXJyYXkubGVuZ3RoO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgci5wdXNoKHJlZEFycmF5W2ldKTtcbiAgICBnLnB1c2goZ3JlZW5BcnJheVtpXSk7XG4gICAgYi5wdXNoKGJsdWVBcnJheVtpXSk7XG4gIH1cbiAgdmFyIGJ1ZmYgPSBuZXcgQnVmZmVyKHIuY29uY2F0KGcsIGIpKTtcbiAgbHdpcC5vcGVuKGJ1ZmYsIHt3aWR0aDogd2lkdGgsIGhlaWdodDogaGVpZ2h0fSwgZnVuY3Rpb24oZXJyLCBpbWFnZSkge1xuICAgIGltYWdlLnJlc2l6ZShmaW5hbFdpZHRoLCBmaW5hbEhlaWdodCwgZnVuY3Rpb24oZXJyLCBpbWFnZSkge1xuICAgICAgaW1hZ2UudG9CdWZmZXIoJ3BuZycsIHtcbiAgICAgICAgdHJhbnNwYXJlbmN5OiB0cnVlXG4gICAgICB9LCBjYWxsYmFjayk7XG4gICAgfSk7XG4gIH0pO1xufVxuIiwidmFyIHByb2o0ID0gcmVxdWlyZSgncHJvajQnKVxuICAsIGFzeW5jID0gcmVxdWlyZSgnYXN5bmMnKTtcblxudmFyIFRpbGVVdGlsaXRpZXMgPSByZXF1aXJlKCcuL3RpbGVVdGlsaXRpZXMnKVxuICAsIHByb2o0RGVmcyA9IHJlcXVpcmUoJy4uLy4uL3Byb2o0RGVmcycpO1xuXG5mdW5jdGlvbiB0aWxlV29ya2VyKGUpIHtcbiAgY29uc29sZS5sb2coJ1RpbGUgV29ya2VyIC0gd29ya2luZycpO1xuICBjb25zb2xlLnRpbWUoJ1RpbGUgV29ya2VyIC0gdGltZScpO1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHZhciBqb2IgPSBlLmRhdGE7XG5cbiAgaWYgKHByb2o0RGVmc1tqb2IucHJvamVjdGlvblRvXSkge1xuICAgIHByb2o0LmRlZnMoam9iLnByb2plY3Rpb25UbywgcHJvajREZWZzW2pvYi5wcm9qZWN0aW9uVG9dKTtcbiAgfVxuICBpZiAocHJvajREZWZzW2pvYi5wcm9qZWN0aW9uRnJvbV0pIHtcbiAgICBwcm9qNC5kZWZzKGpvYi5wcm9qZWN0aW9uRnJvbSwgcHJvajREZWZzW2pvYi5wcm9qZWN0aW9uRnJvbV0pO1xuICB9XG4gIHZhciBwcm9qNFRvID0gcHJvajQoam9iLnByb2plY3Rpb25Ubyk7XG4gIHZhciBwcm9qNEZyb20gPSBwcm9qNChqb2IucHJvamVjdGlvbkZyb20pO1xuXG4gIHZhciBjb252ZXJzaW9uO1xuICB0cnkge1xuICAgIGNvbnZlcnNpb24gPSBwcm9qNChqb2IucHJvamVjdGlvblRvLCBqb2IucHJvamVjdGlvbkZyb20pO1xuICB9IGNhdGNoIChlKSB7fVxuICBpZiAoIWNvbnZlcnNpb24pIHtcbiAgICBjb252ZXJzaW9uID0gcHJvajQoam9iLnByb2plY3Rpb25Ubywgam9iLnByb2plY3Rpb25Gcm9tRGVmaW5pdGlvbik7XG4gIH1cblxuICB2YXIgdGlsZUJvdW5kaW5nQm94ID0gSlNPTi5wYXJzZShqb2IudGlsZUJvdW5kaW5nQm94KTtcbiAgdmFyIHRpbGVQaWVjZUJvdW5kaW5nQm94ID0gSlNPTi5wYXJzZShqb2IudGlsZVBpZWNlQm91bmRpbmdCb3gpO1xuXG4gIHZhciBwaWVjZVBvc2l0aW9uID0gVGlsZVV0aWxpdGllcy5nZXRQaWVjZVBvc2l0aW9uKHRpbGVQaWVjZUJvdW5kaW5nQm94LCB0aWxlQm91bmRpbmdCb3gsIGpvYi5oZWlnaHQsIGpvYi53aWR0aCwgam9iLnByb2plY3Rpb25Ubywgam9iLnByb2plY3Rpb25Gcm9tLCBqb2IucHJvamVjdGlvbkZyb21EZWZpbml0aW9uLCBqb2IudGlsZUhlaWdodFVuaXRzUGVyUGl4ZWwsIGpvYi50aWxlV2lkdGhVbml0c1BlclBpeGVsLCBqb2IucGl4ZWxYU2l6ZSwgam9iLnBpeGVsWVNpemUpO1xuICB2YXIgeCA9IHBpZWNlUG9zaXRpb24uc3RhcnRYO1xuICB2YXIgeSA9IHBpZWNlUG9zaXRpb24uc3RhcnRZO1xuXG4gIHZhciBmaW5hbFdpZHRoID0gKHBpZWNlUG9zaXRpb24uZW5kWCAtIHBpZWNlUG9zaXRpb24uc3RhcnRYKTtcbiAgdmFyIGZpbmFsSGVpZ2h0ID0gKHBpZWNlUG9zaXRpb24uZW5kWSAtIHBpZWNlUG9zaXRpb24uc3RhcnRZKTtcbiAgaWYgKGZpbmFsV2lkdGggPD0gMCB8fCBmaW5hbEhlaWdodCA8PSAwKSB7XG4gICAgcG9zdE1lc3NhZ2Uoe21lc3NhZ2U6J2RvbmVub2RhdGEnfSk7XG4gICAgY29uc29sZS50aW1lRW5kKCdUaWxlIFdvcmtlciAtIHRpbWUnKTtcbiAgICByZXR1cm4gc2VsZi5jbG9zZSgpO1xuICB9XG5cbiAgdmFyIGltYWdlRGF0YSA9IG5ldyBVaW50OENsYW1wZWRBcnJheShqb2IuaW1hZ2VEYXRhKTtcblxuICB2YXIgZmluYWxJbWFnZURhdGEgPSBuZXcgVWludDhDbGFtcGVkQXJyYXkoZmluYWxXaWR0aCAqIGZpbmFsSGVpZ2h0ICogNCk7XG4gIHZhciBsYXRpdHVkZTtcblxuICBhc3luYy53aGlsc3QoXG4gICAgZnVuY3Rpb24oKSB7XG4gICAgICBpZiAoeSA8IHBpZWNlUG9zaXRpb24uZW5kWSkge1xuICAgICAgICBsYXRpdHVkZSA9IHRpbGVCb3VuZGluZ0JveC5tYXhMYXRpdHVkZSAtICh5KmpvYi50aWxlSGVpZ2h0VW5pdHNQZXJQaXhlbCk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0sXG4gICAgZnVuY3Rpb24oeURvbmUpIHtcbiAgICAgIHggPSBwaWVjZVBvc2l0aW9uLnN0YXJ0WDtcbiAgICAgIHZhciBsb25naXR1ZGU7XG4gICAgICBhc3luYy5zZXRJbW1lZGlhdGUoZnVuY3Rpb24gKCkge1xuICAgICAgICBhc3luYy53aGlsc3QoXG4gICAgICAgICAgZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICBpZih4IDwgcGllY2VQb3NpdGlvbi5lbmRYKSB7XG4gICAgICAgICAgICAgIGxvbmdpdHVkZSA9IHRpbGVCb3VuZGluZ0JveC5taW5Mb25naXR1ZGUgKyAoeCpqb2IudGlsZVdpZHRoVW5pdHNQZXJQaXhlbCk7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgZnVuY3Rpb24oeERvbmUpIHtcbiAgICAgICAgICAgIGFzeW5jLnNldEltbWVkaWF0ZShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgIHZhciBwcm9qZWN0ZWQgPSBjb252ZXJzaW9uLmZvcndhcmQoW2xvbmdpdHVkZSwgbGF0aXR1ZGVdKTtcbiAgICAgICAgICAgICAgdmFyIHByb2plY3RlZExvbmdpdHVkZSA9IHByb2plY3RlZFswXTtcbiAgICAgICAgICAgICAgdmFyIHByb2plY3RlZExhdGl0dWRlID0gcHJvamVjdGVkWzFdO1xuXG4gICAgICAgICAgICAgIHZhciB4UGl4ZWwgPSBqb2IudGlsZVdpZHRoIC0gTWF0aC5yb3VuZCgodGlsZVBpZWNlQm91bmRpbmdCb3gubWF4TG9uZ2l0dWRlIC0gcHJvamVjdGVkTG9uZ2l0dWRlKSAvIGpvYi5waXhlbFhTaXplKTtcbiAgICAgICAgICAgICAgdmFyIHlQaXhlbCA9IE1hdGgucm91bmQoKHRpbGVQaWVjZUJvdW5kaW5nQm94Lm1heExhdGl0dWRlIC0gcHJvamVjdGVkTGF0aXR1ZGUpIC8gam9iLnBpeGVsWVNpemUpO1xuICAgICAgICAgICAgICBpZiAoeFBpeGVsID49IDAgJiYgeFBpeGVsIDwgam9iLnRpbGVXaWR0aFxuICAgICAgICAgICAgICAmJiB5UGl4ZWwgPj0gMCAmJiB5UGl4ZWwgPCBqb2IudGlsZUhlaWdodCkge1xuICAgICAgICAgICAgICAgIHZhciBzbGljZVN0YXJ0ID0gKHlQaXhlbCAqIGpvYi50aWxlV2lkdGggKiA0KSArICh4UGl4ZWwgKiA0KTtcbiAgICAgICAgICAgICAgICBpZiAoc2xpY2VTdGFydCA+PSAwKSB7XG4gICAgICAgICAgICAgICAgICBmaW5hbEltYWdlRGF0YS5zZXQoaW1hZ2VEYXRhLnNsaWNlKHNsaWNlU3RhcnQsIHNsaWNlU3RhcnQgKyA0KSwgKCh5LXBpZWNlUG9zaXRpb24uc3RhcnRZKSpmaW5hbFdpZHRoKjQpICsgKCh4LXBpZWNlUG9zaXRpb24uc3RhcnRYKSo0KSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHgrKztcbiAgICAgICAgICAgICAgeERvbmUoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICB5Kys7XG4gICAgICAgICAgICB5RG9uZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgZnVuY3Rpb24oKSB7XG4gICAgICBwb3N0TWVzc2FnZSh7bWVzc2FnZTonZG9uZScsIGltYWdlRGF0YTogZmluYWxJbWFnZURhdGEuYnVmZmVyLCBmaW5hbFdpZHRoOiBmaW5hbFdpZHRoLCBmaW5hbEhlaWdodDogZmluYWxIZWlnaHR9LCBbZmluYWxJbWFnZURhdGEuYnVmZmVyXSk7XG4gICAgICBjb25zb2xlLnRpbWVFbmQoJ1RpbGUgV29ya2VyIC0gdGltZScpO1xuICAgICAgc2VsZi5jbG9zZSgpO1xuICAgIH1cbiAgKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihzZWxmKSB7XG4gIHNlbGYub25tZXNzYWdlID0gdGlsZVdvcmtlcjtcbiAgc2VsZi5vbmVycm9yID0gZnVuY3Rpb24oZSkge1xuICAgIGNvbnNvbGUubG9nKCdlcnJvcicsIGUpO1xuICB9XG59O1xuIiwidmFyIFRpbGVCb3VuZGluZ0JveFV0aWxzID0gcmVxdWlyZSgnLi4vdGlsZUJvdW5kaW5nQm94VXRpbHMnKVxuICAsIEJvdW5kaW5nQm94ID0gcmVxdWlyZSgnLi4vLi4vYm91bmRpbmdCb3gnKTtcblxudmFyIGQzZ2VvID0gcmVxdWlyZSgnZDMtZ2VvJylcbiAgLCBQdXJlSW1hZ2UgPSByZXF1aXJlKCdwdXJlaW1hZ2UnKVxuICAsIGZzID0gcmVxdWlyZSgnZnMnKVxuICAsIGFzeW5jID0gcmVxdWlyZSgnYXN5bmMnKVxuICAsIGNvbmNhdCA9IHJlcXVpcmUoJ2NvbmNhdC1zdHJlYW0nKVxuICAsIHJlcHJvamVjdCA9IHJlcXVpcmUoJ3JlcHJvamVjdCcpXG4gICwgYmJveCA9IHJlcXVpcmUoJ0B0dXJmL2Jib3gnKVxuICAsIHRpbGViZWx0ID0gcmVxdWlyZSgnQG1hcGJveC90aWxlYmVsdCcpO1xuXG4vKipcbiAqICBUaWxlcyBkcmF3biBmcm9tIG9yIGxpbmtlZCB0byBmZWF0dXJlcy4gVXNlZCB0byBxdWVyeSBmZWF0dXJlcyBhbmQgb3B0aW9uYWxseSBkcmF3IHRpbGVzXG4gKiAgZnJvbSB0aG9zZSBmZWF0dXJlcy5cbiAqL1xudmFyIEZlYXR1cmVUaWxlcyA9IGZ1bmN0aW9uKGZlYXR1cmVEYW8sIHRpbGVXaWR0aCwgdGlsZUhlaWdodCkge1xuICB0aGlzLmZlYXR1cmVEYW8gPSBmZWF0dXJlRGFvO1xuXG4gIHRoaXMudGlsZVdpZHRoID0gdGlsZVdpZHRoIHx8IDI1NjtcbiAgdGhpcy50aWxlSGVpZ2h0ID0gdGlsZUhlaWdodCB8fCAyNTY7XG5cbiAgdGhpcy5jb21wcmVzc0Zvcm1hdCA9ICdwbmcnO1xuICB0aGlzLnBvaW50UmFkaXVzID0gNC4wO1xuICB0aGlzLmxpbmVTdHJva2VXaWR0aCA9IDI7XG4gIHRoaXMucG9seWdvblN0cm9rZVdpZHRoID0gMi4wO1xuICB0aGlzLmZpbGxQb2x5Z29uID0gZmFsc2U7XG5cbiAgdGhpcy5jYWxjdWxhdGVEcmF3T3ZlcmxhcCgpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IEZlYXR1cmVUaWxlcztcblxuRmVhdHVyZVRpbGVzLnByb3RvdHlwZS5nZXRGZWF0dXJlRGFvID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5mZWF0dXJlRGFvO1xufVxuXG5GZWF0dXJlVGlsZXMucHJvdG90eXBlLmNhbGN1bGF0ZURyYXdPdmVybGFwID0gZnVuY3Rpb24oKSB7XG4gIGlmICh0aGlzLnBvaW50SWNvbikge1xuICAgIHRoaXMuaGVpZ2h0T3ZlcmxhcCA9IHRoaXMucG9pbnRJY29uLmdldEhlaWdodCgpO1xuICAgIHRoaXMud2lkdGhPdmVybGFwID0gdGhpcy5wb2ludEljb24uZ2V0V2lkdGgoKTtcbiAgfSBlbHNlIHtcbiAgICB0aGlzLmhlaWdodE92ZXJsYXAgPSB0aGlzLnBvaW50UmFkaXVzO1xuICAgIHRoaXMud2lkdGhPdmVybGFwID0gdGhpcy5wb2ludFJhZGl1cztcbiAgfVxuXG4gIHZhciBsaW5lSGFsZlN0cm9rZSA9IHRoaXMubGluZVN0cm9rZVdpZHRoIC8gMi4wO1xuICB0aGlzLmhlaWdodE92ZXJsYXAgPSBNYXRoLm1heCh0aGlzLmhlaWdodE92ZXJsYXAsIGxpbmVIYWxmU3Ryb2tlKTtcbiAgdGhpcy53aWR0aE92ZXJsYXAgPSBNYXRoLm1heCh0aGlzLndpZHRoT3ZlcmxhcCwgbGluZUhhbGZTdHJva2UpO1xuXG4gIHZhciBwb2x5Z29uSGFsZlN0cm9rZSA9IHRoaXMucG9seWdvblN0cm9rZVdpZHRoIC8gMi4wO1xuICB0aGlzLmhlaWdodE92ZXJsYXAgPSBNYXRoLm1heCh0aGlzLmhlaWdodE92ZXJsYXAsIHBvbHlnb25IYWxmU3Ryb2tlKTtcbiAgdGhpcy53aWR0aE92ZXJsYXAgPSBNYXRoLm1heCh0aGlzLndpZHRoT3ZlcmxhcCwgcG9seWdvbkhhbGZTdHJva2UpO1xufVxuXG5GZWF0dXJlVGlsZXMucHJvdG90eXBlLnNldERyYXdPdmVybGFwc1dpdGhQaXhlbHMgPSBmdW5jdGlvbihwaXhlbHMpIHtcbiAgdGhpcy53aWR0aE92ZXJsYXAgPSBwaXhlbHM7XG4gIHRoaXMuaGVpZ2h0T3ZlcmxhcCA9IHBpeGVscztcbn1cblxuRmVhdHVyZVRpbGVzLnByb3RvdHlwZS5kcmF3VGlsZSA9IGZ1bmN0aW9uICh4LCB5LCB6LCBjYWxsYmFjaykge1xuICB0aGlzLmZlYXR1cmVEYW8uaXNJbmRleGVkKGZ1bmN0aW9uKGVyciwgaW5kZXhlZCkge1xuICAgIGlmIChpbmRleGVkKSB7XG4gICAgICB0aGlzLmRyYXdUaWxlUXVlcnlJbmRleCh4LCB5LCB6LCBjYWxsYmFjayk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZHJhd1RpbGVRdWVyeUFsbCh4LCB5LCB6LCBjYWxsYmFjayk7XG4gICAgfVxuICB9LmJpbmQodGhpcykpO1xufVxuXG5GZWF0dXJlVGlsZXMucHJvdG90eXBlLmRyYXdUaWxlUXVlcnlJbmRleCA9IGZ1bmN0aW9uKHgsIHksIHosIGNhbGxiYWNrKSB7XG4gIHZhciBib3VuZGluZ0JveCA9IFRpbGVCb3VuZGluZ0JveFV0aWxzLmdldFdlYk1lcmNhdG9yQm91bmRpbmdCb3hGcm9tWFlaKHgsIHksIHopO1xuICB2YXIgd2lkdGggPSAyNTY7XG4gIHZhciBoZWlnaHQgPSAyNTY7XG5cbiAgdmFyIHBvc2l0aW9uQW5kU2NhbGUgPSBUaWxlQm91bmRpbmdCb3hVdGlscy5kZXRlcm1pbmVQb3NpdGlvbkFuZFNjYWxlKGJvdW5kaW5nQm94LCBoZWlnaHQsIHdpZHRoLCBuZXcgQm91bmRpbmdCb3goLTIwMDM3NTA4LjM0Mjc4OTI0NCwgMjAwMzc1MDguMzQyNzg5MjQ0LCAtMjAwMzc1MDguMzQyNzg5MjQ0LCAyMDAzNzUwOC4zNDI3ODkyNDQpLCBoZWlnaHQgKiAoMSA8PCB6KSwgd2lkdGggKiAoMSA8PCB6KSk7XG4gIHZhciB4VHJhbnNsYXRlID0gLXBvc2l0aW9uQW5kU2NhbGUueFBvc2l0aW9uSW5GaW5hbFRpbGVTdGFydDtcbiAgdmFyIHlUcmFuc2xhdGUgPSAtcG9zaXRpb25BbmRTY2FsZS55UG9zaXRpb25JbkZpbmFsVGlsZVN0YXJ0O1xuXG4gIHZhciBpbWFnZSA9IFB1cmVJbWFnZS5tYWtlKHdpZHRoLCBoZWlnaHQpO1xuICB2YXIgY29udGV4dCA9IGltYWdlLmdldENvbnRleHQoJzJkJyk7XG4gIGNvbnRleHQuY2xlYXJSZWN0KDAsIDAsIHdpZHRoLCBoZWlnaHQpO1xuICBjb250ZXh0LnN0cm9rZVN0eWxlID0gJ2JsdWUnO1xuICBjb250ZXh0LmxpbmVXaWR0aCA9IHRoaXMubGluZVN0cm9rZVdpZHRoO1xuICB2YXIgY291bnQgPSAwO1xuICBjb25zb2xlLnRpbWUoJ0NyZWF0aW5nIGltYWdlJyk7XG5cbiAgdGhpcy5mZWF0dXJlRGFvLmdldFNycyhmdW5jdGlvbihlcnIsIHNycyl7XG4gICAgdGhpcy5mZWF0dXJlRGFvLnF1ZXJ5SW5kZXhlZEZlYXR1cmVzV2l0aFdlYk1lcmNhdG9yQm91bmRpbmdCb3goYm91bmRpbmdCb3gsIGZ1bmN0aW9uKGVyciwgZmVhdHVyZVJvdywgcm93RG9uZSkge1xuICAgICAgdmFyIGdqID0gZmVhdHVyZVJvdy5nZXRHZW9tZXRyeSgpLmdlb21ldHJ5LnRvR2VvSlNPTigpO1xuICAgICAgaWYgKHNycy5vcmdhbml6YXRpb24gIT09ICdFUFNHJyB8fCBzcnMub3JnYW5pemF0aW9uX2Nvb3Jkc3lzX2lkICE9PSA0MzI2KSB7XG4gICAgICAgIGdqID0gcmVwcm9qZWN0LnRvV2dzODQoZ2osIHNycy5vcmdhbml6YXRpb24gKyAnOicgKyBzcnMub3JnYW5pemF0aW9uX2Nvb3Jkc3lzX2lkKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuYWRkRmVhdHVyZVRvQmF0Y2goZ2osIGNvbnRleHQsIHhUcmFuc2xhdGUsIHlUcmFuc2xhdGUsIHopO1xuICAgICAgY291bnQrKztcbiAgICAgIHJvd0RvbmUoKTtcbiAgICB9LmJpbmQodGhpcyksIGZ1bmN0aW9uKGVyciwgcmVzdWx0cykge1xuICAgICAgY29uc29sZS5sb2coJ2NvdW50JywgY291bnQpO1xuICAgICAgY29uc29sZS50aW1lRW5kKCdDcmVhdGluZyBpbWFnZScpO1xuXG4gICAgICB2YXIgd3JpdGVTdHJlYW0gPSBjb25jYXQoZnVuY3Rpb24oYnVmZmVyKSB7XG4gICAgICAgIGNhbGxiYWNrKG51bGwsIGJ1ZmZlcik7XG4gICAgICB9KTtcbiAgICAgIFB1cmVJbWFnZS5lbmNvZGVQTkcoaW1hZ2UsIHdyaXRlU3RyZWFtLCBmdW5jdGlvbihlcnIpIHtcbiAgICAgIH0pO1xuICAgIH0uYmluZCh0aGlzKSk7XG4gIH0uYmluZCh0aGlzKSk7XG59XG5cbkZlYXR1cmVUaWxlcy5wcm90b3R5cGUuZHJhd1RpbGVRdWVyeUFsbCA9IGZ1bmN0aW9uKHgsIHksIHpvb20sIGNhbGxiYWNrKSB7XG4gIHZhciBib3VuZGluZ0JveCA9IFRpbGVCb3VuZGluZ0JveFV0aWxzLmdldFdlYk1lcmNhdG9yQm91bmRpbmdCb3hGcm9tWFlaKHgsIHksIHpvb20pO1xuXG4gIHRoaXMuZmVhdHVyZURhby5nZXRDb3VudChmdW5jdGlvbihlcnIsIGNvdW50KSB7XG4gICAgdmFyIHRvdGFsQ291bnQ7XG4gICAgaWYgKHRoaXMubWF4RmVhdHVyZXNQZXJUaWxlKSB7XG4gICAgICB0b3RhbENvdW50ID0gY291bnQ7XG4gICAgfVxuICAgIGlmICghdGhpcy5tYXhGZWF0dXJlc1BlclRpbGUgfHwgdG90YWxDb3VudCA8PSB0aGlzLm1heEZlYXR1cmVzUGVyVGlsZSkge1xuICAgICAgdGhpcy5kcmF3VGlsZVdpdGhCb3VuZGluZ0JveChib3VuZGluZ0JveCwgem9vbSwgY2FsbGJhY2spO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBkcmF3IHRoZSB1bmluZGV4ZWQgbWF4IGZlYXR1cmVzIHRpbGVcbiAgICAgIGNhbGxiYWNrKCk7XG4gICAgfVxuICB9LmJpbmQodGhpcykpO1xufVxuXG5GZWF0dXJlVGlsZXMucHJvdG90eXBlLmRyYXdUaWxlV2l0aEJvdW5kaW5nQm94ID0gZnVuY3Rpb24oYm91bmRpbmdCb3gsIHpvb20sIGNhbGxiYWNrKSB7XG4gIHZhciB3aWR0aCA9IDI1NjtcbiAgdmFyIGhlaWdodCA9IDI1NjtcbiAgdmFyIHBvc2l0aW9uQW5kU2NhbGUgPSBUaWxlQm91bmRpbmdCb3hVdGlscy5kZXRlcm1pbmVQb3NpdGlvbkFuZFNjYWxlKGJvdW5kaW5nQm94LCBoZWlnaHQsIHdpZHRoLCBuZXcgQm91bmRpbmdCb3goLTIwMDM3NTA4LjM0Mjc4OTI0NCwgMjAwMzc1MDguMzQyNzg5MjQ0LCAtMjAwMzc1MDguMzQyNzg5MjQ0LCAyMDAzNzUwOC4zNDI3ODkyNDQpLCBoZWlnaHQgKiAoMSA8PCB6b29tKSwgd2lkdGggKiAoMSA8PCB6b29tKSk7XG4gIHZhciB4VHJhbnNsYXRlID0gLXBvc2l0aW9uQW5kU2NhbGUueFBvc2l0aW9uSW5GaW5hbFRpbGVTdGFydDtcbiAgdmFyIHlUcmFuc2xhdGUgPSAtcG9zaXRpb25BbmRTY2FsZS55UG9zaXRpb25JbkZpbmFsVGlsZVN0YXJ0O1xuXG4gIHZhciBpbWFnZSA9IFB1cmVJbWFnZS5tYWtlKHdpZHRoLCBoZWlnaHQpO1xuICB2YXIgY29udGV4dCA9IGltYWdlLmdldENvbnRleHQoJzJkJyk7XG4gIGNvbnRleHQuY2xlYXJSZWN0KDAsIDAsIHdpZHRoLCBoZWlnaHQpO1xuICBjb250ZXh0LnN0cm9rZVN0eWxlID0gJ2JsdWUnO1xuICBjb250ZXh0LmxpbmVXaWR0aCA9IHRoaXMubGluZVN0cm9rZVdpZHRoO1xuICB2YXIgZmVhdHVyZURhbyA9IHRoaXMuZmVhdHVyZURhbztcbiAgZmVhdHVyZURhby5nZXRTcnMoZnVuY3Rpb24oZXJyLCBzcnMpe1xuICAgIGZlYXR1cmVEYW8ucXVlcnlGb3JFYWNoKGZ1bmN0aW9uKGVyciwgcm93LCByb3dEb25lKXtcbiAgICAgIHZhciBmciA9IGZlYXR1cmVEYW8uZ2V0Um93KHJvdyk7XG4gICAgICB2YXIgZ2ogPSBmci5nZXRHZW9tZXRyeSgpLmdlb21ldHJ5LnRvR2VvSlNPTigpO1xuICAgICAgaWYgKHNycy5vcmdhbml6YXRpb24gIT09ICdFUFNHJyB8fCBzcnMub3JnYW5pemF0aW9uX2Nvb3Jkc3lzX2lkICE9PSA0MzI2KSB7XG4gICAgICAgIGdqID0gcmVwcm9qZWN0LnRvV2dzODQoZ2osIHNycy5vcmdhbml6YXRpb24gKyAnOicgKyBzcnMub3JnYW5pemF0aW9uX2Nvb3Jkc3lzX2lkKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuYWRkRmVhdHVyZVRvQmF0Y2goZ2osIGNvbnRleHQsIHhUcmFuc2xhdGUsIHlUcmFuc2xhdGUsIHpvb20pO1xuICAgICAgcm93RG9uZSgpO1xuICAgIH0uYmluZCh0aGlzKSwgZnVuY3Rpb24oZXJyLCByZXN1bHRzKXtcbiAgICAgIHZhciB3cml0ZVN0cmVhbSA9IGNvbmNhdChmdW5jdGlvbihidWZmZXIpIHtcbiAgICAgICAgY2FsbGJhY2sobnVsbCwgYnVmZmVyKTtcbiAgICAgIH0pO1xuICAgICAgUHVyZUltYWdlLmVuY29kZVBORyhpbWFnZSwgd3JpdGVTdHJlYW0sIGZ1bmN0aW9uKGVycikge1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0uYmluZCh0aGlzKSk7XG5cbn1cblxuRmVhdHVyZVRpbGVzLnByb3RvdHlwZS5hZGRGZWF0dXJlVG9CYXRjaCA9IGZ1bmN0aW9uKGdlb0pzb24sIGNvbnRleHQsIHhUcmFuc2xhdGUsIHlUcmFuc2xhdGUsIHpvb20pIHtcbiAgdmFyIHdpZHRoID0gMjU2O1xuICB2YXIgaGVpZ2h0ID0gMjU2O1xuICB2YXIgcGkgPSBNYXRoLlBJLFxuICAgIHRhdSA9IDIgKiBwaTtcbiAgdmFyIGRyYXdQcm9qZWN0aW9uID0gZDNnZW8uZ2VvTWVyY2F0b3IoKVxuICAgIC5zY2FsZSgoMSA8PCB6b29tKSAqIDI1NiAvIHRhdSlcbiAgICAuY2VudGVyKFstMTgwLCA4NS4wNTExMjg3Nzk4MDY2XSlcbiAgICAudHJhbnNsYXRlKFt4VHJhbnNsYXRlLCB5VHJhbnNsYXRlXSk7XG4gIHZhciBwYXRoID0gbmV3IGQzZ2VvLmdlb1BhdGgoKVxuICAgIC5jb250ZXh0KGNvbnRleHQpXG4gICAgLnByb2plY3Rpb24oZHJhd1Byb2plY3Rpb24pO1xuICBjb250ZXh0LmJlZ2luUGF0aCgpO1xuICBwYXRoKGdlb0pzb24pO1xuICBjb250ZXh0LnN0cm9rZSgpO1xufVxuIiwiLyoqXG4gKiBUaWxlTWF0cml4IG1vZHVsZS5cbiAqIEBtb2R1bGUgdGlsZXMvbWF0cml4XG4gKiBAc2VlIG1vZHVsZTpkYW8vZGFvXG4gKi9cblxudmFyIERhbyA9IHJlcXVpcmUoJy4uLy4uL2Rhby9kYW8nKVxuICAvLyAsIENvbnRlbnRzRGFvID0gcmVxdWlyZSgnLi4vLi4vY29yZS9jb250ZW50cycpLkNvbnRlbnRzRGFvXG4gICwgVGlsZU1hdHJpeFNldERhbyA9IHJlcXVpcmUoJy4uL21hdHJpeHNldCcpLlRpbGVNYXRyaXhTZXREYW87XG5cbnZhciB1dGlsID0gcmVxdWlyZSgndXRpbCcpO1xuXG4vKipcbiAqIFRpbGUgTWF0cml4IG9iamVjdC4gRG9jdW1lbnRzIHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIHRpbGUgbWF0cml4IGF0IGVhY2ggem9vbVxuICogbGV2ZWwgaW4gZWFjaCB0aWxlcyB0YWJsZS4gSXQgYWxsb3dzIEdlb1BhY2thZ2VzIHRvIGNvbnRhaW4gcmVjdGFuZ3VsYXIgYXNcbiAqIHdlbGwgYXMgc3F1YXJlIHRpbGVzIChlLmcuIGZvciBiZXR0ZXIgcmVwcmVzZW50YXRpb24gb2YgcG9sYXIgcmVnaW9ucykuIEl0XG4gKiBhbGxvd3MgdGlsZSBweXJhbWlkcyB3aXRoIHpvb20gbGV2ZWxzIHRoYXQgZGlmZmVyIGluIHJlc29sdXRpb24gYnkgZmFjdG9ycyBvZlxuICogMiwgaXJyZWd1bGFyIGludGVydmFscywgb3IgcmVndWxhciBpbnRlcnZhbHMgb3RoZXIgdGhhbiBmYWN0b3JzIG9mIDIuXG4gKiBAY2xhc3MgVGlsZU1hdHJpeFxuICovXG52YXIgVGlsZU1hdHJpeCA9IGZ1bmN0aW9uKCkge1xuXG4gIC8qKlxuICAgKiBUaWxlIFB5cmFtaWQgVXNlciBEYXRhIFRhYmxlIE5hbWVcbiAgICogQG1lbWJlciB7c3RyaW5nfVxuICAgKi9cbiAgdGhpcy50YWJsZV9uYW1lO1xuXG4gIC8qKlxuICAgKiAwIOKHkCB6b29tX2xldmVsIOKHkCBtYXhfbGV2ZWwgZm9yIHRhYmxlX25hbWVcbiAgICogQG1lbWJlciB7TnVtYmVyfVxuICAgKi9cbiAgdGhpcy56b29tX2xldmVsO1xuXG4gIC8qKlxuICAgKiBOdW1iZXIgb2YgY29sdW1ucyAoPj0gMSkgaW4gdGlsZSBtYXRyaXggYXQgdGhpcyB6b29tIGxldmVsXG4gICAqIEBtZW1iZXIge051bWJlcn1cbiAgICovXG4gIHRoaXMubWF0cml4X3dpZHRoO1xuXG4gIC8qKlxuICAgKiBOdW1iZXIgb2Ygcm93cyAoPj0gMSkgaW4gdGlsZSBtYXRyaXggYXQgdGhpcyB6b29tIGxldmVsXG4gICAqIEBtZW1iZXIge051bWJlcn1cbiAgICovXG4gIHRoaXMubWF0cml4X2hlaWdodDtcblxuICAvKipcbiAgICogVGlsZSB3aWR0aCBpbiBwaXhlbHMgKD49IDEpZm9yIHRoaXMgem9vbSBsZXZlbFxuICAgKiBAbWVtYmVyIHtOdW1iZXJ9XG4gICAqL1xuICB0aGlzLnRpbGVfd2lkdGg7XG5cbiAgLyoqXG4gICAqIFRpbGUgaGVpZ2h0IGluIHBpeGVscyAoPj0gMSlmb3IgdGhpcyB6b29tIGxldmVsXG4gICAqIEBtZW1iZXIge051bWJlcn1cbiAgICovXG4gIHRoaXMudGlsZV9oZWlnaHQ7XG5cbiAgLyoqXG4gICAqIEluIHRfdGFibGVfbmFtZSBzcmlkIHVuaXRzIG9yIGRlZmF1bHQgbWV0ZXJzIGZvciBzcmlkIDAgKD4wKVxuICAgKiBAbWVtYmVyIHtOdW1iZXJ9XG4gICAqL1xuICB0aGlzLnBpeGVsX3hfc2l6ZTtcblxuICAvKipcbiAgICogSW4gdF90YWJsZV9uYW1lIHNyaWQgdW5pdHMgb3IgZGVmYXVsdCBtZXRlcnMgZm9yIHNyaWQgMCAoPjApXG4gICAqIEBtZW1iZXIge051bWJlcn1cbiAgICovXG4gIHRoaXMucGl4ZWxfeV9zaXplO1xufTtcblxuLyoqXG4gKiBUaWxlIE1hdHJpeCBTZXQgRGF0YSBBY2Nlc3MgT2JqZWN0XG4gKiBAY2xhc3MgVGlsZU1hdHJpeFNldERhb1xuICogQGV4dGVuZHMge21vZHVsZTpkYW8vZGFvfkRhb31cbiAqL1xudmFyIFRpbGVNYXRyaXhEYW8gPSBmdW5jdGlvbihjb25uZWN0aW9uKSB7XG4gIERhby5jYWxsKHRoaXMsIGNvbm5lY3Rpb24pO1xufVxuXG51dGlsLmluaGVyaXRzKFRpbGVNYXRyaXhEYW8sIERhbyk7XG5cblRpbGVNYXRyaXhEYW8ucHJvdG90eXBlLmNyZWF0ZU9iamVjdCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIG5ldyBUaWxlTWF0cml4KCk7XG59O1xuXG4vKipcbiAqIGdldCB0aGUgQ29udGVudHMgb2YgdGhlIFRpbGUgbWF0cml4XG4gKiBAcGFyYW0gIHt0aWxlTWF0cml4fSB0aWxlTWF0cml4IHRoZSB0aWxlIG1hdHJpeFxuICogQHBhcmFtICB7RnVuY3Rpb259IGNhbGxiYWNrIHJldHVybnMgdGhlIGNvbnRlbnRzXG4gKi9cblRpbGVNYXRyaXhEYW8ucHJvdG90eXBlLmdldENvbnRlbnRzID0gZnVuY3Rpb24gKHRpbGVNYXRyaXgsIGNhbGxiYWNrKSB7XG4gIHZhciBkYW8gPSB0aGlzLmdldENvbnRlbnRzRGFvKCk7XG4gIHJldHVybiBkYW8ucXVlcnlGb3JJZE9iamVjdCh0aWxlTWF0cml4LnRhYmxlX25hbWUsIGNhbGxiYWNrKTtcbn07XG5cblRpbGVNYXRyaXhEYW8ucHJvdG90eXBlLmdldENvbnRlbnRzRGFvID0gZnVuY3Rpb24gKCkge1xuICB2YXIgQ29udGVudHNEYW8gPSByZXF1aXJlKCcuLi8uLi9jb3JlL2NvbnRlbnRzJykuQ29udGVudHNEYW87XG5cbiAgcmV0dXJuIG5ldyBDb250ZW50c0Rhbyh0aGlzLmNvbm5lY3Rpb24pO1xufTtcblxuVGlsZU1hdHJpeERhby5wcm90b3R5cGUuZ2V0VGlsZU1hdHJpeFNldCA9IGZ1bmN0aW9uICh0aWxlTWF0cml4LCBjYWxsYmFjaykge1xuICB2YXIgZGFvID0gdGhpcy5nZXRUaWxlTWF0cml4U2V0RGFvKCk7XG4gIHJldHVybiBkYW8ucXVlcnlGb3JJZE9iamVjdCh0aWxlTWF0cml4LnRhYmxlX25hbWUsIGNhbGxiYWNrKTtcbn07XG5cblRpbGVNYXRyaXhEYW8ucHJvdG90eXBlLmdldFRpbGVNYXRyaXhTZXREYW8gPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBuZXcgVGlsZU1hdHJpeFNldERhbyh0aGlzLmNvbm5lY3Rpb24pO1xufTtcblxuVGlsZU1hdHJpeERhby5UQUJMRV9OQU1FID0gXCJncGtnX3RpbGVfbWF0cml4XCI7XG5UaWxlTWF0cml4RGFvLkNPTFVNTl9QSzEgPSBcInRhYmxlX25hbWVcIjtcblRpbGVNYXRyaXhEYW8uQ09MVU1OX1BLMiA9IFwiem9vbV9sZXZlbFwiO1xuVGlsZU1hdHJpeERhby5DT0xVTU5fVEFCTEVfTkFNRSA9IFwidGFibGVfbmFtZVwiO1xuVGlsZU1hdHJpeERhby5DT0xVTU5fWk9PTV9MRVZFTCA9IFwiem9vbV9sZXZlbFwiO1xuVGlsZU1hdHJpeERhby5DT0xVTU5fTUFUUklYX1dJRFRIID0gXCJtYXRyaXhfd2lkdGhcIjtcblRpbGVNYXRyaXhEYW8uQ09MVU1OX01BVFJJWF9IRUlHSFQgPSBcIm1hdHJpeF9oZWlnaHRcIjtcblRpbGVNYXRyaXhEYW8uQ09MVU1OX1RJTEVfV0lEVEggPSBcInRpbGVfd2lkdGhcIjtcblRpbGVNYXRyaXhEYW8uQ09MVU1OX1RJTEVfSEVJR0hUID0gXCJ0aWxlX2hlaWdodFwiO1xuVGlsZU1hdHJpeERhby5DT0xVTU5fUElYRUxfWF9TSVpFID0gXCJwaXhlbF94X3NpemVcIjtcblRpbGVNYXRyaXhEYW8uQ09MVU1OX1BJWEVMX1lfU0laRSA9IFwicGl4ZWxfeV9zaXplXCI7XG5cblRpbGVNYXRyaXguVEFCTEVfTkFNRSA9ICd0YWJsZU5hbWUnO1xuVGlsZU1hdHJpeC5aT09NX0xFVkVMID0gJ3pvb21MZXZlbCc7XG5UaWxlTWF0cml4Lk1BVFJJWF9XSURUSCA9ICdtYXRyaXhXaWR0aCc7XG5UaWxlTWF0cml4Lk1BVFJJWF9IRUlHSFQgPSAnbWF0cml4SGVpZ2h0JztcblRpbGVNYXRyaXguVElMRV9XSURUSCA9ICd0aWxlV2lkdGgnO1xuVGlsZU1hdHJpeC5USUxFX0hFSUdIVCA9ICd0aWxlSGVpZ2h0JztcblRpbGVNYXRyaXguUElYRUxfWF9TSVpFID0gJ3BpeGVsWFNpemUnO1xuVGlsZU1hdHJpeC5QSVhFTF9ZX1NJWkUgPSAncGl4ZWxZU2l6ZSc7XG5cblxuVGlsZU1hdHJpeERhby5wcm90b3R5cGUuZ3BrZ1RhYmxlTmFtZSA9ICdncGtnX3RpbGVfbWF0cml4JztcblRpbGVNYXRyaXhEYW8ucHJvdG90eXBlLmlkQ29sdW1ucyA9IFtUaWxlTWF0cml4RGFvLkNPTFVNTl9QSzEsIFRpbGVNYXRyaXhEYW8uQ09MVU1OX1BLMl07XG5UaWxlTWF0cml4RGFvLnByb3RvdHlwZS5jb2x1bW5zID0gW1RpbGVNYXRyaXhEYW8uQ09MVU1OX1RBQkxFX05BTUUsIFRpbGVNYXRyaXhEYW8uQ09MVU1OX1pPT01fTEVWRUwsIFRpbGVNYXRyaXhEYW8uQ09MVU1OX01BVFJJWF9XSURUSCwgVGlsZU1hdHJpeERhby5DT0xVTU5fTUFUUklYX0hFSUdIVCwgVGlsZU1hdHJpeERhby5DT0xVTU5fVElMRV9XSURUSCwgVGlsZU1hdHJpeERhby5DT0xVTU5fVElMRV9IRUlHSFQsIFRpbGVNYXRyaXhEYW8uQ09MVU1OX1BJWEVMX1hfU0laRSwgVGlsZU1hdHJpeERhby5DT0xVTU5fUElYRUxfWV9TSVpFXTtcblxubW9kdWxlLmV4cG9ydHMuVGlsZU1hdHJpeERhbyA9IFRpbGVNYXRyaXhEYW87XG5tb2R1bGUuZXhwb3J0cy5UaWxlTWF0cml4ID0gVGlsZU1hdHJpeDtcbiIsIi8qKlxuICogVGlsZU1hdHJpeFNldCBtb2R1bGUuXG4gKiBAbW9kdWxlIHRpbGVzL21hdHJpeHNldFxuICogQHNlZSBtb2R1bGU6ZGFvL2Rhb1xuICovXG5cbnZhciBEYW8gPSByZXF1aXJlKCcuLi8uLi9kYW8vZGFvJylcbiAgLCBCb3VuZGluZ0JveCA9IHJlcXVpcmUoJy4uLy4uL2JvdW5kaW5nQm94JylcbiAgLCBTcGF0aWFsUmVmZXJlbmNlU3lzdGVtRGFvID0gcmVxdWlyZSgnLi4vLi4vY29yZS9zcnMnKS5TcGF0aWFsUmVmZXJlbmNlU3lzdGVtRGFvO1xuICAvLyAsIENvbnRlbnRzRGFvID0gcmVxdWlyZSgnLi4vLi4vY29yZS9jb250ZW50cycpLkNvbnRlbnRzRGFvO1xuXG52YXIgdXRpbCA9IHJlcXVpcmUoJ3V0aWwnKTtcblxuLyoqXG4gKiBUaWxlIE1hdHJpeCBTZXQgb2JqZWN0LiBEZWZpbmVzIHRoZSBtaW5pbXVtIGJvdW5kaW5nIGJveCAobWluX3gsIG1pbl95LFxuICogbWF4X3gsIG1heF95KSBhbmQgc3BhdGlhbCByZWZlcmVuY2Ugc3lzdGVtIChzcnNfaWQpIGZvciBhbGwgY29udGVudCBpbiBhIHRpbGVcbiAqIHB5cmFtaWQgdXNlciBkYXRhIHRhYmxlLlxuICogQGNsYXNzIFRpbGVNYXRyaXhTZXRcbiAqL1xudmFyIFRpbGVNYXRyaXhTZXQgPSBmdW5jdGlvbigpIHtcblxuICAvKipcbiAgICogVGlsZVB5cmFtaWQgVXNlciBEYXRhIFRhYmxlIE5hbWVcbiAgICogQG1lbWJlciB7c3RyaW5nfVxuICAgKi9cbiAgdGhpcy50YWJsZV9uYW1lO1xuXG4gIC8qKlxuICAgKiBVbmlxdWUgaWRlbnRpZmllciBmb3IgZWFjaCBTcGF0aWFsIFJlZmVyZW5jZSBTeXN0ZW0gd2l0aGluIGEgR2VvUGFja2FnZVxuICAgKiBAbWVtYmVyIHtOdW1iZXJ9XG4gICAqL1xuICB0aGlzLnNyc19pZDtcblxuICAvKipcbiAgICogQm91bmRpbmcgYm94IG1pbmltdW0gZWFzdGluZyBvciBsb25naXR1ZGUgZm9yIGFsbCBjb250ZW50IGluIHRhYmxlX25hbWVcbiAgICogQG1lbWJlciB7TnVtYmVyfVxuICAgKi9cbiAgdGhpcy5taW5feDtcblxuICAvKipcbiAgICogQm91bmRpbmcgYm94IG1pbmltdW0gbm9ydGhpbmcgb3IgbGF0aXR1ZGUgZm9yIGFsbCBjb250ZW50IGluIHRhYmxlX25hbWVcbiAgICogQG1lbWJlciB7TnVtYmVyfVxuICAgKi9cbiAgdGhpcy5taW5feTtcblxuICAvKipcbiAgICogQm91bmRpbmcgYm94IG1heGltdW0gZWFzdGluZyBvciBsb25naXR1ZGUgZm9yIGFsbCBjb250ZW50IGluIHRhYmxlX25hbWVcbiAgICogQG1lbWJlciB7TnVtYmVyfVxuICAgKi9cbiAgdGhpcy5tYXhfeDtcblxuICAvKipcbiAgICogQm91bmRpbmcgYm94IG1heGltdW0gbm9ydGhpbmcgb3IgbGF0aXR1ZGUgZm9yIGFsbCBjb250ZW50IGluIHRhYmxlX25hbWVcbiAgICogQG1lbWJlciB7TnVtYmVyfVxuICAgKi9cbiAgdGhpcy5tYXhfeTtcbn07XG5cblRpbGVNYXRyaXhTZXQucHJvdG90eXBlLnNldEJvdW5kaW5nQm94ID0gZnVuY3Rpb24gKGJvdW5kaW5nQm94KSB7XG4gIHRoaXMubWluX3ggPSBib3VuZGluZ0JveC5taW5Mb25naXR1ZGU7XG4gIHRoaXMubWF4X3ggPSBib3VuZGluZ0JveC5tYXhMb25naXR1ZGU7XG4gIHRoaXMubWluX3kgPSBib3VuZGluZ0JveC5taW5MYXRpdHVkZTtcbiAgdGhpcy5tYXhfeSA9IGJvdW5kaW5nQm94Lm1heExhdGl0dWRlO1xufTtcblxuVGlsZU1hdHJpeFNldC5wcm90b3R5cGUuZ2V0Qm91bmRpbmdCb3ggPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBuZXcgQm91bmRpbmdCb3godGhpcy5taW5feCwgdGhpcy5tYXhfeCwgdGhpcy5taW5feSwgdGhpcy5tYXhfeSk7XG59O1xuXG5UaWxlTWF0cml4U2V0LnByb3RvdHlwZS5zZXRDb250ZW50cyA9IGZ1bmN0aW9uKGNvbnRlbnRzKSB7XG4gIGlmIChjb250ZW50cyAmJiBjb250ZW50cy5kYXRhX3R5cGUgPT09ICd0aWxlcycpIHtcbiAgICB0aGlzLnRhYmxlX25hbWUgPSBjb250ZW50cy50YWJsZV9uYW1lO1xuICB9XG59XG5cblRpbGVNYXRyaXhTZXQucHJvdG90eXBlLnNldFNycyA9IGZ1bmN0aW9uKHNycykge1xuICBpZiAoc3JzKSB7XG4gICAgdGhpcy5zcnNfaWQgPSBzcnMuc3JzX2lkO1xuICB9XG59XG5cbi8qKlxuICogVGlsZSBNYXRyaXggU2V0IERhdGEgQWNjZXNzIE9iamVjdFxuICogQGNsYXNzIFRpbGVNYXRyaXhTZXREYW9cbiAqIEBleHRlbmRzIHttb2R1bGU6ZGFvL2Rhb35EYW99XG4gKi9cbnZhciBUaWxlTWF0cml4U2V0RGFvID0gZnVuY3Rpb24oY29ubmVjdGlvbikge1xuICBEYW8uY2FsbCh0aGlzLCBjb25uZWN0aW9uKTtcbiAgdGhpcy5jb25uZWN0aW9uID0gY29ubmVjdGlvbjtcbn1cblxudXRpbC5pbmhlcml0cyhUaWxlTWF0cml4U2V0RGFvLCBEYW8pO1xuXG5UaWxlTWF0cml4U2V0RGFvLnByb3RvdHlwZS5jcmVhdGVPYmplY3QgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBuZXcgVGlsZU1hdHJpeFNldCgpO1xufTtcblxuLyoqXG4gKiBHZXQgdGhlIHRpbGUgdGFibGUgbmFtZXNcbiAqIEBwYXJhbSAge0Z1bmN0aW9ufSBjYWxsYmFjayByZXR1cm5zIHRoZSB0aWxlIHRhYmxlIG5hbWVzXG4gKi9cblRpbGVNYXRyaXhTZXREYW8ucHJvdG90eXBlLmdldFRpbGVUYWJsZXMgPSBmdW5jdGlvbiAoY2FsbGJhY2spIHtcbiAgdmFyIHRhYmxlTmFtZXMgPSBbXTtcbiAgdGhpcy5jb25uZWN0aW9uLmVhY2goJ3NlbGVjdCAnICsgVGlsZU1hdHJpeFNldERhby5DT0xVTU5fVEFCTEVfTkFNRSArICcgZnJvbSAnICsgVGlsZU1hdHJpeFNldERhby5UQUJMRV9OQU1FLCBmdW5jdGlvbihlcnIsIHJlc3VsdCwgcm93RG9uZSkge1xuICAgIGlmIChlcnIpIHJldHVybiByb3dEb25lKGVycik7XG4gICAgdGFibGVOYW1lcy5wdXNoKHJlc3VsdFtUaWxlTWF0cml4U2V0RGFvLkNPTFVNTl9UQUJMRV9OQU1FXSk7XG4gICAgcm93RG9uZSgpO1xuICB9LCBmdW5jdGlvbihlcnIsIG51bWJlck9mUmVzdWx0cykge1xuICAgIGNhbGxiYWNrKGVyciwgdGFibGVOYW1lcyk7XG4gIH0pO1xufTtcblxuVGlsZU1hdHJpeFNldERhby5wcm90b3R5cGUuZ2V0UHJvamVjdGlvbiA9IGZ1bmN0aW9uICh0aWxlTWF0cml4U2V0LCBjYWxsYmFjaykge1xuICB0aGlzLmdldFNycyh0aWxlTWF0cml4U2V0LCBmdW5jdGlvbihlcnIsIHNycykge1xuICAgIGlmIChlcnIpIHJldHVybiBjYWxsYmFjayhlcnIpO1xuICAgIGlmICghc3JzKSByZXR1cm4gY2FsbGJhY2soKTtcbiAgICB2YXIgc3JzRGFvID0gdGhpcy5nZXRTcGF0aWFsUmVmZXJlbmNlU3lzdGVtRGFvKCk7XG4gICAgY2FsbGJhY2sobnVsbCwgc3JzRGFvLmdldFByb2plY3Rpb24oc3JzKSk7XG4gIH0uYmluZCh0aGlzKSk7XG59O1xuXG4vKipcbiAqIEdldCB0aGUgU3BhdGlhbCBSZWZlcmVuY2UgU3lzdGVtIG9mIHRoZSBUaWxlIE1hdHJpeCBzZXRcbiAqIEBwYXJhbSAge1RpbGVNYXRyaXhTZXR9ICAgdGlsZU1hdHJpeFNldCB0aWxlIG1hdHJpeCBzZXRcbiAqIEBwYXJhbSAge0Z1bmN0aW9ufSBjYWxsYmFjayAgICAgIGNhbGxlZCB3aXRoIGFuIGVycm9yIGlmIG9uZSBvY2N1cnJlZCBhbmQgdGhlIHNyc1xuICovXG5UaWxlTWF0cml4U2V0RGFvLnByb3RvdHlwZS5nZXRTcnMgPSBmdW5jdGlvbiAodGlsZU1hdHJpeFNldCwgY2FsbGJhY2spIHtcbiAgdmFyIGRhbyA9IHRoaXMuZ2V0U3BhdGlhbFJlZmVyZW5jZVN5c3RlbURhbygpO1xuICBkYW8ucXVlcnlGb3JJZE9iamVjdCh0aWxlTWF0cml4U2V0LnNyc19pZCwgY2FsbGJhY2spO1xufTtcblxuVGlsZU1hdHJpeFNldERhby5wcm90b3R5cGUuZ2V0Q29udGVudHMgPSBmdW5jdGlvbiAodGlsZU1hdHJpeFNldCwgY2FsbGJhY2spIHtcbiAgdmFyIGRhbyA9IHRoaXMuZ2V0Q29udGVudHNEYW8oKTtcbiAgZGFvLnF1ZXJ5Rm9ySWRPYmplY3QodGlsZU1hdHJpeFNldC50YWJsZV9uYW1lLCBjYWxsYmFjayk7XG59O1xuXG5UaWxlTWF0cml4U2V0RGFvLnByb3RvdHlwZS5nZXRTcGF0aWFsUmVmZXJlbmNlU3lzdGVtRGFvID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gbmV3IFNwYXRpYWxSZWZlcmVuY2VTeXN0ZW1EYW8odGhpcy5jb25uZWN0aW9uKTtcbn07XG5cblRpbGVNYXRyaXhTZXREYW8ucHJvdG90eXBlLmdldENvbnRlbnRzRGFvID0gZnVuY3Rpb24gKCkge1xuICB2YXIgQ29udGVudHNEYW8gPSByZXF1aXJlKCcuLi8uLi9jb3JlL2NvbnRlbnRzJykuQ29udGVudHNEYW87XG4gIHJldHVybiBuZXcgQ29udGVudHNEYW8odGhpcy5jb25uZWN0aW9uKTtcbn07XG5cblRpbGVNYXRyaXhTZXQuVEFCTEVfTkFNRSA9IFwidGFibGVOYW1lXCI7XG5UaWxlTWF0cml4U2V0Lk1JTl9YID0gXCJtaW5YXCI7XG5UaWxlTWF0cml4U2V0Lk1JTl9ZID0gXCJtaW5ZXCI7XG5UaWxlTWF0cml4U2V0Lk1BWF9YID0gXCJtYXhYXCI7XG5UaWxlTWF0cml4U2V0Lk1BWF9ZID0gXCJtYXhZXCI7XG5UaWxlTWF0cml4U2V0LlNSU19JRCA9IFwic3JzSWRcIjtcblxuVGlsZU1hdHJpeFNldERhby5UQUJMRV9OQU1FID0gXCJncGtnX3RpbGVfbWF0cml4X3NldFwiO1xuVGlsZU1hdHJpeFNldERhby5DT0xVTU5fUEsgPSBcInRhYmxlX25hbWVcIjtcblRpbGVNYXRyaXhTZXREYW8uQ09MVU1OX1RBQkxFX05BTUUgPSBcInRhYmxlX25hbWVcIjtcblRpbGVNYXRyaXhTZXREYW8uQ09MVU1OX1NSU19JRCA9IFwic3JzX2lkXCI7XG5UaWxlTWF0cml4U2V0RGFvLkNPTFVNTl9NSU5fWCA9IFwibWluX3hcIjtcblRpbGVNYXRyaXhTZXREYW8uQ09MVU1OX01JTl9ZID0gXCJtaW5feVwiO1xuVGlsZU1hdHJpeFNldERhby5DT0xVTU5fTUFYX1ggPSBcIm1heF94XCI7XG5UaWxlTWF0cml4U2V0RGFvLkNPTFVNTl9NQVhfWSA9IFwibWF4X3lcIjtcblxuVGlsZU1hdHJpeFNldERhby5wcm90b3R5cGUuZ3BrZ1RhYmxlTmFtZSA9ICdncGtnX3RpbGVfbWF0cml4X3NldCc7XG5UaWxlTWF0cml4U2V0RGFvLnByb3RvdHlwZS5pZENvbHVtbnMgPSBbVGlsZU1hdHJpeFNldERhby5DT0xVTU5fUEtdO1xuVGlsZU1hdHJpeFNldERhby5wcm90b3R5cGUuY29sdW1ucyA9IFtUaWxlTWF0cml4U2V0RGFvLkNPTFVNTl9UQUJMRV9OQU1FLCBUaWxlTWF0cml4U2V0RGFvLkNPTFVNTl9TUlNfSUQsIFRpbGVNYXRyaXhTZXREYW8uQ09MVU1OX01JTl9YLCBUaWxlTWF0cml4U2V0RGFvLkNPTFVNTl9NSU5fWSwgVGlsZU1hdHJpeFNldERhby5DT0xVTU5fTUFYX1gsIFRpbGVNYXRyaXhTZXREYW8uQ09MVU1OX01BWF9ZXTtcblxuVGlsZU1hdHJpeFNldERhby5wcm90b3R5cGUuY29sdW1uVG9Qcm9wZXJ0eU1hcCA9IHt9O1xuVGlsZU1hdHJpeFNldERhby5wcm90b3R5cGUuY29sdW1uVG9Qcm9wZXJ0eU1hcFtUaWxlTWF0cml4U2V0RGFvLkNPTFVNTl9UQUJMRV9OQU1FXSA9IFRpbGVNYXRyaXhTZXQuVEFCTEVfTkFNRTtcblRpbGVNYXRyaXhTZXREYW8ucHJvdG90eXBlLmNvbHVtblRvUHJvcGVydHlNYXBbVGlsZU1hdHJpeFNldERhby5DT0xVTU5fU1JTX0lEXSA9IFRpbGVNYXRyaXhTZXQuU1JTX0lEO1xuVGlsZU1hdHJpeFNldERhby5wcm90b3R5cGUuY29sdW1uVG9Qcm9wZXJ0eU1hcFtUaWxlTWF0cml4U2V0RGFvLkNPTFVNTl9NSU5fWF0gPSBUaWxlTWF0cml4U2V0Lk1JTl9YO1xuVGlsZU1hdHJpeFNldERhby5wcm90b3R5cGUuY29sdW1uVG9Qcm9wZXJ0eU1hcFtUaWxlTWF0cml4U2V0RGFvLkNPTFVNTl9NSU5fWV0gPSBUaWxlTWF0cml4U2V0Lk1JTl9ZO1xuVGlsZU1hdHJpeFNldERhby5wcm90b3R5cGUuY29sdW1uVG9Qcm9wZXJ0eU1hcFtUaWxlTWF0cml4U2V0RGFvLkNPTFVNTl9NQVhfWF0gPSBUaWxlTWF0cml4U2V0Lk1BWF9YO1xuVGlsZU1hdHJpeFNldERhby5wcm90b3R5cGUuY29sdW1uVG9Qcm9wZXJ0eU1hcFtUaWxlTWF0cml4U2V0RGFvLkNPTFVNTl9NQVhfWV0gPSBUaWxlTWF0cml4U2V0Lk1BWF9ZO1xuXG5tb2R1bGUuZXhwb3J0cy5UaWxlTWF0cml4U2V0RGFvID0gVGlsZU1hdHJpeFNldERhbztcbm1vZHVsZS5leHBvcnRzLlRpbGVNYXRyaXhTZXQgPSBUaWxlTWF0cml4U2V0O1xuIiwidmFyIFRpbGVNYXRyaXhTZXREYW8gPSByZXF1aXJlKCcuLi9tYXRyaXhzZXQnKS5UaWxlTWF0cml4U2V0RGFvXG4gICwgVGlsZUJvdW5kaW5nQm94VXRpbHMgPSByZXF1aXJlKCcuLi90aWxlQm91bmRpbmdCb3hVdGlscycpXG4gICwgVGlsZUNyZWF0b3IgPSByZXF1aXJlKCcuLi9jcmVhdG9yJyk7XG5cbnZhciBhc3luYyA9IHJlcXVpcmUoJ2FzeW5jJylcbiAgLCBwcm9qNCA9IHJlcXVpcmUoJ3Byb2o0Jyk7XG5cbnZhciBHZW9QYWNrYWdlVGlsZVJldHJpZXZlciA9IGZ1bmN0aW9uKHRpbGVEYW8sIHdpZHRoLCBoZWlnaHQpIHtcbiAgdGhpcy50aWxlRGFvID0gdGlsZURhbztcbiAgdGhpcy50aWxlRGFvLmFkanVzdFRpbGVNYXRyaXhMZW5ndGhzKCk7XG5cbiAgdGhpcy53aWR0aCA9IHdpZHRoO1xuICB0aGlzLmhlaWdodCA9IGhlaWdodDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBHZW9QYWNrYWdlVGlsZVJldHJpZXZlcjtcblxuR2VvUGFja2FnZVRpbGVSZXRyaWV2ZXIucHJvdG90eXBlLmdldFdlYk1lcmNhdG9yQm91bmRpbmdCb3ggPSBmdW5jdGlvbiAoY2FsbGJhY2spIHtcbiAgaWYgKHRoaXMuc2V0V2ViTWVyY2F0b3JCb3VuZGluZ0JveCkge1xuICAgIHJldHVybiBjYWxsYmFjayhudWxsLCB0aGlzLnNldFdlYk1lcmNhdG9yQm91bmRpbmdCb3gpO1xuICB9IGVsc2Uge1xuICAgIHZhciB0aWxlTWF0cml4U2V0RGFvID0gbmV3IFRpbGVNYXRyaXhTZXREYW8odGhpcy50aWxlRGFvLmNvbm5lY3Rpb24pO1xuICAgIHZhciB0aWxlTWF0cml4U2V0ID0gdGhpcy50aWxlRGFvLnRpbGVNYXRyaXhTZXQ7XG4gICAgdGlsZU1hdHJpeFNldERhby5nZXRTcnModGlsZU1hdHJpeFNldCwgZnVuY3Rpb24oZXJyLCBzcnMpIHtcbiAgICAgIHRoaXMuc2V0UHJvamVjdGlvbkJvdW5kaW5nQm94ID0gdGlsZU1hdHJpeFNldC5nZXRCb3VuZGluZ0JveCgpO1xuICAgICAgaWYgKHNycy5vcmdhbml6YXRpb25fY29vcmRzeXNfaWQgPT09IDQzMjYgJiYgc3JzLm9yZ2FuaXphdGlvbiA9PT0gJ0VQU0cnKSB7XG4gICAgICAgIHRoaXMuc2V0UHJvamVjdGlvbkJvdW5kaW5nQm94Lm1pbkxhdGl0dWRlID0gTWF0aC5tYXgodGhpcy5zZXRQcm9qZWN0aW9uQm91bmRpbmdCb3gubWluTGF0aXR1ZGUsIC04NS4wNSk7XG4gICAgICAgIHRoaXMuc2V0UHJvamVjdGlvbkJvdW5kaW5nQm94Lm1heExhdGl0dWRlID0gTWF0aC5taW4odGhpcy5zZXRQcm9qZWN0aW9uQm91bmRpbmdCb3gubWF4TGF0aXR1ZGUsIDg1LjA1KTtcbiAgICAgIH1cbiAgICAgIHRoaXMuc2V0V2ViTWVyY2F0b3JCb3VuZGluZ0JveCA9IHRoaXMuc2V0UHJvamVjdGlvbkJvdW5kaW5nQm94LnByb2plY3RCb3VuZGluZ0JveCh0aGlzLnRpbGVEYW8ucHJvamVjdGlvbiwgJ0VQU0c6Mzg1NycpO1xuXG4gICAgICBjYWxsYmFjayhudWxsLCB0aGlzLnNldFdlYk1lcmNhdG9yQm91bmRpbmdCb3gpO1xuICAgIH0uYmluZCh0aGlzKSk7XG4gIH1cbn07XG5cbkdlb1BhY2thZ2VUaWxlUmV0cmlldmVyLnByb3RvdHlwZS5oYXNUaWxlID0gZnVuY3Rpb24gKHgsIHksIHpvb20sIGNhbGxiYWNrKSB7XG4gIHZhciB3ZWJNZXJjYXRvckJvdW5kaW5nQm94ID0gVGlsZUJvdW5kaW5nQm94VXRpbHMuZ2V0V2ViTWVyY2F0b3JCb3VuZGluZ0JveEZyb21YWVooeCwgeSwgem9vbSk7XG4gIHZhciB0aWxlTWF0cml4ID0gdGhpcy50aWxlRGFvLmdldFRpbGVNYXRyaXhXaXRoWm9vbUxldmVsKHpvb20pO1xuICB2YXIgdGlsZVJlc3VsdHMgPSBbXTtcbiAgdGhpcy5yZXRyaWV2ZVRpbGVSZXN1bHRzKHdlYk1lcmNhdG9yQm91bmRpbmdCb3gsIHRpbGVNYXRyaXgsIGZ1bmN0aW9uKGVyciwgcmVzdWx0LCBkb25lKSB7XG4gICAgdGlsZVJlc3VsdHMucHVzaChyZXN1bHQpO1xuICAgIGRvbmUoKTtcbiAgfSwgZnVuY3Rpb24oZXJyKSB7XG4gICAgaWYodGlsZVJlc3VsdHMgJiYgdGlsZVJlc3VsdHMubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIGNhbGxiYWNrKGVyciwgdHJ1ZSk7XG4gICAgfVxuICAgIGNhbGxiYWNrKGVyciwgZmFsc2UpO1xuICB9KTtcbn07XG5cbkdlb1BhY2thZ2VUaWxlUmV0cmlldmVyLnByb3RvdHlwZS5nZXRUaWxlID0gZnVuY3Rpb24gKHgsIHksIHpvb20sIGNhbGxiYWNrKSB7XG4gIHZhciB3ZWJNZXJjYXRvckJvdW5kaW5nQm94ID0gVGlsZUJvdW5kaW5nQm94VXRpbHMuZ2V0V2ViTWVyY2F0b3JCb3VuZGluZ0JveEZyb21YWVooeCwgeSwgem9vbSk7XG4gIHRoaXMuZ2V0VGlsZVdpdGhCb3VuZHMod2ViTWVyY2F0b3JCb3VuZGluZ0JveCwgem9vbSwgJ0VQU0c6Mzg1NycsIGNhbGxiYWNrKTtcbn07XG5cbkdlb1BhY2thZ2VUaWxlUmV0cmlldmVyLnByb3RvdHlwZS5kcmF3VGlsZUluID0gZnVuY3Rpb24gKHgsIHksIHpvb20sIGNhbnZhcywgY2FsbGJhY2spIHtcbiAgdmFyIHdlYk1lcmNhdG9yQm91bmRpbmdCb3ggPSBUaWxlQm91bmRpbmdCb3hVdGlscy5nZXRXZWJNZXJjYXRvckJvdW5kaW5nQm94RnJvbVhZWih4LCB5LCB6b29tKTtcbiAgdGhpcy5nZXRUaWxlV2l0aEJvdW5kcyh3ZWJNZXJjYXRvckJvdW5kaW5nQm94LCB6b29tLCAnRVBTRzozODU3JywgY2FudmFzLCBjYWxsYmFjayk7XG59O1xuXG5HZW9QYWNrYWdlVGlsZVJldHJpZXZlci5wcm90b3R5cGUuZ2V0VGlsZVdpdGhXZ3M4NEJvdW5kcyA9IGZ1bmN0aW9uICh3Z3M4NEJvdW5kaW5nQm94LCB6b29tLCBjYWxsYmFjaykge1xuICB2YXIgd2ViTWVyY2F0b3JCb3VuZGluZ0JveCA9IHdnczg0Qm91bmRpbmdCb3gucHJvamVjdEJvdW5kaW5nQm94KCdFUFNHOjQzMjYnLCAnRVBTRzozODU3Jyk7XG4gIHRoaXMuZ2V0VGlsZVdpdGhCb3VuZHMod2ViTWVyY2F0b3JCb3VuZGluZ0JveCwgem9vbSwgJ0VQU0c6Mzg1NycsIGNhbGxiYWNrKTtcbn07XG5cbkdlb1BhY2thZ2VUaWxlUmV0cmlldmVyLnByb3RvdHlwZS5nZXRUaWxlV2l0aFdnczg0Qm91bmRzSW5Qcm9qZWN0aW9uID0gZnVuY3Rpb24gKHdnczg0Qm91bmRpbmdCb3gsIHpvb20sIHRhcmdldFByb2plY3Rpb24sIGNhbGxiYWNrKSB7XG4gIHZhciB0YXJnZXRCb3VuZGluZ0JveCA9IHdnczg0Qm91bmRpbmdCb3gucHJvamVjdEJvdW5kaW5nQm94KCdFUFNHOjQzMjYnLCB0YXJnZXRQcm9qZWN0aW9uKTtcbiAgdGhpcy5nZXRUaWxlV2l0aEJvdW5kcyh0YXJnZXRCb3VuZGluZ0JveCwgem9vbSwgdGFyZ2V0UHJvamVjdGlvbiwgY2FsbGJhY2spO1xufTtcblxuR2VvUGFja2FnZVRpbGVSZXRyaWV2ZXIucHJvdG90eXBlLmdldFdlYk1lcmNhdG9yVGlsZSA9IGZ1bmN0aW9uICh4LCB5LCB6b29tLCBjYWxsYmFjaykge1xuICB2YXIgd2ViTWVyY2F0b3JCb3VuZGluZ0JveCA9IFRpbGVCb3VuZGluZ0JveFV0aWxzLmdldFdlYk1lcmNhdG9yQm91bmRpbmdCb3hGcm9tWFlaKHgsIHksIHpvb20pO1xuICB0aGlzLmdldFRpbGVXaXRoQm91bmRzKHdlYk1lcmNhdG9yQm91bmRpbmdCb3gsIHpvb20sICdFUFNHOjM4NTcnLCBjYWxsYmFjayk7XG59O1xuXG5HZW9QYWNrYWdlVGlsZVJldHJpZXZlci5wcm90b3R5cGUuZ2V0VGlsZVdpdGhCb3VuZHMgPSBmdW5jdGlvbiAodGFyZ2V0Qm91bmRpbmdCb3gsIHpvb20sIHRhcmdldFByb2plY3Rpb24sIGNhbnZhcywgY2FsbGJhY2spIHtcbiAgaWYgKCFjYWxsYmFjaykge1xuICAgIGNhbGxiYWNrID0gY2FudmFzO1xuICAgIGNhbnZhcyA9IHVuZGVmaW5lZDtcbiAgfVxuICB2YXIgdGlsZXMgPSBbXTtcbiAgdmFyIHRpbGVNYXRyaXggPSB0aGlzLnRpbGVEYW8uZ2V0VGlsZU1hdHJpeFdpdGhab29tTGV2ZWwoem9vbSk7XG4gIGlmICghdGlsZU1hdHJpeCkgcmV0dXJuIGNhbGxiYWNrKCk7XG4gIHZhciB0aWxlV2lkdGggPSB0aWxlTWF0cml4LnRpbGVfd2lkdGg7XG4gIHZhciB0aWxlSGVpZ2h0ID0gdGlsZU1hdHJpeC50aWxlX2hlaWdodDtcbiAgdmFyIG1hdHJpeFNldEJvdW5kc0luVGFyZ2V0UHJvamVjdGlvbiA9IHRoaXMudGlsZURhby50aWxlTWF0cml4U2V0LmdldEJvdW5kaW5nQm94KCkucHJvamVjdEJvdW5kaW5nQm94KHRoaXMudGlsZURhby5wcm9qZWN0aW9uLCB0YXJnZXRQcm9qZWN0aW9uKTtcblxuICB2YXIgbWF0cml4VG90YWxCb3VuZGluZ0JveCA9IHRoaXMudGlsZURhby50aWxlTWF0cml4U2V0LmdldEJvdW5kaW5nQm94KCk7XG4gIHZhciB0YXJnZXRCb3VuZGluZ0JveEluTWF0cml4U2V0UHJvamVjdGlvbiA9IHRhcmdldEJvdW5kaW5nQm94LnByb2plY3RCb3VuZGluZ0JveCh0YXJnZXRQcm9qZWN0aW9uLCB0aGlzLnRpbGVEYW8ucHJvamVjdGlvbik7XG5cbiAgdmFyIHRpbGVHcmlkID0gVGlsZUJvdW5kaW5nQm94VXRpbHMuZ2V0VGlsZUdyaWRXaXRoVG90YWxCb3VuZGluZ0JveChtYXRyaXhUb3RhbEJvdW5kaW5nQm94LCB0aWxlTWF0cml4Lm1hdHJpeF93aWR0aCwgdGlsZU1hdHJpeC5tYXRyaXhfaGVpZ2h0LCB0YXJnZXRCb3VuZGluZ0JveEluTWF0cml4U2V0UHJvamVjdGlvbik7XG4gIFRpbGVDcmVhdG9yLmluaXRpYWxpemUodGhpcy53aWR0aCB8fCB0aWxlV2lkdGgsIHRoaXMuaGVpZ2h0IHx8IHRpbGVIZWlnaHQsIHRpbGVNYXRyaXgsIHRoaXMudGlsZURhby50aWxlTWF0cml4U2V0LCB0YXJnZXRCb3VuZGluZ0JveCwgdGhpcy50aWxlRGFvLnNycywgdGFyZ2V0UHJvamVjdGlvbiwgY2FudmFzLCBmdW5jdGlvbihlcnIsIGNyZWF0b3IpIHtcbiAgICB0aGlzLnJldHJpZXZlVGlsZVJlc3VsdHModGFyZ2V0Qm91bmRpbmdCb3gucHJvamVjdEJvdW5kaW5nQm94KHRhcmdldFByb2plY3Rpb24sIHRoaXMudGlsZURhby5wcm9qZWN0aW9uKSwgdGlsZU1hdHJpeCwgZnVuY3Rpb24oZXJyLCB0aWxlLCB0aWxlRG9uZSkge1xuICAgICAgLy8gZ2V0IHRoZSBib3VuZGluZyBib3ggb2YgdGhlIHRpbGUgaW4gdGhlIHRhcmdldCBwcm9qZWN0aW9uXG4gICAgICB2YXIgdGlsZVRhcmdldFByb2plY3Rpb25Cb3VuZGluZ0JveCA9IFRpbGVCb3VuZGluZ0JveFV0aWxzLmdldFRpbGVCb3VuZGluZ0JveChtYXRyaXhTZXRCb3VuZHNJblRhcmdldFByb2plY3Rpb24sIHRpbGVNYXRyaXgsIHRpbGUuZ2V0VGlsZUNvbHVtbigpLCB0aWxlLmdldFRpbGVSb3coKSk7XG4gICAgICB0aWxlcy5wdXNoKHtcbiAgICAgICAgZGF0YTogdGlsZS5nZXRUaWxlRGF0YSgpLFxuICAgICAgICBncmlkQ29sdW1uOiB0aWxlLmdldFRpbGVDb2x1bW4oKSxcbiAgICAgICAgZ3JpZFJvdzogdGlsZS5nZXRUaWxlUm93KClcbiAgICAgIH0pO1xuICAgICAgdGlsZURvbmUoKTtcbiAgICB9LmJpbmQodGhpcyksIGZ1bmN0aW9uKGVycikge1xuICAgICAgYXN5bmMuZWFjaFNlcmllcyh0aWxlcywgZnVuY3Rpb24odGlsZSwgY2FsbGJhY2spIHtcbiAgICAgICAgYXN5bmMuc2V0SW1tZWRpYXRlKGZ1bmN0aW9uKCkge1xuICAgICAgICAgIGNyZWF0b3IuYWRkVGlsZSh0aWxlLmRhdGEsIHRpbGUuZ3JpZENvbHVtbiwgdGlsZS5ncmlkUm93LCBjYWxsYmFjayk7XG4gICAgICAgIH0pO1xuICAgICAgfSwgZnVuY3Rpb24oZXJyKSB7XG4gICAgICAgIGlmICghY2FudmFzKSB7XG4gICAgICAgICAgcmV0dXJuIGNyZWF0b3IuZ2V0Q29tcGxldGVUaWxlKCdwbmcnLCBjYWxsYmFjayk7XG4gICAgICAgIH1cbiAgICAgICAgY2FsbGJhY2soKTtcbiAgICAgIH0uYmluZCh0aGlzKSk7XG4gICAgfS5iaW5kKHRoaXMpKTtcbiAgfS5iaW5kKHRoaXMpKTtcbn07XG5cbkdlb1BhY2thZ2VUaWxlUmV0cmlldmVyLnByb3RvdHlwZS5nZXRUaWxlTWF0cml4V2l0aFdlYk1lcmNhdG9yQm91bmRpbmdCb3ggPSBmdW5jdGlvbiAoem9vbSkge1xuICByZXR1cm4gdGhpcy50aWxlRGFvLmdldFRpbGVNYXRyaXhXaXRoWm9vbUxldmVsKHpvb20pO1xufTtcblxuR2VvUGFja2FnZVRpbGVSZXRyaWV2ZXIucHJvdG90eXBlLnJldHJpZXZlVGlsZVJlc3VsdHMgPSBmdW5jdGlvbiAodGlsZU1hdHJpeFByb2plY3Rpb25Cb3VuZGluZ0JveCwgdGlsZU1hdHJpeCwgdGlsZUNhbGxiYWNrLCBkb25lQ2FsbGJhY2spIHtcbiAgaWYodGlsZU1hdHJpeCkge1xuICAgIHZhciB0aWxlR3JpZCA9IFRpbGVCb3VuZGluZ0JveFV0aWxzLmdldFRpbGVHcmlkV2l0aFRvdGFsQm91bmRpbmdCb3godGhpcy50aWxlRGFvLnRpbGVNYXRyaXhTZXQuZ2V0Qm91bmRpbmdCb3goKSwgdGlsZU1hdHJpeC5tYXRyaXhfd2lkdGgsIHRpbGVNYXRyaXgubWF0cml4X2hlaWdodCwgdGlsZU1hdHJpeFByb2plY3Rpb25Cb3VuZGluZ0JveCk7XG4gICAgdGhpcy50aWxlRGFvLnF1ZXJ5QnlUaWxlR3JpZCh0aWxlR3JpZCwgdGlsZU1hdHJpeC56b29tX2xldmVsLCB0aWxlQ2FsbGJhY2ssIGRvbmVDYWxsYmFjayk7XG4gIH0gZWxzZSB7XG4gICAgZG9uZUNhbGxiYWNrKCk7XG4gIH1cbn07XG4iLCJcbnZhciBCb3VuZGluZ0JveCA9IHJlcXVpcmUoJy4uL2JvdW5kaW5nQm94JylcbiAgLCBUaWxlR3JpZCA9IHJlcXVpcmUoJy4vdGlsZUdyaWQnKTtcblxudmFyIHByb2o0ID0gcmVxdWlyZSgncHJvajQnKTtcblxudmFyIFdFQl9NRVJDQVRPUl9IQUxGX1dPUkxEX1dJRFRIID0gMjAwMzc1MDguMzQyNzg5MjQ0O1xuXG5tb2R1bGUuZXhwb3J0cy53ZWJNZXJjYXRvclRpbGVCb3ggPSBmdW5jdGlvbih3ZWJNZXJjYXRvckJvdW5kaW5nQm94LCB6b29tKSB7XG4gIHZhciB0b3RhbEJveCA9IG5ldyBCb3VuZGluZ0JveCgtMjAwMzc1MDguMzQyNzg5MjQ0LCAyMDAzNzUwOC4zNDI3ODkyNDQsIC0yMDAzNzUwOC4zNDI3ODkyNDQsIDIwMDM3NTA4LjM0Mjc4OTI0NCk7XG5cbiAgdmFyIHRpbGVzUGVyU2lkZSA9IG1vZHVsZS5leHBvcnRzLnRpbGVzUGVyU2lkZVdpdGhab29tKHpvb20pO1xuICB2YXIgdGlsZVNpemUgPSBtb2R1bGUuZXhwb3J0cy50aWxlU2l6ZVdpdGhUaWxlc1BlclNpZGUodGlsZXNQZXJTaWRlKTtcblxuICB2YXIgbWluWCA9IE1hdGguZmxvb3IoKHdlYk1lcmNhdG9yQm91bmRpbmdCb3gubWluTG9uZ2l0dWRlIC0gKC0xICogV0VCX01FUkNBVE9SX0hBTEZfV09STERfV0lEVEgpKSAvIHRpbGVTaXplKTtcbiAgdmFyIG1heFggPSBNYXRoLm1heCgwLE1hdGguZmxvb3IoKCh3ZWJNZXJjYXRvckJvdW5kaW5nQm94Lm1heExvbmdpdHVkZSAtICgtMSAqIFdFQl9NRVJDQVRPUl9IQUxGX1dPUkxEX1dJRFRIKSkgLyB0aWxlU2l6ZSkgLSAxKSk7XG4gIHZhciBtYXhZID0gTWF0aC5tYXgoMCxNYXRoLmNlaWwoKCgtMSAqICh3ZWJNZXJjYXRvckJvdW5kaW5nQm94Lm1pbkxhdGl0dWRlIC0gV0VCX01FUkNBVE9SX0hBTEZfV09STERfV0lEVEgpKSAvIHRpbGVTaXplKSAtIDEpKTtcbiAgdmFyIG1pblkgPSBNYXRoLmZsb29yKCgtMSAqICh3ZWJNZXJjYXRvckJvdW5kaW5nQm94Lm1heExhdGl0dWRlIC0gV0VCX01FUkNBVE9SX0hBTEZfV09STERfV0lEVEgpKSAvIHRpbGVTaXplKTtcblxuICByZXR1cm4ge1xuICAgIG1pblg6IG1pblgsXG4gICAgbWF4WDogbWF4WCxcbiAgICBtaW5ZOiBtaW5ZLFxuICAgIG1heFk6IG1heFlcbiAgfTtcbn1cbi8vXG4vL1xuLy8gLyoqXG4vLyAgKiAgVGlsZSBCb3VuZGluZyBCb3ggdXRpbGl0eSBtZXRob2RzXG4vLyAgKi9cbi8vIEBpbnRlcmZhY2UgR1BLR1RpbGVCb3VuZGluZ0JveFV0aWxzIDogTlNPYmplY3Rcbi8vXG4vLyAvKipcbi8vICAqICBHZXQgdGhlIG92ZXJsYXBwaW5nIGJvdW5kaW5nIGJveCBiZXR3ZWVuIHRoZSB0d28gYm91bmRpbmcgYm94ZXNcbi8vICAqXG4vLyAgKiAgQHBhcmFtIGJvdW5kaW5nQm94ICBib3VuZGluZyBib3hcbi8vICAqICBAcGFyYW0gYm91bmRpbmdCb3gyIGJvdW5kaW5nIGJveCAyXG4vLyAgKlxuLy8gICogIEByZXR1cm4gYm91bmRpbmcgYm94XG4vLyAgKi9cbi8vICsoR1BLR0JvdW5kaW5nQm94ICopIG92ZXJsYXBXaXRoQm91bmRpbmdCb3g6IChHUEtHQm91bmRpbmdCb3ggKikgYm91bmRpbmdCb3ggYW5kQm91bmRpbmdCb3g6IChHUEtHQm91bmRpbmdCb3ggKikgYm91bmRpbmdCb3gyO1xuLy9cbi8vIC8qKlxuLy8gICogIEdldCB0aGUgdW5pb24gYm91bmRpbmcgYm94IGNvbWJpbmluZyB0aGUgdHdvIGJvdW5kaW5nIGJveGVzXG4vLyAgKlxuLy8gICogIEBwYXJhbSBib3VuZGluZ0JveCAgYm91bmRpbmcgYm94XG4vLyAgKiAgQHBhcmFtIGJvdW5kaW5nQm94MiBib3VuZGluZyBib3ggMlxuLy8gICpcbi8vICAqICBAcmV0dXJuIGJvdW5kaW5nIGJveFxuLy8gICovXG4vLyArKEdQS0dCb3VuZGluZ0JveCAqKSB1bmlvbldpdGhCb3VuZGluZ0JveDogKEdQS0dCb3VuZGluZ0JveCAqKSBib3VuZGluZ0JveCBhbmRCb3VuZGluZ0JveDogKEdQS0dCb3VuZGluZ0JveCAqKSBib3VuZGluZ0JveDI7XG4vL1xuLy8gLyoqXG4vLyAgKiAgR2V0IHRoZSBYIHBpeGVsIGZvciB3aGVyZSB0aGUgbG9uZ2l0dWRlIGZpdHMgaW50byB0aGUgYm91bmRpbmcgYm94XG4vLyAgKlxuLy8gICogIEBwYXJhbSB3aWR0aCAgICAgICB3aWR0aFxuLy8gICogIEBwYXJhbSBib3VuZGluZ0JveCBib3VuZGluZyBib3hcbi8vICAqICBAcGFyYW0gbG9uZ2l0dWRlICAgbG9uZ2l0dWRlXG4vLyAgKlxuLy8gICogIEByZXR1cm4geCBwaXhlbFxuLy8gICovXG5tb2R1bGUuZXhwb3J0cy5nZXRYUGl4ZWxPZmZzZXQgPSBmdW5jdGlvbih3aWR0aCwgYm91bmRpbmdCb3gsIGxvbmdpdHVkZSkge1xuICB2YXIgYm94V2lkdGggPSBib3VuZGluZ0JveC5tYXhMb25naXR1ZGUgLSBib3VuZGluZ0JveC5taW5Mb25naXR1ZGU7XG4gIHZhciBvZmZzZXQgPSBsb25naXR1ZGUgLSBib3VuZGluZ0JveC5taW5Mb25naXR1ZGU7XG4gIHZhciBwZXJjZW50YWdlID0gb2Zmc2V0IC8gYm94V2lkdGg7XG4gIHZhciBwaXhlbCA9IHBlcmNlbnRhZ2UgKiB3aWR0aDtcblxuICByZXR1cm4gcGl4ZWw7XG59XG4vKipcbiAqICBHZXQgdGhlIGxvbmdpdHVkZSBmcm9tIHRoZSBwaXhlbCBsb2NhdGlvbiwgYm91bmRpbmcgYm94LCBhbmQgaW1hZ2Ugd2lkdGhcbiAqXG4gKiAgQHBhcmFtIHdpZHRoICAgICAgIHdpZHRoXG4gKiAgQHBhcmFtIGJvdW5kaW5nQm94IGJvdW5kaW5nIGJveFxuICogIEBwYXJhbSBwaXhlbCAgICAgICB4IHBpeGVsXG4gKlxuICogIEByZXR1cm4gbG9uZ2l0dWRlXG4gKi9cbm1vZHVsZS5leHBvcnRzLmdldExvbmdpdHVkZUZyb21QaXhlbFdpdGhXaWR0aCA9IGZ1bmN0aW9uKHdpZHRoLCBib3VuZGluZ0JveCwgcGl4ZWwpIHtcbiAgdmFyIGJveFdpZHRoID0gYm91bmRpbmdCb3gubWF4TG9uZ2l0dWRlIC0gYm91bmRpbmdCb3gubWluTG9uZ2l0dWRlO1xuICB2YXIgcGVyY2VudGFnZSA9IHBpeGVsIC8gd2lkdGg7XG4gIHZhciBvZmZzZXQgPSBwZXJjZW50YWdlICogYm94V2lkdGg7XG4gIHJldHVybiBvZmZzZXQgKyBib3VuZGluZ0JveC5taW5Mb25naXR1ZGU7XG59XG5cbm1vZHVsZS5leHBvcnRzLmdldExhdGl0dWRlRnJvbVBpeGVsV2l0aEhlaWdodCA9IGZ1bmN0aW9uKGhlaWdodCwgYm91bmRpbmdCb3gsIHBpeGVsKSB7XG4gIHZhciBib3hIZWlnaHQgPSBib3VuZGluZ0JveC5tYXhMYXRpdHVkZSAtIGJvdW5kaW5nQm94Lm1pbkxhdGl0dWRlO1xuICB2YXIgcGVyY2VudGFnZSA9IHBpeGVsIC8gaGVpZ2h0O1xuICB2YXIgb2Zmc2V0ID0gcGVyY2VudGFnZSAqIGJveEhlaWdodDtcbiAgcmV0dXJuIGJvdW5kaW5nQm94Lm1heExhdGl0dWRlIC0gb2Zmc2V0O1xufVxuXG4vL1xuLy8gLyoqXG4vLyAgKiAgR2V0IHRoZSBZIHBpeGVsIGZvciB3aGVyZSB0aGUgbGF0aXR1ZGUgZml0cyBpbnRvIHRoZSBib3VuZGluZyBib3hcbi8vICAqXG4vLyAgKiAgQHBhcmFtIGhlaWdodCAgICAgIGhlaWdodFxuLy8gICogIEBwYXJhbSBib3VuZGluZ0JveCBib3VuZGluZyBib3hcbi8vICAqICBAcGFyYW0gbGF0aXR1ZGUgICAgbGF0aXR1ZGVcbi8vICAqXG4vLyAgKiAgQHJldHVybiB5IHBpeGVsXG4vLyAgKi9cbm1vZHVsZS5leHBvcnRzLmdldFlQaXhlbE9mZnNldCA9IGZ1bmN0aW9uKGhlaWdodCwgYm91bmRpbmdCb3gsIGxhdGl0dWRlKSB7XG4gIHZhciBib3hIZWlnaHQgPSBib3VuZGluZ0JveC5tYXhMYXRpdHVkZSAtIGJvdW5kaW5nQm94Lm1pbkxhdGl0dWRlO1xuICB2YXIgb2Zmc2V0ID0gYm91bmRpbmdCb3gubWF4TGF0aXR1ZGUgLSBsYXRpdHVkZTtcbiAgdmFyIHBlcmNlbnRhZ2UgPSBvZmZzZXQgLyBib3hIZWlnaHQ7XG4gIHZhciBwaXhlbCA9IHBlcmNlbnRhZ2UgKiBoZWlnaHQ7XG5cbiAgcmV0dXJuIHBpeGVsO1xufVxuXG5tb2R1bGUuZXhwb3J0cy5kZXRlcm1pbmVQb3NpdGlvbkFuZFNjYWxlID0gZnVuY3Rpb24oZ2VvUGFja2FnZVRpbGVCb3VuZGluZ0JveCwgdGlsZUhlaWdodCwgdGlsZVdpZHRoLCB0b3RhbEJvdW5kaW5nQm94LCB0b3RhbEhlaWdodCwgdG90YWxXaWR0aCkge1xuICB2YXIgcCA9IHt9O1xuXG4gIHZhciBib3hXaWR0aCA9IHRvdGFsQm91bmRpbmdCb3gubWF4TG9uZ2l0dWRlIC0gdG90YWxCb3VuZGluZ0JveC5taW5Mb25naXR1ZGU7XG4gIHZhciB4b2Zmc2V0TWluID0gZ2VvUGFja2FnZVRpbGVCb3VuZGluZ0JveC5taW5Mb25naXR1ZGUgLSB0b3RhbEJvdW5kaW5nQm94Lm1pbkxvbmdpdHVkZTtcbiAgdmFyIHhwZXJjZW50YWdlTWluID0geG9mZnNldE1pbiAvIGJveFdpZHRoO1xuICB2YXIgeG9mZnNldE1heCA9IHRvdGFsQm91bmRpbmdCb3gubWF4TG9uZ2l0dWRlIC0gZ2VvUGFja2FnZVRpbGVCb3VuZGluZ0JveC5tYXhMb25naXR1ZGU7XG4gIHZhciB4cGVyY2VudGFnZU1heCA9IHhvZmZzZXRNYXggLyBib3hXaWR0aDtcbiAgdmFyIHhjcm9wTWF4ID0gZ2VvUGFja2FnZVRpbGVCb3VuZGluZ0JveC5tYXhMb25naXR1ZGUgLSB0b3RhbEJvdW5kaW5nQm94Lm1heExvbmdpdHVkZTtcbiAgdmFyIHhjcm9wUGVyY2VudGFnZU1heCA9IHhjcm9wTWF4IC8gYm94V2lkdGg7XG5cbiAgcC54UG9zaXRpb25JbkZpbmFsVGlsZVN0YXJ0ID0gTWF0aC5yb3VuZChNYXRoLm1heCgwLCB4cGVyY2VudGFnZU1pbiAqIHRvdGFsV2lkdGgpKTtcbiAgcC54UG9zaXRpb25JbkZpbmFsVGlsZUVuZCA9IE1hdGgucm91bmQoTWF0aC5taW4odG90YWxXaWR0aCwgdG90YWxXaWR0aCAtICh4cGVyY2VudGFnZU1heCAqIHRvdGFsV2lkdGgpKSk7XG4gIHAudGlsZUNyb3BYU3RhcnQgPSBNYXRoLnJvdW5kKE1hdGgubWF4KDAsIDAgLSB4cGVyY2VudGFnZU1pbiAqIHRpbGVXaWR0aCkpO1xuICBwLnRpbGVDcm9wWEVuZCA9IE1hdGgucm91bmQoTWF0aC5taW4odGlsZVdpZHRoLTEsIHRpbGVXaWR0aC0xIC0gKHhjcm9wUGVyY2VudGFnZU1heCAqIHRpbGVXaWR0aCkpKTtcbiAgcC54U2NhbGUgPSAocC54UG9zaXRpb25JbkZpbmFsVGlsZUVuZCAtIHAueFBvc2l0aW9uSW5GaW5hbFRpbGVTdGFydCkgLyAoMSArIHAudGlsZUNyb3BYRW5kIC0gcC50aWxlQ3JvcFhTdGFydCk7XG5cbiAgdmFyIGJveEhlaWdodCA9IHRvdGFsQm91bmRpbmdCb3gubWF4TGF0aXR1ZGUgLSB0b3RhbEJvdW5kaW5nQm94Lm1pbkxhdGl0dWRlO1xuICB2YXIgeW9mZnNldE1heCA9IHRvdGFsQm91bmRpbmdCb3gubWF4TGF0aXR1ZGUgLSBnZW9QYWNrYWdlVGlsZUJvdW5kaW5nQm94Lm1heExhdGl0dWRlO1xuICB2YXIgeXBlcmNlbnRhZ2VNYXggPSB5b2Zmc2V0TWF4IC8gYm94SGVpZ2h0O1xuICB2YXIgeW9mZnNldE1pbiA9IGdlb1BhY2thZ2VUaWxlQm91bmRpbmdCb3gubWluTGF0aXR1ZGUgLSB0b3RhbEJvdW5kaW5nQm94Lm1pbkxhdGl0dWRlO1xuICB2YXIgeXBlcmNlbnRhZ2VNaW4gPSB5b2Zmc2V0TWluIC8gYm94SGVpZ2h0O1xuICB2YXIgeWNyb3BNaW4gPSB0b3RhbEJvdW5kaW5nQm94Lm1pbkxhdGl0dWRlIC0gZ2VvUGFja2FnZVRpbGVCb3VuZGluZ0JveC5taW5MYXRpdHVkZTtcbiAgdmFyIHljcm9wUGVyY2VudGFnZU1pbiA9IHljcm9wTWluIC8gYm94SGVpZ2h0O1xuXG4gIHAueVBvc2l0aW9uSW5GaW5hbFRpbGVTdGFydCA9IE1hdGgucm91bmQoTWF0aC5tYXgoMCwgeXBlcmNlbnRhZ2VNYXggKiB0b3RhbEhlaWdodCkpO1xuICBwLnlQb3NpdGlvbkluRmluYWxUaWxlRW5kID0gTWF0aC5yb3VuZChNYXRoLm1pbih0b3RhbEhlaWdodCwgdG90YWxIZWlnaHQgLSB5cGVyY2VudGFnZU1pbiAqIHRvdGFsSGVpZ2h0KSk7XG4gIHAudGlsZUNyb3BZU3RhcnQgPSBNYXRoLnJvdW5kKE1hdGgubWF4KDAsIDAgLSB5cGVyY2VudGFnZU1heCAqIHRpbGVIZWlnaHQpKTtcbiAgcC50aWxlQ3JvcFlFbmQgPSBNYXRoLnJvdW5kKE1hdGgubWluKHRpbGVIZWlnaHQtMSwgdGlsZUhlaWdodC0xIC0gKHljcm9wUGVyY2VudGFnZU1pbiAqIHRpbGVIZWlnaHQpKSk7XG4gIHAueVNjYWxlID0gKHAueVBvc2l0aW9uSW5GaW5hbFRpbGVFbmQgLSBwLnlQb3NpdGlvbkluRmluYWxUaWxlU3RhcnQpIC8gKDEgKyBwLnRpbGVDcm9wWUVuZCAtIHAudGlsZUNyb3BZU3RhcnQpO1xuXG4gIHJldHVybiBwO1xufVxuXG4vKipcbiAqIEdldCB0aGUgV2ViIE1lcmNhdG9yIHRpbGUgYm91bmRpbmcgYm94IGZyb20gdGhlIFN0YW5kYXJkIE1hcHMgQVBJIHRpbGVcbiAqIGNvb3JkaW5hdGVzIGFuZCB6b29tIGxldmVsXG4gKlxuICogIEBwYXJhbSB4ICAgIHhcbiAqICBAcGFyYW0geSAgICB5XG4gKiAgQHBhcmFtIHpvb20gem9vbSBsZXZlbFxuICpcbiAqICBAcmV0dXJuIHdlYiBtZXJjYXRvciBib3VuZGluZyBib3hcbiAqL1xubW9kdWxlLmV4cG9ydHMuZ2V0V2ViTWVyY2F0b3JCb3VuZGluZ0JveEZyb21YWVogPSBmdW5jdGlvbih4LCB5LCB6b29tKSB7XG4gIHZhciB0aWxlc1BlclNpZGUgPSBtb2R1bGUuZXhwb3J0cy50aWxlc1BlclNpZGVXaXRoWm9vbSh6b29tKTtcblx0dmFyIHRpbGVTaXplID0gbW9kdWxlLmV4cG9ydHMudGlsZVNpemVXaXRoVGlsZXNQZXJTaWRlKHRpbGVzUGVyU2lkZSk7XG5cblx0dmFyIG1pbkxvbiA9ICgtMSAqIFdFQl9NRVJDQVRPUl9IQUxGX1dPUkxEX1dJRFRIKVxuXHRcdFx0KyAoeCAqIHRpbGVTaXplKTtcblx0dmFyIG1heExvbiA9ICgtMSAqIFdFQl9NRVJDQVRPUl9IQUxGX1dPUkxEX1dJRFRIKVxuXHRcdFx0KyAoKHggKyAxKSAqIHRpbGVTaXplKTtcblx0dmFyIG1pbkxhdCA9IFdFQl9NRVJDQVRPUl9IQUxGX1dPUkxEX1dJRFRIXG5cdFx0XHQtICgoeSArIDEpICogdGlsZVNpemUpO1xuXHR2YXIgbWF4TGF0ID0gV0VCX01FUkNBVE9SX0hBTEZfV09STERfV0lEVEhcblx0XHRcdC0gKHkgKiB0aWxlU2l6ZSk7XG5cblx0dmFyIGJveCA9IG5ldyBCb3VuZGluZ0JveChtaW5Mb24sIG1heExvbiwgbWluTGF0LCBtYXhMYXQpO1xuXG5cdHJldHVybiBib3g7XG59XG5cbi8qKlxuICogIEdldCB0aGUgdGlsZSBzaXplIGluIG1ldGVyc1xuICpcbiAqICBAcGFyYW0gdGlsZXNQZXJTaWRlIHRpbGVzIHBlciBzaWRlXG4gKlxuICogIEByZXR1cm4gbWV0ZXJzXG4gKi9cbm1vZHVsZS5leHBvcnRzLnRpbGVTaXplV2l0aFRpbGVzUGVyU2lkZSA9IGZ1bmN0aW9uKHRpbGVzUGVyU2lkZSkge1xuICByZXR1cm4gKDIqV0VCX01FUkNBVE9SX0hBTEZfV09STERfV0lEVEgpIC8gdGlsZXNQZXJTaWRlO1xufVxuXG4vKipcbiAqICBHZXQgdGhlIHRpbGVzIHBlciBzaWRlLCB3aWR0aCBhbmQgaGVpZ2h0LCBhdCB0aGUgem9vbSBsZXZlbFxuICpcbiAqICBAcGFyYW0gem9vbSB6b29tIGxldmVsXG4gKlxuICogIEByZXR1cm4gdGlsZXMgcGVyIHNpZGVcbiAqL1xubW9kdWxlLmV4cG9ydHMudGlsZXNQZXJTaWRlV2l0aFpvb20gPSBmdW5jdGlvbih6b29tKSB7XG4gIHJldHVybiBNYXRoLnBvdygyLHpvb20pO1xufVxuXG4vKipcbiAqICBHZXQgdGhlIHRpbGUgZ3JpZFxuICpcbiAqICBAcGFyYW0gd2ViTWVyY2F0b3JUb3RhbEJveCAgICB3ZWIgbWVyY2F0b3IgdG90YWwgYm91bmRpbmcgYm94XG4gKiAgQHBhcmFtIG1hdHJpeFdpZHRoICAgICAgICAgICAgbWF0cml4IHdpZHRoXG4gKiAgQHBhcmFtIG1hdHJpeEhlaWdodCAgICAgICAgICAgbWF0cml4IGhlaWdodFxuICogIEBwYXJhbSBib3VuZGluZ0JveCAgICAgICAgICAgIGJvdW5kaW5nIGJveFxuICpcbiAqICBAcmV0dXJuIHRpbGUgZ3JpZFxuICovXG5tb2R1bGUuZXhwb3J0cy5nZXRUaWxlR3JpZFdpdGhUb3RhbEJvdW5kaW5nQm94ID0gZnVuY3Rpb24odG90YWxCb3VuZGluZ0JveCwgbWF0cml4V2lkdGgsIG1hdHJpeEhlaWdodCwgYm91bmRpbmdCb3gpIHtcbiAgdmFyIG1pbkNvbHVtbiA9IG1vZHVsZS5leHBvcnRzLmdldFRpbGVDb2x1bW5XaXRoVG90YWxCb3VuZGluZ0JveCh0b3RhbEJvdW5kaW5nQm94LCBtYXRyaXhXaWR0aCwgYm91bmRpbmdCb3gubWluTG9uZ2l0dWRlKTtcbiAgdmFyIG1heENvbHVtbiA9IG1vZHVsZS5leHBvcnRzLmdldFRpbGVDb2x1bW5XaXRoVG90YWxCb3VuZGluZ0JveCh0b3RhbEJvdW5kaW5nQm94LCBtYXRyaXhXaWR0aCwgYm91bmRpbmdCb3gubWF4TG9uZ2l0dWRlLCB0cnVlKTtcblxuICBpZiAobWluQ29sdW1uIDwgbWF0cml4V2lkdGggJiYgbWF4Q29sdW1uID49IDApIHtcbiAgICBpZiAobWluQ29sdW1uIDwgMCkge1xuICAgICAgbWluQ29sdW1uID0gMDtcbiAgICB9XG4gICAgaWYgKG1heENvbHVtbiA+PSBtYXRyaXhXaWR0aCkge1xuICAgICAgbWF4Q29sdW1uID0gbWF0cml4V2lkdGggLSAxO1xuICAgIH1cbiAgfVxuXG4gIHZhciBtYXhSb3cgPSBtb2R1bGUuZXhwb3J0cy5nZXRUaWxlUm93V2l0aFRvdGFsQm91bmRpbmdCb3godG90YWxCb3VuZGluZ0JveCwgbWF0cml4SGVpZ2h0LCBib3VuZGluZ0JveC5taW5MYXRpdHVkZSwgdHJ1ZSk7XG4gIHZhciBtaW5Sb3cgPSBtb2R1bGUuZXhwb3J0cy5nZXRUaWxlUm93V2l0aFRvdGFsQm91bmRpbmdCb3godG90YWxCb3VuZGluZ0JveCwgbWF0cml4SGVpZ2h0LCBib3VuZGluZ0JveC5tYXhMYXRpdHVkZSk7XG5cblxuICBpZihtaW5Sb3cgPCBtYXRyaXhIZWlnaHQgJiYgbWF4Um93ID49IDApe1xuICAgIGlmKG1pblJvdyA8IDApe1xuICAgICAgbWluUm93ID0gMDtcbiAgICB9XG4gICAgaWYobWF4Um93ID49IG1hdHJpeEhlaWdodCl7XG4gICAgICBtYXhSb3cgPSBtYXRyaXhIZWlnaHQgLSAxO1xuICAgIH1cbiAgfVxuXG4gIHZhciB0aWxlR3JpZCA9IG5ldyBUaWxlR3JpZChtaW5Db2x1bW4sIG1heENvbHVtbiwgbWluUm93LCBtYXhSb3cpO1xuICByZXR1cm4gdGlsZUdyaWQ7XG59XG5cbi8qKlxuICogIEdldCB0aGUgdGlsZSBjb2x1bW4gb2YgdGhlIGxvbmdpdHVkZSBpbiBkZWdyZWVzXG4gKlxuICogIEBwYXJhbSB3ZWJNZXJjYXRvclRvdGFsQm94IHdlYiBtZXJjYXRvciB0b3RhbCBib3VuZGluZyBib3hcbiAqICBAcGFyYW0gbWF0cml4V2lkdGggICAgICAgICBtYXRyaXggd2lkdGhcbiAqICBAcGFyYW0gbG9uZ2l0dWRlICAgICAgICAgICBsb25naXR1ZGVcbiAqXG4gKiAgQHJldHVybiB0aWxlIGNvbHVtblxuICovXG5tb2R1bGUuZXhwb3J0cy5nZXRUaWxlQ29sdW1uV2l0aFRvdGFsQm91bmRpbmdCb3ggPSBmdW5jdGlvbih3ZWJNZXJjYXRvclRvdGFsQm94LCBtYXRyaXhXaWR0aCwgbG9uZ2l0dWRlLCBtYXgpIHtcbiAgdmFyIG1pblggPSB3ZWJNZXJjYXRvclRvdGFsQm94Lm1pbkxvbmdpdHVkZTtcbiAgdmFyIG1heFggPSB3ZWJNZXJjYXRvclRvdGFsQm94Lm1heExvbmdpdHVkZTtcblxuICB2YXIgdGlsZUlkO1xuICBpZiAobG9uZ2l0dWRlIDwgbWluWCkge1xuICAgIHRpbGVJZCA9IC0xO1xuICB9IGVsc2UgaWYgKGxvbmdpdHVkZSA+PSBtYXhYKSB7XG4gICAgdGlsZUlkID0gbWF0cml4V2lkdGg7XG4gIH0gZWxzZSB7XG4gICAgdmFyIG1hdHJpeFdpZHRoTWV0ZXJzID0gbWF4WCAtIG1pblg7XG4gICAgdmFyIHRpbGVXaWR0aCA9IG1hdHJpeFdpZHRoTWV0ZXJzIC8gbWF0cml4V2lkdGg7XG4gICAgdmFyIHRpbGVJZERvdWJsZSA9ICgobG9uZ2l0dWRlIC0gbWluWCkgLyB0aWxlV2lkdGgpO1xuICAgIHRpbGVJZCA9IHBhcnNlSW50KHRpbGVJZERvdWJsZSk7XG4gICAgaWYgKG1heCkge1xuICAgICAgLy8gaWYgdGhlIGVkZ2UgbGFuZHMgcmlnaHQgb24gdGhlIGNhbGN1bGF0ZWQgZWRnZSwgc3VidHJhY3Qgb25lXG4gICAgICBpZiAodGlsZUlkRG91YmxlID09PSB0aWxlSWQpIHtcbiAgICAgICAgdGlsZUlkLS07XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiB0aWxlSWQ7XG59XG5cbi8qKlxuICogIEdldCB0aGUgdGlsZSByb3cgb2YgdGhlIGxhdGl0dWRlIGluIGRlZ3JlZXNcbiAqXG4gKiAgQHBhcmFtIHdlYk1lcmNhdG9yVG90YWxCb3ggd2ViIG1lcmNhdG9yIHRvdGFsIGJvdW5kaW5nIGJveFxuICogIEBwYXJhbSBtYXRyaXhIZWlnaHQgICAgICAgIG1hdHJpeCBoZWlnaHRcbiAqICBAcGFyYW0gbGF0aXR1ZGUgICAgICAgICAgICBsYXRpdHVkZVxuICpcbiAqICBAcmV0dXJuIHRpbGUgcm93XG4gKi9cbm1vZHVsZS5leHBvcnRzLmdldFRpbGVSb3dXaXRoVG90YWxCb3VuZGluZ0JveCA9IGZ1bmN0aW9uKHdlYk1lcmNhdG9yVG90YWxCb3gsIG1hdHJpeEhlaWdodCwgbGF0aXR1ZGUsIG1heCkge1xuICB2YXIgbWluWSA9IHdlYk1lcmNhdG9yVG90YWxCb3gubWluTGF0aXR1ZGU7XG4gIHZhciBtYXhZID0gd2ViTWVyY2F0b3JUb3RhbEJveC5tYXhMYXRpdHVkZTtcblxuICB2YXIgdGlsZUlkO1xuICBpZiAobGF0aXR1ZGUgPCBtaW5ZKSB7XG4gICAgdGlsZUlkID0gbWF0cml4SGVpZ2h0O1xuICB9IGVsc2UgaWYgKGxhdGl0dWRlID49IG1heFkpIHtcbiAgICB0aWxlSWQgPSAtMTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgbWF0cml4SGVpZ2h0TWV0ZXJzID0gbWF4WSAtIG1pblk7XG4gICAgdmFyIHRpbGVIZWlnaHQgPSBtYXRyaXhIZWlnaHRNZXRlcnMgLyBtYXRyaXhIZWlnaHQ7XG4gICAgdmFyIHRpbGVJZERvdWJsZSA9ICgobWF4WSAtIGxhdGl0dWRlKSAvIHRpbGVIZWlnaHQpO1xuICAgIHRpbGVJZCA9IHBhcnNlSW50KHRpbGVJZERvdWJsZSk7XG4gICAgaWYgKG1heCkge1xuICAgICAgLy8gaWYgdGhlIGVkZ2UgbGFuZHMgcmlnaHQgb24gdGhlIGNhbGN1bGF0ZWQgZWRnZSwgYWRkIG9uZVxuICAgICAgaWYgKHRpbGVJZERvdWJsZSA9PT0gdGlsZUlkKSB7XG4gICAgICAgIHRpbGVJZC0tO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gdGlsZUlkO1xufVxuXG4vKipcbiAqICBHZXQgdGhlIHdlYiBtZXJjYXRvciBib3VuZGluZyBib3ggb2YgdGhlIHRpbGUgY29sdW1uIGFuZCByb3cgaW4gdGhlIHRpbGVcbiAqICBtYXRyaXggdXNpbmcgdGhlIHRvdGFsIGJvdW5kaW5nIGJveFxuICpcbiAqICBAcGFyYW0gd2ViTWVyY2F0b3JUb3RhbEJveCB3ZWIgbWVyY2F0b3IgdG90YWwgYm91bmRpbmcgYm94XG4gKiAgQHBhcmFtIHRpbGVNYXRyaXggICAgICAgICAgdGlsZSBtYXRyaXhcbiAqICBAcGFyYW0gdGlsZUNvbHVtbiAgICAgICAgICB0aWxlIGNvbHVtblxuICogIEBwYXJhbSB0aWxlUm93ICAgICAgICAgICAgIHRpbGUgcm93XG4gKlxuICogIEByZXR1cm4gd2ViIG1lcmNhdG9yIGJvdW5kaW5nIGJveFxuICovXG5tb2R1bGUuZXhwb3J0cy5nZXRUaWxlQm91bmRpbmdCb3ggPSBmdW5jdGlvbihib3gsIHRpbGVNYXRyaXgsIHRpbGVDb2x1bW4sIHRpbGVSb3cpIHtcbiAgdmFyIHRpbGVNYXRyaXhXaWR0aCA9IHRpbGVNYXRyaXgubWF0cml4X3dpZHRoO1xuICB2YXIgdGlsZU1hdHJpeEhlaWdodCA9IHRpbGVNYXRyaXgubWF0cml4X2hlaWdodDtcbiAgdmFyIHRpbGVHcmlkID0gbmV3IFRpbGVHcmlkKHRpbGVDb2x1bW4sIHRpbGVDb2x1bW4sIHRpbGVSb3csIHRpbGVSb3cpO1xuICB2YXIgbWF0cml4TWluWCA9IGJveC5taW5Mb25naXR1ZGU7XG4gIHZhciBtYXRyaXhNYXhYID0gYm94Lm1heExvbmdpdHVkZTtcbiAgdmFyIG1hdHJpeFdpZHRoID0gbWF0cml4TWF4WCAtIG1hdHJpeE1pblg7XG4gIHZhciB0aWxlV2lkdGggPSBtYXRyaXhXaWR0aCAvIHRpbGVNYXRyaXhXaWR0aDtcblxuICAvLyBGaW5kIHRoZSBsb25naXR1ZGUgcmFuZ2VcbiAgdmFyIG1pbkxvbiA9IG1hdHJpeE1pblggKyAodGlsZVdpZHRoICogdGlsZUdyaWQubWluX3gpO1xuICB2YXIgbWF4TG9uID0gbWluTG9uICsgKHRpbGVXaWR0aCAqICh0aWxlR3JpZC5tYXhfeCArIDEgLSB0aWxlR3JpZC5taW5feCkpO1xuXG4gIC8vIEdldCB0aGUgdGlsZSBoZWlnaHRcbiAgdmFyIG1hdHJpeE1pblkgPSBib3gubWluTGF0aXR1ZGU7XG4gIHZhciBtYXRyaXhNYXhZID0gYm94Lm1heExhdGl0dWRlO1xuICB2YXIgbWF0cml4SGVpZ2h0ID0gbWF0cml4TWF4WSAtIG1hdHJpeE1pblk7XG4gIHZhciB0aWxlSGVpZ2h0ID0gbWF0cml4SGVpZ2h0IC8gdGlsZU1hdHJpeEhlaWdodDtcblxuICAvLyBGaW5kIHRoZSBsYXRpdHVkZSByYW5nZVxuICB2YXIgbWF4TGF0ID0gbWF0cml4TWF4WSAtICh0aWxlSGVpZ2h0ICogdGlsZUdyaWQubWluX3kpO1xuICB2YXIgbWluTGF0ID0gbWF4TGF0IC0gKHRpbGVIZWlnaHQgKiAodGlsZUdyaWQubWF4X3kgKyAxIC0gdGlsZUdyaWQubWluX3kpKTtcblxuICB2YXIgYm91bmRpbmdCb3ggPSBuZXcgQm91bmRpbmdCb3gobWluTG9uLCBtYXhMb24sIG1pbkxhdCwgbWF4TGF0KTtcblxuICByZXR1cm4gYm91bmRpbmdCb3g7XG59XG5cbm1vZHVsZS5leHBvcnRzLmdldFRpbGVHcmlkQm91bmRpbmdCb3ggPSBmdW5jdGlvbihtYXRyaXhTZXRCb3VuZGluZ0JveCwgdGlsZU1hdHJpeFdpZHRoLCB0aWxlTWF0cml4SGVpZ2h0LCB0aWxlR3JpZCkge1xuICAvLyBHZXQgdGhlIHRpbGUgd2lkdGhcbiAgdmFyIG1hdHJpeE1pblggPSBtYXRyaXhTZXRCb3VuZGluZ0JveC5taW5Mb25naXR1ZGU7XG4gIHZhciBtYXRyaXhNYXhYID0gbWF0cml4U2V0Qm91bmRpbmdCb3gubWF4TG9uZ2l0dWRlO1xuICB2YXIgbWF0cml4V2lkdGggPSBtYXRyaXhNYXhYIC0gbWF0cml4TWluWDtcbiAgdmFyIHRpbGVXaWR0aCA9IG1hdHJpeFdpZHRoIC8gdGlsZU1hdHJpeFdpZHRoO1xuXG4gIC8vIEZpbmQgdGhlIGxvbmdpdHVkZSByYW5nZVxuICB2YXIgbWluTG9uID0gbWF0cml4TWluWCArICh0aWxlV2lkdGggKiB0aWxlR3JpZC5taW5feCk7XG4gIHZhciBtYXhMb24gPSBtaW5Mb24gKyAodGlsZVdpZHRoICogKHRpbGVHcmlkLm1heF94ICsgMSAtIHRpbGVHcmlkLm1pbl94KSk7XG5cbiAgLy8gR2V0IHRoZSB0aWxlIGhlaWdodFxuICB2YXIgbWF0cml4TWluWSA9IG1hdHJpeFNldEJvdW5kaW5nQm94Lm1pbkxhdGl0dWRlO1xuICB2YXIgbWF0cml4TWF4WSA9IG1hdHJpeFNldEJvdW5kaW5nQm94Lm1heExhdGl0dWRlO1xuICB2YXIgbWF0cml4SGVpZ2h0ID0gbWF0cml4TWF4WSAtIG1hdHJpeE1pblk7XG4gIHZhciB0aWxlSGVpZ2h0ID0gbWF0cml4SGVpZ2h0IC8gdGlsZU1hdHJpeEhlaWdodDtcblxuICAvLyBGaW5kIHRoZSBsYXRpdHVkZSByYW5nZVxuICB2YXIgbWF4TGF0ID0gbWF0cml4TWF4WSAtICh0aWxlSGVpZ2h0ICogdGlsZUdyaWQubWluX3kpO1xuICB2YXIgbWluTGF0ID0gbWF4TGF0IC0gKHRpbGVIZWlnaHQgKiAodGlsZUdyaWQubWF4X3kgKyAxIC0gdGlsZUdyaWQubWluX3kpKTtcblxuICByZXR1cm4gbmV3IEJvdW5kaW5nQm94KG1pbkxvbiwgbWF4TG9uLCBtaW5MYXQsIG1heExhdCk7XG59XG4iLCJcbi8qKlxuICogIFRpbGUgZ3JpZCB3aXRoIHggYW5kIHkgcmFuZ2VzXG4gKi9cbnZhciBUaWxlR3JpZCA9IGZ1bmN0aW9uKG1pblgsIG1heFgsIG1pblksIG1heFkpIHtcbiAgdGhpcy5taW5feCA9IG1pblg7XG4gIHRoaXMubWF4X3ggPSBtYXhYO1xuICB0aGlzLm1pbl95ID0gbWluWTtcbiAgdGhpcy5tYXhfeSA9IG1heFk7XG59XG5cblRpbGVHcmlkLnByb3RvdHlwZS5jb3VudCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuICgodGhpcy5tYXhfeCArIDEpIC0gdGhpcy5taW5feCkgKiAoKHRoaXMubWF4X3kgKyAxKSAtIHRoaXMubWluX3kpO1xufTtcblxuVGlsZUdyaWQucHJvdG90eXBlLmVxdWFscyA9IGZ1bmN0aW9uICh0aWxlR3JpZCkge1xuICBpZiAoIXRpbGVHcmlkKSByZXR1cm4gZmFsc2U7XG4gIHJldHVybiB0aGlzLm1pbl94ID09PSB0aWxlR3JpZC5taW5feFxuICAgICYmIHRoaXMubWF4X3ggPT09IHRpbGVHcmlkLm1heF94XG4gICAgJiYgdGhpcy5taW5feSA9PT0gdGlsZUdyaWQubWluX3lcbiAgICAmJiB0aGlzLm1heF95ID09PSB0aWxlR3JpZC5tYXhfeTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gVGlsZUdyaWQ7XG4iLCIvKipcbiAqIHRpbGVDb2x1bW4gbW9kdWxlLlxuICogQG1vZHVsZSB0aWxlcy91c2VyL3RpbGVDb2x1bW5cbiAqL1xuXG52YXIgVXNlckNvbHVtbiA9IHJlcXVpcmUoJy4uLy4uL3VzZXIvdXNlckNvbHVtbicpXG4gICwgRGF0YVR5cGVzID0gcmVxdWlyZSgnLi4vLi4vZGIvZGF0YVR5cGVzJyk7XG5cbnZhciB1dGlsID0gcmVxdWlyZSgndXRpbCcpO1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYSB1c2VyIHRpbGUgY29sdW1uXG4gKi9cbnZhciBUaWxlQ29sdW1uID0gZnVuY3Rpb24oaW5kZXgsIG5hbWUsIGRhdGFUeXBlLCBtYXgsIG5vdE51bGwsIGRlZmF1bHRWYWx1ZSwgcHJpbWFyeUtleSkge1xuICBVc2VyQ29sdW1uLmNhbGwodGhpcywgaW5kZXgsIG5hbWUsIGRhdGFUeXBlLCBtYXgsIG5vdE51bGwsIGRlZmF1bHRWYWx1ZSwgcHJpbWFyeUtleSk7XG4gIGlmIChkYXRhVHlwZSA9PT0gRGF0YVR5cGVzLkdQS0dfRFRfR0VPTUVUUlkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0RhdGEgVHlwZSBpcyByZXF1aXJlZCB0byBjcmVhdGUgY29sdW1uOiAnICsgbmFtZSk7XG4gIH1cbn1cblxudXRpbC5pbmhlcml0cyhUaWxlQ29sdW1uLCBVc2VyQ29sdW1uKTtcblxuLyoqXG4gKiBDcmVhdGUgYW4gaWQgY29sdW1uXG4gKiBAcGFyYW0gIHtudW1iZXJ9IGluZGV4IEluZGV4XG4gKi9cblRpbGVDb2x1bW4uY3JlYXRlSWRDb2x1bW4gPSBmdW5jdGlvbihpbmRleCkge1xuICByZXR1cm4gbmV3IFRpbGVDb2x1bW4oaW5kZXgsIFRpbGVDb2x1bW4uQ09MVU1OX0lELCBEYXRhVHlwZXMuR1BLR0RhdGFUeXBlLkdQS0dfRFRfSU5URUdFUiwgbnVsbCwgZmFsc2UsIG51bGwsIHRydWUpO1xufVxuXG4vKipcbiAqIENyZWF0ZSBhIHpvb20gbGV2ZWwgY29sdW1uXG4gKiBAcGFyYW0gIHtudW1iZXJ9IGluZGV4IEluZGV4XG4gKi9cblRpbGVDb2x1bW4uY3JlYXRlWm9vbUxldmVsQ29sdW1uID0gZnVuY3Rpb24oaW5kZXgpIHtcbiAgcmV0dXJuIG5ldyBUaWxlQ29sdW1uKGluZGV4LCBUaWxlQ29sdW1uLkNPTFVNTl9aT09NX0xFVkVMLCBEYXRhVHlwZXMuR1BLR0RhdGFUeXBlLkdQS0dfRFRfSU5URUdFUiwgbnVsbCwgdHJ1ZSwgbnVsbCwgZmFsc2UpO1xufVxuXG4vKipcbiAqICBDcmVhdGUgYSB0aWxlIGNvbHVtbiBjb2x1bW5cbiAqXG4gKiAgQHBhcmFtIHtudW1iZXJ9IGluZGV4IGNvbHVtbiBpbmRleFxuICovXG5UaWxlQ29sdW1uLmNyZWF0ZVRpbGVDb2x1bW5Db2x1bW4gPSBmdW5jdGlvbihpbmRleCkge1xuICByZXR1cm4gbmV3IFRpbGVDb2x1bW4oaW5kZXgsIFRpbGVDb2x1bW4uQ09MVU1OX1RJTEVfQ09MVU1OLCBEYXRhVHlwZXMuR1BLR0RhdGFUeXBlLkdQS0dfRFRfSU5URUdFUiwgbnVsbCwgdHJ1ZSwgbnVsbCwgZmFsc2UpO1xufVxuXG4vKipcbiAqICBDcmVhdGUgYSB0aWxlIHJvdyBjb2x1bW5cbiAqXG4gKiAgQHBhcmFtIHtudW1iZXJ9IGluZGV4IGNvbHVtbiBpbmRleFxuICpcbiAqL1xuVGlsZUNvbHVtbi5jcmVhdGVUaWxlUm93Q29sdW1uID0gZnVuY3Rpb24oaW5kZXgpIHtcbiAgcmV0dXJuIG5ldyBUaWxlQ29sdW1uKGluZGV4LCBUaWxlQ29sdW1uLkNPTFVNTl9USUxFX1JPVywgRGF0YVR5cGVzLkdQS0dEYXRhVHlwZS5HUEtHX0RUX0lOVEVHRVIsIG51bGwsIHRydWUsIG51bGwsIGZhbHNlKTtcbn1cblxuLyoqXG4gKiAgQ3JlYXRlIGEgdGlsZSBkYXRhIGNvbHVtblxuICpcbiAqICBAcGFyYW0ge251bWJlcn0gaW5kZXggY29sdW1uIGluZGV4XG4gKi9cblRpbGVDb2x1bW4uY3JlYXRlVGlsZURhdGFDb2x1bW4gPSBmdW5jdGlvbihpbmRleCkge1xuICByZXR1cm4gbmV3IFRpbGVDb2x1bW4oaW5kZXgsIFRpbGVDb2x1bW4uQ09MVU1OX1RJTEVfREFUQSwgRGF0YVR5cGVzLkdQS0dEYXRhVHlwZS5HUEtHX0RUX0JMT0IsIG51bGwsIHRydWUsIG51bGwsIGZhbHNlKTtcbn1cblxuVGlsZUNvbHVtbi5DT0xVTU5fSUQgPSBcImlkXCI7XG5UaWxlQ29sdW1uLkNPTFVNTl9aT09NX0xFVkVMID0gXCJ6b29tX2xldmVsXCI7XG5UaWxlQ29sdW1uLkNPTFVNTl9USUxFX0NPTFVNTiA9IFwidGlsZV9jb2x1bW5cIjtcblRpbGVDb2x1bW4uQ09MVU1OX1RJTEVfUk9XID0gXCJ0aWxlX3Jvd1wiO1xuVGlsZUNvbHVtbi5DT0xVTU5fVElMRV9EQVRBID0gXCJ0aWxlX2RhdGFcIjtcblxubW9kdWxlLmV4cG9ydHMgPSBUaWxlQ29sdW1uO1xuIiwiLyoqXG4gKiB0aWxlRGFvIG1vZHVsZS5cbiAqIEBtb2R1bGUgdGlsZXMvdXNlci90aWxlRGFvXG4gKi9cblxudmFyIFVzZXJEYW8gPSByZXF1aXJlKCcuLi8uLi91c2VyL3VzZXJEYW8nKVxuICAsIFRpbGVHcmlkID0gcmVxdWlyZSgnLi4vdGlsZUdyaWQnKVxuICAsIFRpbGVSb3cgPSByZXF1aXJlKCcuL3RpbGVSb3cnKVxuICAsIFRpbGVNYXRyaXhTZXREYW8gPSByZXF1aXJlKCcuLi9tYXRyaXhzZXQnKS5UaWxlTWF0cml4U2V0RGFvXG4gICwgQ29udGVudHNEYW8gPSByZXF1aXJlKCcuLi8uLi9jb3JlL2NvbnRlbnRzJykuQ29udGVudHNEYW9cbiAgLCBCb3VuZGluZ0JveFV0aWxzID0gcmVxdWlyZSgnLi4vdGlsZUJvdW5kaW5nQm94VXRpbHMnKVxuICAsIENvbHVtblZhbHVlcyA9IHJlcXVpcmUoJy4uLy4uL2Rhby9jb2x1bW5WYWx1ZXMnKVxuICAsIFRpbGVDb2x1bW4gPSByZXF1aXJlKCcuL3RpbGVDb2x1bW4nKVxuICAsIFRpbGVEYW9VdGlscyA9IHJlcXVpcmUoJy4vdGlsZURhb1V0aWxzJyk7XG5cbnZhciB1dGlsID0gcmVxdWlyZSgndXRpbCcpXG4gICwgcHJvajQgPSByZXF1aXJlKCdwcm9qNCcpXG4gICwgYXN5bmMgPSByZXF1aXJlKCdhc3luYycpO1xuXG4vKipcbiAqIEluaXRpYWxpemVcbiAqIEBwYXJhbSAge0dlb1BhY2thZ2VDb25uZWN0aW9ufSBjb25uZWN0aW9uICAgICAgICAgICAgICBkYXRhYmFzZSBjb25uZWN0aW9uXG4gKiBAcGFyYW0gIHtUaWxlVGFibGV9IHRhYmxlICAgICAgICAgICBmZWF0dXJlIHRhYmxlXG4gKiBAcGFyYW0gIHtUaWxlTWF0cml4U2V0fSB0aWxlTWF0cml4U2V0IHRpbGUgbWF0cml4IHNldFxuICogQHBhcmFtICB7QXJyYXl9IHRpbGVNYXRyaWNlcyAgICAgIHRpbGUgbWF0cmljZXNcbiAqIEBwYXJhbSAge0Z1bmN0aW9ufSBjYWxsYmFjayAgY2FsbGVkIHdoZW4gdGhlIHRpbGUgaXMgaW5pdGlhbGl6ZWRcbiAqL1xudmFyIFRpbGVEYW8gPSBmdW5jdGlvbihjb25uZWN0aW9uLCB0YWJsZSwgdGlsZU1hdHJpeFNldCwgdGlsZU1hdHJpY2VzLCBjYWxsYmFjaykge1xuICBVc2VyRGFvLmNhbGwodGhpcywgY29ubmVjdGlvbiwgdGFibGUpO1xuXG4gIHRoaXMuY29ubmVjdGlvbiA9IGNvbm5lY3Rpb247XG4gIHRoaXMudGlsZU1hdHJpeFNldCA9IHRpbGVNYXRyaXhTZXQ7XG4gIHRoaXMudGlsZU1hdHJpY2VzID0gdGlsZU1hdHJpY2VzO1xuICB0aGlzLnpvb21MZXZlbFRvVGlsZU1hdHJpeCA9IFtdO1xuICB0aGlzLndpZHRocyA9IFtdO1xuICB0aGlzLmhlaWdodHMgPSBbXTtcblxuICBpZiAodGlsZU1hdHJpY2VzLmxlbmd0aCA9PT0gMCkge1xuICAgIHRoaXMubWluWm9vbSA9IDA7XG4gICAgdGhpcy5tYXhab29tID0gMDtcbiAgfSBlbHNlIHtcbiAgICB0aGlzLm1pblpvb20gPSB0aGlzLnRpbGVNYXRyaWNlc1swXS56b29tX2xldmVsO1xuICAgIHRoaXMubWF4Wm9vbSA9IHRoaXMudGlsZU1hdHJpY2VzW3RoaXMudGlsZU1hdHJpY2VzLmxlbmd0aC0xXS56b29tX2xldmVsO1xuICB9XG5cbiAgLy8gUG9wdWxhdGUgdGhlIHpvb20gbGV2ZWwgdG8gdGlsZSBtYXRyaXggYW5kIHRoZSBzb3J0ZWQgdGlsZSB3aWR0aHMgYW5kIGhlaWdodHNcbiAgZm9yICh2YXIgaSA9IHRoaXMudGlsZU1hdHJpY2VzLmxlbmd0aC0xOyBpID49IDA7IGktLSkge1xuICAgIHZhciB0aWxlTWF0cml4ID0gdGhpcy50aWxlTWF0cmljZXNbaV07XG4gICAgdGhpcy56b29tTGV2ZWxUb1RpbGVNYXRyaXhbdGlsZU1hdHJpeC56b29tX2xldmVsXSA9IHRpbGVNYXRyaXg7XG4gIH1cblxuICB0aGlzLmluaXRpYWxpemUoY2FsbGJhY2spO1xufVxuXG51dGlsLmluaGVyaXRzKFRpbGVEYW8sIFVzZXJEYW8pO1xuXG5UaWxlRGFvLnByb3RvdHlwZS5pbml0aWFsaXplID0gZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAgdmFyIHRpbGVNYXRyaXhTZXREYW8gPSB0aGlzLmdldFRpbGVNYXRyaXhTZXREYW8oKTtcbiAgdGlsZU1hdHJpeFNldERhby5nZXRTcnModGhpcy50aWxlTWF0cml4U2V0LCBmdW5jdGlvbihlcnIsIHNycykge1xuICAgIHRoaXMuc3JzID0gc3JzO1xuICAgIHRoaXMucHJvamVjdGlvbiA9IHNycy5vcmdhbml6YXRpb24udG9VcHBlckNhc2UoKSArICc6JyArIHNycy5vcmdhbml6YXRpb25fY29vcmRzeXNfaWQ7XG5cbiAgICAvLyBQb3B1bGF0ZSB0aGUgem9vbSBsZXZlbCB0byB0aWxlIG1hdHJpeCBhbmQgdGhlIHNvcnRlZCB0aWxlIHdpZHRocyBhbmQgaGVpZ2h0c1xuICAgIGZvciAodmFyIGkgPSB0aGlzLnRpbGVNYXRyaWNlcy5sZW5ndGgtMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIHZhciB0aWxlTWF0cml4ID0gdGhpcy50aWxlTWF0cmljZXNbaV07XG5cbiAgICAgIHZhciB3aWR0aCA9IHRpbGVNYXRyaXgucGl4ZWxfeF9zaXplICogcGFyc2VJbnQodGlsZU1hdHJpeC50aWxlX3dpZHRoKTtcbiAgICAgIHZhciBoZWlnaHQgPSB0aWxlTWF0cml4LnBpeGVsX3lfc2l6ZSAqIHBhcnNlSW50KHRpbGVNYXRyaXgudGlsZV9oZWlnaHQpO1xuICAgICAgdmFyIHByb2o0UHJvamVjdGlvbiA9IHByb2o0KHRoaXMucHJvamVjdGlvbik7XG4gICAgICBpZiAocHJvajRQcm9qZWN0aW9uLnRvX21ldGVyKSB7XG4gICAgICAgIHdpZHRoID0gcHJvajRQcm9qZWN0aW9uLnRvX21ldGVyICogdGlsZU1hdHJpeC5waXhlbF94X3NpemUgKiBwYXJzZUludCh0aWxlTWF0cml4LnRpbGVfd2lkdGgpO1xuICAgICAgICBoZWlnaHQgPSBwcm9qNFByb2plY3Rpb24udG9fbWV0ZXIgKiB0aWxlTWF0cml4LnBpeGVsX3lfc2l6ZSAqIHBhcnNlSW50KHRpbGVNYXRyaXgudGlsZV9oZWlnaHQpO1xuICAgICAgfVxuICAgICAgdGhpcy53aWR0aHMucHVzaCh3aWR0aCk7XG4gICAgICB0aGlzLmhlaWdodHMucHVzaChoZWlnaHQpO1xuICAgIH1cbiAgICBjYWxsYmFjayhudWxsLCB0aGlzKTtcbiAgfS5iaW5kKHRoaXMpKTtcbn1cblxuVGlsZURhby5wcm90b3R5cGUuY3JlYXRlT2JqZWN0ID0gZnVuY3Rpb24gKCkge1xuICB0aHJvdyBuZXcgRXJyb3IoJ25vdCBpbXBsZW1lbnRlZCcpO1xufTtcblxuLyoqXG4gKiBHZXQgdGhlIGJvdW5kaW5nIGJveCBvZiB0aWxlcyBhdCB0aGUgem9vbSBsZXZlbFxuICogQHBhcmFtICB7TnVtYmVyfSB6b29tTGV2ZWwgem9vbSBsZXZlbFxuICogQHJldHVybiB7Qm91bmRpbmdCb3h9ICAgICAgICAgICBib3VuZGluZyBib3ggb2YgdGhlIHpvb20gbGV2ZWwsIG9yIG51bGwgaWYgbm8gdGlsZXNcbiAqL1xuVGlsZURhby5wcm90b3R5cGUuZ2V0Qm91bmRpbmdCb3hXaXRoWm9vbUxldmVsID0gZnVuY3Rpb24gKHpvb21MZXZlbCwgY2FsbGJhY2spIHtcbiAgdmFyIGJvdW5kaW5nQm94O1xuXG4gIHZhciB0aWxlTWF0cml4ID0gdGhpcy5nZXRUaWxlTWF0cml4V2l0aFpvb21MZXZlbCh6b29tTGV2ZWwpO1xuICBpZiAodGlsZU1hdHJpeCkge1xuICAgIHRoaXMucXVlcnlGb3JUaWxlR3JpZFdpdGhab29tTGV2ZWwoem9vbUxldmVsLCBmdW5jdGlvbihlcnIsIHRpbGVHcmlkKSB7XG5cbiAgICAgIGlmICh0aWxlR3JpZCkge1xuICAgICAgICB2YXIgbWF0cml4U2V0Qm91bmRpbmdCb3ggPSB0aGlzLmdldEJvdW5kaW5nQm94KCk7XG4gICAgICAgIGJvdW5kaW5nQm94ID0gQm91bmRpbmdCb3hVdGlscy5nZXRUaWxlR3JpZEJvdW5kaW5nQm94KG1hdHJpeFNldEJvdW5kaW5nQm94LCB0aWxlTWF0cml4Lm1hdHJpeF93aWR0aCwgdGlsZU1hdHJpeC5tYXRyaXhfaGVpZ2h0LCB0aWxlR3JpZCk7XG4gICAgICB9XG4gICAgICBjYWxsYmFjayhlcnIsIGJvdW5kaW5nQm94KTtcbiAgICB9LmJpbmQodGhpcykpO1xuICB9IGVsc2Uge1xuICAgIGNhbGxiYWNrKG51bGwsIGJvdW5kaW5nQm94KTtcbiAgfVxufTtcblxuVGlsZURhby5wcm90b3R5cGUuZ2V0Qm91bmRpbmdCb3ggPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLnRpbGVNYXRyaXhTZXQuZ2V0Qm91bmRpbmdCb3goKTtcbn07XG5cblRpbGVEYW8ucHJvdG90eXBlLnF1ZXJ5Rm9yVGlsZUdyaWRXaXRoWm9vbUxldmVsID0gZnVuY3Rpb24gKHpvb21MZXZlbCwgY2FsbGJhY2spIHtcbiAgdmFyIHdoZXJlID0gdGhpcy5idWlsZFdoZXJlV2l0aEZpZWxkQW5kVmFsdWUoVGlsZUNvbHVtbi5DT0xVTU5fWk9PTV9MRVZFTCwgem9vbUxldmVsKTtcbiAgdmFyIHdoZXJlQXJncyA9IHRoaXMuYnVpbGRXaGVyZUFyZ3NXaXRoVmFsdWUoem9vbUxldmVsKTtcbiAgYXN5bmMuc2VyaWVzKHtcbiAgICBtaW5feDogZnVuY3Rpb24oY2FsbGJhY2spe1xuICAgICAgdGhpcy5taW5PZkNvbHVtbihUaWxlQ29sdW1uLkNPTFVNTl9USUxFX0NPTFVNTiwgd2hlcmUsIHdoZXJlQXJncywgY2FsbGJhY2spO1xuICAgIH0uYmluZCh0aGlzKSxcbiAgICBtYXhfeDogZnVuY3Rpb24oY2FsbGJhY2spe1xuICAgICAgdGhpcy5tYXhPZkNvbHVtbihUaWxlQ29sdW1uLkNPTFVNTl9USUxFX0NPTFVNTiwgd2hlcmUsIHdoZXJlQXJncywgY2FsbGJhY2spO1xuICAgIH0uYmluZCh0aGlzKSxcbiAgICBtaW5feTogZnVuY3Rpb24oY2FsbGJhY2spe1xuICAgICAgdGhpcy5taW5PZkNvbHVtbihUaWxlQ29sdW1uLkNPTFVNTl9USUxFX1JPVywgd2hlcmUsIHdoZXJlQXJncywgY2FsbGJhY2spO1xuICAgIH0uYmluZCh0aGlzKSxcbiAgICBtYXhfeTogZnVuY3Rpb24oY2FsbGJhY2spe1xuICAgICAgdGhpcy5tYXhPZkNvbHVtbihUaWxlQ29sdW1uLkNPTFVNTl9USUxFX1JPVywgd2hlcmUsIHdoZXJlQXJncywgY2FsbGJhY2spO1xuICAgIH0uYmluZCh0aGlzKVxuICB9LCBmdW5jdGlvbihlcnIsIHJlc3VsdHMpIHtcbiAgICBpZiAoZXJyKSByZXR1cm4gY2FsbGJhY2soZXJyKTtcbiAgICB2YXIgdGlsZUdyaWQ7XG4gICAgaWYgKHJlc3VsdHMubWluX3ggIT0gbnVsbCAmJiByZXN1bHRzLm1pbl95ICE9IG51bGwgJiYgcmVzdWx0cy5tYXhfeCAhPSBudWxsICYmIHJlc3VsdHMubWF4X3kgIT0gbnVsbCkge1xuICAgICAgdGlsZUdyaWQgPSBuZXcgVGlsZUdyaWQocmVzdWx0cy5taW5feCwgcmVzdWx0cy5tYXhfeCwgcmVzdWx0cy5taW5feSwgcmVzdWx0cy5tYXhfeSk7XG4gICAgfVxuICAgIGNhbGxiYWNrKGVyciwgdGlsZUdyaWQpO1xuICB9KTtcblxufTtcblxuLyoqXG4gKiBHZXQgdGhlIHRpbGUgZ3JpZCBvZiB0aGUgem9vbSBsZXZlbFxuICogQHBhcmFtICB7TnVtYmVyfSB6b29tTGV2ZWwgem9vbSBsZXZlbFxuICogQHJldHVybiB7VGlsZUdyaWR9ICAgICAgICAgICB0aWxlIGdyaWQgYXQgem9vbSBsZXZlbCwgbnVsbCBpZiBubyB0aWxlIG1hdHJpeCBhdCB6b29tIGxldmVsXG4gKi9cblRpbGVEYW8ucHJvdG90eXBlLmdldFRpbGVHcmlkV2l0aFpvb21MZXZlbCA9IGZ1bmN0aW9uICh6b29tTGV2ZWwpIHtcbiAgdmFyIHRpbGVHcmlkO1xuICB2YXIgdGlsZU1hdHJpeCA9IHRoaXMuZ2V0VGlsZU1hdHJpeFdpdGhab29tTGV2ZWwoem9vbUxldmVsKTtcbiAgaWYgKHRpbGVNYXRyaXgpIHtcbiAgICB0aWxlR3JpZCA9IG5ldyBUaWxlR3JpZCgwLCBwYXJzZUludCh0aWxlTWF0cml4Lm1hdHJpeF93aWR0aCkgLSAxLCAwLCBwYXJzZUludCh0aWxlTWF0cml4Lm1hdHJpeF9oZWlnaHQpIC0gMSk7XG4gIH1cbiAgcmV0dXJuIHRpbGVHcmlkO1xufTtcblxuLyoqXG4gKiBnZXQgdGhlIHRpbGUgdGFibGVcbiAqIEByZXR1cm4ge1RpbGVUYWJsZX0gdGlsZSB0YWJsZVxuICovXG5UaWxlRGFvLnByb3RvdHlwZS5nZXRUaWxlVGFibGUgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLnRhYmxlO1xufTtcblxuLyoqXG4gKiBHZXQgdGhlIHRpbGUgcm93IGZvciB0aGUgcmVzdWx0XG4gKiBAcGFyYW0gIHtyZXN1bHR9IHJlc3VsdCB0aWxlIHJvdyBvYmplY3RcbiAqIEByZXR1cm4ge1RpbGVSb3d9ICAgICAgICB0aWxlIHJvd1xuICovXG5UaWxlRGFvLnByb3RvdHlwZS5nZXRUaWxlUm93ID0gZnVuY3Rpb24gKHJlc3VsdCkge1xuICByZXR1cm4gdGhpcy5nZXRSb3cocmVzdWx0KTtcbn07XG5cbi8qKlxuICogQ3JlYXRlIGEgbmV3IHRpbGUgcm93IHdpdGggdGhlIGNvbHVtbiB0eXBlcyBhbmQgdmFsdWVzXG4gKiBAcGFyYW0gIHtBcnJheX0gY29sdW1uVHlwZXMgY29sdW1uIHR5cGVzXG4gKiBAcGFyYW0gIHtBcnJheX0gdmFsdWVzICAgICAgdmFsdWVzXG4gKiBAcmV0dXJuIHtUaWxlUm93fSAgICAgICAgICAgICB0aWxlIHJvd1xuICovXG5UaWxlRGFvLnByb3RvdHlwZS5uZXdSb3dXaXRoQ29sdW1uVHlwZXMgPSBmdW5jdGlvbiAoY29sdW1uVHlwZXMsIHZhbHVlcykge1xuICByZXR1cm4gbmV3IFRpbGVSb3codGhpcy5nZXRUaWxlVGFibGUoKSwgY29sdW1uVHlwZXMsIHZhbHVlcyk7XG59O1xuXG4vKipcbiAqIENyZWF0ZSBhIG5ldyB0aWxlIHJvd1xuICogQHJldHVybiB7VGlsZVJvd30gdGlsZSByb3dcbiAqL1xuVGlsZURhby5wcm90b3R5cGUubmV3Um93ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gbmV3IFRpbGVSb3codGhpcy5nZXRUaWxlVGFibGUoKSk7XG59O1xuXG4vKipcbiAqIEFkanVzdCB0aGUgdGlsZSBtYXRyaXggbGVuZ3RocyBpZiBuZWVkZWQuIENoZWNrIGlmIHRoZSB0aWxlIG1hdHJpeCB3aWR0aFxuICogYW5kIGhlaWdodCBuZWVkIHRvIGV4cGFuZCB0byBhY2NvdW50IGZvciBwaXhlbCAqIG51bWJlciBvZiBwaXhlbHMgZml0dGluZ1xuICogaW50byB0aGUgdGlsZSBtYXRyaXggbGVuZ3Roc1xuICovXG5UaWxlRGFvLnByb3RvdHlwZS5hZGp1c3RUaWxlTWF0cml4TGVuZ3RocyA9IGZ1bmN0aW9uICgpIHtcbiAgVGlsZURhb1V0aWxzLmFkanVzdFRpbGVNYXRyaXhMZW5ndGhzKHRoaXMudGlsZU1hdHJpeFNldCwgdGhpcy50aWxlTWF0cmljZXMpO1xufTtcblxuLyoqXG4gKiBHZXQgdGhlIHRpbGUgbWF0cml4IGF0IHRoZSB6b29tIGxldmVsXG4gKiBAcGFyYW0gIHtOdW1iZXJ9IHpvb21MZXZlbCB6b29tIGxldmVsXG4gKiBAcmV0dXJuIHtUaWxlTWF0cml4fSAgICAgICAgICAgdGlsZSBtYXRyaXhcbiAqL1xuVGlsZURhby5wcm90b3R5cGUuZ2V0VGlsZU1hdHJpeFdpdGhab29tTGV2ZWwgPSBmdW5jdGlvbiAoem9vbUxldmVsKSB7XG4gIHJldHVybiB0aGlzLnpvb21MZXZlbFRvVGlsZU1hdHJpeFt6b29tTGV2ZWxdO1xufTtcblxuLyoqXG4gKiBRdWVyeSBmb3IgYSB0aWxlXG4gKiBAcGFyYW0gIHtOdW1iZXJ9IGNvbHVtbiAgICBjb2x1bW5cbiAqIEBwYXJhbSAge051bWJlcn0gcm93ICAgICAgIHJvd1xuICogQHBhcmFtICB7TnVtYmVyfSB6b29tTGV2ZWwgem9vbSBsZXZlbFxuICogQHBhcmFtIHtGdW5jdGlvbn0gICAgICAgICAgIGNhbGxiYWNrIGNhbGxlZCB3aXRoIGFuIGVycm9yIGlmIG9uZSBvY2N1cnJlZCBhbmQgdGhlIFRpbGVEYW9cbiAqL1xuVGlsZURhby5wcm90b3R5cGUucXVlcnlGb3JUaWxlID0gZnVuY3Rpb24gKGNvbHVtbiwgcm93LCB6b29tTGV2ZWwsIGNhbGxiYWNrKSB7XG5cbiAgdmFyIGZpZWxkVmFsdWVzID0gbmV3IENvbHVtblZhbHVlcygpO1xuICBmaWVsZFZhbHVlcy5hZGRDb2x1bW4oVGlsZUNvbHVtbi5DT0xVTU5fVElMRV9DT0xVTU4sIGNvbHVtbik7XG4gIGZpZWxkVmFsdWVzLmFkZENvbHVtbihUaWxlQ29sdW1uLkNPTFVNTl9USUxFX1JPVywgcm93KTtcbiAgZmllbGRWYWx1ZXMuYWRkQ29sdW1uKFRpbGVDb2x1bW4uQ09MVU1OX1pPT01fTEVWRUwsIHpvb21MZXZlbCk7XG4gIHZhciB0aWxlUm93O1xuICB0aGlzLnF1ZXJ5Rm9yRmllbGRWYWx1ZXMoZmllbGRWYWx1ZXMsIGZ1bmN0aW9uKGVyciwgcmVzdWx0LCByb3dEb25lKSB7XG4gICAgdGlsZVJvdyA9IHRoaXMuZ2V0VGlsZVJvdyhyZXN1bHQpO1xuICAgIHJvd0RvbmUoKTtcbiAgfS5iaW5kKHRoaXMpLCBmdW5jdGlvbigpIHtcbiAgICBjYWxsYmFjayhudWxsLCB0aWxlUm93KTtcbiAgfSk7XG59O1xuXG5UaWxlRGFvLnByb3RvdHlwZS5xdWVyeUZvclRpbGVzV2l0aFpvb21MZXZlbCA9IGZ1bmN0aW9uICh6b29tTGV2ZWwsIHRpbGVDYWxsYmFjaywgZG9uZUNhbGxiYWNrKSB7XG4gIHRoaXMucXVlcnlGb3JFcVdpdGhGaWVsZEFuZFZhbHVlKFRpbGVDb2x1bW4uQ09MVU1OX1pPT01fTEVWRUwsIHpvb21MZXZlbCwgZnVuY3Rpb24oZXJyLCByZXN1bHQsIHJvd0RvbmUpIHtcbiAgICBpZighdGlsZUNhbGxiYWNrKSByZXR1cm47XG4gICAgaWYgKGVyciB8fCAhcmVzdWx0KSByZXR1cm4gdGlsZUNhbGxiYWNrKGVycik7XG4gICAgdGlsZUNhbGxiYWNrKGVyciwgdGhpcy5nZXRUaWxlUm93KHJlc3VsdCksIHJvd0RvbmUpO1xuICB9LmJpbmQodGhpcyksIGRvbmVDYWxsYmFjayk7XG59O1xuXG4vKipcbiAqIFF1ZXJ5IGZvciBUaWxlcyBhdCBhIHpvb20gbGV2ZWwgaW4gZGVzY2VuZGluZyByb3cgYW5kIGNvbHVtbiBvcmRlclxuICogQHBhcmFtICB7TnVtYmVyfSB6b29tTGV2ZWwgICAgem9vbSBsZXZlbFxuICogQHBhcmFtICB7RnVuY3Rpb259IHRpbGVDYWxsYmFjayBjYWxsYmFjayBmb3IgZWFjaCB0aWxlXG4gKiBAcGFyYW0gIHtGdW5jdGlvbn0gZG9uZUNhbGxiYWNrIGNhbGxlZCB3aGVuIGFsbCB0aWxlcyBhcmUgcmV0cmlldmVkXG4gKi9cblRpbGVEYW8ucHJvdG90eXBlLnF1ZXJ5Rm9yVGlsZXNEZXNjZW5kaW5nID0gZnVuY3Rpb24gKHpvb21MZXZlbCwgdGlsZUNhbGxiYWNrLCBkb25lQ2FsbGJhY2spIHtcbiAgdGhpcy5xdWVyeUZvckVxV2l0aEZpZWxkKFRpbGVDb2x1bW4uQ09MVU1OX1pPT01fTEVWRUwsIHpvb21MZXZlbCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIFRpbGVDb2x1bW4uQ09MVU1OX1RJTEVfQ09MVU1OICsgJyBERVNDLCAnICsgVGlsZUNvbHVtbi5DT0xVTU5fVElMRV9ST1cgKyAnLCBERVNDJywgZnVuY3Rpb24oZXJyLCByZXN1bHQsIHJvd0RvbmUpIHtcbiAgICBpZighdGlsZUNhbGxiYWNrKSByZXR1cm47XG4gICAgaWYgKGVyciB8fCAhcmVzdWx0KSByZXR1cm4gdGlsZUNhbGxiYWNrKGVycik7XG4gICAgdGlsZUNhbGxiYWNrKGVyciwgdGhpcy5nZXRUaWxlUm93KHJlc3VsdCksIHJvd0RvbmUpO1xuICB9LmJpbmQodGhpcyksIGRvbmVDYWxsYmFjayk7XG59O1xuXG4vKipcbiAqIFF1ZXJ5IGZvciB0aWxlcyBhdCBhIHpvb20gbGV2ZWwgYW5kIGNvbHVtblxuICogQHBhcmFtICB7TnVtYmVyfSBjb2x1bW4gICAgICAgY29sdW1uXG4gKiBAcGFyYW0gIHtOdW1iZXJ9IHpvb21MZXZlbCAgICB6b29tIGxldmVsXG4gKiBAcGFyYW0gIHtGdW5jdGlvbn0gdGlsZUNhbGxiYWNrIGNhbGxlZCBmb3IgZWFjaCB0aWxlXG4gKiBAcGFyYW0gIHtGdW5jdGlvbn0gZG9uZUNhbGxiYWNrIGNhbGxlZCB3aGVuIGFsbCB0aWxlcyBoYXZlIGJlZW4gcmV0cmlldmVkXG4gKi9cblRpbGVEYW8ucHJvdG90eXBlLnF1ZXJ5Rm9yVGlsZXNJbkNvbHVtbiA9IGZ1bmN0aW9uIChjb2x1bW4sIHpvb21MZXZlbCwgdGlsZUNhbGxiYWNrLCBkb25lQ2FsbGJhY2spIHtcbiAgdmFyIGZpZWxkVmFsdWVzID0gbmV3IENvbHVtblZhbHVlcygpO1xuICBmaWVsZFZhbHVlcy5hZGRDb2x1bW4oVGlsZUNvbHVtbi5DT0xVTU5fVElMRV9DT0xVTU4sIGNvbHVtbik7XG4gIGZpZWxkVmFsdWVzLmFkZENvbHVtbihUaWxlQ29sdW1uLkNPTFVNTl9aT09NX0xFVkVMLCB6b29tTGV2ZWwpO1xuXG4gIHRoaXMucXVlcnlGb3JGaWVsZFZhbHVlcyhmaWVsZFZhbHVlcywgZnVuY3Rpb24oZXJyLCByZXN1bHQsIHJvd0RvbmUpIHtcbiAgICBpZighdGlsZUNhbGxiYWNrKSByZXR1cm47XG4gICAgaWYgKGVyciB8fCAhcmVzdWx0KSByZXR1cm4gdGlsZUNhbGxiYWNrKGVycik7XG4gICAgdGlsZUNhbGxiYWNrKGVyciwgdGhpcy5nZXRUaWxlUm93KHJlc3VsdCksIHJvd0RvbmUpO1xuICB9LmJpbmQodGhpcyksIGRvbmVDYWxsYmFjayk7XG59O1xuXG4vKipcbiAqIFF1ZXJ5IGZvciB0aWxlcyBhdCBhIHpvb20gbGV2ZWwgYW5kIHJvd1xuICogQHBhcmFtICB7TnVtYmVyfSByb3cgICAgICAgcm93XG4gKiBAcGFyYW0gIHtOdW1iZXJ9IHpvb21MZXZlbCAgICB6b29tIGxldmVsXG4gKiBAcGFyYW0gIHtGdW5jdGlvbn0gdGlsZUNhbGxiYWNrIGNhbGxlZCBmb3IgZWFjaCB0aWxlXG4gKiBAcGFyYW0gIHtGdW5jdGlvbn0gZG9uZUNhbGxiYWNrIGNhbGxlZCB3aGVuIGFsbCB0aWxlcyBoYXZlIGJlZW4gcmV0cmlldmVkXG4gKi9cblRpbGVEYW8ucHJvdG90eXBlLnF1ZXJ5Rm9yVGlsZXNJblJvdyA9IGZ1bmN0aW9uIChyb3csIHpvb21MZXZlbCwgdGlsZUNhbGxiYWNrLCBkb25lQ2FsbGJhY2spIHtcbiAgdmFyIGZpZWxkVmFsdWVzID0gbmV3IENvbHVtblZhbHVlcygpO1xuICBmaWVsZFZhbHVlcy5hZGRDb2x1bW4oVGlsZUNvbHVtbi5DT0xVTU5fVElMRV9ST1csIHJvdyk7XG4gIGZpZWxkVmFsdWVzLmFkZENvbHVtbihUaWxlQ29sdW1uLkNPTFVNTl9aT09NX0xFVkVMLCB6b29tTGV2ZWwpO1xuXG4gIHRoaXMucXVlcnlGb3JGaWVsZFZhbHVlcyhmaWVsZFZhbHVlcywgZnVuY3Rpb24oZXJyLCByZXN1bHQsIHJvd0RvbmUpIHtcbiAgICBpZighdGlsZUNhbGxiYWNrKSByZXR1cm47XG4gICAgaWYgKGVyciB8fCAhcmVzdWx0KSByZXR1cm4gdGlsZUNhbGxiYWNrKGVycik7XG4gICAgdGlsZUNhbGxiYWNrKGVyciwgdGhpcy5nZXRUaWxlUm93KHJlc3VsdCksIHJvd0RvbmUpO1xuICB9LmJpbmQodGhpcyksIGRvbmVDYWxsYmFjayk7XG59O1xuXG4vKipcbiAqIFF1ZXJ5IGJ5IHRpbGUgZ3JpZCBhbmQgem9vbSBsZXZlbFxuICogQHBhcmFtICB7VGlsZUdyaWR9IHRpbGVHcmlkICB0aWxlIGdyaWRcbiAqIEBwYXJhbSAge051bWJlcn0gem9vbUxldmVsIHpvb20gbGV2ZWxcbiAqIEBwYXJhbSAge0Z1bmN0aW9ufSB0aWxlQ2FsbGJhY2sgY2FsbGVkIGZvciBlYWNoIHRpbGVcbiAqIEBwYXJhbSAge0Z1bmN0aW9ufSBkb25lQ2FsbGJhY2sgY2FsbGVkIHdoZW4gYWxsIHRpbGVzIGhhdmUgYmVlbiByZXRyaWV2ZWRcbiAqL1xuVGlsZURhby5wcm90b3R5cGUucXVlcnlCeVRpbGVHcmlkID0gZnVuY3Rpb24gKHRpbGVHcmlkLCB6b29tTGV2ZWwsIHRpbGVDYWxsYmFjaywgZG9uZUNhbGxiYWNrKSB7XG4gIGlmICghdGlsZUdyaWQpIHJldHVybiBkb25lQ2FsbGJhY2soKTtcbiAgdmFyIHRpbGVDb3VudCA9IDA7XG4gIHZhciB4ID0gdGlsZUdyaWQubWluX3g7XG5cbiAgYXN5bmMud2hpbHN0KFxuICAgIGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHggPD0gdGlsZUdyaWQubWF4X3g7XG4gICAgfSwgZnVuY3Rpb24oeENhbGxiYWNrKSB7XG4gICAgICB2YXIgeSA9IHRpbGVHcmlkLm1pbl95O1xuICAgICAgYXN5bmMud2hpbHN0KFxuICAgICAgICBmdW5jdGlvbigpIHtcbiAgICAgICAgICByZXR1cm4geSA8PSB0aWxlR3JpZC5tYXhfeTtcbiAgICAgICAgfSxcbiAgICAgICAgZnVuY3Rpb24oeUNhbGxiYWNrKSB7XG4gICAgICAgICAgdmFyIHdoZXJlID0gJyc7XG4gICAgICAgICAgd2hlcmUgKz0gdGhpcy5idWlsZFdoZXJlV2l0aEZpZWxkQW5kVmFsdWUoVGlsZUNvbHVtbi5DT0xVTU5fWk9PTV9MRVZFTCwgem9vbUxldmVsKTtcbiAgICAgICAgICB3aGVyZSArPSAnIGFuZCAnO1xuICAgICAgICAgIHdoZXJlICs9IHRoaXMuYnVpbGRXaGVyZVdpdGhGaWVsZEFuZFZhbHVlQW5kT3BlcmF0aW9uKFRpbGVDb2x1bW4uQ09MVU1OX1RJTEVfQ09MVU1OLCB4LCAnPScpO1xuICAgICAgICAgIHdoZXJlICs9ICcgYW5kICc7XG4gICAgICAgICAgd2hlcmUgKz0gdGhpcy5idWlsZFdoZXJlV2l0aEZpZWxkQW5kVmFsdWVBbmRPcGVyYXRpb24oVGlsZUNvbHVtbi5DT0xVTU5fVElMRV9ST1csIHksICc9Jyk7XG4gICAgICAgICAgdmFyIHdoZXJlQXJncyA9IHRoaXMuYnVpbGRXaGVyZUFyZ3NXaXRoVmFsdWVBcnJheShbem9vbUxldmVsLCB4LCB5XSk7XG5cbiAgICAgICAgICB0aGlzLnF1ZXJ5V2hlcmVXaXRoQXJnc0Rpc3RpbmN0KHdoZXJlLCB3aGVyZUFyZ3MsIGZ1bmN0aW9uKGVyciwgcmVzdWx0LCByb3dEb25lKSB7XG4gICAgICAgICAgICBpZighdGlsZUNhbGxiYWNrKSByZXR1cm4geUNhbGxiYWNrKCk7XG4gICAgICAgICAgICBpZiAoZXJyIHx8ICFyZXN1bHQpIHJldHVybiB5Q2FsbGJhY2soZXJyKTtcbiAgICAgICAgICAgIHRpbGVDb3VudCsrO1xuICAgICAgICAgICAgdGlsZUNhbGxiYWNrKGVyciwgdGhpcy5nZXRUaWxlUm93KHJlc3VsdCksIHJvd0RvbmUpO1xuICAgICAgICAgIH0uYmluZCh0aGlzKSwgZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICB5Kys7XG4gICAgICAgICAgICB5Q2FsbGJhY2soKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfS5iaW5kKHRoaXMpLFxuICAgICAgICBmdW5jdGlvbigpIHtcbiAgICAgICAgICB4Kys7XG4gICAgICAgICAgeENhbGxiYWNrKCk7XG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfS5iaW5kKHRoaXMpLFxuICAgIGZ1bmN0aW9uKCkge1xuICAgICAgZG9uZUNhbGxiYWNrKG51bGwsIHRpbGVDb3VudCk7XG4gICAgfVxuICApO1xufTtcblxuVGlsZURhby5wcm90b3R5cGUuZGVsZXRlVGlsZSA9IGZ1bmN0aW9uKGNvbHVtbiwgcm93LCB6b29tTGV2ZWwsIGNhbGxiYWNrKSB7XG4gIHZhciB3aGVyZSA9ICcnO1xuXG4gIHdoZXJlICs9IHRoaXMuYnVpbGRXaGVyZVdpdGhGaWVsZEFuZFZhbHVlKFRpbGVDb2x1bW4uQ09MVU1OX1pPT01fTEVWRUwsIHpvb21MZXZlbCk7XG4gIHdoZXJlICs9ICcgYW5kICc7XG4gIHdoZXJlICs9IHRoaXMuYnVpbGRXaGVyZVdpdGhGaWVsZEFuZFZhbHVlKFRpbGVDb2x1bW4uQ09MVU1OX1RJTEVfQ09MVU1OLCBjb2x1bW4pO1xuICB3aGVyZSArPSAnIGFuZCAnO1xuICB3aGVyZSArPSB0aGlzLmJ1aWxkV2hlcmVXaXRoRmllbGRBbmRWYWx1ZShUaWxlQ29sdW1uLkNPTFVNTl9USUxFX1JPVywgcm93KTtcblxuICB2YXIgd2hlcmVBcmdzID0gdGhpcy5idWlsZFdoZXJlQXJnc1dpdGhWYWx1ZUFycmF5KFt6b29tTGV2ZWwsIGNvbHVtbiwgcm93XSk7XG5cbiAgdGhpcy5kZWxldGVXaGVyZSh3aGVyZSwgd2hlcmVBcmdzLCBmdW5jdGlvbihlcnIsIHJlc3VsdCkge1xuICAgIGNhbGxiYWNrKGVyciwgcmVzdWx0KTtcbiAgfSk7XG59O1xuXG5UaWxlRGFvLnByb3RvdHlwZS5nZXRUaWxlTWF0cml4U2V0RGFvID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gbmV3IFRpbGVNYXRyaXhTZXREYW8odGhpcy5jb25uZWN0aW9uKTtcbn07XG5cblRpbGVEYW8ucHJvdG90eXBlLmdldENvbnRlbnRzRGFvID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gbmV3IENvbnRlbnRzRGFvKHRoaXMuY29ubmVjdGlvbik7XG59O1xuXG5UaWxlRGFvLnByb3RvdHlwZS5nZXRTcnMgPSBmdW5jdGlvbihjYWxsYmFjaykge1xuICB0aGlzLmdldENvbnRlbnRzRGFvKCkuZ2V0U3JzKHRoaXMudGlsZU1hdHJpeFNldCwgY2FsbGJhY2spO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBUaWxlRGFvO1xuIiwiXG5tb2R1bGUuZXhwb3J0cy5hZGp1c3RUaWxlTWF0cml4TGVuZ3RocyA9IGZ1bmN0aW9uKHRpbGVNYXRyaXhTZXQsIHRpbGVNYXRyaWNlcykge1xuICB2YXIgdGlsZU1hdHJpeFdpZHRoID0gdGlsZU1hdHJpeFNldC5tYXhYIC0gdGlsZU1hdHJpeFNldC5taW5YO1xuICB2YXIgdGlsZU1hdHJpeEhlaWdodCA9IHRpbGVNYXRyaXhTZXQubWF4WSAtIHRpbGVNYXRyaXhTZXQubWluWTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aWxlTWF0cmljZXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgdGlsZU1hdHJpeCA9IHRpbGVNYXRyaWNlc1tpXTtcbiAgICB2YXIgdGVtcE1hdHJpeFdpZHRoID0gcGFyc2VJbnQoKHRpbGVNYXRyaXhXaWR0aCAvICh0aWxlTWF0cml4LnBpeGVsWFNpemUgKiBwYXJzZUludCh0aWxlTWF0cml4LnRpbGVXaWR0aCkpKSk7XG4gICAgdmFyIHRlbXBNYXRyaXhIZWlnaHQgPSBwYXJzZUludCgodGlsZU1hdHJpeEhlaWdodCAvICh0aWxlTWF0cml4LnBpeGVsWVNpemUgKiBwYXJzZUludCh0aWxlTWF0cml4LnRpbGVIZWlnaHQpKSkpO1xuICAgIGlmKHRlbXBNYXRyaXhXaWR0aCA+IHBhcnNlSW50KHRpbGVNYXRyaXgubWF0cml4V2lkdGgpKSB7XG4gICAgICB0aWxlTWF0cml4Lm1hdHJpeFdpZHRoID0gcGFyc2VJbnQodGVtcE1hdHJpeFdpZHRoKTtcbiAgICB9XG4gICAgaWYgKHRlbXBNYXRyaXhIZWlnaHQgPiBwYXJzZUludCh0aWxlTWF0cml4Lm1hdHJpeEhlaWdodCkpIHtcbiAgICAgIHRpbGVNYXRyaXgubWF0cml4SGVpZ2h0ID0gcGFyc2VJbnQodGVtcE1hdHJpeEhlaWdodCk7XG4gICAgfVxuICB9XG59XG4iLCIvKipcbiAqIHRpbGVSb3cgbW9kdWxlLlxuICogQG1vZHVsZSB0aWxlcy91c2VyL3RpbGVSb3dcbiAqL1xuXG52YXIgVXNlclJvdyA9IHJlcXVpcmUoJy4uLy4uL3VzZXIvdXNlclJvdycpO1xuXG52YXIgdXRpbCA9IHJlcXVpcmUoJ3V0aWwnKTtcblxuLyoqXG4gKiBUaWxlIFJvdyBjb250YWluaW5nIHRoZSB2YWx1ZXMgZnJvbSBhIHNpbmdsZSByZXN1bHQgc2V0IHJvd1xuICogQHBhcmFtICB7VGlsZVRhYmxlfSB0aWxlVGFibGUgdGlsZSB0YWJsZVxuICogQHBhcmFtICB7QXJyYXl9IGNvbHVtblR5cGVzICBjb2x1bW4gdHlwZXNcbiAqIEBwYXJhbSAge0FycmF5fSB2YWx1ZXMgICAgICAgdmFsdWVzXG4gKi9cbnZhciBUaWxlUm93ID0gZnVuY3Rpb24odGlsZVRhYmxlLCBjb2x1bW5UeXBlcywgdmFsdWVzKSB7XG4gIFVzZXJSb3cuY2FsbCh0aGlzLCB0aWxlVGFibGUsIGNvbHVtblR5cGVzLCB2YWx1ZXMpO1xuICB0aGlzLnRpbGVUYWJsZSA9IHRpbGVUYWJsZTtcbn1cblxudXRpbC5pbmhlcml0cyhUaWxlUm93LCBVc2VyUm93KTtcblxuVGlsZVJvdy5wcm90b3R5cGUudG9PYmplY3RWYWx1ZSA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWU7XG59O1xuXG5UaWxlUm93LnByb3RvdHlwZS50b0RhdGFiYXNlVmFsdWUgPSBmdW5jdGlvbiAoY29sdW1uTmFtZSkge1xuICByZXR1cm4gdGhpcy5nZXRWYWx1ZVdpdGhDb2x1bW5OYW1lKGNvbHVtbk5hbWUpO1xufTtcblxuLyoqXG4gKiBHZXQgdGhlIHpvb20gbGV2ZWwgY29sdW1uIGluZGV4XG4gKiBAcmV0dXJuIHtOdW1iZXJ9IHpvb20gbGV2ZWwgY29sdW1uIGluZGV4XG4gKi9cblRpbGVSb3cucHJvdG90eXBlLmdldFpvb21MZXZlbENvbHVtbkluZGV4ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy50aWxlVGFibGUuem9vbUxldmVsSW5kZXg7XG59O1xuXG4vKipcbiAqIEdldCB0aGUgem9vbSBsZXZlbCBjb2x1bW5cbiAqIEByZXR1cm4ge1RpbGVDb2x1bW59IHpvb20gbGV2ZWwgY29sdW1uXG4gKi9cblRpbGVSb3cucHJvdG90eXBlLmdldFpvb21MZXZlbENvbHVtbiA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gdGhpcy50aWxlVGFibGUuZ2V0Wm9vbUxldmVsQ29sdW1uKCk7XG59XG5cbi8qKlxuICogR2V0IHRoZSB6b29tIGxldmVsXG4gKiBAcmV0dXJuIHtOdW1iZXJ9IHpvb20gbGV2ZWxcbiAqL1xuVGlsZVJvdy5wcm90b3R5cGUuZ2V0Wm9vbUxldmVsID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5nZXRWYWx1ZVdpdGhDb2x1bW5OYW1lKHRoaXMuZ2V0Wm9vbUxldmVsQ29sdW1uKCkubmFtZSk7XG59O1xuXG4vKipcbiAqIFNldCB0aGUgem9vbSBsZXZlbFxuICogQHBhcmFtIHtOdW1iZXJ9IHpvb21MZXZlbCB6b29tIGxldmVsXG4gKi9cblRpbGVSb3cucHJvdG90eXBlLnNldFpvb21MZXZlbCA9IGZ1bmN0aW9uICh6b29tTGV2ZWwpIHtcbiAgdGhpcy5zZXRWYWx1ZVdpdGhJbmRleCh0aGlzLmdldFpvb21MZXZlbENvbHVtbkluZGV4KCksIHpvb21MZXZlbCk7XG59O1xuXG4vKipcbiAqIEdldCB0aGUgdGlsZSBjb2x1bW4gY29sdW1uIEluZGV4XG4gKiBAcmV0dXJuIHtudW1iZXJ9IHRpbGUgY29sdW1uIGNvbHVtbiBpbmRleFxuICovXG5UaWxlUm93LnByb3RvdHlwZS5nZXRUaWxlQ29sdW1uQ29sdW1uSW5kZXggPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLnRpbGVUYWJsZS50aWxlQ29sdW1uSW5kZXg7XG59O1xuXG4vKipcbiAqIEdldCB0aGUgdGlsZSBjb2x1bW4gY29sdW1uXG4gKiBAcmV0dXJuIHtUaWxlQ29sdW1ufSB0aWxlIGNvbHVtbiBjb2x1bW5cbiAqL1xuVGlsZVJvdy5wcm90b3R5cGUuZ2V0VGlsZUNvbHVtbkNvbHVtbiA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMudGlsZVRhYmxlLmdldFRpbGVDb2x1bW5Db2x1bW4oKTtcbn07XG5cbi8qKlxuICogR2V0IHRoZSB0aWxlIGNvbHVtblxuICogQHJldHVybiB7TnVtYmVyfSB0aWxlIGNvbHVtblxuICovXG5UaWxlUm93LnByb3RvdHlwZS5nZXRUaWxlQ29sdW1uID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5nZXRWYWx1ZVdpdGhDb2x1bW5OYW1lKHRoaXMuZ2V0VGlsZUNvbHVtbkNvbHVtbigpLm5hbWUpO1xufTtcblxuLyoqXG4gKiBTZXQgdGhlIHRpbGUgY29sdW1uXG4gKiBAcGFyYW0ge251bWJlcn0gdGlsZUNvbHVtbiB0aWxlIGNvbHVtblxuICovXG5UaWxlUm93LnByb3RvdHlwZS5zZXRUaWxlQ29sdW1uID0gZnVuY3Rpb24gKHRpbGVDb2x1bW4pIHtcbiAgdGhpcy5zZXRWYWx1ZVdpdGhDb2x1bW5OYW1lKHRoaXMuZ2V0VGlsZUNvbHVtbkNvbHVtbigpLm5hbWUsIHRpbGVDb2x1bW4pO1xufTtcblxuLyoqXG4gKiBHZXQgdGhlIHRpbGUgcm93IGNvbHVtbiBpbmRleFxuICogQHJldHVybiB7TnVtYmVyfSB0aWxlIHJvdyBjb2x1bW4gaW5kZXhcbiAqL1xuVGlsZVJvdy5wcm90b3R5cGUuZ2V0VGlsZVJvd0NvbHVtbkluZGV4ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy50aWxlVGFibGUudGlsZVJvd0luZGV4O1xufTtcblxuLyoqXG4gKiBHZXQgdGhlIHRpbGUgcm93IGNvbHVtblxuICogQHJldHVybiB7VGlsZUNvbHVtbn0gdGlsZSByb3cgY29sdW1uXG4gKi9cblRpbGVSb3cucHJvdG90eXBlLmdldFRpbGVSb3dDb2x1bW4gPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLnRpbGVUYWJsZS5nZXRUaWxlUm93Q29sdW1uKCk7XG59O1xuXG4vKipcbiAqIEdldCB0aGUgdGlsZSByb3dcbiAqIEByZXR1cm4ge051bWJlcn0gdGlsZSByb3dcbiAqL1xuVGlsZVJvdy5wcm90b3R5cGUuZ2V0VGlsZVJvdyA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMuZ2V0VmFsdWVXaXRoQ29sdW1uTmFtZSh0aGlzLmdldFRpbGVSb3dDb2x1bW4oKS5uYW1lKTtcbn07XG5cbi8qKlxuICogU2V0IHRoZSB0aWxlIHJvd1xuICogQHBhcmFtIHtOdW1iZXJ9IHRpbGVSb3cgdGlsZSByb3dcbiAqL1xuVGlsZVJvdy5wcm90b3R5cGUuc2V0VGlsZVJvdyA9IGZ1bmN0aW9uICh0aWxlUm93KSB7XG4gIHRoaXMuc2V0VmFsdWVXaXRoQ29sdW1uTmFtZSh0aGlzLmdldFRpbGVSb3dDb2x1bW4oKS5uYW1lLCB0aWxlUm93KTtcbn07XG5cbi8qKlxuICogR2V0IHRoZSB0aWxlIGRhdGEgY29sdW1uIGluZGV4XG4gKiBAcmV0dXJuIHtOdW1iZXJ9IHRpbGUgZGF0YSBjb2x1bW4gaW5kZXhcbiAqL1xuVGlsZVJvdy5wcm90b3R5cGUuZ2V0VGlsZURhdGFDb2x1bW5JbmRleCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMudGlsZVRhYmxlLnRpbGVEYXRhSW5kZXg7XG59O1xuXG4vKipcbiAqIEdldCB0aGUgdGlsZSBkYXRhIGNvbHVtblxuICogQHJldHVybiB7VGlsZUNvbHVtbn0gdGlsZSBkYXRhIGNvbHVtblxuICovXG5UaWxlUm93LnByb3RvdHlwZS5nZXRUaWxlRGF0YUNvbHVtbiA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMudGlsZVRhYmxlLmdldFRpbGVEYXRhQ29sdW1uKCk7XG59O1xuXG4vKipcbiAqIEdldCB0aGUgdGlsZSBkYXRhXG4gKiBAcmV0dXJuIHtCdWZmZXJ9IHRpbGUgZGF0YVxuICovXG5UaWxlUm93LnByb3RvdHlwZS5nZXRUaWxlRGF0YSA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMuZ2V0VmFsdWVXaXRoQ29sdW1uTmFtZSh0aGlzLmdldFRpbGVEYXRhQ29sdW1uKCkubmFtZSk7XG59O1xuXG4vKipcbiAqIFNldCB0aGUgdGlsZSBkYXRhXG4gKiBAcGFyYW0ge0J1ZmZlcn0gdGlsZURhdGEgdGlsZSBkYXRhXG4gKi9cblRpbGVSb3cucHJvdG90eXBlLnNldFRpbGVEYXRhID0gZnVuY3Rpb24gKHRpbGVEYXRhKSB7XG4gIHRoaXMuc2V0VmFsdWVXaXRoQ29sdW1uTmFtZSh0aGlzLmdldFRpbGVEYXRhQ29sdW1uKCkubmFtZSwgdGlsZURhdGEpO1xufTtcblxuLyoqXG4gKiBHZXQgdGhlIHRpbGUgZGF0YSBhcyBhbiBpbWFnZVxuICogQHJldHVybiB7aW1hZ2V9IHRpbGUgaW1hZ2VcbiAqL1xuVGlsZVJvdy5wcm90b3R5cGUuZ2V0VGlsZURhdGFJbWFnZSA9IGZ1bmN0aW9uICgpIHtcbiAgLy8gVE9ET1xufTtcblxuXG4vLyAvKipcbi8vICAqICBHZXQgdGhlIHRpbGUgZGF0YSBhcyBhIHNjYWxlZCBpbWFnZVxuLy8gICpcbi8vICAqICBAcGFyYW0gc2NhbGUgc2NhbGUsIDAuMCB0byAxLjBcbi8vICAqXG4vLyAgKiAgQHJldHVybiB0aWxlIGltYWdlXG4vLyAgKi9cbi8vIC0oVUlJbWFnZSAqKSBnZXRUaWxlRGF0YUltYWdlV2l0aFNjYWxlOiAoQ0dGbG9hdCkgc2NhbGU7XG4vL1xuLy8gLyoqXG4vLyAgKiAgU2V0IHRoZSB0aWxlIGRhdGEgd2l0aCBhbiBpbWFnZVxuLy8gICpcbi8vICAqICBAcGFyYW0gaW1hZ2UgIGltYWdlXG4vLyAgKiAgQHBhcmFtIGZvcm1hdCBpbWFnZSBmb3JtYXRcbi8vICAqL1xuLy8gLSh2b2lkKSBzZXRUaWxlRGF0YVdpdGhJbWFnZTogKFVJSW1hZ2UgKikgaW1hZ2UgYW5kRm9ybWF0OiAoZW51bSBHUEtHQ29tcHJlc3NGb3JtYXQpIGZvcm1hdDtcbi8vXG4vLyAvKipcbi8vICAqICBTZXQgdGhlIHRpbGUgZGF0YSB3aXRoIGFuIGltYWdlXG4vLyAgKlxuLy8gICogIEBwYXJhbSBpbWFnZSAgaW1hZ2Vcbi8vICAqICBAcGFyYW0gZm9ybWF0IGltYWdlIGZvcm1hdFxuLy8gICogIEBwYXJhbSBxdWFsaXR5IGNvbXByZXNzaW9uIHF1YWxpdHksIDAuMCB0byAxLjAsIHVzZWQgb25seSBmb3IgR1BLR19DRl9KUEVHXG4vLyAgKi9cbi8vIC0odm9pZCkgc2V0VGlsZURhdGFXaXRoSW1hZ2U6IChVSUltYWdlICopIGltYWdlIGFuZEZvcm1hdDogKGVudW0gR1BLR0NvbXByZXNzRm9ybWF0KSBmb3JtYXQgYW5kUXVhbGl0eTogKENHRmxvYXQpIHF1YWxpdHk7XG5cblxubW9kdWxlLmV4cG9ydHMgPSBUaWxlUm93O1xuIiwiLyoqXG4gKiB0aWxlVGFibGUgbW9kdWxlLlxuICogQG1vZHVsZSB0aWxlcy91c2VyL3RpbGVUYWJsZVxuICovXG5cbnZhciBVc2VyVGFibGUgPSByZXF1aXJlKCcuLi8uLi91c2VyL3VzZXJUYWJsZScpXG4gICwgVGlsZUNvbHVtbiA9IHJlcXVpcmUoJy4vdGlsZUNvbHVtbicpO1xuXG52YXIgdXRpbCA9IHJlcXVpcmUoJ3V0aWwnKTtcblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgdXNlciB0aWxlIHRhYmxlXG4gKiBAcGFyYW0gIHtzdHJpbmd9IHRhYmxlTmFtZSB0YWJsZSBuYW1lXG4gKiBAcGFyYW0gIHthcnJheX0gY29sdW1ucyAgIGZlYXR1cmUgY29sdW1uc1xuICovXG52YXIgVGlsZVRhYmxlID0gZnVuY3Rpb24odGFibGVOYW1lLCBjb2x1bW5zKSB7XG4gIFVzZXJUYWJsZS5jYWxsKHRoaXMsIHRhYmxlTmFtZSwgY29sdW1ucyk7XG5cbiAgdmFyIHpvb21MZXZlbDtcbiAgdmFyIHRpbGVDb2x1bW47XG4gIHZhciB0aWxlUm93O1xuICB2YXIgdGlsZURhdGE7XG5cbiAgLy8gdmFyIHVuaXF1ZUNvbnN0cmFpbnQgPSBuZXcgVW5pcXVlQ29uc3RyYWludCgpO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgY29sdW1ucy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBjb2x1bW4gPSBjb2x1bW5zW2ldO1xuXG4gICAgdmFyIGNvbHVtbk5hbWUgPSBjb2x1bW4ubmFtZTtcbiAgICB2YXIgY29sdW1uSW5kZXggPSBjb2x1bW4uaW5kZXg7XG5cbiAgICBzd2l0Y2goY29sdW1uTmFtZSkge1xuICAgICAgY2FzZSBUaWxlQ29sdW1uLkNPTFVNTl9aT09NX0xFVkVMOlxuICAgICAgdGhpcy5kdXBsaWNhdGVDaGVjayhjb2x1bW5JbmRleCwgem9vbUxldmVsLCBUaWxlQ29sdW1uLkNPTFVNTl9aT09NX0xFVkVMKTtcbiAgICAgIHpvb21MZXZlbCA9IGNvbHVtbkluZGV4O1xuICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFRpbGVDb2x1bW4uQ09MVU1OX1RJTEVfQ09MVU1OOlxuICAgICAgdGhpcy5kdXBsaWNhdGVDaGVjayhjb2x1bW5JbmRleCwgdGlsZUNvbHVtbiwgVGlsZUNvbHVtbi5DT0xVTU5fVElMRV9DT0xVTU4pO1xuICAgICAgdGlsZUNvbHVtbiA9IGNvbHVtbkluZGV4O1xuICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFRpbGVDb2x1bW4uQ09MVU1OX1RJTEVfUk9XOlxuICAgICAgdGhpcy5kdXBsaWNhdGVDaGVjayhjb2x1bW5JbmRleCwgdGlsZVJvdywgVGlsZUNvbHVtbi5DT0xVTU5fVElMRV9ST1cpO1xuICAgICAgdGlsZVJvdyA9IGNvbHVtbkluZGV4O1xuICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFRpbGVDb2x1bW4uQ09MVU1OX1RJTEVfREFUQTpcbiAgICAgIHRoaXMuZHVwbGljYXRlQ2hlY2soY29sdW1uSW5kZXgsIHRpbGVEYXRhLCBUaWxlQ29sdW1uLkNPTFVNTl9USUxFX0RBVEEpO1xuICAgICAgdGlsZURhdGEgPSBjb2x1bW5JbmRleDtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHRoaXMubWlzc2luZ0NoZWNrKHpvb21MZXZlbCwgVGlsZUNvbHVtbi5DT0xVTU5fWk9PTV9MRVZFTCk7XG4gIHRoaXMuem9vbUxldmVsSW5kZXggPSB6b29tTGV2ZWw7XG5cbiAgdGhpcy5taXNzaW5nQ2hlY2sodGlsZUNvbHVtbiwgVGlsZUNvbHVtbi5DT0xVTU5fVElMRV9DT0xVTU4pO1xuICB0aGlzLnRpbGVDb2x1bW5JbmRleCA9IHRpbGVDb2x1bW47XG5cbiAgdGhpcy5taXNzaW5nQ2hlY2sodGlsZVJvdywgVGlsZUNvbHVtbi5DT0xVTU5fVElMRV9ST1cpO1xuICB0aGlzLnRpbGVSb3dJbmRleCA9IHRpbGVSb3c7XG5cbiAgdGhpcy5taXNzaW5nQ2hlY2sodGlsZURhdGEsIFRpbGVDb2x1bW4uQ09MVU1OX1RJTEVfREFUQSk7XG4gIHRoaXMudGlsZURhdGFJbmRleCA9IHRpbGVEYXRhO1xufVxuXG51dGlsLmluaGVyaXRzKFRpbGVUYWJsZSwgVXNlclRhYmxlKTtcblxuLyoqXG4gKiBUaGUgVGlsZVRhYmxlXG4gKiBAdHlwZSB7VGlsZVRhYmxlfVxuICovXG5tb2R1bGUuZXhwb3J0cyA9IFRpbGVUYWJsZTtcblxuVGlsZVRhYmxlLnByb3RvdHlwZS5nZXRab29tTGV2ZWxDb2x1bW4gPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHRoaXMuZ2V0Q29sdW1uV2l0aEluZGV4KHRoaXMuem9vbUxldmVsSW5kZXgpO1xufTtcblxuVGlsZVRhYmxlLnByb3RvdHlwZS5nZXRUaWxlQ29sdW1uQ29sdW1uID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiB0aGlzLmdldENvbHVtbldpdGhJbmRleCh0aGlzLnRpbGVDb2x1bW5JbmRleCk7XG59O1xuXG5UaWxlVGFibGUucHJvdG90eXBlLmdldFRpbGVSb3dDb2x1bW4gPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHRoaXMuZ2V0Q29sdW1uV2l0aEluZGV4KHRoaXMudGlsZVJvd0luZGV4KTtcbn07XG5cblRpbGVUYWJsZS5wcm90b3R5cGUuZ2V0VGlsZURhdGFDb2x1bW4gPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHRoaXMuZ2V0Q29sdW1uV2l0aEluZGV4KHRoaXMudGlsZURhdGFJbmRleCk7XG59O1xuXG5UaWxlVGFibGUucHJvdG90eXBlLmdldFRhYmxlVHlwZSA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gVXNlclRhYmxlLlRJTEVfVEFCTEU7XG59XG5cblRpbGVUYWJsZS5jcmVhdGVSZXF1aXJlZENvbHVtbnMgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIFRpbGVUYWJsZS5jcmVhdGVSZXF1aXJlZENvbHVtbnNXaXRoU3RhcnRpbmdJbmRleCgwKTtcbn1cblxuVGlsZVRhYmxlLmNyZWF0ZVJlcXVpcmVkQ29sdW1uc1dpdGhTdGFydGluZ0luZGV4ID0gZnVuY3Rpb24oc3RhcnRpbmdJbmRleCkge1xuICB2YXIgY29sdW1ucyA9IFtdO1xuICBjb2x1bW5zLnB1c2goVGlsZUNvbHVtbi5jcmVhdGVJZENvbHVtbihzdGFydGluZ0luZGV4KyspKTtcbiAgY29sdW1ucy5wdXNoKFRpbGVDb2x1bW4uY3JlYXRlWm9vbUxldmVsQ29sdW1uKHN0YXJ0aW5nSW5kZXgrKykpO1xuICBjb2x1bW5zLnB1c2goVGlsZUNvbHVtbi5jcmVhdGVUaWxlQ29sdW1uQ29sdW1uKHN0YXJ0aW5nSW5kZXgrKykpO1xuICBjb2x1bW5zLnB1c2goVGlsZUNvbHVtbi5jcmVhdGVUaWxlUm93Q29sdW1uKHN0YXJ0aW5nSW5kZXgrKykpO1xuICBjb2x1bW5zLnB1c2goVGlsZUNvbHVtbi5jcmVhdGVUaWxlRGF0YUNvbHVtbihzdGFydGluZ0luZGV4KyspKTtcbiAgcmV0dXJuIGNvbHVtbnM7XG59XG4iLCIvKipcbiAqIHRpbGVUYWJsZVJlYWRlciBtb2R1bGUuXG4gKiBAbW9kdWxlIHRpbGVzL3VzZXIvdGlsZVRhYmxlUmVhZGVyXG4gKi9cblxudmFyIFVzZXJUYWJsZVJlYWRlciA9IHJlcXVpcmUoJy4uLy4uL3VzZXIvdXNlclRhYmxlUmVhZGVyJylcbiAgLCBEYXRhVHlwZXMgPSByZXF1aXJlKCcuLi8uLi9kYi9kYXRhVHlwZXMnKVxuICAsIFRpbGVNYXRyaXhTZXQgPSByZXF1aXJlKCcuLi9tYXRyaXhzZXQnKS5UaWxlTWF0cml4U2V0XG4gICwgVGlsZVRhYmxlID0gcmVxdWlyZSgnLi90aWxlVGFibGUnKVxuICAsIFRpbGVDb2x1bW4gPSByZXF1aXJlKCcuL3RpbGVDb2x1bW4nKTtcblxudmFyIHV0aWwgPSByZXF1aXJlKCd1dGlsJyk7XG5cbi8qKlxuKiBSZWFkcyB0aGUgbWV0YWRhdGEgZnJvbSBhbiBleGlzdGluZyB0aWxlIHRhYmxlXG4qIEBjbGFzcyBUaWxlVGFibGVSZWFkZXJcbiogQGV4dGVuZHMge21vZHVsZTp1c2VyflVzZXJUYWJsZVJlYWRlcn1cbiovXG52YXIgVGlsZVRhYmxlUmVhZGVyID0gZnVuY3Rpb24odGlsZU1hdHJpeFNldCkge1xuICBVc2VyVGFibGVSZWFkZXIuY2FsbCh0aGlzLCB0aWxlTWF0cml4U2V0LnRhYmxlX25hbWUpO1xuICB0aGlzLnRpbGVNYXRyaXhTZXQgPSB0aWxlTWF0cml4U2V0O1xufVxuXG51dGlsLmluaGVyaXRzKFRpbGVUYWJsZVJlYWRlciwgVXNlclRhYmxlUmVhZGVyKTtcblxuVGlsZVRhYmxlUmVhZGVyLnByb3RvdHlwZS5yZWFkVGlsZVRhYmxlID0gZnVuY3Rpb24gKGRiLCBjYWxsYmFjaykge1xuICB0aGlzLnJlYWRUYWJsZShkYiwgY2FsbGJhY2spO1xufTtcblxuVGlsZVRhYmxlUmVhZGVyLnByb3RvdHlwZS5jcmVhdGVUYWJsZVdpdGhOYW1lQW5kQ29sdW1ucyA9IGZ1bmN0aW9uICh0YWJsZU5hbWUsIGNvbHVtbnMpIHtcbiAgcmV0dXJuIG5ldyBUaWxlVGFibGUodGFibGVOYW1lLCBjb2x1bW5zKTtcbn07XG5cblRpbGVUYWJsZVJlYWRlci5wcm90b3R5cGUuY3JlYXRlQ29sdW1uV2l0aFJlc3VsdHMgPSBmdW5jdGlvbiAocmVzdWx0cywgaW5kZXgsIG5hbWUsIHR5cGUsIG1heCwgbm90TnVsbCwgZGVmYXVsdFZhbHVlSW5kZXgsIHByaW1hcnlLZXkpIHtcbiAgdmFyIGRhdGFUeXBlID0gRGF0YVR5cGVzLmZyb21OYW1lKHR5cGUpO1xuICB2YXIgZGVmYXVsdFZhbHVlID0gdW5kZWZpbmVkO1xuICBpZiAoZGVmYXVsdFZhbHVlSW5kZXgpIHtcbiAgICAvLyBjb25zb2xlLmxvZygnZGVmYXVsdCB2YWx1ZSBpbmRleCcsIGRlZmF1bHRWYWx1ZUluZGV4KTtcbiAgICAvLyBjb25zb2xlLmxvZygncmVzdWx0JywgcmVzdWx0cyk7XG4gIH1cbiAgdmFyIGNvbHVtbiA9IG5ldyBUaWxlQ29sdW1uKGluZGV4LCBuYW1lLCBkYXRhVHlwZSwgbWF4LCBub3ROdWxsLCBkZWZhdWx0VmFsdWUsIHByaW1hcnlLZXkpO1xuXG4gIHJldHVybiBjb2x1bW47XG59O1xuXG4vKipcbiAqIFRoZSBUaWxlVGFibGVSZWFkZXJcbiAqIEB0eXBlIHtUaWxlVGFibGVSZWFkZXJ9XG4gKi9cbm1vZHVsZS5leHBvcnRzID0gVGlsZVRhYmxlUmVhZGVyO1xuIiwiLyoqXG4gKiB1c2VyQ29sdW1uIG1vZHVsZS5cbiAqIEBtb2R1bGUgdXNlci91c2VyQ29sdW1uXG4gKi9cblxudmFyIERhdGFUeXBlcyA9IHJlcXVpcmUoJy4uL2RiL2RhdGFUeXBlcycpO1xuXG4vKipcbiAqIFVzZXJDb2x1bW5cbiAqIEBjbGFzcyBVc2VyQ29sdW1uXG4gKi9cbmZ1bmN0aW9uIFVzZXJDb2x1bW4oaW5kZXgsIG5hbWUsIGRhdGFUeXBlLCBtYXgsIG5vdE51bGwsIGRlZmF1bHRWYWx1ZSwgcHJpbWFyeUtleSkge1xuICB0aGlzLmluZGV4ID0gaW5kZXg7XG4gIHRoaXMubmFtZSA9IG5hbWU7XG4gIHRoaXMuZGF0YVR5cGUgPSBkYXRhVHlwZTtcbiAgdGhpcy5tYXggPSBtYXg7XG4gIHRoaXMubm90TnVsbCA9IG5vdE51bGwsXG4gIHRoaXMuZGVmYXVsdFZhbHVlID0gZGVmYXVsdFZhbHVlO1xuICB0aGlzLnByaW1hcnlLZXkgPSBwcmltYXJ5S2V5O1xuICB0aGlzLnZhbGlkYXRlTWF4KCk7XG59XG5cblVzZXJDb2x1bW4ucHJvdG90eXBlLmdldFR5cGVOYW1lID0gZnVuY3Rpb24gKCkge1xuICB2YXIgdHlwZSA9IHVuZGVmaW5lZDtcbiAgaWYgKHRoaXMuZGF0YVR5cGUgIT09IERhdGFUeXBlcy5HUEtHRGF0YVR5cGUuR1BLR19EVF9HRU9NRVRSWSkge1xuICAgIHR5cGUgPSBEYXRhVHlwZXMubmFtZSh0aGlzLmRhdGFUeXBlKTtcbiAgfVxuICByZXR1cm4gdHlwZTtcbn07XG5cblVzZXJDb2x1bW4ucHJvdG90eXBlLnZhbGlkYXRlTWF4ID0gZnVuY3Rpb24gKCkge1xuICBpZih0aGlzLm1heCAmJiB0aGlzLmRhdGFUeXBlICE9PSBEYXRhVHlwZXMuR1BLR0RhdGFUeXBlLkdQS0dfRFRfVEVYVCAmJiB0aGlzLmRhdGFUeXBlICE9PSBEYXRhVHlwZXMuR1BLR0RhdGFUeXBlLkdQS0dfRFRfQkxPQikge1xuICAgIHRocm93IG5ldyBFcnJvcignQ29sdW1uIG1heCBpcyBvbmx5IHN1cHBvcnRlZCBmb3IgVEVYVCBhbmQgQkxPQiBjb2x1bW5zLiBjb2x1bW46ICcgKyB0aGlzLm5hbWUgKyAnLCBtYXg6ICcgKyB0aGlzLm1heCArICcsIHR5cGU6ICcgKyB0aGlzLmRhdGFUeXBlKVxuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFVzZXJDb2x1bW47XG4iLCIvKipcbiAqIFVzZXJEYW8gbW9kdWxlLlxuICogQG1vZHVsZSB1c2VyL3VzZXJEYW9cbiAqIEBzZWUgbW9kdWxlOmRhby9kYW9cbiAqL1xuXG52YXIgVXNlclJvdyA9IHJlcXVpcmUoJy4vdXNlclJvdycpXG4gICwgRGFvID0gcmVxdWlyZSgnLi4vZGFvL2RhbycpO1xuXG52YXIgdXRpbCA9IHJlcXVpcmUoJ3V0aWwnKTtcblxuLyoqXG4gKiBBYnN0cmFjdCBVc2VyIERBTyBmb3IgcmVhZGluZyB1c2VyIHRhYmxlc1xuICogQGNsYXNzIFVzZXJEYW9cbiAqIEBleHRlbmRzIHttb2R1bGU6ZGFvL2Rhb35EYW99XG4gKiBAcGFyYW0gIHtHZW9QYWNrYWdlQ29ubmVjdGlvbn0gY29ubmVjdGlvbiAgICAgICAgY29ubmVjdGlvblxuICogQHBhcmFtICB7c3RyaW5nfSB0YWJsZSB0YWJsZSBuYW1lXG4gKi9cbnZhciBVc2VyRGFvID0gZnVuY3Rpb24oY29ubmVjdGlvbiwgdGFibGUpIHtcbiAgRGFvLmNhbGwodGhpcywgY29ubmVjdGlvbik7XG4gIHRoaXMudGFibGUgPSB0YWJsZTtcbiAgdGhpcy50YWJsZV9uYW1lID0gdGFibGUudGFibGVfbmFtZTtcbiAgdGhpcy5ncGtnVGFibGVOYW1lID0gdGFibGUudGFibGVfbmFtZTtcbiAgaWYgKHRhYmxlLmdldFBrQ29sdW1uKCkpIHtcbiAgICB0aGlzLmlkQ29sdW1ucyA9IFt0YWJsZS5nZXRQa0NvbHVtbigpLm5hbWVdO1xuICB9IGVsc2Uge1xuICAgIHRoaXMuaWRDb2x1bW5zID0gW107XG4gIH1cbiAgdGhpcy5jb2x1bW5zID0gdGFibGUuY29sdW1uTmFtZXM7XG59XG5cbnV0aWwuaW5oZXJpdHMoVXNlckRhbywgRGFvKTtcblxuVXNlckRhby5wcm90b3R5cGUuY3JlYXRlT2JqZWN0ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gVXNlclJvdygpO1xufTtcblxuVXNlckRhby5wcm90b3R5cGUuc2V0VmFsdWVJbk9iamVjdCA9IGZ1bmN0aW9uIChvYmplY3QsIGNvbHVtbkluZGV4LCB2YWx1ZSkge1xuICBvYmplY3Quc2V0VmFsdWVOb1ZhbGlkYXRpb25XaXRoSW5kZXgoY29sdW1uSW5kZXgsIHZhbHVlKTtcbn07XG5cbi8qKlxuICogR2V0IGEgdXNlciByb3cgZnJvbSB0aGUgY3VycmVudCByZXN1bHRzXG4gKiBAcGFyYW0gIHtyZXN1bHRzfSByZXN1bHRzIHJlc3VsdCBzZXRcbiAqIEByZXR1cm4ge1VzZXJSb3d9ICAgICAgICAgdGhlIHVzZXIgcm93XG4gKi9cblVzZXJEYW8ucHJvdG90eXBlLmdldFJvdyA9IGZ1bmN0aW9uIChyZXN1bHRzKSB7XG4gIHZhciByb3cgPSB1bmRlZmluZWQ7XG4gIGlmICghdGhpcy50YWJsZSkgcmV0dXJuIHJvdztcbiAgdmFyIGNvbHVtbnMgPSB0aGlzLnRhYmxlLmNvbHVtbkNvdW50KCk7XG4gIHZhciBjb2x1bW5UeXBlcyA9IHt9O1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGNvbHVtbnM7IGkrKykge1xuICAgIHZhciBjb2x1bW4gPSB0aGlzLnRhYmxlLmdldENvbHVtbldpdGhJbmRleChpKTtcbiAgICBjb2x1bW5UeXBlc1tjb2x1bW4ubmFtZV0gPSBjb2x1bW4uZGF0YVR5cGU7XG4gIH1cbiAgcmV0dXJuIHRoaXMubmV3Um93V2l0aENvbHVtblR5cGVzKGNvbHVtblR5cGVzLCByZXN1bHRzKTtcbn07XG5cbi8qKlxuICogQ3JlYXRlIGEgdXNlciByb3dcbiAqIEBwYXJhbSAge0FycmF5fSBjb2x1bW5UeXBlcyBjb2x1bW4gVHlwZXNcbiAqIEBwYXJhbSAge0FycmF5fSB2YWx1ZXMgICAgICB2YWx1ZXNcbiAqIEByZXR1cm4ge1VzZXJSb3d9ICAgICAgICAgICAgIHVzZXIgcm93XG4gKi9cblVzZXJEYW8ucHJvdG90eXBlLm5ld1Jvd1dpdGhDb2x1bW5UeXBlcyA9IGZ1bmN0aW9uIChjb2x1bW5UeXBlcywgdmFsdWVzKSB7XG4gIHJldHVybiBuZXcgVXNlclJvdyh0aGlzLnRhYmxlLCBjb2x1bW5UeXBlcywgdmFsdWVzKTtcbn07XG5cbi8qKlxuICogR2V0IHRoZSBwcm9qZWN0aW9uXG4gKiBAcmV0dXJuIHtQcm9qZWN0aW9ufSB0aGUgcHJvamVjdGlvblxuICovXG5Vc2VyRGFvLnByb3RvdHlwZS5nZXRQcm9qZWN0aW9uID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5wcm9qZWN0aW9uO1xufTtcblxuLyoqXG4gKiAgR2V0IHRoZSBhcHByb3hpbWF0ZSB6b29tIGxldmVsIG9mIHdoZXJlIHRoZSBib3VuZGluZyBib3ggb2YgdGhlIHVzZXIgZGF0YSBmaXRzIGludG8gdGhlIHdvcmxkXG4gKlxuICogIEByZXR1cm4gem9vbSBsZXZlbFxuICovXG5Vc2VyRGFvLnByb3RvdHlwZS5nZXRab29tTGV2ZWwgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiAwO1xuICAvLyBpZihzZWxmLnByb2plY3Rpb24gPT0gbmlsKXtcbiAgLy8gICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpAXCJObyBQcm9qZWN0aW9uXCIgZm9ybWF0OkBcIk5vIHByb2plY3Rpb24gd2FzIHNldCB3aGljaCBpcyByZXF1aXJlZCB0byBkZXRlcm1pbmUgdGhlIHpvb20gbGV2ZWxcIl07XG4gIC8vIH1cbiAgLy8gR1BLR0JvdW5kaW5nQm94ICogYm91bmRpbmdCb3ggPSBbc2VsZiBnZXRCb3VuZGluZ0JveF07XG4gIC8vIGlmKFtzZWxmLnByb2plY3Rpb24uZXBzZyBpbnRWYWx1ZV0gPT0gUFJPSl9FUFNHX1dPUkxEX0dFT0RFVElDX1NZU1RFTSl7XG4gIC8vICAgICBib3VuZGluZ0JveCA9IFtHUEtHVGlsZUJvdW5kaW5nQm94VXRpbHMgYm91bmRXZ3M4NEJvdW5kaW5nQm94V2l0aFdlYk1lcmNhdG9yTGltaXRzOmJvdW5kaW5nQm94XTtcbiAgLy8gfVxuICAvLyBHUEtHUHJvamVjdGlvblRyYW5zZm9ybSAqIHdlYk1lcmNhdG9yVHJhbnNmb3JtID0gW1tHUEtHUHJvamVjdGlvblRyYW5zZm9ybSBhbGxvY10gaW5pdFdpdGhGcm9tUHJvamVjdGlvbjpzZWxmLnByb2plY3Rpb24gYW5kVG9FcHNnOlBST0pfRVBTR19XRUJfTUVSQ0FUT1JdO1xuICAvLyBHUEtHQm91bmRpbmdCb3ggKiB3ZWJNZXJjYXRvckJvdW5kaW5nQm94ID0gW3dlYk1lcmNhdG9yVHJhbnNmb3JtIHRyYW5zZm9ybVdpdGhCb3VuZGluZ0JveDpib3VuZGluZ0JveF07XG4gIC8vIGludCB6b29tTGV2ZWwgPSBbR1BLR1RpbGVCb3VuZGluZ0JveFV0aWxzIGdldFpvb21MZXZlbFdpdGhXZWJNZXJjYXRvckJvdW5kaW5nQm94OndlYk1lcmNhdG9yQm91bmRpbmdCb3hdO1xuICAvLyByZXR1cm4gem9vbUxldmVsO1xufTtcblxuVXNlckRhby5wcm90b3R5cGUuZ2V0Q291bnQgPSBmdW5jdGlvbiAoY2FsbGJhY2spIHtcbiAgdGhpcy5jb25uZWN0aW9uLmNvdW50KHRoaXMudGFibGVfbmFtZSwgY2FsbGJhY2spO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBVc2VyRGFvO1xuIiwiLyoqXG4gKiBVc2VyUm93IG1vZHVsZS5cbiAqIEBtb2R1bGUgdXNlci91c2VyUm93XG4gKi9cblxudmFyIERhdGFUeXBlcyA9IHJlcXVpcmUoJy4uL2RiL2RhdGFUeXBlcycpO1xuXG4vKipcbiAqIFVzZXIgUm93IGNvbnRhaW5pbmcgdGhlIHZhbHVlcyBmcm9tIGEgc2luZ2xlIHJlc3VsdCByb3dcbiAqIEBjbGFzcyBVc2VyUm93XG4gKiBAcGFyYW0gIHtVc2VyVGFibGV9IHRhYmxlICAgICAgIHVzZXIgdGFibGVcbiAqIEBwYXJhbSAge0FycmF5fSBjb2x1bW5UeXBlcyBjb2x1bW4gdHlwZXNcbiAqIEBwYXJhbSAge0FycmF5fSB2YWx1ZXMgICAgICB2YWx1ZXNcbiAqL1xudmFyIFVzZXJSb3cgPSBmdW5jdGlvbih0YWJsZSwgY29sdW1uVHlwZXMsIHZhbHVlcykge1xuICAvKipcbiAgICogVXNlciB0YWJsZVxuICAgKiBAdHlwZSB7VXNlclRhYmxlfVxuICAgKi9cbiAgdGhpcy50YWJsZSA9IHRhYmxlO1xuICAvKipcbiAgICogQ29sdW1uIHR5cGVzIG9mIHRoaXMgcm93LCBiYXNlZCB1cG9uIHRoZSBkYXRhIHZhbHVlc1xuICAgKiBAdHlwZSB7T2JqZWN0fVxuICAgKi9cbiAgdGhpcy5jb2x1bW5UeXBlcyA9IGNvbHVtblR5cGVzO1xuICAvKipcbiAgICogQXJyYXkgb2Ygcm93IHZhbHVlc1xuICAgKiBAdHlwZSB7T2JqZWN0fVxuICAgKi9cbiAgdGhpcy52YWx1ZXMgPSB2YWx1ZXM7XG5cbiAgaWYgKCF0aGlzLmNvbHVtblR5cGVzKSB7XG4gICAgdmFyIGNvbHVtbkNvdW50ID0gdGhpcy50YWJsZS5jb2x1bW5Db3VudCgpO1xuICAgIHRoaXMuY29sdW1uVHlwZXMgPSB7fTtcbiAgICB0aGlzLnZhbHVlcyA9IHt9O1xuICAgIC8vIGZvciAodmFyIGkgPSAwOyBpIDwgY29sdW1uQ291bnQ7IGkrKykge1xuICAgIC8vICAgdGhpcy5jb2x1bW5UeXBlcy5wdXNoKG51bGwpO1xuICAgIC8vICAgdGhpcy52YWx1ZXMucHVzaChudWxsKTtcbiAgICAvLyB9XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBVc2VyUm93O1xuXG4vKipcbiAqIEdldCB0aGUgY29sdW1uIGNvdW50XG4gKiBAcmV0dXJuIHtudW1iZXJ9IGNvbHVtbiBjb3VudFxuICovXG5Vc2VyUm93LnByb3RvdHlwZS5jb2x1bW5Db3VudCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMudGFibGUuY29sdW1uQ291bnQoKTtcbn07XG5cbi8qKlxuICogR2V0IHRoZSBjb2x1bW4gbmFtZXNcbiAqIEByZXR1cm4ge0FycmF5fSBjb2x1bW4gbmFtZXNcbiAqL1xuVXNlclJvdy5wcm90b3R5cGUuZ2V0Q29sdW1uTmFtZXMgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLnRhYmxlLmNvbHVtbk5hbWVzO1xufTtcblxuLyoqXG4gKiBHZXQgdGhlIGNvbHVtbiBuYW1lIGF0IHRoZSBpbmRleFxuICogQHBhcmFtICB7TnVtYmVyfSBpbmRleCBpbmRleFxuICogQHJldHVybiB7c3RyaW5nfSAgICAgICBjb2x1bW4gbmFtZVxuICovXG5Vc2VyUm93LnByb3RvdHlwZS5nZXRDb2x1bW5OYW1lV2l0aEluZGV4ID0gZnVuY3Rpb24gKGluZGV4KSB7XG4gIHJldHVybiB0aGlzLnRhYmxlLmdldENvbHVtbk5hbWVXaXRoSW5kZXgoaW5kZXgpO1xufTtcblxuLyoqXG4gKiBHZXQgdGhlIGNvbHVtbiBpbmRleCBvZiB0aGUgY29sdW1uIG5hbWVcbiAqIEBwYXJhbSAge3N0cmluZ30gY29sdW1uTmFtZSBjb2x1bW4gbmFtZVxuICogQHJldHVybiB7TnVtYmVyfSAgICAgICAgICAgIGNvbHVtbiBpbmRleFxuICovXG5Vc2VyUm93LnByb3RvdHlwZS5nZXRDb2x1bW5JbmRleFdpdGhDb2x1bW5OYW1lID0gZnVuY3Rpb24gKGNvbHVtbk5hbWUpIHtcbiAgcmV0dXJuIHRoaXMudGFibGUuZ2V0Q29sdW1uSW5kZXgoY29sdW1uTmFtZSk7XG59O1xuXG4vKipcbiAqIEdldCB0aGUgdmFsdWUgYXQgdGhlIGluZGV4XG4gKiBAcGFyYW0gIHtOdW1iZXJ9IGluZGV4IGluZGV4XG4gKiBAcmV0dXJuIHtvYmplY3R9ICAgICAgIHZhbHVlXG4gKi9cblVzZXJSb3cucHJvdG90eXBlLmdldFZhbHVlV2l0aEluZGV4ID0gZnVuY3Rpb24gKGluZGV4KSB7XG4gIHZhciB2YWx1ZSA9IHRoaXMudmFsdWVzW3RoaXMuZ2V0Q29sdW1uTmFtZVdpdGhJbmRleChpbmRleCldO1xuICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgIHZhbHVlID0gdGhpcy50b09iamVjdFZhbHVlKGluZGV4LCB2YWx1ZSk7XG4gIH1cbiAgcmV0dXJuIHZhbHVlO1xufTtcblxuLyoqXG4gKiBHZXQgdGhlIHZhbHVlIG9mIHRoZSBjb2x1bW4gbmFtZVxuICogQHBhcmFtICB7c3RyaW5nfSBjb2x1bW5OYW1lIGNvbHVtbiBuYW1lXG4gKiBAcmV0dXJuIHtPYmplY3R9ICAgICAgICAgICAgdmFsdWVcbiAqL1xuVXNlclJvdy5wcm90b3R5cGUuZ2V0VmFsdWVXaXRoQ29sdW1uTmFtZSA9IGZ1bmN0aW9uIChjb2x1bW5OYW1lKSB7XG4gIHZhciBkYXRhVHlwZSA9IHRoaXMuZ2V0Um93Q29sdW1uVHlwZVdpdGhDb2x1bW5OYW1lKGNvbHVtbk5hbWUpO1xuICBpZiAoZGF0YVR5cGUgPT09IERhdGFUeXBlcy5HUEtHRGF0YVR5cGUuQk9PTEVBTikge1xuICAgIHJldHVybiB0aGlzLnZhbHVlc1tjb2x1bW5OYW1lXSA9PT0gMSA/IHRydWUgOiBmYWxzZTtcbiAgfSBlbHNlIGlmIChkYXRhVHlwZSA9PT0gRGF0YVR5cGVzLkdQS0dEYXRhVHlwZS5CTE9CKSB7XG4gICAgcmV0dXJuIG5ldyBCdWZmZXIodGhpcy52YWx1ZXNbY29sdW1uTmFtZV0pO1xuICB9XG4gIHJldHVybiB0aGlzLnZhbHVlc1tjb2x1bW5OYW1lXTtcbn07XG5cblVzZXJSb3cucHJvdG90eXBlLnRvT2JqZWN0VmFsdWUgPSBmdW5jdGlvbiAoaW5kZXgsIHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZTtcbn07XG5cbi8qKlxuICogR2V0IHRoZSByb3cgY29sdW1uIHR5cGUgYXQgdGhlIGluZGV4XG4gKiBAcGFyYW0gIHtOdW1iZXJ9IGluZGV4IGluZGV4XG4gKiBAcmV0dXJuIHtOdW1iZXJ9ICAgICAgIHJvdyBjb2x1bW4gdHlwZVxuICovXG5Vc2VyUm93LnByb3RvdHlwZS5nZXRSb3dDb2x1bW5UeXBlV2l0aEluZGV4ID0gZnVuY3Rpb24gKGluZGV4KSB7XG4gIHJldHVybiB0aGlzLmNvbHVtblR5cGVzW3RoaXMuZ2V0Q29sdW1uTmFtZVdpdGhJbmRleChpbmRleCldO1xufTtcblxuLyoqXG4gKiBHZXQgdGhlIHJvdyBjb2x1bW4gdHlwZSBvZiB0aGUgY29sdW1uIG5hbWVcbiAqIEBwYXJhbSAge3N0cmluZ30gY29sdW1uTmFtZSBjb2x1bW4gbmFtZVxuICogQHJldHVybiB7TnVtYmVyfSAgICAgICAgICAgIHJvdyBjb2x1bW4gdHlwZVxuICovXG5Vc2VyUm93LnByb3RvdHlwZS5nZXRSb3dDb2x1bW5UeXBlV2l0aENvbHVtbk5hbWUgPSBmdW5jdGlvbiAoY29sdW1uTmFtZSkge1xuICByZXR1cm4gdGhpcy5jb2x1bW5UeXBlc1tjb2x1bW5OYW1lXTtcbn07XG5cbi8qKlxuICogR2V0IHRoZSBjb2x1bW4gYXQgdGhlIGluZGV4XG4gKiBAcGFyYW0gIHtOdW1iZXJ9IGluZGV4IGluZGV4XG4gKiBAcmV0dXJuIHtVc2VyQ29sdW1ufSAgICAgICBjb2x1bW5cbiAqL1xuVXNlclJvdy5wcm90b3R5cGUuZ2V0Q29sdW1uV2l0aEluZGV4ID0gZnVuY3Rpb24gKGluZGV4KSB7XG4gIHJldHVybiB0aGlzLnRhYmxlLmdldENvbHVtbldpdGhJbmRleChpbmRleCk7XG59O1xuXG4vKipcbiAqIEdldCB0aGUgY29sdW1uIG9mIHRoZSBjb2x1bW4gbmFtZVxuICogQHBhcmFtICB7c3RyaW5nfSBjb2x1bW5OYW1lIGNvbHVtbiBuYW1lXG4gKiBAcmV0dXJuIHtVc2VyQ29sdW1ufSAgICAgICAgICAgIGNvbHVtblxuICovXG5Vc2VyUm93LnByb3RvdHlwZS5nZXRDb2x1bW5XaXRoQ29sdW1uTmFtZSA9IGZ1bmN0aW9uIChjb2x1bW5OYW1lKSB7XG4gIHJldHVybiB0aGlzLnRhYmxlLmdldENvbHVtbldpdGhDb2x1bW5OYW1lKGNvbHVtbk5hbWUpO1xufTtcblxuLyoqXG4gKiBHZXQgdGhlIGlkIHZhbHVlLCB3aGljaCBpcyB0aGUgdmFsdWUgb2YgdGhlIHByaW1hcnkga2V5XG4gKiBAcmV0dXJuIHtOdW1iZXJ9IGlkIHZhbHVlXG4gKi9cblVzZXJSb3cucHJvdG90eXBlLmdldElkID0gZnVuY3Rpb24gKCkge1xuICB2YXIgaWQgPSB1bmRlZmluZWQ7XG4gIHZhciBvYmplY3RWYWx1ZSA9IHRoaXMuZ2V0VmFsdWVXaXRoSW5kZXgodGhpcy5nZXRQa0NvbHVtbkluZGV4KCkpO1xuICAvLyBpZiAob2JqZWN0VmFsdWUgPT0gdW5kZWZpbmVkKSB7XG4gIC8vICAgdGhyb3cgbmV3IEVycm9yKCdSb3cgSWQgd2FzIG51bGwuIFRhYmxlOiAnICsgdGhpcy50YWJsZS50YWJsZU5hbWUgKyAnLCBDb2x1bW4gSW5kZXg6ICcgKyB0aGlzLmdldFBrQ29sdW1uSW5kZXgoKSArICcsIENvbHVtbiBOYW1lOiAnICsgdGhpcy5nZXRQa0NvbHVtbigpLm5hbWUpO1xuICAvLyB9XG4gIC8vIFRPRE8gZW5zdXJlIHRoZSBpZCB3YXMgYSBudW1iZXJcbiAgaWQgPSBvYmplY3RWYWx1ZTtcbiAgcmV0dXJuIGlkO1xufTtcblxuLyoqXG4gKiBHZXQgdGhlIHByaW1hcnkga2V5IGNvbHVtbiBJbmRleFxuICogQHJldHVybiB7TnVtYmVyfSBwayBpbmRleFxuICovXG5Vc2VyUm93LnByb3RvdHlwZS5nZXRQa0NvbHVtbkluZGV4ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy50YWJsZS5wa0luZGV4O1xufTtcblxuLyoqXG4gKiBHZXQgdGhlIHByaW1hcnkga2V5IGNvbHVtblxuICogQHJldHVybiB7VXNlckNvbHVtbn0gcGsgY29sdW1uXG4gKi9cblVzZXJSb3cucHJvdG90eXBlLmdldFBrQ29sdW1uID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy50YWJsZS5nZXRQa0NvbHVtbigpO1xufTtcblxuLyoqXG4gKiBTZXQgdGhlIHZhbHVlIGF0IHRoZSBpbmRleFxuICogQHBhcmFtIHtOdW1iZXJ9IGluZGV4IGluZGV4XG4gKiBAcGFyYW0ge29iamVjdH0gdmFsdWUgdmFsdWVcbiAqL1xuVXNlclJvdy5wcm90b3R5cGUuc2V0VmFsdWVXaXRoSW5kZXggPSBmdW5jdGlvbiAoaW5kZXgsIHZhbHVlKSB7XG4gIGlmIChpbmRleCA9PT0gdGhpcy50YWJsZS5wa0luZGV4KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgdXBkYXRlIHRoZSBwcmltYXJ5IGtleSBvZiB0aGUgcm93LiAgVGFibGUgTmFtZTogJyArIHRoaXMudGFibGUudGFibGVOYW1lICsgJywgSW5kZXg6ICcgKyBpbmRleCArICcsIE5hbWU6ICcgKyB0aGlzLnRhYmxlLmdldFBrQ29sdW1uKCkubmFtZSk7XG4gIH1cbiAgdGhpcy5zZXRWYWx1ZU5vVmFsaWRhdGlvbldpdGhJbmRleChpbmRleCwgdmFsdWUpO1xufTtcblxuLyoqXG4gKiBTZXQgdGhlIHZhbHVlIGF0IHRoZSBpbmRleCB3aXRob3V0IHZhbGlkYXRpb25cbiAqIEBwYXJhbSB7TnVtYmVyfSBpbmRleCBpbmRleFxuICogQHBhcmFtIHtPYmplY3R9IHZhbHVlIHZhbHVlXG4gKi9cblVzZXJSb3cucHJvdG90eXBlLnNldFZhbHVlTm9WYWxpZGF0aW9uV2l0aEluZGV4ID0gZnVuY3Rpb24gKGluZGV4LCB2YWx1ZSkge1xuICB0aGlzLnZhbHVlc1t0aGlzLmdldENvbHVtbk5hbWVXaXRoSW5kZXgoaW5kZXgpXSA9IHZhbHVlO1xufTtcblxuLyoqXG4gKiBTZXQgdGhlIHZhbHVlIG9mIHRoZSBjb2x1bW4gbmFtZVxuICogQHBhcmFtIHtzdHJpbmd9IGNvbHVtbk5hbWUgY29sdW1uIG5hbWVcbiAqIEBwYXJhbSB7T2JqZWN0fSB2YWx1ZSAgICAgIHZhbHVlXG4gKi9cblVzZXJSb3cucHJvdG90eXBlLnNldFZhbHVlV2l0aENvbHVtbk5hbWUgPSBmdW5jdGlvbiAoY29sdW1uTmFtZSwgdmFsdWUpIHtcbiAgdGhpcy52YWx1ZXNbY29sdW1uTmFtZV0gPSB2YWx1ZTtcbiAgLy8gdGhpcy5zZXRWYWx1ZVdpdGhJbmRleCh0aGlzLmdldENvbHVtbkluZGV4V2l0aENvbHVtbk5hbWUoY29sdW1uTmFtZSksIHZhbHVlKTtcbn07XG5cbi8qKlxuICogU2V0IHRoZSBwcmltYXJ5IGtleSBpZCB2YWx1ZVxuICogQHBhcmFtIHtOdW1iZXJ9IGlkIGlkXG4gKi9cblVzZXJSb3cucHJvdG90eXBlLnNldElkID0gZnVuY3Rpb24gKGlkKSB7XG4gIHRoaXMudmFsdWVzW3RoaXMuZ2V0UGtDb2x1bW5JbmRleCgpXSA9IGlkO1xufTtcblxuLyoqXG4gKiBDbGVhcnMgdGhlIGlkIHNvIHRoZSByb3cgY2FuIGJlIHVzZWQgYXMgcGFydCBvZiBhbiBpbnNlcnQgb3IgY3JlYXRlXG4gKi9cblVzZXJSb3cucHJvdG90eXBlLnJlc2V0SWQgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMudmFsdWVzW3RoaXMuZ2V0UGtDb2x1bW5JbmRleCgpXSA9IHVuZGVmaW5lZDtcbn07XG5cbi8qKlxuICogVmFsaWRhdGUgdGhlIHZhbHVlIGFuZCBpdHMgYWN0dWFsIHZhbHVlIHR5cGVzIGFnYWluc3QgZWggY29sdW1uIGRhdGEgdHlwZSBjbGFzc1xuICogQHBhcmFtICB7VXNlckNvbHVtbn0gY29sdW1uICAgICBjb2x1bW5cbiAqIEBwYXJhbSAge09iamVjdH0gdmFsdWUgICAgICB2YWx1ZVxuICogQHBhcmFtICB7QXJyYXl9IHZhbHVlVHlwZXMgdmFsdWUgdHlwZXNcbiAqL1xuVXNlclJvdy5wcm90b3R5cGUudmFsaWRhdGVWYWx1ZVdpdGhDb2x1bW4gPSBmdW5jdGlvbiAoY29sdW1uLCB2YWx1ZSwgdmFsdWVUeXBlcykge1xuICAvLyBUT0RPIGltcGxlbWVudCB2YWxpZGF0aW9uXG59O1xuIiwiLyoqXG4gKiB1c2VyVGFibGUgbW9kdWxlLlxuICogQG1vZHVsZSB1c2VyL3VzZXJUYWJsZVxuICovXG5cbi8qKlxuICogQWJzdHJhY3QgdXNlciB0YWJsZVxuICogQHBhcmFtICB7c3RyaW5nfSB0YWJsZU5hbWUgdGFibGUgbmFtZVxuICogQHBhcmFtICB7YXJyYXl9IGNvbHVtbnMgICBmZWF0dXJlIGNvbHVtbnNcbiAqL1xudmFyIFVzZXJUYWJsZSA9IGZ1bmN0aW9uKHRhYmxlTmFtZSwgY29sdW1ucykge1xuICB0aGlzLnRhYmxlX25hbWUgPSB0YWJsZU5hbWU7XG5cbiAgLy8gU29ydCB0aGUgY29sdW1ucyBieSBpbmRleFxuICBjb2x1bW5zLnNvcnQoZnVuY3Rpb24oYSwgYikge1xuICAgIHJldHVybiBhLmluZGV4IC0gYi5pbmRleDtcbiAgfSk7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb2x1bW5zLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGNvbHVtbiA9IGNvbHVtbnNbaV07XG4gICAgaWYgKCFjb2x1bW4pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gY29sdW1uIGZvdW5kIGF0IGluZGV4OiAnICsgaSArICcsIFRhYmxlIE5hbWU6ICcgKyB0aGlzLnRhYmxlX25hbWUpO1xuICAgIH0gZWxzZSBpZiAoY29sdW1uLmluZGV4ICE9IGkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ29sdW1uIGhhcyB3cm9uZyBpbmRleCBvZiAnICsgY29sdW1uLmluZGV4ICsgJywgZm91bmQgYXQgaW5kZXg6ICcgKyBpICsgJywgVGFibGUgTmFtZTogJyArIHRoaXMudGFibGVfbmFtZSk7XG4gICAgfVxuICB9XG5cbiAgdmFyIHBrID0gdW5kZWZpbmVkO1xuICB2YXIgdGVtcENvbHVtbk5hbWVzID0gbmV3IEFycmF5KCk7XG4gIHZhciB0ZW1wTmFtZVRvSW5kZXggPSB7fTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGNvbHVtbnMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgY29sdW1uID0gY29sdW1uc1tpXTtcbiAgICB2YXIgaW5kZXggPSBjb2x1bW4uaW5kZXg7XG4gICAgaWYgKGNvbHVtbi5wcmltYXJ5S2V5KSB7XG4gICAgICBpZiAocGspIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdNb3JlIHRoYW4gb25lIHByaW1hcnkga2V5IGNvbHVtbiB3YXMgZm91bmQgZm9yIHRhYmxlIFxcJycgKyB0aGlzLnRhYmxlX25hbWUgKyAnXFwnLiBJbmRleCAnICsgcGsgKyAnIGFuZCAnICsgaW5kZXgpO1xuICAgICAgfVxuICAgICAgcGsgPSBpbmRleDtcbiAgICB9XG4gICAgdGVtcENvbHVtbk5hbWVzLnB1c2goY29sdW1uLm5hbWUpO1xuICAgIHRlbXBOYW1lVG9JbmRleFtjb2x1bW4ubmFtZV0gPSBpbmRleDtcbiAgfVxuXG4gIHRoaXMuY29sdW1ucyA9IGNvbHVtbnM7XG4gIHRoaXMuY29sdW1uTmFtZXMgPSB0ZW1wQ29sdW1uTmFtZXM7XG4gIHRoaXMubmFtZVRvSW5kZXggPSB0ZW1wTmFtZVRvSW5kZXg7XG4gIHRoaXMudW5pcXVlQ29uc3RyYWludHMgPSBbXTtcblxuICAvLyBpZiAocGsgPT09IHVuZGVmaW5lZCkge1xuICAvLyAgIHRocm93IG5ldyBFcnJvcignTm8gcHJpbWFyeSBrZXkgY29sdW1uIHdhcyBmb3VuZCBmb3IgdGFibGUgXFwnJyArIHRoaXMudGFibGVfbmFtZSArICdcXCcnKTtcbiAgLy8gfVxuICB0aGlzLnBrSW5kZXggPSBwaztcbn1cblxuLyoqXG4gKiBDaGVjayBmb3IgZHVwbGljYXRlIGNvbHVtbiBuYW1lc1xuICogQHBhcmFtICB7TnVtYmVyfSBpbmRleCAgICAgICAgIGluZGV4XG4gKiBAcGFyYW0gIHtOdW1iZXJ9IHByZXZpb3VzSW5kZXggcHJldmlvdXMgaW5kZXhcbiAqIEBwYXJhbSAge3N0cmluZ30gY29sdW1uICAgICAgICBjb2x1bW5cbiAqL1xuVXNlclRhYmxlLnByb3RvdHlwZS5kdXBsaWNhdGVDaGVjayA9IGZ1bmN0aW9uIChpbmRleCwgcHJldmlvdXNJbmRleCwgY29sdW1uKSB7XG4gIGlmKHByZXZpb3VzSW5kZXgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01vcmUgdGhhbiBvbmUgJyArIGNvbHVtbiArICcgY29sdW1uIHdhcyBmb3VuZCBmb3IgdGFibGUgXFwnJyArIHRoaXMudGFibGVfbmFtZSArICdcXCcuIEluZGV4ICcgKyBwcmV2aW91c0luZGV4ICsgJyBhbmQgJyArIGluZGV4KTtcbiAgfVxufTtcblxuLyoqXG4gKiBDaGVjayBmb3IgdGhlIGV4cGVjdGVkIGRhdGEgdHlwZVxuICogQHBhcmFtICB7R1BLR0RhdGFUeXBlfSBleHBlY3RlZCBleHBlY3RlZCBkYXRhIHR5cGVcbiAqIEBwYXJhbSAge1VzZXJDb2x1bW59IGNvbHVtbiAgIGNvbHVtblxuICovXG5Vc2VyVGFibGUucHJvdG90eXBlLnR5cGVDaGVjayA9IGZ1bmN0aW9uIChleHBlY3RlZCwgY29sdW1uKSB7XG4gIHZhciBhY3R1YWwgPSBjb2x1bW4uZGF0YVR5cGU7XG4gIGlmICghYWN0dWFsIHx8IGFjdHVhbCAhPT0gZXhwZWN0ZWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1VuZXhwZWN0ZWQgJyArIGNvbHVtbi5uYW1lICsgJyBjb2x1bW4gZGF0YSB0eXBlIHdhcyBmb3VuZCBmb3IgdGFibGUgXFwnJyArIHRoaXMudGFibGVfbmFtZSArICdcXCcsIGV4cGVjdGVkOiAnICsgRGF0YVR5cGVzLm5hbWUoZXhwZWN0ZWQpICsgJywgYWN0dWFsOiAnICsgY29sdW1uLmRhdGFUeXBlKTtcbiAgfVxufTtcblxuLyoqXG4gKiBDaGVjayBmb3IgbWlzc2luZyBjb2x1bW5zXG4gKiBAcGFyYW0gIHtOdW1iZXJ9IGluZGV4ICBpbmRleFxuICogQHBhcmFtICB7c3RyaW5nfSBjb2x1bW4gY29sdW1uXG4gKi9cblVzZXJUYWJsZS5wcm90b3R5cGUubWlzc2luZ0NoZWNrID0gZnVuY3Rpb24gKGluZGV4LCBjb2x1bW4pIHtcbiAgaWYgKGluZGV4ID09PSB1bmRlZmluZWQgfHwgaW5kZXggPT09IG51bGwpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ05vICcgKyBjb2x1bW4gKyAnIGNvbHVtbiB3YXMgZm91bmQgZm9yIHRhYmxlIFxcJycgKyB0aGlzLnRhYmxlX25hbWUgKydcXCcnKTtcbiAgfVxufTtcblxuLyoqXG4gKiBHZXQgdGhlIGNvbHVtbiBpbmRleCBvZiB0aGUgY29sdW1uIG5hbWVcbiAqIEBwYXJhbSAge3N0cmluZ30gY29sdW1uTmFtZSBjb2x1bW4gbmFtZVxuICogQHJldHVybiB7TnVtYmVyfSB0aGUgY29sdW1uIGluZGV4XG4gKi9cblVzZXJUYWJsZS5wcm90b3R5cGUuZ2V0Q29sdW1uSW5kZXggPSBmdW5jdGlvbiAoY29sdW1uTmFtZSkge1xuICB2YXIgaW5kZXggPSB0aGlzLm5hbWVUb0luZGV4W2NvbHVtbk5hbWVdO1xuICBpZiAoaW5kZXggPT09IHVuZGVmaW5lZCB8fCBpbmRleCA9PT0gbnVsbCkge1xuICAgIHRocm93IG5ldyBFcnJvcignQ29sdW1uIGRvZXMgbm90IGV4aXN0IGluIHRhYmxlIFxcJycgKyB0aGlzLnRhYmxlX25hbWUgKyAnXFwnLCBjb2x1bW46ICcgKyBjb2x1bW5OYW1lKTtcbiAgfVxuICByZXR1cm4gaW5kZXg7XG59O1xuXG4vKipcbiAqIEdldCB0aGUgY29sdW1uIG5hbWUgZnJvbSB0aGUgaW5kZXhcbiAqIEBwYXJhbSAge051bWJlcn0gaW5kZXggaW5kZXhcbiAqIEByZXR1cm4ge3N0cmluZ30gdGhlIGNvbHVtbiBuYW1lXG4gKi9cblVzZXJUYWJsZS5wcm90b3R5cGUuZ2V0Q29sdW1uTmFtZVdpdGhJbmRleCA9IGZ1bmN0aW9uIChpbmRleCkge1xuICByZXR1cm4gdGhpcy5jb2x1bW5OYW1lc1tpbmRleF07XG59O1xuXG4vKipcbiAqIEdldCB0aGUgY29sdW1uIGZyb20gdGhlIGluZGV4XG4gKiBAcGFyYW0gIHtOdW1iZXJ9IGluZGV4IGluZGV4XG4gKiBAcmV0dXJuIHtPYmplY3R9IGNvbHVtbiBhdCB0aGUgaW5kZXhcbiAqL1xuVXNlclRhYmxlLnByb3RvdHlwZS5nZXRDb2x1bW5XaXRoSW5kZXggPSBmdW5jdGlvbiAoaW5kZXgpIHtcbiAgcmV0dXJuIHRoaXMuY29sdW1uc1tpbmRleF07XG59O1xuXG4vKipcbiAqIEdldCBjb2x1bW4gd2l0aCB0aGUgY29sdW1uIG5hbWVcbiAqIEBwYXJhbSAge3N0cmluZ30gY29sdW1uTmFtZSBjb2x1bW4gbmFtZVxuICogQHJldHVybiB7T2JqZWN0fSAgICAgICAgICAgIGNvbHVtbiBhdCB0aGUgaW5kZXhcbiAqL1xuVXNlclRhYmxlLnByb3RvdHlwZS5nZXRDb2x1bW5XaXRoQ29sdW1uTmFtZSA9IGZ1bmN0aW9uIChjb2x1bW5OYW1lKSB7XG4gIHJldHVybiB0aGlzLmdldENvbHVtbldpdGhJbmRleCh0aGlzLmdldENvbHVtbkluZGV4KGNvbHVtbk5hbWUpKTtcbn07XG5cbi8qKlxuICogR2V0IHRoZSBjb2x1bW4gY291bnRcbiAqIEByZXR1cm4ge051bWJlcn0gdGhlIGNvdW50IG9mIHRoZSBjb2x1bW5zXG4gKi9cblVzZXJUYWJsZS5wcm90b3R5cGUuY29sdW1uQ291bnQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLmNvbHVtbnMubGVuZ3RoO1xufTtcblxuLyoqXG4gKiBHZXQgdGhlIHByaW1hcnkga2V5IGNvbHVtblxuICogQHJldHVybiB7T2JqZWN0fSB0aGUgcHJpbWFyeSBrZXkgY29sdW1uXG4gKi9cblVzZXJUYWJsZS5wcm90b3R5cGUuZ2V0UGtDb2x1bW4gPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLmNvbHVtbnNbdGhpcy5wa0luZGV4XTtcbn07XG5cblVzZXJUYWJsZS5wcm90b3R5cGUuYWRkVW5pcXVlQ29uc3RyYWludCA9IGZ1bmN0aW9uICh1bmlxdWVDb25zdHJhaW50KSB7XG4gIHRoaXMudW5pcXVlQ29uc3RyYWludHMucHVzaCh1bmlxdWVDb25zdHJhaW50KTtcbn07XG5cblVzZXJUYWJsZS5GRUFUVVJFX1RBQkxFID0gJ0ZFQVRVUkUnO1xuVXNlclRhYmxlLlRJTEVfVEFCTEUgPSAnVElMRSc7XG5cbm1vZHVsZS5leHBvcnRzID0gVXNlclRhYmxlO1xuIiwiLyoqXG4gKiB1c2VyVGFibGVSZWFkZXIgbW9kdWxlLlxuICogQG1vZHVsZSB1c2VyL3VzZXJUYWJsZVJlYWRlclxuICovXG5cbnZhciBVc2VyQ29sdW1uID0gcmVxdWlyZSgnLi91c2VyQ29sdW1uJylcbiAgLCBVc2VyVGFibGUgPSByZXF1aXJlKCcuL3VzZXJUYWJsZScpXG4gICwgRGF0YVR5cGVzID0gcmVxdWlyZSgnLi4vZGIvZGF0YVR5cGVzJyk7XG5cbi8qKiBAY2xhc3MgVXNlclRhYmxlUmVhZGVyICovXG52YXIgVXNlclRhYmxlUmVhZGVyID0gZnVuY3Rpb24odGFibGVOYW1lKSB7XG4gIHRoaXMudGFibGVfbmFtZSA9IHRhYmxlTmFtZTtcbn1cblxudmFyIEdQS0dfVVRSX0NJRCA9IFwiY2lkXCI7XG52YXIgR1BLR19VVFJfTkFNRSA9IFwibmFtZVwiO1xudmFyIEdQS0dfVVRSX1RZUEUgPSBcInR5cGVcIjtcbnZhciBHUEtHX1VUUl9OT1RfTlVMTCA9IFwibm90bnVsbFwiO1xudmFyIEdQS0dfVVRSX1BLID0gXCJwa1wiO1xudmFyIEdQS0dfVVRSX0RGTFRfVkFMVUUgPSBcImRmbHRfdmFsdWVcIjtcblxuLyoqXG4gKiBSZWFkIHRoZSB0YWJsZVxuICogQHBhcmFtICB7c3FsaXRlM30gZGIgc3FsaXRlMyBkYiBjb25uZWN0aW9uXG4gKiBAcGFyYW0gIHtGdW5jdGlvbn0gY2FsbGJhY2sgY2FsbGVkIHdpdGggYW4gZXJyb3IgaWYgb25lIG9jY3VycmVkIGFuZCB0aGUgdGFibGVcbiAqL1xuVXNlclRhYmxlUmVhZGVyLnByb3RvdHlwZS5yZWFkVGFibGUgPSBmdW5jdGlvbiAoZGIsIGNhbGxiYWNrKSB7XG4gIHZhciBjb2x1bW5MaXN0ID0gW107XG4gIGRiLmFsbCgnUFJBR01BIHRhYmxlX2luZm8oXFwnJyt0aGlzLnRhYmxlX25hbWUrJ1xcJyknLCBmdW5jdGlvbihlcnIsIHJlc3VsdHMpIHtcbiAgICBmb3IgKHZhciBpID0wOyBpIDwgcmVzdWx0cy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHJlc3VsdCA9IHJlc3VsdHNbaV07XG4gICAgICB2YXIgaW5kZXggPSByZXN1bHRbR1BLR19VVFJfQ0lEXTtcbiAgICAgIHZhciBuYW1lID0gcmVzdWx0W0dQS0dfVVRSX05BTUVdO1xuICAgICAgdmFyIHR5cGUgPSByZXN1bHRbR1BLR19VVFJfVFlQRV07XG4gICAgICB2YXIgbm90TnVsbCA9IHJlc3VsdFtHUEtHX1VUUl9OT1RfTlVMTF0gPT09IDE7XG4gICAgICB2YXIgcHJpbWFyeWtleSA9IHJlc3VsdFtHUEtHX1VUUl9QS10gPT09IDE7XG4gICAgICB2YXIgbWF4ID0gdW5kZWZpbmVkO1xuICAgICAgaWYgKHR5cGUgJiYgdHlwZS5sYXN0SW5kZXhPZignKScpID09PSB0eXBlLmxlbmd0aC0xKSB7XG4gICAgICAgIHZhciBtYXhTdGFydCA9IHR5cGUuaW5kZXhPZignKCcpO1xuICAgICAgICBpZiAobWF4U3RhcnQgPiAtMSkge1xuICAgICAgICAgIHZhciBtYXhTdHJpbmcgPSB0eXBlLnN1YnN0cmluZyhtYXhTdGFydCArIDEsIHR5cGUubGVuZ3RoIC0gMSk7XG4gICAgICAgICAgaWYgKG1heFN0cmluZyAhPT0gJycpIHtcbiAgICAgICAgICAgIG1heCA9IHBhcnNlSW50KG1heFN0cmluZyk7XG4gICAgICAgICAgICB0eXBlID0gdHlwZS5zdWJzdHJpbmcoMCwgbWF4U3RhcnQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdmFyIGRlZmF1bHRWYWx1ZSA9IHVuZGVmaW5lZDtcbiAgICAgIGlmIChyZXN1bHRbR1BLR19VVFJfREZMVF9WQUxVRV0pIHtcbiAgICAgICAgZGVmYXVsdFZhbHVlID0gcmVzdWx0W0dQS0dfVVRSX0RGTFRfVkFMVUVdLnJlcGxhY2UoL1xcXFwnL2csICcnKTtcbiAgICAgIH1cbiAgICAgIHZhciBjb2x1bW4gPSB0aGlzLmNyZWF0ZUNvbHVtbldpdGhSZXN1bHRzKHJlc3VsdCwgaW5kZXgsIG5hbWUsIHR5cGUsIG1heCwgbm90TnVsbCwgZGVmYXVsdFZhbHVlLCBwcmltYXJ5a2V5KTtcblxuICAgICAgY29sdW1uTGlzdC5wdXNoKGNvbHVtbik7XG4gICAgfVxuXG4gICAgaWYgKGNvbHVtbkxpc3QubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gY2FsbGJhY2sobmV3IEVycm9yKCdUYWJsZSBkb2VzIG5vdCBleGlzdDogJyArIHRoaXMudGFibGVfbmFtZSkpO1xuICAgIH1cbiAgICB2YXIgdGFibGUgPSB0aGlzLmNyZWF0ZVRhYmxlV2l0aE5hbWVBbmRDb2x1bW5zKHRoaXMudGFibGVfbmFtZSwgY29sdW1uTGlzdCk7XG4gICAgY2FsbGJhY2sobnVsbCwgdGFibGUpO1xuICB9LmJpbmQodGhpcykpO1xufTtcblxuVXNlclRhYmxlUmVhZGVyLnByb3RvdHlwZS5jcmVhdGVDb2x1bW5XaXRoUmVzdWx0cyA9IGZ1bmN0aW9uKHJlc3VsdCwgaW5kZXgsIG5hbWUsIHR5cGUsIG1heCwgbm90TnVsbCwgZGVmYXVsdFZhbHVlLCBwcmltYXJ5S2V5KSB7XG5cbiAgdmFyIGRhdGFUeXBlID0gRGF0YVR5cGVzLmZyb21OYW1lKHR5cGUpO1xuICByZXR1cm4gbmV3IFVzZXJDb2x1bW4oaW5kZXgsIG5hbWUsIGRhdGFUeXBlLCBtYXgsIG5vdE51bGwsIGRlZmF1bHRWYWx1ZSwgcHJpbWFyeUtleSk7XG59XG5cblVzZXJUYWJsZVJlYWRlci5wcm90b3R5cGUuY3JlYXRlVGFibGVXaXRoTmFtZUFuZENvbHVtbnMgPSBmdW5jdGlvbiAodGFibGVOYW1lLCBjb2x1bW5zKSB7XG4gIHJldHVybiBuZXcgVXNlclRhYmxlKHRhYmxlTmFtZSwgY29sdW1ucyk7XG59O1xuXG4vKipcbiAqIFRoZSBVc2VyVGFibGVSZWFkZXJcbiAqIEB0eXBlIHtVc2VyVGFibGVSZWFkZXJ9XG4gKi9cbm1vZHVsZS5leHBvcnRzID0gVXNlclRhYmxlUmVhZGVyO1xuIiwiLyoqXG4gKiBHZW9QYWNrYWdlVmFsaWRhdGUgbW9kdWxlLlxuICogQG1vZHVsZSB2YWxpZGF0ZS9nZW9QYWNrYWdlVmFsaWRhdGVcbiAqXG4gKi9cblxudmFyIHBhdGggPSByZXF1aXJlKCdwYXRoJylcbiAgLCBhc3luYyA9IHJlcXVpcmUoJ2FzeW5jJylcbiAgLCBTcGF0aWFsUmVmZXJlbmNlU3lzdGVtID0gcmVxdWlyZSgnLi4vY29yZS9zcnMnKS5TcGF0aWFsUmVmZXJlbmNlU3lzdGVtXG4gICwgQ29udGVudHMgPSByZXF1aXJlKCcuLi9jb3JlL2NvbnRlbnRzJykuQ29udGVudHNcbiAgLCBHZW9QYWNrYWdlQ29uc3RhbnRzID0gcmVxdWlyZSgnLi4vZ2VvUGFja2FnZUNvbnN0YW50cycpO1xuXG4vKipcbiAqIENoZWNrIHRoZSBmaWxlIGV4dGVuc2lvbiB0byBzZWUgaWYgaXQgaXMgYSBHZW9QYWNrYWdlXG4gKiBAcGFyYW0gIHtzdHJpbmd9ICAgZmlsZVBhdGggQWJzb2x1dGUgcGF0aCB0byB0aGUgR2VvUGFja2FnZSB0byBjcmVhdGVcbiAqIEByZXR1cm4ge2Jvb2xlYW59IHRydWUgaWYgR2VvUGFja2FnZSBleHRlbnNpb25cbiAqL1xuZXhwb3J0cy5oYXNHZW9QYWNrYWdlRXh0ZW5zaW9uID0gZnVuY3Rpb24oZmlsZVBhdGgpIHtcbiAgdmFyIGV4dGVuc2lvbiA9IHBhdGguZXh0bmFtZShmaWxlUGF0aCk7XG4gIHJldHVybiBleHRlbnNpb24gJiYgZXh0ZW5zaW9uICE9PSAnJ1xuICAgICYmIChleHRlbnNpb24udG9Mb3dlckNhc2UoKSA9PT0gJy4nK0dlb1BhY2thZ2VDb25zdGFudHMuR0VPUEFDS0FHRV9FWFRFTlNJT04udG9Mb3dlckNhc2UoKVxuICAgICAgfHwgZXh0ZW5zaW9uLnRvTG93ZXJDYXNlKCkgPT09ICcuJytHZW9QYWNrYWdlQ29uc3RhbnRzLkdFT1BBQ0tBR0VfRVhURU5ERURfRVhURU5TSU9OLnRvTG93ZXJDYXNlKCkpO1xufVxuXG4vKipcbiAqIFZhbGlkYXRlIHRoZSBleHRlbnNpb24gZmlsZSBhcyBhIEdlb1BhY2thZ2VcbiAqIEBwYXJhbSAge3N0cmluZ30gICBmaWxlUGF0aCBBYnNvbHV0ZSBwYXRoIHRvIHRoZSBHZW9QYWNrYWdlIHRvIGNyZWF0ZVxuICogQHJldHVybiB7RXJyb3J9ICAgIGVycm9yIGlmIHRoZSBleHRlbnNpb24gaXMgbm90IHZhbGlkXG4gKi9cbmV4cG9ydHMudmFsaWRhdGVHZW9QYWNrYWdlRXh0ZW5zaW9uID0gZnVuY3Rpb24oZmlsZVBhdGgpIHtcbiAgaWYgKCFleHBvcnRzLmhhc0dlb1BhY2thZ2VFeHRlbnNpb24oZmlsZVBhdGgpKSB7XG4gICAgcmV0dXJuIG5ldyBFcnJvcihcIkdlb1BhY2thZ2UgZGF0YWJhc2UgZmlsZSAnXCIgKyBmaWxlUGF0aFxuICBcdFx0XHRcdFx0KyBcIicgZG9lcyBub3QgaGF2ZSBhIHZhbGlkIGV4dGVuc2lvbiBvZiAnXCJcbiAgXHRcdFx0XHRcdCsgR2VvUGFja2FnZUNvbnN0YW50cy5HRU9QQUNLQUdFX0VYVEVOU0lPTiArIFwiJyBvciAnXCJcbiAgXHRcdFx0XHRcdCsgR2VvUGFja2FnZUNvbnN0YW50cy5HRU9QQUNLQUdFX0VYVEVOREVEX0VYVEVOU0lPTiArIFwiJ1wiKTtcbiAgfVxufVxuXG4vKipcbiAqIENoZWNrIHRoZSBHZW9QYWNrYWdlIGZvciB0aGUgbWluaW11bSByZXF1aXJlZCB0YWJsZXNcbiAqIEBwYXJhbSAge09iamVjdH0gICBnZW9QYWNrYWdlIEdlb1BhY2thZ2UgdG8gY2hlY2tcbiAqIEBwYXJhbSB7bW9kdWxlOnZhbGlkYXRlL2dlb1BhY2thZ2VWYWxpZGF0ZX52YWxpZGF0aW9uQ2FsbGJhY2t9IGNhbGxiYWNrIC0gVGhlIHZhbGlkYXRpb24gY2FsbGJhY2tcbiAqL1xuZXhwb3J0cy5oYXNNaW5pbXVtVGFibGVzID0gZnVuY3Rpb24oZ2VvUGFja2FnZSwgY2FsbGJhY2spIHtcbiAgYXN5bmMuc2VyaWVzKFtcbiAgICBmdW5jdGlvbihjYWxsYmFjaykge1xuICAgICAgZ2VvUGFja2FnZS5nZXRTcGF0aWFsUmVmZXJlbmNlU3lzdGVtRGFvKCkuaXNUYWJsZUV4aXN0cyhjYWxsYmFjayk7XG4gICAgfSxcbiAgICBmdW5jdGlvbihjYWxsYmFjaykge1xuICAgICAgdmFyIGNvbnRlbnRzRGFvID0gZ2VvUGFja2FnZS5nZXRDb250ZW50c0RhbygpO1xuICAgICAgY29udGVudHNEYW8uaXNUYWJsZUV4aXN0cyhjYWxsYmFjayk7XG4gICAgfVxuICBdLCBmdW5jdGlvbihlcnIpIHtcbiAgICBpZiAoZXJyKSB7XG4gICAgICBjYWxsYmFjayhuZXcgRXJyb3IoXG4gICAgICAgIFwiSW52YWxpZCBHZW9QYWNrYWdlLiBEb2VzIG5vdCBjb250YWluIHJlcXVpcmVkIHRhYmxlczogXCJcbiAgICAgICAgICArIFNwYXRpYWxSZWZlcmVuY2VTeXN0ZW0uVEFCTEVfTkFNRSArIFwiICYgXCJcbiAgICAgICAgICArIENvbnRlbnRzLlRBQkxFX05BTUUgKyBcIiwgR2VvUGFja2FnZSBOYW1lOiBcIlxuICAgICAgICAgICsgZ2VvUGFja2FnZS5nZXROYW1lKCkpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2FsbGJhY2soKTtcbiAgICB9XG4gIH0pO1xufVxuXG4vKipcbiAqIFZhbGlkYXRpb24gY2FsbGJhY2sgaXMgcGFzc2VkIGFuIGVycm9yIGlmIHRoZSB2YWxpZGF0aW9uIGZhaWxlZC5cbiAqIEBjYWxsYmFjayBtb2R1bGU6dmFsaWRhdGUvZ2VvUGFja2FnZVZhbGlkYXRlfnZhbGlkYXRpb25DYWxsYmFja1xuICogQHBhcmFtIHtFcnJvcn0gbnVsbCBpZiBubyBlcnJvciwgb3RoZXJ3aXNlIGRlc2NyaWJlcyB0aGUgZXJyb3JcbiAqL1xuIiwiLyoqXG4gKiBXS0IgbW9kdWxlLlxuICogQG1vZHVsZSB3a2JcbiAqL1xuXG52YXIgd2t4ID0gcmVxdWlyZSgnd2t4Jyk7XG5cbnZhciB3a3RUb0VudW0gPSB7fTtcbndrdFRvRW51bVt3a3guVHlwZXMud2t0LlBvaW50XSA9IHdreC5UeXBlcy53a2IuUG9pbnQ7XG53a3RUb0VudW1bd2t4LlR5cGVzLndrdC5MaW5lU3RyaW5nXSA9IHdreC5UeXBlcy53a2IuTGluZVN0cmluZztcbndrdFRvRW51bVt3a3guVHlwZXMud2t0LlBvbHlnb25dID0gd2t4LlR5cGVzLndrYi5Qb2x5Z29uO1xud2t0VG9FbnVtW3dreC5UeXBlcy53a3QuTXVsdGlQb2ludF0gPSB3a3guVHlwZXMud2tiLk11bHRpUG9pbnQ7XG53a3RUb0VudW1bd2t4LlR5cGVzLndrdC5NdWx0aUxpbmVTdHJpbmddID0gd2t4LlR5cGVzLndrYi5NdWx0aUxpbmVTdHJpbmc7XG53a3RUb0VudW1bd2t4LlR5cGVzLndrdC5NdWx0aVBvbHlnb25dID0gd2t4LlR5cGVzLndrYi5NdWx0aVBvbHlnb247XG53a3RUb0VudW1bd2t4LlR5cGVzLndrdC5HZW9tZXRyeUNvbGxlY3Rpb25dID0gd2t4LlR5cGVzLndrYi5HZW9tZXRyeUNvbGxlY3Rpb247XG5cbi8qKlxuICogbnVtYmVyIGZyb20gbmFtZVxuICogQHBhcmFtICB7c3RyaW5nfSBuYW1lIG5hbWVcbiAqIEByZXR1cm4ge051bWJlcn0gICAgICBudW1iZXIgY29ycmVzcG9uZGluZyB0byB0aGUgd2tiIG5hbWVcbiAqL1xubW9kdWxlLmV4cG9ydHMuZnJvbU5hbWUgPSBmdW5jdGlvbihuYW1lKSB7XG4gIG5hbWUgPSBuYW1lLnRvVXBwZXJDYXNlKCk7XG4gIGlmIChuYW1lID09PSAnR0VPTUVUUlknKSB7XG4gICAgcmV0dXJuIHdreC5UeXBlcy53a2IuR2VvbWV0cnlDb2xsZWN0aW9uO1xuICB9XG4gIHJldHVybiB3a3RUb0VudW1bbmFtZV07XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBkMnIgPSBNYXRoLlBJIC8gMTgwLFxuICAgIHIyZCA9IDE4MCAvIE1hdGguUEk7XG5cbi8qKlxuICogR2V0IHRoZSBiYm94IG9mIGEgdGlsZVxuICpcbiAqIEBuYW1lIHRpbGVUb0JCT1hcbiAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gdGlsZVxuICogQHJldHVybnMge0FycmF5PG51bWJlcj59IGJib3hcbiAqIEBleGFtcGxlXG4gKiB2YXIgYmJveCA9IHRpbGVUb0JCT1goWzUsIDEwLCAxMF0pXG4gKiAvLz1iYm94XG4gKi9cbmZ1bmN0aW9uIHRpbGVUb0JCT1godGlsZSkge1xuICAgIHZhciBlID0gdGlsZTJsb24odGlsZVswXSArIDEsIHRpbGVbMl0pO1xuICAgIHZhciB3ID0gdGlsZTJsb24odGlsZVswXSwgdGlsZVsyXSk7XG4gICAgdmFyIHMgPSB0aWxlMmxhdCh0aWxlWzFdICsgMSwgdGlsZVsyXSk7XG4gICAgdmFyIG4gPSB0aWxlMmxhdCh0aWxlWzFdLCB0aWxlWzJdKTtcbiAgICByZXR1cm4gW3csIHMsIGUsIG5dO1xufVxuXG4vKipcbiAqIEdldCBhIGdlb2pzb24gcmVwcmVzZW50YXRpb24gb2YgYSB0aWxlXG4gKlxuICogQG5hbWUgdGlsZVRvR2VvSlNPTlxuICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSB0aWxlXG4gKiBAcmV0dXJucyB7RmVhdHVyZTxQb2x5Z29uPn1cbiAqIEBleGFtcGxlXG4gKiB2YXIgcG9seSA9IHRpbGVUb0dlb0pTT04oWzUsIDEwLCAxMF0pXG4gKiAvLz1wb2x5XG4gKi9cbmZ1bmN0aW9uIHRpbGVUb0dlb0pTT04odGlsZSkge1xuICAgIHZhciBiYm94ID0gdGlsZVRvQkJPWCh0aWxlKTtcbiAgICB2YXIgcG9seSA9IHtcbiAgICAgICAgdHlwZTogJ1BvbHlnb24nLFxuICAgICAgICBjb29yZGluYXRlczogW1tcbiAgICAgICAgICAgIFtiYm94WzBdLCBiYm94WzFdXSxcbiAgICAgICAgICAgIFtiYm94WzBdLCBiYm94WzNdXSxcbiAgICAgICAgICAgIFtiYm94WzJdLCBiYm94WzNdXSxcbiAgICAgICAgICAgIFtiYm94WzJdLCBiYm94WzFdXSxcbiAgICAgICAgICAgIFtiYm94WzBdLCBiYm94WzFdXVxuICAgICAgICBdXVxuICAgIH07XG4gICAgcmV0dXJuIHBvbHk7XG59XG5cbmZ1bmN0aW9uIHRpbGUybG9uKHgsIHopIHtcbiAgICByZXR1cm4geCAvIE1hdGgucG93KDIsIHopICogMzYwIC0gMTgwO1xufVxuXG5mdW5jdGlvbiB0aWxlMmxhdCh5LCB6KSB7XG4gICAgdmFyIG4gPSBNYXRoLlBJIC0gMiAqIE1hdGguUEkgKiB5IC8gTWF0aC5wb3coMiwgeik7XG4gICAgcmV0dXJuIHIyZCAqIE1hdGguYXRhbigwLjUgKiAoTWF0aC5leHAobikgLSBNYXRoLmV4cCgtbikpKTtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIHRpbGUgZm9yIGEgcG9pbnQgYXQgYSBzcGVjaWZpZWQgem9vbSBsZXZlbFxuICpcbiAqIEBuYW1lIHBvaW50VG9UaWxlXG4gKiBAcGFyYW0ge251bWJlcn0gbG9uXG4gKiBAcGFyYW0ge251bWJlcn0gbGF0XG4gKiBAcGFyYW0ge251bWJlcn0gelxuICogQHJldHVybnMge0FycmF5PG51bWJlcj59IHRpbGVcbiAqIEBleGFtcGxlXG4gKiB2YXIgdGlsZSA9IHBvaW50VG9UaWxlKDEsIDEsIDIwKVxuICogLy89dGlsZVxuICovXG5mdW5jdGlvbiBwb2ludFRvVGlsZShsb24sIGxhdCwgeikge1xuICAgIHZhciB0aWxlID0gcG9pbnRUb1RpbGVGcmFjdGlvbihsb24sIGxhdCwgeik7XG4gICAgdGlsZVswXSA9IE1hdGguZmxvb3IodGlsZVswXSk7XG4gICAgdGlsZVsxXSA9IE1hdGguZmxvb3IodGlsZVsxXSk7XG4gICAgcmV0dXJuIHRpbGU7XG59XG5cbi8qKlxuICogR2V0IHRoZSA0IHRpbGVzIG9uZSB6b29tIGxldmVsIGhpZ2hlclxuICpcbiAqIEBuYW1lIGdldENoaWxkcmVuXG4gKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IHRpbGVcbiAqIEByZXR1cm5zIHtBcnJheTxBcnJheTxudW1iZXI+Pn0gdGlsZXNcbiAqIEBleGFtcGxlXG4gKiB2YXIgdGlsZXMgPSBnZXRDaGlsZHJlbihbNSwgMTAsIDEwXSlcbiAqIC8vPXRpbGVzXG4gKi9cbmZ1bmN0aW9uIGdldENoaWxkcmVuKHRpbGUpIHtcbiAgICByZXR1cm4gW1xuICAgICAgICBbdGlsZVswXSAqIDIsIHRpbGVbMV0gKiAyLCB0aWxlWzJdICsgMV0sXG4gICAgICAgIFt0aWxlWzBdICogMiArIDEsIHRpbGVbMV0gKiAyLCB0aWxlWzIgXSArIDFdLFxuICAgICAgICBbdGlsZVswXSAqIDIgKyAxLCB0aWxlWzFdICogMiArIDEsIHRpbGVbMl0gKyAxXSxcbiAgICAgICAgW3RpbGVbMF0gKiAyLCB0aWxlWzFdICogMiArIDEsIHRpbGVbMl0gKyAxXVxuICAgIF07XG59XG5cbi8qKlxuICogR2V0IHRoZSB0aWxlIG9uZSB6b29tIGxldmVsIGxvd2VyXG4gKlxuICogQG5hbWUgZ2V0UGFyZW50XG4gKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IHRpbGVcbiAqIEByZXR1cm5zIHtBcnJheTxudW1iZXI+fSB0aWxlXG4gKiBAZXhhbXBsZVxuICogdmFyIHRpbGUgPSBnZXRQYXJlbnQoWzUsIDEwLCAxMF0pXG4gKiAvLz10aWxlXG4gKi9cbmZ1bmN0aW9uIGdldFBhcmVudCh0aWxlKSB7XG4gICAgLy8gdG9wIGxlZnRcbiAgICBpZiAodGlsZVswXSAlIDIgPT09IDAgJiYgdGlsZVsxXSAlIDIgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIFt0aWxlWzBdIC8gMiwgdGlsZVsxXSAvIDIsIHRpbGVbMl0gLSAxXTtcbiAgICB9XG4gICAgLy8gYm90dG9tIGxlZnRcbiAgICBpZiAoKHRpbGVbMF0gJSAyID09PSAwKSAmJiAoIXRpbGVbMV0gJSAyID09PSAwKSkge1xuICAgICAgICByZXR1cm4gW3RpbGVbMF0gLyAyLCAodGlsZVsxXSAtIDEpIC8gMiwgdGlsZVsyXSAtIDFdO1xuICAgIH1cbiAgICAvLyB0b3AgcmlnaHRcbiAgICBpZiAoKCF0aWxlWzBdICUgMiA9PT0gMCkgJiYgKHRpbGVbMV0gJSAyID09PSAwKSkge1xuICAgICAgICByZXR1cm4gWyh0aWxlWzBdIC0gMSkgLyAyLCAodGlsZVsxXSkgLyAyLCB0aWxlWzJdIC0gMV07XG4gICAgfVxuICAgIC8vIGJvdHRvbSByaWdodFxuICAgIHJldHVybiBbKHRpbGVbMF0gLSAxKSAvIDIsICh0aWxlWzFdIC0gMSkgLyAyLCB0aWxlWzJdIC0gMV07XG59XG5cbmZ1bmN0aW9uIGdldFNpYmxpbmdzKHRpbGUpIHtcbiAgICByZXR1cm4gZ2V0Q2hpbGRyZW4oZ2V0UGFyZW50KHRpbGUpKTtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIDMgc2libGluZyB0aWxlcyBmb3IgYSB0aWxlXG4gKlxuICogQG5hbWUgZ2V0U2libGluZ3NcbiAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gdGlsZVxuICogQHJldHVybnMge0FycmF5PEFycmF5PG51bWJlcj4+fSB0aWxlc1xuICogQGV4YW1wbGVcbiAqIHZhciB0aWxlcyA9IGdldFNpYmxpbmdzKFs1LCAxMCwgMTBdKVxuICogLy89dGlsZXNcbiAqL1xuZnVuY3Rpb24gaGFzU2libGluZ3ModGlsZSwgdGlsZXMpIHtcbiAgICB2YXIgc2libGluZ3MgPSBnZXRTaWJsaW5ncyh0aWxlKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNpYmxpbmdzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmICghaGFzVGlsZSh0aWxlcywgc2libGluZ3NbaV0pKSByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xufVxuXG4vKipcbiAqIENoZWNrIHRvIHNlZSBpZiBhbiBhcnJheSBvZiB0aWxlcyBjb250YWlucyBhIHBhcnRpY3VsYXIgdGlsZVxuICpcbiAqIEBuYW1lIGhhc1RpbGVcbiAqIEBwYXJhbSB7QXJyYXk8QXJyYXk8bnVtYmVyPj59IHRpbGVzXG4gKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IHRpbGVcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICogQGV4YW1wbGVcbiAqIHZhciB0aWxlcyA9IFtcbiAqICAgICBbMCwgMCwgNV0sXG4gKiAgICAgWzAsIDEsIDVdLFxuICogICAgIFsxLCAxLCA1XSxcbiAqICAgICBbMSwgMCwgNV1cbiAqIF1cbiAqIGhhc1RpbGUodGlsZXMsIFswLCAwLCA1XSlcbiAqIC8vPWJvb2xlYW5cbiAqL1xuZnVuY3Rpb24gaGFzVGlsZSh0aWxlcywgdGlsZSkge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGlsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKHRpbGVzRXF1YWwodGlsZXNbaV0sIHRpbGUpKSByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xufVxuXG4vKipcbiAqIENoZWNrIHRvIHNlZSBpZiB0d28gdGlsZXMgYXJlIHRoZSBzYW1lXG4gKlxuICogQG5hbWUgdGlsZXNFcXVhbFxuICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSB0aWxlMVxuICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSB0aWxlMlxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKiBAZXhhbXBsZVxuICogdGlsZXNFcXVhbChbMCwgMSwgNV0sIFswLCAwLCA1XSlcbiAqIC8vPWJvb2xlYW5cbiAqL1xuZnVuY3Rpb24gdGlsZXNFcXVhbCh0aWxlMSwgdGlsZTIpIHtcbiAgICByZXR1cm4gKFxuICAgICAgICB0aWxlMVswXSA9PT0gdGlsZTJbMF0gJiZcbiAgICAgICAgdGlsZTFbMV0gPT09IHRpbGUyWzFdICYmXG4gICAgICAgIHRpbGUxWzJdID09PSB0aWxlMlsyXVxuICAgICk7XG59XG5cbi8qKlxuICogR2V0IHRoZSBxdWFka2V5IGZvciBhIHRpbGVcbiAqXG4gKiBAbmFtZSB0aWxlVG9RdWFka2V5XG4gKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IHRpbGVcbiAqIEByZXR1cm5zIHtzdHJpbmd9IHF1YWRrZXlcbiAqIEBleGFtcGxlXG4gKiB2YXIgcXVhZGtleSA9IHRpbGVUb1F1YWRrZXkoWzAsIDEsIDVdKVxuICogLy89cXVhZGtleVxuICovXG5mdW5jdGlvbiB0aWxlVG9RdWFka2V5KHRpbGUpIHtcbiAgICB2YXIgaW5kZXggPSAnJztcbiAgICBmb3IgKHZhciB6ID0gdGlsZVsyXTsgeiA+IDA7IHotLSkge1xuICAgICAgICB2YXIgYiA9IDA7XG4gICAgICAgIHZhciBtYXNrID0gMSA8PCAoeiAtIDEpO1xuICAgICAgICBpZiAoKHRpbGVbMF0gJiBtYXNrKSAhPT0gMCkgYisrO1xuICAgICAgICBpZiAoKHRpbGVbMV0gJiBtYXNrKSAhPT0gMCkgYiArPSAyO1xuICAgICAgICBpbmRleCArPSBiLnRvU3RyaW5nKCk7XG4gICAgfVxuICAgIHJldHVybiBpbmRleDtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIHRpbGUgZm9yIGEgcXVhZGtleVxuICpcbiAqIEBuYW1lIHF1YWRrZXlUb1RpbGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBxdWFka2V5XG4gKiBAcmV0dXJucyB7QXJyYXk8bnVtYmVyPn0gdGlsZVxuICogQGV4YW1wbGVcbiAqIHZhciB0aWxlID0gcXVhZGtleVRvVGlsZSgnMDAwMDEwMzMnKVxuICogLy89dGlsZVxuICovXG5mdW5jdGlvbiBxdWFka2V5VG9UaWxlKHF1YWRrZXkpIHtcbiAgICB2YXIgeCA9IDA7XG4gICAgdmFyIHkgPSAwO1xuICAgIHZhciB6ID0gcXVhZGtleS5sZW5ndGg7XG5cbiAgICBmb3IgKHZhciBpID0gejsgaSA+IDA7IGktLSkge1xuICAgICAgICB2YXIgbWFzayA9IDEgPDwgKGkgLSAxKTtcbiAgICAgICAgdmFyIHEgPSArcXVhZGtleVt6IC0gaV07XG4gICAgICAgIGlmIChxID09PSAxKSB4IHw9IG1hc2s7XG4gICAgICAgIGlmIChxID09PSAyKSB5IHw9IG1hc2s7XG4gICAgICAgIGlmIChxID09PSAzKSB7XG4gICAgICAgICAgICB4IHw9IG1hc2s7XG4gICAgICAgICAgICB5IHw9IG1hc2s7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIFt4LCB5LCB6XTtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIHNtYWxsZXN0IHRpbGUgdG8gY292ZXIgYSBiYm94XG4gKlxuICogQG5hbWUgYmJveFRvVGlsZVxuICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBiYm94XG4gKiBAcmV0dXJucyB7QXJyYXk8bnVtYmVyPn0gdGlsZVxuICogQGV4YW1wbGVcbiAqIHZhciB0aWxlID0gYmJveFRvVGlsZShbIC0xNzgsIDg0LCAtMTc3LCA4NSBdKVxuICogLy89dGlsZVxuICovXG5mdW5jdGlvbiBiYm94VG9UaWxlKGJib3hDb29yZHMpIHtcbiAgICB2YXIgbWluID0gcG9pbnRUb1RpbGUoYmJveENvb3Jkc1swXSwgYmJveENvb3Jkc1sxXSwgMzIpO1xuICAgIHZhciBtYXggPSBwb2ludFRvVGlsZShiYm94Q29vcmRzWzJdLCBiYm94Q29vcmRzWzNdLCAzMik7XG4gICAgdmFyIGJib3ggPSBbbWluWzBdLCBtaW5bMV0sIG1heFswXSwgbWF4WzFdXTtcblxuICAgIHZhciB6ID0gZ2V0QmJveFpvb20oYmJveCk7XG4gICAgaWYgKHogPT09IDApIHJldHVybiBbMCwgMCwgMF07XG4gICAgdmFyIHggPSBiYm94WzBdID4+PiAoMzIgLSB6KTtcbiAgICB2YXIgeSA9IGJib3hbMV0gPj4+ICgzMiAtIHopO1xuICAgIHJldHVybiBbeCwgeSwgel07XG59XG5cbmZ1bmN0aW9uIGdldEJib3hab29tKGJib3gpIHtcbiAgICB2YXIgTUFYX1pPT00gPSAyODtcbiAgICBmb3IgKHZhciB6ID0gMDsgeiA8IE1BWF9aT09NOyB6KyspIHtcbiAgICAgICAgdmFyIG1hc2sgPSAxIDw8ICgzMiAtICh6ICsgMSkpO1xuICAgICAgICBpZiAoKChiYm94WzBdICYgbWFzaykgIT09IChiYm94WzJdICYgbWFzaykpIHx8XG4gICAgICAgICAgICAoKGJib3hbMV0gJiBtYXNrKSAhPT0gKGJib3hbM10gJiBtYXNrKSkpIHtcbiAgICAgICAgICAgIHJldHVybiB6O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIE1BWF9aT09NO1xufVxuXG4vKipcbiAqIEdldCB0aGUgcHJlY2lzZSBmcmFjdGlvbmFsIHRpbGUgbG9jYXRpb24gZm9yIGEgcG9pbnQgYXQgYSB6b29tIGxldmVsXG4gKlxuICogQG5hbWUgcG9pbnRUb1RpbGVGcmFjdGlvblxuICogQHBhcmFtIHtudW1iZXJ9IGxvblxuICogQHBhcmFtIHtudW1iZXJ9IGxhdFxuICogQHBhcmFtIHtudW1iZXJ9IHpcbiAqIEByZXR1cm5zIHtBcnJheTxudW1iZXI+fSB0aWxlIGZyYWN0aW9uXG4gKiB2YXIgdGlsZSA9IHBvaW50VG9UaWxlRnJhY3Rpb24oMzAuNSwgNTAuNSwgMTUpXG4gKiAvLz10aWxlXG4gKi9cbmZ1bmN0aW9uIHBvaW50VG9UaWxlRnJhY3Rpb24obG9uLCBsYXQsIHopIHtcbiAgICB2YXIgc2luID0gTWF0aC5zaW4obGF0ICogZDJyKSxcbiAgICAgICAgejIgPSBNYXRoLnBvdygyLCB6KSxcbiAgICAgICAgeCA9IHoyICogKGxvbiAvIDM2MCArIDAuNSksXG4gICAgICAgIHkgPSB6MiAqICgwLjUgLSAwLjI1ICogTWF0aC5sb2coKDEgKyBzaW4pIC8gKDEgLSBzaW4pKSAvIE1hdGguUEkpO1xuICAgIHJldHVybiBbeCwgeSwgel07XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICAgIHRpbGVUb0dlb0pTT046IHRpbGVUb0dlb0pTT04sXG4gICAgdGlsZVRvQkJPWDogdGlsZVRvQkJPWCxcbiAgICBnZXRDaGlsZHJlbjogZ2V0Q2hpbGRyZW4sXG4gICAgZ2V0UGFyZW50OiBnZXRQYXJlbnQsXG4gICAgZ2V0U2libGluZ3M6IGdldFNpYmxpbmdzLFxuICAgIGhhc1RpbGU6IGhhc1RpbGUsXG4gICAgaGFzU2libGluZ3M6IGhhc1NpYmxpbmdzLFxuICAgIHRpbGVzRXF1YWw6IHRpbGVzRXF1YWwsXG4gICAgdGlsZVRvUXVhZGtleTogdGlsZVRvUXVhZGtleSxcbiAgICBxdWFka2V5VG9UaWxlOiBxdWFka2V5VG9UaWxlLFxuICAgIHBvaW50VG9UaWxlOiBwb2ludFRvVGlsZSxcbiAgICBiYm94VG9UaWxlOiBiYm94VG9UaWxlLFxuICAgIHBvaW50VG9UaWxlRnJhY3Rpb246IHBvaW50VG9UaWxlRnJhY3Rpb25cbn07XG4iLCJ2YXIgZWFjaCA9IHJlcXVpcmUoJ0B0dXJmL21ldGEnKS5jb29yZEVhY2g7XG5cbi8qKlxuICogVGFrZXMgYSBzZXQgb2YgZmVhdHVyZXMsIGNhbGN1bGF0ZXMgdGhlIGJib3ggb2YgYWxsIGlucHV0IGZlYXR1cmVzLCBhbmQgcmV0dXJucyBhIGJvdW5kaW5nIGJveC5cbiAqXG4gKiBAbmFtZSBiYm94XG4gKiBAcGFyYW0geyhGZWF0dXJlfEZlYXR1cmVDb2xsZWN0aW9uKX0gZ2VvanNvbiBpbnB1dCBmZWF0dXJlc1xuICogQHJldHVybnMge0FycmF5PG51bWJlcj59IGJib3ggZXh0ZW50IGluIFttaW5YLCBtaW5ZLCBtYXhYLCBtYXhZXSBvcmRlclxuICogQGFkZFRvTWFwIGZlYXR1cmVzLCBiYm94UG9seWdvblxuICogQGV4YW1wbGVcbiAqIHZhciBwdDEgPSB0dXJmLnBvaW50KFsxMTQuMTc1MzI5LCAyMi4yNTI0XSlcbiAqIHZhciBwdDIgPSB0dXJmLnBvaW50KFsxMTQuMTcwMDA3LCAyMi4yNjc5NjldKVxuICogdmFyIHB0MyA9IHR1cmYucG9pbnQoWzExNC4yMDA2NDksIDIyLjI3NDY0MV0pXG4gKiB2YXIgcHQ0ID0gdHVyZi5wb2ludChbMTE0LjIwMDY0OSwgMjIuMjc0NjQxXSlcbiAqIHZhciBwdDUgPSB0dXJmLnBvaW50KFsxMTQuMTg2NzQ0LCAyMi4yNjU3NDVdKVxuICogdmFyIGZlYXR1cmVzID0gdHVyZi5mZWF0dXJlQ29sbGVjdGlvbihbcHQxLCBwdDIsIHB0MywgcHQ0LCBwdDVdKVxuICpcbiAqIHZhciBiYm94ID0gdHVyZi5iYm94KGZlYXR1cmVzKTtcbiAqXG4gKiB2YXIgYmJveFBvbHlnb24gPSB0dXJmLmJib3hQb2x5Z29uKGJib3gpO1xuICpcbiAqIC8vPWJib3hcbiAqXG4gKiAvLz1iYm94UG9seWdvblxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChnZW9qc29uKSB7XG4gICAgdmFyIGJib3ggPSBbSW5maW5pdHksIEluZmluaXR5LCAtSW5maW5pdHksIC1JbmZpbml0eV07XG4gICAgZWFjaChnZW9qc29uLCBmdW5jdGlvbiAoY29vcmQpIHtcbiAgICAgICAgaWYgKGJib3hbMF0gPiBjb29yZFswXSkgYmJveFswXSA9IGNvb3JkWzBdO1xuICAgICAgICBpZiAoYmJveFsxXSA+IGNvb3JkWzFdKSBiYm94WzFdID0gY29vcmRbMV07XG4gICAgICAgIGlmIChiYm94WzJdIDwgY29vcmRbMF0pIGJib3hbMl0gPSBjb29yZFswXTtcbiAgICAgICAgaWYgKGJib3hbM10gPCBjb29yZFsxXSkgYmJveFszXSA9IGNvb3JkWzFdO1xuICAgIH0pO1xuICAgIHJldHVybiBiYm94O1xufTtcbiIsIi8qKlxuICogQ2FsbGJhY2sgZm9yIGNvb3JkRWFjaFxuICpcbiAqIEBwcml2YXRlXG4gKiBAY2FsbGJhY2sgY29vcmRFYWNoQ2FsbGJhY2tcbiAqIEBwYXJhbSB7W251bWJlciwgbnVtYmVyXX0gY3VycmVudENvb3JkcyBUaGUgY3VycmVudCBjb29yZGluYXRlcyBiZWluZyBwcm9jZXNzZWQuXG4gKiBAcGFyYW0ge251bWJlcn0gY3VycmVudEluZGV4IFRoZSBpbmRleCBvZiB0aGUgY3VycmVudCBlbGVtZW50IGJlaW5nIHByb2Nlc3NlZCBpbiB0aGVcbiAqIGFycmF5LlN0YXJ0cyBhdCBpbmRleCAwLCBpZiBhbiBpbml0aWFsVmFsdWUgaXMgcHJvdmlkZWQsIGFuZCBhdCBpbmRleCAxIG90aGVyd2lzZS5cbiAqL1xuXG4vKipcbiAqIEl0ZXJhdGUgb3ZlciBjb29yZGluYXRlcyBpbiBhbnkgR2VvSlNPTiBvYmplY3QsIHNpbWlsYXIgdG8gQXJyYXkuZm9yRWFjaCgpXG4gKlxuICogQG5hbWUgY29vcmRFYWNoXG4gKiBAcGFyYW0ge09iamVjdH0gbGF5ZXIgYW55IEdlb0pTT04gb2JqZWN0XG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjYWxsYmFjayBhIG1ldGhvZCB0aGF0IHRha2VzIChjdXJyZW50Q29vcmRzLCBjdXJyZW50SW5kZXgpXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtleGNsdWRlV3JhcENvb3JkPWZhbHNlXSB3aGV0aGVyIG9yIG5vdCB0byBpbmNsdWRlXG4gKiB0aGUgZmluYWwgY29vcmRpbmF0ZSBvZiBMaW5lYXJSaW5ncyB0aGF0IHdyYXBzIHRoZSByaW5nIGluIGl0cyBpdGVyYXRpb24uXG4gKiBAZXhhbXBsZVxuICogdmFyIGZlYXR1cmVzID0ge1xuICogICBcInR5cGVcIjogXCJGZWF0dXJlQ29sbGVjdGlvblwiLFxuICogICBcImZlYXR1cmVzXCI6IFtcbiAqICAgICB7XG4gKiAgICAgICBcInR5cGVcIjogXCJGZWF0dXJlXCIsXG4gKiAgICAgICBcInByb3BlcnRpZXNcIjoge30sXG4gKiAgICAgICBcImdlb21ldHJ5XCI6IHtcbiAqICAgICAgICAgXCJ0eXBlXCI6IFwiUG9pbnRcIixcbiAqICAgICAgICAgXCJjb29yZGluYXRlc1wiOiBbMjYsIDM3XVxuICogICAgICAgfVxuICogICAgIH0sXG4gKiAgICAge1xuICogICAgICAgXCJ0eXBlXCI6IFwiRmVhdHVyZVwiLFxuICogICAgICAgXCJwcm9wZXJ0aWVzXCI6IHt9LFxuICogICAgICAgXCJnZW9tZXRyeVwiOiB7XG4gKiAgICAgICAgIFwidHlwZVwiOiBcIlBvaW50XCIsXG4gKiAgICAgICAgIFwiY29vcmRpbmF0ZXNcIjogWzM2LCA1M11cbiAqICAgICAgIH1cbiAqICAgICB9XG4gKiAgIF1cbiAqIH07XG4gKiB0dXJmLmNvb3JkRWFjaChmZWF0dXJlcywgZnVuY3Rpb24gKGN1cnJlbnRDb29yZHMsIGN1cnJlbnRJbmRleCkge1xuICogICAvLz1jdXJyZW50Q29vcmRzXG4gKiAgIC8vPWN1cnJlbnRJbmRleFxuICogfSk7XG4gKi9cbmZ1bmN0aW9uIGNvb3JkRWFjaChsYXllciwgY2FsbGJhY2ssIGV4Y2x1ZGVXcmFwQ29vcmQpIHtcbiAgICB2YXIgaSwgaiwgaywgZywgbCwgZ2VvbWV0cnksIHN0b3BHLCBjb29yZHMsXG4gICAgICAgIGdlb21ldHJ5TWF5YmVDb2xsZWN0aW9uLFxuICAgICAgICB3cmFwU2hyaW5rID0gMCxcbiAgICAgICAgY3VycmVudEluZGV4ID0gMCxcbiAgICAgICAgaXNHZW9tZXRyeUNvbGxlY3Rpb24sXG4gICAgICAgIGlzRmVhdHVyZUNvbGxlY3Rpb24gPSBsYXllci50eXBlID09PSAnRmVhdHVyZUNvbGxlY3Rpb24nLFxuICAgICAgICBpc0ZlYXR1cmUgPSBsYXllci50eXBlID09PSAnRmVhdHVyZScsXG4gICAgICAgIHN0b3AgPSBpc0ZlYXR1cmVDb2xsZWN0aW9uID8gbGF5ZXIuZmVhdHVyZXMubGVuZ3RoIDogMTtcblxuICAvLyBUaGlzIGxvZ2ljIG1heSBsb29rIGEgbGl0dGxlIHdlaXJkLiBUaGUgcmVhc29uIHdoeSBpdCBpcyB0aGF0IHdheVxuICAvLyBpcyBiZWNhdXNlIGl0J3MgdHJ5aW5nIHRvIGJlIGZhc3QuIEdlb0pTT04gc3VwcG9ydHMgbXVsdGlwbGUga2luZHNcbiAgLy8gb2Ygb2JqZWN0cyBhdCBpdHMgcm9vdDogRmVhdHVyZUNvbGxlY3Rpb24sIEZlYXR1cmVzLCBHZW9tZXRyaWVzLlxuICAvLyBUaGlzIGZ1bmN0aW9uIGhhcyB0aGUgcmVzcG9uc2liaWxpdHkgb2YgaGFuZGxpbmcgYWxsIG9mIHRoZW0sIGFuZCB0aGF0XG4gIC8vIG1lYW5zIHRoYXQgc29tZSBvZiB0aGUgYGZvcmAgbG9vcHMgeW91IHNlZSBiZWxvdyBhY3R1YWxseSBqdXN0IGRvbid0IGFwcGx5XG4gIC8vIHRvIGNlcnRhaW4gaW5wdXRzLiBGb3IgaW5zdGFuY2UsIGlmIHlvdSBnaXZlIHRoaXMganVzdCBhXG4gIC8vIFBvaW50IGdlb21ldHJ5LCB0aGVuIGJvdGggbG9vcHMgYXJlIHNob3J0LWNpcmN1aXRlZCBhbmQgYWxsIHdlIGRvXG4gIC8vIGlzIGdyYWR1YWxseSByZW5hbWUgdGhlIGlucHV0IHVudGlsIGl0J3MgY2FsbGVkICdnZW9tZXRyeScuXG4gIC8vXG4gIC8vIFRoaXMgYWxzbyBhaW1zIHRvIGFsbG9jYXRlIGFzIGZldyByZXNvdXJjZXMgYXMgcG9zc2libGU6IGp1c3QgYVxuICAvLyBmZXcgbnVtYmVycyBhbmQgYm9vbGVhbnMsIHJhdGhlciB0aGFuIGFueSB0ZW1wb3JhcnkgYXJyYXlzIGFzIHdvdWxkXG4gIC8vIGJlIHJlcXVpcmVkIHdpdGggdGhlIG5vcm1hbGl6YXRpb24gYXBwcm9hY2guXG4gICAgZm9yIChpID0gMDsgaSA8IHN0b3A7IGkrKykge1xuXG4gICAgICAgIGdlb21ldHJ5TWF5YmVDb2xsZWN0aW9uID0gKGlzRmVhdHVyZUNvbGxlY3Rpb24gPyBsYXllci5mZWF0dXJlc1tpXS5nZW9tZXRyeSA6XG4gICAgICAgIChpc0ZlYXR1cmUgPyBsYXllci5nZW9tZXRyeSA6IGxheWVyKSk7XG4gICAgICAgIGlzR2VvbWV0cnlDb2xsZWN0aW9uID0gZ2VvbWV0cnlNYXliZUNvbGxlY3Rpb24udHlwZSA9PT0gJ0dlb21ldHJ5Q29sbGVjdGlvbic7XG4gICAgICAgIHN0b3BHID0gaXNHZW9tZXRyeUNvbGxlY3Rpb24gPyBnZW9tZXRyeU1heWJlQ29sbGVjdGlvbi5nZW9tZXRyaWVzLmxlbmd0aCA6IDE7XG5cbiAgICAgICAgZm9yIChnID0gMDsgZyA8IHN0b3BHOyBnKyspIHtcbiAgICAgICAgICAgIGdlb21ldHJ5ID0gaXNHZW9tZXRyeUNvbGxlY3Rpb24gP1xuICAgICAgICAgICAgZ2VvbWV0cnlNYXliZUNvbGxlY3Rpb24uZ2VvbWV0cmllc1tnXSA6IGdlb21ldHJ5TWF5YmVDb2xsZWN0aW9uO1xuICAgICAgICAgICAgY29vcmRzID0gZ2VvbWV0cnkuY29vcmRpbmF0ZXM7XG5cbiAgICAgICAgICAgIHdyYXBTaHJpbmsgPSAoZXhjbHVkZVdyYXBDb29yZCAmJlxuICAgICAgICAgICAgICAgIChnZW9tZXRyeS50eXBlID09PSAnUG9seWdvbicgfHwgZ2VvbWV0cnkudHlwZSA9PT0gJ011bHRpUG9seWdvbicpKSA/XG4gICAgICAgICAgICAgICAgMSA6IDA7XG5cbiAgICAgICAgICAgIGlmIChnZW9tZXRyeS50eXBlID09PSAnUG9pbnQnKSB7XG4gICAgICAgICAgICAgICAgY2FsbGJhY2soY29vcmRzLCBjdXJyZW50SW5kZXgpO1xuICAgICAgICAgICAgICAgIGN1cnJlbnRJbmRleCsrO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChnZW9tZXRyeS50eXBlID09PSAnTGluZVN0cmluZycgfHwgZ2VvbWV0cnkudHlwZSA9PT0gJ011bHRpUG9pbnQnKSB7XG4gICAgICAgICAgICAgICAgZm9yIChqID0gMDsgaiA8IGNvb3Jkcy5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhjb29yZHNbal0sIGN1cnJlbnRJbmRleCk7XG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRJbmRleCsrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZ2VvbWV0cnkudHlwZSA9PT0gJ1BvbHlnb24nIHx8IGdlb21ldHJ5LnR5cGUgPT09ICdNdWx0aUxpbmVTdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgZm9yIChqID0gMDsgaiA8IGNvb3Jkcy5sZW5ndGg7IGorKylcbiAgICAgICAgICAgICAgICAgICAgZm9yIChrID0gMDsgayA8IGNvb3Jkc1tqXS5sZW5ndGggLSB3cmFwU2hyaW5rOyBrKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKGNvb3Jkc1tqXVtrXSwgY3VycmVudEluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRJbmRleCsrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGdlb21ldHJ5LnR5cGUgPT09ICdNdWx0aVBvbHlnb24nKSB7XG4gICAgICAgICAgICAgICAgZm9yIChqID0gMDsgaiA8IGNvb3Jkcy5sZW5ndGg7IGorKylcbiAgICAgICAgICAgICAgICAgICAgZm9yIChrID0gMDsgayA8IGNvb3Jkc1tqXS5sZW5ndGg7IGsrKylcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobCA9IDA7IGwgPCBjb29yZHNbal1ba10ubGVuZ3RoIC0gd3JhcFNocmluazsgbCsrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soY29vcmRzW2pdW2tdW2xdLCBjdXJyZW50SW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRJbmRleCsrO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChnZW9tZXRyeS50eXBlID09PSAnR2VvbWV0cnlDb2xsZWN0aW9uJykge1xuICAgICAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCBnZW9tZXRyeS5nZW9tZXRyaWVzLmxlbmd0aDsgaisrKVxuICAgICAgICAgICAgICAgICAgICBjb29yZEVhY2goZ2VvbWV0cnkuZ2VvbWV0cmllc1tqXSwgY2FsbGJhY2ssIGV4Y2x1ZGVXcmFwQ29vcmQpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gR2VvbWV0cnkgVHlwZScpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxubW9kdWxlLmV4cG9ydHMuY29vcmRFYWNoID0gY29vcmRFYWNoO1xuXG4vKipcbiAqIENhbGxiYWNrIGZvciBjb29yZFJlZHVjZVxuICpcbiAqIFRoZSBmaXJzdCB0aW1lIHRoZSBjYWxsYmFjayBmdW5jdGlvbiBpcyBjYWxsZWQsIHRoZSB2YWx1ZXMgcHJvdmlkZWQgYXMgYXJndW1lbnRzIGRlcGVuZFxuICogb24gd2hldGhlciB0aGUgcmVkdWNlIG1ldGhvZCBoYXMgYW4gaW5pdGlhbFZhbHVlIGFyZ3VtZW50LlxuICpcbiAqIElmIGFuIGluaXRpYWxWYWx1ZSBpcyBwcm92aWRlZCB0byB0aGUgcmVkdWNlIG1ldGhvZDpcbiAqICAtIFRoZSBwcmV2aW91c1ZhbHVlIGFyZ3VtZW50IGlzIGluaXRpYWxWYWx1ZS5cbiAqICAtIFRoZSBjdXJyZW50VmFsdWUgYXJndW1lbnQgaXMgdGhlIHZhbHVlIG9mIHRoZSBmaXJzdCBlbGVtZW50IHByZXNlbnQgaW4gdGhlIGFycmF5LlxuICpcbiAqIElmIGFuIGluaXRpYWxWYWx1ZSBpcyBub3QgcHJvdmlkZWQ6XG4gKiAgLSBUaGUgcHJldmlvdXNWYWx1ZSBhcmd1bWVudCBpcyB0aGUgdmFsdWUgb2YgdGhlIGZpcnN0IGVsZW1lbnQgcHJlc2VudCBpbiB0aGUgYXJyYXkuXG4gKiAgLSBUaGUgY3VycmVudFZhbHVlIGFyZ3VtZW50IGlzIHRoZSB2YWx1ZSBvZiB0aGUgc2Vjb25kIGVsZW1lbnQgcHJlc2VudCBpbiB0aGUgYXJyYXkuXG4gKlxuICogQHByaXZhdGVcbiAqIEBjYWxsYmFjayBjb29yZFJlZHVjZUNhbGxiYWNrXG4gKiBAcGFyYW0geyp9IHByZXZpb3VzVmFsdWUgVGhlIGFjY3VtdWxhdGVkIHZhbHVlIHByZXZpb3VzbHkgcmV0dXJuZWQgaW4gdGhlIGxhc3QgaW52b2NhdGlvblxuICogb2YgdGhlIGNhbGxiYWNrLCBvciBpbml0aWFsVmFsdWUsIGlmIHN1cHBsaWVkLlxuICogQHBhcmFtIHtbbnVtYmVyLCBudW1iZXJdfSBjdXJyZW50Q29vcmRzIFRoZSBjdXJyZW50IGNvb3JkaW5hdGUgYmVpbmcgcHJvY2Vzc2VkLlxuICogQHBhcmFtIHtudW1iZXJ9IGN1cnJlbnRJbmRleCBUaGUgaW5kZXggb2YgdGhlIGN1cnJlbnQgZWxlbWVudCBiZWluZyBwcm9jZXNzZWQgaW4gdGhlXG4gKiBhcnJheS5TdGFydHMgYXQgaW5kZXggMCwgaWYgYW4gaW5pdGlhbFZhbHVlIGlzIHByb3ZpZGVkLCBhbmQgYXQgaW5kZXggMSBvdGhlcndpc2UuXG4gKi9cblxuLyoqXG4gKiBSZWR1Y2UgY29vcmRpbmF0ZXMgaW4gYW55IEdlb0pTT04gb2JqZWN0LCBzaW1pbGFyIHRvIEFycmF5LnJlZHVjZSgpXG4gKlxuICogQG5hbWUgY29vcmRSZWR1Y2VcbiAqIEBwYXJhbSB7T2JqZWN0fSBsYXllciBhbnkgR2VvSlNPTiBvYmplY3RcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGNhbGxiYWNrIGEgbWV0aG9kIHRoYXQgdGFrZXMgKHByZXZpb3VzVmFsdWUsIGN1cnJlbnRDb29yZHMsIGN1cnJlbnRJbmRleClcbiAqIEBwYXJhbSB7Kn0gW2luaXRpYWxWYWx1ZV0gVmFsdWUgdG8gdXNlIGFzIHRoZSBmaXJzdCBhcmd1bWVudCB0byB0aGUgZmlyc3QgY2FsbCBvZiB0aGUgY2FsbGJhY2suXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtleGNsdWRlV3JhcENvb3JkPWZhbHNlXSB3aGV0aGVyIG9yIG5vdCB0byBpbmNsdWRlXG4gKiB0aGUgZmluYWwgY29vcmRpbmF0ZSBvZiBMaW5lYXJSaW5ncyB0aGF0IHdyYXBzIHRoZSByaW5nIGluIGl0cyBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7Kn0gVGhlIHZhbHVlIHRoYXQgcmVzdWx0cyBmcm9tIHRoZSByZWR1Y3Rpb24uXG4gKiBAZXhhbXBsZVxuICogdmFyIGZlYXR1cmVzID0ge1xuICogICBcInR5cGVcIjogXCJGZWF0dXJlQ29sbGVjdGlvblwiLFxuICogICBcImZlYXR1cmVzXCI6IFtcbiAqICAgICB7XG4gKiAgICAgICBcInR5cGVcIjogXCJGZWF0dXJlXCIsXG4gKiAgICAgICBcInByb3BlcnRpZXNcIjoge30sXG4gKiAgICAgICBcImdlb21ldHJ5XCI6IHtcbiAqICAgICAgICAgXCJ0eXBlXCI6IFwiUG9pbnRcIixcbiAqICAgICAgICAgXCJjb29yZGluYXRlc1wiOiBbMjYsIDM3XVxuICogICAgICAgfVxuICogICAgIH0sXG4gKiAgICAge1xuICogICAgICAgXCJ0eXBlXCI6IFwiRmVhdHVyZVwiLFxuICogICAgICAgXCJwcm9wZXJ0aWVzXCI6IHt9LFxuICogICAgICAgXCJnZW9tZXRyeVwiOiB7XG4gKiAgICAgICAgIFwidHlwZVwiOiBcIlBvaW50XCIsXG4gKiAgICAgICAgIFwiY29vcmRpbmF0ZXNcIjogWzM2LCA1M11cbiAqICAgICAgIH1cbiAqICAgICB9XG4gKiAgIF1cbiAqIH07XG4gKiB0dXJmLmNvb3JkUmVkdWNlKGZlYXR1cmVzLCBmdW5jdGlvbiAocHJldmlvdXNWYWx1ZSwgY3VycmVudENvb3JkcywgY3VycmVudEluZGV4KSB7XG4gKiAgIC8vPXByZXZpb3VzVmFsdWVcbiAqICAgLy89Y3VycmVudENvb3Jkc1xuICogICAvLz1jdXJyZW50SW5kZXhcbiAqICAgcmV0dXJuIGN1cnJlbnRDb29yZHM7XG4gKiB9KTtcbiAqL1xuZnVuY3Rpb24gY29vcmRSZWR1Y2UobGF5ZXIsIGNhbGxiYWNrLCBpbml0aWFsVmFsdWUsIGV4Y2x1ZGVXcmFwQ29vcmQpIHtcbiAgICB2YXIgcHJldmlvdXNWYWx1ZSA9IGluaXRpYWxWYWx1ZTtcbiAgICBjb29yZEVhY2gobGF5ZXIsIGZ1bmN0aW9uIChjdXJyZW50Q29vcmRzLCBjdXJyZW50SW5kZXgpIHtcbiAgICAgICAgaWYgKGN1cnJlbnRJbmRleCA9PT0gMCAmJiBpbml0aWFsVmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcHJldmlvdXNWYWx1ZSA9IGN1cnJlbnRDb29yZHM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwcmV2aW91c1ZhbHVlID0gY2FsbGJhY2socHJldmlvdXNWYWx1ZSwgY3VycmVudENvb3JkcywgY3VycmVudEluZGV4KTtcbiAgICAgICAgfVxuICAgIH0sIGV4Y2x1ZGVXcmFwQ29vcmQpO1xuICAgIHJldHVybiBwcmV2aW91c1ZhbHVlO1xufVxubW9kdWxlLmV4cG9ydHMuY29vcmRSZWR1Y2UgPSBjb29yZFJlZHVjZTtcblxuLyoqXG4gKiBDYWxsYmFjayBmb3IgcHJvcEVhY2hcbiAqXG4gKiBAcHJpdmF0ZVxuICogQGNhbGxiYWNrIHByb3BFYWNoQ2FsbGJhY2tcbiAqIEBwYXJhbSB7Kn0gY3VycmVudFByb3BlcnRpZXMgVGhlIGN1cnJlbnQgcHJvcGVydGllcyBiZWluZyBwcm9jZXNzZWQuXG4gKiBAcGFyYW0ge251bWJlcn0gY3VycmVudEluZGV4IFRoZSBpbmRleCBvZiB0aGUgY3VycmVudCBlbGVtZW50IGJlaW5nIHByb2Nlc3NlZCBpbiB0aGVcbiAqIGFycmF5LlN0YXJ0cyBhdCBpbmRleCAwLCBpZiBhbiBpbml0aWFsVmFsdWUgaXMgcHJvdmlkZWQsIGFuZCBhdCBpbmRleCAxIG90aGVyd2lzZS5cbiAqL1xuXG4vKipcbiAqIEl0ZXJhdGUgb3ZlciBwcm9wZXJ0aWVzIGluIGFueSBHZW9KU09OIG9iamVjdCwgc2ltaWxhciB0byBBcnJheS5mb3JFYWNoKClcbiAqXG4gKiBAbmFtZSBwcm9wRWFjaFxuICogQHBhcmFtIHtPYmplY3R9IGxheWVyIGFueSBHZW9KU09OIG9iamVjdFxuICogQHBhcmFtIHtGdW5jdGlvbn0gY2FsbGJhY2sgYSBtZXRob2QgdGhhdCB0YWtlcyAoY3VycmVudFByb3BlcnRpZXMsIGN1cnJlbnRJbmRleClcbiAqIEBleGFtcGxlXG4gKiB2YXIgZmVhdHVyZXMgPSB7XG4gKiAgIFwidHlwZVwiOiBcIkZlYXR1cmVDb2xsZWN0aW9uXCIsXG4gKiAgIFwiZmVhdHVyZXNcIjogW1xuICogICAgIHtcbiAqICAgICAgIFwidHlwZVwiOiBcIkZlYXR1cmVcIixcbiAqICAgICAgIFwicHJvcGVydGllc1wiOiB7XCJmb29cIjogXCJiYXJcIn0sXG4gKiAgICAgICBcImdlb21ldHJ5XCI6IHtcbiAqICAgICAgICAgXCJ0eXBlXCI6IFwiUG9pbnRcIixcbiAqICAgICAgICAgXCJjb29yZGluYXRlc1wiOiBbMjYsIDM3XVxuICogICAgICAgfVxuICogICAgIH0sXG4gKiAgICAge1xuICogICAgICAgXCJ0eXBlXCI6IFwiRmVhdHVyZVwiLFxuICogICAgICAgXCJwcm9wZXJ0aWVzXCI6IHtcImhlbGxvXCI6IFwid29ybGRcIn0sXG4gKiAgICAgICBcImdlb21ldHJ5XCI6IHtcbiAqICAgICAgICAgXCJ0eXBlXCI6IFwiUG9pbnRcIixcbiAqICAgICAgICAgXCJjb29yZGluYXRlc1wiOiBbMzYsIDUzXVxuICogICAgICAgfVxuICogICAgIH1cbiAqICAgXVxuICogfTtcbiAqIHR1cmYucHJvcEVhY2goZmVhdHVyZXMsIGZ1bmN0aW9uIChjdXJyZW50UHJvcGVydGllcywgY3VycmVudEluZGV4KSB7XG4gKiAgIC8vPWN1cnJlbnRQcm9wZXJ0aWVzXG4gKiAgIC8vPWN1cnJlbnRJbmRleFxuICogfSk7XG4gKi9cbmZ1bmN0aW9uIHByb3BFYWNoKGxheWVyLCBjYWxsYmFjaykge1xuICAgIHZhciBpO1xuICAgIHN3aXRjaCAobGF5ZXIudHlwZSkge1xuICAgIGNhc2UgJ0ZlYXR1cmVDb2xsZWN0aW9uJzpcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IGxheWVyLmZlYXR1cmVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjYWxsYmFjayhsYXllci5mZWF0dXJlc1tpXS5wcm9wZXJ0aWVzLCBpKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICBjYXNlICdGZWF0dXJlJzpcbiAgICAgICAgY2FsbGJhY2sobGF5ZXIucHJvcGVydGllcywgMCk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbn1cbm1vZHVsZS5leHBvcnRzLnByb3BFYWNoID0gcHJvcEVhY2g7XG5cblxuLyoqXG4gKiBDYWxsYmFjayBmb3IgcHJvcFJlZHVjZVxuICpcbiAqIFRoZSBmaXJzdCB0aW1lIHRoZSBjYWxsYmFjayBmdW5jdGlvbiBpcyBjYWxsZWQsIHRoZSB2YWx1ZXMgcHJvdmlkZWQgYXMgYXJndW1lbnRzIGRlcGVuZFxuICogb24gd2hldGhlciB0aGUgcmVkdWNlIG1ldGhvZCBoYXMgYW4gaW5pdGlhbFZhbHVlIGFyZ3VtZW50LlxuICpcbiAqIElmIGFuIGluaXRpYWxWYWx1ZSBpcyBwcm92aWRlZCB0byB0aGUgcmVkdWNlIG1ldGhvZDpcbiAqICAtIFRoZSBwcmV2aW91c1ZhbHVlIGFyZ3VtZW50IGlzIGluaXRpYWxWYWx1ZS5cbiAqICAtIFRoZSBjdXJyZW50VmFsdWUgYXJndW1lbnQgaXMgdGhlIHZhbHVlIG9mIHRoZSBmaXJzdCBlbGVtZW50IHByZXNlbnQgaW4gdGhlIGFycmF5LlxuICpcbiAqIElmIGFuIGluaXRpYWxWYWx1ZSBpcyBub3QgcHJvdmlkZWQ6XG4gKiAgLSBUaGUgcHJldmlvdXNWYWx1ZSBhcmd1bWVudCBpcyB0aGUgdmFsdWUgb2YgdGhlIGZpcnN0IGVsZW1lbnQgcHJlc2VudCBpbiB0aGUgYXJyYXkuXG4gKiAgLSBUaGUgY3VycmVudFZhbHVlIGFyZ3VtZW50IGlzIHRoZSB2YWx1ZSBvZiB0aGUgc2Vjb25kIGVsZW1lbnQgcHJlc2VudCBpbiB0aGUgYXJyYXkuXG4gKlxuICogQHByaXZhdGVcbiAqIEBjYWxsYmFjayBwcm9wUmVkdWNlQ2FsbGJhY2tcbiAqIEBwYXJhbSB7Kn0gcHJldmlvdXNWYWx1ZSBUaGUgYWNjdW11bGF0ZWQgdmFsdWUgcHJldmlvdXNseSByZXR1cm5lZCBpbiB0aGUgbGFzdCBpbnZvY2F0aW9uXG4gKiBvZiB0aGUgY2FsbGJhY2ssIG9yIGluaXRpYWxWYWx1ZSwgaWYgc3VwcGxpZWQuXG4gKiBAcGFyYW0geyp9IGN1cnJlbnRQcm9wZXJ0aWVzIFRoZSBjdXJyZW50IHByb3BlcnRpZXMgYmVpbmcgcHJvY2Vzc2VkLlxuICogQHBhcmFtIHtudW1iZXJ9IGN1cnJlbnRJbmRleCBUaGUgaW5kZXggb2YgdGhlIGN1cnJlbnQgZWxlbWVudCBiZWluZyBwcm9jZXNzZWQgaW4gdGhlXG4gKiBhcnJheS5TdGFydHMgYXQgaW5kZXggMCwgaWYgYW4gaW5pdGlhbFZhbHVlIGlzIHByb3ZpZGVkLCBhbmQgYXQgaW5kZXggMSBvdGhlcndpc2UuXG4gKi9cblxuLyoqXG4gKiBSZWR1Y2UgcHJvcGVydGllcyBpbiBhbnkgR2VvSlNPTiBvYmplY3QgaW50byBhIHNpbmdsZSB2YWx1ZSxcbiAqIHNpbWlsYXIgdG8gaG93IEFycmF5LnJlZHVjZSB3b3Jrcy4gSG93ZXZlciwgaW4gdGhpcyBjYXNlIHdlIGxhemlseSBydW5cbiAqIHRoZSByZWR1Y3Rpb24sIHNvIGFuIGFycmF5IG9mIGFsbCBwcm9wZXJ0aWVzIGlzIHVubmVjZXNzYXJ5LlxuICpcbiAqIEBuYW1lIHByb3BSZWR1Y2VcbiAqIEBwYXJhbSB7T2JqZWN0fSBsYXllciBhbnkgR2VvSlNPTiBvYmplY3RcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGNhbGxiYWNrIGEgbWV0aG9kIHRoYXQgdGFrZXMgKHByZXZpb3VzVmFsdWUsIGN1cnJlbnRQcm9wZXJ0aWVzLCBjdXJyZW50SW5kZXgpXG4gKiBAcGFyYW0geyp9IFtpbml0aWFsVmFsdWVdIFZhbHVlIHRvIHVzZSBhcyB0aGUgZmlyc3QgYXJndW1lbnQgdG8gdGhlIGZpcnN0IGNhbGwgb2YgdGhlIGNhbGxiYWNrLlxuICogQHJldHVybnMgeyp9IFRoZSB2YWx1ZSB0aGF0IHJlc3VsdHMgZnJvbSB0aGUgcmVkdWN0aW9uLlxuICogQGV4YW1wbGVcbiAqIHZhciBmZWF0dXJlcyA9IHtcbiAqICAgXCJ0eXBlXCI6IFwiRmVhdHVyZUNvbGxlY3Rpb25cIixcbiAqICAgXCJmZWF0dXJlc1wiOiBbXG4gKiAgICAge1xuICogICAgICAgXCJ0eXBlXCI6IFwiRmVhdHVyZVwiLFxuICogICAgICAgXCJwcm9wZXJ0aWVzXCI6IHtcImZvb1wiOiBcImJhclwifSxcbiAqICAgICAgIFwiZ2VvbWV0cnlcIjoge1xuICogICAgICAgICBcInR5cGVcIjogXCJQb2ludFwiLFxuICogICAgICAgICBcImNvb3JkaW5hdGVzXCI6IFsyNiwgMzddXG4gKiAgICAgICB9XG4gKiAgICAgfSxcbiAqICAgICB7XG4gKiAgICAgICBcInR5cGVcIjogXCJGZWF0dXJlXCIsXG4gKiAgICAgICBcInByb3BlcnRpZXNcIjoge1wiaGVsbG9cIjogXCJ3b3JsZFwifSxcbiAqICAgICAgIFwiZ2VvbWV0cnlcIjoge1xuICogICAgICAgICBcInR5cGVcIjogXCJQb2ludFwiLFxuICogICAgICAgICBcImNvb3JkaW5hdGVzXCI6IFszNiwgNTNdXG4gKiAgICAgICB9XG4gKiAgICAgfVxuICogICBdXG4gKiB9O1xuICogdHVyZi5wcm9wUmVkdWNlKGZlYXR1cmVzLCBmdW5jdGlvbiAocHJldmlvdXNWYWx1ZSwgY3VycmVudFByb3BlcnRpZXMsIGN1cnJlbnRJbmRleCkge1xuICogICAvLz1wcmV2aW91c1ZhbHVlXG4gKiAgIC8vPWN1cnJlbnRQcm9wZXJ0aWVzXG4gKiAgIC8vPWN1cnJlbnRJbmRleFxuICogICByZXR1cm4gY3VycmVudFByb3BlcnRpZXNcbiAqIH0pO1xuICovXG5mdW5jdGlvbiBwcm9wUmVkdWNlKGxheWVyLCBjYWxsYmFjaywgaW5pdGlhbFZhbHVlKSB7XG4gICAgdmFyIHByZXZpb3VzVmFsdWUgPSBpbml0aWFsVmFsdWU7XG4gICAgcHJvcEVhY2gobGF5ZXIsIGZ1bmN0aW9uIChjdXJyZW50UHJvcGVydGllcywgY3VycmVudEluZGV4KSB7XG4gICAgICAgIGlmIChjdXJyZW50SW5kZXggPT09IDAgJiYgaW5pdGlhbFZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHByZXZpb3VzVmFsdWUgPSBjdXJyZW50UHJvcGVydGllcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHByZXZpb3VzVmFsdWUgPSBjYWxsYmFjayhwcmV2aW91c1ZhbHVlLCBjdXJyZW50UHJvcGVydGllcywgY3VycmVudEluZGV4KTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBwcmV2aW91c1ZhbHVlO1xufVxubW9kdWxlLmV4cG9ydHMucHJvcFJlZHVjZSA9IHByb3BSZWR1Y2U7XG5cbi8qKlxuICogQ2FsbGJhY2sgZm9yIGZlYXR1cmVFYWNoXG4gKlxuICogQHByaXZhdGVcbiAqIEBjYWxsYmFjayBmZWF0dXJlRWFjaENhbGxiYWNrXG4gKiBAcGFyYW0ge0ZlYXR1cmU8YW55Pn0gY3VycmVudEZlYXR1cmUgVGhlIGN1cnJlbnQgZmVhdHVyZSBiZWluZyBwcm9jZXNzZWQuXG4gKiBAcGFyYW0ge251bWJlcn0gY3VycmVudEluZGV4IFRoZSBpbmRleCBvZiB0aGUgY3VycmVudCBlbGVtZW50IGJlaW5nIHByb2Nlc3NlZCBpbiB0aGVcbiAqIGFycmF5LlN0YXJ0cyBhdCBpbmRleCAwLCBpZiBhbiBpbml0aWFsVmFsdWUgaXMgcHJvdmlkZWQsIGFuZCBhdCBpbmRleCAxIG90aGVyd2lzZS5cbiAqL1xuXG4vKipcbiAqIEl0ZXJhdGUgb3ZlciBmZWF0dXJlcyBpbiBhbnkgR2VvSlNPTiBvYmplY3QsIHNpbWlsYXIgdG9cbiAqIEFycmF5LmZvckVhY2guXG4gKlxuICogQG5hbWUgZmVhdHVyZUVhY2hcbiAqIEBwYXJhbSB7T2JqZWN0fSBsYXllciBhbnkgR2VvSlNPTiBvYmplY3RcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGNhbGxiYWNrIGEgbWV0aG9kIHRoYXQgdGFrZXMgKGN1cnJlbnRGZWF0dXJlLCBjdXJyZW50SW5kZXgpXG4gKiBAZXhhbXBsZVxuICogdmFyIGZlYXR1cmVzID0ge1xuICogICBcInR5cGVcIjogXCJGZWF0dXJlQ29sbGVjdGlvblwiLFxuICogICBcImZlYXR1cmVzXCI6IFtcbiAqICAgICB7XG4gKiAgICAgICBcInR5cGVcIjogXCJGZWF0dXJlXCIsXG4gKiAgICAgICBcInByb3BlcnRpZXNcIjoge30sXG4gKiAgICAgICBcImdlb21ldHJ5XCI6IHtcbiAqICAgICAgICAgXCJ0eXBlXCI6IFwiUG9pbnRcIixcbiAqICAgICAgICAgXCJjb29yZGluYXRlc1wiOiBbMjYsIDM3XVxuICogICAgICAgfVxuICogICAgIH0sXG4gKiAgICAge1xuICogICAgICAgXCJ0eXBlXCI6IFwiRmVhdHVyZVwiLFxuICogICAgICAgXCJwcm9wZXJ0aWVzXCI6IHt9LFxuICogICAgICAgXCJnZW9tZXRyeVwiOiB7XG4gKiAgICAgICAgIFwidHlwZVwiOiBcIlBvaW50XCIsXG4gKiAgICAgICAgIFwiY29vcmRpbmF0ZXNcIjogWzM2LCA1M11cbiAqICAgICAgIH1cbiAqICAgICB9XG4gKiAgIF1cbiAqIH07XG4gKiB0dXJmLmZlYXR1cmVFYWNoKGZlYXR1cmVzLCBmdW5jdGlvbiAoY3VycmVudEZlYXR1cmUsIGN1cnJlbnRJbmRleCkge1xuICogICAvLz1jdXJyZW50RmVhdHVyZVxuICogICAvLz1jdXJyZW50SW5kZXhcbiAqIH0pO1xuICovXG5mdW5jdGlvbiBmZWF0dXJlRWFjaChsYXllciwgY2FsbGJhY2spIHtcbiAgICBpZiAobGF5ZXIudHlwZSA9PT0gJ0ZlYXR1cmUnKSB7XG4gICAgICAgIGNhbGxiYWNrKGxheWVyLCAwKTtcbiAgICB9IGVsc2UgaWYgKGxheWVyLnR5cGUgPT09ICdGZWF0dXJlQ29sbGVjdGlvbicpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsYXllci5mZWF0dXJlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY2FsbGJhY2sobGF5ZXIuZmVhdHVyZXNbaV0sIGkpO1xuICAgICAgICB9XG4gICAgfVxufVxubW9kdWxlLmV4cG9ydHMuZmVhdHVyZUVhY2ggPSBmZWF0dXJlRWFjaDtcblxuLyoqXG4gKiBDYWxsYmFjayBmb3IgZmVhdHVyZVJlZHVjZVxuICpcbiAqIFRoZSBmaXJzdCB0aW1lIHRoZSBjYWxsYmFjayBmdW5jdGlvbiBpcyBjYWxsZWQsIHRoZSB2YWx1ZXMgcHJvdmlkZWQgYXMgYXJndW1lbnRzIGRlcGVuZFxuICogb24gd2hldGhlciB0aGUgcmVkdWNlIG1ldGhvZCBoYXMgYW4gaW5pdGlhbFZhbHVlIGFyZ3VtZW50LlxuICpcbiAqIElmIGFuIGluaXRpYWxWYWx1ZSBpcyBwcm92aWRlZCB0byB0aGUgcmVkdWNlIG1ldGhvZDpcbiAqICAtIFRoZSBwcmV2aW91c1ZhbHVlIGFyZ3VtZW50IGlzIGluaXRpYWxWYWx1ZS5cbiAqICAtIFRoZSBjdXJyZW50VmFsdWUgYXJndW1lbnQgaXMgdGhlIHZhbHVlIG9mIHRoZSBmaXJzdCBlbGVtZW50IHByZXNlbnQgaW4gdGhlIGFycmF5LlxuICpcbiAqIElmIGFuIGluaXRpYWxWYWx1ZSBpcyBub3QgcHJvdmlkZWQ6XG4gKiAgLSBUaGUgcHJldmlvdXNWYWx1ZSBhcmd1bWVudCBpcyB0aGUgdmFsdWUgb2YgdGhlIGZpcnN0IGVsZW1lbnQgcHJlc2VudCBpbiB0aGUgYXJyYXkuXG4gKiAgLSBUaGUgY3VycmVudFZhbHVlIGFyZ3VtZW50IGlzIHRoZSB2YWx1ZSBvZiB0aGUgc2Vjb25kIGVsZW1lbnQgcHJlc2VudCBpbiB0aGUgYXJyYXkuXG4gKlxuICogQHByaXZhdGVcbiAqIEBjYWxsYmFjayBmZWF0dXJlUmVkdWNlQ2FsbGJhY2tcbiAqIEBwYXJhbSB7Kn0gcHJldmlvdXNWYWx1ZSBUaGUgYWNjdW11bGF0ZWQgdmFsdWUgcHJldmlvdXNseSByZXR1cm5lZCBpbiB0aGUgbGFzdCBpbnZvY2F0aW9uXG4gKiBvZiB0aGUgY2FsbGJhY2ssIG9yIGluaXRpYWxWYWx1ZSwgaWYgc3VwcGxpZWQuXG4gKiBAcGFyYW0ge0ZlYXR1cmU8YW55Pn0gY3VycmVudEZlYXR1cmUgVGhlIGN1cnJlbnQgRmVhdHVyZSBiZWluZyBwcm9jZXNzZWQuXG4gKiBAcGFyYW0ge251bWJlcn0gY3VycmVudEluZGV4IFRoZSBpbmRleCBvZiB0aGUgY3VycmVudCBlbGVtZW50IGJlaW5nIHByb2Nlc3NlZCBpbiB0aGVcbiAqIGFycmF5LlN0YXJ0cyBhdCBpbmRleCAwLCBpZiBhbiBpbml0aWFsVmFsdWUgaXMgcHJvdmlkZWQsIGFuZCBhdCBpbmRleCAxIG90aGVyd2lzZS5cbiAqL1xuXG4vKipcbiAqIFJlZHVjZSBmZWF0dXJlcyBpbiBhbnkgR2VvSlNPTiBvYmplY3QsIHNpbWlsYXIgdG8gQXJyYXkucmVkdWNlKCkuXG4gKlxuICogQG5hbWUgZmVhdHVyZVJlZHVjZVxuICogQHBhcmFtIHtPYmplY3R9IGxheWVyIGFueSBHZW9KU09OIG9iamVjdFxuICogQHBhcmFtIHtGdW5jdGlvbn0gY2FsbGJhY2sgYSBtZXRob2QgdGhhdCB0YWtlcyAocHJldmlvdXNWYWx1ZSwgY3VycmVudEZlYXR1cmUsIGN1cnJlbnRJbmRleClcbiAqIEBwYXJhbSB7Kn0gW2luaXRpYWxWYWx1ZV0gVmFsdWUgdG8gdXNlIGFzIHRoZSBmaXJzdCBhcmd1bWVudCB0byB0aGUgZmlyc3QgY2FsbCBvZiB0aGUgY2FsbGJhY2suXG4gKiBAcmV0dXJucyB7Kn0gVGhlIHZhbHVlIHRoYXQgcmVzdWx0cyBmcm9tIHRoZSByZWR1Y3Rpb24uXG4gKiBAZXhhbXBsZVxuICogdmFyIGZlYXR1cmVzID0ge1xuICogICBcInR5cGVcIjogXCJGZWF0dXJlQ29sbGVjdGlvblwiLFxuICogICBcImZlYXR1cmVzXCI6IFtcbiAqICAgICB7XG4gKiAgICAgICBcInR5cGVcIjogXCJGZWF0dXJlXCIsXG4gKiAgICAgICBcInByb3BlcnRpZXNcIjoge1wiZm9vXCI6IFwiYmFyXCJ9LFxuICogICAgICAgXCJnZW9tZXRyeVwiOiB7XG4gKiAgICAgICAgIFwidHlwZVwiOiBcIlBvaW50XCIsXG4gKiAgICAgICAgIFwiY29vcmRpbmF0ZXNcIjogWzI2LCAzN11cbiAqICAgICAgIH1cbiAqICAgICB9LFxuICogICAgIHtcbiAqICAgICAgIFwidHlwZVwiOiBcIkZlYXR1cmVcIixcbiAqICAgICAgIFwicHJvcGVydGllc1wiOiB7XCJoZWxsb1wiOiBcIndvcmxkXCJ9LFxuICogICAgICAgXCJnZW9tZXRyeVwiOiB7XG4gKiAgICAgICAgIFwidHlwZVwiOiBcIlBvaW50XCIsXG4gKiAgICAgICAgIFwiY29vcmRpbmF0ZXNcIjogWzM2LCA1M11cbiAqICAgICAgIH1cbiAqICAgICB9XG4gKiAgIF1cbiAqIH07XG4gKiB0dXJmLmZlYXR1cmVSZWR1Y2UoZmVhdHVyZXMsIGZ1bmN0aW9uIChwcmV2aW91c1ZhbHVlLCBjdXJyZW50RmVhdHVyZSwgY3VycmVudEluZGV4KSB7XG4gKiAgIC8vPXByZXZpb3VzVmFsdWVcbiAqICAgLy89Y3VycmVudEZlYXR1cmVcbiAqICAgLy89Y3VycmVudEluZGV4XG4gKiAgIHJldHVybiBjdXJyZW50RmVhdHVyZVxuICogfSk7XG4gKi9cbmZ1bmN0aW9uIGZlYXR1cmVSZWR1Y2UobGF5ZXIsIGNhbGxiYWNrLCBpbml0aWFsVmFsdWUpIHtcbiAgICB2YXIgcHJldmlvdXNWYWx1ZSA9IGluaXRpYWxWYWx1ZTtcbiAgICBmZWF0dXJlRWFjaChsYXllciwgZnVuY3Rpb24gKGN1cnJlbnRGZWF0dXJlLCBjdXJyZW50SW5kZXgpIHtcbiAgICAgICAgaWYgKGN1cnJlbnRJbmRleCA9PT0gMCAmJiBpbml0aWFsVmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcHJldmlvdXNWYWx1ZSA9IGN1cnJlbnRGZWF0dXJlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcHJldmlvdXNWYWx1ZSA9IGNhbGxiYWNrKHByZXZpb3VzVmFsdWUsIGN1cnJlbnRGZWF0dXJlLCBjdXJyZW50SW5kZXgpO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHByZXZpb3VzVmFsdWU7XG59XG5tb2R1bGUuZXhwb3J0cy5mZWF0dXJlUmVkdWNlID0gZmVhdHVyZVJlZHVjZTtcblxuLyoqXG4gKiBHZXQgYWxsIGNvb3JkaW5hdGVzIGZyb20gYW55IEdlb0pTT04gb2JqZWN0LlxuICpcbiAqIEBuYW1lIGNvb3JkQWxsXG4gKiBAcGFyYW0ge09iamVjdH0gbGF5ZXIgYW55IEdlb0pTT04gb2JqZWN0XG4gKiBAcmV0dXJucyB7QXJyYXk8QXJyYXk8bnVtYmVyPj59IGNvb3JkaW5hdGUgcG9zaXRpb24gYXJyYXlcbiAqIEBleGFtcGxlXG4gKiB2YXIgZmVhdHVyZXMgPSB7XG4gKiAgIFwidHlwZVwiOiBcIkZlYXR1cmVDb2xsZWN0aW9uXCIsXG4gKiAgIFwiZmVhdHVyZXNcIjogW1xuICogICAgIHtcbiAqICAgICAgIFwidHlwZVwiOiBcIkZlYXR1cmVcIixcbiAqICAgICAgIFwicHJvcGVydGllc1wiOiB7fSxcbiAqICAgICAgIFwiZ2VvbWV0cnlcIjoge1xuICogICAgICAgICBcInR5cGVcIjogXCJQb2ludFwiLFxuICogICAgICAgICBcImNvb3JkaW5hdGVzXCI6IFsyNiwgMzddXG4gKiAgICAgICB9XG4gKiAgICAgfSxcbiAqICAgICB7XG4gKiAgICAgICBcInR5cGVcIjogXCJGZWF0dXJlXCIsXG4gKiAgICAgICBcInByb3BlcnRpZXNcIjoge30sXG4gKiAgICAgICBcImdlb21ldHJ5XCI6IHtcbiAqICAgICAgICAgXCJ0eXBlXCI6IFwiUG9pbnRcIixcbiAqICAgICAgICAgXCJjb29yZGluYXRlc1wiOiBbMzYsIDUzXVxuICogICAgICAgfVxuICogICAgIH1cbiAqICAgXVxuICogfTtcbiAqIHZhciBjb29yZHMgPSB0dXJmLmNvb3JkQWxsKGZlYXR1cmVzKTtcbiAqIC8vPWNvb3Jkc1xuICovXG5mdW5jdGlvbiBjb29yZEFsbChsYXllcikge1xuICAgIHZhciBjb29yZHMgPSBbXTtcbiAgICBjb29yZEVhY2gobGF5ZXIsIGZ1bmN0aW9uIChjb29yZCkge1xuICAgICAgICBjb29yZHMucHVzaChjb29yZCk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGNvb3Jkcztcbn1cbm1vZHVsZS5leHBvcnRzLmNvb3JkQWxsID0gY29vcmRBbGw7XG5cbi8qKlxuICogSXRlcmF0ZSBvdmVyIGVhY2ggZ2VvbWV0cnkgaW4gYW55IEdlb0pTT04gb2JqZWN0LCBzaW1pbGFyIHRvIEFycmF5LmZvckVhY2goKVxuICpcbiAqIEBuYW1lIGdlb21FYWNoXG4gKiBAcGFyYW0ge09iamVjdH0gbGF5ZXIgYW55IEdlb0pTT04gb2JqZWN0XG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjYWxsYmFjayBhIG1ldGhvZCB0aGF0IHRha2VzIChjdXJyZW50R2VvbWV0cnksIGN1cnJlbnRJbmRleClcbiAqIEBleGFtcGxlXG4gKiB2YXIgZmVhdHVyZXMgPSB7XG4gKiAgIFwidHlwZVwiOiBcIkZlYXR1cmVDb2xsZWN0aW9uXCIsXG4gKiAgIFwiZmVhdHVyZXNcIjogW1xuICogICAgIHtcbiAqICAgICAgIFwidHlwZVwiOiBcIkZlYXR1cmVcIixcbiAqICAgICAgIFwicHJvcGVydGllc1wiOiB7fSxcbiAqICAgICAgIFwiZ2VvbWV0cnlcIjoge1xuICogICAgICAgICBcInR5cGVcIjogXCJQb2ludFwiLFxuICogICAgICAgICBcImNvb3JkaW5hdGVzXCI6IFsyNiwgMzddXG4gKiAgICAgICB9XG4gKiAgICAgfSxcbiAqICAgICB7XG4gKiAgICAgICBcInR5cGVcIjogXCJGZWF0dXJlXCIsXG4gKiAgICAgICBcInByb3BlcnRpZXNcIjoge30sXG4gKiAgICAgICBcImdlb21ldHJ5XCI6IHtcbiAqICAgICAgICAgXCJ0eXBlXCI6IFwiUG9pbnRcIixcbiAqICAgICAgICAgXCJjb29yZGluYXRlc1wiOiBbMzYsIDUzXVxuICogICAgICAgfVxuICogICAgIH1cbiAqICAgXVxuICogfTtcbiAqIHR1cmYuZ2VvbUVhY2goZmVhdHVyZXMsIGZ1bmN0aW9uIChjdXJyZW50R2VvbWV0cnksIGN1cnJlbnRJbmRleCkge1xuICogICAvLz1jdXJyZW50R2VvbWV0cnlcbiAqICAgLy89Y3VycmVudEluZGV4XG4gKiB9KTtcbiAqL1xuZnVuY3Rpb24gZ2VvbUVhY2gobGF5ZXIsIGNhbGxiYWNrKSB7XG4gICAgdmFyIGksIGosIGcsIGdlb21ldHJ5LCBzdG9wRyxcbiAgICAgICAgZ2VvbWV0cnlNYXliZUNvbGxlY3Rpb24sXG4gICAgICAgIGlzR2VvbWV0cnlDb2xsZWN0aW9uLFxuICAgICAgICBjdXJyZW50SW5kZXggPSAwLFxuICAgICAgICBpc0ZlYXR1cmVDb2xsZWN0aW9uID0gbGF5ZXIudHlwZSA9PT0gJ0ZlYXR1cmVDb2xsZWN0aW9uJyxcbiAgICAgICAgaXNGZWF0dXJlID0gbGF5ZXIudHlwZSA9PT0gJ0ZlYXR1cmUnLFxuICAgICAgICBzdG9wID0gaXNGZWF0dXJlQ29sbGVjdGlvbiA/IGxheWVyLmZlYXR1cmVzLmxlbmd0aCA6IDE7XG5cbiAgLy8gVGhpcyBsb2dpYyBtYXkgbG9vayBhIGxpdHRsZSB3ZWlyZC4gVGhlIHJlYXNvbiB3aHkgaXQgaXMgdGhhdCB3YXlcbiAgLy8gaXMgYmVjYXVzZSBpdCdzIHRyeWluZyB0byBiZSBmYXN0LiBHZW9KU09OIHN1cHBvcnRzIG11bHRpcGxlIGtpbmRzXG4gIC8vIG9mIG9iamVjdHMgYXQgaXRzIHJvb3Q6IEZlYXR1cmVDb2xsZWN0aW9uLCBGZWF0dXJlcywgR2VvbWV0cmllcy5cbiAgLy8gVGhpcyBmdW5jdGlvbiBoYXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIGhhbmRsaW5nIGFsbCBvZiB0aGVtLCBhbmQgdGhhdFxuICAvLyBtZWFucyB0aGF0IHNvbWUgb2YgdGhlIGBmb3JgIGxvb3BzIHlvdSBzZWUgYmVsb3cgYWN0dWFsbHkganVzdCBkb24ndCBhcHBseVxuICAvLyB0byBjZXJ0YWluIGlucHV0cy4gRm9yIGluc3RhbmNlLCBpZiB5b3UgZ2l2ZSB0aGlzIGp1c3QgYVxuICAvLyBQb2ludCBnZW9tZXRyeSwgdGhlbiBib3RoIGxvb3BzIGFyZSBzaG9ydC1jaXJjdWl0ZWQgYW5kIGFsbCB3ZSBkb1xuICAvLyBpcyBncmFkdWFsbHkgcmVuYW1lIHRoZSBpbnB1dCB1bnRpbCBpdCdzIGNhbGxlZCAnZ2VvbWV0cnknLlxuICAvL1xuICAvLyBUaGlzIGFsc28gYWltcyB0byBhbGxvY2F0ZSBhcyBmZXcgcmVzb3VyY2VzIGFzIHBvc3NpYmxlOiBqdXN0IGFcbiAgLy8gZmV3IG51bWJlcnMgYW5kIGJvb2xlYW5zLCByYXRoZXIgdGhhbiBhbnkgdGVtcG9yYXJ5IGFycmF5cyBhcyB3b3VsZFxuICAvLyBiZSByZXF1aXJlZCB3aXRoIHRoZSBub3JtYWxpemF0aW9uIGFwcHJvYWNoLlxuICAgIGZvciAoaSA9IDA7IGkgPCBzdG9wOyBpKyspIHtcblxuICAgICAgICBnZW9tZXRyeU1heWJlQ29sbGVjdGlvbiA9IChpc0ZlYXR1cmVDb2xsZWN0aW9uID8gbGF5ZXIuZmVhdHVyZXNbaV0uZ2VvbWV0cnkgOlxuICAgICAgICAoaXNGZWF0dXJlID8gbGF5ZXIuZ2VvbWV0cnkgOiBsYXllcikpO1xuICAgICAgICBpc0dlb21ldHJ5Q29sbGVjdGlvbiA9IGdlb21ldHJ5TWF5YmVDb2xsZWN0aW9uLnR5cGUgPT09ICdHZW9tZXRyeUNvbGxlY3Rpb24nO1xuICAgICAgICBzdG9wRyA9IGlzR2VvbWV0cnlDb2xsZWN0aW9uID8gZ2VvbWV0cnlNYXliZUNvbGxlY3Rpb24uZ2VvbWV0cmllcy5sZW5ndGggOiAxO1xuXG4gICAgICAgIGZvciAoZyA9IDA7IGcgPCBzdG9wRzsgZysrKSB7XG4gICAgICAgICAgICBnZW9tZXRyeSA9IGlzR2VvbWV0cnlDb2xsZWN0aW9uID9cbiAgICAgICAgICAgIGdlb21ldHJ5TWF5YmVDb2xsZWN0aW9uLmdlb21ldHJpZXNbZ10gOiBnZW9tZXRyeU1heWJlQ29sbGVjdGlvbjtcblxuICAgICAgICAgICAgaWYgKGdlb21ldHJ5LnR5cGUgPT09ICdQb2ludCcgfHxcbiAgICAgICAgICAgICAgICBnZW9tZXRyeS50eXBlID09PSAnTGluZVN0cmluZycgfHxcbiAgICAgICAgICAgICAgICBnZW9tZXRyeS50eXBlID09PSAnTXVsdGlQb2ludCcgfHxcbiAgICAgICAgICAgICAgICBnZW9tZXRyeS50eXBlID09PSAnUG9seWdvbicgfHxcbiAgICAgICAgICAgICAgICBnZW9tZXRyeS50eXBlID09PSAnTXVsdGlMaW5lU3RyaW5nJyB8fFxuICAgICAgICAgICAgICAgIGdlb21ldHJ5LnR5cGUgPT09ICdNdWx0aVBvbHlnb24nKSB7XG4gICAgICAgICAgICAgICAgY2FsbGJhY2soZ2VvbWV0cnksIGN1cnJlbnRJbmRleCk7XG4gICAgICAgICAgICAgICAgY3VycmVudEluZGV4Kys7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGdlb21ldHJ5LnR5cGUgPT09ICdHZW9tZXRyeUNvbGxlY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgZm9yIChqID0gMDsgaiA8IGdlb21ldHJ5Lmdlb21ldHJpZXMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soZ2VvbWV0cnkuZ2VvbWV0cmllc1tqXSwgY3VycmVudEluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudEluZGV4Kys7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gR2VvbWV0cnkgVHlwZScpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxubW9kdWxlLmV4cG9ydHMuZ2VvbUVhY2ggPSBnZW9tRWFjaDtcblxuLyoqXG4gKiBDYWxsYmFjayBmb3IgZ2VvbVJlZHVjZVxuICpcbiAqIFRoZSBmaXJzdCB0aW1lIHRoZSBjYWxsYmFjayBmdW5jdGlvbiBpcyBjYWxsZWQsIHRoZSB2YWx1ZXMgcHJvdmlkZWQgYXMgYXJndW1lbnRzIGRlcGVuZFxuICogb24gd2hldGhlciB0aGUgcmVkdWNlIG1ldGhvZCBoYXMgYW4gaW5pdGlhbFZhbHVlIGFyZ3VtZW50LlxuICpcbiAqIElmIGFuIGluaXRpYWxWYWx1ZSBpcyBwcm92aWRlZCB0byB0aGUgcmVkdWNlIG1ldGhvZDpcbiAqICAtIFRoZSBwcmV2aW91c1ZhbHVlIGFyZ3VtZW50IGlzIGluaXRpYWxWYWx1ZS5cbiAqICAtIFRoZSBjdXJyZW50VmFsdWUgYXJndW1lbnQgaXMgdGhlIHZhbHVlIG9mIHRoZSBmaXJzdCBlbGVtZW50IHByZXNlbnQgaW4gdGhlIGFycmF5LlxuICpcbiAqIElmIGFuIGluaXRpYWxWYWx1ZSBpcyBub3QgcHJvdmlkZWQ6XG4gKiAgLSBUaGUgcHJldmlvdXNWYWx1ZSBhcmd1bWVudCBpcyB0aGUgdmFsdWUgb2YgdGhlIGZpcnN0IGVsZW1lbnQgcHJlc2VudCBpbiB0aGUgYXJyYXkuXG4gKiAgLSBUaGUgY3VycmVudFZhbHVlIGFyZ3VtZW50IGlzIHRoZSB2YWx1ZSBvZiB0aGUgc2Vjb25kIGVsZW1lbnQgcHJlc2VudCBpbiB0aGUgYXJyYXkuXG4gKlxuICogQHByaXZhdGVcbiAqIEBjYWxsYmFjayBnZW9tUmVkdWNlQ2FsbGJhY2tcbiAqIEBwYXJhbSB7Kn0gcHJldmlvdXNWYWx1ZSBUaGUgYWNjdW11bGF0ZWQgdmFsdWUgcHJldmlvdXNseSByZXR1cm5lZCBpbiB0aGUgbGFzdCBpbnZvY2F0aW9uXG4gKiBvZiB0aGUgY2FsbGJhY2ssIG9yIGluaXRpYWxWYWx1ZSwgaWYgc3VwcGxpZWQuXG4gKiBAcGFyYW0geyp9IGN1cnJlbnRHZW9tZXRyeSBUaGUgY3VycmVudCBGZWF0dXJlIGJlaW5nIHByb2Nlc3NlZC5cbiAqIEBwYXJhbSB7bnVtYmVyfSBjdXJyZW50SW5kZXggVGhlIGluZGV4IG9mIHRoZSBjdXJyZW50IGVsZW1lbnQgYmVpbmcgcHJvY2Vzc2VkIGluIHRoZVxuICogYXJyYXkuU3RhcnRzIGF0IGluZGV4IDAsIGlmIGFuIGluaXRpYWxWYWx1ZSBpcyBwcm92aWRlZCwgYW5kIGF0IGluZGV4IDEgb3RoZXJ3aXNlLlxuICovXG5cbi8qKlxuICogUmVkdWNlIGdlb21ldHJ5IGluIGFueSBHZW9KU09OIG9iamVjdCwgc2ltaWxhciB0byBBcnJheS5yZWR1Y2UoKS5cbiAqXG4gKiBAbmFtZSBnZW9tUmVkdWNlXG4gKiBAcGFyYW0ge09iamVjdH0gbGF5ZXIgYW55IEdlb0pTT04gb2JqZWN0XG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjYWxsYmFjayBhIG1ldGhvZCB0aGF0IHRha2VzIChwcmV2aW91c1ZhbHVlLCBjdXJyZW50R2VvbWV0cnksIGN1cnJlbnRJbmRleClcbiAqIEBwYXJhbSB7Kn0gW2luaXRpYWxWYWx1ZV0gVmFsdWUgdG8gdXNlIGFzIHRoZSBmaXJzdCBhcmd1bWVudCB0byB0aGUgZmlyc3QgY2FsbCBvZiB0aGUgY2FsbGJhY2suXG4gKiBAcmV0dXJucyB7Kn0gVGhlIHZhbHVlIHRoYXQgcmVzdWx0cyBmcm9tIHRoZSByZWR1Y3Rpb24uXG4gKiBAZXhhbXBsZVxuICogdmFyIGZlYXR1cmVzID0ge1xuICogICBcInR5cGVcIjogXCJGZWF0dXJlQ29sbGVjdGlvblwiLFxuICogICBcImZlYXR1cmVzXCI6IFtcbiAqICAgICB7XG4gKiAgICAgICBcInR5cGVcIjogXCJGZWF0dXJlXCIsXG4gKiAgICAgICBcInByb3BlcnRpZXNcIjoge1wiZm9vXCI6IFwiYmFyXCJ9LFxuICogICAgICAgXCJnZW9tZXRyeVwiOiB7XG4gKiAgICAgICAgIFwidHlwZVwiOiBcIlBvaW50XCIsXG4gKiAgICAgICAgIFwiY29vcmRpbmF0ZXNcIjogWzI2LCAzN11cbiAqICAgICAgIH1cbiAqICAgICB9LFxuICogICAgIHtcbiAqICAgICAgIFwidHlwZVwiOiBcIkZlYXR1cmVcIixcbiAqICAgICAgIFwicHJvcGVydGllc1wiOiB7XCJoZWxsb1wiOiBcIndvcmxkXCJ9LFxuICogICAgICAgXCJnZW9tZXRyeVwiOiB7XG4gKiAgICAgICAgIFwidHlwZVwiOiBcIlBvaW50XCIsXG4gKiAgICAgICAgIFwiY29vcmRpbmF0ZXNcIjogWzM2LCA1M11cbiAqICAgICAgIH1cbiAqICAgICB9XG4gKiAgIF1cbiAqIH07XG4gKiB0dXJmLmdlb21SZWR1Y2UoZmVhdHVyZXMsIGZ1bmN0aW9uIChwcmV2aW91c1ZhbHVlLCBjdXJyZW50R2VvbWV0cnksIGN1cnJlbnRJbmRleCkge1xuICogICAvLz1wcmV2aW91c1ZhbHVlXG4gKiAgIC8vPWN1cnJlbnRHZW9tZXRyeVxuICogICAvLz1jdXJyZW50SW5kZXhcbiAqICAgcmV0dXJuIGN1cnJlbnRHZW9tZXRyeVxuICogfSk7XG4gKi9cbmZ1bmN0aW9uIGdlb21SZWR1Y2UobGF5ZXIsIGNhbGxiYWNrLCBpbml0aWFsVmFsdWUpIHtcbiAgICB2YXIgcHJldmlvdXNWYWx1ZSA9IGluaXRpYWxWYWx1ZTtcbiAgICBnZW9tRWFjaChsYXllciwgZnVuY3Rpb24gKGN1cnJlbnRHZW9tZXRyeSwgY3VycmVudEluZGV4KSB7XG4gICAgICAgIGlmIChjdXJyZW50SW5kZXggPT09IDAgJiYgaW5pdGlhbFZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHByZXZpb3VzVmFsdWUgPSBjdXJyZW50R2VvbWV0cnk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwcmV2aW91c1ZhbHVlID0gY2FsbGJhY2socHJldmlvdXNWYWx1ZSwgY3VycmVudEdlb21ldHJ5LCBjdXJyZW50SW5kZXgpO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHByZXZpb3VzVmFsdWU7XG59XG5tb2R1bGUuZXhwb3J0cy5nZW9tUmVkdWNlID0gZ2VvbVJlZHVjZTtcbiIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9yZWdpc3RlcicpKCkuUHJvbWlzZVxuIiwiXCJ1c2Ugc3RyaWN0XCJcbiAgICAvLyBnbG9iYWwga2V5IGZvciB1c2VyIHByZWZlcnJlZCByZWdpc3RyYXRpb25cbnZhciBSRUdJU1RSQVRJT05fS0VZID0gJ0BAYW55LXByb21pc2UvUkVHSVNUUkFUSU9OJyxcbiAgICAvLyBQcmlvciByZWdpc3RyYXRpb24gKHByZWZlcnJlZCBvciBkZXRlY3RlZClcbiAgICByZWdpc3RlcmVkID0gbnVsbFxuXG4vKipcbiAqIFJlZ2lzdGVycyB0aGUgZ2l2ZW4gaW1wbGVtZW50YXRpb24uICBBbiBpbXBsZW1lbnRhdGlvbiBtdXN0XG4gKiBiZSByZWdpc3RlcmVkIHByaW9yIHRvIGFueSBjYWxsIHRvIGByZXF1aXJlKFwiYW55LXByb21pc2VcIilgLFxuICogdHlwaWNhbGx5IG9uIGFwcGxpY2F0aW9uIGxvYWQuXG4gKlxuICogSWYgY2FsbGVkIHdpdGggbm8gYXJndW1lbnRzLCB3aWxsIHJldHVybiByZWdpc3RyYXRpb24gaW5cbiAqIGZvbGxvd2luZyBwcmlvcml0eTpcbiAqXG4gKiBGb3IgTm9kZS5qczpcbiAqXG4gKiAxLiBQcmV2aW91cyByZWdpc3RyYXRpb25cbiAqIDIuIGdsb2JhbC5Qcm9taXNlIGlmIG5vZGUuanMgdmVyc2lvbiA+PSAwLjEyXG4gKiAzLiBBdXRvIGRldGVjdGVkIHByb21pc2UgYmFzZWQgb24gZmlyc3Qgc3VjZXNzZnVsIHJlcXVpcmUgb2ZcbiAqICAgIGtub3duIHByb21pc2UgbGlicmFyaWVzLiBOb3RlIHRoaXMgaXMgYSBsYXN0IHJlc29ydCwgYXMgdGhlXG4gKiAgICBsb2FkZWQgbGlicmFyeSBpcyBub24tZGV0ZXJtaW5pc3RpYy4gbm9kZS5qcyA+PSAwLjEyIHdpbGxcbiAqICAgIGFsd2F5cyB1c2UgZ2xvYmFsLlByb21pc2Ugb3ZlciB0aGlzIHByaW9yaXR5IGxpc3QuXG4gKiA0LiBUaHJvd3MgZXJyb3IuXG4gKlxuICogRm9yIEJyb3dzZXI6XG4gKlxuICogMS4gUHJldmlvdXMgcmVnaXN0cmF0aW9uXG4gKiAyLiB3aW5kb3cuUHJvbWlzZVxuICogMy4gVGhyb3dzIGVycm9yLlxuICpcbiAqIE9wdGlvbnM6XG4gKlxuICogUHJvbWlzZTogRGVzaXJlZCBQcm9taXNlIGNvbnN0cnVjdG9yXG4gKiBnbG9iYWw6IEJvb2xlYW4gLSBTaG91bGQgdGhlIHJlZ2lzdHJhdGlvbiBiZSBjYWNoZWQgaW4gYSBnbG9iYWwgdmFyaWFibGUgdG9cbiAqIGFsbG93IGNyb3NzIGRlcGVuZGVuY3kvYnVuZGxlIHJlZ2lzdHJhdGlvbj8gIChkZWZhdWx0IHRydWUpXG4gKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24ocm9vdCwgbG9hZEltcGxlbWVudGF0aW9uKXtcbiAgcmV0dXJuIGZ1bmN0aW9uIHJlZ2lzdGVyKGltcGxlbWVudGF0aW9uLCBvcHRzKXtcbiAgICBpbXBsZW1lbnRhdGlvbiA9IGltcGxlbWVudGF0aW9uIHx8IG51bGxcbiAgICBvcHRzID0gb3B0cyB8fCB7fVxuICAgIC8vIGdsb2JhbCByZWdpc3RyYXRpb24gdW5sZXNzIGV4cGxpY2l0bHkgIHtnbG9iYWw6IGZhbHNlfSBpbiBvcHRpb25zIChkZWZhdWx0IHRydWUpXG4gICAgdmFyIHJlZ2lzdGVyR2xvYmFsID0gb3B0cy5nbG9iYWwgIT09IGZhbHNlO1xuXG4gICAgLy8gbG9hZCBhbnkgcHJldmlvdXMgZ2xvYmFsIHJlZ2lzdHJhdGlvblxuICAgIGlmKHJlZ2lzdGVyZWQgPT09IG51bGwgJiYgcmVnaXN0ZXJHbG9iYWwpe1xuICAgICAgcmVnaXN0ZXJlZCA9IHJvb3RbUkVHSVNUUkFUSU9OX0tFWV0gfHwgbnVsbFxuICAgIH1cblxuICAgIGlmKHJlZ2lzdGVyZWQgIT09IG51bGxcbiAgICAgICAgJiYgaW1wbGVtZW50YXRpb24gIT09IG51bGxcbiAgICAgICAgJiYgcmVnaXN0ZXJlZC5pbXBsZW1lbnRhdGlvbiAhPT0gaW1wbGVtZW50YXRpb24pe1xuICAgICAgLy8gVGhyb3cgZXJyb3IgaWYgYXR0ZW1wdGluZyB0byByZWRlZmluZSBpbXBsZW1lbnRhdGlvblxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdhbnktcHJvbWlzZSBhbHJlYWR5IGRlZmluZWQgYXMgXCInK3JlZ2lzdGVyZWQuaW1wbGVtZW50YXRpb24rXG4gICAgICAgICdcIi4gIFlvdSBjYW4gb25seSByZWdpc3RlciBhbiBpbXBsZW1lbnRhdGlvbiBiZWZvcmUgdGhlIGZpcnN0ICcrXG4gICAgICAgICcgY2FsbCB0byByZXF1aXJlKFwiYW55LXByb21pc2VcIikgYW5kIGFuIGltcGxlbWVudGF0aW9uIGNhbm5vdCBiZSBjaGFuZ2VkJylcbiAgICB9XG5cbiAgICBpZihyZWdpc3RlcmVkID09PSBudWxsKXtcbiAgICAgIC8vIHVzZSBwcm92aWRlZCBpbXBsZW1lbnRhdGlvblxuICAgICAgaWYoaW1wbGVtZW50YXRpb24gIT09IG51bGwgJiYgdHlwZW9mIG9wdHMuUHJvbWlzZSAhPT0gJ3VuZGVmaW5lZCcpe1xuICAgICAgICByZWdpc3RlcmVkID0ge1xuICAgICAgICAgIFByb21pc2U6IG9wdHMuUHJvbWlzZSxcbiAgICAgICAgICBpbXBsZW1lbnRhdGlvbjogaW1wbGVtZW50YXRpb25cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gcmVxdWlyZSBpbXBsZW1lbnRhdGlvbiBpZiBpbXBsZW1lbnRhdGlvbiBpcyBzcGVjaWZpZWQgYnV0IG5vdCBwcm92aWRlZFxuICAgICAgICByZWdpc3RlcmVkID0gbG9hZEltcGxlbWVudGF0aW9uKGltcGxlbWVudGF0aW9uKVxuICAgICAgfVxuXG4gICAgICBpZihyZWdpc3Rlckdsb2JhbCl7XG4gICAgICAgIC8vIHJlZ2lzdGVyIHByZWZlcmVuY2UgZ2xvYmFsbHkgaW4gY2FzZSBtdWx0aXBsZSBpbnN0YWxsYXRpb25zXG4gICAgICAgIHJvb3RbUkVHSVNUUkFUSU9OX0tFWV0gPSByZWdpc3RlcmVkXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlZ2lzdGVyZWRcbiAgfVxufVxuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vbG9hZGVyJykod2luZG93LCBsb2FkSW1wbGVtZW50YXRpb24pXG5cbi8qKlxuICogQnJvd3NlciBzcGVjaWZpYyBsb2FkSW1wbGVtZW50YXRpb24uICBBbHdheXMgdXNlcyBgd2luZG93LlByb21pc2VgXG4gKlxuICogVG8gcmVnaXN0ZXIgYSBjdXN0b20gaW1wbGVtZW50YXRpb24sIG11c3QgcmVnaXN0ZXIgd2l0aCBgUHJvbWlzZWAgb3B0aW9uLlxuICovXG5mdW5jdGlvbiBsb2FkSW1wbGVtZW50YXRpb24oKXtcbiAgaWYodHlwZW9mIHdpbmRvdy5Qcm9taXNlID09PSAndW5kZWZpbmVkJyl7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiYW55LXByb21pc2UgYnJvd3NlciByZXF1aXJlcyBhIHBvbHlmaWxsIG9yIGV4cGxpY2l0IHJlZ2lzdHJhdGlvblwiK1xuICAgICAgXCIgZS5nOiByZXF1aXJlKCdhbnktcHJvbWlzZS9yZWdpc3Rlci9ibHVlYmlyZCcpXCIpXG4gIH1cbiAgcmV0dXJuIHtcbiAgICBQcm9taXNlOiB3aW5kb3cuUHJvbWlzZSxcbiAgICBpbXBsZW1lbnRhdGlvbjogJ3dpbmRvdy5Qcm9taXNlJ1xuICB9XG59XG4iLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHBhcmFsbGVsKGZucywgY29udGV4dCwgY2FsbGJhY2spIHtcbiAgaWYgKCFjYWxsYmFjaykge1xuICAgIGlmICh0eXBlb2YgY29udGV4dCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY2FsbGJhY2sgPSBjb250ZXh0XG4gICAgICBjb250ZXh0ID0gbnVsbFxuICAgIH0gZWxzZSB7XG4gICAgICBjYWxsYmFjayA9IG5vb3BcbiAgICB9XG4gIH1cblxuICB2YXIgcGVuZGluZyA9IGZucyAmJiBmbnMubGVuZ3RoXG4gIGlmICghcGVuZGluZykgcmV0dXJuIGNhbGxiYWNrKG51bGwsIFtdKTtcblxuICB2YXIgZmluaXNoZWQgPSBmYWxzZVxuICB2YXIgcmVzdWx0cyA9IG5ldyBBcnJheShwZW5kaW5nKVxuXG4gIGZucy5mb3JFYWNoKGNvbnRleHQgPyBmdW5jdGlvbiAoZm4sIGkpIHtcbiAgICBmbi5jYWxsKGNvbnRleHQsIG1heWJlRG9uZShpKSlcbiAgfSA6IGZ1bmN0aW9uIChmbiwgaSkge1xuICAgIGZuKG1heWJlRG9uZShpKSlcbiAgfSlcblxuICBmdW5jdGlvbiBtYXliZURvbmUoaSkge1xuICAgIHJldHVybiBmdW5jdGlvbiAoZXJyLCByZXN1bHQpIHtcbiAgICAgIGlmIChmaW5pc2hlZCkgcmV0dXJuO1xuXG4gICAgICBpZiAoZXJyKSB7XG4gICAgICAgIGNhbGxiYWNrKGVyciwgcmVzdWx0cylcbiAgICAgICAgZmluaXNoZWQgPSB0cnVlXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICByZXN1bHRzW2ldID0gcmVzdWx0XG5cbiAgICAgIGlmICghLS1wZW5kaW5nKSBjYWxsYmFjayhudWxsLCByZXN1bHRzKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gbm9vcCgpIHt9XG4iLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHNlcmllcyhmbnMsIGNvbnRleHQsIGNhbGxiYWNrKSB7XG4gIGlmICghY2FsbGJhY2spIHtcbiAgICBpZiAodHlwZW9mIGNvbnRleHQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGNhbGxiYWNrID0gY29udGV4dFxuICAgICAgY29udGV4dCA9IG51bGxcbiAgICB9IGVsc2Uge1xuICAgICAgY2FsbGJhY2sgPSBub29wXG4gICAgfVxuICB9XG5cbiAgaWYgKCEoZm5zICYmIGZucy5sZW5ndGgpKSByZXR1cm4gY2FsbGJhY2soKTtcblxuICBmbnMgPSBmbnMuc2xpY2UoMClcblxuICB2YXIgY2FsbCA9IGNvbnRleHRcbiAgPyBmdW5jdGlvbiAoKSB7XG4gICAgZm5zLmxlbmd0aFxuICAgICAgPyBmbnMuc2hpZnQoKS5jYWxsKGNvbnRleHQsIG5leHQpXG4gICAgICA6IGNhbGxiYWNrKClcbiAgfVxuICA6IGZ1bmN0aW9uICgpIHtcbiAgICBmbnMubGVuZ3RoXG4gICAgICA/IGZucy5zaGlmdCgpKG5leHQpXG4gICAgICA6IGNhbGxiYWNrKClcbiAgfVxuXG4gIGNhbGwoKVxuXG4gIGZ1bmN0aW9uIG5leHQoZXJyKSB7XG4gICAgZXJyID8gY2FsbGJhY2soZXJyKSA6IGNhbGwoKVxuICB9XG59XG5cbmZ1bmN0aW9uIG5vb3AoKSB7fVxuIiwidmFyIGFzbjEgPSBleHBvcnRzO1xuXG5hc24xLmJpZ251bSA9IHJlcXVpcmUoJ2JuLmpzJyk7XG5cbmFzbjEuZGVmaW5lID0gcmVxdWlyZSgnLi9hc24xL2FwaScpLmRlZmluZTtcbmFzbjEuYmFzZSA9IHJlcXVpcmUoJy4vYXNuMS9iYXNlJyk7XG5hc24xLmNvbnN0YW50cyA9IHJlcXVpcmUoJy4vYXNuMS9jb25zdGFudHMnKTtcbmFzbjEuZGVjb2RlcnMgPSByZXF1aXJlKCcuL2FzbjEvZGVjb2RlcnMnKTtcbmFzbjEuZW5jb2RlcnMgPSByZXF1aXJlKCcuL2FzbjEvZW5jb2RlcnMnKTtcbiIsInZhciBhc24xID0gcmVxdWlyZSgnLi4vYXNuMScpO1xudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcblxudmFyIGFwaSA9IGV4cG9ydHM7XG5cbmFwaS5kZWZpbmUgPSBmdW5jdGlvbiBkZWZpbmUobmFtZSwgYm9keSkge1xuICByZXR1cm4gbmV3IEVudGl0eShuYW1lLCBib2R5KTtcbn07XG5cbmZ1bmN0aW9uIEVudGl0eShuYW1lLCBib2R5KSB7XG4gIHRoaXMubmFtZSA9IG5hbWU7XG4gIHRoaXMuYm9keSA9IGJvZHk7XG5cbiAgdGhpcy5kZWNvZGVycyA9IHt9O1xuICB0aGlzLmVuY29kZXJzID0ge307XG59O1xuXG5FbnRpdHkucHJvdG90eXBlLl9jcmVhdGVOYW1lZCA9IGZ1bmN0aW9uIGNyZWF0ZU5hbWVkKGJhc2UpIHtcbiAgdmFyIG5hbWVkO1xuICB0cnkge1xuICAgIG5hbWVkID0gcmVxdWlyZSgndm0nKS5ydW5JblRoaXNDb250ZXh0KFxuICAgICAgJyhmdW5jdGlvbiAnICsgdGhpcy5uYW1lICsgJyhlbnRpdHkpIHtcXG4nICtcbiAgICAgICcgIHRoaXMuX2luaXROYW1lZChlbnRpdHkpO1xcbicgK1xuICAgICAgJ30pJ1xuICAgICk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBuYW1lZCA9IGZ1bmN0aW9uIChlbnRpdHkpIHtcbiAgICAgIHRoaXMuX2luaXROYW1lZChlbnRpdHkpO1xuICAgIH07XG4gIH1cbiAgaW5oZXJpdHMobmFtZWQsIGJhc2UpO1xuICBuYW1lZC5wcm90b3R5cGUuX2luaXROYW1lZCA9IGZ1bmN0aW9uIGluaXRuYW1lZChlbnRpdHkpIHtcbiAgICBiYXNlLmNhbGwodGhpcywgZW50aXR5KTtcbiAgfTtcblxuICByZXR1cm4gbmV3IG5hbWVkKHRoaXMpO1xufTtcblxuRW50aXR5LnByb3RvdHlwZS5fZ2V0RGVjb2RlciA9IGZ1bmN0aW9uIF9nZXREZWNvZGVyKGVuYykge1xuICBlbmMgPSBlbmMgfHwgJ2Rlcic7XG4gIC8vIExhemlseSBjcmVhdGUgZGVjb2RlclxuICBpZiAoIXRoaXMuZGVjb2RlcnMuaGFzT3duUHJvcGVydHkoZW5jKSlcbiAgICB0aGlzLmRlY29kZXJzW2VuY10gPSB0aGlzLl9jcmVhdGVOYW1lZChhc24xLmRlY29kZXJzW2VuY10pO1xuICByZXR1cm4gdGhpcy5kZWNvZGVyc1tlbmNdO1xufTtcblxuRW50aXR5LnByb3RvdHlwZS5kZWNvZGUgPSBmdW5jdGlvbiBkZWNvZGUoZGF0YSwgZW5jLCBvcHRpb25zKSB7XG4gIHJldHVybiB0aGlzLl9nZXREZWNvZGVyKGVuYykuZGVjb2RlKGRhdGEsIG9wdGlvbnMpO1xufTtcblxuRW50aXR5LnByb3RvdHlwZS5fZ2V0RW5jb2RlciA9IGZ1bmN0aW9uIF9nZXRFbmNvZGVyKGVuYykge1xuICBlbmMgPSBlbmMgfHwgJ2Rlcic7XG4gIC8vIExhemlseSBjcmVhdGUgZW5jb2RlclxuICBpZiAoIXRoaXMuZW5jb2RlcnMuaGFzT3duUHJvcGVydHkoZW5jKSlcbiAgICB0aGlzLmVuY29kZXJzW2VuY10gPSB0aGlzLl9jcmVhdGVOYW1lZChhc24xLmVuY29kZXJzW2VuY10pO1xuICByZXR1cm4gdGhpcy5lbmNvZGVyc1tlbmNdO1xufTtcblxuRW50aXR5LnByb3RvdHlwZS5lbmNvZGUgPSBmdW5jdGlvbiBlbmNvZGUoZGF0YSwgZW5jLCAvKiBpbnRlcm5hbCAqLyByZXBvcnRlcikge1xuICByZXR1cm4gdGhpcy5fZ2V0RW5jb2RlcihlbmMpLmVuY29kZShkYXRhLCByZXBvcnRlcik7XG59O1xuIiwidmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcbnZhciBSZXBvcnRlciA9IHJlcXVpcmUoJy4uL2Jhc2UnKS5SZXBvcnRlcjtcbnZhciBCdWZmZXIgPSByZXF1aXJlKCdidWZmZXInKS5CdWZmZXI7XG5cbmZ1bmN0aW9uIERlY29kZXJCdWZmZXIoYmFzZSwgb3B0aW9ucykge1xuICBSZXBvcnRlci5jYWxsKHRoaXMsIG9wdGlvbnMpO1xuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihiYXNlKSkge1xuICAgIHRoaXMuZXJyb3IoJ0lucHV0IG5vdCBCdWZmZXInKTtcbiAgICByZXR1cm47XG4gIH1cblxuICB0aGlzLmJhc2UgPSBiYXNlO1xuICB0aGlzLm9mZnNldCA9IDA7XG4gIHRoaXMubGVuZ3RoID0gYmFzZS5sZW5ndGg7XG59XG5pbmhlcml0cyhEZWNvZGVyQnVmZmVyLCBSZXBvcnRlcik7XG5leHBvcnRzLkRlY29kZXJCdWZmZXIgPSBEZWNvZGVyQnVmZmVyO1xuXG5EZWNvZGVyQnVmZmVyLnByb3RvdHlwZS5zYXZlID0gZnVuY3Rpb24gc2F2ZSgpIHtcbiAgcmV0dXJuIHsgb2Zmc2V0OiB0aGlzLm9mZnNldCwgcmVwb3J0ZXI6IFJlcG9ydGVyLnByb3RvdHlwZS5zYXZlLmNhbGwodGhpcykgfTtcbn07XG5cbkRlY29kZXJCdWZmZXIucHJvdG90eXBlLnJlc3RvcmUgPSBmdW5jdGlvbiByZXN0b3JlKHNhdmUpIHtcbiAgLy8gUmV0dXJuIHNraXBwZWQgZGF0YVxuICB2YXIgcmVzID0gbmV3IERlY29kZXJCdWZmZXIodGhpcy5iYXNlKTtcbiAgcmVzLm9mZnNldCA9IHNhdmUub2Zmc2V0O1xuICByZXMubGVuZ3RoID0gdGhpcy5vZmZzZXQ7XG5cbiAgdGhpcy5vZmZzZXQgPSBzYXZlLm9mZnNldDtcbiAgUmVwb3J0ZXIucHJvdG90eXBlLnJlc3RvcmUuY2FsbCh0aGlzLCBzYXZlLnJlcG9ydGVyKTtcblxuICByZXR1cm4gcmVzO1xufTtcblxuRGVjb2RlckJ1ZmZlci5wcm90b3R5cGUuaXNFbXB0eSA9IGZ1bmN0aW9uIGlzRW1wdHkoKSB7XG4gIHJldHVybiB0aGlzLm9mZnNldCA9PT0gdGhpcy5sZW5ndGg7XG59O1xuXG5EZWNvZGVyQnVmZmVyLnByb3RvdHlwZS5yZWFkVUludDggPSBmdW5jdGlvbiByZWFkVUludDgoZmFpbCkge1xuICBpZiAodGhpcy5vZmZzZXQgKyAxIDw9IHRoaXMubGVuZ3RoKVxuICAgIHJldHVybiB0aGlzLmJhc2UucmVhZFVJbnQ4KHRoaXMub2Zmc2V0KyssIHRydWUpO1xuICBlbHNlXG4gICAgcmV0dXJuIHRoaXMuZXJyb3IoZmFpbCB8fCAnRGVjb2RlckJ1ZmZlciBvdmVycnVuJyk7XG59XG5cbkRlY29kZXJCdWZmZXIucHJvdG90eXBlLnNraXAgPSBmdW5jdGlvbiBza2lwKGJ5dGVzLCBmYWlsKSB7XG4gIGlmICghKHRoaXMub2Zmc2V0ICsgYnl0ZXMgPD0gdGhpcy5sZW5ndGgpKVxuICAgIHJldHVybiB0aGlzLmVycm9yKGZhaWwgfHwgJ0RlY29kZXJCdWZmZXIgb3ZlcnJ1bicpO1xuXG4gIHZhciByZXMgPSBuZXcgRGVjb2RlckJ1ZmZlcih0aGlzLmJhc2UpO1xuXG4gIC8vIFNoYXJlIHJlcG9ydGVyIHN0YXRlXG4gIHJlcy5fcmVwb3J0ZXJTdGF0ZSA9IHRoaXMuX3JlcG9ydGVyU3RhdGU7XG5cbiAgcmVzLm9mZnNldCA9IHRoaXMub2Zmc2V0O1xuICByZXMubGVuZ3RoID0gdGhpcy5vZmZzZXQgKyBieXRlcztcbiAgdGhpcy5vZmZzZXQgKz0gYnl0ZXM7XG4gIHJldHVybiByZXM7XG59XG5cbkRlY29kZXJCdWZmZXIucHJvdG90eXBlLnJhdyA9IGZ1bmN0aW9uIHJhdyhzYXZlKSB7XG4gIHJldHVybiB0aGlzLmJhc2Uuc2xpY2Uoc2F2ZSA/IHNhdmUub2Zmc2V0IDogdGhpcy5vZmZzZXQsIHRoaXMubGVuZ3RoKTtcbn1cblxuZnVuY3Rpb24gRW5jb2RlckJ1ZmZlcih2YWx1ZSwgcmVwb3J0ZXIpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgdGhpcy5sZW5ndGggPSAwO1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZS5tYXAoZnVuY3Rpb24oaXRlbSkge1xuICAgICAgaWYgKCEoaXRlbSBpbnN0YW5jZW9mIEVuY29kZXJCdWZmZXIpKVxuICAgICAgICBpdGVtID0gbmV3IEVuY29kZXJCdWZmZXIoaXRlbSwgcmVwb3J0ZXIpO1xuICAgICAgdGhpcy5sZW5ndGggKz0gaXRlbS5sZW5ndGg7XG4gICAgICByZXR1cm4gaXRlbTtcbiAgICB9LCB0aGlzKTtcbiAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgaWYgKCEoMCA8PSB2YWx1ZSAmJiB2YWx1ZSA8PSAweGZmKSlcbiAgICAgIHJldHVybiByZXBvcnRlci5lcnJvcignbm9uLWJ5dGUgRW5jb2RlckJ1ZmZlciB2YWx1ZScpO1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLmxlbmd0aCA9IDE7XG4gIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLmxlbmd0aCA9IEJ1ZmZlci5ieXRlTGVuZ3RoKHZhbHVlKTtcbiAgfSBlbHNlIGlmIChCdWZmZXIuaXNCdWZmZXIodmFsdWUpKSB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMubGVuZ3RoID0gdmFsdWUubGVuZ3RoO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiByZXBvcnRlci5lcnJvcignVW5zdXBwb3J0ZWQgdHlwZTogJyArIHR5cGVvZiB2YWx1ZSk7XG4gIH1cbn1cbmV4cG9ydHMuRW5jb2RlckJ1ZmZlciA9IEVuY29kZXJCdWZmZXI7XG5cbkVuY29kZXJCdWZmZXIucHJvdG90eXBlLmpvaW4gPSBmdW5jdGlvbiBqb2luKG91dCwgb2Zmc2V0KSB7XG4gIGlmICghb3V0KVxuICAgIG91dCA9IG5ldyBCdWZmZXIodGhpcy5sZW5ndGgpO1xuICBpZiAoIW9mZnNldClcbiAgICBvZmZzZXQgPSAwO1xuXG4gIGlmICh0aGlzLmxlbmd0aCA9PT0gMClcbiAgICByZXR1cm4gb3V0O1xuXG4gIGlmIChBcnJheS5pc0FycmF5KHRoaXMudmFsdWUpKSB7XG4gICAgdGhpcy52YWx1ZS5mb3JFYWNoKGZ1bmN0aW9uKGl0ZW0pIHtcbiAgICAgIGl0ZW0uam9pbihvdXQsIG9mZnNldCk7XG4gICAgICBvZmZzZXQgKz0gaXRlbS5sZW5ndGg7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgaWYgKHR5cGVvZiB0aGlzLnZhbHVlID09PSAnbnVtYmVyJylcbiAgICAgIG91dFtvZmZzZXRdID0gdGhpcy52YWx1ZTtcbiAgICBlbHNlIGlmICh0eXBlb2YgdGhpcy52YWx1ZSA9PT0gJ3N0cmluZycpXG4gICAgICBvdXQud3JpdGUodGhpcy52YWx1ZSwgb2Zmc2V0KTtcbiAgICBlbHNlIGlmIChCdWZmZXIuaXNCdWZmZXIodGhpcy52YWx1ZSkpXG4gICAgICB0aGlzLnZhbHVlLmNvcHkob3V0LCBvZmZzZXQpO1xuICAgIG9mZnNldCArPSB0aGlzLmxlbmd0aDtcbiAgfVxuXG4gIHJldHVybiBvdXQ7XG59O1xuIiwidmFyIGJhc2UgPSBleHBvcnRzO1xuXG5iYXNlLlJlcG9ydGVyID0gcmVxdWlyZSgnLi9yZXBvcnRlcicpLlJlcG9ydGVyO1xuYmFzZS5EZWNvZGVyQnVmZmVyID0gcmVxdWlyZSgnLi9idWZmZXInKS5EZWNvZGVyQnVmZmVyO1xuYmFzZS5FbmNvZGVyQnVmZmVyID0gcmVxdWlyZSgnLi9idWZmZXInKS5FbmNvZGVyQnVmZmVyO1xuYmFzZS5Ob2RlID0gcmVxdWlyZSgnLi9ub2RlJyk7XG4iLCJ2YXIgUmVwb3J0ZXIgPSByZXF1aXJlKCcuLi9iYXNlJykuUmVwb3J0ZXI7XG52YXIgRW5jb2RlckJ1ZmZlciA9IHJlcXVpcmUoJy4uL2Jhc2UnKS5FbmNvZGVyQnVmZmVyO1xudmFyIERlY29kZXJCdWZmZXIgPSByZXF1aXJlKCcuLi9iYXNlJykuRGVjb2RlckJ1ZmZlcjtcbnZhciBhc3NlcnQgPSByZXF1aXJlKCdtaW5pbWFsaXN0aWMtYXNzZXJ0Jyk7XG5cbi8vIFN1cHBvcnRlZCB0YWdzXG52YXIgdGFncyA9IFtcbiAgJ3NlcScsICdzZXFvZicsICdzZXQnLCAnc2V0b2YnLCAnb2JqaWQnLCAnYm9vbCcsXG4gICdnZW50aW1lJywgJ3V0Y3RpbWUnLCAnbnVsbF8nLCAnZW51bScsICdpbnQnLCAnb2JqRGVzYycsXG4gICdiaXRzdHInLCAnYm1wc3RyJywgJ2NoYXJzdHInLCAnZ2Vuc3RyJywgJ2dyYXBoc3RyJywgJ2lhNXN0cicsICdpc282NDZzdHInLFxuICAnbnVtc3RyJywgJ29jdHN0cicsICdwcmludHN0cicsICd0NjFzdHInLCAndW5pc3RyJywgJ3V0ZjhzdHInLCAndmlkZW9zdHInXG5dO1xuXG4vLyBQdWJsaWMgbWV0aG9kcyBsaXN0XG52YXIgbWV0aG9kcyA9IFtcbiAgJ2tleScsICdvYmonLCAndXNlJywgJ29wdGlvbmFsJywgJ2V4cGxpY2l0JywgJ2ltcGxpY2l0JywgJ2RlZicsICdjaG9pY2UnLFxuICAnYW55JywgJ2NvbnRhaW5zJ1xuXS5jb25jYXQodGFncyk7XG5cbi8vIE92ZXJyaWRlZCBtZXRob2RzIGxpc3RcbnZhciBvdmVycmlkZWQgPSBbXG4gICdfcGVla1RhZycsICdfZGVjb2RlVGFnJywgJ191c2UnLFxuICAnX2RlY29kZVN0cicsICdfZGVjb2RlT2JqaWQnLCAnX2RlY29kZVRpbWUnLFxuICAnX2RlY29kZU51bGwnLCAnX2RlY29kZUludCcsICdfZGVjb2RlQm9vbCcsICdfZGVjb2RlTGlzdCcsXG5cbiAgJ19lbmNvZGVDb21wb3NpdGUnLCAnX2VuY29kZVN0cicsICdfZW5jb2RlT2JqaWQnLCAnX2VuY29kZVRpbWUnLFxuICAnX2VuY29kZU51bGwnLCAnX2VuY29kZUludCcsICdfZW5jb2RlQm9vbCdcbl07XG5cbmZ1bmN0aW9uIE5vZGUoZW5jLCBwYXJlbnQpIHtcbiAgdmFyIHN0YXRlID0ge307XG4gIHRoaXMuX2Jhc2VTdGF0ZSA9IHN0YXRlO1xuXG4gIHN0YXRlLmVuYyA9IGVuYztcblxuICBzdGF0ZS5wYXJlbnQgPSBwYXJlbnQgfHwgbnVsbDtcbiAgc3RhdGUuY2hpbGRyZW4gPSBudWxsO1xuXG4gIC8vIFN0YXRlXG4gIHN0YXRlLnRhZyA9IG51bGw7XG4gIHN0YXRlLmFyZ3MgPSBudWxsO1xuICBzdGF0ZS5yZXZlcnNlQXJncyA9IG51bGw7XG4gIHN0YXRlLmNob2ljZSA9IG51bGw7XG4gIHN0YXRlLm9wdGlvbmFsID0gZmFsc2U7XG4gIHN0YXRlLmFueSA9IGZhbHNlO1xuICBzdGF0ZS5vYmogPSBmYWxzZTtcbiAgc3RhdGUudXNlID0gbnVsbDtcbiAgc3RhdGUudXNlRGVjb2RlciA9IG51bGw7XG4gIHN0YXRlLmtleSA9IG51bGw7XG4gIHN0YXRlWydkZWZhdWx0J10gPSBudWxsO1xuICBzdGF0ZS5leHBsaWNpdCA9IG51bGw7XG4gIHN0YXRlLmltcGxpY2l0ID0gbnVsbDtcbiAgc3RhdGUuY29udGFpbnMgPSBudWxsO1xuXG4gIC8vIFNob3VsZCBjcmVhdGUgbmV3IGluc3RhbmNlIG9uIGVhY2ggbWV0aG9kXG4gIGlmICghc3RhdGUucGFyZW50KSB7XG4gICAgc3RhdGUuY2hpbGRyZW4gPSBbXTtcbiAgICB0aGlzLl93cmFwKCk7XG4gIH1cbn1cbm1vZHVsZS5leHBvcnRzID0gTm9kZTtcblxudmFyIHN0YXRlUHJvcHMgPSBbXG4gICdlbmMnLCAncGFyZW50JywgJ2NoaWxkcmVuJywgJ3RhZycsICdhcmdzJywgJ3JldmVyc2VBcmdzJywgJ2Nob2ljZScsXG4gICdvcHRpb25hbCcsICdhbnknLCAnb2JqJywgJ3VzZScsICdhbHRlcmVkVXNlJywgJ2tleScsICdkZWZhdWx0JywgJ2V4cGxpY2l0JyxcbiAgJ2ltcGxpY2l0JywgJ2NvbnRhaW5zJ1xuXTtcblxuTm9kZS5wcm90b3R5cGUuY2xvbmUgPSBmdW5jdGlvbiBjbG9uZSgpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuICB2YXIgY3N0YXRlID0ge307XG4gIHN0YXRlUHJvcHMuZm9yRWFjaChmdW5jdGlvbihwcm9wKSB7XG4gICAgY3N0YXRlW3Byb3BdID0gc3RhdGVbcHJvcF07XG4gIH0pO1xuICB2YXIgcmVzID0gbmV3IHRoaXMuY29uc3RydWN0b3IoY3N0YXRlLnBhcmVudCk7XG4gIHJlcy5fYmFzZVN0YXRlID0gY3N0YXRlO1xuICByZXR1cm4gcmVzO1xufTtcblxuTm9kZS5wcm90b3R5cGUuX3dyYXAgPSBmdW5jdGlvbiB3cmFwKCkge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9iYXNlU3RhdGU7XG4gIG1ldGhvZHMuZm9yRWFjaChmdW5jdGlvbihtZXRob2QpIHtcbiAgICB0aGlzW21ldGhvZF0gPSBmdW5jdGlvbiBfd3JhcHBlZE1ldGhvZCgpIHtcbiAgICAgIHZhciBjbG9uZSA9IG5ldyB0aGlzLmNvbnN0cnVjdG9yKHRoaXMpO1xuICAgICAgc3RhdGUuY2hpbGRyZW4ucHVzaChjbG9uZSk7XG4gICAgICByZXR1cm4gY2xvbmVbbWV0aG9kXS5hcHBseShjbG9uZSwgYXJndW1lbnRzKTtcbiAgICB9O1xuICB9LCB0aGlzKTtcbn07XG5cbk5vZGUucHJvdG90eXBlLl9pbml0ID0gZnVuY3Rpb24gaW5pdChib2R5KSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcblxuICBhc3NlcnQoc3RhdGUucGFyZW50ID09PSBudWxsKTtcbiAgYm9keS5jYWxsKHRoaXMpO1xuXG4gIC8vIEZpbHRlciBjaGlsZHJlblxuICBzdGF0ZS5jaGlsZHJlbiA9IHN0YXRlLmNoaWxkcmVuLmZpbHRlcihmdW5jdGlvbihjaGlsZCkge1xuICAgIHJldHVybiBjaGlsZC5fYmFzZVN0YXRlLnBhcmVudCA9PT0gdGhpcztcbiAgfSwgdGhpcyk7XG4gIGFzc2VydC5lcXVhbChzdGF0ZS5jaGlsZHJlbi5sZW5ndGgsIDEsICdSb290IG5vZGUgY2FuIGhhdmUgb25seSBvbmUgY2hpbGQnKTtcbn07XG5cbk5vZGUucHJvdG90eXBlLl91c2VBcmdzID0gZnVuY3Rpb24gdXNlQXJncyhhcmdzKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcblxuICAvLyBGaWx0ZXIgY2hpbGRyZW4gYW5kIGFyZ3NcbiAgdmFyIGNoaWxkcmVuID0gYXJncy5maWx0ZXIoZnVuY3Rpb24oYXJnKSB7XG4gICAgcmV0dXJuIGFyZyBpbnN0YW5jZW9mIHRoaXMuY29uc3RydWN0b3I7XG4gIH0sIHRoaXMpO1xuICBhcmdzID0gYXJncy5maWx0ZXIoZnVuY3Rpb24oYXJnKSB7XG4gICAgcmV0dXJuICEoYXJnIGluc3RhbmNlb2YgdGhpcy5jb25zdHJ1Y3Rvcik7XG4gIH0sIHRoaXMpO1xuXG4gIGlmIChjaGlsZHJlbi5sZW5ndGggIT09IDApIHtcbiAgICBhc3NlcnQoc3RhdGUuY2hpbGRyZW4gPT09IG51bGwpO1xuICAgIHN0YXRlLmNoaWxkcmVuID0gY2hpbGRyZW47XG5cbiAgICAvLyBSZXBsYWNlIHBhcmVudCB0byBtYWludGFpbiBiYWNrd2FyZCBsaW5rXG4gICAgY2hpbGRyZW4uZm9yRWFjaChmdW5jdGlvbihjaGlsZCkge1xuICAgICAgY2hpbGQuX2Jhc2VTdGF0ZS5wYXJlbnQgPSB0aGlzO1xuICAgIH0sIHRoaXMpO1xuICB9XG4gIGlmIChhcmdzLmxlbmd0aCAhPT0gMCkge1xuICAgIGFzc2VydChzdGF0ZS5hcmdzID09PSBudWxsKTtcbiAgICBzdGF0ZS5hcmdzID0gYXJncztcbiAgICBzdGF0ZS5yZXZlcnNlQXJncyA9IGFyZ3MubWFwKGZ1bmN0aW9uKGFyZykge1xuICAgICAgaWYgKHR5cGVvZiBhcmcgIT09ICdvYmplY3QnIHx8IGFyZy5jb25zdHJ1Y3RvciAhPT0gT2JqZWN0KVxuICAgICAgICByZXR1cm4gYXJnO1xuXG4gICAgICB2YXIgcmVzID0ge307XG4gICAgICBPYmplY3Qua2V5cyhhcmcpLmZvckVhY2goZnVuY3Rpb24oa2V5KSB7XG4gICAgICAgIGlmIChrZXkgPT0gKGtleSB8IDApKVxuICAgICAgICAgIGtleSB8PSAwO1xuICAgICAgICB2YXIgdmFsdWUgPSBhcmdba2V5XTtcbiAgICAgICAgcmVzW3ZhbHVlXSA9IGtleTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHJlcztcbiAgICB9KTtcbiAgfVxufTtcblxuLy9cbi8vIE92ZXJyaWRlZCBtZXRob2RzXG4vL1xuXG5vdmVycmlkZWQuZm9yRWFjaChmdW5jdGlvbihtZXRob2QpIHtcbiAgTm9kZS5wcm90b3R5cGVbbWV0aG9kXSA9IGZ1bmN0aW9uIF9vdmVycmlkZWQoKSB7XG4gICAgdmFyIHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuICAgIHRocm93IG5ldyBFcnJvcihtZXRob2QgKyAnIG5vdCBpbXBsZW1lbnRlZCBmb3IgZW5jb2Rpbmc6ICcgKyBzdGF0ZS5lbmMpO1xuICB9O1xufSk7XG5cbi8vXG4vLyBQdWJsaWMgbWV0aG9kc1xuLy9cblxudGFncy5mb3JFYWNoKGZ1bmN0aW9uKHRhZykge1xuICBOb2RlLnByb3RvdHlwZVt0YWddID0gZnVuY3Rpb24gX3RhZ01ldGhvZCgpIHtcbiAgICB2YXIgc3RhdGUgPSB0aGlzLl9iYXNlU3RhdGU7XG4gICAgdmFyIGFyZ3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpO1xuXG4gICAgYXNzZXJ0KHN0YXRlLnRhZyA9PT0gbnVsbCk7XG4gICAgc3RhdGUudGFnID0gdGFnO1xuXG4gICAgdGhpcy5fdXNlQXJncyhhcmdzKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9O1xufSk7XG5cbk5vZGUucHJvdG90eXBlLnVzZSA9IGZ1bmN0aW9uIHVzZShpdGVtKSB7XG4gIGFzc2VydChpdGVtKTtcbiAgdmFyIHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuXG4gIGFzc2VydChzdGF0ZS51c2UgPT09IG51bGwpO1xuICBzdGF0ZS51c2UgPSBpdGVtO1xuXG4gIHJldHVybiB0aGlzO1xufTtcblxuTm9kZS5wcm90b3R5cGUub3B0aW9uYWwgPSBmdW5jdGlvbiBvcHRpb25hbCgpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuXG4gIHN0YXRlLm9wdGlvbmFsID0gdHJ1ZTtcblxuICByZXR1cm4gdGhpcztcbn07XG5cbk5vZGUucHJvdG90eXBlLmRlZiA9IGZ1bmN0aW9uIGRlZih2YWwpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuXG4gIGFzc2VydChzdGF0ZVsnZGVmYXVsdCddID09PSBudWxsKTtcbiAgc3RhdGVbJ2RlZmF1bHQnXSA9IHZhbDtcbiAgc3RhdGUub3B0aW9uYWwgPSB0cnVlO1xuXG4gIHJldHVybiB0aGlzO1xufTtcblxuTm9kZS5wcm90b3R5cGUuZXhwbGljaXQgPSBmdW5jdGlvbiBleHBsaWNpdChudW0pIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuXG4gIGFzc2VydChzdGF0ZS5leHBsaWNpdCA9PT0gbnVsbCAmJiBzdGF0ZS5pbXBsaWNpdCA9PT0gbnVsbCk7XG4gIHN0YXRlLmV4cGxpY2l0ID0gbnVtO1xuXG4gIHJldHVybiB0aGlzO1xufTtcblxuTm9kZS5wcm90b3R5cGUuaW1wbGljaXQgPSBmdW5jdGlvbiBpbXBsaWNpdChudW0pIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuXG4gIGFzc2VydChzdGF0ZS5leHBsaWNpdCA9PT0gbnVsbCAmJiBzdGF0ZS5pbXBsaWNpdCA9PT0gbnVsbCk7XG4gIHN0YXRlLmltcGxpY2l0ID0gbnVtO1xuXG4gIHJldHVybiB0aGlzO1xufTtcblxuTm9kZS5wcm90b3R5cGUub2JqID0gZnVuY3Rpb24gb2JqKCkge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9iYXNlU3RhdGU7XG4gIHZhciBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTtcblxuICBzdGF0ZS5vYmogPSB0cnVlO1xuXG4gIGlmIChhcmdzLmxlbmd0aCAhPT0gMClcbiAgICB0aGlzLl91c2VBcmdzKGFyZ3MpO1xuXG4gIHJldHVybiB0aGlzO1xufTtcblxuTm9kZS5wcm90b3R5cGUua2V5ID0gZnVuY3Rpb24ga2V5KG5ld0tleSkge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9iYXNlU3RhdGU7XG5cbiAgYXNzZXJ0KHN0YXRlLmtleSA9PT0gbnVsbCk7XG4gIHN0YXRlLmtleSA9IG5ld0tleTtcblxuICByZXR1cm4gdGhpcztcbn07XG5cbk5vZGUucHJvdG90eXBlLmFueSA9IGZ1bmN0aW9uIGFueSgpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuXG4gIHN0YXRlLmFueSA9IHRydWU7XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5Ob2RlLnByb3RvdHlwZS5jaG9pY2UgPSBmdW5jdGlvbiBjaG9pY2Uob2JqKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcblxuICBhc3NlcnQoc3RhdGUuY2hvaWNlID09PSBudWxsKTtcbiAgc3RhdGUuY2hvaWNlID0gb2JqO1xuICB0aGlzLl91c2VBcmdzKE9iamVjdC5rZXlzKG9iaikubWFwKGZ1bmN0aW9uKGtleSkge1xuICAgIHJldHVybiBvYmpba2V5XTtcbiAgfSkpO1xuXG4gIHJldHVybiB0aGlzO1xufTtcblxuTm9kZS5wcm90b3R5cGUuY29udGFpbnMgPSBmdW5jdGlvbiBjb250YWlucyhpdGVtKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcblxuICBhc3NlcnQoc3RhdGUudXNlID09PSBudWxsKTtcbiAgc3RhdGUuY29udGFpbnMgPSBpdGVtO1xuXG4gIHJldHVybiB0aGlzO1xufTtcblxuLy9cbi8vIERlY29kaW5nXG4vL1xuXG5Ob2RlLnByb3RvdHlwZS5fZGVjb2RlID0gZnVuY3Rpb24gZGVjb2RlKGlucHV0LCBvcHRpb25zKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcblxuICAvLyBEZWNvZGUgcm9vdCBub2RlXG4gIGlmIChzdGF0ZS5wYXJlbnQgPT09IG51bGwpXG4gICAgcmV0dXJuIGlucHV0LndyYXBSZXN1bHQoc3RhdGUuY2hpbGRyZW5bMF0uX2RlY29kZShpbnB1dCwgb3B0aW9ucykpO1xuXG4gIHZhciByZXN1bHQgPSBzdGF0ZVsnZGVmYXVsdCddO1xuICB2YXIgcHJlc2VudCA9IHRydWU7XG5cbiAgdmFyIHByZXZLZXkgPSBudWxsO1xuICBpZiAoc3RhdGUua2V5ICE9PSBudWxsKVxuICAgIHByZXZLZXkgPSBpbnB1dC5lbnRlcktleShzdGF0ZS5rZXkpO1xuXG4gIC8vIENoZWNrIGlmIHRhZyBpcyB0aGVyZVxuICBpZiAoc3RhdGUub3B0aW9uYWwpIHtcbiAgICB2YXIgdGFnID0gbnVsbDtcbiAgICBpZiAoc3RhdGUuZXhwbGljaXQgIT09IG51bGwpXG4gICAgICB0YWcgPSBzdGF0ZS5leHBsaWNpdDtcbiAgICBlbHNlIGlmIChzdGF0ZS5pbXBsaWNpdCAhPT0gbnVsbClcbiAgICAgIHRhZyA9IHN0YXRlLmltcGxpY2l0O1xuICAgIGVsc2UgaWYgKHN0YXRlLnRhZyAhPT0gbnVsbClcbiAgICAgIHRhZyA9IHN0YXRlLnRhZztcblxuICAgIGlmICh0YWcgPT09IG51bGwgJiYgIXN0YXRlLmFueSkge1xuICAgICAgLy8gVHJpYWwgYW5kIEVycm9yXG4gICAgICB2YXIgc2F2ZSA9IGlucHV0LnNhdmUoKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGlmIChzdGF0ZS5jaG9pY2UgPT09IG51bGwpXG4gICAgICAgICAgdGhpcy5fZGVjb2RlR2VuZXJpYyhzdGF0ZS50YWcsIGlucHV0LCBvcHRpb25zKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHRoaXMuX2RlY29kZUNob2ljZShpbnB1dCwgb3B0aW9ucyk7XG4gICAgICAgIHByZXNlbnQgPSB0cnVlO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBwcmVzZW50ID0gZmFsc2U7XG4gICAgICB9XG4gICAgICBpbnB1dC5yZXN0b3JlKHNhdmUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBwcmVzZW50ID0gdGhpcy5fcGVla1RhZyhpbnB1dCwgdGFnLCBzdGF0ZS5hbnkpO1xuXG4gICAgICBpZiAoaW5wdXQuaXNFcnJvcihwcmVzZW50KSlcbiAgICAgICAgcmV0dXJuIHByZXNlbnQ7XG4gICAgfVxuICB9XG5cbiAgLy8gUHVzaCBvYmplY3Qgb24gc3RhY2tcbiAgdmFyIHByZXZPYmo7XG4gIGlmIChzdGF0ZS5vYmogJiYgcHJlc2VudClcbiAgICBwcmV2T2JqID0gaW5wdXQuZW50ZXJPYmplY3QoKTtcblxuICBpZiAocHJlc2VudCkge1xuICAgIC8vIFVud3JhcCBleHBsaWNpdCB2YWx1ZXNcbiAgICBpZiAoc3RhdGUuZXhwbGljaXQgIT09IG51bGwpIHtcbiAgICAgIHZhciBleHBsaWNpdCA9IHRoaXMuX2RlY29kZVRhZyhpbnB1dCwgc3RhdGUuZXhwbGljaXQpO1xuICAgICAgaWYgKGlucHV0LmlzRXJyb3IoZXhwbGljaXQpKVxuICAgICAgICByZXR1cm4gZXhwbGljaXQ7XG4gICAgICBpbnB1dCA9IGV4cGxpY2l0O1xuICAgIH1cblxuICAgIHZhciBzdGFydCA9IGlucHV0Lm9mZnNldDtcblxuICAgIC8vIFVud3JhcCBpbXBsaWNpdCBhbmQgbm9ybWFsIHZhbHVlc1xuICAgIGlmIChzdGF0ZS51c2UgPT09IG51bGwgJiYgc3RhdGUuY2hvaWNlID09PSBudWxsKSB7XG4gICAgICBpZiAoc3RhdGUuYW55KVxuICAgICAgICB2YXIgc2F2ZSA9IGlucHV0LnNhdmUoKTtcbiAgICAgIHZhciBib2R5ID0gdGhpcy5fZGVjb2RlVGFnKFxuICAgICAgICBpbnB1dCxcbiAgICAgICAgc3RhdGUuaW1wbGljaXQgIT09IG51bGwgPyBzdGF0ZS5pbXBsaWNpdCA6IHN0YXRlLnRhZyxcbiAgICAgICAgc3RhdGUuYW55XG4gICAgICApO1xuICAgICAgaWYgKGlucHV0LmlzRXJyb3IoYm9keSkpXG4gICAgICAgIHJldHVybiBib2R5O1xuXG4gICAgICBpZiAoc3RhdGUuYW55KVxuICAgICAgICByZXN1bHQgPSBpbnB1dC5yYXcoc2F2ZSk7XG4gICAgICBlbHNlXG4gICAgICAgIGlucHV0ID0gYm9keTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLnRyYWNrICYmIHN0YXRlLnRhZyAhPT0gbnVsbClcbiAgICAgIG9wdGlvbnMudHJhY2soaW5wdXQucGF0aCgpLCBzdGFydCwgaW5wdXQubGVuZ3RoLCAndGFnZ2VkJyk7XG5cbiAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLnRyYWNrICYmIHN0YXRlLnRhZyAhPT0gbnVsbClcbiAgICAgIG9wdGlvbnMudHJhY2soaW5wdXQucGF0aCgpLCBpbnB1dC5vZmZzZXQsIGlucHV0Lmxlbmd0aCwgJ2NvbnRlbnQnKTtcblxuICAgIC8vIFNlbGVjdCBwcm9wZXIgbWV0aG9kIGZvciB0YWdcbiAgICBpZiAoc3RhdGUuYW55KVxuICAgICAgcmVzdWx0ID0gcmVzdWx0O1xuICAgIGVsc2UgaWYgKHN0YXRlLmNob2ljZSA9PT0gbnVsbClcbiAgICAgIHJlc3VsdCA9IHRoaXMuX2RlY29kZUdlbmVyaWMoc3RhdGUudGFnLCBpbnB1dCwgb3B0aW9ucyk7XG4gICAgZWxzZVxuICAgICAgcmVzdWx0ID0gdGhpcy5fZGVjb2RlQ2hvaWNlKGlucHV0LCBvcHRpb25zKTtcblxuICAgIGlmIChpbnB1dC5pc0Vycm9yKHJlc3VsdCkpXG4gICAgICByZXR1cm4gcmVzdWx0O1xuXG4gICAgLy8gRGVjb2RlIGNoaWxkcmVuXG4gICAgaWYgKCFzdGF0ZS5hbnkgJiYgc3RhdGUuY2hvaWNlID09PSBudWxsICYmIHN0YXRlLmNoaWxkcmVuICE9PSBudWxsKSB7XG4gICAgICBzdGF0ZS5jaGlsZHJlbi5mb3JFYWNoKGZ1bmN0aW9uIGRlY29kZUNoaWxkcmVuKGNoaWxkKSB7XG4gICAgICAgIC8vIE5PVEU6IFdlIGFyZSBpZ25vcmluZyBlcnJvcnMgaGVyZSwgdG8gbGV0IHBhcnNlciBjb250aW51ZSB3aXRoIG90aGVyXG4gICAgICAgIC8vIHBhcnRzIG9mIGVuY29kZWQgZGF0YVxuICAgICAgICBjaGlsZC5fZGVjb2RlKGlucHV0LCBvcHRpb25zKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIERlY29kZSBjb250YWluZWQvZW5jb2RlZCBieSBzY2hlbWEsIG9ubHkgaW4gYml0IG9yIG9jdGV0IHN0cmluZ3NcbiAgICBpZiAoc3RhdGUuY29udGFpbnMgJiYgKHN0YXRlLnRhZyA9PT0gJ29jdHN0cicgfHwgc3RhdGUudGFnID09PSAnYml0c3RyJykpIHtcbiAgICAgIHZhciBkYXRhID0gbmV3IERlY29kZXJCdWZmZXIocmVzdWx0KTtcbiAgICAgIHJlc3VsdCA9IHRoaXMuX2dldFVzZShzdGF0ZS5jb250YWlucywgaW5wdXQuX3JlcG9ydGVyU3RhdGUub2JqKVxuICAgICAgICAgIC5fZGVjb2RlKGRhdGEsIG9wdGlvbnMpO1xuICAgIH1cbiAgfVxuXG4gIC8vIFBvcCBvYmplY3RcbiAgaWYgKHN0YXRlLm9iaiAmJiBwcmVzZW50KVxuICAgIHJlc3VsdCA9IGlucHV0LmxlYXZlT2JqZWN0KHByZXZPYmopO1xuXG4gIC8vIFNldCBrZXlcbiAgaWYgKHN0YXRlLmtleSAhPT0gbnVsbCAmJiAocmVzdWx0ICE9PSBudWxsIHx8IHByZXNlbnQgPT09IHRydWUpKVxuICAgIGlucHV0LmxlYXZlS2V5KHByZXZLZXksIHN0YXRlLmtleSwgcmVzdWx0KTtcbiAgZWxzZSBpZiAocHJldktleSAhPT0gbnVsbClcbiAgICBpbnB1dC5leGl0S2V5KHByZXZLZXkpO1xuXG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG5Ob2RlLnByb3RvdHlwZS5fZGVjb2RlR2VuZXJpYyA9IGZ1bmN0aW9uIGRlY29kZUdlbmVyaWModGFnLCBpbnB1dCwgb3B0aW9ucykge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9iYXNlU3RhdGU7XG5cbiAgaWYgKHRhZyA9PT0gJ3NlcScgfHwgdGFnID09PSAnc2V0JylcbiAgICByZXR1cm4gbnVsbDtcbiAgaWYgKHRhZyA9PT0gJ3NlcW9mJyB8fCB0YWcgPT09ICdzZXRvZicpXG4gICAgcmV0dXJuIHRoaXMuX2RlY29kZUxpc3QoaW5wdXQsIHRhZywgc3RhdGUuYXJnc1swXSwgb3B0aW9ucyk7XG4gIGVsc2UgaWYgKC9zdHIkLy50ZXN0KHRhZykpXG4gICAgcmV0dXJuIHRoaXMuX2RlY29kZVN0cihpbnB1dCwgdGFnLCBvcHRpb25zKTtcbiAgZWxzZSBpZiAodGFnID09PSAnb2JqaWQnICYmIHN0YXRlLmFyZ3MpXG4gICAgcmV0dXJuIHRoaXMuX2RlY29kZU9iamlkKGlucHV0LCBzdGF0ZS5hcmdzWzBdLCBzdGF0ZS5hcmdzWzFdLCBvcHRpb25zKTtcbiAgZWxzZSBpZiAodGFnID09PSAnb2JqaWQnKVxuICAgIHJldHVybiB0aGlzLl9kZWNvZGVPYmppZChpbnB1dCwgbnVsbCwgbnVsbCwgb3B0aW9ucyk7XG4gIGVsc2UgaWYgKHRhZyA9PT0gJ2dlbnRpbWUnIHx8IHRhZyA9PT0gJ3V0Y3RpbWUnKVxuICAgIHJldHVybiB0aGlzLl9kZWNvZGVUaW1lKGlucHV0LCB0YWcsIG9wdGlvbnMpO1xuICBlbHNlIGlmICh0YWcgPT09ICdudWxsXycpXG4gICAgcmV0dXJuIHRoaXMuX2RlY29kZU51bGwoaW5wdXQsIG9wdGlvbnMpO1xuICBlbHNlIGlmICh0YWcgPT09ICdib29sJylcbiAgICByZXR1cm4gdGhpcy5fZGVjb2RlQm9vbChpbnB1dCwgb3B0aW9ucyk7XG4gIGVsc2UgaWYgKHRhZyA9PT0gJ29iakRlc2MnKVxuICAgIHJldHVybiB0aGlzLl9kZWNvZGVTdHIoaW5wdXQsIHRhZywgb3B0aW9ucyk7XG4gIGVsc2UgaWYgKHRhZyA9PT0gJ2ludCcgfHwgdGFnID09PSAnZW51bScpXG4gICAgcmV0dXJuIHRoaXMuX2RlY29kZUludChpbnB1dCwgc3RhdGUuYXJncyAmJiBzdGF0ZS5hcmdzWzBdLCBvcHRpb25zKTtcblxuICBpZiAoc3RhdGUudXNlICE9PSBudWxsKSB7XG4gICAgcmV0dXJuIHRoaXMuX2dldFVzZShzdGF0ZS51c2UsIGlucHV0Ll9yZXBvcnRlclN0YXRlLm9iailcbiAgICAgICAgLl9kZWNvZGUoaW5wdXQsIG9wdGlvbnMpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBpbnB1dC5lcnJvcigndW5rbm93biB0YWc6ICcgKyB0YWcpO1xuICB9XG59O1xuXG5Ob2RlLnByb3RvdHlwZS5fZ2V0VXNlID0gZnVuY3Rpb24gX2dldFVzZShlbnRpdHksIG9iaikge1xuXG4gIHZhciBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcbiAgLy8gQ3JlYXRlIGFsdGVyZWQgdXNlIGRlY29kZXIgaWYgaW1wbGljaXQgaXMgc2V0XG4gIHN0YXRlLnVzZURlY29kZXIgPSB0aGlzLl91c2UoZW50aXR5LCBvYmopO1xuICBhc3NlcnQoc3RhdGUudXNlRGVjb2Rlci5fYmFzZVN0YXRlLnBhcmVudCA9PT0gbnVsbCk7XG4gIHN0YXRlLnVzZURlY29kZXIgPSBzdGF0ZS51c2VEZWNvZGVyLl9iYXNlU3RhdGUuY2hpbGRyZW5bMF07XG4gIGlmIChzdGF0ZS5pbXBsaWNpdCAhPT0gc3RhdGUudXNlRGVjb2Rlci5fYmFzZVN0YXRlLmltcGxpY2l0KSB7XG4gICAgc3RhdGUudXNlRGVjb2RlciA9IHN0YXRlLnVzZURlY29kZXIuY2xvbmUoKTtcbiAgICBzdGF0ZS51c2VEZWNvZGVyLl9iYXNlU3RhdGUuaW1wbGljaXQgPSBzdGF0ZS5pbXBsaWNpdDtcbiAgfVxuICByZXR1cm4gc3RhdGUudXNlRGVjb2Rlcjtcbn07XG5cbk5vZGUucHJvdG90eXBlLl9kZWNvZGVDaG9pY2UgPSBmdW5jdGlvbiBkZWNvZGVDaG9pY2UoaW5wdXQsIG9wdGlvbnMpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuICB2YXIgcmVzdWx0ID0gbnVsbDtcbiAgdmFyIG1hdGNoID0gZmFsc2U7XG5cbiAgT2JqZWN0LmtleXMoc3RhdGUuY2hvaWNlKS5zb21lKGZ1bmN0aW9uKGtleSkge1xuICAgIHZhciBzYXZlID0gaW5wdXQuc2F2ZSgpO1xuICAgIHZhciBub2RlID0gc3RhdGUuY2hvaWNlW2tleV07XG4gICAgdHJ5IHtcbiAgICAgIHZhciB2YWx1ZSA9IG5vZGUuX2RlY29kZShpbnB1dCwgb3B0aW9ucyk7XG4gICAgICBpZiAoaW5wdXQuaXNFcnJvcih2YWx1ZSkpXG4gICAgICAgIHJldHVybiBmYWxzZTtcblxuICAgICAgcmVzdWx0ID0geyB0eXBlOiBrZXksIHZhbHVlOiB2YWx1ZSB9O1xuICAgICAgbWF0Y2ggPSB0cnVlO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGlucHV0LnJlc3RvcmUoc2F2ZSk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9LCB0aGlzKTtcblxuICBpZiAoIW1hdGNoKVxuICAgIHJldHVybiBpbnB1dC5lcnJvcignQ2hvaWNlIG5vdCBtYXRjaGVkJyk7XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbi8vXG4vLyBFbmNvZGluZ1xuLy9cblxuTm9kZS5wcm90b3R5cGUuX2NyZWF0ZUVuY29kZXJCdWZmZXIgPSBmdW5jdGlvbiBjcmVhdGVFbmNvZGVyQnVmZmVyKGRhdGEpIHtcbiAgcmV0dXJuIG5ldyBFbmNvZGVyQnVmZmVyKGRhdGEsIHRoaXMucmVwb3J0ZXIpO1xufTtcblxuTm9kZS5wcm90b3R5cGUuX2VuY29kZSA9IGZ1bmN0aW9uIGVuY29kZShkYXRhLCByZXBvcnRlciwgcGFyZW50KSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcbiAgaWYgKHN0YXRlWydkZWZhdWx0J10gIT09IG51bGwgJiYgc3RhdGVbJ2RlZmF1bHQnXSA9PT0gZGF0YSlcbiAgICByZXR1cm47XG5cbiAgdmFyIHJlc3VsdCA9IHRoaXMuX2VuY29kZVZhbHVlKGRhdGEsIHJlcG9ydGVyLCBwYXJlbnQpO1xuICBpZiAocmVzdWx0ID09PSB1bmRlZmluZWQpXG4gICAgcmV0dXJuO1xuXG4gIGlmICh0aGlzLl9za2lwRGVmYXVsdChyZXN1bHQsIHJlcG9ydGVyLCBwYXJlbnQpKVxuICAgIHJldHVybjtcblxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuTm9kZS5wcm90b3R5cGUuX2VuY29kZVZhbHVlID0gZnVuY3Rpb24gZW5jb2RlKGRhdGEsIHJlcG9ydGVyLCBwYXJlbnQpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuXG4gIC8vIERlY29kZSByb290IG5vZGVcbiAgaWYgKHN0YXRlLnBhcmVudCA9PT0gbnVsbClcbiAgICByZXR1cm4gc3RhdGUuY2hpbGRyZW5bMF0uX2VuY29kZShkYXRhLCByZXBvcnRlciB8fCBuZXcgUmVwb3J0ZXIoKSk7XG5cbiAgdmFyIHJlc3VsdCA9IG51bGw7XG5cbiAgLy8gU2V0IHJlcG9ydGVyIHRvIHNoYXJlIGl0IHdpdGggYSBjaGlsZCBjbGFzc1xuICB0aGlzLnJlcG9ydGVyID0gcmVwb3J0ZXI7XG5cbiAgLy8gQ2hlY2sgaWYgZGF0YSBpcyB0aGVyZVxuICBpZiAoc3RhdGUub3B0aW9uYWwgJiYgZGF0YSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgaWYgKHN0YXRlWydkZWZhdWx0J10gIT09IG51bGwpXG4gICAgICBkYXRhID0gc3RhdGVbJ2RlZmF1bHQnXVxuICAgIGVsc2VcbiAgICAgIHJldHVybjtcbiAgfVxuXG4gIC8vIEVuY29kZSBjaGlsZHJlbiBmaXJzdFxuICB2YXIgY29udGVudCA9IG51bGw7XG4gIHZhciBwcmltaXRpdmUgPSBmYWxzZTtcbiAgaWYgKHN0YXRlLmFueSkge1xuICAgIC8vIEFueXRoaW5nIHRoYXQgd2FzIGdpdmVuIGlzIHRyYW5zbGF0ZWQgdG8gYnVmZmVyXG4gICAgcmVzdWx0ID0gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihkYXRhKTtcbiAgfSBlbHNlIGlmIChzdGF0ZS5jaG9pY2UpIHtcbiAgICByZXN1bHQgPSB0aGlzLl9lbmNvZGVDaG9pY2UoZGF0YSwgcmVwb3J0ZXIpO1xuICB9IGVsc2UgaWYgKHN0YXRlLmNvbnRhaW5zKSB7XG4gICAgY29udGVudCA9IHRoaXMuX2dldFVzZShzdGF0ZS5jb250YWlucywgcGFyZW50KS5fZW5jb2RlKGRhdGEsIHJlcG9ydGVyKTtcbiAgICBwcmltaXRpdmUgPSB0cnVlO1xuICB9IGVsc2UgaWYgKHN0YXRlLmNoaWxkcmVuKSB7XG4gICAgY29udGVudCA9IHN0YXRlLmNoaWxkcmVuLm1hcChmdW5jdGlvbihjaGlsZCkge1xuICAgICAgaWYgKGNoaWxkLl9iYXNlU3RhdGUudGFnID09PSAnbnVsbF8nKVxuICAgICAgICByZXR1cm4gY2hpbGQuX2VuY29kZShudWxsLCByZXBvcnRlciwgZGF0YSk7XG5cbiAgICAgIGlmIChjaGlsZC5fYmFzZVN0YXRlLmtleSA9PT0gbnVsbClcbiAgICAgICAgcmV0dXJuIHJlcG9ydGVyLmVycm9yKCdDaGlsZCBzaG91bGQgaGF2ZSBhIGtleScpO1xuICAgICAgdmFyIHByZXZLZXkgPSByZXBvcnRlci5lbnRlcktleShjaGlsZC5fYmFzZVN0YXRlLmtleSk7XG5cbiAgICAgIGlmICh0eXBlb2YgZGF0YSAhPT0gJ29iamVjdCcpXG4gICAgICAgIHJldHVybiByZXBvcnRlci5lcnJvcignQ2hpbGQgZXhwZWN0ZWQsIGJ1dCBpbnB1dCBpcyBub3Qgb2JqZWN0Jyk7XG5cbiAgICAgIHZhciByZXMgPSBjaGlsZC5fZW5jb2RlKGRhdGFbY2hpbGQuX2Jhc2VTdGF0ZS5rZXldLCByZXBvcnRlciwgZGF0YSk7XG4gICAgICByZXBvcnRlci5sZWF2ZUtleShwcmV2S2V5KTtcblxuICAgICAgcmV0dXJuIHJlcztcbiAgICB9LCB0aGlzKS5maWx0ZXIoZnVuY3Rpb24oY2hpbGQpIHtcbiAgICAgIHJldHVybiBjaGlsZDtcbiAgICB9KTtcbiAgICBjb250ZW50ID0gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihjb250ZW50KTtcbiAgfSBlbHNlIHtcbiAgICBpZiAoc3RhdGUudGFnID09PSAnc2Vxb2YnIHx8IHN0YXRlLnRhZyA9PT0gJ3NldG9mJykge1xuICAgICAgLy8gVE9ETyhpbmR1dG55KTogdGhpcyBzaG91bGQgYmUgdGhyb3duIG9uIERTTCBsZXZlbFxuICAgICAgaWYgKCEoc3RhdGUuYXJncyAmJiBzdGF0ZS5hcmdzLmxlbmd0aCA9PT0gMSkpXG4gICAgICAgIHJldHVybiByZXBvcnRlci5lcnJvcignVG9vIG1hbnkgYXJncyBmb3IgOiAnICsgc3RhdGUudGFnKTtcblxuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGRhdGEpKVxuICAgICAgICByZXR1cm4gcmVwb3J0ZXIuZXJyb3IoJ3NlcW9mL3NldG9mLCBidXQgZGF0YSBpcyBub3QgQXJyYXknKTtcblxuICAgICAgdmFyIGNoaWxkID0gdGhpcy5jbG9uZSgpO1xuICAgICAgY2hpbGQuX2Jhc2VTdGF0ZS5pbXBsaWNpdCA9IG51bGw7XG4gICAgICBjb250ZW50ID0gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihkYXRhLm1hcChmdW5jdGlvbihpdGVtKSB7XG4gICAgICAgIHZhciBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcblxuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0VXNlKHN0YXRlLmFyZ3NbMF0sIGRhdGEpLl9lbmNvZGUoaXRlbSwgcmVwb3J0ZXIpO1xuICAgICAgfSwgY2hpbGQpKTtcbiAgICB9IGVsc2UgaWYgKHN0YXRlLnVzZSAhPT0gbnVsbCkge1xuICAgICAgcmVzdWx0ID0gdGhpcy5fZ2V0VXNlKHN0YXRlLnVzZSwgcGFyZW50KS5fZW5jb2RlKGRhdGEsIHJlcG9ydGVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29udGVudCA9IHRoaXMuX2VuY29kZVByaW1pdGl2ZShzdGF0ZS50YWcsIGRhdGEpO1xuICAgICAgcHJpbWl0aXZlID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICAvLyBFbmNvZGUgZGF0YSBpdHNlbGZcbiAgdmFyIHJlc3VsdDtcbiAgaWYgKCFzdGF0ZS5hbnkgJiYgc3RhdGUuY2hvaWNlID09PSBudWxsKSB7XG4gICAgdmFyIHRhZyA9IHN0YXRlLmltcGxpY2l0ICE9PSBudWxsID8gc3RhdGUuaW1wbGljaXQgOiBzdGF0ZS50YWc7XG4gICAgdmFyIGNscyA9IHN0YXRlLmltcGxpY2l0ID09PSBudWxsID8gJ3VuaXZlcnNhbCcgOiAnY29udGV4dCc7XG5cbiAgICBpZiAodGFnID09PSBudWxsKSB7XG4gICAgICBpZiAoc3RhdGUudXNlID09PSBudWxsKVxuICAgICAgICByZXBvcnRlci5lcnJvcignVGFnIGNvdWxkIGJlIG9tbWl0ZWQgb25seSBmb3IgLnVzZSgpJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChzdGF0ZS51c2UgPT09IG51bGwpXG4gICAgICAgIHJlc3VsdCA9IHRoaXMuX2VuY29kZUNvbXBvc2l0ZSh0YWcsIHByaW1pdGl2ZSwgY2xzLCBjb250ZW50KTtcbiAgICB9XG4gIH1cblxuICAvLyBXcmFwIGluIGV4cGxpY2l0XG4gIGlmIChzdGF0ZS5leHBsaWNpdCAhPT0gbnVsbClcbiAgICByZXN1bHQgPSB0aGlzLl9lbmNvZGVDb21wb3NpdGUoc3RhdGUuZXhwbGljaXQsIGZhbHNlLCAnY29udGV4dCcsIHJlc3VsdCk7XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbk5vZGUucHJvdG90eXBlLl9lbmNvZGVDaG9pY2UgPSBmdW5jdGlvbiBlbmNvZGVDaG9pY2UoZGF0YSwgcmVwb3J0ZXIpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuXG4gIHZhciBub2RlID0gc3RhdGUuY2hvaWNlW2RhdGEudHlwZV07XG4gIGlmICghbm9kZSkge1xuICAgIGFzc2VydChcbiAgICAgICAgZmFsc2UsXG4gICAgICAgIGRhdGEudHlwZSArICcgbm90IGZvdW5kIGluICcgK1xuICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoT2JqZWN0LmtleXMoc3RhdGUuY2hvaWNlKSkpO1xuICB9XG4gIHJldHVybiBub2RlLl9lbmNvZGUoZGF0YS52YWx1ZSwgcmVwb3J0ZXIpO1xufTtcblxuTm9kZS5wcm90b3R5cGUuX2VuY29kZVByaW1pdGl2ZSA9IGZ1bmN0aW9uIGVuY29kZVByaW1pdGl2ZSh0YWcsIGRhdGEpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fYmFzZVN0YXRlO1xuXG4gIGlmICgvc3RyJC8udGVzdCh0YWcpKVxuICAgIHJldHVybiB0aGlzLl9lbmNvZGVTdHIoZGF0YSwgdGFnKTtcbiAgZWxzZSBpZiAodGFnID09PSAnb2JqaWQnICYmIHN0YXRlLmFyZ3MpXG4gICAgcmV0dXJuIHRoaXMuX2VuY29kZU9iamlkKGRhdGEsIHN0YXRlLnJldmVyc2VBcmdzWzBdLCBzdGF0ZS5hcmdzWzFdKTtcbiAgZWxzZSBpZiAodGFnID09PSAnb2JqaWQnKVxuICAgIHJldHVybiB0aGlzLl9lbmNvZGVPYmppZChkYXRhLCBudWxsLCBudWxsKTtcbiAgZWxzZSBpZiAodGFnID09PSAnZ2VudGltZScgfHwgdGFnID09PSAndXRjdGltZScpXG4gICAgcmV0dXJuIHRoaXMuX2VuY29kZVRpbWUoZGF0YSwgdGFnKTtcbiAgZWxzZSBpZiAodGFnID09PSAnbnVsbF8nKVxuICAgIHJldHVybiB0aGlzLl9lbmNvZGVOdWxsKCk7XG4gIGVsc2UgaWYgKHRhZyA9PT0gJ2ludCcgfHwgdGFnID09PSAnZW51bScpXG4gICAgcmV0dXJuIHRoaXMuX2VuY29kZUludChkYXRhLCBzdGF0ZS5hcmdzICYmIHN0YXRlLnJldmVyc2VBcmdzWzBdKTtcbiAgZWxzZSBpZiAodGFnID09PSAnYm9vbCcpXG4gICAgcmV0dXJuIHRoaXMuX2VuY29kZUJvb2woZGF0YSk7XG4gIGVsc2UgaWYgKHRhZyA9PT0gJ29iakRlc2MnKVxuICAgIHJldHVybiB0aGlzLl9lbmNvZGVTdHIoZGF0YSwgdGFnKTtcbiAgZWxzZVxuICAgIHRocm93IG5ldyBFcnJvcignVW5zdXBwb3J0ZWQgdGFnOiAnICsgdGFnKTtcbn07XG5cbk5vZGUucHJvdG90eXBlLl9pc051bXN0ciA9IGZ1bmN0aW9uIGlzTnVtc3RyKHN0cikge1xuICByZXR1cm4gL15bMC05IF0qJC8udGVzdChzdHIpO1xufTtcblxuTm9kZS5wcm90b3R5cGUuX2lzUHJpbnRzdHIgPSBmdW5jdGlvbiBpc1ByaW50c3RyKHN0cikge1xuICByZXR1cm4gL15bQS1aYS16MC05ICdcXChcXClcXCssXFwtXFwuXFwvOj1cXD9dKiQvLnRlc3Qoc3RyKTtcbn07XG4iLCJ2YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpO1xuXG5mdW5jdGlvbiBSZXBvcnRlcihvcHRpb25zKSB7XG4gIHRoaXMuX3JlcG9ydGVyU3RhdGUgPSB7XG4gICAgb2JqOiBudWxsLFxuICAgIHBhdGg6IFtdLFxuICAgIG9wdGlvbnM6IG9wdGlvbnMgfHwge30sXG4gICAgZXJyb3JzOiBbXVxuICB9O1xufVxuZXhwb3J0cy5SZXBvcnRlciA9IFJlcG9ydGVyO1xuXG5SZXBvcnRlci5wcm90b3R5cGUuaXNFcnJvciA9IGZ1bmN0aW9uIGlzRXJyb3Iob2JqKSB7XG4gIHJldHVybiBvYmogaW5zdGFuY2VvZiBSZXBvcnRlckVycm9yO1xufTtcblxuUmVwb3J0ZXIucHJvdG90eXBlLnNhdmUgPSBmdW5jdGlvbiBzYXZlKCkge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9yZXBvcnRlclN0YXRlO1xuXG4gIHJldHVybiB7IG9iajogc3RhdGUub2JqLCBwYXRoTGVuOiBzdGF0ZS5wYXRoLmxlbmd0aCB9O1xufTtcblxuUmVwb3J0ZXIucHJvdG90eXBlLnJlc3RvcmUgPSBmdW5jdGlvbiByZXN0b3JlKGRhdGEpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fcmVwb3J0ZXJTdGF0ZTtcblxuICBzdGF0ZS5vYmogPSBkYXRhLm9iajtcbiAgc3RhdGUucGF0aCA9IHN0YXRlLnBhdGguc2xpY2UoMCwgZGF0YS5wYXRoTGVuKTtcbn07XG5cblJlcG9ydGVyLnByb3RvdHlwZS5lbnRlcktleSA9IGZ1bmN0aW9uIGVudGVyS2V5KGtleSkge1xuICByZXR1cm4gdGhpcy5fcmVwb3J0ZXJTdGF0ZS5wYXRoLnB1c2goa2V5KTtcbn07XG5cblJlcG9ydGVyLnByb3RvdHlwZS5leGl0S2V5ID0gZnVuY3Rpb24gZXhpdEtleShpbmRleCkge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9yZXBvcnRlclN0YXRlO1xuXG4gIHN0YXRlLnBhdGggPSBzdGF0ZS5wYXRoLnNsaWNlKDAsIGluZGV4IC0gMSk7XG59O1xuXG5SZXBvcnRlci5wcm90b3R5cGUubGVhdmVLZXkgPSBmdW5jdGlvbiBsZWF2ZUtleShpbmRleCwga2V5LCB2YWx1ZSkge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9yZXBvcnRlclN0YXRlO1xuXG4gIHRoaXMuZXhpdEtleShpbmRleCk7XG4gIGlmIChzdGF0ZS5vYmogIT09IG51bGwpXG4gICAgc3RhdGUub2JqW2tleV0gPSB2YWx1ZTtcbn07XG5cblJlcG9ydGVyLnByb3RvdHlwZS5wYXRoID0gZnVuY3Rpb24gcGF0aCgpIHtcbiAgcmV0dXJuIHRoaXMuX3JlcG9ydGVyU3RhdGUucGF0aC5qb2luKCcvJyk7XG59O1xuXG5SZXBvcnRlci5wcm90b3R5cGUuZW50ZXJPYmplY3QgPSBmdW5jdGlvbiBlbnRlck9iamVjdCgpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fcmVwb3J0ZXJTdGF0ZTtcblxuICB2YXIgcHJldiA9IHN0YXRlLm9iajtcbiAgc3RhdGUub2JqID0ge307XG4gIHJldHVybiBwcmV2O1xufTtcblxuUmVwb3J0ZXIucHJvdG90eXBlLmxlYXZlT2JqZWN0ID0gZnVuY3Rpb24gbGVhdmVPYmplY3QocHJldikge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9yZXBvcnRlclN0YXRlO1xuXG4gIHZhciBub3cgPSBzdGF0ZS5vYmo7XG4gIHN0YXRlLm9iaiA9IHByZXY7XG4gIHJldHVybiBub3c7XG59O1xuXG5SZXBvcnRlci5wcm90b3R5cGUuZXJyb3IgPSBmdW5jdGlvbiBlcnJvcihtc2cpIHtcbiAgdmFyIGVycjtcbiAgdmFyIHN0YXRlID0gdGhpcy5fcmVwb3J0ZXJTdGF0ZTtcblxuICB2YXIgaW5oZXJpdGVkID0gbXNnIGluc3RhbmNlb2YgUmVwb3J0ZXJFcnJvcjtcbiAgaWYgKGluaGVyaXRlZCkge1xuICAgIGVyciA9IG1zZztcbiAgfSBlbHNlIHtcbiAgICBlcnIgPSBuZXcgUmVwb3J0ZXJFcnJvcihzdGF0ZS5wYXRoLm1hcChmdW5jdGlvbihlbGVtKSB7XG4gICAgICByZXR1cm4gJ1snICsgSlNPTi5zdHJpbmdpZnkoZWxlbSkgKyAnXSc7XG4gICAgfSkuam9pbignJyksIG1zZy5tZXNzYWdlIHx8IG1zZywgbXNnLnN0YWNrKTtcbiAgfVxuXG4gIGlmICghc3RhdGUub3B0aW9ucy5wYXJ0aWFsKVxuICAgIHRocm93IGVycjtcblxuICBpZiAoIWluaGVyaXRlZClcbiAgICBzdGF0ZS5lcnJvcnMucHVzaChlcnIpO1xuXG4gIHJldHVybiBlcnI7XG59O1xuXG5SZXBvcnRlci5wcm90b3R5cGUud3JhcFJlc3VsdCA9IGZ1bmN0aW9uIHdyYXBSZXN1bHQocmVzdWx0KSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX3JlcG9ydGVyU3RhdGU7XG4gIGlmICghc3RhdGUub3B0aW9ucy5wYXJ0aWFsKVxuICAgIHJldHVybiByZXN1bHQ7XG5cbiAgcmV0dXJuIHtcbiAgICByZXN1bHQ6IHRoaXMuaXNFcnJvcihyZXN1bHQpID8gbnVsbCA6IHJlc3VsdCxcbiAgICBlcnJvcnM6IHN0YXRlLmVycm9yc1xuICB9O1xufTtcblxuZnVuY3Rpb24gUmVwb3J0ZXJFcnJvcihwYXRoLCBtc2cpIHtcbiAgdGhpcy5wYXRoID0gcGF0aDtcbiAgdGhpcy5yZXRocm93KG1zZyk7XG59O1xuaW5oZXJpdHMoUmVwb3J0ZXJFcnJvciwgRXJyb3IpO1xuXG5SZXBvcnRlckVycm9yLnByb3RvdHlwZS5yZXRocm93ID0gZnVuY3Rpb24gcmV0aHJvdyhtc2cpIHtcbiAgdGhpcy5tZXNzYWdlID0gbXNnICsgJyBhdDogJyArICh0aGlzLnBhdGggfHwgJyhzaGFsbG93KScpO1xuICBpZiAoRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UpXG4gICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UodGhpcywgUmVwb3J0ZXJFcnJvcik7XG5cbiAgaWYgKCF0aGlzLnN0YWNrKSB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIElFIG9ubHkgYWRkcyBzdGFjayB3aGVuIHRocm93blxuICAgICAgdGhyb3cgbmV3IEVycm9yKHRoaXMubWVzc2FnZSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5zdGFjayA9IGUuc3RhY2s7XG4gICAgfVxuICB9XG4gIHJldHVybiB0aGlzO1xufTtcbiIsInZhciBjb25zdGFudHMgPSByZXF1aXJlKCcuLi9jb25zdGFudHMnKTtcblxuZXhwb3J0cy50YWdDbGFzcyA9IHtcbiAgMDogJ3VuaXZlcnNhbCcsXG4gIDE6ICdhcHBsaWNhdGlvbicsXG4gIDI6ICdjb250ZXh0JyxcbiAgMzogJ3ByaXZhdGUnXG59O1xuZXhwb3J0cy50YWdDbGFzc0J5TmFtZSA9IGNvbnN0YW50cy5fcmV2ZXJzZShleHBvcnRzLnRhZ0NsYXNzKTtcblxuZXhwb3J0cy50YWcgPSB7XG4gIDB4MDA6ICdlbmQnLFxuICAweDAxOiAnYm9vbCcsXG4gIDB4MDI6ICdpbnQnLFxuICAweDAzOiAnYml0c3RyJyxcbiAgMHgwNDogJ29jdHN0cicsXG4gIDB4MDU6ICdudWxsXycsXG4gIDB4MDY6ICdvYmppZCcsXG4gIDB4MDc6ICdvYmpEZXNjJyxcbiAgMHgwODogJ2V4dGVybmFsJyxcbiAgMHgwOTogJ3JlYWwnLFxuICAweDBhOiAnZW51bScsXG4gIDB4MGI6ICdlbWJlZCcsXG4gIDB4MGM6ICd1dGY4c3RyJyxcbiAgMHgwZDogJ3JlbGF0aXZlT2lkJyxcbiAgMHgxMDogJ3NlcScsXG4gIDB4MTE6ICdzZXQnLFxuICAweDEyOiAnbnVtc3RyJyxcbiAgMHgxMzogJ3ByaW50c3RyJyxcbiAgMHgxNDogJ3Q2MXN0cicsXG4gIDB4MTU6ICd2aWRlb3N0cicsXG4gIDB4MTY6ICdpYTVzdHInLFxuICAweDE3OiAndXRjdGltZScsXG4gIDB4MTg6ICdnZW50aW1lJyxcbiAgMHgxOTogJ2dyYXBoc3RyJyxcbiAgMHgxYTogJ2lzbzY0NnN0cicsXG4gIDB4MWI6ICdnZW5zdHInLFxuICAweDFjOiAndW5pc3RyJyxcbiAgMHgxZDogJ2NoYXJzdHInLFxuICAweDFlOiAnYm1wc3RyJ1xufTtcbmV4cG9ydHMudGFnQnlOYW1lID0gY29uc3RhbnRzLl9yZXZlcnNlKGV4cG9ydHMudGFnKTtcbiIsInZhciBjb25zdGFudHMgPSBleHBvcnRzO1xuXG4vLyBIZWxwZXJcbmNvbnN0YW50cy5fcmV2ZXJzZSA9IGZ1bmN0aW9uIHJldmVyc2UobWFwKSB7XG4gIHZhciByZXMgPSB7fTtcblxuICBPYmplY3Qua2V5cyhtYXApLmZvckVhY2goZnVuY3Rpb24oa2V5KSB7XG4gICAgLy8gQ29udmVydCBrZXkgdG8gaW50ZWdlciBpZiBpdCBpcyBzdHJpbmdpZmllZFxuICAgIGlmICgoa2V5IHwgMCkgPT0ga2V5KVxuICAgICAga2V5ID0ga2V5IHwgMDtcblxuICAgIHZhciB2YWx1ZSA9IG1hcFtrZXldO1xuICAgIHJlc1t2YWx1ZV0gPSBrZXk7XG4gIH0pO1xuXG4gIHJldHVybiByZXM7XG59O1xuXG5jb25zdGFudHMuZGVyID0gcmVxdWlyZSgnLi9kZXInKTtcbiIsInZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJyk7XG5cbnZhciBhc24xID0gcmVxdWlyZSgnLi4vLi4vYXNuMScpO1xudmFyIGJhc2UgPSBhc24xLmJhc2U7XG52YXIgYmlnbnVtID0gYXNuMS5iaWdudW07XG5cbi8vIEltcG9ydCBERVIgY29uc3RhbnRzXG52YXIgZGVyID0gYXNuMS5jb25zdGFudHMuZGVyO1xuXG5mdW5jdGlvbiBERVJEZWNvZGVyKGVudGl0eSkge1xuICB0aGlzLmVuYyA9ICdkZXInO1xuICB0aGlzLm5hbWUgPSBlbnRpdHkubmFtZTtcbiAgdGhpcy5lbnRpdHkgPSBlbnRpdHk7XG5cbiAgLy8gQ29uc3RydWN0IGJhc2UgdHJlZVxuICB0aGlzLnRyZWUgPSBuZXcgREVSTm9kZSgpO1xuICB0aGlzLnRyZWUuX2luaXQoZW50aXR5LmJvZHkpO1xufTtcbm1vZHVsZS5leHBvcnRzID0gREVSRGVjb2RlcjtcblxuREVSRGVjb2Rlci5wcm90b3R5cGUuZGVjb2RlID0gZnVuY3Rpb24gZGVjb2RlKGRhdGEsIG9wdGlvbnMpIHtcbiAgaWYgKCEoZGF0YSBpbnN0YW5jZW9mIGJhc2UuRGVjb2RlckJ1ZmZlcikpXG4gICAgZGF0YSA9IG5ldyBiYXNlLkRlY29kZXJCdWZmZXIoZGF0YSwgb3B0aW9ucyk7XG5cbiAgcmV0dXJuIHRoaXMudHJlZS5fZGVjb2RlKGRhdGEsIG9wdGlvbnMpO1xufTtcblxuLy8gVHJlZSBtZXRob2RzXG5cbmZ1bmN0aW9uIERFUk5vZGUocGFyZW50KSB7XG4gIGJhc2UuTm9kZS5jYWxsKHRoaXMsICdkZXInLCBwYXJlbnQpO1xufVxuaW5oZXJpdHMoREVSTm9kZSwgYmFzZS5Ob2RlKTtcblxuREVSTm9kZS5wcm90b3R5cGUuX3BlZWtUYWcgPSBmdW5jdGlvbiBwZWVrVGFnKGJ1ZmZlciwgdGFnLCBhbnkpIHtcbiAgaWYgKGJ1ZmZlci5pc0VtcHR5KCkpXG4gICAgcmV0dXJuIGZhbHNlO1xuXG4gIHZhciBzdGF0ZSA9IGJ1ZmZlci5zYXZlKCk7XG4gIHZhciBkZWNvZGVkVGFnID0gZGVyRGVjb2RlVGFnKGJ1ZmZlciwgJ0ZhaWxlZCB0byBwZWVrIHRhZzogXCInICsgdGFnICsgJ1wiJyk7XG4gIGlmIChidWZmZXIuaXNFcnJvcihkZWNvZGVkVGFnKSlcbiAgICByZXR1cm4gZGVjb2RlZFRhZztcblxuICBidWZmZXIucmVzdG9yZShzdGF0ZSk7XG5cbiAgcmV0dXJuIGRlY29kZWRUYWcudGFnID09PSB0YWcgfHwgZGVjb2RlZFRhZy50YWdTdHIgPT09IHRhZyB8fFxuICAgIChkZWNvZGVkVGFnLnRhZ1N0ciArICdvZicpID09PSB0YWcgfHwgYW55O1xufTtcblxuREVSTm9kZS5wcm90b3R5cGUuX2RlY29kZVRhZyA9IGZ1bmN0aW9uIGRlY29kZVRhZyhidWZmZXIsIHRhZywgYW55KSB7XG4gIHZhciBkZWNvZGVkVGFnID0gZGVyRGVjb2RlVGFnKGJ1ZmZlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0ZhaWxlZCB0byBkZWNvZGUgdGFnIG9mIFwiJyArIHRhZyArICdcIicpO1xuICBpZiAoYnVmZmVyLmlzRXJyb3IoZGVjb2RlZFRhZykpXG4gICAgcmV0dXJuIGRlY29kZWRUYWc7XG5cbiAgdmFyIGxlbiA9IGRlckRlY29kZUxlbihidWZmZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgZGVjb2RlZFRhZy5wcmltaXRpdmUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgJ0ZhaWxlZCB0byBnZXQgbGVuZ3RoIG9mIFwiJyArIHRhZyArICdcIicpO1xuXG4gIC8vIEZhaWx1cmVcbiAgaWYgKGJ1ZmZlci5pc0Vycm9yKGxlbikpXG4gICAgcmV0dXJuIGxlbjtcblxuICBpZiAoIWFueSAmJlxuICAgICAgZGVjb2RlZFRhZy50YWcgIT09IHRhZyAmJlxuICAgICAgZGVjb2RlZFRhZy50YWdTdHIgIT09IHRhZyAmJlxuICAgICAgZGVjb2RlZFRhZy50YWdTdHIgKyAnb2YnICE9PSB0YWcpIHtcbiAgICByZXR1cm4gYnVmZmVyLmVycm9yKCdGYWlsZWQgdG8gbWF0Y2ggdGFnOiBcIicgKyB0YWcgKyAnXCInKTtcbiAgfVxuXG4gIGlmIChkZWNvZGVkVGFnLnByaW1pdGl2ZSB8fCBsZW4gIT09IG51bGwpXG4gICAgcmV0dXJuIGJ1ZmZlci5za2lwKGxlbiwgJ0ZhaWxlZCB0byBtYXRjaCBib2R5IG9mOiBcIicgKyB0YWcgKyAnXCInKTtcblxuICAvLyBJbmRlZmluaXRlIGxlbmd0aC4uLiBmaW5kIEVORCB0YWdcbiAgdmFyIHN0YXRlID0gYnVmZmVyLnNhdmUoKTtcbiAgdmFyIHJlcyA9IHRoaXMuX3NraXBVbnRpbEVuZChcbiAgICAgIGJ1ZmZlcixcbiAgICAgICdGYWlsZWQgdG8gc2tpcCBpbmRlZmluaXRlIGxlbmd0aCBib2R5OiBcIicgKyB0aGlzLnRhZyArICdcIicpO1xuICBpZiAoYnVmZmVyLmlzRXJyb3IocmVzKSlcbiAgICByZXR1cm4gcmVzO1xuXG4gIGxlbiA9IGJ1ZmZlci5vZmZzZXQgLSBzdGF0ZS5vZmZzZXQ7XG4gIGJ1ZmZlci5yZXN0b3JlKHN0YXRlKTtcbiAgcmV0dXJuIGJ1ZmZlci5za2lwKGxlbiwgJ0ZhaWxlZCB0byBtYXRjaCBib2R5IG9mOiBcIicgKyB0YWcgKyAnXCInKTtcbn07XG5cbkRFUk5vZGUucHJvdG90eXBlLl9za2lwVW50aWxFbmQgPSBmdW5jdGlvbiBza2lwVW50aWxFbmQoYnVmZmVyLCBmYWlsKSB7XG4gIHdoaWxlICh0cnVlKSB7XG4gICAgdmFyIHRhZyA9IGRlckRlY29kZVRhZyhidWZmZXIsIGZhaWwpO1xuICAgIGlmIChidWZmZXIuaXNFcnJvcih0YWcpKVxuICAgICAgcmV0dXJuIHRhZztcbiAgICB2YXIgbGVuID0gZGVyRGVjb2RlTGVuKGJ1ZmZlciwgdGFnLnByaW1pdGl2ZSwgZmFpbCk7XG4gICAgaWYgKGJ1ZmZlci5pc0Vycm9yKGxlbikpXG4gICAgICByZXR1cm4gbGVuO1xuXG4gICAgdmFyIHJlcztcbiAgICBpZiAodGFnLnByaW1pdGl2ZSB8fCBsZW4gIT09IG51bGwpXG4gICAgICByZXMgPSBidWZmZXIuc2tpcChsZW4pXG4gICAgZWxzZVxuICAgICAgcmVzID0gdGhpcy5fc2tpcFVudGlsRW5kKGJ1ZmZlciwgZmFpbCk7XG5cbiAgICAvLyBGYWlsdXJlXG4gICAgaWYgKGJ1ZmZlci5pc0Vycm9yKHJlcykpXG4gICAgICByZXR1cm4gcmVzO1xuXG4gICAgaWYgKHRhZy50YWdTdHIgPT09ICdlbmQnKVxuICAgICAgYnJlYWs7XG4gIH1cbn07XG5cbkRFUk5vZGUucHJvdG90eXBlLl9kZWNvZGVMaXN0ID0gZnVuY3Rpb24gZGVjb2RlTGlzdChidWZmZXIsIHRhZywgZGVjb2RlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zKSB7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgd2hpbGUgKCFidWZmZXIuaXNFbXB0eSgpKSB7XG4gICAgdmFyIHBvc3NpYmxlRW5kID0gdGhpcy5fcGVla1RhZyhidWZmZXIsICdlbmQnKTtcbiAgICBpZiAoYnVmZmVyLmlzRXJyb3IocG9zc2libGVFbmQpKVxuICAgICAgcmV0dXJuIHBvc3NpYmxlRW5kO1xuXG4gICAgdmFyIHJlcyA9IGRlY29kZXIuZGVjb2RlKGJ1ZmZlciwgJ2RlcicsIG9wdGlvbnMpO1xuICAgIGlmIChidWZmZXIuaXNFcnJvcihyZXMpICYmIHBvc3NpYmxlRW5kKVxuICAgICAgYnJlYWs7XG4gICAgcmVzdWx0LnB1c2gocmVzKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuREVSTm9kZS5wcm90b3R5cGUuX2RlY29kZVN0ciA9IGZ1bmN0aW9uIGRlY29kZVN0cihidWZmZXIsIHRhZykge1xuICBpZiAodGFnID09PSAnYml0c3RyJykge1xuICAgIHZhciB1bnVzZWQgPSBidWZmZXIucmVhZFVJbnQ4KCk7XG4gICAgaWYgKGJ1ZmZlci5pc0Vycm9yKHVudXNlZCkpXG4gICAgICByZXR1cm4gdW51c2VkO1xuICAgIHJldHVybiB7IHVudXNlZDogdW51c2VkLCBkYXRhOiBidWZmZXIucmF3KCkgfTtcbiAgfSBlbHNlIGlmICh0YWcgPT09ICdibXBzdHInKSB7XG4gICAgdmFyIHJhdyA9IGJ1ZmZlci5yYXcoKTtcbiAgICBpZiAocmF3Lmxlbmd0aCAlIDIgPT09IDEpXG4gICAgICByZXR1cm4gYnVmZmVyLmVycm9yKCdEZWNvZGluZyBvZiBzdHJpbmcgdHlwZTogYm1wc3RyIGxlbmd0aCBtaXNtYXRjaCcpO1xuXG4gICAgdmFyIHN0ciA9ICcnO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmF3Lmxlbmd0aCAvIDI7IGkrKykge1xuICAgICAgc3RyICs9IFN0cmluZy5mcm9tQ2hhckNvZGUocmF3LnJlYWRVSW50MTZCRShpICogMikpO1xuICAgIH1cbiAgICByZXR1cm4gc3RyO1xuICB9IGVsc2UgaWYgKHRhZyA9PT0gJ251bXN0cicpIHtcbiAgICB2YXIgbnVtc3RyID0gYnVmZmVyLnJhdygpLnRvU3RyaW5nKCdhc2NpaScpO1xuICAgIGlmICghdGhpcy5faXNOdW1zdHIobnVtc3RyKSkge1xuICAgICAgcmV0dXJuIGJ1ZmZlci5lcnJvcignRGVjb2Rpbmcgb2Ygc3RyaW5nIHR5cGU6ICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAnbnVtc3RyIHVuc3VwcG9ydGVkIGNoYXJhY3RlcnMnKTtcbiAgICB9XG4gICAgcmV0dXJuIG51bXN0cjtcbiAgfSBlbHNlIGlmICh0YWcgPT09ICdvY3RzdHInKSB7XG4gICAgcmV0dXJuIGJ1ZmZlci5yYXcoKTtcbiAgfSBlbHNlIGlmICh0YWcgPT09ICdvYmpEZXNjJykge1xuICAgIHJldHVybiBidWZmZXIucmF3KCk7XG4gIH0gZWxzZSBpZiAodGFnID09PSAncHJpbnRzdHInKSB7XG4gICAgdmFyIHByaW50c3RyID0gYnVmZmVyLnJhdygpLnRvU3RyaW5nKCdhc2NpaScpO1xuICAgIGlmICghdGhpcy5faXNQcmludHN0cihwcmludHN0cikpIHtcbiAgICAgIHJldHVybiBidWZmZXIuZXJyb3IoJ0RlY29kaW5nIG9mIHN0cmluZyB0eXBlOiAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ByaW50c3RyIHVuc3VwcG9ydGVkIGNoYXJhY3RlcnMnKTtcbiAgICB9XG4gICAgcmV0dXJuIHByaW50c3RyO1xuICB9IGVsc2UgaWYgKC9zdHIkLy50ZXN0KHRhZykpIHtcbiAgICByZXR1cm4gYnVmZmVyLnJhdygpLnRvU3RyaW5nKCk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGJ1ZmZlci5lcnJvcignRGVjb2Rpbmcgb2Ygc3RyaW5nIHR5cGU6ICcgKyB0YWcgKyAnIHVuc3VwcG9ydGVkJyk7XG4gIH1cbn07XG5cbkRFUk5vZGUucHJvdG90eXBlLl9kZWNvZGVPYmppZCA9IGZ1bmN0aW9uIGRlY29kZU9iamlkKGJ1ZmZlciwgdmFsdWVzLCByZWxhdGl2ZSkge1xuICB2YXIgcmVzdWx0O1xuICB2YXIgaWRlbnRpZmllcnMgPSBbXTtcbiAgdmFyIGlkZW50ID0gMDtcbiAgd2hpbGUgKCFidWZmZXIuaXNFbXB0eSgpKSB7XG4gICAgdmFyIHN1YmlkZW50ID0gYnVmZmVyLnJlYWRVSW50OCgpO1xuICAgIGlkZW50IDw8PSA3O1xuICAgIGlkZW50IHw9IHN1YmlkZW50ICYgMHg3ZjtcbiAgICBpZiAoKHN1YmlkZW50ICYgMHg4MCkgPT09IDApIHtcbiAgICAgIGlkZW50aWZpZXJzLnB1c2goaWRlbnQpO1xuICAgICAgaWRlbnQgPSAwO1xuICAgIH1cbiAgfVxuICBpZiAoc3ViaWRlbnQgJiAweDgwKVxuICAgIGlkZW50aWZpZXJzLnB1c2goaWRlbnQpO1xuXG4gIHZhciBmaXJzdCA9IChpZGVudGlmaWVyc1swXSAvIDQwKSB8IDA7XG4gIHZhciBzZWNvbmQgPSBpZGVudGlmaWVyc1swXSAlIDQwO1xuXG4gIGlmIChyZWxhdGl2ZSlcbiAgICByZXN1bHQgPSBpZGVudGlmaWVycztcbiAgZWxzZVxuICAgIHJlc3VsdCA9IFtmaXJzdCwgc2Vjb25kXS5jb25jYXQoaWRlbnRpZmllcnMuc2xpY2UoMSkpO1xuXG4gIGlmICh2YWx1ZXMpIHtcbiAgICB2YXIgdG1wID0gdmFsdWVzW3Jlc3VsdC5qb2luKCcgJyldO1xuICAgIGlmICh0bXAgPT09IHVuZGVmaW5lZClcbiAgICAgIHRtcCA9IHZhbHVlc1tyZXN1bHQuam9pbignLicpXTtcbiAgICBpZiAodG1wICE9PSB1bmRlZmluZWQpXG4gICAgICByZXN1bHQgPSB0bXA7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuREVSTm9kZS5wcm90b3R5cGUuX2RlY29kZVRpbWUgPSBmdW5jdGlvbiBkZWNvZGVUaW1lKGJ1ZmZlciwgdGFnKSB7XG4gIHZhciBzdHIgPSBidWZmZXIucmF3KCkudG9TdHJpbmcoKTtcbiAgaWYgKHRhZyA9PT0gJ2dlbnRpbWUnKSB7XG4gICAgdmFyIHllYXIgPSBzdHIuc2xpY2UoMCwgNCkgfCAwO1xuICAgIHZhciBtb24gPSBzdHIuc2xpY2UoNCwgNikgfCAwO1xuICAgIHZhciBkYXkgPSBzdHIuc2xpY2UoNiwgOCkgfCAwO1xuICAgIHZhciBob3VyID0gc3RyLnNsaWNlKDgsIDEwKSB8IDA7XG4gICAgdmFyIG1pbiA9IHN0ci5zbGljZSgxMCwgMTIpIHwgMDtcbiAgICB2YXIgc2VjID0gc3RyLnNsaWNlKDEyLCAxNCkgfCAwO1xuICB9IGVsc2UgaWYgKHRhZyA9PT0gJ3V0Y3RpbWUnKSB7XG4gICAgdmFyIHllYXIgPSBzdHIuc2xpY2UoMCwgMikgfCAwO1xuICAgIHZhciBtb24gPSBzdHIuc2xpY2UoMiwgNCkgfCAwO1xuICAgIHZhciBkYXkgPSBzdHIuc2xpY2UoNCwgNikgfCAwO1xuICAgIHZhciBob3VyID0gc3RyLnNsaWNlKDYsIDgpIHwgMDtcbiAgICB2YXIgbWluID0gc3RyLnNsaWNlKDgsIDEwKSB8IDA7XG4gICAgdmFyIHNlYyA9IHN0ci5zbGljZSgxMCwgMTIpIHwgMDtcbiAgICBpZiAoeWVhciA8IDcwKVxuICAgICAgeWVhciA9IDIwMDAgKyB5ZWFyO1xuICAgIGVsc2VcbiAgICAgIHllYXIgPSAxOTAwICsgeWVhcjtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gYnVmZmVyLmVycm9yKCdEZWNvZGluZyAnICsgdGFnICsgJyB0aW1lIGlzIG5vdCBzdXBwb3J0ZWQgeWV0Jyk7XG4gIH1cblxuICByZXR1cm4gRGF0ZS5VVEMoeWVhciwgbW9uIC0gMSwgZGF5LCBob3VyLCBtaW4sIHNlYywgMCk7XG59O1xuXG5ERVJOb2RlLnByb3RvdHlwZS5fZGVjb2RlTnVsbCA9IGZ1bmN0aW9uIGRlY29kZU51bGwoYnVmZmVyKSB7XG4gIHJldHVybiBudWxsO1xufTtcblxuREVSTm9kZS5wcm90b3R5cGUuX2RlY29kZUJvb2wgPSBmdW5jdGlvbiBkZWNvZGVCb29sKGJ1ZmZlcikge1xuICB2YXIgcmVzID0gYnVmZmVyLnJlYWRVSW50OCgpO1xuICBpZiAoYnVmZmVyLmlzRXJyb3IocmVzKSlcbiAgICByZXR1cm4gcmVzO1xuICBlbHNlXG4gICAgcmV0dXJuIHJlcyAhPT0gMDtcbn07XG5cbkRFUk5vZGUucHJvdG90eXBlLl9kZWNvZGVJbnQgPSBmdW5jdGlvbiBkZWNvZGVJbnQoYnVmZmVyLCB2YWx1ZXMpIHtcbiAgLy8gQmlnaW50LCByZXR1cm4gYXMgaXQgaXMgKGFzc3VtZSBiaWcgZW5kaWFuKVxuICB2YXIgcmF3ID0gYnVmZmVyLnJhdygpO1xuICB2YXIgcmVzID0gbmV3IGJpZ251bShyYXcpO1xuXG4gIGlmICh2YWx1ZXMpXG4gICAgcmVzID0gdmFsdWVzW3Jlcy50b1N0cmluZygxMCldIHx8IHJlcztcblxuICByZXR1cm4gcmVzO1xufTtcblxuREVSTm9kZS5wcm90b3R5cGUuX3VzZSA9IGZ1bmN0aW9uIHVzZShlbnRpdHksIG9iaikge1xuICBpZiAodHlwZW9mIGVudGl0eSA9PT0gJ2Z1bmN0aW9uJylcbiAgICBlbnRpdHkgPSBlbnRpdHkob2JqKTtcbiAgcmV0dXJuIGVudGl0eS5fZ2V0RGVjb2RlcignZGVyJykudHJlZTtcbn07XG5cbi8vIFV0aWxpdHkgbWV0aG9kc1xuXG5mdW5jdGlvbiBkZXJEZWNvZGVUYWcoYnVmLCBmYWlsKSB7XG4gIHZhciB0YWcgPSBidWYucmVhZFVJbnQ4KGZhaWwpO1xuICBpZiAoYnVmLmlzRXJyb3IodGFnKSlcbiAgICByZXR1cm4gdGFnO1xuXG4gIHZhciBjbHMgPSBkZXIudGFnQ2xhc3NbdGFnID4+IDZdO1xuICB2YXIgcHJpbWl0aXZlID0gKHRhZyAmIDB4MjApID09PSAwO1xuXG4gIC8vIE11bHRpLW9jdGV0IHRhZyAtIGxvYWRcbiAgaWYgKCh0YWcgJiAweDFmKSA9PT0gMHgxZikge1xuICAgIHZhciBvY3QgPSB0YWc7XG4gICAgdGFnID0gMDtcbiAgICB3aGlsZSAoKG9jdCAmIDB4ODApID09PSAweDgwKSB7XG4gICAgICBvY3QgPSBidWYucmVhZFVJbnQ4KGZhaWwpO1xuICAgICAgaWYgKGJ1Zi5pc0Vycm9yKG9jdCkpXG4gICAgICAgIHJldHVybiBvY3Q7XG5cbiAgICAgIHRhZyA8PD0gNztcbiAgICAgIHRhZyB8PSBvY3QgJiAweDdmO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB0YWcgJj0gMHgxZjtcbiAgfVxuICB2YXIgdGFnU3RyID0gZGVyLnRhZ1t0YWddO1xuXG4gIHJldHVybiB7XG4gICAgY2xzOiBjbHMsXG4gICAgcHJpbWl0aXZlOiBwcmltaXRpdmUsXG4gICAgdGFnOiB0YWcsXG4gICAgdGFnU3RyOiB0YWdTdHJcbiAgfTtcbn1cblxuZnVuY3Rpb24gZGVyRGVjb2RlTGVuKGJ1ZiwgcHJpbWl0aXZlLCBmYWlsKSB7XG4gIHZhciBsZW4gPSBidWYucmVhZFVJbnQ4KGZhaWwpO1xuICBpZiAoYnVmLmlzRXJyb3IobGVuKSlcbiAgICByZXR1cm4gbGVuO1xuXG4gIC8vIEluZGVmaW5pdGUgZm9ybVxuICBpZiAoIXByaW1pdGl2ZSAmJiBsZW4gPT09IDB4ODApXG4gICAgcmV0dXJuIG51bGw7XG5cbiAgLy8gRGVmaW5pdGUgZm9ybVxuICBpZiAoKGxlbiAmIDB4ODApID09PSAwKSB7XG4gICAgLy8gU2hvcnQgZm9ybVxuICAgIHJldHVybiBsZW47XG4gIH1cblxuICAvLyBMb25nIGZvcm1cbiAgdmFyIG51bSA9IGxlbiAmIDB4N2Y7XG4gIGlmIChudW0gPiA0KVxuICAgIHJldHVybiBidWYuZXJyb3IoJ2xlbmd0aCBvY3RlY3QgaXMgdG9vIGxvbmcnKTtcblxuICBsZW4gPSAwO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IG51bTsgaSsrKSB7XG4gICAgbGVuIDw8PSA4O1xuICAgIHZhciBqID0gYnVmLnJlYWRVSW50OChmYWlsKTtcbiAgICBpZiAoYnVmLmlzRXJyb3IoaikpXG4gICAgICByZXR1cm4gajtcbiAgICBsZW4gfD0gajtcbiAgfVxuXG4gIHJldHVybiBsZW47XG59XG4iLCJ2YXIgZGVjb2RlcnMgPSBleHBvcnRzO1xuXG5kZWNvZGVycy5kZXIgPSByZXF1aXJlKCcuL2RlcicpO1xuZGVjb2RlcnMucGVtID0gcmVxdWlyZSgnLi9wZW0nKTtcbiIsInZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJyk7XG52YXIgQnVmZmVyID0gcmVxdWlyZSgnYnVmZmVyJykuQnVmZmVyO1xuXG52YXIgREVSRGVjb2RlciA9IHJlcXVpcmUoJy4vZGVyJyk7XG5cbmZ1bmN0aW9uIFBFTURlY29kZXIoZW50aXR5KSB7XG4gIERFUkRlY29kZXIuY2FsbCh0aGlzLCBlbnRpdHkpO1xuICB0aGlzLmVuYyA9ICdwZW0nO1xufTtcbmluaGVyaXRzKFBFTURlY29kZXIsIERFUkRlY29kZXIpO1xubW9kdWxlLmV4cG9ydHMgPSBQRU1EZWNvZGVyO1xuXG5QRU1EZWNvZGVyLnByb3RvdHlwZS5kZWNvZGUgPSBmdW5jdGlvbiBkZWNvZGUoZGF0YSwgb3B0aW9ucykge1xuICB2YXIgbGluZXMgPSBkYXRhLnRvU3RyaW5nKCkuc3BsaXQoL1tcXHJcXG5dKy9nKTtcblxuICB2YXIgbGFiZWwgPSBvcHRpb25zLmxhYmVsLnRvVXBwZXJDYXNlKCk7XG5cbiAgdmFyIHJlID0gL14tLS0tLShCRUdJTnxFTkQpIChbXi1dKyktLS0tLSQvO1xuICB2YXIgc3RhcnQgPSAtMTtcbiAgdmFyIGVuZCA9IC0xO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxpbmVzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIG1hdGNoID0gbGluZXNbaV0ubWF0Y2gocmUpO1xuICAgIGlmIChtYXRjaCA9PT0gbnVsbClcbiAgICAgIGNvbnRpbnVlO1xuXG4gICAgaWYgKG1hdGNoWzJdICE9PSBsYWJlbClcbiAgICAgIGNvbnRpbnVlO1xuXG4gICAgaWYgKHN0YXJ0ID09PSAtMSkge1xuICAgICAgaWYgKG1hdGNoWzFdICE9PSAnQkVHSU4nKVxuICAgICAgICBicmVhaztcbiAgICAgIHN0YXJ0ID0gaTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKG1hdGNoWzFdICE9PSAnRU5EJylcbiAgICAgICAgYnJlYWs7XG4gICAgICBlbmQgPSBpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIGlmIChzdGFydCA9PT0gLTEgfHwgZW5kID09PSAtMSlcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1BFTSBzZWN0aW9uIG5vdCBmb3VuZCBmb3I6ICcgKyBsYWJlbCk7XG5cbiAgdmFyIGJhc2U2NCA9IGxpbmVzLnNsaWNlKHN0YXJ0ICsgMSwgZW5kKS5qb2luKCcnKTtcbiAgLy8gUmVtb3ZlIGV4Y2Vzc2l2ZSBzeW1ib2xzXG4gIGJhc2U2NC5yZXBsYWNlKC9bXmEtejAtOVxcK1xcLz1dKy9naSwgJycpO1xuXG4gIHZhciBpbnB1dCA9IG5ldyBCdWZmZXIoYmFzZTY0LCAnYmFzZTY0Jyk7XG4gIHJldHVybiBERVJEZWNvZGVyLnByb3RvdHlwZS5kZWNvZGUuY2FsbCh0aGlzLCBpbnB1dCwgb3B0aW9ucyk7XG59O1xuIiwidmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcbnZhciBCdWZmZXIgPSByZXF1aXJlKCdidWZmZXInKS5CdWZmZXI7XG5cbnZhciBhc24xID0gcmVxdWlyZSgnLi4vLi4vYXNuMScpO1xudmFyIGJhc2UgPSBhc24xLmJhc2U7XG5cbi8vIEltcG9ydCBERVIgY29uc3RhbnRzXG52YXIgZGVyID0gYXNuMS5jb25zdGFudHMuZGVyO1xuXG5mdW5jdGlvbiBERVJFbmNvZGVyKGVudGl0eSkge1xuICB0aGlzLmVuYyA9ICdkZXInO1xuICB0aGlzLm5hbWUgPSBlbnRpdHkubmFtZTtcbiAgdGhpcy5lbnRpdHkgPSBlbnRpdHk7XG5cbiAgLy8gQ29uc3RydWN0IGJhc2UgdHJlZVxuICB0aGlzLnRyZWUgPSBuZXcgREVSTm9kZSgpO1xuICB0aGlzLnRyZWUuX2luaXQoZW50aXR5LmJvZHkpO1xufTtcbm1vZHVsZS5leHBvcnRzID0gREVSRW5jb2RlcjtcblxuREVSRW5jb2Rlci5wcm90b3R5cGUuZW5jb2RlID0gZnVuY3Rpb24gZW5jb2RlKGRhdGEsIHJlcG9ydGVyKSB7XG4gIHJldHVybiB0aGlzLnRyZWUuX2VuY29kZShkYXRhLCByZXBvcnRlcikuam9pbigpO1xufTtcblxuLy8gVHJlZSBtZXRob2RzXG5cbmZ1bmN0aW9uIERFUk5vZGUocGFyZW50KSB7XG4gIGJhc2UuTm9kZS5jYWxsKHRoaXMsICdkZXInLCBwYXJlbnQpO1xufVxuaW5oZXJpdHMoREVSTm9kZSwgYmFzZS5Ob2RlKTtcblxuREVSTm9kZS5wcm90b3R5cGUuX2VuY29kZUNvbXBvc2l0ZSA9IGZ1bmN0aW9uIGVuY29kZUNvbXBvc2l0ZSh0YWcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW1pdGl2ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50KSB7XG4gIHZhciBlbmNvZGVkVGFnID0gZW5jb2RlVGFnKHRhZywgcHJpbWl0aXZlLCBjbHMsIHRoaXMucmVwb3J0ZXIpO1xuXG4gIC8vIFNob3J0IGZvcm1cbiAgaWYgKGNvbnRlbnQubGVuZ3RoIDwgMHg4MCkge1xuICAgIHZhciBoZWFkZXIgPSBuZXcgQnVmZmVyKDIpO1xuICAgIGhlYWRlclswXSA9IGVuY29kZWRUYWc7XG4gICAgaGVhZGVyWzFdID0gY29udGVudC5sZW5ndGg7XG4gICAgcmV0dXJuIHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoWyBoZWFkZXIsIGNvbnRlbnQgXSk7XG4gIH1cblxuICAvLyBMb25nIGZvcm1cbiAgLy8gQ291bnQgb2N0ZXRzIHJlcXVpcmVkIHRvIHN0b3JlIGxlbmd0aFxuICB2YXIgbGVuT2N0ZXRzID0gMTtcbiAgZm9yICh2YXIgaSA9IGNvbnRlbnQubGVuZ3RoOyBpID49IDB4MTAwOyBpID4+PSA4KVxuICAgIGxlbk9jdGV0cysrO1xuXG4gIHZhciBoZWFkZXIgPSBuZXcgQnVmZmVyKDEgKyAxICsgbGVuT2N0ZXRzKTtcbiAgaGVhZGVyWzBdID0gZW5jb2RlZFRhZztcbiAgaGVhZGVyWzFdID0gMHg4MCB8IGxlbk9jdGV0cztcblxuICBmb3IgKHZhciBpID0gMSArIGxlbk9jdGV0cywgaiA9IGNvbnRlbnQubGVuZ3RoOyBqID4gMDsgaS0tLCBqID4+PSA4KVxuICAgIGhlYWRlcltpXSA9IGogJiAweGZmO1xuXG4gIHJldHVybiB0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKFsgaGVhZGVyLCBjb250ZW50IF0pO1xufTtcblxuREVSTm9kZS5wcm90b3R5cGUuX2VuY29kZVN0ciA9IGZ1bmN0aW9uIGVuY29kZVN0cihzdHIsIHRhZykge1xuICBpZiAodGFnID09PSAnYml0c3RyJykge1xuICAgIHJldHVybiB0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKFsgc3RyLnVudXNlZCB8IDAsIHN0ci5kYXRhIF0pO1xuICB9IGVsc2UgaWYgKHRhZyA9PT0gJ2JtcHN0cicpIHtcbiAgICB2YXIgYnVmID0gbmV3IEJ1ZmZlcihzdHIubGVuZ3RoICogMik7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHIubGVuZ3RoOyBpKyspIHtcbiAgICAgIGJ1Zi53cml0ZVVJbnQxNkJFKHN0ci5jaGFyQ29kZUF0KGkpLCBpICogMik7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKGJ1Zik7XG4gIH0gZWxzZSBpZiAodGFnID09PSAnbnVtc3RyJykge1xuICAgIGlmICghdGhpcy5faXNOdW1zdHIoc3RyKSkge1xuICAgICAgcmV0dXJuIHRoaXMucmVwb3J0ZXIuZXJyb3IoJ0VuY29kaW5nIG9mIHN0cmluZyB0eXBlOiBudW1zdHIgc3VwcG9ydHMgJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnb25seSBkaWdpdHMgYW5kIHNwYWNlJyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKHN0cik7XG4gIH0gZWxzZSBpZiAodGFnID09PSAncHJpbnRzdHInKSB7XG4gICAgaWYgKCF0aGlzLl9pc1ByaW50c3RyKHN0cikpIHtcbiAgICAgIHJldHVybiB0aGlzLnJlcG9ydGVyLmVycm9yKCdFbmNvZGluZyBvZiBzdHJpbmcgdHlwZTogcHJpbnRzdHIgc3VwcG9ydHMgJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnb25seSBsYXRpbiB1cHBlciBhbmQgbG93ZXIgY2FzZSBsZXR0ZXJzLCAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkaWdpdHMsIHNwYWNlLCBhcG9zdHJvcGhlLCBsZWZ0IGFuZCByaWd0aCAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwYXJlbnRoZXNpcywgcGx1cyBzaWduLCBjb21tYSwgaHlwaGVuLCAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkb3QsIHNsYXNoLCBjb2xvbiwgZXF1YWwgc2lnbiwgJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncXVlc3Rpb24gbWFyaycpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihzdHIpO1xuICB9IGVsc2UgaWYgKC9zdHIkLy50ZXN0KHRhZykpIHtcbiAgICByZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihzdHIpO1xuICB9IGVsc2UgaWYgKHRhZyA9PT0gJ29iakRlc2MnKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoc3RyKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdGhpcy5yZXBvcnRlci5lcnJvcignRW5jb2Rpbmcgb2Ygc3RyaW5nIHR5cGU6ICcgKyB0YWcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgdW5zdXBwb3J0ZWQnKTtcbiAgfVxufTtcblxuREVSTm9kZS5wcm90b3R5cGUuX2VuY29kZU9iamlkID0gZnVuY3Rpb24gZW5jb2RlT2JqaWQoaWQsIHZhbHVlcywgcmVsYXRpdmUpIHtcbiAgaWYgKHR5cGVvZiBpZCA9PT0gJ3N0cmluZycpIHtcbiAgICBpZiAoIXZhbHVlcylcbiAgICAgIHJldHVybiB0aGlzLnJlcG9ydGVyLmVycm9yKCdzdHJpbmcgb2JqaWQgZ2l2ZW4sIGJ1dCBubyB2YWx1ZXMgbWFwIGZvdW5kJyk7XG4gICAgaWYgKCF2YWx1ZXMuaGFzT3duUHJvcGVydHkoaWQpKVxuICAgICAgcmV0dXJuIHRoaXMucmVwb3J0ZXIuZXJyb3IoJ29iamlkIG5vdCBmb3VuZCBpbiB2YWx1ZXMgbWFwJyk7XG4gICAgaWQgPSB2YWx1ZXNbaWRdLnNwbGl0KC9bXFxzXFwuXSsvZyk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpZC5sZW5ndGg7IGkrKylcbiAgICAgIGlkW2ldIHw9IDA7XG4gIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShpZCkpIHtcbiAgICBpZCA9IGlkLnNsaWNlKCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpZC5sZW5ndGg7IGkrKylcbiAgICAgIGlkW2ldIHw9IDA7XG4gIH1cblxuICBpZiAoIUFycmF5LmlzQXJyYXkoaWQpKSB7XG4gICAgcmV0dXJuIHRoaXMucmVwb3J0ZXIuZXJyb3IoJ29iamlkKCkgc2hvdWxkIGJlIGVpdGhlciBhcnJheSBvciBzdHJpbmcsICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnb3Q6ICcgKyBKU09OLnN0cmluZ2lmeShpZCkpO1xuICB9XG5cbiAgaWYgKCFyZWxhdGl2ZSkge1xuICAgIGlmIChpZFsxXSA+PSA0MClcbiAgICAgIHJldHVybiB0aGlzLnJlcG9ydGVyLmVycm9yKCdTZWNvbmQgb2JqaWQgaWRlbnRpZmllciBPT0InKTtcbiAgICBpZC5zcGxpY2UoMCwgMiwgaWRbMF0gKiA0MCArIGlkWzFdKTtcbiAgfVxuXG4gIC8vIENvdW50IG51bWJlciBvZiBvY3RldHNcbiAgdmFyIHNpemUgPSAwO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGlkLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGlkZW50ID0gaWRbaV07XG4gICAgZm9yIChzaXplKys7IGlkZW50ID49IDB4ODA7IGlkZW50ID4+PSA3KVxuICAgICAgc2l6ZSsrO1xuICB9XG5cbiAgdmFyIG9iamlkID0gbmV3IEJ1ZmZlcihzaXplKTtcbiAgdmFyIG9mZnNldCA9IG9iamlkLmxlbmd0aCAtIDE7XG4gIGZvciAodmFyIGkgPSBpZC5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgIHZhciBpZGVudCA9IGlkW2ldO1xuICAgIG9iamlkW29mZnNldC0tXSA9IGlkZW50ICYgMHg3ZjtcbiAgICB3aGlsZSAoKGlkZW50ID4+PSA3KSA+IDApXG4gICAgICBvYmppZFtvZmZzZXQtLV0gPSAweDgwIHwgKGlkZW50ICYgMHg3Zik7XG4gIH1cblxuICByZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihvYmppZCk7XG59O1xuXG5mdW5jdGlvbiB0d28obnVtKSB7XG4gIGlmIChudW0gPCAxMClcbiAgICByZXR1cm4gJzAnICsgbnVtO1xuICBlbHNlXG4gICAgcmV0dXJuIG51bTtcbn1cblxuREVSTm9kZS5wcm90b3R5cGUuX2VuY29kZVRpbWUgPSBmdW5jdGlvbiBlbmNvZGVUaW1lKHRpbWUsIHRhZykge1xuICB2YXIgc3RyO1xuICB2YXIgZGF0ZSA9IG5ldyBEYXRlKHRpbWUpO1xuXG4gIGlmICh0YWcgPT09ICdnZW50aW1lJykge1xuICAgIHN0ciA9IFtcbiAgICAgIHR3byhkYXRlLmdldEZ1bGxZZWFyKCkpLFxuICAgICAgdHdvKGRhdGUuZ2V0VVRDTW9udGgoKSArIDEpLFxuICAgICAgdHdvKGRhdGUuZ2V0VVRDRGF0ZSgpKSxcbiAgICAgIHR3byhkYXRlLmdldFVUQ0hvdXJzKCkpLFxuICAgICAgdHdvKGRhdGUuZ2V0VVRDTWludXRlcygpKSxcbiAgICAgIHR3byhkYXRlLmdldFVUQ1NlY29uZHMoKSksXG4gICAgICAnWidcbiAgICBdLmpvaW4oJycpO1xuICB9IGVsc2UgaWYgKHRhZyA9PT0gJ3V0Y3RpbWUnKSB7XG4gICAgc3RyID0gW1xuICAgICAgdHdvKGRhdGUuZ2V0RnVsbFllYXIoKSAlIDEwMCksXG4gICAgICB0d28oZGF0ZS5nZXRVVENNb250aCgpICsgMSksXG4gICAgICB0d28oZGF0ZS5nZXRVVENEYXRlKCkpLFxuICAgICAgdHdvKGRhdGUuZ2V0VVRDSG91cnMoKSksXG4gICAgICB0d28oZGF0ZS5nZXRVVENNaW51dGVzKCkpLFxuICAgICAgdHdvKGRhdGUuZ2V0VVRDU2Vjb25kcygpKSxcbiAgICAgICdaJ1xuICAgIF0uam9pbignJyk7XG4gIH0gZWxzZSB7XG4gICAgdGhpcy5yZXBvcnRlci5lcnJvcignRW5jb2RpbmcgJyArIHRhZyArICcgdGltZSBpcyBub3Qgc3VwcG9ydGVkIHlldCcpO1xuICB9XG5cbiAgcmV0dXJuIHRoaXMuX2VuY29kZVN0cihzdHIsICdvY3RzdHInKTtcbn07XG5cbkRFUk5vZGUucHJvdG90eXBlLl9lbmNvZGVOdWxsID0gZnVuY3Rpb24gZW5jb2RlTnVsbCgpIHtcbiAgcmV0dXJuIHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIoJycpO1xufTtcblxuREVSTm9kZS5wcm90b3R5cGUuX2VuY29kZUludCA9IGZ1bmN0aW9uIGVuY29kZUludChudW0sIHZhbHVlcykge1xuICBpZiAodHlwZW9mIG51bSA9PT0gJ3N0cmluZycpIHtcbiAgICBpZiAoIXZhbHVlcylcbiAgICAgIHJldHVybiB0aGlzLnJlcG9ydGVyLmVycm9yKCdTdHJpbmcgaW50IG9yIGVudW0gZ2l2ZW4sIGJ1dCBubyB2YWx1ZXMgbWFwJyk7XG4gICAgaWYgKCF2YWx1ZXMuaGFzT3duUHJvcGVydHkobnVtKSkge1xuICAgICAgcmV0dXJuIHRoaXMucmVwb3J0ZXIuZXJyb3IoJ1ZhbHVlcyBtYXAgZG9lc25cXCd0IGNvbnRhaW46ICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkobnVtKSk7XG4gICAgfVxuICAgIG51bSA9IHZhbHVlc1tudW1dO1xuICB9XG5cbiAgLy8gQmlnbnVtLCBhc3N1bWUgYmlnIGVuZGlhblxuICBpZiAodHlwZW9mIG51bSAhPT0gJ251bWJlcicgJiYgIUJ1ZmZlci5pc0J1ZmZlcihudW0pKSB7XG4gICAgdmFyIG51bUFycmF5ID0gbnVtLnRvQXJyYXkoKTtcbiAgICBpZiAoIW51bS5zaWduICYmIG51bUFycmF5WzBdICYgMHg4MCkge1xuICAgICAgbnVtQXJyYXkudW5zaGlmdCgwKTtcbiAgICB9XG4gICAgbnVtID0gbmV3IEJ1ZmZlcihudW1BcnJheSk7XG4gIH1cblxuICBpZiAoQnVmZmVyLmlzQnVmZmVyKG51bSkpIHtcbiAgICB2YXIgc2l6ZSA9IG51bS5sZW5ndGg7XG4gICAgaWYgKG51bS5sZW5ndGggPT09IDApXG4gICAgICBzaXplKys7XG5cbiAgICB2YXIgb3V0ID0gbmV3IEJ1ZmZlcihzaXplKTtcbiAgICBudW0uY29weShvdXQpO1xuICAgIGlmIChudW0ubGVuZ3RoID09PSAwKVxuICAgICAgb3V0WzBdID0gMFxuICAgIHJldHVybiB0aGlzLl9jcmVhdGVFbmNvZGVyQnVmZmVyKG91dCk7XG4gIH1cblxuICBpZiAobnVtIDwgMHg4MClcbiAgICByZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihudW0pO1xuXG4gIGlmIChudW0gPCAweDEwMClcbiAgICByZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcihbMCwgbnVtXSk7XG5cbiAgdmFyIHNpemUgPSAxO1xuICBmb3IgKHZhciBpID0gbnVtOyBpID49IDB4MTAwOyBpID4+PSA4KVxuICAgIHNpemUrKztcblxuICB2YXIgb3V0ID0gbmV3IEFycmF5KHNpemUpO1xuICBmb3IgKHZhciBpID0gb3V0Lmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgb3V0W2ldID0gbnVtICYgMHhmZjtcbiAgICBudW0gPj49IDg7XG4gIH1cbiAgaWYob3V0WzBdICYgMHg4MCkge1xuICAgIG91dC51bnNoaWZ0KDApO1xuICB9XG5cbiAgcmV0dXJuIHRoaXMuX2NyZWF0ZUVuY29kZXJCdWZmZXIobmV3IEJ1ZmZlcihvdXQpKTtcbn07XG5cbkRFUk5vZGUucHJvdG90eXBlLl9lbmNvZGVCb29sID0gZnVuY3Rpb24gZW5jb2RlQm9vbCh2YWx1ZSkge1xuICByZXR1cm4gdGhpcy5fY3JlYXRlRW5jb2RlckJ1ZmZlcih2YWx1ZSA/IDB4ZmYgOiAwKTtcbn07XG5cbkRFUk5vZGUucHJvdG90eXBlLl91c2UgPSBmdW5jdGlvbiB1c2UoZW50aXR5LCBvYmopIHtcbiAgaWYgKHR5cGVvZiBlbnRpdHkgPT09ICdmdW5jdGlvbicpXG4gICAgZW50aXR5ID0gZW50aXR5KG9iaik7XG4gIHJldHVybiBlbnRpdHkuX2dldEVuY29kZXIoJ2RlcicpLnRyZWU7XG59O1xuXG5ERVJOb2RlLnByb3RvdHlwZS5fc2tpcERlZmF1bHQgPSBmdW5jdGlvbiBza2lwRGVmYXVsdChkYXRhQnVmZmVyLCByZXBvcnRlciwgcGFyZW50KSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX2Jhc2VTdGF0ZTtcbiAgdmFyIGk7XG4gIGlmIChzdGF0ZVsnZGVmYXVsdCddID09PSBudWxsKVxuICAgIHJldHVybiBmYWxzZTtcblxuICB2YXIgZGF0YSA9IGRhdGFCdWZmZXIuam9pbigpO1xuICBpZiAoc3RhdGUuZGVmYXVsdEJ1ZmZlciA9PT0gdW5kZWZpbmVkKVxuICAgIHN0YXRlLmRlZmF1bHRCdWZmZXIgPSB0aGlzLl9lbmNvZGVWYWx1ZShzdGF0ZVsnZGVmYXVsdCddLCByZXBvcnRlciwgcGFyZW50KS5qb2luKCk7XG5cbiAgaWYgKGRhdGEubGVuZ3RoICE9PSBzdGF0ZS5kZWZhdWx0QnVmZmVyLmxlbmd0aClcbiAgICByZXR1cm4gZmFsc2U7XG5cbiAgZm9yIChpPTA7IGkgPCBkYXRhLmxlbmd0aDsgaSsrKVxuICAgIGlmIChkYXRhW2ldICE9PSBzdGF0ZS5kZWZhdWx0QnVmZmVyW2ldKVxuICAgICAgcmV0dXJuIGZhbHNlO1xuXG4gIHJldHVybiB0cnVlO1xufTtcblxuLy8gVXRpbGl0eSBtZXRob2RzXG5cbmZ1bmN0aW9uIGVuY29kZVRhZyh0YWcsIHByaW1pdGl2ZSwgY2xzLCByZXBvcnRlcikge1xuICB2YXIgcmVzO1xuXG4gIGlmICh0YWcgPT09ICdzZXFvZicpXG4gICAgdGFnID0gJ3NlcSc7XG4gIGVsc2UgaWYgKHRhZyA9PT0gJ3NldG9mJylcbiAgICB0YWcgPSAnc2V0JztcblxuICBpZiAoZGVyLnRhZ0J5TmFtZS5oYXNPd25Qcm9wZXJ0eSh0YWcpKVxuICAgIHJlcyA9IGRlci50YWdCeU5hbWVbdGFnXTtcbiAgZWxzZSBpZiAodHlwZW9mIHRhZyA9PT0gJ251bWJlcicgJiYgKHRhZyB8IDApID09PSB0YWcpXG4gICAgcmVzID0gdGFnO1xuICBlbHNlXG4gICAgcmV0dXJuIHJlcG9ydGVyLmVycm9yKCdVbmtub3duIHRhZzogJyArIHRhZyk7XG5cbiAgaWYgKHJlcyA+PSAweDFmKVxuICAgIHJldHVybiByZXBvcnRlci5lcnJvcignTXVsdGktb2N0ZXQgdGFnIGVuY29kaW5nIHVuc3VwcG9ydGVkJyk7XG5cbiAgaWYgKCFwcmltaXRpdmUpXG4gICAgcmVzIHw9IDB4MjA7XG5cbiAgcmVzIHw9IChkZXIudGFnQ2xhc3NCeU5hbWVbY2xzIHx8ICd1bml2ZXJzYWwnXSA8PCA2KTtcblxuICByZXR1cm4gcmVzO1xufVxuIiwidmFyIGVuY29kZXJzID0gZXhwb3J0cztcblxuZW5jb2RlcnMuZGVyID0gcmVxdWlyZSgnLi9kZXInKTtcbmVuY29kZXJzLnBlbSA9IHJlcXVpcmUoJy4vcGVtJyk7XG4iLCJ2YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpO1xuXG52YXIgREVSRW5jb2RlciA9IHJlcXVpcmUoJy4vZGVyJyk7XG5cbmZ1bmN0aW9uIFBFTUVuY29kZXIoZW50aXR5KSB7XG4gIERFUkVuY29kZXIuY2FsbCh0aGlzLCBlbnRpdHkpO1xuICB0aGlzLmVuYyA9ICdwZW0nO1xufTtcbmluaGVyaXRzKFBFTUVuY29kZXIsIERFUkVuY29kZXIpO1xubW9kdWxlLmV4cG9ydHMgPSBQRU1FbmNvZGVyO1xuXG5QRU1FbmNvZGVyLnByb3RvdHlwZS5lbmNvZGUgPSBmdW5jdGlvbiBlbmNvZGUoZGF0YSwgb3B0aW9ucykge1xuICB2YXIgYnVmID0gREVSRW5jb2Rlci5wcm90b3R5cGUuZW5jb2RlLmNhbGwodGhpcywgZGF0YSk7XG5cbiAgdmFyIHAgPSBidWYudG9TdHJpbmcoJ2Jhc2U2NCcpO1xuICB2YXIgb3V0ID0gWyAnLS0tLS1CRUdJTiAnICsgb3B0aW9ucy5sYWJlbCArICctLS0tLScgXTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBwLmxlbmd0aDsgaSArPSA2NClcbiAgICBvdXQucHVzaChwLnNsaWNlKGksIGkgKyA2NCkpO1xuICBvdXQucHVzaCgnLS0tLS1FTkQgJyArIG9wdGlvbnMubGFiZWwgKyAnLS0tLS0nKTtcbiAgcmV0dXJuIG91dC5qb2luKCdcXG4nKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8vIGNvbXBhcmUgYW5kIGlzQnVmZmVyIHRha2VuIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2Zlcm9zcy9idWZmZXIvYmxvYi82ODBlOWU1ZTQ4OGYyMmFhYzI3NTk5YTU3ZGM4NDRhNjMxNTkyOGRkL2luZGV4LmpzXG4vLyBvcmlnaW5hbCBub3RpY2U6XG5cbi8qIVxuICogVGhlIGJ1ZmZlciBtb2R1bGUgZnJvbSBub2RlLmpzLCBmb3IgdGhlIGJyb3dzZXIuXG4gKlxuICogQGF1dGhvciAgIEZlcm9zcyBBYm91a2hhZGlqZWggPGZlcm9zc0BmZXJvc3Mub3JnPiA8aHR0cDovL2Zlcm9zcy5vcmc+XG4gKiBAbGljZW5zZSAgTUlUXG4gKi9cbmZ1bmN0aW9uIGNvbXBhcmUoYSwgYikge1xuICBpZiAoYSA9PT0gYikge1xuICAgIHJldHVybiAwO1xuICB9XG5cbiAgdmFyIHggPSBhLmxlbmd0aDtcbiAgdmFyIHkgPSBiLmxlbmd0aDtcblxuICBmb3IgKHZhciBpID0gMCwgbGVuID0gTWF0aC5taW4oeCwgeSk7IGkgPCBsZW47ICsraSkge1xuICAgIGlmIChhW2ldICE9PSBiW2ldKSB7XG4gICAgICB4ID0gYVtpXTtcbiAgICAgIHkgPSBiW2ldO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgaWYgKHggPCB5KSB7XG4gICAgcmV0dXJuIC0xO1xuICB9XG4gIGlmICh5IDwgeCkge1xuICAgIHJldHVybiAxO1xuICB9XG4gIHJldHVybiAwO1xufVxuZnVuY3Rpb24gaXNCdWZmZXIoYikge1xuICBpZiAoZ2xvYmFsLkJ1ZmZlciAmJiB0eXBlb2YgZ2xvYmFsLkJ1ZmZlci5pc0J1ZmZlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBnbG9iYWwuQnVmZmVyLmlzQnVmZmVyKGIpO1xuICB9XG4gIHJldHVybiAhIShiICE9IG51bGwgJiYgYi5faXNCdWZmZXIpO1xufVxuXG4vLyBiYXNlZCBvbiBub2RlIGFzc2VydCwgb3JpZ2luYWwgbm90aWNlOlxuXG4vLyBodHRwOi8vd2lraS5jb21tb25qcy5vcmcvd2lraS9Vbml0X1Rlc3RpbmcvMS4wXG4vL1xuLy8gVEhJUyBJUyBOT1QgVEVTVEVEIE5PUiBMSUtFTFkgVE8gV09SSyBPVVRTSURFIFY4IVxuLy9cbi8vIE9yaWdpbmFsbHkgZnJvbSBuYXJ3aGFsLmpzIChodHRwOi8vbmFyd2hhbGpzLm9yZylcbi8vIENvcHlyaWdodCAoYykgMjAwOSBUaG9tYXMgUm9iaW5zb24gPDI4MG5vcnRoLmNvbT5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAnU29mdHdhcmUnKSwgdG9cbi8vIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlXG4vLyByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Jcbi8vIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgJ0FTIElTJywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vIEFVVEhPUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOXG4vLyBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OXG4vLyBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cblxudmFyIHV0aWwgPSByZXF1aXJlKCd1dGlsLycpO1xudmFyIGhhc093biA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG52YXIgcFNsaWNlID0gQXJyYXkucHJvdG90eXBlLnNsaWNlO1xudmFyIGZ1bmN0aW9uc0hhdmVOYW1lcyA9IChmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBmdW5jdGlvbiBmb28oKSB7fS5uYW1lID09PSAnZm9vJztcbn0oKSk7XG5mdW5jdGlvbiBwVG9TdHJpbmcgKG9iaikge1xuICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG9iaik7XG59XG5mdW5jdGlvbiBpc1ZpZXcoYXJyYnVmKSB7XG4gIGlmIChpc0J1ZmZlcihhcnJidWYpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmICh0eXBlb2YgZ2xvYmFsLkFycmF5QnVmZmVyICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmICh0eXBlb2YgQXJyYXlCdWZmZXIuaXNWaWV3ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIEFycmF5QnVmZmVyLmlzVmlldyhhcnJidWYpO1xuICB9XG4gIGlmICghYXJyYnVmKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmIChhcnJidWYgaW5zdGFuY2VvZiBEYXRhVmlldykge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGlmIChhcnJidWYuYnVmZmVyICYmIGFycmJ1Zi5idWZmZXIgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcikge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cbi8vIDEuIFRoZSBhc3NlcnQgbW9kdWxlIHByb3ZpZGVzIGZ1bmN0aW9ucyB0aGF0IHRocm93XG4vLyBBc3NlcnRpb25FcnJvcidzIHdoZW4gcGFydGljdWxhciBjb25kaXRpb25zIGFyZSBub3QgbWV0LiBUaGVcbi8vIGFzc2VydCBtb2R1bGUgbXVzdCBjb25mb3JtIHRvIHRoZSBmb2xsb3dpbmcgaW50ZXJmYWNlLlxuXG52YXIgYXNzZXJ0ID0gbW9kdWxlLmV4cG9ydHMgPSBvaztcblxuLy8gMi4gVGhlIEFzc2VydGlvbkVycm9yIGlzIGRlZmluZWQgaW4gYXNzZXJ0LlxuLy8gbmV3IGFzc2VydC5Bc3NlcnRpb25FcnJvcih7IG1lc3NhZ2U6IG1lc3NhZ2UsXG4vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0dWFsOiBhY3R1YWwsXG4vLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQ6IGV4cGVjdGVkIH0pXG5cbnZhciByZWdleCA9IC9cXHMqZnVuY3Rpb25cXHMrKFteXFwoXFxzXSopXFxzKi87XG4vLyBiYXNlZCBvbiBodHRwczovL2dpdGh1Yi5jb20vbGpoYXJiL2Z1bmN0aW9uLnByb3RvdHlwZS5uYW1lL2Jsb2IvYWRlZWVlYzhiZmNjNjA2OGIxODdkN2Q5ZmIzZDViYjFkM2EzMDg5OS9pbXBsZW1lbnRhdGlvbi5qc1xuZnVuY3Rpb24gZ2V0TmFtZShmdW5jKSB7XG4gIGlmICghdXRpbC5pc0Z1bmN0aW9uKGZ1bmMpKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmIChmdW5jdGlvbnNIYXZlTmFtZXMpIHtcbiAgICByZXR1cm4gZnVuYy5uYW1lO1xuICB9XG4gIHZhciBzdHIgPSBmdW5jLnRvU3RyaW5nKCk7XG4gIHZhciBtYXRjaCA9IHN0ci5tYXRjaChyZWdleCk7XG4gIHJldHVybiBtYXRjaCAmJiBtYXRjaFsxXTtcbn1cbmFzc2VydC5Bc3NlcnRpb25FcnJvciA9IGZ1bmN0aW9uIEFzc2VydGlvbkVycm9yKG9wdGlvbnMpIHtcbiAgdGhpcy5uYW1lID0gJ0Fzc2VydGlvbkVycm9yJztcbiAgdGhpcy5hY3R1YWwgPSBvcHRpb25zLmFjdHVhbDtcbiAgdGhpcy5leHBlY3RlZCA9IG9wdGlvbnMuZXhwZWN0ZWQ7XG4gIHRoaXMub3BlcmF0b3IgPSBvcHRpb25zLm9wZXJhdG9yO1xuICBpZiAob3B0aW9ucy5tZXNzYWdlKSB7XG4gICAgdGhpcy5tZXNzYWdlID0gb3B0aW9ucy5tZXNzYWdlO1xuICAgIHRoaXMuZ2VuZXJhdGVkTWVzc2FnZSA9IGZhbHNlO1xuICB9IGVsc2Uge1xuICAgIHRoaXMubWVzc2FnZSA9IGdldE1lc3NhZ2UodGhpcyk7XG4gICAgdGhpcy5nZW5lcmF0ZWRNZXNzYWdlID0gdHJ1ZTtcbiAgfVxuICB2YXIgc3RhY2tTdGFydEZ1bmN0aW9uID0gb3B0aW9ucy5zdGFja1N0YXJ0RnVuY3Rpb24gfHwgZmFpbDtcbiAgaWYgKEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKSB7XG4gICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UodGhpcywgc3RhY2tTdGFydEZ1bmN0aW9uKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBub24gdjggYnJvd3NlcnMgc28gd2UgY2FuIGhhdmUgYSBzdGFja3RyYWNlXG4gICAgdmFyIGVyciA9IG5ldyBFcnJvcigpO1xuICAgIGlmIChlcnIuc3RhY2spIHtcbiAgICAgIHZhciBvdXQgPSBlcnIuc3RhY2s7XG5cbiAgICAgIC8vIHRyeSB0byBzdHJpcCB1c2VsZXNzIGZyYW1lc1xuICAgICAgdmFyIGZuX25hbWUgPSBnZXROYW1lKHN0YWNrU3RhcnRGdW5jdGlvbik7XG4gICAgICB2YXIgaWR4ID0gb3V0LmluZGV4T2YoJ1xcbicgKyBmbl9uYW1lKTtcbiAgICAgIGlmIChpZHggPj0gMCkge1xuICAgICAgICAvLyBvbmNlIHdlIGhhdmUgbG9jYXRlZCB0aGUgZnVuY3Rpb24gZnJhbWVcbiAgICAgICAgLy8gd2UgbmVlZCB0byBzdHJpcCBvdXQgZXZlcnl0aGluZyBiZWZvcmUgaXQgKGFuZCBpdHMgbGluZSlcbiAgICAgICAgdmFyIG5leHRfbGluZSA9IG91dC5pbmRleE9mKCdcXG4nLCBpZHggKyAxKTtcbiAgICAgICAgb3V0ID0gb3V0LnN1YnN0cmluZyhuZXh0X2xpbmUgKyAxKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5zdGFjayA9IG91dDtcbiAgICB9XG4gIH1cbn07XG5cbi8vIGFzc2VydC5Bc3NlcnRpb25FcnJvciBpbnN0YW5jZW9mIEVycm9yXG51dGlsLmluaGVyaXRzKGFzc2VydC5Bc3NlcnRpb25FcnJvciwgRXJyb3IpO1xuXG5mdW5jdGlvbiB0cnVuY2F0ZShzLCBuKSB7XG4gIGlmICh0eXBlb2YgcyA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gcy5sZW5ndGggPCBuID8gcyA6IHMuc2xpY2UoMCwgbik7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHM7XG4gIH1cbn1cbmZ1bmN0aW9uIGluc3BlY3Qoc29tZXRoaW5nKSB7XG4gIGlmIChmdW5jdGlvbnNIYXZlTmFtZXMgfHwgIXV0aWwuaXNGdW5jdGlvbihzb21ldGhpbmcpKSB7XG4gICAgcmV0dXJuIHV0aWwuaW5zcGVjdChzb21ldGhpbmcpO1xuICB9XG4gIHZhciByYXduYW1lID0gZ2V0TmFtZShzb21ldGhpbmcpO1xuICB2YXIgbmFtZSA9IHJhd25hbWUgPyAnOiAnICsgcmF3bmFtZSA6ICcnO1xuICByZXR1cm4gJ1tGdW5jdGlvbicgKyAgbmFtZSArICddJztcbn1cbmZ1bmN0aW9uIGdldE1lc3NhZ2Uoc2VsZikge1xuICByZXR1cm4gdHJ1bmNhdGUoaW5zcGVjdChzZWxmLmFjdHVhbCksIDEyOCkgKyAnICcgK1xuICAgICAgICAgc2VsZi5vcGVyYXRvciArICcgJyArXG4gICAgICAgICB0cnVuY2F0ZShpbnNwZWN0KHNlbGYuZXhwZWN0ZWQpLCAxMjgpO1xufVxuXG4vLyBBdCBwcmVzZW50IG9ubHkgdGhlIHRocmVlIGtleXMgbWVudGlvbmVkIGFib3ZlIGFyZSB1c2VkIGFuZFxuLy8gdW5kZXJzdG9vZCBieSB0aGUgc3BlYy4gSW1wbGVtZW50YXRpb25zIG9yIHN1YiBtb2R1bGVzIGNhbiBwYXNzXG4vLyBvdGhlciBrZXlzIHRvIHRoZSBBc3NlcnRpb25FcnJvcidzIGNvbnN0cnVjdG9yIC0gdGhleSB3aWxsIGJlXG4vLyBpZ25vcmVkLlxuXG4vLyAzLiBBbGwgb2YgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgbXVzdCB0aHJvdyBhbiBBc3NlcnRpb25FcnJvclxuLy8gd2hlbiBhIGNvcnJlc3BvbmRpbmcgY29uZGl0aW9uIGlzIG5vdCBtZXQsIHdpdGggYSBtZXNzYWdlIHRoYXRcbi8vIG1heSBiZSB1bmRlZmluZWQgaWYgbm90IHByb3ZpZGVkLiAgQWxsIGFzc2VydGlvbiBtZXRob2RzIHByb3ZpZGVcbi8vIGJvdGggdGhlIGFjdHVhbCBhbmQgZXhwZWN0ZWQgdmFsdWVzIHRvIHRoZSBhc3NlcnRpb24gZXJyb3IgZm9yXG4vLyBkaXNwbGF5IHB1cnBvc2VzLlxuXG5mdW5jdGlvbiBmYWlsKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UsIG9wZXJhdG9yLCBzdGFja1N0YXJ0RnVuY3Rpb24pIHtcbiAgdGhyb3cgbmV3IGFzc2VydC5Bc3NlcnRpb25FcnJvcih7XG4gICAgbWVzc2FnZTogbWVzc2FnZSxcbiAgICBhY3R1YWw6IGFjdHVhbCxcbiAgICBleHBlY3RlZDogZXhwZWN0ZWQsXG4gICAgb3BlcmF0b3I6IG9wZXJhdG9yLFxuICAgIHN0YWNrU3RhcnRGdW5jdGlvbjogc3RhY2tTdGFydEZ1bmN0aW9uXG4gIH0pO1xufVxuXG4vLyBFWFRFTlNJT04hIGFsbG93cyBmb3Igd2VsbCBiZWhhdmVkIGVycm9ycyBkZWZpbmVkIGVsc2V3aGVyZS5cbmFzc2VydC5mYWlsID0gZmFpbDtcblxuLy8gNC4gUHVyZSBhc3NlcnRpb24gdGVzdHMgd2hldGhlciBhIHZhbHVlIGlzIHRydXRoeSwgYXMgZGV0ZXJtaW5lZFxuLy8gYnkgISFndWFyZC5cbi8vIGFzc2VydC5vayhndWFyZCwgbWVzc2FnZV9vcHQpO1xuLy8gVGhpcyBzdGF0ZW1lbnQgaXMgZXF1aXZhbGVudCB0byBhc3NlcnQuZXF1YWwodHJ1ZSwgISFndWFyZCxcbi8vIG1lc3NhZ2Vfb3B0KTsuIFRvIHRlc3Qgc3RyaWN0bHkgZm9yIHRoZSB2YWx1ZSB0cnVlLCB1c2Vcbi8vIGFzc2VydC5zdHJpY3RFcXVhbCh0cnVlLCBndWFyZCwgbWVzc2FnZV9vcHQpOy5cblxuZnVuY3Rpb24gb2sodmFsdWUsIG1lc3NhZ2UpIHtcbiAgaWYgKCF2YWx1ZSkgZmFpbCh2YWx1ZSwgdHJ1ZSwgbWVzc2FnZSwgJz09JywgYXNzZXJ0Lm9rKTtcbn1cbmFzc2VydC5vayA9IG9rO1xuXG4vLyA1LiBUaGUgZXF1YWxpdHkgYXNzZXJ0aW9uIHRlc3RzIHNoYWxsb3csIGNvZXJjaXZlIGVxdWFsaXR5IHdpdGhcbi8vID09LlxuLy8gYXNzZXJ0LmVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2Vfb3B0KTtcblxuYXNzZXJ0LmVxdWFsID0gZnVuY3Rpb24gZXF1YWwoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkge1xuICBpZiAoYWN0dWFsICE9IGV4cGVjdGVkKSBmYWlsKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UsICc9PScsIGFzc2VydC5lcXVhbCk7XG59O1xuXG4vLyA2LiBUaGUgbm9uLWVxdWFsaXR5IGFzc2VydGlvbiB0ZXN0cyBmb3Igd2hldGhlciB0d28gb2JqZWN0cyBhcmUgbm90IGVxdWFsXG4vLyB3aXRoICE9IGFzc2VydC5ub3RFcXVhbChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlX29wdCk7XG5cbmFzc2VydC5ub3RFcXVhbCA9IGZ1bmN0aW9uIG5vdEVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHtcbiAgaWYgKGFjdHVhbCA9PSBleHBlY3RlZCkge1xuICAgIGZhaWwoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSwgJyE9JywgYXNzZXJ0Lm5vdEVxdWFsKTtcbiAgfVxufTtcblxuLy8gNy4gVGhlIGVxdWl2YWxlbmNlIGFzc2VydGlvbiB0ZXN0cyBhIGRlZXAgZXF1YWxpdHkgcmVsYXRpb24uXG4vLyBhc3NlcnQuZGVlcEVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2Vfb3B0KTtcblxuYXNzZXJ0LmRlZXBFcXVhbCA9IGZ1bmN0aW9uIGRlZXBFcXVhbChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7XG4gIGlmICghX2RlZXBFcXVhbChhY3R1YWwsIGV4cGVjdGVkLCBmYWxzZSkpIHtcbiAgICBmYWlsKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UsICdkZWVwRXF1YWwnLCBhc3NlcnQuZGVlcEVxdWFsKTtcbiAgfVxufTtcblxuYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbCA9IGZ1bmN0aW9uIGRlZXBTdHJpY3RFcXVhbChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7XG4gIGlmICghX2RlZXBFcXVhbChhY3R1YWwsIGV4cGVjdGVkLCB0cnVlKSkge1xuICAgIGZhaWwoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSwgJ2RlZXBTdHJpY3RFcXVhbCcsIGFzc2VydC5kZWVwU3RyaWN0RXF1YWwpO1xuICB9XG59O1xuXG5mdW5jdGlvbiBfZGVlcEVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIHN0cmljdCwgbWVtb3MpIHtcbiAgLy8gNy4xLiBBbGwgaWRlbnRpY2FsIHZhbHVlcyBhcmUgZXF1aXZhbGVudCwgYXMgZGV0ZXJtaW5lZCBieSA9PT0uXG4gIGlmIChhY3R1YWwgPT09IGV4cGVjdGVkKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gZWxzZSBpZiAoaXNCdWZmZXIoYWN0dWFsKSAmJiBpc0J1ZmZlcihleHBlY3RlZCkpIHtcbiAgICByZXR1cm4gY29tcGFyZShhY3R1YWwsIGV4cGVjdGVkKSA9PT0gMDtcblxuICAvLyA3LjIuIElmIHRoZSBleHBlY3RlZCB2YWx1ZSBpcyBhIERhdGUgb2JqZWN0LCB0aGUgYWN0dWFsIHZhbHVlIGlzXG4gIC8vIGVxdWl2YWxlbnQgaWYgaXQgaXMgYWxzbyBhIERhdGUgb2JqZWN0IHRoYXQgcmVmZXJzIHRvIHRoZSBzYW1lIHRpbWUuXG4gIH0gZWxzZSBpZiAodXRpbC5pc0RhdGUoYWN0dWFsKSAmJiB1dGlsLmlzRGF0ZShleHBlY3RlZCkpIHtcbiAgICByZXR1cm4gYWN0dWFsLmdldFRpbWUoKSA9PT0gZXhwZWN0ZWQuZ2V0VGltZSgpO1xuXG4gIC8vIDcuMyBJZiB0aGUgZXhwZWN0ZWQgdmFsdWUgaXMgYSBSZWdFeHAgb2JqZWN0LCB0aGUgYWN0dWFsIHZhbHVlIGlzXG4gIC8vIGVxdWl2YWxlbnQgaWYgaXQgaXMgYWxzbyBhIFJlZ0V4cCBvYmplY3Qgd2l0aCB0aGUgc2FtZSBzb3VyY2UgYW5kXG4gIC8vIHByb3BlcnRpZXMgKGBnbG9iYWxgLCBgbXVsdGlsaW5lYCwgYGxhc3RJbmRleGAsIGBpZ25vcmVDYXNlYCkuXG4gIH0gZWxzZSBpZiAodXRpbC5pc1JlZ0V4cChhY3R1YWwpICYmIHV0aWwuaXNSZWdFeHAoZXhwZWN0ZWQpKSB7XG4gICAgcmV0dXJuIGFjdHVhbC5zb3VyY2UgPT09IGV4cGVjdGVkLnNvdXJjZSAmJlxuICAgICAgICAgICBhY3R1YWwuZ2xvYmFsID09PSBleHBlY3RlZC5nbG9iYWwgJiZcbiAgICAgICAgICAgYWN0dWFsLm11bHRpbGluZSA9PT0gZXhwZWN0ZWQubXVsdGlsaW5lICYmXG4gICAgICAgICAgIGFjdHVhbC5sYXN0SW5kZXggPT09IGV4cGVjdGVkLmxhc3RJbmRleCAmJlxuICAgICAgICAgICBhY3R1YWwuaWdub3JlQ2FzZSA9PT0gZXhwZWN0ZWQuaWdub3JlQ2FzZTtcblxuICAvLyA3LjQuIE90aGVyIHBhaXJzIHRoYXQgZG8gbm90IGJvdGggcGFzcyB0eXBlb2YgdmFsdWUgPT0gJ29iamVjdCcsXG4gIC8vIGVxdWl2YWxlbmNlIGlzIGRldGVybWluZWQgYnkgPT0uXG4gIH0gZWxzZSBpZiAoKGFjdHVhbCA9PT0gbnVsbCB8fCB0eXBlb2YgYWN0dWFsICE9PSAnb2JqZWN0JykgJiZcbiAgICAgICAgICAgICAoZXhwZWN0ZWQgPT09IG51bGwgfHwgdHlwZW9mIGV4cGVjdGVkICE9PSAnb2JqZWN0JykpIHtcbiAgICByZXR1cm4gc3RyaWN0ID8gYWN0dWFsID09PSBleHBlY3RlZCA6IGFjdHVhbCA9PSBleHBlY3RlZDtcblxuICAvLyBJZiBib3RoIHZhbHVlcyBhcmUgaW5zdGFuY2VzIG9mIHR5cGVkIGFycmF5cywgd3JhcCB0aGVpciB1bmRlcmx5aW5nXG4gIC8vIEFycmF5QnVmZmVycyBpbiBhIEJ1ZmZlciBlYWNoIHRvIGluY3JlYXNlIHBlcmZvcm1hbmNlXG4gIC8vIFRoaXMgb3B0aW1pemF0aW9uIHJlcXVpcmVzIHRoZSBhcnJheXMgdG8gaGF2ZSB0aGUgc2FtZSB0eXBlIGFzIGNoZWNrZWQgYnlcbiAgLy8gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyAoYWthIHBUb1N0cmluZykuIE5ldmVyIHBlcmZvcm0gYmluYXJ5XG4gIC8vIGNvbXBhcmlzb25zIGZvciBGbG9hdCpBcnJheXMsIHRob3VnaCwgc2luY2UgZS5nLiArMCA9PT0gLTAgYnV0IHRoZWlyXG4gIC8vIGJpdCBwYXR0ZXJucyBhcmUgbm90IGlkZW50aWNhbC5cbiAgfSBlbHNlIGlmIChpc1ZpZXcoYWN0dWFsKSAmJiBpc1ZpZXcoZXhwZWN0ZWQpICYmXG4gICAgICAgICAgICAgcFRvU3RyaW5nKGFjdHVhbCkgPT09IHBUb1N0cmluZyhleHBlY3RlZCkgJiZcbiAgICAgICAgICAgICAhKGFjdHVhbCBpbnN0YW5jZW9mIEZsb2F0MzJBcnJheSB8fFxuICAgICAgICAgICAgICAgYWN0dWFsIGluc3RhbmNlb2YgRmxvYXQ2NEFycmF5KSkge1xuICAgIHJldHVybiBjb21wYXJlKG5ldyBVaW50OEFycmF5KGFjdHVhbC5idWZmZXIpLFxuICAgICAgICAgICAgICAgICAgIG5ldyBVaW50OEFycmF5KGV4cGVjdGVkLmJ1ZmZlcikpID09PSAwO1xuXG4gIC8vIDcuNSBGb3IgYWxsIG90aGVyIE9iamVjdCBwYWlycywgaW5jbHVkaW5nIEFycmF5IG9iamVjdHMsIGVxdWl2YWxlbmNlIGlzXG4gIC8vIGRldGVybWluZWQgYnkgaGF2aW5nIHRoZSBzYW1lIG51bWJlciBvZiBvd25lZCBwcm9wZXJ0aWVzIChhcyB2ZXJpZmllZFxuICAvLyB3aXRoIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCksIHRoZSBzYW1lIHNldCBvZiBrZXlzXG4gIC8vIChhbHRob3VnaCBub3QgbmVjZXNzYXJpbHkgdGhlIHNhbWUgb3JkZXIpLCBlcXVpdmFsZW50IHZhbHVlcyBmb3IgZXZlcnlcbiAgLy8gY29ycmVzcG9uZGluZyBrZXksIGFuZCBhbiBpZGVudGljYWwgJ3Byb3RvdHlwZScgcHJvcGVydHkuIE5vdGU6IHRoaXNcbiAgLy8gYWNjb3VudHMgZm9yIGJvdGggbmFtZWQgYW5kIGluZGV4ZWQgcHJvcGVydGllcyBvbiBBcnJheXMuXG4gIH0gZWxzZSBpZiAoaXNCdWZmZXIoYWN0dWFsKSAhPT0gaXNCdWZmZXIoZXhwZWN0ZWQpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9IGVsc2Uge1xuICAgIG1lbW9zID0gbWVtb3MgfHwge2FjdHVhbDogW10sIGV4cGVjdGVkOiBbXX07XG5cbiAgICB2YXIgYWN0dWFsSW5kZXggPSBtZW1vcy5hY3R1YWwuaW5kZXhPZihhY3R1YWwpO1xuICAgIGlmIChhY3R1YWxJbmRleCAhPT0gLTEpIHtcbiAgICAgIGlmIChhY3R1YWxJbmRleCA9PT0gbWVtb3MuZXhwZWN0ZWQuaW5kZXhPZihleHBlY3RlZCkpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbWVtb3MuYWN0dWFsLnB1c2goYWN0dWFsKTtcbiAgICBtZW1vcy5leHBlY3RlZC5wdXNoKGV4cGVjdGVkKTtcblxuICAgIHJldHVybiBvYmpFcXVpdihhY3R1YWwsIGV4cGVjdGVkLCBzdHJpY3QsIG1lbW9zKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBpc0FyZ3VtZW50cyhvYmplY3QpIHtcbiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvYmplY3QpID09ICdbb2JqZWN0IEFyZ3VtZW50c10nO1xufVxuXG5mdW5jdGlvbiBvYmpFcXVpdihhLCBiLCBzdHJpY3QsIGFjdHVhbFZpc2l0ZWRPYmplY3RzKSB7XG4gIGlmIChhID09PSBudWxsIHx8IGEgPT09IHVuZGVmaW5lZCB8fCBiID09PSBudWxsIHx8IGIgPT09IHVuZGVmaW5lZClcbiAgICByZXR1cm4gZmFsc2U7XG4gIC8vIGlmIG9uZSBpcyBhIHByaW1pdGl2ZSwgdGhlIG90aGVyIG11c3QgYmUgc2FtZVxuICBpZiAodXRpbC5pc1ByaW1pdGl2ZShhKSB8fCB1dGlsLmlzUHJpbWl0aXZlKGIpKVxuICAgIHJldHVybiBhID09PSBiO1xuICBpZiAoc3RyaWN0ICYmIE9iamVjdC5nZXRQcm90b3R5cGVPZihhKSAhPT0gT2JqZWN0LmdldFByb3RvdHlwZU9mKGIpKVxuICAgIHJldHVybiBmYWxzZTtcbiAgdmFyIGFJc0FyZ3MgPSBpc0FyZ3VtZW50cyhhKTtcbiAgdmFyIGJJc0FyZ3MgPSBpc0FyZ3VtZW50cyhiKTtcbiAgaWYgKChhSXNBcmdzICYmICFiSXNBcmdzKSB8fCAoIWFJc0FyZ3MgJiYgYklzQXJncykpXG4gICAgcmV0dXJuIGZhbHNlO1xuICBpZiAoYUlzQXJncykge1xuICAgIGEgPSBwU2xpY2UuY2FsbChhKTtcbiAgICBiID0gcFNsaWNlLmNhbGwoYik7XG4gICAgcmV0dXJuIF9kZWVwRXF1YWwoYSwgYiwgc3RyaWN0KTtcbiAgfVxuICB2YXIga2EgPSBvYmplY3RLZXlzKGEpO1xuICB2YXIga2IgPSBvYmplY3RLZXlzKGIpO1xuICB2YXIga2V5LCBpO1xuICAvLyBoYXZpbmcgdGhlIHNhbWUgbnVtYmVyIG9mIG93bmVkIHByb3BlcnRpZXMgKGtleXMgaW5jb3Jwb3JhdGVzXG4gIC8vIGhhc093blByb3BlcnR5KVxuICBpZiAoa2EubGVuZ3RoICE9PSBrYi5sZW5ndGgpXG4gICAgcmV0dXJuIGZhbHNlO1xuICAvL3RoZSBzYW1lIHNldCBvZiBrZXlzIChhbHRob3VnaCBub3QgbmVjZXNzYXJpbHkgdGhlIHNhbWUgb3JkZXIpLFxuICBrYS5zb3J0KCk7XG4gIGtiLnNvcnQoKTtcbiAgLy9+fn5jaGVhcCBrZXkgdGVzdFxuICBmb3IgKGkgPSBrYS5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgIGlmIChrYVtpXSAhPT0ga2JbaV0pXG4gICAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgLy9lcXVpdmFsZW50IHZhbHVlcyBmb3IgZXZlcnkgY29ycmVzcG9uZGluZyBrZXksIGFuZFxuICAvL35+fnBvc3NpYmx5IGV4cGVuc2l2ZSBkZWVwIHRlc3RcbiAgZm9yIChpID0ga2EubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICBrZXkgPSBrYVtpXTtcbiAgICBpZiAoIV9kZWVwRXF1YWwoYVtrZXldLCBiW2tleV0sIHN0cmljdCwgYWN0dWFsVmlzaXRlZE9iamVjdHMpKVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiB0cnVlO1xufVxuXG4vLyA4LiBUaGUgbm9uLWVxdWl2YWxlbmNlIGFzc2VydGlvbiB0ZXN0cyBmb3IgYW55IGRlZXAgaW5lcXVhbGl0eS5cbi8vIGFzc2VydC5ub3REZWVwRXF1YWwoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZV9vcHQpO1xuXG5hc3NlcnQubm90RGVlcEVxdWFsID0gZnVuY3Rpb24gbm90RGVlcEVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHtcbiAgaWYgKF9kZWVwRXF1YWwoYWN0dWFsLCBleHBlY3RlZCwgZmFsc2UpKSB7XG4gICAgZmFpbChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlLCAnbm90RGVlcEVxdWFsJywgYXNzZXJ0Lm5vdERlZXBFcXVhbCk7XG4gIH1cbn07XG5cbmFzc2VydC5ub3REZWVwU3RyaWN0RXF1YWwgPSBub3REZWVwU3RyaWN0RXF1YWw7XG5mdW5jdGlvbiBub3REZWVwU3RyaWN0RXF1YWwoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkge1xuICBpZiAoX2RlZXBFcXVhbChhY3R1YWwsIGV4cGVjdGVkLCB0cnVlKSkge1xuICAgIGZhaWwoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSwgJ25vdERlZXBTdHJpY3RFcXVhbCcsIG5vdERlZXBTdHJpY3RFcXVhbCk7XG4gIH1cbn1cblxuXG4vLyA5LiBUaGUgc3RyaWN0IGVxdWFsaXR5IGFzc2VydGlvbiB0ZXN0cyBzdHJpY3QgZXF1YWxpdHksIGFzIGRldGVybWluZWQgYnkgPT09LlxuLy8gYXNzZXJ0LnN0cmljdEVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2Vfb3B0KTtcblxuYXNzZXJ0LnN0cmljdEVxdWFsID0gZnVuY3Rpb24gc3RyaWN0RXF1YWwoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkge1xuICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkge1xuICAgIGZhaWwoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSwgJz09PScsIGFzc2VydC5zdHJpY3RFcXVhbCk7XG4gIH1cbn07XG5cbi8vIDEwLiBUaGUgc3RyaWN0IG5vbi1lcXVhbGl0eSBhc3NlcnRpb24gdGVzdHMgZm9yIHN0cmljdCBpbmVxdWFsaXR5LCBhc1xuLy8gZGV0ZXJtaW5lZCBieSAhPT0uICBhc3NlcnQubm90U3RyaWN0RXF1YWwoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZV9vcHQpO1xuXG5hc3NlcnQubm90U3RyaWN0RXF1YWwgPSBmdW5jdGlvbiBub3RTdHJpY3RFcXVhbChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7XG4gIGlmIChhY3R1YWwgPT09IGV4cGVjdGVkKSB7XG4gICAgZmFpbChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlLCAnIT09JywgYXNzZXJ0Lm5vdFN0cmljdEVxdWFsKTtcbiAgfVxufTtcblxuZnVuY3Rpb24gZXhwZWN0ZWRFeGNlcHRpb24oYWN0dWFsLCBleHBlY3RlZCkge1xuICBpZiAoIWFjdHVhbCB8fCAhZXhwZWN0ZWQpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGV4cGVjdGVkKSA9PSAnW29iamVjdCBSZWdFeHBdJykge1xuICAgIHJldHVybiBleHBlY3RlZC50ZXN0KGFjdHVhbCk7XG4gIH1cblxuICB0cnkge1xuICAgIGlmIChhY3R1YWwgaW5zdGFuY2VvZiBleHBlY3RlZCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9IGNhdGNoIChlKSB7XG4gICAgLy8gSWdub3JlLiAgVGhlIGluc3RhbmNlb2YgY2hlY2sgZG9lc24ndCB3b3JrIGZvciBhcnJvdyBmdW5jdGlvbnMuXG4gIH1cblxuICBpZiAoRXJyb3IuaXNQcm90b3R5cGVPZihleHBlY3RlZCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gZXhwZWN0ZWQuY2FsbCh7fSwgYWN0dWFsKSA9PT0gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gX3RyeUJsb2NrKGJsb2NrKSB7XG4gIHZhciBlcnJvcjtcbiAgdHJ5IHtcbiAgICBibG9jaygpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgZXJyb3IgPSBlO1xuICB9XG4gIHJldHVybiBlcnJvcjtcbn1cblxuZnVuY3Rpb24gX3Rocm93cyhzaG91bGRUaHJvdywgYmxvY2ssIGV4cGVjdGVkLCBtZXNzYWdlKSB7XG4gIHZhciBhY3R1YWw7XG5cbiAgaWYgKHR5cGVvZiBibG9jayAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1wiYmxvY2tcIiBhcmd1bWVudCBtdXN0IGJlIGEgZnVuY3Rpb24nKTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgZXhwZWN0ZWQgPT09ICdzdHJpbmcnKSB7XG4gICAgbWVzc2FnZSA9IGV4cGVjdGVkO1xuICAgIGV4cGVjdGVkID0gbnVsbDtcbiAgfVxuXG4gIGFjdHVhbCA9IF90cnlCbG9jayhibG9jayk7XG5cbiAgbWVzc2FnZSA9IChleHBlY3RlZCAmJiBleHBlY3RlZC5uYW1lID8gJyAoJyArIGV4cGVjdGVkLm5hbWUgKyAnKS4nIDogJy4nKSArXG4gICAgICAgICAgICAobWVzc2FnZSA/ICcgJyArIG1lc3NhZ2UgOiAnLicpO1xuXG4gIGlmIChzaG91bGRUaHJvdyAmJiAhYWN0dWFsKSB7XG4gICAgZmFpbChhY3R1YWwsIGV4cGVjdGVkLCAnTWlzc2luZyBleHBlY3RlZCBleGNlcHRpb24nICsgbWVzc2FnZSk7XG4gIH1cblxuICB2YXIgdXNlclByb3ZpZGVkTWVzc2FnZSA9IHR5cGVvZiBtZXNzYWdlID09PSAnc3RyaW5nJztcbiAgdmFyIGlzVW53YW50ZWRFeGNlcHRpb24gPSAhc2hvdWxkVGhyb3cgJiYgdXRpbC5pc0Vycm9yKGFjdHVhbCk7XG4gIHZhciBpc1VuZXhwZWN0ZWRFeGNlcHRpb24gPSAhc2hvdWxkVGhyb3cgJiYgYWN0dWFsICYmICFleHBlY3RlZDtcblxuICBpZiAoKGlzVW53YW50ZWRFeGNlcHRpb24gJiZcbiAgICAgIHVzZXJQcm92aWRlZE1lc3NhZ2UgJiZcbiAgICAgIGV4cGVjdGVkRXhjZXB0aW9uKGFjdHVhbCwgZXhwZWN0ZWQpKSB8fFxuICAgICAgaXNVbmV4cGVjdGVkRXhjZXB0aW9uKSB7XG4gICAgZmFpbChhY3R1YWwsIGV4cGVjdGVkLCAnR290IHVud2FudGVkIGV4Y2VwdGlvbicgKyBtZXNzYWdlKTtcbiAgfVxuXG4gIGlmICgoc2hvdWxkVGhyb3cgJiYgYWN0dWFsICYmIGV4cGVjdGVkICYmXG4gICAgICAhZXhwZWN0ZWRFeGNlcHRpb24oYWN0dWFsLCBleHBlY3RlZCkpIHx8ICghc2hvdWxkVGhyb3cgJiYgYWN0dWFsKSkge1xuICAgIHRocm93IGFjdHVhbDtcbiAgfVxufVxuXG4vLyAxMS4gRXhwZWN0ZWQgdG8gdGhyb3cgYW4gZXJyb3I6XG4vLyBhc3NlcnQudGhyb3dzKGJsb2NrLCBFcnJvcl9vcHQsIG1lc3NhZ2Vfb3B0KTtcblxuYXNzZXJ0LnRocm93cyA9IGZ1bmN0aW9uKGJsb2NrLCAvKm9wdGlvbmFsKi9lcnJvciwgLypvcHRpb25hbCovbWVzc2FnZSkge1xuICBfdGhyb3dzKHRydWUsIGJsb2NrLCBlcnJvciwgbWVzc2FnZSk7XG59O1xuXG4vLyBFWFRFTlNJT04hIFRoaXMgaXMgYW5ub3lpbmcgdG8gd3JpdGUgb3V0c2lkZSB0aGlzIG1vZHVsZS5cbmFzc2VydC5kb2VzTm90VGhyb3cgPSBmdW5jdGlvbihibG9jaywgLypvcHRpb25hbCovZXJyb3IsIC8qb3B0aW9uYWwqL21lc3NhZ2UpIHtcbiAgX3Rocm93cyhmYWxzZSwgYmxvY2ssIGVycm9yLCBtZXNzYWdlKTtcbn07XG5cbmFzc2VydC5pZkVycm9yID0gZnVuY3Rpb24oZXJyKSB7IGlmIChlcnIpIHRocm93IGVycjsgfTtcblxudmFyIG9iamVjdEtleXMgPSBPYmplY3Qua2V5cyB8fCBmdW5jdGlvbiAob2JqKSB7XG4gIHZhciBrZXlzID0gW107XG4gIGZvciAodmFyIGtleSBpbiBvYmopIHtcbiAgICBpZiAoaGFzT3duLmNhbGwob2JqLCBrZXkpKSBrZXlzLnB1c2goa2V5KTtcbiAgfVxuICByZXR1cm4ga2V5cztcbn07XG4iLCIvKiFcbiAqIGFzc2VydGlvbi1lcnJvclxuICogQ29weXJpZ2h0KGMpIDIwMTMgSmFrZSBMdWVyIDxqYWtlQHF1YWxpYW5jeS5jb20+XG4gKiBNSVQgTGljZW5zZWRcbiAqL1xuXG4vKiFcbiAqIFJldHVybiBhIGZ1bmN0aW9uIHRoYXQgd2lsbCBjb3B5IHByb3BlcnRpZXMgZnJvbVxuICogb25lIG9iamVjdCB0byBhbm90aGVyIGV4Y2x1ZGluZyBhbnkgb3JpZ2luYWxseVxuICogbGlzdGVkLiBSZXR1cm5lZCBmdW5jdGlvbiB3aWxsIGNyZWF0ZSBhIG5ldyBge31gLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBleGNsdWRlZCBwcm9wZXJ0aWVzIC4uLlxuICogQHJldHVybiB7RnVuY3Rpb259XG4gKi9cblxuZnVuY3Rpb24gZXhjbHVkZSAoKSB7XG4gIHZhciBleGNsdWRlcyA9IFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzKTtcblxuICBmdW5jdGlvbiBleGNsdWRlUHJvcHMgKHJlcywgb2JqKSB7XG4gICAgT2JqZWN0LmtleXMob2JqKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgIGlmICghfmV4Y2x1ZGVzLmluZGV4T2Yoa2V5KSkgcmVzW2tleV0gPSBvYmpba2V5XTtcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbiBleHRlbmRFeGNsdWRlICgpIHtcbiAgICB2YXIgYXJncyA9IFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzKVxuICAgICAgLCBpID0gMFxuICAgICAgLCByZXMgPSB7fTtcblxuICAgIGZvciAoOyBpIDwgYXJncy5sZW5ndGg7IGkrKykge1xuICAgICAgZXhjbHVkZVByb3BzKHJlcywgYXJnc1tpXSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcztcbiAgfTtcbn07XG5cbi8qIVxuICogUHJpbWFyeSBFeHBvcnRzXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSBBc3NlcnRpb25FcnJvcjtcblxuLyoqXG4gKiAjIyMgQXNzZXJ0aW9uRXJyb3JcbiAqXG4gKiBBbiBleHRlbnNpb24gb2YgdGhlIEphdmFTY3JpcHQgYEVycm9yYCBjb25zdHJ1Y3RvciBmb3JcbiAqIGFzc2VydGlvbiBhbmQgdmFsaWRhdGlvbiBzY2VuYXJpb3MuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IG1lc3NhZ2VcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wZXJ0aWVzIHRvIGluY2x1ZGUgKG9wdGlvbmFsKVxuICogQHBhcmFtIHtjYWxsZWV9IHN0YXJ0IHN0YWNrIGZ1bmN0aW9uIChvcHRpb25hbClcbiAqL1xuXG5mdW5jdGlvbiBBc3NlcnRpb25FcnJvciAobWVzc2FnZSwgX3Byb3BzLCBzc2YpIHtcbiAgdmFyIGV4dGVuZCA9IGV4Y2x1ZGUoJ25hbWUnLCAnbWVzc2FnZScsICdzdGFjaycsICdjb25zdHJ1Y3RvcicsICd0b0pTT04nKVxuICAgICwgcHJvcHMgPSBleHRlbmQoX3Byb3BzIHx8IHt9KTtcblxuICAvLyBkZWZhdWx0IHZhbHVlc1xuICB0aGlzLm1lc3NhZ2UgPSBtZXNzYWdlIHx8ICdVbnNwZWNpZmllZCBBc3NlcnRpb25FcnJvcic7XG4gIHRoaXMuc2hvd0RpZmYgPSBmYWxzZTtcblxuICAvLyBjb3B5IGZyb20gcHJvcGVydGllc1xuICBmb3IgKHZhciBrZXkgaW4gcHJvcHMpIHtcbiAgICB0aGlzW2tleV0gPSBwcm9wc1trZXldO1xuICB9XG5cbiAgLy8gY2FwdHVyZSBzdGFjayB0cmFjZVxuICBzc2YgPSBzc2YgfHwgYXJndW1lbnRzLmNhbGxlZTtcbiAgaWYgKHNzZiAmJiBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSkge1xuICAgIEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsIHNzZik7XG4gIH0gZWxzZSB7XG4gICAgdHJ5IHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigpO1xuICAgIH0gY2F0Y2goZSkge1xuICAgICAgdGhpcy5zdGFjayA9IGUuc3RhY2s7XG4gICAgfVxuICB9XG59XG5cbi8qIVxuICogSW5oZXJpdCBmcm9tIEVycm9yLnByb3RvdHlwZVxuICovXG5cbkFzc2VydGlvbkVycm9yLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoRXJyb3IucHJvdG90eXBlKTtcblxuLyohXG4gKiBTdGF0aWNhbGx5IHNldCBuYW1lXG4gKi9cblxuQXNzZXJ0aW9uRXJyb3IucHJvdG90eXBlLm5hbWUgPSAnQXNzZXJ0aW9uRXJyb3InO1xuXG4vKiFcbiAqIEVuc3VyZSBjb3JyZWN0IGNvbnN0cnVjdG9yXG4gKi9cblxuQXNzZXJ0aW9uRXJyb3IucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQXNzZXJ0aW9uRXJyb3I7XG5cbi8qKlxuICogQWxsb3cgZXJyb3JzIHRvIGJlIGNvbnZlcnRlZCB0byBKU09OIGZvciBzdGF0aWMgdHJhbnNmZXIuXG4gKlxuICogQHBhcmFtIHtCb29sZWFufSBpbmNsdWRlIHN0YWNrIChkZWZhdWx0OiBgdHJ1ZWApXG4gKiBAcmV0dXJuIHtPYmplY3R9IG9iamVjdCB0aGF0IGNhbiBiZSBgSlNPTi5zdHJpbmdpZnlgXG4gKi9cblxuQXNzZXJ0aW9uRXJyb3IucHJvdG90eXBlLnRvSlNPTiA9IGZ1bmN0aW9uIChzdGFjaykge1xuICB2YXIgZXh0ZW5kID0gZXhjbHVkZSgnY29uc3RydWN0b3InLCAndG9KU09OJywgJ3N0YWNrJylcbiAgICAsIHByb3BzID0gZXh0ZW5kKHsgbmFtZTogdGhpcy5uYW1lIH0sIHRoaXMpO1xuXG4gIC8vIGluY2x1ZGUgc3RhY2sgaWYgZXhpc3RzIGFuZCBub3QgdHVybmVkIG9mZlxuICBpZiAoZmFsc2UgIT09IHN0YWNrICYmIHRoaXMuc3RhY2spIHtcbiAgICBwcm9wcy5zdGFjayA9IHRoaXMuc3RhY2s7XG4gIH1cblxuICByZXR1cm4gcHJvcHM7XG59O1xuIiwiKGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgICB0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcgPyBmYWN0b3J5KGV4cG9ydHMpIDpcbiAgICB0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWydleHBvcnRzJ10sIGZhY3RvcnkpIDpcbiAgICAoZmFjdG9yeSgoZ2xvYmFsLmFzeW5jID0gZ2xvYmFsLmFzeW5jIHx8IHt9KSkpO1xufSh0aGlzLCAoZnVuY3Rpb24gKGV4cG9ydHMpIHsgJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIEEgZmFzdGVyIGFsdGVybmF0aXZlIHRvIGBGdW5jdGlvbiNhcHBseWAsIHRoaXMgZnVuY3Rpb24gaW52b2tlcyBgZnVuY2BcbiAqIHdpdGggdGhlIGB0aGlzYCBiaW5kaW5nIG9mIGB0aGlzQXJnYCBhbmQgdGhlIGFyZ3VtZW50cyBvZiBgYXJnc2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGludm9rZS5cbiAqIEBwYXJhbSB7Kn0gdGhpc0FyZyBUaGUgYHRoaXNgIGJpbmRpbmcgb2YgYGZ1bmNgLlxuICogQHBhcmFtIHtBcnJheX0gYXJncyBUaGUgYXJndW1lbnRzIHRvIGludm9rZSBgZnVuY2Agd2l0aC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSByZXN1bHQgb2YgYGZ1bmNgLlxuICovXG5mdW5jdGlvbiBhcHBseShmdW5jLCB0aGlzQXJnLCBhcmdzKSB7XG4gIHN3aXRjaCAoYXJncy5sZW5ndGgpIHtcbiAgICBjYXNlIDA6IHJldHVybiBmdW5jLmNhbGwodGhpc0FyZyk7XG4gICAgY2FzZSAxOiByZXR1cm4gZnVuYy5jYWxsKHRoaXNBcmcsIGFyZ3NbMF0pO1xuICAgIGNhc2UgMjogcmV0dXJuIGZ1bmMuY2FsbCh0aGlzQXJnLCBhcmdzWzBdLCBhcmdzWzFdKTtcbiAgICBjYXNlIDM6IHJldHVybiBmdW5jLmNhbGwodGhpc0FyZywgYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSk7XG4gIH1cbiAgcmV0dXJuIGZ1bmMuYXBwbHkodGhpc0FyZywgYXJncyk7XG59XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIGZvciB0aG9zZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgb3RoZXIgYGxvZGFzaGAgbWV0aG9kcy4gKi9cbnZhciBuYXRpdmVNYXggPSBNYXRoLm1heDtcblxuLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VSZXN0YCB3aGljaCB0cmFuc2Zvcm1zIHRoZSByZXN0IGFycmF5LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBhcHBseSBhIHJlc3QgcGFyYW1ldGVyIHRvLlxuICogQHBhcmFtIHtudW1iZXJ9IFtzdGFydD1mdW5jLmxlbmd0aC0xXSBUaGUgc3RhcnQgcG9zaXRpb24gb2YgdGhlIHJlc3QgcGFyYW1ldGVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gdHJhbnNmb3JtIFRoZSByZXN0IGFycmF5IHRyYW5zZm9ybS5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBvdmVyUmVzdCQxKGZ1bmMsIHN0YXJ0LCB0cmFuc2Zvcm0pIHtcbiAgc3RhcnQgPSBuYXRpdmVNYXgoc3RhcnQgPT09IHVuZGVmaW5lZCA/IChmdW5jLmxlbmd0aCAtIDEpIDogc3RhcnQsIDApO1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgdmFyIGFyZ3MgPSBhcmd1bWVudHMsXG4gICAgICAgIGluZGV4ID0gLTEsXG4gICAgICAgIGxlbmd0aCA9IG5hdGl2ZU1heChhcmdzLmxlbmd0aCAtIHN0YXJ0LCAwKSxcbiAgICAgICAgYXJyYXkgPSBBcnJheShsZW5ndGgpO1xuXG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIGFycmF5W2luZGV4XSA9IGFyZ3Nbc3RhcnQgKyBpbmRleF07XG4gICAgfVxuICAgIGluZGV4ID0gLTE7XG4gICAgdmFyIG90aGVyQXJncyA9IEFycmF5KHN0YXJ0ICsgMSk7XG4gICAgd2hpbGUgKCsraW5kZXggPCBzdGFydCkge1xuICAgICAgb3RoZXJBcmdzW2luZGV4XSA9IGFyZ3NbaW5kZXhdO1xuICAgIH1cbiAgICBvdGhlckFyZ3Nbc3RhcnRdID0gdHJhbnNmb3JtKGFycmF5KTtcbiAgICByZXR1cm4gYXBwbHkoZnVuYywgdGhpcywgb3RoZXJBcmdzKTtcbiAgfTtcbn1cblxuLyoqXG4gKiBUaGlzIG1ldGhvZCByZXR1cm5zIHRoZSBmaXJzdCBhcmd1bWVudCBpdCByZWNlaXZlcy5cbiAqXG4gKiBAc3RhdGljXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgVXRpbFxuICogQHBhcmFtIHsqfSB2YWx1ZSBBbnkgdmFsdWUuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyBgdmFsdWVgLlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0ID0geyAnYSc6IDEgfTtcbiAqXG4gKiBjb25zb2xlLmxvZyhfLmlkZW50aXR5KG9iamVjdCkgPT09IG9iamVjdCk7XG4gKiAvLyA9PiB0cnVlXG4gKi9cbmZ1bmN0aW9uIGlkZW50aXR5KHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZTtcbn1cblxuLy8gTG9kYXNoIHJlc3QgZnVuY3Rpb24gd2l0aG91dCBmdW5jdGlvbi50b1N0cmluZygpXG4vLyByZW1hcHBpbmdzXG5mdW5jdGlvbiByZXN0KGZ1bmMsIHN0YXJ0KSB7XG4gICAgcmV0dXJuIG92ZXJSZXN0JDEoZnVuYywgc3RhcnQsIGlkZW50aXR5KTtcbn1cblxudmFyIGluaXRpYWxQYXJhbXMgPSBmdW5jdGlvbiAoZm4pIHtcbiAgICByZXR1cm4gcmVzdChmdW5jdGlvbiAoYXJncyAvKi4uLiwgY2FsbGJhY2sqLykge1xuICAgICAgICB2YXIgY2FsbGJhY2sgPSBhcmdzLnBvcCgpO1xuICAgICAgICBmbi5jYWxsKHRoaXMsIGFyZ3MsIGNhbGxiYWNrKTtcbiAgICB9KTtcbn07XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgdGhlXG4gKiBbbGFuZ3VhZ2UgdHlwZV0oaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLWVjbWFzY3JpcHQtbGFuZ3VhZ2UtdHlwZXMpXG4gKiBvZiBgT2JqZWN0YC4gKGUuZy4gYXJyYXlzLCBmdW5jdGlvbnMsIG9iamVjdHMsIHJlZ2V4ZXMsIGBuZXcgTnVtYmVyKDApYCwgYW5kIGBuZXcgU3RyaW5nKCcnKWApXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gb2JqZWN0LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNPYmplY3Qoe30pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3QoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0KF8ubm9vcCk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdChudWxsKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzT2JqZWN0KHZhbHVlKSB7XG4gIHZhciB0eXBlID0gdHlwZW9mIHZhbHVlO1xuICByZXR1cm4gdmFsdWUgIT0gbnVsbCAmJiAodHlwZSA9PSAnb2JqZWN0JyB8fCB0eXBlID09ICdmdW5jdGlvbicpO1xufVxuXG4vKipcbiAqIFRha2UgYSBzeW5jIGZ1bmN0aW9uIGFuZCBtYWtlIGl0IGFzeW5jLCBwYXNzaW5nIGl0cyByZXR1cm4gdmFsdWUgdG8gYVxuICogY2FsbGJhY2suIFRoaXMgaXMgdXNlZnVsIGZvciBwbHVnZ2luZyBzeW5jIGZ1bmN0aW9ucyBpbnRvIGEgd2F0ZXJmYWxsLFxuICogc2VyaWVzLCBvciBvdGhlciBhc3luYyBmdW5jdGlvbnMuIEFueSBhcmd1bWVudHMgcGFzc2VkIHRvIHRoZSBnZW5lcmF0ZWRcbiAqIGZ1bmN0aW9uIHdpbGwgYmUgcGFzc2VkIHRvIHRoZSB3cmFwcGVkIGZ1bmN0aW9uIChleGNlcHQgZm9yIHRoZSBmaW5hbFxuICogY2FsbGJhY2sgYXJndW1lbnQpLiBFcnJvcnMgdGhyb3duIHdpbGwgYmUgcGFzc2VkIHRvIHRoZSBjYWxsYmFjay5cbiAqXG4gKiBJZiB0aGUgZnVuY3Rpb24gcGFzc2VkIHRvIGBhc3luY2lmeWAgcmV0dXJucyBhIFByb21pc2UsIHRoYXQgcHJvbWlzZXMnc1xuICogcmVzb2x2ZWQvcmVqZWN0ZWQgc3RhdGUgd2lsbCBiZSB1c2VkIHRvIGNhbGwgdGhlIGNhbGxiYWNrLCByYXRoZXIgdGhhbiBzaW1wbHlcbiAqIHRoZSBzeW5jaHJvbm91cyByZXR1cm4gdmFsdWUuXG4gKlxuICogVGhpcyBhbHNvIG1lYW5zIHlvdSBjYW4gYXN5bmNpZnkgRVMyMDE3IGBhc3luY2AgZnVuY3Rpb25zLlxuICpcbiAqIEBuYW1lIGFzeW5jaWZ5XG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgbW9kdWxlOlV0aWxzXG4gKiBAbWV0aG9kXG4gKiBAYWxpYXMgd3JhcFN5bmNcbiAqIEBjYXRlZ29yeSBVdGlsXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIC0gVGhlIHN5bmNocm9ub3VzIGZ1bnVjdGlvbiwgb3IgUHJvbWlzZS1yZXR1cm5pbmdcbiAqIGZ1bmN0aW9uIHRvIGNvbnZlcnQgdG8gYW4ge0BsaW5rIEFzeW5jRnVuY3Rpb259LlxuICogQHJldHVybnMge0FzeW5jRnVuY3Rpb259IEFuIGFzeW5jaHJvbm91cyB3cmFwcGVyIG9mIHRoZSBgZnVuY2AuIFRvIGJlXG4gKiBpbnZva2VkIHdpdGggYChhcmdzLi4uLCBjYWxsYmFjaylgLlxuICogQGV4YW1wbGVcbiAqXG4gKiAvLyBwYXNzaW5nIGEgcmVndWxhciBzeW5jaHJvbm91cyBmdW5jdGlvblxuICogYXN5bmMud2F0ZXJmYWxsKFtcbiAqICAgICBhc3luYy5hcHBseShmcy5yZWFkRmlsZSwgZmlsZW5hbWUsIFwidXRmOFwiKSxcbiAqICAgICBhc3luYy5hc3luY2lmeShKU09OLnBhcnNlKSxcbiAqICAgICBmdW5jdGlvbiAoZGF0YSwgbmV4dCkge1xuICogICAgICAgICAvLyBkYXRhIGlzIHRoZSByZXN1bHQgb2YgcGFyc2luZyB0aGUgdGV4dC5cbiAqICAgICAgICAgLy8gSWYgdGhlcmUgd2FzIGEgcGFyc2luZyBlcnJvciwgaXQgd291bGQgaGF2ZSBiZWVuIGNhdWdodC5cbiAqICAgICB9XG4gKiBdLCBjYWxsYmFjayk7XG4gKlxuICogLy8gcGFzc2luZyBhIGZ1bmN0aW9uIHJldHVybmluZyBhIHByb21pc2VcbiAqIGFzeW5jLndhdGVyZmFsbChbXG4gKiAgICAgYXN5bmMuYXBwbHkoZnMucmVhZEZpbGUsIGZpbGVuYW1lLCBcInV0ZjhcIiksXG4gKiAgICAgYXN5bmMuYXN5bmNpZnkoZnVuY3Rpb24gKGNvbnRlbnRzKSB7XG4gKiAgICAgICAgIHJldHVybiBkYi5tb2RlbC5jcmVhdGUoY29udGVudHMpO1xuICogICAgIH0pLFxuICogICAgIGZ1bmN0aW9uIChtb2RlbCwgbmV4dCkge1xuICogICAgICAgICAvLyBgbW9kZWxgIGlzIHRoZSBpbnN0YW50aWF0ZWQgbW9kZWwgb2JqZWN0LlxuICogICAgICAgICAvLyBJZiB0aGVyZSB3YXMgYW4gZXJyb3IsIHRoaXMgZnVuY3Rpb24gd291bGQgYmUgc2tpcHBlZC5cbiAqICAgICB9XG4gKiBdLCBjYWxsYmFjayk7XG4gKlxuICogLy8gZXMyMDE3IGV4YW1wbGUsIHRob3VnaCBgYXN5bmNpZnlgIGlzIG5vdCBuZWVkZWQgaWYgeW91ciBKUyBlbnZpcm9ubWVudFxuICogLy8gc3VwcG9ydHMgYXN5bmMgZnVuY3Rpb25zIG91dCBvZiB0aGUgYm94XG4gKiB2YXIgcSA9IGFzeW5jLnF1ZXVlKGFzeW5jLmFzeW5jaWZ5KGFzeW5jIGZ1bmN0aW9uKGZpbGUpIHtcbiAqICAgICB2YXIgaW50ZXJtZWRpYXRlU3RlcCA9IGF3YWl0IHByb2Nlc3NGaWxlKGZpbGUpO1xuICogICAgIHJldHVybiBhd2FpdCBzb21lUHJvbWlzZShpbnRlcm1lZGlhdGVTdGVwKVxuICogfSkpO1xuICpcbiAqIHEucHVzaChmaWxlcyk7XG4gKi9cbmZ1bmN0aW9uIGFzeW5jaWZ5KGZ1bmMpIHtcbiAgICByZXR1cm4gaW5pdGlhbFBhcmFtcyhmdW5jdGlvbiAoYXJncywgY2FsbGJhY2spIHtcbiAgICAgICAgdmFyIHJlc3VsdDtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJlc3VsdCA9IGZ1bmMuYXBwbHkodGhpcywgYXJncyk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhlKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBpZiByZXN1bHQgaXMgUHJvbWlzZSBvYmplY3RcbiAgICAgICAgaWYgKGlzT2JqZWN0KHJlc3VsdCkgJiYgdHlwZW9mIHJlc3VsdC50aGVuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICByZXN1bHQudGhlbihmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICBjYWxsYmFjayhudWxsLCB2YWx1ZSk7XG4gICAgICAgICAgICB9LCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgICAgICAgICAgY2FsbGJhY2soZXJyLm1lc3NhZ2UgPyBlcnIgOiBuZXcgRXJyb3IoZXJyKSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNhbGxiYWNrKG51bGwsIHJlc3VsdCk7XG4gICAgICAgIH1cbiAgICB9KTtcbn1cblxudmFyIHN1cHBvcnRzU3ltYm9sID0gdHlwZW9mIFN5bWJvbCA9PT0gJ2Z1bmN0aW9uJztcblxuZnVuY3Rpb24gc3VwcG9ydHNBc3luYygpIHtcbiAgICB2YXIgc3VwcG9ydGVkO1xuICAgIHRyeSB7XG4gICAgICAgIC8qIGVzbGludCBuby1ldmFsOiAwICovXG4gICAgICAgIHN1cHBvcnRlZCA9IGlzQXN5bmMoZXZhbCgnKGFzeW5jIGZ1bmN0aW9uICgpIHt9KScpKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHN1cHBvcnRlZCA9IGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gc3VwcG9ydGVkO1xufVxuXG5mdW5jdGlvbiBpc0FzeW5jKGZuKSB7XG4gICAgcmV0dXJuIHN1cHBvcnRzU3ltYm9sICYmIGZuW1N5bWJvbC50b1N0cmluZ1RhZ10gPT09ICdBc3luY0Z1bmN0aW9uJztcbn1cblxuZnVuY3Rpb24gd3JhcEFzeW5jKGFzeW5jRm4pIHtcbiAgICByZXR1cm4gaXNBc3luYyhhc3luY0ZuKSA/IGFzeW5jaWZ5KGFzeW5jRm4pIDogYXN5bmNGbjtcbn1cblxudmFyIHdyYXBBc3luYyQxID0gc3VwcG9ydHNBc3luYygpID8gd3JhcEFzeW5jIDogaWRlbnRpdHk7XG5cbmZ1bmN0aW9uIGFwcGx5RWFjaCQxKGVhY2hmbikge1xuICAgIHJldHVybiByZXN0KGZ1bmN0aW9uIChmbnMsIGFyZ3MpIHtcbiAgICAgICAgdmFyIGdvID0gaW5pdGlhbFBhcmFtcyhmdW5jdGlvbiAoYXJncywgY2FsbGJhY2spIHtcbiAgICAgICAgICAgIHZhciB0aGF0ID0gdGhpcztcbiAgICAgICAgICAgIHJldHVybiBlYWNoZm4oZm5zLCBmdW5jdGlvbiAoZm4sIGNiKSB7XG4gICAgICAgICAgICAgICAgd3JhcEFzeW5jJDEoZm4pLmFwcGx5KHRoYXQsIGFyZ3MuY29uY2F0KGNiKSk7XG4gICAgICAgICAgICB9LCBjYWxsYmFjayk7XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoYXJncy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiBnby5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBnbztcbiAgICAgICAgfVxuICAgIH0pO1xufVxuXG4vKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYGdsb2JhbGAgZnJvbSBOb2RlLmpzLiAqL1xudmFyIGZyZWVHbG9iYWwgPSB0eXBlb2YgZ2xvYmFsID09ICdvYmplY3QnICYmIGdsb2JhbCAmJiBnbG9iYWwuT2JqZWN0ID09PSBPYmplY3QgJiYgZ2xvYmFsO1xuXG4vKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYHNlbGZgLiAqL1xudmFyIGZyZWVTZWxmID0gdHlwZW9mIHNlbGYgPT0gJ29iamVjdCcgJiYgc2VsZiAmJiBzZWxmLk9iamVjdCA9PT0gT2JqZWN0ICYmIHNlbGY7XG5cbi8qKiBVc2VkIGFzIGEgcmVmZXJlbmNlIHRvIHRoZSBnbG9iYWwgb2JqZWN0LiAqL1xudmFyIHJvb3QgPSBmcmVlR2xvYmFsIHx8IGZyZWVTZWxmIHx8IEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycpKCk7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIFN5bWJvbCQxID0gcm9vdC5TeW1ib2w7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogVXNlZCB0byByZXNvbHZlIHRoZVxuICogW2B0b1N0cmluZ1RhZ2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLW9iamVjdC5wcm90b3R5cGUudG9zdHJpbmcpXG4gKiBvZiB2YWx1ZXMuXG4gKi9cbnZhciBuYXRpdmVPYmplY3RUb1N0cmluZyA9IG9iamVjdFByb3RvLnRvU3RyaW5nO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBzeW1Ub1N0cmluZ1RhZyQxID0gU3ltYm9sJDEgPyBTeW1ib2wkMS50b1N0cmluZ1RhZyA6IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VHZXRUYWdgIHdoaWNoIGlnbm9yZXMgYFN5bWJvbC50b1N0cmluZ1RhZ2AgdmFsdWVzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHJhdyBgdG9TdHJpbmdUYWdgLlxuICovXG5mdW5jdGlvbiBnZXRSYXdUYWcodmFsdWUpIHtcbiAgdmFyIGlzT3duID0gaGFzT3duUHJvcGVydHkuY2FsbCh2YWx1ZSwgc3ltVG9TdHJpbmdUYWckMSksXG4gICAgICB0YWcgPSB2YWx1ZVtzeW1Ub1N0cmluZ1RhZyQxXTtcblxuICB0cnkge1xuICAgIHZhbHVlW3N5bVRvU3RyaW5nVGFnJDFdID0gdW5kZWZpbmVkO1xuICAgIHZhciB1bm1hc2tlZCA9IHRydWU7XG4gIH0gY2F0Y2ggKGUpIHt9XG5cbiAgdmFyIHJlc3VsdCA9IG5hdGl2ZU9iamVjdFRvU3RyaW5nLmNhbGwodmFsdWUpO1xuICBpZiAodW5tYXNrZWQpIHtcbiAgICBpZiAoaXNPd24pIHtcbiAgICAgIHZhbHVlW3N5bVRvU3RyaW5nVGFnJDFdID0gdGFnO1xuICAgIH0gZWxzZSB7XG4gICAgICBkZWxldGUgdmFsdWVbc3ltVG9TdHJpbmdUYWckMV07XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byQxID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqXG4gKiBVc2VkIHRvIHJlc29sdmUgdGhlXG4gKiBbYHRvU3RyaW5nVGFnYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtb2JqZWN0LnByb3RvdHlwZS50b3N0cmluZylcbiAqIG9mIHZhbHVlcy5cbiAqL1xudmFyIG5hdGl2ZU9iamVjdFRvU3RyaW5nJDEgPSBvYmplY3RQcm90byQxLnRvU3RyaW5nO1xuXG4vKipcbiAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBzdHJpbmcgdXNpbmcgYE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmdgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgY29udmVydGVkIHN0cmluZy5cbiAqL1xuZnVuY3Rpb24gb2JqZWN0VG9TdHJpbmcodmFsdWUpIHtcbiAgcmV0dXJuIG5hdGl2ZU9iamVjdFRvU3RyaW5nJDEuY2FsbCh2YWx1ZSk7XG59XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBudWxsVGFnID0gJ1tvYmplY3QgTnVsbF0nO1xudmFyIHVuZGVmaW5lZFRhZyA9ICdbb2JqZWN0IFVuZGVmaW5lZF0nO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBzeW1Ub1N0cmluZ1RhZyA9IFN5bWJvbCQxID8gU3ltYm9sJDEudG9TdHJpbmdUYWcgOiB1bmRlZmluZWQ7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYGdldFRhZ2Agd2l0aG91dCBmYWxsYmFja3MgZm9yIGJ1Z2d5IGVudmlyb25tZW50cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBgdG9TdHJpbmdUYWdgLlxuICovXG5mdW5jdGlvbiBiYXNlR2V0VGFnKHZhbHVlKSB7XG4gIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWRUYWcgOiBudWxsVGFnO1xuICB9XG4gIHZhbHVlID0gT2JqZWN0KHZhbHVlKTtcbiAgcmV0dXJuIChzeW1Ub1N0cmluZ1RhZyAmJiBzeW1Ub1N0cmluZ1RhZyBpbiB2YWx1ZSlcbiAgICA/IGdldFJhd1RhZyh2YWx1ZSlcbiAgICA6IG9iamVjdFRvU3RyaW5nKHZhbHVlKTtcbn1cblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIGFzeW5jVGFnID0gJ1tvYmplY3QgQXN5bmNGdW5jdGlvbl0nO1xudmFyIGZ1bmNUYWcgPSAnW29iamVjdCBGdW5jdGlvbl0nO1xudmFyIGdlblRhZyA9ICdbb2JqZWN0IEdlbmVyYXRvckZ1bmN0aW9uXSc7XG52YXIgcHJveHlUYWcgPSAnW29iamVjdCBQcm94eV0nO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgRnVuY3Rpb25gIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIGZ1bmN0aW9uLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNGdW5jdGlvbihfKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzRnVuY3Rpb24oL2FiYy8pO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNGdW5jdGlvbih2YWx1ZSkge1xuICBpZiAoIWlzT2JqZWN0KHZhbHVlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICAvLyBUaGUgdXNlIG9mIGBPYmplY3QjdG9TdHJpbmdgIGF2b2lkcyBpc3N1ZXMgd2l0aCB0aGUgYHR5cGVvZmAgb3BlcmF0b3JcbiAgLy8gaW4gU2FmYXJpIDkgd2hpY2ggcmV0dXJucyAnb2JqZWN0JyBmb3IgdHlwZWQgYXJyYXlzIGFuZCBvdGhlciBjb25zdHJ1Y3RvcnMuXG4gIHZhciB0YWcgPSBiYXNlR2V0VGFnKHZhbHVlKTtcbiAgcmV0dXJuIHRhZyA9PSBmdW5jVGFnIHx8IHRhZyA9PSBnZW5UYWcgfHwgdGFnID09IGFzeW5jVGFnIHx8IHRhZyA9PSBwcm94eVRhZztcbn1cblxuLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgTUFYX1NBRkVfSU5URUdFUiA9IDkwMDcxOTkyNTQ3NDA5OTE7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSB2YWxpZCBhcnJheS1saWtlIGxlbmd0aC5cbiAqXG4gKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgbG9vc2VseSBiYXNlZCBvblxuICogW2BUb0xlbmd0aGBdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXRvbGVuZ3RoKS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHZhbGlkIGxlbmd0aCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzTGVuZ3RoKDMpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNMZW5ndGgoTnVtYmVyLk1JTl9WQUxVRSk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNMZW5ndGgoSW5maW5pdHkpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzTGVuZ3RoKCczJyk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0xlbmd0aCh2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09ICdudW1iZXInICYmXG4gICAgdmFsdWUgPiAtMSAmJiB2YWx1ZSAlIDEgPT0gMCAmJiB2YWx1ZSA8PSBNQVhfU0FGRV9JTlRFR0VSO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGFycmF5LWxpa2UuIEEgdmFsdWUgaXMgY29uc2lkZXJlZCBhcnJheS1saWtlIGlmIGl0J3NcbiAqIG5vdCBhIGZ1bmN0aW9uIGFuZCBoYXMgYSBgdmFsdWUubGVuZ3RoYCB0aGF0J3MgYW4gaW50ZWdlciBncmVhdGVyIHRoYW4gb3JcbiAqIGVxdWFsIHRvIGAwYCBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIGBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUmAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYXJyYXktbGlrZSwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzQXJyYXlMaWtlKFsxLCAyLCAzXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0FycmF5TGlrZShkb2N1bWVudC5ib2R5LmNoaWxkcmVuKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJyYXlMaWtlKCdhYmMnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJyYXlMaWtlKF8ubm9vcCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0FycmF5TGlrZSh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgIT0gbnVsbCAmJiBpc0xlbmd0aCh2YWx1ZS5sZW5ndGgpICYmICFpc0Z1bmN0aW9uKHZhbHVlKTtcbn1cblxuLy8gQSB0ZW1wb3JhcnkgdmFsdWUgdXNlZCB0byBpZGVudGlmeSBpZiB0aGUgbG9vcCBzaG91bGQgYmUgYnJva2VuLlxuLy8gU2VlICMxMDY0LCAjMTI5M1xudmFyIGJyZWFrTG9vcCA9IHt9O1xuXG4vKipcbiAqIFRoaXMgbWV0aG9kIHJldHVybnMgYHVuZGVmaW5lZGAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAyLjMuMFxuICogQGNhdGVnb3J5IFV0aWxcbiAqIEBleGFtcGxlXG4gKlxuICogXy50aW1lcygyLCBfLm5vb3ApO1xuICogLy8gPT4gW3VuZGVmaW5lZCwgdW5kZWZpbmVkXVxuICovXG5mdW5jdGlvbiBub29wKCkge1xuICAvLyBObyBvcGVyYXRpb24gcGVyZm9ybWVkLlxufVxuXG5mdW5jdGlvbiBvbmNlKGZuKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKGZuID09PSBudWxsKSByZXR1cm47XG4gICAgICAgIHZhciBjYWxsRm4gPSBmbjtcbiAgICAgICAgZm4gPSBudWxsO1xuICAgICAgICBjYWxsRm4uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICB9O1xufVxuXG52YXIgaXRlcmF0b3JTeW1ib2wgPSB0eXBlb2YgU3ltYm9sID09PSAnZnVuY3Rpb24nICYmIFN5bWJvbC5pdGVyYXRvcjtcblxudmFyIGdldEl0ZXJhdG9yID0gZnVuY3Rpb24gKGNvbGwpIHtcbiAgICByZXR1cm4gaXRlcmF0b3JTeW1ib2wgJiYgY29sbFtpdGVyYXRvclN5bWJvbF0gJiYgY29sbFtpdGVyYXRvclN5bWJvbF0oKTtcbn07XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udGltZXNgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kc1xuICogb3IgbWF4IGFycmF5IGxlbmd0aCBjaGVja3MuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7bnVtYmVyfSBuIFRoZSBudW1iZXIgb2YgdGltZXMgdG8gaW52b2tlIGBpdGVyYXRlZWAuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiByZXN1bHRzLlxuICovXG5mdW5jdGlvbiBiYXNlVGltZXMobiwgaXRlcmF0ZWUpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICByZXN1bHQgPSBBcnJheShuKTtcblxuICB3aGlsZSAoKytpbmRleCA8IG4pIHtcbiAgICByZXN1bHRbaW5kZXhdID0gaXRlcmF0ZWUoaW5kZXgpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgb2JqZWN0LWxpa2UuIEEgdmFsdWUgaXMgb2JqZWN0LWxpa2UgaWYgaXQncyBub3QgYG51bGxgXG4gKiBhbmQgaGFzIGEgYHR5cGVvZmAgcmVzdWx0IG9mIFwib2JqZWN0XCIuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgb2JqZWN0LWxpa2UsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc09iamVjdExpa2Uoe30pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKFsxLCAyLCAzXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdExpa2UoXy5ub29wKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc09iamVjdExpa2UobnVsbCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc09iamVjdExpa2UodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgJiYgdHlwZW9mIHZhbHVlID09ICdvYmplY3QnO1xufVxuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgYXJnc1RhZyA9ICdbb2JqZWN0IEFyZ3VtZW50c10nO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzQXJndW1lbnRzYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBgYXJndW1lbnRzYCBvYmplY3QsXG4gKi9cbmZ1bmN0aW9uIGJhc2VJc0FyZ3VtZW50cyh2YWx1ZSkge1xuICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBiYXNlR2V0VGFnKHZhbHVlKSA9PSBhcmdzVGFnO1xufVxuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8kMyA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5JDIgPSBvYmplY3RQcm90byQzLmhhc093blByb3BlcnR5O1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBwcm9wZXJ0eUlzRW51bWVyYWJsZSA9IG9iamVjdFByb3RvJDMucHJvcGVydHlJc0VudW1lcmFibGU7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgbGlrZWx5IGFuIGBhcmd1bWVudHNgIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBgYXJndW1lbnRzYCBvYmplY3QsXG4gKiAgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzQXJndW1lbnRzKGZ1bmN0aW9uKCkgeyByZXR1cm4gYXJndW1lbnRzOyB9KCkpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcmd1bWVudHMoWzEsIDIsIDNdKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbnZhciBpc0FyZ3VtZW50cyA9IGJhc2VJc0FyZ3VtZW50cyhmdW5jdGlvbigpIHsgcmV0dXJuIGFyZ3VtZW50czsgfSgpKSA/IGJhc2VJc0FyZ3VtZW50cyA6IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGhhc093blByb3BlcnR5JDIuY2FsbCh2YWx1ZSwgJ2NhbGxlZScpICYmXG4gICAgIXByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwodmFsdWUsICdjYWxsZWUnKTtcbn07XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhbiBgQXJyYXlgIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBhcnJheSwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzQXJyYXkoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJyYXkoZG9jdW1lbnQuYm9keS5jaGlsZHJlbik7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNBcnJheSgnYWJjJyk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNBcnJheShfLm5vb3ApO1xuICogLy8gPT4gZmFsc2VcbiAqL1xudmFyIGlzQXJyYXkgPSBBcnJheS5pc0FycmF5O1xuXG4vKipcbiAqIFRoaXMgbWV0aG9kIHJldHVybnMgYGZhbHNlYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMTMuMFxuICogQGNhdGVnb3J5IFV0aWxcbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8udGltZXMoMiwgXy5zdHViRmFsc2UpO1xuICogLy8gPT4gW2ZhbHNlLCBmYWxzZV1cbiAqL1xuZnVuY3Rpb24gc3R1YkZhbHNlKCkge1xuICByZXR1cm4gZmFsc2U7XG59XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgZXhwb3J0c2AuICovXG52YXIgZnJlZUV4cG9ydHMgPSB0eXBlb2YgZXhwb3J0cyA9PSAnb2JqZWN0JyAmJiBleHBvcnRzICYmICFleHBvcnRzLm5vZGVUeXBlICYmIGV4cG9ydHM7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgbW9kdWxlYC4gKi9cbnZhciBmcmVlTW9kdWxlID0gZnJlZUV4cG9ydHMgJiYgdHlwZW9mIG1vZHVsZSA9PSAnb2JqZWN0JyAmJiBtb2R1bGUgJiYgIW1vZHVsZS5ub2RlVHlwZSAmJiBtb2R1bGU7XG5cbi8qKiBEZXRlY3QgdGhlIHBvcHVsYXIgQ29tbW9uSlMgZXh0ZW5zaW9uIGBtb2R1bGUuZXhwb3J0c2AuICovXG52YXIgbW9kdWxlRXhwb3J0cyA9IGZyZWVNb2R1bGUgJiYgZnJlZU1vZHVsZS5leHBvcnRzID09PSBmcmVlRXhwb3J0cztcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgQnVmZmVyID0gbW9kdWxlRXhwb3J0cyA/IHJvb3QuQnVmZmVyIDogdW5kZWZpbmVkO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyBmb3IgdGhvc2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGFzIG90aGVyIGBsb2Rhc2hgIG1ldGhvZHMuICovXG52YXIgbmF0aXZlSXNCdWZmZXIgPSBCdWZmZXIgPyBCdWZmZXIuaXNCdWZmZXIgOiB1bmRlZmluZWQ7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSBidWZmZXIuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjMuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBidWZmZXIsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0J1ZmZlcihuZXcgQnVmZmVyKDIpKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQnVmZmVyKG5ldyBVaW50OEFycmF5KDIpKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbnZhciBpc0J1ZmZlciA9IG5hdGl2ZUlzQnVmZmVyIHx8IHN0dWJGYWxzZTtcblxuLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgTUFYX1NBRkVfSU5URUdFUiQxID0gOTAwNzE5OTI1NDc0MDk5MTtcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IHVuc2lnbmVkIGludGVnZXIgdmFsdWVzLiAqL1xudmFyIHJlSXNVaW50ID0gL14oPzowfFsxLTldXFxkKikkLztcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIHZhbGlkIGFycmF5LWxpa2UgaW5kZXguXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHBhcmFtIHtudW1iZXJ9IFtsZW5ndGg9TUFYX1NBRkVfSU5URUdFUl0gVGhlIHVwcGVyIGJvdW5kcyBvZiBhIHZhbGlkIGluZGV4LlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSB2YWxpZCBpbmRleCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBpc0luZGV4KHZhbHVlLCBsZW5ndGgpIHtcbiAgbGVuZ3RoID0gbGVuZ3RoID09IG51bGwgPyBNQVhfU0FGRV9JTlRFR0VSJDEgOiBsZW5ndGg7XG4gIHJldHVybiAhIWxlbmd0aCAmJlxuICAgICh0eXBlb2YgdmFsdWUgPT0gJ251bWJlcicgfHwgcmVJc1VpbnQudGVzdCh2YWx1ZSkpICYmXG4gICAgKHZhbHVlID4gLTEgJiYgdmFsdWUgJSAxID09IDAgJiYgdmFsdWUgPCBsZW5ndGgpO1xufVxuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgYXJnc1RhZyQxID0gJ1tvYmplY3QgQXJndW1lbnRzXSc7XG52YXIgYXJyYXlUYWcgPSAnW29iamVjdCBBcnJheV0nO1xudmFyIGJvb2xUYWcgPSAnW29iamVjdCBCb29sZWFuXSc7XG52YXIgZGF0ZVRhZyA9ICdbb2JqZWN0IERhdGVdJztcbnZhciBlcnJvclRhZyA9ICdbb2JqZWN0IEVycm9yXSc7XG52YXIgZnVuY1RhZyQxID0gJ1tvYmplY3QgRnVuY3Rpb25dJztcbnZhciBtYXBUYWcgPSAnW29iamVjdCBNYXBdJztcbnZhciBudW1iZXJUYWcgPSAnW29iamVjdCBOdW1iZXJdJztcbnZhciBvYmplY3RUYWcgPSAnW29iamVjdCBPYmplY3RdJztcbnZhciByZWdleHBUYWcgPSAnW29iamVjdCBSZWdFeHBdJztcbnZhciBzZXRUYWcgPSAnW29iamVjdCBTZXRdJztcbnZhciBzdHJpbmdUYWcgPSAnW29iamVjdCBTdHJpbmddJztcbnZhciB3ZWFrTWFwVGFnID0gJ1tvYmplY3QgV2Vha01hcF0nO1xuXG52YXIgYXJyYXlCdWZmZXJUYWcgPSAnW29iamVjdCBBcnJheUJ1ZmZlcl0nO1xudmFyIGRhdGFWaWV3VGFnID0gJ1tvYmplY3QgRGF0YVZpZXddJztcbnZhciBmbG9hdDMyVGFnID0gJ1tvYmplY3QgRmxvYXQzMkFycmF5XSc7XG52YXIgZmxvYXQ2NFRhZyA9ICdbb2JqZWN0IEZsb2F0NjRBcnJheV0nO1xudmFyIGludDhUYWcgPSAnW29iamVjdCBJbnQ4QXJyYXldJztcbnZhciBpbnQxNlRhZyA9ICdbb2JqZWN0IEludDE2QXJyYXldJztcbnZhciBpbnQzMlRhZyA9ICdbb2JqZWN0IEludDMyQXJyYXldJztcbnZhciB1aW50OFRhZyA9ICdbb2JqZWN0IFVpbnQ4QXJyYXldJztcbnZhciB1aW50OENsYW1wZWRUYWcgPSAnW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0nO1xudmFyIHVpbnQxNlRhZyA9ICdbb2JqZWN0IFVpbnQxNkFycmF5XSc7XG52YXIgdWludDMyVGFnID0gJ1tvYmplY3QgVWludDMyQXJyYXldJztcblxuLyoqIFVzZWQgdG8gaWRlbnRpZnkgYHRvU3RyaW5nVGFnYCB2YWx1ZXMgb2YgdHlwZWQgYXJyYXlzLiAqL1xudmFyIHR5cGVkQXJyYXlUYWdzID0ge307XG50eXBlZEFycmF5VGFnc1tmbG9hdDMyVGFnXSA9IHR5cGVkQXJyYXlUYWdzW2Zsb2F0NjRUYWddID1cbnR5cGVkQXJyYXlUYWdzW2ludDhUYWddID0gdHlwZWRBcnJheVRhZ3NbaW50MTZUYWddID1cbnR5cGVkQXJyYXlUYWdzW2ludDMyVGFnXSA9IHR5cGVkQXJyYXlUYWdzW3VpbnQ4VGFnXSA9XG50eXBlZEFycmF5VGFnc1t1aW50OENsYW1wZWRUYWddID0gdHlwZWRBcnJheVRhZ3NbdWludDE2VGFnXSA9XG50eXBlZEFycmF5VGFnc1t1aW50MzJUYWddID0gdHJ1ZTtcbnR5cGVkQXJyYXlUYWdzW2FyZ3NUYWckMV0gPSB0eXBlZEFycmF5VGFnc1thcnJheVRhZ10gPVxudHlwZWRBcnJheVRhZ3NbYXJyYXlCdWZmZXJUYWddID0gdHlwZWRBcnJheVRhZ3NbYm9vbFRhZ10gPVxudHlwZWRBcnJheVRhZ3NbZGF0YVZpZXdUYWddID0gdHlwZWRBcnJheVRhZ3NbZGF0ZVRhZ10gPVxudHlwZWRBcnJheVRhZ3NbZXJyb3JUYWddID0gdHlwZWRBcnJheVRhZ3NbZnVuY1RhZyQxXSA9XG50eXBlZEFycmF5VGFnc1ttYXBUYWddID0gdHlwZWRBcnJheVRhZ3NbbnVtYmVyVGFnXSA9XG50eXBlZEFycmF5VGFnc1tvYmplY3RUYWddID0gdHlwZWRBcnJheVRhZ3NbcmVnZXhwVGFnXSA9XG50eXBlZEFycmF5VGFnc1tzZXRUYWddID0gdHlwZWRBcnJheVRhZ3Nbc3RyaW5nVGFnXSA9XG50eXBlZEFycmF5VGFnc1t3ZWFrTWFwVGFnXSA9IGZhbHNlO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzVHlwZWRBcnJheWAgd2l0aG91dCBOb2RlLmpzIG9wdGltaXphdGlvbnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSB0eXBlZCBhcnJheSwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlSXNUeXBlZEFycmF5KHZhbHVlKSB7XG4gIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmXG4gICAgaXNMZW5ndGgodmFsdWUubGVuZ3RoKSAmJiAhIXR5cGVkQXJyYXlUYWdzW2Jhc2VHZXRUYWcodmFsdWUpXTtcbn1cblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy51bmFyeWAgd2l0aG91dCBzdXBwb3J0IGZvciBzdG9yaW5nIG1ldGFkYXRhLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBjYXAgYXJndW1lbnRzIGZvci5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGNhcHBlZCBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gYmFzZVVuYXJ5KGZ1bmMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgcmV0dXJuIGZ1bmModmFsdWUpO1xuICB9O1xufVxuXG4vKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYGV4cG9ydHNgLiAqL1xudmFyIGZyZWVFeHBvcnRzJDEgPSB0eXBlb2YgZXhwb3J0cyA9PSAnb2JqZWN0JyAmJiBleHBvcnRzICYmICFleHBvcnRzLm5vZGVUeXBlICYmIGV4cG9ydHM7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgbW9kdWxlYC4gKi9cbnZhciBmcmVlTW9kdWxlJDEgPSBmcmVlRXhwb3J0cyQxICYmIHR5cGVvZiBtb2R1bGUgPT0gJ29iamVjdCcgJiYgbW9kdWxlICYmICFtb2R1bGUubm9kZVR5cGUgJiYgbW9kdWxlO1xuXG4vKiogRGV0ZWN0IHRoZSBwb3B1bGFyIENvbW1vbkpTIGV4dGVuc2lvbiBgbW9kdWxlLmV4cG9ydHNgLiAqL1xudmFyIG1vZHVsZUV4cG9ydHMkMSA9IGZyZWVNb2R1bGUkMSAmJiBmcmVlTW9kdWxlJDEuZXhwb3J0cyA9PT0gZnJlZUV4cG9ydHMkMTtcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBwcm9jZXNzYCBmcm9tIE5vZGUuanMuICovXG52YXIgZnJlZVByb2Nlc3MgPSBtb2R1bGVFeHBvcnRzJDEgJiYgZnJlZUdsb2JhbC5wcm9jZXNzO1xuXG4vKiogVXNlZCB0byBhY2Nlc3MgZmFzdGVyIE5vZGUuanMgaGVscGVycy4gKi9cbnZhciBub2RlVXRpbCA9IChmdW5jdGlvbigpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gZnJlZVByb2Nlc3MgJiYgZnJlZVByb2Nlc3MuYmluZGluZygndXRpbCcpO1xuICB9IGNhdGNoIChlKSB7fVxufSgpKTtcblxuLyogTm9kZS5qcyBoZWxwZXIgcmVmZXJlbmNlcy4gKi9cbnZhciBub2RlSXNUeXBlZEFycmF5ID0gbm9kZVV0aWwgJiYgbm9kZVV0aWwuaXNUeXBlZEFycmF5O1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSB0eXBlZCBhcnJheS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDMuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHR5cGVkIGFycmF5LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNUeXBlZEFycmF5KG5ldyBVaW50OEFycmF5KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzVHlwZWRBcnJheShbXSk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG52YXIgaXNUeXBlZEFycmF5ID0gbm9kZUlzVHlwZWRBcnJheSA/IGJhc2VVbmFyeShub2RlSXNUeXBlZEFycmF5KSA6IGJhc2VJc1R5cGVkQXJyYXk7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byQyID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkkMSA9IG9iamVjdFByb3RvJDIuaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgZW51bWVyYWJsZSBwcm9wZXJ0eSBuYW1lcyBvZiB0aGUgYXJyYXktbGlrZSBgdmFsdWVgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBxdWVyeS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gaW5oZXJpdGVkIFNwZWNpZnkgcmV0dXJuaW5nIGluaGVyaXRlZCBwcm9wZXJ0eSBuYW1lcy5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMuXG4gKi9cbmZ1bmN0aW9uIGFycmF5TGlrZUtleXModmFsdWUsIGluaGVyaXRlZCkge1xuICB2YXIgaXNBcnIgPSBpc0FycmF5KHZhbHVlKSxcbiAgICAgIGlzQXJnID0gIWlzQXJyICYmIGlzQXJndW1lbnRzKHZhbHVlKSxcbiAgICAgIGlzQnVmZiA9ICFpc0FyciAmJiAhaXNBcmcgJiYgaXNCdWZmZXIodmFsdWUpLFxuICAgICAgaXNUeXBlID0gIWlzQXJyICYmICFpc0FyZyAmJiAhaXNCdWZmICYmIGlzVHlwZWRBcnJheSh2YWx1ZSksXG4gICAgICBza2lwSW5kZXhlcyA9IGlzQXJyIHx8IGlzQXJnIHx8IGlzQnVmZiB8fCBpc1R5cGUsXG4gICAgICByZXN1bHQgPSBza2lwSW5kZXhlcyA/IGJhc2VUaW1lcyh2YWx1ZS5sZW5ndGgsIFN0cmluZykgOiBbXSxcbiAgICAgIGxlbmd0aCA9IHJlc3VsdC5sZW5ndGg7XG5cbiAgZm9yICh2YXIga2V5IGluIHZhbHVlKSB7XG4gICAgaWYgKChpbmhlcml0ZWQgfHwgaGFzT3duUHJvcGVydHkkMS5jYWxsKHZhbHVlLCBrZXkpKSAmJlxuICAgICAgICAhKHNraXBJbmRleGVzICYmIChcbiAgICAgICAgICAgLy8gU2FmYXJpIDkgaGFzIGVudW1lcmFibGUgYGFyZ3VtZW50cy5sZW5ndGhgIGluIHN0cmljdCBtb2RlLlxuICAgICAgICAgICBrZXkgPT0gJ2xlbmd0aCcgfHxcbiAgICAgICAgICAgLy8gTm9kZS5qcyAwLjEwIGhhcyBlbnVtZXJhYmxlIG5vbi1pbmRleCBwcm9wZXJ0aWVzIG9uIGJ1ZmZlcnMuXG4gICAgICAgICAgIChpc0J1ZmYgJiYgKGtleSA9PSAnb2Zmc2V0JyB8fCBrZXkgPT0gJ3BhcmVudCcpKSB8fFxuICAgICAgICAgICAvLyBQaGFudG9tSlMgMiBoYXMgZW51bWVyYWJsZSBub24taW5kZXggcHJvcGVydGllcyBvbiB0eXBlZCBhcnJheXMuXG4gICAgICAgICAgIChpc1R5cGUgJiYgKGtleSA9PSAnYnVmZmVyJyB8fCBrZXkgPT0gJ2J5dGVMZW5ndGgnIHx8IGtleSA9PSAnYnl0ZU9mZnNldCcpKSB8fFxuICAgICAgICAgICAvLyBTa2lwIGluZGV4IHByb3BlcnRpZXMuXG4gICAgICAgICAgIGlzSW5kZXgoa2V5LCBsZW5ndGgpXG4gICAgICAgICkpKSB7XG4gICAgICByZXN1bHQucHVzaChrZXkpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8kNSA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgbGlrZWx5IGEgcHJvdG90eXBlIG9iamVjdC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHByb3RvdHlwZSwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBpc1Byb3RvdHlwZSh2YWx1ZSkge1xuICB2YXIgQ3RvciA9IHZhbHVlICYmIHZhbHVlLmNvbnN0cnVjdG9yLFxuICAgICAgcHJvdG8gPSAodHlwZW9mIEN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBDdG9yLnByb3RvdHlwZSkgfHwgb2JqZWN0UHJvdG8kNTtcblxuICByZXR1cm4gdmFsdWUgPT09IHByb3RvO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSB1bmFyeSBmdW5jdGlvbiB0aGF0IGludm9rZXMgYGZ1bmNgIHdpdGggaXRzIGFyZ3VtZW50IHRyYW5zZm9ybWVkLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byB3cmFwLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gdHJhbnNmb3JtIFRoZSBhcmd1bWVudCB0cmFuc2Zvcm0uXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gb3ZlckFyZyhmdW5jLCB0cmFuc2Zvcm0pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKGFyZykge1xuICAgIHJldHVybiBmdW5jKHRyYW5zZm9ybShhcmcpKTtcbiAgfTtcbn1cblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgZm9yIHRob3NlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBvdGhlciBgbG9kYXNoYCBtZXRob2RzLiAqL1xudmFyIG5hdGl2ZUtleXMgPSBvdmVyQXJnKE9iamVjdC5rZXlzLCBPYmplY3QpO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8kNCA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5JDMgPSBvYmplY3RQcm90byQ0Lmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmtleXNgIHdoaWNoIGRvZXNuJ3QgdHJlYXQgc3BhcnNlIGFycmF5cyBhcyBkZW5zZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAqL1xuZnVuY3Rpb24gYmFzZUtleXMob2JqZWN0KSB7XG4gIGlmICghaXNQcm90b3R5cGUob2JqZWN0KSkge1xuICAgIHJldHVybiBuYXRpdmVLZXlzKG9iamVjdCk7XG4gIH1cbiAgdmFyIHJlc3VsdCA9IFtdO1xuICBmb3IgKHZhciBrZXkgaW4gT2JqZWN0KG9iamVjdCkpIHtcbiAgICBpZiAoaGFzT3duUHJvcGVydHkkMy5jYWxsKG9iamVjdCwga2V5KSAmJiBrZXkgIT0gJ2NvbnN0cnVjdG9yJykge1xuICAgICAgcmVzdWx0LnB1c2goa2V5KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGFuIGFycmF5IG9mIHRoZSBvd24gZW51bWVyYWJsZSBwcm9wZXJ0eSBuYW1lcyBvZiBgb2JqZWN0YC5cbiAqXG4gKiAqKk5vdGU6KiogTm9uLW9iamVjdCB2YWx1ZXMgYXJlIGNvZXJjZWQgdG8gb2JqZWN0cy4gU2VlIHRoZVxuICogW0VTIHNwZWNdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLW9iamVjdC5rZXlzKVxuICogZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBAc3RhdGljXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzLlxuICogQGV4YW1wbGVcbiAqXG4gKiBmdW5jdGlvbiBGb28oKSB7XG4gKiAgIHRoaXMuYSA9IDE7XG4gKiAgIHRoaXMuYiA9IDI7XG4gKiB9XG4gKlxuICogRm9vLnByb3RvdHlwZS5jID0gMztcbiAqXG4gKiBfLmtleXMobmV3IEZvbyk7XG4gKiAvLyA9PiBbJ2EnLCAnYiddIChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpXG4gKlxuICogXy5rZXlzKCdoaScpO1xuICogLy8gPT4gWycwJywgJzEnXVxuICovXG5mdW5jdGlvbiBrZXlzKG9iamVjdCkge1xuICByZXR1cm4gaXNBcnJheUxpa2Uob2JqZWN0KSA/IGFycmF5TGlrZUtleXMob2JqZWN0KSA6IGJhc2VLZXlzKG9iamVjdCk7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUFycmF5SXRlcmF0b3IoY29sbCkge1xuICAgIHZhciBpID0gLTE7XG4gICAgdmFyIGxlbiA9IGNvbGwubGVuZ3RoO1xuICAgIHJldHVybiBmdW5jdGlvbiBuZXh0KCkge1xuICAgICAgICByZXR1cm4gKytpIDwgbGVuID8geyB2YWx1ZTogY29sbFtpXSwga2V5OiBpIH0gOiBudWxsO1xuICAgIH07XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUVTMjAxNUl0ZXJhdG9yKGl0ZXJhdG9yKSB7XG4gICAgdmFyIGkgPSAtMTtcbiAgICByZXR1cm4gZnVuY3Rpb24gbmV4dCgpIHtcbiAgICAgICAgdmFyIGl0ZW0gPSBpdGVyYXRvci5uZXh0KCk7XG4gICAgICAgIGlmIChpdGVtLmRvbmUpIHJldHVybiBudWxsO1xuICAgICAgICBpKys7XG4gICAgICAgIHJldHVybiB7IHZhbHVlOiBpdGVtLnZhbHVlLCBrZXk6IGkgfTtcbiAgICB9O1xufVxuXG5mdW5jdGlvbiBjcmVhdGVPYmplY3RJdGVyYXRvcihvYmopIHtcbiAgICB2YXIgb2tleXMgPSBrZXlzKG9iaik7XG4gICAgdmFyIGkgPSAtMTtcbiAgICB2YXIgbGVuID0gb2tleXMubGVuZ3RoO1xuICAgIHJldHVybiBmdW5jdGlvbiBuZXh0KCkge1xuICAgICAgICB2YXIga2V5ID0gb2tleXNbKytpXTtcbiAgICAgICAgcmV0dXJuIGkgPCBsZW4gPyB7IHZhbHVlOiBvYmpba2V5XSwga2V5OiBrZXkgfSA6IG51bGw7XG4gICAgfTtcbn1cblxuZnVuY3Rpb24gaXRlcmF0b3IoY29sbCkge1xuICAgIGlmIChpc0FycmF5TGlrZShjb2xsKSkge1xuICAgICAgICByZXR1cm4gY3JlYXRlQXJyYXlJdGVyYXRvcihjb2xsKTtcbiAgICB9XG5cbiAgICB2YXIgaXRlcmF0b3IgPSBnZXRJdGVyYXRvcihjb2xsKTtcbiAgICByZXR1cm4gaXRlcmF0b3IgPyBjcmVhdGVFUzIwMTVJdGVyYXRvcihpdGVyYXRvcikgOiBjcmVhdGVPYmplY3RJdGVyYXRvcihjb2xsKTtcbn1cblxuZnVuY3Rpb24gb25seU9uY2UoZm4pIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoZm4gPT09IG51bGwpIHRocm93IG5ldyBFcnJvcihcIkNhbGxiYWNrIHdhcyBhbHJlYWR5IGNhbGxlZC5cIik7XG4gICAgICAgIHZhciBjYWxsRm4gPSBmbjtcbiAgICAgICAgZm4gPSBudWxsO1xuICAgICAgICBjYWxsRm4uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICB9O1xufVxuXG5mdW5jdGlvbiBfZWFjaE9mTGltaXQobGltaXQpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKG9iaiwgaXRlcmF0ZWUsIGNhbGxiYWNrKSB7XG4gICAgICAgIGNhbGxiYWNrID0gb25jZShjYWxsYmFjayB8fCBub29wKTtcbiAgICAgICAgaWYgKGxpbWl0IDw9IDAgfHwgIW9iaikge1xuICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKG51bGwpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBuZXh0RWxlbSA9IGl0ZXJhdG9yKG9iaik7XG4gICAgICAgIHZhciBkb25lID0gZmFsc2U7XG4gICAgICAgIHZhciBydW5uaW5nID0gMDtcblxuICAgICAgICBmdW5jdGlvbiBpdGVyYXRlZUNhbGxiYWNrKGVyciwgdmFsdWUpIHtcbiAgICAgICAgICAgIHJ1bm5pbmcgLT0gMTtcbiAgICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgICAgICBkb25lID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBjYWxsYmFjayhlcnIpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh2YWx1ZSA9PT0gYnJlYWtMb29wIHx8IGRvbmUgJiYgcnVubmluZyA8PSAwKSB7XG4gICAgICAgICAgICAgICAgZG9uZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKG51bGwpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXBsZW5pc2goKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIHJlcGxlbmlzaCgpIHtcbiAgICAgICAgICAgIHdoaWxlIChydW5uaW5nIDwgbGltaXQgJiYgIWRvbmUpIHtcbiAgICAgICAgICAgICAgICB2YXIgZWxlbSA9IG5leHRFbGVtKCk7XG4gICAgICAgICAgICAgICAgaWYgKGVsZW0gPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgZG9uZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGlmIChydW5uaW5nIDw9IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKG51bGwpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcnVubmluZyArPSAxO1xuICAgICAgICAgICAgICAgIGl0ZXJhdGVlKGVsZW0udmFsdWUsIGVsZW0ua2V5LCBvbmx5T25jZShpdGVyYXRlZUNhbGxiYWNrKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXBsZW5pc2goKTtcbiAgICB9O1xufVxuXG4vKipcbiAqIFRoZSBzYW1lIGFzIFtgZWFjaE9mYF17QGxpbmsgbW9kdWxlOkNvbGxlY3Rpb25zLmVhY2hPZn0gYnV0IHJ1bnMgYSBtYXhpbXVtIG9mIGBsaW1pdGAgYXN5bmMgb3BlcmF0aW9ucyBhdCBhXG4gKiB0aW1lLlxuICpcbiAqIEBuYW1lIGVhY2hPZkxpbWl0XG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgbW9kdWxlOkNvbGxlY3Rpb25zXG4gKiBAbWV0aG9kXG4gKiBAc2VlIFthc3luYy5lYWNoT2Zde0BsaW5rIG1vZHVsZTpDb2xsZWN0aW9ucy5lYWNoT2Z9XG4gKiBAYWxpYXMgZm9yRWFjaE9mTGltaXRcbiAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gKiBAcGFyYW0ge0FycmF5fEl0ZXJhYmxlfE9iamVjdH0gY29sbCAtIEEgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge251bWJlcn0gbGltaXQgLSBUaGUgbWF4aW11bSBudW1iZXIgb2YgYXN5bmMgb3BlcmF0aW9ucyBhdCBhIHRpbWUuXG4gKiBAcGFyYW0ge0FzeW5jRnVuY3Rpb259IGl0ZXJhdGVlIC0gQW4gYXN5bmMgZnVuY3Rpb24gdG8gYXBwbHkgdG8gZWFjaFxuICogaXRlbSBpbiBgY29sbGAuIFRoZSBga2V5YCBpcyB0aGUgaXRlbSdzIGtleSwgb3IgaW5kZXggaW4gdGhlIGNhc2Ugb2YgYW5cbiAqIGFycmF5LlxuICogSW52b2tlZCB3aXRoIChpdGVtLCBrZXksIGNhbGxiYWNrKS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjYWxsYmFja10gLSBBIGNhbGxiYWNrIHdoaWNoIGlzIGNhbGxlZCB3aGVuIGFsbFxuICogYGl0ZXJhdGVlYCBmdW5jdGlvbnMgaGF2ZSBmaW5pc2hlZCwgb3IgYW4gZXJyb3Igb2NjdXJzLiBJbnZva2VkIHdpdGggKGVycikuXG4gKi9cbmZ1bmN0aW9uIGVhY2hPZkxpbWl0KGNvbGwsIGxpbWl0LCBpdGVyYXRlZSwgY2FsbGJhY2spIHtcbiAgX2VhY2hPZkxpbWl0KGxpbWl0KShjb2xsLCB3cmFwQXN5bmMkMShpdGVyYXRlZSksIGNhbGxiYWNrKTtcbn1cblxuZnVuY3Rpb24gZG9MaW1pdChmbiwgbGltaXQpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKGl0ZXJhYmxlLCBpdGVyYXRlZSwgY2FsbGJhY2spIHtcbiAgICAgICAgcmV0dXJuIGZuKGl0ZXJhYmxlLCBsaW1pdCwgaXRlcmF0ZWUsIGNhbGxiYWNrKTtcbiAgICB9O1xufVxuXG4vLyBlYWNoT2YgaW1wbGVtZW50YXRpb24gb3B0aW1pemVkIGZvciBhcnJheS1saWtlc1xuZnVuY3Rpb24gZWFjaE9mQXJyYXlMaWtlKGNvbGwsIGl0ZXJhdGVlLCBjYWxsYmFjaykge1xuICAgIGNhbGxiYWNrID0gb25jZShjYWxsYmFjayB8fCBub29wKTtcbiAgICB2YXIgaW5kZXggPSAwLFxuICAgICAgICBjb21wbGV0ZWQgPSAwLFxuICAgICAgICBsZW5ndGggPSBjb2xsLmxlbmd0aDtcbiAgICBpZiAobGVuZ3RoID09PSAwKSB7XG4gICAgICAgIGNhbGxiYWNrKG51bGwpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGl0ZXJhdG9yQ2FsbGJhY2soZXJyLCB2YWx1ZSkge1xuICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICBjYWxsYmFjayhlcnIpO1xuICAgICAgICB9IGVsc2UgaWYgKCsrY29tcGxldGVkID09PSBsZW5ndGggfHwgdmFsdWUgPT09IGJyZWFrTG9vcCkge1xuICAgICAgICAgICAgY2FsbGJhY2sobnVsbCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKDsgaW5kZXggPCBsZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgaXRlcmF0ZWUoY29sbFtpbmRleF0sIGluZGV4LCBvbmx5T25jZShpdGVyYXRvckNhbGxiYWNrKSk7XG4gICAgfVxufVxuXG4vLyBhIGdlbmVyaWMgdmVyc2lvbiBvZiBlYWNoT2Ygd2hpY2ggY2FuIGhhbmRsZSBhcnJheSwgb2JqZWN0LCBhbmQgaXRlcmF0b3IgY2FzZXMuXG52YXIgZWFjaE9mR2VuZXJpYyA9IGRvTGltaXQoZWFjaE9mTGltaXQsIEluZmluaXR5KTtcblxuLyoqXG4gKiBMaWtlIFtgZWFjaGBde0BsaW5rIG1vZHVsZTpDb2xsZWN0aW9ucy5lYWNofSwgZXhjZXB0IHRoYXQgaXQgcGFzc2VzIHRoZSBrZXkgKG9yIGluZGV4KSBhcyB0aGUgc2Vjb25kIGFyZ3VtZW50XG4gKiB0byB0aGUgaXRlcmF0ZWUuXG4gKlxuICogQG5hbWUgZWFjaE9mXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgbW9kdWxlOkNvbGxlY3Rpb25zXG4gKiBAbWV0aG9kXG4gKiBAYWxpYXMgZm9yRWFjaE9mXG4gKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICogQHNlZSBbYXN5bmMuZWFjaF17QGxpbmsgbW9kdWxlOkNvbGxlY3Rpb25zLmVhY2h9XG4gKiBAcGFyYW0ge0FycmF5fEl0ZXJhYmxlfE9iamVjdH0gY29sbCAtIEEgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0FzeW5jRnVuY3Rpb259IGl0ZXJhdGVlIC0gQSBmdW5jdGlvbiB0byBhcHBseSB0byBlYWNoXG4gKiBpdGVtIGluIGBjb2xsYC5cbiAqIFRoZSBga2V5YCBpcyB0aGUgaXRlbSdzIGtleSwgb3IgaW5kZXggaW4gdGhlIGNhc2Ugb2YgYW4gYXJyYXkuXG4gKiBJbnZva2VkIHdpdGggKGl0ZW0sIGtleSwgY2FsbGJhY2spLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2NhbGxiYWNrXSAtIEEgY2FsbGJhY2sgd2hpY2ggaXMgY2FsbGVkIHdoZW4gYWxsXG4gKiBgaXRlcmF0ZWVgIGZ1bmN0aW9ucyBoYXZlIGZpbmlzaGVkLCBvciBhbiBlcnJvciBvY2N1cnMuIEludm9rZWQgd2l0aCAoZXJyKS5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iaiA9IHtkZXY6IFwiL2Rldi5qc29uXCIsIHRlc3Q6IFwiL3Rlc3QuanNvblwiLCBwcm9kOiBcIi9wcm9kLmpzb25cIn07XG4gKiB2YXIgY29uZmlncyA9IHt9O1xuICpcbiAqIGFzeW5jLmZvckVhY2hPZihvYmosIGZ1bmN0aW9uICh2YWx1ZSwga2V5LCBjYWxsYmFjaykge1xuICogICAgIGZzLnJlYWRGaWxlKF9fZGlybmFtZSArIHZhbHVlLCBcInV0ZjhcIiwgZnVuY3Rpb24gKGVyciwgZGF0YSkge1xuICogICAgICAgICBpZiAoZXJyKSByZXR1cm4gY2FsbGJhY2soZXJyKTtcbiAqICAgICAgICAgdHJ5IHtcbiAqICAgICAgICAgICAgIGNvbmZpZ3Nba2V5XSA9IEpTT04ucGFyc2UoZGF0YSk7XG4gKiAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAqICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhlKTtcbiAqICAgICAgICAgfVxuICogICAgICAgICBjYWxsYmFjaygpO1xuICogICAgIH0pO1xuICogfSwgZnVuY3Rpb24gKGVycikge1xuICogICAgIGlmIChlcnIpIGNvbnNvbGUuZXJyb3IoZXJyLm1lc3NhZ2UpO1xuICogICAgIC8vIGNvbmZpZ3MgaXMgbm93IGEgbWFwIG9mIEpTT04gZGF0YVxuICogICAgIGRvU29tZXRoaW5nV2l0aChjb25maWdzKTtcbiAqIH0pO1xuICovXG52YXIgZWFjaE9mID0gZnVuY3Rpb24gKGNvbGwsIGl0ZXJhdGVlLCBjYWxsYmFjaykge1xuICAgIHZhciBlYWNoT2ZJbXBsZW1lbnRhdGlvbiA9IGlzQXJyYXlMaWtlKGNvbGwpID8gZWFjaE9mQXJyYXlMaWtlIDogZWFjaE9mR2VuZXJpYztcbiAgICBlYWNoT2ZJbXBsZW1lbnRhdGlvbihjb2xsLCB3cmFwQXN5bmMkMShpdGVyYXRlZSksIGNhbGxiYWNrKTtcbn07XG5cbmZ1bmN0aW9uIGRvUGFyYWxsZWwoZm4pIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKG9iaiwgaXRlcmF0ZWUsIGNhbGxiYWNrKSB7XG4gICAgICAgIHJldHVybiBmbihlYWNoT2YsIG9iaiwgd3JhcEFzeW5jJDEoaXRlcmF0ZWUpLCBjYWxsYmFjayk7XG4gICAgfTtcbn1cblxuZnVuY3Rpb24gX2FzeW5jTWFwKGVhY2hmbiwgYXJyLCBpdGVyYXRlZSwgY2FsbGJhY2spIHtcbiAgICBjYWxsYmFjayA9IGNhbGxiYWNrIHx8IG5vb3A7XG4gICAgYXJyID0gYXJyIHx8IFtdO1xuICAgIHZhciByZXN1bHRzID0gW107XG4gICAgdmFyIGNvdW50ZXIgPSAwO1xuICAgIHZhciBfaXRlcmF0ZWUgPSB3cmFwQXN5bmMkMShpdGVyYXRlZSk7XG5cbiAgICBlYWNoZm4oYXJyLCBmdW5jdGlvbiAodmFsdWUsIF8sIGNhbGxiYWNrKSB7XG4gICAgICAgIHZhciBpbmRleCA9IGNvdW50ZXIrKztcbiAgICAgICAgX2l0ZXJhdGVlKHZhbHVlLCBmdW5jdGlvbiAoZXJyLCB2KSB7XG4gICAgICAgICAgICByZXN1bHRzW2luZGV4XSA9IHY7XG4gICAgICAgICAgICBjYWxsYmFjayhlcnIpO1xuICAgICAgICB9KTtcbiAgICB9LCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgIGNhbGxiYWNrKGVyciwgcmVzdWx0cyk7XG4gICAgfSk7XG59XG5cbi8qKlxuICogUHJvZHVjZXMgYSBuZXcgY29sbGVjdGlvbiBvZiB2YWx1ZXMgYnkgbWFwcGluZyBlYWNoIHZhbHVlIGluIGBjb2xsYCB0aHJvdWdoXG4gKiB0aGUgYGl0ZXJhdGVlYCBmdW5jdGlvbi4gVGhlIGBpdGVyYXRlZWAgaXMgY2FsbGVkIHdpdGggYW4gaXRlbSBmcm9tIGBjb2xsYFxuICogYW5kIGEgY2FsbGJhY2sgZm9yIHdoZW4gaXQgaGFzIGZpbmlzaGVkIHByb2Nlc3NpbmcuIEVhY2ggb2YgdGhlc2UgY2FsbGJhY2tcbiAqIHRha2VzIDIgYXJndW1lbnRzOiBhbiBgZXJyb3JgLCBhbmQgdGhlIHRyYW5zZm9ybWVkIGl0ZW0gZnJvbSBgY29sbGAuIElmXG4gKiBgaXRlcmF0ZWVgIHBhc3NlcyBhbiBlcnJvciB0byBpdHMgY2FsbGJhY2ssIHRoZSBtYWluIGBjYWxsYmFja2AgKGZvciB0aGVcbiAqIGBtYXBgIGZ1bmN0aW9uKSBpcyBpbW1lZGlhdGVseSBjYWxsZWQgd2l0aCB0aGUgZXJyb3IuXG4gKlxuICogTm90ZSwgdGhhdCBzaW5jZSB0aGlzIGZ1bmN0aW9uIGFwcGxpZXMgdGhlIGBpdGVyYXRlZWAgdG8gZWFjaCBpdGVtIGluXG4gKiBwYXJhbGxlbCwgdGhlcmUgaXMgbm8gZ3VhcmFudGVlIHRoYXQgdGhlIGBpdGVyYXRlZWAgZnVuY3Rpb25zIHdpbGwgY29tcGxldGVcbiAqIGluIG9yZGVyLiBIb3dldmVyLCB0aGUgcmVzdWx0cyBhcnJheSB3aWxsIGJlIGluIHRoZSBzYW1lIG9yZGVyIGFzIHRoZVxuICogb3JpZ2luYWwgYGNvbGxgLlxuICpcbiAqIElmIGBtYXBgIGlzIHBhc3NlZCBhbiBPYmplY3QsIHRoZSByZXN1bHRzIHdpbGwgYmUgYW4gQXJyYXkuICBUaGUgcmVzdWx0c1xuICogd2lsbCByb3VnaGx5IGJlIGluIHRoZSBvcmRlciBvZiB0aGUgb3JpZ2luYWwgT2JqZWN0cycga2V5cyAoYnV0IHRoaXMgY2FuXG4gKiB2YXJ5IGFjcm9zcyBKYXZhU2NyaXB0IGVuZ2luZXMpLlxuICpcbiAqIEBuYW1lIG1hcFxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIG1vZHVsZTpDb2xsZWN0aW9uc1xuICogQG1ldGhvZFxuICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAqIEBwYXJhbSB7QXJyYXl8SXRlcmFibGV8T2JqZWN0fSBjb2xsIC0gQSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7QXN5bmNGdW5jdGlvbn0gaXRlcmF0ZWUgLSBBbiBhc3luYyBmdW5jdGlvbiB0byBhcHBseSB0byBlYWNoIGl0ZW0gaW5cbiAqIGBjb2xsYC5cbiAqIFRoZSBpdGVyYXRlZSBzaG91bGQgY29tcGxldGUgd2l0aCB0aGUgdHJhbnNmb3JtZWQgaXRlbS5cbiAqIEludm9rZWQgd2l0aCAoaXRlbSwgY2FsbGJhY2spLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2NhbGxiYWNrXSAtIEEgY2FsbGJhY2sgd2hpY2ggaXMgY2FsbGVkIHdoZW4gYWxsIGBpdGVyYXRlZWBcbiAqIGZ1bmN0aW9ucyBoYXZlIGZpbmlzaGVkLCBvciBhbiBlcnJvciBvY2N1cnMuIFJlc3VsdHMgaXMgYW4gQXJyYXkgb2YgdGhlXG4gKiB0cmFuc2Zvcm1lZCBpdGVtcyBmcm9tIHRoZSBgY29sbGAuIEludm9rZWQgd2l0aCAoZXJyLCByZXN1bHRzKS5cbiAqIEBleGFtcGxlXG4gKlxuICogYXN5bmMubWFwKFsnZmlsZTEnLCdmaWxlMicsJ2ZpbGUzJ10sIGZzLnN0YXQsIGZ1bmN0aW9uKGVyciwgcmVzdWx0cykge1xuICogICAgIC8vIHJlc3VsdHMgaXMgbm93IGFuIGFycmF5IG9mIHN0YXRzIGZvciBlYWNoIGZpbGVcbiAqIH0pO1xuICovXG52YXIgbWFwID0gZG9QYXJhbGxlbChfYXN5bmNNYXApO1xuXG4vKipcbiAqIEFwcGxpZXMgdGhlIHByb3ZpZGVkIGFyZ3VtZW50cyB0byBlYWNoIGZ1bmN0aW9uIGluIHRoZSBhcnJheSwgY2FsbGluZ1xuICogYGNhbGxiYWNrYCBhZnRlciBhbGwgZnVuY3Rpb25zIGhhdmUgY29tcGxldGVkLiBJZiB5b3Ugb25seSBwcm92aWRlIHRoZSBmaXJzdFxuICogYXJndW1lbnQsIGBmbnNgLCB0aGVuIGl0IHdpbGwgcmV0dXJuIGEgZnVuY3Rpb24gd2hpY2ggbGV0cyB5b3UgcGFzcyBpbiB0aGVcbiAqIGFyZ3VtZW50cyBhcyBpZiBpdCB3ZXJlIGEgc2luZ2xlIGZ1bmN0aW9uIGNhbGwuIElmIG1vcmUgYXJndW1lbnRzIGFyZVxuICogcHJvdmlkZWQsIGBjYWxsYmFja2AgaXMgcmVxdWlyZWQgd2hpbGUgYGFyZ3NgIGlzIHN0aWxsIG9wdGlvbmFsLlxuICpcbiAqIEBuYW1lIGFwcGx5RWFjaFxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIG1vZHVsZTpDb250cm9sRmxvd1xuICogQG1ldGhvZFxuICogQGNhdGVnb3J5IENvbnRyb2wgRmxvd1xuICogQHBhcmFtIHtBcnJheXxJdGVyYWJsZXxPYmplY3R9IGZucyAtIEEgY29sbGVjdGlvbiBvZiB7QGxpbmsgQXN5bmNGdW5jdGlvbn1zXG4gKiB0byBhbGwgY2FsbCB3aXRoIHRoZSBzYW1lIGFyZ3VtZW50c1xuICogQHBhcmFtIHsuLi4qfSBbYXJnc10gLSBhbnkgbnVtYmVyIG9mIHNlcGFyYXRlIGFyZ3VtZW50cyB0byBwYXNzIHRvIHRoZVxuICogZnVuY3Rpb24uXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY2FsbGJhY2tdIC0gdGhlIGZpbmFsIGFyZ3VtZW50IHNob3VsZCBiZSB0aGUgY2FsbGJhY2ssXG4gKiBjYWxsZWQgd2hlbiBhbGwgZnVuY3Rpb25zIGhhdmUgY29tcGxldGVkIHByb2Nlc3NpbmcuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IC0gSWYgb25seSB0aGUgZmlyc3QgYXJndW1lbnQsIGBmbnNgLCBpcyBwcm92aWRlZCwgaXQgd2lsbFxuICogcmV0dXJuIGEgZnVuY3Rpb24gd2hpY2ggbGV0cyB5b3UgcGFzcyBpbiB0aGUgYXJndW1lbnRzIGFzIGlmIGl0IHdlcmUgYSBzaW5nbGVcbiAqIGZ1bmN0aW9uIGNhbGwuIFRoZSBzaWduYXR1cmUgaXMgYCguLmFyZ3MsIGNhbGxiYWNrKWAuIElmIGludm9rZWQgd2l0aCBhbnlcbiAqIGFyZ3VtZW50cywgYGNhbGxiYWNrYCBpcyByZXF1aXJlZC5cbiAqIEBleGFtcGxlXG4gKlxuICogYXN5bmMuYXBwbHlFYWNoKFtlbmFibGVTZWFyY2gsIHVwZGF0ZVNjaGVtYV0sICdidWNrZXQnLCBjYWxsYmFjayk7XG4gKlxuICogLy8gcGFydGlhbCBhcHBsaWNhdGlvbiBleGFtcGxlOlxuICogYXN5bmMuZWFjaChcbiAqICAgICBidWNrZXRzLFxuICogICAgIGFzeW5jLmFwcGx5RWFjaChbZW5hYmxlU2VhcmNoLCB1cGRhdGVTY2hlbWFdKSxcbiAqICAgICBjYWxsYmFja1xuICogKTtcbiAqL1xudmFyIGFwcGx5RWFjaCA9IGFwcGx5RWFjaCQxKG1hcCk7XG5cbmZ1bmN0aW9uIGRvUGFyYWxsZWxMaW1pdChmbikge1xuICAgIHJldHVybiBmdW5jdGlvbiAob2JqLCBsaW1pdCwgaXRlcmF0ZWUsIGNhbGxiYWNrKSB7XG4gICAgICAgIHJldHVybiBmbihfZWFjaE9mTGltaXQobGltaXQpLCBvYmosIHdyYXBBc3luYyQxKGl0ZXJhdGVlKSwgY2FsbGJhY2spO1xuICAgIH07XG59XG5cbi8qKlxuICogVGhlIHNhbWUgYXMgW2BtYXBgXXtAbGluayBtb2R1bGU6Q29sbGVjdGlvbnMubWFwfSBidXQgcnVucyBhIG1heGltdW0gb2YgYGxpbWl0YCBhc3luYyBvcGVyYXRpb25zIGF0IGEgdGltZS5cbiAqXG4gKiBAbmFtZSBtYXBMaW1pdFxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIG1vZHVsZTpDb2xsZWN0aW9uc1xuICogQG1ldGhvZFxuICogQHNlZSBbYXN5bmMubWFwXXtAbGluayBtb2R1bGU6Q29sbGVjdGlvbnMubWFwfVxuICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAqIEBwYXJhbSB7QXJyYXl8SXRlcmFibGV8T2JqZWN0fSBjb2xsIC0gQSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7bnVtYmVyfSBsaW1pdCAtIFRoZSBtYXhpbXVtIG51bWJlciBvZiBhc3luYyBvcGVyYXRpb25zIGF0IGEgdGltZS5cbiAqIEBwYXJhbSB7QXN5bmNGdW5jdGlvbn0gaXRlcmF0ZWUgLSBBbiBhc3luYyBmdW5jdGlvbiB0byBhcHBseSB0byBlYWNoIGl0ZW0gaW5cbiAqIGBjb2xsYC5cbiAqIFRoZSBpdGVyYXRlZSBzaG91bGQgY29tcGxldGUgd2l0aCB0aGUgdHJhbnNmb3JtZWQgaXRlbS5cbiAqIEludm9rZWQgd2l0aCAoaXRlbSwgY2FsbGJhY2spLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2NhbGxiYWNrXSAtIEEgY2FsbGJhY2sgd2hpY2ggaXMgY2FsbGVkIHdoZW4gYWxsIGBpdGVyYXRlZWBcbiAqIGZ1bmN0aW9ucyBoYXZlIGZpbmlzaGVkLCBvciBhbiBlcnJvciBvY2N1cnMuIFJlc3VsdHMgaXMgYW4gYXJyYXkgb2YgdGhlXG4gKiB0cmFuc2Zvcm1lZCBpdGVtcyBmcm9tIHRoZSBgY29sbGAuIEludm9rZWQgd2l0aCAoZXJyLCByZXN1bHRzKS5cbiAqL1xudmFyIG1hcExpbWl0ID0gZG9QYXJhbGxlbExpbWl0KF9hc3luY01hcCk7XG5cbi8qKlxuICogVGhlIHNhbWUgYXMgW2BtYXBgXXtAbGluayBtb2R1bGU6Q29sbGVjdGlvbnMubWFwfSBidXQgcnVucyBvbmx5IGEgc2luZ2xlIGFzeW5jIG9wZXJhdGlvbiBhdCBhIHRpbWUuXG4gKlxuICogQG5hbWUgbWFwU2VyaWVzXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgbW9kdWxlOkNvbGxlY3Rpb25zXG4gKiBAbWV0aG9kXG4gKiBAc2VlIFthc3luYy5tYXBde0BsaW5rIG1vZHVsZTpDb2xsZWN0aW9ucy5tYXB9XG4gKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICogQHBhcmFtIHtBcnJheXxJdGVyYWJsZXxPYmplY3R9IGNvbGwgLSBBIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtBc3luY0Z1bmN0aW9ufSBpdGVyYXRlZSAtIEFuIGFzeW5jIGZ1bmN0aW9uIHRvIGFwcGx5IHRvIGVhY2ggaXRlbSBpblxuICogYGNvbGxgLlxuICogVGhlIGl0ZXJhdGVlIHNob3VsZCBjb21wbGV0ZSB3aXRoIHRoZSB0cmFuc2Zvcm1lZCBpdGVtLlxuICogSW52b2tlZCB3aXRoIChpdGVtLCBjYWxsYmFjaykuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY2FsbGJhY2tdIC0gQSBjYWxsYmFjayB3aGljaCBpcyBjYWxsZWQgd2hlbiBhbGwgYGl0ZXJhdGVlYFxuICogZnVuY3Rpb25zIGhhdmUgZmluaXNoZWQsIG9yIGFuIGVycm9yIG9jY3Vycy4gUmVzdWx0cyBpcyBhbiBhcnJheSBvZiB0aGVcbiAqIHRyYW5zZm9ybWVkIGl0ZW1zIGZyb20gdGhlIGBjb2xsYC4gSW52b2tlZCB3aXRoIChlcnIsIHJlc3VsdHMpLlxuICovXG52YXIgbWFwU2VyaWVzID0gZG9MaW1pdChtYXBMaW1pdCwgMSk7XG5cbi8qKlxuICogVGhlIHNhbWUgYXMgW2BhcHBseUVhY2hgXXtAbGluayBtb2R1bGU6Q29udHJvbEZsb3cuYXBwbHlFYWNofSBidXQgcnVucyBvbmx5IGEgc2luZ2xlIGFzeW5jIG9wZXJhdGlvbiBhdCBhIHRpbWUuXG4gKlxuICogQG5hbWUgYXBwbHlFYWNoU2VyaWVzXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgbW9kdWxlOkNvbnRyb2xGbG93XG4gKiBAbWV0aG9kXG4gKiBAc2VlIFthc3luYy5hcHBseUVhY2hde0BsaW5rIG1vZHVsZTpDb250cm9sRmxvdy5hcHBseUVhY2h9XG4gKiBAY2F0ZWdvcnkgQ29udHJvbCBGbG93XG4gKiBAcGFyYW0ge0FycmF5fEl0ZXJhYmxlfE9iamVjdH0gZm5zIC0gQSBjb2xsZWN0aW9uIG9mIHtAbGluayBBc3luY0Z1bmN0aW9ufXMgdG8gYWxsXG4gKiBjYWxsIHdpdGggdGhlIHNhbWUgYXJndW1lbnRzXG4gKiBAcGFyYW0gey4uLip9IFthcmdzXSAtIGFueSBudW1iZXIgb2Ygc2VwYXJhdGUgYXJndW1lbnRzIHRvIHBhc3MgdG8gdGhlXG4gKiBmdW5jdGlvbi5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjYWxsYmFja10gLSB0aGUgZmluYWwgYXJndW1lbnQgc2hvdWxkIGJlIHRoZSBjYWxsYmFjayxcbiAqIGNhbGxlZCB3aGVuIGFsbCBmdW5jdGlvbnMgaGF2ZSBjb21wbGV0ZWQgcHJvY2Vzc2luZy5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gLSBJZiBvbmx5IHRoZSBmaXJzdCBhcmd1bWVudCBpcyBwcm92aWRlZCwgaXQgd2lsbCByZXR1cm5cbiAqIGEgZnVuY3Rpb24gd2hpY2ggbGV0cyB5b3UgcGFzcyBpbiB0aGUgYXJndW1lbnRzIGFzIGlmIGl0IHdlcmUgYSBzaW5nbGVcbiAqIGZ1bmN0aW9uIGNhbGwuXG4gKi9cbnZhciBhcHBseUVhY2hTZXJpZXMgPSBhcHBseUVhY2gkMShtYXBTZXJpZXMpO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBjb250aW51YXRpb24gZnVuY3Rpb24gd2l0aCBzb21lIGFyZ3VtZW50cyBhbHJlYWR5IGFwcGxpZWQuXG4gKlxuICogVXNlZnVsIGFzIGEgc2hvcnRoYW5kIHdoZW4gY29tYmluZWQgd2l0aCBvdGhlciBjb250cm9sIGZsb3cgZnVuY3Rpb25zLiBBbnlcbiAqIGFyZ3VtZW50cyBwYXNzZWQgdG8gdGhlIHJldHVybmVkIGZ1bmN0aW9uIGFyZSBhZGRlZCB0byB0aGUgYXJndW1lbnRzXG4gKiBvcmlnaW5hbGx5IHBhc3NlZCB0byBhcHBseS5cbiAqXG4gKiBAbmFtZSBhcHBseVxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIG1vZHVsZTpVdGlsc1xuICogQG1ldGhvZFxuICogQGNhdGVnb3J5IFV0aWxcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmN0aW9uIC0gVGhlIGZ1bmN0aW9uIHlvdSB3YW50IHRvIGV2ZW50dWFsbHkgYXBwbHkgYWxsXG4gKiBhcmd1bWVudHMgdG8uIEludm9rZXMgd2l0aCAoYXJndW1lbnRzLi4uKS5cbiAqIEBwYXJhbSB7Li4uKn0gYXJndW1lbnRzLi4uIC0gQW55IG51bWJlciBvZiBhcmd1bWVudHMgdG8gYXV0b21hdGljYWxseSBhcHBseVxuICogd2hlbiB0aGUgY29udGludWF0aW9uIGlzIGNhbGxlZC5cbiAqIEBleGFtcGxlXG4gKlxuICogLy8gdXNpbmcgYXBwbHlcbiAqIGFzeW5jLnBhcmFsbGVsKFtcbiAqICAgICBhc3luYy5hcHBseShmcy53cml0ZUZpbGUsICd0ZXN0ZmlsZTEnLCAndGVzdDEnKSxcbiAqICAgICBhc3luYy5hcHBseShmcy53cml0ZUZpbGUsICd0ZXN0ZmlsZTInLCAndGVzdDInKVxuICogXSk7XG4gKlxuICpcbiAqIC8vIHRoZSBzYW1lIHByb2Nlc3Mgd2l0aG91dCB1c2luZyBhcHBseVxuICogYXN5bmMucGFyYWxsZWwoW1xuICogICAgIGZ1bmN0aW9uKGNhbGxiYWNrKSB7XG4gKiAgICAgICAgIGZzLndyaXRlRmlsZSgndGVzdGZpbGUxJywgJ3Rlc3QxJywgY2FsbGJhY2spO1xuICogICAgIH0sXG4gKiAgICAgZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAqICAgICAgICAgZnMud3JpdGVGaWxlKCd0ZXN0ZmlsZTInLCAndGVzdDInLCBjYWxsYmFjayk7XG4gKiAgICAgfVxuICogXSk7XG4gKlxuICogLy8gSXQncyBwb3NzaWJsZSB0byBwYXNzIGFueSBudW1iZXIgb2YgYWRkaXRpb25hbCBhcmd1bWVudHMgd2hlbiBjYWxsaW5nIHRoZVxuICogLy8gY29udGludWF0aW9uOlxuICpcbiAqIG5vZGU+IHZhciBmbiA9IGFzeW5jLmFwcGx5KHN5cy5wdXRzLCAnb25lJyk7XG4gKiBub2RlPiBmbigndHdvJywgJ3RocmVlJyk7XG4gKiBvbmVcbiAqIHR3b1xuICogdGhyZWVcbiAqL1xudmFyIGFwcGx5JDIgPSByZXN0KGZ1bmN0aW9uIChmbiwgYXJncykge1xuICAgIHJldHVybiByZXN0KGZ1bmN0aW9uIChjYWxsQXJncykge1xuICAgICAgICByZXR1cm4gZm4uYXBwbHkobnVsbCwgYXJncy5jb25jYXQoY2FsbEFyZ3MpKTtcbiAgICB9KTtcbn0pO1xuXG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5mb3JFYWNoYCBmb3IgYXJyYXlzIHdpdGhvdXQgc3VwcG9ydCBmb3JcbiAqIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAqL1xuZnVuY3Rpb24gYXJyYXlFYWNoKGFycmF5LCBpdGVyYXRlZSkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgaWYgKGl0ZXJhdGVlKGFycmF5W2luZGV4XSwgaW5kZXgsIGFycmF5KSA9PT0gZmFsc2UpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICByZXR1cm4gYXJyYXk7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIGJhc2UgZnVuY3Rpb24gZm9yIG1ldGhvZHMgbGlrZSBgXy5mb3JJbmAgYW5kIGBfLmZvck93bmAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2Zyb21SaWdodF0gU3BlY2lmeSBpdGVyYXRpbmcgZnJvbSByaWdodCB0byBsZWZ0LlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYmFzZSBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gY3JlYXRlQmFzZUZvcihmcm9tUmlnaHQpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKG9iamVjdCwgaXRlcmF0ZWUsIGtleXNGdW5jKSB7XG4gICAgdmFyIGluZGV4ID0gLTEsXG4gICAgICAgIGl0ZXJhYmxlID0gT2JqZWN0KG9iamVjdCksXG4gICAgICAgIHByb3BzID0ga2V5c0Z1bmMob2JqZWN0KSxcbiAgICAgICAgbGVuZ3RoID0gcHJvcHMubGVuZ3RoO1xuXG4gICAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgICB2YXIga2V5ID0gcHJvcHNbZnJvbVJpZ2h0ID8gbGVuZ3RoIDogKytpbmRleF07XG4gICAgICBpZiAoaXRlcmF0ZWUoaXRlcmFibGVba2V5XSwga2V5LCBpdGVyYWJsZSkgPT09IGZhbHNlKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gb2JqZWN0O1xuICB9O1xufVxuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBiYXNlRm9yT3duYCB3aGljaCBpdGVyYXRlcyBvdmVyIGBvYmplY3RgXG4gKiBwcm9wZXJ0aWVzIHJldHVybmVkIGJ5IGBrZXlzRnVuY2AgYW5kIGludm9rZXMgYGl0ZXJhdGVlYCBmb3IgZWFjaCBwcm9wZXJ0eS5cbiAqIEl0ZXJhdGVlIGZ1bmN0aW9ucyBtYXkgZXhpdCBpdGVyYXRpb24gZWFybHkgYnkgZXhwbGljaXRseSByZXR1cm5pbmcgYGZhbHNlYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBrZXlzRnVuYyBUaGUgZnVuY3Rpb24gdG8gZ2V0IHRoZSBrZXlzIG9mIGBvYmplY3RgLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAqL1xudmFyIGJhc2VGb3IgPSBjcmVhdGVCYXNlRm9yKCk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uZm9yT3duYCB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAqL1xuZnVuY3Rpb24gYmFzZUZvck93bihvYmplY3QsIGl0ZXJhdGVlKSB7XG4gIHJldHVybiBvYmplY3QgJiYgYmFzZUZvcihvYmplY3QsIGl0ZXJhdGVlLCBrZXlzKTtcbn1cblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5maW5kSW5kZXhgIGFuZCBgXy5maW5kTGFzdEluZGV4YCB3aXRob3V0XG4gKiBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHByZWRpY2F0ZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHBhcmFtIHtudW1iZXJ9IGZyb21JbmRleCBUaGUgaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtmcm9tUmlnaHRdIFNwZWNpZnkgaXRlcmF0aW5nIGZyb20gcmlnaHQgdG8gbGVmdC5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBtYXRjaGVkIHZhbHVlLCBlbHNlIGAtMWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VGaW5kSW5kZXgoYXJyYXksIHByZWRpY2F0ZSwgZnJvbUluZGV4LCBmcm9tUmlnaHQpIHtcbiAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aCxcbiAgICAgIGluZGV4ID0gZnJvbUluZGV4ICsgKGZyb21SaWdodCA/IDEgOiAtMSk7XG5cbiAgd2hpbGUgKChmcm9tUmlnaHQgPyBpbmRleC0tIDogKytpbmRleCA8IGxlbmd0aCkpIHtcbiAgICBpZiAocHJlZGljYXRlKGFycmF5W2luZGV4XSwgaW5kZXgsIGFycmF5KSkge1xuICAgICAgcmV0dXJuIGluZGV4O1xuICAgIH1cbiAgfVxuICByZXR1cm4gLTE7XG59XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNOYU5gIHdpdGhvdXQgc3VwcG9ydCBmb3IgbnVtYmVyIG9iamVjdHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYE5hTmAsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUlzTmFOKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSAhPT0gdmFsdWU7XG59XG5cbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLmluZGV4T2ZgIHdoaWNoIHBlcmZvcm1zIHN0cmljdCBlcXVhbGl0eVxuICogY29tcGFyaXNvbnMgb2YgdmFsdWVzLCBpLmUuIGA9PT1gLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNlYXJjaCBmb3IuXG4gKiBAcGFyYW0ge251bWJlcn0gZnJvbUluZGV4IFRoZSBpbmRleCB0byBzZWFyY2ggZnJvbS5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBtYXRjaGVkIHZhbHVlLCBlbHNlIGAtMWAuXG4gKi9cbmZ1bmN0aW9uIHN0cmljdEluZGV4T2YoYXJyYXksIHZhbHVlLCBmcm9tSW5kZXgpIHtcbiAgdmFyIGluZGV4ID0gZnJvbUluZGV4IC0gMSxcbiAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIGlmIChhcnJheVtpbmRleF0gPT09IHZhbHVlKSB7XG4gICAgICByZXR1cm4gaW5kZXg7XG4gICAgfVxuICB9XG4gIHJldHVybiAtMTtcbn1cblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pbmRleE9mYCB3aXRob3V0IGBmcm9tSW5kZXhgIGJvdW5kcyBjaGVja3MuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2VhcmNoIGZvci5cbiAqIEBwYXJhbSB7bnVtYmVyfSBmcm9tSW5kZXggVGhlIGluZGV4IHRvIHNlYXJjaCBmcm9tLlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG1hdGNoZWQgdmFsdWUsIGVsc2UgYC0xYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUluZGV4T2YoYXJyYXksIHZhbHVlLCBmcm9tSW5kZXgpIHtcbiAgcmV0dXJuIHZhbHVlID09PSB2YWx1ZVxuICAgID8gc3RyaWN0SW5kZXhPZihhcnJheSwgdmFsdWUsIGZyb21JbmRleClcbiAgICA6IGJhc2VGaW5kSW5kZXgoYXJyYXksIGJhc2VJc05hTiwgZnJvbUluZGV4KTtcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmVzIHRoZSBiZXN0IG9yZGVyIGZvciBydW5uaW5nIHRoZSB7QGxpbmsgQXN5bmNGdW5jdGlvbn1zIGluIGB0YXNrc2AsIGJhc2VkIG9uXG4gKiB0aGVpciByZXF1aXJlbWVudHMuIEVhY2ggZnVuY3Rpb24gY2FuIG9wdGlvbmFsbHkgZGVwZW5kIG9uIG90aGVyIGZ1bmN0aW9uc1xuICogYmVpbmcgY29tcGxldGVkIGZpcnN0LCBhbmQgZWFjaCBmdW5jdGlvbiBpcyBydW4gYXMgc29vbiBhcyBpdHMgcmVxdWlyZW1lbnRzXG4gKiBhcmUgc2F0aXNmaWVkLlxuICpcbiAqIElmIGFueSBvZiB0aGUge0BsaW5rIEFzeW5jRnVuY3Rpb259cyBwYXNzIGFuIGVycm9yIHRvIHRoZWlyIGNhbGxiYWNrLCB0aGUgYGF1dG9gIHNlcXVlbmNlXG4gKiB3aWxsIHN0b3AuIEZ1cnRoZXIgdGFza3Mgd2lsbCBub3QgZXhlY3V0ZSAoc28gYW55IG90aGVyIGZ1bmN0aW9ucyBkZXBlbmRpbmdcbiAqIG9uIGl0IHdpbGwgbm90IHJ1biksIGFuZCB0aGUgbWFpbiBgY2FsbGJhY2tgIGlzIGltbWVkaWF0ZWx5IGNhbGxlZCB3aXRoIHRoZVxuICogZXJyb3IuXG4gKlxuICoge0BsaW5rIEFzeW5jRnVuY3Rpb259cyBhbHNvIHJlY2VpdmUgYW4gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIHJlc3VsdHMgb2YgZnVuY3Rpb25zIHdoaWNoXG4gKiBoYXZlIGNvbXBsZXRlZCBzbyBmYXIgYXMgdGhlIGZpcnN0IGFyZ3VtZW50LCBpZiB0aGV5IGhhdmUgZGVwZW5kZW5jaWVzLiBJZiBhXG4gKiB0YXNrIGZ1bmN0aW9uIGhhcyBubyBkZXBlbmRlbmNpZXMsIGl0IHdpbGwgb25seSBiZSBwYXNzZWQgYSBjYWxsYmFjay5cbiAqXG4gKiBAbmFtZSBhdXRvXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgbW9kdWxlOkNvbnRyb2xGbG93XG4gKiBAbWV0aG9kXG4gKiBAY2F0ZWdvcnkgQ29udHJvbCBGbG93XG4gKiBAcGFyYW0ge09iamVjdH0gdGFza3MgLSBBbiBvYmplY3QuIEVhY2ggb2YgaXRzIHByb3BlcnRpZXMgaXMgZWl0aGVyIGFcbiAqIGZ1bmN0aW9uIG9yIGFuIGFycmF5IG9mIHJlcXVpcmVtZW50cywgd2l0aCB0aGUge0BsaW5rIEFzeW5jRnVuY3Rpb259IGl0c2VsZiB0aGUgbGFzdCBpdGVtXG4gKiBpbiB0aGUgYXJyYXkuIFRoZSBvYmplY3QncyBrZXkgb2YgYSBwcm9wZXJ0eSBzZXJ2ZXMgYXMgdGhlIG5hbWUgb2YgdGhlIHRhc2tcbiAqIGRlZmluZWQgYnkgdGhhdCBwcm9wZXJ0eSwgaS5lLiBjYW4gYmUgdXNlZCB3aGVuIHNwZWNpZnlpbmcgcmVxdWlyZW1lbnRzIGZvclxuICogb3RoZXIgdGFza3MuIFRoZSBmdW5jdGlvbiByZWNlaXZlcyBvbmUgb3IgdHdvIGFyZ3VtZW50czpcbiAqICogYSBgcmVzdWx0c2Agb2JqZWN0LCBjb250YWluaW5nIHRoZSByZXN1bHRzIG9mIHRoZSBwcmV2aW91c2x5IGV4ZWN1dGVkXG4gKiAgIGZ1bmN0aW9ucywgb25seSBwYXNzZWQgaWYgdGhlIHRhc2sgaGFzIGFueSBkZXBlbmRlbmNpZXMsXG4gKiAqIGEgYGNhbGxiYWNrKGVyciwgcmVzdWx0KWAgZnVuY3Rpb24sIHdoaWNoIG11c3QgYmUgY2FsbGVkIHdoZW4gZmluaXNoZWQsXG4gKiAgIHBhc3NpbmcgYW4gYGVycm9yYCAod2hpY2ggY2FuIGJlIGBudWxsYCkgYW5kIHRoZSByZXN1bHQgb2YgdGhlIGZ1bmN0aW9uJ3NcbiAqICAgZXhlY3V0aW9uLlxuICogQHBhcmFtIHtudW1iZXJ9IFtjb25jdXJyZW5jeT1JbmZpbml0eV0gLSBBbiBvcHRpb25hbCBgaW50ZWdlcmAgZm9yXG4gKiBkZXRlcm1pbmluZyB0aGUgbWF4aW11bSBudW1iZXIgb2YgdGFza3MgdGhhdCBjYW4gYmUgcnVuIGluIHBhcmFsbGVsLiBCeVxuICogZGVmYXVsdCwgYXMgbWFueSBhcyBwb3NzaWJsZS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjYWxsYmFja10gLSBBbiBvcHRpb25hbCBjYWxsYmFjayB3aGljaCBpcyBjYWxsZWQgd2hlbiBhbGxcbiAqIHRoZSB0YXNrcyBoYXZlIGJlZW4gY29tcGxldGVkLiBJdCByZWNlaXZlcyB0aGUgYGVycmAgYXJndW1lbnQgaWYgYW55IGB0YXNrc2BcbiAqIHBhc3MgYW4gZXJyb3IgdG8gdGhlaXIgY2FsbGJhY2suIFJlc3VsdHMgYXJlIGFsd2F5cyByZXR1cm5lZDsgaG93ZXZlciwgaWYgYW5cbiAqIGVycm9yIG9jY3Vycywgbm8gZnVydGhlciBgdGFza3NgIHdpbGwgYmUgcGVyZm9ybWVkLCBhbmQgdGhlIHJlc3VsdHMgb2JqZWN0XG4gKiB3aWxsIG9ubHkgY29udGFpbiBwYXJ0aWFsIHJlc3VsdHMuIEludm9rZWQgd2l0aCAoZXJyLCByZXN1bHRzKS5cbiAqIEByZXR1cm5zIHVuZGVmaW5lZFxuICogQGV4YW1wbGVcbiAqXG4gKiBhc3luYy5hdXRvKHtcbiAqICAgICAvLyB0aGlzIGZ1bmN0aW9uIHdpbGwganVzdCBiZSBwYXNzZWQgYSBjYWxsYmFja1xuICogICAgIHJlYWREYXRhOiBhc3luYy5hcHBseShmcy5yZWFkRmlsZSwgJ2RhdGEudHh0JywgJ3V0Zi04JyksXG4gKiAgICAgc2hvd0RhdGE6IFsncmVhZERhdGEnLCBmdW5jdGlvbihyZXN1bHRzLCBjYikge1xuICogICAgICAgICAvLyByZXN1bHRzLnJlYWREYXRhIGlzIHRoZSBmaWxlJ3MgY29udGVudHNcbiAqICAgICAgICAgLy8gLi4uXG4gKiAgICAgfV1cbiAqIH0sIGNhbGxiYWNrKTtcbiAqXG4gKiBhc3luYy5hdXRvKHtcbiAqICAgICBnZXRfZGF0YTogZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAqICAgICAgICAgY29uc29sZS5sb2coJ2luIGdldF9kYXRhJyk7XG4gKiAgICAgICAgIC8vIGFzeW5jIGNvZGUgdG8gZ2V0IHNvbWUgZGF0YVxuICogICAgICAgICBjYWxsYmFjayhudWxsLCAnZGF0YScsICdjb252ZXJ0ZWQgdG8gYXJyYXknKTtcbiAqICAgICB9LFxuICogICAgIG1ha2VfZm9sZGVyOiBmdW5jdGlvbihjYWxsYmFjaykge1xuICogICAgICAgICBjb25zb2xlLmxvZygnaW4gbWFrZV9mb2xkZXInKTtcbiAqICAgICAgICAgLy8gYXN5bmMgY29kZSB0byBjcmVhdGUgYSBkaXJlY3RvcnkgdG8gc3RvcmUgYSBmaWxlIGluXG4gKiAgICAgICAgIC8vIHRoaXMgaXMgcnVuIGF0IHRoZSBzYW1lIHRpbWUgYXMgZ2V0dGluZyB0aGUgZGF0YVxuICogICAgICAgICBjYWxsYmFjayhudWxsLCAnZm9sZGVyJyk7XG4gKiAgICAgfSxcbiAqICAgICB3cml0ZV9maWxlOiBbJ2dldF9kYXRhJywgJ21ha2VfZm9sZGVyJywgZnVuY3Rpb24ocmVzdWx0cywgY2FsbGJhY2spIHtcbiAqICAgICAgICAgY29uc29sZS5sb2coJ2luIHdyaXRlX2ZpbGUnLCBKU09OLnN0cmluZ2lmeShyZXN1bHRzKSk7XG4gKiAgICAgICAgIC8vIG9uY2UgdGhlcmUgaXMgc29tZSBkYXRhIGFuZCB0aGUgZGlyZWN0b3J5IGV4aXN0cyxcbiAqICAgICAgICAgLy8gd3JpdGUgdGhlIGRhdGEgdG8gYSBmaWxlIGluIHRoZSBkaXJlY3RvcnlcbiAqICAgICAgICAgY2FsbGJhY2sobnVsbCwgJ2ZpbGVuYW1lJyk7XG4gKiAgICAgfV0sXG4gKiAgICAgZW1haWxfbGluazogWyd3cml0ZV9maWxlJywgZnVuY3Rpb24ocmVzdWx0cywgY2FsbGJhY2spIHtcbiAqICAgICAgICAgY29uc29sZS5sb2coJ2luIGVtYWlsX2xpbmsnLCBKU09OLnN0cmluZ2lmeShyZXN1bHRzKSk7XG4gKiAgICAgICAgIC8vIG9uY2UgdGhlIGZpbGUgaXMgd3JpdHRlbiBsZXQncyBlbWFpbCBhIGxpbmsgdG8gaXQuLi5cbiAqICAgICAgICAgLy8gcmVzdWx0cy53cml0ZV9maWxlIGNvbnRhaW5zIHRoZSBmaWxlbmFtZSByZXR1cm5lZCBieSB3cml0ZV9maWxlLlxuICogICAgICAgICBjYWxsYmFjayhudWxsLCB7J2ZpbGUnOnJlc3VsdHMud3JpdGVfZmlsZSwgJ2VtYWlsJzondXNlckBleGFtcGxlLmNvbSd9KTtcbiAqICAgICB9XVxuICogfSwgZnVuY3Rpb24oZXJyLCByZXN1bHRzKSB7XG4gKiAgICAgY29uc29sZS5sb2coJ2VyciA9ICcsIGVycik7XG4gKiAgICAgY29uc29sZS5sb2coJ3Jlc3VsdHMgPSAnLCByZXN1bHRzKTtcbiAqIH0pO1xuICovXG52YXIgYXV0byA9IGZ1bmN0aW9uICh0YXNrcywgY29uY3VycmVuY3ksIGNhbGxiYWNrKSB7XG4gICAgaWYgKHR5cGVvZiBjb25jdXJyZW5jeSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAvLyBjb25jdXJyZW5jeSBpcyBvcHRpb25hbCwgc2hpZnQgdGhlIGFyZ3MuXG4gICAgICAgIGNhbGxiYWNrID0gY29uY3VycmVuY3k7XG4gICAgICAgIGNvbmN1cnJlbmN5ID0gbnVsbDtcbiAgICB9XG4gICAgY2FsbGJhY2sgPSBvbmNlKGNhbGxiYWNrIHx8IG5vb3ApO1xuICAgIHZhciBrZXlzJCQxID0ga2V5cyh0YXNrcyk7XG4gICAgdmFyIG51bVRhc2tzID0ga2V5cyQkMS5sZW5ndGg7XG4gICAgaWYgKCFudW1UYXNrcykge1xuICAgICAgICByZXR1cm4gY2FsbGJhY2sobnVsbCk7XG4gICAgfVxuICAgIGlmICghY29uY3VycmVuY3kpIHtcbiAgICAgICAgY29uY3VycmVuY3kgPSBudW1UYXNrcztcbiAgICB9XG5cbiAgICB2YXIgcmVzdWx0cyA9IHt9O1xuICAgIHZhciBydW5uaW5nVGFza3MgPSAwO1xuICAgIHZhciBoYXNFcnJvciA9IGZhbHNlO1xuXG4gICAgdmFyIGxpc3RlbmVycyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5cbiAgICB2YXIgcmVhZHlUYXNrcyA9IFtdO1xuXG4gICAgLy8gZm9yIGN5Y2xlIGRldGVjdGlvbjpcbiAgICB2YXIgcmVhZHlUb0NoZWNrID0gW107IC8vIHRhc2tzIHRoYXQgaGF2ZSBiZWVuIGlkZW50aWZpZWQgYXMgcmVhY2hhYmxlXG4gICAgLy8gd2l0aG91dCB0aGUgcG9zc2liaWxpdHkgb2YgcmV0dXJuaW5nIHRvIGFuIGFuY2VzdG9yIHRhc2tcbiAgICB2YXIgdW5jaGVja2VkRGVwZW5kZW5jaWVzID0ge307XG5cbiAgICBiYXNlRm9yT3duKHRhc2tzLCBmdW5jdGlvbiAodGFzaywga2V5KSB7XG4gICAgICAgIGlmICghaXNBcnJheSh0YXNrKSkge1xuICAgICAgICAgICAgLy8gbm8gZGVwZW5kZW5jaWVzXG4gICAgICAgICAgICBlbnF1ZXVlVGFzayhrZXksIFt0YXNrXSk7XG4gICAgICAgICAgICByZWFkeVRvQ2hlY2sucHVzaChrZXkpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGRlcGVuZGVuY2llcyA9IHRhc2suc2xpY2UoMCwgdGFzay5sZW5ndGggLSAxKTtcbiAgICAgICAgdmFyIHJlbWFpbmluZ0RlcGVuZGVuY2llcyA9IGRlcGVuZGVuY2llcy5sZW5ndGg7XG4gICAgICAgIGlmIChyZW1haW5pbmdEZXBlbmRlbmNpZXMgPT09IDApIHtcbiAgICAgICAgICAgIGVucXVldWVUYXNrKGtleSwgdGFzayk7XG4gICAgICAgICAgICByZWFkeVRvQ2hlY2sucHVzaChrZXkpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHVuY2hlY2tlZERlcGVuZGVuY2llc1trZXldID0gcmVtYWluaW5nRGVwZW5kZW5jaWVzO1xuXG4gICAgICAgIGFycmF5RWFjaChkZXBlbmRlbmNpZXMsIGZ1bmN0aW9uIChkZXBlbmRlbmN5TmFtZSkge1xuICAgICAgICAgICAgaWYgKCF0YXNrc1tkZXBlbmRlbmN5TmFtZV0pIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2FzeW5jLmF1dG8gdGFzayBgJyArIGtleSArICdgIGhhcyBhIG5vbi1leGlzdGVudCBkZXBlbmRlbmN5IGAnICsgZGVwZW5kZW5jeU5hbWUgKyAnYCBpbiAnICsgZGVwZW5kZW5jaWVzLmpvaW4oJywgJykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYWRkTGlzdGVuZXIoZGVwZW5kZW5jeU5hbWUsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZW1haW5pbmdEZXBlbmRlbmNpZXMtLTtcbiAgICAgICAgICAgICAgICBpZiAocmVtYWluaW5nRGVwZW5kZW5jaWVzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGVucXVldWVUYXNrKGtleSwgdGFzayk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgY2hlY2tGb3JEZWFkbG9ja3MoKTtcbiAgICBwcm9jZXNzUXVldWUoKTtcblxuICAgIGZ1bmN0aW9uIGVucXVldWVUYXNrKGtleSwgdGFzaykge1xuICAgICAgICByZWFkeVRhc2tzLnB1c2goZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcnVuVGFzayhrZXksIHRhc2spO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwcm9jZXNzUXVldWUoKSB7XG4gICAgICAgIGlmIChyZWFkeVRhc2tzLmxlbmd0aCA9PT0gMCAmJiBydW5uaW5nVGFza3MgPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhudWxsLCByZXN1bHRzKTtcbiAgICAgICAgfVxuICAgICAgICB3aGlsZSAocmVhZHlUYXNrcy5sZW5ndGggJiYgcnVubmluZ1Rhc2tzIDwgY29uY3VycmVuY3kpIHtcbiAgICAgICAgICAgIHZhciBydW4gPSByZWFkeVRhc2tzLnNoaWZ0KCk7XG4gICAgICAgICAgICBydW4oKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGFkZExpc3RlbmVyKHRhc2tOYW1lLCBmbikge1xuICAgICAgICB2YXIgdGFza0xpc3RlbmVycyA9IGxpc3RlbmVyc1t0YXNrTmFtZV07XG4gICAgICAgIGlmICghdGFza0xpc3RlbmVycykge1xuICAgICAgICAgICAgdGFza0xpc3RlbmVycyA9IGxpc3RlbmVyc1t0YXNrTmFtZV0gPSBbXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRhc2tMaXN0ZW5lcnMucHVzaChmbik7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdGFza0NvbXBsZXRlKHRhc2tOYW1lKSB7XG4gICAgICAgIHZhciB0YXNrTGlzdGVuZXJzID0gbGlzdGVuZXJzW3Rhc2tOYW1lXSB8fCBbXTtcbiAgICAgICAgYXJyYXlFYWNoKHRhc2tMaXN0ZW5lcnMsIGZ1bmN0aW9uIChmbikge1xuICAgICAgICAgICAgZm4oKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHByb2Nlc3NRdWV1ZSgpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJ1blRhc2soa2V5LCB0YXNrKSB7XG4gICAgICAgIGlmIChoYXNFcnJvcikgcmV0dXJuO1xuXG4gICAgICAgIHZhciB0YXNrQ2FsbGJhY2sgPSBvbmx5T25jZShyZXN0KGZ1bmN0aW9uIChlcnIsIGFyZ3MpIHtcbiAgICAgICAgICAgIHJ1bm5pbmdUYXNrcy0tO1xuICAgICAgICAgICAgaWYgKGFyZ3MubGVuZ3RoIDw9IDEpIHtcbiAgICAgICAgICAgICAgICBhcmdzID0gYXJnc1swXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgICAgICB2YXIgc2FmZVJlc3VsdHMgPSB7fTtcbiAgICAgICAgICAgICAgICBiYXNlRm9yT3duKHJlc3VsdHMsIGZ1bmN0aW9uICh2YWwsIHJrZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgc2FmZVJlc3VsdHNbcmtleV0gPSB2YWw7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgc2FmZVJlc3VsdHNba2V5XSA9IGFyZ3M7XG4gICAgICAgICAgICAgICAgaGFzRXJyb3IgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGxpc3RlbmVycyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5cbiAgICAgICAgICAgICAgICBjYWxsYmFjayhlcnIsIHNhZmVSZXN1bHRzKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0c1trZXldID0gYXJncztcbiAgICAgICAgICAgICAgICB0YXNrQ29tcGxldGUoa2V5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSkpO1xuXG4gICAgICAgIHJ1bm5pbmdUYXNrcysrO1xuICAgICAgICB2YXIgdGFza0ZuID0gd3JhcEFzeW5jJDEodGFza1t0YXNrLmxlbmd0aCAtIDFdKTtcbiAgICAgICAgaWYgKHRhc2subGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgdGFza0ZuKHJlc3VsdHMsIHRhc2tDYWxsYmFjayk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0YXNrRm4odGFza0NhbGxiYWNrKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNoZWNrRm9yRGVhZGxvY2tzKCkge1xuICAgICAgICAvLyBLYWhuJ3MgYWxnb3JpdGhtXG4gICAgICAgIC8vIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1RvcG9sb2dpY2FsX3NvcnRpbmcjS2Fobi4yN3NfYWxnb3JpdGhtXG4gICAgICAgIC8vIGh0dHA6Ly9jb25uYWxsZS5ibG9nc3BvdC5jb20vMjAxMy8xMC90b3BvbG9naWNhbC1zb3J0aW5na2Fobi1hbGdvcml0aG0uaHRtbFxuICAgICAgICB2YXIgY3VycmVudFRhc2s7XG4gICAgICAgIHZhciBjb3VudGVyID0gMDtcbiAgICAgICAgd2hpbGUgKHJlYWR5VG9DaGVjay5sZW5ndGgpIHtcbiAgICAgICAgICAgIGN1cnJlbnRUYXNrID0gcmVhZHlUb0NoZWNrLnBvcCgpO1xuICAgICAgICAgICAgY291bnRlcisrO1xuICAgICAgICAgICAgYXJyYXlFYWNoKGdldERlcGVuZGVudHMoY3VycmVudFRhc2spLCBmdW5jdGlvbiAoZGVwZW5kZW50KSB7XG4gICAgICAgICAgICAgICAgaWYgKC0tdW5jaGVja2VkRGVwZW5kZW5jaWVzW2RlcGVuZGVudF0gPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgcmVhZHlUb0NoZWNrLnB1c2goZGVwZW5kZW50KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb3VudGVyICE9PSBudW1UYXNrcykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdhc3luYy5hdXRvIGNhbm5vdCBleGVjdXRlIHRhc2tzIGR1ZSB0byBhIHJlY3Vyc2l2ZSBkZXBlbmRlbmN5Jyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXREZXBlbmRlbnRzKHRhc2tOYW1lKSB7XG4gICAgICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICAgICAgYmFzZUZvck93bih0YXNrcywgZnVuY3Rpb24gKHRhc2ssIGtleSkge1xuICAgICAgICAgICAgaWYgKGlzQXJyYXkodGFzaykgJiYgYmFzZUluZGV4T2YodGFzaywgdGFza05hbWUsIDApID49IDApIHtcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaChrZXkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG59O1xuXG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5tYXBgIGZvciBhcnJheXMgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZVxuICogc2hvcnRoYW5kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IG1hcHBlZCBhcnJheS5cbiAqL1xuZnVuY3Rpb24gYXJyYXlNYXAoYXJyYXksIGl0ZXJhdGVlKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGgsXG4gICAgICByZXN1bHQgPSBBcnJheShsZW5ndGgpO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgcmVzdWx0W2luZGV4XSA9IGl0ZXJhdGVlKGFycmF5W2luZGV4XSwgaW5kZXgsIGFycmF5KTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgc3ltYm9sVGFnID0gJ1tvYmplY3QgU3ltYm9sXSc7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBTeW1ib2xgIHByaW1pdGl2ZSBvciBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBzeW1ib2wsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc1N5bWJvbChTeW1ib2wuaXRlcmF0b3IpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNTeW1ib2woJ2FiYycpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNTeW1ib2wodmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PSAnc3ltYm9sJyB8fFxuICAgIChpc09iamVjdExpa2UodmFsdWUpICYmIGJhc2VHZXRUYWcodmFsdWUpID09IHN5bWJvbFRhZyk7XG59XG5cbi8qKiBVc2VkIGFzIHJlZmVyZW5jZXMgZm9yIHZhcmlvdXMgYE51bWJlcmAgY29uc3RhbnRzLiAqL1xudmFyIElORklOSVRZID0gMSAvIDA7XG5cbi8qKiBVc2VkIHRvIGNvbnZlcnQgc3ltYm9scyB0byBwcmltaXRpdmVzIGFuZCBzdHJpbmdzLiAqL1xudmFyIHN5bWJvbFByb3RvID0gU3ltYm9sJDEgPyBTeW1ib2wkMS5wcm90b3R5cGUgOiB1bmRlZmluZWQ7XG52YXIgc3ltYm9sVG9TdHJpbmcgPSBzeW1ib2xQcm90byA/IHN5bWJvbFByb3RvLnRvU3RyaW5nIDogdW5kZWZpbmVkO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnRvU3RyaW5nYCB3aGljaCBkb2Vzbid0IGNvbnZlcnQgbnVsbGlzaFxuICogdmFsdWVzIHRvIGVtcHR5IHN0cmluZ3MuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHByb2Nlc3MuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBzdHJpbmcuXG4gKi9cbmZ1bmN0aW9uIGJhc2VUb1N0cmluZyh2YWx1ZSkge1xuICAvLyBFeGl0IGVhcmx5IGZvciBzdHJpbmdzIHRvIGF2b2lkIGEgcGVyZm9ybWFuY2UgaGl0IGluIHNvbWUgZW52aXJvbm1lbnRzLlxuICBpZiAodHlwZW9mIHZhbHVlID09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIGlmIChpc0FycmF5KHZhbHVlKSkge1xuICAgIC8vIFJlY3Vyc2l2ZWx5IGNvbnZlcnQgdmFsdWVzIChzdXNjZXB0aWJsZSB0byBjYWxsIHN0YWNrIGxpbWl0cykuXG4gICAgcmV0dXJuIGFycmF5TWFwKHZhbHVlLCBiYXNlVG9TdHJpbmcpICsgJyc7XG4gIH1cbiAgaWYgKGlzU3ltYm9sKHZhbHVlKSkge1xuICAgIHJldHVybiBzeW1ib2xUb1N0cmluZyA/IHN5bWJvbFRvU3RyaW5nLmNhbGwodmFsdWUpIDogJyc7XG4gIH1cbiAgdmFyIHJlc3VsdCA9ICh2YWx1ZSArICcnKTtcbiAgcmV0dXJuIChyZXN1bHQgPT0gJzAnICYmICgxIC8gdmFsdWUpID09IC1JTkZJTklUWSkgPyAnLTAnIDogcmVzdWx0O1xufVxuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnNsaWNlYCB3aXRob3V0IGFuIGl0ZXJhdGVlIGNhbGwgZ3VhcmQuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBzbGljZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbc3RhcnQ9MF0gVGhlIHN0YXJ0IHBvc2l0aW9uLlxuICogQHBhcmFtIHtudW1iZXJ9IFtlbmQ9YXJyYXkubGVuZ3RoXSBUaGUgZW5kIHBvc2l0aW9uLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBzbGljZSBvZiBgYXJyYXlgLlxuICovXG5mdW5jdGlvbiBiYXNlU2xpY2UoYXJyYXksIHN0YXJ0LCBlbmQpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgaWYgKHN0YXJ0IDwgMCkge1xuICAgIHN0YXJ0ID0gLXN0YXJ0ID4gbGVuZ3RoID8gMCA6IChsZW5ndGggKyBzdGFydCk7XG4gIH1cbiAgZW5kID0gZW5kID4gbGVuZ3RoID8gbGVuZ3RoIDogZW5kO1xuICBpZiAoZW5kIDwgMCkge1xuICAgIGVuZCArPSBsZW5ndGg7XG4gIH1cbiAgbGVuZ3RoID0gc3RhcnQgPiBlbmQgPyAwIDogKChlbmQgLSBzdGFydCkgPj4+IDApO1xuICBzdGFydCA+Pj49IDA7XG5cbiAgdmFyIHJlc3VsdCA9IEFycmF5KGxlbmd0aCk7XG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgcmVzdWx0W2luZGV4XSA9IGFycmF5W2luZGV4ICsgc3RhcnRdO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogQ2FzdHMgYGFycmF5YCB0byBhIHNsaWNlIGlmIGl0J3MgbmVlZGVkLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAqIEBwYXJhbSB7bnVtYmVyfSBzdGFydCBUaGUgc3RhcnQgcG9zaXRpb24uXG4gKiBAcGFyYW0ge251bWJlcn0gW2VuZD1hcnJheS5sZW5ndGhdIFRoZSBlbmQgcG9zaXRpb24uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGNhc3Qgc2xpY2UuXG4gKi9cbmZ1bmN0aW9uIGNhc3RTbGljZShhcnJheSwgc3RhcnQsIGVuZCkge1xuICB2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuICBlbmQgPSBlbmQgPT09IHVuZGVmaW5lZCA/IGxlbmd0aCA6IGVuZDtcbiAgcmV0dXJuICghc3RhcnQgJiYgZW5kID49IGxlbmd0aCkgPyBhcnJheSA6IGJhc2VTbGljZShhcnJheSwgc3RhcnQsIGVuZCk7XG59XG5cbi8qKlxuICogVXNlZCBieSBgXy50cmltYCBhbmQgYF8udHJpbUVuZGAgdG8gZ2V0IHRoZSBpbmRleCBvZiB0aGUgbGFzdCBzdHJpbmcgc3ltYm9sXG4gKiB0aGF0IGlzIG5vdCBmb3VuZCBpbiB0aGUgY2hhcmFjdGVyIHN5bWJvbHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IHN0clN5bWJvbHMgVGhlIHN0cmluZyBzeW1ib2xzIHRvIGluc3BlY3QuXG4gKiBAcGFyYW0ge0FycmF5fSBjaHJTeW1ib2xzIFRoZSBjaGFyYWN0ZXIgc3ltYm9scyB0byBmaW5kLlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIGxhc3QgdW5tYXRjaGVkIHN0cmluZyBzeW1ib2wuXG4gKi9cbmZ1bmN0aW9uIGNoYXJzRW5kSW5kZXgoc3RyU3ltYm9scywgY2hyU3ltYm9scykge1xuICB2YXIgaW5kZXggPSBzdHJTeW1ib2xzLmxlbmd0aDtcblxuICB3aGlsZSAoaW5kZXgtLSAmJiBiYXNlSW5kZXhPZihjaHJTeW1ib2xzLCBzdHJTeW1ib2xzW2luZGV4XSwgMCkgPiAtMSkge31cbiAgcmV0dXJuIGluZGV4O1xufVxuXG4vKipcbiAqIFVzZWQgYnkgYF8udHJpbWAgYW5kIGBfLnRyaW1TdGFydGAgdG8gZ2V0IHRoZSBpbmRleCBvZiB0aGUgZmlyc3Qgc3RyaW5nIHN5bWJvbFxuICogdGhhdCBpcyBub3QgZm91bmQgaW4gdGhlIGNoYXJhY3RlciBzeW1ib2xzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBzdHJTeW1ib2xzIFRoZSBzdHJpbmcgc3ltYm9scyB0byBpbnNwZWN0LlxuICogQHBhcmFtIHtBcnJheX0gY2hyU3ltYm9scyBUaGUgY2hhcmFjdGVyIHN5bWJvbHMgdG8gZmluZC5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBmaXJzdCB1bm1hdGNoZWQgc3RyaW5nIHN5bWJvbC5cbiAqL1xuZnVuY3Rpb24gY2hhcnNTdGFydEluZGV4KHN0clN5bWJvbHMsIGNoclN5bWJvbHMpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBzdHJTeW1ib2xzLmxlbmd0aDtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCAmJiBiYXNlSW5kZXhPZihjaHJTeW1ib2xzLCBzdHJTeW1ib2xzW2luZGV4XSwgMCkgPiAtMSkge31cbiAgcmV0dXJuIGluZGV4O1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGFuIEFTQ0lJIGBzdHJpbmdgIHRvIGFuIGFycmF5LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgY29udmVydGVkIGFycmF5LlxuICovXG5mdW5jdGlvbiBhc2NpaVRvQXJyYXkoc3RyaW5nKSB7XG4gIHJldHVybiBzdHJpbmcuc3BsaXQoJycpO1xufVxuXG4vKiogVXNlZCB0byBjb21wb3NlIHVuaWNvZGUgY2hhcmFjdGVyIGNsYXNzZXMuICovXG52YXIgcnNBc3RyYWxSYW5nZSA9ICdcXFxcdWQ4MDAtXFxcXHVkZmZmJztcbnZhciByc0NvbWJvTWFya3NSYW5nZSA9ICdcXFxcdTAzMDAtXFxcXHUwMzZmXFxcXHVmZTIwLVxcXFx1ZmUyMyc7XG52YXIgcnNDb21ib1N5bWJvbHNSYW5nZSA9ICdcXFxcdTIwZDAtXFxcXHUyMGYwJztcbnZhciByc1ZhclJhbmdlID0gJ1xcXFx1ZmUwZVxcXFx1ZmUwZic7XG5cbi8qKiBVc2VkIHRvIGNvbXBvc2UgdW5pY29kZSBjYXB0dXJlIGdyb3Vwcy4gKi9cbnZhciByc1pXSiA9ICdcXFxcdTIwMGQnO1xuXG4vKiogVXNlZCB0byBkZXRlY3Qgc3RyaW5ncyB3aXRoIFt6ZXJvLXdpZHRoIGpvaW5lcnMgb3IgY29kZSBwb2ludHMgZnJvbSB0aGUgYXN0cmFsIHBsYW5lc10oaHR0cDovL2Vldi5lZS9ibG9nLzIwMTUvMDkvMTIvZGFyay1jb3JuZXJzLW9mLXVuaWNvZGUvKS4gKi9cbnZhciByZUhhc1VuaWNvZGUgPSBSZWdFeHAoJ1snICsgcnNaV0ogKyByc0FzdHJhbFJhbmdlICArIHJzQ29tYm9NYXJrc1JhbmdlICsgcnNDb21ib1N5bWJvbHNSYW5nZSArIHJzVmFyUmFuZ2UgKyAnXScpO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgc3RyaW5nYCBjb250YWlucyBVbmljb2RlIHN5bWJvbHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byBpbnNwZWN0LlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGEgc3ltYm9sIGlzIGZvdW5kLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGhhc1VuaWNvZGUoc3RyaW5nKSB7XG4gIHJldHVybiByZUhhc1VuaWNvZGUudGVzdChzdHJpbmcpO1xufVxuXG4vKiogVXNlZCB0byBjb21wb3NlIHVuaWNvZGUgY2hhcmFjdGVyIGNsYXNzZXMuICovXG52YXIgcnNBc3RyYWxSYW5nZSQxID0gJ1xcXFx1ZDgwMC1cXFxcdWRmZmYnO1xudmFyIHJzQ29tYm9NYXJrc1JhbmdlJDEgPSAnXFxcXHUwMzAwLVxcXFx1MDM2ZlxcXFx1ZmUyMC1cXFxcdWZlMjMnO1xudmFyIHJzQ29tYm9TeW1ib2xzUmFuZ2UkMSA9ICdcXFxcdTIwZDAtXFxcXHUyMGYwJztcbnZhciByc1ZhclJhbmdlJDEgPSAnXFxcXHVmZTBlXFxcXHVmZTBmJztcblxuLyoqIFVzZWQgdG8gY29tcG9zZSB1bmljb2RlIGNhcHR1cmUgZ3JvdXBzLiAqL1xudmFyIHJzQXN0cmFsID0gJ1snICsgcnNBc3RyYWxSYW5nZSQxICsgJ10nO1xudmFyIHJzQ29tYm8gPSAnWycgKyByc0NvbWJvTWFya3NSYW5nZSQxICsgcnNDb21ib1N5bWJvbHNSYW5nZSQxICsgJ10nO1xudmFyIHJzRml0eiA9ICdcXFxcdWQ4M2NbXFxcXHVkZmZiLVxcXFx1ZGZmZl0nO1xudmFyIHJzTW9kaWZpZXIgPSAnKD86JyArIHJzQ29tYm8gKyAnfCcgKyByc0ZpdHogKyAnKSc7XG52YXIgcnNOb25Bc3RyYWwgPSAnW14nICsgcnNBc3RyYWxSYW5nZSQxICsgJ10nO1xudmFyIHJzUmVnaW9uYWwgPSAnKD86XFxcXHVkODNjW1xcXFx1ZGRlNi1cXFxcdWRkZmZdKXsyfSc7XG52YXIgcnNTdXJyUGFpciA9ICdbXFxcXHVkODAwLVxcXFx1ZGJmZl1bXFxcXHVkYzAwLVxcXFx1ZGZmZl0nO1xudmFyIHJzWldKJDEgPSAnXFxcXHUyMDBkJztcblxuLyoqIFVzZWQgdG8gY29tcG9zZSB1bmljb2RlIHJlZ2V4ZXMuICovXG52YXIgcmVPcHRNb2QgPSByc01vZGlmaWVyICsgJz8nO1xudmFyIHJzT3B0VmFyID0gJ1snICsgcnNWYXJSYW5nZSQxICsgJ10/JztcbnZhciByc09wdEpvaW4gPSAnKD86JyArIHJzWldKJDEgKyAnKD86JyArIFtyc05vbkFzdHJhbCwgcnNSZWdpb25hbCwgcnNTdXJyUGFpcl0uam9pbignfCcpICsgJyknICsgcnNPcHRWYXIgKyByZU9wdE1vZCArICcpKic7XG52YXIgcnNTZXEgPSByc09wdFZhciArIHJlT3B0TW9kICsgcnNPcHRKb2luO1xudmFyIHJzU3ltYm9sID0gJyg/OicgKyBbcnNOb25Bc3RyYWwgKyByc0NvbWJvICsgJz8nLCByc0NvbWJvLCByc1JlZ2lvbmFsLCByc1N1cnJQYWlyLCByc0FzdHJhbF0uam9pbignfCcpICsgJyknO1xuXG4vKiogVXNlZCB0byBtYXRjaCBbc3RyaW5nIHN5bWJvbHNdKGh0dHBzOi8vbWF0aGlhc2J5bmVucy5iZS9ub3Rlcy9qYXZhc2NyaXB0LXVuaWNvZGUpLiAqL1xudmFyIHJlVW5pY29kZSA9IFJlZ0V4cChyc0ZpdHogKyAnKD89JyArIHJzRml0eiArICcpfCcgKyByc1N5bWJvbCArIHJzU2VxLCAnZycpO1xuXG4vKipcbiAqIENvbnZlcnRzIGEgVW5pY29kZSBgc3RyaW5nYCB0byBhbiBhcnJheS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBhcnJheS5cbiAqL1xuZnVuY3Rpb24gdW5pY29kZVRvQXJyYXkoc3RyaW5nKSB7XG4gIHJldHVybiBzdHJpbmcubWF0Y2gocmVVbmljb2RlKSB8fCBbXTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBgc3RyaW5nYCB0byBhbiBhcnJheS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBhcnJheS5cbiAqL1xuZnVuY3Rpb24gc3RyaW5nVG9BcnJheShzdHJpbmcpIHtcbiAgcmV0dXJuIGhhc1VuaWNvZGUoc3RyaW5nKVxuICAgID8gdW5pY29kZVRvQXJyYXkoc3RyaW5nKVxuICAgIDogYXNjaWlUb0FycmF5KHN0cmluZyk7XG59XG5cbi8qKlxuICogQ29udmVydHMgYHZhbHVlYCB0byBhIHN0cmluZy4gQW4gZW1wdHkgc3RyaW5nIGlzIHJldHVybmVkIGZvciBgbnVsbGBcbiAqIGFuZCBgdW5kZWZpbmVkYCB2YWx1ZXMuIFRoZSBzaWduIG9mIGAtMGAgaXMgcHJlc2VydmVkLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgY29udmVydGVkIHN0cmluZy5cbiAqIEBleGFtcGxlXG4gKlxuICogXy50b1N0cmluZyhudWxsKTtcbiAqIC8vID0+ICcnXG4gKlxuICogXy50b1N0cmluZygtMCk7XG4gKiAvLyA9PiAnLTAnXG4gKlxuICogXy50b1N0cmluZyhbMSwgMiwgM10pO1xuICogLy8gPT4gJzEsMiwzJ1xuICovXG5mdW5jdGlvbiB0b1N0cmluZyh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgPT0gbnVsbCA/ICcnIDogYmFzZVRvU3RyaW5nKHZhbHVlKTtcbn1cblxuLyoqIFVzZWQgdG8gbWF0Y2ggbGVhZGluZyBhbmQgdHJhaWxpbmcgd2hpdGVzcGFjZS4gKi9cbnZhciByZVRyaW0gPSAvXlxccyt8XFxzKyQvZztcblxuLyoqXG4gKiBSZW1vdmVzIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHdoaXRlc3BhY2Ugb3Igc3BlY2lmaWVkIGNoYXJhY3RlcnMgZnJvbSBgc3RyaW5nYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDMuMC4wXG4gKiBAY2F0ZWdvcnkgU3RyaW5nXG4gKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHN0cmluZyB0byB0cmltLlxuICogQHBhcmFtIHtzdHJpbmd9IFtjaGFycz13aGl0ZXNwYWNlXSBUaGUgY2hhcmFjdGVycyB0byB0cmltLlxuICogQHBhcmFtLSB7T2JqZWN0fSBbZ3VhcmRdIEVuYWJsZXMgdXNlIGFzIGFuIGl0ZXJhdGVlIGZvciBtZXRob2RzIGxpa2UgYF8ubWFwYC5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHRyaW1tZWQgc3RyaW5nLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLnRyaW0oJyAgYWJjICAnKTtcbiAqIC8vID0+ICdhYmMnXG4gKlxuICogXy50cmltKCctXy1hYmMtXy0nLCAnXy0nKTtcbiAqIC8vID0+ICdhYmMnXG4gKlxuICogXy5tYXAoWycgIGZvbyAgJywgJyAgYmFyICAnXSwgXy50cmltKTtcbiAqIC8vID0+IFsnZm9vJywgJ2JhciddXG4gKi9cbmZ1bmN0aW9uIHRyaW0oc3RyaW5nLCBjaGFycywgZ3VhcmQpIHtcbiAgc3RyaW5nID0gdG9TdHJpbmcoc3RyaW5nKTtcbiAgaWYgKHN0cmluZyAmJiAoZ3VhcmQgfHwgY2hhcnMgPT09IHVuZGVmaW5lZCkpIHtcbiAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UocmVUcmltLCAnJyk7XG4gIH1cbiAgaWYgKCFzdHJpbmcgfHwgIShjaGFycyA9IGJhc2VUb1N0cmluZyhjaGFycykpKSB7XG4gICAgcmV0dXJuIHN0cmluZztcbiAgfVxuICB2YXIgc3RyU3ltYm9scyA9IHN0cmluZ1RvQXJyYXkoc3RyaW5nKSxcbiAgICAgIGNoclN5bWJvbHMgPSBzdHJpbmdUb0FycmF5KGNoYXJzKSxcbiAgICAgIHN0YXJ0ID0gY2hhcnNTdGFydEluZGV4KHN0clN5bWJvbHMsIGNoclN5bWJvbHMpLFxuICAgICAgZW5kID0gY2hhcnNFbmRJbmRleChzdHJTeW1ib2xzLCBjaHJTeW1ib2xzKSArIDE7XG5cbiAgcmV0dXJuIGNhc3RTbGljZShzdHJTeW1ib2xzLCBzdGFydCwgZW5kKS5qb2luKCcnKTtcbn1cblxudmFyIEZOX0FSR1MgPSAvXig/OmFzeW5jXFxzKyk/KGZ1bmN0aW9uKT9cXHMqW15cXChdKlxcKFxccyooW15cXCldKilcXCkvbTtcbnZhciBGTl9BUkdfU1BMSVQgPSAvLC87XG52YXIgRk5fQVJHID0gLyg9LispPyhcXHMqKSQvO1xudmFyIFNUUklQX0NPTU1FTlRTID0gLygoXFwvXFwvLiokKXwoXFwvXFwqW1xcc1xcU10qP1xcKlxcLykpL21nO1xuXG5mdW5jdGlvbiBwYXJzZVBhcmFtcyhmdW5jKSB7XG4gICAgZnVuYyA9IGZ1bmMudG9TdHJpbmcoKS5yZXBsYWNlKFNUUklQX0NPTU1FTlRTLCAnJyk7XG4gICAgZnVuYyA9IGZ1bmMubWF0Y2goRk5fQVJHUylbMl0ucmVwbGFjZSgnICcsICcnKTtcbiAgICBmdW5jID0gZnVuYyA/IGZ1bmMuc3BsaXQoRk5fQVJHX1NQTElUKSA6IFtdO1xuICAgIGZ1bmMgPSBmdW5jLm1hcChmdW5jdGlvbiAoYXJnKSB7XG4gICAgICAgIHJldHVybiB0cmltKGFyZy5yZXBsYWNlKEZOX0FSRywgJycpKTtcbiAgICB9KTtcbiAgICByZXR1cm4gZnVuYztcbn1cblxuLyoqXG4gKiBBIGRlcGVuZGVuY3ktaW5qZWN0ZWQgdmVyc2lvbiBvZiB0aGUgW2FzeW5jLmF1dG9de0BsaW5rIG1vZHVsZTpDb250cm9sRmxvdy5hdXRvfSBmdW5jdGlvbi4gRGVwZW5kZW50XG4gKiB0YXNrcyBhcmUgc3BlY2lmaWVkIGFzIHBhcmFtZXRlcnMgdG8gdGhlIGZ1bmN0aW9uLCBhZnRlciB0aGUgdXN1YWwgY2FsbGJhY2tcbiAqIHBhcmFtZXRlciwgd2l0aCB0aGUgcGFyYW1ldGVyIG5hbWVzIG1hdGNoaW5nIHRoZSBuYW1lcyBvZiB0aGUgdGFza3MgaXRcbiAqIGRlcGVuZHMgb24uIFRoaXMgY2FuIHByb3ZpZGUgZXZlbiBtb3JlIHJlYWRhYmxlIHRhc2sgZ3JhcGhzIHdoaWNoIGNhbiBiZVxuICogZWFzaWVyIHRvIG1haW50YWluLlxuICpcbiAqIElmIGEgZmluYWwgY2FsbGJhY2sgaXMgc3BlY2lmaWVkLCB0aGUgdGFzayByZXN1bHRzIGFyZSBzaW1pbGFybHkgaW5qZWN0ZWQsXG4gKiBzcGVjaWZpZWQgYXMgbmFtZWQgcGFyYW1ldGVycyBhZnRlciB0aGUgaW5pdGlhbCBlcnJvciBwYXJhbWV0ZXIuXG4gKlxuICogVGhlIGF1dG9JbmplY3QgZnVuY3Rpb24gaXMgcHVyZWx5IHN5bnRhY3RpYyBzdWdhciBhbmQgaXRzIHNlbWFudGljcyBhcmVcbiAqIG90aGVyd2lzZSBlcXVpdmFsZW50IHRvIFthc3luYy5hdXRvXXtAbGluayBtb2R1bGU6Q29udHJvbEZsb3cuYXV0b30uXG4gKlxuICogQG5hbWUgYXV0b0luamVjdFxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIG1vZHVsZTpDb250cm9sRmxvd1xuICogQG1ldGhvZFxuICogQHNlZSBbYXN5bmMuYXV0b117QGxpbmsgbW9kdWxlOkNvbnRyb2xGbG93LmF1dG99XG4gKiBAY2F0ZWdvcnkgQ29udHJvbCBGbG93XG4gKiBAcGFyYW0ge09iamVjdH0gdGFza3MgLSBBbiBvYmplY3QsIGVhY2ggb2Ygd2hvc2UgcHJvcGVydGllcyBpcyBhbiB7QGxpbmsgQXN5bmNGdW5jdGlvbn0gb2ZcbiAqIHRoZSBmb3JtICdmdW5jKFtkZXBlbmRlbmNpZXMuLi5dLCBjYWxsYmFjaykuIFRoZSBvYmplY3QncyBrZXkgb2YgYSBwcm9wZXJ0eVxuICogc2VydmVzIGFzIHRoZSBuYW1lIG9mIHRoZSB0YXNrIGRlZmluZWQgYnkgdGhhdCBwcm9wZXJ0eSwgaS5lLiBjYW4gYmUgdXNlZFxuICogd2hlbiBzcGVjaWZ5aW5nIHJlcXVpcmVtZW50cyBmb3Igb3RoZXIgdGFza3MuXG4gKiAqIFRoZSBgY2FsbGJhY2tgIHBhcmFtZXRlciBpcyBhIGBjYWxsYmFjayhlcnIsIHJlc3VsdClgIHdoaWNoIG11c3QgYmUgY2FsbGVkXG4gKiAgIHdoZW4gZmluaXNoZWQsIHBhc3NpbmcgYW4gYGVycm9yYCAod2hpY2ggY2FuIGJlIGBudWxsYCkgYW5kIHRoZSByZXN1bHQgb2ZcbiAqICAgdGhlIGZ1bmN0aW9uJ3MgZXhlY3V0aW9uLiBUaGUgcmVtYWluaW5nIHBhcmFtZXRlcnMgbmFtZSBvdGhlciB0YXNrcyBvblxuICogICB3aGljaCB0aGUgdGFzayBpcyBkZXBlbmRlbnQsIGFuZCB0aGUgcmVzdWx0cyBmcm9tIHRob3NlIHRhc2tzIGFyZSB0aGVcbiAqICAgYXJndW1lbnRzIG9mIHRob3NlIHBhcmFtZXRlcnMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY2FsbGJhY2tdIC0gQW4gb3B0aW9uYWwgY2FsbGJhY2sgd2hpY2ggaXMgY2FsbGVkIHdoZW4gYWxsXG4gKiB0aGUgdGFza3MgaGF2ZSBiZWVuIGNvbXBsZXRlZC4gSXQgcmVjZWl2ZXMgdGhlIGBlcnJgIGFyZ3VtZW50IGlmIGFueSBgdGFza3NgXG4gKiBwYXNzIGFuIGVycm9yIHRvIHRoZWlyIGNhbGxiYWNrLCBhbmQgYSBgcmVzdWx0c2Agb2JqZWN0IHdpdGggYW55IGNvbXBsZXRlZFxuICogdGFzayByZXN1bHRzLCBzaW1pbGFyIHRvIGBhdXRvYC5cbiAqIEBleGFtcGxlXG4gKlxuICogLy8gIFRoZSBleGFtcGxlIGZyb20gYGF1dG9gIGNhbiBiZSByZXdyaXR0ZW4gYXMgZm9sbG93czpcbiAqIGFzeW5jLmF1dG9JbmplY3Qoe1xuICogICAgIGdldF9kYXRhOiBmdW5jdGlvbihjYWxsYmFjaykge1xuICogICAgICAgICAvLyBhc3luYyBjb2RlIHRvIGdldCBzb21lIGRhdGFcbiAqICAgICAgICAgY2FsbGJhY2sobnVsbCwgJ2RhdGEnLCAnY29udmVydGVkIHRvIGFycmF5Jyk7XG4gKiAgICAgfSxcbiAqICAgICBtYWtlX2ZvbGRlcjogZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAqICAgICAgICAgLy8gYXN5bmMgY29kZSB0byBjcmVhdGUgYSBkaXJlY3RvcnkgdG8gc3RvcmUgYSBmaWxlIGluXG4gKiAgICAgICAgIC8vIHRoaXMgaXMgcnVuIGF0IHRoZSBzYW1lIHRpbWUgYXMgZ2V0dGluZyB0aGUgZGF0YVxuICogICAgICAgICBjYWxsYmFjayhudWxsLCAnZm9sZGVyJyk7XG4gKiAgICAgfSxcbiAqICAgICB3cml0ZV9maWxlOiBmdW5jdGlvbihnZXRfZGF0YSwgbWFrZV9mb2xkZXIsIGNhbGxiYWNrKSB7XG4gKiAgICAgICAgIC8vIG9uY2UgdGhlcmUgaXMgc29tZSBkYXRhIGFuZCB0aGUgZGlyZWN0b3J5IGV4aXN0cyxcbiAqICAgICAgICAgLy8gd3JpdGUgdGhlIGRhdGEgdG8gYSBmaWxlIGluIHRoZSBkaXJlY3RvcnlcbiAqICAgICAgICAgY2FsbGJhY2sobnVsbCwgJ2ZpbGVuYW1lJyk7XG4gKiAgICAgfSxcbiAqICAgICBlbWFpbF9saW5rOiBmdW5jdGlvbih3cml0ZV9maWxlLCBjYWxsYmFjaykge1xuICogICAgICAgICAvLyBvbmNlIHRoZSBmaWxlIGlzIHdyaXR0ZW4gbGV0J3MgZW1haWwgYSBsaW5rIHRvIGl0Li4uXG4gKiAgICAgICAgIC8vIHdyaXRlX2ZpbGUgY29udGFpbnMgdGhlIGZpbGVuYW1lIHJldHVybmVkIGJ5IHdyaXRlX2ZpbGUuXG4gKiAgICAgICAgIGNhbGxiYWNrKG51bGwsIHsnZmlsZSc6d3JpdGVfZmlsZSwgJ2VtYWlsJzondXNlckBleGFtcGxlLmNvbSd9KTtcbiAqICAgICB9XG4gKiB9LCBmdW5jdGlvbihlcnIsIHJlc3VsdHMpIHtcbiAqICAgICBjb25zb2xlLmxvZygnZXJyID0gJywgZXJyKTtcbiAqICAgICBjb25zb2xlLmxvZygnZW1haWxfbGluayA9ICcsIHJlc3VsdHMuZW1haWxfbGluayk7XG4gKiB9KTtcbiAqXG4gKiAvLyBJZiB5b3UgYXJlIHVzaW5nIGEgSlMgbWluaWZpZXIgdGhhdCBtYW5nbGVzIHBhcmFtZXRlciBuYW1lcywgYGF1dG9JbmplY3RgXG4gKiAvLyB3aWxsIG5vdCB3b3JrIHdpdGggcGxhaW4gZnVuY3Rpb25zLCBzaW5jZSB0aGUgcGFyYW1ldGVyIG5hbWVzIHdpbGwgYmVcbiAqIC8vIGNvbGxhcHNlZCB0byBhIHNpbmdsZSBsZXR0ZXIgaWRlbnRpZmllci4gIFRvIHdvcmsgYXJvdW5kIHRoaXMsIHlvdSBjYW5cbiAqIC8vIGV4cGxpY2l0bHkgc3BlY2lmeSB0aGUgbmFtZXMgb2YgdGhlIHBhcmFtZXRlcnMgeW91ciB0YXNrIGZ1bmN0aW9uIG5lZWRzXG4gKiAvLyBpbiBhbiBhcnJheSwgc2ltaWxhciB0byBBbmd1bGFyLmpzIGRlcGVuZGVuY3kgaW5qZWN0aW9uLlxuICpcbiAqIC8vIFRoaXMgc3RpbGwgaGFzIGFuIGFkdmFudGFnZSBvdmVyIHBsYWluIGBhdXRvYCwgc2luY2UgdGhlIHJlc3VsdHMgYSB0YXNrXG4gKiAvLyBkZXBlbmRzIG9uIGFyZSBzdGlsbCBzcHJlYWQgaW50byBhcmd1bWVudHMuXG4gKiBhc3luYy5hdXRvSW5qZWN0KHtcbiAqICAgICAvLy4uLlxuICogICAgIHdyaXRlX2ZpbGU6IFsnZ2V0X2RhdGEnLCAnbWFrZV9mb2xkZXInLCBmdW5jdGlvbihnZXRfZGF0YSwgbWFrZV9mb2xkZXIsIGNhbGxiYWNrKSB7XG4gKiAgICAgICAgIGNhbGxiYWNrKG51bGwsICdmaWxlbmFtZScpO1xuICogICAgIH1dLFxuICogICAgIGVtYWlsX2xpbms6IFsnd3JpdGVfZmlsZScsIGZ1bmN0aW9uKHdyaXRlX2ZpbGUsIGNhbGxiYWNrKSB7XG4gKiAgICAgICAgIGNhbGxiYWNrKG51bGwsIHsnZmlsZSc6d3JpdGVfZmlsZSwgJ2VtYWlsJzondXNlckBleGFtcGxlLmNvbSd9KTtcbiAqICAgICB9XVxuICogICAgIC8vLi4uXG4gKiB9LCBmdW5jdGlvbihlcnIsIHJlc3VsdHMpIHtcbiAqICAgICBjb25zb2xlLmxvZygnZXJyID0gJywgZXJyKTtcbiAqICAgICBjb25zb2xlLmxvZygnZW1haWxfbGluayA9ICcsIHJlc3VsdHMuZW1haWxfbGluayk7XG4gKiB9KTtcbiAqL1xuZnVuY3Rpb24gYXV0b0luamVjdCh0YXNrcywgY2FsbGJhY2spIHtcbiAgICB2YXIgbmV3VGFza3MgPSB7fTtcblxuICAgIGJhc2VGb3JPd24odGFza3MsIGZ1bmN0aW9uICh0YXNrRm4sIGtleSkge1xuICAgICAgICB2YXIgcGFyYW1zO1xuICAgICAgICB2YXIgZm5Jc0FzeW5jID0gaXNBc3luYyh0YXNrRm4pO1xuICAgICAgICB2YXIgaGFzTm9EZXBzID0gIWZuSXNBc3luYyAmJiB0YXNrRm4ubGVuZ3RoID09PSAxIHx8IGZuSXNBc3luYyAmJiB0YXNrRm4ubGVuZ3RoID09PSAwO1xuXG4gICAgICAgIGlmIChpc0FycmF5KHRhc2tGbikpIHtcbiAgICAgICAgICAgIHBhcmFtcyA9IHRhc2tGbi5zbGljZSgwLCAtMSk7XG4gICAgICAgICAgICB0YXNrRm4gPSB0YXNrRm5bdGFza0ZuLmxlbmd0aCAtIDFdO1xuXG4gICAgICAgICAgICBuZXdUYXNrc1trZXldID0gcGFyYW1zLmNvbmNhdChwYXJhbXMubGVuZ3RoID4gMCA/IG5ld1Rhc2sgOiB0YXNrRm4pO1xuICAgICAgICB9IGVsc2UgaWYgKGhhc05vRGVwcykge1xuICAgICAgICAgICAgLy8gbm8gZGVwZW5kZW5jaWVzLCB1c2UgdGhlIGZ1bmN0aW9uIGFzLWlzXG4gICAgICAgICAgICBuZXdUYXNrc1trZXldID0gdGFza0ZuO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGFyYW1zID0gcGFyc2VQYXJhbXModGFza0ZuKTtcbiAgICAgICAgICAgIGlmICh0YXNrRm4ubGVuZ3RoID09PSAwICYmICFmbklzQXN5bmMgJiYgcGFyYW1zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImF1dG9JbmplY3QgdGFzayBmdW5jdGlvbnMgcmVxdWlyZSBleHBsaWNpdCBwYXJhbWV0ZXJzLlwiKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gcmVtb3ZlIGNhbGxiYWNrIHBhcmFtXG4gICAgICAgICAgICBpZiAoIWZuSXNBc3luYykgcGFyYW1zLnBvcCgpO1xuXG4gICAgICAgICAgICBuZXdUYXNrc1trZXldID0gcGFyYW1zLmNvbmNhdChuZXdUYXNrKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIG5ld1Rhc2socmVzdWx0cywgdGFza0NiKSB7XG4gICAgICAgICAgICB2YXIgbmV3QXJncyA9IGFycmF5TWFwKHBhcmFtcywgZnVuY3Rpb24gKG5hbWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0c1tuYW1lXTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgbmV3QXJncy5wdXNoKHRhc2tDYik7XG4gICAgICAgICAgICB3cmFwQXN5bmMkMSh0YXNrRm4pLmFwcGx5KG51bGwsIG5ld0FyZ3MpO1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICBhdXRvKG5ld1Rhc2tzLCBjYWxsYmFjayk7XG59XG5cbnZhciBoYXNTZXRJbW1lZGlhdGUgPSB0eXBlb2Ygc2V0SW1tZWRpYXRlID09PSAnZnVuY3Rpb24nICYmIHNldEltbWVkaWF0ZTtcbnZhciBoYXNOZXh0VGljayA9IHR5cGVvZiBwcm9jZXNzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgcHJvY2Vzcy5uZXh0VGljayA9PT0gJ2Z1bmN0aW9uJztcblxuZnVuY3Rpb24gZmFsbGJhY2soZm4pIHtcbiAgICBzZXRUaW1lb3V0KGZuLCAwKTtcbn1cblxuZnVuY3Rpb24gd3JhcChkZWZlcikge1xuICAgIHJldHVybiByZXN0KGZ1bmN0aW9uIChmbiwgYXJncykge1xuICAgICAgICBkZWZlcihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBmbi5hcHBseShudWxsLCBhcmdzKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG59XG5cbnZhciBfZGVmZXI7XG5cbmlmIChoYXNTZXRJbW1lZGlhdGUpIHtcbiAgICBfZGVmZXIgPSBzZXRJbW1lZGlhdGU7XG59IGVsc2UgaWYgKGhhc05leHRUaWNrKSB7XG4gICAgX2RlZmVyID0gcHJvY2Vzcy5uZXh0VGljaztcbn0gZWxzZSB7XG4gICAgX2RlZmVyID0gZmFsbGJhY2s7XG59XG5cbnZhciBzZXRJbW1lZGlhdGUkMSA9IHdyYXAoX2RlZmVyKTtcblxuLy8gU2ltcGxlIGRvdWJseSBsaW5rZWQgbGlzdCAoaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRG91Ymx5X2xpbmtlZF9saXN0KSBpbXBsZW1lbnRhdGlvblxuLy8gdXNlZCBmb3IgcXVldWVzLiBUaGlzIGltcGxlbWVudGF0aW9uIGFzc3VtZXMgdGhhdCB0aGUgbm9kZSBwcm92aWRlZCBieSB0aGUgdXNlciBjYW4gYmUgbW9kaWZpZWRcbi8vIHRvIGFkanVzdCB0aGUgbmV4dCBhbmQgbGFzdCBwcm9wZXJ0aWVzLiBXZSBpbXBsZW1lbnQgb25seSB0aGUgbWluaW1hbCBmdW5jdGlvbmFsaXR5XG4vLyBmb3IgcXVldWUgc3VwcG9ydC5cbmZ1bmN0aW9uIERMTCgpIHtcbiAgICB0aGlzLmhlYWQgPSB0aGlzLnRhaWwgPSBudWxsO1xuICAgIHRoaXMubGVuZ3RoID0gMDtcbn1cblxuZnVuY3Rpb24gc2V0SW5pdGlhbChkbGwsIG5vZGUpIHtcbiAgICBkbGwubGVuZ3RoID0gMTtcbiAgICBkbGwuaGVhZCA9IGRsbC50YWlsID0gbm9kZTtcbn1cblxuRExMLnByb3RvdHlwZS5yZW1vdmVMaW5rID0gZnVuY3Rpb24gKG5vZGUpIHtcbiAgICBpZiAobm9kZS5wcmV2KSBub2RlLnByZXYubmV4dCA9IG5vZGUubmV4dDtlbHNlIHRoaXMuaGVhZCA9IG5vZGUubmV4dDtcbiAgICBpZiAobm9kZS5uZXh0KSBub2RlLm5leHQucHJldiA9IG5vZGUucHJldjtlbHNlIHRoaXMudGFpbCA9IG5vZGUucHJldjtcblxuICAgIG5vZGUucHJldiA9IG5vZGUubmV4dCA9IG51bGw7XG4gICAgdGhpcy5sZW5ndGggLT0gMTtcbiAgICByZXR1cm4gbm9kZTtcbn07XG5cbkRMTC5wcm90b3R5cGUuZW1wdHkgPSBETEw7XG5cbkRMTC5wcm90b3R5cGUuaW5zZXJ0QWZ0ZXIgPSBmdW5jdGlvbiAobm9kZSwgbmV3Tm9kZSkge1xuICAgIG5ld05vZGUucHJldiA9IG5vZGU7XG4gICAgbmV3Tm9kZS5uZXh0ID0gbm9kZS5uZXh0O1xuICAgIGlmIChub2RlLm5leHQpIG5vZGUubmV4dC5wcmV2ID0gbmV3Tm9kZTtlbHNlIHRoaXMudGFpbCA9IG5ld05vZGU7XG4gICAgbm9kZS5uZXh0ID0gbmV3Tm9kZTtcbiAgICB0aGlzLmxlbmd0aCArPSAxO1xufTtcblxuRExMLnByb3RvdHlwZS5pbnNlcnRCZWZvcmUgPSBmdW5jdGlvbiAobm9kZSwgbmV3Tm9kZSkge1xuICAgIG5ld05vZGUucHJldiA9IG5vZGUucHJldjtcbiAgICBuZXdOb2RlLm5leHQgPSBub2RlO1xuICAgIGlmIChub2RlLnByZXYpIG5vZGUucHJldi5uZXh0ID0gbmV3Tm9kZTtlbHNlIHRoaXMuaGVhZCA9IG5ld05vZGU7XG4gICAgbm9kZS5wcmV2ID0gbmV3Tm9kZTtcbiAgICB0aGlzLmxlbmd0aCArPSAxO1xufTtcblxuRExMLnByb3RvdHlwZS51bnNoaWZ0ID0gZnVuY3Rpb24gKG5vZGUpIHtcbiAgICBpZiAodGhpcy5oZWFkKSB0aGlzLmluc2VydEJlZm9yZSh0aGlzLmhlYWQsIG5vZGUpO2Vsc2Ugc2V0SW5pdGlhbCh0aGlzLCBub2RlKTtcbn07XG5cbkRMTC5wcm90b3R5cGUucHVzaCA9IGZ1bmN0aW9uIChub2RlKSB7XG4gICAgaWYgKHRoaXMudGFpbCkgdGhpcy5pbnNlcnRBZnRlcih0aGlzLnRhaWwsIG5vZGUpO2Vsc2Ugc2V0SW5pdGlhbCh0aGlzLCBub2RlKTtcbn07XG5cbkRMTC5wcm90b3R5cGUuc2hpZnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMuaGVhZCAmJiB0aGlzLnJlbW92ZUxpbmsodGhpcy5oZWFkKTtcbn07XG5cbkRMTC5wcm90b3R5cGUucG9wID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLnRhaWwgJiYgdGhpcy5yZW1vdmVMaW5rKHRoaXMudGFpbCk7XG59O1xuXG5mdW5jdGlvbiBxdWV1ZSh3b3JrZXIsIGNvbmN1cnJlbmN5LCBwYXlsb2FkKSB7XG4gICAgaWYgKGNvbmN1cnJlbmN5ID09IG51bGwpIHtcbiAgICAgICAgY29uY3VycmVuY3kgPSAxO1xuICAgIH0gZWxzZSBpZiAoY29uY3VycmVuY3kgPT09IDApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb25jdXJyZW5jeSBtdXN0IG5vdCBiZSB6ZXJvJyk7XG4gICAgfVxuXG4gICAgdmFyIF93b3JrZXIgPSB3cmFwQXN5bmMkMSh3b3JrZXIpO1xuICAgIHZhciBudW1SdW5uaW5nID0gMDtcbiAgICB2YXIgd29ya2Vyc0xpc3QgPSBbXTtcblxuICAgIGZ1bmN0aW9uIF9pbnNlcnQoZGF0YSwgaW5zZXJ0QXRGcm9udCwgY2FsbGJhY2spIHtcbiAgICAgICAgaWYgKGNhbGxiYWNrICE9IG51bGwgJiYgdHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3Rhc2sgY2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uJyk7XG4gICAgICAgIH1cbiAgICAgICAgcS5zdGFydGVkID0gdHJ1ZTtcbiAgICAgICAgaWYgKCFpc0FycmF5KGRhdGEpKSB7XG4gICAgICAgICAgICBkYXRhID0gW2RhdGFdO1xuICAgICAgICB9XG4gICAgICAgIGlmIChkYXRhLmxlbmd0aCA9PT0gMCAmJiBxLmlkbGUoKSkge1xuICAgICAgICAgICAgLy8gY2FsbCBkcmFpbiBpbW1lZGlhdGVseSBpZiB0aGVyZSBhcmUgbm8gdGFza3NcbiAgICAgICAgICAgIHJldHVybiBzZXRJbW1lZGlhdGUkMShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcS5kcmFpbigpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKHZhciBpID0gMCwgbCA9IGRhdGEubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgICAgICB2YXIgaXRlbSA9IHtcbiAgICAgICAgICAgICAgICBkYXRhOiBkYXRhW2ldLFxuICAgICAgICAgICAgICAgIGNhbGxiYWNrOiBjYWxsYmFjayB8fCBub29wXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBpZiAoaW5zZXJ0QXRGcm9udCkge1xuICAgICAgICAgICAgICAgIHEuX3Rhc2tzLnVuc2hpZnQoaXRlbSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHEuX3Rhc2tzLnB1c2goaXRlbSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgc2V0SW1tZWRpYXRlJDEocS5wcm9jZXNzKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBfbmV4dCh0YXNrcykge1xuICAgICAgICByZXR1cm4gcmVzdChmdW5jdGlvbiAoYXJncykge1xuICAgICAgICAgICAgbnVtUnVubmluZyAtPSAxO1xuXG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMCwgbCA9IHRhc2tzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgICAgICAgICAgIHZhciB0YXNrID0gdGFza3NbaV07XG4gICAgICAgICAgICAgICAgdmFyIGluZGV4ID0gYmFzZUluZGV4T2Yod29ya2Vyc0xpc3QsIHRhc2ssIDApO1xuICAgICAgICAgICAgICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHdvcmtlcnNMaXN0LnNwbGljZShpbmRleCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGFzay5jYWxsYmFjay5hcHBseSh0YXNrLCBhcmdzKTtcblxuICAgICAgICAgICAgICAgIGlmIChhcmdzWzBdICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgcS5lcnJvcihhcmdzWzBdLCB0YXNrLmRhdGEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKG51bVJ1bm5pbmcgPD0gcS5jb25jdXJyZW5jeSAtIHEuYnVmZmVyKSB7XG4gICAgICAgICAgICAgICAgcS51bnNhdHVyYXRlZCgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocS5pZGxlKCkpIHtcbiAgICAgICAgICAgICAgICBxLmRyYWluKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBxLnByb2Nlc3MoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgdmFyIGlzUHJvY2Vzc2luZyA9IGZhbHNlO1xuICAgIHZhciBxID0ge1xuICAgICAgICBfdGFza3M6IG5ldyBETEwoKSxcbiAgICAgICAgY29uY3VycmVuY3k6IGNvbmN1cnJlbmN5LFxuICAgICAgICBwYXlsb2FkOiBwYXlsb2FkLFxuICAgICAgICBzYXR1cmF0ZWQ6IG5vb3AsXG4gICAgICAgIHVuc2F0dXJhdGVkOiBub29wLFxuICAgICAgICBidWZmZXI6IGNvbmN1cnJlbmN5IC8gNCxcbiAgICAgICAgZW1wdHk6IG5vb3AsXG4gICAgICAgIGRyYWluOiBub29wLFxuICAgICAgICBlcnJvcjogbm9vcCxcbiAgICAgICAgc3RhcnRlZDogZmFsc2UsXG4gICAgICAgIHBhdXNlZDogZmFsc2UsXG4gICAgICAgIHB1c2g6IGZ1bmN0aW9uIChkYXRhLCBjYWxsYmFjaykge1xuICAgICAgICAgICAgX2luc2VydChkYXRhLCBmYWxzZSwgY2FsbGJhY2spO1xuICAgICAgICB9LFxuICAgICAgICBraWxsOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBxLmRyYWluID0gbm9vcDtcbiAgICAgICAgICAgIHEuX3Rhc2tzLmVtcHR5KCk7XG4gICAgICAgIH0sXG4gICAgICAgIHVuc2hpZnQ6IGZ1bmN0aW9uIChkYXRhLCBjYWxsYmFjaykge1xuICAgICAgICAgICAgX2luc2VydChkYXRhLCB0cnVlLCBjYWxsYmFjayk7XG4gICAgICAgIH0sXG4gICAgICAgIHByb2Nlc3M6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIC8vIEF2b2lkIHRyeWluZyB0byBzdGFydCB0b28gbWFueSBwcm9jZXNzaW5nIG9wZXJhdGlvbnMuIFRoaXMgY2FuIG9jY3VyXG4gICAgICAgICAgICAvLyB3aGVuIGNhbGxiYWNrcyByZXNvbHZlIHN5bmNocm9ub3VzbHkgKCMxMjY3KS5cbiAgICAgICAgICAgIGlmIChpc1Byb2Nlc3NpbmcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpc1Byb2Nlc3NpbmcgPSB0cnVlO1xuICAgICAgICAgICAgd2hpbGUgKCFxLnBhdXNlZCAmJiBudW1SdW5uaW5nIDwgcS5jb25jdXJyZW5jeSAmJiBxLl90YXNrcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGFza3MgPSBbXSxcbiAgICAgICAgICAgICAgICAgICAgZGF0YSA9IFtdO1xuICAgICAgICAgICAgICAgIHZhciBsID0gcS5fdGFza3MubGVuZ3RoO1xuICAgICAgICAgICAgICAgIGlmIChxLnBheWxvYWQpIGwgPSBNYXRoLm1pbihsLCBxLnBheWxvYWQpO1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBub2RlID0gcS5fdGFza3Muc2hpZnQoKTtcbiAgICAgICAgICAgICAgICAgICAgdGFza3MucHVzaChub2RlKTtcbiAgICAgICAgICAgICAgICAgICAgZGF0YS5wdXNoKG5vZGUuZGF0YSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHEuX3Rhc2tzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICBxLmVtcHR5KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG51bVJ1bm5pbmcgKz0gMTtcbiAgICAgICAgICAgICAgICB3b3JrZXJzTGlzdC5wdXNoKHRhc2tzWzBdKTtcblxuICAgICAgICAgICAgICAgIGlmIChudW1SdW5uaW5nID09PSBxLmNvbmN1cnJlbmN5KSB7XG4gICAgICAgICAgICAgICAgICAgIHEuc2F0dXJhdGVkKCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdmFyIGNiID0gb25seU9uY2UoX25leHQodGFza3MpKTtcbiAgICAgICAgICAgICAgICBfd29ya2VyKGRhdGEsIGNiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlzUHJvY2Vzc2luZyA9IGZhbHNlO1xuICAgICAgICB9LFxuICAgICAgICBsZW5ndGg6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBxLl90YXNrcy5sZW5ndGg7XG4gICAgICAgIH0sXG4gICAgICAgIHJ1bm5pbmc6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBudW1SdW5uaW5nO1xuICAgICAgICB9LFxuICAgICAgICB3b3JrZXJzTGlzdDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHdvcmtlcnNMaXN0O1xuICAgICAgICB9LFxuICAgICAgICBpZGxlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gcS5fdGFza3MubGVuZ3RoICsgbnVtUnVubmluZyA9PT0gMDtcbiAgICAgICAgfSxcbiAgICAgICAgcGF1c2U6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHEucGF1c2VkID0gdHJ1ZTtcbiAgICAgICAgfSxcbiAgICAgICAgcmVzdW1lOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAocS5wYXVzZWQgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcS5wYXVzZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIHNldEltbWVkaWF0ZSQxKHEucHJvY2Vzcyk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHJldHVybiBxO1xufVxuXG4vKipcbiAqIEEgY2FyZ28gb2YgdGFza3MgZm9yIHRoZSB3b3JrZXIgZnVuY3Rpb24gdG8gY29tcGxldGUuIENhcmdvIGluaGVyaXRzIGFsbCBvZlxuICogdGhlIHNhbWUgbWV0aG9kcyBhbmQgZXZlbnQgY2FsbGJhY2tzIGFzIFtgcXVldWVgXXtAbGluayBtb2R1bGU6Q29udHJvbEZsb3cucXVldWV9LlxuICogQHR5cGVkZWYge09iamVjdH0gQ2FyZ29PYmplY3RcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Q29udHJvbEZsb3dcbiAqIEBwcm9wZXJ0eSB7RnVuY3Rpb259IGxlbmd0aCAtIEEgZnVuY3Rpb24gcmV0dXJuaW5nIHRoZSBudW1iZXIgb2YgaXRlbXNcbiAqIHdhaXRpbmcgdG8gYmUgcHJvY2Vzc2VkLiBJbnZva2UgbGlrZSBgY2FyZ28ubGVuZ3RoKClgLlxuICogQHByb3BlcnR5IHtudW1iZXJ9IHBheWxvYWQgLSBBbiBgaW50ZWdlcmAgZm9yIGRldGVybWluaW5nIGhvdyBtYW55IHRhc2tzXG4gKiBzaG91bGQgYmUgcHJvY2VzcyBwZXIgcm91bmQuIFRoaXMgcHJvcGVydHkgY2FuIGJlIGNoYW5nZWQgYWZ0ZXIgYSBgY2FyZ29gIGlzXG4gKiBjcmVhdGVkIHRvIGFsdGVyIHRoZSBwYXlsb2FkIG9uLXRoZS1mbHkuXG4gKiBAcHJvcGVydHkge0Z1bmN0aW9ufSBwdXNoIC0gQWRkcyBgdGFza2AgdG8gdGhlIGBxdWV1ZWAuIFRoZSBjYWxsYmFjayBpc1xuICogY2FsbGVkIG9uY2UgdGhlIGB3b3JrZXJgIGhhcyBmaW5pc2hlZCBwcm9jZXNzaW5nIHRoZSB0YXNrLiBJbnN0ZWFkIG9mIGFcbiAqIHNpbmdsZSB0YXNrLCBhbiBhcnJheSBvZiBgdGFza3NgIGNhbiBiZSBzdWJtaXR0ZWQuIFRoZSByZXNwZWN0aXZlIGNhbGxiYWNrIGlzXG4gKiB1c2VkIGZvciBldmVyeSB0YXNrIGluIHRoZSBsaXN0LiBJbnZva2UgbGlrZSBgY2FyZ28ucHVzaCh0YXNrLCBbY2FsbGJhY2tdKWAuXG4gKiBAcHJvcGVydHkge0Z1bmN0aW9ufSBzYXR1cmF0ZWQgLSBBIGNhbGxiYWNrIHRoYXQgaXMgY2FsbGVkIHdoZW4gdGhlXG4gKiBgcXVldWUubGVuZ3RoKClgIGhpdHMgdGhlIGNvbmN1cnJlbmN5IGFuZCBmdXJ0aGVyIHRhc2tzIHdpbGwgYmUgcXVldWVkLlxuICogQHByb3BlcnR5IHtGdW5jdGlvbn0gZW1wdHkgLSBBIGNhbGxiYWNrIHRoYXQgaXMgY2FsbGVkIHdoZW4gdGhlIGxhc3QgaXRlbVxuICogZnJvbSB0aGUgYHF1ZXVlYCBpcyBnaXZlbiB0byBhIGB3b3JrZXJgLlxuICogQHByb3BlcnR5IHtGdW5jdGlvbn0gZHJhaW4gLSBBIGNhbGxiYWNrIHRoYXQgaXMgY2FsbGVkIHdoZW4gdGhlIGxhc3QgaXRlbVxuICogZnJvbSB0aGUgYHF1ZXVlYCBoYXMgcmV0dXJuZWQgZnJvbSB0aGUgYHdvcmtlcmAuXG4gKiBAcHJvcGVydHkge0Z1bmN0aW9ufSBpZGxlIC0gYSBmdW5jdGlvbiByZXR1cm5pbmcgZmFsc2UgaWYgdGhlcmUgYXJlIGl0ZW1zXG4gKiB3YWl0aW5nIG9yIGJlaW5nIHByb2Nlc3NlZCwgb3IgdHJ1ZSBpZiBub3QuIEludm9rZSBsaWtlIGBjYXJnby5pZGxlKClgLlxuICogQHByb3BlcnR5IHtGdW5jdGlvbn0gcGF1c2UgLSBhIGZ1bmN0aW9uIHRoYXQgcGF1c2VzIHRoZSBwcm9jZXNzaW5nIG9mIHRhc2tzXG4gKiB1bnRpbCBgcmVzdW1lKClgIGlzIGNhbGxlZC4gSW52b2tlIGxpa2UgYGNhcmdvLnBhdXNlKClgLlxuICogQHByb3BlcnR5IHtGdW5jdGlvbn0gcmVzdW1lIC0gYSBmdW5jdGlvbiB0aGF0IHJlc3VtZXMgdGhlIHByb2Nlc3Npbmcgb2ZcbiAqIHF1ZXVlZCB0YXNrcyB3aGVuIHRoZSBxdWV1ZSBpcyBwYXVzZWQuIEludm9rZSBsaWtlIGBjYXJnby5yZXN1bWUoKWAuXG4gKiBAcHJvcGVydHkge0Z1bmN0aW9ufSBraWxsIC0gYSBmdW5jdGlvbiB0aGF0IHJlbW92ZXMgdGhlIGBkcmFpbmAgY2FsbGJhY2sgYW5kXG4gKiBlbXB0aWVzIHJlbWFpbmluZyB0YXNrcyBmcm9tIHRoZSBxdWV1ZSBmb3JjaW5nIGl0IHRvIGdvIGlkbGUuIEludm9rZSBsaWtlIGBjYXJnby5raWxsKClgLlxuICovXG5cbi8qKlxuICogQ3JlYXRlcyBhIGBjYXJnb2Agb2JqZWN0IHdpdGggdGhlIHNwZWNpZmllZCBwYXlsb2FkLiBUYXNrcyBhZGRlZCB0byB0aGVcbiAqIGNhcmdvIHdpbGwgYmUgcHJvY2Vzc2VkIGFsdG9nZXRoZXIgKHVwIHRvIHRoZSBgcGF5bG9hZGAgbGltaXQpLiBJZiB0aGVcbiAqIGB3b3JrZXJgIGlzIGluIHByb2dyZXNzLCB0aGUgdGFzayBpcyBxdWV1ZWQgdW50aWwgaXQgYmVjb21lcyBhdmFpbGFibGUuIE9uY2VcbiAqIHRoZSBgd29ya2VyYCBoYXMgY29tcGxldGVkIHNvbWUgdGFza3MsIGVhY2ggY2FsbGJhY2sgb2YgdGhvc2UgdGFza3MgaXNcbiAqIGNhbGxlZC4gQ2hlY2sgb3V0IFt0aGVzZV0oaHR0cHM6Ly9jYW1vLmdpdGh1YnVzZXJjb250ZW50LmNvbS82YmJkMzZmNGNmNWIzNWEwZjExYTk2ZGNkMmU5NzcxMWZmYzJmYjM3LzY4NzQ3NDcwNzMzYTJmMmY2NjJlNjM2YzZmNzU2NDJlNjc2OTc0Njg3NTYyMmU2MzZmNmQyZjYxNzM3MzY1NzQ3MzJmMzEzNjM3MzYzODM3MzEyZjM2MzgzMTMwMzgyZjYyNjI2MzMwNjM2NjYyMzAyZDM1NjYzMjM5MmQzMTMxNjUzMjJkMzkzNzM0NjYyZDMzMzMzOTM3NjMzNjM0NjQ2MzM4MzUzODJlNjc2OTY2KSBbYW5pbWF0aW9uc10oaHR0cHM6Ly9jYW1vLmdpdGh1YnVzZXJjb250ZW50LmNvbS9mNDgxMGUwMGUxYzVmNWY4YWRkYmUzZTlmNDkwNjRmZDVkMTAyNjk5LzY4NzQ3NDcwNzMzYTJmMmY2NjJlNjM2YzZmNzU2NDJlNjc2OTc0Njg3NTYyMmU2MzZmNmQyZjYxNzM3MzY1NzQ3MzJmMzEzNjM3MzYzODM3MzEyZjM2MzgzMTMwMzEyZjM4MzQ2MzM5MzIzMDM2MzYyZDM1NjYzMjM5MmQzMTMxNjUzMjJkMzgzMTM0NjYyZDM5NjQzMzY0MzAzMjM0MzEzMzYyNjY2NDJlNjc2OTY2KVxuICogZm9yIGhvdyBgY2FyZ29gIGFuZCBgcXVldWVgIHdvcmsuXG4gKlxuICogV2hpbGUgW2BxdWV1ZWBde0BsaW5rIG1vZHVsZTpDb250cm9sRmxvdy5xdWV1ZX0gcGFzc2VzIG9ubHkgb25lIHRhc2sgdG8gb25lIG9mIGEgZ3JvdXAgb2Ygd29ya2Vyc1xuICogYXQgYSB0aW1lLCBjYXJnbyBwYXNzZXMgYW4gYXJyYXkgb2YgdGFza3MgdG8gYSBzaW5nbGUgd29ya2VyLCByZXBlYXRpbmdcbiAqIHdoZW4gdGhlIHdvcmtlciBpcyBmaW5pc2hlZC5cbiAqXG4gKiBAbmFtZSBjYXJnb1xuICogQHN0YXRpY1xuICogQG1lbWJlck9mIG1vZHVsZTpDb250cm9sRmxvd1xuICogQG1ldGhvZFxuICogQHNlZSBbYXN5bmMucXVldWVde0BsaW5rIG1vZHVsZTpDb250cm9sRmxvdy5xdWV1ZX1cbiAqIEBjYXRlZ29yeSBDb250cm9sIEZsb3dcbiAqIEBwYXJhbSB7QXN5bmNGdW5jdGlvbn0gd29ya2VyIC0gQW4gYXN5bmNocm9ub3VzIGZ1bmN0aW9uIGZvciBwcm9jZXNzaW5nIGFuIGFycmF5XG4gKiBvZiBxdWV1ZWQgdGFza3MuIEludm9rZWQgd2l0aCBgKHRhc2tzLCBjYWxsYmFjaylgLlxuICogQHBhcmFtIHtudW1iZXJ9IFtwYXlsb2FkPUluZmluaXR5XSAtIEFuIG9wdGlvbmFsIGBpbnRlZ2VyYCBmb3IgZGV0ZXJtaW5pbmdcbiAqIGhvdyBtYW55IHRhc2tzIHNob3VsZCBiZSBwcm9jZXNzZWQgcGVyIHJvdW5kOyBpZiBvbWl0dGVkLCB0aGUgZGVmYXVsdCBpc1xuICogdW5saW1pdGVkLlxuICogQHJldHVybnMge21vZHVsZTpDb250cm9sRmxvdy5DYXJnb09iamVjdH0gQSBjYXJnbyBvYmplY3QgdG8gbWFuYWdlIHRoZSB0YXNrcy4gQ2FsbGJhY2tzIGNhblxuICogYXR0YWNoZWQgYXMgY2VydGFpbiBwcm9wZXJ0aWVzIHRvIGxpc3RlbiBmb3Igc3BlY2lmaWMgZXZlbnRzIGR1cmluZyB0aGVcbiAqIGxpZmVjeWNsZSBvZiB0aGUgY2FyZ28gYW5kIGlubmVyIHF1ZXVlLlxuICogQGV4YW1wbGVcbiAqXG4gKiAvLyBjcmVhdGUgYSBjYXJnbyBvYmplY3Qgd2l0aCBwYXlsb2FkIDJcbiAqIHZhciBjYXJnbyA9IGFzeW5jLmNhcmdvKGZ1bmN0aW9uKHRhc2tzLCBjYWxsYmFjaykge1xuICogICAgIGZvciAodmFyIGk9MDsgaTx0YXNrcy5sZW5ndGg7IGkrKykge1xuICogICAgICAgICBjb25zb2xlLmxvZygnaGVsbG8gJyArIHRhc2tzW2ldLm5hbWUpO1xuICogICAgIH1cbiAqICAgICBjYWxsYmFjaygpO1xuICogfSwgMik7XG4gKlxuICogLy8gYWRkIHNvbWUgaXRlbXNcbiAqIGNhcmdvLnB1c2goe25hbWU6ICdmb28nfSwgZnVuY3Rpb24oZXJyKSB7XG4gKiAgICAgY29uc29sZS5sb2coJ2ZpbmlzaGVkIHByb2Nlc3NpbmcgZm9vJyk7XG4gKiB9KTtcbiAqIGNhcmdvLnB1c2goe25hbWU6ICdiYXInfSwgZnVuY3Rpb24oZXJyKSB7XG4gKiAgICAgY29uc29sZS5sb2coJ2ZpbmlzaGVkIHByb2Nlc3NpbmcgYmFyJyk7XG4gKiB9KTtcbiAqIGNhcmdvLnB1c2goe25hbWU6ICdiYXonfSwgZnVuY3Rpb24oZXJyKSB7XG4gKiAgICAgY29uc29sZS5sb2coJ2ZpbmlzaGVkIHByb2Nlc3NpbmcgYmF6Jyk7XG4gKiB9KTtcbiAqL1xuZnVuY3Rpb24gY2FyZ28od29ya2VyLCBwYXlsb2FkKSB7XG4gIHJldHVybiBxdWV1ZSh3b3JrZXIsIDEsIHBheWxvYWQpO1xufVxuXG4vKipcbiAqIFRoZSBzYW1lIGFzIFtgZWFjaE9mYF17QGxpbmsgbW9kdWxlOkNvbGxlY3Rpb25zLmVhY2hPZn0gYnV0IHJ1bnMgb25seSBhIHNpbmdsZSBhc3luYyBvcGVyYXRpb24gYXQgYSB0aW1lLlxuICpcbiAqIEBuYW1lIGVhY2hPZlNlcmllc1xuICogQHN0YXRpY1xuICogQG1lbWJlck9mIG1vZHVsZTpDb2xsZWN0aW9uc1xuICogQG1ldGhvZFxuICogQHNlZSBbYXN5bmMuZWFjaE9mXXtAbGluayBtb2R1bGU6Q29sbGVjdGlvbnMuZWFjaE9mfVxuICogQGFsaWFzIGZvckVhY2hPZlNlcmllc1xuICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAqIEBwYXJhbSB7QXJyYXl8SXRlcmFibGV8T2JqZWN0fSBjb2xsIC0gQSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7QXN5bmNGdW5jdGlvbn0gaXRlcmF0ZWUgLSBBbiBhc3luYyBmdW5jdGlvbiB0byBhcHBseSB0byBlYWNoIGl0ZW0gaW5cbiAqIGBjb2xsYC5cbiAqIEludm9rZWQgd2l0aCAoaXRlbSwga2V5LCBjYWxsYmFjaykuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY2FsbGJhY2tdIC0gQSBjYWxsYmFjayB3aGljaCBpcyBjYWxsZWQgd2hlbiBhbGwgYGl0ZXJhdGVlYFxuICogZnVuY3Rpb25zIGhhdmUgZmluaXNoZWQsIG9yIGFuIGVycm9yIG9jY3Vycy4gSW52b2tlZCB3aXRoIChlcnIpLlxuICovXG52YXIgZWFjaE9mU2VyaWVzID0gZG9MaW1pdChlYWNoT2ZMaW1pdCwgMSk7XG5cbi8qKlxuICogUmVkdWNlcyBgY29sbGAgaW50byBhIHNpbmdsZSB2YWx1ZSB1c2luZyBhbiBhc3luYyBgaXRlcmF0ZWVgIHRvIHJldHVybiBlYWNoXG4gKiBzdWNjZXNzaXZlIHN0ZXAuIGBtZW1vYCBpcyB0aGUgaW5pdGlhbCBzdGF0ZSBvZiB0aGUgcmVkdWN0aW9uLiBUaGlzIGZ1bmN0aW9uXG4gKiBvbmx5IG9wZXJhdGVzIGluIHNlcmllcy5cbiAqXG4gKiBGb3IgcGVyZm9ybWFuY2UgcmVhc29ucywgaXQgbWF5IG1ha2Ugc2Vuc2UgdG8gc3BsaXQgYSBjYWxsIHRvIHRoaXMgZnVuY3Rpb25cbiAqIGludG8gYSBwYXJhbGxlbCBtYXAsIGFuZCB0aGVuIHVzZSB0aGUgbm9ybWFsIGBBcnJheS5wcm90b3R5cGUucmVkdWNlYCBvbiB0aGVcbiAqIHJlc3VsdHMuIFRoaXMgZnVuY3Rpb24gaXMgZm9yIHNpdHVhdGlvbnMgd2hlcmUgZWFjaCBzdGVwIGluIHRoZSByZWR1Y3Rpb25cbiAqIG5lZWRzIHRvIGJlIGFzeW5jOyBpZiB5b3UgY2FuIGdldCB0aGUgZGF0YSBiZWZvcmUgcmVkdWNpbmcgaXQsIHRoZW4gaXQnc1xuICogcHJvYmFibHkgYSBnb29kIGlkZWEgdG8gZG8gc28uXG4gKlxuICogQG5hbWUgcmVkdWNlXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgbW9kdWxlOkNvbGxlY3Rpb25zXG4gKiBAbWV0aG9kXG4gKiBAYWxpYXMgaW5qZWN0XG4gKiBAYWxpYXMgZm9sZGxcbiAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gKiBAcGFyYW0ge0FycmF5fEl0ZXJhYmxlfE9iamVjdH0gY29sbCAtIEEgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0geyp9IG1lbW8gLSBUaGUgaW5pdGlhbCBzdGF0ZSBvZiB0aGUgcmVkdWN0aW9uLlxuICogQHBhcmFtIHtBc3luY0Z1bmN0aW9ufSBpdGVyYXRlZSAtIEEgZnVuY3Rpb24gYXBwbGllZCB0byBlYWNoIGl0ZW0gaW4gdGhlXG4gKiBhcnJheSB0byBwcm9kdWNlIHRoZSBuZXh0IHN0ZXAgaW4gdGhlIHJlZHVjdGlvbi5cbiAqIFRoZSBgaXRlcmF0ZWVgIHNob3VsZCBjb21wbGV0ZSB3aXRoIHRoZSBuZXh0IHN0YXRlIG9mIHRoZSByZWR1Y3Rpb24uXG4gKiBJZiB0aGUgaXRlcmF0ZWUgY29tcGxldGUgd2l0aCBhbiBlcnJvciwgdGhlIHJlZHVjdGlvbiBpcyBzdG9wcGVkIGFuZCB0aGVcbiAqIG1haW4gYGNhbGxiYWNrYCBpcyBpbW1lZGlhdGVseSBjYWxsZWQgd2l0aCB0aGUgZXJyb3IuXG4gKiBJbnZva2VkIHdpdGggKG1lbW8sIGl0ZW0sIGNhbGxiYWNrKS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjYWxsYmFja10gLSBBIGNhbGxiYWNrIHdoaWNoIGlzIGNhbGxlZCBhZnRlciBhbGwgdGhlXG4gKiBgaXRlcmF0ZWVgIGZ1bmN0aW9ucyBoYXZlIGZpbmlzaGVkLiBSZXN1bHQgaXMgdGhlIHJlZHVjZWQgdmFsdWUuIEludm9rZWQgd2l0aFxuICogKGVyciwgcmVzdWx0KS5cbiAqIEBleGFtcGxlXG4gKlxuICogYXN5bmMucmVkdWNlKFsxLDIsM10sIDAsIGZ1bmN0aW9uKG1lbW8sIGl0ZW0sIGNhbGxiYWNrKSB7XG4gKiAgICAgLy8gcG9pbnRsZXNzIGFzeW5jOlxuICogICAgIHByb2Nlc3MubmV4dFRpY2soZnVuY3Rpb24oKSB7XG4gKiAgICAgICAgIGNhbGxiYWNrKG51bGwsIG1lbW8gKyBpdGVtKVxuICogICAgIH0pO1xuICogfSwgZnVuY3Rpb24oZXJyLCByZXN1bHQpIHtcbiAqICAgICAvLyByZXN1bHQgaXMgbm93IGVxdWFsIHRvIHRoZSBsYXN0IHZhbHVlIG9mIG1lbW8sIHdoaWNoIGlzIDZcbiAqIH0pO1xuICovXG5mdW5jdGlvbiByZWR1Y2UoY29sbCwgbWVtbywgaXRlcmF0ZWUsIGNhbGxiYWNrKSB7XG4gICAgY2FsbGJhY2sgPSBvbmNlKGNhbGxiYWNrIHx8IG5vb3ApO1xuICAgIHZhciBfaXRlcmF0ZWUgPSB3cmFwQXN5bmMkMShpdGVyYXRlZSk7XG4gICAgZWFjaE9mU2VyaWVzKGNvbGwsIGZ1bmN0aW9uICh4LCBpLCBjYWxsYmFjaykge1xuICAgICAgICBfaXRlcmF0ZWUobWVtbywgeCwgZnVuY3Rpb24gKGVyciwgdikge1xuICAgICAgICAgICAgbWVtbyA9IHY7XG4gICAgICAgICAgICBjYWxsYmFjayhlcnIpO1xuICAgICAgICB9KTtcbiAgICB9LCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgIGNhbGxiYWNrKGVyciwgbWVtbyk7XG4gICAgfSk7XG59XG5cbi8qKlxuICogVmVyc2lvbiBvZiB0aGUgY29tcG9zZSBmdW5jdGlvbiB0aGF0IGlzIG1vcmUgbmF0dXJhbCB0byByZWFkLiBFYWNoIGZ1bmN0aW9uXG4gKiBjb25zdW1lcyB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBwcmV2aW91cyBmdW5jdGlvbi4gSXQgaXMgdGhlIGVxdWl2YWxlbnQgb2ZcbiAqIFtjb21wb3NlXXtAbGluayBtb2R1bGU6Q29udHJvbEZsb3cuY29tcG9zZX0gd2l0aCB0aGUgYXJndW1lbnRzIHJldmVyc2VkLlxuICpcbiAqIEVhY2ggZnVuY3Rpb24gaXMgZXhlY3V0ZWQgd2l0aCB0aGUgYHRoaXNgIGJpbmRpbmcgb2YgdGhlIGNvbXBvc2VkIGZ1bmN0aW9uLlxuICpcbiAqIEBuYW1lIHNlcVxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIG1vZHVsZTpDb250cm9sRmxvd1xuICogQG1ldGhvZFxuICogQHNlZSBbYXN5bmMuY29tcG9zZV17QGxpbmsgbW9kdWxlOkNvbnRyb2xGbG93LmNvbXBvc2V9XG4gKiBAY2F0ZWdvcnkgQ29udHJvbCBGbG93XG4gKiBAcGFyYW0gey4uLkFzeW5jRnVuY3Rpb259IGZ1bmN0aW9ucyAtIHRoZSBhc3luY2hyb25vdXMgZnVuY3Rpb25zIHRvIGNvbXBvc2VcbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gYSBmdW5jdGlvbiB0aGF0IGNvbXBvc2VzIHRoZSBgZnVuY3Rpb25zYCBpbiBvcmRlclxuICogQGV4YW1wbGVcbiAqXG4gKiAvLyBSZXF1aXJlcyBsb2Rhc2ggKG9yIHVuZGVyc2NvcmUpLCBleHByZXNzMyBhbmQgZHJlc2VuZGUncyBvcm0yLlxuICogLy8gUGFydCBvZiBhbiBhcHAsIHRoYXQgZmV0Y2hlcyBjYXRzIG9mIHRoZSBsb2dnZWQgdXNlci5cbiAqIC8vIFRoaXMgZXhhbXBsZSB1c2VzIGBzZXFgIGZ1bmN0aW9uIHRvIGF2b2lkIG92ZXJuZXN0aW5nIGFuZCBlcnJvclxuICogLy8gaGFuZGxpbmcgY2x1dHRlci5cbiAqIGFwcC5nZXQoJy9jYXRzJywgZnVuY3Rpb24ocmVxdWVzdCwgcmVzcG9uc2UpIHtcbiAqICAgICB2YXIgVXNlciA9IHJlcXVlc3QubW9kZWxzLlVzZXI7XG4gKiAgICAgYXN5bmMuc2VxKFxuICogICAgICAgICBfLmJpbmQoVXNlci5nZXQsIFVzZXIpLCAgLy8gJ1VzZXIuZ2V0JyBoYXMgc2lnbmF0dXJlIChpZCwgY2FsbGJhY2soZXJyLCBkYXRhKSlcbiAqICAgICAgICAgZnVuY3Rpb24odXNlciwgZm4pIHtcbiAqICAgICAgICAgICAgIHVzZXIuZ2V0Q2F0cyhmbik7ICAgICAgLy8gJ2dldENhdHMnIGhhcyBzaWduYXR1cmUgKGNhbGxiYWNrKGVyciwgZGF0YSkpXG4gKiAgICAgICAgIH1cbiAqICAgICApKHJlcS5zZXNzaW9uLnVzZXJfaWQsIGZ1bmN0aW9uIChlcnIsIGNhdHMpIHtcbiAqICAgICAgICAgaWYgKGVycikge1xuICogICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICogICAgICAgICAgICAgcmVzcG9uc2UuanNvbih7IHN0YXR1czogJ2Vycm9yJywgbWVzc2FnZTogZXJyLm1lc3NhZ2UgfSk7XG4gKiAgICAgICAgIH0gZWxzZSB7XG4gKiAgICAgICAgICAgICByZXNwb25zZS5qc29uKHsgc3RhdHVzOiAnb2snLCBtZXNzYWdlOiAnQ2F0cyBmb3VuZCcsIGRhdGE6IGNhdHMgfSk7XG4gKiAgICAgICAgIH1cbiAqICAgICB9KTtcbiAqIH0pO1xuICovXG52YXIgc2VxJDEgPSByZXN0KGZ1bmN0aW9uIHNlcShmdW5jdGlvbnMpIHtcbiAgICB2YXIgX2Z1bmN0aW9ucyA9IGFycmF5TWFwKGZ1bmN0aW9ucywgd3JhcEFzeW5jJDEpO1xuICAgIHJldHVybiByZXN0KGZ1bmN0aW9uIChhcmdzKSB7XG4gICAgICAgIHZhciB0aGF0ID0gdGhpcztcblxuICAgICAgICB2YXIgY2IgPSBhcmdzW2FyZ3MubGVuZ3RoIC0gMV07XG4gICAgICAgIGlmICh0eXBlb2YgY2IgPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgYXJncy5wb3AoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNiID0gbm9vcDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJlZHVjZShfZnVuY3Rpb25zLCBhcmdzLCBmdW5jdGlvbiAobmV3YXJncywgZm4sIGNiKSB7XG4gICAgICAgICAgICBmbi5hcHBseSh0aGF0LCBuZXdhcmdzLmNvbmNhdChyZXN0KGZ1bmN0aW9uIChlcnIsIG5leHRhcmdzKSB7XG4gICAgICAgICAgICAgICAgY2IoZXJyLCBuZXh0YXJncyk7XG4gICAgICAgICAgICB9KSkpO1xuICAgICAgICB9LCBmdW5jdGlvbiAoZXJyLCByZXN1bHRzKSB7XG4gICAgICAgICAgICBjYi5hcHBseSh0aGF0LCBbZXJyXS5jb25jYXQocmVzdWx0cykpO1xuICAgICAgICB9KTtcbiAgICB9KTtcbn0pO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBmdW5jdGlvbiB3aGljaCBpcyBhIGNvbXBvc2l0aW9uIG9mIHRoZSBwYXNzZWQgYXN5bmNocm9ub3VzXG4gKiBmdW5jdGlvbnMuIEVhY2ggZnVuY3Rpb24gY29uc3VtZXMgdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgZnVuY3Rpb24gdGhhdFxuICogZm9sbG93cy4gQ29tcG9zaW5nIGZ1bmN0aW9ucyBgZigpYCwgYGcoKWAsIGFuZCBgaCgpYCB3b3VsZCBwcm9kdWNlIHRoZSByZXN1bHRcbiAqIG9mIGBmKGcoaCgpKSlgLCBvbmx5IHRoaXMgdmVyc2lvbiB1c2VzIGNhbGxiYWNrcyB0byBvYnRhaW4gdGhlIHJldHVybiB2YWx1ZXMuXG4gKlxuICogRWFjaCBmdW5jdGlvbiBpcyBleGVjdXRlZCB3aXRoIHRoZSBgdGhpc2AgYmluZGluZyBvZiB0aGUgY29tcG9zZWQgZnVuY3Rpb24uXG4gKlxuICogQG5hbWUgY29tcG9zZVxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIG1vZHVsZTpDb250cm9sRmxvd1xuICogQG1ldGhvZFxuICogQGNhdGVnb3J5IENvbnRyb2wgRmxvd1xuICogQHBhcmFtIHsuLi5Bc3luY0Z1bmN0aW9ufSBmdW5jdGlvbnMgLSB0aGUgYXN5bmNocm9ub3VzIGZ1bmN0aW9ucyB0byBjb21wb3NlXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IGFuIGFzeW5jaHJvbm91cyBmdW5jdGlvbiB0aGF0IGlzIHRoZSBjb21wb3NlZFxuICogYXN5bmNocm9ub3VzIGBmdW5jdGlvbnNgXG4gKiBAZXhhbXBsZVxuICpcbiAqIGZ1bmN0aW9uIGFkZDEobiwgY2FsbGJhY2spIHtcbiAqICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAqICAgICAgICAgY2FsbGJhY2sobnVsbCwgbiArIDEpO1xuICogICAgIH0sIDEwKTtcbiAqIH1cbiAqXG4gKiBmdW5jdGlvbiBtdWwzKG4sIGNhbGxiYWNrKSB7XG4gKiAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gKiAgICAgICAgIGNhbGxiYWNrKG51bGwsIG4gKiAzKTtcbiAqICAgICB9LCAxMCk7XG4gKiB9XG4gKlxuICogdmFyIGFkZDFtdWwzID0gYXN5bmMuY29tcG9zZShtdWwzLCBhZGQxKTtcbiAqIGFkZDFtdWwzKDQsIGZ1bmN0aW9uIChlcnIsIHJlc3VsdCkge1xuICogICAgIC8vIHJlc3VsdCBub3cgZXF1YWxzIDE1XG4gKiB9KTtcbiAqL1xudmFyIGNvbXBvc2UgPSByZXN0KGZ1bmN0aW9uIChhcmdzKSB7XG4gIHJldHVybiBzZXEkMS5hcHBseShudWxsLCBhcmdzLnJldmVyc2UoKSk7XG59KTtcblxuZnVuY3Rpb24gY29uY2F0JDEoZWFjaGZuLCBhcnIsIGZuLCBjYWxsYmFjaykge1xuICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICBlYWNoZm4oYXJyLCBmdW5jdGlvbiAoeCwgaW5kZXgsIGNiKSB7XG4gICAgICAgIGZuKHgsIGZ1bmN0aW9uIChlcnIsIHkpIHtcbiAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC5jb25jYXQoeSB8fCBbXSk7XG4gICAgICAgICAgICBjYihlcnIpO1xuICAgICAgICB9KTtcbiAgICB9LCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgIGNhbGxiYWNrKGVyciwgcmVzdWx0KTtcbiAgICB9KTtcbn1cblxuLyoqXG4gKiBBcHBsaWVzIGBpdGVyYXRlZWAgdG8gZWFjaCBpdGVtIGluIGBjb2xsYCwgY29uY2F0ZW5hdGluZyB0aGUgcmVzdWx0cy4gUmV0dXJuc1xuICogdGhlIGNvbmNhdGVuYXRlZCBsaXN0LiBUaGUgYGl0ZXJhdGVlYHMgYXJlIGNhbGxlZCBpbiBwYXJhbGxlbCwgYW5kIHRoZVxuICogcmVzdWx0cyBhcmUgY29uY2F0ZW5hdGVkIGFzIHRoZXkgcmV0dXJuLiBUaGVyZSBpcyBubyBndWFyYW50ZWUgdGhhdCB0aGVcbiAqIHJlc3VsdHMgYXJyYXkgd2lsbCBiZSByZXR1cm5lZCBpbiB0aGUgb3JpZ2luYWwgb3JkZXIgb2YgYGNvbGxgIHBhc3NlZCB0byB0aGVcbiAqIGBpdGVyYXRlZWAgZnVuY3Rpb24uXG4gKlxuICogQG5hbWUgY29uY2F0XG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgbW9kdWxlOkNvbGxlY3Rpb25zXG4gKiBAbWV0aG9kXG4gKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICogQHBhcmFtIHtBcnJheXxJdGVyYWJsZXxPYmplY3R9IGNvbGwgLSBBIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtBc3luY0Z1bmN0aW9ufSBpdGVyYXRlZSAtIEEgZnVuY3Rpb24gdG8gYXBwbHkgdG8gZWFjaCBpdGVtIGluIGBjb2xsYCxcbiAqIHdoaWNoIHNob3VsZCB1c2UgYW4gYXJyYXkgYXMgaXRzIHJlc3VsdC4gSW52b2tlZCB3aXRoIChpdGVtLCBjYWxsYmFjaykuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY2FsbGJhY2soZXJyKV0gLSBBIGNhbGxiYWNrIHdoaWNoIGlzIGNhbGxlZCBhZnRlciBhbGwgdGhlXG4gKiBgaXRlcmF0ZWVgIGZ1bmN0aW9ucyBoYXZlIGZpbmlzaGVkLCBvciBhbiBlcnJvciBvY2N1cnMuIFJlc3VsdHMgaXMgYW4gYXJyYXlcbiAqIGNvbnRhaW5pbmcgdGhlIGNvbmNhdGVuYXRlZCByZXN1bHRzIG9mIHRoZSBgaXRlcmF0ZWVgIGZ1bmN0aW9uLiBJbnZva2VkIHdpdGhcbiAqIChlcnIsIHJlc3VsdHMpLlxuICogQGV4YW1wbGVcbiAqXG4gKiBhc3luYy5jb25jYXQoWydkaXIxJywnZGlyMicsJ2RpcjMnXSwgZnMucmVhZGRpciwgZnVuY3Rpb24oZXJyLCBmaWxlcykge1xuICogICAgIC8vIGZpbGVzIGlzIG5vdyBhIGxpc3Qgb2YgZmlsZW5hbWVzIHRoYXQgZXhpc3QgaW4gdGhlIDMgZGlyZWN0b3JpZXNcbiAqIH0pO1xuICovXG52YXIgY29uY2F0ID0gZG9QYXJhbGxlbChjb25jYXQkMSk7XG5cbmZ1bmN0aW9uIGRvU2VyaWVzKGZuKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChvYmosIGl0ZXJhdGVlLCBjYWxsYmFjaykge1xuICAgICAgICByZXR1cm4gZm4oZWFjaE9mU2VyaWVzLCBvYmosIHdyYXBBc3luYyQxKGl0ZXJhdGVlKSwgY2FsbGJhY2spO1xuICAgIH07XG59XG5cbi8qKlxuICogVGhlIHNhbWUgYXMgW2Bjb25jYXRgXXtAbGluayBtb2R1bGU6Q29sbGVjdGlvbnMuY29uY2F0fSBidXQgcnVucyBvbmx5IGEgc2luZ2xlIGFzeW5jIG9wZXJhdGlvbiBhdCBhIHRpbWUuXG4gKlxuICogQG5hbWUgY29uY2F0U2VyaWVzXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgbW9kdWxlOkNvbGxlY3Rpb25zXG4gKiBAbWV0aG9kXG4gKiBAc2VlIFthc3luYy5jb25jYXRde0BsaW5rIG1vZHVsZTpDb2xsZWN0aW9ucy5jb25jYXR9XG4gKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICogQHBhcmFtIHtBcnJheXxJdGVyYWJsZXxPYmplY3R9IGNvbGwgLSBBIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtBc3luY0Z1bmN0aW9ufSBpdGVyYXRlZSAtIEEgZnVuY3Rpb24gdG8gYXBwbHkgdG8gZWFjaCBpdGVtIGluIGBjb2xsYC5cbiAqIFRoZSBpdGVyYXRlZSBzaG91bGQgY29tcGxldGUgd2l0aCBhbiBhcnJheSBhbiBhcnJheSBvZiByZXN1bHRzLlxuICogSW52b2tlZCB3aXRoIChpdGVtLCBjYWxsYmFjaykuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY2FsbGJhY2soZXJyKV0gLSBBIGNhbGxiYWNrIHdoaWNoIGlzIGNhbGxlZCBhZnRlciBhbGwgdGhlXG4gKiBgaXRlcmF0ZWVgIGZ1bmN0aW9ucyBoYXZlIGZpbmlzaGVkLCBvciBhbiBlcnJvciBvY2N1cnMuIFJlc3VsdHMgaXMgYW4gYXJyYXlcbiAqIGNvbnRhaW5pbmcgdGhlIGNvbmNhdGVuYXRlZCByZXN1bHRzIG9mIHRoZSBgaXRlcmF0ZWVgIGZ1bmN0aW9uLiBJbnZva2VkIHdpdGhcbiAqIChlcnIsIHJlc3VsdHMpLlxuICovXG52YXIgY29uY2F0U2VyaWVzID0gZG9TZXJpZXMoY29uY2F0JDEpO1xuXG4vKipcbiAqIFJldHVybnMgYSBmdW5jdGlvbiB0aGF0IHdoZW4gY2FsbGVkLCBjYWxscy1iYWNrIHdpdGggdGhlIHZhbHVlcyBwcm92aWRlZC5cbiAqIFVzZWZ1bCBhcyB0aGUgZmlyc3QgZnVuY3Rpb24gaW4gYSBbYHdhdGVyZmFsbGBde0BsaW5rIG1vZHVsZTpDb250cm9sRmxvdy53YXRlcmZhbGx9LCBvciBmb3IgcGx1Z2dpbmcgdmFsdWVzIGluIHRvXG4gKiBbYGF1dG9gXXtAbGluayBtb2R1bGU6Q29udHJvbEZsb3cuYXV0b30uXG4gKlxuICogQG5hbWUgY29uc3RhbnRcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6VXRpbHNcbiAqIEBtZXRob2RcbiAqIEBjYXRlZ29yeSBVdGlsXG4gKiBAcGFyYW0gey4uLip9IGFyZ3VtZW50cy4uLiAtIEFueSBudW1iZXIgb2YgYXJndW1lbnRzIHRvIGF1dG9tYXRpY2FsbHkgaW52b2tlXG4gKiBjYWxsYmFjayB3aXRoLlxuICogQHJldHVybnMge0FzeW5jRnVuY3Rpb259IFJldHVybnMgYSBmdW5jdGlvbiB0aGF0IHdoZW4gaW52b2tlZCwgYXV0b21hdGljYWxseVxuICogaW52b2tlcyB0aGUgY2FsbGJhY2sgd2l0aCB0aGUgcHJldmlvdXMgZ2l2ZW4gYXJndW1lbnRzLlxuICogQGV4YW1wbGVcbiAqXG4gKiBhc3luYy53YXRlcmZhbGwoW1xuICogICAgIGFzeW5jLmNvbnN0YW50KDQyKSxcbiAqICAgICBmdW5jdGlvbiAodmFsdWUsIG5leHQpIHtcbiAqICAgICAgICAgLy8gdmFsdWUgPT09IDQyXG4gKiAgICAgfSxcbiAqICAgICAvLy4uLlxuICogXSwgY2FsbGJhY2spO1xuICpcbiAqIGFzeW5jLndhdGVyZmFsbChbXG4gKiAgICAgYXN5bmMuY29uc3RhbnQoZmlsZW5hbWUsIFwidXRmOFwiKSxcbiAqICAgICBmcy5yZWFkRmlsZSxcbiAqICAgICBmdW5jdGlvbiAoZmlsZURhdGEsIG5leHQpIHtcbiAqICAgICAgICAgLy8uLi5cbiAqICAgICB9XG4gKiAgICAgLy8uLi5cbiAqIF0sIGNhbGxiYWNrKTtcbiAqXG4gKiBhc3luYy5hdXRvKHtcbiAqICAgICBob3N0bmFtZTogYXN5bmMuY29uc3RhbnQoXCJodHRwczovL3NlcnZlci5uZXQvXCIpLFxuICogICAgIHBvcnQ6IGZpbmRGcmVlUG9ydCxcbiAqICAgICBsYXVuY2hTZXJ2ZXI6IFtcImhvc3RuYW1lXCIsIFwicG9ydFwiLCBmdW5jdGlvbiAob3B0aW9ucywgY2IpIHtcbiAqICAgICAgICAgc3RhcnRTZXJ2ZXIob3B0aW9ucywgY2IpO1xuICogICAgIH1dLFxuICogICAgIC8vLi4uXG4gKiB9LCBjYWxsYmFjayk7XG4gKi9cbnZhciBjb25zdGFudCA9IHJlc3QoZnVuY3Rpb24gKHZhbHVlcykge1xuICAgIHZhciBhcmdzID0gW251bGxdLmNvbmNhdCh2YWx1ZXMpO1xuICAgIHJldHVybiBpbml0aWFsUGFyYW1zKGZ1bmN0aW9uIChpZ25vcmVkQXJncywgY2FsbGJhY2spIHtcbiAgICAgICAgcmV0dXJuIGNhbGxiYWNrLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgIH0pO1xufSk7XG5cbmZ1bmN0aW9uIF9jcmVhdGVUZXN0ZXIoY2hlY2ssIGdldFJlc3VsdCkge1xuICAgIHJldHVybiBmdW5jdGlvbiAoZWFjaGZuLCBhcnIsIGl0ZXJhdGVlLCBjYikge1xuICAgICAgICBjYiA9IGNiIHx8IG5vb3A7XG4gICAgICAgIHZhciB0ZXN0UGFzc2VkID0gZmFsc2U7XG4gICAgICAgIHZhciB0ZXN0UmVzdWx0O1xuICAgICAgICBlYWNoZm4oYXJyLCBmdW5jdGlvbiAodmFsdWUsIF8sIGNhbGxiYWNrKSB7XG4gICAgICAgICAgICBpdGVyYXRlZSh2YWx1ZSwgZnVuY3Rpb24gKGVyciwgcmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhlcnIpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2hlY2socmVzdWx0KSAmJiAhdGVzdFJlc3VsdCkge1xuICAgICAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGVzdFJlc3VsdCA9IGdldFJlc3VsdCh0cnVlLCB2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKG51bGwsIGJyZWFrTG9vcCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSwgZnVuY3Rpb24gKGVycikge1xuICAgICAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgICAgIGNiKGVycik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNiKG51bGwsIHRlc3RQYXNzZWQgPyB0ZXN0UmVzdWx0IDogZ2V0UmVzdWx0KGZhbHNlKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH07XG59XG5cbmZ1bmN0aW9uIF9maW5kR2V0UmVzdWx0KHYsIHgpIHtcbiAgICByZXR1cm4geDtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBmaXJzdCB2YWx1ZSBpbiBgY29sbGAgdGhhdCBwYXNzZXMgYW4gYXN5bmMgdHJ1dGggdGVzdC4gVGhlXG4gKiBgaXRlcmF0ZWVgIGlzIGFwcGxpZWQgaW4gcGFyYWxsZWwsIG1lYW5pbmcgdGhlIGZpcnN0IGl0ZXJhdGVlIHRvIHJldHVyblxuICogYHRydWVgIHdpbGwgZmlyZSB0aGUgZGV0ZWN0IGBjYWxsYmFja2Agd2l0aCB0aGF0IHJlc3VsdC4gVGhhdCBtZWFucyB0aGVcbiAqIHJlc3VsdCBtaWdodCBub3QgYmUgdGhlIGZpcnN0IGl0ZW0gaW4gdGhlIG9yaWdpbmFsIGBjb2xsYCAoaW4gdGVybXMgb2Ygb3JkZXIpXG4gKiB0aGF0IHBhc3NlcyB0aGUgdGVzdC5cblxuICogSWYgb3JkZXIgd2l0aGluIHRoZSBvcmlnaW5hbCBgY29sbGAgaXMgaW1wb3J0YW50LCB0aGVuIGxvb2sgYXRcbiAqIFtgZGV0ZWN0U2VyaWVzYF17QGxpbmsgbW9kdWxlOkNvbGxlY3Rpb25zLmRldGVjdFNlcmllc30uXG4gKlxuICogQG5hbWUgZGV0ZWN0XG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgbW9kdWxlOkNvbGxlY3Rpb25zXG4gKiBAbWV0aG9kXG4gKiBAYWxpYXMgZmluZFxuICogQGNhdGVnb3J5IENvbGxlY3Rpb25zXG4gKiBAcGFyYW0ge0FycmF5fEl0ZXJhYmxlfE9iamVjdH0gY29sbCAtIEEgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0FzeW5jRnVuY3Rpb259IGl0ZXJhdGVlIC0gQSB0cnV0aCB0ZXN0IHRvIGFwcGx5IHRvIGVhY2ggaXRlbSBpbiBgY29sbGAuXG4gKiBUaGUgaXRlcmF0ZWUgbXVzdCBjb21wbGV0ZSB3aXRoIGEgYm9vbGVhbiB2YWx1ZSBhcyBpdHMgcmVzdWx0LlxuICogSW52b2tlZCB3aXRoIChpdGVtLCBjYWxsYmFjaykuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY2FsbGJhY2tdIC0gQSBjYWxsYmFjayB3aGljaCBpcyBjYWxsZWQgYXMgc29vbiBhcyBhbnlcbiAqIGl0ZXJhdGVlIHJldHVybnMgYHRydWVgLCBvciBhZnRlciBhbGwgdGhlIGBpdGVyYXRlZWAgZnVuY3Rpb25zIGhhdmUgZmluaXNoZWQuXG4gKiBSZXN1bHQgd2lsbCBiZSB0aGUgZmlyc3QgaXRlbSBpbiB0aGUgYXJyYXkgdGhhdCBwYXNzZXMgdGhlIHRydXRoIHRlc3RcbiAqIChpdGVyYXRlZSkgb3IgdGhlIHZhbHVlIGB1bmRlZmluZWRgIGlmIG5vbmUgcGFzc2VkLiBJbnZva2VkIHdpdGhcbiAqIChlcnIsIHJlc3VsdCkuXG4gKiBAZXhhbXBsZVxuICpcbiAqIGFzeW5jLmRldGVjdChbJ2ZpbGUxJywnZmlsZTInLCdmaWxlMyddLCBmdW5jdGlvbihmaWxlUGF0aCwgY2FsbGJhY2spIHtcbiAqICAgICBmcy5hY2Nlc3MoZmlsZVBhdGgsIGZ1bmN0aW9uKGVycikge1xuICogICAgICAgICBjYWxsYmFjayhudWxsLCAhZXJyKVxuICogICAgIH0pO1xuICogfSwgZnVuY3Rpb24oZXJyLCByZXN1bHQpIHtcbiAqICAgICAvLyByZXN1bHQgbm93IGVxdWFscyB0aGUgZmlyc3QgZmlsZSBpbiB0aGUgbGlzdCB0aGF0IGV4aXN0c1xuICogfSk7XG4gKi9cbnZhciBkZXRlY3QgPSBkb1BhcmFsbGVsKF9jcmVhdGVUZXN0ZXIoaWRlbnRpdHksIF9maW5kR2V0UmVzdWx0KSk7XG5cbi8qKlxuICogVGhlIHNhbWUgYXMgW2BkZXRlY3RgXXtAbGluayBtb2R1bGU6Q29sbGVjdGlvbnMuZGV0ZWN0fSBidXQgcnVucyBhIG1heGltdW0gb2YgYGxpbWl0YCBhc3luYyBvcGVyYXRpb25zIGF0IGFcbiAqIHRpbWUuXG4gKlxuICogQG5hbWUgZGV0ZWN0TGltaXRcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Q29sbGVjdGlvbnNcbiAqIEBtZXRob2RcbiAqIEBzZWUgW2FzeW5jLmRldGVjdF17QGxpbmsgbW9kdWxlOkNvbGxlY3Rpb25zLmRldGVjdH1cbiAqIEBhbGlhcyBmaW5kTGltaXRcbiAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uc1xuICogQHBhcmFtIHtBcnJheXxJdGVyYWJsZXxPYmplY3R9IGNvbGwgLSBBIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtudW1iZXJ9IGxpbWl0IC0gVGhlIG1heGltdW0gbnVtYmVyIG9mIGFzeW5jIG9wZXJhdGlvbnMgYXQgYSB0aW1lLlxuICogQHBhcmFtIHtBc3luY0Z1bmN0aW9ufSBpdGVyYXRlZSAtIEEgdHJ1dGggdGVzdCB0byBhcHBseSB0byBlYWNoIGl0ZW0gaW4gYGNvbGxgLlxuICogVGhlIGl0ZXJhdGVlIG11c3QgY29tcGxldGUgd2l0aCBhIGJvb2xlYW4gdmFsdWUgYXMgaXRzIHJlc3VsdC5cbiAqIEludm9rZWQgd2l0aCAoaXRlbSwgY2FsbGJhY2spLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2NhbGxiYWNrXSAtIEEgY2FsbGJhY2sgd2hpY2ggaXMgY2FsbGVkIGFzIHNvb24gYXMgYW55XG4gKiBpdGVyYXRlZSByZXR1cm5zIGB0cnVlYCwgb3IgYWZ0ZXIgYWxsIHRoZSBgaXRlcmF0ZWVgIGZ1bmN0aW9ucyBoYXZlIGZpbmlzaGVkLlxuICogUmVzdWx0IHdpbGwgYmUgdGhlIGZpcnN0IGl0ZW0gaW4gdGhlIGFycmF5IHRoYXQgcGFzc2VzIHRoZSB0cnV0aCB0ZXN0XG4gKiAoaXRlcmF0ZWUpIG9yIHRoZSB2YWx1ZSBgdW5kZWZpbmVkYCBpZiBub25lIHBhc3NlZC4gSW52b2tlZCB3aXRoXG4gKiAoZXJyLCByZXN1bHQpLlxuICovXG52YXIgZGV0ZWN0TGltaXQgPSBkb1BhcmFsbGVsTGltaXQoX2NyZWF0ZVRlc3RlcihpZGVudGl0eSwgX2ZpbmRHZXRSZXN1bHQpKTtcblxuLyoqXG4gKiBUaGUgc2FtZSBhcyBbYGRldGVjdGBde0BsaW5rIG1vZHVsZTpDb2xsZWN0aW9ucy5kZXRlY3R9IGJ1dCBydW5zIG9ubHkgYSBzaW5nbGUgYXN5bmMgb3BlcmF0aW9uIGF0IGEgdGltZS5cbiAqXG4gKiBAbmFtZSBkZXRlY3RTZXJpZXNcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Q29sbGVjdGlvbnNcbiAqIEBtZXRob2RcbiAqIEBzZWUgW2FzeW5jLmRldGVjdF17QGxpbmsgbW9kdWxlOkNvbGxlY3Rpb25zLmRldGVjdH1cbiAqIEBhbGlhcyBmaW5kU2VyaWVzXG4gKiBAY2F0ZWdvcnkgQ29sbGVjdGlvbnNcbiAqIEBwYXJhbSB7QXJyYXl8SXRlcmFibGV8T2JqZWN0fSBjb2xsIC0gQSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7QXN5bmNGdW5jdGlvbn0gaXRlcmF0ZWUgLSBBIHRydXRoIHRlc3QgdG8gYXBwbHkgdG8gZWFjaCBpdGVtIGluIGBjb2xsYC5cbiAqIFRoZSBpdGVyYXRlZSBtdXN0IGNvbXBsZXRlIHdpdGggYSBib29sZWFuIHZhbHVlIGFzIGl0cyByZXN1bHQuXG4gKiBJbnZva2VkIHdpdGggKGl0ZW0sIGNhbGxiYWNrKS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjYWxsYmFja10gLSBBIGNhbGxiYWNrIHdoaWNoIGlzIGNhbGxlZCBhcyBzb29uIGFzIGFueVxuICogaXRlcmF0ZWUgcmV0dXJucyBgdHJ1ZWAsIG9yIGFmdGVyIGFsbCB0aGUgYGl0ZXJhdGVlYCBmdW5jdGlvbnMgaGF2ZSBmaW5pc2hlZC5cbiAqIFJlc3VsdCB3aWxsIGJlIHRoZSBmaXJzdCBpdGVtIGluIHRoZSBhcnJheSB0aGF0IHBhc3NlcyB0aGUgdHJ1dGggdGVzdFxuICogKGl0ZXJhdGVlKSBvciB0aGUgdmFsdWUgYHVuZGVmaW5lZGAgaWYgbm9uZSBwYXNzZWQuIEludm9rZWQgd2l0aFxuICogKGVyciwgcmVzdWx0KS5cbiAqL1xudmFyIGRldGVjdFNlcmllcyA9IGRvTGltaXQoZGV0ZWN0TGltaXQsIDEpO1xuXG5mdW5jdGlvbiBjb25zb2xlRnVuYyhuYW1lKSB7XG4gICAgcmV0dXJuIHJlc3QoZnVuY3Rpb24gKGZuLCBhcmdzKSB7XG4gICAgICAgIHdyYXBBc3luYyQxKGZuKS5hcHBseShudWxsLCBhcmdzLmNvbmNhdChyZXN0KGZ1bmN0aW9uIChlcnIsIGFyZ3MpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgY29uc29sZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjb25zb2xlLmVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNvbnNvbGVbbmFtZV0pIHtcbiAgICAgICAgICAgICAgICAgICAgYXJyYXlFYWNoKGFyZ3MsIGZ1bmN0aW9uICh4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlW25hbWVdKHgpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pKSk7XG4gICAgfSk7XG59XG5cbi8qKlxuICogTG9ncyB0aGUgcmVzdWx0IG9mIGFuIFtgYXN5bmNgIGZ1bmN0aW9uXXtAbGluayBBc3luY0Z1bmN0aW9ufSB0byB0aGVcbiAqIGBjb25zb2xlYCB1c2luZyBgY29uc29sZS5kaXJgIHRvIGRpc3BsYXkgdGhlIHByb3BlcnRpZXMgb2YgdGhlIHJlc3VsdGluZyBvYmplY3QuXG4gKiBPbmx5IHdvcmtzIGluIE5vZGUuanMgb3IgaW4gYnJvd3NlcnMgdGhhdCBzdXBwb3J0IGBjb25zb2xlLmRpcmAgYW5kXG4gKiBgY29uc29sZS5lcnJvcmAgKHN1Y2ggYXMgRkYgYW5kIENocm9tZSkuXG4gKiBJZiBtdWx0aXBsZSBhcmd1bWVudHMgYXJlIHJldHVybmVkIGZyb20gdGhlIGFzeW5jIGZ1bmN0aW9uLFxuICogYGNvbnNvbGUuZGlyYCBpcyBjYWxsZWQgb24gZWFjaCBhcmd1bWVudCBpbiBvcmRlci5cbiAqXG4gKiBAbmFtZSBkaXJcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6VXRpbHNcbiAqIEBtZXRob2RcbiAqIEBjYXRlZ29yeSBVdGlsXG4gKiBAcGFyYW0ge0FzeW5jRnVuY3Rpb259IGZ1bmN0aW9uIC0gVGhlIGZ1bmN0aW9uIHlvdSB3YW50IHRvIGV2ZW50dWFsbHkgYXBwbHlcbiAqIGFsbCBhcmd1bWVudHMgdG8uXG4gKiBAcGFyYW0gey4uLip9IGFyZ3VtZW50cy4uLiAtIEFueSBudW1iZXIgb2YgYXJndW1lbnRzIHRvIGFwcGx5IHRvIHRoZSBmdW5jdGlvbi5cbiAqIEBleGFtcGxlXG4gKlxuICogLy8gaW4gYSBtb2R1bGVcbiAqIHZhciBoZWxsbyA9IGZ1bmN0aW9uKG5hbWUsIGNhbGxiYWNrKSB7XG4gKiAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAqICAgICAgICAgY2FsbGJhY2sobnVsbCwge2hlbGxvOiBuYW1lfSk7XG4gKiAgICAgfSwgMTAwMCk7XG4gKiB9O1xuICpcbiAqIC8vIGluIHRoZSBub2RlIHJlcGxcbiAqIG5vZGU+IGFzeW5jLmRpcihoZWxsbywgJ3dvcmxkJyk7XG4gKiB7aGVsbG86ICd3b3JsZCd9XG4gKi9cbnZhciBkaXIgPSBjb25zb2xlRnVuYygnZGlyJyk7XG5cbi8qKlxuICogVGhlIHBvc3QtY2hlY2sgdmVyc2lvbiBvZiBbYGR1cmluZ2Bde0BsaW5rIG1vZHVsZTpDb250cm9sRmxvdy5kdXJpbmd9LiBUbyByZWZsZWN0IHRoZSBkaWZmZXJlbmNlIGluXG4gKiB0aGUgb3JkZXIgb2Ygb3BlcmF0aW9ucywgdGhlIGFyZ3VtZW50cyBgdGVzdGAgYW5kIGBmbmAgYXJlIHN3aXRjaGVkLlxuICpcbiAqIEFsc28gYSB2ZXJzaW9uIG9mIFtgZG9XaGlsc3RgXXtAbGluayBtb2R1bGU6Q29udHJvbEZsb3cuZG9XaGlsc3R9IHdpdGggYXN5bmNocm9ub3VzIGB0ZXN0YCBmdW5jdGlvbi5cbiAqIEBuYW1lIGRvRHVyaW5nXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgbW9kdWxlOkNvbnRyb2xGbG93XG4gKiBAbWV0aG9kXG4gKiBAc2VlIFthc3luYy5kdXJpbmdde0BsaW5rIG1vZHVsZTpDb250cm9sRmxvdy5kdXJpbmd9XG4gKiBAY2F0ZWdvcnkgQ29udHJvbCBGbG93XG4gKiBAcGFyYW0ge0FzeW5jRnVuY3Rpb259IGZuIC0gQW4gYXN5bmMgZnVuY3Rpb24gd2hpY2ggaXMgY2FsbGVkIGVhY2ggdGltZVxuICogYHRlc3RgIHBhc3Nlcy4gSW52b2tlZCB3aXRoIChjYWxsYmFjaykuXG4gKiBAcGFyYW0ge0FzeW5jRnVuY3Rpb259IHRlc3QgLSBhc3luY2hyb25vdXMgdHJ1dGggdGVzdCB0byBwZXJmb3JtIGJlZm9yZSBlYWNoXG4gKiBleGVjdXRpb24gb2YgYGZuYC4gSW52b2tlZCB3aXRoICguLi5hcmdzLCBjYWxsYmFjayksIHdoZXJlIGAuLi5hcmdzYCBhcmUgdGhlXG4gKiBub24tZXJyb3IgYXJncyBmcm9tIHRoZSBwcmV2aW91cyBjYWxsYmFjayBvZiBgZm5gLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2NhbGxiYWNrXSAtIEEgY2FsbGJhY2sgd2hpY2ggaXMgY2FsbGVkIGFmdGVyIHRoZSB0ZXN0XG4gKiBmdW5jdGlvbiBoYXMgZmFpbGVkIGFuZCByZXBlYXRlZCBleGVjdXRpb24gb2YgYGZuYCBoYXMgc3RvcHBlZC4gYGNhbGxiYWNrYFxuICogd2lsbCBiZSBwYXNzZWQgYW4gZXJyb3IgaWYgb25lIG9jY3VycmVkLCBvdGhlcndpc2UgYG51bGxgLlxuICovXG5mdW5jdGlvbiBkb0R1cmluZyhmbiwgdGVzdCwgY2FsbGJhY2spIHtcbiAgICBjYWxsYmFjayA9IG9ubHlPbmNlKGNhbGxiYWNrIHx8IG5vb3ApO1xuICAgIHZhciBfZm4gPSB3cmFwQXN5bmMkMShmbik7XG4gICAgdmFyIF90ZXN0ID0gd3JhcEFzeW5jJDEodGVzdCk7XG5cbiAgICB2YXIgbmV4dCA9IHJlc3QoZnVuY3Rpb24gKGVyciwgYXJncykge1xuICAgICAgICBpZiAoZXJyKSByZXR1cm4gY2FsbGJhY2soZXJyKTtcbiAgICAgICAgYXJncy5wdXNoKGNoZWNrKTtcbiAgICAgICAgX3Rlc3QuYXBwbHkodGhpcywgYXJncyk7XG4gICAgfSk7XG5cbiAgICBmdW5jdGlvbiBjaGVjayhlcnIsIHRydXRoKSB7XG4gICAgICAgIGlmIChlcnIpIHJldHVybiBjYWxsYmFjayhlcnIpO1xuICAgICAgICBpZiAoIXRydXRoKSByZXR1cm4gY2FsbGJhY2sobnVsbCk7XG4gICAgICAgIF9mbihuZXh0KTtcbiAgICB9XG5cbiAgICBjaGVjayhudWxsLCB0cnVlKTtcbn1cblxuLyoqXG4gKiBUaGUgcG9zdC1jaGVjayB2ZXJzaW9uIG9mIFtgd2hpbHN0YF17QGxpbmsgbW9kdWxlOkNvbnRyb2xGbG93LndoaWxzdH0uIFRvIHJlZmxlY3QgdGhlIGRpZmZlcmVuY2UgaW5cbiAqIHRoZSBvcmRlciBvZiBvcGVyYXRpb25zLCB0aGUgYXJndW1lbnRzIGB0ZXN0YCBhbmQgYGl0ZXJhdGVlYCBhcmUgc3dpdGNoZWQuXG4gKlxuICogYGRvV2hpbHN0YCBpcyB0byBgd2hpbHN0YCBhcyBgZG8gd2hpbGVgIGlzIHRvIGB3aGlsZWAgaW4gcGxhaW4gSmF2YVNjcmlwdC5cbiAqXG4gKiBAbmFtZSBkb1doaWxzdFxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIG1vZHVsZTpDb250cm9sRmxvd1xuICogQG1ldGhvZFxuICogQHNlZSBbYXN5bmMud2hpbHN0XXtAbGluayBtb2R1bGU6Q29udHJvbEZsb3cud2hpbHN0fVxuICogQGNhdGVnb3J5IENvbnRyb2wgRmxvd1xuICogQHBhcmFtIHtBc3luY0Z1bmN0aW9ufSBpdGVyYXRlZSAtIEEgZnVuY3Rpb24gd2hpY2ggaXMgY2FsbGVkIGVhY2ggdGltZSBgdGVzdGBcbiAqIHBhc3Nlcy4gSW52b2tlZCB3aXRoIChjYWxsYmFjaykuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSB0ZXN0IC0gc3luY2hyb25vdXMgdHJ1dGggdGVzdCB0byBwZXJmb3JtIGFmdGVyIGVhY2hcbiAqIGV4ZWN1dGlvbiBvZiBgaXRlcmF0ZWVgLiBJbnZva2VkIHdpdGggYW55IG5vbi1lcnJvciBjYWxsYmFjayByZXN1bHRzIG9mXG4gKiBgaXRlcmF0ZWVgLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2NhbGxiYWNrXSAtIEEgY2FsbGJhY2sgd2hpY2ggaXMgY2FsbGVkIGFmdGVyIHRoZSB0ZXN0XG4gKiBmdW5jdGlvbiBoYXMgZmFpbGVkIGFuZCByZXBlYXRlZCBleGVjdXRpb24gb2YgYGl0ZXJhdGVlYCBoYXMgc3RvcHBlZC5cbiAqIGBjYWxsYmFja2Agd2lsbCBiZSBwYXNzZWQgYW4gZXJyb3IgYW5kIGFueSBhcmd1bWVudHMgcGFzc2VkIHRvIHRoZSBmaW5hbFxuICogYGl0ZXJhdGVlYCdzIGNhbGxiYWNrLiBJbnZva2VkIHdpdGggKGVyciwgW3Jlc3VsdHNdKTtcbiAqL1xuZnVuY3Rpb24gZG9XaGlsc3QoaXRlcmF0ZWUsIHRlc3QsIGNhbGxiYWNrKSB7XG4gICAgY2FsbGJhY2sgPSBvbmx5T25jZShjYWxsYmFjayB8fCBub29wKTtcbiAgICB2YXIgX2l0ZXJhdGVlID0gd3JhcEFzeW5jJDEoaXRlcmF0ZWUpO1xuICAgIHZhciBuZXh0ID0gcmVzdChmdW5jdGlvbiAoZXJyLCBhcmdzKSB7XG4gICAgICAgIGlmIChlcnIpIHJldHVybiBjYWxsYmFjayhlcnIpO1xuICAgICAgICBpZiAodGVzdC5hcHBseSh0aGlzLCBhcmdzKSkgcmV0dXJuIF9pdGVyYXRlZShuZXh0KTtcbiAgICAgICAgY2FsbGJhY2suYXBwbHkobnVsbCwgW251bGxdLmNvbmNhdChhcmdzKSk7XG4gICAgfSk7XG4gICAgX2l0ZXJhdGVlKG5leHQpO1xufVxuXG4vKipcbiAqIExpa2UgWydkb1doaWxzdCdde0BsaW5rIG1vZHVsZTpDb250cm9sRmxvdy5kb1doaWxzdH0sIGV4Y2VwdCB0aGUgYHRlc3RgIGlzIGludmVydGVkLiBOb3RlIHRoZVxuICogYXJndW1lbnQgb3JkZXJpbmcgZGlmZmVycyBmcm9tIGB1bnRpbGAuXG4gKlxuICogQG5hbWUgZG9VbnRpbFxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIG1vZHVsZTpDb250cm9sRmxvd1xuICogQG1ldGhvZFxuICogQHNlZSBbYXN5bmMuZG9XaGlsc3Rde0BsaW5rIG1vZHVsZTpDb250cm9sRmxvdy5kb1doaWxzdH1cbiAqIEBjYXRlZ29yeSBDb250cm9sIEZsb3dcbiAqIEBwYXJhbSB7QXN5bmNGdW5jdGlvbn0gaXRlcmF0ZWUgLSBBbiBhc3luYyBmdW5jdGlvbiB3aGljaCBpcyBjYWxsZWQgZWFjaCB0aW1lXG4gKiBgdGVzdGAgZmFpbHMuIEludm9rZWQgd2l0aCAoY2FsbGJhY2spLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gdGVzdCAtIHN5bmNocm9ub3VzIHRydXRoIHRlc3QgdG8gcGVyZm9ybSBhZnRlciBlYWNoXG4gKiBleGVjdXRpb24gb2YgYGl0ZXJhdGVlYC4gSW52b2tlZCB3aXRoIGFueSBub24tZXJyb3IgY2FsbGJhY2sgcmVzdWx0cyBvZlxuICogYGl0ZXJhdGVlYC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjYWxsYmFja10gLSBBIGNhbGxiYWNrIHdoaWNoIGlzIGNhbGxlZCBhZnRlciB0aGUgdGVzdFxuICogZnVuY3Rpb24gaGFzIHBhc3NlZCBhbmQgcmVwZWF0ZWQgZXhlY3V0aW9uIG9mIGBpdGVyYXRlZWAgaGFzIHN0b3BwZWQuIGBjYWxsYmFja2BcbiAqIHdpbGwgYmUgcGFzc2VkIGFuIGVycm9yIGFuZCBhbnkgYXJndW1lbnRzIHBhc3NlZCB0byB0aGUgZmluYWwgYGl0ZXJhdGVlYCdzXG4gKiBjYWxsYmFjay4gSW52b2tlZCB3aXRoIChlcnIsIFtyZXN1bHRzXSk7XG4gKi9cbmZ1bmN0aW9uIGRvVW50aWwoaXRlcmF0ZWUsIHRlc3QsIGNhbGxiYWNrKSB7XG4gICAgZG9XaGlsc3QoaXRlcmF0ZWUsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuICF0ZXN0LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfSwgY2FsbGJhY2spO1xufVxuXG4vKipcbiAqIExpa2UgW2B3aGlsc3RgXXtAbGluayBtb2R1bGU6Q29udHJvbEZsb3cud2hpbHN0fSwgZXhjZXB0IHRoZSBgdGVzdGAgaXMgYW4gYXN5bmNocm9ub3VzIGZ1bmN0aW9uIHRoYXRcbiAqIGlzIHBhc3NlZCBhIGNhbGxiYWNrIGluIHRoZSBmb3JtIG9mIGBmdW5jdGlvbiAoZXJyLCB0cnV0aClgLiBJZiBlcnJvciBpc1xuICogcGFzc2VkIHRvIGB0ZXN0YCBvciBgZm5gLCB0aGUgbWFpbiBjYWxsYmFjayBpcyBpbW1lZGlhdGVseSBjYWxsZWQgd2l0aCB0aGVcbiAqIHZhbHVlIG9mIHRoZSBlcnJvci5cbiAqXG4gKiBAbmFtZSBkdXJpbmdcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Q29udHJvbEZsb3dcbiAqIEBtZXRob2RcbiAqIEBzZWUgW2FzeW5jLndoaWxzdF17QGxpbmsgbW9kdWxlOkNvbnRyb2xGbG93LndoaWxzdH1cbiAqIEBjYXRlZ29yeSBDb250cm9sIEZsb3dcbiAqIEBwYXJhbSB7QXN5bmNGdW5jdGlvbn0gdGVzdCAtIGFzeW5jaHJvbm91cyB0cnV0aCB0ZXN0IHRvIHBlcmZvcm0gYmVmb3JlIGVhY2hcbiAqIGV4ZWN1dGlvbiBvZiBgZm5gLiBJbnZva2VkIHdpdGggKGNhbGxiYWNrKS5cbiAqIEBwYXJhbSB7QXN5bmNGdW5jdGlvbn0gZm4gLSBBbiBhc3luYyBmdW5jdGlvbiB3aGljaCBpcyBjYWxsZWQgZWFjaCB0aW1lXG4gKiBgdGVzdGAgcGFzc2VzLiBJbnZva2VkIHdpdGggKGNhbGxiYWNrKS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjYWxsYmFja10gLSBBIGNhbGxiYWNrIHdoaWNoIGlzIGNhbGxlZCBhZnRlciB0aGUgdGVzdFxuICogZnVuY3Rpb24gaGFzIGZhaWxlZCBhbmQgcmVwZWF0ZWQgZXhlY3V0aW9uIG9mIGBmbmAgaGFzIHN0b3BwZWQuIGBjYWxsYmFja2BcbiAqIHdpbGwgYmUgcGFzc2VkIGFuIGVycm9yLCBpZiBvbmUgb2NjdXJyZWQsIG90aGVyd2lzZSBgbnVsbGAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBjb3VudCA9IDA7XG4gKlxuICogYXN5bmMuZHVyaW5nKFxuICogICAgIGZ1bmN0aW9uIChjYWxsYmFjaykge1xuICogICAgICAgICByZXR1cm4gY2FsbGJhY2sobnVsbCwgY291bnQgPCA1KTtcbiAqICAgICB9LFxuICogICAgIGZ1bmN0aW9uIChjYWxsYmFjaykge1xuICogICAgICAgICBjb3VudCsrO1xuICogICAgICAgICBzZXRUaW1lb3V0KGNhbGxiYWNrLCAxMDAwKTtcbiAqICAgICB9LFxuICogICAgIGZ1bmN0aW9uIChlcnIpIHtcbiAqICAgICAgICAgLy8gNSBzZWNvbmRzIGhhdmUgcGFzc2VkXG4gKiAgICAgfVxuICogKTtcbiAqL1xuZnVuY3Rpb24gZHVyaW5nKHRlc3QsIGZuLCBjYWxsYmFjaykge1xuICAgIGNhbGxiYWNrID0gb25seU9uY2UoY2FsbGJhY2sgfHwgbm9vcCk7XG4gICAgdmFyIF9mbiA9IHdyYXBBc3luYyQxKGZuKTtcbiAgICB2YXIgX3Rlc3QgPSB3cmFwQXN5bmMkMSh0ZXN0KTtcblxuICAgIGZ1bmN0aW9uIG5leHQoZXJyKSB7XG4gICAgICAgIGlmIChlcnIpIHJldHVybiBjYWxsYmFjayhlcnIpO1xuICAgICAgICBfdGVzdChjaGVjayk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY2hlY2soZXJyLCB0cnV0aCkge1xuICAgICAgICBpZiAoZXJyKSByZXR1cm4gY2FsbGJhY2soZXJyKTtcbiAgICAgICAgaWYgKCF0cnV0aCkgcmV0dXJuIGNhbGxiYWNrKG51bGwpO1xuICAgICAgICBfZm4obmV4dCk7XG4gICAgfVxuXG4gICAgX3Rlc3QoY2hlY2spO1xufVxuXG5mdW5jdGlvbiBfd2l0aG91dEluZGV4KGl0ZXJhdGVlKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh2YWx1ZSwgaW5kZXgsIGNhbGxiYWNrKSB7XG4gICAgICAgIHJldHVybiBpdGVyYXRlZSh2YWx1ZSwgY2FsbGJhY2spO1xuICAgIH07XG59XG5cbi8qKlxuICogQXBwbGllcyB0aGUgZnVuY3Rpb24gYGl0ZXJhdGVlYCB0byBlYWNoIGl0ZW0gaW4gYGNvbGxgLCBpbiBwYXJhbGxlbC5cbiAqIFRoZSBgaXRlcmF0ZWVgIGlzIGNhbGxlZCB3aXRoIGFuIGl0ZW0gZnJvbSB0aGUgbGlzdCwgYW5kIGEgY2FsbGJhY2sgZm9yIHdoZW5cbiAqIGl0IGhhcyBmaW5pc2hlZC4gSWYgdGhlIGBpdGVyYXRlZWAgcGFzc2VzIGFuIGVycm9yIHRvIGl0cyBgY2FsbGJhY2tgLCB0aGVcbiAqIG1haW4gYGNhbGxiYWNrYCAoZm9yIHRoZSBgZWFjaGAgZnVuY3Rpb24pIGlzIGltbWVkaWF0ZWx5IGNhbGxlZCB3aXRoIHRoZVxuICogZXJyb3IuXG4gKlxuICogTm90ZSwgdGhhdCBzaW5jZSB0aGlzIGZ1bmN0aW9uIGFwcGxpZXMgYGl0ZXJhdGVlYCB0byBlYWNoIGl0ZW0gaW4gcGFyYWxsZWwsXG4gKiB0aGVyZSBpcyBubyBndWFyYW50ZWUgdGhhdCB0aGUgaXRlcmF0ZWUgZnVuY3Rpb25zIHdpbGwgY29tcGxldGUgaW4gb3JkZXIuXG4gKlxuICogQG5hbWUgZWFjaFxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIG1vZHVsZTpDb2xsZWN0aW9uc1xuICogQG1ldGhvZFxuICogQGFsaWFzIGZvckVhY2hcbiAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gKiBAcGFyYW0ge0FycmF5fEl0ZXJhYmxlfE9iamVjdH0gY29sbCAtIEEgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0FzeW5jRnVuY3Rpb259IGl0ZXJhdGVlIC0gQW4gYXN5bmMgZnVuY3Rpb24gdG8gYXBwbHkgdG9cbiAqIGVhY2ggaXRlbSBpbiBgY29sbGAuIEludm9rZWQgd2l0aCAoaXRlbSwgY2FsbGJhY2spLlxuICogVGhlIGFycmF5IGluZGV4IGlzIG5vdCBwYXNzZWQgdG8gdGhlIGl0ZXJhdGVlLlxuICogSWYgeW91IG5lZWQgdGhlIGluZGV4LCB1c2UgYGVhY2hPZmAuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY2FsbGJhY2tdIC0gQSBjYWxsYmFjayB3aGljaCBpcyBjYWxsZWQgd2hlbiBhbGxcbiAqIGBpdGVyYXRlZWAgZnVuY3Rpb25zIGhhdmUgZmluaXNoZWQsIG9yIGFuIGVycm9yIG9jY3Vycy4gSW52b2tlZCB3aXRoIChlcnIpLlxuICogQGV4YW1wbGVcbiAqXG4gKiAvLyBhc3N1bWluZyBvcGVuRmlsZXMgaXMgYW4gYXJyYXkgb2YgZmlsZSBuYW1lcyBhbmQgc2F2ZUZpbGUgaXMgYSBmdW5jdGlvblxuICogLy8gdG8gc2F2ZSB0aGUgbW9kaWZpZWQgY29udGVudHMgb2YgdGhhdCBmaWxlOlxuICpcbiAqIGFzeW5jLmVhY2gob3BlbkZpbGVzLCBzYXZlRmlsZSwgZnVuY3Rpb24oZXJyKXtcbiAqICAgLy8gaWYgYW55IG9mIHRoZSBzYXZlcyBwcm9kdWNlZCBhbiBlcnJvciwgZXJyIHdvdWxkIGVxdWFsIHRoYXQgZXJyb3JcbiAqIH0pO1xuICpcbiAqIC8vIGFzc3VtaW5nIG9wZW5GaWxlcyBpcyBhbiBhcnJheSBvZiBmaWxlIG5hbWVzXG4gKiBhc3luYy5lYWNoKG9wZW5GaWxlcywgZnVuY3Rpb24oZmlsZSwgY2FsbGJhY2spIHtcbiAqXG4gKiAgICAgLy8gUGVyZm9ybSBvcGVyYXRpb24gb24gZmlsZSBoZXJlLlxuICogICAgIGNvbnNvbGUubG9nKCdQcm9jZXNzaW5nIGZpbGUgJyArIGZpbGUpO1xuICpcbiAqICAgICBpZiggZmlsZS5sZW5ndGggPiAzMiApIHtcbiAqICAgICAgIGNvbnNvbGUubG9nKCdUaGlzIGZpbGUgbmFtZSBpcyB0b28gbG9uZycpO1xuICogICAgICAgY2FsbGJhY2soJ0ZpbGUgbmFtZSB0b28gbG9uZycpO1xuICogICAgIH0gZWxzZSB7XG4gKiAgICAgICAvLyBEbyB3b3JrIHRvIHByb2Nlc3MgZmlsZSBoZXJlXG4gKiAgICAgICBjb25zb2xlLmxvZygnRmlsZSBwcm9jZXNzZWQnKTtcbiAqICAgICAgIGNhbGxiYWNrKCk7XG4gKiAgICAgfVxuICogfSwgZnVuY3Rpb24oZXJyKSB7XG4gKiAgICAgLy8gaWYgYW55IG9mIHRoZSBmaWxlIHByb2Nlc3NpbmcgcHJvZHVjZWQgYW4gZXJyb3IsIGVyciB3b3VsZCBlcXVhbCB0aGF0IGVycm9yXG4gKiAgICAgaWYoIGVyciApIHtcbiAqICAgICAgIC8vIE9uZSBvZiB0aGUgaXRlcmF0aW9ucyBwcm9kdWNlZCBhbiBlcnJvci5cbiAqICAgICAgIC8vIEFsbCBwcm9jZXNzaW5nIHdpbGwgbm93IHN0b3AuXG4gKiAgICAgICBjb25zb2xlLmxvZygnQSBmaWxlIGZhaWxlZCB0byBwcm9jZXNzJyk7XG4gKiAgICAgfSBlbHNlIHtcbiAqICAgICAgIGNvbnNvbGUubG9nKCdBbGwgZmlsZXMgaGF2ZSBiZWVuIHByb2Nlc3NlZCBzdWNjZXNzZnVsbHknKTtcbiAqICAgICB9XG4gKiB9KTtcbiAqL1xuZnVuY3Rpb24gZWFjaExpbWl0KGNvbGwsIGl0ZXJhdGVlLCBjYWxsYmFjaykge1xuICBlYWNoT2YoY29sbCwgX3dpdGhvdXRJbmRleCh3cmFwQXN5bmMkMShpdGVyYXRlZSkpLCBjYWxsYmFjayk7XG59XG5cbi8qKlxuICogVGhlIHNhbWUgYXMgW2BlYWNoYF17QGxpbmsgbW9kdWxlOkNvbGxlY3Rpb25zLmVhY2h9IGJ1dCBydW5zIGEgbWF4aW11bSBvZiBgbGltaXRgIGFzeW5jIG9wZXJhdGlvbnMgYXQgYSB0aW1lLlxuICpcbiAqIEBuYW1lIGVhY2hMaW1pdFxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIG1vZHVsZTpDb2xsZWN0aW9uc1xuICogQG1ldGhvZFxuICogQHNlZSBbYXN5bmMuZWFjaF17QGxpbmsgbW9kdWxlOkNvbGxlY3Rpb25zLmVhY2h9XG4gKiBAYWxpYXMgZm9yRWFjaExpbWl0XG4gKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICogQHBhcmFtIHtBcnJheXxJdGVyYWJsZXxPYmplY3R9IGNvbGwgLSBBIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtudW1iZXJ9IGxpbWl0IC0gVGhlIG1heGltdW0gbnVtYmVyIG9mIGFzeW5jIG9wZXJhdGlvbnMgYXQgYSB0aW1lLlxuICogQHBhcmFtIHtBc3luY0Z1bmN0aW9ufSBpdGVyYXRlZSAtIEFuIGFzeW5jIGZ1bmN0aW9uIHRvIGFwcGx5IHRvIGVhY2ggaXRlbSBpblxuICogYGNvbGxgLlxuICogVGhlIGFycmF5IGluZGV4IGlzIG5vdCBwYXNzZWQgdG8gdGhlIGl0ZXJhdGVlLlxuICogSWYgeW91IG5lZWQgdGhlIGluZGV4LCB1c2UgYGVhY2hPZkxpbWl0YC5cbiAqIEludm9rZWQgd2l0aCAoaXRlbSwgY2FsbGJhY2spLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2NhbGxiYWNrXSAtIEEgY2FsbGJhY2sgd2hpY2ggaXMgY2FsbGVkIHdoZW4gYWxsXG4gKiBgaXRlcmF0ZWVgIGZ1bmN0aW9ucyBoYXZlIGZpbmlzaGVkLCBvciBhbiBlcnJvciBvY2N1cnMuIEludm9rZWQgd2l0aCAoZXJyKS5cbiAqL1xuZnVuY3Rpb24gZWFjaExpbWl0JDEoY29sbCwgbGltaXQsIGl0ZXJhdGVlLCBjYWxsYmFjaykge1xuICBfZWFjaE9mTGltaXQobGltaXQpKGNvbGwsIF93aXRob3V0SW5kZXgod3JhcEFzeW5jJDEoaXRlcmF0ZWUpKSwgY2FsbGJhY2spO1xufVxuXG4vKipcbiAqIFRoZSBzYW1lIGFzIFtgZWFjaGBde0BsaW5rIG1vZHVsZTpDb2xsZWN0aW9ucy5lYWNofSBidXQgcnVucyBvbmx5IGEgc2luZ2xlIGFzeW5jIG9wZXJhdGlvbiBhdCBhIHRpbWUuXG4gKlxuICogQG5hbWUgZWFjaFNlcmllc1xuICogQHN0YXRpY1xuICogQG1lbWJlck9mIG1vZHVsZTpDb2xsZWN0aW9uc1xuICogQG1ldGhvZFxuICogQHNlZSBbYXN5bmMuZWFjaF17QGxpbmsgbW9kdWxlOkNvbGxlY3Rpb25zLmVhY2h9XG4gKiBAYWxpYXMgZm9yRWFjaFNlcmllc1xuICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAqIEBwYXJhbSB7QXJyYXl8SXRlcmFibGV8T2JqZWN0fSBjb2xsIC0gQSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7QXN5bmNGdW5jdGlvbn0gaXRlcmF0ZWUgLSBBbiBhc3luYyBmdW5jdGlvbiB0byBhcHBseSB0byBlYWNoXG4gKiBpdGVtIGluIGBjb2xsYC5cbiAqIFRoZSBhcnJheSBpbmRleCBpcyBub3QgcGFzc2VkIHRvIHRoZSBpdGVyYXRlZS5cbiAqIElmIHlvdSBuZWVkIHRoZSBpbmRleCwgdXNlIGBlYWNoT2ZTZXJpZXNgLlxuICogSW52b2tlZCB3aXRoIChpdGVtLCBjYWxsYmFjaykuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY2FsbGJhY2tdIC0gQSBjYWxsYmFjayB3aGljaCBpcyBjYWxsZWQgd2hlbiBhbGxcbiAqIGBpdGVyYXRlZWAgZnVuY3Rpb25zIGhhdmUgZmluaXNoZWQsIG9yIGFuIGVycm9yIG9jY3Vycy4gSW52b2tlZCB3aXRoIChlcnIpLlxuICovXG52YXIgZWFjaFNlcmllcyA9IGRvTGltaXQoZWFjaExpbWl0JDEsIDEpO1xuXG4vKipcbiAqIFdyYXAgYW4gYXN5bmMgZnVuY3Rpb24gYW5kIGVuc3VyZSBpdCBjYWxscyBpdHMgY2FsbGJhY2sgb24gYSBsYXRlciB0aWNrIG9mXG4gKiB0aGUgZXZlbnQgbG9vcC4gIElmIHRoZSBmdW5jdGlvbiBhbHJlYWR5IGNhbGxzIGl0cyBjYWxsYmFjayBvbiBhIG5leHQgdGljayxcbiAqIG5vIGV4dHJhIGRlZmVycmFsIGlzIGFkZGVkLiBUaGlzIGlzIHVzZWZ1bCBmb3IgcHJldmVudGluZyBzdGFjayBvdmVyZmxvd3NcbiAqIChgUmFuZ2VFcnJvcjogTWF4aW11bSBjYWxsIHN0YWNrIHNpemUgZXhjZWVkZWRgKSBhbmQgZ2VuZXJhbGx5IGtlZXBpbmdcbiAqIFtaYWxnb10oaHR0cDovL2Jsb2cuaXpzLm1lL3Bvc3QvNTkxNDI3NDIxNDMvZGVzaWduaW5nLWFwaXMtZm9yLWFzeW5jaHJvbnkpXG4gKiBjb250YWluZWQuIEVTMjAxNyBgYXN5bmNgIGZ1bmN0aW9ucyBhcmUgcmV0dXJuZWQgYXMtaXMgLS0gdGhleSBhcmUgaW1tdW5lXG4gKiB0byBaYWxnbydzIGNvcnJ1cHRpbmcgaW5mbHVlbmNlcywgYXMgdGhleSBhbHdheXMgcmVzb2x2ZSBvbiBhIGxhdGVyIHRpY2suXG4gKlxuICogQG5hbWUgZW5zdXJlQXN5bmNcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6VXRpbHNcbiAqIEBtZXRob2RcbiAqIEBjYXRlZ29yeSBVdGlsXG4gKiBAcGFyYW0ge0FzeW5jRnVuY3Rpb259IGZuIC0gYW4gYXN5bmMgZnVuY3Rpb24sIG9uZSB0aGF0IGV4cGVjdHMgYSBub2RlLXN0eWxlXG4gKiBjYWxsYmFjayBhcyBpdHMgbGFzdCBhcmd1bWVudC5cbiAqIEByZXR1cm5zIHtBc3luY0Z1bmN0aW9ufSBSZXR1cm5zIGEgd3JhcHBlZCBmdW5jdGlvbiB3aXRoIHRoZSBleGFjdCBzYW1lIGNhbGxcbiAqIHNpZ25hdHVyZSBhcyB0aGUgZnVuY3Rpb24gcGFzc2VkIGluLlxuICogQGV4YW1wbGVcbiAqXG4gKiBmdW5jdGlvbiBzb21ldGltZXNBc3luYyhhcmcsIGNhbGxiYWNrKSB7XG4gKiAgICAgaWYgKGNhY2hlW2FyZ10pIHtcbiAqICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKG51bGwsIGNhY2hlW2FyZ10pOyAvLyB0aGlzIHdvdWxkIGJlIHN5bmNocm9ub3VzISFcbiAqICAgICB9IGVsc2Uge1xuICogICAgICAgICBkb1NvbWVJTyhhcmcsIGNhbGxiYWNrKTsgLy8gdGhpcyBJTyB3b3VsZCBiZSBhc3luY2hyb25vdXNcbiAqICAgICB9XG4gKiB9XG4gKlxuICogLy8gdGhpcyBoYXMgYSByaXNrIG9mIHN0YWNrIG92ZXJmbG93cyBpZiBtYW55IHJlc3VsdHMgYXJlIGNhY2hlZCBpbiBhIHJvd1xuICogYXN5bmMubWFwU2VyaWVzKGFyZ3MsIHNvbWV0aW1lc0FzeW5jLCBkb25lKTtcbiAqXG4gKiAvLyB0aGlzIHdpbGwgZGVmZXIgc29tZXRpbWVzQXN5bmMncyBjYWxsYmFjayBpZiBuZWNlc3NhcnksXG4gKiAvLyBwcmV2ZW50aW5nIHN0YWNrIG92ZXJmbG93c1xuICogYXN5bmMubWFwU2VyaWVzKGFyZ3MsIGFzeW5jLmVuc3VyZUFzeW5jKHNvbWV0aW1lc0FzeW5jKSwgZG9uZSk7XG4gKi9cbmZ1bmN0aW9uIGVuc3VyZUFzeW5jKGZuKSB7XG4gICAgaWYgKGlzQXN5bmMoZm4pKSByZXR1cm4gZm47XG4gICAgcmV0dXJuIGluaXRpYWxQYXJhbXMoZnVuY3Rpb24gKGFyZ3MsIGNhbGxiYWNrKSB7XG4gICAgICAgIHZhciBzeW5jID0gdHJ1ZTtcbiAgICAgICAgYXJncy5wdXNoKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBpbm5lckFyZ3MgPSBhcmd1bWVudHM7XG4gICAgICAgICAgICBpZiAoc3luYykge1xuICAgICAgICAgICAgICAgIHNldEltbWVkaWF0ZSQxKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2suYXBwbHkobnVsbCwgaW5uZXJBcmdzKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY2FsbGJhY2suYXBwbHkobnVsbCwgaW5uZXJBcmdzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGZuLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgICAgICBzeW5jID0gZmFsc2U7XG4gICAgfSk7XG59XG5cbmZ1bmN0aW9uIG5vdElkKHYpIHtcbiAgICByZXR1cm4gIXY7XG59XG5cbi8qKlxuICogUmV0dXJucyBgdHJ1ZWAgaWYgZXZlcnkgZWxlbWVudCBpbiBgY29sbGAgc2F0aXNmaWVzIGFuIGFzeW5jIHRlc3QuIElmIGFueVxuICogaXRlcmF0ZWUgY2FsbCByZXR1cm5zIGBmYWxzZWAsIHRoZSBtYWluIGBjYWxsYmFja2AgaXMgaW1tZWRpYXRlbHkgY2FsbGVkLlxuICpcbiAqIEBuYW1lIGV2ZXJ5XG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgbW9kdWxlOkNvbGxlY3Rpb25zXG4gKiBAbWV0aG9kXG4gKiBAYWxpYXMgYWxsXG4gKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICogQHBhcmFtIHtBcnJheXxJdGVyYWJsZXxPYmplY3R9IGNvbGwgLSBBIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtBc3luY0Z1bmN0aW9ufSBpdGVyYXRlZSAtIEFuIGFzeW5jIHRydXRoIHRlc3QgdG8gYXBwbHkgdG8gZWFjaCBpdGVtXG4gKiBpbiB0aGUgY29sbGVjdGlvbiBpbiBwYXJhbGxlbC5cbiAqIFRoZSBpdGVyYXRlZSBtdXN0IGNvbXBsZXRlIHdpdGggYSBib29sZWFuIHJlc3VsdCB2YWx1ZS5cbiAqIEludm9rZWQgd2l0aCAoaXRlbSwgY2FsbGJhY2spLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2NhbGxiYWNrXSAtIEEgY2FsbGJhY2sgd2hpY2ggaXMgY2FsbGVkIGFmdGVyIGFsbCB0aGVcbiAqIGBpdGVyYXRlZWAgZnVuY3Rpb25zIGhhdmUgZmluaXNoZWQuIFJlc3VsdCB3aWxsIGJlIGVpdGhlciBgdHJ1ZWAgb3IgYGZhbHNlYFxuICogZGVwZW5kaW5nIG9uIHRoZSB2YWx1ZXMgb2YgdGhlIGFzeW5jIHRlc3RzLiBJbnZva2VkIHdpdGggKGVyciwgcmVzdWx0KS5cbiAqIEBleGFtcGxlXG4gKlxuICogYXN5bmMuZXZlcnkoWydmaWxlMScsJ2ZpbGUyJywnZmlsZTMnXSwgZnVuY3Rpb24oZmlsZVBhdGgsIGNhbGxiYWNrKSB7XG4gKiAgICAgZnMuYWNjZXNzKGZpbGVQYXRoLCBmdW5jdGlvbihlcnIpIHtcbiAqICAgICAgICAgY2FsbGJhY2sobnVsbCwgIWVycilcbiAqICAgICB9KTtcbiAqIH0sIGZ1bmN0aW9uKGVyciwgcmVzdWx0KSB7XG4gKiAgICAgLy8gaWYgcmVzdWx0IGlzIHRydWUgdGhlbiBldmVyeSBmaWxlIGV4aXN0c1xuICogfSk7XG4gKi9cbnZhciBldmVyeSA9IGRvUGFyYWxsZWwoX2NyZWF0ZVRlc3Rlcihub3RJZCwgbm90SWQpKTtcblxuLyoqXG4gKiBUaGUgc2FtZSBhcyBbYGV2ZXJ5YF17QGxpbmsgbW9kdWxlOkNvbGxlY3Rpb25zLmV2ZXJ5fSBidXQgcnVucyBhIG1heGltdW0gb2YgYGxpbWl0YCBhc3luYyBvcGVyYXRpb25zIGF0IGEgdGltZS5cbiAqXG4gKiBAbmFtZSBldmVyeUxpbWl0XG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgbW9kdWxlOkNvbGxlY3Rpb25zXG4gKiBAbWV0aG9kXG4gKiBAc2VlIFthc3luYy5ldmVyeV17QGxpbmsgbW9kdWxlOkNvbGxlY3Rpb25zLmV2ZXJ5fVxuICogQGFsaWFzIGFsbExpbWl0XG4gKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICogQHBhcmFtIHtBcnJheXxJdGVyYWJsZXxPYmplY3R9IGNvbGwgLSBBIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtudW1iZXJ9IGxpbWl0IC0gVGhlIG1heGltdW0gbnVtYmVyIG9mIGFzeW5jIG9wZXJhdGlvbnMgYXQgYSB0aW1lLlxuICogQHBhcmFtIHtBc3luY0Z1bmN0aW9ufSBpdGVyYXRlZSAtIEFuIGFzeW5jIHRydXRoIHRlc3QgdG8gYXBwbHkgdG8gZWFjaCBpdGVtXG4gKiBpbiB0aGUgY29sbGVjdGlvbiBpbiBwYXJhbGxlbC5cbiAqIFRoZSBpdGVyYXRlZSBtdXN0IGNvbXBsZXRlIHdpdGggYSBib29sZWFuIHJlc3VsdCB2YWx1ZS5cbiAqIEludm9rZWQgd2l0aCAoaXRlbSwgY2FsbGJhY2spLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2NhbGxiYWNrXSAtIEEgY2FsbGJhY2sgd2hpY2ggaXMgY2FsbGVkIGFmdGVyIGFsbCB0aGVcbiAqIGBpdGVyYXRlZWAgZnVuY3Rpb25zIGhhdmUgZmluaXNoZWQuIFJlc3VsdCB3aWxsIGJlIGVpdGhlciBgdHJ1ZWAgb3IgYGZhbHNlYFxuICogZGVwZW5kaW5nIG9uIHRoZSB2YWx1ZXMgb2YgdGhlIGFzeW5jIHRlc3RzLiBJbnZva2VkIHdpdGggKGVyciwgcmVzdWx0KS5cbiAqL1xudmFyIGV2ZXJ5TGltaXQgPSBkb1BhcmFsbGVsTGltaXQoX2NyZWF0ZVRlc3Rlcihub3RJZCwgbm90SWQpKTtcblxuLyoqXG4gKiBUaGUgc2FtZSBhcyBbYGV2ZXJ5YF17QGxpbmsgbW9kdWxlOkNvbGxlY3Rpb25zLmV2ZXJ5fSBidXQgcnVucyBvbmx5IGEgc2luZ2xlIGFzeW5jIG9wZXJhdGlvbiBhdCBhIHRpbWUuXG4gKlxuICogQG5hbWUgZXZlcnlTZXJpZXNcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Q29sbGVjdGlvbnNcbiAqIEBtZXRob2RcbiAqIEBzZWUgW2FzeW5jLmV2ZXJ5XXtAbGluayBtb2R1bGU6Q29sbGVjdGlvbnMuZXZlcnl9XG4gKiBAYWxpYXMgYWxsU2VyaWVzXG4gKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICogQHBhcmFtIHtBcnJheXxJdGVyYWJsZXxPYmplY3R9IGNvbGwgLSBBIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtBc3luY0Z1bmN0aW9ufSBpdGVyYXRlZSAtIEFuIGFzeW5jIHRydXRoIHRlc3QgdG8gYXBwbHkgdG8gZWFjaCBpdGVtXG4gKiBpbiB0aGUgY29sbGVjdGlvbiBpbiBzZXJpZXMuXG4gKiBUaGUgaXRlcmF0ZWUgbXVzdCBjb21wbGV0ZSB3aXRoIGEgYm9vbGVhbiByZXN1bHQgdmFsdWUuXG4gKiBJbnZva2VkIHdpdGggKGl0ZW0sIGNhbGxiYWNrKS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjYWxsYmFja10gLSBBIGNhbGxiYWNrIHdoaWNoIGlzIGNhbGxlZCBhZnRlciBhbGwgdGhlXG4gKiBgaXRlcmF0ZWVgIGZ1bmN0aW9ucyBoYXZlIGZpbmlzaGVkLiBSZXN1bHQgd2lsbCBiZSBlaXRoZXIgYHRydWVgIG9yIGBmYWxzZWBcbiAqIGRlcGVuZGluZyBvbiB0aGUgdmFsdWVzIG9mIHRoZSBhc3luYyB0ZXN0cy4gSW52b2tlZCB3aXRoIChlcnIsIHJlc3VsdCkuXG4gKi9cbnZhciBldmVyeVNlcmllcyA9IGRvTGltaXQoZXZlcnlMaW1pdCwgMSk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ucHJvcGVydHlgIHdpdGhvdXQgc3VwcG9ydCBmb3IgZGVlcCBwYXRocy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBhY2Nlc3NvciBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gYmFzZVByb3BlcnR5KGtleSkge1xuICByZXR1cm4gZnVuY3Rpb24ob2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdCA9PSBudWxsID8gdW5kZWZpbmVkIDogb2JqZWN0W2tleV07XG4gIH07XG59XG5cbmZ1bmN0aW9uIGZpbHRlckFycmF5KGVhY2hmbiwgYXJyLCBpdGVyYXRlZSwgY2FsbGJhY2spIHtcbiAgICB2YXIgdHJ1dGhWYWx1ZXMgPSBuZXcgQXJyYXkoYXJyLmxlbmd0aCk7XG4gICAgZWFjaGZuKGFyciwgZnVuY3Rpb24gKHgsIGluZGV4LCBjYWxsYmFjaykge1xuICAgICAgICBpdGVyYXRlZSh4LCBmdW5jdGlvbiAoZXJyLCB2KSB7XG4gICAgICAgICAgICB0cnV0aFZhbHVlc1tpbmRleF0gPSAhIXY7XG4gICAgICAgICAgICBjYWxsYmFjayhlcnIpO1xuICAgICAgICB9KTtcbiAgICB9LCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgIGlmIChlcnIpIHJldHVybiBjYWxsYmFjayhlcnIpO1xuICAgICAgICB2YXIgcmVzdWx0cyA9IFtdO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKHRydXRoVmFsdWVzW2ldKSByZXN1bHRzLnB1c2goYXJyW2ldKTtcbiAgICAgICAgfVxuICAgICAgICBjYWxsYmFjayhudWxsLCByZXN1bHRzKTtcbiAgICB9KTtcbn1cblxuZnVuY3Rpb24gZmlsdGVyR2VuZXJpYyhlYWNoZm4sIGNvbGwsIGl0ZXJhdGVlLCBjYWxsYmFjaykge1xuICAgIHZhciByZXN1bHRzID0gW107XG4gICAgZWFjaGZuKGNvbGwsIGZ1bmN0aW9uICh4LCBpbmRleCwgY2FsbGJhY2spIHtcbiAgICAgICAgaXRlcmF0ZWUoeCwgZnVuY3Rpb24gKGVyciwgdikge1xuICAgICAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgICAgIGNhbGxiYWNrKGVycik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmICh2KSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdHMucHVzaCh7IGluZGV4OiBpbmRleCwgdmFsdWU6IHggfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhbGxiYWNrKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0sIGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgY2FsbGJhY2soZXJyKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNhbGxiYWNrKG51bGwsIGFycmF5TWFwKHJlc3VsdHMuc29ydChmdW5jdGlvbiAoYSwgYikge1xuICAgICAgICAgICAgICAgIHJldHVybiBhLmluZGV4IC0gYi5pbmRleDtcbiAgICAgICAgICAgIH0pLCBiYXNlUHJvcGVydHkoJ3ZhbHVlJykpKTtcbiAgICAgICAgfVxuICAgIH0pO1xufVxuXG5mdW5jdGlvbiBfZmlsdGVyKGVhY2hmbiwgY29sbCwgaXRlcmF0ZWUsIGNhbGxiYWNrKSB7XG4gICAgdmFyIGZpbHRlciA9IGlzQXJyYXlMaWtlKGNvbGwpID8gZmlsdGVyQXJyYXkgOiBmaWx0ZXJHZW5lcmljO1xuICAgIGZpbHRlcihlYWNoZm4sIGNvbGwsIHdyYXBBc3luYyQxKGl0ZXJhdGVlKSwgY2FsbGJhY2sgfHwgbm9vcCk7XG59XG5cbi8qKlxuICogUmV0dXJucyBhIG5ldyBhcnJheSBvZiBhbGwgdGhlIHZhbHVlcyBpbiBgY29sbGAgd2hpY2ggcGFzcyBhbiBhc3luYyB0cnV0aFxuICogdGVzdC4gVGhpcyBvcGVyYXRpb24gaXMgcGVyZm9ybWVkIGluIHBhcmFsbGVsLCBidXQgdGhlIHJlc3VsdHMgYXJyYXkgd2lsbCBiZVxuICogaW4gdGhlIHNhbWUgb3JkZXIgYXMgdGhlIG9yaWdpbmFsLlxuICpcbiAqIEBuYW1lIGZpbHRlclxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIG1vZHVsZTpDb2xsZWN0aW9uc1xuICogQG1ldGhvZFxuICogQGFsaWFzIHNlbGVjdFxuICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAqIEBwYXJhbSB7QXJyYXl8SXRlcmFibGV8T2JqZWN0fSBjb2xsIC0gQSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIC0gQSB0cnV0aCB0ZXN0IHRvIGFwcGx5IHRvIGVhY2ggaXRlbSBpbiBgY29sbGAuXG4gKiBUaGUgYGl0ZXJhdGVlYCBpcyBwYXNzZWQgYSBgY2FsbGJhY2soZXJyLCB0cnV0aFZhbHVlKWAsIHdoaWNoIG11c3QgYmUgY2FsbGVkXG4gKiB3aXRoIGEgYm9vbGVhbiBhcmd1bWVudCBvbmNlIGl0IGhhcyBjb21wbGV0ZWQuIEludm9rZWQgd2l0aCAoaXRlbSwgY2FsbGJhY2spLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2NhbGxiYWNrXSAtIEEgY2FsbGJhY2sgd2hpY2ggaXMgY2FsbGVkIGFmdGVyIGFsbCB0aGVcbiAqIGBpdGVyYXRlZWAgZnVuY3Rpb25zIGhhdmUgZmluaXNoZWQuIEludm9rZWQgd2l0aCAoZXJyLCByZXN1bHRzKS5cbiAqIEBleGFtcGxlXG4gKlxuICogYXN5bmMuZmlsdGVyKFsnZmlsZTEnLCdmaWxlMicsJ2ZpbGUzJ10sIGZ1bmN0aW9uKGZpbGVQYXRoLCBjYWxsYmFjaykge1xuICogICAgIGZzLmFjY2VzcyhmaWxlUGF0aCwgZnVuY3Rpb24oZXJyKSB7XG4gKiAgICAgICAgIGNhbGxiYWNrKG51bGwsICFlcnIpXG4gKiAgICAgfSk7XG4gKiB9LCBmdW5jdGlvbihlcnIsIHJlc3VsdHMpIHtcbiAqICAgICAvLyByZXN1bHRzIG5vdyBlcXVhbHMgYW4gYXJyYXkgb2YgdGhlIGV4aXN0aW5nIGZpbGVzXG4gKiB9KTtcbiAqL1xudmFyIGZpbHRlciA9IGRvUGFyYWxsZWwoX2ZpbHRlcik7XG5cbi8qKlxuICogVGhlIHNhbWUgYXMgW2BmaWx0ZXJgXXtAbGluayBtb2R1bGU6Q29sbGVjdGlvbnMuZmlsdGVyfSBidXQgcnVucyBhIG1heGltdW0gb2YgYGxpbWl0YCBhc3luYyBvcGVyYXRpb25zIGF0IGFcbiAqIHRpbWUuXG4gKlxuICogQG5hbWUgZmlsdGVyTGltaXRcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Q29sbGVjdGlvbnNcbiAqIEBtZXRob2RcbiAqIEBzZWUgW2FzeW5jLmZpbHRlcl17QGxpbmsgbW9kdWxlOkNvbGxlY3Rpb25zLmZpbHRlcn1cbiAqIEBhbGlhcyBzZWxlY3RMaW1pdFxuICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAqIEBwYXJhbSB7QXJyYXl8SXRlcmFibGV8T2JqZWN0fSBjb2xsIC0gQSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7bnVtYmVyfSBsaW1pdCAtIFRoZSBtYXhpbXVtIG51bWJlciBvZiBhc3luYyBvcGVyYXRpb25zIGF0IGEgdGltZS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIC0gQSB0cnV0aCB0ZXN0IHRvIGFwcGx5IHRvIGVhY2ggaXRlbSBpbiBgY29sbGAuXG4gKiBUaGUgYGl0ZXJhdGVlYCBpcyBwYXNzZWQgYSBgY2FsbGJhY2soZXJyLCB0cnV0aFZhbHVlKWAsIHdoaWNoIG11c3QgYmUgY2FsbGVkXG4gKiB3aXRoIGEgYm9vbGVhbiBhcmd1bWVudCBvbmNlIGl0IGhhcyBjb21wbGV0ZWQuIEludm9rZWQgd2l0aCAoaXRlbSwgY2FsbGJhY2spLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2NhbGxiYWNrXSAtIEEgY2FsbGJhY2sgd2hpY2ggaXMgY2FsbGVkIGFmdGVyIGFsbCB0aGVcbiAqIGBpdGVyYXRlZWAgZnVuY3Rpb25zIGhhdmUgZmluaXNoZWQuIEludm9rZWQgd2l0aCAoZXJyLCByZXN1bHRzKS5cbiAqL1xudmFyIGZpbHRlckxpbWl0ID0gZG9QYXJhbGxlbExpbWl0KF9maWx0ZXIpO1xuXG4vKipcbiAqIFRoZSBzYW1lIGFzIFtgZmlsdGVyYF17QGxpbmsgbW9kdWxlOkNvbGxlY3Rpb25zLmZpbHRlcn0gYnV0IHJ1bnMgb25seSBhIHNpbmdsZSBhc3luYyBvcGVyYXRpb24gYXQgYSB0aW1lLlxuICpcbiAqIEBuYW1lIGZpbHRlclNlcmllc1xuICogQHN0YXRpY1xuICogQG1lbWJlck9mIG1vZHVsZTpDb2xsZWN0aW9uc1xuICogQG1ldGhvZFxuICogQHNlZSBbYXN5bmMuZmlsdGVyXXtAbGluayBtb2R1bGU6Q29sbGVjdGlvbnMuZmlsdGVyfVxuICogQGFsaWFzIHNlbGVjdFNlcmllc1xuICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAqIEBwYXJhbSB7QXJyYXl8SXRlcmFibGV8T2JqZWN0fSBjb2xsIC0gQSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIC0gQSB0cnV0aCB0ZXN0IHRvIGFwcGx5IHRvIGVhY2ggaXRlbSBpbiBgY29sbGAuXG4gKiBUaGUgYGl0ZXJhdGVlYCBpcyBwYXNzZWQgYSBgY2FsbGJhY2soZXJyLCB0cnV0aFZhbHVlKWAsIHdoaWNoIG11c3QgYmUgY2FsbGVkXG4gKiB3aXRoIGEgYm9vbGVhbiBhcmd1bWVudCBvbmNlIGl0IGhhcyBjb21wbGV0ZWQuIEludm9rZWQgd2l0aCAoaXRlbSwgY2FsbGJhY2spLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2NhbGxiYWNrXSAtIEEgY2FsbGJhY2sgd2hpY2ggaXMgY2FsbGVkIGFmdGVyIGFsbCB0aGVcbiAqIGBpdGVyYXRlZWAgZnVuY3Rpb25zIGhhdmUgZmluaXNoZWQuIEludm9rZWQgd2l0aCAoZXJyLCByZXN1bHRzKVxuICovXG52YXIgZmlsdGVyU2VyaWVzID0gZG9MaW1pdChmaWx0ZXJMaW1pdCwgMSk7XG5cbi8qKlxuICogQ2FsbHMgdGhlIGFzeW5jaHJvbm91cyBmdW5jdGlvbiBgZm5gIHdpdGggYSBjYWxsYmFjayBwYXJhbWV0ZXIgdGhhdCBhbGxvd3MgaXRcbiAqIHRvIGNhbGwgaXRzZWxmIGFnYWluLCBpbiBzZXJpZXMsIGluZGVmaW5pdGVseS5cblxuICogSWYgYW4gZXJyb3IgaXMgcGFzc2VkIHRvIHRoZSBjYWxsYmFjayB0aGVuIGBlcnJiYWNrYCBpcyBjYWxsZWQgd2l0aCB0aGVcbiAqIGVycm9yLCBhbmQgZXhlY3V0aW9uIHN0b3BzLCBvdGhlcndpc2UgaXQgd2lsbCBuZXZlciBiZSBjYWxsZWQuXG4gKlxuICogQG5hbWUgZm9yZXZlclxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIG1vZHVsZTpDb250cm9sRmxvd1xuICogQG1ldGhvZFxuICogQGNhdGVnb3J5IENvbnRyb2wgRmxvd1xuICogQHBhcmFtIHtBc3luY0Z1bmN0aW9ufSBmbiAtIGFuIGFzeW5jIGZ1bmN0aW9uIHRvIGNhbGwgcmVwZWF0ZWRseS5cbiAqIEludm9rZWQgd2l0aCAobmV4dCkuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbZXJyYmFja10gLSB3aGVuIGBmbmAgcGFzc2VzIGFuIGVycm9yIHRvIGl0J3MgY2FsbGJhY2ssXG4gKiB0aGlzIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkLCBhbmQgZXhlY3V0aW9uIHN0b3BzLiBJbnZva2VkIHdpdGggKGVycikuXG4gKiBAZXhhbXBsZVxuICpcbiAqIGFzeW5jLmZvcmV2ZXIoXG4gKiAgICAgZnVuY3Rpb24obmV4dCkge1xuICogICAgICAgICAvLyBuZXh0IGlzIHN1aXRhYmxlIGZvciBwYXNzaW5nIHRvIHRoaW5ncyB0aGF0IG5lZWQgYSBjYWxsYmFjayhlcnIgWywgd2hhdGV2ZXJdKTtcbiAqICAgICAgICAgLy8gaXQgd2lsbCByZXN1bHQgaW4gdGhpcyBmdW5jdGlvbiBiZWluZyBjYWxsZWQgYWdhaW4uXG4gKiAgICAgfSxcbiAqICAgICBmdW5jdGlvbihlcnIpIHtcbiAqICAgICAgICAgLy8gaWYgbmV4dCBpcyBjYWxsZWQgd2l0aCBhIHZhbHVlIGluIGl0cyBmaXJzdCBwYXJhbWV0ZXIsIGl0IHdpbGwgYXBwZWFyXG4gKiAgICAgICAgIC8vIGluIGhlcmUgYXMgJ2VycicsIGFuZCBleGVjdXRpb24gd2lsbCBzdG9wLlxuICogICAgIH1cbiAqICk7XG4gKi9cbmZ1bmN0aW9uIGZvcmV2ZXIoZm4sIGVycmJhY2spIHtcbiAgICB2YXIgZG9uZSA9IG9ubHlPbmNlKGVycmJhY2sgfHwgbm9vcCk7XG4gICAgdmFyIHRhc2sgPSB3cmFwQXN5bmMkMShlbnN1cmVBc3luYyhmbikpO1xuXG4gICAgZnVuY3Rpb24gbmV4dChlcnIpIHtcbiAgICAgICAgaWYgKGVycikgcmV0dXJuIGRvbmUoZXJyKTtcbiAgICAgICAgdGFzayhuZXh0KTtcbiAgICB9XG4gICAgbmV4dCgpO1xufVxuXG4vKipcbiAqIFRoZSBzYW1lIGFzIFtgZ3JvdXBCeWBde0BsaW5rIG1vZHVsZTpDb2xsZWN0aW9ucy5ncm91cEJ5fSBidXQgcnVucyBhIG1heGltdW0gb2YgYGxpbWl0YCBhc3luYyBvcGVyYXRpb25zIGF0IGEgdGltZS5cbiAqXG4gKiBAbmFtZSBncm91cEJ5TGltaXRcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Q29sbGVjdGlvbnNcbiAqIEBtZXRob2RcbiAqIEBzZWUgW2FzeW5jLmdyb3VwQnlde0BsaW5rIG1vZHVsZTpDb2xsZWN0aW9ucy5ncm91cEJ5fVxuICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAqIEBwYXJhbSB7QXJyYXl8SXRlcmFibGV8T2JqZWN0fSBjb2xsIC0gQSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7bnVtYmVyfSBsaW1pdCAtIFRoZSBtYXhpbXVtIG51bWJlciBvZiBhc3luYyBvcGVyYXRpb25zIGF0IGEgdGltZS5cbiAqIEBwYXJhbSB7QXN5bmNGdW5jdGlvbn0gaXRlcmF0ZWUgLSBBbiBhc3luYyBmdW5jdGlvbiB0byBhcHBseSB0byBlYWNoIGl0ZW0gaW5cbiAqIGBjb2xsYC5cbiAqIFRoZSBpdGVyYXRlZSBzaG91bGQgY29tcGxldGUgd2l0aCBhIGBrZXlgIHRvIGdyb3VwIHRoZSB2YWx1ZSB1bmRlci5cbiAqIEludm9rZWQgd2l0aCAodmFsdWUsIGNhbGxiYWNrKS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjYWxsYmFja10gLSBBIGNhbGxiYWNrIHdoaWNoIGlzIGNhbGxlZCB3aGVuIGFsbCBgaXRlcmF0ZWVgXG4gKiBmdW5jdGlvbnMgaGF2ZSBmaW5pc2hlZCwgb3IgYW4gZXJyb3Igb2NjdXJzLiBSZXN1bHQgaXMgYW4gYE9iamVjdGAgd2hvc2VzXG4gKiBwcm9wZXJ0aWVzIGFyZSBhcnJheXMgb2YgdmFsdWVzIHdoaWNoIHJldHVybmVkIHRoZSBjb3JyZXNwb25kaW5nIGtleS5cbiAqL1xudmFyIGdyb3VwQnlMaW1pdCA9IGZ1bmN0aW9uIChjb2xsLCBsaW1pdCwgaXRlcmF0ZWUsIGNhbGxiYWNrKSB7XG4gICAgY2FsbGJhY2sgPSBjYWxsYmFjayB8fCBub29wO1xuICAgIHZhciBfaXRlcmF0ZWUgPSB3cmFwQXN5bmMkMShpdGVyYXRlZSk7XG4gICAgbWFwTGltaXQoY29sbCwgbGltaXQsIGZ1bmN0aW9uICh2YWwsIGNhbGxiYWNrKSB7XG4gICAgICAgIF9pdGVyYXRlZSh2YWwsIGZ1bmN0aW9uIChlcnIsIGtleSkge1xuICAgICAgICAgICAgaWYgKGVycikgcmV0dXJuIGNhbGxiYWNrKGVycik7XG4gICAgICAgICAgICByZXR1cm4gY2FsbGJhY2sobnVsbCwgeyBrZXk6IGtleSwgdmFsOiB2YWwgfSk7XG4gICAgICAgIH0pO1xuICAgIH0sIGZ1bmN0aW9uIChlcnIsIG1hcFJlc3VsdHMpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IHt9O1xuICAgICAgICAvLyBmcm9tIE1ETiwgaGFuZGxlIG9iamVjdCBoYXZpbmcgYW4gYGhhc093blByb3BlcnR5YCBwcm9wXG4gICAgICAgIHZhciBoYXNPd25Qcm9wZXJ0eSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG5cbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtYXBSZXN1bHRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAobWFwUmVzdWx0c1tpXSkge1xuICAgICAgICAgICAgICAgIHZhciBrZXkgPSBtYXBSZXN1bHRzW2ldLmtleTtcbiAgICAgICAgICAgICAgICB2YXIgdmFsID0gbWFwUmVzdWx0c1tpXS52YWw7XG5cbiAgICAgICAgICAgICAgICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbChyZXN1bHQsIGtleSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0W2tleV0ucHVzaCh2YWwpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdFtrZXldID0gW3ZhbF07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGVyciwgcmVzdWx0KTtcbiAgICB9KTtcbn07XG5cbi8qKlxuICogUmV0dXJucyBhIG5ldyBvYmplY3QsIHdoZXJlIGVhY2ggdmFsdWUgY29ycmVzcG9uZHMgdG8gYW4gYXJyYXkgb2YgaXRlbXMsIGZyb21cbiAqIGBjb2xsYCwgdGhhdCByZXR1cm5lZCB0aGUgY29ycmVzcG9uZGluZyBrZXkuIFRoYXQgaXMsIHRoZSBrZXlzIG9mIHRoZSBvYmplY3RcbiAqIGNvcnJlc3BvbmQgdG8gdGhlIHZhbHVlcyBwYXNzZWQgdG8gdGhlIGBpdGVyYXRlZWAgY2FsbGJhY2suXG4gKlxuICogTm90ZTogU2luY2UgdGhpcyBmdW5jdGlvbiBhcHBsaWVzIHRoZSBgaXRlcmF0ZWVgIHRvIGVhY2ggaXRlbSBpbiBwYXJhbGxlbCxcbiAqIHRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0IHRoZSBgaXRlcmF0ZWVgIGZ1bmN0aW9ucyB3aWxsIGNvbXBsZXRlIGluIG9yZGVyLlxuICogSG93ZXZlciwgdGhlIHZhbHVlcyBmb3IgZWFjaCBrZXkgaW4gdGhlIGByZXN1bHRgIHdpbGwgYmUgaW4gdGhlIHNhbWUgb3JkZXIgYXNcbiAqIHRoZSBvcmlnaW5hbCBgY29sbGAuIEZvciBPYmplY3RzLCB0aGUgdmFsdWVzIHdpbGwgcm91Z2hseSBiZSBpbiB0aGUgb3JkZXIgb2ZcbiAqIHRoZSBvcmlnaW5hbCBPYmplY3RzJyBrZXlzIChidXQgdGhpcyBjYW4gdmFyeSBhY3Jvc3MgSmF2YVNjcmlwdCBlbmdpbmVzKS5cbiAqXG4gKiBAbmFtZSBncm91cEJ5XG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgbW9kdWxlOkNvbGxlY3Rpb25zXG4gKiBAbWV0aG9kXG4gKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICogQHBhcmFtIHtBcnJheXxJdGVyYWJsZXxPYmplY3R9IGNvbGwgLSBBIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtBc3luY0Z1bmN0aW9ufSBpdGVyYXRlZSAtIEFuIGFzeW5jIGZ1bmN0aW9uIHRvIGFwcGx5IHRvIGVhY2ggaXRlbSBpblxuICogYGNvbGxgLlxuICogVGhlIGl0ZXJhdGVlIHNob3VsZCBjb21wbGV0ZSB3aXRoIGEgYGtleWAgdG8gZ3JvdXAgdGhlIHZhbHVlIHVuZGVyLlxuICogSW52b2tlZCB3aXRoICh2YWx1ZSwgY2FsbGJhY2spLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2NhbGxiYWNrXSAtIEEgY2FsbGJhY2sgd2hpY2ggaXMgY2FsbGVkIHdoZW4gYWxsIGBpdGVyYXRlZWBcbiAqIGZ1bmN0aW9ucyBoYXZlIGZpbmlzaGVkLCBvciBhbiBlcnJvciBvY2N1cnMuIFJlc3VsdCBpcyBhbiBgT2JqZWN0YCB3aG9zZXNcbiAqIHByb3BlcnRpZXMgYXJlIGFycmF5cyBvZiB2YWx1ZXMgd2hpY2ggcmV0dXJuZWQgdGhlIGNvcnJlc3BvbmRpbmcga2V5LlxuICogQGV4YW1wbGVcbiAqXG4gKiBhc3luYy5ncm91cEJ5KFsndXNlcklkMScsICd1c2VySWQyJywgJ3VzZXJJZDMnXSwgZnVuY3Rpb24odXNlcklkLCBjYWxsYmFjaykge1xuICogICAgIGRiLmZpbmRCeUlkKHVzZXJJZCwgZnVuY3Rpb24oZXJyLCB1c2VyKSB7XG4gKiAgICAgICAgIGlmIChlcnIpIHJldHVybiBjYWxsYmFjayhlcnIpO1xuICogICAgICAgICByZXR1cm4gY2FsbGJhY2sobnVsbCwgdXNlci5hZ2UpO1xuICogICAgIH0pO1xuICogfSwgZnVuY3Rpb24oZXJyLCByZXN1bHQpIHtcbiAqICAgICAvLyByZXN1bHQgaXMgb2JqZWN0IGNvbnRhaW5pbmcgdGhlIHVzZXJJZHMgZ3JvdXBlZCBieSBhZ2VcbiAqICAgICAvLyBlLmcuIHsgMzA6IFsndXNlcklkMScsICd1c2VySWQzJ10sIDQyOiBbJ3VzZXJJZDInXX07XG4gKiB9KTtcbiAqL1xudmFyIGdyb3VwQnkgPSBkb0xpbWl0KGdyb3VwQnlMaW1pdCwgSW5maW5pdHkpO1xuXG4vKipcbiAqIFRoZSBzYW1lIGFzIFtgZ3JvdXBCeWBde0BsaW5rIG1vZHVsZTpDb2xsZWN0aW9ucy5ncm91cEJ5fSBidXQgcnVucyBvbmx5IGEgc2luZ2xlIGFzeW5jIG9wZXJhdGlvbiBhdCBhIHRpbWUuXG4gKlxuICogQG5hbWUgZ3JvdXBCeVNlcmllc1xuICogQHN0YXRpY1xuICogQG1lbWJlck9mIG1vZHVsZTpDb2xsZWN0aW9uc1xuICogQG1ldGhvZFxuICogQHNlZSBbYXN5bmMuZ3JvdXBCeV17QGxpbmsgbW9kdWxlOkNvbGxlY3Rpb25zLmdyb3VwQnl9XG4gKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICogQHBhcmFtIHtBcnJheXxJdGVyYWJsZXxPYmplY3R9IGNvbGwgLSBBIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtudW1iZXJ9IGxpbWl0IC0gVGhlIG1heGltdW0gbnVtYmVyIG9mIGFzeW5jIG9wZXJhdGlvbnMgYXQgYSB0aW1lLlxuICogQHBhcmFtIHtBc3luY0Z1bmN0aW9ufSBpdGVyYXRlZSAtIEFuIGFzeW5jIGZ1bmN0aW9uIHRvIGFwcGx5IHRvIGVhY2ggaXRlbSBpblxuICogYGNvbGxgLlxuICogVGhlIGl0ZXJhdGVlIHNob3VsZCBjb21wbGV0ZSB3aXRoIGEgYGtleWAgdG8gZ3JvdXAgdGhlIHZhbHVlIHVuZGVyLlxuICogSW52b2tlZCB3aXRoICh2YWx1ZSwgY2FsbGJhY2spLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2NhbGxiYWNrXSAtIEEgY2FsbGJhY2sgd2hpY2ggaXMgY2FsbGVkIHdoZW4gYWxsIGBpdGVyYXRlZWBcbiAqIGZ1bmN0aW9ucyBoYXZlIGZpbmlzaGVkLCBvciBhbiBlcnJvciBvY2N1cnMuIFJlc3VsdCBpcyBhbiBgT2JqZWN0YCB3aG9zZXNcbiAqIHByb3BlcnRpZXMgYXJlIGFycmF5cyBvZiB2YWx1ZXMgd2hpY2ggcmV0dXJuZWQgdGhlIGNvcnJlc3BvbmRpbmcga2V5LlxuICovXG52YXIgZ3JvdXBCeVNlcmllcyA9IGRvTGltaXQoZ3JvdXBCeUxpbWl0LCAxKTtcblxuLyoqXG4gKiBMb2dzIHRoZSByZXN1bHQgb2YgYW4gYGFzeW5jYCBmdW5jdGlvbiB0byB0aGUgYGNvbnNvbGVgLiBPbmx5IHdvcmtzIGluXG4gKiBOb2RlLmpzIG9yIGluIGJyb3dzZXJzIHRoYXQgc3VwcG9ydCBgY29uc29sZS5sb2dgIGFuZCBgY29uc29sZS5lcnJvcmAgKHN1Y2hcbiAqIGFzIEZGIGFuZCBDaHJvbWUpLiBJZiBtdWx0aXBsZSBhcmd1bWVudHMgYXJlIHJldHVybmVkIGZyb20gdGhlIGFzeW5jXG4gKiBmdW5jdGlvbiwgYGNvbnNvbGUubG9nYCBpcyBjYWxsZWQgb24gZWFjaCBhcmd1bWVudCBpbiBvcmRlci5cbiAqXG4gKiBAbmFtZSBsb2dcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6VXRpbHNcbiAqIEBtZXRob2RcbiAqIEBjYXRlZ29yeSBVdGlsXG4gKiBAcGFyYW0ge0FzeW5jRnVuY3Rpb259IGZ1bmN0aW9uIC0gVGhlIGZ1bmN0aW9uIHlvdSB3YW50IHRvIGV2ZW50dWFsbHkgYXBwbHlcbiAqIGFsbCBhcmd1bWVudHMgdG8uXG4gKiBAcGFyYW0gey4uLip9IGFyZ3VtZW50cy4uLiAtIEFueSBudW1iZXIgb2YgYXJndW1lbnRzIHRvIGFwcGx5IHRvIHRoZSBmdW5jdGlvbi5cbiAqIEBleGFtcGxlXG4gKlxuICogLy8gaW4gYSBtb2R1bGVcbiAqIHZhciBoZWxsbyA9IGZ1bmN0aW9uKG5hbWUsIGNhbGxiYWNrKSB7XG4gKiAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAqICAgICAgICAgY2FsbGJhY2sobnVsbCwgJ2hlbGxvICcgKyBuYW1lKTtcbiAqICAgICB9LCAxMDAwKTtcbiAqIH07XG4gKlxuICogLy8gaW4gdGhlIG5vZGUgcmVwbFxuICogbm9kZT4gYXN5bmMubG9nKGhlbGxvLCAnd29ybGQnKTtcbiAqICdoZWxsbyB3b3JsZCdcbiAqL1xudmFyIGxvZyA9IGNvbnNvbGVGdW5jKCdsb2cnKTtcblxuLyoqXG4gKiBUaGUgc2FtZSBhcyBbYG1hcFZhbHVlc2Bde0BsaW5rIG1vZHVsZTpDb2xsZWN0aW9ucy5tYXBWYWx1ZXN9IGJ1dCBydW5zIGEgbWF4aW11bSBvZiBgbGltaXRgIGFzeW5jIG9wZXJhdGlvbnMgYXQgYVxuICogdGltZS5cbiAqXG4gKiBAbmFtZSBtYXBWYWx1ZXNMaW1pdFxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIG1vZHVsZTpDb2xsZWN0aW9uc1xuICogQG1ldGhvZFxuICogQHNlZSBbYXN5bmMubWFwVmFsdWVzXXtAbGluayBtb2R1bGU6Q29sbGVjdGlvbnMubWFwVmFsdWVzfVxuICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmogLSBBIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtudW1iZXJ9IGxpbWl0IC0gVGhlIG1heGltdW0gbnVtYmVyIG9mIGFzeW5jIG9wZXJhdGlvbnMgYXQgYSB0aW1lLlxuICogQHBhcmFtIHtBc3luY0Z1bmN0aW9ufSBpdGVyYXRlZSAtIEEgZnVuY3Rpb24gdG8gYXBwbHkgdG8gZWFjaCB2YWx1ZSBhbmQga2V5XG4gKiBpbiBgY29sbGAuXG4gKiBUaGUgaXRlcmF0ZWUgc2hvdWxkIGNvbXBsZXRlIHdpdGggdGhlIHRyYW5zZm9ybWVkIHZhbHVlIGFzIGl0cyByZXN1bHQuXG4gKiBJbnZva2VkIHdpdGggKHZhbHVlLCBrZXksIGNhbGxiYWNrKS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjYWxsYmFja10gLSBBIGNhbGxiYWNrIHdoaWNoIGlzIGNhbGxlZCB3aGVuIGFsbCBgaXRlcmF0ZWVgXG4gKiBmdW5jdGlvbnMgaGF2ZSBmaW5pc2hlZCwgb3IgYW4gZXJyb3Igb2NjdXJzLiBgcmVzdWx0YCBpcyBhIG5ldyBvYmplY3QgY29uc2lzdGluZ1xuICogb2YgZWFjaCBrZXkgZnJvbSBgb2JqYCwgd2l0aCBlYWNoIHRyYW5zZm9ybWVkIHZhbHVlIG9uIHRoZSByaWdodC1oYW5kIHNpZGUuXG4gKiBJbnZva2VkIHdpdGggKGVyciwgcmVzdWx0KS5cbiAqL1xuZnVuY3Rpb24gbWFwVmFsdWVzTGltaXQob2JqLCBsaW1pdCwgaXRlcmF0ZWUsIGNhbGxiYWNrKSB7XG4gICAgY2FsbGJhY2sgPSBvbmNlKGNhbGxiYWNrIHx8IG5vb3ApO1xuICAgIHZhciBuZXdPYmogPSB7fTtcbiAgICB2YXIgX2l0ZXJhdGVlID0gd3JhcEFzeW5jJDEoaXRlcmF0ZWUpO1xuICAgIGVhY2hPZkxpbWl0KG9iaiwgbGltaXQsIGZ1bmN0aW9uICh2YWwsIGtleSwgbmV4dCkge1xuICAgICAgICBfaXRlcmF0ZWUodmFsLCBrZXksIGZ1bmN0aW9uIChlcnIsIHJlc3VsdCkge1xuICAgICAgICAgICAgaWYgKGVycikgcmV0dXJuIG5leHQoZXJyKTtcbiAgICAgICAgICAgIG5ld09ialtrZXldID0gcmVzdWx0O1xuICAgICAgICAgICAgbmV4dCgpO1xuICAgICAgICB9KTtcbiAgICB9LCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgIGNhbGxiYWNrKGVyciwgbmV3T2JqKTtcbiAgICB9KTtcbn1cblxuLyoqXG4gKiBBIHJlbGF0aXZlIG9mIFtgbWFwYF17QGxpbmsgbW9kdWxlOkNvbGxlY3Rpb25zLm1hcH0sIGRlc2lnbmVkIGZvciB1c2Ugd2l0aCBvYmplY3RzLlxuICpcbiAqIFByb2R1Y2VzIGEgbmV3IE9iamVjdCBieSBtYXBwaW5nIGVhY2ggdmFsdWUgb2YgYG9iamAgdGhyb3VnaCB0aGUgYGl0ZXJhdGVlYFxuICogZnVuY3Rpb24uIFRoZSBgaXRlcmF0ZWVgIGlzIGNhbGxlZCBlYWNoIGB2YWx1ZWAgYW5kIGBrZXlgIGZyb20gYG9iamAgYW5kIGFcbiAqIGNhbGxiYWNrIGZvciB3aGVuIGl0IGhhcyBmaW5pc2hlZCBwcm9jZXNzaW5nLiBFYWNoIG9mIHRoZXNlIGNhbGxiYWNrcyB0YWtlc1xuICogdHdvIGFyZ3VtZW50czogYW4gYGVycm9yYCwgYW5kIHRoZSB0cmFuc2Zvcm1lZCBpdGVtIGZyb20gYG9iamAuIElmIGBpdGVyYXRlZWBcbiAqIHBhc3NlcyBhbiBlcnJvciB0byBpdHMgY2FsbGJhY2ssIHRoZSBtYWluIGBjYWxsYmFja2AgKGZvciB0aGUgYG1hcFZhbHVlc2BcbiAqIGZ1bmN0aW9uKSBpcyBpbW1lZGlhdGVseSBjYWxsZWQgd2l0aCB0aGUgZXJyb3IuXG4gKlxuICogTm90ZSwgdGhlIG9yZGVyIG9mIHRoZSBrZXlzIGluIHRoZSByZXN1bHQgaXMgbm90IGd1YXJhbnRlZWQuICBUaGUga2V5cyB3aWxsXG4gKiBiZSByb3VnaGx5IGluIHRoZSBvcmRlciB0aGV5IGNvbXBsZXRlLCAoYnV0IHRoaXMgaXMgdmVyeSBlbmdpbmUtc3BlY2lmaWMpXG4gKlxuICogQG5hbWUgbWFwVmFsdWVzXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgbW9kdWxlOkNvbGxlY3Rpb25zXG4gKiBAbWV0aG9kXG4gKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICogQHBhcmFtIHtPYmplY3R9IG9iaiAtIEEgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0FzeW5jRnVuY3Rpb259IGl0ZXJhdGVlIC0gQSBmdW5jdGlvbiB0byBhcHBseSB0byBlYWNoIHZhbHVlIGFuZCBrZXlcbiAqIGluIGBjb2xsYC5cbiAqIFRoZSBpdGVyYXRlZSBzaG91bGQgY29tcGxldGUgd2l0aCB0aGUgdHJhbnNmb3JtZWQgdmFsdWUgYXMgaXRzIHJlc3VsdC5cbiAqIEludm9rZWQgd2l0aCAodmFsdWUsIGtleSwgY2FsbGJhY2spLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2NhbGxiYWNrXSAtIEEgY2FsbGJhY2sgd2hpY2ggaXMgY2FsbGVkIHdoZW4gYWxsIGBpdGVyYXRlZWBcbiAqIGZ1bmN0aW9ucyBoYXZlIGZpbmlzaGVkLCBvciBhbiBlcnJvciBvY2N1cnMuIGByZXN1bHRgIGlzIGEgbmV3IG9iamVjdCBjb25zaXN0aW5nXG4gKiBvZiBlYWNoIGtleSBmcm9tIGBvYmpgLCB3aXRoIGVhY2ggdHJhbnNmb3JtZWQgdmFsdWUgb24gdGhlIHJpZ2h0LWhhbmQgc2lkZS5cbiAqIEludm9rZWQgd2l0aCAoZXJyLCByZXN1bHQpLlxuICogQGV4YW1wbGVcbiAqXG4gKiBhc3luYy5tYXBWYWx1ZXMoe1xuICogICAgIGYxOiAnZmlsZTEnLFxuICogICAgIGYyOiAnZmlsZTInLFxuICogICAgIGYzOiAnZmlsZTMnXG4gKiB9LCBmdW5jdGlvbiAoZmlsZSwga2V5LCBjYWxsYmFjaykge1xuICogICBmcy5zdGF0KGZpbGUsIGNhbGxiYWNrKTtcbiAqIH0sIGZ1bmN0aW9uKGVyciwgcmVzdWx0KSB7XG4gKiAgICAgLy8gcmVzdWx0IGlzIG5vdyBhIG1hcCBvZiBzdGF0cyBmb3IgZWFjaCBmaWxlLCBlLmcuXG4gKiAgICAgLy8ge1xuICogICAgIC8vICAgICBmMTogW3N0YXRzIGZvciBmaWxlMV0sXG4gKiAgICAgLy8gICAgIGYyOiBbc3RhdHMgZm9yIGZpbGUyXSxcbiAqICAgICAvLyAgICAgZjM6IFtzdGF0cyBmb3IgZmlsZTNdXG4gKiAgICAgLy8gfVxuICogfSk7XG4gKi9cblxudmFyIG1hcFZhbHVlcyA9IGRvTGltaXQobWFwVmFsdWVzTGltaXQsIEluZmluaXR5KTtcblxuLyoqXG4gKiBUaGUgc2FtZSBhcyBbYG1hcFZhbHVlc2Bde0BsaW5rIG1vZHVsZTpDb2xsZWN0aW9ucy5tYXBWYWx1ZXN9IGJ1dCBydW5zIG9ubHkgYSBzaW5nbGUgYXN5bmMgb3BlcmF0aW9uIGF0IGEgdGltZS5cbiAqXG4gKiBAbmFtZSBtYXBWYWx1ZXNTZXJpZXNcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Q29sbGVjdGlvbnNcbiAqIEBtZXRob2RcbiAqIEBzZWUgW2FzeW5jLm1hcFZhbHVlc117QGxpbmsgbW9kdWxlOkNvbGxlY3Rpb25zLm1hcFZhbHVlc31cbiAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqIC0gQSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7QXN5bmNGdW5jdGlvbn0gaXRlcmF0ZWUgLSBBIGZ1bmN0aW9uIHRvIGFwcGx5IHRvIGVhY2ggdmFsdWUgYW5kIGtleVxuICogaW4gYGNvbGxgLlxuICogVGhlIGl0ZXJhdGVlIHNob3VsZCBjb21wbGV0ZSB3aXRoIHRoZSB0cmFuc2Zvcm1lZCB2YWx1ZSBhcyBpdHMgcmVzdWx0LlxuICogSW52b2tlZCB3aXRoICh2YWx1ZSwga2V5LCBjYWxsYmFjaykuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY2FsbGJhY2tdIC0gQSBjYWxsYmFjayB3aGljaCBpcyBjYWxsZWQgd2hlbiBhbGwgYGl0ZXJhdGVlYFxuICogZnVuY3Rpb25zIGhhdmUgZmluaXNoZWQsIG9yIGFuIGVycm9yIG9jY3Vycy4gYHJlc3VsdGAgaXMgYSBuZXcgb2JqZWN0IGNvbnNpc3RpbmdcbiAqIG9mIGVhY2gga2V5IGZyb20gYG9iamAsIHdpdGggZWFjaCB0cmFuc2Zvcm1lZCB2YWx1ZSBvbiB0aGUgcmlnaHQtaGFuZCBzaWRlLlxuICogSW52b2tlZCB3aXRoIChlcnIsIHJlc3VsdCkuXG4gKi9cbnZhciBtYXBWYWx1ZXNTZXJpZXMgPSBkb0xpbWl0KG1hcFZhbHVlc0xpbWl0LCAxKTtcblxuZnVuY3Rpb24gaGFzKG9iaiwga2V5KSB7XG4gICAgcmV0dXJuIGtleSBpbiBvYmo7XG59XG5cbi8qKlxuICogQ2FjaGVzIHRoZSByZXN1bHRzIG9mIGFuIGFzeW5jIGZ1bmN0aW9uLiBXaGVuIGNyZWF0aW5nIGEgaGFzaCB0byBzdG9yZVxuICogZnVuY3Rpb24gcmVzdWx0cyBhZ2FpbnN0LCB0aGUgY2FsbGJhY2sgaXMgb21pdHRlZCBmcm9tIHRoZSBoYXNoIGFuZCBhblxuICogb3B0aW9uYWwgaGFzaCBmdW5jdGlvbiBjYW4gYmUgdXNlZC5cbiAqXG4gKiBJZiBubyBoYXNoIGZ1bmN0aW9uIGlzIHNwZWNpZmllZCwgdGhlIGZpcnN0IGFyZ3VtZW50IGlzIHVzZWQgYXMgYSBoYXNoIGtleSxcbiAqIHdoaWNoIG1heSB3b3JrIHJlYXNvbmFibHkgaWYgaXQgaXMgYSBzdHJpbmcgb3IgYSBkYXRhIHR5cGUgdGhhdCBjb252ZXJ0cyB0byBhXG4gKiBkaXN0aW5jdCBzdHJpbmcuIE5vdGUgdGhhdCBvYmplY3RzIGFuZCBhcnJheXMgd2lsbCBub3QgYmVoYXZlIHJlYXNvbmFibHkuXG4gKiBOZWl0aGVyIHdpbGwgY2FzZXMgd2hlcmUgdGhlIG90aGVyIGFyZ3VtZW50cyBhcmUgc2lnbmlmaWNhbnQuIEluIHN1Y2ggY2FzZXMsXG4gKiBzcGVjaWZ5IHlvdXIgb3duIGhhc2ggZnVuY3Rpb24uXG4gKlxuICogVGhlIGNhY2hlIG9mIHJlc3VsdHMgaXMgZXhwb3NlZCBhcyB0aGUgYG1lbW9gIHByb3BlcnR5IG9mIHRoZSBmdW5jdGlvblxuICogcmV0dXJuZWQgYnkgYG1lbW9pemVgLlxuICpcbiAqIEBuYW1lIG1lbW9pemVcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6VXRpbHNcbiAqIEBtZXRob2RcbiAqIEBjYXRlZ29yeSBVdGlsXG4gKiBAcGFyYW0ge0FzeW5jRnVuY3Rpb259IGZuIC0gVGhlIGFzeW5jIGZ1bmN0aW9uIHRvIHByb3h5IGFuZCBjYWNoZSByZXN1bHRzIGZyb20uXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBoYXNoZXIgLSBBbiBvcHRpb25hbCBmdW5jdGlvbiBmb3IgZ2VuZXJhdGluZyBhIGN1c3RvbSBoYXNoXG4gKiBmb3Igc3RvcmluZyByZXN1bHRzLiBJdCBoYXMgYWxsIHRoZSBhcmd1bWVudHMgYXBwbGllZCB0byBpdCBhcGFydCBmcm9tIHRoZVxuICogY2FsbGJhY2ssIGFuZCBtdXN0IGJlIHN5bmNocm9ub3VzLlxuICogQHJldHVybnMge0FzeW5jRnVuY3Rpb259IGEgbWVtb2l6ZWQgdmVyc2lvbiBvZiBgZm5gXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBzbG93X2ZuID0gZnVuY3Rpb24obmFtZSwgY2FsbGJhY2spIHtcbiAqICAgICAvLyBkbyBzb21ldGhpbmdcbiAqICAgICBjYWxsYmFjayhudWxsLCByZXN1bHQpO1xuICogfTtcbiAqIHZhciBmbiA9IGFzeW5jLm1lbW9pemUoc2xvd19mbik7XG4gKlxuICogLy8gZm4gY2FuIG5vdyBiZSB1c2VkIGFzIGlmIGl0IHdlcmUgc2xvd19mblxuICogZm4oJ3NvbWUgbmFtZScsIGZ1bmN0aW9uKCkge1xuICogICAgIC8vIGNhbGxiYWNrXG4gKiB9KTtcbiAqL1xuZnVuY3Rpb24gbWVtb2l6ZShmbiwgaGFzaGVyKSB7XG4gICAgdmFyIG1lbW8gPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgIHZhciBxdWV1ZXMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgIGhhc2hlciA9IGhhc2hlciB8fCBpZGVudGl0eTtcbiAgICB2YXIgX2ZuID0gd3JhcEFzeW5jJDEoZm4pO1xuICAgIHZhciBtZW1vaXplZCA9IGluaXRpYWxQYXJhbXMoZnVuY3Rpb24gbWVtb2l6ZWQoYXJncywgY2FsbGJhY2spIHtcbiAgICAgICAgdmFyIGtleSA9IGhhc2hlci5hcHBseShudWxsLCBhcmdzKTtcbiAgICAgICAgaWYgKGhhcyhtZW1vLCBrZXkpKSB7XG4gICAgICAgICAgICBzZXRJbW1lZGlhdGUkMShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgY2FsbGJhY2suYXBwbHkobnVsbCwgbWVtb1trZXldKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKGhhcyhxdWV1ZXMsIGtleSkpIHtcbiAgICAgICAgICAgIHF1ZXVlc1trZXldLnB1c2goY2FsbGJhY2spO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcXVldWVzW2tleV0gPSBbY2FsbGJhY2tdO1xuICAgICAgICAgICAgX2ZuLmFwcGx5KG51bGwsIGFyZ3MuY29uY2F0KHJlc3QoZnVuY3Rpb24gKGFyZ3MpIHtcbiAgICAgICAgICAgICAgICBtZW1vW2tleV0gPSBhcmdzO1xuICAgICAgICAgICAgICAgIHZhciBxID0gcXVldWVzW2tleV07XG4gICAgICAgICAgICAgICAgZGVsZXRlIHF1ZXVlc1trZXldO1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwLCBsID0gcS5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgcVtpXS5hcHBseShudWxsLCBhcmdzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSkpO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgbWVtb2l6ZWQubWVtbyA9IG1lbW87XG4gICAgbWVtb2l6ZWQudW5tZW1vaXplZCA9IGZuO1xuICAgIHJldHVybiBtZW1vaXplZDtcbn1cblxuLyoqXG4gKiBDYWxscyBgY2FsbGJhY2tgIG9uIGEgbGF0ZXIgbG9vcCBhcm91bmQgdGhlIGV2ZW50IGxvb3AuIEluIE5vZGUuanMgdGhpcyBqdXN0XG4gKiBjYWxscyBgc2V0SW1tZWRpYXRlYC4gIEluIHRoZSBicm93c2VyIGl0IHdpbGwgdXNlIGBzZXRJbW1lZGlhdGVgIGlmXG4gKiBhdmFpbGFibGUsIG90aGVyd2lzZSBgc2V0VGltZW91dChjYWxsYmFjaywgMClgLCB3aGljaCBtZWFucyBvdGhlciBoaWdoZXJcbiAqIHByaW9yaXR5IGV2ZW50cyBtYXkgcHJlY2VkZSB0aGUgZXhlY3V0aW9uIG9mIGBjYWxsYmFja2AuXG4gKlxuICogVGhpcyBpcyB1c2VkIGludGVybmFsbHkgZm9yIGJyb3dzZXItY29tcGF0aWJpbGl0eSBwdXJwb3Nlcy5cbiAqXG4gKiBAbmFtZSBuZXh0VGlja1xuICogQHN0YXRpY1xuICogQG1lbWJlck9mIG1vZHVsZTpVdGlsc1xuICogQG1ldGhvZFxuICogQGFsaWFzIHNldEltbWVkaWF0ZVxuICogQGNhdGVnb3J5IFV0aWxcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGNhbGxiYWNrIC0gVGhlIGZ1bmN0aW9uIHRvIGNhbGwgb24gYSBsYXRlciBsb29wIGFyb3VuZFxuICogdGhlIGV2ZW50IGxvb3AuIEludm9rZWQgd2l0aCAoYXJncy4uLikuXG4gKiBAcGFyYW0gey4uLip9IGFyZ3MuLi4gLSBhbnkgbnVtYmVyIG9mIGFkZGl0aW9uYWwgYXJndW1lbnRzIHRvIHBhc3MgdG8gdGhlXG4gKiBjYWxsYmFjayBvbiB0aGUgbmV4dCB0aWNrLlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgY2FsbF9vcmRlciA9IFtdO1xuICogYXN5bmMubmV4dFRpY2soZnVuY3Rpb24oKSB7XG4gKiAgICAgY2FsbF9vcmRlci5wdXNoKCd0d28nKTtcbiAqICAgICAvLyBjYWxsX29yZGVyIG5vdyBlcXVhbHMgWydvbmUnLCd0d28nXVxuICogfSk7XG4gKiBjYWxsX29yZGVyLnB1c2goJ29uZScpO1xuICpcbiAqIGFzeW5jLnNldEltbWVkaWF0ZShmdW5jdGlvbiAoYSwgYiwgYykge1xuICogICAgIC8vIGEsIGIsIGFuZCBjIGVxdWFsIDEsIDIsIGFuZCAzXG4gKiB9LCAxLCAyLCAzKTtcbiAqL1xudmFyIF9kZWZlciQxO1xuXG5pZiAoaGFzTmV4dFRpY2spIHtcbiAgICBfZGVmZXIkMSA9IHByb2Nlc3MubmV4dFRpY2s7XG59IGVsc2UgaWYgKGhhc1NldEltbWVkaWF0ZSkge1xuICAgIF9kZWZlciQxID0gc2V0SW1tZWRpYXRlO1xufSBlbHNlIHtcbiAgICBfZGVmZXIkMSA9IGZhbGxiYWNrO1xufVxuXG52YXIgbmV4dFRpY2sgPSB3cmFwKF9kZWZlciQxKTtcblxuZnVuY3Rpb24gX3BhcmFsbGVsKGVhY2hmbiwgdGFza3MsIGNhbGxiYWNrKSB7XG4gICAgY2FsbGJhY2sgPSBjYWxsYmFjayB8fCBub29wO1xuICAgIHZhciByZXN1bHRzID0gaXNBcnJheUxpa2UodGFza3MpID8gW10gOiB7fTtcblxuICAgIGVhY2hmbih0YXNrcywgZnVuY3Rpb24gKHRhc2ssIGtleSwgY2FsbGJhY2spIHtcbiAgICAgICAgd3JhcEFzeW5jJDEodGFzaykocmVzdChmdW5jdGlvbiAoZXJyLCBhcmdzKSB7XG4gICAgICAgICAgICBpZiAoYXJncy5sZW5ndGggPD0gMSkge1xuICAgICAgICAgICAgICAgIGFyZ3MgPSBhcmdzWzBdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzdWx0c1trZXldID0gYXJncztcbiAgICAgICAgICAgIGNhbGxiYWNrKGVycik7XG4gICAgICAgIH0pKTtcbiAgICB9LCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgIGNhbGxiYWNrKGVyciwgcmVzdWx0cyk7XG4gICAgfSk7XG59XG5cbi8qKlxuICogUnVuIHRoZSBgdGFza3NgIGNvbGxlY3Rpb24gb2YgZnVuY3Rpb25zIGluIHBhcmFsbGVsLCB3aXRob3V0IHdhaXRpbmcgdW50aWxcbiAqIHRoZSBwcmV2aW91cyBmdW5jdGlvbiBoYXMgY29tcGxldGVkLiBJZiBhbnkgb2YgdGhlIGZ1bmN0aW9ucyBwYXNzIGFuIGVycm9yIHRvXG4gKiBpdHMgY2FsbGJhY2ssIHRoZSBtYWluIGBjYWxsYmFja2AgaXMgaW1tZWRpYXRlbHkgY2FsbGVkIHdpdGggdGhlIHZhbHVlIG9mIHRoZVxuICogZXJyb3IuIE9uY2UgdGhlIGB0YXNrc2AgaGF2ZSBjb21wbGV0ZWQsIHRoZSByZXN1bHRzIGFyZSBwYXNzZWQgdG8gdGhlIGZpbmFsXG4gKiBgY2FsbGJhY2tgIGFzIGFuIGFycmF5LlxuICpcbiAqICoqTm90ZToqKiBgcGFyYWxsZWxgIGlzIGFib3V0IGtpY2tpbmctb2ZmIEkvTyB0YXNrcyBpbiBwYXJhbGxlbCwgbm90IGFib3V0XG4gKiBwYXJhbGxlbCBleGVjdXRpb24gb2YgY29kZS4gIElmIHlvdXIgdGFza3MgZG8gbm90IHVzZSBhbnkgdGltZXJzIG9yIHBlcmZvcm1cbiAqIGFueSBJL08sIHRoZXkgd2lsbCBhY3R1YWxseSBiZSBleGVjdXRlZCBpbiBzZXJpZXMuICBBbnkgc3luY2hyb25vdXMgc2V0dXBcbiAqIHNlY3Rpb25zIGZvciBlYWNoIHRhc2sgd2lsbCBoYXBwZW4gb25lIGFmdGVyIHRoZSBvdGhlci4gIEphdmFTY3JpcHQgcmVtYWluc1xuICogc2luZ2xlLXRocmVhZGVkLlxuICpcbiAqICoqSGludDoqKiBVc2UgW2ByZWZsZWN0YF17QGxpbmsgbW9kdWxlOlV0aWxzLnJlZmxlY3R9IHRvIGNvbnRpbnVlIHRoZVxuICogZXhlY3V0aW9uIG9mIG90aGVyIHRhc2tzIHdoZW4gYSB0YXNrIGZhaWxzLlxuICpcbiAqIEl0IGlzIGFsc28gcG9zc2libGUgdG8gdXNlIGFuIG9iamVjdCBpbnN0ZWFkIG9mIGFuIGFycmF5LiBFYWNoIHByb3BlcnR5IHdpbGxcbiAqIGJlIHJ1biBhcyBhIGZ1bmN0aW9uIGFuZCB0aGUgcmVzdWx0cyB3aWxsIGJlIHBhc3NlZCB0byB0aGUgZmluYWwgYGNhbGxiYWNrYFxuICogYXMgYW4gb2JqZWN0IGluc3RlYWQgb2YgYW4gYXJyYXkuIFRoaXMgY2FuIGJlIGEgbW9yZSByZWFkYWJsZSB3YXkgb2YgaGFuZGxpbmdcbiAqIHJlc3VsdHMgZnJvbSB7QGxpbmsgYXN5bmMucGFyYWxsZWx9LlxuICpcbiAqIEBuYW1lIHBhcmFsbGVsXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgbW9kdWxlOkNvbnRyb2xGbG93XG4gKiBAbWV0aG9kXG4gKiBAY2F0ZWdvcnkgQ29udHJvbCBGbG93XG4gKiBAcGFyYW0ge0FycmF5fEl0ZXJhYmxlfE9iamVjdH0gdGFza3MgLSBBIGNvbGxlY3Rpb24gb2ZcbiAqIFthc3luYyBmdW5jdGlvbnNde0BsaW5rIEFzeW5jRnVuY3Rpb259IHRvIHJ1bi5cbiAqIEVhY2ggYXN5bmMgZnVuY3Rpb24gY2FuIGNvbXBsZXRlIHdpdGggYW55IG51bWJlciBvZiBvcHRpb25hbCBgcmVzdWx0YCB2YWx1ZXMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY2FsbGJhY2tdIC0gQW4gb3B0aW9uYWwgY2FsbGJhY2sgdG8gcnVuIG9uY2UgYWxsIHRoZVxuICogZnVuY3Rpb25zIGhhdmUgY29tcGxldGVkIHN1Y2Nlc3NmdWxseS4gVGhpcyBmdW5jdGlvbiBnZXRzIGEgcmVzdWx0cyBhcnJheVxuICogKG9yIG9iamVjdCkgY29udGFpbmluZyBhbGwgdGhlIHJlc3VsdCBhcmd1bWVudHMgcGFzc2VkIHRvIHRoZSB0YXNrIGNhbGxiYWNrcy5cbiAqIEludm9rZWQgd2l0aCAoZXJyLCByZXN1bHRzKS5cbiAqXG4gKiBAZXhhbXBsZVxuICogYXN5bmMucGFyYWxsZWwoW1xuICogICAgIGZ1bmN0aW9uKGNhbGxiYWNrKSB7XG4gKiAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gKiAgICAgICAgICAgICBjYWxsYmFjayhudWxsLCAnb25lJyk7XG4gKiAgICAgICAgIH0sIDIwMCk7XG4gKiAgICAgfSxcbiAqICAgICBmdW5jdGlvbihjYWxsYmFjaykge1xuICogICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICogICAgICAgICAgICAgY2FsbGJhY2sobnVsbCwgJ3R3bycpO1xuICogICAgICAgICB9LCAxMDApO1xuICogICAgIH1cbiAqIF0sXG4gKiAvLyBvcHRpb25hbCBjYWxsYmFja1xuICogZnVuY3Rpb24oZXJyLCByZXN1bHRzKSB7XG4gKiAgICAgLy8gdGhlIHJlc3VsdHMgYXJyYXkgd2lsbCBlcXVhbCBbJ29uZScsJ3R3byddIGV2ZW4gdGhvdWdoXG4gKiAgICAgLy8gdGhlIHNlY29uZCBmdW5jdGlvbiBoYWQgYSBzaG9ydGVyIHRpbWVvdXQuXG4gKiB9KTtcbiAqXG4gKiAvLyBhbiBleGFtcGxlIHVzaW5nIGFuIG9iamVjdCBpbnN0ZWFkIG9mIGFuIGFycmF5XG4gKiBhc3luYy5wYXJhbGxlbCh7XG4gKiAgICAgb25lOiBmdW5jdGlvbihjYWxsYmFjaykge1xuICogICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICogICAgICAgICAgICAgY2FsbGJhY2sobnVsbCwgMSk7XG4gKiAgICAgICAgIH0sIDIwMCk7XG4gKiAgICAgfSxcbiAqICAgICB0d286IGZ1bmN0aW9uKGNhbGxiYWNrKSB7XG4gKiAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gKiAgICAgICAgICAgICBjYWxsYmFjayhudWxsLCAyKTtcbiAqICAgICAgICAgfSwgMTAwKTtcbiAqICAgICB9XG4gKiB9LCBmdW5jdGlvbihlcnIsIHJlc3VsdHMpIHtcbiAqICAgICAvLyByZXN1bHRzIGlzIG5vdyBlcXVhbHMgdG86IHtvbmU6IDEsIHR3bzogMn1cbiAqIH0pO1xuICovXG5mdW5jdGlvbiBwYXJhbGxlbExpbWl0KHRhc2tzLCBjYWxsYmFjaykge1xuICBfcGFyYWxsZWwoZWFjaE9mLCB0YXNrcywgY2FsbGJhY2spO1xufVxuXG4vKipcbiAqIFRoZSBzYW1lIGFzIFtgcGFyYWxsZWxgXXtAbGluayBtb2R1bGU6Q29udHJvbEZsb3cucGFyYWxsZWx9IGJ1dCBydW5zIGEgbWF4aW11bSBvZiBgbGltaXRgIGFzeW5jIG9wZXJhdGlvbnMgYXQgYVxuICogdGltZS5cbiAqXG4gKiBAbmFtZSBwYXJhbGxlbExpbWl0XG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgbW9kdWxlOkNvbnRyb2xGbG93XG4gKiBAbWV0aG9kXG4gKiBAc2VlIFthc3luYy5wYXJhbGxlbF17QGxpbmsgbW9kdWxlOkNvbnRyb2xGbG93LnBhcmFsbGVsfVxuICogQGNhdGVnb3J5IENvbnRyb2wgRmxvd1xuICogQHBhcmFtIHtBcnJheXxJdGVyYWJsZXxPYmplY3R9IHRhc2tzIC0gQSBjb2xsZWN0aW9uIG9mXG4gKiBbYXN5bmMgZnVuY3Rpb25zXXtAbGluayBBc3luY0Z1bmN0aW9ufSB0byBydW4uXG4gKiBFYWNoIGFzeW5jIGZ1bmN0aW9uIGNhbiBjb21wbGV0ZSB3aXRoIGFueSBudW1iZXIgb2Ygb3B0aW9uYWwgYHJlc3VsdGAgdmFsdWVzLlxuICogQHBhcmFtIHtudW1iZXJ9IGxpbWl0IC0gVGhlIG1heGltdW0gbnVtYmVyIG9mIGFzeW5jIG9wZXJhdGlvbnMgYXQgYSB0aW1lLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2NhbGxiYWNrXSAtIEFuIG9wdGlvbmFsIGNhbGxiYWNrIHRvIHJ1biBvbmNlIGFsbCB0aGVcbiAqIGZ1bmN0aW9ucyBoYXZlIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuIFRoaXMgZnVuY3Rpb24gZ2V0cyBhIHJlc3VsdHMgYXJyYXlcbiAqIChvciBvYmplY3QpIGNvbnRhaW5pbmcgYWxsIHRoZSByZXN1bHQgYXJndW1lbnRzIHBhc3NlZCB0byB0aGUgdGFzayBjYWxsYmFja3MuXG4gKiBJbnZva2VkIHdpdGggKGVyciwgcmVzdWx0cykuXG4gKi9cbmZ1bmN0aW9uIHBhcmFsbGVsTGltaXQkMSh0YXNrcywgbGltaXQsIGNhbGxiYWNrKSB7XG4gIF9wYXJhbGxlbChfZWFjaE9mTGltaXQobGltaXQpLCB0YXNrcywgY2FsbGJhY2spO1xufVxuXG4vKipcbiAqIEEgcXVldWUgb2YgdGFza3MgZm9yIHRoZSB3b3JrZXIgZnVuY3Rpb24gdG8gY29tcGxldGUuXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBRdWV1ZU9iamVjdFxuICogQG1lbWJlck9mIG1vZHVsZTpDb250cm9sRmxvd1xuICogQHByb3BlcnR5IHtGdW5jdGlvbn0gbGVuZ3RoIC0gYSBmdW5jdGlvbiByZXR1cm5pbmcgdGhlIG51bWJlciBvZiBpdGVtc1xuICogd2FpdGluZyB0byBiZSBwcm9jZXNzZWQuIEludm9rZSB3aXRoIGBxdWV1ZS5sZW5ndGgoKWAuXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IHN0YXJ0ZWQgLSBhIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIG9yIG5vdCBhbnlcbiAqIGl0ZW1zIGhhdmUgYmVlbiBwdXNoZWQgYW5kIHByb2Nlc3NlZCBieSB0aGUgcXVldWUuXG4gKiBAcHJvcGVydHkge0Z1bmN0aW9ufSBydW5uaW5nIC0gYSBmdW5jdGlvbiByZXR1cm5pbmcgdGhlIG51bWJlciBvZiBpdGVtc1xuICogY3VycmVudGx5IGJlaW5nIHByb2Nlc3NlZC4gSW52b2tlIHdpdGggYHF1ZXVlLnJ1bm5pbmcoKWAuXG4gKiBAcHJvcGVydHkge0Z1bmN0aW9ufSB3b3JrZXJzTGlzdCAtIGEgZnVuY3Rpb24gcmV0dXJuaW5nIHRoZSBhcnJheSBvZiBpdGVtc1xuICogY3VycmVudGx5IGJlaW5nIHByb2Nlc3NlZC4gSW52b2tlIHdpdGggYHF1ZXVlLndvcmtlcnNMaXN0KClgLlxuICogQHByb3BlcnR5IHtGdW5jdGlvbn0gaWRsZSAtIGEgZnVuY3Rpb24gcmV0dXJuaW5nIGZhbHNlIGlmIHRoZXJlIGFyZSBpdGVtc1xuICogd2FpdGluZyBvciBiZWluZyBwcm9jZXNzZWQsIG9yIHRydWUgaWYgbm90LiBJbnZva2Ugd2l0aCBgcXVldWUuaWRsZSgpYC5cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBjb25jdXJyZW5jeSAtIGFuIGludGVnZXIgZm9yIGRldGVybWluaW5nIGhvdyBtYW55IGB3b3JrZXJgXG4gKiBmdW5jdGlvbnMgc2hvdWxkIGJlIHJ1biBpbiBwYXJhbGxlbC4gVGhpcyBwcm9wZXJ0eSBjYW4gYmUgY2hhbmdlZCBhZnRlciBhXG4gKiBgcXVldWVgIGlzIGNyZWF0ZWQgdG8gYWx0ZXIgdGhlIGNvbmN1cnJlbmN5IG9uLXRoZS1mbHkuXG4gKiBAcHJvcGVydHkge0Z1bmN0aW9ufSBwdXNoIC0gYWRkIGEgbmV3IHRhc2sgdG8gdGhlIGBxdWV1ZWAuIENhbGxzIGBjYWxsYmFja2BcbiAqIG9uY2UgdGhlIGB3b3JrZXJgIGhhcyBmaW5pc2hlZCBwcm9jZXNzaW5nIHRoZSB0YXNrLiBJbnN0ZWFkIG9mIGEgc2luZ2xlIHRhc2ssXG4gKiBhIGB0YXNrc2AgYXJyYXkgY2FuIGJlIHN1Ym1pdHRlZC4gVGhlIHJlc3BlY3RpdmUgY2FsbGJhY2sgaXMgdXNlZCBmb3IgZXZlcnlcbiAqIHRhc2sgaW4gdGhlIGxpc3QuIEludm9rZSB3aXRoIGBxdWV1ZS5wdXNoKHRhc2ssIFtjYWxsYmFja10pYCxcbiAqIEBwcm9wZXJ0eSB7RnVuY3Rpb259IHVuc2hpZnQgLSBhZGQgYSBuZXcgdGFzayB0byB0aGUgZnJvbnQgb2YgdGhlIGBxdWV1ZWAuXG4gKiBJbnZva2Ugd2l0aCBgcXVldWUudW5zaGlmdCh0YXNrLCBbY2FsbGJhY2tdKWAuXG4gKiBAcHJvcGVydHkge0Z1bmN0aW9ufSBzYXR1cmF0ZWQgLSBhIGNhbGxiYWNrIHRoYXQgaXMgY2FsbGVkIHdoZW4gdGhlIG51bWJlciBvZlxuICogcnVubmluZyB3b3JrZXJzIGhpdHMgdGhlIGBjb25jdXJyZW5jeWAgbGltaXQsIGFuZCBmdXJ0aGVyIHRhc2tzIHdpbGwgYmVcbiAqIHF1ZXVlZC5cbiAqIEBwcm9wZXJ0eSB7RnVuY3Rpb259IHVuc2F0dXJhdGVkIC0gYSBjYWxsYmFjayB0aGF0IGlzIGNhbGxlZCB3aGVuIHRoZSBudW1iZXJcbiAqIG9mIHJ1bm5pbmcgd29ya2VycyBpcyBsZXNzIHRoYW4gdGhlIGBjb25jdXJyZW5jeWAgJiBgYnVmZmVyYCBsaW1pdHMsIGFuZFxuICogZnVydGhlciB0YXNrcyB3aWxsIG5vdCBiZSBxdWV1ZWQuXG4gKiBAcHJvcGVydHkge251bWJlcn0gYnVmZmVyIC0gQSBtaW5pbXVtIHRocmVzaG9sZCBidWZmZXIgaW4gb3JkZXIgdG8gc2F5IHRoYXRcbiAqIHRoZSBgcXVldWVgIGlzIGB1bnNhdHVyYXRlZGAuXG4gKiBAcHJvcGVydHkge0Z1bmN0aW9ufSBlbXB0eSAtIGEgY2FsbGJhY2sgdGhhdCBpcyBjYWxsZWQgd2hlbiB0aGUgbGFzdCBpdGVtXG4gKiBmcm9tIHRoZSBgcXVldWVgIGlzIGdpdmVuIHRvIGEgYHdvcmtlcmAuXG4gKiBAcHJvcGVydHkge0Z1bmN0aW9ufSBkcmFpbiAtIGEgY2FsbGJhY2sgdGhhdCBpcyBjYWxsZWQgd2hlbiB0aGUgbGFzdCBpdGVtXG4gKiBmcm9tIHRoZSBgcXVldWVgIGhhcyByZXR1cm5lZCBmcm9tIHRoZSBgd29ya2VyYC5cbiAqIEBwcm9wZXJ0eSB7RnVuY3Rpb259IGVycm9yIC0gYSBjYWxsYmFjayB0aGF0IGlzIGNhbGxlZCB3aGVuIGEgdGFzayBlcnJvcnMuXG4gKiBIYXMgdGhlIHNpZ25hdHVyZSBgZnVuY3Rpb24oZXJyb3IsIHRhc2spYC5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gcGF1c2VkIC0gYSBib29sZWFuIGZvciBkZXRlcm1pbmluZyB3aGV0aGVyIHRoZSBxdWV1ZSBpc1xuICogaW4gYSBwYXVzZWQgc3RhdGUuXG4gKiBAcHJvcGVydHkge0Z1bmN0aW9ufSBwYXVzZSAtIGEgZnVuY3Rpb24gdGhhdCBwYXVzZXMgdGhlIHByb2Nlc3Npbmcgb2YgdGFza3NcbiAqIHVudGlsIGByZXN1bWUoKWAgaXMgY2FsbGVkLiBJbnZva2Ugd2l0aCBgcXVldWUucGF1c2UoKWAuXG4gKiBAcHJvcGVydHkge0Z1bmN0aW9ufSByZXN1bWUgLSBhIGZ1bmN0aW9uIHRoYXQgcmVzdW1lcyB0aGUgcHJvY2Vzc2luZyBvZlxuICogcXVldWVkIHRhc2tzIHdoZW4gdGhlIHF1ZXVlIGlzIHBhdXNlZC4gSW52b2tlIHdpdGggYHF1ZXVlLnJlc3VtZSgpYC5cbiAqIEBwcm9wZXJ0eSB7RnVuY3Rpb259IGtpbGwgLSBhIGZ1bmN0aW9uIHRoYXQgcmVtb3ZlcyB0aGUgYGRyYWluYCBjYWxsYmFjayBhbmRcbiAqIGVtcHRpZXMgcmVtYWluaW5nIHRhc2tzIGZyb20gdGhlIHF1ZXVlIGZvcmNpbmcgaXQgdG8gZ28gaWRsZS4gSW52b2tlIHdpdGggYHF1ZXVlLmtpbGwoKWAuXG4gKi9cblxuLyoqXG4gKiBDcmVhdGVzIGEgYHF1ZXVlYCBvYmplY3Qgd2l0aCB0aGUgc3BlY2lmaWVkIGBjb25jdXJyZW5jeWAuIFRhc2tzIGFkZGVkIHRvIHRoZVxuICogYHF1ZXVlYCBhcmUgcHJvY2Vzc2VkIGluIHBhcmFsbGVsICh1cCB0byB0aGUgYGNvbmN1cnJlbmN5YCBsaW1pdCkuIElmIGFsbFxuICogYHdvcmtlcmBzIGFyZSBpbiBwcm9ncmVzcywgdGhlIHRhc2sgaXMgcXVldWVkIHVudGlsIG9uZSBiZWNvbWVzIGF2YWlsYWJsZS5cbiAqIE9uY2UgYSBgd29ya2VyYCBjb21wbGV0ZXMgYSBgdGFza2AsIHRoYXQgYHRhc2tgJ3MgY2FsbGJhY2sgaXMgY2FsbGVkLlxuICpcbiAqIEBuYW1lIHF1ZXVlXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgbW9kdWxlOkNvbnRyb2xGbG93XG4gKiBAbWV0aG9kXG4gKiBAY2F0ZWdvcnkgQ29udHJvbCBGbG93XG4gKiBAcGFyYW0ge0FzeW5jRnVuY3Rpb259IHdvcmtlciAtIEFuIGFzeW5jIGZ1bmN0aW9uIGZvciBwcm9jZXNzaW5nIGEgcXVldWVkIHRhc2suXG4gKiBJZiB5b3Ugd2FudCB0byBoYW5kbGUgZXJyb3JzIGZyb20gYW4gaW5kaXZpZHVhbCB0YXNrLCBwYXNzIGEgY2FsbGJhY2sgdG9cbiAqIGBxLnB1c2goKWAuIEludm9rZWQgd2l0aCAodGFzaywgY2FsbGJhY2spLlxuICogQHBhcmFtIHtudW1iZXJ9IFtjb25jdXJyZW5jeT0xXSAtIEFuIGBpbnRlZ2VyYCBmb3IgZGV0ZXJtaW5pbmcgaG93IG1hbnlcbiAqIGB3b3JrZXJgIGZ1bmN0aW9ucyBzaG91bGQgYmUgcnVuIGluIHBhcmFsbGVsLiAgSWYgb21pdHRlZCwgdGhlIGNvbmN1cnJlbmN5XG4gKiBkZWZhdWx0cyB0byBgMWAuICBJZiB0aGUgY29uY3VycmVuY3kgaXMgYDBgLCBhbiBlcnJvciBpcyB0aHJvd24uXG4gKiBAcmV0dXJucyB7bW9kdWxlOkNvbnRyb2xGbG93LlF1ZXVlT2JqZWN0fSBBIHF1ZXVlIG9iamVjdCB0byBtYW5hZ2UgdGhlIHRhc2tzLiBDYWxsYmFja3MgY2FuXG4gKiBhdHRhY2hlZCBhcyBjZXJ0YWluIHByb3BlcnRpZXMgdG8gbGlzdGVuIGZvciBzcGVjaWZpYyBldmVudHMgZHVyaW5nIHRoZVxuICogbGlmZWN5Y2xlIG9mIHRoZSBxdWV1ZS5cbiAqIEBleGFtcGxlXG4gKlxuICogLy8gY3JlYXRlIGEgcXVldWUgb2JqZWN0IHdpdGggY29uY3VycmVuY3kgMlxuICogdmFyIHEgPSBhc3luYy5xdWV1ZShmdW5jdGlvbih0YXNrLCBjYWxsYmFjaykge1xuICogICAgIGNvbnNvbGUubG9nKCdoZWxsbyAnICsgdGFzay5uYW1lKTtcbiAqICAgICBjYWxsYmFjaygpO1xuICogfSwgMik7XG4gKlxuICogLy8gYXNzaWduIGEgY2FsbGJhY2tcbiAqIHEuZHJhaW4gPSBmdW5jdGlvbigpIHtcbiAqICAgICBjb25zb2xlLmxvZygnYWxsIGl0ZW1zIGhhdmUgYmVlbiBwcm9jZXNzZWQnKTtcbiAqIH07XG4gKlxuICogLy8gYWRkIHNvbWUgaXRlbXMgdG8gdGhlIHF1ZXVlXG4gKiBxLnB1c2goe25hbWU6ICdmb28nfSwgZnVuY3Rpb24oZXJyKSB7XG4gKiAgICAgY29uc29sZS5sb2coJ2ZpbmlzaGVkIHByb2Nlc3NpbmcgZm9vJyk7XG4gKiB9KTtcbiAqIHEucHVzaCh7bmFtZTogJ2Jhcid9LCBmdW5jdGlvbiAoZXJyKSB7XG4gKiAgICAgY29uc29sZS5sb2coJ2ZpbmlzaGVkIHByb2Nlc3NpbmcgYmFyJyk7XG4gKiB9KTtcbiAqXG4gKiAvLyBhZGQgc29tZSBpdGVtcyB0byB0aGUgcXVldWUgKGJhdGNoLXdpc2UpXG4gKiBxLnB1c2goW3tuYW1lOiAnYmF6J30se25hbWU6ICdiYXknfSx7bmFtZTogJ2JheCd9XSwgZnVuY3Rpb24oZXJyKSB7XG4gKiAgICAgY29uc29sZS5sb2coJ2ZpbmlzaGVkIHByb2Nlc3NpbmcgaXRlbScpO1xuICogfSk7XG4gKlxuICogLy8gYWRkIHNvbWUgaXRlbXMgdG8gdGhlIGZyb250IG9mIHRoZSBxdWV1ZVxuICogcS51bnNoaWZ0KHtuYW1lOiAnYmFyJ30sIGZ1bmN0aW9uIChlcnIpIHtcbiAqICAgICBjb25zb2xlLmxvZygnZmluaXNoZWQgcHJvY2Vzc2luZyBiYXInKTtcbiAqIH0pO1xuICovXG52YXIgcXVldWUkMSA9IGZ1bmN0aW9uICh3b3JrZXIsIGNvbmN1cnJlbmN5KSB7XG4gIHZhciBfd29ya2VyID0gd3JhcEFzeW5jJDEod29ya2VyKTtcbiAgcmV0dXJuIHF1ZXVlKGZ1bmN0aW9uIChpdGVtcywgY2IpIHtcbiAgICBfd29ya2VyKGl0ZW1zWzBdLCBjYik7XG4gIH0sIGNvbmN1cnJlbmN5LCAxKTtcbn07XG5cbi8qKlxuICogVGhlIHNhbWUgYXMgW2FzeW5jLnF1ZXVlXXtAbGluayBtb2R1bGU6Q29udHJvbEZsb3cucXVldWV9IG9ubHkgdGFza3MgYXJlIGFzc2lnbmVkIGEgcHJpb3JpdHkgYW5kXG4gKiBjb21wbGV0ZWQgaW4gYXNjZW5kaW5nIHByaW9yaXR5IG9yZGVyLlxuICpcbiAqIEBuYW1lIHByaW9yaXR5UXVldWVcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Q29udHJvbEZsb3dcbiAqIEBtZXRob2RcbiAqIEBzZWUgW2FzeW5jLnF1ZXVlXXtAbGluayBtb2R1bGU6Q29udHJvbEZsb3cucXVldWV9XG4gKiBAY2F0ZWdvcnkgQ29udHJvbCBGbG93XG4gKiBAcGFyYW0ge0FzeW5jRnVuY3Rpb259IHdvcmtlciAtIEFuIGFzeW5jIGZ1bmN0aW9uIGZvciBwcm9jZXNzaW5nIGEgcXVldWVkIHRhc2suXG4gKiBJZiB5b3Ugd2FudCB0byBoYW5kbGUgZXJyb3JzIGZyb20gYW4gaW5kaXZpZHVhbCB0YXNrLCBwYXNzIGEgY2FsbGJhY2sgdG9cbiAqIGBxLnB1c2goKWAuXG4gKiBJbnZva2VkIHdpdGggKHRhc2ssIGNhbGxiYWNrKS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBjb25jdXJyZW5jeSAtIEFuIGBpbnRlZ2VyYCBmb3IgZGV0ZXJtaW5pbmcgaG93IG1hbnkgYHdvcmtlcmBcbiAqIGZ1bmN0aW9ucyBzaG91bGQgYmUgcnVuIGluIHBhcmFsbGVsLiAgSWYgb21pdHRlZCwgdGhlIGNvbmN1cnJlbmN5IGRlZmF1bHRzIHRvXG4gKiBgMWAuICBJZiB0aGUgY29uY3VycmVuY3kgaXMgYDBgLCBhbiBlcnJvciBpcyB0aHJvd24uXG4gKiBAcmV0dXJucyB7bW9kdWxlOkNvbnRyb2xGbG93LlF1ZXVlT2JqZWN0fSBBIHByaW9yaXR5UXVldWUgb2JqZWN0IHRvIG1hbmFnZSB0aGUgdGFza3MuIFRoZXJlIGFyZSB0d29cbiAqIGRpZmZlcmVuY2VzIGJldHdlZW4gYHF1ZXVlYCBhbmQgYHByaW9yaXR5UXVldWVgIG9iamVjdHM6XG4gKiAqIGBwdXNoKHRhc2ssIHByaW9yaXR5LCBbY2FsbGJhY2tdKWAgLSBgcHJpb3JpdHlgIHNob3VsZCBiZSBhIG51bWJlci4gSWYgYW5cbiAqICAgYXJyYXkgb2YgYHRhc2tzYCBpcyBnaXZlbiwgYWxsIHRhc2tzIHdpbGwgYmUgYXNzaWduZWQgdGhlIHNhbWUgcHJpb3JpdHkuXG4gKiAqIFRoZSBgdW5zaGlmdGAgbWV0aG9kIHdhcyByZW1vdmVkLlxuICovXG52YXIgcHJpb3JpdHlRdWV1ZSA9IGZ1bmN0aW9uICh3b3JrZXIsIGNvbmN1cnJlbmN5KSB7XG4gICAgLy8gU3RhcnQgd2l0aCBhIG5vcm1hbCBxdWV1ZVxuICAgIHZhciBxID0gcXVldWUkMSh3b3JrZXIsIGNvbmN1cnJlbmN5KTtcblxuICAgIC8vIE92ZXJyaWRlIHB1c2ggdG8gYWNjZXB0IHNlY29uZCBwYXJhbWV0ZXIgcmVwcmVzZW50aW5nIHByaW9yaXR5XG4gICAgcS5wdXNoID0gZnVuY3Rpb24gKGRhdGEsIHByaW9yaXR5LCBjYWxsYmFjaykge1xuICAgICAgICBpZiAoY2FsbGJhY2sgPT0gbnVsbCkgY2FsbGJhY2sgPSBub29wO1xuICAgICAgICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3Rhc2sgY2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uJyk7XG4gICAgICAgIH1cbiAgICAgICAgcS5zdGFydGVkID0gdHJ1ZTtcbiAgICAgICAgaWYgKCFpc0FycmF5KGRhdGEpKSB7XG4gICAgICAgICAgICBkYXRhID0gW2RhdGFdO1xuICAgICAgICB9XG4gICAgICAgIGlmIChkYXRhLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgLy8gY2FsbCBkcmFpbiBpbW1lZGlhdGVseSBpZiB0aGVyZSBhcmUgbm8gdGFza3NcbiAgICAgICAgICAgIHJldHVybiBzZXRJbW1lZGlhdGUkMShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcS5kcmFpbigpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBwcmlvcml0eSA9IHByaW9yaXR5IHx8IDA7XG4gICAgICAgIHZhciBuZXh0Tm9kZSA9IHEuX3Rhc2tzLmhlYWQ7XG4gICAgICAgIHdoaWxlIChuZXh0Tm9kZSAmJiBwcmlvcml0eSA+PSBuZXh0Tm9kZS5wcmlvcml0eSkge1xuICAgICAgICAgICAgbmV4dE5vZGUgPSBuZXh0Tm9kZS5uZXh0O1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIGwgPSBkYXRhLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgICAgICAgdmFyIGl0ZW0gPSB7XG4gICAgICAgICAgICAgICAgZGF0YTogZGF0YVtpXSxcbiAgICAgICAgICAgICAgICBwcmlvcml0eTogcHJpb3JpdHksXG4gICAgICAgICAgICAgICAgY2FsbGJhY2s6IGNhbGxiYWNrXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBpZiAobmV4dE5vZGUpIHtcbiAgICAgICAgICAgICAgICBxLl90YXNrcy5pbnNlcnRCZWZvcmUobmV4dE5vZGUsIGl0ZW0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBxLl90YXNrcy5wdXNoKGl0ZW0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHNldEltbWVkaWF0ZSQxKHEucHJvY2Vzcyk7XG4gICAgfTtcblxuICAgIC8vIFJlbW92ZSB1bnNoaWZ0IGZ1bmN0aW9uXG4gICAgZGVsZXRlIHEudW5zaGlmdDtcblxuICAgIHJldHVybiBxO1xufTtcblxuLyoqXG4gKiBSdW5zIHRoZSBgdGFza3NgIGFycmF5IG9mIGZ1bmN0aW9ucyBpbiBwYXJhbGxlbCwgd2l0aG91dCB3YWl0aW5nIHVudGlsIHRoZVxuICogcHJldmlvdXMgZnVuY3Rpb24gaGFzIGNvbXBsZXRlZC4gT25jZSBhbnkgb2YgdGhlIGB0YXNrc2AgY29tcGxldGUgb3IgcGFzcyBhblxuICogZXJyb3IgdG8gaXRzIGNhbGxiYWNrLCB0aGUgbWFpbiBgY2FsbGJhY2tgIGlzIGltbWVkaWF0ZWx5IGNhbGxlZC4gSXQnc1xuICogZXF1aXZhbGVudCB0byBgUHJvbWlzZS5yYWNlKClgLlxuICpcbiAqIEBuYW1lIHJhY2VcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Q29udHJvbEZsb3dcbiAqIEBtZXRob2RcbiAqIEBjYXRlZ29yeSBDb250cm9sIEZsb3dcbiAqIEBwYXJhbSB7QXJyYXl9IHRhc2tzIC0gQW4gYXJyYXkgY29udGFpbmluZyBbYXN5bmMgZnVuY3Rpb25zXXtAbGluayBBc3luY0Z1bmN0aW9ufVxuICogdG8gcnVuLiBFYWNoIGZ1bmN0aW9uIGNhbiBjb21wbGV0ZSB3aXRoIGFuIG9wdGlvbmFsIGByZXN1bHRgIHZhbHVlLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gY2FsbGJhY2sgLSBBIGNhbGxiYWNrIHRvIHJ1biBvbmNlIGFueSBvZiB0aGUgZnVuY3Rpb25zIGhhdmVcbiAqIGNvbXBsZXRlZC4gVGhpcyBmdW5jdGlvbiBnZXRzIGFuIGVycm9yIG9yIHJlc3VsdCBmcm9tIHRoZSBmaXJzdCBmdW5jdGlvbiB0aGF0XG4gKiBjb21wbGV0ZWQuIEludm9rZWQgd2l0aCAoZXJyLCByZXN1bHQpLlxuICogQHJldHVybnMgdW5kZWZpbmVkXG4gKiBAZXhhbXBsZVxuICpcbiAqIGFzeW5jLnJhY2UoW1xuICogICAgIGZ1bmN0aW9uKGNhbGxiYWNrKSB7XG4gKiAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gKiAgICAgICAgICAgICBjYWxsYmFjayhudWxsLCAnb25lJyk7XG4gKiAgICAgICAgIH0sIDIwMCk7XG4gKiAgICAgfSxcbiAqICAgICBmdW5jdGlvbihjYWxsYmFjaykge1xuICogICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICogICAgICAgICAgICAgY2FsbGJhY2sobnVsbCwgJ3R3bycpO1xuICogICAgICAgICB9LCAxMDApO1xuICogICAgIH1cbiAqIF0sXG4gKiAvLyBtYWluIGNhbGxiYWNrXG4gKiBmdW5jdGlvbihlcnIsIHJlc3VsdCkge1xuICogICAgIC8vIHRoZSByZXN1bHQgd2lsbCBiZSBlcXVhbCB0byAndHdvJyBhcyBpdCBmaW5pc2hlcyBlYXJsaWVyXG4gKiB9KTtcbiAqL1xuZnVuY3Rpb24gcmFjZSh0YXNrcywgY2FsbGJhY2spIHtcbiAgICBjYWxsYmFjayA9IG9uY2UoY2FsbGJhY2sgfHwgbm9vcCk7XG4gICAgaWYgKCFpc0FycmF5KHRhc2tzKSkgcmV0dXJuIGNhbGxiYWNrKG5ldyBUeXBlRXJyb3IoJ0ZpcnN0IGFyZ3VtZW50IHRvIHJhY2UgbXVzdCBiZSBhbiBhcnJheSBvZiBmdW5jdGlvbnMnKSk7XG4gICAgaWYgKCF0YXNrcy5sZW5ndGgpIHJldHVybiBjYWxsYmFjaygpO1xuICAgIGZvciAodmFyIGkgPSAwLCBsID0gdGFza3MubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgIHdyYXBBc3luYyQxKHRhc2tzW2ldKShjYWxsYmFjayk7XG4gICAgfVxufVxuXG52YXIgc2xpY2UgPSBBcnJheS5wcm90b3R5cGUuc2xpY2U7XG5cbi8qKlxuICogU2FtZSBhcyBbYHJlZHVjZWBde0BsaW5rIG1vZHVsZTpDb2xsZWN0aW9ucy5yZWR1Y2V9LCBvbmx5IG9wZXJhdGVzIG9uIGBhcnJheWAgaW4gcmV2ZXJzZSBvcmRlci5cbiAqXG4gKiBAbmFtZSByZWR1Y2VSaWdodFxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIG1vZHVsZTpDb2xsZWN0aW9uc1xuICogQG1ldGhvZFxuICogQHNlZSBbYXN5bmMucmVkdWNlXXtAbGluayBtb2R1bGU6Q29sbGVjdGlvbnMucmVkdWNlfVxuICogQGFsaWFzIGZvbGRyXG4gKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgLSBBIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHsqfSBtZW1vIC0gVGhlIGluaXRpYWwgc3RhdGUgb2YgdGhlIHJlZHVjdGlvbi5cbiAqIEBwYXJhbSB7QXN5bmNGdW5jdGlvbn0gaXRlcmF0ZWUgLSBBIGZ1bmN0aW9uIGFwcGxpZWQgdG8gZWFjaCBpdGVtIGluIHRoZVxuICogYXJyYXkgdG8gcHJvZHVjZSB0aGUgbmV4dCBzdGVwIGluIHRoZSByZWR1Y3Rpb24uXG4gKiBUaGUgYGl0ZXJhdGVlYCBzaG91bGQgY29tcGxldGUgd2l0aCB0aGUgbmV4dCBzdGF0ZSBvZiB0aGUgcmVkdWN0aW9uLlxuICogSWYgdGhlIGl0ZXJhdGVlIGNvbXBsZXRlIHdpdGggYW4gZXJyb3IsIHRoZSByZWR1Y3Rpb24gaXMgc3RvcHBlZCBhbmQgdGhlXG4gKiBtYWluIGBjYWxsYmFja2AgaXMgaW1tZWRpYXRlbHkgY2FsbGVkIHdpdGggdGhlIGVycm9yLlxuICogSW52b2tlZCB3aXRoIChtZW1vLCBpdGVtLCBjYWxsYmFjaykuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY2FsbGJhY2tdIC0gQSBjYWxsYmFjayB3aGljaCBpcyBjYWxsZWQgYWZ0ZXIgYWxsIHRoZVxuICogYGl0ZXJhdGVlYCBmdW5jdGlvbnMgaGF2ZSBmaW5pc2hlZC4gUmVzdWx0IGlzIHRoZSByZWR1Y2VkIHZhbHVlLiBJbnZva2VkIHdpdGhcbiAqIChlcnIsIHJlc3VsdCkuXG4gKi9cbmZ1bmN0aW9uIHJlZHVjZVJpZ2h0KGFycmF5LCBtZW1vLCBpdGVyYXRlZSwgY2FsbGJhY2spIHtcbiAgdmFyIHJldmVyc2VkID0gc2xpY2UuY2FsbChhcnJheSkucmV2ZXJzZSgpO1xuICByZWR1Y2UocmV2ZXJzZWQsIG1lbW8sIGl0ZXJhdGVlLCBjYWxsYmFjayk7XG59XG5cbi8qKlxuICogV3JhcHMgdGhlIGFzeW5jIGZ1bmN0aW9uIGluIGFub3RoZXIgZnVuY3Rpb24gdGhhdCBhbHdheXMgY29tcGxldGVzIHdpdGggYVxuICogcmVzdWx0IG9iamVjdCwgZXZlbiB3aGVuIGl0IGVycm9ycy5cbiAqXG4gKiBUaGUgcmVzdWx0IG9iamVjdCBoYXMgZWl0aGVyIHRoZSBwcm9wZXJ0eSBgZXJyb3JgIG9yIGB2YWx1ZWAuXG4gKlxuICogQG5hbWUgcmVmbGVjdFxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIG1vZHVsZTpVdGlsc1xuICogQG1ldGhvZFxuICogQGNhdGVnb3J5IFV0aWxcbiAqIEBwYXJhbSB7QXN5bmNGdW5jdGlvbn0gZm4gLSBUaGUgYXN5bmMgZnVuY3Rpb24geW91IHdhbnQgdG8gd3JhcFxuICogQHJldHVybnMge0Z1bmN0aW9ufSAtIEEgZnVuY3Rpb24gdGhhdCBhbHdheXMgcGFzc2VzIG51bGwgdG8gaXQncyBjYWxsYmFjayBhc1xuICogdGhlIGVycm9yLiBUaGUgc2Vjb25kIGFyZ3VtZW50IHRvIHRoZSBjYWxsYmFjayB3aWxsIGJlIGFuIGBvYmplY3RgIHdpdGhcbiAqIGVpdGhlciBhbiBgZXJyb3JgIG9yIGEgYHZhbHVlYCBwcm9wZXJ0eS5cbiAqIEBleGFtcGxlXG4gKlxuICogYXN5bmMucGFyYWxsZWwoW1xuICogICAgIGFzeW5jLnJlZmxlY3QoZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAqICAgICAgICAgLy8gZG8gc29tZSBzdHVmZiAuLi5cbiAqICAgICAgICAgY2FsbGJhY2sobnVsbCwgJ29uZScpO1xuICogICAgIH0pLFxuICogICAgIGFzeW5jLnJlZmxlY3QoZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAqICAgICAgICAgLy8gZG8gc29tZSBtb3JlIHN0dWZmIGJ1dCBlcnJvciAuLi5cbiAqICAgICAgICAgY2FsbGJhY2soJ2JhZCBzdHVmZiBoYXBwZW5lZCcpO1xuICogICAgIH0pLFxuICogICAgIGFzeW5jLnJlZmxlY3QoZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAqICAgICAgICAgLy8gZG8gc29tZSBtb3JlIHN0dWZmIC4uLlxuICogICAgICAgICBjYWxsYmFjayhudWxsLCAndHdvJyk7XG4gKiAgICAgfSlcbiAqIF0sXG4gKiAvLyBvcHRpb25hbCBjYWxsYmFja1xuICogZnVuY3Rpb24oZXJyLCByZXN1bHRzKSB7XG4gKiAgICAgLy8gdmFsdWVzXG4gKiAgICAgLy8gcmVzdWx0c1swXS52YWx1ZSA9ICdvbmUnXG4gKiAgICAgLy8gcmVzdWx0c1sxXS5lcnJvciA9ICdiYWQgc3R1ZmYgaGFwcGVuZWQnXG4gKiAgICAgLy8gcmVzdWx0c1syXS52YWx1ZSA9ICd0d28nXG4gKiB9KTtcbiAqL1xuZnVuY3Rpb24gcmVmbGVjdChmbikge1xuICAgIHZhciBfZm4gPSB3cmFwQXN5bmMkMShmbik7XG4gICAgcmV0dXJuIGluaXRpYWxQYXJhbXMoZnVuY3Rpb24gcmVmbGVjdE9uKGFyZ3MsIHJlZmxlY3RDYWxsYmFjaykge1xuICAgICAgICBhcmdzLnB1c2gocmVzdChmdW5jdGlvbiBjYWxsYmFjayhlcnIsIGNiQXJncykge1xuICAgICAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgICAgIHJlZmxlY3RDYWxsYmFjayhudWxsLCB7XG4gICAgICAgICAgICAgICAgICAgIGVycm9yOiBlcnJcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdmFyIHZhbHVlID0gbnVsbDtcbiAgICAgICAgICAgICAgICBpZiAoY2JBcmdzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGNiQXJnc1swXTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNiQXJncy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gY2JBcmdzO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZWZsZWN0Q2FsbGJhY2sobnVsbCwge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdmFsdWVcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSkpO1xuXG4gICAgICAgIHJldHVybiBfZm4uYXBwbHkodGhpcywgYXJncyk7XG4gICAgfSk7XG59XG5cbmZ1bmN0aW9uIHJlamVjdCQxKGVhY2hmbiwgYXJyLCBpdGVyYXRlZSwgY2FsbGJhY2spIHtcbiAgICBfZmlsdGVyKGVhY2hmbiwgYXJyLCBmdW5jdGlvbiAodmFsdWUsIGNiKSB7XG4gICAgICAgIGl0ZXJhdGVlKHZhbHVlLCBmdW5jdGlvbiAoZXJyLCB2KSB7XG4gICAgICAgICAgICBjYihlcnIsICF2KTtcbiAgICAgICAgfSk7XG4gICAgfSwgY2FsbGJhY2spO1xufVxuXG4vKipcbiAqIFRoZSBvcHBvc2l0ZSBvZiBbYGZpbHRlcmBde0BsaW5rIG1vZHVsZTpDb2xsZWN0aW9ucy5maWx0ZXJ9LiBSZW1vdmVzIHZhbHVlcyB0aGF0IHBhc3MgYW4gYGFzeW5jYCB0cnV0aCB0ZXN0LlxuICpcbiAqIEBuYW1lIHJlamVjdFxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIG1vZHVsZTpDb2xsZWN0aW9uc1xuICogQG1ldGhvZFxuICogQHNlZSBbYXN5bmMuZmlsdGVyXXtAbGluayBtb2R1bGU6Q29sbGVjdGlvbnMuZmlsdGVyfVxuICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAqIEBwYXJhbSB7QXJyYXl8SXRlcmFibGV8T2JqZWN0fSBjb2xsIC0gQSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIC0gQW4gYXN5bmMgdHJ1dGggdGVzdCB0byBhcHBseSB0byBlYWNoIGl0ZW0gaW5cbiAqIGBjb2xsYC5cbiAqIFRoZSBzaG91bGQgY29tcGxldGUgd2l0aCBhIGJvb2xlYW4gdmFsdWUgYXMgaXRzIGByZXN1bHRgLlxuICogSW52b2tlZCB3aXRoIChpdGVtLCBjYWxsYmFjaykuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY2FsbGJhY2tdIC0gQSBjYWxsYmFjayB3aGljaCBpcyBjYWxsZWQgYWZ0ZXIgYWxsIHRoZVxuICogYGl0ZXJhdGVlYCBmdW5jdGlvbnMgaGF2ZSBmaW5pc2hlZC4gSW52b2tlZCB3aXRoIChlcnIsIHJlc3VsdHMpLlxuICogQGV4YW1wbGVcbiAqXG4gKiBhc3luYy5yZWplY3QoWydmaWxlMScsJ2ZpbGUyJywnZmlsZTMnXSwgZnVuY3Rpb24oZmlsZVBhdGgsIGNhbGxiYWNrKSB7XG4gKiAgICAgZnMuYWNjZXNzKGZpbGVQYXRoLCBmdW5jdGlvbihlcnIpIHtcbiAqICAgICAgICAgY2FsbGJhY2sobnVsbCwgIWVycilcbiAqICAgICB9KTtcbiAqIH0sIGZ1bmN0aW9uKGVyciwgcmVzdWx0cykge1xuICogICAgIC8vIHJlc3VsdHMgbm93IGVxdWFscyBhbiBhcnJheSBvZiBtaXNzaW5nIGZpbGVzXG4gKiAgICAgY3JlYXRlRmlsZXMocmVzdWx0cyk7XG4gKiB9KTtcbiAqL1xudmFyIHJlamVjdCA9IGRvUGFyYWxsZWwocmVqZWN0JDEpO1xuXG4vKipcbiAqIEEgaGVscGVyIGZ1bmN0aW9uIHRoYXQgd3JhcHMgYW4gYXJyYXkgb3IgYW4gb2JqZWN0IG9mIGZ1bmN0aW9ucyB3aXRoIGByZWZsZWN0YC5cbiAqXG4gKiBAbmFtZSByZWZsZWN0QWxsXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgbW9kdWxlOlV0aWxzXG4gKiBAbWV0aG9kXG4gKiBAc2VlIFthc3luYy5yZWZsZWN0XXtAbGluayBtb2R1bGU6VXRpbHMucmVmbGVjdH1cbiAqIEBjYXRlZ29yeSBVdGlsXG4gKiBAcGFyYW0ge0FycmF5fE9iamVjdHxJdGVyYWJsZX0gdGFza3MgLSBUaGUgY29sbGVjdGlvbiBvZlxuICogW2FzeW5jIGZ1bmN0aW9uc117QGxpbmsgQXN5bmNGdW5jdGlvbn0gdG8gd3JhcCBpbiBgYXN5bmMucmVmbGVjdGAuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYW4gYXJyYXkgb2YgYXN5bmMgZnVuY3Rpb25zLCBlYWNoIHdyYXBwZWQgaW5cbiAqIGBhc3luYy5yZWZsZWN0YFxuICogQGV4YW1wbGVcbiAqXG4gKiBsZXQgdGFza3MgPSBbXG4gKiAgICAgZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAqICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAqICAgICAgICAgICAgIGNhbGxiYWNrKG51bGwsICdvbmUnKTtcbiAqICAgICAgICAgfSwgMjAwKTtcbiAqICAgICB9LFxuICogICAgIGZ1bmN0aW9uKGNhbGxiYWNrKSB7XG4gKiAgICAgICAgIC8vIGRvIHNvbWUgbW9yZSBzdHVmZiBidXQgZXJyb3IgLi4uXG4gKiAgICAgICAgIGNhbGxiYWNrKG5ldyBFcnJvcignYmFkIHN0dWZmIGhhcHBlbmVkJykpO1xuICogICAgIH0sXG4gKiAgICAgZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAqICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAqICAgICAgICAgICAgIGNhbGxiYWNrKG51bGwsICd0d28nKTtcbiAqICAgICAgICAgfSwgMTAwKTtcbiAqICAgICB9XG4gKiBdO1xuICpcbiAqIGFzeW5jLnBhcmFsbGVsKGFzeW5jLnJlZmxlY3RBbGwodGFza3MpLFxuICogLy8gb3B0aW9uYWwgY2FsbGJhY2tcbiAqIGZ1bmN0aW9uKGVyciwgcmVzdWx0cykge1xuICogICAgIC8vIHZhbHVlc1xuICogICAgIC8vIHJlc3VsdHNbMF0udmFsdWUgPSAnb25lJ1xuICogICAgIC8vIHJlc3VsdHNbMV0uZXJyb3IgPSBFcnJvcignYmFkIHN0dWZmIGhhcHBlbmVkJylcbiAqICAgICAvLyByZXN1bHRzWzJdLnZhbHVlID0gJ3R3bydcbiAqIH0pO1xuICpcbiAqIC8vIGFuIGV4YW1wbGUgdXNpbmcgYW4gb2JqZWN0IGluc3RlYWQgb2YgYW4gYXJyYXlcbiAqIGxldCB0YXNrcyA9IHtcbiAqICAgICBvbmU6IGZ1bmN0aW9uKGNhbGxiYWNrKSB7XG4gKiAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gKiAgICAgICAgICAgICBjYWxsYmFjayhudWxsLCAnb25lJyk7XG4gKiAgICAgICAgIH0sIDIwMCk7XG4gKiAgICAgfSxcbiAqICAgICB0d286IGZ1bmN0aW9uKGNhbGxiYWNrKSB7XG4gKiAgICAgICAgIGNhbGxiYWNrKCd0d28nKTtcbiAqICAgICB9LFxuICogICAgIHRocmVlOiBmdW5jdGlvbihjYWxsYmFjaykge1xuICogICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICogICAgICAgICAgICAgY2FsbGJhY2sobnVsbCwgJ3RocmVlJyk7XG4gKiAgICAgICAgIH0sIDEwMCk7XG4gKiAgICAgfVxuICogfTtcbiAqXG4gKiBhc3luYy5wYXJhbGxlbChhc3luYy5yZWZsZWN0QWxsKHRhc2tzKSxcbiAqIC8vIG9wdGlvbmFsIGNhbGxiYWNrXG4gKiBmdW5jdGlvbihlcnIsIHJlc3VsdHMpIHtcbiAqICAgICAvLyB2YWx1ZXNcbiAqICAgICAvLyByZXN1bHRzLm9uZS52YWx1ZSA9ICdvbmUnXG4gKiAgICAgLy8gcmVzdWx0cy50d28uZXJyb3IgPSAndHdvJ1xuICogICAgIC8vIHJlc3VsdHMudGhyZWUudmFsdWUgPSAndGhyZWUnXG4gKiB9KTtcbiAqL1xuZnVuY3Rpb24gcmVmbGVjdEFsbCh0YXNrcykge1xuICAgIHZhciByZXN1bHRzO1xuICAgIGlmIChpc0FycmF5KHRhc2tzKSkge1xuICAgICAgICByZXN1bHRzID0gYXJyYXlNYXAodGFza3MsIHJlZmxlY3QpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VsdHMgPSB7fTtcbiAgICAgICAgYmFzZUZvck93bih0YXNrcywgZnVuY3Rpb24gKHRhc2ssIGtleSkge1xuICAgICAgICAgICAgcmVzdWx0c1trZXldID0gcmVmbGVjdC5jYWxsKHRoaXMsIHRhc2spO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdHM7XG59XG5cbi8qKlxuICogVGhlIHNhbWUgYXMgW2ByZWplY3RgXXtAbGluayBtb2R1bGU6Q29sbGVjdGlvbnMucmVqZWN0fSBidXQgcnVucyBhIG1heGltdW0gb2YgYGxpbWl0YCBhc3luYyBvcGVyYXRpb25zIGF0IGFcbiAqIHRpbWUuXG4gKlxuICogQG5hbWUgcmVqZWN0TGltaXRcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Q29sbGVjdGlvbnNcbiAqIEBtZXRob2RcbiAqIEBzZWUgW2FzeW5jLnJlamVjdF17QGxpbmsgbW9kdWxlOkNvbGxlY3Rpb25zLnJlamVjdH1cbiAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gKiBAcGFyYW0ge0FycmF5fEl0ZXJhYmxlfE9iamVjdH0gY29sbCAtIEEgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge251bWJlcn0gbGltaXQgLSBUaGUgbWF4aW11bSBudW1iZXIgb2YgYXN5bmMgb3BlcmF0aW9ucyBhdCBhIHRpbWUuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSAtIEFuIGFzeW5jIHRydXRoIHRlc3QgdG8gYXBwbHkgdG8gZWFjaCBpdGVtIGluXG4gKiBgY29sbGAuXG4gKiBUaGUgc2hvdWxkIGNvbXBsZXRlIHdpdGggYSBib29sZWFuIHZhbHVlIGFzIGl0cyBgcmVzdWx0YC5cbiAqIEludm9rZWQgd2l0aCAoaXRlbSwgY2FsbGJhY2spLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2NhbGxiYWNrXSAtIEEgY2FsbGJhY2sgd2hpY2ggaXMgY2FsbGVkIGFmdGVyIGFsbCB0aGVcbiAqIGBpdGVyYXRlZWAgZnVuY3Rpb25zIGhhdmUgZmluaXNoZWQuIEludm9rZWQgd2l0aCAoZXJyLCByZXN1bHRzKS5cbiAqL1xudmFyIHJlamVjdExpbWl0ID0gZG9QYXJhbGxlbExpbWl0KHJlamVjdCQxKTtcblxuLyoqXG4gKiBUaGUgc2FtZSBhcyBbYHJlamVjdGBde0BsaW5rIG1vZHVsZTpDb2xsZWN0aW9ucy5yZWplY3R9IGJ1dCBydW5zIG9ubHkgYSBzaW5nbGUgYXN5bmMgb3BlcmF0aW9uIGF0IGEgdGltZS5cbiAqXG4gKiBAbmFtZSByZWplY3RTZXJpZXNcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Q29sbGVjdGlvbnNcbiAqIEBtZXRob2RcbiAqIEBzZWUgW2FzeW5jLnJlamVjdF17QGxpbmsgbW9kdWxlOkNvbGxlY3Rpb25zLnJlamVjdH1cbiAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gKiBAcGFyYW0ge0FycmF5fEl0ZXJhYmxlfE9iamVjdH0gY29sbCAtIEEgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSAtIEFuIGFzeW5jIHRydXRoIHRlc3QgdG8gYXBwbHkgdG8gZWFjaCBpdGVtIGluXG4gKiBgY29sbGAuXG4gKiBUaGUgc2hvdWxkIGNvbXBsZXRlIHdpdGggYSBib29sZWFuIHZhbHVlIGFzIGl0cyBgcmVzdWx0YC5cbiAqIEludm9rZWQgd2l0aCAoaXRlbSwgY2FsbGJhY2spLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2NhbGxiYWNrXSAtIEEgY2FsbGJhY2sgd2hpY2ggaXMgY2FsbGVkIGFmdGVyIGFsbCB0aGVcbiAqIGBpdGVyYXRlZWAgZnVuY3Rpb25zIGhhdmUgZmluaXNoZWQuIEludm9rZWQgd2l0aCAoZXJyLCByZXN1bHRzKS5cbiAqL1xudmFyIHJlamVjdFNlcmllcyA9IGRvTGltaXQocmVqZWN0TGltaXQsIDEpO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IHJldHVybnMgYHZhbHVlYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDIuNC4wXG4gKiBAY2F0ZWdvcnkgVXRpbFxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcmV0dXJuIGZyb20gdGhlIG5ldyBmdW5jdGlvbi5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGNvbnN0YW50IGZ1bmN0aW9uLlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0cyA9IF8udGltZXMoMiwgXy5jb25zdGFudCh7ICdhJzogMSB9KSk7XG4gKlxuICogY29uc29sZS5sb2cob2JqZWN0cyk7XG4gKiAvLyA9PiBbeyAnYSc6IDEgfSwgeyAnYSc6IDEgfV1cbiAqXG4gKiBjb25zb2xlLmxvZyhvYmplY3RzWzBdID09PSBvYmplY3RzWzFdKTtcbiAqIC8vID0+IHRydWVcbiAqL1xuZnVuY3Rpb24gY29uc3RhbnQkMSh2YWx1ZSkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9O1xufVxuXG4vKipcbiAqIEF0dGVtcHRzIHRvIGdldCBhIHN1Y2Nlc3NmdWwgcmVzcG9uc2UgZnJvbSBgdGFza2Agbm8gbW9yZSB0aGFuIGB0aW1lc2AgdGltZXNcbiAqIGJlZm9yZSByZXR1cm5pbmcgYW4gZXJyb3IuIElmIHRoZSB0YXNrIGlzIHN1Y2Nlc3NmdWwsIHRoZSBgY2FsbGJhY2tgIHdpbGwgYmVcbiAqIHBhc3NlZCB0aGUgcmVzdWx0IG9mIHRoZSBzdWNjZXNzZnVsIHRhc2suIElmIGFsbCBhdHRlbXB0cyBmYWlsLCB0aGUgY2FsbGJhY2tcbiAqIHdpbGwgYmUgcGFzc2VkIHRoZSBlcnJvciBhbmQgcmVzdWx0IChpZiBhbnkpIG9mIHRoZSBmaW5hbCBhdHRlbXB0LlxuICpcbiAqIEBuYW1lIHJldHJ5XG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgbW9kdWxlOkNvbnRyb2xGbG93XG4gKiBAbWV0aG9kXG4gKiBAY2F0ZWdvcnkgQ29udHJvbCBGbG93XG4gKiBAc2VlIFthc3luYy5yZXRyeWFibGVde0BsaW5rIG1vZHVsZTpDb250cm9sRmxvdy5yZXRyeWFibGV9XG4gKiBAcGFyYW0ge09iamVjdHxudW1iZXJ9IFtvcHRzID0ge3RpbWVzOiA1LCBpbnRlcnZhbDogMH18IDVdIC0gQ2FuIGJlIGVpdGhlciBhblxuICogb2JqZWN0IHdpdGggYHRpbWVzYCBhbmQgYGludGVydmFsYCBvciBhIG51bWJlci5cbiAqICogYHRpbWVzYCAtIFRoZSBudW1iZXIgb2YgYXR0ZW1wdHMgdG8gbWFrZSBiZWZvcmUgZ2l2aW5nIHVwLiAgVGhlIGRlZmF1bHRcbiAqICAgaXMgYDVgLlxuICogKiBgaW50ZXJ2YWxgIC0gVGhlIHRpbWUgdG8gd2FpdCBiZXR3ZWVuIHJldHJpZXMsIGluIG1pbGxpc2Vjb25kcy4gIFRoZVxuICogICBkZWZhdWx0IGlzIGAwYC4gVGhlIGludGVydmFsIG1heSBhbHNvIGJlIHNwZWNpZmllZCBhcyBhIGZ1bmN0aW9uIG9mIHRoZVxuICogICByZXRyeSBjb3VudCAoc2VlIGV4YW1wbGUpLlxuICogKiBgZXJyb3JGaWx0ZXJgIC0gQW4gb3B0aW9uYWwgc3luY2hyb25vdXMgZnVuY3Rpb24gdGhhdCBpcyBpbnZva2VkIG9uXG4gKiAgIGVycm9uZW91cyByZXN1bHQuIElmIGl0IHJldHVybnMgYHRydWVgIHRoZSByZXRyeSBhdHRlbXB0cyB3aWxsIGNvbnRpbnVlO1xuICogICBpZiB0aGUgZnVuY3Rpb24gcmV0dXJucyBgZmFsc2VgIHRoZSByZXRyeSBmbG93IGlzIGFib3J0ZWQgd2l0aCB0aGUgY3VycmVudFxuICogICBhdHRlbXB0J3MgZXJyb3IgYW5kIHJlc3VsdCBiZWluZyByZXR1cm5lZCB0byB0aGUgZmluYWwgY2FsbGJhY2suXG4gKiAgIEludm9rZWQgd2l0aCAoZXJyKS5cbiAqICogSWYgYG9wdHNgIGlzIGEgbnVtYmVyLCB0aGUgbnVtYmVyIHNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIHRpbWVzIHRvIHJldHJ5LFxuICogICB3aXRoIHRoZSBkZWZhdWx0IGludGVydmFsIG9mIGAwYC5cbiAqIEBwYXJhbSB7QXN5bmNGdW5jdGlvbn0gdGFzayAtIEFuIGFzeW5jIGZ1bmN0aW9uIHRvIHJldHJ5LlxuICogSW52b2tlZCB3aXRoIChjYWxsYmFjaykuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY2FsbGJhY2tdIC0gQW4gb3B0aW9uYWwgY2FsbGJhY2sgd2hpY2ggaXMgY2FsbGVkIHdoZW4gdGhlXG4gKiB0YXNrIGhhcyBzdWNjZWVkZWQsIG9yIGFmdGVyIHRoZSBmaW5hbCBmYWlsZWQgYXR0ZW1wdC4gSXQgcmVjZWl2ZXMgdGhlIGBlcnJgXG4gKiBhbmQgYHJlc3VsdGAgYXJndW1lbnRzIG9mIHRoZSBsYXN0IGF0dGVtcHQgYXQgY29tcGxldGluZyB0aGUgYHRhc2tgLiBJbnZva2VkXG4gKiB3aXRoIChlcnIsIHJlc3VsdHMpLlxuICpcbiAqIEBleGFtcGxlXG4gKlxuICogLy8gVGhlIGByZXRyeWAgZnVuY3Rpb24gY2FuIGJlIHVzZWQgYXMgYSBzdGFuZC1hbG9uZSBjb250cm9sIGZsb3cgYnkgcGFzc2luZ1xuICogLy8gYSBjYWxsYmFjaywgYXMgc2hvd24gYmVsb3c6XG4gKlxuICogLy8gdHJ5IGNhbGxpbmcgYXBpTWV0aG9kIDMgdGltZXNcbiAqIGFzeW5jLnJldHJ5KDMsIGFwaU1ldGhvZCwgZnVuY3Rpb24oZXJyLCByZXN1bHQpIHtcbiAqICAgICAvLyBkbyBzb21ldGhpbmcgd2l0aCB0aGUgcmVzdWx0XG4gKiB9KTtcbiAqXG4gKiAvLyB0cnkgY2FsbGluZyBhcGlNZXRob2QgMyB0aW1lcywgd2FpdGluZyAyMDAgbXMgYmV0d2VlbiBlYWNoIHJldHJ5XG4gKiBhc3luYy5yZXRyeSh7dGltZXM6IDMsIGludGVydmFsOiAyMDB9LCBhcGlNZXRob2QsIGZ1bmN0aW9uKGVyciwgcmVzdWx0KSB7XG4gKiAgICAgLy8gZG8gc29tZXRoaW5nIHdpdGggdGhlIHJlc3VsdFxuICogfSk7XG4gKlxuICogLy8gdHJ5IGNhbGxpbmcgYXBpTWV0aG9kIDEwIHRpbWVzIHdpdGggZXhwb25lbnRpYWwgYmFja29mZlxuICogLy8gKGkuZS4gaW50ZXJ2YWxzIG9mIDEwMCwgMjAwLCA0MDAsIDgwMCwgMTYwMCwgLi4uIG1pbGxpc2Vjb25kcylcbiAqIGFzeW5jLnJldHJ5KHtcbiAqICAgdGltZXM6IDEwLFxuICogICBpbnRlcnZhbDogZnVuY3Rpb24ocmV0cnlDb3VudCkge1xuICogICAgIHJldHVybiA1MCAqIE1hdGgucG93KDIsIHJldHJ5Q291bnQpO1xuICogICB9XG4gKiB9LCBhcGlNZXRob2QsIGZ1bmN0aW9uKGVyciwgcmVzdWx0KSB7XG4gKiAgICAgLy8gZG8gc29tZXRoaW5nIHdpdGggdGhlIHJlc3VsdFxuICogfSk7XG4gKlxuICogLy8gdHJ5IGNhbGxpbmcgYXBpTWV0aG9kIHRoZSBkZWZhdWx0IDUgdGltZXMgbm8gZGVsYXkgYmV0d2VlbiBlYWNoIHJldHJ5XG4gKiBhc3luYy5yZXRyeShhcGlNZXRob2QsIGZ1bmN0aW9uKGVyciwgcmVzdWx0KSB7XG4gKiAgICAgLy8gZG8gc29tZXRoaW5nIHdpdGggdGhlIHJlc3VsdFxuICogfSk7XG4gKlxuICogLy8gdHJ5IGNhbGxpbmcgYXBpTWV0aG9kIG9ubHkgd2hlbiBlcnJvciBjb25kaXRpb24gc2F0aXNmaWVzLCBhbGwgb3RoZXJcbiAqIC8vIGVycm9ycyB3aWxsIGFib3J0IHRoZSByZXRyeSBjb250cm9sIGZsb3cgYW5kIHJldHVybiB0byBmaW5hbCBjYWxsYmFja1xuICogYXN5bmMucmV0cnkoe1xuICogICBlcnJvckZpbHRlcjogZnVuY3Rpb24oZXJyKSB7XG4gKiAgICAgcmV0dXJuIGVyci5tZXNzYWdlID09PSAnVGVtcG9yYXJ5IGVycm9yJzsgLy8gb25seSByZXRyeSBvbiBhIHNwZWNpZmljIGVycm9yXG4gKiAgIH1cbiAqIH0sIGFwaU1ldGhvZCwgZnVuY3Rpb24oZXJyLCByZXN1bHQpIHtcbiAqICAgICAvLyBkbyBzb21ldGhpbmcgd2l0aCB0aGUgcmVzdWx0XG4gKiB9KTtcbiAqXG4gKiAvLyBJdCBjYW4gYWxzbyBiZSBlbWJlZGRlZCB3aXRoaW4gb3RoZXIgY29udHJvbCBmbG93IGZ1bmN0aW9ucyB0byByZXRyeVxuICogLy8gaW5kaXZpZHVhbCBtZXRob2RzIHRoYXQgYXJlIG5vdCBhcyByZWxpYWJsZSwgbGlrZSB0aGlzOlxuICogYXN5bmMuYXV0byh7XG4gKiAgICAgdXNlcnM6IGFwaS5nZXRVc2Vycy5iaW5kKGFwaSksXG4gKiAgICAgcGF5bWVudHM6IGFzeW5jLnJldHJ5YWJsZSgzLCBhcGkuZ2V0UGF5bWVudHMuYmluZChhcGkpKVxuICogfSwgZnVuY3Rpb24oZXJyLCByZXN1bHRzKSB7XG4gKiAgICAgLy8gZG8gc29tZXRoaW5nIHdpdGggdGhlIHJlc3VsdHNcbiAqIH0pO1xuICpcbiAqL1xuZnVuY3Rpb24gcmV0cnkob3B0cywgdGFzaywgY2FsbGJhY2spIHtcbiAgICB2YXIgREVGQVVMVF9USU1FUyA9IDU7XG4gICAgdmFyIERFRkFVTFRfSU5URVJWQUwgPSAwO1xuXG4gICAgdmFyIG9wdGlvbnMgPSB7XG4gICAgICAgIHRpbWVzOiBERUZBVUxUX1RJTUVTLFxuICAgICAgICBpbnRlcnZhbEZ1bmM6IGNvbnN0YW50JDEoREVGQVVMVF9JTlRFUlZBTClcbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gcGFyc2VUaW1lcyhhY2MsIHQpIHtcbiAgICAgICAgaWYgKHR5cGVvZiB0ID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgYWNjLnRpbWVzID0gK3QudGltZXMgfHwgREVGQVVMVF9USU1FUztcblxuICAgICAgICAgICAgYWNjLmludGVydmFsRnVuYyA9IHR5cGVvZiB0LmludGVydmFsID09PSAnZnVuY3Rpb24nID8gdC5pbnRlcnZhbCA6IGNvbnN0YW50JDEoK3QuaW50ZXJ2YWwgfHwgREVGQVVMVF9JTlRFUlZBTCk7XG5cbiAgICAgICAgICAgIGFjYy5lcnJvckZpbHRlciA9IHQuZXJyb3JGaWx0ZXI7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHQgPT09ICdudW1iZXInIHx8IHR5cGVvZiB0ID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgYWNjLnRpbWVzID0gK3QgfHwgREVGQVVMVF9USU1FUztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgYXJndW1lbnRzIGZvciBhc3luYy5yZXRyeVwiKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoIDwgMyAmJiB0eXBlb2Ygb3B0cyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjYWxsYmFjayA9IHRhc2sgfHwgbm9vcDtcbiAgICAgICAgdGFzayA9IG9wdHM7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcGFyc2VUaW1lcyhvcHRpb25zLCBvcHRzKTtcbiAgICAgICAgY2FsbGJhY2sgPSBjYWxsYmFjayB8fCBub29wO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgdGFzayAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGFyZ3VtZW50cyBmb3IgYXN5bmMucmV0cnlcIik7XG4gICAgfVxuXG4gICAgdmFyIF90YXNrID0gd3JhcEFzeW5jJDEodGFzayk7XG5cbiAgICB2YXIgYXR0ZW1wdCA9IDE7XG4gICAgZnVuY3Rpb24gcmV0cnlBdHRlbXB0KCkge1xuICAgICAgICBfdGFzayhmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgICAgICBpZiAoZXJyICYmIGF0dGVtcHQrKyA8IG9wdGlvbnMudGltZXMgJiYgKHR5cGVvZiBvcHRpb25zLmVycm9yRmlsdGVyICE9ICdmdW5jdGlvbicgfHwgb3B0aW9ucy5lcnJvckZpbHRlcihlcnIpKSkge1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQocmV0cnlBdHRlbXB0LCBvcHRpb25zLmludGVydmFsRnVuYyhhdHRlbXB0KSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNhbGxiYWNrLmFwcGx5KG51bGwsIGFyZ3VtZW50cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHJ5QXR0ZW1wdCgpO1xufVxuXG4vKipcbiAqIEEgY2xvc2UgcmVsYXRpdmUgb2YgW2ByZXRyeWBde0BsaW5rIG1vZHVsZTpDb250cm9sRmxvdy5yZXRyeX0uICBUaGlzIG1ldGhvZFxuICogd3JhcHMgYSB0YXNrIGFuZCBtYWtlcyBpdCByZXRyeWFibGUsIHJhdGhlciB0aGFuIGltbWVkaWF0ZWx5IGNhbGxpbmcgaXRcbiAqIHdpdGggcmV0cmllcy5cbiAqXG4gKiBAbmFtZSByZXRyeWFibGVcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Q29udHJvbEZsb3dcbiAqIEBtZXRob2RcbiAqIEBzZWUgW2FzeW5jLnJldHJ5XXtAbGluayBtb2R1bGU6Q29udHJvbEZsb3cucmV0cnl9XG4gKiBAY2F0ZWdvcnkgQ29udHJvbCBGbG93XG4gKiBAcGFyYW0ge09iamVjdHxudW1iZXJ9IFtvcHRzID0ge3RpbWVzOiA1LCBpbnRlcnZhbDogMH18IDVdIC0gb3B0aW9uYWxcbiAqIG9wdGlvbnMsIGV4YWN0bHkgdGhlIHNhbWUgYXMgZnJvbSBgcmV0cnlgXG4gKiBAcGFyYW0ge0FzeW5jRnVuY3Rpb259IHRhc2sgLSB0aGUgYXN5bmNocm9ub3VzIGZ1bmN0aW9uIHRvIHdyYXAuXG4gKiBUaGlzIGZ1bmN0aW9uIHdpbGwgYmUgcGFzc2VkIGFueSBhcmd1bWVudHMgcGFzc2VkIHRvIHRoZSByZXR1cm5lZCB3cmFwcGVyLlxuICogSW52b2tlZCB3aXRoICguLi5hcmdzLCBjYWxsYmFjaykuXG4gKiBAcmV0dXJucyB7QXN5bmNGdW5jdGlvbn0gVGhlIHdyYXBwZWQgZnVuY3Rpb24sIHdoaWNoIHdoZW4gaW52b2tlZCwgd2lsbFxuICogcmV0cnkgb24gYW4gZXJyb3IsIGJhc2VkIG9uIHRoZSBwYXJhbWV0ZXJzIHNwZWNpZmllZCBpbiBgb3B0c2AuXG4gKiBUaGlzIGZ1bmN0aW9uIHdpbGwgYWNjZXB0IHRoZSBzYW1lIHBhcmFtZXRlcnMgYXMgYHRhc2tgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBhc3luYy5hdXRvKHtcbiAqICAgICBkZXAxOiBhc3luYy5yZXRyeWFibGUoMywgZ2V0RnJvbUZsYWt5U2VydmljZSksXG4gKiAgICAgcHJvY2VzczogW1wiZGVwMVwiLCBhc3luYy5yZXRyeWFibGUoMywgZnVuY3Rpb24gKHJlc3VsdHMsIGNiKSB7XG4gKiAgICAgICAgIG1heWJlUHJvY2Vzc0RhdGEocmVzdWx0cy5kZXAxLCBjYik7XG4gKiAgICAgfSldXG4gKiB9LCBjYWxsYmFjayk7XG4gKi9cbnZhciByZXRyeWFibGUgPSBmdW5jdGlvbiAob3B0cywgdGFzaykge1xuICAgIGlmICghdGFzaykge1xuICAgICAgICB0YXNrID0gb3B0cztcbiAgICAgICAgb3B0cyA9IG51bGw7XG4gICAgfVxuICAgIHZhciBfdGFzayA9IHdyYXBBc3luYyQxKHRhc2spO1xuICAgIHJldHVybiBpbml0aWFsUGFyYW1zKGZ1bmN0aW9uIChhcmdzLCBjYWxsYmFjaykge1xuICAgICAgICBmdW5jdGlvbiB0YXNrRm4oY2IpIHtcbiAgICAgICAgICAgIF90YXNrLmFwcGx5KG51bGwsIGFyZ3MuY29uY2F0KGNiKSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob3B0cykgcmV0cnkob3B0cywgdGFza0ZuLCBjYWxsYmFjayk7ZWxzZSByZXRyeSh0YXNrRm4sIGNhbGxiYWNrKTtcbiAgICB9KTtcbn07XG5cbi8qKlxuICogUnVuIHRoZSBmdW5jdGlvbnMgaW4gdGhlIGB0YXNrc2AgY29sbGVjdGlvbiBpbiBzZXJpZXMsIGVhY2ggb25lIHJ1bm5pbmcgb25jZVxuICogdGhlIHByZXZpb3VzIGZ1bmN0aW9uIGhhcyBjb21wbGV0ZWQuIElmIGFueSBmdW5jdGlvbnMgaW4gdGhlIHNlcmllcyBwYXNzIGFuXG4gKiBlcnJvciB0byBpdHMgY2FsbGJhY2ssIG5vIG1vcmUgZnVuY3Rpb25zIGFyZSBydW4sIGFuZCBgY2FsbGJhY2tgIGlzXG4gKiBpbW1lZGlhdGVseSBjYWxsZWQgd2l0aCB0aGUgdmFsdWUgb2YgdGhlIGVycm9yLiBPdGhlcndpc2UsIGBjYWxsYmFja2BcbiAqIHJlY2VpdmVzIGFuIGFycmF5IG9mIHJlc3VsdHMgd2hlbiBgdGFza3NgIGhhdmUgY29tcGxldGVkLlxuICpcbiAqIEl0IGlzIGFsc28gcG9zc2libGUgdG8gdXNlIGFuIG9iamVjdCBpbnN0ZWFkIG9mIGFuIGFycmF5LiBFYWNoIHByb3BlcnR5IHdpbGxcbiAqIGJlIHJ1biBhcyBhIGZ1bmN0aW9uLCBhbmQgdGhlIHJlc3VsdHMgd2lsbCBiZSBwYXNzZWQgdG8gdGhlIGZpbmFsIGBjYWxsYmFja2BcbiAqIGFzIGFuIG9iamVjdCBpbnN0ZWFkIG9mIGFuIGFycmF5LiBUaGlzIGNhbiBiZSBhIG1vcmUgcmVhZGFibGUgd2F5IG9mIGhhbmRsaW5nXG4gKiAgcmVzdWx0cyBmcm9tIHtAbGluayBhc3luYy5zZXJpZXN9LlxuICpcbiAqICoqTm90ZSoqIHRoYXQgd2hpbGUgbWFueSBpbXBsZW1lbnRhdGlvbnMgcHJlc2VydmUgdGhlIG9yZGVyIG9mIG9iamVjdFxuICogcHJvcGVydGllcywgdGhlIFtFQ01BU2NyaXB0IExhbmd1YWdlIFNwZWNpZmljYXRpb25dKGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi81LjEvI3NlYy04LjYpXG4gKiBleHBsaWNpdGx5IHN0YXRlcyB0aGF0XG4gKlxuICogPiBUaGUgbWVjaGFuaWNzIGFuZCBvcmRlciBvZiBlbnVtZXJhdGluZyB0aGUgcHJvcGVydGllcyBpcyBub3Qgc3BlY2lmaWVkLlxuICpcbiAqIFNvIGlmIHlvdSByZWx5IG9uIHRoZSBvcmRlciBpbiB3aGljaCB5b3VyIHNlcmllcyBvZiBmdW5jdGlvbnMgYXJlIGV4ZWN1dGVkLFxuICogYW5kIHdhbnQgdGhpcyB0byB3b3JrIG9uIGFsbCBwbGF0Zm9ybXMsIGNvbnNpZGVyIHVzaW5nIGFuIGFycmF5LlxuICpcbiAqIEBuYW1lIHNlcmllc1xuICogQHN0YXRpY1xuICogQG1lbWJlck9mIG1vZHVsZTpDb250cm9sRmxvd1xuICogQG1ldGhvZFxuICogQGNhdGVnb3J5IENvbnRyb2wgRmxvd1xuICogQHBhcmFtIHtBcnJheXxJdGVyYWJsZXxPYmplY3R9IHRhc2tzIC0gQSBjb2xsZWN0aW9uIGNvbnRhaW5pbmdcbiAqIFthc3luYyBmdW5jdGlvbnNde0BsaW5rIEFzeW5jRnVuY3Rpb259IHRvIHJ1biBpbiBzZXJpZXMuXG4gKiBFYWNoIGZ1bmN0aW9uIGNhbiBjb21wbGV0ZSB3aXRoIGFueSBudW1iZXIgb2Ygb3B0aW9uYWwgYHJlc3VsdGAgdmFsdWVzLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2NhbGxiYWNrXSAtIEFuIG9wdGlvbmFsIGNhbGxiYWNrIHRvIHJ1biBvbmNlIGFsbCB0aGVcbiAqIGZ1bmN0aW9ucyBoYXZlIGNvbXBsZXRlZC4gVGhpcyBmdW5jdGlvbiBnZXRzIGEgcmVzdWx0cyBhcnJheSAob3Igb2JqZWN0KVxuICogY29udGFpbmluZyBhbGwgdGhlIHJlc3VsdCBhcmd1bWVudHMgcGFzc2VkIHRvIHRoZSBgdGFza2AgY2FsbGJhY2tzLiBJbnZva2VkXG4gKiB3aXRoIChlcnIsIHJlc3VsdCkuXG4gKiBAZXhhbXBsZVxuICogYXN5bmMuc2VyaWVzKFtcbiAqICAgICBmdW5jdGlvbihjYWxsYmFjaykge1xuICogICAgICAgICAvLyBkbyBzb21lIHN0dWZmIC4uLlxuICogICAgICAgICBjYWxsYmFjayhudWxsLCAnb25lJyk7XG4gKiAgICAgfSxcbiAqICAgICBmdW5jdGlvbihjYWxsYmFjaykge1xuICogICAgICAgICAvLyBkbyBzb21lIG1vcmUgc3R1ZmYgLi4uXG4gKiAgICAgICAgIGNhbGxiYWNrKG51bGwsICd0d28nKTtcbiAqICAgICB9XG4gKiBdLFxuICogLy8gb3B0aW9uYWwgY2FsbGJhY2tcbiAqIGZ1bmN0aW9uKGVyciwgcmVzdWx0cykge1xuICogICAgIC8vIHJlc3VsdHMgaXMgbm93IGVxdWFsIHRvIFsnb25lJywgJ3R3byddXG4gKiB9KTtcbiAqXG4gKiBhc3luYy5zZXJpZXMoe1xuICogICAgIG9uZTogZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAqICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAqICAgICAgICAgICAgIGNhbGxiYWNrKG51bGwsIDEpO1xuICogICAgICAgICB9LCAyMDApO1xuICogICAgIH0sXG4gKiAgICAgdHdvOiBmdW5jdGlvbihjYWxsYmFjayl7XG4gKiAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gKiAgICAgICAgICAgICBjYWxsYmFjayhudWxsLCAyKTtcbiAqICAgICAgICAgfSwgMTAwKTtcbiAqICAgICB9XG4gKiB9LCBmdW5jdGlvbihlcnIsIHJlc3VsdHMpIHtcbiAqICAgICAvLyByZXN1bHRzIGlzIG5vdyBlcXVhbCB0bzoge29uZTogMSwgdHdvOiAyfVxuICogfSk7XG4gKi9cbmZ1bmN0aW9uIHNlcmllcyh0YXNrcywgY2FsbGJhY2spIHtcbiAgX3BhcmFsbGVsKGVhY2hPZlNlcmllcywgdGFza3MsIGNhbGxiYWNrKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGB0cnVlYCBpZiBhdCBsZWFzdCBvbmUgZWxlbWVudCBpbiB0aGUgYGNvbGxgIHNhdGlzZmllcyBhbiBhc3luYyB0ZXN0LlxuICogSWYgYW55IGl0ZXJhdGVlIGNhbGwgcmV0dXJucyBgdHJ1ZWAsIHRoZSBtYWluIGBjYWxsYmFja2AgaXMgaW1tZWRpYXRlbHlcbiAqIGNhbGxlZC5cbiAqXG4gKiBAbmFtZSBzb21lXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgbW9kdWxlOkNvbGxlY3Rpb25zXG4gKiBAbWV0aG9kXG4gKiBAYWxpYXMgYW55XG4gKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICogQHBhcmFtIHtBcnJheXxJdGVyYWJsZXxPYmplY3R9IGNvbGwgLSBBIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtBc3luY0Z1bmN0aW9ufSBpdGVyYXRlZSAtIEFuIGFzeW5jIHRydXRoIHRlc3QgdG8gYXBwbHkgdG8gZWFjaCBpdGVtXG4gKiBpbiB0aGUgY29sbGVjdGlvbnMgaW4gcGFyYWxsZWwuXG4gKiBUaGUgaXRlcmF0ZWUgc2hvdWxkIGNvbXBsZXRlIHdpdGggYSBib29sZWFuIGByZXN1bHRgIHZhbHVlLlxuICogSW52b2tlZCB3aXRoIChpdGVtLCBjYWxsYmFjaykuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY2FsbGJhY2tdIC0gQSBjYWxsYmFjayB3aGljaCBpcyBjYWxsZWQgYXMgc29vbiBhcyBhbnlcbiAqIGl0ZXJhdGVlIHJldHVybnMgYHRydWVgLCBvciBhZnRlciBhbGwgdGhlIGl0ZXJhdGVlIGZ1bmN0aW9ucyBoYXZlIGZpbmlzaGVkLlxuICogUmVzdWx0IHdpbGwgYmUgZWl0aGVyIGB0cnVlYCBvciBgZmFsc2VgIGRlcGVuZGluZyBvbiB0aGUgdmFsdWVzIG9mIHRoZSBhc3luY1xuICogdGVzdHMuIEludm9rZWQgd2l0aCAoZXJyLCByZXN1bHQpLlxuICogQGV4YW1wbGVcbiAqXG4gKiBhc3luYy5zb21lKFsnZmlsZTEnLCdmaWxlMicsJ2ZpbGUzJ10sIGZ1bmN0aW9uKGZpbGVQYXRoLCBjYWxsYmFjaykge1xuICogICAgIGZzLmFjY2VzcyhmaWxlUGF0aCwgZnVuY3Rpb24oZXJyKSB7XG4gKiAgICAgICAgIGNhbGxiYWNrKG51bGwsICFlcnIpXG4gKiAgICAgfSk7XG4gKiB9LCBmdW5jdGlvbihlcnIsIHJlc3VsdCkge1xuICogICAgIC8vIGlmIHJlc3VsdCBpcyB0cnVlIHRoZW4gYXQgbGVhc3Qgb25lIG9mIHRoZSBmaWxlcyBleGlzdHNcbiAqIH0pO1xuICovXG52YXIgc29tZSA9IGRvUGFyYWxsZWwoX2NyZWF0ZVRlc3RlcihCb29sZWFuLCBpZGVudGl0eSkpO1xuXG4vKipcbiAqIFRoZSBzYW1lIGFzIFtgc29tZWBde0BsaW5rIG1vZHVsZTpDb2xsZWN0aW9ucy5zb21lfSBidXQgcnVucyBhIG1heGltdW0gb2YgYGxpbWl0YCBhc3luYyBvcGVyYXRpb25zIGF0IGEgdGltZS5cbiAqXG4gKiBAbmFtZSBzb21lTGltaXRcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Q29sbGVjdGlvbnNcbiAqIEBtZXRob2RcbiAqIEBzZWUgW2FzeW5jLnNvbWVde0BsaW5rIG1vZHVsZTpDb2xsZWN0aW9ucy5zb21lfVxuICogQGFsaWFzIGFueUxpbWl0XG4gKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICogQHBhcmFtIHtBcnJheXxJdGVyYWJsZXxPYmplY3R9IGNvbGwgLSBBIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtudW1iZXJ9IGxpbWl0IC0gVGhlIG1heGltdW0gbnVtYmVyIG9mIGFzeW5jIG9wZXJhdGlvbnMgYXQgYSB0aW1lLlxuICogQHBhcmFtIHtBc3luY0Z1bmN0aW9ufSBpdGVyYXRlZSAtIEFuIGFzeW5jIHRydXRoIHRlc3QgdG8gYXBwbHkgdG8gZWFjaCBpdGVtXG4gKiBpbiB0aGUgY29sbGVjdGlvbnMgaW4gcGFyYWxsZWwuXG4gKiBUaGUgaXRlcmF0ZWUgc2hvdWxkIGNvbXBsZXRlIHdpdGggYSBib29sZWFuIGByZXN1bHRgIHZhbHVlLlxuICogSW52b2tlZCB3aXRoIChpdGVtLCBjYWxsYmFjaykuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY2FsbGJhY2tdIC0gQSBjYWxsYmFjayB3aGljaCBpcyBjYWxsZWQgYXMgc29vbiBhcyBhbnlcbiAqIGl0ZXJhdGVlIHJldHVybnMgYHRydWVgLCBvciBhZnRlciBhbGwgdGhlIGl0ZXJhdGVlIGZ1bmN0aW9ucyBoYXZlIGZpbmlzaGVkLlxuICogUmVzdWx0IHdpbGwgYmUgZWl0aGVyIGB0cnVlYCBvciBgZmFsc2VgIGRlcGVuZGluZyBvbiB0aGUgdmFsdWVzIG9mIHRoZSBhc3luY1xuICogdGVzdHMuIEludm9rZWQgd2l0aCAoZXJyLCByZXN1bHQpLlxuICovXG52YXIgc29tZUxpbWl0ID0gZG9QYXJhbGxlbExpbWl0KF9jcmVhdGVUZXN0ZXIoQm9vbGVhbiwgaWRlbnRpdHkpKTtcblxuLyoqXG4gKiBUaGUgc2FtZSBhcyBbYHNvbWVgXXtAbGluayBtb2R1bGU6Q29sbGVjdGlvbnMuc29tZX0gYnV0IHJ1bnMgb25seSBhIHNpbmdsZSBhc3luYyBvcGVyYXRpb24gYXQgYSB0aW1lLlxuICpcbiAqIEBuYW1lIHNvbWVTZXJpZXNcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Q29sbGVjdGlvbnNcbiAqIEBtZXRob2RcbiAqIEBzZWUgW2FzeW5jLnNvbWVde0BsaW5rIG1vZHVsZTpDb2xsZWN0aW9ucy5zb21lfVxuICogQGFsaWFzIGFueVNlcmllc1xuICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAqIEBwYXJhbSB7QXJyYXl8SXRlcmFibGV8T2JqZWN0fSBjb2xsIC0gQSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7QXN5bmNGdW5jdGlvbn0gaXRlcmF0ZWUgLSBBbiBhc3luYyB0cnV0aCB0ZXN0IHRvIGFwcGx5IHRvIGVhY2ggaXRlbVxuICogaW4gdGhlIGNvbGxlY3Rpb25zIGluIHNlcmllcy5cbiAqIFRoZSBpdGVyYXRlZSBzaG91bGQgY29tcGxldGUgd2l0aCBhIGJvb2xlYW4gYHJlc3VsdGAgdmFsdWUuXG4gKiBJbnZva2VkIHdpdGggKGl0ZW0sIGNhbGxiYWNrKS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjYWxsYmFja10gLSBBIGNhbGxiYWNrIHdoaWNoIGlzIGNhbGxlZCBhcyBzb29uIGFzIGFueVxuICogaXRlcmF0ZWUgcmV0dXJucyBgdHJ1ZWAsIG9yIGFmdGVyIGFsbCB0aGUgaXRlcmF0ZWUgZnVuY3Rpb25zIGhhdmUgZmluaXNoZWQuXG4gKiBSZXN1bHQgd2lsbCBiZSBlaXRoZXIgYHRydWVgIG9yIGBmYWxzZWAgZGVwZW5kaW5nIG9uIHRoZSB2YWx1ZXMgb2YgdGhlIGFzeW5jXG4gKiB0ZXN0cy4gSW52b2tlZCB3aXRoIChlcnIsIHJlc3VsdCkuXG4gKi9cbnZhciBzb21lU2VyaWVzID0gZG9MaW1pdChzb21lTGltaXQsIDEpO1xuXG4vKipcbiAqIFNvcnRzIGEgbGlzdCBieSB0aGUgcmVzdWx0cyBvZiBydW5uaW5nIGVhY2ggYGNvbGxgIHZhbHVlIHRocm91Z2ggYW4gYXN5bmNcbiAqIGBpdGVyYXRlZWAuXG4gKlxuICogQG5hbWUgc29ydEJ5XG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgbW9kdWxlOkNvbGxlY3Rpb25zXG4gKiBAbWV0aG9kXG4gKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICogQHBhcmFtIHtBcnJheXxJdGVyYWJsZXxPYmplY3R9IGNvbGwgLSBBIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtBc3luY0Z1bmN0aW9ufSBpdGVyYXRlZSAtIEFuIGFzeW5jIGZ1bmN0aW9uIHRvIGFwcGx5IHRvIGVhY2ggaXRlbSBpblxuICogYGNvbGxgLlxuICogVGhlIGl0ZXJhdGVlIHNob3VsZCBjb21wbGV0ZSB3aXRoIGEgdmFsdWUgdG8gdXNlIGFzIHRoZSBzb3J0IGNyaXRlcmlhIGFzXG4gKiBpdHMgYHJlc3VsdGAuXG4gKiBJbnZva2VkIHdpdGggKGl0ZW0sIGNhbGxiYWNrKS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGNhbGxiYWNrIC0gQSBjYWxsYmFjayB3aGljaCBpcyBjYWxsZWQgYWZ0ZXIgYWxsIHRoZVxuICogYGl0ZXJhdGVlYCBmdW5jdGlvbnMgaGF2ZSBmaW5pc2hlZCwgb3IgYW4gZXJyb3Igb2NjdXJzLiBSZXN1bHRzIGlzIHRoZSBpdGVtc1xuICogZnJvbSB0aGUgb3JpZ2luYWwgYGNvbGxgIHNvcnRlZCBieSB0aGUgdmFsdWVzIHJldHVybmVkIGJ5IHRoZSBgaXRlcmF0ZWVgXG4gKiBjYWxscy4gSW52b2tlZCB3aXRoIChlcnIsIHJlc3VsdHMpLlxuICogQGV4YW1wbGVcbiAqXG4gKiBhc3luYy5zb3J0QnkoWydmaWxlMScsJ2ZpbGUyJywnZmlsZTMnXSwgZnVuY3Rpb24oZmlsZSwgY2FsbGJhY2spIHtcbiAqICAgICBmcy5zdGF0KGZpbGUsIGZ1bmN0aW9uKGVyciwgc3RhdHMpIHtcbiAqICAgICAgICAgY2FsbGJhY2soZXJyLCBzdGF0cy5tdGltZSk7XG4gKiAgICAgfSk7XG4gKiB9LCBmdW5jdGlvbihlcnIsIHJlc3VsdHMpIHtcbiAqICAgICAvLyByZXN1bHRzIGlzIG5vdyB0aGUgb3JpZ2luYWwgYXJyYXkgb2YgZmlsZXMgc29ydGVkIGJ5XG4gKiAgICAgLy8gbW9kaWZpZWQgZGF0ZVxuICogfSk7XG4gKlxuICogLy8gQnkgbW9kaWZ5aW5nIHRoZSBjYWxsYmFjayBwYXJhbWV0ZXIgdGhlXG4gKiAvLyBzb3J0aW5nIG9yZGVyIGNhbiBiZSBpbmZsdWVuY2VkOlxuICpcbiAqIC8vIGFzY2VuZGluZyBvcmRlclxuICogYXN5bmMuc29ydEJ5KFsxLDksMyw1XSwgZnVuY3Rpb24oeCwgY2FsbGJhY2spIHtcbiAqICAgICBjYWxsYmFjayhudWxsLCB4KTtcbiAqIH0sIGZ1bmN0aW9uKGVycixyZXN1bHQpIHtcbiAqICAgICAvLyByZXN1bHQgY2FsbGJhY2tcbiAqIH0pO1xuICpcbiAqIC8vIGRlc2NlbmRpbmcgb3JkZXJcbiAqIGFzeW5jLnNvcnRCeShbMSw5LDMsNV0sIGZ1bmN0aW9uKHgsIGNhbGxiYWNrKSB7XG4gKiAgICAgY2FsbGJhY2sobnVsbCwgeCotMSk7ICAgIC8vPC0geCotMSBpbnN0ZWFkIG9mIHgsIHR1cm5zIHRoZSBvcmRlciBhcm91bmRcbiAqIH0sIGZ1bmN0aW9uKGVycixyZXN1bHQpIHtcbiAqICAgICAvLyByZXN1bHQgY2FsbGJhY2tcbiAqIH0pO1xuICovXG5mdW5jdGlvbiBzb3J0QnkoY29sbCwgaXRlcmF0ZWUsIGNhbGxiYWNrKSB7XG4gICAgdmFyIF9pdGVyYXRlZSA9IHdyYXBBc3luYyQxKGl0ZXJhdGVlKTtcbiAgICBtYXAoY29sbCwgZnVuY3Rpb24gKHgsIGNhbGxiYWNrKSB7XG4gICAgICAgIF9pdGVyYXRlZSh4LCBmdW5jdGlvbiAoZXJyLCBjcml0ZXJpYSkge1xuICAgICAgICAgICAgaWYgKGVycikgcmV0dXJuIGNhbGxiYWNrKGVycik7XG4gICAgICAgICAgICBjYWxsYmFjayhudWxsLCB7IHZhbHVlOiB4LCBjcml0ZXJpYTogY3JpdGVyaWEgfSk7XG4gICAgICAgIH0pO1xuICAgIH0sIGZ1bmN0aW9uIChlcnIsIHJlc3VsdHMpIHtcbiAgICAgICAgaWYgKGVycikgcmV0dXJuIGNhbGxiYWNrKGVycik7XG4gICAgICAgIGNhbGxiYWNrKG51bGwsIGFycmF5TWFwKHJlc3VsdHMuc29ydChjb21wYXJhdG9yKSwgYmFzZVByb3BlcnR5KCd2YWx1ZScpKSk7XG4gICAgfSk7XG5cbiAgICBmdW5jdGlvbiBjb21wYXJhdG9yKGxlZnQsIHJpZ2h0KSB7XG4gICAgICAgIHZhciBhID0gbGVmdC5jcml0ZXJpYSxcbiAgICAgICAgICAgIGIgPSByaWdodC5jcml0ZXJpYTtcbiAgICAgICAgcmV0dXJuIGEgPCBiID8gLTEgOiBhID4gYiA/IDEgOiAwO1xuICAgIH1cbn1cblxuLyoqXG4gKiBTZXRzIGEgdGltZSBsaW1pdCBvbiBhbiBhc3luY2hyb25vdXMgZnVuY3Rpb24uIElmIHRoZSBmdW5jdGlvbiBkb2VzIG5vdCBjYWxsXG4gKiBpdHMgY2FsbGJhY2sgd2l0aGluIHRoZSBzcGVjaWZpZWQgbWlsbGlzZWNvbmRzLCBpdCB3aWxsIGJlIGNhbGxlZCB3aXRoIGFcbiAqIHRpbWVvdXQgZXJyb3IuIFRoZSBjb2RlIHByb3BlcnR5IGZvciB0aGUgZXJyb3Igb2JqZWN0IHdpbGwgYmUgYCdFVElNRURPVVQnYC5cbiAqXG4gKiBAbmFtZSB0aW1lb3V0XG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgbW9kdWxlOlV0aWxzXG4gKiBAbWV0aG9kXG4gKiBAY2F0ZWdvcnkgVXRpbFxuICogQHBhcmFtIHtBc3luY0Z1bmN0aW9ufSBhc3luY0ZuIC0gVGhlIGFzeW5jIGZ1bmN0aW9uIHRvIGxpbWl0IGluIHRpbWUuXG4gKiBAcGFyYW0ge251bWJlcn0gbWlsbGlzZWNvbmRzIC0gVGhlIHNwZWNpZmllZCB0aW1lIGxpbWl0LlxuICogQHBhcmFtIHsqfSBbaW5mb10gLSBBbnkgdmFyaWFibGUgeW91IHdhbnQgYXR0YWNoZWQgKGBzdHJpbmdgLCBgb2JqZWN0YCwgZXRjKVxuICogdG8gdGltZW91dCBFcnJvciBmb3IgbW9yZSBpbmZvcm1hdGlvbi4uXG4gKiBAcmV0dXJucyB7QXN5bmNGdW5jdGlvbn0gUmV0dXJucyBhIHdyYXBwZWQgZnVuY3Rpb24gdGhhdCBjYW4gYmUgdXNlZCB3aXRoIGFueVxuICogb2YgdGhlIGNvbnRyb2wgZmxvdyBmdW5jdGlvbnMuXG4gKiBJbnZva2UgdGhpcyBmdW5jdGlvbiB3aXRoIHRoZSBzYW1lIHBhcmFtZXRlcnMgYXMgeW91IHdvdWxkIGBhc3luY0Z1bmNgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBmdW5jdGlvbiBteUZ1bmN0aW9uKGZvbywgY2FsbGJhY2spIHtcbiAqICAgICBkb0FzeW5jVGFzayhmb28sIGZ1bmN0aW9uKGVyciwgZGF0YSkge1xuICogICAgICAgICAvLyBoYW5kbGUgZXJyb3JzXG4gKiAgICAgICAgIGlmIChlcnIpIHJldHVybiBjYWxsYmFjayhlcnIpO1xuICpcbiAqICAgICAgICAgLy8gZG8gc29tZSBzdHVmZiAuLi5cbiAqXG4gKiAgICAgICAgIC8vIHJldHVybiBwcm9jZXNzZWQgZGF0YVxuICogICAgICAgICByZXR1cm4gY2FsbGJhY2sobnVsbCwgZGF0YSk7XG4gKiAgICAgfSk7XG4gKiB9XG4gKlxuICogdmFyIHdyYXBwZWQgPSBhc3luYy50aW1lb3V0KG15RnVuY3Rpb24sIDEwMDApO1xuICpcbiAqIC8vIGNhbGwgYHdyYXBwZWRgIGFzIHlvdSB3b3VsZCBgbXlGdW5jdGlvbmBcbiAqIHdyYXBwZWQoeyBiYXI6ICdiYXInIH0sIGZ1bmN0aW9uKGVyciwgZGF0YSkge1xuICogICAgIC8vIGlmIGBteUZ1bmN0aW9uYCB0YWtlcyA8IDEwMDAgbXMgdG8gZXhlY3V0ZSwgYGVycmBcbiAqICAgICAvLyBhbmQgYGRhdGFgIHdpbGwgaGF2ZSB0aGVpciBleHBlY3RlZCB2YWx1ZXNcbiAqXG4gKiAgICAgLy8gZWxzZSBgZXJyYCB3aWxsIGJlIGFuIEVycm9yIHdpdGggdGhlIGNvZGUgJ0VUSU1FRE9VVCdcbiAqIH0pO1xuICovXG5mdW5jdGlvbiB0aW1lb3V0KGFzeW5jRm4sIG1pbGxpc2Vjb25kcywgaW5mbykge1xuICAgIHZhciBvcmlnaW5hbENhbGxiYWNrLCB0aW1lcjtcbiAgICB2YXIgdGltZWRPdXQgPSBmYWxzZTtcblxuICAgIGZ1bmN0aW9uIGluamVjdGVkQ2FsbGJhY2soKSB7XG4gICAgICAgIGlmICghdGltZWRPdXQpIHtcbiAgICAgICAgICAgIG9yaWdpbmFsQ2FsbGJhY2suYXBwbHkobnVsbCwgYXJndW1lbnRzKTtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiB0aW1lb3V0Q2FsbGJhY2soKSB7XG4gICAgICAgIHZhciBuYW1lID0gYXN5bmNGbi5uYW1lIHx8ICdhbm9ueW1vdXMnO1xuICAgICAgICB2YXIgZXJyb3IgPSBuZXcgRXJyb3IoJ0NhbGxiYWNrIGZ1bmN0aW9uIFwiJyArIG5hbWUgKyAnXCIgdGltZWQgb3V0LicpO1xuICAgICAgICBlcnJvci5jb2RlID0gJ0VUSU1FRE9VVCc7XG4gICAgICAgIGlmIChpbmZvKSB7XG4gICAgICAgICAgICBlcnJvci5pbmZvID0gaW5mbztcbiAgICAgICAgfVxuICAgICAgICB0aW1lZE91dCA9IHRydWU7XG4gICAgICAgIG9yaWdpbmFsQ2FsbGJhY2soZXJyb3IpO1xuICAgIH1cblxuICAgIHZhciBmbiA9IHdyYXBBc3luYyQxKGFzeW5jRm4pO1xuXG4gICAgcmV0dXJuIGluaXRpYWxQYXJhbXMoZnVuY3Rpb24gKGFyZ3MsIG9yaWdDYWxsYmFjaykge1xuICAgICAgICBvcmlnaW5hbENhbGxiYWNrID0gb3JpZ0NhbGxiYWNrO1xuICAgICAgICAvLyBzZXR1cCB0aW1lciBhbmQgY2FsbCBvcmlnaW5hbCBmdW5jdGlvblxuICAgICAgICB0aW1lciA9IHNldFRpbWVvdXQodGltZW91dENhbGxiYWNrLCBtaWxsaXNlY29uZHMpO1xuICAgICAgICBmbi5hcHBseShudWxsLCBhcmdzLmNvbmNhdChpbmplY3RlZENhbGxiYWNrKSk7XG4gICAgfSk7XG59XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIGZvciB0aG9zZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgb3RoZXIgYGxvZGFzaGAgbWV0aG9kcy4gKi9cbnZhciBuYXRpdmVDZWlsID0gTWF0aC5jZWlsO1xudmFyIG5hdGl2ZU1heCQxID0gTWF0aC5tYXg7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ucmFuZ2VgIGFuZCBgXy5yYW5nZVJpZ2h0YCB3aGljaCBkb2Vzbid0XG4gKiBjb2VyY2UgYXJndW1lbnRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge251bWJlcn0gc3RhcnQgVGhlIHN0YXJ0IG9mIHRoZSByYW5nZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBlbmQgVGhlIGVuZCBvZiB0aGUgcmFuZ2UuXG4gKiBAcGFyYW0ge251bWJlcn0gc3RlcCBUaGUgdmFsdWUgdG8gaW5jcmVtZW50IG9yIGRlY3JlbWVudCBieS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2Zyb21SaWdodF0gU3BlY2lmeSBpdGVyYXRpbmcgZnJvbSByaWdodCB0byBsZWZ0LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSByYW5nZSBvZiBudW1iZXJzLlxuICovXG5mdW5jdGlvbiBiYXNlUmFuZ2Uoc3RhcnQsIGVuZCwgc3RlcCwgZnJvbVJpZ2h0KSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gbmF0aXZlTWF4JDEobmF0aXZlQ2VpbCgoZW5kIC0gc3RhcnQpIC8gKHN0ZXAgfHwgMSkpLCAwKSxcbiAgICAgIHJlc3VsdCA9IEFycmF5KGxlbmd0aCk7XG5cbiAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgcmVzdWx0W2Zyb21SaWdodCA/IGxlbmd0aCA6ICsraW5kZXhdID0gc3RhcnQ7XG4gICAgc3RhcnQgKz0gc3RlcDtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIFRoZSBzYW1lIGFzIFt0aW1lc117QGxpbmsgbW9kdWxlOkNvbnRyb2xGbG93LnRpbWVzfSBidXQgcnVucyBhIG1heGltdW0gb2YgYGxpbWl0YCBhc3luYyBvcGVyYXRpb25zIGF0IGFcbiAqIHRpbWUuXG4gKlxuICogQG5hbWUgdGltZXNMaW1pdFxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIG1vZHVsZTpDb250cm9sRmxvd1xuICogQG1ldGhvZFxuICogQHNlZSBbYXN5bmMudGltZXNde0BsaW5rIG1vZHVsZTpDb250cm9sRmxvdy50aW1lc31cbiAqIEBjYXRlZ29yeSBDb250cm9sIEZsb3dcbiAqIEBwYXJhbSB7bnVtYmVyfSBjb3VudCAtIFRoZSBudW1iZXIgb2YgdGltZXMgdG8gcnVuIHRoZSBmdW5jdGlvbi5cbiAqIEBwYXJhbSB7bnVtYmVyfSBsaW1pdCAtIFRoZSBtYXhpbXVtIG51bWJlciBvZiBhc3luYyBvcGVyYXRpb25zIGF0IGEgdGltZS5cbiAqIEBwYXJhbSB7QXN5bmNGdW5jdGlvbn0gaXRlcmF0ZWUgLSBUaGUgYXN5bmMgZnVuY3Rpb24gdG8gY2FsbCBgbmAgdGltZXMuXG4gKiBJbnZva2VkIHdpdGggdGhlIGl0ZXJhdGlvbiBpbmRleCBhbmQgYSBjYWxsYmFjazogKG4sIG5leHQpLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gY2FsbGJhY2sgLSBzZWUgW2FzeW5jLm1hcF17QGxpbmsgbW9kdWxlOkNvbGxlY3Rpb25zLm1hcH0uXG4gKi9cbmZ1bmN0aW9uIHRpbWVMaW1pdChjb3VudCwgbGltaXQsIGl0ZXJhdGVlLCBjYWxsYmFjaykge1xuICB2YXIgX2l0ZXJhdGVlID0gd3JhcEFzeW5jJDEoaXRlcmF0ZWUpO1xuICBtYXBMaW1pdChiYXNlUmFuZ2UoMCwgY291bnQsIDEpLCBsaW1pdCwgX2l0ZXJhdGVlLCBjYWxsYmFjayk7XG59XG5cbi8qKlxuICogQ2FsbHMgdGhlIGBpdGVyYXRlZWAgZnVuY3Rpb24gYG5gIHRpbWVzLCBhbmQgYWNjdW11bGF0ZXMgcmVzdWx0cyBpbiB0aGUgc2FtZVxuICogbWFubmVyIHlvdSB3b3VsZCB1c2Ugd2l0aCBbbWFwXXtAbGluayBtb2R1bGU6Q29sbGVjdGlvbnMubWFwfS5cbiAqXG4gKiBAbmFtZSB0aW1lc1xuICogQHN0YXRpY1xuICogQG1lbWJlck9mIG1vZHVsZTpDb250cm9sRmxvd1xuICogQG1ldGhvZFxuICogQHNlZSBbYXN5bmMubWFwXXtAbGluayBtb2R1bGU6Q29sbGVjdGlvbnMubWFwfVxuICogQGNhdGVnb3J5IENvbnRyb2wgRmxvd1xuICogQHBhcmFtIHtudW1iZXJ9IG4gLSBUaGUgbnVtYmVyIG9mIHRpbWVzIHRvIHJ1biB0aGUgZnVuY3Rpb24uXG4gKiBAcGFyYW0ge0FzeW5jRnVuY3Rpb259IGl0ZXJhdGVlIC0gVGhlIGFzeW5jIGZ1bmN0aW9uIHRvIGNhbGwgYG5gIHRpbWVzLlxuICogSW52b2tlZCB3aXRoIHRoZSBpdGVyYXRpb24gaW5kZXggYW5kIGEgY2FsbGJhY2s6IChuLCBuZXh0KS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGNhbGxiYWNrIC0gc2VlIHtAbGluayBtb2R1bGU6Q29sbGVjdGlvbnMubWFwfS5cbiAqIEBleGFtcGxlXG4gKlxuICogLy8gUHJldGVuZCB0aGlzIGlzIHNvbWUgY29tcGxpY2F0ZWQgYXN5bmMgZmFjdG9yeVxuICogdmFyIGNyZWF0ZVVzZXIgPSBmdW5jdGlvbihpZCwgY2FsbGJhY2spIHtcbiAqICAgICBjYWxsYmFjayhudWxsLCB7XG4gKiAgICAgICAgIGlkOiAndXNlcicgKyBpZFxuICogICAgIH0pO1xuICogfTtcbiAqXG4gKiAvLyBnZW5lcmF0ZSA1IHVzZXJzXG4gKiBhc3luYy50aW1lcyg1LCBmdW5jdGlvbihuLCBuZXh0KSB7XG4gKiAgICAgY3JlYXRlVXNlcihuLCBmdW5jdGlvbihlcnIsIHVzZXIpIHtcbiAqICAgICAgICAgbmV4dChlcnIsIHVzZXIpO1xuICogICAgIH0pO1xuICogfSwgZnVuY3Rpb24oZXJyLCB1c2Vycykge1xuICogICAgIC8vIHdlIHNob3VsZCBub3cgaGF2ZSA1IHVzZXJzXG4gKiB9KTtcbiAqL1xudmFyIHRpbWVzID0gZG9MaW1pdCh0aW1lTGltaXQsIEluZmluaXR5KTtcblxuLyoqXG4gKiBUaGUgc2FtZSBhcyBbdGltZXNde0BsaW5rIG1vZHVsZTpDb250cm9sRmxvdy50aW1lc30gYnV0IHJ1bnMgb25seSBhIHNpbmdsZSBhc3luYyBvcGVyYXRpb24gYXQgYSB0aW1lLlxuICpcbiAqIEBuYW1lIHRpbWVzU2VyaWVzXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgbW9kdWxlOkNvbnRyb2xGbG93XG4gKiBAbWV0aG9kXG4gKiBAc2VlIFthc3luYy50aW1lc117QGxpbmsgbW9kdWxlOkNvbnRyb2xGbG93LnRpbWVzfVxuICogQGNhdGVnb3J5IENvbnRyb2wgRmxvd1xuICogQHBhcmFtIHtudW1iZXJ9IG4gLSBUaGUgbnVtYmVyIG9mIHRpbWVzIHRvIHJ1biB0aGUgZnVuY3Rpb24uXG4gKiBAcGFyYW0ge0FzeW5jRnVuY3Rpb259IGl0ZXJhdGVlIC0gVGhlIGFzeW5jIGZ1bmN0aW9uIHRvIGNhbGwgYG5gIHRpbWVzLlxuICogSW52b2tlZCB3aXRoIHRoZSBpdGVyYXRpb24gaW5kZXggYW5kIGEgY2FsbGJhY2s6IChuLCBuZXh0KS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGNhbGxiYWNrIC0gc2VlIHtAbGluayBtb2R1bGU6Q29sbGVjdGlvbnMubWFwfS5cbiAqL1xudmFyIHRpbWVzU2VyaWVzID0gZG9MaW1pdCh0aW1lTGltaXQsIDEpO1xuXG4vKipcbiAqIEEgcmVsYXRpdmUgb2YgYHJlZHVjZWAuICBUYWtlcyBhbiBPYmplY3Qgb3IgQXJyYXksIGFuZCBpdGVyYXRlcyBvdmVyIGVhY2hcbiAqIGVsZW1lbnQgaW4gc2VyaWVzLCBlYWNoIHN0ZXAgcG90ZW50aWFsbHkgbXV0YXRpbmcgYW4gYGFjY3VtdWxhdG9yYCB2YWx1ZS5cbiAqIFRoZSB0eXBlIG9mIHRoZSBhY2N1bXVsYXRvciBkZWZhdWx0cyB0byB0aGUgdHlwZSBvZiBjb2xsZWN0aW9uIHBhc3NlZCBpbi5cbiAqXG4gKiBAbmFtZSB0cmFuc2Zvcm1cbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6Q29sbGVjdGlvbnNcbiAqIEBtZXRob2RcbiAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gKiBAcGFyYW0ge0FycmF5fEl0ZXJhYmxlfE9iamVjdH0gY29sbCAtIEEgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0geyp9IFthY2N1bXVsYXRvcl0gLSBUaGUgaW5pdGlhbCBzdGF0ZSBvZiB0aGUgdHJhbnNmb3JtLiAgSWYgb21pdHRlZCxcbiAqIGl0IHdpbGwgZGVmYXVsdCB0byBhbiBlbXB0eSBPYmplY3Qgb3IgQXJyYXksIGRlcGVuZGluZyBvbiB0aGUgdHlwZSBvZiBgY29sbGBcbiAqIEBwYXJhbSB7QXN5bmNGdW5jdGlvbn0gaXRlcmF0ZWUgLSBBIGZ1bmN0aW9uIGFwcGxpZWQgdG8gZWFjaCBpdGVtIGluIHRoZVxuICogY29sbGVjdGlvbiB0aGF0IHBvdGVudGlhbGx5IG1vZGlmaWVzIHRoZSBhY2N1bXVsYXRvci5cbiAqIEludm9rZWQgd2l0aCAoYWNjdW11bGF0b3IsIGl0ZW0sIGtleSwgY2FsbGJhY2spLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2NhbGxiYWNrXSAtIEEgY2FsbGJhY2sgd2hpY2ggaXMgY2FsbGVkIGFmdGVyIGFsbCB0aGVcbiAqIGBpdGVyYXRlZWAgZnVuY3Rpb25zIGhhdmUgZmluaXNoZWQuIFJlc3VsdCBpcyB0aGUgdHJhbnNmb3JtZWQgYWNjdW11bGF0b3IuXG4gKiBJbnZva2VkIHdpdGggKGVyciwgcmVzdWx0KS5cbiAqIEBleGFtcGxlXG4gKlxuICogYXN5bmMudHJhbnNmb3JtKFsxLDIsM10sIGZ1bmN0aW9uKGFjYywgaXRlbSwgaW5kZXgsIGNhbGxiYWNrKSB7XG4gKiAgICAgLy8gcG9pbnRsZXNzIGFzeW5jOlxuICogICAgIHByb2Nlc3MubmV4dFRpY2soZnVuY3Rpb24oKSB7XG4gKiAgICAgICAgIGFjYy5wdXNoKGl0ZW0gKiAyKVxuICogICAgICAgICBjYWxsYmFjayhudWxsKVxuICogICAgIH0pO1xuICogfSwgZnVuY3Rpb24oZXJyLCByZXN1bHQpIHtcbiAqICAgICAvLyByZXN1bHQgaXMgbm93IGVxdWFsIHRvIFsyLCA0LCA2XVxuICogfSk7XG4gKlxuICogQGV4YW1wbGVcbiAqXG4gKiBhc3luYy50cmFuc2Zvcm0oe2E6IDEsIGI6IDIsIGM6IDN9LCBmdW5jdGlvbiAob2JqLCB2YWwsIGtleSwgY2FsbGJhY2spIHtcbiAqICAgICBzZXRJbW1lZGlhdGUoZnVuY3Rpb24gKCkge1xuICogICAgICAgICBvYmpba2V5XSA9IHZhbCAqIDI7XG4gKiAgICAgICAgIGNhbGxiYWNrKCk7XG4gKiAgICAgfSlcbiAqIH0sIGZ1bmN0aW9uIChlcnIsIHJlc3VsdCkge1xuICogICAgIC8vIHJlc3VsdCBpcyBlcXVhbCB0byB7YTogMiwgYjogNCwgYzogNn1cbiAqIH0pXG4gKi9cbmZ1bmN0aW9uIHRyYW5zZm9ybShjb2xsLCBhY2N1bXVsYXRvciwgaXRlcmF0ZWUsIGNhbGxiYWNrKSB7XG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPD0gMykge1xuICAgICAgICBjYWxsYmFjayA9IGl0ZXJhdGVlO1xuICAgICAgICBpdGVyYXRlZSA9IGFjY3VtdWxhdG9yO1xuICAgICAgICBhY2N1bXVsYXRvciA9IGlzQXJyYXkoY29sbCkgPyBbXSA6IHt9O1xuICAgIH1cbiAgICBjYWxsYmFjayA9IG9uY2UoY2FsbGJhY2sgfHwgbm9vcCk7XG4gICAgdmFyIF9pdGVyYXRlZSA9IHdyYXBBc3luYyQxKGl0ZXJhdGVlKTtcblxuICAgIGVhY2hPZihjb2xsLCBmdW5jdGlvbiAodiwgaywgY2IpIHtcbiAgICAgICAgX2l0ZXJhdGVlKGFjY3VtdWxhdG9yLCB2LCBrLCBjYik7XG4gICAgfSwgZnVuY3Rpb24gKGVycikge1xuICAgICAgICBjYWxsYmFjayhlcnIsIGFjY3VtdWxhdG9yKTtcbiAgICB9KTtcbn1cblxuLyoqXG4gKiBVbmRvZXMgYSBbbWVtb2l6ZV17QGxpbmsgbW9kdWxlOlV0aWxzLm1lbW9pemV9ZCBmdW5jdGlvbiwgcmV2ZXJ0aW5nIGl0IHRvIHRoZSBvcmlnaW5hbCxcbiAqIHVubWVtb2l6ZWQgZm9ybS4gSGFuZHkgZm9yIHRlc3RpbmcuXG4gKlxuICogQG5hbWUgdW5tZW1vaXplXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgbW9kdWxlOlV0aWxzXG4gKiBAbWV0aG9kXG4gKiBAc2VlIFthc3luYy5tZW1vaXplXXtAbGluayBtb2R1bGU6VXRpbHMubWVtb2l6ZX1cbiAqIEBjYXRlZ29yeSBVdGlsXG4gKiBAcGFyYW0ge0FzeW5jRnVuY3Rpb259IGZuIC0gdGhlIG1lbW9pemVkIGZ1bmN0aW9uXG4gKiBAcmV0dXJucyB7QXN5bmNGdW5jdGlvbn0gYSBmdW5jdGlvbiB0aGF0IGNhbGxzIHRoZSBvcmlnaW5hbCB1bm1lbW9pemVkIGZ1bmN0aW9uXG4gKi9cbmZ1bmN0aW9uIHVubWVtb2l6ZShmbikge1xuICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiAoZm4udW5tZW1vaXplZCB8fCBmbikuYXBwbHkobnVsbCwgYXJndW1lbnRzKTtcbiAgICB9O1xufVxuXG4vKipcbiAqIFJlcGVhdGVkbHkgY2FsbCBgaXRlcmF0ZWVgLCB3aGlsZSBgdGVzdGAgcmV0dXJucyBgdHJ1ZWAuIENhbGxzIGBjYWxsYmFja2Agd2hlblxuICogc3RvcHBlZCwgb3IgYW4gZXJyb3Igb2NjdXJzLlxuICpcbiAqIEBuYW1lIHdoaWxzdFxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIG1vZHVsZTpDb250cm9sRmxvd1xuICogQG1ldGhvZFxuICogQGNhdGVnb3J5IENvbnRyb2wgRmxvd1xuICogQHBhcmFtIHtGdW5jdGlvbn0gdGVzdCAtIHN5bmNocm9ub3VzIHRydXRoIHRlc3QgdG8gcGVyZm9ybSBiZWZvcmUgZWFjaFxuICogZXhlY3V0aW9uIG9mIGBpdGVyYXRlZWAuIEludm9rZWQgd2l0aCAoKS5cbiAqIEBwYXJhbSB7QXN5bmNGdW5jdGlvbn0gaXRlcmF0ZWUgLSBBbiBhc3luYyBmdW5jdGlvbiB3aGljaCBpcyBjYWxsZWQgZWFjaCB0aW1lXG4gKiBgdGVzdGAgcGFzc2VzLiBJbnZva2VkIHdpdGggKGNhbGxiYWNrKS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjYWxsYmFja10gLSBBIGNhbGxiYWNrIHdoaWNoIGlzIGNhbGxlZCBhZnRlciB0aGUgdGVzdFxuICogZnVuY3Rpb24gaGFzIGZhaWxlZCBhbmQgcmVwZWF0ZWQgZXhlY3V0aW9uIG9mIGBpdGVyYXRlZWAgaGFzIHN0b3BwZWQuIGBjYWxsYmFja2BcbiAqIHdpbGwgYmUgcGFzc2VkIGFuIGVycm9yIGFuZCBhbnkgYXJndW1lbnRzIHBhc3NlZCB0byB0aGUgZmluYWwgYGl0ZXJhdGVlYCdzXG4gKiBjYWxsYmFjay4gSW52b2tlZCB3aXRoIChlcnIsIFtyZXN1bHRzXSk7XG4gKiBAcmV0dXJucyB1bmRlZmluZWRcbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIGNvdW50ID0gMDtcbiAqIGFzeW5jLndoaWxzdChcbiAqICAgICBmdW5jdGlvbigpIHsgcmV0dXJuIGNvdW50IDwgNTsgfSxcbiAqICAgICBmdW5jdGlvbihjYWxsYmFjaykge1xuICogICAgICAgICBjb3VudCsrO1xuICogICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICogICAgICAgICAgICAgY2FsbGJhY2sobnVsbCwgY291bnQpO1xuICogICAgICAgICB9LCAxMDAwKTtcbiAqICAgICB9LFxuICogICAgIGZ1bmN0aW9uIChlcnIsIG4pIHtcbiAqICAgICAgICAgLy8gNSBzZWNvbmRzIGhhdmUgcGFzc2VkLCBuID0gNVxuICogICAgIH1cbiAqICk7XG4gKi9cbmZ1bmN0aW9uIHdoaWxzdCh0ZXN0LCBpdGVyYXRlZSwgY2FsbGJhY2spIHtcbiAgICBjYWxsYmFjayA9IG9ubHlPbmNlKGNhbGxiYWNrIHx8IG5vb3ApO1xuICAgIHZhciBfaXRlcmF0ZWUgPSB3cmFwQXN5bmMkMShpdGVyYXRlZSk7XG4gICAgaWYgKCF0ZXN0KCkpIHJldHVybiBjYWxsYmFjayhudWxsKTtcbiAgICB2YXIgbmV4dCA9IHJlc3QoZnVuY3Rpb24gKGVyciwgYXJncykge1xuICAgICAgICBpZiAoZXJyKSByZXR1cm4gY2FsbGJhY2soZXJyKTtcbiAgICAgICAgaWYgKHRlc3QoKSkgcmV0dXJuIF9pdGVyYXRlZShuZXh0KTtcbiAgICAgICAgY2FsbGJhY2suYXBwbHkobnVsbCwgW251bGxdLmNvbmNhdChhcmdzKSk7XG4gICAgfSk7XG4gICAgX2l0ZXJhdGVlKG5leHQpO1xufVxuXG4vKipcbiAqIFJlcGVhdGVkbHkgY2FsbCBgaXRlcmF0ZWVgIHVudGlsIGB0ZXN0YCByZXR1cm5zIGB0cnVlYC4gQ2FsbHMgYGNhbGxiYWNrYCB3aGVuXG4gKiBzdG9wcGVkLCBvciBhbiBlcnJvciBvY2N1cnMuIGBjYWxsYmFja2Agd2lsbCBiZSBwYXNzZWQgYW4gZXJyb3IgYW5kIGFueVxuICogYXJndW1lbnRzIHBhc3NlZCB0byB0aGUgZmluYWwgYGl0ZXJhdGVlYCdzIGNhbGxiYWNrLlxuICpcbiAqIFRoZSBpbnZlcnNlIG9mIFt3aGlsc3Rde0BsaW5rIG1vZHVsZTpDb250cm9sRmxvdy53aGlsc3R9LlxuICpcbiAqIEBuYW1lIHVudGlsXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgbW9kdWxlOkNvbnRyb2xGbG93XG4gKiBAbWV0aG9kXG4gKiBAc2VlIFthc3luYy53aGlsc3Rde0BsaW5rIG1vZHVsZTpDb250cm9sRmxvdy53aGlsc3R9XG4gKiBAY2F0ZWdvcnkgQ29udHJvbCBGbG93XG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSB0ZXN0IC0gc3luY2hyb25vdXMgdHJ1dGggdGVzdCB0byBwZXJmb3JtIGJlZm9yZSBlYWNoXG4gKiBleGVjdXRpb24gb2YgYGl0ZXJhdGVlYC4gSW52b2tlZCB3aXRoICgpLlxuICogQHBhcmFtIHtBc3luY0Z1bmN0aW9ufSBpdGVyYXRlZSAtIEFuIGFzeW5jIGZ1bmN0aW9uIHdoaWNoIGlzIGNhbGxlZCBlYWNoIHRpbWVcbiAqIGB0ZXN0YCBmYWlscy4gSW52b2tlZCB3aXRoIChjYWxsYmFjaykuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY2FsbGJhY2tdIC0gQSBjYWxsYmFjayB3aGljaCBpcyBjYWxsZWQgYWZ0ZXIgdGhlIHRlc3RcbiAqIGZ1bmN0aW9uIGhhcyBwYXNzZWQgYW5kIHJlcGVhdGVkIGV4ZWN1dGlvbiBvZiBgaXRlcmF0ZWVgIGhhcyBzdG9wcGVkLiBgY2FsbGJhY2tgXG4gKiB3aWxsIGJlIHBhc3NlZCBhbiBlcnJvciBhbmQgYW55IGFyZ3VtZW50cyBwYXNzZWQgdG8gdGhlIGZpbmFsIGBpdGVyYXRlZWAnc1xuICogY2FsbGJhY2suIEludm9rZWQgd2l0aCAoZXJyLCBbcmVzdWx0c10pO1xuICovXG5mdW5jdGlvbiB1bnRpbCh0ZXN0LCBpdGVyYXRlZSwgY2FsbGJhY2spIHtcbiAgICB3aGlsc3QoZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gIXRlc3QuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICB9LCBpdGVyYXRlZSwgY2FsbGJhY2spO1xufVxuXG4vKipcbiAqIFJ1bnMgdGhlIGB0YXNrc2AgYXJyYXkgb2YgZnVuY3Rpb25zIGluIHNlcmllcywgZWFjaCBwYXNzaW5nIHRoZWlyIHJlc3VsdHMgdG9cbiAqIHRoZSBuZXh0IGluIHRoZSBhcnJheS4gSG93ZXZlciwgaWYgYW55IG9mIHRoZSBgdGFza3NgIHBhc3MgYW4gZXJyb3IgdG8gdGhlaXJcbiAqIG93biBjYWxsYmFjaywgdGhlIG5leHQgZnVuY3Rpb24gaXMgbm90IGV4ZWN1dGVkLCBhbmQgdGhlIG1haW4gYGNhbGxiYWNrYCBpc1xuICogaW1tZWRpYXRlbHkgY2FsbGVkIHdpdGggdGhlIGVycm9yLlxuICpcbiAqIEBuYW1lIHdhdGVyZmFsbFxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIG1vZHVsZTpDb250cm9sRmxvd1xuICogQG1ldGhvZFxuICogQGNhdGVnb3J5IENvbnRyb2wgRmxvd1xuICogQHBhcmFtIHtBcnJheX0gdGFza3MgLSBBbiBhcnJheSBvZiBbYXN5bmMgZnVuY3Rpb25zXXtAbGluayBBc3luY0Z1bmN0aW9ufVxuICogdG8gcnVuLlxuICogRWFjaCBmdW5jdGlvbiBzaG91bGQgY29tcGxldGUgd2l0aCBhbnkgbnVtYmVyIG9mIGByZXN1bHRgIHZhbHVlcy5cbiAqIFRoZSBgcmVzdWx0YCB2YWx1ZXMgd2lsbCBiZSBwYXNzZWQgYXMgYXJndW1lbnRzLCBpbiBvcmRlciwgdG8gdGhlIG5leHQgdGFzay5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjYWxsYmFja10gLSBBbiBvcHRpb25hbCBjYWxsYmFjayB0byBydW4gb25jZSBhbGwgdGhlXG4gKiBmdW5jdGlvbnMgaGF2ZSBjb21wbGV0ZWQuIFRoaXMgd2lsbCBiZSBwYXNzZWQgdGhlIHJlc3VsdHMgb2YgdGhlIGxhc3QgdGFzaydzXG4gKiBjYWxsYmFjay4gSW52b2tlZCB3aXRoIChlcnIsIFtyZXN1bHRzXSkuXG4gKiBAcmV0dXJucyB1bmRlZmluZWRcbiAqIEBleGFtcGxlXG4gKlxuICogYXN5bmMud2F0ZXJmYWxsKFtcbiAqICAgICBmdW5jdGlvbihjYWxsYmFjaykge1xuICogICAgICAgICBjYWxsYmFjayhudWxsLCAnb25lJywgJ3R3bycpO1xuICogICAgIH0sXG4gKiAgICAgZnVuY3Rpb24oYXJnMSwgYXJnMiwgY2FsbGJhY2spIHtcbiAqICAgICAgICAgLy8gYXJnMSBub3cgZXF1YWxzICdvbmUnIGFuZCBhcmcyIG5vdyBlcXVhbHMgJ3R3bydcbiAqICAgICAgICAgY2FsbGJhY2sobnVsbCwgJ3RocmVlJyk7XG4gKiAgICAgfSxcbiAqICAgICBmdW5jdGlvbihhcmcxLCBjYWxsYmFjaykge1xuICogICAgICAgICAvLyBhcmcxIG5vdyBlcXVhbHMgJ3RocmVlJ1xuICogICAgICAgICBjYWxsYmFjayhudWxsLCAnZG9uZScpO1xuICogICAgIH1cbiAqIF0sIGZ1bmN0aW9uIChlcnIsIHJlc3VsdCkge1xuICogICAgIC8vIHJlc3VsdCBub3cgZXF1YWxzICdkb25lJ1xuICogfSk7XG4gKlxuICogLy8gT3IsIHdpdGggbmFtZWQgZnVuY3Rpb25zOlxuICogYXN5bmMud2F0ZXJmYWxsKFtcbiAqICAgICBteUZpcnN0RnVuY3Rpb24sXG4gKiAgICAgbXlTZWNvbmRGdW5jdGlvbixcbiAqICAgICBteUxhc3RGdW5jdGlvbixcbiAqIF0sIGZ1bmN0aW9uIChlcnIsIHJlc3VsdCkge1xuICogICAgIC8vIHJlc3VsdCBub3cgZXF1YWxzICdkb25lJ1xuICogfSk7XG4gKiBmdW5jdGlvbiBteUZpcnN0RnVuY3Rpb24oY2FsbGJhY2spIHtcbiAqICAgICBjYWxsYmFjayhudWxsLCAnb25lJywgJ3R3bycpO1xuICogfVxuICogZnVuY3Rpb24gbXlTZWNvbmRGdW5jdGlvbihhcmcxLCBhcmcyLCBjYWxsYmFjaykge1xuICogICAgIC8vIGFyZzEgbm93IGVxdWFscyAnb25lJyBhbmQgYXJnMiBub3cgZXF1YWxzICd0d28nXG4gKiAgICAgY2FsbGJhY2sobnVsbCwgJ3RocmVlJyk7XG4gKiB9XG4gKiBmdW5jdGlvbiBteUxhc3RGdW5jdGlvbihhcmcxLCBjYWxsYmFjaykge1xuICogICAgIC8vIGFyZzEgbm93IGVxdWFscyAndGhyZWUnXG4gKiAgICAgY2FsbGJhY2sobnVsbCwgJ2RvbmUnKTtcbiAqIH1cbiAqL1xudmFyIHdhdGVyZmFsbCA9IGZ1bmN0aW9uICh0YXNrcywgY2FsbGJhY2spIHtcbiAgICBjYWxsYmFjayA9IG9uY2UoY2FsbGJhY2sgfHwgbm9vcCk7XG4gICAgaWYgKCFpc0FycmF5KHRhc2tzKSkgcmV0dXJuIGNhbGxiYWNrKG5ldyBFcnJvcignRmlyc3QgYXJndW1lbnQgdG8gd2F0ZXJmYWxsIG11c3QgYmUgYW4gYXJyYXkgb2YgZnVuY3Rpb25zJykpO1xuICAgIGlmICghdGFza3MubGVuZ3RoKSByZXR1cm4gY2FsbGJhY2soKTtcbiAgICB2YXIgdGFza0luZGV4ID0gMDtcblxuICAgIGZ1bmN0aW9uIG5leHRUYXNrKGFyZ3MpIHtcbiAgICAgICAgaWYgKHRhc2tJbmRleCA9PT0gdGFza3MubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gY2FsbGJhY2suYXBwbHkobnVsbCwgW251bGxdLmNvbmNhdChhcmdzKSk7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgdGFza0NhbGxiYWNrID0gb25seU9uY2UocmVzdChmdW5jdGlvbiAoZXJyLCBhcmdzKSB7XG4gICAgICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrLmFwcGx5KG51bGwsIFtlcnJdLmNvbmNhdChhcmdzKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBuZXh0VGFzayhhcmdzKTtcbiAgICAgICAgfSkpO1xuXG4gICAgICAgIGFyZ3MucHVzaCh0YXNrQ2FsbGJhY2spO1xuXG4gICAgICAgIHZhciB0YXNrID0gd3JhcEFzeW5jJDEodGFza3NbdGFza0luZGV4KytdKTtcbiAgICAgICAgdGFzay5hcHBseShudWxsLCBhcmdzKTtcbiAgICB9XG5cbiAgICBuZXh0VGFzayhbXSk7XG59O1xuXG4vKipcbiAqIEFuIFwiYXN5bmMgZnVuY3Rpb25cIiBpbiB0aGUgY29udGV4dCBvZiBBc3luYyBpcyBhbiBhc3luY2hyb25vdXMgZnVuY3Rpb24gd2l0aFxuICogYSB2YXJpYWJsZSBudW1iZXIgb2YgcGFyYW1ldGVycywgd2l0aCB0aGUgZmluYWwgcGFyYW1ldGVyIGJlaW5nIGEgY2FsbGJhY2suXG4gKiAoYGZ1bmN0aW9uIChhcmcxLCBhcmcyLCAuLi4sIGNhbGxiYWNrKSB7fWApXG4gKiBUaGUgZmluYWwgY2FsbGJhY2sgaXMgb2YgdGhlIGZvcm0gYGNhbGxiYWNrKGVyciwgcmVzdWx0cy4uLilgLCB3aGljaCBtdXN0IGJlXG4gKiBjYWxsZWQgb25jZSB0aGUgZnVuY3Rpb24gaXMgY29tcGxldGVkLiAgVGhlIGNhbGxiYWNrIHNob3VsZCBiZSBjYWxsZWQgd2l0aCBhXG4gKiBFcnJvciBhcyBpdHMgZmlyc3QgYXJndW1lbnQgdG8gc2lnbmFsIHRoYXQgYW4gZXJyb3Igb2NjdXJyZWQuXG4gKiBPdGhlcndpc2UsIGlmIG5vIGVycm9yIG9jY3VycmVkLCBpdCBzaG91bGQgYmUgY2FsbGVkIHdpdGggYG51bGxgIGFzIHRoZSBmaXJzdFxuICogYXJndW1lbnQsIGFuZCBhbnkgYWRkaXRpb25hbCBgcmVzdWx0YCBhcmd1bWVudHMgdGhhdCBtYXkgYXBwbHksIHRvIHNpZ25hbFxuICogc3VjY2Vzc2Z1bCBjb21wbGV0aW9uLlxuICogVGhlIGNhbGxiYWNrIG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSwgaWRlYWxseSBvbiBhIGxhdGVyIHRpY2sgb2YgdGhlXG4gKiBKYXZhU2NyaXB0IGV2ZW50IGxvb3AuXG4gKlxuICogVGhpcyB0eXBlIG9mIGZ1bmN0aW9uIGlzIGFsc28gcmVmZXJyZWQgdG8gYXMgYSBcIk5vZGUtc3R5bGUgYXN5bmMgZnVuY3Rpb25cIixcbiAqIG9yIGEgXCJjb250aW51YXRpb24gcGFzc2luZy1zdHlsZSBmdW5jdGlvblwiIChDUFMpLiBNb3N0IG9mIHRoZSBtZXRob2RzIG9mIHRoaXNcbiAqIGxpYnJhcnkgYXJlIHRoZW1zZWx2ZXMgQ1BTL05vZGUtc3R5bGUgYXN5bmMgZnVuY3Rpb25zLCBvciBmdW5jdGlvbnMgdGhhdFxuICogcmV0dXJuIENQUy9Ob2RlLXN0eWxlIGFzeW5jIGZ1bmN0aW9ucy5cbiAqXG4gKiBXaGVyZXZlciB3ZSBhY2NlcHQgYSBOb2RlLXN0eWxlIGFzeW5jIGZ1bmN0aW9uLCB3ZSBhbHNvIGRpcmVjdGx5IGFjY2VwdCBhblxuICogW0VTMjAxNyBgYXN5bmNgIGZ1bmN0aW9uXXtAbGluayBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9TdGF0ZW1lbnRzL2FzeW5jX2Z1bmN0aW9ufS5cbiAqIEluIHRoaXMgY2FzZSwgdGhlIGBhc3luY2AgZnVuY3Rpb24gd2lsbCBub3QgYmUgcGFzc2VkIGEgZmluYWwgY2FsbGJhY2tcbiAqIGFyZ3VtZW50LCBhbmQgYW55IHRocm93biBlcnJvciB3aWxsIGJlIHVzZWQgYXMgdGhlIGBlcnJgIGFyZ3VtZW50IG9mIHRoZVxuICogaW1wbGljaXQgY2FsbGJhY2ssIGFuZCB0aGUgcmV0dXJuIHZhbHVlIHdpbGwgYmUgdXNlZCBhcyB0aGUgYHJlc3VsdGAgdmFsdWUuXG4gKiAoaS5lLiBhIGByZWplY3RlZGAgb2YgdGhlIHJldHVybmVkIFByb21pc2UgYmVjb21lcyB0aGUgYGVycmAgY2FsbGJhY2tcbiAqIGFyZ3VtZW50LCBhbmQgYSBgcmVzb2x2ZWRgIHZhbHVlIGJlY29tZXMgdGhlIGByZXN1bHRgLilcbiAqXG4gKiBOb3RlLCBkdWUgdG8gSmF2YVNjcmlwdCBsaW1pdGF0aW9ucywgd2UgY2FuIG9ubHkgZGV0ZWN0IG5hdGl2ZSBgYXN5bmNgXG4gKiBmdW5jdGlvbnMgYW5kIG5vdCB0cmFuc3BpbGllZCBpbXBsZW1lbnRhdGlvbnMuXG4gKiBZb3VyIGVudmlyb25tZW50IG11c3QgaGF2ZSBgYXN5bmNgL2Bhd2FpdGAgc3VwcG9ydCBmb3IgdGhpcyB0byB3b3JrLlxuICogKGUuZy4gTm9kZSA+IHY3LjYsIG9yIGEgcmVjZW50IHZlcnNpb24gb2YgYSBtb2Rlcm4gYnJvd3NlcikuXG4gKiBJZiB5b3UgYXJlIHVzaW5nIGBhc3luY2AgZnVuY3Rpb25zIHRocm91Z2ggYSB0cmFuc3BpbGVyIChlLmcuIEJhYmVsKSwgeW91XG4gKiBtdXN0IHN0aWxsIHdyYXAgdGhlIGZ1bmN0aW9uIHdpdGggW2FzeW5jaWZ5XXtAbGluayBtb2R1bGU6VXRpbHMuYXN5bmNpZnl9LFxuICogYmVjYXVzZSB0aGUgYGFzeW5jIGZ1bmN0aW9uYCB3aWxsIGJlIGNvbXBpbGVkIHRvIGFuIG9yZGluYXJ5IGZ1bmN0aW9uIHRoYXRcbiAqIHJldHVybnMgYSBwcm9taXNlLlxuICpcbiAqIEB0eXBlZGVmIHtGdW5jdGlvbn0gQXN5bmNGdW5jdGlvblxuICogQHN0YXRpY1xuICovXG5cbi8qKlxuICogQXN5bmMgaXMgYSB1dGlsaXR5IG1vZHVsZSB3aGljaCBwcm92aWRlcyBzdHJhaWdodC1mb3J3YXJkLCBwb3dlcmZ1bCBmdW5jdGlvbnNcbiAqIGZvciB3b3JraW5nIHdpdGggYXN5bmNocm9ub3VzIEphdmFTY3JpcHQuIEFsdGhvdWdoIG9yaWdpbmFsbHkgZGVzaWduZWQgZm9yXG4gKiB1c2Ugd2l0aCBbTm9kZS5qc10oaHR0cDovL25vZGVqcy5vcmcpIGFuZCBpbnN0YWxsYWJsZSB2aWFcbiAqIGBucG0gaW5zdGFsbCAtLXNhdmUgYXN5bmNgLCBpdCBjYW4gYWxzbyBiZSB1c2VkIGRpcmVjdGx5IGluIHRoZSBicm93c2VyLlxuICogQG1vZHVsZSBhc3luY1xuICogQHNlZSBBc3luY0Z1bmN0aW9uXG4gKi9cblxuLyoqXG4gKiBBIGNvbGxlY3Rpb24gb2YgYGFzeW5jYCBmdW5jdGlvbnMgZm9yIG1hbmlwdWxhdGluZyBjb2xsZWN0aW9ucywgc3VjaCBhc1xuICogYXJyYXlzIGFuZCBvYmplY3RzLlxuICogQG1vZHVsZSBDb2xsZWN0aW9uc1xuICovXG5cbi8qKlxuICogQSBjb2xsZWN0aW9uIG9mIGBhc3luY2AgZnVuY3Rpb25zIGZvciBjb250cm9sbGluZyB0aGUgZmxvdyB0aHJvdWdoIGEgc2NyaXB0LlxuICogQG1vZHVsZSBDb250cm9sRmxvd1xuICovXG5cbi8qKlxuICogQSBjb2xsZWN0aW9uIG9mIGBhc3luY2AgdXRpbGl0eSBmdW5jdGlvbnMuXG4gKiBAbW9kdWxlIFV0aWxzXG4gKi9cblxudmFyIGluZGV4ID0ge1xuICBhcHBseUVhY2g6IGFwcGx5RWFjaCxcbiAgYXBwbHlFYWNoU2VyaWVzOiBhcHBseUVhY2hTZXJpZXMsXG4gIGFwcGx5OiBhcHBseSQyLFxuICBhc3luY2lmeTogYXN5bmNpZnksXG4gIGF1dG86IGF1dG8sXG4gIGF1dG9JbmplY3Q6IGF1dG9JbmplY3QsXG4gIGNhcmdvOiBjYXJnbyxcbiAgY29tcG9zZTogY29tcG9zZSxcbiAgY29uY2F0OiBjb25jYXQsXG4gIGNvbmNhdFNlcmllczogY29uY2F0U2VyaWVzLFxuICBjb25zdGFudDogY29uc3RhbnQsXG4gIGRldGVjdDogZGV0ZWN0LFxuICBkZXRlY3RMaW1pdDogZGV0ZWN0TGltaXQsXG4gIGRldGVjdFNlcmllczogZGV0ZWN0U2VyaWVzLFxuICBkaXI6IGRpcixcbiAgZG9EdXJpbmc6IGRvRHVyaW5nLFxuICBkb1VudGlsOiBkb1VudGlsLFxuICBkb1doaWxzdDogZG9XaGlsc3QsXG4gIGR1cmluZzogZHVyaW5nLFxuICBlYWNoOiBlYWNoTGltaXQsXG4gIGVhY2hMaW1pdDogZWFjaExpbWl0JDEsXG4gIGVhY2hPZjogZWFjaE9mLFxuICBlYWNoT2ZMaW1pdDogZWFjaE9mTGltaXQsXG4gIGVhY2hPZlNlcmllczogZWFjaE9mU2VyaWVzLFxuICBlYWNoU2VyaWVzOiBlYWNoU2VyaWVzLFxuICBlbnN1cmVBc3luYzogZW5zdXJlQXN5bmMsXG4gIGV2ZXJ5OiBldmVyeSxcbiAgZXZlcnlMaW1pdDogZXZlcnlMaW1pdCxcbiAgZXZlcnlTZXJpZXM6IGV2ZXJ5U2VyaWVzLFxuICBmaWx0ZXI6IGZpbHRlcixcbiAgZmlsdGVyTGltaXQ6IGZpbHRlckxpbWl0LFxuICBmaWx0ZXJTZXJpZXM6IGZpbHRlclNlcmllcyxcbiAgZm9yZXZlcjogZm9yZXZlcixcbiAgZ3JvdXBCeTogZ3JvdXBCeSxcbiAgZ3JvdXBCeUxpbWl0OiBncm91cEJ5TGltaXQsXG4gIGdyb3VwQnlTZXJpZXM6IGdyb3VwQnlTZXJpZXMsXG4gIGxvZzogbG9nLFxuICBtYXA6IG1hcCxcbiAgbWFwTGltaXQ6IG1hcExpbWl0LFxuICBtYXBTZXJpZXM6IG1hcFNlcmllcyxcbiAgbWFwVmFsdWVzOiBtYXBWYWx1ZXMsXG4gIG1hcFZhbHVlc0xpbWl0OiBtYXBWYWx1ZXNMaW1pdCxcbiAgbWFwVmFsdWVzU2VyaWVzOiBtYXBWYWx1ZXNTZXJpZXMsXG4gIG1lbW9pemU6IG1lbW9pemUsXG4gIG5leHRUaWNrOiBuZXh0VGljayxcbiAgcGFyYWxsZWw6IHBhcmFsbGVsTGltaXQsXG4gIHBhcmFsbGVsTGltaXQ6IHBhcmFsbGVsTGltaXQkMSxcbiAgcHJpb3JpdHlRdWV1ZTogcHJpb3JpdHlRdWV1ZSxcbiAgcXVldWU6IHF1ZXVlJDEsXG4gIHJhY2U6IHJhY2UsXG4gIHJlZHVjZTogcmVkdWNlLFxuICByZWR1Y2VSaWdodDogcmVkdWNlUmlnaHQsXG4gIHJlZmxlY3Q6IHJlZmxlY3QsXG4gIHJlZmxlY3RBbGw6IHJlZmxlY3RBbGwsXG4gIHJlamVjdDogcmVqZWN0LFxuICByZWplY3RMaW1pdDogcmVqZWN0TGltaXQsXG4gIHJlamVjdFNlcmllczogcmVqZWN0U2VyaWVzLFxuICByZXRyeTogcmV0cnksXG4gIHJldHJ5YWJsZTogcmV0cnlhYmxlLFxuICBzZXE6IHNlcSQxLFxuICBzZXJpZXM6IHNlcmllcyxcbiAgc2V0SW1tZWRpYXRlOiBzZXRJbW1lZGlhdGUkMSxcbiAgc29tZTogc29tZSxcbiAgc29tZUxpbWl0OiBzb21lTGltaXQsXG4gIHNvbWVTZXJpZXM6IHNvbWVTZXJpZXMsXG4gIHNvcnRCeTogc29ydEJ5LFxuICB0aW1lb3V0OiB0aW1lb3V0LFxuICB0aW1lczogdGltZXMsXG4gIHRpbWVzTGltaXQ6IHRpbWVMaW1pdCxcbiAgdGltZXNTZXJpZXM6IHRpbWVzU2VyaWVzLFxuICB0cmFuc2Zvcm06IHRyYW5zZm9ybSxcbiAgdW5tZW1vaXplOiB1bm1lbW9pemUsXG4gIHVudGlsOiB1bnRpbCxcbiAgd2F0ZXJmYWxsOiB3YXRlcmZhbGwsXG4gIHdoaWxzdDogd2hpbHN0LFxuXG4gIC8vIGFsaWFzZXNcbiAgYWxsOiBldmVyeSxcbiAgYW55OiBzb21lLFxuICBmb3JFYWNoOiBlYWNoTGltaXQsXG4gIGZvckVhY2hTZXJpZXM6IGVhY2hTZXJpZXMsXG4gIGZvckVhY2hMaW1pdDogZWFjaExpbWl0JDEsXG4gIGZvckVhY2hPZjogZWFjaE9mLFxuICBmb3JFYWNoT2ZTZXJpZXM6IGVhY2hPZlNlcmllcyxcbiAgZm9yRWFjaE9mTGltaXQ6IGVhY2hPZkxpbWl0LFxuICBpbmplY3Q6IHJlZHVjZSxcbiAgZm9sZGw6IHJlZHVjZSxcbiAgZm9sZHI6IHJlZHVjZVJpZ2h0LFxuICBzZWxlY3Q6IGZpbHRlcixcbiAgc2VsZWN0TGltaXQ6IGZpbHRlckxpbWl0LFxuICBzZWxlY3RTZXJpZXM6IGZpbHRlclNlcmllcyxcbiAgd3JhcFN5bmM6IGFzeW5jaWZ5XG59O1xuXG5leHBvcnRzWydkZWZhdWx0J10gPSBpbmRleDtcbmV4cG9ydHMuYXBwbHlFYWNoID0gYXBwbHlFYWNoO1xuZXhwb3J0cy5hcHBseUVhY2hTZXJpZXMgPSBhcHBseUVhY2hTZXJpZXM7XG5leHBvcnRzLmFwcGx5ID0gYXBwbHkkMjtcbmV4cG9ydHMuYXN5bmNpZnkgPSBhc3luY2lmeTtcbmV4cG9ydHMuYXV0byA9IGF1dG87XG5leHBvcnRzLmF1dG9JbmplY3QgPSBhdXRvSW5qZWN0O1xuZXhwb3J0cy5jYXJnbyA9IGNhcmdvO1xuZXhwb3J0cy5jb21wb3NlID0gY29tcG9zZTtcbmV4cG9ydHMuY29uY2F0ID0gY29uY2F0O1xuZXhwb3J0cy5jb25jYXRTZXJpZXMgPSBjb25jYXRTZXJpZXM7XG5leHBvcnRzLmNvbnN0YW50ID0gY29uc3RhbnQ7XG5leHBvcnRzLmRldGVjdCA9IGRldGVjdDtcbmV4cG9ydHMuZGV0ZWN0TGltaXQgPSBkZXRlY3RMaW1pdDtcbmV4cG9ydHMuZGV0ZWN0U2VyaWVzID0gZGV0ZWN0U2VyaWVzO1xuZXhwb3J0cy5kaXIgPSBkaXI7XG5leHBvcnRzLmRvRHVyaW5nID0gZG9EdXJpbmc7XG5leHBvcnRzLmRvVW50aWwgPSBkb1VudGlsO1xuZXhwb3J0cy5kb1doaWxzdCA9IGRvV2hpbHN0O1xuZXhwb3J0cy5kdXJpbmcgPSBkdXJpbmc7XG5leHBvcnRzLmVhY2ggPSBlYWNoTGltaXQ7XG5leHBvcnRzLmVhY2hMaW1pdCA9IGVhY2hMaW1pdCQxO1xuZXhwb3J0cy5lYWNoT2YgPSBlYWNoT2Y7XG5leHBvcnRzLmVhY2hPZkxpbWl0ID0gZWFjaE9mTGltaXQ7XG5leHBvcnRzLmVhY2hPZlNlcmllcyA9IGVhY2hPZlNlcmllcztcbmV4cG9ydHMuZWFjaFNlcmllcyA9IGVhY2hTZXJpZXM7XG5leHBvcnRzLmVuc3VyZUFzeW5jID0gZW5zdXJlQXN5bmM7XG5leHBvcnRzLmV2ZXJ5ID0gZXZlcnk7XG5leHBvcnRzLmV2ZXJ5TGltaXQgPSBldmVyeUxpbWl0O1xuZXhwb3J0cy5ldmVyeVNlcmllcyA9IGV2ZXJ5U2VyaWVzO1xuZXhwb3J0cy5maWx0ZXIgPSBmaWx0ZXI7XG5leHBvcnRzLmZpbHRlckxpbWl0ID0gZmlsdGVyTGltaXQ7XG5leHBvcnRzLmZpbHRlclNlcmllcyA9IGZpbHRlclNlcmllcztcbmV4cG9ydHMuZm9yZXZlciA9IGZvcmV2ZXI7XG5leHBvcnRzLmdyb3VwQnkgPSBncm91cEJ5O1xuZXhwb3J0cy5ncm91cEJ5TGltaXQgPSBncm91cEJ5TGltaXQ7XG5leHBvcnRzLmdyb3VwQnlTZXJpZXMgPSBncm91cEJ5U2VyaWVzO1xuZXhwb3J0cy5sb2cgPSBsb2c7XG5leHBvcnRzLm1hcCA9IG1hcDtcbmV4cG9ydHMubWFwTGltaXQgPSBtYXBMaW1pdDtcbmV4cG9ydHMubWFwU2VyaWVzID0gbWFwU2VyaWVzO1xuZXhwb3J0cy5tYXBWYWx1ZXMgPSBtYXBWYWx1ZXM7XG5leHBvcnRzLm1hcFZhbHVlc0xpbWl0ID0gbWFwVmFsdWVzTGltaXQ7XG5leHBvcnRzLm1hcFZhbHVlc1NlcmllcyA9IG1hcFZhbHVlc1NlcmllcztcbmV4cG9ydHMubWVtb2l6ZSA9IG1lbW9pemU7XG5leHBvcnRzLm5leHRUaWNrID0gbmV4dFRpY2s7XG5leHBvcnRzLnBhcmFsbGVsID0gcGFyYWxsZWxMaW1pdDtcbmV4cG9ydHMucGFyYWxsZWxMaW1pdCA9IHBhcmFsbGVsTGltaXQkMTtcbmV4cG9ydHMucHJpb3JpdHlRdWV1ZSA9IHByaW9yaXR5UXVldWU7XG5leHBvcnRzLnF1ZXVlID0gcXVldWUkMTtcbmV4cG9ydHMucmFjZSA9IHJhY2U7XG5leHBvcnRzLnJlZHVjZSA9IHJlZHVjZTtcbmV4cG9ydHMucmVkdWNlUmlnaHQgPSByZWR1Y2VSaWdodDtcbmV4cG9ydHMucmVmbGVjdCA9IHJlZmxlY3Q7XG5leHBvcnRzLnJlZmxlY3RBbGwgPSByZWZsZWN0QWxsO1xuZXhwb3J0cy5yZWplY3QgPSByZWplY3Q7XG5leHBvcnRzLnJlamVjdExpbWl0ID0gcmVqZWN0TGltaXQ7XG5leHBvcnRzLnJlamVjdFNlcmllcyA9IHJlamVjdFNlcmllcztcbmV4cG9ydHMucmV0cnkgPSByZXRyeTtcbmV4cG9ydHMucmV0cnlhYmxlID0gcmV0cnlhYmxlO1xuZXhwb3J0cy5zZXEgPSBzZXEkMTtcbmV4cG9ydHMuc2VyaWVzID0gc2VyaWVzO1xuZXhwb3J0cy5zZXRJbW1lZGlhdGUgPSBzZXRJbW1lZGlhdGUkMTtcbmV4cG9ydHMuc29tZSA9IHNvbWU7XG5leHBvcnRzLnNvbWVMaW1pdCA9IHNvbWVMaW1pdDtcbmV4cG9ydHMuc29tZVNlcmllcyA9IHNvbWVTZXJpZXM7XG5leHBvcnRzLnNvcnRCeSA9IHNvcnRCeTtcbmV4cG9ydHMudGltZW91dCA9IHRpbWVvdXQ7XG5leHBvcnRzLnRpbWVzID0gdGltZXM7XG5leHBvcnRzLnRpbWVzTGltaXQgPSB0aW1lTGltaXQ7XG5leHBvcnRzLnRpbWVzU2VyaWVzID0gdGltZXNTZXJpZXM7XG5leHBvcnRzLnRyYW5zZm9ybSA9IHRyYW5zZm9ybTtcbmV4cG9ydHMudW5tZW1vaXplID0gdW5tZW1vaXplO1xuZXhwb3J0cy51bnRpbCA9IHVudGlsO1xuZXhwb3J0cy53YXRlcmZhbGwgPSB3YXRlcmZhbGw7XG5leHBvcnRzLndoaWxzdCA9IHdoaWxzdDtcbmV4cG9ydHMuYWxsID0gZXZlcnk7XG5leHBvcnRzLmFsbExpbWl0ID0gZXZlcnlMaW1pdDtcbmV4cG9ydHMuYWxsU2VyaWVzID0gZXZlcnlTZXJpZXM7XG5leHBvcnRzLmFueSA9IHNvbWU7XG5leHBvcnRzLmFueUxpbWl0ID0gc29tZUxpbWl0O1xuZXhwb3J0cy5hbnlTZXJpZXMgPSBzb21lU2VyaWVzO1xuZXhwb3J0cy5maW5kID0gZGV0ZWN0O1xuZXhwb3J0cy5maW5kTGltaXQgPSBkZXRlY3RMaW1pdDtcbmV4cG9ydHMuZmluZFNlcmllcyA9IGRldGVjdFNlcmllcztcbmV4cG9ydHMuZm9yRWFjaCA9IGVhY2hMaW1pdDtcbmV4cG9ydHMuZm9yRWFjaFNlcmllcyA9IGVhY2hTZXJpZXM7XG5leHBvcnRzLmZvckVhY2hMaW1pdCA9IGVhY2hMaW1pdCQxO1xuZXhwb3J0cy5mb3JFYWNoT2YgPSBlYWNoT2Y7XG5leHBvcnRzLmZvckVhY2hPZlNlcmllcyA9IGVhY2hPZlNlcmllcztcbmV4cG9ydHMuZm9yRWFjaE9mTGltaXQgPSBlYWNoT2ZMaW1pdDtcbmV4cG9ydHMuaW5qZWN0ID0gcmVkdWNlO1xuZXhwb3J0cy5mb2xkbCA9IHJlZHVjZTtcbmV4cG9ydHMuZm9sZHIgPSByZWR1Y2VSaWdodDtcbmV4cG9ydHMuc2VsZWN0ID0gZmlsdGVyO1xuZXhwb3J0cy5zZWxlY3RMaW1pdCA9IGZpbHRlckxpbWl0O1xuZXhwb3J0cy5zZWxlY3RTZXJpZXMgPSBmaWx0ZXJTZXJpZXM7XG5leHBvcnRzLndyYXBTeW5jID0gYXN5bmNpZnk7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG5cbn0pKSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcblxucmVxdWlyZShcImNvcmUtanMvc2hpbVwiKTtcblxucmVxdWlyZShcInJlZ2VuZXJhdG9yLXJ1bnRpbWUvcnVudGltZVwiKTtcblxucmVxdWlyZShcImNvcmUtanMvZm4vcmVnZXhwL2VzY2FwZVwiKTtcblxuaWYgKGdsb2JhbC5fYmFiZWxQb2x5ZmlsbCkge1xuICB0aHJvdyBuZXcgRXJyb3IoXCJvbmx5IG9uZSBpbnN0YW5jZSBvZiBiYWJlbC1wb2x5ZmlsbCBpcyBhbGxvd2VkXCIpO1xufVxuZ2xvYmFsLl9iYWJlbFBvbHlmaWxsID0gdHJ1ZTtcblxudmFyIERFRklORV9QUk9QRVJUWSA9IFwiZGVmaW5lUHJvcGVydHlcIjtcbmZ1bmN0aW9uIGRlZmluZShPLCBrZXksIHZhbHVlKSB7XG4gIE9ba2V5XSB8fCBPYmplY3RbREVGSU5FX1BST1BFUlRZXShPLCBrZXksIHtcbiAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgdmFsdWU6IHZhbHVlXG4gIH0pO1xufVxuXG5kZWZpbmUoU3RyaW5nLnByb3RvdHlwZSwgXCJwYWRMZWZ0XCIsIFwiXCIucGFkU3RhcnQpO1xuZGVmaW5lKFN0cmluZy5wcm90b3R5cGUsIFwicGFkUmlnaHRcIiwgXCJcIi5wYWRFbmQpO1xuXG5cInBvcCxyZXZlcnNlLHNoaWZ0LGtleXMsdmFsdWVzLGVudHJpZXMsaW5kZXhPZixldmVyeSxzb21lLGZvckVhY2gsbWFwLGZpbHRlcixmaW5kLGZpbmRJbmRleCxpbmNsdWRlcyxqb2luLHNsaWNlLGNvbmNhdCxwdXNoLHNwbGljZSx1bnNoaWZ0LHNvcnQsbGFzdEluZGV4T2YscmVkdWNlLHJlZHVjZVJpZ2h0LGNvcHlXaXRoaW4sZmlsbFwiLnNwbGl0KFwiLFwiKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgW11ba2V5XSAmJiBkZWZpbmUoQXJyYXksIGtleSwgRnVuY3Rpb24uY2FsbC5iaW5kKFtdW2tleV0pKTtcbn0pOyIsIid1c2Ugc3RyaWN0J1xuXG5leHBvcnRzLmJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoXG5leHBvcnRzLnRvQnl0ZUFycmF5ID0gdG9CeXRlQXJyYXlcbmV4cG9ydHMuZnJvbUJ5dGVBcnJheSA9IGZyb21CeXRlQXJyYXlcblxudmFyIGxvb2t1cCA9IFtdXG52YXIgcmV2TG9va3VwID0gW11cbnZhciBBcnIgPSB0eXBlb2YgVWludDhBcnJheSAhPT0gJ3VuZGVmaW5lZCcgPyBVaW50OEFycmF5IDogQXJyYXlcblxudmFyIGNvZGUgPSAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLydcbmZvciAodmFyIGkgPSAwLCBsZW4gPSBjb2RlLmxlbmd0aDsgaSA8IGxlbjsgKytpKSB7XG4gIGxvb2t1cFtpXSA9IGNvZGVbaV1cbiAgcmV2TG9va3VwW2NvZGUuY2hhckNvZGVBdChpKV0gPSBpXG59XG5cbnJldkxvb2t1cFsnLScuY2hhckNvZGVBdCgwKV0gPSA2MlxucmV2TG9va3VwWydfJy5jaGFyQ29kZUF0KDApXSA9IDYzXG5cbmZ1bmN0aW9uIHBsYWNlSG9sZGVyc0NvdW50IChiNjQpIHtcbiAgdmFyIGxlbiA9IGI2NC5sZW5ndGhcbiAgaWYgKGxlbiAlIDQgPiAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHN0cmluZy4gTGVuZ3RoIG11c3QgYmUgYSBtdWx0aXBsZSBvZiA0JylcbiAgfVxuXG4gIC8vIHRoZSBudW1iZXIgb2YgZXF1YWwgc2lnbnMgKHBsYWNlIGhvbGRlcnMpXG4gIC8vIGlmIHRoZXJlIGFyZSB0d28gcGxhY2Vob2xkZXJzLCB0aGFuIHRoZSB0d28gY2hhcmFjdGVycyBiZWZvcmUgaXRcbiAgLy8gcmVwcmVzZW50IG9uZSBieXRlXG4gIC8vIGlmIHRoZXJlIGlzIG9ubHkgb25lLCB0aGVuIHRoZSB0aHJlZSBjaGFyYWN0ZXJzIGJlZm9yZSBpdCByZXByZXNlbnQgMiBieXRlc1xuICAvLyB0aGlzIGlzIGp1c3QgYSBjaGVhcCBoYWNrIHRvIG5vdCBkbyBpbmRleE9mIHR3aWNlXG4gIHJldHVybiBiNjRbbGVuIC0gMl0gPT09ICc9JyA/IDIgOiBiNjRbbGVuIC0gMV0gPT09ICc9JyA/IDEgOiAwXG59XG5cbmZ1bmN0aW9uIGJ5dGVMZW5ndGggKGI2NCkge1xuICAvLyBiYXNlNjQgaXMgNC8zICsgdXAgdG8gdHdvIGNoYXJhY3RlcnMgb2YgdGhlIG9yaWdpbmFsIGRhdGFcbiAgcmV0dXJuIGI2NC5sZW5ndGggKiAzIC8gNCAtIHBsYWNlSG9sZGVyc0NvdW50KGI2NClcbn1cblxuZnVuY3Rpb24gdG9CeXRlQXJyYXkgKGI2NCkge1xuICB2YXIgaSwgaiwgbCwgdG1wLCBwbGFjZUhvbGRlcnMsIGFyclxuICB2YXIgbGVuID0gYjY0Lmxlbmd0aFxuICBwbGFjZUhvbGRlcnMgPSBwbGFjZUhvbGRlcnNDb3VudChiNjQpXG5cbiAgYXJyID0gbmV3IEFycihsZW4gKiAzIC8gNCAtIHBsYWNlSG9sZGVycylcblxuICAvLyBpZiB0aGVyZSBhcmUgcGxhY2Vob2xkZXJzLCBvbmx5IGdldCB1cCB0byB0aGUgbGFzdCBjb21wbGV0ZSA0IGNoYXJzXG4gIGwgPSBwbGFjZUhvbGRlcnMgPiAwID8gbGVuIC0gNCA6IGxlblxuXG4gIHZhciBMID0gMFxuXG4gIGZvciAoaSA9IDAsIGogPSAwOyBpIDwgbDsgaSArPSA0LCBqICs9IDMpIHtcbiAgICB0bXAgPSAocmV2TG9va3VwW2I2NC5jaGFyQ29kZUF0KGkpXSA8PCAxOCkgfCAocmV2TG9va3VwW2I2NC5jaGFyQ29kZUF0KGkgKyAxKV0gPDwgMTIpIHwgKHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpICsgMildIDw8IDYpIHwgcmV2TG9va3VwW2I2NC5jaGFyQ29kZUF0KGkgKyAzKV1cbiAgICBhcnJbTCsrXSA9ICh0bXAgPj4gMTYpICYgMHhGRlxuICAgIGFycltMKytdID0gKHRtcCA+PiA4KSAmIDB4RkZcbiAgICBhcnJbTCsrXSA9IHRtcCAmIDB4RkZcbiAgfVxuXG4gIGlmIChwbGFjZUhvbGRlcnMgPT09IDIpIHtcbiAgICB0bXAgPSAocmV2TG9va3VwW2I2NC5jaGFyQ29kZUF0KGkpXSA8PCAyKSB8IChyZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSArIDEpXSA+PiA0KVxuICAgIGFycltMKytdID0gdG1wICYgMHhGRlxuICB9IGVsc2UgaWYgKHBsYWNlSG9sZGVycyA9PT0gMSkge1xuICAgIHRtcCA9IChyZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSldIDw8IDEwKSB8IChyZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSArIDEpXSA8PCA0KSB8IChyZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSArIDIpXSA+PiAyKVxuICAgIGFycltMKytdID0gKHRtcCA+PiA4KSAmIDB4RkZcbiAgICBhcnJbTCsrXSA9IHRtcCAmIDB4RkZcbiAgfVxuXG4gIHJldHVybiBhcnJcbn1cblxuZnVuY3Rpb24gdHJpcGxldFRvQmFzZTY0IChudW0pIHtcbiAgcmV0dXJuIGxvb2t1cFtudW0gPj4gMTggJiAweDNGXSArIGxvb2t1cFtudW0gPj4gMTIgJiAweDNGXSArIGxvb2t1cFtudW0gPj4gNiAmIDB4M0ZdICsgbG9va3VwW251bSAmIDB4M0ZdXG59XG5cbmZ1bmN0aW9uIGVuY29kZUNodW5rICh1aW50OCwgc3RhcnQsIGVuZCkge1xuICB2YXIgdG1wXG4gIHZhciBvdXRwdXQgPSBbXVxuICBmb3IgKHZhciBpID0gc3RhcnQ7IGkgPCBlbmQ7IGkgKz0gMykge1xuICAgIHRtcCA9ICh1aW50OFtpXSA8PCAxNikgKyAodWludDhbaSArIDFdIDw8IDgpICsgKHVpbnQ4W2kgKyAyXSlcbiAgICBvdXRwdXQucHVzaCh0cmlwbGV0VG9CYXNlNjQodG1wKSlcbiAgfVxuICByZXR1cm4gb3V0cHV0LmpvaW4oJycpXG59XG5cbmZ1bmN0aW9uIGZyb21CeXRlQXJyYXkgKHVpbnQ4KSB7XG4gIHZhciB0bXBcbiAgdmFyIGxlbiA9IHVpbnQ4Lmxlbmd0aFxuICB2YXIgZXh0cmFCeXRlcyA9IGxlbiAlIDMgLy8gaWYgd2UgaGF2ZSAxIGJ5dGUgbGVmdCwgcGFkIDIgYnl0ZXNcbiAgdmFyIG91dHB1dCA9ICcnXG4gIHZhciBwYXJ0cyA9IFtdXG4gIHZhciBtYXhDaHVua0xlbmd0aCA9IDE2MzgzIC8vIG11c3QgYmUgbXVsdGlwbGUgb2YgM1xuXG4gIC8vIGdvIHRocm91Z2ggdGhlIGFycmF5IGV2ZXJ5IHRocmVlIGJ5dGVzLCB3ZSdsbCBkZWFsIHdpdGggdHJhaWxpbmcgc3R1ZmYgbGF0ZXJcbiAgZm9yICh2YXIgaSA9IDAsIGxlbjIgPSBsZW4gLSBleHRyYUJ5dGVzOyBpIDwgbGVuMjsgaSArPSBtYXhDaHVua0xlbmd0aCkge1xuICAgIHBhcnRzLnB1c2goZW5jb2RlQ2h1bmsodWludDgsIGksIChpICsgbWF4Q2h1bmtMZW5ndGgpID4gbGVuMiA/IGxlbjIgOiAoaSArIG1heENodW5rTGVuZ3RoKSkpXG4gIH1cblxuICAvLyBwYWQgdGhlIGVuZCB3aXRoIHplcm9zLCBidXQgbWFrZSBzdXJlIHRvIG5vdCBmb3JnZXQgdGhlIGV4dHJhIGJ5dGVzXG4gIGlmIChleHRyYUJ5dGVzID09PSAxKSB7XG4gICAgdG1wID0gdWludDhbbGVuIC0gMV1cbiAgICBvdXRwdXQgKz0gbG9va3VwW3RtcCA+PiAyXVxuICAgIG91dHB1dCArPSBsb29rdXBbKHRtcCA8PCA0KSAmIDB4M0ZdXG4gICAgb3V0cHV0ICs9ICc9PSdcbiAgfSBlbHNlIGlmIChleHRyYUJ5dGVzID09PSAyKSB7XG4gICAgdG1wID0gKHVpbnQ4W2xlbiAtIDJdIDw8IDgpICsgKHVpbnQ4W2xlbiAtIDFdKVxuICAgIG91dHB1dCArPSBsb29rdXBbdG1wID4+IDEwXVxuICAgIG91dHB1dCArPSBsb29rdXBbKHRtcCA+PiA0KSAmIDB4M0ZdXG4gICAgb3V0cHV0ICs9IGxvb2t1cFsodG1wIDw8IDIpICYgMHgzRl1cbiAgICBvdXRwdXQgKz0gJz0nXG4gIH1cblxuICBwYXJ0cy5wdXNoKG91dHB1dClcblxuICByZXR1cm4gcGFydHMuam9pbignJylcbn1cbiIsIihmdW5jdGlvbiAobW9kdWxlLCBleHBvcnRzKSB7XG4gICd1c2Ugc3RyaWN0JztcblxuICAvLyBVdGlsc1xuICBmdW5jdGlvbiBhc3NlcnQgKHZhbCwgbXNnKSB7XG4gICAgaWYgKCF2YWwpIHRocm93IG5ldyBFcnJvcihtc2cgfHwgJ0Fzc2VydGlvbiBmYWlsZWQnKTtcbiAgfVxuXG4gIC8vIENvdWxkIHVzZSBgaW5oZXJpdHNgIG1vZHVsZSwgYnV0IGRvbid0IHdhbnQgdG8gbW92ZSBmcm9tIHNpbmdsZSBmaWxlXG4gIC8vIGFyY2hpdGVjdHVyZSB5ZXQuXG4gIGZ1bmN0aW9uIGluaGVyaXRzIChjdG9yLCBzdXBlckN0b3IpIHtcbiAgICBjdG9yLnN1cGVyXyA9IHN1cGVyQ3RvcjtcbiAgICB2YXIgVGVtcEN0b3IgPSBmdW5jdGlvbiAoKSB7fTtcbiAgICBUZW1wQ3Rvci5wcm90b3R5cGUgPSBzdXBlckN0b3IucHJvdG90eXBlO1xuICAgIGN0b3IucHJvdG90eXBlID0gbmV3IFRlbXBDdG9yKCk7XG4gICAgY3Rvci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBjdG9yO1xuICB9XG5cbiAgLy8gQk5cblxuICBmdW5jdGlvbiBCTiAobnVtYmVyLCBiYXNlLCBlbmRpYW4pIHtcbiAgICBpZiAoQk4uaXNCTihudW1iZXIpKSB7XG4gICAgICByZXR1cm4gbnVtYmVyO1xuICAgIH1cblxuICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgIHRoaXMud29yZHMgPSBudWxsO1xuICAgIHRoaXMubGVuZ3RoID0gMDtcblxuICAgIC8vIFJlZHVjdGlvbiBjb250ZXh0XG4gICAgdGhpcy5yZWQgPSBudWxsO1xuXG4gICAgaWYgKG51bWJlciAhPT0gbnVsbCkge1xuICAgICAgaWYgKGJhc2UgPT09ICdsZScgfHwgYmFzZSA9PT0gJ2JlJykge1xuICAgICAgICBlbmRpYW4gPSBiYXNlO1xuICAgICAgICBiYXNlID0gMTA7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2luaXQobnVtYmVyIHx8IDAsIGJhc2UgfHwgMTAsIGVuZGlhbiB8fCAnYmUnKTtcbiAgICB9XG4gIH1cbiAgaWYgKHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKSB7XG4gICAgbW9kdWxlLmV4cG9ydHMgPSBCTjtcbiAgfSBlbHNlIHtcbiAgICBleHBvcnRzLkJOID0gQk47XG4gIH1cblxuICBCTi5CTiA9IEJOO1xuICBCTi53b3JkU2l6ZSA9IDI2O1xuXG4gIHZhciBCdWZmZXI7XG4gIHRyeSB7XG4gICAgQnVmZmVyID0gcmVxdWlyZSgnYnVmJyArICdmZXInKS5CdWZmZXI7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgfVxuXG4gIEJOLmlzQk4gPSBmdW5jdGlvbiBpc0JOIChudW0pIHtcbiAgICBpZiAobnVtIGluc3RhbmNlb2YgQk4pIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBudW0gIT09IG51bGwgJiYgdHlwZW9mIG51bSA9PT0gJ29iamVjdCcgJiZcbiAgICAgIG51bS5jb25zdHJ1Y3Rvci53b3JkU2l6ZSA9PT0gQk4ud29yZFNpemUgJiYgQXJyYXkuaXNBcnJheShudW0ud29yZHMpO1xuICB9O1xuXG4gIEJOLm1heCA9IGZ1bmN0aW9uIG1heCAobGVmdCwgcmlnaHQpIHtcbiAgICBpZiAobGVmdC5jbXAocmlnaHQpID4gMCkgcmV0dXJuIGxlZnQ7XG4gICAgcmV0dXJuIHJpZ2h0O1xuICB9O1xuXG4gIEJOLm1pbiA9IGZ1bmN0aW9uIG1pbiAobGVmdCwgcmlnaHQpIHtcbiAgICBpZiAobGVmdC5jbXAocmlnaHQpIDwgMCkgcmV0dXJuIGxlZnQ7XG4gICAgcmV0dXJuIHJpZ2h0O1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5faW5pdCA9IGZ1bmN0aW9uIGluaXQgKG51bWJlciwgYmFzZSwgZW5kaWFuKSB7XG4gICAgaWYgKHR5cGVvZiBudW1iZXIgPT09ICdudW1iZXInKSB7XG4gICAgICByZXR1cm4gdGhpcy5faW5pdE51bWJlcihudW1iZXIsIGJhc2UsIGVuZGlhbik7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBudW1iZXIgPT09ICdvYmplY3QnKSB7XG4gICAgICByZXR1cm4gdGhpcy5faW5pdEFycmF5KG51bWJlciwgYmFzZSwgZW5kaWFuKTtcbiAgICB9XG5cbiAgICBpZiAoYmFzZSA9PT0gJ2hleCcpIHtcbiAgICAgIGJhc2UgPSAxNjtcbiAgICB9XG4gICAgYXNzZXJ0KGJhc2UgPT09IChiYXNlIHwgMCkgJiYgYmFzZSA+PSAyICYmIGJhc2UgPD0gMzYpO1xuXG4gICAgbnVtYmVyID0gbnVtYmVyLnRvU3RyaW5nKCkucmVwbGFjZSgvXFxzKy9nLCAnJyk7XG4gICAgdmFyIHN0YXJ0ID0gMDtcbiAgICBpZiAobnVtYmVyWzBdID09PSAnLScpIHtcbiAgICAgIHN0YXJ0Kys7XG4gICAgfVxuXG4gICAgaWYgKGJhc2UgPT09IDE2KSB7XG4gICAgICB0aGlzLl9wYXJzZUhleChudW1iZXIsIHN0YXJ0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fcGFyc2VCYXNlKG51bWJlciwgYmFzZSwgc3RhcnQpO1xuICAgIH1cblxuICAgIGlmIChudW1iZXJbMF0gPT09ICctJykge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG4gICAgfVxuXG4gICAgdGhpcy5zdHJpcCgpO1xuXG4gICAgaWYgKGVuZGlhbiAhPT0gJ2xlJykgcmV0dXJuO1xuXG4gICAgdGhpcy5faW5pdEFycmF5KHRoaXMudG9BcnJheSgpLCBiYXNlLCBlbmRpYW4pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5faW5pdE51bWJlciA9IGZ1bmN0aW9uIF9pbml0TnVtYmVyIChudW1iZXIsIGJhc2UsIGVuZGlhbikge1xuICAgIGlmIChudW1iZXIgPCAwKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICAgIG51bWJlciA9IC1udW1iZXI7XG4gICAgfVxuICAgIGlmIChudW1iZXIgPCAweDQwMDAwMDApIHtcbiAgICAgIHRoaXMud29yZHMgPSBbIG51bWJlciAmIDB4M2ZmZmZmZiBdO1xuICAgICAgdGhpcy5sZW5ndGggPSAxO1xuICAgIH0gZWxzZSBpZiAobnVtYmVyIDwgMHgxMDAwMDAwMDAwMDAwMCkge1xuICAgICAgdGhpcy53b3JkcyA9IFtcbiAgICAgICAgbnVtYmVyICYgMHgzZmZmZmZmLFxuICAgICAgICAobnVtYmVyIC8gMHg0MDAwMDAwKSAmIDB4M2ZmZmZmZlxuICAgICAgXTtcbiAgICAgIHRoaXMubGVuZ3RoID0gMjtcbiAgICB9IGVsc2Uge1xuICAgICAgYXNzZXJ0KG51bWJlciA8IDB4MjAwMDAwMDAwMDAwMDApOyAvLyAyIF4gNTMgKHVuc2FmZSlcbiAgICAgIHRoaXMud29yZHMgPSBbXG4gICAgICAgIG51bWJlciAmIDB4M2ZmZmZmZixcbiAgICAgICAgKG51bWJlciAvIDB4NDAwMDAwMCkgJiAweDNmZmZmZmYsXG4gICAgICAgIDFcbiAgICAgIF07XG4gICAgICB0aGlzLmxlbmd0aCA9IDM7XG4gICAgfVxuXG4gICAgaWYgKGVuZGlhbiAhPT0gJ2xlJykgcmV0dXJuO1xuXG4gICAgLy8gUmV2ZXJzZSB0aGUgYnl0ZXNcbiAgICB0aGlzLl9pbml0QXJyYXkodGhpcy50b0FycmF5KCksIGJhc2UsIGVuZGlhbik7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl9pbml0QXJyYXkgPSBmdW5jdGlvbiBfaW5pdEFycmF5IChudW1iZXIsIGJhc2UsIGVuZGlhbikge1xuICAgIC8vIFBlcmhhcHMgYSBVaW50OEFycmF5XG4gICAgYXNzZXJ0KHR5cGVvZiBudW1iZXIubGVuZ3RoID09PSAnbnVtYmVyJyk7XG4gICAgaWYgKG51bWJlci5sZW5ndGggPD0gMCkge1xuICAgICAgdGhpcy53b3JkcyA9IFsgMCBdO1xuICAgICAgdGhpcy5sZW5ndGggPSAxO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgdGhpcy5sZW5ndGggPSBNYXRoLmNlaWwobnVtYmVyLmxlbmd0aCAvIDMpO1xuICAgIHRoaXMud29yZHMgPSBuZXcgQXJyYXkodGhpcy5sZW5ndGgpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IDA7XG4gICAgfVxuXG4gICAgdmFyIGosIHc7XG4gICAgdmFyIG9mZiA9IDA7XG4gICAgaWYgKGVuZGlhbiA9PT0gJ2JlJykge1xuICAgICAgZm9yIChpID0gbnVtYmVyLmxlbmd0aCAtIDEsIGogPSAwOyBpID49IDA7IGkgLT0gMykge1xuICAgICAgICB3ID0gbnVtYmVyW2ldIHwgKG51bWJlcltpIC0gMV0gPDwgOCkgfCAobnVtYmVyW2kgLSAyXSA8PCAxNik7XG4gICAgICAgIHRoaXMud29yZHNbal0gfD0gKHcgPDwgb2ZmKSAmIDB4M2ZmZmZmZjtcbiAgICAgICAgdGhpcy53b3Jkc1tqICsgMV0gPSAodyA+Pj4gKDI2IC0gb2ZmKSkgJiAweDNmZmZmZmY7XG4gICAgICAgIG9mZiArPSAyNDtcbiAgICAgICAgaWYgKG9mZiA+PSAyNikge1xuICAgICAgICAgIG9mZiAtPSAyNjtcbiAgICAgICAgICBqKys7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGVuZGlhbiA9PT0gJ2xlJykge1xuICAgICAgZm9yIChpID0gMCwgaiA9IDA7IGkgPCBudW1iZXIubGVuZ3RoOyBpICs9IDMpIHtcbiAgICAgICAgdyA9IG51bWJlcltpXSB8IChudW1iZXJbaSArIDFdIDw8IDgpIHwgKG51bWJlcltpICsgMl0gPDwgMTYpO1xuICAgICAgICB0aGlzLndvcmRzW2pdIHw9ICh3IDw8IG9mZikgJiAweDNmZmZmZmY7XG4gICAgICAgIHRoaXMud29yZHNbaiArIDFdID0gKHcgPj4+ICgyNiAtIG9mZikpICYgMHgzZmZmZmZmO1xuICAgICAgICBvZmYgKz0gMjQ7XG4gICAgICAgIGlmIChvZmYgPj0gMjYpIHtcbiAgICAgICAgICBvZmYgLT0gMjY7XG4gICAgICAgICAgaisrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgZnVuY3Rpb24gcGFyc2VIZXggKHN0ciwgc3RhcnQsIGVuZCkge1xuICAgIHZhciByID0gMDtcbiAgICB2YXIgbGVuID0gTWF0aC5taW4oc3RyLmxlbmd0aCwgZW5kKTtcbiAgICBmb3IgKHZhciBpID0gc3RhcnQ7IGkgPCBsZW47IGkrKykge1xuICAgICAgdmFyIGMgPSBzdHIuY2hhckNvZGVBdChpKSAtIDQ4O1xuXG4gICAgICByIDw8PSA0O1xuXG4gICAgICAvLyAnYScgLSAnZidcbiAgICAgIGlmIChjID49IDQ5ICYmIGMgPD0gNTQpIHtcbiAgICAgICAgciB8PSBjIC0gNDkgKyAweGE7XG5cbiAgICAgIC8vICdBJyAtICdGJ1xuICAgICAgfSBlbHNlIGlmIChjID49IDE3ICYmIGMgPD0gMjIpIHtcbiAgICAgICAgciB8PSBjIC0gMTcgKyAweGE7XG5cbiAgICAgIC8vICcwJyAtICc5J1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgciB8PSBjICYgMHhmO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcjtcbiAgfVxuXG4gIEJOLnByb3RvdHlwZS5fcGFyc2VIZXggPSBmdW5jdGlvbiBfcGFyc2VIZXggKG51bWJlciwgc3RhcnQpIHtcbiAgICAvLyBDcmVhdGUgcG9zc2libHkgYmlnZ2VyIGFycmF5IHRvIGVuc3VyZSB0aGF0IGl0IGZpdHMgdGhlIG51bWJlclxuICAgIHRoaXMubGVuZ3RoID0gTWF0aC5jZWlsKChudW1iZXIubGVuZ3RoIC0gc3RhcnQpIC8gNik7XG4gICAgdGhpcy53b3JkcyA9IG5ldyBBcnJheSh0aGlzLmxlbmd0aCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gMDtcbiAgICB9XG5cbiAgICB2YXIgaiwgdztcbiAgICAvLyBTY2FuIDI0LWJpdCBjaHVua3MgYW5kIGFkZCB0aGVtIHRvIHRoZSBudW1iZXJcbiAgICB2YXIgb2ZmID0gMDtcbiAgICBmb3IgKGkgPSBudW1iZXIubGVuZ3RoIC0gNiwgaiA9IDA7IGkgPj0gc3RhcnQ7IGkgLT0gNikge1xuICAgICAgdyA9IHBhcnNlSGV4KG51bWJlciwgaSwgaSArIDYpO1xuICAgICAgdGhpcy53b3Jkc1tqXSB8PSAodyA8PCBvZmYpICYgMHgzZmZmZmZmO1xuICAgICAgLy8gTk9URTogYDB4M2ZmZmZmYCBpcyBpbnRlbnRpb25hbCBoZXJlLCAyNmJpdHMgbWF4IHNoaWZ0ICsgMjRiaXQgaGV4IGxpbWJcbiAgICAgIHRoaXMud29yZHNbaiArIDFdIHw9IHcgPj4+ICgyNiAtIG9mZikgJiAweDNmZmZmZjtcbiAgICAgIG9mZiArPSAyNDtcbiAgICAgIGlmIChvZmYgPj0gMjYpIHtcbiAgICAgICAgb2ZmIC09IDI2O1xuICAgICAgICBqKys7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChpICsgNiAhPT0gc3RhcnQpIHtcbiAgICAgIHcgPSBwYXJzZUhleChudW1iZXIsIHN0YXJ0LCBpICsgNik7XG4gICAgICB0aGlzLndvcmRzW2pdIHw9ICh3IDw8IG9mZikgJiAweDNmZmZmZmY7XG4gICAgICB0aGlzLndvcmRzW2ogKyAxXSB8PSB3ID4+PiAoMjYgLSBvZmYpICYgMHgzZmZmZmY7XG4gICAgfVxuICAgIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBmdW5jdGlvbiBwYXJzZUJhc2UgKHN0ciwgc3RhcnQsIGVuZCwgbXVsKSB7XG4gICAgdmFyIHIgPSAwO1xuICAgIHZhciBsZW4gPSBNYXRoLm1pbihzdHIubGVuZ3RoLCBlbmQpO1xuICAgIGZvciAodmFyIGkgPSBzdGFydDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICB2YXIgYyA9IHN0ci5jaGFyQ29kZUF0KGkpIC0gNDg7XG5cbiAgICAgIHIgKj0gbXVsO1xuXG4gICAgICAvLyAnYSdcbiAgICAgIGlmIChjID49IDQ5KSB7XG4gICAgICAgIHIgKz0gYyAtIDQ5ICsgMHhhO1xuXG4gICAgICAvLyAnQSdcbiAgICAgIH0gZWxzZSBpZiAoYyA+PSAxNykge1xuICAgICAgICByICs9IGMgLSAxNyArIDB4YTtcblxuICAgICAgLy8gJzAnIC0gJzknXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByICs9IGM7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByO1xuICB9XG5cbiAgQk4ucHJvdG90eXBlLl9wYXJzZUJhc2UgPSBmdW5jdGlvbiBfcGFyc2VCYXNlIChudW1iZXIsIGJhc2UsIHN0YXJ0KSB7XG4gICAgLy8gSW5pdGlhbGl6ZSBhcyB6ZXJvXG4gICAgdGhpcy53b3JkcyA9IFsgMCBdO1xuICAgIHRoaXMubGVuZ3RoID0gMTtcblxuICAgIC8vIEZpbmQgbGVuZ3RoIG9mIGxpbWIgaW4gYmFzZVxuICAgIGZvciAodmFyIGxpbWJMZW4gPSAwLCBsaW1iUG93ID0gMTsgbGltYlBvdyA8PSAweDNmZmZmZmY7IGxpbWJQb3cgKj0gYmFzZSkge1xuICAgICAgbGltYkxlbisrO1xuICAgIH1cbiAgICBsaW1iTGVuLS07XG4gICAgbGltYlBvdyA9IChsaW1iUG93IC8gYmFzZSkgfCAwO1xuXG4gICAgdmFyIHRvdGFsID0gbnVtYmVyLmxlbmd0aCAtIHN0YXJ0O1xuICAgIHZhciBtb2QgPSB0b3RhbCAlIGxpbWJMZW47XG4gICAgdmFyIGVuZCA9IE1hdGgubWluKHRvdGFsLCB0b3RhbCAtIG1vZCkgKyBzdGFydDtcblxuICAgIHZhciB3b3JkID0gMDtcbiAgICBmb3IgKHZhciBpID0gc3RhcnQ7IGkgPCBlbmQ7IGkgKz0gbGltYkxlbikge1xuICAgICAgd29yZCA9IHBhcnNlQmFzZShudW1iZXIsIGksIGkgKyBsaW1iTGVuLCBiYXNlKTtcblxuICAgICAgdGhpcy5pbXVsbihsaW1iUG93KTtcbiAgICAgIGlmICh0aGlzLndvcmRzWzBdICsgd29yZCA8IDB4NDAwMDAwMCkge1xuICAgICAgICB0aGlzLndvcmRzWzBdICs9IHdvcmQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9pYWRkbih3b3JkKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobW9kICE9PSAwKSB7XG4gICAgICB2YXIgcG93ID0gMTtcbiAgICAgIHdvcmQgPSBwYXJzZUJhc2UobnVtYmVyLCBpLCBudW1iZXIubGVuZ3RoLCBiYXNlKTtcblxuICAgICAgZm9yIChpID0gMDsgaSA8IG1vZDsgaSsrKSB7XG4gICAgICAgIHBvdyAqPSBiYXNlO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmltdWxuKHBvdyk7XG4gICAgICBpZiAodGhpcy53b3Jkc1swXSArIHdvcmQgPCAweDQwMDAwMDApIHtcbiAgICAgICAgdGhpcy53b3Jkc1swXSArPSB3b3JkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5faWFkZG4od29yZCk7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5jb3B5ID0gZnVuY3Rpb24gY29weSAoZGVzdCkge1xuICAgIGRlc3Qud29yZHMgPSBuZXcgQXJyYXkodGhpcy5sZW5ndGgpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgZGVzdC53b3Jkc1tpXSA9IHRoaXMud29yZHNbaV07XG4gICAgfVxuICAgIGRlc3QubGVuZ3RoID0gdGhpcy5sZW5ndGg7XG4gICAgZGVzdC5uZWdhdGl2ZSA9IHRoaXMubmVnYXRpdmU7XG4gICAgZGVzdC5yZWQgPSB0aGlzLnJlZDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuY2xvbmUgPSBmdW5jdGlvbiBjbG9uZSAoKSB7XG4gICAgdmFyIHIgPSBuZXcgQk4obnVsbCk7XG4gICAgdGhpcy5jb3B5KHIpO1xuICAgIHJldHVybiByO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5fZXhwYW5kID0gZnVuY3Rpb24gX2V4cGFuZCAoc2l6ZSkge1xuICAgIHdoaWxlICh0aGlzLmxlbmd0aCA8IHNpemUpIHtcbiAgICAgIHRoaXMud29yZHNbdGhpcy5sZW5ndGgrK10gPSAwO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICAvLyBSZW1vdmUgbGVhZGluZyBgMGAgZnJvbSBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLnN0cmlwID0gZnVuY3Rpb24gc3RyaXAgKCkge1xuICAgIHdoaWxlICh0aGlzLmxlbmd0aCA+IDEgJiYgdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCAtIDFdID09PSAwKSB7XG4gICAgICB0aGlzLmxlbmd0aC0tO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fbm9ybVNpZ24oKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX25vcm1TaWduID0gZnVuY3Rpb24gX25vcm1TaWduICgpIHtcbiAgICAvLyAtMCA9IDBcbiAgICBpZiAodGhpcy5sZW5ndGggPT09IDEgJiYgdGhpcy53b3Jkc1swXSA9PT0gMCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pbnNwZWN0ID0gZnVuY3Rpb24gaW5zcGVjdCAoKSB7XG4gICAgcmV0dXJuICh0aGlzLnJlZCA/ICc8Qk4tUjogJyA6ICc8Qk46ICcpICsgdGhpcy50b1N0cmluZygxNikgKyAnPic7XG4gIH07XG5cbiAgLypcblxuICB2YXIgemVyb3MgPSBbXTtcbiAgdmFyIGdyb3VwU2l6ZXMgPSBbXTtcbiAgdmFyIGdyb3VwQmFzZXMgPSBbXTtcblxuICB2YXIgcyA9ICcnO1xuICB2YXIgaSA9IC0xO1xuICB3aGlsZSAoKytpIDwgQk4ud29yZFNpemUpIHtcbiAgICB6ZXJvc1tpXSA9IHM7XG4gICAgcyArPSAnMCc7XG4gIH1cbiAgZ3JvdXBTaXplc1swXSA9IDA7XG4gIGdyb3VwU2l6ZXNbMV0gPSAwO1xuICBncm91cEJhc2VzWzBdID0gMDtcbiAgZ3JvdXBCYXNlc1sxXSA9IDA7XG4gIHZhciBiYXNlID0gMiAtIDE7XG4gIHdoaWxlICgrK2Jhc2UgPCAzNiArIDEpIHtcbiAgICB2YXIgZ3JvdXBTaXplID0gMDtcbiAgICB2YXIgZ3JvdXBCYXNlID0gMTtcbiAgICB3aGlsZSAoZ3JvdXBCYXNlIDwgKDEgPDwgQk4ud29yZFNpemUpIC8gYmFzZSkge1xuICAgICAgZ3JvdXBCYXNlICo9IGJhc2U7XG4gICAgICBncm91cFNpemUgKz0gMTtcbiAgICB9XG4gICAgZ3JvdXBTaXplc1tiYXNlXSA9IGdyb3VwU2l6ZTtcbiAgICBncm91cEJhc2VzW2Jhc2VdID0gZ3JvdXBCYXNlO1xuICB9XG5cbiAgKi9cblxuICB2YXIgemVyb3MgPSBbXG4gICAgJycsXG4gICAgJzAnLFxuICAgICcwMCcsXG4gICAgJzAwMCcsXG4gICAgJzAwMDAnLFxuICAgICcwMDAwMCcsXG4gICAgJzAwMDAwMCcsXG4gICAgJzAwMDAwMDAnLFxuICAgICcwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnLFxuICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcsXG4gICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnXG4gIF07XG5cbiAgdmFyIGdyb3VwU2l6ZXMgPSBbXG4gICAgMCwgMCxcbiAgICAyNSwgMTYsIDEyLCAxMSwgMTAsIDksIDgsXG4gICAgOCwgNywgNywgNywgNywgNiwgNixcbiAgICA2LCA2LCA2LCA2LCA2LCA1LCA1LFxuICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsXG4gICAgNSwgNSwgNSwgNSwgNSwgNSwgNVxuICBdO1xuXG4gIHZhciBncm91cEJhc2VzID0gW1xuICAgIDAsIDAsXG4gICAgMzM1NTQ0MzIsIDQzMDQ2NzIxLCAxNjc3NzIxNiwgNDg4MjgxMjUsIDYwNDY2MTc2LCA0MDM1MzYwNywgMTY3NzcyMTYsXG4gICAgNDMwNDY3MjEsIDEwMDAwMDAwLCAxOTQ4NzE3MSwgMzU4MzE4MDgsIDYyNzQ4NTE3LCA3NTI5NTM2LCAxMTM5MDYyNSxcbiAgICAxNjc3NzIxNiwgMjQxMzc1NjksIDM0MDEyMjI0LCA0NzA0NTg4MSwgNjQwMDAwMDAsIDQwODQxMDEsIDUxNTM2MzIsXG4gICAgNjQzNjM0MywgNzk2MjYyNCwgOTc2NTYyNSwgMTE4ODEzNzYsIDE0MzQ4OTA3LCAxNzIxMDM2OCwgMjA1MTExNDksXG4gICAgMjQzMDAwMDAsIDI4NjI5MTUxLCAzMzU1NDQzMiwgMzkxMzUzOTMsIDQ1NDM1NDI0LCA1MjUyMTg3NSwgNjA0NjYxNzZcbiAgXTtcblxuICBCTi5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiB0b1N0cmluZyAoYmFzZSwgcGFkZGluZykge1xuICAgIGJhc2UgPSBiYXNlIHx8IDEwO1xuICAgIHBhZGRpbmcgPSBwYWRkaW5nIHwgMCB8fCAxO1xuXG4gICAgdmFyIG91dDtcbiAgICBpZiAoYmFzZSA9PT0gMTYgfHwgYmFzZSA9PT0gJ2hleCcpIHtcbiAgICAgIG91dCA9ICcnO1xuICAgICAgdmFyIG9mZiA9IDA7XG4gICAgICB2YXIgY2FycnkgPSAwO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciB3ID0gdGhpcy53b3Jkc1tpXTtcbiAgICAgICAgdmFyIHdvcmQgPSAoKCh3IDw8IG9mZikgfCBjYXJyeSkgJiAweGZmZmZmZikudG9TdHJpbmcoMTYpO1xuICAgICAgICBjYXJyeSA9ICh3ID4+PiAoMjQgLSBvZmYpKSAmIDB4ZmZmZmZmO1xuICAgICAgICBpZiAoY2FycnkgIT09IDAgfHwgaSAhPT0gdGhpcy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgb3V0ID0gemVyb3NbNiAtIHdvcmQubGVuZ3RoXSArIHdvcmQgKyBvdXQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb3V0ID0gd29yZCArIG91dDtcbiAgICAgICAgfVxuICAgICAgICBvZmYgKz0gMjtcbiAgICAgICAgaWYgKG9mZiA+PSAyNikge1xuICAgICAgICAgIG9mZiAtPSAyNjtcbiAgICAgICAgICBpLS07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChjYXJyeSAhPT0gMCkge1xuICAgICAgICBvdXQgPSBjYXJyeS50b1N0cmluZygxNikgKyBvdXQ7XG4gICAgICB9XG4gICAgICB3aGlsZSAob3V0Lmxlbmd0aCAlIHBhZGRpbmcgIT09IDApIHtcbiAgICAgICAgb3V0ID0gJzAnICsgb3V0O1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHtcbiAgICAgICAgb3V0ID0gJy0nICsgb3V0O1xuICAgICAgfVxuICAgICAgcmV0dXJuIG91dDtcbiAgICB9XG5cbiAgICBpZiAoYmFzZSA9PT0gKGJhc2UgfCAwKSAmJiBiYXNlID49IDIgJiYgYmFzZSA8PSAzNikge1xuICAgICAgLy8gdmFyIGdyb3VwU2l6ZSA9IE1hdGguZmxvb3IoQk4ud29yZFNpemUgKiBNYXRoLkxOMiAvIE1hdGgubG9nKGJhc2UpKTtcbiAgICAgIHZhciBncm91cFNpemUgPSBncm91cFNpemVzW2Jhc2VdO1xuICAgICAgLy8gdmFyIGdyb3VwQmFzZSA9IE1hdGgucG93KGJhc2UsIGdyb3VwU2l6ZSk7XG4gICAgICB2YXIgZ3JvdXBCYXNlID0gZ3JvdXBCYXNlc1tiYXNlXTtcbiAgICAgIG91dCA9ICcnO1xuICAgICAgdmFyIGMgPSB0aGlzLmNsb25lKCk7XG4gICAgICBjLm5lZ2F0aXZlID0gMDtcbiAgICAgIHdoaWxlICghYy5pc1plcm8oKSkge1xuICAgICAgICB2YXIgciA9IGMubW9kbihncm91cEJhc2UpLnRvU3RyaW5nKGJhc2UpO1xuICAgICAgICBjID0gYy5pZGl2bihncm91cEJhc2UpO1xuXG4gICAgICAgIGlmICghYy5pc1plcm8oKSkge1xuICAgICAgICAgIG91dCA9IHplcm9zW2dyb3VwU2l6ZSAtIHIubGVuZ3RoXSArIHIgKyBvdXQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb3V0ID0gciArIG91dDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHRoaXMuaXNaZXJvKCkpIHtcbiAgICAgICAgb3V0ID0gJzAnICsgb3V0O1xuICAgICAgfVxuICAgICAgd2hpbGUgKG91dC5sZW5ndGggJSBwYWRkaW5nICE9PSAwKSB7XG4gICAgICAgIG91dCA9ICcwJyArIG91dDtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICAgIG91dCA9ICctJyArIG91dDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBvdXQ7XG4gICAgfVxuXG4gICAgYXNzZXJ0KGZhbHNlLCAnQmFzZSBzaG91bGQgYmUgYmV0d2VlbiAyIGFuZCAzNicpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS50b051bWJlciA9IGZ1bmN0aW9uIHRvTnVtYmVyICgpIHtcbiAgICB2YXIgcmV0ID0gdGhpcy53b3Jkc1swXTtcbiAgICBpZiAodGhpcy5sZW5ndGggPT09IDIpIHtcbiAgICAgIHJldCArPSB0aGlzLndvcmRzWzFdICogMHg0MDAwMDAwO1xuICAgIH0gZWxzZSBpZiAodGhpcy5sZW5ndGggPT09IDMgJiYgdGhpcy53b3Jkc1syXSA9PT0gMHgwMSkge1xuICAgICAgLy8gTk9URTogYXQgdGhpcyBzdGFnZSBpdCBpcyBrbm93biB0aGF0IHRoZSB0b3AgYml0IGlzIHNldFxuICAgICAgcmV0ICs9IDB4MTAwMDAwMDAwMDAwMDAgKyAodGhpcy53b3Jkc1sxXSAqIDB4NDAwMDAwMCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLmxlbmd0aCA+IDIpIHtcbiAgICAgIGFzc2VydChmYWxzZSwgJ051bWJlciBjYW4gb25seSBzYWZlbHkgc3RvcmUgdXAgdG8gNTMgYml0cycpO1xuICAgIH1cbiAgICByZXR1cm4gKHRoaXMubmVnYXRpdmUgIT09IDApID8gLXJldCA6IHJldDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudG9KU09OID0gZnVuY3Rpb24gdG9KU09OICgpIHtcbiAgICByZXR1cm4gdGhpcy50b1N0cmluZygxNik7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnRvQnVmZmVyID0gZnVuY3Rpb24gdG9CdWZmZXIgKGVuZGlhbiwgbGVuZ3RoKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBCdWZmZXIgIT09ICd1bmRlZmluZWQnKTtcbiAgICByZXR1cm4gdGhpcy50b0FycmF5TGlrZShCdWZmZXIsIGVuZGlhbiwgbGVuZ3RoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudG9BcnJheSA9IGZ1bmN0aW9uIHRvQXJyYXkgKGVuZGlhbiwgbGVuZ3RoKSB7XG4gICAgcmV0dXJuIHRoaXMudG9BcnJheUxpa2UoQXJyYXksIGVuZGlhbiwgbGVuZ3RoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudG9BcnJheUxpa2UgPSBmdW5jdGlvbiB0b0FycmF5TGlrZSAoQXJyYXlUeXBlLCBlbmRpYW4sIGxlbmd0aCkge1xuICAgIHZhciBieXRlTGVuZ3RoID0gdGhpcy5ieXRlTGVuZ3RoKCk7XG4gICAgdmFyIHJlcUxlbmd0aCA9IGxlbmd0aCB8fCBNYXRoLm1heCgxLCBieXRlTGVuZ3RoKTtcbiAgICBhc3NlcnQoYnl0ZUxlbmd0aCA8PSByZXFMZW5ndGgsICdieXRlIGFycmF5IGxvbmdlciB0aGFuIGRlc2lyZWQgbGVuZ3RoJyk7XG4gICAgYXNzZXJ0KHJlcUxlbmd0aCA+IDAsICdSZXF1ZXN0ZWQgYXJyYXkgbGVuZ3RoIDw9IDAnKTtcblxuICAgIHRoaXMuc3RyaXAoKTtcbiAgICB2YXIgbGl0dGxlRW5kaWFuID0gZW5kaWFuID09PSAnbGUnO1xuICAgIHZhciByZXMgPSBuZXcgQXJyYXlUeXBlKHJlcUxlbmd0aCk7XG5cbiAgICB2YXIgYiwgaTtcbiAgICB2YXIgcSA9IHRoaXMuY2xvbmUoKTtcbiAgICBpZiAoIWxpdHRsZUVuZGlhbikge1xuICAgICAgLy8gQXNzdW1lIGJpZy1lbmRpYW5cbiAgICAgIGZvciAoaSA9IDA7IGkgPCByZXFMZW5ndGggLSBieXRlTGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcmVzW2ldID0gMDtcbiAgICAgIH1cblxuICAgICAgZm9yIChpID0gMDsgIXEuaXNaZXJvKCk7IGkrKykge1xuICAgICAgICBiID0gcS5hbmRsbigweGZmKTtcbiAgICAgICAgcS5pdXNocm4oOCk7XG5cbiAgICAgICAgcmVzW3JlcUxlbmd0aCAtIGkgLSAxXSA9IGI7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGZvciAoaSA9IDA7ICFxLmlzWmVybygpOyBpKyspIHtcbiAgICAgICAgYiA9IHEuYW5kbG4oMHhmZik7XG4gICAgICAgIHEuaXVzaHJuKDgpO1xuXG4gICAgICAgIHJlc1tpXSA9IGI7XG4gICAgICB9XG5cbiAgICAgIGZvciAoOyBpIDwgcmVxTGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcmVzW2ldID0gMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIGlmIChNYXRoLmNsejMyKSB7XG4gICAgQk4ucHJvdG90eXBlLl9jb3VudEJpdHMgPSBmdW5jdGlvbiBfY291bnRCaXRzICh3KSB7XG4gICAgICByZXR1cm4gMzIgLSBNYXRoLmNsejMyKHcpO1xuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgQk4ucHJvdG90eXBlLl9jb3VudEJpdHMgPSBmdW5jdGlvbiBfY291bnRCaXRzICh3KSB7XG4gICAgICB2YXIgdCA9IHc7XG4gICAgICB2YXIgciA9IDA7XG4gICAgICBpZiAodCA+PSAweDEwMDApIHtcbiAgICAgICAgciArPSAxMztcbiAgICAgICAgdCA+Pj49IDEzO1xuICAgICAgfVxuICAgICAgaWYgKHQgPj0gMHg0MCkge1xuICAgICAgICByICs9IDc7XG4gICAgICAgIHQgPj4+PSA3O1xuICAgICAgfVxuICAgICAgaWYgKHQgPj0gMHg4KSB7XG4gICAgICAgIHIgKz0gNDtcbiAgICAgICAgdCA+Pj49IDQ7XG4gICAgICB9XG4gICAgICBpZiAodCA+PSAweDAyKSB7XG4gICAgICAgIHIgKz0gMjtcbiAgICAgICAgdCA+Pj49IDI7XG4gICAgICB9XG4gICAgICByZXR1cm4gciArIHQ7XG4gICAgfTtcbiAgfVxuXG4gIEJOLnByb3RvdHlwZS5femVyb0JpdHMgPSBmdW5jdGlvbiBfemVyb0JpdHMgKHcpIHtcbiAgICAvLyBTaG9ydC1jdXRcbiAgICBpZiAodyA9PT0gMCkgcmV0dXJuIDI2O1xuXG4gICAgdmFyIHQgPSB3O1xuICAgIHZhciByID0gMDtcbiAgICBpZiAoKHQgJiAweDFmZmYpID09PSAwKSB7XG4gICAgICByICs9IDEzO1xuICAgICAgdCA+Pj49IDEzO1xuICAgIH1cbiAgICBpZiAoKHQgJiAweDdmKSA9PT0gMCkge1xuICAgICAgciArPSA3O1xuICAgICAgdCA+Pj49IDc7XG4gICAgfVxuICAgIGlmICgodCAmIDB4ZikgPT09IDApIHtcbiAgICAgIHIgKz0gNDtcbiAgICAgIHQgPj4+PSA0O1xuICAgIH1cbiAgICBpZiAoKHQgJiAweDMpID09PSAwKSB7XG4gICAgICByICs9IDI7XG4gICAgICB0ID4+Pj0gMjtcbiAgICB9XG4gICAgaWYgKCh0ICYgMHgxKSA9PT0gMCkge1xuICAgICAgcisrO1xuICAgIH1cbiAgICByZXR1cm4gcjtcbiAgfTtcblxuICAvLyBSZXR1cm4gbnVtYmVyIG9mIHVzZWQgYml0cyBpbiBhIEJOXG4gIEJOLnByb3RvdHlwZS5iaXRMZW5ndGggPSBmdW5jdGlvbiBiaXRMZW5ndGggKCkge1xuICAgIHZhciB3ID0gdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCAtIDFdO1xuICAgIHZhciBoaSA9IHRoaXMuX2NvdW50Qml0cyh3KTtcbiAgICByZXR1cm4gKHRoaXMubGVuZ3RoIC0gMSkgKiAyNiArIGhpO1xuICB9O1xuXG4gIGZ1bmN0aW9uIHRvQml0QXJyYXkgKG51bSkge1xuICAgIHZhciB3ID0gbmV3IEFycmF5KG51bS5iaXRMZW5ndGgoKSk7XG5cbiAgICBmb3IgKHZhciBiaXQgPSAwOyBiaXQgPCB3Lmxlbmd0aDsgYml0KyspIHtcbiAgICAgIHZhciBvZmYgPSAoYml0IC8gMjYpIHwgMDtcbiAgICAgIHZhciB3Yml0ID0gYml0ICUgMjY7XG5cbiAgICAgIHdbYml0XSA9IChudW0ud29yZHNbb2ZmXSAmICgxIDw8IHdiaXQpKSA+Pj4gd2JpdDtcbiAgICB9XG5cbiAgICByZXR1cm4gdztcbiAgfVxuXG4gIC8vIE51bWJlciBvZiB0cmFpbGluZyB6ZXJvIGJpdHNcbiAgQk4ucHJvdG90eXBlLnplcm9CaXRzID0gZnVuY3Rpb24gemVyb0JpdHMgKCkge1xuICAgIGlmICh0aGlzLmlzWmVybygpKSByZXR1cm4gMDtcblxuICAgIHZhciByID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBiID0gdGhpcy5femVyb0JpdHModGhpcy53b3Jkc1tpXSk7XG4gICAgICByICs9IGI7XG4gICAgICBpZiAoYiAhPT0gMjYpIGJyZWFrO1xuICAgIH1cbiAgICByZXR1cm4gcjtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuYnl0ZUxlbmd0aCA9IGZ1bmN0aW9uIGJ5dGVMZW5ndGggKCkge1xuICAgIHJldHVybiBNYXRoLmNlaWwodGhpcy5iaXRMZW5ndGgoKSAvIDgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS50b1R3b3MgPSBmdW5jdGlvbiB0b1R3b3MgKHdpZHRoKSB7XG4gICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIHJldHVybiB0aGlzLmFicygpLmlub3RuKHdpZHRoKS5pYWRkbigxKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZnJvbVR3b3MgPSBmdW5jdGlvbiBmcm9tVHdvcyAod2lkdGgpIHtcbiAgICBpZiAodGhpcy50ZXN0bih3aWR0aCAtIDEpKSB7XG4gICAgICByZXR1cm4gdGhpcy5ub3RuKHdpZHRoKS5pYWRkbigxKS5pbmVnKCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmNsb25lKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmlzTmVnID0gZnVuY3Rpb24gaXNOZWcgKCkge1xuICAgIHJldHVybiB0aGlzLm5lZ2F0aXZlICE9PSAwO1xuICB9O1xuXG4gIC8vIFJldHVybiBuZWdhdGl2ZSBjbG9uZSBvZiBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLm5lZyA9IGZ1bmN0aW9uIG5lZyAoKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pbmVnKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmluZWcgPSBmdW5jdGlvbiBpbmVnICgpIHtcbiAgICBpZiAoIXRoaXMuaXNaZXJvKCkpIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgXj0gMTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICAvLyBPciBgbnVtYCB3aXRoIGB0aGlzYCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaXVvciA9IGZ1bmN0aW9uIGl1b3IgKG51bSkge1xuICAgIHdoaWxlICh0aGlzLmxlbmd0aCA8IG51bS5sZW5ndGgpIHtcbiAgICAgIHRoaXMud29yZHNbdGhpcy5sZW5ndGgrK10gPSAwO1xuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gdGhpcy53b3Jkc1tpXSB8IG51bS53b3Jkc1tpXTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pb3IgPSBmdW5jdGlvbiBpb3IgKG51bSkge1xuICAgIGFzc2VydCgodGhpcy5uZWdhdGl2ZSB8IG51bS5uZWdhdGl2ZSkgPT09IDApO1xuICAgIHJldHVybiB0aGlzLml1b3IobnVtKTtcbiAgfTtcblxuICAvLyBPciBgbnVtYCB3aXRoIGB0aGlzYFxuICBCTi5wcm90b3R5cGUub3IgPSBmdW5jdGlvbiBvciAobnVtKSB7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIHRoaXMuY2xvbmUoKS5pb3IobnVtKTtcbiAgICByZXR1cm4gbnVtLmNsb25lKCkuaW9yKHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS51b3IgPSBmdW5jdGlvbiB1b3IgKG51bSkge1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHJldHVybiB0aGlzLmNsb25lKCkuaXVvcihudW0pO1xuICAgIHJldHVybiBudW0uY2xvbmUoKS5pdW9yKHRoaXMpO1xuICB9O1xuXG4gIC8vIEFuZCBgbnVtYCB3aXRoIGB0aGlzYCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaXVhbmQgPSBmdW5jdGlvbiBpdWFuZCAobnVtKSB7XG4gICAgLy8gYiA9IG1pbi1sZW5ndGgobnVtLCB0aGlzKVxuICAgIHZhciBiO1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHtcbiAgICAgIGIgPSBudW07XG4gICAgfSBlbHNlIHtcbiAgICAgIGIgPSB0aGlzO1xuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYi5sZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IHRoaXMud29yZHNbaV0gJiBudW0ud29yZHNbaV07XG4gICAgfVxuXG4gICAgdGhpcy5sZW5ndGggPSBiLmxlbmd0aDtcblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmlhbmQgPSBmdW5jdGlvbiBpYW5kIChudW0pIHtcbiAgICBhc3NlcnQoKHRoaXMubmVnYXRpdmUgfCBudW0ubmVnYXRpdmUpID09PSAwKTtcbiAgICByZXR1cm4gdGhpcy5pdWFuZChudW0pO1xuICB9O1xuXG4gIC8vIEFuZCBgbnVtYCB3aXRoIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuYW5kID0gZnVuY3Rpb24gYW5kIChudW0pIHtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSByZXR1cm4gdGhpcy5jbG9uZSgpLmlhbmQobnVtKTtcbiAgICByZXR1cm4gbnVtLmNsb25lKCkuaWFuZCh0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUudWFuZCA9IGZ1bmN0aW9uIHVhbmQgKG51bSkge1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHJldHVybiB0aGlzLmNsb25lKCkuaXVhbmQobnVtKTtcbiAgICByZXR1cm4gbnVtLmNsb25lKCkuaXVhbmQodGhpcyk7XG4gIH07XG5cbiAgLy8gWG9yIGBudW1gIHdpdGggYHRoaXNgIGluLXBsYWNlXG4gIEJOLnByb3RvdHlwZS5pdXhvciA9IGZ1bmN0aW9uIGl1eG9yIChudW0pIHtcbiAgICAvLyBhLmxlbmd0aCA+IGIubGVuZ3RoXG4gICAgdmFyIGE7XG4gICAgdmFyIGI7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkge1xuICAgICAgYSA9IHRoaXM7XG4gICAgICBiID0gbnVtO1xuICAgIH0gZWxzZSB7XG4gICAgICBhID0gbnVtO1xuICAgICAgYiA9IHRoaXM7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gYS53b3Jkc1tpXSBeIGIud29yZHNbaV07XG4gICAgfVxuXG4gICAgaWYgKHRoaXMgIT09IGEpIHtcbiAgICAgIGZvciAoOyBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgICAgICB0aGlzLndvcmRzW2ldID0gYS53b3Jkc1tpXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmxlbmd0aCA9IGEubGVuZ3RoO1xuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXhvciA9IGZ1bmN0aW9uIGl4b3IgKG51bSkge1xuICAgIGFzc2VydCgodGhpcy5uZWdhdGl2ZSB8IG51bS5uZWdhdGl2ZSkgPT09IDApO1xuICAgIHJldHVybiB0aGlzLml1eG9yKG51bSk7XG4gIH07XG5cbiAgLy8gWG9yIGBudW1gIHdpdGggYHRoaXNgXG4gIEJOLnByb3RvdHlwZS54b3IgPSBmdW5jdGlvbiB4b3IgKG51bSkge1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IG51bS5sZW5ndGgpIHJldHVybiB0aGlzLmNsb25lKCkuaXhvcihudW0pO1xuICAgIHJldHVybiBudW0uY2xvbmUoKS5peG9yKHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS51eG9yID0gZnVuY3Rpb24gdXhvciAobnVtKSB7XG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIHRoaXMuY2xvbmUoKS5pdXhvcihudW0pO1xuICAgIHJldHVybiBudW0uY2xvbmUoKS5pdXhvcih0aGlzKTtcbiAgfTtcblxuICAvLyBOb3QgYGB0aGlzYGAgd2l0aCBgYHdpZHRoYGAgYml0d2lkdGhcbiAgQk4ucHJvdG90eXBlLmlub3RuID0gZnVuY3Rpb24gaW5vdG4gKHdpZHRoKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiB3aWR0aCA9PT0gJ251bWJlcicgJiYgd2lkdGggPj0gMCk7XG5cbiAgICB2YXIgYnl0ZXNOZWVkZWQgPSBNYXRoLmNlaWwod2lkdGggLyAyNikgfCAwO1xuICAgIHZhciBiaXRzTGVmdCA9IHdpZHRoICUgMjY7XG5cbiAgICAvLyBFeHRlbmQgdGhlIGJ1ZmZlciB3aXRoIGxlYWRpbmcgemVyb2VzXG4gICAgdGhpcy5fZXhwYW5kKGJ5dGVzTmVlZGVkKTtcblxuICAgIGlmIChiaXRzTGVmdCA+IDApIHtcbiAgICAgIGJ5dGVzTmVlZGVkLS07XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIGNvbXBsZXRlIHdvcmRzXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBieXRlc05lZWRlZDsgaSsrKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gfnRoaXMud29yZHNbaV0gJiAweDNmZmZmZmY7XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIHRoZSByZXNpZHVlXG4gICAgaWYgKGJpdHNMZWZ0ID4gMCkge1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IH50aGlzLndvcmRzW2ldICYgKDB4M2ZmZmZmZiA+PiAoMjYgLSBiaXRzTGVmdCkpO1xuICAgIH1cblxuICAgIC8vIEFuZCByZW1vdmUgbGVhZGluZyB6ZXJvZXNcbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5ub3RuID0gZnVuY3Rpb24gbm90biAod2lkdGgpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlub3RuKHdpZHRoKTtcbiAgfTtcblxuICAvLyBTZXQgYGJpdGAgb2YgYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5zZXRuID0gZnVuY3Rpb24gc2V0biAoYml0LCB2YWwpIHtcbiAgICBhc3NlcnQodHlwZW9mIGJpdCA9PT0gJ251bWJlcicgJiYgYml0ID49IDApO1xuXG4gICAgdmFyIG9mZiA9IChiaXQgLyAyNikgfCAwO1xuICAgIHZhciB3Yml0ID0gYml0ICUgMjY7XG5cbiAgICB0aGlzLl9leHBhbmQob2ZmICsgMSk7XG5cbiAgICBpZiAodmFsKSB7XG4gICAgICB0aGlzLndvcmRzW29mZl0gPSB0aGlzLndvcmRzW29mZl0gfCAoMSA8PCB3Yml0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy53b3Jkc1tvZmZdID0gdGhpcy53b3Jkc1tvZmZdICYgfigxIDw8IHdiaXQpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgLy8gQWRkIGBudW1gIHRvIGB0aGlzYCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaWFkZCA9IGZ1bmN0aW9uIGlhZGQgKG51bSkge1xuICAgIHZhciByO1xuXG4gICAgLy8gbmVnYXRpdmUgKyBwb3NpdGl2ZVxuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwICYmIG51bS5uZWdhdGl2ZSA9PT0gMCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgICByID0gdGhpcy5pc3ViKG51bSk7XG4gICAgICB0aGlzLm5lZ2F0aXZlIF49IDE7XG4gICAgICByZXR1cm4gdGhpcy5fbm9ybVNpZ24oKTtcblxuICAgIC8vIHBvc2l0aXZlICsgbmVnYXRpdmVcbiAgICB9IGVsc2UgaWYgKHRoaXMubmVnYXRpdmUgPT09IDAgJiYgbnVtLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICBudW0ubmVnYXRpdmUgPSAwO1xuICAgICAgciA9IHRoaXMuaXN1YihudW0pO1xuICAgICAgbnVtLm5lZ2F0aXZlID0gMTtcbiAgICAgIHJldHVybiByLl9ub3JtU2lnbigpO1xuICAgIH1cblxuICAgIC8vIGEubGVuZ3RoID4gYi5sZW5ndGhcbiAgICB2YXIgYSwgYjtcbiAgICBpZiAodGhpcy5sZW5ndGggPiBudW0ubGVuZ3RoKSB7XG4gICAgICBhID0gdGhpcztcbiAgICAgIGIgPSBudW07XG4gICAgfSBlbHNlIHtcbiAgICAgIGEgPSBudW07XG4gICAgICBiID0gdGhpcztcbiAgICB9XG5cbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYi5sZW5ndGg7IGkrKykge1xuICAgICAgciA9IChhLndvcmRzW2ldIHwgMCkgKyAoYi53b3Jkc1tpXSB8IDApICsgY2Fycnk7XG4gICAgICB0aGlzLndvcmRzW2ldID0gciAmIDB4M2ZmZmZmZjtcbiAgICAgIGNhcnJ5ID0gciA+Pj4gMjY7XG4gICAgfVxuICAgIGZvciAoOyBjYXJyeSAhPT0gMCAmJiBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgICAgciA9IChhLndvcmRzW2ldIHwgMCkgKyBjYXJyeTtcbiAgICAgIHRoaXMud29yZHNbaV0gPSByICYgMHgzZmZmZmZmO1xuICAgICAgY2FycnkgPSByID4+PiAyNjtcbiAgICB9XG5cbiAgICB0aGlzLmxlbmd0aCA9IGEubGVuZ3RoO1xuICAgIGlmIChjYXJyeSAhPT0gMCkge1xuICAgICAgdGhpcy53b3Jkc1t0aGlzLmxlbmd0aF0gPSBjYXJyeTtcbiAgICAgIHRoaXMubGVuZ3RoKys7XG4gICAgLy8gQ29weSB0aGUgcmVzdCBvZiB0aGUgd29yZHNcbiAgICB9IGVsc2UgaWYgKGEgIT09IHRoaXMpIHtcbiAgICAgIGZvciAoOyBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgICAgICB0aGlzLndvcmRzW2ldID0gYS53b3Jkc1tpXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICAvLyBBZGQgYG51bWAgdG8gYHRoaXNgXG4gIEJOLnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiBhZGQgKG51bSkge1xuICAgIHZhciByZXM7XG4gICAgaWYgKG51bS5uZWdhdGl2ZSAhPT0gMCAmJiB0aGlzLm5lZ2F0aXZlID09PSAwKSB7XG4gICAgICBudW0ubmVnYXRpdmUgPSAwO1xuICAgICAgcmVzID0gdGhpcy5zdWIobnVtKTtcbiAgICAgIG51bS5uZWdhdGl2ZSBePSAxO1xuICAgICAgcmV0dXJuIHJlcztcbiAgICB9IGVsc2UgaWYgKG51bS5uZWdhdGl2ZSA9PT0gMCAmJiB0aGlzLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICAgIHJlcyA9IG51bS5zdWIodGhpcyk7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICAgIHJldHVybiByZXM7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIHRoaXMuY2xvbmUoKS5pYWRkKG51bSk7XG5cbiAgICByZXR1cm4gbnVtLmNsb25lKCkuaWFkZCh0aGlzKTtcbiAgfTtcblxuICAvLyBTdWJ0cmFjdCBgbnVtYCBmcm9tIGB0aGlzYCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaXN1YiA9IGZ1bmN0aW9uIGlzdWIgKG51bSkge1xuICAgIC8vIHRoaXMgLSAoLW51bSkgPSB0aGlzICsgbnVtXG4gICAgaWYgKG51bS5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgbnVtLm5lZ2F0aXZlID0gMDtcbiAgICAgIHZhciByID0gdGhpcy5pYWRkKG51bSk7XG4gICAgICBudW0ubmVnYXRpdmUgPSAxO1xuICAgICAgcmV0dXJuIHIuX25vcm1TaWduKCk7XG5cbiAgICAvLyAtdGhpcyAtIG51bSA9IC0odGhpcyArIG51bSlcbiAgICB9IGVsc2UgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgICAgdGhpcy5pYWRkKG51bSk7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICAgIHJldHVybiB0aGlzLl9ub3JtU2lnbigpO1xuICAgIH1cblxuICAgIC8vIEF0IHRoaXMgcG9pbnQgYm90aCBudW1iZXJzIGFyZSBwb3NpdGl2ZVxuICAgIHZhciBjbXAgPSB0aGlzLmNtcChudW0pO1xuXG4gICAgLy8gT3B0aW1pemF0aW9uIC0gemVyb2lmeVxuICAgIGlmIChjbXAgPT09IDApIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAwO1xuICAgICAgdGhpcy5sZW5ndGggPSAxO1xuICAgICAgdGhpcy53b3Jkc1swXSA9IDA7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvLyBhID4gYlxuICAgIHZhciBhLCBiO1xuICAgIGlmIChjbXAgPiAwKSB7XG4gICAgICBhID0gdGhpcztcbiAgICAgIGIgPSBudW07XG4gICAgfSBlbHNlIHtcbiAgICAgIGEgPSBudW07XG4gICAgICBiID0gdGhpcztcbiAgICB9XG5cbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYi5sZW5ndGg7IGkrKykge1xuICAgICAgciA9IChhLndvcmRzW2ldIHwgMCkgLSAoYi53b3Jkc1tpXSB8IDApICsgY2Fycnk7XG4gICAgICBjYXJyeSA9IHIgPj4gMjY7XG4gICAgICB0aGlzLndvcmRzW2ldID0gciAmIDB4M2ZmZmZmZjtcbiAgICB9XG4gICAgZm9yICg7IGNhcnJ5ICE9PSAwICYmIGkgPCBhLmxlbmd0aDsgaSsrKSB7XG4gICAgICByID0gKGEud29yZHNbaV0gfCAwKSArIGNhcnJ5O1xuICAgICAgY2FycnkgPSByID4+IDI2O1xuICAgICAgdGhpcy53b3Jkc1tpXSA9IHIgJiAweDNmZmZmZmY7XG4gICAgfVxuXG4gICAgLy8gQ29weSByZXN0IG9mIHRoZSB3b3Jkc1xuICAgIGlmIChjYXJyeSA9PT0gMCAmJiBpIDwgYS5sZW5ndGggJiYgYSAhPT0gdGhpcykge1xuICAgICAgZm9yICg7IGkgPCBhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHRoaXMud29yZHNbaV0gPSBhLndvcmRzW2ldO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMubGVuZ3RoID0gTWF0aC5tYXgodGhpcy5sZW5ndGgsIGkpO1xuXG4gICAgaWYgKGEgIT09IHRoaXMpIHtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnN0cmlwKCk7XG4gIH07XG5cbiAgLy8gU3VidHJhY3QgYG51bWAgZnJvbSBgdGhpc2BcbiAgQk4ucHJvdG90eXBlLnN1YiA9IGZ1bmN0aW9uIHN1YiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pc3ViKG51bSk7XG4gIH07XG5cbiAgZnVuY3Rpb24gc21hbGxNdWxUbyAoc2VsZiwgbnVtLCBvdXQpIHtcbiAgICBvdXQubmVnYXRpdmUgPSBudW0ubmVnYXRpdmUgXiBzZWxmLm5lZ2F0aXZlO1xuICAgIHZhciBsZW4gPSAoc2VsZi5sZW5ndGggKyBudW0ubGVuZ3RoKSB8IDA7XG4gICAgb3V0Lmxlbmd0aCA9IGxlbjtcbiAgICBsZW4gPSAobGVuIC0gMSkgfCAwO1xuXG4gICAgLy8gUGVlbCBvbmUgaXRlcmF0aW9uIChjb21waWxlciBjYW4ndCBkbyBpdCwgYmVjYXVzZSBvZiBjb2RlIGNvbXBsZXhpdHkpXG4gICAgdmFyIGEgPSBzZWxmLndvcmRzWzBdIHwgMDtcbiAgICB2YXIgYiA9IG51bS53b3Jkc1swXSB8IDA7XG4gICAgdmFyIHIgPSBhICogYjtcblxuICAgIHZhciBsbyA9IHIgJiAweDNmZmZmZmY7XG4gICAgdmFyIGNhcnJ5ID0gKHIgLyAweDQwMDAwMDApIHwgMDtcbiAgICBvdXQud29yZHNbMF0gPSBsbztcblxuICAgIGZvciAodmFyIGsgPSAxOyBrIDwgbGVuOyBrKyspIHtcbiAgICAgIC8vIFN1bSBhbGwgd29yZHMgd2l0aCB0aGUgc2FtZSBgaSArIGogPSBrYCBhbmQgYWNjdW11bGF0ZSBgbmNhcnJ5YCxcbiAgICAgIC8vIG5vdGUgdGhhdCBuY2FycnkgY291bGQgYmUgPj0gMHgzZmZmZmZmXG4gICAgICB2YXIgbmNhcnJ5ID0gY2FycnkgPj4+IDI2O1xuICAgICAgdmFyIHJ3b3JkID0gY2FycnkgJiAweDNmZmZmZmY7XG4gICAgICB2YXIgbWF4SiA9IE1hdGgubWluKGssIG51bS5sZW5ndGggLSAxKTtcbiAgICAgIGZvciAodmFyIGogPSBNYXRoLm1heCgwLCBrIC0gc2VsZi5sZW5ndGggKyAxKTsgaiA8PSBtYXhKOyBqKyspIHtcbiAgICAgICAgdmFyIGkgPSAoayAtIGopIHwgMDtcbiAgICAgICAgYSA9IHNlbGYud29yZHNbaV0gfCAwO1xuICAgICAgICBiID0gbnVtLndvcmRzW2pdIHwgMDtcbiAgICAgICAgciA9IGEgKiBiICsgcndvcmQ7XG4gICAgICAgIG5jYXJyeSArPSAociAvIDB4NDAwMDAwMCkgfCAwO1xuICAgICAgICByd29yZCA9IHIgJiAweDNmZmZmZmY7XG4gICAgICB9XG4gICAgICBvdXQud29yZHNba10gPSByd29yZCB8IDA7XG4gICAgICBjYXJyeSA9IG5jYXJyeSB8IDA7XG4gICAgfVxuICAgIGlmIChjYXJyeSAhPT0gMCkge1xuICAgICAgb3V0LndvcmRzW2tdID0gY2FycnkgfCAwO1xuICAgIH0gZWxzZSB7XG4gICAgICBvdXQubGVuZ3RoLS07XG4gICAgfVxuXG4gICAgcmV0dXJuIG91dC5zdHJpcCgpO1xuICB9XG5cbiAgLy8gVE9ETyhpbmR1dG55KTogaXQgbWF5IGJlIHJlYXNvbmFibGUgdG8gb21pdCBpdCBmb3IgdXNlcnMgd2hvIGRvbid0IG5lZWRcbiAgLy8gdG8gd29yayB3aXRoIDI1Ni1iaXQgbnVtYmVycywgb3RoZXJ3aXNlIGl0IGdpdmVzIDIwJSBpbXByb3ZlbWVudCBmb3IgMjU2LWJpdFxuICAvLyBtdWx0aXBsaWNhdGlvbiAobGlrZSBlbGxpcHRpYyBzZWNwMjU2azEpLlxuICB2YXIgY29tYjEwTXVsVG8gPSBmdW5jdGlvbiBjb21iMTBNdWxUbyAoc2VsZiwgbnVtLCBvdXQpIHtcbiAgICB2YXIgYSA9IHNlbGYud29yZHM7XG4gICAgdmFyIGIgPSBudW0ud29yZHM7XG4gICAgdmFyIG8gPSBvdXQud29yZHM7XG4gICAgdmFyIGMgPSAwO1xuICAgIHZhciBsbztcbiAgICB2YXIgbWlkO1xuICAgIHZhciBoaTtcbiAgICB2YXIgYTAgPSBhWzBdIHwgMDtcbiAgICB2YXIgYWwwID0gYTAgJiAweDFmZmY7XG4gICAgdmFyIGFoMCA9IGEwID4+PiAxMztcbiAgICB2YXIgYTEgPSBhWzFdIHwgMDtcbiAgICB2YXIgYWwxID0gYTEgJiAweDFmZmY7XG4gICAgdmFyIGFoMSA9IGExID4+PiAxMztcbiAgICB2YXIgYTIgPSBhWzJdIHwgMDtcbiAgICB2YXIgYWwyID0gYTIgJiAweDFmZmY7XG4gICAgdmFyIGFoMiA9IGEyID4+PiAxMztcbiAgICB2YXIgYTMgPSBhWzNdIHwgMDtcbiAgICB2YXIgYWwzID0gYTMgJiAweDFmZmY7XG4gICAgdmFyIGFoMyA9IGEzID4+PiAxMztcbiAgICB2YXIgYTQgPSBhWzRdIHwgMDtcbiAgICB2YXIgYWw0ID0gYTQgJiAweDFmZmY7XG4gICAgdmFyIGFoNCA9IGE0ID4+PiAxMztcbiAgICB2YXIgYTUgPSBhWzVdIHwgMDtcbiAgICB2YXIgYWw1ID0gYTUgJiAweDFmZmY7XG4gICAgdmFyIGFoNSA9IGE1ID4+PiAxMztcbiAgICB2YXIgYTYgPSBhWzZdIHwgMDtcbiAgICB2YXIgYWw2ID0gYTYgJiAweDFmZmY7XG4gICAgdmFyIGFoNiA9IGE2ID4+PiAxMztcbiAgICB2YXIgYTcgPSBhWzddIHwgMDtcbiAgICB2YXIgYWw3ID0gYTcgJiAweDFmZmY7XG4gICAgdmFyIGFoNyA9IGE3ID4+PiAxMztcbiAgICB2YXIgYTggPSBhWzhdIHwgMDtcbiAgICB2YXIgYWw4ID0gYTggJiAweDFmZmY7XG4gICAgdmFyIGFoOCA9IGE4ID4+PiAxMztcbiAgICB2YXIgYTkgPSBhWzldIHwgMDtcbiAgICB2YXIgYWw5ID0gYTkgJiAweDFmZmY7XG4gICAgdmFyIGFoOSA9IGE5ID4+PiAxMztcbiAgICB2YXIgYjAgPSBiWzBdIHwgMDtcbiAgICB2YXIgYmwwID0gYjAgJiAweDFmZmY7XG4gICAgdmFyIGJoMCA9IGIwID4+PiAxMztcbiAgICB2YXIgYjEgPSBiWzFdIHwgMDtcbiAgICB2YXIgYmwxID0gYjEgJiAweDFmZmY7XG4gICAgdmFyIGJoMSA9IGIxID4+PiAxMztcbiAgICB2YXIgYjIgPSBiWzJdIHwgMDtcbiAgICB2YXIgYmwyID0gYjIgJiAweDFmZmY7XG4gICAgdmFyIGJoMiA9IGIyID4+PiAxMztcbiAgICB2YXIgYjMgPSBiWzNdIHwgMDtcbiAgICB2YXIgYmwzID0gYjMgJiAweDFmZmY7XG4gICAgdmFyIGJoMyA9IGIzID4+PiAxMztcbiAgICB2YXIgYjQgPSBiWzRdIHwgMDtcbiAgICB2YXIgYmw0ID0gYjQgJiAweDFmZmY7XG4gICAgdmFyIGJoNCA9IGI0ID4+PiAxMztcbiAgICB2YXIgYjUgPSBiWzVdIHwgMDtcbiAgICB2YXIgYmw1ID0gYjUgJiAweDFmZmY7XG4gICAgdmFyIGJoNSA9IGI1ID4+PiAxMztcbiAgICB2YXIgYjYgPSBiWzZdIHwgMDtcbiAgICB2YXIgYmw2ID0gYjYgJiAweDFmZmY7XG4gICAgdmFyIGJoNiA9IGI2ID4+PiAxMztcbiAgICB2YXIgYjcgPSBiWzddIHwgMDtcbiAgICB2YXIgYmw3ID0gYjcgJiAweDFmZmY7XG4gICAgdmFyIGJoNyA9IGI3ID4+PiAxMztcbiAgICB2YXIgYjggPSBiWzhdIHwgMDtcbiAgICB2YXIgYmw4ID0gYjggJiAweDFmZmY7XG4gICAgdmFyIGJoOCA9IGI4ID4+PiAxMztcbiAgICB2YXIgYjkgPSBiWzldIHwgMDtcbiAgICB2YXIgYmw5ID0gYjkgJiAweDFmZmY7XG4gICAgdmFyIGJoOSA9IGI5ID4+PiAxMztcblxuICAgIG91dC5uZWdhdGl2ZSA9IHNlbGYubmVnYXRpdmUgXiBudW0ubmVnYXRpdmU7XG4gICAgb3V0Lmxlbmd0aCA9IDE5O1xuICAgIC8qIGsgPSAwICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWwwLCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDAsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDAsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDAsIGJoMCk7XG4gICAgdmFyIHcwID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MCA+Pj4gMjYpKSB8IDA7XG4gICAgdzAgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWwxLCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDEsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDEsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwwLCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDAsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMCwgYmgxKSkgfCAwO1xuICAgIHZhciB3MSA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzEgPj4+IDI2KSkgfCAwO1xuICAgIHcxICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gMiAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsMiwgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWwyLCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgyLCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWgyLCBiaDApO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmwxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsMSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoMSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmgyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDIpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDIpKSB8IDA7XG4gICAgdmFyIHcyID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MiA+Pj4gMjYpKSB8IDA7XG4gICAgdzIgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAzICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWwzLCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDMsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDMsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDMsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDMpKSB8IDA7XG4gICAgdmFyIHczID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MyA+Pj4gMjYpKSB8IDA7XG4gICAgdzMgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSA0ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw0LCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDQsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDQsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDEsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMSwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgxLCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwwLCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDAsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMCwgYmg0KSkgfCAwO1xuICAgIHZhciB3NCA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzQgPj4+IDI2KSkgfCAwO1xuICAgIHc0ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gNSAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsNSwgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw1LCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg1LCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg1LCBiaDApO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmwxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsMSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoMSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmgyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDIpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDIpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmwzKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmgzKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmw0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsNCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoNCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmg1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDUpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDUpKSB8IDA7XG4gICAgdmFyIHc1ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3NSA+Pj4gMjYpKSB8IDA7XG4gICAgdzUgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSA2ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw2LCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDYsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDYsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDYsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDYpKSB8IDA7XG4gICAgdmFyIHc2ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3NiA+Pj4gMjYpKSB8IDA7XG4gICAgdzYgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSA3ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw3LCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDcsIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDcsIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDEsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMSwgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgxLCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwwLCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDAsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMCwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMCwgYmg3KSkgfCAwO1xuICAgIHZhciB3NyA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzcgPj4+IDI2KSkgfCAwO1xuICAgIHc3ICY9IDB4M2ZmZmZmZjtcbiAgICAvKiBrID0gOCAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOCwgYmwwKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw4LCBiaDApO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg4LCBibDApKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg4LCBiaDApO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmwxKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsMSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoMSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsMikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmgyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDIpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDIpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmwzKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmgzKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmw0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsNCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoNCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmg1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDUpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDUpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmw2KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmg2KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmw3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsNykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoNykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmg4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDgpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDgpKSB8IDA7XG4gICAgdmFyIHc4ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3OCA+Pj4gMjYpKSB8IDA7XG4gICAgdzggJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSA5ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDApO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoMCk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsMCkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoMCk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDEpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoMSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmwxKSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmgxKSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwyLCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDIsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMiwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMiwgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMSwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwxLCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDEsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDEsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDAsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMCwgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgwLCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgwLCBiaDkpKSB8IDA7XG4gICAgdmFyIHc5ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3OSA+Pj4gMjYpKSB8IDA7XG4gICAgdzkgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxMCAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmwxKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDEpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDEpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDEpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmwyKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDIpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsMikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoMikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsMykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmgzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDMpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDMpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDEsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMSwgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgxLCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgxLCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxMCA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzEwID4+PiAyNikpIHwgMDtcbiAgICB3MTAgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxMSAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmwyKTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDIpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDIpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDIpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmwzKSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDMpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsMykpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoMykpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmg0KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDQpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDQpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoNSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmw1KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmg1KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWwzLCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDMsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoMywgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoMywgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsMiwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWwyLCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDIsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDIsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzExID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTEgPj4+IDI2KSkgfCAwO1xuICAgIHcxMSAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDEyICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDMpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoMyk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsMykpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoMyk7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDQpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoNCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmw0KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmg0KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw1LCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDUsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNSwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNSwgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNCwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw0LCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDQsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDQsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDMsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsMywgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWgzLCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWgzLCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxMiA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzEyID4+PiAyNikpIHwgMDtcbiAgICB3MTIgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxMyAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmw0KTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDQpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDQpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDQpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmw1KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDUpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsNSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoNSkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsNikpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmg2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDYpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDYpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDQsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNCwgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg0LCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg0LCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxMyA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzEzID4+PiAyNikpIHwgMDtcbiAgICB3MTMgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxNCAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmw1KTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDUpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDUpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDUpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmw2KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDYpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsNikpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoNikpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmg3KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDcpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDcpKSB8IDA7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw2LCBibDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDYsIGJoOCkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoNiwgYmw4KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoNiwgYmg4KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNSwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw1LCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDUsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDUsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzE0ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTQgPj4+IDI2KSkgfCAwO1xuICAgIHcxNCAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDE1ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDYpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoNik7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsNikpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoNik7XG4gICAgbG8gPSAobG8gKyBNYXRoLmltdWwoYWw4LCBibDcpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhbDgsIGJoNykpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFoOCwgYmw3KSkgfCAwO1xuICAgIGhpID0gKGhpICsgTWF0aC5pbXVsKGFoOCwgYmg3KSkgfCAwO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsNywgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw3LCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDcsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDcsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDYsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNiwgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg2LCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg2LCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxNSA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzE1ID4+PiAyNikpIHwgMDtcbiAgICB3MTUgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxNiAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmw3KTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDcpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDcpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDcpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmw4KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDgpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsOCkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoOCkpIHwgMDtcbiAgICBsbyA9IChsbyArIE1hdGguaW11bChhbDcsIGJsOSkpIHwgMDtcbiAgICBtaWQgPSAobWlkICsgTWF0aC5pbXVsKGFsNywgYmg5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg3LCBibDkpKSB8IDA7XG4gICAgaGkgPSAoaGkgKyBNYXRoLmltdWwoYWg3LCBiaDkpKSB8IDA7XG4gICAgdmFyIHcxNiA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzE2ID4+PiAyNikpIHwgMDtcbiAgICB3MTYgJj0gMHgzZmZmZmZmO1xuICAgIC8qIGsgPSAxNyAqL1xuICAgIGxvID0gTWF0aC5pbXVsKGFsOSwgYmw4KTtcbiAgICBtaWQgPSBNYXRoLmltdWwoYWw5LCBiaDgpO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWg5LCBibDgpKSB8IDA7XG4gICAgaGkgPSBNYXRoLmltdWwoYWg5LCBiaDgpO1xuICAgIGxvID0gKGxvICsgTWF0aC5pbXVsKGFsOCwgYmw5KSkgfCAwO1xuICAgIG1pZCA9IChtaWQgKyBNYXRoLmltdWwoYWw4LCBiaDkpKSB8IDA7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDgsIGJsOSkpIHwgMDtcbiAgICBoaSA9IChoaSArIE1hdGguaW11bChhaDgsIGJoOSkpIHwgMDtcbiAgICB2YXIgdzE3ID0gKCgoYyArIGxvKSB8IDApICsgKChtaWQgJiAweDFmZmYpIDw8IDEzKSkgfCAwO1xuICAgIGMgPSAoKChoaSArIChtaWQgPj4+IDEzKSkgfCAwKSArICh3MTcgPj4+IDI2KSkgfCAwO1xuICAgIHcxNyAmPSAweDNmZmZmZmY7XG4gICAgLyogayA9IDE4ICovXG4gICAgbG8gPSBNYXRoLmltdWwoYWw5LCBibDkpO1xuICAgIG1pZCA9IE1hdGguaW11bChhbDksIGJoOSk7XG4gICAgbWlkID0gKG1pZCArIE1hdGguaW11bChhaDksIGJsOSkpIHwgMDtcbiAgICBoaSA9IE1hdGguaW11bChhaDksIGJoOSk7XG4gICAgdmFyIHcxOCA9ICgoKGMgKyBsbykgfCAwKSArICgobWlkICYgMHgxZmZmKSA8PCAxMykpIHwgMDtcbiAgICBjID0gKCgoaGkgKyAobWlkID4+PiAxMykpIHwgMCkgKyAodzE4ID4+PiAyNikpIHwgMDtcbiAgICB3MTggJj0gMHgzZmZmZmZmO1xuICAgIG9bMF0gPSB3MDtcbiAgICBvWzFdID0gdzE7XG4gICAgb1syXSA9IHcyO1xuICAgIG9bM10gPSB3MztcbiAgICBvWzRdID0gdzQ7XG4gICAgb1s1XSA9IHc1O1xuICAgIG9bNl0gPSB3NjtcbiAgICBvWzddID0gdzc7XG4gICAgb1s4XSA9IHc4O1xuICAgIG9bOV0gPSB3OTtcbiAgICBvWzEwXSA9IHcxMDtcbiAgICBvWzExXSA9IHcxMTtcbiAgICBvWzEyXSA9IHcxMjtcbiAgICBvWzEzXSA9IHcxMztcbiAgICBvWzE0XSA9IHcxNDtcbiAgICBvWzE1XSA9IHcxNTtcbiAgICBvWzE2XSA9IHcxNjtcbiAgICBvWzE3XSA9IHcxNztcbiAgICBvWzE4XSA9IHcxODtcbiAgICBpZiAoYyAhPT0gMCkge1xuICAgICAgb1sxOV0gPSBjO1xuICAgICAgb3V0Lmxlbmd0aCsrO1xuICAgIH1cbiAgICByZXR1cm4gb3V0O1xuICB9O1xuXG4gIC8vIFBvbHlmaWxsIGNvbWJcbiAgaWYgKCFNYXRoLmltdWwpIHtcbiAgICBjb21iMTBNdWxUbyA9IHNtYWxsTXVsVG87XG4gIH1cblxuICBmdW5jdGlvbiBiaWdNdWxUbyAoc2VsZiwgbnVtLCBvdXQpIHtcbiAgICBvdXQubmVnYXRpdmUgPSBudW0ubmVnYXRpdmUgXiBzZWxmLm5lZ2F0aXZlO1xuICAgIG91dC5sZW5ndGggPSBzZWxmLmxlbmd0aCArIG51bS5sZW5ndGg7XG5cbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIHZhciBobmNhcnJ5ID0gMDtcbiAgICBmb3IgKHZhciBrID0gMDsgayA8IG91dC5sZW5ndGggLSAxOyBrKyspIHtcbiAgICAgIC8vIFN1bSBhbGwgd29yZHMgd2l0aCB0aGUgc2FtZSBgaSArIGogPSBrYCBhbmQgYWNjdW11bGF0ZSBgbmNhcnJ5YCxcbiAgICAgIC8vIG5vdGUgdGhhdCBuY2FycnkgY291bGQgYmUgPj0gMHgzZmZmZmZmXG4gICAgICB2YXIgbmNhcnJ5ID0gaG5jYXJyeTtcbiAgICAgIGhuY2FycnkgPSAwO1xuICAgICAgdmFyIHJ3b3JkID0gY2FycnkgJiAweDNmZmZmZmY7XG4gICAgICB2YXIgbWF4SiA9IE1hdGgubWluKGssIG51bS5sZW5ndGggLSAxKTtcbiAgICAgIGZvciAodmFyIGogPSBNYXRoLm1heCgwLCBrIC0gc2VsZi5sZW5ndGggKyAxKTsgaiA8PSBtYXhKOyBqKyspIHtcbiAgICAgICAgdmFyIGkgPSBrIC0gajtcbiAgICAgICAgdmFyIGEgPSBzZWxmLndvcmRzW2ldIHwgMDtcbiAgICAgICAgdmFyIGIgPSBudW0ud29yZHNbal0gfCAwO1xuICAgICAgICB2YXIgciA9IGEgKiBiO1xuXG4gICAgICAgIHZhciBsbyA9IHIgJiAweDNmZmZmZmY7XG4gICAgICAgIG5jYXJyeSA9IChuY2FycnkgKyAoKHIgLyAweDQwMDAwMDApIHwgMCkpIHwgMDtcbiAgICAgICAgbG8gPSAobG8gKyByd29yZCkgfCAwO1xuICAgICAgICByd29yZCA9IGxvICYgMHgzZmZmZmZmO1xuICAgICAgICBuY2FycnkgPSAobmNhcnJ5ICsgKGxvID4+PiAyNikpIHwgMDtcblxuICAgICAgICBobmNhcnJ5ICs9IG5jYXJyeSA+Pj4gMjY7XG4gICAgICAgIG5jYXJyeSAmPSAweDNmZmZmZmY7XG4gICAgICB9XG4gICAgICBvdXQud29yZHNba10gPSByd29yZDtcbiAgICAgIGNhcnJ5ID0gbmNhcnJ5O1xuICAgICAgbmNhcnJ5ID0gaG5jYXJyeTtcbiAgICB9XG4gICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICBvdXQud29yZHNba10gPSBjYXJyeTtcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0Lmxlbmd0aC0tO1xuICAgIH1cblxuICAgIHJldHVybiBvdXQuc3RyaXAoKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGp1bWJvTXVsVG8gKHNlbGYsIG51bSwgb3V0KSB7XG4gICAgdmFyIGZmdG0gPSBuZXcgRkZUTSgpO1xuICAgIHJldHVybiBmZnRtLm11bHAoc2VsZiwgbnVtLCBvdXQpO1xuICB9XG5cbiAgQk4ucHJvdG90eXBlLm11bFRvID0gZnVuY3Rpb24gbXVsVG8gKG51bSwgb3V0KSB7XG4gICAgdmFyIHJlcztcbiAgICB2YXIgbGVuID0gdGhpcy5sZW5ndGggKyBudW0ubGVuZ3RoO1xuICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMTAgJiYgbnVtLmxlbmd0aCA9PT0gMTApIHtcbiAgICAgIHJlcyA9IGNvbWIxME11bFRvKHRoaXMsIG51bSwgb3V0KTtcbiAgICB9IGVsc2UgaWYgKGxlbiA8IDYzKSB7XG4gICAgICByZXMgPSBzbWFsbE11bFRvKHRoaXMsIG51bSwgb3V0KTtcbiAgICB9IGVsc2UgaWYgKGxlbiA8IDEwMjQpIHtcbiAgICAgIHJlcyA9IGJpZ011bFRvKHRoaXMsIG51bSwgb3V0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzID0ganVtYm9NdWxUbyh0aGlzLCBudW0sIG91dCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICAvLyBDb29sZXktVHVrZXkgYWxnb3JpdGhtIGZvciBGRlRcbiAgLy8gc2xpZ2h0bHkgcmV2aXNpdGVkIHRvIHJlbHkgb24gbG9vcGluZyBpbnN0ZWFkIG9mIHJlY3Vyc2lvblxuXG4gIGZ1bmN0aW9uIEZGVE0gKHgsIHkpIHtcbiAgICB0aGlzLnggPSB4O1xuICAgIHRoaXMueSA9IHk7XG4gIH1cblxuICBGRlRNLnByb3RvdHlwZS5tYWtlUkJUID0gZnVuY3Rpb24gbWFrZVJCVCAoTikge1xuICAgIHZhciB0ID0gbmV3IEFycmF5KE4pO1xuICAgIHZhciBsID0gQk4ucHJvdG90eXBlLl9jb3VudEJpdHMoTikgLSAxO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgTjsgaSsrKSB7XG4gICAgICB0W2ldID0gdGhpcy5yZXZCaW4oaSwgbCwgTik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHQ7XG4gIH07XG5cbiAgLy8gUmV0dXJucyBiaW5hcnktcmV2ZXJzZWQgcmVwcmVzZW50YXRpb24gb2YgYHhgXG4gIEZGVE0ucHJvdG90eXBlLnJldkJpbiA9IGZ1bmN0aW9uIHJldkJpbiAoeCwgbCwgTikge1xuICAgIGlmICh4ID09PSAwIHx8IHggPT09IE4gLSAxKSByZXR1cm4geDtcblxuICAgIHZhciByYiA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsOyBpKyspIHtcbiAgICAgIHJiIHw9ICh4ICYgMSkgPDwgKGwgLSBpIC0gMSk7XG4gICAgICB4ID4+PSAxO1xuICAgIH1cblxuICAgIHJldHVybiByYjtcbiAgfTtcblxuICAvLyBQZXJmb3JtcyBcInR3ZWVkbGluZ1wiIHBoYXNlLCB0aGVyZWZvcmUgJ2VtdWxhdGluZydcbiAgLy8gYmVoYXZpb3VyIG9mIHRoZSByZWN1cnNpdmUgYWxnb3JpdGhtXG4gIEZGVE0ucHJvdG90eXBlLnBlcm11dGUgPSBmdW5jdGlvbiBwZXJtdXRlIChyYnQsIHJ3cywgaXdzLCBydHdzLCBpdHdzLCBOKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBOOyBpKyspIHtcbiAgICAgIHJ0d3NbaV0gPSByd3NbcmJ0W2ldXTtcbiAgICAgIGl0d3NbaV0gPSBpd3NbcmJ0W2ldXTtcbiAgICB9XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUudHJhbnNmb3JtID0gZnVuY3Rpb24gdHJhbnNmb3JtIChyd3MsIGl3cywgcnR3cywgaXR3cywgTiwgcmJ0KSB7XG4gICAgdGhpcy5wZXJtdXRlKHJidCwgcndzLCBpd3MsIHJ0d3MsIGl0d3MsIE4pO1xuXG4gICAgZm9yICh2YXIgcyA9IDE7IHMgPCBOOyBzIDw8PSAxKSB7XG4gICAgICB2YXIgbCA9IHMgPDwgMTtcblxuICAgICAgdmFyIHJ0d2RmID0gTWF0aC5jb3MoMiAqIE1hdGguUEkgLyBsKTtcbiAgICAgIHZhciBpdHdkZiA9IE1hdGguc2luKDIgKiBNYXRoLlBJIC8gbCk7XG5cbiAgICAgIGZvciAodmFyIHAgPSAwOyBwIDwgTjsgcCArPSBsKSB7XG4gICAgICAgIHZhciBydHdkZl8gPSBydHdkZjtcbiAgICAgICAgdmFyIGl0d2RmXyA9IGl0d2RmO1xuXG4gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgczsgaisrKSB7XG4gICAgICAgICAgdmFyIHJlID0gcnR3c1twICsgal07XG4gICAgICAgICAgdmFyIGllID0gaXR3c1twICsgal07XG5cbiAgICAgICAgICB2YXIgcm8gPSBydHdzW3AgKyBqICsgc107XG4gICAgICAgICAgdmFyIGlvID0gaXR3c1twICsgaiArIHNdO1xuXG4gICAgICAgICAgdmFyIHJ4ID0gcnR3ZGZfICogcm8gLSBpdHdkZl8gKiBpbztcblxuICAgICAgICAgIGlvID0gcnR3ZGZfICogaW8gKyBpdHdkZl8gKiBybztcbiAgICAgICAgICBybyA9IHJ4O1xuXG4gICAgICAgICAgcnR3c1twICsgal0gPSByZSArIHJvO1xuICAgICAgICAgIGl0d3NbcCArIGpdID0gaWUgKyBpbztcblxuICAgICAgICAgIHJ0d3NbcCArIGogKyBzXSA9IHJlIC0gcm87XG4gICAgICAgICAgaXR3c1twICsgaiArIHNdID0gaWUgLSBpbztcblxuICAgICAgICAgIC8qIGpzaGludCBtYXhkZXB0aCA6IGZhbHNlICovXG4gICAgICAgICAgaWYgKGogIT09IGwpIHtcbiAgICAgICAgICAgIHJ4ID0gcnR3ZGYgKiBydHdkZl8gLSBpdHdkZiAqIGl0d2RmXztcblxuICAgICAgICAgICAgaXR3ZGZfID0gcnR3ZGYgKiBpdHdkZl8gKyBpdHdkZiAqIHJ0d2RmXztcbiAgICAgICAgICAgIHJ0d2RmXyA9IHJ4O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBGRlRNLnByb3RvdHlwZS5ndWVzc0xlbjEzYiA9IGZ1bmN0aW9uIGd1ZXNzTGVuMTNiIChuLCBtKSB7XG4gICAgdmFyIE4gPSBNYXRoLm1heChtLCBuKSB8IDE7XG4gICAgdmFyIG9kZCA9IE4gJiAxO1xuICAgIHZhciBpID0gMDtcbiAgICBmb3IgKE4gPSBOIC8gMiB8IDA7IE47IE4gPSBOID4+PiAxKSB7XG4gICAgICBpKys7XG4gICAgfVxuXG4gICAgcmV0dXJuIDEgPDwgaSArIDEgKyBvZGQ7XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUuY29uanVnYXRlID0gZnVuY3Rpb24gY29uanVnYXRlIChyd3MsIGl3cywgTikge1xuICAgIGlmIChOIDw9IDEpIHJldHVybjtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgTiAvIDI7IGkrKykge1xuICAgICAgdmFyIHQgPSByd3NbaV07XG5cbiAgICAgIHJ3c1tpXSA9IHJ3c1tOIC0gaSAtIDFdO1xuICAgICAgcndzW04gLSBpIC0gMV0gPSB0O1xuXG4gICAgICB0ID0gaXdzW2ldO1xuXG4gICAgICBpd3NbaV0gPSAtaXdzW04gLSBpIC0gMV07XG4gICAgICBpd3NbTiAtIGkgLSAxXSA9IC10O1xuICAgIH1cbiAgfTtcblxuICBGRlRNLnByb3RvdHlwZS5ub3JtYWxpemUxM2IgPSBmdW5jdGlvbiBub3JtYWxpemUxM2IgKHdzLCBOKSB7XG4gICAgdmFyIGNhcnJ5ID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IE4gLyAyOyBpKyspIHtcbiAgICAgIHZhciB3ID0gTWF0aC5yb3VuZCh3c1syICogaSArIDFdIC8gTikgKiAweDIwMDAgK1xuICAgICAgICBNYXRoLnJvdW5kKHdzWzIgKiBpXSAvIE4pICtcbiAgICAgICAgY2Fycnk7XG5cbiAgICAgIHdzW2ldID0gdyAmIDB4M2ZmZmZmZjtcblxuICAgICAgaWYgKHcgPCAweDQwMDAwMDApIHtcbiAgICAgICAgY2FycnkgPSAwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2FycnkgPSB3IC8gMHg0MDAwMDAwIHwgMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gd3M7XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUuY29udmVydDEzYiA9IGZ1bmN0aW9uIGNvbnZlcnQxM2IgKHdzLCBsZW4sIHJ3cywgTikge1xuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgY2FycnkgPSBjYXJyeSArICh3c1tpXSB8IDApO1xuXG4gICAgICByd3NbMiAqIGldID0gY2FycnkgJiAweDFmZmY7IGNhcnJ5ID0gY2FycnkgPj4+IDEzO1xuICAgICAgcndzWzIgKiBpICsgMV0gPSBjYXJyeSAmIDB4MWZmZjsgY2FycnkgPSBjYXJyeSA+Pj4gMTM7XG4gICAgfVxuXG4gICAgLy8gUGFkIHdpdGggemVyb2VzXG4gICAgZm9yIChpID0gMiAqIGxlbjsgaSA8IE47ICsraSkge1xuICAgICAgcndzW2ldID0gMDtcbiAgICB9XG5cbiAgICBhc3NlcnQoY2FycnkgPT09IDApO1xuICAgIGFzc2VydCgoY2FycnkgJiB+MHgxZmZmKSA9PT0gMCk7XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUuc3R1YiA9IGZ1bmN0aW9uIHN0dWIgKE4pIHtcbiAgICB2YXIgcGggPSBuZXcgQXJyYXkoTik7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBOOyBpKyspIHtcbiAgICAgIHBoW2ldID0gMDtcbiAgICB9XG5cbiAgICByZXR1cm4gcGg7XG4gIH07XG5cbiAgRkZUTS5wcm90b3R5cGUubXVscCA9IGZ1bmN0aW9uIG11bHAgKHgsIHksIG91dCkge1xuICAgIHZhciBOID0gMiAqIHRoaXMuZ3Vlc3NMZW4xM2IoeC5sZW5ndGgsIHkubGVuZ3RoKTtcblxuICAgIHZhciByYnQgPSB0aGlzLm1ha2VSQlQoTik7XG5cbiAgICB2YXIgXyA9IHRoaXMuc3R1YihOKTtcblxuICAgIHZhciByd3MgPSBuZXcgQXJyYXkoTik7XG4gICAgdmFyIHJ3c3QgPSBuZXcgQXJyYXkoTik7XG4gICAgdmFyIGl3c3QgPSBuZXcgQXJyYXkoTik7XG5cbiAgICB2YXIgbnJ3cyA9IG5ldyBBcnJheShOKTtcbiAgICB2YXIgbnJ3c3QgPSBuZXcgQXJyYXkoTik7XG4gICAgdmFyIG5pd3N0ID0gbmV3IEFycmF5KE4pO1xuXG4gICAgdmFyIHJtd3MgPSBvdXQud29yZHM7XG4gICAgcm13cy5sZW5ndGggPSBOO1xuXG4gICAgdGhpcy5jb252ZXJ0MTNiKHgud29yZHMsIHgubGVuZ3RoLCByd3MsIE4pO1xuICAgIHRoaXMuY29udmVydDEzYih5LndvcmRzLCB5Lmxlbmd0aCwgbnJ3cywgTik7XG5cbiAgICB0aGlzLnRyYW5zZm9ybShyd3MsIF8sIHJ3c3QsIGl3c3QsIE4sIHJidCk7XG4gICAgdGhpcy50cmFuc2Zvcm0obnJ3cywgXywgbnJ3c3QsIG5pd3N0LCBOLCByYnQpO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBOOyBpKyspIHtcbiAgICAgIHZhciByeCA9IHJ3c3RbaV0gKiBucndzdFtpXSAtIGl3c3RbaV0gKiBuaXdzdFtpXTtcbiAgICAgIGl3c3RbaV0gPSByd3N0W2ldICogbml3c3RbaV0gKyBpd3N0W2ldICogbnJ3c3RbaV07XG4gICAgICByd3N0W2ldID0gcng7XG4gICAgfVxuXG4gICAgdGhpcy5jb25qdWdhdGUocndzdCwgaXdzdCwgTik7XG4gICAgdGhpcy50cmFuc2Zvcm0ocndzdCwgaXdzdCwgcm13cywgXywgTiwgcmJ0KTtcbiAgICB0aGlzLmNvbmp1Z2F0ZShybXdzLCBfLCBOKTtcbiAgICB0aGlzLm5vcm1hbGl6ZTEzYihybXdzLCBOKTtcblxuICAgIG91dC5uZWdhdGl2ZSA9IHgubmVnYXRpdmUgXiB5Lm5lZ2F0aXZlO1xuICAgIG91dC5sZW5ndGggPSB4Lmxlbmd0aCArIHkubGVuZ3RoO1xuICAgIHJldHVybiBvdXQuc3RyaXAoKTtcbiAgfTtcblxuICAvLyBNdWx0aXBseSBgdGhpc2AgYnkgYG51bWBcbiAgQk4ucHJvdG90eXBlLm11bCA9IGZ1bmN0aW9uIG11bCAobnVtKSB7XG4gICAgdmFyIG91dCA9IG5ldyBCTihudWxsKTtcbiAgICBvdXQud29yZHMgPSBuZXcgQXJyYXkodGhpcy5sZW5ndGggKyBudW0ubGVuZ3RoKTtcbiAgICByZXR1cm4gdGhpcy5tdWxUbyhudW0sIG91dCk7XG4gIH07XG5cbiAgLy8gTXVsdGlwbHkgZW1wbG95aW5nIEZGVFxuICBCTi5wcm90b3R5cGUubXVsZiA9IGZ1bmN0aW9uIG11bGYgKG51bSkge1xuICAgIHZhciBvdXQgPSBuZXcgQk4obnVsbCk7XG4gICAgb3V0LndvcmRzID0gbmV3IEFycmF5KHRoaXMubGVuZ3RoICsgbnVtLmxlbmd0aCk7XG4gICAgcmV0dXJuIGp1bWJvTXVsVG8odGhpcywgbnVtLCBvdXQpO1xuICB9O1xuXG4gIC8vIEluLXBsYWNlIE11bHRpcGxpY2F0aW9uXG4gIEJOLnByb3RvdHlwZS5pbXVsID0gZnVuY3Rpb24gaW11bCAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5tdWxUbyhudW0sIHRoaXMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pbXVsbiA9IGZ1bmN0aW9uIGltdWxuIChudW0pIHtcbiAgICBhc3NlcnQodHlwZW9mIG51bSA9PT0gJ251bWJlcicpO1xuICAgIGFzc2VydChudW0gPCAweDQwMDAwMDApO1xuXG4gICAgLy8gQ2FycnlcbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHcgPSAodGhpcy53b3Jkc1tpXSB8IDApICogbnVtO1xuICAgICAgdmFyIGxvID0gKHcgJiAweDNmZmZmZmYpICsgKGNhcnJ5ICYgMHgzZmZmZmZmKTtcbiAgICAgIGNhcnJ5ID4+PSAyNjtcbiAgICAgIGNhcnJ5ICs9ICh3IC8gMHg0MDAwMDAwKSB8IDA7XG4gICAgICAvLyBOT1RFOiBsbyBpcyAyN2JpdCBtYXhpbXVtXG4gICAgICBjYXJyeSArPSBsbyA+Pj4gMjY7XG4gICAgICB0aGlzLndvcmRzW2ldID0gbG8gJiAweDNmZmZmZmY7XG4gICAgfVxuXG4gICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gY2Fycnk7XG4gICAgICB0aGlzLmxlbmd0aCsrO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5tdWxuID0gZnVuY3Rpb24gbXVsbiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pbXVsbihudW0pO1xuICB9O1xuXG4gIC8vIGB0aGlzYCAqIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuc3FyID0gZnVuY3Rpb24gc3FyICgpIHtcbiAgICByZXR1cm4gdGhpcy5tdWwodGhpcyk7XG4gIH07XG5cbiAgLy8gYHRoaXNgICogYHRoaXNgIGluLXBsYWNlXG4gIEJOLnByb3RvdHlwZS5pc3FyID0gZnVuY3Rpb24gaXNxciAoKSB7XG4gICAgcmV0dXJuIHRoaXMuaW11bCh0aGlzLmNsb25lKCkpO1xuICB9O1xuXG4gIC8vIE1hdGgucG93KGB0aGlzYCwgYG51bWApXG4gIEJOLnByb3RvdHlwZS5wb3cgPSBmdW5jdGlvbiBwb3cgKG51bSkge1xuICAgIHZhciB3ID0gdG9CaXRBcnJheShudW0pO1xuICAgIGlmICh3Lmxlbmd0aCA9PT0gMCkgcmV0dXJuIG5ldyBCTigxKTtcblxuICAgIC8vIFNraXAgbGVhZGluZyB6ZXJvZXNcbiAgICB2YXIgcmVzID0gdGhpcztcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHcubGVuZ3RoOyBpKyssIHJlcyA9IHJlcy5zcXIoKSkge1xuICAgICAgaWYgKHdbaV0gIT09IDApIGJyZWFrO1xuICAgIH1cblxuICAgIGlmICgrK2kgPCB3Lmxlbmd0aCkge1xuICAgICAgZm9yICh2YXIgcSA9IHJlcy5zcXIoKTsgaSA8IHcubGVuZ3RoOyBpKyssIHEgPSBxLnNxcigpKSB7XG4gICAgICAgIGlmICh3W2ldID09PSAwKSBjb250aW51ZTtcblxuICAgICAgICByZXMgPSByZXMubXVsKHEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgLy8gU2hpZnQtbGVmdCBpbi1wbGFjZVxuICBCTi5wcm90b3R5cGUuaXVzaGxuID0gZnVuY3Rpb24gaXVzaGxuIChiaXRzKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBiaXRzID09PSAnbnVtYmVyJyAmJiBiaXRzID49IDApO1xuICAgIHZhciByID0gYml0cyAlIDI2O1xuICAgIHZhciBzID0gKGJpdHMgLSByKSAvIDI2O1xuICAgIHZhciBjYXJyeU1hc2sgPSAoMHgzZmZmZmZmID4+PiAoMjYgLSByKSkgPDwgKDI2IC0gcik7XG4gICAgdmFyIGk7XG5cbiAgICBpZiAociAhPT0gMCkge1xuICAgICAgdmFyIGNhcnJ5ID0gMDtcblxuICAgICAgZm9yIChpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIG5ld0NhcnJ5ID0gdGhpcy53b3Jkc1tpXSAmIGNhcnJ5TWFzaztcbiAgICAgICAgdmFyIGMgPSAoKHRoaXMud29yZHNbaV0gfCAwKSAtIG5ld0NhcnJ5KSA8PCByO1xuICAgICAgICB0aGlzLndvcmRzW2ldID0gYyB8IGNhcnJ5O1xuICAgICAgICBjYXJyeSA9IG5ld0NhcnJ5ID4+PiAoMjYgLSByKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGNhcnJ5KSB7XG4gICAgICAgIHRoaXMud29yZHNbaV0gPSBjYXJyeTtcbiAgICAgICAgdGhpcy5sZW5ndGgrKztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocyAhPT0gMCkge1xuICAgICAgZm9yIChpID0gdGhpcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICB0aGlzLndvcmRzW2kgKyBzXSA9IHRoaXMud29yZHNbaV07XG4gICAgICB9XG5cbiAgICAgIGZvciAoaSA9IDA7IGkgPCBzOyBpKyspIHtcbiAgICAgICAgdGhpcy53b3Jkc1tpXSA9IDA7XG4gICAgICB9XG5cbiAgICAgIHRoaXMubGVuZ3RoICs9IHM7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNobG4gPSBmdW5jdGlvbiBpc2hsbiAoYml0cykge1xuICAgIC8vIFRPRE8oaW5kdXRueSk6IGltcGxlbWVudCBtZVxuICAgIGFzc2VydCh0aGlzLm5lZ2F0aXZlID09PSAwKTtcbiAgICByZXR1cm4gdGhpcy5pdXNobG4oYml0cyk7XG4gIH07XG5cbiAgLy8gU2hpZnQtcmlnaHQgaW4tcGxhY2VcbiAgLy8gTk9URTogYGhpbnRgIGlzIGEgbG93ZXN0IGJpdCBiZWZvcmUgdHJhaWxpbmcgemVyb2VzXG4gIC8vIE5PVEU6IGlmIGBleHRlbmRlZGAgaXMgcHJlc2VudCAtIGl0IHdpbGwgYmUgZmlsbGVkIHdpdGggZGVzdHJveWVkIGJpdHNcbiAgQk4ucHJvdG90eXBlLml1c2hybiA9IGZ1bmN0aW9uIGl1c2hybiAoYml0cywgaGludCwgZXh0ZW5kZWQpIHtcbiAgICBhc3NlcnQodHlwZW9mIGJpdHMgPT09ICdudW1iZXInICYmIGJpdHMgPj0gMCk7XG4gICAgdmFyIGg7XG4gICAgaWYgKGhpbnQpIHtcbiAgICAgIGggPSAoaGludCAtIChoaW50ICUgMjYpKSAvIDI2O1xuICAgIH0gZWxzZSB7XG4gICAgICBoID0gMDtcbiAgICB9XG5cbiAgICB2YXIgciA9IGJpdHMgJSAyNjtcbiAgICB2YXIgcyA9IE1hdGgubWluKChiaXRzIC0gcikgLyAyNiwgdGhpcy5sZW5ndGgpO1xuICAgIHZhciBtYXNrID0gMHgzZmZmZmZmIF4gKCgweDNmZmZmZmYgPj4+IHIpIDw8IHIpO1xuICAgIHZhciBtYXNrZWRXb3JkcyA9IGV4dGVuZGVkO1xuXG4gICAgaCAtPSBzO1xuICAgIGggPSBNYXRoLm1heCgwLCBoKTtcblxuICAgIC8vIEV4dGVuZGVkIG1vZGUsIGNvcHkgbWFza2VkIHBhcnRcbiAgICBpZiAobWFza2VkV29yZHMpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgczsgaSsrKSB7XG4gICAgICAgIG1hc2tlZFdvcmRzLndvcmRzW2ldID0gdGhpcy53b3Jkc1tpXTtcbiAgICAgIH1cbiAgICAgIG1hc2tlZFdvcmRzLmxlbmd0aCA9IHM7XG4gICAgfVxuXG4gICAgaWYgKHMgPT09IDApIHtcbiAgICAgIC8vIE5vLW9wLCB3ZSBzaG91bGQgbm90IG1vdmUgYW55dGhpbmcgYXQgYWxsXG4gICAgfSBlbHNlIGlmICh0aGlzLmxlbmd0aCA+IHMpIHtcbiAgICAgIHRoaXMubGVuZ3RoIC09IHM7XG4gICAgICBmb3IgKGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB0aGlzLndvcmRzW2ldID0gdGhpcy53b3Jkc1tpICsgc107XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud29yZHNbMF0gPSAwO1xuICAgICAgdGhpcy5sZW5ndGggPSAxO1xuICAgIH1cblxuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yIChpID0gdGhpcy5sZW5ndGggLSAxOyBpID49IDAgJiYgKGNhcnJ5ICE9PSAwIHx8IGkgPj0gaCk7IGktLSkge1xuICAgICAgdmFyIHdvcmQgPSB0aGlzLndvcmRzW2ldIHwgMDtcbiAgICAgIHRoaXMud29yZHNbaV0gPSAoY2FycnkgPDwgKDI2IC0gcikpIHwgKHdvcmQgPj4+IHIpO1xuICAgICAgY2FycnkgPSB3b3JkICYgbWFzaztcbiAgICB9XG5cbiAgICAvLyBQdXNoIGNhcnJpZWQgYml0cyBhcyBhIG1hc2tcbiAgICBpZiAobWFza2VkV29yZHMgJiYgY2FycnkgIT09IDApIHtcbiAgICAgIG1hc2tlZFdvcmRzLndvcmRzW21hc2tlZFdvcmRzLmxlbmd0aCsrXSA9IGNhcnJ5O1xuICAgIH1cblxuICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy53b3Jkc1swXSA9IDA7XG4gICAgICB0aGlzLmxlbmd0aCA9IDE7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNocm4gPSBmdW5jdGlvbiBpc2hybiAoYml0cywgaGludCwgZXh0ZW5kZWQpIHtcbiAgICAvLyBUT0RPKGluZHV0bnkpOiBpbXBsZW1lbnQgbWVcbiAgICBhc3NlcnQodGhpcy5uZWdhdGl2ZSA9PT0gMCk7XG4gICAgcmV0dXJuIHRoaXMuaXVzaHJuKGJpdHMsIGhpbnQsIGV4dGVuZGVkKTtcbiAgfTtcblxuICAvLyBTaGlmdC1sZWZ0XG4gIEJOLnByb3RvdHlwZS5zaGxuID0gZnVuY3Rpb24gc2hsbiAoYml0cykge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaXNobG4oYml0cyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnVzaGxuID0gZnVuY3Rpb24gdXNobG4gKGJpdHMpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLml1c2hsbihiaXRzKTtcbiAgfTtcblxuICAvLyBTaGlmdC1yaWdodFxuICBCTi5wcm90b3R5cGUuc2hybiA9IGZ1bmN0aW9uIHNocm4gKGJpdHMpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlzaHJuKGJpdHMpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS51c2hybiA9IGZ1bmN0aW9uIHVzaHJuIChiaXRzKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pdXNocm4oYml0cyk7XG4gIH07XG5cbiAgLy8gVGVzdCBpZiBuIGJpdCBpcyBzZXRcbiAgQk4ucHJvdG90eXBlLnRlc3RuID0gZnVuY3Rpb24gdGVzdG4gKGJpdCkge1xuICAgIGFzc2VydCh0eXBlb2YgYml0ID09PSAnbnVtYmVyJyAmJiBiaXQgPj0gMCk7XG4gICAgdmFyIHIgPSBiaXQgJSAyNjtcbiAgICB2YXIgcyA9IChiaXQgLSByKSAvIDI2O1xuICAgIHZhciBxID0gMSA8PCByO1xuXG4gICAgLy8gRmFzdCBjYXNlOiBiaXQgaXMgbXVjaCBoaWdoZXIgdGhhbiBhbGwgZXhpc3Rpbmcgd29yZHNcbiAgICBpZiAodGhpcy5sZW5ndGggPD0gcykgcmV0dXJuIGZhbHNlO1xuXG4gICAgLy8gQ2hlY2sgYml0IGFuZCByZXR1cm5cbiAgICB2YXIgdyA9IHRoaXMud29yZHNbc107XG5cbiAgICByZXR1cm4gISEodyAmIHEpO1xuICB9O1xuXG4gIC8vIFJldHVybiBvbmx5IGxvd2VycyBiaXRzIG9mIG51bWJlciAoaW4tcGxhY2UpXG4gIEJOLnByb3RvdHlwZS5pbWFza24gPSBmdW5jdGlvbiBpbWFza24gKGJpdHMpIHtcbiAgICBhc3NlcnQodHlwZW9mIGJpdHMgPT09ICdudW1iZXInICYmIGJpdHMgPj0gMCk7XG4gICAgdmFyIHIgPSBiaXRzICUgMjY7XG4gICAgdmFyIHMgPSAoYml0cyAtIHIpIC8gMjY7XG5cbiAgICBhc3NlcnQodGhpcy5uZWdhdGl2ZSA9PT0gMCwgJ2ltYXNrbiB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmUgbnVtYmVycycpO1xuXG4gICAgaWYgKHRoaXMubGVuZ3RoIDw9IHMpIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGlmIChyICE9PSAwKSB7XG4gICAgICBzKys7XG4gICAgfVxuICAgIHRoaXMubGVuZ3RoID0gTWF0aC5taW4ocywgdGhpcy5sZW5ndGgpO1xuXG4gICAgaWYgKHIgIT09IDApIHtcbiAgICAgIHZhciBtYXNrID0gMHgzZmZmZmZmIF4gKCgweDNmZmZmZmYgPj4+IHIpIDw8IHIpO1xuICAgICAgdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCAtIDFdICY9IG1hc2s7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICAvLyBSZXR1cm4gb25seSBsb3dlcnMgYml0cyBvZiBudW1iZXJcbiAgQk4ucHJvdG90eXBlLm1hc2tuID0gZnVuY3Rpb24gbWFza24gKGJpdHMpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmltYXNrbihiaXRzKTtcbiAgfTtcblxuICAvLyBBZGQgcGxhaW4gbnVtYmVyIGBudW1gIHRvIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuaWFkZG4gPSBmdW5jdGlvbiBpYWRkbiAobnVtKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBudW0gPT09ICdudW1iZXInKTtcbiAgICBhc3NlcnQobnVtIDwgMHg0MDAwMDAwKTtcbiAgICBpZiAobnVtIDwgMCkgcmV0dXJuIHRoaXMuaXN1Ym4oLW51bSk7XG5cbiAgICAvLyBQb3NzaWJsZSBzaWduIGNoYW5nZVxuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICBpZiAodGhpcy5sZW5ndGggPT09IDEgJiYgKHRoaXMud29yZHNbMF0gfCAwKSA8IG51bSkge1xuICAgICAgICB0aGlzLndvcmRzWzBdID0gbnVtIC0gKHRoaXMud29yZHNbMF0gfCAwKTtcbiAgICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfVxuXG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMDtcbiAgICAgIHRoaXMuaXN1Ym4obnVtKTtcbiAgICAgIHRoaXMubmVnYXRpdmUgPSAxO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLy8gQWRkIHdpdGhvdXQgY2hlY2tzXG4gICAgcmV0dXJuIHRoaXMuX2lhZGRuKG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl9pYWRkbiA9IGZ1bmN0aW9uIF9pYWRkbiAobnVtKSB7XG4gICAgdGhpcy53b3Jkc1swXSArPSBudW07XG5cbiAgICAvLyBDYXJyeVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGggJiYgdGhpcy53b3Jkc1tpXSA+PSAweDQwMDAwMDA7IGkrKykge1xuICAgICAgdGhpcy53b3Jkc1tpXSAtPSAweDQwMDAwMDA7XG4gICAgICBpZiAoaSA9PT0gdGhpcy5sZW5ndGggLSAxKSB7XG4gICAgICAgIHRoaXMud29yZHNbaSArIDFdID0gMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMud29yZHNbaSArIDFdKys7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMubGVuZ3RoID0gTWF0aC5tYXgodGhpcy5sZW5ndGgsIGkgKyAxKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIC8vIFN1YnRyYWN0IHBsYWluIG51bWJlciBgbnVtYCBmcm9tIGB0aGlzYFxuICBCTi5wcm90b3R5cGUuaXN1Ym4gPSBmdW5jdGlvbiBpc3VibiAobnVtKSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBudW0gPT09ICdudW1iZXInKTtcbiAgICBhc3NlcnQobnVtIDwgMHg0MDAwMDAwKTtcbiAgICBpZiAobnVtIDwgMCkgcmV0dXJuIHRoaXMuaWFkZG4oLW51bSk7XG5cbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG4gICAgICB0aGlzLmlhZGRuKG51bSk7XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHRoaXMud29yZHNbMF0gLT0gbnVtO1xuXG4gICAgaWYgKHRoaXMubGVuZ3RoID09PSAxICYmIHRoaXMud29yZHNbMF0gPCAwKSB7XG4gICAgICB0aGlzLndvcmRzWzBdID0gLXRoaXMud29yZHNbMF07XG4gICAgICB0aGlzLm5lZ2F0aXZlID0gMTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gQ2FycnlcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5sZW5ndGggJiYgdGhpcy53b3Jkc1tpXSA8IDA7IGkrKykge1xuICAgICAgICB0aGlzLndvcmRzW2ldICs9IDB4NDAwMDAwMDtcbiAgICAgICAgdGhpcy53b3Jkc1tpICsgMV0gLT0gMTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5hZGRuID0gZnVuY3Rpb24gYWRkbiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pYWRkbihudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5zdWJuID0gZnVuY3Rpb24gc3VibiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmUoKS5pc3VibihudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5pYWJzID0gZnVuY3Rpb24gaWFicyAoKSB7XG4gICAgdGhpcy5uZWdhdGl2ZSA9IDA7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuYWJzID0gZnVuY3Rpb24gYWJzICgpIHtcbiAgICByZXR1cm4gdGhpcy5jbG9uZSgpLmlhYnMoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuX2lzaGxuc3VibXVsID0gZnVuY3Rpb24gX2lzaGxuc3VibXVsIChudW0sIG11bCwgc2hpZnQpIHtcbiAgICB2YXIgbGVuID0gbnVtLmxlbmd0aCArIHNoaWZ0O1xuICAgIHZhciBpO1xuXG4gICAgdGhpcy5fZXhwYW5kKGxlbik7XG5cbiAgICB2YXIgdztcbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAoaSA9IDA7IGkgPCBudW0ubGVuZ3RoOyBpKyspIHtcbiAgICAgIHcgPSAodGhpcy53b3Jkc1tpICsgc2hpZnRdIHwgMCkgKyBjYXJyeTtcbiAgICAgIHZhciByaWdodCA9IChudW0ud29yZHNbaV0gfCAwKSAqIG11bDtcbiAgICAgIHcgLT0gcmlnaHQgJiAweDNmZmZmZmY7XG4gICAgICBjYXJyeSA9ICh3ID4+IDI2KSAtICgocmlnaHQgLyAweDQwMDAwMDApIHwgMCk7XG4gICAgICB0aGlzLndvcmRzW2kgKyBzaGlmdF0gPSB3ICYgMHgzZmZmZmZmO1xuICAgIH1cbiAgICBmb3IgKDsgaSA8IHRoaXMubGVuZ3RoIC0gc2hpZnQ7IGkrKykge1xuICAgICAgdyA9ICh0aGlzLndvcmRzW2kgKyBzaGlmdF0gfCAwKSArIGNhcnJ5O1xuICAgICAgY2FycnkgPSB3ID4+IDI2O1xuICAgICAgdGhpcy53b3Jkc1tpICsgc2hpZnRdID0gdyAmIDB4M2ZmZmZmZjtcbiAgICB9XG5cbiAgICBpZiAoY2FycnkgPT09IDApIHJldHVybiB0aGlzLnN0cmlwKCk7XG5cbiAgICAvLyBTdWJ0cmFjdGlvbiBvdmVyZmxvd1xuICAgIGFzc2VydChjYXJyeSA9PT0gLTEpO1xuICAgIGNhcnJ5ID0gMDtcbiAgICBmb3IgKGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdyA9IC0odGhpcy53b3Jkc1tpXSB8IDApICsgY2Fycnk7XG4gICAgICBjYXJyeSA9IHcgPj4gMjY7XG4gICAgICB0aGlzLndvcmRzW2ldID0gdyAmIDB4M2ZmZmZmZjtcbiAgICB9XG4gICAgdGhpcy5uZWdhdGl2ZSA9IDE7XG5cbiAgICByZXR1cm4gdGhpcy5zdHJpcCgpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5fd29yZERpdiA9IGZ1bmN0aW9uIF93b3JkRGl2IChudW0sIG1vZGUpIHtcbiAgICB2YXIgc2hpZnQgPSB0aGlzLmxlbmd0aCAtIG51bS5sZW5ndGg7XG5cbiAgICB2YXIgYSA9IHRoaXMuY2xvbmUoKTtcbiAgICB2YXIgYiA9IG51bTtcblxuICAgIC8vIE5vcm1hbGl6ZVxuICAgIHZhciBiaGkgPSBiLndvcmRzW2IubGVuZ3RoIC0gMV0gfCAwO1xuICAgIHZhciBiaGlCaXRzID0gdGhpcy5fY291bnRCaXRzKGJoaSk7XG4gICAgc2hpZnQgPSAyNiAtIGJoaUJpdHM7XG4gICAgaWYgKHNoaWZ0ICE9PSAwKSB7XG4gICAgICBiID0gYi51c2hsbihzaGlmdCk7XG4gICAgICBhLml1c2hsbihzaGlmdCk7XG4gICAgICBiaGkgPSBiLndvcmRzW2IubGVuZ3RoIC0gMV0gfCAwO1xuICAgIH1cblxuICAgIC8vIEluaXRpYWxpemUgcXVvdGllbnRcbiAgICB2YXIgbSA9IGEubGVuZ3RoIC0gYi5sZW5ndGg7XG4gICAgdmFyIHE7XG5cbiAgICBpZiAobW9kZSAhPT0gJ21vZCcpIHtcbiAgICAgIHEgPSBuZXcgQk4obnVsbCk7XG4gICAgICBxLmxlbmd0aCA9IG0gKyAxO1xuICAgICAgcS53b3JkcyA9IG5ldyBBcnJheShxLmxlbmd0aCk7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcS53b3Jkc1tpXSA9IDA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGRpZmYgPSBhLmNsb25lKCkuX2lzaGxuc3VibXVsKGIsIDEsIG0pO1xuICAgIGlmIChkaWZmLm5lZ2F0aXZlID09PSAwKSB7XG4gICAgICBhID0gZGlmZjtcbiAgICAgIGlmIChxKSB7XG4gICAgICAgIHEud29yZHNbbV0gPSAxO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAodmFyIGogPSBtIC0gMTsgaiA+PSAwOyBqLS0pIHtcbiAgICAgIHZhciBxaiA9IChhLndvcmRzW2IubGVuZ3RoICsgal0gfCAwKSAqIDB4NDAwMDAwMCArXG4gICAgICAgIChhLndvcmRzW2IubGVuZ3RoICsgaiAtIDFdIHwgMCk7XG5cbiAgICAgIC8vIE5PVEU6IChxaiAvIGJoaSkgaXMgKDB4M2ZmZmZmZiAqIDB4NDAwMDAwMCArIDB4M2ZmZmZmZikgLyAweDIwMDAwMDAgbWF4XG4gICAgICAvLyAoMHg3ZmZmZmZmKVxuICAgICAgcWogPSBNYXRoLm1pbigocWogLyBiaGkpIHwgMCwgMHgzZmZmZmZmKTtcblxuICAgICAgYS5faXNobG5zdWJtdWwoYiwgcWosIGopO1xuICAgICAgd2hpbGUgKGEubmVnYXRpdmUgIT09IDApIHtcbiAgICAgICAgcWotLTtcbiAgICAgICAgYS5uZWdhdGl2ZSA9IDA7XG4gICAgICAgIGEuX2lzaGxuc3VibXVsKGIsIDEsIGopO1xuICAgICAgICBpZiAoIWEuaXNaZXJvKCkpIHtcbiAgICAgICAgICBhLm5lZ2F0aXZlIF49IDE7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChxKSB7XG4gICAgICAgIHEud29yZHNbal0gPSBxajtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHEpIHtcbiAgICAgIHEuc3RyaXAoKTtcbiAgICB9XG4gICAgYS5zdHJpcCgpO1xuXG4gICAgLy8gRGVub3JtYWxpemVcbiAgICBpZiAobW9kZSAhPT0gJ2RpdicgJiYgc2hpZnQgIT09IDApIHtcbiAgICAgIGEuaXVzaHJuKHNoaWZ0KTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgZGl2OiBxIHx8IG51bGwsXG4gICAgICBtb2Q6IGFcbiAgICB9O1xuICB9O1xuXG4gIC8vIE5PVEU6IDEpIGBtb2RlYCBjYW4gYmUgc2V0IHRvIGBtb2RgIHRvIHJlcXVlc3QgbW9kIG9ubHksXG4gIC8vICAgICAgIHRvIGBkaXZgIHRvIHJlcXVlc3QgZGl2IG9ubHksIG9yIGJlIGFic2VudCB0b1xuICAvLyAgICAgICByZXF1ZXN0IGJvdGggZGl2ICYgbW9kXG4gIC8vICAgICAgIDIpIGBwb3NpdGl2ZWAgaXMgdHJ1ZSBpZiB1bnNpZ25lZCBtb2QgaXMgcmVxdWVzdGVkXG4gIEJOLnByb3RvdHlwZS5kaXZtb2QgPSBmdW5jdGlvbiBkaXZtb2QgKG51bSwgbW9kZSwgcG9zaXRpdmUpIHtcbiAgICBhc3NlcnQoIW51bS5pc1plcm8oKSk7XG5cbiAgICBpZiAodGhpcy5pc1plcm8oKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGl2OiBuZXcgQk4oMCksXG4gICAgICAgIG1vZDogbmV3IEJOKDApXG4gICAgICB9O1xuICAgIH1cblxuICAgIHZhciBkaXYsIG1vZCwgcmVzO1xuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwICYmIG51bS5uZWdhdGl2ZSA9PT0gMCkge1xuICAgICAgcmVzID0gdGhpcy5uZWcoKS5kaXZtb2QobnVtLCBtb2RlKTtcblxuICAgICAgaWYgKG1vZGUgIT09ICdtb2QnKSB7XG4gICAgICAgIGRpdiA9IHJlcy5kaXYubmVnKCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChtb2RlICE9PSAnZGl2Jykge1xuICAgICAgICBtb2QgPSByZXMubW9kLm5lZygpO1xuICAgICAgICBpZiAocG9zaXRpdmUgJiYgbW9kLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICAgICAgbW9kLmlhZGQobnVtKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBkaXY6IGRpdixcbiAgICAgICAgbW9kOiBtb2RcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubmVnYXRpdmUgPT09IDAgJiYgbnVtLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICByZXMgPSB0aGlzLmRpdm1vZChudW0ubmVnKCksIG1vZGUpO1xuXG4gICAgICBpZiAobW9kZSAhPT0gJ21vZCcpIHtcbiAgICAgICAgZGl2ID0gcmVzLmRpdi5uZWcoKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGl2OiBkaXYsXG4gICAgICAgIG1vZDogcmVzLm1vZFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAoKHRoaXMubmVnYXRpdmUgJiBudW0ubmVnYXRpdmUpICE9PSAwKSB7XG4gICAgICByZXMgPSB0aGlzLm5lZygpLmRpdm1vZChudW0ubmVnKCksIG1vZGUpO1xuXG4gICAgICBpZiAobW9kZSAhPT0gJ2RpdicpIHtcbiAgICAgICAgbW9kID0gcmVzLm1vZC5uZWcoKTtcbiAgICAgICAgaWYgKHBvc2l0aXZlICYmIG1vZC5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgICAgIG1vZC5pc3ViKG51bSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGl2OiByZXMuZGl2LFxuICAgICAgICBtb2Q6IG1vZFxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBCb3RoIG51bWJlcnMgYXJlIHBvc2l0aXZlIGF0IHRoaXMgcG9pbnRcblxuICAgIC8vIFN0cmlwIGJvdGggbnVtYmVycyB0byBhcHByb3hpbWF0ZSBzaGlmdCB2YWx1ZVxuICAgIGlmIChudW0ubGVuZ3RoID4gdGhpcy5sZW5ndGggfHwgdGhpcy5jbXAobnVtKSA8IDApIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRpdjogbmV3IEJOKDApLFxuICAgICAgICBtb2Q6IHRoaXNcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gVmVyeSBzaG9ydCByZWR1Y3Rpb25cbiAgICBpZiAobnVtLmxlbmd0aCA9PT0gMSkge1xuICAgICAgaWYgKG1vZGUgPT09ICdkaXYnKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZGl2OiB0aGlzLmRpdm4obnVtLndvcmRzWzBdKSxcbiAgICAgICAgICBtb2Q6IG51bGxcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgaWYgKG1vZGUgPT09ICdtb2QnKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZGl2OiBudWxsLFxuICAgICAgICAgIG1vZDogbmV3IEJOKHRoaXMubW9kbihudW0ud29yZHNbMF0pKVxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBkaXY6IHRoaXMuZGl2bihudW0ud29yZHNbMF0pLFxuICAgICAgICBtb2Q6IG5ldyBCTih0aGlzLm1vZG4obnVtLndvcmRzWzBdKSlcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3dvcmREaXYobnVtLCBtb2RlKTtcbiAgfTtcblxuICAvLyBGaW5kIGB0aGlzYCAvIGBudW1gXG4gIEJOLnByb3RvdHlwZS5kaXYgPSBmdW5jdGlvbiBkaXYgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmRpdm1vZChudW0sICdkaXYnLCBmYWxzZSkuZGl2O1xuICB9O1xuXG4gIC8vIEZpbmQgYHRoaXNgICUgYG51bWBcbiAgQk4ucHJvdG90eXBlLm1vZCA9IGZ1bmN0aW9uIG1vZCAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuZGl2bW9kKG51bSwgJ21vZCcsIGZhbHNlKS5tb2Q7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnVtb2QgPSBmdW5jdGlvbiB1bW9kIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5kaXZtb2QobnVtLCAnbW9kJywgdHJ1ZSkubW9kO1xuICB9O1xuXG4gIC8vIEZpbmQgUm91bmQoYHRoaXNgIC8gYG51bWApXG4gIEJOLnByb3RvdHlwZS5kaXZSb3VuZCA9IGZ1bmN0aW9uIGRpdlJvdW5kIChudW0pIHtcbiAgICB2YXIgZG0gPSB0aGlzLmRpdm1vZChudW0pO1xuXG4gICAgLy8gRmFzdCBjYXNlIC0gZXhhY3QgZGl2aXNpb25cbiAgICBpZiAoZG0ubW9kLmlzWmVybygpKSByZXR1cm4gZG0uZGl2O1xuXG4gICAgdmFyIG1vZCA9IGRtLmRpdi5uZWdhdGl2ZSAhPT0gMCA/IGRtLm1vZC5pc3ViKG51bSkgOiBkbS5tb2Q7XG5cbiAgICB2YXIgaGFsZiA9IG51bS51c2hybigxKTtcbiAgICB2YXIgcjIgPSBudW0uYW5kbG4oMSk7XG4gICAgdmFyIGNtcCA9IG1vZC5jbXAoaGFsZik7XG5cbiAgICAvLyBSb3VuZCBkb3duXG4gICAgaWYgKGNtcCA8IDAgfHwgcjIgPT09IDEgJiYgY21wID09PSAwKSByZXR1cm4gZG0uZGl2O1xuXG4gICAgLy8gUm91bmQgdXBcbiAgICByZXR1cm4gZG0uZGl2Lm5lZ2F0aXZlICE9PSAwID8gZG0uZGl2LmlzdWJuKDEpIDogZG0uZGl2LmlhZGRuKDEpO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5tb2RuID0gZnVuY3Rpb24gbW9kbiAobnVtKSB7XG4gICAgYXNzZXJ0KG51bSA8PSAweDNmZmZmZmYpO1xuICAgIHZhciBwID0gKDEgPDwgMjYpICUgbnVtO1xuXG4gICAgdmFyIGFjYyA9IDA7XG4gICAgZm9yICh2YXIgaSA9IHRoaXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIGFjYyA9IChwICogYWNjICsgKHRoaXMud29yZHNbaV0gfCAwKSkgJSBudW07XG4gICAgfVxuXG4gICAgcmV0dXJuIGFjYztcbiAgfTtcblxuICAvLyBJbi1wbGFjZSBkaXZpc2lvbiBieSBudW1iZXJcbiAgQk4ucHJvdG90eXBlLmlkaXZuID0gZnVuY3Rpb24gaWRpdm4gKG51bSkge1xuICAgIGFzc2VydChudW0gPD0gMHgzZmZmZmZmKTtcblxuICAgIHZhciBjYXJyeSA9IDA7XG4gICAgZm9yICh2YXIgaSA9IHRoaXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIHZhciB3ID0gKHRoaXMud29yZHNbaV0gfCAwKSArIGNhcnJ5ICogMHg0MDAwMDAwO1xuICAgICAgdGhpcy53b3Jkc1tpXSA9ICh3IC8gbnVtKSB8IDA7XG4gICAgICBjYXJyeSA9IHcgJSBudW07XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaXAoKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZGl2biA9IGZ1bmN0aW9uIGRpdm4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNsb25lKCkuaWRpdm4obnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZWdjZCA9IGZ1bmN0aW9uIGVnY2QgKHApIHtcbiAgICBhc3NlcnQocC5uZWdhdGl2ZSA9PT0gMCk7XG4gICAgYXNzZXJ0KCFwLmlzWmVybygpKTtcblxuICAgIHZhciB4ID0gdGhpcztcbiAgICB2YXIgeSA9IHAuY2xvbmUoKTtcblxuICAgIGlmICh4Lm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICB4ID0geC51bW9kKHApO1xuICAgIH0gZWxzZSB7XG4gICAgICB4ID0geC5jbG9uZSgpO1xuICAgIH1cblxuICAgIC8vIEEgKiB4ICsgQiAqIHkgPSB4XG4gICAgdmFyIEEgPSBuZXcgQk4oMSk7XG4gICAgdmFyIEIgPSBuZXcgQk4oMCk7XG5cbiAgICAvLyBDICogeCArIEQgKiB5ID0geVxuICAgIHZhciBDID0gbmV3IEJOKDApO1xuICAgIHZhciBEID0gbmV3IEJOKDEpO1xuXG4gICAgdmFyIGcgPSAwO1xuXG4gICAgd2hpbGUgKHguaXNFdmVuKCkgJiYgeS5pc0V2ZW4oKSkge1xuICAgICAgeC5pdXNocm4oMSk7XG4gICAgICB5Lml1c2hybigxKTtcbiAgICAgICsrZztcbiAgICB9XG5cbiAgICB2YXIgeXAgPSB5LmNsb25lKCk7XG4gICAgdmFyIHhwID0geC5jbG9uZSgpO1xuXG4gICAgd2hpbGUgKCF4LmlzWmVybygpKSB7XG4gICAgICBmb3IgKHZhciBpID0gMCwgaW0gPSAxOyAoeC53b3Jkc1swXSAmIGltKSA9PT0gMCAmJiBpIDwgMjY7ICsraSwgaW0gPDw9IDEpO1xuICAgICAgaWYgKGkgPiAwKSB7XG4gICAgICAgIHguaXVzaHJuKGkpO1xuICAgICAgICB3aGlsZSAoaS0tID4gMCkge1xuICAgICAgICAgIGlmIChBLmlzT2RkKCkgfHwgQi5pc09kZCgpKSB7XG4gICAgICAgICAgICBBLmlhZGQoeXApO1xuICAgICAgICAgICAgQi5pc3ViKHhwKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBBLml1c2hybigxKTtcbiAgICAgICAgICBCLml1c2hybigxKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBmb3IgKHZhciBqID0gMCwgam0gPSAxOyAoeS53b3Jkc1swXSAmIGptKSA9PT0gMCAmJiBqIDwgMjY7ICsraiwgam0gPDw9IDEpO1xuICAgICAgaWYgKGogPiAwKSB7XG4gICAgICAgIHkuaXVzaHJuKGopO1xuICAgICAgICB3aGlsZSAoai0tID4gMCkge1xuICAgICAgICAgIGlmIChDLmlzT2RkKCkgfHwgRC5pc09kZCgpKSB7XG4gICAgICAgICAgICBDLmlhZGQoeXApO1xuICAgICAgICAgICAgRC5pc3ViKHhwKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBDLml1c2hybigxKTtcbiAgICAgICAgICBELml1c2hybigxKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoeC5jbXAoeSkgPj0gMCkge1xuICAgICAgICB4LmlzdWIoeSk7XG4gICAgICAgIEEuaXN1YihDKTtcbiAgICAgICAgQi5pc3ViKEQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgeS5pc3ViKHgpO1xuICAgICAgICBDLmlzdWIoQSk7XG4gICAgICAgIEQuaXN1YihCKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgYTogQyxcbiAgICAgIGI6IEQsXG4gICAgICBnY2Q6IHkuaXVzaGxuKGcpXG4gICAgfTtcbiAgfTtcblxuICAvLyBUaGlzIGlzIHJlZHVjZWQgaW5jYXJuYXRpb24gb2YgdGhlIGJpbmFyeSBFRUFcbiAgLy8gYWJvdmUsIGRlc2lnbmF0ZWQgdG8gaW52ZXJ0IG1lbWJlcnMgb2YgdGhlXG4gIC8vIF9wcmltZV8gZmllbGRzIEYocCkgYXQgYSBtYXhpbWFsIHNwZWVkXG4gIEJOLnByb3RvdHlwZS5faW52bXAgPSBmdW5jdGlvbiBfaW52bXAgKHApIHtcbiAgICBhc3NlcnQocC5uZWdhdGl2ZSA9PT0gMCk7XG4gICAgYXNzZXJ0KCFwLmlzWmVybygpKTtcblxuICAgIHZhciBhID0gdGhpcztcbiAgICB2YXIgYiA9IHAuY2xvbmUoKTtcblxuICAgIGlmIChhLm5lZ2F0aXZlICE9PSAwKSB7XG4gICAgICBhID0gYS51bW9kKHApO1xuICAgIH0gZWxzZSB7XG4gICAgICBhID0gYS5jbG9uZSgpO1xuICAgIH1cblxuICAgIHZhciB4MSA9IG5ldyBCTigxKTtcbiAgICB2YXIgeDIgPSBuZXcgQk4oMCk7XG5cbiAgICB2YXIgZGVsdGEgPSBiLmNsb25lKCk7XG5cbiAgICB3aGlsZSAoYS5jbXBuKDEpID4gMCAmJiBiLmNtcG4oMSkgPiAwKSB7XG4gICAgICBmb3IgKHZhciBpID0gMCwgaW0gPSAxOyAoYS53b3Jkc1swXSAmIGltKSA9PT0gMCAmJiBpIDwgMjY7ICsraSwgaW0gPDw9IDEpO1xuICAgICAgaWYgKGkgPiAwKSB7XG4gICAgICAgIGEuaXVzaHJuKGkpO1xuICAgICAgICB3aGlsZSAoaS0tID4gMCkge1xuICAgICAgICAgIGlmICh4MS5pc09kZCgpKSB7XG4gICAgICAgICAgICB4MS5pYWRkKGRlbHRhKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB4MS5pdXNocm4oMSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZm9yICh2YXIgaiA9IDAsIGptID0gMTsgKGIud29yZHNbMF0gJiBqbSkgPT09IDAgJiYgaiA8IDI2OyArK2osIGptIDw8PSAxKTtcbiAgICAgIGlmIChqID4gMCkge1xuICAgICAgICBiLml1c2hybihqKTtcbiAgICAgICAgd2hpbGUgKGotLSA+IDApIHtcbiAgICAgICAgICBpZiAoeDIuaXNPZGQoKSkge1xuICAgICAgICAgICAgeDIuaWFkZChkZWx0YSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgeDIuaXVzaHJuKDEpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChhLmNtcChiKSA+PSAwKSB7XG4gICAgICAgIGEuaXN1YihiKTtcbiAgICAgICAgeDEuaXN1Yih4Mik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBiLmlzdWIoYSk7XG4gICAgICAgIHgyLmlzdWIoeDEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciByZXM7XG4gICAgaWYgKGEuY21wbigxKSA9PT0gMCkge1xuICAgICAgcmVzID0geDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlcyA9IHgyO1xuICAgIH1cblxuICAgIGlmIChyZXMuY21wbigwKSA8IDApIHtcbiAgICAgIHJlcy5pYWRkKHApO1xuICAgIH1cblxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmdjZCA9IGZ1bmN0aW9uIGdjZCAobnVtKSB7XG4gICAgaWYgKHRoaXMuaXNaZXJvKCkpIHJldHVybiBudW0uYWJzKCk7XG4gICAgaWYgKG51bS5pc1plcm8oKSkgcmV0dXJuIHRoaXMuYWJzKCk7XG5cbiAgICB2YXIgYSA9IHRoaXMuY2xvbmUoKTtcbiAgICB2YXIgYiA9IG51bS5jbG9uZSgpO1xuICAgIGEubmVnYXRpdmUgPSAwO1xuICAgIGIubmVnYXRpdmUgPSAwO1xuXG4gICAgLy8gUmVtb3ZlIGNvbW1vbiBmYWN0b3Igb2YgdHdvXG4gICAgZm9yICh2YXIgc2hpZnQgPSAwOyBhLmlzRXZlbigpICYmIGIuaXNFdmVuKCk7IHNoaWZ0KyspIHtcbiAgICAgIGEuaXVzaHJuKDEpO1xuICAgICAgYi5pdXNocm4oMSk7XG4gICAgfVxuXG4gICAgZG8ge1xuICAgICAgd2hpbGUgKGEuaXNFdmVuKCkpIHtcbiAgICAgICAgYS5pdXNocm4oMSk7XG4gICAgICB9XG4gICAgICB3aGlsZSAoYi5pc0V2ZW4oKSkge1xuICAgICAgICBiLml1c2hybigxKTtcbiAgICAgIH1cblxuICAgICAgdmFyIHIgPSBhLmNtcChiKTtcbiAgICAgIGlmIChyIDwgMCkge1xuICAgICAgICAvLyBTd2FwIGBhYCBhbmQgYGJgIHRvIG1ha2UgYGFgIGFsd2F5cyBiaWdnZXIgdGhhbiBgYmBcbiAgICAgICAgdmFyIHQgPSBhO1xuICAgICAgICBhID0gYjtcbiAgICAgICAgYiA9IHQ7XG4gICAgICB9IGVsc2UgaWYgKHIgPT09IDAgfHwgYi5jbXBuKDEpID09PSAwKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBhLmlzdWIoYik7XG4gICAgfSB3aGlsZSAodHJ1ZSk7XG5cbiAgICByZXR1cm4gYi5pdXNobG4oc2hpZnQpO1xuICB9O1xuXG4gIC8vIEludmVydCBudW1iZXIgaW4gdGhlIGZpZWxkIEYobnVtKVxuICBCTi5wcm90b3R5cGUuaW52bSA9IGZ1bmN0aW9uIGludm0gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmVnY2QobnVtKS5hLnVtb2QobnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNFdmVuID0gZnVuY3Rpb24gaXNFdmVuICgpIHtcbiAgICByZXR1cm4gKHRoaXMud29yZHNbMF0gJiAxKSA9PT0gMDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNPZGQgPSBmdW5jdGlvbiBpc09kZCAoKSB7XG4gICAgcmV0dXJuICh0aGlzLndvcmRzWzBdICYgMSkgPT09IDE7XG4gIH07XG5cbiAgLy8gQW5kIGZpcnN0IHdvcmQgYW5kIG51bVxuICBCTi5wcm90b3R5cGUuYW5kbG4gPSBmdW5jdGlvbiBhbmRsbiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMud29yZHNbMF0gJiBudW07XG4gIH07XG5cbiAgLy8gSW5jcmVtZW50IGF0IHRoZSBiaXQgcG9zaXRpb24gaW4tbGluZVxuICBCTi5wcm90b3R5cGUuYmluY24gPSBmdW5jdGlvbiBiaW5jbiAoYml0KSB7XG4gICAgYXNzZXJ0KHR5cGVvZiBiaXQgPT09ICdudW1iZXInKTtcbiAgICB2YXIgciA9IGJpdCAlIDI2O1xuICAgIHZhciBzID0gKGJpdCAtIHIpIC8gMjY7XG4gICAgdmFyIHEgPSAxIDw8IHI7XG5cbiAgICAvLyBGYXN0IGNhc2U6IGJpdCBpcyBtdWNoIGhpZ2hlciB0aGFuIGFsbCBleGlzdGluZyB3b3Jkc1xuICAgIGlmICh0aGlzLmxlbmd0aCA8PSBzKSB7XG4gICAgICB0aGlzLl9leHBhbmQocyArIDEpO1xuICAgICAgdGhpcy53b3Jkc1tzXSB8PSBxO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLy8gQWRkIGJpdCBhbmQgcHJvcGFnYXRlLCBpZiBuZWVkZWRcbiAgICB2YXIgY2FycnkgPSBxO1xuICAgIGZvciAodmFyIGkgPSBzOyBjYXJyeSAhPT0gMCAmJiBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHcgPSB0aGlzLndvcmRzW2ldIHwgMDtcbiAgICAgIHcgKz0gY2Fycnk7XG4gICAgICBjYXJyeSA9IHcgPj4+IDI2O1xuICAgICAgdyAmPSAweDNmZmZmZmY7XG4gICAgICB0aGlzLndvcmRzW2ldID0gdztcbiAgICB9XG4gICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICB0aGlzLndvcmRzW2ldID0gY2Fycnk7XG4gICAgICB0aGlzLmxlbmd0aCsrO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuaXNaZXJvID0gZnVuY3Rpb24gaXNaZXJvICgpIHtcbiAgICByZXR1cm4gdGhpcy5sZW5ndGggPT09IDEgJiYgdGhpcy53b3Jkc1swXSA9PT0gMDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuY21wbiA9IGZ1bmN0aW9uIGNtcG4gKG51bSkge1xuICAgIHZhciBuZWdhdGl2ZSA9IG51bSA8IDA7XG5cbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCAmJiAhbmVnYXRpdmUpIHJldHVybiAtMTtcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSA9PT0gMCAmJiBuZWdhdGl2ZSkgcmV0dXJuIDE7XG5cbiAgICB0aGlzLnN0cmlwKCk7XG5cbiAgICB2YXIgcmVzO1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IDEpIHtcbiAgICAgIHJlcyA9IDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChuZWdhdGl2ZSkge1xuICAgICAgICBudW0gPSAtbnVtO1xuICAgICAgfVxuXG4gICAgICBhc3NlcnQobnVtIDw9IDB4M2ZmZmZmZiwgJ051bWJlciBpcyB0b28gYmlnJyk7XG5cbiAgICAgIHZhciB3ID0gdGhpcy53b3Jkc1swXSB8IDA7XG4gICAgICByZXMgPSB3ID09PSBudW0gPyAwIDogdyA8IG51bSA/IC0xIDogMTtcbiAgICB9XG4gICAgaWYgKHRoaXMubmVnYXRpdmUgIT09IDApIHJldHVybiAtcmVzIHwgMDtcbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIC8vIENvbXBhcmUgdHdvIG51bWJlcnMgYW5kIHJldHVybjpcbiAgLy8gMSAtIGlmIGB0aGlzYCA+IGBudW1gXG4gIC8vIDAgLSBpZiBgdGhpc2AgPT0gYG51bWBcbiAgLy8gLTEgLSBpZiBgdGhpc2AgPCBgbnVtYFxuICBCTi5wcm90b3R5cGUuY21wID0gZnVuY3Rpb24gY21wIChudW0pIHtcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSAhPT0gMCAmJiBudW0ubmVnYXRpdmUgPT09IDApIHJldHVybiAtMTtcbiAgICBpZiAodGhpcy5uZWdhdGl2ZSA9PT0gMCAmJiBudW0ubmVnYXRpdmUgIT09IDApIHJldHVybiAxO1xuXG4gICAgdmFyIHJlcyA9IHRoaXMudWNtcChudW0pO1xuICAgIGlmICh0aGlzLm5lZ2F0aXZlICE9PSAwKSByZXR1cm4gLXJlcyB8IDA7XG4gICAgcmV0dXJuIHJlcztcbiAgfTtcblxuICAvLyBVbnNpZ25lZCBjb21wYXJpc29uXG4gIEJOLnByb3RvdHlwZS51Y21wID0gZnVuY3Rpb24gdWNtcCAobnVtKSB7XG4gICAgLy8gQXQgdGhpcyBwb2ludCBib3RoIG51bWJlcnMgaGF2ZSB0aGUgc2FtZSBzaWduXG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbnVtLmxlbmd0aCkgcmV0dXJuIDE7XG4gICAgaWYgKHRoaXMubGVuZ3RoIDwgbnVtLmxlbmd0aCkgcmV0dXJuIC0xO1xuXG4gICAgdmFyIHJlcyA9IDA7XG4gICAgZm9yICh2YXIgaSA9IHRoaXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIHZhciBhID0gdGhpcy53b3Jkc1tpXSB8IDA7XG4gICAgICB2YXIgYiA9IG51bS53b3Jkc1tpXSB8IDA7XG5cbiAgICAgIGlmIChhID09PSBiKSBjb250aW51ZTtcbiAgICAgIGlmIChhIDwgYikge1xuICAgICAgICByZXMgPSAtMTtcbiAgICAgIH0gZWxzZSBpZiAoYSA+IGIpIHtcbiAgICAgICAgcmVzID0gMTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5ndG4gPSBmdW5jdGlvbiBndG4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcG4obnVtKSA9PT0gMTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZ3QgPSBmdW5jdGlvbiBndCAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wKG51bSkgPT09IDE7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmd0ZW4gPSBmdW5jdGlvbiBndGVuIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXBuKG51bSkgPj0gMDtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZ3RlID0gZnVuY3Rpb24gZ3RlIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXAobnVtKSA+PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5sdG4gPSBmdW5jdGlvbiBsdG4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcG4obnVtKSA9PT0gLTE7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmx0ID0gZnVuY3Rpb24gbHQgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcChudW0pID09PSAtMTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUubHRlbiA9IGZ1bmN0aW9uIGx0ZW4gKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcG4obnVtKSA8PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5sdGUgPSBmdW5jdGlvbiBsdGUgKG51bSkge1xuICAgIHJldHVybiB0aGlzLmNtcChudW0pIDw9IDA7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmVxbiA9IGZ1bmN0aW9uIGVxbiAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuY21wbihudW0pID09PSAwO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5lcSA9IGZ1bmN0aW9uIGVxIChudW0pIHtcbiAgICByZXR1cm4gdGhpcy5jbXAobnVtKSA9PT0gMDtcbiAgfTtcblxuICAvL1xuICAvLyBBIHJlZHVjZSBjb250ZXh0LCBjb3VsZCBiZSB1c2luZyBtb250Z29tZXJ5IG9yIHNvbWV0aGluZyBiZXR0ZXIsIGRlcGVuZGluZ1xuICAvLyBvbiB0aGUgYG1gIGl0c2VsZi5cbiAgLy9cbiAgQk4ucmVkID0gZnVuY3Rpb24gcmVkIChudW0pIHtcbiAgICByZXR1cm4gbmV3IFJlZChudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS50b1JlZCA9IGZ1bmN0aW9uIHRvUmVkIChjdHgpIHtcbiAgICBhc3NlcnQoIXRoaXMucmVkLCAnQWxyZWFkeSBhIG51bWJlciBpbiByZWR1Y3Rpb24gY29udGV4dCcpO1xuICAgIGFzc2VydCh0aGlzLm5lZ2F0aXZlID09PSAwLCAncmVkIHdvcmtzIG9ubHkgd2l0aCBwb3NpdGl2ZXMnKTtcbiAgICByZXR1cm4gY3R4LmNvbnZlcnRUbyh0aGlzKS5fZm9yY2VSZWQoY3R4KTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUuZnJvbVJlZCA9IGZ1bmN0aW9uIGZyb21SZWQgKCkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ2Zyb21SZWQgd29ya3Mgb25seSB3aXRoIG51bWJlcnMgaW4gcmVkdWN0aW9uIGNvbnRleHQnKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuY29udmVydEZyb20odGhpcyk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLl9mb3JjZVJlZCA9IGZ1bmN0aW9uIF9mb3JjZVJlZCAoY3R4KSB7XG4gICAgdGhpcy5yZWQgPSBjdHg7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLmZvcmNlUmVkID0gZnVuY3Rpb24gZm9yY2VSZWQgKGN0eCkge1xuICAgIGFzc2VydCghdGhpcy5yZWQsICdBbHJlYWR5IGEgbnVtYmVyIGluIHJlZHVjdGlvbiBjb250ZXh0Jyk7XG4gICAgcmV0dXJuIHRoaXMuX2ZvcmNlUmVkKGN0eCk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZEFkZCA9IGZ1bmN0aW9uIHJlZEFkZCAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkQWRkIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHJldHVybiB0aGlzLnJlZC5hZGQodGhpcywgbnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkSUFkZCA9IGZ1bmN0aW9uIHJlZElBZGQgKG51bSkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZElBZGQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmlhZGQodGhpcywgbnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkU3ViID0gZnVuY3Rpb24gcmVkU3ViIChudW0pIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRTdWIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLnN1Yih0aGlzLCBudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRJU3ViID0gZnVuY3Rpb24gcmVkSVN1YiAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkSVN1YiB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuaXN1Yih0aGlzLCBudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRTaGwgPSBmdW5jdGlvbiByZWRTaGwgKG51bSkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZFNobCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuc2hsKHRoaXMsIG51bSk7XG4gIH07XG5cbiAgQk4ucHJvdG90eXBlLnJlZE11bCA9IGZ1bmN0aW9uIHJlZE11bCAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkTXVsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHRoaXMucmVkLl92ZXJpZnkyKHRoaXMsIG51bSk7XG4gICAgcmV0dXJuIHRoaXMucmVkLm11bCh0aGlzLCBudW0pO1xuICB9O1xuXG4gIEJOLnByb3RvdHlwZS5yZWRJTXVsID0gZnVuY3Rpb24gcmVkSU11bCAobnVtKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkTXVsIHdvcmtzIG9ubHkgd2l0aCByZWQgbnVtYmVycycpO1xuICAgIHRoaXMucmVkLl92ZXJpZnkyKHRoaXMsIG51bSk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmltdWwodGhpcywgbnVtKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkU3FyID0gZnVuY3Rpb24gcmVkU3FyICgpIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWRTcXIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLnNxcih0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkSVNxciA9IGZ1bmN0aW9uIHJlZElTcXIgKCkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZElTcXIgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmlzcXIodGhpcyk7XG4gIH07XG5cbiAgLy8gU3F1YXJlIHJvb3Qgb3ZlciBwXG4gIEJOLnByb3RvdHlwZS5yZWRTcXJ0ID0gZnVuY3Rpb24gcmVkU3FydCAoKSB7XG4gICAgYXNzZXJ0KHRoaXMucmVkLCAncmVkU3FydCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgICB0aGlzLnJlZC5fdmVyaWZ5MSh0aGlzKTtcbiAgICByZXR1cm4gdGhpcy5yZWQuc3FydCh0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkSW52bSA9IGZ1bmN0aW9uIHJlZEludm0gKCkge1xuICAgIGFzc2VydCh0aGlzLnJlZCwgJ3JlZEludm0gd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLmludm0odGhpcyk7XG4gIH07XG5cbiAgLy8gUmV0dXJuIG5lZ2F0aXZlIGNsb25lIG9mIGB0aGlzYCAlIGByZWQgbW9kdWxvYFxuICBCTi5wcm90b3R5cGUucmVkTmVnID0gZnVuY3Rpb24gcmVkTmVnICgpIHtcbiAgICBhc3NlcnQodGhpcy5yZWQsICdyZWROZWcgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gICAgdGhpcy5yZWQuX3ZlcmlmeTEodGhpcyk7XG4gICAgcmV0dXJuIHRoaXMucmVkLm5lZyh0aGlzKTtcbiAgfTtcblxuICBCTi5wcm90b3R5cGUucmVkUG93ID0gZnVuY3Rpb24gcmVkUG93IChudW0pIHtcbiAgICBhc3NlcnQodGhpcy5yZWQgJiYgIW51bS5yZWQsICdyZWRQb3cobm9ybWFsTnVtKScpO1xuICAgIHRoaXMucmVkLl92ZXJpZnkxKHRoaXMpO1xuICAgIHJldHVybiB0aGlzLnJlZC5wb3codGhpcywgbnVtKTtcbiAgfTtcblxuICAvLyBQcmltZSBudW1iZXJzIHdpdGggZWZmaWNpZW50IHJlZHVjdGlvblxuICB2YXIgcHJpbWVzID0ge1xuICAgIGsyNTY6IG51bGwsXG4gICAgcDIyNDogbnVsbCxcbiAgICBwMTkyOiBudWxsLFxuICAgIHAyNTUxOTogbnVsbFxuICB9O1xuXG4gIC8vIFBzZXVkby1NZXJzZW5uZSBwcmltZVxuICBmdW5jdGlvbiBNUHJpbWUgKG5hbWUsIHApIHtcbiAgICAvLyBQID0gMiBeIE4gLSBLXG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICB0aGlzLnAgPSBuZXcgQk4ocCwgMTYpO1xuICAgIHRoaXMubiA9IHRoaXMucC5iaXRMZW5ndGgoKTtcbiAgICB0aGlzLmsgPSBuZXcgQk4oMSkuaXVzaGxuKHRoaXMubikuaXN1Yih0aGlzLnApO1xuXG4gICAgdGhpcy50bXAgPSB0aGlzLl90bXAoKTtcbiAgfVxuXG4gIE1QcmltZS5wcm90b3R5cGUuX3RtcCA9IGZ1bmN0aW9uIF90bXAgKCkge1xuICAgIHZhciB0bXAgPSBuZXcgQk4obnVsbCk7XG4gICAgdG1wLndvcmRzID0gbmV3IEFycmF5KE1hdGguY2VpbCh0aGlzLm4gLyAxMykpO1xuICAgIHJldHVybiB0bXA7XG4gIH07XG5cbiAgTVByaW1lLnByb3RvdHlwZS5pcmVkdWNlID0gZnVuY3Rpb24gaXJlZHVjZSAobnVtKSB7XG4gICAgLy8gQXNzdW1lcyB0aGF0IGBudW1gIGlzIGxlc3MgdGhhbiBgUF4yYFxuICAgIC8vIG51bSA9IEhJICogKDIgXiBOIC0gSykgKyBISSAqIEsgKyBMTyA9IEhJICogSyArIExPIChtb2QgUClcbiAgICB2YXIgciA9IG51bTtcbiAgICB2YXIgcmxlbjtcblxuICAgIGRvIHtcbiAgICAgIHRoaXMuc3BsaXQociwgdGhpcy50bXApO1xuICAgICAgciA9IHRoaXMuaW11bEsocik7XG4gICAgICByID0gci5pYWRkKHRoaXMudG1wKTtcbiAgICAgIHJsZW4gPSByLmJpdExlbmd0aCgpO1xuICAgIH0gd2hpbGUgKHJsZW4gPiB0aGlzLm4pO1xuXG4gICAgdmFyIGNtcCA9IHJsZW4gPCB0aGlzLm4gPyAtMSA6IHIudWNtcCh0aGlzLnApO1xuICAgIGlmIChjbXAgPT09IDApIHtcbiAgICAgIHIud29yZHNbMF0gPSAwO1xuICAgICAgci5sZW5ndGggPSAxO1xuICAgIH0gZWxzZSBpZiAoY21wID4gMCkge1xuICAgICAgci5pc3ViKHRoaXMucCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHIuc3RyaXAoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcjtcbiAgfTtcblxuICBNUHJpbWUucHJvdG90eXBlLnNwbGl0ID0gZnVuY3Rpb24gc3BsaXQgKGlucHV0LCBvdXQpIHtcbiAgICBpbnB1dC5pdXNocm4odGhpcy5uLCAwLCBvdXQpO1xuICB9O1xuXG4gIE1QcmltZS5wcm90b3R5cGUuaW11bEsgPSBmdW5jdGlvbiBpbXVsSyAobnVtKSB7XG4gICAgcmV0dXJuIG51bS5pbXVsKHRoaXMuayk7XG4gIH07XG5cbiAgZnVuY3Rpb24gSzI1NiAoKSB7XG4gICAgTVByaW1lLmNhbGwoXG4gICAgICB0aGlzLFxuICAgICAgJ2syNTYnLFxuICAgICAgJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZmYzJmJyk7XG4gIH1cbiAgaW5oZXJpdHMoSzI1NiwgTVByaW1lKTtcblxuICBLMjU2LnByb3RvdHlwZS5zcGxpdCA9IGZ1bmN0aW9uIHNwbGl0IChpbnB1dCwgb3V0cHV0KSB7XG4gICAgLy8gMjU2ID0gOSAqIDI2ICsgMjJcbiAgICB2YXIgbWFzayA9IDB4M2ZmZmZmO1xuXG4gICAgdmFyIG91dExlbiA9IE1hdGgubWluKGlucHV0Lmxlbmd0aCwgOSk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBvdXRMZW47IGkrKykge1xuICAgICAgb3V0cHV0LndvcmRzW2ldID0gaW5wdXQud29yZHNbaV07XG4gICAgfVxuICAgIG91dHB1dC5sZW5ndGggPSBvdXRMZW47XG5cbiAgICBpZiAoaW5wdXQubGVuZ3RoIDw9IDkpIHtcbiAgICAgIGlucHV0LndvcmRzWzBdID0gMDtcbiAgICAgIGlucHV0Lmxlbmd0aCA9IDE7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gU2hpZnQgYnkgOSBsaW1ic1xuICAgIHZhciBwcmV2ID0gaW5wdXQud29yZHNbOV07XG4gICAgb3V0cHV0LndvcmRzW291dHB1dC5sZW5ndGgrK10gPSBwcmV2ICYgbWFzaztcblxuICAgIGZvciAoaSA9IDEwOyBpIDwgaW5wdXQubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBuZXh0ID0gaW5wdXQud29yZHNbaV0gfCAwO1xuICAgICAgaW5wdXQud29yZHNbaSAtIDEwXSA9ICgobmV4dCAmIG1hc2spIDw8IDQpIHwgKHByZXYgPj4+IDIyKTtcbiAgICAgIHByZXYgPSBuZXh0O1xuICAgIH1cbiAgICBwcmV2ID4+Pj0gMjI7XG4gICAgaW5wdXQud29yZHNbaSAtIDEwXSA9IHByZXY7XG4gICAgaWYgKHByZXYgPT09IDAgJiYgaW5wdXQubGVuZ3RoID4gMTApIHtcbiAgICAgIGlucHV0Lmxlbmd0aCAtPSAxMDtcbiAgICB9IGVsc2Uge1xuICAgICAgaW5wdXQubGVuZ3RoIC09IDk7XG4gICAgfVxuICB9O1xuXG4gIEsyNTYucHJvdG90eXBlLmltdWxLID0gZnVuY3Rpb24gaW11bEsgKG51bSkge1xuICAgIC8vIEsgPSAweDEwMDAwMDNkMSA9IFsgMHg0MCwgMHgzZDEgXVxuICAgIG51bS53b3Jkc1tudW0ubGVuZ3RoXSA9IDA7XG4gICAgbnVtLndvcmRzW251bS5sZW5ndGggKyAxXSA9IDA7XG4gICAgbnVtLmxlbmd0aCArPSAyO1xuXG4gICAgLy8gYm91bmRlZCBhdDogMHg0MCAqIDB4M2ZmZmZmZiArIDB4M2QwID0gMHgxMDAwMDAzOTBcbiAgICB2YXIgbG8gPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgdyA9IG51bS53b3Jkc1tpXSB8IDA7XG4gICAgICBsbyArPSB3ICogMHgzZDE7XG4gICAgICBudW0ud29yZHNbaV0gPSBsbyAmIDB4M2ZmZmZmZjtcbiAgICAgIGxvID0gdyAqIDB4NDAgKyAoKGxvIC8gMHg0MDAwMDAwKSB8IDApO1xuICAgIH1cblxuICAgIC8vIEZhc3QgbGVuZ3RoIHJlZHVjdGlvblxuICAgIGlmIChudW0ud29yZHNbbnVtLmxlbmd0aCAtIDFdID09PSAwKSB7XG4gICAgICBudW0ubGVuZ3RoLS07XG4gICAgICBpZiAobnVtLndvcmRzW251bS5sZW5ndGggLSAxXSA9PT0gMCkge1xuICAgICAgICBudW0ubGVuZ3RoLS07XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudW07XG4gIH07XG5cbiAgZnVuY3Rpb24gUDIyNCAoKSB7XG4gICAgTVByaW1lLmNhbGwoXG4gICAgICB0aGlzLFxuICAgICAgJ3AyMjQnLFxuICAgICAgJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAwMDAxJyk7XG4gIH1cbiAgaW5oZXJpdHMoUDIyNCwgTVByaW1lKTtcblxuICBmdW5jdGlvbiBQMTkyICgpIHtcbiAgICBNUHJpbWUuY2FsbChcbiAgICAgIHRoaXMsXG4gICAgICAncDE5MicsXG4gICAgICAnZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZmZmYgZmZmZmZmZmYnKTtcbiAgfVxuICBpbmhlcml0cyhQMTkyLCBNUHJpbWUpO1xuXG4gIGZ1bmN0aW9uIFAyNTUxOSAoKSB7XG4gICAgLy8gMiBeIDI1NSAtIDE5XG4gICAgTVByaW1lLmNhbGwoXG4gICAgICB0aGlzLFxuICAgICAgJzI1NTE5JyxcbiAgICAgICc3ZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmVkJyk7XG4gIH1cbiAgaW5oZXJpdHMoUDI1NTE5LCBNUHJpbWUpO1xuXG4gIFAyNTUxOS5wcm90b3R5cGUuaW11bEsgPSBmdW5jdGlvbiBpbXVsSyAobnVtKSB7XG4gICAgLy8gSyA9IDB4MTNcbiAgICB2YXIgY2FycnkgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgaGkgPSAobnVtLndvcmRzW2ldIHwgMCkgKiAweDEzICsgY2Fycnk7XG4gICAgICB2YXIgbG8gPSBoaSAmIDB4M2ZmZmZmZjtcbiAgICAgIGhpID4+Pj0gMjY7XG5cbiAgICAgIG51bS53b3Jkc1tpXSA9IGxvO1xuICAgICAgY2FycnkgPSBoaTtcbiAgICB9XG4gICAgaWYgKGNhcnJ5ICE9PSAwKSB7XG4gICAgICBudW0ud29yZHNbbnVtLmxlbmd0aCsrXSA9IGNhcnJ5O1xuICAgIH1cbiAgICByZXR1cm4gbnVtO1xuICB9O1xuXG4gIC8vIEV4cG9ydGVkIG1vc3RseSBmb3IgdGVzdGluZyBwdXJwb3NlcywgdXNlIHBsYWluIG5hbWUgaW5zdGVhZFxuICBCTi5fcHJpbWUgPSBmdW5jdGlvbiBwcmltZSAobmFtZSkge1xuICAgIC8vIENhY2hlZCB2ZXJzaW9uIG9mIHByaW1lXG4gICAgaWYgKHByaW1lc1tuYW1lXSkgcmV0dXJuIHByaW1lc1tuYW1lXTtcblxuICAgIHZhciBwcmltZTtcbiAgICBpZiAobmFtZSA9PT0gJ2syNTYnKSB7XG4gICAgICBwcmltZSA9IG5ldyBLMjU2KCk7XG4gICAgfSBlbHNlIGlmIChuYW1lID09PSAncDIyNCcpIHtcbiAgICAgIHByaW1lID0gbmV3IFAyMjQoKTtcbiAgICB9IGVsc2UgaWYgKG5hbWUgPT09ICdwMTkyJykge1xuICAgICAgcHJpbWUgPSBuZXcgUDE5MigpO1xuICAgIH0gZWxzZSBpZiAobmFtZSA9PT0gJ3AyNTUxOScpIHtcbiAgICAgIHByaW1lID0gbmV3IFAyNTUxOSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gcHJpbWUgJyArIG5hbWUpO1xuICAgIH1cbiAgICBwcmltZXNbbmFtZV0gPSBwcmltZTtcblxuICAgIHJldHVybiBwcmltZTtcbiAgfTtcblxuICAvL1xuICAvLyBCYXNlIHJlZHVjdGlvbiBlbmdpbmVcbiAgLy9cbiAgZnVuY3Rpb24gUmVkIChtKSB7XG4gICAgaWYgKHR5cGVvZiBtID09PSAnc3RyaW5nJykge1xuICAgICAgdmFyIHByaW1lID0gQk4uX3ByaW1lKG0pO1xuICAgICAgdGhpcy5tID0gcHJpbWUucDtcbiAgICAgIHRoaXMucHJpbWUgPSBwcmltZTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXNzZXJ0KG0uZ3RuKDEpLCAnbW9kdWx1cyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAxJyk7XG4gICAgICB0aGlzLm0gPSBtO1xuICAgICAgdGhpcy5wcmltZSA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgUmVkLnByb3RvdHlwZS5fdmVyaWZ5MSA9IGZ1bmN0aW9uIF92ZXJpZnkxIChhKSB7XG4gICAgYXNzZXJ0KGEubmVnYXRpdmUgPT09IDAsICdyZWQgd29ya3Mgb25seSB3aXRoIHBvc2l0aXZlcycpO1xuICAgIGFzc2VydChhLnJlZCwgJ3JlZCB3b3JrcyBvbmx5IHdpdGggcmVkIG51bWJlcnMnKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLl92ZXJpZnkyID0gZnVuY3Rpb24gX3ZlcmlmeTIgKGEsIGIpIHtcbiAgICBhc3NlcnQoKGEubmVnYXRpdmUgfCBiLm5lZ2F0aXZlKSA9PT0gMCwgJ3JlZCB3b3JrcyBvbmx5IHdpdGggcG9zaXRpdmVzJyk7XG4gICAgYXNzZXJ0KGEucmVkICYmIGEucmVkID09PSBiLnJlZCxcbiAgICAgICdyZWQgd29ya3Mgb25seSB3aXRoIHJlZCBudW1iZXJzJyk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5pbW9kID0gZnVuY3Rpb24gaW1vZCAoYSkge1xuICAgIGlmICh0aGlzLnByaW1lKSByZXR1cm4gdGhpcy5wcmltZS5pcmVkdWNlKGEpLl9mb3JjZVJlZCh0aGlzKTtcbiAgICByZXR1cm4gYS51bW9kKHRoaXMubSkuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUubmVnID0gZnVuY3Rpb24gbmVnIChhKSB7XG4gICAgaWYgKGEuaXNaZXJvKCkpIHtcbiAgICAgIHJldHVybiBhLmNsb25lKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMubS5zdWIoYSkuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gYWRkIChhLCBiKSB7XG4gICAgdGhpcy5fdmVyaWZ5MihhLCBiKTtcblxuICAgIHZhciByZXMgPSBhLmFkZChiKTtcbiAgICBpZiAocmVzLmNtcCh0aGlzLm0pID49IDApIHtcbiAgICAgIHJlcy5pc3ViKHRoaXMubSk7XG4gICAgfVxuICAgIHJldHVybiByZXMuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuaWFkZCA9IGZ1bmN0aW9uIGlhZGQgKGEsIGIpIHtcbiAgICB0aGlzLl92ZXJpZnkyKGEsIGIpO1xuXG4gICAgdmFyIHJlcyA9IGEuaWFkZChiKTtcbiAgICBpZiAocmVzLmNtcCh0aGlzLm0pID49IDApIHtcbiAgICAgIHJlcy5pc3ViKHRoaXMubSk7XG4gICAgfVxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5zdWIgPSBmdW5jdGlvbiBzdWIgKGEsIGIpIHtcbiAgICB0aGlzLl92ZXJpZnkyKGEsIGIpO1xuXG4gICAgdmFyIHJlcyA9IGEuc3ViKGIpO1xuICAgIGlmIChyZXMuY21wbigwKSA8IDApIHtcbiAgICAgIHJlcy5pYWRkKHRoaXMubSk7XG4gICAgfVxuICAgIHJldHVybiByZXMuX2ZvcmNlUmVkKHRoaXMpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuaXN1YiA9IGZ1bmN0aW9uIGlzdWIgKGEsIGIpIHtcbiAgICB0aGlzLl92ZXJpZnkyKGEsIGIpO1xuXG4gICAgdmFyIHJlcyA9IGEuaXN1YihiKTtcbiAgICBpZiAocmVzLmNtcG4oMCkgPCAwKSB7XG4gICAgICByZXMuaWFkZCh0aGlzLm0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuc2hsID0gZnVuY3Rpb24gc2hsIChhLCBudW0pIHtcbiAgICB0aGlzLl92ZXJpZnkxKGEpO1xuICAgIHJldHVybiB0aGlzLmltb2QoYS51c2hsbihudW0pKTtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmltdWwgPSBmdW5jdGlvbiBpbXVsIChhLCBiKSB7XG4gICAgdGhpcy5fdmVyaWZ5MihhLCBiKTtcbiAgICByZXR1cm4gdGhpcy5pbW9kKGEuaW11bChiKSk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5tdWwgPSBmdW5jdGlvbiBtdWwgKGEsIGIpIHtcbiAgICB0aGlzLl92ZXJpZnkyKGEsIGIpO1xuICAgIHJldHVybiB0aGlzLmltb2QoYS5tdWwoYikpO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuaXNxciA9IGZ1bmN0aW9uIGlzcXIgKGEpIHtcbiAgICByZXR1cm4gdGhpcy5pbXVsKGEsIGEuY2xvbmUoKSk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5zcXIgPSBmdW5jdGlvbiBzcXIgKGEpIHtcbiAgICByZXR1cm4gdGhpcy5tdWwoYSwgYSk7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5zcXJ0ID0gZnVuY3Rpb24gc3FydCAoYSkge1xuICAgIGlmIChhLmlzWmVybygpKSByZXR1cm4gYS5jbG9uZSgpO1xuXG4gICAgdmFyIG1vZDMgPSB0aGlzLm0uYW5kbG4oMyk7XG4gICAgYXNzZXJ0KG1vZDMgJSAyID09PSAxKTtcblxuICAgIC8vIEZhc3QgY2FzZVxuICAgIGlmIChtb2QzID09PSAzKSB7XG4gICAgICB2YXIgcG93ID0gdGhpcy5tLmFkZChuZXcgQk4oMSkpLml1c2hybigyKTtcbiAgICAgIHJldHVybiB0aGlzLnBvdyhhLCBwb3cpO1xuICAgIH1cblxuICAgIC8vIFRvbmVsbGktU2hhbmtzIGFsZ29yaXRobSAoVG90YWxseSB1bm9wdGltaXplZCBhbmQgc2xvdylcbiAgICAvL1xuICAgIC8vIEZpbmQgUSBhbmQgUywgdGhhdCBRICogMiBeIFMgPSAoUCAtIDEpXG4gICAgdmFyIHEgPSB0aGlzLm0uc3VibigxKTtcbiAgICB2YXIgcyA9IDA7XG4gICAgd2hpbGUgKCFxLmlzWmVybygpICYmIHEuYW5kbG4oMSkgPT09IDApIHtcbiAgICAgIHMrKztcbiAgICAgIHEuaXVzaHJuKDEpO1xuICAgIH1cbiAgICBhc3NlcnQoIXEuaXNaZXJvKCkpO1xuXG4gICAgdmFyIG9uZSA9IG5ldyBCTigxKS50b1JlZCh0aGlzKTtcbiAgICB2YXIgbk9uZSA9IG9uZS5yZWROZWcoKTtcblxuICAgIC8vIEZpbmQgcXVhZHJhdGljIG5vbi1yZXNpZHVlXG4gICAgLy8gTk9URTogTWF4IGlzIHN1Y2ggYmVjYXVzZSBvZiBnZW5lcmFsaXplZCBSaWVtYW5uIGh5cG90aGVzaXMuXG4gICAgdmFyIGxwb3cgPSB0aGlzLm0uc3VibigxKS5pdXNocm4oMSk7XG4gICAgdmFyIHogPSB0aGlzLm0uYml0TGVuZ3RoKCk7XG4gICAgeiA9IG5ldyBCTigyICogeiAqIHopLnRvUmVkKHRoaXMpO1xuXG4gICAgd2hpbGUgKHRoaXMucG93KHosIGxwb3cpLmNtcChuT25lKSAhPT0gMCkge1xuICAgICAgei5yZWRJQWRkKG5PbmUpO1xuICAgIH1cblxuICAgIHZhciBjID0gdGhpcy5wb3coeiwgcSk7XG4gICAgdmFyIHIgPSB0aGlzLnBvdyhhLCBxLmFkZG4oMSkuaXVzaHJuKDEpKTtcbiAgICB2YXIgdCA9IHRoaXMucG93KGEsIHEpO1xuICAgIHZhciBtID0gcztcbiAgICB3aGlsZSAodC5jbXAob25lKSAhPT0gMCkge1xuICAgICAgdmFyIHRtcCA9IHQ7XG4gICAgICBmb3IgKHZhciBpID0gMDsgdG1wLmNtcChvbmUpICE9PSAwOyBpKyspIHtcbiAgICAgICAgdG1wID0gdG1wLnJlZFNxcigpO1xuICAgICAgfVxuICAgICAgYXNzZXJ0KGkgPCBtKTtcbiAgICAgIHZhciBiID0gdGhpcy5wb3coYywgbmV3IEJOKDEpLml1c2hsbihtIC0gaSAtIDEpKTtcblxuICAgICAgciA9IHIucmVkTXVsKGIpO1xuICAgICAgYyA9IGIucmVkU3FyKCk7XG4gICAgICB0ID0gdC5yZWRNdWwoYyk7XG4gICAgICBtID0gaTtcbiAgICB9XG5cbiAgICByZXR1cm4gcjtcbiAgfTtcblxuICBSZWQucHJvdG90eXBlLmludm0gPSBmdW5jdGlvbiBpbnZtIChhKSB7XG4gICAgdmFyIGludiA9IGEuX2ludm1wKHRoaXMubSk7XG4gICAgaWYgKGludi5uZWdhdGl2ZSAhPT0gMCkge1xuICAgICAgaW52Lm5lZ2F0aXZlID0gMDtcbiAgICAgIHJldHVybiB0aGlzLmltb2QoaW52KS5yZWROZWcoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuaW1vZChpbnYpO1xuICAgIH1cbiAgfTtcblxuICBSZWQucHJvdG90eXBlLnBvdyA9IGZ1bmN0aW9uIHBvdyAoYSwgbnVtKSB7XG4gICAgaWYgKG51bS5pc1plcm8oKSkgcmV0dXJuIG5ldyBCTigxKTtcbiAgICBpZiAobnVtLmNtcG4oMSkgPT09IDApIHJldHVybiBhLmNsb25lKCk7XG5cbiAgICB2YXIgd2luZG93U2l6ZSA9IDQ7XG4gICAgdmFyIHduZCA9IG5ldyBBcnJheSgxIDw8IHdpbmRvd1NpemUpO1xuICAgIHduZFswXSA9IG5ldyBCTigxKS50b1JlZCh0aGlzKTtcbiAgICB3bmRbMV0gPSBhO1xuICAgIGZvciAodmFyIGkgPSAyOyBpIDwgd25kLmxlbmd0aDsgaSsrKSB7XG4gICAgICB3bmRbaV0gPSB0aGlzLm11bCh3bmRbaSAtIDFdLCBhKTtcbiAgICB9XG5cbiAgICB2YXIgcmVzID0gd25kWzBdO1xuICAgIHZhciBjdXJyZW50ID0gMDtcbiAgICB2YXIgY3VycmVudExlbiA9IDA7XG4gICAgdmFyIHN0YXJ0ID0gbnVtLmJpdExlbmd0aCgpICUgMjY7XG4gICAgaWYgKHN0YXJ0ID09PSAwKSB7XG4gICAgICBzdGFydCA9IDI2O1xuICAgIH1cblxuICAgIGZvciAoaSA9IG51bS5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgdmFyIHdvcmQgPSBudW0ud29yZHNbaV07XG4gICAgICBmb3IgKHZhciBqID0gc3RhcnQgLSAxOyBqID49IDA7IGotLSkge1xuICAgICAgICB2YXIgYml0ID0gKHdvcmQgPj4gaikgJiAxO1xuICAgICAgICBpZiAocmVzICE9PSB3bmRbMF0pIHtcbiAgICAgICAgICByZXMgPSB0aGlzLnNxcihyZXMpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGJpdCA9PT0gMCAmJiBjdXJyZW50ID09PSAwKSB7XG4gICAgICAgICAgY3VycmVudExlbiA9IDA7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBjdXJyZW50IDw8PSAxO1xuICAgICAgICBjdXJyZW50IHw9IGJpdDtcbiAgICAgICAgY3VycmVudExlbisrO1xuICAgICAgICBpZiAoY3VycmVudExlbiAhPT0gd2luZG93U2l6ZSAmJiAoaSAhPT0gMCB8fCBqICE9PSAwKSkgY29udGludWU7XG5cbiAgICAgICAgcmVzID0gdGhpcy5tdWwocmVzLCB3bmRbY3VycmVudF0pO1xuICAgICAgICBjdXJyZW50TGVuID0gMDtcbiAgICAgICAgY3VycmVudCA9IDA7XG4gICAgICB9XG4gICAgICBzdGFydCA9IDI2O1xuICAgIH1cblxuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgUmVkLnByb3RvdHlwZS5jb252ZXJ0VG8gPSBmdW5jdGlvbiBjb252ZXJ0VG8gKG51bSkge1xuICAgIHZhciByID0gbnVtLnVtb2QodGhpcy5tKTtcblxuICAgIHJldHVybiByID09PSBudW0gPyByLmNsb25lKCkgOiByO1xuICB9O1xuXG4gIFJlZC5wcm90b3R5cGUuY29udmVydEZyb20gPSBmdW5jdGlvbiBjb252ZXJ0RnJvbSAobnVtKSB7XG4gICAgdmFyIHJlcyA9IG51bS5jbG9uZSgpO1xuICAgIHJlcy5yZWQgPSBudWxsO1xuICAgIHJldHVybiByZXM7XG4gIH07XG5cbiAgLy9cbiAgLy8gTW9udGdvbWVyeSBtZXRob2QgZW5naW5lXG4gIC8vXG5cbiAgQk4ubW9udCA9IGZ1bmN0aW9uIG1vbnQgKG51bSkge1xuICAgIHJldHVybiBuZXcgTW9udChudW0pO1xuICB9O1xuXG4gIGZ1bmN0aW9uIE1vbnQgKG0pIHtcbiAgICBSZWQuY2FsbCh0aGlzLCBtKTtcblxuICAgIHRoaXMuc2hpZnQgPSB0aGlzLm0uYml0TGVuZ3RoKCk7XG4gICAgaWYgKHRoaXMuc2hpZnQgJSAyNiAhPT0gMCkge1xuICAgICAgdGhpcy5zaGlmdCArPSAyNiAtICh0aGlzLnNoaWZ0ICUgMjYpO1xuICAgIH1cblxuICAgIHRoaXMuciA9IG5ldyBCTigxKS5pdXNobG4odGhpcy5zaGlmdCk7XG4gICAgdGhpcy5yMiA9IHRoaXMuaW1vZCh0aGlzLnIuc3FyKCkpO1xuICAgIHRoaXMucmludiA9IHRoaXMuci5faW52bXAodGhpcy5tKTtcblxuICAgIHRoaXMubWludiA9IHRoaXMucmludi5tdWwodGhpcy5yKS5pc3VibigxKS5kaXYodGhpcy5tKTtcbiAgICB0aGlzLm1pbnYgPSB0aGlzLm1pbnYudW1vZCh0aGlzLnIpO1xuICAgIHRoaXMubWludiA9IHRoaXMuci5zdWIodGhpcy5taW52KTtcbiAgfVxuICBpbmhlcml0cyhNb250LCBSZWQpO1xuXG4gIE1vbnQucHJvdG90eXBlLmNvbnZlcnRUbyA9IGZ1bmN0aW9uIGNvbnZlcnRUbyAobnVtKSB7XG4gICAgcmV0dXJuIHRoaXMuaW1vZChudW0udXNobG4odGhpcy5zaGlmdCkpO1xuICB9O1xuXG4gIE1vbnQucHJvdG90eXBlLmNvbnZlcnRGcm9tID0gZnVuY3Rpb24gY29udmVydEZyb20gKG51bSkge1xuICAgIHZhciByID0gdGhpcy5pbW9kKG51bS5tdWwodGhpcy5yaW52KSk7XG4gICAgci5yZWQgPSBudWxsO1xuICAgIHJldHVybiByO1xuICB9O1xuXG4gIE1vbnQucHJvdG90eXBlLmltdWwgPSBmdW5jdGlvbiBpbXVsIChhLCBiKSB7XG4gICAgaWYgKGEuaXNaZXJvKCkgfHwgYi5pc1plcm8oKSkge1xuICAgICAgYS53b3Jkc1swXSA9IDA7XG4gICAgICBhLmxlbmd0aCA9IDE7XG4gICAgICByZXR1cm4gYTtcbiAgICB9XG5cbiAgICB2YXIgdCA9IGEuaW11bChiKTtcbiAgICB2YXIgYyA9IHQubWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubWludikuaW1hc2tuKHRoaXMuc2hpZnQpLm11bCh0aGlzLm0pO1xuICAgIHZhciB1ID0gdC5pc3ViKGMpLml1c2hybih0aGlzLnNoaWZ0KTtcbiAgICB2YXIgcmVzID0gdTtcblxuICAgIGlmICh1LmNtcCh0aGlzLm0pID49IDApIHtcbiAgICAgIHJlcyA9IHUuaXN1Yih0aGlzLm0pO1xuICAgIH0gZWxzZSBpZiAodS5jbXBuKDApIDwgMCkge1xuICAgICAgcmVzID0gdS5pYWRkKHRoaXMubSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcy5fZm9yY2VSZWQodGhpcyk7XG4gIH07XG5cbiAgTW9udC5wcm90b3R5cGUubXVsID0gZnVuY3Rpb24gbXVsIChhLCBiKSB7XG4gICAgaWYgKGEuaXNaZXJvKCkgfHwgYi5pc1plcm8oKSkgcmV0dXJuIG5ldyBCTigwKS5fZm9yY2VSZWQodGhpcyk7XG5cbiAgICB2YXIgdCA9IGEubXVsKGIpO1xuICAgIHZhciBjID0gdC5tYXNrbih0aGlzLnNoaWZ0KS5tdWwodGhpcy5taW52KS5pbWFza24odGhpcy5zaGlmdCkubXVsKHRoaXMubSk7XG4gICAgdmFyIHUgPSB0LmlzdWIoYykuaXVzaHJuKHRoaXMuc2hpZnQpO1xuICAgIHZhciByZXMgPSB1O1xuICAgIGlmICh1LmNtcCh0aGlzLm0pID49IDApIHtcbiAgICAgIHJlcyA9IHUuaXN1Yih0aGlzLm0pO1xuICAgIH0gZWxzZSBpZiAodS5jbXBuKDApIDwgMCkge1xuICAgICAgcmVzID0gdS5pYWRkKHRoaXMubSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcy5fZm9yY2VSZWQodGhpcyk7XG4gIH07XG5cbiAgTW9udC5wcm90b3R5cGUuaW52bSA9IGZ1bmN0aW9uIGludm0gKGEpIHtcbiAgICAvLyAoQVIpXi0xICogUl4yID0gKEFeLTEgKiBSXi0xKSAqIFJeMiA9IEFeLTEgKiBSXG4gICAgdmFyIHJlcyA9IHRoaXMuaW1vZChhLl9pbnZtcCh0aGlzLm0pLm11bCh0aGlzLnIyKSk7XG4gICAgcmV0dXJuIHJlcy5fZm9yY2VSZWQodGhpcyk7XG4gIH07XG59KSh0eXBlb2YgbW9kdWxlID09PSAndW5kZWZpbmVkJyB8fCBtb2R1bGUsIHRoaXMpO1xuIiwidmFyIHI7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gcmFuZChsZW4pIHtcbiAgaWYgKCFyKVxuICAgIHIgPSBuZXcgUmFuZChudWxsKTtcblxuICByZXR1cm4gci5nZW5lcmF0ZShsZW4pO1xufTtcblxuZnVuY3Rpb24gUmFuZChyYW5kKSB7XG4gIHRoaXMucmFuZCA9IHJhbmQ7XG59XG5tb2R1bGUuZXhwb3J0cy5SYW5kID0gUmFuZDtcblxuUmFuZC5wcm90b3R5cGUuZ2VuZXJhdGUgPSBmdW5jdGlvbiBnZW5lcmF0ZShsZW4pIHtcbiAgcmV0dXJuIHRoaXMuX3JhbmQobGVuKTtcbn07XG5cbi8vIEVtdWxhdGUgY3J5cHRvIEFQSSB1c2luZyByYW5keVxuUmFuZC5wcm90b3R5cGUuX3JhbmQgPSBmdW5jdGlvbiBfcmFuZChuKSB7XG4gIGlmICh0aGlzLnJhbmQuZ2V0Qnl0ZXMpXG4gICAgcmV0dXJuIHRoaXMucmFuZC5nZXRCeXRlcyhuKTtcblxuICB2YXIgcmVzID0gbmV3IFVpbnQ4QXJyYXkobik7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcmVzLmxlbmd0aDsgaSsrKVxuICAgIHJlc1tpXSA9IHRoaXMucmFuZC5nZXRCeXRlKCk7XG4gIHJldHVybiByZXM7XG59O1xuXG5pZiAodHlwZW9mIHNlbGYgPT09ICdvYmplY3QnKSB7XG4gIGlmIChzZWxmLmNyeXB0byAmJiBzZWxmLmNyeXB0by5nZXRSYW5kb21WYWx1ZXMpIHtcbiAgICAvLyBNb2Rlcm4gYnJvd3NlcnNcbiAgICBSYW5kLnByb3RvdHlwZS5fcmFuZCA9IGZ1bmN0aW9uIF9yYW5kKG4pIHtcbiAgICAgIHZhciBhcnIgPSBuZXcgVWludDhBcnJheShuKTtcbiAgICAgIHNlbGYuY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhhcnIpO1xuICAgICAgcmV0dXJuIGFycjtcbiAgICB9O1xuICB9IGVsc2UgaWYgKHNlbGYubXNDcnlwdG8gJiYgc2VsZi5tc0NyeXB0by5nZXRSYW5kb21WYWx1ZXMpIHtcbiAgICAvLyBJRVxuICAgIFJhbmQucHJvdG90eXBlLl9yYW5kID0gZnVuY3Rpb24gX3JhbmQobikge1xuICAgICAgdmFyIGFyciA9IG5ldyBVaW50OEFycmF5KG4pO1xuICAgICAgc2VsZi5tc0NyeXB0by5nZXRSYW5kb21WYWx1ZXMoYXJyKTtcbiAgICAgIHJldHVybiBhcnI7XG4gICAgfTtcblxuICAvLyBTYWZhcmkncyBXZWJXb3JrZXJzIGRvIG5vdCBoYXZlIGBjcnlwdG9gXG4gIH0gZWxzZSBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ29iamVjdCcpIHtcbiAgICAvLyBPbGQganVua1xuICAgIFJhbmQucHJvdG90eXBlLl9yYW5kID0gZnVuY3Rpb24oKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBpbXBsZW1lbnRlZCB5ZXQnKTtcbiAgICB9O1xuICB9XG59IGVsc2Uge1xuICAvLyBOb2RlLmpzIG9yIFdlYiB3b3JrZXIgd2l0aCBubyBjcnlwdG8gc3VwcG9ydFxuICB0cnkge1xuICAgIHZhciBjcnlwdG8gPSByZXF1aXJlKCdjcnlwdG8nKTtcbiAgICBpZiAodHlwZW9mIGNyeXB0by5yYW5kb21CeXRlcyAhPT0gJ2Z1bmN0aW9uJylcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm90IHN1cHBvcnRlZCcpO1xuXG4gICAgUmFuZC5wcm90b3R5cGUuX3JhbmQgPSBmdW5jdGlvbiBfcmFuZChuKSB7XG4gICAgICByZXR1cm4gY3J5cHRvLnJhbmRvbUJ5dGVzKG4pO1xuICAgIH07XG4gIH0gY2F0Y2ggKGUpIHtcbiAgfVxufVxuIiwiIiwiLy8gYmFzZWQgb24gdGhlIGFlcyBpbXBsaW1lbnRhdGlvbiBpbiB0cmlwbGUgc2VjXG4vLyBodHRwczovL2dpdGh1Yi5jb20va2V5YmFzZS90cmlwbGVzZWNcblxuLy8gd2hpY2ggaXMgaW4gdHVybiBiYXNlZCBvbiB0aGUgb25lIGZyb20gY3J5cHRvLWpzXG4vLyBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2NyeXB0by1qcy9cblxudmFyIHVpbnRfbWF4ID0gTWF0aC5wb3coMiwgMzIpXG5mdW5jdGlvbiBmaXh1cF91aW50MzIgKHgpIHtcbiAgdmFyIHJldCwgeF9wb3NcbiAgcmV0ID0geCA+IHVpbnRfbWF4IHx8IHggPCAwID8gKHhfcG9zID0gTWF0aC5hYnMoeCkgJSB1aW50X21heCwgeCA8IDAgPyB1aW50X21heCAtIHhfcG9zIDogeF9wb3MpIDogeFxuICByZXR1cm4gcmV0XG59XG5mdW5jdGlvbiBzY3J1Yl92ZWMgKHYpIHtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB2Lmxlbmd0aDsgdisrKSB7XG4gICAgdltpXSA9IDBcbiAgfVxuICByZXR1cm4gZmFsc2Vcbn1cblxuZnVuY3Rpb24gR2xvYmFsICgpIHtcbiAgdGhpcy5TQk9YID0gW11cbiAgdGhpcy5JTlZfU0JPWCA9IFtdXG4gIHRoaXMuU1VCX01JWCA9IFtbXSwgW10sIFtdLCBbXV1cbiAgdGhpcy5JTlZfU1VCX01JWCA9IFtbXSwgW10sIFtdLCBbXV1cbiAgdGhpcy5pbml0KClcbiAgdGhpcy5SQ09OID0gWzB4MDAsIDB4MDEsIDB4MDIsIDB4MDQsIDB4MDgsIDB4MTAsIDB4MjAsIDB4NDAsIDB4ODAsIDB4MWIsIDB4MzZdXG59XG5cbkdsb2JhbC5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGQsIGksIHN4LCB0LCB4LCB4MiwgeDQsIHg4LCB4aSwgX2lcbiAgZCA9IChmdW5jdGlvbiAoKSB7XG4gICAgdmFyIF9pLCBfcmVzdWx0c1xuICAgIF9yZXN1bHRzID0gW11cbiAgICBmb3IgKGkgPSBfaSA9IDA7IF9pIDwgMjU2OyBpID0gKytfaSkge1xuICAgICAgaWYgKGkgPCAxMjgpIHtcbiAgICAgICAgX3Jlc3VsdHMucHVzaChpIDw8IDEpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBfcmVzdWx0cy5wdXNoKChpIDw8IDEpIF4gMHgxMWIpXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBfcmVzdWx0c1xuICB9KSgpXG4gIHggPSAwXG4gIHhpID0gMFxuICBmb3IgKGkgPSBfaSA9IDA7IF9pIDwgMjU2OyBpID0gKytfaSkge1xuICAgIHN4ID0geGkgXiAoeGkgPDwgMSkgXiAoeGkgPDwgMikgXiAoeGkgPDwgMykgXiAoeGkgPDwgNClcbiAgICBzeCA9IChzeCA+Pj4gOCkgXiAoc3ggJiAweGZmKSBeIDB4NjNcbiAgICB0aGlzLlNCT1hbeF0gPSBzeFxuICAgIHRoaXMuSU5WX1NCT1hbc3hdID0geFxuICAgIHgyID0gZFt4XVxuICAgIHg0ID0gZFt4Ml1cbiAgICB4OCA9IGRbeDRdXG4gICAgdCA9IChkW3N4XSAqIDB4MTAxKSBeIChzeCAqIDB4MTAxMDEwMClcbiAgICB0aGlzLlNVQl9NSVhbMF1beF0gPSAodCA8PCAyNCkgfCAodCA+Pj4gOClcbiAgICB0aGlzLlNVQl9NSVhbMV1beF0gPSAodCA8PCAxNikgfCAodCA+Pj4gMTYpXG4gICAgdGhpcy5TVUJfTUlYWzJdW3hdID0gKHQgPDwgOCkgfCAodCA+Pj4gMjQpXG4gICAgdGhpcy5TVUJfTUlYWzNdW3hdID0gdFxuICAgIHQgPSAoeDggKiAweDEwMTAxMDEpIF4gKHg0ICogMHgxMDAwMSkgXiAoeDIgKiAweDEwMSkgXiAoeCAqIDB4MTAxMDEwMClcbiAgICB0aGlzLklOVl9TVUJfTUlYWzBdW3N4XSA9ICh0IDw8IDI0KSB8ICh0ID4+PiA4KVxuICAgIHRoaXMuSU5WX1NVQl9NSVhbMV1bc3hdID0gKHQgPDwgMTYpIHwgKHQgPj4+IDE2KVxuICAgIHRoaXMuSU5WX1NVQl9NSVhbMl1bc3hdID0gKHQgPDwgOCkgfCAodCA+Pj4gMjQpXG4gICAgdGhpcy5JTlZfU1VCX01JWFszXVtzeF0gPSB0XG4gICAgaWYgKHggPT09IDApIHtcbiAgICAgIHggPSB4aSA9IDFcbiAgICB9IGVsc2Uge1xuICAgICAgeCA9IHgyIF4gZFtkW2RbeDggXiB4Ml1dXVxuICAgICAgeGkgXj0gZFtkW3hpXV1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRydWVcbn1cblxudmFyIEcgPSBuZXcgR2xvYmFsKClcblxuQUVTLmJsb2NrU2l6ZSA9IDQgKiA0XG5cbkFFUy5wcm90b3R5cGUuYmxvY2tTaXplID0gQUVTLmJsb2NrU2l6ZVxuXG5BRVMua2V5U2l6ZSA9IDI1NiAvIDhcblxuQUVTLnByb3RvdHlwZS5rZXlTaXplID0gQUVTLmtleVNpemVcblxuZnVuY3Rpb24gYnVmZmVyVG9BcnJheSAoYnVmKSB7XG4gIHZhciBsZW4gPSBidWYubGVuZ3RoIC8gNFxuICB2YXIgb3V0ID0gbmV3IEFycmF5KGxlbilcbiAgdmFyIGkgPSAtMVxuICB3aGlsZSAoKytpIDwgbGVuKSB7XG4gICAgb3V0W2ldID0gYnVmLnJlYWRVSW50MzJCRShpICogNClcbiAgfVxuICByZXR1cm4gb3V0XG59XG5mdW5jdGlvbiBBRVMgKGtleSkge1xuICB0aGlzLl9rZXkgPSBidWZmZXJUb0FycmF5KGtleSlcbiAgdGhpcy5fZG9SZXNldCgpXG59XG5cbkFFUy5wcm90b3R5cGUuX2RvUmVzZXQgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBpbnZLc1Jvdywga2V5U2l6ZSwga2V5V29yZHMsIGtzUm93LCBrc1Jvd3MsIHRcbiAga2V5V29yZHMgPSB0aGlzLl9rZXlcbiAga2V5U2l6ZSA9IGtleVdvcmRzLmxlbmd0aFxuICB0aGlzLl9uUm91bmRzID0ga2V5U2l6ZSArIDZcbiAga3NSb3dzID0gKHRoaXMuX25Sb3VuZHMgKyAxKSAqIDRcbiAgdGhpcy5fa2V5U2NoZWR1bGUgPSBbXVxuICBmb3IgKGtzUm93ID0gMDsga3NSb3cgPCBrc1Jvd3M7IGtzUm93KyspIHtcbiAgICB0aGlzLl9rZXlTY2hlZHVsZVtrc1Jvd10gPSBrc1JvdyA8IGtleVNpemUgPyBrZXlXb3Jkc1trc1Jvd10gOiAodCA9IHRoaXMuX2tleVNjaGVkdWxlW2tzUm93IC0gMV0sIChrc1JvdyAlIGtleVNpemUpID09PSAwID8gKHQgPSAodCA8PCA4KSB8ICh0ID4+PiAyNCksIHQgPSAoRy5TQk9YW3QgPj4+IDI0XSA8PCAyNCkgfCAoRy5TQk9YWyh0ID4+PiAxNikgJiAweGZmXSA8PCAxNikgfCAoRy5TQk9YWyh0ID4+PiA4KSAmIDB4ZmZdIDw8IDgpIHwgRy5TQk9YW3QgJiAweGZmXSwgdCBePSBHLlJDT05bKGtzUm93IC8ga2V5U2l6ZSkgfCAwXSA8PCAyNCkgOiBrZXlTaXplID4gNiAmJiBrc1JvdyAlIGtleVNpemUgPT09IDQgPyB0ID0gKEcuU0JPWFt0ID4+PiAyNF0gPDwgMjQpIHwgKEcuU0JPWFsodCA+Pj4gMTYpICYgMHhmZl0gPDwgMTYpIHwgKEcuU0JPWFsodCA+Pj4gOCkgJiAweGZmXSA8PCA4KSB8IEcuU0JPWFt0ICYgMHhmZl0gOiB2b2lkIDAsIHRoaXMuX2tleVNjaGVkdWxlW2tzUm93IC0ga2V5U2l6ZV0gXiB0KVxuICB9XG4gIHRoaXMuX2ludktleVNjaGVkdWxlID0gW11cbiAgZm9yIChpbnZLc1JvdyA9IDA7IGludktzUm93IDwga3NSb3dzOyBpbnZLc1JvdysrKSB7XG4gICAga3NSb3cgPSBrc1Jvd3MgLSBpbnZLc1Jvd1xuICAgIHQgPSB0aGlzLl9rZXlTY2hlZHVsZVtrc1JvdyAtIChpbnZLc1JvdyAlIDQgPyAwIDogNCldXG4gICAgdGhpcy5faW52S2V5U2NoZWR1bGVbaW52S3NSb3ddID0gaW52S3NSb3cgPCA0IHx8IGtzUm93IDw9IDQgPyB0IDogRy5JTlZfU1VCX01JWFswXVtHLlNCT1hbdCA+Pj4gMjRdXSBeIEcuSU5WX1NVQl9NSVhbMV1bRy5TQk9YWyh0ID4+PiAxNikgJiAweGZmXV0gXiBHLklOVl9TVUJfTUlYWzJdW0cuU0JPWFsodCA+Pj4gOCkgJiAweGZmXV0gXiBHLklOVl9TVUJfTUlYWzNdW0cuU0JPWFt0ICYgMHhmZl1dXG4gIH1cbiAgcmV0dXJuIHRydWVcbn1cblxuQUVTLnByb3RvdHlwZS5lbmNyeXB0QmxvY2sgPSBmdW5jdGlvbiAoTSkge1xuICBNID0gYnVmZmVyVG9BcnJheShuZXcgQnVmZmVyKE0pKVxuICB2YXIgb3V0ID0gdGhpcy5fZG9DcnlwdEJsb2NrKE0sIHRoaXMuX2tleVNjaGVkdWxlLCBHLlNVQl9NSVgsIEcuU0JPWClcbiAgdmFyIGJ1ZiA9IG5ldyBCdWZmZXIoMTYpXG4gIGJ1Zi53cml0ZVVJbnQzMkJFKG91dFswXSwgMClcbiAgYnVmLndyaXRlVUludDMyQkUob3V0WzFdLCA0KVxuICBidWYud3JpdGVVSW50MzJCRShvdXRbMl0sIDgpXG4gIGJ1Zi53cml0ZVVJbnQzMkJFKG91dFszXSwgMTIpXG4gIHJldHVybiBidWZcbn1cblxuQUVTLnByb3RvdHlwZS5kZWNyeXB0QmxvY2sgPSBmdW5jdGlvbiAoTSkge1xuICBNID0gYnVmZmVyVG9BcnJheShuZXcgQnVmZmVyKE0pKVxuICB2YXIgdGVtcCA9IFtNWzNdLCBNWzFdXVxuICBNWzFdID0gdGVtcFswXVxuICBNWzNdID0gdGVtcFsxXVxuICB2YXIgb3V0ID0gdGhpcy5fZG9DcnlwdEJsb2NrKE0sIHRoaXMuX2ludktleVNjaGVkdWxlLCBHLklOVl9TVUJfTUlYLCBHLklOVl9TQk9YKVxuICB2YXIgYnVmID0gbmV3IEJ1ZmZlcigxNilcbiAgYnVmLndyaXRlVUludDMyQkUob3V0WzBdLCAwKVxuICBidWYud3JpdGVVSW50MzJCRShvdXRbM10sIDQpXG4gIGJ1Zi53cml0ZVVJbnQzMkJFKG91dFsyXSwgOClcbiAgYnVmLndyaXRlVUludDMyQkUob3V0WzFdLCAxMilcbiAgcmV0dXJuIGJ1ZlxufVxuXG5BRVMucHJvdG90eXBlLnNjcnViID0gZnVuY3Rpb24gKCkge1xuICBzY3J1Yl92ZWModGhpcy5fa2V5U2NoZWR1bGUpXG4gIHNjcnViX3ZlYyh0aGlzLl9pbnZLZXlTY2hlZHVsZSlcbiAgc2NydWJfdmVjKHRoaXMuX2tleSlcbn1cblxuQUVTLnByb3RvdHlwZS5fZG9DcnlwdEJsb2NrID0gZnVuY3Rpb24gKE0sIGtleVNjaGVkdWxlLCBTVUJfTUlYLCBTQk9YKSB7XG4gIHZhciBrc1JvdywgczAsIHMxLCBzMiwgczMsIHQwLCB0MSwgdDIsIHQzXG5cbiAgczAgPSBNWzBdIF4ga2V5U2NoZWR1bGVbMF1cbiAgczEgPSBNWzFdIF4ga2V5U2NoZWR1bGVbMV1cbiAgczIgPSBNWzJdIF4ga2V5U2NoZWR1bGVbMl1cbiAgczMgPSBNWzNdIF4ga2V5U2NoZWR1bGVbM11cbiAga3NSb3cgPSA0XG4gIGZvciAodmFyIHJvdW5kID0gMTsgcm91bmQgPCB0aGlzLl9uUm91bmRzOyByb3VuZCsrKSB7XG4gICAgdDAgPSBTVUJfTUlYWzBdW3MwID4+PiAyNF0gXiBTVUJfTUlYWzFdWyhzMSA+Pj4gMTYpICYgMHhmZl0gXiBTVUJfTUlYWzJdWyhzMiA+Pj4gOCkgJiAweGZmXSBeIFNVQl9NSVhbM11bczMgJiAweGZmXSBeIGtleVNjaGVkdWxlW2tzUm93KytdXG4gICAgdDEgPSBTVUJfTUlYWzBdW3MxID4+PiAyNF0gXiBTVUJfTUlYWzFdWyhzMiA+Pj4gMTYpICYgMHhmZl0gXiBTVUJfTUlYWzJdWyhzMyA+Pj4gOCkgJiAweGZmXSBeIFNVQl9NSVhbM11bczAgJiAweGZmXSBeIGtleVNjaGVkdWxlW2tzUm93KytdXG4gICAgdDIgPSBTVUJfTUlYWzBdW3MyID4+PiAyNF0gXiBTVUJfTUlYWzFdWyhzMyA+Pj4gMTYpICYgMHhmZl0gXiBTVUJfTUlYWzJdWyhzMCA+Pj4gOCkgJiAweGZmXSBeIFNVQl9NSVhbM11bczEgJiAweGZmXSBeIGtleVNjaGVkdWxlW2tzUm93KytdXG4gICAgdDMgPSBTVUJfTUlYWzBdW3MzID4+PiAyNF0gXiBTVUJfTUlYWzFdWyhzMCA+Pj4gMTYpICYgMHhmZl0gXiBTVUJfTUlYWzJdWyhzMSA+Pj4gOCkgJiAweGZmXSBeIFNVQl9NSVhbM11bczIgJiAweGZmXSBeIGtleVNjaGVkdWxlW2tzUm93KytdXG4gICAgczAgPSB0MFxuICAgIHMxID0gdDFcbiAgICBzMiA9IHQyXG4gICAgczMgPSB0M1xuICB9XG4gIHQwID0gKChTQk9YW3MwID4+PiAyNF0gPDwgMjQpIHwgKFNCT1hbKHMxID4+PiAxNikgJiAweGZmXSA8PCAxNikgfCAoU0JPWFsoczIgPj4+IDgpICYgMHhmZl0gPDwgOCkgfCBTQk9YW3MzICYgMHhmZl0pIF4ga2V5U2NoZWR1bGVba3NSb3crK11cbiAgdDEgPSAoKFNCT1hbczEgPj4+IDI0XSA8PCAyNCkgfCAoU0JPWFsoczIgPj4+IDE2KSAmIDB4ZmZdIDw8IDE2KSB8IChTQk9YWyhzMyA+Pj4gOCkgJiAweGZmXSA8PCA4KSB8IFNCT1hbczAgJiAweGZmXSkgXiBrZXlTY2hlZHVsZVtrc1JvdysrXVxuICB0MiA9ICgoU0JPWFtzMiA+Pj4gMjRdIDw8IDI0KSB8IChTQk9YWyhzMyA+Pj4gMTYpICYgMHhmZl0gPDwgMTYpIHwgKFNCT1hbKHMwID4+PiA4KSAmIDB4ZmZdIDw8IDgpIHwgU0JPWFtzMSAmIDB4ZmZdKSBeIGtleVNjaGVkdWxlW2tzUm93KytdXG4gIHQzID0gKChTQk9YW3MzID4+PiAyNF0gPDwgMjQpIHwgKFNCT1hbKHMwID4+PiAxNikgJiAweGZmXSA8PCAxNikgfCAoU0JPWFsoczEgPj4+IDgpICYgMHhmZl0gPDwgOCkgfCBTQk9YW3MyICYgMHhmZl0pIF4ga2V5U2NoZWR1bGVba3NSb3crK11cbiAgcmV0dXJuIFtcbiAgICBmaXh1cF91aW50MzIodDApLFxuICAgIGZpeHVwX3VpbnQzMih0MSksXG4gICAgZml4dXBfdWludDMyKHQyKSxcbiAgICBmaXh1cF91aW50MzIodDMpXG4gIF1cbn1cblxuZXhwb3J0cy5BRVMgPSBBRVNcbiIsInZhciBhZXMgPSByZXF1aXJlKCcuL2FlcycpXG52YXIgVHJhbnNmb3JtID0gcmVxdWlyZSgnY2lwaGVyLWJhc2UnKVxudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKVxudmFyIEdIQVNIID0gcmVxdWlyZSgnLi9naGFzaCcpXG52YXIgeG9yID0gcmVxdWlyZSgnYnVmZmVyLXhvcicpXG5pbmhlcml0cyhTdHJlYW1DaXBoZXIsIFRyYW5zZm9ybSlcbm1vZHVsZS5leHBvcnRzID0gU3RyZWFtQ2lwaGVyXG5cbmZ1bmN0aW9uIFN0cmVhbUNpcGhlciAobW9kZSwga2V5LCBpdiwgZGVjcnlwdCkge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgU3RyZWFtQ2lwaGVyKSkge1xuICAgIHJldHVybiBuZXcgU3RyZWFtQ2lwaGVyKG1vZGUsIGtleSwgaXYpXG4gIH1cbiAgVHJhbnNmb3JtLmNhbGwodGhpcylcbiAgdGhpcy5fZmluSUQgPSBCdWZmZXIuY29uY2F0KFtpdiwgbmV3IEJ1ZmZlcihbMCwgMCwgMCwgMV0pXSlcbiAgaXYgPSBCdWZmZXIuY29uY2F0KFtpdiwgbmV3IEJ1ZmZlcihbMCwgMCwgMCwgMl0pXSlcbiAgdGhpcy5fY2lwaGVyID0gbmV3IGFlcy5BRVMoa2V5KVxuICB0aGlzLl9wcmV2ID0gbmV3IEJ1ZmZlcihpdi5sZW5ndGgpXG4gIHRoaXMuX2NhY2hlID0gbmV3IEJ1ZmZlcignJylcbiAgdGhpcy5fc2VjQ2FjaGUgPSBuZXcgQnVmZmVyKCcnKVxuICB0aGlzLl9kZWNyeXB0ID0gZGVjcnlwdFxuICB0aGlzLl9hbGVuID0gMFxuICB0aGlzLl9sZW4gPSAwXG4gIGl2LmNvcHkodGhpcy5fcHJldilcbiAgdGhpcy5fbW9kZSA9IG1vZGVcbiAgdmFyIGggPSBuZXcgQnVmZmVyKDQpXG4gIGguZmlsbCgwKVxuICB0aGlzLl9naGFzaCA9IG5ldyBHSEFTSCh0aGlzLl9jaXBoZXIuZW5jcnlwdEJsb2NrKGgpKVxuICB0aGlzLl9hdXRoVGFnID0gbnVsbFxuICB0aGlzLl9jYWxsZWQgPSBmYWxzZVxufVxuU3RyZWFtQ2lwaGVyLnByb3RvdHlwZS5fdXBkYXRlID0gZnVuY3Rpb24gKGNodW5rKSB7XG4gIGlmICghdGhpcy5fY2FsbGVkICYmIHRoaXMuX2FsZW4pIHtcbiAgICB2YXIgcnVtcCA9IDE2IC0gKHRoaXMuX2FsZW4gJSAxNilcbiAgICBpZiAocnVtcCA8IDE2KSB7XG4gICAgICBydW1wID0gbmV3IEJ1ZmZlcihydW1wKVxuICAgICAgcnVtcC5maWxsKDApXG4gICAgICB0aGlzLl9naGFzaC51cGRhdGUocnVtcClcbiAgICB9XG4gIH1cbiAgdGhpcy5fY2FsbGVkID0gdHJ1ZVxuICB2YXIgb3V0ID0gdGhpcy5fbW9kZS5lbmNyeXB0KHRoaXMsIGNodW5rKVxuICBpZiAodGhpcy5fZGVjcnlwdCkge1xuICAgIHRoaXMuX2doYXNoLnVwZGF0ZShjaHVuaylcbiAgfSBlbHNlIHtcbiAgICB0aGlzLl9naGFzaC51cGRhdGUob3V0KVxuICB9XG4gIHRoaXMuX2xlbiArPSBjaHVuay5sZW5ndGhcbiAgcmV0dXJuIG91dFxufVxuU3RyZWFtQ2lwaGVyLnByb3RvdHlwZS5fZmluYWwgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICh0aGlzLl9kZWNyeXB0ICYmICF0aGlzLl9hdXRoVGFnKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCBzdGF0ZSBvciB1bmFibGUgdG8gYXV0aGVudGljYXRlIGRhdGEnKVxuICB9XG4gIHZhciB0YWcgPSB4b3IodGhpcy5fZ2hhc2guZmluYWwodGhpcy5fYWxlbiAqIDgsIHRoaXMuX2xlbiAqIDgpLCB0aGlzLl9jaXBoZXIuZW5jcnlwdEJsb2NrKHRoaXMuX2ZpbklEKSlcbiAgaWYgKHRoaXMuX2RlY3J5cHQpIHtcbiAgICBpZiAoeG9yVGVzdCh0YWcsIHRoaXMuX2F1dGhUYWcpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIHN0YXRlIG9yIHVuYWJsZSB0byBhdXRoZW50aWNhdGUgZGF0YScpXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHRoaXMuX2F1dGhUYWcgPSB0YWdcbiAgfVxuICB0aGlzLl9jaXBoZXIuc2NydWIoKVxufVxuU3RyZWFtQ2lwaGVyLnByb3RvdHlwZS5nZXRBdXRoVGFnID0gZnVuY3Rpb24gZ2V0QXV0aFRhZyAoKSB7XG4gIGlmICghdGhpcy5fZGVjcnlwdCAmJiBCdWZmZXIuaXNCdWZmZXIodGhpcy5fYXV0aFRhZykpIHtcbiAgICByZXR1cm4gdGhpcy5fYXV0aFRhZ1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcignQXR0ZW1wdGluZyB0byBnZXQgYXV0aCB0YWcgaW4gdW5zdXBwb3J0ZWQgc3RhdGUnKVxuICB9XG59XG5TdHJlYW1DaXBoZXIucHJvdG90eXBlLnNldEF1dGhUYWcgPSBmdW5jdGlvbiBzZXRBdXRoVGFnICh0YWcpIHtcbiAgaWYgKHRoaXMuX2RlY3J5cHQpIHtcbiAgICB0aGlzLl9hdXRoVGFnID0gdGFnXG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdBdHRlbXB0aW5nIHRvIHNldCBhdXRoIHRhZyBpbiB1bnN1cHBvcnRlZCBzdGF0ZScpXG4gIH1cbn1cblN0cmVhbUNpcGhlci5wcm90b3R5cGUuc2V0QUFEID0gZnVuY3Rpb24gc2V0QUFEIChidWYpIHtcbiAgaWYgKCF0aGlzLl9jYWxsZWQpIHtcbiAgICB0aGlzLl9naGFzaC51cGRhdGUoYnVmKVxuICAgIHRoaXMuX2FsZW4gKz0gYnVmLmxlbmd0aFxuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcignQXR0ZW1wdGluZyB0byBzZXQgQUFEIGluIHVuc3VwcG9ydGVkIHN0YXRlJylcbiAgfVxufVxuZnVuY3Rpb24geG9yVGVzdCAoYSwgYikge1xuICB2YXIgb3V0ID0gMFxuICBpZiAoYS5sZW5ndGggIT09IGIubGVuZ3RoKSB7XG4gICAgb3V0KytcbiAgfVxuICB2YXIgbGVuID0gTWF0aC5taW4oYS5sZW5ndGgsIGIubGVuZ3RoKVxuICB2YXIgaSA9IC0xXG4gIHdoaWxlICgrK2kgPCBsZW4pIHtcbiAgICBvdXQgKz0gKGFbaV0gXiBiW2ldKVxuICB9XG4gIHJldHVybiBvdXRcbn1cbiIsInZhciBjaXBoZXJzID0gcmVxdWlyZSgnLi9lbmNyeXB0ZXInKVxuZXhwb3J0cy5jcmVhdGVDaXBoZXIgPSBleHBvcnRzLkNpcGhlciA9IGNpcGhlcnMuY3JlYXRlQ2lwaGVyXG5leHBvcnRzLmNyZWF0ZUNpcGhlcml2ID0gZXhwb3J0cy5DaXBoZXJpdiA9IGNpcGhlcnMuY3JlYXRlQ2lwaGVyaXZcbnZhciBkZWNpcGhlcnMgPSByZXF1aXJlKCcuL2RlY3J5cHRlcicpXG5leHBvcnRzLmNyZWF0ZURlY2lwaGVyID0gZXhwb3J0cy5EZWNpcGhlciA9IGRlY2lwaGVycy5jcmVhdGVEZWNpcGhlclxuZXhwb3J0cy5jcmVhdGVEZWNpcGhlcml2ID0gZXhwb3J0cy5EZWNpcGhlcml2ID0gZGVjaXBoZXJzLmNyZWF0ZURlY2lwaGVyaXZcbnZhciBtb2RlcyA9IHJlcXVpcmUoJy4vbW9kZXMnKVxuZnVuY3Rpb24gZ2V0Q2lwaGVycyAoKSB7XG4gIHJldHVybiBPYmplY3Qua2V5cyhtb2Rlcylcbn1cbmV4cG9ydHMubGlzdENpcGhlcnMgPSBleHBvcnRzLmdldENpcGhlcnMgPSBnZXRDaXBoZXJzXG4iLCJ2YXIgYWVzID0gcmVxdWlyZSgnLi9hZXMnKVxudmFyIFRyYW5zZm9ybSA9IHJlcXVpcmUoJ2NpcGhlci1iYXNlJylcbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJylcbnZhciBtb2RlcyA9IHJlcXVpcmUoJy4vbW9kZXMnKVxudmFyIFN0cmVhbUNpcGhlciA9IHJlcXVpcmUoJy4vc3RyZWFtQ2lwaGVyJylcbnZhciBBdXRoQ2lwaGVyID0gcmVxdWlyZSgnLi9hdXRoQ2lwaGVyJylcbnZhciBlYnRrID0gcmVxdWlyZSgnZXZwX2J5dGVzdG9rZXknKVxuXG5pbmhlcml0cyhEZWNpcGhlciwgVHJhbnNmb3JtKVxuZnVuY3Rpb24gRGVjaXBoZXIgKG1vZGUsIGtleSwgaXYpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIERlY2lwaGVyKSkge1xuICAgIHJldHVybiBuZXcgRGVjaXBoZXIobW9kZSwga2V5LCBpdilcbiAgfVxuICBUcmFuc2Zvcm0uY2FsbCh0aGlzKVxuICB0aGlzLl9jYWNoZSA9IG5ldyBTcGxpdHRlcigpXG4gIHRoaXMuX2xhc3QgPSB2b2lkIDBcbiAgdGhpcy5fY2lwaGVyID0gbmV3IGFlcy5BRVMoa2V5KVxuICB0aGlzLl9wcmV2ID0gbmV3IEJ1ZmZlcihpdi5sZW5ndGgpXG4gIGl2LmNvcHkodGhpcy5fcHJldilcbiAgdGhpcy5fbW9kZSA9IG1vZGVcbiAgdGhpcy5fYXV0b3BhZGRpbmcgPSB0cnVlXG59XG5EZWNpcGhlci5wcm90b3R5cGUuX3VwZGF0ZSA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gIHRoaXMuX2NhY2hlLmFkZChkYXRhKVxuICB2YXIgY2h1bmtcbiAgdmFyIHRoaW5nXG4gIHZhciBvdXQgPSBbXVxuICB3aGlsZSAoKGNodW5rID0gdGhpcy5fY2FjaGUuZ2V0KHRoaXMuX2F1dG9wYWRkaW5nKSkpIHtcbiAgICB0aGluZyA9IHRoaXMuX21vZGUuZGVjcnlwdCh0aGlzLCBjaHVuaylcbiAgICBvdXQucHVzaCh0aGluZylcbiAgfVxuICByZXR1cm4gQnVmZmVyLmNvbmNhdChvdXQpXG59XG5EZWNpcGhlci5wcm90b3R5cGUuX2ZpbmFsID0gZnVuY3Rpb24gKCkge1xuICB2YXIgY2h1bmsgPSB0aGlzLl9jYWNoZS5mbHVzaCgpXG4gIGlmICh0aGlzLl9hdXRvcGFkZGluZykge1xuICAgIHJldHVybiB1bnBhZCh0aGlzLl9tb2RlLmRlY3J5cHQodGhpcywgY2h1bmspKVxuICB9IGVsc2UgaWYgKGNodW5rKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdkYXRhIG5vdCBtdWx0aXBsZSBvZiBibG9jayBsZW5ndGgnKVxuICB9XG59XG5EZWNpcGhlci5wcm90b3R5cGUuc2V0QXV0b1BhZGRpbmcgPSBmdW5jdGlvbiAoc2V0VG8pIHtcbiAgdGhpcy5fYXV0b3BhZGRpbmcgPSAhIXNldFRvXG4gIHJldHVybiB0aGlzXG59XG5mdW5jdGlvbiBTcGxpdHRlciAoKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBTcGxpdHRlcikpIHtcbiAgICByZXR1cm4gbmV3IFNwbGl0dGVyKClcbiAgfVxuICB0aGlzLmNhY2hlID0gbmV3IEJ1ZmZlcignJylcbn1cblNwbGl0dGVyLnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiAoZGF0YSkge1xuICB0aGlzLmNhY2hlID0gQnVmZmVyLmNvbmNhdChbdGhpcy5jYWNoZSwgZGF0YV0pXG59XG5cblNwbGl0dGVyLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbiAoYXV0b1BhZGRpbmcpIHtcbiAgdmFyIG91dFxuICBpZiAoYXV0b1BhZGRpbmcpIHtcbiAgICBpZiAodGhpcy5jYWNoZS5sZW5ndGggPiAxNikge1xuICAgICAgb3V0ID0gdGhpcy5jYWNoZS5zbGljZSgwLCAxNilcbiAgICAgIHRoaXMuY2FjaGUgPSB0aGlzLmNhY2hlLnNsaWNlKDE2KVxuICAgICAgcmV0dXJuIG91dFxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBpZiAodGhpcy5jYWNoZS5sZW5ndGggPj0gMTYpIHtcbiAgICAgIG91dCA9IHRoaXMuY2FjaGUuc2xpY2UoMCwgMTYpXG4gICAgICB0aGlzLmNhY2hlID0gdGhpcy5jYWNoZS5zbGljZSgxNilcbiAgICAgIHJldHVybiBvdXRcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG51bGxcbn1cblNwbGl0dGVyLnByb3RvdHlwZS5mbHVzaCA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKHRoaXMuY2FjaGUubGVuZ3RoKSB7XG4gICAgcmV0dXJuIHRoaXMuY2FjaGVcbiAgfVxufVxuZnVuY3Rpb24gdW5wYWQgKGxhc3QpIHtcbiAgdmFyIHBhZGRlZCA9IGxhc3RbMTVdXG4gIHZhciBpID0gLTFcbiAgd2hpbGUgKCsraSA8IHBhZGRlZCkge1xuICAgIGlmIChsYXN0WyhpICsgKDE2IC0gcGFkZGVkKSldICE9PSBwYWRkZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigndW5hYmxlIHRvIGRlY3J5cHQgZGF0YScpXG4gICAgfVxuICB9XG4gIGlmIChwYWRkZWQgPT09IDE2KSB7XG4gICAgcmV0dXJuXG4gIH1cbiAgcmV0dXJuIGxhc3Quc2xpY2UoMCwgMTYgLSBwYWRkZWQpXG59XG5cbnZhciBtb2RlbGlzdCA9IHtcbiAgRUNCOiByZXF1aXJlKCcuL21vZGVzL2VjYicpLFxuICBDQkM6IHJlcXVpcmUoJy4vbW9kZXMvY2JjJyksXG4gIENGQjogcmVxdWlyZSgnLi9tb2Rlcy9jZmInKSxcbiAgQ0ZCODogcmVxdWlyZSgnLi9tb2Rlcy9jZmI4JyksXG4gIENGQjE6IHJlcXVpcmUoJy4vbW9kZXMvY2ZiMScpLFxuICBPRkI6IHJlcXVpcmUoJy4vbW9kZXMvb2ZiJyksXG4gIENUUjogcmVxdWlyZSgnLi9tb2Rlcy9jdHInKSxcbiAgR0NNOiByZXF1aXJlKCcuL21vZGVzL2N0cicpXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZURlY2lwaGVyaXYgKHN1aXRlLCBwYXNzd29yZCwgaXYpIHtcbiAgdmFyIGNvbmZpZyA9IG1vZGVzW3N1aXRlLnRvTG93ZXJDYXNlKCldXG4gIGlmICghY29uZmlnKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignaW52YWxpZCBzdWl0ZSB0eXBlJylcbiAgfVxuICBpZiAodHlwZW9mIGl2ID09PSAnc3RyaW5nJykge1xuICAgIGl2ID0gbmV3IEJ1ZmZlcihpdilcbiAgfVxuICBpZiAodHlwZW9mIHBhc3N3b3JkID09PSAnc3RyaW5nJykge1xuICAgIHBhc3N3b3JkID0gbmV3IEJ1ZmZlcihwYXNzd29yZClcbiAgfVxuICBpZiAocGFzc3dvcmQubGVuZ3RoICE9PSBjb25maWcua2V5IC8gOCkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2ludmFsaWQga2V5IGxlbmd0aCAnICsgcGFzc3dvcmQubGVuZ3RoKVxuICB9XG4gIGlmIChpdi5sZW5ndGggIT09IGNvbmZpZy5pdikge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2ludmFsaWQgaXYgbGVuZ3RoICcgKyBpdi5sZW5ndGgpXG4gIH1cbiAgaWYgKGNvbmZpZy50eXBlID09PSAnc3RyZWFtJykge1xuICAgIHJldHVybiBuZXcgU3RyZWFtQ2lwaGVyKG1vZGVsaXN0W2NvbmZpZy5tb2RlXSwgcGFzc3dvcmQsIGl2LCB0cnVlKVxuICB9IGVsc2UgaWYgKGNvbmZpZy50eXBlID09PSAnYXV0aCcpIHtcbiAgICByZXR1cm4gbmV3IEF1dGhDaXBoZXIobW9kZWxpc3RbY29uZmlnLm1vZGVdLCBwYXNzd29yZCwgaXYsIHRydWUpXG4gIH1cbiAgcmV0dXJuIG5ldyBEZWNpcGhlcihtb2RlbGlzdFtjb25maWcubW9kZV0sIHBhc3N3b3JkLCBpdilcbn1cblxuZnVuY3Rpb24gY3JlYXRlRGVjaXBoZXIgKHN1aXRlLCBwYXNzd29yZCkge1xuICB2YXIgY29uZmlnID0gbW9kZXNbc3VpdGUudG9Mb3dlckNhc2UoKV1cbiAgaWYgKCFjb25maWcpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdpbnZhbGlkIHN1aXRlIHR5cGUnKVxuICB9XG4gIHZhciBrZXlzID0gZWJ0ayhwYXNzd29yZCwgZmFsc2UsIGNvbmZpZy5rZXksIGNvbmZpZy5pdilcbiAgcmV0dXJuIGNyZWF0ZURlY2lwaGVyaXYoc3VpdGUsIGtleXMua2V5LCBrZXlzLml2KVxufVxuZXhwb3J0cy5jcmVhdGVEZWNpcGhlciA9IGNyZWF0ZURlY2lwaGVyXG5leHBvcnRzLmNyZWF0ZURlY2lwaGVyaXYgPSBjcmVhdGVEZWNpcGhlcml2XG4iLCJ2YXIgYWVzID0gcmVxdWlyZSgnLi9hZXMnKVxudmFyIFRyYW5zZm9ybSA9IHJlcXVpcmUoJ2NpcGhlci1iYXNlJylcbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJylcbnZhciBtb2RlcyA9IHJlcXVpcmUoJy4vbW9kZXMnKVxudmFyIGVidGsgPSByZXF1aXJlKCdldnBfYnl0ZXN0b2tleScpXG52YXIgU3RyZWFtQ2lwaGVyID0gcmVxdWlyZSgnLi9zdHJlYW1DaXBoZXInKVxudmFyIEF1dGhDaXBoZXIgPSByZXF1aXJlKCcuL2F1dGhDaXBoZXInKVxuaW5oZXJpdHMoQ2lwaGVyLCBUcmFuc2Zvcm0pXG5mdW5jdGlvbiBDaXBoZXIgKG1vZGUsIGtleSwgaXYpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIENpcGhlcikpIHtcbiAgICByZXR1cm4gbmV3IENpcGhlcihtb2RlLCBrZXksIGl2KVxuICB9XG4gIFRyYW5zZm9ybS5jYWxsKHRoaXMpXG4gIHRoaXMuX2NhY2hlID0gbmV3IFNwbGl0dGVyKClcbiAgdGhpcy5fY2lwaGVyID0gbmV3IGFlcy5BRVMoa2V5KVxuICB0aGlzLl9wcmV2ID0gbmV3IEJ1ZmZlcihpdi5sZW5ndGgpXG4gIGl2LmNvcHkodGhpcy5fcHJldilcbiAgdGhpcy5fbW9kZSA9IG1vZGVcbiAgdGhpcy5fYXV0b3BhZGRpbmcgPSB0cnVlXG59XG5DaXBoZXIucHJvdG90eXBlLl91cGRhdGUgPSBmdW5jdGlvbiAoZGF0YSkge1xuICB0aGlzLl9jYWNoZS5hZGQoZGF0YSlcbiAgdmFyIGNodW5rXG4gIHZhciB0aGluZ1xuICB2YXIgb3V0ID0gW11cbiAgd2hpbGUgKChjaHVuayA9IHRoaXMuX2NhY2hlLmdldCgpKSkge1xuICAgIHRoaW5nID0gdGhpcy5fbW9kZS5lbmNyeXB0KHRoaXMsIGNodW5rKVxuICAgIG91dC5wdXNoKHRoaW5nKVxuICB9XG4gIHJldHVybiBCdWZmZXIuY29uY2F0KG91dClcbn1cbkNpcGhlci5wcm90b3R5cGUuX2ZpbmFsID0gZnVuY3Rpb24gKCkge1xuICB2YXIgY2h1bmsgPSB0aGlzLl9jYWNoZS5mbHVzaCgpXG4gIGlmICh0aGlzLl9hdXRvcGFkZGluZykge1xuICAgIGNodW5rID0gdGhpcy5fbW9kZS5lbmNyeXB0KHRoaXMsIGNodW5rKVxuICAgIHRoaXMuX2NpcGhlci5zY3J1YigpXG4gICAgcmV0dXJuIGNodW5rXG4gIH0gZWxzZSBpZiAoY2h1bmsudG9TdHJpbmcoJ2hleCcpICE9PSAnMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAnKSB7XG4gICAgdGhpcy5fY2lwaGVyLnNjcnViKClcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2RhdGEgbm90IG11bHRpcGxlIG9mIGJsb2NrIGxlbmd0aCcpXG4gIH1cbn1cbkNpcGhlci5wcm90b3R5cGUuc2V0QXV0b1BhZGRpbmcgPSBmdW5jdGlvbiAoc2V0VG8pIHtcbiAgdGhpcy5fYXV0b3BhZGRpbmcgPSAhIXNldFRvXG4gIHJldHVybiB0aGlzXG59XG5cbmZ1bmN0aW9uIFNwbGl0dGVyICgpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFNwbGl0dGVyKSkge1xuICAgIHJldHVybiBuZXcgU3BsaXR0ZXIoKVxuICB9XG4gIHRoaXMuY2FjaGUgPSBuZXcgQnVmZmVyKCcnKVxufVxuU3BsaXR0ZXIucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gIHRoaXMuY2FjaGUgPSBCdWZmZXIuY29uY2F0KFt0aGlzLmNhY2hlLCBkYXRhXSlcbn1cblxuU3BsaXR0ZXIucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKHRoaXMuY2FjaGUubGVuZ3RoID4gMTUpIHtcbiAgICB2YXIgb3V0ID0gdGhpcy5jYWNoZS5zbGljZSgwLCAxNilcbiAgICB0aGlzLmNhY2hlID0gdGhpcy5jYWNoZS5zbGljZSgxNilcbiAgICByZXR1cm4gb3V0XG4gIH1cbiAgcmV0dXJuIG51bGxcbn1cblNwbGl0dGVyLnByb3RvdHlwZS5mbHVzaCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGxlbiA9IDE2IC0gdGhpcy5jYWNoZS5sZW5ndGhcbiAgdmFyIHBhZEJ1ZmYgPSBuZXcgQnVmZmVyKGxlbilcblxuICB2YXIgaSA9IC0xXG4gIHdoaWxlICgrK2kgPCBsZW4pIHtcbiAgICBwYWRCdWZmLndyaXRlVUludDgobGVuLCBpKVxuICB9XG4gIHZhciBvdXQgPSBCdWZmZXIuY29uY2F0KFt0aGlzLmNhY2hlLCBwYWRCdWZmXSlcbiAgcmV0dXJuIG91dFxufVxudmFyIG1vZGVsaXN0ID0ge1xuICBFQ0I6IHJlcXVpcmUoJy4vbW9kZXMvZWNiJyksXG4gIENCQzogcmVxdWlyZSgnLi9tb2Rlcy9jYmMnKSxcbiAgQ0ZCOiByZXF1aXJlKCcuL21vZGVzL2NmYicpLFxuICBDRkI4OiByZXF1aXJlKCcuL21vZGVzL2NmYjgnKSxcbiAgQ0ZCMTogcmVxdWlyZSgnLi9tb2Rlcy9jZmIxJyksXG4gIE9GQjogcmVxdWlyZSgnLi9tb2Rlcy9vZmInKSxcbiAgQ1RSOiByZXF1aXJlKCcuL21vZGVzL2N0cicpLFxuICBHQ006IHJlcXVpcmUoJy4vbW9kZXMvY3RyJylcbn1cblxuZnVuY3Rpb24gY3JlYXRlQ2lwaGVyaXYgKHN1aXRlLCBwYXNzd29yZCwgaXYpIHtcbiAgdmFyIGNvbmZpZyA9IG1vZGVzW3N1aXRlLnRvTG93ZXJDYXNlKCldXG4gIGlmICghY29uZmlnKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignaW52YWxpZCBzdWl0ZSB0eXBlJylcbiAgfVxuICBpZiAodHlwZW9mIGl2ID09PSAnc3RyaW5nJykge1xuICAgIGl2ID0gbmV3IEJ1ZmZlcihpdilcbiAgfVxuICBpZiAodHlwZW9mIHBhc3N3b3JkID09PSAnc3RyaW5nJykge1xuICAgIHBhc3N3b3JkID0gbmV3IEJ1ZmZlcihwYXNzd29yZClcbiAgfVxuICBpZiAocGFzc3dvcmQubGVuZ3RoICE9PSBjb25maWcua2V5IC8gOCkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2ludmFsaWQga2V5IGxlbmd0aCAnICsgcGFzc3dvcmQubGVuZ3RoKVxuICB9XG4gIGlmIChpdi5sZW5ndGggIT09IGNvbmZpZy5pdikge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2ludmFsaWQgaXYgbGVuZ3RoICcgKyBpdi5sZW5ndGgpXG4gIH1cbiAgaWYgKGNvbmZpZy50eXBlID09PSAnc3RyZWFtJykge1xuICAgIHJldHVybiBuZXcgU3RyZWFtQ2lwaGVyKG1vZGVsaXN0W2NvbmZpZy5tb2RlXSwgcGFzc3dvcmQsIGl2KVxuICB9IGVsc2UgaWYgKGNvbmZpZy50eXBlID09PSAnYXV0aCcpIHtcbiAgICByZXR1cm4gbmV3IEF1dGhDaXBoZXIobW9kZWxpc3RbY29uZmlnLm1vZGVdLCBwYXNzd29yZCwgaXYpXG4gIH1cbiAgcmV0dXJuIG5ldyBDaXBoZXIobW9kZWxpc3RbY29uZmlnLm1vZGVdLCBwYXNzd29yZCwgaXYpXG59XG5mdW5jdGlvbiBjcmVhdGVDaXBoZXIgKHN1aXRlLCBwYXNzd29yZCkge1xuICB2YXIgY29uZmlnID0gbW9kZXNbc3VpdGUudG9Mb3dlckNhc2UoKV1cbiAgaWYgKCFjb25maWcpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdpbnZhbGlkIHN1aXRlIHR5cGUnKVxuICB9XG4gIHZhciBrZXlzID0gZWJ0ayhwYXNzd29yZCwgZmFsc2UsIGNvbmZpZy5rZXksIGNvbmZpZy5pdilcbiAgcmV0dXJuIGNyZWF0ZUNpcGhlcml2KHN1aXRlLCBrZXlzLmtleSwga2V5cy5pdilcbn1cblxuZXhwb3J0cy5jcmVhdGVDaXBoZXJpdiA9IGNyZWF0ZUNpcGhlcml2XG5leHBvcnRzLmNyZWF0ZUNpcGhlciA9IGNyZWF0ZUNpcGhlclxuIiwidmFyIHplcm9zID0gbmV3IEJ1ZmZlcigxNilcbnplcm9zLmZpbGwoMClcbm1vZHVsZS5leHBvcnRzID0gR0hBU0hcbmZ1bmN0aW9uIEdIQVNIIChrZXkpIHtcbiAgdGhpcy5oID0ga2V5XG4gIHRoaXMuc3RhdGUgPSBuZXcgQnVmZmVyKDE2KVxuICB0aGlzLnN0YXRlLmZpbGwoMClcbiAgdGhpcy5jYWNoZSA9IG5ldyBCdWZmZXIoJycpXG59XG4vLyBmcm9tIGh0dHA6Ly9iaXR3aXNlc2hpZnRsZWZ0LmdpdGh1Yi5pby9zamNsL2RvYy9zeW1ib2xzL3NyYy9jb3JlX2djbS5qcy5odG1sXG4vLyBieSBKdWhvIFbDpGjDpC1IZXJ0dHVhXG5HSEFTSC5wcm90b3R5cGUuZ2hhc2ggPSBmdW5jdGlvbiAoYmxvY2spIHtcbiAgdmFyIGkgPSAtMVxuICB3aGlsZSAoKytpIDwgYmxvY2subGVuZ3RoKSB7XG4gICAgdGhpcy5zdGF0ZVtpXSBePSBibG9ja1tpXVxuICB9XG4gIHRoaXMuX211bHRpcGx5KClcbn1cblxuR0hBU0gucHJvdG90eXBlLl9tdWx0aXBseSA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIFZpID0gdG9BcnJheSh0aGlzLmgpXG4gIHZhciBaaSA9IFswLCAwLCAwLCAwXVxuICB2YXIgaiwgeGksIGxzYl9WaVxuICB2YXIgaSA9IC0xXG4gIHdoaWxlICgrK2kgPCAxMjgpIHtcbiAgICB4aSA9ICh0aGlzLnN0YXRlW35+KGkgLyA4KV0gJiAoMSA8PCAoNyAtIGkgJSA4KSkpICE9PSAwXG4gICAgaWYgKHhpKSB7XG4gICAgICAvLyBaX2krMSA9IFpfaSBeIFZfaVxuICAgICAgWmkgPSB4b3IoWmksIFZpKVxuICAgIH1cblxuICAgIC8vIFN0b3JlIHRoZSB2YWx1ZSBvZiBMU0IoVl9pKVxuICAgIGxzYl9WaSA9IChWaVszXSAmIDEpICE9PSAwXG5cbiAgICAvLyBWX2krMSA9IFZfaSA+PiAxXG4gICAgZm9yIChqID0gMzsgaiA+IDA7IGotLSkge1xuICAgICAgVmlbal0gPSAoVmlbal0gPj4+IDEpIHwgKChWaVtqIC0gMV0gJiAxKSA8PCAzMSlcbiAgICB9XG4gICAgVmlbMF0gPSBWaVswXSA+Pj4gMVxuXG4gICAgLy8gSWYgTFNCKFZfaSkgaXMgMSwgVl9pKzEgPSAoVl9pID4+IDEpIF4gUlxuICAgIGlmIChsc2JfVmkpIHtcbiAgICAgIFZpWzBdID0gVmlbMF0gXiAoMHhlMSA8PCAyNClcbiAgICB9XG4gIH1cbiAgdGhpcy5zdGF0ZSA9IGZyb21BcnJheShaaSlcbn1cbkdIQVNILnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiAoYnVmKSB7XG4gIHRoaXMuY2FjaGUgPSBCdWZmZXIuY29uY2F0KFt0aGlzLmNhY2hlLCBidWZdKVxuICB2YXIgY2h1bmtcbiAgd2hpbGUgKHRoaXMuY2FjaGUubGVuZ3RoID49IDE2KSB7XG4gICAgY2h1bmsgPSB0aGlzLmNhY2hlLnNsaWNlKDAsIDE2KVxuICAgIHRoaXMuY2FjaGUgPSB0aGlzLmNhY2hlLnNsaWNlKDE2KVxuICAgIHRoaXMuZ2hhc2goY2h1bmspXG4gIH1cbn1cbkdIQVNILnByb3RvdHlwZS5maW5hbCA9IGZ1bmN0aW9uIChhYmwsIGJsKSB7XG4gIGlmICh0aGlzLmNhY2hlLmxlbmd0aCkge1xuICAgIHRoaXMuZ2hhc2goQnVmZmVyLmNvbmNhdChbdGhpcy5jYWNoZSwgemVyb3NdLCAxNikpXG4gIH1cbiAgdGhpcy5naGFzaChmcm9tQXJyYXkoW1xuICAgIDAsIGFibCxcbiAgICAwLCBibFxuICBdKSlcbiAgcmV0dXJuIHRoaXMuc3RhdGVcbn1cblxuZnVuY3Rpb24gdG9BcnJheSAoYnVmKSB7XG4gIHJldHVybiBbXG4gICAgYnVmLnJlYWRVSW50MzJCRSgwKSxcbiAgICBidWYucmVhZFVJbnQzMkJFKDQpLFxuICAgIGJ1Zi5yZWFkVUludDMyQkUoOCksXG4gICAgYnVmLnJlYWRVSW50MzJCRSgxMilcbiAgXVxufVxuZnVuY3Rpb24gZnJvbUFycmF5IChvdXQpIHtcbiAgb3V0ID0gb3V0Lm1hcChmaXh1cF91aW50MzIpXG4gIHZhciBidWYgPSBuZXcgQnVmZmVyKDE2KVxuICBidWYud3JpdGVVSW50MzJCRShvdXRbMF0sIDApXG4gIGJ1Zi53cml0ZVVJbnQzMkJFKG91dFsxXSwgNClcbiAgYnVmLndyaXRlVUludDMyQkUob3V0WzJdLCA4KVxuICBidWYud3JpdGVVSW50MzJCRShvdXRbM10sIDEyKVxuICByZXR1cm4gYnVmXG59XG52YXIgdWludF9tYXggPSBNYXRoLnBvdygyLCAzMilcbmZ1bmN0aW9uIGZpeHVwX3VpbnQzMiAoeCkge1xuICB2YXIgcmV0LCB4X3Bvc1xuICByZXQgPSB4ID4gdWludF9tYXggfHwgeCA8IDAgPyAoeF9wb3MgPSBNYXRoLmFicyh4KSAlIHVpbnRfbWF4LCB4IDwgMCA/IHVpbnRfbWF4IC0geF9wb3MgOiB4X3BvcykgOiB4XG4gIHJldHVybiByZXRcbn1cbmZ1bmN0aW9uIHhvciAoYSwgYikge1xuICByZXR1cm4gW1xuICAgIGFbMF0gXiBiWzBdLFxuICAgIGFbMV0gXiBiWzFdLFxuICAgIGFbMl0gXiBiWzJdLFxuICAgIGFbM10gXiBiWzNdXG4gIF1cbn1cbiIsImV4cG9ydHNbJ2Flcy0xMjgtZWNiJ10gPSB7XG4gIGNpcGhlcjogJ0FFUycsXG4gIGtleTogMTI4LFxuICBpdjogMCxcbiAgbW9kZTogJ0VDQicsXG4gIHR5cGU6ICdibG9jaydcbn1cbmV4cG9ydHNbJ2Flcy0xOTItZWNiJ10gPSB7XG4gIGNpcGhlcjogJ0FFUycsXG4gIGtleTogMTkyLFxuICBpdjogMCxcbiAgbW9kZTogJ0VDQicsXG4gIHR5cGU6ICdibG9jaydcbn1cbmV4cG9ydHNbJ2Flcy0yNTYtZWNiJ10gPSB7XG4gIGNpcGhlcjogJ0FFUycsXG4gIGtleTogMjU2LFxuICBpdjogMCxcbiAgbW9kZTogJ0VDQicsXG4gIHR5cGU6ICdibG9jaydcbn1cbmV4cG9ydHNbJ2Flcy0xMjgtY2JjJ10gPSB7XG4gIGNpcGhlcjogJ0FFUycsXG4gIGtleTogMTI4LFxuICBpdjogMTYsXG4gIG1vZGU6ICdDQkMnLFxuICB0eXBlOiAnYmxvY2snXG59XG5leHBvcnRzWydhZXMtMTkyLWNiYyddID0ge1xuICBjaXBoZXI6ICdBRVMnLFxuICBrZXk6IDE5MixcbiAgaXY6IDE2LFxuICBtb2RlOiAnQ0JDJyxcbiAgdHlwZTogJ2Jsb2NrJ1xufVxuZXhwb3J0c1snYWVzLTI1Ni1jYmMnXSA9IHtcbiAgY2lwaGVyOiAnQUVTJyxcbiAga2V5OiAyNTYsXG4gIGl2OiAxNixcbiAgbW9kZTogJ0NCQycsXG4gIHR5cGU6ICdibG9jaydcbn1cbmV4cG9ydHNbJ2FlczEyOCddID0gZXhwb3J0c1snYWVzLTEyOC1jYmMnXVxuZXhwb3J0c1snYWVzMTkyJ10gPSBleHBvcnRzWydhZXMtMTkyLWNiYyddXG5leHBvcnRzWydhZXMyNTYnXSA9IGV4cG9ydHNbJ2Flcy0yNTYtY2JjJ11cbmV4cG9ydHNbJ2Flcy0xMjgtY2ZiJ10gPSB7XG4gIGNpcGhlcjogJ0FFUycsXG4gIGtleTogMTI4LFxuICBpdjogMTYsXG4gIG1vZGU6ICdDRkInLFxuICB0eXBlOiAnc3RyZWFtJ1xufVxuZXhwb3J0c1snYWVzLTE5Mi1jZmInXSA9IHtcbiAgY2lwaGVyOiAnQUVTJyxcbiAga2V5OiAxOTIsXG4gIGl2OiAxNixcbiAgbW9kZTogJ0NGQicsXG4gIHR5cGU6ICdzdHJlYW0nXG59XG5leHBvcnRzWydhZXMtMjU2LWNmYiddID0ge1xuICBjaXBoZXI6ICdBRVMnLFxuICBrZXk6IDI1NixcbiAgaXY6IDE2LFxuICBtb2RlOiAnQ0ZCJyxcbiAgdHlwZTogJ3N0cmVhbSdcbn1cbmV4cG9ydHNbJ2Flcy0xMjgtY2ZiOCddID0ge1xuICBjaXBoZXI6ICdBRVMnLFxuICBrZXk6IDEyOCxcbiAgaXY6IDE2LFxuICBtb2RlOiAnQ0ZCOCcsXG4gIHR5cGU6ICdzdHJlYW0nXG59XG5leHBvcnRzWydhZXMtMTkyLWNmYjgnXSA9IHtcbiAgY2lwaGVyOiAnQUVTJyxcbiAga2V5OiAxOTIsXG4gIGl2OiAxNixcbiAgbW9kZTogJ0NGQjgnLFxuICB0eXBlOiAnc3RyZWFtJ1xufVxuZXhwb3J0c1snYWVzLTI1Ni1jZmI4J10gPSB7XG4gIGNpcGhlcjogJ0FFUycsXG4gIGtleTogMjU2LFxuICBpdjogMTYsXG4gIG1vZGU6ICdDRkI4JyxcbiAgdHlwZTogJ3N0cmVhbSdcbn1cbmV4cG9ydHNbJ2Flcy0xMjgtY2ZiMSddID0ge1xuICBjaXBoZXI6ICdBRVMnLFxuICBrZXk6IDEyOCxcbiAgaXY6IDE2LFxuICBtb2RlOiAnQ0ZCMScsXG4gIHR5cGU6ICdzdHJlYW0nXG59XG5leHBvcnRzWydhZXMtMTkyLWNmYjEnXSA9IHtcbiAgY2lwaGVyOiAnQUVTJyxcbiAga2V5OiAxOTIsXG4gIGl2OiAxNixcbiAgbW9kZTogJ0NGQjEnLFxuICB0eXBlOiAnc3RyZWFtJ1xufVxuZXhwb3J0c1snYWVzLTI1Ni1jZmIxJ10gPSB7XG4gIGNpcGhlcjogJ0FFUycsXG4gIGtleTogMjU2LFxuICBpdjogMTYsXG4gIG1vZGU6ICdDRkIxJyxcbiAgdHlwZTogJ3N0cmVhbSdcbn1cbmV4cG9ydHNbJ2Flcy0xMjgtb2ZiJ10gPSB7XG4gIGNpcGhlcjogJ0FFUycsXG4gIGtleTogMTI4LFxuICBpdjogMTYsXG4gIG1vZGU6ICdPRkInLFxuICB0eXBlOiAnc3RyZWFtJ1xufVxuZXhwb3J0c1snYWVzLTE5Mi1vZmInXSA9IHtcbiAgY2lwaGVyOiAnQUVTJyxcbiAga2V5OiAxOTIsXG4gIGl2OiAxNixcbiAgbW9kZTogJ09GQicsXG4gIHR5cGU6ICdzdHJlYW0nXG59XG5leHBvcnRzWydhZXMtMjU2LW9mYiddID0ge1xuICBjaXBoZXI6ICdBRVMnLFxuICBrZXk6IDI1NixcbiAgaXY6IDE2LFxuICBtb2RlOiAnT0ZCJyxcbiAgdHlwZTogJ3N0cmVhbSdcbn1cbmV4cG9ydHNbJ2Flcy0xMjgtY3RyJ10gPSB7XG4gIGNpcGhlcjogJ0FFUycsXG4gIGtleTogMTI4LFxuICBpdjogMTYsXG4gIG1vZGU6ICdDVFInLFxuICB0eXBlOiAnc3RyZWFtJ1xufVxuZXhwb3J0c1snYWVzLTE5Mi1jdHInXSA9IHtcbiAgY2lwaGVyOiAnQUVTJyxcbiAga2V5OiAxOTIsXG4gIGl2OiAxNixcbiAgbW9kZTogJ0NUUicsXG4gIHR5cGU6ICdzdHJlYW0nXG59XG5leHBvcnRzWydhZXMtMjU2LWN0ciddID0ge1xuICBjaXBoZXI6ICdBRVMnLFxuICBrZXk6IDI1NixcbiAgaXY6IDE2LFxuICBtb2RlOiAnQ1RSJyxcbiAgdHlwZTogJ3N0cmVhbSdcbn1cbmV4cG9ydHNbJ2Flcy0xMjgtZ2NtJ10gPSB7XG4gIGNpcGhlcjogJ0FFUycsXG4gIGtleTogMTI4LFxuICBpdjogMTIsXG4gIG1vZGU6ICdHQ00nLFxuICB0eXBlOiAnYXV0aCdcbn1cbmV4cG9ydHNbJ2Flcy0xOTItZ2NtJ10gPSB7XG4gIGNpcGhlcjogJ0FFUycsXG4gIGtleTogMTkyLFxuICBpdjogMTIsXG4gIG1vZGU6ICdHQ00nLFxuICB0eXBlOiAnYXV0aCdcbn1cbmV4cG9ydHNbJ2Flcy0yNTYtZ2NtJ10gPSB7XG4gIGNpcGhlcjogJ0FFUycsXG4gIGtleTogMjU2LFxuICBpdjogMTIsXG4gIG1vZGU6ICdHQ00nLFxuICB0eXBlOiAnYXV0aCdcbn1cbiIsInZhciB4b3IgPSByZXF1aXJlKCdidWZmZXIteG9yJylcblxuZXhwb3J0cy5lbmNyeXB0ID0gZnVuY3Rpb24gKHNlbGYsIGJsb2NrKSB7XG4gIHZhciBkYXRhID0geG9yKGJsb2NrLCBzZWxmLl9wcmV2KVxuXG4gIHNlbGYuX3ByZXYgPSBzZWxmLl9jaXBoZXIuZW5jcnlwdEJsb2NrKGRhdGEpXG4gIHJldHVybiBzZWxmLl9wcmV2XG59XG5cbmV4cG9ydHMuZGVjcnlwdCA9IGZ1bmN0aW9uIChzZWxmLCBibG9jaykge1xuICB2YXIgcGFkID0gc2VsZi5fcHJldlxuXG4gIHNlbGYuX3ByZXYgPSBibG9ja1xuICB2YXIgb3V0ID0gc2VsZi5fY2lwaGVyLmRlY3J5cHRCbG9jayhibG9jaylcblxuICByZXR1cm4geG9yKG91dCwgcGFkKVxufVxuIiwidmFyIHhvciA9IHJlcXVpcmUoJ2J1ZmZlci14b3InKVxuXG5leHBvcnRzLmVuY3J5cHQgPSBmdW5jdGlvbiAoc2VsZiwgZGF0YSwgZGVjcnlwdCkge1xuICB2YXIgb3V0ID0gbmV3IEJ1ZmZlcignJylcbiAgdmFyIGxlblxuXG4gIHdoaWxlIChkYXRhLmxlbmd0aCkge1xuICAgIGlmIChzZWxmLl9jYWNoZS5sZW5ndGggPT09IDApIHtcbiAgICAgIHNlbGYuX2NhY2hlID0gc2VsZi5fY2lwaGVyLmVuY3J5cHRCbG9jayhzZWxmLl9wcmV2KVxuICAgICAgc2VsZi5fcHJldiA9IG5ldyBCdWZmZXIoJycpXG4gICAgfVxuXG4gICAgaWYgKHNlbGYuX2NhY2hlLmxlbmd0aCA8PSBkYXRhLmxlbmd0aCkge1xuICAgICAgbGVuID0gc2VsZi5fY2FjaGUubGVuZ3RoXG4gICAgICBvdXQgPSBCdWZmZXIuY29uY2F0KFtvdXQsIGVuY3J5cHRTdGFydChzZWxmLCBkYXRhLnNsaWNlKDAsIGxlbiksIGRlY3J5cHQpXSlcbiAgICAgIGRhdGEgPSBkYXRhLnNsaWNlKGxlbilcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0ID0gQnVmZmVyLmNvbmNhdChbb3V0LCBlbmNyeXB0U3RhcnQoc2VsZiwgZGF0YSwgZGVjcnlwdCldKVxuICAgICAgYnJlYWtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gb3V0XG59XG5mdW5jdGlvbiBlbmNyeXB0U3RhcnQgKHNlbGYsIGRhdGEsIGRlY3J5cHQpIHtcbiAgdmFyIGxlbiA9IGRhdGEubGVuZ3RoXG4gIHZhciBvdXQgPSB4b3IoZGF0YSwgc2VsZi5fY2FjaGUpXG4gIHNlbGYuX2NhY2hlID0gc2VsZi5fY2FjaGUuc2xpY2UobGVuKVxuICBzZWxmLl9wcmV2ID0gQnVmZmVyLmNvbmNhdChbc2VsZi5fcHJldiwgZGVjcnlwdCA/IGRhdGEgOiBvdXRdKVxuICByZXR1cm4gb3V0XG59XG4iLCJmdW5jdGlvbiBlbmNyeXB0Qnl0ZSAoc2VsZiwgYnl0ZVBhcmFtLCBkZWNyeXB0KSB7XG4gIHZhciBwYWRcbiAgdmFyIGkgPSAtMVxuICB2YXIgbGVuID0gOFxuICB2YXIgb3V0ID0gMFxuICB2YXIgYml0LCB2YWx1ZVxuICB3aGlsZSAoKytpIDwgbGVuKSB7XG4gICAgcGFkID0gc2VsZi5fY2lwaGVyLmVuY3J5cHRCbG9jayhzZWxmLl9wcmV2KVxuICAgIGJpdCA9IChieXRlUGFyYW0gJiAoMSA8PCAoNyAtIGkpKSkgPyAweDgwIDogMFxuICAgIHZhbHVlID0gcGFkWzBdIF4gYml0XG4gICAgb3V0ICs9ICgodmFsdWUgJiAweDgwKSA+PiAoaSAlIDgpKVxuICAgIHNlbGYuX3ByZXYgPSBzaGlmdEluKHNlbGYuX3ByZXYsIGRlY3J5cHQgPyBiaXQgOiB2YWx1ZSlcbiAgfVxuICByZXR1cm4gb3V0XG59XG5leHBvcnRzLmVuY3J5cHQgPSBmdW5jdGlvbiAoc2VsZiwgY2h1bmssIGRlY3J5cHQpIHtcbiAgdmFyIGxlbiA9IGNodW5rLmxlbmd0aFxuICB2YXIgb3V0ID0gbmV3IEJ1ZmZlcihsZW4pXG4gIHZhciBpID0gLTFcbiAgd2hpbGUgKCsraSA8IGxlbikge1xuICAgIG91dFtpXSA9IGVuY3J5cHRCeXRlKHNlbGYsIGNodW5rW2ldLCBkZWNyeXB0KVxuICB9XG4gIHJldHVybiBvdXRcbn1cbmZ1bmN0aW9uIHNoaWZ0SW4gKGJ1ZmZlciwgdmFsdWUpIHtcbiAgdmFyIGxlbiA9IGJ1ZmZlci5sZW5ndGhcbiAgdmFyIGkgPSAtMVxuICB2YXIgb3V0ID0gbmV3IEJ1ZmZlcihidWZmZXIubGVuZ3RoKVxuICBidWZmZXIgPSBCdWZmZXIuY29uY2F0KFtidWZmZXIsIG5ldyBCdWZmZXIoW3ZhbHVlXSldKVxuICB3aGlsZSAoKytpIDwgbGVuKSB7XG4gICAgb3V0W2ldID0gYnVmZmVyW2ldIDw8IDEgfCBidWZmZXJbaSArIDFdID4+ICg3KVxuICB9XG4gIHJldHVybiBvdXRcbn1cbiIsImZ1bmN0aW9uIGVuY3J5cHRCeXRlIChzZWxmLCBieXRlUGFyYW0sIGRlY3J5cHQpIHtcbiAgdmFyIHBhZCA9IHNlbGYuX2NpcGhlci5lbmNyeXB0QmxvY2soc2VsZi5fcHJldilcbiAgdmFyIG91dCA9IHBhZFswXSBeIGJ5dGVQYXJhbVxuICBzZWxmLl9wcmV2ID0gQnVmZmVyLmNvbmNhdChbc2VsZi5fcHJldi5zbGljZSgxKSwgbmV3IEJ1ZmZlcihbZGVjcnlwdCA/IGJ5dGVQYXJhbSA6IG91dF0pXSlcbiAgcmV0dXJuIG91dFxufVxuZXhwb3J0cy5lbmNyeXB0ID0gZnVuY3Rpb24gKHNlbGYsIGNodW5rLCBkZWNyeXB0KSB7XG4gIHZhciBsZW4gPSBjaHVuay5sZW5ndGhcbiAgdmFyIG91dCA9IG5ldyBCdWZmZXIobGVuKVxuICB2YXIgaSA9IC0xXG4gIHdoaWxlICgrK2kgPCBsZW4pIHtcbiAgICBvdXRbaV0gPSBlbmNyeXB0Qnl0ZShzZWxmLCBjaHVua1tpXSwgZGVjcnlwdClcbiAgfVxuICByZXR1cm4gb3V0XG59XG4iLCJ2YXIgeG9yID0gcmVxdWlyZSgnYnVmZmVyLXhvcicpXG5cbmZ1bmN0aW9uIGluY3IzMiAoaXYpIHtcbiAgdmFyIGxlbiA9IGl2Lmxlbmd0aFxuICB2YXIgaXRlbVxuICB3aGlsZSAobGVuLS0pIHtcbiAgICBpdGVtID0gaXYucmVhZFVJbnQ4KGxlbilcbiAgICBpZiAoaXRlbSA9PT0gMjU1KSB7XG4gICAgICBpdi53cml0ZVVJbnQ4KDAsIGxlbilcbiAgICB9IGVsc2Uge1xuICAgICAgaXRlbSsrXG4gICAgICBpdi53cml0ZVVJbnQ4KGl0ZW0sIGxlbilcbiAgICAgIGJyZWFrXG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGdldEJsb2NrIChzZWxmKSB7XG4gIHZhciBvdXQgPSBzZWxmLl9jaXBoZXIuZW5jcnlwdEJsb2NrKHNlbGYuX3ByZXYpXG4gIGluY3IzMihzZWxmLl9wcmV2KVxuICByZXR1cm4gb3V0XG59XG5cbmV4cG9ydHMuZW5jcnlwdCA9IGZ1bmN0aW9uIChzZWxmLCBjaHVuaykge1xuICB3aGlsZSAoc2VsZi5fY2FjaGUubGVuZ3RoIDwgY2h1bmsubGVuZ3RoKSB7XG4gICAgc2VsZi5fY2FjaGUgPSBCdWZmZXIuY29uY2F0KFtzZWxmLl9jYWNoZSwgZ2V0QmxvY2soc2VsZildKVxuICB9XG4gIHZhciBwYWQgPSBzZWxmLl9jYWNoZS5zbGljZSgwLCBjaHVuay5sZW5ndGgpXG4gIHNlbGYuX2NhY2hlID0gc2VsZi5fY2FjaGUuc2xpY2UoY2h1bmsubGVuZ3RoKVxuICByZXR1cm4geG9yKGNodW5rLCBwYWQpXG59XG4iLCJleHBvcnRzLmVuY3J5cHQgPSBmdW5jdGlvbiAoc2VsZiwgYmxvY2spIHtcbiAgcmV0dXJuIHNlbGYuX2NpcGhlci5lbmNyeXB0QmxvY2soYmxvY2spXG59XG5leHBvcnRzLmRlY3J5cHQgPSBmdW5jdGlvbiAoc2VsZiwgYmxvY2spIHtcbiAgcmV0dXJuIHNlbGYuX2NpcGhlci5kZWNyeXB0QmxvY2soYmxvY2spXG59XG4iLCJ2YXIgeG9yID0gcmVxdWlyZSgnYnVmZmVyLXhvcicpXG5cbmZ1bmN0aW9uIGdldEJsb2NrIChzZWxmKSB7XG4gIHNlbGYuX3ByZXYgPSBzZWxmLl9jaXBoZXIuZW5jcnlwdEJsb2NrKHNlbGYuX3ByZXYpXG4gIHJldHVybiBzZWxmLl9wcmV2XG59XG5cbmV4cG9ydHMuZW5jcnlwdCA9IGZ1bmN0aW9uIChzZWxmLCBjaHVuaykge1xuICB3aGlsZSAoc2VsZi5fY2FjaGUubGVuZ3RoIDwgY2h1bmsubGVuZ3RoKSB7XG4gICAgc2VsZi5fY2FjaGUgPSBCdWZmZXIuY29uY2F0KFtzZWxmLl9jYWNoZSwgZ2V0QmxvY2soc2VsZildKVxuICB9XG5cbiAgdmFyIHBhZCA9IHNlbGYuX2NhY2hlLnNsaWNlKDAsIGNodW5rLmxlbmd0aClcbiAgc2VsZi5fY2FjaGUgPSBzZWxmLl9jYWNoZS5zbGljZShjaHVuay5sZW5ndGgpXG4gIHJldHVybiB4b3IoY2h1bmssIHBhZClcbn1cbiIsInZhciBhZXMgPSByZXF1aXJlKCcuL2FlcycpXG52YXIgVHJhbnNmb3JtID0gcmVxdWlyZSgnY2lwaGVyLWJhc2UnKVxudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKVxuXG5pbmhlcml0cyhTdHJlYW1DaXBoZXIsIFRyYW5zZm9ybSlcbm1vZHVsZS5leHBvcnRzID0gU3RyZWFtQ2lwaGVyXG5mdW5jdGlvbiBTdHJlYW1DaXBoZXIgKG1vZGUsIGtleSwgaXYsIGRlY3J5cHQpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFN0cmVhbUNpcGhlcikpIHtcbiAgICByZXR1cm4gbmV3IFN0cmVhbUNpcGhlcihtb2RlLCBrZXksIGl2KVxuICB9XG4gIFRyYW5zZm9ybS5jYWxsKHRoaXMpXG4gIHRoaXMuX2NpcGhlciA9IG5ldyBhZXMuQUVTKGtleSlcbiAgdGhpcy5fcHJldiA9IG5ldyBCdWZmZXIoaXYubGVuZ3RoKVxuICB0aGlzLl9jYWNoZSA9IG5ldyBCdWZmZXIoJycpXG4gIHRoaXMuX3NlY0NhY2hlID0gbmV3IEJ1ZmZlcignJylcbiAgdGhpcy5fZGVjcnlwdCA9IGRlY3J5cHRcbiAgaXYuY29weSh0aGlzLl9wcmV2KVxuICB0aGlzLl9tb2RlID0gbW9kZVxufVxuU3RyZWFtQ2lwaGVyLnByb3RvdHlwZS5fdXBkYXRlID0gZnVuY3Rpb24gKGNodW5rKSB7XG4gIHJldHVybiB0aGlzLl9tb2RlLmVuY3J5cHQodGhpcywgY2h1bmssIHRoaXMuX2RlY3J5cHQpXG59XG5TdHJlYW1DaXBoZXIucHJvdG90eXBlLl9maW5hbCA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5fY2lwaGVyLnNjcnViKClcbn1cbiIsInZhciBlYnRrID0gcmVxdWlyZSgnZXZwX2J5dGVzdG9rZXknKVxudmFyIGFlcyA9IHJlcXVpcmUoJ2Jyb3dzZXJpZnktYWVzL2Jyb3dzZXInKVxudmFyIERFUyA9IHJlcXVpcmUoJ2Jyb3dzZXJpZnktZGVzJylcbnZhciBkZXNNb2RlcyA9IHJlcXVpcmUoJ2Jyb3dzZXJpZnktZGVzL21vZGVzJylcbnZhciBhZXNNb2RlcyA9IHJlcXVpcmUoJ2Jyb3dzZXJpZnktYWVzL21vZGVzJylcbmZ1bmN0aW9uIGNyZWF0ZUNpcGhlciAoc3VpdGUsIHBhc3N3b3JkKSB7XG4gIHZhciBrZXlMZW4sIGl2TGVuXG4gIHN1aXRlID0gc3VpdGUudG9Mb3dlckNhc2UoKVxuICBpZiAoYWVzTW9kZXNbc3VpdGVdKSB7XG4gICAga2V5TGVuID0gYWVzTW9kZXNbc3VpdGVdLmtleVxuICAgIGl2TGVuID0gYWVzTW9kZXNbc3VpdGVdLml2XG4gIH0gZWxzZSBpZiAoZGVzTW9kZXNbc3VpdGVdKSB7XG4gICAga2V5TGVuID0gZGVzTW9kZXNbc3VpdGVdLmtleSAqIDhcbiAgICBpdkxlbiA9IGRlc01vZGVzW3N1aXRlXS5pdlxuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2ludmFsaWQgc3VpdGUgdHlwZScpXG4gIH1cbiAgdmFyIGtleXMgPSBlYnRrKHBhc3N3b3JkLCBmYWxzZSwga2V5TGVuLCBpdkxlbilcbiAgcmV0dXJuIGNyZWF0ZUNpcGhlcml2KHN1aXRlLCBrZXlzLmtleSwga2V5cy5pdilcbn1cbmZ1bmN0aW9uIGNyZWF0ZURlY2lwaGVyIChzdWl0ZSwgcGFzc3dvcmQpIHtcbiAgdmFyIGtleUxlbiwgaXZMZW5cbiAgc3VpdGUgPSBzdWl0ZS50b0xvd2VyQ2FzZSgpXG4gIGlmIChhZXNNb2Rlc1tzdWl0ZV0pIHtcbiAgICBrZXlMZW4gPSBhZXNNb2Rlc1tzdWl0ZV0ua2V5XG4gICAgaXZMZW4gPSBhZXNNb2Rlc1tzdWl0ZV0uaXZcbiAgfSBlbHNlIGlmIChkZXNNb2Rlc1tzdWl0ZV0pIHtcbiAgICBrZXlMZW4gPSBkZXNNb2Rlc1tzdWl0ZV0ua2V5ICogOFxuICAgIGl2TGVuID0gZGVzTW9kZXNbc3VpdGVdLml2XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignaW52YWxpZCBzdWl0ZSB0eXBlJylcbiAgfVxuICB2YXIga2V5cyA9IGVidGsocGFzc3dvcmQsIGZhbHNlLCBrZXlMZW4sIGl2TGVuKVxuICByZXR1cm4gY3JlYXRlRGVjaXBoZXJpdihzdWl0ZSwga2V5cy5rZXksIGtleXMuaXYpXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUNpcGhlcml2IChzdWl0ZSwga2V5LCBpdikge1xuICBzdWl0ZSA9IHN1aXRlLnRvTG93ZXJDYXNlKClcbiAgaWYgKGFlc01vZGVzW3N1aXRlXSkge1xuICAgIHJldHVybiBhZXMuY3JlYXRlQ2lwaGVyaXYoc3VpdGUsIGtleSwgaXYpXG4gIH0gZWxzZSBpZiAoZGVzTW9kZXNbc3VpdGVdKSB7XG4gICAgcmV0dXJuIG5ldyBERVMoe1xuICAgICAga2V5OiBrZXksXG4gICAgICBpdjogaXYsXG4gICAgICBtb2RlOiBzdWl0ZVxuICAgIH0pXG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignaW52YWxpZCBzdWl0ZSB0eXBlJylcbiAgfVxufVxuZnVuY3Rpb24gY3JlYXRlRGVjaXBoZXJpdiAoc3VpdGUsIGtleSwgaXYpIHtcbiAgc3VpdGUgPSBzdWl0ZS50b0xvd2VyQ2FzZSgpXG4gIGlmIChhZXNNb2Rlc1tzdWl0ZV0pIHtcbiAgICByZXR1cm4gYWVzLmNyZWF0ZURlY2lwaGVyaXYoc3VpdGUsIGtleSwgaXYpXG4gIH0gZWxzZSBpZiAoZGVzTW9kZXNbc3VpdGVdKSB7XG4gICAgcmV0dXJuIG5ldyBERVMoe1xuICAgICAga2V5OiBrZXksXG4gICAgICBpdjogaXYsXG4gICAgICBtb2RlOiBzdWl0ZSxcbiAgICAgIGRlY3J5cHQ6IHRydWVcbiAgICB9KVxuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2ludmFsaWQgc3VpdGUgdHlwZScpXG4gIH1cbn1cbmV4cG9ydHMuY3JlYXRlQ2lwaGVyID0gZXhwb3J0cy5DaXBoZXIgPSBjcmVhdGVDaXBoZXJcbmV4cG9ydHMuY3JlYXRlQ2lwaGVyaXYgPSBleHBvcnRzLkNpcGhlcml2ID0gY3JlYXRlQ2lwaGVyaXZcbmV4cG9ydHMuY3JlYXRlRGVjaXBoZXIgPSBleHBvcnRzLkRlY2lwaGVyID0gY3JlYXRlRGVjaXBoZXJcbmV4cG9ydHMuY3JlYXRlRGVjaXBoZXJpdiA9IGV4cG9ydHMuRGVjaXBoZXJpdiA9IGNyZWF0ZURlY2lwaGVyaXZcbmZ1bmN0aW9uIGdldENpcGhlcnMgKCkge1xuICByZXR1cm4gT2JqZWN0LmtleXMoZGVzTW9kZXMpLmNvbmNhdChhZXMuZ2V0Q2lwaGVycygpKVxufVxuZXhwb3J0cy5saXN0Q2lwaGVycyA9IGV4cG9ydHMuZ2V0Q2lwaGVycyA9IGdldENpcGhlcnNcbiIsInZhciBDaXBoZXJCYXNlID0gcmVxdWlyZSgnY2lwaGVyLWJhc2UnKVxudmFyIGRlcyA9IHJlcXVpcmUoJ2Rlcy5qcycpXG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpXG5cbnZhciBtb2RlcyA9IHtcbiAgJ2Rlcy1lZGUzLWNiYyc6IGRlcy5DQkMuaW5zdGFudGlhdGUoZGVzLkVERSksXG4gICdkZXMtZWRlMyc6IGRlcy5FREUsXG4gICdkZXMtZWRlLWNiYyc6IGRlcy5DQkMuaW5zdGFudGlhdGUoZGVzLkVERSksXG4gICdkZXMtZWRlJzogZGVzLkVERSxcbiAgJ2Rlcy1jYmMnOiBkZXMuQ0JDLmluc3RhbnRpYXRlKGRlcy5ERVMpLFxuICAnZGVzLWVjYic6IGRlcy5ERVNcbn1cbm1vZGVzLmRlcyA9IG1vZGVzWydkZXMtY2JjJ11cbm1vZGVzLmRlczMgPSBtb2Rlc1snZGVzLWVkZTMtY2JjJ11cbm1vZHVsZS5leHBvcnRzID0gREVTXG5pbmhlcml0cyhERVMsIENpcGhlckJhc2UpXG5mdW5jdGlvbiBERVMgKG9wdHMpIHtcbiAgQ2lwaGVyQmFzZS5jYWxsKHRoaXMpXG4gIHZhciBtb2RlTmFtZSA9IG9wdHMubW9kZS50b0xvd2VyQ2FzZSgpXG4gIHZhciBtb2RlID0gbW9kZXNbbW9kZU5hbWVdXG4gIHZhciB0eXBlXG4gIGlmIChvcHRzLmRlY3J5cHQpIHtcbiAgICB0eXBlID0gJ2RlY3J5cHQnXG4gIH0gZWxzZSB7XG4gICAgdHlwZSA9ICdlbmNyeXB0J1xuICB9XG4gIHZhciBrZXkgPSBvcHRzLmtleVxuICBpZiAobW9kZU5hbWUgPT09ICdkZXMtZWRlJyB8fCBtb2RlTmFtZSA9PT0gJ2Rlcy1lZGUtY2JjJykge1xuICAgIGtleSA9IEJ1ZmZlci5jb25jYXQoW2tleSwga2V5LnNsaWNlKDAsIDgpXSlcbiAgfVxuICB2YXIgaXYgPSBvcHRzLml2XG4gIHRoaXMuX2RlcyA9IG1vZGUuY3JlYXRlKHtcbiAgICBrZXk6IGtleSxcbiAgICBpdjogaXYsXG4gICAgdHlwZTogdHlwZVxuICB9KVxufVxuREVTLnByb3RvdHlwZS5fdXBkYXRlID0gZnVuY3Rpb24gKGRhdGEpIHtcbiAgcmV0dXJuIG5ldyBCdWZmZXIodGhpcy5fZGVzLnVwZGF0ZShkYXRhKSlcbn1cbkRFUy5wcm90b3R5cGUuX2ZpbmFsID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gbmV3IEJ1ZmZlcih0aGlzLl9kZXMuZmluYWwoKSlcbn1cbiIsImV4cG9ydHNbJ2Rlcy1lY2InXSA9IHtcbiAga2V5OiA4LFxuICBpdjogMFxufVxuZXhwb3J0c1snZGVzLWNiYyddID0gZXhwb3J0cy5kZXMgPSB7XG4gIGtleTogOCxcbiAgaXY6IDhcbn1cbmV4cG9ydHNbJ2Rlcy1lZGUzLWNiYyddID0gZXhwb3J0cy5kZXMzID0ge1xuICBrZXk6IDI0LFxuICBpdjogOFxufVxuZXhwb3J0c1snZGVzLWVkZTMnXSA9IHtcbiAga2V5OiAyNCxcbiAgaXY6IDBcbn1cbmV4cG9ydHNbJ2Rlcy1lZGUtY2JjJ10gPSB7XG4gIGtleTogMTYsXG4gIGl2OiA4XG59XG5leHBvcnRzWydkZXMtZWRlJ10gPSB7XG4gIGtleTogMTYsXG4gIGl2OiAwXG59XG4iLCJ2YXIgYm4gPSByZXF1aXJlKCdibi5qcycpO1xudmFyIHJhbmRvbUJ5dGVzID0gcmVxdWlyZSgncmFuZG9tYnl0ZXMnKTtcbm1vZHVsZS5leHBvcnRzID0gY3J0O1xuZnVuY3Rpb24gYmxpbmQocHJpdikge1xuICB2YXIgciA9IGdldHIocHJpdik7XG4gIHZhciBibGluZGVyID0gci50b1JlZChibi5tb250KHByaXYubW9kdWx1cykpXG4gIC5yZWRQb3cobmV3IGJuKHByaXYucHVibGljRXhwb25lbnQpKS5mcm9tUmVkKCk7XG4gIHJldHVybiB7XG4gICAgYmxpbmRlcjogYmxpbmRlcixcbiAgICB1bmJsaW5kZXI6ci5pbnZtKHByaXYubW9kdWx1cylcbiAgfTtcbn1cbmZ1bmN0aW9uIGNydChtc2csIHByaXYpIHtcbiAgdmFyIGJsaW5kcyA9IGJsaW5kKHByaXYpO1xuICB2YXIgbGVuID0gcHJpdi5tb2R1bHVzLmJ5dGVMZW5ndGgoKTtcbiAgdmFyIG1vZCA9IGJuLm1vbnQocHJpdi5tb2R1bHVzKTtcbiAgdmFyIGJsaW5kZWQgPSBuZXcgYm4obXNnKS5tdWwoYmxpbmRzLmJsaW5kZXIpLnVtb2QocHJpdi5tb2R1bHVzKTtcbiAgdmFyIGMxID0gYmxpbmRlZC50b1JlZChibi5tb250KHByaXYucHJpbWUxKSk7XG4gIHZhciBjMiA9IGJsaW5kZWQudG9SZWQoYm4ubW9udChwcml2LnByaW1lMikpO1xuICB2YXIgcWludiA9IHByaXYuY29lZmZpY2llbnQ7XG4gIHZhciBwID0gcHJpdi5wcmltZTE7XG4gIHZhciBxID0gcHJpdi5wcmltZTI7XG4gIHZhciBtMSA9IGMxLnJlZFBvdyhwcml2LmV4cG9uZW50MSk7XG4gIHZhciBtMiA9IGMyLnJlZFBvdyhwcml2LmV4cG9uZW50Mik7XG4gIG0xID0gbTEuZnJvbVJlZCgpO1xuICBtMiA9IG0yLmZyb21SZWQoKTtcbiAgdmFyIGggPSBtMS5pc3ViKG0yKS5pbXVsKHFpbnYpLnVtb2QocCk7XG4gIGguaW11bChxKTtcbiAgbTIuaWFkZChoKTtcbiAgcmV0dXJuIG5ldyBCdWZmZXIobTIuaW11bChibGluZHMudW5ibGluZGVyKS51bW9kKHByaXYubW9kdWx1cykudG9BcnJheShmYWxzZSwgbGVuKSk7XG59XG5jcnQuZ2V0ciA9IGdldHI7XG5mdW5jdGlvbiBnZXRyKHByaXYpIHtcbiAgdmFyIGxlbiA9IHByaXYubW9kdWx1cy5ieXRlTGVuZ3RoKCk7XG4gIHZhciByID0gbmV3IGJuKHJhbmRvbUJ5dGVzKGxlbikpO1xuICB3aGlsZSAoci5jbXAocHJpdi5tb2R1bHVzKSA+PSAgMCB8fCAhci51bW9kKHByaXYucHJpbWUxKSB8fCAhci51bW9kKHByaXYucHJpbWUyKSkge1xuICAgIHIgPSBuZXcgYm4ocmFuZG9tQnl0ZXMobGVuKSk7XG4gIH1cbiAgcmV0dXJuIHI7XG59XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vYnJvd3Nlci9hbGdvcml0aG1zLmpzb24nKVxuIiwibW9kdWxlLmV4cG9ydHM9e1xuICBcInNoYTIyNFdpdGhSU0FFbmNyeXB0aW9uXCI6IHtcbiAgICBcInNpZ25cIjogXCJyc2FcIixcbiAgICBcImhhc2hcIjogXCJzaGEyMjRcIixcbiAgICBcImlkXCI6IFwiMzAyZDMwMGQwNjA5NjA4NjQ4MDE2NTAzMDQwMjA0MDUwMDA0MWNcIlxuICB9LFxuICBcIlJTQS1TSEEyMjRcIjoge1xuICAgIFwic2lnblwiOiBcImVjZHNhL3JzYVwiLFxuICAgIFwiaGFzaFwiOiBcInNoYTIyNFwiLFxuICAgIFwiaWRcIjogXCIzMDJkMzAwZDA2MDk2MDg2NDgwMTY1MDMwNDAyMDQwNTAwMDQxY1wiXG4gIH0sXG4gIFwic2hhMjU2V2l0aFJTQUVuY3J5cHRpb25cIjoge1xuICAgIFwic2lnblwiOiBcInJzYVwiLFxuICAgIFwiaGFzaFwiOiBcInNoYTI1NlwiLFxuICAgIFwiaWRcIjogXCIzMDMxMzAwZDA2MDk2MDg2NDgwMTY1MDMwNDAyMDEwNTAwMDQyMFwiXG4gIH0sXG4gIFwiUlNBLVNIQTI1NlwiOiB7XG4gICAgXCJzaWduXCI6IFwiZWNkc2EvcnNhXCIsXG4gICAgXCJoYXNoXCI6IFwic2hhMjU2XCIsXG4gICAgXCJpZFwiOiBcIjMwMzEzMDBkMDYwOTYwODY0ODAxNjUwMzA0MDIwMTA1MDAwNDIwXCJcbiAgfSxcbiAgXCJzaGEzODRXaXRoUlNBRW5jcnlwdGlvblwiOiB7XG4gICAgXCJzaWduXCI6IFwicnNhXCIsXG4gICAgXCJoYXNoXCI6IFwic2hhMzg0XCIsXG4gICAgXCJpZFwiOiBcIjMwNDEzMDBkMDYwOTYwODY0ODAxNjUwMzA0MDIwMjA1MDAwNDMwXCJcbiAgfSxcbiAgXCJSU0EtU0hBMzg0XCI6IHtcbiAgICBcInNpZ25cIjogXCJlY2RzYS9yc2FcIixcbiAgICBcImhhc2hcIjogXCJzaGEzODRcIixcbiAgICBcImlkXCI6IFwiMzA0MTMwMGQwNjA5NjA4NjQ4MDE2NTAzMDQwMjAyMDUwMDA0MzBcIlxuICB9LFxuICBcInNoYTUxMldpdGhSU0FFbmNyeXB0aW9uXCI6IHtcbiAgICBcInNpZ25cIjogXCJyc2FcIixcbiAgICBcImhhc2hcIjogXCJzaGE1MTJcIixcbiAgICBcImlkXCI6IFwiMzA1MTMwMGQwNjA5NjA4NjQ4MDE2NTAzMDQwMjAzMDUwMDA0NDBcIlxuICB9LFxuICBcIlJTQS1TSEE1MTJcIjoge1xuICAgIFwic2lnblwiOiBcImVjZHNhL3JzYVwiLFxuICAgIFwiaGFzaFwiOiBcInNoYTUxMlwiLFxuICAgIFwiaWRcIjogXCIzMDUxMzAwZDA2MDk2MDg2NDgwMTY1MDMwNDAyMDMwNTAwMDQ0MFwiXG4gIH0sXG4gIFwiUlNBLVNIQTFcIjoge1xuICAgIFwic2lnblwiOiBcInJzYVwiLFxuICAgIFwiaGFzaFwiOiBcInNoYTFcIixcbiAgICBcImlkXCI6IFwiMzAyMTMwMDkwNjA1MmIwZTAzMDIxYTA1MDAwNDE0XCJcbiAgfSxcbiAgXCJlY2RzYS13aXRoLVNIQTFcIjoge1xuICAgIFwic2lnblwiOiBcImVjZHNhXCIsXG4gICAgXCJoYXNoXCI6IFwic2hhMVwiLFxuICAgIFwiaWRcIjogXCJcIlxuICB9LFxuICBcInNoYTI1NlwiOiB7XG4gICAgXCJzaWduXCI6IFwiZWNkc2FcIixcbiAgICBcImhhc2hcIjogXCJzaGEyNTZcIixcbiAgICBcImlkXCI6IFwiXCJcbiAgfSxcbiAgXCJzaGEyMjRcIjoge1xuICAgIFwic2lnblwiOiBcImVjZHNhXCIsXG4gICAgXCJoYXNoXCI6IFwic2hhMjI0XCIsXG4gICAgXCJpZFwiOiBcIlwiXG4gIH0sXG4gIFwic2hhMzg0XCI6IHtcbiAgICBcInNpZ25cIjogXCJlY2RzYVwiLFxuICAgIFwiaGFzaFwiOiBcInNoYTM4NFwiLFxuICAgIFwiaWRcIjogXCJcIlxuICB9LFxuICBcInNoYTUxMlwiOiB7XG4gICAgXCJzaWduXCI6IFwiZWNkc2FcIixcbiAgICBcImhhc2hcIjogXCJzaGE1MTJcIixcbiAgICBcImlkXCI6IFwiXCJcbiAgfSxcbiAgXCJEU0EtU0hBXCI6IHtcbiAgICBcInNpZ25cIjogXCJkc2FcIixcbiAgICBcImhhc2hcIjogXCJzaGExXCIsXG4gICAgXCJpZFwiOiBcIlwiXG4gIH0sXG4gIFwiRFNBLVNIQTFcIjoge1xuICAgIFwic2lnblwiOiBcImRzYVwiLFxuICAgIFwiaGFzaFwiOiBcInNoYTFcIixcbiAgICBcImlkXCI6IFwiXCJcbiAgfSxcbiAgXCJEU0FcIjoge1xuICAgIFwic2lnblwiOiBcImRzYVwiLFxuICAgIFwiaGFzaFwiOiBcInNoYTFcIixcbiAgICBcImlkXCI6IFwiXCJcbiAgfSxcbiAgXCJEU0EtV0lUSC1TSEEyMjRcIjoge1xuICAgIFwic2lnblwiOiBcImRzYVwiLFxuICAgIFwiaGFzaFwiOiBcInNoYTIyNFwiLFxuICAgIFwiaWRcIjogXCJcIlxuICB9LFxuICBcIkRTQS1TSEEyMjRcIjoge1xuICAgIFwic2lnblwiOiBcImRzYVwiLFxuICAgIFwiaGFzaFwiOiBcInNoYTIyNFwiLFxuICAgIFwiaWRcIjogXCJcIlxuICB9LFxuICBcIkRTQS1XSVRILVNIQTI1NlwiOiB7XG4gICAgXCJzaWduXCI6IFwiZHNhXCIsXG4gICAgXCJoYXNoXCI6IFwic2hhMjU2XCIsXG4gICAgXCJpZFwiOiBcIlwiXG4gIH0sXG4gIFwiRFNBLVNIQTI1NlwiOiB7XG4gICAgXCJzaWduXCI6IFwiZHNhXCIsXG4gICAgXCJoYXNoXCI6IFwic2hhMjU2XCIsXG4gICAgXCJpZFwiOiBcIlwiXG4gIH0sXG4gIFwiRFNBLVdJVEgtU0hBMzg0XCI6IHtcbiAgICBcInNpZ25cIjogXCJkc2FcIixcbiAgICBcImhhc2hcIjogXCJzaGEzODRcIixcbiAgICBcImlkXCI6IFwiXCJcbiAgfSxcbiAgXCJEU0EtU0hBMzg0XCI6IHtcbiAgICBcInNpZ25cIjogXCJkc2FcIixcbiAgICBcImhhc2hcIjogXCJzaGEzODRcIixcbiAgICBcImlkXCI6IFwiXCJcbiAgfSxcbiAgXCJEU0EtV0lUSC1TSEE1MTJcIjoge1xuICAgIFwic2lnblwiOiBcImRzYVwiLFxuICAgIFwiaGFzaFwiOiBcInNoYTUxMlwiLFxuICAgIFwiaWRcIjogXCJcIlxuICB9LFxuICBcIkRTQS1TSEE1MTJcIjoge1xuICAgIFwic2lnblwiOiBcImRzYVwiLFxuICAgIFwiaGFzaFwiOiBcInNoYTUxMlwiLFxuICAgIFwiaWRcIjogXCJcIlxuICB9LFxuICBcIkRTQS1SSVBFTUQxNjBcIjoge1xuICAgIFwic2lnblwiOiBcImRzYVwiLFxuICAgIFwiaGFzaFwiOiBcInJtZDE2MFwiLFxuICAgIFwiaWRcIjogXCJcIlxuICB9LFxuICBcInJpcGVtZDE2MFdpdGhSU0FcIjoge1xuICAgIFwic2lnblwiOiBcInJzYVwiLFxuICAgIFwiaGFzaFwiOiBcInJtZDE2MFwiLFxuICAgIFwiaWRcIjogXCIzMDIxMzAwOTA2MDUyYjI0MDMwMjAxMDUwMDA0MTRcIlxuICB9LFxuICBcIlJTQS1SSVBFTUQxNjBcIjoge1xuICAgIFwic2lnblwiOiBcInJzYVwiLFxuICAgIFwiaGFzaFwiOiBcInJtZDE2MFwiLFxuICAgIFwiaWRcIjogXCIzMDIxMzAwOTA2MDUyYjI0MDMwMjAxMDUwMDA0MTRcIlxuICB9LFxuICBcIm1kNVdpdGhSU0FFbmNyeXB0aW9uXCI6IHtcbiAgICBcInNpZ25cIjogXCJyc2FcIixcbiAgICBcImhhc2hcIjogXCJtZDVcIixcbiAgICBcImlkXCI6IFwiMzAyMDMwMGMwNjA4MmE4NjQ4ODZmNzBkMDIwNTA1MDAwNDEwXCJcbiAgfSxcbiAgXCJSU0EtTUQ1XCI6IHtcbiAgICBcInNpZ25cIjogXCJyc2FcIixcbiAgICBcImhhc2hcIjogXCJtZDVcIixcbiAgICBcImlkXCI6IFwiMzAyMDMwMGMwNjA4MmE4NjQ4ODZmNzBkMDIwNTA1MDAwNDEwXCJcbiAgfVxufVxuIiwibW9kdWxlLmV4cG9ydHM9e1xuICBcIjEuMy4xMzIuMC4xMFwiOiBcInNlY3AyNTZrMVwiLFxuICBcIjEuMy4xMzIuMC4zM1wiOiBcInAyMjRcIixcbiAgXCIxLjIuODQwLjEwMDQ1LjMuMS4xXCI6IFwicDE5MlwiLFxuICBcIjEuMi44NDAuMTAwNDUuMy4xLjdcIjogXCJwMjU2XCIsXG4gIFwiMS4zLjEzMi4wLjM0XCI6IFwicDM4NFwiLFxuICBcIjEuMy4xMzIuMC4zNVwiOiBcInA1MjFcIlxufVxuIiwidmFyIGNyZWF0ZUhhc2ggPSByZXF1aXJlKCdjcmVhdGUtaGFzaCcpXG52YXIgc3RyZWFtID0gcmVxdWlyZSgnc3RyZWFtJylcbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJylcbnZhciBzaWduID0gcmVxdWlyZSgnLi9zaWduJylcbnZhciB2ZXJpZnkgPSByZXF1aXJlKCcuL3ZlcmlmeScpXG5cbnZhciBhbGdvcml0aG1zID0gcmVxdWlyZSgnLi9hbGdvcml0aG1zLmpzb24nKVxuT2JqZWN0LmtleXMoYWxnb3JpdGhtcykuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gIGFsZ29yaXRobXNba2V5XS5pZCA9IG5ldyBCdWZmZXIoYWxnb3JpdGhtc1trZXldLmlkLCAnaGV4JylcbiAgYWxnb3JpdGhtc1trZXkudG9Mb3dlckNhc2UoKV0gPSBhbGdvcml0aG1zW2tleV1cbn0pXG5cbmZ1bmN0aW9uIFNpZ24gKGFsZ29yaXRobSkge1xuICBzdHJlYW0uV3JpdGFibGUuY2FsbCh0aGlzKVxuXG4gIHZhciBkYXRhID0gYWxnb3JpdGhtc1thbGdvcml0aG1dXG4gIGlmICghZGF0YSkgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIG1lc3NhZ2UgZGlnZXN0JylcblxuICB0aGlzLl9oYXNoVHlwZSA9IGRhdGEuaGFzaFxuICB0aGlzLl9oYXNoID0gY3JlYXRlSGFzaChkYXRhLmhhc2gpXG4gIHRoaXMuX3RhZyA9IGRhdGEuaWRcbiAgdGhpcy5fc2lnblR5cGUgPSBkYXRhLnNpZ25cbn1cbmluaGVyaXRzKFNpZ24sIHN0cmVhbS5Xcml0YWJsZSlcblxuU2lnbi5wcm90b3R5cGUuX3dyaXRlID0gZnVuY3Rpb24gX3dyaXRlIChkYXRhLCBfLCBkb25lKSB7XG4gIHRoaXMuX2hhc2gudXBkYXRlKGRhdGEpXG4gIGRvbmUoKVxufVxuXG5TaWduLnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiB1cGRhdGUgKGRhdGEsIGVuYykge1xuICBpZiAodHlwZW9mIGRhdGEgPT09ICdzdHJpbmcnKSBkYXRhID0gbmV3IEJ1ZmZlcihkYXRhLCBlbmMpXG5cbiAgdGhpcy5faGFzaC51cGRhdGUoZGF0YSlcbiAgcmV0dXJuIHRoaXNcbn1cblxuU2lnbi5wcm90b3R5cGUuc2lnbiA9IGZ1bmN0aW9uIHNpZ25NZXRob2QgKGtleSwgZW5jKSB7XG4gIHRoaXMuZW5kKClcbiAgdmFyIGhhc2ggPSB0aGlzLl9oYXNoLmRpZ2VzdCgpXG4gIHZhciBzaWcgPSBzaWduKGhhc2gsIGtleSwgdGhpcy5faGFzaFR5cGUsIHRoaXMuX3NpZ25UeXBlLCB0aGlzLl90YWcpXG5cbiAgcmV0dXJuIGVuYyA/IHNpZy50b1N0cmluZyhlbmMpIDogc2lnXG59XG5cbmZ1bmN0aW9uIFZlcmlmeSAoYWxnb3JpdGhtKSB7XG4gIHN0cmVhbS5Xcml0YWJsZS5jYWxsKHRoaXMpXG5cbiAgdmFyIGRhdGEgPSBhbGdvcml0aG1zW2FsZ29yaXRobV1cbiAgaWYgKCFkYXRhKSB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gbWVzc2FnZSBkaWdlc3QnKVxuXG4gIHRoaXMuX2hhc2ggPSBjcmVhdGVIYXNoKGRhdGEuaGFzaClcbiAgdGhpcy5fdGFnID0gZGF0YS5pZFxuICB0aGlzLl9zaWduVHlwZSA9IGRhdGEuc2lnblxufVxuaW5oZXJpdHMoVmVyaWZ5LCBzdHJlYW0uV3JpdGFibGUpXG5cblZlcmlmeS5wcm90b3R5cGUuX3dyaXRlID0gZnVuY3Rpb24gX3dyaXRlIChkYXRhLCBfLCBkb25lKSB7XG4gIHRoaXMuX2hhc2gudXBkYXRlKGRhdGEpXG4gIGRvbmUoKVxufVxuXG5WZXJpZnkucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uIHVwZGF0ZSAoZGF0YSwgZW5jKSB7XG4gIGlmICh0eXBlb2YgZGF0YSA9PT0gJ3N0cmluZycpIGRhdGEgPSBuZXcgQnVmZmVyKGRhdGEsIGVuYylcblxuICB0aGlzLl9oYXNoLnVwZGF0ZShkYXRhKVxuICByZXR1cm4gdGhpc1xufVxuXG5WZXJpZnkucHJvdG90eXBlLnZlcmlmeSA9IGZ1bmN0aW9uIHZlcmlmeU1ldGhvZCAoa2V5LCBzaWcsIGVuYykge1xuICBpZiAodHlwZW9mIHNpZyA9PT0gJ3N0cmluZycpIHNpZyA9IG5ldyBCdWZmZXIoc2lnLCBlbmMpXG5cbiAgdGhpcy5lbmQoKVxuICB2YXIgaGFzaCA9IHRoaXMuX2hhc2guZGlnZXN0KClcbiAgcmV0dXJuIHZlcmlmeShzaWcsIGhhc2gsIGtleSwgdGhpcy5fc2lnblR5cGUsIHRoaXMuX3RhZylcbn1cblxuZnVuY3Rpb24gY3JlYXRlU2lnbiAoYWxnb3JpdGhtKSB7XG4gIHJldHVybiBuZXcgU2lnbihhbGdvcml0aG0pXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVZlcmlmeSAoYWxnb3JpdGhtKSB7XG4gIHJldHVybiBuZXcgVmVyaWZ5KGFsZ29yaXRobSlcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIFNpZ246IGNyZWF0ZVNpZ24sXG4gIFZlcmlmeTogY3JlYXRlVmVyaWZ5LFxuICBjcmVhdGVTaWduOiBjcmVhdGVTaWduLFxuICBjcmVhdGVWZXJpZnk6IGNyZWF0ZVZlcmlmeVxufVxuIiwiLy8gbXVjaCBvZiB0aGlzIGJhc2VkIG9uIGh0dHBzOi8vZ2l0aHViLmNvbS9pbmR1dG55L3NlbGYtc2lnbmVkL2Jsb2IvZ2gtcGFnZXMvbGliL3JzYS5qc1xudmFyIGNyZWF0ZUhtYWMgPSByZXF1aXJlKCdjcmVhdGUtaG1hYycpXG52YXIgY3J0ID0gcmVxdWlyZSgnYnJvd3NlcmlmeS1yc2EnKVxudmFyIEVDID0gcmVxdWlyZSgnZWxsaXB0aWMnKS5lY1xudmFyIEJOID0gcmVxdWlyZSgnYm4uanMnKVxudmFyIHBhcnNlS2V5cyA9IHJlcXVpcmUoJ3BhcnNlLWFzbjEnKVxudmFyIGN1cnZlcyA9IHJlcXVpcmUoJy4vY3VydmVzLmpzb24nKVxuXG5mdW5jdGlvbiBzaWduIChoYXNoLCBrZXksIGhhc2hUeXBlLCBzaWduVHlwZSwgdGFnKSB7XG4gIHZhciBwcml2ID0gcGFyc2VLZXlzKGtleSlcbiAgaWYgKHByaXYuY3VydmUpIHtcbiAgICAvLyByc2Ega2V5cyBjYW4gYmUgaW50ZXJwcmV0ZWQgYXMgZWNkc2Egb25lcyBpbiBvcGVuc3NsXG4gICAgaWYgKHNpZ25UeXBlICE9PSAnZWNkc2EnICYmIHNpZ25UeXBlICE9PSAnZWNkc2EvcnNhJykgdGhyb3cgbmV3IEVycm9yKCd3cm9uZyBwcml2YXRlIGtleSB0eXBlJylcbiAgICByZXR1cm4gZWNTaWduKGhhc2gsIHByaXYpXG4gIH0gZWxzZSBpZiAocHJpdi50eXBlID09PSAnZHNhJykge1xuICAgIGlmIChzaWduVHlwZSAhPT0gJ2RzYScpIHRocm93IG5ldyBFcnJvcignd3JvbmcgcHJpdmF0ZSBrZXkgdHlwZScpXG4gICAgcmV0dXJuIGRzYVNpZ24oaGFzaCwgcHJpdiwgaGFzaFR5cGUpXG4gIH0gZWxzZSB7XG4gICAgaWYgKHNpZ25UeXBlICE9PSAncnNhJyAmJiBzaWduVHlwZSAhPT0gJ2VjZHNhL3JzYScpIHRocm93IG5ldyBFcnJvcignd3JvbmcgcHJpdmF0ZSBrZXkgdHlwZScpXG4gIH1cbiAgaGFzaCA9IEJ1ZmZlci5jb25jYXQoW3RhZywgaGFzaF0pXG4gIHZhciBsZW4gPSBwcml2Lm1vZHVsdXMuYnl0ZUxlbmd0aCgpXG4gIHZhciBwYWQgPSBbIDAsIDEgXVxuICB3aGlsZSAoaGFzaC5sZW5ndGggKyBwYWQubGVuZ3RoICsgMSA8IGxlbikgcGFkLnB1c2goMHhmZilcbiAgcGFkLnB1c2goMHgwMClcbiAgdmFyIGkgPSAtMVxuICB3aGlsZSAoKytpIDwgaGFzaC5sZW5ndGgpIHBhZC5wdXNoKGhhc2hbaV0pXG5cbiAgdmFyIG91dCA9IGNydChwYWQsIHByaXYpXG4gIHJldHVybiBvdXRcbn1cblxuZnVuY3Rpb24gZWNTaWduIChoYXNoLCBwcml2KSB7XG4gIHZhciBjdXJ2ZUlkID0gY3VydmVzW3ByaXYuY3VydmUuam9pbignLicpXVxuICBpZiAoIWN1cnZlSWQpIHRocm93IG5ldyBFcnJvcigndW5rbm93biBjdXJ2ZSAnICsgcHJpdi5jdXJ2ZS5qb2luKCcuJykpXG5cbiAgdmFyIGN1cnZlID0gbmV3IEVDKGN1cnZlSWQpXG4gIHZhciBrZXkgPSBjdXJ2ZS5rZXlGcm9tUHJpdmF0ZShwcml2LnByaXZhdGVLZXkpXG4gIHZhciBvdXQgPSBrZXkuc2lnbihoYXNoKVxuXG4gIHJldHVybiBuZXcgQnVmZmVyKG91dC50b0RFUigpKVxufVxuXG5mdW5jdGlvbiBkc2FTaWduIChoYXNoLCBwcml2LCBhbGdvKSB7XG4gIHZhciB4ID0gcHJpdi5wYXJhbXMucHJpdl9rZXlcbiAgdmFyIHAgPSBwcml2LnBhcmFtcy5wXG4gIHZhciBxID0gcHJpdi5wYXJhbXMucVxuICB2YXIgZyA9IHByaXYucGFyYW1zLmdcbiAgdmFyIHIgPSBuZXcgQk4oMClcbiAgdmFyIGtcbiAgdmFyIEggPSBiaXRzMmludChoYXNoLCBxKS5tb2QocSlcbiAgdmFyIHMgPSBmYWxzZVxuICB2YXIga3YgPSBnZXRLZXkoeCwgcSwgaGFzaCwgYWxnbylcbiAgd2hpbGUgKHMgPT09IGZhbHNlKSB7XG4gICAgayA9IG1ha2VLZXkocSwga3YsIGFsZ28pXG4gICAgciA9IG1ha2VSKGcsIGssIHAsIHEpXG4gICAgcyA9IGsuaW52bShxKS5pbXVsKEguYWRkKHgubXVsKHIpKSkubW9kKHEpXG4gICAgaWYgKHMuY21wbigwKSA9PT0gMCkge1xuICAgICAgcyA9IGZhbHNlXG4gICAgICByID0gbmV3IEJOKDApXG4gICAgfVxuICB9XG4gIHJldHVybiB0b0RFUihyLCBzKVxufVxuXG5mdW5jdGlvbiB0b0RFUiAociwgcykge1xuICByID0gci50b0FycmF5KClcbiAgcyA9IHMudG9BcnJheSgpXG5cbiAgLy8gUGFkIHZhbHVlc1xuICBpZiAoclswXSAmIDB4ODApIHIgPSBbIDAgXS5jb25jYXQocilcbiAgaWYgKHNbMF0gJiAweDgwKSBzID0gWyAwIF0uY29uY2F0KHMpXG5cbiAgdmFyIHRvdGFsID0gci5sZW5ndGggKyBzLmxlbmd0aCArIDRcbiAgdmFyIHJlcyA9IFsgMHgzMCwgdG90YWwsIDB4MDIsIHIubGVuZ3RoIF1cbiAgcmVzID0gcmVzLmNvbmNhdChyLCBbIDB4MDIsIHMubGVuZ3RoIF0sIHMpXG4gIHJldHVybiBuZXcgQnVmZmVyKHJlcylcbn1cblxuZnVuY3Rpb24gZ2V0S2V5ICh4LCBxLCBoYXNoLCBhbGdvKSB7XG4gIHggPSBuZXcgQnVmZmVyKHgudG9BcnJheSgpKVxuICBpZiAoeC5sZW5ndGggPCBxLmJ5dGVMZW5ndGgoKSkge1xuICAgIHZhciB6ZXJvcyA9IG5ldyBCdWZmZXIocS5ieXRlTGVuZ3RoKCkgLSB4Lmxlbmd0aClcbiAgICB6ZXJvcy5maWxsKDApXG4gICAgeCA9IEJ1ZmZlci5jb25jYXQoWyB6ZXJvcywgeCBdKVxuICB9XG4gIHZhciBobGVuID0gaGFzaC5sZW5ndGhcbiAgdmFyIGhiaXRzID0gYml0czJvY3RldHMoaGFzaCwgcSlcbiAgdmFyIHYgPSBuZXcgQnVmZmVyKGhsZW4pXG4gIHYuZmlsbCgxKVxuICB2YXIgayA9IG5ldyBCdWZmZXIoaGxlbilcbiAgay5maWxsKDApXG4gIGsgPSBjcmVhdGVIbWFjKGFsZ28sIGspLnVwZGF0ZSh2KS51cGRhdGUobmV3IEJ1ZmZlcihbIDAgXSkpLnVwZGF0ZSh4KS51cGRhdGUoaGJpdHMpLmRpZ2VzdCgpXG4gIHYgPSBjcmVhdGVIbWFjKGFsZ28sIGspLnVwZGF0ZSh2KS5kaWdlc3QoKVxuICBrID0gY3JlYXRlSG1hYyhhbGdvLCBrKS51cGRhdGUodikudXBkYXRlKG5ldyBCdWZmZXIoWyAxIF0pKS51cGRhdGUoeCkudXBkYXRlKGhiaXRzKS5kaWdlc3QoKVxuICB2ID0gY3JlYXRlSG1hYyhhbGdvLCBrKS51cGRhdGUodikuZGlnZXN0KClcbiAgcmV0dXJuIHsgazogaywgdjogdiB9XG59XG5cbmZ1bmN0aW9uIGJpdHMyaW50IChvYml0cywgcSkge1xuICB2YXIgYml0cyA9IG5ldyBCTihvYml0cylcbiAgdmFyIHNoaWZ0ID0gKG9iaXRzLmxlbmd0aCA8PCAzKSAtIHEuYml0TGVuZ3RoKClcbiAgaWYgKHNoaWZ0ID4gMCkgYml0cy5pc2hybihzaGlmdClcbiAgcmV0dXJuIGJpdHNcbn1cblxuZnVuY3Rpb24gYml0czJvY3RldHMgKGJpdHMsIHEpIHtcbiAgYml0cyA9IGJpdHMyaW50KGJpdHMsIHEpXG4gIGJpdHMgPSBiaXRzLm1vZChxKVxuICB2YXIgb3V0ID0gbmV3IEJ1ZmZlcihiaXRzLnRvQXJyYXkoKSlcbiAgaWYgKG91dC5sZW5ndGggPCBxLmJ5dGVMZW5ndGgoKSkge1xuICAgIHZhciB6ZXJvcyA9IG5ldyBCdWZmZXIocS5ieXRlTGVuZ3RoKCkgLSBvdXQubGVuZ3RoKVxuICAgIHplcm9zLmZpbGwoMClcbiAgICBvdXQgPSBCdWZmZXIuY29uY2F0KFsgemVyb3MsIG91dCBdKVxuICB9XG4gIHJldHVybiBvdXRcbn1cblxuZnVuY3Rpb24gbWFrZUtleSAocSwga3YsIGFsZ28pIHtcbiAgdmFyIHRcbiAgdmFyIGtcblxuICBkbyB7XG4gICAgdCA9IG5ldyBCdWZmZXIoMClcblxuICAgIHdoaWxlICh0Lmxlbmd0aCAqIDggPCBxLmJpdExlbmd0aCgpKSB7XG4gICAgICBrdi52ID0gY3JlYXRlSG1hYyhhbGdvLCBrdi5rKS51cGRhdGUoa3YudikuZGlnZXN0KClcbiAgICAgIHQgPSBCdWZmZXIuY29uY2F0KFsgdCwga3YudiBdKVxuICAgIH1cblxuICAgIGsgPSBiaXRzMmludCh0LCBxKVxuICAgIGt2LmsgPSBjcmVhdGVIbWFjKGFsZ28sIGt2LmspLnVwZGF0ZShrdi52KS51cGRhdGUobmV3IEJ1ZmZlcihbIDAgXSkpLmRpZ2VzdCgpXG4gICAga3YudiA9IGNyZWF0ZUhtYWMoYWxnbywga3YuaykudXBkYXRlKGt2LnYpLmRpZ2VzdCgpXG4gIH0gd2hpbGUgKGsuY21wKHEpICE9PSAtMSlcblxuICByZXR1cm4ga1xufVxuXG5mdW5jdGlvbiBtYWtlUiAoZywgaywgcCwgcSkge1xuICByZXR1cm4gZy50b1JlZChCTi5tb250KHApKS5yZWRQb3coaykuZnJvbVJlZCgpLm1vZChxKVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHNpZ25cbm1vZHVsZS5leHBvcnRzLmdldEtleSA9IGdldEtleVxubW9kdWxlLmV4cG9ydHMubWFrZUtleSA9IG1ha2VLZXlcbiIsIi8vIG11Y2ggb2YgdGhpcyBiYXNlZCBvbiBodHRwczovL2dpdGh1Yi5jb20vaW5kdXRueS9zZWxmLXNpZ25lZC9ibG9iL2doLXBhZ2VzL2xpYi9yc2EuanNcbnZhciBCTiA9IHJlcXVpcmUoJ2JuLmpzJylcbnZhciBFQyA9IHJlcXVpcmUoJ2VsbGlwdGljJykuZWNcbnZhciBwYXJzZUtleXMgPSByZXF1aXJlKCdwYXJzZS1hc24xJylcbnZhciBjdXJ2ZXMgPSByZXF1aXJlKCcuL2N1cnZlcy5qc29uJylcblxuZnVuY3Rpb24gdmVyaWZ5IChzaWcsIGhhc2gsIGtleSwgc2lnblR5cGUsIHRhZykge1xuICB2YXIgcHViID0gcGFyc2VLZXlzKGtleSlcbiAgaWYgKHB1Yi50eXBlID09PSAnZWMnKSB7XG4gICAgLy8gcnNhIGtleXMgY2FuIGJlIGludGVycHJldGVkIGFzIGVjZHNhIG9uZXMgaW4gb3BlbnNzbFxuICAgIGlmIChzaWduVHlwZSAhPT0gJ2VjZHNhJyAmJiBzaWduVHlwZSAhPT0gJ2VjZHNhL3JzYScpIHRocm93IG5ldyBFcnJvcignd3JvbmcgcHVibGljIGtleSB0eXBlJylcbiAgICByZXR1cm4gZWNWZXJpZnkoc2lnLCBoYXNoLCBwdWIpXG4gIH0gZWxzZSBpZiAocHViLnR5cGUgPT09ICdkc2EnKSB7XG4gICAgaWYgKHNpZ25UeXBlICE9PSAnZHNhJykgdGhyb3cgbmV3IEVycm9yKCd3cm9uZyBwdWJsaWMga2V5IHR5cGUnKVxuICAgIHJldHVybiBkc2FWZXJpZnkoc2lnLCBoYXNoLCBwdWIpXG4gIH0gZWxzZSB7XG4gICAgaWYgKHNpZ25UeXBlICE9PSAncnNhJyAmJiBzaWduVHlwZSAhPT0gJ2VjZHNhL3JzYScpIHRocm93IG5ldyBFcnJvcignd3JvbmcgcHVibGljIGtleSB0eXBlJylcbiAgfVxuICBoYXNoID0gQnVmZmVyLmNvbmNhdChbdGFnLCBoYXNoXSlcbiAgdmFyIGxlbiA9IHB1Yi5tb2R1bHVzLmJ5dGVMZW5ndGgoKVxuICB2YXIgcGFkID0gWyAxIF1cbiAgdmFyIHBhZE51bSA9IDBcbiAgd2hpbGUgKGhhc2gubGVuZ3RoICsgcGFkLmxlbmd0aCArIDIgPCBsZW4pIHtcbiAgICBwYWQucHVzaCgweGZmKVxuICAgIHBhZE51bSsrXG4gIH1cbiAgcGFkLnB1c2goMHgwMClcbiAgdmFyIGkgPSAtMVxuICB3aGlsZSAoKytpIDwgaGFzaC5sZW5ndGgpIHtcbiAgICBwYWQucHVzaChoYXNoW2ldKVxuICB9XG4gIHBhZCA9IG5ldyBCdWZmZXIocGFkKVxuICB2YXIgcmVkID0gQk4ubW9udChwdWIubW9kdWx1cylcbiAgc2lnID0gbmV3IEJOKHNpZykudG9SZWQocmVkKVxuXG4gIHNpZyA9IHNpZy5yZWRQb3cobmV3IEJOKHB1Yi5wdWJsaWNFeHBvbmVudCkpXG4gIHNpZyA9IG5ldyBCdWZmZXIoc2lnLmZyb21SZWQoKS50b0FycmF5KCkpXG4gIHZhciBvdXQgPSBwYWROdW0gPCA4ID8gMSA6IDBcbiAgbGVuID0gTWF0aC5taW4oc2lnLmxlbmd0aCwgcGFkLmxlbmd0aClcbiAgaWYgKHNpZy5sZW5ndGggIT09IHBhZC5sZW5ndGgpIG91dCA9IDFcblxuICBpID0gLTFcbiAgd2hpbGUgKCsraSA8IGxlbikgb3V0IHw9IHNpZ1tpXSBeIHBhZFtpXVxuICByZXR1cm4gb3V0ID09PSAwXG59XG5cbmZ1bmN0aW9uIGVjVmVyaWZ5IChzaWcsIGhhc2gsIHB1Yikge1xuICB2YXIgY3VydmVJZCA9IGN1cnZlc1twdWIuZGF0YS5hbGdvcml0aG0uY3VydmUuam9pbignLicpXVxuICBpZiAoIWN1cnZlSWQpIHRocm93IG5ldyBFcnJvcigndW5rbm93biBjdXJ2ZSAnICsgcHViLmRhdGEuYWxnb3JpdGhtLmN1cnZlLmpvaW4oJy4nKSlcblxuICB2YXIgY3VydmUgPSBuZXcgRUMoY3VydmVJZClcbiAgdmFyIHB1YmtleSA9IHB1Yi5kYXRhLnN1YmplY3RQcml2YXRlS2V5LmRhdGFcblxuICByZXR1cm4gY3VydmUudmVyaWZ5KGhhc2gsIHNpZywgcHVia2V5KVxufVxuXG5mdW5jdGlvbiBkc2FWZXJpZnkgKHNpZywgaGFzaCwgcHViKSB7XG4gIHZhciBwID0gcHViLmRhdGEucFxuICB2YXIgcSA9IHB1Yi5kYXRhLnFcbiAgdmFyIGcgPSBwdWIuZGF0YS5nXG4gIHZhciB5ID0gcHViLmRhdGEucHViX2tleVxuICB2YXIgdW5wYWNrZWQgPSBwYXJzZUtleXMuc2lnbmF0dXJlLmRlY29kZShzaWcsICdkZXInKVxuICB2YXIgcyA9IHVucGFja2VkLnNcbiAgdmFyIHIgPSB1bnBhY2tlZC5yXG4gIGNoZWNrVmFsdWUocywgcSlcbiAgY2hlY2tWYWx1ZShyLCBxKVxuICB2YXIgbW9udHAgPSBCTi5tb250KHApXG4gIHZhciB3ID0gcy5pbnZtKHEpXG4gIHZhciB2ID0gZy50b1JlZChtb250cClcbiAgICAucmVkUG93KG5ldyBCTihoYXNoKS5tdWwodykubW9kKHEpKVxuICAgIC5mcm9tUmVkKClcbiAgICAubXVsKHkudG9SZWQobW9udHApLnJlZFBvdyhyLm11bCh3KS5tb2QocSkpLmZyb21SZWQoKSlcbiAgICAubW9kKHApXG4gICAgLm1vZChxKVxuICByZXR1cm4gdi5jbXAocikgPT09IDBcbn1cblxuZnVuY3Rpb24gY2hlY2tWYWx1ZSAoYiwgcSkge1xuICBpZiAoYi5jbXBuKDApIDw9IDApIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBzaWcnKVxuICBpZiAoYi5jbXAocSkgPj0gcSkgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIHNpZycpXG59XG5cbm1vZHVsZS5leHBvcnRzID0gdmVyaWZ5XG4iLCJ2YXIgbXNnID0gcmVxdWlyZSgncGFrby9saWIvemxpYi9tZXNzYWdlcycpO1xudmFyIHpzdHJlYW0gPSByZXF1aXJlKCdwYWtvL2xpYi96bGliL3pzdHJlYW0nKTtcbnZhciB6bGliX2RlZmxhdGUgPSByZXF1aXJlKCdwYWtvL2xpYi96bGliL2RlZmxhdGUuanMnKTtcbnZhciB6bGliX2luZmxhdGUgPSByZXF1aXJlKCdwYWtvL2xpYi96bGliL2luZmxhdGUuanMnKTtcbnZhciBjb25zdGFudHMgPSByZXF1aXJlKCdwYWtvL2xpYi96bGliL2NvbnN0YW50cycpO1xuXG5mb3IgKHZhciBrZXkgaW4gY29uc3RhbnRzKSB7XG4gIGV4cG9ydHNba2V5XSA9IGNvbnN0YW50c1trZXldO1xufVxuXG4vLyB6bGliIG1vZGVzXG5leHBvcnRzLk5PTkUgPSAwO1xuZXhwb3J0cy5ERUZMQVRFID0gMTtcbmV4cG9ydHMuSU5GTEFURSA9IDI7XG5leHBvcnRzLkdaSVAgPSAzO1xuZXhwb3J0cy5HVU5aSVAgPSA0O1xuZXhwb3J0cy5ERUZMQVRFUkFXID0gNTtcbmV4cG9ydHMuSU5GTEFURVJBVyA9IDY7XG5leHBvcnRzLlVOWklQID0gNztcblxuLyoqXG4gKiBFbXVsYXRlIE5vZGUncyB6bGliIEMrKyBsYXllciBmb3IgdXNlIGJ5IHRoZSBKUyBsYXllciBpbiBpbmRleC5qc1xuICovXG5mdW5jdGlvbiBabGliKG1vZGUpIHtcbiAgaWYgKG1vZGUgPCBleHBvcnRzLkRFRkxBVEUgfHwgbW9kZSA+IGV4cG9ydHMuVU5aSVApXG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkJhZCBhcmd1bWVudFwiKTtcbiAgICBcbiAgdGhpcy5tb2RlID0gbW9kZTtcbiAgdGhpcy5pbml0X2RvbmUgPSBmYWxzZTtcbiAgdGhpcy53cml0ZV9pbl9wcm9ncmVzcyA9IGZhbHNlO1xuICB0aGlzLnBlbmRpbmdfY2xvc2UgPSBmYWxzZTtcbiAgdGhpcy53aW5kb3dCaXRzID0gMDtcbiAgdGhpcy5sZXZlbCA9IDA7XG4gIHRoaXMubWVtTGV2ZWwgPSAwO1xuICB0aGlzLnN0cmF0ZWd5ID0gMDtcbiAgdGhpcy5kaWN0aW9uYXJ5ID0gbnVsbDtcbn1cblxuWmxpYi5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uKHdpbmRvd0JpdHMsIGxldmVsLCBtZW1MZXZlbCwgc3RyYXRlZ3ksIGRpY3Rpb25hcnkpIHtcbiAgdGhpcy53aW5kb3dCaXRzID0gd2luZG93Qml0cztcbiAgdGhpcy5sZXZlbCA9IGxldmVsO1xuICB0aGlzLm1lbUxldmVsID0gbWVtTGV2ZWw7XG4gIHRoaXMuc3RyYXRlZ3kgPSBzdHJhdGVneTtcbiAgLy8gZGljdGlvbmFyeSBub3Qgc3VwcG9ydGVkLlxuICBcbiAgaWYgKHRoaXMubW9kZSA9PT0gZXhwb3J0cy5HWklQIHx8IHRoaXMubW9kZSA9PT0gZXhwb3J0cy5HVU5aSVApXG4gICAgdGhpcy53aW5kb3dCaXRzICs9IDE2O1xuICAgIFxuICBpZiAodGhpcy5tb2RlID09PSBleHBvcnRzLlVOWklQKVxuICAgIHRoaXMud2luZG93Qml0cyArPSAzMjtcbiAgICBcbiAgaWYgKHRoaXMubW9kZSA9PT0gZXhwb3J0cy5ERUZMQVRFUkFXIHx8IHRoaXMubW9kZSA9PT0gZXhwb3J0cy5JTkZMQVRFUkFXKVxuICAgIHRoaXMud2luZG93Qml0cyA9IC10aGlzLndpbmRvd0JpdHM7XG4gICAgXG4gIHRoaXMuc3RybSA9IG5ldyB6c3RyZWFtKCk7XG4gIFxuICBzd2l0Y2ggKHRoaXMubW9kZSkge1xuICAgIGNhc2UgZXhwb3J0cy5ERUZMQVRFOlxuICAgIGNhc2UgZXhwb3J0cy5HWklQOlxuICAgIGNhc2UgZXhwb3J0cy5ERUZMQVRFUkFXOlxuICAgICAgdmFyIHN0YXR1cyA9IHpsaWJfZGVmbGF0ZS5kZWZsYXRlSW5pdDIoXG4gICAgICAgIHRoaXMuc3RybSxcbiAgICAgICAgdGhpcy5sZXZlbCxcbiAgICAgICAgZXhwb3J0cy5aX0RFRkxBVEVELFxuICAgICAgICB0aGlzLndpbmRvd0JpdHMsXG4gICAgICAgIHRoaXMubWVtTGV2ZWwsXG4gICAgICAgIHRoaXMuc3RyYXRlZ3lcbiAgICAgICk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIGV4cG9ydHMuSU5GTEFURTpcbiAgICBjYXNlIGV4cG9ydHMuR1VOWklQOlxuICAgIGNhc2UgZXhwb3J0cy5JTkZMQVRFUkFXOlxuICAgIGNhc2UgZXhwb3J0cy5VTlpJUDpcbiAgICAgIHZhciBzdGF0dXMgID0gemxpYl9pbmZsYXRlLmluZmxhdGVJbml0MihcbiAgICAgICAgdGhpcy5zdHJtLFxuICAgICAgICB0aGlzLndpbmRvd0JpdHNcbiAgICAgICk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVW5rbm93biBtb2RlIFwiICsgdGhpcy5tb2RlKTtcbiAgfVxuICBcbiAgaWYgKHN0YXR1cyAhPT0gZXhwb3J0cy5aX09LKSB7XG4gICAgdGhpcy5fZXJyb3Ioc3RhdHVzKTtcbiAgICByZXR1cm47XG4gIH1cbiAgXG4gIHRoaXMud3JpdGVfaW5fcHJvZ3Jlc3MgPSBmYWxzZTtcbiAgdGhpcy5pbml0X2RvbmUgPSB0cnVlO1xufTtcblxuWmxpYi5wcm90b3R5cGUucGFyYW1zID0gZnVuY3Rpb24oKSB7XG4gIHRocm93IG5ldyBFcnJvcihcImRlZmxhdGVQYXJhbXMgTm90IHN1cHBvcnRlZFwiKTtcbn07XG5cblpsaWIucHJvdG90eXBlLl93cml0ZUNoZWNrID0gZnVuY3Rpb24oKSB7XG4gIGlmICghdGhpcy5pbml0X2RvbmUpXG4gICAgdGhyb3cgbmV3IEVycm9yKFwid3JpdGUgYmVmb3JlIGluaXRcIik7XG4gICAgXG4gIGlmICh0aGlzLm1vZGUgPT09IGV4cG9ydHMuTk9ORSlcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJhbHJlYWR5IGZpbmFsaXplZFwiKTtcbiAgICBcbiAgaWYgKHRoaXMud3JpdGVfaW5fcHJvZ3Jlc3MpXG4gICAgdGhyb3cgbmV3IEVycm9yKFwid3JpdGUgYWxyZWFkeSBpbiBwcm9ncmVzc1wiKTtcbiAgICBcbiAgaWYgKHRoaXMucGVuZGluZ19jbG9zZSlcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJjbG9zZSBpcyBwZW5kaW5nXCIpO1xufTtcblxuWmxpYi5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbihmbHVzaCwgaW5wdXQsIGluX29mZiwgaW5fbGVuLCBvdXQsIG91dF9vZmYsIG91dF9sZW4pIHsgICAgXG4gIHRoaXMuX3dyaXRlQ2hlY2soKTtcbiAgdGhpcy53cml0ZV9pbl9wcm9ncmVzcyA9IHRydWU7XG4gIFxuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHByb2Nlc3MubmV4dFRpY2soZnVuY3Rpb24oKSB7XG4gICAgc2VsZi53cml0ZV9pbl9wcm9ncmVzcyA9IGZhbHNlO1xuICAgIHZhciByZXMgPSBzZWxmLl93cml0ZShmbHVzaCwgaW5wdXQsIGluX29mZiwgaW5fbGVuLCBvdXQsIG91dF9vZmYsIG91dF9sZW4pO1xuICAgIHNlbGYuY2FsbGJhY2socmVzWzBdLCByZXNbMV0pO1xuICAgIFxuICAgIGlmIChzZWxmLnBlbmRpbmdfY2xvc2UpXG4gICAgICBzZWxmLmNsb3NlKCk7XG4gIH0pO1xuICBcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vLyBzZXQgbWV0aG9kIGZvciBOb2RlIGJ1ZmZlcnMsIHVzZWQgYnkgcGFrb1xuZnVuY3Rpb24gYnVmZmVyU2V0KGRhdGEsIG9mZnNldCkge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyBpKyspIHtcbiAgICB0aGlzW29mZnNldCArIGldID0gZGF0YVtpXTtcbiAgfVxufVxuXG5abGliLnByb3RvdHlwZS53cml0ZVN5bmMgPSBmdW5jdGlvbihmbHVzaCwgaW5wdXQsIGluX29mZiwgaW5fbGVuLCBvdXQsIG91dF9vZmYsIG91dF9sZW4pIHtcbiAgdGhpcy5fd3JpdGVDaGVjaygpO1xuICByZXR1cm4gdGhpcy5fd3JpdGUoZmx1c2gsIGlucHV0LCBpbl9vZmYsIGluX2xlbiwgb3V0LCBvdXRfb2ZmLCBvdXRfbGVuKTtcbn07XG5cblpsaWIucHJvdG90eXBlLl93cml0ZSA9IGZ1bmN0aW9uKGZsdXNoLCBpbnB1dCwgaW5fb2ZmLCBpbl9sZW4sIG91dCwgb3V0X29mZiwgb3V0X2xlbikge1xuICB0aGlzLndyaXRlX2luX3Byb2dyZXNzID0gdHJ1ZTtcbiAgXG4gIGlmIChmbHVzaCAhPT0gZXhwb3J0cy5aX05PX0ZMVVNIICYmXG4gICAgICBmbHVzaCAhPT0gZXhwb3J0cy5aX1BBUlRJQUxfRkxVU0ggJiZcbiAgICAgIGZsdXNoICE9PSBleHBvcnRzLlpfU1lOQ19GTFVTSCAmJlxuICAgICAgZmx1c2ggIT09IGV4cG9ydHMuWl9GVUxMX0ZMVVNIICYmXG4gICAgICBmbHVzaCAhPT0gZXhwb3J0cy5aX0ZJTklTSCAmJlxuICAgICAgZmx1c2ggIT09IGV4cG9ydHMuWl9CTE9DSykge1xuICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgZmx1c2ggdmFsdWVcIik7XG4gIH1cbiAgXG4gIGlmIChpbnB1dCA9PSBudWxsKSB7XG4gICAgaW5wdXQgPSBuZXcgQnVmZmVyKDApO1xuICAgIGluX2xlbiA9IDA7XG4gICAgaW5fb2ZmID0gMDtcbiAgfVxuICBcbiAgaWYgKG91dC5fc2V0KVxuICAgIG91dC5zZXQgPSBvdXQuX3NldDtcbiAgZWxzZVxuICAgIG91dC5zZXQgPSBidWZmZXJTZXQ7XG4gIFxuICB2YXIgc3RybSA9IHRoaXMuc3RybTtcbiAgc3RybS5hdmFpbF9pbiA9IGluX2xlbjtcbiAgc3RybS5pbnB1dCA9IGlucHV0O1xuICBzdHJtLm5leHRfaW4gPSBpbl9vZmY7XG4gIHN0cm0uYXZhaWxfb3V0ID0gb3V0X2xlbjtcbiAgc3RybS5vdXRwdXQgPSBvdXQ7XG4gIHN0cm0ubmV4dF9vdXQgPSBvdXRfb2ZmO1xuICBcbiAgc3dpdGNoICh0aGlzLm1vZGUpIHtcbiAgICBjYXNlIGV4cG9ydHMuREVGTEFURTpcbiAgICBjYXNlIGV4cG9ydHMuR1pJUDpcbiAgICBjYXNlIGV4cG9ydHMuREVGTEFURVJBVzpcbiAgICAgIHZhciBzdGF0dXMgPSB6bGliX2RlZmxhdGUuZGVmbGF0ZShzdHJtLCBmbHVzaCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIGV4cG9ydHMuVU5aSVA6XG4gICAgY2FzZSBleHBvcnRzLklORkxBVEU6XG4gICAgY2FzZSBleHBvcnRzLkdVTlpJUDpcbiAgICBjYXNlIGV4cG9ydHMuSU5GTEFURVJBVzpcbiAgICAgIHZhciBzdGF0dXMgPSB6bGliX2luZmxhdGUuaW5mbGF0ZShzdHJtLCBmbHVzaCk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVW5rbm93biBtb2RlIFwiICsgdGhpcy5tb2RlKTtcbiAgfVxuICBcbiAgaWYgKHN0YXR1cyAhPT0gZXhwb3J0cy5aX1NUUkVBTV9FTkQgJiYgc3RhdHVzICE9PSBleHBvcnRzLlpfT0spIHtcbiAgICB0aGlzLl9lcnJvcihzdGF0dXMpO1xuICB9XG4gIFxuICB0aGlzLndyaXRlX2luX3Byb2dyZXNzID0gZmFsc2U7XG4gIHJldHVybiBbc3RybS5hdmFpbF9pbiwgc3RybS5hdmFpbF9vdXRdO1xufTtcblxuWmxpYi5wcm90b3R5cGUuY2xvc2UgPSBmdW5jdGlvbigpIHtcbiAgaWYgKHRoaXMud3JpdGVfaW5fcHJvZ3Jlc3MpIHtcbiAgICB0aGlzLnBlbmRpbmdfY2xvc2UgPSB0cnVlO1xuICAgIHJldHVybjtcbiAgfVxuICBcbiAgdGhpcy5wZW5kaW5nX2Nsb3NlID0gZmFsc2U7XG4gIFxuICBpZiAodGhpcy5tb2RlID09PSBleHBvcnRzLkRFRkxBVEUgfHwgdGhpcy5tb2RlID09PSBleHBvcnRzLkdaSVAgfHwgdGhpcy5tb2RlID09PSBleHBvcnRzLkRFRkxBVEVSQVcpIHtcbiAgICB6bGliX2RlZmxhdGUuZGVmbGF0ZUVuZCh0aGlzLnN0cm0pO1xuICB9IGVsc2Uge1xuICAgIHpsaWJfaW5mbGF0ZS5pbmZsYXRlRW5kKHRoaXMuc3RybSk7XG4gIH1cbiAgXG4gIHRoaXMubW9kZSA9IGV4cG9ydHMuTk9ORTtcbn07XG5cblpsaWIucHJvdG90eXBlLnJlc2V0ID0gZnVuY3Rpb24oKSB7XG4gIHN3aXRjaCAodGhpcy5tb2RlKSB7XG4gICAgY2FzZSBleHBvcnRzLkRFRkxBVEU6XG4gICAgY2FzZSBleHBvcnRzLkRFRkxBVEVSQVc6XG4gICAgICB2YXIgc3RhdHVzID0gemxpYl9kZWZsYXRlLmRlZmxhdGVSZXNldCh0aGlzLnN0cm0pO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBleHBvcnRzLklORkxBVEU6XG4gICAgY2FzZSBleHBvcnRzLklORkxBVEVSQVc6XG4gICAgICB2YXIgc3RhdHVzID0gemxpYl9pbmZsYXRlLmluZmxhdGVSZXNldCh0aGlzLnN0cm0pO1xuICAgICAgYnJlYWs7XG4gIH1cbiAgXG4gIGlmIChzdGF0dXMgIT09IGV4cG9ydHMuWl9PSykge1xuICAgIHRoaXMuX2Vycm9yKHN0YXR1cyk7XG4gIH1cbn07XG5cblpsaWIucHJvdG90eXBlLl9lcnJvciA9IGZ1bmN0aW9uKHN0YXR1cykge1xuICB0aGlzLm9uZXJyb3IobXNnW3N0YXR1c10gKyAnOiAnICsgdGhpcy5zdHJtLm1zZywgc3RhdHVzKTtcbiAgXG4gIHRoaXMud3JpdGVfaW5fcHJvZ3Jlc3MgPSBmYWxzZTtcbiAgaWYgKHRoaXMucGVuZGluZ19jbG9zZSlcbiAgICB0aGlzLmNsb3NlKCk7XG59O1xuXG5leHBvcnRzLlpsaWIgPSBabGliO1xuIiwiLy8gQ29weXJpZ2h0IEpveWVudCwgSW5jLiBhbmQgb3RoZXIgTm9kZSBjb250cmlidXRvcnMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbi8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGVcbi8vIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZ1xuLy8gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLFxuLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdFxuLy8gcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlXG4vLyBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZFxuLy8gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTU1xuLy8gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRlxuLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTlxuLy8gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sXG4vLyBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Jcbi8vIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEVcbi8vIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG5cbnZhciBUcmFuc2Zvcm0gPSByZXF1aXJlKCdfc3RyZWFtX3RyYW5zZm9ybScpO1xuXG52YXIgYmluZGluZyA9IHJlcXVpcmUoJy4vYmluZGluZycpO1xudmFyIHV0aWwgPSByZXF1aXJlKCd1dGlsJyk7XG52YXIgYXNzZXJ0ID0gcmVxdWlyZSgnYXNzZXJ0Jykub2s7XG5cbi8vIHpsaWIgZG9lc24ndCBwcm92aWRlIHRoZXNlLCBzbyBrbHVkZ2UgdGhlbSBpbiBmb2xsb3dpbmcgdGhlIHNhbWVcbi8vIGNvbnN0IG5hbWluZyBzY2hlbWUgemxpYiB1c2VzLlxuYmluZGluZy5aX01JTl9XSU5ET1dCSVRTID0gODtcbmJpbmRpbmcuWl9NQVhfV0lORE9XQklUUyA9IDE1O1xuYmluZGluZy5aX0RFRkFVTFRfV0lORE9XQklUUyA9IDE1O1xuXG4vLyBmZXdlciB0aGFuIDY0IGJ5dGVzIHBlciBjaHVuayBpcyBzdHVwaWQuXG4vLyB0ZWNobmljYWxseSBpdCBjb3VsZCB3b3JrIHdpdGggYXMgZmV3IGFzIDgsIGJ1dCBldmVuIDY0IGJ5dGVzXG4vLyBpcyBhYnN1cmRseSBsb3cuICBVc3VhbGx5IGEgTUIgb3IgbW9yZSBpcyBiZXN0LlxuYmluZGluZy5aX01JTl9DSFVOSyA9IDY0O1xuYmluZGluZy5aX01BWF9DSFVOSyA9IEluZmluaXR5O1xuYmluZGluZy5aX0RFRkFVTFRfQ0hVTksgPSAoMTYgKiAxMDI0KTtcblxuYmluZGluZy5aX01JTl9NRU1MRVZFTCA9IDE7XG5iaW5kaW5nLlpfTUFYX01FTUxFVkVMID0gOTtcbmJpbmRpbmcuWl9ERUZBVUxUX01FTUxFVkVMID0gODtcblxuYmluZGluZy5aX01JTl9MRVZFTCA9IC0xO1xuYmluZGluZy5aX01BWF9MRVZFTCA9IDk7XG5iaW5kaW5nLlpfREVGQVVMVF9MRVZFTCA9IGJpbmRpbmcuWl9ERUZBVUxUX0NPTVBSRVNTSU9OO1xuXG4vLyBleHBvc2UgYWxsIHRoZSB6bGliIGNvbnN0YW50c1xuT2JqZWN0LmtleXMoYmluZGluZykuZm9yRWFjaChmdW5jdGlvbihrKSB7XG4gIGlmIChrLm1hdGNoKC9eWi8pKSBleHBvcnRzW2tdID0gYmluZGluZ1trXTtcbn0pO1xuXG4vLyB0cmFuc2xhdGlvbiB0YWJsZSBmb3IgcmV0dXJuIGNvZGVzLlxuZXhwb3J0cy5jb2RlcyA9IHtcbiAgWl9PSzogYmluZGluZy5aX09LLFxuICBaX1NUUkVBTV9FTkQ6IGJpbmRpbmcuWl9TVFJFQU1fRU5ELFxuICBaX05FRURfRElDVDogYmluZGluZy5aX05FRURfRElDVCxcbiAgWl9FUlJOTzogYmluZGluZy5aX0VSUk5PLFxuICBaX1NUUkVBTV9FUlJPUjogYmluZGluZy5aX1NUUkVBTV9FUlJPUixcbiAgWl9EQVRBX0VSUk9SOiBiaW5kaW5nLlpfREFUQV9FUlJPUixcbiAgWl9NRU1fRVJST1I6IGJpbmRpbmcuWl9NRU1fRVJST1IsXG4gIFpfQlVGX0VSUk9SOiBiaW5kaW5nLlpfQlVGX0VSUk9SLFxuICBaX1ZFUlNJT05fRVJST1I6IGJpbmRpbmcuWl9WRVJTSU9OX0VSUk9SXG59O1xuXG5PYmplY3Qua2V5cyhleHBvcnRzLmNvZGVzKS5mb3JFYWNoKGZ1bmN0aW9uKGspIHtcbiAgZXhwb3J0cy5jb2Rlc1tleHBvcnRzLmNvZGVzW2tdXSA9IGs7XG59KTtcblxuZXhwb3J0cy5EZWZsYXRlID0gRGVmbGF0ZTtcbmV4cG9ydHMuSW5mbGF0ZSA9IEluZmxhdGU7XG5leHBvcnRzLkd6aXAgPSBHemlwO1xuZXhwb3J0cy5HdW56aXAgPSBHdW56aXA7XG5leHBvcnRzLkRlZmxhdGVSYXcgPSBEZWZsYXRlUmF3O1xuZXhwb3J0cy5JbmZsYXRlUmF3ID0gSW5mbGF0ZVJhdztcbmV4cG9ydHMuVW56aXAgPSBVbnppcDtcblxuZXhwb3J0cy5jcmVhdGVEZWZsYXRlID0gZnVuY3Rpb24obykge1xuICByZXR1cm4gbmV3IERlZmxhdGUobyk7XG59O1xuXG5leHBvcnRzLmNyZWF0ZUluZmxhdGUgPSBmdW5jdGlvbihvKSB7XG4gIHJldHVybiBuZXcgSW5mbGF0ZShvKTtcbn07XG5cbmV4cG9ydHMuY3JlYXRlRGVmbGF0ZVJhdyA9IGZ1bmN0aW9uKG8pIHtcbiAgcmV0dXJuIG5ldyBEZWZsYXRlUmF3KG8pO1xufTtcblxuZXhwb3J0cy5jcmVhdGVJbmZsYXRlUmF3ID0gZnVuY3Rpb24obykge1xuICByZXR1cm4gbmV3IEluZmxhdGVSYXcobyk7XG59O1xuXG5leHBvcnRzLmNyZWF0ZUd6aXAgPSBmdW5jdGlvbihvKSB7XG4gIHJldHVybiBuZXcgR3ppcChvKTtcbn07XG5cbmV4cG9ydHMuY3JlYXRlR3VuemlwID0gZnVuY3Rpb24obykge1xuICByZXR1cm4gbmV3IEd1bnppcChvKTtcbn07XG5cbmV4cG9ydHMuY3JlYXRlVW56aXAgPSBmdW5jdGlvbihvKSB7XG4gIHJldHVybiBuZXcgVW56aXAobyk7XG59O1xuXG5cbi8vIENvbnZlbmllbmNlIG1ldGhvZHMuXG4vLyBjb21wcmVzcy9kZWNvbXByZXNzIGEgc3RyaW5nIG9yIGJ1ZmZlciBpbiBvbmUgc3RlcC5cbmV4cG9ydHMuZGVmbGF0ZSA9IGZ1bmN0aW9uKGJ1ZmZlciwgb3B0cywgY2FsbGJhY2spIHtcbiAgaWYgKHR5cGVvZiBvcHRzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgY2FsbGJhY2sgPSBvcHRzO1xuICAgIG9wdHMgPSB7fTtcbiAgfVxuICByZXR1cm4gemxpYkJ1ZmZlcihuZXcgRGVmbGF0ZShvcHRzKSwgYnVmZmVyLCBjYWxsYmFjayk7XG59O1xuXG5leHBvcnRzLmRlZmxhdGVTeW5jID0gZnVuY3Rpb24oYnVmZmVyLCBvcHRzKSB7XG4gIHJldHVybiB6bGliQnVmZmVyU3luYyhuZXcgRGVmbGF0ZShvcHRzKSwgYnVmZmVyKTtcbn07XG5cbmV4cG9ydHMuZ3ppcCA9IGZ1bmN0aW9uKGJ1ZmZlciwgb3B0cywgY2FsbGJhY2spIHtcbiAgaWYgKHR5cGVvZiBvcHRzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgY2FsbGJhY2sgPSBvcHRzO1xuICAgIG9wdHMgPSB7fTtcbiAgfVxuICByZXR1cm4gemxpYkJ1ZmZlcihuZXcgR3ppcChvcHRzKSwgYnVmZmVyLCBjYWxsYmFjayk7XG59O1xuXG5leHBvcnRzLmd6aXBTeW5jID0gZnVuY3Rpb24oYnVmZmVyLCBvcHRzKSB7XG4gIHJldHVybiB6bGliQnVmZmVyU3luYyhuZXcgR3ppcChvcHRzKSwgYnVmZmVyKTtcbn07XG5cbmV4cG9ydHMuZGVmbGF0ZVJhdyA9IGZ1bmN0aW9uKGJ1ZmZlciwgb3B0cywgY2FsbGJhY2spIHtcbiAgaWYgKHR5cGVvZiBvcHRzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgY2FsbGJhY2sgPSBvcHRzO1xuICAgIG9wdHMgPSB7fTtcbiAgfVxuICByZXR1cm4gemxpYkJ1ZmZlcihuZXcgRGVmbGF0ZVJhdyhvcHRzKSwgYnVmZmVyLCBjYWxsYmFjayk7XG59O1xuXG5leHBvcnRzLmRlZmxhdGVSYXdTeW5jID0gZnVuY3Rpb24oYnVmZmVyLCBvcHRzKSB7XG4gIHJldHVybiB6bGliQnVmZmVyU3luYyhuZXcgRGVmbGF0ZVJhdyhvcHRzKSwgYnVmZmVyKTtcbn07XG5cbmV4cG9ydHMudW56aXAgPSBmdW5jdGlvbihidWZmZXIsIG9wdHMsIGNhbGxiYWNrKSB7XG4gIGlmICh0eXBlb2Ygb3B0cyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGNhbGxiYWNrID0gb3B0cztcbiAgICBvcHRzID0ge307XG4gIH1cbiAgcmV0dXJuIHpsaWJCdWZmZXIobmV3IFVuemlwKG9wdHMpLCBidWZmZXIsIGNhbGxiYWNrKTtcbn07XG5cbmV4cG9ydHMudW56aXBTeW5jID0gZnVuY3Rpb24oYnVmZmVyLCBvcHRzKSB7XG4gIHJldHVybiB6bGliQnVmZmVyU3luYyhuZXcgVW56aXAob3B0cyksIGJ1ZmZlcik7XG59O1xuXG5leHBvcnRzLmluZmxhdGUgPSBmdW5jdGlvbihidWZmZXIsIG9wdHMsIGNhbGxiYWNrKSB7XG4gIGlmICh0eXBlb2Ygb3B0cyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGNhbGxiYWNrID0gb3B0cztcbiAgICBvcHRzID0ge307XG4gIH1cbiAgcmV0dXJuIHpsaWJCdWZmZXIobmV3IEluZmxhdGUob3B0cyksIGJ1ZmZlciwgY2FsbGJhY2spO1xufTtcblxuZXhwb3J0cy5pbmZsYXRlU3luYyA9IGZ1bmN0aW9uKGJ1ZmZlciwgb3B0cykge1xuICByZXR1cm4gemxpYkJ1ZmZlclN5bmMobmV3IEluZmxhdGUob3B0cyksIGJ1ZmZlcik7XG59O1xuXG5leHBvcnRzLmd1bnppcCA9IGZ1bmN0aW9uKGJ1ZmZlciwgb3B0cywgY2FsbGJhY2spIHtcbiAgaWYgKHR5cGVvZiBvcHRzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgY2FsbGJhY2sgPSBvcHRzO1xuICAgIG9wdHMgPSB7fTtcbiAgfVxuICByZXR1cm4gemxpYkJ1ZmZlcihuZXcgR3VuemlwKG9wdHMpLCBidWZmZXIsIGNhbGxiYWNrKTtcbn07XG5cbmV4cG9ydHMuZ3VuemlwU3luYyA9IGZ1bmN0aW9uKGJ1ZmZlciwgb3B0cykge1xuICByZXR1cm4gemxpYkJ1ZmZlclN5bmMobmV3IEd1bnppcChvcHRzKSwgYnVmZmVyKTtcbn07XG5cbmV4cG9ydHMuaW5mbGF0ZVJhdyA9IGZ1bmN0aW9uKGJ1ZmZlciwgb3B0cywgY2FsbGJhY2spIHtcbiAgaWYgKHR5cGVvZiBvcHRzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgY2FsbGJhY2sgPSBvcHRzO1xuICAgIG9wdHMgPSB7fTtcbiAgfVxuICByZXR1cm4gemxpYkJ1ZmZlcihuZXcgSW5mbGF0ZVJhdyhvcHRzKSwgYnVmZmVyLCBjYWxsYmFjayk7XG59O1xuXG5leHBvcnRzLmluZmxhdGVSYXdTeW5jID0gZnVuY3Rpb24oYnVmZmVyLCBvcHRzKSB7XG4gIHJldHVybiB6bGliQnVmZmVyU3luYyhuZXcgSW5mbGF0ZVJhdyhvcHRzKSwgYnVmZmVyKTtcbn07XG5cbmZ1bmN0aW9uIHpsaWJCdWZmZXIoZW5naW5lLCBidWZmZXIsIGNhbGxiYWNrKSB7XG4gIHZhciBidWZmZXJzID0gW107XG4gIHZhciBucmVhZCA9IDA7XG5cbiAgZW5naW5lLm9uKCdlcnJvcicsIG9uRXJyb3IpO1xuICBlbmdpbmUub24oJ2VuZCcsIG9uRW5kKTtcblxuICBlbmdpbmUuZW5kKGJ1ZmZlcik7XG4gIGZsb3coKTtcblxuICBmdW5jdGlvbiBmbG93KCkge1xuICAgIHZhciBjaHVuaztcbiAgICB3aGlsZSAobnVsbCAhPT0gKGNodW5rID0gZW5naW5lLnJlYWQoKSkpIHtcbiAgICAgIGJ1ZmZlcnMucHVzaChjaHVuayk7XG4gICAgICBucmVhZCArPSBjaHVuay5sZW5ndGg7XG4gICAgfVxuICAgIGVuZ2luZS5vbmNlKCdyZWFkYWJsZScsIGZsb3cpO1xuICB9XG5cbiAgZnVuY3Rpb24gb25FcnJvcihlcnIpIHtcbiAgICBlbmdpbmUucmVtb3ZlTGlzdGVuZXIoJ2VuZCcsIG9uRW5kKTtcbiAgICBlbmdpbmUucmVtb3ZlTGlzdGVuZXIoJ3JlYWRhYmxlJywgZmxvdyk7XG4gICAgY2FsbGJhY2soZXJyKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG9uRW5kKCkge1xuICAgIHZhciBidWYgPSBCdWZmZXIuY29uY2F0KGJ1ZmZlcnMsIG5yZWFkKTtcbiAgICBidWZmZXJzID0gW107XG4gICAgY2FsbGJhY2sobnVsbCwgYnVmKTtcbiAgICBlbmdpbmUuY2xvc2UoKTtcbiAgfVxufVxuXG5mdW5jdGlvbiB6bGliQnVmZmVyU3luYyhlbmdpbmUsIGJ1ZmZlcikge1xuICBpZiAodHlwZW9mIGJ1ZmZlciA9PT0gJ3N0cmluZycpXG4gICAgYnVmZmVyID0gbmV3IEJ1ZmZlcihidWZmZXIpO1xuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihidWZmZXIpKVxuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ05vdCBhIHN0cmluZyBvciBidWZmZXInKTtcblxuICB2YXIgZmx1c2hGbGFnID0gYmluZGluZy5aX0ZJTklTSDtcblxuICByZXR1cm4gZW5naW5lLl9wcm9jZXNzQ2h1bmsoYnVmZmVyLCBmbHVzaEZsYWcpO1xufVxuXG4vLyBnZW5lcmljIHpsaWJcbi8vIG1pbmltYWwgMi1ieXRlIGhlYWRlclxuZnVuY3Rpb24gRGVmbGF0ZShvcHRzKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBEZWZsYXRlKSkgcmV0dXJuIG5ldyBEZWZsYXRlKG9wdHMpO1xuICBabGliLmNhbGwodGhpcywgb3B0cywgYmluZGluZy5ERUZMQVRFKTtcbn1cblxuZnVuY3Rpb24gSW5mbGF0ZShvcHRzKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBJbmZsYXRlKSkgcmV0dXJuIG5ldyBJbmZsYXRlKG9wdHMpO1xuICBabGliLmNhbGwodGhpcywgb3B0cywgYmluZGluZy5JTkZMQVRFKTtcbn1cblxuXG5cbi8vIGd6aXAgLSBiaWdnZXIgaGVhZGVyLCBzYW1lIGRlZmxhdGUgY29tcHJlc3Npb25cbmZ1bmN0aW9uIEd6aXAob3B0cykge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgR3ppcCkpIHJldHVybiBuZXcgR3ppcChvcHRzKTtcbiAgWmxpYi5jYWxsKHRoaXMsIG9wdHMsIGJpbmRpbmcuR1pJUCk7XG59XG5cbmZ1bmN0aW9uIEd1bnppcChvcHRzKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBHdW56aXApKSByZXR1cm4gbmV3IEd1bnppcChvcHRzKTtcbiAgWmxpYi5jYWxsKHRoaXMsIG9wdHMsIGJpbmRpbmcuR1VOWklQKTtcbn1cblxuXG5cbi8vIHJhdyAtIG5vIGhlYWRlclxuZnVuY3Rpb24gRGVmbGF0ZVJhdyhvcHRzKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBEZWZsYXRlUmF3KSkgcmV0dXJuIG5ldyBEZWZsYXRlUmF3KG9wdHMpO1xuICBabGliLmNhbGwodGhpcywgb3B0cywgYmluZGluZy5ERUZMQVRFUkFXKTtcbn1cblxuZnVuY3Rpb24gSW5mbGF0ZVJhdyhvcHRzKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBJbmZsYXRlUmF3KSkgcmV0dXJuIG5ldyBJbmZsYXRlUmF3KG9wdHMpO1xuICBabGliLmNhbGwodGhpcywgb3B0cywgYmluZGluZy5JTkZMQVRFUkFXKTtcbn1cblxuXG4vLyBhdXRvLWRldGVjdCBoZWFkZXIuXG5mdW5jdGlvbiBVbnppcChvcHRzKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBVbnppcCkpIHJldHVybiBuZXcgVW56aXAob3B0cyk7XG4gIFpsaWIuY2FsbCh0aGlzLCBvcHRzLCBiaW5kaW5nLlVOWklQKTtcbn1cblxuXG4vLyB0aGUgWmxpYiBjbGFzcyB0aGV5IGFsbCBpbmhlcml0IGZyb21cbi8vIFRoaXMgdGhpbmcgbWFuYWdlcyB0aGUgcXVldWUgb2YgcmVxdWVzdHMsIGFuZCByZXR1cm5zXG4vLyB0cnVlIG9yIGZhbHNlIGlmIHRoZXJlIGlzIGFueXRoaW5nIGluIHRoZSBxdWV1ZSB3aGVuXG4vLyB5b3UgY2FsbCB0aGUgLndyaXRlKCkgbWV0aG9kLlxuXG5mdW5jdGlvbiBabGliKG9wdHMsIG1vZGUpIHtcbiAgdGhpcy5fb3B0cyA9IG9wdHMgPSBvcHRzIHx8IHt9O1xuICB0aGlzLl9jaHVua1NpemUgPSBvcHRzLmNodW5rU2l6ZSB8fCBleHBvcnRzLlpfREVGQVVMVF9DSFVOSztcblxuICBUcmFuc2Zvcm0uY2FsbCh0aGlzLCBvcHRzKTtcblxuICBpZiAob3B0cy5mbHVzaCkge1xuICAgIGlmIChvcHRzLmZsdXNoICE9PSBiaW5kaW5nLlpfTk9fRkxVU0ggJiZcbiAgICAgICAgb3B0cy5mbHVzaCAhPT0gYmluZGluZy5aX1BBUlRJQUxfRkxVU0ggJiZcbiAgICAgICAgb3B0cy5mbHVzaCAhPT0gYmluZGluZy5aX1NZTkNfRkxVU0ggJiZcbiAgICAgICAgb3B0cy5mbHVzaCAhPT0gYmluZGluZy5aX0ZVTExfRkxVU0ggJiZcbiAgICAgICAgb3B0cy5mbHVzaCAhPT0gYmluZGluZy5aX0ZJTklTSCAmJlxuICAgICAgICBvcHRzLmZsdXNoICE9PSBiaW5kaW5nLlpfQkxPQ0spIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBmbHVzaCBmbGFnOiAnICsgb3B0cy5mbHVzaCk7XG4gICAgfVxuICB9XG4gIHRoaXMuX2ZsdXNoRmxhZyA9IG9wdHMuZmx1c2ggfHwgYmluZGluZy5aX05PX0ZMVVNIO1xuXG4gIGlmIChvcHRzLmNodW5rU2l6ZSkge1xuICAgIGlmIChvcHRzLmNodW5rU2l6ZSA8IGV4cG9ydHMuWl9NSU5fQ0hVTksgfHxcbiAgICAgICAgb3B0cy5jaHVua1NpemUgPiBleHBvcnRzLlpfTUFYX0NIVU5LKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgY2h1bmsgc2l6ZTogJyArIG9wdHMuY2h1bmtTaXplKTtcbiAgICB9XG4gIH1cblxuICBpZiAob3B0cy53aW5kb3dCaXRzKSB7XG4gICAgaWYgKG9wdHMud2luZG93Qml0cyA8IGV4cG9ydHMuWl9NSU5fV0lORE9XQklUUyB8fFxuICAgICAgICBvcHRzLndpbmRvd0JpdHMgPiBleHBvcnRzLlpfTUFYX1dJTkRPV0JJVFMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCB3aW5kb3dCaXRzOiAnICsgb3B0cy53aW5kb3dCaXRzKTtcbiAgICB9XG4gIH1cblxuICBpZiAob3B0cy5sZXZlbCkge1xuICAgIGlmIChvcHRzLmxldmVsIDwgZXhwb3J0cy5aX01JTl9MRVZFTCB8fFxuICAgICAgICBvcHRzLmxldmVsID4gZXhwb3J0cy5aX01BWF9MRVZFTCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGNvbXByZXNzaW9uIGxldmVsOiAnICsgb3B0cy5sZXZlbCk7XG4gICAgfVxuICB9XG5cbiAgaWYgKG9wdHMubWVtTGV2ZWwpIHtcbiAgICBpZiAob3B0cy5tZW1MZXZlbCA8IGV4cG9ydHMuWl9NSU5fTUVNTEVWRUwgfHxcbiAgICAgICAgb3B0cy5tZW1MZXZlbCA+IGV4cG9ydHMuWl9NQVhfTUVNTEVWRUwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBtZW1MZXZlbDogJyArIG9wdHMubWVtTGV2ZWwpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChvcHRzLnN0cmF0ZWd5KSB7XG4gICAgaWYgKG9wdHMuc3RyYXRlZ3kgIT0gZXhwb3J0cy5aX0ZJTFRFUkVEICYmXG4gICAgICAgIG9wdHMuc3RyYXRlZ3kgIT0gZXhwb3J0cy5aX0hVRkZNQU5fT05MWSAmJlxuICAgICAgICBvcHRzLnN0cmF0ZWd5ICE9IGV4cG9ydHMuWl9STEUgJiZcbiAgICAgICAgb3B0cy5zdHJhdGVneSAhPSBleHBvcnRzLlpfRklYRUQgJiZcbiAgICAgICAgb3B0cy5zdHJhdGVneSAhPSBleHBvcnRzLlpfREVGQVVMVF9TVFJBVEVHWSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHN0cmF0ZWd5OiAnICsgb3B0cy5zdHJhdGVneSk7XG4gICAgfVxuICB9XG5cbiAgaWYgKG9wdHMuZGljdGlvbmFyeSkge1xuICAgIGlmICghQnVmZmVyLmlzQnVmZmVyKG9wdHMuZGljdGlvbmFyeSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBkaWN0aW9uYXJ5OiBpdCBzaG91bGQgYmUgYSBCdWZmZXIgaW5zdGFuY2UnKTtcbiAgICB9XG4gIH1cblxuICB0aGlzLl9iaW5kaW5nID0gbmV3IGJpbmRpbmcuWmxpYihtb2RlKTtcblxuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHRoaXMuX2hhZEVycm9yID0gZmFsc2U7XG4gIHRoaXMuX2JpbmRpbmcub25lcnJvciA9IGZ1bmN0aW9uKG1lc3NhZ2UsIGVycm5vKSB7XG4gICAgLy8gdGhlcmUgaXMgbm8gd2F5IHRvIGNsZWFubHkgcmVjb3Zlci5cbiAgICAvLyBjb250aW51aW5nIG9ubHkgb2JzY3VyZXMgcHJvYmxlbXMuXG4gICAgc2VsZi5fYmluZGluZyA9IG51bGw7XG4gICAgc2VsZi5faGFkRXJyb3IgPSB0cnVlO1xuXG4gICAgdmFyIGVycm9yID0gbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIGVycm9yLmVycm5vID0gZXJybm87XG4gICAgZXJyb3IuY29kZSA9IGV4cG9ydHMuY29kZXNbZXJybm9dO1xuICAgIHNlbGYuZW1pdCgnZXJyb3InLCBlcnJvcik7XG4gIH07XG5cbiAgdmFyIGxldmVsID0gZXhwb3J0cy5aX0RFRkFVTFRfQ09NUFJFU1NJT047XG4gIGlmICh0eXBlb2Ygb3B0cy5sZXZlbCA9PT0gJ251bWJlcicpIGxldmVsID0gb3B0cy5sZXZlbDtcblxuICB2YXIgc3RyYXRlZ3kgPSBleHBvcnRzLlpfREVGQVVMVF9TVFJBVEVHWTtcbiAgaWYgKHR5cGVvZiBvcHRzLnN0cmF0ZWd5ID09PSAnbnVtYmVyJykgc3RyYXRlZ3kgPSBvcHRzLnN0cmF0ZWd5O1xuXG4gIHRoaXMuX2JpbmRpbmcuaW5pdChvcHRzLndpbmRvd0JpdHMgfHwgZXhwb3J0cy5aX0RFRkFVTFRfV0lORE9XQklUUyxcbiAgICAgICAgICAgICAgICAgICAgIGxldmVsLFxuICAgICAgICAgICAgICAgICAgICAgb3B0cy5tZW1MZXZlbCB8fCBleHBvcnRzLlpfREVGQVVMVF9NRU1MRVZFTCxcbiAgICAgICAgICAgICAgICAgICAgIHN0cmF0ZWd5LFxuICAgICAgICAgICAgICAgICAgICAgb3B0cy5kaWN0aW9uYXJ5KTtcblxuICB0aGlzLl9idWZmZXIgPSBuZXcgQnVmZmVyKHRoaXMuX2NodW5rU2l6ZSk7XG4gIHRoaXMuX29mZnNldCA9IDA7XG4gIHRoaXMuX2Nsb3NlZCA9IGZhbHNlO1xuICB0aGlzLl9sZXZlbCA9IGxldmVsO1xuICB0aGlzLl9zdHJhdGVneSA9IHN0cmF0ZWd5O1xuXG4gIHRoaXMub25jZSgnZW5kJywgdGhpcy5jbG9zZSk7XG59XG5cbnV0aWwuaW5oZXJpdHMoWmxpYiwgVHJhbnNmb3JtKTtcblxuWmxpYi5wcm90b3R5cGUucGFyYW1zID0gZnVuY3Rpb24obGV2ZWwsIHN0cmF0ZWd5LCBjYWxsYmFjaykge1xuICBpZiAobGV2ZWwgPCBleHBvcnRzLlpfTUlOX0xFVkVMIHx8XG4gICAgICBsZXZlbCA+IGV4cG9ydHMuWl9NQVhfTEVWRUwpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignSW52YWxpZCBjb21wcmVzc2lvbiBsZXZlbDogJyArIGxldmVsKTtcbiAgfVxuICBpZiAoc3RyYXRlZ3kgIT0gZXhwb3J0cy5aX0ZJTFRFUkVEICYmXG4gICAgICBzdHJhdGVneSAhPSBleHBvcnRzLlpfSFVGRk1BTl9PTkxZICYmXG4gICAgICBzdHJhdGVneSAhPSBleHBvcnRzLlpfUkxFICYmXG4gICAgICBzdHJhdGVneSAhPSBleHBvcnRzLlpfRklYRUQgJiZcbiAgICAgIHN0cmF0ZWd5ICE9IGV4cG9ydHMuWl9ERUZBVUxUX1NUUkFURUdZKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignSW52YWxpZCBzdHJhdGVneTogJyArIHN0cmF0ZWd5KTtcbiAgfVxuXG4gIGlmICh0aGlzLl9sZXZlbCAhPT0gbGV2ZWwgfHwgdGhpcy5fc3RyYXRlZ3kgIT09IHN0cmF0ZWd5KSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHRoaXMuZmx1c2goYmluZGluZy5aX1NZTkNfRkxVU0gsIGZ1bmN0aW9uKCkge1xuICAgICAgc2VsZi5fYmluZGluZy5wYXJhbXMobGV2ZWwsIHN0cmF0ZWd5KTtcbiAgICAgIGlmICghc2VsZi5faGFkRXJyb3IpIHtcbiAgICAgICAgc2VsZi5fbGV2ZWwgPSBsZXZlbDtcbiAgICAgICAgc2VsZi5fc3RyYXRlZ3kgPSBzdHJhdGVneTtcbiAgICAgICAgaWYgKGNhbGxiYWNrKSBjYWxsYmFjaygpO1xuICAgICAgfVxuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIHByb2Nlc3MubmV4dFRpY2soY2FsbGJhY2spO1xuICB9XG59O1xuXG5abGliLnByb3RvdHlwZS5yZXNldCA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gdGhpcy5fYmluZGluZy5yZXNldCgpO1xufTtcblxuLy8gVGhpcyBpcyB0aGUgX2ZsdXNoIGZ1bmN0aW9uIGNhbGxlZCBieSB0aGUgdHJhbnNmb3JtIGNsYXNzLFxuLy8gaW50ZXJuYWxseSwgd2hlbiB0aGUgbGFzdCBjaHVuayBoYXMgYmVlbiB3cml0dGVuLlxuWmxpYi5wcm90b3R5cGUuX2ZsdXNoID0gZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAgdGhpcy5fdHJhbnNmb3JtKG5ldyBCdWZmZXIoMCksICcnLCBjYWxsYmFjayk7XG59O1xuXG5abGliLnByb3RvdHlwZS5mbHVzaCA9IGZ1bmN0aW9uKGtpbmQsIGNhbGxiYWNrKSB7XG4gIHZhciB3cyA9IHRoaXMuX3dyaXRhYmxlU3RhdGU7XG5cbiAgaWYgKHR5cGVvZiBraW5kID09PSAnZnVuY3Rpb24nIHx8IChraW5kID09PSB2b2lkIDAgJiYgIWNhbGxiYWNrKSkge1xuICAgIGNhbGxiYWNrID0ga2luZDtcbiAgICBraW5kID0gYmluZGluZy5aX0ZVTExfRkxVU0g7XG4gIH1cblxuICBpZiAod3MuZW5kZWQpIHtcbiAgICBpZiAoY2FsbGJhY2spXG4gICAgICBwcm9jZXNzLm5leHRUaWNrKGNhbGxiYWNrKTtcbiAgfSBlbHNlIGlmICh3cy5lbmRpbmcpIHtcbiAgICBpZiAoY2FsbGJhY2spXG4gICAgICB0aGlzLm9uY2UoJ2VuZCcsIGNhbGxiYWNrKTtcbiAgfSBlbHNlIGlmICh3cy5uZWVkRHJhaW4pIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdGhpcy5vbmNlKCdkcmFpbicsIGZ1bmN0aW9uKCkge1xuICAgICAgc2VsZi5mbHVzaChjYWxsYmFjayk7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgdGhpcy5fZmx1c2hGbGFnID0ga2luZDtcbiAgICB0aGlzLndyaXRlKG5ldyBCdWZmZXIoMCksICcnLCBjYWxsYmFjayk7XG4gIH1cbn07XG5cblpsaWIucHJvdG90eXBlLmNsb3NlID0gZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAgaWYgKGNhbGxiYWNrKVxuICAgIHByb2Nlc3MubmV4dFRpY2soY2FsbGJhY2spO1xuXG4gIGlmICh0aGlzLl9jbG9zZWQpXG4gICAgcmV0dXJuO1xuXG4gIHRoaXMuX2Nsb3NlZCA9IHRydWU7XG5cbiAgdGhpcy5fYmluZGluZy5jbG9zZSgpO1xuXG4gIHZhciBzZWxmID0gdGhpcztcbiAgcHJvY2Vzcy5uZXh0VGljayhmdW5jdGlvbigpIHtcbiAgICBzZWxmLmVtaXQoJ2Nsb3NlJyk7XG4gIH0pO1xufTtcblxuWmxpYi5wcm90b3R5cGUuX3RyYW5zZm9ybSA9IGZ1bmN0aW9uKGNodW5rLCBlbmNvZGluZywgY2IpIHtcbiAgdmFyIGZsdXNoRmxhZztcbiAgdmFyIHdzID0gdGhpcy5fd3JpdGFibGVTdGF0ZTtcbiAgdmFyIGVuZGluZyA9IHdzLmVuZGluZyB8fCB3cy5lbmRlZDtcbiAgdmFyIGxhc3QgPSBlbmRpbmcgJiYgKCFjaHVuayB8fCB3cy5sZW5ndGggPT09IGNodW5rLmxlbmd0aCk7XG5cbiAgaWYgKCFjaHVuayA9PT0gbnVsbCAmJiAhQnVmZmVyLmlzQnVmZmVyKGNodW5rKSlcbiAgICByZXR1cm4gY2IobmV3IEVycm9yKCdpbnZhbGlkIGlucHV0JykpO1xuXG4gIC8vIElmIGl0J3MgdGhlIGxhc3QgY2h1bmssIG9yIGEgZmluYWwgZmx1c2gsIHdlIHVzZSB0aGUgWl9GSU5JU0ggZmx1c2ggZmxhZy5cbiAgLy8gSWYgaXQncyBleHBsaWNpdGx5IGZsdXNoaW5nIGF0IHNvbWUgb3RoZXIgdGltZSwgdGhlbiB3ZSB1c2VcbiAgLy8gWl9GVUxMX0ZMVVNILiBPdGhlcndpc2UsIHVzZSBaX05PX0ZMVVNIIGZvciBtYXhpbXVtIGNvbXByZXNzaW9uXG4gIC8vIGdvb2RuZXNzLlxuICBpZiAobGFzdClcbiAgICBmbHVzaEZsYWcgPSBiaW5kaW5nLlpfRklOSVNIO1xuICBlbHNlIHtcbiAgICBmbHVzaEZsYWcgPSB0aGlzLl9mbHVzaEZsYWc7XG4gICAgLy8gb25jZSB3ZSd2ZSBmbHVzaGVkIHRoZSBsYXN0IG9mIHRoZSBxdWV1ZSwgc3RvcCBmbHVzaGluZyBhbmRcbiAgICAvLyBnbyBiYWNrIHRvIHRoZSBub3JtYWwgYmVoYXZpb3IuXG4gICAgaWYgKGNodW5rLmxlbmd0aCA+PSB3cy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuX2ZsdXNoRmxhZyA9IHRoaXMuX29wdHMuZmx1c2ggfHwgYmluZGluZy5aX05PX0ZMVVNIO1xuICAgIH1cbiAgfVxuXG4gIHZhciBzZWxmID0gdGhpcztcbiAgdGhpcy5fcHJvY2Vzc0NodW5rKGNodW5rLCBmbHVzaEZsYWcsIGNiKTtcbn07XG5cblpsaWIucHJvdG90eXBlLl9wcm9jZXNzQ2h1bmsgPSBmdW5jdGlvbihjaHVuaywgZmx1c2hGbGFnLCBjYikge1xuICB2YXIgYXZhaWxJbkJlZm9yZSA9IGNodW5rICYmIGNodW5rLmxlbmd0aDtcbiAgdmFyIGF2YWlsT3V0QmVmb3JlID0gdGhpcy5fY2h1bmtTaXplIC0gdGhpcy5fb2Zmc2V0O1xuICB2YXIgaW5PZmYgPSAwO1xuXG4gIHZhciBzZWxmID0gdGhpcztcblxuICB2YXIgYXN5bmMgPSB0eXBlb2YgY2IgPT09ICdmdW5jdGlvbic7XG5cbiAgaWYgKCFhc3luYykge1xuICAgIHZhciBidWZmZXJzID0gW107XG4gICAgdmFyIG5yZWFkID0gMDtcblxuICAgIHZhciBlcnJvcjtcbiAgICB0aGlzLm9uKCdlcnJvcicsIGZ1bmN0aW9uKGVyKSB7XG4gICAgICBlcnJvciA9IGVyO1xuICAgIH0pO1xuXG4gICAgZG8ge1xuICAgICAgdmFyIHJlcyA9IHRoaXMuX2JpbmRpbmcud3JpdGVTeW5jKGZsdXNoRmxhZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaHVuaywgLy8gaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbk9mZiwgLy8gaW5fb2ZmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZhaWxJbkJlZm9yZSwgLy8gaW5fbGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fYnVmZmVyLCAvLyBvdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9vZmZzZXQsIC8vb3V0X29mZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF2YWlsT3V0QmVmb3JlKTsgLy8gb3V0X2xlblxuICAgIH0gd2hpbGUgKCF0aGlzLl9oYWRFcnJvciAmJiBjYWxsYmFjayhyZXNbMF0sIHJlc1sxXSkpO1xuXG4gICAgaWYgKHRoaXMuX2hhZEVycm9yKSB7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG5cbiAgICB2YXIgYnVmID0gQnVmZmVyLmNvbmNhdChidWZmZXJzLCBucmVhZCk7XG4gICAgdGhpcy5jbG9zZSgpO1xuXG4gICAgcmV0dXJuIGJ1ZjtcbiAgfVxuXG4gIHZhciByZXEgPSB0aGlzLl9iaW5kaW5nLndyaXRlKGZsdXNoRmxhZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2h1bmssIC8vIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluT2ZmLCAvLyBpbl9vZmZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZhaWxJbkJlZm9yZSwgLy8gaW5fbGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2J1ZmZlciwgLy8gb3V0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX29mZnNldCwgLy9vdXRfb2ZmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF2YWlsT3V0QmVmb3JlKTsgLy8gb3V0X2xlblxuXG4gIHJlcS5idWZmZXIgPSBjaHVuaztcbiAgcmVxLmNhbGxiYWNrID0gY2FsbGJhY2s7XG5cbiAgZnVuY3Rpb24gY2FsbGJhY2soYXZhaWxJbkFmdGVyLCBhdmFpbE91dEFmdGVyKSB7XG4gICAgaWYgKHNlbGYuX2hhZEVycm9yKVxuICAgICAgcmV0dXJuO1xuXG4gICAgdmFyIGhhdmUgPSBhdmFpbE91dEJlZm9yZSAtIGF2YWlsT3V0QWZ0ZXI7XG4gICAgYXNzZXJ0KGhhdmUgPj0gMCwgJ2hhdmUgc2hvdWxkIG5vdCBnbyBkb3duJyk7XG5cbiAgICBpZiAoaGF2ZSA+IDApIHtcbiAgICAgIHZhciBvdXQgPSBzZWxmLl9idWZmZXIuc2xpY2Uoc2VsZi5fb2Zmc2V0LCBzZWxmLl9vZmZzZXQgKyBoYXZlKTtcbiAgICAgIHNlbGYuX29mZnNldCArPSBoYXZlO1xuICAgICAgLy8gc2VydmUgc29tZSBvdXRwdXQgdG8gdGhlIGNvbnN1bWVyLlxuICAgICAgaWYgKGFzeW5jKSB7XG4gICAgICAgIHNlbGYucHVzaChvdXQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYnVmZmVycy5wdXNoKG91dCk7XG4gICAgICAgIG5yZWFkICs9IG91dC5sZW5ndGg7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gZXhoYXVzdGVkIHRoZSBvdXRwdXQgYnVmZmVyLCBvciB1c2VkIGFsbCB0aGUgaW5wdXQgY3JlYXRlIGEgbmV3IG9uZS5cbiAgICBpZiAoYXZhaWxPdXRBZnRlciA9PT0gMCB8fCBzZWxmLl9vZmZzZXQgPj0gc2VsZi5fY2h1bmtTaXplKSB7XG4gICAgICBhdmFpbE91dEJlZm9yZSA9IHNlbGYuX2NodW5rU2l6ZTtcbiAgICAgIHNlbGYuX29mZnNldCA9IDA7XG4gICAgICBzZWxmLl9idWZmZXIgPSBuZXcgQnVmZmVyKHNlbGYuX2NodW5rU2l6ZSk7XG4gICAgfVxuXG4gICAgaWYgKGF2YWlsT3V0QWZ0ZXIgPT09IDApIHtcbiAgICAgIC8vIE5vdCBhY3R1YWxseSBkb25lLiAgTmVlZCB0byByZXByb2Nlc3MuXG4gICAgICAvLyBBbHNvLCB1cGRhdGUgdGhlIGF2YWlsSW5CZWZvcmUgdG8gdGhlIGF2YWlsSW5BZnRlciB2YWx1ZSxcbiAgICAgIC8vIHNvIHRoYXQgaWYgd2UgaGF2ZSB0byBoaXQgaXQgYSB0aGlyZCAoZm91cnRoLCBldGMuKSB0aW1lLFxuICAgICAgLy8gaXQnbGwgaGF2ZSB0aGUgY29ycmVjdCBieXRlIGNvdW50cy5cbiAgICAgIGluT2ZmICs9IChhdmFpbEluQmVmb3JlIC0gYXZhaWxJbkFmdGVyKTtcbiAgICAgIGF2YWlsSW5CZWZvcmUgPSBhdmFpbEluQWZ0ZXI7XG5cbiAgICAgIGlmICghYXN5bmMpXG4gICAgICAgIHJldHVybiB0cnVlO1xuXG4gICAgICB2YXIgbmV3UmVxID0gc2VsZi5fYmluZGluZy53cml0ZShmbHVzaEZsYWcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaHVuayxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluT2ZmLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZhaWxJbkJlZm9yZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2J1ZmZlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX29mZnNldCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2NodW5rU2l6ZSk7XG4gICAgICBuZXdSZXEuY2FsbGJhY2sgPSBjYWxsYmFjazsgLy8gdGhpcyBzYW1lIGZ1bmN0aW9uXG4gICAgICBuZXdSZXEuYnVmZmVyID0gY2h1bms7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCFhc3luYylcbiAgICAgIHJldHVybiBmYWxzZTtcblxuICAgIC8vIGZpbmlzaGVkIHdpdGggdGhlIGNodW5rLlxuICAgIGNiKCk7XG4gIH1cbn07XG5cbnV0aWwuaW5oZXJpdHMoRGVmbGF0ZSwgWmxpYik7XG51dGlsLmluaGVyaXRzKEluZmxhdGUsIFpsaWIpO1xudXRpbC5pbmhlcml0cyhHemlwLCBabGliKTtcbnV0aWwuaW5oZXJpdHMoR3VuemlwLCBabGliKTtcbnV0aWwuaW5oZXJpdHMoRGVmbGF0ZVJhdywgWmxpYik7XG51dGlsLmluaGVyaXRzKEluZmxhdGVSYXcsIFpsaWIpO1xudXRpbC5pbmhlcml0cyhVbnppcCwgWmxpYik7XG4iLCIvLyBDb3B5cmlnaHQgSm95ZW50LCBJbmMuIGFuZCBvdGhlciBOb2RlIGNvbnRyaWJ1dG9ycy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZVxuLy8gXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nXG4vLyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsXG4vLyBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0XG4vLyBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGVcbi8vIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkXG4vLyBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTXG4vLyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GXG4vLyBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOXG4vLyBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSxcbi8vIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUlxuLy8gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRVxuLy8gVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cblxudmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ2J1ZmZlcicpLkJ1ZmZlcjtcblxudmFyIGlzQnVmZmVyRW5jb2RpbmcgPSBCdWZmZXIuaXNFbmNvZGluZ1xuICB8fCBmdW5jdGlvbihlbmNvZGluZykge1xuICAgICAgIHN3aXRjaCAoZW5jb2RpbmcgJiYgZW5jb2RpbmcudG9Mb3dlckNhc2UoKSkge1xuICAgICAgICAgY2FzZSAnaGV4JzogY2FzZSAndXRmOCc6IGNhc2UgJ3V0Zi04JzogY2FzZSAnYXNjaWknOiBjYXNlICdiaW5hcnknOiBjYXNlICdiYXNlNjQnOiBjYXNlICd1Y3MyJzogY2FzZSAndWNzLTInOiBjYXNlICd1dGYxNmxlJzogY2FzZSAndXRmLTE2bGUnOiBjYXNlICdyYXcnOiByZXR1cm4gdHJ1ZTtcbiAgICAgICAgIGRlZmF1bHQ6IHJldHVybiBmYWxzZTtcbiAgICAgICB9XG4gICAgIH1cblxuXG5mdW5jdGlvbiBhc3NlcnRFbmNvZGluZyhlbmNvZGluZykge1xuICBpZiAoZW5jb2RpbmcgJiYgIWlzQnVmZmVyRW5jb2RpbmcoZW5jb2RpbmcpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIGVuY29kaW5nOiAnICsgZW5jb2RpbmcpO1xuICB9XG59XG5cbi8vIFN0cmluZ0RlY29kZXIgcHJvdmlkZXMgYW4gaW50ZXJmYWNlIGZvciBlZmZpY2llbnRseSBzcGxpdHRpbmcgYSBzZXJpZXMgb2Zcbi8vIGJ1ZmZlcnMgaW50byBhIHNlcmllcyBvZiBKUyBzdHJpbmdzIHdpdGhvdXQgYnJlYWtpbmcgYXBhcnQgbXVsdGktYnl0ZVxuLy8gY2hhcmFjdGVycy4gQ0VTVS04IGlzIGhhbmRsZWQgYXMgcGFydCBvZiB0aGUgVVRGLTggZW5jb2RpbmcuXG4vL1xuLy8gQFRPRE8gSGFuZGxpbmcgYWxsIGVuY29kaW5ncyBpbnNpZGUgYSBzaW5nbGUgb2JqZWN0IG1ha2VzIGl0IHZlcnkgZGlmZmljdWx0XG4vLyB0byByZWFzb24gYWJvdXQgdGhpcyBjb2RlLCBzbyBpdCBzaG91bGQgYmUgc3BsaXQgdXAgaW4gdGhlIGZ1dHVyZS5cbi8vIEBUT0RPIFRoZXJlIHNob3VsZCBiZSBhIHV0Zjgtc3RyaWN0IGVuY29kaW5nIHRoYXQgcmVqZWN0cyBpbnZhbGlkIFVURi04IGNvZGVcbi8vIHBvaW50cyBhcyB1c2VkIGJ5IENFU1UtOC5cbnZhciBTdHJpbmdEZWNvZGVyID0gZXhwb3J0cy5TdHJpbmdEZWNvZGVyID0gZnVuY3Rpb24oZW5jb2RpbmcpIHtcbiAgdGhpcy5lbmNvZGluZyA9IChlbmNvZGluZyB8fCAndXRmOCcpLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvWy1fXS8sICcnKTtcbiAgYXNzZXJ0RW5jb2RpbmcoZW5jb2RpbmcpO1xuICBzd2l0Y2ggKHRoaXMuZW5jb2RpbmcpIHtcbiAgICBjYXNlICd1dGY4JzpcbiAgICAgIC8vIENFU1UtOCByZXByZXNlbnRzIGVhY2ggb2YgU3Vycm9nYXRlIFBhaXIgYnkgMy1ieXRlc1xuICAgICAgdGhpcy5zdXJyb2dhdGVTaXplID0gMztcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3VjczInOlxuICAgIGNhc2UgJ3V0ZjE2bGUnOlxuICAgICAgLy8gVVRGLTE2IHJlcHJlc2VudHMgZWFjaCBvZiBTdXJyb2dhdGUgUGFpciBieSAyLWJ5dGVzXG4gICAgICB0aGlzLnN1cnJvZ2F0ZVNpemUgPSAyO1xuICAgICAgdGhpcy5kZXRlY3RJbmNvbXBsZXRlQ2hhciA9IHV0ZjE2RGV0ZWN0SW5jb21wbGV0ZUNoYXI7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdiYXNlNjQnOlxuICAgICAgLy8gQmFzZS02NCBzdG9yZXMgMyBieXRlcyBpbiA0IGNoYXJzLCBhbmQgcGFkcyB0aGUgcmVtYWluZGVyLlxuICAgICAgdGhpcy5zdXJyb2dhdGVTaXplID0gMztcbiAgICAgIHRoaXMuZGV0ZWN0SW5jb21wbGV0ZUNoYXIgPSBiYXNlNjREZXRlY3RJbmNvbXBsZXRlQ2hhcjtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aGlzLndyaXRlID0gcGFzc1Rocm91Z2hXcml0ZTtcbiAgICAgIHJldHVybjtcbiAgfVxuXG4gIC8vIEVub3VnaCBzcGFjZSB0byBzdG9yZSBhbGwgYnl0ZXMgb2YgYSBzaW5nbGUgY2hhcmFjdGVyLiBVVEYtOCBuZWVkcyA0XG4gIC8vIGJ5dGVzLCBidXQgQ0VTVS04IG1heSByZXF1aXJlIHVwIHRvIDYgKDMgYnl0ZXMgcGVyIHN1cnJvZ2F0ZSkuXG4gIHRoaXMuY2hhckJ1ZmZlciA9IG5ldyBCdWZmZXIoNik7XG4gIC8vIE51bWJlciBvZiBieXRlcyByZWNlaXZlZCBmb3IgdGhlIGN1cnJlbnQgaW5jb21wbGV0ZSBtdWx0aS1ieXRlIGNoYXJhY3Rlci5cbiAgdGhpcy5jaGFyUmVjZWl2ZWQgPSAwO1xuICAvLyBOdW1iZXIgb2YgYnl0ZXMgZXhwZWN0ZWQgZm9yIHRoZSBjdXJyZW50IGluY29tcGxldGUgbXVsdGktYnl0ZSBjaGFyYWN0ZXIuXG4gIHRoaXMuY2hhckxlbmd0aCA9IDA7XG59O1xuXG5cbi8vIHdyaXRlIGRlY29kZXMgdGhlIGdpdmVuIGJ1ZmZlciBhbmQgcmV0dXJucyBpdCBhcyBKUyBzdHJpbmcgdGhhdCBpc1xuLy8gZ3VhcmFudGVlZCB0byBub3QgY29udGFpbiBhbnkgcGFydGlhbCBtdWx0aS1ieXRlIGNoYXJhY3RlcnMuIEFueSBwYXJ0aWFsXG4vLyBjaGFyYWN0ZXIgZm91bmQgYXQgdGhlIGVuZCBvZiB0aGUgYnVmZmVyIGlzIGJ1ZmZlcmVkIHVwLCBhbmQgd2lsbCBiZVxuLy8gcmV0dXJuZWQgd2hlbiBjYWxsaW5nIHdyaXRlIGFnYWluIHdpdGggdGhlIHJlbWFpbmluZyBieXRlcy5cbi8vXG4vLyBOb3RlOiBDb252ZXJ0aW5nIGEgQnVmZmVyIGNvbnRhaW5pbmcgYW4gb3JwaGFuIHN1cnJvZ2F0ZSB0byBhIFN0cmluZ1xuLy8gY3VycmVudGx5IHdvcmtzLCBidXQgY29udmVydGluZyBhIFN0cmluZyB0byBhIEJ1ZmZlciAodmlhIGBuZXcgQnVmZmVyYCwgb3Jcbi8vIEJ1ZmZlciN3cml0ZSkgd2lsbCByZXBsYWNlIGluY29tcGxldGUgc3Vycm9nYXRlcyB3aXRoIHRoZSB1bmljb2RlXG4vLyByZXBsYWNlbWVudCBjaGFyYWN0ZXIuIFNlZSBodHRwczovL2NvZGVyZXZpZXcuY2hyb21pdW0ub3JnLzEyMTE3MzAwOS8gLlxuU3RyaW5nRGVjb2Rlci5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbihidWZmZXIpIHtcbiAgdmFyIGNoYXJTdHIgPSAnJztcbiAgLy8gaWYgb3VyIGxhc3Qgd3JpdGUgZW5kZWQgd2l0aCBhbiBpbmNvbXBsZXRlIG11bHRpYnl0ZSBjaGFyYWN0ZXJcbiAgd2hpbGUgKHRoaXMuY2hhckxlbmd0aCkge1xuICAgIC8vIGRldGVybWluZSBob3cgbWFueSByZW1haW5pbmcgYnl0ZXMgdGhpcyBidWZmZXIgaGFzIHRvIG9mZmVyIGZvciB0aGlzIGNoYXJcbiAgICB2YXIgYXZhaWxhYmxlID0gKGJ1ZmZlci5sZW5ndGggPj0gdGhpcy5jaGFyTGVuZ3RoIC0gdGhpcy5jaGFyUmVjZWl2ZWQpID9cbiAgICAgICAgdGhpcy5jaGFyTGVuZ3RoIC0gdGhpcy5jaGFyUmVjZWl2ZWQgOlxuICAgICAgICBidWZmZXIubGVuZ3RoO1xuXG4gICAgLy8gYWRkIHRoZSBuZXcgYnl0ZXMgdG8gdGhlIGNoYXIgYnVmZmVyXG4gICAgYnVmZmVyLmNvcHkodGhpcy5jaGFyQnVmZmVyLCB0aGlzLmNoYXJSZWNlaXZlZCwgMCwgYXZhaWxhYmxlKTtcbiAgICB0aGlzLmNoYXJSZWNlaXZlZCArPSBhdmFpbGFibGU7XG5cbiAgICBpZiAodGhpcy5jaGFyUmVjZWl2ZWQgPCB0aGlzLmNoYXJMZW5ndGgpIHtcbiAgICAgIC8vIHN0aWxsIG5vdCBlbm91Z2ggY2hhcnMgaW4gdGhpcyBidWZmZXI/IHdhaXQgZm9yIG1vcmUgLi4uXG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgLy8gcmVtb3ZlIGJ5dGVzIGJlbG9uZ2luZyB0byB0aGUgY3VycmVudCBjaGFyYWN0ZXIgZnJvbSB0aGUgYnVmZmVyXG4gICAgYnVmZmVyID0gYnVmZmVyLnNsaWNlKGF2YWlsYWJsZSwgYnVmZmVyLmxlbmd0aCk7XG5cbiAgICAvLyBnZXQgdGhlIGNoYXJhY3RlciB0aGF0IHdhcyBzcGxpdFxuICAgIGNoYXJTdHIgPSB0aGlzLmNoYXJCdWZmZXIuc2xpY2UoMCwgdGhpcy5jaGFyTGVuZ3RoKS50b1N0cmluZyh0aGlzLmVuY29kaW5nKTtcblxuICAgIC8vIENFU1UtODogbGVhZCBzdXJyb2dhdGUgKEQ4MDAtREJGRikgaXMgYWxzbyB0aGUgaW5jb21wbGV0ZSBjaGFyYWN0ZXJcbiAgICB2YXIgY2hhckNvZGUgPSBjaGFyU3RyLmNoYXJDb2RlQXQoY2hhclN0ci5sZW5ndGggLSAxKTtcbiAgICBpZiAoY2hhckNvZGUgPj0gMHhEODAwICYmIGNoYXJDb2RlIDw9IDB4REJGRikge1xuICAgICAgdGhpcy5jaGFyTGVuZ3RoICs9IHRoaXMuc3Vycm9nYXRlU2l6ZTtcbiAgICAgIGNoYXJTdHIgPSAnJztcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICB0aGlzLmNoYXJSZWNlaXZlZCA9IHRoaXMuY2hhckxlbmd0aCA9IDA7XG5cbiAgICAvLyBpZiB0aGVyZSBhcmUgbm8gbW9yZSBieXRlcyBpbiB0aGlzIGJ1ZmZlciwganVzdCBlbWl0IG91ciBjaGFyXG4gICAgaWYgKGJ1ZmZlci5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBjaGFyU3RyO1xuICAgIH1cbiAgICBicmVhaztcbiAgfVxuXG4gIC8vIGRldGVybWluZSBhbmQgc2V0IGNoYXJMZW5ndGggLyBjaGFyUmVjZWl2ZWRcbiAgdGhpcy5kZXRlY3RJbmNvbXBsZXRlQ2hhcihidWZmZXIpO1xuXG4gIHZhciBlbmQgPSBidWZmZXIubGVuZ3RoO1xuICBpZiAodGhpcy5jaGFyTGVuZ3RoKSB7XG4gICAgLy8gYnVmZmVyIHRoZSBpbmNvbXBsZXRlIGNoYXJhY3RlciBieXRlcyB3ZSBnb3RcbiAgICBidWZmZXIuY29weSh0aGlzLmNoYXJCdWZmZXIsIDAsIGJ1ZmZlci5sZW5ndGggLSB0aGlzLmNoYXJSZWNlaXZlZCwgZW5kKTtcbiAgICBlbmQgLT0gdGhpcy5jaGFyUmVjZWl2ZWQ7XG4gIH1cblxuICBjaGFyU3RyICs9IGJ1ZmZlci50b1N0cmluZyh0aGlzLmVuY29kaW5nLCAwLCBlbmQpO1xuXG4gIHZhciBlbmQgPSBjaGFyU3RyLmxlbmd0aCAtIDE7XG4gIHZhciBjaGFyQ29kZSA9IGNoYXJTdHIuY2hhckNvZGVBdChlbmQpO1xuICAvLyBDRVNVLTg6IGxlYWQgc3Vycm9nYXRlIChEODAwLURCRkYpIGlzIGFsc28gdGhlIGluY29tcGxldGUgY2hhcmFjdGVyXG4gIGlmIChjaGFyQ29kZSA+PSAweEQ4MDAgJiYgY2hhckNvZGUgPD0gMHhEQkZGKSB7XG4gICAgdmFyIHNpemUgPSB0aGlzLnN1cnJvZ2F0ZVNpemU7XG4gICAgdGhpcy5jaGFyTGVuZ3RoICs9IHNpemU7XG4gICAgdGhpcy5jaGFyUmVjZWl2ZWQgKz0gc2l6ZTtcbiAgICB0aGlzLmNoYXJCdWZmZXIuY29weSh0aGlzLmNoYXJCdWZmZXIsIHNpemUsIDAsIHNpemUpO1xuICAgIGJ1ZmZlci5jb3B5KHRoaXMuY2hhckJ1ZmZlciwgMCwgMCwgc2l6ZSk7XG4gICAgcmV0dXJuIGNoYXJTdHIuc3Vic3RyaW5nKDAsIGVuZCk7XG4gIH1cblxuICAvLyBvciBqdXN0IGVtaXQgdGhlIGNoYXJTdHJcbiAgcmV0dXJuIGNoYXJTdHI7XG59O1xuXG4vLyBkZXRlY3RJbmNvbXBsZXRlQ2hhciBkZXRlcm1pbmVzIGlmIHRoZXJlIGlzIGFuIGluY29tcGxldGUgVVRGLTggY2hhcmFjdGVyIGF0XG4vLyB0aGUgZW5kIG9mIHRoZSBnaXZlbiBidWZmZXIuIElmIHNvLCBpdCBzZXRzIHRoaXMuY2hhckxlbmd0aCB0byB0aGUgYnl0ZVxuLy8gbGVuZ3RoIHRoYXQgY2hhcmFjdGVyLCBhbmQgc2V0cyB0aGlzLmNoYXJSZWNlaXZlZCB0byB0aGUgbnVtYmVyIG9mIGJ5dGVzXG4vLyB0aGF0IGFyZSBhdmFpbGFibGUgZm9yIHRoaXMgY2hhcmFjdGVyLlxuU3RyaW5nRGVjb2Rlci5wcm90b3R5cGUuZGV0ZWN0SW5jb21wbGV0ZUNoYXIgPSBmdW5jdGlvbihidWZmZXIpIHtcbiAgLy8gZGV0ZXJtaW5lIGhvdyBtYW55IGJ5dGVzIHdlIGhhdmUgdG8gY2hlY2sgYXQgdGhlIGVuZCBvZiB0aGlzIGJ1ZmZlclxuICB2YXIgaSA9IChidWZmZXIubGVuZ3RoID49IDMpID8gMyA6IGJ1ZmZlci5sZW5ndGg7XG5cbiAgLy8gRmlndXJlIG91dCBpZiBvbmUgb2YgdGhlIGxhc3QgaSBieXRlcyBvZiBvdXIgYnVmZmVyIGFubm91bmNlcyBhblxuICAvLyBpbmNvbXBsZXRlIGNoYXIuXG4gIGZvciAoOyBpID4gMDsgaS0tKSB7XG4gICAgdmFyIGMgPSBidWZmZXJbYnVmZmVyLmxlbmd0aCAtIGldO1xuXG4gICAgLy8gU2VlIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVVRGLTgjRGVzY3JpcHRpb25cblxuICAgIC8vIDExMFhYWFhYXG4gICAgaWYgKGkgPT0gMSAmJiBjID4+IDUgPT0gMHgwNikge1xuICAgICAgdGhpcy5jaGFyTGVuZ3RoID0gMjtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIC8vIDExMTBYWFhYXG4gICAgaWYgKGkgPD0gMiAmJiBjID4+IDQgPT0gMHgwRSkge1xuICAgICAgdGhpcy5jaGFyTGVuZ3RoID0gMztcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIC8vIDExMTEwWFhYXG4gICAgaWYgKGkgPD0gMyAmJiBjID4+IDMgPT0gMHgxRSkge1xuICAgICAgdGhpcy5jaGFyTGVuZ3RoID0gNDtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICB0aGlzLmNoYXJSZWNlaXZlZCA9IGk7XG59O1xuXG5TdHJpbmdEZWNvZGVyLnByb3RvdHlwZS5lbmQgPSBmdW5jdGlvbihidWZmZXIpIHtcbiAgdmFyIHJlcyA9ICcnO1xuICBpZiAoYnVmZmVyICYmIGJ1ZmZlci5sZW5ndGgpXG4gICAgcmVzID0gdGhpcy53cml0ZShidWZmZXIpO1xuXG4gIGlmICh0aGlzLmNoYXJSZWNlaXZlZCkge1xuICAgIHZhciBjciA9IHRoaXMuY2hhclJlY2VpdmVkO1xuICAgIHZhciBidWYgPSB0aGlzLmNoYXJCdWZmZXI7XG4gICAgdmFyIGVuYyA9IHRoaXMuZW5jb2Rpbmc7XG4gICAgcmVzICs9IGJ1Zi5zbGljZSgwLCBjcikudG9TdHJpbmcoZW5jKTtcbiAgfVxuXG4gIHJldHVybiByZXM7XG59O1xuXG5mdW5jdGlvbiBwYXNzVGhyb3VnaFdyaXRlKGJ1ZmZlcikge1xuICByZXR1cm4gYnVmZmVyLnRvU3RyaW5nKHRoaXMuZW5jb2RpbmcpO1xufVxuXG5mdW5jdGlvbiB1dGYxNkRldGVjdEluY29tcGxldGVDaGFyKGJ1ZmZlcikge1xuICB0aGlzLmNoYXJSZWNlaXZlZCA9IGJ1ZmZlci5sZW5ndGggJSAyO1xuICB0aGlzLmNoYXJMZW5ndGggPSB0aGlzLmNoYXJSZWNlaXZlZCA/IDIgOiAwO1xufVxuXG5mdW5jdGlvbiBiYXNlNjREZXRlY3RJbmNvbXBsZXRlQ2hhcihidWZmZXIpIHtcbiAgdGhpcy5jaGFyUmVjZWl2ZWQgPSBidWZmZXIubGVuZ3RoICUgMztcbiAgdGhpcy5jaGFyTGVuZ3RoID0gdGhpcy5jaGFyUmVjZWl2ZWQgPyAzIDogMDtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGJ1ZmZlciA9IHJlcXVpcmUoJ2J1ZmZlcicpO1xudmFyIEJ1ZmZlciA9IGJ1ZmZlci5CdWZmZXI7XG52YXIgU2xvd0J1ZmZlciA9IGJ1ZmZlci5TbG93QnVmZmVyO1xudmFyIE1BWF9MRU4gPSBidWZmZXIua01heExlbmd0aCB8fCAyMTQ3NDgzNjQ3O1xuZXhwb3J0cy5hbGxvYyA9IGZ1bmN0aW9uIGFsbG9jKHNpemUsIGZpbGwsIGVuY29kaW5nKSB7XG4gIGlmICh0eXBlb2YgQnVmZmVyLmFsbG9jID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIEJ1ZmZlci5hbGxvYyhzaXplLCBmaWxsLCBlbmNvZGluZyk7XG4gIH1cbiAgaWYgKHR5cGVvZiBlbmNvZGluZyA9PT0gJ251bWJlcicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdlbmNvZGluZyBtdXN0IG5vdCBiZSBudW1iZXInKTtcbiAgfVxuICBpZiAodHlwZW9mIHNpemUgIT09ICdudW1iZXInKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignc2l6ZSBtdXN0IGJlIGEgbnVtYmVyJyk7XG4gIH1cbiAgaWYgKHNpemUgPiBNQVhfTEVOKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ3NpemUgaXMgdG9vIGxhcmdlJyk7XG4gIH1cbiAgdmFyIGVuYyA9IGVuY29kaW5nO1xuICB2YXIgX2ZpbGwgPSBmaWxsO1xuICBpZiAoX2ZpbGwgPT09IHVuZGVmaW5lZCkge1xuICAgIGVuYyA9IHVuZGVmaW5lZDtcbiAgICBfZmlsbCA9IDA7XG4gIH1cbiAgdmFyIGJ1ZiA9IG5ldyBCdWZmZXIoc2l6ZSk7XG4gIGlmICh0eXBlb2YgX2ZpbGwgPT09ICdzdHJpbmcnKSB7XG4gICAgdmFyIGZpbGxCdWYgPSBuZXcgQnVmZmVyKF9maWxsLCBlbmMpO1xuICAgIHZhciBmbGVuID0gZmlsbEJ1Zi5sZW5ndGg7XG4gICAgdmFyIGkgPSAtMTtcbiAgICB3aGlsZSAoKytpIDwgc2l6ZSkge1xuICAgICAgYnVmW2ldID0gZmlsbEJ1ZltpICUgZmxlbl07XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGJ1Zi5maWxsKF9maWxsKTtcbiAgfVxuICByZXR1cm4gYnVmO1xufVxuZXhwb3J0cy5hbGxvY1Vuc2FmZSA9IGZ1bmN0aW9uIGFsbG9jVW5zYWZlKHNpemUpIHtcbiAgaWYgKHR5cGVvZiBCdWZmZXIuYWxsb2NVbnNhZmUgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gQnVmZmVyLmFsbG9jVW5zYWZlKHNpemUpO1xuICB9XG4gIGlmICh0eXBlb2Ygc2l6ZSAhPT0gJ251bWJlcicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdzaXplIG11c3QgYmUgYSBudW1iZXInKTtcbiAgfVxuICBpZiAoc2l6ZSA+IE1BWF9MRU4pIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignc2l6ZSBpcyB0b28gbGFyZ2UnKTtcbiAgfVxuICByZXR1cm4gbmV3IEJ1ZmZlcihzaXplKTtcbn1cbmV4cG9ydHMuZnJvbSA9IGZ1bmN0aW9uIGZyb20odmFsdWUsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aCkge1xuICBpZiAodHlwZW9mIEJ1ZmZlci5mcm9tID09PSAnZnVuY3Rpb24nICYmICghZ2xvYmFsLlVpbnQ4QXJyYXkgfHwgVWludDhBcnJheS5mcm9tICE9PSBCdWZmZXIuZnJvbSkpIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20odmFsdWUsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aCk7XG4gIH1cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdcInZhbHVlXCIgYXJndW1lbnQgbXVzdCBub3QgYmUgYSBudW1iZXInKTtcbiAgfVxuICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBuZXcgQnVmZmVyKHZhbHVlLCBlbmNvZGluZ09yT2Zmc2V0KTtcbiAgfVxuICBpZiAodHlwZW9mIEFycmF5QnVmZmVyICE9PSAndW5kZWZpbmVkJyAmJiB2YWx1ZSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKSB7XG4gICAgdmFyIG9mZnNldCA9IGVuY29kaW5nT3JPZmZzZXQ7XG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDEpIHtcbiAgICAgIHJldHVybiBuZXcgQnVmZmVyKHZhbHVlKTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBvZmZzZXQgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBvZmZzZXQgPSAwO1xuICAgIH1cbiAgICB2YXIgbGVuID0gbGVuZ3RoO1xuICAgIGlmICh0eXBlb2YgbGVuID09PSAndW5kZWZpbmVkJykge1xuICAgICAgbGVuID0gdmFsdWUuYnl0ZUxlbmd0aCAtIG9mZnNldDtcbiAgICB9XG4gICAgaWYgKG9mZnNldCA+PSB2YWx1ZS5ieXRlTGVuZ3RoKSB7XG4gICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignXFwnb2Zmc2V0XFwnIGlzIG91dCBvZiBib3VuZHMnKTtcbiAgICB9XG4gICAgaWYgKGxlbiA+IHZhbHVlLmJ5dGVMZW5ndGggLSBvZmZzZXQpIHtcbiAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdcXCdsZW5ndGhcXCcgaXMgb3V0IG9mIGJvdW5kcycpO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IEJ1ZmZlcih2YWx1ZS5zbGljZShvZmZzZXQsIG9mZnNldCArIGxlbikpO1xuICB9XG4gIGlmIChCdWZmZXIuaXNCdWZmZXIodmFsdWUpKSB7XG4gICAgdmFyIG91dCA9IG5ldyBCdWZmZXIodmFsdWUubGVuZ3RoKTtcbiAgICB2YWx1ZS5jb3B5KG91dCwgMCwgMCwgdmFsdWUubGVuZ3RoKTtcbiAgICByZXR1cm4gb3V0O1xuICB9XG4gIGlmICh2YWx1ZSkge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSB8fCAodHlwZW9mIEFycmF5QnVmZmVyICE9PSAndW5kZWZpbmVkJyAmJiB2YWx1ZS5idWZmZXIgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcikgfHwgJ2xlbmd0aCcgaW4gdmFsdWUpIHtcbiAgICAgIHJldHVybiBuZXcgQnVmZmVyKHZhbHVlKTtcbiAgICB9XG4gICAgaWYgKHZhbHVlLnR5cGUgPT09ICdCdWZmZXInICYmIEFycmF5LmlzQXJyYXkodmFsdWUuZGF0YSkpIHtcbiAgICAgIHJldHVybiBuZXcgQnVmZmVyKHZhbHVlLmRhdGEpO1xuICAgIH1cbiAgfVxuXG4gIHRocm93IG5ldyBUeXBlRXJyb3IoJ0ZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYSBzdHJpbmcsIEJ1ZmZlciwgJyArICdBcnJheUJ1ZmZlciwgQXJyYXksIG9yIGFycmF5LWxpa2Ugb2JqZWN0LicpO1xufVxuZXhwb3J0cy5hbGxvY1Vuc2FmZVNsb3cgPSBmdW5jdGlvbiBhbGxvY1Vuc2FmZVNsb3coc2l6ZSkge1xuICBpZiAodHlwZW9mIEJ1ZmZlci5hbGxvY1Vuc2FmZVNsb3cgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gQnVmZmVyLmFsbG9jVW5zYWZlU2xvdyhzaXplKTtcbiAgfVxuICBpZiAodHlwZW9mIHNpemUgIT09ICdudW1iZXInKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignc2l6ZSBtdXN0IGJlIGEgbnVtYmVyJyk7XG4gIH1cbiAgaWYgKHNpemUgPj0gTUFYX0xFTikge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdzaXplIGlzIHRvbyBsYXJnZScpO1xuICB9XG4gIHJldHVybiBuZXcgU2xvd0J1ZmZlcihzaXplKTtcbn1cbiIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24geG9yIChhLCBiKSB7XG4gIHZhciBsZW5ndGggPSBNYXRoLm1pbihhLmxlbmd0aCwgYi5sZW5ndGgpXG4gIHZhciBidWZmZXIgPSBuZXcgQnVmZmVyKGxlbmd0aClcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7XG4gICAgYnVmZmVyW2ldID0gYVtpXSBeIGJbaV1cbiAgfVxuXG4gIHJldHVybiBidWZmZXJcbn1cbiIsIi8qIVxuICogVGhlIGJ1ZmZlciBtb2R1bGUgZnJvbSBub2RlLmpzLCBmb3IgdGhlIGJyb3dzZXIuXG4gKlxuICogQGF1dGhvciAgIEZlcm9zcyBBYm91a2hhZGlqZWggPGZlcm9zc0BmZXJvc3Mub3JnPiA8aHR0cDovL2Zlcm9zcy5vcmc+XG4gKiBAbGljZW5zZSAgTUlUXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLXByb3RvICovXG5cbid1c2Ugc3RyaWN0J1xuXG52YXIgYmFzZTY0ID0gcmVxdWlyZSgnYmFzZTY0LWpzJylcbnZhciBpZWVlNzU0ID0gcmVxdWlyZSgnaWVlZTc1NCcpXG5cbmV4cG9ydHMuQnVmZmVyID0gQnVmZmVyXG5leHBvcnRzLlNsb3dCdWZmZXIgPSBTbG93QnVmZmVyXG5leHBvcnRzLklOU1BFQ1RfTUFYX0JZVEVTID0gNTBcblxudmFyIEtfTUFYX0xFTkdUSCA9IDB4N2ZmZmZmZmZcbmV4cG9ydHMua01heExlbmd0aCA9IEtfTUFYX0xFTkdUSFxuXG4vKipcbiAqIElmIGBCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVGA6XG4gKiAgID09PSB0cnVlICAgIFVzZSBVaW50OEFycmF5IGltcGxlbWVudGF0aW9uIChmYXN0ZXN0KVxuICogICA9PT0gZmFsc2UgICBQcmludCB3YXJuaW5nIGFuZCByZWNvbW1lbmQgdXNpbmcgYGJ1ZmZlcmAgdjQueCB3aGljaCBoYXMgYW4gT2JqZWN0XG4gKiAgICAgICAgICAgICAgIGltcGxlbWVudGF0aW9uIChtb3N0IGNvbXBhdGlibGUsIGV2ZW4gSUU2KVxuICpcbiAqIEJyb3dzZXJzIHRoYXQgc3VwcG9ydCB0eXBlZCBhcnJheXMgYXJlIElFIDEwKywgRmlyZWZveCA0KywgQ2hyb21lIDcrLCBTYWZhcmkgNS4xKyxcbiAqIE9wZXJhIDExLjYrLCBpT1MgNC4yKy5cbiAqXG4gKiBXZSByZXBvcnQgdGhhdCB0aGUgYnJvd3NlciBkb2VzIG5vdCBzdXBwb3J0IHR5cGVkIGFycmF5cyBpZiB0aGUgYXJlIG5vdCBzdWJjbGFzc2FibGVcbiAqIHVzaW5nIF9fcHJvdG9fXy4gRmlyZWZveCA0LTI5IGxhY2tzIHN1cHBvcnQgZm9yIGFkZGluZyBuZXcgcHJvcGVydGllcyB0byBgVWludDhBcnJheWBcbiAqIChTZWU6IGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTY5NTQzOCkuIElFIDEwIGxhY2tzIHN1cHBvcnRcbiAqIGZvciBfX3Byb3RvX18gYW5kIGhhcyBhIGJ1Z2d5IHR5cGVkIGFycmF5IGltcGxlbWVudGF0aW9uLlxuICovXG5CdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCA9IHR5cGVkQXJyYXlTdXBwb3J0KClcblxuaWYgKCFCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCAmJiB0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICB0eXBlb2YgY29uc29sZS5lcnJvciA9PT0gJ2Z1bmN0aW9uJykge1xuICBjb25zb2xlLmVycm9yKFxuICAgICdUaGlzIGJyb3dzZXIgbGFja3MgdHlwZWQgYXJyYXkgKFVpbnQ4QXJyYXkpIHN1cHBvcnQgd2hpY2ggaXMgcmVxdWlyZWQgYnkgJyArXG4gICAgJ2BidWZmZXJgIHY1LnguIFVzZSBgYnVmZmVyYCB2NC54IGlmIHlvdSByZXF1aXJlIG9sZCBicm93c2VyIHN1cHBvcnQuJ1xuICApXG59XG5cbmZ1bmN0aW9uIHR5cGVkQXJyYXlTdXBwb3J0ICgpIHtcbiAgLy8gQ2FuIHR5cGVkIGFycmF5IGluc3RhbmNlcyBjYW4gYmUgYXVnbWVudGVkP1xuICB0cnkge1xuICAgIHZhciBhcnIgPSBuZXcgVWludDhBcnJheSgxKVxuICAgIGFyci5fX3Byb3RvX18gPSB7X19wcm90b19fOiBVaW50OEFycmF5LnByb3RvdHlwZSwgZm9vOiBmdW5jdGlvbiAoKSB7IHJldHVybiA0MiB9fVxuICAgIHJldHVybiBhcnIuZm9vKCkgPT09IDQyXG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxufVxuXG5mdW5jdGlvbiBjcmVhdGVCdWZmZXIgKGxlbmd0aCkge1xuICBpZiAobGVuZ3RoID4gS19NQVhfTEVOR1RIKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0ludmFsaWQgdHlwZWQgYXJyYXkgbGVuZ3RoJylcbiAgfVxuICAvLyBSZXR1cm4gYW4gYXVnbWVudGVkIGBVaW50OEFycmF5YCBpbnN0YW5jZVxuICB2YXIgYnVmID0gbmV3IFVpbnQ4QXJyYXkobGVuZ3RoKVxuICBidWYuX19wcm90b19fID0gQnVmZmVyLnByb3RvdHlwZVxuICByZXR1cm4gYnVmXG59XG5cbi8qKlxuICogVGhlIEJ1ZmZlciBjb25zdHJ1Y3RvciByZXR1cm5zIGluc3RhbmNlcyBvZiBgVWludDhBcnJheWAgdGhhdCBoYXZlIHRoZWlyXG4gKiBwcm90b3R5cGUgY2hhbmdlZCB0byBgQnVmZmVyLnByb3RvdHlwZWAuIEZ1cnRoZXJtb3JlLCBgQnVmZmVyYCBpcyBhIHN1YmNsYXNzIG9mXG4gKiBgVWludDhBcnJheWAsIHNvIHRoZSByZXR1cm5lZCBpbnN0YW5jZXMgd2lsbCBoYXZlIGFsbCB0aGUgbm9kZSBgQnVmZmVyYCBtZXRob2RzXG4gKiBhbmQgdGhlIGBVaW50OEFycmF5YCBtZXRob2RzLiBTcXVhcmUgYnJhY2tldCBub3RhdGlvbiB3b3JrcyBhcyBleHBlY3RlZCAtLSBpdFxuICogcmV0dXJucyBhIHNpbmdsZSBvY3RldC5cbiAqXG4gKiBUaGUgYFVpbnQ4QXJyYXlgIHByb3RvdHlwZSByZW1haW5zIHVubW9kaWZpZWQuXG4gKi9cblxuZnVuY3Rpb24gQnVmZmVyIChhcmcsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aCkge1xuICAvLyBDb21tb24gY2FzZS5cbiAgaWYgKHR5cGVvZiBhcmcgPT09ICdudW1iZXInKSB7XG4gICAgaWYgKHR5cGVvZiBlbmNvZGluZ09yT2Zmc2V0ID09PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnSWYgZW5jb2RpbmcgaXMgc3BlY2lmaWVkIHRoZW4gdGhlIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYSBzdHJpbmcnXG4gICAgICApXG4gICAgfVxuICAgIHJldHVybiBhbGxvY1Vuc2FmZShhcmcpXG4gIH1cbiAgcmV0dXJuIGZyb20oYXJnLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpXG59XG5cbi8vIEZpeCBzdWJhcnJheSgpIGluIEVTMjAxNi4gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vZmVyb3NzL2J1ZmZlci9wdWxsLzk3XG5pZiAodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnNwZWNpZXMgJiZcbiAgICBCdWZmZXJbU3ltYm9sLnNwZWNpZXNdID09PSBCdWZmZXIpIHtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEJ1ZmZlciwgU3ltYm9sLnNwZWNpZXMsIHtcbiAgICB2YWx1ZTogbnVsbCxcbiAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgd3JpdGFibGU6IGZhbHNlXG4gIH0pXG59XG5cbkJ1ZmZlci5wb29sU2l6ZSA9IDgxOTIgLy8gbm90IHVzZWQgYnkgdGhpcyBpbXBsZW1lbnRhdGlvblxuXG5mdW5jdGlvbiBmcm9tICh2YWx1ZSwgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignXCJ2YWx1ZVwiIGFyZ3VtZW50IG11c3Qgbm90IGJlIGEgbnVtYmVyJylcbiAgfVxuXG4gIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKSB7XG4gICAgcmV0dXJuIGZyb21BcnJheUJ1ZmZlcih2YWx1ZSwgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKVxuICB9XG5cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gZnJvbVN0cmluZyh2YWx1ZSwgZW5jb2RpbmdPck9mZnNldClcbiAgfVxuXG4gIHJldHVybiBmcm9tT2JqZWN0KHZhbHVlKVxufVxuXG4vKipcbiAqIEZ1bmN0aW9uYWxseSBlcXVpdmFsZW50IHRvIEJ1ZmZlcihhcmcsIGVuY29kaW5nKSBidXQgdGhyb3dzIGEgVHlwZUVycm9yXG4gKiBpZiB2YWx1ZSBpcyBhIG51bWJlci5cbiAqIEJ1ZmZlci5mcm9tKHN0clssIGVuY29kaW5nXSlcbiAqIEJ1ZmZlci5mcm9tKGFycmF5KVxuICogQnVmZmVyLmZyb20oYnVmZmVyKVxuICogQnVmZmVyLmZyb20oYXJyYXlCdWZmZXJbLCBieXRlT2Zmc2V0WywgbGVuZ3RoXV0pXG4gKiovXG5CdWZmZXIuZnJvbSA9IGZ1bmN0aW9uICh2YWx1ZSwgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKSB7XG4gIHJldHVybiBmcm9tKHZhbHVlLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpXG59XG5cbi8vIE5vdGU6IENoYW5nZSBwcm90b3R5cGUgKmFmdGVyKiBCdWZmZXIuZnJvbSBpcyBkZWZpbmVkIHRvIHdvcmthcm91bmQgQ2hyb21lIGJ1Zzpcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mZXJvc3MvYnVmZmVyL3B1bGwvMTQ4XG5CdWZmZXIucHJvdG90eXBlLl9fcHJvdG9fXyA9IFVpbnQ4QXJyYXkucHJvdG90eXBlXG5CdWZmZXIuX19wcm90b19fID0gVWludDhBcnJheVxuXG5mdW5jdGlvbiBhc3NlcnRTaXplIChzaXplKSB7XG4gIGlmICh0eXBlb2Ygc2l6ZSAhPT0gJ251bWJlcicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdcInNpemVcIiBhcmd1bWVudCBtdXN0IGJlIGEgbnVtYmVyJylcbiAgfSBlbHNlIGlmIChzaXplIDwgMCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdcInNpemVcIiBhcmd1bWVudCBtdXN0IG5vdCBiZSBuZWdhdGl2ZScpXG4gIH1cbn1cblxuZnVuY3Rpb24gYWxsb2MgKHNpemUsIGZpbGwsIGVuY29kaW5nKSB7XG4gIGFzc2VydFNpemUoc2l6ZSlcbiAgaWYgKHNpemUgPD0gMCkge1xuICAgIHJldHVybiBjcmVhdGVCdWZmZXIoc2l6ZSlcbiAgfVxuICBpZiAoZmlsbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgLy8gT25seSBwYXkgYXR0ZW50aW9uIHRvIGVuY29kaW5nIGlmIGl0J3MgYSBzdHJpbmcuIFRoaXNcbiAgICAvLyBwcmV2ZW50cyBhY2NpZGVudGFsbHkgc2VuZGluZyBpbiBhIG51bWJlciB0aGF0IHdvdWxkXG4gICAgLy8gYmUgaW50ZXJwcmV0dGVkIGFzIGEgc3RhcnQgb2Zmc2V0LlxuICAgIHJldHVybiB0eXBlb2YgZW5jb2RpbmcgPT09ICdzdHJpbmcnXG4gICAgICA/IGNyZWF0ZUJ1ZmZlcihzaXplKS5maWxsKGZpbGwsIGVuY29kaW5nKVxuICAgICAgOiBjcmVhdGVCdWZmZXIoc2l6ZSkuZmlsbChmaWxsKVxuICB9XG4gIHJldHVybiBjcmVhdGVCdWZmZXIoc2l6ZSlcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IGZpbGxlZCBCdWZmZXIgaW5zdGFuY2UuXG4gKiBhbGxvYyhzaXplWywgZmlsbFssIGVuY29kaW5nXV0pXG4gKiovXG5CdWZmZXIuYWxsb2MgPSBmdW5jdGlvbiAoc2l6ZSwgZmlsbCwgZW5jb2RpbmcpIHtcbiAgcmV0dXJuIGFsbG9jKHNpemUsIGZpbGwsIGVuY29kaW5nKVxufVxuXG5mdW5jdGlvbiBhbGxvY1Vuc2FmZSAoc2l6ZSkge1xuICBhc3NlcnRTaXplKHNpemUpXG4gIHJldHVybiBjcmVhdGVCdWZmZXIoc2l6ZSA8IDAgPyAwIDogY2hlY2tlZChzaXplKSB8IDApXG59XG5cbi8qKlxuICogRXF1aXZhbGVudCB0byBCdWZmZXIobnVtKSwgYnkgZGVmYXVsdCBjcmVhdGVzIGEgbm9uLXplcm8tZmlsbGVkIEJ1ZmZlciBpbnN0YW5jZS5cbiAqICovXG5CdWZmZXIuYWxsb2NVbnNhZmUgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICByZXR1cm4gYWxsb2NVbnNhZmUoc2l6ZSlcbn1cbi8qKlxuICogRXF1aXZhbGVudCB0byBTbG93QnVmZmVyKG51bSksIGJ5IGRlZmF1bHQgY3JlYXRlcyBhIG5vbi16ZXJvLWZpbGxlZCBCdWZmZXIgaW5zdGFuY2UuXG4gKi9cbkJ1ZmZlci5hbGxvY1Vuc2FmZVNsb3cgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICByZXR1cm4gYWxsb2NVbnNhZmUoc2l6ZSlcbn1cblxuZnVuY3Rpb24gZnJvbVN0cmluZyAoc3RyaW5nLCBlbmNvZGluZykge1xuICBpZiAodHlwZW9mIGVuY29kaW5nICE9PSAnc3RyaW5nJyB8fCBlbmNvZGluZyA9PT0gJycpIHtcbiAgICBlbmNvZGluZyA9ICd1dGY4J1xuICB9XG5cbiAgaWYgKCFCdWZmZXIuaXNFbmNvZGluZyhlbmNvZGluZykpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdcImVuY29kaW5nXCIgbXVzdCBiZSBhIHZhbGlkIHN0cmluZyBlbmNvZGluZycpXG4gIH1cblxuICB2YXIgbGVuZ3RoID0gYnl0ZUxlbmd0aChzdHJpbmcsIGVuY29kaW5nKSB8IDBcbiAgdmFyIGJ1ZiA9IGNyZWF0ZUJ1ZmZlcihsZW5ndGgpXG5cbiAgdmFyIGFjdHVhbCA9IGJ1Zi53cml0ZShzdHJpbmcsIGVuY29kaW5nKVxuXG4gIGlmIChhY3R1YWwgIT09IGxlbmd0aCkge1xuICAgIC8vIFdyaXRpbmcgYSBoZXggc3RyaW5nLCBmb3IgZXhhbXBsZSwgdGhhdCBjb250YWlucyBpbnZhbGlkIGNoYXJhY3RlcnMgd2lsbFxuICAgIC8vIGNhdXNlIGV2ZXJ5dGhpbmcgYWZ0ZXIgdGhlIGZpcnN0IGludmFsaWQgY2hhcmFjdGVyIHRvIGJlIGlnbm9yZWQuIChlLmcuXG4gICAgLy8gJ2FieHhjZCcgd2lsbCBiZSB0cmVhdGVkIGFzICdhYicpXG4gICAgYnVmID0gYnVmLnNsaWNlKDAsIGFjdHVhbClcbiAgfVxuXG4gIHJldHVybiBidWZcbn1cblxuZnVuY3Rpb24gZnJvbUFycmF5TGlrZSAoYXJyYXkpIHtcbiAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aCA8IDAgPyAwIDogY2hlY2tlZChhcnJheS5sZW5ndGgpIHwgMFxuICB2YXIgYnVmID0gY3JlYXRlQnVmZmVyKGxlbmd0aClcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkgKz0gMSkge1xuICAgIGJ1ZltpXSA9IGFycmF5W2ldICYgMjU1XG4gIH1cbiAgcmV0dXJuIGJ1ZlxufVxuXG5mdW5jdGlvbiBmcm9tQXJyYXlCdWZmZXIgKGFycmF5LCBieXRlT2Zmc2V0LCBsZW5ndGgpIHtcbiAgaWYgKGJ5dGVPZmZzZXQgPCAwIHx8IGFycmF5LmJ5dGVMZW5ndGggPCBieXRlT2Zmc2V0KSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1xcJ29mZnNldFxcJyBpcyBvdXQgb2YgYm91bmRzJylcbiAgfVxuXG4gIGlmIChhcnJheS5ieXRlTGVuZ3RoIDwgYnl0ZU9mZnNldCArIChsZW5ndGggfHwgMCkpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignXFwnbGVuZ3RoXFwnIGlzIG91dCBvZiBib3VuZHMnKVxuICB9XG5cbiAgdmFyIGJ1ZlxuICBpZiAoYnl0ZU9mZnNldCA9PT0gdW5kZWZpbmVkICYmIGxlbmd0aCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgYnVmID0gbmV3IFVpbnQ4QXJyYXkoYXJyYXkpXG4gIH0gZWxzZSBpZiAobGVuZ3RoID09PSB1bmRlZmluZWQpIHtcbiAgICBidWYgPSBuZXcgVWludDhBcnJheShhcnJheSwgYnl0ZU9mZnNldClcbiAgfSBlbHNlIHtcbiAgICBidWYgPSBuZXcgVWludDhBcnJheShhcnJheSwgYnl0ZU9mZnNldCwgbGVuZ3RoKVxuICB9XG5cbiAgLy8gUmV0dXJuIGFuIGF1Z21lbnRlZCBgVWludDhBcnJheWAgaW5zdGFuY2VcbiAgYnVmLl9fcHJvdG9fXyA9IEJ1ZmZlci5wcm90b3R5cGVcbiAgcmV0dXJuIGJ1ZlxufVxuXG5mdW5jdGlvbiBmcm9tT2JqZWN0IChvYmopIHtcbiAgaWYgKEJ1ZmZlci5pc0J1ZmZlcihvYmopKSB7XG4gICAgdmFyIGxlbiA9IGNoZWNrZWQob2JqLmxlbmd0aCkgfCAwXG4gICAgdmFyIGJ1ZiA9IGNyZWF0ZUJ1ZmZlcihsZW4pXG5cbiAgICBpZiAoYnVmLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIGJ1ZlxuICAgIH1cblxuICAgIG9iai5jb3B5KGJ1ZiwgMCwgMCwgbGVuKVxuICAgIHJldHVybiBidWZcbiAgfVxuXG4gIGlmIChvYmopIHtcbiAgICBpZiAoaXNBcnJheUJ1ZmZlclZpZXcob2JqKSB8fCAnbGVuZ3RoJyBpbiBvYmopIHtcbiAgICAgIGlmICh0eXBlb2Ygb2JqLmxlbmd0aCAhPT0gJ251bWJlcicgfHwgbnVtYmVySXNOYU4ob2JqLmxlbmd0aCkpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZUJ1ZmZlcigwKVxuICAgICAgfVxuICAgICAgcmV0dXJuIGZyb21BcnJheUxpa2Uob2JqKVxuICAgIH1cblxuICAgIGlmIChvYmoudHlwZSA9PT0gJ0J1ZmZlcicgJiYgQXJyYXkuaXNBcnJheShvYmouZGF0YSkpIHtcbiAgICAgIHJldHVybiBmcm9tQXJyYXlMaWtlKG9iai5kYXRhKVxuICAgIH1cbiAgfVxuXG4gIHRocm93IG5ldyBUeXBlRXJyb3IoJ0ZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYSBzdHJpbmcsIEJ1ZmZlciwgQXJyYXlCdWZmZXIsIEFycmF5LCBvciBhcnJheS1saWtlIG9iamVjdC4nKVxufVxuXG5mdW5jdGlvbiBjaGVja2VkIChsZW5ndGgpIHtcbiAgLy8gTm90ZTogY2Fubm90IHVzZSBgbGVuZ3RoIDwgS19NQVhfTEVOR1RIYCBoZXJlIGJlY2F1c2UgdGhhdCBmYWlscyB3aGVuXG4gIC8vIGxlbmd0aCBpcyBOYU4gKHdoaWNoIGlzIG90aGVyd2lzZSBjb2VyY2VkIHRvIHplcm8uKVxuICBpZiAobGVuZ3RoID49IEtfTUFYX0xFTkdUSCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdBdHRlbXB0IHRvIGFsbG9jYXRlIEJ1ZmZlciBsYXJnZXIgdGhhbiBtYXhpbXVtICcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICdzaXplOiAweCcgKyBLX01BWF9MRU5HVEgudG9TdHJpbmcoMTYpICsgJyBieXRlcycpXG4gIH1cbiAgcmV0dXJuIGxlbmd0aCB8IDBcbn1cblxuZnVuY3Rpb24gU2xvd0J1ZmZlciAobGVuZ3RoKSB7XG4gIGlmICgrbGVuZ3RoICE9IGxlbmd0aCkgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGVxZXFlcVxuICAgIGxlbmd0aCA9IDBcbiAgfVxuICByZXR1cm4gQnVmZmVyLmFsbG9jKCtsZW5ndGgpXG59XG5cbkJ1ZmZlci5pc0J1ZmZlciA9IGZ1bmN0aW9uIGlzQnVmZmVyIChiKSB7XG4gIHJldHVybiBiICE9IG51bGwgJiYgYi5faXNCdWZmZXIgPT09IHRydWVcbn1cblxuQnVmZmVyLmNvbXBhcmUgPSBmdW5jdGlvbiBjb21wYXJlIChhLCBiKSB7XG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKGEpIHx8ICFCdWZmZXIuaXNCdWZmZXIoYikpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdBcmd1bWVudHMgbXVzdCBiZSBCdWZmZXJzJylcbiAgfVxuXG4gIGlmIChhID09PSBiKSByZXR1cm4gMFxuXG4gIHZhciB4ID0gYS5sZW5ndGhcbiAgdmFyIHkgPSBiLmxlbmd0aFxuXG4gIGZvciAodmFyIGkgPSAwLCBsZW4gPSBNYXRoLm1pbih4LCB5KTsgaSA8IGxlbjsgKytpKSB7XG4gICAgaWYgKGFbaV0gIT09IGJbaV0pIHtcbiAgICAgIHggPSBhW2ldXG4gICAgICB5ID0gYltpXVxuICAgICAgYnJlYWtcbiAgICB9XG4gIH1cblxuICBpZiAoeCA8IHkpIHJldHVybiAtMVxuICBpZiAoeSA8IHgpIHJldHVybiAxXG4gIHJldHVybiAwXG59XG5cbkJ1ZmZlci5pc0VuY29kaW5nID0gZnVuY3Rpb24gaXNFbmNvZGluZyAoZW5jb2RpbmcpIHtcbiAgc3dpdGNoIChTdHJpbmcoZW5jb2RpbmcpLnRvTG93ZXJDYXNlKCkpIHtcbiAgICBjYXNlICdoZXgnOlxuICAgIGNhc2UgJ3V0ZjgnOlxuICAgIGNhc2UgJ3V0Zi04JzpcbiAgICBjYXNlICdhc2NpaSc6XG4gICAgY2FzZSAnbGF0aW4xJzpcbiAgICBjYXNlICdiaW5hcnknOlxuICAgIGNhc2UgJ2Jhc2U2NCc6XG4gICAgY2FzZSAndWNzMic6XG4gICAgY2FzZSAndWNzLTInOlxuICAgIGNhc2UgJ3V0ZjE2bGUnOlxuICAgIGNhc2UgJ3V0Zi0xNmxlJzpcbiAgICAgIHJldHVybiB0cnVlXG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBmYWxzZVxuICB9XG59XG5cbkJ1ZmZlci5jb25jYXQgPSBmdW5jdGlvbiBjb25jYXQgKGxpc3QsIGxlbmd0aCkge1xuICBpZiAoIUFycmF5LmlzQXJyYXkobGlzdCkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdcImxpc3RcIiBhcmd1bWVudCBtdXN0IGJlIGFuIEFycmF5IG9mIEJ1ZmZlcnMnKVxuICB9XG5cbiAgaWYgKGxpc3QubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIEJ1ZmZlci5hbGxvYygwKVxuICB9XG5cbiAgdmFyIGlcbiAgaWYgKGxlbmd0aCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgbGVuZ3RoID0gMFxuICAgIGZvciAoaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgKytpKSB7XG4gICAgICBsZW5ndGggKz0gbGlzdFtpXS5sZW5ndGhcbiAgICB9XG4gIH1cblxuICB2YXIgYnVmZmVyID0gQnVmZmVyLmFsbG9jVW5zYWZlKGxlbmd0aClcbiAgdmFyIHBvcyA9IDBcbiAgZm9yIChpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyArK2kpIHtcbiAgICB2YXIgYnVmID0gbGlzdFtpXVxuICAgIGlmICghQnVmZmVyLmlzQnVmZmVyKGJ1ZikpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1wibGlzdFwiIGFyZ3VtZW50IG11c3QgYmUgYW4gQXJyYXkgb2YgQnVmZmVycycpXG4gICAgfVxuICAgIGJ1Zi5jb3B5KGJ1ZmZlciwgcG9zKVxuICAgIHBvcyArPSBidWYubGVuZ3RoXG4gIH1cbiAgcmV0dXJuIGJ1ZmZlclxufVxuXG5mdW5jdGlvbiBieXRlTGVuZ3RoIChzdHJpbmcsIGVuY29kaW5nKSB7XG4gIGlmIChCdWZmZXIuaXNCdWZmZXIoc3RyaW5nKSkge1xuICAgIHJldHVybiBzdHJpbmcubGVuZ3RoXG4gIH1cbiAgaWYgKGlzQXJyYXlCdWZmZXJWaWV3KHN0cmluZykgfHwgc3RyaW5nIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHtcbiAgICByZXR1cm4gc3RyaW5nLmJ5dGVMZW5ndGhcbiAgfVxuICBpZiAodHlwZW9mIHN0cmluZyAhPT0gJ3N0cmluZycpIHtcbiAgICBzdHJpbmcgPSAnJyArIHN0cmluZ1xuICB9XG5cbiAgdmFyIGxlbiA9IHN0cmluZy5sZW5ndGhcbiAgaWYgKGxlbiA9PT0gMCkgcmV0dXJuIDBcblxuICAvLyBVc2UgYSBmb3IgbG9vcCB0byBhdm9pZCByZWN1cnNpb25cbiAgdmFyIGxvd2VyZWRDYXNlID0gZmFsc2VcbiAgZm9yICg7Oykge1xuICAgIHN3aXRjaCAoZW5jb2RpbmcpIHtcbiAgICAgIGNhc2UgJ2FzY2lpJzpcbiAgICAgIGNhc2UgJ2xhdGluMSc6XG4gICAgICBjYXNlICdiaW5hcnknOlxuICAgICAgICByZXR1cm4gbGVuXG4gICAgICBjYXNlICd1dGY4JzpcbiAgICAgIGNhc2UgJ3V0Zi04JzpcbiAgICAgIGNhc2UgdW5kZWZpbmVkOlxuICAgICAgICByZXR1cm4gdXRmOFRvQnl0ZXMoc3RyaW5nKS5sZW5ndGhcbiAgICAgIGNhc2UgJ3VjczInOlxuICAgICAgY2FzZSAndWNzLTInOlxuICAgICAgY2FzZSAndXRmMTZsZSc6XG4gICAgICBjYXNlICd1dGYtMTZsZSc6XG4gICAgICAgIHJldHVybiBsZW4gKiAyXG4gICAgICBjYXNlICdoZXgnOlxuICAgICAgICByZXR1cm4gbGVuID4+PiAxXG4gICAgICBjYXNlICdiYXNlNjQnOlxuICAgICAgICByZXR1cm4gYmFzZTY0VG9CeXRlcyhzdHJpbmcpLmxlbmd0aFxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgaWYgKGxvd2VyZWRDYXNlKSByZXR1cm4gdXRmOFRvQnl0ZXMoc3RyaW5nKS5sZW5ndGggLy8gYXNzdW1lIHV0ZjhcbiAgICAgICAgZW5jb2RpbmcgPSAoJycgKyBlbmNvZGluZykudG9Mb3dlckNhc2UoKVxuICAgICAgICBsb3dlcmVkQ2FzZSA9IHRydWVcbiAgICB9XG4gIH1cbn1cbkJ1ZmZlci5ieXRlTGVuZ3RoID0gYnl0ZUxlbmd0aFxuXG5mdW5jdGlvbiBzbG93VG9TdHJpbmcgKGVuY29kaW5nLCBzdGFydCwgZW5kKSB7XG4gIHZhciBsb3dlcmVkQ2FzZSA9IGZhbHNlXG5cbiAgLy8gTm8gbmVlZCB0byB2ZXJpZnkgdGhhdCBcInRoaXMubGVuZ3RoIDw9IE1BWF9VSU5UMzJcIiBzaW5jZSBpdCdzIGEgcmVhZC1vbmx5XG4gIC8vIHByb3BlcnR5IG9mIGEgdHlwZWQgYXJyYXkuXG5cbiAgLy8gVGhpcyBiZWhhdmVzIG5laXRoZXIgbGlrZSBTdHJpbmcgbm9yIFVpbnQ4QXJyYXkgaW4gdGhhdCB3ZSBzZXQgc3RhcnQvZW5kXG4gIC8vIHRvIHRoZWlyIHVwcGVyL2xvd2VyIGJvdW5kcyBpZiB0aGUgdmFsdWUgcGFzc2VkIGlzIG91dCBvZiByYW5nZS5cbiAgLy8gdW5kZWZpbmVkIGlzIGhhbmRsZWQgc3BlY2lhbGx5IGFzIHBlciBFQ01BLTI2MiA2dGggRWRpdGlvbixcbiAgLy8gU2VjdGlvbiAxMy4zLjMuNyBSdW50aW1lIFNlbWFudGljczogS2V5ZWRCaW5kaW5nSW5pdGlhbGl6YXRpb24uXG4gIGlmIChzdGFydCA9PT0gdW5kZWZpbmVkIHx8IHN0YXJ0IDwgMCkge1xuICAgIHN0YXJ0ID0gMFxuICB9XG4gIC8vIFJldHVybiBlYXJseSBpZiBzdGFydCA+IHRoaXMubGVuZ3RoLiBEb25lIGhlcmUgdG8gcHJldmVudCBwb3RlbnRpYWwgdWludDMyXG4gIC8vIGNvZXJjaW9uIGZhaWwgYmVsb3cuXG4gIGlmIChzdGFydCA+IHRoaXMubGVuZ3RoKSB7XG4gICAgcmV0dXJuICcnXG4gIH1cblxuICBpZiAoZW5kID09PSB1bmRlZmluZWQgfHwgZW5kID4gdGhpcy5sZW5ndGgpIHtcbiAgICBlbmQgPSB0aGlzLmxlbmd0aFxuICB9XG5cbiAgaWYgKGVuZCA8PSAwKSB7XG4gICAgcmV0dXJuICcnXG4gIH1cblxuICAvLyBGb3JjZSBjb2Vyc2lvbiB0byB1aW50MzIuIFRoaXMgd2lsbCBhbHNvIGNvZXJjZSBmYWxzZXkvTmFOIHZhbHVlcyB0byAwLlxuICBlbmQgPj4+PSAwXG4gIHN0YXJ0ID4+Pj0gMFxuXG4gIGlmIChlbmQgPD0gc3RhcnQpIHtcbiAgICByZXR1cm4gJydcbiAgfVxuXG4gIGlmICghZW5jb2RpbmcpIGVuY29kaW5nID0gJ3V0ZjgnXG5cbiAgd2hpbGUgKHRydWUpIHtcbiAgICBzd2l0Y2ggKGVuY29kaW5nKSB7XG4gICAgICBjYXNlICdoZXgnOlxuICAgICAgICByZXR1cm4gaGV4U2xpY2UodGhpcywgc3RhcnQsIGVuZClcblxuICAgICAgY2FzZSAndXRmOCc6XG4gICAgICBjYXNlICd1dGYtOCc6XG4gICAgICAgIHJldHVybiB1dGY4U2xpY2UodGhpcywgc3RhcnQsIGVuZClcblxuICAgICAgY2FzZSAnYXNjaWknOlxuICAgICAgICByZXR1cm4gYXNjaWlTbGljZSh0aGlzLCBzdGFydCwgZW5kKVxuXG4gICAgICBjYXNlICdsYXRpbjEnOlxuICAgICAgY2FzZSAnYmluYXJ5JzpcbiAgICAgICAgcmV0dXJuIGxhdGluMVNsaWNlKHRoaXMsIHN0YXJ0LCBlbmQpXG5cbiAgICAgIGNhc2UgJ2Jhc2U2NCc6XG4gICAgICAgIHJldHVybiBiYXNlNjRTbGljZSh0aGlzLCBzdGFydCwgZW5kKVxuXG4gICAgICBjYXNlICd1Y3MyJzpcbiAgICAgIGNhc2UgJ3Vjcy0yJzpcbiAgICAgIGNhc2UgJ3V0ZjE2bGUnOlxuICAgICAgY2FzZSAndXRmLTE2bGUnOlxuICAgICAgICByZXR1cm4gdXRmMTZsZVNsaWNlKHRoaXMsIHN0YXJ0LCBlbmQpXG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGlmIChsb3dlcmVkQ2FzZSkgdGhyb3cgbmV3IFR5cGVFcnJvcignVW5rbm93biBlbmNvZGluZzogJyArIGVuY29kaW5nKVxuICAgICAgICBlbmNvZGluZyA9IChlbmNvZGluZyArICcnKS50b0xvd2VyQ2FzZSgpXG4gICAgICAgIGxvd2VyZWRDYXNlID0gdHJ1ZVxuICAgIH1cbiAgfVxufVxuXG4vLyBUaGlzIHByb3BlcnR5IGlzIHVzZWQgYnkgYEJ1ZmZlci5pc0J1ZmZlcmAgKGFuZCB0aGUgYGlzLWJ1ZmZlcmAgbnBtIHBhY2thZ2UpXG4vLyB0byBkZXRlY3QgYSBCdWZmZXIgaW5zdGFuY2UuIEl0J3Mgbm90IHBvc3NpYmxlIHRvIHVzZSBgaW5zdGFuY2VvZiBCdWZmZXJgXG4vLyByZWxpYWJseSBpbiBhIGJyb3dzZXJpZnkgY29udGV4dCBiZWNhdXNlIHRoZXJlIGNvdWxkIGJlIG11bHRpcGxlIGRpZmZlcmVudFxuLy8gY29waWVzIG9mIHRoZSAnYnVmZmVyJyBwYWNrYWdlIGluIHVzZS4gVGhpcyBtZXRob2Qgd29ya3MgZXZlbiBmb3IgQnVmZmVyXG4vLyBpbnN0YW5jZXMgdGhhdCB3ZXJlIGNyZWF0ZWQgZnJvbSBhbm90aGVyIGNvcHkgb2YgdGhlIGBidWZmZXJgIHBhY2thZ2UuXG4vLyBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9mZXJvc3MvYnVmZmVyL2lzc3Vlcy8xNTRcbkJ1ZmZlci5wcm90b3R5cGUuX2lzQnVmZmVyID0gdHJ1ZVxuXG5mdW5jdGlvbiBzd2FwIChiLCBuLCBtKSB7XG4gIHZhciBpID0gYltuXVxuICBiW25dID0gYlttXVxuICBiW21dID0gaVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnN3YXAxNiA9IGZ1bmN0aW9uIHN3YXAxNiAoKSB7XG4gIHZhciBsZW4gPSB0aGlzLmxlbmd0aFxuICBpZiAobGVuICUgMiAhPT0gMCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMTYtYml0cycpXG4gIH1cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkgKz0gMikge1xuICAgIHN3YXAodGhpcywgaSwgaSArIDEpXG4gIH1cbiAgcmV0dXJuIHRoaXNcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5zd2FwMzIgPSBmdW5jdGlvbiBzd2FwMzIgKCkge1xuICB2YXIgbGVuID0gdGhpcy5sZW5ndGhcbiAgaWYgKGxlbiAlIDQgIT09IDApIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignQnVmZmVyIHNpemUgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDMyLWJpdHMnKVxuICB9XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpICs9IDQpIHtcbiAgICBzd2FwKHRoaXMsIGksIGkgKyAzKVxuICAgIHN3YXAodGhpcywgaSArIDEsIGkgKyAyKVxuICB9XG4gIHJldHVybiB0aGlzXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUuc3dhcDY0ID0gZnVuY3Rpb24gc3dhcDY0ICgpIHtcbiAgdmFyIGxlbiA9IHRoaXMubGVuZ3RoXG4gIGlmIChsZW4gJSA4ICE9PSAwKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0J1ZmZlciBzaXplIG11c3QgYmUgYSBtdWx0aXBsZSBvZiA2NC1iaXRzJylcbiAgfVxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSArPSA4KSB7XG4gICAgc3dhcCh0aGlzLCBpLCBpICsgNylcbiAgICBzd2FwKHRoaXMsIGkgKyAxLCBpICsgNilcbiAgICBzd2FwKHRoaXMsIGkgKyAyLCBpICsgNSlcbiAgICBzd2FwKHRoaXMsIGkgKyAzLCBpICsgNClcbiAgfVxuICByZXR1cm4gdGhpc1xufVxuXG5CdWZmZXIucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gdG9TdHJpbmcgKCkge1xuICB2YXIgbGVuZ3RoID0gdGhpcy5sZW5ndGhcbiAgaWYgKGxlbmd0aCA9PT0gMCkgcmV0dXJuICcnXG4gIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKSByZXR1cm4gdXRmOFNsaWNlKHRoaXMsIDAsIGxlbmd0aClcbiAgcmV0dXJuIHNsb3dUb1N0cmluZy5hcHBseSh0aGlzLCBhcmd1bWVudHMpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUuZXF1YWxzID0gZnVuY3Rpb24gZXF1YWxzIChiKSB7XG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKGIpKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdBcmd1bWVudCBtdXN0IGJlIGEgQnVmZmVyJylcbiAgaWYgKHRoaXMgPT09IGIpIHJldHVybiB0cnVlXG4gIHJldHVybiBCdWZmZXIuY29tcGFyZSh0aGlzLCBiKSA9PT0gMFxufVxuXG5CdWZmZXIucHJvdG90eXBlLmluc3BlY3QgPSBmdW5jdGlvbiBpbnNwZWN0ICgpIHtcbiAgdmFyIHN0ciA9ICcnXG4gIHZhciBtYXggPSBleHBvcnRzLklOU1BFQ1RfTUFYX0JZVEVTXG4gIGlmICh0aGlzLmxlbmd0aCA+IDApIHtcbiAgICBzdHIgPSB0aGlzLnRvU3RyaW5nKCdoZXgnLCAwLCBtYXgpLm1hdGNoKC8uezJ9L2cpLmpvaW4oJyAnKVxuICAgIGlmICh0aGlzLmxlbmd0aCA+IG1heCkgc3RyICs9ICcgLi4uICdcbiAgfVxuICByZXR1cm4gJzxCdWZmZXIgJyArIHN0ciArICc+J1xufVxuXG5CdWZmZXIucHJvdG90eXBlLmNvbXBhcmUgPSBmdW5jdGlvbiBjb21wYXJlICh0YXJnZXQsIHN0YXJ0LCBlbmQsIHRoaXNTdGFydCwgdGhpc0VuZCkge1xuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcih0YXJnZXQpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlcicpXG4gIH1cblxuICBpZiAoc3RhcnQgPT09IHVuZGVmaW5lZCkge1xuICAgIHN0YXJ0ID0gMFxuICB9XG4gIGlmIChlbmQgPT09IHVuZGVmaW5lZCkge1xuICAgIGVuZCA9IHRhcmdldCA/IHRhcmdldC5sZW5ndGggOiAwXG4gIH1cbiAgaWYgKHRoaXNTdGFydCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdGhpc1N0YXJ0ID0gMFxuICB9XG4gIGlmICh0aGlzRW5kID09PSB1bmRlZmluZWQpIHtcbiAgICB0aGlzRW5kID0gdGhpcy5sZW5ndGhcbiAgfVxuXG4gIGlmIChzdGFydCA8IDAgfHwgZW5kID4gdGFyZ2V0Lmxlbmd0aCB8fCB0aGlzU3RhcnQgPCAwIHx8IHRoaXNFbmQgPiB0aGlzLmxlbmd0aCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdvdXQgb2YgcmFuZ2UgaW5kZXgnKVxuICB9XG5cbiAgaWYgKHRoaXNTdGFydCA+PSB0aGlzRW5kICYmIHN0YXJ0ID49IGVuZCkge1xuICAgIHJldHVybiAwXG4gIH1cbiAgaWYgKHRoaXNTdGFydCA+PSB0aGlzRW5kKSB7XG4gICAgcmV0dXJuIC0xXG4gIH1cbiAgaWYgKHN0YXJ0ID49IGVuZCkge1xuICAgIHJldHVybiAxXG4gIH1cblxuICBzdGFydCA+Pj49IDBcbiAgZW5kID4+Pj0gMFxuICB0aGlzU3RhcnQgPj4+PSAwXG4gIHRoaXNFbmQgPj4+PSAwXG5cbiAgaWYgKHRoaXMgPT09IHRhcmdldCkgcmV0dXJuIDBcblxuICB2YXIgeCA9IHRoaXNFbmQgLSB0aGlzU3RhcnRcbiAgdmFyIHkgPSBlbmQgLSBzdGFydFxuICB2YXIgbGVuID0gTWF0aC5taW4oeCwgeSlcblxuICB2YXIgdGhpc0NvcHkgPSB0aGlzLnNsaWNlKHRoaXNTdGFydCwgdGhpc0VuZClcbiAgdmFyIHRhcmdldENvcHkgPSB0YXJnZXQuc2xpY2Uoc3RhcnQsIGVuZClcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgKytpKSB7XG4gICAgaWYgKHRoaXNDb3B5W2ldICE9PSB0YXJnZXRDb3B5W2ldKSB7XG4gICAgICB4ID0gdGhpc0NvcHlbaV1cbiAgICAgIHkgPSB0YXJnZXRDb3B5W2ldXG4gICAgICBicmVha1xuICAgIH1cbiAgfVxuXG4gIGlmICh4IDwgeSkgcmV0dXJuIC0xXG4gIGlmICh5IDwgeCkgcmV0dXJuIDFcbiAgcmV0dXJuIDBcbn1cblxuLy8gRmluZHMgZWl0aGVyIHRoZSBmaXJzdCBpbmRleCBvZiBgdmFsYCBpbiBgYnVmZmVyYCBhdCBvZmZzZXQgPj0gYGJ5dGVPZmZzZXRgLFxuLy8gT1IgdGhlIGxhc3QgaW5kZXggb2YgYHZhbGAgaW4gYGJ1ZmZlcmAgYXQgb2Zmc2V0IDw9IGBieXRlT2Zmc2V0YC5cbi8vXG4vLyBBcmd1bWVudHM6XG4vLyAtIGJ1ZmZlciAtIGEgQnVmZmVyIHRvIHNlYXJjaFxuLy8gLSB2YWwgLSBhIHN0cmluZywgQnVmZmVyLCBvciBudW1iZXJcbi8vIC0gYnl0ZU9mZnNldCAtIGFuIGluZGV4IGludG8gYGJ1ZmZlcmA7IHdpbGwgYmUgY2xhbXBlZCB0byBhbiBpbnQzMlxuLy8gLSBlbmNvZGluZyAtIGFuIG9wdGlvbmFsIGVuY29kaW5nLCByZWxldmFudCBpcyB2YWwgaXMgYSBzdHJpbmdcbi8vIC0gZGlyIC0gdHJ1ZSBmb3IgaW5kZXhPZiwgZmFsc2UgZm9yIGxhc3RJbmRleE9mXG5mdW5jdGlvbiBiaWRpcmVjdGlvbmFsSW5kZXhPZiAoYnVmZmVyLCB2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nLCBkaXIpIHtcbiAgLy8gRW1wdHkgYnVmZmVyIG1lYW5zIG5vIG1hdGNoXG4gIGlmIChidWZmZXIubGVuZ3RoID09PSAwKSByZXR1cm4gLTFcblxuICAvLyBOb3JtYWxpemUgYnl0ZU9mZnNldFxuICBpZiAodHlwZW9mIGJ5dGVPZmZzZXQgPT09ICdzdHJpbmcnKSB7XG4gICAgZW5jb2RpbmcgPSBieXRlT2Zmc2V0XG4gICAgYnl0ZU9mZnNldCA9IDBcbiAgfSBlbHNlIGlmIChieXRlT2Zmc2V0ID4gMHg3ZmZmZmZmZikge1xuICAgIGJ5dGVPZmZzZXQgPSAweDdmZmZmZmZmXG4gIH0gZWxzZSBpZiAoYnl0ZU9mZnNldCA8IC0weDgwMDAwMDAwKSB7XG4gICAgYnl0ZU9mZnNldCA9IC0weDgwMDAwMDAwXG4gIH1cbiAgYnl0ZU9mZnNldCA9ICtieXRlT2Zmc2V0ICAvLyBDb2VyY2UgdG8gTnVtYmVyLlxuICBpZiAobnVtYmVySXNOYU4oYnl0ZU9mZnNldCkpIHtcbiAgICAvLyBieXRlT2Zmc2V0OiBpdCBpdCdzIHVuZGVmaW5lZCwgbnVsbCwgTmFOLCBcImZvb1wiLCBldGMsIHNlYXJjaCB3aG9sZSBidWZmZXJcbiAgICBieXRlT2Zmc2V0ID0gZGlyID8gMCA6IChidWZmZXIubGVuZ3RoIC0gMSlcbiAgfVxuXG4gIC8vIE5vcm1hbGl6ZSBieXRlT2Zmc2V0OiBuZWdhdGl2ZSBvZmZzZXRzIHN0YXJ0IGZyb20gdGhlIGVuZCBvZiB0aGUgYnVmZmVyXG4gIGlmIChieXRlT2Zmc2V0IDwgMCkgYnl0ZU9mZnNldCA9IGJ1ZmZlci5sZW5ndGggKyBieXRlT2Zmc2V0XG4gIGlmIChieXRlT2Zmc2V0ID49IGJ1ZmZlci5sZW5ndGgpIHtcbiAgICBpZiAoZGlyKSByZXR1cm4gLTFcbiAgICBlbHNlIGJ5dGVPZmZzZXQgPSBidWZmZXIubGVuZ3RoIC0gMVxuICB9IGVsc2UgaWYgKGJ5dGVPZmZzZXQgPCAwKSB7XG4gICAgaWYgKGRpcikgYnl0ZU9mZnNldCA9IDBcbiAgICBlbHNlIHJldHVybiAtMVxuICB9XG5cbiAgLy8gTm9ybWFsaXplIHZhbFxuICBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycpIHtcbiAgICB2YWwgPSBCdWZmZXIuZnJvbSh2YWwsIGVuY29kaW5nKVxuICB9XG5cbiAgLy8gRmluYWxseSwgc2VhcmNoIGVpdGhlciBpbmRleE9mIChpZiBkaXIgaXMgdHJ1ZSkgb3IgbGFzdEluZGV4T2ZcbiAgaWYgKEJ1ZmZlci5pc0J1ZmZlcih2YWwpKSB7XG4gICAgLy8gU3BlY2lhbCBjYXNlOiBsb29raW5nIGZvciBlbXB0eSBzdHJpbmcvYnVmZmVyIGFsd2F5cyBmYWlsc1xuICAgIGlmICh2YWwubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gLTFcbiAgICB9XG4gICAgcmV0dXJuIGFycmF5SW5kZXhPZihidWZmZXIsIHZhbCwgYnl0ZU9mZnNldCwgZW5jb2RpbmcsIGRpcilcbiAgfSBlbHNlIGlmICh0eXBlb2YgdmFsID09PSAnbnVtYmVyJykge1xuICAgIHZhbCA9IHZhbCAmIDB4RkYgLy8gU2VhcmNoIGZvciBhIGJ5dGUgdmFsdWUgWzAtMjU1XVxuICAgIGlmICh0eXBlb2YgVWludDhBcnJheS5wcm90b3R5cGUuaW5kZXhPZiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgaWYgKGRpcikge1xuICAgICAgICByZXR1cm4gVWludDhBcnJheS5wcm90b3R5cGUuaW5kZXhPZi5jYWxsKGJ1ZmZlciwgdmFsLCBieXRlT2Zmc2V0KVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIFVpbnQ4QXJyYXkucHJvdG90eXBlLmxhc3RJbmRleE9mLmNhbGwoYnVmZmVyLCB2YWwsIGJ5dGVPZmZzZXQpXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBhcnJheUluZGV4T2YoYnVmZmVyLCBbIHZhbCBdLCBieXRlT2Zmc2V0LCBlbmNvZGluZywgZGlyKVxuICB9XG5cbiAgdGhyb3cgbmV3IFR5cGVFcnJvcigndmFsIG11c3QgYmUgc3RyaW5nLCBudW1iZXIgb3IgQnVmZmVyJylcbn1cblxuZnVuY3Rpb24gYXJyYXlJbmRleE9mIChhcnIsIHZhbCwgYnl0ZU9mZnNldCwgZW5jb2RpbmcsIGRpcikge1xuICB2YXIgaW5kZXhTaXplID0gMVxuICB2YXIgYXJyTGVuZ3RoID0gYXJyLmxlbmd0aFxuICB2YXIgdmFsTGVuZ3RoID0gdmFsLmxlbmd0aFxuXG4gIGlmIChlbmNvZGluZyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgZW5jb2RpbmcgPSBTdHJpbmcoZW5jb2RpbmcpLnRvTG93ZXJDYXNlKClcbiAgICBpZiAoZW5jb2RpbmcgPT09ICd1Y3MyJyB8fCBlbmNvZGluZyA9PT0gJ3Vjcy0yJyB8fFxuICAgICAgICBlbmNvZGluZyA9PT0gJ3V0ZjE2bGUnIHx8IGVuY29kaW5nID09PSAndXRmLTE2bGUnKSB7XG4gICAgICBpZiAoYXJyLmxlbmd0aCA8IDIgfHwgdmFsLmxlbmd0aCA8IDIpIHtcbiAgICAgICAgcmV0dXJuIC0xXG4gICAgICB9XG4gICAgICBpbmRleFNpemUgPSAyXG4gICAgICBhcnJMZW5ndGggLz0gMlxuICAgICAgdmFsTGVuZ3RoIC89IDJcbiAgICAgIGJ5dGVPZmZzZXQgLz0gMlxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHJlYWQgKGJ1ZiwgaSkge1xuICAgIGlmIChpbmRleFNpemUgPT09IDEpIHtcbiAgICAgIHJldHVybiBidWZbaV1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGJ1Zi5yZWFkVUludDE2QkUoaSAqIGluZGV4U2l6ZSlcbiAgICB9XG4gIH1cblxuICB2YXIgaVxuICBpZiAoZGlyKSB7XG4gICAgdmFyIGZvdW5kSW5kZXggPSAtMVxuICAgIGZvciAoaSA9IGJ5dGVPZmZzZXQ7IGkgPCBhcnJMZW5ndGg7IGkrKykge1xuICAgICAgaWYgKHJlYWQoYXJyLCBpKSA9PT0gcmVhZCh2YWwsIGZvdW5kSW5kZXggPT09IC0xID8gMCA6IGkgLSBmb3VuZEluZGV4KSkge1xuICAgICAgICBpZiAoZm91bmRJbmRleCA9PT0gLTEpIGZvdW5kSW5kZXggPSBpXG4gICAgICAgIGlmIChpIC0gZm91bmRJbmRleCArIDEgPT09IHZhbExlbmd0aCkgcmV0dXJuIGZvdW5kSW5kZXggKiBpbmRleFNpemVcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChmb3VuZEluZGV4ICE9PSAtMSkgaSAtPSBpIC0gZm91bmRJbmRleFxuICAgICAgICBmb3VuZEluZGV4ID0gLTFcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgaWYgKGJ5dGVPZmZzZXQgKyB2YWxMZW5ndGggPiBhcnJMZW5ndGgpIGJ5dGVPZmZzZXQgPSBhcnJMZW5ndGggLSB2YWxMZW5ndGhcbiAgICBmb3IgKGkgPSBieXRlT2Zmc2V0OyBpID49IDA7IGktLSkge1xuICAgICAgdmFyIGZvdW5kID0gdHJ1ZVxuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCB2YWxMZW5ndGg7IGorKykge1xuICAgICAgICBpZiAocmVhZChhcnIsIGkgKyBqKSAhPT0gcmVhZCh2YWwsIGopKSB7XG4gICAgICAgICAgZm91bmQgPSBmYWxzZVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChmb3VuZCkgcmV0dXJuIGlcbiAgICB9XG4gIH1cblxuICByZXR1cm4gLTFcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5pbmNsdWRlcyA9IGZ1bmN0aW9uIGluY2x1ZGVzICh2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nKSB7XG4gIHJldHVybiB0aGlzLmluZGV4T2YodmFsLCBieXRlT2Zmc2V0LCBlbmNvZGluZykgIT09IC0xXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUuaW5kZXhPZiA9IGZ1bmN0aW9uIGluZGV4T2YgKHZhbCwgYnl0ZU9mZnNldCwgZW5jb2RpbmcpIHtcbiAgcmV0dXJuIGJpZGlyZWN0aW9uYWxJbmRleE9mKHRoaXMsIHZhbCwgYnl0ZU9mZnNldCwgZW5jb2RpbmcsIHRydWUpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUubGFzdEluZGV4T2YgPSBmdW5jdGlvbiBsYXN0SW5kZXhPZiAodmFsLCBieXRlT2Zmc2V0LCBlbmNvZGluZykge1xuICByZXR1cm4gYmlkaXJlY3Rpb25hbEluZGV4T2YodGhpcywgdmFsLCBieXRlT2Zmc2V0LCBlbmNvZGluZywgZmFsc2UpXG59XG5cbmZ1bmN0aW9uIGhleFdyaXRlIChidWYsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpIHtcbiAgb2Zmc2V0ID0gTnVtYmVyKG9mZnNldCkgfHwgMFxuICB2YXIgcmVtYWluaW5nID0gYnVmLmxlbmd0aCAtIG9mZnNldFxuICBpZiAoIWxlbmd0aCkge1xuICAgIGxlbmd0aCA9IHJlbWFpbmluZ1xuICB9IGVsc2Uge1xuICAgIGxlbmd0aCA9IE51bWJlcihsZW5ndGgpXG4gICAgaWYgKGxlbmd0aCA+IHJlbWFpbmluZykge1xuICAgICAgbGVuZ3RoID0gcmVtYWluaW5nXG4gICAgfVxuICB9XG5cbiAgLy8gbXVzdCBiZSBhbiBldmVuIG51bWJlciBvZiBkaWdpdHNcbiAgdmFyIHN0ckxlbiA9IHN0cmluZy5sZW5ndGhcbiAgaWYgKHN0ckxlbiAlIDIgIT09IDApIHRocm93IG5ldyBUeXBlRXJyb3IoJ0ludmFsaWQgaGV4IHN0cmluZycpXG5cbiAgaWYgKGxlbmd0aCA+IHN0ckxlbiAvIDIpIHtcbiAgICBsZW5ndGggPSBzdHJMZW4gLyAyXG4gIH1cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkge1xuICAgIHZhciBwYXJzZWQgPSBwYXJzZUludChzdHJpbmcuc3Vic3RyKGkgKiAyLCAyKSwgMTYpXG4gICAgaWYgKG51bWJlcklzTmFOKHBhcnNlZCkpIHJldHVybiBpXG4gICAgYnVmW29mZnNldCArIGldID0gcGFyc2VkXG4gIH1cbiAgcmV0dXJuIGlcbn1cblxuZnVuY3Rpb24gdXRmOFdyaXRlIChidWYsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpIHtcbiAgcmV0dXJuIGJsaXRCdWZmZXIodXRmOFRvQnl0ZXMoc3RyaW5nLCBidWYubGVuZ3RoIC0gb2Zmc2V0KSwgYnVmLCBvZmZzZXQsIGxlbmd0aClcbn1cblxuZnVuY3Rpb24gYXNjaWlXcml0ZSAoYnVmLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKSB7XG4gIHJldHVybiBibGl0QnVmZmVyKGFzY2lpVG9CeXRlcyhzdHJpbmcpLCBidWYsIG9mZnNldCwgbGVuZ3RoKVxufVxuXG5mdW5jdGlvbiBsYXRpbjFXcml0ZSAoYnVmLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKSB7XG4gIHJldHVybiBhc2NpaVdyaXRlKGJ1Ziwgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aClcbn1cblxuZnVuY3Rpb24gYmFzZTY0V3JpdGUgKGJ1Ziwgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCkge1xuICByZXR1cm4gYmxpdEJ1ZmZlcihiYXNlNjRUb0J5dGVzKHN0cmluZyksIGJ1Ziwgb2Zmc2V0LCBsZW5ndGgpXG59XG5cbmZ1bmN0aW9uIHVjczJXcml0ZSAoYnVmLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKSB7XG4gIHJldHVybiBibGl0QnVmZmVyKHV0ZjE2bGVUb0J5dGVzKHN0cmluZywgYnVmLmxlbmd0aCAtIG9mZnNldCksIGJ1Ziwgb2Zmc2V0LCBsZW5ndGgpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbiB3cml0ZSAoc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCwgZW5jb2RpbmcpIHtcbiAgLy8gQnVmZmVyI3dyaXRlKHN0cmluZylcbiAgaWYgKG9mZnNldCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgZW5jb2RpbmcgPSAndXRmOCdcbiAgICBsZW5ndGggPSB0aGlzLmxlbmd0aFxuICAgIG9mZnNldCA9IDBcbiAgLy8gQnVmZmVyI3dyaXRlKHN0cmluZywgZW5jb2RpbmcpXG4gIH0gZWxzZSBpZiAobGVuZ3RoID09PSB1bmRlZmluZWQgJiYgdHlwZW9mIG9mZnNldCA9PT0gJ3N0cmluZycpIHtcbiAgICBlbmNvZGluZyA9IG9mZnNldFxuICAgIGxlbmd0aCA9IHRoaXMubGVuZ3RoXG4gICAgb2Zmc2V0ID0gMFxuICAvLyBCdWZmZXIjd3JpdGUoc3RyaW5nLCBvZmZzZXRbLCBsZW5ndGhdWywgZW5jb2RpbmddKVxuICB9IGVsc2UgaWYgKGlzRmluaXRlKG9mZnNldCkpIHtcbiAgICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgICBpZiAoaXNGaW5pdGUobGVuZ3RoKSkge1xuICAgICAgbGVuZ3RoID0gbGVuZ3RoID4+PiAwXG4gICAgICBpZiAoZW5jb2RpbmcgPT09IHVuZGVmaW5lZCkgZW5jb2RpbmcgPSAndXRmOCdcbiAgICB9IGVsc2Uge1xuICAgICAgZW5jb2RpbmcgPSBsZW5ndGhcbiAgICAgIGxlbmd0aCA9IHVuZGVmaW5lZFxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAnQnVmZmVyLndyaXRlKHN0cmluZywgZW5jb2RpbmcsIG9mZnNldFssIGxlbmd0aF0pIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQnXG4gICAgKVxuICB9XG5cbiAgdmFyIHJlbWFpbmluZyA9IHRoaXMubGVuZ3RoIC0gb2Zmc2V0XG4gIGlmIChsZW5ndGggPT09IHVuZGVmaW5lZCB8fCBsZW5ndGggPiByZW1haW5pbmcpIGxlbmd0aCA9IHJlbWFpbmluZ1xuXG4gIGlmICgoc3RyaW5nLmxlbmd0aCA+IDAgJiYgKGxlbmd0aCA8IDAgfHwgb2Zmc2V0IDwgMCkpIHx8IG9mZnNldCA+IHRoaXMubGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0F0dGVtcHQgdG8gd3JpdGUgb3V0c2lkZSBidWZmZXIgYm91bmRzJylcbiAgfVxuXG4gIGlmICghZW5jb2RpbmcpIGVuY29kaW5nID0gJ3V0ZjgnXG5cbiAgdmFyIGxvd2VyZWRDYXNlID0gZmFsc2VcbiAgZm9yICg7Oykge1xuICAgIHN3aXRjaCAoZW5jb2RpbmcpIHtcbiAgICAgIGNhc2UgJ2hleCc6XG4gICAgICAgIHJldHVybiBoZXhXcml0ZSh0aGlzLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKVxuXG4gICAgICBjYXNlICd1dGY4JzpcbiAgICAgIGNhc2UgJ3V0Zi04JzpcbiAgICAgICAgcmV0dXJuIHV0ZjhXcml0ZSh0aGlzLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKVxuXG4gICAgICBjYXNlICdhc2NpaSc6XG4gICAgICAgIHJldHVybiBhc2NpaVdyaXRlKHRoaXMsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpXG5cbiAgICAgIGNhc2UgJ2xhdGluMSc6XG4gICAgICBjYXNlICdiaW5hcnknOlxuICAgICAgICByZXR1cm4gbGF0aW4xV3JpdGUodGhpcywgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aClcblxuICAgICAgY2FzZSAnYmFzZTY0JzpcbiAgICAgICAgLy8gV2FybmluZzogbWF4TGVuZ3RoIG5vdCB0YWtlbiBpbnRvIGFjY291bnQgaW4gYmFzZTY0V3JpdGVcbiAgICAgICAgcmV0dXJuIGJhc2U2NFdyaXRlKHRoaXMsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpXG5cbiAgICAgIGNhc2UgJ3VjczInOlxuICAgICAgY2FzZSAndWNzLTInOlxuICAgICAgY2FzZSAndXRmMTZsZSc6XG4gICAgICBjYXNlICd1dGYtMTZsZSc6XG4gICAgICAgIHJldHVybiB1Y3MyV3JpdGUodGhpcywgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aClcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgaWYgKGxvd2VyZWRDYXNlKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdVbmtub3duIGVuY29kaW5nOiAnICsgZW5jb2RpbmcpXG4gICAgICAgIGVuY29kaW5nID0gKCcnICsgZW5jb2RpbmcpLnRvTG93ZXJDYXNlKClcbiAgICAgICAgbG93ZXJlZENhc2UgPSB0cnVlXG4gICAgfVxuICB9XG59XG5cbkJ1ZmZlci5wcm90b3R5cGUudG9KU09OID0gZnVuY3Rpb24gdG9KU09OICgpIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiAnQnVmZmVyJyxcbiAgICBkYXRhOiBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0aGlzLl9hcnIgfHwgdGhpcywgMClcbiAgfVxufVxuXG5mdW5jdGlvbiBiYXNlNjRTbGljZSAoYnVmLCBzdGFydCwgZW5kKSB7XG4gIGlmIChzdGFydCA9PT0gMCAmJiBlbmQgPT09IGJ1Zi5sZW5ndGgpIHtcbiAgICByZXR1cm4gYmFzZTY0LmZyb21CeXRlQXJyYXkoYnVmKVxuICB9IGVsc2Uge1xuICAgIHJldHVybiBiYXNlNjQuZnJvbUJ5dGVBcnJheShidWYuc2xpY2Uoc3RhcnQsIGVuZCkpXG4gIH1cbn1cblxuZnVuY3Rpb24gdXRmOFNsaWNlIChidWYsIHN0YXJ0LCBlbmQpIHtcbiAgZW5kID0gTWF0aC5taW4oYnVmLmxlbmd0aCwgZW5kKVxuICB2YXIgcmVzID0gW11cblxuICB2YXIgaSA9IHN0YXJ0XG4gIHdoaWxlIChpIDwgZW5kKSB7XG4gICAgdmFyIGZpcnN0Qnl0ZSA9IGJ1ZltpXVxuICAgIHZhciBjb2RlUG9pbnQgPSBudWxsXG4gICAgdmFyIGJ5dGVzUGVyU2VxdWVuY2UgPSAoZmlyc3RCeXRlID4gMHhFRikgPyA0XG4gICAgICA6IChmaXJzdEJ5dGUgPiAweERGKSA/IDNcbiAgICAgIDogKGZpcnN0Qnl0ZSA+IDB4QkYpID8gMlxuICAgICAgOiAxXG5cbiAgICBpZiAoaSArIGJ5dGVzUGVyU2VxdWVuY2UgPD0gZW5kKSB7XG4gICAgICB2YXIgc2Vjb25kQnl0ZSwgdGhpcmRCeXRlLCBmb3VydGhCeXRlLCB0ZW1wQ29kZVBvaW50XG5cbiAgICAgIHN3aXRjaCAoYnl0ZXNQZXJTZXF1ZW5jZSkge1xuICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgaWYgKGZpcnN0Qnl0ZSA8IDB4ODApIHtcbiAgICAgICAgICAgIGNvZGVQb2ludCA9IGZpcnN0Qnl0ZVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgc2Vjb25kQnl0ZSA9IGJ1ZltpICsgMV1cbiAgICAgICAgICBpZiAoKHNlY29uZEJ5dGUgJiAweEMwKSA9PT0gMHg4MCkge1xuICAgICAgICAgICAgdGVtcENvZGVQb2ludCA9IChmaXJzdEJ5dGUgJiAweDFGKSA8PCAweDYgfCAoc2Vjb25kQnl0ZSAmIDB4M0YpXG4gICAgICAgICAgICBpZiAodGVtcENvZGVQb2ludCA+IDB4N0YpIHtcbiAgICAgICAgICAgICAgY29kZVBvaW50ID0gdGVtcENvZGVQb2ludFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgc2Vjb25kQnl0ZSA9IGJ1ZltpICsgMV1cbiAgICAgICAgICB0aGlyZEJ5dGUgPSBidWZbaSArIDJdXG4gICAgICAgICAgaWYgKChzZWNvbmRCeXRlICYgMHhDMCkgPT09IDB4ODAgJiYgKHRoaXJkQnl0ZSAmIDB4QzApID09PSAweDgwKSB7XG4gICAgICAgICAgICB0ZW1wQ29kZVBvaW50ID0gKGZpcnN0Qnl0ZSAmIDB4RikgPDwgMHhDIHwgKHNlY29uZEJ5dGUgJiAweDNGKSA8PCAweDYgfCAodGhpcmRCeXRlICYgMHgzRilcbiAgICAgICAgICAgIGlmICh0ZW1wQ29kZVBvaW50ID4gMHg3RkYgJiYgKHRlbXBDb2RlUG9pbnQgPCAweEQ4MDAgfHwgdGVtcENvZGVQb2ludCA+IDB4REZGRikpIHtcbiAgICAgICAgICAgICAgY29kZVBvaW50ID0gdGVtcENvZGVQb2ludFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgc2Vjb25kQnl0ZSA9IGJ1ZltpICsgMV1cbiAgICAgICAgICB0aGlyZEJ5dGUgPSBidWZbaSArIDJdXG4gICAgICAgICAgZm91cnRoQnl0ZSA9IGJ1ZltpICsgM11cbiAgICAgICAgICBpZiAoKHNlY29uZEJ5dGUgJiAweEMwKSA9PT0gMHg4MCAmJiAodGhpcmRCeXRlICYgMHhDMCkgPT09IDB4ODAgJiYgKGZvdXJ0aEJ5dGUgJiAweEMwKSA9PT0gMHg4MCkge1xuICAgICAgICAgICAgdGVtcENvZGVQb2ludCA9IChmaXJzdEJ5dGUgJiAweEYpIDw8IDB4MTIgfCAoc2Vjb25kQnl0ZSAmIDB4M0YpIDw8IDB4QyB8ICh0aGlyZEJ5dGUgJiAweDNGKSA8PCAweDYgfCAoZm91cnRoQnl0ZSAmIDB4M0YpXG4gICAgICAgICAgICBpZiAodGVtcENvZGVQb2ludCA+IDB4RkZGRiAmJiB0ZW1wQ29kZVBvaW50IDwgMHgxMTAwMDApIHtcbiAgICAgICAgICAgICAgY29kZVBvaW50ID0gdGVtcENvZGVQb2ludFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoY29kZVBvaW50ID09PSBudWxsKSB7XG4gICAgICAvLyB3ZSBkaWQgbm90IGdlbmVyYXRlIGEgdmFsaWQgY29kZVBvaW50IHNvIGluc2VydCBhXG4gICAgICAvLyByZXBsYWNlbWVudCBjaGFyIChVK0ZGRkQpIGFuZCBhZHZhbmNlIG9ubHkgMSBieXRlXG4gICAgICBjb2RlUG9pbnQgPSAweEZGRkRcbiAgICAgIGJ5dGVzUGVyU2VxdWVuY2UgPSAxXG4gICAgfSBlbHNlIGlmIChjb2RlUG9pbnQgPiAweEZGRkYpIHtcbiAgICAgIC8vIGVuY29kZSB0byB1dGYxNiAoc3Vycm9nYXRlIHBhaXIgZGFuY2UpXG4gICAgICBjb2RlUG9pbnQgLT0gMHgxMDAwMFxuICAgICAgcmVzLnB1c2goY29kZVBvaW50ID4+PiAxMCAmIDB4M0ZGIHwgMHhEODAwKVxuICAgICAgY29kZVBvaW50ID0gMHhEQzAwIHwgY29kZVBvaW50ICYgMHgzRkZcbiAgICB9XG5cbiAgICByZXMucHVzaChjb2RlUG9pbnQpXG4gICAgaSArPSBieXRlc1BlclNlcXVlbmNlXG4gIH1cblxuICByZXR1cm4gZGVjb2RlQ29kZVBvaW50c0FycmF5KHJlcylcbn1cblxuLy8gQmFzZWQgb24gaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL2EvMjI3NDcyNzIvNjgwNzQyLCB0aGUgYnJvd3NlciB3aXRoXG4vLyB0aGUgbG93ZXN0IGxpbWl0IGlzIENocm9tZSwgd2l0aCAweDEwMDAwIGFyZ3MuXG4vLyBXZSBnbyAxIG1hZ25pdHVkZSBsZXNzLCBmb3Igc2FmZXR5XG52YXIgTUFYX0FSR1VNRU5UU19MRU5HVEggPSAweDEwMDBcblxuZnVuY3Rpb24gZGVjb2RlQ29kZVBvaW50c0FycmF5IChjb2RlUG9pbnRzKSB7XG4gIHZhciBsZW4gPSBjb2RlUG9pbnRzLmxlbmd0aFxuICBpZiAobGVuIDw9IE1BWF9BUkdVTUVOVFNfTEVOR1RIKSB7XG4gICAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoU3RyaW5nLCBjb2RlUG9pbnRzKSAvLyBhdm9pZCBleHRyYSBzbGljZSgpXG4gIH1cblxuICAvLyBEZWNvZGUgaW4gY2h1bmtzIHRvIGF2b2lkIFwiY2FsbCBzdGFjayBzaXplIGV4Y2VlZGVkXCIuXG4gIHZhciByZXMgPSAnJ1xuICB2YXIgaSA9IDBcbiAgd2hpbGUgKGkgPCBsZW4pIHtcbiAgICByZXMgKz0gU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShcbiAgICAgIFN0cmluZyxcbiAgICAgIGNvZGVQb2ludHMuc2xpY2UoaSwgaSArPSBNQVhfQVJHVU1FTlRTX0xFTkdUSClcbiAgICApXG4gIH1cbiAgcmV0dXJuIHJlc1xufVxuXG5mdW5jdGlvbiBhc2NpaVNsaWNlIChidWYsIHN0YXJ0LCBlbmQpIHtcbiAgdmFyIHJldCA9ICcnXG4gIGVuZCA9IE1hdGgubWluKGJ1Zi5sZW5ndGgsIGVuZClcblxuICBmb3IgKHZhciBpID0gc3RhcnQ7IGkgPCBlbmQ7ICsraSkge1xuICAgIHJldCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGJ1ZltpXSAmIDB4N0YpXG4gIH1cbiAgcmV0dXJuIHJldFxufVxuXG5mdW5jdGlvbiBsYXRpbjFTbGljZSAoYnVmLCBzdGFydCwgZW5kKSB7XG4gIHZhciByZXQgPSAnJ1xuICBlbmQgPSBNYXRoLm1pbihidWYubGVuZ3RoLCBlbmQpXG5cbiAgZm9yICh2YXIgaSA9IHN0YXJ0OyBpIDwgZW5kOyArK2kpIHtcbiAgICByZXQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShidWZbaV0pXG4gIH1cbiAgcmV0dXJuIHJldFxufVxuXG5mdW5jdGlvbiBoZXhTbGljZSAoYnVmLCBzdGFydCwgZW5kKSB7XG4gIHZhciBsZW4gPSBidWYubGVuZ3RoXG5cbiAgaWYgKCFzdGFydCB8fCBzdGFydCA8IDApIHN0YXJ0ID0gMFxuICBpZiAoIWVuZCB8fCBlbmQgPCAwIHx8IGVuZCA+IGxlbikgZW5kID0gbGVuXG5cbiAgdmFyIG91dCA9ICcnXG4gIGZvciAodmFyIGkgPSBzdGFydDsgaSA8IGVuZDsgKytpKSB7XG4gICAgb3V0ICs9IHRvSGV4KGJ1ZltpXSlcbiAgfVxuICByZXR1cm4gb3V0XG59XG5cbmZ1bmN0aW9uIHV0ZjE2bGVTbGljZSAoYnVmLCBzdGFydCwgZW5kKSB7XG4gIHZhciBieXRlcyA9IGJ1Zi5zbGljZShzdGFydCwgZW5kKVxuICB2YXIgcmVzID0gJydcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBieXRlcy5sZW5ndGg7IGkgKz0gMikge1xuICAgIHJlcyArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGJ5dGVzW2ldICsgKGJ5dGVzW2kgKyAxXSAqIDI1NikpXG4gIH1cbiAgcmV0dXJuIHJlc1xufVxuXG5CdWZmZXIucHJvdG90eXBlLnNsaWNlID0gZnVuY3Rpb24gc2xpY2UgKHN0YXJ0LCBlbmQpIHtcbiAgdmFyIGxlbiA9IHRoaXMubGVuZ3RoXG4gIHN0YXJ0ID0gfn5zdGFydFxuICBlbmQgPSBlbmQgPT09IHVuZGVmaW5lZCA/IGxlbiA6IH5+ZW5kXG5cbiAgaWYgKHN0YXJ0IDwgMCkge1xuICAgIHN0YXJ0ICs9IGxlblxuICAgIGlmIChzdGFydCA8IDApIHN0YXJ0ID0gMFxuICB9IGVsc2UgaWYgKHN0YXJ0ID4gbGVuKSB7XG4gICAgc3RhcnQgPSBsZW5cbiAgfVxuXG4gIGlmIChlbmQgPCAwKSB7XG4gICAgZW5kICs9IGxlblxuICAgIGlmIChlbmQgPCAwKSBlbmQgPSAwXG4gIH0gZWxzZSBpZiAoZW5kID4gbGVuKSB7XG4gICAgZW5kID0gbGVuXG4gIH1cblxuICBpZiAoZW5kIDwgc3RhcnQpIGVuZCA9IHN0YXJ0XG5cbiAgdmFyIG5ld0J1ZiA9IHRoaXMuc3ViYXJyYXkoc3RhcnQsIGVuZClcbiAgLy8gUmV0dXJuIGFuIGF1Z21lbnRlZCBgVWludDhBcnJheWAgaW5zdGFuY2VcbiAgbmV3QnVmLl9fcHJvdG9fXyA9IEJ1ZmZlci5wcm90b3R5cGVcbiAgcmV0dXJuIG5ld0J1ZlxufVxuXG4vKlxuICogTmVlZCB0byBtYWtlIHN1cmUgdGhhdCBidWZmZXIgaXNuJ3QgdHJ5aW5nIHRvIHdyaXRlIG91dCBvZiBib3VuZHMuXG4gKi9cbmZ1bmN0aW9uIGNoZWNrT2Zmc2V0IChvZmZzZXQsIGV4dCwgbGVuZ3RoKSB7XG4gIGlmICgob2Zmc2V0ICUgMSkgIT09IDAgfHwgb2Zmc2V0IDwgMCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ29mZnNldCBpcyBub3QgdWludCcpXG4gIGlmIChvZmZzZXQgKyBleHQgPiBsZW5ndGgpIHRocm93IG5ldyBSYW5nZUVycm9yKCdUcnlpbmcgdG8gYWNjZXNzIGJleW9uZCBidWZmZXIgbGVuZ3RoJylcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkVUludExFID0gZnVuY3Rpb24gcmVhZFVJbnRMRSAob2Zmc2V0LCBieXRlTGVuZ3RoLCBub0Fzc2VydCkge1xuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGggPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCBieXRlTGVuZ3RoLCB0aGlzLmxlbmd0aClcblxuICB2YXIgdmFsID0gdGhpc1tvZmZzZXRdXG4gIHZhciBtdWwgPSAxXG4gIHZhciBpID0gMFxuICB3aGlsZSAoKytpIDwgYnl0ZUxlbmd0aCAmJiAobXVsICo9IDB4MTAwKSkge1xuICAgIHZhbCArPSB0aGlzW29mZnNldCArIGldICogbXVsXG4gIH1cblxuICByZXR1cm4gdmFsXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZFVJbnRCRSA9IGZ1bmN0aW9uIHJlYWRVSW50QkUgKG9mZnNldCwgYnl0ZUxlbmd0aCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIHtcbiAgICBjaGVja09mZnNldChvZmZzZXQsIGJ5dGVMZW5ndGgsIHRoaXMubGVuZ3RoKVxuICB9XG5cbiAgdmFyIHZhbCA9IHRoaXNbb2Zmc2V0ICsgLS1ieXRlTGVuZ3RoXVxuICB2YXIgbXVsID0gMVxuICB3aGlsZSAoYnl0ZUxlbmd0aCA+IDAgJiYgKG11bCAqPSAweDEwMCkpIHtcbiAgICB2YWwgKz0gdGhpc1tvZmZzZXQgKyAtLWJ5dGVMZW5ndGhdICogbXVsXG4gIH1cblxuICByZXR1cm4gdmFsXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZFVJbnQ4ID0gZnVuY3Rpb24gcmVhZFVJbnQ4IChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDEsIHRoaXMubGVuZ3RoKVxuICByZXR1cm4gdGhpc1tvZmZzZXRdXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZFVJbnQxNkxFID0gZnVuY3Rpb24gcmVhZFVJbnQxNkxFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDIsIHRoaXMubGVuZ3RoKVxuICByZXR1cm4gdGhpc1tvZmZzZXRdIHwgKHRoaXNbb2Zmc2V0ICsgMV0gPDwgOClcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkVUludDE2QkUgPSBmdW5jdGlvbiByZWFkVUludDE2QkUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgMiwgdGhpcy5sZW5ndGgpXG4gIHJldHVybiAodGhpc1tvZmZzZXRdIDw8IDgpIHwgdGhpc1tvZmZzZXQgKyAxXVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRVSW50MzJMRSA9IGZ1bmN0aW9uIHJlYWRVSW50MzJMRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCA0LCB0aGlzLmxlbmd0aClcblxuICByZXR1cm4gKCh0aGlzW29mZnNldF0pIHxcbiAgICAgICh0aGlzW29mZnNldCArIDFdIDw8IDgpIHxcbiAgICAgICh0aGlzW29mZnNldCArIDJdIDw8IDE2KSkgK1xuICAgICAgKHRoaXNbb2Zmc2V0ICsgM10gKiAweDEwMDAwMDApXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZFVJbnQzMkJFID0gZnVuY3Rpb24gcmVhZFVJbnQzMkJFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDQsIHRoaXMubGVuZ3RoKVxuXG4gIHJldHVybiAodGhpc1tvZmZzZXRdICogMHgxMDAwMDAwKSArXG4gICAgKCh0aGlzW29mZnNldCArIDFdIDw8IDE2KSB8XG4gICAgKHRoaXNbb2Zmc2V0ICsgMl0gPDwgOCkgfFxuICAgIHRoaXNbb2Zmc2V0ICsgM10pXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEludExFID0gZnVuY3Rpb24gcmVhZEludExFIChvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBieXRlTGVuZ3RoID0gYnl0ZUxlbmd0aCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIGJ5dGVMZW5ndGgsIHRoaXMubGVuZ3RoKVxuXG4gIHZhciB2YWwgPSB0aGlzW29mZnNldF1cbiAgdmFyIG11bCA9IDFcbiAgdmFyIGkgPSAwXG4gIHdoaWxlICgrK2kgPCBieXRlTGVuZ3RoICYmIChtdWwgKj0gMHgxMDApKSB7XG4gICAgdmFsICs9IHRoaXNbb2Zmc2V0ICsgaV0gKiBtdWxcbiAgfVxuICBtdWwgKj0gMHg4MFxuXG4gIGlmICh2YWwgPj0gbXVsKSB2YWwgLT0gTWF0aC5wb3coMiwgOCAqIGJ5dGVMZW5ndGgpXG5cbiAgcmV0dXJuIHZhbFxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRJbnRCRSA9IGZ1bmN0aW9uIHJlYWRJbnRCRSAob2Zmc2V0LCBieXRlTGVuZ3RoLCBub0Fzc2VydCkge1xuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGggPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCBieXRlTGVuZ3RoLCB0aGlzLmxlbmd0aClcblxuICB2YXIgaSA9IGJ5dGVMZW5ndGhcbiAgdmFyIG11bCA9IDFcbiAgdmFyIHZhbCA9IHRoaXNbb2Zmc2V0ICsgLS1pXVxuICB3aGlsZSAoaSA+IDAgJiYgKG11bCAqPSAweDEwMCkpIHtcbiAgICB2YWwgKz0gdGhpc1tvZmZzZXQgKyAtLWldICogbXVsXG4gIH1cbiAgbXVsICo9IDB4ODBcblxuICBpZiAodmFsID49IG11bCkgdmFsIC09IE1hdGgucG93KDIsIDggKiBieXRlTGVuZ3RoKVxuXG4gIHJldHVybiB2YWxcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkSW50OCA9IGZ1bmN0aW9uIHJlYWRJbnQ4IChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDEsIHRoaXMubGVuZ3RoKVxuICBpZiAoISh0aGlzW29mZnNldF0gJiAweDgwKSkgcmV0dXJuICh0aGlzW29mZnNldF0pXG4gIHJldHVybiAoKDB4ZmYgLSB0aGlzW29mZnNldF0gKyAxKSAqIC0xKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRJbnQxNkxFID0gZnVuY3Rpb24gcmVhZEludDE2TEUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgMiwgdGhpcy5sZW5ndGgpXG4gIHZhciB2YWwgPSB0aGlzW29mZnNldF0gfCAodGhpc1tvZmZzZXQgKyAxXSA8PCA4KVxuICByZXR1cm4gKHZhbCAmIDB4ODAwMCkgPyB2YWwgfCAweEZGRkYwMDAwIDogdmFsXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEludDE2QkUgPSBmdW5jdGlvbiByZWFkSW50MTZCRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCAyLCB0aGlzLmxlbmd0aClcbiAgdmFyIHZhbCA9IHRoaXNbb2Zmc2V0ICsgMV0gfCAodGhpc1tvZmZzZXRdIDw8IDgpXG4gIHJldHVybiAodmFsICYgMHg4MDAwKSA/IHZhbCB8IDB4RkZGRjAwMDAgOiB2YWxcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkSW50MzJMRSA9IGZ1bmN0aW9uIHJlYWRJbnQzMkxFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDQsIHRoaXMubGVuZ3RoKVxuXG4gIHJldHVybiAodGhpc1tvZmZzZXRdKSB8XG4gICAgKHRoaXNbb2Zmc2V0ICsgMV0gPDwgOCkgfFxuICAgICh0aGlzW29mZnNldCArIDJdIDw8IDE2KSB8XG4gICAgKHRoaXNbb2Zmc2V0ICsgM10gPDwgMjQpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEludDMyQkUgPSBmdW5jdGlvbiByZWFkSW50MzJCRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCA0LCB0aGlzLmxlbmd0aClcblxuICByZXR1cm4gKHRoaXNbb2Zmc2V0XSA8PCAyNCkgfFxuICAgICh0aGlzW29mZnNldCArIDFdIDw8IDE2KSB8XG4gICAgKHRoaXNbb2Zmc2V0ICsgMl0gPDwgOCkgfFxuICAgICh0aGlzW29mZnNldCArIDNdKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRGbG9hdExFID0gZnVuY3Rpb24gcmVhZEZsb2F0TEUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgNCwgdGhpcy5sZW5ndGgpXG4gIHJldHVybiBpZWVlNzU0LnJlYWQodGhpcywgb2Zmc2V0LCB0cnVlLCAyMywgNClcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkRmxvYXRCRSA9IGZ1bmN0aW9uIHJlYWRGbG9hdEJFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDQsIHRoaXMubGVuZ3RoKVxuICByZXR1cm4gaWVlZTc1NC5yZWFkKHRoaXMsIG9mZnNldCwgZmFsc2UsIDIzLCA0KVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWREb3VibGVMRSA9IGZ1bmN0aW9uIHJlYWREb3VibGVMRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCA4LCB0aGlzLmxlbmd0aClcbiAgcmV0dXJuIGllZWU3NTQucmVhZCh0aGlzLCBvZmZzZXQsIHRydWUsIDUyLCA4KVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWREb3VibGVCRSA9IGZ1bmN0aW9uIHJlYWREb3VibGVCRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCA4LCB0aGlzLmxlbmd0aClcbiAgcmV0dXJuIGllZWU3NTQucmVhZCh0aGlzLCBvZmZzZXQsIGZhbHNlLCA1MiwgOClcbn1cblxuZnVuY3Rpb24gY2hlY2tJbnQgKGJ1ZiwgdmFsdWUsIG9mZnNldCwgZXh0LCBtYXgsIG1pbikge1xuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihidWYpKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdcImJ1ZmZlclwiIGFyZ3VtZW50IG11c3QgYmUgYSBCdWZmZXIgaW5zdGFuY2UnKVxuICBpZiAodmFsdWUgPiBtYXggfHwgdmFsdWUgPCBtaW4pIHRocm93IG5ldyBSYW5nZUVycm9yKCdcInZhbHVlXCIgYXJndW1lbnQgaXMgb3V0IG9mIGJvdW5kcycpXG4gIGlmIChvZmZzZXQgKyBleHQgPiBidWYubGVuZ3RoKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignSW5kZXggb3V0IG9mIHJhbmdlJylcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZVVJbnRMRSA9IGZ1bmN0aW9uIHdyaXRlVUludExFICh2YWx1ZSwgb2Zmc2V0LCBieXRlTGVuZ3RoLCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGggPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkge1xuICAgIHZhciBtYXhCeXRlcyA9IE1hdGgucG93KDIsIDggKiBieXRlTGVuZ3RoKSAtIDFcbiAgICBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCBieXRlTGVuZ3RoLCBtYXhCeXRlcywgMClcbiAgfVxuXG4gIHZhciBtdWwgPSAxXG4gIHZhciBpID0gMFxuICB0aGlzW29mZnNldF0gPSB2YWx1ZSAmIDB4RkZcbiAgd2hpbGUgKCsraSA8IGJ5dGVMZW5ndGggJiYgKG11bCAqPSAweDEwMCkpIHtcbiAgICB0aGlzW29mZnNldCArIGldID0gKHZhbHVlIC8gbXVsKSAmIDB4RkZcbiAgfVxuXG4gIHJldHVybiBvZmZzZXQgKyBieXRlTGVuZ3RoXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVVSW50QkUgPSBmdW5jdGlvbiB3cml0ZVVJbnRCRSAodmFsdWUsIG9mZnNldCwgYnl0ZUxlbmd0aCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIHtcbiAgICB2YXIgbWF4Qnl0ZXMgPSBNYXRoLnBvdygyLCA4ICogYnl0ZUxlbmd0aCkgLSAxXG4gICAgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgYnl0ZUxlbmd0aCwgbWF4Qnl0ZXMsIDApXG4gIH1cblxuICB2YXIgaSA9IGJ5dGVMZW5ndGggLSAxXG4gIHZhciBtdWwgPSAxXG4gIHRoaXNbb2Zmc2V0ICsgaV0gPSB2YWx1ZSAmIDB4RkZcbiAgd2hpbGUgKC0taSA+PSAwICYmIChtdWwgKj0gMHgxMDApKSB7XG4gICAgdGhpc1tvZmZzZXQgKyBpXSA9ICh2YWx1ZSAvIG11bCkgJiAweEZGXG4gIH1cblxuICByZXR1cm4gb2Zmc2V0ICsgYnl0ZUxlbmd0aFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlVUludDggPSBmdW5jdGlvbiB3cml0ZVVJbnQ4ICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgMSwgMHhmZiwgMClcbiAgdGhpc1tvZmZzZXRdID0gKHZhbHVlICYgMHhmZilcbiAgcmV0dXJuIG9mZnNldCArIDFcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZVVJbnQxNkxFID0gZnVuY3Rpb24gd3JpdGVVSW50MTZMRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDIsIDB4ZmZmZiwgMClcbiAgdGhpc1tvZmZzZXRdID0gKHZhbHVlICYgMHhmZilcbiAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSA+Pj4gOClcbiAgcmV0dXJuIG9mZnNldCArIDJcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZVVJbnQxNkJFID0gZnVuY3Rpb24gd3JpdGVVSW50MTZCRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDIsIDB4ZmZmZiwgMClcbiAgdGhpc1tvZmZzZXRdID0gKHZhbHVlID4+PiA4KVxuICB0aGlzW29mZnNldCArIDFdID0gKHZhbHVlICYgMHhmZilcbiAgcmV0dXJuIG9mZnNldCArIDJcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZVVJbnQzMkxFID0gZnVuY3Rpb24gd3JpdGVVSW50MzJMRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDQsIDB4ZmZmZmZmZmYsIDApXG4gIHRoaXNbb2Zmc2V0ICsgM10gPSAodmFsdWUgPj4+IDI0KVxuICB0aGlzW29mZnNldCArIDJdID0gKHZhbHVlID4+PiAxNilcbiAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSA+Pj4gOClcbiAgdGhpc1tvZmZzZXRdID0gKHZhbHVlICYgMHhmZilcbiAgcmV0dXJuIG9mZnNldCArIDRcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZVVJbnQzMkJFID0gZnVuY3Rpb24gd3JpdGVVSW50MzJCRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDQsIDB4ZmZmZmZmZmYsIDApXG4gIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSA+Pj4gMjQpXG4gIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgPj4+IDE2KVxuICB0aGlzW29mZnNldCArIDJdID0gKHZhbHVlID4+PiA4KVxuICB0aGlzW29mZnNldCArIDNdID0gKHZhbHVlICYgMHhmZilcbiAgcmV0dXJuIG9mZnNldCArIDRcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUludExFID0gZnVuY3Rpb24gd3JpdGVJbnRMRSAodmFsdWUsIG9mZnNldCwgYnl0ZUxlbmd0aCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIHtcbiAgICB2YXIgbGltaXQgPSBNYXRoLnBvdygyLCAoOCAqIGJ5dGVMZW5ndGgpIC0gMSlcblxuICAgIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIGxpbWl0IC0gMSwgLWxpbWl0KVxuICB9XG5cbiAgdmFyIGkgPSAwXG4gIHZhciBtdWwgPSAxXG4gIHZhciBzdWIgPSAwXG4gIHRoaXNbb2Zmc2V0XSA9IHZhbHVlICYgMHhGRlxuICB3aGlsZSAoKytpIDwgYnl0ZUxlbmd0aCAmJiAobXVsICo9IDB4MTAwKSkge1xuICAgIGlmICh2YWx1ZSA8IDAgJiYgc3ViID09PSAwICYmIHRoaXNbb2Zmc2V0ICsgaSAtIDFdICE9PSAwKSB7XG4gICAgICBzdWIgPSAxXG4gICAgfVxuICAgIHRoaXNbb2Zmc2V0ICsgaV0gPSAoKHZhbHVlIC8gbXVsKSA+PiAwKSAtIHN1YiAmIDB4RkZcbiAgfVxuXG4gIHJldHVybiBvZmZzZXQgKyBieXRlTGVuZ3RoXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVJbnRCRSA9IGZ1bmN0aW9uIHdyaXRlSW50QkUgKHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSB7XG4gICAgdmFyIGxpbWl0ID0gTWF0aC5wb3coMiwgKDggKiBieXRlTGVuZ3RoKSAtIDEpXG5cbiAgICBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCBieXRlTGVuZ3RoLCBsaW1pdCAtIDEsIC1saW1pdClcbiAgfVxuXG4gIHZhciBpID0gYnl0ZUxlbmd0aCAtIDFcbiAgdmFyIG11bCA9IDFcbiAgdmFyIHN1YiA9IDBcbiAgdGhpc1tvZmZzZXQgKyBpXSA9IHZhbHVlICYgMHhGRlxuICB3aGlsZSAoLS1pID49IDAgJiYgKG11bCAqPSAweDEwMCkpIHtcbiAgICBpZiAodmFsdWUgPCAwICYmIHN1YiA9PT0gMCAmJiB0aGlzW29mZnNldCArIGkgKyAxXSAhPT0gMCkge1xuICAgICAgc3ViID0gMVxuICAgIH1cbiAgICB0aGlzW29mZnNldCArIGldID0gKCh2YWx1ZSAvIG11bCkgPj4gMCkgLSBzdWIgJiAweEZGXG4gIH1cblxuICByZXR1cm4gb2Zmc2V0ICsgYnl0ZUxlbmd0aFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlSW50OCA9IGZ1bmN0aW9uIHdyaXRlSW50OCAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDEsIDB4N2YsIC0weDgwKVxuICBpZiAodmFsdWUgPCAwKSB2YWx1ZSA9IDB4ZmYgKyB2YWx1ZSArIDFcbiAgdGhpc1tvZmZzZXRdID0gKHZhbHVlICYgMHhmZilcbiAgcmV0dXJuIG9mZnNldCArIDFcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUludDE2TEUgPSBmdW5jdGlvbiB3cml0ZUludDE2TEUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCAyLCAweDdmZmYsIC0weDgwMDApXG4gIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSAmIDB4ZmYpXG4gIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgPj4+IDgpXG4gIHJldHVybiBvZmZzZXQgKyAyXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVJbnQxNkJFID0gZnVuY3Rpb24gd3JpdGVJbnQxNkJFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgMiwgMHg3ZmZmLCAtMHg4MDAwKVxuICB0aGlzW29mZnNldF0gPSAodmFsdWUgPj4+IDgpXG4gIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgJiAweGZmKVxuICByZXR1cm4gb2Zmc2V0ICsgMlxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlSW50MzJMRSA9IGZ1bmN0aW9uIHdyaXRlSW50MzJMRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDQsIDB4N2ZmZmZmZmYsIC0weDgwMDAwMDAwKVxuICB0aGlzW29mZnNldF0gPSAodmFsdWUgJiAweGZmKVxuICB0aGlzW29mZnNldCArIDFdID0gKHZhbHVlID4+PiA4KVxuICB0aGlzW29mZnNldCArIDJdID0gKHZhbHVlID4+PiAxNilcbiAgdGhpc1tvZmZzZXQgKyAzXSA9ICh2YWx1ZSA+Pj4gMjQpXG4gIHJldHVybiBvZmZzZXQgKyA0XG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVJbnQzMkJFID0gZnVuY3Rpb24gd3JpdGVJbnQzMkJFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgPj4+IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgNCwgMHg3ZmZmZmZmZiwgLTB4ODAwMDAwMDApXG4gIGlmICh2YWx1ZSA8IDApIHZhbHVlID0gMHhmZmZmZmZmZiArIHZhbHVlICsgMVxuICB0aGlzW29mZnNldF0gPSAodmFsdWUgPj4+IDI0KVxuICB0aGlzW29mZnNldCArIDFdID0gKHZhbHVlID4+PiAxNilcbiAgdGhpc1tvZmZzZXQgKyAyXSA9ICh2YWx1ZSA+Pj4gOClcbiAgdGhpc1tvZmZzZXQgKyAzXSA9ICh2YWx1ZSAmIDB4ZmYpXG4gIHJldHVybiBvZmZzZXQgKyA0XG59XG5cbmZ1bmN0aW9uIGNoZWNrSUVFRTc1NCAoYnVmLCB2YWx1ZSwgb2Zmc2V0LCBleHQsIG1heCwgbWluKSB7XG4gIGlmIChvZmZzZXQgKyBleHQgPiBidWYubGVuZ3RoKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignSW5kZXggb3V0IG9mIHJhbmdlJylcbiAgaWYgKG9mZnNldCA8IDApIHRocm93IG5ldyBSYW5nZUVycm9yKCdJbmRleCBvdXQgb2YgcmFuZ2UnKVxufVxuXG5mdW5jdGlvbiB3cml0ZUZsb2F0IChidWYsIHZhbHVlLCBvZmZzZXQsIGxpdHRsZUVuZGlhbiwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0ID4+PiAwXG4gIGlmICghbm9Bc3NlcnQpIHtcbiAgICBjaGVja0lFRUU3NTQoYnVmLCB2YWx1ZSwgb2Zmc2V0LCA0LCAzLjQwMjgyMzQ2NjM4NTI4ODZlKzM4LCAtMy40MDI4MjM0NjYzODUyODg2ZSszOClcbiAgfVxuICBpZWVlNzU0LndyaXRlKGJ1ZiwgdmFsdWUsIG9mZnNldCwgbGl0dGxlRW5kaWFuLCAyMywgNClcbiAgcmV0dXJuIG9mZnNldCArIDRcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUZsb2F0TEUgPSBmdW5jdGlvbiB3cml0ZUZsb2F0TEUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHJldHVybiB3cml0ZUZsb2F0KHRoaXMsIHZhbHVlLCBvZmZzZXQsIHRydWUsIG5vQXNzZXJ0KVxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlRmxvYXRCRSA9IGZ1bmN0aW9uIHdyaXRlRmxvYXRCRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgcmV0dXJuIHdyaXRlRmxvYXQodGhpcywgdmFsdWUsIG9mZnNldCwgZmFsc2UsIG5vQXNzZXJ0KVxufVxuXG5mdW5jdGlvbiB3cml0ZURvdWJsZSAoYnVmLCB2YWx1ZSwgb2Zmc2V0LCBsaXR0bGVFbmRpYW4sIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCA+Pj4gMFxuICBpZiAoIW5vQXNzZXJ0KSB7XG4gICAgY2hlY2tJRUVFNzU0KGJ1ZiwgdmFsdWUsIG9mZnNldCwgOCwgMS43OTc2OTMxMzQ4NjIzMTU3RSszMDgsIC0xLjc5NzY5MzEzNDg2MjMxNTdFKzMwOClcbiAgfVxuICBpZWVlNzU0LndyaXRlKGJ1ZiwgdmFsdWUsIG9mZnNldCwgbGl0dGxlRW5kaWFuLCA1MiwgOClcbiAgcmV0dXJuIG9mZnNldCArIDhcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZURvdWJsZUxFID0gZnVuY3Rpb24gd3JpdGVEb3VibGVMRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgcmV0dXJuIHdyaXRlRG91YmxlKHRoaXMsIHZhbHVlLCBvZmZzZXQsIHRydWUsIG5vQXNzZXJ0KVxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlRG91YmxlQkUgPSBmdW5jdGlvbiB3cml0ZURvdWJsZUJFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICByZXR1cm4gd3JpdGVEb3VibGUodGhpcywgdmFsdWUsIG9mZnNldCwgZmFsc2UsIG5vQXNzZXJ0KVxufVxuXG4vLyBjb3B5KHRhcmdldEJ1ZmZlciwgdGFyZ2V0U3RhcnQ9MCwgc291cmNlU3RhcnQ9MCwgc291cmNlRW5kPWJ1ZmZlci5sZW5ndGgpXG5CdWZmZXIucHJvdG90eXBlLmNvcHkgPSBmdW5jdGlvbiBjb3B5ICh0YXJnZXQsIHRhcmdldFN0YXJ0LCBzdGFydCwgZW5kKSB7XG4gIGlmICghc3RhcnQpIHN0YXJ0ID0gMFxuICBpZiAoIWVuZCAmJiBlbmQgIT09IDApIGVuZCA9IHRoaXMubGVuZ3RoXG4gIGlmICh0YXJnZXRTdGFydCA+PSB0YXJnZXQubGVuZ3RoKSB0YXJnZXRTdGFydCA9IHRhcmdldC5sZW5ndGhcbiAgaWYgKCF0YXJnZXRTdGFydCkgdGFyZ2V0U3RhcnQgPSAwXG4gIGlmIChlbmQgPiAwICYmIGVuZCA8IHN0YXJ0KSBlbmQgPSBzdGFydFxuXG4gIC8vIENvcHkgMCBieXRlczsgd2UncmUgZG9uZVxuICBpZiAoZW5kID09PSBzdGFydCkgcmV0dXJuIDBcbiAgaWYgKHRhcmdldC5sZW5ndGggPT09IDAgfHwgdGhpcy5sZW5ndGggPT09IDApIHJldHVybiAwXG5cbiAgLy8gRmF0YWwgZXJyb3IgY29uZGl0aW9uc1xuICBpZiAodGFyZ2V0U3RhcnQgPCAwKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ3RhcmdldFN0YXJ0IG91dCBvZiBib3VuZHMnKVxuICB9XG4gIGlmIChzdGFydCA8IDAgfHwgc3RhcnQgPj0gdGhpcy5sZW5ndGgpIHRocm93IG5ldyBSYW5nZUVycm9yKCdzb3VyY2VTdGFydCBvdXQgb2YgYm91bmRzJylcbiAgaWYgKGVuZCA8IDApIHRocm93IG5ldyBSYW5nZUVycm9yKCdzb3VyY2VFbmQgb3V0IG9mIGJvdW5kcycpXG5cbiAgLy8gQXJlIHdlIG9vYj9cbiAgaWYgKGVuZCA+IHRoaXMubGVuZ3RoKSBlbmQgPSB0aGlzLmxlbmd0aFxuICBpZiAodGFyZ2V0Lmxlbmd0aCAtIHRhcmdldFN0YXJ0IDwgZW5kIC0gc3RhcnQpIHtcbiAgICBlbmQgPSB0YXJnZXQubGVuZ3RoIC0gdGFyZ2V0U3RhcnQgKyBzdGFydFxuICB9XG5cbiAgdmFyIGxlbiA9IGVuZCAtIHN0YXJ0XG4gIHZhciBpXG5cbiAgaWYgKHRoaXMgPT09IHRhcmdldCAmJiBzdGFydCA8IHRhcmdldFN0YXJ0ICYmIHRhcmdldFN0YXJ0IDwgZW5kKSB7XG4gICAgLy8gZGVzY2VuZGluZyBjb3B5IGZyb20gZW5kXG4gICAgZm9yIChpID0gbGVuIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgIHRhcmdldFtpICsgdGFyZ2V0U3RhcnRdID0gdGhpc1tpICsgc3RhcnRdXG4gICAgfVxuICB9IGVsc2UgaWYgKGxlbiA8IDEwMDApIHtcbiAgICAvLyBhc2NlbmRpbmcgY29weSBmcm9tIHN0YXJ0XG4gICAgZm9yIChpID0gMDsgaSA8IGxlbjsgKytpKSB7XG4gICAgICB0YXJnZXRbaSArIHRhcmdldFN0YXJ0XSA9IHRoaXNbaSArIHN0YXJ0XVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBVaW50OEFycmF5LnByb3RvdHlwZS5zZXQuY2FsbChcbiAgICAgIHRhcmdldCxcbiAgICAgIHRoaXMuc3ViYXJyYXkoc3RhcnQsIHN0YXJ0ICsgbGVuKSxcbiAgICAgIHRhcmdldFN0YXJ0XG4gICAgKVxuICB9XG5cbiAgcmV0dXJuIGxlblxufVxuXG4vLyBVc2FnZTpcbi8vICAgIGJ1ZmZlci5maWxsKG51bWJlclssIG9mZnNldFssIGVuZF1dKVxuLy8gICAgYnVmZmVyLmZpbGwoYnVmZmVyWywgb2Zmc2V0WywgZW5kXV0pXG4vLyAgICBidWZmZXIuZmlsbChzdHJpbmdbLCBvZmZzZXRbLCBlbmRdXVssIGVuY29kaW5nXSlcbkJ1ZmZlci5wcm90b3R5cGUuZmlsbCA9IGZ1bmN0aW9uIGZpbGwgKHZhbCwgc3RhcnQsIGVuZCwgZW5jb2RpbmcpIHtcbiAgLy8gSGFuZGxlIHN0cmluZyBjYXNlczpcbiAgaWYgKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnKSB7XG4gICAgaWYgKHR5cGVvZiBzdGFydCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGVuY29kaW5nID0gc3RhcnRcbiAgICAgIHN0YXJ0ID0gMFxuICAgICAgZW5kID0gdGhpcy5sZW5ndGhcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBlbmQgPT09ICdzdHJpbmcnKSB7XG4gICAgICBlbmNvZGluZyA9IGVuZFxuICAgICAgZW5kID0gdGhpcy5sZW5ndGhcbiAgICB9XG4gICAgaWYgKHZhbC5sZW5ndGggPT09IDEpIHtcbiAgICAgIHZhciBjb2RlID0gdmFsLmNoYXJDb2RlQXQoMClcbiAgICAgIGlmIChjb2RlIDwgMjU2KSB7XG4gICAgICAgIHZhbCA9IGNvZGVcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGVuY29kaW5nICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mIGVuY29kaW5nICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignZW5jb2RpbmcgbXVzdCBiZSBhIHN0cmluZycpXG4gICAgfVxuICAgIGlmICh0eXBlb2YgZW5jb2RpbmcgPT09ICdzdHJpbmcnICYmICFCdWZmZXIuaXNFbmNvZGluZyhlbmNvZGluZykpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1Vua25vd24gZW5jb2Rpbmc6ICcgKyBlbmNvZGluZylcbiAgICB9XG4gIH0gZWxzZSBpZiAodHlwZW9mIHZhbCA9PT0gJ251bWJlcicpIHtcbiAgICB2YWwgPSB2YWwgJiAyNTVcbiAgfVxuXG4gIC8vIEludmFsaWQgcmFuZ2VzIGFyZSBub3Qgc2V0IHRvIGEgZGVmYXVsdCwgc28gY2FuIHJhbmdlIGNoZWNrIGVhcmx5LlxuICBpZiAoc3RhcnQgPCAwIHx8IHRoaXMubGVuZ3RoIDwgc3RhcnQgfHwgdGhpcy5sZW5ndGggPCBlbmQpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignT3V0IG9mIHJhbmdlIGluZGV4JylcbiAgfVxuXG4gIGlmIChlbmQgPD0gc3RhcnQpIHtcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgc3RhcnQgPSBzdGFydCA+Pj4gMFxuICBlbmQgPSBlbmQgPT09IHVuZGVmaW5lZCA/IHRoaXMubGVuZ3RoIDogZW5kID4+PiAwXG5cbiAgaWYgKCF2YWwpIHZhbCA9IDBcblxuICB2YXIgaVxuICBpZiAodHlwZW9mIHZhbCA9PT0gJ251bWJlcicpIHtcbiAgICBmb3IgKGkgPSBzdGFydDsgaSA8IGVuZDsgKytpKSB7XG4gICAgICB0aGlzW2ldID0gdmFsXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHZhciBieXRlcyA9IEJ1ZmZlci5pc0J1ZmZlcih2YWwpXG4gICAgICA/IHZhbFxuICAgICAgOiBuZXcgQnVmZmVyKHZhbCwgZW5jb2RpbmcpXG4gICAgdmFyIGxlbiA9IGJ5dGVzLmxlbmd0aFxuICAgIGZvciAoaSA9IDA7IGkgPCBlbmQgLSBzdGFydDsgKytpKSB7XG4gICAgICB0aGlzW2kgKyBzdGFydF0gPSBieXRlc1tpICUgbGVuXVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0aGlzXG59XG5cbi8vIEhFTFBFUiBGVU5DVElPTlNcbi8vID09PT09PT09PT09PT09PT1cblxudmFyIElOVkFMSURfQkFTRTY0X1JFID0gL1teKy8wLTlBLVphLXotX10vZ1xuXG5mdW5jdGlvbiBiYXNlNjRjbGVhbiAoc3RyKSB7XG4gIC8vIE5vZGUgc3RyaXBzIG91dCBpbnZhbGlkIGNoYXJhY3RlcnMgbGlrZSBcXG4gYW5kIFxcdCBmcm9tIHRoZSBzdHJpbmcsIGJhc2U2NC1qcyBkb2VzIG5vdFxuICBzdHIgPSBzdHIudHJpbSgpLnJlcGxhY2UoSU5WQUxJRF9CQVNFNjRfUkUsICcnKVxuICAvLyBOb2RlIGNvbnZlcnRzIHN0cmluZ3Mgd2l0aCBsZW5ndGggPCAyIHRvICcnXG4gIGlmIChzdHIubGVuZ3RoIDwgMikgcmV0dXJuICcnXG4gIC8vIE5vZGUgYWxsb3dzIGZvciBub24tcGFkZGVkIGJhc2U2NCBzdHJpbmdzIChtaXNzaW5nIHRyYWlsaW5nID09PSksIGJhc2U2NC1qcyBkb2VzIG5vdFxuICB3aGlsZSAoc3RyLmxlbmd0aCAlIDQgIT09IDApIHtcbiAgICBzdHIgPSBzdHIgKyAnPSdcbiAgfVxuICByZXR1cm4gc3RyXG59XG5cbmZ1bmN0aW9uIHRvSGV4IChuKSB7XG4gIGlmIChuIDwgMTYpIHJldHVybiAnMCcgKyBuLnRvU3RyaW5nKDE2KVxuICByZXR1cm4gbi50b1N0cmluZygxNilcbn1cblxuZnVuY3Rpb24gdXRmOFRvQnl0ZXMgKHN0cmluZywgdW5pdHMpIHtcbiAgdW5pdHMgPSB1bml0cyB8fCBJbmZpbml0eVxuICB2YXIgY29kZVBvaW50XG4gIHZhciBsZW5ndGggPSBzdHJpbmcubGVuZ3RoXG4gIHZhciBsZWFkU3Vycm9nYXRlID0gbnVsbFxuICB2YXIgYnl0ZXMgPSBbXVxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHtcbiAgICBjb2RlUG9pbnQgPSBzdHJpbmcuY2hhckNvZGVBdChpKVxuXG4gICAgLy8gaXMgc3Vycm9nYXRlIGNvbXBvbmVudFxuICAgIGlmIChjb2RlUG9pbnQgPiAweEQ3RkYgJiYgY29kZVBvaW50IDwgMHhFMDAwKSB7XG4gICAgICAvLyBsYXN0IGNoYXIgd2FzIGEgbGVhZFxuICAgICAgaWYgKCFsZWFkU3Vycm9nYXRlKSB7XG4gICAgICAgIC8vIG5vIGxlYWQgeWV0XG4gICAgICAgIGlmIChjb2RlUG9pbnQgPiAweERCRkYpIHtcbiAgICAgICAgICAvLyB1bmV4cGVjdGVkIHRyYWlsXG4gICAgICAgICAgaWYgKCh1bml0cyAtPSAzKSA+IC0xKSBieXRlcy5wdXNoKDB4RUYsIDB4QkYsIDB4QkQpXG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfSBlbHNlIGlmIChpICsgMSA9PT0gbGVuZ3RoKSB7XG4gICAgICAgICAgLy8gdW5wYWlyZWQgbGVhZFxuICAgICAgICAgIGlmICgodW5pdHMgLT0gMykgPiAtMSkgYnl0ZXMucHVzaCgweEVGLCAweEJGLCAweEJEKVxuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cblxuICAgICAgICAvLyB2YWxpZCBsZWFkXG4gICAgICAgIGxlYWRTdXJyb2dhdGUgPSBjb2RlUG9pbnRcblxuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICAvLyAyIGxlYWRzIGluIGEgcm93XG4gICAgICBpZiAoY29kZVBvaW50IDwgMHhEQzAwKSB7XG4gICAgICAgIGlmICgodW5pdHMgLT0gMykgPiAtMSkgYnl0ZXMucHVzaCgweEVGLCAweEJGLCAweEJEKVxuICAgICAgICBsZWFkU3Vycm9nYXRlID0gY29kZVBvaW50XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIC8vIHZhbGlkIHN1cnJvZ2F0ZSBwYWlyXG4gICAgICBjb2RlUG9pbnQgPSAobGVhZFN1cnJvZ2F0ZSAtIDB4RDgwMCA8PCAxMCB8IGNvZGVQb2ludCAtIDB4REMwMCkgKyAweDEwMDAwXG4gICAgfSBlbHNlIGlmIChsZWFkU3Vycm9nYXRlKSB7XG4gICAgICAvLyB2YWxpZCBibXAgY2hhciwgYnV0IGxhc3QgY2hhciB3YXMgYSBsZWFkXG4gICAgICBpZiAoKHVuaXRzIC09IDMpID4gLTEpIGJ5dGVzLnB1c2goMHhFRiwgMHhCRiwgMHhCRClcbiAgICB9XG5cbiAgICBsZWFkU3Vycm9nYXRlID0gbnVsbFxuXG4gICAgLy8gZW5jb2RlIHV0ZjhcbiAgICBpZiAoY29kZVBvaW50IDwgMHg4MCkge1xuICAgICAgaWYgKCh1bml0cyAtPSAxKSA8IDApIGJyZWFrXG4gICAgICBieXRlcy5wdXNoKGNvZGVQb2ludClcbiAgICB9IGVsc2UgaWYgKGNvZGVQb2ludCA8IDB4ODAwKSB7XG4gICAgICBpZiAoKHVuaXRzIC09IDIpIDwgMCkgYnJlYWtcbiAgICAgIGJ5dGVzLnB1c2goXG4gICAgICAgIGNvZGVQb2ludCA+PiAweDYgfCAweEMwLFxuICAgICAgICBjb2RlUG9pbnQgJiAweDNGIHwgMHg4MFxuICAgICAgKVxuICAgIH0gZWxzZSBpZiAoY29kZVBvaW50IDwgMHgxMDAwMCkge1xuICAgICAgaWYgKCh1bml0cyAtPSAzKSA8IDApIGJyZWFrXG4gICAgICBieXRlcy5wdXNoKFxuICAgICAgICBjb2RlUG9pbnQgPj4gMHhDIHwgMHhFMCxcbiAgICAgICAgY29kZVBvaW50ID4+IDB4NiAmIDB4M0YgfCAweDgwLFxuICAgICAgICBjb2RlUG9pbnQgJiAweDNGIHwgMHg4MFxuICAgICAgKVxuICAgIH0gZWxzZSBpZiAoY29kZVBvaW50IDwgMHgxMTAwMDApIHtcbiAgICAgIGlmICgodW5pdHMgLT0gNCkgPCAwKSBicmVha1xuICAgICAgYnl0ZXMucHVzaChcbiAgICAgICAgY29kZVBvaW50ID4+IDB4MTIgfCAweEYwLFxuICAgICAgICBjb2RlUG9pbnQgPj4gMHhDICYgMHgzRiB8IDB4ODAsXG4gICAgICAgIGNvZGVQb2ludCA+PiAweDYgJiAweDNGIHwgMHg4MCxcbiAgICAgICAgY29kZVBvaW50ICYgMHgzRiB8IDB4ODBcbiAgICAgIClcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGNvZGUgcG9pbnQnKVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBieXRlc1xufVxuXG5mdW5jdGlvbiBhc2NpaVRvQnl0ZXMgKHN0cikge1xuICB2YXIgYnl0ZUFycmF5ID0gW11cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHIubGVuZ3RoOyArK2kpIHtcbiAgICAvLyBOb2RlJ3MgY29kZSBzZWVtcyB0byBiZSBkb2luZyB0aGlzIGFuZCBub3QgJiAweDdGLi5cbiAgICBieXRlQXJyYXkucHVzaChzdHIuY2hhckNvZGVBdChpKSAmIDB4RkYpXG4gIH1cbiAgcmV0dXJuIGJ5dGVBcnJheVxufVxuXG5mdW5jdGlvbiB1dGYxNmxlVG9CeXRlcyAoc3RyLCB1bml0cykge1xuICB2YXIgYywgaGksIGxvXG4gIHZhciBieXRlQXJyYXkgPSBbXVxuICBmb3IgKHZhciBpID0gMDsgaSA8IHN0ci5sZW5ndGg7ICsraSkge1xuICAgIGlmICgodW5pdHMgLT0gMikgPCAwKSBicmVha1xuXG4gICAgYyA9IHN0ci5jaGFyQ29kZUF0KGkpXG4gICAgaGkgPSBjID4+IDhcbiAgICBsbyA9IGMgJSAyNTZcbiAgICBieXRlQXJyYXkucHVzaChsbylcbiAgICBieXRlQXJyYXkucHVzaChoaSlcbiAgfVxuXG4gIHJldHVybiBieXRlQXJyYXlcbn1cblxuZnVuY3Rpb24gYmFzZTY0VG9CeXRlcyAoc3RyKSB7XG4gIHJldHVybiBiYXNlNjQudG9CeXRlQXJyYXkoYmFzZTY0Y2xlYW4oc3RyKSlcbn1cblxuZnVuY3Rpb24gYmxpdEJ1ZmZlciAoc3JjLCBkc3QsIG9mZnNldCwgbGVuZ3RoKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHtcbiAgICBpZiAoKGkgKyBvZmZzZXQgPj0gZHN0Lmxlbmd0aCkgfHwgKGkgPj0gc3JjLmxlbmd0aCkpIGJyZWFrXG4gICAgZHN0W2kgKyBvZmZzZXRdID0gc3JjW2ldXG4gIH1cbiAgcmV0dXJuIGlcbn1cblxuLy8gTm9kZSAwLjEwIHN1cHBvcnRzIGBBcnJheUJ1ZmZlcmAgYnV0IGxhY2tzIGBBcnJheUJ1ZmZlci5pc1ZpZXdgXG5mdW5jdGlvbiBpc0FycmF5QnVmZmVyVmlldyAob2JqKSB7XG4gIHJldHVybiAodHlwZW9mIEFycmF5QnVmZmVyLmlzVmlldyA9PT0gJ2Z1bmN0aW9uJykgJiYgQXJyYXlCdWZmZXIuaXNWaWV3KG9iailcbn1cblxuZnVuY3Rpb24gbnVtYmVySXNOYU4gKG9iaikge1xuICByZXR1cm4gb2JqICE9PSBvYmogLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1zZWxmLWNvbXBhcmVcbn1cbiIsInZhciBzcGF3biAgICAgICA9IHJlcXVpcmUoJ2Nyb3NzLXNwYXduLWFzeW5jJyk7XG52YXIgY3JlYXRlRXJyb3IgPSByZXF1aXJlKCdlcnItY29kZScpO1xudmFyIFEgICAgICAgICAgID0gcmVxdWlyZSgncScpO1xuXG5mdW5jdGlvbiBleGVjdXRlKGNvbW1hbmQsIGFyZ3MsIG9wdGlvbnMpIHtcbiAgICB2YXIgcHJvY2VzcztcbiAgICB2YXIgc3RkZXJyID0gbmV3IEJ1ZmZlcignJyk7XG4gICAgdmFyIHN0ZG91dCA9IG5ldyBCdWZmZXIoJycpO1xuICAgIHZhciBkZWZlcnJlZCA9IFEuZGVmZXIoKTtcblxuICAgIC8vIEJ1ZmZlciBvdXRwdXQsIHJlcG9ydGluZyBwcm9ncmVzc1xuICAgIHByb2Nlc3MgPSBzcGF3bihjb21tYW5kLCBhcmdzLCBvcHRpb25zKTtcbiAgICBpZiAocHJvY2Vzcy5zdGRvdXQpIHtcbiAgICAgICAgcHJvY2Vzcy5zdGRvdXQub24oJ2RhdGEnLCBmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgICAgICAgc3Rkb3V0ID0gQnVmZmVyLmNvbmNhdChbc3Rkb3V0LCBkYXRhXSk7XG4gICAgICAgICAgICBkYXRhLnR5cGUgPSAnc3Rkb3V0JztcbiAgICAgICAgICAgIGRlZmVycmVkLm5vdGlmeShkYXRhKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGlmIChwcm9jZXNzLnN0ZGVycikge1xuICAgICAgICBwcm9jZXNzLnN0ZGVyci5vbignZGF0YScsIGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICAgICAgICBzdGRlcnIgPSBCdWZmZXIuY29uY2F0KFtzdGRlcnIsIGRhdGFdKTtcbiAgICAgICAgICAgIGRhdGEudHlwZSA9ICdzdGRlcnInO1xuICAgICAgICAgICAgZGVmZXJyZWQubm90aWZ5KGRhdGEpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBJZiB0aGVyZSBpcyBhbiBlcnJvciBzcGF3bmluZyB0aGUgY29tbWFuZCwgcmVqZWN0IHRoZSBwcm9taXNlXG4gICAgcHJvY2Vzcy5vbignZXJyb3InLCBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIGRlZmVycmVkLnJlamVjdChlcnJvcik7XG4gICAgfSk7XG5cbiAgICAvLyBMaXN0ZW4gdG8gdGhlIGNsb3NlIGV2ZW50IGluc3RlYWQgb2YgZXhpdFxuICAgIC8vIFRoZXkgYXJlIHNpbWlsYXIgYnV0IGNsb3NlIGVuc3VyZXMgdGhhdCBzdHJlYW1zIGFyZSBmbHVzaGVkXG4gICAgcHJvY2Vzcy5vbignY2xvc2UnLCBmdW5jdGlvbiAoY29kZSkge1xuICAgICAgICB2YXIgZnVsbENvbW1hbmQ7XG4gICAgICAgIHZhciBlcnJvcjtcblxuICAgICAgICBzdGRvdXQgPSBzdGRvdXQudG9TdHJpbmcoKTtcbiAgICAgICAgc3RkZXJyID0gc3RkZXJyLnRvU3RyaW5nKCk7XG5cbiAgICAgICAgaWYgKCFjb2RlKSB7XG4gICAgICAgICAgICByZXR1cm4gZGVmZXJyZWQucmVzb2x2ZShbc3Rkb3V0LCBzdGRlcnJdKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEdlbmVyYXRlIHRoZSBmdWxsIGNvbW1hbmQgdG8gYmUgcHJlc2VudGVkIGluIHRoZSBlcnJvciBtZXNzYWdlXG4gICAgICAgIGFyZ3MgPSBhcmdzIHx8IFtdO1xuICAgICAgICBmdWxsQ29tbWFuZCA9IGNvbW1hbmQ7XG4gICAgICAgIGZ1bGxDb21tYW5kICs9IGFyZ3MubGVuZ3RoID8gJyAnICsgYXJncy5qb2luKCcgJykgOiAnJztcblxuICAgICAgICAvLyBCdWlsZCB0aGUgZXJyb3IgaW5zdGFuY2VcbiAgICAgICAgZXJyb3IgPSBjcmVhdGVFcnJvcignRmFpbGVkIHRvIGV4ZWN1dGUgXCInICsgZnVsbENvbW1hbmQgKyAnXCIsIGV4aXQgY29kZSBvZiAjJyArIGNvZGUsICdFQ01ERVJSJywge1xuICAgICAgICAgICAgc3RkZXJyOiBzdGRlcnIsXG4gICAgICAgICAgICBzdGRvdXQ6IHN0ZG91dCxcbiAgICAgICAgICAgIGRldGFpbHM6IHN0ZGVycixcbiAgICAgICAgICAgIHN0YXR1czogY29kZVxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gZGVmZXJyZWQucmVqZWN0KGVycm9yKTtcbiAgICB9KTtcblxuICAgIGRlZmVycmVkLnByb21pc2UuY3AgPSBwcm9jZXNzO1xuXG4gICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2U7XG59XG5cbmZ1bmN0aW9uIGJ1ZmZlcmVkKGNvbW1hbmQsIGFyZ3MsIG9wdGlvbnMsIGNhbGxiYWNrKSB7XG4gICAgaWYgKHR5cGVvZiBvcHRpb25zID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGNhbGxiYWNrID0gb3B0aW9ucztcbiAgICAgICAgb3B0aW9ucyA9IG51bGw7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgYXJncyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjYWxsYmFjayA9IGFyZ3M7XG4gICAgICAgIGFyZ3MgPSBvcHRpb25zID0gbnVsbDtcbiAgICB9XG4gICAgaWYgKGFyZ3MgJiYgIUFycmF5LmlzQXJyYXkoYXJncykpIHtcbiAgICAgICAgb3B0aW9ucyA9IGFyZ3M7XG4gICAgICAgIGFyZ3MgPSBudWxsO1xuICAgIH1cblxuICAgIHZhciBwcm9taXNlID0gZXhlY3V0ZShjb21tYW5kLCBhcmdzLCBvcHRpb25zKTtcblxuICAgIC8vIE1hbnVhbCBub2RlaWZ5IGJlY2F1c2Ugb2YgLnNwcmVhZCA6KFxuICAgIGlmICghY2FsbGJhY2spIHtcbiAgICAgICAgcmV0dXJuIHByb21pc2U7XG4gICAgfVxuXG4gICAgcHJvbWlzZVxuICAgIC5zcHJlYWQoZnVuY3Rpb24gKHN0ZG91dCwgc3RkZXJyKSB7XG4gICAgICAgIGNhbGxiYWNrKG51bGwsIHN0ZG91dCwgc3RkZXJyKTtcbiAgICB9LCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgIGNhbGxiYWNrKGVyciwgZXJyLnN0ZG91dCwgZXJyLnN0ZGVycik7XG4gICAgfSlcbiAgICAuZG9uZSgpO1xuXG4gICAgcmV0dXJuIHByb21pc2UuY3A7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYnVmZmVyZWQ7XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vbGliL2NoYWknKTtcbiIsIi8qIVxuICogY2hhaVxuICogQ29weXJpZ2h0KGMpIDIwMTEtMjAxNCBKYWtlIEx1ZXIgPGpha2VAYWxvZ2ljYWxwYXJhZG94LmNvbT5cbiAqIE1JVCBMaWNlbnNlZFxuICovXG5cbnZhciB1c2VkID0gW11cbiAgLCBleHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSB7fTtcblxuLyohXG4gKiBDaGFpIHZlcnNpb25cbiAqL1xuXG5leHBvcnRzLnZlcnNpb24gPSAnMy41LjAnO1xuXG4vKiFcbiAqIEFzc2VydGlvbiBFcnJvclxuICovXG5cbmV4cG9ydHMuQXNzZXJ0aW9uRXJyb3IgPSByZXF1aXJlKCdhc3NlcnRpb24tZXJyb3InKTtcblxuLyohXG4gKiBVdGlscyBmb3IgcGx1Z2lucyAobm90IGV4cG9ydGVkKVxuICovXG5cbnZhciB1dGlsID0gcmVxdWlyZSgnLi9jaGFpL3V0aWxzJyk7XG5cbi8qKlxuICogIyAudXNlKGZ1bmN0aW9uKVxuICpcbiAqIFByb3ZpZGVzIGEgd2F5IHRvIGV4dGVuZCB0aGUgaW50ZXJuYWxzIG9mIENoYWlcbiAqXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufVxuICogQHJldHVybnMge3RoaXN9IGZvciBjaGFpbmluZ1xuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5leHBvcnRzLnVzZSA9IGZ1bmN0aW9uIChmbikge1xuICBpZiAoIX51c2VkLmluZGV4T2YoZm4pKSB7XG4gICAgZm4odGhpcywgdXRpbCk7XG4gICAgdXNlZC5wdXNoKGZuKTtcbiAgfVxuXG4gIHJldHVybiB0aGlzO1xufTtcblxuLyohXG4gKiBVdGlsaXR5IEZ1bmN0aW9uc1xuICovXG5cbmV4cG9ydHMudXRpbCA9IHV0aWw7XG5cbi8qIVxuICogQ29uZmlndXJhdGlvblxuICovXG5cbnZhciBjb25maWcgPSByZXF1aXJlKCcuL2NoYWkvY29uZmlnJyk7XG5leHBvcnRzLmNvbmZpZyA9IGNvbmZpZztcblxuLyohXG4gKiBQcmltYXJ5IGBBc3NlcnRpb25gIHByb3RvdHlwZVxuICovXG5cbnZhciBhc3NlcnRpb24gPSByZXF1aXJlKCcuL2NoYWkvYXNzZXJ0aW9uJyk7XG5leHBvcnRzLnVzZShhc3NlcnRpb24pO1xuXG4vKiFcbiAqIENvcmUgQXNzZXJ0aW9uc1xuICovXG5cbnZhciBjb3JlID0gcmVxdWlyZSgnLi9jaGFpL2NvcmUvYXNzZXJ0aW9ucycpO1xuZXhwb3J0cy51c2UoY29yZSk7XG5cbi8qIVxuICogRXhwZWN0IGludGVyZmFjZVxuICovXG5cbnZhciBleHBlY3QgPSByZXF1aXJlKCcuL2NoYWkvaW50ZXJmYWNlL2V4cGVjdCcpO1xuZXhwb3J0cy51c2UoZXhwZWN0KTtcblxuLyohXG4gKiBTaG91bGQgaW50ZXJmYWNlXG4gKi9cblxudmFyIHNob3VsZCA9IHJlcXVpcmUoJy4vY2hhaS9pbnRlcmZhY2Uvc2hvdWxkJyk7XG5leHBvcnRzLnVzZShzaG91bGQpO1xuXG4vKiFcbiAqIEFzc2VydCBpbnRlcmZhY2VcbiAqL1xuXG52YXIgYXNzZXJ0ID0gcmVxdWlyZSgnLi9jaGFpL2ludGVyZmFjZS9hc3NlcnQnKTtcbmV4cG9ydHMudXNlKGFzc2VydCk7XG4iLCIvKiFcbiAqIGNoYWlcbiAqIGh0dHA6Ly9jaGFpanMuY29tXG4gKiBDb3B5cmlnaHQoYykgMjAxMS0yMDE0IEpha2UgTHVlciA8amFrZUBhbG9naWNhbHBhcmFkb3guY29tPlxuICogTUlUIExpY2Vuc2VkXG4gKi9cblxudmFyIGNvbmZpZyA9IHJlcXVpcmUoJy4vY29uZmlnJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKF9jaGFpLCB1dGlsKSB7XG4gIC8qIVxuICAgKiBNb2R1bGUgZGVwZW5kZW5jaWVzLlxuICAgKi9cblxuICB2YXIgQXNzZXJ0aW9uRXJyb3IgPSBfY2hhaS5Bc3NlcnRpb25FcnJvclxuICAgICwgZmxhZyA9IHV0aWwuZmxhZztcblxuICAvKiFcbiAgICogTW9kdWxlIGV4cG9ydC5cbiAgICovXG5cbiAgX2NoYWkuQXNzZXJ0aW9uID0gQXNzZXJ0aW9uO1xuXG4gIC8qIVxuICAgKiBBc3NlcnRpb24gQ29uc3RydWN0b3JcbiAgICpcbiAgICogQ3JlYXRlcyBvYmplY3QgZm9yIGNoYWluaW5nLlxuICAgKlxuICAgKiBAYXBpIHByaXZhdGVcbiAgICovXG5cbiAgZnVuY3Rpb24gQXNzZXJ0aW9uIChvYmosIG1zZywgc3RhY2spIHtcbiAgICBmbGFnKHRoaXMsICdzc2ZpJywgc3RhY2sgfHwgYXJndW1lbnRzLmNhbGxlZSk7XG4gICAgZmxhZyh0aGlzLCAnb2JqZWN0Jywgb2JqKTtcbiAgICBmbGFnKHRoaXMsICdtZXNzYWdlJywgbXNnKTtcbiAgfVxuXG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShBc3NlcnRpb24sICdpbmNsdWRlU3RhY2snLCB7XG4gICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgIGNvbnNvbGUud2FybignQXNzZXJ0aW9uLmluY2x1ZGVTdGFjayBpcyBkZXByZWNhdGVkLCB1c2UgY2hhaS5jb25maWcuaW5jbHVkZVN0YWNrIGluc3RlYWQuJyk7XG4gICAgICByZXR1cm4gY29uZmlnLmluY2x1ZGVTdGFjaztcbiAgICB9LFxuICAgIHNldDogZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgIGNvbnNvbGUud2FybignQXNzZXJ0aW9uLmluY2x1ZGVTdGFjayBpcyBkZXByZWNhdGVkLCB1c2UgY2hhaS5jb25maWcuaW5jbHVkZVN0YWNrIGluc3RlYWQuJyk7XG4gICAgICBjb25maWcuaW5jbHVkZVN0YWNrID0gdmFsdWU7XG4gICAgfVxuICB9KTtcblxuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoQXNzZXJ0aW9uLCAnc2hvd0RpZmYnLCB7XG4gICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgIGNvbnNvbGUud2FybignQXNzZXJ0aW9uLnNob3dEaWZmIGlzIGRlcHJlY2F0ZWQsIHVzZSBjaGFpLmNvbmZpZy5zaG93RGlmZiBpbnN0ZWFkLicpO1xuICAgICAgcmV0dXJuIGNvbmZpZy5zaG93RGlmZjtcbiAgICB9LFxuICAgIHNldDogZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgIGNvbnNvbGUud2FybignQXNzZXJ0aW9uLnNob3dEaWZmIGlzIGRlcHJlY2F0ZWQsIHVzZSBjaGFpLmNvbmZpZy5zaG93RGlmZiBpbnN0ZWFkLicpO1xuICAgICAgY29uZmlnLnNob3dEaWZmID0gdmFsdWU7XG4gICAgfVxuICB9KTtcblxuICBBc3NlcnRpb24uYWRkUHJvcGVydHkgPSBmdW5jdGlvbiAobmFtZSwgZm4pIHtcbiAgICB1dGlsLmFkZFByb3BlcnR5KHRoaXMucHJvdG90eXBlLCBuYW1lLCBmbik7XG4gIH07XG5cbiAgQXNzZXJ0aW9uLmFkZE1ldGhvZCA9IGZ1bmN0aW9uIChuYW1lLCBmbikge1xuICAgIHV0aWwuYWRkTWV0aG9kKHRoaXMucHJvdG90eXBlLCBuYW1lLCBmbik7XG4gIH07XG5cbiAgQXNzZXJ0aW9uLmFkZENoYWluYWJsZU1ldGhvZCA9IGZ1bmN0aW9uIChuYW1lLCBmbiwgY2hhaW5pbmdCZWhhdmlvcikge1xuICAgIHV0aWwuYWRkQ2hhaW5hYmxlTWV0aG9kKHRoaXMucHJvdG90eXBlLCBuYW1lLCBmbiwgY2hhaW5pbmdCZWhhdmlvcik7XG4gIH07XG5cbiAgQXNzZXJ0aW9uLm92ZXJ3cml0ZVByb3BlcnR5ID0gZnVuY3Rpb24gKG5hbWUsIGZuKSB7XG4gICAgdXRpbC5vdmVyd3JpdGVQcm9wZXJ0eSh0aGlzLnByb3RvdHlwZSwgbmFtZSwgZm4pO1xuICB9O1xuXG4gIEFzc2VydGlvbi5vdmVyd3JpdGVNZXRob2QgPSBmdW5jdGlvbiAobmFtZSwgZm4pIHtcbiAgICB1dGlsLm92ZXJ3cml0ZU1ldGhvZCh0aGlzLnByb3RvdHlwZSwgbmFtZSwgZm4pO1xuICB9O1xuXG4gIEFzc2VydGlvbi5vdmVyd3JpdGVDaGFpbmFibGVNZXRob2QgPSBmdW5jdGlvbiAobmFtZSwgZm4sIGNoYWluaW5nQmVoYXZpb3IpIHtcbiAgICB1dGlsLm92ZXJ3cml0ZUNoYWluYWJsZU1ldGhvZCh0aGlzLnByb3RvdHlwZSwgbmFtZSwgZm4sIGNoYWluaW5nQmVoYXZpb3IpO1xuICB9O1xuXG4gIC8qKlxuICAgKiAjIyMgLmFzc2VydChleHByZXNzaW9uLCBtZXNzYWdlLCBuZWdhdGVNZXNzYWdlLCBleHBlY3RlZCwgYWN0dWFsLCBzaG93RGlmZilcbiAgICpcbiAgICogRXhlY3V0ZXMgYW4gZXhwcmVzc2lvbiBhbmQgY2hlY2sgZXhwZWN0YXRpb25zLiBUaHJvd3MgQXNzZXJ0aW9uRXJyb3IgZm9yIHJlcG9ydGluZyBpZiB0ZXN0IGRvZXNuJ3QgcGFzcy5cbiAgICpcbiAgICogQG5hbWUgYXNzZXJ0XG4gICAqIEBwYXJhbSB7UGhpbG9zb3BoaWNhbH0gZXhwcmVzc2lvbiB0byBiZSB0ZXN0ZWRcbiAgICogQHBhcmFtIHtTdHJpbmd8RnVuY3Rpb259IG1lc3NhZ2Ugb3IgZnVuY3Rpb24gdGhhdCByZXR1cm5zIG1lc3NhZ2UgdG8gZGlzcGxheSBpZiBleHByZXNzaW9uIGZhaWxzXG4gICAqIEBwYXJhbSB7U3RyaW5nfEZ1bmN0aW9ufSBuZWdhdGVkTWVzc2FnZSBvciBmdW5jdGlvbiB0aGF0IHJldHVybnMgbmVnYXRlZE1lc3NhZ2UgdG8gZGlzcGxheSBpZiBuZWdhdGVkIGV4cHJlc3Npb24gZmFpbHNcbiAgICogQHBhcmFtIHtNaXhlZH0gZXhwZWN0ZWQgdmFsdWUgKHJlbWVtYmVyIHRvIGNoZWNrIGZvciBuZWdhdGlvbilcbiAgICogQHBhcmFtIHtNaXhlZH0gYWN0dWFsIChvcHRpb25hbCkgd2lsbCBkZWZhdWx0IHRvIGB0aGlzLm9iamBcbiAgICogQHBhcmFtIHtCb29sZWFufSBzaG93RGlmZiAob3B0aW9uYWwpIHdoZW4gc2V0IHRvIGB0cnVlYCwgYXNzZXJ0IHdpbGwgZGlzcGxheSBhIGRpZmYgaW4gYWRkaXRpb24gdG8gdGhlIG1lc3NhZ2UgaWYgZXhwcmVzc2lvbiBmYWlsc1xuICAgKiBAYXBpIHByaXZhdGVcbiAgICovXG5cbiAgQXNzZXJ0aW9uLnByb3RvdHlwZS5hc3NlcnQgPSBmdW5jdGlvbiAoZXhwciwgbXNnLCBuZWdhdGVNc2csIGV4cGVjdGVkLCBfYWN0dWFsLCBzaG93RGlmZikge1xuICAgIHZhciBvayA9IHV0aWwudGVzdCh0aGlzLCBhcmd1bWVudHMpO1xuICAgIGlmICh0cnVlICE9PSBzaG93RGlmZikgc2hvd0RpZmYgPSBmYWxzZTtcbiAgICBpZiAodHJ1ZSAhPT0gY29uZmlnLnNob3dEaWZmKSBzaG93RGlmZiA9IGZhbHNlO1xuXG4gICAgaWYgKCFvaykge1xuICAgICAgdmFyIG1zZyA9IHV0aWwuZ2V0TWVzc2FnZSh0aGlzLCBhcmd1bWVudHMpXG4gICAgICAgICwgYWN0dWFsID0gdXRpbC5nZXRBY3R1YWwodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIHRocm93IG5ldyBBc3NlcnRpb25FcnJvcihtc2csIHtcbiAgICAgICAgICBhY3R1YWw6IGFjdHVhbFxuICAgICAgICAsIGV4cGVjdGVkOiBleHBlY3RlZFxuICAgICAgICAsIHNob3dEaWZmOiBzaG93RGlmZlxuICAgICAgfSwgKGNvbmZpZy5pbmNsdWRlU3RhY2spID8gdGhpcy5hc3NlcnQgOiBmbGFnKHRoaXMsICdzc2ZpJykpO1xuICAgIH1cbiAgfTtcblxuICAvKiFcbiAgICogIyMjIC5fb2JqXG4gICAqXG4gICAqIFF1aWNrIHJlZmVyZW5jZSB0byBzdG9yZWQgYGFjdHVhbGAgdmFsdWUgZm9yIHBsdWdpbiBkZXZlbG9wZXJzLlxuICAgKlxuICAgKiBAYXBpIHByaXZhdGVcbiAgICovXG5cbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEFzc2VydGlvbi5wcm90b3R5cGUsICdfb2JqJyxcbiAgICB7IGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gZmxhZyh0aGlzLCAnb2JqZWN0Jyk7XG4gICAgICB9XG4gICAgLCBzZXQ6IGZ1bmN0aW9uICh2YWwpIHtcbiAgICAgICAgZmxhZyh0aGlzLCAnb2JqZWN0JywgdmFsKTtcbiAgICAgIH1cbiAgfSk7XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSB7XG5cbiAgLyoqXG4gICAqICMjIyBjb25maWcuaW5jbHVkZVN0YWNrXG4gICAqXG4gICAqIFVzZXIgY29uZmlndXJhYmxlIHByb3BlcnR5LCBpbmZsdWVuY2VzIHdoZXRoZXIgc3RhY2sgdHJhY2VcbiAgICogaXMgaW5jbHVkZWQgaW4gQXNzZXJ0aW9uIGVycm9yIG1lc3NhZ2UuIERlZmF1bHQgb2YgZmFsc2VcbiAgICogc3VwcHJlc3NlcyBzdGFjayB0cmFjZSBpbiB0aGUgZXJyb3IgbWVzc2FnZS5cbiAgICpcbiAgICogICAgIGNoYWkuY29uZmlnLmluY2x1ZGVTdGFjayA9IHRydWU7ICAvLyBlbmFibGUgc3RhY2sgb24gZXJyb3JcbiAgICpcbiAgICogQHBhcmFtIHtCb29sZWFufVxuICAgKiBAYXBpIHB1YmxpY1xuICAgKi9cblxuICAgaW5jbHVkZVN0YWNrOiBmYWxzZSxcblxuICAvKipcbiAgICogIyMjIGNvbmZpZy5zaG93RGlmZlxuICAgKlxuICAgKiBVc2VyIGNvbmZpZ3VyYWJsZSBwcm9wZXJ0eSwgaW5mbHVlbmNlcyB3aGV0aGVyIG9yIG5vdFxuICAgKiB0aGUgYHNob3dEaWZmYCBmbGFnIHNob3VsZCBiZSBpbmNsdWRlZCBpbiB0aGUgdGhyb3duXG4gICAqIEFzc2VydGlvbkVycm9ycy4gYGZhbHNlYCB3aWxsIGFsd2F5cyBiZSBgZmFsc2VgOyBgdHJ1ZWBcbiAgICogd2lsbCBiZSB0cnVlIHdoZW4gdGhlIGFzc2VydGlvbiBoYXMgcmVxdWVzdGVkIGEgZGlmZlxuICAgKiBiZSBzaG93bi5cbiAgICpcbiAgICogQHBhcmFtIHtCb29sZWFufVxuICAgKiBAYXBpIHB1YmxpY1xuICAgKi9cblxuICBzaG93RGlmZjogdHJ1ZSxcblxuICAvKipcbiAgICogIyMjIGNvbmZpZy50cnVuY2F0ZVRocmVzaG9sZFxuICAgKlxuICAgKiBVc2VyIGNvbmZpZ3VyYWJsZSBwcm9wZXJ0eSwgc2V0cyBsZW5ndGggdGhyZXNob2xkIGZvciBhY3R1YWwgYW5kXG4gICAqIGV4cGVjdGVkIHZhbHVlcyBpbiBhc3NlcnRpb24gZXJyb3JzLiBJZiB0aGlzIHRocmVzaG9sZCBpcyBleGNlZWRlZCwgZm9yXG4gICAqIGV4YW1wbGUgZm9yIGxhcmdlIGRhdGEgc3RydWN0dXJlcywgdGhlIHZhbHVlIGlzIHJlcGxhY2VkIHdpdGggc29tZXRoaW5nXG4gICAqIGxpa2UgYFsgQXJyYXkoMykgXWAgb3IgYHsgT2JqZWN0IChwcm9wMSwgcHJvcDIpIH1gLlxuICAgKlxuICAgKiBTZXQgaXQgdG8gemVybyBpZiB5b3Ugd2FudCB0byBkaXNhYmxlIHRydW5jYXRpbmcgYWx0b2dldGhlci5cbiAgICpcbiAgICogVGhpcyBpcyBlc3BlY2lhbGx5IHVzZXJmdWwgd2hlbiBkb2luZyBhc3NlcnRpb25zIG9uIGFycmF5czogaGF2aW5nIHRoaXNcbiAgICogc2V0IHRvIGEgcmVhc29uYWJsZSBsYXJnZSB2YWx1ZSBtYWtlcyB0aGUgZmFpbHVyZSBtZXNzYWdlcyByZWFkaWx5XG4gICAqIGluc3BlY3RhYmxlLlxuICAgKlxuICAgKiAgICAgY2hhaS5jb25maWcudHJ1bmNhdGVUaHJlc2hvbGQgPSAwOyAgLy8gZGlzYWJsZSB0cnVuY2F0aW5nXG4gICAqXG4gICAqIEBwYXJhbSB7TnVtYmVyfVxuICAgKiBAYXBpIHB1YmxpY1xuICAgKi9cblxuICB0cnVuY2F0ZVRocmVzaG9sZDogNDBcblxufTtcbiIsIi8qIVxuICogY2hhaVxuICogaHR0cDovL2NoYWlqcy5jb21cbiAqIENvcHlyaWdodChjKSAyMDExLTIwMTQgSmFrZSBMdWVyIDxqYWtlQGFsb2dpY2FscGFyYWRveC5jb20+XG4gKiBNSVQgTGljZW5zZWRcbiAqL1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChjaGFpLCBfKSB7XG4gIHZhciBBc3NlcnRpb24gPSBjaGFpLkFzc2VydGlvblxuICAgICwgdG9TdHJpbmcgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nXG4gICAgLCBmbGFnID0gXy5mbGFnO1xuXG4gIC8qKlxuICAgKiAjIyMgTGFuZ3VhZ2UgQ2hhaW5zXG4gICAqXG4gICAqIFRoZSBmb2xsb3dpbmcgYXJlIHByb3ZpZGVkIGFzIGNoYWluYWJsZSBnZXR0ZXJzIHRvXG4gICAqIGltcHJvdmUgdGhlIHJlYWRhYmlsaXR5IG9mIHlvdXIgYXNzZXJ0aW9ucy4gVGhleVxuICAgKiBkbyBub3QgcHJvdmlkZSB0ZXN0aW5nIGNhcGFiaWxpdGllcyB1bmxlc3MgdGhleVxuICAgKiBoYXZlIGJlZW4gb3ZlcndyaXR0ZW4gYnkgYSBwbHVnaW4uXG4gICAqXG4gICAqICoqQ2hhaW5zKipcbiAgICpcbiAgICogLSB0b1xuICAgKiAtIGJlXG4gICAqIC0gYmVlblxuICAgKiAtIGlzXG4gICAqIC0gdGhhdFxuICAgKiAtIHdoaWNoXG4gICAqIC0gYW5kXG4gICAqIC0gaGFzXG4gICAqIC0gaGF2ZVxuICAgKiAtIHdpdGhcbiAgICogLSBhdFxuICAgKiAtIG9mXG4gICAqIC0gc2FtZVxuICAgKlxuICAgKiBAbmFtZSBsYW5ndWFnZSBjaGFpbnNcbiAgICogQG5hbWVzcGFjZSBCRERcbiAgICogQGFwaSBwdWJsaWNcbiAgICovXG5cbiAgWyAndG8nLCAnYmUnLCAnYmVlbidcbiAgLCAnaXMnLCAnYW5kJywgJ2hhcycsICdoYXZlJ1xuICAsICd3aXRoJywgJ3RoYXQnLCAnd2hpY2gnLCAnYXQnXG4gICwgJ29mJywgJ3NhbWUnIF0uZm9yRWFjaChmdW5jdGlvbiAoY2hhaW4pIHtcbiAgICBBc3NlcnRpb24uYWRkUHJvcGVydHkoY2hhaW4sIGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH0pO1xuICB9KTtcblxuICAvKipcbiAgICogIyMjIC5ub3RcbiAgICpcbiAgICogTmVnYXRlcyBhbnkgb2YgYXNzZXJ0aW9ucyBmb2xsb3dpbmcgaW4gdGhlIGNoYWluLlxuICAgKlxuICAgKiAgICAgZXhwZWN0KGZvbykudG8ubm90LmVxdWFsKCdiYXInKTtcbiAgICogICAgIGV4cGVjdChnb29kRm4pLnRvLm5vdC50aHJvdyhFcnJvcik7XG4gICAqICAgICBleHBlY3QoeyBmb286ICdiYXonIH0pLnRvLmhhdmUucHJvcGVydHkoJ2ZvbycpXG4gICAqICAgICAgIC5hbmQubm90LmVxdWFsKCdiYXInKTtcbiAgICpcbiAgICogQG5hbWUgbm90XG4gICAqIEBuYW1lc3BhY2UgQkREXG4gICAqIEBhcGkgcHVibGljXG4gICAqL1xuXG4gIEFzc2VydGlvbi5hZGRQcm9wZXJ0eSgnbm90JywgZnVuY3Rpb24gKCkge1xuICAgIGZsYWcodGhpcywgJ25lZ2F0ZScsIHRydWUpO1xuICB9KTtcblxuICAvKipcbiAgICogIyMjIC5kZWVwXG4gICAqXG4gICAqIFNldHMgdGhlIGBkZWVwYCBmbGFnLCBsYXRlciB1c2VkIGJ5IHRoZSBgZXF1YWxgIGFuZFxuICAgKiBgcHJvcGVydHlgIGFzc2VydGlvbnMuXG4gICAqXG4gICAqICAgICBleHBlY3QoZm9vKS50by5kZWVwLmVxdWFsKHsgYmFyOiAnYmF6JyB9KTtcbiAgICogICAgIGV4cGVjdCh7IGZvbzogeyBiYXI6IHsgYmF6OiAncXV1eCcgfSB9IH0pXG4gICAqICAgICAgIC50by5oYXZlLmRlZXAucHJvcGVydHkoJ2Zvby5iYXIuYmF6JywgJ3F1dXgnKTtcbiAgICpcbiAgICogYC5kZWVwLnByb3BlcnR5YCBzcGVjaWFsIGNoYXJhY3RlcnMgY2FuIGJlIGVzY2FwZWRcbiAgICogYnkgYWRkaW5nIHR3byBzbGFzaGVzIGJlZm9yZSB0aGUgYC5gIG9yIGBbXWAuXG4gICAqXG4gICAqICAgICB2YXIgZGVlcENzcyA9IHsgJy5saW5rJzogeyAnW3RhcmdldF0nOiA0MiB9fTtcbiAgICogICAgIGV4cGVjdChkZWVwQ3NzKS50by5oYXZlLmRlZXAucHJvcGVydHkoJ1xcXFwubGluay5cXFxcW3RhcmdldFxcXFxdJywgNDIpO1xuICAgKlxuICAgKiBAbmFtZSBkZWVwXG4gICAqIEBuYW1lc3BhY2UgQkREXG4gICAqIEBhcGkgcHVibGljXG4gICAqL1xuXG4gIEFzc2VydGlvbi5hZGRQcm9wZXJ0eSgnZGVlcCcsIGZ1bmN0aW9uICgpIHtcbiAgICBmbGFnKHRoaXMsICdkZWVwJywgdHJ1ZSk7XG4gIH0pO1xuXG4gIC8qKlxuICAgKiAjIyMgLmFueVxuICAgKlxuICAgKiBTZXRzIHRoZSBgYW55YCBmbGFnLCAob3Bwb3NpdGUgb2YgdGhlIGBhbGxgIGZsYWcpXG4gICAqIGxhdGVyIHVzZWQgaW4gdGhlIGBrZXlzYCBhc3NlcnRpb24uXG4gICAqXG4gICAqICAgICBleHBlY3QoZm9vKS50by5oYXZlLmFueS5rZXlzKCdiYXInLCAnYmF6Jyk7XG4gICAqXG4gICAqIEBuYW1lIGFueVxuICAgKiBAbmFtZXNwYWNlIEJERFxuICAgKiBAYXBpIHB1YmxpY1xuICAgKi9cblxuICBBc3NlcnRpb24uYWRkUHJvcGVydHkoJ2FueScsIGZ1bmN0aW9uICgpIHtcbiAgICBmbGFnKHRoaXMsICdhbnknLCB0cnVlKTtcbiAgICBmbGFnKHRoaXMsICdhbGwnLCBmYWxzZSlcbiAgfSk7XG5cblxuICAvKipcbiAgICogIyMjIC5hbGxcbiAgICpcbiAgICogU2V0cyB0aGUgYGFsbGAgZmxhZyAob3Bwb3NpdGUgb2YgdGhlIGBhbnlgIGZsYWcpXG4gICAqIGxhdGVyIHVzZWQgYnkgdGhlIGBrZXlzYCBhc3NlcnRpb24uXG4gICAqXG4gICAqICAgICBleHBlY3QoZm9vKS50by5oYXZlLmFsbC5rZXlzKCdiYXInLCAnYmF6Jyk7XG4gICAqXG4gICAqIEBuYW1lIGFsbFxuICAgKiBAbmFtZXNwYWNlIEJERFxuICAgKiBAYXBpIHB1YmxpY1xuICAgKi9cblxuICBBc3NlcnRpb24uYWRkUHJvcGVydHkoJ2FsbCcsIGZ1bmN0aW9uICgpIHtcbiAgICBmbGFnKHRoaXMsICdhbGwnLCB0cnVlKTtcbiAgICBmbGFnKHRoaXMsICdhbnknLCBmYWxzZSk7XG4gIH0pO1xuXG4gIC8qKlxuICAgKiAjIyMgLmEodHlwZSlcbiAgICpcbiAgICogVGhlIGBhYCBhbmQgYGFuYCBhc3NlcnRpb25zIGFyZSBhbGlhc2VzIHRoYXQgY2FuIGJlXG4gICAqIHVzZWQgZWl0aGVyIGFzIGxhbmd1YWdlIGNoYWlucyBvciB0byBhc3NlcnQgYSB2YWx1ZSdzXG4gICAqIHR5cGUuXG4gICAqXG4gICAqICAgICAvLyB0eXBlb2ZcbiAgICogICAgIGV4cGVjdCgndGVzdCcpLnRvLmJlLmEoJ3N0cmluZycpO1xuICAgKiAgICAgZXhwZWN0KHsgZm9vOiAnYmFyJyB9KS50by5iZS5hbignb2JqZWN0Jyk7XG4gICAqICAgICBleHBlY3QobnVsbCkudG8uYmUuYSgnbnVsbCcpO1xuICAgKiAgICAgZXhwZWN0KHVuZGVmaW5lZCkudG8uYmUuYW4oJ3VuZGVmaW5lZCcpO1xuICAgKiAgICAgZXhwZWN0KG5ldyBFcnJvcikudG8uYmUuYW4oJ2Vycm9yJyk7XG4gICAqICAgICBleHBlY3QobmV3IFByb21pc2UpLnRvLmJlLmEoJ3Byb21pc2UnKTtcbiAgICogICAgIGV4cGVjdChuZXcgRmxvYXQzMkFycmF5KCkpLnRvLmJlLmEoJ2Zsb2F0MzJhcnJheScpO1xuICAgKiAgICAgZXhwZWN0KFN5bWJvbCgpKS50by5iZS5hKCdzeW1ib2wnKTtcbiAgICpcbiAgICogICAgIC8vIGVzNiBvdmVycmlkZXNcbiAgICogICAgIGV4cGVjdCh7W1N5bWJvbC50b1N0cmluZ1RhZ106KCk9Pidmb28nfSkudG8uYmUuYSgnZm9vJyk7XG4gICAqXG4gICAqICAgICAvLyBsYW5ndWFnZSBjaGFpblxuICAgKiAgICAgZXhwZWN0KGZvbykudG8uYmUuYW4uaW5zdGFuY2VvZihGb28pO1xuICAgKlxuICAgKiBAbmFtZSBhXG4gICAqIEBhbGlhcyBhblxuICAgKiBAcGFyYW0ge1N0cmluZ30gdHlwZVxuICAgKiBAcGFyYW0ge1N0cmluZ30gbWVzc2FnZSBfb3B0aW9uYWxfXG4gICAqIEBuYW1lc3BhY2UgQkREXG4gICAqIEBhcGkgcHVibGljXG4gICAqL1xuXG4gIGZ1bmN0aW9uIGFuICh0eXBlLCBtc2cpIHtcbiAgICBpZiAobXNnKSBmbGFnKHRoaXMsICdtZXNzYWdlJywgbXNnKTtcbiAgICB0eXBlID0gdHlwZS50b0xvd2VyQ2FzZSgpO1xuICAgIHZhciBvYmogPSBmbGFnKHRoaXMsICdvYmplY3QnKVxuICAgICAgLCBhcnRpY2xlID0gflsgJ2EnLCAnZScsICdpJywgJ28nLCAndScgXS5pbmRleE9mKHR5cGUuY2hhckF0KDApKSA/ICdhbiAnIDogJ2EgJztcblxuICAgIHRoaXMuYXNzZXJ0KFxuICAgICAgICB0eXBlID09PSBfLnR5cGUob2JqKVxuICAgICAgLCAnZXhwZWN0ZWQgI3t0aGlzfSB0byBiZSAnICsgYXJ0aWNsZSArIHR5cGVcbiAgICAgICwgJ2V4cGVjdGVkICN7dGhpc30gbm90IHRvIGJlICcgKyBhcnRpY2xlICsgdHlwZVxuICAgICk7XG4gIH1cblxuICBBc3NlcnRpb24uYWRkQ2hhaW5hYmxlTWV0aG9kKCdhbicsIGFuKTtcbiAgQXNzZXJ0aW9uLmFkZENoYWluYWJsZU1ldGhvZCgnYScsIGFuKTtcblxuICAvKipcbiAgICogIyMjIC5pbmNsdWRlKHZhbHVlKVxuICAgKlxuICAgKiBUaGUgYGluY2x1ZGVgIGFuZCBgY29udGFpbmAgYXNzZXJ0aW9ucyBjYW4gYmUgdXNlZCBhcyBlaXRoZXIgcHJvcGVydHlcbiAgICogYmFzZWQgbGFuZ3VhZ2UgY2hhaW5zIG9yIGFzIG1ldGhvZHMgdG8gYXNzZXJ0IHRoZSBpbmNsdXNpb24gb2YgYW4gb2JqZWN0XG4gICAqIGluIGFuIGFycmF5IG9yIGEgc3Vic3RyaW5nIGluIGEgc3RyaW5nLiBXaGVuIHVzZWQgYXMgbGFuZ3VhZ2UgY2hhaW5zLFxuICAgKiB0aGV5IHRvZ2dsZSB0aGUgYGNvbnRhaW5zYCBmbGFnIGZvciB0aGUgYGtleXNgIGFzc2VydGlvbi5cbiAgICpcbiAgICogICAgIGV4cGVjdChbMSwyLDNdKS50by5pbmNsdWRlKDIpO1xuICAgKiAgICAgZXhwZWN0KCdmb29iYXInKS50by5jb250YWluKCdmb28nKTtcbiAgICogICAgIGV4cGVjdCh7IGZvbzogJ2JhcicsIGhlbGxvOiAndW5pdmVyc2UnIH0pLnRvLmluY2x1ZGUua2V5cygnZm9vJyk7XG4gICAqXG4gICAqIEBuYW1lIGluY2x1ZGVcbiAgICogQGFsaWFzIGNvbnRhaW5cbiAgICogQGFsaWFzIGluY2x1ZGVzXG4gICAqIEBhbGlhcyBjb250YWluc1xuICAgKiBAcGFyYW0ge09iamVjdHxTdHJpbmd8TnVtYmVyfSBvYmpcbiAgICogQHBhcmFtIHtTdHJpbmd9IG1lc3NhZ2UgX29wdGlvbmFsX1xuICAgKiBAbmFtZXNwYWNlIEJERFxuICAgKiBAYXBpIHB1YmxpY1xuICAgKi9cblxuICBmdW5jdGlvbiBpbmNsdWRlQ2hhaW5pbmdCZWhhdmlvciAoKSB7XG4gICAgZmxhZyh0aGlzLCAnY29udGFpbnMnLCB0cnVlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGluY2x1ZGUgKHZhbCwgbXNnKSB7XG4gICAgXy5leHBlY3RUeXBlcyh0aGlzLCBbJ2FycmF5JywgJ29iamVjdCcsICdzdHJpbmcnXSk7XG5cbiAgICBpZiAobXNnKSBmbGFnKHRoaXMsICdtZXNzYWdlJywgbXNnKTtcbiAgICB2YXIgb2JqID0gZmxhZyh0aGlzLCAnb2JqZWN0Jyk7XG4gICAgdmFyIGV4cGVjdGVkID0gZmFsc2U7XG5cbiAgICBpZiAoXy50eXBlKG9iaikgPT09ICdhcnJheScgJiYgXy50eXBlKHZhbCkgPT09ICdvYmplY3QnKSB7XG4gICAgICBmb3IgKHZhciBpIGluIG9iaikge1xuICAgICAgICBpZiAoXy5lcWwob2JqW2ldLCB2YWwpKSB7XG4gICAgICAgICAgZXhwZWN0ZWQgPSB0cnVlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChfLnR5cGUodmFsKSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmICghZmxhZyh0aGlzLCAnbmVnYXRlJykpIHtcbiAgICAgICAgZm9yICh2YXIgayBpbiB2YWwpIG5ldyBBc3NlcnRpb24ob2JqKS5wcm9wZXJ0eShrLCB2YWxba10pO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB2YXIgc3Vic2V0ID0ge307XG4gICAgICBmb3IgKHZhciBrIGluIHZhbCkgc3Vic2V0W2tdID0gb2JqW2tdO1xuICAgICAgZXhwZWN0ZWQgPSBfLmVxbChzdWJzZXQsIHZhbCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGV4cGVjdGVkID0gKG9iaiAhPSB1bmRlZmluZWQpICYmIH5vYmouaW5kZXhPZih2YWwpO1xuICAgIH1cbiAgICB0aGlzLmFzc2VydChcbiAgICAgICAgZXhwZWN0ZWRcbiAgICAgICwgJ2V4cGVjdGVkICN7dGhpc30gdG8gaW5jbHVkZSAnICsgXy5pbnNwZWN0KHZhbClcbiAgICAgICwgJ2V4cGVjdGVkICN7dGhpc30gdG8gbm90IGluY2x1ZGUgJyArIF8uaW5zcGVjdCh2YWwpKTtcbiAgfVxuXG4gIEFzc2VydGlvbi5hZGRDaGFpbmFibGVNZXRob2QoJ2luY2x1ZGUnLCBpbmNsdWRlLCBpbmNsdWRlQ2hhaW5pbmdCZWhhdmlvcik7XG4gIEFzc2VydGlvbi5hZGRDaGFpbmFibGVNZXRob2QoJ2NvbnRhaW4nLCBpbmNsdWRlLCBpbmNsdWRlQ2hhaW5pbmdCZWhhdmlvcik7XG4gIEFzc2VydGlvbi5hZGRDaGFpbmFibGVNZXRob2QoJ2NvbnRhaW5zJywgaW5jbHVkZSwgaW5jbHVkZUNoYWluaW5nQmVoYXZpb3IpO1xuICBBc3NlcnRpb24uYWRkQ2hhaW5hYmxlTWV0aG9kKCdpbmNsdWRlcycsIGluY2x1ZGUsIGluY2x1ZGVDaGFpbmluZ0JlaGF2aW9yKTtcblxuICAvKipcbiAgICogIyMjIC5va1xuICAgKlxuICAgKiBBc3NlcnRzIHRoYXQgdGhlIHRhcmdldCBpcyB0cnV0aHkuXG4gICAqXG4gICAqICAgICBleHBlY3QoJ2V2ZXJ5dGhpbmcnKS50by5iZS5vaztcbiAgICogICAgIGV4cGVjdCgxKS50by5iZS5vaztcbiAgICogICAgIGV4cGVjdChmYWxzZSkudG8ubm90LmJlLm9rO1xuICAgKiAgICAgZXhwZWN0KHVuZGVmaW5lZCkudG8ubm90LmJlLm9rO1xuICAgKiAgICAgZXhwZWN0KG51bGwpLnRvLm5vdC5iZS5vaztcbiAgICpcbiAgICogQG5hbWUgb2tcbiAgICogQG5hbWVzcGFjZSBCRERcbiAgICogQGFwaSBwdWJsaWNcbiAgICovXG5cbiAgQXNzZXJ0aW9uLmFkZFByb3BlcnR5KCdvaycsIGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmFzc2VydChcbiAgICAgICAgZmxhZyh0aGlzLCAnb2JqZWN0JylcbiAgICAgICwgJ2V4cGVjdGVkICN7dGhpc30gdG8gYmUgdHJ1dGh5J1xuICAgICAgLCAnZXhwZWN0ZWQgI3t0aGlzfSB0byBiZSBmYWxzeScpO1xuICB9KTtcblxuICAvKipcbiAgICogIyMjIC50cnVlXG4gICAqXG4gICAqIEFzc2VydHMgdGhhdCB0aGUgdGFyZ2V0IGlzIGB0cnVlYC5cbiAgICpcbiAgICogICAgIGV4cGVjdCh0cnVlKS50by5iZS50cnVlO1xuICAgKiAgICAgZXhwZWN0KDEpLnRvLm5vdC5iZS50cnVlO1xuICAgKlxuICAgKiBAbmFtZSB0cnVlXG4gICAqIEBuYW1lc3BhY2UgQkREXG4gICAqIEBhcGkgcHVibGljXG4gICAqL1xuXG4gIEFzc2VydGlvbi5hZGRQcm9wZXJ0eSgndHJ1ZScsIGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmFzc2VydChcbiAgICAgICAgdHJ1ZSA9PT0gZmxhZyh0aGlzLCAnb2JqZWN0JylcbiAgICAgICwgJ2V4cGVjdGVkICN7dGhpc30gdG8gYmUgdHJ1ZSdcbiAgICAgICwgJ2V4cGVjdGVkICN7dGhpc30gdG8gYmUgZmFsc2UnXG4gICAgICAsIHRoaXMubmVnYXRlID8gZmFsc2UgOiB0cnVlXG4gICAgKTtcbiAgfSk7XG5cbiAgLyoqXG4gICAqICMjIyAuZmFsc2VcbiAgICpcbiAgICogQXNzZXJ0cyB0aGF0IHRoZSB0YXJnZXQgaXMgYGZhbHNlYC5cbiAgICpcbiAgICogICAgIGV4cGVjdChmYWxzZSkudG8uYmUuZmFsc2U7XG4gICAqICAgICBleHBlY3QoMCkudG8ubm90LmJlLmZhbHNlO1xuICAgKlxuICAgKiBAbmFtZSBmYWxzZVxuICAgKiBAbmFtZXNwYWNlIEJERFxuICAgKiBAYXBpIHB1YmxpY1xuICAgKi9cblxuICBBc3NlcnRpb24uYWRkUHJvcGVydHkoJ2ZhbHNlJywgZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuYXNzZXJ0KFxuICAgICAgICBmYWxzZSA9PT0gZmxhZyh0aGlzLCAnb2JqZWN0JylcbiAgICAgICwgJ2V4cGVjdGVkICN7dGhpc30gdG8gYmUgZmFsc2UnXG4gICAgICAsICdleHBlY3RlZCAje3RoaXN9IHRvIGJlIHRydWUnXG4gICAgICAsIHRoaXMubmVnYXRlID8gdHJ1ZSA6IGZhbHNlXG4gICAgKTtcbiAgfSk7XG5cbiAgLyoqXG4gICAqICMjIyAubnVsbFxuICAgKlxuICAgKiBBc3NlcnRzIHRoYXQgdGhlIHRhcmdldCBpcyBgbnVsbGAuXG4gICAqXG4gICAqICAgICBleHBlY3QobnVsbCkudG8uYmUubnVsbDtcbiAgICogICAgIGV4cGVjdCh1bmRlZmluZWQpLnRvLm5vdC5iZS5udWxsO1xuICAgKlxuICAgKiBAbmFtZSBudWxsXG4gICAqIEBuYW1lc3BhY2UgQkREXG4gICAqIEBhcGkgcHVibGljXG4gICAqL1xuXG4gIEFzc2VydGlvbi5hZGRQcm9wZXJ0eSgnbnVsbCcsIGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmFzc2VydChcbiAgICAgICAgbnVsbCA9PT0gZmxhZyh0aGlzLCAnb2JqZWN0JylcbiAgICAgICwgJ2V4cGVjdGVkICN7dGhpc30gdG8gYmUgbnVsbCdcbiAgICAgICwgJ2V4cGVjdGVkICN7dGhpc30gbm90IHRvIGJlIG51bGwnXG4gICAgKTtcbiAgfSk7XG5cbiAgLyoqXG4gICAqICMjIyAudW5kZWZpbmVkXG4gICAqXG4gICAqIEFzc2VydHMgdGhhdCB0aGUgdGFyZ2V0IGlzIGB1bmRlZmluZWRgLlxuICAgKlxuICAgKiAgICAgZXhwZWN0KHVuZGVmaW5lZCkudG8uYmUudW5kZWZpbmVkO1xuICAgKiAgICAgZXhwZWN0KG51bGwpLnRvLm5vdC5iZS51bmRlZmluZWQ7XG4gICAqXG4gICAqIEBuYW1lIHVuZGVmaW5lZFxuICAgKiBAbmFtZXNwYWNlIEJERFxuICAgKiBAYXBpIHB1YmxpY1xuICAgKi9cblxuICBBc3NlcnRpb24uYWRkUHJvcGVydHkoJ3VuZGVmaW5lZCcsIGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmFzc2VydChcbiAgICAgICAgdW5kZWZpbmVkID09PSBmbGFnKHRoaXMsICdvYmplY3QnKVxuICAgICAgLCAnZXhwZWN0ZWQgI3t0aGlzfSB0byBiZSB1bmRlZmluZWQnXG4gICAgICAsICdleHBlY3RlZCAje3RoaXN9IG5vdCB0byBiZSB1bmRlZmluZWQnXG4gICAgKTtcbiAgfSk7XG5cbiAgLyoqXG4gICAqICMjIyAuTmFOXG4gICAqIEFzc2VydHMgdGhhdCB0aGUgdGFyZ2V0IGlzIGBOYU5gLlxuICAgKlxuICAgKiAgICAgZXhwZWN0KCdmb28nKS50by5iZS5OYU47XG4gICAqICAgICBleHBlY3QoNCkubm90LnRvLmJlLk5hTjtcbiAgICpcbiAgICogQG5hbWUgTmFOXG4gICAqIEBuYW1lc3BhY2UgQkREXG4gICAqIEBhcGkgcHVibGljXG4gICAqL1xuXG4gIEFzc2VydGlvbi5hZGRQcm9wZXJ0eSgnTmFOJywgZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuYXNzZXJ0KFxuICAgICAgICBpc05hTihmbGFnKHRoaXMsICdvYmplY3QnKSlcbiAgICAgICAgLCAnZXhwZWN0ZWQgI3t0aGlzfSB0byBiZSBOYU4nXG4gICAgICAgICwgJ2V4cGVjdGVkICN7dGhpc30gbm90IHRvIGJlIE5hTidcbiAgICApO1xuICB9KTtcblxuICAvKipcbiAgICogIyMjIC5leGlzdFxuICAgKlxuICAgKiBBc3NlcnRzIHRoYXQgdGhlIHRhcmdldCBpcyBuZWl0aGVyIGBudWxsYCBub3IgYHVuZGVmaW5lZGAuXG4gICAqXG4gICAqICAgICB2YXIgZm9vID0gJ2hpJ1xuICAgKiAgICAgICAsIGJhciA9IG51bGxcbiAgICogICAgICAgLCBiYXo7XG4gICAqXG4gICAqICAgICBleHBlY3QoZm9vKS50by5leGlzdDtcbiAgICogICAgIGV4cGVjdChiYXIpLnRvLm5vdC5leGlzdDtcbiAgICogICAgIGV4cGVjdChiYXopLnRvLm5vdC5leGlzdDtcbiAgICpcbiAgICogQG5hbWUgZXhpc3RcbiAgICogQG5hbWVzcGFjZSBCRERcbiAgICogQGFwaSBwdWJsaWNcbiAgICovXG5cbiAgQXNzZXJ0aW9uLmFkZFByb3BlcnR5KCdleGlzdCcsIGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmFzc2VydChcbiAgICAgICAgbnVsbCAhPSBmbGFnKHRoaXMsICdvYmplY3QnKVxuICAgICAgLCAnZXhwZWN0ZWQgI3t0aGlzfSB0byBleGlzdCdcbiAgICAgICwgJ2V4cGVjdGVkICN7dGhpc30gdG8gbm90IGV4aXN0J1xuICAgICk7XG4gIH0pO1xuXG5cbiAgLyoqXG4gICAqICMjIyAuZW1wdHlcbiAgICpcbiAgICogQXNzZXJ0cyB0aGF0IHRoZSB0YXJnZXQncyBsZW5ndGggaXMgYDBgLiBGb3IgYXJyYXlzIGFuZCBzdHJpbmdzLCBpdCBjaGVja3NcbiAgICogdGhlIGBsZW5ndGhgIHByb3BlcnR5LiBGb3Igb2JqZWN0cywgaXQgZ2V0cyB0aGUgY291bnQgb2ZcbiAgICogZW51bWVyYWJsZSBrZXlzLlxuICAgKlxuICAgKiAgICAgZXhwZWN0KFtdKS50by5iZS5lbXB0eTtcbiAgICogICAgIGV4cGVjdCgnJykudG8uYmUuZW1wdHk7XG4gICAqICAgICBleHBlY3Qoe30pLnRvLmJlLmVtcHR5O1xuICAgKlxuICAgKiBAbmFtZSBlbXB0eVxuICAgKiBAbmFtZXNwYWNlIEJERFxuICAgKiBAYXBpIHB1YmxpY1xuICAgKi9cblxuICBBc3NlcnRpb24uYWRkUHJvcGVydHkoJ2VtcHR5JywgZnVuY3Rpb24gKCkge1xuICAgIHZhciBvYmogPSBmbGFnKHRoaXMsICdvYmplY3QnKVxuICAgICAgLCBleHBlY3RlZCA9IG9iajtcblxuICAgIGlmIChBcnJheS5pc0FycmF5KG9iaikgfHwgJ3N0cmluZycgPT09IHR5cGVvZiBvYmplY3QpIHtcbiAgICAgIGV4cGVjdGVkID0gb2JqLmxlbmd0aDtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBvYmogPT09ICdvYmplY3QnKSB7XG4gICAgICBleHBlY3RlZCA9IE9iamVjdC5rZXlzKG9iaikubGVuZ3RoO1xuICAgIH1cblxuICAgIHRoaXMuYXNzZXJ0KFxuICAgICAgICAhZXhwZWN0ZWRcbiAgICAgICwgJ2V4cGVjdGVkICN7dGhpc30gdG8gYmUgZW1wdHknXG4gICAgICAsICdleHBlY3RlZCAje3RoaXN9IG5vdCB0byBiZSBlbXB0eSdcbiAgICApO1xuICB9KTtcblxuICAvKipcbiAgICogIyMjIC5hcmd1bWVudHNcbiAgICpcbiAgICogQXNzZXJ0cyB0aGF0IHRoZSB0YXJnZXQgaXMgYW4gYXJndW1lbnRzIG9iamVjdC5cbiAgICpcbiAgICogICAgIGZ1bmN0aW9uIHRlc3QgKCkge1xuICAgKiAgICAgICBleHBlY3QoYXJndW1lbnRzKS50by5iZS5hcmd1bWVudHM7XG4gICAqICAgICB9XG4gICAqXG4gICAqIEBuYW1lIGFyZ3VtZW50c1xuICAgKiBAYWxpYXMgQXJndW1lbnRzXG4gICAqIEBuYW1lc3BhY2UgQkREXG4gICAqIEBhcGkgcHVibGljXG4gICAqL1xuXG4gIGZ1bmN0aW9uIGNoZWNrQXJndW1lbnRzICgpIHtcbiAgICB2YXIgb2JqID0gZmxhZyh0aGlzLCAnb2JqZWN0JylcbiAgICAgICwgdHlwZSA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvYmopO1xuICAgIHRoaXMuYXNzZXJ0KFxuICAgICAgICAnW29iamVjdCBBcmd1bWVudHNdJyA9PT0gdHlwZVxuICAgICAgLCAnZXhwZWN0ZWQgI3t0aGlzfSB0byBiZSBhcmd1bWVudHMgYnV0IGdvdCAnICsgdHlwZVxuICAgICAgLCAnZXhwZWN0ZWQgI3t0aGlzfSB0byBub3QgYmUgYXJndW1lbnRzJ1xuICAgICk7XG4gIH1cblxuICBBc3NlcnRpb24uYWRkUHJvcGVydHkoJ2FyZ3VtZW50cycsIGNoZWNrQXJndW1lbnRzKTtcbiAgQXNzZXJ0aW9uLmFkZFByb3BlcnR5KCdBcmd1bWVudHMnLCBjaGVja0FyZ3VtZW50cyk7XG5cbiAgLyoqXG4gICAqICMjIyAuZXF1YWwodmFsdWUpXG4gICAqXG4gICAqIEFzc2VydHMgdGhhdCB0aGUgdGFyZ2V0IGlzIHN0cmljdGx5IGVxdWFsIChgPT09YCkgdG8gYHZhbHVlYC5cbiAgICogQWx0ZXJuYXRlbHksIGlmIHRoZSBgZGVlcGAgZmxhZyBpcyBzZXQsIGFzc2VydHMgdGhhdFxuICAgKiB0aGUgdGFyZ2V0IGlzIGRlZXBseSBlcXVhbCB0byBgdmFsdWVgLlxuICAgKlxuICAgKiAgICAgZXhwZWN0KCdoZWxsbycpLnRvLmVxdWFsKCdoZWxsbycpO1xuICAgKiAgICAgZXhwZWN0KDQyKS50by5lcXVhbCg0Mik7XG4gICAqICAgICBleHBlY3QoMSkudG8ubm90LmVxdWFsKHRydWUpO1xuICAgKiAgICAgZXhwZWN0KHsgZm9vOiAnYmFyJyB9KS50by5ub3QuZXF1YWwoeyBmb286ICdiYXInIH0pO1xuICAgKiAgICAgZXhwZWN0KHsgZm9vOiAnYmFyJyB9KS50by5kZWVwLmVxdWFsKHsgZm9vOiAnYmFyJyB9KTtcbiAgICpcbiAgICogQG5hbWUgZXF1YWxcbiAgICogQGFsaWFzIGVxdWFsc1xuICAgKiBAYWxpYXMgZXFcbiAgICogQGFsaWFzIGRlZXAuZXF1YWxcbiAgICogQHBhcmFtIHtNaXhlZH0gdmFsdWVcbiAgICogQHBhcmFtIHtTdHJpbmd9IG1lc3NhZ2UgX29wdGlvbmFsX1xuICAgKiBAbmFtZXNwYWNlIEJERFxuICAgKiBAYXBpIHB1YmxpY1xuICAgKi9cblxuICBmdW5jdGlvbiBhc3NlcnRFcXVhbCAodmFsLCBtc2cpIHtcbiAgICBpZiAobXNnKSBmbGFnKHRoaXMsICdtZXNzYWdlJywgbXNnKTtcbiAgICB2YXIgb2JqID0gZmxhZyh0aGlzLCAnb2JqZWN0Jyk7XG4gICAgaWYgKGZsYWcodGhpcywgJ2RlZXAnKSkge1xuICAgICAgcmV0dXJuIHRoaXMuZXFsKHZhbCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYXNzZXJ0KFxuICAgICAgICAgIHZhbCA9PT0gb2JqXG4gICAgICAgICwgJ2V4cGVjdGVkICN7dGhpc30gdG8gZXF1YWwgI3tleHB9J1xuICAgICAgICAsICdleHBlY3RlZCAje3RoaXN9IHRvIG5vdCBlcXVhbCAje2V4cH0nXG4gICAgICAgICwgdmFsXG4gICAgICAgICwgdGhpcy5fb2JqXG4gICAgICAgICwgdHJ1ZVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBBc3NlcnRpb24uYWRkTWV0aG9kKCdlcXVhbCcsIGFzc2VydEVxdWFsKTtcbiAgQXNzZXJ0aW9uLmFkZE1ldGhvZCgnZXF1YWxzJywgYXNzZXJ0RXF1YWwpO1xuICBBc3NlcnRpb24uYWRkTWV0aG9kKCdlcScsIGFzc2VydEVxdWFsKTtcblxuICAvKipcbiAgICogIyMjIC5lcWwodmFsdWUpXG4gICAqXG4gICAqIEFzc2VydHMgdGhhdCB0aGUgdGFyZ2V0IGlzIGRlZXBseSBlcXVhbCB0byBgdmFsdWVgLlxuICAgKlxuICAgKiAgICAgZXhwZWN0KHsgZm9vOiAnYmFyJyB9KS50by5lcWwoeyBmb286ICdiYXInIH0pO1xuICAgKiAgICAgZXhwZWN0KFsgMSwgMiwgMyBdKS50by5lcWwoWyAxLCAyLCAzIF0pO1xuICAgKlxuICAgKiBAbmFtZSBlcWxcbiAgICogQGFsaWFzIGVxbHNcbiAgICogQHBhcmFtIHtNaXhlZH0gdmFsdWVcbiAgICogQHBhcmFtIHtTdHJpbmd9IG1lc3NhZ2UgX29wdGlvbmFsX1xuICAgKiBAbmFtZXNwYWNlIEJERFxuICAgKiBAYXBpIHB1YmxpY1xuICAgKi9cblxuICBmdW5jdGlvbiBhc3NlcnRFcWwob2JqLCBtc2cpIHtcbiAgICBpZiAobXNnKSBmbGFnKHRoaXMsICdtZXNzYWdlJywgbXNnKTtcbiAgICB0aGlzLmFzc2VydChcbiAgICAgICAgXy5lcWwob2JqLCBmbGFnKHRoaXMsICdvYmplY3QnKSlcbiAgICAgICwgJ2V4cGVjdGVkICN7dGhpc30gdG8gZGVlcGx5IGVxdWFsICN7ZXhwfSdcbiAgICAgICwgJ2V4cGVjdGVkICN7dGhpc30gdG8gbm90IGRlZXBseSBlcXVhbCAje2V4cH0nXG4gICAgICAsIG9ialxuICAgICAgLCB0aGlzLl9vYmpcbiAgICAgICwgdHJ1ZVxuICAgICk7XG4gIH1cblxuICBBc3NlcnRpb24uYWRkTWV0aG9kKCdlcWwnLCBhc3NlcnRFcWwpO1xuICBBc3NlcnRpb24uYWRkTWV0aG9kKCdlcWxzJywgYXNzZXJ0RXFsKTtcblxuICAvKipcbiAgICogIyMjIC5hYm92ZSh2YWx1ZSlcbiAgICpcbiAgICogQXNzZXJ0cyB0aGF0IHRoZSB0YXJnZXQgaXMgZ3JlYXRlciB0aGFuIGB2YWx1ZWAuXG4gICAqXG4gICAqICAgICBleHBlY3QoMTApLnRvLmJlLmFib3ZlKDUpO1xuICAgKlxuICAgKiBDYW4gYWxzbyBiZSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggYGxlbmd0aGAgdG9cbiAgICogYXNzZXJ0IGEgbWluaW11bSBsZW5ndGguIFRoZSBiZW5lZml0IGJlaW5nIGFcbiAgICogbW9yZSBpbmZvcm1hdGl2ZSBlcnJvciBtZXNzYWdlIHRoYW4gaWYgdGhlIGxlbmd0aFxuICAgKiB3YXMgc3VwcGxpZWQgZGlyZWN0bHkuXG4gICAqXG4gICAqICAgICBleHBlY3QoJ2ZvbycpLnRvLmhhdmUubGVuZ3RoLmFib3ZlKDIpO1xuICAgKiAgICAgZXhwZWN0KFsgMSwgMiwgMyBdKS50by5oYXZlLmxlbmd0aC5hYm92ZSgyKTtcbiAgICpcbiAgICogQG5hbWUgYWJvdmVcbiAgICogQGFsaWFzIGd0XG4gICAqIEBhbGlhcyBncmVhdGVyVGhhblxuICAgKiBAcGFyYW0ge051bWJlcn0gdmFsdWVcbiAgICogQHBhcmFtIHtTdHJpbmd9IG1lc3NhZ2UgX29wdGlvbmFsX1xuICAgKiBAbmFtZXNwYWNlIEJERFxuICAgKiBAYXBpIHB1YmxpY1xuICAgKi9cblxuICBmdW5jdGlvbiBhc3NlcnRBYm92ZSAobiwgbXNnKSB7XG4gICAgaWYgKG1zZykgZmxhZyh0aGlzLCAnbWVzc2FnZScsIG1zZyk7XG4gICAgdmFyIG9iaiA9IGZsYWcodGhpcywgJ29iamVjdCcpO1xuICAgIGlmIChmbGFnKHRoaXMsICdkb0xlbmd0aCcpKSB7XG4gICAgICBuZXcgQXNzZXJ0aW9uKG9iaiwgbXNnKS50by5oYXZlLnByb3BlcnR5KCdsZW5ndGgnKTtcbiAgICAgIHZhciBsZW4gPSBvYmoubGVuZ3RoO1xuICAgICAgdGhpcy5hc3NlcnQoXG4gICAgICAgICAgbGVuID4gblxuICAgICAgICAsICdleHBlY3RlZCAje3RoaXN9IHRvIGhhdmUgYSBsZW5ndGggYWJvdmUgI3tleHB9IGJ1dCBnb3QgI3thY3R9J1xuICAgICAgICAsICdleHBlY3RlZCAje3RoaXN9IHRvIG5vdCBoYXZlIGEgbGVuZ3RoIGFib3ZlICN7ZXhwfSdcbiAgICAgICAgLCBuXG4gICAgICAgICwgbGVuXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmFzc2VydChcbiAgICAgICAgICBvYmogPiBuXG4gICAgICAgICwgJ2V4cGVjdGVkICN7dGhpc30gdG8gYmUgYWJvdmUgJyArIG5cbiAgICAgICAgLCAnZXhwZWN0ZWQgI3t0aGlzfSB0byBiZSBhdCBtb3N0ICcgKyBuXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIEFzc2VydGlvbi5hZGRNZXRob2QoJ2Fib3ZlJywgYXNzZXJ0QWJvdmUpO1xuICBBc3NlcnRpb24uYWRkTWV0aG9kKCdndCcsIGFzc2VydEFib3ZlKTtcbiAgQXNzZXJ0aW9uLmFkZE1ldGhvZCgnZ3JlYXRlclRoYW4nLCBhc3NlcnRBYm92ZSk7XG5cbiAgLyoqXG4gICAqICMjIyAubGVhc3QodmFsdWUpXG4gICAqXG4gICAqIEFzc2VydHMgdGhhdCB0aGUgdGFyZ2V0IGlzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBgdmFsdWVgLlxuICAgKlxuICAgKiAgICAgZXhwZWN0KDEwKS50by5iZS5hdC5sZWFzdCgxMCk7XG4gICAqXG4gICAqIENhbiBhbHNvIGJlIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCBgbGVuZ3RoYCB0b1xuICAgKiBhc3NlcnQgYSBtaW5pbXVtIGxlbmd0aC4gVGhlIGJlbmVmaXQgYmVpbmcgYVxuICAgKiBtb3JlIGluZm9ybWF0aXZlIGVycm9yIG1lc3NhZ2UgdGhhbiBpZiB0aGUgbGVuZ3RoXG4gICAqIHdhcyBzdXBwbGllZCBkaXJlY3RseS5cbiAgICpcbiAgICogICAgIGV4cGVjdCgnZm9vJykudG8uaGF2ZS5sZW5ndGgub2YuYXQubGVhc3QoMik7XG4gICAqICAgICBleHBlY3QoWyAxLCAyLCAzIF0pLnRvLmhhdmUubGVuZ3RoLm9mLmF0LmxlYXN0KDMpO1xuICAgKlxuICAgKiBAbmFtZSBsZWFzdFxuICAgKiBAYWxpYXMgZ3RlXG4gICAqIEBwYXJhbSB7TnVtYmVyfSB2YWx1ZVxuICAgKiBAcGFyYW0ge1N0cmluZ30gbWVzc2FnZSBfb3B0aW9uYWxfXG4gICAqIEBuYW1lc3BhY2UgQkREXG4gICAqIEBhcGkgcHVibGljXG4gICAqL1xuXG4gIGZ1bmN0aW9uIGFzc2VydExlYXN0IChuLCBtc2cpIHtcbiAgICBpZiAobXNnKSBmbGFnKHRoaXMsICdtZXNzYWdlJywgbXNnKTtcbiAgICB2YXIgb2JqID0gZmxhZyh0aGlzLCAnb2JqZWN0Jyk7XG4gICAgaWYgKGZsYWcodGhpcywgJ2RvTGVuZ3RoJykpIHtcbiAgICAgIG5ldyBBc3NlcnRpb24ob2JqLCBtc2cpLnRvLmhhdmUucHJvcGVydHkoJ2xlbmd0aCcpO1xuICAgICAgdmFyIGxlbiA9IG9iai5sZW5ndGg7XG4gICAgICB0aGlzLmFzc2VydChcbiAgICAgICAgICBsZW4gPj0gblxuICAgICAgICAsICdleHBlY3RlZCAje3RoaXN9IHRvIGhhdmUgYSBsZW5ndGggYXQgbGVhc3QgI3tleHB9IGJ1dCBnb3QgI3thY3R9J1xuICAgICAgICAsICdleHBlY3RlZCAje3RoaXN9IHRvIGhhdmUgYSBsZW5ndGggYmVsb3cgI3tleHB9J1xuICAgICAgICAsIG5cbiAgICAgICAgLCBsZW5cbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYXNzZXJ0KFxuICAgICAgICAgIG9iaiA+PSBuXG4gICAgICAgICwgJ2V4cGVjdGVkICN7dGhpc30gdG8gYmUgYXQgbGVhc3QgJyArIG5cbiAgICAgICAgLCAnZXhwZWN0ZWQgI3t0aGlzfSB0byBiZSBiZWxvdyAnICsgblxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBBc3NlcnRpb24uYWRkTWV0aG9kKCdsZWFzdCcsIGFzc2VydExlYXN0KTtcbiAgQXNzZXJ0aW9uLmFkZE1ldGhvZCgnZ3RlJywgYXNzZXJ0TGVhc3QpO1xuXG4gIC8qKlxuICAgKiAjIyMgLmJlbG93KHZhbHVlKVxuICAgKlxuICAgKiBBc3NlcnRzIHRoYXQgdGhlIHRhcmdldCBpcyBsZXNzIHRoYW4gYHZhbHVlYC5cbiAgICpcbiAgICogICAgIGV4cGVjdCg1KS50by5iZS5iZWxvdygxMCk7XG4gICAqXG4gICAqIENhbiBhbHNvIGJlIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCBgbGVuZ3RoYCB0b1xuICAgKiBhc3NlcnQgYSBtYXhpbXVtIGxlbmd0aC4gVGhlIGJlbmVmaXQgYmVpbmcgYVxuICAgKiBtb3JlIGluZm9ybWF0aXZlIGVycm9yIG1lc3NhZ2UgdGhhbiBpZiB0aGUgbGVuZ3RoXG4gICAqIHdhcyBzdXBwbGllZCBkaXJlY3RseS5cbiAgICpcbiAgICogICAgIGV4cGVjdCgnZm9vJykudG8uaGF2ZS5sZW5ndGguYmVsb3coNCk7XG4gICAqICAgICBleHBlY3QoWyAxLCAyLCAzIF0pLnRvLmhhdmUubGVuZ3RoLmJlbG93KDQpO1xuICAgKlxuICAgKiBAbmFtZSBiZWxvd1xuICAgKiBAYWxpYXMgbHRcbiAgICogQGFsaWFzIGxlc3NUaGFuXG4gICAqIEBwYXJhbSB7TnVtYmVyfSB2YWx1ZVxuICAgKiBAcGFyYW0ge1N0cmluZ30gbWVzc2FnZSBfb3B0aW9uYWxfXG4gICAqIEBuYW1lc3BhY2UgQkREXG4gICAqIEBhcGkgcHVibGljXG4gICAqL1xuXG4gIGZ1bmN0aW9uIGFzc2VydEJlbG93IChuLCBtc2cpIHtcbiAgICBpZiAobXNnKSBmbGFnKHRoaXMsICdtZXNzYWdlJywgbXNnKTtcbiAgICB2YXIgb2JqID0gZmxhZyh0aGlzLCAnb2JqZWN0Jyk7XG4gICAgaWYgKGZsYWcodGhpcywgJ2RvTGVuZ3RoJykpIHtcbiAgICAgIG5ldyBBc3NlcnRpb24ob2JqLCBtc2cpLnRvLmhhdmUucHJvcGVydHkoJ2xlbmd0aCcpO1xuICAgICAgdmFyIGxlbiA9IG9iai5sZW5ndGg7XG4gICAgICB0aGlzLmFzc2VydChcbiAgICAgICAgICBsZW4gPCBuXG4gICAgICAgICwgJ2V4cGVjdGVkICN7dGhpc30gdG8gaGF2ZSBhIGxlbmd0aCBiZWxvdyAje2V4cH0gYnV0IGdvdCAje2FjdH0nXG4gICAgICAgICwgJ2V4cGVjdGVkICN7dGhpc30gdG8gbm90IGhhdmUgYSBsZW5ndGggYmVsb3cgI3tleHB9J1xuICAgICAgICAsIG5cbiAgICAgICAgLCBsZW5cbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYXNzZXJ0KFxuICAgICAgICAgIG9iaiA8IG5cbiAgICAgICAgLCAnZXhwZWN0ZWQgI3t0aGlzfSB0byBiZSBiZWxvdyAnICsgblxuICAgICAgICAsICdleHBlY3RlZCAje3RoaXN9IHRvIGJlIGF0IGxlYXN0ICcgKyBuXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIEFzc2VydGlvbi5hZGRNZXRob2QoJ2JlbG93JywgYXNzZXJ0QmVsb3cpO1xuICBBc3NlcnRpb24uYWRkTWV0aG9kKCdsdCcsIGFzc2VydEJlbG93KTtcbiAgQXNzZXJ0aW9uLmFkZE1ldGhvZCgnbGVzc1RoYW4nLCBhc3NlcnRCZWxvdyk7XG5cbiAgLyoqXG4gICAqICMjIyAubW9zdCh2YWx1ZSlcbiAgICpcbiAgICogQXNzZXJ0cyB0aGF0IHRoZSB0YXJnZXQgaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIGB2YWx1ZWAuXG4gICAqXG4gICAqICAgICBleHBlY3QoNSkudG8uYmUuYXQubW9zdCg1KTtcbiAgICpcbiAgICogQ2FuIGFsc28gYmUgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIGBsZW5ndGhgIHRvXG4gICAqIGFzc2VydCBhIG1heGltdW0gbGVuZ3RoLiBUaGUgYmVuZWZpdCBiZWluZyBhXG4gICAqIG1vcmUgaW5mb3JtYXRpdmUgZXJyb3IgbWVzc2FnZSB0aGFuIGlmIHRoZSBsZW5ndGhcbiAgICogd2FzIHN1cHBsaWVkIGRpcmVjdGx5LlxuICAgKlxuICAgKiAgICAgZXhwZWN0KCdmb28nKS50by5oYXZlLmxlbmd0aC5vZi5hdC5tb3N0KDQpO1xuICAgKiAgICAgZXhwZWN0KFsgMSwgMiwgMyBdKS50by5oYXZlLmxlbmd0aC5vZi5hdC5tb3N0KDMpO1xuICAgKlxuICAgKiBAbmFtZSBtb3N0XG4gICAqIEBhbGlhcyBsdGVcbiAgICogQHBhcmFtIHtOdW1iZXJ9IHZhbHVlXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBtZXNzYWdlIF9vcHRpb25hbF9cbiAgICogQG5hbWVzcGFjZSBCRERcbiAgICogQGFwaSBwdWJsaWNcbiAgICovXG5cbiAgZnVuY3Rpb24gYXNzZXJ0TW9zdCAobiwgbXNnKSB7XG4gICAgaWYgKG1zZykgZmxhZyh0aGlzLCAnbWVzc2FnZScsIG1zZyk7XG4gICAgdmFyIG9iaiA9IGZsYWcodGhpcywgJ29iamVjdCcpO1xuICAgIGlmIChmbGFnKHRoaXMsICdkb0xlbmd0aCcpKSB7XG4gICAgICBuZXcgQXNzZXJ0aW9uKG9iaiwgbXNnKS50by5oYXZlLnByb3BlcnR5KCdsZW5ndGgnKTtcbiAgICAgIHZhciBsZW4gPSBvYmoubGVuZ3RoO1xuICAgICAgdGhpcy5hc3NlcnQoXG4gICAgICAgICAgbGVuIDw9IG5cbiAgICAgICAgLCAnZXhwZWN0ZWQgI3t0aGlzfSB0byBoYXZlIGEgbGVuZ3RoIGF0IG1vc3QgI3tleHB9IGJ1dCBnb3QgI3thY3R9J1xuICAgICAgICAsICdleHBlY3RlZCAje3RoaXN9IHRvIGhhdmUgYSBsZW5ndGggYWJvdmUgI3tleHB9J1xuICAgICAgICAsIG5cbiAgICAgICAgLCBsZW5cbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYXNzZXJ0KFxuICAgICAgICAgIG9iaiA8PSBuXG4gICAgICAgICwgJ2V4cGVjdGVkICN7dGhpc30gdG8gYmUgYXQgbW9zdCAnICsgblxuICAgICAgICAsICdleHBlY3RlZCAje3RoaXN9IHRvIGJlIGFib3ZlICcgKyBuXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIEFzc2VydGlvbi5hZGRNZXRob2QoJ21vc3QnLCBhc3NlcnRNb3N0KTtcbiAgQXNzZXJ0aW9uLmFkZE1ldGhvZCgnbHRlJywgYXNzZXJ0TW9zdCk7XG5cbiAgLyoqXG4gICAqICMjIyAud2l0aGluKHN0YXJ0LCBmaW5pc2gpXG4gICAqXG4gICAqIEFzc2VydHMgdGhhdCB0aGUgdGFyZ2V0IGlzIHdpdGhpbiBhIHJhbmdlLlxuICAgKlxuICAgKiAgICAgZXhwZWN0KDcpLnRvLmJlLndpdGhpbig1LDEwKTtcbiAgICpcbiAgICogQ2FuIGFsc28gYmUgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIGBsZW5ndGhgIHRvXG4gICAqIGFzc2VydCBhIGxlbmd0aCByYW5nZS4gVGhlIGJlbmVmaXQgYmVpbmcgYVxuICAgKiBtb3JlIGluZm9ybWF0aXZlIGVycm9yIG1lc3NhZ2UgdGhhbiBpZiB0aGUgbGVuZ3RoXG4gICAqIHdhcyBzdXBwbGllZCBkaXJlY3RseS5cbiAgICpcbiAgICogICAgIGV4cGVjdCgnZm9vJykudG8uaGF2ZS5sZW5ndGgud2l0aGluKDIsNCk7XG4gICAqICAgICBleHBlY3QoWyAxLCAyLCAzIF0pLnRvLmhhdmUubGVuZ3RoLndpdGhpbigyLDQpO1xuICAgKlxuICAgKiBAbmFtZSB3aXRoaW5cbiAgICogQHBhcmFtIHtOdW1iZXJ9IHN0YXJ0IGxvd2VyYm91bmQgaW5jbHVzaXZlXG4gICAqIEBwYXJhbSB7TnVtYmVyfSBmaW5pc2ggdXBwZXJib3VuZCBpbmNsdXNpdmVcbiAgICogQHBhcmFtIHtTdHJpbmd9IG1lc3NhZ2UgX29wdGlvbmFsX1xuICAgKiBAbmFtZXNwYWNlIEJERFxuICAgKiBAYXBpIHB1YmxpY1xuICAgKi9cblxuICBBc3NlcnRpb24uYWRkTWV0aG9kKCd3aXRoaW4nLCBmdW5jdGlvbiAoc3RhcnQsIGZpbmlzaCwgbXNnKSB7XG4gICAgaWYgKG1zZykgZmxhZyh0aGlzLCAnbWVzc2FnZScsIG1zZyk7XG4gICAgdmFyIG9iaiA9IGZsYWcodGhpcywgJ29iamVjdCcpXG4gICAgICAsIHJhbmdlID0gc3RhcnQgKyAnLi4nICsgZmluaXNoO1xuICAgIGlmIChmbGFnKHRoaXMsICdkb0xlbmd0aCcpKSB7XG4gICAgICBuZXcgQXNzZXJ0aW9uKG9iaiwgbXNnKS50by5oYXZlLnByb3BlcnR5KCdsZW5ndGgnKTtcbiAgICAgIHZhciBsZW4gPSBvYmoubGVuZ3RoO1xuICAgICAgdGhpcy5hc3NlcnQoXG4gICAgICAgICAgbGVuID49IHN0YXJ0ICYmIGxlbiA8PSBmaW5pc2hcbiAgICAgICAgLCAnZXhwZWN0ZWQgI3t0aGlzfSB0byBoYXZlIGEgbGVuZ3RoIHdpdGhpbiAnICsgcmFuZ2VcbiAgICAgICAgLCAnZXhwZWN0ZWQgI3t0aGlzfSB0byBub3QgaGF2ZSBhIGxlbmd0aCB3aXRoaW4gJyArIHJhbmdlXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmFzc2VydChcbiAgICAgICAgICBvYmogPj0gc3RhcnQgJiYgb2JqIDw9IGZpbmlzaFxuICAgICAgICAsICdleHBlY3RlZCAje3RoaXN9IHRvIGJlIHdpdGhpbiAnICsgcmFuZ2VcbiAgICAgICAgLCAnZXhwZWN0ZWQgI3t0aGlzfSB0byBub3QgYmUgd2l0aGluICcgKyByYW5nZVxuICAgICAgKTtcbiAgICB9XG4gIH0pO1xuXG4gIC8qKlxuICAgKiAjIyMgLmluc3RhbmNlb2YoY29uc3RydWN0b3IpXG4gICAqXG4gICAqIEFzc2VydHMgdGhhdCB0aGUgdGFyZ2V0IGlzIGFuIGluc3RhbmNlIG9mIGBjb25zdHJ1Y3RvcmAuXG4gICAqXG4gICAqICAgICB2YXIgVGVhID0gZnVuY3Rpb24gKG5hbWUpIHsgdGhpcy5uYW1lID0gbmFtZTsgfVxuICAgKiAgICAgICAsIENoYWkgPSBuZXcgVGVhKCdjaGFpJyk7XG4gICAqXG4gICAqICAgICBleHBlY3QoQ2hhaSkudG8uYmUuYW4uaW5zdGFuY2VvZihUZWEpO1xuICAgKiAgICAgZXhwZWN0KFsgMSwgMiwgMyBdKS50by5iZS5pbnN0YW5jZW9mKEFycmF5KTtcbiAgICpcbiAgICogQG5hbWUgaW5zdGFuY2VvZlxuICAgKiBAcGFyYW0ge0NvbnN0cnVjdG9yfSBjb25zdHJ1Y3RvclxuICAgKiBAcGFyYW0ge1N0cmluZ30gbWVzc2FnZSBfb3B0aW9uYWxfXG4gICAqIEBhbGlhcyBpbnN0YW5jZU9mXG4gICAqIEBuYW1lc3BhY2UgQkREXG4gICAqIEBhcGkgcHVibGljXG4gICAqL1xuXG4gIGZ1bmN0aW9uIGFzc2VydEluc3RhbmNlT2YgKGNvbnN0cnVjdG9yLCBtc2cpIHtcbiAgICBpZiAobXNnKSBmbGFnKHRoaXMsICdtZXNzYWdlJywgbXNnKTtcbiAgICB2YXIgbmFtZSA9IF8uZ2V0TmFtZShjb25zdHJ1Y3Rvcik7XG4gICAgdGhpcy5hc3NlcnQoXG4gICAgICAgIGZsYWcodGhpcywgJ29iamVjdCcpIGluc3RhbmNlb2YgY29uc3RydWN0b3JcbiAgICAgICwgJ2V4cGVjdGVkICN7dGhpc30gdG8gYmUgYW4gaW5zdGFuY2Ugb2YgJyArIG5hbWVcbiAgICAgICwgJ2V4cGVjdGVkICN7dGhpc30gdG8gbm90IGJlIGFuIGluc3RhbmNlIG9mICcgKyBuYW1lXG4gICAgKTtcbiAgfTtcblxuICBBc3NlcnRpb24uYWRkTWV0aG9kKCdpbnN0YW5jZW9mJywgYXNzZXJ0SW5zdGFuY2VPZik7XG4gIEFzc2VydGlvbi5hZGRNZXRob2QoJ2luc3RhbmNlT2YnLCBhc3NlcnRJbnN0YW5jZU9mKTtcblxuICAvKipcbiAgICogIyMjIC5wcm9wZXJ0eShuYW1lLCBbdmFsdWVdKVxuICAgKlxuICAgKiBBc3NlcnRzIHRoYXQgdGhlIHRhcmdldCBoYXMgYSBwcm9wZXJ0eSBgbmFtZWAsIG9wdGlvbmFsbHkgYXNzZXJ0aW5nIHRoYXRcbiAgICogdGhlIHZhbHVlIG9mIHRoYXQgcHJvcGVydHkgaXMgc3RyaWN0bHkgZXF1YWwgdG8gIGB2YWx1ZWAuXG4gICAqIElmIHRoZSBgZGVlcGAgZmxhZyBpcyBzZXQsIHlvdSBjYW4gdXNlIGRvdC0gYW5kIGJyYWNrZXQtbm90YXRpb24gZm9yIGRlZXBcbiAgICogcmVmZXJlbmNlcyBpbnRvIG9iamVjdHMgYW5kIGFycmF5cy5cbiAgICpcbiAgICogICAgIC8vIHNpbXBsZSByZWZlcmVuY2luZ1xuICAgKiAgICAgdmFyIG9iaiA9IHsgZm9vOiAnYmFyJyB9O1xuICAgKiAgICAgZXhwZWN0KG9iaikudG8uaGF2ZS5wcm9wZXJ0eSgnZm9vJyk7XG4gICAqICAgICBleHBlY3Qob2JqKS50by5oYXZlLnByb3BlcnR5KCdmb28nLCAnYmFyJyk7XG4gICAqXG4gICAqICAgICAvLyBkZWVwIHJlZmVyZW5jaW5nXG4gICAqICAgICB2YXIgZGVlcE9iaiA9IHtcbiAgICogICAgICAgICBncmVlbjogeyB0ZWE6ICdtYXRjaGEnIH1cbiAgICogICAgICAgLCB0ZWFzOiBbICdjaGFpJywgJ21hdGNoYScsIHsgdGVhOiAna29uYWNoYScgfSBdXG4gICAqICAgICB9O1xuICAgKlxuICAgKiAgICAgZXhwZWN0KGRlZXBPYmopLnRvLmhhdmUuZGVlcC5wcm9wZXJ0eSgnZ3JlZW4udGVhJywgJ21hdGNoYScpO1xuICAgKiAgICAgZXhwZWN0KGRlZXBPYmopLnRvLmhhdmUuZGVlcC5wcm9wZXJ0eSgndGVhc1sxXScsICdtYXRjaGEnKTtcbiAgICogICAgIGV4cGVjdChkZWVwT2JqKS50by5oYXZlLmRlZXAucHJvcGVydHkoJ3RlYXNbMl0udGVhJywgJ2tvbmFjaGEnKTtcbiAgICpcbiAgICogWW91IGNhbiBhbHNvIHVzZSBhbiBhcnJheSBhcyB0aGUgc3RhcnRpbmcgcG9pbnQgb2YgYSBgZGVlcC5wcm9wZXJ0eWBcbiAgICogYXNzZXJ0aW9uLCBvciB0cmF2ZXJzZSBuZXN0ZWQgYXJyYXlzLlxuICAgKlxuICAgKiAgICAgdmFyIGFyciA9IFtcbiAgICogICAgICAgICBbICdjaGFpJywgJ21hdGNoYScsICdrb25hY2hhJyBdXG4gICAqICAgICAgICwgWyB7IHRlYTogJ2NoYWknIH1cbiAgICogICAgICAgICAsIHsgdGVhOiAnbWF0Y2hhJyB9XG4gICAqICAgICAgICAgLCB7IHRlYTogJ2tvbmFjaGEnIH0gXVxuICAgKiAgICAgXTtcbiAgICpcbiAgICogICAgIGV4cGVjdChhcnIpLnRvLmhhdmUuZGVlcC5wcm9wZXJ0eSgnWzBdWzFdJywgJ21hdGNoYScpO1xuICAgKiAgICAgZXhwZWN0KGFycikudG8uaGF2ZS5kZWVwLnByb3BlcnR5KCdbMV1bMl0udGVhJywgJ2tvbmFjaGEnKTtcbiAgICpcbiAgICogRnVydGhlcm1vcmUsIGBwcm9wZXJ0eWAgY2hhbmdlcyB0aGUgc3ViamVjdCBvZiB0aGUgYXNzZXJ0aW9uXG4gICAqIHRvIGJlIHRoZSB2YWx1ZSBvZiB0aGF0IHByb3BlcnR5IGZyb20gdGhlIG9yaWdpbmFsIG9iamVjdC4gVGhpc1xuICAgKiBwZXJtaXRzIGZvciBmdXJ0aGVyIGNoYWluYWJsZSBhc3NlcnRpb25zIG9uIHRoYXQgcHJvcGVydHkuXG4gICAqXG4gICAqICAgICBleHBlY3Qob2JqKS50by5oYXZlLnByb3BlcnR5KCdmb28nKVxuICAgKiAgICAgICAudGhhdC5pcy5hKCdzdHJpbmcnKTtcbiAgICogICAgIGV4cGVjdChkZWVwT2JqKS50by5oYXZlLnByb3BlcnR5KCdncmVlbicpXG4gICAqICAgICAgIC50aGF0LmlzLmFuKCdvYmplY3QnKVxuICAgKiAgICAgICAudGhhdC5kZWVwLmVxdWFscyh7IHRlYTogJ21hdGNoYScgfSk7XG4gICAqICAgICBleHBlY3QoZGVlcE9iaikudG8uaGF2ZS5wcm9wZXJ0eSgndGVhcycpXG4gICAqICAgICAgIC50aGF0LmlzLmFuKCdhcnJheScpXG4gICAqICAgICAgIC53aXRoLmRlZXAucHJvcGVydHkoJ1syXScpXG4gICAqICAgICAgICAgLnRoYXQuZGVlcC5lcXVhbHMoeyB0ZWE6ICdrb25hY2hhJyB9KTtcbiAgICpcbiAgICogTm90ZSB0aGF0IGRvdHMgYW5kIGJyYWNrZXQgaW4gYG5hbWVgIG11c3QgYmUgYmFja3NsYXNoLWVzY2FwZWQgd2hlblxuICAgKiB0aGUgYGRlZXBgIGZsYWcgaXMgc2V0LCB3aGlsZSB0aGV5IG11c3QgTk9UIGJlIGVzY2FwZWQgd2hlbiB0aGUgYGRlZXBgXG4gICAqIGZsYWcgaXMgbm90IHNldC5cbiAgICpcbiAgICogICAgIC8vIHNpbXBsZSByZWZlcmVuY2luZ1xuICAgKiAgICAgdmFyIGNzcyA9IHsgJy5saW5rW3RhcmdldF0nOiA0MiB9O1xuICAgKiAgICAgZXhwZWN0KGNzcykudG8uaGF2ZS5wcm9wZXJ0eSgnLmxpbmtbdGFyZ2V0XScsIDQyKTtcbiAgICpcbiAgICogICAgIC8vIGRlZXAgcmVmZXJlbmNpbmdcbiAgICogICAgIHZhciBkZWVwQ3NzID0geyAnLmxpbmsnOiB7ICdbdGFyZ2V0XSc6IDQyIH19O1xuICAgKiAgICAgZXhwZWN0KGRlZXBDc3MpLnRvLmhhdmUuZGVlcC5wcm9wZXJ0eSgnXFxcXC5saW5rLlxcXFxbdGFyZ2V0XFxcXF0nLCA0Mik7XG4gICAqXG4gICAqIEBuYW1lIHByb3BlcnR5XG4gICAqIEBhbGlhcyBkZWVwLnByb3BlcnR5XG4gICAqIEBwYXJhbSB7U3RyaW5nfSBuYW1lXG4gICAqIEBwYXJhbSB7TWl4ZWR9IHZhbHVlIChvcHRpb25hbClcbiAgICogQHBhcmFtIHtTdHJpbmd9IG1lc3NhZ2UgX29wdGlvbmFsX1xuICAgKiBAcmV0dXJucyB2YWx1ZSBvZiBwcm9wZXJ0eSBmb3IgY2hhaW5pbmdcbiAgICogQG5hbWVzcGFjZSBCRERcbiAgICogQGFwaSBwdWJsaWNcbiAgICovXG5cbiAgQXNzZXJ0aW9uLmFkZE1ldGhvZCgncHJvcGVydHknLCBmdW5jdGlvbiAobmFtZSwgdmFsLCBtc2cpIHtcbiAgICBpZiAobXNnKSBmbGFnKHRoaXMsICdtZXNzYWdlJywgbXNnKTtcblxuICAgIHZhciBpc0RlZXAgPSAhIWZsYWcodGhpcywgJ2RlZXAnKVxuICAgICAgLCBkZXNjcmlwdG9yID0gaXNEZWVwID8gJ2RlZXAgcHJvcGVydHkgJyA6ICdwcm9wZXJ0eSAnXG4gICAgICAsIG5lZ2F0ZSA9IGZsYWcodGhpcywgJ25lZ2F0ZScpXG4gICAgICAsIG9iaiA9IGZsYWcodGhpcywgJ29iamVjdCcpXG4gICAgICAsIHBhdGhJbmZvID0gaXNEZWVwID8gXy5nZXRQYXRoSW5mbyhuYW1lLCBvYmopIDogbnVsbFxuICAgICAgLCBoYXNQcm9wZXJ0eSA9IGlzRGVlcFxuICAgICAgICA/IHBhdGhJbmZvLmV4aXN0c1xuICAgICAgICA6IF8uaGFzUHJvcGVydHkobmFtZSwgb2JqKVxuICAgICAgLCB2YWx1ZSA9IGlzRGVlcFxuICAgICAgICA/IHBhdGhJbmZvLnZhbHVlXG4gICAgICAgIDogb2JqW25hbWVdO1xuXG4gICAgaWYgKG5lZ2F0ZSAmJiBhcmd1bWVudHMubGVuZ3RoID4gMSkge1xuICAgICAgaWYgKHVuZGVmaW5lZCA9PT0gdmFsdWUpIHtcbiAgICAgICAgbXNnID0gKG1zZyAhPSBudWxsKSA/IG1zZyArICc6ICcgOiAnJztcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1zZyArIF8uaW5zcGVjdChvYmopICsgJyBoYXMgbm8gJyArIGRlc2NyaXB0b3IgKyBfLmluc3BlY3QobmFtZSkpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmFzc2VydChcbiAgICAgICAgICBoYXNQcm9wZXJ0eVxuICAgICAgICAsICdleHBlY3RlZCAje3RoaXN9IHRvIGhhdmUgYSAnICsgZGVzY3JpcHRvciArIF8uaW5zcGVjdChuYW1lKVxuICAgICAgICAsICdleHBlY3RlZCAje3RoaXN9IHRvIG5vdCBoYXZlICcgKyBkZXNjcmlwdG9yICsgXy5pbnNwZWN0KG5hbWUpKTtcbiAgICB9XG5cbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgIHRoaXMuYXNzZXJ0KFxuICAgICAgICAgIHZhbCA9PT0gdmFsdWVcbiAgICAgICAgLCAnZXhwZWN0ZWQgI3t0aGlzfSB0byBoYXZlIGEgJyArIGRlc2NyaXB0b3IgKyBfLmluc3BlY3QobmFtZSkgKyAnIG9mICN7ZXhwfSwgYnV0IGdvdCAje2FjdH0nXG4gICAgICAgICwgJ2V4cGVjdGVkICN7dGhpc30gdG8gbm90IGhhdmUgYSAnICsgZGVzY3JpcHRvciArIF8uaW5zcGVjdChuYW1lKSArICcgb2YgI3thY3R9J1xuICAgICAgICAsIHZhbFxuICAgICAgICAsIHZhbHVlXG4gICAgICApO1xuICAgIH1cblxuICAgIGZsYWcodGhpcywgJ29iamVjdCcsIHZhbHVlKTtcbiAgfSk7XG5cblxuICAvKipcbiAgICogIyMjIC5vd25Qcm9wZXJ0eShuYW1lKVxuICAgKlxuICAgKiBBc3NlcnRzIHRoYXQgdGhlIHRhcmdldCBoYXMgYW4gb3duIHByb3BlcnR5IGBuYW1lYC5cbiAgICpcbiAgICogICAgIGV4cGVjdCgndGVzdCcpLnRvLmhhdmUub3duUHJvcGVydHkoJ2xlbmd0aCcpO1xuICAgKlxuICAgKiBAbmFtZSBvd25Qcm9wZXJ0eVxuICAgKiBAYWxpYXMgaGF2ZU93blByb3BlcnR5XG4gICAqIEBwYXJhbSB7U3RyaW5nfSBuYW1lXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBtZXNzYWdlIF9vcHRpb25hbF9cbiAgICogQG5hbWVzcGFjZSBCRERcbiAgICogQGFwaSBwdWJsaWNcbiAgICovXG5cbiAgZnVuY3Rpb24gYXNzZXJ0T3duUHJvcGVydHkgKG5hbWUsIG1zZykge1xuICAgIGlmIChtc2cpIGZsYWcodGhpcywgJ21lc3NhZ2UnLCBtc2cpO1xuICAgIHZhciBvYmogPSBmbGFnKHRoaXMsICdvYmplY3QnKTtcbiAgICB0aGlzLmFzc2VydChcbiAgICAgICAgb2JqLmhhc093blByb3BlcnR5KG5hbWUpXG4gICAgICAsICdleHBlY3RlZCAje3RoaXN9IHRvIGhhdmUgb3duIHByb3BlcnR5ICcgKyBfLmluc3BlY3QobmFtZSlcbiAgICAgICwgJ2V4cGVjdGVkICN7dGhpc30gdG8gbm90IGhhdmUgb3duIHByb3BlcnR5ICcgKyBfLmluc3BlY3QobmFtZSlcbiAgICApO1xuICB9XG5cbiAgQXNzZXJ0aW9uLmFkZE1ldGhvZCgnb3duUHJvcGVydHknLCBhc3NlcnRPd25Qcm9wZXJ0eSk7XG4gIEFzc2VydGlvbi5hZGRNZXRob2QoJ2hhdmVPd25Qcm9wZXJ0eScsIGFzc2VydE93blByb3BlcnR5KTtcblxuICAvKipcbiAgICogIyMjIC5vd25Qcm9wZXJ0eURlc2NyaXB0b3IobmFtZVssIGRlc2NyaXB0b3JbLCBtZXNzYWdlXV0pXG4gICAqXG4gICAqIEFzc2VydHMgdGhhdCB0aGUgdGFyZ2V0IGhhcyBhbiBvd24gcHJvcGVydHkgZGVzY3JpcHRvciBgbmFtZWAsIHRoYXQgb3B0aW9uYWxseSBtYXRjaGVzIGBkZXNjcmlwdG9yYC5cbiAgICpcbiAgICogICAgIGV4cGVjdCgndGVzdCcpLnRvLmhhdmUub3duUHJvcGVydHlEZXNjcmlwdG9yKCdsZW5ndGgnKTtcbiAgICogICAgIGV4cGVjdCgndGVzdCcpLnRvLmhhdmUub3duUHJvcGVydHlEZXNjcmlwdG9yKCdsZW5ndGgnLCB7IGVudW1lcmFibGU6IGZhbHNlLCBjb25maWd1cmFibGU6IGZhbHNlLCB3cml0YWJsZTogZmFsc2UsIHZhbHVlOiA0IH0pO1xuICAgKiAgICAgZXhwZWN0KCd0ZXN0Jykubm90LnRvLmhhdmUub3duUHJvcGVydHlEZXNjcmlwdG9yKCdsZW5ndGgnLCB7IGVudW1lcmFibGU6IGZhbHNlLCBjb25maWd1cmFibGU6IGZhbHNlLCB3cml0YWJsZTogZmFsc2UsIHZhbHVlOiAzIH0pO1xuICAgKiAgICAgZXhwZWN0KCd0ZXN0Jykub3duUHJvcGVydHlEZXNjcmlwdG9yKCdsZW5ndGgnKS50by5oYXZlLnByb3BlcnR5KCdlbnVtZXJhYmxlJywgZmFsc2UpO1xuICAgKiAgICAgZXhwZWN0KCd0ZXN0Jykub3duUHJvcGVydHlEZXNjcmlwdG9yKCdsZW5ndGgnKS50by5oYXZlLmtleXMoJ3ZhbHVlJyk7XG4gICAqXG4gICAqIEBuYW1lIG93blByb3BlcnR5RGVzY3JpcHRvclxuICAgKiBAYWxpYXMgaGF2ZU93blByb3BlcnR5RGVzY3JpcHRvclxuICAgKiBAcGFyYW0ge1N0cmluZ30gbmFtZVxuICAgKiBAcGFyYW0ge09iamVjdH0gZGVzY3JpcHRvciBfb3B0aW9uYWxfXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBtZXNzYWdlIF9vcHRpb25hbF9cbiAgICogQG5hbWVzcGFjZSBCRERcbiAgICogQGFwaSBwdWJsaWNcbiAgICovXG5cbiAgZnVuY3Rpb24gYXNzZXJ0T3duUHJvcGVydHlEZXNjcmlwdG9yIChuYW1lLCBkZXNjcmlwdG9yLCBtc2cpIHtcbiAgICBpZiAodHlwZW9mIGRlc2NyaXB0b3IgPT09ICdzdHJpbmcnKSB7XG4gICAgICBtc2cgPSBkZXNjcmlwdG9yO1xuICAgICAgZGVzY3JpcHRvciA9IG51bGw7XG4gICAgfVxuICAgIGlmIChtc2cpIGZsYWcodGhpcywgJ21lc3NhZ2UnLCBtc2cpO1xuICAgIHZhciBvYmogPSBmbGFnKHRoaXMsICdvYmplY3QnKTtcbiAgICB2YXIgYWN0dWFsRGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoT2JqZWN0KG9iaiksIG5hbWUpO1xuICAgIGlmIChhY3R1YWxEZXNjcmlwdG9yICYmIGRlc2NyaXB0b3IpIHtcbiAgICAgIHRoaXMuYXNzZXJ0KFxuICAgICAgICAgIF8uZXFsKGRlc2NyaXB0b3IsIGFjdHVhbERlc2NyaXB0b3IpXG4gICAgICAgICwgJ2V4cGVjdGVkIHRoZSBvd24gcHJvcGVydHkgZGVzY3JpcHRvciBmb3IgJyArIF8uaW5zcGVjdChuYW1lKSArICcgb24gI3t0aGlzfSB0byBtYXRjaCAnICsgXy5pbnNwZWN0KGRlc2NyaXB0b3IpICsgJywgZ290ICcgKyBfLmluc3BlY3QoYWN0dWFsRGVzY3JpcHRvcilcbiAgICAgICAgLCAnZXhwZWN0ZWQgdGhlIG93biBwcm9wZXJ0eSBkZXNjcmlwdG9yIGZvciAnICsgXy5pbnNwZWN0KG5hbWUpICsgJyBvbiAje3RoaXN9IHRvIG5vdCBtYXRjaCAnICsgXy5pbnNwZWN0KGRlc2NyaXB0b3IpXG4gICAgICAgICwgZGVzY3JpcHRvclxuICAgICAgICAsIGFjdHVhbERlc2NyaXB0b3JcbiAgICAgICAgLCB0cnVlXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmFzc2VydChcbiAgICAgICAgICBhY3R1YWxEZXNjcmlwdG9yXG4gICAgICAgICwgJ2V4cGVjdGVkICN7dGhpc30gdG8gaGF2ZSBhbiBvd24gcHJvcGVydHkgZGVzY3JpcHRvciBmb3IgJyArIF8uaW5zcGVjdChuYW1lKVxuICAgICAgICAsICdleHBlY3RlZCAje3RoaXN9IHRvIG5vdCBoYXZlIGFuIG93biBwcm9wZXJ0eSBkZXNjcmlwdG9yIGZvciAnICsgXy5pbnNwZWN0KG5hbWUpXG4gICAgICApO1xuICAgIH1cbiAgICBmbGFnKHRoaXMsICdvYmplY3QnLCBhY3R1YWxEZXNjcmlwdG9yKTtcbiAgfVxuXG4gIEFzc2VydGlvbi5hZGRNZXRob2QoJ293blByb3BlcnR5RGVzY3JpcHRvcicsIGFzc2VydE93blByb3BlcnR5RGVzY3JpcHRvcik7XG4gIEFzc2VydGlvbi5hZGRNZXRob2QoJ2hhdmVPd25Qcm9wZXJ0eURlc2NyaXB0b3InLCBhc3NlcnRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpO1xuXG4gIC8qKlxuICAgKiAjIyMgLmxlbmd0aFxuICAgKlxuICAgKiBTZXRzIHRoZSBgZG9MZW5ndGhgIGZsYWcgbGF0ZXIgdXNlZCBhcyBhIGNoYWluIHByZWN1cnNvciB0byBhIHZhbHVlXG4gICAqIGNvbXBhcmlzb24gZm9yIHRoZSBgbGVuZ3RoYCBwcm9wZXJ0eS5cbiAgICpcbiAgICogICAgIGV4cGVjdCgnZm9vJykudG8uaGF2ZS5sZW5ndGguYWJvdmUoMik7XG4gICAqICAgICBleHBlY3QoWyAxLCAyLCAzIF0pLnRvLmhhdmUubGVuZ3RoLmFib3ZlKDIpO1xuICAgKiAgICAgZXhwZWN0KCdmb28nKS50by5oYXZlLmxlbmd0aC5iZWxvdyg0KTtcbiAgICogICAgIGV4cGVjdChbIDEsIDIsIDMgXSkudG8uaGF2ZS5sZW5ndGguYmVsb3coNCk7XG4gICAqICAgICBleHBlY3QoJ2ZvbycpLnRvLmhhdmUubGVuZ3RoLndpdGhpbigyLDQpO1xuICAgKiAgICAgZXhwZWN0KFsgMSwgMiwgMyBdKS50by5oYXZlLmxlbmd0aC53aXRoaW4oMiw0KTtcbiAgICpcbiAgICogKkRlcHJlY2F0aW9uIG5vdGljZToqIFVzaW5nIGBsZW5ndGhgIGFzIGFuIGFzc2VydGlvbiB3aWxsIGJlIGRlcHJlY2F0ZWRcbiAgICogaW4gdmVyc2lvbiAyLjQuMCBhbmQgcmVtb3ZlZCBpbiAzLjAuMC4gQ29kZSB1c2luZyB0aGUgb2xkIHN0eWxlIG9mXG4gICAqIGFzc2VydGluZyBmb3IgYGxlbmd0aGAgcHJvcGVydHkgdmFsdWUgdXNpbmcgYGxlbmd0aCh2YWx1ZSlgIHNob3VsZCBiZVxuICAgKiBzd2l0Y2hlZCB0byB1c2UgYGxlbmd0aE9mKHZhbHVlKWAgaW5zdGVhZC5cbiAgICpcbiAgICogQG5hbWUgbGVuZ3RoXG4gICAqIEBuYW1lc3BhY2UgQkREXG4gICAqIEBhcGkgcHVibGljXG4gICAqL1xuXG4gIC8qKlxuICAgKiAjIyMgLmxlbmd0aE9mKHZhbHVlWywgbWVzc2FnZV0pXG4gICAqXG4gICAqIEFzc2VydHMgdGhhdCB0aGUgdGFyZ2V0J3MgYGxlbmd0aGAgcHJvcGVydHkgaGFzXG4gICAqIHRoZSBleHBlY3RlZCB2YWx1ZS5cbiAgICpcbiAgICogICAgIGV4cGVjdChbIDEsIDIsIDNdKS50by5oYXZlLmxlbmd0aE9mKDMpO1xuICAgKiAgICAgZXhwZWN0KCdmb29iYXInKS50by5oYXZlLmxlbmd0aE9mKDYpO1xuICAgKlxuICAgKiBAbmFtZSBsZW5ndGhPZlxuICAgKiBAcGFyYW0ge051bWJlcn0gbGVuZ3RoXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBtZXNzYWdlIF9vcHRpb25hbF9cbiAgICogQG5hbWVzcGFjZSBCRERcbiAgICogQGFwaSBwdWJsaWNcbiAgICovXG5cbiAgZnVuY3Rpb24gYXNzZXJ0TGVuZ3RoQ2hhaW4gKCkge1xuICAgIGZsYWcodGhpcywgJ2RvTGVuZ3RoJywgdHJ1ZSk7XG4gIH1cblxuICBmdW5jdGlvbiBhc3NlcnRMZW5ndGggKG4sIG1zZykge1xuICAgIGlmIChtc2cpIGZsYWcodGhpcywgJ21lc3NhZ2UnLCBtc2cpO1xuICAgIHZhciBvYmogPSBmbGFnKHRoaXMsICdvYmplY3QnKTtcbiAgICBuZXcgQXNzZXJ0aW9uKG9iaiwgbXNnKS50by5oYXZlLnByb3BlcnR5KCdsZW5ndGgnKTtcbiAgICB2YXIgbGVuID0gb2JqLmxlbmd0aDtcblxuICAgIHRoaXMuYXNzZXJ0KFxuICAgICAgICBsZW4gPT0gblxuICAgICAgLCAnZXhwZWN0ZWQgI3t0aGlzfSB0byBoYXZlIGEgbGVuZ3RoIG9mICN7ZXhwfSBidXQgZ290ICN7YWN0fSdcbiAgICAgICwgJ2V4cGVjdGVkICN7dGhpc30gdG8gbm90IGhhdmUgYSBsZW5ndGggb2YgI3thY3R9J1xuICAgICAgLCBuXG4gICAgICAsIGxlblxuICAgICk7XG4gIH1cblxuICBBc3NlcnRpb24uYWRkQ2hhaW5hYmxlTWV0aG9kKCdsZW5ndGgnLCBhc3NlcnRMZW5ndGgsIGFzc2VydExlbmd0aENoYWluKTtcbiAgQXNzZXJ0aW9uLmFkZE1ldGhvZCgnbGVuZ3RoT2YnLCBhc3NlcnRMZW5ndGgpO1xuXG4gIC8qKlxuICAgKiAjIyMgLm1hdGNoKHJlZ2V4cClcbiAgICpcbiAgICogQXNzZXJ0cyB0aGF0IHRoZSB0YXJnZXQgbWF0Y2hlcyBhIHJlZ3VsYXIgZXhwcmVzc2lvbi5cbiAgICpcbiAgICogICAgIGV4cGVjdCgnZm9vYmFyJykudG8ubWF0Y2goL15mb28vKTtcbiAgICpcbiAgICogQG5hbWUgbWF0Y2hcbiAgICogQGFsaWFzIG1hdGNoZXNcbiAgICogQHBhcmFtIHtSZWdFeHB9IFJlZ3VsYXJFeHByZXNzaW9uXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBtZXNzYWdlIF9vcHRpb25hbF9cbiAgICogQG5hbWVzcGFjZSBCRERcbiAgICogQGFwaSBwdWJsaWNcbiAgICovXG4gIGZ1bmN0aW9uIGFzc2VydE1hdGNoKHJlLCBtc2cpIHtcbiAgICBpZiAobXNnKSBmbGFnKHRoaXMsICdtZXNzYWdlJywgbXNnKTtcbiAgICB2YXIgb2JqID0gZmxhZyh0aGlzLCAnb2JqZWN0Jyk7XG4gICAgdGhpcy5hc3NlcnQoXG4gICAgICAgIHJlLmV4ZWMob2JqKVxuICAgICAgLCAnZXhwZWN0ZWQgI3t0aGlzfSB0byBtYXRjaCAnICsgcmVcbiAgICAgICwgJ2V4cGVjdGVkICN7dGhpc30gbm90IHRvIG1hdGNoICcgKyByZVxuICAgICk7XG4gIH1cblxuICBBc3NlcnRpb24uYWRkTWV0aG9kKCdtYXRjaCcsIGFzc2VydE1hdGNoKTtcbiAgQXNzZXJ0aW9uLmFkZE1ldGhvZCgnbWF0Y2hlcycsIGFzc2VydE1hdGNoKTtcblxuICAvKipcbiAgICogIyMjIC5zdHJpbmcoc3RyaW5nKVxuICAgKlxuICAgKiBBc3NlcnRzIHRoYXQgdGhlIHN0cmluZyB0YXJnZXQgY29udGFpbnMgYW5vdGhlciBzdHJpbmcuXG4gICAqXG4gICAqICAgICBleHBlY3QoJ2Zvb2JhcicpLnRvLmhhdmUuc3RyaW5nKCdiYXInKTtcbiAgICpcbiAgICogQG5hbWUgc3RyaW5nXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBzdHJpbmdcbiAgICogQHBhcmFtIHtTdHJpbmd9IG1lc3NhZ2UgX29wdGlvbmFsX1xuICAgKiBAbmFtZXNwYWNlIEJERFxuICAgKiBAYXBpIHB1YmxpY1xuICAgKi9cblxuICBBc3NlcnRpb24uYWRkTWV0aG9kKCdzdHJpbmcnLCBmdW5jdGlvbiAoc3RyLCBtc2cpIHtcbiAgICBpZiAobXNnKSBmbGFnKHRoaXMsICdtZXNzYWdlJywgbXNnKTtcbiAgICB2YXIgb2JqID0gZmxhZyh0aGlzLCAnb2JqZWN0Jyk7XG4gICAgbmV3IEFzc2VydGlvbihvYmosIG1zZykuaXMuYSgnc3RyaW5nJyk7XG5cbiAgICB0aGlzLmFzc2VydChcbiAgICAgICAgfm9iai5pbmRleE9mKHN0cilcbiAgICAgICwgJ2V4cGVjdGVkICN7dGhpc30gdG8gY29udGFpbiAnICsgXy5pbnNwZWN0KHN0cilcbiAgICAgICwgJ2V4cGVjdGVkICN7dGhpc30gdG8gbm90IGNvbnRhaW4gJyArIF8uaW5zcGVjdChzdHIpXG4gICAgKTtcbiAgfSk7XG5cblxuICAvKipcbiAgICogIyMjIC5rZXlzKGtleTEsIFtrZXkyXSwgWy4uLl0pXG4gICAqXG4gICAqIEFzc2VydHMgdGhhdCB0aGUgdGFyZ2V0IGNvbnRhaW5zIGFueSBvciBhbGwgb2YgdGhlIHBhc3NlZC1pbiBrZXlzLlxuICAgKiBVc2UgaW4gY29tYmluYXRpb24gd2l0aCBgYW55YCwgYGFsbGAsIGBjb250YWluc2AsIG9yIGBoYXZlYCB3aWxsIGFmZmVjdFxuICAgKiB3aGF0IHdpbGwgcGFzcy5cbiAgICpcbiAgICogV2hlbiB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggYGFueWAsIGF0IGxlYXN0IG9uZSBrZXkgdGhhdCBpcyBwYXNzZWRcbiAgICogaW4gbXVzdCBleGlzdCBpbiB0aGUgdGFyZ2V0IG9iamVjdC4gVGhpcyBpcyByZWdhcmRsZXNzIHdoZXRoZXIgb3Igbm90XG4gICAqIHRoZSBgaGF2ZWAgb3IgYGNvbnRhaW5gIHF1YWxpZmllcnMgYXJlIHVzZWQuIE5vdGUsIGVpdGhlciBgYW55YCBvciBgYWxsYFxuICAgKiBzaG91bGQgYmUgdXNlZCBpbiB0aGUgYXNzZXJ0aW9uLiBJZiBuZWl0aGVyIGFyZSB1c2VkLCB0aGUgYXNzZXJ0aW9uIGlzXG4gICAqIGRlZmF1bHRlZCB0byBgYWxsYC5cbiAgICpcbiAgICogV2hlbiBib3RoIGBhbGxgIGFuZCBgY29udGFpbmAgYXJlIHVzZWQsIHRoZSB0YXJnZXQgb2JqZWN0IG11c3QgaGF2ZSBhdFxuICAgKiBsZWFzdCBhbGwgb2YgdGhlIHBhc3NlZC1pbiBrZXlzIGJ1dCBtYXkgaGF2ZSBtb3JlIGtleXMgbm90IGxpc3RlZC5cbiAgICpcbiAgICogV2hlbiBib3RoIGBhbGxgIGFuZCBgaGF2ZWAgYXJlIHVzZWQsIHRoZSB0YXJnZXQgb2JqZWN0IG11c3QgYm90aCBjb250YWluXG4gICAqIGFsbCBvZiB0aGUgcGFzc2VkLWluIGtleXMgQU5EIHRoZSBudW1iZXIgb2Yga2V5cyBpbiB0aGUgdGFyZ2V0IG9iamVjdCBtdXN0XG4gICAqIG1hdGNoIHRoZSBudW1iZXIgb2Yga2V5cyBwYXNzZWQgaW4gKGluIG90aGVyIHdvcmRzLCBhIHRhcmdldCBvYmplY3QgbXVzdFxuICAgKiBoYXZlIGFsbCBhbmQgb25seSBhbGwgb2YgdGhlIHBhc3NlZC1pbiBrZXlzKS5cbiAgICpcbiAgICogICAgIGV4cGVjdCh7IGZvbzogMSwgYmFyOiAyIH0pLnRvLmhhdmUuYW55LmtleXMoJ2ZvbycsICdiYXonKTtcbiAgICogICAgIGV4cGVjdCh7IGZvbzogMSwgYmFyOiAyIH0pLnRvLmhhdmUuYW55LmtleXMoJ2ZvbycpO1xuICAgKiAgICAgZXhwZWN0KHsgZm9vOiAxLCBiYXI6IDIgfSkudG8uY29udGFpbi5hbnkua2V5cygnYmFyJywgJ2JheicpO1xuICAgKiAgICAgZXhwZWN0KHsgZm9vOiAxLCBiYXI6IDIgfSkudG8uY29udGFpbi5hbnkua2V5cyhbJ2ZvbyddKTtcbiAgICogICAgIGV4cGVjdCh7IGZvbzogMSwgYmFyOiAyIH0pLnRvLmNvbnRhaW4uYW55LmtleXMoeydmb28nOiA2fSk7XG4gICAqICAgICBleHBlY3QoeyBmb286IDEsIGJhcjogMiB9KS50by5oYXZlLmFsbC5rZXlzKFsnYmFyJywgJ2ZvbyddKTtcbiAgICogICAgIGV4cGVjdCh7IGZvbzogMSwgYmFyOiAyIH0pLnRvLmhhdmUuYWxsLmtleXMoeydiYXInOiA2LCAnZm9vJzogN30pO1xuICAgKiAgICAgZXhwZWN0KHsgZm9vOiAxLCBiYXI6IDIsIGJhejogMyB9KS50by5jb250YWluLmFsbC5rZXlzKFsnYmFyJywgJ2ZvbyddKTtcbiAgICogICAgIGV4cGVjdCh7IGZvbzogMSwgYmFyOiAyLCBiYXo6IDMgfSkudG8uY29udGFpbi5hbGwua2V5cyh7J2Jhcic6IDZ9KTtcbiAgICpcbiAgICpcbiAgICogQG5hbWUga2V5c1xuICAgKiBAYWxpYXMga2V5XG4gICAqIEBwYXJhbSB7Li4uU3RyaW5nfEFycmF5fE9iamVjdH0ga2V5c1xuICAgKiBAbmFtZXNwYWNlIEJERFxuICAgKiBAYXBpIHB1YmxpY1xuICAgKi9cblxuICBmdW5jdGlvbiBhc3NlcnRLZXlzIChrZXlzKSB7XG4gICAgdmFyIG9iaiA9IGZsYWcodGhpcywgJ29iamVjdCcpXG4gICAgICAsIHN0clxuICAgICAgLCBvayA9IHRydWVcbiAgICAgICwgbWl4ZWRBcmdzTXNnID0gJ2tleXMgbXVzdCBiZSBnaXZlbiBzaW5nbGUgYXJndW1lbnQgb2YgQXJyYXl8T2JqZWN0fFN0cmluZywgb3IgbXVsdGlwbGUgU3RyaW5nIGFyZ3VtZW50cyc7XG5cbiAgICBzd2l0Y2ggKF8udHlwZShrZXlzKSkge1xuICAgICAgY2FzZSBcImFycmF5XCI6XG4gICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID4gMSkgdGhyb3cgKG5ldyBFcnJvcihtaXhlZEFyZ3NNc2cpKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwib2JqZWN0XCI6XG4gICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID4gMSkgdGhyb3cgKG5ldyBFcnJvcihtaXhlZEFyZ3NNc2cpKTtcbiAgICAgICAga2V5cyA9IE9iamVjdC5rZXlzKGtleXMpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGtleXMgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpO1xuICAgIH1cblxuICAgIGlmICgha2V5cy5sZW5ndGgpIHRocm93IG5ldyBFcnJvcigna2V5cyByZXF1aXJlZCcpO1xuXG4gICAgdmFyIGFjdHVhbCA9IE9iamVjdC5rZXlzKG9iailcbiAgICAgICwgZXhwZWN0ZWQgPSBrZXlzXG4gICAgICAsIGxlbiA9IGtleXMubGVuZ3RoXG4gICAgICAsIGFueSA9IGZsYWcodGhpcywgJ2FueScpXG4gICAgICAsIGFsbCA9IGZsYWcodGhpcywgJ2FsbCcpO1xuXG4gICAgaWYgKCFhbnkgJiYgIWFsbCkge1xuICAgICAgYWxsID0gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyBIYXMgYW55XG4gICAgaWYgKGFueSkge1xuICAgICAgdmFyIGludGVyc2VjdGlvbiA9IGV4cGVjdGVkLmZpbHRlcihmdW5jdGlvbihrZXkpIHtcbiAgICAgICAgcmV0dXJuIH5hY3R1YWwuaW5kZXhPZihrZXkpO1xuICAgICAgfSk7XG4gICAgICBvayA9IGludGVyc2VjdGlvbi5sZW5ndGggPiAwO1xuICAgIH1cblxuICAgIC8vIEhhcyBhbGxcbiAgICBpZiAoYWxsKSB7XG4gICAgICBvayA9IGtleXMuZXZlcnkoZnVuY3Rpb24oa2V5KXtcbiAgICAgICAgcmV0dXJuIH5hY3R1YWwuaW5kZXhPZihrZXkpO1xuICAgICAgfSk7XG4gICAgICBpZiAoIWZsYWcodGhpcywgJ25lZ2F0ZScpICYmICFmbGFnKHRoaXMsICdjb250YWlucycpKSB7XG4gICAgICAgIG9rID0gb2sgJiYga2V5cy5sZW5ndGggPT0gYWN0dWFsLmxlbmd0aDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBLZXkgc3RyaW5nXG4gICAgaWYgKGxlbiA+IDEpIHtcbiAgICAgIGtleXMgPSBrZXlzLm1hcChmdW5jdGlvbihrZXkpe1xuICAgICAgICByZXR1cm4gXy5pbnNwZWN0KGtleSk7XG4gICAgICB9KTtcbiAgICAgIHZhciBsYXN0ID0ga2V5cy5wb3AoKTtcbiAgICAgIGlmIChhbGwpIHtcbiAgICAgICAgc3RyID0ga2V5cy5qb2luKCcsICcpICsgJywgYW5kICcgKyBsYXN0O1xuICAgICAgfVxuICAgICAgaWYgKGFueSkge1xuICAgICAgICBzdHIgPSBrZXlzLmpvaW4oJywgJykgKyAnLCBvciAnICsgbGFzdDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgc3RyID0gXy5pbnNwZWN0KGtleXNbMF0pO1xuICAgIH1cblxuICAgIC8vIEZvcm1cbiAgICBzdHIgPSAobGVuID4gMSA/ICdrZXlzICcgOiAna2V5ICcpICsgc3RyO1xuXG4gICAgLy8gSGF2ZSAvIGluY2x1ZGVcbiAgICBzdHIgPSAoZmxhZyh0aGlzLCAnY29udGFpbnMnKSA/ICdjb250YWluICcgOiAnaGF2ZSAnKSArIHN0cjtcblxuICAgIC8vIEFzc2VydGlvblxuICAgIHRoaXMuYXNzZXJ0KFxuICAgICAgICBva1xuICAgICAgLCAnZXhwZWN0ZWQgI3t0aGlzfSB0byAnICsgc3RyXG4gICAgICAsICdleHBlY3RlZCAje3RoaXN9IHRvIG5vdCAnICsgc3RyXG4gICAgICAsIGV4cGVjdGVkLnNsaWNlKDApLnNvcnQoKVxuICAgICAgLCBhY3R1YWwuc29ydCgpXG4gICAgICAsIHRydWVcbiAgICApO1xuICB9XG5cbiAgQXNzZXJ0aW9uLmFkZE1ldGhvZCgna2V5cycsIGFzc2VydEtleXMpO1xuICBBc3NlcnRpb24uYWRkTWV0aG9kKCdrZXknLCBhc3NlcnRLZXlzKTtcblxuICAvKipcbiAgICogIyMjIC50aHJvdyhjb25zdHJ1Y3RvcilcbiAgICpcbiAgICogQXNzZXJ0cyB0aGF0IHRoZSBmdW5jdGlvbiB0YXJnZXQgd2lsbCB0aHJvdyBhIHNwZWNpZmljIGVycm9yLCBvciBzcGVjaWZpYyB0eXBlIG9mIGVycm9yXG4gICAqIChhcyBkZXRlcm1pbmVkIHVzaW5nIGBpbnN0YW5jZW9mYCksIG9wdGlvbmFsbHkgd2l0aCBhIFJlZ0V4cCBvciBzdHJpbmcgaW5jbHVzaW9uIHRlc3RcbiAgICogZm9yIHRoZSBlcnJvcidzIG1lc3NhZ2UuXG4gICAqXG4gICAqICAgICB2YXIgZXJyID0gbmV3IFJlZmVyZW5jZUVycm9yKCdUaGlzIGlzIGEgYmFkIGZ1bmN0aW9uLicpO1xuICAgKiAgICAgdmFyIGZuID0gZnVuY3Rpb24gKCkgeyB0aHJvdyBlcnI7IH1cbiAgICogICAgIGV4cGVjdChmbikudG8udGhyb3coUmVmZXJlbmNlRXJyb3IpO1xuICAgKiAgICAgZXhwZWN0KGZuKS50by50aHJvdyhFcnJvcik7XG4gICAqICAgICBleHBlY3QoZm4pLnRvLnRocm93KC9iYWQgZnVuY3Rpb24vKTtcbiAgICogICAgIGV4cGVjdChmbikudG8ubm90LnRocm93KCdnb29kIGZ1bmN0aW9uJyk7XG4gICAqICAgICBleHBlY3QoZm4pLnRvLnRocm93KFJlZmVyZW5jZUVycm9yLCAvYmFkIGZ1bmN0aW9uLyk7XG4gICAqICAgICBleHBlY3QoZm4pLnRvLnRocm93KGVycik7XG4gICAqXG4gICAqIFBsZWFzZSBub3RlIHRoYXQgd2hlbiBhIHRocm93IGV4cGVjdGF0aW9uIGlzIG5lZ2F0ZWQsIGl0IHdpbGwgY2hlY2sgZWFjaFxuICAgKiBwYXJhbWV0ZXIgaW5kZXBlbmRlbnRseSwgc3RhcnRpbmcgd2l0aCBlcnJvciBjb25zdHJ1Y3RvciB0eXBlLiBUaGUgYXBwcm9wcmlhdGUgd2F5XG4gICAqIHRvIGNoZWNrIGZvciB0aGUgZXhpc3RlbmNlIG9mIGEgdHlwZSBvZiBlcnJvciBidXQgZm9yIGEgbWVzc2FnZSB0aGF0IGRvZXMgbm90IG1hdGNoXG4gICAqIGlzIHRvIHVzZSBgYW5kYC5cbiAgICpcbiAgICogICAgIGV4cGVjdChmbikudG8udGhyb3coUmVmZXJlbmNlRXJyb3IpXG4gICAqICAgICAgICAuYW5kLm5vdC50aHJvdygvZ29vZCBmdW5jdGlvbi8pO1xuICAgKlxuICAgKiBAbmFtZSB0aHJvd1xuICAgKiBAYWxpYXMgdGhyb3dzXG4gICAqIEBhbGlhcyBUaHJvd1xuICAgKiBAcGFyYW0ge0Vycm9yQ29uc3RydWN0b3J9IGNvbnN0cnVjdG9yXG4gICAqIEBwYXJhbSB7U3RyaW5nfFJlZ0V4cH0gZXhwZWN0ZWQgZXJyb3IgbWVzc2FnZVxuICAgKiBAcGFyYW0ge1N0cmluZ30gbWVzc2FnZSBfb3B0aW9uYWxfXG4gICAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4vSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvRXJyb3IjRXJyb3JfdHlwZXNcbiAgICogQHJldHVybnMgZXJyb3IgZm9yIGNoYWluaW5nIChudWxsIGlmIG5vIGVycm9yKVxuICAgKiBAbmFtZXNwYWNlIEJERFxuICAgKiBAYXBpIHB1YmxpY1xuICAgKi9cblxuICBmdW5jdGlvbiBhc3NlcnRUaHJvd3MgKGNvbnN0cnVjdG9yLCBlcnJNc2csIG1zZykge1xuICAgIGlmIChtc2cpIGZsYWcodGhpcywgJ21lc3NhZ2UnLCBtc2cpO1xuICAgIHZhciBvYmogPSBmbGFnKHRoaXMsICdvYmplY3QnKTtcbiAgICBuZXcgQXNzZXJ0aW9uKG9iaiwgbXNnKS5pcy5hKCdmdW5jdGlvbicpO1xuXG4gICAgdmFyIHRocm93biA9IGZhbHNlXG4gICAgICAsIGRlc2lyZWRFcnJvciA9IG51bGxcbiAgICAgICwgbmFtZSA9IG51bGxcbiAgICAgICwgdGhyb3duRXJyb3IgPSBudWxsO1xuXG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgIGVyck1zZyA9IG51bGw7XG4gICAgICBjb25zdHJ1Y3RvciA9IG51bGw7XG4gICAgfSBlbHNlIGlmIChjb25zdHJ1Y3RvciAmJiAoY29uc3RydWN0b3IgaW5zdGFuY2VvZiBSZWdFeHAgfHwgJ3N0cmluZycgPT09IHR5cGVvZiBjb25zdHJ1Y3RvcikpIHtcbiAgICAgIGVyck1zZyA9IGNvbnN0cnVjdG9yO1xuICAgICAgY29uc3RydWN0b3IgPSBudWxsO1xuICAgIH0gZWxzZSBpZiAoY29uc3RydWN0b3IgJiYgY29uc3RydWN0b3IgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgZGVzaXJlZEVycm9yID0gY29uc3RydWN0b3I7XG4gICAgICBjb25zdHJ1Y3RvciA9IG51bGw7XG4gICAgICBlcnJNc2cgPSBudWxsO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGNvbnN0cnVjdG9yID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBuYW1lID0gY29uc3RydWN0b3IucHJvdG90eXBlLm5hbWU7XG4gICAgICBpZiAoIW5hbWUgfHwgKG5hbWUgPT09ICdFcnJvcicgJiYgY29uc3RydWN0b3IgIT09IEVycm9yKSkge1xuICAgICAgICBuYW1lID0gY29uc3RydWN0b3IubmFtZSB8fCAobmV3IGNvbnN0cnVjdG9yKCkpLm5hbWU7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0cnVjdG9yID0gbnVsbDtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgb2JqKCk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAvLyBmaXJzdCwgY2hlY2sgZGVzaXJlZCBlcnJvclxuICAgICAgaWYgKGRlc2lyZWRFcnJvcikge1xuICAgICAgICB0aGlzLmFzc2VydChcbiAgICAgICAgICAgIGVyciA9PT0gZGVzaXJlZEVycm9yXG4gICAgICAgICAgLCAnZXhwZWN0ZWQgI3t0aGlzfSB0byB0aHJvdyAje2V4cH0gYnV0ICN7YWN0fSB3YXMgdGhyb3duJ1xuICAgICAgICAgICwgJ2V4cGVjdGVkICN7dGhpc30gdG8gbm90IHRocm93ICN7ZXhwfSdcbiAgICAgICAgICAsIChkZXNpcmVkRXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGRlc2lyZWRFcnJvci50b1N0cmluZygpIDogZGVzaXJlZEVycm9yKVxuICAgICAgICAgICwgKGVyciBpbnN0YW5jZW9mIEVycm9yID8gZXJyLnRvU3RyaW5nKCkgOiBlcnIpXG4gICAgICAgICk7XG5cbiAgICAgICAgZmxhZyh0aGlzLCAnb2JqZWN0JywgZXJyKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9XG5cbiAgICAgIC8vIG5leHQsIGNoZWNrIGNvbnN0cnVjdG9yXG4gICAgICBpZiAoY29uc3RydWN0b3IpIHtcbiAgICAgICAgdGhpcy5hc3NlcnQoXG4gICAgICAgICAgICBlcnIgaW5zdGFuY2VvZiBjb25zdHJ1Y3RvclxuICAgICAgICAgICwgJ2V4cGVjdGVkICN7dGhpc30gdG8gdGhyb3cgI3tleHB9IGJ1dCAje2FjdH0gd2FzIHRocm93bidcbiAgICAgICAgICAsICdleHBlY3RlZCAje3RoaXN9IHRvIG5vdCB0aHJvdyAje2V4cH0gYnV0ICN7YWN0fSB3YXMgdGhyb3duJ1xuICAgICAgICAgICwgbmFtZVxuICAgICAgICAgICwgKGVyciBpbnN0YW5jZW9mIEVycm9yID8gZXJyLnRvU3RyaW5nKCkgOiBlcnIpXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKCFlcnJNc2cpIHtcbiAgICAgICAgICBmbGFnKHRoaXMsICdvYmplY3QnLCBlcnIpO1xuICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIG5leHQsIGNoZWNrIG1lc3NhZ2VcbiAgICAgIHZhciBtZXNzYWdlID0gJ2Vycm9yJyA9PT0gXy50eXBlKGVycikgJiYgXCJtZXNzYWdlXCIgaW4gZXJyXG4gICAgICAgID8gZXJyLm1lc3NhZ2VcbiAgICAgICAgOiAnJyArIGVycjtcblxuICAgICAgaWYgKChtZXNzYWdlICE9IG51bGwpICYmIGVyck1zZyAmJiBlcnJNc2cgaW5zdGFuY2VvZiBSZWdFeHApIHtcbiAgICAgICAgdGhpcy5hc3NlcnQoXG4gICAgICAgICAgICBlcnJNc2cuZXhlYyhtZXNzYWdlKVxuICAgICAgICAgICwgJ2V4cGVjdGVkICN7dGhpc30gdG8gdGhyb3cgZXJyb3IgbWF0Y2hpbmcgI3tleHB9IGJ1dCBnb3QgI3thY3R9J1xuICAgICAgICAgICwgJ2V4cGVjdGVkICN7dGhpc30gdG8gdGhyb3cgZXJyb3Igbm90IG1hdGNoaW5nICN7ZXhwfSdcbiAgICAgICAgICAsIGVyck1zZ1xuICAgICAgICAgICwgbWVzc2FnZVxuICAgICAgICApO1xuXG4gICAgICAgIGZsYWcodGhpcywgJ29iamVjdCcsIGVycik7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfSBlbHNlIGlmICgobWVzc2FnZSAhPSBudWxsKSAmJiBlcnJNc2cgJiYgJ3N0cmluZycgPT09IHR5cGVvZiBlcnJNc2cpIHtcbiAgICAgICAgdGhpcy5hc3NlcnQoXG4gICAgICAgICAgICB+bWVzc2FnZS5pbmRleE9mKGVyck1zZylcbiAgICAgICAgICAsICdleHBlY3RlZCAje3RoaXN9IHRvIHRocm93IGVycm9yIGluY2x1ZGluZyAje2V4cH0gYnV0IGdvdCAje2FjdH0nXG4gICAgICAgICAgLCAnZXhwZWN0ZWQgI3t0aGlzfSB0byB0aHJvdyBlcnJvciBub3QgaW5jbHVkaW5nICN7YWN0fSdcbiAgICAgICAgICAsIGVyck1zZ1xuICAgICAgICAgICwgbWVzc2FnZVxuICAgICAgICApO1xuXG4gICAgICAgIGZsYWcodGhpcywgJ29iamVjdCcsIGVycik7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3duID0gdHJ1ZTtcbiAgICAgICAgdGhyb3duRXJyb3IgPSBlcnI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGFjdHVhbGx5R290ID0gJydcbiAgICAgICwgZXhwZWN0ZWRUaHJvd24gPSBuYW1lICE9PSBudWxsXG4gICAgICAgID8gbmFtZVxuICAgICAgICA6IGRlc2lyZWRFcnJvclxuICAgICAgICAgID8gJyN7ZXhwfScgLy9fLmluc3BlY3QoZGVzaXJlZEVycm9yKVxuICAgICAgICAgIDogJ2FuIGVycm9yJztcblxuICAgIGlmICh0aHJvd24pIHtcbiAgICAgIGFjdHVhbGx5R290ID0gJyBidXQgI3thY3R9IHdhcyB0aHJvd24nXG4gICAgfVxuXG4gICAgdGhpcy5hc3NlcnQoXG4gICAgICAgIHRocm93biA9PT0gdHJ1ZVxuICAgICAgLCAnZXhwZWN0ZWQgI3t0aGlzfSB0byB0aHJvdyAnICsgZXhwZWN0ZWRUaHJvd24gKyBhY3R1YWxseUdvdFxuICAgICAgLCAnZXhwZWN0ZWQgI3t0aGlzfSB0byBub3QgdGhyb3cgJyArIGV4cGVjdGVkVGhyb3duICsgYWN0dWFsbHlHb3RcbiAgICAgICwgKGRlc2lyZWRFcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZGVzaXJlZEVycm9yLnRvU3RyaW5nKCkgOiBkZXNpcmVkRXJyb3IpXG4gICAgICAsICh0aHJvd25FcnJvciBpbnN0YW5jZW9mIEVycm9yID8gdGhyb3duRXJyb3IudG9TdHJpbmcoKSA6IHRocm93bkVycm9yKVxuICAgICk7XG5cbiAgICBmbGFnKHRoaXMsICdvYmplY3QnLCB0aHJvd25FcnJvcik7XG4gIH07XG5cbiAgQXNzZXJ0aW9uLmFkZE1ldGhvZCgndGhyb3cnLCBhc3NlcnRUaHJvd3MpO1xuICBBc3NlcnRpb24uYWRkTWV0aG9kKCd0aHJvd3MnLCBhc3NlcnRUaHJvd3MpO1xuICBBc3NlcnRpb24uYWRkTWV0aG9kKCdUaHJvdycsIGFzc2VydFRocm93cyk7XG5cbiAgLyoqXG4gICAqICMjIyAucmVzcG9uZFRvKG1ldGhvZClcbiAgICpcbiAgICogQXNzZXJ0cyB0aGF0IHRoZSBvYmplY3Qgb3IgY2xhc3MgdGFyZ2V0IHdpbGwgcmVzcG9uZCB0byBhIG1ldGhvZC5cbiAgICpcbiAgICogICAgIEtsYXNzLnByb3RvdHlwZS5iYXIgPSBmdW5jdGlvbigpe307XG4gICAqICAgICBleHBlY3QoS2xhc3MpLnRvLnJlc3BvbmRUbygnYmFyJyk7XG4gICAqICAgICBleHBlY3Qob2JqKS50by5yZXNwb25kVG8oJ2JhcicpO1xuICAgKlxuICAgKiBUbyBjaGVjayBpZiBhIGNvbnN0cnVjdG9yIHdpbGwgcmVzcG9uZCB0byBhIHN0YXRpYyBmdW5jdGlvbixcbiAgICogc2V0IHRoZSBgaXRzZWxmYCBmbGFnLlxuICAgKlxuICAgKiAgICAgS2xhc3MuYmF6ID0gZnVuY3Rpb24oKXt9O1xuICAgKiAgICAgZXhwZWN0KEtsYXNzKS5pdHNlbGYudG8ucmVzcG9uZFRvKCdiYXonKTtcbiAgICpcbiAgICogQG5hbWUgcmVzcG9uZFRvXG4gICAqIEBhbGlhcyByZXNwb25kc1RvXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBtZXRob2RcbiAgICogQHBhcmFtIHtTdHJpbmd9IG1lc3NhZ2UgX29wdGlvbmFsX1xuICAgKiBAbmFtZXNwYWNlIEJERFxuICAgKiBAYXBpIHB1YmxpY1xuICAgKi9cblxuICBmdW5jdGlvbiByZXNwb25kVG8gKG1ldGhvZCwgbXNnKSB7XG4gICAgaWYgKG1zZykgZmxhZyh0aGlzLCAnbWVzc2FnZScsIG1zZyk7XG4gICAgdmFyIG9iaiA9IGZsYWcodGhpcywgJ29iamVjdCcpXG4gICAgICAsIGl0c2VsZiA9IGZsYWcodGhpcywgJ2l0c2VsZicpXG4gICAgICAsIGNvbnRleHQgPSAoJ2Z1bmN0aW9uJyA9PT0gXy50eXBlKG9iaikgJiYgIWl0c2VsZilcbiAgICAgICAgPyBvYmoucHJvdG90eXBlW21ldGhvZF1cbiAgICAgICAgOiBvYmpbbWV0aG9kXTtcblxuICAgIHRoaXMuYXNzZXJ0KFxuICAgICAgICAnZnVuY3Rpb24nID09PSB0eXBlb2YgY29udGV4dFxuICAgICAgLCAnZXhwZWN0ZWQgI3t0aGlzfSB0byByZXNwb25kIHRvICcgKyBfLmluc3BlY3QobWV0aG9kKVxuICAgICAgLCAnZXhwZWN0ZWQgI3t0aGlzfSB0byBub3QgcmVzcG9uZCB0byAnICsgXy5pbnNwZWN0KG1ldGhvZClcbiAgICApO1xuICB9XG5cbiAgQXNzZXJ0aW9uLmFkZE1ldGhvZCgncmVzcG9uZFRvJywgcmVzcG9uZFRvKTtcbiAgQXNzZXJ0aW9uLmFkZE1ldGhvZCgncmVzcG9uZHNUbycsIHJlc3BvbmRUbyk7XG5cbiAgLyoqXG4gICAqICMjIyAuaXRzZWxmXG4gICAqXG4gICAqIFNldHMgdGhlIGBpdHNlbGZgIGZsYWcsIGxhdGVyIHVzZWQgYnkgdGhlIGByZXNwb25kVG9gIGFzc2VydGlvbi5cbiAgICpcbiAgICogICAgIGZ1bmN0aW9uIEZvbygpIHt9XG4gICAqICAgICBGb28uYmFyID0gZnVuY3Rpb24oKSB7fVxuICAgKiAgICAgRm9vLnByb3RvdHlwZS5iYXogPSBmdW5jdGlvbigpIHt9XG4gICAqXG4gICAqICAgICBleHBlY3QoRm9vKS5pdHNlbGYudG8ucmVzcG9uZFRvKCdiYXInKTtcbiAgICogICAgIGV4cGVjdChGb28pLml0c2VsZi5ub3QudG8ucmVzcG9uZFRvKCdiYXonKTtcbiAgICpcbiAgICogQG5hbWUgaXRzZWxmXG4gICAqIEBuYW1lc3BhY2UgQkREXG4gICAqIEBhcGkgcHVibGljXG4gICAqL1xuXG4gIEFzc2VydGlvbi5hZGRQcm9wZXJ0eSgnaXRzZWxmJywgZnVuY3Rpb24gKCkge1xuICAgIGZsYWcodGhpcywgJ2l0c2VsZicsIHRydWUpO1xuICB9KTtcblxuICAvKipcbiAgICogIyMjIC5zYXRpc2Z5KG1ldGhvZClcbiAgICpcbiAgICogQXNzZXJ0cyB0aGF0IHRoZSB0YXJnZXQgcGFzc2VzIGEgZ2l2ZW4gdHJ1dGggdGVzdC5cbiAgICpcbiAgICogICAgIGV4cGVjdCgxKS50by5zYXRpc2Z5KGZ1bmN0aW9uKG51bSkgeyByZXR1cm4gbnVtID4gMDsgfSk7XG4gICAqXG4gICAqIEBuYW1lIHNhdGlzZnlcbiAgICogQGFsaWFzIHNhdGlzZmllc1xuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBtYXRjaGVyXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBtZXNzYWdlIF9vcHRpb25hbF9cbiAgICogQG5hbWVzcGFjZSBCRERcbiAgICogQGFwaSBwdWJsaWNcbiAgICovXG5cbiAgZnVuY3Rpb24gc2F0aXNmeSAobWF0Y2hlciwgbXNnKSB7XG4gICAgaWYgKG1zZykgZmxhZyh0aGlzLCAnbWVzc2FnZScsIG1zZyk7XG4gICAgdmFyIG9iaiA9IGZsYWcodGhpcywgJ29iamVjdCcpO1xuICAgIHZhciByZXN1bHQgPSBtYXRjaGVyKG9iaik7XG4gICAgdGhpcy5hc3NlcnQoXG4gICAgICAgIHJlc3VsdFxuICAgICAgLCAnZXhwZWN0ZWQgI3t0aGlzfSB0byBzYXRpc2Z5ICcgKyBfLm9iakRpc3BsYXkobWF0Y2hlcilcbiAgICAgICwgJ2V4cGVjdGVkICN7dGhpc30gdG8gbm90IHNhdGlzZnknICsgXy5vYmpEaXNwbGF5KG1hdGNoZXIpXG4gICAgICAsIHRoaXMubmVnYXRlID8gZmFsc2UgOiB0cnVlXG4gICAgICAsIHJlc3VsdFxuICAgICk7XG4gIH1cblxuICBBc3NlcnRpb24uYWRkTWV0aG9kKCdzYXRpc2Z5Jywgc2F0aXNmeSk7XG4gIEFzc2VydGlvbi5hZGRNZXRob2QoJ3NhdGlzZmllcycsIHNhdGlzZnkpO1xuXG4gIC8qKlxuICAgKiAjIyMgLmNsb3NlVG8oZXhwZWN0ZWQsIGRlbHRhKVxuICAgKlxuICAgKiBBc3NlcnRzIHRoYXQgdGhlIHRhcmdldCBpcyBlcXVhbCBgZXhwZWN0ZWRgLCB0byB3aXRoaW4gYSArLy0gYGRlbHRhYCByYW5nZS5cbiAgICpcbiAgICogICAgIGV4cGVjdCgxLjUpLnRvLmJlLmNsb3NlVG8oMSwgMC41KTtcbiAgICpcbiAgICogQG5hbWUgY2xvc2VUb1xuICAgKiBAYWxpYXMgYXBwcm94aW1hdGVseVxuICAgKiBAcGFyYW0ge051bWJlcn0gZXhwZWN0ZWRcbiAgICogQHBhcmFtIHtOdW1iZXJ9IGRlbHRhXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBtZXNzYWdlIF9vcHRpb25hbF9cbiAgICogQG5hbWVzcGFjZSBCRERcbiAgICogQGFwaSBwdWJsaWNcbiAgICovXG5cbiAgZnVuY3Rpb24gY2xvc2VUbyhleHBlY3RlZCwgZGVsdGEsIG1zZykge1xuICAgIGlmIChtc2cpIGZsYWcodGhpcywgJ21lc3NhZ2UnLCBtc2cpO1xuICAgIHZhciBvYmogPSBmbGFnKHRoaXMsICdvYmplY3QnKTtcblxuICAgIG5ldyBBc3NlcnRpb24ob2JqLCBtc2cpLmlzLmEoJ251bWJlcicpO1xuICAgIGlmIChfLnR5cGUoZXhwZWN0ZWQpICE9PSAnbnVtYmVyJyB8fCBfLnR5cGUoZGVsdGEpICE9PSAnbnVtYmVyJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd0aGUgYXJndW1lbnRzIHRvIGNsb3NlVG8gb3IgYXBwcm94aW1hdGVseSBtdXN0IGJlIG51bWJlcnMnKTtcbiAgICB9XG5cbiAgICB0aGlzLmFzc2VydChcbiAgICAgICAgTWF0aC5hYnMob2JqIC0gZXhwZWN0ZWQpIDw9IGRlbHRhXG4gICAgICAsICdleHBlY3RlZCAje3RoaXN9IHRvIGJlIGNsb3NlIHRvICcgKyBleHBlY3RlZCArICcgKy8tICcgKyBkZWx0YVxuICAgICAgLCAnZXhwZWN0ZWQgI3t0aGlzfSBub3QgdG8gYmUgY2xvc2UgdG8gJyArIGV4cGVjdGVkICsgJyArLy0gJyArIGRlbHRhXG4gICAgKTtcbiAgfVxuXG4gIEFzc2VydGlvbi5hZGRNZXRob2QoJ2Nsb3NlVG8nLCBjbG9zZVRvKTtcbiAgQXNzZXJ0aW9uLmFkZE1ldGhvZCgnYXBwcm94aW1hdGVseScsIGNsb3NlVG8pO1xuXG4gIGZ1bmN0aW9uIGlzU3Vic2V0T2Yoc3Vic2V0LCBzdXBlcnNldCwgY21wKSB7XG4gICAgcmV0dXJuIHN1YnNldC5ldmVyeShmdW5jdGlvbihlbGVtKSB7XG4gICAgICBpZiAoIWNtcCkgcmV0dXJuIHN1cGVyc2V0LmluZGV4T2YoZWxlbSkgIT09IC0xO1xuXG4gICAgICByZXR1cm4gc3VwZXJzZXQuc29tZShmdW5jdGlvbihlbGVtMikge1xuICAgICAgICByZXR1cm4gY21wKGVsZW0sIGVsZW0yKTtcbiAgICAgIH0pO1xuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICogIyMjIC5tZW1iZXJzKHNldClcbiAgICpcbiAgICogQXNzZXJ0cyB0aGF0IHRoZSB0YXJnZXQgaXMgYSBzdXBlcnNldCBvZiBgc2V0YCxcbiAgICogb3IgdGhhdCB0aGUgdGFyZ2V0IGFuZCBgc2V0YCBoYXZlIHRoZSBzYW1lIHN0cmljdGx5LWVxdWFsICg9PT0pIG1lbWJlcnMuXG4gICAqIEFsdGVybmF0ZWx5LCBpZiB0aGUgYGRlZXBgIGZsYWcgaXMgc2V0LCBzZXQgbWVtYmVycyBhcmUgY29tcGFyZWQgZm9yIGRlZXBcbiAgICogZXF1YWxpdHkuXG4gICAqXG4gICAqICAgICBleHBlY3QoWzEsIDIsIDNdKS50by5pbmNsdWRlLm1lbWJlcnMoWzMsIDJdKTtcbiAgICogICAgIGV4cGVjdChbMSwgMiwgM10pLnRvLm5vdC5pbmNsdWRlLm1lbWJlcnMoWzMsIDIsIDhdKTtcbiAgICpcbiAgICogICAgIGV4cGVjdChbNCwgMl0pLnRvLmhhdmUubWVtYmVycyhbMiwgNF0pO1xuICAgKiAgICAgZXhwZWN0KFs1LCAyXSkudG8ubm90LmhhdmUubWVtYmVycyhbNSwgMiwgMV0pO1xuICAgKlxuICAgKiAgICAgZXhwZWN0KFt7IGlkOiAxIH1dKS50by5kZWVwLmluY2x1ZGUubWVtYmVycyhbeyBpZDogMSB9XSk7XG4gICAqXG4gICAqIEBuYW1lIG1lbWJlcnNcbiAgICogQHBhcmFtIHtBcnJheX0gc2V0XG4gICAqIEBwYXJhbSB7U3RyaW5nfSBtZXNzYWdlIF9vcHRpb25hbF9cbiAgICogQG5hbWVzcGFjZSBCRERcbiAgICogQGFwaSBwdWJsaWNcbiAgICovXG5cbiAgQXNzZXJ0aW9uLmFkZE1ldGhvZCgnbWVtYmVycycsIGZ1bmN0aW9uIChzdWJzZXQsIG1zZykge1xuICAgIGlmIChtc2cpIGZsYWcodGhpcywgJ21lc3NhZ2UnLCBtc2cpO1xuICAgIHZhciBvYmogPSBmbGFnKHRoaXMsICdvYmplY3QnKTtcblxuICAgIG5ldyBBc3NlcnRpb24ob2JqKS50by5iZS5hbignYXJyYXknKTtcbiAgICBuZXcgQXNzZXJ0aW9uKHN1YnNldCkudG8uYmUuYW4oJ2FycmF5Jyk7XG5cbiAgICB2YXIgY21wID0gZmxhZyh0aGlzLCAnZGVlcCcpID8gXy5lcWwgOiB1bmRlZmluZWQ7XG5cbiAgICBpZiAoZmxhZyh0aGlzLCAnY29udGFpbnMnKSkge1xuICAgICAgcmV0dXJuIHRoaXMuYXNzZXJ0KFxuICAgICAgICAgIGlzU3Vic2V0T2Yoc3Vic2V0LCBvYmosIGNtcClcbiAgICAgICAgLCAnZXhwZWN0ZWQgI3t0aGlzfSB0byBiZSBhIHN1cGVyc2V0IG9mICN7YWN0fSdcbiAgICAgICAgLCAnZXhwZWN0ZWQgI3t0aGlzfSB0byBub3QgYmUgYSBzdXBlcnNldCBvZiAje2FjdH0nXG4gICAgICAgICwgb2JqXG4gICAgICAgICwgc3Vic2V0XG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMuYXNzZXJ0KFxuICAgICAgICBpc1N1YnNldE9mKG9iaiwgc3Vic2V0LCBjbXApICYmIGlzU3Vic2V0T2Yoc3Vic2V0LCBvYmosIGNtcClcbiAgICAgICAgLCAnZXhwZWN0ZWQgI3t0aGlzfSB0byBoYXZlIHRoZSBzYW1lIG1lbWJlcnMgYXMgI3thY3R9J1xuICAgICAgICAsICdleHBlY3RlZCAje3RoaXN9IHRvIG5vdCBoYXZlIHRoZSBzYW1lIG1lbWJlcnMgYXMgI3thY3R9J1xuICAgICAgICAsIG9ialxuICAgICAgICAsIHN1YnNldFxuICAgICk7XG4gIH0pO1xuXG4gIC8qKlxuICAgKiAjIyMgLm9uZU9mKGxpc3QpXG4gICAqXG4gICAqIEFzc2VydCB0aGF0IGEgdmFsdWUgYXBwZWFycyBzb21ld2hlcmUgaW4gdGhlIHRvcCBsZXZlbCBvZiBhcnJheSBgbGlzdGAuXG4gICAqXG4gICAqICAgICBleHBlY3QoJ2EnKS50by5iZS5vbmVPZihbJ2EnLCAnYicsICdjJ10pO1xuICAgKiAgICAgZXhwZWN0KDkpLnRvLm5vdC5iZS5vbmVPZihbJ3onXSk7XG4gICAqICAgICBleHBlY3QoWzNdKS50by5ub3QuYmUub25lT2YoWzEsIDIsIFszXV0pO1xuICAgKlxuICAgKiAgICAgdmFyIHRocmVlID0gWzNdO1xuICAgKiAgICAgLy8gZm9yIG9iamVjdC10eXBlcywgY29udGVudHMgYXJlIG5vdCBjb21wYXJlZFxuICAgKiAgICAgZXhwZWN0KHRocmVlKS50by5ub3QuYmUub25lT2YoWzEsIDIsIFszXV0pO1xuICAgKiAgICAgLy8gY29tcGFyaW5nIHJlZmVyZW5jZXMgd29ya3NcbiAgICogICAgIGV4cGVjdCh0aHJlZSkudG8uYmUub25lT2YoWzEsIDIsIHRocmVlXSk7XG4gICAqXG4gICAqIEBuYW1lIG9uZU9mXG4gICAqIEBwYXJhbSB7QXJyYXk8Kj59IGxpc3RcbiAgICogQHBhcmFtIHtTdHJpbmd9IG1lc3NhZ2UgX29wdGlvbmFsX1xuICAgKiBAbmFtZXNwYWNlIEJERFxuICAgKiBAYXBpIHB1YmxpY1xuICAgKi9cblxuICBmdW5jdGlvbiBvbmVPZiAobGlzdCwgbXNnKSB7XG4gICAgaWYgKG1zZykgZmxhZyh0aGlzLCAnbWVzc2FnZScsIG1zZyk7XG4gICAgdmFyIGV4cGVjdGVkID0gZmxhZyh0aGlzLCAnb2JqZWN0Jyk7XG4gICAgbmV3IEFzc2VydGlvbihsaXN0KS50by5iZS5hbignYXJyYXknKTtcblxuICAgIHRoaXMuYXNzZXJ0KFxuICAgICAgICBsaXN0LmluZGV4T2YoZXhwZWN0ZWQpID4gLTFcbiAgICAgICwgJ2V4cGVjdGVkICN7dGhpc30gdG8gYmUgb25lIG9mICN7ZXhwfSdcbiAgICAgICwgJ2V4cGVjdGVkICN7dGhpc30gdG8gbm90IGJlIG9uZSBvZiAje2V4cH0nXG4gICAgICAsIGxpc3RcbiAgICAgICwgZXhwZWN0ZWRcbiAgICApO1xuICB9XG5cbiAgQXNzZXJ0aW9uLmFkZE1ldGhvZCgnb25lT2YnLCBvbmVPZik7XG5cblxuICAvKipcbiAgICogIyMjIC5jaGFuZ2UoZnVuY3Rpb24pXG4gICAqXG4gICAqIEFzc2VydHMgdGhhdCBhIGZ1bmN0aW9uIGNoYW5nZXMgYW4gb2JqZWN0IHByb3BlcnR5XG4gICAqXG4gICAqICAgICB2YXIgb2JqID0geyB2YWw6IDEwIH07XG4gICAqICAgICB2YXIgZm4gPSBmdW5jdGlvbigpIHsgb2JqLnZhbCArPSAzIH07XG4gICAqICAgICB2YXIgbm9DaGFuZ2VGbiA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gJ2ZvbycgKyAnYmFyJzsgfVxuICAgKiAgICAgZXhwZWN0KGZuKS50by5jaGFuZ2Uob2JqLCAndmFsJyk7XG4gICAqICAgICBleHBlY3Qobm9DaGFuZ2VGbikudG8ubm90LmNoYW5nZShvYmosICd2YWwnKVxuICAgKlxuICAgKiBAbmFtZSBjaGFuZ2VcbiAgICogQGFsaWFzIGNoYW5nZXNcbiAgICogQGFsaWFzIENoYW5nZVxuICAgKiBAcGFyYW0ge1N0cmluZ30gb2JqZWN0XG4gICAqIEBwYXJhbSB7U3RyaW5nfSBwcm9wZXJ0eSBuYW1lXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBtZXNzYWdlIF9vcHRpb25hbF9cbiAgICogQG5hbWVzcGFjZSBCRERcbiAgICogQGFwaSBwdWJsaWNcbiAgICovXG5cbiAgZnVuY3Rpb24gYXNzZXJ0Q2hhbmdlcyAob2JqZWN0LCBwcm9wLCBtc2cpIHtcbiAgICBpZiAobXNnKSBmbGFnKHRoaXMsICdtZXNzYWdlJywgbXNnKTtcbiAgICB2YXIgZm4gPSBmbGFnKHRoaXMsICdvYmplY3QnKTtcbiAgICBuZXcgQXNzZXJ0aW9uKG9iamVjdCwgbXNnKS50by5oYXZlLnByb3BlcnR5KHByb3ApO1xuICAgIG5ldyBBc3NlcnRpb24oZm4pLmlzLmEoJ2Z1bmN0aW9uJyk7XG5cbiAgICB2YXIgaW5pdGlhbCA9IG9iamVjdFtwcm9wXTtcbiAgICBmbigpO1xuXG4gICAgdGhpcy5hc3NlcnQoXG4gICAgICBpbml0aWFsICE9PSBvYmplY3RbcHJvcF1cbiAgICAgICwgJ2V4cGVjdGVkIC4nICsgcHJvcCArICcgdG8gY2hhbmdlJ1xuICAgICAgLCAnZXhwZWN0ZWQgLicgKyBwcm9wICsgJyB0byBub3QgY2hhbmdlJ1xuICAgICk7XG4gIH1cblxuICBBc3NlcnRpb24uYWRkQ2hhaW5hYmxlTWV0aG9kKCdjaGFuZ2UnLCBhc3NlcnRDaGFuZ2VzKTtcbiAgQXNzZXJ0aW9uLmFkZENoYWluYWJsZU1ldGhvZCgnY2hhbmdlcycsIGFzc2VydENoYW5nZXMpO1xuXG4gIC8qKlxuICAgKiAjIyMgLmluY3JlYXNlKGZ1bmN0aW9uKVxuICAgKlxuICAgKiBBc3NlcnRzIHRoYXQgYSBmdW5jdGlvbiBpbmNyZWFzZXMgYW4gb2JqZWN0IHByb3BlcnR5XG4gICAqXG4gICAqICAgICB2YXIgb2JqID0geyB2YWw6IDEwIH07XG4gICAqICAgICB2YXIgZm4gPSBmdW5jdGlvbigpIHsgb2JqLnZhbCA9IDE1IH07XG4gICAqICAgICBleHBlY3QoZm4pLnRvLmluY3JlYXNlKG9iaiwgJ3ZhbCcpO1xuICAgKlxuICAgKiBAbmFtZSBpbmNyZWFzZVxuICAgKiBAYWxpYXMgaW5jcmVhc2VzXG4gICAqIEBhbGlhcyBJbmNyZWFzZVxuICAgKiBAcGFyYW0ge1N0cmluZ30gb2JqZWN0XG4gICAqIEBwYXJhbSB7U3RyaW5nfSBwcm9wZXJ0eSBuYW1lXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBtZXNzYWdlIF9vcHRpb25hbF9cbiAgICogQG5hbWVzcGFjZSBCRERcbiAgICogQGFwaSBwdWJsaWNcbiAgICovXG5cbiAgZnVuY3Rpb24gYXNzZXJ0SW5jcmVhc2VzIChvYmplY3QsIHByb3AsIG1zZykge1xuICAgIGlmIChtc2cpIGZsYWcodGhpcywgJ21lc3NhZ2UnLCBtc2cpO1xuICAgIHZhciBmbiA9IGZsYWcodGhpcywgJ29iamVjdCcpO1xuICAgIG5ldyBBc3NlcnRpb24ob2JqZWN0LCBtc2cpLnRvLmhhdmUucHJvcGVydHkocHJvcCk7XG4gICAgbmV3IEFzc2VydGlvbihmbikuaXMuYSgnZnVuY3Rpb24nKTtcblxuICAgIHZhciBpbml0aWFsID0gb2JqZWN0W3Byb3BdO1xuICAgIGZuKCk7XG5cbiAgICB0aGlzLmFzc2VydChcbiAgICAgIG9iamVjdFtwcm9wXSAtIGluaXRpYWwgPiAwXG4gICAgICAsICdleHBlY3RlZCAuJyArIHByb3AgKyAnIHRvIGluY3JlYXNlJ1xuICAgICAgLCAnZXhwZWN0ZWQgLicgKyBwcm9wICsgJyB0byBub3QgaW5jcmVhc2UnXG4gICAgKTtcbiAgfVxuXG4gIEFzc2VydGlvbi5hZGRDaGFpbmFibGVNZXRob2QoJ2luY3JlYXNlJywgYXNzZXJ0SW5jcmVhc2VzKTtcbiAgQXNzZXJ0aW9uLmFkZENoYWluYWJsZU1ldGhvZCgnaW5jcmVhc2VzJywgYXNzZXJ0SW5jcmVhc2VzKTtcblxuICAvKipcbiAgICogIyMjIC5kZWNyZWFzZShmdW5jdGlvbilcbiAgICpcbiAgICogQXNzZXJ0cyB0aGF0IGEgZnVuY3Rpb24gZGVjcmVhc2VzIGFuIG9iamVjdCBwcm9wZXJ0eVxuICAgKlxuICAgKiAgICAgdmFyIG9iaiA9IHsgdmFsOiAxMCB9O1xuICAgKiAgICAgdmFyIGZuID0gZnVuY3Rpb24oKSB7IG9iai52YWwgPSA1IH07XG4gICAqICAgICBleHBlY3QoZm4pLnRvLmRlY3JlYXNlKG9iaiwgJ3ZhbCcpO1xuICAgKlxuICAgKiBAbmFtZSBkZWNyZWFzZVxuICAgKiBAYWxpYXMgZGVjcmVhc2VzXG4gICAqIEBhbGlhcyBEZWNyZWFzZVxuICAgKiBAcGFyYW0ge1N0cmluZ30gb2JqZWN0XG4gICAqIEBwYXJhbSB7U3RyaW5nfSBwcm9wZXJ0eSBuYW1lXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBtZXNzYWdlIF9vcHRpb25hbF9cbiAgICogQG5hbWVzcGFjZSBCRERcbiAgICogQGFwaSBwdWJsaWNcbiAgICovXG5cbiAgZnVuY3Rpb24gYXNzZXJ0RGVjcmVhc2VzIChvYmplY3QsIHByb3AsIG1zZykge1xuICAgIGlmIChtc2cpIGZsYWcodGhpcywgJ21lc3NhZ2UnLCBtc2cpO1xuICAgIHZhciBmbiA9IGZsYWcodGhpcywgJ29iamVjdCcpO1xuICAgIG5ldyBBc3NlcnRpb24ob2JqZWN0LCBtc2cpLnRvLmhhdmUucHJvcGVydHkocHJvcCk7XG4gICAgbmV3IEFzc2VydGlvbihmbikuaXMuYSgnZnVuY3Rpb24nKTtcblxuICAgIHZhciBpbml0aWFsID0gb2JqZWN0W3Byb3BdO1xuICAgIGZuKCk7XG5cbiAgICB0aGlzLmFzc2VydChcbiAgICAgIG9iamVjdFtwcm9wXSAtIGluaXRpYWwgPCAwXG4gICAgICAsICdleHBlY3RlZCAuJyArIHByb3AgKyAnIHRvIGRlY3JlYXNlJ1xuICAgICAgLCAnZXhwZWN0ZWQgLicgKyBwcm9wICsgJyB0byBub3QgZGVjcmVhc2UnXG4gICAgKTtcbiAgfVxuXG4gIEFzc2VydGlvbi5hZGRDaGFpbmFibGVNZXRob2QoJ2RlY3JlYXNlJywgYXNzZXJ0RGVjcmVhc2VzKTtcbiAgQXNzZXJ0aW9uLmFkZENoYWluYWJsZU1ldGhvZCgnZGVjcmVhc2VzJywgYXNzZXJ0RGVjcmVhc2VzKTtcblxuICAvKipcbiAgICogIyMjIC5leHRlbnNpYmxlXG4gICAqXG4gICAqIEFzc2VydHMgdGhhdCB0aGUgdGFyZ2V0IGlzIGV4dGVuc2libGUgKGNhbiBoYXZlIG5ldyBwcm9wZXJ0aWVzIGFkZGVkIHRvXG4gICAqIGl0KS5cbiAgICpcbiAgICogICAgIHZhciBub25FeHRlbnNpYmxlT2JqZWN0ID0gT2JqZWN0LnByZXZlbnRFeHRlbnNpb25zKHt9KTtcbiAgICogICAgIHZhciBzZWFsZWRPYmplY3QgPSBPYmplY3Quc2VhbCh7fSk7XG4gICAqICAgICB2YXIgZnJvemVuT2JqZWN0ID0gT2JqZWN0LmZyZWV6ZSh7fSk7XG4gICAqXG4gICAqICAgICBleHBlY3Qoe30pLnRvLmJlLmV4dGVuc2libGU7XG4gICAqICAgICBleHBlY3Qobm9uRXh0ZW5zaWJsZU9iamVjdCkudG8ubm90LmJlLmV4dGVuc2libGU7XG4gICAqICAgICBleHBlY3Qoc2VhbGVkT2JqZWN0KS50by5ub3QuYmUuZXh0ZW5zaWJsZTtcbiAgICogICAgIGV4cGVjdChmcm96ZW5PYmplY3QpLnRvLm5vdC5iZS5leHRlbnNpYmxlO1xuICAgKlxuICAgKiBAbmFtZSBleHRlbnNpYmxlXG4gICAqIEBuYW1lc3BhY2UgQkREXG4gICAqIEBhcGkgcHVibGljXG4gICAqL1xuXG4gIEFzc2VydGlvbi5hZGRQcm9wZXJ0eSgnZXh0ZW5zaWJsZScsIGZ1bmN0aW9uKCkge1xuICAgIHZhciBvYmogPSBmbGFnKHRoaXMsICdvYmplY3QnKTtcblxuICAgIC8vIEluIEVTNSwgaWYgdGhlIGFyZ3VtZW50IHRvIHRoaXMgbWV0aG9kIGlzIG5vdCBhbiBvYmplY3QgKGEgcHJpbWl0aXZlKSwgdGhlbiBpdCB3aWxsIGNhdXNlIGEgVHlwZUVycm9yLlxuICAgIC8vIEluIEVTNiwgYSBub24tb2JqZWN0IGFyZ3VtZW50IHdpbGwgYmUgdHJlYXRlZCBhcyBpZiBpdCB3YXMgYSBub24tZXh0ZW5zaWJsZSBvcmRpbmFyeSBvYmplY3QsIHNpbXBseSByZXR1cm4gZmFsc2UuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvT2JqZWN0L2lzRXh0ZW5zaWJsZVxuICAgIC8vIFRoZSBmb2xsb3dpbmcgcHJvdmlkZXMgRVM2IGJlaGF2aW9yIHdoZW4gYSBUeXBlRXJyb3IgaXMgdGhyb3duIHVuZGVyIEVTNS5cblxuICAgIHZhciBpc0V4dGVuc2libGU7XG5cbiAgICB0cnkge1xuICAgICAgaXNFeHRlbnNpYmxlID0gT2JqZWN0LmlzRXh0ZW5zaWJsZShvYmopO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgaWYgKGVyciBpbnN0YW5jZW9mIFR5cGVFcnJvcikgaXNFeHRlbnNpYmxlID0gZmFsc2U7XG4gICAgICBlbHNlIHRocm93IGVycjtcbiAgICB9XG5cbiAgICB0aGlzLmFzc2VydChcbiAgICAgIGlzRXh0ZW5zaWJsZVxuICAgICAgLCAnZXhwZWN0ZWQgI3t0aGlzfSB0byBiZSBleHRlbnNpYmxlJ1xuICAgICAgLCAnZXhwZWN0ZWQgI3t0aGlzfSB0byBub3QgYmUgZXh0ZW5zaWJsZSdcbiAgICApO1xuICB9KTtcblxuICAvKipcbiAgICogIyMjIC5zZWFsZWRcbiAgICpcbiAgICogQXNzZXJ0cyB0aGF0IHRoZSB0YXJnZXQgaXMgc2VhbGVkIChjYW5ub3QgaGF2ZSBuZXcgcHJvcGVydGllcyBhZGRlZCB0byBpdFxuICAgKiBhbmQgaXRzIGV4aXN0aW5nIHByb3BlcnRpZXMgY2Fubm90IGJlIHJlbW92ZWQpLlxuICAgKlxuICAgKiAgICAgdmFyIHNlYWxlZE9iamVjdCA9IE9iamVjdC5zZWFsKHt9KTtcbiAgICogICAgIHZhciBmcm96ZW5PYmplY3QgPSBPYmplY3QuZnJlZXplKHt9KTtcbiAgICpcbiAgICogICAgIGV4cGVjdChzZWFsZWRPYmplY3QpLnRvLmJlLnNlYWxlZDtcbiAgICogICAgIGV4cGVjdChmcm96ZW5PYmplY3QpLnRvLmJlLnNlYWxlZDtcbiAgICogICAgIGV4cGVjdCh7fSkudG8ubm90LmJlLnNlYWxlZDtcbiAgICpcbiAgICogQG5hbWUgc2VhbGVkXG4gICAqIEBuYW1lc3BhY2UgQkREXG4gICAqIEBhcGkgcHVibGljXG4gICAqL1xuXG4gIEFzc2VydGlvbi5hZGRQcm9wZXJ0eSgnc2VhbGVkJywgZnVuY3Rpb24oKSB7XG4gICAgdmFyIG9iaiA9IGZsYWcodGhpcywgJ29iamVjdCcpO1xuXG4gICAgLy8gSW4gRVM1LCBpZiB0aGUgYXJndW1lbnQgdG8gdGhpcyBtZXRob2QgaXMgbm90IGFuIG9iamVjdCAoYSBwcmltaXRpdmUpLCB0aGVuIGl0IHdpbGwgY2F1c2UgYSBUeXBlRXJyb3IuXG4gICAgLy8gSW4gRVM2LCBhIG5vbi1vYmplY3QgYXJndW1lbnQgd2lsbCBiZSB0cmVhdGVkIGFzIGlmIGl0IHdhcyBhIHNlYWxlZCBvcmRpbmFyeSBvYmplY3QsIHNpbXBseSByZXR1cm4gdHJ1ZS5cbiAgICAvLyBTZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvT2JqZWN0L2lzU2VhbGVkXG4gICAgLy8gVGhlIGZvbGxvd2luZyBwcm92aWRlcyBFUzYgYmVoYXZpb3Igd2hlbiBhIFR5cGVFcnJvciBpcyB0aHJvd24gdW5kZXIgRVM1LlxuXG4gICAgdmFyIGlzU2VhbGVkO1xuXG4gICAgdHJ5IHtcbiAgICAgIGlzU2VhbGVkID0gT2JqZWN0LmlzU2VhbGVkKG9iaik7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBpZiAoZXJyIGluc3RhbmNlb2YgVHlwZUVycm9yKSBpc1NlYWxlZCA9IHRydWU7XG4gICAgICBlbHNlIHRocm93IGVycjtcbiAgICB9XG5cbiAgICB0aGlzLmFzc2VydChcbiAgICAgIGlzU2VhbGVkXG4gICAgICAsICdleHBlY3RlZCAje3RoaXN9IHRvIGJlIHNlYWxlZCdcbiAgICAgICwgJ2V4cGVjdGVkICN7dGhpc30gdG8gbm90IGJlIHNlYWxlZCdcbiAgICApO1xuICB9KTtcblxuICAvKipcbiAgICogIyMjIC5mcm96ZW5cbiAgICpcbiAgICogQXNzZXJ0cyB0aGF0IHRoZSB0YXJnZXQgaXMgZnJvemVuIChjYW5ub3QgaGF2ZSBuZXcgcHJvcGVydGllcyBhZGRlZCB0byBpdFxuICAgKiBhbmQgaXRzIGV4aXN0aW5nIHByb3BlcnRpZXMgY2Fubm90IGJlIG1vZGlmaWVkKS5cbiAgICpcbiAgICogICAgIHZhciBmcm96ZW5PYmplY3QgPSBPYmplY3QuZnJlZXplKHt9KTtcbiAgICpcbiAgICogICAgIGV4cGVjdChmcm96ZW5PYmplY3QpLnRvLmJlLmZyb3plbjtcbiAgICogICAgIGV4cGVjdCh7fSkudG8ubm90LmJlLmZyb3plbjtcbiAgICpcbiAgICogQG5hbWUgZnJvemVuXG4gICAqIEBuYW1lc3BhY2UgQkREXG4gICAqIEBhcGkgcHVibGljXG4gICAqL1xuXG4gIEFzc2VydGlvbi5hZGRQcm9wZXJ0eSgnZnJvemVuJywgZnVuY3Rpb24oKSB7XG4gICAgdmFyIG9iaiA9IGZsYWcodGhpcywgJ29iamVjdCcpO1xuXG4gICAgLy8gSW4gRVM1LCBpZiB0aGUgYXJndW1lbnQgdG8gdGhpcyBtZXRob2QgaXMgbm90IGFuIG9iamVjdCAoYSBwcmltaXRpdmUpLCB0aGVuIGl0IHdpbGwgY2F1c2UgYSBUeXBlRXJyb3IuXG4gICAgLy8gSW4gRVM2LCBhIG5vbi1vYmplY3QgYXJndW1lbnQgd2lsbCBiZSB0cmVhdGVkIGFzIGlmIGl0IHdhcyBhIGZyb3plbiBvcmRpbmFyeSBvYmplY3QsIHNpbXBseSByZXR1cm4gdHJ1ZS5cbiAgICAvLyBTZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvT2JqZWN0L2lzRnJvemVuXG4gICAgLy8gVGhlIGZvbGxvd2luZyBwcm92aWRlcyBFUzYgYmVoYXZpb3Igd2hlbiBhIFR5cGVFcnJvciBpcyB0aHJvd24gdW5kZXIgRVM1LlxuXG4gICAgdmFyIGlzRnJvemVuO1xuXG4gICAgdHJ5IHtcbiAgICAgIGlzRnJvemVuID0gT2JqZWN0LmlzRnJvemVuKG9iaik7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBpZiAoZXJyIGluc3RhbmNlb2YgVHlwZUVycm9yKSBpc0Zyb3plbiA9IHRydWU7XG4gICAgICBlbHNlIHRocm93IGVycjtcbiAgICB9XG5cbiAgICB0aGlzLmFzc2VydChcbiAgICAgIGlzRnJvemVuXG4gICAgICAsICdleHBlY3RlZCAje3RoaXN9IHRvIGJlIGZyb3plbidcbiAgICAgICwgJ2V4cGVjdGVkICN7dGhpc30gdG8gbm90IGJlIGZyb3plbidcbiAgICApO1xuICB9KTtcbn07XG4iLCIvKiFcbiAqIGNoYWlcbiAqIENvcHlyaWdodChjKSAyMDExLTIwMTQgSmFrZSBMdWVyIDxqYWtlQGFsb2dpY2FscGFyYWRveC5jb20+XG4gKiBNSVQgTGljZW5zZWRcbiAqL1xuXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGNoYWksIHV0aWwpIHtcblxuICAvKiFcbiAgICogQ2hhaSBkZXBlbmRlbmNpZXMuXG4gICAqL1xuXG4gIHZhciBBc3NlcnRpb24gPSBjaGFpLkFzc2VydGlvblxuICAgICwgZmxhZyA9IHV0aWwuZmxhZztcblxuICAvKiFcbiAgICogTW9kdWxlIGV4cG9ydC5cbiAgICovXG5cbiAgLyoqXG4gICAqICMjIyBhc3NlcnQoZXhwcmVzc2lvbiwgbWVzc2FnZSlcbiAgICpcbiAgICogV3JpdGUgeW91ciBvd24gdGVzdCBleHByZXNzaW9ucy5cbiAgICpcbiAgICogICAgIGFzc2VydCgnZm9vJyAhPT0gJ2JhcicsICdmb28gaXMgbm90IGJhcicpO1xuICAgKiAgICAgYXNzZXJ0KEFycmF5LmlzQXJyYXkoW10pLCAnZW1wdHkgYXJyYXlzIGFyZSBhcnJheXMnKTtcbiAgICpcbiAgICogQHBhcmFtIHtNaXhlZH0gZXhwcmVzc2lvbiB0byB0ZXN0IGZvciB0cnV0aGluZXNzXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBtZXNzYWdlIHRvIGRpc3BsYXkgb24gZXJyb3JcbiAgICogQG5hbWUgYXNzZXJ0XG4gICAqIEBuYW1lc3BhY2UgQXNzZXJ0XG4gICAqIEBhcGkgcHVibGljXG4gICAqL1xuXG4gIHZhciBhc3NlcnQgPSBjaGFpLmFzc2VydCA9IGZ1bmN0aW9uIChleHByZXNzLCBlcnJtc2cpIHtcbiAgICB2YXIgdGVzdCA9IG5ldyBBc3NlcnRpb24obnVsbCwgbnVsbCwgY2hhaS5hc3NlcnQpO1xuICAgIHRlc3QuYXNzZXJ0KFxuICAgICAgICBleHByZXNzXG4gICAgICAsIGVycm1zZ1xuICAgICAgLCAnWyBuZWdhdGlvbiBtZXNzYWdlIHVuYXZhaWxhYmxlIF0nXG4gICAgKTtcbiAgfTtcblxuICAvKipcbiAgICogIyMjIC5mYWlsKGFjdHVhbCwgZXhwZWN0ZWQsIFttZXNzYWdlXSwgW29wZXJhdG9yXSlcbiAgICpcbiAgICogVGhyb3cgYSBmYWlsdXJlLiBOb2RlLmpzIGBhc3NlcnRgIG1vZHVsZS1jb21wYXRpYmxlLlxuICAgKlxuICAgKiBAbmFtZSBmYWlsXG4gICAqIEBwYXJhbSB7TWl4ZWR9IGFjdHVhbFxuICAgKiBAcGFyYW0ge01peGVkfSBleHBlY3RlZFxuICAgKiBAcGFyYW0ge1N0cmluZ30gbWVzc2FnZVxuICAgKiBAcGFyYW0ge1N0cmluZ30gb3BlcmF0b3JcbiAgICogQG5hbWVzcGFjZSBBc3NlcnRcbiAgICogQGFwaSBwdWJsaWNcbiAgICovXG5cbiAgYXNzZXJ0LmZhaWwgPSBmdW5jdGlvbiAoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSwgb3BlcmF0b3IpIHtcbiAgICBtZXNzYWdlID0gbWVzc2FnZSB8fCAnYXNzZXJ0LmZhaWwoKSc7XG4gICAgdGhyb3cgbmV3IGNoYWkuQXNzZXJ0aW9uRXJyb3IobWVzc2FnZSwge1xuICAgICAgICBhY3R1YWw6IGFjdHVhbFxuICAgICAgLCBleHBlY3RlZDogZXhwZWN0ZWRcbiAgICAgICwgb3BlcmF0b3I6IG9wZXJhdG9yXG4gICAgfSwgYXNzZXJ0LmZhaWwpO1xuICB9O1xuXG4gIC8qKlxuICAgKiAjIyMgLmlzT2sob2JqZWN0LCBbbWVzc2FnZV0pXG4gICAqXG4gICAqIEFzc2VydHMgdGhhdCBgb2JqZWN0YCBpcyB0cnV0aHkuXG4gICAqXG4gICAqICAgICBhc3NlcnQuaXNPaygnZXZlcnl0aGluZycsICdldmVyeXRoaW5nIGlzIG9rJyk7XG4gICAqICAgICBhc3NlcnQuaXNPayhmYWxzZSwgJ3RoaXMgd2lsbCBmYWlsJyk7XG4gICAqXG4gICAqIEBuYW1lIGlzT2tcbiAgICogQGFsaWFzIG9rXG4gICAqIEBwYXJhbSB7TWl4ZWR9IG9iamVjdCB0byB0ZXN0XG4gICAqIEBwYXJhbSB7U3RyaW5nfSBtZXNzYWdlXG4gICAqIEBuYW1lc3BhY2UgQXNzZXJ0XG4gICAqIEBhcGkgcHVibGljXG4gICAqL1xuXG4gIGFzc2VydC5pc09rID0gZnVuY3Rpb24gKHZhbCwgbXNnKSB7XG4gICAgbmV3IEFzc2VydGlvbih2YWwsIG1zZykuaXMub2s7XG4gIH07XG5cbiAgLyoqXG4gICAqICMjIyAuaXNOb3RPayhvYmplY3QsIFttZXNzYWdlXSlcbiAgICpcbiAgICogQXNzZXJ0cyB0aGF0IGBvYmplY3RgIGlzIGZhbHN5LlxuICAgKlxuICAgKiAgICAgYXNzZXJ0LmlzTm90T2soJ2V2ZXJ5dGhpbmcnLCAndGhpcyB3aWxsIGZhaWwnKTtcbiAgICogICAgIGFzc2VydC5pc05vdE9rKGZhbHNlLCAndGhpcyB3aWxsIHBhc3MnKTtcbiAgICpcbiAgICogQG5hbWUgaXNOb3RPa1xuICAgKiBAYWxpYXMgbm90T2tcbiAgICogQHBhcmFtIHtNaXhlZH0gb2JqZWN0IHRvIHRlc3RcbiAgICogQHBhcmFtIHtTdHJpbmd9IG1lc3NhZ2VcbiAgICogQG5hbWVzcGFjZSBBc3NlcnRcbiAgICogQGFwaSBwdWJsaWNcbiAgICovXG5cbiAgYXNzZXJ0LmlzTm90T2sgPSBmdW5jdGlvbiAodmFsLCBtc2cpIHtcbiAgICBuZXcgQXNzZXJ0aW9uKHZhbCwgbXNnKS5pcy5ub3Qub2s7XG4gIH07XG5cbiAgLyoqXG4gICAqICMjIyAuZXF1YWwoYWN0dWFsLCBleHBlY3RlZCwgW21lc3NhZ2VdKVxuICAgKlxuICAgKiBBc3NlcnRzIG5vbi1zdHJpY3QgZXF1YWxpdHkgKGA9PWApIG9mIGBhY3R1YWxgIGFuZCBgZXhwZWN0ZWRgLlxuICAgKlxuICAgKiAgICAgYXNzZXJ0LmVxdWFsKDMsICczJywgJz09IGNvZXJjZXMgdmFsdWVzIHRvIHN0cmluZ3MnKTtcbiAgICpcbiAgICogQG5hbWUgZXF1YWxcbiAgICogQHBhcmFtIHtNaXhlZH0gYWN0dWFsXG4gICAqIEBwYXJhbSB7TWl4ZWR9IGV4cGVjdGVkXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBtZXNzYWdlXG4gICAqIEBuYW1lc3BhY2UgQXNzZXJ0XG4gICAqIEBhcGkgcHVibGljXG4gICAqL1xuXG4gIGFzc2VydC5lcXVhbCA9IGZ1bmN0aW9uIChhY3QsIGV4cCwgbXNnKSB7XG4gICAgdmFyIHRlc3QgPSBuZXcgQXNzZXJ0aW9uKGFjdCwgbXNnLCBhc3NlcnQuZXF1YWwpO1xuXG4gICAgdGVzdC5hc3NlcnQoXG4gICAgICAgIGV4cCA9PSBmbGFnKHRlc3QsICdvYmplY3QnKVxuICAgICAgLCAnZXhwZWN0ZWQgI3t0aGlzfSB0byBlcXVhbCAje2V4cH0nXG4gICAgICAsICdleHBlY3RlZCAje3RoaXN9IHRvIG5vdCBlcXVhbCAje2FjdH0nXG4gICAgICAsIGV4cFxuICAgICAgLCBhY3RcbiAgICApO1xuICB9O1xuXG4gIC8qKlxuICAgKiAjIyMgLm5vdEVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIFttZXNzYWdlXSlcbiAgICpcbiAgICogQXNzZXJ0cyBub24tc3RyaWN0IGluZXF1YWxpdHkgKGAhPWApIG9mIGBhY3R1YWxgIGFuZCBgZXhwZWN0ZWRgLlxuICAgKlxuICAgKiAgICAgYXNzZXJ0Lm5vdEVxdWFsKDMsIDQsICd0aGVzZSBudW1iZXJzIGFyZSBub3QgZXF1YWwnKTtcbiAgICpcbiAgICogQG5hbWUgbm90RXF1YWxcbiAgICogQHBhcmFtIHtNaXhlZH0gYWN0dWFsXG4gICAqIEBwYXJhbSB7TWl4ZWR9IGV4cGVjdGVkXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBtZXNzYWdlXG4gICAqIEBuYW1lc3BhY2UgQXNzZXJ0XG4gICAqIEBhcGkgcHVibGljXG4gICAqL1xuXG4gIGFzc2VydC5ub3RFcXVhbCA9IGZ1bmN0aW9uIChhY3QsIGV4cCwgbXNnKSB7XG4gICAgdmFyIHRlc3QgPSBuZXcgQXNzZXJ0aW9uKGFjdCwgbXNnLCBhc3NlcnQubm90RXF1YWwpO1xuXG4gICAgdGVzdC5hc3NlcnQoXG4gICAgICAgIGV4cCAhPSBmbGFnKHRlc3QsICdvYmplY3QnKVxuICAgICAgLCAnZXhwZWN0ZWQgI3t0aGlzfSB0byBub3QgZXF1YWwgI3tleHB9J1xuICAgICAgLCAnZXhwZWN0ZWQgI3t0aGlzfSB0byBlcXVhbCAje2FjdH0nXG4gICAgICAsIGV4cFxuICAgICAgLCBhY3RcbiAgICApO1xuICB9O1xuXG4gIC8qKlxuICAgKiAjIyMgLnN0cmljdEVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIFttZXNzYWdlXSlcbiAgICpcbiAgICogQXNzZXJ0cyBzdHJpY3QgZXF1YWxpdHkgKGA9PT1gKSBvZiBgYWN0dWFsYCBhbmQgYGV4cGVjdGVkYC5cbiAgICpcbiAgICogICAgIGFzc2VydC5zdHJpY3RFcXVhbCh0cnVlLCB0cnVlLCAndGhlc2UgYm9vbGVhbnMgYXJlIHN0cmljdGx5IGVxdWFsJyk7XG4gICAqXG4gICAqIEBuYW1lIHN0cmljdEVxdWFsXG4gICAqIEBwYXJhbSB7TWl4ZWR9IGFjdHVhbFxuICAgKiBAcGFyYW0ge01peGVkfSBleHBlY3RlZFxuICAgKiBAcGFyYW0ge1N0cmluZ30gbWVzc2FnZVxuICAgKiBAbmFtZXNwYWNlIEFzc2VydFxuICAgKiBAYXBpIHB1YmxpY1xuICAgKi9cblxuICBhc3NlcnQuc3RyaWN0RXF1YWwgPSBmdW5jdGlvbiAoYWN0LCBleHAsIG1zZykge1xuICAgIG5ldyBBc3NlcnRpb24oYWN0LCBtc2cpLnRvLmVxdWFsKGV4cCk7XG4gIH07XG5cbiAgLyoqXG4gICAqICMjIyAubm90U3RyaWN0RXF1YWwoYWN0dWFsLCBleHBlY3RlZCwgW21lc3NhZ2VdKVxuICAgKlxuICAgKiBBc3NlcnRzIHN0cmljdCBpbmVxdWFsaXR5IChgIT09YCkgb2YgYGFjdHVhbGAgYW5kIGBleHBlY3RlZGAuXG4gICAqXG4gICAqICAgICBhc3NlcnQubm90U3RyaWN0RXF1YWwoMywgJzMnLCAnbm8gY29lcmNpb24gZm9yIHN0cmljdCBlcXVhbGl0eScpO1xuICAgKlxuICAgKiBAbmFtZSBub3RTdHJpY3RFcXVhbFxuICAgKiBAcGFyYW0ge01peGVkfSBhY3R1YWxcbiAgICogQHBhcmFtIHtNaXhlZH0gZXhwZWN0ZWRcbiAgICogQHBhcmFtIHtTdHJpbmd9IG1lc3NhZ2VcbiAgICogQG5hbWVzcGFjZSBBc3NlcnRcbiAgICogQGFwaSBwdWJsaWNcbiAgICovXG5cbiAgYXNzZXJ0Lm5vdFN0cmljdEVxdWFsID0gZnVuY3Rpb24gKGFjdCwgZXhwLCBtc2cpIHtcbiAgICBuZXcgQXNzZXJ0aW9uKGFjdCwgbXNnKS50by5ub3QuZXF1YWwoZXhwKTtcbiAgfTtcblxuICAvKipcbiAgICogIyMjIC5kZWVwRXF1YWwoYWN0dWFsLCBleHBlY3RlZCwgW21lc3NhZ2VdKVxuICAgKlxuICAgKiBBc3NlcnRzIHRoYXQgYGFjdHVhbGAgaXMgZGVlcGx5IGVxdWFsIHRvIGBleHBlY3RlZGAuXG4gICAqXG4gICAqICAgICBhc3NlcnQuZGVlcEVxdWFsKHsgdGVhOiAnZ3JlZW4nIH0sIHsgdGVhOiAnZ3JlZW4nIH0pO1xuICAgKlxuICAgKiBAbmFtZSBkZWVwRXF1YWxcbiAgICogQHBhcmFtIHtNaXhlZH0gYWN0dWFsXG4gICAqIEBwYXJhbSB7TWl4ZWR9IGV4cGVjdGVkXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBtZXNzYWdlXG4gICAqIEBuYW1lc3BhY2UgQXNzZXJ0XG4gICAqIEBhcGkgcHVibGljXG4gICAqL1xuXG4gIGFzc2VydC5kZWVwRXF1YWwgPSBmdW5jdGlvbiAoYWN0LCBleHAsIG1zZykge1xuICAgIG5ldyBBc3NlcnRpb24oYWN0LCBtc2cpLnRvLmVxbChleHApO1xuICB9O1xuXG4gIC8qKlxuICAgKiAjIyMgLm5vdERlZXBFcXVhbChhY3R1YWwsIGV4cGVjdGVkLCBbbWVzc2FnZV0pXG4gICAqXG4gICAqIEFzc2VydCB0aGF0IGBhY3R1YWxgIGlzIG5vdCBkZWVwbHkgZXF1YWwgdG8gYGV4cGVjdGVkYC5cbiAgICpcbiAgICogICAgIGFzc2VydC5ub3REZWVwRXF1YWwoeyB0ZWE6ICdncmVlbicgfSwgeyB0ZWE6ICdqYXNtaW5lJyB9KTtcbiAgICpcbiAgICogQG5hbWUgbm90RGVlcEVxdWFsXG4gICAqIEBwYXJhbSB7TWl4ZWR9IGFjdHVhbFxuICAgKiBAcGFyYW0ge01peGVkfSBleHBlY3RlZFxuICAgKiBAcGFyYW0ge1N0cmluZ30gbWVzc2FnZVxuICAgKiBAbmFtZXNwYWNlIEFzc2VydFxuICAgKiBAYXBpIHB1YmxpY1xuICAgKi9cblxuICBhc3NlcnQubm90RGVlcEVxdWFsID0gZnVuY3Rpb24gKGFjdCwgZXhwLCBtc2cpIHtcbiAgICBuZXcgQXNzZXJ0aW9uKGFjdCwgbXNnKS50by5ub3QuZXFsKGV4cCk7XG4gIH07XG5cbiAgIC8qKlxuICAgKiAjIyMgLmlzQWJvdmUodmFsdWVUb0NoZWNrLCB2YWx1ZVRvQmVBYm92ZSwgW21lc3NhZ2VdKVxuICAgKlxuICAgKiBBc3NlcnRzIGB2YWx1ZVRvQ2hlY2tgIGlzIHN0cmljdGx5IGdyZWF0ZXIgdGhhbiAoPikgYHZhbHVlVG9CZUFib3ZlYFxuICAgKlxuICAgKiAgICAgYXNzZXJ0LmlzQWJvdmUoNSwgMiwgJzUgaXMgc3RyaWN0bHkgZ3JlYXRlciB0aGFuIDInKTtcbiAgICpcbiAgICogQG5hbWUgaXNBYm92ZVxuICAgKiBAcGFyYW0ge01peGVkfSB2YWx1ZVRvQ2hlY2tcbiAgICogQHBhcmFtIHtNaXhlZH0gdmFsdWVUb0JlQWJvdmVcbiAgICogQHBhcmFtIHtTdHJpbmd9IG1lc3NhZ2VcbiAgICogQG5hbWVzcGFjZSBBc3NlcnRcbiAgICogQGFwaSBwdWJsaWNcbiAgICovXG5cbiAgYXNzZXJ0LmlzQWJvdmUgPSBmdW5jdGlvbiAodmFsLCBhYnYsIG1zZykge1xuICAgIG5ldyBBc3NlcnRpb24odmFsLCBtc2cpLnRvLmJlLmFib3ZlKGFidik7XG4gIH07XG5cbiAgIC8qKlxuICAgKiAjIyMgLmlzQXRMZWFzdCh2YWx1ZVRvQ2hlY2ssIHZhbHVlVG9CZUF0TGVhc3QsIFttZXNzYWdlXSlcbiAgICpcbiAgICogQXNzZXJ0cyBgdmFsdWVUb0NoZWNrYCBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gKD49KSBgdmFsdWVUb0JlQXRMZWFzdGBcbiAgICpcbiAgICogICAgIGFzc2VydC5pc0F0TGVhc3QoNSwgMiwgJzUgaXMgZ3JlYXRlciBvciBlcXVhbCB0byAyJyk7XG4gICAqICAgICBhc3NlcnQuaXNBdExlYXN0KDMsIDMsICczIGlzIGdyZWF0ZXIgb3IgZXF1YWwgdG8gMycpO1xuICAgKlxuICAgKiBAbmFtZSBpc0F0TGVhc3RcbiAgICogQHBhcmFtIHtNaXhlZH0gdmFsdWVUb0NoZWNrXG4gICAqIEBwYXJhbSB7TWl4ZWR9IHZhbHVlVG9CZUF0TGVhc3RcbiAgICogQHBhcmFtIHtTdHJpbmd9IG1lc3NhZ2VcbiAgICogQG5hbWVzcGFjZSBBc3NlcnRcbiAgICogQGFwaSBwdWJsaWNcbiAgICovXG5cbiAgYXNzZXJ0LmlzQXRMZWFzdCA9IGZ1bmN0aW9uICh2YWwsIGF0bHN0LCBtc2cpIHtcbiAgICBuZXcgQXNzZXJ0aW9uKHZhbCwgbXNnKS50by5iZS5sZWFzdChhdGxzdCk7XG4gIH07XG5cbiAgIC8qKlxuICAgKiAjIyMgLmlzQmVsb3codmFsdWVUb0NoZWNrLCB2YWx1ZVRvQmVCZWxvdywgW21lc3NhZ2VdKVxuICAgKlxuICAgKiBBc3NlcnRzIGB2YWx1ZVRvQ2hlY2tgIGlzIHN0cmljdGx5IGxlc3MgdGhhbiAoPCkgYHZhbHVlVG9CZUJlbG93YFxuICAgKlxuICAgKiAgICAgYXNzZXJ0LmlzQmVsb3coMywgNiwgJzMgaXMgc3RyaWN0bHkgbGVzcyB0aGFuIDYnKTtcbiAgICpcbiAgICogQG5hbWUgaXNCZWxvd1xuICAgKiBAcGFyYW0ge01peGVkfSB2YWx1ZVRvQ2hlY2tcbiAgICogQHBhcmFtIHtNaXhlZH0gdmFsdWVUb0JlQmVsb3dcbiAgICogQHBhcmFtIHtTdHJpbmd9IG1lc3NhZ2VcbiAgICogQG5hbWVzcGFjZSBBc3NlcnRcbiAgICogQGFwaSBwdWJsaWNcbiAgICovXG5cbiAgYXNzZXJ0LmlzQmVsb3cgPSBmdW5jdGlvbiAodmFsLCBibHcsIG1zZykge1xuICAgIG5ldyBBc3NlcnRpb24odmFsLCBtc2cpLnRvLmJlLmJlbG93KGJsdyk7XG4gIH07XG5cbiAgIC8qKlxuICAgKiAjIyMgLmlzQXRNb3N0KHZhbHVlVG9DaGVjaywgdmFsdWVUb0JlQXRNb3N0LCBbbWVzc2FnZV0pXG4gICAqXG4gICAqIEFzc2VydHMgYHZhbHVlVG9DaGVja2AgaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICg8PSkgYHZhbHVlVG9CZUF0TW9zdGBcbiAgICpcbiAgICogICAgIGFzc2VydC5pc0F0TW9zdCgzLCA2LCAnMyBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gNicpO1xuICAgKiAgICAgYXNzZXJ0LmlzQXRNb3N0KDQsIDQsICc0IGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byA0Jyk7XG4gICAqXG4gICAqIEBuYW1lIGlzQXRNb3N0XG4gICAqIEBwYXJhbSB7TWl4ZWR9IHZhbHVlVG9DaGVja1xuICAgKiBAcGFyYW0ge01peGVkfSB2YWx1ZVRvQmVBdE1vc3RcbiAgICogQHBhcmFtIHtTdHJpbmd9IG1lc3NhZ2VcbiAgICogQG5hbWVzcGFjZSBBc3NlcnRcbiAgICogQGFwaSBwdWJsaWNcbiAgICovXG5cbiAgYXNzZXJ0LmlzQXRNb3N0ID0gZnVuY3Rpb24gKHZhbCwgYXRtc3QsIG1zZykge1xuICAgIG5ldyBBc3NlcnRpb24odmFsLCBtc2cpLnRvLmJlLm1vc3QoYXRtc3QpO1xuICB9O1xuXG4gIC8qKlxuICAgKiAjIyMgLmlzVHJ1ZSh2YWx1ZSwgW21lc3NhZ2VdKVxuICAgKlxuICAgKiBBc3NlcnRzIHRoYXQgYHZhbHVlYCBpcyB0cnVlLlxuICAgKlxuICAgKiAgICAgdmFyIHRlYVNlcnZlZCA9IHRydWU7XG4gICAqICAgICBhc3NlcnQuaXNUcnVlKHRlYVNlcnZlZCwgJ3RoZSB0ZWEgaGFzIGJlZW4gc2VydmVkJyk7XG4gICAqXG4gICAqIEBuYW1lIGlzVHJ1ZVxuICAgKiBAcGFyYW0ge01peGVkfSB2YWx1ZVxuICAgKiBAcGFyYW0ge1N0cmluZ30gbWVzc2FnZVxuICAgKiBAbmFtZXNwYWNlIEFzc2VydFxuICAgKiBAYXBpIHB1YmxpY1xuICAgKi9cblxuICBhc3NlcnQuaXNUcnVlID0gZnVuY3Rpb24gKHZhbCwgbXNnKSB7XG4gICAgbmV3IEFzc2VydGlvbih2YWwsIG1zZykuaXNbJ3RydWUnXTtcbiAgfTtcblxuICAvKipcbiAgICogIyMjIC5pc05vdFRydWUodmFsdWUsIFttZXNzYWdlXSlcbiAgICpcbiAgICogQXNzZXJ0cyB0aGF0IGB2YWx1ZWAgaXMgbm90IHRydWUuXG4gICAqXG4gICAqICAgICB2YXIgdGVhID0gJ3Rhc3R5IGNoYWknO1xuICAgKiAgICAgYXNzZXJ0LmlzTm90VHJ1ZSh0ZWEsICdncmVhdCwgdGltZSBmb3IgdGVhIScpO1xuICAgKlxuICAgKiBAbmFtZSBpc05vdFRydWVcbiAgICogQHBhcmFtIHtNaXhlZH0gdmFsdWVcbiAgICogQHBhcmFtIHtTdHJpbmd9IG1lc3NhZ2VcbiAgICogQG5hbWVzcGFjZSBBc3NlcnRcbiAgICogQGFwaSBwdWJsaWNcbiAgICovXG5cbiAgYXNzZXJ0LmlzTm90VHJ1ZSA9IGZ1bmN0aW9uICh2YWwsIG1zZykge1xuICAgIG5ldyBBc3NlcnRpb24odmFsLCBtc2cpLnRvLm5vdC5lcXVhbCh0cnVlKTtcbiAgfTtcblxuICAvKipcbiAgICogIyMjIC5pc0ZhbHNlKHZhbHVlLCBbbWVzc2FnZV0pXG4gICAqXG4gICAqIEFzc2VydHMgdGhhdCBgdmFsdWVgIGlzIGZhbHNlLlxuICAgKlxuICAgKiAgICAgdmFyIHRlYVNlcnZlZCA9IGZhbHNlO1xuICAgKiAgICAgYXNzZXJ0LmlzRmFsc2UodGVhU2VydmVkLCAnbm8gdGVhIHlldD8gaG1tLi4uJyk7XG4gICAqXG4gICAqIEBuYW1lIGlzRmFsc2VcbiAgICogQHBhcmFtIHtNaXhlZH0gdmFsdWVcbiAgICogQHBhcmFtIHtTdHJpbmd9IG1lc3NhZ2VcbiAgICogQG5hbWVzcGFjZSBBc3NlcnRcbiAgICogQGFwaSBwdWJsaWNcbiAgICovXG5cbiAgYXNzZXJ0LmlzRmFsc2UgPSBmdW5jdGlvbiAodmFsLCBtc2cpIHtcbiAgICBuZXcgQXNzZXJ0aW9uKHZhbCwgbXNnKS5pc1snZmFsc2UnXTtcbiAgfTtcblxuICAvKipcbiAgICogIyMjIC5pc05vdEZhbHNlKHZhbHVlLCBbbWVzc2FnZV0pXG4gICAqXG4gICAqIEFzc2VydHMgdGhhdCBgdmFsdWVgIGlzIG5vdCBmYWxzZS5cbiAgICpcbiAgICogICAgIHZhciB0ZWEgPSAndGFzdHkgY2hhaSc7XG4gICAqICAgICBhc3NlcnQuaXNOb3RGYWxzZSh0ZWEsICdncmVhdCwgdGltZSBmb3IgdGVhIScpO1xuICAgKlxuICAgKiBAbmFtZSBpc05vdEZhbHNlXG4gICAqIEBwYXJhbSB7TWl4ZWR9IHZhbHVlXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBtZXNzYWdlXG4gICAqIEBuYW1lc3BhY2UgQXNzZXJ0XG4gICAqIEBhcGkgcHVibGljXG4gICAqL1xuXG4gIGFzc2VydC5pc05vdEZhbHNlID0gZnVuY3Rpb24gKHZhbCwgbXNnKSB7XG4gICAgbmV3IEFzc2VydGlvbih2YWwsIG1zZykudG8ubm90LmVxdWFsKGZhbHNlKTtcbiAgfTtcblxuICAvKipcbiAgICogIyMjIC5pc051bGwodmFsdWUsIFttZXNzYWdlXSlcbiAgICpcbiAgICogQXNzZXJ0cyB0aGF0IGB2YWx1ZWAgaXMgbnVsbC5cbiAgICpcbiAgICogICAgIGFzc2VydC5pc051bGwoZXJyLCAndGhlcmUgd2FzIG5vIGVycm9yJyk7XG4gICAqXG4gICAqIEBuYW1lIGlzTnVsbFxuICAgKiBAcGFyYW0ge01peGVkfSB2YWx1ZVxuICAgKiBAcGFyYW0ge1N0cmluZ30gbWVzc2FnZVxuICAgKiBAbmFtZXNwYWNlIEFzc2VydFxuICAgKiBAYXBpIHB1YmxpY1xuICAgKi9cblxuICBhc3NlcnQuaXNOdWxsID0gZnVuY3Rpb24gKHZhbCwgbXNnKSB7XG4gICAgbmV3IEFzc2VydGlvbih2YWwsIG1zZykudG8uZXF1YWwobnVsbCk7XG4gIH07XG5cbiAgLyoqXG4gICAqICMjIyAuaXNOb3ROdWxsKHZhbHVlLCBbbWVzc2FnZV0pXG4gICAqXG4gICAqIEFzc2VydHMgdGhhdCBgdmFsdWVgIGlzIG5vdCBudWxsLlxuICAgKlxuICAgKiAgICAgdmFyIHRlYSA9ICd0YXN0eSBjaGFpJztcbiAgICogICAgIGFzc2VydC5pc05vdE51bGwodGVhLCAnZ3JlYXQsIHRpbWUgZm9yIHRlYSEnKTtcbiAgICpcbiAgICogQG5hbWUgaXNOb3ROdWxsXG4gICAqIEBwYXJhbSB7TWl4ZWR9IHZhbHVlXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBtZXNzYWdlXG4gICAqIEBuYW1lc3BhY2UgQXNzZXJ0XG4gICAqIEBhcGkgcHVibGljXG4gICAqL1xuXG4gIGFzc2VydC5pc05vdE51bGwgPSBmdW5jdGlvbiAodmFsLCBtc2cpIHtcbiAgICBuZXcgQXNzZXJ0aW9uKHZhbCwgbXNnKS50by5ub3QuZXF1YWwobnVsbCk7XG4gIH07XG5cbiAgLyoqXG4gICAqICMjIyAuaXNOYU5cbiAgICogQXNzZXJ0cyB0aGF0IHZhbHVlIGlzIE5hTlxuICAgKlxuICAgKiAgICBhc3NlcnQuaXNOYU4oJ2ZvbycsICdmb28gaXMgTmFOJyk7XG4gICAqXG4gICAqIEBuYW1lIGlzTmFOXG4gICAqIEBwYXJhbSB7TWl4ZWR9IHZhbHVlXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBtZXNzYWdlXG4gICAqIEBuYW1lc3BhY2UgQXNzZXJ0XG4gICAqIEBhcGkgcHVibGljXG4gICAqL1xuXG4gIGFzc2VydC5pc05hTiA9IGZ1bmN0aW9uICh2YWwsIG1zZykge1xuICAgIG5ldyBBc3NlcnRpb24odmFsLCBtc2cpLnRvLmJlLk5hTjtcbiAgfTtcblxuICAvKipcbiAgICogIyMjIC5pc05vdE5hTlxuICAgKiBBc3NlcnRzIHRoYXQgdmFsdWUgaXMgbm90IE5hTlxuICAgKlxuICAgKiAgICBhc3NlcnQuaXNOb3ROYU4oNCwgJzQgaXMgbm90IE5hTicpO1xuICAgKlxuICAgKiBAbmFtZSBpc05vdE5hTlxuICAgKiBAcGFyYW0ge01peGVkfSB2YWx1ZVxuICAgKiBAcGFyYW0ge1N0cmluZ30gbWVzc2FnZVxuICAgKiBAbmFtZXNwYWNlIEFzc2VydFxuICAgKiBAYXBpIHB1YmxpY1xuICAgKi9cbiAgYXNzZXJ0LmlzTm90TmFOID0gZnVuY3Rpb24gKHZhbCwgbXNnKSB7XG4gICAgbmV3IEFzc2VydGlvbih2YWwsIG1zZykubm90LnRvLmJlLk5hTjtcbiAgfTtcblxuICAvKipcbiAgICogIyMjIC5pc1VuZGVmaW5lZCh2YWx1ZSwgW21lc3NhZ2VdKVxuICAgKlxuICAgKiBBc3NlcnRzIHRoYXQgYHZhbHVlYCBpcyBgdW5kZWZpbmVkYC5cbiAgICpcbiAgICogICAgIHZhciB0ZWE7XG4gICAqICAgICBhc3NlcnQuaXNVbmRlZmluZWQodGVhLCAnbm8gdGVhIGRlZmluZWQnKTtcbiAgICpcbiAgICogQG5hbWUgaXNVbmRlZmluZWRcbiAgICogQHBhcmFtIHtNaXhlZH0gdmFsdWVcbiAgICogQHBhcmFtIHtTdHJpbmd9IG1lc3NhZ2VcbiAgICogQG5hbWVzcGFjZSBBc3NlcnRcbiAgICogQGFwaSBwdWJsaWNcbiAgICovXG5cbiAgYXNzZXJ0LmlzVW5kZWZpbmVkID0gZnVuY3Rpb24gKHZhbCwgbXNnKSB7XG4gICAgbmV3IEFzc2VydGlvbih2YWwsIG1zZykudG8uZXF1YWwodW5kZWZpbmVkKTtcbiAgfTtcblxuICAvKipcbiAgICogIyMjIC5pc0RlZmluZWQodmFsdWUsIFttZXNzYWdlXSlcbiAgICpcbiAgICogQXNzZXJ0cyB0aGF0IGB2YWx1ZWAgaXMgbm90IGB1bmRlZmluZWRgLlxuICAgKlxuICAgKiAgICAgdmFyIHRlYSA9ICdjdXAgb2YgY2hhaSc7XG4gICAqICAgICBhc3NlcnQuaXNEZWZpbmVkKHRlYSwgJ3RlYSBoYXMgYmVlbiBkZWZpbmVkJyk7XG4gICAqXG4gICAqIEBuYW1lIGlzRGVmaW5lZFxuICAgKiBAcGFyYW0ge01peGVkfSB2YWx1ZVxuICAgKiBAcGFyYW0ge1N0cmluZ30gbWVzc2FnZVxuICAgKiBAbmFtZXNwYWNlIEFzc2VydFxuICAgKiBAYXBpIHB1YmxpY1xuICAgKi9cblxuICBhc3NlcnQuaXNEZWZpbmVkID0gZnVuY3Rpb24gKHZhbCwgbXNnKSB7XG4gICAgbmV3IEFzc2VydGlvbih2YWwsIG1zZykudG8ubm90LmVxdWFsKHVuZGVmaW5lZCk7XG4gIH07XG5cbiAgLyoqXG4gICAqICMjIyAuaXNGdW5jdGlvbih2YWx1ZSwgW21lc3NhZ2VdKVxuICAgKlxuICAgKiBBc3NlcnRzIHRoYXQgYHZhbHVlYCBpcyBhIGZ1bmN0aW9uLlxuICAgKlxuICAgKiAgICAgZnVuY3Rpb24gc2VydmVUZWEoKSB7IHJldHVybiAnY3VwIG9mIHRlYSc7IH07XG4gICAqICAgICBhc3NlcnQuaXNGdW5jdGlvbihzZXJ2ZVRlYSwgJ2dyZWF0LCB3ZSBjYW4gaGF2ZSB0ZWEgbm93Jyk7XG4gICAqXG4gICAqIEBuYW1lIGlzRnVuY3Rpb25cbiAgICogQHBhcmFtIHtNaXhlZH0gdmFsdWVcbiAgICogQHBhcmFtIHtTdHJpbmd9IG1lc3NhZ2VcbiAgICogQG5hbWVzcGFjZSBBc3NlcnRcbiAgICogQGFwaSBwdWJsaWNcbiAgICovXG5cbiAgYXNzZXJ0LmlzRnVuY3Rpb24gPSBmdW5jdGlvbiAodmFsLCBtc2cpIHtcbiAgICBuZXcgQXNzZXJ0aW9uKHZhbCwgbXNnKS50by5iZS5hKCdmdW5jdGlvbicpO1xuICB9O1xuXG4gIC8qKlxuICAgKiAjIyMgLmlzTm90RnVuY3Rpb24odmFsdWUsIFttZXNzYWdlXSlcbiAgICpcbiAgICogQXNzZXJ0cyB0aGF0IGB2YWx1ZWAgaXMgX25vdF8gYSBmdW5jdGlvbi5cbiAgICpcbiAgICogICAgIHZhciBzZXJ2ZVRlYSA9IFsgJ2hlYXQnLCAncG91cicsICdzaXAnIF07XG4gICAqICAgICBhc3NlcnQuaXNOb3RGdW5jdGlvbihzZXJ2ZVRlYSwgJ2dyZWF0LCB3ZSBoYXZlIGxpc3RlZCB0aGUgc3RlcHMnKTtcbiAgICpcbiAgICogQG5hbWUgaXNOb3RGdW5jdGlvblxuICAgKiBAcGFyYW0ge01peGVkfSB2YWx1ZVxuICAgKiBAcGFyYW0ge1N0cmluZ30gbWVzc2FnZVxuICAgKiBAbmFtZXNwYWNlIEFzc2VydFxuICAgKiBAYXBpIHB1YmxpY1xuICAgKi9cblxuICBhc3NlcnQuaXNOb3RGdW5jdGlvbiA9IGZ1bmN0aW9uICh2YWwsIG1zZykge1xuICAgIG5ldyBBc3NlcnRpb24odmFsLCBtc2cpLnRvLm5vdC5iZS5hKCdmdW5jdGlvbicpO1xuICB9O1xuXG4gIC8qKlxuICAgKiAjIyMgLmlzT2JqZWN0KHZhbHVlLCBbbWVzc2FnZV0pXG4gICAqXG4gICAqIEFzc2VydHMgdGhhdCBgdmFsdWVgIGlzIGFuIG9iamVjdCBvZiB0eXBlICdPYmplY3QnIChhcyByZXZlYWxlZCBieSBgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZ2ApLlxuICAgKiBfVGhlIGFzc2VydGlvbiBkb2VzIG5vdCBtYXRjaCBzdWJjbGFzc2VkIG9iamVjdHMuX1xuICAgKlxuICAgKiAgICAgdmFyIHNlbGVjdGlvbiA9IHsgbmFtZTogJ0NoYWknLCBzZXJ2ZTogJ3dpdGggc3BpY2VzJyB9O1xuICAgKiAgICAgYXNzZXJ0LmlzT2JqZWN0KHNlbGVjdGlvbiwgJ3RlYSBzZWxlY3Rpb24gaXMgYW4gb2JqZWN0Jyk7XG4gICAqXG4gICAqIEBuYW1lIGlzT2JqZWN0XG4gICAqIEBwYXJhbSB7TWl4ZWR9IHZhbHVlXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBtZXNzYWdlXG4gICAqIEBuYW1lc3BhY2UgQXNzZXJ0XG4gICAqIEBhcGkgcHVibGljXG4gICAqL1xuXG4gIGFzc2VydC5pc09iamVjdCA9IGZ1bmN0aW9uICh2YWwsIG1zZykge1xuICAgIG5ldyBBc3NlcnRpb24odmFsLCBtc2cpLnRvLmJlLmEoJ29iamVjdCcpO1xuICB9O1xuXG4gIC8qKlxuICAgKiAjIyMgLmlzTm90T2JqZWN0KHZhbHVlLCBbbWVzc2FnZV0pXG4gICAqXG4gICAqIEFzc2VydHMgdGhhdCBgdmFsdWVgIGlzIF9ub3RfIGFuIG9iamVjdCBvZiB0eXBlICdPYmplY3QnIChhcyByZXZlYWxlZCBieSBgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZ2ApLlxuICAgKlxuICAgKiAgICAgdmFyIHNlbGVjdGlvbiA9ICdjaGFpJ1xuICAgKiAgICAgYXNzZXJ0LmlzTm90T2JqZWN0KHNlbGVjdGlvbiwgJ3RlYSBzZWxlY3Rpb24gaXMgbm90IGFuIG9iamVjdCcpO1xuICAgKiAgICAgYXNzZXJ0LmlzTm90T2JqZWN0KG51bGwsICdudWxsIGlzIG5vdCBhbiBvYmplY3QnKTtcbiAgICpcbiAgICogQG5hbWUgaXNOb3RPYmplY3RcbiAgICogQHBhcmFtIHtNaXhlZH0gdmFsdWVcbiAgICogQHBhcmFtIHtTdHJpbmd9IG1lc3NhZ2VcbiAgICogQG5hbWVzcGFjZSBBc3NlcnRcbiAgICogQGFwaSBwdWJsaWNcbiAgICovXG5cbiAgYXNzZXJ0LmlzTm90T2JqZWN0ID0gZnVuY3Rpb24gKHZhbCwgbXNnKSB7XG4gICAgbmV3IEFzc2VydGlvbih2YWwsIG1zZykudG8ubm90LmJlLmEoJ29iamVjdCcpO1xuICB9O1xuXG4gIC8qKlxuICAgKiAjIyMgLmlzQXJyYXkodmFsdWUsIFttZXNzYWdlXSlcbiAgICpcbiAgICogQXNzZXJ0cyB0aGF0IGB2YWx1ZWAgaXMgYW4gYXJyYXkuXG4gICAqXG4gICAqICAgICB2YXIgbWVudSA9IFsgJ2dyZWVuJywgJ2NoYWknLCAnb29sb25nJyBdO1xuICAgKiAgICAgYXNzZXJ0LmlzQXJyYXkobWVudSwgJ3doYXQga2luZCBvZiB0ZWEgZG8gd2Ugd2FudD8nKTtcbiAgICpcbiAgICogQG5hbWUgaXNBcnJheVxuICAgKiBAcGFyYW0ge01peGVkfSB2YWx1ZVxuICAgKiBAcGFyYW0ge1N0cmluZ30gbWVzc2FnZVxuICAgKiBAbmFtZXNwYWNlIEFzc2VydFxuICAgKiBAYXBpIHB1YmxpY1xuICAgKi9cblxuICBhc3NlcnQuaXNBcnJheSA9IGZ1bmN0aW9uICh2YWwsIG1zZykge1xuICAgIG5ldyBBc3NlcnRpb24odmFsLCBtc2cpLnRvLmJlLmFuKCdhcnJheScpO1xuICB9O1xuXG4gIC8qKlxuICAgKiAjIyMgLmlzTm90QXJyYXkodmFsdWUsIFttZXNzYWdlXSlcbiAgICpcbiAgICogQXNzZXJ0cyB0aGF0IGB2YWx1ZWAgaXMgX25vdF8gYW4gYXJyYXkuXG4gICAqXG4gICAqICAgICB2YXIgbWVudSA9ICdncmVlbnxjaGFpfG9vbG9uZyc7XG4gICAqICAgICBhc3NlcnQuaXNOb3RBcnJheShtZW51LCAnd2hhdCBraW5kIG9mIHRlYSBkbyB3ZSB3YW50PycpO1xuICAgKlxuICAgKiBAbmFtZSBpc05vdEFycmF5XG4gICAqIEBwYXJhbSB7TWl4ZWR9IHZhbHVlXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBtZXNzYWdlXG4gICAqIEBuYW1lc3BhY2UgQXNzZXJ0XG4gICAqIEBhcGkgcHVibGljXG4gICAqL1xuXG4gIGFzc2VydC5pc05vdEFycmF5ID0gZnVuY3Rpb24gKHZhbCwgbXNnKSB7XG4gICAgbmV3IEFzc2VydGlvbih2YWwsIG1zZykudG8ubm90LmJlLmFuKCdhcnJheScpO1xuICB9O1xuXG4gIC8qKlxuICAgKiAjIyMgLmlzU3RyaW5nKHZhbHVlLCBbbWVzc2FnZV0pXG4gICAqXG4gICAqIEFzc2VydHMgdGhhdCBgdmFsdWVgIGlzIGEgc3RyaW5nLlxuICAgKlxuICAgKiAgICAgdmFyIHRlYU9yZGVyID0gJ2NoYWknO1xuICAgKiAgICAgYXNzZXJ0LmlzU3RyaW5nKHRlYU9yZGVyLCAnb3JkZXIgcGxhY2VkJyk7XG4gICAqXG4gICAqIEBuYW1lIGlzU3RyaW5nXG4gICAqIEBwYXJhbSB7TWl4ZWR9IHZhbHVlXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBtZXNzYWdlXG4gICAqIEBuYW1lc3BhY2UgQXNzZXJ0XG4gICAqIEBhcGkgcHVibGljXG4gICAqL1xuXG4gIGFzc2VydC5pc1N0cmluZyA9IGZ1bmN0aW9uICh2YWwsIG1zZykge1xuICAgIG5ldyBBc3NlcnRpb24odmFsLCBtc2cpLnRvLmJlLmEoJ3N0cmluZycpO1xuICB9O1xuXG4gIC8qKlxuICAgKiAjIyMgLmlzTm90U3RyaW5nKHZhbHVlLCBbbWVzc2FnZV0pXG4gICAqXG4gICAqIEFzc2VydHMgdGhhdCBgdmFsdWVgIGlzIF9ub3RfIGEgc3RyaW5nLlxuICAgKlxuICAgKiAgICAgdmFyIHRlYU9yZGVyID0gNDtcbiAgICogICAgIGFzc2VydC5pc05vdFN0cmluZyh0ZWFPcmRlciwgJ29yZGVyIHBsYWNlZCcpO1xuICAgKlxuICAgKiBAbmFtZSBpc05vdFN0cmluZ1xuICAgKiBAcGFyYW0ge01peGVkfSB2YWx1ZVxuICAgKiBAcGFyYW0ge1N0cmluZ30gbWVzc2FnZVxuICAgKiBAbmFtZXNwYWNlIEFzc2VydFxuICAgKiBAYXBpIHB1YmxpY1xuICAgKi9cblxuICBhc3NlcnQuaXNOb3RTdHJpbmcgPSBmdW5jdGlvbiAodmFsLCBtc2cpIHtcbiAgICBuZXcgQXNzZXJ0aW9uKHZhbCwgbXNnKS50by5ub3QuYmUuYSgnc3RyaW5nJyk7XG4gIH07XG5cbiAgLyoqXG4gICAqICMjIyAuaXNOdW1iZXIodmFsdWUsIFttZXNzYWdlXSlcbiAgICpcbiAgICogQXNzZXJ0cyB0aGF0IGB2YWx1ZWAgaXMgYSBudW1iZXIuXG4gICAqXG4gICAqICAgICB2YXIgY3VwcyA9IDI7XG4gICAqICAgICBhc3NlcnQuaXNOdW1iZXIoY3VwcywgJ2hvdyBtYW55IGN1cHMnKTtcbiAgICpcbiAgICogQG5hbWUgaXNOdW1iZXJcbiAgICogQHBhcmFtIHtOdW1iZXJ9IHZhbHVlXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBtZXNzYWdlXG4gICAqIEBuYW1lc3BhY2UgQXNzZXJ0XG4gICAqIEBhcGkgcHVibGljXG4gICAqL1xuXG4gIGFzc2VydC5pc051bWJlciA9IGZ1bmN0aW9uICh2YWwsIG1zZykge1xuICAgIG5ldyBBc3NlcnRpb24odmFsLCBtc2cpLnRvLmJlLmEoJ251bWJlcicpO1xuICB9O1xuXG4gIC8qKlxuICAgKiAjIyMgLmlzTm90TnVtYmVyKHZhbHVlLCBbbWVzc2FnZV0pXG4gICAqXG4gICAqIEFzc2VydHMgdGhhdCBgdmFsdWVgIGlzIF9ub3RfIGEgbnVtYmVyLlxuICAgKlxuICAgKiAgICAgdmFyIGN1cHMgPSAnMiBjdXBzIHBsZWFzZSc7XG4gICAqICAgICBhc3NlcnQuaXNOb3ROdW1iZXIoY3VwcywgJ2hvdyBtYW55IGN1cHMnKTtcbiAgICpcbiAgICogQG5hbWUgaXNOb3ROdW1iZXJcbiAgICogQHBhcmFtIHtNaXhlZH0gdmFsdWVcbiAgICogQHBhcmFtIHtTdHJpbmd9IG1lc3NhZ2VcbiAgICogQG5hbWVzcGFjZSBBc3NlcnRcbiAgICogQGFwaSBwdWJsaWNcbiAgICovXG5cbiAgYXNzZXJ0LmlzTm90TnVtYmVyID0gZnVuY3Rpb24gKHZhbCwgbXNnKSB7XG4gICAgbmV3IEFzc2VydGlvbih2YWwsIG1zZykudG8ubm90LmJlLmEoJ251bWJlcicpO1xuICB9O1xuXG4gIC8qKlxuICAgKiAjIyMgLmlzQm9vbGVhbih2YWx1ZSwgW21lc3NhZ2VdKVxuICAgKlxuICAgKiBBc3NlcnRzIHRoYXQgYHZhbHVlYCBpcyBhIGJvb2xlYW4uXG4gICAqXG4gICAqICAgICB2YXIgdGVhUmVhZHkgPSB0cnVlXG4gICAqICAgICAgICwgdGVhU2VydmVkID0gZmFsc2U7XG4gICAqXG4gICAqICAgICBhc3NlcnQuaXNCb29sZWFuKHRlYVJlYWR5LCAnaXMgdGhlIHRlYSByZWFkeScpO1xuICAgKiAgICAgYXNzZXJ0LmlzQm9vbGVhbih0ZWFTZXJ2ZWQsICdoYXMgdGVhIGJlZW4gc2VydmVkJyk7XG4gICAqXG4gICAqIEBuYW1lIGlzQm9vbGVhblxuICAgKiBAcGFyYW0ge01peGVkfSB2YWx1ZVxuICAgKiBAcGFyYW0ge1N0cmluZ30gbWVzc2FnZVxuICAgKiBAbmFtZXNwYWNlIEFzc2VydFxuICAgKiBAYXBpIHB1YmxpY1xuICAgKi9cblxuICBhc3NlcnQuaXNCb29sZWFuID0gZnVuY3Rpb24gKHZhbCwgbXNnKSB7XG4gICAgbmV3IEFzc2VydGlvbih2YWwsIG1zZykudG8uYmUuYSgnYm9vbGVhbicpO1xuICB9O1xuXG4gIC8qKlxuICAgKiAjIyMgLmlzTm90Qm9vbGVhbih2YWx1ZSwgW21lc3NhZ2VdKVxuICAgKlxuICAgKiBBc3NlcnRzIHRoYXQgYHZhbHVlYCBpcyBfbm90XyBhIGJvb2xlYW4uXG4gICAqXG4gICAqICAgICB2YXIgdGVhUmVhZHkgPSAneWVwJ1xuICAgKiAgICAgICAsIHRlYVNlcnZlZCA9ICdub3BlJztcbiAgICpcbiAgICogICAgIGFzc2VydC5pc05vdEJvb2xlYW4odGVhUmVhZHksICdpcyB0aGUgdGVhIHJlYWR5Jyk7XG4gICAqICAgICBhc3NlcnQuaXNOb3RCb29sZWFuKHRlYVNlcnZlZCwgJ2hhcyB0ZWEgYmVlbiBzZXJ2ZWQnKTtcbiAgICpcbiAgICogQG5hbWUgaXNOb3RCb29sZWFuXG4gICAqIEBwYXJhbSB7TWl4ZWR9IHZhbHVlXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBtZXNzYWdlXG4gICAqIEBuYW1lc3BhY2UgQXNzZXJ0XG4gICAqIEBhcGkgcHVibGljXG4gICAqL1xuXG4gIGFzc2VydC5pc05vdEJvb2xlYW4gPSBmdW5jdGlvbiAodmFsLCBtc2cpIHtcbiAgICBuZXcgQXNzZXJ0aW9uKHZhbCwgbXNnKS50by5ub3QuYmUuYSgnYm9vbGVhbicpO1xuICB9O1xuXG4gIC8qKlxuICAgKiAjIyMgLnR5cGVPZih2YWx1ZSwgbmFtZSwgW21lc3NhZ2VdKVxuICAgKlxuICAgKiBBc3NlcnRzIHRoYXQgYHZhbHVlYCdzIHR5cGUgaXMgYG5hbWVgLCBhcyBkZXRlcm1pbmVkIGJ5XG4gICAqIGBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nYC5cbiAgICpcbiAgICogICAgIGFzc2VydC50eXBlT2YoeyB0ZWE6ICdjaGFpJyB9LCAnb2JqZWN0JywgJ3dlIGhhdmUgYW4gb2JqZWN0Jyk7XG4gICAqICAgICBhc3NlcnQudHlwZU9mKFsnY2hhaScsICdqYXNtaW5lJ10sICdhcnJheScsICd3ZSBoYXZlIGFuIGFycmF5Jyk7XG4gICAqICAgICBhc3NlcnQudHlwZU9mKCd0ZWEnLCAnc3RyaW5nJywgJ3dlIGhhdmUgYSBzdHJpbmcnKTtcbiAgICogICAgIGFzc2VydC50eXBlT2YoL3RlYS8sICdyZWdleHAnLCAnd2UgaGF2ZSBhIHJlZ3VsYXIgZXhwcmVzc2lvbicpO1xuICAgKiAgICAgYXNzZXJ0LnR5cGVPZihudWxsLCAnbnVsbCcsICd3ZSBoYXZlIGEgbnVsbCcpO1xuICAgKiAgICAgYXNzZXJ0LnR5cGVPZih1bmRlZmluZWQsICd1bmRlZmluZWQnLCAnd2UgaGF2ZSBhbiB1bmRlZmluZWQnKTtcbiAgICpcbiAgICogQG5hbWUgdHlwZU9mXG4gICAqIEBwYXJhbSB7TWl4ZWR9IHZhbHVlXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBuYW1lXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBtZXNzYWdlXG4gICAqIEBuYW1lc3BhY2UgQXNzZXJ0XG4gICAqIEBhcGkgcHVibGljXG4gICAqL1xuXG4gIGFzc2VydC50eXBlT2YgPSBmdW5jdGlvbiAodmFsLCB0eXBlLCBtc2cpIHtcbiAgICBuZXcgQXNzZXJ0aW9uKHZhbCwgbXNnKS50by5iZS5hKHR5cGUpO1xuICB9O1xuXG4gIC8qKlxuICAgKiAjIyMgLm5vdFR5cGVPZih2YWx1ZSwgbmFtZSwgW21lc3NhZ2VdKVxuICAgKlxuICAgKiBBc3NlcnRzIHRoYXQgYHZhbHVlYCdzIHR5cGUgaXMgX25vdF8gYG5hbWVgLCBhcyBkZXRlcm1pbmVkIGJ5XG4gICAqIGBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nYC5cbiAgICpcbiAgICogICAgIGFzc2VydC5ub3RUeXBlT2YoJ3RlYScsICdudW1iZXInLCAnc3RyaW5ncyBhcmUgbm90IG51bWJlcnMnKTtcbiAgICpcbiAgICogQG5hbWUgbm90VHlwZU9mXG4gICAqIEBwYXJhbSB7TWl4ZWR9IHZhbHVlXG4gICAqIEBwYXJhbSB7U3RyaW5nfSB0eXBlb2YgbmFtZVxuICAgKiBAcGFyYW0ge1N0cmluZ30gbWVzc2FnZVxuICAgKiBAbmFtZXNwYWNlIEFzc2VydFxuICAgKiBAYXBpIHB1YmxpY1xuICAgKi9cblxuICBhc3NlcnQubm90VHlwZU9mID0gZnVuY3Rpb24gKHZhbCwgdHlwZSwgbXNnKSB7XG4gICAgbmV3IEFzc2VydGlvbih2YWwsIG1zZykudG8ubm90LmJlLmEodHlwZSk7XG4gIH07XG5cbiAgLyoqXG4gICAqICMjIyAuaW5zdGFuY2VPZihvYmplY3QsIGNvbnN0cnVjdG9yLCBbbWVzc2FnZV0pXG4gICAqXG4gICAqIEFzc2VydHMgdGhhdCBgdmFsdWVgIGlzIGFuIGluc3RhbmNlIG9mIGBjb25zdHJ1Y3RvcmAuXG4gICAqXG4gICAqICAgICB2YXIgVGVhID0gZnVuY3Rpb24gKG5hbWUpIHsgdGhpcy5uYW1lID0gbmFtZTsgfVxuICAgKiAgICAgICAsIGNoYWkgPSBuZXcgVGVhKCdjaGFpJyk7XG4gICAqXG4gICAqICAgICBhc3NlcnQuaW5zdGFuY2VPZihjaGFpLCBUZWEsICdjaGFpIGlzIGFuIGluc3RhbmNlIG9mIHRlYScpO1xuICAgKlxuICAgKiBAbmFtZSBpbnN0YW5jZU9mXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3RcbiAgICogQHBhcmFtIHtDb25zdHJ1Y3Rvcn0gY29uc3RydWN0b3JcbiAgICogQHBhcmFtIHtTdHJpbmd9IG1lc3NhZ2VcbiAgICogQG5hbWVzcGFjZSBBc3NlcnRcbiAgICogQGFwaSBwdWJsaWNcbiAgICovXG5cbiAgYXNzZXJ0Lmluc3RhbmNlT2YgPSBmdW5jdGlvbiAodmFsLCB0eXBlLCBtc2cpIHtcbiAgICBuZXcgQXNzZXJ0aW9uKHZhbCwgbXNnKS50by5iZS5pbnN0YW5jZU9mKHR5cGUpO1xuICB9O1xuXG4gIC8qKlxuICAgKiAjIyMgLm5vdEluc3RhbmNlT2Yob2JqZWN0LCBjb25zdHJ1Y3RvciwgW21lc3NhZ2VdKVxuICAgKlxuICAgKiBBc3NlcnRzIGB2YWx1ZWAgaXMgbm90IGFuIGluc3RhbmNlIG9mIGBjb25zdHJ1Y3RvcmAuXG4gICAqXG4gICAqICAgICB2YXIgVGVhID0gZnVuY3Rpb24gKG5hbWUpIHsgdGhpcy5uYW1lID0gbmFtZTsgfVxuICAgKiAgICAgICAsIGNoYWkgPSBuZXcgU3RyaW5nKCdjaGFpJyk7XG4gICAqXG4gICAqICAgICBhc3NlcnQubm90SW5zdGFuY2VPZihjaGFpLCBUZWEsICdjaGFpIGlzIG5vdCBhbiBpbnN0YW5jZSBvZiB0ZWEnKTtcbiAgICpcbiAgICogQG5hbWUgbm90SW5zdGFuY2VPZlxuICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0XG4gICAqIEBwYXJhbSB7Q29uc3RydWN0b3J9IGNvbnN0cnVjdG9yXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBtZXNzYWdlXG4gICAqIEBuYW1lc3BhY2UgQXNzZXJ0XG4gICAqIEBhcGkgcHVibGljXG4gICAqL1xuXG4gIGFzc2VydC5ub3RJbnN0YW5jZU9mID0gZnVuY3Rpb24gKHZhbCwgdHlwZSwgbXNnKSB7XG4gICAgbmV3IEFzc2VydGlvbih2YWwsIG1zZykudG8ubm90LmJlLmluc3RhbmNlT2YodHlwZSk7XG4gIH07XG5cbiAgLyoqXG4gICAqICMjIyAuaW5jbHVkZShoYXlzdGFjaywgbmVlZGxlLCBbbWVzc2FnZV0pXG4gICAqXG4gICAqIEFzc2VydHMgdGhhdCBgaGF5c3RhY2tgIGluY2x1ZGVzIGBuZWVkbGVgLiBXb3Jrc1xuICAgKiBmb3Igc3RyaW5ncyBhbmQgYXJyYXlzLlxuICAgKlxuICAgKiAgICAgYXNzZXJ0LmluY2x1ZGUoJ2Zvb2JhcicsICdiYXInLCAnZm9vYmFyIGNvbnRhaW5zIHN0cmluZyBcImJhclwiJyk7XG4gICAqICAgICBhc3NlcnQuaW5jbHVkZShbIDEsIDIsIDMgXSwgMywgJ2FycmF5IGNvbnRhaW5zIHZhbHVlJyk7XG4gICAqXG4gICAqIEBuYW1lIGluY2x1ZGVcbiAgICogQHBhcmFtIHtBcnJheXxTdHJpbmd9IGhheXN0YWNrXG4gICAqIEBwYXJhbSB7TWl4ZWR9IG5lZWRsZVxuICAgKiBAcGFyYW0ge1N0cmluZ30gbWVzc2FnZVxuICAgKiBAbmFtZXNwYWNlIEFzc2VydFxuICAgKiBAYXBpIHB1YmxpY1xuICAgKi9cblxuICBhc3NlcnQuaW5jbHVkZSA9IGZ1bmN0aW9uIChleHAsIGluYywgbXNnKSB7XG4gICAgbmV3IEFzc2VydGlvbihleHAsIG1zZywgYXNzZXJ0LmluY2x1ZGUpLmluY2x1ZGUoaW5jKTtcbiAgfTtcblxuICAvKipcbiAgICogIyMjIC5ub3RJbmNsdWRlKGhheXN0YWNrLCBuZWVkbGUsIFttZXNzYWdlXSlcbiAgICpcbiAgICogQXNzZXJ0cyB0aGF0IGBoYXlzdGFja2AgZG9lcyBub3QgaW5jbHVkZSBgbmVlZGxlYC4gV29ya3NcbiAgICogZm9yIHN0cmluZ3MgYW5kIGFycmF5cy5cbiAgICpcbiAgICogICAgIGFzc2VydC5ub3RJbmNsdWRlKCdmb29iYXInLCAnYmF6JywgJ3N0cmluZyBub3QgaW5jbHVkZSBzdWJzdHJpbmcnKTtcbiAgICogICAgIGFzc2VydC5ub3RJbmNsdWRlKFsgMSwgMiwgMyBdLCA0LCAnYXJyYXkgbm90IGluY2x1ZGUgY29udGFpbiB2YWx1ZScpO1xuICAgKlxuICAgKiBAbmFtZSBub3RJbmNsdWRlXG4gICAqIEBwYXJhbSB7QXJyYXl8U3RyaW5nfSBoYXlzdGFja1xuICAgKiBAcGFyYW0ge01peGVkfSBuZWVkbGVcbiAgICogQHBhcmFtIHtTdHJpbmd9IG1lc3NhZ2VcbiAgICogQG5hbWVzcGFjZSBBc3NlcnRcbiAgICogQGFwaSBwdWJsaWNcbiAgICovXG5cbiAgYXNzZXJ0Lm5vdEluY2x1ZGUgPSBmdW5jdGlvbiAoZXhwLCBpbmMsIG1zZykge1xuICAgIG5ldyBBc3NlcnRpb24oZXhwLCBtc2csIGFzc2VydC5ub3RJbmNsdWRlKS5ub3QuaW5jbHVkZShpbmMpO1xuICB9O1xuXG4gIC8qKlxuICAgKiAjIyMgLm1hdGNoKHZhbHVlLCByZWdleHAsIFttZXNzYWdlXSlcbiAgICpcbiAgICogQXNzZXJ0cyB0aGF0IGB2YWx1ZWAgbWF0Y2hlcyB0aGUgcmVndWxhciBleHByZXNzaW9uIGByZWdleHBgLlxuICAgKlxuICAgKiAgICAgYXNzZXJ0Lm1hdGNoKCdmb29iYXInLCAvXmZvby8sICdyZWdleHAgbWF0Y2hlcycpO1xuICAgKlxuICAgKiBAbmFtZSBtYXRjaFxuICAgKiBAcGFyYW0ge01peGVkfSB2YWx1ZVxuICAgKiBAcGFyYW0ge1JlZ0V4cH0gcmVnZXhwXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBtZXNzYWdlXG4gICAqIEBuYW1lc3BhY2UgQXNzZXJ0XG4gICAqIEBhcGkgcHVibGljXG4gICAqL1xuXG4gIGFzc2VydC5tYXRjaCA9IGZ1bmN0aW9uIChleHAsIHJlLCBtc2cpIHtcbiAgICBuZXcgQXNzZXJ0aW9uKGV4cCwgbXNnKS50by5tYXRjaChyZSk7XG4gIH07XG5cbiAgLyoqXG4gICAqICMjIyAubm90TWF0Y2godmFsdWUsIHJlZ2V4cCwgW21lc3NhZ2VdKVxuICAgKlxuICAgKiBBc3NlcnRzIHRoYXQgYHZhbHVlYCBkb2VzIG5vdCBtYXRjaCB0aGUgcmVndWxhciBleHByZXNzaW9uIGByZWdleHBgLlxuICAgKlxuICAgKiAgICAgYXNzZXJ0Lm5vdE1hdGNoKCdmb29iYXInLCAvXmZvby8sICdyZWdleHAgZG9lcyBub3QgbWF0Y2gnKTtcbiAgICpcbiAgICogQG5hbWUgbm90TWF0Y2hcbiAgICogQHBhcmFtIHtNaXhlZH0gdmFsdWVcbiAgICogQHBhcmFtIHtSZWdFeHB9IHJlZ2V4cFxuICAgKiBAcGFyYW0ge1N0cmluZ30gbWVzc2FnZVxuICAgKiBAbmFtZXNwYWNlIEFzc2VydFxuICAgKiBAYXBpIHB1YmxpY1xuICAgKi9cblxuICBhc3NlcnQubm90TWF0Y2ggPSBmdW5jdGlvbiAoZXhwLCByZSwgbXNnKSB7XG4gICAgbmV3IEFzc2VydGlvbihleHAsIG1zZykudG8ubm90Lm1hdGNoKHJlKTtcbiAgfTtcblxuICAvKipcbiAgICogIyMjIC5wcm9wZXJ0eShvYmplY3QsIHByb3BlcnR5LCBbbWVzc2FnZV0pXG4gICAqXG4gICAqIEFzc2VydHMgdGhhdCBgb2JqZWN0YCBoYXMgYSBwcm9wZXJ0eSBuYW1lZCBieSBgcHJvcGVydHlgLlxuICAgKlxuICAgKiAgICAgYXNzZXJ0LnByb3BlcnR5KHsgdGVhOiB7IGdyZWVuOiAnbWF0Y2hhJyB9fSwgJ3RlYScpO1xuICAgKlxuICAgKiBAbmFtZSBwcm9wZXJ0eVxuICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0XG4gICAqIEBwYXJhbSB7U3RyaW5nfSBwcm9wZXJ0eVxuICAgKiBAcGFyYW0ge1N0cmluZ30gbWVzc2FnZVxuICAgKiBAbmFtZXNwYWNlIEFzc2VydFxuICAgKiBAYXBpIHB1YmxpY1xuICAgKi9cblxuICBhc3NlcnQucHJvcGVydHkgPSBmdW5jdGlvbiAob2JqLCBwcm9wLCBtc2cpIHtcbiAgICBuZXcgQXNzZXJ0aW9uKG9iaiwgbXNnKS50by5oYXZlLnByb3BlcnR5KHByb3ApO1xuICB9O1xuXG4gIC8qKlxuICAgKiAjIyMgLm5vdFByb3BlcnR5KG9iamVjdCwgcHJvcGVydHksIFttZXNzYWdlXSlcbiAgICpcbiAgICogQXNzZXJ0cyB0aGF0IGBvYmplY3RgIGRvZXMgX25vdF8gaGF2ZSBhIHByb3BlcnR5IG5hbWVkIGJ5IGBwcm9wZXJ0eWAuXG4gICAqXG4gICAqICAgICBhc3NlcnQubm90UHJvcGVydHkoeyB0ZWE6IHsgZ3JlZW46ICdtYXRjaGEnIH19LCAnY29mZmVlJyk7XG4gICAqXG4gICAqIEBuYW1lIG5vdFByb3BlcnR5XG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3RcbiAgICogQHBhcmFtIHtTdHJpbmd9IHByb3BlcnR5XG4gICAqIEBwYXJhbSB7U3RyaW5nfSBtZXNzYWdlXG4gICAqIEBuYW1lc3BhY2UgQXNzZXJ0XG4gICAqIEBhcGkgcHVibGljXG4gICAqL1xuXG4gIGFzc2VydC5ub3RQcm9wZXJ0eSA9IGZ1bmN0aW9uIChvYmosIHByb3AsIG1zZykge1xuICAgIG5ldyBBc3NlcnRpb24ob2JqLCBtc2cpLnRvLm5vdC5oYXZlLnByb3BlcnR5KHByb3ApO1xuICB9O1xuXG4gIC8qKlxuICAgKiAjIyMgLmRlZXBQcm9wZXJ0eShvYmplY3QsIHByb3BlcnR5LCBbbWVzc2FnZV0pXG4gICAqXG4gICAqIEFzc2VydHMgdGhhdCBgb2JqZWN0YCBoYXMgYSBwcm9wZXJ0eSBuYW1lZCBieSBgcHJvcGVydHlgLCB3aGljaCBjYW4gYmUgYVxuICAgKiBzdHJpbmcgdXNpbmcgZG90LSBhbmQgYnJhY2tldC1ub3RhdGlvbiBmb3IgZGVlcCByZWZlcmVuY2UuXG4gICAqXG4gICAqICAgICBhc3NlcnQuZGVlcFByb3BlcnR5KHsgdGVhOiB7IGdyZWVuOiAnbWF0Y2hhJyB9fSwgJ3RlYS5ncmVlbicpO1xuICAgKlxuICAgKiBAbmFtZSBkZWVwUHJvcGVydHlcbiAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdFxuICAgKiBAcGFyYW0ge1N0cmluZ30gcHJvcGVydHlcbiAgICogQHBhcmFtIHtTdHJpbmd9IG1lc3NhZ2VcbiAgICogQG5hbWVzcGFjZSBBc3NlcnRcbiAgICogQGFwaSBwdWJsaWNcbiAgICovXG5cbiAgYXNzZXJ0LmRlZXBQcm9wZXJ0eSA9IGZ1bmN0aW9uIChvYmosIHByb3AsIG1zZykge1xuICAgIG5ldyBBc3NlcnRpb24ob2JqLCBtc2cpLnRvLmhhdmUuZGVlcC5wcm9wZXJ0eShwcm9wKTtcbiAgfTtcblxuICAvKipcbiAgICogIyMjIC5ub3REZWVwUHJvcGVydHkob2JqZWN0LCBwcm9wZXJ0eSwgW21lc3NhZ2VdKVxuICAgKlxuICAgKiBBc3NlcnRzIHRoYXQgYG9iamVjdGAgZG9lcyBfbm90XyBoYXZlIGEgcHJvcGVydHkgbmFtZWQgYnkgYHByb3BlcnR5YCwgd2hpY2hcbiAgICogY2FuIGJlIGEgc3RyaW5nIHVzaW5nIGRvdC0gYW5kIGJyYWNrZXQtbm90YXRpb24gZm9yIGRlZXAgcmVmZXJlbmNlLlxuICAgKlxuICAgKiAgICAgYXNzZXJ0Lm5vdERlZXBQcm9wZXJ0eSh7IHRlYTogeyBncmVlbjogJ21hdGNoYScgfX0sICd0ZWEub29sb25nJyk7XG4gICAqXG4gICAqIEBuYW1lIG5vdERlZXBQcm9wZXJ0eVxuICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0XG4gICAqIEBwYXJhbSB7U3RyaW5nfSBwcm9wZXJ0eVxuICAgKiBAcGFyYW0ge1N0cmluZ30gbWVzc2FnZVxuICAgKiBAbmFtZXNwYWNlIEFzc2VydFxuICAgKiBAYXBpIHB1YmxpY1xuICAgKi9cblxuICBhc3NlcnQubm90RGVlcFByb3BlcnR5ID0gZnVuY3Rpb24gKG9iaiwgcHJvcCwgbXNnKSB7XG4gICAgbmV3IEFzc2VydGlvbihvYmosIG1zZykudG8ubm90LmhhdmUuZGVlcC5wcm9wZXJ0eShwcm9wKTtcbiAgfTtcblxuICAvKipcbiAgICogIyMjIC5wcm9wZXJ0eVZhbChvYmplY3QsIHByb3BlcnR5LCB2YWx1ZSwgW21lc3NhZ2VdKVxuICAgKlxuICAgKiBBc3NlcnRzIHRoYXQgYG9iamVjdGAgaGFzIGEgcHJvcGVydHkgbmFtZWQgYnkgYHByb3BlcnR5YCB3aXRoIHZhbHVlIGdpdmVuXG4gICAqIGJ5IGB2YWx1ZWAuXG4gICAqXG4gICAqICAgICBhc3NlcnQucHJvcGVydHlWYWwoeyB0ZWE6ICdpcyBnb29kJyB9LCAndGVhJywgJ2lzIGdvb2QnKTtcbiAgICpcbiAgICogQG5hbWUgcHJvcGVydHlWYWxcbiAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdFxuICAgKiBAcGFyYW0ge1N0cmluZ30gcHJvcGVydHlcbiAgICogQHBhcmFtIHtNaXhlZH0gdmFsdWVcbiAgICogQHBhcmFtIHtTdHJpbmd9IG1lc3NhZ2VcbiAgICogQG5hbWVzcGFjZSBBc3NlcnRcbiAgICogQGFwaSBwdWJsaWNcbiAgICovXG5cbiAgYXNzZXJ0LnByb3BlcnR5VmFsID0gZnVuY3Rpb24gKG9iaiwgcHJvcCwgdmFsLCBtc2cpIHtcbiAgICBuZXcgQXNzZXJ0aW9uKG9iaiwgbXNnKS50by5oYXZlLnByb3BlcnR5KHByb3AsIHZhbCk7XG4gIH07XG5cbiAgLyoqXG4gICAqICMjIyAucHJvcGVydHlOb3RWYWwob2JqZWN0LCBwcm9wZXJ0eSwgdmFsdWUsIFttZXNzYWdlXSlcbiAgICpcbiAgICogQXNzZXJ0cyB0aGF0IGBvYmplY3RgIGhhcyBhIHByb3BlcnR5IG5hbWVkIGJ5IGBwcm9wZXJ0eWAsIGJ1dCB3aXRoIGEgdmFsdWVcbiAgICogZGlmZmVyZW50IGZyb20gdGhhdCBnaXZlbiBieSBgdmFsdWVgLlxuICAgKlxuICAgKiAgICAgYXNzZXJ0LnByb3BlcnR5Tm90VmFsKHsgdGVhOiAnaXMgZ29vZCcgfSwgJ3RlYScsICdpcyBiYWQnKTtcbiAgICpcbiAgICogQG5hbWUgcHJvcGVydHlOb3RWYWxcbiAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdFxuICAgKiBAcGFyYW0ge1N0cmluZ30gcHJvcGVydHlcbiAgICogQHBhcmFtIHtNaXhlZH0gdmFsdWVcbiAgICogQHBhcmFtIHtTdHJpbmd9IG1lc3NhZ2VcbiAgICogQG5hbWVzcGFjZSBBc3NlcnRcbiAgICogQGFwaSBwdWJsaWNcbiAgICovXG5cbiAgYXNzZXJ0LnByb3BlcnR5Tm90VmFsID0gZnVuY3Rpb24gKG9iaiwgcHJvcCwgdmFsLCBtc2cpIHtcbiAgICBuZXcgQXNzZXJ0aW9uKG9iaiwgbXNnKS50by5ub3QuaGF2ZS5wcm9wZXJ0eShwcm9wLCB2YWwpO1xuICB9O1xuXG4gIC8qKlxuICAgKiAjIyMgLmRlZXBQcm9wZXJ0eVZhbChvYmplY3QsIHByb3BlcnR5LCB2YWx1ZSwgW21lc3NhZ2VdKVxuICAgKlxuICAgKiBBc3NlcnRzIHRoYXQgYG9iamVjdGAgaGFzIGEgcHJvcGVydHkgbmFtZWQgYnkgYHByb3BlcnR5YCB3aXRoIHZhbHVlIGdpdmVuXG4gICAqIGJ5IGB2YWx1ZWAuIGBwcm9wZXJ0eWAgY2FuIHVzZSBkb3QtIGFuZCBicmFja2V0LW5vdGF0aW9uIGZvciBkZWVwXG4gICAqIHJlZmVyZW5jZS5cbiAgICpcbiAgICogICAgIGFzc2VydC5kZWVwUHJvcGVydHlWYWwoeyB0ZWE6IHsgZ3JlZW46ICdtYXRjaGEnIH19LCAndGVhLmdyZWVuJywgJ21hdGNoYScpO1xuICAgKlxuICAgKiBAbmFtZSBkZWVwUHJvcGVydHlWYWxcbiAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdFxuICAgKiBAcGFyYW0ge1N0cmluZ30gcHJvcGVydHlcbiAgICogQHBhcmFtIHtNaXhlZH0gdmFsdWVcbiAgICogQHBhcmFtIHtTdHJpbmd9IG1lc3NhZ2VcbiAgICogQG5hbWVzcGFjZSBBc3NlcnRcbiAgICogQGFwaSBwdWJsaWNcbiAgICovXG5cbiAgYXNzZXJ0LmRlZXBQcm9wZXJ0eVZhbCA9IGZ1bmN0aW9uIChvYmosIHByb3AsIHZhbCwgbXNnKSB7XG4gICAgbmV3IEFzc2VydGlvbihvYmosIG1zZykudG8uaGF2ZS5kZWVwLnByb3BlcnR5KHByb3AsIHZhbCk7XG4gIH07XG5cbiAgLyoqXG4gICAqICMjIyAuZGVlcFByb3BlcnR5Tm90VmFsKG9iamVjdCwgcHJvcGVydHksIHZhbHVlLCBbbWVzc2FnZV0pXG4gICAqXG4gICAqIEFzc2VydHMgdGhhdCBgb2JqZWN0YCBoYXMgYSBwcm9wZXJ0eSBuYW1lZCBieSBgcHJvcGVydHlgLCBidXQgd2l0aCBhIHZhbHVlXG4gICAqIGRpZmZlcmVudCBmcm9tIHRoYXQgZ2l2ZW4gYnkgYHZhbHVlYC4gYHByb3BlcnR5YCBjYW4gdXNlIGRvdC0gYW5kXG4gICAqIGJyYWNrZXQtbm90YXRpb24gZm9yIGRlZXAgcmVmZXJlbmNlLlxuICAgKlxuICAgKiAgICAgYXNzZXJ0LmRlZXBQcm9wZXJ0eU5vdFZhbCh7IHRlYTogeyBncmVlbjogJ21hdGNoYScgfX0sICd0ZWEuZ3JlZW4nLCAna29uYWNoYScpO1xuICAgKlxuICAgKiBAbmFtZSBkZWVwUHJvcGVydHlOb3RWYWxcbiAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdFxuICAgKiBAcGFyYW0ge1N0cmluZ30gcHJvcGVydHlcbiAgICogQHBhcmFtIHtNaXhlZH0gdmFsdWVcbiAgICogQHBhcmFtIHtTdHJpbmd9IG1lc3NhZ2VcbiAgICogQG5hbWVzcGFjZSBBc3NlcnRcbiAgICogQGFwaSBwdWJsaWNcbiAgICovXG5cbiAgYXNzZXJ0LmRlZXBQcm9wZXJ0eU5vdFZhbCA9IGZ1bmN0aW9uIChvYmosIHByb3AsIHZhbCwgbXNnKSB7XG4gICAgbmV3IEFzc2VydGlvbihvYmosIG1zZykudG8ubm90LmhhdmUuZGVlcC5wcm9wZXJ0eShwcm9wLCB2YWwpO1xuICB9O1xuXG4gIC8qKlxuICAgKiAjIyMgLmxlbmd0aE9mKG9iamVjdCwgbGVuZ3RoLCBbbWVzc2FnZV0pXG4gICAqXG4gICAqIEFzc2VydHMgdGhhdCBgb2JqZWN0YCBoYXMgYSBgbGVuZ3RoYCBwcm9wZXJ0eSB3aXRoIHRoZSBleHBlY3RlZCB2YWx1ZS5cbiAgICpcbiAgICogICAgIGFzc2VydC5sZW5ndGhPZihbMSwyLDNdLCAzLCAnYXJyYXkgaGFzIGxlbmd0aCBvZiAzJyk7XG4gICAqICAgICBhc3NlcnQubGVuZ3RoT2YoJ2Zvb2JhcicsIDYsICdzdHJpbmcgaGFzIGxlbmd0aCBvZiA2Jyk7XG4gICAqXG4gICAqIEBuYW1lIGxlbmd0aE9mXG4gICAqIEBwYXJhbSB7TWl4ZWR9IG9iamVjdFxuICAgKiBAcGFyYW0ge051bWJlcn0gbGVuZ3RoXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBtZXNzYWdlXG4gICAqIEBuYW1lc3BhY2UgQXNzZXJ0XG4gICAqIEBhcGkgcHVibGljXG4gICAqL1xuXG4gIGFzc2VydC5sZW5ndGhPZiA9IGZ1bmN0aW9uIChleHAsIGxlbiwgbXNnKSB7XG4gICAgbmV3IEFzc2VydGlvbihleHAsIG1zZykudG8uaGF2ZS5sZW5ndGgobGVuKTtcbiAgfTtcblxuICAvKipcbiAgICogIyMjIC50aHJvd3MoZnVuY3Rpb24sIFtjb25zdHJ1Y3Rvci9zdHJpbmcvcmVnZXhwXSwgW3N0cmluZy9yZWdleHBdLCBbbWVzc2FnZV0pXG4gICAqXG4gICAqIEFzc2VydHMgdGhhdCBgZnVuY3Rpb25gIHdpbGwgdGhyb3cgYW4gZXJyb3IgdGhhdCBpcyBhbiBpbnN0YW5jZSBvZlxuICAgKiBgY29uc3RydWN0b3JgLCBvciBhbHRlcm5hdGVseSB0aGF0IGl0IHdpbGwgdGhyb3cgYW4gZXJyb3Igd2l0aCBtZXNzYWdlXG4gICAqIG1hdGNoaW5nIGByZWdleHBgLlxuICAgKlxuICAgKiAgICAgYXNzZXJ0LnRocm93cyhmbiwgJ2Z1bmN0aW9uIHRocm93cyBhIHJlZmVyZW5jZSBlcnJvcicpO1xuICAgKiAgICAgYXNzZXJ0LnRocm93cyhmbiwgL2Z1bmN0aW9uIHRocm93cyBhIHJlZmVyZW5jZSBlcnJvci8pO1xuICAgKiAgICAgYXNzZXJ0LnRocm93cyhmbiwgUmVmZXJlbmNlRXJyb3IpO1xuICAgKiAgICAgYXNzZXJ0LnRocm93cyhmbiwgUmVmZXJlbmNlRXJyb3IsICdmdW5jdGlvbiB0aHJvd3MgYSByZWZlcmVuY2UgZXJyb3InKTtcbiAgICogICAgIGFzc2VydC50aHJvd3MoZm4sIFJlZmVyZW5jZUVycm9yLCAvZnVuY3Rpb24gdGhyb3dzIGEgcmVmZXJlbmNlIGVycm9yLyk7XG4gICAqXG4gICAqIEBuYW1lIHRocm93c1xuICAgKiBAYWxpYXMgdGhyb3dcbiAgICogQGFsaWFzIFRocm93XG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmN0aW9uXG4gICAqIEBwYXJhbSB7RXJyb3JDb25zdHJ1Y3Rvcn0gY29uc3RydWN0b3JcbiAgICogQHBhcmFtIHtSZWdFeHB9IHJlZ2V4cFxuICAgKiBAcGFyYW0ge1N0cmluZ30gbWVzc2FnZVxuICAgKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL0Vycm9yI0Vycm9yX3R5cGVzXG4gICAqIEBuYW1lc3BhY2UgQXNzZXJ0XG4gICAqIEBhcGkgcHVibGljXG4gICAqL1xuXG4gIGFzc2VydC50aHJvd3MgPSBmdW5jdGlvbiAoZm4sIGVycnQsIGVycnMsIG1zZykge1xuICAgIGlmICgnc3RyaW5nJyA9PT0gdHlwZW9mIGVycnQgfHwgZXJydCBpbnN0YW5jZW9mIFJlZ0V4cCkge1xuICAgICAgZXJycyA9IGVycnQ7XG4gICAgICBlcnJ0ID0gbnVsbDtcbiAgICB9XG5cbiAgICB2YXIgYXNzZXJ0RXJyID0gbmV3IEFzc2VydGlvbihmbiwgbXNnKS50by50aHJvdyhlcnJ0LCBlcnJzKTtcbiAgICByZXR1cm4gZmxhZyhhc3NlcnRFcnIsICdvYmplY3QnKTtcbiAgfTtcblxuICAvKipcbiAgICogIyMjIC5kb2VzTm90VGhyb3coZnVuY3Rpb24sIFtjb25zdHJ1Y3Rvci9yZWdleHBdLCBbbWVzc2FnZV0pXG4gICAqXG4gICAqIEFzc2VydHMgdGhhdCBgZnVuY3Rpb25gIHdpbGwgX25vdF8gdGhyb3cgYW4gZXJyb3IgdGhhdCBpcyBhbiBpbnN0YW5jZSBvZlxuICAgKiBgY29uc3RydWN0b3JgLCBvciBhbHRlcm5hdGVseSB0aGF0IGl0IHdpbGwgbm90IHRocm93IGFuIGVycm9yIHdpdGggbWVzc2FnZVxuICAgKiBtYXRjaGluZyBgcmVnZXhwYC5cbiAgICpcbiAgICogICAgIGFzc2VydC5kb2VzTm90VGhyb3coZm4sIEVycm9yLCAnZnVuY3Rpb24gZG9lcyBub3QgdGhyb3cnKTtcbiAgICpcbiAgICogQG5hbWUgZG9lc05vdFRocm93XG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmN0aW9uXG4gICAqIEBwYXJhbSB7RXJyb3JDb25zdHJ1Y3Rvcn0gY29uc3RydWN0b3JcbiAgICogQHBhcmFtIHtSZWdFeHB9IHJlZ2V4cFxuICAgKiBAcGFyYW0ge1N0cmluZ30gbWVzc2FnZVxuICAgKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL0Vycm9yI0Vycm9yX3R5cGVzXG4gICAqIEBuYW1lc3BhY2UgQXNzZXJ0XG4gICAqIEBhcGkgcHVibGljXG4gICAqL1xuXG4gIGFzc2VydC5kb2VzTm90VGhyb3cgPSBmdW5jdGlvbiAoZm4sIHR5cGUsIG1zZykge1xuICAgIGlmICgnc3RyaW5nJyA9PT0gdHlwZW9mIHR5cGUpIHtcbiAgICAgIG1zZyA9IHR5cGU7XG4gICAgICB0eXBlID0gbnVsbDtcbiAgICB9XG5cbiAgICBuZXcgQXNzZXJ0aW9uKGZuLCBtc2cpLnRvLm5vdC5UaHJvdyh0eXBlKTtcbiAgfTtcblxuICAvKipcbiAgICogIyMjIC5vcGVyYXRvcih2YWwxLCBvcGVyYXRvciwgdmFsMiwgW21lc3NhZ2VdKVxuICAgKlxuICAgKiBDb21wYXJlcyB0d28gdmFsdWVzIHVzaW5nIGBvcGVyYXRvcmAuXG4gICAqXG4gICAqICAgICBhc3NlcnQub3BlcmF0b3IoMSwgJzwnLCAyLCAnZXZlcnl0aGluZyBpcyBvaycpO1xuICAgKiAgICAgYXNzZXJ0Lm9wZXJhdG9yKDEsICc+JywgMiwgJ3RoaXMgd2lsbCBmYWlsJyk7XG4gICAqXG4gICAqIEBuYW1lIG9wZXJhdG9yXG4gICAqIEBwYXJhbSB7TWl4ZWR9IHZhbDFcbiAgICogQHBhcmFtIHtTdHJpbmd9IG9wZXJhdG9yXG4gICAqIEBwYXJhbSB7TWl4ZWR9IHZhbDJcbiAgICogQHBhcmFtIHtTdHJpbmd9IG1lc3NhZ2VcbiAgICogQG5hbWVzcGFjZSBBc3NlcnRcbiAgICogQGFwaSBwdWJsaWNcbiAgICovXG5cbiAgYXNzZXJ0Lm9wZXJhdG9yID0gZnVuY3Rpb24gKHZhbCwgb3BlcmF0b3IsIHZhbDIsIG1zZykge1xuICAgIHZhciBvaztcbiAgICBzd2l0Y2gob3BlcmF0b3IpIHtcbiAgICAgIGNhc2UgJz09JzpcbiAgICAgICAgb2sgPSB2YWwgPT0gdmFsMjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICc9PT0nOlxuICAgICAgICBvayA9IHZhbCA9PT0gdmFsMjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICc+JzpcbiAgICAgICAgb2sgPSB2YWwgPiB2YWwyO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJz49JzpcbiAgICAgICAgb2sgPSB2YWwgPj0gdmFsMjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICc8JzpcbiAgICAgICAgb2sgPSB2YWwgPCB2YWwyO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJzw9JzpcbiAgICAgICAgb2sgPSB2YWwgPD0gdmFsMjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICchPSc6XG4gICAgICAgIG9rID0gdmFsICE9IHZhbDI7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnIT09JzpcbiAgICAgICAgb2sgPSB2YWwgIT09IHZhbDI7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIG9wZXJhdG9yIFwiJyArIG9wZXJhdG9yICsgJ1wiJyk7XG4gICAgfVxuICAgIHZhciB0ZXN0ID0gbmV3IEFzc2VydGlvbihvaywgbXNnKTtcbiAgICB0ZXN0LmFzc2VydChcbiAgICAgICAgdHJ1ZSA9PT0gZmxhZyh0ZXN0LCAnb2JqZWN0JylcbiAgICAgICwgJ2V4cGVjdGVkICcgKyB1dGlsLmluc3BlY3QodmFsKSArICcgdG8gYmUgJyArIG9wZXJhdG9yICsgJyAnICsgdXRpbC5pbnNwZWN0KHZhbDIpXG4gICAgICAsICdleHBlY3RlZCAnICsgdXRpbC5pbnNwZWN0KHZhbCkgKyAnIHRvIG5vdCBiZSAnICsgb3BlcmF0b3IgKyAnICcgKyB1dGlsLmluc3BlY3QodmFsMikgKTtcbiAgfTtcblxuICAvKipcbiAgICogIyMjIC5jbG9zZVRvKGFjdHVhbCwgZXhwZWN0ZWQsIGRlbHRhLCBbbWVzc2FnZV0pXG4gICAqXG4gICAqIEFzc2VydHMgdGhhdCB0aGUgdGFyZ2V0IGlzIGVxdWFsIGBleHBlY3RlZGAsIHRvIHdpdGhpbiBhICsvLSBgZGVsdGFgIHJhbmdlLlxuICAgKlxuICAgKiAgICAgYXNzZXJ0LmNsb3NlVG8oMS41LCAxLCAwLjUsICdudW1iZXJzIGFyZSBjbG9zZScpO1xuICAgKlxuICAgKiBAbmFtZSBjbG9zZVRvXG4gICAqIEBwYXJhbSB7TnVtYmVyfSBhY3R1YWxcbiAgICogQHBhcmFtIHtOdW1iZXJ9IGV4cGVjdGVkXG4gICAqIEBwYXJhbSB7TnVtYmVyfSBkZWx0YVxuICAgKiBAcGFyYW0ge1N0cmluZ30gbWVzc2FnZVxuICAgKiBAbmFtZXNwYWNlIEFzc2VydFxuICAgKiBAYXBpIHB1YmxpY1xuICAgKi9cblxuICBhc3NlcnQuY2xvc2VUbyA9IGZ1bmN0aW9uIChhY3QsIGV4cCwgZGVsdGEsIG1zZykge1xuICAgIG5ldyBBc3NlcnRpb24oYWN0LCBtc2cpLnRvLmJlLmNsb3NlVG8oZXhwLCBkZWx0YSk7XG4gIH07XG5cbiAgLyoqXG4gICAqICMjIyAuYXBwcm94aW1hdGVseShhY3R1YWwsIGV4cGVjdGVkLCBkZWx0YSwgW21lc3NhZ2VdKVxuICAgKlxuICAgKiBBc3NlcnRzIHRoYXQgdGhlIHRhcmdldCBpcyBlcXVhbCBgZXhwZWN0ZWRgLCB0byB3aXRoaW4gYSArLy0gYGRlbHRhYCByYW5nZS5cbiAgICpcbiAgICogICAgIGFzc2VydC5hcHByb3hpbWF0ZWx5KDEuNSwgMSwgMC41LCAnbnVtYmVycyBhcmUgY2xvc2UnKTtcbiAgICpcbiAgICogQG5hbWUgYXBwcm94aW1hdGVseVxuICAgKiBAcGFyYW0ge051bWJlcn0gYWN0dWFsXG4gICAqIEBwYXJhbSB7TnVtYmVyfSBleHBlY3RlZFxuICAgKiBAcGFyYW0ge051bWJlcn0gZGVsdGFcbiAgICogQHBhcmFtIHtTdHJpbmd9IG1lc3NhZ2VcbiAgICogQG5hbWVzcGFjZSBBc3NlcnRcbiAgICogQGFwaSBwdWJsaWNcbiAgICovXG5cbiAgYXNzZXJ0LmFwcHJveGltYXRlbHkgPSBmdW5jdGlvbiAoYWN0LCBleHAsIGRlbHRhLCBtc2cpIHtcbiAgICBuZXcgQXNzZXJ0aW9uKGFjdCwgbXNnKS50by5iZS5hcHByb3hpbWF0ZWx5KGV4cCwgZGVsdGEpO1xuICB9O1xuXG4gIC8qKlxuICAgKiAjIyMgLnNhbWVNZW1iZXJzKHNldDEsIHNldDIsIFttZXNzYWdlXSlcbiAgICpcbiAgICogQXNzZXJ0cyB0aGF0IGBzZXQxYCBhbmQgYHNldDJgIGhhdmUgdGhlIHNhbWUgbWVtYmVycy5cbiAgICogT3JkZXIgaXMgbm90IHRha2VuIGludG8gYWNjb3VudC5cbiAgICpcbiAgICogICAgIGFzc2VydC5zYW1lTWVtYmVycyhbIDEsIDIsIDMgXSwgWyAyLCAxLCAzIF0sICdzYW1lIG1lbWJlcnMnKTtcbiAgICpcbiAgICogQG5hbWUgc2FtZU1lbWJlcnNcbiAgICogQHBhcmFtIHtBcnJheX0gc2V0MVxuICAgKiBAcGFyYW0ge0FycmF5fSBzZXQyXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBtZXNzYWdlXG4gICAqIEBuYW1lc3BhY2UgQXNzZXJ0XG4gICAqIEBhcGkgcHVibGljXG4gICAqL1xuXG4gIGFzc2VydC5zYW1lTWVtYmVycyA9IGZ1bmN0aW9uIChzZXQxLCBzZXQyLCBtc2cpIHtcbiAgICBuZXcgQXNzZXJ0aW9uKHNldDEsIG1zZykudG8uaGF2ZS5zYW1lLm1lbWJlcnMoc2V0Mik7XG4gIH1cblxuICAvKipcbiAgICogIyMjIC5zYW1lRGVlcE1lbWJlcnMoc2V0MSwgc2V0MiwgW21lc3NhZ2VdKVxuICAgKlxuICAgKiBBc3NlcnRzIHRoYXQgYHNldDFgIGFuZCBgc2V0MmAgaGF2ZSB0aGUgc2FtZSBtZW1iZXJzIC0gdXNpbmcgYSBkZWVwIGVxdWFsaXR5IGNoZWNraW5nLlxuICAgKiBPcmRlciBpcyBub3QgdGFrZW4gaW50byBhY2NvdW50LlxuICAgKlxuICAgKiAgICAgYXNzZXJ0LnNhbWVEZWVwTWVtYmVycyhbIHtiOiAzfSwge2E6IDJ9LCB7YzogNX0gXSwgWyB7YzogNX0sIHtiOiAzfSwge2E6IDJ9IF0sICdzYW1lIGRlZXAgbWVtYmVycycpO1xuICAgKlxuICAgKiBAbmFtZSBzYW1lRGVlcE1lbWJlcnNcbiAgICogQHBhcmFtIHtBcnJheX0gc2V0MVxuICAgKiBAcGFyYW0ge0FycmF5fSBzZXQyXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBtZXNzYWdlXG4gICAqIEBuYW1lc3BhY2UgQXNzZXJ0XG4gICAqIEBhcGkgcHVibGljXG4gICAqL1xuXG4gIGFzc2VydC5zYW1lRGVlcE1lbWJlcnMgPSBmdW5jdGlvbiAoc2V0MSwgc2V0MiwgbXNnKSB7XG4gICAgbmV3IEFzc2VydGlvbihzZXQxLCBtc2cpLnRvLmhhdmUuc2FtZS5kZWVwLm1lbWJlcnMoc2V0Mik7XG4gIH1cblxuICAvKipcbiAgICogIyMjIC5pbmNsdWRlTWVtYmVycyhzdXBlcnNldCwgc3Vic2V0LCBbbWVzc2FnZV0pXG4gICAqXG4gICAqIEFzc2VydHMgdGhhdCBgc3Vic2V0YCBpcyBpbmNsdWRlZCBpbiBgc3VwZXJzZXRgLlxuICAgKiBPcmRlciBpcyBub3QgdGFrZW4gaW50byBhY2NvdW50LlxuICAgKlxuICAgKiAgICAgYXNzZXJ0LmluY2x1ZGVNZW1iZXJzKFsgMSwgMiwgMyBdLCBbIDIsIDEgXSwgJ2luY2x1ZGUgbWVtYmVycycpO1xuICAgKlxuICAgKiBAbmFtZSBpbmNsdWRlTWVtYmVyc1xuICAgKiBAcGFyYW0ge0FycmF5fSBzdXBlcnNldFxuICAgKiBAcGFyYW0ge0FycmF5fSBzdWJzZXRcbiAgICogQHBhcmFtIHtTdHJpbmd9IG1lc3NhZ2VcbiAgICogQG5hbWVzcGFjZSBBc3NlcnRcbiAgICogQGFwaSBwdWJsaWNcbiAgICovXG5cbiAgYXNzZXJ0LmluY2x1ZGVNZW1iZXJzID0gZnVuY3Rpb24gKHN1cGVyc2V0LCBzdWJzZXQsIG1zZykge1xuICAgIG5ldyBBc3NlcnRpb24oc3VwZXJzZXQsIG1zZykudG8uaW5jbHVkZS5tZW1iZXJzKHN1YnNldCk7XG4gIH1cblxuICAvKipcbiAgICogIyMjIC5pbmNsdWRlRGVlcE1lbWJlcnMoc3VwZXJzZXQsIHN1YnNldCwgW21lc3NhZ2VdKVxuICAgKlxuICAgKiBBc3NlcnRzIHRoYXQgYHN1YnNldGAgaXMgaW5jbHVkZWQgaW4gYHN1cGVyc2V0YCAtIHVzaW5nIGRlZXAgZXF1YWxpdHkgY2hlY2tpbmcuXG4gICAqIE9yZGVyIGlzIG5vdCB0YWtlbiBpbnRvIGFjY291bnQuXG4gICAqIER1cGxpY2F0ZXMgYXJlIGlnbm9yZWQuXG4gICAqXG4gICAqICAgICBhc3NlcnQuaW5jbHVkZURlZXBNZW1iZXJzKFsge2E6IDF9LCB7YjogMn0sIHtjOiAzfSBdLCBbIHtiOiAyfSwge2E6IDF9LCB7YjogMn0gXSwgJ2luY2x1ZGUgZGVlcCBtZW1iZXJzJyk7XG4gICAqXG4gICAqIEBuYW1lIGluY2x1ZGVEZWVwTWVtYmVyc1xuICAgKiBAcGFyYW0ge0FycmF5fSBzdXBlcnNldFxuICAgKiBAcGFyYW0ge0FycmF5fSBzdWJzZXRcbiAgICogQHBhcmFtIHtTdHJpbmd9IG1lc3NhZ2VcbiAgICogQG5hbWVzcGFjZSBBc3NlcnRcbiAgICogQGFwaSBwdWJsaWNcbiAgICovXG5cbiAgYXNzZXJ0LmluY2x1ZGVEZWVwTWVtYmVycyA9IGZ1bmN0aW9uIChzdXBlcnNldCwgc3Vic2V0LCBtc2cpIHtcbiAgICBuZXcgQXNzZXJ0aW9uKHN1cGVyc2V0LCBtc2cpLnRvLmluY2x1ZGUuZGVlcC5tZW1iZXJzKHN1YnNldCk7XG4gIH1cblxuICAvKipcbiAgICogIyMjIC5vbmVPZihpbkxpc3QsIGxpc3QsIFttZXNzYWdlXSlcbiAgICpcbiAgICogQXNzZXJ0cyB0aGF0IG5vbi1vYmplY3QsIG5vbi1hcnJheSB2YWx1ZSBgaW5MaXN0YCBhcHBlYXJzIGluIHRoZSBmbGF0IGFycmF5IGBsaXN0YC5cbiAgICpcbiAgICogICAgIGFzc2VydC5vbmVPZigxLCBbIDIsIDEgXSwgJ05vdCBmb3VuZCBpbiBsaXN0Jyk7XG4gICAqXG4gICAqIEBuYW1lIG9uZU9mXG4gICAqIEBwYXJhbSB7Kn0gaW5MaXN0XG4gICAqIEBwYXJhbSB7QXJyYXk8Kj59IGxpc3RcbiAgICogQHBhcmFtIHtTdHJpbmd9IG1lc3NhZ2VcbiAgICogQG5hbWVzcGFjZSBBc3NlcnRcbiAgICogQGFwaSBwdWJsaWNcbiAgICovXG5cbiAgYXNzZXJ0Lm9uZU9mID0gZnVuY3Rpb24gKGluTGlzdCwgbGlzdCwgbXNnKSB7XG4gICAgbmV3IEFzc2VydGlvbihpbkxpc3QsIG1zZykudG8uYmUub25lT2YobGlzdCk7XG4gIH1cblxuICAgLyoqXG4gICAqICMjIyAuY2hhbmdlcyhmdW5jdGlvbiwgb2JqZWN0LCBwcm9wZXJ0eSlcbiAgICpcbiAgICogQXNzZXJ0cyB0aGF0IGEgZnVuY3Rpb24gY2hhbmdlcyB0aGUgdmFsdWUgb2YgYSBwcm9wZXJ0eVxuICAgKlxuICAgKiAgICAgdmFyIG9iaiA9IHsgdmFsOiAxMCB9O1xuICAgKiAgICAgdmFyIGZuID0gZnVuY3Rpb24oKSB7IG9iai52YWwgPSAyMiB9O1xuICAgKiAgICAgYXNzZXJ0LmNoYW5nZXMoZm4sIG9iaiwgJ3ZhbCcpO1xuICAgKlxuICAgKiBAbmFtZSBjaGFuZ2VzXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IG1vZGlmaWVyIGZ1bmN0aW9uXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3RcbiAgICogQHBhcmFtIHtTdHJpbmd9IHByb3BlcnR5IG5hbWVcbiAgICogQHBhcmFtIHtTdHJpbmd9IG1lc3NhZ2UgX29wdGlvbmFsX1xuICAgKiBAbmFtZXNwYWNlIEFzc2VydFxuICAgKiBAYXBpIHB1YmxpY1xuICAgKi9cblxuICBhc3NlcnQuY2hhbmdlcyA9IGZ1bmN0aW9uIChmbiwgb2JqLCBwcm9wKSB7XG4gICAgbmV3IEFzc2VydGlvbihmbikudG8uY2hhbmdlKG9iaiwgcHJvcCk7XG4gIH1cblxuICAgLyoqXG4gICAqICMjIyAuZG9lc05vdENoYW5nZShmdW5jdGlvbiwgb2JqZWN0LCBwcm9wZXJ0eSlcbiAgICpcbiAgICogQXNzZXJ0cyB0aGF0IGEgZnVuY3Rpb24gZG9lcyBub3QgY2hhbmdlcyB0aGUgdmFsdWUgb2YgYSBwcm9wZXJ0eVxuICAgKlxuICAgKiAgICAgdmFyIG9iaiA9IHsgdmFsOiAxMCB9O1xuICAgKiAgICAgdmFyIGZuID0gZnVuY3Rpb24oKSB7IGNvbnNvbGUubG9nKCdmb28nKTsgfTtcbiAgICogICAgIGFzc2VydC5kb2VzTm90Q2hhbmdlKGZuLCBvYmosICd2YWwnKTtcbiAgICpcbiAgICogQG5hbWUgZG9lc05vdENoYW5nZVxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBtb2RpZmllciBmdW5jdGlvblxuICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0XG4gICAqIEBwYXJhbSB7U3RyaW5nfSBwcm9wZXJ0eSBuYW1lXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBtZXNzYWdlIF9vcHRpb25hbF9cbiAgICogQG5hbWVzcGFjZSBBc3NlcnRcbiAgICogQGFwaSBwdWJsaWNcbiAgICovXG5cbiAgYXNzZXJ0LmRvZXNOb3RDaGFuZ2UgPSBmdW5jdGlvbiAoZm4sIG9iaiwgcHJvcCkge1xuICAgIG5ldyBBc3NlcnRpb24oZm4pLnRvLm5vdC5jaGFuZ2Uob2JqLCBwcm9wKTtcbiAgfVxuXG4gICAvKipcbiAgICogIyMjIC5pbmNyZWFzZXMoZnVuY3Rpb24sIG9iamVjdCwgcHJvcGVydHkpXG4gICAqXG4gICAqIEFzc2VydHMgdGhhdCBhIGZ1bmN0aW9uIGluY3JlYXNlcyBhbiBvYmplY3QgcHJvcGVydHlcbiAgICpcbiAgICogICAgIHZhciBvYmogPSB7IHZhbDogMTAgfTtcbiAgICogICAgIHZhciBmbiA9IGZ1bmN0aW9uKCkgeyBvYmoudmFsID0gMTMgfTtcbiAgICogICAgIGFzc2VydC5pbmNyZWFzZXMoZm4sIG9iaiwgJ3ZhbCcpO1xuICAgKlxuICAgKiBAbmFtZSBpbmNyZWFzZXNcbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gbW9kaWZpZXIgZnVuY3Rpb25cbiAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdFxuICAgKiBAcGFyYW0ge1N0cmluZ30gcHJvcGVydHkgbmFtZVxuICAgKiBAcGFyYW0ge1N0cmluZ30gbWVzc2FnZSBfb3B0aW9uYWxfXG4gICAqIEBuYW1lc3BhY2UgQXNzZXJ0XG4gICAqIEBhcGkgcHVibGljXG4gICAqL1xuXG4gIGFzc2VydC5pbmNyZWFzZXMgPSBmdW5jdGlvbiAoZm4sIG9iaiwgcHJvcCkge1xuICAgIG5ldyBBc3NlcnRpb24oZm4pLnRvLmluY3JlYXNlKG9iaiwgcHJvcCk7XG4gIH1cblxuICAgLyoqXG4gICAqICMjIyAuZG9lc05vdEluY3JlYXNlKGZ1bmN0aW9uLCBvYmplY3QsIHByb3BlcnR5KVxuICAgKlxuICAgKiBBc3NlcnRzIHRoYXQgYSBmdW5jdGlvbiBkb2VzIG5vdCBpbmNyZWFzZSBvYmplY3QgcHJvcGVydHlcbiAgICpcbiAgICogICAgIHZhciBvYmogPSB7IHZhbDogMTAgfTtcbiAgICogICAgIHZhciBmbiA9IGZ1bmN0aW9uKCkgeyBvYmoudmFsID0gOCB9O1xuICAgKiAgICAgYXNzZXJ0LmRvZXNOb3RJbmNyZWFzZShmbiwgb2JqLCAndmFsJyk7XG4gICAqXG4gICAqIEBuYW1lIGRvZXNOb3RJbmNyZWFzZVxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBtb2RpZmllciBmdW5jdGlvblxuICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0XG4gICAqIEBwYXJhbSB7U3RyaW5nfSBwcm9wZXJ0eSBuYW1lXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBtZXNzYWdlIF9vcHRpb25hbF9cbiAgICogQG5hbWVzcGFjZSBBc3NlcnRcbiAgICogQGFwaSBwdWJsaWNcbiAgICovXG5cbiAgYXNzZXJ0LmRvZXNOb3RJbmNyZWFzZSA9IGZ1bmN0aW9uIChmbiwgb2JqLCBwcm9wKSB7XG4gICAgbmV3IEFzc2VydGlvbihmbikudG8ubm90LmluY3JlYXNlKG9iaiwgcHJvcCk7XG4gIH1cblxuICAgLyoqXG4gICAqICMjIyAuZGVjcmVhc2VzKGZ1bmN0aW9uLCBvYmplY3QsIHByb3BlcnR5KVxuICAgKlxuICAgKiBBc3NlcnRzIHRoYXQgYSBmdW5jdGlvbiBkZWNyZWFzZXMgYW4gb2JqZWN0IHByb3BlcnR5XG4gICAqXG4gICAqICAgICB2YXIgb2JqID0geyB2YWw6IDEwIH07XG4gICAqICAgICB2YXIgZm4gPSBmdW5jdGlvbigpIHsgb2JqLnZhbCA9IDUgfTtcbiAgICogICAgIGFzc2VydC5kZWNyZWFzZXMoZm4sIG9iaiwgJ3ZhbCcpO1xuICAgKlxuICAgKiBAbmFtZSBkZWNyZWFzZXNcbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gbW9kaWZpZXIgZnVuY3Rpb25cbiAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdFxuICAgKiBAcGFyYW0ge1N0cmluZ30gcHJvcGVydHkgbmFtZVxuICAgKiBAcGFyYW0ge1N0cmluZ30gbWVzc2FnZSBfb3B0aW9uYWxfXG4gICAqIEBuYW1lc3BhY2UgQXNzZXJ0XG4gICAqIEBhcGkgcHVibGljXG4gICAqL1xuXG4gIGFzc2VydC5kZWNyZWFzZXMgPSBmdW5jdGlvbiAoZm4sIG9iaiwgcHJvcCkge1xuICAgIG5ldyBBc3NlcnRpb24oZm4pLnRvLmRlY3JlYXNlKG9iaiwgcHJvcCk7XG4gIH1cblxuICAgLyoqXG4gICAqICMjIyAuZG9lc05vdERlY3JlYXNlKGZ1bmN0aW9uLCBvYmplY3QsIHByb3BlcnR5KVxuICAgKlxuICAgKiBBc3NlcnRzIHRoYXQgYSBmdW5jdGlvbiBkb2VzIG5vdCBkZWNyZWFzZXMgYW4gb2JqZWN0IHByb3BlcnR5XG4gICAqXG4gICAqICAgICB2YXIgb2JqID0geyB2YWw6IDEwIH07XG4gICAqICAgICB2YXIgZm4gPSBmdW5jdGlvbigpIHsgb2JqLnZhbCA9IDE1IH07XG4gICAqICAgICBhc3NlcnQuZG9lc05vdERlY3JlYXNlKGZuLCBvYmosICd2YWwnKTtcbiAgICpcbiAgICogQG5hbWUgZG9lc05vdERlY3JlYXNlXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IG1vZGlmaWVyIGZ1bmN0aW9uXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3RcbiAgICogQHBhcmFtIHtTdHJpbmd9IHByb3BlcnR5IG5hbWVcbiAgICogQHBhcmFtIHtTdHJpbmd9IG1lc3NhZ2UgX29wdGlvbmFsX1xuICAgKiBAbmFtZXNwYWNlIEFzc2VydFxuICAgKiBAYXBpIHB1YmxpY1xuICAgKi9cblxuICBhc3NlcnQuZG9lc05vdERlY3JlYXNlID0gZnVuY3Rpb24gKGZuLCBvYmosIHByb3ApIHtcbiAgICBuZXcgQXNzZXJ0aW9uKGZuKS50by5ub3QuZGVjcmVhc2Uob2JqLCBwcm9wKTtcbiAgfVxuXG4gIC8qIVxuICAgKiAjIyMgLmlmRXJyb3Iob2JqZWN0KVxuICAgKlxuICAgKiBBc3NlcnRzIGlmIHZhbHVlIGlzIG5vdCBhIGZhbHNlIHZhbHVlLCBhbmQgdGhyb3dzIGlmIGl0IGlzIGEgdHJ1ZSB2YWx1ZS5cbiAgICogVGhpcyBpcyBhZGRlZCB0byBhbGxvdyBmb3IgY2hhaSB0byBiZSBhIGRyb3AtaW4gcmVwbGFjZW1lbnQgZm9yIE5vZGUnc1xuICAgKiBhc3NlcnQgY2xhc3MuXG4gICAqXG4gICAqICAgICB2YXIgZXJyID0gbmV3IEVycm9yKCdJIGFtIGEgY3VzdG9tIGVycm9yJyk7XG4gICAqICAgICBhc3NlcnQuaWZFcnJvcihlcnIpOyAvLyBSZXRocm93cyBlcnIhXG4gICAqXG4gICAqIEBuYW1lIGlmRXJyb3JcbiAgICogQHBhcmFtIHtPYmplY3R9IG9iamVjdFxuICAgKiBAbmFtZXNwYWNlIEFzc2VydFxuICAgKiBAYXBpIHB1YmxpY1xuICAgKi9cblxuICBhc3NlcnQuaWZFcnJvciA9IGZ1bmN0aW9uICh2YWwpIHtcbiAgICBpZiAodmFsKSB7XG4gICAgICB0aHJvdyh2YWwpO1xuICAgIH1cbiAgfTtcblxuICAvKipcbiAgICogIyMjIC5pc0V4dGVuc2libGUob2JqZWN0KVxuICAgKlxuICAgKiBBc3NlcnRzIHRoYXQgYG9iamVjdGAgaXMgZXh0ZW5zaWJsZSAoY2FuIGhhdmUgbmV3IHByb3BlcnRpZXMgYWRkZWQgdG8gaXQpLlxuICAgKlxuICAgKiAgICAgYXNzZXJ0LmlzRXh0ZW5zaWJsZSh7fSk7XG4gICAqXG4gICAqIEBuYW1lIGlzRXh0ZW5zaWJsZVxuICAgKiBAYWxpYXMgZXh0ZW5zaWJsZVxuICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0XG4gICAqIEBwYXJhbSB7U3RyaW5nfSBtZXNzYWdlIF9vcHRpb25hbF9cbiAgICogQG5hbWVzcGFjZSBBc3NlcnRcbiAgICogQGFwaSBwdWJsaWNcbiAgICovXG5cbiAgYXNzZXJ0LmlzRXh0ZW5zaWJsZSA9IGZ1bmN0aW9uIChvYmosIG1zZykge1xuICAgIG5ldyBBc3NlcnRpb24ob2JqLCBtc2cpLnRvLmJlLmV4dGVuc2libGU7XG4gIH07XG5cbiAgLyoqXG4gICAqICMjIyAuaXNOb3RFeHRlbnNpYmxlKG9iamVjdClcbiAgICpcbiAgICogQXNzZXJ0cyB0aGF0IGBvYmplY3RgIGlzIF9ub3RfIGV4dGVuc2libGUuXG4gICAqXG4gICAqICAgICB2YXIgbm9uRXh0ZW5zaWJsZU9iamVjdCA9IE9iamVjdC5wcmV2ZW50RXh0ZW5zaW9ucyh7fSk7XG4gICAqICAgICB2YXIgc2VhbGVkT2JqZWN0ID0gT2JqZWN0LnNlYWwoe30pO1xuICAgKiAgICAgdmFyIGZyb3plbk9iamVjdCA9IE9iamVjdC5mcmVlc2Uoe30pO1xuICAgKlxuICAgKiAgICAgYXNzZXJ0LmlzTm90RXh0ZW5zaWJsZShub25FeHRlbnNpYmxlT2JqZWN0KTtcbiAgICogICAgIGFzc2VydC5pc05vdEV4dGVuc2libGUoc2VhbGVkT2JqZWN0KTtcbiAgICogICAgIGFzc2VydC5pc05vdEV4dGVuc2libGUoZnJvemVuT2JqZWN0KTtcbiAgICpcbiAgICogQG5hbWUgaXNOb3RFeHRlbnNpYmxlXG4gICAqIEBhbGlhcyBub3RFeHRlbnNpYmxlXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3RcbiAgICogQHBhcmFtIHtTdHJpbmd9IG1lc3NhZ2UgX29wdGlvbmFsX1xuICAgKiBAbmFtZXNwYWNlIEFzc2VydFxuICAgKiBAYXBpIHB1YmxpY1xuICAgKi9cblxuICBhc3NlcnQuaXNOb3RFeHRlbnNpYmxlID0gZnVuY3Rpb24gKG9iaiwgbXNnKSB7XG4gICAgbmV3IEFzc2VydGlvbihvYmosIG1zZykudG8ubm90LmJlLmV4dGVuc2libGU7XG4gIH07XG5cbiAgLyoqXG4gICAqICMjIyAuaXNTZWFsZWQob2JqZWN0KVxuICAgKlxuICAgKiBBc3NlcnRzIHRoYXQgYG9iamVjdGAgaXMgc2VhbGVkIChjYW5ub3QgaGF2ZSBuZXcgcHJvcGVydGllcyBhZGRlZCB0byBpdFxuICAgKiBhbmQgaXRzIGV4aXN0aW5nIHByb3BlcnRpZXMgY2Fubm90IGJlIHJlbW92ZWQpLlxuICAgKlxuICAgKiAgICAgdmFyIHNlYWxlZE9iamVjdCA9IE9iamVjdC5zZWFsKHt9KTtcbiAgICogICAgIHZhciBmcm96ZW5PYmplY3QgPSBPYmplY3Quc2VhbCh7fSk7XG4gICAqXG4gICAqICAgICBhc3NlcnQuaXNTZWFsZWQoc2VhbGVkT2JqZWN0KTtcbiAgICogICAgIGFzc2VydC5pc1NlYWxlZChmcm96ZW5PYmplY3QpO1xuICAgKlxuICAgKiBAbmFtZSBpc1NlYWxlZFxuICAgKiBAYWxpYXMgc2VhbGVkXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3RcbiAgICogQHBhcmFtIHtTdHJpbmd9IG1lc3NhZ2UgX29wdGlvbmFsX1xuICAgKiBAbmFtZXNwYWNlIEFzc2VydFxuICAgKiBAYXBpIHB1YmxpY1xuICAgKi9cblxuICBhc3NlcnQuaXNTZWFsZWQgPSBmdW5jdGlvbiAob2JqLCBtc2cpIHtcbiAgICBuZXcgQXNzZXJ0aW9uKG9iaiwgbXNnKS50by5iZS5zZWFsZWQ7XG4gIH07XG5cbiAgLyoqXG4gICAqICMjIyAuaXNOb3RTZWFsZWQob2JqZWN0KVxuICAgKlxuICAgKiBBc3NlcnRzIHRoYXQgYG9iamVjdGAgaXMgX25vdF8gc2VhbGVkLlxuICAgKlxuICAgKiAgICAgYXNzZXJ0LmlzTm90U2VhbGVkKHt9KTtcbiAgICpcbiAgICogQG5hbWUgaXNOb3RTZWFsZWRcbiAgICogQGFsaWFzIG5vdFNlYWxlZFxuICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0XG4gICAqIEBwYXJhbSB7U3RyaW5nfSBtZXNzYWdlIF9vcHRpb25hbF9cbiAgICogQG5hbWVzcGFjZSBBc3NlcnRcbiAgICogQGFwaSBwdWJsaWNcbiAgICovXG5cbiAgYXNzZXJ0LmlzTm90U2VhbGVkID0gZnVuY3Rpb24gKG9iaiwgbXNnKSB7XG4gICAgbmV3IEFzc2VydGlvbihvYmosIG1zZykudG8ubm90LmJlLnNlYWxlZDtcbiAgfTtcblxuICAvKipcbiAgICogIyMjIC5pc0Zyb3plbihvYmplY3QpXG4gICAqXG4gICAqIEFzc2VydHMgdGhhdCBgb2JqZWN0YCBpcyBmcm96ZW4gKGNhbm5vdCBoYXZlIG5ldyBwcm9wZXJ0aWVzIGFkZGVkIHRvIGl0XG4gICAqIGFuZCBpdHMgZXhpc3RpbmcgcHJvcGVydGllcyBjYW5ub3QgYmUgbW9kaWZpZWQpLlxuICAgKlxuICAgKiAgICAgdmFyIGZyb3plbk9iamVjdCA9IE9iamVjdC5mcmVlemUoe30pO1xuICAgKiAgICAgYXNzZXJ0LmZyb3plbihmcm96ZW5PYmplY3QpO1xuICAgKlxuICAgKiBAbmFtZSBpc0Zyb3plblxuICAgKiBAYWxpYXMgZnJvemVuXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3RcbiAgICogQHBhcmFtIHtTdHJpbmd9IG1lc3NhZ2UgX29wdGlvbmFsX1xuICAgKiBAbmFtZXNwYWNlIEFzc2VydFxuICAgKiBAYXBpIHB1YmxpY1xuICAgKi9cblxuICBhc3NlcnQuaXNGcm96ZW4gPSBmdW5jdGlvbiAob2JqLCBtc2cpIHtcbiAgICBuZXcgQXNzZXJ0aW9uKG9iaiwgbXNnKS50by5iZS5mcm96ZW47XG4gIH07XG5cbiAgLyoqXG4gICAqICMjIyAuaXNOb3RGcm96ZW4ob2JqZWN0KVxuICAgKlxuICAgKiBBc3NlcnRzIHRoYXQgYG9iamVjdGAgaXMgX25vdF8gZnJvemVuLlxuICAgKlxuICAgKiAgICAgYXNzZXJ0LmlzTm90RnJvemVuKHt9KTtcbiAgICpcbiAgICogQG5hbWUgaXNOb3RGcm96ZW5cbiAgICogQGFsaWFzIG5vdEZyb3plblxuICAgKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0XG4gICAqIEBwYXJhbSB7U3RyaW5nfSBtZXNzYWdlIF9vcHRpb25hbF9cbiAgICogQG5hbWVzcGFjZSBBc3NlcnRcbiAgICogQGFwaSBwdWJsaWNcbiAgICovXG5cbiAgYXNzZXJ0LmlzTm90RnJvemVuID0gZnVuY3Rpb24gKG9iaiwgbXNnKSB7XG4gICAgbmV3IEFzc2VydGlvbihvYmosIG1zZykudG8ubm90LmJlLmZyb3plbjtcbiAgfTtcblxuICAvKiFcbiAgICogQWxpYXNlcy5cbiAgICovXG5cbiAgKGZ1bmN0aW9uIGFsaWFzKG5hbWUsIGFzKXtcbiAgICBhc3NlcnRbYXNdID0gYXNzZXJ0W25hbWVdO1xuICAgIHJldHVybiBhbGlhcztcbiAgfSlcbiAgKCdpc09rJywgJ29rJylcbiAgKCdpc05vdE9rJywgJ25vdE9rJylcbiAgKCd0aHJvd3MnLCAndGhyb3cnKVxuICAoJ3Rocm93cycsICdUaHJvdycpXG4gICgnaXNFeHRlbnNpYmxlJywgJ2V4dGVuc2libGUnKVxuICAoJ2lzTm90RXh0ZW5zaWJsZScsICdub3RFeHRlbnNpYmxlJylcbiAgKCdpc1NlYWxlZCcsICdzZWFsZWQnKVxuICAoJ2lzTm90U2VhbGVkJywgJ25vdFNlYWxlZCcpXG4gICgnaXNGcm96ZW4nLCAnZnJvemVuJylcbiAgKCdpc05vdEZyb3plbicsICdub3RGcm96ZW4nKTtcbn07XG4iLCIvKiFcbiAqIGNoYWlcbiAqIENvcHlyaWdodChjKSAyMDExLTIwMTQgSmFrZSBMdWVyIDxqYWtlQGFsb2dpY2FscGFyYWRveC5jb20+XG4gKiBNSVQgTGljZW5zZWRcbiAqL1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChjaGFpLCB1dGlsKSB7XG4gIGNoYWkuZXhwZWN0ID0gZnVuY3Rpb24gKHZhbCwgbWVzc2FnZSkge1xuICAgIHJldHVybiBuZXcgY2hhaS5Bc3NlcnRpb24odmFsLCBtZXNzYWdlKTtcbiAgfTtcblxuICAvKipcbiAgICogIyMjIC5mYWlsKGFjdHVhbCwgZXhwZWN0ZWQsIFttZXNzYWdlXSwgW29wZXJhdG9yXSlcbiAgICpcbiAgICogVGhyb3cgYSBmYWlsdXJlLlxuICAgKlxuICAgKiBAbmFtZSBmYWlsXG4gICAqIEBwYXJhbSB7TWl4ZWR9IGFjdHVhbFxuICAgKiBAcGFyYW0ge01peGVkfSBleHBlY3RlZFxuICAgKiBAcGFyYW0ge1N0cmluZ30gbWVzc2FnZVxuICAgKiBAcGFyYW0ge1N0cmluZ30gb3BlcmF0b3JcbiAgICogQG5hbWVzcGFjZSBFeHBlY3RcbiAgICogQGFwaSBwdWJsaWNcbiAgICovXG5cbiAgY2hhaS5leHBlY3QuZmFpbCA9IGZ1bmN0aW9uIChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlLCBvcGVyYXRvcikge1xuICAgIG1lc3NhZ2UgPSBtZXNzYWdlIHx8ICdleHBlY3QuZmFpbCgpJztcbiAgICB0aHJvdyBuZXcgY2hhaS5Bc3NlcnRpb25FcnJvcihtZXNzYWdlLCB7XG4gICAgICAgIGFjdHVhbDogYWN0dWFsXG4gICAgICAsIGV4cGVjdGVkOiBleHBlY3RlZFxuICAgICAgLCBvcGVyYXRvcjogb3BlcmF0b3JcbiAgICB9LCBjaGFpLmV4cGVjdC5mYWlsKTtcbiAgfTtcbn07XG4iLCIvKiFcbiAqIGNoYWlcbiAqIENvcHlyaWdodChjKSAyMDExLTIwMTQgSmFrZSBMdWVyIDxqYWtlQGFsb2dpY2FscGFyYWRveC5jb20+XG4gKiBNSVQgTGljZW5zZWRcbiAqL1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChjaGFpLCB1dGlsKSB7XG4gIHZhciBBc3NlcnRpb24gPSBjaGFpLkFzc2VydGlvbjtcblxuICBmdW5jdGlvbiBsb2FkU2hvdWxkICgpIHtcbiAgICAvLyBleHBsaWNpdGx5IGRlZmluZSB0aGlzIG1ldGhvZCBhcyBmdW5jdGlvbiBhcyB0byBoYXZlIGl0J3MgbmFtZSB0byBpbmNsdWRlIGFzIGBzc2ZpYFxuICAgIGZ1bmN0aW9uIHNob3VsZEdldHRlcigpIHtcbiAgICAgIGlmICh0aGlzIGluc3RhbmNlb2YgU3RyaW5nIHx8IHRoaXMgaW5zdGFuY2VvZiBOdW1iZXIgfHwgdGhpcyBpbnN0YW5jZW9mIEJvb2xlYW4gKSB7XG4gICAgICAgIHJldHVybiBuZXcgQXNzZXJ0aW9uKHRoaXMudmFsdWVPZigpLCBudWxsLCBzaG91bGRHZXR0ZXIpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG5ldyBBc3NlcnRpb24odGhpcywgbnVsbCwgc2hvdWxkR2V0dGVyKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gc2hvdWxkU2V0dGVyKHZhbHVlKSB7XG4gICAgICAvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2NoYWlqcy9jaGFpL2lzc3Vlcy84NjogdGhpcyBtYWtlc1xuICAgICAgLy8gYHdoYXRldmVyLnNob3VsZCA9IHNvbWVWYWx1ZWAgYWN0dWFsbHkgc2V0IGBzb21lVmFsdWVgLCB3aGljaCBpc1xuICAgICAgLy8gZXNwZWNpYWxseSB1c2VmdWwgZm9yIGBnbG9iYWwuc2hvdWxkID0gcmVxdWlyZSgnY2hhaScpLnNob3VsZCgpYC5cbiAgICAgIC8vXG4gICAgICAvLyBOb3RlIHRoYXQgd2UgaGF2ZSB0byB1c2UgW1tEZWZpbmVQcm9wZXJ0eV1dIGluc3RlYWQgb2YgW1tQdXRdXVxuICAgICAgLy8gc2luY2Ugb3RoZXJ3aXNlIHdlIHdvdWxkIHRyaWdnZXIgdGhpcyB2ZXJ5IHNldHRlciFcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCAnc2hvdWxkJywge1xuICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgd3JpdGFibGU6IHRydWVcbiAgICAgIH0pO1xuICAgIH1cbiAgICAvLyBtb2RpZnkgT2JqZWN0LnByb3RvdHlwZSB0byBoYXZlIGBzaG91bGRgXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KE9iamVjdC5wcm90b3R5cGUsICdzaG91bGQnLCB7XG4gICAgICBzZXQ6IHNob3VsZFNldHRlclxuICAgICAgLCBnZXQ6IHNob3VsZEdldHRlclxuICAgICAgLCBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcblxuICAgIHZhciBzaG91bGQgPSB7fTtcblxuICAgIC8qKlxuICAgICAqICMjIyAuZmFpbChhY3R1YWwsIGV4cGVjdGVkLCBbbWVzc2FnZV0sIFtvcGVyYXRvcl0pXG4gICAgICpcbiAgICAgKiBUaHJvdyBhIGZhaWx1cmUuXG4gICAgICpcbiAgICAgKiBAbmFtZSBmYWlsXG4gICAgICogQHBhcmFtIHtNaXhlZH0gYWN0dWFsXG4gICAgICogQHBhcmFtIHtNaXhlZH0gZXhwZWN0ZWRcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gbWVzc2FnZVxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSBvcGVyYXRvclxuICAgICAqIEBuYW1lc3BhY2UgU2hvdWxkXG4gICAgICogQGFwaSBwdWJsaWNcbiAgICAgKi9cblxuICAgIHNob3VsZC5mYWlsID0gZnVuY3Rpb24gKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UsIG9wZXJhdG9yKSB7XG4gICAgICBtZXNzYWdlID0gbWVzc2FnZSB8fCAnc2hvdWxkLmZhaWwoKSc7XG4gICAgICB0aHJvdyBuZXcgY2hhaS5Bc3NlcnRpb25FcnJvcihtZXNzYWdlLCB7XG4gICAgICAgICAgYWN0dWFsOiBhY3R1YWxcbiAgICAgICAgLCBleHBlY3RlZDogZXhwZWN0ZWRcbiAgICAgICAgLCBvcGVyYXRvcjogb3BlcmF0b3JcbiAgICAgIH0sIHNob3VsZC5mYWlsKTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogIyMjIC5lcXVhbChhY3R1YWwsIGV4cGVjdGVkLCBbbWVzc2FnZV0pXG4gICAgICpcbiAgICAgKiBBc3NlcnRzIG5vbi1zdHJpY3QgZXF1YWxpdHkgKGA9PWApIG9mIGBhY3R1YWxgIGFuZCBgZXhwZWN0ZWRgLlxuICAgICAqXG4gICAgICogICAgIHNob3VsZC5lcXVhbCgzLCAnMycsICc9PSBjb2VyY2VzIHZhbHVlcyB0byBzdHJpbmdzJyk7XG4gICAgICpcbiAgICAgKiBAbmFtZSBlcXVhbFxuICAgICAqIEBwYXJhbSB7TWl4ZWR9IGFjdHVhbFxuICAgICAqIEBwYXJhbSB7TWl4ZWR9IGV4cGVjdGVkXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IG1lc3NhZ2VcbiAgICAgKiBAbmFtZXNwYWNlIFNob3VsZFxuICAgICAqIEBhcGkgcHVibGljXG4gICAgICovXG5cbiAgICBzaG91bGQuZXF1YWwgPSBmdW5jdGlvbiAodmFsMSwgdmFsMiwgbXNnKSB7XG4gICAgICBuZXcgQXNzZXJ0aW9uKHZhbDEsIG1zZykudG8uZXF1YWwodmFsMik7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqICMjIyAudGhyb3coZnVuY3Rpb24sIFtjb25zdHJ1Y3Rvci9zdHJpbmcvcmVnZXhwXSwgW3N0cmluZy9yZWdleHBdLCBbbWVzc2FnZV0pXG4gICAgICpcbiAgICAgKiBBc3NlcnRzIHRoYXQgYGZ1bmN0aW9uYCB3aWxsIHRocm93IGFuIGVycm9yIHRoYXQgaXMgYW4gaW5zdGFuY2Ugb2ZcbiAgICAgKiBgY29uc3RydWN0b3JgLCBvciBhbHRlcm5hdGVseSB0aGF0IGl0IHdpbGwgdGhyb3cgYW4gZXJyb3Igd2l0aCBtZXNzYWdlXG4gICAgICogbWF0Y2hpbmcgYHJlZ2V4cGAuXG4gICAgICpcbiAgICAgKiAgICAgc2hvdWxkLnRocm93KGZuLCAnZnVuY3Rpb24gdGhyb3dzIGEgcmVmZXJlbmNlIGVycm9yJyk7XG4gICAgICogICAgIHNob3VsZC50aHJvdyhmbiwgL2Z1bmN0aW9uIHRocm93cyBhIHJlZmVyZW5jZSBlcnJvci8pO1xuICAgICAqICAgICBzaG91bGQudGhyb3coZm4sIFJlZmVyZW5jZUVycm9yKTtcbiAgICAgKiAgICAgc2hvdWxkLnRocm93KGZuLCBSZWZlcmVuY2VFcnJvciwgJ2Z1bmN0aW9uIHRocm93cyBhIHJlZmVyZW5jZSBlcnJvcicpO1xuICAgICAqICAgICBzaG91bGQudGhyb3coZm4sIFJlZmVyZW5jZUVycm9yLCAvZnVuY3Rpb24gdGhyb3dzIGEgcmVmZXJlbmNlIGVycm9yLyk7XG4gICAgICpcbiAgICAgKiBAbmFtZSB0aHJvd1xuICAgICAqIEBhbGlhcyBUaHJvd1xuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtFcnJvckNvbnN0cnVjdG9yfSBjb25zdHJ1Y3RvclxuICAgICAqIEBwYXJhbSB7UmVnRXhwfSByZWdleHBcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gbWVzc2FnZVxuICAgICAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4vSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvRXJyb3IjRXJyb3JfdHlwZXNcbiAgICAgKiBAbmFtZXNwYWNlIFNob3VsZFxuICAgICAqIEBhcGkgcHVibGljXG4gICAgICovXG5cbiAgICBzaG91bGQuVGhyb3cgPSBmdW5jdGlvbiAoZm4sIGVycnQsIGVycnMsIG1zZykge1xuICAgICAgbmV3IEFzc2VydGlvbihmbiwgbXNnKS50by5UaHJvdyhlcnJ0LCBlcnJzKTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogIyMjIC5leGlzdFxuICAgICAqXG4gICAgICogQXNzZXJ0cyB0aGF0IHRoZSB0YXJnZXQgaXMgbmVpdGhlciBgbnVsbGAgbm9yIGB1bmRlZmluZWRgLlxuICAgICAqXG4gICAgICogICAgIHZhciBmb28gPSAnaGknO1xuICAgICAqXG4gICAgICogICAgIHNob3VsZC5leGlzdChmb28sICdmb28gZXhpc3RzJyk7XG4gICAgICpcbiAgICAgKiBAbmFtZSBleGlzdFxuICAgICAqIEBuYW1lc3BhY2UgU2hvdWxkXG4gICAgICogQGFwaSBwdWJsaWNcbiAgICAgKi9cblxuICAgIHNob3VsZC5leGlzdCA9IGZ1bmN0aW9uICh2YWwsIG1zZykge1xuICAgICAgbmV3IEFzc2VydGlvbih2YWwsIG1zZykudG8uZXhpc3Q7XG4gICAgfVxuXG4gICAgLy8gbmVnYXRpb25cbiAgICBzaG91bGQubm90ID0ge31cblxuICAgIC8qKlxuICAgICAqICMjIyAubm90LmVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIFttZXNzYWdlXSlcbiAgICAgKlxuICAgICAqIEFzc2VydHMgbm9uLXN0cmljdCBpbmVxdWFsaXR5IChgIT1gKSBvZiBgYWN0dWFsYCBhbmQgYGV4cGVjdGVkYC5cbiAgICAgKlxuICAgICAqICAgICBzaG91bGQubm90LmVxdWFsKDMsIDQsICd0aGVzZSBudW1iZXJzIGFyZSBub3QgZXF1YWwnKTtcbiAgICAgKlxuICAgICAqIEBuYW1lIG5vdC5lcXVhbFxuICAgICAqIEBwYXJhbSB7TWl4ZWR9IGFjdHVhbFxuICAgICAqIEBwYXJhbSB7TWl4ZWR9IGV4cGVjdGVkXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IG1lc3NhZ2VcbiAgICAgKiBAbmFtZXNwYWNlIFNob3VsZFxuICAgICAqIEBhcGkgcHVibGljXG4gICAgICovXG5cbiAgICBzaG91bGQubm90LmVxdWFsID0gZnVuY3Rpb24gKHZhbDEsIHZhbDIsIG1zZykge1xuICAgICAgbmV3IEFzc2VydGlvbih2YWwxLCBtc2cpLnRvLm5vdC5lcXVhbCh2YWwyKTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogIyMjIC50aHJvdyhmdW5jdGlvbiwgW2NvbnN0cnVjdG9yL3JlZ2V4cF0sIFttZXNzYWdlXSlcbiAgICAgKlxuICAgICAqIEFzc2VydHMgdGhhdCBgZnVuY3Rpb25gIHdpbGwgX25vdF8gdGhyb3cgYW4gZXJyb3IgdGhhdCBpcyBhbiBpbnN0YW5jZSBvZlxuICAgICAqIGBjb25zdHJ1Y3RvcmAsIG9yIGFsdGVybmF0ZWx5IHRoYXQgaXQgd2lsbCBub3QgdGhyb3cgYW4gZXJyb3Igd2l0aCBtZXNzYWdlXG4gICAgICogbWF0Y2hpbmcgYHJlZ2V4cGAuXG4gICAgICpcbiAgICAgKiAgICAgc2hvdWxkLm5vdC50aHJvdyhmbiwgRXJyb3IsICdmdW5jdGlvbiBkb2VzIG5vdCB0aHJvdycpO1xuICAgICAqXG4gICAgICogQG5hbWUgbm90LnRocm93XG4gICAgICogQGFsaWFzIG5vdC5UaHJvd1xuICAgICAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmN0aW9uXG4gICAgICogQHBhcmFtIHtFcnJvckNvbnN0cnVjdG9yfSBjb25zdHJ1Y3RvclxuICAgICAqIEBwYXJhbSB7UmVnRXhwfSByZWdleHBcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gbWVzc2FnZVxuICAgICAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4vSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvRXJyb3IjRXJyb3JfdHlwZXNcbiAgICAgKiBAbmFtZXNwYWNlIFNob3VsZFxuICAgICAqIEBhcGkgcHVibGljXG4gICAgICovXG5cbiAgICBzaG91bGQubm90LlRocm93ID0gZnVuY3Rpb24gKGZuLCBlcnJ0LCBlcnJzLCBtc2cpIHtcbiAgICAgIG5ldyBBc3NlcnRpb24oZm4sIG1zZykudG8ubm90LlRocm93KGVycnQsIGVycnMpO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiAjIyMgLm5vdC5leGlzdFxuICAgICAqXG4gICAgICogQXNzZXJ0cyB0aGF0IHRoZSB0YXJnZXQgaXMgbmVpdGhlciBgbnVsbGAgbm9yIGB1bmRlZmluZWRgLlxuICAgICAqXG4gICAgICogICAgIHZhciBiYXIgPSBudWxsO1xuICAgICAqXG4gICAgICogICAgIHNob3VsZC5ub3QuZXhpc3QoYmFyLCAnYmFyIGRvZXMgbm90IGV4aXN0Jyk7XG4gICAgICpcbiAgICAgKiBAbmFtZSBub3QuZXhpc3RcbiAgICAgKiBAbmFtZXNwYWNlIFNob3VsZFxuICAgICAqIEBhcGkgcHVibGljXG4gICAgICovXG5cbiAgICBzaG91bGQubm90LmV4aXN0ID0gZnVuY3Rpb24gKHZhbCwgbXNnKSB7XG4gICAgICBuZXcgQXNzZXJ0aW9uKHZhbCwgbXNnKS50by5ub3QuZXhpc3Q7XG4gICAgfVxuXG4gICAgc2hvdWxkWyd0aHJvdyddID0gc2hvdWxkWydUaHJvdyddO1xuICAgIHNob3VsZC5ub3RbJ3Rocm93J10gPSBzaG91bGQubm90WydUaHJvdyddO1xuXG4gICAgcmV0dXJuIHNob3VsZDtcbiAgfTtcblxuICBjaGFpLnNob3VsZCA9IGxvYWRTaG91bGQ7XG4gIGNoYWkuU2hvdWxkID0gbG9hZFNob3VsZDtcbn07XG4iLCIvKiFcbiAqIENoYWkgLSBhZGRDaGFpbmluZ01ldGhvZCB1dGlsaXR5XG4gKiBDb3B5cmlnaHQoYykgMjAxMi0yMDE0IEpha2UgTHVlciA8amFrZUBhbG9naWNhbHBhcmFkb3guY29tPlxuICogTUlUIExpY2Vuc2VkXG4gKi9cblxuLyohXG4gKiBNb2R1bGUgZGVwZW5kZW5jaWVzXG4gKi9cblxudmFyIHRyYW5zZmVyRmxhZ3MgPSByZXF1aXJlKCcuL3RyYW5zZmVyRmxhZ3MnKTtcbnZhciBmbGFnID0gcmVxdWlyZSgnLi9mbGFnJyk7XG52YXIgY29uZmlnID0gcmVxdWlyZSgnLi4vY29uZmlnJyk7XG5cbi8qIVxuICogTW9kdWxlIHZhcmlhYmxlc1xuICovXG5cbi8vIENoZWNrIHdoZXRoZXIgYF9fcHJvdG9fX2AgaXMgc3VwcG9ydGVkXG52YXIgaGFzUHJvdG9TdXBwb3J0ID0gJ19fcHJvdG9fXycgaW4gT2JqZWN0O1xuXG4vLyBXaXRob3V0IGBfX3Byb3RvX19gIHN1cHBvcnQsIHRoaXMgbW9kdWxlIHdpbGwgbmVlZCB0byBhZGQgcHJvcGVydGllcyB0byBhIGZ1bmN0aW9uLlxuLy8gSG93ZXZlciwgc29tZSBGdW5jdGlvbi5wcm90b3R5cGUgbWV0aG9kcyBjYW5ub3QgYmUgb3ZlcndyaXR0ZW4sXG4vLyBhbmQgdGhlcmUgc2VlbXMgbm8gZWFzeSBjcm9zcy1wbGF0Zm9ybSB3YXkgdG8gZGV0ZWN0IHRoZW0gKEBzZWUgY2hhaWpzL2NoYWkvaXNzdWVzLzY5KS5cbnZhciBleGNsdWRlTmFtZXMgPSAvXig/Omxlbmd0aHxuYW1lfGFyZ3VtZW50c3xjYWxsZXIpJC87XG5cbi8vIENhY2hlIGBGdW5jdGlvbmAgcHJvcGVydGllc1xudmFyIGNhbGwgID0gRnVuY3Rpb24ucHJvdG90eXBlLmNhbGwsXG4gICAgYXBwbHkgPSBGdW5jdGlvbi5wcm90b3R5cGUuYXBwbHk7XG5cbi8qKlxuICogIyMjIGFkZENoYWluYWJsZU1ldGhvZCAoY3R4LCBuYW1lLCBtZXRob2QsIGNoYWluaW5nQmVoYXZpb3IpXG4gKlxuICogQWRkcyBhIG1ldGhvZCB0byBhbiBvYmplY3QsIHN1Y2ggdGhhdCB0aGUgbWV0aG9kIGNhbiBhbHNvIGJlIGNoYWluZWQuXG4gKlxuICogICAgIHV0aWxzLmFkZENoYWluYWJsZU1ldGhvZChjaGFpLkFzc2VydGlvbi5wcm90b3R5cGUsICdmb28nLCBmdW5jdGlvbiAoc3RyKSB7XG4gKiAgICAgICB2YXIgb2JqID0gdXRpbHMuZmxhZyh0aGlzLCAnb2JqZWN0Jyk7XG4gKiAgICAgICBuZXcgY2hhaS5Bc3NlcnRpb24ob2JqKS50by5iZS5lcXVhbChzdHIpO1xuICogICAgIH0pO1xuICpcbiAqIENhbiBhbHNvIGJlIGFjY2Vzc2VkIGRpcmVjdGx5IGZyb20gYGNoYWkuQXNzZXJ0aW9uYC5cbiAqXG4gKiAgICAgY2hhaS5Bc3NlcnRpb24uYWRkQ2hhaW5hYmxlTWV0aG9kKCdmb28nLCBmbiwgY2hhaW5pbmdCZWhhdmlvcik7XG4gKlxuICogVGhlIHJlc3VsdCBjYW4gdGhlbiBiZSB1c2VkIGFzIGJvdGggYSBtZXRob2QgYXNzZXJ0aW9uLCBleGVjdXRpbmcgYm90aCBgbWV0aG9kYCBhbmRcbiAqIGBjaGFpbmluZ0JlaGF2aW9yYCwgb3IgYXMgYSBsYW5ndWFnZSBjaGFpbiwgd2hpY2ggb25seSBleGVjdXRlcyBgY2hhaW5pbmdCZWhhdmlvcmAuXG4gKlxuICogICAgIGV4cGVjdChmb29TdHIpLnRvLmJlLmZvbygnYmFyJyk7XG4gKiAgICAgZXhwZWN0KGZvb1N0cikudG8uYmUuZm9vLmVxdWFsKCdmb28nKTtcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gY3R4IG9iamVjdCB0byB3aGljaCB0aGUgbWV0aG9kIGlzIGFkZGVkXG4gKiBAcGFyYW0ge1N0cmluZ30gbmFtZSBvZiBtZXRob2QgdG8gYWRkXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBtZXRob2QgZnVuY3Rpb24gdG8gYmUgdXNlZCBmb3IgYG5hbWVgLCB3aGVuIGNhbGxlZFxuICogQHBhcmFtIHtGdW5jdGlvbn0gY2hhaW5pbmdCZWhhdmlvciBmdW5jdGlvbiB0byBiZSBjYWxsZWQgZXZlcnkgdGltZSB0aGUgcHJvcGVydHkgaXMgYWNjZXNzZWRcbiAqIEBuYW1lc3BhY2UgVXRpbHNcbiAqIEBuYW1lIGFkZENoYWluYWJsZU1ldGhvZFxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChjdHgsIG5hbWUsIG1ldGhvZCwgY2hhaW5pbmdCZWhhdmlvcikge1xuICBpZiAodHlwZW9mIGNoYWluaW5nQmVoYXZpb3IgIT09ICdmdW5jdGlvbicpIHtcbiAgICBjaGFpbmluZ0JlaGF2aW9yID0gZnVuY3Rpb24gKCkgeyB9O1xuICB9XG5cbiAgdmFyIGNoYWluYWJsZUJlaGF2aW9yID0ge1xuICAgICAgbWV0aG9kOiBtZXRob2RcbiAgICAsIGNoYWluaW5nQmVoYXZpb3I6IGNoYWluaW5nQmVoYXZpb3JcbiAgfTtcblxuICAvLyBzYXZlIHRoZSBtZXRob2RzIHNvIHdlIGNhbiBvdmVyd3JpdGUgdGhlbSBsYXRlciwgaWYgd2UgbmVlZCB0by5cbiAgaWYgKCFjdHguX19tZXRob2RzKSB7XG4gICAgY3R4Ll9fbWV0aG9kcyA9IHt9O1xuICB9XG4gIGN0eC5fX21ldGhvZHNbbmFtZV0gPSBjaGFpbmFibGVCZWhhdmlvcjtcblxuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoY3R4LCBuYW1lLFxuICAgIHsgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNoYWluYWJsZUJlaGF2aW9yLmNoYWluaW5nQmVoYXZpb3IuY2FsbCh0aGlzKTtcblxuICAgICAgICB2YXIgYXNzZXJ0ID0gZnVuY3Rpb24gYXNzZXJ0KCkge1xuICAgICAgICAgIHZhciBvbGRfc3NmaSA9IGZsYWcodGhpcywgJ3NzZmknKTtcbiAgICAgICAgICBpZiAob2xkX3NzZmkgJiYgY29uZmlnLmluY2x1ZGVTdGFjayA9PT0gZmFsc2UpXG4gICAgICAgICAgICBmbGFnKHRoaXMsICdzc2ZpJywgYXNzZXJ0KTtcbiAgICAgICAgICB2YXIgcmVzdWx0ID0gY2hhaW5hYmxlQmVoYXZpb3IubWV0aG9kLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICAgICAgcmV0dXJuIHJlc3VsdCA9PT0gdW5kZWZpbmVkID8gdGhpcyA6IHJlc3VsdDtcbiAgICAgICAgfTtcblxuICAgICAgICAvLyBVc2UgYF9fcHJvdG9fX2AgaWYgYXZhaWxhYmxlXG4gICAgICAgIGlmIChoYXNQcm90b1N1cHBvcnQpIHtcbiAgICAgICAgICAvLyBJbmhlcml0IGFsbCBwcm9wZXJ0aWVzIGZyb20gdGhlIG9iamVjdCBieSByZXBsYWNpbmcgdGhlIGBGdW5jdGlvbmAgcHJvdG90eXBlXG4gICAgICAgICAgdmFyIHByb3RvdHlwZSA9IGFzc2VydC5fX3Byb3RvX18gPSBPYmplY3QuY3JlYXRlKHRoaXMpO1xuICAgICAgICAgIC8vIFJlc3RvcmUgdGhlIGBjYWxsYCBhbmQgYGFwcGx5YCBtZXRob2RzIGZyb20gYEZ1bmN0aW9uYFxuICAgICAgICAgIHByb3RvdHlwZS5jYWxsID0gY2FsbDtcbiAgICAgICAgICBwcm90b3R5cGUuYXBwbHkgPSBhcHBseTtcbiAgICAgICAgfVxuICAgICAgICAvLyBPdGhlcndpc2UsIHJlZGVmaW5lIGFsbCBwcm9wZXJ0aWVzIChzbG93ISlcbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgdmFyIGFzc2VydGVyTmFtZXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhjdHgpO1xuICAgICAgICAgIGFzc2VydGVyTmFtZXMuZm9yRWFjaChmdW5jdGlvbiAoYXNzZXJ0ZXJOYW1lKSB7XG4gICAgICAgICAgICBpZiAoIWV4Y2x1ZGVOYW1lcy50ZXN0KGFzc2VydGVyTmFtZSkpIHtcbiAgICAgICAgICAgICAgdmFyIHBkID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihjdHgsIGFzc2VydGVyTmFtZSk7XG4gICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShhc3NlcnQsIGFzc2VydGVyTmFtZSwgcGQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdHJhbnNmZXJGbGFncyh0aGlzLCBhc3NlcnQpO1xuICAgICAgICByZXR1cm4gYXNzZXJ0O1xuICAgICAgfVxuICAgICwgY29uZmlndXJhYmxlOiB0cnVlXG4gIH0pO1xufTtcbiIsIi8qIVxuICogQ2hhaSAtIGFkZE1ldGhvZCB1dGlsaXR5XG4gKiBDb3B5cmlnaHQoYykgMjAxMi0yMDE0IEpha2UgTHVlciA8amFrZUBhbG9naWNhbHBhcmFkb3guY29tPlxuICogTUlUIExpY2Vuc2VkXG4gKi9cblxudmFyIGNvbmZpZyA9IHJlcXVpcmUoJy4uL2NvbmZpZycpO1xuXG4vKipcbiAqICMjIyAuYWRkTWV0aG9kIChjdHgsIG5hbWUsIG1ldGhvZClcbiAqXG4gKiBBZGRzIGEgbWV0aG9kIHRvIHRoZSBwcm90b3R5cGUgb2YgYW4gb2JqZWN0LlxuICpcbiAqICAgICB1dGlscy5hZGRNZXRob2QoY2hhaS5Bc3NlcnRpb24ucHJvdG90eXBlLCAnZm9vJywgZnVuY3Rpb24gKHN0cikge1xuICogICAgICAgdmFyIG9iaiA9IHV0aWxzLmZsYWcodGhpcywgJ29iamVjdCcpO1xuICogICAgICAgbmV3IGNoYWkuQXNzZXJ0aW9uKG9iaikudG8uYmUuZXF1YWwoc3RyKTtcbiAqICAgICB9KTtcbiAqXG4gKiBDYW4gYWxzbyBiZSBhY2Nlc3NlZCBkaXJlY3RseSBmcm9tIGBjaGFpLkFzc2VydGlvbmAuXG4gKlxuICogICAgIGNoYWkuQXNzZXJ0aW9uLmFkZE1ldGhvZCgnZm9vJywgZm4pO1xuICpcbiAqIFRoZW4gY2FuIGJlIHVzZWQgYXMgYW55IG90aGVyIGFzc2VydGlvbi5cbiAqXG4gKiAgICAgZXhwZWN0KGZvb1N0cikudG8uYmUuZm9vKCdiYXInKTtcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gY3R4IG9iamVjdCB0byB3aGljaCB0aGUgbWV0aG9kIGlzIGFkZGVkXG4gKiBAcGFyYW0ge1N0cmluZ30gbmFtZSBvZiBtZXRob2QgdG8gYWRkXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBtZXRob2QgZnVuY3Rpb24gdG8gYmUgdXNlZCBmb3IgbmFtZVxuICogQG5hbWVzcGFjZSBVdGlsc1xuICogQG5hbWUgYWRkTWV0aG9kXG4gKiBAYXBpIHB1YmxpY1xuICovXG52YXIgZmxhZyA9IHJlcXVpcmUoJy4vZmxhZycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChjdHgsIG5hbWUsIG1ldGhvZCkge1xuICBjdHhbbmFtZV0gPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIG9sZF9zc2ZpID0gZmxhZyh0aGlzLCAnc3NmaScpO1xuICAgIGlmIChvbGRfc3NmaSAmJiBjb25maWcuaW5jbHVkZVN0YWNrID09PSBmYWxzZSlcbiAgICAgIGZsYWcodGhpcywgJ3NzZmknLCBjdHhbbmFtZV0pO1xuICAgIHZhciByZXN1bHQgPSBtZXRob2QuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICByZXR1cm4gcmVzdWx0ID09PSB1bmRlZmluZWQgPyB0aGlzIDogcmVzdWx0O1xuICB9O1xufTtcbiIsIi8qIVxuICogQ2hhaSAtIGFkZFByb3BlcnR5IHV0aWxpdHlcbiAqIENvcHlyaWdodChjKSAyMDEyLTIwMTQgSmFrZSBMdWVyIDxqYWtlQGFsb2dpY2FscGFyYWRveC5jb20+XG4gKiBNSVQgTGljZW5zZWRcbiAqL1xuXG52YXIgY29uZmlnID0gcmVxdWlyZSgnLi4vY29uZmlnJyk7XG52YXIgZmxhZyA9IHJlcXVpcmUoJy4vZmxhZycpO1xuXG4vKipcbiAqICMjIyBhZGRQcm9wZXJ0eSAoY3R4LCBuYW1lLCBnZXR0ZXIpXG4gKlxuICogQWRkcyBhIHByb3BlcnR5IHRvIHRoZSBwcm90b3R5cGUgb2YgYW4gb2JqZWN0LlxuICpcbiAqICAgICB1dGlscy5hZGRQcm9wZXJ0eShjaGFpLkFzc2VydGlvbi5wcm90b3R5cGUsICdmb28nLCBmdW5jdGlvbiAoKSB7XG4gKiAgICAgICB2YXIgb2JqID0gdXRpbHMuZmxhZyh0aGlzLCAnb2JqZWN0Jyk7XG4gKiAgICAgICBuZXcgY2hhaS5Bc3NlcnRpb24ob2JqKS50by5iZS5pbnN0YW5jZW9mKEZvbyk7XG4gKiAgICAgfSk7XG4gKlxuICogQ2FuIGFsc28gYmUgYWNjZXNzZWQgZGlyZWN0bHkgZnJvbSBgY2hhaS5Bc3NlcnRpb25gLlxuICpcbiAqICAgICBjaGFpLkFzc2VydGlvbi5hZGRQcm9wZXJ0eSgnZm9vJywgZm4pO1xuICpcbiAqIFRoZW4gY2FuIGJlIHVzZWQgYXMgYW55IG90aGVyIGFzc2VydGlvbi5cbiAqXG4gKiAgICAgZXhwZWN0KG15Rm9vKS50by5iZS5mb287XG4gKlxuICogQHBhcmFtIHtPYmplY3R9IGN0eCBvYmplY3QgdG8gd2hpY2ggdGhlIHByb3BlcnR5IGlzIGFkZGVkXG4gKiBAcGFyYW0ge1N0cmluZ30gbmFtZSBvZiBwcm9wZXJ0eSB0byBhZGRcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGdldHRlciBmdW5jdGlvbiB0byBiZSB1c2VkIGZvciBuYW1lXG4gKiBAbmFtZXNwYWNlIFV0aWxzXG4gKiBAbmFtZSBhZGRQcm9wZXJ0eVxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChjdHgsIG5hbWUsIGdldHRlcikge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoY3R4LCBuYW1lLFxuICAgIHsgZ2V0OiBmdW5jdGlvbiBhZGRQcm9wZXJ0eSgpIHtcbiAgICAgICAgdmFyIG9sZF9zc2ZpID0gZmxhZyh0aGlzLCAnc3NmaScpO1xuICAgICAgICBpZiAob2xkX3NzZmkgJiYgY29uZmlnLmluY2x1ZGVTdGFjayA9PT0gZmFsc2UpXG4gICAgICAgICAgZmxhZyh0aGlzLCAnc3NmaScsIGFkZFByb3BlcnR5KTtcblxuICAgICAgICB2YXIgcmVzdWx0ID0gZ2V0dGVyLmNhbGwodGhpcyk7XG4gICAgICAgIHJldHVybiByZXN1bHQgPT09IHVuZGVmaW5lZCA/IHRoaXMgOiByZXN1bHQ7XG4gICAgICB9XG4gICAgLCBjb25maWd1cmFibGU6IHRydWVcbiAgfSk7XG59O1xuIiwiLyohXG4gKiBDaGFpIC0gZXhwZWN0VHlwZXMgdXRpbGl0eVxuICogQ29weXJpZ2h0KGMpIDIwMTItMjAxNCBKYWtlIEx1ZXIgPGpha2VAYWxvZ2ljYWxwYXJhZG94LmNvbT5cbiAqIE1JVCBMaWNlbnNlZFxuICovXG5cbi8qKlxuICogIyMjIGV4cGVjdFR5cGVzKG9iaiwgdHlwZXMpXG4gKlxuICogRW5zdXJlcyB0aGF0IHRoZSBvYmplY3QgYmVpbmcgdGVzdGVkIGFnYWluc3QgaXMgb2YgYSB2YWxpZCB0eXBlLlxuICpcbiAqICAgICB1dGlscy5leHBlY3RUeXBlcyh0aGlzLCBbJ2FycmF5JywgJ29iamVjdCcsICdzdHJpbmcnXSk7XG4gKlxuICogQHBhcmFtIHtNaXhlZH0gb2JqIGNvbnN0cnVjdGVkIEFzc2VydGlvblxuICogQHBhcmFtIHtBcnJheX0gdHlwZSBBIGxpc3Qgb2YgYWxsb3dlZCB0eXBlcyBmb3IgdGhpcyBhc3NlcnRpb25cbiAqIEBuYW1lc3BhY2UgVXRpbHNcbiAqIEBuYW1lIGV4cGVjdFR5cGVzXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbnZhciBBc3NlcnRpb25FcnJvciA9IHJlcXVpcmUoJ2Fzc2VydGlvbi1lcnJvcicpO1xudmFyIGZsYWcgPSByZXF1aXJlKCcuL2ZsYWcnKTtcbnZhciB0eXBlID0gcmVxdWlyZSgndHlwZS1kZXRlY3QnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob2JqLCB0eXBlcykge1xuICB2YXIgb2JqID0gZmxhZyhvYmosICdvYmplY3QnKTtcbiAgdHlwZXMgPSB0eXBlcy5tYXAoZnVuY3Rpb24gKHQpIHsgcmV0dXJuIHQudG9Mb3dlckNhc2UoKTsgfSk7XG4gIHR5cGVzLnNvcnQoKTtcblxuICAvLyBUcmFuc2Zvcm1zIFsnbG9yZW0nLCAnaXBzdW0nXSBpbnRvICdhIGxpcnVtLCBvciBhbiBpcHN1bSdcbiAgdmFyIHN0ciA9IHR5cGVzLm1hcChmdW5jdGlvbiAodCwgaW5kZXgpIHtcbiAgICB2YXIgYXJ0ID0gflsgJ2EnLCAnZScsICdpJywgJ28nLCAndScgXS5pbmRleE9mKHQuY2hhckF0KDApKSA/ICdhbicgOiAnYSc7XG4gICAgdmFyIG9yID0gdHlwZXMubGVuZ3RoID4gMSAmJiBpbmRleCA9PT0gdHlwZXMubGVuZ3RoIC0gMSA/ICdvciAnIDogJyc7XG4gICAgcmV0dXJuIG9yICsgYXJ0ICsgJyAnICsgdDtcbiAgfSkuam9pbignLCAnKTtcblxuICBpZiAoIXR5cGVzLnNvbWUoZnVuY3Rpb24gKGV4cGVjdGVkKSB7IHJldHVybiB0eXBlKG9iaikgPT09IGV4cGVjdGVkOyB9KSkge1xuICAgIHRocm93IG5ldyBBc3NlcnRpb25FcnJvcihcbiAgICAgICdvYmplY3QgdGVzdGVkIG11c3QgYmUgJyArIHN0ciArICcsIGJ1dCAnICsgdHlwZShvYmopICsgJyBnaXZlbidcbiAgICApO1xuICB9XG59O1xuIiwiLyohXG4gKiBDaGFpIC0gZmxhZyB1dGlsaXR5XG4gKiBDb3B5cmlnaHQoYykgMjAxMi0yMDE0IEpha2UgTHVlciA8amFrZUBhbG9naWNhbHBhcmFkb3guY29tPlxuICogTUlUIExpY2Vuc2VkXG4gKi9cblxuLyoqXG4gKiAjIyMgZmxhZyhvYmplY3QsIGtleSwgW3ZhbHVlXSlcbiAqXG4gKiBHZXQgb3Igc2V0IGEgZmxhZyB2YWx1ZSBvbiBhbiBvYmplY3QuIElmIGFcbiAqIHZhbHVlIGlzIHByb3ZpZGVkIGl0IHdpbGwgYmUgc2V0LCBlbHNlIGl0IHdpbGxcbiAqIHJldHVybiB0aGUgY3VycmVudGx5IHNldCB2YWx1ZSBvciBgdW5kZWZpbmVkYCBpZlxuICogdGhlIHZhbHVlIGlzIG5vdCBzZXQuXG4gKlxuICogICAgIHV0aWxzLmZsYWcodGhpcywgJ2ZvbycsICdiYXInKTsgLy8gc2V0dGVyXG4gKiAgICAgdXRpbHMuZmxhZyh0aGlzLCAnZm9vJyk7IC8vIGdldHRlciwgcmV0dXJucyBgYmFyYFxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgY29uc3RydWN0ZWQgQXNzZXJ0aW9uXG4gKiBAcGFyYW0ge1N0cmluZ30ga2V5XG4gKiBAcGFyYW0ge01peGVkfSB2YWx1ZSAob3B0aW9uYWwpXG4gKiBAbmFtZXNwYWNlIFV0aWxzXG4gKiBAbmFtZSBmbGFnXG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChvYmosIGtleSwgdmFsdWUpIHtcbiAgdmFyIGZsYWdzID0gb2JqLl9fZmxhZ3MgfHwgKG9iai5fX2ZsYWdzID0gT2JqZWN0LmNyZWF0ZShudWxsKSk7XG4gIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAzKSB7XG4gICAgZmxhZ3Nba2V5XSA9IHZhbHVlO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBmbGFnc1trZXldO1xuICB9XG59O1xuIiwiLyohXG4gKiBDaGFpIC0gZ2V0QWN0dWFsIHV0aWxpdHlcbiAqIENvcHlyaWdodChjKSAyMDEyLTIwMTQgSmFrZSBMdWVyIDxqYWtlQGFsb2dpY2FscGFyYWRveC5jb20+XG4gKiBNSVQgTGljZW5zZWRcbiAqL1xuXG4vKipcbiAqICMgZ2V0QWN0dWFsKG9iamVjdCwgW2FjdHVhbF0pXG4gKlxuICogUmV0dXJucyB0aGUgYGFjdHVhbGAgdmFsdWUgZm9yIGFuIEFzc2VydGlvblxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgKGNvbnN0cnVjdGVkIEFzc2VydGlvbilcbiAqIEBwYXJhbSB7QXJndW1lbnRzfSBjaGFpLkFzc2VydGlvbi5wcm90b3R5cGUuYXNzZXJ0IGFyZ3VtZW50c1xuICogQG5hbWVzcGFjZSBVdGlsc1xuICogQG5hbWUgZ2V0QWN0dWFsXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob2JqLCBhcmdzKSB7XG4gIHJldHVybiBhcmdzLmxlbmd0aCA+IDQgPyBhcmdzWzRdIDogb2JqLl9vYmo7XG59O1xuIiwiLyohXG4gKiBDaGFpIC0gZ2V0RW51bWVyYWJsZVByb3BlcnRpZXMgdXRpbGl0eVxuICogQ29weXJpZ2h0KGMpIDIwMTItMjAxNCBKYWtlIEx1ZXIgPGpha2VAYWxvZ2ljYWxwYXJhZG94LmNvbT5cbiAqIE1JVCBMaWNlbnNlZFxuICovXG5cbi8qKlxuICogIyMjIC5nZXRFbnVtZXJhYmxlUHJvcGVydGllcyhvYmplY3QpXG4gKlxuICogVGhpcyBhbGxvd3MgdGhlIHJldHJpZXZhbCBvZiBlbnVtZXJhYmxlIHByb3BlcnR5IG5hbWVzIG9mIGFuIG9iamVjdCxcbiAqIGluaGVyaXRlZCBvciBub3QuXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdFxuICogQHJldHVybnMge0FycmF5fVxuICogQG5hbWVzcGFjZSBVdGlsc1xuICogQG5hbWUgZ2V0RW51bWVyYWJsZVByb3BlcnRpZXNcbiAqIEBhcGkgcHVibGljXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBnZXRFbnVtZXJhYmxlUHJvcGVydGllcyhvYmplY3QpIHtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICBmb3IgKHZhciBuYW1lIGluIG9iamVjdCkge1xuICAgIHJlc3VsdC5wdXNoKG5hbWUpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59O1xuIiwiLyohXG4gKiBDaGFpIC0gbWVzc2FnZSBjb21wb3NpdGlvbiB1dGlsaXR5XG4gKiBDb3B5cmlnaHQoYykgMjAxMi0yMDE0IEpha2UgTHVlciA8amFrZUBhbG9naWNhbHBhcmFkb3guY29tPlxuICogTUlUIExpY2Vuc2VkXG4gKi9cblxuLyohXG4gKiBNb2R1bGUgZGVwZW5kYW5jaWVzXG4gKi9cblxudmFyIGZsYWcgPSByZXF1aXJlKCcuL2ZsYWcnKVxuICAsIGdldEFjdHVhbCA9IHJlcXVpcmUoJy4vZ2V0QWN0dWFsJylcbiAgLCBpbnNwZWN0ID0gcmVxdWlyZSgnLi9pbnNwZWN0JylcbiAgLCBvYmpEaXNwbGF5ID0gcmVxdWlyZSgnLi9vYmpEaXNwbGF5Jyk7XG5cbi8qKlxuICogIyMjIC5nZXRNZXNzYWdlKG9iamVjdCwgbWVzc2FnZSwgbmVnYXRlTWVzc2FnZSlcbiAqXG4gKiBDb25zdHJ1Y3QgdGhlIGVycm9yIG1lc3NhZ2UgYmFzZWQgb24gZmxhZ3NcbiAqIGFuZCB0ZW1wbGF0ZSB0YWdzLiBUZW1wbGF0ZSB0YWdzIHdpbGwgcmV0dXJuXG4gKiBhIHN0cmluZ2lmaWVkIGluc3BlY3Rpb24gb2YgdGhlIG9iamVjdCByZWZlcmVuY2VkLlxuICpcbiAqIE1lc3NhZ2UgdGVtcGxhdGUgdGFnczpcbiAqIC0gYCN7dGhpc31gIGN1cnJlbnQgYXNzZXJ0ZWQgb2JqZWN0XG4gKiAtIGAje2FjdH1gIGFjdHVhbCB2YWx1ZVxuICogLSBgI3tleHB9YCBleHBlY3RlZCB2YWx1ZVxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgKGNvbnN0cnVjdGVkIEFzc2VydGlvbilcbiAqIEBwYXJhbSB7QXJndW1lbnRzfSBjaGFpLkFzc2VydGlvbi5wcm90b3R5cGUuYXNzZXJ0IGFyZ3VtZW50c1xuICogQG5hbWVzcGFjZSBVdGlsc1xuICogQG5hbWUgZ2V0TWVzc2FnZVxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChvYmosIGFyZ3MpIHtcbiAgdmFyIG5lZ2F0ZSA9IGZsYWcob2JqLCAnbmVnYXRlJylcbiAgICAsIHZhbCA9IGZsYWcob2JqLCAnb2JqZWN0JylcbiAgICAsIGV4cGVjdGVkID0gYXJnc1szXVxuICAgICwgYWN0dWFsID0gZ2V0QWN0dWFsKG9iaiwgYXJncylcbiAgICAsIG1zZyA9IG5lZ2F0ZSA/IGFyZ3NbMl0gOiBhcmdzWzFdXG4gICAgLCBmbGFnTXNnID0gZmxhZyhvYmosICdtZXNzYWdlJyk7XG5cbiAgaWYodHlwZW9mIG1zZyA9PT0gXCJmdW5jdGlvblwiKSBtc2cgPSBtc2coKTtcbiAgbXNnID0gbXNnIHx8ICcnO1xuICBtc2cgPSBtc2dcbiAgICAucmVwbGFjZSgvI1xce3RoaXNcXH0vZywgZnVuY3Rpb24gKCkgeyByZXR1cm4gb2JqRGlzcGxheSh2YWwpOyB9KVxuICAgIC5yZXBsYWNlKC8jXFx7YWN0XFx9L2csIGZ1bmN0aW9uICgpIHsgcmV0dXJuIG9iakRpc3BsYXkoYWN0dWFsKTsgfSlcbiAgICAucmVwbGFjZSgvI1xce2V4cFxcfS9nLCBmdW5jdGlvbiAoKSB7IHJldHVybiBvYmpEaXNwbGF5KGV4cGVjdGVkKTsgfSk7XG5cbiAgcmV0dXJuIGZsYWdNc2cgPyBmbGFnTXNnICsgJzogJyArIG1zZyA6IG1zZztcbn07XG4iLCIvKiFcbiAqIENoYWkgLSBnZXROYW1lIHV0aWxpdHlcbiAqIENvcHlyaWdodChjKSAyMDEyLTIwMTQgSmFrZSBMdWVyIDxqYWtlQGFsb2dpY2FscGFyYWRveC5jb20+XG4gKiBNSVQgTGljZW5zZWRcbiAqL1xuXG4vKipcbiAqICMgZ2V0TmFtZShmdW5jKVxuICpcbiAqIEdldHMgdGhlIG5hbWUgb2YgYSBmdW5jdGlvbiwgaW4gYSBjcm9zcy1icm93c2VyIHdheS5cbiAqXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBhIGZ1bmN0aW9uICh1c3VhbGx5IGEgY29uc3RydWN0b3IpXG4gKiBAbmFtZXNwYWNlIFV0aWxzXG4gKiBAbmFtZSBnZXROYW1lXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZnVuYykge1xuICBpZiAoZnVuYy5uYW1lKSByZXR1cm4gZnVuYy5uYW1lO1xuXG4gIHZhciBtYXRjaCA9IC9eXFxzP2Z1bmN0aW9uIChbXihdKilcXCgvLmV4ZWMoZnVuYyk7XG4gIHJldHVybiBtYXRjaCAmJiBtYXRjaFsxXSA/IG1hdGNoWzFdIDogXCJcIjtcbn07XG4iLCIvKiFcbiAqIENoYWkgLSBnZXRQYXRoSW5mbyB1dGlsaXR5XG4gKiBDb3B5cmlnaHQoYykgMjAxMi0yMDE0IEpha2UgTHVlciA8amFrZUBhbG9naWNhbHBhcmFkb3guY29tPlxuICogTUlUIExpY2Vuc2VkXG4gKi9cblxudmFyIGhhc1Byb3BlcnR5ID0gcmVxdWlyZSgnLi9oYXNQcm9wZXJ0eScpO1xuXG4vKipcbiAqICMjIyAuZ2V0UGF0aEluZm8ocGF0aCwgb2JqZWN0KVxuICpcbiAqIFRoaXMgYWxsb3dzIHRoZSByZXRyaWV2YWwgb2YgcHJvcGVydHkgaW5mbyBpbiBhblxuICogb2JqZWN0IGdpdmVuIGEgc3RyaW5nIHBhdGguXG4gKlxuICogVGhlIHBhdGggaW5mbyBjb25zaXN0cyBvZiBhbiBvYmplY3Qgd2l0aCB0aGVcbiAqIGZvbGxvd2luZyBwcm9wZXJ0aWVzOlxuICpcbiAqICogcGFyZW50IC0gVGhlIHBhcmVudCBvYmplY3Qgb2YgdGhlIHByb3BlcnR5IHJlZmVyZW5jZWQgYnkgYHBhdGhgXG4gKiAqIG5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgZmluYWwgcHJvcGVydHksIGEgbnVtYmVyIGlmIGl0IHdhcyBhbiBhcnJheSBpbmRleGVyXG4gKiAqIHZhbHVlIC0gVGhlIHZhbHVlIG9mIHRoZSBwcm9wZXJ0eSwgaWYgaXQgZXhpc3RzLCBvdGhlcndpc2UgYHVuZGVmaW5lZGBcbiAqICogZXhpc3RzIC0gV2hldGhlciB0aGUgcHJvcGVydHkgZXhpc3RzIG9yIG5vdFxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBwYXRoXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0XG4gKiBAcmV0dXJucyB7T2JqZWN0fSBpbmZvXG4gKiBAbmFtZXNwYWNlIFV0aWxzXG4gKiBAbmFtZSBnZXRQYXRoSW5mb1xuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGdldFBhdGhJbmZvKHBhdGgsIG9iaikge1xuICB2YXIgcGFyc2VkID0gcGFyc2VQYXRoKHBhdGgpLFxuICAgICAgbGFzdCA9IHBhcnNlZFtwYXJzZWQubGVuZ3RoIC0gMV07XG5cbiAgdmFyIGluZm8gPSB7XG4gICAgcGFyZW50OiBwYXJzZWQubGVuZ3RoID4gMSA/IF9nZXRQYXRoVmFsdWUocGFyc2VkLCBvYmosIHBhcnNlZC5sZW5ndGggLSAxKSA6IG9iaixcbiAgICBuYW1lOiBsYXN0LnAgfHwgbGFzdC5pLFxuICAgIHZhbHVlOiBfZ2V0UGF0aFZhbHVlKHBhcnNlZCwgb2JqKVxuICB9O1xuICBpbmZvLmV4aXN0cyA9IGhhc1Byb3BlcnR5KGluZm8ubmFtZSwgaW5mby5wYXJlbnQpO1xuXG4gIHJldHVybiBpbmZvO1xufTtcblxuXG4vKiFcbiAqICMjIHBhcnNlUGF0aChwYXRoKVxuICpcbiAqIEhlbHBlciBmdW5jdGlvbiB1c2VkIHRvIHBhcnNlIHN0cmluZyBvYmplY3RcbiAqIHBhdGhzLiBVc2UgaW4gY29uanVuY3Rpb24gd2l0aCBgX2dldFBhdGhWYWx1ZWAuXG4gKlxuICogICAgICB2YXIgcGFyc2VkID0gcGFyc2VQYXRoKCdteW9iamVjdC5wcm9wZXJ0eS5zdWJwcm9wJyk7XG4gKlxuICogIyMjIFBhdGhzOlxuICpcbiAqICogQ2FuIGJlIGFzIG5lYXIgaW5maW5pdGVseSBkZWVwIGFuZCBuZXN0ZWRcbiAqICogQXJyYXlzIGFyZSBhbHNvIHZhbGlkIHVzaW5nIHRoZSBmb3JtYWwgYG15b2JqZWN0LmRvY3VtZW50WzNdLnByb3BlcnR5YC5cbiAqICogTGl0ZXJhbCBkb3RzIGFuZCBicmFja2V0cyAobm90IGRlbGltaXRlcikgbXVzdCBiZSBiYWNrc2xhc2gtZXNjYXBlZC5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gcGF0aFxuICogQHJldHVybnMge09iamVjdH0gcGFyc2VkXG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBwYXJzZVBhdGggKHBhdGgpIHtcbiAgdmFyIHN0ciA9IHBhdGgucmVwbGFjZSgvKFteXFxcXF0pXFxbL2csICckMS5bJylcbiAgICAsIHBhcnRzID0gc3RyLm1hdGNoKC8oXFxcXFxcLnxbXi5dKz8pKy9nKTtcbiAgcmV0dXJuIHBhcnRzLm1hcChmdW5jdGlvbiAodmFsdWUpIHtcbiAgICB2YXIgcmUgPSAvXlxcWyhcXGQrKVxcXSQvXG4gICAgICAsIG1BcnIgPSByZS5leGVjKHZhbHVlKTtcbiAgICBpZiAobUFycikgcmV0dXJuIHsgaTogcGFyc2VGbG9hdChtQXJyWzFdKSB9O1xuICAgIGVsc2UgcmV0dXJuIHsgcDogdmFsdWUucmVwbGFjZSgvXFxcXChbLlxcW1xcXV0pL2csICckMScpIH07XG4gIH0pO1xufVxuXG5cbi8qIVxuICogIyMgX2dldFBhdGhWYWx1ZShwYXJzZWQsIG9iailcbiAqXG4gKiBIZWxwZXIgY29tcGFuaW9uIGZ1bmN0aW9uIGZvciBgLnBhcnNlUGF0aGAgdGhhdCByZXR1cm5zXG4gKiB0aGUgdmFsdWUgbG9jYXRlZCBhdCB0aGUgcGFyc2VkIGFkZHJlc3MuXG4gKlxuICogICAgICB2YXIgdmFsdWUgPSBnZXRQYXRoVmFsdWUocGFyc2VkLCBvYmopO1xuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwYXJzZWQgZGVmaW5pdGlvbiBmcm9tIGBwYXJzZVBhdGhgLlxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCB0byBzZWFyY2ggYWdhaW5zdFxuICogQHBhcmFtIHtOdW1iZXJ9IG9iamVjdCB0byBzZWFyY2ggYWdhaW5zdFxuICogQHJldHVybnMge09iamVjdHxVbmRlZmluZWR9IHZhbHVlXG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBfZ2V0UGF0aFZhbHVlIChwYXJzZWQsIG9iaiwgaW5kZXgpIHtcbiAgdmFyIHRtcCA9IG9ialxuICAgICwgcmVzO1xuXG4gIGluZGV4ID0gKGluZGV4ID09PSB1bmRlZmluZWQgPyBwYXJzZWQubGVuZ3RoIDogaW5kZXgpO1xuXG4gIGZvciAodmFyIGkgPSAwLCBsID0gaW5kZXg7IGkgPCBsOyBpKyspIHtcbiAgICB2YXIgcGFydCA9IHBhcnNlZFtpXTtcbiAgICBpZiAodG1wKSB7XG4gICAgICBpZiAoJ3VuZGVmaW5lZCcgIT09IHR5cGVvZiBwYXJ0LnApXG4gICAgICAgIHRtcCA9IHRtcFtwYXJ0LnBdO1xuICAgICAgZWxzZSBpZiAoJ3VuZGVmaW5lZCcgIT09IHR5cGVvZiBwYXJ0LmkpXG4gICAgICAgIHRtcCA9IHRtcFtwYXJ0LmldO1xuICAgICAgaWYgKGkgPT0gKGwgLSAxKSkgcmVzID0gdG1wO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXMgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXM7XG59XG4iLCIvKiFcbiAqIENoYWkgLSBnZXRQYXRoVmFsdWUgdXRpbGl0eVxuICogQ29weXJpZ2h0KGMpIDIwMTItMjAxNCBKYWtlIEx1ZXIgPGpha2VAYWxvZ2ljYWxwYXJhZG94LmNvbT5cbiAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2xvZ2ljYWxwYXJhZG94L2ZpbHRyXG4gKiBNSVQgTGljZW5zZWRcbiAqL1xuXG52YXIgZ2V0UGF0aEluZm8gPSByZXF1aXJlKCcuL2dldFBhdGhJbmZvJyk7XG5cbi8qKlxuICogIyMjIC5nZXRQYXRoVmFsdWUocGF0aCwgb2JqZWN0KVxuICpcbiAqIFRoaXMgYWxsb3dzIHRoZSByZXRyaWV2YWwgb2YgdmFsdWVzIGluIGFuXG4gKiBvYmplY3QgZ2l2ZW4gYSBzdHJpbmcgcGF0aC5cbiAqXG4gKiAgICAgdmFyIG9iaiA9IHtcbiAqICAgICAgICAgcHJvcDE6IHtcbiAqICAgICAgICAgICAgIGFycjogWydhJywgJ2InLCAnYyddXG4gKiAgICAgICAgICAgLCBzdHI6ICdIZWxsbydcbiAqICAgICAgICAgfVxuICogICAgICAgLCBwcm9wMjoge1xuICogICAgICAgICAgICAgYXJyOiBbIHsgbmVzdGVkOiAnVW5pdmVyc2UnIH0gXVxuICogICAgICAgICAgICwgc3RyOiAnSGVsbG8gYWdhaW4hJ1xuICogICAgICAgICB9XG4gKiAgICAgfVxuICpcbiAqIFRoZSBmb2xsb3dpbmcgd291bGQgYmUgdGhlIHJlc3VsdHMuXG4gKlxuICogICAgIGdldFBhdGhWYWx1ZSgncHJvcDEuc3RyJywgb2JqKTsgLy8gSGVsbG9cbiAqICAgICBnZXRQYXRoVmFsdWUoJ3Byb3AxLmF0dFsyXScsIG9iaik7IC8vIGJcbiAqICAgICBnZXRQYXRoVmFsdWUoJ3Byb3AyLmFyclswXS5uZXN0ZWQnLCBvYmopOyAvLyBVbml2ZXJzZVxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBwYXRoXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0XG4gKiBAcmV0dXJucyB7T2JqZWN0fSB2YWx1ZSBvciBgdW5kZWZpbmVkYFxuICogQG5hbWVzcGFjZSBVdGlsc1xuICogQG5hbWUgZ2V0UGF0aFZhbHVlXG4gKiBAYXBpIHB1YmxpY1xuICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKHBhdGgsIG9iaikge1xuICB2YXIgaW5mbyA9IGdldFBhdGhJbmZvKHBhdGgsIG9iaik7XG4gIHJldHVybiBpbmZvLnZhbHVlO1xufTtcbiIsIi8qIVxuICogQ2hhaSAtIGdldFByb3BlcnRpZXMgdXRpbGl0eVxuICogQ29weXJpZ2h0KGMpIDIwMTItMjAxNCBKYWtlIEx1ZXIgPGpha2VAYWxvZ2ljYWxwYXJhZG94LmNvbT5cbiAqIE1JVCBMaWNlbnNlZFxuICovXG5cbi8qKlxuICogIyMjIC5nZXRQcm9wZXJ0aWVzKG9iamVjdClcbiAqXG4gKiBUaGlzIGFsbG93cyB0aGUgcmV0cmlldmFsIG9mIHByb3BlcnR5IG5hbWVzIG9mIGFuIG9iamVjdCwgZW51bWVyYWJsZSBvciBub3QsXG4gKiBpbmhlcml0ZWQgb3Igbm90LlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3RcbiAqIEByZXR1cm5zIHtBcnJheX1cbiAqIEBuYW1lc3BhY2UgVXRpbHNcbiAqIEBuYW1lIGdldFByb3BlcnRpZXNcbiAqIEBhcGkgcHVibGljXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBnZXRQcm9wZXJ0aWVzKG9iamVjdCkge1xuICB2YXIgcmVzdWx0ID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMob2JqZWN0KTtcblxuICBmdW5jdGlvbiBhZGRQcm9wZXJ0eShwcm9wZXJ0eSkge1xuICAgIGlmIChyZXN1bHQuaW5kZXhPZihwcm9wZXJ0eSkgPT09IC0xKSB7XG4gICAgICByZXN1bHQucHVzaChwcm9wZXJ0eSk7XG4gICAgfVxuICB9XG5cbiAgdmFyIHByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKG9iamVjdCk7XG4gIHdoaWxlIChwcm90byAhPT0gbnVsbCkge1xuICAgIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHByb3RvKS5mb3JFYWNoKGFkZFByb3BlcnR5KTtcbiAgICBwcm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihwcm90byk7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufTtcbiIsIi8qIVxuICogQ2hhaSAtIGhhc1Byb3BlcnR5IHV0aWxpdHlcbiAqIENvcHlyaWdodChjKSAyMDEyLTIwMTQgSmFrZSBMdWVyIDxqYWtlQGFsb2dpY2FscGFyYWRveC5jb20+XG4gKiBNSVQgTGljZW5zZWRcbiAqL1xuXG52YXIgdHlwZSA9IHJlcXVpcmUoJ3R5cGUtZGV0ZWN0Jyk7XG5cbi8qKlxuICogIyMjIC5oYXNQcm9wZXJ0eShvYmplY3QsIG5hbWUpXG4gKlxuICogVGhpcyBhbGxvd3MgY2hlY2tpbmcgd2hldGhlciBhbiBvYmplY3QgaGFzXG4gKiBuYW1lZCBwcm9wZXJ0eSBvciBudW1lcmljIGFycmF5IGluZGV4LlxuICpcbiAqIEJhc2ljYWxseSBkb2VzIHRoZSBzYW1lIHRoaW5nIGFzIHRoZSBgaW5gXG4gKiBvcGVyYXRvciBidXQgd29ya3MgcHJvcGVybHkgd2l0aCBuYXRpdmVzXG4gKiBhbmQgbnVsbC91bmRlZmluZWQgdmFsdWVzLlxuICpcbiAqICAgICB2YXIgb2JqID0ge1xuICogICAgICAgICBhcnI6IFsnYScsICdiJywgJ2MnXVxuICogICAgICAgLCBzdHI6ICdIZWxsbydcbiAqICAgICB9XG4gKlxuICogVGhlIGZvbGxvd2luZyB3b3VsZCBiZSB0aGUgcmVzdWx0cy5cbiAqXG4gKiAgICAgaGFzUHJvcGVydHkoJ3N0cicsIG9iaik7ICAvLyB0cnVlXG4gKiAgICAgaGFzUHJvcGVydHkoJ2NvbnN0cnVjdG9yJywgb2JqKTsgIC8vIHRydWVcbiAqICAgICBoYXNQcm9wZXJ0eSgnYmFyJywgb2JqKTsgIC8vIGZhbHNlXG4gKlxuICogICAgIGhhc1Byb3BlcnR5KCdsZW5ndGgnLCBvYmouc3RyKTsgLy8gdHJ1ZVxuICogICAgIGhhc1Byb3BlcnR5KDEsIG9iai5zdHIpOyAgLy8gdHJ1ZVxuICogICAgIGhhc1Byb3BlcnR5KDUsIG9iai5zdHIpOyAgLy8gZmFsc2VcbiAqXG4gKiAgICAgaGFzUHJvcGVydHkoJ2xlbmd0aCcsIG9iai5hcnIpOyAgLy8gdHJ1ZVxuICogICAgIGhhc1Byb3BlcnR5KDIsIG9iai5hcnIpOyAgLy8gdHJ1ZVxuICogICAgIGhhc1Byb3BlcnR5KDMsIG9iai5hcnIpOyAgLy8gZmFsc2VcbiAqXG4gKiBAcGFyYW0ge09ianVlY3R9IG9iamVjdFxuICogQHBhcmFtIHtTdHJpbmd8TnVtYmVyfSBuYW1lXG4gKiBAcmV0dXJucyB7Qm9vbGVhbn0gd2hldGhlciBpdCBleGlzdHNcbiAqIEBuYW1lc3BhY2UgVXRpbHNcbiAqIEBuYW1lIGdldFBhdGhJbmZvXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbnZhciBsaXRlcmFscyA9IHtcbiAgICAnbnVtYmVyJzogTnVtYmVyXG4gICwgJ3N0cmluZyc6IFN0cmluZ1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBoYXNQcm9wZXJ0eShuYW1lLCBvYmopIHtcbiAgdmFyIG90ID0gdHlwZShvYmopO1xuXG4gIC8vIEJhZCBPYmplY3QsIG9idmlvdXNseSBubyBwcm9wcyBhdCBhbGxcbiAgaWYob3QgPT09ICdudWxsJyB8fCBvdCA9PT0gJ3VuZGVmaW5lZCcpXG4gICAgcmV0dXJuIGZhbHNlO1xuXG4gIC8vIFRoZSBgaW5gIG9wZXJhdG9yIGRvZXMgbm90IHdvcmsgd2l0aCBjZXJ0YWluIGxpdGVyYWxzXG4gIC8vIGJveCB0aGVzZSBiZWZvcmUgdGhlIGNoZWNrXG4gIGlmKGxpdGVyYWxzW290XSAmJiB0eXBlb2Ygb2JqICE9PSAnb2JqZWN0JylcbiAgICBvYmogPSBuZXcgbGl0ZXJhbHNbb3RdKG9iaik7XG5cbiAgcmV0dXJuIG5hbWUgaW4gb2JqO1xufTtcbiIsIi8qIVxuICogY2hhaVxuICogQ29weXJpZ2h0KGMpIDIwMTEgSmFrZSBMdWVyIDxqYWtlQGFsb2dpY2FscGFyYWRveC5jb20+XG4gKiBNSVQgTGljZW5zZWRcbiAqL1xuXG4vKiFcbiAqIE1haW4gZXhwb3J0c1xuICovXG5cbnZhciBleHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSB7fTtcblxuLyohXG4gKiB0ZXN0IHV0aWxpdHlcbiAqL1xuXG5leHBvcnRzLnRlc3QgPSByZXF1aXJlKCcuL3Rlc3QnKTtcblxuLyohXG4gKiB0eXBlIHV0aWxpdHlcbiAqL1xuXG5leHBvcnRzLnR5cGUgPSByZXF1aXJlKCd0eXBlLWRldGVjdCcpO1xuXG4vKiFcbiAqIGV4cGVjdFR5cGVzIHV0aWxpdHlcbiAqL1xuZXhwb3J0cy5leHBlY3RUeXBlcyA9IHJlcXVpcmUoJy4vZXhwZWN0VHlwZXMnKTtcblxuLyohXG4gKiBtZXNzYWdlIHV0aWxpdHlcbiAqL1xuXG5leHBvcnRzLmdldE1lc3NhZ2UgPSByZXF1aXJlKCcuL2dldE1lc3NhZ2UnKTtcblxuLyohXG4gKiBhY3R1YWwgdXRpbGl0eVxuICovXG5cbmV4cG9ydHMuZ2V0QWN0dWFsID0gcmVxdWlyZSgnLi9nZXRBY3R1YWwnKTtcblxuLyohXG4gKiBJbnNwZWN0IHV0aWxcbiAqL1xuXG5leHBvcnRzLmluc3BlY3QgPSByZXF1aXJlKCcuL2luc3BlY3QnKTtcblxuLyohXG4gKiBPYmplY3QgRGlzcGxheSB1dGlsXG4gKi9cblxuZXhwb3J0cy5vYmpEaXNwbGF5ID0gcmVxdWlyZSgnLi9vYmpEaXNwbGF5Jyk7XG5cbi8qIVxuICogRmxhZyB1dGlsaXR5XG4gKi9cblxuZXhwb3J0cy5mbGFnID0gcmVxdWlyZSgnLi9mbGFnJyk7XG5cbi8qIVxuICogRmxhZyB0cmFuc2ZlcnJpbmcgdXRpbGl0eVxuICovXG5cbmV4cG9ydHMudHJhbnNmZXJGbGFncyA9IHJlcXVpcmUoJy4vdHJhbnNmZXJGbGFncycpO1xuXG4vKiFcbiAqIERlZXAgZXF1YWwgdXRpbGl0eVxuICovXG5cbmV4cG9ydHMuZXFsID0gcmVxdWlyZSgnZGVlcC1lcWwnKTtcblxuLyohXG4gKiBEZWVwIHBhdGggdmFsdWVcbiAqL1xuXG5leHBvcnRzLmdldFBhdGhWYWx1ZSA9IHJlcXVpcmUoJy4vZ2V0UGF0aFZhbHVlJyk7XG5cbi8qIVxuICogRGVlcCBwYXRoIGluZm9cbiAqL1xuXG5leHBvcnRzLmdldFBhdGhJbmZvID0gcmVxdWlyZSgnLi9nZXRQYXRoSW5mbycpO1xuXG4vKiFcbiAqIENoZWNrIGlmIGEgcHJvcGVydHkgZXhpc3RzXG4gKi9cblxuZXhwb3J0cy5oYXNQcm9wZXJ0eSA9IHJlcXVpcmUoJy4vaGFzUHJvcGVydHknKTtcblxuLyohXG4gKiBGdW5jdGlvbiBuYW1lXG4gKi9cblxuZXhwb3J0cy5nZXROYW1lID0gcmVxdWlyZSgnLi9nZXROYW1lJyk7XG5cbi8qIVxuICogYWRkIFByb3BlcnR5XG4gKi9cblxuZXhwb3J0cy5hZGRQcm9wZXJ0eSA9IHJlcXVpcmUoJy4vYWRkUHJvcGVydHknKTtcblxuLyohXG4gKiBhZGQgTWV0aG9kXG4gKi9cblxuZXhwb3J0cy5hZGRNZXRob2QgPSByZXF1aXJlKCcuL2FkZE1ldGhvZCcpO1xuXG4vKiFcbiAqIG92ZXJ3cml0ZSBQcm9wZXJ0eVxuICovXG5cbmV4cG9ydHMub3ZlcndyaXRlUHJvcGVydHkgPSByZXF1aXJlKCcuL292ZXJ3cml0ZVByb3BlcnR5Jyk7XG5cbi8qIVxuICogb3ZlcndyaXRlIE1ldGhvZFxuICovXG5cbmV4cG9ydHMub3ZlcndyaXRlTWV0aG9kID0gcmVxdWlyZSgnLi9vdmVyd3JpdGVNZXRob2QnKTtcblxuLyohXG4gKiBBZGQgYSBjaGFpbmFibGUgbWV0aG9kXG4gKi9cblxuZXhwb3J0cy5hZGRDaGFpbmFibGVNZXRob2QgPSByZXF1aXJlKCcuL2FkZENoYWluYWJsZU1ldGhvZCcpO1xuXG4vKiFcbiAqIE92ZXJ3cml0ZSBjaGFpbmFibGUgbWV0aG9kXG4gKi9cblxuZXhwb3J0cy5vdmVyd3JpdGVDaGFpbmFibGVNZXRob2QgPSByZXF1aXJlKCcuL292ZXJ3cml0ZUNoYWluYWJsZU1ldGhvZCcpO1xuIiwiLy8gVGhpcyBpcyAoYWxtb3N0KSBkaXJlY3RseSBmcm9tIE5vZGUuanMgdXRpbHNcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9qb3llbnQvbm9kZS9ibG9iL2Y4YzMzNWQwY2FmNDdmMTZkMzE0MTNmODlhYTI4ZWRhMzg3OGUzYWEvbGliL3V0aWwuanNcblxudmFyIGdldE5hbWUgPSByZXF1aXJlKCcuL2dldE5hbWUnKTtcbnZhciBnZXRQcm9wZXJ0aWVzID0gcmVxdWlyZSgnLi9nZXRQcm9wZXJ0aWVzJyk7XG52YXIgZ2V0RW51bWVyYWJsZVByb3BlcnRpZXMgPSByZXF1aXJlKCcuL2dldEVudW1lcmFibGVQcm9wZXJ0aWVzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gaW5zcGVjdDtcblxuLyoqXG4gKiBFY2hvcyB0aGUgdmFsdWUgb2YgYSB2YWx1ZS4gVHJ5cyB0byBwcmludCB0aGUgdmFsdWUgb3V0XG4gKiBpbiB0aGUgYmVzdCB3YXkgcG9zc2libGUgZ2l2ZW4gdGhlIGRpZmZlcmVudCB0eXBlcy5cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqIFRoZSBvYmplY3QgdG8gcHJpbnQgb3V0LlxuICogQHBhcmFtIHtCb29sZWFufSBzaG93SGlkZGVuIEZsYWcgdGhhdCBzaG93cyBoaWRkZW4gKG5vdCBlbnVtZXJhYmxlKVxuICogICAgcHJvcGVydGllcyBvZiBvYmplY3RzLlxuICogQHBhcmFtIHtOdW1iZXJ9IGRlcHRoIERlcHRoIGluIHdoaWNoIHRvIGRlc2NlbmQgaW4gb2JqZWN0LiBEZWZhdWx0IGlzIDIuXG4gKiBAcGFyYW0ge0Jvb2xlYW59IGNvbG9ycyBGbGFnIHRvIHR1cm4gb24gQU5TSSBlc2NhcGUgY29kZXMgdG8gY29sb3IgdGhlXG4gKiAgICBvdXRwdXQuIERlZmF1bHQgaXMgZmFsc2UgKG5vIGNvbG9yaW5nKS5cbiAqIEBuYW1lc3BhY2UgVXRpbHNcbiAqIEBuYW1lIGluc3BlY3RcbiAqL1xuZnVuY3Rpb24gaW5zcGVjdChvYmosIHNob3dIaWRkZW4sIGRlcHRoLCBjb2xvcnMpIHtcbiAgdmFyIGN0eCA9IHtcbiAgICBzaG93SGlkZGVuOiBzaG93SGlkZGVuLFxuICAgIHNlZW46IFtdLFxuICAgIHN0eWxpemU6IGZ1bmN0aW9uIChzdHIpIHsgcmV0dXJuIHN0cjsgfVxuICB9O1xuICByZXR1cm4gZm9ybWF0VmFsdWUoY3R4LCBvYmosICh0eXBlb2YgZGVwdGggPT09ICd1bmRlZmluZWQnID8gMiA6IGRlcHRoKSk7XG59XG5cbi8vIFJldHVybnMgdHJ1ZSBpZiBvYmplY3QgaXMgYSBET00gZWxlbWVudC5cbnZhciBpc0RPTUVsZW1lbnQgPSBmdW5jdGlvbiAob2JqZWN0KSB7XG4gIGlmICh0eXBlb2YgSFRNTEVsZW1lbnQgPT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIG9iamVjdCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50O1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBvYmplY3QgJiZcbiAgICAgIHR5cGVvZiBvYmplY3QgPT09ICdvYmplY3QnICYmXG4gICAgICBvYmplY3Qubm9kZVR5cGUgPT09IDEgJiZcbiAgICAgIHR5cGVvZiBvYmplY3Qubm9kZU5hbWUgPT09ICdzdHJpbmcnO1xuICB9XG59O1xuXG5mdW5jdGlvbiBmb3JtYXRWYWx1ZShjdHgsIHZhbHVlLCByZWN1cnNlVGltZXMpIHtcbiAgLy8gUHJvdmlkZSBhIGhvb2sgZm9yIHVzZXItc3BlY2lmaWVkIGluc3BlY3QgZnVuY3Rpb25zLlxuICAvLyBDaGVjayB0aGF0IHZhbHVlIGlzIGFuIG9iamVjdCB3aXRoIGFuIGluc3BlY3QgZnVuY3Rpb24gb24gaXRcbiAgaWYgKHZhbHVlICYmIHR5cGVvZiB2YWx1ZS5pbnNwZWN0ID09PSAnZnVuY3Rpb24nICYmXG4gICAgICAvLyBGaWx0ZXIgb3V0IHRoZSB1dGlsIG1vZHVsZSwgaXQncyBpbnNwZWN0IGZ1bmN0aW9uIGlzIHNwZWNpYWxcbiAgICAgIHZhbHVlLmluc3BlY3QgIT09IGV4cG9ydHMuaW5zcGVjdCAmJlxuICAgICAgLy8gQWxzbyBmaWx0ZXIgb3V0IGFueSBwcm90b3R5cGUgb2JqZWN0cyB1c2luZyB0aGUgY2lyY3VsYXIgY2hlY2suXG4gICAgICAhKHZhbHVlLmNvbnN0cnVjdG9yICYmIHZhbHVlLmNvbnN0cnVjdG9yLnByb3RvdHlwZSA9PT0gdmFsdWUpKSB7XG4gICAgdmFyIHJldCA9IHZhbHVlLmluc3BlY3QocmVjdXJzZVRpbWVzKTtcbiAgICBpZiAodHlwZW9mIHJldCAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHJldCA9IGZvcm1hdFZhbHVlKGN0eCwgcmV0LCByZWN1cnNlVGltZXMpO1xuICAgIH1cbiAgICByZXR1cm4gcmV0O1xuICB9XG5cbiAgLy8gUHJpbWl0aXZlIHR5cGVzIGNhbm5vdCBoYXZlIHByb3BlcnRpZXNcbiAgdmFyIHByaW1pdGl2ZSA9IGZvcm1hdFByaW1pdGl2ZShjdHgsIHZhbHVlKTtcbiAgaWYgKHByaW1pdGl2ZSkge1xuICAgIHJldHVybiBwcmltaXRpdmU7XG4gIH1cblxuICAvLyBJZiB0aGlzIGlzIGEgRE9NIGVsZW1lbnQsIHRyeSB0byBnZXQgdGhlIG91dGVyIEhUTUwuXG4gIGlmIChpc0RPTUVsZW1lbnQodmFsdWUpKSB7XG4gICAgaWYgKCdvdXRlckhUTUwnIGluIHZhbHVlKSB7XG4gICAgICByZXR1cm4gdmFsdWUub3V0ZXJIVE1MO1xuICAgICAgLy8gVGhpcyB2YWx1ZSBkb2VzIG5vdCBoYXZlIGFuIG91dGVySFRNTCBhdHRyaWJ1dGUsXG4gICAgICAvLyAgIGl0IGNvdWxkIHN0aWxsIGJlIGFuIFhNTCBlbGVtZW50XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEF0dGVtcHQgdG8gc2VyaWFsaXplIGl0XG4gICAgICB0cnkge1xuICAgICAgICBpZiAoZG9jdW1lbnQueG1sVmVyc2lvbikge1xuICAgICAgICAgIHZhciB4bWxTZXJpYWxpemVyID0gbmV3IFhNTFNlcmlhbGl6ZXIoKTtcbiAgICAgICAgICByZXR1cm4geG1sU2VyaWFsaXplci5zZXJpYWxpemVUb1N0cmluZyh2YWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gRmlyZWZveCAxMS0gZG8gbm90IHN1cHBvcnQgb3V0ZXJIVE1MXG4gICAgICAgICAgLy8gICBJdCBkb2VzLCBob3dldmVyLCBzdXBwb3J0IGlubmVySFRNTFxuICAgICAgICAgIC8vICAgVXNlIHRoZSBmb2xsb3dpbmcgdG8gcmVuZGVyIHRoZSBlbGVtZW50XG4gICAgICAgICAgdmFyIG5zID0gXCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sXCI7XG4gICAgICAgICAgdmFyIGNvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhucywgJ18nKTtcblxuICAgICAgICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZCh2YWx1ZS5jbG9uZU5vZGUoZmFsc2UpKTtcbiAgICAgICAgICBodG1sID0gY29udGFpbmVyLmlubmVySFRNTFxuICAgICAgICAgICAgLnJlcGxhY2UoJz48JywgJz4nICsgdmFsdWUuaW5uZXJIVE1MICsgJzwnKTtcbiAgICAgICAgICBjb250YWluZXIuaW5uZXJIVE1MID0gJyc7XG4gICAgICAgICAgcmV0dXJuIGh0bWw7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAvLyBUaGlzIGNvdWxkIGJlIGEgbm9uLW5hdGl2ZSBET00gaW1wbGVtZW50YXRpb24sXG4gICAgICAgIC8vICAgY29udGludWUgd2l0aCB0aGUgbm9ybWFsIGZsb3c6XG4gICAgICAgIC8vICAgcHJpbnRpbmcgdGhlIGVsZW1lbnQgYXMgaWYgaXQgaXMgYW4gb2JqZWN0LlxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIExvb2sgdXAgdGhlIGtleXMgb2YgdGhlIG9iamVjdC5cbiAgdmFyIHZpc2libGVLZXlzID0gZ2V0RW51bWVyYWJsZVByb3BlcnRpZXModmFsdWUpO1xuICB2YXIga2V5cyA9IGN0eC5zaG93SGlkZGVuID8gZ2V0UHJvcGVydGllcyh2YWx1ZSkgOiB2aXNpYmxlS2V5cztcblxuICAvLyBTb21lIHR5cGUgb2Ygb2JqZWN0IHdpdGhvdXQgcHJvcGVydGllcyBjYW4gYmUgc2hvcnRjdXR0ZWQuXG4gIC8vIEluIElFLCBlcnJvcnMgaGF2ZSBhIHNpbmdsZSBgc3RhY2tgIHByb3BlcnR5LCBvciBpZiB0aGV5IGFyZSB2YW5pbGxhIGBFcnJvcmAsXG4gIC8vIGEgYHN0YWNrYCBwbHVzIGBkZXNjcmlwdGlvbmAgcHJvcGVydHk7IGlnbm9yZSB0aG9zZSBmb3IgY29uc2lzdGVuY3kuXG4gIGlmIChrZXlzLmxlbmd0aCA9PT0gMCB8fCAoaXNFcnJvcih2YWx1ZSkgJiYgKFxuICAgICAgKGtleXMubGVuZ3RoID09PSAxICYmIGtleXNbMF0gPT09ICdzdGFjaycpIHx8XG4gICAgICAoa2V5cy5sZW5ndGggPT09IDIgJiYga2V5c1swXSA9PT0gJ2Rlc2NyaXB0aW9uJyAmJiBrZXlzWzFdID09PSAnc3RhY2snKVxuICAgICApKSkge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHZhciBuYW1lID0gZ2V0TmFtZSh2YWx1ZSk7XG4gICAgICB2YXIgbmFtZVN1ZmZpeCA9IG5hbWUgPyAnOiAnICsgbmFtZSA6ICcnO1xuICAgICAgcmV0dXJuIGN0eC5zdHlsaXplKCdbRnVuY3Rpb24nICsgbmFtZVN1ZmZpeCArICddJywgJ3NwZWNpYWwnKTtcbiAgICB9XG4gICAgaWYgKGlzUmVnRXhwKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIGN0eC5zdHlsaXplKFJlZ0V4cC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh2YWx1ZSksICdyZWdleHAnKTtcbiAgICB9XG4gICAgaWYgKGlzRGF0ZSh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiBjdHguc3R5bGl6ZShEYXRlLnByb3RvdHlwZS50b1VUQ1N0cmluZy5jYWxsKHZhbHVlKSwgJ2RhdGUnKTtcbiAgICB9XG4gICAgaWYgKGlzRXJyb3IodmFsdWUpKSB7XG4gICAgICByZXR1cm4gZm9ybWF0RXJyb3IodmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHZhciBiYXNlID0gJycsIGFycmF5ID0gZmFsc2UsIGJyYWNlcyA9IFsneycsICd9J107XG5cbiAgLy8gTWFrZSBBcnJheSBzYXkgdGhhdCB0aGV5IGFyZSBBcnJheVxuICBpZiAoaXNBcnJheSh2YWx1ZSkpIHtcbiAgICBhcnJheSA9IHRydWU7XG4gICAgYnJhY2VzID0gWydbJywgJ10nXTtcbiAgfVxuXG4gIC8vIE1ha2UgZnVuY3Rpb25zIHNheSB0aGF0IHRoZXkgYXJlIGZ1bmN0aW9uc1xuICBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgdmFyIG5hbWUgPSBnZXROYW1lKHZhbHVlKTtcbiAgICB2YXIgbmFtZVN1ZmZpeCA9IG5hbWUgPyAnOiAnICsgbmFtZSA6ICcnO1xuICAgIGJhc2UgPSAnIFtGdW5jdGlvbicgKyBuYW1lU3VmZml4ICsgJ10nO1xuICB9XG5cbiAgLy8gTWFrZSBSZWdFeHBzIHNheSB0aGF0IHRoZXkgYXJlIFJlZ0V4cHNcbiAgaWYgKGlzUmVnRXhwKHZhbHVlKSkge1xuICAgIGJhc2UgPSAnICcgKyBSZWdFeHAucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsdWUpO1xuICB9XG5cbiAgLy8gTWFrZSBkYXRlcyB3aXRoIHByb3BlcnRpZXMgZmlyc3Qgc2F5IHRoZSBkYXRlXG4gIGlmIChpc0RhdGUodmFsdWUpKSB7XG4gICAgYmFzZSA9ICcgJyArIERhdGUucHJvdG90eXBlLnRvVVRDU3RyaW5nLmNhbGwodmFsdWUpO1xuICB9XG5cbiAgLy8gTWFrZSBlcnJvciB3aXRoIG1lc3NhZ2UgZmlyc3Qgc2F5IHRoZSBlcnJvclxuICBpZiAoaXNFcnJvcih2YWx1ZSkpIHtcbiAgICByZXR1cm4gZm9ybWF0RXJyb3IodmFsdWUpO1xuICB9XG5cbiAgaWYgKGtleXMubGVuZ3RoID09PSAwICYmICghYXJyYXkgfHwgdmFsdWUubGVuZ3RoID09IDApKSB7XG4gICAgcmV0dXJuIGJyYWNlc1swXSArIGJhc2UgKyBicmFjZXNbMV07XG4gIH1cblxuICBpZiAocmVjdXJzZVRpbWVzIDwgMCkge1xuICAgIGlmIChpc1JlZ0V4cCh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiBjdHguc3R5bGl6ZShSZWdFeHAucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsdWUpLCAncmVnZXhwJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBjdHguc3R5bGl6ZSgnW09iamVjdF0nLCAnc3BlY2lhbCcpO1xuICAgIH1cbiAgfVxuXG4gIGN0eC5zZWVuLnB1c2godmFsdWUpO1xuXG4gIHZhciBvdXRwdXQ7XG4gIGlmIChhcnJheSkge1xuICAgIG91dHB1dCA9IGZvcm1hdEFycmF5KGN0eCwgdmFsdWUsIHJlY3Vyc2VUaW1lcywgdmlzaWJsZUtleXMsIGtleXMpO1xuICB9IGVsc2Uge1xuICAgIG91dHB1dCA9IGtleXMubWFwKGZ1bmN0aW9uKGtleSkge1xuICAgICAgcmV0dXJuIGZvcm1hdFByb3BlcnR5KGN0eCwgdmFsdWUsIHJlY3Vyc2VUaW1lcywgdmlzaWJsZUtleXMsIGtleSwgYXJyYXkpO1xuICAgIH0pO1xuICB9XG5cbiAgY3R4LnNlZW4ucG9wKCk7XG5cbiAgcmV0dXJuIHJlZHVjZVRvU2luZ2xlU3RyaW5nKG91dHB1dCwgYmFzZSwgYnJhY2VzKTtcbn1cblxuXG5mdW5jdGlvbiBmb3JtYXRQcmltaXRpdmUoY3R4LCB2YWx1ZSkge1xuICBzd2l0Y2ggKHR5cGVvZiB2YWx1ZSkge1xuICAgIGNhc2UgJ3VuZGVmaW5lZCc6XG4gICAgICByZXR1cm4gY3R4LnN0eWxpemUoJ3VuZGVmaW5lZCcsICd1bmRlZmluZWQnKTtcblxuICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICB2YXIgc2ltcGxlID0gJ1xcJycgKyBKU09OLnN0cmluZ2lmeSh2YWx1ZSkucmVwbGFjZSgvXlwifFwiJC9nLCAnJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoLycvZywgXCJcXFxcJ1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgvXFxcXFwiL2csICdcIicpICsgJ1xcJyc7XG4gICAgICByZXR1cm4gY3R4LnN0eWxpemUoc2ltcGxlLCAnc3RyaW5nJyk7XG5cbiAgICBjYXNlICdudW1iZXInOlxuICAgICAgaWYgKHZhbHVlID09PSAwICYmICgxL3ZhbHVlKSA9PT0gLUluZmluaXR5KSB7XG4gICAgICAgIHJldHVybiBjdHguc3R5bGl6ZSgnLTAnLCAnbnVtYmVyJyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gY3R4LnN0eWxpemUoJycgKyB2YWx1ZSwgJ251bWJlcicpO1xuXG4gICAgY2FzZSAnYm9vbGVhbic6XG4gICAgICByZXR1cm4gY3R4LnN0eWxpemUoJycgKyB2YWx1ZSwgJ2Jvb2xlYW4nKTtcbiAgfVxuICAvLyBGb3Igc29tZSByZWFzb24gdHlwZW9mIG51bGwgaXMgXCJvYmplY3RcIiwgc28gc3BlY2lhbCBjYXNlIGhlcmUuXG4gIGlmICh2YWx1ZSA9PT0gbnVsbCkge1xuICAgIHJldHVybiBjdHguc3R5bGl6ZSgnbnVsbCcsICdudWxsJyk7XG4gIH1cbn1cblxuXG5mdW5jdGlvbiBmb3JtYXRFcnJvcih2YWx1ZSkge1xuICByZXR1cm4gJ1snICsgRXJyb3IucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsdWUpICsgJ10nO1xufVxuXG5cbmZ1bmN0aW9uIGZvcm1hdEFycmF5KGN0eCwgdmFsdWUsIHJlY3Vyc2VUaW1lcywgdmlzaWJsZUtleXMsIGtleXMpIHtcbiAgdmFyIG91dHB1dCA9IFtdO1xuICBmb3IgKHZhciBpID0gMCwgbCA9IHZhbHVlLmxlbmd0aDsgaSA8IGw7ICsraSkge1xuICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodmFsdWUsIFN0cmluZyhpKSkpIHtcbiAgICAgIG91dHB1dC5wdXNoKGZvcm1hdFByb3BlcnR5KGN0eCwgdmFsdWUsIHJlY3Vyc2VUaW1lcywgdmlzaWJsZUtleXMsXG4gICAgICAgICAgU3RyaW5nKGkpLCB0cnVlKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dHB1dC5wdXNoKCcnKTtcbiAgICB9XG4gIH1cbiAga2V5cy5mb3JFYWNoKGZ1bmN0aW9uKGtleSkge1xuICAgIGlmICgha2V5Lm1hdGNoKC9eXFxkKyQvKSkge1xuICAgICAgb3V0cHV0LnB1c2goZm9ybWF0UHJvcGVydHkoY3R4LCB2YWx1ZSwgcmVjdXJzZVRpbWVzLCB2aXNpYmxlS2V5cyxcbiAgICAgICAgICBrZXksIHRydWUpKTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gb3V0cHV0O1xufVxuXG5cbmZ1bmN0aW9uIGZvcm1hdFByb3BlcnR5KGN0eCwgdmFsdWUsIHJlY3Vyc2VUaW1lcywgdmlzaWJsZUtleXMsIGtleSwgYXJyYXkpIHtcbiAgdmFyIG5hbWUsIHN0cjtcbiAgaWYgKHZhbHVlLl9fbG9va3VwR2V0dGVyX18pIHtcbiAgICBpZiAodmFsdWUuX19sb29rdXBHZXR0ZXJfXyhrZXkpKSB7XG4gICAgICBpZiAodmFsdWUuX19sb29rdXBTZXR0ZXJfXyhrZXkpKSB7XG4gICAgICAgIHN0ciA9IGN0eC5zdHlsaXplKCdbR2V0dGVyL1NldHRlcl0nLCAnc3BlY2lhbCcpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3RyID0gY3R4LnN0eWxpemUoJ1tHZXR0ZXJdJywgJ3NwZWNpYWwnKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHZhbHVlLl9fbG9va3VwU2V0dGVyX18oa2V5KSkge1xuICAgICAgICBzdHIgPSBjdHguc3R5bGl6ZSgnW1NldHRlcl0nLCAnc3BlY2lhbCcpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBpZiAodmlzaWJsZUtleXMuaW5kZXhPZihrZXkpIDwgMCkge1xuICAgIG5hbWUgPSAnWycgKyBrZXkgKyAnXSc7XG4gIH1cbiAgaWYgKCFzdHIpIHtcbiAgICBpZiAoY3R4LnNlZW4uaW5kZXhPZih2YWx1ZVtrZXldKSA8IDApIHtcbiAgICAgIGlmIChyZWN1cnNlVGltZXMgPT09IG51bGwpIHtcbiAgICAgICAgc3RyID0gZm9ybWF0VmFsdWUoY3R4LCB2YWx1ZVtrZXldLCBudWxsKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN0ciA9IGZvcm1hdFZhbHVlKGN0eCwgdmFsdWVba2V5XSwgcmVjdXJzZVRpbWVzIC0gMSk7XG4gICAgICB9XG4gICAgICBpZiAoc3RyLmluZGV4T2YoJ1xcbicpID4gLTEpIHtcbiAgICAgICAgaWYgKGFycmF5KSB7XG4gICAgICAgICAgc3RyID0gc3RyLnNwbGl0KCdcXG4nKS5tYXAoZnVuY3Rpb24obGluZSkge1xuICAgICAgICAgICAgcmV0dXJuICcgICcgKyBsaW5lO1xuICAgICAgICAgIH0pLmpvaW4oJ1xcbicpLnN1YnN0cigyKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzdHIgPSAnXFxuJyArIHN0ci5zcGxpdCgnXFxuJykubWFwKGZ1bmN0aW9uKGxpbmUpIHtcbiAgICAgICAgICAgIHJldHVybiAnICAgJyArIGxpbmU7XG4gICAgICAgICAgfSkuam9pbignXFxuJyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgc3RyID0gY3R4LnN0eWxpemUoJ1tDaXJjdWxhcl0nLCAnc3BlY2lhbCcpO1xuICAgIH1cbiAgfVxuICBpZiAodHlwZW9mIG5hbWUgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgaWYgKGFycmF5ICYmIGtleS5tYXRjaCgvXlxcZCskLykpIHtcbiAgICAgIHJldHVybiBzdHI7XG4gICAgfVxuICAgIG5hbWUgPSBKU09OLnN0cmluZ2lmeSgnJyArIGtleSk7XG4gICAgaWYgKG5hbWUubWF0Y2goL15cIihbYS16QS1aX11bYS16QS1aXzAtOV0qKVwiJC8pKSB7XG4gICAgICBuYW1lID0gbmFtZS5zdWJzdHIoMSwgbmFtZS5sZW5ndGggLSAyKTtcbiAgICAgIG5hbWUgPSBjdHguc3R5bGl6ZShuYW1lLCAnbmFtZScpO1xuICAgIH0gZWxzZSB7XG4gICAgICBuYW1lID0gbmFtZS5yZXBsYWNlKC8nL2csIFwiXFxcXCdcIilcbiAgICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcXFxcIi9nLCAnXCInKVxuICAgICAgICAgICAgICAgICAucmVwbGFjZSgvKF5cInxcIiQpL2csIFwiJ1wiKTtcbiAgICAgIG5hbWUgPSBjdHguc3R5bGl6ZShuYW1lLCAnc3RyaW5nJyk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG5hbWUgKyAnOiAnICsgc3RyO1xufVxuXG5cbmZ1bmN0aW9uIHJlZHVjZVRvU2luZ2xlU3RyaW5nKG91dHB1dCwgYmFzZSwgYnJhY2VzKSB7XG4gIHZhciBudW1MaW5lc0VzdCA9IDA7XG4gIHZhciBsZW5ndGggPSBvdXRwdXQucmVkdWNlKGZ1bmN0aW9uKHByZXYsIGN1cikge1xuICAgIG51bUxpbmVzRXN0Kys7XG4gICAgaWYgKGN1ci5pbmRleE9mKCdcXG4nKSA+PSAwKSBudW1MaW5lc0VzdCsrO1xuICAgIHJldHVybiBwcmV2ICsgY3VyLmxlbmd0aCArIDE7XG4gIH0sIDApO1xuXG4gIGlmIChsZW5ndGggPiA2MCkge1xuICAgIHJldHVybiBicmFjZXNbMF0gK1xuICAgICAgICAgICAoYmFzZSA9PT0gJycgPyAnJyA6IGJhc2UgKyAnXFxuICcpICtcbiAgICAgICAgICAgJyAnICtcbiAgICAgICAgICAgb3V0cHV0LmpvaW4oJyxcXG4gICcpICtcbiAgICAgICAgICAgJyAnICtcbiAgICAgICAgICAgYnJhY2VzWzFdO1xuICB9XG5cbiAgcmV0dXJuIGJyYWNlc1swXSArIGJhc2UgKyAnICcgKyBvdXRwdXQuam9pbignLCAnKSArICcgJyArIGJyYWNlc1sxXTtcbn1cblxuZnVuY3Rpb24gaXNBcnJheShhcikge1xuICByZXR1cm4gQXJyYXkuaXNBcnJheShhcikgfHxcbiAgICAgICAgICh0eXBlb2YgYXIgPT09ICdvYmplY3QnICYmIG9iamVjdFRvU3RyaW5nKGFyKSA9PT0gJ1tvYmplY3QgQXJyYXldJyk7XG59XG5cbmZ1bmN0aW9uIGlzUmVnRXhwKHJlKSB7XG4gIHJldHVybiB0eXBlb2YgcmUgPT09ICdvYmplY3QnICYmIG9iamVjdFRvU3RyaW5nKHJlKSA9PT0gJ1tvYmplY3QgUmVnRXhwXSc7XG59XG5cbmZ1bmN0aW9uIGlzRGF0ZShkKSB7XG4gIHJldHVybiB0eXBlb2YgZCA9PT0gJ29iamVjdCcgJiYgb2JqZWN0VG9TdHJpbmcoZCkgPT09ICdbb2JqZWN0IERhdGVdJztcbn1cblxuZnVuY3Rpb24gaXNFcnJvcihlKSB7XG4gIHJldHVybiB0eXBlb2YgZSA9PT0gJ29iamVjdCcgJiYgb2JqZWN0VG9TdHJpbmcoZSkgPT09ICdbb2JqZWN0IEVycm9yXSc7XG59XG5cbmZ1bmN0aW9uIG9iamVjdFRvU3RyaW5nKG8pIHtcbiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvKTtcbn1cbiIsIi8qIVxuICogQ2hhaSAtIGZsYWcgdXRpbGl0eVxuICogQ29weXJpZ2h0KGMpIDIwMTItMjAxNCBKYWtlIEx1ZXIgPGpha2VAYWxvZ2ljYWxwYXJhZG94LmNvbT5cbiAqIE1JVCBMaWNlbnNlZFxuICovXG5cbi8qIVxuICogTW9kdWxlIGRlcGVuZGFuY2llc1xuICovXG5cbnZhciBpbnNwZWN0ID0gcmVxdWlyZSgnLi9pbnNwZWN0Jyk7XG52YXIgY29uZmlnID0gcmVxdWlyZSgnLi4vY29uZmlnJyk7XG5cbi8qKlxuICogIyMjIC5vYmpEaXNwbGF5IChvYmplY3QpXG4gKlxuICogRGV0ZXJtaW5lcyBpZiBhbiBvYmplY3Qgb3IgYW4gYXJyYXkgbWF0Y2hlc1xuICogY3JpdGVyaWEgdG8gYmUgaW5zcGVjdGVkIGluLWxpbmUgZm9yIGVycm9yXG4gKiBtZXNzYWdlcyBvciBzaG91bGQgYmUgdHJ1bmNhdGVkLlxuICpcbiAqIEBwYXJhbSB7TWl4ZWR9IGphdmFzY3JpcHQgb2JqZWN0IHRvIGluc3BlY3RcbiAqIEBuYW1lIG9iakRpc3BsYXlcbiAqIEBuYW1lc3BhY2UgVXRpbHNcbiAqIEBhcGkgcHVibGljXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob2JqKSB7XG4gIHZhciBzdHIgPSBpbnNwZWN0KG9iailcbiAgICAsIHR5cGUgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwob2JqKTtcblxuICBpZiAoY29uZmlnLnRydW5jYXRlVGhyZXNob2xkICYmIHN0ci5sZW5ndGggPj0gY29uZmlnLnRydW5jYXRlVGhyZXNob2xkKSB7XG4gICAgaWYgKHR5cGUgPT09ICdbb2JqZWN0IEZ1bmN0aW9uXScpIHtcbiAgICAgIHJldHVybiAhb2JqLm5hbWUgfHwgb2JqLm5hbWUgPT09ICcnXG4gICAgICAgID8gJ1tGdW5jdGlvbl0nXG4gICAgICAgIDogJ1tGdW5jdGlvbjogJyArIG9iai5uYW1lICsgJ10nO1xuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ1tvYmplY3QgQXJyYXldJykge1xuICAgICAgcmV0dXJuICdbIEFycmF5KCcgKyBvYmoubGVuZ3RoICsgJykgXSc7XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnW29iamVjdCBPYmplY3RdJykge1xuICAgICAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvYmopXG4gICAgICAgICwga3N0ciA9IGtleXMubGVuZ3RoID4gMlxuICAgICAgICAgID8ga2V5cy5zcGxpY2UoMCwgMikuam9pbignLCAnKSArICcsIC4uLidcbiAgICAgICAgICA6IGtleXMuam9pbignLCAnKTtcbiAgICAgIHJldHVybiAneyBPYmplY3QgKCcgKyBrc3RyICsgJykgfSc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBzdHI7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHJldHVybiBzdHI7XG4gIH1cbn07XG4iLCIvKiFcbiAqIENoYWkgLSBvdmVyd3JpdGVDaGFpbmFibGVNZXRob2QgdXRpbGl0eVxuICogQ29weXJpZ2h0KGMpIDIwMTItMjAxNCBKYWtlIEx1ZXIgPGpha2VAYWxvZ2ljYWxwYXJhZG94LmNvbT5cbiAqIE1JVCBMaWNlbnNlZFxuICovXG5cbi8qKlxuICogIyMjIG92ZXJ3cml0ZUNoYWluYWJsZU1ldGhvZCAoY3R4LCBuYW1lLCBtZXRob2QsIGNoYWluaW5nQmVoYXZpb3IpXG4gKlxuICogT3ZlcndpdGVzIGFuIGFscmVhZHkgZXhpc3RpbmcgY2hhaW5hYmxlIG1ldGhvZFxuICogYW5kIHByb3ZpZGVzIGFjY2VzcyB0byB0aGUgcHJldmlvdXMgZnVuY3Rpb24gb3JcbiAqIHByb3BlcnR5LiAgTXVzdCByZXR1cm4gZnVuY3Rpb25zIHRvIGJlIHVzZWQgZm9yXG4gKiBuYW1lLlxuICpcbiAqICAgICB1dGlscy5vdmVyd3JpdGVDaGFpbmFibGVNZXRob2QoY2hhaS5Bc3NlcnRpb24ucHJvdG90eXBlLCAnbGVuZ3RoJyxcbiAqICAgICAgIGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAqICAgICAgIH1cbiAqICAgICAsIGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAqICAgICAgIH1cbiAqICAgICApO1xuICpcbiAqIENhbiBhbHNvIGJlIGFjY2Vzc2VkIGRpcmVjdGx5IGZyb20gYGNoYWkuQXNzZXJ0aW9uYC5cbiAqXG4gKiAgICAgY2hhaS5Bc3NlcnRpb24ub3ZlcndyaXRlQ2hhaW5hYmxlTWV0aG9kKCdmb28nLCBmbiwgZm4pO1xuICpcbiAqIFRoZW4gY2FuIGJlIHVzZWQgYXMgYW55IG90aGVyIGFzc2VydGlvbi5cbiAqXG4gKiAgICAgZXhwZWN0KG15Rm9vKS50by5oYXZlLmxlbmd0aCgzKTtcbiAqICAgICBleHBlY3QobXlGb28pLnRvLmhhdmUubGVuZ3RoLmFib3ZlKDMpO1xuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBjdHggb2JqZWN0IHdob3NlIG1ldGhvZCAvIHByb3BlcnR5IGlzIHRvIGJlIG92ZXJ3cml0dGVuXG4gKiBAcGFyYW0ge1N0cmluZ30gbmFtZSBvZiBtZXRob2QgLyBwcm9wZXJ0eSB0byBvdmVyd3JpdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IG1ldGhvZCBmdW5jdGlvbiB0aGF0IHJldHVybnMgYSBmdW5jdGlvbiB0byBiZSB1c2VkIGZvciBuYW1lXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjaGFpbmluZ0JlaGF2aW9yIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhIGZ1bmN0aW9uIHRvIGJlIHVzZWQgZm9yIHByb3BlcnR5XG4gKiBAbmFtZXNwYWNlIFV0aWxzXG4gKiBAbmFtZSBvdmVyd3JpdGVDaGFpbmFibGVNZXRob2RcbiAqIEBhcGkgcHVibGljXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoY3R4LCBuYW1lLCBtZXRob2QsIGNoYWluaW5nQmVoYXZpb3IpIHtcbiAgdmFyIGNoYWluYWJsZUJlaGF2aW9yID0gY3R4Ll9fbWV0aG9kc1tuYW1lXTtcblxuICB2YXIgX2NoYWluaW5nQmVoYXZpb3IgPSBjaGFpbmFibGVCZWhhdmlvci5jaGFpbmluZ0JlaGF2aW9yO1xuICBjaGFpbmFibGVCZWhhdmlvci5jaGFpbmluZ0JlaGF2aW9yID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciByZXN1bHQgPSBjaGFpbmluZ0JlaGF2aW9yKF9jaGFpbmluZ0JlaGF2aW9yKS5jYWxsKHRoaXMpO1xuICAgIHJldHVybiByZXN1bHQgPT09IHVuZGVmaW5lZCA/IHRoaXMgOiByZXN1bHQ7XG4gIH07XG5cbiAgdmFyIF9tZXRob2QgPSBjaGFpbmFibGVCZWhhdmlvci5tZXRob2Q7XG4gIGNoYWluYWJsZUJlaGF2aW9yLm1ldGhvZCA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcmVzdWx0ID0gbWV0aG9kKF9tZXRob2QpLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgcmV0dXJuIHJlc3VsdCA9PT0gdW5kZWZpbmVkID8gdGhpcyA6IHJlc3VsdDtcbiAgfTtcbn07XG4iLCIvKiFcbiAqIENoYWkgLSBvdmVyd3JpdGVNZXRob2QgdXRpbGl0eVxuICogQ29weXJpZ2h0KGMpIDIwMTItMjAxNCBKYWtlIEx1ZXIgPGpha2VAYWxvZ2ljYWxwYXJhZG94LmNvbT5cbiAqIE1JVCBMaWNlbnNlZFxuICovXG5cbi8qKlxuICogIyMjIG92ZXJ3cml0ZU1ldGhvZCAoY3R4LCBuYW1lLCBmbilcbiAqXG4gKiBPdmVyd2l0ZXMgYW4gYWxyZWFkeSBleGlzdGluZyBtZXRob2QgYW5kIHByb3ZpZGVzXG4gKiBhY2Nlc3MgdG8gcHJldmlvdXMgZnVuY3Rpb24uIE11c3QgcmV0dXJuIGZ1bmN0aW9uXG4gKiB0byBiZSB1c2VkIGZvciBuYW1lLlxuICpcbiAqICAgICB1dGlscy5vdmVyd3JpdGVNZXRob2QoY2hhaS5Bc3NlcnRpb24ucHJvdG90eXBlLCAnZXF1YWwnLCBmdW5jdGlvbiAoX3N1cGVyKSB7XG4gKiAgICAgICByZXR1cm4gZnVuY3Rpb24gKHN0cikge1xuICogICAgICAgICB2YXIgb2JqID0gdXRpbHMuZmxhZyh0aGlzLCAnb2JqZWN0Jyk7XG4gKiAgICAgICAgIGlmIChvYmogaW5zdGFuY2VvZiBGb28pIHtcbiAqICAgICAgICAgICBuZXcgY2hhaS5Bc3NlcnRpb24ob2JqLnZhbHVlKS50by5lcXVhbChzdHIpO1xuICogICAgICAgICB9IGVsc2Uge1xuICogICAgICAgICAgIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICogICAgICAgICB9XG4gKiAgICAgICB9XG4gKiAgICAgfSk7XG4gKlxuICogQ2FuIGFsc28gYmUgYWNjZXNzZWQgZGlyZWN0bHkgZnJvbSBgY2hhaS5Bc3NlcnRpb25gLlxuICpcbiAqICAgICBjaGFpLkFzc2VydGlvbi5vdmVyd3JpdGVNZXRob2QoJ2ZvbycsIGZuKTtcbiAqXG4gKiBUaGVuIGNhbiBiZSB1c2VkIGFzIGFueSBvdGhlciBhc3NlcnRpb24uXG4gKlxuICogICAgIGV4cGVjdChteUZvbykudG8uZXF1YWwoJ2JhcicpO1xuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBjdHggb2JqZWN0IHdob3NlIG1ldGhvZCBpcyB0byBiZSBvdmVyd3JpdHRlblxuICogQHBhcmFtIHtTdHJpbmd9IG5hbWUgb2YgbWV0aG9kIHRvIG92ZXJ3cml0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gbWV0aG9kIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhIGZ1bmN0aW9uIHRvIGJlIHVzZWQgZm9yIG5hbWVcbiAqIEBuYW1lc3BhY2UgVXRpbHNcbiAqIEBuYW1lIG92ZXJ3cml0ZU1ldGhvZFxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChjdHgsIG5hbWUsIG1ldGhvZCkge1xuICB2YXIgX21ldGhvZCA9IGN0eFtuYW1lXVxuICAgICwgX3N1cGVyID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfTtcblxuICBpZiAoX21ldGhvZCAmJiAnZnVuY3Rpb24nID09PSB0eXBlb2YgX21ldGhvZClcbiAgICBfc3VwZXIgPSBfbWV0aG9kO1xuXG4gIGN0eFtuYW1lXSA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcmVzdWx0ID0gbWV0aG9kKF9zdXBlcikuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICByZXR1cm4gcmVzdWx0ID09PSB1bmRlZmluZWQgPyB0aGlzIDogcmVzdWx0O1xuICB9XG59O1xuIiwiLyohXG4gKiBDaGFpIC0gb3ZlcndyaXRlUHJvcGVydHkgdXRpbGl0eVxuICogQ29weXJpZ2h0KGMpIDIwMTItMjAxNCBKYWtlIEx1ZXIgPGpha2VAYWxvZ2ljYWxwYXJhZG94LmNvbT5cbiAqIE1JVCBMaWNlbnNlZFxuICovXG5cbi8qKlxuICogIyMjIG92ZXJ3cml0ZVByb3BlcnR5IChjdHgsIG5hbWUsIGZuKVxuICpcbiAqIE92ZXJ3aXRlcyBhbiBhbHJlYWR5IGV4aXN0aW5nIHByb3BlcnR5IGdldHRlciBhbmQgcHJvdmlkZXNcbiAqIGFjY2VzcyB0byBwcmV2aW91cyB2YWx1ZS4gTXVzdCByZXR1cm4gZnVuY3Rpb24gdG8gdXNlIGFzIGdldHRlci5cbiAqXG4gKiAgICAgdXRpbHMub3ZlcndyaXRlUHJvcGVydHkoY2hhaS5Bc3NlcnRpb24ucHJvdG90eXBlLCAnb2snLCBmdW5jdGlvbiAoX3N1cGVyKSB7XG4gKiAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICogICAgICAgICB2YXIgb2JqID0gdXRpbHMuZmxhZyh0aGlzLCAnb2JqZWN0Jyk7XG4gKiAgICAgICAgIGlmIChvYmogaW5zdGFuY2VvZiBGb28pIHtcbiAqICAgICAgICAgICBuZXcgY2hhaS5Bc3NlcnRpb24ob2JqLm5hbWUpLnRvLmVxdWFsKCdiYXInKTtcbiAqICAgICAgICAgfSBlbHNlIHtcbiAqICAgICAgICAgICBfc3VwZXIuY2FsbCh0aGlzKTtcbiAqICAgICAgICAgfVxuICogICAgICAgfVxuICogICAgIH0pO1xuICpcbiAqXG4gKiBDYW4gYWxzbyBiZSBhY2Nlc3NlZCBkaXJlY3RseSBmcm9tIGBjaGFpLkFzc2VydGlvbmAuXG4gKlxuICogICAgIGNoYWkuQXNzZXJ0aW9uLm92ZXJ3cml0ZVByb3BlcnR5KCdmb28nLCBmbik7XG4gKlxuICogVGhlbiBjYW4gYmUgdXNlZCBhcyBhbnkgb3RoZXIgYXNzZXJ0aW9uLlxuICpcbiAqICAgICBleHBlY3QobXlGb28pLnRvLmJlLm9rO1xuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBjdHggb2JqZWN0IHdob3NlIHByb3BlcnR5IGlzIHRvIGJlIG92ZXJ3cml0dGVuXG4gKiBAcGFyYW0ge1N0cmluZ30gbmFtZSBvZiBwcm9wZXJ0eSB0byBvdmVyd3JpdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGdldHRlciBmdW5jdGlvbiB0aGF0IHJldHVybnMgYSBnZXR0ZXIgZnVuY3Rpb24gdG8gYmUgdXNlZCBmb3IgbmFtZVxuICogQG5hbWVzcGFjZSBVdGlsc1xuICogQG5hbWUgb3ZlcndyaXRlUHJvcGVydHlcbiAqIEBhcGkgcHVibGljXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoY3R4LCBuYW1lLCBnZXR0ZXIpIHtcbiAgdmFyIF9nZXQgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGN0eCwgbmFtZSlcbiAgICAsIF9zdXBlciA9IGZ1bmN0aW9uICgpIHt9O1xuXG4gIGlmIChfZ2V0ICYmICdmdW5jdGlvbicgPT09IHR5cGVvZiBfZ2V0LmdldClcbiAgICBfc3VwZXIgPSBfZ2V0LmdldFxuXG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjdHgsIG5hbWUsXG4gICAgeyBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IGdldHRlcihfc3VwZXIpLmNhbGwodGhpcyk7XG4gICAgICAgIHJldHVybiByZXN1bHQgPT09IHVuZGVmaW5lZCA/IHRoaXMgOiByZXN1bHQ7XG4gICAgICB9XG4gICAgLCBjb25maWd1cmFibGU6IHRydWVcbiAgfSk7XG59O1xuIiwiLyohXG4gKiBDaGFpIC0gdGVzdCB1dGlsaXR5XG4gKiBDb3B5cmlnaHQoYykgMjAxMi0yMDE0IEpha2UgTHVlciA8amFrZUBhbG9naWNhbHBhcmFkb3guY29tPlxuICogTUlUIExpY2Vuc2VkXG4gKi9cblxuLyohXG4gKiBNb2R1bGUgZGVwZW5kYW5jaWVzXG4gKi9cblxudmFyIGZsYWcgPSByZXF1aXJlKCcuL2ZsYWcnKTtcblxuLyoqXG4gKiAjIHRlc3Qob2JqZWN0LCBleHByZXNzaW9uKVxuICpcbiAqIFRlc3QgYW5kIG9iamVjdCBmb3IgZXhwcmVzc2lvbi5cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IChjb25zdHJ1Y3RlZCBBc3NlcnRpb24pXG4gKiBAcGFyYW0ge0FyZ3VtZW50c30gY2hhaS5Bc3NlcnRpb24ucHJvdG90eXBlLmFzc2VydCBhcmd1bWVudHNcbiAqIEBuYW1lc3BhY2UgVXRpbHNcbiAqIEBuYW1lIHRlc3RcbiAqL1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChvYmosIGFyZ3MpIHtcbiAgdmFyIG5lZ2F0ZSA9IGZsYWcob2JqLCAnbmVnYXRlJylcbiAgICAsIGV4cHIgPSBhcmdzWzBdO1xuICByZXR1cm4gbmVnYXRlID8gIWV4cHIgOiBleHByO1xufTtcbiIsIi8qIVxuICogQ2hhaSAtIHRyYW5zZmVyRmxhZ3MgdXRpbGl0eVxuICogQ29weXJpZ2h0KGMpIDIwMTItMjAxNCBKYWtlIEx1ZXIgPGpha2VAYWxvZ2ljYWxwYXJhZG94LmNvbT5cbiAqIE1JVCBMaWNlbnNlZFxuICovXG5cbi8qKlxuICogIyMjIHRyYW5zZmVyRmxhZ3MoYXNzZXJ0aW9uLCBvYmplY3QsIGluY2x1ZGVBbGwgPSB0cnVlKVxuICpcbiAqIFRyYW5zZmVyIGFsbCB0aGUgZmxhZ3MgZm9yIGBhc3NlcnRpb25gIHRvIGBvYmplY3RgLiBJZlxuICogYGluY2x1ZGVBbGxgIGlzIHNldCB0byBgZmFsc2VgLCB0aGVuIHRoZSBiYXNlIENoYWlcbiAqIGFzc2VydGlvbiBmbGFncyAobmFtZWx5IGBvYmplY3RgLCBgc3NmaWAsIGFuZCBgbWVzc2FnZWApXG4gKiB3aWxsIG5vdCBiZSB0cmFuc2ZlcnJlZC5cbiAqXG4gKlxuICogICAgIHZhciBuZXdBc3NlcnRpb24gPSBuZXcgQXNzZXJ0aW9uKCk7XG4gKiAgICAgdXRpbHMudHJhbnNmZXJGbGFncyhhc3NlcnRpb24sIG5ld0Fzc2VydGlvbik7XG4gKlxuICogICAgIHZhciBhbm90aGVyQXNzZXJpdG9uID0gbmV3IEFzc2VydGlvbihteU9iaik7XG4gKiAgICAgdXRpbHMudHJhbnNmZXJGbGFncyhhc3NlcnRpb24sIGFub3RoZXJBc3NlcnRpb24sIGZhbHNlKTtcbiAqXG4gKiBAcGFyYW0ge0Fzc2VydGlvbn0gYXNzZXJ0aW9uIHRoZSBhc3NlcnRpb24gdG8gdHJhbnNmZXIgdGhlIGZsYWdzIGZyb21cbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgdGhlIG9iamVjdCB0byB0cmFuc2ZlciB0aGUgZmxhZ3MgdG87IHVzdWFsbHkgYSBuZXcgYXNzZXJ0aW9uXG4gKiBAcGFyYW0ge0Jvb2xlYW59IGluY2x1ZGVBbGxcbiAqIEBuYW1lc3BhY2UgVXRpbHNcbiAqIEBuYW1lIHRyYW5zZmVyRmxhZ3NcbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFzc2VydGlvbiwgb2JqZWN0LCBpbmNsdWRlQWxsKSB7XG4gIHZhciBmbGFncyA9IGFzc2VydGlvbi5fX2ZsYWdzIHx8IChhc3NlcnRpb24uX19mbGFncyA9IE9iamVjdC5jcmVhdGUobnVsbCkpO1xuXG4gIGlmICghb2JqZWN0Ll9fZmxhZ3MpIHtcbiAgICBvYmplY3QuX19mbGFncyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIH1cblxuICBpbmNsdWRlQWxsID0gYXJndW1lbnRzLmxlbmd0aCA9PT0gMyA/IGluY2x1ZGVBbGwgOiB0cnVlO1xuXG4gIGZvciAodmFyIGZsYWcgaW4gZmxhZ3MpIHtcbiAgICBpZiAoaW5jbHVkZUFsbCB8fFxuICAgICAgICAoZmxhZyAhPT0gJ29iamVjdCcgJiYgZmxhZyAhPT0gJ3NzZmknICYmIGZsYWcgIT0gJ21lc3NhZ2UnKSkge1xuICAgICAgb2JqZWN0Ll9fZmxhZ3NbZmxhZ10gPSBmbGFnc1tmbGFnXTtcbiAgICB9XG4gIH1cbn07XG4iLCJ2YXIgVHJhbnNmb3JtID0gcmVxdWlyZSgnc3RyZWFtJykuVHJhbnNmb3JtXG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpXG52YXIgU3RyaW5nRGVjb2RlciA9IHJlcXVpcmUoJ3N0cmluZ19kZWNvZGVyJykuU3RyaW5nRGVjb2RlclxubW9kdWxlLmV4cG9ydHMgPSBDaXBoZXJCYXNlXG5pbmhlcml0cyhDaXBoZXJCYXNlLCBUcmFuc2Zvcm0pXG5mdW5jdGlvbiBDaXBoZXJCYXNlIChoYXNoTW9kZSkge1xuICBUcmFuc2Zvcm0uY2FsbCh0aGlzKVxuICB0aGlzLmhhc2hNb2RlID0gdHlwZW9mIGhhc2hNb2RlID09PSAnc3RyaW5nJ1xuICBpZiAodGhpcy5oYXNoTW9kZSkge1xuICAgIHRoaXNbaGFzaE1vZGVdID0gdGhpcy5fZmluYWxPckRpZ2VzdFxuICB9IGVsc2Uge1xuICAgIHRoaXMuZmluYWwgPSB0aGlzLl9maW5hbE9yRGlnZXN0XG4gIH1cbiAgdGhpcy5fZGVjb2RlciA9IG51bGxcbiAgdGhpcy5fZW5jb2RpbmcgPSBudWxsXG59XG5DaXBoZXJCYXNlLnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiAoZGF0YSwgaW5wdXRFbmMsIG91dHB1dEVuYykge1xuICBpZiAodHlwZW9mIGRhdGEgPT09ICdzdHJpbmcnKSB7XG4gICAgZGF0YSA9IG5ldyBCdWZmZXIoZGF0YSwgaW5wdXRFbmMpXG4gIH1cbiAgdmFyIG91dERhdGEgPSB0aGlzLl91cGRhdGUoZGF0YSlcbiAgaWYgKHRoaXMuaGFzaE1vZGUpIHtcbiAgICByZXR1cm4gdGhpc1xuICB9XG4gIGlmIChvdXRwdXRFbmMpIHtcbiAgICBvdXREYXRhID0gdGhpcy5fdG9TdHJpbmcob3V0RGF0YSwgb3V0cHV0RW5jKVxuICB9XG4gIHJldHVybiBvdXREYXRhXG59XG5cbkNpcGhlckJhc2UucHJvdG90eXBlLnNldEF1dG9QYWRkaW5nID0gZnVuY3Rpb24gKCkge31cblxuQ2lwaGVyQmFzZS5wcm90b3R5cGUuZ2V0QXV0aFRhZyA9IGZ1bmN0aW9uICgpIHtcbiAgdGhyb3cgbmV3IEVycm9yKCd0cnlpbmcgdG8gZ2V0IGF1dGggdGFnIGluIHVuc3VwcG9ydGVkIHN0YXRlJylcbn1cblxuQ2lwaGVyQmFzZS5wcm90b3R5cGUuc2V0QXV0aFRhZyA9IGZ1bmN0aW9uICgpIHtcbiAgdGhyb3cgbmV3IEVycm9yKCd0cnlpbmcgdG8gc2V0IGF1dGggdGFnIGluIHVuc3VwcG9ydGVkIHN0YXRlJylcbn1cblxuQ2lwaGVyQmFzZS5wcm90b3R5cGUuc2V0QUFEID0gZnVuY3Rpb24gKCkge1xuICB0aHJvdyBuZXcgRXJyb3IoJ3RyeWluZyB0byBzZXQgYWFkIGluIHVuc3VwcG9ydGVkIHN0YXRlJylcbn1cblxuQ2lwaGVyQmFzZS5wcm90b3R5cGUuX3RyYW5zZm9ybSA9IGZ1bmN0aW9uIChkYXRhLCBfLCBuZXh0KSB7XG4gIHZhciBlcnJcbiAgdHJ5IHtcbiAgICBpZiAodGhpcy5oYXNoTW9kZSkge1xuICAgICAgdGhpcy5fdXBkYXRlKGRhdGEpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucHVzaCh0aGlzLl91cGRhdGUoZGF0YSkpXG4gICAgfVxuICB9IGNhdGNoIChlKSB7XG4gICAgZXJyID0gZVxuICB9IGZpbmFsbHkge1xuICAgIG5leHQoZXJyKVxuICB9XG59XG5DaXBoZXJCYXNlLnByb3RvdHlwZS5fZmx1c2ggPSBmdW5jdGlvbiAoZG9uZSkge1xuICB2YXIgZXJyXG4gIHRyeSB7XG4gICAgdGhpcy5wdXNoKHRoaXMuX2ZpbmFsKCkpXG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBlcnIgPSBlXG4gIH0gZmluYWxseSB7XG4gICAgZG9uZShlcnIpXG4gIH1cbn1cbkNpcGhlckJhc2UucHJvdG90eXBlLl9maW5hbE9yRGlnZXN0ID0gZnVuY3Rpb24gKG91dHB1dEVuYykge1xuICB2YXIgb3V0RGF0YSA9IHRoaXMuX2ZpbmFsKCkgfHwgbmV3IEJ1ZmZlcignJylcbiAgaWYgKG91dHB1dEVuYykge1xuICAgIG91dERhdGEgPSB0aGlzLl90b1N0cmluZyhvdXREYXRhLCBvdXRwdXRFbmMsIHRydWUpXG4gIH1cbiAgcmV0dXJuIG91dERhdGFcbn1cblxuQ2lwaGVyQmFzZS5wcm90b3R5cGUuX3RvU3RyaW5nID0gZnVuY3Rpb24gKHZhbHVlLCBlbmMsIGZpbikge1xuICBpZiAoIXRoaXMuX2RlY29kZXIpIHtcbiAgICB0aGlzLl9kZWNvZGVyID0gbmV3IFN0cmluZ0RlY29kZXIoZW5jKVxuICAgIHRoaXMuX2VuY29kaW5nID0gZW5jXG4gIH1cbiAgaWYgKHRoaXMuX2VuY29kaW5nICE9PSBlbmMpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2NhblxcJ3Qgc3dpdGNoIGVuY29kaW5ncycpXG4gIH1cbiAgdmFyIG91dCA9IHRoaXMuX2RlY29kZXIud3JpdGUodmFsdWUpXG4gIGlmIChmaW4pIHtcbiAgICBvdXQgKz0gdGhpcy5fZGVjb2Rlci5lbmQoKVxuICB9XG4gIHJldHVybiBvdXRcbn1cbiIsInZhciBXcml0YWJsZSA9IHJlcXVpcmUoJ3JlYWRhYmxlLXN0cmVhbScpLldyaXRhYmxlXG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpXG5cbmlmICh0eXBlb2YgVWludDhBcnJheSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgdmFyIFU4ID0gcmVxdWlyZSgndHlwZWRhcnJheScpLlVpbnQ4QXJyYXlcbn0gZWxzZSB7XG4gIHZhciBVOCA9IFVpbnQ4QXJyYXlcbn1cblxuZnVuY3Rpb24gQ29uY2F0U3RyZWFtKG9wdHMsIGNiKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBDb25jYXRTdHJlYW0pKSByZXR1cm4gbmV3IENvbmNhdFN0cmVhbShvcHRzLCBjYilcblxuICBpZiAodHlwZW9mIG9wdHMgPT09ICdmdW5jdGlvbicpIHtcbiAgICBjYiA9IG9wdHNcbiAgICBvcHRzID0ge31cbiAgfVxuICBpZiAoIW9wdHMpIG9wdHMgPSB7fVxuXG4gIHZhciBlbmNvZGluZyA9IG9wdHMuZW5jb2RpbmdcbiAgdmFyIHNob3VsZEluZmVyRW5jb2RpbmcgPSBmYWxzZVxuXG4gIGlmICghZW5jb2RpbmcpIHtcbiAgICBzaG91bGRJbmZlckVuY29kaW5nID0gdHJ1ZVxuICB9IGVsc2Uge1xuICAgIGVuY29kaW5nID0gIFN0cmluZyhlbmNvZGluZykudG9Mb3dlckNhc2UoKVxuICAgIGlmIChlbmNvZGluZyA9PT0gJ3U4JyB8fCBlbmNvZGluZyA9PT0gJ3VpbnQ4Jykge1xuICAgICAgZW5jb2RpbmcgPSAndWludDhhcnJheSdcbiAgICB9XG4gIH1cblxuICBXcml0YWJsZS5jYWxsKHRoaXMsIHsgb2JqZWN0TW9kZTogdHJ1ZSB9KVxuXG4gIHRoaXMuZW5jb2RpbmcgPSBlbmNvZGluZ1xuICB0aGlzLnNob3VsZEluZmVyRW5jb2RpbmcgPSBzaG91bGRJbmZlckVuY29kaW5nXG5cbiAgaWYgKGNiKSB0aGlzLm9uKCdmaW5pc2gnLCBmdW5jdGlvbiAoKSB7IGNiKHRoaXMuZ2V0Qm9keSgpKSB9KVxuICB0aGlzLmJvZHkgPSBbXVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IENvbmNhdFN0cmVhbVxuaW5oZXJpdHMoQ29uY2F0U3RyZWFtLCBXcml0YWJsZSlcblxuQ29uY2F0U3RyZWFtLnByb3RvdHlwZS5fd3JpdGUgPSBmdW5jdGlvbihjaHVuaywgZW5jLCBuZXh0KSB7XG4gIHRoaXMuYm9keS5wdXNoKGNodW5rKVxuICBuZXh0KClcbn1cblxuQ29uY2F0U3RyZWFtLnByb3RvdHlwZS5pbmZlckVuY29kaW5nID0gZnVuY3Rpb24gKGJ1ZmYpIHtcbiAgdmFyIGZpcnN0QnVmZmVyID0gYnVmZiA9PT0gdW5kZWZpbmVkID8gdGhpcy5ib2R5WzBdIDogYnVmZjtcbiAgaWYgKEJ1ZmZlci5pc0J1ZmZlcihmaXJzdEJ1ZmZlcikpIHJldHVybiAnYnVmZmVyJ1xuICBpZiAodHlwZW9mIFVpbnQ4QXJyYXkgIT09ICd1bmRlZmluZWQnICYmIGZpcnN0QnVmZmVyIGluc3RhbmNlb2YgVWludDhBcnJheSkgcmV0dXJuICd1aW50OGFycmF5J1xuICBpZiAoQXJyYXkuaXNBcnJheShmaXJzdEJ1ZmZlcikpIHJldHVybiAnYXJyYXknXG4gIGlmICh0eXBlb2YgZmlyc3RCdWZmZXIgPT09ICdzdHJpbmcnKSByZXR1cm4gJ3N0cmluZydcbiAgaWYgKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChmaXJzdEJ1ZmZlcikgPT09IFwiW29iamVjdCBPYmplY3RdXCIpIHJldHVybiAnb2JqZWN0J1xuICByZXR1cm4gJ2J1ZmZlcidcbn1cblxuQ29uY2F0U3RyZWFtLnByb3RvdHlwZS5nZXRCb2R5ID0gZnVuY3Rpb24gKCkge1xuICBpZiAoIXRoaXMuZW5jb2RpbmcgJiYgdGhpcy5ib2R5Lmxlbmd0aCA9PT0gMCkgcmV0dXJuIFtdXG4gIGlmICh0aGlzLnNob3VsZEluZmVyRW5jb2RpbmcpIHRoaXMuZW5jb2RpbmcgPSB0aGlzLmluZmVyRW5jb2RpbmcoKVxuICBpZiAodGhpcy5lbmNvZGluZyA9PT0gJ2FycmF5JykgcmV0dXJuIGFycmF5Q29uY2F0KHRoaXMuYm9keSlcbiAgaWYgKHRoaXMuZW5jb2RpbmcgPT09ICdzdHJpbmcnKSByZXR1cm4gc3RyaW5nQ29uY2F0KHRoaXMuYm9keSlcbiAgaWYgKHRoaXMuZW5jb2RpbmcgPT09ICdidWZmZXInKSByZXR1cm4gYnVmZmVyQ29uY2F0KHRoaXMuYm9keSlcbiAgaWYgKHRoaXMuZW5jb2RpbmcgPT09ICd1aW50OGFycmF5JykgcmV0dXJuIHU4Q29uY2F0KHRoaXMuYm9keSlcbiAgcmV0dXJuIHRoaXMuYm9keVxufVxuXG52YXIgaXNBcnJheSA9IEFycmF5LmlzQXJyYXkgfHwgZnVuY3Rpb24gKGFycikge1xuICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGFycikgPT0gJ1tvYmplY3QgQXJyYXldJ1xufVxuXG5mdW5jdGlvbiBpc0FycmF5aXNoIChhcnIpIHtcbiAgcmV0dXJuIC9BcnJheVxcXSQvLnRlc3QoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGFycikpXG59XG5cbmZ1bmN0aW9uIGlzQnVmZmVyaXNoIChwKSB7XG4gIHJldHVybiB0eXBlb2YgcCA9PT0gJ3N0cmluZycgfHwgaXNBcnJheWlzaChwKSB8fCAocCAmJiB0eXBlb2YgcC5zdWJhcnJheSA9PT0gJ2Z1bmN0aW9uJylcbn1cblxuZnVuY3Rpb24gc3RyaW5nQ29uY2F0IChwYXJ0cykge1xuICB2YXIgc3RyaW5ncyA9IFtdXG4gIHZhciBuZWVkc1RvU3RyaW5nID0gZmFsc2VcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYXJ0cy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBwID0gcGFydHNbaV1cbiAgICBpZiAodHlwZW9mIHAgPT09ICdzdHJpbmcnKSB7XG4gICAgICBzdHJpbmdzLnB1c2gocClcbiAgICB9IGVsc2UgaWYgKEJ1ZmZlci5pc0J1ZmZlcihwKSkge1xuICAgICAgc3RyaW5ncy5wdXNoKHApXG4gICAgfSBlbHNlIGlmIChpc0J1ZmZlcmlzaChwKSkge1xuICAgICAgc3RyaW5ncy5wdXNoKG5ldyBCdWZmZXIocCkpXG4gICAgfSBlbHNlIHtcbiAgICAgIHN0cmluZ3MucHVzaChuZXcgQnVmZmVyKFN0cmluZyhwKSkpXG4gICAgfVxuICB9XG4gIGlmIChCdWZmZXIuaXNCdWZmZXIocGFydHNbMF0pKSB7XG4gICAgc3RyaW5ncyA9IEJ1ZmZlci5jb25jYXQoc3RyaW5ncylcbiAgICBzdHJpbmdzID0gc3RyaW5ncy50b1N0cmluZygndXRmOCcpXG4gIH0gZWxzZSB7XG4gICAgc3RyaW5ncyA9IHN0cmluZ3Muam9pbignJylcbiAgfVxuICByZXR1cm4gc3RyaW5nc1xufVxuXG5mdW5jdGlvbiBidWZmZXJDb25jYXQgKHBhcnRzKSB7XG4gIHZhciBidWZzID0gW11cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYXJ0cy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBwID0gcGFydHNbaV1cbiAgICBpZiAoQnVmZmVyLmlzQnVmZmVyKHApKSB7XG4gICAgICBidWZzLnB1c2gocClcbiAgICB9IGVsc2UgaWYgKGlzQnVmZmVyaXNoKHApKSB7XG4gICAgICBidWZzLnB1c2gobmV3IEJ1ZmZlcihwKSlcbiAgICB9IGVsc2Uge1xuICAgICAgYnVmcy5wdXNoKG5ldyBCdWZmZXIoU3RyaW5nKHApKSlcbiAgICB9XG4gIH1cbiAgcmV0dXJuIEJ1ZmZlci5jb25jYXQoYnVmcylcbn1cblxuZnVuY3Rpb24gYXJyYXlDb25jYXQgKHBhcnRzKSB7XG4gIHZhciByZXMgPSBbXVxuICBmb3IgKHZhciBpID0gMDsgaSA8IHBhcnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgcmVzLnB1c2guYXBwbHkocmVzLCBwYXJ0c1tpXSlcbiAgfVxuICByZXR1cm4gcmVzXG59XG5cbmZ1bmN0aW9uIHU4Q29uY2F0IChwYXJ0cykge1xuICB2YXIgbGVuID0gMFxuICBmb3IgKHZhciBpID0gMDsgaSA8IHBhcnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKHR5cGVvZiBwYXJ0c1tpXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHBhcnRzW2ldID0gbmV3IEJ1ZmZlcihwYXJ0c1tpXSlcbiAgICB9XG4gICAgbGVuICs9IHBhcnRzW2ldLmxlbmd0aFxuICB9XG4gIHZhciB1OCA9IG5ldyBVOChsZW4pXG4gIGZvciAodmFyIGkgPSAwLCBvZmZzZXQgPSAwOyBpIDwgcGFydHMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgcGFydCA9IHBhcnRzW2ldXG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCBwYXJ0Lmxlbmd0aDsgaisrKSB7XG4gICAgICB1OFtvZmZzZXQrK10gPSBwYXJ0W2pdXG4gICAgfVxuICB9XG4gIHJldHVybiB1OFxufVxuIiwibW9kdWxlLmV4cG9ydHM9e1xuICBcIk9fUkRPTkxZXCI6IDAsXG4gIFwiT19XUk9OTFlcIjogMSxcbiAgXCJPX1JEV1JcIjogMixcbiAgXCJTX0lGTVRcIjogNjE0NDAsXG4gIFwiU19JRlJFR1wiOiAzMjc2OCxcbiAgXCJTX0lGRElSXCI6IDE2Mzg0LFxuICBcIlNfSUZDSFJcIjogODE5MixcbiAgXCJTX0lGQkxLXCI6IDI0NTc2LFxuICBcIlNfSUZJRk9cIjogNDA5NixcbiAgXCJTX0lGTE5LXCI6IDQwOTYwLFxuICBcIlNfSUZTT0NLXCI6IDQ5MTUyLFxuICBcIk9fQ1JFQVRcIjogNTEyLFxuICBcIk9fRVhDTFwiOiAyMDQ4LFxuICBcIk9fTk9DVFRZXCI6IDEzMTA3MixcbiAgXCJPX1RSVU5DXCI6IDEwMjQsXG4gIFwiT19BUFBFTkRcIjogOCxcbiAgXCJPX0RJUkVDVE9SWVwiOiAxMDQ4NTc2LFxuICBcIk9fTk9GT0xMT1dcIjogMjU2LFxuICBcIk9fU1lOQ1wiOiAxMjgsXG4gIFwiT19TWU1MSU5LXCI6IDIwOTcxNTIsXG4gIFwiT19OT05CTE9DS1wiOiA0LFxuICBcIlNfSVJXWFVcIjogNDQ4LFxuICBcIlNfSVJVU1JcIjogMjU2LFxuICBcIlNfSVdVU1JcIjogMTI4LFxuICBcIlNfSVhVU1JcIjogNjQsXG4gIFwiU19JUldYR1wiOiA1NixcbiAgXCJTX0lSR1JQXCI6IDMyLFxuICBcIlNfSVdHUlBcIjogMTYsXG4gIFwiU19JWEdSUFwiOiA4LFxuICBcIlNfSVJXWE9cIjogNyxcbiAgXCJTX0lST1RIXCI6IDQsXG4gIFwiU19JV09USFwiOiAyLFxuICBcIlNfSVhPVEhcIjogMSxcbiAgXCJFMkJJR1wiOiA3LFxuICBcIkVBQ0NFU1wiOiAxMyxcbiAgXCJFQUREUklOVVNFXCI6IDQ4LFxuICBcIkVBRERSTk9UQVZBSUxcIjogNDksXG4gIFwiRUFGTk9TVVBQT1JUXCI6IDQ3LFxuICBcIkVBR0FJTlwiOiAzNSxcbiAgXCJFQUxSRUFEWVwiOiAzNyxcbiAgXCJFQkFERlwiOiA5LFxuICBcIkVCQURNU0dcIjogOTQsXG4gIFwiRUJVU1lcIjogMTYsXG4gIFwiRUNBTkNFTEVEXCI6IDg5LFxuICBcIkVDSElMRFwiOiAxMCxcbiAgXCJFQ09OTkFCT1JURURcIjogNTMsXG4gIFwiRUNPTk5SRUZVU0VEXCI6IDYxLFxuICBcIkVDT05OUkVTRVRcIjogNTQsXG4gIFwiRURFQURMS1wiOiAxMSxcbiAgXCJFREVTVEFERFJSRVFcIjogMzksXG4gIFwiRURPTVwiOiAzMyxcbiAgXCJFRFFVT1RcIjogNjksXG4gIFwiRUVYSVNUXCI6IDE3LFxuICBcIkVGQVVMVFwiOiAxNCxcbiAgXCJFRkJJR1wiOiAyNyxcbiAgXCJFSE9TVFVOUkVBQ0hcIjogNjUsXG4gIFwiRUlEUk1cIjogOTAsXG4gIFwiRUlMU0VRXCI6IDkyLFxuICBcIkVJTlBST0dSRVNTXCI6IDM2LFxuICBcIkVJTlRSXCI6IDQsXG4gIFwiRUlOVkFMXCI6IDIyLFxuICBcIkVJT1wiOiA1LFxuICBcIkVJU0NPTk5cIjogNTYsXG4gIFwiRUlTRElSXCI6IDIxLFxuICBcIkVMT09QXCI6IDYyLFxuICBcIkVNRklMRVwiOiAyNCxcbiAgXCJFTUxJTktcIjogMzEsXG4gIFwiRU1TR1NJWkVcIjogNDAsXG4gIFwiRU1VTFRJSE9QXCI6IDk1LFxuICBcIkVOQU1FVE9PTE9OR1wiOiA2MyxcbiAgXCJFTkVURE9XTlwiOiA1MCxcbiAgXCJFTkVUUkVTRVRcIjogNTIsXG4gIFwiRU5FVFVOUkVBQ0hcIjogNTEsXG4gIFwiRU5GSUxFXCI6IDIzLFxuICBcIkVOT0JVRlNcIjogNTUsXG4gIFwiRU5PREFUQVwiOiA5NixcbiAgXCJFTk9ERVZcIjogMTksXG4gIFwiRU5PRU5UXCI6IDIsXG4gIFwiRU5PRVhFQ1wiOiA4LFxuICBcIkVOT0xDS1wiOiA3NyxcbiAgXCJFTk9MSU5LXCI6IDk3LFxuICBcIkVOT01FTVwiOiAxMixcbiAgXCJFTk9NU0dcIjogOTEsXG4gIFwiRU5PUFJPVE9PUFRcIjogNDIsXG4gIFwiRU5PU1BDXCI6IDI4LFxuICBcIkVOT1NSXCI6IDk4LFxuICBcIkVOT1NUUlwiOiA5OSxcbiAgXCJFTk9TWVNcIjogNzgsXG4gIFwiRU5PVENPTk5cIjogNTcsXG4gIFwiRU5PVERJUlwiOiAyMCxcbiAgXCJFTk9URU1QVFlcIjogNjYsXG4gIFwiRU5PVFNPQ0tcIjogMzgsXG4gIFwiRU5PVFNVUFwiOiA0NSxcbiAgXCJFTk9UVFlcIjogMjUsXG4gIFwiRU5YSU9cIjogNixcbiAgXCJFT1BOT1RTVVBQXCI6IDEwMixcbiAgXCJFT1ZFUkZMT1dcIjogODQsXG4gIFwiRVBFUk1cIjogMSxcbiAgXCJFUElQRVwiOiAzMixcbiAgXCJFUFJPVE9cIjogMTAwLFxuICBcIkVQUk9UT05PU1VQUE9SVFwiOiA0MyxcbiAgXCJFUFJPVE9UWVBFXCI6IDQxLFxuICBcIkVSQU5HRVwiOiAzNCxcbiAgXCJFUk9GU1wiOiAzMCxcbiAgXCJFU1BJUEVcIjogMjksXG4gIFwiRVNSQ0hcIjogMyxcbiAgXCJFU1RBTEVcIjogNzAsXG4gIFwiRVRJTUVcIjogMTAxLFxuICBcIkVUSU1FRE9VVFwiOiA2MCxcbiAgXCJFVFhUQlNZXCI6IDI2LFxuICBcIkVXT1VMREJMT0NLXCI6IDM1LFxuICBcIkVYREVWXCI6IDE4LFxuICBcIlNJR0hVUFwiOiAxLFxuICBcIlNJR0lOVFwiOiAyLFxuICBcIlNJR1FVSVRcIjogMyxcbiAgXCJTSUdJTExcIjogNCxcbiAgXCJTSUdUUkFQXCI6IDUsXG4gIFwiU0lHQUJSVFwiOiA2LFxuICBcIlNJR0lPVFwiOiA2LFxuICBcIlNJR0JVU1wiOiAxMCxcbiAgXCJTSUdGUEVcIjogOCxcbiAgXCJTSUdLSUxMXCI6IDksXG4gIFwiU0lHVVNSMVwiOiAzMCxcbiAgXCJTSUdTRUdWXCI6IDExLFxuICBcIlNJR1VTUjJcIjogMzEsXG4gIFwiU0lHUElQRVwiOiAxMyxcbiAgXCJTSUdBTFJNXCI6IDE0LFxuICBcIlNJR1RFUk1cIjogMTUsXG4gIFwiU0lHQ0hMRFwiOiAyMCxcbiAgXCJTSUdDT05UXCI6IDE5LFxuICBcIlNJR1NUT1BcIjogMTcsXG4gIFwiU0lHVFNUUFwiOiAxOCxcbiAgXCJTSUdUVElOXCI6IDIxLFxuICBcIlNJR1RUT1VcIjogMjIsXG4gIFwiU0lHVVJHXCI6IDE2LFxuICBcIlNJR1hDUFVcIjogMjQsXG4gIFwiU0lHWEZTWlwiOiAyNSxcbiAgXCJTSUdWVEFMUk1cIjogMjYsXG4gIFwiU0lHUFJPRlwiOiAyNyxcbiAgXCJTSUdXSU5DSFwiOiAyOCxcbiAgXCJTSUdJT1wiOiAyMyxcbiAgXCJTSUdTWVNcIjogMTIsXG4gIFwiU1NMX09QX0FMTFwiOiAyMTQ3NDg2NzE5LFxuICBcIlNTTF9PUF9BTExPV19VTlNBRkVfTEVHQUNZX1JFTkVHT1RJQVRJT05cIjogMjYyMTQ0LFxuICBcIlNTTF9PUF9DSVBIRVJfU0VSVkVSX1BSRUZFUkVOQ0VcIjogNDE5NDMwNCxcbiAgXCJTU0xfT1BfQ0lTQ09fQU5ZQ09OTkVDVFwiOiAzMjc2OCxcbiAgXCJTU0xfT1BfQ09PS0lFX0VYQ0hBTkdFXCI6IDgxOTIsXG4gIFwiU1NMX09QX0NSWVBUT1BST19UTFNFWFRfQlVHXCI6IDIxNDc0ODM2NDgsXG4gIFwiU1NMX09QX0RPTlRfSU5TRVJUX0VNUFRZX0ZSQUdNRU5UU1wiOiAyMDQ4LFxuICBcIlNTTF9PUF9FUEhFTUVSQUxfUlNBXCI6IDAsXG4gIFwiU1NMX09QX0xFR0FDWV9TRVJWRVJfQ09OTkVDVFwiOiA0LFxuICBcIlNTTF9PUF9NSUNST1NPRlRfQklHX1NTTFYzX0JVRkZFUlwiOiAzMixcbiAgXCJTU0xfT1BfTUlDUk9TT0ZUX1NFU1NfSURfQlVHXCI6IDEsXG4gIFwiU1NMX09QX01TSUVfU1NMVjJfUlNBX1BBRERJTkdcIjogMCxcbiAgXCJTU0xfT1BfTkVUU0NBUEVfQ0FfRE5fQlVHXCI6IDUzNjg3MDkxMixcbiAgXCJTU0xfT1BfTkVUU0NBUEVfQ0hBTExFTkdFX0JVR1wiOiAyLFxuICBcIlNTTF9PUF9ORVRTQ0FQRV9ERU1PX0NJUEhFUl9DSEFOR0VfQlVHXCI6IDEwNzM3NDE4MjQsXG4gIFwiU1NMX09QX05FVFNDQVBFX1JFVVNFX0NJUEhFUl9DSEFOR0VfQlVHXCI6IDgsXG4gIFwiU1NMX09QX05PX0NPTVBSRVNTSU9OXCI6IDEzMTA3MixcbiAgXCJTU0xfT1BfTk9fUVVFUllfTVRVXCI6IDQwOTYsXG4gIFwiU1NMX09QX05PX1NFU1NJT05fUkVTVU1QVElPTl9PTl9SRU5FR09USUFUSU9OXCI6IDY1NTM2LFxuICBcIlNTTF9PUF9OT19TU0x2MlwiOiAxNjc3NzIxNixcbiAgXCJTU0xfT1BfTk9fU1NMdjNcIjogMzM1NTQ0MzIsXG4gIFwiU1NMX09QX05PX1RJQ0tFVFwiOiAxNjM4NCxcbiAgXCJTU0xfT1BfTk9fVExTdjFcIjogNjcxMDg4NjQsXG4gIFwiU1NMX09QX05PX1RMU3YxXzFcIjogMjY4NDM1NDU2LFxuICBcIlNTTF9PUF9OT19UTFN2MV8yXCI6IDEzNDIxNzcyOCxcbiAgXCJTU0xfT1BfUEtDUzFfQ0hFQ0tfMVwiOiAwLFxuICBcIlNTTF9PUF9QS0NTMV9DSEVDS18yXCI6IDAsXG4gIFwiU1NMX09QX1NJTkdMRV9ESF9VU0VcIjogMTA0ODU3NixcbiAgXCJTU0xfT1BfU0lOR0xFX0VDREhfVVNFXCI6IDUyNDI4OCxcbiAgXCJTU0xfT1BfU1NMRUFZXzA4MF9DTElFTlRfREhfQlVHXCI6IDEyOCxcbiAgXCJTU0xfT1BfU1NMUkVGMl9SRVVTRV9DRVJUX1RZUEVfQlVHXCI6IDAsXG4gIFwiU1NMX09QX1RMU19CTE9DS19QQURESU5HX0JVR1wiOiA1MTIsXG4gIFwiU1NMX09QX1RMU19ENV9CVUdcIjogMjU2LFxuICBcIlNTTF9PUF9UTFNfUk9MTEJBQ0tfQlVHXCI6IDgzODg2MDgsXG4gIFwiRU5HSU5FX01FVEhPRF9EU0FcIjogMixcbiAgXCJFTkdJTkVfTUVUSE9EX0RIXCI6IDQsXG4gIFwiRU5HSU5FX01FVEhPRF9SQU5EXCI6IDgsXG4gIFwiRU5HSU5FX01FVEhPRF9FQ0RIXCI6IDE2LFxuICBcIkVOR0lORV9NRVRIT0RfRUNEU0FcIjogMzIsXG4gIFwiRU5HSU5FX01FVEhPRF9DSVBIRVJTXCI6IDY0LFxuICBcIkVOR0lORV9NRVRIT0RfRElHRVNUU1wiOiAxMjgsXG4gIFwiRU5HSU5FX01FVEhPRF9TVE9SRVwiOiAyNTYsXG4gIFwiRU5HSU5FX01FVEhPRF9QS0VZX01FVEhTXCI6IDUxMixcbiAgXCJFTkdJTkVfTUVUSE9EX1BLRVlfQVNOMV9NRVRIU1wiOiAxMDI0LFxuICBcIkVOR0lORV9NRVRIT0RfQUxMXCI6IDY1NTM1LFxuICBcIkVOR0lORV9NRVRIT0RfTk9ORVwiOiAwLFxuICBcIkRIX0NIRUNLX1BfTk9UX1NBRkVfUFJJTUVcIjogMixcbiAgXCJESF9DSEVDS19QX05PVF9QUklNRVwiOiAxLFxuICBcIkRIX1VOQUJMRV9UT19DSEVDS19HRU5FUkFUT1JcIjogNCxcbiAgXCJESF9OT1RfU1VJVEFCTEVfR0VORVJBVE9SXCI6IDgsXG4gIFwiTlBOX0VOQUJMRURcIjogMSxcbiAgXCJSU0FfUEtDUzFfUEFERElOR1wiOiAxLFxuICBcIlJTQV9TU0xWMjNfUEFERElOR1wiOiAyLFxuICBcIlJTQV9OT19QQURESU5HXCI6IDMsXG4gIFwiUlNBX1BLQ1MxX09BRVBfUEFERElOR1wiOiA0LFxuICBcIlJTQV9YOTMxX1BBRERJTkdcIjogNSxcbiAgXCJSU0FfUEtDUzFfUFNTX1BBRERJTkdcIjogNixcbiAgXCJQT0lOVF9DT05WRVJTSU9OX0NPTVBSRVNTRURcIjogMixcbiAgXCJQT0lOVF9DT05WRVJTSU9OX1VOQ09NUFJFU1NFRFwiOiA0LFxuICBcIlBPSU5UX0NPTlZFUlNJT05fSFlCUklEXCI6IDYsXG4gIFwiRl9PS1wiOiAwLFxuICBcIlJfT0tcIjogNCxcbiAgXCJXX09LXCI6IDIsXG4gIFwiWF9PS1wiOiAxLFxuICBcIlVWX1VEUF9SRVVTRUFERFJcIjogNFxufVxuIiwicmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9jb3JlLnJlZ2V4cC5lc2NhcGUnKTtcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9fY29yZScpLlJlZ0V4cC5lc2NhcGU7IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihpdCl7XG4gIGlmKHR5cGVvZiBpdCAhPSAnZnVuY3Rpb24nKXRocm93IFR5cGVFcnJvcihpdCArICcgaXMgbm90IGEgZnVuY3Rpb24hJyk7XG4gIHJldHVybiBpdDtcbn07IiwidmFyIGNvZiA9IHJlcXVpcmUoJy4vX2NvZicpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihpdCwgbXNnKXtcbiAgaWYodHlwZW9mIGl0ICE9ICdudW1iZXInICYmIGNvZihpdCkgIT0gJ051bWJlcicpdGhyb3cgVHlwZUVycm9yKG1zZyk7XG4gIHJldHVybiAraXQ7XG59OyIsIi8vIDIyLjEuMy4zMSBBcnJheS5wcm90b3R5cGVbQEB1bnNjb3BhYmxlc11cbnZhciBVTlNDT1BBQkxFUyA9IHJlcXVpcmUoJy4vX3drcycpKCd1bnNjb3BhYmxlcycpXG4gICwgQXJyYXlQcm90byAgPSBBcnJheS5wcm90b3R5cGU7XG5pZihBcnJheVByb3RvW1VOU0NPUEFCTEVTXSA9PSB1bmRlZmluZWQpcmVxdWlyZSgnLi9faGlkZScpKEFycmF5UHJvdG8sIFVOU0NPUEFCTEVTLCB7fSk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGtleSl7XG4gIEFycmF5UHJvdG9bVU5TQ09QQUJMRVNdW2tleV0gPSB0cnVlO1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGl0LCBDb25zdHJ1Y3RvciwgbmFtZSwgZm9yYmlkZGVuRmllbGQpe1xuICBpZighKGl0IGluc3RhbmNlb2YgQ29uc3RydWN0b3IpIHx8IChmb3JiaWRkZW5GaWVsZCAhPT0gdW5kZWZpbmVkICYmIGZvcmJpZGRlbkZpZWxkIGluIGl0KSl7XG4gICAgdGhyb3cgVHlwZUVycm9yKG5hbWUgKyAnOiBpbmNvcnJlY3QgaW52b2NhdGlvbiEnKTtcbiAgfSByZXR1cm4gaXQ7XG59OyIsInZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihpdCl7XG4gIGlmKCFpc09iamVjdChpdCkpdGhyb3cgVHlwZUVycm9yKGl0ICsgJyBpcyBub3QgYW4gb2JqZWN0IScpO1xuICByZXR1cm4gaXQ7XG59OyIsIi8vIDIyLjEuMy4zIEFycmF5LnByb3RvdHlwZS5jb3B5V2l0aGluKHRhcmdldCwgc3RhcnQsIGVuZCA9IHRoaXMubGVuZ3RoKVxuJ3VzZSBzdHJpY3QnO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8tb2JqZWN0JylcbiAgLCB0b0luZGV4ICA9IHJlcXVpcmUoJy4vX3RvLWluZGV4JylcbiAgLCB0b0xlbmd0aCA9IHJlcXVpcmUoJy4vX3RvLWxlbmd0aCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFtdLmNvcHlXaXRoaW4gfHwgZnVuY3Rpb24gY29weVdpdGhpbih0YXJnZXQvKj0gMCovLCBzdGFydC8qPSAwLCBlbmQgPSBAbGVuZ3RoKi8pe1xuICB2YXIgTyAgICAgPSB0b09iamVjdCh0aGlzKVxuICAgICwgbGVuICAgPSB0b0xlbmd0aChPLmxlbmd0aClcbiAgICAsIHRvICAgID0gdG9JbmRleCh0YXJnZXQsIGxlbilcbiAgICAsIGZyb20gID0gdG9JbmRleChzdGFydCwgbGVuKVxuICAgICwgZW5kICAgPSBhcmd1bWVudHMubGVuZ3RoID4gMiA/IGFyZ3VtZW50c1syXSA6IHVuZGVmaW5lZFxuICAgICwgY291bnQgPSBNYXRoLm1pbigoZW5kID09PSB1bmRlZmluZWQgPyBsZW4gOiB0b0luZGV4KGVuZCwgbGVuKSkgLSBmcm9tLCBsZW4gLSB0bylcbiAgICAsIGluYyAgID0gMTtcbiAgaWYoZnJvbSA8IHRvICYmIHRvIDwgZnJvbSArIGNvdW50KXtcbiAgICBpbmMgID0gLTE7XG4gICAgZnJvbSArPSBjb3VudCAtIDE7XG4gICAgdG8gICArPSBjb3VudCAtIDE7XG4gIH1cbiAgd2hpbGUoY291bnQtLSA+IDApe1xuICAgIGlmKGZyb20gaW4gTylPW3RvXSA9IE9bZnJvbV07XG4gICAgZWxzZSBkZWxldGUgT1t0b107XG4gICAgdG8gICArPSBpbmM7XG4gICAgZnJvbSArPSBpbmM7XG4gIH0gcmV0dXJuIE87XG59OyIsIi8vIDIyLjEuMy42IEFycmF5LnByb3RvdHlwZS5maWxsKHZhbHVlLCBzdGFydCA9IDAsIGVuZCA9IHRoaXMubGVuZ3RoKVxuJ3VzZSBzdHJpY3QnO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8tb2JqZWN0JylcbiAgLCB0b0luZGV4ICA9IHJlcXVpcmUoJy4vX3RvLWluZGV4JylcbiAgLCB0b0xlbmd0aCA9IHJlcXVpcmUoJy4vX3RvLWxlbmd0aCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBmaWxsKHZhbHVlIC8qLCBzdGFydCA9IDAsIGVuZCA9IEBsZW5ndGggKi8pe1xuICB2YXIgTyAgICAgID0gdG9PYmplY3QodGhpcylcbiAgICAsIGxlbmd0aCA9IHRvTGVuZ3RoKE8ubGVuZ3RoKVxuICAgICwgYUxlbiAgID0gYXJndW1lbnRzLmxlbmd0aFxuICAgICwgaW5kZXggID0gdG9JbmRleChhTGVuID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCwgbGVuZ3RoKVxuICAgICwgZW5kICAgID0gYUxlbiA+IDIgPyBhcmd1bWVudHNbMl0gOiB1bmRlZmluZWRcbiAgICAsIGVuZFBvcyA9IGVuZCA9PT0gdW5kZWZpbmVkID8gbGVuZ3RoIDogdG9JbmRleChlbmQsIGxlbmd0aCk7XG4gIHdoaWxlKGVuZFBvcyA+IGluZGV4KU9baW5kZXgrK10gPSB2YWx1ZTtcbiAgcmV0dXJuIE87XG59OyIsInZhciBmb3JPZiA9IHJlcXVpcmUoJy4vX2Zvci1vZicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGl0ZXIsIElURVJBVE9SKXtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICBmb3JPZihpdGVyLCBmYWxzZSwgcmVzdWx0LnB1c2gsIHJlc3VsdCwgSVRFUkFUT1IpO1xuICByZXR1cm4gcmVzdWx0O1xufTtcbiIsIi8vIGZhbHNlIC0+IEFycmF5I2luZGV4T2Zcbi8vIHRydWUgIC0+IEFycmF5I2luY2x1ZGVzXG52YXIgdG9JT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8taW9iamVjdCcpXG4gICwgdG9MZW5ndGggID0gcmVxdWlyZSgnLi9fdG8tbGVuZ3RoJylcbiAgLCB0b0luZGV4ICAgPSByZXF1aXJlKCcuL190by1pbmRleCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihJU19JTkNMVURFUyl7XG4gIHJldHVybiBmdW5jdGlvbigkdGhpcywgZWwsIGZyb21JbmRleCl7XG4gICAgdmFyIE8gICAgICA9IHRvSU9iamVjdCgkdGhpcylcbiAgICAgICwgbGVuZ3RoID0gdG9MZW5ndGgoTy5sZW5ndGgpXG4gICAgICAsIGluZGV4ICA9IHRvSW5kZXgoZnJvbUluZGV4LCBsZW5ndGgpXG4gICAgICAsIHZhbHVlO1xuICAgIC8vIEFycmF5I2luY2x1ZGVzIHVzZXMgU2FtZVZhbHVlWmVybyBlcXVhbGl0eSBhbGdvcml0aG1cbiAgICBpZihJU19JTkNMVURFUyAmJiBlbCAhPSBlbCl3aGlsZShsZW5ndGggPiBpbmRleCl7XG4gICAgICB2YWx1ZSA9IE9baW5kZXgrK107XG4gICAgICBpZih2YWx1ZSAhPSB2YWx1ZSlyZXR1cm4gdHJ1ZTtcbiAgICAvLyBBcnJheSN0b0luZGV4IGlnbm9yZXMgaG9sZXMsIEFycmF5I2luY2x1ZGVzIC0gbm90XG4gICAgfSBlbHNlIGZvcig7bGVuZ3RoID4gaW5kZXg7IGluZGV4KyspaWYoSVNfSU5DTFVERVMgfHwgaW5kZXggaW4gTyl7XG4gICAgICBpZihPW2luZGV4XSA9PT0gZWwpcmV0dXJuIElTX0lOQ0xVREVTIHx8IGluZGV4IHx8IDA7XG4gICAgfSByZXR1cm4gIUlTX0lOQ0xVREVTICYmIC0xO1xuICB9O1xufTsiLCIvLyAwIC0+IEFycmF5I2ZvckVhY2hcbi8vIDEgLT4gQXJyYXkjbWFwXG4vLyAyIC0+IEFycmF5I2ZpbHRlclxuLy8gMyAtPiBBcnJheSNzb21lXG4vLyA0IC0+IEFycmF5I2V2ZXJ5XG4vLyA1IC0+IEFycmF5I2ZpbmRcbi8vIDYgLT4gQXJyYXkjZmluZEluZGV4XG52YXIgY3R4ICAgICAgPSByZXF1aXJlKCcuL19jdHgnKVxuICAsIElPYmplY3QgID0gcmVxdWlyZSgnLi9faW9iamVjdCcpXG4gICwgdG9PYmplY3QgPSByZXF1aXJlKCcuL190by1vYmplY3QnKVxuICAsIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi9fdG8tbGVuZ3RoJylcbiAgLCBhc2MgICAgICA9IHJlcXVpcmUoJy4vX2FycmF5LXNwZWNpZXMtY3JlYXRlJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKFRZUEUsICRjcmVhdGUpe1xuICB2YXIgSVNfTUFQICAgICAgICA9IFRZUEUgPT0gMVxuICAgICwgSVNfRklMVEVSICAgICA9IFRZUEUgPT0gMlxuICAgICwgSVNfU09NRSAgICAgICA9IFRZUEUgPT0gM1xuICAgICwgSVNfRVZFUlkgICAgICA9IFRZUEUgPT0gNFxuICAgICwgSVNfRklORF9JTkRFWCA9IFRZUEUgPT0gNlxuICAgICwgTk9fSE9MRVMgICAgICA9IFRZUEUgPT0gNSB8fCBJU19GSU5EX0lOREVYXG4gICAgLCBjcmVhdGUgICAgICAgID0gJGNyZWF0ZSB8fCBhc2M7XG4gIHJldHVybiBmdW5jdGlvbigkdGhpcywgY2FsbGJhY2tmbiwgdGhhdCl7XG4gICAgdmFyIE8gICAgICA9IHRvT2JqZWN0KCR0aGlzKVxuICAgICAgLCBzZWxmICAgPSBJT2JqZWN0KE8pXG4gICAgICAsIGYgICAgICA9IGN0eChjYWxsYmFja2ZuLCB0aGF0LCAzKVxuICAgICAgLCBsZW5ndGggPSB0b0xlbmd0aChzZWxmLmxlbmd0aClcbiAgICAgICwgaW5kZXggID0gMFxuICAgICAgLCByZXN1bHQgPSBJU19NQVAgPyBjcmVhdGUoJHRoaXMsIGxlbmd0aCkgOiBJU19GSUxURVIgPyBjcmVhdGUoJHRoaXMsIDApIDogdW5kZWZpbmVkXG4gICAgICAsIHZhbCwgcmVzO1xuICAgIGZvcig7bGVuZ3RoID4gaW5kZXg7IGluZGV4KyspaWYoTk9fSE9MRVMgfHwgaW5kZXggaW4gc2VsZil7XG4gICAgICB2YWwgPSBzZWxmW2luZGV4XTtcbiAgICAgIHJlcyA9IGYodmFsLCBpbmRleCwgTyk7XG4gICAgICBpZihUWVBFKXtcbiAgICAgICAgaWYoSVNfTUFQKXJlc3VsdFtpbmRleF0gPSByZXM7ICAgICAgICAgICAgLy8gbWFwXG4gICAgICAgIGVsc2UgaWYocmVzKXN3aXRjaChUWVBFKXtcbiAgICAgICAgICBjYXNlIDM6IHJldHVybiB0cnVlOyAgICAgICAgICAgICAgICAgICAgLy8gc29tZVxuICAgICAgICAgIGNhc2UgNTogcmV0dXJuIHZhbDsgICAgICAgICAgICAgICAgICAgICAvLyBmaW5kXG4gICAgICAgICAgY2FzZSA2OiByZXR1cm4gaW5kZXg7ICAgICAgICAgICAgICAgICAgIC8vIGZpbmRJbmRleFxuICAgICAgICAgIGNhc2UgMjogcmVzdWx0LnB1c2godmFsKTsgICAgICAgICAgICAgICAvLyBmaWx0ZXJcbiAgICAgICAgfSBlbHNlIGlmKElTX0VWRVJZKXJldHVybiBmYWxzZTsgICAgICAgICAgLy8gZXZlcnlcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIElTX0ZJTkRfSU5ERVggPyAtMSA6IElTX1NPTUUgfHwgSVNfRVZFUlkgPyBJU19FVkVSWSA6IHJlc3VsdDtcbiAgfTtcbn07IiwidmFyIGFGdW5jdGlvbiA9IHJlcXVpcmUoJy4vX2EtZnVuY3Rpb24nKVxuICAsIHRvT2JqZWN0ICA9IHJlcXVpcmUoJy4vX3RvLW9iamVjdCcpXG4gICwgSU9iamVjdCAgID0gcmVxdWlyZSgnLi9faW9iamVjdCcpXG4gICwgdG9MZW5ndGggID0gcmVxdWlyZSgnLi9fdG8tbGVuZ3RoJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24odGhhdCwgY2FsbGJhY2tmbiwgYUxlbiwgbWVtbywgaXNSaWdodCl7XG4gIGFGdW5jdGlvbihjYWxsYmFja2ZuKTtcbiAgdmFyIE8gICAgICA9IHRvT2JqZWN0KHRoYXQpXG4gICAgLCBzZWxmICAgPSBJT2JqZWN0KE8pXG4gICAgLCBsZW5ndGggPSB0b0xlbmd0aChPLmxlbmd0aClcbiAgICAsIGluZGV4ICA9IGlzUmlnaHQgPyBsZW5ndGggLSAxIDogMFxuICAgICwgaSAgICAgID0gaXNSaWdodCA/IC0xIDogMTtcbiAgaWYoYUxlbiA8IDIpZm9yKDs7KXtcbiAgICBpZihpbmRleCBpbiBzZWxmKXtcbiAgICAgIG1lbW8gPSBzZWxmW2luZGV4XTtcbiAgICAgIGluZGV4ICs9IGk7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgaW5kZXggKz0gaTtcbiAgICBpZihpc1JpZ2h0ID8gaW5kZXggPCAwIDogbGVuZ3RoIDw9IGluZGV4KXtcbiAgICAgIHRocm93IFR5cGVFcnJvcignUmVkdWNlIG9mIGVtcHR5IGFycmF5IHdpdGggbm8gaW5pdGlhbCB2YWx1ZScpO1xuICAgIH1cbiAgfVxuICBmb3IoO2lzUmlnaHQgPyBpbmRleCA+PSAwIDogbGVuZ3RoID4gaW5kZXg7IGluZGV4ICs9IGkpaWYoaW5kZXggaW4gc2VsZil7XG4gICAgbWVtbyA9IGNhbGxiYWNrZm4obWVtbywgc2VsZltpbmRleF0sIGluZGV4LCBPKTtcbiAgfVxuICByZXR1cm4gbWVtbztcbn07IiwidmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0JylcbiAgLCBpc0FycmF5ICA9IHJlcXVpcmUoJy4vX2lzLWFycmF5JylcbiAgLCBTUEVDSUVTICA9IHJlcXVpcmUoJy4vX3drcycpKCdzcGVjaWVzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24ob3JpZ2luYWwpe1xuICB2YXIgQztcbiAgaWYoaXNBcnJheShvcmlnaW5hbCkpe1xuICAgIEMgPSBvcmlnaW5hbC5jb25zdHJ1Y3RvcjtcbiAgICAvLyBjcm9zcy1yZWFsbSBmYWxsYmFja1xuICAgIGlmKHR5cGVvZiBDID09ICdmdW5jdGlvbicgJiYgKEMgPT09IEFycmF5IHx8IGlzQXJyYXkoQy5wcm90b3R5cGUpKSlDID0gdW5kZWZpbmVkO1xuICAgIGlmKGlzT2JqZWN0KEMpKXtcbiAgICAgIEMgPSBDW1NQRUNJRVNdO1xuICAgICAgaWYoQyA9PT0gbnVsbClDID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfSByZXR1cm4gQyA9PT0gdW5kZWZpbmVkID8gQXJyYXkgOiBDO1xufTsiLCIvLyA5LjQuMi4zIEFycmF5U3BlY2llc0NyZWF0ZShvcmlnaW5hbEFycmF5LCBsZW5ndGgpXG52YXIgc3BlY2llc0NvbnN0cnVjdG9yID0gcmVxdWlyZSgnLi9fYXJyYXktc3BlY2llcy1jb25zdHJ1Y3RvcicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKG9yaWdpbmFsLCBsZW5ndGgpe1xuICByZXR1cm4gbmV3IChzcGVjaWVzQ29uc3RydWN0b3Iob3JpZ2luYWwpKShsZW5ndGgpO1xufTsiLCIndXNlIHN0cmljdCc7XG52YXIgYUZ1bmN0aW9uICA9IHJlcXVpcmUoJy4vX2EtZnVuY3Rpb24nKVxuICAsIGlzT2JqZWN0ICAgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKVxuICAsIGludm9rZSAgICAgPSByZXF1aXJlKCcuL19pbnZva2UnKVxuICAsIGFycmF5U2xpY2UgPSBbXS5zbGljZVxuICAsIGZhY3RvcmllcyAgPSB7fTtcblxudmFyIGNvbnN0cnVjdCA9IGZ1bmN0aW9uKEYsIGxlbiwgYXJncyl7XG4gIGlmKCEobGVuIGluIGZhY3Rvcmllcykpe1xuICAgIGZvcih2YXIgbiA9IFtdLCBpID0gMDsgaSA8IGxlbjsgaSsrKW5baV0gPSAnYVsnICsgaSArICddJztcbiAgICBmYWN0b3JpZXNbbGVuXSA9IEZ1bmN0aW9uKCdGLGEnLCAncmV0dXJuIG5ldyBGKCcgKyBuLmpvaW4oJywnKSArICcpJyk7XG4gIH0gcmV0dXJuIGZhY3Rvcmllc1tsZW5dKEYsIGFyZ3MpO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBGdW5jdGlvbi5iaW5kIHx8IGZ1bmN0aW9uIGJpbmQodGhhdCAvKiwgYXJncy4uLiAqLyl7XG4gIHZhciBmbiAgICAgICA9IGFGdW5jdGlvbih0aGlzKVxuICAgICwgcGFydEFyZ3MgPSBhcnJheVNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKTtcbiAgdmFyIGJvdW5kID0gZnVuY3Rpb24oLyogYXJncy4uLiAqLyl7XG4gICAgdmFyIGFyZ3MgPSBwYXJ0QXJncy5jb25jYXQoYXJyYXlTbGljZS5jYWxsKGFyZ3VtZW50cykpO1xuICAgIHJldHVybiB0aGlzIGluc3RhbmNlb2YgYm91bmQgPyBjb25zdHJ1Y3QoZm4sIGFyZ3MubGVuZ3RoLCBhcmdzKSA6IGludm9rZShmbiwgYXJncywgdGhhdCk7XG4gIH07XG4gIGlmKGlzT2JqZWN0KGZuLnByb3RvdHlwZSkpYm91bmQucHJvdG90eXBlID0gZm4ucHJvdG90eXBlO1xuICByZXR1cm4gYm91bmQ7XG59OyIsIi8vIGdldHRpbmcgdGFnIGZyb20gMTkuMS4zLjYgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZygpXG52YXIgY29mID0gcmVxdWlyZSgnLi9fY29mJylcbiAgLCBUQUcgPSByZXF1aXJlKCcuL193a3MnKSgndG9TdHJpbmdUYWcnKVxuICAvLyBFUzMgd3JvbmcgaGVyZVxuICAsIEFSRyA9IGNvZihmdW5jdGlvbigpeyByZXR1cm4gYXJndW1lbnRzOyB9KCkpID09ICdBcmd1bWVudHMnO1xuXG4vLyBmYWxsYmFjayBmb3IgSUUxMSBTY3JpcHQgQWNjZXNzIERlbmllZCBlcnJvclxudmFyIHRyeUdldCA9IGZ1bmN0aW9uKGl0LCBrZXkpe1xuICB0cnkge1xuICAgIHJldHVybiBpdFtrZXldO1xuICB9IGNhdGNoKGUpeyAvKiBlbXB0eSAqLyB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGl0KXtcbiAgdmFyIE8sIFQsIEI7XG4gIHJldHVybiBpdCA9PT0gdW5kZWZpbmVkID8gJ1VuZGVmaW5lZCcgOiBpdCA9PT0gbnVsbCA/ICdOdWxsJ1xuICAgIC8vIEBAdG9TdHJpbmdUYWcgY2FzZVxuICAgIDogdHlwZW9mIChUID0gdHJ5R2V0KE8gPSBPYmplY3QoaXQpLCBUQUcpKSA9PSAnc3RyaW5nJyA/IFRcbiAgICAvLyBidWlsdGluVGFnIGNhc2VcbiAgICA6IEFSRyA/IGNvZihPKVxuICAgIC8vIEVTMyBhcmd1bWVudHMgZmFsbGJhY2tcbiAgICA6IChCID0gY29mKE8pKSA9PSAnT2JqZWN0JyAmJiB0eXBlb2YgTy5jYWxsZWUgPT0gJ2Z1bmN0aW9uJyA/ICdBcmd1bWVudHMnIDogQjtcbn07IiwidmFyIHRvU3RyaW5nID0ge30udG9TdHJpbmc7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaXQpe1xuICByZXR1cm4gdG9TdHJpbmcuY2FsbChpdCkuc2xpY2UoOCwgLTEpO1xufTsiLCIndXNlIHN0cmljdCc7XG52YXIgZFAgICAgICAgICAgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKS5mXG4gICwgY3JlYXRlICAgICAgPSByZXF1aXJlKCcuL19vYmplY3QtY3JlYXRlJylcbiAgLCByZWRlZmluZUFsbCA9IHJlcXVpcmUoJy4vX3JlZGVmaW5lLWFsbCcpXG4gICwgY3R4ICAgICAgICAgPSByZXF1aXJlKCcuL19jdHgnKVxuICAsIGFuSW5zdGFuY2UgID0gcmVxdWlyZSgnLi9fYW4taW5zdGFuY2UnKVxuICAsIGRlZmluZWQgICAgID0gcmVxdWlyZSgnLi9fZGVmaW5lZCcpXG4gICwgZm9yT2YgICAgICAgPSByZXF1aXJlKCcuL19mb3Itb2YnKVxuICAsICRpdGVyRGVmaW5lID0gcmVxdWlyZSgnLi9faXRlci1kZWZpbmUnKVxuICAsIHN0ZXAgICAgICAgID0gcmVxdWlyZSgnLi9faXRlci1zdGVwJylcbiAgLCBzZXRTcGVjaWVzICA9IHJlcXVpcmUoJy4vX3NldC1zcGVjaWVzJylcbiAgLCBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJylcbiAgLCBmYXN0S2V5ICAgICA9IHJlcXVpcmUoJy4vX21ldGEnKS5mYXN0S2V5XG4gICwgU0laRSAgICAgICAgPSBERVNDUklQVE9SUyA/ICdfcycgOiAnc2l6ZSc7XG5cbnZhciBnZXRFbnRyeSA9IGZ1bmN0aW9uKHRoYXQsIGtleSl7XG4gIC8vIGZhc3QgY2FzZVxuICB2YXIgaW5kZXggPSBmYXN0S2V5KGtleSksIGVudHJ5O1xuICBpZihpbmRleCAhPT0gJ0YnKXJldHVybiB0aGF0Ll9pW2luZGV4XTtcbiAgLy8gZnJvemVuIG9iamVjdCBjYXNlXG4gIGZvcihlbnRyeSA9IHRoYXQuX2Y7IGVudHJ5OyBlbnRyeSA9IGVudHJ5Lm4pe1xuICAgIGlmKGVudHJ5LmsgPT0ga2V5KXJldHVybiBlbnRyeTtcbiAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGdldENvbnN0cnVjdG9yOiBmdW5jdGlvbih3cmFwcGVyLCBOQU1FLCBJU19NQVAsIEFEREVSKXtcbiAgICB2YXIgQyA9IHdyYXBwZXIoZnVuY3Rpb24odGhhdCwgaXRlcmFibGUpe1xuICAgICAgYW5JbnN0YW5jZSh0aGF0LCBDLCBOQU1FLCAnX2knKTtcbiAgICAgIHRoYXQuX2kgPSBjcmVhdGUobnVsbCk7IC8vIGluZGV4XG4gICAgICB0aGF0Ll9mID0gdW5kZWZpbmVkOyAgICAvLyBmaXJzdCBlbnRyeVxuICAgICAgdGhhdC5fbCA9IHVuZGVmaW5lZDsgICAgLy8gbGFzdCBlbnRyeVxuICAgICAgdGhhdFtTSVpFXSA9IDA7ICAgICAgICAgLy8gc2l6ZVxuICAgICAgaWYoaXRlcmFibGUgIT0gdW5kZWZpbmVkKWZvck9mKGl0ZXJhYmxlLCBJU19NQVAsIHRoYXRbQURERVJdLCB0aGF0KTtcbiAgICB9KTtcbiAgICByZWRlZmluZUFsbChDLnByb3RvdHlwZSwge1xuICAgICAgLy8gMjMuMS4zLjEgTWFwLnByb3RvdHlwZS5jbGVhcigpXG4gICAgICAvLyAyMy4yLjMuMiBTZXQucHJvdG90eXBlLmNsZWFyKClcbiAgICAgIGNsZWFyOiBmdW5jdGlvbiBjbGVhcigpe1xuICAgICAgICBmb3IodmFyIHRoYXQgPSB0aGlzLCBkYXRhID0gdGhhdC5faSwgZW50cnkgPSB0aGF0Ll9mOyBlbnRyeTsgZW50cnkgPSBlbnRyeS5uKXtcbiAgICAgICAgICBlbnRyeS5yID0gdHJ1ZTtcbiAgICAgICAgICBpZihlbnRyeS5wKWVudHJ5LnAgPSBlbnRyeS5wLm4gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgZGVsZXRlIGRhdGFbZW50cnkuaV07XG4gICAgICAgIH1cbiAgICAgICAgdGhhdC5fZiA9IHRoYXQuX2wgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoYXRbU0laRV0gPSAwO1xuICAgICAgfSxcbiAgICAgIC8vIDIzLjEuMy4zIE1hcC5wcm90b3R5cGUuZGVsZXRlKGtleSlcbiAgICAgIC8vIDIzLjIuMy40IFNldC5wcm90b3R5cGUuZGVsZXRlKHZhbHVlKVxuICAgICAgJ2RlbGV0ZSc6IGZ1bmN0aW9uKGtleSl7XG4gICAgICAgIHZhciB0aGF0ICA9IHRoaXNcbiAgICAgICAgICAsIGVudHJ5ID0gZ2V0RW50cnkodGhhdCwga2V5KTtcbiAgICAgICAgaWYoZW50cnkpe1xuICAgICAgICAgIHZhciBuZXh0ID0gZW50cnkublxuICAgICAgICAgICAgLCBwcmV2ID0gZW50cnkucDtcbiAgICAgICAgICBkZWxldGUgdGhhdC5faVtlbnRyeS5pXTtcbiAgICAgICAgICBlbnRyeS5yID0gdHJ1ZTtcbiAgICAgICAgICBpZihwcmV2KXByZXYubiA9IG5leHQ7XG4gICAgICAgICAgaWYobmV4dCluZXh0LnAgPSBwcmV2O1xuICAgICAgICAgIGlmKHRoYXQuX2YgPT0gZW50cnkpdGhhdC5fZiA9IG5leHQ7XG4gICAgICAgICAgaWYodGhhdC5fbCA9PSBlbnRyeSl0aGF0Ll9sID0gcHJldjtcbiAgICAgICAgICB0aGF0W1NJWkVdLS07XG4gICAgICAgIH0gcmV0dXJuICEhZW50cnk7XG4gICAgICB9LFxuICAgICAgLy8gMjMuMi4zLjYgU2V0LnByb3RvdHlwZS5mb3JFYWNoKGNhbGxiYWNrZm4sIHRoaXNBcmcgPSB1bmRlZmluZWQpXG4gICAgICAvLyAyMy4xLjMuNSBNYXAucHJvdG90eXBlLmZvckVhY2goY2FsbGJhY2tmbiwgdGhpc0FyZyA9IHVuZGVmaW5lZClcbiAgICAgIGZvckVhY2g6IGZ1bmN0aW9uIGZvckVhY2goY2FsbGJhY2tmbiAvKiwgdGhhdCA9IHVuZGVmaW5lZCAqLyl7XG4gICAgICAgIGFuSW5zdGFuY2UodGhpcywgQywgJ2ZvckVhY2gnKTtcbiAgICAgICAgdmFyIGYgPSBjdHgoY2FsbGJhY2tmbiwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQsIDMpXG4gICAgICAgICAgLCBlbnRyeTtcbiAgICAgICAgd2hpbGUoZW50cnkgPSBlbnRyeSA/IGVudHJ5Lm4gOiB0aGlzLl9mKXtcbiAgICAgICAgICBmKGVudHJ5LnYsIGVudHJ5LmssIHRoaXMpO1xuICAgICAgICAgIC8vIHJldmVydCB0byB0aGUgbGFzdCBleGlzdGluZyBlbnRyeVxuICAgICAgICAgIHdoaWxlKGVudHJ5ICYmIGVudHJ5LnIpZW50cnkgPSBlbnRyeS5wO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgLy8gMjMuMS4zLjcgTWFwLnByb3RvdHlwZS5oYXMoa2V5KVxuICAgICAgLy8gMjMuMi4zLjcgU2V0LnByb3RvdHlwZS5oYXModmFsdWUpXG4gICAgICBoYXM6IGZ1bmN0aW9uIGhhcyhrZXkpe1xuICAgICAgICByZXR1cm4gISFnZXRFbnRyeSh0aGlzLCBrZXkpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGlmKERFU0NSSVBUT1JTKWRQKEMucHJvdG90eXBlLCAnc2l6ZScsIHtcbiAgICAgIGdldDogZnVuY3Rpb24oKXtcbiAgICAgICAgcmV0dXJuIGRlZmluZWQodGhpc1tTSVpFXSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIEM7XG4gIH0sXG4gIGRlZjogZnVuY3Rpb24odGhhdCwga2V5LCB2YWx1ZSl7XG4gICAgdmFyIGVudHJ5ID0gZ2V0RW50cnkodGhhdCwga2V5KVxuICAgICAgLCBwcmV2LCBpbmRleDtcbiAgICAvLyBjaGFuZ2UgZXhpc3RpbmcgZW50cnlcbiAgICBpZihlbnRyeSl7XG4gICAgICBlbnRyeS52ID0gdmFsdWU7XG4gICAgLy8gY3JlYXRlIG5ldyBlbnRyeVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGF0Ll9sID0gZW50cnkgPSB7XG4gICAgICAgIGk6IGluZGV4ID0gZmFzdEtleShrZXksIHRydWUpLCAvLyA8LSBpbmRleFxuICAgICAgICBrOiBrZXksICAgICAgICAgICAgICAgICAgICAgICAgLy8gPC0ga2V5XG4gICAgICAgIHY6IHZhbHVlLCAgICAgICAgICAgICAgICAgICAgICAvLyA8LSB2YWx1ZVxuICAgICAgICBwOiBwcmV2ID0gdGhhdC5fbCwgICAgICAgICAgICAgLy8gPC0gcHJldmlvdXMgZW50cnlcbiAgICAgICAgbjogdW5kZWZpbmVkLCAgICAgICAgICAgICAgICAgIC8vIDwtIG5leHQgZW50cnlcbiAgICAgICAgcjogZmFsc2UgICAgICAgICAgICAgICAgICAgICAgIC8vIDwtIHJlbW92ZWRcbiAgICAgIH07XG4gICAgICBpZighdGhhdC5fZil0aGF0Ll9mID0gZW50cnk7XG4gICAgICBpZihwcmV2KXByZXYubiA9IGVudHJ5O1xuICAgICAgdGhhdFtTSVpFXSsrO1xuICAgICAgLy8gYWRkIHRvIGluZGV4XG4gICAgICBpZihpbmRleCAhPT0gJ0YnKXRoYXQuX2lbaW5kZXhdID0gZW50cnk7XG4gICAgfSByZXR1cm4gdGhhdDtcbiAgfSxcbiAgZ2V0RW50cnk6IGdldEVudHJ5LFxuICBzZXRTdHJvbmc6IGZ1bmN0aW9uKEMsIE5BTUUsIElTX01BUCl7XG4gICAgLy8gYWRkIC5rZXlzLCAudmFsdWVzLCAuZW50cmllcywgW0BAaXRlcmF0b3JdXG4gICAgLy8gMjMuMS4zLjQsIDIzLjEuMy44LCAyMy4xLjMuMTEsIDIzLjEuMy4xMiwgMjMuMi4zLjUsIDIzLjIuMy44LCAyMy4yLjMuMTAsIDIzLjIuMy4xMVxuICAgICRpdGVyRGVmaW5lKEMsIE5BTUUsIGZ1bmN0aW9uKGl0ZXJhdGVkLCBraW5kKXtcbiAgICAgIHRoaXMuX3QgPSBpdGVyYXRlZDsgIC8vIHRhcmdldFxuICAgICAgdGhpcy5fayA9IGtpbmQ7ICAgICAgLy8ga2luZFxuICAgICAgdGhpcy5fbCA9IHVuZGVmaW5lZDsgLy8gcHJldmlvdXNcbiAgICB9LCBmdW5jdGlvbigpe1xuICAgICAgdmFyIHRoYXQgID0gdGhpc1xuICAgICAgICAsIGtpbmQgID0gdGhhdC5fa1xuICAgICAgICAsIGVudHJ5ID0gdGhhdC5fbDtcbiAgICAgIC8vIHJldmVydCB0byB0aGUgbGFzdCBleGlzdGluZyBlbnRyeVxuICAgICAgd2hpbGUoZW50cnkgJiYgZW50cnkucillbnRyeSA9IGVudHJ5LnA7XG4gICAgICAvLyBnZXQgbmV4dCBlbnRyeVxuICAgICAgaWYoIXRoYXQuX3QgfHwgISh0aGF0Ll9sID0gZW50cnkgPSBlbnRyeSA/IGVudHJ5Lm4gOiB0aGF0Ll90Ll9mKSl7XG4gICAgICAgIC8vIG9yIGZpbmlzaCB0aGUgaXRlcmF0aW9uXG4gICAgICAgIHRoYXQuX3QgPSB1bmRlZmluZWQ7XG4gICAgICAgIHJldHVybiBzdGVwKDEpO1xuICAgICAgfVxuICAgICAgLy8gcmV0dXJuIHN0ZXAgYnkga2luZFxuICAgICAgaWYoa2luZCA9PSAna2V5cycgIClyZXR1cm4gc3RlcCgwLCBlbnRyeS5rKTtcbiAgICAgIGlmKGtpbmQgPT0gJ3ZhbHVlcycpcmV0dXJuIHN0ZXAoMCwgZW50cnkudik7XG4gICAgICByZXR1cm4gc3RlcCgwLCBbZW50cnkuaywgZW50cnkudl0pO1xuICAgIH0sIElTX01BUCA/ICdlbnRyaWVzJyA6ICd2YWx1ZXMnICwgIUlTX01BUCwgdHJ1ZSk7XG5cbiAgICAvLyBhZGQgW0BAc3BlY2llc10sIDIzLjEuMi4yLCAyMy4yLjIuMlxuICAgIHNldFNwZWNpZXMoTkFNRSk7XG4gIH1cbn07IiwiLy8gaHR0cHM6Ly9naXRodWIuY29tL0RhdmlkQnJ1YW50L01hcC1TZXQucHJvdG90eXBlLnRvSlNPTlxudmFyIGNsYXNzb2YgPSByZXF1aXJlKCcuL19jbGFzc29mJylcbiAgLCBmcm9tICAgID0gcmVxdWlyZSgnLi9fYXJyYXktZnJvbS1pdGVyYWJsZScpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihOQU1FKXtcbiAgcmV0dXJuIGZ1bmN0aW9uIHRvSlNPTigpe1xuICAgIGlmKGNsYXNzb2YodGhpcykgIT0gTkFNRSl0aHJvdyBUeXBlRXJyb3IoTkFNRSArIFwiI3RvSlNPTiBpc24ndCBnZW5lcmljXCIpO1xuICAgIHJldHVybiBmcm9tKHRoaXMpO1xuICB9O1xufTsiLCIndXNlIHN0cmljdCc7XG52YXIgcmVkZWZpbmVBbGwgICAgICAgPSByZXF1aXJlKCcuL19yZWRlZmluZS1hbGwnKVxuICAsIGdldFdlYWsgICAgICAgICAgID0gcmVxdWlyZSgnLi9fbWV0YScpLmdldFdlYWtcbiAgLCBhbk9iamVjdCAgICAgICAgICA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpXG4gICwgaXNPYmplY3QgICAgICAgICAgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKVxuICAsIGFuSW5zdGFuY2UgICAgICAgID0gcmVxdWlyZSgnLi9fYW4taW5zdGFuY2UnKVxuICAsIGZvck9mICAgICAgICAgICAgID0gcmVxdWlyZSgnLi9fZm9yLW9mJylcbiAgLCBjcmVhdGVBcnJheU1ldGhvZCA9IHJlcXVpcmUoJy4vX2FycmF5LW1ldGhvZHMnKVxuICAsICRoYXMgICAgICAgICAgICAgID0gcmVxdWlyZSgnLi9faGFzJylcbiAgLCBhcnJheUZpbmQgICAgICAgICA9IGNyZWF0ZUFycmF5TWV0aG9kKDUpXG4gICwgYXJyYXlGaW5kSW5kZXggICAgPSBjcmVhdGVBcnJheU1ldGhvZCg2KVxuICAsIGlkICAgICAgICAgICAgICAgID0gMDtcblxuLy8gZmFsbGJhY2sgZm9yIHVuY2F1Z2h0IGZyb3plbiBrZXlzXG52YXIgdW5jYXVnaHRGcm96ZW5TdG9yZSA9IGZ1bmN0aW9uKHRoYXQpe1xuICByZXR1cm4gdGhhdC5fbCB8fCAodGhhdC5fbCA9IG5ldyBVbmNhdWdodEZyb3plblN0b3JlKTtcbn07XG52YXIgVW5jYXVnaHRGcm96ZW5TdG9yZSA9IGZ1bmN0aW9uKCl7XG4gIHRoaXMuYSA9IFtdO1xufTtcbnZhciBmaW5kVW5jYXVnaHRGcm96ZW4gPSBmdW5jdGlvbihzdG9yZSwga2V5KXtcbiAgcmV0dXJuIGFycmF5RmluZChzdG9yZS5hLCBmdW5jdGlvbihpdCl7XG4gICAgcmV0dXJuIGl0WzBdID09PSBrZXk7XG4gIH0pO1xufTtcblVuY2F1Z2h0RnJvemVuU3RvcmUucHJvdG90eXBlID0ge1xuICBnZXQ6IGZ1bmN0aW9uKGtleSl7XG4gICAgdmFyIGVudHJ5ID0gZmluZFVuY2F1Z2h0RnJvemVuKHRoaXMsIGtleSk7XG4gICAgaWYoZW50cnkpcmV0dXJuIGVudHJ5WzFdO1xuICB9LFxuICBoYXM6IGZ1bmN0aW9uKGtleSl7XG4gICAgcmV0dXJuICEhZmluZFVuY2F1Z2h0RnJvemVuKHRoaXMsIGtleSk7XG4gIH0sXG4gIHNldDogZnVuY3Rpb24oa2V5LCB2YWx1ZSl7XG4gICAgdmFyIGVudHJ5ID0gZmluZFVuY2F1Z2h0RnJvemVuKHRoaXMsIGtleSk7XG4gICAgaWYoZW50cnkpZW50cnlbMV0gPSB2YWx1ZTtcbiAgICBlbHNlIHRoaXMuYS5wdXNoKFtrZXksIHZhbHVlXSk7XG4gIH0sXG4gICdkZWxldGUnOiBmdW5jdGlvbihrZXkpe1xuICAgIHZhciBpbmRleCA9IGFycmF5RmluZEluZGV4KHRoaXMuYSwgZnVuY3Rpb24oaXQpe1xuICAgICAgcmV0dXJuIGl0WzBdID09PSBrZXk7XG4gICAgfSk7XG4gICAgaWYofmluZGV4KXRoaXMuYS5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIHJldHVybiAhIX5pbmRleDtcbiAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGdldENvbnN0cnVjdG9yOiBmdW5jdGlvbih3cmFwcGVyLCBOQU1FLCBJU19NQVAsIEFEREVSKXtcbiAgICB2YXIgQyA9IHdyYXBwZXIoZnVuY3Rpb24odGhhdCwgaXRlcmFibGUpe1xuICAgICAgYW5JbnN0YW5jZSh0aGF0LCBDLCBOQU1FLCAnX2knKTtcbiAgICAgIHRoYXQuX2kgPSBpZCsrOyAgICAgIC8vIGNvbGxlY3Rpb24gaWRcbiAgICAgIHRoYXQuX2wgPSB1bmRlZmluZWQ7IC8vIGxlYWsgc3RvcmUgZm9yIHVuY2F1Z2h0IGZyb3plbiBvYmplY3RzXG4gICAgICBpZihpdGVyYWJsZSAhPSB1bmRlZmluZWQpZm9yT2YoaXRlcmFibGUsIElTX01BUCwgdGhhdFtBRERFUl0sIHRoYXQpO1xuICAgIH0pO1xuICAgIHJlZGVmaW5lQWxsKEMucHJvdG90eXBlLCB7XG4gICAgICAvLyAyMy4zLjMuMiBXZWFrTWFwLnByb3RvdHlwZS5kZWxldGUoa2V5KVxuICAgICAgLy8gMjMuNC4zLjMgV2Vha1NldC5wcm90b3R5cGUuZGVsZXRlKHZhbHVlKVxuICAgICAgJ2RlbGV0ZSc6IGZ1bmN0aW9uKGtleSl7XG4gICAgICAgIGlmKCFpc09iamVjdChrZXkpKXJldHVybiBmYWxzZTtcbiAgICAgICAgdmFyIGRhdGEgPSBnZXRXZWFrKGtleSk7XG4gICAgICAgIGlmKGRhdGEgPT09IHRydWUpcmV0dXJuIHVuY2F1Z2h0RnJvemVuU3RvcmUodGhpcylbJ2RlbGV0ZSddKGtleSk7XG4gICAgICAgIHJldHVybiBkYXRhICYmICRoYXMoZGF0YSwgdGhpcy5faSkgJiYgZGVsZXRlIGRhdGFbdGhpcy5faV07XG4gICAgICB9LFxuICAgICAgLy8gMjMuMy4zLjQgV2Vha01hcC5wcm90b3R5cGUuaGFzKGtleSlcbiAgICAgIC8vIDIzLjQuMy40IFdlYWtTZXQucHJvdG90eXBlLmhhcyh2YWx1ZSlcbiAgICAgIGhhczogZnVuY3Rpb24gaGFzKGtleSl7XG4gICAgICAgIGlmKCFpc09iamVjdChrZXkpKXJldHVybiBmYWxzZTtcbiAgICAgICAgdmFyIGRhdGEgPSBnZXRXZWFrKGtleSk7XG4gICAgICAgIGlmKGRhdGEgPT09IHRydWUpcmV0dXJuIHVuY2F1Z2h0RnJvemVuU3RvcmUodGhpcykuaGFzKGtleSk7XG4gICAgICAgIHJldHVybiBkYXRhICYmICRoYXMoZGF0YSwgdGhpcy5faSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIEM7XG4gIH0sXG4gIGRlZjogZnVuY3Rpb24odGhhdCwga2V5LCB2YWx1ZSl7XG4gICAgdmFyIGRhdGEgPSBnZXRXZWFrKGFuT2JqZWN0KGtleSksIHRydWUpO1xuICAgIGlmKGRhdGEgPT09IHRydWUpdW5jYXVnaHRGcm96ZW5TdG9yZSh0aGF0KS5zZXQoa2V5LCB2YWx1ZSk7XG4gICAgZWxzZSBkYXRhW3RoYXQuX2ldID0gdmFsdWU7XG4gICAgcmV0dXJuIHRoYXQ7XG4gIH0sXG4gIHVmc3RvcmU6IHVuY2F1Z2h0RnJvemVuU3RvcmVcbn07IiwiJ3VzZSBzdHJpY3QnO1xudmFyIGdsb2JhbCAgICAgICAgICAgID0gcmVxdWlyZSgnLi9fZ2xvYmFsJylcbiAgLCAkZXhwb3J0ICAgICAgICAgICA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpXG4gICwgcmVkZWZpbmUgICAgICAgICAgPSByZXF1aXJlKCcuL19yZWRlZmluZScpXG4gICwgcmVkZWZpbmVBbGwgICAgICAgPSByZXF1aXJlKCcuL19yZWRlZmluZS1hbGwnKVxuICAsIG1ldGEgICAgICAgICAgICAgID0gcmVxdWlyZSgnLi9fbWV0YScpXG4gICwgZm9yT2YgICAgICAgICAgICAgPSByZXF1aXJlKCcuL19mb3Itb2YnKVxuICAsIGFuSW5zdGFuY2UgICAgICAgID0gcmVxdWlyZSgnLi9fYW4taW5zdGFuY2UnKVxuICAsIGlzT2JqZWN0ICAgICAgICAgID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0JylcbiAgLCBmYWlscyAgICAgICAgICAgICA9IHJlcXVpcmUoJy4vX2ZhaWxzJylcbiAgLCAkaXRlckRldGVjdCAgICAgICA9IHJlcXVpcmUoJy4vX2l0ZXItZGV0ZWN0JylcbiAgLCBzZXRUb1N0cmluZ1RhZyAgICA9IHJlcXVpcmUoJy4vX3NldC10by1zdHJpbmctdGFnJylcbiAgLCBpbmhlcml0SWZSZXF1aXJlZCA9IHJlcXVpcmUoJy4vX2luaGVyaXQtaWYtcmVxdWlyZWQnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihOQU1FLCB3cmFwcGVyLCBtZXRob2RzLCBjb21tb24sIElTX01BUCwgSVNfV0VBSyl7XG4gIHZhciBCYXNlICA9IGdsb2JhbFtOQU1FXVxuICAgICwgQyAgICAgPSBCYXNlXG4gICAgLCBBRERFUiA9IElTX01BUCA/ICdzZXQnIDogJ2FkZCdcbiAgICAsIHByb3RvID0gQyAmJiBDLnByb3RvdHlwZVxuICAgICwgTyAgICAgPSB7fTtcbiAgdmFyIGZpeE1ldGhvZCA9IGZ1bmN0aW9uKEtFWSl7XG4gICAgdmFyIGZuID0gcHJvdG9bS0VZXTtcbiAgICByZWRlZmluZShwcm90bywgS0VZLFxuICAgICAgS0VZID09ICdkZWxldGUnID8gZnVuY3Rpb24oYSl7XG4gICAgICAgIHJldHVybiBJU19XRUFLICYmICFpc09iamVjdChhKSA/IGZhbHNlIDogZm4uY2FsbCh0aGlzLCBhID09PSAwID8gMCA6IGEpO1xuICAgICAgfSA6IEtFWSA9PSAnaGFzJyA/IGZ1bmN0aW9uIGhhcyhhKXtcbiAgICAgICAgcmV0dXJuIElTX1dFQUsgJiYgIWlzT2JqZWN0KGEpID8gZmFsc2UgOiBmbi5jYWxsKHRoaXMsIGEgPT09IDAgPyAwIDogYSk7XG4gICAgICB9IDogS0VZID09ICdnZXQnID8gZnVuY3Rpb24gZ2V0KGEpe1xuICAgICAgICByZXR1cm4gSVNfV0VBSyAmJiAhaXNPYmplY3QoYSkgPyB1bmRlZmluZWQgOiBmbi5jYWxsKHRoaXMsIGEgPT09IDAgPyAwIDogYSk7XG4gICAgICB9IDogS0VZID09ICdhZGQnID8gZnVuY3Rpb24gYWRkKGEpeyBmbi5jYWxsKHRoaXMsIGEgPT09IDAgPyAwIDogYSk7IHJldHVybiB0aGlzOyB9XG4gICAgICAgIDogZnVuY3Rpb24gc2V0KGEsIGIpeyBmbi5jYWxsKHRoaXMsIGEgPT09IDAgPyAwIDogYSwgYik7IHJldHVybiB0aGlzOyB9XG4gICAgKTtcbiAgfTtcbiAgaWYodHlwZW9mIEMgIT0gJ2Z1bmN0aW9uJyB8fCAhKElTX1dFQUsgfHwgcHJvdG8uZm9yRWFjaCAmJiAhZmFpbHMoZnVuY3Rpb24oKXtcbiAgICBuZXcgQygpLmVudHJpZXMoKS5uZXh0KCk7XG4gIH0pKSl7XG4gICAgLy8gY3JlYXRlIGNvbGxlY3Rpb24gY29uc3RydWN0b3JcbiAgICBDID0gY29tbW9uLmdldENvbnN0cnVjdG9yKHdyYXBwZXIsIE5BTUUsIElTX01BUCwgQURERVIpO1xuICAgIHJlZGVmaW5lQWxsKEMucHJvdG90eXBlLCBtZXRob2RzKTtcbiAgICBtZXRhLk5FRUQgPSB0cnVlO1xuICB9IGVsc2Uge1xuICAgIHZhciBpbnN0YW5jZSAgICAgICAgICAgICA9IG5ldyBDXG4gICAgICAvLyBlYXJseSBpbXBsZW1lbnRhdGlvbnMgbm90IHN1cHBvcnRzIGNoYWluaW5nXG4gICAgICAsIEhBU05UX0NIQUlOSU5HICAgICAgID0gaW5zdGFuY2VbQURERVJdKElTX1dFQUsgPyB7fSA6IC0wLCAxKSAhPSBpbnN0YW5jZVxuICAgICAgLy8gVjggfiAgQ2hyb21pdW0gNDAtIHdlYWstY29sbGVjdGlvbnMgdGhyb3dzIG9uIHByaW1pdGl2ZXMsIGJ1dCBzaG91bGQgcmV0dXJuIGZhbHNlXG4gICAgICAsIFRIUk9XU19PTl9QUklNSVRJVkVTID0gZmFpbHMoZnVuY3Rpb24oKXsgaW5zdGFuY2UuaGFzKDEpOyB9KVxuICAgICAgLy8gbW9zdCBlYXJseSBpbXBsZW1lbnRhdGlvbnMgZG9lc24ndCBzdXBwb3J0cyBpdGVyYWJsZXMsIG1vc3QgbW9kZXJuIC0gbm90IGNsb3NlIGl0IGNvcnJlY3RseVxuICAgICAgLCBBQ0NFUFRfSVRFUkFCTEVTICAgICA9ICRpdGVyRGV0ZWN0KGZ1bmN0aW9uKGl0ZXIpeyBuZXcgQyhpdGVyKTsgfSkgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXdcbiAgICAgIC8vIGZvciBlYXJseSBpbXBsZW1lbnRhdGlvbnMgLTAgYW5kICswIG5vdCB0aGUgc2FtZVxuICAgICAgLCBCVUdHWV9aRVJPID0gIUlTX1dFQUsgJiYgZmFpbHMoZnVuY3Rpb24oKXtcbiAgICAgICAgLy8gVjggfiBDaHJvbWl1bSA0Mi0gZmFpbHMgb25seSB3aXRoIDUrIGVsZW1lbnRzXG4gICAgICAgIHZhciAkaW5zdGFuY2UgPSBuZXcgQygpXG4gICAgICAgICAgLCBpbmRleCAgICAgPSA1O1xuICAgICAgICB3aGlsZShpbmRleC0tKSRpbnN0YW5jZVtBRERFUl0oaW5kZXgsIGluZGV4KTtcbiAgICAgICAgcmV0dXJuICEkaW5zdGFuY2UuaGFzKC0wKTtcbiAgICAgIH0pO1xuICAgIGlmKCFBQ0NFUFRfSVRFUkFCTEVTKXsgXG4gICAgICBDID0gd3JhcHBlcihmdW5jdGlvbih0YXJnZXQsIGl0ZXJhYmxlKXtcbiAgICAgICAgYW5JbnN0YW5jZSh0YXJnZXQsIEMsIE5BTUUpO1xuICAgICAgICB2YXIgdGhhdCA9IGluaGVyaXRJZlJlcXVpcmVkKG5ldyBCYXNlLCB0YXJnZXQsIEMpO1xuICAgICAgICBpZihpdGVyYWJsZSAhPSB1bmRlZmluZWQpZm9yT2YoaXRlcmFibGUsIElTX01BUCwgdGhhdFtBRERFUl0sIHRoYXQpO1xuICAgICAgICByZXR1cm4gdGhhdDtcbiAgICAgIH0pO1xuICAgICAgQy5wcm90b3R5cGUgPSBwcm90bztcbiAgICAgIHByb3RvLmNvbnN0cnVjdG9yID0gQztcbiAgICB9XG4gICAgaWYoVEhST1dTX09OX1BSSU1JVElWRVMgfHwgQlVHR1lfWkVSTyl7XG4gICAgICBmaXhNZXRob2QoJ2RlbGV0ZScpO1xuICAgICAgZml4TWV0aG9kKCdoYXMnKTtcbiAgICAgIElTX01BUCAmJiBmaXhNZXRob2QoJ2dldCcpO1xuICAgIH1cbiAgICBpZihCVUdHWV9aRVJPIHx8IEhBU05UX0NIQUlOSU5HKWZpeE1ldGhvZChBRERFUik7XG4gICAgLy8gd2VhayBjb2xsZWN0aW9ucyBzaG91bGQgbm90IGNvbnRhaW5zIC5jbGVhciBtZXRob2RcbiAgICBpZihJU19XRUFLICYmIHByb3RvLmNsZWFyKWRlbGV0ZSBwcm90by5jbGVhcjtcbiAgfVxuXG4gIHNldFRvU3RyaW5nVGFnKEMsIE5BTUUpO1xuXG4gIE9bTkFNRV0gPSBDO1xuICAkZXhwb3J0KCRleHBvcnQuRyArICRleHBvcnQuVyArICRleHBvcnQuRiAqIChDICE9IEJhc2UpLCBPKTtcblxuICBpZighSVNfV0VBSyljb21tb24uc2V0U3Ryb25nKEMsIE5BTUUsIElTX01BUCk7XG5cbiAgcmV0dXJuIEM7XG59OyIsInZhciBjb3JlID0gbW9kdWxlLmV4cG9ydHMgPSB7dmVyc2lvbjogJzIuNC4wJ307XG5pZih0eXBlb2YgX19lID09ICdudW1iZXInKV9fZSA9IGNvcmU7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW5kZWYiLCIndXNlIHN0cmljdCc7XG52YXIgJGRlZmluZVByb3BlcnR5ID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwJylcbiAgLCBjcmVhdGVEZXNjICAgICAgPSByZXF1aXJlKCcuL19wcm9wZXJ0eS1kZXNjJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24ob2JqZWN0LCBpbmRleCwgdmFsdWUpe1xuICBpZihpbmRleCBpbiBvYmplY3QpJGRlZmluZVByb3BlcnR5LmYob2JqZWN0LCBpbmRleCwgY3JlYXRlRGVzYygwLCB2YWx1ZSkpO1xuICBlbHNlIG9iamVjdFtpbmRleF0gPSB2YWx1ZTtcbn07IiwiLy8gb3B0aW9uYWwgLyBzaW1wbGUgY29udGV4dCBiaW5kaW5nXG52YXIgYUZ1bmN0aW9uID0gcmVxdWlyZSgnLi9fYS1mdW5jdGlvbicpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihmbiwgdGhhdCwgbGVuZ3RoKXtcbiAgYUZ1bmN0aW9uKGZuKTtcbiAgaWYodGhhdCA9PT0gdW5kZWZpbmVkKXJldHVybiBmbjtcbiAgc3dpdGNoKGxlbmd0aCl7XG4gICAgY2FzZSAxOiByZXR1cm4gZnVuY3Rpb24oYSl7XG4gICAgICByZXR1cm4gZm4uY2FsbCh0aGF0LCBhKTtcbiAgICB9O1xuICAgIGNhc2UgMjogcmV0dXJuIGZ1bmN0aW9uKGEsIGIpe1xuICAgICAgcmV0dXJuIGZuLmNhbGwodGhhdCwgYSwgYik7XG4gICAgfTtcbiAgICBjYXNlIDM6IHJldHVybiBmdW5jdGlvbihhLCBiLCBjKXtcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEsIGIsIGMpO1xuICAgIH07XG4gIH1cbiAgcmV0dXJuIGZ1bmN0aW9uKC8qIC4uLmFyZ3MgKi8pe1xuICAgIHJldHVybiBmbi5hcHBseSh0aGF0LCBhcmd1bWVudHMpO1xuICB9O1xufTsiLCIndXNlIHN0cmljdCc7XG52YXIgYW5PYmplY3QgICAgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKVxuICAsIHRvUHJpbWl0aXZlID0gcmVxdWlyZSgnLi9fdG8tcHJpbWl0aXZlJylcbiAgLCBOVU1CRVIgICAgICA9ICdudW1iZXInO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGhpbnQpe1xuICBpZihoaW50ICE9PSAnc3RyaW5nJyAmJiBoaW50ICE9PSBOVU1CRVIgJiYgaGludCAhPT0gJ2RlZmF1bHQnKXRocm93IFR5cGVFcnJvcignSW5jb3JyZWN0IGhpbnQnKTtcbiAgcmV0dXJuIHRvUHJpbWl0aXZlKGFuT2JqZWN0KHRoaXMpLCBoaW50ICE9IE5VTUJFUik7XG59OyIsIi8vIDcuMi4xIFJlcXVpcmVPYmplY3RDb2VyY2libGUoYXJndW1lbnQpXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGl0KXtcbiAgaWYoaXQgPT0gdW5kZWZpbmVkKXRocm93IFR5cGVFcnJvcihcIkNhbid0IGNhbGwgbWV0aG9kIG9uICBcIiArIGl0KTtcbiAgcmV0dXJuIGl0O1xufTsiLCIvLyBUaGFuaydzIElFOCBmb3IgaGlzIGZ1bm55IGRlZmluZVByb3BlcnR5XG5tb2R1bGUuZXhwb3J0cyA9ICFyZXF1aXJlKCcuL19mYWlscycpKGZ1bmN0aW9uKCl7XG4gIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoe30sICdhJywge2dldDogZnVuY3Rpb24oKXsgcmV0dXJuIDc7IH19KS5hICE9IDc7XG59KTsiLCJ2YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKVxuICAsIGRvY3VtZW50ID0gcmVxdWlyZSgnLi9fZ2xvYmFsJykuZG9jdW1lbnRcbiAgLy8gaW4gb2xkIElFIHR5cGVvZiBkb2N1bWVudC5jcmVhdGVFbGVtZW50IGlzICdvYmplY3QnXG4gICwgaXMgPSBpc09iamVjdChkb2N1bWVudCkgJiYgaXNPYmplY3QoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGl0KXtcbiAgcmV0dXJuIGlzID8gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChpdCkgOiB7fTtcbn07IiwiLy8gSUUgOC0gZG9uJ3QgZW51bSBidWcga2V5c1xubW9kdWxlLmV4cG9ydHMgPSAoXG4gICdjb25zdHJ1Y3RvcixoYXNPd25Qcm9wZXJ0eSxpc1Byb3RvdHlwZU9mLHByb3BlcnR5SXNFbnVtZXJhYmxlLHRvTG9jYWxlU3RyaW5nLHRvU3RyaW5nLHZhbHVlT2YnXG4pLnNwbGl0KCcsJyk7IiwiLy8gYWxsIGVudW1lcmFibGUgb2JqZWN0IGtleXMsIGluY2x1ZGVzIHN5bWJvbHNcbnZhciBnZXRLZXlzID0gcmVxdWlyZSgnLi9fb2JqZWN0LWtleXMnKVxuICAsIGdPUFMgICAgPSByZXF1aXJlKCcuL19vYmplY3QtZ29wcycpXG4gICwgcElFICAgICA9IHJlcXVpcmUoJy4vX29iamVjdC1waWUnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaXQpe1xuICB2YXIgcmVzdWx0ICAgICA9IGdldEtleXMoaXQpXG4gICAgLCBnZXRTeW1ib2xzID0gZ09QUy5mO1xuICBpZihnZXRTeW1ib2xzKXtcbiAgICB2YXIgc3ltYm9scyA9IGdldFN5bWJvbHMoaXQpXG4gICAgICAsIGlzRW51bSAgPSBwSUUuZlxuICAgICAgLCBpICAgICAgID0gMFxuICAgICAgLCBrZXk7XG4gICAgd2hpbGUoc3ltYm9scy5sZW5ndGggPiBpKWlmKGlzRW51bS5jYWxsKGl0LCBrZXkgPSBzeW1ib2xzW2krK10pKXJlc3VsdC5wdXNoKGtleSk7XG4gIH0gcmV0dXJuIHJlc3VsdDtcbn07IiwidmFyIGdsb2JhbCAgICA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpXG4gICwgY29yZSAgICAgID0gcmVxdWlyZSgnLi9fY29yZScpXG4gICwgaGlkZSAgICAgID0gcmVxdWlyZSgnLi9faGlkZScpXG4gICwgcmVkZWZpbmUgID0gcmVxdWlyZSgnLi9fcmVkZWZpbmUnKVxuICAsIGN0eCAgICAgICA9IHJlcXVpcmUoJy4vX2N0eCcpXG4gICwgUFJPVE9UWVBFID0gJ3Byb3RvdHlwZSc7XG5cbnZhciAkZXhwb3J0ID0gZnVuY3Rpb24odHlwZSwgbmFtZSwgc291cmNlKXtcbiAgdmFyIElTX0ZPUkNFRCA9IHR5cGUgJiAkZXhwb3J0LkZcbiAgICAsIElTX0dMT0JBTCA9IHR5cGUgJiAkZXhwb3J0LkdcbiAgICAsIElTX1NUQVRJQyA9IHR5cGUgJiAkZXhwb3J0LlNcbiAgICAsIElTX1BST1RPICA9IHR5cGUgJiAkZXhwb3J0LlBcbiAgICAsIElTX0JJTkQgICA9IHR5cGUgJiAkZXhwb3J0LkJcbiAgICAsIHRhcmdldCAgICA9IElTX0dMT0JBTCA/IGdsb2JhbCA6IElTX1NUQVRJQyA/IGdsb2JhbFtuYW1lXSB8fCAoZ2xvYmFsW25hbWVdID0ge30pIDogKGdsb2JhbFtuYW1lXSB8fCB7fSlbUFJPVE9UWVBFXVxuICAgICwgZXhwb3J0cyAgID0gSVNfR0xPQkFMID8gY29yZSA6IGNvcmVbbmFtZV0gfHwgKGNvcmVbbmFtZV0gPSB7fSlcbiAgICAsIGV4cFByb3RvICA9IGV4cG9ydHNbUFJPVE9UWVBFXSB8fCAoZXhwb3J0c1tQUk9UT1RZUEVdID0ge30pXG4gICAgLCBrZXksIG93biwgb3V0LCBleHA7XG4gIGlmKElTX0dMT0JBTClzb3VyY2UgPSBuYW1lO1xuICBmb3Ioa2V5IGluIHNvdXJjZSl7XG4gICAgLy8gY29udGFpbnMgaW4gbmF0aXZlXG4gICAgb3duID0gIUlTX0ZPUkNFRCAmJiB0YXJnZXQgJiYgdGFyZ2V0W2tleV0gIT09IHVuZGVmaW5lZDtcbiAgICAvLyBleHBvcnQgbmF0aXZlIG9yIHBhc3NlZFxuICAgIG91dCA9IChvd24gPyB0YXJnZXQgOiBzb3VyY2UpW2tleV07XG4gICAgLy8gYmluZCB0aW1lcnMgdG8gZ2xvYmFsIGZvciBjYWxsIGZyb20gZXhwb3J0IGNvbnRleHRcbiAgICBleHAgPSBJU19CSU5EICYmIG93biA/IGN0eChvdXQsIGdsb2JhbCkgOiBJU19QUk9UTyAmJiB0eXBlb2Ygb3V0ID09ICdmdW5jdGlvbicgPyBjdHgoRnVuY3Rpb24uY2FsbCwgb3V0KSA6IG91dDtcbiAgICAvLyBleHRlbmQgZ2xvYmFsXG4gICAgaWYodGFyZ2V0KXJlZGVmaW5lKHRhcmdldCwga2V5LCBvdXQsIHR5cGUgJiAkZXhwb3J0LlUpO1xuICAgIC8vIGV4cG9ydFxuICAgIGlmKGV4cG9ydHNba2V5XSAhPSBvdXQpaGlkZShleHBvcnRzLCBrZXksIGV4cCk7XG4gICAgaWYoSVNfUFJPVE8gJiYgZXhwUHJvdG9ba2V5XSAhPSBvdXQpZXhwUHJvdG9ba2V5XSA9IG91dDtcbiAgfVxufTtcbmdsb2JhbC5jb3JlID0gY29yZTtcbi8vIHR5cGUgYml0bWFwXG4kZXhwb3J0LkYgPSAxOyAgIC8vIGZvcmNlZFxuJGV4cG9ydC5HID0gMjsgICAvLyBnbG9iYWxcbiRleHBvcnQuUyA9IDQ7ICAgLy8gc3RhdGljXG4kZXhwb3J0LlAgPSA4OyAgIC8vIHByb3RvXG4kZXhwb3J0LkIgPSAxNjsgIC8vIGJpbmRcbiRleHBvcnQuVyA9IDMyOyAgLy8gd3JhcFxuJGV4cG9ydC5VID0gNjQ7ICAvLyBzYWZlXG4kZXhwb3J0LlIgPSAxMjg7IC8vIHJlYWwgcHJvdG8gbWV0aG9kIGZvciBgbGlicmFyeWAgXG5tb2R1bGUuZXhwb3J0cyA9ICRleHBvcnQ7IiwidmFyIE1BVENIID0gcmVxdWlyZSgnLi9fd2tzJykoJ21hdGNoJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKEtFWSl7XG4gIHZhciByZSA9IC8uLztcbiAgdHJ5IHtcbiAgICAnLy4vJ1tLRVldKHJlKTtcbiAgfSBjYXRjaChlKXtcbiAgICB0cnkge1xuICAgICAgcmVbTUFUQ0hdID0gZmFsc2U7XG4gICAgICByZXR1cm4gIScvLi8nW0tFWV0ocmUpO1xuICAgIH0gY2F0Y2goZil7IC8qIGVtcHR5ICovIH1cbiAgfSByZXR1cm4gdHJ1ZTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihleGVjKXtcbiAgdHJ5IHtcbiAgICByZXR1cm4gISFleGVjKCk7XG4gIH0gY2F0Y2goZSl7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn07IiwiJ3VzZSBzdHJpY3QnO1xudmFyIGhpZGUgICAgID0gcmVxdWlyZSgnLi9faGlkZScpXG4gICwgcmVkZWZpbmUgPSByZXF1aXJlKCcuL19yZWRlZmluZScpXG4gICwgZmFpbHMgICAgPSByZXF1aXJlKCcuL19mYWlscycpXG4gICwgZGVmaW5lZCAgPSByZXF1aXJlKCcuL19kZWZpbmVkJylcbiAgLCB3a3MgICAgICA9IHJlcXVpcmUoJy4vX3drcycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKEtFWSwgbGVuZ3RoLCBleGVjKXtcbiAgdmFyIFNZTUJPTCAgID0gd2tzKEtFWSlcbiAgICAsIGZucyAgICAgID0gZXhlYyhkZWZpbmVkLCBTWU1CT0wsICcnW0tFWV0pXG4gICAgLCBzdHJmbiAgICA9IGZuc1swXVxuICAgICwgcnhmbiAgICAgPSBmbnNbMV07XG4gIGlmKGZhaWxzKGZ1bmN0aW9uKCl7XG4gICAgdmFyIE8gPSB7fTtcbiAgICBPW1NZTUJPTF0gPSBmdW5jdGlvbigpeyByZXR1cm4gNzsgfTtcbiAgICByZXR1cm4gJydbS0VZXShPKSAhPSA3O1xuICB9KSl7XG4gICAgcmVkZWZpbmUoU3RyaW5nLnByb3RvdHlwZSwgS0VZLCBzdHJmbik7XG4gICAgaGlkZShSZWdFeHAucHJvdG90eXBlLCBTWU1CT0wsIGxlbmd0aCA9PSAyXG4gICAgICAvLyAyMS4yLjUuOCBSZWdFeHAucHJvdG90eXBlW0BAcmVwbGFjZV0oc3RyaW5nLCByZXBsYWNlVmFsdWUpXG4gICAgICAvLyAyMS4yLjUuMTEgUmVnRXhwLnByb3RvdHlwZVtAQHNwbGl0XShzdHJpbmcsIGxpbWl0KVxuICAgICAgPyBmdW5jdGlvbihzdHJpbmcsIGFyZyl7IHJldHVybiByeGZuLmNhbGwoc3RyaW5nLCB0aGlzLCBhcmcpOyB9XG4gICAgICAvLyAyMS4yLjUuNiBSZWdFeHAucHJvdG90eXBlW0BAbWF0Y2hdKHN0cmluZylcbiAgICAgIC8vIDIxLjIuNS45IFJlZ0V4cC5wcm90b3R5cGVbQEBzZWFyY2hdKHN0cmluZylcbiAgICAgIDogZnVuY3Rpb24oc3RyaW5nKXsgcmV0dXJuIHJ4Zm4uY2FsbChzdHJpbmcsIHRoaXMpOyB9XG4gICAgKTtcbiAgfVxufTsiLCIndXNlIHN0cmljdCc7XG4vLyAyMS4yLjUuMyBnZXQgUmVnRXhwLnByb3RvdHlwZS5mbGFnc1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKCl7XG4gIHZhciB0aGF0ICAgPSBhbk9iamVjdCh0aGlzKVxuICAgICwgcmVzdWx0ID0gJyc7XG4gIGlmKHRoYXQuZ2xvYmFsKSAgICAgcmVzdWx0ICs9ICdnJztcbiAgaWYodGhhdC5pZ25vcmVDYXNlKSByZXN1bHQgKz0gJ2knO1xuICBpZih0aGF0Lm11bHRpbGluZSkgIHJlc3VsdCArPSAnbSc7XG4gIGlmKHRoYXQudW5pY29kZSkgICAgcmVzdWx0ICs9ICd1JztcbiAgaWYodGhhdC5zdGlja3kpICAgICByZXN1bHQgKz0gJ3knO1xuICByZXR1cm4gcmVzdWx0O1xufTsiLCJ2YXIgY3R4ICAgICAgICAgPSByZXF1aXJlKCcuL19jdHgnKVxuICAsIGNhbGwgICAgICAgID0gcmVxdWlyZSgnLi9faXRlci1jYWxsJylcbiAgLCBpc0FycmF5SXRlciA9IHJlcXVpcmUoJy4vX2lzLWFycmF5LWl0ZXInKVxuICAsIGFuT2JqZWN0ICAgID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0JylcbiAgLCB0b0xlbmd0aCAgICA9IHJlcXVpcmUoJy4vX3RvLWxlbmd0aCcpXG4gICwgZ2V0SXRlckZuICAgPSByZXF1aXJlKCcuL2NvcmUuZ2V0LWl0ZXJhdG9yLW1ldGhvZCcpXG4gICwgQlJFQUsgICAgICAgPSB7fVxuICAsIFJFVFVSTiAgICAgID0ge307XG52YXIgZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaXRlcmFibGUsIGVudHJpZXMsIGZuLCB0aGF0LCBJVEVSQVRPUil7XG4gIHZhciBpdGVyRm4gPSBJVEVSQVRPUiA/IGZ1bmN0aW9uKCl7IHJldHVybiBpdGVyYWJsZTsgfSA6IGdldEl0ZXJGbihpdGVyYWJsZSlcbiAgICAsIGYgICAgICA9IGN0eChmbiwgdGhhdCwgZW50cmllcyA/IDIgOiAxKVxuICAgICwgaW5kZXggID0gMFxuICAgICwgbGVuZ3RoLCBzdGVwLCBpdGVyYXRvciwgcmVzdWx0O1xuICBpZih0eXBlb2YgaXRlckZuICE9ICdmdW5jdGlvbicpdGhyb3cgVHlwZUVycm9yKGl0ZXJhYmxlICsgJyBpcyBub3QgaXRlcmFibGUhJyk7XG4gIC8vIGZhc3QgY2FzZSBmb3IgYXJyYXlzIHdpdGggZGVmYXVsdCBpdGVyYXRvclxuICBpZihpc0FycmF5SXRlcihpdGVyRm4pKWZvcihsZW5ndGggPSB0b0xlbmd0aChpdGVyYWJsZS5sZW5ndGgpOyBsZW5ndGggPiBpbmRleDsgaW5kZXgrKyl7XG4gICAgcmVzdWx0ID0gZW50cmllcyA/IGYoYW5PYmplY3Qoc3RlcCA9IGl0ZXJhYmxlW2luZGV4XSlbMF0sIHN0ZXBbMV0pIDogZihpdGVyYWJsZVtpbmRleF0pO1xuICAgIGlmKHJlc3VsdCA9PT0gQlJFQUsgfHwgcmVzdWx0ID09PSBSRVRVUk4pcmV0dXJuIHJlc3VsdDtcbiAgfSBlbHNlIGZvcihpdGVyYXRvciA9IGl0ZXJGbi5jYWxsKGl0ZXJhYmxlKTsgIShzdGVwID0gaXRlcmF0b3IubmV4dCgpKS5kb25lOyApe1xuICAgIHJlc3VsdCA9IGNhbGwoaXRlcmF0b3IsIGYsIHN0ZXAudmFsdWUsIGVudHJpZXMpO1xuICAgIGlmKHJlc3VsdCA9PT0gQlJFQUsgfHwgcmVzdWx0ID09PSBSRVRVUk4pcmV0dXJuIHJlc3VsdDtcbiAgfVxufTtcbmV4cG9ydHMuQlJFQUsgID0gQlJFQUs7XG5leHBvcnRzLlJFVFVSTiA9IFJFVFVSTjsiLCIvLyBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9pc3N1ZXMvODYjaXNzdWVjb21tZW50LTExNTc1OTAyOFxudmFyIGdsb2JhbCA9IG1vZHVsZS5leHBvcnRzID0gdHlwZW9mIHdpbmRvdyAhPSAndW5kZWZpbmVkJyAmJiB3aW5kb3cuTWF0aCA9PSBNYXRoXG4gID8gd2luZG93IDogdHlwZW9mIHNlbGYgIT0gJ3VuZGVmaW5lZCcgJiYgc2VsZi5NYXRoID09IE1hdGggPyBzZWxmIDogRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcbmlmKHR5cGVvZiBfX2cgPT0gJ251bWJlcicpX19nID0gZ2xvYmFsOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVuZGVmIiwidmFyIGhhc093blByb3BlcnR5ID0ge30uaGFzT3duUHJvcGVydHk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGl0LCBrZXkpe1xuICByZXR1cm4gaGFzT3duUHJvcGVydHkuY2FsbChpdCwga2V5KTtcbn07IiwidmFyIGRQICAgICAgICAgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKVxuICAsIGNyZWF0ZURlc2MgPSByZXF1aXJlKCcuL19wcm9wZXJ0eS1kZXNjJyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgPyBmdW5jdGlvbihvYmplY3QsIGtleSwgdmFsdWUpe1xuICByZXR1cm4gZFAuZihvYmplY3QsIGtleSwgY3JlYXRlRGVzYygxLCB2YWx1ZSkpO1xufSA6IGZ1bmN0aW9uKG9iamVjdCwga2V5LCB2YWx1ZSl7XG4gIG9iamVjdFtrZXldID0gdmFsdWU7XG4gIHJldHVybiBvYmplY3Q7XG59OyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9fZ2xvYmFsJykuZG9jdW1lbnQgJiYgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50OyIsIm1vZHVsZS5leHBvcnRzID0gIXJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgJiYgIXJlcXVpcmUoJy4vX2ZhaWxzJykoZnVuY3Rpb24oKXtcbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZXF1aXJlKCcuL19kb20tY3JlYXRlJykoJ2RpdicpLCAnYScsIHtnZXQ6IGZ1bmN0aW9uKCl7IHJldHVybiA3OyB9fSkuYSAhPSA3O1xufSk7IiwidmFyIGlzT2JqZWN0ICAgICAgID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0JylcbiAgLCBzZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoJy4vX3NldC1wcm90bycpLnNldDtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24odGhhdCwgdGFyZ2V0LCBDKXtcbiAgdmFyIFAsIFMgPSB0YXJnZXQuY29uc3RydWN0b3I7XG4gIGlmKFMgIT09IEMgJiYgdHlwZW9mIFMgPT0gJ2Z1bmN0aW9uJyAmJiAoUCA9IFMucHJvdG90eXBlKSAhPT0gQy5wcm90b3R5cGUgJiYgaXNPYmplY3QoUCkgJiYgc2V0UHJvdG90eXBlT2Ype1xuICAgIHNldFByb3RvdHlwZU9mKHRoYXQsIFApO1xuICB9IHJldHVybiB0aGF0O1xufTsiLCIvLyBmYXN0IGFwcGx5LCBodHRwOi8vanNwZXJmLmxua2l0LmNvbS9mYXN0LWFwcGx5LzVcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oZm4sIGFyZ3MsIHRoYXQpe1xuICB2YXIgdW4gPSB0aGF0ID09PSB1bmRlZmluZWQ7XG4gIHN3aXRjaChhcmdzLmxlbmd0aCl7XG4gICAgY2FzZSAwOiByZXR1cm4gdW4gPyBmbigpXG4gICAgICAgICAgICAgICAgICAgICAgOiBmbi5jYWxsKHRoYXQpO1xuICAgIGNhc2UgMTogcmV0dXJuIHVuID8gZm4oYXJnc1swXSlcbiAgICAgICAgICAgICAgICAgICAgICA6IGZuLmNhbGwodGhhdCwgYXJnc1swXSk7XG4gICAgY2FzZSAyOiByZXR1cm4gdW4gPyBmbihhcmdzWzBdLCBhcmdzWzFdKVxuICAgICAgICAgICAgICAgICAgICAgIDogZm4uY2FsbCh0aGF0LCBhcmdzWzBdLCBhcmdzWzFdKTtcbiAgICBjYXNlIDM6IHJldHVybiB1biA/IGZuKGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0pXG4gICAgICAgICAgICAgICAgICAgICAgOiBmbi5jYWxsKHRoYXQsIGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0pO1xuICAgIGNhc2UgNDogcmV0dXJuIHVuID8gZm4oYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSwgYXJnc1szXSlcbiAgICAgICAgICAgICAgICAgICAgICA6IGZuLmNhbGwodGhhdCwgYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSwgYXJnc1szXSk7XG4gIH0gcmV0dXJuICAgICAgICAgICAgICBmbi5hcHBseSh0aGF0LCBhcmdzKTtcbn07IiwiLy8gZmFsbGJhY2sgZm9yIG5vbi1hcnJheS1saWtlIEVTMyBhbmQgbm9uLWVudW1lcmFibGUgb2xkIFY4IHN0cmluZ3NcbnZhciBjb2YgPSByZXF1aXJlKCcuL19jb2YnKTtcbm1vZHVsZS5leHBvcnRzID0gT2JqZWN0KCd6JykucHJvcGVydHlJc0VudW1lcmFibGUoMCkgPyBPYmplY3QgOiBmdW5jdGlvbihpdCl7XG4gIHJldHVybiBjb2YoaXQpID09ICdTdHJpbmcnID8gaXQuc3BsaXQoJycpIDogT2JqZWN0KGl0KTtcbn07IiwiLy8gY2hlY2sgb24gZGVmYXVsdCBBcnJheSBpdGVyYXRvclxudmFyIEl0ZXJhdG9ycyAgPSByZXF1aXJlKCcuL19pdGVyYXRvcnMnKVxuICAsIElURVJBVE9SICAgPSByZXF1aXJlKCcuL193a3MnKSgnaXRlcmF0b3InKVxuICAsIEFycmF5UHJvdG8gPSBBcnJheS5wcm90b3R5cGU7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaXQpe1xuICByZXR1cm4gaXQgIT09IHVuZGVmaW5lZCAmJiAoSXRlcmF0b3JzLkFycmF5ID09PSBpdCB8fCBBcnJheVByb3RvW0lURVJBVE9SXSA9PT0gaXQpO1xufTsiLCIvLyA3LjIuMiBJc0FycmF5KGFyZ3VtZW50KVxudmFyIGNvZiA9IHJlcXVpcmUoJy4vX2NvZicpO1xubW9kdWxlLmV4cG9ydHMgPSBBcnJheS5pc0FycmF5IHx8IGZ1bmN0aW9uIGlzQXJyYXkoYXJnKXtcbiAgcmV0dXJuIGNvZihhcmcpID09ICdBcnJheSc7XG59OyIsIi8vIDIwLjEuMi4zIE51bWJlci5pc0ludGVnZXIobnVtYmVyKVxudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0JylcbiAgLCBmbG9vciAgICA9IE1hdGguZmxvb3I7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGlzSW50ZWdlcihpdCl7XG4gIHJldHVybiAhaXNPYmplY3QoaXQpICYmIGlzRmluaXRlKGl0KSAmJiBmbG9vcihpdCkgPT09IGl0O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGl0KXtcbiAgcmV0dXJuIHR5cGVvZiBpdCA9PT0gJ29iamVjdCcgPyBpdCAhPT0gbnVsbCA6IHR5cGVvZiBpdCA9PT0gJ2Z1bmN0aW9uJztcbn07IiwiLy8gNy4yLjggSXNSZWdFeHAoYXJndW1lbnQpXG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKVxuICAsIGNvZiAgICAgID0gcmVxdWlyZSgnLi9fY29mJylcbiAgLCBNQVRDSCAgICA9IHJlcXVpcmUoJy4vX3drcycpKCdtYXRjaCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihpdCl7XG4gIHZhciBpc1JlZ0V4cDtcbiAgcmV0dXJuIGlzT2JqZWN0KGl0KSAmJiAoKGlzUmVnRXhwID0gaXRbTUFUQ0hdKSAhPT0gdW5kZWZpbmVkID8gISFpc1JlZ0V4cCA6IGNvZihpdCkgPT0gJ1JlZ0V4cCcpO1xufTsiLCIvLyBjYWxsIHNvbWV0aGluZyBvbiBpdGVyYXRvciBzdGVwIHdpdGggc2FmZSBjbG9zaW5nIG9uIGVycm9yXG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaXRlcmF0b3IsIGZuLCB2YWx1ZSwgZW50cmllcyl7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGVudHJpZXMgPyBmbihhbk9iamVjdCh2YWx1ZSlbMF0sIHZhbHVlWzFdKSA6IGZuKHZhbHVlKTtcbiAgLy8gNy40LjYgSXRlcmF0b3JDbG9zZShpdGVyYXRvciwgY29tcGxldGlvbilcbiAgfSBjYXRjaChlKXtcbiAgICB2YXIgcmV0ID0gaXRlcmF0b3JbJ3JldHVybiddO1xuICAgIGlmKHJldCAhPT0gdW5kZWZpbmVkKWFuT2JqZWN0KHJldC5jYWxsKGl0ZXJhdG9yKSk7XG4gICAgdGhyb3cgZTtcbiAgfVxufTsiLCIndXNlIHN0cmljdCc7XG52YXIgY3JlYXRlICAgICAgICAgPSByZXF1aXJlKCcuL19vYmplY3QtY3JlYXRlJylcbiAgLCBkZXNjcmlwdG9yICAgICA9IHJlcXVpcmUoJy4vX3Byb3BlcnR5LWRlc2MnKVxuICAsIHNldFRvU3RyaW5nVGFnID0gcmVxdWlyZSgnLi9fc2V0LXRvLXN0cmluZy10YWcnKVxuICAsIEl0ZXJhdG9yUHJvdG90eXBlID0ge307XG5cbi8vIDI1LjEuMi4xLjEgJUl0ZXJhdG9yUHJvdG90eXBlJVtAQGl0ZXJhdG9yXSgpXG5yZXF1aXJlKCcuL19oaWRlJykoSXRlcmF0b3JQcm90b3R5cGUsIHJlcXVpcmUoJy4vX3drcycpKCdpdGVyYXRvcicpLCBmdW5jdGlvbigpeyByZXR1cm4gdGhpczsgfSk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oQ29uc3RydWN0b3IsIE5BTUUsIG5leHQpe1xuICBDb25zdHJ1Y3Rvci5wcm90b3R5cGUgPSBjcmVhdGUoSXRlcmF0b3JQcm90b3R5cGUsIHtuZXh0OiBkZXNjcmlwdG9yKDEsIG5leHQpfSk7XG4gIHNldFRvU3RyaW5nVGFnKENvbnN0cnVjdG9yLCBOQU1FICsgJyBJdGVyYXRvcicpO1xufTsiLCIndXNlIHN0cmljdCc7XG52YXIgTElCUkFSWSAgICAgICAgPSByZXF1aXJlKCcuL19saWJyYXJ5JylcbiAgLCAkZXhwb3J0ICAgICAgICA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpXG4gICwgcmVkZWZpbmUgICAgICAgPSByZXF1aXJlKCcuL19yZWRlZmluZScpXG4gICwgaGlkZSAgICAgICAgICAgPSByZXF1aXJlKCcuL19oaWRlJylcbiAgLCBoYXMgICAgICAgICAgICA9IHJlcXVpcmUoJy4vX2hhcycpXG4gICwgSXRlcmF0b3JzICAgICAgPSByZXF1aXJlKCcuL19pdGVyYXRvcnMnKVxuICAsICRpdGVyQ3JlYXRlICAgID0gcmVxdWlyZSgnLi9faXRlci1jcmVhdGUnKVxuICAsIHNldFRvU3RyaW5nVGFnID0gcmVxdWlyZSgnLi9fc2V0LXRvLXN0cmluZy10YWcnKVxuICAsIGdldFByb3RvdHlwZU9mID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdwbycpXG4gICwgSVRFUkFUT1IgICAgICAgPSByZXF1aXJlKCcuL193a3MnKSgnaXRlcmF0b3InKVxuICAsIEJVR0dZICAgICAgICAgID0gIShbXS5rZXlzICYmICduZXh0JyBpbiBbXS5rZXlzKCkpIC8vIFNhZmFyaSBoYXMgYnVnZ3kgaXRlcmF0b3JzIHcvbyBgbmV4dGBcbiAgLCBGRl9JVEVSQVRPUiAgICA9ICdAQGl0ZXJhdG9yJ1xuICAsIEtFWVMgICAgICAgICAgID0gJ2tleXMnXG4gICwgVkFMVUVTICAgICAgICAgPSAndmFsdWVzJztcblxudmFyIHJldHVyblRoaXMgPSBmdW5jdGlvbigpeyByZXR1cm4gdGhpczsgfTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihCYXNlLCBOQU1FLCBDb25zdHJ1Y3RvciwgbmV4dCwgREVGQVVMVCwgSVNfU0VULCBGT1JDRUQpe1xuICAkaXRlckNyZWF0ZShDb25zdHJ1Y3RvciwgTkFNRSwgbmV4dCk7XG4gIHZhciBnZXRNZXRob2QgPSBmdW5jdGlvbihraW5kKXtcbiAgICBpZighQlVHR1kgJiYga2luZCBpbiBwcm90bylyZXR1cm4gcHJvdG9ba2luZF07XG4gICAgc3dpdGNoKGtpbmQpe1xuICAgICAgY2FzZSBLRVlTOiByZXR1cm4gZnVuY3Rpb24ga2V5cygpeyByZXR1cm4gbmV3IENvbnN0cnVjdG9yKHRoaXMsIGtpbmQpOyB9O1xuICAgICAgY2FzZSBWQUxVRVM6IHJldHVybiBmdW5jdGlvbiB2YWx1ZXMoKXsgcmV0dXJuIG5ldyBDb25zdHJ1Y3Rvcih0aGlzLCBraW5kKTsgfTtcbiAgICB9IHJldHVybiBmdW5jdGlvbiBlbnRyaWVzKCl7IHJldHVybiBuZXcgQ29uc3RydWN0b3IodGhpcywga2luZCk7IH07XG4gIH07XG4gIHZhciBUQUcgICAgICAgID0gTkFNRSArICcgSXRlcmF0b3InXG4gICAgLCBERUZfVkFMVUVTID0gREVGQVVMVCA9PSBWQUxVRVNcbiAgICAsIFZBTFVFU19CVUcgPSBmYWxzZVxuICAgICwgcHJvdG8gICAgICA9IEJhc2UucHJvdG90eXBlXG4gICAgLCAkbmF0aXZlICAgID0gcHJvdG9bSVRFUkFUT1JdIHx8IHByb3RvW0ZGX0lURVJBVE9SXSB8fCBERUZBVUxUICYmIHByb3RvW0RFRkFVTFRdXG4gICAgLCAkZGVmYXVsdCAgID0gJG5hdGl2ZSB8fCBnZXRNZXRob2QoREVGQVVMVClcbiAgICAsICRlbnRyaWVzICAgPSBERUZBVUxUID8gIURFRl9WQUxVRVMgPyAkZGVmYXVsdCA6IGdldE1ldGhvZCgnZW50cmllcycpIDogdW5kZWZpbmVkXG4gICAgLCAkYW55TmF0aXZlID0gTkFNRSA9PSAnQXJyYXknID8gcHJvdG8uZW50cmllcyB8fCAkbmF0aXZlIDogJG5hdGl2ZVxuICAgICwgbWV0aG9kcywga2V5LCBJdGVyYXRvclByb3RvdHlwZTtcbiAgLy8gRml4IG5hdGl2ZVxuICBpZigkYW55TmF0aXZlKXtcbiAgICBJdGVyYXRvclByb3RvdHlwZSA9IGdldFByb3RvdHlwZU9mKCRhbnlOYXRpdmUuY2FsbChuZXcgQmFzZSkpO1xuICAgIGlmKEl0ZXJhdG9yUHJvdG90eXBlICE9PSBPYmplY3QucHJvdG90eXBlKXtcbiAgICAgIC8vIFNldCBAQHRvU3RyaW5nVGFnIHRvIG5hdGl2ZSBpdGVyYXRvcnNcbiAgICAgIHNldFRvU3RyaW5nVGFnKEl0ZXJhdG9yUHJvdG90eXBlLCBUQUcsIHRydWUpO1xuICAgICAgLy8gZml4IGZvciBzb21lIG9sZCBlbmdpbmVzXG4gICAgICBpZighTElCUkFSWSAmJiAhaGFzKEl0ZXJhdG9yUHJvdG90eXBlLCBJVEVSQVRPUikpaGlkZShJdGVyYXRvclByb3RvdHlwZSwgSVRFUkFUT1IsIHJldHVyblRoaXMpO1xuICAgIH1cbiAgfVxuICAvLyBmaXggQXJyYXkje3ZhbHVlcywgQEBpdGVyYXRvcn0ubmFtZSBpbiBWOCAvIEZGXG4gIGlmKERFRl9WQUxVRVMgJiYgJG5hdGl2ZSAmJiAkbmF0aXZlLm5hbWUgIT09IFZBTFVFUyl7XG4gICAgVkFMVUVTX0JVRyA9IHRydWU7XG4gICAgJGRlZmF1bHQgPSBmdW5jdGlvbiB2YWx1ZXMoKXsgcmV0dXJuICRuYXRpdmUuY2FsbCh0aGlzKTsgfTtcbiAgfVxuICAvLyBEZWZpbmUgaXRlcmF0b3JcbiAgaWYoKCFMSUJSQVJZIHx8IEZPUkNFRCkgJiYgKEJVR0dZIHx8IFZBTFVFU19CVUcgfHwgIXByb3RvW0lURVJBVE9SXSkpe1xuICAgIGhpZGUocHJvdG8sIElURVJBVE9SLCAkZGVmYXVsdCk7XG4gIH1cbiAgLy8gUGx1ZyBmb3IgbGlicmFyeVxuICBJdGVyYXRvcnNbTkFNRV0gPSAkZGVmYXVsdDtcbiAgSXRlcmF0b3JzW1RBR10gID0gcmV0dXJuVGhpcztcbiAgaWYoREVGQVVMVCl7XG4gICAgbWV0aG9kcyA9IHtcbiAgICAgIHZhbHVlczogIERFRl9WQUxVRVMgPyAkZGVmYXVsdCA6IGdldE1ldGhvZChWQUxVRVMpLFxuICAgICAga2V5czogICAgSVNfU0VUICAgICA/ICRkZWZhdWx0IDogZ2V0TWV0aG9kKEtFWVMpLFxuICAgICAgZW50cmllczogJGVudHJpZXNcbiAgICB9O1xuICAgIGlmKEZPUkNFRClmb3Ioa2V5IGluIG1ldGhvZHMpe1xuICAgICAgaWYoIShrZXkgaW4gcHJvdG8pKXJlZGVmaW5lKHByb3RvLCBrZXksIG1ldGhvZHNba2V5XSk7XG4gICAgfSBlbHNlICRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5GICogKEJVR0dZIHx8IFZBTFVFU19CVUcpLCBOQU1FLCBtZXRob2RzKTtcbiAgfVxuICByZXR1cm4gbWV0aG9kcztcbn07IiwidmFyIElURVJBVE9SICAgICA9IHJlcXVpcmUoJy4vX3drcycpKCdpdGVyYXRvcicpXG4gICwgU0FGRV9DTE9TSU5HID0gZmFsc2U7XG5cbnRyeSB7XG4gIHZhciByaXRlciA9IFs3XVtJVEVSQVRPUl0oKTtcbiAgcml0ZXJbJ3JldHVybiddID0gZnVuY3Rpb24oKXsgU0FGRV9DTE9TSU5HID0gdHJ1ZTsgfTtcbiAgQXJyYXkuZnJvbShyaXRlciwgZnVuY3Rpb24oKXsgdGhyb3cgMjsgfSk7XG59IGNhdGNoKGUpeyAvKiBlbXB0eSAqLyB9XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oZXhlYywgc2tpcENsb3Npbmcpe1xuICBpZighc2tpcENsb3NpbmcgJiYgIVNBRkVfQ0xPU0lORylyZXR1cm4gZmFsc2U7XG4gIHZhciBzYWZlID0gZmFsc2U7XG4gIHRyeSB7XG4gICAgdmFyIGFyciAgPSBbN11cbiAgICAgICwgaXRlciA9IGFycltJVEVSQVRPUl0oKTtcbiAgICBpdGVyLm5leHQgPSBmdW5jdGlvbigpeyByZXR1cm4ge2RvbmU6IHNhZmUgPSB0cnVlfTsgfTtcbiAgICBhcnJbSVRFUkFUT1JdID0gZnVuY3Rpb24oKXsgcmV0dXJuIGl0ZXI7IH07XG4gICAgZXhlYyhhcnIpO1xuICB9IGNhdGNoKGUpeyAvKiBlbXB0eSAqLyB9XG4gIHJldHVybiBzYWZlO1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGRvbmUsIHZhbHVlKXtcbiAgcmV0dXJuIHt2YWx1ZTogdmFsdWUsIGRvbmU6ICEhZG9uZX07XG59OyIsIm1vZHVsZS5leHBvcnRzID0ge307IiwidmFyIGdldEtleXMgICA9IHJlcXVpcmUoJy4vX29iamVjdC1rZXlzJylcbiAgLCB0b0lPYmplY3QgPSByZXF1aXJlKCcuL190by1pb2JqZWN0Jyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKG9iamVjdCwgZWwpe1xuICB2YXIgTyAgICAgID0gdG9JT2JqZWN0KG9iamVjdClcbiAgICAsIGtleXMgICA9IGdldEtleXMoTylcbiAgICAsIGxlbmd0aCA9IGtleXMubGVuZ3RoXG4gICAgLCBpbmRleCAgPSAwXG4gICAgLCBrZXk7XG4gIHdoaWxlKGxlbmd0aCA+IGluZGV4KWlmKE9ba2V5ID0ga2V5c1tpbmRleCsrXV0gPT09IGVsKXJldHVybiBrZXk7XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZmFsc2U7IiwiLy8gMjAuMi4yLjE0IE1hdGguZXhwbTEoeClcbnZhciAkZXhwbTEgPSBNYXRoLmV4cG0xO1xubW9kdWxlLmV4cG9ydHMgPSAoISRleHBtMVxuICAvLyBPbGQgRkYgYnVnXG4gIHx8ICRleHBtMSgxMCkgPiAyMjAyNS40NjU3OTQ4MDY3MTkgfHwgJGV4cG0xKDEwKSA8IDIyMDI1LjQ2NTc5NDgwNjcxNjUxNjhcbiAgLy8gVG9yIEJyb3dzZXIgYnVnXG4gIHx8ICRleHBtMSgtMmUtMTcpICE9IC0yZS0xN1xuKSA/IGZ1bmN0aW9uIGV4cG0xKHgpe1xuICByZXR1cm4gKHggPSAreCkgPT0gMCA/IHggOiB4ID4gLTFlLTYgJiYgeCA8IDFlLTYgPyB4ICsgeCAqIHggLyAyIDogTWF0aC5leHAoeCkgLSAxO1xufSA6ICRleHBtMTsiLCIvLyAyMC4yLjIuMjAgTWF0aC5sb2cxcCh4KVxubW9kdWxlLmV4cG9ydHMgPSBNYXRoLmxvZzFwIHx8IGZ1bmN0aW9uIGxvZzFwKHgpe1xuICByZXR1cm4gKHggPSAreCkgPiAtMWUtOCAmJiB4IDwgMWUtOCA/IHggLSB4ICogeCAvIDIgOiBNYXRoLmxvZygxICsgeCk7XG59OyIsIi8vIDIwLjIuMi4yOCBNYXRoLnNpZ24oeClcbm1vZHVsZS5leHBvcnRzID0gTWF0aC5zaWduIHx8IGZ1bmN0aW9uIHNpZ24oeCl7XG4gIHJldHVybiAoeCA9ICt4KSA9PSAwIHx8IHggIT0geCA/IHggOiB4IDwgMCA/IC0xIDogMTtcbn07IiwidmFyIE1FVEEgICAgID0gcmVxdWlyZSgnLi9fdWlkJykoJ21ldGEnKVxuICAsIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0JylcbiAgLCBoYXMgICAgICA9IHJlcXVpcmUoJy4vX2hhcycpXG4gICwgc2V0RGVzYyAgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKS5mXG4gICwgaWQgICAgICAgPSAwO1xudmFyIGlzRXh0ZW5zaWJsZSA9IE9iamVjdC5pc0V4dGVuc2libGUgfHwgZnVuY3Rpb24oKXtcbiAgcmV0dXJuIHRydWU7XG59O1xudmFyIEZSRUVaRSA9ICFyZXF1aXJlKCcuL19mYWlscycpKGZ1bmN0aW9uKCl7XG4gIHJldHVybiBpc0V4dGVuc2libGUoT2JqZWN0LnByZXZlbnRFeHRlbnNpb25zKHt9KSk7XG59KTtcbnZhciBzZXRNZXRhID0gZnVuY3Rpb24oaXQpe1xuICBzZXREZXNjKGl0LCBNRVRBLCB7dmFsdWU6IHtcbiAgICBpOiAnTycgKyArK2lkLCAvLyBvYmplY3QgSURcbiAgICB3OiB7fSAgICAgICAgICAvLyB3ZWFrIGNvbGxlY3Rpb25zIElEc1xuICB9fSk7XG59O1xudmFyIGZhc3RLZXkgPSBmdW5jdGlvbihpdCwgY3JlYXRlKXtcbiAgLy8gcmV0dXJuIHByaW1pdGl2ZSB3aXRoIHByZWZpeFxuICBpZighaXNPYmplY3QoaXQpKXJldHVybiB0eXBlb2YgaXQgPT0gJ3N5bWJvbCcgPyBpdCA6ICh0eXBlb2YgaXQgPT0gJ3N0cmluZycgPyAnUycgOiAnUCcpICsgaXQ7XG4gIGlmKCFoYXMoaXQsIE1FVEEpKXtcbiAgICAvLyBjYW4ndCBzZXQgbWV0YWRhdGEgdG8gdW5jYXVnaHQgZnJvemVuIG9iamVjdFxuICAgIGlmKCFpc0V4dGVuc2libGUoaXQpKXJldHVybiAnRic7XG4gICAgLy8gbm90IG5lY2Vzc2FyeSB0byBhZGQgbWV0YWRhdGFcbiAgICBpZighY3JlYXRlKXJldHVybiAnRSc7XG4gICAgLy8gYWRkIG1pc3NpbmcgbWV0YWRhdGFcbiAgICBzZXRNZXRhKGl0KTtcbiAgLy8gcmV0dXJuIG9iamVjdCBJRFxuICB9IHJldHVybiBpdFtNRVRBXS5pO1xufTtcbnZhciBnZXRXZWFrID0gZnVuY3Rpb24oaXQsIGNyZWF0ZSl7XG4gIGlmKCFoYXMoaXQsIE1FVEEpKXtcbiAgICAvLyBjYW4ndCBzZXQgbWV0YWRhdGEgdG8gdW5jYXVnaHQgZnJvemVuIG9iamVjdFxuICAgIGlmKCFpc0V4dGVuc2libGUoaXQpKXJldHVybiB0cnVlO1xuICAgIC8vIG5vdCBuZWNlc3NhcnkgdG8gYWRkIG1ldGFkYXRhXG4gICAgaWYoIWNyZWF0ZSlyZXR1cm4gZmFsc2U7XG4gICAgLy8gYWRkIG1pc3NpbmcgbWV0YWRhdGFcbiAgICBzZXRNZXRhKGl0KTtcbiAgLy8gcmV0dXJuIGhhc2ggd2VhayBjb2xsZWN0aW9ucyBJRHNcbiAgfSByZXR1cm4gaXRbTUVUQV0udztcbn07XG4vLyBhZGQgbWV0YWRhdGEgb24gZnJlZXplLWZhbWlseSBtZXRob2RzIGNhbGxpbmdcbnZhciBvbkZyZWV6ZSA9IGZ1bmN0aW9uKGl0KXtcbiAgaWYoRlJFRVpFICYmIG1ldGEuTkVFRCAmJiBpc0V4dGVuc2libGUoaXQpICYmICFoYXMoaXQsIE1FVEEpKXNldE1ldGEoaXQpO1xuICByZXR1cm4gaXQ7XG59O1xudmFyIG1ldGEgPSBtb2R1bGUuZXhwb3J0cyA9IHtcbiAgS0VZOiAgICAgIE1FVEEsXG4gIE5FRUQ6ICAgICBmYWxzZSxcbiAgZmFzdEtleTogIGZhc3RLZXksXG4gIGdldFdlYWs6ICBnZXRXZWFrLFxuICBvbkZyZWV6ZTogb25GcmVlemVcbn07IiwidmFyIE1hcCAgICAgPSByZXF1aXJlKCcuL2VzNi5tYXAnKVxuICAsICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKVxuICAsIHNoYXJlZCAgPSByZXF1aXJlKCcuL19zaGFyZWQnKSgnbWV0YWRhdGEnKVxuICAsIHN0b3JlICAgPSBzaGFyZWQuc3RvcmUgfHwgKHNoYXJlZC5zdG9yZSA9IG5ldyAocmVxdWlyZSgnLi9lczYud2Vhay1tYXAnKSkpO1xuXG52YXIgZ2V0T3JDcmVhdGVNZXRhZGF0YU1hcCA9IGZ1bmN0aW9uKHRhcmdldCwgdGFyZ2V0S2V5LCBjcmVhdGUpe1xuICB2YXIgdGFyZ2V0TWV0YWRhdGEgPSBzdG9yZS5nZXQodGFyZ2V0KTtcbiAgaWYoIXRhcmdldE1ldGFkYXRhKXtcbiAgICBpZighY3JlYXRlKXJldHVybiB1bmRlZmluZWQ7XG4gICAgc3RvcmUuc2V0KHRhcmdldCwgdGFyZ2V0TWV0YWRhdGEgPSBuZXcgTWFwKTtcbiAgfVxuICB2YXIga2V5TWV0YWRhdGEgPSB0YXJnZXRNZXRhZGF0YS5nZXQodGFyZ2V0S2V5KTtcbiAgaWYoIWtleU1ldGFkYXRhKXtcbiAgICBpZighY3JlYXRlKXJldHVybiB1bmRlZmluZWQ7XG4gICAgdGFyZ2V0TWV0YWRhdGEuc2V0KHRhcmdldEtleSwga2V5TWV0YWRhdGEgPSBuZXcgTWFwKTtcbiAgfSByZXR1cm4ga2V5TWV0YWRhdGE7XG59O1xudmFyIG9yZGluYXJ5SGFzT3duTWV0YWRhdGEgPSBmdW5jdGlvbihNZXRhZGF0YUtleSwgTywgUCl7XG4gIHZhciBtZXRhZGF0YU1hcCA9IGdldE9yQ3JlYXRlTWV0YWRhdGFNYXAoTywgUCwgZmFsc2UpO1xuICByZXR1cm4gbWV0YWRhdGFNYXAgPT09IHVuZGVmaW5lZCA/IGZhbHNlIDogbWV0YWRhdGFNYXAuaGFzKE1ldGFkYXRhS2V5KTtcbn07XG52YXIgb3JkaW5hcnlHZXRPd25NZXRhZGF0YSA9IGZ1bmN0aW9uKE1ldGFkYXRhS2V5LCBPLCBQKXtcbiAgdmFyIG1ldGFkYXRhTWFwID0gZ2V0T3JDcmVhdGVNZXRhZGF0YU1hcChPLCBQLCBmYWxzZSk7XG4gIHJldHVybiBtZXRhZGF0YU1hcCA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogbWV0YWRhdGFNYXAuZ2V0KE1ldGFkYXRhS2V5KTtcbn07XG52YXIgb3JkaW5hcnlEZWZpbmVPd25NZXRhZGF0YSA9IGZ1bmN0aW9uKE1ldGFkYXRhS2V5LCBNZXRhZGF0YVZhbHVlLCBPLCBQKXtcbiAgZ2V0T3JDcmVhdGVNZXRhZGF0YU1hcChPLCBQLCB0cnVlKS5zZXQoTWV0YWRhdGFLZXksIE1ldGFkYXRhVmFsdWUpO1xufTtcbnZhciBvcmRpbmFyeU93bk1ldGFkYXRhS2V5cyA9IGZ1bmN0aW9uKHRhcmdldCwgdGFyZ2V0S2V5KXtcbiAgdmFyIG1ldGFkYXRhTWFwID0gZ2V0T3JDcmVhdGVNZXRhZGF0YU1hcCh0YXJnZXQsIHRhcmdldEtleSwgZmFsc2UpXG4gICAgLCBrZXlzICAgICAgICA9IFtdO1xuICBpZihtZXRhZGF0YU1hcCltZXRhZGF0YU1hcC5mb3JFYWNoKGZ1bmN0aW9uKF8sIGtleSl7IGtleXMucHVzaChrZXkpOyB9KTtcbiAgcmV0dXJuIGtleXM7XG59O1xudmFyIHRvTWV0YUtleSA9IGZ1bmN0aW9uKGl0KXtcbiAgcmV0dXJuIGl0ID09PSB1bmRlZmluZWQgfHwgdHlwZW9mIGl0ID09ICdzeW1ib2wnID8gaXQgOiBTdHJpbmcoaXQpO1xufTtcbnZhciBleHAgPSBmdW5jdGlvbihPKXtcbiAgJGV4cG9ydCgkZXhwb3J0LlMsICdSZWZsZWN0JywgTyk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgc3RvcmU6IHN0b3JlLFxuICBtYXA6IGdldE9yQ3JlYXRlTWV0YWRhdGFNYXAsXG4gIGhhczogb3JkaW5hcnlIYXNPd25NZXRhZGF0YSxcbiAgZ2V0OiBvcmRpbmFyeUdldE93bk1ldGFkYXRhLFxuICBzZXQ6IG9yZGluYXJ5RGVmaW5lT3duTWV0YWRhdGEsXG4gIGtleXM6IG9yZGluYXJ5T3duTWV0YWRhdGFLZXlzLFxuICBrZXk6IHRvTWV0YUtleSxcbiAgZXhwOiBleHBcbn07IiwidmFyIGdsb2JhbCAgICA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpXG4gICwgbWFjcm90YXNrID0gcmVxdWlyZSgnLi9fdGFzaycpLnNldFxuICAsIE9ic2VydmVyICA9IGdsb2JhbC5NdXRhdGlvbk9ic2VydmVyIHx8IGdsb2JhbC5XZWJLaXRNdXRhdGlvbk9ic2VydmVyXG4gICwgcHJvY2VzcyAgID0gZ2xvYmFsLnByb2Nlc3NcbiAgLCBQcm9taXNlICAgPSBnbG9iYWwuUHJvbWlzZVxuICAsIGlzTm9kZSAgICA9IHJlcXVpcmUoJy4vX2NvZicpKHByb2Nlc3MpID09ICdwcm9jZXNzJztcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbigpe1xuICB2YXIgaGVhZCwgbGFzdCwgbm90aWZ5O1xuXG4gIHZhciBmbHVzaCA9IGZ1bmN0aW9uKCl7XG4gICAgdmFyIHBhcmVudCwgZm47XG4gICAgaWYoaXNOb2RlICYmIChwYXJlbnQgPSBwcm9jZXNzLmRvbWFpbikpcGFyZW50LmV4aXQoKTtcbiAgICB3aGlsZShoZWFkKXtcbiAgICAgIGZuICAgPSBoZWFkLmZuO1xuICAgICAgaGVhZCA9IGhlYWQubmV4dDtcbiAgICAgIHRyeSB7XG4gICAgICAgIGZuKCk7XG4gICAgICB9IGNhdGNoKGUpe1xuICAgICAgICBpZihoZWFkKW5vdGlmeSgpO1xuICAgICAgICBlbHNlIGxhc3QgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRocm93IGU7XG4gICAgICB9XG4gICAgfSBsYXN0ID0gdW5kZWZpbmVkO1xuICAgIGlmKHBhcmVudClwYXJlbnQuZW50ZXIoKTtcbiAgfTtcblxuICAvLyBOb2RlLmpzXG4gIGlmKGlzTm9kZSl7XG4gICAgbm90aWZ5ID0gZnVuY3Rpb24oKXtcbiAgICAgIHByb2Nlc3MubmV4dFRpY2soZmx1c2gpO1xuICAgIH07XG4gIC8vIGJyb3dzZXJzIHdpdGggTXV0YXRpb25PYnNlcnZlclxuICB9IGVsc2UgaWYoT2JzZXJ2ZXIpe1xuICAgIHZhciB0b2dnbGUgPSB0cnVlXG4gICAgICAsIG5vZGUgICA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCcnKTtcbiAgICBuZXcgT2JzZXJ2ZXIoZmx1c2gpLm9ic2VydmUobm9kZSwge2NoYXJhY3RlckRhdGE6IHRydWV9KTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXdcbiAgICBub3RpZnkgPSBmdW5jdGlvbigpe1xuICAgICAgbm9kZS5kYXRhID0gdG9nZ2xlID0gIXRvZ2dsZTtcbiAgICB9O1xuICAvLyBlbnZpcm9ubWVudHMgd2l0aCBtYXliZSBub24tY29tcGxldGVseSBjb3JyZWN0LCBidXQgZXhpc3RlbnQgUHJvbWlzZVxuICB9IGVsc2UgaWYoUHJvbWlzZSAmJiBQcm9taXNlLnJlc29sdmUpe1xuICAgIHZhciBwcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgbm90aWZ5ID0gZnVuY3Rpb24oKXtcbiAgICAgIHByb21pc2UudGhlbihmbHVzaCk7XG4gICAgfTtcbiAgLy8gZm9yIG90aGVyIGVudmlyb25tZW50cyAtIG1hY3JvdGFzayBiYXNlZCBvbjpcbiAgLy8gLSBzZXRJbW1lZGlhdGVcbiAgLy8gLSBNZXNzYWdlQ2hhbm5lbFxuICAvLyAtIHdpbmRvdy5wb3N0TWVzc2FnXG4gIC8vIC0gb25yZWFkeXN0YXRlY2hhbmdlXG4gIC8vIC0gc2V0VGltZW91dFxuICB9IGVsc2Uge1xuICAgIG5vdGlmeSA9IGZ1bmN0aW9uKCl7XG4gICAgICAvLyBzdHJhbmdlIElFICsgd2VicGFjayBkZXYgc2VydmVyIGJ1ZyAtIHVzZSAuY2FsbChnbG9iYWwpXG4gICAgICBtYWNyb3Rhc2suY2FsbChnbG9iYWwsIGZsdXNoKTtcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uKGZuKXtcbiAgICB2YXIgdGFzayA9IHtmbjogZm4sIG5leHQ6IHVuZGVmaW5lZH07XG4gICAgaWYobGFzdClsYXN0Lm5leHQgPSB0YXNrO1xuICAgIGlmKCFoZWFkKXtcbiAgICAgIGhlYWQgPSB0YXNrO1xuICAgICAgbm90aWZ5KCk7XG4gICAgfSBsYXN0ID0gdGFzaztcbiAgfTtcbn07IiwiJ3VzZSBzdHJpY3QnO1xuLy8gMTkuMS4yLjEgT2JqZWN0LmFzc2lnbih0YXJnZXQsIHNvdXJjZSwgLi4uKVxudmFyIGdldEtleXMgID0gcmVxdWlyZSgnLi9fb2JqZWN0LWtleXMnKVxuICAsIGdPUFMgICAgID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdvcHMnKVxuICAsIHBJRSAgICAgID0gcmVxdWlyZSgnLi9fb2JqZWN0LXBpZScpXG4gICwgdG9PYmplY3QgPSByZXF1aXJlKCcuL190by1vYmplY3QnKVxuICAsIElPYmplY3QgID0gcmVxdWlyZSgnLi9faW9iamVjdCcpXG4gICwgJGFzc2lnbiAgPSBPYmplY3QuYXNzaWduO1xuXG4vLyBzaG91bGQgd29yayB3aXRoIHN5bWJvbHMgYW5kIHNob3VsZCBoYXZlIGRldGVybWluaXN0aWMgcHJvcGVydHkgb3JkZXIgKFY4IGJ1Zylcbm1vZHVsZS5leHBvcnRzID0gISRhc3NpZ24gfHwgcmVxdWlyZSgnLi9fZmFpbHMnKShmdW5jdGlvbigpe1xuICB2YXIgQSA9IHt9XG4gICAgLCBCID0ge31cbiAgICAsIFMgPSBTeW1ib2woKVxuICAgICwgSyA9ICdhYmNkZWZnaGlqa2xtbm9wcXJzdCc7XG4gIEFbU10gPSA3O1xuICBLLnNwbGl0KCcnKS5mb3JFYWNoKGZ1bmN0aW9uKGspeyBCW2tdID0gazsgfSk7XG4gIHJldHVybiAkYXNzaWduKHt9LCBBKVtTXSAhPSA3IHx8IE9iamVjdC5rZXlzKCRhc3NpZ24oe30sIEIpKS5qb2luKCcnKSAhPSBLO1xufSkgPyBmdW5jdGlvbiBhc3NpZ24odGFyZ2V0LCBzb3VyY2UpeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVudXNlZC12YXJzXG4gIHZhciBUICAgICA9IHRvT2JqZWN0KHRhcmdldClcbiAgICAsIGFMZW4gID0gYXJndW1lbnRzLmxlbmd0aFxuICAgICwgaW5kZXggPSAxXG4gICAgLCBnZXRTeW1ib2xzID0gZ09QUy5mXG4gICAgLCBpc0VudW0gICAgID0gcElFLmY7XG4gIHdoaWxlKGFMZW4gPiBpbmRleCl7XG4gICAgdmFyIFMgICAgICA9IElPYmplY3QoYXJndW1lbnRzW2luZGV4KytdKVxuICAgICAgLCBrZXlzICAgPSBnZXRTeW1ib2xzID8gZ2V0S2V5cyhTKS5jb25jYXQoZ2V0U3ltYm9scyhTKSkgOiBnZXRLZXlzKFMpXG4gICAgICAsIGxlbmd0aCA9IGtleXMubGVuZ3RoXG4gICAgICAsIGogICAgICA9IDBcbiAgICAgICwga2V5O1xuICAgIHdoaWxlKGxlbmd0aCA+IGopaWYoaXNFbnVtLmNhbGwoUywga2V5ID0ga2V5c1tqKytdKSlUW2tleV0gPSBTW2tleV07XG4gIH0gcmV0dXJuIFQ7XG59IDogJGFzc2lnbjsiLCIvLyAxOS4xLjIuMiAvIDE1LjIuMy41IE9iamVjdC5jcmVhdGUoTyBbLCBQcm9wZXJ0aWVzXSlcbnZhciBhbk9iamVjdCAgICA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpXG4gICwgZFBzICAgICAgICAgPSByZXF1aXJlKCcuL19vYmplY3QtZHBzJylcbiAgLCBlbnVtQnVnS2V5cyA9IHJlcXVpcmUoJy4vX2VudW0tYnVnLWtleXMnKVxuICAsIElFX1BST1RPICAgID0gcmVxdWlyZSgnLi9fc2hhcmVkLWtleScpKCdJRV9QUk9UTycpXG4gICwgRW1wdHkgICAgICAgPSBmdW5jdGlvbigpeyAvKiBlbXB0eSAqLyB9XG4gICwgUFJPVE9UWVBFICAgPSAncHJvdG90eXBlJztcblxuLy8gQ3JlYXRlIG9iamVjdCB3aXRoIGZha2UgYG51bGxgIHByb3RvdHlwZTogdXNlIGlmcmFtZSBPYmplY3Qgd2l0aCBjbGVhcmVkIHByb3RvdHlwZVxudmFyIGNyZWF0ZURpY3QgPSBmdW5jdGlvbigpe1xuICAvLyBUaHJhc2gsIHdhc3RlIGFuZCBzb2RvbXk6IElFIEdDIGJ1Z1xuICB2YXIgaWZyYW1lID0gcmVxdWlyZSgnLi9fZG9tLWNyZWF0ZScpKCdpZnJhbWUnKVxuICAgICwgaSAgICAgID0gZW51bUJ1Z0tleXMubGVuZ3RoXG4gICAgLCBsdCAgICAgPSAnPCdcbiAgICAsIGd0ICAgICA9ICc+J1xuICAgICwgaWZyYW1lRG9jdW1lbnQ7XG4gIGlmcmFtZS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICByZXF1aXJlKCcuL19odG1sJykuYXBwZW5kQ2hpbGQoaWZyYW1lKTtcbiAgaWZyYW1lLnNyYyA9ICdqYXZhc2NyaXB0Oic7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tc2NyaXB0LXVybFxuICAvLyBjcmVhdGVEaWN0ID0gaWZyYW1lLmNvbnRlbnRXaW5kb3cuT2JqZWN0O1xuICAvLyBodG1sLnJlbW92ZUNoaWxkKGlmcmFtZSk7XG4gIGlmcmFtZURvY3VtZW50ID0gaWZyYW1lLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQ7XG4gIGlmcmFtZURvY3VtZW50Lm9wZW4oKTtcbiAgaWZyYW1lRG9jdW1lbnQud3JpdGUobHQgKyAnc2NyaXB0JyArIGd0ICsgJ2RvY3VtZW50LkY9T2JqZWN0JyArIGx0ICsgJy9zY3JpcHQnICsgZ3QpO1xuICBpZnJhbWVEb2N1bWVudC5jbG9zZSgpO1xuICBjcmVhdGVEaWN0ID0gaWZyYW1lRG9jdW1lbnQuRjtcbiAgd2hpbGUoaS0tKWRlbGV0ZSBjcmVhdGVEaWN0W1BST1RPVFlQRV1bZW51bUJ1Z0tleXNbaV1dO1xuICByZXR1cm4gY3JlYXRlRGljdCgpO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBPYmplY3QuY3JlYXRlIHx8IGZ1bmN0aW9uIGNyZWF0ZShPLCBQcm9wZXJ0aWVzKXtcbiAgdmFyIHJlc3VsdDtcbiAgaWYoTyAhPT0gbnVsbCl7XG4gICAgRW1wdHlbUFJPVE9UWVBFXSA9IGFuT2JqZWN0KE8pO1xuICAgIHJlc3VsdCA9IG5ldyBFbXB0eTtcbiAgICBFbXB0eVtQUk9UT1RZUEVdID0gbnVsbDtcbiAgICAvLyBhZGQgXCJfX3Byb3RvX19cIiBmb3IgT2JqZWN0LmdldFByb3RvdHlwZU9mIHBvbHlmaWxsXG4gICAgcmVzdWx0W0lFX1BST1RPXSA9IE87XG4gIH0gZWxzZSByZXN1bHQgPSBjcmVhdGVEaWN0KCk7XG4gIHJldHVybiBQcm9wZXJ0aWVzID09PSB1bmRlZmluZWQgPyByZXN1bHQgOiBkUHMocmVzdWx0LCBQcm9wZXJ0aWVzKTtcbn07XG4iLCJ2YXIgYW5PYmplY3QgICAgICAgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKVxuICAsIElFOF9ET01fREVGSU5FID0gcmVxdWlyZSgnLi9faWU4LWRvbS1kZWZpbmUnKVxuICAsIHRvUHJpbWl0aXZlICAgID0gcmVxdWlyZSgnLi9fdG8tcHJpbWl0aXZlJylcbiAgLCBkUCAgICAgICAgICAgICA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcblxuZXhwb3J0cy5mID0gcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKSA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSA6IGZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpe1xuICBhbk9iamVjdChPKTtcbiAgUCA9IHRvUHJpbWl0aXZlKFAsIHRydWUpO1xuICBhbk9iamVjdChBdHRyaWJ1dGVzKTtcbiAgaWYoSUU4X0RPTV9ERUZJTkUpdHJ5IHtcbiAgICByZXR1cm4gZFAoTywgUCwgQXR0cmlidXRlcyk7XG4gIH0gY2F0Y2goZSl7IC8qIGVtcHR5ICovIH1cbiAgaWYoJ2dldCcgaW4gQXR0cmlidXRlcyB8fCAnc2V0JyBpbiBBdHRyaWJ1dGVzKXRocm93IFR5cGVFcnJvcignQWNjZXNzb3JzIG5vdCBzdXBwb3J0ZWQhJyk7XG4gIGlmKCd2YWx1ZScgaW4gQXR0cmlidXRlcylPW1BdID0gQXR0cmlidXRlcy52YWx1ZTtcbiAgcmV0dXJuIE87XG59OyIsInZhciBkUCAgICAgICA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpXG4gICwgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKVxuICAsIGdldEtleXMgID0gcmVxdWlyZSgnLi9fb2JqZWN0LWtleXMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpID8gT2JqZWN0LmRlZmluZVByb3BlcnRpZXMgOiBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKE8sIFByb3BlcnRpZXMpe1xuICBhbk9iamVjdChPKTtcbiAgdmFyIGtleXMgICA9IGdldEtleXMoUHJvcGVydGllcylcbiAgICAsIGxlbmd0aCA9IGtleXMubGVuZ3RoXG4gICAgLCBpID0gMFxuICAgICwgUDtcbiAgd2hpbGUobGVuZ3RoID4gaSlkUC5mKE8sIFAgPSBrZXlzW2krK10sIFByb3BlcnRpZXNbUF0pO1xuICByZXR1cm4gTztcbn07IiwiLy8gRm9yY2VkIHJlcGxhY2VtZW50IHByb3RvdHlwZSBhY2Nlc3NvcnMgbWV0aG9kc1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL19saWJyYXJ5Jyl8fCAhcmVxdWlyZSgnLi9fZmFpbHMnKShmdW5jdGlvbigpe1xuICB2YXIgSyA9IE1hdGgucmFuZG9tKCk7XG4gIC8vIEluIEZGIHRocm93cyBvbmx5IGRlZmluZSBtZXRob2RzXG4gIF9fZGVmaW5lU2V0dGVyX18uY2FsbChudWxsLCBLLCBmdW5jdGlvbigpeyAvKiBlbXB0eSAqL30pO1xuICBkZWxldGUgcmVxdWlyZSgnLi9fZ2xvYmFsJylbS107XG59KTsiLCJ2YXIgcElFICAgICAgICAgICAgPSByZXF1aXJlKCcuL19vYmplY3QtcGllJylcbiAgLCBjcmVhdGVEZXNjICAgICA9IHJlcXVpcmUoJy4vX3Byb3BlcnR5LWRlc2MnKVxuICAsIHRvSU9iamVjdCAgICAgID0gcmVxdWlyZSgnLi9fdG8taW9iamVjdCcpXG4gICwgdG9QcmltaXRpdmUgICAgPSByZXF1aXJlKCcuL190by1wcmltaXRpdmUnKVxuICAsIGhhcyAgICAgICAgICAgID0gcmVxdWlyZSgnLi9faGFzJylcbiAgLCBJRThfRE9NX0RFRklORSA9IHJlcXVpcmUoJy4vX2llOC1kb20tZGVmaW5lJylcbiAgLCBnT1BEICAgICAgICAgICA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG5cbmV4cG9ydHMuZiA9IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgPyBnT1BEIDogZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE8sIFApe1xuICBPID0gdG9JT2JqZWN0KE8pO1xuICBQID0gdG9QcmltaXRpdmUoUCwgdHJ1ZSk7XG4gIGlmKElFOF9ET01fREVGSU5FKXRyeSB7XG4gICAgcmV0dXJuIGdPUEQoTywgUCk7XG4gIH0gY2F0Y2goZSl7IC8qIGVtcHR5ICovIH1cbiAgaWYoaGFzKE8sIFApKXJldHVybiBjcmVhdGVEZXNjKCFwSUUuZi5jYWxsKE8sIFApLCBPW1BdKTtcbn07IiwiLy8gZmFsbGJhY2sgZm9yIElFMTEgYnVnZ3kgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMgd2l0aCBpZnJhbWUgYW5kIHdpbmRvd1xudmFyIHRvSU9iamVjdCA9IHJlcXVpcmUoJy4vX3RvLWlvYmplY3QnKVxuICAsIGdPUE4gICAgICA9IHJlcXVpcmUoJy4vX29iamVjdC1nb3BuJykuZlxuICAsIHRvU3RyaW5nICA9IHt9LnRvU3RyaW5nO1xuXG52YXIgd2luZG93TmFtZXMgPSB0eXBlb2Ygd2luZG93ID09ICdvYmplY3QnICYmIHdpbmRvdyAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lc1xuICA/IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHdpbmRvdykgOiBbXTtcblxudmFyIGdldFdpbmRvd05hbWVzID0gZnVuY3Rpb24oaXQpe1xuICB0cnkge1xuICAgIHJldHVybiBnT1BOKGl0KTtcbiAgfSBjYXRjaChlKXtcbiAgICByZXR1cm4gd2luZG93TmFtZXMuc2xpY2UoKTtcbiAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMuZiA9IGZ1bmN0aW9uIGdldE93blByb3BlcnR5TmFtZXMoaXQpe1xuICByZXR1cm4gd2luZG93TmFtZXMgJiYgdG9TdHJpbmcuY2FsbChpdCkgPT0gJ1tvYmplY3QgV2luZG93XScgPyBnZXRXaW5kb3dOYW1lcyhpdCkgOiBnT1BOKHRvSU9iamVjdChpdCkpO1xufTtcbiIsIi8vIDE5LjEuMi43IC8gMTUuMi4zLjQgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoTylcbnZhciAka2V5cyAgICAgID0gcmVxdWlyZSgnLi9fb2JqZWN0LWtleXMtaW50ZXJuYWwnKVxuICAsIGhpZGRlbktleXMgPSByZXF1aXJlKCcuL19lbnVtLWJ1Zy1rZXlzJykuY29uY2F0KCdsZW5ndGgnLCAncHJvdG90eXBlJyk7XG5cbmV4cG9ydHMuZiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzIHx8IGZ1bmN0aW9uIGdldE93blByb3BlcnR5TmFtZXMoTyl7XG4gIHJldHVybiAka2V5cyhPLCBoaWRkZW5LZXlzKTtcbn07IiwiZXhwb3J0cy5mID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9sczsiLCIvLyAxOS4xLjIuOSAvIDE1LjIuMy4yIE9iamVjdC5nZXRQcm90b3R5cGVPZihPKVxudmFyIGhhcyAgICAgICAgID0gcmVxdWlyZSgnLi9faGFzJylcbiAgLCB0b09iamVjdCAgICA9IHJlcXVpcmUoJy4vX3RvLW9iamVjdCcpXG4gICwgSUVfUFJPVE8gICAgPSByZXF1aXJlKCcuL19zaGFyZWQta2V5JykoJ0lFX1BST1RPJylcbiAgLCBPYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbm1vZHVsZS5leHBvcnRzID0gT2JqZWN0LmdldFByb3RvdHlwZU9mIHx8IGZ1bmN0aW9uKE8pe1xuICBPID0gdG9PYmplY3QoTyk7XG4gIGlmKGhhcyhPLCBJRV9QUk9UTykpcmV0dXJuIE9bSUVfUFJPVE9dO1xuICBpZih0eXBlb2YgTy5jb25zdHJ1Y3RvciA9PSAnZnVuY3Rpb24nICYmIE8gaW5zdGFuY2VvZiBPLmNvbnN0cnVjdG9yKXtcbiAgICByZXR1cm4gTy5jb25zdHJ1Y3Rvci5wcm90b3R5cGU7XG4gIH0gcmV0dXJuIE8gaW5zdGFuY2VvZiBPYmplY3QgPyBPYmplY3RQcm90byA6IG51bGw7XG59OyIsInZhciBoYXMgICAgICAgICAgPSByZXF1aXJlKCcuL19oYXMnKVxuICAsIHRvSU9iamVjdCAgICA9IHJlcXVpcmUoJy4vX3RvLWlvYmplY3QnKVxuICAsIGFycmF5SW5kZXhPZiA9IHJlcXVpcmUoJy4vX2FycmF5LWluY2x1ZGVzJykoZmFsc2UpXG4gICwgSUVfUFJPVE8gICAgID0gcmVxdWlyZSgnLi9fc2hhcmVkLWtleScpKCdJRV9QUk9UTycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKG9iamVjdCwgbmFtZXMpe1xuICB2YXIgTyAgICAgID0gdG9JT2JqZWN0KG9iamVjdClcbiAgICAsIGkgICAgICA9IDBcbiAgICAsIHJlc3VsdCA9IFtdXG4gICAgLCBrZXk7XG4gIGZvcihrZXkgaW4gTylpZihrZXkgIT0gSUVfUFJPVE8paGFzKE8sIGtleSkgJiYgcmVzdWx0LnB1c2goa2V5KTtcbiAgLy8gRG9uJ3QgZW51bSBidWcgJiBoaWRkZW4ga2V5c1xuICB3aGlsZShuYW1lcy5sZW5ndGggPiBpKWlmKGhhcyhPLCBrZXkgPSBuYW1lc1tpKytdKSl7XG4gICAgfmFycmF5SW5kZXhPZihyZXN1bHQsIGtleSkgfHwgcmVzdWx0LnB1c2goa2V5KTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufTsiLCIvLyAxOS4xLjIuMTQgLyAxNS4yLjMuMTQgT2JqZWN0LmtleXMoTylcbnZhciAka2V5cyAgICAgICA9IHJlcXVpcmUoJy4vX29iamVjdC1rZXlzLWludGVybmFsJylcbiAgLCBlbnVtQnVnS2V5cyA9IHJlcXVpcmUoJy4vX2VudW0tYnVnLWtleXMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBPYmplY3Qua2V5cyB8fCBmdW5jdGlvbiBrZXlzKE8pe1xuICByZXR1cm4gJGtleXMoTywgZW51bUJ1Z0tleXMpO1xufTsiLCJleHBvcnRzLmYgPSB7fS5wcm9wZXJ0eUlzRW51bWVyYWJsZTsiLCIvLyBtb3N0IE9iamVjdCBtZXRob2RzIGJ5IEVTNiBzaG91bGQgYWNjZXB0IHByaW1pdGl2ZXNcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0JylcbiAgLCBjb3JlICAgID0gcmVxdWlyZSgnLi9fY29yZScpXG4gICwgZmFpbHMgICA9IHJlcXVpcmUoJy4vX2ZhaWxzJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKEtFWSwgZXhlYyl7XG4gIHZhciBmbiAgPSAoY29yZS5PYmplY3QgfHwge30pW0tFWV0gfHwgT2JqZWN0W0tFWV1cbiAgICAsIGV4cCA9IHt9O1xuICBleHBbS0VZXSA9IGV4ZWMoZm4pO1xuICAkZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqIGZhaWxzKGZ1bmN0aW9uKCl7IGZuKDEpOyB9KSwgJ09iamVjdCcsIGV4cCk7XG59OyIsInZhciBnZXRLZXlzICAgPSByZXF1aXJlKCcuL19vYmplY3Qta2V5cycpXG4gICwgdG9JT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8taW9iamVjdCcpXG4gICwgaXNFbnVtICAgID0gcmVxdWlyZSgnLi9fb2JqZWN0LXBpZScpLmY7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGlzRW50cmllcyl7XG4gIHJldHVybiBmdW5jdGlvbihpdCl7XG4gICAgdmFyIE8gICAgICA9IHRvSU9iamVjdChpdClcbiAgICAgICwga2V5cyAgID0gZ2V0S2V5cyhPKVxuICAgICAgLCBsZW5ndGggPSBrZXlzLmxlbmd0aFxuICAgICAgLCBpICAgICAgPSAwXG4gICAgICAsIHJlc3VsdCA9IFtdXG4gICAgICAsIGtleTtcbiAgICB3aGlsZShsZW5ndGggPiBpKWlmKGlzRW51bS5jYWxsKE8sIGtleSA9IGtleXNbaSsrXSkpe1xuICAgICAgcmVzdWx0LnB1c2goaXNFbnRyaWVzID8gW2tleSwgT1trZXldXSA6IE9ba2V5XSk7XG4gICAgfSByZXR1cm4gcmVzdWx0O1xuICB9O1xufTsiLCIvLyBhbGwgb2JqZWN0IGtleXMsIGluY2x1ZGVzIG5vbi1lbnVtZXJhYmxlIGFuZCBzeW1ib2xzXG52YXIgZ09QTiAgICAgPSByZXF1aXJlKCcuL19vYmplY3QtZ29wbicpXG4gICwgZ09QUyAgICAgPSByZXF1aXJlKCcuL19vYmplY3QtZ29wcycpXG4gICwgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKVxuICAsIFJlZmxlY3QgID0gcmVxdWlyZSgnLi9fZ2xvYmFsJykuUmVmbGVjdDtcbm1vZHVsZS5leHBvcnRzID0gUmVmbGVjdCAmJiBSZWZsZWN0Lm93bktleXMgfHwgZnVuY3Rpb24gb3duS2V5cyhpdCl7XG4gIHZhciBrZXlzICAgICAgID0gZ09QTi5mKGFuT2JqZWN0KGl0KSlcbiAgICAsIGdldFN5bWJvbHMgPSBnT1BTLmY7XG4gIHJldHVybiBnZXRTeW1ib2xzID8ga2V5cy5jb25jYXQoZ2V0U3ltYm9scyhpdCkpIDoga2V5cztcbn07IiwidmFyICRwYXJzZUZsb2F0ID0gcmVxdWlyZSgnLi9fZ2xvYmFsJykucGFyc2VGbG9hdFxuICAsICR0cmltICAgICAgID0gcmVxdWlyZSgnLi9fc3RyaW5nLXRyaW0nKS50cmltO1xuXG5tb2R1bGUuZXhwb3J0cyA9IDEgLyAkcGFyc2VGbG9hdChyZXF1aXJlKCcuL19zdHJpbmctd3MnKSArICctMCcpICE9PSAtSW5maW5pdHkgPyBmdW5jdGlvbiBwYXJzZUZsb2F0KHN0cil7XG4gIHZhciBzdHJpbmcgPSAkdHJpbShTdHJpbmcoc3RyKSwgMylcbiAgICAsIHJlc3VsdCA9ICRwYXJzZUZsb2F0KHN0cmluZyk7XG4gIHJldHVybiByZXN1bHQgPT09IDAgJiYgc3RyaW5nLmNoYXJBdCgwKSA9PSAnLScgPyAtMCA6IHJlc3VsdDtcbn0gOiAkcGFyc2VGbG9hdDsiLCJ2YXIgJHBhcnNlSW50ID0gcmVxdWlyZSgnLi9fZ2xvYmFsJykucGFyc2VJbnRcbiAgLCAkdHJpbSAgICAgPSByZXF1aXJlKCcuL19zdHJpbmctdHJpbScpLnRyaW1cbiAgLCB3cyAgICAgICAgPSByZXF1aXJlKCcuL19zdHJpbmctd3MnKVxuICAsIGhleCAgICAgICA9IC9eW1xcLStdPzBbeFhdLztcblxubW9kdWxlLmV4cG9ydHMgPSAkcGFyc2VJbnQod3MgKyAnMDgnKSAhPT0gOCB8fCAkcGFyc2VJbnQod3MgKyAnMHgxNicpICE9PSAyMiA/IGZ1bmN0aW9uIHBhcnNlSW50KHN0ciwgcmFkaXgpe1xuICB2YXIgc3RyaW5nID0gJHRyaW0oU3RyaW5nKHN0ciksIDMpO1xuICByZXR1cm4gJHBhcnNlSW50KHN0cmluZywgKHJhZGl4ID4+PiAwKSB8fCAoaGV4LnRlc3Qoc3RyaW5nKSA/IDE2IDogMTApKTtcbn0gOiAkcGFyc2VJbnQ7IiwiJ3VzZSBzdHJpY3QnO1xudmFyIHBhdGggICAgICA9IHJlcXVpcmUoJy4vX3BhdGgnKVxuICAsIGludm9rZSAgICA9IHJlcXVpcmUoJy4vX2ludm9rZScpXG4gICwgYUZ1bmN0aW9uID0gcmVxdWlyZSgnLi9fYS1mdW5jdGlvbicpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbigvKiAuLi5wYXJncyAqLyl7XG4gIHZhciBmbiAgICAgPSBhRnVuY3Rpb24odGhpcylcbiAgICAsIGxlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGhcbiAgICAsIHBhcmdzICA9IEFycmF5KGxlbmd0aClcbiAgICAsIGkgICAgICA9IDBcbiAgICAsIF8gICAgICA9IHBhdGguX1xuICAgICwgaG9sZGVyID0gZmFsc2U7XG4gIHdoaWxlKGxlbmd0aCA+IGkpaWYoKHBhcmdzW2ldID0gYXJndW1lbnRzW2krK10pID09PSBfKWhvbGRlciA9IHRydWU7XG4gIHJldHVybiBmdW5jdGlvbigvKiAuLi5hcmdzICovKXtcbiAgICB2YXIgdGhhdCA9IHRoaXNcbiAgICAgICwgYUxlbiA9IGFyZ3VtZW50cy5sZW5ndGhcbiAgICAgICwgaiA9IDAsIGsgPSAwLCBhcmdzO1xuICAgIGlmKCFob2xkZXIgJiYgIWFMZW4pcmV0dXJuIGludm9rZShmbiwgcGFyZ3MsIHRoYXQpO1xuICAgIGFyZ3MgPSBwYXJncy5zbGljZSgpO1xuICAgIGlmKGhvbGRlcilmb3IoO2xlbmd0aCA+IGo7IGorKylpZihhcmdzW2pdID09PSBfKWFyZ3Nbal0gPSBhcmd1bWVudHNbaysrXTtcbiAgICB3aGlsZShhTGVuID4gaylhcmdzLnB1c2goYXJndW1lbnRzW2srK10pO1xuICAgIHJldHVybiBpbnZva2UoZm4sIGFyZ3MsIHRoYXQpO1xuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpOyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oYml0bWFwLCB2YWx1ZSl7XG4gIHJldHVybiB7XG4gICAgZW51bWVyYWJsZSAgOiAhKGJpdG1hcCAmIDEpLFxuICAgIGNvbmZpZ3VyYWJsZTogIShiaXRtYXAgJiAyKSxcbiAgICB3cml0YWJsZSAgICA6ICEoYml0bWFwICYgNCksXG4gICAgdmFsdWUgICAgICAgOiB2YWx1ZVxuICB9O1xufTsiLCJ2YXIgcmVkZWZpbmUgPSByZXF1aXJlKCcuL19yZWRlZmluZScpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbih0YXJnZXQsIHNyYywgc2FmZSl7XG4gIGZvcih2YXIga2V5IGluIHNyYylyZWRlZmluZSh0YXJnZXQsIGtleSwgc3JjW2tleV0sIHNhZmUpO1xuICByZXR1cm4gdGFyZ2V0O1xufTsiLCJ2YXIgZ2xvYmFsICAgID0gcmVxdWlyZSgnLi9fZ2xvYmFsJylcbiAgLCBoaWRlICAgICAgPSByZXF1aXJlKCcuL19oaWRlJylcbiAgLCBoYXMgICAgICAgPSByZXF1aXJlKCcuL19oYXMnKVxuICAsIFNSQyAgICAgICA9IHJlcXVpcmUoJy4vX3VpZCcpKCdzcmMnKVxuICAsIFRPX1NUUklORyA9ICd0b1N0cmluZydcbiAgLCAkdG9TdHJpbmcgPSBGdW5jdGlvbltUT19TVFJJTkddXG4gICwgVFBMICAgICAgID0gKCcnICsgJHRvU3RyaW5nKS5zcGxpdChUT19TVFJJTkcpO1xuXG5yZXF1aXJlKCcuL19jb3JlJykuaW5zcGVjdFNvdXJjZSA9IGZ1bmN0aW9uKGl0KXtcbiAgcmV0dXJuICR0b1N0cmluZy5jYWxsKGl0KTtcbn07XG5cbihtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKE8sIGtleSwgdmFsLCBzYWZlKXtcbiAgdmFyIGlzRnVuY3Rpb24gPSB0eXBlb2YgdmFsID09ICdmdW5jdGlvbic7XG4gIGlmKGlzRnVuY3Rpb24paGFzKHZhbCwgJ25hbWUnKSB8fCBoaWRlKHZhbCwgJ25hbWUnLCBrZXkpO1xuICBpZihPW2tleV0gPT09IHZhbClyZXR1cm47XG4gIGlmKGlzRnVuY3Rpb24paGFzKHZhbCwgU1JDKSB8fCBoaWRlKHZhbCwgU1JDLCBPW2tleV0gPyAnJyArIE9ba2V5XSA6IFRQTC5qb2luKFN0cmluZyhrZXkpKSk7XG4gIGlmKE8gPT09IGdsb2JhbCl7XG4gICAgT1trZXldID0gdmFsO1xuICB9IGVsc2Uge1xuICAgIGlmKCFzYWZlKXtcbiAgICAgIGRlbGV0ZSBPW2tleV07XG4gICAgICBoaWRlKE8sIGtleSwgdmFsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYoT1trZXldKU9ba2V5XSA9IHZhbDtcbiAgICAgIGVsc2UgaGlkZShPLCBrZXksIHZhbCk7XG4gICAgfVxuICB9XG4vLyBhZGQgZmFrZSBGdW5jdGlvbiN0b1N0cmluZyBmb3IgY29ycmVjdCB3b3JrIHdyYXBwZWQgbWV0aG9kcyAvIGNvbnN0cnVjdG9ycyB3aXRoIG1ldGhvZHMgbGlrZSBMb0Rhc2ggaXNOYXRpdmVcbn0pKEZ1bmN0aW9uLnByb3RvdHlwZSwgVE9fU1RSSU5HLCBmdW5jdGlvbiB0b1N0cmluZygpe1xuICByZXR1cm4gdHlwZW9mIHRoaXMgPT0gJ2Z1bmN0aW9uJyAmJiB0aGlzW1NSQ10gfHwgJHRvU3RyaW5nLmNhbGwodGhpcyk7XG59KTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKHJlZ0V4cCwgcmVwbGFjZSl7XG4gIHZhciByZXBsYWNlciA9IHJlcGxhY2UgPT09IE9iamVjdChyZXBsYWNlKSA/IGZ1bmN0aW9uKHBhcnQpe1xuICAgIHJldHVybiByZXBsYWNlW3BhcnRdO1xuICB9IDogcmVwbGFjZTtcbiAgcmV0dXJuIGZ1bmN0aW9uKGl0KXtcbiAgICByZXR1cm4gU3RyaW5nKGl0KS5yZXBsYWNlKHJlZ0V4cCwgcmVwbGFjZXIpO1xuICB9O1xufTsiLCIvLyA3LjIuOSBTYW1lVmFsdWUoeCwgeSlcbm1vZHVsZS5leHBvcnRzID0gT2JqZWN0LmlzIHx8IGZ1bmN0aW9uIGlzKHgsIHkpe1xuICByZXR1cm4geCA9PT0geSA/IHggIT09IDAgfHwgMSAvIHggPT09IDEgLyB5IDogeCAhPSB4ICYmIHkgIT0geTtcbn07IiwiLy8gV29ya3Mgd2l0aCBfX3Byb3RvX18gb25seS4gT2xkIHY4IGNhbid0IHdvcmsgd2l0aCBudWxsIHByb3RvIG9iamVjdHMuXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1wcm90byAqL1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0JylcbiAgLCBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xudmFyIGNoZWNrID0gZnVuY3Rpb24oTywgcHJvdG8pe1xuICBhbk9iamVjdChPKTtcbiAgaWYoIWlzT2JqZWN0KHByb3RvKSAmJiBwcm90byAhPT0gbnVsbCl0aHJvdyBUeXBlRXJyb3IocHJvdG8gKyBcIjogY2FuJ3Qgc2V0IGFzIHByb3RvdHlwZSFcIik7XG59O1xubW9kdWxlLmV4cG9ydHMgPSB7XG4gIHNldDogT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8ICgnX19wcm90b19fJyBpbiB7fSA/IC8vIGVzbGludC1kaXNhYmxlLWxpbmVcbiAgICBmdW5jdGlvbih0ZXN0LCBidWdneSwgc2V0KXtcbiAgICAgIHRyeSB7XG4gICAgICAgIHNldCA9IHJlcXVpcmUoJy4vX2N0eCcpKEZ1bmN0aW9uLmNhbGwsIHJlcXVpcmUoJy4vX29iamVjdC1nb3BkJykuZihPYmplY3QucHJvdG90eXBlLCAnX19wcm90b19fJykuc2V0LCAyKTtcbiAgICAgICAgc2V0KHRlc3QsIFtdKTtcbiAgICAgICAgYnVnZ3kgPSAhKHRlc3QgaW5zdGFuY2VvZiBBcnJheSk7XG4gICAgICB9IGNhdGNoKGUpeyBidWdneSA9IHRydWU7IH1cbiAgICAgIHJldHVybiBmdW5jdGlvbiBzZXRQcm90b3R5cGVPZihPLCBwcm90byl7XG4gICAgICAgIGNoZWNrKE8sIHByb3RvKTtcbiAgICAgICAgaWYoYnVnZ3kpTy5fX3Byb3RvX18gPSBwcm90bztcbiAgICAgICAgZWxzZSBzZXQoTywgcHJvdG8pO1xuICAgICAgICByZXR1cm4gTztcbiAgICAgIH07XG4gICAgfSh7fSwgZmFsc2UpIDogdW5kZWZpbmVkKSxcbiAgY2hlY2s6IGNoZWNrXG59OyIsIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWwgICAgICA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpXG4gICwgZFAgICAgICAgICAgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKVxuICAsIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKVxuICAsIFNQRUNJRVMgICAgID0gcmVxdWlyZSgnLi9fd2tzJykoJ3NwZWNpZXMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihLRVkpe1xuICB2YXIgQyA9IGdsb2JhbFtLRVldO1xuICBpZihERVNDUklQVE9SUyAmJiBDICYmICFDW1NQRUNJRVNdKWRQLmYoQywgU1BFQ0lFUywge1xuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICBnZXQ6IGZ1bmN0aW9uKCl7IHJldHVybiB0aGlzOyB9XG4gIH0pO1xufTsiLCJ2YXIgZGVmID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwJykuZlxuICAsIGhhcyA9IHJlcXVpcmUoJy4vX2hhcycpXG4gICwgVEFHID0gcmVxdWlyZSgnLi9fd2tzJykoJ3RvU3RyaW5nVGFnJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaXQsIHRhZywgc3RhdCl7XG4gIGlmKGl0ICYmICFoYXMoaXQgPSBzdGF0ID8gaXQgOiBpdC5wcm90b3R5cGUsIFRBRykpZGVmKGl0LCBUQUcsIHtjb25maWd1cmFibGU6IHRydWUsIHZhbHVlOiB0YWd9KTtcbn07IiwidmFyIHNoYXJlZCA9IHJlcXVpcmUoJy4vX3NoYXJlZCcpKCdrZXlzJylcbiAgLCB1aWQgICAgPSByZXF1aXJlKCcuL191aWQnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oa2V5KXtcbiAgcmV0dXJuIHNoYXJlZFtrZXldIHx8IChzaGFyZWRba2V5XSA9IHVpZChrZXkpKTtcbn07IiwidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpXG4gICwgU0hBUkVEID0gJ19fY29yZS1qc19zaGFyZWRfXydcbiAgLCBzdG9yZSAgPSBnbG9iYWxbU0hBUkVEXSB8fCAoZ2xvYmFsW1NIQVJFRF0gPSB7fSk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGtleSl7XG4gIHJldHVybiBzdG9yZVtrZXldIHx8IChzdG9yZVtrZXldID0ge30pO1xufTsiLCIvLyA3LjMuMjAgU3BlY2llc0NvbnN0cnVjdG9yKE8sIGRlZmF1bHRDb25zdHJ1Y3RvcilcbnZhciBhbk9iamVjdCAgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKVxuICAsIGFGdW5jdGlvbiA9IHJlcXVpcmUoJy4vX2EtZnVuY3Rpb24nKVxuICAsIFNQRUNJRVMgICA9IHJlcXVpcmUoJy4vX3drcycpKCdzcGVjaWVzJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKE8sIEQpe1xuICB2YXIgQyA9IGFuT2JqZWN0KE8pLmNvbnN0cnVjdG9yLCBTO1xuICByZXR1cm4gQyA9PT0gdW5kZWZpbmVkIHx8IChTID0gYW5PYmplY3QoQylbU1BFQ0lFU10pID09IHVuZGVmaW5lZCA/IEQgOiBhRnVuY3Rpb24oUyk7XG59OyIsInZhciBmYWlscyA9IHJlcXVpcmUoJy4vX2ZhaWxzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24obWV0aG9kLCBhcmcpe1xuICByZXR1cm4gISFtZXRob2QgJiYgZmFpbHMoZnVuY3Rpb24oKXtcbiAgICBhcmcgPyBtZXRob2QuY2FsbChudWxsLCBmdW5jdGlvbigpe30sIDEpIDogbWV0aG9kLmNhbGwobnVsbCk7XG4gIH0pO1xufTsiLCJ2YXIgdG9JbnRlZ2VyID0gcmVxdWlyZSgnLi9fdG8taW50ZWdlcicpXG4gICwgZGVmaW5lZCAgID0gcmVxdWlyZSgnLi9fZGVmaW5lZCcpO1xuLy8gdHJ1ZSAgLT4gU3RyaW5nI2F0XG4vLyBmYWxzZSAtPiBTdHJpbmcjY29kZVBvaW50QXRcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oVE9fU1RSSU5HKXtcbiAgcmV0dXJuIGZ1bmN0aW9uKHRoYXQsIHBvcyl7XG4gICAgdmFyIHMgPSBTdHJpbmcoZGVmaW5lZCh0aGF0KSlcbiAgICAgICwgaSA9IHRvSW50ZWdlcihwb3MpXG4gICAgICAsIGwgPSBzLmxlbmd0aFxuICAgICAgLCBhLCBiO1xuICAgIGlmKGkgPCAwIHx8IGkgPj0gbClyZXR1cm4gVE9fU1RSSU5HID8gJycgOiB1bmRlZmluZWQ7XG4gICAgYSA9IHMuY2hhckNvZGVBdChpKTtcbiAgICByZXR1cm4gYSA8IDB4ZDgwMCB8fCBhID4gMHhkYmZmIHx8IGkgKyAxID09PSBsIHx8IChiID0gcy5jaGFyQ29kZUF0KGkgKyAxKSkgPCAweGRjMDAgfHwgYiA+IDB4ZGZmZlxuICAgICAgPyBUT19TVFJJTkcgPyBzLmNoYXJBdChpKSA6IGFcbiAgICAgIDogVE9fU1RSSU5HID8gcy5zbGljZShpLCBpICsgMikgOiAoYSAtIDB4ZDgwMCA8PCAxMCkgKyAoYiAtIDB4ZGMwMCkgKyAweDEwMDAwO1xuICB9O1xufTsiLCIvLyBoZWxwZXIgZm9yIFN0cmluZyN7c3RhcnRzV2l0aCwgZW5kc1dpdGgsIGluY2x1ZGVzfVxudmFyIGlzUmVnRXhwID0gcmVxdWlyZSgnLi9faXMtcmVnZXhwJylcbiAgLCBkZWZpbmVkICA9IHJlcXVpcmUoJy4vX2RlZmluZWQnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbih0aGF0LCBzZWFyY2hTdHJpbmcsIE5BTUUpe1xuICBpZihpc1JlZ0V4cChzZWFyY2hTdHJpbmcpKXRocm93IFR5cGVFcnJvcignU3RyaW5nIycgKyBOQU1FICsgXCIgZG9lc24ndCBhY2NlcHQgcmVnZXghXCIpO1xuICByZXR1cm4gU3RyaW5nKGRlZmluZWQodGhhdCkpO1xufTsiLCJ2YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpXG4gICwgZmFpbHMgICA9IHJlcXVpcmUoJy4vX2ZhaWxzJylcbiAgLCBkZWZpbmVkID0gcmVxdWlyZSgnLi9fZGVmaW5lZCcpXG4gICwgcXVvdCAgICA9IC9cIi9nO1xuLy8gQi4yLjMuMi4xIENyZWF0ZUhUTUwoc3RyaW5nLCB0YWcsIGF0dHJpYnV0ZSwgdmFsdWUpXG52YXIgY3JlYXRlSFRNTCA9IGZ1bmN0aW9uKHN0cmluZywgdGFnLCBhdHRyaWJ1dGUsIHZhbHVlKSB7XG4gIHZhciBTICA9IFN0cmluZyhkZWZpbmVkKHN0cmluZykpXG4gICAgLCBwMSA9ICc8JyArIHRhZztcbiAgaWYoYXR0cmlidXRlICE9PSAnJylwMSArPSAnICcgKyBhdHRyaWJ1dGUgKyAnPVwiJyArIFN0cmluZyh2YWx1ZSkucmVwbGFjZShxdW90LCAnJnF1b3Q7JykgKyAnXCInO1xuICByZXR1cm4gcDEgKyAnPicgKyBTICsgJzwvJyArIHRhZyArICc+Jztcbn07XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKE5BTUUsIGV4ZWMpe1xuICB2YXIgTyA9IHt9O1xuICBPW05BTUVdID0gZXhlYyhjcmVhdGVIVE1MKTtcbiAgJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiBmYWlscyhmdW5jdGlvbigpe1xuICAgIHZhciB0ZXN0ID0gJydbTkFNRV0oJ1wiJyk7XG4gICAgcmV0dXJuIHRlc3QgIT09IHRlc3QudG9Mb3dlckNhc2UoKSB8fCB0ZXN0LnNwbGl0KCdcIicpLmxlbmd0aCA+IDM7XG4gIH0pLCAnU3RyaW5nJywgTyk7XG59OyIsIi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLXN0cmluZy1wYWQtc3RhcnQtZW5kXG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuL190by1sZW5ndGgnKVxuICAsIHJlcGVhdCAgID0gcmVxdWlyZSgnLi9fc3RyaW5nLXJlcGVhdCcpXG4gICwgZGVmaW5lZCAgPSByZXF1aXJlKCcuL19kZWZpbmVkJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24odGhhdCwgbWF4TGVuZ3RoLCBmaWxsU3RyaW5nLCBsZWZ0KXtcbiAgdmFyIFMgICAgICAgICAgICA9IFN0cmluZyhkZWZpbmVkKHRoYXQpKVxuICAgICwgc3RyaW5nTGVuZ3RoID0gUy5sZW5ndGhcbiAgICAsIGZpbGxTdHIgICAgICA9IGZpbGxTdHJpbmcgPT09IHVuZGVmaW5lZCA/ICcgJyA6IFN0cmluZyhmaWxsU3RyaW5nKVxuICAgICwgaW50TWF4TGVuZ3RoID0gdG9MZW5ndGgobWF4TGVuZ3RoKTtcbiAgaWYoaW50TWF4TGVuZ3RoIDw9IHN0cmluZ0xlbmd0aCB8fCBmaWxsU3RyID09ICcnKXJldHVybiBTO1xuICB2YXIgZmlsbExlbiA9IGludE1heExlbmd0aCAtIHN0cmluZ0xlbmd0aFxuICAgICwgc3RyaW5nRmlsbGVyID0gcmVwZWF0LmNhbGwoZmlsbFN0ciwgTWF0aC5jZWlsKGZpbGxMZW4gLyBmaWxsU3RyLmxlbmd0aCkpO1xuICBpZihzdHJpbmdGaWxsZXIubGVuZ3RoID4gZmlsbExlbilzdHJpbmdGaWxsZXIgPSBzdHJpbmdGaWxsZXIuc2xpY2UoMCwgZmlsbExlbik7XG4gIHJldHVybiBsZWZ0ID8gc3RyaW5nRmlsbGVyICsgUyA6IFMgKyBzdHJpbmdGaWxsZXI7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHRvSW50ZWdlciA9IHJlcXVpcmUoJy4vX3RvLWludGVnZXInKVxuICAsIGRlZmluZWQgICA9IHJlcXVpcmUoJy4vX2RlZmluZWQnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiByZXBlYXQoY291bnQpe1xuICB2YXIgc3RyID0gU3RyaW5nKGRlZmluZWQodGhpcykpXG4gICAgLCByZXMgPSAnJ1xuICAgICwgbiAgID0gdG9JbnRlZ2VyKGNvdW50KTtcbiAgaWYobiA8IDAgfHwgbiA9PSBJbmZpbml0eSl0aHJvdyBSYW5nZUVycm9yKFwiQ291bnQgY2FuJ3QgYmUgbmVnYXRpdmVcIik7XG4gIGZvcig7biA+IDA7IChuID4+Pj0gMSkgJiYgKHN0ciArPSBzdHIpKWlmKG4gJiAxKXJlcyArPSBzdHI7XG4gIHJldHVybiByZXM7XG59OyIsInZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0JylcbiAgLCBkZWZpbmVkID0gcmVxdWlyZSgnLi9fZGVmaW5lZCcpXG4gICwgZmFpbHMgICA9IHJlcXVpcmUoJy4vX2ZhaWxzJylcbiAgLCBzcGFjZXMgID0gcmVxdWlyZSgnLi9fc3RyaW5nLXdzJylcbiAgLCBzcGFjZSAgID0gJ1snICsgc3BhY2VzICsgJ10nXG4gICwgbm9uICAgICA9ICdcXHUyMDBiXFx1MDA4NSdcbiAgLCBsdHJpbSAgID0gUmVnRXhwKCdeJyArIHNwYWNlICsgc3BhY2UgKyAnKicpXG4gICwgcnRyaW0gICA9IFJlZ0V4cChzcGFjZSArIHNwYWNlICsgJyokJyk7XG5cbnZhciBleHBvcnRlciA9IGZ1bmN0aW9uKEtFWSwgZXhlYywgQUxJQVMpe1xuICB2YXIgZXhwICAgPSB7fTtcbiAgdmFyIEZPUkNFID0gZmFpbHMoZnVuY3Rpb24oKXtcbiAgICByZXR1cm4gISFzcGFjZXNbS0VZXSgpIHx8IG5vbltLRVldKCkgIT0gbm9uO1xuICB9KTtcbiAgdmFyIGZuID0gZXhwW0tFWV0gPSBGT1JDRSA/IGV4ZWModHJpbSkgOiBzcGFjZXNbS0VZXTtcbiAgaWYoQUxJQVMpZXhwW0FMSUFTXSA9IGZuO1xuICAkZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuRiAqIEZPUkNFLCAnU3RyaW5nJywgZXhwKTtcbn07XG5cbi8vIDEgLT4gU3RyaW5nI3RyaW1MZWZ0XG4vLyAyIC0+IFN0cmluZyN0cmltUmlnaHRcbi8vIDMgLT4gU3RyaW5nI3RyaW1cbnZhciB0cmltID0gZXhwb3J0ZXIudHJpbSA9IGZ1bmN0aW9uKHN0cmluZywgVFlQRSl7XG4gIHN0cmluZyA9IFN0cmluZyhkZWZpbmVkKHN0cmluZykpO1xuICBpZihUWVBFICYgMSlzdHJpbmcgPSBzdHJpbmcucmVwbGFjZShsdHJpbSwgJycpO1xuICBpZihUWVBFICYgMilzdHJpbmcgPSBzdHJpbmcucmVwbGFjZShydHJpbSwgJycpO1xuICByZXR1cm4gc3RyaW5nO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRlcjsiLCJtb2R1bGUuZXhwb3J0cyA9ICdcXHgwOVxceDBBXFx4MEJcXHgwQ1xceDBEXFx4MjBcXHhBMFxcdTE2ODBcXHUxODBFXFx1MjAwMFxcdTIwMDFcXHUyMDAyXFx1MjAwMycgK1xuICAnXFx1MjAwNFxcdTIwMDVcXHUyMDA2XFx1MjAwN1xcdTIwMDhcXHUyMDA5XFx1MjAwQVxcdTIwMkZcXHUyMDVGXFx1MzAwMFxcdTIwMjhcXHUyMDI5XFx1RkVGRic7IiwidmFyIGN0eCAgICAgICAgICAgICAgICA9IHJlcXVpcmUoJy4vX2N0eCcpXG4gICwgaW52b2tlICAgICAgICAgICAgID0gcmVxdWlyZSgnLi9faW52b2tlJylcbiAgLCBodG1sICAgICAgICAgICAgICAgPSByZXF1aXJlKCcuL19odG1sJylcbiAgLCBjZWwgICAgICAgICAgICAgICAgPSByZXF1aXJlKCcuL19kb20tY3JlYXRlJylcbiAgLCBnbG9iYWwgICAgICAgICAgICAgPSByZXF1aXJlKCcuL19nbG9iYWwnKVxuICAsIHByb2Nlc3MgICAgICAgICAgICA9IGdsb2JhbC5wcm9jZXNzXG4gICwgc2V0VGFzayAgICAgICAgICAgID0gZ2xvYmFsLnNldEltbWVkaWF0ZVxuICAsIGNsZWFyVGFzayAgICAgICAgICA9IGdsb2JhbC5jbGVhckltbWVkaWF0ZVxuICAsIE1lc3NhZ2VDaGFubmVsICAgICA9IGdsb2JhbC5NZXNzYWdlQ2hhbm5lbFxuICAsIGNvdW50ZXIgICAgICAgICAgICA9IDBcbiAgLCBxdWV1ZSAgICAgICAgICAgICAgPSB7fVxuICAsIE9OUkVBRFlTVEFURUNIQU5HRSA9ICdvbnJlYWR5c3RhdGVjaGFuZ2UnXG4gICwgZGVmZXIsIGNoYW5uZWwsIHBvcnQ7XG52YXIgcnVuID0gZnVuY3Rpb24oKXtcbiAgdmFyIGlkID0gK3RoaXM7XG4gIGlmKHF1ZXVlLmhhc093blByb3BlcnR5KGlkKSl7XG4gICAgdmFyIGZuID0gcXVldWVbaWRdO1xuICAgIGRlbGV0ZSBxdWV1ZVtpZF07XG4gICAgZm4oKTtcbiAgfVxufTtcbnZhciBsaXN0ZW5lciA9IGZ1bmN0aW9uKGV2ZW50KXtcbiAgcnVuLmNhbGwoZXZlbnQuZGF0YSk7XG59O1xuLy8gTm9kZS5qcyAwLjkrICYgSUUxMCsgaGFzIHNldEltbWVkaWF0ZSwgb3RoZXJ3aXNlOlxuaWYoIXNldFRhc2sgfHwgIWNsZWFyVGFzayl7XG4gIHNldFRhc2sgPSBmdW5jdGlvbiBzZXRJbW1lZGlhdGUoZm4pe1xuICAgIHZhciBhcmdzID0gW10sIGkgPSAxO1xuICAgIHdoaWxlKGFyZ3VtZW50cy5sZW5ndGggPiBpKWFyZ3MucHVzaChhcmd1bWVudHNbaSsrXSk7XG4gICAgcXVldWVbKytjb3VudGVyXSA9IGZ1bmN0aW9uKCl7XG4gICAgICBpbnZva2UodHlwZW9mIGZuID09ICdmdW5jdGlvbicgPyBmbiA6IEZ1bmN0aW9uKGZuKSwgYXJncyk7XG4gICAgfTtcbiAgICBkZWZlcihjb3VudGVyKTtcbiAgICByZXR1cm4gY291bnRlcjtcbiAgfTtcbiAgY2xlYXJUYXNrID0gZnVuY3Rpb24gY2xlYXJJbW1lZGlhdGUoaWQpe1xuICAgIGRlbGV0ZSBxdWV1ZVtpZF07XG4gIH07XG4gIC8vIE5vZGUuanMgMC44LVxuICBpZihyZXF1aXJlKCcuL19jb2YnKShwcm9jZXNzKSA9PSAncHJvY2Vzcycpe1xuICAgIGRlZmVyID0gZnVuY3Rpb24oaWQpe1xuICAgICAgcHJvY2Vzcy5uZXh0VGljayhjdHgocnVuLCBpZCwgMSkpO1xuICAgIH07XG4gIC8vIEJyb3dzZXJzIHdpdGggTWVzc2FnZUNoYW5uZWwsIGluY2x1ZGVzIFdlYldvcmtlcnNcbiAgfSBlbHNlIGlmKE1lc3NhZ2VDaGFubmVsKXtcbiAgICBjaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsO1xuICAgIHBvcnQgICAgPSBjaGFubmVsLnBvcnQyO1xuICAgIGNoYW5uZWwucG9ydDEub25tZXNzYWdlID0gbGlzdGVuZXI7XG4gICAgZGVmZXIgPSBjdHgocG9ydC5wb3N0TWVzc2FnZSwgcG9ydCwgMSk7XG4gIC8vIEJyb3dzZXJzIHdpdGggcG9zdE1lc3NhZ2UsIHNraXAgV2ViV29ya2Vyc1xuICAvLyBJRTggaGFzIHBvc3RNZXNzYWdlLCBidXQgaXQncyBzeW5jICYgdHlwZW9mIGl0cyBwb3N0TWVzc2FnZSBpcyAnb2JqZWN0J1xuICB9IGVsc2UgaWYoZ2xvYmFsLmFkZEV2ZW50TGlzdGVuZXIgJiYgdHlwZW9mIHBvc3RNZXNzYWdlID09ICdmdW5jdGlvbicgJiYgIWdsb2JhbC5pbXBvcnRTY3JpcHRzKXtcbiAgICBkZWZlciA9IGZ1bmN0aW9uKGlkKXtcbiAgICAgIGdsb2JhbC5wb3N0TWVzc2FnZShpZCArICcnLCAnKicpO1xuICAgIH07XG4gICAgZ2xvYmFsLmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBsaXN0ZW5lciwgZmFsc2UpO1xuICAvLyBJRTgtXG4gIH0gZWxzZSBpZihPTlJFQURZU1RBVEVDSEFOR0UgaW4gY2VsKCdzY3JpcHQnKSl7XG4gICAgZGVmZXIgPSBmdW5jdGlvbihpZCl7XG4gICAgICBodG1sLmFwcGVuZENoaWxkKGNlbCgnc2NyaXB0JykpW09OUkVBRFlTVEFURUNIQU5HRV0gPSBmdW5jdGlvbigpe1xuICAgICAgICBodG1sLnJlbW92ZUNoaWxkKHRoaXMpO1xuICAgICAgICBydW4uY2FsbChpZCk7XG4gICAgICB9O1xuICAgIH07XG4gIC8vIFJlc3Qgb2xkIGJyb3dzZXJzXG4gIH0gZWxzZSB7XG4gICAgZGVmZXIgPSBmdW5jdGlvbihpZCl7XG4gICAgICBzZXRUaW1lb3V0KGN0eChydW4sIGlkLCAxKSwgMCk7XG4gICAgfTtcbiAgfVxufVxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIHNldDogICBzZXRUYXNrLFxuICBjbGVhcjogY2xlYXJUYXNrXG59OyIsInZhciB0b0ludGVnZXIgPSByZXF1aXJlKCcuL190by1pbnRlZ2VyJylcbiAgLCBtYXggICAgICAgPSBNYXRoLm1heFxuICAsIG1pbiAgICAgICA9IE1hdGgubWluO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihpbmRleCwgbGVuZ3RoKXtcbiAgaW5kZXggPSB0b0ludGVnZXIoaW5kZXgpO1xuICByZXR1cm4gaW5kZXggPCAwID8gbWF4KGluZGV4ICsgbGVuZ3RoLCAwKSA6IG1pbihpbmRleCwgbGVuZ3RoKTtcbn07IiwiLy8gNy4xLjQgVG9JbnRlZ2VyXG52YXIgY2VpbCAgPSBNYXRoLmNlaWxcbiAgLCBmbG9vciA9IE1hdGguZmxvb3I7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGl0KXtcbiAgcmV0dXJuIGlzTmFOKGl0ID0gK2l0KSA/IDAgOiAoaXQgPiAwID8gZmxvb3IgOiBjZWlsKShpdCk7XG59OyIsIi8vIHRvIGluZGV4ZWQgb2JqZWN0LCB0b09iamVjdCB3aXRoIGZhbGxiYWNrIGZvciBub24tYXJyYXktbGlrZSBFUzMgc3RyaW5nc1xudmFyIElPYmplY3QgPSByZXF1aXJlKCcuL19pb2JqZWN0JylcbiAgLCBkZWZpbmVkID0gcmVxdWlyZSgnLi9fZGVmaW5lZCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihpdCl7XG4gIHJldHVybiBJT2JqZWN0KGRlZmluZWQoaXQpKTtcbn07IiwiLy8gNy4xLjE1IFRvTGVuZ3RoXG52YXIgdG9JbnRlZ2VyID0gcmVxdWlyZSgnLi9fdG8taW50ZWdlcicpXG4gICwgbWluICAgICAgID0gTWF0aC5taW47XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGl0KXtcbiAgcmV0dXJuIGl0ID4gMCA/IG1pbih0b0ludGVnZXIoaXQpLCAweDFmZmZmZmZmZmZmZmZmKSA6IDA7IC8vIHBvdygyLCA1MykgLSAxID09IDkwMDcxOTkyNTQ3NDA5OTFcbn07IiwiLy8gNy4xLjEzIFRvT2JqZWN0KGFyZ3VtZW50KVxudmFyIGRlZmluZWQgPSByZXF1aXJlKCcuL19kZWZpbmVkJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGl0KXtcbiAgcmV0dXJuIE9iamVjdChkZWZpbmVkKGl0KSk7XG59OyIsIi8vIDcuMS4xIFRvUHJpbWl0aXZlKGlucHV0IFssIFByZWZlcnJlZFR5cGVdKVxudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG4vLyBpbnN0ZWFkIG9mIHRoZSBFUzYgc3BlYyB2ZXJzaW9uLCB3ZSBkaWRuJ3QgaW1wbGVtZW50IEBAdG9QcmltaXRpdmUgY2FzZVxuLy8gYW5kIHRoZSBzZWNvbmQgYXJndW1lbnQgLSBmbGFnIC0gcHJlZmVycmVkIHR5cGUgaXMgYSBzdHJpbmdcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaXQsIFMpe1xuICBpZighaXNPYmplY3QoaXQpKXJldHVybiBpdDtcbiAgdmFyIGZuLCB2YWw7XG4gIGlmKFMgJiYgdHlwZW9mIChmbiA9IGl0LnRvU3RyaW5nKSA9PSAnZnVuY3Rpb24nICYmICFpc09iamVjdCh2YWwgPSBmbi5jYWxsKGl0KSkpcmV0dXJuIHZhbDtcbiAgaWYodHlwZW9mIChmbiA9IGl0LnZhbHVlT2YpID09ICdmdW5jdGlvbicgJiYgIWlzT2JqZWN0KHZhbCA9IGZuLmNhbGwoaXQpKSlyZXR1cm4gdmFsO1xuICBpZighUyAmJiB0eXBlb2YgKGZuID0gaXQudG9TdHJpbmcpID09ICdmdW5jdGlvbicgJiYgIWlzT2JqZWN0KHZhbCA9IGZuLmNhbGwoaXQpKSlyZXR1cm4gdmFsO1xuICB0aHJvdyBUeXBlRXJyb3IoXCJDYW4ndCBjb252ZXJ0IG9iamVjdCB0byBwcmltaXRpdmUgdmFsdWVcIik7XG59OyIsIid1c2Ugc3RyaWN0JztcbmlmKHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykpe1xuICB2YXIgTElCUkFSWSAgICAgICAgICAgICA9IHJlcXVpcmUoJy4vX2xpYnJhcnknKVxuICAgICwgZ2xvYmFsICAgICAgICAgICAgICA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpXG4gICAgLCBmYWlscyAgICAgICAgICAgICAgID0gcmVxdWlyZSgnLi9fZmFpbHMnKVxuICAgICwgJGV4cG9ydCAgICAgICAgICAgICA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpXG4gICAgLCAkdHlwZWQgICAgICAgICAgICAgID0gcmVxdWlyZSgnLi9fdHlwZWQnKVxuICAgICwgJGJ1ZmZlciAgICAgICAgICAgICA9IHJlcXVpcmUoJy4vX3R5cGVkLWJ1ZmZlcicpXG4gICAgLCBjdHggICAgICAgICAgICAgICAgID0gcmVxdWlyZSgnLi9fY3R4JylcbiAgICAsIGFuSW5zdGFuY2UgICAgICAgICAgPSByZXF1aXJlKCcuL19hbi1pbnN0YW5jZScpXG4gICAgLCBwcm9wZXJ0eURlc2MgICAgICAgID0gcmVxdWlyZSgnLi9fcHJvcGVydHktZGVzYycpXG4gICAgLCBoaWRlICAgICAgICAgICAgICAgID0gcmVxdWlyZSgnLi9faGlkZScpXG4gICAgLCByZWRlZmluZUFsbCAgICAgICAgID0gcmVxdWlyZSgnLi9fcmVkZWZpbmUtYWxsJylcbiAgICAsIHRvSW50ZWdlciAgICAgICAgICAgPSByZXF1aXJlKCcuL190by1pbnRlZ2VyJylcbiAgICAsIHRvTGVuZ3RoICAgICAgICAgICAgPSByZXF1aXJlKCcuL190by1sZW5ndGgnKVxuICAgICwgdG9JbmRleCAgICAgICAgICAgICA9IHJlcXVpcmUoJy4vX3RvLWluZGV4JylcbiAgICAsIHRvUHJpbWl0aXZlICAgICAgICAgPSByZXF1aXJlKCcuL190by1wcmltaXRpdmUnKVxuICAgICwgaGFzICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoJy4vX2hhcycpXG4gICAgLCBzYW1lICAgICAgICAgICAgICAgID0gcmVxdWlyZSgnLi9fc2FtZS12YWx1ZScpXG4gICAgLCBjbGFzc29mICAgICAgICAgICAgID0gcmVxdWlyZSgnLi9fY2xhc3NvZicpXG4gICAgLCBpc09iamVjdCAgICAgICAgICAgID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0JylcbiAgICAsIHRvT2JqZWN0ICAgICAgICAgICAgPSByZXF1aXJlKCcuL190by1vYmplY3QnKVxuICAgICwgaXNBcnJheUl0ZXIgICAgICAgICA9IHJlcXVpcmUoJy4vX2lzLWFycmF5LWl0ZXInKVxuICAgICwgY3JlYXRlICAgICAgICAgICAgICA9IHJlcXVpcmUoJy4vX29iamVjdC1jcmVhdGUnKVxuICAgICwgZ2V0UHJvdG90eXBlT2YgICAgICA9IHJlcXVpcmUoJy4vX29iamVjdC1ncG8nKVxuICAgICwgZ09QTiAgICAgICAgICAgICAgICA9IHJlcXVpcmUoJy4vX29iamVjdC1nb3BuJykuZlxuICAgICwgZ2V0SXRlckZuICAgICAgICAgICA9IHJlcXVpcmUoJy4vY29yZS5nZXQtaXRlcmF0b3ItbWV0aG9kJylcbiAgICAsIHVpZCAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCcuL191aWQnKVxuICAgICwgd2tzICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoJy4vX3drcycpXG4gICAgLCBjcmVhdGVBcnJheU1ldGhvZCAgID0gcmVxdWlyZSgnLi9fYXJyYXktbWV0aG9kcycpXG4gICAgLCBjcmVhdGVBcnJheUluY2x1ZGVzID0gcmVxdWlyZSgnLi9fYXJyYXktaW5jbHVkZXMnKVxuICAgICwgc3BlY2llc0NvbnN0cnVjdG9yICA9IHJlcXVpcmUoJy4vX3NwZWNpZXMtY29uc3RydWN0b3InKVxuICAgICwgQXJyYXlJdGVyYXRvcnMgICAgICA9IHJlcXVpcmUoJy4vZXM2LmFycmF5Lml0ZXJhdG9yJylcbiAgICAsIEl0ZXJhdG9ycyAgICAgICAgICAgPSByZXF1aXJlKCcuL19pdGVyYXRvcnMnKVxuICAgICwgJGl0ZXJEZXRlY3QgICAgICAgICA9IHJlcXVpcmUoJy4vX2l0ZXItZGV0ZWN0JylcbiAgICAsIHNldFNwZWNpZXMgICAgICAgICAgPSByZXF1aXJlKCcuL19zZXQtc3BlY2llcycpXG4gICAgLCBhcnJheUZpbGwgICAgICAgICAgID0gcmVxdWlyZSgnLi9fYXJyYXktZmlsbCcpXG4gICAgLCBhcnJheUNvcHlXaXRoaW4gICAgID0gcmVxdWlyZSgnLi9fYXJyYXktY29weS13aXRoaW4nKVxuICAgICwgJERQICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpXG4gICAgLCAkR09QRCAgICAgICAgICAgICAgID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdvcGQnKVxuICAgICwgZFAgICAgICAgICAgICAgICAgICA9ICREUC5mXG4gICAgLCBnT1BEICAgICAgICAgICAgICAgID0gJEdPUEQuZlxuICAgICwgUmFuZ2VFcnJvciAgICAgICAgICA9IGdsb2JhbC5SYW5nZUVycm9yXG4gICAgLCBUeXBlRXJyb3IgICAgICAgICAgID0gZ2xvYmFsLlR5cGVFcnJvclxuICAgICwgVWludDhBcnJheSAgICAgICAgICA9IGdsb2JhbC5VaW50OEFycmF5XG4gICAgLCBBUlJBWV9CVUZGRVIgICAgICAgID0gJ0FycmF5QnVmZmVyJ1xuICAgICwgU0hBUkVEX0JVRkZFUiAgICAgICA9ICdTaGFyZWQnICsgQVJSQVlfQlVGRkVSXG4gICAgLCBCWVRFU19QRVJfRUxFTUVOVCAgID0gJ0JZVEVTX1BFUl9FTEVNRU5UJ1xuICAgICwgUFJPVE9UWVBFICAgICAgICAgICA9ICdwcm90b3R5cGUnXG4gICAgLCBBcnJheVByb3RvICAgICAgICAgID0gQXJyYXlbUFJPVE9UWVBFXVxuICAgICwgJEFycmF5QnVmZmVyICAgICAgICA9ICRidWZmZXIuQXJyYXlCdWZmZXJcbiAgICAsICREYXRhVmlldyAgICAgICAgICAgPSAkYnVmZmVyLkRhdGFWaWV3XG4gICAgLCBhcnJheUZvckVhY2ggICAgICAgID0gY3JlYXRlQXJyYXlNZXRob2QoMClcbiAgICAsIGFycmF5RmlsdGVyICAgICAgICAgPSBjcmVhdGVBcnJheU1ldGhvZCgyKVxuICAgICwgYXJyYXlTb21lICAgICAgICAgICA9IGNyZWF0ZUFycmF5TWV0aG9kKDMpXG4gICAgLCBhcnJheUV2ZXJ5ICAgICAgICAgID0gY3JlYXRlQXJyYXlNZXRob2QoNClcbiAgICAsIGFycmF5RmluZCAgICAgICAgICAgPSBjcmVhdGVBcnJheU1ldGhvZCg1KVxuICAgICwgYXJyYXlGaW5kSW5kZXggICAgICA9IGNyZWF0ZUFycmF5TWV0aG9kKDYpXG4gICAgLCBhcnJheUluY2x1ZGVzICAgICAgID0gY3JlYXRlQXJyYXlJbmNsdWRlcyh0cnVlKVxuICAgICwgYXJyYXlJbmRleE9mICAgICAgICA9IGNyZWF0ZUFycmF5SW5jbHVkZXMoZmFsc2UpXG4gICAgLCBhcnJheVZhbHVlcyAgICAgICAgID0gQXJyYXlJdGVyYXRvcnMudmFsdWVzXG4gICAgLCBhcnJheUtleXMgICAgICAgICAgID0gQXJyYXlJdGVyYXRvcnMua2V5c1xuICAgICwgYXJyYXlFbnRyaWVzICAgICAgICA9IEFycmF5SXRlcmF0b3JzLmVudHJpZXNcbiAgICAsIGFycmF5TGFzdEluZGV4T2YgICAgPSBBcnJheVByb3RvLmxhc3RJbmRleE9mXG4gICAgLCBhcnJheVJlZHVjZSAgICAgICAgID0gQXJyYXlQcm90by5yZWR1Y2VcbiAgICAsIGFycmF5UmVkdWNlUmlnaHQgICAgPSBBcnJheVByb3RvLnJlZHVjZVJpZ2h0XG4gICAgLCBhcnJheUpvaW4gICAgICAgICAgID0gQXJyYXlQcm90by5qb2luXG4gICAgLCBhcnJheVNvcnQgICAgICAgICAgID0gQXJyYXlQcm90by5zb3J0XG4gICAgLCBhcnJheVNsaWNlICAgICAgICAgID0gQXJyYXlQcm90by5zbGljZVxuICAgICwgYXJyYXlUb1N0cmluZyAgICAgICA9IEFycmF5UHJvdG8udG9TdHJpbmdcbiAgICAsIGFycmF5VG9Mb2NhbGVTdHJpbmcgPSBBcnJheVByb3RvLnRvTG9jYWxlU3RyaW5nXG4gICAgLCBJVEVSQVRPUiAgICAgICAgICAgID0gd2tzKCdpdGVyYXRvcicpXG4gICAgLCBUQUcgICAgICAgICAgICAgICAgID0gd2tzKCd0b1N0cmluZ1RhZycpXG4gICAgLCBUWVBFRF9DT05TVFJVQ1RPUiAgID0gdWlkKCd0eXBlZF9jb25zdHJ1Y3RvcicpXG4gICAgLCBERUZfQ09OU1RSVUNUT1IgICAgID0gdWlkKCdkZWZfY29uc3RydWN0b3InKVxuICAgICwgQUxMX0NPTlNUUlVDVE9SUyAgICA9ICR0eXBlZC5DT05TVFJcbiAgICAsIFRZUEVEX0FSUkFZICAgICAgICAgPSAkdHlwZWQuVFlQRURcbiAgICAsIFZJRVcgICAgICAgICAgICAgICAgPSAkdHlwZWQuVklFV1xuICAgICwgV1JPTkdfTEVOR1RIICAgICAgICA9ICdXcm9uZyBsZW5ndGghJztcblxuICB2YXIgJG1hcCA9IGNyZWF0ZUFycmF5TWV0aG9kKDEsIGZ1bmN0aW9uKE8sIGxlbmd0aCl7XG4gICAgcmV0dXJuIGFsbG9jYXRlKHNwZWNpZXNDb25zdHJ1Y3RvcihPLCBPW0RFRl9DT05TVFJVQ1RPUl0pLCBsZW5ndGgpO1xuICB9KTtcblxuICB2YXIgTElUVExFX0VORElBTiA9IGZhaWxzKGZ1bmN0aW9uKCl7XG4gICAgcmV0dXJuIG5ldyBVaW50OEFycmF5KG5ldyBVaW50MTZBcnJheShbMV0pLmJ1ZmZlcilbMF0gPT09IDE7XG4gIH0pO1xuXG4gIHZhciBGT1JDRURfU0VUID0gISFVaW50OEFycmF5ICYmICEhVWludDhBcnJheVtQUk9UT1RZUEVdLnNldCAmJiBmYWlscyhmdW5jdGlvbigpe1xuICAgIG5ldyBVaW50OEFycmF5KDEpLnNldCh7fSk7XG4gIH0pO1xuXG4gIHZhciBzdHJpY3RUb0xlbmd0aCA9IGZ1bmN0aW9uKGl0LCBTQU1FKXtcbiAgICBpZihpdCA9PT0gdW5kZWZpbmVkKXRocm93IFR5cGVFcnJvcihXUk9OR19MRU5HVEgpO1xuICAgIHZhciBudW1iZXIgPSAraXRcbiAgICAgICwgbGVuZ3RoID0gdG9MZW5ndGgoaXQpO1xuICAgIGlmKFNBTUUgJiYgIXNhbWUobnVtYmVyLCBsZW5ndGgpKXRocm93IFJhbmdlRXJyb3IoV1JPTkdfTEVOR1RIKTtcbiAgICByZXR1cm4gbGVuZ3RoO1xuICB9O1xuXG4gIHZhciB0b09mZnNldCA9IGZ1bmN0aW9uKGl0LCBCWVRFUyl7XG4gICAgdmFyIG9mZnNldCA9IHRvSW50ZWdlcihpdCk7XG4gICAgaWYob2Zmc2V0IDwgMCB8fCBvZmZzZXQgJSBCWVRFUyl0aHJvdyBSYW5nZUVycm9yKCdXcm9uZyBvZmZzZXQhJyk7XG4gICAgcmV0dXJuIG9mZnNldDtcbiAgfTtcblxuICB2YXIgdmFsaWRhdGUgPSBmdW5jdGlvbihpdCl7XG4gICAgaWYoaXNPYmplY3QoaXQpICYmIFRZUEVEX0FSUkFZIGluIGl0KXJldHVybiBpdDtcbiAgICB0aHJvdyBUeXBlRXJyb3IoaXQgKyAnIGlzIG5vdCBhIHR5cGVkIGFycmF5IScpO1xuICB9O1xuXG4gIHZhciBhbGxvY2F0ZSA9IGZ1bmN0aW9uKEMsIGxlbmd0aCl7XG4gICAgaWYoIShpc09iamVjdChDKSAmJiBUWVBFRF9DT05TVFJVQ1RPUiBpbiBDKSl7XG4gICAgICB0aHJvdyBUeXBlRXJyb3IoJ0l0IGlzIG5vdCBhIHR5cGVkIGFycmF5IGNvbnN0cnVjdG9yIScpO1xuICAgIH0gcmV0dXJuIG5ldyBDKGxlbmd0aCk7XG4gIH07XG5cbiAgdmFyIHNwZWNpZXNGcm9tTGlzdCA9IGZ1bmN0aW9uKE8sIGxpc3Qpe1xuICAgIHJldHVybiBmcm9tTGlzdChzcGVjaWVzQ29uc3RydWN0b3IoTywgT1tERUZfQ09OU1RSVUNUT1JdKSwgbGlzdCk7XG4gIH07XG5cbiAgdmFyIGZyb21MaXN0ID0gZnVuY3Rpb24oQywgbGlzdCl7XG4gICAgdmFyIGluZGV4ICA9IDBcbiAgICAgICwgbGVuZ3RoID0gbGlzdC5sZW5ndGhcbiAgICAgICwgcmVzdWx0ID0gYWxsb2NhdGUoQywgbGVuZ3RoKTtcbiAgICB3aGlsZShsZW5ndGggPiBpbmRleClyZXN1bHRbaW5kZXhdID0gbGlzdFtpbmRleCsrXTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xuXG4gIHZhciBhZGRHZXR0ZXIgPSBmdW5jdGlvbihpdCwga2V5LCBpbnRlcm5hbCl7XG4gICAgZFAoaXQsIGtleSwge2dldDogZnVuY3Rpb24oKXsgcmV0dXJuIHRoaXMuX2RbaW50ZXJuYWxdOyB9fSk7XG4gIH07XG5cbiAgdmFyICRmcm9tID0gZnVuY3Rpb24gZnJvbShzb3VyY2UgLyosIG1hcGZuLCB0aGlzQXJnICovKXtcbiAgICB2YXIgTyAgICAgICA9IHRvT2JqZWN0KHNvdXJjZSlcbiAgICAgICwgYUxlbiAgICA9IGFyZ3VtZW50cy5sZW5ndGhcbiAgICAgICwgbWFwZm4gICA9IGFMZW4gPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkXG4gICAgICAsIG1hcHBpbmcgPSBtYXBmbiAhPT0gdW5kZWZpbmVkXG4gICAgICAsIGl0ZXJGbiAgPSBnZXRJdGVyRm4oTylcbiAgICAgICwgaSwgbGVuZ3RoLCB2YWx1ZXMsIHJlc3VsdCwgc3RlcCwgaXRlcmF0b3I7XG4gICAgaWYoaXRlckZuICE9IHVuZGVmaW5lZCAmJiAhaXNBcnJheUl0ZXIoaXRlckZuKSl7XG4gICAgICBmb3IoaXRlcmF0b3IgPSBpdGVyRm4uY2FsbChPKSwgdmFsdWVzID0gW10sIGkgPSAwOyAhKHN0ZXAgPSBpdGVyYXRvci5uZXh0KCkpLmRvbmU7IGkrKyl7XG4gICAgICAgIHZhbHVlcy5wdXNoKHN0ZXAudmFsdWUpO1xuICAgICAgfSBPID0gdmFsdWVzO1xuICAgIH1cbiAgICBpZihtYXBwaW5nICYmIGFMZW4gPiAyKW1hcGZuID0gY3R4KG1hcGZuLCBhcmd1bWVudHNbMl0sIDIpO1xuICAgIGZvcihpID0gMCwgbGVuZ3RoID0gdG9MZW5ndGgoTy5sZW5ndGgpLCByZXN1bHQgPSBhbGxvY2F0ZSh0aGlzLCBsZW5ndGgpOyBsZW5ndGggPiBpOyBpKyspe1xuICAgICAgcmVzdWx0W2ldID0gbWFwcGluZyA/IG1hcGZuKE9baV0sIGkpIDogT1tpXTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcblxuICB2YXIgJG9mID0gZnVuY3Rpb24gb2YoLyouLi5pdGVtcyovKXtcbiAgICB2YXIgaW5kZXggID0gMFxuICAgICAgLCBsZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoXG4gICAgICAsIHJlc3VsdCA9IGFsbG9jYXRlKHRoaXMsIGxlbmd0aCk7XG4gICAgd2hpbGUobGVuZ3RoID4gaW5kZXgpcmVzdWx0W2luZGV4XSA9IGFyZ3VtZW50c1tpbmRleCsrXTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xuXG4gIC8vIGlPUyBTYWZhcmkgNi54IGZhaWxzIGhlcmVcbiAgdmFyIFRPX0xPQ0FMRV9CVUcgPSAhIVVpbnQ4QXJyYXkgJiYgZmFpbHMoZnVuY3Rpb24oKXsgYXJyYXlUb0xvY2FsZVN0cmluZy5jYWxsKG5ldyBVaW50OEFycmF5KDEpKTsgfSk7XG5cbiAgdmFyICR0b0xvY2FsZVN0cmluZyA9IGZ1bmN0aW9uIHRvTG9jYWxlU3RyaW5nKCl7XG4gICAgcmV0dXJuIGFycmF5VG9Mb2NhbGVTdHJpbmcuYXBwbHkoVE9fTE9DQUxFX0JVRyA/IGFycmF5U2xpY2UuY2FsbCh2YWxpZGF0ZSh0aGlzKSkgOiB2YWxpZGF0ZSh0aGlzKSwgYXJndW1lbnRzKTtcbiAgfTtcblxuICB2YXIgcHJvdG8gPSB7XG4gICAgY29weVdpdGhpbjogZnVuY3Rpb24gY29weVdpdGhpbih0YXJnZXQsIHN0YXJ0IC8qLCBlbmQgKi8pe1xuICAgICAgcmV0dXJuIGFycmF5Q29weVdpdGhpbi5jYWxsKHZhbGlkYXRlKHRoaXMpLCB0YXJnZXQsIHN0YXJ0LCBhcmd1bWVudHMubGVuZ3RoID4gMiA/IGFyZ3VtZW50c1syXSA6IHVuZGVmaW5lZCk7XG4gICAgfSxcbiAgICBldmVyeTogZnVuY3Rpb24gZXZlcnkoY2FsbGJhY2tmbiAvKiwgdGhpc0FyZyAqLyl7XG4gICAgICByZXR1cm4gYXJyYXlFdmVyeSh2YWxpZGF0ZSh0aGlzKSwgY2FsbGJhY2tmbiwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQpO1xuICAgIH0sXG4gICAgZmlsbDogZnVuY3Rpb24gZmlsbCh2YWx1ZSAvKiwgc3RhcnQsIGVuZCAqLyl7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW51c2VkLXZhcnNcbiAgICAgIHJldHVybiBhcnJheUZpbGwuYXBwbHkodmFsaWRhdGUodGhpcyksIGFyZ3VtZW50cyk7XG4gICAgfSxcbiAgICBmaWx0ZXI6IGZ1bmN0aW9uIGZpbHRlcihjYWxsYmFja2ZuIC8qLCB0aGlzQXJnICovKXtcbiAgICAgIHJldHVybiBzcGVjaWVzRnJvbUxpc3QodGhpcywgYXJyYXlGaWx0ZXIodmFsaWRhdGUodGhpcyksIGNhbGxiYWNrZm4sXG4gICAgICAgIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkKSk7XG4gICAgfSxcbiAgICBmaW5kOiBmdW5jdGlvbiBmaW5kKHByZWRpY2F0ZSAvKiwgdGhpc0FyZyAqLyl7XG4gICAgICByZXR1cm4gYXJyYXlGaW5kKHZhbGlkYXRlKHRoaXMpLCBwcmVkaWNhdGUsIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkKTtcbiAgICB9LFxuICAgIGZpbmRJbmRleDogZnVuY3Rpb24gZmluZEluZGV4KHByZWRpY2F0ZSAvKiwgdGhpc0FyZyAqLyl7XG4gICAgICByZXR1cm4gYXJyYXlGaW5kSW5kZXgodmFsaWRhdGUodGhpcyksIHByZWRpY2F0ZSwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQpO1xuICAgIH0sXG4gICAgZm9yRWFjaDogZnVuY3Rpb24gZm9yRWFjaChjYWxsYmFja2ZuIC8qLCB0aGlzQXJnICovKXtcbiAgICAgIGFycmF5Rm9yRWFjaCh2YWxpZGF0ZSh0aGlzKSwgY2FsbGJhY2tmbiwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQpO1xuICAgIH0sXG4gICAgaW5kZXhPZjogZnVuY3Rpb24gaW5kZXhPZihzZWFyY2hFbGVtZW50IC8qLCBmcm9tSW5kZXggKi8pe1xuICAgICAgcmV0dXJuIGFycmF5SW5kZXhPZih2YWxpZGF0ZSh0aGlzKSwgc2VhcmNoRWxlbWVudCwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQpO1xuICAgIH0sXG4gICAgaW5jbHVkZXM6IGZ1bmN0aW9uIGluY2x1ZGVzKHNlYXJjaEVsZW1lbnQgLyosIGZyb21JbmRleCAqLyl7XG4gICAgICByZXR1cm4gYXJyYXlJbmNsdWRlcyh2YWxpZGF0ZSh0aGlzKSwgc2VhcmNoRWxlbWVudCwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQpO1xuICAgIH0sXG4gICAgam9pbjogZnVuY3Rpb24gam9pbihzZXBhcmF0b3IpeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVudXNlZC12YXJzXG4gICAgICByZXR1cm4gYXJyYXlKb2luLmFwcGx5KHZhbGlkYXRlKHRoaXMpLCBhcmd1bWVudHMpO1xuICAgIH0sXG4gICAgbGFzdEluZGV4T2Y6IGZ1bmN0aW9uIGxhc3RJbmRleE9mKHNlYXJjaEVsZW1lbnQgLyosIGZyb21JbmRleCAqLyl7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW51c2VkLXZhcnNcbiAgICAgIHJldHVybiBhcnJheUxhc3RJbmRleE9mLmFwcGx5KHZhbGlkYXRlKHRoaXMpLCBhcmd1bWVudHMpO1xuICAgIH0sXG4gICAgbWFwOiBmdW5jdGlvbiBtYXAobWFwZm4gLyosIHRoaXNBcmcgKi8pe1xuICAgICAgcmV0dXJuICRtYXAodmFsaWRhdGUodGhpcyksIG1hcGZuLCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCk7XG4gICAgfSxcbiAgICByZWR1Y2U6IGZ1bmN0aW9uIHJlZHVjZShjYWxsYmFja2ZuIC8qLCBpbml0aWFsVmFsdWUgKi8peyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVudXNlZC12YXJzXG4gICAgICByZXR1cm4gYXJyYXlSZWR1Y2UuYXBwbHkodmFsaWRhdGUodGhpcyksIGFyZ3VtZW50cyk7XG4gICAgfSxcbiAgICByZWR1Y2VSaWdodDogZnVuY3Rpb24gcmVkdWNlUmlnaHQoY2FsbGJhY2tmbiAvKiwgaW5pdGlhbFZhbHVlICovKXsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bnVzZWQtdmFyc1xuICAgICAgcmV0dXJuIGFycmF5UmVkdWNlUmlnaHQuYXBwbHkodmFsaWRhdGUodGhpcyksIGFyZ3VtZW50cyk7XG4gICAgfSxcbiAgICByZXZlcnNlOiBmdW5jdGlvbiByZXZlcnNlKCl7XG4gICAgICB2YXIgdGhhdCAgID0gdGhpc1xuICAgICAgICAsIGxlbmd0aCA9IHZhbGlkYXRlKHRoYXQpLmxlbmd0aFxuICAgICAgICAsIG1pZGRsZSA9IE1hdGguZmxvb3IobGVuZ3RoIC8gMilcbiAgICAgICAgLCBpbmRleCAgPSAwXG4gICAgICAgICwgdmFsdWU7XG4gICAgICB3aGlsZShpbmRleCA8IG1pZGRsZSl7XG4gICAgICAgIHZhbHVlICAgICAgICAgPSB0aGF0W2luZGV4XTtcbiAgICAgICAgdGhhdFtpbmRleCsrXSA9IHRoYXRbLS1sZW5ndGhdO1xuICAgICAgICB0aGF0W2xlbmd0aF0gID0gdmFsdWU7XG4gICAgICB9IHJldHVybiB0aGF0O1xuICAgIH0sXG4gICAgc29tZTogZnVuY3Rpb24gc29tZShjYWxsYmFja2ZuIC8qLCB0aGlzQXJnICovKXtcbiAgICAgIHJldHVybiBhcnJheVNvbWUodmFsaWRhdGUodGhpcyksIGNhbGxiYWNrZm4sIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkKTtcbiAgICB9LFxuICAgIHNvcnQ6IGZ1bmN0aW9uIHNvcnQoY29tcGFyZWZuKXtcbiAgICAgIHJldHVybiBhcnJheVNvcnQuY2FsbCh2YWxpZGF0ZSh0aGlzKSwgY29tcGFyZWZuKTtcbiAgICB9LFxuICAgIHN1YmFycmF5OiBmdW5jdGlvbiBzdWJhcnJheShiZWdpbiwgZW5kKXtcbiAgICAgIHZhciBPICAgICAgPSB2YWxpZGF0ZSh0aGlzKVxuICAgICAgICAsIGxlbmd0aCA9IE8ubGVuZ3RoXG4gICAgICAgICwgJGJlZ2luID0gdG9JbmRleChiZWdpbiwgbGVuZ3RoKTtcbiAgICAgIHJldHVybiBuZXcgKHNwZWNpZXNDb25zdHJ1Y3RvcihPLCBPW0RFRl9DT05TVFJVQ1RPUl0pKShcbiAgICAgICAgTy5idWZmZXIsXG4gICAgICAgIE8uYnl0ZU9mZnNldCArICRiZWdpbiAqIE8uQllURVNfUEVSX0VMRU1FTlQsXG4gICAgICAgIHRvTGVuZ3RoKChlbmQgPT09IHVuZGVmaW5lZCA/IGxlbmd0aCA6IHRvSW5kZXgoZW5kLCBsZW5ndGgpKSAtICRiZWdpbilcbiAgICAgICk7XG4gICAgfVxuICB9O1xuXG4gIHZhciAkc2xpY2UgPSBmdW5jdGlvbiBzbGljZShzdGFydCwgZW5kKXtcbiAgICByZXR1cm4gc3BlY2llc0Zyb21MaXN0KHRoaXMsIGFycmF5U2xpY2UuY2FsbCh2YWxpZGF0ZSh0aGlzKSwgc3RhcnQsIGVuZCkpO1xuICB9O1xuXG4gIHZhciAkc2V0ID0gZnVuY3Rpb24gc2V0KGFycmF5TGlrZSAvKiwgb2Zmc2V0ICovKXtcbiAgICB2YWxpZGF0ZSh0aGlzKTtcbiAgICB2YXIgb2Zmc2V0ID0gdG9PZmZzZXQoYXJndW1lbnRzWzFdLCAxKVxuICAgICAgLCBsZW5ndGggPSB0aGlzLmxlbmd0aFxuICAgICAgLCBzcmMgICAgPSB0b09iamVjdChhcnJheUxpa2UpXG4gICAgICAsIGxlbiAgICA9IHRvTGVuZ3RoKHNyYy5sZW5ndGgpXG4gICAgICAsIGluZGV4ICA9IDA7XG4gICAgaWYobGVuICsgb2Zmc2V0ID4gbGVuZ3RoKXRocm93IFJhbmdlRXJyb3IoV1JPTkdfTEVOR1RIKTtcbiAgICB3aGlsZShpbmRleCA8IGxlbil0aGlzW29mZnNldCArIGluZGV4XSA9IHNyY1tpbmRleCsrXTtcbiAgfTtcblxuICB2YXIgJGl0ZXJhdG9ycyA9IHtcbiAgICBlbnRyaWVzOiBmdW5jdGlvbiBlbnRyaWVzKCl7XG4gICAgICByZXR1cm4gYXJyYXlFbnRyaWVzLmNhbGwodmFsaWRhdGUodGhpcykpO1xuICAgIH0sXG4gICAga2V5czogZnVuY3Rpb24ga2V5cygpe1xuICAgICAgcmV0dXJuIGFycmF5S2V5cy5jYWxsKHZhbGlkYXRlKHRoaXMpKTtcbiAgICB9LFxuICAgIHZhbHVlczogZnVuY3Rpb24gdmFsdWVzKCl7XG4gICAgICByZXR1cm4gYXJyYXlWYWx1ZXMuY2FsbCh2YWxpZGF0ZSh0aGlzKSk7XG4gICAgfVxuICB9O1xuXG4gIHZhciBpc1RBSW5kZXggPSBmdW5jdGlvbih0YXJnZXQsIGtleSl7XG4gICAgcmV0dXJuIGlzT2JqZWN0KHRhcmdldClcbiAgICAgICYmIHRhcmdldFtUWVBFRF9BUlJBWV1cbiAgICAgICYmIHR5cGVvZiBrZXkgIT0gJ3N5bWJvbCdcbiAgICAgICYmIGtleSBpbiB0YXJnZXRcbiAgICAgICYmIFN0cmluZygra2V5KSA9PSBTdHJpbmcoa2V5KTtcbiAgfTtcbiAgdmFyICRnZXREZXNjID0gZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwga2V5KXtcbiAgICByZXR1cm4gaXNUQUluZGV4KHRhcmdldCwga2V5ID0gdG9QcmltaXRpdmUoa2V5LCB0cnVlKSlcbiAgICAgID8gcHJvcGVydHlEZXNjKDIsIHRhcmdldFtrZXldKVxuICAgICAgOiBnT1BEKHRhcmdldCwga2V5KTtcbiAgfTtcbiAgdmFyICRzZXREZXNjID0gZnVuY3Rpb24gZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIGRlc2Mpe1xuICAgIGlmKGlzVEFJbmRleCh0YXJnZXQsIGtleSA9IHRvUHJpbWl0aXZlKGtleSwgdHJ1ZSkpXG4gICAgICAmJiBpc09iamVjdChkZXNjKVxuICAgICAgJiYgaGFzKGRlc2MsICd2YWx1ZScpXG4gICAgICAmJiAhaGFzKGRlc2MsICdnZXQnKVxuICAgICAgJiYgIWhhcyhkZXNjLCAnc2V0JylcbiAgICAgIC8vIFRPRE86IGFkZCB2YWxpZGF0aW9uIGRlc2NyaXB0b3Igdy9vIGNhbGxpbmcgYWNjZXNzb3JzXG4gICAgICAmJiAhZGVzYy5jb25maWd1cmFibGVcbiAgICAgICYmICghaGFzKGRlc2MsICd3cml0YWJsZScpIHx8IGRlc2Mud3JpdGFibGUpXG4gICAgICAmJiAoIWhhcyhkZXNjLCAnZW51bWVyYWJsZScpIHx8IGRlc2MuZW51bWVyYWJsZSlcbiAgICApe1xuICAgICAgdGFyZ2V0W2tleV0gPSBkZXNjLnZhbHVlO1xuICAgICAgcmV0dXJuIHRhcmdldDtcbiAgICB9IGVsc2UgcmV0dXJuIGRQKHRhcmdldCwga2V5LCBkZXNjKTtcbiAgfTtcblxuICBpZighQUxMX0NPTlNUUlVDVE9SUyl7XG4gICAgJEdPUEQuZiA9ICRnZXREZXNjO1xuICAgICREUC5mICAgPSAkc2V0RGVzYztcbiAgfVxuXG4gICRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogIUFMTF9DT05TVFJVQ1RPUlMsICdPYmplY3QnLCB7XG4gICAgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOiAkZ2V0RGVzYyxcbiAgICBkZWZpbmVQcm9wZXJ0eTogICAgICAgICAgICRzZXREZXNjXG4gIH0pO1xuXG4gIGlmKGZhaWxzKGZ1bmN0aW9uKCl7IGFycmF5VG9TdHJpbmcuY2FsbCh7fSk7IH0pKXtcbiAgICBhcnJheVRvU3RyaW5nID0gYXJyYXlUb0xvY2FsZVN0cmluZyA9IGZ1bmN0aW9uIHRvU3RyaW5nKCl7XG4gICAgICByZXR1cm4gYXJyYXlKb2luLmNhbGwodGhpcyk7XG4gICAgfVxuICB9XG5cbiAgdmFyICRUeXBlZEFycmF5UHJvdG90eXBlJCA9IHJlZGVmaW5lQWxsKHt9LCBwcm90byk7XG4gIHJlZGVmaW5lQWxsKCRUeXBlZEFycmF5UHJvdG90eXBlJCwgJGl0ZXJhdG9ycyk7XG4gIGhpZGUoJFR5cGVkQXJyYXlQcm90b3R5cGUkLCBJVEVSQVRPUiwgJGl0ZXJhdG9ycy52YWx1ZXMpO1xuICByZWRlZmluZUFsbCgkVHlwZWRBcnJheVByb3RvdHlwZSQsIHtcbiAgICBzbGljZTogICAgICAgICAgJHNsaWNlLFxuICAgIHNldDogICAgICAgICAgICAkc2V0LFxuICAgIGNvbnN0cnVjdG9yOiAgICBmdW5jdGlvbigpeyAvKiBub29wICovIH0sXG4gICAgdG9TdHJpbmc6ICAgICAgIGFycmF5VG9TdHJpbmcsXG4gICAgdG9Mb2NhbGVTdHJpbmc6ICR0b0xvY2FsZVN0cmluZ1xuICB9KTtcbiAgYWRkR2V0dGVyKCRUeXBlZEFycmF5UHJvdG90eXBlJCwgJ2J1ZmZlcicsICdiJyk7XG4gIGFkZEdldHRlcigkVHlwZWRBcnJheVByb3RvdHlwZSQsICdieXRlT2Zmc2V0JywgJ28nKTtcbiAgYWRkR2V0dGVyKCRUeXBlZEFycmF5UHJvdG90eXBlJCwgJ2J5dGVMZW5ndGgnLCAnbCcpO1xuICBhZGRHZXR0ZXIoJFR5cGVkQXJyYXlQcm90b3R5cGUkLCAnbGVuZ3RoJywgJ2UnKTtcbiAgZFAoJFR5cGVkQXJyYXlQcm90b3R5cGUkLCBUQUcsIHtcbiAgICBnZXQ6IGZ1bmN0aW9uKCl7IHJldHVybiB0aGlzW1RZUEVEX0FSUkFZXTsgfVxuICB9KTtcblxuICBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKEtFWSwgQllURVMsIHdyYXBwZXIsIENMQU1QRUQpe1xuICAgIENMQU1QRUQgPSAhIUNMQU1QRUQ7XG4gICAgdmFyIE5BTUUgICAgICAgPSBLRVkgKyAoQ0xBTVBFRCA/ICdDbGFtcGVkJyA6ICcnKSArICdBcnJheSdcbiAgICAgICwgSVNOVF9VSU5UOCA9IE5BTUUgIT0gJ1VpbnQ4QXJyYXknXG4gICAgICAsIEdFVFRFUiAgICAgPSAnZ2V0JyArIEtFWVxuICAgICAgLCBTRVRURVIgICAgID0gJ3NldCcgKyBLRVlcbiAgICAgICwgVHlwZWRBcnJheSA9IGdsb2JhbFtOQU1FXVxuICAgICAgLCBCYXNlICAgICAgID0gVHlwZWRBcnJheSB8fCB7fVxuICAgICAgLCBUQUMgICAgICAgID0gVHlwZWRBcnJheSAmJiBnZXRQcm90b3R5cGVPZihUeXBlZEFycmF5KVxuICAgICAgLCBGT1JDRUQgICAgID0gIVR5cGVkQXJyYXkgfHwgISR0eXBlZC5BQlZcbiAgICAgICwgTyAgICAgICAgICA9IHt9XG4gICAgICAsIFR5cGVkQXJyYXlQcm90b3R5cGUgPSBUeXBlZEFycmF5ICYmIFR5cGVkQXJyYXlbUFJPVE9UWVBFXTtcbiAgICB2YXIgZ2V0dGVyID0gZnVuY3Rpb24odGhhdCwgaW5kZXgpe1xuICAgICAgdmFyIGRhdGEgPSB0aGF0Ll9kO1xuICAgICAgcmV0dXJuIGRhdGEudltHRVRURVJdKGluZGV4ICogQllURVMgKyBkYXRhLm8sIExJVFRMRV9FTkRJQU4pO1xuICAgIH07XG4gICAgdmFyIHNldHRlciA9IGZ1bmN0aW9uKHRoYXQsIGluZGV4LCB2YWx1ZSl7XG4gICAgICB2YXIgZGF0YSA9IHRoYXQuX2Q7XG4gICAgICBpZihDTEFNUEVEKXZhbHVlID0gKHZhbHVlID0gTWF0aC5yb3VuZCh2YWx1ZSkpIDwgMCA/IDAgOiB2YWx1ZSA+IDB4ZmYgPyAweGZmIDogdmFsdWUgJiAweGZmO1xuICAgICAgZGF0YS52W1NFVFRFUl0oaW5kZXggKiBCWVRFUyArIGRhdGEubywgdmFsdWUsIExJVFRMRV9FTkRJQU4pO1xuICAgIH07XG4gICAgdmFyIGFkZEVsZW1lbnQgPSBmdW5jdGlvbih0aGF0LCBpbmRleCl7XG4gICAgICBkUCh0aGF0LCBpbmRleCwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uKCl7XG4gICAgICAgICAgcmV0dXJuIGdldHRlcih0aGlzLCBpbmRleCk7XG4gICAgICAgIH0sXG4gICAgICAgIHNldDogZnVuY3Rpb24odmFsdWUpe1xuICAgICAgICAgIHJldHVybiBzZXR0ZXIodGhpcywgaW5kZXgsIHZhbHVlKTtcbiAgICAgICAgfSxcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZVxuICAgICAgfSk7XG4gICAgfTtcbiAgICBpZihGT1JDRUQpe1xuICAgICAgVHlwZWRBcnJheSA9IHdyYXBwZXIoZnVuY3Rpb24odGhhdCwgZGF0YSwgJG9mZnNldCwgJGxlbmd0aCl7XG4gICAgICAgIGFuSW5zdGFuY2UodGhhdCwgVHlwZWRBcnJheSwgTkFNRSwgJ19kJyk7XG4gICAgICAgIHZhciBpbmRleCAgPSAwXG4gICAgICAgICAgLCBvZmZzZXQgPSAwXG4gICAgICAgICAgLCBidWZmZXIsIGJ5dGVMZW5ndGgsIGxlbmd0aCwga2xhc3M7XG4gICAgICAgIGlmKCFpc09iamVjdChkYXRhKSl7XG4gICAgICAgICAgbGVuZ3RoICAgICA9IHN0cmljdFRvTGVuZ3RoKGRhdGEsIHRydWUpXG4gICAgICAgICAgYnl0ZUxlbmd0aCA9IGxlbmd0aCAqIEJZVEVTO1xuICAgICAgICAgIGJ1ZmZlciAgICAgPSBuZXcgJEFycmF5QnVmZmVyKGJ5dGVMZW5ndGgpO1xuICAgICAgICB9IGVsc2UgaWYoZGF0YSBpbnN0YW5jZW9mICRBcnJheUJ1ZmZlciB8fCAoa2xhc3MgPSBjbGFzc29mKGRhdGEpKSA9PSBBUlJBWV9CVUZGRVIgfHwga2xhc3MgPT0gU0hBUkVEX0JVRkZFUil7XG4gICAgICAgICAgYnVmZmVyID0gZGF0YTtcbiAgICAgICAgICBvZmZzZXQgPSB0b09mZnNldCgkb2Zmc2V0LCBCWVRFUyk7XG4gICAgICAgICAgdmFyICRsZW4gPSBkYXRhLmJ5dGVMZW5ndGg7XG4gICAgICAgICAgaWYoJGxlbmd0aCA9PT0gdW5kZWZpbmVkKXtcbiAgICAgICAgICAgIGlmKCRsZW4gJSBCWVRFUyl0aHJvdyBSYW5nZUVycm9yKFdST05HX0xFTkdUSCk7XG4gICAgICAgICAgICBieXRlTGVuZ3RoID0gJGxlbiAtIG9mZnNldDtcbiAgICAgICAgICAgIGlmKGJ5dGVMZW5ndGggPCAwKXRocm93IFJhbmdlRXJyb3IoV1JPTkdfTEVOR1RIKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYnl0ZUxlbmd0aCA9IHRvTGVuZ3RoKCRsZW5ndGgpICogQllURVM7XG4gICAgICAgICAgICBpZihieXRlTGVuZ3RoICsgb2Zmc2V0ID4gJGxlbil0aHJvdyBSYW5nZUVycm9yKFdST05HX0xFTkdUSCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGxlbmd0aCA9IGJ5dGVMZW5ndGggLyBCWVRFUztcbiAgICAgICAgfSBlbHNlIGlmKFRZUEVEX0FSUkFZIGluIGRhdGEpe1xuICAgICAgICAgIHJldHVybiBmcm9tTGlzdChUeXBlZEFycmF5LCBkYXRhKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gJGZyb20uY2FsbChUeXBlZEFycmF5LCBkYXRhKTtcbiAgICAgICAgfVxuICAgICAgICBoaWRlKHRoYXQsICdfZCcsIHtcbiAgICAgICAgICBiOiBidWZmZXIsXG4gICAgICAgICAgbzogb2Zmc2V0LFxuICAgICAgICAgIGw6IGJ5dGVMZW5ndGgsXG4gICAgICAgICAgZTogbGVuZ3RoLFxuICAgICAgICAgIHY6IG5ldyAkRGF0YVZpZXcoYnVmZmVyKVxuICAgICAgICB9KTtcbiAgICAgICAgd2hpbGUoaW5kZXggPCBsZW5ndGgpYWRkRWxlbWVudCh0aGF0LCBpbmRleCsrKTtcbiAgICAgIH0pO1xuICAgICAgVHlwZWRBcnJheVByb3RvdHlwZSA9IFR5cGVkQXJyYXlbUFJPVE9UWVBFXSA9IGNyZWF0ZSgkVHlwZWRBcnJheVByb3RvdHlwZSQpO1xuICAgICAgaGlkZShUeXBlZEFycmF5UHJvdG90eXBlLCAnY29uc3RydWN0b3InLCBUeXBlZEFycmF5KTtcbiAgICB9IGVsc2UgaWYoISRpdGVyRGV0ZWN0KGZ1bmN0aW9uKGl0ZXIpe1xuICAgICAgLy8gVjggd29ya3Mgd2l0aCBpdGVyYXRvcnMsIGJ1dCBmYWlscyBpbiBtYW55IG90aGVyIGNhc2VzXG4gICAgICAvLyBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9NDU1MlxuICAgICAgbmV3IFR5cGVkQXJyYXkobnVsbCk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tbmV3XG4gICAgICBuZXcgVHlwZWRBcnJheShpdGVyKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXdcbiAgICB9LCB0cnVlKSl7XG4gICAgICBUeXBlZEFycmF5ID0gd3JhcHBlcihmdW5jdGlvbih0aGF0LCBkYXRhLCAkb2Zmc2V0LCAkbGVuZ3RoKXtcbiAgICAgICAgYW5JbnN0YW5jZSh0aGF0LCBUeXBlZEFycmF5LCBOQU1FKTtcbiAgICAgICAgdmFyIGtsYXNzO1xuICAgICAgICAvLyBgd3NgIG1vZHVsZSBidWcsIHRlbXBvcmFyaWx5IHJlbW92ZSB2YWxpZGF0aW9uIGxlbmd0aCBmb3IgVWludDhBcnJheVxuICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vd2Vic29ja2V0cy93cy9wdWxsLzY0NVxuICAgICAgICBpZighaXNPYmplY3QoZGF0YSkpcmV0dXJuIG5ldyBCYXNlKHN0cmljdFRvTGVuZ3RoKGRhdGEsIElTTlRfVUlOVDgpKTtcbiAgICAgICAgaWYoZGF0YSBpbnN0YW5jZW9mICRBcnJheUJ1ZmZlciB8fCAoa2xhc3MgPSBjbGFzc29mKGRhdGEpKSA9PSBBUlJBWV9CVUZGRVIgfHwga2xhc3MgPT0gU0hBUkVEX0JVRkZFUil7XG4gICAgICAgICAgcmV0dXJuICRsZW5ndGggIT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgPyBuZXcgQmFzZShkYXRhLCB0b09mZnNldCgkb2Zmc2V0LCBCWVRFUyksICRsZW5ndGgpXG4gICAgICAgICAgICA6ICRvZmZzZXQgIT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgICA/IG5ldyBCYXNlKGRhdGEsIHRvT2Zmc2V0KCRvZmZzZXQsIEJZVEVTKSlcbiAgICAgICAgICAgICAgOiBuZXcgQmFzZShkYXRhKTtcbiAgICAgICAgfVxuICAgICAgICBpZihUWVBFRF9BUlJBWSBpbiBkYXRhKXJldHVybiBmcm9tTGlzdChUeXBlZEFycmF5LCBkYXRhKTtcbiAgICAgICAgcmV0dXJuICRmcm9tLmNhbGwoVHlwZWRBcnJheSwgZGF0YSk7XG4gICAgICB9KTtcbiAgICAgIGFycmF5Rm9yRWFjaChUQUMgIT09IEZ1bmN0aW9uLnByb3RvdHlwZSA/IGdPUE4oQmFzZSkuY29uY2F0KGdPUE4oVEFDKSkgOiBnT1BOKEJhc2UpLCBmdW5jdGlvbihrZXkpe1xuICAgICAgICBpZighKGtleSBpbiBUeXBlZEFycmF5KSloaWRlKFR5cGVkQXJyYXksIGtleSwgQmFzZVtrZXldKTtcbiAgICAgIH0pO1xuICAgICAgVHlwZWRBcnJheVtQUk9UT1RZUEVdID0gVHlwZWRBcnJheVByb3RvdHlwZTtcbiAgICAgIGlmKCFMSUJSQVJZKVR5cGVkQXJyYXlQcm90b3R5cGUuY29uc3RydWN0b3IgPSBUeXBlZEFycmF5O1xuICAgIH1cbiAgICB2YXIgJG5hdGl2ZUl0ZXJhdG9yICAgPSBUeXBlZEFycmF5UHJvdG90eXBlW0lURVJBVE9SXVxuICAgICAgLCBDT1JSRUNUX0lURVJfTkFNRSA9ICEhJG5hdGl2ZUl0ZXJhdG9yICYmICgkbmF0aXZlSXRlcmF0b3IubmFtZSA9PSAndmFsdWVzJyB8fCAkbmF0aXZlSXRlcmF0b3IubmFtZSA9PSB1bmRlZmluZWQpXG4gICAgICAsICRpdGVyYXRvciAgICAgICAgID0gJGl0ZXJhdG9ycy52YWx1ZXM7XG4gICAgaGlkZShUeXBlZEFycmF5LCBUWVBFRF9DT05TVFJVQ1RPUiwgdHJ1ZSk7XG4gICAgaGlkZShUeXBlZEFycmF5UHJvdG90eXBlLCBUWVBFRF9BUlJBWSwgTkFNRSk7XG4gICAgaGlkZShUeXBlZEFycmF5UHJvdG90eXBlLCBWSUVXLCB0cnVlKTtcbiAgICBoaWRlKFR5cGVkQXJyYXlQcm90b3R5cGUsIERFRl9DT05TVFJVQ1RPUiwgVHlwZWRBcnJheSk7XG5cbiAgICBpZihDTEFNUEVEID8gbmV3IFR5cGVkQXJyYXkoMSlbVEFHXSAhPSBOQU1FIDogIShUQUcgaW4gVHlwZWRBcnJheVByb3RvdHlwZSkpe1xuICAgICAgZFAoVHlwZWRBcnJheVByb3RvdHlwZSwgVEFHLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24oKXsgcmV0dXJuIE5BTUU7IH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIE9bTkFNRV0gPSBUeXBlZEFycmF5O1xuXG4gICAgJGV4cG9ydCgkZXhwb3J0LkcgKyAkZXhwb3J0LlcgKyAkZXhwb3J0LkYgKiAoVHlwZWRBcnJheSAhPSBCYXNlKSwgTyk7XG5cbiAgICAkZXhwb3J0KCRleHBvcnQuUywgTkFNRSwge1xuICAgICAgQllURVNfUEVSX0VMRU1FTlQ6IEJZVEVTLFxuICAgICAgZnJvbTogJGZyb20sXG4gICAgICBvZjogJG9mXG4gICAgfSk7XG5cbiAgICBpZighKEJZVEVTX1BFUl9FTEVNRU5UIGluIFR5cGVkQXJyYXlQcm90b3R5cGUpKWhpZGUoVHlwZWRBcnJheVByb3RvdHlwZSwgQllURVNfUEVSX0VMRU1FTlQsIEJZVEVTKTtcblxuICAgICRleHBvcnQoJGV4cG9ydC5QLCBOQU1FLCBwcm90byk7XG5cbiAgICBzZXRTcGVjaWVzKE5BTUUpO1xuXG4gICAgJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiBGT1JDRURfU0VULCBOQU1FLCB7c2V0OiAkc2V0fSk7XG5cbiAgICAkZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuRiAqICFDT1JSRUNUX0lURVJfTkFNRSwgTkFNRSwgJGl0ZXJhdG9ycyk7XG5cbiAgICAkZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuRiAqIChUeXBlZEFycmF5UHJvdG90eXBlLnRvU3RyaW5nICE9IGFycmF5VG9TdHJpbmcpLCBOQU1FLCB7dG9TdHJpbmc6IGFycmF5VG9TdHJpbmd9KTtcblxuICAgICRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5GICogZmFpbHMoZnVuY3Rpb24oKXtcbiAgICAgIG5ldyBUeXBlZEFycmF5KDEpLnNsaWNlKCk7XG4gICAgfSksIE5BTUUsIHtzbGljZTogJHNsaWNlfSk7XG5cbiAgICAkZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuRiAqIChmYWlscyhmdW5jdGlvbigpe1xuICAgICAgcmV0dXJuIFsxLCAyXS50b0xvY2FsZVN0cmluZygpICE9IG5ldyBUeXBlZEFycmF5KFsxLCAyXSkudG9Mb2NhbGVTdHJpbmcoKVxuICAgIH0pIHx8ICFmYWlscyhmdW5jdGlvbigpe1xuICAgICAgVHlwZWRBcnJheVByb3RvdHlwZS50b0xvY2FsZVN0cmluZy5jYWxsKFsxLCAyXSk7XG4gICAgfSkpLCBOQU1FLCB7dG9Mb2NhbGVTdHJpbmc6ICR0b0xvY2FsZVN0cmluZ30pO1xuXG4gICAgSXRlcmF0b3JzW05BTUVdID0gQ09SUkVDVF9JVEVSX05BTUUgPyAkbmF0aXZlSXRlcmF0b3IgOiAkaXRlcmF0b3I7XG4gICAgaWYoIUxJQlJBUlkgJiYgIUNPUlJFQ1RfSVRFUl9OQU1FKWhpZGUoVHlwZWRBcnJheVByb3RvdHlwZSwgSVRFUkFUT1IsICRpdGVyYXRvcik7XG4gIH07XG59IGVsc2UgbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbigpeyAvKiBlbXB0eSAqLyB9OyIsIid1c2Ugc3RyaWN0JztcbnZhciBnbG9iYWwgICAgICAgICA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpXG4gICwgREVTQ1JJUFRPUlMgICAgPSByZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpXG4gICwgTElCUkFSWSAgICAgICAgPSByZXF1aXJlKCcuL19saWJyYXJ5JylcbiAgLCAkdHlwZWQgICAgICAgICA9IHJlcXVpcmUoJy4vX3R5cGVkJylcbiAgLCBoaWRlICAgICAgICAgICA9IHJlcXVpcmUoJy4vX2hpZGUnKVxuICAsIHJlZGVmaW5lQWxsICAgID0gcmVxdWlyZSgnLi9fcmVkZWZpbmUtYWxsJylcbiAgLCBmYWlscyAgICAgICAgICA9IHJlcXVpcmUoJy4vX2ZhaWxzJylcbiAgLCBhbkluc3RhbmNlICAgICA9IHJlcXVpcmUoJy4vX2FuLWluc3RhbmNlJylcbiAgLCB0b0ludGVnZXIgICAgICA9IHJlcXVpcmUoJy4vX3RvLWludGVnZXInKVxuICAsIHRvTGVuZ3RoICAgICAgID0gcmVxdWlyZSgnLi9fdG8tbGVuZ3RoJylcbiAgLCBnT1BOICAgICAgICAgICA9IHJlcXVpcmUoJy4vX29iamVjdC1nb3BuJykuZlxuICAsIGRQICAgICAgICAgICAgID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwJykuZlxuICAsIGFycmF5RmlsbCAgICAgID0gcmVxdWlyZSgnLi9fYXJyYXktZmlsbCcpXG4gICwgc2V0VG9TdHJpbmdUYWcgPSByZXF1aXJlKCcuL19zZXQtdG8tc3RyaW5nLXRhZycpXG4gICwgQVJSQVlfQlVGRkVSICAgPSAnQXJyYXlCdWZmZXInXG4gICwgREFUQV9WSUVXICAgICAgPSAnRGF0YVZpZXcnXG4gICwgUFJPVE9UWVBFICAgICAgPSAncHJvdG90eXBlJ1xuICAsIFdST05HX0xFTkdUSCAgID0gJ1dyb25nIGxlbmd0aCEnXG4gICwgV1JPTkdfSU5ERVggICAgPSAnV3JvbmcgaW5kZXghJ1xuICAsICRBcnJheUJ1ZmZlciAgID0gZ2xvYmFsW0FSUkFZX0JVRkZFUl1cbiAgLCAkRGF0YVZpZXcgICAgICA9IGdsb2JhbFtEQVRBX1ZJRVddXG4gICwgTWF0aCAgICAgICAgICAgPSBnbG9iYWwuTWF0aFxuICAsIFJhbmdlRXJyb3IgICAgID0gZ2xvYmFsLlJhbmdlRXJyb3JcbiAgLCBJbmZpbml0eSAgICAgICA9IGdsb2JhbC5JbmZpbml0eVxuICAsIEJhc2VCdWZmZXIgICAgID0gJEFycmF5QnVmZmVyXG4gICwgYWJzICAgICAgICAgICAgPSBNYXRoLmFic1xuICAsIHBvdyAgICAgICAgICAgID0gTWF0aC5wb3dcbiAgLCBmbG9vciAgICAgICAgICA9IE1hdGguZmxvb3JcbiAgLCBsb2cgICAgICAgICAgICA9IE1hdGgubG9nXG4gICwgTE4yICAgICAgICAgICAgPSBNYXRoLkxOMlxuICAsIEJVRkZFUiAgICAgICAgID0gJ2J1ZmZlcidcbiAgLCBCWVRFX0xFTkdUSCAgICA9ICdieXRlTGVuZ3RoJ1xuICAsIEJZVEVfT0ZGU0VUICAgID0gJ2J5dGVPZmZzZXQnXG4gICwgJEJVRkZFUiAgICAgICAgPSBERVNDUklQVE9SUyA/ICdfYicgOiBCVUZGRVJcbiAgLCAkTEVOR1RIICAgICAgICA9IERFU0NSSVBUT1JTID8gJ19sJyA6IEJZVEVfTEVOR1RIXG4gICwgJE9GRlNFVCAgICAgICAgPSBERVNDUklQVE9SUyA/ICdfbycgOiBCWVRFX09GRlNFVDtcblxuLy8gSUVFRTc1NCBjb252ZXJzaW9ucyBiYXNlZCBvbiBodHRwczovL2dpdGh1Yi5jb20vZmVyb3NzL2llZWU3NTRcbnZhciBwYWNrSUVFRTc1NCA9IGZ1bmN0aW9uKHZhbHVlLCBtTGVuLCBuQnl0ZXMpe1xuICB2YXIgYnVmZmVyID0gQXJyYXkobkJ5dGVzKVxuICAgICwgZUxlbiAgID0gbkJ5dGVzICogOCAtIG1MZW4gLSAxXG4gICAgLCBlTWF4ICAgPSAoMSA8PCBlTGVuKSAtIDFcbiAgICAsIGVCaWFzICA9IGVNYXggPj4gMVxuICAgICwgcnQgICAgID0gbUxlbiA9PT0gMjMgPyBwb3coMiwgLTI0KSAtIHBvdygyLCAtNzcpIDogMFxuICAgICwgaSAgICAgID0gMFxuICAgICwgcyAgICAgID0gdmFsdWUgPCAwIHx8IHZhbHVlID09PSAwICYmIDEgLyB2YWx1ZSA8IDAgPyAxIDogMFxuICAgICwgZSwgbSwgYztcbiAgdmFsdWUgPSBhYnModmFsdWUpXG4gIGlmKHZhbHVlICE9IHZhbHVlIHx8IHZhbHVlID09PSBJbmZpbml0eSl7XG4gICAgbSA9IHZhbHVlICE9IHZhbHVlID8gMSA6IDA7XG4gICAgZSA9IGVNYXg7XG4gIH0gZWxzZSB7XG4gICAgZSA9IGZsb29yKGxvZyh2YWx1ZSkgLyBMTjIpO1xuICAgIGlmKHZhbHVlICogKGMgPSBwb3coMiwgLWUpKSA8IDEpe1xuICAgICAgZS0tO1xuICAgICAgYyAqPSAyO1xuICAgIH1cbiAgICBpZihlICsgZUJpYXMgPj0gMSl7XG4gICAgICB2YWx1ZSArPSBydCAvIGM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhbHVlICs9IHJ0ICogcG93KDIsIDEgLSBlQmlhcyk7XG4gICAgfVxuICAgIGlmKHZhbHVlICogYyA+PSAyKXtcbiAgICAgIGUrKztcbiAgICAgIGMgLz0gMjtcbiAgICB9XG4gICAgaWYoZSArIGVCaWFzID49IGVNYXgpe1xuICAgICAgbSA9IDA7XG4gICAgICBlID0gZU1heDtcbiAgICB9IGVsc2UgaWYoZSArIGVCaWFzID49IDEpe1xuICAgICAgbSA9ICh2YWx1ZSAqIGMgLSAxKSAqIHBvdygyLCBtTGVuKTtcbiAgICAgIGUgPSBlICsgZUJpYXM7XG4gICAgfSBlbHNlIHtcbiAgICAgIG0gPSB2YWx1ZSAqIHBvdygyLCBlQmlhcyAtIDEpICogcG93KDIsIG1MZW4pO1xuICAgICAgZSA9IDA7XG4gICAgfVxuICB9XG4gIGZvcig7IG1MZW4gPj0gODsgYnVmZmVyW2krK10gPSBtICYgMjU1LCBtIC89IDI1NiwgbUxlbiAtPSA4KTtcbiAgZSA9IGUgPDwgbUxlbiB8IG07XG4gIGVMZW4gKz0gbUxlbjtcbiAgZm9yKDsgZUxlbiA+IDA7IGJ1ZmZlcltpKytdID0gZSAmIDI1NSwgZSAvPSAyNTYsIGVMZW4gLT0gOCk7XG4gIGJ1ZmZlclstLWldIHw9IHMgKiAxMjg7XG4gIHJldHVybiBidWZmZXI7XG59O1xudmFyIHVucGFja0lFRUU3NTQgPSBmdW5jdGlvbihidWZmZXIsIG1MZW4sIG5CeXRlcyl7XG4gIHZhciBlTGVuICA9IG5CeXRlcyAqIDggLSBtTGVuIC0gMVxuICAgICwgZU1heCAgPSAoMSA8PCBlTGVuKSAtIDFcbiAgICAsIGVCaWFzID0gZU1heCA+PiAxXG4gICAgLCBuQml0cyA9IGVMZW4gLSA3XG4gICAgLCBpICAgICA9IG5CeXRlcyAtIDFcbiAgICAsIHMgICAgID0gYnVmZmVyW2ktLV1cbiAgICAsIGUgICAgID0gcyAmIDEyN1xuICAgICwgbTtcbiAgcyA+Pj0gNztcbiAgZm9yKDsgbkJpdHMgPiAwOyBlID0gZSAqIDI1NiArIGJ1ZmZlcltpXSwgaS0tLCBuQml0cyAtPSA4KTtcbiAgbSA9IGUgJiAoMSA8PCAtbkJpdHMpIC0gMTtcbiAgZSA+Pj0gLW5CaXRzO1xuICBuQml0cyArPSBtTGVuO1xuICBmb3IoOyBuQml0cyA+IDA7IG0gPSBtICogMjU2ICsgYnVmZmVyW2ldLCBpLS0sIG5CaXRzIC09IDgpO1xuICBpZihlID09PSAwKXtcbiAgICBlID0gMSAtIGVCaWFzO1xuICB9IGVsc2UgaWYoZSA9PT0gZU1heCl7XG4gICAgcmV0dXJuIG0gPyBOYU4gOiBzID8gLUluZmluaXR5IDogSW5maW5pdHk7XG4gIH0gZWxzZSB7XG4gICAgbSA9IG0gKyBwb3coMiwgbUxlbik7XG4gICAgZSA9IGUgLSBlQmlhcztcbiAgfSByZXR1cm4gKHMgPyAtMSA6IDEpICogbSAqIHBvdygyLCBlIC0gbUxlbik7XG59O1xuXG52YXIgdW5wYWNrSTMyID0gZnVuY3Rpb24oYnl0ZXMpe1xuICByZXR1cm4gYnl0ZXNbM10gPDwgMjQgfCBieXRlc1syXSA8PCAxNiB8IGJ5dGVzWzFdIDw8IDggfCBieXRlc1swXTtcbn07XG52YXIgcGFja0k4ID0gZnVuY3Rpb24oaXQpe1xuICByZXR1cm4gW2l0ICYgMHhmZl07XG59O1xudmFyIHBhY2tJMTYgPSBmdW5jdGlvbihpdCl7XG4gIHJldHVybiBbaXQgJiAweGZmLCBpdCA+PiA4ICYgMHhmZl07XG59O1xudmFyIHBhY2tJMzIgPSBmdW5jdGlvbihpdCl7XG4gIHJldHVybiBbaXQgJiAweGZmLCBpdCA+PiA4ICYgMHhmZiwgaXQgPj4gMTYgJiAweGZmLCBpdCA+PiAyNCAmIDB4ZmZdO1xufTtcbnZhciBwYWNrRjY0ID0gZnVuY3Rpb24oaXQpe1xuICByZXR1cm4gcGFja0lFRUU3NTQoaXQsIDUyLCA4KTtcbn07XG52YXIgcGFja0YzMiA9IGZ1bmN0aW9uKGl0KXtcbiAgcmV0dXJuIHBhY2tJRUVFNzU0KGl0LCAyMywgNCk7XG59O1xuXG52YXIgYWRkR2V0dGVyID0gZnVuY3Rpb24oQywga2V5LCBpbnRlcm5hbCl7XG4gIGRQKENbUFJPVE9UWVBFXSwga2V5LCB7Z2V0OiBmdW5jdGlvbigpeyByZXR1cm4gdGhpc1tpbnRlcm5hbF07IH19KTtcbn07XG5cbnZhciBnZXQgPSBmdW5jdGlvbih2aWV3LCBieXRlcywgaW5kZXgsIGlzTGl0dGxlRW5kaWFuKXtcbiAgdmFyIG51bUluZGV4ID0gK2luZGV4XG4gICAgLCBpbnRJbmRleCA9IHRvSW50ZWdlcihudW1JbmRleCk7XG4gIGlmKG51bUluZGV4ICE9IGludEluZGV4IHx8IGludEluZGV4IDwgMCB8fCBpbnRJbmRleCArIGJ5dGVzID4gdmlld1skTEVOR1RIXSl0aHJvdyBSYW5nZUVycm9yKFdST05HX0lOREVYKTtcbiAgdmFyIHN0b3JlID0gdmlld1skQlVGRkVSXS5fYlxuICAgICwgc3RhcnQgPSBpbnRJbmRleCArIHZpZXdbJE9GRlNFVF1cbiAgICAsIHBhY2sgID0gc3RvcmUuc2xpY2Uoc3RhcnQsIHN0YXJ0ICsgYnl0ZXMpO1xuICByZXR1cm4gaXNMaXR0bGVFbmRpYW4gPyBwYWNrIDogcGFjay5yZXZlcnNlKCk7XG59O1xudmFyIHNldCA9IGZ1bmN0aW9uKHZpZXcsIGJ5dGVzLCBpbmRleCwgY29udmVyc2lvbiwgdmFsdWUsIGlzTGl0dGxlRW5kaWFuKXtcbiAgdmFyIG51bUluZGV4ID0gK2luZGV4XG4gICAgLCBpbnRJbmRleCA9IHRvSW50ZWdlcihudW1JbmRleCk7XG4gIGlmKG51bUluZGV4ICE9IGludEluZGV4IHx8IGludEluZGV4IDwgMCB8fCBpbnRJbmRleCArIGJ5dGVzID4gdmlld1skTEVOR1RIXSl0aHJvdyBSYW5nZUVycm9yKFdST05HX0lOREVYKTtcbiAgdmFyIHN0b3JlID0gdmlld1skQlVGRkVSXS5fYlxuICAgICwgc3RhcnQgPSBpbnRJbmRleCArIHZpZXdbJE9GRlNFVF1cbiAgICAsIHBhY2sgID0gY29udmVyc2lvbigrdmFsdWUpO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgYnl0ZXM7IGkrKylzdG9yZVtzdGFydCArIGldID0gcGFja1tpc0xpdHRsZUVuZGlhbiA/IGkgOiBieXRlcyAtIGkgLSAxXTtcbn07XG5cbnZhciB2YWxpZGF0ZUFycmF5QnVmZmVyQXJndW1lbnRzID0gZnVuY3Rpb24odGhhdCwgbGVuZ3RoKXtcbiAgYW5JbnN0YW5jZSh0aGF0LCAkQXJyYXlCdWZmZXIsIEFSUkFZX0JVRkZFUik7XG4gIHZhciBudW1iZXJMZW5ndGggPSArbGVuZ3RoXG4gICAgLCBieXRlTGVuZ3RoICAgPSB0b0xlbmd0aChudW1iZXJMZW5ndGgpO1xuICBpZihudW1iZXJMZW5ndGggIT0gYnl0ZUxlbmd0aCl0aHJvdyBSYW5nZUVycm9yKFdST05HX0xFTkdUSCk7XG4gIHJldHVybiBieXRlTGVuZ3RoO1xufTtcblxuaWYoISR0eXBlZC5BQlYpe1xuICAkQXJyYXlCdWZmZXIgPSBmdW5jdGlvbiBBcnJheUJ1ZmZlcihsZW5ndGgpe1xuICAgIHZhciBieXRlTGVuZ3RoID0gdmFsaWRhdGVBcnJheUJ1ZmZlckFyZ3VtZW50cyh0aGlzLCBsZW5ndGgpO1xuICAgIHRoaXMuX2IgICAgICAgPSBhcnJheUZpbGwuY2FsbChBcnJheShieXRlTGVuZ3RoKSwgMCk7XG4gICAgdGhpc1skTEVOR1RIXSA9IGJ5dGVMZW5ndGg7XG4gIH07XG5cbiAgJERhdGFWaWV3ID0gZnVuY3Rpb24gRGF0YVZpZXcoYnVmZmVyLCBieXRlT2Zmc2V0LCBieXRlTGVuZ3RoKXtcbiAgICBhbkluc3RhbmNlKHRoaXMsICREYXRhVmlldywgREFUQV9WSUVXKTtcbiAgICBhbkluc3RhbmNlKGJ1ZmZlciwgJEFycmF5QnVmZmVyLCBEQVRBX1ZJRVcpO1xuICAgIHZhciBidWZmZXJMZW5ndGggPSBidWZmZXJbJExFTkdUSF1cbiAgICAgICwgb2Zmc2V0ICAgICAgID0gdG9JbnRlZ2VyKGJ5dGVPZmZzZXQpO1xuICAgIGlmKG9mZnNldCA8IDAgfHwgb2Zmc2V0ID4gYnVmZmVyTGVuZ3RoKXRocm93IFJhbmdlRXJyb3IoJ1dyb25nIG9mZnNldCEnKTtcbiAgICBieXRlTGVuZ3RoID0gYnl0ZUxlbmd0aCA9PT0gdW5kZWZpbmVkID8gYnVmZmVyTGVuZ3RoIC0gb2Zmc2V0IDogdG9MZW5ndGgoYnl0ZUxlbmd0aCk7XG4gICAgaWYob2Zmc2V0ICsgYnl0ZUxlbmd0aCA+IGJ1ZmZlckxlbmd0aCl0aHJvdyBSYW5nZUVycm9yKFdST05HX0xFTkdUSCk7XG4gICAgdGhpc1skQlVGRkVSXSA9IGJ1ZmZlcjtcbiAgICB0aGlzWyRPRkZTRVRdID0gb2Zmc2V0O1xuICAgIHRoaXNbJExFTkdUSF0gPSBieXRlTGVuZ3RoO1xuICB9O1xuXG4gIGlmKERFU0NSSVBUT1JTKXtcbiAgICBhZGRHZXR0ZXIoJEFycmF5QnVmZmVyLCBCWVRFX0xFTkdUSCwgJ19sJyk7XG4gICAgYWRkR2V0dGVyKCREYXRhVmlldywgQlVGRkVSLCAnX2InKTtcbiAgICBhZGRHZXR0ZXIoJERhdGFWaWV3LCBCWVRFX0xFTkdUSCwgJ19sJyk7XG4gICAgYWRkR2V0dGVyKCREYXRhVmlldywgQllURV9PRkZTRVQsICdfbycpO1xuICB9XG5cbiAgcmVkZWZpbmVBbGwoJERhdGFWaWV3W1BST1RPVFlQRV0sIHtcbiAgICBnZXRJbnQ4OiBmdW5jdGlvbiBnZXRJbnQ4KGJ5dGVPZmZzZXQpe1xuICAgICAgcmV0dXJuIGdldCh0aGlzLCAxLCBieXRlT2Zmc2V0KVswXSA8PCAyNCA+PiAyNDtcbiAgICB9LFxuICAgIGdldFVpbnQ4OiBmdW5jdGlvbiBnZXRVaW50OChieXRlT2Zmc2V0KXtcbiAgICAgIHJldHVybiBnZXQodGhpcywgMSwgYnl0ZU9mZnNldClbMF07XG4gICAgfSxcbiAgICBnZXRJbnQxNjogZnVuY3Rpb24gZ2V0SW50MTYoYnl0ZU9mZnNldCAvKiwgbGl0dGxlRW5kaWFuICovKXtcbiAgICAgIHZhciBieXRlcyA9IGdldCh0aGlzLCAyLCBieXRlT2Zmc2V0LCBhcmd1bWVudHNbMV0pO1xuICAgICAgcmV0dXJuIChieXRlc1sxXSA8PCA4IHwgYnl0ZXNbMF0pIDw8IDE2ID4+IDE2O1xuICAgIH0sXG4gICAgZ2V0VWludDE2OiBmdW5jdGlvbiBnZXRVaW50MTYoYnl0ZU9mZnNldCAvKiwgbGl0dGxlRW5kaWFuICovKXtcbiAgICAgIHZhciBieXRlcyA9IGdldCh0aGlzLCAyLCBieXRlT2Zmc2V0LCBhcmd1bWVudHNbMV0pO1xuICAgICAgcmV0dXJuIGJ5dGVzWzFdIDw8IDggfCBieXRlc1swXTtcbiAgICB9LFxuICAgIGdldEludDMyOiBmdW5jdGlvbiBnZXRJbnQzMihieXRlT2Zmc2V0IC8qLCBsaXR0bGVFbmRpYW4gKi8pe1xuICAgICAgcmV0dXJuIHVucGFja0kzMihnZXQodGhpcywgNCwgYnl0ZU9mZnNldCwgYXJndW1lbnRzWzFdKSk7XG4gICAgfSxcbiAgICBnZXRVaW50MzI6IGZ1bmN0aW9uIGdldFVpbnQzMihieXRlT2Zmc2V0IC8qLCBsaXR0bGVFbmRpYW4gKi8pe1xuICAgICAgcmV0dXJuIHVucGFja0kzMihnZXQodGhpcywgNCwgYnl0ZU9mZnNldCwgYXJndW1lbnRzWzFdKSkgPj4+IDA7XG4gICAgfSxcbiAgICBnZXRGbG9hdDMyOiBmdW5jdGlvbiBnZXRGbG9hdDMyKGJ5dGVPZmZzZXQgLyosIGxpdHRsZUVuZGlhbiAqLyl7XG4gICAgICByZXR1cm4gdW5wYWNrSUVFRTc1NChnZXQodGhpcywgNCwgYnl0ZU9mZnNldCwgYXJndW1lbnRzWzFdKSwgMjMsIDQpO1xuICAgIH0sXG4gICAgZ2V0RmxvYXQ2NDogZnVuY3Rpb24gZ2V0RmxvYXQ2NChieXRlT2Zmc2V0IC8qLCBsaXR0bGVFbmRpYW4gKi8pe1xuICAgICAgcmV0dXJuIHVucGFja0lFRUU3NTQoZ2V0KHRoaXMsIDgsIGJ5dGVPZmZzZXQsIGFyZ3VtZW50c1sxXSksIDUyLCA4KTtcbiAgICB9LFxuICAgIHNldEludDg6IGZ1bmN0aW9uIHNldEludDgoYnl0ZU9mZnNldCwgdmFsdWUpe1xuICAgICAgc2V0KHRoaXMsIDEsIGJ5dGVPZmZzZXQsIHBhY2tJOCwgdmFsdWUpO1xuICAgIH0sXG4gICAgc2V0VWludDg6IGZ1bmN0aW9uIHNldFVpbnQ4KGJ5dGVPZmZzZXQsIHZhbHVlKXtcbiAgICAgIHNldCh0aGlzLCAxLCBieXRlT2Zmc2V0LCBwYWNrSTgsIHZhbHVlKTtcbiAgICB9LFxuICAgIHNldEludDE2OiBmdW5jdGlvbiBzZXRJbnQxNihieXRlT2Zmc2V0LCB2YWx1ZSAvKiwgbGl0dGxlRW5kaWFuICovKXtcbiAgICAgIHNldCh0aGlzLCAyLCBieXRlT2Zmc2V0LCBwYWNrSTE2LCB2YWx1ZSwgYXJndW1lbnRzWzJdKTtcbiAgICB9LFxuICAgIHNldFVpbnQxNjogZnVuY3Rpb24gc2V0VWludDE2KGJ5dGVPZmZzZXQsIHZhbHVlIC8qLCBsaXR0bGVFbmRpYW4gKi8pe1xuICAgICAgc2V0KHRoaXMsIDIsIGJ5dGVPZmZzZXQsIHBhY2tJMTYsIHZhbHVlLCBhcmd1bWVudHNbMl0pO1xuICAgIH0sXG4gICAgc2V0SW50MzI6IGZ1bmN0aW9uIHNldEludDMyKGJ5dGVPZmZzZXQsIHZhbHVlIC8qLCBsaXR0bGVFbmRpYW4gKi8pe1xuICAgICAgc2V0KHRoaXMsIDQsIGJ5dGVPZmZzZXQsIHBhY2tJMzIsIHZhbHVlLCBhcmd1bWVudHNbMl0pO1xuICAgIH0sXG4gICAgc2V0VWludDMyOiBmdW5jdGlvbiBzZXRVaW50MzIoYnl0ZU9mZnNldCwgdmFsdWUgLyosIGxpdHRsZUVuZGlhbiAqLyl7XG4gICAgICBzZXQodGhpcywgNCwgYnl0ZU9mZnNldCwgcGFja0kzMiwgdmFsdWUsIGFyZ3VtZW50c1syXSk7XG4gICAgfSxcbiAgICBzZXRGbG9hdDMyOiBmdW5jdGlvbiBzZXRGbG9hdDMyKGJ5dGVPZmZzZXQsIHZhbHVlIC8qLCBsaXR0bGVFbmRpYW4gKi8pe1xuICAgICAgc2V0KHRoaXMsIDQsIGJ5dGVPZmZzZXQsIHBhY2tGMzIsIHZhbHVlLCBhcmd1bWVudHNbMl0pO1xuICAgIH0sXG4gICAgc2V0RmxvYXQ2NDogZnVuY3Rpb24gc2V0RmxvYXQ2NChieXRlT2Zmc2V0LCB2YWx1ZSAvKiwgbGl0dGxlRW5kaWFuICovKXtcbiAgICAgIHNldCh0aGlzLCA4LCBieXRlT2Zmc2V0LCBwYWNrRjY0LCB2YWx1ZSwgYXJndW1lbnRzWzJdKTtcbiAgICB9XG4gIH0pO1xufSBlbHNlIHtcbiAgaWYoIWZhaWxzKGZ1bmN0aW9uKCl7XG4gICAgbmV3ICRBcnJheUJ1ZmZlcjsgICAgIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tbmV3XG4gIH0pIHx8ICFmYWlscyhmdW5jdGlvbigpe1xuICAgIG5ldyAkQXJyYXlCdWZmZXIoLjUpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLW5ld1xuICB9KSl7XG4gICAgJEFycmF5QnVmZmVyID0gZnVuY3Rpb24gQXJyYXlCdWZmZXIobGVuZ3RoKXtcbiAgICAgIHJldHVybiBuZXcgQmFzZUJ1ZmZlcih2YWxpZGF0ZUFycmF5QnVmZmVyQXJndW1lbnRzKHRoaXMsIGxlbmd0aCkpO1xuICAgIH07XG4gICAgdmFyIEFycmF5QnVmZmVyUHJvdG8gPSAkQXJyYXlCdWZmZXJbUFJPVE9UWVBFXSA9IEJhc2VCdWZmZXJbUFJPVE9UWVBFXTtcbiAgICBmb3IodmFyIGtleXMgPSBnT1BOKEJhc2VCdWZmZXIpLCBqID0gMCwga2V5OyBrZXlzLmxlbmd0aCA+IGo7ICl7XG4gICAgICBpZighKChrZXkgPSBrZXlzW2orK10pIGluICRBcnJheUJ1ZmZlcikpaGlkZSgkQXJyYXlCdWZmZXIsIGtleSwgQmFzZUJ1ZmZlcltrZXldKTtcbiAgICB9O1xuICAgIGlmKCFMSUJSQVJZKUFycmF5QnVmZmVyUHJvdG8uY29uc3RydWN0b3IgPSAkQXJyYXlCdWZmZXI7XG4gIH1cbiAgLy8gaU9TIFNhZmFyaSA3LnggYnVnXG4gIHZhciB2aWV3ID0gbmV3ICREYXRhVmlldyhuZXcgJEFycmF5QnVmZmVyKDIpKVxuICAgICwgJHNldEludDggPSAkRGF0YVZpZXdbUFJPVE9UWVBFXS5zZXRJbnQ4O1xuICB2aWV3LnNldEludDgoMCwgMjE0NzQ4MzY0OCk7XG4gIHZpZXcuc2V0SW50OCgxLCAyMTQ3NDgzNjQ5KTtcbiAgaWYodmlldy5nZXRJbnQ4KDApIHx8ICF2aWV3LmdldEludDgoMSkpcmVkZWZpbmVBbGwoJERhdGFWaWV3W1BST1RPVFlQRV0sIHtcbiAgICBzZXRJbnQ4OiBmdW5jdGlvbiBzZXRJbnQ4KGJ5dGVPZmZzZXQsIHZhbHVlKXtcbiAgICAgICRzZXRJbnQ4LmNhbGwodGhpcywgYnl0ZU9mZnNldCwgdmFsdWUgPDwgMjQgPj4gMjQpO1xuICAgIH0sXG4gICAgc2V0VWludDg6IGZ1bmN0aW9uIHNldFVpbnQ4KGJ5dGVPZmZzZXQsIHZhbHVlKXtcbiAgICAgICRzZXRJbnQ4LmNhbGwodGhpcywgYnl0ZU9mZnNldCwgdmFsdWUgPDwgMjQgPj4gMjQpO1xuICAgIH1cbiAgfSwgdHJ1ZSk7XG59XG5zZXRUb1N0cmluZ1RhZygkQXJyYXlCdWZmZXIsIEFSUkFZX0JVRkZFUik7XG5zZXRUb1N0cmluZ1RhZygkRGF0YVZpZXcsIERBVEFfVklFVyk7XG5oaWRlKCREYXRhVmlld1tQUk9UT1RZUEVdLCAkdHlwZWQuVklFVywgdHJ1ZSk7XG5leHBvcnRzW0FSUkFZX0JVRkZFUl0gPSAkQXJyYXlCdWZmZXI7XG5leHBvcnRzW0RBVEFfVklFV10gPSAkRGF0YVZpZXc7IiwidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpXG4gICwgaGlkZSAgID0gcmVxdWlyZSgnLi9faGlkZScpXG4gICwgdWlkICAgID0gcmVxdWlyZSgnLi9fdWlkJylcbiAgLCBUWVBFRCAgPSB1aWQoJ3R5cGVkX2FycmF5JylcbiAgLCBWSUVXICAgPSB1aWQoJ3ZpZXcnKVxuICAsIEFCViAgICA9ICEhKGdsb2JhbC5BcnJheUJ1ZmZlciAmJiBnbG9iYWwuRGF0YVZpZXcpXG4gICwgQ09OU1RSID0gQUJWXG4gICwgaSA9IDAsIGwgPSA5LCBUeXBlZDtcblxudmFyIFR5cGVkQXJyYXlDb25zdHJ1Y3RvcnMgPSAoXG4gICdJbnQ4QXJyYXksVWludDhBcnJheSxVaW50OENsYW1wZWRBcnJheSxJbnQxNkFycmF5LFVpbnQxNkFycmF5LEludDMyQXJyYXksVWludDMyQXJyYXksRmxvYXQzMkFycmF5LEZsb2F0NjRBcnJheSdcbikuc3BsaXQoJywnKTtcblxud2hpbGUoaSA8IGwpe1xuICBpZihUeXBlZCA9IGdsb2JhbFtUeXBlZEFycmF5Q29uc3RydWN0b3JzW2krK11dKXtcbiAgICBoaWRlKFR5cGVkLnByb3RvdHlwZSwgVFlQRUQsIHRydWUpO1xuICAgIGhpZGUoVHlwZWQucHJvdG90eXBlLCBWSUVXLCB0cnVlKTtcbiAgfSBlbHNlIENPTlNUUiA9IGZhbHNlO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgQUJWOiAgICBBQlYsXG4gIENPTlNUUjogQ09OU1RSLFxuICBUWVBFRDogIFRZUEVELFxuICBWSUVXOiAgIFZJRVdcbn07IiwidmFyIGlkID0gMFxuICAsIHB4ID0gTWF0aC5yYW5kb20oKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oa2V5KXtcbiAgcmV0dXJuICdTeW1ib2woJy5jb25jYXQoa2V5ID09PSB1bmRlZmluZWQgPyAnJyA6IGtleSwgJylfJywgKCsraWQgKyBweCkudG9TdHJpbmcoMzYpKTtcbn07IiwidmFyIGdsb2JhbCAgICAgICAgID0gcmVxdWlyZSgnLi9fZ2xvYmFsJylcbiAgLCBjb3JlICAgICAgICAgICA9IHJlcXVpcmUoJy4vX2NvcmUnKVxuICAsIExJQlJBUlkgICAgICAgID0gcmVxdWlyZSgnLi9fbGlicmFyeScpXG4gICwgd2tzRXh0ICAgICAgICAgPSByZXF1aXJlKCcuL193a3MtZXh0JylcbiAgLCBkZWZpbmVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpLmY7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKG5hbWUpe1xuICB2YXIgJFN5bWJvbCA9IGNvcmUuU3ltYm9sIHx8IChjb3JlLlN5bWJvbCA9IExJQlJBUlkgPyB7fSA6IGdsb2JhbC5TeW1ib2wgfHwge30pO1xuICBpZihuYW1lLmNoYXJBdCgwKSAhPSAnXycgJiYgIShuYW1lIGluICRTeW1ib2wpKWRlZmluZVByb3BlcnR5KCRTeW1ib2wsIG5hbWUsIHt2YWx1ZTogd2tzRXh0LmYobmFtZSl9KTtcbn07IiwiZXhwb3J0cy5mID0gcmVxdWlyZSgnLi9fd2tzJyk7IiwidmFyIHN0b3JlICAgICAgPSByZXF1aXJlKCcuL19zaGFyZWQnKSgnd2tzJylcbiAgLCB1aWQgICAgICAgID0gcmVxdWlyZSgnLi9fdWlkJylcbiAgLCBTeW1ib2wgICAgID0gcmVxdWlyZSgnLi9fZ2xvYmFsJykuU3ltYm9sXG4gICwgVVNFX1NZTUJPTCA9IHR5cGVvZiBTeW1ib2wgPT0gJ2Z1bmN0aW9uJztcblxudmFyICRleHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihuYW1lKXtcbiAgcmV0dXJuIHN0b3JlW25hbWVdIHx8IChzdG9yZVtuYW1lXSA9XG4gICAgVVNFX1NZTUJPTCAmJiBTeW1ib2xbbmFtZV0gfHwgKFVTRV9TWU1CT0wgPyBTeW1ib2wgOiB1aWQpKCdTeW1ib2wuJyArIG5hbWUpKTtcbn07XG5cbiRleHBvcnRzLnN0b3JlID0gc3RvcmU7IiwidmFyIGNsYXNzb2YgICA9IHJlcXVpcmUoJy4vX2NsYXNzb2YnKVxuICAsIElURVJBVE9SICA9IHJlcXVpcmUoJy4vX3drcycpKCdpdGVyYXRvcicpXG4gICwgSXRlcmF0b3JzID0gcmVxdWlyZSgnLi9faXRlcmF0b3JzJyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vX2NvcmUnKS5nZXRJdGVyYXRvck1ldGhvZCA9IGZ1bmN0aW9uKGl0KXtcbiAgaWYoaXQgIT0gdW5kZWZpbmVkKXJldHVybiBpdFtJVEVSQVRPUl1cbiAgICB8fCBpdFsnQEBpdGVyYXRvciddXG4gICAgfHwgSXRlcmF0b3JzW2NsYXNzb2YoaXQpXTtcbn07IiwiLy8gaHR0cHM6Ly9naXRodWIuY29tL2JlbmphbWluZ3IvUmV4RXhwLmVzY2FwZVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKVxuICAsICRyZSAgICAgPSByZXF1aXJlKCcuL19yZXBsYWNlcicpKC9bXFxcXF4kKis/LigpfFtcXF17fV0vZywgJ1xcXFwkJicpO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ1JlZ0V4cCcsIHtlc2NhcGU6IGZ1bmN0aW9uIGVzY2FwZShpdCl7IHJldHVybiAkcmUoaXQpOyB9fSk7XG4iLCIvLyAyMi4xLjMuMyBBcnJheS5wcm90b3R5cGUuY29weVdpdGhpbih0YXJnZXQsIHN0YXJ0LCBlbmQgPSB0aGlzLmxlbmd0aClcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5QLCAnQXJyYXknLCB7Y29weVdpdGhpbjogcmVxdWlyZSgnLi9fYXJyYXktY29weS13aXRoaW4nKX0pO1xuXG5yZXF1aXJlKCcuL19hZGQtdG8tdW5zY29wYWJsZXMnKSgnY29weVdpdGhpbicpOyIsIid1c2Ugc3RyaWN0JztcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0JylcbiAgLCAkZXZlcnkgID0gcmVxdWlyZSgnLi9fYXJyYXktbWV0aG9kcycpKDQpO1xuXG4kZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuRiAqICFyZXF1aXJlKCcuL19zdHJpY3QtbWV0aG9kJykoW10uZXZlcnksIHRydWUpLCAnQXJyYXknLCB7XG4gIC8vIDIyLjEuMy41IC8gMTUuNC40LjE2IEFycmF5LnByb3RvdHlwZS5ldmVyeShjYWxsYmFja2ZuIFssIHRoaXNBcmddKVxuICBldmVyeTogZnVuY3Rpb24gZXZlcnkoY2FsbGJhY2tmbiAvKiAsIHRoaXNBcmcgKi8pe1xuICAgIHJldHVybiAkZXZlcnkodGhpcywgY2FsbGJhY2tmbiwgYXJndW1lbnRzWzFdKTtcbiAgfVxufSk7IiwiLy8gMjIuMS4zLjYgQXJyYXkucHJvdG90eXBlLmZpbGwodmFsdWUsIHN0YXJ0ID0gMCwgZW5kID0gdGhpcy5sZW5ndGgpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUCwgJ0FycmF5Jywge2ZpbGw6IHJlcXVpcmUoJy4vX2FycmF5LWZpbGwnKX0pO1xuXG5yZXF1aXJlKCcuL19hZGQtdG8tdW5zY29wYWJsZXMnKSgnZmlsbCcpOyIsIid1c2Ugc3RyaWN0JztcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0JylcbiAgLCAkZmlsdGVyID0gcmVxdWlyZSgnLi9fYXJyYXktbWV0aG9kcycpKDIpO1xuXG4kZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuRiAqICFyZXF1aXJlKCcuL19zdHJpY3QtbWV0aG9kJykoW10uZmlsdGVyLCB0cnVlKSwgJ0FycmF5Jywge1xuICAvLyAyMi4xLjMuNyAvIDE1LjQuNC4yMCBBcnJheS5wcm90b3R5cGUuZmlsdGVyKGNhbGxiYWNrZm4gWywgdGhpc0FyZ10pXG4gIGZpbHRlcjogZnVuY3Rpb24gZmlsdGVyKGNhbGxiYWNrZm4gLyogLCB0aGlzQXJnICovKXtcbiAgICByZXR1cm4gJGZpbHRlcih0aGlzLCBjYWxsYmFja2ZuLCBhcmd1bWVudHNbMV0pO1xuICB9XG59KTsiLCIndXNlIHN0cmljdCc7XG4vLyAyMi4xLjMuOSBBcnJheS5wcm90b3R5cGUuZmluZEluZGV4KHByZWRpY2F0ZSwgdGhpc0FyZyA9IHVuZGVmaW5lZClcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0JylcbiAgLCAkZmluZCAgID0gcmVxdWlyZSgnLi9fYXJyYXktbWV0aG9kcycpKDYpXG4gICwgS0VZICAgICA9ICdmaW5kSW5kZXgnXG4gICwgZm9yY2VkICA9IHRydWU7XG4vLyBTaG91bGRuJ3Qgc2tpcCBob2xlc1xuaWYoS0VZIGluIFtdKUFycmF5KDEpW0tFWV0oZnVuY3Rpb24oKXsgZm9yY2VkID0gZmFsc2U7IH0pO1xuJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiBmb3JjZWQsICdBcnJheScsIHtcbiAgZmluZEluZGV4OiBmdW5jdGlvbiBmaW5kSW5kZXgoY2FsbGJhY2tmbi8qLCB0aGF0ID0gdW5kZWZpbmVkICovKXtcbiAgICByZXR1cm4gJGZpbmQodGhpcywgY2FsbGJhY2tmbiwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQpO1xuICB9XG59KTtcbnJlcXVpcmUoJy4vX2FkZC10by11bnNjb3BhYmxlcycpKEtFWSk7IiwiJ3VzZSBzdHJpY3QnO1xuLy8gMjIuMS4zLjggQXJyYXkucHJvdG90eXBlLmZpbmQocHJlZGljYXRlLCB0aGlzQXJnID0gdW5kZWZpbmVkKVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKVxuICAsICRmaW5kICAgPSByZXF1aXJlKCcuL19hcnJheS1tZXRob2RzJykoNSlcbiAgLCBLRVkgICAgID0gJ2ZpbmQnXG4gICwgZm9yY2VkICA9IHRydWU7XG4vLyBTaG91bGRuJ3Qgc2tpcCBob2xlc1xuaWYoS0VZIGluIFtdKUFycmF5KDEpW0tFWV0oZnVuY3Rpb24oKXsgZm9yY2VkID0gZmFsc2U7IH0pO1xuJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiBmb3JjZWQsICdBcnJheScsIHtcbiAgZmluZDogZnVuY3Rpb24gZmluZChjYWxsYmFja2ZuLyosIHRoYXQgPSB1bmRlZmluZWQgKi8pe1xuICAgIHJldHVybiAkZmluZCh0aGlzLCBjYWxsYmFja2ZuLCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCk7XG4gIH1cbn0pO1xucmVxdWlyZSgnLi9fYWRkLXRvLXVuc2NvcGFibGVzJykoS0VZKTsiLCIndXNlIHN0cmljdCc7XG52YXIgJGV4cG9ydCAgPSByZXF1aXJlKCcuL19leHBvcnQnKVxuICAsICRmb3JFYWNoID0gcmVxdWlyZSgnLi9fYXJyYXktbWV0aG9kcycpKDApXG4gICwgU1RSSUNUICAgPSByZXF1aXJlKCcuL19zdHJpY3QtbWV0aG9kJykoW10uZm9yRWFjaCwgdHJ1ZSk7XG5cbiRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5GICogIVNUUklDVCwgJ0FycmF5Jywge1xuICAvLyAyMi4xLjMuMTAgLyAxNS40LjQuMTggQXJyYXkucHJvdG90eXBlLmZvckVhY2goY2FsbGJhY2tmbiBbLCB0aGlzQXJnXSlcbiAgZm9yRWFjaDogZnVuY3Rpb24gZm9yRWFjaChjYWxsYmFja2ZuIC8qICwgdGhpc0FyZyAqLyl7XG4gICAgcmV0dXJuICRmb3JFYWNoKHRoaXMsIGNhbGxiYWNrZm4sIGFyZ3VtZW50c1sxXSk7XG4gIH1cbn0pOyIsIid1c2Ugc3RyaWN0JztcbnZhciBjdHggICAgICAgICAgICA9IHJlcXVpcmUoJy4vX2N0eCcpXG4gICwgJGV4cG9ydCAgICAgICAgPSByZXF1aXJlKCcuL19leHBvcnQnKVxuICAsIHRvT2JqZWN0ICAgICAgID0gcmVxdWlyZSgnLi9fdG8tb2JqZWN0JylcbiAgLCBjYWxsICAgICAgICAgICA9IHJlcXVpcmUoJy4vX2l0ZXItY2FsbCcpXG4gICwgaXNBcnJheUl0ZXIgICAgPSByZXF1aXJlKCcuL19pcy1hcnJheS1pdGVyJylcbiAgLCB0b0xlbmd0aCAgICAgICA9IHJlcXVpcmUoJy4vX3RvLWxlbmd0aCcpXG4gICwgY3JlYXRlUHJvcGVydHkgPSByZXF1aXJlKCcuL19jcmVhdGUtcHJvcGVydHknKVxuICAsIGdldEl0ZXJGbiAgICAgID0gcmVxdWlyZSgnLi9jb3JlLmdldC1pdGVyYXRvci1tZXRob2QnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAhcmVxdWlyZSgnLi9faXRlci1kZXRlY3QnKShmdW5jdGlvbihpdGVyKXsgQXJyYXkuZnJvbShpdGVyKTsgfSksICdBcnJheScsIHtcbiAgLy8gMjIuMS4yLjEgQXJyYXkuZnJvbShhcnJheUxpa2UsIG1hcGZuID0gdW5kZWZpbmVkLCB0aGlzQXJnID0gdW5kZWZpbmVkKVxuICBmcm9tOiBmdW5jdGlvbiBmcm9tKGFycmF5TGlrZS8qLCBtYXBmbiA9IHVuZGVmaW5lZCwgdGhpc0FyZyA9IHVuZGVmaW5lZCovKXtcbiAgICB2YXIgTyAgICAgICA9IHRvT2JqZWN0KGFycmF5TGlrZSlcbiAgICAgICwgQyAgICAgICA9IHR5cGVvZiB0aGlzID09ICdmdW5jdGlvbicgPyB0aGlzIDogQXJyYXlcbiAgICAgICwgYUxlbiAgICA9IGFyZ3VtZW50cy5sZW5ndGhcbiAgICAgICwgbWFwZm4gICA9IGFMZW4gPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkXG4gICAgICAsIG1hcHBpbmcgPSBtYXBmbiAhPT0gdW5kZWZpbmVkXG4gICAgICAsIGluZGV4ICAgPSAwXG4gICAgICAsIGl0ZXJGbiAgPSBnZXRJdGVyRm4oTylcbiAgICAgICwgbGVuZ3RoLCByZXN1bHQsIHN0ZXAsIGl0ZXJhdG9yO1xuICAgIGlmKG1hcHBpbmcpbWFwZm4gPSBjdHgobWFwZm4sIGFMZW4gPiAyID8gYXJndW1lbnRzWzJdIDogdW5kZWZpbmVkLCAyKTtcbiAgICAvLyBpZiBvYmplY3QgaXNuJ3QgaXRlcmFibGUgb3IgaXQncyBhcnJheSB3aXRoIGRlZmF1bHQgaXRlcmF0b3IgLSB1c2Ugc2ltcGxlIGNhc2VcbiAgICBpZihpdGVyRm4gIT0gdW5kZWZpbmVkICYmICEoQyA9PSBBcnJheSAmJiBpc0FycmF5SXRlcihpdGVyRm4pKSl7XG4gICAgICBmb3IoaXRlcmF0b3IgPSBpdGVyRm4uY2FsbChPKSwgcmVzdWx0ID0gbmV3IEM7ICEoc3RlcCA9IGl0ZXJhdG9yLm5leHQoKSkuZG9uZTsgaW5kZXgrKyl7XG4gICAgICAgIGNyZWF0ZVByb3BlcnR5KHJlc3VsdCwgaW5kZXgsIG1hcHBpbmcgPyBjYWxsKGl0ZXJhdG9yLCBtYXBmbiwgW3N0ZXAudmFsdWUsIGluZGV4XSwgdHJ1ZSkgOiBzdGVwLnZhbHVlKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgbGVuZ3RoID0gdG9MZW5ndGgoTy5sZW5ndGgpO1xuICAgICAgZm9yKHJlc3VsdCA9IG5ldyBDKGxlbmd0aCk7IGxlbmd0aCA+IGluZGV4OyBpbmRleCsrKXtcbiAgICAgICAgY3JlYXRlUHJvcGVydHkocmVzdWx0LCBpbmRleCwgbWFwcGluZyA/IG1hcGZuKE9baW5kZXhdLCBpbmRleCkgOiBPW2luZGV4XSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJlc3VsdC5sZW5ndGggPSBpbmRleDtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkZXhwb3J0ICAgICAgID0gcmVxdWlyZSgnLi9fZXhwb3J0JylcbiAgLCAkaW5kZXhPZiAgICAgID0gcmVxdWlyZSgnLi9fYXJyYXktaW5jbHVkZXMnKShmYWxzZSlcbiAgLCAkbmF0aXZlICAgICAgID0gW10uaW5kZXhPZlxuICAsIE5FR0FUSVZFX1pFUk8gPSAhISRuYXRpdmUgJiYgMSAvIFsxXS5pbmRleE9mKDEsIC0wKSA8IDA7XG5cbiRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5GICogKE5FR0FUSVZFX1pFUk8gfHwgIXJlcXVpcmUoJy4vX3N0cmljdC1tZXRob2QnKSgkbmF0aXZlKSksICdBcnJheScsIHtcbiAgLy8gMjIuMS4zLjExIC8gMTUuNC40LjE0IEFycmF5LnByb3RvdHlwZS5pbmRleE9mKHNlYXJjaEVsZW1lbnQgWywgZnJvbUluZGV4XSlcbiAgaW5kZXhPZjogZnVuY3Rpb24gaW5kZXhPZihzZWFyY2hFbGVtZW50IC8qLCBmcm9tSW5kZXggPSAwICovKXtcbiAgICByZXR1cm4gTkVHQVRJVkVfWkVST1xuICAgICAgLy8gY29udmVydCAtMCB0byArMFxuICAgICAgPyAkbmF0aXZlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgMFxuICAgICAgOiAkaW5kZXhPZih0aGlzLCBzZWFyY2hFbGVtZW50LCBhcmd1bWVudHNbMV0pO1xuICB9XG59KTsiLCIvLyAyMi4xLjIuMiAvIDE1LjQuMy4yIEFycmF5LmlzQXJyYXkoYXJnKVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdBcnJheScsIHtpc0FycmF5OiByZXF1aXJlKCcuL19pcy1hcnJheScpfSk7IiwiJ3VzZSBzdHJpY3QnO1xudmFyIGFkZFRvVW5zY29wYWJsZXMgPSByZXF1aXJlKCcuL19hZGQtdG8tdW5zY29wYWJsZXMnKVxuICAsIHN0ZXAgICAgICAgICAgICAgPSByZXF1aXJlKCcuL19pdGVyLXN0ZXAnKVxuICAsIEl0ZXJhdG9ycyAgICAgICAgPSByZXF1aXJlKCcuL19pdGVyYXRvcnMnKVxuICAsIHRvSU9iamVjdCAgICAgICAgPSByZXF1aXJlKCcuL190by1pb2JqZWN0Jyk7XG5cbi8vIDIyLjEuMy40IEFycmF5LnByb3RvdHlwZS5lbnRyaWVzKClcbi8vIDIyLjEuMy4xMyBBcnJheS5wcm90b3R5cGUua2V5cygpXG4vLyAyMi4xLjMuMjkgQXJyYXkucHJvdG90eXBlLnZhbHVlcygpXG4vLyAyMi4xLjMuMzAgQXJyYXkucHJvdG90eXBlW0BAaXRlcmF0b3JdKClcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9faXRlci1kZWZpbmUnKShBcnJheSwgJ0FycmF5JywgZnVuY3Rpb24oaXRlcmF0ZWQsIGtpbmQpe1xuICB0aGlzLl90ID0gdG9JT2JqZWN0KGl0ZXJhdGVkKTsgLy8gdGFyZ2V0XG4gIHRoaXMuX2kgPSAwOyAgICAgICAgICAgICAgICAgICAvLyBuZXh0IGluZGV4XG4gIHRoaXMuX2sgPSBraW5kOyAgICAgICAgICAgICAgICAvLyBraW5kXG4vLyAyMi4xLjUuMi4xICVBcnJheUl0ZXJhdG9yUHJvdG90eXBlJS5uZXh0KClcbn0sIGZ1bmN0aW9uKCl7XG4gIHZhciBPICAgICA9IHRoaXMuX3RcbiAgICAsIGtpbmQgID0gdGhpcy5fa1xuICAgICwgaW5kZXggPSB0aGlzLl9pKys7XG4gIGlmKCFPIHx8IGluZGV4ID49IE8ubGVuZ3RoKXtcbiAgICB0aGlzLl90ID0gdW5kZWZpbmVkO1xuICAgIHJldHVybiBzdGVwKDEpO1xuICB9XG4gIGlmKGtpbmQgPT0gJ2tleXMnICApcmV0dXJuIHN0ZXAoMCwgaW5kZXgpO1xuICBpZihraW5kID09ICd2YWx1ZXMnKXJldHVybiBzdGVwKDAsIE9baW5kZXhdKTtcbiAgcmV0dXJuIHN0ZXAoMCwgW2luZGV4LCBPW2luZGV4XV0pO1xufSwgJ3ZhbHVlcycpO1xuXG4vLyBhcmd1bWVudHNMaXN0W0BAaXRlcmF0b3JdIGlzICVBcnJheVByb3RvX3ZhbHVlcyUgKDkuNC40LjYsIDkuNC40LjcpXG5JdGVyYXRvcnMuQXJndW1lbnRzID0gSXRlcmF0b3JzLkFycmF5O1xuXG5hZGRUb1Vuc2NvcGFibGVzKCdrZXlzJyk7XG5hZGRUb1Vuc2NvcGFibGVzKCd2YWx1ZXMnKTtcbmFkZFRvVW5zY29wYWJsZXMoJ2VudHJpZXMnKTsiLCIndXNlIHN0cmljdCc7XG4vLyAyMi4xLjMuMTMgQXJyYXkucHJvdG90eXBlLmpvaW4oc2VwYXJhdG9yKVxudmFyICRleHBvcnQgICA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpXG4gICwgdG9JT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8taW9iamVjdCcpXG4gICwgYXJyYXlKb2luID0gW10uam9pbjtcblxuLy8gZmFsbGJhY2sgZm9yIG5vdCBhcnJheS1saWtlIHN0cmluZ3NcbiRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5GICogKHJlcXVpcmUoJy4vX2lvYmplY3QnKSAhPSBPYmplY3QgfHwgIXJlcXVpcmUoJy4vX3N0cmljdC1tZXRob2QnKShhcnJheUpvaW4pKSwgJ0FycmF5Jywge1xuICBqb2luOiBmdW5jdGlvbiBqb2luKHNlcGFyYXRvcil7XG4gICAgcmV0dXJuIGFycmF5Sm9pbi5jYWxsKHRvSU9iamVjdCh0aGlzKSwgc2VwYXJhdG9yID09PSB1bmRlZmluZWQgPyAnLCcgOiBzZXBhcmF0b3IpO1xuICB9XG59KTsiLCIndXNlIHN0cmljdCc7XG52YXIgJGV4cG9ydCAgICAgICA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpXG4gICwgdG9JT2JqZWN0ICAgICA9IHJlcXVpcmUoJy4vX3RvLWlvYmplY3QnKVxuICAsIHRvSW50ZWdlciAgICAgPSByZXF1aXJlKCcuL190by1pbnRlZ2VyJylcbiAgLCB0b0xlbmd0aCAgICAgID0gcmVxdWlyZSgnLi9fdG8tbGVuZ3RoJylcbiAgLCAkbmF0aXZlICAgICAgID0gW10ubGFzdEluZGV4T2ZcbiAgLCBORUdBVElWRV9aRVJPID0gISEkbmF0aXZlICYmIDEgLyBbMV0ubGFzdEluZGV4T2YoMSwgLTApIDwgMDtcblxuJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiAoTkVHQVRJVkVfWkVSTyB8fCAhcmVxdWlyZSgnLi9fc3RyaWN0LW1ldGhvZCcpKCRuYXRpdmUpKSwgJ0FycmF5Jywge1xuICAvLyAyMi4xLjMuMTQgLyAxNS40LjQuMTUgQXJyYXkucHJvdG90eXBlLmxhc3RJbmRleE9mKHNlYXJjaEVsZW1lbnQgWywgZnJvbUluZGV4XSlcbiAgbGFzdEluZGV4T2Y6IGZ1bmN0aW9uIGxhc3RJbmRleE9mKHNlYXJjaEVsZW1lbnQgLyosIGZyb21JbmRleCA9IEBbKi0xXSAqLyl7XG4gICAgLy8gY29udmVydCAtMCB0byArMFxuICAgIGlmKE5FR0FUSVZFX1pFUk8pcmV0dXJuICRuYXRpdmUuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCAwO1xuICAgIHZhciBPICAgICAgPSB0b0lPYmplY3QodGhpcylcbiAgICAgICwgbGVuZ3RoID0gdG9MZW5ndGgoTy5sZW5ndGgpXG4gICAgICAsIGluZGV4ICA9IGxlbmd0aCAtIDE7XG4gICAgaWYoYXJndW1lbnRzLmxlbmd0aCA+IDEpaW5kZXggPSBNYXRoLm1pbihpbmRleCwgdG9JbnRlZ2VyKGFyZ3VtZW50c1sxXSkpO1xuICAgIGlmKGluZGV4IDwgMClpbmRleCA9IGxlbmd0aCArIGluZGV4O1xuICAgIGZvcig7aW5kZXggPj0gMDsgaW5kZXgtLSlpZihpbmRleCBpbiBPKWlmKE9baW5kZXhdID09PSBzZWFyY2hFbGVtZW50KXJldHVybiBpbmRleCB8fCAwO1xuICAgIHJldHVybiAtMTtcbiAgfVxufSk7IiwiJ3VzZSBzdHJpY3QnO1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKVxuICAsICRtYXAgICAgPSByZXF1aXJlKCcuL19hcnJheS1tZXRob2RzJykoMSk7XG5cbiRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5GICogIXJlcXVpcmUoJy4vX3N0cmljdC1tZXRob2QnKShbXS5tYXAsIHRydWUpLCAnQXJyYXknLCB7XG4gIC8vIDIyLjEuMy4xNSAvIDE1LjQuNC4xOSBBcnJheS5wcm90b3R5cGUubWFwKGNhbGxiYWNrZm4gWywgdGhpc0FyZ10pXG4gIG1hcDogZnVuY3Rpb24gbWFwKGNhbGxiYWNrZm4gLyogLCB0aGlzQXJnICovKXtcbiAgICByZXR1cm4gJG1hcCh0aGlzLCBjYWxsYmFja2ZuLCBhcmd1bWVudHNbMV0pO1xuICB9XG59KTsiLCIndXNlIHN0cmljdCc7XG52YXIgJGV4cG9ydCAgICAgICAgPSByZXF1aXJlKCcuL19leHBvcnQnKVxuICAsIGNyZWF0ZVByb3BlcnR5ID0gcmVxdWlyZSgnLi9fY3JlYXRlLXByb3BlcnR5Jyk7XG5cbi8vIFdlYktpdCBBcnJheS5vZiBpc24ndCBnZW5lcmljXG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqIHJlcXVpcmUoJy4vX2ZhaWxzJykoZnVuY3Rpb24oKXtcbiAgZnVuY3Rpb24gRigpe31cbiAgcmV0dXJuICEoQXJyYXkub2YuY2FsbChGKSBpbnN0YW5jZW9mIEYpO1xufSksICdBcnJheScsIHtcbiAgLy8gMjIuMS4yLjMgQXJyYXkub2YoIC4uLml0ZW1zKVxuICBvZjogZnVuY3Rpb24gb2YoLyogLi4uYXJncyAqLyl7XG4gICAgdmFyIGluZGV4ICA9IDBcbiAgICAgICwgYUxlbiAgID0gYXJndW1lbnRzLmxlbmd0aFxuICAgICAgLCByZXN1bHQgPSBuZXcgKHR5cGVvZiB0aGlzID09ICdmdW5jdGlvbicgPyB0aGlzIDogQXJyYXkpKGFMZW4pO1xuICAgIHdoaWxlKGFMZW4gPiBpbmRleCljcmVhdGVQcm9wZXJ0eShyZXN1bHQsIGluZGV4LCBhcmd1bWVudHNbaW5kZXgrK10pO1xuICAgIHJlc3VsdC5sZW5ndGggPSBhTGVuO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbn0pOyIsIid1c2Ugc3RyaWN0JztcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0JylcbiAgLCAkcmVkdWNlID0gcmVxdWlyZSgnLi9fYXJyYXktcmVkdWNlJyk7XG5cbiRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5GICogIXJlcXVpcmUoJy4vX3N0cmljdC1tZXRob2QnKShbXS5yZWR1Y2VSaWdodCwgdHJ1ZSksICdBcnJheScsIHtcbiAgLy8gMjIuMS4zLjE5IC8gMTUuNC40LjIyIEFycmF5LnByb3RvdHlwZS5yZWR1Y2VSaWdodChjYWxsYmFja2ZuIFssIGluaXRpYWxWYWx1ZV0pXG4gIHJlZHVjZVJpZ2h0OiBmdW5jdGlvbiByZWR1Y2VSaWdodChjYWxsYmFja2ZuIC8qICwgaW5pdGlhbFZhbHVlICovKXtcbiAgICByZXR1cm4gJHJlZHVjZSh0aGlzLCBjYWxsYmFja2ZuLCBhcmd1bWVudHMubGVuZ3RoLCBhcmd1bWVudHNbMV0sIHRydWUpO1xuICB9XG59KTsiLCIndXNlIHN0cmljdCc7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpXG4gICwgJHJlZHVjZSA9IHJlcXVpcmUoJy4vX2FycmF5LXJlZHVjZScpO1xuXG4kZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuRiAqICFyZXF1aXJlKCcuL19zdHJpY3QtbWV0aG9kJykoW10ucmVkdWNlLCB0cnVlKSwgJ0FycmF5Jywge1xuICAvLyAyMi4xLjMuMTggLyAxNS40LjQuMjEgQXJyYXkucHJvdG90eXBlLnJlZHVjZShjYWxsYmFja2ZuIFssIGluaXRpYWxWYWx1ZV0pXG4gIHJlZHVjZTogZnVuY3Rpb24gcmVkdWNlKGNhbGxiYWNrZm4gLyogLCBpbml0aWFsVmFsdWUgKi8pe1xuICAgIHJldHVybiAkcmVkdWNlKHRoaXMsIGNhbGxiYWNrZm4sIGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3VtZW50c1sxXSwgZmFsc2UpO1xuICB9XG59KTsiLCIndXNlIHN0cmljdCc7XG52YXIgJGV4cG9ydCAgICA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpXG4gICwgaHRtbCAgICAgICA9IHJlcXVpcmUoJy4vX2h0bWwnKVxuICAsIGNvZiAgICAgICAgPSByZXF1aXJlKCcuL19jb2YnKVxuICAsIHRvSW5kZXggICAgPSByZXF1aXJlKCcuL190by1pbmRleCcpXG4gICwgdG9MZW5ndGggICA9IHJlcXVpcmUoJy4vX3RvLWxlbmd0aCcpXG4gICwgYXJyYXlTbGljZSA9IFtdLnNsaWNlO1xuXG4vLyBmYWxsYmFjayBmb3Igbm90IGFycmF5LWxpa2UgRVMzIHN0cmluZ3MgYW5kIERPTSBvYmplY3RzXG4kZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuRiAqIHJlcXVpcmUoJy4vX2ZhaWxzJykoZnVuY3Rpb24oKXtcbiAgaWYoaHRtbClhcnJheVNsaWNlLmNhbGwoaHRtbCk7XG59KSwgJ0FycmF5Jywge1xuICBzbGljZTogZnVuY3Rpb24gc2xpY2UoYmVnaW4sIGVuZCl7XG4gICAgdmFyIGxlbiAgID0gdG9MZW5ndGgodGhpcy5sZW5ndGgpXG4gICAgICAsIGtsYXNzID0gY29mKHRoaXMpO1xuICAgIGVuZCA9IGVuZCA9PT0gdW5kZWZpbmVkID8gbGVuIDogZW5kO1xuICAgIGlmKGtsYXNzID09ICdBcnJheScpcmV0dXJuIGFycmF5U2xpY2UuY2FsbCh0aGlzLCBiZWdpbiwgZW5kKTtcbiAgICB2YXIgc3RhcnQgID0gdG9JbmRleChiZWdpbiwgbGVuKVxuICAgICAgLCB1cFRvICAgPSB0b0luZGV4KGVuZCwgbGVuKVxuICAgICAgLCBzaXplICAgPSB0b0xlbmd0aCh1cFRvIC0gc3RhcnQpXG4gICAgICAsIGNsb25lZCA9IEFycmF5KHNpemUpXG4gICAgICAsIGkgICAgICA9IDA7XG4gICAgZm9yKDsgaSA8IHNpemU7IGkrKyljbG9uZWRbaV0gPSBrbGFzcyA9PSAnU3RyaW5nJ1xuICAgICAgPyB0aGlzLmNoYXJBdChzdGFydCArIGkpXG4gICAgICA6IHRoaXNbc3RhcnQgKyBpXTtcbiAgICByZXR1cm4gY2xvbmVkO1xuICB9XG59KTsiLCIndXNlIHN0cmljdCc7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpXG4gICwgJHNvbWUgICA9IHJlcXVpcmUoJy4vX2FycmF5LW1ldGhvZHMnKSgzKTtcblxuJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiAhcmVxdWlyZSgnLi9fc3RyaWN0LW1ldGhvZCcpKFtdLnNvbWUsIHRydWUpLCAnQXJyYXknLCB7XG4gIC8vIDIyLjEuMy4yMyAvIDE1LjQuNC4xNyBBcnJheS5wcm90b3R5cGUuc29tZShjYWxsYmFja2ZuIFssIHRoaXNBcmddKVxuICBzb21lOiBmdW5jdGlvbiBzb21lKGNhbGxiYWNrZm4gLyogLCB0aGlzQXJnICovKXtcbiAgICByZXR1cm4gJHNvbWUodGhpcywgY2FsbGJhY2tmbiwgYXJndW1lbnRzWzFdKTtcbiAgfVxufSk7IiwiJ3VzZSBzdHJpY3QnO1xudmFyICRleHBvcnQgICA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpXG4gICwgYUZ1bmN0aW9uID0gcmVxdWlyZSgnLi9fYS1mdW5jdGlvbicpXG4gICwgdG9PYmplY3QgID0gcmVxdWlyZSgnLi9fdG8tb2JqZWN0JylcbiAgLCBmYWlscyAgICAgPSByZXF1aXJlKCcuL19mYWlscycpXG4gICwgJHNvcnQgICAgID0gW10uc29ydFxuICAsIHRlc3QgICAgICA9IFsxLCAyLCAzXTtcblxuJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiAoZmFpbHMoZnVuY3Rpb24oKXtcbiAgLy8gSUU4LVxuICB0ZXN0LnNvcnQodW5kZWZpbmVkKTtcbn0pIHx8ICFmYWlscyhmdW5jdGlvbigpe1xuICAvLyBWOCBidWdcbiAgdGVzdC5zb3J0KG51bGwpO1xuICAvLyBPbGQgV2ViS2l0XG59KSB8fCAhcmVxdWlyZSgnLi9fc3RyaWN0LW1ldGhvZCcpKCRzb3J0KSksICdBcnJheScsIHtcbiAgLy8gMjIuMS4zLjI1IEFycmF5LnByb3RvdHlwZS5zb3J0KGNvbXBhcmVmbilcbiAgc29ydDogZnVuY3Rpb24gc29ydChjb21wYXJlZm4pe1xuICAgIHJldHVybiBjb21wYXJlZm4gPT09IHVuZGVmaW5lZFxuICAgICAgPyAkc29ydC5jYWxsKHRvT2JqZWN0KHRoaXMpKVxuICAgICAgOiAkc29ydC5jYWxsKHRvT2JqZWN0KHRoaXMpLCBhRnVuY3Rpb24oY29tcGFyZWZuKSk7XG4gIH1cbn0pOyIsInJlcXVpcmUoJy4vX3NldC1zcGVjaWVzJykoJ0FycmF5Jyk7IiwiLy8gMjAuMy4zLjEgLyAxNS45LjQuNCBEYXRlLm5vdygpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ0RhdGUnLCB7bm93OiBmdW5jdGlvbigpeyByZXR1cm4gbmV3IERhdGUoKS5nZXRUaW1lKCk7IH19KTsiLCIndXNlIHN0cmljdCc7XG4vLyAyMC4zLjQuMzYgLyAxNS45LjUuNDMgRGF0ZS5wcm90b3R5cGUudG9JU09TdHJpbmcoKVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKVxuICAsIGZhaWxzICAgPSByZXF1aXJlKCcuL19mYWlscycpXG4gICwgZ2V0VGltZSA9IERhdGUucHJvdG90eXBlLmdldFRpbWU7XG5cbnZhciBseiA9IGZ1bmN0aW9uKG51bSl7XG4gIHJldHVybiBudW0gPiA5ID8gbnVtIDogJzAnICsgbnVtO1xufTtcblxuLy8gUGhhbnRvbUpTIC8gb2xkIFdlYktpdCBoYXMgYSBicm9rZW4gaW1wbGVtZW50YXRpb25zXG4kZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuRiAqIChmYWlscyhmdW5jdGlvbigpe1xuICByZXR1cm4gbmV3IERhdGUoLTVlMTMgLSAxKS50b0lTT1N0cmluZygpICE9ICcwMzg1LTA3LTI1VDA3OjA2OjM5Ljk5OVonO1xufSkgfHwgIWZhaWxzKGZ1bmN0aW9uKCl7XG4gIG5ldyBEYXRlKE5hTikudG9JU09TdHJpbmcoKTtcbn0pKSwgJ0RhdGUnLCB7XG4gIHRvSVNPU3RyaW5nOiBmdW5jdGlvbiB0b0lTT1N0cmluZygpe1xuICAgIGlmKCFpc0Zpbml0ZShnZXRUaW1lLmNhbGwodGhpcykpKXRocm93IFJhbmdlRXJyb3IoJ0ludmFsaWQgdGltZSB2YWx1ZScpO1xuICAgIHZhciBkID0gdGhpc1xuICAgICAgLCB5ID0gZC5nZXRVVENGdWxsWWVhcigpXG4gICAgICAsIG0gPSBkLmdldFVUQ01pbGxpc2Vjb25kcygpXG4gICAgICAsIHMgPSB5IDwgMCA/ICctJyA6IHkgPiA5OTk5ID8gJysnIDogJyc7XG4gICAgcmV0dXJuIHMgKyAoJzAwMDAwJyArIE1hdGguYWJzKHkpKS5zbGljZShzID8gLTYgOiAtNCkgK1xuICAgICAgJy0nICsgbHooZC5nZXRVVENNb250aCgpICsgMSkgKyAnLScgKyBseihkLmdldFVUQ0RhdGUoKSkgK1xuICAgICAgJ1QnICsgbHooZC5nZXRVVENIb3VycygpKSArICc6JyArIGx6KGQuZ2V0VVRDTWludXRlcygpKSArXG4gICAgICAnOicgKyBseihkLmdldFVUQ1NlY29uZHMoKSkgKyAnLicgKyAobSA+IDk5ID8gbSA6ICcwJyArIGx6KG0pKSArICdaJztcbiAgfVxufSk7IiwiJ3VzZSBzdHJpY3QnO1xudmFyICRleHBvcnQgICAgID0gcmVxdWlyZSgnLi9fZXhwb3J0JylcbiAgLCB0b09iamVjdCAgICA9IHJlcXVpcmUoJy4vX3RvLW9iamVjdCcpXG4gICwgdG9QcmltaXRpdmUgPSByZXF1aXJlKCcuL190by1wcmltaXRpdmUnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiByZXF1aXJlKCcuL19mYWlscycpKGZ1bmN0aW9uKCl7XG4gIHJldHVybiBuZXcgRGF0ZShOYU4pLnRvSlNPTigpICE9PSBudWxsIHx8IERhdGUucHJvdG90eXBlLnRvSlNPTi5jYWxsKHt0b0lTT1N0cmluZzogZnVuY3Rpb24oKXsgcmV0dXJuIDE7IH19KSAhPT0gMTtcbn0pLCAnRGF0ZScsIHtcbiAgdG9KU09OOiBmdW5jdGlvbiB0b0pTT04oa2V5KXtcbiAgICB2YXIgTyAgPSB0b09iamVjdCh0aGlzKVxuICAgICAgLCBwdiA9IHRvUHJpbWl0aXZlKE8pO1xuICAgIHJldHVybiB0eXBlb2YgcHYgPT0gJ251bWJlcicgJiYgIWlzRmluaXRlKHB2KSA/IG51bGwgOiBPLnRvSVNPU3RyaW5nKCk7XG4gIH1cbn0pOyIsInZhciBUT19QUklNSVRJVkUgPSByZXF1aXJlKCcuL193a3MnKSgndG9QcmltaXRpdmUnKVxuICAsIHByb3RvICAgICAgICA9IERhdGUucHJvdG90eXBlO1xuXG5pZighKFRPX1BSSU1JVElWRSBpbiBwcm90bykpcmVxdWlyZSgnLi9faGlkZScpKHByb3RvLCBUT19QUklNSVRJVkUsIHJlcXVpcmUoJy4vX2RhdGUtdG8tcHJpbWl0aXZlJykpOyIsInZhciBEYXRlUHJvdG8gICAgPSBEYXRlLnByb3RvdHlwZVxuICAsIElOVkFMSURfREFURSA9ICdJbnZhbGlkIERhdGUnXG4gICwgVE9fU1RSSU5HICAgID0gJ3RvU3RyaW5nJ1xuICAsICR0b1N0cmluZyAgICA9IERhdGVQcm90b1tUT19TVFJJTkddXG4gICwgZ2V0VGltZSAgICAgID0gRGF0ZVByb3RvLmdldFRpbWU7XG5pZihuZXcgRGF0ZShOYU4pICsgJycgIT0gSU5WQUxJRF9EQVRFKXtcbiAgcmVxdWlyZSgnLi9fcmVkZWZpbmUnKShEYXRlUHJvdG8sIFRPX1NUUklORywgZnVuY3Rpb24gdG9TdHJpbmcoKXtcbiAgICB2YXIgdmFsdWUgPSBnZXRUaW1lLmNhbGwodGhpcyk7XG4gICAgcmV0dXJuIHZhbHVlID09PSB2YWx1ZSA/ICR0b1N0cmluZy5jYWxsKHRoaXMpIDogSU5WQUxJRF9EQVRFO1xuICB9KTtcbn0iLCIvLyAxOS4yLjMuMiAvIDE1LjMuNC41IEZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kKHRoaXNBcmcsIGFyZ3MuLi4pXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUCwgJ0Z1bmN0aW9uJywge2JpbmQ6IHJlcXVpcmUoJy4vX2JpbmQnKX0pOyIsIid1c2Ugc3RyaWN0JztcbnZhciBpc09iamVjdCAgICAgICA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpXG4gICwgZ2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKCcuL19vYmplY3QtZ3BvJylcbiAgLCBIQVNfSU5TVEFOQ0UgICA9IHJlcXVpcmUoJy4vX3drcycpKCdoYXNJbnN0YW5jZScpXG4gICwgRnVuY3Rpb25Qcm90byAgPSBGdW5jdGlvbi5wcm90b3R5cGU7XG4vLyAxOS4yLjMuNiBGdW5jdGlvbi5wcm90b3R5cGVbQEBoYXNJbnN0YW5jZV0oVilcbmlmKCEoSEFTX0lOU1RBTkNFIGluIEZ1bmN0aW9uUHJvdG8pKXJlcXVpcmUoJy4vX29iamVjdC1kcCcpLmYoRnVuY3Rpb25Qcm90bywgSEFTX0lOU1RBTkNFLCB7dmFsdWU6IGZ1bmN0aW9uKE8pe1xuICBpZih0eXBlb2YgdGhpcyAhPSAnZnVuY3Rpb24nIHx8ICFpc09iamVjdChPKSlyZXR1cm4gZmFsc2U7XG4gIGlmKCFpc09iamVjdCh0aGlzLnByb3RvdHlwZSkpcmV0dXJuIE8gaW5zdGFuY2VvZiB0aGlzO1xuICAvLyBmb3IgZW52aXJvbm1lbnQgdy9vIG5hdGl2ZSBgQEBoYXNJbnN0YW5jZWAgbG9naWMgZW5vdWdoIGBpbnN0YW5jZW9mYCwgYnV0IGFkZCB0aGlzOlxuICB3aGlsZShPID0gZ2V0UHJvdG90eXBlT2YoTykpaWYodGhpcy5wcm90b3R5cGUgPT09IE8pcmV0dXJuIHRydWU7XG4gIHJldHVybiBmYWxzZTtcbn19KTsiLCJ2YXIgZFAgICAgICAgICA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpLmZcbiAgLCBjcmVhdGVEZXNjID0gcmVxdWlyZSgnLi9fcHJvcGVydHktZGVzYycpXG4gICwgaGFzICAgICAgICA9IHJlcXVpcmUoJy4vX2hhcycpXG4gICwgRlByb3RvICAgICA9IEZ1bmN0aW9uLnByb3RvdHlwZVxuICAsIG5hbWVSRSAgICAgPSAvXlxccypmdW5jdGlvbiAoW14gKF0qKS9cbiAgLCBOQU1FICAgICAgID0gJ25hbWUnO1xuXG52YXIgaXNFeHRlbnNpYmxlID0gT2JqZWN0LmlzRXh0ZW5zaWJsZSB8fCBmdW5jdGlvbigpe1xuICByZXR1cm4gdHJ1ZTtcbn07XG5cbi8vIDE5LjIuNC4yIG5hbWVcbk5BTUUgaW4gRlByb3RvIHx8IHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgJiYgZFAoRlByb3RvLCBOQU1FLCB7XG4gIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbigpe1xuICAgIHRyeSB7XG4gICAgICB2YXIgdGhhdCA9IHRoaXNcbiAgICAgICAgLCBuYW1lID0gKCcnICsgdGhhdCkubWF0Y2gobmFtZVJFKVsxXTtcbiAgICAgIGhhcyh0aGF0LCBOQU1FKSB8fCAhaXNFeHRlbnNpYmxlKHRoYXQpIHx8IGRQKHRoYXQsIE5BTUUsIGNyZWF0ZURlc2MoNSwgbmFtZSkpO1xuICAgICAgcmV0dXJuIG5hbWU7XG4gICAgfSBjYXRjaChlKXtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gIH1cbn0pOyIsIid1c2Ugc3RyaWN0JztcbnZhciBzdHJvbmcgPSByZXF1aXJlKCcuL19jb2xsZWN0aW9uLXN0cm9uZycpO1xuXG4vLyAyMy4xIE1hcCBPYmplY3RzXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vX2NvbGxlY3Rpb24nKSgnTWFwJywgZnVuY3Rpb24oZ2V0KXtcbiAgcmV0dXJuIGZ1bmN0aW9uIE1hcCgpeyByZXR1cm4gZ2V0KHRoaXMsIGFyZ3VtZW50cy5sZW5ndGggPiAwID8gYXJndW1lbnRzWzBdIDogdW5kZWZpbmVkKTsgfTtcbn0sIHtcbiAgLy8gMjMuMS4zLjYgTWFwLnByb3RvdHlwZS5nZXQoa2V5KVxuICBnZXQ6IGZ1bmN0aW9uIGdldChrZXkpe1xuICAgIHZhciBlbnRyeSA9IHN0cm9uZy5nZXRFbnRyeSh0aGlzLCBrZXkpO1xuICAgIHJldHVybiBlbnRyeSAmJiBlbnRyeS52O1xuICB9LFxuICAvLyAyMy4xLjMuOSBNYXAucHJvdG90eXBlLnNldChrZXksIHZhbHVlKVxuICBzZXQ6IGZ1bmN0aW9uIHNldChrZXksIHZhbHVlKXtcbiAgICByZXR1cm4gc3Ryb25nLmRlZih0aGlzLCBrZXkgPT09IDAgPyAwIDoga2V5LCB2YWx1ZSk7XG4gIH1cbn0sIHN0cm9uZywgdHJ1ZSk7IiwiLy8gMjAuMi4yLjMgTWF0aC5hY29zaCh4KVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKVxuICAsIGxvZzFwICAgPSByZXF1aXJlKCcuL19tYXRoLWxvZzFwJylcbiAgLCBzcXJ0ICAgID0gTWF0aC5zcXJ0XG4gICwgJGFjb3NoICA9IE1hdGguYWNvc2g7XG5cbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogISgkYWNvc2hcbiAgLy8gVjggYnVnOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9MzUwOVxuICAmJiBNYXRoLmZsb29yKCRhY29zaChOdW1iZXIuTUFYX1ZBTFVFKSkgPT0gNzEwXG4gIC8vIFRvciBCcm93c2VyIGJ1ZzogTWF0aC5hY29zaChJbmZpbml0eSkgLT4gTmFOIFxuICAmJiAkYWNvc2goSW5maW5pdHkpID09IEluZmluaXR5XG4pLCAnTWF0aCcsIHtcbiAgYWNvc2g6IGZ1bmN0aW9uIGFjb3NoKHgpe1xuICAgIHJldHVybiAoeCA9ICt4KSA8IDEgPyBOYU4gOiB4ID4gOTQ5MDYyNjUuNjI0MjUxNTZcbiAgICAgID8gTWF0aC5sb2coeCkgKyBNYXRoLkxOMlxuICAgICAgOiBsb2cxcCh4IC0gMSArIHNxcnQoeCAtIDEpICogc3FydCh4ICsgMSkpO1xuICB9XG59KTsiLCIvLyAyMC4yLjIuNSBNYXRoLmFzaW5oKHgpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpXG4gICwgJGFzaW5oICA9IE1hdGguYXNpbmg7XG5cbmZ1bmN0aW9uIGFzaW5oKHgpe1xuICByZXR1cm4gIWlzRmluaXRlKHggPSAreCkgfHwgeCA9PSAwID8geCA6IHggPCAwID8gLWFzaW5oKC14KSA6IE1hdGgubG9nKHggKyBNYXRoLnNxcnQoeCAqIHggKyAxKSk7XG59XG5cbi8vIFRvciBCcm93c2VyIGJ1ZzogTWF0aC5hc2luaCgwKSAtPiAtMCBcbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogISgkYXNpbmggJiYgMSAvICRhc2luaCgwKSA+IDApLCAnTWF0aCcsIHthc2luaDogYXNpbmh9KTsiLCIvLyAyMC4yLjIuNyBNYXRoLmF0YW5oKHgpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpXG4gICwgJGF0YW5oICA9IE1hdGguYXRhbmg7XG5cbi8vIFRvciBCcm93c2VyIGJ1ZzogTWF0aC5hdGFuaCgtMCkgLT4gMCBcbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogISgkYXRhbmggJiYgMSAvICRhdGFuaCgtMCkgPCAwKSwgJ01hdGgnLCB7XG4gIGF0YW5oOiBmdW5jdGlvbiBhdGFuaCh4KXtcbiAgICByZXR1cm4gKHggPSAreCkgPT0gMCA/IHggOiBNYXRoLmxvZygoMSArIHgpIC8gKDEgLSB4KSkgLyAyO1xuICB9XG59KTsiLCIvLyAyMC4yLjIuOSBNYXRoLmNicnQoeClcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0JylcbiAgLCBzaWduICAgID0gcmVxdWlyZSgnLi9fbWF0aC1zaWduJyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnTWF0aCcsIHtcbiAgY2JydDogZnVuY3Rpb24gY2JydCh4KXtcbiAgICByZXR1cm4gc2lnbih4ID0gK3gpICogTWF0aC5wb3coTWF0aC5hYnMoeCksIDEgLyAzKTtcbiAgfVxufSk7IiwiLy8gMjAuMi4yLjExIE1hdGguY2x6MzIoeClcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnTWF0aCcsIHtcbiAgY2x6MzI6IGZ1bmN0aW9uIGNsejMyKHgpe1xuICAgIHJldHVybiAoeCA+Pj49IDApID8gMzEgLSBNYXRoLmZsb29yKE1hdGgubG9nKHggKyAwLjUpICogTWF0aC5MT0cyRSkgOiAzMjtcbiAgfVxufSk7IiwiLy8gMjAuMi4yLjEyIE1hdGguY29zaCh4KVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKVxuICAsIGV4cCAgICAgPSBNYXRoLmV4cDtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdNYXRoJywge1xuICBjb3NoOiBmdW5jdGlvbiBjb3NoKHgpe1xuICAgIHJldHVybiAoZXhwKHggPSAreCkgKyBleHAoLXgpKSAvIDI7XG4gIH1cbn0pOyIsIi8vIDIwLjIuMi4xNCBNYXRoLmV4cG0xKHgpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpXG4gICwgJGV4cG0xICA9IHJlcXVpcmUoJy4vX21hdGgtZXhwbTEnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAoJGV4cG0xICE9IE1hdGguZXhwbTEpLCAnTWF0aCcsIHtleHBtMTogJGV4cG0xfSk7IiwiLy8gMjAuMi4yLjE2IE1hdGguZnJvdW5kKHgpXG52YXIgJGV4cG9ydCAgID0gcmVxdWlyZSgnLi9fZXhwb3J0JylcbiAgLCBzaWduICAgICAgPSByZXF1aXJlKCcuL19tYXRoLXNpZ24nKVxuICAsIHBvdyAgICAgICA9IE1hdGgucG93XG4gICwgRVBTSUxPTiAgID0gcG93KDIsIC01MilcbiAgLCBFUFNJTE9OMzIgPSBwb3coMiwgLTIzKVxuICAsIE1BWDMyICAgICA9IHBvdygyLCAxMjcpICogKDIgLSBFUFNJTE9OMzIpXG4gICwgTUlOMzIgICAgID0gcG93KDIsIC0xMjYpO1xuXG52YXIgcm91bmRUaWVzVG9FdmVuID0gZnVuY3Rpb24obil7XG4gIHJldHVybiBuICsgMSAvIEVQU0lMT04gLSAxIC8gRVBTSUxPTjtcbn07XG5cblxuJGV4cG9ydCgkZXhwb3J0LlMsICdNYXRoJywge1xuICBmcm91bmQ6IGZ1bmN0aW9uIGZyb3VuZCh4KXtcbiAgICB2YXIgJGFicyAgPSBNYXRoLmFicyh4KVxuICAgICAgLCAkc2lnbiA9IHNpZ24oeClcbiAgICAgICwgYSwgcmVzdWx0O1xuICAgIGlmKCRhYnMgPCBNSU4zMilyZXR1cm4gJHNpZ24gKiByb3VuZFRpZXNUb0V2ZW4oJGFicyAvIE1JTjMyIC8gRVBTSUxPTjMyKSAqIE1JTjMyICogRVBTSUxPTjMyO1xuICAgIGEgPSAoMSArIEVQU0lMT04zMiAvIEVQU0lMT04pICogJGFicztcbiAgICByZXN1bHQgPSBhIC0gKGEgLSAkYWJzKTtcbiAgICBpZihyZXN1bHQgPiBNQVgzMiB8fCByZXN1bHQgIT0gcmVzdWx0KXJldHVybiAkc2lnbiAqIEluZmluaXR5O1xuICAgIHJldHVybiAkc2lnbiAqIHJlc3VsdDtcbiAgfVxufSk7IiwiLy8gMjAuMi4yLjE3IE1hdGguaHlwb3QoW3ZhbHVlMVssIHZhbHVlMlssIOKApiBdXV0pXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpXG4gICwgYWJzICAgICA9IE1hdGguYWJzO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ01hdGgnLCB7XG4gIGh5cG90OiBmdW5jdGlvbiBoeXBvdCh2YWx1ZTEsIHZhbHVlMil7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW51c2VkLXZhcnNcbiAgICB2YXIgc3VtICA9IDBcbiAgICAgICwgaSAgICA9IDBcbiAgICAgICwgYUxlbiA9IGFyZ3VtZW50cy5sZW5ndGhcbiAgICAgICwgbGFyZyA9IDBcbiAgICAgICwgYXJnLCBkaXY7XG4gICAgd2hpbGUoaSA8IGFMZW4pe1xuICAgICAgYXJnID0gYWJzKGFyZ3VtZW50c1tpKytdKTtcbiAgICAgIGlmKGxhcmcgPCBhcmcpe1xuICAgICAgICBkaXYgID0gbGFyZyAvIGFyZztcbiAgICAgICAgc3VtICA9IHN1bSAqIGRpdiAqIGRpdiArIDE7XG4gICAgICAgIGxhcmcgPSBhcmc7XG4gICAgICB9IGVsc2UgaWYoYXJnID4gMCl7XG4gICAgICAgIGRpdiAgPSBhcmcgLyBsYXJnO1xuICAgICAgICBzdW0gKz0gZGl2ICogZGl2O1xuICAgICAgfSBlbHNlIHN1bSArPSBhcmc7XG4gICAgfVxuICAgIHJldHVybiBsYXJnID09PSBJbmZpbml0eSA/IEluZmluaXR5IDogbGFyZyAqIE1hdGguc3FydChzdW0pO1xuICB9XG59KTsiLCIvLyAyMC4yLjIuMTggTWF0aC5pbXVsKHgsIHkpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpXG4gICwgJGltdWwgICA9IE1hdGguaW11bDtcblxuLy8gc29tZSBXZWJLaXQgdmVyc2lvbnMgZmFpbHMgd2l0aCBiaWcgbnVtYmVycywgc29tZSBoYXMgd3JvbmcgYXJpdHlcbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogcmVxdWlyZSgnLi9fZmFpbHMnKShmdW5jdGlvbigpe1xuICByZXR1cm4gJGltdWwoMHhmZmZmZmZmZiwgNSkgIT0gLTUgfHwgJGltdWwubGVuZ3RoICE9IDI7XG59KSwgJ01hdGgnLCB7XG4gIGltdWw6IGZ1bmN0aW9uIGltdWwoeCwgeSl7XG4gICAgdmFyIFVJTlQxNiA9IDB4ZmZmZlxuICAgICAgLCB4biA9ICt4XG4gICAgICAsIHluID0gK3lcbiAgICAgICwgeGwgPSBVSU5UMTYgJiB4blxuICAgICAgLCB5bCA9IFVJTlQxNiAmIHluO1xuICAgIHJldHVybiAwIHwgeGwgKiB5bCArICgoVUlOVDE2ICYgeG4gPj4+IDE2KSAqIHlsICsgeGwgKiAoVUlOVDE2ICYgeW4gPj4+IDE2KSA8PCAxNiA+Pj4gMCk7XG4gIH1cbn0pOyIsIi8vIDIwLjIuMi4yMSBNYXRoLmxvZzEwKHgpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ01hdGgnLCB7XG4gIGxvZzEwOiBmdW5jdGlvbiBsb2cxMCh4KXtcbiAgICByZXR1cm4gTWF0aC5sb2coeCkgLyBNYXRoLkxOMTA7XG4gIH1cbn0pOyIsIi8vIDIwLjIuMi4yMCBNYXRoLmxvZzFwKHgpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ01hdGgnLCB7bG9nMXA6IHJlcXVpcmUoJy4vX21hdGgtbG9nMXAnKX0pOyIsIi8vIDIwLjIuMi4yMiBNYXRoLmxvZzIoeClcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnTWF0aCcsIHtcbiAgbG9nMjogZnVuY3Rpb24gbG9nMih4KXtcbiAgICByZXR1cm4gTWF0aC5sb2coeCkgLyBNYXRoLkxOMjtcbiAgfVxufSk7IiwiLy8gMjAuMi4yLjI4IE1hdGguc2lnbih4KVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdNYXRoJywge3NpZ246IHJlcXVpcmUoJy4vX21hdGgtc2lnbicpfSk7IiwiLy8gMjAuMi4yLjMwIE1hdGguc2luaCh4KVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKVxuICAsIGV4cG0xICAgPSByZXF1aXJlKCcuL19tYXRoLWV4cG0xJylcbiAgLCBleHAgICAgID0gTWF0aC5leHA7XG5cbi8vIFY4IG5lYXIgQ2hyb21pdW0gMzggaGFzIGEgcHJvYmxlbSB3aXRoIHZlcnkgc21hbGwgbnVtYmVyc1xuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiByZXF1aXJlKCcuL19mYWlscycpKGZ1bmN0aW9uKCl7XG4gIHJldHVybiAhTWF0aC5zaW5oKC0yZS0xNykgIT0gLTJlLTE3O1xufSksICdNYXRoJywge1xuICBzaW5oOiBmdW5jdGlvbiBzaW5oKHgpe1xuICAgIHJldHVybiBNYXRoLmFicyh4ID0gK3gpIDwgMVxuICAgICAgPyAoZXhwbTEoeCkgLSBleHBtMSgteCkpIC8gMlxuICAgICAgOiAoZXhwKHggLSAxKSAtIGV4cCgteCAtIDEpKSAqIChNYXRoLkUgLyAyKTtcbiAgfVxufSk7IiwiLy8gMjAuMi4yLjMzIE1hdGgudGFuaCh4KVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKVxuICAsIGV4cG0xICAgPSByZXF1aXJlKCcuL19tYXRoLWV4cG0xJylcbiAgLCBleHAgICAgID0gTWF0aC5leHA7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnTWF0aCcsIHtcbiAgdGFuaDogZnVuY3Rpb24gdGFuaCh4KXtcbiAgICB2YXIgYSA9IGV4cG0xKHggPSAreClcbiAgICAgICwgYiA9IGV4cG0xKC14KTtcbiAgICByZXR1cm4gYSA9PSBJbmZpbml0eSA/IDEgOiBiID09IEluZmluaXR5ID8gLTEgOiAoYSAtIGIpIC8gKGV4cCh4KSArIGV4cCgteCkpO1xuICB9XG59KTsiLCIvLyAyMC4yLjIuMzQgTWF0aC50cnVuYyh4KVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdNYXRoJywge1xuICB0cnVuYzogZnVuY3Rpb24gdHJ1bmMoaXQpe1xuICAgIHJldHVybiAoaXQgPiAwID8gTWF0aC5mbG9vciA6IE1hdGguY2VpbCkoaXQpO1xuICB9XG59KTsiLCIndXNlIHN0cmljdCc7XG52YXIgZ2xvYmFsICAgICAgICAgICAgPSByZXF1aXJlKCcuL19nbG9iYWwnKVxuICAsIGhhcyAgICAgICAgICAgICAgID0gcmVxdWlyZSgnLi9faGFzJylcbiAgLCBjb2YgICAgICAgICAgICAgICA9IHJlcXVpcmUoJy4vX2NvZicpXG4gICwgaW5oZXJpdElmUmVxdWlyZWQgPSByZXF1aXJlKCcuL19pbmhlcml0LWlmLXJlcXVpcmVkJylcbiAgLCB0b1ByaW1pdGl2ZSAgICAgICA9IHJlcXVpcmUoJy4vX3RvLXByaW1pdGl2ZScpXG4gICwgZmFpbHMgICAgICAgICAgICAgPSByZXF1aXJlKCcuL19mYWlscycpXG4gICwgZ09QTiAgICAgICAgICAgICAgPSByZXF1aXJlKCcuL19vYmplY3QtZ29wbicpLmZcbiAgLCBnT1BEICAgICAgICAgICAgICA9IHJlcXVpcmUoJy4vX29iamVjdC1nb3BkJykuZlxuICAsIGRQICAgICAgICAgICAgICAgID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwJykuZlxuICAsICR0cmltICAgICAgICAgICAgID0gcmVxdWlyZSgnLi9fc3RyaW5nLXRyaW0nKS50cmltXG4gICwgTlVNQkVSICAgICAgICAgICAgPSAnTnVtYmVyJ1xuICAsICROdW1iZXIgICAgICAgICAgID0gZ2xvYmFsW05VTUJFUl1cbiAgLCBCYXNlICAgICAgICAgICAgICA9ICROdW1iZXJcbiAgLCBwcm90byAgICAgICAgICAgICA9ICROdW1iZXIucHJvdG90eXBlXG4gIC8vIE9wZXJhIH4xMiBoYXMgYnJva2VuIE9iamVjdCN0b1N0cmluZ1xuICAsIEJST0tFTl9DT0YgICAgICAgID0gY29mKHJlcXVpcmUoJy4vX29iamVjdC1jcmVhdGUnKShwcm90bykpID09IE5VTUJFUlxuICAsIFRSSU0gICAgICAgICAgICAgID0gJ3RyaW0nIGluIFN0cmluZy5wcm90b3R5cGU7XG5cbi8vIDcuMS4zIFRvTnVtYmVyKGFyZ3VtZW50KVxudmFyIHRvTnVtYmVyID0gZnVuY3Rpb24oYXJndW1lbnQpe1xuICB2YXIgaXQgPSB0b1ByaW1pdGl2ZShhcmd1bWVudCwgZmFsc2UpO1xuICBpZih0eXBlb2YgaXQgPT0gJ3N0cmluZycgJiYgaXQubGVuZ3RoID4gMil7XG4gICAgaXQgPSBUUklNID8gaXQudHJpbSgpIDogJHRyaW0oaXQsIDMpO1xuICAgIHZhciBmaXJzdCA9IGl0LmNoYXJDb2RlQXQoMClcbiAgICAgICwgdGhpcmQsIHJhZGl4LCBtYXhDb2RlO1xuICAgIGlmKGZpcnN0ID09PSA0MyB8fCBmaXJzdCA9PT0gNDUpe1xuICAgICAgdGhpcmQgPSBpdC5jaGFyQ29kZUF0KDIpO1xuICAgICAgaWYodGhpcmQgPT09IDg4IHx8IHRoaXJkID09PSAxMjApcmV0dXJuIE5hTjsgLy8gTnVtYmVyKCcrMHgxJykgc2hvdWxkIGJlIE5hTiwgb2xkIFY4IGZpeFxuICAgIH0gZWxzZSBpZihmaXJzdCA9PT0gNDgpe1xuICAgICAgc3dpdGNoKGl0LmNoYXJDb2RlQXQoMSkpe1xuICAgICAgICBjYXNlIDY2IDogY2FzZSA5OCAgOiByYWRpeCA9IDI7IG1heENvZGUgPSA0OTsgYnJlYWs7IC8vIGZhc3QgZXF1YWwgL14wYlswMV0rJC9pXG4gICAgICAgIGNhc2UgNzkgOiBjYXNlIDExMSA6IHJhZGl4ID0gODsgbWF4Q29kZSA9IDU1OyBicmVhazsgLy8gZmFzdCBlcXVhbCAvXjBvWzAtN10rJC9pXG4gICAgICAgIGRlZmF1bHQgOiByZXR1cm4gK2l0O1xuICAgICAgfVxuICAgICAgZm9yKHZhciBkaWdpdHMgPSBpdC5zbGljZSgyKSwgaSA9IDAsIGwgPSBkaWdpdHMubGVuZ3RoLCBjb2RlOyBpIDwgbDsgaSsrKXtcbiAgICAgICAgY29kZSA9IGRpZ2l0cy5jaGFyQ29kZUF0KGkpO1xuICAgICAgICAvLyBwYXJzZUludCBwYXJzZXMgYSBzdHJpbmcgdG8gYSBmaXJzdCB1bmF2YWlsYWJsZSBzeW1ib2xcbiAgICAgICAgLy8gYnV0IFRvTnVtYmVyIHNob3VsZCByZXR1cm4gTmFOIGlmIGEgc3RyaW5nIGNvbnRhaW5zIHVuYXZhaWxhYmxlIHN5bWJvbHNcbiAgICAgICAgaWYoY29kZSA8IDQ4IHx8IGNvZGUgPiBtYXhDb2RlKXJldHVybiBOYU47XG4gICAgICB9IHJldHVybiBwYXJzZUludChkaWdpdHMsIHJhZGl4KTtcbiAgICB9XG4gIH0gcmV0dXJuICtpdDtcbn07XG5cbmlmKCEkTnVtYmVyKCcgMG8xJykgfHwgISROdW1iZXIoJzBiMScpIHx8ICROdW1iZXIoJysweDEnKSl7XG4gICROdW1iZXIgPSBmdW5jdGlvbiBOdW1iZXIodmFsdWUpe1xuICAgIHZhciBpdCA9IGFyZ3VtZW50cy5sZW5ndGggPCAxID8gMCA6IHZhbHVlXG4gICAgICAsIHRoYXQgPSB0aGlzO1xuICAgIHJldHVybiB0aGF0IGluc3RhbmNlb2YgJE51bWJlclxuICAgICAgLy8gY2hlY2sgb24gMS4uY29uc3RydWN0b3IoZm9vKSBjYXNlXG4gICAgICAmJiAoQlJPS0VOX0NPRiA/IGZhaWxzKGZ1bmN0aW9uKCl7IHByb3RvLnZhbHVlT2YuY2FsbCh0aGF0KTsgfSkgOiBjb2YodGhhdCkgIT0gTlVNQkVSKVxuICAgICAgICA/IGluaGVyaXRJZlJlcXVpcmVkKG5ldyBCYXNlKHRvTnVtYmVyKGl0KSksIHRoYXQsICROdW1iZXIpIDogdG9OdW1iZXIoaXQpO1xuICB9O1xuICBmb3IodmFyIGtleXMgPSByZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpID8gZ09QTihCYXNlKSA6IChcbiAgICAvLyBFUzM6XG4gICAgJ01BWF9WQUxVRSxNSU5fVkFMVUUsTmFOLE5FR0FUSVZFX0lORklOSVRZLFBPU0lUSVZFX0lORklOSVRZLCcgK1xuICAgIC8vIEVTNiAoaW4gY2FzZSwgaWYgbW9kdWxlcyB3aXRoIEVTNiBOdW1iZXIgc3RhdGljcyByZXF1aXJlZCBiZWZvcmUpOlxuICAgICdFUFNJTE9OLGlzRmluaXRlLGlzSW50ZWdlcixpc05hTixpc1NhZmVJbnRlZ2VyLE1BWF9TQUZFX0lOVEVHRVIsJyArXG4gICAgJ01JTl9TQUZFX0lOVEVHRVIscGFyc2VGbG9hdCxwYXJzZUludCxpc0ludGVnZXInXG4gICkuc3BsaXQoJywnKSwgaiA9IDAsIGtleTsga2V5cy5sZW5ndGggPiBqOyBqKyspe1xuICAgIGlmKGhhcyhCYXNlLCBrZXkgPSBrZXlzW2pdKSAmJiAhaGFzKCROdW1iZXIsIGtleSkpe1xuICAgICAgZFAoJE51bWJlciwga2V5LCBnT1BEKEJhc2UsIGtleSkpO1xuICAgIH1cbiAgfVxuICAkTnVtYmVyLnByb3RvdHlwZSA9IHByb3RvO1xuICBwcm90by5jb25zdHJ1Y3RvciA9ICROdW1iZXI7XG4gIHJlcXVpcmUoJy4vX3JlZGVmaW5lJykoZ2xvYmFsLCBOVU1CRVIsICROdW1iZXIpO1xufSIsIi8vIDIwLjEuMi4xIE51bWJlci5FUFNJTE9OXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ051bWJlcicsIHtFUFNJTE9OOiBNYXRoLnBvdygyLCAtNTIpfSk7IiwiLy8gMjAuMS4yLjIgTnVtYmVyLmlzRmluaXRlKG51bWJlcilcbnZhciAkZXhwb3J0ICAgPSByZXF1aXJlKCcuL19leHBvcnQnKVxuICAsIF9pc0Zpbml0ZSA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpLmlzRmluaXRlO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ051bWJlcicsIHtcbiAgaXNGaW5pdGU6IGZ1bmN0aW9uIGlzRmluaXRlKGl0KXtcbiAgICByZXR1cm4gdHlwZW9mIGl0ID09ICdudW1iZXInICYmIF9pc0Zpbml0ZShpdCk7XG4gIH1cbn0pOyIsIi8vIDIwLjEuMi4zIE51bWJlci5pc0ludGVnZXIobnVtYmVyKVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdOdW1iZXInLCB7aXNJbnRlZ2VyOiByZXF1aXJlKCcuL19pcy1pbnRlZ2VyJyl9KTsiLCIvLyAyMC4xLjIuNCBOdW1iZXIuaXNOYU4obnVtYmVyKVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdOdW1iZXInLCB7XG4gIGlzTmFOOiBmdW5jdGlvbiBpc05hTihudW1iZXIpe1xuICAgIHJldHVybiBudW1iZXIgIT0gbnVtYmVyO1xuICB9XG59KTsiLCIvLyAyMC4xLjIuNSBOdW1iZXIuaXNTYWZlSW50ZWdlcihudW1iZXIpXG52YXIgJGV4cG9ydCAgID0gcmVxdWlyZSgnLi9fZXhwb3J0JylcbiAgLCBpc0ludGVnZXIgPSByZXF1aXJlKCcuL19pcy1pbnRlZ2VyJylcbiAgLCBhYnMgICAgICAgPSBNYXRoLmFicztcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdOdW1iZXInLCB7XG4gIGlzU2FmZUludGVnZXI6IGZ1bmN0aW9uIGlzU2FmZUludGVnZXIobnVtYmVyKXtcbiAgICByZXR1cm4gaXNJbnRlZ2VyKG51bWJlcikgJiYgYWJzKG51bWJlcikgPD0gMHgxZmZmZmZmZmZmZmZmZjtcbiAgfVxufSk7IiwiLy8gMjAuMS4yLjYgTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVJcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnTnVtYmVyJywge01BWF9TQUZFX0lOVEVHRVI6IDB4MWZmZmZmZmZmZmZmZmZ9KTsiLCIvLyAyMC4xLjIuMTAgTnVtYmVyLk1JTl9TQUZFX0lOVEVHRVJcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnTnVtYmVyJywge01JTl9TQUZFX0lOVEVHRVI6IC0weDFmZmZmZmZmZmZmZmZmfSk7IiwidmFyICRleHBvcnQgICAgID0gcmVxdWlyZSgnLi9fZXhwb3J0JylcbiAgLCAkcGFyc2VGbG9hdCA9IHJlcXVpcmUoJy4vX3BhcnNlLWZsb2F0Jyk7XG4vLyAyMC4xLjIuMTIgTnVtYmVyLnBhcnNlRmxvYXQoc3RyaW5nKVxuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAoTnVtYmVyLnBhcnNlRmxvYXQgIT0gJHBhcnNlRmxvYXQpLCAnTnVtYmVyJywge3BhcnNlRmxvYXQ6ICRwYXJzZUZsb2F0fSk7IiwidmFyICRleHBvcnQgICA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpXG4gICwgJHBhcnNlSW50ID0gcmVxdWlyZSgnLi9fcGFyc2UtaW50Jyk7XG4vLyAyMC4xLjIuMTMgTnVtYmVyLnBhcnNlSW50KHN0cmluZywgcmFkaXgpXG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqIChOdW1iZXIucGFyc2VJbnQgIT0gJHBhcnNlSW50KSwgJ051bWJlcicsIHtwYXJzZUludDogJHBhcnNlSW50fSk7IiwiJ3VzZSBzdHJpY3QnO1xudmFyICRleHBvcnQgICAgICA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpXG4gICwgdG9JbnRlZ2VyICAgID0gcmVxdWlyZSgnLi9fdG8taW50ZWdlcicpXG4gICwgYU51bWJlclZhbHVlID0gcmVxdWlyZSgnLi9fYS1udW1iZXItdmFsdWUnKVxuICAsIHJlcGVhdCAgICAgICA9IHJlcXVpcmUoJy4vX3N0cmluZy1yZXBlYXQnKVxuICAsICR0b0ZpeGVkICAgICA9IDEuLnRvRml4ZWRcbiAgLCBmbG9vciAgICAgICAgPSBNYXRoLmZsb29yXG4gICwgZGF0YSAgICAgICAgID0gWzAsIDAsIDAsIDAsIDAsIDBdXG4gICwgRVJST1IgICAgICAgID0gJ051bWJlci50b0ZpeGVkOiBpbmNvcnJlY3QgaW52b2NhdGlvbiEnXG4gICwgWkVSTyAgICAgICAgID0gJzAnO1xuXG52YXIgbXVsdGlwbHkgPSBmdW5jdGlvbihuLCBjKXtcbiAgdmFyIGkgID0gLTFcbiAgICAsIGMyID0gYztcbiAgd2hpbGUoKytpIDwgNil7XG4gICAgYzIgKz0gbiAqIGRhdGFbaV07XG4gICAgZGF0YVtpXSA9IGMyICUgMWU3O1xuICAgIGMyID0gZmxvb3IoYzIgLyAxZTcpO1xuICB9XG59O1xudmFyIGRpdmlkZSA9IGZ1bmN0aW9uKG4pe1xuICB2YXIgaSA9IDZcbiAgICAsIGMgPSAwO1xuICB3aGlsZSgtLWkgPj0gMCl7XG4gICAgYyArPSBkYXRhW2ldO1xuICAgIGRhdGFbaV0gPSBmbG9vcihjIC8gbik7XG4gICAgYyA9IChjICUgbikgKiAxZTc7XG4gIH1cbn07XG52YXIgbnVtVG9TdHJpbmcgPSBmdW5jdGlvbigpe1xuICB2YXIgaSA9IDZcbiAgICAsIHMgPSAnJztcbiAgd2hpbGUoLS1pID49IDApe1xuICAgIGlmKHMgIT09ICcnIHx8IGkgPT09IDAgfHwgZGF0YVtpXSAhPT0gMCl7XG4gICAgICB2YXIgdCA9IFN0cmluZyhkYXRhW2ldKTtcbiAgICAgIHMgPSBzID09PSAnJyA/IHQgOiBzICsgcmVwZWF0LmNhbGwoWkVSTywgNyAtIHQubGVuZ3RoKSArIHQ7XG4gICAgfVxuICB9IHJldHVybiBzO1xufTtcbnZhciBwb3cgPSBmdW5jdGlvbih4LCBuLCBhY2Mpe1xuICByZXR1cm4gbiA9PT0gMCA/IGFjYyA6IG4gJSAyID09PSAxID8gcG93KHgsIG4gLSAxLCBhY2MgKiB4KSA6IHBvdyh4ICogeCwgbiAvIDIsIGFjYyk7XG59O1xudmFyIGxvZyA9IGZ1bmN0aW9uKHgpe1xuICB2YXIgbiAgPSAwXG4gICAgLCB4MiA9IHg7XG4gIHdoaWxlKHgyID49IDQwOTYpe1xuICAgIG4gKz0gMTI7XG4gICAgeDIgLz0gNDA5NjtcbiAgfVxuICB3aGlsZSh4MiA+PSAyKXtcbiAgICBuICArPSAxO1xuICAgIHgyIC89IDI7XG4gIH0gcmV0dXJuIG47XG59O1xuXG4kZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuRiAqICghISR0b0ZpeGVkICYmIChcbiAgMC4wMDAwOC50b0ZpeGVkKDMpICE9PSAnMC4wMDAnIHx8XG4gIDAuOS50b0ZpeGVkKDApICE9PSAnMScgfHxcbiAgMS4yNTUudG9GaXhlZCgyKSAhPT0gJzEuMjUnIHx8XG4gIDEwMDAwMDAwMDAwMDAwMDAxMjguLnRvRml4ZWQoMCkgIT09ICcxMDAwMDAwMDAwMDAwMDAwMTI4J1xuKSB8fCAhcmVxdWlyZSgnLi9fZmFpbHMnKShmdW5jdGlvbigpe1xuICAvLyBWOCB+IEFuZHJvaWQgNC4zLVxuICAkdG9GaXhlZC5jYWxsKHt9KTtcbn0pKSwgJ051bWJlcicsIHtcbiAgdG9GaXhlZDogZnVuY3Rpb24gdG9GaXhlZChmcmFjdGlvbkRpZ2l0cyl7XG4gICAgdmFyIHggPSBhTnVtYmVyVmFsdWUodGhpcywgRVJST1IpXG4gICAgICAsIGYgPSB0b0ludGVnZXIoZnJhY3Rpb25EaWdpdHMpXG4gICAgICAsIHMgPSAnJ1xuICAgICAgLCBtID0gWkVST1xuICAgICAgLCBlLCB6LCBqLCBrO1xuICAgIGlmKGYgPCAwIHx8IGYgPiAyMCl0aHJvdyBSYW5nZUVycm9yKEVSUk9SKTtcbiAgICBpZih4ICE9IHgpcmV0dXJuICdOYU4nO1xuICAgIGlmKHggPD0gLTFlMjEgfHwgeCA+PSAxZTIxKXJldHVybiBTdHJpbmcoeCk7XG4gICAgaWYoeCA8IDApe1xuICAgICAgcyA9ICctJztcbiAgICAgIHggPSAteDtcbiAgICB9XG4gICAgaWYoeCA+IDFlLTIxKXtcbiAgICAgIGUgPSBsb2coeCAqIHBvdygyLCA2OSwgMSkpIC0gNjk7XG4gICAgICB6ID0gZSA8IDAgPyB4ICogcG93KDIsIC1lLCAxKSA6IHggLyBwb3coMiwgZSwgMSk7XG4gICAgICB6ICo9IDB4MTAwMDAwMDAwMDAwMDA7XG4gICAgICBlID0gNTIgLSBlO1xuICAgICAgaWYoZSA+IDApe1xuICAgICAgICBtdWx0aXBseSgwLCB6KTtcbiAgICAgICAgaiA9IGY7XG4gICAgICAgIHdoaWxlKGogPj0gNyl7XG4gICAgICAgICAgbXVsdGlwbHkoMWU3LCAwKTtcbiAgICAgICAgICBqIC09IDc7XG4gICAgICAgIH1cbiAgICAgICAgbXVsdGlwbHkocG93KDEwLCBqLCAxKSwgMCk7XG4gICAgICAgIGogPSBlIC0gMTtcbiAgICAgICAgd2hpbGUoaiA+PSAyMyl7XG4gICAgICAgICAgZGl2aWRlKDEgPDwgMjMpO1xuICAgICAgICAgIGogLT0gMjM7XG4gICAgICAgIH1cbiAgICAgICAgZGl2aWRlKDEgPDwgaik7XG4gICAgICAgIG11bHRpcGx5KDEsIDEpO1xuICAgICAgICBkaXZpZGUoMik7XG4gICAgICAgIG0gPSBudW1Ub1N0cmluZygpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbXVsdGlwbHkoMCwgeik7XG4gICAgICAgIG11bHRpcGx5KDEgPDwgLWUsIDApO1xuICAgICAgICBtID0gbnVtVG9TdHJpbmcoKSArIHJlcGVhdC5jYWxsKFpFUk8sIGYpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZihmID4gMCl7XG4gICAgICBrID0gbS5sZW5ndGg7XG4gICAgICBtID0gcyArIChrIDw9IGYgPyAnMC4nICsgcmVwZWF0LmNhbGwoWkVSTywgZiAtIGspICsgbSA6IG0uc2xpY2UoMCwgayAtIGYpICsgJy4nICsgbS5zbGljZShrIC0gZikpO1xuICAgIH0gZWxzZSB7XG4gICAgICBtID0gcyArIG07XG4gICAgfSByZXR1cm4gbTtcbiAgfVxufSk7IiwiJ3VzZSBzdHJpY3QnO1xudmFyICRleHBvcnQgICAgICA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpXG4gICwgJGZhaWxzICAgICAgID0gcmVxdWlyZSgnLi9fZmFpbHMnKVxuICAsIGFOdW1iZXJWYWx1ZSA9IHJlcXVpcmUoJy4vX2EtbnVtYmVyLXZhbHVlJylcbiAgLCAkdG9QcmVjaXNpb24gPSAxLi50b1ByZWNpc2lvbjtcblxuJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiAoJGZhaWxzKGZ1bmN0aW9uKCl7XG4gIC8vIElFNy1cbiAgcmV0dXJuICR0b1ByZWNpc2lvbi5jYWxsKDEsIHVuZGVmaW5lZCkgIT09ICcxJztcbn0pIHx8ICEkZmFpbHMoZnVuY3Rpb24oKXtcbiAgLy8gVjggfiBBbmRyb2lkIDQuMy1cbiAgJHRvUHJlY2lzaW9uLmNhbGwoe30pO1xufSkpLCAnTnVtYmVyJywge1xuICB0b1ByZWNpc2lvbjogZnVuY3Rpb24gdG9QcmVjaXNpb24ocHJlY2lzaW9uKXtcbiAgICB2YXIgdGhhdCA9IGFOdW1iZXJWYWx1ZSh0aGlzLCAnTnVtYmVyI3RvUHJlY2lzaW9uOiBpbmNvcnJlY3QgaW52b2NhdGlvbiEnKTtcbiAgICByZXR1cm4gcHJlY2lzaW9uID09PSB1bmRlZmluZWQgPyAkdG9QcmVjaXNpb24uY2FsbCh0aGF0KSA6ICR0b1ByZWNpc2lvbi5jYWxsKHRoYXQsIHByZWNpc2lvbik7IFxuICB9XG59KTsiLCIvLyAxOS4xLjMuMSBPYmplY3QuYXNzaWduKHRhcmdldCwgc291cmNlKVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYsICdPYmplY3QnLCB7YXNzaWduOiByZXF1aXJlKCcuL19vYmplY3QtYXNzaWduJyl9KTsiLCJ2YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpXG4vLyAxOS4xLjIuMiAvIDE1LjIuMy41IE9iamVjdC5jcmVhdGUoTyBbLCBQcm9wZXJ0aWVzXSlcbiRleHBvcnQoJGV4cG9ydC5TLCAnT2JqZWN0Jywge2NyZWF0ZTogcmVxdWlyZSgnLi9fb2JqZWN0LWNyZWF0ZScpfSk7IiwidmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbi8vIDE5LjEuMi4zIC8gMTUuMi4zLjcgT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoTywgUHJvcGVydGllcylcbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogIXJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJyksICdPYmplY3QnLCB7ZGVmaW5lUHJvcGVydGllczogcmVxdWlyZSgnLi9fb2JqZWN0LWRwcycpfSk7IiwidmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcbi8vIDE5LjEuMi40IC8gMTUuMi4zLjYgT2JqZWN0LmRlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpXG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICFyZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpLCAnT2JqZWN0Jywge2RlZmluZVByb3BlcnR5OiByZXF1aXJlKCcuL19vYmplY3QtZHAnKS5mfSk7IiwiLy8gMTkuMS4yLjUgT2JqZWN0LmZyZWV6ZShPKVxudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0JylcbiAgLCBtZXRhICAgICA9IHJlcXVpcmUoJy4vX21ldGEnKS5vbkZyZWV6ZTtcblxucmVxdWlyZSgnLi9fb2JqZWN0LXNhcCcpKCdmcmVlemUnLCBmdW5jdGlvbigkZnJlZXplKXtcbiAgcmV0dXJuIGZ1bmN0aW9uIGZyZWV6ZShpdCl7XG4gICAgcmV0dXJuICRmcmVlemUgJiYgaXNPYmplY3QoaXQpID8gJGZyZWV6ZShtZXRhKGl0KSkgOiBpdDtcbiAgfTtcbn0pOyIsIi8vIDE5LjEuMi42IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoTywgUClcbnZhciB0b0lPYmplY3QgICAgICAgICAgICAgICAgID0gcmVxdWlyZSgnLi9fdG8taW9iamVjdCcpXG4gICwgJGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IHJlcXVpcmUoJy4vX29iamVjdC1nb3BkJykuZjtcblxucmVxdWlyZSgnLi9fb2JqZWN0LXNhcCcpKCdnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3InLCBmdW5jdGlvbigpe1xuICByZXR1cm4gZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGl0LCBrZXkpe1xuICAgIHJldHVybiAkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRvSU9iamVjdChpdCksIGtleSk7XG4gIH07XG59KTsiLCIvLyAxOS4xLjIuNyBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhPKVxucmVxdWlyZSgnLi9fb2JqZWN0LXNhcCcpKCdnZXRPd25Qcm9wZXJ0eU5hbWVzJywgZnVuY3Rpb24oKXtcbiAgcmV0dXJuIHJlcXVpcmUoJy4vX29iamVjdC1nb3BuLWV4dCcpLmY7XG59KTsiLCIvLyAxOS4xLjIuOSBPYmplY3QuZ2V0UHJvdG90eXBlT2YoTylcbnZhciB0b09iamVjdCAgICAgICAgPSByZXF1aXJlKCcuL190by1vYmplY3QnKVxuICAsICRnZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoJy4vX29iamVjdC1ncG8nKTtcblxucmVxdWlyZSgnLi9fb2JqZWN0LXNhcCcpKCdnZXRQcm90b3R5cGVPZicsIGZ1bmN0aW9uKCl7XG4gIHJldHVybiBmdW5jdGlvbiBnZXRQcm90b3R5cGVPZihpdCl7XG4gICAgcmV0dXJuICRnZXRQcm90b3R5cGVPZih0b09iamVjdChpdCkpO1xuICB9O1xufSk7IiwiLy8gMTkuMS4yLjExIE9iamVjdC5pc0V4dGVuc2libGUoTylcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xuXG5yZXF1aXJlKCcuL19vYmplY3Qtc2FwJykoJ2lzRXh0ZW5zaWJsZScsIGZ1bmN0aW9uKCRpc0V4dGVuc2libGUpe1xuICByZXR1cm4gZnVuY3Rpb24gaXNFeHRlbnNpYmxlKGl0KXtcbiAgICByZXR1cm4gaXNPYmplY3QoaXQpID8gJGlzRXh0ZW5zaWJsZSA/ICRpc0V4dGVuc2libGUoaXQpIDogdHJ1ZSA6IGZhbHNlO1xuICB9O1xufSk7IiwiLy8gMTkuMS4yLjEyIE9iamVjdC5pc0Zyb3plbihPKVxudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG5cbnJlcXVpcmUoJy4vX29iamVjdC1zYXAnKSgnaXNGcm96ZW4nLCBmdW5jdGlvbigkaXNGcm96ZW4pe1xuICByZXR1cm4gZnVuY3Rpb24gaXNGcm96ZW4oaXQpe1xuICAgIHJldHVybiBpc09iamVjdChpdCkgPyAkaXNGcm96ZW4gPyAkaXNGcm96ZW4oaXQpIDogZmFsc2UgOiB0cnVlO1xuICB9O1xufSk7IiwiLy8gMTkuMS4yLjEzIE9iamVjdC5pc1NlYWxlZChPKVxudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG5cbnJlcXVpcmUoJy4vX29iamVjdC1zYXAnKSgnaXNTZWFsZWQnLCBmdW5jdGlvbigkaXNTZWFsZWQpe1xuICByZXR1cm4gZnVuY3Rpb24gaXNTZWFsZWQoaXQpe1xuICAgIHJldHVybiBpc09iamVjdChpdCkgPyAkaXNTZWFsZWQgPyAkaXNTZWFsZWQoaXQpIDogZmFsc2UgOiB0cnVlO1xuICB9O1xufSk7IiwiLy8gMTkuMS4zLjEwIE9iamVjdC5pcyh2YWx1ZTEsIHZhbHVlMilcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG4kZXhwb3J0KCRleHBvcnQuUywgJ09iamVjdCcsIHtpczogcmVxdWlyZSgnLi9fc2FtZS12YWx1ZScpfSk7IiwiLy8gMTkuMS4yLjE0IE9iamVjdC5rZXlzKE8pXG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuL190by1vYmplY3QnKVxuICAsICRrZXlzICAgID0gcmVxdWlyZSgnLi9fb2JqZWN0LWtleXMnKTtcblxucmVxdWlyZSgnLi9fb2JqZWN0LXNhcCcpKCdrZXlzJywgZnVuY3Rpb24oKXtcbiAgcmV0dXJuIGZ1bmN0aW9uIGtleXMoaXQpe1xuICAgIHJldHVybiAka2V5cyh0b09iamVjdChpdCkpO1xuICB9O1xufSk7IiwiLy8gMTkuMS4yLjE1IE9iamVjdC5wcmV2ZW50RXh0ZW5zaW9ucyhPKVxudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0JylcbiAgLCBtZXRhICAgICA9IHJlcXVpcmUoJy4vX21ldGEnKS5vbkZyZWV6ZTtcblxucmVxdWlyZSgnLi9fb2JqZWN0LXNhcCcpKCdwcmV2ZW50RXh0ZW5zaW9ucycsIGZ1bmN0aW9uKCRwcmV2ZW50RXh0ZW5zaW9ucyl7XG4gIHJldHVybiBmdW5jdGlvbiBwcmV2ZW50RXh0ZW5zaW9ucyhpdCl7XG4gICAgcmV0dXJuICRwcmV2ZW50RXh0ZW5zaW9ucyAmJiBpc09iamVjdChpdCkgPyAkcHJldmVudEV4dGVuc2lvbnMobWV0YShpdCkpIDogaXQ7XG4gIH07XG59KTsiLCIvLyAxOS4xLjIuMTcgT2JqZWN0LnNlYWwoTylcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpXG4gICwgbWV0YSAgICAgPSByZXF1aXJlKCcuL19tZXRhJykub25GcmVlemU7XG5cbnJlcXVpcmUoJy4vX29iamVjdC1zYXAnKSgnc2VhbCcsIGZ1bmN0aW9uKCRzZWFsKXtcbiAgcmV0dXJuIGZ1bmN0aW9uIHNlYWwoaXQpe1xuICAgIHJldHVybiAkc2VhbCAmJiBpc09iamVjdChpdCkgPyAkc2VhbChtZXRhKGl0KSkgOiBpdDtcbiAgfTtcbn0pOyIsIi8vIDE5LjEuMy4xOSBPYmplY3Quc2V0UHJvdG90eXBlT2YoTywgcHJvdG8pXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuJGV4cG9ydCgkZXhwb3J0LlMsICdPYmplY3QnLCB7c2V0UHJvdG90eXBlT2Y6IHJlcXVpcmUoJy4vX3NldC1wcm90bycpLnNldH0pOyIsIid1c2Ugc3RyaWN0Jztcbi8vIDE5LjEuMy42IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcoKVxudmFyIGNsYXNzb2YgPSByZXF1aXJlKCcuL19jbGFzc29mJylcbiAgLCB0ZXN0ICAgID0ge307XG50ZXN0W3JlcXVpcmUoJy4vX3drcycpKCd0b1N0cmluZ1RhZycpXSA9ICd6JztcbmlmKHRlc3QgKyAnJyAhPSAnW29iamVjdCB6XScpe1xuICByZXF1aXJlKCcuL19yZWRlZmluZScpKE9iamVjdC5wcm90b3R5cGUsICd0b1N0cmluZycsIGZ1bmN0aW9uIHRvU3RyaW5nKCl7XG4gICAgcmV0dXJuICdbb2JqZWN0ICcgKyBjbGFzc29mKHRoaXMpICsgJ10nO1xuICB9LCB0cnVlKTtcbn0iLCJ2YXIgJGV4cG9ydCAgICAgPSByZXF1aXJlKCcuL19leHBvcnQnKVxuICAsICRwYXJzZUZsb2F0ID0gcmVxdWlyZSgnLi9fcGFyc2UtZmxvYXQnKTtcbi8vIDE4LjIuNCBwYXJzZUZsb2F0KHN0cmluZylcbiRleHBvcnQoJGV4cG9ydC5HICsgJGV4cG9ydC5GICogKHBhcnNlRmxvYXQgIT0gJHBhcnNlRmxvYXQpLCB7cGFyc2VGbG9hdDogJHBhcnNlRmxvYXR9KTsiLCJ2YXIgJGV4cG9ydCAgID0gcmVxdWlyZSgnLi9fZXhwb3J0JylcbiAgLCAkcGFyc2VJbnQgPSByZXF1aXJlKCcuL19wYXJzZS1pbnQnKTtcbi8vIDE4LjIuNSBwYXJzZUludChzdHJpbmcsIHJhZGl4KVxuJGV4cG9ydCgkZXhwb3J0LkcgKyAkZXhwb3J0LkYgKiAocGFyc2VJbnQgIT0gJHBhcnNlSW50KSwge3BhcnNlSW50OiAkcGFyc2VJbnR9KTsiLCIndXNlIHN0cmljdCc7XG52YXIgTElCUkFSWSAgICAgICAgICAgID0gcmVxdWlyZSgnLi9fbGlicmFyeScpXG4gICwgZ2xvYmFsICAgICAgICAgICAgID0gcmVxdWlyZSgnLi9fZ2xvYmFsJylcbiAgLCBjdHggICAgICAgICAgICAgICAgPSByZXF1aXJlKCcuL19jdHgnKVxuICAsIGNsYXNzb2YgICAgICAgICAgICA9IHJlcXVpcmUoJy4vX2NsYXNzb2YnKVxuICAsICRleHBvcnQgICAgICAgICAgICA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpXG4gICwgaXNPYmplY3QgICAgICAgICAgID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0JylcbiAgLCBhRnVuY3Rpb24gICAgICAgICAgPSByZXF1aXJlKCcuL19hLWZ1bmN0aW9uJylcbiAgLCBhbkluc3RhbmNlICAgICAgICAgPSByZXF1aXJlKCcuL19hbi1pbnN0YW5jZScpXG4gICwgZm9yT2YgICAgICAgICAgICAgID0gcmVxdWlyZSgnLi9fZm9yLW9mJylcbiAgLCBzcGVjaWVzQ29uc3RydWN0b3IgPSByZXF1aXJlKCcuL19zcGVjaWVzLWNvbnN0cnVjdG9yJylcbiAgLCB0YXNrICAgICAgICAgICAgICAgPSByZXF1aXJlKCcuL190YXNrJykuc2V0XG4gICwgbWljcm90YXNrICAgICAgICAgID0gcmVxdWlyZSgnLi9fbWljcm90YXNrJykoKVxuICAsIFBST01JU0UgICAgICAgICAgICA9ICdQcm9taXNlJ1xuICAsIFR5cGVFcnJvciAgICAgICAgICA9IGdsb2JhbC5UeXBlRXJyb3JcbiAgLCBwcm9jZXNzICAgICAgICAgICAgPSBnbG9iYWwucHJvY2Vzc1xuICAsICRQcm9taXNlICAgICAgICAgICA9IGdsb2JhbFtQUk9NSVNFXVxuICAsIHByb2Nlc3MgICAgICAgICAgICA9IGdsb2JhbC5wcm9jZXNzXG4gICwgaXNOb2RlICAgICAgICAgICAgID0gY2xhc3NvZihwcm9jZXNzKSA9PSAncHJvY2VzcydcbiAgLCBlbXB0eSAgICAgICAgICAgICAgPSBmdW5jdGlvbigpeyAvKiBlbXB0eSAqLyB9XG4gICwgSW50ZXJuYWwsIEdlbmVyaWNQcm9taXNlQ2FwYWJpbGl0eSwgV3JhcHBlcjtcblxudmFyIFVTRV9OQVRJVkUgPSAhIWZ1bmN0aW9uKCl7XG4gIHRyeSB7XG4gICAgLy8gY29ycmVjdCBzdWJjbGFzc2luZyB3aXRoIEBAc3BlY2llcyBzdXBwb3J0XG4gICAgdmFyIHByb21pc2UgICAgID0gJFByb21pc2UucmVzb2x2ZSgxKVxuICAgICAgLCBGYWtlUHJvbWlzZSA9IChwcm9taXNlLmNvbnN0cnVjdG9yID0ge30pW3JlcXVpcmUoJy4vX3drcycpKCdzcGVjaWVzJyldID0gZnVuY3Rpb24oZXhlYyl7IGV4ZWMoZW1wdHksIGVtcHR5KTsgfTtcbiAgICAvLyB1bmhhbmRsZWQgcmVqZWN0aW9ucyB0cmFja2luZyBzdXBwb3J0LCBOb2RlSlMgUHJvbWlzZSB3aXRob3V0IGl0IGZhaWxzIEBAc3BlY2llcyB0ZXN0XG4gICAgcmV0dXJuIChpc05vZGUgfHwgdHlwZW9mIFByb21pc2VSZWplY3Rpb25FdmVudCA9PSAnZnVuY3Rpb24nKSAmJiBwcm9taXNlLnRoZW4oZW1wdHkpIGluc3RhbmNlb2YgRmFrZVByb21pc2U7XG4gIH0gY2F0Y2goZSl7IC8qIGVtcHR5ICovIH1cbn0oKTtcblxuLy8gaGVscGVyc1xudmFyIHNhbWVDb25zdHJ1Y3RvciA9IGZ1bmN0aW9uKGEsIGIpe1xuICAvLyB3aXRoIGxpYnJhcnkgd3JhcHBlciBzcGVjaWFsIGNhc2VcbiAgcmV0dXJuIGEgPT09IGIgfHwgYSA9PT0gJFByb21pc2UgJiYgYiA9PT0gV3JhcHBlcjtcbn07XG52YXIgaXNUaGVuYWJsZSA9IGZ1bmN0aW9uKGl0KXtcbiAgdmFyIHRoZW47XG4gIHJldHVybiBpc09iamVjdChpdCkgJiYgdHlwZW9mICh0aGVuID0gaXQudGhlbikgPT0gJ2Z1bmN0aW9uJyA/IHRoZW4gOiBmYWxzZTtcbn07XG52YXIgbmV3UHJvbWlzZUNhcGFiaWxpdHkgPSBmdW5jdGlvbihDKXtcbiAgcmV0dXJuIHNhbWVDb25zdHJ1Y3RvcigkUHJvbWlzZSwgQylcbiAgICA/IG5ldyBQcm9taXNlQ2FwYWJpbGl0eShDKVxuICAgIDogbmV3IEdlbmVyaWNQcm9taXNlQ2FwYWJpbGl0eShDKTtcbn07XG52YXIgUHJvbWlzZUNhcGFiaWxpdHkgPSBHZW5lcmljUHJvbWlzZUNhcGFiaWxpdHkgPSBmdW5jdGlvbihDKXtcbiAgdmFyIHJlc29sdmUsIHJlamVjdDtcbiAgdGhpcy5wcm9taXNlID0gbmV3IEMoZnVuY3Rpb24oJCRyZXNvbHZlLCAkJHJlamVjdCl7XG4gICAgaWYocmVzb2x2ZSAhPT0gdW5kZWZpbmVkIHx8IHJlamVjdCAhPT0gdW5kZWZpbmVkKXRocm93IFR5cGVFcnJvcignQmFkIFByb21pc2UgY29uc3RydWN0b3InKTtcbiAgICByZXNvbHZlID0gJCRyZXNvbHZlO1xuICAgIHJlamVjdCAgPSAkJHJlamVjdDtcbiAgfSk7XG4gIHRoaXMucmVzb2x2ZSA9IGFGdW5jdGlvbihyZXNvbHZlKTtcbiAgdGhpcy5yZWplY3QgID0gYUZ1bmN0aW9uKHJlamVjdCk7XG59O1xudmFyIHBlcmZvcm0gPSBmdW5jdGlvbihleGVjKXtcbiAgdHJ5IHtcbiAgICBleGVjKCk7XG4gIH0gY2F0Y2goZSl7XG4gICAgcmV0dXJuIHtlcnJvcjogZX07XG4gIH1cbn07XG52YXIgbm90aWZ5ID0gZnVuY3Rpb24ocHJvbWlzZSwgaXNSZWplY3Qpe1xuICBpZihwcm9taXNlLl9uKXJldHVybjtcbiAgcHJvbWlzZS5fbiA9IHRydWU7XG4gIHZhciBjaGFpbiA9IHByb21pc2UuX2M7XG4gIG1pY3JvdGFzayhmdW5jdGlvbigpe1xuICAgIHZhciB2YWx1ZSA9IHByb21pc2UuX3ZcbiAgICAgICwgb2sgICAgPSBwcm9taXNlLl9zID09IDFcbiAgICAgICwgaSAgICAgPSAwO1xuICAgIHZhciBydW4gPSBmdW5jdGlvbihyZWFjdGlvbil7XG4gICAgICB2YXIgaGFuZGxlciA9IG9rID8gcmVhY3Rpb24ub2sgOiByZWFjdGlvbi5mYWlsXG4gICAgICAgICwgcmVzb2x2ZSA9IHJlYWN0aW9uLnJlc29sdmVcbiAgICAgICAgLCByZWplY3QgID0gcmVhY3Rpb24ucmVqZWN0XG4gICAgICAgICwgZG9tYWluICA9IHJlYWN0aW9uLmRvbWFpblxuICAgICAgICAsIHJlc3VsdCwgdGhlbjtcbiAgICAgIHRyeSB7XG4gICAgICAgIGlmKGhhbmRsZXIpe1xuICAgICAgICAgIGlmKCFvayl7XG4gICAgICAgICAgICBpZihwcm9taXNlLl9oID09IDIpb25IYW5kbGVVbmhhbmRsZWQocHJvbWlzZSk7XG4gICAgICAgICAgICBwcm9taXNlLl9oID0gMTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYoaGFuZGxlciA9PT0gdHJ1ZSlyZXN1bHQgPSB2YWx1ZTtcbiAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGlmKGRvbWFpbilkb21haW4uZW50ZXIoKTtcbiAgICAgICAgICAgIHJlc3VsdCA9IGhhbmRsZXIodmFsdWUpO1xuICAgICAgICAgICAgaWYoZG9tYWluKWRvbWFpbi5leGl0KCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmKHJlc3VsdCA9PT0gcmVhY3Rpb24ucHJvbWlzZSl7XG4gICAgICAgICAgICByZWplY3QoVHlwZUVycm9yKCdQcm9taXNlLWNoYWluIGN5Y2xlJykpO1xuICAgICAgICAgIH0gZWxzZSBpZih0aGVuID0gaXNUaGVuYWJsZShyZXN1bHQpKXtcbiAgICAgICAgICAgIHRoZW4uY2FsbChyZXN1bHQsIHJlc29sdmUsIHJlamVjdCk7XG4gICAgICAgICAgfSBlbHNlIHJlc29sdmUocmVzdWx0KTtcbiAgICAgICAgfSBlbHNlIHJlamVjdCh2YWx1ZSk7XG4gICAgICB9IGNhdGNoKGUpe1xuICAgICAgICByZWplY3QoZSk7XG4gICAgICB9XG4gICAgfTtcbiAgICB3aGlsZShjaGFpbi5sZW5ndGggPiBpKXJ1bihjaGFpbltpKytdKTsgLy8gdmFyaWFibGUgbGVuZ3RoIC0gY2FuJ3QgdXNlIGZvckVhY2hcbiAgICBwcm9taXNlLl9jID0gW107XG4gICAgcHJvbWlzZS5fbiA9IGZhbHNlO1xuICAgIGlmKGlzUmVqZWN0ICYmICFwcm9taXNlLl9oKW9uVW5oYW5kbGVkKHByb21pc2UpO1xuICB9KTtcbn07XG52YXIgb25VbmhhbmRsZWQgPSBmdW5jdGlvbihwcm9taXNlKXtcbiAgdGFzay5jYWxsKGdsb2JhbCwgZnVuY3Rpb24oKXtcbiAgICB2YXIgdmFsdWUgPSBwcm9taXNlLl92XG4gICAgICAsIGFicnVwdCwgaGFuZGxlciwgY29uc29sZTtcbiAgICBpZihpc1VuaGFuZGxlZChwcm9taXNlKSl7XG4gICAgICBhYnJ1cHQgPSBwZXJmb3JtKGZ1bmN0aW9uKCl7XG4gICAgICAgIGlmKGlzTm9kZSl7XG4gICAgICAgICAgcHJvY2Vzcy5lbWl0KCd1bmhhbmRsZWRSZWplY3Rpb24nLCB2YWx1ZSwgcHJvbWlzZSk7XG4gICAgICAgIH0gZWxzZSBpZihoYW5kbGVyID0gZ2xvYmFsLm9udW5oYW5kbGVkcmVqZWN0aW9uKXtcbiAgICAgICAgICBoYW5kbGVyKHtwcm9taXNlOiBwcm9taXNlLCByZWFzb246IHZhbHVlfSk7XG4gICAgICAgIH0gZWxzZSBpZigoY29uc29sZSA9IGdsb2JhbC5jb25zb2xlKSAmJiBjb25zb2xlLmVycm9yKXtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdVbmhhbmRsZWQgcHJvbWlzZSByZWplY3Rpb24nLCB2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgLy8gQnJvd3NlcnMgc2hvdWxkIG5vdCB0cmlnZ2VyIGByZWplY3Rpb25IYW5kbGVkYCBldmVudCBpZiBpdCB3YXMgaGFuZGxlZCBoZXJlLCBOb2RlSlMgLSBzaG91bGRcbiAgICAgIHByb21pc2UuX2ggPSBpc05vZGUgfHwgaXNVbmhhbmRsZWQocHJvbWlzZSkgPyAyIDogMTtcbiAgICB9IHByb21pc2UuX2EgPSB1bmRlZmluZWQ7XG4gICAgaWYoYWJydXB0KXRocm93IGFicnVwdC5lcnJvcjtcbiAgfSk7XG59O1xudmFyIGlzVW5oYW5kbGVkID0gZnVuY3Rpb24ocHJvbWlzZSl7XG4gIGlmKHByb21pc2UuX2ggPT0gMSlyZXR1cm4gZmFsc2U7XG4gIHZhciBjaGFpbiA9IHByb21pc2UuX2EgfHwgcHJvbWlzZS5fY1xuICAgICwgaSAgICAgPSAwXG4gICAgLCByZWFjdGlvbjtcbiAgd2hpbGUoY2hhaW4ubGVuZ3RoID4gaSl7XG4gICAgcmVhY3Rpb24gPSBjaGFpbltpKytdO1xuICAgIGlmKHJlYWN0aW9uLmZhaWwgfHwgIWlzVW5oYW5kbGVkKHJlYWN0aW9uLnByb21pc2UpKXJldHVybiBmYWxzZTtcbiAgfSByZXR1cm4gdHJ1ZTtcbn07XG52YXIgb25IYW5kbGVVbmhhbmRsZWQgPSBmdW5jdGlvbihwcm9taXNlKXtcbiAgdGFzay5jYWxsKGdsb2JhbCwgZnVuY3Rpb24oKXtcbiAgICB2YXIgaGFuZGxlcjtcbiAgICBpZihpc05vZGUpe1xuICAgICAgcHJvY2Vzcy5lbWl0KCdyZWplY3Rpb25IYW5kbGVkJywgcHJvbWlzZSk7XG4gICAgfSBlbHNlIGlmKGhhbmRsZXIgPSBnbG9iYWwub25yZWplY3Rpb25oYW5kbGVkKXtcbiAgICAgIGhhbmRsZXIoe3Byb21pc2U6IHByb21pc2UsIHJlYXNvbjogcHJvbWlzZS5fdn0pO1xuICAgIH1cbiAgfSk7XG59O1xudmFyICRyZWplY3QgPSBmdW5jdGlvbih2YWx1ZSl7XG4gIHZhciBwcm9taXNlID0gdGhpcztcbiAgaWYocHJvbWlzZS5fZClyZXR1cm47XG4gIHByb21pc2UuX2QgPSB0cnVlO1xuICBwcm9taXNlID0gcHJvbWlzZS5fdyB8fCBwcm9taXNlOyAvLyB1bndyYXBcbiAgcHJvbWlzZS5fdiA9IHZhbHVlO1xuICBwcm9taXNlLl9zID0gMjtcbiAgaWYoIXByb21pc2UuX2EpcHJvbWlzZS5fYSA9IHByb21pc2UuX2Muc2xpY2UoKTtcbiAgbm90aWZ5KHByb21pc2UsIHRydWUpO1xufTtcbnZhciAkcmVzb2x2ZSA9IGZ1bmN0aW9uKHZhbHVlKXtcbiAgdmFyIHByb21pc2UgPSB0aGlzXG4gICAgLCB0aGVuO1xuICBpZihwcm9taXNlLl9kKXJldHVybjtcbiAgcHJvbWlzZS5fZCA9IHRydWU7XG4gIHByb21pc2UgPSBwcm9taXNlLl93IHx8IHByb21pc2U7IC8vIHVud3JhcFxuICB0cnkge1xuICAgIGlmKHByb21pc2UgPT09IHZhbHVlKXRocm93IFR5cGVFcnJvcihcIlByb21pc2UgY2FuJ3QgYmUgcmVzb2x2ZWQgaXRzZWxmXCIpO1xuICAgIGlmKHRoZW4gPSBpc1RoZW5hYmxlKHZhbHVlKSl7XG4gICAgICBtaWNyb3Rhc2soZnVuY3Rpb24oKXtcbiAgICAgICAgdmFyIHdyYXBwZXIgPSB7X3c6IHByb21pc2UsIF9kOiBmYWxzZX07IC8vIHdyYXBcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICB0aGVuLmNhbGwodmFsdWUsIGN0eCgkcmVzb2x2ZSwgd3JhcHBlciwgMSksIGN0eCgkcmVqZWN0LCB3cmFwcGVyLCAxKSk7XG4gICAgICAgIH0gY2F0Y2goZSl7XG4gICAgICAgICAgJHJlamVjdC5jYWxsKHdyYXBwZXIsIGUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcHJvbWlzZS5fdiA9IHZhbHVlO1xuICAgICAgcHJvbWlzZS5fcyA9IDE7XG4gICAgICBub3RpZnkocHJvbWlzZSwgZmFsc2UpO1xuICAgIH1cbiAgfSBjYXRjaChlKXtcbiAgICAkcmVqZWN0LmNhbGwoe193OiBwcm9taXNlLCBfZDogZmFsc2V9LCBlKTsgLy8gd3JhcFxuICB9XG59O1xuXG4vLyBjb25zdHJ1Y3RvciBwb2x5ZmlsbFxuaWYoIVVTRV9OQVRJVkUpe1xuICAvLyAyNS40LjMuMSBQcm9taXNlKGV4ZWN1dG9yKVxuICAkUHJvbWlzZSA9IGZ1bmN0aW9uIFByb21pc2UoZXhlY3V0b3Ipe1xuICAgIGFuSW5zdGFuY2UodGhpcywgJFByb21pc2UsIFBST01JU0UsICdfaCcpO1xuICAgIGFGdW5jdGlvbihleGVjdXRvcik7XG4gICAgSW50ZXJuYWwuY2FsbCh0aGlzKTtcbiAgICB0cnkge1xuICAgICAgZXhlY3V0b3IoY3R4KCRyZXNvbHZlLCB0aGlzLCAxKSwgY3R4KCRyZWplY3QsIHRoaXMsIDEpKTtcbiAgICB9IGNhdGNoKGVycil7XG4gICAgICAkcmVqZWN0LmNhbGwodGhpcywgZXJyKTtcbiAgICB9XG4gIH07XG4gIEludGVybmFsID0gZnVuY3Rpb24gUHJvbWlzZShleGVjdXRvcil7XG4gICAgdGhpcy5fYyA9IFtdOyAgICAgICAgICAgICAvLyA8LSBhd2FpdGluZyByZWFjdGlvbnNcbiAgICB0aGlzLl9hID0gdW5kZWZpbmVkOyAgICAgIC8vIDwtIGNoZWNrZWQgaW4gaXNVbmhhbmRsZWQgcmVhY3Rpb25zXG4gICAgdGhpcy5fcyA9IDA7ICAgICAgICAgICAgICAvLyA8LSBzdGF0ZVxuICAgIHRoaXMuX2QgPSBmYWxzZTsgICAgICAgICAgLy8gPC0gZG9uZVxuICAgIHRoaXMuX3YgPSB1bmRlZmluZWQ7ICAgICAgLy8gPC0gdmFsdWVcbiAgICB0aGlzLl9oID0gMDsgICAgICAgICAgICAgIC8vIDwtIHJlamVjdGlvbiBzdGF0ZSwgMCAtIGRlZmF1bHQsIDEgLSBoYW5kbGVkLCAyIC0gdW5oYW5kbGVkXG4gICAgdGhpcy5fbiA9IGZhbHNlOyAgICAgICAgICAvLyA8LSBub3RpZnlcbiAgfTtcbiAgSW50ZXJuYWwucHJvdG90eXBlID0gcmVxdWlyZSgnLi9fcmVkZWZpbmUtYWxsJykoJFByb21pc2UucHJvdG90eXBlLCB7XG4gICAgLy8gMjUuNC41LjMgUHJvbWlzZS5wcm90b3R5cGUudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZClcbiAgICB0aGVuOiBmdW5jdGlvbiB0aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKXtcbiAgICAgIHZhciByZWFjdGlvbiAgICA9IG5ld1Byb21pc2VDYXBhYmlsaXR5KHNwZWNpZXNDb25zdHJ1Y3Rvcih0aGlzLCAkUHJvbWlzZSkpO1xuICAgICAgcmVhY3Rpb24ub2sgICAgID0gdHlwZW9mIG9uRnVsZmlsbGVkID09ICdmdW5jdGlvbicgPyBvbkZ1bGZpbGxlZCA6IHRydWU7XG4gICAgICByZWFjdGlvbi5mYWlsICAgPSB0eXBlb2Ygb25SZWplY3RlZCA9PSAnZnVuY3Rpb24nICYmIG9uUmVqZWN0ZWQ7XG4gICAgICByZWFjdGlvbi5kb21haW4gPSBpc05vZGUgPyBwcm9jZXNzLmRvbWFpbiA6IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuX2MucHVzaChyZWFjdGlvbik7XG4gICAgICBpZih0aGlzLl9hKXRoaXMuX2EucHVzaChyZWFjdGlvbik7XG4gICAgICBpZih0aGlzLl9zKW5vdGlmeSh0aGlzLCBmYWxzZSk7XG4gICAgICByZXR1cm4gcmVhY3Rpb24ucHJvbWlzZTtcbiAgICB9LFxuICAgIC8vIDI1LjQuNS4xIFByb21pc2UucHJvdG90eXBlLmNhdGNoKG9uUmVqZWN0ZWQpXG4gICAgJ2NhdGNoJzogZnVuY3Rpb24ob25SZWplY3RlZCl7XG4gICAgICByZXR1cm4gdGhpcy50aGVuKHVuZGVmaW5lZCwgb25SZWplY3RlZCk7XG4gICAgfVxuICB9KTtcbiAgUHJvbWlzZUNhcGFiaWxpdHkgPSBmdW5jdGlvbigpe1xuICAgIHZhciBwcm9taXNlICA9IG5ldyBJbnRlcm5hbDtcbiAgICB0aGlzLnByb21pc2UgPSBwcm9taXNlO1xuICAgIHRoaXMucmVzb2x2ZSA9IGN0eCgkcmVzb2x2ZSwgcHJvbWlzZSwgMSk7XG4gICAgdGhpcy5yZWplY3QgID0gY3R4KCRyZWplY3QsIHByb21pc2UsIDEpO1xuICB9O1xufVxuXG4kZXhwb3J0KCRleHBvcnQuRyArICRleHBvcnQuVyArICRleHBvcnQuRiAqICFVU0VfTkFUSVZFLCB7UHJvbWlzZTogJFByb21pc2V9KTtcbnJlcXVpcmUoJy4vX3NldC10by1zdHJpbmctdGFnJykoJFByb21pc2UsIFBST01JU0UpO1xucmVxdWlyZSgnLi9fc2V0LXNwZWNpZXMnKShQUk9NSVNFKTtcbldyYXBwZXIgPSByZXF1aXJlKCcuL19jb3JlJylbUFJPTUlTRV07XG5cbi8vIHN0YXRpY3NcbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogIVVTRV9OQVRJVkUsIFBST01JU0UsIHtcbiAgLy8gMjUuNC40LjUgUHJvbWlzZS5yZWplY3QocilcbiAgcmVqZWN0OiBmdW5jdGlvbiByZWplY3Qocil7XG4gICAgdmFyIGNhcGFiaWxpdHkgPSBuZXdQcm9taXNlQ2FwYWJpbGl0eSh0aGlzKVxuICAgICAgLCAkJHJlamVjdCAgID0gY2FwYWJpbGl0eS5yZWplY3Q7XG4gICAgJCRyZWplY3Qocik7XG4gICAgcmV0dXJuIGNhcGFiaWxpdHkucHJvbWlzZTtcbiAgfVxufSk7XG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqIChMSUJSQVJZIHx8ICFVU0VfTkFUSVZFKSwgUFJPTUlTRSwge1xuICAvLyAyNS40LjQuNiBQcm9taXNlLnJlc29sdmUoeClcbiAgcmVzb2x2ZTogZnVuY3Rpb24gcmVzb2x2ZSh4KXtcbiAgICAvLyBpbnN0YW5jZW9mIGluc3RlYWQgb2YgaW50ZXJuYWwgc2xvdCBjaGVjayBiZWNhdXNlIHdlIHNob3VsZCBmaXggaXQgd2l0aG91dCByZXBsYWNlbWVudCBuYXRpdmUgUHJvbWlzZSBjb3JlXG4gICAgaWYoeCBpbnN0YW5jZW9mICRQcm9taXNlICYmIHNhbWVDb25zdHJ1Y3Rvcih4LmNvbnN0cnVjdG9yLCB0aGlzKSlyZXR1cm4geDtcbiAgICB2YXIgY2FwYWJpbGl0eSA9IG5ld1Byb21pc2VDYXBhYmlsaXR5KHRoaXMpXG4gICAgICAsICQkcmVzb2x2ZSAgPSBjYXBhYmlsaXR5LnJlc29sdmU7XG4gICAgJCRyZXNvbHZlKHgpO1xuICAgIHJldHVybiBjYXBhYmlsaXR5LnByb21pc2U7XG4gIH1cbn0pO1xuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAhKFVTRV9OQVRJVkUgJiYgcmVxdWlyZSgnLi9faXRlci1kZXRlY3QnKShmdW5jdGlvbihpdGVyKXtcbiAgJFByb21pc2UuYWxsKGl0ZXIpWydjYXRjaCddKGVtcHR5KTtcbn0pKSwgUFJPTUlTRSwge1xuICAvLyAyNS40LjQuMSBQcm9taXNlLmFsbChpdGVyYWJsZSlcbiAgYWxsOiBmdW5jdGlvbiBhbGwoaXRlcmFibGUpe1xuICAgIHZhciBDICAgICAgICAgID0gdGhpc1xuICAgICAgLCBjYXBhYmlsaXR5ID0gbmV3UHJvbWlzZUNhcGFiaWxpdHkoQylcbiAgICAgICwgcmVzb2x2ZSAgICA9IGNhcGFiaWxpdHkucmVzb2x2ZVxuICAgICAgLCByZWplY3QgICAgID0gY2FwYWJpbGl0eS5yZWplY3Q7XG4gICAgdmFyIGFicnVwdCA9IHBlcmZvcm0oZnVuY3Rpb24oKXtcbiAgICAgIHZhciB2YWx1ZXMgICAgPSBbXVxuICAgICAgICAsIGluZGV4ICAgICA9IDBcbiAgICAgICAgLCByZW1haW5pbmcgPSAxO1xuICAgICAgZm9yT2YoaXRlcmFibGUsIGZhbHNlLCBmdW5jdGlvbihwcm9taXNlKXtcbiAgICAgICAgdmFyICRpbmRleCAgICAgICAgPSBpbmRleCsrXG4gICAgICAgICAgLCBhbHJlYWR5Q2FsbGVkID0gZmFsc2U7XG4gICAgICAgIHZhbHVlcy5wdXNoKHVuZGVmaW5lZCk7XG4gICAgICAgIHJlbWFpbmluZysrO1xuICAgICAgICBDLnJlc29sdmUocHJvbWlzZSkudGhlbihmdW5jdGlvbih2YWx1ZSl7XG4gICAgICAgICAgaWYoYWxyZWFkeUNhbGxlZClyZXR1cm47XG4gICAgICAgICAgYWxyZWFkeUNhbGxlZCAgPSB0cnVlO1xuICAgICAgICAgIHZhbHVlc1skaW5kZXhdID0gdmFsdWU7XG4gICAgICAgICAgLS1yZW1haW5pbmcgfHwgcmVzb2x2ZSh2YWx1ZXMpO1xuICAgICAgICB9LCByZWplY3QpO1xuICAgICAgfSk7XG4gICAgICAtLXJlbWFpbmluZyB8fCByZXNvbHZlKHZhbHVlcyk7XG4gICAgfSk7XG4gICAgaWYoYWJydXB0KXJlamVjdChhYnJ1cHQuZXJyb3IpO1xuICAgIHJldHVybiBjYXBhYmlsaXR5LnByb21pc2U7XG4gIH0sXG4gIC8vIDI1LjQuNC40IFByb21pc2UucmFjZShpdGVyYWJsZSlcbiAgcmFjZTogZnVuY3Rpb24gcmFjZShpdGVyYWJsZSl7XG4gICAgdmFyIEMgICAgICAgICAgPSB0aGlzXG4gICAgICAsIGNhcGFiaWxpdHkgPSBuZXdQcm9taXNlQ2FwYWJpbGl0eShDKVxuICAgICAgLCByZWplY3QgICAgID0gY2FwYWJpbGl0eS5yZWplY3Q7XG4gICAgdmFyIGFicnVwdCA9IHBlcmZvcm0oZnVuY3Rpb24oKXtcbiAgICAgIGZvck9mKGl0ZXJhYmxlLCBmYWxzZSwgZnVuY3Rpb24ocHJvbWlzZSl7XG4gICAgICAgIEMucmVzb2x2ZShwcm9taXNlKS50aGVuKGNhcGFiaWxpdHkucmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIGlmKGFicnVwdClyZWplY3QoYWJydXB0LmVycm9yKTtcbiAgICByZXR1cm4gY2FwYWJpbGl0eS5wcm9taXNlO1xuICB9XG59KTsiLCIvLyAyNi4xLjEgUmVmbGVjdC5hcHBseSh0YXJnZXQsIHRoaXNBcmd1bWVudCwgYXJndW1lbnRzTGlzdClcbnZhciAkZXhwb3J0ICAgPSByZXF1aXJlKCcuL19leHBvcnQnKVxuICAsIGFGdW5jdGlvbiA9IHJlcXVpcmUoJy4vX2EtZnVuY3Rpb24nKVxuICAsIGFuT2JqZWN0ICA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpXG4gICwgckFwcGx5ICAgID0gKHJlcXVpcmUoJy4vX2dsb2JhbCcpLlJlZmxlY3QgfHwge30pLmFwcGx5XG4gICwgZkFwcGx5ICAgID0gRnVuY3Rpb24uYXBwbHk7XG4vLyBNUyBFZGdlIGFyZ3VtZW50c0xpc3QgYXJndW1lbnQgaXMgb3B0aW9uYWxcbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogIXJlcXVpcmUoJy4vX2ZhaWxzJykoZnVuY3Rpb24oKXtcbiAgckFwcGx5KGZ1bmN0aW9uKCl7fSk7XG59KSwgJ1JlZmxlY3QnLCB7XG4gIGFwcGx5OiBmdW5jdGlvbiBhcHBseSh0YXJnZXQsIHRoaXNBcmd1bWVudCwgYXJndW1lbnRzTGlzdCl7XG4gICAgdmFyIFQgPSBhRnVuY3Rpb24odGFyZ2V0KVxuICAgICAgLCBMID0gYW5PYmplY3QoYXJndW1lbnRzTGlzdCk7XG4gICAgcmV0dXJuIHJBcHBseSA/IHJBcHBseShULCB0aGlzQXJndW1lbnQsIEwpIDogZkFwcGx5LmNhbGwoVCwgdGhpc0FyZ3VtZW50LCBMKTtcbiAgfVxufSk7IiwiLy8gMjYuMS4yIFJlZmxlY3QuY29uc3RydWN0KHRhcmdldCwgYXJndW1lbnRzTGlzdCBbLCBuZXdUYXJnZXRdKVxudmFyICRleHBvcnQgICAgPSByZXF1aXJlKCcuL19leHBvcnQnKVxuICAsIGNyZWF0ZSAgICAgPSByZXF1aXJlKCcuL19vYmplY3QtY3JlYXRlJylcbiAgLCBhRnVuY3Rpb24gID0gcmVxdWlyZSgnLi9fYS1mdW5jdGlvbicpXG4gICwgYW5PYmplY3QgICA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpXG4gICwgaXNPYmplY3QgICA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpXG4gICwgZmFpbHMgICAgICA9IHJlcXVpcmUoJy4vX2ZhaWxzJylcbiAgLCBiaW5kICAgICAgID0gcmVxdWlyZSgnLi9fYmluZCcpXG4gICwgckNvbnN0cnVjdCA9IChyZXF1aXJlKCcuL19nbG9iYWwnKS5SZWZsZWN0IHx8IHt9KS5jb25zdHJ1Y3Q7XG5cbi8vIE1TIEVkZ2Ugc3VwcG9ydHMgb25seSAyIGFyZ3VtZW50cyBhbmQgYXJndW1lbnRzTGlzdCBhcmd1bWVudCBpcyBvcHRpb25hbFxuLy8gRkYgTmlnaHRseSBzZXRzIHRoaXJkIGFyZ3VtZW50IGFzIGBuZXcudGFyZ2V0YCwgYnV0IGRvZXMgbm90IGNyZWF0ZSBgdGhpc2AgZnJvbSBpdFxudmFyIE5FV19UQVJHRVRfQlVHID0gZmFpbHMoZnVuY3Rpb24oKXtcbiAgZnVuY3Rpb24gRigpe31cbiAgcmV0dXJuICEockNvbnN0cnVjdChmdW5jdGlvbigpe30sIFtdLCBGKSBpbnN0YW5jZW9mIEYpO1xufSk7XG52YXIgQVJHU19CVUcgPSAhZmFpbHMoZnVuY3Rpb24oKXtcbiAgckNvbnN0cnVjdChmdW5jdGlvbigpe30pO1xufSk7XG5cbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogKE5FV19UQVJHRVRfQlVHIHx8IEFSR1NfQlVHKSwgJ1JlZmxlY3QnLCB7XG4gIGNvbnN0cnVjdDogZnVuY3Rpb24gY29uc3RydWN0KFRhcmdldCwgYXJncyAvKiwgbmV3VGFyZ2V0Ki8pe1xuICAgIGFGdW5jdGlvbihUYXJnZXQpO1xuICAgIGFuT2JqZWN0KGFyZ3MpO1xuICAgIHZhciBuZXdUYXJnZXQgPSBhcmd1bWVudHMubGVuZ3RoIDwgMyA/IFRhcmdldCA6IGFGdW5jdGlvbihhcmd1bWVudHNbMl0pO1xuICAgIGlmKEFSR1NfQlVHICYmICFORVdfVEFSR0VUX0JVRylyZXR1cm4gckNvbnN0cnVjdChUYXJnZXQsIGFyZ3MsIG5ld1RhcmdldCk7XG4gICAgaWYoVGFyZ2V0ID09IG5ld1RhcmdldCl7XG4gICAgICAvLyB3L28gYWx0ZXJlZCBuZXdUYXJnZXQsIG9wdGltaXphdGlvbiBmb3IgMC00IGFyZ3VtZW50c1xuICAgICAgc3dpdGNoKGFyZ3MubGVuZ3RoKXtcbiAgICAgICAgY2FzZSAwOiByZXR1cm4gbmV3IFRhcmdldDtcbiAgICAgICAgY2FzZSAxOiByZXR1cm4gbmV3IFRhcmdldChhcmdzWzBdKTtcbiAgICAgICAgY2FzZSAyOiByZXR1cm4gbmV3IFRhcmdldChhcmdzWzBdLCBhcmdzWzFdKTtcbiAgICAgICAgY2FzZSAzOiByZXR1cm4gbmV3IFRhcmdldChhcmdzWzBdLCBhcmdzWzFdLCBhcmdzWzJdKTtcbiAgICAgICAgY2FzZSA0OiByZXR1cm4gbmV3IFRhcmdldChhcmdzWzBdLCBhcmdzWzFdLCBhcmdzWzJdLCBhcmdzWzNdKTtcbiAgICAgIH1cbiAgICAgIC8vIHcvbyBhbHRlcmVkIG5ld1RhcmdldCwgbG90IG9mIGFyZ3VtZW50cyBjYXNlXG4gICAgICB2YXIgJGFyZ3MgPSBbbnVsbF07XG4gICAgICAkYXJncy5wdXNoLmFwcGx5KCRhcmdzLCBhcmdzKTtcbiAgICAgIHJldHVybiBuZXcgKGJpbmQuYXBwbHkoVGFyZ2V0LCAkYXJncykpO1xuICAgIH1cbiAgICAvLyB3aXRoIGFsdGVyZWQgbmV3VGFyZ2V0LCBub3Qgc3VwcG9ydCBidWlsdC1pbiBjb25zdHJ1Y3RvcnNcbiAgICB2YXIgcHJvdG8gICAgPSBuZXdUYXJnZXQucHJvdG90eXBlXG4gICAgICAsIGluc3RhbmNlID0gY3JlYXRlKGlzT2JqZWN0KHByb3RvKSA/IHByb3RvIDogT2JqZWN0LnByb3RvdHlwZSlcbiAgICAgICwgcmVzdWx0ICAgPSBGdW5jdGlvbi5hcHBseS5jYWxsKFRhcmdldCwgaW5zdGFuY2UsIGFyZ3MpO1xuICAgIHJldHVybiBpc09iamVjdChyZXN1bHQpID8gcmVzdWx0IDogaW5zdGFuY2U7XG4gIH1cbn0pOyIsIi8vIDI2LjEuMyBSZWZsZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgcHJvcGVydHlLZXksIGF0dHJpYnV0ZXMpXG52YXIgZFAgICAgICAgICAgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKVxuICAsICRleHBvcnQgICAgID0gcmVxdWlyZSgnLi9fZXhwb3J0JylcbiAgLCBhbk9iamVjdCAgICA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpXG4gICwgdG9QcmltaXRpdmUgPSByZXF1aXJlKCcuL190by1wcmltaXRpdmUnKTtcblxuLy8gTVMgRWRnZSBoYXMgYnJva2VuIFJlZmxlY3QuZGVmaW5lUHJvcGVydHkgLSB0aHJvd2luZyBpbnN0ZWFkIG9mIHJldHVybmluZyBmYWxzZVxuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiByZXF1aXJlKCcuL19mYWlscycpKGZ1bmN0aW9uKCl7XG4gIFJlZmxlY3QuZGVmaW5lUHJvcGVydHkoZFAuZih7fSwgMSwge3ZhbHVlOiAxfSksIDEsIHt2YWx1ZTogMn0pO1xufSksICdSZWZsZWN0Jywge1xuICBkZWZpbmVQcm9wZXJ0eTogZnVuY3Rpb24gZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBwcm9wZXJ0eUtleSwgYXR0cmlidXRlcyl7XG4gICAgYW5PYmplY3QodGFyZ2V0KTtcbiAgICBwcm9wZXJ0eUtleSA9IHRvUHJpbWl0aXZlKHByb3BlcnR5S2V5LCB0cnVlKTtcbiAgICBhbk9iamVjdChhdHRyaWJ1dGVzKTtcbiAgICB0cnkge1xuICAgICAgZFAuZih0YXJnZXQsIHByb3BlcnR5S2V5LCBhdHRyaWJ1dGVzKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2goZSl7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG59KTsiLCIvLyAyNi4xLjQgUmVmbGVjdC5kZWxldGVQcm9wZXJ0eSh0YXJnZXQsIHByb3BlcnR5S2V5KVxudmFyICRleHBvcnQgID0gcmVxdWlyZSgnLi9fZXhwb3J0JylcbiAgLCBnT1BEICAgICA9IHJlcXVpcmUoJy4vX29iamVjdC1nb3BkJykuZlxuICAsIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnUmVmbGVjdCcsIHtcbiAgZGVsZXRlUHJvcGVydHk6IGZ1bmN0aW9uIGRlbGV0ZVByb3BlcnR5KHRhcmdldCwgcHJvcGVydHlLZXkpe1xuICAgIHZhciBkZXNjID0gZ09QRChhbk9iamVjdCh0YXJnZXQpLCBwcm9wZXJ0eUtleSk7XG4gICAgcmV0dXJuIGRlc2MgJiYgIWRlc2MuY29uZmlndXJhYmxlID8gZmFsc2UgOiBkZWxldGUgdGFyZ2V0W3Byb3BlcnR5S2V5XTtcbiAgfVxufSk7IiwiJ3VzZSBzdHJpY3QnO1xuLy8gMjYuMS41IFJlZmxlY3QuZW51bWVyYXRlKHRhcmdldClcbnZhciAkZXhwb3J0ICA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpXG4gICwgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciBFbnVtZXJhdGUgPSBmdW5jdGlvbihpdGVyYXRlZCl7XG4gIHRoaXMuX3QgPSBhbk9iamVjdChpdGVyYXRlZCk7IC8vIHRhcmdldFxuICB0aGlzLl9pID0gMDsgICAgICAgICAgICAgICAgICAvLyBuZXh0IGluZGV4XG4gIHZhciBrZXlzID0gdGhpcy5fayA9IFtdICAgICAgIC8vIGtleXNcbiAgICAsIGtleTtcbiAgZm9yKGtleSBpbiBpdGVyYXRlZClrZXlzLnB1c2goa2V5KTtcbn07XG5yZXF1aXJlKCcuL19pdGVyLWNyZWF0ZScpKEVudW1lcmF0ZSwgJ09iamVjdCcsIGZ1bmN0aW9uKCl7XG4gIHZhciB0aGF0ID0gdGhpc1xuICAgICwga2V5cyA9IHRoYXQuX2tcbiAgICAsIGtleTtcbiAgZG8ge1xuICAgIGlmKHRoYXQuX2kgPj0ga2V5cy5sZW5ndGgpcmV0dXJuIHt2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlfTtcbiAgfSB3aGlsZSghKChrZXkgPSBrZXlzW3RoYXQuX2krK10pIGluIHRoYXQuX3QpKTtcbiAgcmV0dXJuIHt2YWx1ZToga2V5LCBkb25lOiBmYWxzZX07XG59KTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdSZWZsZWN0Jywge1xuICBlbnVtZXJhdGU6IGZ1bmN0aW9uIGVudW1lcmF0ZSh0YXJnZXQpe1xuICAgIHJldHVybiBuZXcgRW51bWVyYXRlKHRhcmdldCk7XG4gIH1cbn0pOyIsIi8vIDI2LjEuNyBSZWZsZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIHByb3BlcnR5S2V5KVxudmFyIGdPUEQgICAgID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdvcGQnKVxuICAsICRleHBvcnQgID0gcmVxdWlyZSgnLi9fZXhwb3J0JylcbiAgLCBhbk9iamVjdCA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ1JlZmxlY3QnLCB7XG4gIGdldE93blByb3BlcnR5RGVzY3JpcHRvcjogZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwgcHJvcGVydHlLZXkpe1xuICAgIHJldHVybiBnT1BELmYoYW5PYmplY3QodGFyZ2V0KSwgcHJvcGVydHlLZXkpO1xuICB9XG59KTsiLCIvLyAyNi4xLjggUmVmbGVjdC5nZXRQcm90b3R5cGVPZih0YXJnZXQpXG52YXIgJGV4cG9ydCAgPSByZXF1aXJlKCcuL19leHBvcnQnKVxuICAsIGdldFByb3RvID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdwbycpXG4gICwgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdSZWZsZWN0Jywge1xuICBnZXRQcm90b3R5cGVPZjogZnVuY3Rpb24gZ2V0UHJvdG90eXBlT2YodGFyZ2V0KXtcbiAgICByZXR1cm4gZ2V0UHJvdG8oYW5PYmplY3QodGFyZ2V0KSk7XG4gIH1cbn0pOyIsIi8vIDI2LjEuNiBSZWZsZWN0LmdldCh0YXJnZXQsIHByb3BlcnR5S2V5IFssIHJlY2VpdmVyXSlcbnZhciBnT1BEICAgICAgICAgICA9IHJlcXVpcmUoJy4vX29iamVjdC1nb3BkJylcbiAgLCBnZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoJy4vX29iamVjdC1ncG8nKVxuICAsIGhhcyAgICAgICAgICAgID0gcmVxdWlyZSgnLi9faGFzJylcbiAgLCAkZXhwb3J0ICAgICAgICA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpXG4gICwgaXNPYmplY3QgICAgICAgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKVxuICAsIGFuT2JqZWN0ICAgICAgID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0Jyk7XG5cbmZ1bmN0aW9uIGdldCh0YXJnZXQsIHByb3BlcnR5S2V5LyosIHJlY2VpdmVyKi8pe1xuICB2YXIgcmVjZWl2ZXIgPSBhcmd1bWVudHMubGVuZ3RoIDwgMyA/IHRhcmdldCA6IGFyZ3VtZW50c1syXVxuICAgICwgZGVzYywgcHJvdG87XG4gIGlmKGFuT2JqZWN0KHRhcmdldCkgPT09IHJlY2VpdmVyKXJldHVybiB0YXJnZXRbcHJvcGVydHlLZXldO1xuICBpZihkZXNjID0gZ09QRC5mKHRhcmdldCwgcHJvcGVydHlLZXkpKXJldHVybiBoYXMoZGVzYywgJ3ZhbHVlJylcbiAgICA/IGRlc2MudmFsdWVcbiAgICA6IGRlc2MuZ2V0ICE9PSB1bmRlZmluZWRcbiAgICAgID8gZGVzYy5nZXQuY2FsbChyZWNlaXZlcilcbiAgICAgIDogdW5kZWZpbmVkO1xuICBpZihpc09iamVjdChwcm90byA9IGdldFByb3RvdHlwZU9mKHRhcmdldCkpKXJldHVybiBnZXQocHJvdG8sIHByb3BlcnR5S2V5LCByZWNlaXZlcik7XG59XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnUmVmbGVjdCcsIHtnZXQ6IGdldH0pOyIsIi8vIDI2LjEuOSBSZWZsZWN0Lmhhcyh0YXJnZXQsIHByb3BlcnR5S2V5KVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdSZWZsZWN0Jywge1xuICBoYXM6IGZ1bmN0aW9uIGhhcyh0YXJnZXQsIHByb3BlcnR5S2V5KXtcbiAgICByZXR1cm4gcHJvcGVydHlLZXkgaW4gdGFyZ2V0O1xuICB9XG59KTsiLCIvLyAyNi4xLjEwIFJlZmxlY3QuaXNFeHRlbnNpYmxlKHRhcmdldClcbnZhciAkZXhwb3J0ICAgICAgID0gcmVxdWlyZSgnLi9fZXhwb3J0JylcbiAgLCBhbk9iamVjdCAgICAgID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0JylcbiAgLCAkaXNFeHRlbnNpYmxlID0gT2JqZWN0LmlzRXh0ZW5zaWJsZTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdSZWZsZWN0Jywge1xuICBpc0V4dGVuc2libGU6IGZ1bmN0aW9uIGlzRXh0ZW5zaWJsZSh0YXJnZXQpe1xuICAgIGFuT2JqZWN0KHRhcmdldCk7XG4gICAgcmV0dXJuICRpc0V4dGVuc2libGUgPyAkaXNFeHRlbnNpYmxlKHRhcmdldCkgOiB0cnVlO1xuICB9XG59KTsiLCIvLyAyNi4xLjExIFJlZmxlY3Qub3duS2V5cyh0YXJnZXQpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUywgJ1JlZmxlY3QnLCB7b3duS2V5czogcmVxdWlyZSgnLi9fb3duLWtleXMnKX0pOyIsIi8vIDI2LjEuMTIgUmVmbGVjdC5wcmV2ZW50RXh0ZW5zaW9ucyh0YXJnZXQpXG52YXIgJGV4cG9ydCAgICAgICAgICAgID0gcmVxdWlyZSgnLi9fZXhwb3J0JylcbiAgLCBhbk9iamVjdCAgICAgICAgICAgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKVxuICAsICRwcmV2ZW50RXh0ZW5zaW9ucyA9IE9iamVjdC5wcmV2ZW50RXh0ZW5zaW9ucztcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdSZWZsZWN0Jywge1xuICBwcmV2ZW50RXh0ZW5zaW9uczogZnVuY3Rpb24gcHJldmVudEV4dGVuc2lvbnModGFyZ2V0KXtcbiAgICBhbk9iamVjdCh0YXJnZXQpO1xuICAgIHRyeSB7XG4gICAgICBpZigkcHJldmVudEV4dGVuc2lvbnMpJHByZXZlbnRFeHRlbnNpb25zKHRhcmdldCk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoKGUpe1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxufSk7IiwiLy8gMjYuMS4xNCBSZWZsZWN0LnNldFByb3RvdHlwZU9mKHRhcmdldCwgcHJvdG8pXG52YXIgJGV4cG9ydCAgPSByZXF1aXJlKCcuL19leHBvcnQnKVxuICAsIHNldFByb3RvID0gcmVxdWlyZSgnLi9fc2V0LXByb3RvJyk7XG5cbmlmKHNldFByb3RvKSRleHBvcnQoJGV4cG9ydC5TLCAnUmVmbGVjdCcsIHtcbiAgc2V0UHJvdG90eXBlT2Y6IGZ1bmN0aW9uIHNldFByb3RvdHlwZU9mKHRhcmdldCwgcHJvdG8pe1xuICAgIHNldFByb3RvLmNoZWNrKHRhcmdldCwgcHJvdG8pO1xuICAgIHRyeSB7XG4gICAgICBzZXRQcm90by5zZXQodGFyZ2V0LCBwcm90byk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoKGUpe1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxufSk7IiwiLy8gMjYuMS4xMyBSZWZsZWN0LnNldCh0YXJnZXQsIHByb3BlcnR5S2V5LCBWIFssIHJlY2VpdmVyXSlcbnZhciBkUCAgICAgICAgICAgICA9IHJlcXVpcmUoJy4vX29iamVjdC1kcCcpXG4gICwgZ09QRCAgICAgICAgICAgPSByZXF1aXJlKCcuL19vYmplY3QtZ29wZCcpXG4gICwgZ2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKCcuL19vYmplY3QtZ3BvJylcbiAgLCBoYXMgICAgICAgICAgICA9IHJlcXVpcmUoJy4vX2hhcycpXG4gICwgJGV4cG9ydCAgICAgICAgPSByZXF1aXJlKCcuL19leHBvcnQnKVxuICAsIGNyZWF0ZURlc2MgICAgID0gcmVxdWlyZSgnLi9fcHJvcGVydHktZGVzYycpXG4gICwgYW5PYmplY3QgICAgICAgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKVxuICAsIGlzT2JqZWN0ICAgICAgID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG5cbmZ1bmN0aW9uIHNldCh0YXJnZXQsIHByb3BlcnR5S2V5LCBWLyosIHJlY2VpdmVyKi8pe1xuICB2YXIgcmVjZWl2ZXIgPSBhcmd1bWVudHMubGVuZ3RoIDwgNCA/IHRhcmdldCA6IGFyZ3VtZW50c1szXVxuICAgICwgb3duRGVzYyAgPSBnT1BELmYoYW5PYmplY3QodGFyZ2V0KSwgcHJvcGVydHlLZXkpXG4gICAgLCBleGlzdGluZ0Rlc2NyaXB0b3IsIHByb3RvO1xuICBpZighb3duRGVzYyl7XG4gICAgaWYoaXNPYmplY3QocHJvdG8gPSBnZXRQcm90b3R5cGVPZih0YXJnZXQpKSl7XG4gICAgICByZXR1cm4gc2V0KHByb3RvLCBwcm9wZXJ0eUtleSwgViwgcmVjZWl2ZXIpO1xuICAgIH1cbiAgICBvd25EZXNjID0gY3JlYXRlRGVzYygwKTtcbiAgfVxuICBpZihoYXMob3duRGVzYywgJ3ZhbHVlJykpe1xuICAgIGlmKG93bkRlc2Mud3JpdGFibGUgPT09IGZhbHNlIHx8ICFpc09iamVjdChyZWNlaXZlcikpcmV0dXJuIGZhbHNlO1xuICAgIGV4aXN0aW5nRGVzY3JpcHRvciA9IGdPUEQuZihyZWNlaXZlciwgcHJvcGVydHlLZXkpIHx8IGNyZWF0ZURlc2MoMCk7XG4gICAgZXhpc3RpbmdEZXNjcmlwdG9yLnZhbHVlID0gVjtcbiAgICBkUC5mKHJlY2VpdmVyLCBwcm9wZXJ0eUtleSwgZXhpc3RpbmdEZXNjcmlwdG9yKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gb3duRGVzYy5zZXQgPT09IHVuZGVmaW5lZCA/IGZhbHNlIDogKG93bkRlc2Muc2V0LmNhbGwocmVjZWl2ZXIsIFYpLCB0cnVlKTtcbn1cblxuJGV4cG9ydCgkZXhwb3J0LlMsICdSZWZsZWN0Jywge3NldDogc2V0fSk7IiwidmFyIGdsb2JhbCAgICAgICAgICAgID0gcmVxdWlyZSgnLi9fZ2xvYmFsJylcbiAgLCBpbmhlcml0SWZSZXF1aXJlZCA9IHJlcXVpcmUoJy4vX2luaGVyaXQtaWYtcmVxdWlyZWQnKVxuICAsIGRQICAgICAgICAgICAgICAgID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwJykuZlxuICAsIGdPUE4gICAgICAgICAgICAgID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdvcG4nKS5mXG4gICwgaXNSZWdFeHAgICAgICAgICAgPSByZXF1aXJlKCcuL19pcy1yZWdleHAnKVxuICAsICRmbGFncyAgICAgICAgICAgID0gcmVxdWlyZSgnLi9fZmxhZ3MnKVxuICAsICRSZWdFeHAgICAgICAgICAgID0gZ2xvYmFsLlJlZ0V4cFxuICAsIEJhc2UgICAgICAgICAgICAgID0gJFJlZ0V4cFxuICAsIHByb3RvICAgICAgICAgICAgID0gJFJlZ0V4cC5wcm90b3R5cGVcbiAgLCByZTEgICAgICAgICAgICAgICA9IC9hL2dcbiAgLCByZTIgICAgICAgICAgICAgICA9IC9hL2dcbiAgLy8gXCJuZXdcIiBjcmVhdGVzIGEgbmV3IG9iamVjdCwgb2xkIHdlYmtpdCBidWdneSBoZXJlXG4gICwgQ09SUkVDVF9ORVcgICAgICAgPSBuZXcgJFJlZ0V4cChyZTEpICE9PSByZTE7XG5cbmlmKHJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgJiYgKCFDT1JSRUNUX05FVyB8fCByZXF1aXJlKCcuL19mYWlscycpKGZ1bmN0aW9uKCl7XG4gIHJlMltyZXF1aXJlKCcuL193a3MnKSgnbWF0Y2gnKV0gPSBmYWxzZTtcbiAgLy8gUmVnRXhwIGNvbnN0cnVjdG9yIGNhbiBhbHRlciBmbGFncyBhbmQgSXNSZWdFeHAgd29ya3MgY29ycmVjdCB3aXRoIEBAbWF0Y2hcbiAgcmV0dXJuICRSZWdFeHAocmUxKSAhPSByZTEgfHwgJFJlZ0V4cChyZTIpID09IHJlMiB8fCAkUmVnRXhwKHJlMSwgJ2knKSAhPSAnL2EvaSc7XG59KSkpe1xuICAkUmVnRXhwID0gZnVuY3Rpb24gUmVnRXhwKHAsIGYpe1xuICAgIHZhciB0aVJFID0gdGhpcyBpbnN0YW5jZW9mICRSZWdFeHBcbiAgICAgICwgcGlSRSA9IGlzUmVnRXhwKHApXG4gICAgICAsIGZpVSAgPSBmID09PSB1bmRlZmluZWQ7XG4gICAgcmV0dXJuICF0aVJFICYmIHBpUkUgJiYgcC5jb25zdHJ1Y3RvciA9PT0gJFJlZ0V4cCAmJiBmaVUgPyBwXG4gICAgICA6IGluaGVyaXRJZlJlcXVpcmVkKENPUlJFQ1RfTkVXXG4gICAgICAgID8gbmV3IEJhc2UocGlSRSAmJiAhZmlVID8gcC5zb3VyY2UgOiBwLCBmKVxuICAgICAgICA6IEJhc2UoKHBpUkUgPSBwIGluc3RhbmNlb2YgJFJlZ0V4cCkgPyBwLnNvdXJjZSA6IHAsIHBpUkUgJiYgZmlVID8gJGZsYWdzLmNhbGwocCkgOiBmKVxuICAgICAgLCB0aVJFID8gdGhpcyA6IHByb3RvLCAkUmVnRXhwKTtcbiAgfTtcbiAgdmFyIHByb3h5ID0gZnVuY3Rpb24oa2V5KXtcbiAgICBrZXkgaW4gJFJlZ0V4cCB8fCBkUCgkUmVnRXhwLCBrZXksIHtcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIGdldDogZnVuY3Rpb24oKXsgcmV0dXJuIEJhc2Vba2V5XTsgfSxcbiAgICAgIHNldDogZnVuY3Rpb24oaXQpeyBCYXNlW2tleV0gPSBpdDsgfVxuICAgIH0pO1xuICB9O1xuICBmb3IodmFyIGtleXMgPSBnT1BOKEJhc2UpLCBpID0gMDsga2V5cy5sZW5ndGggPiBpOyApcHJveHkoa2V5c1tpKytdKTtcbiAgcHJvdG8uY29uc3RydWN0b3IgPSAkUmVnRXhwO1xuICAkUmVnRXhwLnByb3RvdHlwZSA9IHByb3RvO1xuICByZXF1aXJlKCcuL19yZWRlZmluZScpKGdsb2JhbCwgJ1JlZ0V4cCcsICRSZWdFeHApO1xufVxuXG5yZXF1aXJlKCcuL19zZXQtc3BlY2llcycpKCdSZWdFeHAnKTsiLCIvLyAyMS4yLjUuMyBnZXQgUmVnRXhwLnByb3RvdHlwZS5mbGFncygpXG5pZihyZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpICYmIC8uL2cuZmxhZ3MgIT0gJ2cnKXJlcXVpcmUoJy4vX29iamVjdC1kcCcpLmYoUmVnRXhwLnByb3RvdHlwZSwgJ2ZsYWdzJywge1xuICBjb25maWd1cmFibGU6IHRydWUsXG4gIGdldDogcmVxdWlyZSgnLi9fZmxhZ3MnKVxufSk7IiwiLy8gQEBtYXRjaCBsb2dpY1xucmVxdWlyZSgnLi9fZml4LXJlLXdrcycpKCdtYXRjaCcsIDEsIGZ1bmN0aW9uKGRlZmluZWQsIE1BVENILCAkbWF0Y2gpe1xuICAvLyAyMS4xLjMuMTEgU3RyaW5nLnByb3RvdHlwZS5tYXRjaChyZWdleHApXG4gIHJldHVybiBbZnVuY3Rpb24gbWF0Y2gocmVnZXhwKXtcbiAgICAndXNlIHN0cmljdCc7XG4gICAgdmFyIE8gID0gZGVmaW5lZCh0aGlzKVxuICAgICAgLCBmbiA9IHJlZ2V4cCA9PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiByZWdleHBbTUFUQ0hdO1xuICAgIHJldHVybiBmbiAhPT0gdW5kZWZpbmVkID8gZm4uY2FsbChyZWdleHAsIE8pIDogbmV3IFJlZ0V4cChyZWdleHApW01BVENIXShTdHJpbmcoTykpO1xuICB9LCAkbWF0Y2hdO1xufSk7IiwiLy8gQEByZXBsYWNlIGxvZ2ljXG5yZXF1aXJlKCcuL19maXgtcmUtd2tzJykoJ3JlcGxhY2UnLCAyLCBmdW5jdGlvbihkZWZpbmVkLCBSRVBMQUNFLCAkcmVwbGFjZSl7XG4gIC8vIDIxLjEuMy4xNCBTdHJpbmcucHJvdG90eXBlLnJlcGxhY2Uoc2VhcmNoVmFsdWUsIHJlcGxhY2VWYWx1ZSlcbiAgcmV0dXJuIFtmdW5jdGlvbiByZXBsYWNlKHNlYXJjaFZhbHVlLCByZXBsYWNlVmFsdWUpe1xuICAgICd1c2Ugc3RyaWN0JztcbiAgICB2YXIgTyAgPSBkZWZpbmVkKHRoaXMpXG4gICAgICAsIGZuID0gc2VhcmNoVmFsdWUgPT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogc2VhcmNoVmFsdWVbUkVQTEFDRV07XG4gICAgcmV0dXJuIGZuICE9PSB1bmRlZmluZWRcbiAgICAgID8gZm4uY2FsbChzZWFyY2hWYWx1ZSwgTywgcmVwbGFjZVZhbHVlKVxuICAgICAgOiAkcmVwbGFjZS5jYWxsKFN0cmluZyhPKSwgc2VhcmNoVmFsdWUsIHJlcGxhY2VWYWx1ZSk7XG4gIH0sICRyZXBsYWNlXTtcbn0pOyIsIi8vIEBAc2VhcmNoIGxvZ2ljXG5yZXF1aXJlKCcuL19maXgtcmUtd2tzJykoJ3NlYXJjaCcsIDEsIGZ1bmN0aW9uKGRlZmluZWQsIFNFQVJDSCwgJHNlYXJjaCl7XG4gIC8vIDIxLjEuMy4xNSBTdHJpbmcucHJvdG90eXBlLnNlYXJjaChyZWdleHApXG4gIHJldHVybiBbZnVuY3Rpb24gc2VhcmNoKHJlZ2V4cCl7XG4gICAgJ3VzZSBzdHJpY3QnO1xuICAgIHZhciBPICA9IGRlZmluZWQodGhpcylcbiAgICAgICwgZm4gPSByZWdleHAgPT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogcmVnZXhwW1NFQVJDSF07XG4gICAgcmV0dXJuIGZuICE9PSB1bmRlZmluZWQgPyBmbi5jYWxsKHJlZ2V4cCwgTykgOiBuZXcgUmVnRXhwKHJlZ2V4cClbU0VBUkNIXShTdHJpbmcoTykpO1xuICB9LCAkc2VhcmNoXTtcbn0pOyIsIi8vIEBAc3BsaXQgbG9naWNcbnJlcXVpcmUoJy4vX2ZpeC1yZS13a3MnKSgnc3BsaXQnLCAyLCBmdW5jdGlvbihkZWZpbmVkLCBTUExJVCwgJHNwbGl0KXtcbiAgJ3VzZSBzdHJpY3QnO1xuICB2YXIgaXNSZWdFeHAgICA9IHJlcXVpcmUoJy4vX2lzLXJlZ2V4cCcpXG4gICAgLCBfc3BsaXQgICAgID0gJHNwbGl0XG4gICAgLCAkcHVzaCAgICAgID0gW10ucHVzaFxuICAgICwgJFNQTElUICAgICA9ICdzcGxpdCdcbiAgICAsIExFTkdUSCAgICAgPSAnbGVuZ3RoJ1xuICAgICwgTEFTVF9JTkRFWCA9ICdsYXN0SW5kZXgnO1xuICBpZihcbiAgICAnYWJiYydbJFNQTElUXSgvKGIpKi8pWzFdID09ICdjJyB8fFxuICAgICd0ZXN0J1skU1BMSVRdKC8oPzopLywgLTEpW0xFTkdUSF0gIT0gNCB8fFxuICAgICdhYidbJFNQTElUXSgvKD86YWIpKi8pW0xFTkdUSF0gIT0gMiB8fFxuICAgICcuJ1skU1BMSVRdKC8oLj8pKC4/KS8pW0xFTkdUSF0gIT0gNCB8fFxuICAgICcuJ1skU1BMSVRdKC8oKSgpLylbTEVOR1RIXSA+IDEgfHxcbiAgICAnJ1skU1BMSVRdKC8uPy8pW0xFTkdUSF1cbiAgKXtcbiAgICB2YXIgTlBDRyA9IC8oKT8/Ly5leGVjKCcnKVsxXSA9PT0gdW5kZWZpbmVkOyAvLyBub25wYXJ0aWNpcGF0aW5nIGNhcHR1cmluZyBncm91cFxuICAgIC8vIGJhc2VkIG9uIGVzNS1zaGltIGltcGxlbWVudGF0aW9uLCBuZWVkIHRvIHJld29yayBpdFxuICAgICRzcGxpdCA9IGZ1bmN0aW9uKHNlcGFyYXRvciwgbGltaXQpe1xuICAgICAgdmFyIHN0cmluZyA9IFN0cmluZyh0aGlzKTtcbiAgICAgIGlmKHNlcGFyYXRvciA9PT0gdW5kZWZpbmVkICYmIGxpbWl0ID09PSAwKXJldHVybiBbXTtcbiAgICAgIC8vIElmIGBzZXBhcmF0b3JgIGlzIG5vdCBhIHJlZ2V4LCB1c2UgbmF0aXZlIHNwbGl0XG4gICAgICBpZighaXNSZWdFeHAoc2VwYXJhdG9yKSlyZXR1cm4gX3NwbGl0LmNhbGwoc3RyaW5nLCBzZXBhcmF0b3IsIGxpbWl0KTtcbiAgICAgIHZhciBvdXRwdXQgPSBbXTtcbiAgICAgIHZhciBmbGFncyA9IChzZXBhcmF0b3IuaWdub3JlQ2FzZSA/ICdpJyA6ICcnKSArXG4gICAgICAgICAgICAgICAgICAoc2VwYXJhdG9yLm11bHRpbGluZSA/ICdtJyA6ICcnKSArXG4gICAgICAgICAgICAgICAgICAoc2VwYXJhdG9yLnVuaWNvZGUgPyAndScgOiAnJykgK1xuICAgICAgICAgICAgICAgICAgKHNlcGFyYXRvci5zdGlja3kgPyAneScgOiAnJyk7XG4gICAgICB2YXIgbGFzdExhc3RJbmRleCA9IDA7XG4gICAgICB2YXIgc3BsaXRMaW1pdCA9IGxpbWl0ID09PSB1bmRlZmluZWQgPyA0Mjk0OTY3Mjk1IDogbGltaXQgPj4+IDA7XG4gICAgICAvLyBNYWtlIGBnbG9iYWxgIGFuZCBhdm9pZCBgbGFzdEluZGV4YCBpc3N1ZXMgYnkgd29ya2luZyB3aXRoIGEgY29weVxuICAgICAgdmFyIHNlcGFyYXRvckNvcHkgPSBuZXcgUmVnRXhwKHNlcGFyYXRvci5zb3VyY2UsIGZsYWdzICsgJ2cnKTtcbiAgICAgIHZhciBzZXBhcmF0b3IyLCBtYXRjaCwgbGFzdEluZGV4LCBsYXN0TGVuZ3RoLCBpO1xuICAgICAgLy8gRG9lc24ndCBuZWVkIGZsYWdzIGd5LCBidXQgdGhleSBkb24ndCBodXJ0XG4gICAgICBpZighTlBDRylzZXBhcmF0b3IyID0gbmV3IFJlZ0V4cCgnXicgKyBzZXBhcmF0b3JDb3B5LnNvdXJjZSArICckKD8hXFxcXHMpJywgZmxhZ3MpO1xuICAgICAgd2hpbGUobWF0Y2ggPSBzZXBhcmF0b3JDb3B5LmV4ZWMoc3RyaW5nKSl7XG4gICAgICAgIC8vIGBzZXBhcmF0b3JDb3B5Lmxhc3RJbmRleGAgaXMgbm90IHJlbGlhYmxlIGNyb3NzLWJyb3dzZXJcbiAgICAgICAgbGFzdEluZGV4ID0gbWF0Y2guaW5kZXggKyBtYXRjaFswXVtMRU5HVEhdO1xuICAgICAgICBpZihsYXN0SW5kZXggPiBsYXN0TGFzdEluZGV4KXtcbiAgICAgICAgICBvdXRwdXQucHVzaChzdHJpbmcuc2xpY2UobGFzdExhc3RJbmRleCwgbWF0Y2guaW5kZXgpKTtcbiAgICAgICAgICAvLyBGaXggYnJvd3NlcnMgd2hvc2UgYGV4ZWNgIG1ldGhvZHMgZG9uJ3QgY29uc2lzdGVudGx5IHJldHVybiBgdW5kZWZpbmVkYCBmb3IgTlBDR1xuICAgICAgICAgIGlmKCFOUENHICYmIG1hdGNoW0xFTkdUSF0gPiAxKW1hdGNoWzBdLnJlcGxhY2Uoc2VwYXJhdG9yMiwgZnVuY3Rpb24oKXtcbiAgICAgICAgICAgIGZvcihpID0gMTsgaSA8IGFyZ3VtZW50c1tMRU5HVEhdIC0gMjsgaSsrKWlmKGFyZ3VtZW50c1tpXSA9PT0gdW5kZWZpbmVkKW1hdGNoW2ldID0gdW5kZWZpbmVkO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGlmKG1hdGNoW0xFTkdUSF0gPiAxICYmIG1hdGNoLmluZGV4IDwgc3RyaW5nW0xFTkdUSF0pJHB1c2guYXBwbHkob3V0cHV0LCBtYXRjaC5zbGljZSgxKSk7XG4gICAgICAgICAgbGFzdExlbmd0aCA9IG1hdGNoWzBdW0xFTkdUSF07XG4gICAgICAgICAgbGFzdExhc3RJbmRleCA9IGxhc3RJbmRleDtcbiAgICAgICAgICBpZihvdXRwdXRbTEVOR1RIXSA+PSBzcGxpdExpbWl0KWJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGlmKHNlcGFyYXRvckNvcHlbTEFTVF9JTkRFWF0gPT09IG1hdGNoLmluZGV4KXNlcGFyYXRvckNvcHlbTEFTVF9JTkRFWF0rKzsgLy8gQXZvaWQgYW4gaW5maW5pdGUgbG9vcFxuICAgICAgfVxuICAgICAgaWYobGFzdExhc3RJbmRleCA9PT0gc3RyaW5nW0xFTkdUSF0pe1xuICAgICAgICBpZihsYXN0TGVuZ3RoIHx8ICFzZXBhcmF0b3JDb3B5LnRlc3QoJycpKW91dHB1dC5wdXNoKCcnKTtcbiAgICAgIH0gZWxzZSBvdXRwdXQucHVzaChzdHJpbmcuc2xpY2UobGFzdExhc3RJbmRleCkpO1xuICAgICAgcmV0dXJuIG91dHB1dFtMRU5HVEhdID4gc3BsaXRMaW1pdCA/IG91dHB1dC5zbGljZSgwLCBzcGxpdExpbWl0KSA6IG91dHB1dDtcbiAgICB9O1xuICAvLyBDaGFrcmEsIFY4XG4gIH0gZWxzZSBpZignMCdbJFNQTElUXSh1bmRlZmluZWQsIDApW0xFTkdUSF0pe1xuICAgICRzcGxpdCA9IGZ1bmN0aW9uKHNlcGFyYXRvciwgbGltaXQpe1xuICAgICAgcmV0dXJuIHNlcGFyYXRvciA9PT0gdW5kZWZpbmVkICYmIGxpbWl0ID09PSAwID8gW10gOiBfc3BsaXQuY2FsbCh0aGlzLCBzZXBhcmF0b3IsIGxpbWl0KTtcbiAgICB9O1xuICB9XG4gIC8vIDIxLjEuMy4xNyBTdHJpbmcucHJvdG90eXBlLnNwbGl0KHNlcGFyYXRvciwgbGltaXQpXG4gIHJldHVybiBbZnVuY3Rpb24gc3BsaXQoc2VwYXJhdG9yLCBsaW1pdCl7XG4gICAgdmFyIE8gID0gZGVmaW5lZCh0aGlzKVxuICAgICAgLCBmbiA9IHNlcGFyYXRvciA9PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBzZXBhcmF0b3JbU1BMSVRdO1xuICAgIHJldHVybiBmbiAhPT0gdW5kZWZpbmVkID8gZm4uY2FsbChzZXBhcmF0b3IsIE8sIGxpbWl0KSA6ICRzcGxpdC5jYWxsKFN0cmluZyhPKSwgc2VwYXJhdG9yLCBsaW1pdCk7XG4gIH0sICRzcGxpdF07XG59KTsiLCIndXNlIHN0cmljdCc7XG5yZXF1aXJlKCcuL2VzNi5yZWdleHAuZmxhZ3MnKTtcbnZhciBhbk9iamVjdCAgICA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpXG4gICwgJGZsYWdzICAgICAgPSByZXF1aXJlKCcuL19mbGFncycpXG4gICwgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpXG4gICwgVE9fU1RSSU5HICAgPSAndG9TdHJpbmcnXG4gICwgJHRvU3RyaW5nICAgPSAvLi9bVE9fU1RSSU5HXTtcblxudmFyIGRlZmluZSA9IGZ1bmN0aW9uKGZuKXtcbiAgcmVxdWlyZSgnLi9fcmVkZWZpbmUnKShSZWdFeHAucHJvdG90eXBlLCBUT19TVFJJTkcsIGZuLCB0cnVlKTtcbn07XG5cbi8vIDIxLjIuNS4xNCBSZWdFeHAucHJvdG90eXBlLnRvU3RyaW5nKClcbmlmKHJlcXVpcmUoJy4vX2ZhaWxzJykoZnVuY3Rpb24oKXsgcmV0dXJuICR0b1N0cmluZy5jYWxsKHtzb3VyY2U6ICdhJywgZmxhZ3M6ICdiJ30pICE9ICcvYS9iJzsgfSkpe1xuICBkZWZpbmUoZnVuY3Rpb24gdG9TdHJpbmcoKXtcbiAgICB2YXIgUiA9IGFuT2JqZWN0KHRoaXMpO1xuICAgIHJldHVybiAnLycuY29uY2F0KFIuc291cmNlLCAnLycsXG4gICAgICAnZmxhZ3MnIGluIFIgPyBSLmZsYWdzIDogIURFU0NSSVBUT1JTICYmIFIgaW5zdGFuY2VvZiBSZWdFeHAgPyAkZmxhZ3MuY2FsbChSKSA6IHVuZGVmaW5lZCk7XG4gIH0pO1xuLy8gRkY0NC0gUmVnRXhwI3RvU3RyaW5nIGhhcyBhIHdyb25nIG5hbWVcbn0gZWxzZSBpZigkdG9TdHJpbmcubmFtZSAhPSBUT19TVFJJTkcpe1xuICBkZWZpbmUoZnVuY3Rpb24gdG9TdHJpbmcoKXtcbiAgICByZXR1cm4gJHRvU3RyaW5nLmNhbGwodGhpcyk7XG4gIH0pO1xufSIsIid1c2Ugc3RyaWN0JztcbnZhciBzdHJvbmcgPSByZXF1aXJlKCcuL19jb2xsZWN0aW9uLXN0cm9uZycpO1xuXG4vLyAyMy4yIFNldCBPYmplY3RzXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vX2NvbGxlY3Rpb24nKSgnU2V0JywgZnVuY3Rpb24oZ2V0KXtcbiAgcmV0dXJuIGZ1bmN0aW9uIFNldCgpeyByZXR1cm4gZ2V0KHRoaXMsIGFyZ3VtZW50cy5sZW5ndGggPiAwID8gYXJndW1lbnRzWzBdIDogdW5kZWZpbmVkKTsgfTtcbn0sIHtcbiAgLy8gMjMuMi4zLjEgU2V0LnByb3RvdHlwZS5hZGQodmFsdWUpXG4gIGFkZDogZnVuY3Rpb24gYWRkKHZhbHVlKXtcbiAgICByZXR1cm4gc3Ryb25nLmRlZih0aGlzLCB2YWx1ZSA9IHZhbHVlID09PSAwID8gMCA6IHZhbHVlLCB2YWx1ZSk7XG4gIH1cbn0sIHN0cm9uZyk7IiwiJ3VzZSBzdHJpY3QnO1xuLy8gQi4yLjMuMiBTdHJpbmcucHJvdG90eXBlLmFuY2hvcihuYW1lKVxucmVxdWlyZSgnLi9fc3RyaW5nLWh0bWwnKSgnYW5jaG9yJywgZnVuY3Rpb24oY3JlYXRlSFRNTCl7XG4gIHJldHVybiBmdW5jdGlvbiBhbmNob3IobmFtZSl7XG4gICAgcmV0dXJuIGNyZWF0ZUhUTUwodGhpcywgJ2EnLCAnbmFtZScsIG5hbWUpO1xuICB9XG59KTsiLCIndXNlIHN0cmljdCc7XG4vLyBCLjIuMy4zIFN0cmluZy5wcm90b3R5cGUuYmlnKClcbnJlcXVpcmUoJy4vX3N0cmluZy1odG1sJykoJ2JpZycsIGZ1bmN0aW9uKGNyZWF0ZUhUTUwpe1xuICByZXR1cm4gZnVuY3Rpb24gYmlnKCl7XG4gICAgcmV0dXJuIGNyZWF0ZUhUTUwodGhpcywgJ2JpZycsICcnLCAnJyk7XG4gIH1cbn0pOyIsIid1c2Ugc3RyaWN0Jztcbi8vIEIuMi4zLjQgU3RyaW5nLnByb3RvdHlwZS5ibGluaygpXG5yZXF1aXJlKCcuL19zdHJpbmctaHRtbCcpKCdibGluaycsIGZ1bmN0aW9uKGNyZWF0ZUhUTUwpe1xuICByZXR1cm4gZnVuY3Rpb24gYmxpbmsoKXtcbiAgICByZXR1cm4gY3JlYXRlSFRNTCh0aGlzLCAnYmxpbmsnLCAnJywgJycpO1xuICB9XG59KTsiLCIndXNlIHN0cmljdCc7XG4vLyBCLjIuMy41IFN0cmluZy5wcm90b3R5cGUuYm9sZCgpXG5yZXF1aXJlKCcuL19zdHJpbmctaHRtbCcpKCdib2xkJywgZnVuY3Rpb24oY3JlYXRlSFRNTCl7XG4gIHJldHVybiBmdW5jdGlvbiBib2xkKCl7XG4gICAgcmV0dXJuIGNyZWF0ZUhUTUwodGhpcywgJ2InLCAnJywgJycpO1xuICB9XG59KTsiLCIndXNlIHN0cmljdCc7XG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpXG4gICwgJGF0ICAgICA9IHJlcXVpcmUoJy4vX3N0cmluZy1hdCcpKGZhbHNlKTtcbiRleHBvcnQoJGV4cG9ydC5QLCAnU3RyaW5nJywge1xuICAvLyAyMS4xLjMuMyBTdHJpbmcucHJvdG90eXBlLmNvZGVQb2ludEF0KHBvcylcbiAgY29kZVBvaW50QXQ6IGZ1bmN0aW9uIGNvZGVQb2ludEF0KHBvcyl7XG4gICAgcmV0dXJuICRhdCh0aGlzLCBwb3MpO1xuICB9XG59KTsiLCIvLyAyMS4xLjMuNiBTdHJpbmcucHJvdG90eXBlLmVuZHNXaXRoKHNlYXJjaFN0cmluZyBbLCBlbmRQb3NpdGlvbl0pXG4ndXNlIHN0cmljdCc7XG52YXIgJGV4cG9ydCAgID0gcmVxdWlyZSgnLi9fZXhwb3J0JylcbiAgLCB0b0xlbmd0aCAgPSByZXF1aXJlKCcuL190by1sZW5ndGgnKVxuICAsIGNvbnRleHQgICA9IHJlcXVpcmUoJy4vX3N0cmluZy1jb250ZXh0JylcbiAgLCBFTkRTX1dJVEggPSAnZW5kc1dpdGgnXG4gICwgJGVuZHNXaXRoID0gJydbRU5EU19XSVRIXTtcblxuJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiByZXF1aXJlKCcuL19mYWlscy1pcy1yZWdleHAnKShFTkRTX1dJVEgpLCAnU3RyaW5nJywge1xuICBlbmRzV2l0aDogZnVuY3Rpb24gZW5kc1dpdGgoc2VhcmNoU3RyaW5nIC8qLCBlbmRQb3NpdGlvbiA9IEBsZW5ndGggKi8pe1xuICAgIHZhciB0aGF0ID0gY29udGV4dCh0aGlzLCBzZWFyY2hTdHJpbmcsIEVORFNfV0lUSClcbiAgICAgICwgZW5kUG9zaXRpb24gPSBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZFxuICAgICAgLCBsZW4gICAgPSB0b0xlbmd0aCh0aGF0Lmxlbmd0aClcbiAgICAgICwgZW5kICAgID0gZW5kUG9zaXRpb24gPT09IHVuZGVmaW5lZCA/IGxlbiA6IE1hdGgubWluKHRvTGVuZ3RoKGVuZFBvc2l0aW9uKSwgbGVuKVxuICAgICAgLCBzZWFyY2ggPSBTdHJpbmcoc2VhcmNoU3RyaW5nKTtcbiAgICByZXR1cm4gJGVuZHNXaXRoXG4gICAgICA/ICRlbmRzV2l0aC5jYWxsKHRoYXQsIHNlYXJjaCwgZW5kKVxuICAgICAgOiB0aGF0LnNsaWNlKGVuZCAtIHNlYXJjaC5sZW5ndGgsIGVuZCkgPT09IHNlYXJjaDtcbiAgfVxufSk7IiwiJ3VzZSBzdHJpY3QnO1xuLy8gQi4yLjMuNiBTdHJpbmcucHJvdG90eXBlLmZpeGVkKClcbnJlcXVpcmUoJy4vX3N0cmluZy1odG1sJykoJ2ZpeGVkJywgZnVuY3Rpb24oY3JlYXRlSFRNTCl7XG4gIHJldHVybiBmdW5jdGlvbiBmaXhlZCgpe1xuICAgIHJldHVybiBjcmVhdGVIVE1MKHRoaXMsICd0dCcsICcnLCAnJyk7XG4gIH1cbn0pOyIsIid1c2Ugc3RyaWN0Jztcbi8vIEIuMi4zLjcgU3RyaW5nLnByb3RvdHlwZS5mb250Y29sb3IoY29sb3IpXG5yZXF1aXJlKCcuL19zdHJpbmctaHRtbCcpKCdmb250Y29sb3InLCBmdW5jdGlvbihjcmVhdGVIVE1MKXtcbiAgcmV0dXJuIGZ1bmN0aW9uIGZvbnRjb2xvcihjb2xvcil7XG4gICAgcmV0dXJuIGNyZWF0ZUhUTUwodGhpcywgJ2ZvbnQnLCAnY29sb3InLCBjb2xvcik7XG4gIH1cbn0pOyIsIid1c2Ugc3RyaWN0Jztcbi8vIEIuMi4zLjggU3RyaW5nLnByb3RvdHlwZS5mb250c2l6ZShzaXplKVxucmVxdWlyZSgnLi9fc3RyaW5nLWh0bWwnKSgnZm9udHNpemUnLCBmdW5jdGlvbihjcmVhdGVIVE1MKXtcbiAgcmV0dXJuIGZ1bmN0aW9uIGZvbnRzaXplKHNpemUpe1xuICAgIHJldHVybiBjcmVhdGVIVE1MKHRoaXMsICdmb250JywgJ3NpemUnLCBzaXplKTtcbiAgfVxufSk7IiwidmFyICRleHBvcnQgICAgICAgID0gcmVxdWlyZSgnLi9fZXhwb3J0JylcbiAgLCB0b0luZGV4ICAgICAgICA9IHJlcXVpcmUoJy4vX3RvLWluZGV4JylcbiAgLCBmcm9tQ2hhckNvZGUgICA9IFN0cmluZy5mcm9tQ2hhckNvZGVcbiAgLCAkZnJvbUNvZGVQb2ludCA9IFN0cmluZy5mcm9tQ29kZVBvaW50O1xuXG4vLyBsZW5ndGggc2hvdWxkIGJlIDEsIG9sZCBGRiBwcm9ibGVtXG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICghISRmcm9tQ29kZVBvaW50ICYmICRmcm9tQ29kZVBvaW50Lmxlbmd0aCAhPSAxKSwgJ1N0cmluZycsIHtcbiAgLy8gMjEuMS4yLjIgU3RyaW5nLmZyb21Db2RlUG9pbnQoLi4uY29kZVBvaW50cylcbiAgZnJvbUNvZGVQb2ludDogZnVuY3Rpb24gZnJvbUNvZGVQb2ludCh4KXsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bnVzZWQtdmFyc1xuICAgIHZhciByZXMgID0gW11cbiAgICAgICwgYUxlbiA9IGFyZ3VtZW50cy5sZW5ndGhcbiAgICAgICwgaSAgICA9IDBcbiAgICAgICwgY29kZTtcbiAgICB3aGlsZShhTGVuID4gaSl7XG4gICAgICBjb2RlID0gK2FyZ3VtZW50c1tpKytdO1xuICAgICAgaWYodG9JbmRleChjb2RlLCAweDEwZmZmZikgIT09IGNvZGUpdGhyb3cgUmFuZ2VFcnJvcihjb2RlICsgJyBpcyBub3QgYSB2YWxpZCBjb2RlIHBvaW50Jyk7XG4gICAgICByZXMucHVzaChjb2RlIDwgMHgxMDAwMFxuICAgICAgICA/IGZyb21DaGFyQ29kZShjb2RlKVxuICAgICAgICA6IGZyb21DaGFyQ29kZSgoKGNvZGUgLT0gMHgxMDAwMCkgPj4gMTApICsgMHhkODAwLCBjb2RlICUgMHg0MDAgKyAweGRjMDApXG4gICAgICApO1xuICAgIH0gcmV0dXJuIHJlcy5qb2luKCcnKTtcbiAgfVxufSk7IiwiLy8gMjEuMS4zLjcgU3RyaW5nLnByb3RvdHlwZS5pbmNsdWRlcyhzZWFyY2hTdHJpbmcsIHBvc2l0aW9uID0gMClcbid1c2Ugc3RyaWN0JztcbnZhciAkZXhwb3J0ICA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpXG4gICwgY29udGV4dCAgPSByZXF1aXJlKCcuL19zdHJpbmctY29udGV4dCcpXG4gICwgSU5DTFVERVMgPSAnaW5jbHVkZXMnO1xuXG4kZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuRiAqIHJlcXVpcmUoJy4vX2ZhaWxzLWlzLXJlZ2V4cCcpKElOQ0xVREVTKSwgJ1N0cmluZycsIHtcbiAgaW5jbHVkZXM6IGZ1bmN0aW9uIGluY2x1ZGVzKHNlYXJjaFN0cmluZyAvKiwgcG9zaXRpb24gPSAwICovKXtcbiAgICByZXR1cm4gISF+Y29udGV4dCh0aGlzLCBzZWFyY2hTdHJpbmcsIElOQ0xVREVTKVxuICAgICAgLmluZGV4T2Yoc2VhcmNoU3RyaW5nLCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCk7XG4gIH1cbn0pOyIsIid1c2Ugc3RyaWN0Jztcbi8vIEIuMi4zLjkgU3RyaW5nLnByb3RvdHlwZS5pdGFsaWNzKClcbnJlcXVpcmUoJy4vX3N0cmluZy1odG1sJykoJ2l0YWxpY3MnLCBmdW5jdGlvbihjcmVhdGVIVE1MKXtcbiAgcmV0dXJuIGZ1bmN0aW9uIGl0YWxpY3MoKXtcbiAgICByZXR1cm4gY3JlYXRlSFRNTCh0aGlzLCAnaScsICcnLCAnJyk7XG4gIH1cbn0pOyIsIid1c2Ugc3RyaWN0JztcbnZhciAkYXQgID0gcmVxdWlyZSgnLi9fc3RyaW5nLWF0JykodHJ1ZSk7XG5cbi8vIDIxLjEuMy4yNyBTdHJpbmcucHJvdG90eXBlW0BAaXRlcmF0b3JdKClcbnJlcXVpcmUoJy4vX2l0ZXItZGVmaW5lJykoU3RyaW5nLCAnU3RyaW5nJywgZnVuY3Rpb24oaXRlcmF0ZWQpe1xuICB0aGlzLl90ID0gU3RyaW5nKGl0ZXJhdGVkKTsgLy8gdGFyZ2V0XG4gIHRoaXMuX2kgPSAwOyAgICAgICAgICAgICAgICAvLyBuZXh0IGluZGV4XG4vLyAyMS4xLjUuMi4xICVTdHJpbmdJdGVyYXRvclByb3RvdHlwZSUubmV4dCgpXG59LCBmdW5jdGlvbigpe1xuICB2YXIgTyAgICAgPSB0aGlzLl90XG4gICAgLCBpbmRleCA9IHRoaXMuX2lcbiAgICAsIHBvaW50O1xuICBpZihpbmRleCA+PSBPLmxlbmd0aClyZXR1cm4ge3ZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWV9O1xuICBwb2ludCA9ICRhdChPLCBpbmRleCk7XG4gIHRoaXMuX2kgKz0gcG9pbnQubGVuZ3RoO1xuICByZXR1cm4ge3ZhbHVlOiBwb2ludCwgZG9uZTogZmFsc2V9O1xufSk7IiwiJ3VzZSBzdHJpY3QnO1xuLy8gQi4yLjMuMTAgU3RyaW5nLnByb3RvdHlwZS5saW5rKHVybClcbnJlcXVpcmUoJy4vX3N0cmluZy1odG1sJykoJ2xpbmsnLCBmdW5jdGlvbihjcmVhdGVIVE1MKXtcbiAgcmV0dXJuIGZ1bmN0aW9uIGxpbmsodXJsKXtcbiAgICByZXR1cm4gY3JlYXRlSFRNTCh0aGlzLCAnYScsICdocmVmJywgdXJsKTtcbiAgfVxufSk7IiwidmFyICRleHBvcnQgICA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpXG4gICwgdG9JT2JqZWN0ID0gcmVxdWlyZSgnLi9fdG8taW9iamVjdCcpXG4gICwgdG9MZW5ndGggID0gcmVxdWlyZSgnLi9fdG8tbGVuZ3RoJyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnU3RyaW5nJywge1xuICAvLyAyMS4xLjIuNCBTdHJpbmcucmF3KGNhbGxTaXRlLCAuLi5zdWJzdGl0dXRpb25zKVxuICByYXc6IGZ1bmN0aW9uIHJhdyhjYWxsU2l0ZSl7XG4gICAgdmFyIHRwbCAgPSB0b0lPYmplY3QoY2FsbFNpdGUucmF3KVxuICAgICAgLCBsZW4gID0gdG9MZW5ndGgodHBsLmxlbmd0aClcbiAgICAgICwgYUxlbiA9IGFyZ3VtZW50cy5sZW5ndGhcbiAgICAgICwgcmVzICA9IFtdXG4gICAgICAsIGkgICAgPSAwO1xuICAgIHdoaWxlKGxlbiA+IGkpe1xuICAgICAgcmVzLnB1c2goU3RyaW5nKHRwbFtpKytdKSk7XG4gICAgICBpZihpIDwgYUxlbilyZXMucHVzaChTdHJpbmcoYXJndW1lbnRzW2ldKSk7XG4gICAgfSByZXR1cm4gcmVzLmpvaW4oJycpO1xuICB9XG59KTsiLCJ2YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUCwgJ1N0cmluZycsIHtcbiAgLy8gMjEuMS4zLjEzIFN0cmluZy5wcm90b3R5cGUucmVwZWF0KGNvdW50KVxuICByZXBlYXQ6IHJlcXVpcmUoJy4vX3N0cmluZy1yZXBlYXQnKVxufSk7IiwiJ3VzZSBzdHJpY3QnO1xuLy8gQi4yLjMuMTEgU3RyaW5nLnByb3RvdHlwZS5zbWFsbCgpXG5yZXF1aXJlKCcuL19zdHJpbmctaHRtbCcpKCdzbWFsbCcsIGZ1bmN0aW9uKGNyZWF0ZUhUTUwpe1xuICByZXR1cm4gZnVuY3Rpb24gc21hbGwoKXtcbiAgICByZXR1cm4gY3JlYXRlSFRNTCh0aGlzLCAnc21hbGwnLCAnJywgJycpO1xuICB9XG59KTsiLCIvLyAyMS4xLjMuMTggU3RyaW5nLnByb3RvdHlwZS5zdGFydHNXaXRoKHNlYXJjaFN0cmluZyBbLCBwb3NpdGlvbiBdKVxuJ3VzZSBzdHJpY3QnO1xudmFyICRleHBvcnQgICAgID0gcmVxdWlyZSgnLi9fZXhwb3J0JylcbiAgLCB0b0xlbmd0aCAgICA9IHJlcXVpcmUoJy4vX3RvLWxlbmd0aCcpXG4gICwgY29udGV4dCAgICAgPSByZXF1aXJlKCcuL19zdHJpbmctY29udGV4dCcpXG4gICwgU1RBUlRTX1dJVEggPSAnc3RhcnRzV2l0aCdcbiAgLCAkc3RhcnRzV2l0aCA9ICcnW1NUQVJUU19XSVRIXTtcblxuJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LkYgKiByZXF1aXJlKCcuL19mYWlscy1pcy1yZWdleHAnKShTVEFSVFNfV0lUSCksICdTdHJpbmcnLCB7XG4gIHN0YXJ0c1dpdGg6IGZ1bmN0aW9uIHN0YXJ0c1dpdGgoc2VhcmNoU3RyaW5nIC8qLCBwb3NpdGlvbiA9IDAgKi8pe1xuICAgIHZhciB0aGF0ICAgPSBjb250ZXh0KHRoaXMsIHNlYXJjaFN0cmluZywgU1RBUlRTX1dJVEgpXG4gICAgICAsIGluZGV4ICA9IHRvTGVuZ3RoKE1hdGgubWluKGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkLCB0aGF0Lmxlbmd0aCkpXG4gICAgICAsIHNlYXJjaCA9IFN0cmluZyhzZWFyY2hTdHJpbmcpO1xuICAgIHJldHVybiAkc3RhcnRzV2l0aFxuICAgICAgPyAkc3RhcnRzV2l0aC5jYWxsKHRoYXQsIHNlYXJjaCwgaW5kZXgpXG4gICAgICA6IHRoYXQuc2xpY2UoaW5kZXgsIGluZGV4ICsgc2VhcmNoLmxlbmd0aCkgPT09IHNlYXJjaDtcbiAgfVxufSk7IiwiJ3VzZSBzdHJpY3QnO1xuLy8gQi4yLjMuMTIgU3RyaW5nLnByb3RvdHlwZS5zdHJpa2UoKVxucmVxdWlyZSgnLi9fc3RyaW5nLWh0bWwnKSgnc3RyaWtlJywgZnVuY3Rpb24oY3JlYXRlSFRNTCl7XG4gIHJldHVybiBmdW5jdGlvbiBzdHJpa2UoKXtcbiAgICByZXR1cm4gY3JlYXRlSFRNTCh0aGlzLCAnc3RyaWtlJywgJycsICcnKTtcbiAgfVxufSk7IiwiJ3VzZSBzdHJpY3QnO1xuLy8gQi4yLjMuMTMgU3RyaW5nLnByb3RvdHlwZS5zdWIoKVxucmVxdWlyZSgnLi9fc3RyaW5nLWh0bWwnKSgnc3ViJywgZnVuY3Rpb24oY3JlYXRlSFRNTCl7XG4gIHJldHVybiBmdW5jdGlvbiBzdWIoKXtcbiAgICByZXR1cm4gY3JlYXRlSFRNTCh0aGlzLCAnc3ViJywgJycsICcnKTtcbiAgfVxufSk7IiwiJ3VzZSBzdHJpY3QnO1xuLy8gQi4yLjMuMTQgU3RyaW5nLnByb3RvdHlwZS5zdXAoKVxucmVxdWlyZSgnLi9fc3RyaW5nLWh0bWwnKSgnc3VwJywgZnVuY3Rpb24oY3JlYXRlSFRNTCl7XG4gIHJldHVybiBmdW5jdGlvbiBzdXAoKXtcbiAgICByZXR1cm4gY3JlYXRlSFRNTCh0aGlzLCAnc3VwJywgJycsICcnKTtcbiAgfVxufSk7IiwiJ3VzZSBzdHJpY3QnO1xuLy8gMjEuMS4zLjI1IFN0cmluZy5wcm90b3R5cGUudHJpbSgpXG5yZXF1aXJlKCcuL19zdHJpbmctdHJpbScpKCd0cmltJywgZnVuY3Rpb24oJHRyaW0pe1xuICByZXR1cm4gZnVuY3Rpb24gdHJpbSgpe1xuICAgIHJldHVybiAkdHJpbSh0aGlzLCAzKTtcbiAgfTtcbn0pOyIsIid1c2Ugc3RyaWN0Jztcbi8vIEVDTUFTY3JpcHQgNiBzeW1ib2xzIHNoaW1cbnZhciBnbG9iYWwgICAgICAgICA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpXG4gICwgaGFzICAgICAgICAgICAgPSByZXF1aXJlKCcuL19oYXMnKVxuICAsIERFU0NSSVBUT1JTICAgID0gcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKVxuICAsICRleHBvcnQgICAgICAgID0gcmVxdWlyZSgnLi9fZXhwb3J0JylcbiAgLCByZWRlZmluZSAgICAgICA9IHJlcXVpcmUoJy4vX3JlZGVmaW5lJylcbiAgLCBNRVRBICAgICAgICAgICA9IHJlcXVpcmUoJy4vX21ldGEnKS5LRVlcbiAgLCAkZmFpbHMgICAgICAgICA9IHJlcXVpcmUoJy4vX2ZhaWxzJylcbiAgLCBzaGFyZWQgICAgICAgICA9IHJlcXVpcmUoJy4vX3NoYXJlZCcpXG4gICwgc2V0VG9TdHJpbmdUYWcgPSByZXF1aXJlKCcuL19zZXQtdG8tc3RyaW5nLXRhZycpXG4gICwgdWlkICAgICAgICAgICAgPSByZXF1aXJlKCcuL191aWQnKVxuICAsIHdrcyAgICAgICAgICAgID0gcmVxdWlyZSgnLi9fd2tzJylcbiAgLCB3a3NFeHQgICAgICAgICA9IHJlcXVpcmUoJy4vX3drcy1leHQnKVxuICAsIHdrc0RlZmluZSAgICAgID0gcmVxdWlyZSgnLi9fd2tzLWRlZmluZScpXG4gICwga2V5T2YgICAgICAgICAgPSByZXF1aXJlKCcuL19rZXlvZicpXG4gICwgZW51bUtleXMgICAgICAgPSByZXF1aXJlKCcuL19lbnVtLWtleXMnKVxuICAsIGlzQXJyYXkgICAgICAgID0gcmVxdWlyZSgnLi9faXMtYXJyYXknKVxuICAsIGFuT2JqZWN0ICAgICAgID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0JylcbiAgLCB0b0lPYmplY3QgICAgICA9IHJlcXVpcmUoJy4vX3RvLWlvYmplY3QnKVxuICAsIHRvUHJpbWl0aXZlICAgID0gcmVxdWlyZSgnLi9fdG8tcHJpbWl0aXZlJylcbiAgLCBjcmVhdGVEZXNjICAgICA9IHJlcXVpcmUoJy4vX3Byb3BlcnR5LWRlc2MnKVxuICAsIF9jcmVhdGUgICAgICAgID0gcmVxdWlyZSgnLi9fb2JqZWN0LWNyZWF0ZScpXG4gICwgZ09QTkV4dCAgICAgICAgPSByZXF1aXJlKCcuL19vYmplY3QtZ29wbi1leHQnKVxuICAsICRHT1BEICAgICAgICAgID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdvcGQnKVxuICAsICREUCAgICAgICAgICAgID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwJylcbiAgLCAka2V5cyAgICAgICAgICA9IHJlcXVpcmUoJy4vX29iamVjdC1rZXlzJylcbiAgLCBnT1BEICAgICAgICAgICA9ICRHT1BELmZcbiAgLCBkUCAgICAgICAgICAgICA9ICREUC5mXG4gICwgZ09QTiAgICAgICAgICAgPSBnT1BORXh0LmZcbiAgLCAkU3ltYm9sICAgICAgICA9IGdsb2JhbC5TeW1ib2xcbiAgLCAkSlNPTiAgICAgICAgICA9IGdsb2JhbC5KU09OXG4gICwgX3N0cmluZ2lmeSAgICAgPSAkSlNPTiAmJiAkSlNPTi5zdHJpbmdpZnlcbiAgLCBQUk9UT1RZUEUgICAgICA9ICdwcm90b3R5cGUnXG4gICwgSElEREVOICAgICAgICAgPSB3a3MoJ19oaWRkZW4nKVxuICAsIFRPX1BSSU1JVElWRSAgID0gd2tzKCd0b1ByaW1pdGl2ZScpXG4gICwgaXNFbnVtICAgICAgICAgPSB7fS5wcm9wZXJ0eUlzRW51bWVyYWJsZVxuICAsIFN5bWJvbFJlZ2lzdHJ5ID0gc2hhcmVkKCdzeW1ib2wtcmVnaXN0cnknKVxuICAsIEFsbFN5bWJvbHMgICAgID0gc2hhcmVkKCdzeW1ib2xzJylcbiAgLCBPUFN5bWJvbHMgICAgICA9IHNoYXJlZCgnb3Atc3ltYm9scycpXG4gICwgT2JqZWN0UHJvdG8gICAgPSBPYmplY3RbUFJPVE9UWVBFXVxuICAsIFVTRV9OQVRJVkUgICAgID0gdHlwZW9mICRTeW1ib2wgPT0gJ2Z1bmN0aW9uJ1xuICAsIFFPYmplY3QgICAgICAgID0gZ2xvYmFsLlFPYmplY3Q7XG4vLyBEb24ndCB1c2Ugc2V0dGVycyBpbiBRdCBTY3JpcHQsIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy8xNzNcbnZhciBzZXR0ZXIgPSAhUU9iamVjdCB8fCAhUU9iamVjdFtQUk9UT1RZUEVdIHx8ICFRT2JqZWN0W1BST1RPVFlQRV0uZmluZENoaWxkO1xuXG4vLyBmYWxsYmFjayBmb3Igb2xkIEFuZHJvaWQsIGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvdjgvaXNzdWVzL2RldGFpbD9pZD02ODdcbnZhciBzZXRTeW1ib2xEZXNjID0gREVTQ1JJUFRPUlMgJiYgJGZhaWxzKGZ1bmN0aW9uKCl7XG4gIHJldHVybiBfY3JlYXRlKGRQKHt9LCAnYScsIHtcbiAgICBnZXQ6IGZ1bmN0aW9uKCl7IHJldHVybiBkUCh0aGlzLCAnYScsIHt2YWx1ZTogN30pLmE7IH1cbiAgfSkpLmEgIT0gNztcbn0pID8gZnVuY3Rpb24oaXQsIGtleSwgRCl7XG4gIHZhciBwcm90b0Rlc2MgPSBnT1BEKE9iamVjdFByb3RvLCBrZXkpO1xuICBpZihwcm90b0Rlc2MpZGVsZXRlIE9iamVjdFByb3RvW2tleV07XG4gIGRQKGl0LCBrZXksIEQpO1xuICBpZihwcm90b0Rlc2MgJiYgaXQgIT09IE9iamVjdFByb3RvKWRQKE9iamVjdFByb3RvLCBrZXksIHByb3RvRGVzYyk7XG59IDogZFA7XG5cbnZhciB3cmFwID0gZnVuY3Rpb24odGFnKXtcbiAgdmFyIHN5bSA9IEFsbFN5bWJvbHNbdGFnXSA9IF9jcmVhdGUoJFN5bWJvbFtQUk9UT1RZUEVdKTtcbiAgc3ltLl9rID0gdGFnO1xuICByZXR1cm4gc3ltO1xufTtcblxudmFyIGlzU3ltYm9sID0gVVNFX05BVElWRSAmJiB0eXBlb2YgJFN5bWJvbC5pdGVyYXRvciA9PSAnc3ltYm9sJyA/IGZ1bmN0aW9uKGl0KXtcbiAgcmV0dXJuIHR5cGVvZiBpdCA9PSAnc3ltYm9sJztcbn0gOiBmdW5jdGlvbihpdCl7XG4gIHJldHVybiBpdCBpbnN0YW5jZW9mICRTeW1ib2w7XG59O1xuXG52YXIgJGRlZmluZVByb3BlcnR5ID0gZnVuY3Rpb24gZGVmaW5lUHJvcGVydHkoaXQsIGtleSwgRCl7XG4gIGlmKGl0ID09PSBPYmplY3RQcm90bykkZGVmaW5lUHJvcGVydHkoT1BTeW1ib2xzLCBrZXksIEQpO1xuICBhbk9iamVjdChpdCk7XG4gIGtleSA9IHRvUHJpbWl0aXZlKGtleSwgdHJ1ZSk7XG4gIGFuT2JqZWN0KEQpO1xuICBpZihoYXMoQWxsU3ltYm9scywga2V5KSl7XG4gICAgaWYoIUQuZW51bWVyYWJsZSl7XG4gICAgICBpZighaGFzKGl0LCBISURERU4pKWRQKGl0LCBISURERU4sIGNyZWF0ZURlc2MoMSwge30pKTtcbiAgICAgIGl0W0hJRERFTl1ba2V5XSA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmKGhhcyhpdCwgSElEREVOKSAmJiBpdFtISURERU5dW2tleV0paXRbSElEREVOXVtrZXldID0gZmFsc2U7XG4gICAgICBEID0gX2NyZWF0ZShELCB7ZW51bWVyYWJsZTogY3JlYXRlRGVzYygwLCBmYWxzZSl9KTtcbiAgICB9IHJldHVybiBzZXRTeW1ib2xEZXNjKGl0LCBrZXksIEQpO1xuICB9IHJldHVybiBkUChpdCwga2V5LCBEKTtcbn07XG52YXIgJGRlZmluZVByb3BlcnRpZXMgPSBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKGl0LCBQKXtcbiAgYW5PYmplY3QoaXQpO1xuICB2YXIga2V5cyA9IGVudW1LZXlzKFAgPSB0b0lPYmplY3QoUCkpXG4gICAgLCBpICAgID0gMFxuICAgICwgbCA9IGtleXMubGVuZ3RoXG4gICAgLCBrZXk7XG4gIHdoaWxlKGwgPiBpKSRkZWZpbmVQcm9wZXJ0eShpdCwga2V5ID0ga2V5c1tpKytdLCBQW2tleV0pO1xuICByZXR1cm4gaXQ7XG59O1xudmFyICRjcmVhdGUgPSBmdW5jdGlvbiBjcmVhdGUoaXQsIFApe1xuICByZXR1cm4gUCA9PT0gdW5kZWZpbmVkID8gX2NyZWF0ZShpdCkgOiAkZGVmaW5lUHJvcGVydGllcyhfY3JlYXRlKGl0KSwgUCk7XG59O1xudmFyICRwcm9wZXJ0eUlzRW51bWVyYWJsZSA9IGZ1bmN0aW9uIHByb3BlcnR5SXNFbnVtZXJhYmxlKGtleSl7XG4gIHZhciBFID0gaXNFbnVtLmNhbGwodGhpcywga2V5ID0gdG9QcmltaXRpdmUoa2V5LCB0cnVlKSk7XG4gIGlmKHRoaXMgPT09IE9iamVjdFByb3RvICYmIGhhcyhBbGxTeW1ib2xzLCBrZXkpICYmICFoYXMoT1BTeW1ib2xzLCBrZXkpKXJldHVybiBmYWxzZTtcbiAgcmV0dXJuIEUgfHwgIWhhcyh0aGlzLCBrZXkpIHx8ICFoYXMoQWxsU3ltYm9scywga2V5KSB8fCBoYXModGhpcywgSElEREVOKSAmJiB0aGlzW0hJRERFTl1ba2V5XSA/IEUgOiB0cnVlO1xufTtcbnZhciAkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGl0LCBrZXkpe1xuICBpdCAgPSB0b0lPYmplY3QoaXQpO1xuICBrZXkgPSB0b1ByaW1pdGl2ZShrZXksIHRydWUpO1xuICBpZihpdCA9PT0gT2JqZWN0UHJvdG8gJiYgaGFzKEFsbFN5bWJvbHMsIGtleSkgJiYgIWhhcyhPUFN5bWJvbHMsIGtleSkpcmV0dXJuO1xuICB2YXIgRCA9IGdPUEQoaXQsIGtleSk7XG4gIGlmKEQgJiYgaGFzKEFsbFN5bWJvbHMsIGtleSkgJiYgIShoYXMoaXQsIEhJRERFTikgJiYgaXRbSElEREVOXVtrZXldKSlELmVudW1lcmFibGUgPSB0cnVlO1xuICByZXR1cm4gRDtcbn07XG52YXIgJGdldE93blByb3BlcnR5TmFtZXMgPSBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eU5hbWVzKGl0KXtcbiAgdmFyIG5hbWVzICA9IGdPUE4odG9JT2JqZWN0KGl0KSlcbiAgICAsIHJlc3VsdCA9IFtdXG4gICAgLCBpICAgICAgPSAwXG4gICAgLCBrZXk7XG4gIHdoaWxlKG5hbWVzLmxlbmd0aCA+IGkpe1xuICAgIGlmKCFoYXMoQWxsU3ltYm9scywga2V5ID0gbmFtZXNbaSsrXSkgJiYga2V5ICE9IEhJRERFTiAmJiBrZXkgIT0gTUVUQSlyZXN1bHQucHVzaChrZXkpO1xuICB9IHJldHVybiByZXN1bHQ7XG59O1xudmFyICRnZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPSBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMoaXQpe1xuICB2YXIgSVNfT1AgID0gaXQgPT09IE9iamVjdFByb3RvXG4gICAgLCBuYW1lcyAgPSBnT1BOKElTX09QID8gT1BTeW1ib2xzIDogdG9JT2JqZWN0KGl0KSlcbiAgICAsIHJlc3VsdCA9IFtdXG4gICAgLCBpICAgICAgPSAwXG4gICAgLCBrZXk7XG4gIHdoaWxlKG5hbWVzLmxlbmd0aCA+IGkpe1xuICAgIGlmKGhhcyhBbGxTeW1ib2xzLCBrZXkgPSBuYW1lc1tpKytdKSAmJiAoSVNfT1AgPyBoYXMoT2JqZWN0UHJvdG8sIGtleSkgOiB0cnVlKSlyZXN1bHQucHVzaChBbGxTeW1ib2xzW2tleV0pO1xuICB9IHJldHVybiByZXN1bHQ7XG59O1xuXG4vLyAxOS40LjEuMSBTeW1ib2woW2Rlc2NyaXB0aW9uXSlcbmlmKCFVU0VfTkFUSVZFKXtcbiAgJFN5bWJvbCA9IGZ1bmN0aW9uIFN5bWJvbCgpe1xuICAgIGlmKHRoaXMgaW5zdGFuY2VvZiAkU3ltYm9sKXRocm93IFR5cGVFcnJvcignU3ltYm9sIGlzIG5vdCBhIGNvbnN0cnVjdG9yIScpO1xuICAgIHZhciB0YWcgPSB1aWQoYXJndW1lbnRzLmxlbmd0aCA+IDAgPyBhcmd1bWVudHNbMF0gOiB1bmRlZmluZWQpO1xuICAgIHZhciAkc2V0ID0gZnVuY3Rpb24odmFsdWUpe1xuICAgICAgaWYodGhpcyA9PT0gT2JqZWN0UHJvdG8pJHNldC5jYWxsKE9QU3ltYm9scywgdmFsdWUpO1xuICAgICAgaWYoaGFzKHRoaXMsIEhJRERFTikgJiYgaGFzKHRoaXNbSElEREVOXSwgdGFnKSl0aGlzW0hJRERFTl1bdGFnXSA9IGZhbHNlO1xuICAgICAgc2V0U3ltYm9sRGVzYyh0aGlzLCB0YWcsIGNyZWF0ZURlc2MoMSwgdmFsdWUpKTtcbiAgICB9O1xuICAgIGlmKERFU0NSSVBUT1JTICYmIHNldHRlcilzZXRTeW1ib2xEZXNjKE9iamVjdFByb3RvLCB0YWcsIHtjb25maWd1cmFibGU6IHRydWUsIHNldDogJHNldH0pO1xuICAgIHJldHVybiB3cmFwKHRhZyk7XG4gIH07XG4gIHJlZGVmaW5lKCRTeW1ib2xbUFJPVE9UWVBFXSwgJ3RvU3RyaW5nJywgZnVuY3Rpb24gdG9TdHJpbmcoKXtcbiAgICByZXR1cm4gdGhpcy5faztcbiAgfSk7XG5cbiAgJEdPUEQuZiA9ICRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG4gICREUC5mICAgPSAkZGVmaW5lUHJvcGVydHk7XG4gIHJlcXVpcmUoJy4vX29iamVjdC1nb3BuJykuZiA9IGdPUE5FeHQuZiA9ICRnZXRPd25Qcm9wZXJ0eU5hbWVzO1xuICByZXF1aXJlKCcuL19vYmplY3QtcGllJykuZiAgPSAkcHJvcGVydHlJc0VudW1lcmFibGU7XG4gIHJlcXVpcmUoJy4vX29iamVjdC1nb3BzJykuZiA9ICRnZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG5cbiAgaWYoREVTQ1JJUFRPUlMgJiYgIXJlcXVpcmUoJy4vX2xpYnJhcnknKSl7XG4gICAgcmVkZWZpbmUoT2JqZWN0UHJvdG8sICdwcm9wZXJ0eUlzRW51bWVyYWJsZScsICRwcm9wZXJ0eUlzRW51bWVyYWJsZSwgdHJ1ZSk7XG4gIH1cblxuICB3a3NFeHQuZiA9IGZ1bmN0aW9uKG5hbWUpe1xuICAgIHJldHVybiB3cmFwKHdrcyhuYW1lKSk7XG4gIH1cbn1cblxuJGV4cG9ydCgkZXhwb3J0LkcgKyAkZXhwb3J0LlcgKyAkZXhwb3J0LkYgKiAhVVNFX05BVElWRSwge1N5bWJvbDogJFN5bWJvbH0pO1xuXG5mb3IodmFyIHN5bWJvbHMgPSAoXG4gIC8vIDE5LjQuMi4yLCAxOS40LjIuMywgMTkuNC4yLjQsIDE5LjQuMi42LCAxOS40LjIuOCwgMTkuNC4yLjksIDE5LjQuMi4xMCwgMTkuNC4yLjExLCAxOS40LjIuMTIsIDE5LjQuMi4xMywgMTkuNC4yLjE0XG4gICdoYXNJbnN0YW5jZSxpc0NvbmNhdFNwcmVhZGFibGUsaXRlcmF0b3IsbWF0Y2gscmVwbGFjZSxzZWFyY2gsc3BlY2llcyxzcGxpdCx0b1ByaW1pdGl2ZSx0b1N0cmluZ1RhZyx1bnNjb3BhYmxlcydcbikuc3BsaXQoJywnKSwgaSA9IDA7IHN5bWJvbHMubGVuZ3RoID4gaTsgKXdrcyhzeW1ib2xzW2krK10pO1xuXG5mb3IodmFyIHN5bWJvbHMgPSAka2V5cyh3a3Muc3RvcmUpLCBpID0gMDsgc3ltYm9scy5sZW5ndGggPiBpOyApd2tzRGVmaW5lKHN5bWJvbHNbaSsrXSk7XG5cbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogIVVTRV9OQVRJVkUsICdTeW1ib2wnLCB7XG4gIC8vIDE5LjQuMi4xIFN5bWJvbC5mb3Ioa2V5KVxuICAnZm9yJzogZnVuY3Rpb24oa2V5KXtcbiAgICByZXR1cm4gaGFzKFN5bWJvbFJlZ2lzdHJ5LCBrZXkgKz0gJycpXG4gICAgICA/IFN5bWJvbFJlZ2lzdHJ5W2tleV1cbiAgICAgIDogU3ltYm9sUmVnaXN0cnlba2V5XSA9ICRTeW1ib2woa2V5KTtcbiAgfSxcbiAgLy8gMTkuNC4yLjUgU3ltYm9sLmtleUZvcihzeW0pXG4gIGtleUZvcjogZnVuY3Rpb24ga2V5Rm9yKGtleSl7XG4gICAgaWYoaXNTeW1ib2woa2V5KSlyZXR1cm4ga2V5T2YoU3ltYm9sUmVnaXN0cnksIGtleSk7XG4gICAgdGhyb3cgVHlwZUVycm9yKGtleSArICcgaXMgbm90IGEgc3ltYm9sIScpO1xuICB9LFxuICB1c2VTZXR0ZXI6IGZ1bmN0aW9uKCl7IHNldHRlciA9IHRydWU7IH0sXG4gIHVzZVNpbXBsZTogZnVuY3Rpb24oKXsgc2V0dGVyID0gZmFsc2U7IH1cbn0pO1xuXG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICFVU0VfTkFUSVZFLCAnT2JqZWN0Jywge1xuICAvLyAxOS4xLjIuMiBPYmplY3QuY3JlYXRlKE8gWywgUHJvcGVydGllc10pXG4gIGNyZWF0ZTogJGNyZWF0ZSxcbiAgLy8gMTkuMS4yLjQgT2JqZWN0LmRlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpXG4gIGRlZmluZVByb3BlcnR5OiAkZGVmaW5lUHJvcGVydHksXG4gIC8vIDE5LjEuMi4zIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKE8sIFByb3BlcnRpZXMpXG4gIGRlZmluZVByb3BlcnRpZXM6ICRkZWZpbmVQcm9wZXJ0aWVzLFxuICAvLyAxOS4xLjIuNiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE8sIFApXG4gIGdldE93blByb3BlcnR5RGVzY3JpcHRvcjogJGdldE93blByb3BlcnR5RGVzY3JpcHRvcixcbiAgLy8gMTkuMS4yLjcgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoTylcbiAgZ2V0T3duUHJvcGVydHlOYW1lczogJGdldE93blByb3BlcnR5TmFtZXMsXG4gIC8vIDE5LjEuMi44IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoTylcbiAgZ2V0T3duUHJvcGVydHlTeW1ib2xzOiAkZ2V0T3duUHJvcGVydHlTeW1ib2xzXG59KTtcblxuLy8gMjQuMy4yIEpTT04uc3RyaW5naWZ5KHZhbHVlIFssIHJlcGxhY2VyIFssIHNwYWNlXV0pXG4kSlNPTiAmJiAkZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICghVVNFX05BVElWRSB8fCAkZmFpbHMoZnVuY3Rpb24oKXtcbiAgdmFyIFMgPSAkU3ltYm9sKCk7XG4gIC8vIE1TIEVkZ2UgY29udmVydHMgc3ltYm9sIHZhbHVlcyB0byBKU09OIGFzIHt9XG4gIC8vIFdlYktpdCBjb252ZXJ0cyBzeW1ib2wgdmFsdWVzIHRvIEpTT04gYXMgbnVsbFxuICAvLyBWOCB0aHJvd3Mgb24gYm94ZWQgc3ltYm9sc1xuICByZXR1cm4gX3N0cmluZ2lmeShbU10pICE9ICdbbnVsbF0nIHx8IF9zdHJpbmdpZnkoe2E6IFN9KSAhPSAne30nIHx8IF9zdHJpbmdpZnkoT2JqZWN0KFMpKSAhPSAne30nO1xufSkpLCAnSlNPTicsIHtcbiAgc3RyaW5naWZ5OiBmdW5jdGlvbiBzdHJpbmdpZnkoaXQpe1xuICAgIGlmKGl0ID09PSB1bmRlZmluZWQgfHwgaXNTeW1ib2woaXQpKXJldHVybjsgLy8gSUU4IHJldHVybnMgc3RyaW5nIG9uIHVuZGVmaW5lZFxuICAgIHZhciBhcmdzID0gW2l0XVxuICAgICAgLCBpICAgID0gMVxuICAgICAgLCByZXBsYWNlciwgJHJlcGxhY2VyO1xuICAgIHdoaWxlKGFyZ3VtZW50cy5sZW5ndGggPiBpKWFyZ3MucHVzaChhcmd1bWVudHNbaSsrXSk7XG4gICAgcmVwbGFjZXIgPSBhcmdzWzFdO1xuICAgIGlmKHR5cGVvZiByZXBsYWNlciA9PSAnZnVuY3Rpb24nKSRyZXBsYWNlciA9IHJlcGxhY2VyO1xuICAgIGlmKCRyZXBsYWNlciB8fCAhaXNBcnJheShyZXBsYWNlcikpcmVwbGFjZXIgPSBmdW5jdGlvbihrZXksIHZhbHVlKXtcbiAgICAgIGlmKCRyZXBsYWNlcil2YWx1ZSA9ICRyZXBsYWNlci5jYWxsKHRoaXMsIGtleSwgdmFsdWUpO1xuICAgICAgaWYoIWlzU3ltYm9sKHZhbHVlKSlyZXR1cm4gdmFsdWU7XG4gICAgfTtcbiAgICBhcmdzWzFdID0gcmVwbGFjZXI7XG4gICAgcmV0dXJuIF9zdHJpbmdpZnkuYXBwbHkoJEpTT04sIGFyZ3MpO1xuICB9XG59KTtcblxuLy8gMTkuNC4zLjQgU3ltYm9sLnByb3RvdHlwZVtAQHRvUHJpbWl0aXZlXShoaW50KVxuJFN5bWJvbFtQUk9UT1RZUEVdW1RPX1BSSU1JVElWRV0gfHwgcmVxdWlyZSgnLi9faGlkZScpKCRTeW1ib2xbUFJPVE9UWVBFXSwgVE9fUFJJTUlUSVZFLCAkU3ltYm9sW1BST1RPVFlQRV0udmFsdWVPZik7XG4vLyAxOS40LjMuNSBTeW1ib2wucHJvdG90eXBlW0BAdG9TdHJpbmdUYWddXG5zZXRUb1N0cmluZ1RhZygkU3ltYm9sLCAnU3ltYm9sJyk7XG4vLyAyMC4yLjEuOSBNYXRoW0BAdG9TdHJpbmdUYWddXG5zZXRUb1N0cmluZ1RhZyhNYXRoLCAnTWF0aCcsIHRydWUpO1xuLy8gMjQuMy4zIEpTT05bQEB0b1N0cmluZ1RhZ11cbnNldFRvU3RyaW5nVGFnKGdsb2JhbC5KU09OLCAnSlNPTicsIHRydWUpOyIsIid1c2Ugc3RyaWN0JztcbnZhciAkZXhwb3J0ICAgICAgPSByZXF1aXJlKCcuL19leHBvcnQnKVxuICAsICR0eXBlZCAgICAgICA9IHJlcXVpcmUoJy4vX3R5cGVkJylcbiAgLCBidWZmZXIgICAgICAgPSByZXF1aXJlKCcuL190eXBlZC1idWZmZXInKVxuICAsIGFuT2JqZWN0ICAgICA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpXG4gICwgdG9JbmRleCAgICAgID0gcmVxdWlyZSgnLi9fdG8taW5kZXgnKVxuICAsIHRvTGVuZ3RoICAgICA9IHJlcXVpcmUoJy4vX3RvLWxlbmd0aCcpXG4gICwgaXNPYmplY3QgICAgID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0JylcbiAgLCBBcnJheUJ1ZmZlciAgPSByZXF1aXJlKCcuL19nbG9iYWwnKS5BcnJheUJ1ZmZlclxuICAsIHNwZWNpZXNDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4vX3NwZWNpZXMtY29uc3RydWN0b3InKVxuICAsICRBcnJheUJ1ZmZlciA9IGJ1ZmZlci5BcnJheUJ1ZmZlclxuICAsICREYXRhVmlldyAgICA9IGJ1ZmZlci5EYXRhVmlld1xuICAsICRpc1ZpZXcgICAgICA9ICR0eXBlZC5BQlYgJiYgQXJyYXlCdWZmZXIuaXNWaWV3XG4gICwgJHNsaWNlICAgICAgID0gJEFycmF5QnVmZmVyLnByb3RvdHlwZS5zbGljZVxuICAsIFZJRVcgICAgICAgICA9ICR0eXBlZC5WSUVXXG4gICwgQVJSQVlfQlVGRkVSID0gJ0FycmF5QnVmZmVyJztcblxuJGV4cG9ydCgkZXhwb3J0LkcgKyAkZXhwb3J0LlcgKyAkZXhwb3J0LkYgKiAoQXJyYXlCdWZmZXIgIT09ICRBcnJheUJ1ZmZlciksIHtBcnJheUJ1ZmZlcjogJEFycmF5QnVmZmVyfSk7XG5cbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GICogISR0eXBlZC5DT05TVFIsIEFSUkFZX0JVRkZFUiwge1xuICAvLyAyNC4xLjMuMSBBcnJheUJ1ZmZlci5pc1ZpZXcoYXJnKVxuICBpc1ZpZXc6IGZ1bmN0aW9uIGlzVmlldyhpdCl7XG4gICAgcmV0dXJuICRpc1ZpZXcgJiYgJGlzVmlldyhpdCkgfHwgaXNPYmplY3QoaXQpICYmIFZJRVcgaW4gaXQ7XG4gIH1cbn0pO1xuXG4kZXhwb3J0KCRleHBvcnQuUCArICRleHBvcnQuVSArICRleHBvcnQuRiAqIHJlcXVpcmUoJy4vX2ZhaWxzJykoZnVuY3Rpb24oKXtcbiAgcmV0dXJuICFuZXcgJEFycmF5QnVmZmVyKDIpLnNsaWNlKDEsIHVuZGVmaW5lZCkuYnl0ZUxlbmd0aDtcbn0pLCBBUlJBWV9CVUZGRVIsIHtcbiAgLy8gMjQuMS40LjMgQXJyYXlCdWZmZXIucHJvdG90eXBlLnNsaWNlKHN0YXJ0LCBlbmQpXG4gIHNsaWNlOiBmdW5jdGlvbiBzbGljZShzdGFydCwgZW5kKXtcbiAgICBpZigkc2xpY2UgIT09IHVuZGVmaW5lZCAmJiBlbmQgPT09IHVuZGVmaW5lZClyZXR1cm4gJHNsaWNlLmNhbGwoYW5PYmplY3QodGhpcyksIHN0YXJ0KTsgLy8gRkYgZml4XG4gICAgdmFyIGxlbiAgICA9IGFuT2JqZWN0KHRoaXMpLmJ5dGVMZW5ndGhcbiAgICAgICwgZmlyc3QgID0gdG9JbmRleChzdGFydCwgbGVuKVxuICAgICAgLCBmaW5hbCAgPSB0b0luZGV4KGVuZCA9PT0gdW5kZWZpbmVkID8gbGVuIDogZW5kLCBsZW4pXG4gICAgICAsIHJlc3VsdCA9IG5ldyAoc3BlY2llc0NvbnN0cnVjdG9yKHRoaXMsICRBcnJheUJ1ZmZlcikpKHRvTGVuZ3RoKGZpbmFsIC0gZmlyc3QpKVxuICAgICAgLCB2aWV3UyAgPSBuZXcgJERhdGFWaWV3KHRoaXMpXG4gICAgICAsIHZpZXdUICA9IG5ldyAkRGF0YVZpZXcocmVzdWx0KVxuICAgICAgLCBpbmRleCAgPSAwO1xuICAgIHdoaWxlKGZpcnN0IDwgZmluYWwpe1xuICAgICAgdmlld1Quc2V0VWludDgoaW5kZXgrKywgdmlld1MuZ2V0VWludDgoZmlyc3QrKykpO1xuICAgIH0gcmV0dXJuIHJlc3VsdDtcbiAgfVxufSk7XG5cbnJlcXVpcmUoJy4vX3NldC1zcGVjaWVzJykoQVJSQVlfQlVGRkVSKTsiLCJ2YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuJGV4cG9ydCgkZXhwb3J0LkcgKyAkZXhwb3J0LlcgKyAkZXhwb3J0LkYgKiAhcmVxdWlyZSgnLi9fdHlwZWQnKS5BQlYsIHtcbiAgRGF0YVZpZXc6IHJlcXVpcmUoJy4vX3R5cGVkLWJ1ZmZlcicpLkRhdGFWaWV3XG59KTsiLCJyZXF1aXJlKCcuL190eXBlZC1hcnJheScpKCdGbG9hdDMyJywgNCwgZnVuY3Rpb24oaW5pdCl7XG4gIHJldHVybiBmdW5jdGlvbiBGbG9hdDMyQXJyYXkoZGF0YSwgYnl0ZU9mZnNldCwgbGVuZ3RoKXtcbiAgICByZXR1cm4gaW5pdCh0aGlzLCBkYXRhLCBieXRlT2Zmc2V0LCBsZW5ndGgpO1xuICB9O1xufSk7IiwicmVxdWlyZSgnLi9fdHlwZWQtYXJyYXknKSgnRmxvYXQ2NCcsIDgsIGZ1bmN0aW9uKGluaXQpe1xuICByZXR1cm4gZnVuY3Rpb24gRmxvYXQ2NEFycmF5KGRhdGEsIGJ5dGVPZmZzZXQsIGxlbmd0aCl7XG4gICAgcmV0dXJuIGluaXQodGhpcywgZGF0YSwgYnl0ZU9mZnNldCwgbGVuZ3RoKTtcbiAgfTtcbn0pOyIsInJlcXVpcmUoJy4vX3R5cGVkLWFycmF5JykoJ0ludDE2JywgMiwgZnVuY3Rpb24oaW5pdCl7XG4gIHJldHVybiBmdW5jdGlvbiBJbnQxNkFycmF5KGRhdGEsIGJ5dGVPZmZzZXQsIGxlbmd0aCl7XG4gICAgcmV0dXJuIGluaXQodGhpcywgZGF0YSwgYnl0ZU9mZnNldCwgbGVuZ3RoKTtcbiAgfTtcbn0pOyIsInJlcXVpcmUoJy4vX3R5cGVkLWFycmF5JykoJ0ludDMyJywgNCwgZnVuY3Rpb24oaW5pdCl7XG4gIHJldHVybiBmdW5jdGlvbiBJbnQzMkFycmF5KGRhdGEsIGJ5dGVPZmZzZXQsIGxlbmd0aCl7XG4gICAgcmV0dXJuIGluaXQodGhpcywgZGF0YSwgYnl0ZU9mZnNldCwgbGVuZ3RoKTtcbiAgfTtcbn0pOyIsInJlcXVpcmUoJy4vX3R5cGVkLWFycmF5JykoJ0ludDgnLCAxLCBmdW5jdGlvbihpbml0KXtcbiAgcmV0dXJuIGZ1bmN0aW9uIEludDhBcnJheShkYXRhLCBieXRlT2Zmc2V0LCBsZW5ndGgpe1xuICAgIHJldHVybiBpbml0KHRoaXMsIGRhdGEsIGJ5dGVPZmZzZXQsIGxlbmd0aCk7XG4gIH07XG59KTsiLCJyZXF1aXJlKCcuL190eXBlZC1hcnJheScpKCdVaW50MTYnLCAyLCBmdW5jdGlvbihpbml0KXtcbiAgcmV0dXJuIGZ1bmN0aW9uIFVpbnQxNkFycmF5KGRhdGEsIGJ5dGVPZmZzZXQsIGxlbmd0aCl7XG4gICAgcmV0dXJuIGluaXQodGhpcywgZGF0YSwgYnl0ZU9mZnNldCwgbGVuZ3RoKTtcbiAgfTtcbn0pOyIsInJlcXVpcmUoJy4vX3R5cGVkLWFycmF5JykoJ1VpbnQzMicsIDQsIGZ1bmN0aW9uKGluaXQpe1xuICByZXR1cm4gZnVuY3Rpb24gVWludDMyQXJyYXkoZGF0YSwgYnl0ZU9mZnNldCwgbGVuZ3RoKXtcbiAgICByZXR1cm4gaW5pdCh0aGlzLCBkYXRhLCBieXRlT2Zmc2V0LCBsZW5ndGgpO1xuICB9O1xufSk7IiwicmVxdWlyZSgnLi9fdHlwZWQtYXJyYXknKSgnVWludDgnLCAxLCBmdW5jdGlvbihpbml0KXtcbiAgcmV0dXJuIGZ1bmN0aW9uIFVpbnQ4QXJyYXkoZGF0YSwgYnl0ZU9mZnNldCwgbGVuZ3RoKXtcbiAgICByZXR1cm4gaW5pdCh0aGlzLCBkYXRhLCBieXRlT2Zmc2V0LCBsZW5ndGgpO1xuICB9O1xufSk7IiwicmVxdWlyZSgnLi9fdHlwZWQtYXJyYXknKSgnVWludDgnLCAxLCBmdW5jdGlvbihpbml0KXtcbiAgcmV0dXJuIGZ1bmN0aW9uIFVpbnQ4Q2xhbXBlZEFycmF5KGRhdGEsIGJ5dGVPZmZzZXQsIGxlbmd0aCl7XG4gICAgcmV0dXJuIGluaXQodGhpcywgZGF0YSwgYnl0ZU9mZnNldCwgbGVuZ3RoKTtcbiAgfTtcbn0sIHRydWUpOyIsIid1c2Ugc3RyaWN0JztcbnZhciBlYWNoICAgICAgICAgPSByZXF1aXJlKCcuL19hcnJheS1tZXRob2RzJykoMClcbiAgLCByZWRlZmluZSAgICAgPSByZXF1aXJlKCcuL19yZWRlZmluZScpXG4gICwgbWV0YSAgICAgICAgID0gcmVxdWlyZSgnLi9fbWV0YScpXG4gICwgYXNzaWduICAgICAgID0gcmVxdWlyZSgnLi9fb2JqZWN0LWFzc2lnbicpXG4gICwgd2VhayAgICAgICAgID0gcmVxdWlyZSgnLi9fY29sbGVjdGlvbi13ZWFrJylcbiAgLCBpc09iamVjdCAgICAgPSByZXF1aXJlKCcuL19pcy1vYmplY3QnKVxuICAsIGdldFdlYWsgICAgICA9IG1ldGEuZ2V0V2Vha1xuICAsIGlzRXh0ZW5zaWJsZSA9IE9iamVjdC5pc0V4dGVuc2libGVcbiAgLCB1bmNhdWdodEZyb3plblN0b3JlID0gd2Vhay51ZnN0b3JlXG4gICwgdG1wICAgICAgICAgID0ge31cbiAgLCBJbnRlcm5hbE1hcDtcblxudmFyIHdyYXBwZXIgPSBmdW5jdGlvbihnZXQpe1xuICByZXR1cm4gZnVuY3Rpb24gV2Vha01hcCgpe1xuICAgIHJldHVybiBnZXQodGhpcywgYXJndW1lbnRzLmxlbmd0aCA+IDAgPyBhcmd1bWVudHNbMF0gOiB1bmRlZmluZWQpO1xuICB9O1xufTtcblxudmFyIG1ldGhvZHMgPSB7XG4gIC8vIDIzLjMuMy4zIFdlYWtNYXAucHJvdG90eXBlLmdldChrZXkpXG4gIGdldDogZnVuY3Rpb24gZ2V0KGtleSl7XG4gICAgaWYoaXNPYmplY3Qoa2V5KSl7XG4gICAgICB2YXIgZGF0YSA9IGdldFdlYWsoa2V5KTtcbiAgICAgIGlmKGRhdGEgPT09IHRydWUpcmV0dXJuIHVuY2F1Z2h0RnJvemVuU3RvcmUodGhpcykuZ2V0KGtleSk7XG4gICAgICByZXR1cm4gZGF0YSA/IGRhdGFbdGhpcy5faV0gOiB1bmRlZmluZWQ7XG4gICAgfVxuICB9LFxuICAvLyAyMy4zLjMuNSBXZWFrTWFwLnByb3RvdHlwZS5zZXQoa2V5LCB2YWx1ZSlcbiAgc2V0OiBmdW5jdGlvbiBzZXQoa2V5LCB2YWx1ZSl7XG4gICAgcmV0dXJuIHdlYWsuZGVmKHRoaXMsIGtleSwgdmFsdWUpO1xuICB9XG59O1xuXG4vLyAyMy4zIFdlYWtNYXAgT2JqZWN0c1xudmFyICRXZWFrTWFwID0gbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL19jb2xsZWN0aW9uJykoJ1dlYWtNYXAnLCB3cmFwcGVyLCBtZXRob2RzLCB3ZWFrLCB0cnVlLCB0cnVlKTtcblxuLy8gSUUxMSBXZWFrTWFwIGZyb3plbiBrZXlzIGZpeFxuaWYobmV3ICRXZWFrTWFwKCkuc2V0KChPYmplY3QuZnJlZXplIHx8IE9iamVjdCkodG1wKSwgNykuZ2V0KHRtcCkgIT0gNyl7XG4gIEludGVybmFsTWFwID0gd2Vhay5nZXRDb25zdHJ1Y3Rvcih3cmFwcGVyKTtcbiAgYXNzaWduKEludGVybmFsTWFwLnByb3RvdHlwZSwgbWV0aG9kcyk7XG4gIG1ldGEuTkVFRCA9IHRydWU7XG4gIGVhY2goWydkZWxldGUnLCAnaGFzJywgJ2dldCcsICdzZXQnXSwgZnVuY3Rpb24oa2V5KXtcbiAgICB2YXIgcHJvdG8gID0gJFdlYWtNYXAucHJvdG90eXBlXG4gICAgICAsIG1ldGhvZCA9IHByb3RvW2tleV07XG4gICAgcmVkZWZpbmUocHJvdG8sIGtleSwgZnVuY3Rpb24oYSwgYil7XG4gICAgICAvLyBzdG9yZSBmcm96ZW4gb2JqZWN0cyBvbiBpbnRlcm5hbCB3ZWFrbWFwIHNoaW1cbiAgICAgIGlmKGlzT2JqZWN0KGEpICYmICFpc0V4dGVuc2libGUoYSkpe1xuICAgICAgICBpZighdGhpcy5fZil0aGlzLl9mID0gbmV3IEludGVybmFsTWFwO1xuICAgICAgICB2YXIgcmVzdWx0ID0gdGhpcy5fZltrZXldKGEsIGIpO1xuICAgICAgICByZXR1cm4ga2V5ID09ICdzZXQnID8gdGhpcyA6IHJlc3VsdDtcbiAgICAgIC8vIHN0b3JlIGFsbCB0aGUgcmVzdCBvbiBuYXRpdmUgd2Vha21hcFxuICAgICAgfSByZXR1cm4gbWV0aG9kLmNhbGwodGhpcywgYSwgYik7XG4gICAgfSk7XG4gIH0pO1xufSIsIid1c2Ugc3RyaWN0JztcbnZhciB3ZWFrID0gcmVxdWlyZSgnLi9fY29sbGVjdGlvbi13ZWFrJyk7XG5cbi8vIDIzLjQgV2Vha1NldCBPYmplY3RzXG5yZXF1aXJlKCcuL19jb2xsZWN0aW9uJykoJ1dlYWtTZXQnLCBmdW5jdGlvbihnZXQpe1xuICByZXR1cm4gZnVuY3Rpb24gV2Vha1NldCgpeyByZXR1cm4gZ2V0KHRoaXMsIGFyZ3VtZW50cy5sZW5ndGggPiAwID8gYXJndW1lbnRzWzBdIDogdW5kZWZpbmVkKTsgfTtcbn0sIHtcbiAgLy8gMjMuNC4zLjEgV2Vha1NldC5wcm90b3R5cGUuYWRkKHZhbHVlKVxuICBhZGQ6IGZ1bmN0aW9uIGFkZCh2YWx1ZSl7XG4gICAgcmV0dXJuIHdlYWsuZGVmKHRoaXMsIHZhbHVlLCB0cnVlKTtcbiAgfVxufSwgd2VhaywgZmFsc2UsIHRydWUpOyIsIid1c2Ugc3RyaWN0Jztcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L0FycmF5LnByb3RvdHlwZS5pbmNsdWRlc1xudmFyICRleHBvcnQgICA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpXG4gICwgJGluY2x1ZGVzID0gcmVxdWlyZSgnLi9fYXJyYXktaW5jbHVkZXMnKSh0cnVlKTtcblxuJGV4cG9ydCgkZXhwb3J0LlAsICdBcnJheScsIHtcbiAgaW5jbHVkZXM6IGZ1bmN0aW9uIGluY2x1ZGVzKGVsIC8qLCBmcm9tSW5kZXggPSAwICovKXtcbiAgICByZXR1cm4gJGluY2x1ZGVzKHRoaXMsIGVsLCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCk7XG4gIH1cbn0pO1xuXG5yZXF1aXJlKCcuL19hZGQtdG8tdW5zY29wYWJsZXMnKSgnaW5jbHVkZXMnKTsiLCIvLyBodHRwczovL2dpdGh1Yi5jb20vcndhbGRyb24vdGMzOS1ub3Rlcy9ibG9iL21hc3Rlci9lczYvMjAxNC0wOS9zZXB0LTI1Lm1kIzUxMC1nbG9iYWxhc2FwLWZvci1lbnF1ZXVpbmctYS1taWNyb3Rhc2tcbnZhciAkZXhwb3J0ICAgPSByZXF1aXJlKCcuL19leHBvcnQnKVxuICAsIG1pY3JvdGFzayA9IHJlcXVpcmUoJy4vX21pY3JvdGFzaycpKClcbiAgLCBwcm9jZXNzICAgPSByZXF1aXJlKCcuL19nbG9iYWwnKS5wcm9jZXNzXG4gICwgaXNOb2RlICAgID0gcmVxdWlyZSgnLi9fY29mJykocHJvY2VzcykgPT0gJ3Byb2Nlc3MnO1xuXG4kZXhwb3J0KCRleHBvcnQuRywge1xuICBhc2FwOiBmdW5jdGlvbiBhc2FwKGZuKXtcbiAgICB2YXIgZG9tYWluID0gaXNOb2RlICYmIHByb2Nlc3MuZG9tYWluO1xuICAgIG1pY3JvdGFzayhkb21haW4gPyBkb21haW4uYmluZChmbikgOiBmbik7XG4gIH1cbn0pOyIsIi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9samhhcmIvcHJvcG9zYWwtaXMtZXJyb3JcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0JylcbiAgLCBjb2YgICAgID0gcmVxdWlyZSgnLi9fY29mJyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnRXJyb3InLCB7XG4gIGlzRXJyb3I6IGZ1bmN0aW9uIGlzRXJyb3IoaXQpe1xuICAgIHJldHVybiBjb2YoaXQpID09PSAnRXJyb3InO1xuICB9XG59KTsiLCIvLyBodHRwczovL2dpdGh1Yi5jb20vRGF2aWRCcnVhbnQvTWFwLVNldC5wcm90b3R5cGUudG9KU09OXG52YXIgJGV4cG9ydCAgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlAgKyAkZXhwb3J0LlIsICdNYXAnLCB7dG9KU09OOiByZXF1aXJlKCcuL19jb2xsZWN0aW9uLXRvLWpzb24nKSgnTWFwJyl9KTsiLCIvLyBodHRwczovL2dpc3QuZ2l0aHViLmNvbS9CcmVuZGFuRWljaC80Mjk0ZDVjMjEyYTZkMjI1NDcwM1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdNYXRoJywge1xuICBpYWRkaDogZnVuY3Rpb24gaWFkZGgoeDAsIHgxLCB5MCwgeTEpe1xuICAgIHZhciAkeDAgPSB4MCA+Pj4gMFxuICAgICAgLCAkeDEgPSB4MSA+Pj4gMFxuICAgICAgLCAkeTAgPSB5MCA+Pj4gMDtcbiAgICByZXR1cm4gJHgxICsgKHkxID4+PiAwKSArICgoJHgwICYgJHkwIHwgKCR4MCB8ICR5MCkgJiB+KCR4MCArICR5MCA+Pj4gMCkpID4+PiAzMSkgfCAwO1xuICB9XG59KTsiLCIvLyBodHRwczovL2dpc3QuZ2l0aHViLmNvbS9CcmVuZGFuRWljaC80Mjk0ZDVjMjEyYTZkMjI1NDcwM1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdNYXRoJywge1xuICBpbXVsaDogZnVuY3Rpb24gaW11bGgodSwgdil7XG4gICAgdmFyIFVJTlQxNiA9IDB4ZmZmZlxuICAgICAgLCAkdSA9ICt1XG4gICAgICAsICR2ID0gK3ZcbiAgICAgICwgdTAgPSAkdSAmIFVJTlQxNlxuICAgICAgLCB2MCA9ICR2ICYgVUlOVDE2XG4gICAgICAsIHUxID0gJHUgPj4gMTZcbiAgICAgICwgdjEgPSAkdiA+PiAxNlxuICAgICAgLCB0ICA9ICh1MSAqIHYwID4+PiAwKSArICh1MCAqIHYwID4+PiAxNik7XG4gICAgcmV0dXJuIHUxICogdjEgKyAodCA+PiAxNikgKyAoKHUwICogdjEgPj4+IDApICsgKHQgJiBVSU5UMTYpID4+IDE2KTtcbiAgfVxufSk7IiwiLy8gaHR0cHM6Ly9naXN0LmdpdGh1Yi5jb20vQnJlbmRhbkVpY2gvNDI5NGQ1YzIxMmE2ZDIyNTQ3MDNcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnTWF0aCcsIHtcbiAgaXN1Ymg6IGZ1bmN0aW9uIGlzdWJoKHgwLCB4MSwgeTAsIHkxKXtcbiAgICB2YXIgJHgwID0geDAgPj4+IDBcbiAgICAgICwgJHgxID0geDEgPj4+IDBcbiAgICAgICwgJHkwID0geTAgPj4+IDA7XG4gICAgcmV0dXJuICR4MSAtICh5MSA+Pj4gMCkgLSAoKH4keDAgJiAkeTAgfCB+KCR4MCBeICR5MCkgJiAkeDAgLSAkeTAgPj4+IDApID4+PiAzMSkgfCAwO1xuICB9XG59KTsiLCIvLyBodHRwczovL2dpc3QuZ2l0aHViLmNvbS9CcmVuZGFuRWljaC80Mjk0ZDVjMjEyYTZkMjI1NDcwM1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdNYXRoJywge1xuICB1bXVsaDogZnVuY3Rpb24gdW11bGgodSwgdil7XG4gICAgdmFyIFVJTlQxNiA9IDB4ZmZmZlxuICAgICAgLCAkdSA9ICt1XG4gICAgICAsICR2ID0gK3ZcbiAgICAgICwgdTAgPSAkdSAmIFVJTlQxNlxuICAgICAgLCB2MCA9ICR2ICYgVUlOVDE2XG4gICAgICAsIHUxID0gJHUgPj4+IDE2XG4gICAgICAsIHYxID0gJHYgPj4+IDE2XG4gICAgICAsIHQgID0gKHUxICogdjAgPj4+IDApICsgKHUwICogdjAgPj4+IDE2KTtcbiAgICByZXR1cm4gdTEgKiB2MSArICh0ID4+PiAxNikgKyAoKHUwICogdjEgPj4+IDApICsgKHQgJiBVSU5UMTYpID4+PiAxNik7XG4gIH1cbn0pOyIsIid1c2Ugc3RyaWN0JztcbnZhciAkZXhwb3J0ICAgICAgICAgPSByZXF1aXJlKCcuL19leHBvcnQnKVxuICAsIHRvT2JqZWN0ICAgICAgICA9IHJlcXVpcmUoJy4vX3RvLW9iamVjdCcpXG4gICwgYUZ1bmN0aW9uICAgICAgID0gcmVxdWlyZSgnLi9fYS1mdW5jdGlvbicpXG4gICwgJGRlZmluZVByb3BlcnR5ID0gcmVxdWlyZSgnLi9fb2JqZWN0LWRwJyk7XG5cbi8vIEIuMi4yLjIgT2JqZWN0LnByb3RvdHlwZS5fX2RlZmluZUdldHRlcl9fKFAsIGdldHRlcilcbnJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgJiYgJGV4cG9ydCgkZXhwb3J0LlAgKyByZXF1aXJlKCcuL19vYmplY3QtZm9yY2VkLXBhbScpLCAnT2JqZWN0Jywge1xuICBfX2RlZmluZUdldHRlcl9fOiBmdW5jdGlvbiBfX2RlZmluZUdldHRlcl9fKFAsIGdldHRlcil7XG4gICAgJGRlZmluZVByb3BlcnR5LmYodG9PYmplY3QodGhpcyksIFAsIHtnZXQ6IGFGdW5jdGlvbihnZXR0ZXIpLCBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWV9KTtcbiAgfVxufSk7IiwiJ3VzZSBzdHJpY3QnO1xudmFyICRleHBvcnQgICAgICAgICA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpXG4gICwgdG9PYmplY3QgICAgICAgID0gcmVxdWlyZSgnLi9fdG8tb2JqZWN0JylcbiAgLCBhRnVuY3Rpb24gICAgICAgPSByZXF1aXJlKCcuL19hLWZ1bmN0aW9uJylcbiAgLCAkZGVmaW5lUHJvcGVydHkgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKTtcblxuLy8gQi4yLjIuMyBPYmplY3QucHJvdG90eXBlLl9fZGVmaW5lU2V0dGVyX18oUCwgc2V0dGVyKVxucmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKSAmJiAkZXhwb3J0KCRleHBvcnQuUCArIHJlcXVpcmUoJy4vX29iamVjdC1mb3JjZWQtcGFtJyksICdPYmplY3QnLCB7XG4gIF9fZGVmaW5lU2V0dGVyX186IGZ1bmN0aW9uIF9fZGVmaW5lU2V0dGVyX18oUCwgc2V0dGVyKXtcbiAgICAkZGVmaW5lUHJvcGVydHkuZih0b09iamVjdCh0aGlzKSwgUCwge3NldDogYUZ1bmN0aW9uKHNldHRlciksIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZX0pO1xuICB9XG59KTsiLCIvLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1vYmplY3QtdmFsdWVzLWVudHJpZXNcbnZhciAkZXhwb3J0ICA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpXG4gICwgJGVudHJpZXMgPSByZXF1aXJlKCcuL19vYmplY3QtdG8tYXJyYXknKSh0cnVlKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdPYmplY3QnLCB7XG4gIGVudHJpZXM6IGZ1bmN0aW9uIGVudHJpZXMoaXQpe1xuICAgIHJldHVybiAkZW50cmllcyhpdCk7XG4gIH1cbn0pOyIsIi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLW9iamVjdC1nZXRvd25wcm9wZXJ0eWRlc2NyaXB0b3JzXG52YXIgJGV4cG9ydCAgICAgICAgPSByZXF1aXJlKCcuL19leHBvcnQnKVxuICAsIG93bktleXMgICAgICAgID0gcmVxdWlyZSgnLi9fb3duLWtleXMnKVxuICAsIHRvSU9iamVjdCAgICAgID0gcmVxdWlyZSgnLi9fdG8taW9iamVjdCcpXG4gICwgZ09QRCAgICAgICAgICAgPSByZXF1aXJlKCcuL19vYmplY3QtZ29wZCcpXG4gICwgY3JlYXRlUHJvcGVydHkgPSByZXF1aXJlKCcuL19jcmVhdGUtcHJvcGVydHknKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdPYmplY3QnLCB7XG4gIGdldE93blByb3BlcnR5RGVzY3JpcHRvcnM6IGZ1bmN0aW9uIGdldE93blByb3BlcnR5RGVzY3JpcHRvcnMob2JqZWN0KXtcbiAgICB2YXIgTyAgICAgICA9IHRvSU9iamVjdChvYmplY3QpXG4gICAgICAsIGdldERlc2MgPSBnT1BELmZcbiAgICAgICwga2V5cyAgICA9IG93bktleXMoTylcbiAgICAgICwgcmVzdWx0ICA9IHt9XG4gICAgICAsIGkgICAgICAgPSAwXG4gICAgICAsIGtleTtcbiAgICB3aGlsZShrZXlzLmxlbmd0aCA+IGkpY3JlYXRlUHJvcGVydHkocmVzdWx0LCBrZXkgPSBrZXlzW2krK10sIGdldERlc2MoTywga2V5KSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufSk7IiwiJ3VzZSBzdHJpY3QnO1xudmFyICRleHBvcnQgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpXG4gICwgdG9PYmplY3QgICAgICAgICAgICAgICAgID0gcmVxdWlyZSgnLi9fdG8tb2JqZWN0JylcbiAgLCB0b1ByaW1pdGl2ZSAgICAgICAgICAgICAgPSByZXF1aXJlKCcuL190by1wcmltaXRpdmUnKVxuICAsIGdldFByb3RvdHlwZU9mICAgICAgICAgICA9IHJlcXVpcmUoJy4vX29iamVjdC1ncG8nKVxuICAsIGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IHJlcXVpcmUoJy4vX29iamVjdC1nb3BkJykuZjtcblxuLy8gQi4yLjIuNCBPYmplY3QucHJvdG90eXBlLl9fbG9va3VwR2V0dGVyX18oUClcbnJlcXVpcmUoJy4vX2Rlc2NyaXB0b3JzJykgJiYgJGV4cG9ydCgkZXhwb3J0LlAgKyByZXF1aXJlKCcuL19vYmplY3QtZm9yY2VkLXBhbScpLCAnT2JqZWN0Jywge1xuICBfX2xvb2t1cEdldHRlcl9fOiBmdW5jdGlvbiBfX2xvb2t1cEdldHRlcl9fKFApe1xuICAgIHZhciBPID0gdG9PYmplY3QodGhpcylcbiAgICAgICwgSyA9IHRvUHJpbWl0aXZlKFAsIHRydWUpXG4gICAgICAsIEQ7XG4gICAgZG8ge1xuICAgICAgaWYoRCA9IGdldE93blByb3BlcnR5RGVzY3JpcHRvcihPLCBLKSlyZXR1cm4gRC5nZXQ7XG4gICAgfSB3aGlsZShPID0gZ2V0UHJvdG90eXBlT2YoTykpO1xuICB9XG59KTsiLCIndXNlIHN0cmljdCc7XG52YXIgJGV4cG9ydCAgICAgICAgICAgICAgICAgID0gcmVxdWlyZSgnLi9fZXhwb3J0JylcbiAgLCB0b09iamVjdCAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCcuL190by1vYmplY3QnKVxuICAsIHRvUHJpbWl0aXZlICAgICAgICAgICAgICA9IHJlcXVpcmUoJy4vX3RvLXByaW1pdGl2ZScpXG4gICwgZ2V0UHJvdG90eXBlT2YgICAgICAgICAgID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdwbycpXG4gICwgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdvcGQnKS5mO1xuXG4vLyBCLjIuMi41IE9iamVjdC5wcm90b3R5cGUuX19sb29rdXBTZXR0ZXJfXyhQKVxucmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKSAmJiAkZXhwb3J0KCRleHBvcnQuUCArIHJlcXVpcmUoJy4vX29iamVjdC1mb3JjZWQtcGFtJyksICdPYmplY3QnLCB7XG4gIF9fbG9va3VwU2V0dGVyX186IGZ1bmN0aW9uIF9fbG9va3VwU2V0dGVyX18oUCl7XG4gICAgdmFyIE8gPSB0b09iamVjdCh0aGlzKVxuICAgICAgLCBLID0gdG9QcmltaXRpdmUoUCwgdHJ1ZSlcbiAgICAgICwgRDtcbiAgICBkbyB7XG4gICAgICBpZihEID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE8sIEspKXJldHVybiBELnNldDtcbiAgICB9IHdoaWxlKE8gPSBnZXRQcm90b3R5cGVPZihPKSk7XG4gIH1cbn0pOyIsIi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLW9iamVjdC12YWx1ZXMtZW50cmllc1xudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKVxuICAsICR2YWx1ZXMgPSByZXF1aXJlKCcuL19vYmplY3QtdG8tYXJyYXknKShmYWxzZSk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnT2JqZWN0Jywge1xuICB2YWx1ZXM6IGZ1bmN0aW9uIHZhbHVlcyhpdCl7XG4gICAgcmV0dXJuICR2YWx1ZXMoaXQpO1xuICB9XG59KTsiLCIndXNlIHN0cmljdCc7XG4vLyBodHRwczovL2dpdGh1Yi5jb20vemVucGFyc2luZy9lcy1vYnNlcnZhYmxlXG52YXIgJGV4cG9ydCAgICAgPSByZXF1aXJlKCcuL19leHBvcnQnKVxuICAsIGdsb2JhbCAgICAgID0gcmVxdWlyZSgnLi9fZ2xvYmFsJylcbiAgLCBjb3JlICAgICAgICA9IHJlcXVpcmUoJy4vX2NvcmUnKVxuICAsIG1pY3JvdGFzayAgID0gcmVxdWlyZSgnLi9fbWljcm90YXNrJykoKVxuICAsIE9CU0VSVkFCTEUgID0gcmVxdWlyZSgnLi9fd2tzJykoJ29ic2VydmFibGUnKVxuICAsIGFGdW5jdGlvbiAgID0gcmVxdWlyZSgnLi9fYS1mdW5jdGlvbicpXG4gICwgYW5PYmplY3QgICAgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKVxuICAsIGFuSW5zdGFuY2UgID0gcmVxdWlyZSgnLi9fYW4taW5zdGFuY2UnKVxuICAsIHJlZGVmaW5lQWxsID0gcmVxdWlyZSgnLi9fcmVkZWZpbmUtYWxsJylcbiAgLCBoaWRlICAgICAgICA9IHJlcXVpcmUoJy4vX2hpZGUnKVxuICAsIGZvck9mICAgICAgID0gcmVxdWlyZSgnLi9fZm9yLW9mJylcbiAgLCBSRVRVUk4gICAgICA9IGZvck9mLlJFVFVSTjtcblxudmFyIGdldE1ldGhvZCA9IGZ1bmN0aW9uKGZuKXtcbiAgcmV0dXJuIGZuID09IG51bGwgPyB1bmRlZmluZWQgOiBhRnVuY3Rpb24oZm4pO1xufTtcblxudmFyIGNsZWFudXBTdWJzY3JpcHRpb24gPSBmdW5jdGlvbihzdWJzY3JpcHRpb24pe1xuICB2YXIgY2xlYW51cCA9IHN1YnNjcmlwdGlvbi5fYztcbiAgaWYoY2xlYW51cCl7XG4gICAgc3Vic2NyaXB0aW9uLl9jID0gdW5kZWZpbmVkO1xuICAgIGNsZWFudXAoKTtcbiAgfVxufTtcblxudmFyIHN1YnNjcmlwdGlvbkNsb3NlZCA9IGZ1bmN0aW9uKHN1YnNjcmlwdGlvbil7XG4gIHJldHVybiBzdWJzY3JpcHRpb24uX28gPT09IHVuZGVmaW5lZDtcbn07XG5cbnZhciBjbG9zZVN1YnNjcmlwdGlvbiA9IGZ1bmN0aW9uKHN1YnNjcmlwdGlvbil7XG4gIGlmKCFzdWJzY3JpcHRpb25DbG9zZWQoc3Vic2NyaXB0aW9uKSl7XG4gICAgc3Vic2NyaXB0aW9uLl9vID0gdW5kZWZpbmVkO1xuICAgIGNsZWFudXBTdWJzY3JpcHRpb24oc3Vic2NyaXB0aW9uKTtcbiAgfVxufTtcblxudmFyIFN1YnNjcmlwdGlvbiA9IGZ1bmN0aW9uKG9ic2VydmVyLCBzdWJzY3JpYmVyKXtcbiAgYW5PYmplY3Qob2JzZXJ2ZXIpO1xuICB0aGlzLl9jID0gdW5kZWZpbmVkO1xuICB0aGlzLl9vID0gb2JzZXJ2ZXI7XG4gIG9ic2VydmVyID0gbmV3IFN1YnNjcmlwdGlvbk9ic2VydmVyKHRoaXMpO1xuICB0cnkge1xuICAgIHZhciBjbGVhbnVwICAgICAgPSBzdWJzY3JpYmVyKG9ic2VydmVyKVxuICAgICAgLCBzdWJzY3JpcHRpb24gPSBjbGVhbnVwO1xuICAgIGlmKGNsZWFudXAgIT0gbnVsbCl7XG4gICAgICBpZih0eXBlb2YgY2xlYW51cC51bnN1YnNjcmliZSA9PT0gJ2Z1bmN0aW9uJyljbGVhbnVwID0gZnVuY3Rpb24oKXsgc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7IH07XG4gICAgICBlbHNlIGFGdW5jdGlvbihjbGVhbnVwKTtcbiAgICAgIHRoaXMuX2MgPSBjbGVhbnVwO1xuICAgIH1cbiAgfSBjYXRjaChlKXtcbiAgICBvYnNlcnZlci5lcnJvcihlKTtcbiAgICByZXR1cm47XG4gIH0gaWYoc3Vic2NyaXB0aW9uQ2xvc2VkKHRoaXMpKWNsZWFudXBTdWJzY3JpcHRpb24odGhpcyk7XG59O1xuXG5TdWJzY3JpcHRpb24ucHJvdG90eXBlID0gcmVkZWZpbmVBbGwoe30sIHtcbiAgdW5zdWJzY3JpYmU6IGZ1bmN0aW9uIHVuc3Vic2NyaWJlKCl7IGNsb3NlU3Vic2NyaXB0aW9uKHRoaXMpOyB9XG59KTtcblxudmFyIFN1YnNjcmlwdGlvbk9ic2VydmVyID0gZnVuY3Rpb24oc3Vic2NyaXB0aW9uKXtcbiAgdGhpcy5fcyA9IHN1YnNjcmlwdGlvbjtcbn07XG5cblN1YnNjcmlwdGlvbk9ic2VydmVyLnByb3RvdHlwZSA9IHJlZGVmaW5lQWxsKHt9LCB7XG4gIG5leHQ6IGZ1bmN0aW9uIG5leHQodmFsdWUpe1xuICAgIHZhciBzdWJzY3JpcHRpb24gPSB0aGlzLl9zO1xuICAgIGlmKCFzdWJzY3JpcHRpb25DbG9zZWQoc3Vic2NyaXB0aW9uKSl7XG4gICAgICB2YXIgb2JzZXJ2ZXIgPSBzdWJzY3JpcHRpb24uX287XG4gICAgICB0cnkge1xuICAgICAgICB2YXIgbSA9IGdldE1ldGhvZChvYnNlcnZlci5uZXh0KTtcbiAgICAgICAgaWYobSlyZXR1cm4gbS5jYWxsKG9ic2VydmVyLCB2YWx1ZSk7XG4gICAgICB9IGNhdGNoKGUpe1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNsb3NlU3Vic2NyaXB0aW9uKHN1YnNjcmlwdGlvbik7XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZXJyb3I6IGZ1bmN0aW9uIGVycm9yKHZhbHVlKXtcbiAgICB2YXIgc3Vic2NyaXB0aW9uID0gdGhpcy5fcztcbiAgICBpZihzdWJzY3JpcHRpb25DbG9zZWQoc3Vic2NyaXB0aW9uKSl0aHJvdyB2YWx1ZTtcbiAgICB2YXIgb2JzZXJ2ZXIgPSBzdWJzY3JpcHRpb24uX287XG4gICAgc3Vic2NyaXB0aW9uLl9vID0gdW5kZWZpbmVkO1xuICAgIHRyeSB7XG4gICAgICB2YXIgbSA9IGdldE1ldGhvZChvYnNlcnZlci5lcnJvcik7XG4gICAgICBpZighbSl0aHJvdyB2YWx1ZTtcbiAgICAgIHZhbHVlID0gbS5jYWxsKG9ic2VydmVyLCB2YWx1ZSk7XG4gICAgfSBjYXRjaChlKXtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNsZWFudXBTdWJzY3JpcHRpb24oc3Vic2NyaXB0aW9uKTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIHRocm93IGU7XG4gICAgICB9XG4gICAgfSBjbGVhbnVwU3Vic2NyaXB0aW9uKHN1YnNjcmlwdGlvbik7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9LFxuICBjb21wbGV0ZTogZnVuY3Rpb24gY29tcGxldGUodmFsdWUpe1xuICAgIHZhciBzdWJzY3JpcHRpb24gPSB0aGlzLl9zO1xuICAgIGlmKCFzdWJzY3JpcHRpb25DbG9zZWQoc3Vic2NyaXB0aW9uKSl7XG4gICAgICB2YXIgb2JzZXJ2ZXIgPSBzdWJzY3JpcHRpb24uX287XG4gICAgICBzdWJzY3JpcHRpb24uX28gPSB1bmRlZmluZWQ7XG4gICAgICB0cnkge1xuICAgICAgICB2YXIgbSA9IGdldE1ldGhvZChvYnNlcnZlci5jb21wbGV0ZSk7XG4gICAgICAgIHZhbHVlID0gbSA/IG0uY2FsbChvYnNlcnZlciwgdmFsdWUpIDogdW5kZWZpbmVkO1xuICAgICAgfSBjYXRjaChlKXtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjbGVhbnVwU3Vic2NyaXB0aW9uKHN1YnNjcmlwdGlvbik7XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgfVxuICAgICAgfSBjbGVhbnVwU3Vic2NyaXB0aW9uKHN1YnNjcmlwdGlvbik7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICB9XG59KTtcblxudmFyICRPYnNlcnZhYmxlID0gZnVuY3Rpb24gT2JzZXJ2YWJsZShzdWJzY3JpYmVyKXtcbiAgYW5JbnN0YW5jZSh0aGlzLCAkT2JzZXJ2YWJsZSwgJ09ic2VydmFibGUnLCAnX2YnKS5fZiA9IGFGdW5jdGlvbihzdWJzY3JpYmVyKTtcbn07XG5cbnJlZGVmaW5lQWxsKCRPYnNlcnZhYmxlLnByb3RvdHlwZSwge1xuICBzdWJzY3JpYmU6IGZ1bmN0aW9uIHN1YnNjcmliZShvYnNlcnZlcil7XG4gICAgcmV0dXJuIG5ldyBTdWJzY3JpcHRpb24ob2JzZXJ2ZXIsIHRoaXMuX2YpO1xuICB9LFxuICBmb3JFYWNoOiBmdW5jdGlvbiBmb3JFYWNoKGZuKXtcbiAgICB2YXIgdGhhdCA9IHRoaXM7XG4gICAgcmV0dXJuIG5ldyAoY29yZS5Qcm9taXNlIHx8IGdsb2JhbC5Qcm9taXNlKShmdW5jdGlvbihyZXNvbHZlLCByZWplY3Qpe1xuICAgICAgYUZ1bmN0aW9uKGZuKTtcbiAgICAgIHZhciBzdWJzY3JpcHRpb24gPSB0aGF0LnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQgOiBmdW5jdGlvbih2YWx1ZSl7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiBmbih2YWx1ZSk7XG4gICAgICAgICAgfSBjYXRjaChlKXtcbiAgICAgICAgICAgIHJlamVjdChlKTtcbiAgICAgICAgICAgIHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IHJlamVjdCxcbiAgICAgICAgY29tcGxldGU6IHJlc29sdmVcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG59KTtcblxucmVkZWZpbmVBbGwoJE9ic2VydmFibGUsIHtcbiAgZnJvbTogZnVuY3Rpb24gZnJvbSh4KXtcbiAgICB2YXIgQyA9IHR5cGVvZiB0aGlzID09PSAnZnVuY3Rpb24nID8gdGhpcyA6ICRPYnNlcnZhYmxlO1xuICAgIHZhciBtZXRob2QgPSBnZXRNZXRob2QoYW5PYmplY3QoeClbT0JTRVJWQUJMRV0pO1xuICAgIGlmKG1ldGhvZCl7XG4gICAgICB2YXIgb2JzZXJ2YWJsZSA9IGFuT2JqZWN0KG1ldGhvZC5jYWxsKHgpKTtcbiAgICAgIHJldHVybiBvYnNlcnZhYmxlLmNvbnN0cnVjdG9yID09PSBDID8gb2JzZXJ2YWJsZSA6IG5ldyBDKGZ1bmN0aW9uKG9ic2VydmVyKXtcbiAgICAgICAgcmV0dXJuIG9ic2VydmFibGUuc3Vic2NyaWJlKG9ic2VydmVyKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IEMoZnVuY3Rpb24ob2JzZXJ2ZXIpe1xuICAgICAgdmFyIGRvbmUgPSBmYWxzZTtcbiAgICAgIG1pY3JvdGFzayhmdW5jdGlvbigpe1xuICAgICAgICBpZighZG9uZSl7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmKGZvck9mKHgsIGZhbHNlLCBmdW5jdGlvbihpdCl7XG4gICAgICAgICAgICAgIG9ic2VydmVyLm5leHQoaXQpO1xuICAgICAgICAgICAgICBpZihkb25lKXJldHVybiBSRVRVUk47XG4gICAgICAgICAgICB9KSA9PT0gUkVUVVJOKXJldHVybjtcbiAgICAgICAgICB9IGNhdGNoKGUpe1xuICAgICAgICAgICAgaWYoZG9uZSl0aHJvdyBlO1xuICAgICAgICAgICAgb2JzZXJ2ZXIuZXJyb3IoZSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfSBvYnNlcnZlci5jb21wbGV0ZSgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBmdW5jdGlvbigpeyBkb25lID0gdHJ1ZTsgfTtcbiAgICB9KTtcbiAgfSxcbiAgb2Y6IGZ1bmN0aW9uIG9mKCl7XG4gICAgZm9yKHZhciBpID0gMCwgbCA9IGFyZ3VtZW50cy5sZW5ndGgsIGl0ZW1zID0gQXJyYXkobCk7IGkgPCBsOylpdGVtc1tpXSA9IGFyZ3VtZW50c1tpKytdO1xuICAgIHJldHVybiBuZXcgKHR5cGVvZiB0aGlzID09PSAnZnVuY3Rpb24nID8gdGhpcyA6ICRPYnNlcnZhYmxlKShmdW5jdGlvbihvYnNlcnZlcil7XG4gICAgICB2YXIgZG9uZSA9IGZhbHNlO1xuICAgICAgbWljcm90YXNrKGZ1bmN0aW9uKCl7XG4gICAgICAgIGlmKCFkb25lKXtcbiAgICAgICAgICBmb3IodmFyIGkgPSAwOyBpIDwgaXRlbXMubGVuZ3RoOyArK2kpe1xuICAgICAgICAgICAgb2JzZXJ2ZXIubmV4dChpdGVtc1tpXSk7XG4gICAgICAgICAgICBpZihkb25lKXJldHVybjtcbiAgICAgICAgICB9IG9ic2VydmVyLmNvbXBsZXRlKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uKCl7IGRvbmUgPSB0cnVlOyB9O1xuICAgIH0pO1xuICB9XG59KTtcblxuaGlkZSgkT2JzZXJ2YWJsZS5wcm90b3R5cGUsIE9CU0VSVkFCTEUsIGZ1bmN0aW9uKCl7IHJldHVybiB0aGlzOyB9KTtcblxuJGV4cG9ydCgkZXhwb3J0LkcsIHtPYnNlcnZhYmxlOiAkT2JzZXJ2YWJsZX0pO1xuXG5yZXF1aXJlKCcuL19zZXQtc3BlY2llcycpKCdPYnNlcnZhYmxlJyk7IiwidmFyIG1ldGFkYXRhICAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCcuL19tZXRhZGF0YScpXG4gICwgYW5PYmplY3QgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpXG4gICwgdG9NZXRhS2V5ICAgICAgICAgICAgICAgICA9IG1ldGFkYXRhLmtleVxuICAsIG9yZGluYXJ5RGVmaW5lT3duTWV0YWRhdGEgPSBtZXRhZGF0YS5zZXQ7XG5cbm1ldGFkYXRhLmV4cCh7ZGVmaW5lTWV0YWRhdGE6IGZ1bmN0aW9uIGRlZmluZU1ldGFkYXRhKG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlLCB0YXJnZXQsIHRhcmdldEtleSl7XG4gIG9yZGluYXJ5RGVmaW5lT3duTWV0YWRhdGEobWV0YWRhdGFLZXksIG1ldGFkYXRhVmFsdWUsIGFuT2JqZWN0KHRhcmdldCksIHRvTWV0YUtleSh0YXJnZXRLZXkpKTtcbn19KTsiLCJ2YXIgbWV0YWRhdGEgICAgICAgICAgICAgICA9IHJlcXVpcmUoJy4vX21ldGFkYXRhJylcbiAgLCBhbk9iamVjdCAgICAgICAgICAgICAgID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0JylcbiAgLCB0b01ldGFLZXkgICAgICAgICAgICAgID0gbWV0YWRhdGEua2V5XG4gICwgZ2V0T3JDcmVhdGVNZXRhZGF0YU1hcCA9IG1ldGFkYXRhLm1hcFxuICAsIHN0b3JlICAgICAgICAgICAgICAgICAgPSBtZXRhZGF0YS5zdG9yZTtcblxubWV0YWRhdGEuZXhwKHtkZWxldGVNZXRhZGF0YTogZnVuY3Rpb24gZGVsZXRlTWV0YWRhdGEobWV0YWRhdGFLZXksIHRhcmdldCAvKiwgdGFyZ2V0S2V5ICovKXtcbiAgdmFyIHRhcmdldEtleSAgID0gYXJndW1lbnRzLmxlbmd0aCA8IDMgPyB1bmRlZmluZWQgOiB0b01ldGFLZXkoYXJndW1lbnRzWzJdKVxuICAgICwgbWV0YWRhdGFNYXAgPSBnZXRPckNyZWF0ZU1ldGFkYXRhTWFwKGFuT2JqZWN0KHRhcmdldCksIHRhcmdldEtleSwgZmFsc2UpO1xuICBpZihtZXRhZGF0YU1hcCA9PT0gdW5kZWZpbmVkIHx8ICFtZXRhZGF0YU1hcFsnZGVsZXRlJ10obWV0YWRhdGFLZXkpKXJldHVybiBmYWxzZTtcbiAgaWYobWV0YWRhdGFNYXAuc2l6ZSlyZXR1cm4gdHJ1ZTtcbiAgdmFyIHRhcmdldE1ldGFkYXRhID0gc3RvcmUuZ2V0KHRhcmdldCk7XG4gIHRhcmdldE1ldGFkYXRhWydkZWxldGUnXSh0YXJnZXRLZXkpO1xuICByZXR1cm4gISF0YXJnZXRNZXRhZGF0YS5zaXplIHx8IHN0b3JlWydkZWxldGUnXSh0YXJnZXQpO1xufX0pOyIsInZhciBTZXQgICAgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoJy4vZXM2LnNldCcpXG4gICwgZnJvbSAgICAgICAgICAgICAgICAgICAgPSByZXF1aXJlKCcuL19hcnJheS1mcm9tLWl0ZXJhYmxlJylcbiAgLCBtZXRhZGF0YSAgICAgICAgICAgICAgICA9IHJlcXVpcmUoJy4vX21ldGFkYXRhJylcbiAgLCBhbk9iamVjdCAgICAgICAgICAgICAgICA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpXG4gICwgZ2V0UHJvdG90eXBlT2YgICAgICAgICAgPSByZXF1aXJlKCcuL19vYmplY3QtZ3BvJylcbiAgLCBvcmRpbmFyeU93bk1ldGFkYXRhS2V5cyA9IG1ldGFkYXRhLmtleXNcbiAgLCB0b01ldGFLZXkgICAgICAgICAgICAgICA9IG1ldGFkYXRhLmtleTtcblxudmFyIG9yZGluYXJ5TWV0YWRhdGFLZXlzID0gZnVuY3Rpb24oTywgUCl7XG4gIHZhciBvS2V5cyAgPSBvcmRpbmFyeU93bk1ldGFkYXRhS2V5cyhPLCBQKVxuICAgICwgcGFyZW50ID0gZ2V0UHJvdG90eXBlT2YoTyk7XG4gIGlmKHBhcmVudCA9PT0gbnVsbClyZXR1cm4gb0tleXM7XG4gIHZhciBwS2V5cyAgPSBvcmRpbmFyeU1ldGFkYXRhS2V5cyhwYXJlbnQsIFApO1xuICByZXR1cm4gcEtleXMubGVuZ3RoID8gb0tleXMubGVuZ3RoID8gZnJvbShuZXcgU2V0KG9LZXlzLmNvbmNhdChwS2V5cykpKSA6IHBLZXlzIDogb0tleXM7XG59O1xuXG5tZXRhZGF0YS5leHAoe2dldE1ldGFkYXRhS2V5czogZnVuY3Rpb24gZ2V0TWV0YWRhdGFLZXlzKHRhcmdldCAvKiwgdGFyZ2V0S2V5ICovKXtcbiAgcmV0dXJuIG9yZGluYXJ5TWV0YWRhdGFLZXlzKGFuT2JqZWN0KHRhcmdldCksIGFyZ3VtZW50cy5sZW5ndGggPCAyID8gdW5kZWZpbmVkIDogdG9NZXRhS2V5KGFyZ3VtZW50c1sxXSkpO1xufX0pOyIsInZhciBtZXRhZGF0YSAgICAgICAgICAgICAgID0gcmVxdWlyZSgnLi9fbWV0YWRhdGEnKVxuICAsIGFuT2JqZWN0ICAgICAgICAgICAgICAgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKVxuICAsIGdldFByb3RvdHlwZU9mICAgICAgICAgPSByZXF1aXJlKCcuL19vYmplY3QtZ3BvJylcbiAgLCBvcmRpbmFyeUhhc093bk1ldGFkYXRhID0gbWV0YWRhdGEuaGFzXG4gICwgb3JkaW5hcnlHZXRPd25NZXRhZGF0YSA9IG1ldGFkYXRhLmdldFxuICAsIHRvTWV0YUtleSAgICAgICAgICAgICAgPSBtZXRhZGF0YS5rZXk7XG5cbnZhciBvcmRpbmFyeUdldE1ldGFkYXRhID0gZnVuY3Rpb24oTWV0YWRhdGFLZXksIE8sIFApe1xuICB2YXIgaGFzT3duID0gb3JkaW5hcnlIYXNPd25NZXRhZGF0YShNZXRhZGF0YUtleSwgTywgUCk7XG4gIGlmKGhhc093bilyZXR1cm4gb3JkaW5hcnlHZXRPd25NZXRhZGF0YShNZXRhZGF0YUtleSwgTywgUCk7XG4gIHZhciBwYXJlbnQgPSBnZXRQcm90b3R5cGVPZihPKTtcbiAgcmV0dXJuIHBhcmVudCAhPT0gbnVsbCA/IG9yZGluYXJ5R2V0TWV0YWRhdGEoTWV0YWRhdGFLZXksIHBhcmVudCwgUCkgOiB1bmRlZmluZWQ7XG59O1xuXG5tZXRhZGF0YS5leHAoe2dldE1ldGFkYXRhOiBmdW5jdGlvbiBnZXRNZXRhZGF0YShtZXRhZGF0YUtleSwgdGFyZ2V0IC8qLCB0YXJnZXRLZXkgKi8pe1xuICByZXR1cm4gb3JkaW5hcnlHZXRNZXRhZGF0YShtZXRhZGF0YUtleSwgYW5PYmplY3QodGFyZ2V0KSwgYXJndW1lbnRzLmxlbmd0aCA8IDMgPyB1bmRlZmluZWQgOiB0b01ldGFLZXkoYXJndW1lbnRzWzJdKSk7XG59fSk7IiwidmFyIG1ldGFkYXRhICAgICAgICAgICAgICAgID0gcmVxdWlyZSgnLi9fbWV0YWRhdGEnKVxuICAsIGFuT2JqZWN0ICAgICAgICAgICAgICAgID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0JylcbiAgLCBvcmRpbmFyeU93bk1ldGFkYXRhS2V5cyA9IG1ldGFkYXRhLmtleXNcbiAgLCB0b01ldGFLZXkgICAgICAgICAgICAgICA9IG1ldGFkYXRhLmtleTtcblxubWV0YWRhdGEuZXhwKHtnZXRPd25NZXRhZGF0YUtleXM6IGZ1bmN0aW9uIGdldE93bk1ldGFkYXRhS2V5cyh0YXJnZXQgLyosIHRhcmdldEtleSAqLyl7XG4gIHJldHVybiBvcmRpbmFyeU93bk1ldGFkYXRhS2V5cyhhbk9iamVjdCh0YXJnZXQpLCBhcmd1bWVudHMubGVuZ3RoIDwgMiA/IHVuZGVmaW5lZCA6IHRvTWV0YUtleShhcmd1bWVudHNbMV0pKTtcbn19KTsiLCJ2YXIgbWV0YWRhdGEgICAgICAgICAgICAgICA9IHJlcXVpcmUoJy4vX21ldGFkYXRhJylcbiAgLCBhbk9iamVjdCAgICAgICAgICAgICAgID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0JylcbiAgLCBvcmRpbmFyeUdldE93bk1ldGFkYXRhID0gbWV0YWRhdGEuZ2V0XG4gICwgdG9NZXRhS2V5ICAgICAgICAgICAgICA9IG1ldGFkYXRhLmtleTtcblxubWV0YWRhdGEuZXhwKHtnZXRPd25NZXRhZGF0YTogZnVuY3Rpb24gZ2V0T3duTWV0YWRhdGEobWV0YWRhdGFLZXksIHRhcmdldCAvKiwgdGFyZ2V0S2V5ICovKXtcbiAgcmV0dXJuIG9yZGluYXJ5R2V0T3duTWV0YWRhdGEobWV0YWRhdGFLZXksIGFuT2JqZWN0KHRhcmdldClcbiAgICAsIGFyZ3VtZW50cy5sZW5ndGggPCAzID8gdW5kZWZpbmVkIDogdG9NZXRhS2V5KGFyZ3VtZW50c1syXSkpO1xufX0pOyIsInZhciBtZXRhZGF0YSAgICAgICAgICAgICAgID0gcmVxdWlyZSgnLi9fbWV0YWRhdGEnKVxuICAsIGFuT2JqZWN0ICAgICAgICAgICAgICAgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKVxuICAsIGdldFByb3RvdHlwZU9mICAgICAgICAgPSByZXF1aXJlKCcuL19vYmplY3QtZ3BvJylcbiAgLCBvcmRpbmFyeUhhc093bk1ldGFkYXRhID0gbWV0YWRhdGEuaGFzXG4gICwgdG9NZXRhS2V5ICAgICAgICAgICAgICA9IG1ldGFkYXRhLmtleTtcblxudmFyIG9yZGluYXJ5SGFzTWV0YWRhdGEgPSBmdW5jdGlvbihNZXRhZGF0YUtleSwgTywgUCl7XG4gIHZhciBoYXNPd24gPSBvcmRpbmFyeUhhc093bk1ldGFkYXRhKE1ldGFkYXRhS2V5LCBPLCBQKTtcbiAgaWYoaGFzT3duKXJldHVybiB0cnVlO1xuICB2YXIgcGFyZW50ID0gZ2V0UHJvdG90eXBlT2YoTyk7XG4gIHJldHVybiBwYXJlbnQgIT09IG51bGwgPyBvcmRpbmFyeUhhc01ldGFkYXRhKE1ldGFkYXRhS2V5LCBwYXJlbnQsIFApIDogZmFsc2U7XG59O1xuXG5tZXRhZGF0YS5leHAoe2hhc01ldGFkYXRhOiBmdW5jdGlvbiBoYXNNZXRhZGF0YShtZXRhZGF0YUtleSwgdGFyZ2V0IC8qLCB0YXJnZXRLZXkgKi8pe1xuICByZXR1cm4gb3JkaW5hcnlIYXNNZXRhZGF0YShtZXRhZGF0YUtleSwgYW5PYmplY3QodGFyZ2V0KSwgYXJndW1lbnRzLmxlbmd0aCA8IDMgPyB1bmRlZmluZWQgOiB0b01ldGFLZXkoYXJndW1lbnRzWzJdKSk7XG59fSk7IiwidmFyIG1ldGFkYXRhICAgICAgICAgICAgICAgPSByZXF1aXJlKCcuL19tZXRhZGF0YScpXG4gICwgYW5PYmplY3QgICAgICAgICAgICAgICA9IHJlcXVpcmUoJy4vX2FuLW9iamVjdCcpXG4gICwgb3JkaW5hcnlIYXNPd25NZXRhZGF0YSA9IG1ldGFkYXRhLmhhc1xuICAsIHRvTWV0YUtleSAgICAgICAgICAgICAgPSBtZXRhZGF0YS5rZXk7XG5cbm1ldGFkYXRhLmV4cCh7aGFzT3duTWV0YWRhdGE6IGZ1bmN0aW9uIGhhc093bk1ldGFkYXRhKG1ldGFkYXRhS2V5LCB0YXJnZXQgLyosIHRhcmdldEtleSAqLyl7XG4gIHJldHVybiBvcmRpbmFyeUhhc093bk1ldGFkYXRhKG1ldGFkYXRhS2V5LCBhbk9iamVjdCh0YXJnZXQpXG4gICAgLCBhcmd1bWVudHMubGVuZ3RoIDwgMyA/IHVuZGVmaW5lZCA6IHRvTWV0YUtleShhcmd1bWVudHNbMl0pKTtcbn19KTsiLCJ2YXIgbWV0YWRhdGEgICAgICAgICAgICAgICAgICA9IHJlcXVpcmUoJy4vX21ldGFkYXRhJylcbiAgLCBhbk9iamVjdCAgICAgICAgICAgICAgICAgID0gcmVxdWlyZSgnLi9fYW4tb2JqZWN0JylcbiAgLCBhRnVuY3Rpb24gICAgICAgICAgICAgICAgID0gcmVxdWlyZSgnLi9fYS1mdW5jdGlvbicpXG4gICwgdG9NZXRhS2V5ICAgICAgICAgICAgICAgICA9IG1ldGFkYXRhLmtleVxuICAsIG9yZGluYXJ5RGVmaW5lT3duTWV0YWRhdGEgPSBtZXRhZGF0YS5zZXQ7XG5cbm1ldGFkYXRhLmV4cCh7bWV0YWRhdGE6IGZ1bmN0aW9uIG1ldGFkYXRhKG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlKXtcbiAgcmV0dXJuIGZ1bmN0aW9uIGRlY29yYXRvcih0YXJnZXQsIHRhcmdldEtleSl7XG4gICAgb3JkaW5hcnlEZWZpbmVPd25NZXRhZGF0YShcbiAgICAgIG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlLFxuICAgICAgKHRhcmdldEtleSAhPT0gdW5kZWZpbmVkID8gYW5PYmplY3QgOiBhRnVuY3Rpb24pKHRhcmdldCksXG4gICAgICB0b01ldGFLZXkodGFyZ2V0S2V5KVxuICAgICk7XG4gIH07XG59fSk7IiwiLy8gaHR0cHM6Ly9naXRodWIuY29tL0RhdmlkQnJ1YW50L01hcC1TZXQucHJvdG90eXBlLnRvSlNPTlxudmFyICRleHBvcnQgID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5SLCAnU2V0Jywge3RvSlNPTjogcmVxdWlyZSgnLi9fY29sbGVjdGlvbi10by1qc29uJykoJ1NldCcpfSk7IiwiJ3VzZSBzdHJpY3QnO1xuLy8gaHR0cHM6Ly9naXRodWIuY29tL21hdGhpYXNieW5lbnMvU3RyaW5nLnByb3RvdHlwZS5hdFxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuL19leHBvcnQnKVxuICAsICRhdCAgICAgPSByZXF1aXJlKCcuL19zdHJpbmctYXQnKSh0cnVlKTtcblxuJGV4cG9ydCgkZXhwb3J0LlAsICdTdHJpbmcnLCB7XG4gIGF0OiBmdW5jdGlvbiBhdChwb3Mpe1xuICAgIHJldHVybiAkYXQodGhpcywgcG9zKTtcbiAgfVxufSk7IiwiJ3VzZSBzdHJpY3QnO1xuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9TdHJpbmcucHJvdG90eXBlLm1hdGNoQWxsL1xudmFyICRleHBvcnQgICAgID0gcmVxdWlyZSgnLi9fZXhwb3J0JylcbiAgLCBkZWZpbmVkICAgICA9IHJlcXVpcmUoJy4vX2RlZmluZWQnKVxuICAsIHRvTGVuZ3RoICAgID0gcmVxdWlyZSgnLi9fdG8tbGVuZ3RoJylcbiAgLCBpc1JlZ0V4cCAgICA9IHJlcXVpcmUoJy4vX2lzLXJlZ2V4cCcpXG4gICwgZ2V0RmxhZ3MgICAgPSByZXF1aXJlKCcuL19mbGFncycpXG4gICwgUmVnRXhwUHJvdG8gPSBSZWdFeHAucHJvdG90eXBlO1xuXG52YXIgJFJlZ0V4cFN0cmluZ0l0ZXJhdG9yID0gZnVuY3Rpb24ocmVnZXhwLCBzdHJpbmcpe1xuICB0aGlzLl9yID0gcmVnZXhwO1xuICB0aGlzLl9zID0gc3RyaW5nO1xufTtcblxucmVxdWlyZSgnLi9faXRlci1jcmVhdGUnKSgkUmVnRXhwU3RyaW5nSXRlcmF0b3IsICdSZWdFeHAgU3RyaW5nJywgZnVuY3Rpb24gbmV4dCgpe1xuICB2YXIgbWF0Y2ggPSB0aGlzLl9yLmV4ZWModGhpcy5fcyk7XG4gIHJldHVybiB7dmFsdWU6IG1hdGNoLCBkb25lOiBtYXRjaCA9PT0gbnVsbH07XG59KTtcblxuJGV4cG9ydCgkZXhwb3J0LlAsICdTdHJpbmcnLCB7XG4gIG1hdGNoQWxsOiBmdW5jdGlvbiBtYXRjaEFsbChyZWdleHApe1xuICAgIGRlZmluZWQodGhpcyk7XG4gICAgaWYoIWlzUmVnRXhwKHJlZ2V4cCkpdGhyb3cgVHlwZUVycm9yKHJlZ2V4cCArICcgaXMgbm90IGEgcmVnZXhwIScpO1xuICAgIHZhciBTICAgICA9IFN0cmluZyh0aGlzKVxuICAgICAgLCBmbGFncyA9ICdmbGFncycgaW4gUmVnRXhwUHJvdG8gPyBTdHJpbmcocmVnZXhwLmZsYWdzKSA6IGdldEZsYWdzLmNhbGwocmVnZXhwKVxuICAgICAgLCByeCAgICA9IG5ldyBSZWdFeHAocmVnZXhwLnNvdXJjZSwgfmZsYWdzLmluZGV4T2YoJ2cnKSA/IGZsYWdzIDogJ2cnICsgZmxhZ3MpO1xuICAgIHJ4Lmxhc3RJbmRleCA9IHRvTGVuZ3RoKHJlZ2V4cC5sYXN0SW5kZXgpO1xuICAgIHJldHVybiBuZXcgJFJlZ0V4cFN0cmluZ0l0ZXJhdG9yKHJ4LCBTKTtcbiAgfVxufSk7IiwiJ3VzZSBzdHJpY3QnO1xuLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtc3RyaW5nLXBhZC1zdGFydC1lbmRcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0JylcbiAgLCAkcGFkICAgID0gcmVxdWlyZSgnLi9fc3RyaW5nLXBhZCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUCwgJ1N0cmluZycsIHtcbiAgcGFkRW5kOiBmdW5jdGlvbiBwYWRFbmQobWF4TGVuZ3RoIC8qLCBmaWxsU3RyaW5nID0gJyAnICovKXtcbiAgICByZXR1cm4gJHBhZCh0aGlzLCBtYXhMZW5ndGgsIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkLCBmYWxzZSk7XG4gIH1cbn0pOyIsIid1c2Ugc3RyaWN0Jztcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLXN0cmluZy1wYWQtc3RhcnQtZW5kXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpXG4gICwgJHBhZCAgICA9IHJlcXVpcmUoJy4vX3N0cmluZy1wYWQnKTtcblxuJGV4cG9ydCgkZXhwb3J0LlAsICdTdHJpbmcnLCB7XG4gIHBhZFN0YXJ0OiBmdW5jdGlvbiBwYWRTdGFydChtYXhMZW5ndGggLyosIGZpbGxTdHJpbmcgPSAnICcgKi8pe1xuICAgIHJldHVybiAkcGFkKHRoaXMsIG1heExlbmd0aCwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQsIHRydWUpO1xuICB9XG59KTsiLCIndXNlIHN0cmljdCc7XG4vLyBodHRwczovL2dpdGh1Yi5jb20vc2VibWFya2JhZ2UvZWNtYXNjcmlwdC1zdHJpbmctbGVmdC1yaWdodC10cmltXG5yZXF1aXJlKCcuL19zdHJpbmctdHJpbScpKCd0cmltTGVmdCcsIGZ1bmN0aW9uKCR0cmltKXtcbiAgcmV0dXJuIGZ1bmN0aW9uIHRyaW1MZWZ0KCl7XG4gICAgcmV0dXJuICR0cmltKHRoaXMsIDEpO1xuICB9O1xufSwgJ3RyaW1TdGFydCcpOyIsIid1c2Ugc3RyaWN0Jztcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9zZWJtYXJrYmFnZS9lY21hc2NyaXB0LXN0cmluZy1sZWZ0LXJpZ2h0LXRyaW1cbnJlcXVpcmUoJy4vX3N0cmluZy10cmltJykoJ3RyaW1SaWdodCcsIGZ1bmN0aW9uKCR0cmltKXtcbiAgcmV0dXJuIGZ1bmN0aW9uIHRyaW1SaWdodCgpe1xuICAgIHJldHVybiAkdHJpbSh0aGlzLCAyKTtcbiAgfTtcbn0sICd0cmltRW5kJyk7IiwicmVxdWlyZSgnLi9fd2tzLWRlZmluZScpKCdhc3luY0l0ZXJhdG9yJyk7IiwicmVxdWlyZSgnLi9fd2tzLWRlZmluZScpKCdvYnNlcnZhYmxlJyk7IiwiLy8gaHR0cHM6Ly9naXRodWIuY29tL2xqaGFyYi9wcm9wb3NhbC1nbG9iYWxcbnZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TLCAnU3lzdGVtJywge2dsb2JhbDogcmVxdWlyZSgnLi9fZ2xvYmFsJyl9KTsiLCJ2YXIgJGl0ZXJhdG9ycyAgICA9IHJlcXVpcmUoJy4vZXM2LmFycmF5Lml0ZXJhdG9yJylcbiAgLCByZWRlZmluZSAgICAgID0gcmVxdWlyZSgnLi9fcmVkZWZpbmUnKVxuICAsIGdsb2JhbCAgICAgICAgPSByZXF1aXJlKCcuL19nbG9iYWwnKVxuICAsIGhpZGUgICAgICAgICAgPSByZXF1aXJlKCcuL19oaWRlJylcbiAgLCBJdGVyYXRvcnMgICAgID0gcmVxdWlyZSgnLi9faXRlcmF0b3JzJylcbiAgLCB3a3MgICAgICAgICAgID0gcmVxdWlyZSgnLi9fd2tzJylcbiAgLCBJVEVSQVRPUiAgICAgID0gd2tzKCdpdGVyYXRvcicpXG4gICwgVE9fU1RSSU5HX1RBRyA9IHdrcygndG9TdHJpbmdUYWcnKVxuICAsIEFycmF5VmFsdWVzICAgPSBJdGVyYXRvcnMuQXJyYXk7XG5cbmZvcih2YXIgY29sbGVjdGlvbnMgPSBbJ05vZGVMaXN0JywgJ0RPTVRva2VuTGlzdCcsICdNZWRpYUxpc3QnLCAnU3R5bGVTaGVldExpc3QnLCAnQ1NTUnVsZUxpc3QnXSwgaSA9IDA7IGkgPCA1OyBpKyspe1xuICB2YXIgTkFNRSAgICAgICA9IGNvbGxlY3Rpb25zW2ldXG4gICAgLCBDb2xsZWN0aW9uID0gZ2xvYmFsW05BTUVdXG4gICAgLCBwcm90byAgICAgID0gQ29sbGVjdGlvbiAmJiBDb2xsZWN0aW9uLnByb3RvdHlwZVxuICAgICwga2V5O1xuICBpZihwcm90byl7XG4gICAgaWYoIXByb3RvW0lURVJBVE9SXSloaWRlKHByb3RvLCBJVEVSQVRPUiwgQXJyYXlWYWx1ZXMpO1xuICAgIGlmKCFwcm90b1tUT19TVFJJTkdfVEFHXSloaWRlKHByb3RvLCBUT19TVFJJTkdfVEFHLCBOQU1FKTtcbiAgICBJdGVyYXRvcnNbTkFNRV0gPSBBcnJheVZhbHVlcztcbiAgICBmb3Ioa2V5IGluICRpdGVyYXRvcnMpaWYoIXByb3RvW2tleV0pcmVkZWZpbmUocHJvdG8sIGtleSwgJGl0ZXJhdG9yc1trZXldLCB0cnVlKTtcbiAgfVxufSIsInZhciAkZXhwb3J0ID0gcmVxdWlyZSgnLi9fZXhwb3J0JylcbiAgLCAkdGFzayAgID0gcmVxdWlyZSgnLi9fdGFzaycpO1xuJGV4cG9ydCgkZXhwb3J0LkcgKyAkZXhwb3J0LkIsIHtcbiAgc2V0SW1tZWRpYXRlOiAgICR0YXNrLnNldCxcbiAgY2xlYXJJbW1lZGlhdGU6ICR0YXNrLmNsZWFyXG59KTsiLCIvLyBpZTktIHNldFRpbWVvdXQgJiBzZXRJbnRlcnZhbCBhZGRpdGlvbmFsIHBhcmFtZXRlcnMgZml4XG52YXIgZ2xvYmFsICAgICA9IHJlcXVpcmUoJy4vX2dsb2JhbCcpXG4gICwgJGV4cG9ydCAgICA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpXG4gICwgaW52b2tlICAgICA9IHJlcXVpcmUoJy4vX2ludm9rZScpXG4gICwgcGFydGlhbCAgICA9IHJlcXVpcmUoJy4vX3BhcnRpYWwnKVxuICAsIG5hdmlnYXRvciAgPSBnbG9iYWwubmF2aWdhdG9yXG4gICwgTVNJRSAgICAgICA9ICEhbmF2aWdhdG9yICYmIC9NU0lFIC5cXC4vLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7IC8vIDwtIGRpcnR5IGllOS0gY2hlY2tcbnZhciB3cmFwID0gZnVuY3Rpb24oc2V0KXtcbiAgcmV0dXJuIE1TSUUgPyBmdW5jdGlvbihmbiwgdGltZSAvKiwgLi4uYXJncyAqLyl7XG4gICAgcmV0dXJuIHNldChpbnZva2UoXG4gICAgICBwYXJ0aWFsLFxuICAgICAgW10uc2xpY2UuY2FsbChhcmd1bWVudHMsIDIpLFxuICAgICAgdHlwZW9mIGZuID09ICdmdW5jdGlvbicgPyBmbiA6IEZ1bmN0aW9uKGZuKVxuICAgICksIHRpbWUpO1xuICB9IDogc2V0O1xufTtcbiRleHBvcnQoJGV4cG9ydC5HICsgJGV4cG9ydC5CICsgJGV4cG9ydC5GICogTVNJRSwge1xuICBzZXRUaW1lb3V0OiAgd3JhcChnbG9iYWwuc2V0VGltZW91dCksXG4gIHNldEludGVydmFsOiB3cmFwKGdsb2JhbC5zZXRJbnRlcnZhbClcbn0pOyIsInJlcXVpcmUoJy4vbW9kdWxlcy9lczYuc3ltYm9sJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm9iamVjdC5jcmVhdGUnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYub2JqZWN0LmRlZmluZS1wcm9wZXJ0eScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5vYmplY3QuZGVmaW5lLXByb3BlcnRpZXMnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYub2JqZWN0LmdldC1vd24tcHJvcGVydHktZGVzY3JpcHRvcicpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5vYmplY3QuZ2V0LXByb3RvdHlwZS1vZicpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5vYmplY3Qua2V5cycpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5vYmplY3QuZ2V0LW93bi1wcm9wZXJ0eS1uYW1lcycpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5vYmplY3QuZnJlZXplJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm9iamVjdC5zZWFsJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm9iamVjdC5wcmV2ZW50LWV4dGVuc2lvbnMnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYub2JqZWN0LmlzLWZyb3plbicpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5vYmplY3QuaXMtc2VhbGVkJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm9iamVjdC5pcy1leHRlbnNpYmxlJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm9iamVjdC5hc3NpZ24nKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYub2JqZWN0LmlzJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm9iamVjdC5zZXQtcHJvdG90eXBlLW9mJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm9iamVjdC50by1zdHJpbmcnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuZnVuY3Rpb24uYmluZCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5mdW5jdGlvbi5uYW1lJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LmZ1bmN0aW9uLmhhcy1pbnN0YW5jZScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5wYXJzZS1pbnQnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYucGFyc2UtZmxvYXQnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYubnVtYmVyLmNvbnN0cnVjdG9yJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm51bWJlci50by1maXhlZCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5udW1iZXIudG8tcHJlY2lzaW9uJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm51bWJlci5lcHNpbG9uJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm51bWJlci5pcy1maW5pdGUnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYubnVtYmVyLmlzLWludGVnZXInKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYubnVtYmVyLmlzLW5hbicpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5udW1iZXIuaXMtc2FmZS1pbnRlZ2VyJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm51bWJlci5tYXgtc2FmZS1pbnRlZ2VyJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm51bWJlci5taW4tc2FmZS1pbnRlZ2VyJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm51bWJlci5wYXJzZS1mbG9hdCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5udW1iZXIucGFyc2UtaW50Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm1hdGguYWNvc2gnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYubWF0aC5hc2luaCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5tYXRoLmF0YW5oJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm1hdGguY2JydCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5tYXRoLmNsejMyJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm1hdGguY29zaCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5tYXRoLmV4cG0xJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm1hdGguZnJvdW5kJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm1hdGguaHlwb3QnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYubWF0aC5pbXVsJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm1hdGgubG9nMTAnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYubWF0aC5sb2cxcCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5tYXRoLmxvZzInKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYubWF0aC5zaWduJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2Lm1hdGguc2luaCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5tYXRoLnRhbmgnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYubWF0aC50cnVuYycpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5zdHJpbmcuZnJvbS1jb2RlLXBvaW50Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnN0cmluZy5yYXcnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuc3RyaW5nLnRyaW0nKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuc3RyaW5nLml0ZXJhdG9yJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnN0cmluZy5jb2RlLXBvaW50LWF0Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnN0cmluZy5lbmRzLXdpdGgnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuc3RyaW5nLmluY2x1ZGVzJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnN0cmluZy5yZXBlYXQnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuc3RyaW5nLnN0YXJ0cy13aXRoJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnN0cmluZy5hbmNob3InKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuc3RyaW5nLmJpZycpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5zdHJpbmcuYmxpbmsnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuc3RyaW5nLmJvbGQnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuc3RyaW5nLmZpeGVkJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnN0cmluZy5mb250Y29sb3InKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuc3RyaW5nLmZvbnRzaXplJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnN0cmluZy5pdGFsaWNzJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnN0cmluZy5saW5rJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnN0cmluZy5zbWFsbCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5zdHJpbmcuc3RyaWtlJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnN0cmluZy5zdWInKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuc3RyaW5nLnN1cCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5kYXRlLm5vdycpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5kYXRlLnRvLWpzb24nKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuZGF0ZS50by1pc28tc3RyaW5nJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LmRhdGUudG8tc3RyaW5nJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LmRhdGUudG8tcHJpbWl0aXZlJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LmFycmF5LmlzLWFycmF5Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LmFycmF5LmZyb20nKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuYXJyYXkub2YnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuYXJyYXkuam9pbicpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5hcnJheS5zbGljZScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5hcnJheS5zb3J0Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LmFycmF5LmZvci1lYWNoJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LmFycmF5Lm1hcCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5hcnJheS5maWx0ZXInKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuYXJyYXkuc29tZScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5hcnJheS5ldmVyeScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5hcnJheS5yZWR1Y2UnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuYXJyYXkucmVkdWNlLXJpZ2h0Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LmFycmF5LmluZGV4LW9mJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LmFycmF5Lmxhc3QtaW5kZXgtb2YnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuYXJyYXkuY29weS13aXRoaW4nKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuYXJyYXkuZmlsbCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5hcnJheS5maW5kJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LmFycmF5LmZpbmQtaW5kZXgnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYuYXJyYXkuc3BlY2llcycpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5hcnJheS5pdGVyYXRvcicpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5yZWdleHAuY29uc3RydWN0b3InKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYucmVnZXhwLnRvLXN0cmluZycpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5yZWdleHAuZmxhZ3MnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYucmVnZXhwLm1hdGNoJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnJlZ2V4cC5yZXBsYWNlJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnJlZ2V4cC5zZWFyY2gnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYucmVnZXhwLnNwbGl0Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnByb21pc2UnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYubWFwJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnNldCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi53ZWFrLW1hcCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi53ZWFrLXNldCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi50eXBlZC5hcnJheS1idWZmZXInKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYudHlwZWQuZGF0YS12aWV3Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnR5cGVkLmludDgtYXJyYXknKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYudHlwZWQudWludDgtYXJyYXknKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYudHlwZWQudWludDgtY2xhbXBlZC1hcnJheScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi50eXBlZC5pbnQxNi1hcnJheScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi50eXBlZC51aW50MTYtYXJyYXknKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYudHlwZWQuaW50MzItYXJyYXknKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYudHlwZWQudWludDMyLWFycmF5Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnR5cGVkLmZsb2F0MzItYXJyYXknKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYudHlwZWQuZmxvYXQ2NC1hcnJheScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5yZWZsZWN0LmFwcGx5Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnJlZmxlY3QuY29uc3RydWN0Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnJlZmxlY3QuZGVmaW5lLXByb3BlcnR5Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnJlZmxlY3QuZGVsZXRlLXByb3BlcnR5Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnJlZmxlY3QuZW51bWVyYXRlJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnJlZmxlY3QuZ2V0Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnJlZmxlY3QuZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM2LnJlZmxlY3QuZ2V0LXByb3RvdHlwZS1vZicpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5yZWZsZWN0LmhhcycpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5yZWZsZWN0LmlzLWV4dGVuc2libGUnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczYucmVmbGVjdC5vd24ta2V5cycpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5yZWZsZWN0LnByZXZlbnQtZXh0ZW5zaW9ucycpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5yZWZsZWN0LnNldCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNi5yZWZsZWN0LnNldC1wcm90b3R5cGUtb2YnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcuYXJyYXkuaW5jbHVkZXMnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcuc3RyaW5nLmF0Jyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3LnN0cmluZy5wYWQtc3RhcnQnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcuc3RyaW5nLnBhZC1lbmQnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcuc3RyaW5nLnRyaW0tbGVmdCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5zdHJpbmcudHJpbS1yaWdodCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5zdHJpbmcubWF0Y2gtYWxsJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3LnN5bWJvbC5hc3luYy1pdGVyYXRvcicpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5zeW1ib2wub2JzZXJ2YWJsZScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5vYmplY3QuZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9ycycpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5vYmplY3QudmFsdWVzJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3Lm9iamVjdC5lbnRyaWVzJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3Lm9iamVjdC5kZWZpbmUtZ2V0dGVyJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3Lm9iamVjdC5kZWZpbmUtc2V0dGVyJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3Lm9iamVjdC5sb29rdXAtZ2V0dGVyJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3Lm9iamVjdC5sb29rdXAtc2V0dGVyJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3Lm1hcC50by1qc29uJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3LnNldC50by1qc29uJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3LnN5c3RlbS5nbG9iYWwnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcuZXJyb3IuaXMtZXJyb3InKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcubWF0aC5pYWRkaCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5tYXRoLmlzdWJoJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3Lm1hdGguaW11bGgnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcubWF0aC51bXVsaCcpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5yZWZsZWN0LmRlZmluZS1tZXRhZGF0YScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5yZWZsZWN0LmRlbGV0ZS1tZXRhZGF0YScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5yZWZsZWN0LmdldC1tZXRhZGF0YScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5yZWZsZWN0LmdldC1tZXRhZGF0YS1rZXlzJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3LnJlZmxlY3QuZ2V0LW93bi1tZXRhZGF0YScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5yZWZsZWN0LmdldC1vd24tbWV0YWRhdGEta2V5cycpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5yZWZsZWN0Lmhhcy1tZXRhZGF0YScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5yZWZsZWN0Lmhhcy1vd24tbWV0YWRhdGEnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy9lczcucmVmbGVjdC5tZXRhZGF0YScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL2VzNy5hc2FwJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvZXM3Lm9ic2VydmFibGUnKTtcbnJlcXVpcmUoJy4vbW9kdWxlcy93ZWIudGltZXJzJyk7XG5yZXF1aXJlKCcuL21vZHVsZXMvd2ViLmltbWVkaWF0ZScpO1xucmVxdWlyZSgnLi9tb2R1bGVzL3dlYi5kb20uaXRlcmFibGUnKTtcbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9tb2R1bGVzL19jb3JlJyk7IiwiLy8gQ29weXJpZ2h0IEpveWVudCwgSW5jLiBhbmQgb3RoZXIgTm9kZSBjb250cmlidXRvcnMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbi8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGVcbi8vIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZ1xuLy8gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLFxuLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdFxuLy8gcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlXG4vLyBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZFxuLy8gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTU1xuLy8gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRlxuLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTlxuLy8gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sXG4vLyBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Jcbi8vIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEVcbi8vIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG5cbi8vIE5PVEU6IFRoZXNlIHR5cGUgY2hlY2tpbmcgZnVuY3Rpb25zIGludGVudGlvbmFsbHkgZG9uJ3QgdXNlIGBpbnN0YW5jZW9mYFxuLy8gYmVjYXVzZSBpdCBpcyBmcmFnaWxlIGFuZCBjYW4gYmUgZWFzaWx5IGZha2VkIHdpdGggYE9iamVjdC5jcmVhdGUoKWAuXG5cbmZ1bmN0aW9uIGlzQXJyYXkoYXJnKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KSB7XG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkoYXJnKTtcbiAgfVxuICByZXR1cm4gb2JqZWN0VG9TdHJpbmcoYXJnKSA9PT0gJ1tvYmplY3QgQXJyYXldJztcbn1cbmV4cG9ydHMuaXNBcnJheSA9IGlzQXJyYXk7XG5cbmZ1bmN0aW9uIGlzQm9vbGVhbihhcmcpIHtcbiAgcmV0dXJuIHR5cGVvZiBhcmcgPT09ICdib29sZWFuJztcbn1cbmV4cG9ydHMuaXNCb29sZWFuID0gaXNCb29sZWFuO1xuXG5mdW5jdGlvbiBpc051bGwoYXJnKSB7XG4gIHJldHVybiBhcmcgPT09IG51bGw7XG59XG5leHBvcnRzLmlzTnVsbCA9IGlzTnVsbDtcblxuZnVuY3Rpb24gaXNOdWxsT3JVbmRlZmluZWQoYXJnKSB7XG4gIHJldHVybiBhcmcgPT0gbnVsbDtcbn1cbmV4cG9ydHMuaXNOdWxsT3JVbmRlZmluZWQgPSBpc051bGxPclVuZGVmaW5lZDtcblxuZnVuY3Rpb24gaXNOdW1iZXIoYXJnKSB7XG4gIHJldHVybiB0eXBlb2YgYXJnID09PSAnbnVtYmVyJztcbn1cbmV4cG9ydHMuaXNOdW1iZXIgPSBpc051bWJlcjtcblxuZnVuY3Rpb24gaXNTdHJpbmcoYXJnKSB7XG4gIHJldHVybiB0eXBlb2YgYXJnID09PSAnc3RyaW5nJztcbn1cbmV4cG9ydHMuaXNTdHJpbmcgPSBpc1N0cmluZztcblxuZnVuY3Rpb24gaXNTeW1ib2woYXJnKSB7XG4gIHJldHVybiB0eXBlb2YgYXJnID09PSAnc3ltYm9sJztcbn1cbmV4cG9ydHMuaXNTeW1ib2wgPSBpc1N5bWJvbDtcblxuZnVuY3Rpb24gaXNVbmRlZmluZWQoYXJnKSB7XG4gIHJldHVybiBhcmcgPT09IHZvaWQgMDtcbn1cbmV4cG9ydHMuaXNVbmRlZmluZWQgPSBpc1VuZGVmaW5lZDtcblxuZnVuY3Rpb24gaXNSZWdFeHAocmUpIHtcbiAgcmV0dXJuIG9iamVjdFRvU3RyaW5nKHJlKSA9PT0gJ1tvYmplY3QgUmVnRXhwXSc7XG59XG5leHBvcnRzLmlzUmVnRXhwID0gaXNSZWdFeHA7XG5cbmZ1bmN0aW9uIGlzT2JqZWN0KGFyZykge1xuICByZXR1cm4gdHlwZW9mIGFyZyA9PT0gJ29iamVjdCcgJiYgYXJnICE9PSBudWxsO1xufVxuZXhwb3J0cy5pc09iamVjdCA9IGlzT2JqZWN0O1xuXG5mdW5jdGlvbiBpc0RhdGUoZCkge1xuICByZXR1cm4gb2JqZWN0VG9TdHJpbmcoZCkgPT09ICdbb2JqZWN0IERhdGVdJztcbn1cbmV4cG9ydHMuaXNEYXRlID0gaXNEYXRlO1xuXG5mdW5jdGlvbiBpc0Vycm9yKGUpIHtcbiAgcmV0dXJuIChvYmplY3RUb1N0cmluZyhlKSA9PT0gJ1tvYmplY3QgRXJyb3JdJyB8fCBlIGluc3RhbmNlb2YgRXJyb3IpO1xufVxuZXhwb3J0cy5pc0Vycm9yID0gaXNFcnJvcjtcblxuZnVuY3Rpb24gaXNGdW5jdGlvbihhcmcpIHtcbiAgcmV0dXJuIHR5cGVvZiBhcmcgPT09ICdmdW5jdGlvbic7XG59XG5leHBvcnRzLmlzRnVuY3Rpb24gPSBpc0Z1bmN0aW9uO1xuXG5mdW5jdGlvbiBpc1ByaW1pdGl2ZShhcmcpIHtcbiAgcmV0dXJuIGFyZyA9PT0gbnVsbCB8fFxuICAgICAgICAgdHlwZW9mIGFyZyA9PT0gJ2Jvb2xlYW4nIHx8XG4gICAgICAgICB0eXBlb2YgYXJnID09PSAnbnVtYmVyJyB8fFxuICAgICAgICAgdHlwZW9mIGFyZyA9PT0gJ3N0cmluZycgfHxcbiAgICAgICAgIHR5cGVvZiBhcmcgPT09ICdzeW1ib2wnIHx8ICAvLyBFUzYgc3ltYm9sXG4gICAgICAgICB0eXBlb2YgYXJnID09PSAndW5kZWZpbmVkJztcbn1cbmV4cG9ydHMuaXNQcmltaXRpdmUgPSBpc1ByaW1pdGl2ZTtcblxuZXhwb3J0cy5pc0J1ZmZlciA9IEJ1ZmZlci5pc0J1ZmZlcjtcblxuZnVuY3Rpb24gb2JqZWN0VG9TdHJpbmcobykge1xuICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG8pO1xufVxuIiwidmFyIGVsbGlwdGljID0gcmVxdWlyZSgnZWxsaXB0aWMnKTtcbnZhciBCTiA9IHJlcXVpcmUoJ2JuLmpzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gY3JlYXRlRUNESChjdXJ2ZSkge1xuXHRyZXR1cm4gbmV3IEVDREgoY3VydmUpO1xufTtcblxudmFyIGFsaWFzZXMgPSB7XG5cdHNlY3AyNTZrMToge1xuXHRcdG5hbWU6ICdzZWNwMjU2azEnLFxuXHRcdGJ5dGVMZW5ndGg6IDMyXG5cdH0sXG5cdHNlY3AyMjRyMToge1xuXHRcdG5hbWU6ICdwMjI0Jyxcblx0XHRieXRlTGVuZ3RoOiAyOFxuXHR9LFxuXHRwcmltZTI1NnYxOiB7XG5cdFx0bmFtZTogJ3AyNTYnLFxuXHRcdGJ5dGVMZW5ndGg6IDMyXG5cdH0sXG5cdHByaW1lMTkydjE6IHtcblx0XHRuYW1lOiAncDE5MicsXG5cdFx0Ynl0ZUxlbmd0aDogMjRcblx0fSxcblx0ZWQyNTUxOToge1xuXHRcdG5hbWU6ICdlZDI1NTE5Jyxcblx0XHRieXRlTGVuZ3RoOiAzMlxuXHR9LFxuXHRzZWNwMzg0cjE6IHtcblx0XHRuYW1lOiAncDM4NCcsXG5cdFx0Ynl0ZUxlbmd0aDogNDhcblx0fSxcblx0c2VjcDUyMXIxOiB7XG5cdFx0bmFtZTogJ3A1MjEnLFxuXHRcdGJ5dGVMZW5ndGg6IDY2XG5cdH1cbn07XG5cbmFsaWFzZXMucDIyNCA9IGFsaWFzZXMuc2VjcDIyNHIxO1xuYWxpYXNlcy5wMjU2ID0gYWxpYXNlcy5zZWNwMjU2cjEgPSBhbGlhc2VzLnByaW1lMjU2djE7XG5hbGlhc2VzLnAxOTIgPSBhbGlhc2VzLnNlY3AxOTJyMSA9IGFsaWFzZXMucHJpbWUxOTJ2MTtcbmFsaWFzZXMucDM4NCA9IGFsaWFzZXMuc2VjcDM4NHIxO1xuYWxpYXNlcy5wNTIxID0gYWxpYXNlcy5zZWNwNTIxcjE7XG5cbmZ1bmN0aW9uIEVDREgoY3VydmUpIHtcblx0dGhpcy5jdXJ2ZVR5cGUgPSBhbGlhc2VzW2N1cnZlXTtcblx0aWYgKCF0aGlzLmN1cnZlVHlwZSApIHtcblx0XHR0aGlzLmN1cnZlVHlwZSA9IHtcblx0XHRcdG5hbWU6IGN1cnZlXG5cdFx0fTtcblx0fVxuXHR0aGlzLmN1cnZlID0gbmV3IGVsbGlwdGljLmVjKHRoaXMuY3VydmVUeXBlLm5hbWUpO1xuXHR0aGlzLmtleXMgPSB2b2lkIDA7XG59XG5cbkVDREgucHJvdG90eXBlLmdlbmVyYXRlS2V5cyA9IGZ1bmN0aW9uIChlbmMsIGZvcm1hdCkge1xuXHR0aGlzLmtleXMgPSB0aGlzLmN1cnZlLmdlbktleVBhaXIoKTtcblx0cmV0dXJuIHRoaXMuZ2V0UHVibGljS2V5KGVuYywgZm9ybWF0KTtcbn07XG5cbkVDREgucHJvdG90eXBlLmNvbXB1dGVTZWNyZXQgPSBmdW5jdGlvbiAob3RoZXIsIGluZW5jLCBlbmMpIHtcblx0aW5lbmMgPSBpbmVuYyB8fCAndXRmOCc7XG5cdGlmICghQnVmZmVyLmlzQnVmZmVyKG90aGVyKSkge1xuXHRcdG90aGVyID0gbmV3IEJ1ZmZlcihvdGhlciwgaW5lbmMpO1xuXHR9XG5cdHZhciBvdGhlclB1YiA9IHRoaXMuY3VydmUua2V5RnJvbVB1YmxpYyhvdGhlcikuZ2V0UHVibGljKCk7XG5cdHZhciBvdXQgPSBvdGhlclB1Yi5tdWwodGhpcy5rZXlzLmdldFByaXZhdGUoKSkuZ2V0WCgpO1xuXHRyZXR1cm4gZm9ybWF0UmV0dXJuVmFsdWUob3V0LCBlbmMsIHRoaXMuY3VydmVUeXBlLmJ5dGVMZW5ndGgpO1xufTtcblxuRUNESC5wcm90b3R5cGUuZ2V0UHVibGljS2V5ID0gZnVuY3Rpb24gKGVuYywgZm9ybWF0KSB7XG5cdHZhciBrZXkgPSB0aGlzLmtleXMuZ2V0UHVibGljKGZvcm1hdCA9PT0gJ2NvbXByZXNzZWQnLCB0cnVlKTtcblx0aWYgKGZvcm1hdCA9PT0gJ2h5YnJpZCcpIHtcblx0XHRpZiAoa2V5W2tleS5sZW5ndGggLSAxXSAlIDIpIHtcblx0XHRcdGtleVswXSA9IDc7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGtleSBbMF0gPSA2O1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gZm9ybWF0UmV0dXJuVmFsdWUoa2V5LCBlbmMpO1xufTtcblxuRUNESC5wcm90b3R5cGUuZ2V0UHJpdmF0ZUtleSA9IGZ1bmN0aW9uIChlbmMpIHtcblx0cmV0dXJuIGZvcm1hdFJldHVyblZhbHVlKHRoaXMua2V5cy5nZXRQcml2YXRlKCksIGVuYyk7XG59O1xuXG5FQ0RILnByb3RvdHlwZS5zZXRQdWJsaWNLZXkgPSBmdW5jdGlvbiAocHViLCBlbmMpIHtcblx0ZW5jID0gZW5jIHx8ICd1dGY4Jztcblx0aWYgKCFCdWZmZXIuaXNCdWZmZXIocHViKSkge1xuXHRcdHB1YiA9IG5ldyBCdWZmZXIocHViLCBlbmMpO1xuXHR9XG5cdHRoaXMua2V5cy5faW1wb3J0UHVibGljKHB1Yik7XG5cdHJldHVybiB0aGlzO1xufTtcblxuRUNESC5wcm90b3R5cGUuc2V0UHJpdmF0ZUtleSA9IGZ1bmN0aW9uIChwcml2LCBlbmMpIHtcblx0ZW5jID0gZW5jIHx8ICd1dGY4Jztcblx0aWYgKCFCdWZmZXIuaXNCdWZmZXIocHJpdikpIHtcblx0XHRwcml2ID0gbmV3IEJ1ZmZlcihwcml2LCBlbmMpO1xuXHR9XG5cdHZhciBfcHJpdiA9IG5ldyBCTihwcml2KTtcblx0X3ByaXYgPSBfcHJpdi50b1N0cmluZygxNik7XG5cdHRoaXMua2V5cy5faW1wb3J0UHJpdmF0ZShfcHJpdik7XG5cdHJldHVybiB0aGlzO1xufTtcblxuZnVuY3Rpb24gZm9ybWF0UmV0dXJuVmFsdWUoYm4sIGVuYywgbGVuKSB7XG5cdGlmICghQXJyYXkuaXNBcnJheShibikpIHtcblx0XHRibiA9IGJuLnRvQXJyYXkoKTtcblx0fVxuXHR2YXIgYnVmID0gbmV3IEJ1ZmZlcihibik7XG5cdGlmIChsZW4gJiYgYnVmLmxlbmd0aCA8IGxlbikge1xuXHRcdHZhciB6ZXJvcyA9IG5ldyBCdWZmZXIobGVuIC0gYnVmLmxlbmd0aCk7XG5cdFx0emVyb3MuZmlsbCgwKTtcblx0XHRidWYgPSBCdWZmZXIuY29uY2F0KFt6ZXJvcywgYnVmXSk7XG5cdH1cblx0aWYgKCFlbmMpIHtcblx0XHRyZXR1cm4gYnVmO1xuXHR9IGVsc2Uge1xuXHRcdHJldHVybiBidWYudG9TdHJpbmcoZW5jKTtcblx0fVxufVxuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKVxudmFyIG1kNSA9IHJlcXVpcmUoJy4vbWQ1JylcbnZhciBybWQxNjAgPSByZXF1aXJlKCdyaXBlbWQxNjAnKVxudmFyIHNoYSA9IHJlcXVpcmUoJ3NoYS5qcycpXG5cbnZhciBCYXNlID0gcmVxdWlyZSgnY2lwaGVyLWJhc2UnKVxuXG5mdW5jdGlvbiBIYXNoTm9Db25zdHJ1Y3RvcihoYXNoKSB7XG4gIEJhc2UuY2FsbCh0aGlzLCAnZGlnZXN0JylcblxuICB0aGlzLl9oYXNoID0gaGFzaFxuICB0aGlzLmJ1ZmZlcnMgPSBbXVxufVxuXG5pbmhlcml0cyhIYXNoTm9Db25zdHJ1Y3RvciwgQmFzZSlcblxuSGFzaE5vQ29uc3RydWN0b3IucHJvdG90eXBlLl91cGRhdGUgPSBmdW5jdGlvbiAoZGF0YSkge1xuICB0aGlzLmJ1ZmZlcnMucHVzaChkYXRhKVxufVxuXG5IYXNoTm9Db25zdHJ1Y3Rvci5wcm90b3R5cGUuX2ZpbmFsID0gZnVuY3Rpb24gKCkge1xuICB2YXIgYnVmID0gQnVmZmVyLmNvbmNhdCh0aGlzLmJ1ZmZlcnMpXG4gIHZhciByID0gdGhpcy5faGFzaChidWYpXG4gIHRoaXMuYnVmZmVycyA9IG51bGxcblxuICByZXR1cm4gclxufVxuXG5mdW5jdGlvbiBIYXNoKGhhc2gpIHtcbiAgQmFzZS5jYWxsKHRoaXMsICdkaWdlc3QnKVxuXG4gIHRoaXMuX2hhc2ggPSBoYXNoXG59XG5cbmluaGVyaXRzKEhhc2gsIEJhc2UpXG5cbkhhc2gucHJvdG90eXBlLl91cGRhdGUgPSBmdW5jdGlvbiAoZGF0YSkge1xuICB0aGlzLl9oYXNoLnVwZGF0ZShkYXRhKVxufVxuXG5IYXNoLnByb3RvdHlwZS5fZmluYWwgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLl9oYXNoLmRpZ2VzdCgpXG59XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gY3JlYXRlSGFzaCAoYWxnKSB7XG4gIGFsZyA9IGFsZy50b0xvd2VyQ2FzZSgpXG4gIGlmICgnbWQ1JyA9PT0gYWxnKSByZXR1cm4gbmV3IEhhc2hOb0NvbnN0cnVjdG9yKG1kNSlcbiAgaWYgKCdybWQxNjAnID09PSBhbGcgfHwgJ3JpcGVtZDE2MCcgPT09IGFsZykgcmV0dXJuIG5ldyBIYXNoTm9Db25zdHJ1Y3RvcihybWQxNjApXG5cbiAgcmV0dXJuIG5ldyBIYXNoKHNoYShhbGcpKVxufVxuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGludFNpemUgPSA0O1xudmFyIHplcm9CdWZmZXIgPSBuZXcgQnVmZmVyKGludFNpemUpOyB6ZXJvQnVmZmVyLmZpbGwoMCk7XG52YXIgY2hyc3ogPSA4O1xuXG5mdW5jdGlvbiB0b0FycmF5KGJ1ZiwgYmlnRW5kaWFuKSB7XG4gIGlmICgoYnVmLmxlbmd0aCAlIGludFNpemUpICE9PSAwKSB7XG4gICAgdmFyIGxlbiA9IGJ1Zi5sZW5ndGggKyAoaW50U2l6ZSAtIChidWYubGVuZ3RoICUgaW50U2l6ZSkpO1xuICAgIGJ1ZiA9IEJ1ZmZlci5jb25jYXQoW2J1ZiwgemVyb0J1ZmZlcl0sIGxlbik7XG4gIH1cblxuICB2YXIgYXJyID0gW107XG4gIHZhciBmbiA9IGJpZ0VuZGlhbiA/IGJ1Zi5yZWFkSW50MzJCRSA6IGJ1Zi5yZWFkSW50MzJMRTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBidWYubGVuZ3RoOyBpICs9IGludFNpemUpIHtcbiAgICBhcnIucHVzaChmbi5jYWxsKGJ1ZiwgaSkpO1xuICB9XG4gIHJldHVybiBhcnI7XG59XG5cbmZ1bmN0aW9uIHRvQnVmZmVyKGFyciwgc2l6ZSwgYmlnRW5kaWFuKSB7XG4gIHZhciBidWYgPSBuZXcgQnVmZmVyKHNpemUpO1xuICB2YXIgZm4gPSBiaWdFbmRpYW4gPyBidWYud3JpdGVJbnQzMkJFIDogYnVmLndyaXRlSW50MzJMRTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcbiAgICBmbi5jYWxsKGJ1ZiwgYXJyW2ldLCBpICogNCwgdHJ1ZSk7XG4gIH1cbiAgcmV0dXJuIGJ1Zjtcbn1cblxuZnVuY3Rpb24gaGFzaChidWYsIGZuLCBoYXNoU2l6ZSwgYmlnRW5kaWFuKSB7XG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKGJ1ZikpIGJ1ZiA9IG5ldyBCdWZmZXIoYnVmKTtcbiAgdmFyIGFyciA9IGZuKHRvQXJyYXkoYnVmLCBiaWdFbmRpYW4pLCBidWYubGVuZ3RoICogY2hyc3opO1xuICByZXR1cm4gdG9CdWZmZXIoYXJyLCBoYXNoU2l6ZSwgYmlnRW5kaWFuKTtcbn1cbmV4cG9ydHMuaGFzaCA9IGhhc2g7IiwiJ3VzZSBzdHJpY3QnO1xuLypcbiAqIEEgSmF2YVNjcmlwdCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgUlNBIERhdGEgU2VjdXJpdHksIEluYy4gTUQ1IE1lc3NhZ2VcbiAqIERpZ2VzdCBBbGdvcml0aG0sIGFzIGRlZmluZWQgaW4gUkZDIDEzMjEuXG4gKiBWZXJzaW9uIDIuMSBDb3B5cmlnaHQgKEMpIFBhdWwgSm9obnN0b24gMTk5OSAtIDIwMDIuXG4gKiBPdGhlciBjb250cmlidXRvcnM6IEdyZWcgSG9sdCwgQW5kcmV3IEtlcGVydCwgWWRuYXIsIExvc3RpbmV0XG4gKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQlNEIExpY2Vuc2VcbiAqIFNlZSBodHRwOi8vcGFqaG9tZS5vcmcudWsvY3J5cHQvbWQ1IGZvciBtb3JlIGluZm8uXG4gKi9cblxudmFyIGhlbHBlcnMgPSByZXF1aXJlKCcuL2hlbHBlcnMnKTtcblxuLypcbiAqIENhbGN1bGF0ZSB0aGUgTUQ1IG9mIGFuIGFycmF5IG9mIGxpdHRsZS1lbmRpYW4gd29yZHMsIGFuZCBhIGJpdCBsZW5ndGhcbiAqL1xuZnVuY3Rpb24gY29yZV9tZDUoeCwgbGVuKVxue1xuICAvKiBhcHBlbmQgcGFkZGluZyAqL1xuICB4W2xlbiA+PiA1XSB8PSAweDgwIDw8ICgobGVuKSAlIDMyKTtcbiAgeFsoKChsZW4gKyA2NCkgPj4+IDkpIDw8IDQpICsgMTRdID0gbGVuO1xuXG4gIHZhciBhID0gIDE3MzI1ODQxOTM7XG4gIHZhciBiID0gLTI3MTczMzg3OTtcbiAgdmFyIGMgPSAtMTczMjU4NDE5NDtcbiAgdmFyIGQgPSAgMjcxNzMzODc4O1xuXG4gIGZvcih2YXIgaSA9IDA7IGkgPCB4Lmxlbmd0aDsgaSArPSAxNilcbiAge1xuICAgIHZhciBvbGRhID0gYTtcbiAgICB2YXIgb2xkYiA9IGI7XG4gICAgdmFyIG9sZGMgPSBjO1xuICAgIHZhciBvbGRkID0gZDtcblxuICAgIGEgPSBtZDVfZmYoYSwgYiwgYywgZCwgeFtpKyAwXSwgNyAsIC02ODA4NzY5MzYpO1xuICAgIGQgPSBtZDVfZmYoZCwgYSwgYiwgYywgeFtpKyAxXSwgMTIsIC0zODk1NjQ1ODYpO1xuICAgIGMgPSBtZDVfZmYoYywgZCwgYSwgYiwgeFtpKyAyXSwgMTcsICA2MDYxMDU4MTkpO1xuICAgIGIgPSBtZDVfZmYoYiwgYywgZCwgYSwgeFtpKyAzXSwgMjIsIC0xMDQ0NTI1MzMwKTtcbiAgICBhID0gbWQ1X2ZmKGEsIGIsIGMsIGQsIHhbaSsgNF0sIDcgLCAtMTc2NDE4ODk3KTtcbiAgICBkID0gbWQ1X2ZmKGQsIGEsIGIsIGMsIHhbaSsgNV0sIDEyLCAgMTIwMDA4MDQyNik7XG4gICAgYyA9IG1kNV9mZihjLCBkLCBhLCBiLCB4W2krIDZdLCAxNywgLTE0NzMyMzEzNDEpO1xuICAgIGIgPSBtZDVfZmYoYiwgYywgZCwgYSwgeFtpKyA3XSwgMjIsIC00NTcwNTk4Myk7XG4gICAgYSA9IG1kNV9mZihhLCBiLCBjLCBkLCB4W2krIDhdLCA3ICwgIDE3NzAwMzU0MTYpO1xuICAgIGQgPSBtZDVfZmYoZCwgYSwgYiwgYywgeFtpKyA5XSwgMTIsIC0xOTU4NDE0NDE3KTtcbiAgICBjID0gbWQ1X2ZmKGMsIGQsIGEsIGIsIHhbaSsxMF0sIDE3LCAtNDIwNjMpO1xuICAgIGIgPSBtZDVfZmYoYiwgYywgZCwgYSwgeFtpKzExXSwgMjIsIC0xOTkwNDA0MTYyKTtcbiAgICBhID0gbWQ1X2ZmKGEsIGIsIGMsIGQsIHhbaSsxMl0sIDcgLCAgMTgwNDYwMzY4Mik7XG4gICAgZCA9IG1kNV9mZihkLCBhLCBiLCBjLCB4W2krMTNdLCAxMiwgLTQwMzQxMTAxKTtcbiAgICBjID0gbWQ1X2ZmKGMsIGQsIGEsIGIsIHhbaSsxNF0sIDE3LCAtMTUwMjAwMjI5MCk7XG4gICAgYiA9IG1kNV9mZihiLCBjLCBkLCBhLCB4W2krMTVdLCAyMiwgIDEyMzY1MzUzMjkpO1xuXG4gICAgYSA9IG1kNV9nZyhhLCBiLCBjLCBkLCB4W2krIDFdLCA1ICwgLTE2NTc5NjUxMCk7XG4gICAgZCA9IG1kNV9nZyhkLCBhLCBiLCBjLCB4W2krIDZdLCA5ICwgLTEwNjk1MDE2MzIpO1xuICAgIGMgPSBtZDVfZ2coYywgZCwgYSwgYiwgeFtpKzExXSwgMTQsICA2NDM3MTc3MTMpO1xuICAgIGIgPSBtZDVfZ2coYiwgYywgZCwgYSwgeFtpKyAwXSwgMjAsIC0zNzM4OTczMDIpO1xuICAgIGEgPSBtZDVfZ2coYSwgYiwgYywgZCwgeFtpKyA1XSwgNSAsIC03MDE1NTg2OTEpO1xuICAgIGQgPSBtZDVfZ2coZCwgYSwgYiwgYywgeFtpKzEwXSwgOSAsICAzODAxNjA4Myk7XG4gICAgYyA9IG1kNV9nZyhjLCBkLCBhLCBiLCB4W2krMTVdLCAxNCwgLTY2MDQ3ODMzNSk7XG4gICAgYiA9IG1kNV9nZyhiLCBjLCBkLCBhLCB4W2krIDRdLCAyMCwgLTQwNTUzNzg0OCk7XG4gICAgYSA9IG1kNV9nZyhhLCBiLCBjLCBkLCB4W2krIDldLCA1ICwgIDU2ODQ0NjQzOCk7XG4gICAgZCA9IG1kNV9nZyhkLCBhLCBiLCBjLCB4W2krMTRdLCA5ICwgLTEwMTk4MDM2OTApO1xuICAgIGMgPSBtZDVfZ2coYywgZCwgYSwgYiwgeFtpKyAzXSwgMTQsIC0xODczNjM5NjEpO1xuICAgIGIgPSBtZDVfZ2coYiwgYywgZCwgYSwgeFtpKyA4XSwgMjAsICAxMTYzNTMxNTAxKTtcbiAgICBhID0gbWQ1X2dnKGEsIGIsIGMsIGQsIHhbaSsxM10sIDUgLCAtMTQ0NDY4MTQ2Nyk7XG4gICAgZCA9IG1kNV9nZyhkLCBhLCBiLCBjLCB4W2krIDJdLCA5ICwgLTUxNDAzNzg0KTtcbiAgICBjID0gbWQ1X2dnKGMsIGQsIGEsIGIsIHhbaSsgN10sIDE0LCAgMTczNTMyODQ3Myk7XG4gICAgYiA9IG1kNV9nZyhiLCBjLCBkLCBhLCB4W2krMTJdLCAyMCwgLTE5MjY2MDc3MzQpO1xuXG4gICAgYSA9IG1kNV9oaChhLCBiLCBjLCBkLCB4W2krIDVdLCA0ICwgLTM3ODU1OCk7XG4gICAgZCA9IG1kNV9oaChkLCBhLCBiLCBjLCB4W2krIDhdLCAxMSwgLTIwMjI1NzQ0NjMpO1xuICAgIGMgPSBtZDVfaGgoYywgZCwgYSwgYiwgeFtpKzExXSwgMTYsICAxODM5MDMwNTYyKTtcbiAgICBiID0gbWQ1X2hoKGIsIGMsIGQsIGEsIHhbaSsxNF0sIDIzLCAtMzUzMDk1NTYpO1xuICAgIGEgPSBtZDVfaGgoYSwgYiwgYywgZCwgeFtpKyAxXSwgNCAsIC0xNTMwOTkyMDYwKTtcbiAgICBkID0gbWQ1X2hoKGQsIGEsIGIsIGMsIHhbaSsgNF0sIDExLCAgMTI3Mjg5MzM1Myk7XG4gICAgYyA9IG1kNV9oaChjLCBkLCBhLCBiLCB4W2krIDddLCAxNiwgLTE1NTQ5NzYzMik7XG4gICAgYiA9IG1kNV9oaChiLCBjLCBkLCBhLCB4W2krMTBdLCAyMywgLTEwOTQ3MzA2NDApO1xuICAgIGEgPSBtZDVfaGgoYSwgYiwgYywgZCwgeFtpKzEzXSwgNCAsICA2ODEyNzkxNzQpO1xuICAgIGQgPSBtZDVfaGgoZCwgYSwgYiwgYywgeFtpKyAwXSwgMTEsIC0zNTg1MzcyMjIpO1xuICAgIGMgPSBtZDVfaGgoYywgZCwgYSwgYiwgeFtpKyAzXSwgMTYsIC03MjI1MjE5NzkpO1xuICAgIGIgPSBtZDVfaGgoYiwgYywgZCwgYSwgeFtpKyA2XSwgMjMsICA3NjAyOTE4OSk7XG4gICAgYSA9IG1kNV9oaChhLCBiLCBjLCBkLCB4W2krIDldLCA0ICwgLTY0MDM2NDQ4Nyk7XG4gICAgZCA9IG1kNV9oaChkLCBhLCBiLCBjLCB4W2krMTJdLCAxMSwgLTQyMTgxNTgzNSk7XG4gICAgYyA9IG1kNV9oaChjLCBkLCBhLCBiLCB4W2krMTVdLCAxNiwgIDUzMDc0MjUyMCk7XG4gICAgYiA9IG1kNV9oaChiLCBjLCBkLCBhLCB4W2krIDJdLCAyMywgLTk5NTMzODY1MSk7XG5cbiAgICBhID0gbWQ1X2lpKGEsIGIsIGMsIGQsIHhbaSsgMF0sIDYgLCAtMTk4NjMwODQ0KTtcbiAgICBkID0gbWQ1X2lpKGQsIGEsIGIsIGMsIHhbaSsgN10sIDEwLCAgMTEyNjg5MTQxNSk7XG4gICAgYyA9IG1kNV9paShjLCBkLCBhLCBiLCB4W2krMTRdLCAxNSwgLTE0MTYzNTQ5MDUpO1xuICAgIGIgPSBtZDVfaWkoYiwgYywgZCwgYSwgeFtpKyA1XSwgMjEsIC01NzQzNDA1NSk7XG4gICAgYSA9IG1kNV9paShhLCBiLCBjLCBkLCB4W2krMTJdLCA2ICwgIDE3MDA0ODU1NzEpO1xuICAgIGQgPSBtZDVfaWkoZCwgYSwgYiwgYywgeFtpKyAzXSwgMTAsIC0xODk0OTg2NjA2KTtcbiAgICBjID0gbWQ1X2lpKGMsIGQsIGEsIGIsIHhbaSsxMF0sIDE1LCAtMTA1MTUyMyk7XG4gICAgYiA9IG1kNV9paShiLCBjLCBkLCBhLCB4W2krIDFdLCAyMSwgLTIwNTQ5MjI3OTkpO1xuICAgIGEgPSBtZDVfaWkoYSwgYiwgYywgZCwgeFtpKyA4XSwgNiAsICAxODczMzEzMzU5KTtcbiAgICBkID0gbWQ1X2lpKGQsIGEsIGIsIGMsIHhbaSsxNV0sIDEwLCAtMzA2MTE3NDQpO1xuICAgIGMgPSBtZDVfaWkoYywgZCwgYSwgYiwgeFtpKyA2XSwgMTUsIC0xNTYwMTk4MzgwKTtcbiAgICBiID0gbWQ1X2lpKGIsIGMsIGQsIGEsIHhbaSsxM10sIDIxLCAgMTMwOTE1MTY0OSk7XG4gICAgYSA9IG1kNV9paShhLCBiLCBjLCBkLCB4W2krIDRdLCA2ICwgLTE0NTUyMzA3MCk7XG4gICAgZCA9IG1kNV9paShkLCBhLCBiLCBjLCB4W2krMTFdLCAxMCwgLTExMjAyMTAzNzkpO1xuICAgIGMgPSBtZDVfaWkoYywgZCwgYSwgYiwgeFtpKyAyXSwgMTUsICA3MTg3ODcyNTkpO1xuICAgIGIgPSBtZDVfaWkoYiwgYywgZCwgYSwgeFtpKyA5XSwgMjEsIC0zNDM0ODU1NTEpO1xuXG4gICAgYSA9IHNhZmVfYWRkKGEsIG9sZGEpO1xuICAgIGIgPSBzYWZlX2FkZChiLCBvbGRiKTtcbiAgICBjID0gc2FmZV9hZGQoYywgb2xkYyk7XG4gICAgZCA9IHNhZmVfYWRkKGQsIG9sZGQpO1xuICB9XG4gIHJldHVybiBBcnJheShhLCBiLCBjLCBkKTtcblxufVxuXG4vKlxuICogVGhlc2UgZnVuY3Rpb25zIGltcGxlbWVudCB0aGUgZm91ciBiYXNpYyBvcGVyYXRpb25zIHRoZSBhbGdvcml0aG0gdXNlcy5cbiAqL1xuZnVuY3Rpb24gbWQ1X2NtbihxLCBhLCBiLCB4LCBzLCB0KVxue1xuICByZXR1cm4gc2FmZV9hZGQoYml0X3JvbChzYWZlX2FkZChzYWZlX2FkZChhLCBxKSwgc2FmZV9hZGQoeCwgdCkpLCBzKSxiKTtcbn1cbmZ1bmN0aW9uIG1kNV9mZihhLCBiLCBjLCBkLCB4LCBzLCB0KVxue1xuICByZXR1cm4gbWQ1X2NtbigoYiAmIGMpIHwgKCh+YikgJiBkKSwgYSwgYiwgeCwgcywgdCk7XG59XG5mdW5jdGlvbiBtZDVfZ2coYSwgYiwgYywgZCwgeCwgcywgdClcbntcbiAgcmV0dXJuIG1kNV9jbW4oKGIgJiBkKSB8IChjICYgKH5kKSksIGEsIGIsIHgsIHMsIHQpO1xufVxuZnVuY3Rpb24gbWQ1X2hoKGEsIGIsIGMsIGQsIHgsIHMsIHQpXG57XG4gIHJldHVybiBtZDVfY21uKGIgXiBjIF4gZCwgYSwgYiwgeCwgcywgdCk7XG59XG5mdW5jdGlvbiBtZDVfaWkoYSwgYiwgYywgZCwgeCwgcywgdClcbntcbiAgcmV0dXJuIG1kNV9jbW4oYyBeIChiIHwgKH5kKSksIGEsIGIsIHgsIHMsIHQpO1xufVxuXG4vKlxuICogQWRkIGludGVnZXJzLCB3cmFwcGluZyBhdCAyXjMyLiBUaGlzIHVzZXMgMTYtYml0IG9wZXJhdGlvbnMgaW50ZXJuYWxseVxuICogdG8gd29yayBhcm91bmQgYnVncyBpbiBzb21lIEpTIGludGVycHJldGVycy5cbiAqL1xuZnVuY3Rpb24gc2FmZV9hZGQoeCwgeSlcbntcbiAgdmFyIGxzdyA9ICh4ICYgMHhGRkZGKSArICh5ICYgMHhGRkZGKTtcbiAgdmFyIG1zdyA9ICh4ID4+IDE2KSArICh5ID4+IDE2KSArIChsc3cgPj4gMTYpO1xuICByZXR1cm4gKG1zdyA8PCAxNikgfCAobHN3ICYgMHhGRkZGKTtcbn1cblxuLypcbiAqIEJpdHdpc2Ugcm90YXRlIGEgMzItYml0IG51bWJlciB0byB0aGUgbGVmdC5cbiAqL1xuZnVuY3Rpb24gYml0X3JvbChudW0sIGNudClcbntcbiAgcmV0dXJuIChudW0gPDwgY250KSB8IChudW0gPj4+ICgzMiAtIGNudCkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIG1kNShidWYpIHtcbiAgcmV0dXJuIGhlbHBlcnMuaGFzaChidWYsIGNvcmVfbWQ1LCAxNik7XG59OyIsIid1c2Ugc3RyaWN0JztcbnZhciBjcmVhdGVIYXNoID0gcmVxdWlyZSgnY3JlYXRlLWhhc2gvYnJvd3NlcicpO1xudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKVxuXG52YXIgVHJhbnNmb3JtID0gcmVxdWlyZSgnc3RyZWFtJykuVHJhbnNmb3JtXG5cbnZhciBaRVJPUyA9IG5ldyBCdWZmZXIoMTI4KVxuWkVST1MuZmlsbCgwKVxuXG5mdW5jdGlvbiBIbWFjKGFsZywga2V5KSB7XG4gIFRyYW5zZm9ybS5jYWxsKHRoaXMpXG4gIGFsZyA9IGFsZy50b0xvd2VyQ2FzZSgpXG4gIGlmICh0eXBlb2Yga2V5ID09PSAnc3RyaW5nJykge1xuICAgIGtleSA9IG5ldyBCdWZmZXIoa2V5KVxuICB9XG5cbiAgdmFyIGJsb2Nrc2l6ZSA9IChhbGcgPT09ICdzaGE1MTInIHx8IGFsZyA9PT0gJ3NoYTM4NCcpID8gMTI4IDogNjRcblxuICB0aGlzLl9hbGcgPSBhbGdcbiAgdGhpcy5fa2V5ID0ga2V5XG5cbiAgaWYgKGtleS5sZW5ndGggPiBibG9ja3NpemUpIHtcbiAgICBrZXkgPSBjcmVhdGVIYXNoKGFsZykudXBkYXRlKGtleSkuZGlnZXN0KClcblxuICB9IGVsc2UgaWYgKGtleS5sZW5ndGggPCBibG9ja3NpemUpIHtcbiAgICBrZXkgPSBCdWZmZXIuY29uY2F0KFtrZXksIFpFUk9TXSwgYmxvY2tzaXplKVxuICB9XG5cbiAgdmFyIGlwYWQgPSB0aGlzLl9pcGFkID0gbmV3IEJ1ZmZlcihibG9ja3NpemUpXG4gIHZhciBvcGFkID0gdGhpcy5fb3BhZCA9IG5ldyBCdWZmZXIoYmxvY2tzaXplKVxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgYmxvY2tzaXplOyBpKyspIHtcbiAgICBpcGFkW2ldID0ga2V5W2ldIF4gMHgzNlxuICAgIG9wYWRbaV0gPSBrZXlbaV0gXiAweDVDXG4gIH1cblxuICB0aGlzLl9oYXNoID0gY3JlYXRlSGFzaChhbGcpLnVwZGF0ZShpcGFkKVxufVxuXG5pbmhlcml0cyhIbWFjLCBUcmFuc2Zvcm0pXG5cbkhtYWMucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uIChkYXRhLCBlbmMpIHtcbiAgdGhpcy5faGFzaC51cGRhdGUoZGF0YSwgZW5jKVxuXG4gIHJldHVybiB0aGlzXG59XG5cbkhtYWMucHJvdG90eXBlLl90cmFuc2Zvcm0gPSBmdW5jdGlvbiAoZGF0YSwgXywgbmV4dCkge1xuICB0aGlzLl9oYXNoLnVwZGF0ZShkYXRhKVxuXG4gIG5leHQoKVxufVxuXG5IbWFjLnByb3RvdHlwZS5fZmx1c2ggPSBmdW5jdGlvbiAobmV4dCkge1xuICB0aGlzLnB1c2godGhpcy5kaWdlc3QoKSlcblxuICBuZXh0KClcbn1cblxuSG1hYy5wcm90b3R5cGUuZGlnZXN0ID0gZnVuY3Rpb24gKGVuYykge1xuICB2YXIgaCA9IHRoaXMuX2hhc2guZGlnZXN0KClcblxuICByZXR1cm4gY3JlYXRlSGFzaCh0aGlzLl9hbGcpLnVwZGF0ZSh0aGlzLl9vcGFkKS51cGRhdGUoaCkuZGlnZXN0KGVuYylcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBjcmVhdGVIbWFjKGFsZywga2V5KSB7XG4gIHJldHVybiBuZXcgSG1hYyhhbGcsIGtleSlcbn1cbiIsInZhciBjcCAgICAgPSByZXF1aXJlKCdjaGlsZF9wcm9jZXNzJyk7XG52YXIgcGFyc2UgID0gcmVxdWlyZSgnLi9saWIvcGFyc2UnKTtcbnZhciBlbm9lbnQgPSByZXF1aXJlKCcuL2xpYi9lbm9lbnQnKTtcblxuZnVuY3Rpb24gc3Bhd24oY29tbWFuZCwgYXJncywgb3B0aW9ucykge1xuICAgIHZhciBwYXJzZWQ7XG4gICAgdmFyIHNwYXduZWQ7XG5cbiAgICAvLyBQYXJzZSB0aGUgYXJndW1lbnRzXG4gICAgcGFyc2VkID0gcGFyc2UoY29tbWFuZCwgYXJncywgb3B0aW9ucyk7XG5cbiAgICAvLyBTcGF3biB0aGUgY2hpbGQgcHJvY2Vzc1xuICAgIHNwYXduZWQgPSBjcC5zcGF3bihwYXJzZWQuY29tbWFuZCwgcGFyc2VkLmFyZ3MsIHBhcnNlZC5vcHRpb25zKTtcblxuICAgIC8vIEhvb2sgaW50byBjaGlsZCBwcm9jZXNzIFwiZXhpdFwiIGV2ZW50IHRvIGVtaXQgYW4gZXJyb3IgaWYgdGhlIGNvbW1hbmRcbiAgICAvLyBkb2VzIG5vdCBleGlzdHMsIHNlZTogaHR0cHM6Ly9naXRodWIuY29tL0luZGlnb1VuaXRlZC9ub2RlLWNyb3NzLXNwYXduL2lzc3Vlcy8xNlxuICAgIGVub2VudC5ob29rQ2hpbGRQcm9jZXNzKHNwYXduZWQsIHBhcnNlZCk7XG5cbiAgICByZXR1cm4gc3Bhd25lZDtcbn1cblxubW9kdWxlLmV4cG9ydHMgICAgICAgPSBzcGF3bjtcbm1vZHVsZS5leHBvcnRzLnNwYXduID0gc3Bhd247XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBpc1dpbiA9IHByb2Nlc3MucGxhdGZvcm0gPT09ICd3aW4zMic7XG5cbmZ1bmN0aW9uIG5vdEZvdW5kRXJyb3IoY29tbWFuZCwgc3lzY2FsbCkge1xuICAgIHZhciBlcnI7XG5cbiAgICBlcnIgPSBuZXcgRXJyb3Ioc3lzY2FsbCArICcgJyArIGNvbW1hbmQgKyAnIEVOT0VOVCcpO1xuICAgIGVyci5jb2RlID0gZXJyLmVycm5vID0gJ0VOT0VOVCc7XG4gICAgZXJyLnN5c2NhbGwgPSBzeXNjYWxsICsgJyAnICsgY29tbWFuZDtcblxuICAgIHJldHVybiBlcnI7XG59XG5cbmZ1bmN0aW9uIGhvb2tDaGlsZFByb2Nlc3MoY3AsIHBhcnNlZCkge1xuICAgIHZhciBvcmlnaW5hbEVtaXQ7XG5cbiAgICBpZiAoIWlzV2luKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBvcmlnaW5hbEVtaXQgPSBjcC5lbWl0O1xuICAgIGNwLmVtaXQgPSBmdW5jdGlvbiAobmFtZSwgYXJnMSkge1xuICAgICAgICB2YXIgZXJyO1xuXG4gICAgICAgIC8vIElmIGVtaXR0aW5nIFwiZXhpdFwiIGV2ZW50IGFuZCBleGl0IGNvZGUgaXMgMSwgd2UgbmVlZCB0byBjaGVjayBpZlxuICAgICAgICAvLyB0aGUgY29tbWFuZCBleGlzdHMgYW5kIGVtaXQgYW4gXCJlcnJvclwiIGluc3RlYWRcbiAgICAgICAgLy8gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vSW5kaWdvVW5pdGVkL25vZGUtY3Jvc3Mtc3Bhd24vaXNzdWVzLzE2XG4gICAgICAgIGlmIChuYW1lID09PSAnZXhpdCcpIHtcbiAgICAgICAgICAgIGVyciA9IHZlcmlmeUVOT0VOVChhcmcxLCBwYXJzZWQsICdzcGF3bicpO1xuXG4gICAgICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9yaWdpbmFsRW1pdC5jYWxsKGNwLCAnZXJyb3InLCBlcnIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG9yaWdpbmFsRW1pdC5hcHBseShjcCwgYXJndW1lbnRzKTtcbiAgICB9O1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlFTk9FTlQoc3RhdHVzLCBwYXJzZWQsIHN5c2NhbGwpIHtcbiAgICBpZiAoaXNXaW4gJiYgc3RhdHVzID09PSAxICYmICFwYXJzZWQuZmlsZSkge1xuICAgICAgICByZXR1cm4gbm90Rm91bmRFcnJvcihwYXJzZWQub3JpZ2luYWwsIHN5c2NhbGwpO1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xufVxuXG5tb2R1bGUuZXhwb3J0cy5ob29rQ2hpbGRQcm9jZXNzID0gaG9va0NoaWxkUHJvY2Vzcztcbm1vZHVsZS5leHBvcnRzLnZlcmlmeUVOT0VOVCAgICAgPSB2ZXJpZnlFTk9FTlQ7XG5tb2R1bGUuZXhwb3J0cy5ub3RGb3VuZEVycm9yICAgID0gbm90Rm91bmRFcnJvcjtcbiIsInZhciBmcyAgICAgICAgICAgICA9IHJlcXVpcmUoJ2ZzJyk7XG52YXIgTFJVICAgICAgICAgICAgPSByZXF1aXJlKCdscnUtY2FjaGUnKTtcbnZhciByZXNvbHZlQ29tbWFuZCA9IHJlcXVpcmUoJy4vcmVzb2x2ZUNvbW1hbmQnKTtcbnZhciBtaXhJbiAgICAgICAgICA9IHJlcXVpcmUoJy4vdXRpbC9taXhJbicpO1xuXG52YXIgaXNXaW4gICAgICAgID0gcHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJztcbnZhciBzaGViYW5nQ2FjaGUgPSBMUlUoeyBtYXg6IDUwLCBtYXhBZ2U6IDMwICogMTAwMCB9KTsgIC8vIENhY2hlIGp1c3QgZm9yIDMwc2VjXG5cbmZ1bmN0aW9uIHJlYWRTaGViYW5nKGNvbW1hbmQpIHtcbiAgICB2YXIgYnVmZmVyO1xuICAgIHZhciBmZDtcbiAgICB2YXIgbWF0Y2g7XG4gICAgdmFyIHNoZWJhbmc7XG5cbiAgICAvLyBDaGVjayBpZiBpdCBpcyBpbiB0aGUgY2FjaGUgZmlyc3RcbiAgICBpZiAoc2hlYmFuZ0NhY2hlLmhhcyhjb21tYW5kKSkge1xuICAgICAgICByZXR1cm4gc2hlYmFuZ0NhY2hlLmdldChjb21tYW5kKTtcbiAgICB9XG5cbiAgICAvLyBSZWFkIHRoZSBmaXJzdCAxNTAgYnl0ZXMgZnJvbSB0aGUgZmlsZVxuICAgIGJ1ZmZlciA9IG5ldyBCdWZmZXIoMTUwKTtcblxuICAgIHRyeSB7XG4gICAgICAgIGZkID0gZnMub3BlblN5bmMoY29tbWFuZCwgJ3InKTtcbiAgICAgICAgZnMucmVhZFN5bmMoZmQsIGJ1ZmZlciwgMCwgMTUwLCAwKTtcbiAgICB9IGNhdGNoIChlKSB7fVxuXG4gICAgLy8gQ2hlY2sgaWYgaXQgaXMgYSBzaGViYW5nXG4gICAgbWF0Y2ggPSBidWZmZXIudG9TdHJpbmcoKS50cmltKCkubWF0Y2goL1xcI1xcIVxcL3VzclxcL2JpblxcL2VudiAoW15cXHJcXG5dKykvaSk7XG4gICAgc2hlYmFuZyA9IG1hdGNoICYmIG1hdGNoWzFdO1xuXG4gICAgLy8gU3RvcmUgdGhlIHNoZWJhbmcgaW4gdGhlIGNhY2hlXG4gICAgc2hlYmFuZ0NhY2hlLnNldChjb21tYW5kLCBzaGViYW5nKTtcblxuICAgIHJldHVybiBzaGViYW5nO1xufVxuXG5mdW5jdGlvbiBlc2NhcGVBcmcoYXJnLCBxdW90ZSkge1xuICAgIC8vIENvbnZlcnQgdG8gc3RyaW5nXG4gICAgYXJnID0gJycgKyBhcmc7XG5cbiAgICAvLyBJZiB3ZSBhcmUgbm90IGdvaW5nIHRvIHF1b3RlIHRoZSBhcmd1bWVudCxcbiAgICAvLyBlc2NhcGUgc2hlbGwgbWV0YWNoYXJhY3RlcnMsIGluY2x1ZGluZyBkb3VibGUgYW5kIHNpbmdsZSBxdW90ZXM6XG4gICAgaWYgKCFxdW90ZSkge1xuICAgICAgICBhcmcgPSBhcmcucmVwbGFjZSgvKFtcXChcXCklIVxcXjw+Jnw7LFwiJyBdKS9nLCAnXiQxJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgLy8gU2VxdWVuY2Ugb2YgYmFja3NsYXNoZXMgZm9sbG93ZWQgYnkgYSBkb3VibGUgcXVvdGU6XG4gICAgICAgIC8vIGRvdWJsZSB1cCBhbGwgdGhlIGJhY2tzbGFzaGVzIGFuZCBlc2NhcGUgdGhlIGRvdWJsZSBxdW90ZVxuICAgICAgICBhcmcgPSBhcmcucmVwbGFjZSgvKFxcXFwqKVwiL2dpLCAnJDEkMVxcXFxcIicpO1xuXG4gICAgICAgIC8vIFNlcXVlbmNlIG9mIGJhY2tzbGFzaGVzIGZvbGxvd2VkIGJ5IHRoZSBlbmQgb2YgdGhlIHN0cmluZ1xuICAgICAgICAvLyAod2hpY2ggd2lsbCBiZWNvbWUgYSBkb3VibGUgcXVvdGUgbGF0ZXIpOlxuICAgICAgICAvLyBkb3VibGUgdXAgYWxsIHRoZSBiYWNrc2xhc2hlc1xuICAgICAgICBhcmcgPSBhcmcucmVwbGFjZSgvKFxcXFwqKSQvLCAnJDEkMScpO1xuXG4gICAgICAgIC8vIEFsbCBvdGhlciBiYWNrc2xhc2hlcyBvY2N1ciBsaXRlcmFsbHlcblxuICAgICAgICAvLyBRdW90ZSB0aGUgd2hvbGUgdGhpbmc6XG4gICAgICAgIGFyZyA9ICdcIicgKyBhcmcgKyAnXCInO1xuICAgIH1cblxuICAgIHJldHVybiBhcmc7XG59XG5cbmZ1bmN0aW9uIGVzY2FwZUNvbW1hbmQoY29tbWFuZCkge1xuICAgIC8vIERvIG5vdCBlc2NhcGUgaWYgdGhpcyBjb21tYW5kIGlzIG5vdCBkYW5nZXJvdXMuLlxuICAgIC8vIFdlIGRvIHRoaXMgc28gdGhhdCBjb21tYW5kcyBsaWtlIFwiZWNob1wiIG9yIFwiaWZjb25maWdcIiB3b3JrXG4gICAgLy8gUXVvdGluZyB0aGVtLCB3aWxsIG1ha2UgdGhlbSB1bm5hY2Nlc3NpYmxlXG4gICAgcmV0dXJuIC9eW2EtejAtOV8tXSskL2kudGVzdChjb21tYW5kKSA/IGNvbW1hbmQgOiBlc2NhcGVBcmcoY29tbWFuZCwgdHJ1ZSk7XG59XG5cbmZ1bmN0aW9uIHBhcnNlQ2FsbChjb21tYW5kLCBhcmdzLCBvcHRpb25zKSB7XG4gICAgdmFyIHNoZWJhbmc7XG4gICAgdmFyIGFwcGx5UXVvdGVzO1xuICAgIHZhciBmaWxlO1xuICAgIHZhciBvcmlnaW5hbDtcblxuICAgIC8vIE5vcm1hbGl6ZSBhcmd1bWVudHMsIHNpbWlsYXIgdG8gbm9kZWpzXG4gICAgaWYgKGFyZ3MgJiYgIUFycmF5LmlzQXJyYXkoYXJncykpIHtcbiAgICAgICAgb3B0aW9ucyA9IGFyZ3M7XG4gICAgICAgIGFyZ3MgPSBudWxsO1xuICAgIH1cblxuICAgIGFyZ3MgPSBhcmdzID8gYXJncy5zbGljZSgwKSA6IFtdOyAgLy8gQ2xvbmUgYXJyYXkgdG8gYXZvaWQgY2hhbmdpbmcgdGhlIG9yaWdpbmFsXG4gICAgb3B0aW9ucyA9IG1peEluKHt9LCBvcHRpb25zKTtcbiAgICBvcmlnaW5hbCA9IGNvbW1hbmQ7XG5cbiAgICBpZiAoaXNXaW4pIHtcbiAgICAgICAgLy8gRGV0ZWN0ICYgYWRkIHN1cHBvcnQgZm9yIHNoZWJhbmdzXG4gICAgICAgIC8vIE5vdGUgdGhhdCBpZiB3ZSB3ZXJlIGFibGUgdG8gcmVzb2x2ZSB0aGUgY29tbWFuZCwgd2Ugc2tpcCB0aGlzIHN0ZXAgZW50aXJlbHlcbiAgICAgICAgZmlsZSA9IHJlc29sdmVDb21tYW5kKGNvbW1hbmQpO1xuXG4gICAgICAgIGlmICghZmlsZSkge1xuICAgICAgICAgICAgZmlsZSA9IHJlc29sdmVDb21tYW5kKGNvbW1hbmQsIHRydWUpO1xuICAgICAgICAgICAgc2hlYmFuZyA9IGZpbGUgJiYgcmVhZFNoZWJhbmcoZmlsZSk7XG4gICAgICAgICAgICBpZiAoc2hlYmFuZykge1xuICAgICAgICAgICAgICAgIGFyZ3MudW5zaGlmdChmaWxlKTtcbiAgICAgICAgICAgICAgICBjb21tYW5kID0gc2hlYmFuZztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEVzY2FwZSBjb21tYW5kICYgYXJndW1lbnRzXG4gICAgICAgIGFwcGx5UXVvdGVzID0gY29tbWFuZCAhPT0gJ2VjaG8nOyAgLy8gRG8gbm90IHF1b3RlIGFyZ3VtZW50cyBmb3IgdGhlIHNwZWNpYWwgXCJlY2hvXCIgY29tbWFuZFxuICAgICAgICBjb21tYW5kID0gZXNjYXBlQ29tbWFuZChjb21tYW5kKTtcbiAgICAgICAgYXJncyA9IGFyZ3MubWFwKGZ1bmN0aW9uIChhcmcpIHtcbiAgICAgICAgICAgIHJldHVybiBlc2NhcGVBcmcoYXJnLCBhcHBseVF1b3Rlcyk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIFVzZSBjbWQuZXhlXG4gICAgICAgIGFyZ3MgPSBbJy9zJywgJy9jJywgJ1wiJyArIGNvbW1hbmQgKyAoYXJncy5sZW5ndGggPyAnICcgKyBhcmdzLmpvaW4oJyAnKSA6ICcnKSArICdcIiddO1xuICAgICAgICBjb21tYW5kID0gcHJvY2Vzcy5lbnYuY29tc3BlYyB8fCAnY21kLmV4ZSc7XG5cbiAgICAgICAgLy8gVGVsbCBub2RlJ3Mgc3Bhd24gdGhhdCB0aGUgYXJndW1lbnRzIGFyZSBhbHJlYWR5IGVzY2FwZWRcbiAgICAgICAgb3B0aW9ucy53aW5kb3dzVmVyYmF0aW1Bcmd1bWVudHMgPSB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAgIGNvbW1hbmQ6IGNvbW1hbmQsXG4gICAgICAgIGFyZ3M6IGFyZ3MsXG4gICAgICAgIG9wdGlvbnM6IG9wdGlvbnMsXG4gICAgICAgIGZpbGU6IGZpbGUsXG4gICAgICAgIG9yaWdpbmFsOiBvcmlnaW5hbFxuICAgIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gcGFyc2VDYWxsO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgcGF0aCAgPSByZXF1aXJlKCdwYXRoJyk7XG52YXIgd2hpY2ggPSByZXF1aXJlKCd3aGljaCcpO1xudmFyIExSVSAgID0gcmVxdWlyZSgnbHJ1LWNhY2hlJyk7XG5cbnZhciByZXNvbHZlQ2FjaGUgPSBMUlUoeyBtYXg6IDUwLCBtYXhBZ2U6IDMwICogMTAwMCB9KTsgIC8vIENhY2hlIGp1c3QgZm9yIDMwc2VjXG5cbmZ1bmN0aW9uIHJlc29sdmVDb21tYW5kKGNvbW1hbmQsIG5vRXh0ZW5zaW9uKSB7XG4gICAgdmFyIHJlc29sdmVkO1xuXG4gICAgbm9FeHRlbnNpb24gPSAhIW5vRXh0ZW5zaW9uO1xuICAgIHJlc29sdmVkID0gcmVzb2x2ZUNhY2hlLmdldChjb21tYW5kICsgJyEnICsgbm9FeHRlbnNpb24pO1xuXG4gICAgLy8gQ2hlY2sgaWYgaXRzIHJlc29sdmVkIGluIHRoZSBjYWNoZVxuICAgIGlmIChyZXNvbHZlQ2FjaGUuaGFzKGNvbW1hbmQpKSB7XG4gICAgICAgIHJldHVybiByZXNvbHZlQ2FjaGUuZ2V0KGNvbW1hbmQpO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICAgIHJlc29sdmVkID0gIW5vRXh0ZW5zaW9uID9cbiAgICAgICAgICAgIHdoaWNoLnN5bmMoY29tbWFuZCkgOlxuICAgICAgICAgICAgd2hpY2guc3luYyhjb21tYW5kLCB7IHBhdGhFeHQ6IHBhdGguZGVsaW1pdGVyICsgKHByb2Nlc3MuZW52LlBBVEhFWFQgfHwgJycpICB9KTtcbiAgICB9IGNhdGNoIChlKSB7fVxuXG4gICAgcmVzb2x2ZUNhY2hlLnNldChjb21tYW5kICsgJyEnICsgbm9FeHRlbnNpb24sIHJlc29sdmVkKTtcblxuICAgIHJldHVybiByZXNvbHZlZDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSByZXNvbHZlQ29tbWFuZDtcbiIsIid1c2Ugc3RyaWN0JztcblxuZnVuY3Rpb24gbWl4SW4odGFyZ2V0LCBzb3VyY2UpIHtcbiAgICB2YXIga2V5O1xuXG4gICAgLy8gTm8gbmVlZCB0byBjaGVjayBmb3IgaGFzT3duUHJvcGVydHkuLiB0aGlzIGlzIHVzZWRcbiAgICAvLyBqdXN0IGluIHBsYWluIG9iamVjdHNcbiAgICBmb3IgKGtleSBpbiBzb3VyY2UpIHtcbiAgICAgICAgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGFyZ2V0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG1peEluO1xuIiwiJ3VzZSBzdHJpY3QnXG5cbmV4cG9ydHMucmFuZG9tQnl0ZXMgPSBleHBvcnRzLnJuZyA9IGV4cG9ydHMucHNldWRvUmFuZG9tQnl0ZXMgPSBleHBvcnRzLnBybmcgPSByZXF1aXJlKCdyYW5kb21ieXRlcycpXG5leHBvcnRzLmNyZWF0ZUhhc2ggPSBleHBvcnRzLkhhc2ggPSByZXF1aXJlKCdjcmVhdGUtaGFzaCcpXG5leHBvcnRzLmNyZWF0ZUhtYWMgPSBleHBvcnRzLkhtYWMgPSByZXF1aXJlKCdjcmVhdGUtaG1hYycpXG5cbnZhciBoYXNoZXMgPSBbJ3NoYTEnLCAnc2hhMjI0JywgJ3NoYTI1NicsICdzaGEzODQnLCAnc2hhNTEyJywgJ21kNScsICdybWQxNjAnXS5jb25jYXQoT2JqZWN0LmtleXMocmVxdWlyZSgnYnJvd3NlcmlmeS1zaWduL2FsZ29zJykpKVxuZXhwb3J0cy5nZXRIYXNoZXMgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBoYXNoZXNcbn1cblxudmFyIHAgPSByZXF1aXJlKCdwYmtkZjInKVxuZXhwb3J0cy5wYmtkZjIgPSBwLnBia2RmMlxuZXhwb3J0cy5wYmtkZjJTeW5jID0gcC5wYmtkZjJTeW5jXG5cbnZhciBhZXMgPSByZXF1aXJlKCdicm93c2VyaWZ5LWNpcGhlcicpXG47W1xuICAnQ2lwaGVyJyxcbiAgJ2NyZWF0ZUNpcGhlcicsXG4gICdDaXBoZXJpdicsXG4gICdjcmVhdGVDaXBoZXJpdicsXG4gICdEZWNpcGhlcicsXG4gICdjcmVhdGVEZWNpcGhlcicsXG4gICdEZWNpcGhlcml2JyxcbiAgJ2NyZWF0ZURlY2lwaGVyaXYnLFxuICAnZ2V0Q2lwaGVycycsXG4gICdsaXN0Q2lwaGVycydcbl0uZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gIGV4cG9ydHNba2V5XSA9IGFlc1trZXldXG59KVxuXG52YXIgZGggPSByZXF1aXJlKCdkaWZmaWUtaGVsbG1hbicpXG47W1xuICAnRGlmZmllSGVsbG1hbkdyb3VwJyxcbiAgJ2NyZWF0ZURpZmZpZUhlbGxtYW5Hcm91cCcsXG4gICdnZXREaWZmaWVIZWxsbWFuJyxcbiAgJ2NyZWF0ZURpZmZpZUhlbGxtYW4nLFxuICAnRGlmZmllSGVsbG1hbidcbl0uZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gIGV4cG9ydHNba2V5XSA9IGRoW2tleV1cbn0pXG5cbnZhciBzaWduID0gcmVxdWlyZSgnYnJvd3NlcmlmeS1zaWduJylcbjtbXG4gICdjcmVhdGVTaWduJyxcbiAgJ1NpZ24nLFxuICAnY3JlYXRlVmVyaWZ5JyxcbiAgJ1ZlcmlmeSdcbl0uZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gIGV4cG9ydHNba2V5XSA9IHNpZ25ba2V5XVxufSlcblxuZXhwb3J0cy5jcmVhdGVFQ0RIID0gcmVxdWlyZSgnY3JlYXRlLWVjZGgnKVxuXG52YXIgcHVibGljRW5jcnlwdCA9IHJlcXVpcmUoJ3B1YmxpYy1lbmNyeXB0JylcblxuO1tcbiAgJ3B1YmxpY0VuY3J5cHQnLFxuICAncHJpdmF0ZUVuY3J5cHQnLFxuICAncHVibGljRGVjcnlwdCcsXG4gICdwcml2YXRlRGVjcnlwdCdcbl0uZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gIGV4cG9ydHNba2V5XSA9IHB1YmxpY0VuY3J5cHRba2V5XVxufSlcblxuLy8gdGhlIGxlYXN0IEkgY2FuIGRvIGlzIG1ha2UgZXJyb3IgbWVzc2FnZXMgZm9yIHRoZSByZXN0IG9mIHRoZSBub2RlLmpzL2NyeXB0byBhcGkuXG47W1xuICAnY3JlYXRlQ3JlZGVudGlhbHMnXG5dLmZvckVhY2goZnVuY3Rpb24gKG5hbWUpIHtcbiAgZXhwb3J0c1tuYW1lXSA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoW1xuICAgICAgJ3NvcnJ5LCAnICsgbmFtZSArICcgaXMgbm90IGltcGxlbWVudGVkIHlldCcsXG4gICAgICAnd2UgYWNjZXB0IHB1bGwgcmVxdWVzdHMnLFxuICAgICAgJ2h0dHBzOi8vZ2l0aHViLmNvbS9jcnlwdG8tYnJvd3NlcmlmeS9jcnlwdG8tYnJvd3NlcmlmeSdcbiAgICBdLmpvaW4oJ1xcbicpKVxuICB9XG59KVxuIiwiLy8gaHR0cHM6Ly9kM2pzLm9yZy9kMy1hcnJheS8gVmVyc2lvbiAxLjEuMS4gQ29weXJpZ2h0IDIwMTcgTWlrZSBCb3N0b2NrLlxuKGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcblx0dHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnID8gZmFjdG9yeShleHBvcnRzKSA6XG5cdHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShbJ2V4cG9ydHMnXSwgZmFjdG9yeSkgOlxuXHQoZmFjdG9yeSgoZ2xvYmFsLmQzID0gZ2xvYmFsLmQzIHx8IHt9KSkpO1xufSh0aGlzLCAoZnVuY3Rpb24gKGV4cG9ydHMpIHsgJ3VzZSBzdHJpY3QnO1xuXG52YXIgYXNjZW5kaW5nID0gZnVuY3Rpb24oYSwgYikge1xuICByZXR1cm4gYSA8IGIgPyAtMSA6IGEgPiBiID8gMSA6IGEgPj0gYiA/IDAgOiBOYU47XG59O1xuXG52YXIgYmlzZWN0b3IgPSBmdW5jdGlvbihjb21wYXJlKSB7XG4gIGlmIChjb21wYXJlLmxlbmd0aCA9PT0gMSkgY29tcGFyZSA9IGFzY2VuZGluZ0NvbXBhcmF0b3IoY29tcGFyZSk7XG4gIHJldHVybiB7XG4gICAgbGVmdDogZnVuY3Rpb24oYSwgeCwgbG8sIGhpKSB7XG4gICAgICBpZiAobG8gPT0gbnVsbCkgbG8gPSAwO1xuICAgICAgaWYgKGhpID09IG51bGwpIGhpID0gYS5sZW5ndGg7XG4gICAgICB3aGlsZSAobG8gPCBoaSkge1xuICAgICAgICB2YXIgbWlkID0gbG8gKyBoaSA+Pj4gMTtcbiAgICAgICAgaWYgKGNvbXBhcmUoYVttaWRdLCB4KSA8IDApIGxvID0gbWlkICsgMTtcbiAgICAgICAgZWxzZSBoaSA9IG1pZDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBsbztcbiAgICB9LFxuICAgIHJpZ2h0OiBmdW5jdGlvbihhLCB4LCBsbywgaGkpIHtcbiAgICAgIGlmIChsbyA9PSBudWxsKSBsbyA9IDA7XG4gICAgICBpZiAoaGkgPT0gbnVsbCkgaGkgPSBhLmxlbmd0aDtcbiAgICAgIHdoaWxlIChsbyA8IGhpKSB7XG4gICAgICAgIHZhciBtaWQgPSBsbyArIGhpID4+PiAxO1xuICAgICAgICBpZiAoY29tcGFyZShhW21pZF0sIHgpID4gMCkgaGkgPSBtaWQ7XG4gICAgICAgIGVsc2UgbG8gPSBtaWQgKyAxO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGxvO1xuICAgIH1cbiAgfTtcbn07XG5cbmZ1bmN0aW9uIGFzY2VuZGluZ0NvbXBhcmF0b3IoZikge1xuICByZXR1cm4gZnVuY3Rpb24oZCwgeCkge1xuICAgIHJldHVybiBhc2NlbmRpbmcoZihkKSwgeCk7XG4gIH07XG59XG5cbnZhciBhc2NlbmRpbmdCaXNlY3QgPSBiaXNlY3Rvcihhc2NlbmRpbmcpO1xudmFyIGJpc2VjdFJpZ2h0ID0gYXNjZW5kaW5nQmlzZWN0LnJpZ2h0O1xudmFyIGJpc2VjdExlZnQgPSBhc2NlbmRpbmdCaXNlY3QubGVmdDtcblxudmFyIHBhaXJzID0gZnVuY3Rpb24oYXJyYXksIGYpIHtcbiAgaWYgKGYgPT0gbnVsbCkgZiA9IHBhaXI7XG4gIHZhciBpID0gMCwgbiA9IGFycmF5Lmxlbmd0aCAtIDEsIHAgPSBhcnJheVswXSwgcGFpcnMgPSBuZXcgQXJyYXkobiA8IDAgPyAwIDogbik7XG4gIHdoaWxlIChpIDwgbikgcGFpcnNbaV0gPSBmKHAsIHAgPSBhcnJheVsrK2ldKTtcbiAgcmV0dXJuIHBhaXJzO1xufTtcblxuZnVuY3Rpb24gcGFpcihhLCBiKSB7XG4gIHJldHVybiBbYSwgYl07XG59XG5cbnZhciBjcm9zcyA9IGZ1bmN0aW9uKGEsIGIsIGYpIHtcbiAgdmFyIG5hID0gYS5sZW5ndGgsIG5iID0gYi5sZW5ndGgsIGMgPSBuZXcgQXJyYXkobmEgKiBuYiksIGlhLCBpYiwgaWMsIHZhO1xuICBpZiAoZiA9PSBudWxsKSBmID0gcGFpcjtcbiAgZm9yIChpYSA9IGljID0gMDsgaWEgPCBuYTsgKytpYSkgZm9yICh2YSA9IGFbaWFdLCBpYiA9IDA7IGliIDwgbmI7ICsraWIsICsraWMpIGNbaWNdID0gZih2YSwgYltpYl0pO1xuICByZXR1cm4gYztcbn07XG5cbnZhciBkZXNjZW5kaW5nID0gZnVuY3Rpb24oYSwgYikge1xuICByZXR1cm4gYiA8IGEgPyAtMSA6IGIgPiBhID8gMSA6IGIgPj0gYSA/IDAgOiBOYU47XG59O1xuXG52YXIgbnVtYmVyID0gZnVuY3Rpb24oeCkge1xuICByZXR1cm4geCA9PT0gbnVsbCA/IE5hTiA6ICt4O1xufTtcblxudmFyIHZhcmlhbmNlID0gZnVuY3Rpb24oYXJyYXksIGYpIHtcbiAgdmFyIG4gPSBhcnJheS5sZW5ndGgsXG4gICAgICBtID0gMCxcbiAgICAgIGEsXG4gICAgICBkLFxuICAgICAgcyA9IDAsXG4gICAgICBpID0gLTEsXG4gICAgICBqID0gMDtcblxuICBpZiAoZiA9PSBudWxsKSB7XG4gICAgd2hpbGUgKCsraSA8IG4pIHtcbiAgICAgIGlmICghaXNOYU4oYSA9IG51bWJlcihhcnJheVtpXSkpKSB7XG4gICAgICAgIGQgPSBhIC0gbTtcbiAgICAgICAgbSArPSBkIC8gKytqO1xuICAgICAgICBzICs9IGQgKiAoYSAtIG0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGVsc2Uge1xuICAgIHdoaWxlICgrK2kgPCBuKSB7XG4gICAgICBpZiAoIWlzTmFOKGEgPSBudW1iZXIoZihhcnJheVtpXSwgaSwgYXJyYXkpKSkpIHtcbiAgICAgICAgZCA9IGEgLSBtO1xuICAgICAgICBtICs9IGQgLyArK2o7XG4gICAgICAgIHMgKz0gZCAqIChhIC0gbSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKGogPiAxKSByZXR1cm4gcyAvIChqIC0gMSk7XG59O1xuXG52YXIgZGV2aWF0aW9uID0gZnVuY3Rpb24oYXJyYXksIGYpIHtcbiAgdmFyIHYgPSB2YXJpYW5jZShhcnJheSwgZik7XG4gIHJldHVybiB2ID8gTWF0aC5zcXJ0KHYpIDogdjtcbn07XG5cbnZhciBleHRlbnQgPSBmdW5jdGlvbihhcnJheSwgZikge1xuICB2YXIgaSA9IC0xLFxuICAgICAgbiA9IGFycmF5Lmxlbmd0aCxcbiAgICAgIGEsXG4gICAgICBiLFxuICAgICAgYztcblxuICBpZiAoZiA9PSBudWxsKSB7XG4gICAgd2hpbGUgKCsraSA8IG4pIGlmICgoYiA9IGFycmF5W2ldKSAhPSBudWxsICYmIGIgPj0gYikgeyBhID0gYyA9IGI7IGJyZWFrOyB9XG4gICAgd2hpbGUgKCsraSA8IG4pIGlmICgoYiA9IGFycmF5W2ldKSAhPSBudWxsKSB7XG4gICAgICBpZiAoYSA+IGIpIGEgPSBiO1xuICAgICAgaWYgKGMgPCBiKSBjID0gYjtcbiAgICB9XG4gIH1cblxuICBlbHNlIHtcbiAgICB3aGlsZSAoKytpIDwgbikgaWYgKChiID0gZihhcnJheVtpXSwgaSwgYXJyYXkpKSAhPSBudWxsICYmIGIgPj0gYikgeyBhID0gYyA9IGI7IGJyZWFrOyB9XG4gICAgd2hpbGUgKCsraSA8IG4pIGlmICgoYiA9IGYoYXJyYXlbaV0sIGksIGFycmF5KSkgIT0gbnVsbCkge1xuICAgICAgaWYgKGEgPiBiKSBhID0gYjtcbiAgICAgIGlmIChjIDwgYikgYyA9IGI7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIFthLCBjXTtcbn07XG5cbnZhciBhcnJheSA9IEFycmF5LnByb3RvdHlwZTtcblxudmFyIHNsaWNlID0gYXJyYXkuc2xpY2U7XG52YXIgbWFwID0gYXJyYXkubWFwO1xuXG52YXIgY29uc3RhbnQgPSBmdW5jdGlvbih4KSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4geDtcbiAgfTtcbn07XG5cbnZhciBpZGVudGl0eSA9IGZ1bmN0aW9uKHgpIHtcbiAgcmV0dXJuIHg7XG59O1xuXG52YXIgcmFuZ2UgPSBmdW5jdGlvbihzdGFydCwgc3RvcCwgc3RlcCkge1xuICBzdGFydCA9ICtzdGFydCwgc3RvcCA9ICtzdG9wLCBzdGVwID0gKG4gPSBhcmd1bWVudHMubGVuZ3RoKSA8IDIgPyAoc3RvcCA9IHN0YXJ0LCBzdGFydCA9IDAsIDEpIDogbiA8IDMgPyAxIDogK3N0ZXA7XG5cbiAgdmFyIGkgPSAtMSxcbiAgICAgIG4gPSBNYXRoLm1heCgwLCBNYXRoLmNlaWwoKHN0b3AgLSBzdGFydCkgLyBzdGVwKSkgfCAwLFxuICAgICAgcmFuZ2UgPSBuZXcgQXJyYXkobik7XG5cbiAgd2hpbGUgKCsraSA8IG4pIHtcbiAgICByYW5nZVtpXSA9IHN0YXJ0ICsgaSAqIHN0ZXA7XG4gIH1cblxuICByZXR1cm4gcmFuZ2U7XG59O1xuXG52YXIgZTEwID0gTWF0aC5zcXJ0KDUwKTtcbnZhciBlNSA9IE1hdGguc3FydCgxMCk7XG52YXIgZTIgPSBNYXRoLnNxcnQoMik7XG5cbnZhciB0aWNrcyA9IGZ1bmN0aW9uKHN0YXJ0LCBzdG9wLCBjb3VudCkge1xuICB2YXIgc3RlcCA9IHRpY2tTdGVwKHN0YXJ0LCBzdG9wLCBjb3VudCk7XG4gIHJldHVybiByYW5nZShcbiAgICBNYXRoLmNlaWwoc3RhcnQgLyBzdGVwKSAqIHN0ZXAsXG4gICAgTWF0aC5mbG9vcihzdG9wIC8gc3RlcCkgKiBzdGVwICsgc3RlcCAvIDIsIC8vIGluY2x1c2l2ZVxuICAgIHN0ZXBcbiAgKTtcbn07XG5cbmZ1bmN0aW9uIHRpY2tTdGVwKHN0YXJ0LCBzdG9wLCBjb3VudCkge1xuICB2YXIgc3RlcDAgPSBNYXRoLmFicyhzdG9wIC0gc3RhcnQpIC8gTWF0aC5tYXgoMCwgY291bnQpLFxuICAgICAgc3RlcDEgPSBNYXRoLnBvdygxMCwgTWF0aC5mbG9vcihNYXRoLmxvZyhzdGVwMCkgLyBNYXRoLkxOMTApKSxcbiAgICAgIGVycm9yID0gc3RlcDAgLyBzdGVwMTtcbiAgaWYgKGVycm9yID49IGUxMCkgc3RlcDEgKj0gMTA7XG4gIGVsc2UgaWYgKGVycm9yID49IGU1KSBzdGVwMSAqPSA1O1xuICBlbHNlIGlmIChlcnJvciA+PSBlMikgc3RlcDEgKj0gMjtcbiAgcmV0dXJuIHN0b3AgPCBzdGFydCA/IC1zdGVwMSA6IHN0ZXAxO1xufVxuXG52YXIgc3R1cmdlcyA9IGZ1bmN0aW9uKHZhbHVlcykge1xuICByZXR1cm4gTWF0aC5jZWlsKE1hdGgubG9nKHZhbHVlcy5sZW5ndGgpIC8gTWF0aC5MTjIpICsgMTtcbn07XG5cbnZhciBoaXN0b2dyYW0gPSBmdW5jdGlvbigpIHtcbiAgdmFyIHZhbHVlID0gaWRlbnRpdHksXG4gICAgICBkb21haW4gPSBleHRlbnQsXG4gICAgICB0aHJlc2hvbGQgPSBzdHVyZ2VzO1xuXG4gIGZ1bmN0aW9uIGhpc3RvZ3JhbShkYXRhKSB7XG4gICAgdmFyIGksXG4gICAgICAgIG4gPSBkYXRhLmxlbmd0aCxcbiAgICAgICAgeCxcbiAgICAgICAgdmFsdWVzID0gbmV3IEFycmF5KG4pO1xuXG4gICAgZm9yIChpID0gMDsgaSA8IG47ICsraSkge1xuICAgICAgdmFsdWVzW2ldID0gdmFsdWUoZGF0YVtpXSwgaSwgZGF0YSk7XG4gICAgfVxuXG4gICAgdmFyIHh6ID0gZG9tYWluKHZhbHVlcyksXG4gICAgICAgIHgwID0geHpbMF0sXG4gICAgICAgIHgxID0geHpbMV0sXG4gICAgICAgIHR6ID0gdGhyZXNob2xkKHZhbHVlcywgeDAsIHgxKTtcblxuICAgIC8vIENvbnZlcnQgbnVtYmVyIG9mIHRocmVzaG9sZHMgaW50byB1bmlmb3JtIHRocmVzaG9sZHMuXG4gICAgaWYgKCFBcnJheS5pc0FycmF5KHR6KSkgdHogPSB0aWNrcyh4MCwgeDEsIHR6KTtcblxuICAgIC8vIFJlbW92ZSBhbnkgdGhyZXNob2xkcyBvdXRzaWRlIHRoZSBkb21haW4uXG4gICAgdmFyIG0gPSB0ei5sZW5ndGg7XG4gICAgd2hpbGUgKHR6WzBdIDw9IHgwKSB0ei5zaGlmdCgpLCAtLW07XG4gICAgd2hpbGUgKHR6W20gLSAxXSA+PSB4MSkgdHoucG9wKCksIC0tbTtcblxuICAgIHZhciBiaW5zID0gbmV3IEFycmF5KG0gKyAxKSxcbiAgICAgICAgYmluO1xuXG4gICAgLy8gSW5pdGlhbGl6ZSBiaW5zLlxuICAgIGZvciAoaSA9IDA7IGkgPD0gbTsgKytpKSB7XG4gICAgICBiaW4gPSBiaW5zW2ldID0gW107XG4gICAgICBiaW4ueDAgPSBpID4gMCA/IHR6W2kgLSAxXSA6IHgwO1xuICAgICAgYmluLngxID0gaSA8IG0gPyB0eltpXSA6IHgxO1xuICAgIH1cblxuICAgIC8vIEFzc2lnbiBkYXRhIHRvIGJpbnMgYnkgdmFsdWUsIGlnbm9yaW5nIGFueSBvdXRzaWRlIHRoZSBkb21haW4uXG4gICAgZm9yIChpID0gMDsgaSA8IG47ICsraSkge1xuICAgICAgeCA9IHZhbHVlc1tpXTtcbiAgICAgIGlmICh4MCA8PSB4ICYmIHggPD0geDEpIHtcbiAgICAgICAgYmluc1tiaXNlY3RSaWdodCh0eiwgeCwgMCwgbSldLnB1c2goZGF0YVtpXSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGJpbnM7XG4gIH1cblxuICBoaXN0b2dyYW0udmFsdWUgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAodmFsdWUgPSB0eXBlb2YgXyA9PT0gXCJmdW5jdGlvblwiID8gXyA6IGNvbnN0YW50KF8pLCBoaXN0b2dyYW0pIDogdmFsdWU7XG4gIH07XG5cbiAgaGlzdG9ncmFtLmRvbWFpbiA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChkb21haW4gPSB0eXBlb2YgXyA9PT0gXCJmdW5jdGlvblwiID8gXyA6IGNvbnN0YW50KFtfWzBdLCBfWzFdXSksIGhpc3RvZ3JhbSkgOiBkb21haW47XG4gIH07XG5cbiAgaGlzdG9ncmFtLnRocmVzaG9sZHMgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAodGhyZXNob2xkID0gdHlwZW9mIF8gPT09IFwiZnVuY3Rpb25cIiA/IF8gOiBBcnJheS5pc0FycmF5KF8pID8gY29uc3RhbnQoc2xpY2UuY2FsbChfKSkgOiBjb25zdGFudChfKSwgaGlzdG9ncmFtKSA6IHRocmVzaG9sZDtcbiAgfTtcblxuICByZXR1cm4gaGlzdG9ncmFtO1xufTtcblxudmFyIHF1YW50aWxlID0gZnVuY3Rpb24oYXJyYXksIHAsIGYpIHtcbiAgaWYgKGYgPT0gbnVsbCkgZiA9IG51bWJlcjtcbiAgaWYgKCEobiA9IGFycmF5Lmxlbmd0aCkpIHJldHVybjtcbiAgaWYgKChwID0gK3ApIDw9IDAgfHwgbiA8IDIpIHJldHVybiArZihhcnJheVswXSwgMCwgYXJyYXkpO1xuICBpZiAocCA+PSAxKSByZXR1cm4gK2YoYXJyYXlbbiAtIDFdLCBuIC0gMSwgYXJyYXkpO1xuICB2YXIgbixcbiAgICAgIGggPSAobiAtIDEpICogcCxcbiAgICAgIGkgPSBNYXRoLmZsb29yKGgpLFxuICAgICAgYSA9ICtmKGFycmF5W2ldLCBpLCBhcnJheSksXG4gICAgICBiID0gK2YoYXJyYXlbaSArIDFdLCBpICsgMSwgYXJyYXkpO1xuICByZXR1cm4gYSArIChiIC0gYSkgKiAoaCAtIGkpO1xufTtcblxudmFyIGZyZWVkbWFuRGlhY29uaXMgPSBmdW5jdGlvbih2YWx1ZXMsIG1pbiwgbWF4KSB7XG4gIHZhbHVlcyA9IG1hcC5jYWxsKHZhbHVlcywgbnVtYmVyKS5zb3J0KGFzY2VuZGluZyk7XG4gIHJldHVybiBNYXRoLmNlaWwoKG1heCAtIG1pbikgLyAoMiAqIChxdWFudGlsZSh2YWx1ZXMsIDAuNzUpIC0gcXVhbnRpbGUodmFsdWVzLCAwLjI1KSkgKiBNYXRoLnBvdyh2YWx1ZXMubGVuZ3RoLCAtMSAvIDMpKSk7XG59O1xuXG52YXIgc2NvdHQgPSBmdW5jdGlvbih2YWx1ZXMsIG1pbiwgbWF4KSB7XG4gIHJldHVybiBNYXRoLmNlaWwoKG1heCAtIG1pbikgLyAoMy41ICogZGV2aWF0aW9uKHZhbHVlcykgKiBNYXRoLnBvdyh2YWx1ZXMubGVuZ3RoLCAtMSAvIDMpKSk7XG59O1xuXG52YXIgbWF4ID0gZnVuY3Rpb24oYXJyYXksIGYpIHtcbiAgdmFyIGkgPSAtMSxcbiAgICAgIG4gPSBhcnJheS5sZW5ndGgsXG4gICAgICBhLFxuICAgICAgYjtcblxuICBpZiAoZiA9PSBudWxsKSB7XG4gICAgd2hpbGUgKCsraSA8IG4pIGlmICgoYiA9IGFycmF5W2ldKSAhPSBudWxsICYmIGIgPj0gYikgeyBhID0gYjsgYnJlYWs7IH1cbiAgICB3aGlsZSAoKytpIDwgbikgaWYgKChiID0gYXJyYXlbaV0pICE9IG51bGwgJiYgYiA+IGEpIGEgPSBiO1xuICB9XG5cbiAgZWxzZSB7XG4gICAgd2hpbGUgKCsraSA8IG4pIGlmICgoYiA9IGYoYXJyYXlbaV0sIGksIGFycmF5KSkgIT0gbnVsbCAmJiBiID49IGIpIHsgYSA9IGI7IGJyZWFrOyB9XG4gICAgd2hpbGUgKCsraSA8IG4pIGlmICgoYiA9IGYoYXJyYXlbaV0sIGksIGFycmF5KSkgIT0gbnVsbCAmJiBiID4gYSkgYSA9IGI7XG4gIH1cblxuICByZXR1cm4gYTtcbn07XG5cbnZhciBtZWFuID0gZnVuY3Rpb24oYXJyYXksIGYpIHtcbiAgdmFyIHMgPSAwLFxuICAgICAgbiA9IGFycmF5Lmxlbmd0aCxcbiAgICAgIGEsXG4gICAgICBpID0gLTEsXG4gICAgICBqID0gbjtcblxuICBpZiAoZiA9PSBudWxsKSB7XG4gICAgd2hpbGUgKCsraSA8IG4pIGlmICghaXNOYU4oYSA9IG51bWJlcihhcnJheVtpXSkpKSBzICs9IGE7IGVsc2UgLS1qO1xuICB9XG5cbiAgZWxzZSB7XG4gICAgd2hpbGUgKCsraSA8IG4pIGlmICghaXNOYU4oYSA9IG51bWJlcihmKGFycmF5W2ldLCBpLCBhcnJheSkpKSkgcyArPSBhOyBlbHNlIC0tajtcbiAgfVxuXG4gIGlmIChqKSByZXR1cm4gcyAvIGo7XG59O1xuXG52YXIgbWVkaWFuID0gZnVuY3Rpb24oYXJyYXksIGYpIHtcbiAgdmFyIG51bWJlcnMgPSBbXSxcbiAgICAgIG4gPSBhcnJheS5sZW5ndGgsXG4gICAgICBhLFxuICAgICAgaSA9IC0xO1xuXG4gIGlmIChmID09IG51bGwpIHtcbiAgICB3aGlsZSAoKytpIDwgbikgaWYgKCFpc05hTihhID0gbnVtYmVyKGFycmF5W2ldKSkpIG51bWJlcnMucHVzaChhKTtcbiAgfVxuXG4gIGVsc2Uge1xuICAgIHdoaWxlICgrK2kgPCBuKSBpZiAoIWlzTmFOKGEgPSBudW1iZXIoZihhcnJheVtpXSwgaSwgYXJyYXkpKSkpIG51bWJlcnMucHVzaChhKTtcbiAgfVxuXG4gIHJldHVybiBxdWFudGlsZShudW1iZXJzLnNvcnQoYXNjZW5kaW5nKSwgMC41KTtcbn07XG5cbnZhciBtZXJnZSA9IGZ1bmN0aW9uKGFycmF5cykge1xuICB2YXIgbiA9IGFycmF5cy5sZW5ndGgsXG4gICAgICBtLFxuICAgICAgaSA9IC0xLFxuICAgICAgaiA9IDAsXG4gICAgICBtZXJnZWQsXG4gICAgICBhcnJheTtcblxuICB3aGlsZSAoKytpIDwgbikgaiArPSBhcnJheXNbaV0ubGVuZ3RoO1xuICBtZXJnZWQgPSBuZXcgQXJyYXkoaik7XG5cbiAgd2hpbGUgKC0tbiA+PSAwKSB7XG4gICAgYXJyYXkgPSBhcnJheXNbbl07XG4gICAgbSA9IGFycmF5Lmxlbmd0aDtcbiAgICB3aGlsZSAoLS1tID49IDApIHtcbiAgICAgIG1lcmdlZFstLWpdID0gYXJyYXlbbV07XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG1lcmdlZDtcbn07XG5cbnZhciBtaW4gPSBmdW5jdGlvbihhcnJheSwgZikge1xuICB2YXIgaSA9IC0xLFxuICAgICAgbiA9IGFycmF5Lmxlbmd0aCxcbiAgICAgIGEsXG4gICAgICBiO1xuXG4gIGlmIChmID09IG51bGwpIHtcbiAgICB3aGlsZSAoKytpIDwgbikgaWYgKChiID0gYXJyYXlbaV0pICE9IG51bGwgJiYgYiA+PSBiKSB7IGEgPSBiOyBicmVhazsgfVxuICAgIHdoaWxlICgrK2kgPCBuKSBpZiAoKGIgPSBhcnJheVtpXSkgIT0gbnVsbCAmJiBhID4gYikgYSA9IGI7XG4gIH1cblxuICBlbHNlIHtcbiAgICB3aGlsZSAoKytpIDwgbikgaWYgKChiID0gZihhcnJheVtpXSwgaSwgYXJyYXkpKSAhPSBudWxsICYmIGIgPj0gYikgeyBhID0gYjsgYnJlYWs7IH1cbiAgICB3aGlsZSAoKytpIDwgbikgaWYgKChiID0gZihhcnJheVtpXSwgaSwgYXJyYXkpKSAhPSBudWxsICYmIGEgPiBiKSBhID0gYjtcbiAgfVxuXG4gIHJldHVybiBhO1xufTtcblxudmFyIHBlcm11dGUgPSBmdW5jdGlvbihhcnJheSwgaW5kZXhlcykge1xuICB2YXIgaSA9IGluZGV4ZXMubGVuZ3RoLCBwZXJtdXRlcyA9IG5ldyBBcnJheShpKTtcbiAgd2hpbGUgKGktLSkgcGVybXV0ZXNbaV0gPSBhcnJheVtpbmRleGVzW2ldXTtcbiAgcmV0dXJuIHBlcm11dGVzO1xufTtcblxudmFyIHNjYW4gPSBmdW5jdGlvbihhcnJheSwgY29tcGFyZSkge1xuICBpZiAoIShuID0gYXJyYXkubGVuZ3RoKSkgcmV0dXJuO1xuICB2YXIgaSA9IDAsXG4gICAgICBuLFxuICAgICAgaiA9IDAsXG4gICAgICB4aSxcbiAgICAgIHhqID0gYXJyYXlbal07XG5cbiAgaWYgKCFjb21wYXJlKSBjb21wYXJlID0gYXNjZW5kaW5nO1xuXG4gIHdoaWxlICgrK2kgPCBuKSBpZiAoY29tcGFyZSh4aSA9IGFycmF5W2ldLCB4aikgPCAwIHx8IGNvbXBhcmUoeGosIHhqKSAhPT0gMCkgeGogPSB4aSwgaiA9IGk7XG5cbiAgaWYgKGNvbXBhcmUoeGosIHhqKSA9PT0gMCkgcmV0dXJuIGo7XG59O1xuXG52YXIgc2h1ZmZsZSA9IGZ1bmN0aW9uKGFycmF5LCBpMCwgaTEpIHtcbiAgdmFyIG0gPSAoaTEgPT0gbnVsbCA/IGFycmF5Lmxlbmd0aCA6IGkxKSAtIChpMCA9IGkwID09IG51bGwgPyAwIDogK2kwKSxcbiAgICAgIHQsXG4gICAgICBpO1xuXG4gIHdoaWxlIChtKSB7XG4gICAgaSA9IE1hdGgucmFuZG9tKCkgKiBtLS0gfCAwO1xuICAgIHQgPSBhcnJheVttICsgaTBdO1xuICAgIGFycmF5W20gKyBpMF0gPSBhcnJheVtpICsgaTBdO1xuICAgIGFycmF5W2kgKyBpMF0gPSB0O1xuICB9XG5cbiAgcmV0dXJuIGFycmF5O1xufTtcblxudmFyIHN1bSA9IGZ1bmN0aW9uKGFycmF5LCBmKSB7XG4gIHZhciBzID0gMCxcbiAgICAgIG4gPSBhcnJheS5sZW5ndGgsXG4gICAgICBhLFxuICAgICAgaSA9IC0xO1xuXG4gIGlmIChmID09IG51bGwpIHtcbiAgICB3aGlsZSAoKytpIDwgbikgaWYgKGEgPSArYXJyYXlbaV0pIHMgKz0gYTsgLy8gTm90ZTogemVybyBhbmQgbnVsbCBhcmUgZXF1aXZhbGVudC5cbiAgfVxuXG4gIGVsc2Uge1xuICAgIHdoaWxlICgrK2kgPCBuKSBpZiAoYSA9ICtmKGFycmF5W2ldLCBpLCBhcnJheSkpIHMgKz0gYTtcbiAgfVxuXG4gIHJldHVybiBzO1xufTtcblxudmFyIHRyYW5zcG9zZSA9IGZ1bmN0aW9uKG1hdHJpeCkge1xuICBpZiAoIShuID0gbWF0cml4Lmxlbmd0aCkpIHJldHVybiBbXTtcbiAgZm9yICh2YXIgaSA9IC0xLCBtID0gbWluKG1hdHJpeCwgbGVuZ3RoKSwgdHJhbnNwb3NlID0gbmV3IEFycmF5KG0pOyArK2kgPCBtOykge1xuICAgIGZvciAodmFyIGogPSAtMSwgbiwgcm93ID0gdHJhbnNwb3NlW2ldID0gbmV3IEFycmF5KG4pOyArK2ogPCBuOykge1xuICAgICAgcm93W2pdID0gbWF0cml4W2pdW2ldO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdHJhbnNwb3NlO1xufTtcblxuZnVuY3Rpb24gbGVuZ3RoKGQpIHtcbiAgcmV0dXJuIGQubGVuZ3RoO1xufVxuXG52YXIgemlwID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiB0cmFuc3Bvc2UoYXJndW1lbnRzKTtcbn07XG5cbmV4cG9ydHMuYmlzZWN0ID0gYmlzZWN0UmlnaHQ7XG5leHBvcnRzLmJpc2VjdFJpZ2h0ID0gYmlzZWN0UmlnaHQ7XG5leHBvcnRzLmJpc2VjdExlZnQgPSBiaXNlY3RMZWZ0O1xuZXhwb3J0cy5hc2NlbmRpbmcgPSBhc2NlbmRpbmc7XG5leHBvcnRzLmJpc2VjdG9yID0gYmlzZWN0b3I7XG5leHBvcnRzLmNyb3NzID0gY3Jvc3M7XG5leHBvcnRzLmRlc2NlbmRpbmcgPSBkZXNjZW5kaW5nO1xuZXhwb3J0cy5kZXZpYXRpb24gPSBkZXZpYXRpb247XG5leHBvcnRzLmV4dGVudCA9IGV4dGVudDtcbmV4cG9ydHMuaGlzdG9ncmFtID0gaGlzdG9ncmFtO1xuZXhwb3J0cy50aHJlc2hvbGRGcmVlZG1hbkRpYWNvbmlzID0gZnJlZWRtYW5EaWFjb25pcztcbmV4cG9ydHMudGhyZXNob2xkU2NvdHQgPSBzY290dDtcbmV4cG9ydHMudGhyZXNob2xkU3R1cmdlcyA9IHN0dXJnZXM7XG5leHBvcnRzLm1heCA9IG1heDtcbmV4cG9ydHMubWVhbiA9IG1lYW47XG5leHBvcnRzLm1lZGlhbiA9IG1lZGlhbjtcbmV4cG9ydHMubWVyZ2UgPSBtZXJnZTtcbmV4cG9ydHMubWluID0gbWluO1xuZXhwb3J0cy5wYWlycyA9IHBhaXJzO1xuZXhwb3J0cy5wZXJtdXRlID0gcGVybXV0ZTtcbmV4cG9ydHMucXVhbnRpbGUgPSBxdWFudGlsZTtcbmV4cG9ydHMucmFuZ2UgPSByYW5nZTtcbmV4cG9ydHMuc2NhbiA9IHNjYW47XG5leHBvcnRzLnNodWZmbGUgPSBzaHVmZmxlO1xuZXhwb3J0cy5zdW0gPSBzdW07XG5leHBvcnRzLnRpY2tzID0gdGlja3M7XG5leHBvcnRzLnRpY2tTdGVwID0gdGlja1N0ZXA7XG5leHBvcnRzLnRyYW5zcG9zZSA9IHRyYW5zcG9zZTtcbmV4cG9ydHMudmFyaWFuY2UgPSB2YXJpYW5jZTtcbmV4cG9ydHMuemlwID0gemlwO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuXG59KSkpO1xuIiwiLy8gaHR0cHM6Ly9kM2pzLm9yZy9kMy1nZW8vIFZlcnNpb24gMS42LjMuIENvcHlyaWdodCAyMDE3IE1pa2UgQm9zdG9jay5cbihmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7XG5cdHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJyA/IGZhY3RvcnkoZXhwb3J0cywgcmVxdWlyZSgnZDMtYXJyYXknKSkgOlxuXHR0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoWydleHBvcnRzJywgJ2QzLWFycmF5J10sIGZhY3RvcnkpIDpcblx0KGZhY3RvcnkoKGdsb2JhbC5kMyA9IGdsb2JhbC5kMyB8fCB7fSksZ2xvYmFsLmQzKSk7XG59KHRoaXMsIChmdW5jdGlvbiAoZXhwb3J0cyxkM0FycmF5KSB7ICd1c2Ugc3RyaWN0JztcblxuLy8gQWRkcyBmbG9hdGluZyBwb2ludCBudW1iZXJzIHdpdGggdHdpY2UgdGhlIG5vcm1hbCBwcmVjaXNpb24uXG4vLyBSZWZlcmVuY2U6IEouIFIuIFNoZXdjaHVrLCBBZGFwdGl2ZSBQcmVjaXNpb24gRmxvYXRpbmctUG9pbnQgQXJpdGhtZXRpYyBhbmRcbi8vIEZhc3QgUm9idXN0IEdlb21ldHJpYyBQcmVkaWNhdGVzLCBEaXNjcmV0ZSAmIENvbXB1dGF0aW9uYWwgR2VvbWV0cnkgMTgoMylcbi8vIDMwNeKAkzM2MyAoMTk5NykuXG4vLyBDb2RlIGFkYXB0ZWQgZnJvbSBHZW9ncmFwaGljTGliIGJ5IENoYXJsZXMgRi4gRi4gS2FybmV5LFxuLy8gaHR0cDovL2dlb2dyYXBoaWNsaWIuc291cmNlZm9yZ2UubmV0L1xuXG52YXIgYWRkZXIgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIG5ldyBBZGRlcjtcbn07XG5cbmZ1bmN0aW9uIEFkZGVyKCkge1xuICB0aGlzLnJlc2V0KCk7XG59XG5cbkFkZGVyLnByb3RvdHlwZSA9IHtcbiAgY29uc3RydWN0b3I6IEFkZGVyLFxuICByZXNldDogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5zID0gLy8gcm91bmRlZCB2YWx1ZVxuICAgIHRoaXMudCA9IDA7IC8vIGV4YWN0IGVycm9yXG4gIH0sXG4gIGFkZDogZnVuY3Rpb24oeSkge1xuICAgIGFkZCh0ZW1wLCB5LCB0aGlzLnQpO1xuICAgIGFkZCh0aGlzLCB0ZW1wLnMsIHRoaXMucyk7XG4gICAgaWYgKHRoaXMucykgdGhpcy50ICs9IHRlbXAudDtcbiAgICBlbHNlIHRoaXMucyA9IHRlbXAudDtcbiAgfSxcbiAgdmFsdWVPZjogZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMucztcbiAgfVxufTtcblxudmFyIHRlbXAgPSBuZXcgQWRkZXI7XG5cbmZ1bmN0aW9uIGFkZChhZGRlciwgYSwgYikge1xuICB2YXIgeCA9IGFkZGVyLnMgPSBhICsgYixcbiAgICAgIGJ2ID0geCAtIGEsXG4gICAgICBhdiA9IHggLSBidjtcbiAgYWRkZXIudCA9IChhIC0gYXYpICsgKGIgLSBidik7XG59XG5cbnZhciBlcHNpbG9uID0gMWUtNjtcbnZhciBlcHNpbG9uMiA9IDFlLTEyO1xudmFyIHBpID0gTWF0aC5QSTtcbnZhciBoYWxmUGkgPSBwaSAvIDI7XG52YXIgcXVhcnRlclBpID0gcGkgLyA0O1xudmFyIHRhdSA9IHBpICogMjtcblxudmFyIGRlZ3JlZXMgPSAxODAgLyBwaTtcbnZhciByYWRpYW5zID0gcGkgLyAxODA7XG5cbnZhciBhYnMgPSBNYXRoLmFicztcbnZhciBhdGFuID0gTWF0aC5hdGFuO1xudmFyIGF0YW4yID0gTWF0aC5hdGFuMjtcbnZhciBjb3MgPSBNYXRoLmNvcztcbnZhciBjZWlsID0gTWF0aC5jZWlsO1xudmFyIGV4cCA9IE1hdGguZXhwO1xuXG52YXIgbG9nID0gTWF0aC5sb2c7XG52YXIgcG93ID0gTWF0aC5wb3c7XG52YXIgc2luID0gTWF0aC5zaW47XG52YXIgc2lnbiA9IE1hdGguc2lnbiB8fCBmdW5jdGlvbih4KSB7IHJldHVybiB4ID4gMCA/IDEgOiB4IDwgMCA/IC0xIDogMDsgfTtcbnZhciBzcXJ0ID0gTWF0aC5zcXJ0O1xudmFyIHRhbiA9IE1hdGgudGFuO1xuXG5mdW5jdGlvbiBhY29zKHgpIHtcbiAgcmV0dXJuIHggPiAxID8gMCA6IHggPCAtMSA/IHBpIDogTWF0aC5hY29zKHgpO1xufVxuXG5mdW5jdGlvbiBhc2luKHgpIHtcbiAgcmV0dXJuIHggPiAxID8gaGFsZlBpIDogeCA8IC0xID8gLWhhbGZQaSA6IE1hdGguYXNpbih4KTtcbn1cblxuZnVuY3Rpb24gaGF2ZXJzaW4oeCkge1xuICByZXR1cm4gKHggPSBzaW4oeCAvIDIpKSAqIHg7XG59XG5cbmZ1bmN0aW9uIG5vb3AoKSB7fVxuXG5mdW5jdGlvbiBzdHJlYW1HZW9tZXRyeShnZW9tZXRyeSwgc3RyZWFtKSB7XG4gIGlmIChnZW9tZXRyeSAmJiBzdHJlYW1HZW9tZXRyeVR5cGUuaGFzT3duUHJvcGVydHkoZ2VvbWV0cnkudHlwZSkpIHtcbiAgICBzdHJlYW1HZW9tZXRyeVR5cGVbZ2VvbWV0cnkudHlwZV0oZ2VvbWV0cnksIHN0cmVhbSk7XG4gIH1cbn1cblxudmFyIHN0cmVhbU9iamVjdFR5cGUgPSB7XG4gIEZlYXR1cmU6IGZ1bmN0aW9uKG9iamVjdCwgc3RyZWFtKSB7XG4gICAgc3RyZWFtR2VvbWV0cnkob2JqZWN0Lmdlb21ldHJ5LCBzdHJlYW0pO1xuICB9LFxuICBGZWF0dXJlQ29sbGVjdGlvbjogZnVuY3Rpb24ob2JqZWN0LCBzdHJlYW0pIHtcbiAgICB2YXIgZmVhdHVyZXMgPSBvYmplY3QuZmVhdHVyZXMsIGkgPSAtMSwgbiA9IGZlYXR1cmVzLmxlbmd0aDtcbiAgICB3aGlsZSAoKytpIDwgbikgc3RyZWFtR2VvbWV0cnkoZmVhdHVyZXNbaV0uZ2VvbWV0cnksIHN0cmVhbSk7XG4gIH1cbn07XG5cbnZhciBzdHJlYW1HZW9tZXRyeVR5cGUgPSB7XG4gIFNwaGVyZTogZnVuY3Rpb24ob2JqZWN0LCBzdHJlYW0pIHtcbiAgICBzdHJlYW0uc3BoZXJlKCk7XG4gIH0sXG4gIFBvaW50OiBmdW5jdGlvbihvYmplY3QsIHN0cmVhbSkge1xuICAgIG9iamVjdCA9IG9iamVjdC5jb29yZGluYXRlcztcbiAgICBzdHJlYW0ucG9pbnQob2JqZWN0WzBdLCBvYmplY3RbMV0sIG9iamVjdFsyXSk7XG4gIH0sXG4gIE11bHRpUG9pbnQ6IGZ1bmN0aW9uKG9iamVjdCwgc3RyZWFtKSB7XG4gICAgdmFyIGNvb3JkaW5hdGVzID0gb2JqZWN0LmNvb3JkaW5hdGVzLCBpID0gLTEsIG4gPSBjb29yZGluYXRlcy5sZW5ndGg7XG4gICAgd2hpbGUgKCsraSA8IG4pIG9iamVjdCA9IGNvb3JkaW5hdGVzW2ldLCBzdHJlYW0ucG9pbnQob2JqZWN0WzBdLCBvYmplY3RbMV0sIG9iamVjdFsyXSk7XG4gIH0sXG4gIExpbmVTdHJpbmc6IGZ1bmN0aW9uKG9iamVjdCwgc3RyZWFtKSB7XG4gICAgc3RyZWFtTGluZShvYmplY3QuY29vcmRpbmF0ZXMsIHN0cmVhbSwgMCk7XG4gIH0sXG4gIE11bHRpTGluZVN0cmluZzogZnVuY3Rpb24ob2JqZWN0LCBzdHJlYW0pIHtcbiAgICB2YXIgY29vcmRpbmF0ZXMgPSBvYmplY3QuY29vcmRpbmF0ZXMsIGkgPSAtMSwgbiA9IGNvb3JkaW5hdGVzLmxlbmd0aDtcbiAgICB3aGlsZSAoKytpIDwgbikgc3RyZWFtTGluZShjb29yZGluYXRlc1tpXSwgc3RyZWFtLCAwKTtcbiAgfSxcbiAgUG9seWdvbjogZnVuY3Rpb24ob2JqZWN0LCBzdHJlYW0pIHtcbiAgICBzdHJlYW1Qb2x5Z29uKG9iamVjdC5jb29yZGluYXRlcywgc3RyZWFtKTtcbiAgfSxcbiAgTXVsdGlQb2x5Z29uOiBmdW5jdGlvbihvYmplY3QsIHN0cmVhbSkge1xuICAgIHZhciBjb29yZGluYXRlcyA9IG9iamVjdC5jb29yZGluYXRlcywgaSA9IC0xLCBuID0gY29vcmRpbmF0ZXMubGVuZ3RoO1xuICAgIHdoaWxlICgrK2kgPCBuKSBzdHJlYW1Qb2x5Z29uKGNvb3JkaW5hdGVzW2ldLCBzdHJlYW0pO1xuICB9LFxuICBHZW9tZXRyeUNvbGxlY3Rpb246IGZ1bmN0aW9uKG9iamVjdCwgc3RyZWFtKSB7XG4gICAgdmFyIGdlb21ldHJpZXMgPSBvYmplY3QuZ2VvbWV0cmllcywgaSA9IC0xLCBuID0gZ2VvbWV0cmllcy5sZW5ndGg7XG4gICAgd2hpbGUgKCsraSA8IG4pIHN0cmVhbUdlb21ldHJ5KGdlb21ldHJpZXNbaV0sIHN0cmVhbSk7XG4gIH1cbn07XG5cbmZ1bmN0aW9uIHN0cmVhbUxpbmUoY29vcmRpbmF0ZXMsIHN0cmVhbSwgY2xvc2VkKSB7XG4gIHZhciBpID0gLTEsIG4gPSBjb29yZGluYXRlcy5sZW5ndGggLSBjbG9zZWQsIGNvb3JkaW5hdGU7XG4gIHN0cmVhbS5saW5lU3RhcnQoKTtcbiAgd2hpbGUgKCsraSA8IG4pIGNvb3JkaW5hdGUgPSBjb29yZGluYXRlc1tpXSwgc3RyZWFtLnBvaW50KGNvb3JkaW5hdGVbMF0sIGNvb3JkaW5hdGVbMV0sIGNvb3JkaW5hdGVbMl0pO1xuICBzdHJlYW0ubGluZUVuZCgpO1xufVxuXG5mdW5jdGlvbiBzdHJlYW1Qb2x5Z29uKGNvb3JkaW5hdGVzLCBzdHJlYW0pIHtcbiAgdmFyIGkgPSAtMSwgbiA9IGNvb3JkaW5hdGVzLmxlbmd0aDtcbiAgc3RyZWFtLnBvbHlnb25TdGFydCgpO1xuICB3aGlsZSAoKytpIDwgbikgc3RyZWFtTGluZShjb29yZGluYXRlc1tpXSwgc3RyZWFtLCAxKTtcbiAgc3RyZWFtLnBvbHlnb25FbmQoKTtcbn1cblxudmFyIGdlb1N0cmVhbSA9IGZ1bmN0aW9uKG9iamVjdCwgc3RyZWFtKSB7XG4gIGlmIChvYmplY3QgJiYgc3RyZWFtT2JqZWN0VHlwZS5oYXNPd25Qcm9wZXJ0eShvYmplY3QudHlwZSkpIHtcbiAgICBzdHJlYW1PYmplY3RUeXBlW29iamVjdC50eXBlXShvYmplY3QsIHN0cmVhbSk7XG4gIH0gZWxzZSB7XG4gICAgc3RyZWFtR2VvbWV0cnkob2JqZWN0LCBzdHJlYW0pO1xuICB9XG59O1xuXG52YXIgYXJlYVJpbmdTdW0gPSBhZGRlcigpO1xuXG52YXIgYXJlYVN1bSA9IGFkZGVyKCk7XG52YXIgbGFtYmRhMDA7XG52YXIgcGhpMDA7XG52YXIgbGFtYmRhMDtcbnZhciBjb3NQaGkwO1xudmFyIHNpblBoaTA7XG5cbnZhciBhcmVhU3RyZWFtID0ge1xuICBwb2ludDogbm9vcCxcbiAgbGluZVN0YXJ0OiBub29wLFxuICBsaW5lRW5kOiBub29wLFxuICBwb2x5Z29uU3RhcnQ6IGZ1bmN0aW9uKCkge1xuICAgIGFyZWFSaW5nU3VtLnJlc2V0KCk7XG4gICAgYXJlYVN0cmVhbS5saW5lU3RhcnQgPSBhcmVhUmluZ1N0YXJ0O1xuICAgIGFyZWFTdHJlYW0ubGluZUVuZCA9IGFyZWFSaW5nRW5kO1xuICB9LFxuICBwb2x5Z29uRW5kOiBmdW5jdGlvbigpIHtcbiAgICB2YXIgYXJlYVJpbmcgPSArYXJlYVJpbmdTdW07XG4gICAgYXJlYVN1bS5hZGQoYXJlYVJpbmcgPCAwID8gdGF1ICsgYXJlYVJpbmcgOiBhcmVhUmluZyk7XG4gICAgdGhpcy5saW5lU3RhcnQgPSB0aGlzLmxpbmVFbmQgPSB0aGlzLnBvaW50ID0gbm9vcDtcbiAgfSxcbiAgc3BoZXJlOiBmdW5jdGlvbigpIHtcbiAgICBhcmVhU3VtLmFkZCh0YXUpO1xuICB9XG59O1xuXG5mdW5jdGlvbiBhcmVhUmluZ1N0YXJ0KCkge1xuICBhcmVhU3RyZWFtLnBvaW50ID0gYXJlYVBvaW50Rmlyc3Q7XG59XG5cbmZ1bmN0aW9uIGFyZWFSaW5nRW5kKCkge1xuICBhcmVhUG9pbnQobGFtYmRhMDAsIHBoaTAwKTtcbn1cblxuZnVuY3Rpb24gYXJlYVBvaW50Rmlyc3QobGFtYmRhLCBwaGkpIHtcbiAgYXJlYVN0cmVhbS5wb2ludCA9IGFyZWFQb2ludDtcbiAgbGFtYmRhMDAgPSBsYW1iZGEsIHBoaTAwID0gcGhpO1xuICBsYW1iZGEgKj0gcmFkaWFucywgcGhpICo9IHJhZGlhbnM7XG4gIGxhbWJkYTAgPSBsYW1iZGEsIGNvc1BoaTAgPSBjb3MocGhpID0gcGhpIC8gMiArIHF1YXJ0ZXJQaSksIHNpblBoaTAgPSBzaW4ocGhpKTtcbn1cblxuZnVuY3Rpb24gYXJlYVBvaW50KGxhbWJkYSwgcGhpKSB7XG4gIGxhbWJkYSAqPSByYWRpYW5zLCBwaGkgKj0gcmFkaWFucztcbiAgcGhpID0gcGhpIC8gMiArIHF1YXJ0ZXJQaTsgLy8gaGFsZiB0aGUgYW5ndWxhciBkaXN0YW5jZSBmcm9tIHNvdXRoIHBvbGVcblxuICAvLyBTcGhlcmljYWwgZXhjZXNzIEUgZm9yIGEgc3BoZXJpY2FsIHRyaWFuZ2xlIHdpdGggdmVydGljZXM6IHNvdXRoIHBvbGUsXG4gIC8vIHByZXZpb3VzIHBvaW50LCBjdXJyZW50IHBvaW50LiAgVXNlcyBhIGZvcm11bGEgZGVyaXZlZCBmcm9tIENhZ25vbGnigJlzXG4gIC8vIHRoZW9yZW0uICBTZWUgVG9kaHVudGVyLCBTcGhlcmljYWwgVHJpZy4gKDE4NzEpLCBTZWMuIDEwMywgRXEuICgyKS5cbiAgdmFyIGRMYW1iZGEgPSBsYW1iZGEgLSBsYW1iZGEwLFxuICAgICAgc2RMYW1iZGEgPSBkTGFtYmRhID49IDAgPyAxIDogLTEsXG4gICAgICBhZExhbWJkYSA9IHNkTGFtYmRhICogZExhbWJkYSxcbiAgICAgIGNvc1BoaSA9IGNvcyhwaGkpLFxuICAgICAgc2luUGhpID0gc2luKHBoaSksXG4gICAgICBrID0gc2luUGhpMCAqIHNpblBoaSxcbiAgICAgIHUgPSBjb3NQaGkwICogY29zUGhpICsgayAqIGNvcyhhZExhbWJkYSksXG4gICAgICB2ID0gayAqIHNkTGFtYmRhICogc2luKGFkTGFtYmRhKTtcbiAgYXJlYVJpbmdTdW0uYWRkKGF0YW4yKHYsIHUpKTtcblxuICAvLyBBZHZhbmNlIHRoZSBwcmV2aW91cyBwb2ludHMuXG4gIGxhbWJkYTAgPSBsYW1iZGEsIGNvc1BoaTAgPSBjb3NQaGksIHNpblBoaTAgPSBzaW5QaGk7XG59XG5cbnZhciBhcmVhID0gZnVuY3Rpb24ob2JqZWN0KSB7XG4gIGFyZWFTdW0ucmVzZXQoKTtcbiAgZ2VvU3RyZWFtKG9iamVjdCwgYXJlYVN0cmVhbSk7XG4gIHJldHVybiBhcmVhU3VtICogMjtcbn07XG5cbmZ1bmN0aW9uIHNwaGVyaWNhbChjYXJ0ZXNpYW4pIHtcbiAgcmV0dXJuIFthdGFuMihjYXJ0ZXNpYW5bMV0sIGNhcnRlc2lhblswXSksIGFzaW4oY2FydGVzaWFuWzJdKV07XG59XG5cbmZ1bmN0aW9uIGNhcnRlc2lhbihzcGhlcmljYWwpIHtcbiAgdmFyIGxhbWJkYSA9IHNwaGVyaWNhbFswXSwgcGhpID0gc3BoZXJpY2FsWzFdLCBjb3NQaGkgPSBjb3MocGhpKTtcbiAgcmV0dXJuIFtjb3NQaGkgKiBjb3MobGFtYmRhKSwgY29zUGhpICogc2luKGxhbWJkYSksIHNpbihwaGkpXTtcbn1cblxuZnVuY3Rpb24gY2FydGVzaWFuRG90KGEsIGIpIHtcbiAgcmV0dXJuIGFbMF0gKiBiWzBdICsgYVsxXSAqIGJbMV0gKyBhWzJdICogYlsyXTtcbn1cblxuZnVuY3Rpb24gY2FydGVzaWFuQ3Jvc3MoYSwgYikge1xuICByZXR1cm4gW2FbMV0gKiBiWzJdIC0gYVsyXSAqIGJbMV0sIGFbMl0gKiBiWzBdIC0gYVswXSAqIGJbMl0sIGFbMF0gKiBiWzFdIC0gYVsxXSAqIGJbMF1dO1xufVxuXG4vLyBUT0RPIHJldHVybiBhXG5mdW5jdGlvbiBjYXJ0ZXNpYW5BZGRJblBsYWNlKGEsIGIpIHtcbiAgYVswXSArPSBiWzBdLCBhWzFdICs9IGJbMV0sIGFbMl0gKz0gYlsyXTtcbn1cblxuZnVuY3Rpb24gY2FydGVzaWFuU2NhbGUodmVjdG9yLCBrKSB7XG4gIHJldHVybiBbdmVjdG9yWzBdICogaywgdmVjdG9yWzFdICogaywgdmVjdG9yWzJdICoga107XG59XG5cbi8vIFRPRE8gcmV0dXJuIGRcbmZ1bmN0aW9uIGNhcnRlc2lhbk5vcm1hbGl6ZUluUGxhY2UoZCkge1xuICB2YXIgbCA9IHNxcnQoZFswXSAqIGRbMF0gKyBkWzFdICogZFsxXSArIGRbMl0gKiBkWzJdKTtcbiAgZFswXSAvPSBsLCBkWzFdIC89IGwsIGRbMl0gLz0gbDtcbn1cblxudmFyIGxhbWJkYTAkMTtcbnZhciBwaGkwO1xudmFyIGxhbWJkYTE7XG52YXIgcGhpMTtcbnZhciBsYW1iZGEyO1xudmFyIGxhbWJkYTAwJDE7XG52YXIgcGhpMDAkMTtcbnZhciBwMDtcbnZhciBkZWx0YVN1bSA9IGFkZGVyKCk7XG52YXIgcmFuZ2VzO1xudmFyIHJhbmdlJDE7XG5cbnZhciBib3VuZHNTdHJlYW0gPSB7XG4gIHBvaW50OiBib3VuZHNQb2ludCxcbiAgbGluZVN0YXJ0OiBib3VuZHNMaW5lU3RhcnQsXG4gIGxpbmVFbmQ6IGJvdW5kc0xpbmVFbmQsXG4gIHBvbHlnb25TdGFydDogZnVuY3Rpb24oKSB7XG4gICAgYm91bmRzU3RyZWFtLnBvaW50ID0gYm91bmRzUmluZ1BvaW50O1xuICAgIGJvdW5kc1N0cmVhbS5saW5lU3RhcnQgPSBib3VuZHNSaW5nU3RhcnQ7XG4gICAgYm91bmRzU3RyZWFtLmxpbmVFbmQgPSBib3VuZHNSaW5nRW5kO1xuICAgIGRlbHRhU3VtLnJlc2V0KCk7XG4gICAgYXJlYVN0cmVhbS5wb2x5Z29uU3RhcnQoKTtcbiAgfSxcbiAgcG9seWdvbkVuZDogZnVuY3Rpb24oKSB7XG4gICAgYXJlYVN0cmVhbS5wb2x5Z29uRW5kKCk7XG4gICAgYm91bmRzU3RyZWFtLnBvaW50ID0gYm91bmRzUG9pbnQ7XG4gICAgYm91bmRzU3RyZWFtLmxpbmVTdGFydCA9IGJvdW5kc0xpbmVTdGFydDtcbiAgICBib3VuZHNTdHJlYW0ubGluZUVuZCA9IGJvdW5kc0xpbmVFbmQ7XG4gICAgaWYgKGFyZWFSaW5nU3VtIDwgMCkgbGFtYmRhMCQxID0gLShsYW1iZGExID0gMTgwKSwgcGhpMCA9IC0ocGhpMSA9IDkwKTtcbiAgICBlbHNlIGlmIChkZWx0YVN1bSA+IGVwc2lsb24pIHBoaTEgPSA5MDtcbiAgICBlbHNlIGlmIChkZWx0YVN1bSA8IC1lcHNpbG9uKSBwaGkwID0gLTkwO1xuICAgIHJhbmdlJDFbMF0gPSBsYW1iZGEwJDEsIHJhbmdlJDFbMV0gPSBsYW1iZGExO1xuICB9XG59O1xuXG5mdW5jdGlvbiBib3VuZHNQb2ludChsYW1iZGEsIHBoaSkge1xuICByYW5nZXMucHVzaChyYW5nZSQxID0gW2xhbWJkYTAkMSA9IGxhbWJkYSwgbGFtYmRhMSA9IGxhbWJkYV0pO1xuICBpZiAocGhpIDwgcGhpMCkgcGhpMCA9IHBoaTtcbiAgaWYgKHBoaSA+IHBoaTEpIHBoaTEgPSBwaGk7XG59XG5cbmZ1bmN0aW9uIGxpbmVQb2ludChsYW1iZGEsIHBoaSkge1xuICB2YXIgcCA9IGNhcnRlc2lhbihbbGFtYmRhICogcmFkaWFucywgcGhpICogcmFkaWFuc10pO1xuICBpZiAocDApIHtcbiAgICB2YXIgbm9ybWFsID0gY2FydGVzaWFuQ3Jvc3MocDAsIHApLFxuICAgICAgICBlcXVhdG9yaWFsID0gW25vcm1hbFsxXSwgLW5vcm1hbFswXSwgMF0sXG4gICAgICAgIGluZmxlY3Rpb24gPSBjYXJ0ZXNpYW5Dcm9zcyhlcXVhdG9yaWFsLCBub3JtYWwpO1xuICAgIGNhcnRlc2lhbk5vcm1hbGl6ZUluUGxhY2UoaW5mbGVjdGlvbik7XG4gICAgaW5mbGVjdGlvbiA9IHNwaGVyaWNhbChpbmZsZWN0aW9uKTtcbiAgICB2YXIgZGVsdGEgPSBsYW1iZGEgLSBsYW1iZGEyLFxuICAgICAgICBzaWduJCQxID0gZGVsdGEgPiAwID8gMSA6IC0xLFxuICAgICAgICBsYW1iZGFpID0gaW5mbGVjdGlvblswXSAqIGRlZ3JlZXMgKiBzaWduJCQxLFxuICAgICAgICBwaGlpLFxuICAgICAgICBhbnRpbWVyaWRpYW4gPSBhYnMoZGVsdGEpID4gMTgwO1xuICAgIGlmIChhbnRpbWVyaWRpYW4gXiAoc2lnbiQkMSAqIGxhbWJkYTIgPCBsYW1iZGFpICYmIGxhbWJkYWkgPCBzaWduJCQxICogbGFtYmRhKSkge1xuICAgICAgcGhpaSA9IGluZmxlY3Rpb25bMV0gKiBkZWdyZWVzO1xuICAgICAgaWYgKHBoaWkgPiBwaGkxKSBwaGkxID0gcGhpaTtcbiAgICB9IGVsc2UgaWYgKGxhbWJkYWkgPSAobGFtYmRhaSArIDM2MCkgJSAzNjAgLSAxODAsIGFudGltZXJpZGlhbiBeIChzaWduJCQxICogbGFtYmRhMiA8IGxhbWJkYWkgJiYgbGFtYmRhaSA8IHNpZ24kJDEgKiBsYW1iZGEpKSB7XG4gICAgICBwaGlpID0gLWluZmxlY3Rpb25bMV0gKiBkZWdyZWVzO1xuICAgICAgaWYgKHBoaWkgPCBwaGkwKSBwaGkwID0gcGhpaTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHBoaSA8IHBoaTApIHBoaTAgPSBwaGk7XG4gICAgICBpZiAocGhpID4gcGhpMSkgcGhpMSA9IHBoaTtcbiAgICB9XG4gICAgaWYgKGFudGltZXJpZGlhbikge1xuICAgICAgaWYgKGxhbWJkYSA8IGxhbWJkYTIpIHtcbiAgICAgICAgaWYgKGFuZ2xlKGxhbWJkYTAkMSwgbGFtYmRhKSA+IGFuZ2xlKGxhbWJkYTAkMSwgbGFtYmRhMSkpIGxhbWJkYTEgPSBsYW1iZGE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoYW5nbGUobGFtYmRhLCBsYW1iZGExKSA+IGFuZ2xlKGxhbWJkYTAkMSwgbGFtYmRhMSkpIGxhbWJkYTAkMSA9IGxhbWJkYTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGxhbWJkYTEgPj0gbGFtYmRhMCQxKSB7XG4gICAgICAgIGlmIChsYW1iZGEgPCBsYW1iZGEwJDEpIGxhbWJkYTAkMSA9IGxhbWJkYTtcbiAgICAgICAgaWYgKGxhbWJkYSA+IGxhbWJkYTEpIGxhbWJkYTEgPSBsYW1iZGE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAobGFtYmRhID4gbGFtYmRhMikge1xuICAgICAgICAgIGlmIChhbmdsZShsYW1iZGEwJDEsIGxhbWJkYSkgPiBhbmdsZShsYW1iZGEwJDEsIGxhbWJkYTEpKSBsYW1iZGExID0gbGFtYmRhO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChhbmdsZShsYW1iZGEsIGxhbWJkYTEpID4gYW5nbGUobGFtYmRhMCQxLCBsYW1iZGExKSkgbGFtYmRhMCQxID0gbGFtYmRhO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHJhbmdlcy5wdXNoKHJhbmdlJDEgPSBbbGFtYmRhMCQxID0gbGFtYmRhLCBsYW1iZGExID0gbGFtYmRhXSk7XG4gIH1cbiAgaWYgKHBoaSA8IHBoaTApIHBoaTAgPSBwaGk7XG4gIGlmIChwaGkgPiBwaGkxKSBwaGkxID0gcGhpO1xuICBwMCA9IHAsIGxhbWJkYTIgPSBsYW1iZGE7XG59XG5cbmZ1bmN0aW9uIGJvdW5kc0xpbmVTdGFydCgpIHtcbiAgYm91bmRzU3RyZWFtLnBvaW50ID0gbGluZVBvaW50O1xufVxuXG5mdW5jdGlvbiBib3VuZHNMaW5lRW5kKCkge1xuICByYW5nZSQxWzBdID0gbGFtYmRhMCQxLCByYW5nZSQxWzFdID0gbGFtYmRhMTtcbiAgYm91bmRzU3RyZWFtLnBvaW50ID0gYm91bmRzUG9pbnQ7XG4gIHAwID0gbnVsbDtcbn1cblxuZnVuY3Rpb24gYm91bmRzUmluZ1BvaW50KGxhbWJkYSwgcGhpKSB7XG4gIGlmIChwMCkge1xuICAgIHZhciBkZWx0YSA9IGxhbWJkYSAtIGxhbWJkYTI7XG4gICAgZGVsdGFTdW0uYWRkKGFicyhkZWx0YSkgPiAxODAgPyBkZWx0YSArIChkZWx0YSA+IDAgPyAzNjAgOiAtMzYwKSA6IGRlbHRhKTtcbiAgfSBlbHNlIHtcbiAgICBsYW1iZGEwMCQxID0gbGFtYmRhLCBwaGkwMCQxID0gcGhpO1xuICB9XG4gIGFyZWFTdHJlYW0ucG9pbnQobGFtYmRhLCBwaGkpO1xuICBsaW5lUG9pbnQobGFtYmRhLCBwaGkpO1xufVxuXG5mdW5jdGlvbiBib3VuZHNSaW5nU3RhcnQoKSB7XG4gIGFyZWFTdHJlYW0ubGluZVN0YXJ0KCk7XG59XG5cbmZ1bmN0aW9uIGJvdW5kc1JpbmdFbmQoKSB7XG4gIGJvdW5kc1JpbmdQb2ludChsYW1iZGEwMCQxLCBwaGkwMCQxKTtcbiAgYXJlYVN0cmVhbS5saW5lRW5kKCk7XG4gIGlmIChhYnMoZGVsdGFTdW0pID4gZXBzaWxvbikgbGFtYmRhMCQxID0gLShsYW1iZGExID0gMTgwKTtcbiAgcmFuZ2UkMVswXSA9IGxhbWJkYTAkMSwgcmFuZ2UkMVsxXSA9IGxhbWJkYTE7XG4gIHAwID0gbnVsbDtcbn1cblxuLy8gRmluZHMgdGhlIGxlZnQtcmlnaHQgZGlzdGFuY2UgYmV0d2VlbiB0d28gbG9uZ2l0dWRlcy5cbi8vIFRoaXMgaXMgYWxtb3N0IHRoZSBzYW1lIGFzIChsYW1iZGExIC0gbGFtYmRhMCArIDM2MMKwKSAlIDM2MMKwLCBleGNlcHQgdGhhdCB3ZSB3YW50XG4vLyB0aGUgZGlzdGFuY2UgYmV0d2VlbiDCsTE4MMKwIHRvIGJlIDM2MMKwLlxuZnVuY3Rpb24gYW5nbGUobGFtYmRhMCwgbGFtYmRhMSkge1xuICByZXR1cm4gKGxhbWJkYTEgLT0gbGFtYmRhMCkgPCAwID8gbGFtYmRhMSArIDM2MCA6IGxhbWJkYTE7XG59XG5cbmZ1bmN0aW9uIHJhbmdlQ29tcGFyZShhLCBiKSB7XG4gIHJldHVybiBhWzBdIC0gYlswXTtcbn1cblxuZnVuY3Rpb24gcmFuZ2VDb250YWlucyhyYW5nZSQkMSwgeCkge1xuICByZXR1cm4gcmFuZ2UkJDFbMF0gPD0gcmFuZ2UkJDFbMV0gPyByYW5nZSQkMVswXSA8PSB4ICYmIHggPD0gcmFuZ2UkJDFbMV0gOiB4IDwgcmFuZ2UkJDFbMF0gfHwgcmFuZ2UkJDFbMV0gPCB4O1xufVxuXG52YXIgYm91bmRzID0gZnVuY3Rpb24oZmVhdHVyZSkge1xuICB2YXIgaSwgbiwgYSwgYiwgbWVyZ2VkLCBkZWx0YU1heCwgZGVsdGE7XG5cbiAgcGhpMSA9IGxhbWJkYTEgPSAtKGxhbWJkYTAkMSA9IHBoaTAgPSBJbmZpbml0eSk7XG4gIHJhbmdlcyA9IFtdO1xuICBnZW9TdHJlYW0oZmVhdHVyZSwgYm91bmRzU3RyZWFtKTtcblxuICAvLyBGaXJzdCwgc29ydCByYW5nZXMgYnkgdGhlaXIgbWluaW11bSBsb25naXR1ZGVzLlxuICBpZiAobiA9IHJhbmdlcy5sZW5ndGgpIHtcbiAgICByYW5nZXMuc29ydChyYW5nZUNvbXBhcmUpO1xuXG4gICAgLy8gVGhlbiwgbWVyZ2UgYW55IHJhbmdlcyB0aGF0IG92ZXJsYXAuXG4gICAgZm9yIChpID0gMSwgYSA9IHJhbmdlc1swXSwgbWVyZ2VkID0gW2FdOyBpIDwgbjsgKytpKSB7XG4gICAgICBiID0gcmFuZ2VzW2ldO1xuICAgICAgaWYgKHJhbmdlQ29udGFpbnMoYSwgYlswXSkgfHwgcmFuZ2VDb250YWlucyhhLCBiWzFdKSkge1xuICAgICAgICBpZiAoYW5nbGUoYVswXSwgYlsxXSkgPiBhbmdsZShhWzBdLCBhWzFdKSkgYVsxXSA9IGJbMV07XG4gICAgICAgIGlmIChhbmdsZShiWzBdLCBhWzFdKSA+IGFuZ2xlKGFbMF0sIGFbMV0pKSBhWzBdID0gYlswXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1lcmdlZC5wdXNoKGEgPSBiKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBGaW5hbGx5LCBmaW5kIHRoZSBsYXJnZXN0IGdhcCBiZXR3ZWVuIHRoZSBtZXJnZWQgcmFuZ2VzLlxuICAgIC8vIFRoZSBmaW5hbCBib3VuZGluZyBib3ggd2lsbCBiZSB0aGUgaW52ZXJzZSBvZiB0aGlzIGdhcC5cbiAgICBmb3IgKGRlbHRhTWF4ID0gLUluZmluaXR5LCBuID0gbWVyZ2VkLmxlbmd0aCAtIDEsIGkgPSAwLCBhID0gbWVyZ2VkW25dOyBpIDw9IG47IGEgPSBiLCArK2kpIHtcbiAgICAgIGIgPSBtZXJnZWRbaV07XG4gICAgICBpZiAoKGRlbHRhID0gYW5nbGUoYVsxXSwgYlswXSkpID4gZGVsdGFNYXgpIGRlbHRhTWF4ID0gZGVsdGEsIGxhbWJkYTAkMSA9IGJbMF0sIGxhbWJkYTEgPSBhWzFdO1xuICAgIH1cbiAgfVxuXG4gIHJhbmdlcyA9IHJhbmdlJDEgPSBudWxsO1xuXG4gIHJldHVybiBsYW1iZGEwJDEgPT09IEluZmluaXR5IHx8IHBoaTAgPT09IEluZmluaXR5XG4gICAgICA/IFtbTmFOLCBOYU5dLCBbTmFOLCBOYU5dXVxuICAgICAgOiBbW2xhbWJkYTAkMSwgcGhpMF0sIFtsYW1iZGExLCBwaGkxXV07XG59O1xuXG52YXIgVzA7XG52YXIgVzE7XG52YXIgWDA7XG52YXIgWTA7XG52YXIgWjA7XG52YXIgWDE7XG52YXIgWTE7XG52YXIgWjE7XG52YXIgWDI7XG52YXIgWTI7XG52YXIgWjI7XG52YXIgbGFtYmRhMDAkMjtcbnZhciBwaGkwMCQyO1xudmFyIHgwO1xudmFyIHkwO1xudmFyIHowOyAvLyBwcmV2aW91cyBwb2ludFxuXG52YXIgY2VudHJvaWRTdHJlYW0gPSB7XG4gIHNwaGVyZTogbm9vcCxcbiAgcG9pbnQ6IGNlbnRyb2lkUG9pbnQsXG4gIGxpbmVTdGFydDogY2VudHJvaWRMaW5lU3RhcnQsXG4gIGxpbmVFbmQ6IGNlbnRyb2lkTGluZUVuZCxcbiAgcG9seWdvblN0YXJ0OiBmdW5jdGlvbigpIHtcbiAgICBjZW50cm9pZFN0cmVhbS5saW5lU3RhcnQgPSBjZW50cm9pZFJpbmdTdGFydDtcbiAgICBjZW50cm9pZFN0cmVhbS5saW5lRW5kID0gY2VudHJvaWRSaW5nRW5kO1xuICB9LFxuICBwb2x5Z29uRW5kOiBmdW5jdGlvbigpIHtcbiAgICBjZW50cm9pZFN0cmVhbS5saW5lU3RhcnQgPSBjZW50cm9pZExpbmVTdGFydDtcbiAgICBjZW50cm9pZFN0cmVhbS5saW5lRW5kID0gY2VudHJvaWRMaW5lRW5kO1xuICB9XG59O1xuXG4vLyBBcml0aG1ldGljIG1lYW4gb2YgQ2FydGVzaWFuIHZlY3RvcnMuXG5mdW5jdGlvbiBjZW50cm9pZFBvaW50KGxhbWJkYSwgcGhpKSB7XG4gIGxhbWJkYSAqPSByYWRpYW5zLCBwaGkgKj0gcmFkaWFucztcbiAgdmFyIGNvc1BoaSA9IGNvcyhwaGkpO1xuICBjZW50cm9pZFBvaW50Q2FydGVzaWFuKGNvc1BoaSAqIGNvcyhsYW1iZGEpLCBjb3NQaGkgKiBzaW4obGFtYmRhKSwgc2luKHBoaSkpO1xufVxuXG5mdW5jdGlvbiBjZW50cm9pZFBvaW50Q2FydGVzaWFuKHgsIHksIHopIHtcbiAgKytXMDtcbiAgWDAgKz0gKHggLSBYMCkgLyBXMDtcbiAgWTAgKz0gKHkgLSBZMCkgLyBXMDtcbiAgWjAgKz0gKHogLSBaMCkgLyBXMDtcbn1cblxuZnVuY3Rpb24gY2VudHJvaWRMaW5lU3RhcnQoKSB7XG4gIGNlbnRyb2lkU3RyZWFtLnBvaW50ID0gY2VudHJvaWRMaW5lUG9pbnRGaXJzdDtcbn1cblxuZnVuY3Rpb24gY2VudHJvaWRMaW5lUG9pbnRGaXJzdChsYW1iZGEsIHBoaSkge1xuICBsYW1iZGEgKj0gcmFkaWFucywgcGhpICo9IHJhZGlhbnM7XG4gIHZhciBjb3NQaGkgPSBjb3MocGhpKTtcbiAgeDAgPSBjb3NQaGkgKiBjb3MobGFtYmRhKTtcbiAgeTAgPSBjb3NQaGkgKiBzaW4obGFtYmRhKTtcbiAgejAgPSBzaW4ocGhpKTtcbiAgY2VudHJvaWRTdHJlYW0ucG9pbnQgPSBjZW50cm9pZExpbmVQb2ludDtcbiAgY2VudHJvaWRQb2ludENhcnRlc2lhbih4MCwgeTAsIHowKTtcbn1cblxuZnVuY3Rpb24gY2VudHJvaWRMaW5lUG9pbnQobGFtYmRhLCBwaGkpIHtcbiAgbGFtYmRhICo9IHJhZGlhbnMsIHBoaSAqPSByYWRpYW5zO1xuICB2YXIgY29zUGhpID0gY29zKHBoaSksXG4gICAgICB4ID0gY29zUGhpICogY29zKGxhbWJkYSksXG4gICAgICB5ID0gY29zUGhpICogc2luKGxhbWJkYSksXG4gICAgICB6ID0gc2luKHBoaSksXG4gICAgICB3ID0gYXRhbjIoc3FydCgodyA9IHkwICogeiAtIHowICogeSkgKiB3ICsgKHcgPSB6MCAqIHggLSB4MCAqIHopICogdyArICh3ID0geDAgKiB5IC0geTAgKiB4KSAqIHcpLCB4MCAqIHggKyB5MCAqIHkgKyB6MCAqIHopO1xuICBXMSArPSB3O1xuICBYMSArPSB3ICogKHgwICsgKHgwID0geCkpO1xuICBZMSArPSB3ICogKHkwICsgKHkwID0geSkpO1xuICBaMSArPSB3ICogKHowICsgKHowID0geikpO1xuICBjZW50cm9pZFBvaW50Q2FydGVzaWFuKHgwLCB5MCwgejApO1xufVxuXG5mdW5jdGlvbiBjZW50cm9pZExpbmVFbmQoKSB7XG4gIGNlbnRyb2lkU3RyZWFtLnBvaW50ID0gY2VudHJvaWRQb2ludDtcbn1cblxuLy8gU2VlIEouIEUuIEJyb2NrLCBUaGUgSW5lcnRpYSBUZW5zb3IgZm9yIGEgU3BoZXJpY2FsIFRyaWFuZ2xlLFxuLy8gSi4gQXBwbGllZCBNZWNoYW5pY3MgNDIsIDIzOSAoMTk3NSkuXG5mdW5jdGlvbiBjZW50cm9pZFJpbmdTdGFydCgpIHtcbiAgY2VudHJvaWRTdHJlYW0ucG9pbnQgPSBjZW50cm9pZFJpbmdQb2ludEZpcnN0O1xufVxuXG5mdW5jdGlvbiBjZW50cm9pZFJpbmdFbmQoKSB7XG4gIGNlbnRyb2lkUmluZ1BvaW50KGxhbWJkYTAwJDIsIHBoaTAwJDIpO1xuICBjZW50cm9pZFN0cmVhbS5wb2ludCA9IGNlbnRyb2lkUG9pbnQ7XG59XG5cbmZ1bmN0aW9uIGNlbnRyb2lkUmluZ1BvaW50Rmlyc3QobGFtYmRhLCBwaGkpIHtcbiAgbGFtYmRhMDAkMiA9IGxhbWJkYSwgcGhpMDAkMiA9IHBoaTtcbiAgbGFtYmRhICo9IHJhZGlhbnMsIHBoaSAqPSByYWRpYW5zO1xuICBjZW50cm9pZFN0cmVhbS5wb2ludCA9IGNlbnRyb2lkUmluZ1BvaW50O1xuICB2YXIgY29zUGhpID0gY29zKHBoaSk7XG4gIHgwID0gY29zUGhpICogY29zKGxhbWJkYSk7XG4gIHkwID0gY29zUGhpICogc2luKGxhbWJkYSk7XG4gIHowID0gc2luKHBoaSk7XG4gIGNlbnRyb2lkUG9pbnRDYXJ0ZXNpYW4oeDAsIHkwLCB6MCk7XG59XG5cbmZ1bmN0aW9uIGNlbnRyb2lkUmluZ1BvaW50KGxhbWJkYSwgcGhpKSB7XG4gIGxhbWJkYSAqPSByYWRpYW5zLCBwaGkgKj0gcmFkaWFucztcbiAgdmFyIGNvc1BoaSA9IGNvcyhwaGkpLFxuICAgICAgeCA9IGNvc1BoaSAqIGNvcyhsYW1iZGEpLFxuICAgICAgeSA9IGNvc1BoaSAqIHNpbihsYW1iZGEpLFxuICAgICAgeiA9IHNpbihwaGkpLFxuICAgICAgY3ggPSB5MCAqIHogLSB6MCAqIHksXG4gICAgICBjeSA9IHowICogeCAtIHgwICogeixcbiAgICAgIGN6ID0geDAgKiB5IC0geTAgKiB4LFxuICAgICAgbSA9IHNxcnQoY3ggKiBjeCArIGN5ICogY3kgKyBjeiAqIGN6KSxcbiAgICAgIHcgPSBhc2luKG0pLCAvLyBsaW5lIHdlaWdodCA9IGFuZ2xlXG4gICAgICB2ID0gbSAmJiAtdyAvIG07IC8vIGFyZWEgd2VpZ2h0IG11bHRpcGxpZXJcbiAgWDIgKz0gdiAqIGN4O1xuICBZMiArPSB2ICogY3k7XG4gIFoyICs9IHYgKiBjejtcbiAgVzEgKz0gdztcbiAgWDEgKz0gdyAqICh4MCArICh4MCA9IHgpKTtcbiAgWTEgKz0gdyAqICh5MCArICh5MCA9IHkpKTtcbiAgWjEgKz0gdyAqICh6MCArICh6MCA9IHopKTtcbiAgY2VudHJvaWRQb2ludENhcnRlc2lhbih4MCwgeTAsIHowKTtcbn1cblxudmFyIGNlbnRyb2lkID0gZnVuY3Rpb24ob2JqZWN0KSB7XG4gIFcwID0gVzEgPVxuICBYMCA9IFkwID0gWjAgPVxuICBYMSA9IFkxID0gWjEgPVxuICBYMiA9IFkyID0gWjIgPSAwO1xuICBnZW9TdHJlYW0ob2JqZWN0LCBjZW50cm9pZFN0cmVhbSk7XG5cbiAgdmFyIHggPSBYMixcbiAgICAgIHkgPSBZMixcbiAgICAgIHogPSBaMixcbiAgICAgIG0gPSB4ICogeCArIHkgKiB5ICsgeiAqIHo7XG5cbiAgLy8gSWYgdGhlIGFyZWEtd2VpZ2h0ZWQgY2NlbnRyb2lkIGlzIHVuZGVmaW5lZCwgZmFsbCBiYWNrIHRvIGxlbmd0aC13ZWlnaHRlZCBjY2VudHJvaWQuXG4gIGlmIChtIDwgZXBzaWxvbjIpIHtcbiAgICB4ID0gWDEsIHkgPSBZMSwgeiA9IFoxO1xuICAgIC8vIElmIHRoZSBmZWF0dXJlIGhhcyB6ZXJvIGxlbmd0aCwgZmFsbCBiYWNrIHRvIGFyaXRobWV0aWMgbWVhbiBvZiBwb2ludCB2ZWN0b3JzLlxuICAgIGlmIChXMSA8IGVwc2lsb24pIHggPSBYMCwgeSA9IFkwLCB6ID0gWjA7XG4gICAgbSA9IHggKiB4ICsgeSAqIHkgKyB6ICogejtcbiAgICAvLyBJZiB0aGUgZmVhdHVyZSBzdGlsbCBoYXMgYW4gdW5kZWZpbmVkIGNjZW50cm9pZCwgdGhlbiByZXR1cm4uXG4gICAgaWYgKG0gPCBlcHNpbG9uMikgcmV0dXJuIFtOYU4sIE5hTl07XG4gIH1cblxuICByZXR1cm4gW2F0YW4yKHksIHgpICogZGVncmVlcywgYXNpbih6IC8gc3FydChtKSkgKiBkZWdyZWVzXTtcbn07XG5cbnZhciBjb25zdGFudCA9IGZ1bmN0aW9uKHgpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB4O1xuICB9O1xufTtcblxudmFyIGNvbXBvc2UgPSBmdW5jdGlvbihhLCBiKSB7XG5cbiAgZnVuY3Rpb24gY29tcG9zZSh4LCB5KSB7XG4gICAgcmV0dXJuIHggPSBhKHgsIHkpLCBiKHhbMF0sIHhbMV0pO1xuICB9XG5cbiAgaWYgKGEuaW52ZXJ0ICYmIGIuaW52ZXJ0KSBjb21wb3NlLmludmVydCA9IGZ1bmN0aW9uKHgsIHkpIHtcbiAgICByZXR1cm4geCA9IGIuaW52ZXJ0KHgsIHkpLCB4ICYmIGEuaW52ZXJ0KHhbMF0sIHhbMV0pO1xuICB9O1xuXG4gIHJldHVybiBjb21wb3NlO1xufTtcblxuZnVuY3Rpb24gcm90YXRpb25JZGVudGl0eShsYW1iZGEsIHBoaSkge1xuICByZXR1cm4gW2xhbWJkYSA+IHBpID8gbGFtYmRhIC0gdGF1IDogbGFtYmRhIDwgLXBpID8gbGFtYmRhICsgdGF1IDogbGFtYmRhLCBwaGldO1xufVxuXG5yb3RhdGlvbklkZW50aXR5LmludmVydCA9IHJvdGF0aW9uSWRlbnRpdHk7XG5cbmZ1bmN0aW9uIHJvdGF0ZVJhZGlhbnMoZGVsdGFMYW1iZGEsIGRlbHRhUGhpLCBkZWx0YUdhbW1hKSB7XG4gIHJldHVybiAoZGVsdGFMYW1iZGEgJT0gdGF1KSA/IChkZWx0YVBoaSB8fCBkZWx0YUdhbW1hID8gY29tcG9zZShyb3RhdGlvbkxhbWJkYShkZWx0YUxhbWJkYSksIHJvdGF0aW9uUGhpR2FtbWEoZGVsdGFQaGksIGRlbHRhR2FtbWEpKVxuICAgIDogcm90YXRpb25MYW1iZGEoZGVsdGFMYW1iZGEpKVxuICAgIDogKGRlbHRhUGhpIHx8IGRlbHRhR2FtbWEgPyByb3RhdGlvblBoaUdhbW1hKGRlbHRhUGhpLCBkZWx0YUdhbW1hKVxuICAgIDogcm90YXRpb25JZGVudGl0eSk7XG59XG5cbmZ1bmN0aW9uIGZvcndhcmRSb3RhdGlvbkxhbWJkYShkZWx0YUxhbWJkYSkge1xuICByZXR1cm4gZnVuY3Rpb24obGFtYmRhLCBwaGkpIHtcbiAgICByZXR1cm4gbGFtYmRhICs9IGRlbHRhTGFtYmRhLCBbbGFtYmRhID4gcGkgPyBsYW1iZGEgLSB0YXUgOiBsYW1iZGEgPCAtcGkgPyBsYW1iZGEgKyB0YXUgOiBsYW1iZGEsIHBoaV07XG4gIH07XG59XG5cbmZ1bmN0aW9uIHJvdGF0aW9uTGFtYmRhKGRlbHRhTGFtYmRhKSB7XG4gIHZhciByb3RhdGlvbiA9IGZvcndhcmRSb3RhdGlvbkxhbWJkYShkZWx0YUxhbWJkYSk7XG4gIHJvdGF0aW9uLmludmVydCA9IGZvcndhcmRSb3RhdGlvbkxhbWJkYSgtZGVsdGFMYW1iZGEpO1xuICByZXR1cm4gcm90YXRpb247XG59XG5cbmZ1bmN0aW9uIHJvdGF0aW9uUGhpR2FtbWEoZGVsdGFQaGksIGRlbHRhR2FtbWEpIHtcbiAgdmFyIGNvc0RlbHRhUGhpID0gY29zKGRlbHRhUGhpKSxcbiAgICAgIHNpbkRlbHRhUGhpID0gc2luKGRlbHRhUGhpKSxcbiAgICAgIGNvc0RlbHRhR2FtbWEgPSBjb3MoZGVsdGFHYW1tYSksXG4gICAgICBzaW5EZWx0YUdhbW1hID0gc2luKGRlbHRhR2FtbWEpO1xuXG4gIGZ1bmN0aW9uIHJvdGF0aW9uKGxhbWJkYSwgcGhpKSB7XG4gICAgdmFyIGNvc1BoaSA9IGNvcyhwaGkpLFxuICAgICAgICB4ID0gY29zKGxhbWJkYSkgKiBjb3NQaGksXG4gICAgICAgIHkgPSBzaW4obGFtYmRhKSAqIGNvc1BoaSxcbiAgICAgICAgeiA9IHNpbihwaGkpLFxuICAgICAgICBrID0geiAqIGNvc0RlbHRhUGhpICsgeCAqIHNpbkRlbHRhUGhpO1xuICAgIHJldHVybiBbXG4gICAgICBhdGFuMih5ICogY29zRGVsdGFHYW1tYSAtIGsgKiBzaW5EZWx0YUdhbW1hLCB4ICogY29zRGVsdGFQaGkgLSB6ICogc2luRGVsdGFQaGkpLFxuICAgICAgYXNpbihrICogY29zRGVsdGFHYW1tYSArIHkgKiBzaW5EZWx0YUdhbW1hKVxuICAgIF07XG4gIH1cblxuICByb3RhdGlvbi5pbnZlcnQgPSBmdW5jdGlvbihsYW1iZGEsIHBoaSkge1xuICAgIHZhciBjb3NQaGkgPSBjb3MocGhpKSxcbiAgICAgICAgeCA9IGNvcyhsYW1iZGEpICogY29zUGhpLFxuICAgICAgICB5ID0gc2luKGxhbWJkYSkgKiBjb3NQaGksXG4gICAgICAgIHogPSBzaW4ocGhpKSxcbiAgICAgICAgayA9IHogKiBjb3NEZWx0YUdhbW1hIC0geSAqIHNpbkRlbHRhR2FtbWE7XG4gICAgcmV0dXJuIFtcbiAgICAgIGF0YW4yKHkgKiBjb3NEZWx0YUdhbW1hICsgeiAqIHNpbkRlbHRhR2FtbWEsIHggKiBjb3NEZWx0YVBoaSArIGsgKiBzaW5EZWx0YVBoaSksXG4gICAgICBhc2luKGsgKiBjb3NEZWx0YVBoaSAtIHggKiBzaW5EZWx0YVBoaSlcbiAgICBdO1xuICB9O1xuXG4gIHJldHVybiByb3RhdGlvbjtcbn1cblxudmFyIHJvdGF0aW9uID0gZnVuY3Rpb24ocm90YXRlKSB7XG4gIHJvdGF0ZSA9IHJvdGF0ZVJhZGlhbnMocm90YXRlWzBdICogcmFkaWFucywgcm90YXRlWzFdICogcmFkaWFucywgcm90YXRlLmxlbmd0aCA+IDIgPyByb3RhdGVbMl0gKiByYWRpYW5zIDogMCk7XG5cbiAgZnVuY3Rpb24gZm9yd2FyZChjb29yZGluYXRlcykge1xuICAgIGNvb3JkaW5hdGVzID0gcm90YXRlKGNvb3JkaW5hdGVzWzBdICogcmFkaWFucywgY29vcmRpbmF0ZXNbMV0gKiByYWRpYW5zKTtcbiAgICByZXR1cm4gY29vcmRpbmF0ZXNbMF0gKj0gZGVncmVlcywgY29vcmRpbmF0ZXNbMV0gKj0gZGVncmVlcywgY29vcmRpbmF0ZXM7XG4gIH1cblxuICBmb3J3YXJkLmludmVydCA9IGZ1bmN0aW9uKGNvb3JkaW5hdGVzKSB7XG4gICAgY29vcmRpbmF0ZXMgPSByb3RhdGUuaW52ZXJ0KGNvb3JkaW5hdGVzWzBdICogcmFkaWFucywgY29vcmRpbmF0ZXNbMV0gKiByYWRpYW5zKTtcbiAgICByZXR1cm4gY29vcmRpbmF0ZXNbMF0gKj0gZGVncmVlcywgY29vcmRpbmF0ZXNbMV0gKj0gZGVncmVlcywgY29vcmRpbmF0ZXM7XG4gIH07XG5cbiAgcmV0dXJuIGZvcndhcmQ7XG59O1xuXG4vLyBHZW5lcmF0ZXMgYSBjaXJjbGUgY2VudGVyZWQgYXQgWzDCsCwgMMKwXSwgd2l0aCBhIGdpdmVuIHJhZGl1cyBhbmQgcHJlY2lzaW9uLlxuZnVuY3Rpb24gY2lyY2xlU3RyZWFtKHN0cmVhbSwgcmFkaXVzLCBkZWx0YSwgZGlyZWN0aW9uLCB0MCwgdDEpIHtcbiAgaWYgKCFkZWx0YSkgcmV0dXJuO1xuICB2YXIgY29zUmFkaXVzID0gY29zKHJhZGl1cyksXG4gICAgICBzaW5SYWRpdXMgPSBzaW4ocmFkaXVzKSxcbiAgICAgIHN0ZXAgPSBkaXJlY3Rpb24gKiBkZWx0YTtcbiAgaWYgKHQwID09IG51bGwpIHtcbiAgICB0MCA9IHJhZGl1cyArIGRpcmVjdGlvbiAqIHRhdTtcbiAgICB0MSA9IHJhZGl1cyAtIHN0ZXAgLyAyO1xuICB9IGVsc2Uge1xuICAgIHQwID0gY2lyY2xlUmFkaXVzKGNvc1JhZGl1cywgdDApO1xuICAgIHQxID0gY2lyY2xlUmFkaXVzKGNvc1JhZGl1cywgdDEpO1xuICAgIGlmIChkaXJlY3Rpb24gPiAwID8gdDAgPCB0MSA6IHQwID4gdDEpIHQwICs9IGRpcmVjdGlvbiAqIHRhdTtcbiAgfVxuICBmb3IgKHZhciBwb2ludCwgdCA9IHQwOyBkaXJlY3Rpb24gPiAwID8gdCA+IHQxIDogdCA8IHQxOyB0IC09IHN0ZXApIHtcbiAgICBwb2ludCA9IHNwaGVyaWNhbChbY29zUmFkaXVzLCAtc2luUmFkaXVzICogY29zKHQpLCAtc2luUmFkaXVzICogc2luKHQpXSk7XG4gICAgc3RyZWFtLnBvaW50KHBvaW50WzBdLCBwb2ludFsxXSk7XG4gIH1cbn1cblxuLy8gUmV0dXJucyB0aGUgc2lnbmVkIGFuZ2xlIG9mIGEgY2FydGVzaWFuIHBvaW50IHJlbGF0aXZlIHRvIFtjb3NSYWRpdXMsIDAsIDBdLlxuZnVuY3Rpb24gY2lyY2xlUmFkaXVzKGNvc1JhZGl1cywgcG9pbnQpIHtcbiAgcG9pbnQgPSBjYXJ0ZXNpYW4ocG9pbnQpLCBwb2ludFswXSAtPSBjb3NSYWRpdXM7XG4gIGNhcnRlc2lhbk5vcm1hbGl6ZUluUGxhY2UocG9pbnQpO1xuICB2YXIgcmFkaXVzID0gYWNvcygtcG9pbnRbMV0pO1xuICByZXR1cm4gKCgtcG9pbnRbMl0gPCAwID8gLXJhZGl1cyA6IHJhZGl1cykgKyB0YXUgLSBlcHNpbG9uKSAlIHRhdTtcbn1cblxudmFyIGNpcmNsZSA9IGZ1bmN0aW9uKCkge1xuICB2YXIgY2VudGVyID0gY29uc3RhbnQoWzAsIDBdKSxcbiAgICAgIHJhZGl1cyA9IGNvbnN0YW50KDkwKSxcbiAgICAgIHByZWNpc2lvbiA9IGNvbnN0YW50KDYpLFxuICAgICAgcmluZyxcbiAgICAgIHJvdGF0ZSxcbiAgICAgIHN0cmVhbSA9IHtwb2ludDogcG9pbnR9O1xuXG4gIGZ1bmN0aW9uIHBvaW50KHgsIHkpIHtcbiAgICByaW5nLnB1c2goeCA9IHJvdGF0ZSh4LCB5KSk7XG4gICAgeFswXSAqPSBkZWdyZWVzLCB4WzFdICo9IGRlZ3JlZXM7XG4gIH1cblxuICBmdW5jdGlvbiBjaXJjbGUoKSB7XG4gICAgdmFyIGMgPSBjZW50ZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSxcbiAgICAgICAgciA9IHJhZGl1cy5hcHBseSh0aGlzLCBhcmd1bWVudHMpICogcmFkaWFucyxcbiAgICAgICAgcCA9IHByZWNpc2lvbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpICogcmFkaWFucztcbiAgICByaW5nID0gW107XG4gICAgcm90YXRlID0gcm90YXRlUmFkaWFucygtY1swXSAqIHJhZGlhbnMsIC1jWzFdICogcmFkaWFucywgMCkuaW52ZXJ0O1xuICAgIGNpcmNsZVN0cmVhbShzdHJlYW0sIHIsIHAsIDEpO1xuICAgIGMgPSB7dHlwZTogXCJQb2x5Z29uXCIsIGNvb3JkaW5hdGVzOiBbcmluZ119O1xuICAgIHJpbmcgPSByb3RhdGUgPSBudWxsO1xuICAgIHJldHVybiBjO1xuICB9XG5cbiAgY2lyY2xlLmNlbnRlciA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChjZW50ZXIgPSB0eXBlb2YgXyA9PT0gXCJmdW5jdGlvblwiID8gXyA6IGNvbnN0YW50KFsrX1swXSwgK19bMV1dKSwgY2lyY2xlKSA6IGNlbnRlcjtcbiAgfTtcblxuICBjaXJjbGUucmFkaXVzID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHJhZGl1cyA9IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogY29uc3RhbnQoK18pLCBjaXJjbGUpIDogcmFkaXVzO1xuICB9O1xuXG4gIGNpcmNsZS5wcmVjaXNpb24gPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAocHJlY2lzaW9uID0gdHlwZW9mIF8gPT09IFwiZnVuY3Rpb25cIiA/IF8gOiBjb25zdGFudCgrXyksIGNpcmNsZSkgOiBwcmVjaXNpb247XG4gIH07XG5cbiAgcmV0dXJuIGNpcmNsZTtcbn07XG5cbnZhciBjbGlwQnVmZmVyID0gZnVuY3Rpb24oKSB7XG4gIHZhciBsaW5lcyA9IFtdLFxuICAgICAgbGluZTtcbiAgcmV0dXJuIHtcbiAgICBwb2ludDogZnVuY3Rpb24oeCwgeSkge1xuICAgICAgbGluZS5wdXNoKFt4LCB5XSk7XG4gICAgfSxcbiAgICBsaW5lU3RhcnQ6IGZ1bmN0aW9uKCkge1xuICAgICAgbGluZXMucHVzaChsaW5lID0gW10pO1xuICAgIH0sXG4gICAgbGluZUVuZDogbm9vcCxcbiAgICByZWpvaW46IGZ1bmN0aW9uKCkge1xuICAgICAgaWYgKGxpbmVzLmxlbmd0aCA+IDEpIGxpbmVzLnB1c2gobGluZXMucG9wKCkuY29uY2F0KGxpbmVzLnNoaWZ0KCkpKTtcbiAgICB9LFxuICAgIHJlc3VsdDogZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgcmVzdWx0ID0gbGluZXM7XG4gICAgICBsaW5lcyA9IFtdO1xuICAgICAgbGluZSA9IG51bGw7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgfTtcbn07XG5cbnZhciBjbGlwTGluZSA9IGZ1bmN0aW9uKGEsIGIsIHgwLCB5MCwgeDEsIHkxKSB7XG4gIHZhciBheCA9IGFbMF0sXG4gICAgICBheSA9IGFbMV0sXG4gICAgICBieCA9IGJbMF0sXG4gICAgICBieSA9IGJbMV0sXG4gICAgICB0MCA9IDAsXG4gICAgICB0MSA9IDEsXG4gICAgICBkeCA9IGJ4IC0gYXgsXG4gICAgICBkeSA9IGJ5IC0gYXksXG4gICAgICByO1xuXG4gIHIgPSB4MCAtIGF4O1xuICBpZiAoIWR4ICYmIHIgPiAwKSByZXR1cm47XG4gIHIgLz0gZHg7XG4gIGlmIChkeCA8IDApIHtcbiAgICBpZiAociA8IHQwKSByZXR1cm47XG4gICAgaWYgKHIgPCB0MSkgdDEgPSByO1xuICB9IGVsc2UgaWYgKGR4ID4gMCkge1xuICAgIGlmIChyID4gdDEpIHJldHVybjtcbiAgICBpZiAociA+IHQwKSB0MCA9IHI7XG4gIH1cblxuICByID0geDEgLSBheDtcbiAgaWYgKCFkeCAmJiByIDwgMCkgcmV0dXJuO1xuICByIC89IGR4O1xuICBpZiAoZHggPCAwKSB7XG4gICAgaWYgKHIgPiB0MSkgcmV0dXJuO1xuICAgIGlmIChyID4gdDApIHQwID0gcjtcbiAgfSBlbHNlIGlmIChkeCA+IDApIHtcbiAgICBpZiAociA8IHQwKSByZXR1cm47XG4gICAgaWYgKHIgPCB0MSkgdDEgPSByO1xuICB9XG5cbiAgciA9IHkwIC0gYXk7XG4gIGlmICghZHkgJiYgciA+IDApIHJldHVybjtcbiAgciAvPSBkeTtcbiAgaWYgKGR5IDwgMCkge1xuICAgIGlmIChyIDwgdDApIHJldHVybjtcbiAgICBpZiAociA8IHQxKSB0MSA9IHI7XG4gIH0gZWxzZSBpZiAoZHkgPiAwKSB7XG4gICAgaWYgKHIgPiB0MSkgcmV0dXJuO1xuICAgIGlmIChyID4gdDApIHQwID0gcjtcbiAgfVxuXG4gIHIgPSB5MSAtIGF5O1xuICBpZiAoIWR5ICYmIHIgPCAwKSByZXR1cm47XG4gIHIgLz0gZHk7XG4gIGlmIChkeSA8IDApIHtcbiAgICBpZiAociA+IHQxKSByZXR1cm47XG4gICAgaWYgKHIgPiB0MCkgdDAgPSByO1xuICB9IGVsc2UgaWYgKGR5ID4gMCkge1xuICAgIGlmIChyIDwgdDApIHJldHVybjtcbiAgICBpZiAociA8IHQxKSB0MSA9IHI7XG4gIH1cblxuICBpZiAodDAgPiAwKSBhWzBdID0gYXggKyB0MCAqIGR4LCBhWzFdID0gYXkgKyB0MCAqIGR5O1xuICBpZiAodDEgPCAxKSBiWzBdID0gYXggKyB0MSAqIGR4LCBiWzFdID0gYXkgKyB0MSAqIGR5O1xuICByZXR1cm4gdHJ1ZTtcbn07XG5cbnZhciBwb2ludEVxdWFsID0gZnVuY3Rpb24oYSwgYikge1xuICByZXR1cm4gYWJzKGFbMF0gLSBiWzBdKSA8IGVwc2lsb24gJiYgYWJzKGFbMV0gLSBiWzFdKSA8IGVwc2lsb247XG59O1xuXG5mdW5jdGlvbiBJbnRlcnNlY3Rpb24ocG9pbnQsIHBvaW50cywgb3RoZXIsIGVudHJ5KSB7XG4gIHRoaXMueCA9IHBvaW50O1xuICB0aGlzLnogPSBwb2ludHM7XG4gIHRoaXMubyA9IG90aGVyOyAvLyBhbm90aGVyIGludGVyc2VjdGlvblxuICB0aGlzLmUgPSBlbnRyeTsgLy8gaXMgYW4gZW50cnk/XG4gIHRoaXMudiA9IGZhbHNlOyAvLyB2aXNpdGVkXG4gIHRoaXMubiA9IHRoaXMucCA9IG51bGw7IC8vIG5leHQgJiBwcmV2aW91c1xufVxuXG4vLyBBIGdlbmVyYWxpemVkIHBvbHlnb24gY2xpcHBpbmcgYWxnb3JpdGhtOiBnaXZlbiBhIHBvbHlnb24gdGhhdCBoYXMgYmVlbiBjdXRcbi8vIGludG8gaXRzIHZpc2libGUgbGluZSBzZWdtZW50cywgYW5kIHJlam9pbnMgdGhlIHNlZ21lbnRzIGJ5IGludGVycG9sYXRpbmdcbi8vIGFsb25nIHRoZSBjbGlwIGVkZ2UuXG52YXIgY2xpcFBvbHlnb24gPSBmdW5jdGlvbihzZWdtZW50cywgY29tcGFyZUludGVyc2VjdGlvbiwgc3RhcnRJbnNpZGUsIGludGVycG9sYXRlLCBzdHJlYW0pIHtcbiAgdmFyIHN1YmplY3QgPSBbXSxcbiAgICAgIGNsaXAgPSBbXSxcbiAgICAgIGksXG4gICAgICBuO1xuXG4gIHNlZ21lbnRzLmZvckVhY2goZnVuY3Rpb24oc2VnbWVudCkge1xuICAgIGlmICgobiA9IHNlZ21lbnQubGVuZ3RoIC0gMSkgPD0gMCkgcmV0dXJuO1xuICAgIHZhciBuLCBwMCA9IHNlZ21lbnRbMF0sIHAxID0gc2VnbWVudFtuXSwgeDtcblxuICAgIC8vIElmIHRoZSBmaXJzdCBhbmQgbGFzdCBwb2ludHMgb2YgYSBzZWdtZW50IGFyZSBjb2luY2lkZW50LCB0aGVuIHRyZWF0IGFzIGFcbiAgICAvLyBjbG9zZWQgcmluZy4gVE9ETyBpZiBhbGwgcmluZ3MgYXJlIGNsb3NlZCwgdGhlbiB0aGUgd2luZGluZyBvcmRlciBvZiB0aGVcbiAgICAvLyBleHRlcmlvciByaW5nIHNob3VsZCBiZSBjaGVja2VkLlxuICAgIGlmIChwb2ludEVxdWFsKHAwLCBwMSkpIHtcbiAgICAgIHN0cmVhbS5saW5lU3RhcnQoKTtcbiAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyArK2kpIHN0cmVhbS5wb2ludCgocDAgPSBzZWdtZW50W2ldKVswXSwgcDBbMV0pO1xuICAgICAgc3RyZWFtLmxpbmVFbmQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzdWJqZWN0LnB1c2goeCA9IG5ldyBJbnRlcnNlY3Rpb24ocDAsIHNlZ21lbnQsIG51bGwsIHRydWUpKTtcbiAgICBjbGlwLnB1c2goeC5vID0gbmV3IEludGVyc2VjdGlvbihwMCwgbnVsbCwgeCwgZmFsc2UpKTtcbiAgICBzdWJqZWN0LnB1c2goeCA9IG5ldyBJbnRlcnNlY3Rpb24ocDEsIHNlZ21lbnQsIG51bGwsIGZhbHNlKSk7XG4gICAgY2xpcC5wdXNoKHgubyA9IG5ldyBJbnRlcnNlY3Rpb24ocDEsIG51bGwsIHgsIHRydWUpKTtcbiAgfSk7XG5cbiAgaWYgKCFzdWJqZWN0Lmxlbmd0aCkgcmV0dXJuO1xuXG4gIGNsaXAuc29ydChjb21wYXJlSW50ZXJzZWN0aW9uKTtcbiAgbGluayhzdWJqZWN0KTtcbiAgbGluayhjbGlwKTtcblxuICBmb3IgKGkgPSAwLCBuID0gY2xpcC5sZW5ndGg7IGkgPCBuOyArK2kpIHtcbiAgICBjbGlwW2ldLmUgPSBzdGFydEluc2lkZSA9ICFzdGFydEluc2lkZTtcbiAgfVxuXG4gIHZhciBzdGFydCA9IHN1YmplY3RbMF0sXG4gICAgICBwb2ludHMsXG4gICAgICBwb2ludDtcblxuICB3aGlsZSAoMSkge1xuICAgIC8vIEZpbmQgZmlyc3QgdW52aXNpdGVkIGludGVyc2VjdGlvbi5cbiAgICB2YXIgY3VycmVudCA9IHN0YXJ0LFxuICAgICAgICBpc1N1YmplY3QgPSB0cnVlO1xuICAgIHdoaWxlIChjdXJyZW50LnYpIGlmICgoY3VycmVudCA9IGN1cnJlbnQubikgPT09IHN0YXJ0KSByZXR1cm47XG4gICAgcG9pbnRzID0gY3VycmVudC56O1xuICAgIHN0cmVhbS5saW5lU3RhcnQoKTtcbiAgICBkbyB7XG4gICAgICBjdXJyZW50LnYgPSBjdXJyZW50Lm8udiA9IHRydWU7XG4gICAgICBpZiAoY3VycmVudC5lKSB7XG4gICAgICAgIGlmIChpc1N1YmplY3QpIHtcbiAgICAgICAgICBmb3IgKGkgPSAwLCBuID0gcG9pbnRzLmxlbmd0aDsgaSA8IG47ICsraSkgc3RyZWFtLnBvaW50KChwb2ludCA9IHBvaW50c1tpXSlbMF0sIHBvaW50WzFdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpbnRlcnBvbGF0ZShjdXJyZW50LngsIGN1cnJlbnQubi54LCAxLCBzdHJlYW0pO1xuICAgICAgICB9XG4gICAgICAgIGN1cnJlbnQgPSBjdXJyZW50Lm47XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoaXNTdWJqZWN0KSB7XG4gICAgICAgICAgcG9pbnRzID0gY3VycmVudC5wLno7XG4gICAgICAgICAgZm9yIChpID0gcG9pbnRzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSBzdHJlYW0ucG9pbnQoKHBvaW50ID0gcG9pbnRzW2ldKVswXSwgcG9pbnRbMV0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGludGVycG9sYXRlKGN1cnJlbnQueCwgY3VycmVudC5wLngsIC0xLCBzdHJlYW0pO1xuICAgICAgICB9XG4gICAgICAgIGN1cnJlbnQgPSBjdXJyZW50LnA7XG4gICAgICB9XG4gICAgICBjdXJyZW50ID0gY3VycmVudC5vO1xuICAgICAgcG9pbnRzID0gY3VycmVudC56O1xuICAgICAgaXNTdWJqZWN0ID0gIWlzU3ViamVjdDtcbiAgICB9IHdoaWxlICghY3VycmVudC52KTtcbiAgICBzdHJlYW0ubGluZUVuZCgpO1xuICB9XG59O1xuXG5mdW5jdGlvbiBsaW5rKGFycmF5KSB7XG4gIGlmICghKG4gPSBhcnJheS5sZW5ndGgpKSByZXR1cm47XG4gIHZhciBuLFxuICAgICAgaSA9IDAsXG4gICAgICBhID0gYXJyYXlbMF0sXG4gICAgICBiO1xuICB3aGlsZSAoKytpIDwgbikge1xuICAgIGEubiA9IGIgPSBhcnJheVtpXTtcbiAgICBiLnAgPSBhO1xuICAgIGEgPSBiO1xuICB9XG4gIGEubiA9IGIgPSBhcnJheVswXTtcbiAgYi5wID0gYTtcbn1cblxudmFyIGNsaXBNYXggPSAxZTk7XG52YXIgY2xpcE1pbiA9IC1jbGlwTWF4O1xuXG4vLyBUT0RPIFVzZSBkMy1wb2x5Z29u4oCZcyBwb2x5Z29uQ29udGFpbnMgaGVyZSBmb3IgdGhlIHJpbmcgY2hlY2s/XG4vLyBUT0RPIEVsaW1pbmF0ZSBkdXBsaWNhdGUgYnVmZmVyaW5nIGluIGNsaXBCdWZmZXIgYW5kIHBvbHlnb24ucHVzaD9cblxuZnVuY3Rpb24gY2xpcEV4dGVudCh4MCwgeTAsIHgxLCB5MSkge1xuXG4gIGZ1bmN0aW9uIHZpc2libGUoeCwgeSkge1xuICAgIHJldHVybiB4MCA8PSB4ICYmIHggPD0geDEgJiYgeTAgPD0geSAmJiB5IDw9IHkxO1xuICB9XG5cbiAgZnVuY3Rpb24gaW50ZXJwb2xhdGUoZnJvbSwgdG8sIGRpcmVjdGlvbiwgc3RyZWFtKSB7XG4gICAgdmFyIGEgPSAwLCBhMSA9IDA7XG4gICAgaWYgKGZyb20gPT0gbnVsbFxuICAgICAgICB8fCAoYSA9IGNvcm5lcihmcm9tLCBkaXJlY3Rpb24pKSAhPT0gKGExID0gY29ybmVyKHRvLCBkaXJlY3Rpb24pKVxuICAgICAgICB8fCBjb21wYXJlUG9pbnQoZnJvbSwgdG8pIDwgMCBeIGRpcmVjdGlvbiA+IDApIHtcbiAgICAgIGRvIHN0cmVhbS5wb2ludChhID09PSAwIHx8IGEgPT09IDMgPyB4MCA6IHgxLCBhID4gMSA/IHkxIDogeTApO1xuICAgICAgd2hpbGUgKChhID0gKGEgKyBkaXJlY3Rpb24gKyA0KSAlIDQpICE9PSBhMSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0cmVhbS5wb2ludCh0b1swXSwgdG9bMV0pO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIGNvcm5lcihwLCBkaXJlY3Rpb24pIHtcbiAgICByZXR1cm4gYWJzKHBbMF0gLSB4MCkgPCBlcHNpbG9uID8gZGlyZWN0aW9uID4gMCA/IDAgOiAzXG4gICAgICAgIDogYWJzKHBbMF0gLSB4MSkgPCBlcHNpbG9uID8gZGlyZWN0aW9uID4gMCA/IDIgOiAxXG4gICAgICAgIDogYWJzKHBbMV0gLSB5MCkgPCBlcHNpbG9uID8gZGlyZWN0aW9uID4gMCA/IDEgOiAwXG4gICAgICAgIDogZGlyZWN0aW9uID4gMCA/IDMgOiAyOyAvLyBhYnMocFsxXSAtIHkxKSA8IGVwc2lsb25cbiAgfVxuXG4gIGZ1bmN0aW9uIGNvbXBhcmVJbnRlcnNlY3Rpb24oYSwgYikge1xuICAgIHJldHVybiBjb21wYXJlUG9pbnQoYS54LCBiLngpO1xuICB9XG5cbiAgZnVuY3Rpb24gY29tcGFyZVBvaW50KGEsIGIpIHtcbiAgICB2YXIgY2EgPSBjb3JuZXIoYSwgMSksXG4gICAgICAgIGNiID0gY29ybmVyKGIsIDEpO1xuICAgIHJldHVybiBjYSAhPT0gY2IgPyBjYSAtIGNiXG4gICAgICAgIDogY2EgPT09IDAgPyBiWzFdIC0gYVsxXVxuICAgICAgICA6IGNhID09PSAxID8gYVswXSAtIGJbMF1cbiAgICAgICAgOiBjYSA9PT0gMiA/IGFbMV0gLSBiWzFdXG4gICAgICAgIDogYlswXSAtIGFbMF07XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24oc3RyZWFtKSB7XG4gICAgdmFyIGFjdGl2ZVN0cmVhbSA9IHN0cmVhbSxcbiAgICAgICAgYnVmZmVyU3RyZWFtID0gY2xpcEJ1ZmZlcigpLFxuICAgICAgICBzZWdtZW50cyxcbiAgICAgICAgcG9seWdvbixcbiAgICAgICAgcmluZyxcbiAgICAgICAgeF9fLCB5X18sIHZfXywgLy8gZmlyc3QgcG9pbnRcbiAgICAgICAgeF8sIHlfLCB2XywgLy8gcHJldmlvdXMgcG9pbnRcbiAgICAgICAgZmlyc3QsXG4gICAgICAgIGNsZWFuO1xuXG4gICAgdmFyIGNsaXBTdHJlYW0gPSB7XG4gICAgICBwb2ludDogcG9pbnQsXG4gICAgICBsaW5lU3RhcnQ6IGxpbmVTdGFydCxcbiAgICAgIGxpbmVFbmQ6IGxpbmVFbmQsXG4gICAgICBwb2x5Z29uU3RhcnQ6IHBvbHlnb25TdGFydCxcbiAgICAgIHBvbHlnb25FbmQ6IHBvbHlnb25FbmRcbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gcG9pbnQoeCwgeSkge1xuICAgICAgaWYgKHZpc2libGUoeCwgeSkpIGFjdGl2ZVN0cmVhbS5wb2ludCh4LCB5KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwb2x5Z29uSW5zaWRlKCkge1xuICAgICAgdmFyIHdpbmRpbmcgPSAwO1xuXG4gICAgICBmb3IgKHZhciBpID0gMCwgbiA9IHBvbHlnb24ubGVuZ3RoOyBpIDwgbjsgKytpKSB7XG4gICAgICAgIGZvciAodmFyIHJpbmcgPSBwb2x5Z29uW2ldLCBqID0gMSwgbSA9IHJpbmcubGVuZ3RoLCBwb2ludCA9IHJpbmdbMF0sIGEwLCBhMSwgYjAgPSBwb2ludFswXSwgYjEgPSBwb2ludFsxXTsgaiA8IG07ICsraikge1xuICAgICAgICAgIGEwID0gYjAsIGExID0gYjEsIHBvaW50ID0gcmluZ1tqXSwgYjAgPSBwb2ludFswXSwgYjEgPSBwb2ludFsxXTtcbiAgICAgICAgICBpZiAoYTEgPD0geTEpIHsgaWYgKGIxID4geTEgJiYgKGIwIC0gYTApICogKHkxIC0gYTEpID4gKGIxIC0gYTEpICogKHgwIC0gYTApKSArK3dpbmRpbmc7IH1cbiAgICAgICAgICBlbHNlIHsgaWYgKGIxIDw9IHkxICYmIChiMCAtIGEwKSAqICh5MSAtIGExKSA8IChiMSAtIGExKSAqICh4MCAtIGEwKSkgLS13aW5kaW5nOyB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHdpbmRpbmc7XG4gICAgfVxuXG4gICAgLy8gQnVmZmVyIGdlb21ldHJ5IHdpdGhpbiBhIHBvbHlnb24gYW5kIHRoZW4gY2xpcCBpdCBlbiBtYXNzZS5cbiAgICBmdW5jdGlvbiBwb2x5Z29uU3RhcnQoKSB7XG4gICAgICBhY3RpdmVTdHJlYW0gPSBidWZmZXJTdHJlYW0sIHNlZ21lbnRzID0gW10sIHBvbHlnb24gPSBbXSwgY2xlYW4gPSB0cnVlO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBvbHlnb25FbmQoKSB7XG4gICAgICB2YXIgc3RhcnRJbnNpZGUgPSBwb2x5Z29uSW5zaWRlKCksXG4gICAgICAgICAgY2xlYW5JbnNpZGUgPSBjbGVhbiAmJiBzdGFydEluc2lkZSxcbiAgICAgICAgICB2aXNpYmxlID0gKHNlZ21lbnRzID0gZDNBcnJheS5tZXJnZShzZWdtZW50cykpLmxlbmd0aDtcbiAgICAgIGlmIChjbGVhbkluc2lkZSB8fCB2aXNpYmxlKSB7XG4gICAgICAgIHN0cmVhbS5wb2x5Z29uU3RhcnQoKTtcbiAgICAgICAgaWYgKGNsZWFuSW5zaWRlKSB7XG4gICAgICAgICAgc3RyZWFtLmxpbmVTdGFydCgpO1xuICAgICAgICAgIGludGVycG9sYXRlKG51bGwsIG51bGwsIDEsIHN0cmVhbSk7XG4gICAgICAgICAgc3RyZWFtLmxpbmVFbmQoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodmlzaWJsZSkge1xuICAgICAgICAgIGNsaXBQb2x5Z29uKHNlZ21lbnRzLCBjb21wYXJlSW50ZXJzZWN0aW9uLCBzdGFydEluc2lkZSwgaW50ZXJwb2xhdGUsIHN0cmVhbSk7XG4gICAgICAgIH1cbiAgICAgICAgc3RyZWFtLnBvbHlnb25FbmQoKTtcbiAgICAgIH1cbiAgICAgIGFjdGl2ZVN0cmVhbSA9IHN0cmVhbSwgc2VnbWVudHMgPSBwb2x5Z29uID0gcmluZyA9IG51bGw7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbGluZVN0YXJ0KCkge1xuICAgICAgY2xpcFN0cmVhbS5wb2ludCA9IGxpbmVQb2ludDtcbiAgICAgIGlmIChwb2x5Z29uKSBwb2x5Z29uLnB1c2gocmluZyA9IFtdKTtcbiAgICAgIGZpcnN0ID0gdHJ1ZTtcbiAgICAgIHZfID0gZmFsc2U7XG4gICAgICB4XyA9IHlfID0gTmFOO1xuICAgIH1cblxuICAgIC8vIFRPRE8gcmF0aGVyIHRoYW4gc3BlY2lhbC1jYXNlIHBvbHlnb25zLCBzaW1wbHkgaGFuZGxlIHRoZW0gc2VwYXJhdGVseS5cbiAgICAvLyBJZGVhbGx5LCBjb2luY2lkZW50IGludGVyc2VjdGlvbiBwb2ludHMgc2hvdWxkIGJlIGppdHRlcmVkIHRvIGF2b2lkXG4gICAgLy8gY2xpcHBpbmcgaXNzdWVzLlxuICAgIGZ1bmN0aW9uIGxpbmVFbmQoKSB7XG4gICAgICBpZiAoc2VnbWVudHMpIHtcbiAgICAgICAgbGluZVBvaW50KHhfXywgeV9fKTtcbiAgICAgICAgaWYgKHZfXyAmJiB2XykgYnVmZmVyU3RyZWFtLnJlam9pbigpO1xuICAgICAgICBzZWdtZW50cy5wdXNoKGJ1ZmZlclN0cmVhbS5yZXN1bHQoKSk7XG4gICAgICB9XG4gICAgICBjbGlwU3RyZWFtLnBvaW50ID0gcG9pbnQ7XG4gICAgICBpZiAodl8pIGFjdGl2ZVN0cmVhbS5saW5lRW5kKCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbGluZVBvaW50KHgsIHkpIHtcbiAgICAgIHZhciB2ID0gdmlzaWJsZSh4LCB5KTtcbiAgICAgIGlmIChwb2x5Z29uKSByaW5nLnB1c2goW3gsIHldKTtcbiAgICAgIGlmIChmaXJzdCkge1xuICAgICAgICB4X18gPSB4LCB5X18gPSB5LCB2X18gPSB2O1xuICAgICAgICBmaXJzdCA9IGZhbHNlO1xuICAgICAgICBpZiAodikge1xuICAgICAgICAgIGFjdGl2ZVN0cmVhbS5saW5lU3RhcnQoKTtcbiAgICAgICAgICBhY3RpdmVTdHJlYW0ucG9pbnQoeCwgeSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh2ICYmIHZfKSBhY3RpdmVTdHJlYW0ucG9pbnQoeCwgeSk7XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIHZhciBhID0gW3hfID0gTWF0aC5tYXgoY2xpcE1pbiwgTWF0aC5taW4oY2xpcE1heCwgeF8pKSwgeV8gPSBNYXRoLm1heChjbGlwTWluLCBNYXRoLm1pbihjbGlwTWF4LCB5XykpXSxcbiAgICAgICAgICAgICAgYiA9IFt4ID0gTWF0aC5tYXgoY2xpcE1pbiwgTWF0aC5taW4oY2xpcE1heCwgeCkpLCB5ID0gTWF0aC5tYXgoY2xpcE1pbiwgTWF0aC5taW4oY2xpcE1heCwgeSkpXTtcbiAgICAgICAgICBpZiAoY2xpcExpbmUoYSwgYiwgeDAsIHkwLCB4MSwgeTEpKSB7XG4gICAgICAgICAgICBpZiAoIXZfKSB7XG4gICAgICAgICAgICAgIGFjdGl2ZVN0cmVhbS5saW5lU3RhcnQoKTtcbiAgICAgICAgICAgICAgYWN0aXZlU3RyZWFtLnBvaW50KGFbMF0sIGFbMV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYWN0aXZlU3RyZWFtLnBvaW50KGJbMF0sIGJbMV0pO1xuICAgICAgICAgICAgaWYgKCF2KSBhY3RpdmVTdHJlYW0ubGluZUVuZCgpO1xuICAgICAgICAgICAgY2xlYW4gPSBmYWxzZTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHYpIHtcbiAgICAgICAgICAgIGFjdGl2ZVN0cmVhbS5saW5lU3RhcnQoKTtcbiAgICAgICAgICAgIGFjdGl2ZVN0cmVhbS5wb2ludCh4LCB5KTtcbiAgICAgICAgICAgIGNsZWFuID0gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICB4XyA9IHgsIHlfID0geSwgdl8gPSB2O1xuICAgIH1cblxuICAgIHJldHVybiBjbGlwU3RyZWFtO1xuICB9O1xufVxuXG52YXIgZXh0ZW50ID0gZnVuY3Rpb24oKSB7XG4gIHZhciB4MCA9IDAsXG4gICAgICB5MCA9IDAsXG4gICAgICB4MSA9IDk2MCxcbiAgICAgIHkxID0gNTAwLFxuICAgICAgY2FjaGUsXG4gICAgICBjYWNoZVN0cmVhbSxcbiAgICAgIGNsaXA7XG5cbiAgcmV0dXJuIGNsaXAgPSB7XG4gICAgc3RyZWFtOiBmdW5jdGlvbihzdHJlYW0pIHtcbiAgICAgIHJldHVybiBjYWNoZSAmJiBjYWNoZVN0cmVhbSA9PT0gc3RyZWFtID8gY2FjaGUgOiBjYWNoZSA9IGNsaXBFeHRlbnQoeDAsIHkwLCB4MSwgeTEpKGNhY2hlU3RyZWFtID0gc3RyZWFtKTtcbiAgICB9LFxuICAgIGV4dGVudDogZnVuY3Rpb24oXykge1xuICAgICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoeDAgPSArX1swXVswXSwgeTAgPSArX1swXVsxXSwgeDEgPSArX1sxXVswXSwgeTEgPSArX1sxXVsxXSwgY2FjaGUgPSBjYWNoZVN0cmVhbSA9IG51bGwsIGNsaXApIDogW1t4MCwgeTBdLCBbeDEsIHkxXV07XG4gICAgfVxuICB9O1xufTtcblxudmFyIHN1bSA9IGFkZGVyKCk7XG5cbnZhciBwb2x5Z29uQ29udGFpbnMgPSBmdW5jdGlvbihwb2x5Z29uLCBwb2ludCkge1xuICB2YXIgbGFtYmRhID0gcG9pbnRbMF0sXG4gICAgICBwaGkgPSBwb2ludFsxXSxcbiAgICAgIG5vcm1hbCA9IFtzaW4obGFtYmRhKSwgLWNvcyhsYW1iZGEpLCAwXSxcbiAgICAgIGFuZ2xlID0gMCxcbiAgICAgIHdpbmRpbmcgPSAwO1xuXG4gIHN1bS5yZXNldCgpO1xuXG4gIGZvciAodmFyIGkgPSAwLCBuID0gcG9seWdvbi5sZW5ndGg7IGkgPCBuOyArK2kpIHtcbiAgICBpZiAoIShtID0gKHJpbmcgPSBwb2x5Z29uW2ldKS5sZW5ndGgpKSBjb250aW51ZTtcbiAgICB2YXIgcmluZyxcbiAgICAgICAgbSxcbiAgICAgICAgcG9pbnQwID0gcmluZ1ttIC0gMV0sXG4gICAgICAgIGxhbWJkYTAgPSBwb2ludDBbMF0sXG4gICAgICAgIHBoaTAgPSBwb2ludDBbMV0gLyAyICsgcXVhcnRlclBpLFxuICAgICAgICBzaW5QaGkwID0gc2luKHBoaTApLFxuICAgICAgICBjb3NQaGkwID0gY29zKHBoaTApO1xuXG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCBtOyArK2osIGxhbWJkYTAgPSBsYW1iZGExLCBzaW5QaGkwID0gc2luUGhpMSwgY29zUGhpMCA9IGNvc1BoaTEsIHBvaW50MCA9IHBvaW50MSkge1xuICAgICAgdmFyIHBvaW50MSA9IHJpbmdbal0sXG4gICAgICAgICAgbGFtYmRhMSA9IHBvaW50MVswXSxcbiAgICAgICAgICBwaGkxID0gcG9pbnQxWzFdIC8gMiArIHF1YXJ0ZXJQaSxcbiAgICAgICAgICBzaW5QaGkxID0gc2luKHBoaTEpLFxuICAgICAgICAgIGNvc1BoaTEgPSBjb3MocGhpMSksXG4gICAgICAgICAgZGVsdGEgPSBsYW1iZGExIC0gbGFtYmRhMCxcbiAgICAgICAgICBzaWduJCQxID0gZGVsdGEgPj0gMCA/IDEgOiAtMSxcbiAgICAgICAgICBhYnNEZWx0YSA9IHNpZ24kJDEgKiBkZWx0YSxcbiAgICAgICAgICBhbnRpbWVyaWRpYW4gPSBhYnNEZWx0YSA+IHBpLFxuICAgICAgICAgIGsgPSBzaW5QaGkwICogc2luUGhpMTtcblxuICAgICAgc3VtLmFkZChhdGFuMihrICogc2lnbiQkMSAqIHNpbihhYnNEZWx0YSksIGNvc1BoaTAgKiBjb3NQaGkxICsgayAqIGNvcyhhYnNEZWx0YSkpKTtcbiAgICAgIGFuZ2xlICs9IGFudGltZXJpZGlhbiA/IGRlbHRhICsgc2lnbiQkMSAqIHRhdSA6IGRlbHRhO1xuXG4gICAgICAvLyBBcmUgdGhlIGxvbmdpdHVkZXMgZWl0aGVyIHNpZGUgb2YgdGhlIHBvaW504oCZcyBtZXJpZGlhbiAobGFtYmRhKSxcbiAgICAgIC8vIGFuZCBhcmUgdGhlIGxhdGl0dWRlcyBzbWFsbGVyIHRoYW4gdGhlIHBhcmFsbGVsIChwaGkpP1xuICAgICAgaWYgKGFudGltZXJpZGlhbiBeIGxhbWJkYTAgPj0gbGFtYmRhIF4gbGFtYmRhMSA+PSBsYW1iZGEpIHtcbiAgICAgICAgdmFyIGFyYyA9IGNhcnRlc2lhbkNyb3NzKGNhcnRlc2lhbihwb2ludDApLCBjYXJ0ZXNpYW4ocG9pbnQxKSk7XG4gICAgICAgIGNhcnRlc2lhbk5vcm1hbGl6ZUluUGxhY2UoYXJjKTtcbiAgICAgICAgdmFyIGludGVyc2VjdGlvbiA9IGNhcnRlc2lhbkNyb3NzKG5vcm1hbCwgYXJjKTtcbiAgICAgICAgY2FydGVzaWFuTm9ybWFsaXplSW5QbGFjZShpbnRlcnNlY3Rpb24pO1xuICAgICAgICB2YXIgcGhpQXJjID0gKGFudGltZXJpZGlhbiBeIGRlbHRhID49IDAgPyAtMSA6IDEpICogYXNpbihpbnRlcnNlY3Rpb25bMl0pO1xuICAgICAgICBpZiAocGhpID4gcGhpQXJjIHx8IHBoaSA9PT0gcGhpQXJjICYmIChhcmNbMF0gfHwgYXJjWzFdKSkge1xuICAgICAgICAgIHdpbmRpbmcgKz0gYW50aW1lcmlkaWFuIF4gZGVsdGEgPj0gMCA/IDEgOiAtMTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIEZpcnN0LCBkZXRlcm1pbmUgd2hldGhlciB0aGUgU291dGggcG9sZSBpcyBpbnNpZGUgb3Igb3V0c2lkZTpcbiAgLy9cbiAgLy8gSXQgaXMgaW5zaWRlIGlmOlxuICAvLyAqIHRoZSBwb2x5Z29uIHdpbmRzIGFyb3VuZCBpdCBpbiBhIGNsb2Nrd2lzZSBkaXJlY3Rpb24uXG4gIC8vICogdGhlIHBvbHlnb24gZG9lcyBub3QgKGN1bXVsYXRpdmVseSkgd2luZCBhcm91bmQgaXQsIGJ1dCBoYXMgYSBuZWdhdGl2ZVxuICAvLyAgIChjb3VudGVyLWNsb2Nrd2lzZSkgYXJlYS5cbiAgLy9cbiAgLy8gU2Vjb25kLCBjb3VudCB0aGUgKHNpZ25lZCkgbnVtYmVyIG9mIHRpbWVzIGEgc2VnbWVudCBjcm9zc2VzIGEgbGFtYmRhXG4gIC8vIGZyb20gdGhlIHBvaW50IHRvIHRoZSBTb3V0aCBwb2xlLiAgSWYgaXQgaXMgemVybywgdGhlbiB0aGUgcG9pbnQgaXMgdGhlXG4gIC8vIHNhbWUgc2lkZSBhcyB0aGUgU291dGggcG9sZS5cblxuICByZXR1cm4gKGFuZ2xlIDwgLWVwc2lsb24gfHwgYW5nbGUgPCBlcHNpbG9uICYmIHN1bSA8IC1lcHNpbG9uKSBeICh3aW5kaW5nICYgMSk7XG59O1xuXG52YXIgbGVuZ3RoU3VtID0gYWRkZXIoKTtcbnZhciBsYW1iZGEwJDI7XG52YXIgc2luUGhpMCQxO1xudmFyIGNvc1BoaTAkMTtcblxudmFyIGxlbmd0aFN0cmVhbSA9IHtcbiAgc3BoZXJlOiBub29wLFxuICBwb2ludDogbm9vcCxcbiAgbGluZVN0YXJ0OiBsZW5ndGhMaW5lU3RhcnQsXG4gIGxpbmVFbmQ6IG5vb3AsXG4gIHBvbHlnb25TdGFydDogbm9vcCxcbiAgcG9seWdvbkVuZDogbm9vcFxufTtcblxuZnVuY3Rpb24gbGVuZ3RoTGluZVN0YXJ0KCkge1xuICBsZW5ndGhTdHJlYW0ucG9pbnQgPSBsZW5ndGhQb2ludEZpcnN0O1xuICBsZW5ndGhTdHJlYW0ubGluZUVuZCA9IGxlbmd0aExpbmVFbmQ7XG59XG5cbmZ1bmN0aW9uIGxlbmd0aExpbmVFbmQoKSB7XG4gIGxlbmd0aFN0cmVhbS5wb2ludCA9IGxlbmd0aFN0cmVhbS5saW5lRW5kID0gbm9vcDtcbn1cblxuZnVuY3Rpb24gbGVuZ3RoUG9pbnRGaXJzdChsYW1iZGEsIHBoaSkge1xuICBsYW1iZGEgKj0gcmFkaWFucywgcGhpICo9IHJhZGlhbnM7XG4gIGxhbWJkYTAkMiA9IGxhbWJkYSwgc2luUGhpMCQxID0gc2luKHBoaSksIGNvc1BoaTAkMSA9IGNvcyhwaGkpO1xuICBsZW5ndGhTdHJlYW0ucG9pbnQgPSBsZW5ndGhQb2ludDtcbn1cblxuZnVuY3Rpb24gbGVuZ3RoUG9pbnQobGFtYmRhLCBwaGkpIHtcbiAgbGFtYmRhICo9IHJhZGlhbnMsIHBoaSAqPSByYWRpYW5zO1xuICB2YXIgc2luUGhpID0gc2luKHBoaSksXG4gICAgICBjb3NQaGkgPSBjb3MocGhpKSxcbiAgICAgIGRlbHRhID0gYWJzKGxhbWJkYSAtIGxhbWJkYTAkMiksXG4gICAgICBjb3NEZWx0YSA9IGNvcyhkZWx0YSksXG4gICAgICBzaW5EZWx0YSA9IHNpbihkZWx0YSksXG4gICAgICB4ID0gY29zUGhpICogc2luRGVsdGEsXG4gICAgICB5ID0gY29zUGhpMCQxICogc2luUGhpIC0gc2luUGhpMCQxICogY29zUGhpICogY29zRGVsdGEsXG4gICAgICB6ID0gc2luUGhpMCQxICogc2luUGhpICsgY29zUGhpMCQxICogY29zUGhpICogY29zRGVsdGE7XG4gIGxlbmd0aFN1bS5hZGQoYXRhbjIoc3FydCh4ICogeCArIHkgKiB5KSwgeikpO1xuICBsYW1iZGEwJDIgPSBsYW1iZGEsIHNpblBoaTAkMSA9IHNpblBoaSwgY29zUGhpMCQxID0gY29zUGhpO1xufVxuXG52YXIgbGVuZ3RoID0gZnVuY3Rpb24ob2JqZWN0KSB7XG4gIGxlbmd0aFN1bS5yZXNldCgpO1xuICBnZW9TdHJlYW0ob2JqZWN0LCBsZW5ndGhTdHJlYW0pO1xuICByZXR1cm4gK2xlbmd0aFN1bTtcbn07XG5cbnZhciBjb29yZGluYXRlcyA9IFtudWxsLCBudWxsXTtcbnZhciBvYmplY3QgPSB7dHlwZTogXCJMaW5lU3RyaW5nXCIsIGNvb3JkaW5hdGVzOiBjb29yZGluYXRlc307XG5cbnZhciBkaXN0YW5jZSA9IGZ1bmN0aW9uKGEsIGIpIHtcbiAgY29vcmRpbmF0ZXNbMF0gPSBhO1xuICBjb29yZGluYXRlc1sxXSA9IGI7XG4gIHJldHVybiBsZW5ndGgob2JqZWN0KTtcbn07XG5cbnZhciBjb250YWluc09iamVjdFR5cGUgPSB7XG4gIEZlYXR1cmU6IGZ1bmN0aW9uKG9iamVjdCwgcG9pbnQpIHtcbiAgICByZXR1cm4gY29udGFpbnNHZW9tZXRyeShvYmplY3QuZ2VvbWV0cnksIHBvaW50KTtcbiAgfSxcbiAgRmVhdHVyZUNvbGxlY3Rpb246IGZ1bmN0aW9uKG9iamVjdCwgcG9pbnQpIHtcbiAgICB2YXIgZmVhdHVyZXMgPSBvYmplY3QuZmVhdHVyZXMsIGkgPSAtMSwgbiA9IGZlYXR1cmVzLmxlbmd0aDtcbiAgICB3aGlsZSAoKytpIDwgbikgaWYgKGNvbnRhaW5zR2VvbWV0cnkoZmVhdHVyZXNbaV0uZ2VvbWV0cnksIHBvaW50KSkgcmV0dXJuIHRydWU7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59O1xuXG52YXIgY29udGFpbnNHZW9tZXRyeVR5cGUgPSB7XG4gIFNwaGVyZTogZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0sXG4gIFBvaW50OiBmdW5jdGlvbihvYmplY3QsIHBvaW50KSB7XG4gICAgcmV0dXJuIGNvbnRhaW5zUG9pbnQob2JqZWN0LmNvb3JkaW5hdGVzLCBwb2ludCk7XG4gIH0sXG4gIE11bHRpUG9pbnQ6IGZ1bmN0aW9uKG9iamVjdCwgcG9pbnQpIHtcbiAgICB2YXIgY29vcmRpbmF0ZXMgPSBvYmplY3QuY29vcmRpbmF0ZXMsIGkgPSAtMSwgbiA9IGNvb3JkaW5hdGVzLmxlbmd0aDtcbiAgICB3aGlsZSAoKytpIDwgbikgaWYgKGNvbnRhaW5zUG9pbnQoY29vcmRpbmF0ZXNbaV0sIHBvaW50KSkgcmV0dXJuIHRydWU7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9LFxuICBMaW5lU3RyaW5nOiBmdW5jdGlvbihvYmplY3QsIHBvaW50KSB7XG4gICAgcmV0dXJuIGNvbnRhaW5zTGluZShvYmplY3QuY29vcmRpbmF0ZXMsIHBvaW50KTtcbiAgfSxcbiAgTXVsdGlMaW5lU3RyaW5nOiBmdW5jdGlvbihvYmplY3QsIHBvaW50KSB7XG4gICAgdmFyIGNvb3JkaW5hdGVzID0gb2JqZWN0LmNvb3JkaW5hdGVzLCBpID0gLTEsIG4gPSBjb29yZGluYXRlcy5sZW5ndGg7XG4gICAgd2hpbGUgKCsraSA8IG4pIGlmIChjb250YWluc0xpbmUoY29vcmRpbmF0ZXNbaV0sIHBvaW50KSkgcmV0dXJuIHRydWU7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9LFxuICBQb2x5Z29uOiBmdW5jdGlvbihvYmplY3QsIHBvaW50KSB7XG4gICAgcmV0dXJuIGNvbnRhaW5zUG9seWdvbihvYmplY3QuY29vcmRpbmF0ZXMsIHBvaW50KTtcbiAgfSxcbiAgTXVsdGlQb2x5Z29uOiBmdW5jdGlvbihvYmplY3QsIHBvaW50KSB7XG4gICAgdmFyIGNvb3JkaW5hdGVzID0gb2JqZWN0LmNvb3JkaW5hdGVzLCBpID0gLTEsIG4gPSBjb29yZGluYXRlcy5sZW5ndGg7XG4gICAgd2hpbGUgKCsraSA8IG4pIGlmIChjb250YWluc1BvbHlnb24oY29vcmRpbmF0ZXNbaV0sIHBvaW50KSkgcmV0dXJuIHRydWU7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9LFxuICBHZW9tZXRyeUNvbGxlY3Rpb246IGZ1bmN0aW9uKG9iamVjdCwgcG9pbnQpIHtcbiAgICB2YXIgZ2VvbWV0cmllcyA9IG9iamVjdC5nZW9tZXRyaWVzLCBpID0gLTEsIG4gPSBnZW9tZXRyaWVzLmxlbmd0aDtcbiAgICB3aGlsZSAoKytpIDwgbikgaWYgKGNvbnRhaW5zR2VvbWV0cnkoZ2VvbWV0cmllc1tpXSwgcG9pbnQpKSByZXR1cm4gdHJ1ZTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn07XG5cbmZ1bmN0aW9uIGNvbnRhaW5zR2VvbWV0cnkoZ2VvbWV0cnksIHBvaW50KSB7XG4gIHJldHVybiBnZW9tZXRyeSAmJiBjb250YWluc0dlb21ldHJ5VHlwZS5oYXNPd25Qcm9wZXJ0eShnZW9tZXRyeS50eXBlKVxuICAgICAgPyBjb250YWluc0dlb21ldHJ5VHlwZVtnZW9tZXRyeS50eXBlXShnZW9tZXRyeSwgcG9pbnQpXG4gICAgICA6IGZhbHNlO1xufVxuXG5mdW5jdGlvbiBjb250YWluc1BvaW50KGNvb3JkaW5hdGVzLCBwb2ludCkge1xuICByZXR1cm4gZGlzdGFuY2UoY29vcmRpbmF0ZXMsIHBvaW50KSA9PT0gMDtcbn1cblxuZnVuY3Rpb24gY29udGFpbnNMaW5lKGNvb3JkaW5hdGVzLCBwb2ludCkge1xuICB2YXIgYWIgPSBkaXN0YW5jZShjb29yZGluYXRlc1swXSwgY29vcmRpbmF0ZXNbMV0pLFxuICAgICAgYW8gPSBkaXN0YW5jZShjb29yZGluYXRlc1swXSwgcG9pbnQpLFxuICAgICAgb2IgPSBkaXN0YW5jZShwb2ludCwgY29vcmRpbmF0ZXNbMV0pO1xuICByZXR1cm4gYW8gKyBvYiA8PSBhYiArIGVwc2lsb247XG59XG5cbmZ1bmN0aW9uIGNvbnRhaW5zUG9seWdvbihjb29yZGluYXRlcywgcG9pbnQpIHtcbiAgcmV0dXJuICEhcG9seWdvbkNvbnRhaW5zKGNvb3JkaW5hdGVzLm1hcChyaW5nUmFkaWFucyksIHBvaW50UmFkaWFucyhwb2ludCkpO1xufVxuXG5mdW5jdGlvbiByaW5nUmFkaWFucyhyaW5nKSB7XG4gIHJldHVybiByaW5nID0gcmluZy5tYXAocG9pbnRSYWRpYW5zKSwgcmluZy5wb3AoKSwgcmluZztcbn1cblxuZnVuY3Rpb24gcG9pbnRSYWRpYW5zKHBvaW50KSB7XG4gIHJldHVybiBbcG9pbnRbMF0gKiByYWRpYW5zLCBwb2ludFsxXSAqIHJhZGlhbnNdO1xufVxuXG52YXIgY29udGFpbnMgPSBmdW5jdGlvbihvYmplY3QsIHBvaW50KSB7XG4gIHJldHVybiAob2JqZWN0ICYmIGNvbnRhaW5zT2JqZWN0VHlwZS5oYXNPd25Qcm9wZXJ0eShvYmplY3QudHlwZSlcbiAgICAgID8gY29udGFpbnNPYmplY3RUeXBlW29iamVjdC50eXBlXVxuICAgICAgOiBjb250YWluc0dlb21ldHJ5KShvYmplY3QsIHBvaW50KTtcbn07XG5cbmZ1bmN0aW9uIGdyYXRpY3VsZVgoeTAsIHkxLCBkeSkge1xuICB2YXIgeSA9IGQzQXJyYXkucmFuZ2UoeTAsIHkxIC0gZXBzaWxvbiwgZHkpLmNvbmNhdCh5MSk7XG4gIHJldHVybiBmdW5jdGlvbih4KSB7IHJldHVybiB5Lm1hcChmdW5jdGlvbih5KSB7IHJldHVybiBbeCwgeV07IH0pOyB9O1xufVxuXG5mdW5jdGlvbiBncmF0aWN1bGVZKHgwLCB4MSwgZHgpIHtcbiAgdmFyIHggPSBkM0FycmF5LnJhbmdlKHgwLCB4MSAtIGVwc2lsb24sIGR4KS5jb25jYXQoeDEpO1xuICByZXR1cm4gZnVuY3Rpb24oeSkgeyByZXR1cm4geC5tYXAoZnVuY3Rpb24oeCkgeyByZXR1cm4gW3gsIHldOyB9KTsgfTtcbn1cblxuZnVuY3Rpb24gZ3JhdGljdWxlKCkge1xuICB2YXIgeDEsIHgwLCBYMSwgWDAsXG4gICAgICB5MSwgeTAsIFkxLCBZMCxcbiAgICAgIGR4ID0gMTAsIGR5ID0gZHgsIERYID0gOTAsIERZID0gMzYwLFxuICAgICAgeCwgeSwgWCwgWSxcbiAgICAgIHByZWNpc2lvbiA9IDIuNTtcblxuICBmdW5jdGlvbiBncmF0aWN1bGUoKSB7XG4gICAgcmV0dXJuIHt0eXBlOiBcIk11bHRpTGluZVN0cmluZ1wiLCBjb29yZGluYXRlczogbGluZXMoKX07XG4gIH1cblxuICBmdW5jdGlvbiBsaW5lcygpIHtcbiAgICByZXR1cm4gZDNBcnJheS5yYW5nZShjZWlsKFgwIC8gRFgpICogRFgsIFgxLCBEWCkubWFwKFgpXG4gICAgICAgIC5jb25jYXQoZDNBcnJheS5yYW5nZShjZWlsKFkwIC8gRFkpICogRFksIFkxLCBEWSkubWFwKFkpKVxuICAgICAgICAuY29uY2F0KGQzQXJyYXkucmFuZ2UoY2VpbCh4MCAvIGR4KSAqIGR4LCB4MSwgZHgpLmZpbHRlcihmdW5jdGlvbih4KSB7IHJldHVybiBhYnMoeCAlIERYKSA+IGVwc2lsb247IH0pLm1hcCh4KSlcbiAgICAgICAgLmNvbmNhdChkM0FycmF5LnJhbmdlKGNlaWwoeTAgLyBkeSkgKiBkeSwgeTEsIGR5KS5maWx0ZXIoZnVuY3Rpb24oeSkgeyByZXR1cm4gYWJzKHkgJSBEWSkgPiBlcHNpbG9uOyB9KS5tYXAoeSkpO1xuICB9XG5cbiAgZ3JhdGljdWxlLmxpbmVzID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIGxpbmVzKCkubWFwKGZ1bmN0aW9uKGNvb3JkaW5hdGVzKSB7IHJldHVybiB7dHlwZTogXCJMaW5lU3RyaW5nXCIsIGNvb3JkaW5hdGVzOiBjb29yZGluYXRlc307IH0pO1xuICB9O1xuXG4gIGdyYXRpY3VsZS5vdXRsaW5lID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFwiUG9seWdvblwiLFxuICAgICAgY29vcmRpbmF0ZXM6IFtcbiAgICAgICAgWChYMCkuY29uY2F0KFxuICAgICAgICBZKFkxKS5zbGljZSgxKSxcbiAgICAgICAgWChYMSkucmV2ZXJzZSgpLnNsaWNlKDEpLFxuICAgICAgICBZKFkwKS5yZXZlcnNlKCkuc2xpY2UoMSkpXG4gICAgICBdXG4gICAgfTtcbiAgfTtcblxuICBncmF0aWN1bGUuZXh0ZW50ID0gZnVuY3Rpb24oXykge1xuICAgIGlmICghYXJndW1lbnRzLmxlbmd0aCkgcmV0dXJuIGdyYXRpY3VsZS5leHRlbnRNaW5vcigpO1xuICAgIHJldHVybiBncmF0aWN1bGUuZXh0ZW50TWFqb3IoXykuZXh0ZW50TWlub3IoXyk7XG4gIH07XG5cbiAgZ3JhdGljdWxlLmV4dGVudE1ham9yID0gZnVuY3Rpb24oXykge1xuICAgIGlmICghYXJndW1lbnRzLmxlbmd0aCkgcmV0dXJuIFtbWDAsIFkwXSwgW1gxLCBZMV1dO1xuICAgIFgwID0gK19bMF1bMF0sIFgxID0gK19bMV1bMF07XG4gICAgWTAgPSArX1swXVsxXSwgWTEgPSArX1sxXVsxXTtcbiAgICBpZiAoWDAgPiBYMSkgXyA9IFgwLCBYMCA9IFgxLCBYMSA9IF87XG4gICAgaWYgKFkwID4gWTEpIF8gPSBZMCwgWTAgPSBZMSwgWTEgPSBfO1xuICAgIHJldHVybiBncmF0aWN1bGUucHJlY2lzaW9uKHByZWNpc2lvbik7XG4gIH07XG5cbiAgZ3JhdGljdWxlLmV4dGVudE1pbm9yID0gZnVuY3Rpb24oXykge1xuICAgIGlmICghYXJndW1lbnRzLmxlbmd0aCkgcmV0dXJuIFtbeDAsIHkwXSwgW3gxLCB5MV1dO1xuICAgIHgwID0gK19bMF1bMF0sIHgxID0gK19bMV1bMF07XG4gICAgeTAgPSArX1swXVsxXSwgeTEgPSArX1sxXVsxXTtcbiAgICBpZiAoeDAgPiB4MSkgXyA9IHgwLCB4MCA9IHgxLCB4MSA9IF87XG4gICAgaWYgKHkwID4geTEpIF8gPSB5MCwgeTAgPSB5MSwgeTEgPSBfO1xuICAgIHJldHVybiBncmF0aWN1bGUucHJlY2lzaW9uKHByZWNpc2lvbik7XG4gIH07XG5cbiAgZ3JhdGljdWxlLnN0ZXAgPSBmdW5jdGlvbihfKSB7XG4gICAgaWYgKCFhcmd1bWVudHMubGVuZ3RoKSByZXR1cm4gZ3JhdGljdWxlLnN0ZXBNaW5vcigpO1xuICAgIHJldHVybiBncmF0aWN1bGUuc3RlcE1ham9yKF8pLnN0ZXBNaW5vcihfKTtcbiAgfTtcblxuICBncmF0aWN1bGUuc3RlcE1ham9yID0gZnVuY3Rpb24oXykge1xuICAgIGlmICghYXJndW1lbnRzLmxlbmd0aCkgcmV0dXJuIFtEWCwgRFldO1xuICAgIERYID0gK19bMF0sIERZID0gK19bMV07XG4gICAgcmV0dXJuIGdyYXRpY3VsZTtcbiAgfTtcblxuICBncmF0aWN1bGUuc3RlcE1pbm9yID0gZnVuY3Rpb24oXykge1xuICAgIGlmICghYXJndW1lbnRzLmxlbmd0aCkgcmV0dXJuIFtkeCwgZHldO1xuICAgIGR4ID0gK19bMF0sIGR5ID0gK19bMV07XG4gICAgcmV0dXJuIGdyYXRpY3VsZTtcbiAgfTtcblxuICBncmF0aWN1bGUucHJlY2lzaW9uID0gZnVuY3Rpb24oXykge1xuICAgIGlmICghYXJndW1lbnRzLmxlbmd0aCkgcmV0dXJuIHByZWNpc2lvbjtcbiAgICBwcmVjaXNpb24gPSArXztcbiAgICB4ID0gZ3JhdGljdWxlWCh5MCwgeTEsIDkwKTtcbiAgICB5ID0gZ3JhdGljdWxlWSh4MCwgeDEsIHByZWNpc2lvbik7XG4gICAgWCA9IGdyYXRpY3VsZVgoWTAsIFkxLCA5MCk7XG4gICAgWSA9IGdyYXRpY3VsZVkoWDAsIFgxLCBwcmVjaXNpb24pO1xuICAgIHJldHVybiBncmF0aWN1bGU7XG4gIH07XG5cbiAgcmV0dXJuIGdyYXRpY3VsZVxuICAgICAgLmV4dGVudE1ham9yKFtbLTE4MCwgLTkwICsgZXBzaWxvbl0sIFsxODAsIDkwIC0gZXBzaWxvbl1dKVxuICAgICAgLmV4dGVudE1pbm9yKFtbLTE4MCwgLTgwIC0gZXBzaWxvbl0sIFsxODAsIDgwICsgZXBzaWxvbl1dKTtcbn1cblxuZnVuY3Rpb24gZ3JhdGljdWxlMTAoKSB7XG4gIHJldHVybiBncmF0aWN1bGUoKSgpO1xufVxuXG52YXIgaW50ZXJwb2xhdGUgPSBmdW5jdGlvbihhLCBiKSB7XG4gIHZhciB4MCA9IGFbMF0gKiByYWRpYW5zLFxuICAgICAgeTAgPSBhWzFdICogcmFkaWFucyxcbiAgICAgIHgxID0gYlswXSAqIHJhZGlhbnMsXG4gICAgICB5MSA9IGJbMV0gKiByYWRpYW5zLFxuICAgICAgY3kwID0gY29zKHkwKSxcbiAgICAgIHN5MCA9IHNpbih5MCksXG4gICAgICBjeTEgPSBjb3MoeTEpLFxuICAgICAgc3kxID0gc2luKHkxKSxcbiAgICAgIGt4MCA9IGN5MCAqIGNvcyh4MCksXG4gICAgICBreTAgPSBjeTAgKiBzaW4oeDApLFxuICAgICAga3gxID0gY3kxICogY29zKHgxKSxcbiAgICAgIGt5MSA9IGN5MSAqIHNpbih4MSksXG4gICAgICBkID0gMiAqIGFzaW4oc3FydChoYXZlcnNpbih5MSAtIHkwKSArIGN5MCAqIGN5MSAqIGhhdmVyc2luKHgxIC0geDApKSksXG4gICAgICBrID0gc2luKGQpO1xuXG4gIHZhciBpbnRlcnBvbGF0ZSA9IGQgPyBmdW5jdGlvbih0KSB7XG4gICAgdmFyIEIgPSBzaW4odCAqPSBkKSAvIGssXG4gICAgICAgIEEgPSBzaW4oZCAtIHQpIC8gayxcbiAgICAgICAgeCA9IEEgKiBreDAgKyBCICoga3gxLFxuICAgICAgICB5ID0gQSAqIGt5MCArIEIgKiBreTEsXG4gICAgICAgIHogPSBBICogc3kwICsgQiAqIHN5MTtcbiAgICByZXR1cm4gW1xuICAgICAgYXRhbjIoeSwgeCkgKiBkZWdyZWVzLFxuICAgICAgYXRhbjIoeiwgc3FydCh4ICogeCArIHkgKiB5KSkgKiBkZWdyZWVzXG4gICAgXTtcbiAgfSA6IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBbeDAgKiBkZWdyZWVzLCB5MCAqIGRlZ3JlZXNdO1xuICB9O1xuXG4gIGludGVycG9sYXRlLmRpc3RhbmNlID0gZDtcblxuICByZXR1cm4gaW50ZXJwb2xhdGU7XG59O1xuXG52YXIgaWRlbnRpdHkgPSBmdW5jdGlvbih4KSB7XG4gIHJldHVybiB4O1xufTtcblxudmFyIGFyZWFTdW0kMSA9IGFkZGVyKCk7XG52YXIgYXJlYVJpbmdTdW0kMSA9IGFkZGVyKCk7XG52YXIgeDAwO1xudmFyIHkwMDtcbnZhciB4MCQxO1xudmFyIHkwJDE7XG5cbnZhciBhcmVhU3RyZWFtJDEgPSB7XG4gIHBvaW50OiBub29wLFxuICBsaW5lU3RhcnQ6IG5vb3AsXG4gIGxpbmVFbmQ6IG5vb3AsXG4gIHBvbHlnb25TdGFydDogZnVuY3Rpb24oKSB7XG4gICAgYXJlYVN0cmVhbSQxLmxpbmVTdGFydCA9IGFyZWFSaW5nU3RhcnQkMTtcbiAgICBhcmVhU3RyZWFtJDEubGluZUVuZCA9IGFyZWFSaW5nRW5kJDE7XG4gIH0sXG4gIHBvbHlnb25FbmQ6IGZ1bmN0aW9uKCkge1xuICAgIGFyZWFTdHJlYW0kMS5saW5lU3RhcnQgPSBhcmVhU3RyZWFtJDEubGluZUVuZCA9IGFyZWFTdHJlYW0kMS5wb2ludCA9IG5vb3A7XG4gICAgYXJlYVN1bSQxLmFkZChhYnMoYXJlYVJpbmdTdW0kMSkpO1xuICAgIGFyZWFSaW5nU3VtJDEucmVzZXQoKTtcbiAgfSxcbiAgcmVzdWx0OiBmdW5jdGlvbigpIHtcbiAgICB2YXIgYXJlYSA9IGFyZWFTdW0kMSAvIDI7XG4gICAgYXJlYVN1bSQxLnJlc2V0KCk7XG4gICAgcmV0dXJuIGFyZWE7XG4gIH1cbn07XG5cbmZ1bmN0aW9uIGFyZWFSaW5nU3RhcnQkMSgpIHtcbiAgYXJlYVN0cmVhbSQxLnBvaW50ID0gYXJlYVBvaW50Rmlyc3QkMTtcbn1cblxuZnVuY3Rpb24gYXJlYVBvaW50Rmlyc3QkMSh4LCB5KSB7XG4gIGFyZWFTdHJlYW0kMS5wb2ludCA9IGFyZWFQb2ludCQxO1xuICB4MDAgPSB4MCQxID0geCwgeTAwID0geTAkMSA9IHk7XG59XG5cbmZ1bmN0aW9uIGFyZWFQb2ludCQxKHgsIHkpIHtcbiAgYXJlYVJpbmdTdW0kMS5hZGQoeTAkMSAqIHggLSB4MCQxICogeSk7XG4gIHgwJDEgPSB4LCB5MCQxID0geTtcbn1cblxuZnVuY3Rpb24gYXJlYVJpbmdFbmQkMSgpIHtcbiAgYXJlYVBvaW50JDEoeDAwLCB5MDApO1xufVxuXG52YXIgeDAkMiA9IEluZmluaXR5O1xudmFyIHkwJDIgPSB4MCQyO1xudmFyIHgxID0gLXgwJDI7XG52YXIgeTEgPSB4MTtcblxudmFyIGJvdW5kc1N0cmVhbSQxID0ge1xuICBwb2ludDogYm91bmRzUG9pbnQkMSxcbiAgbGluZVN0YXJ0OiBub29wLFxuICBsaW5lRW5kOiBub29wLFxuICBwb2x5Z29uU3RhcnQ6IG5vb3AsXG4gIHBvbHlnb25FbmQ6IG5vb3AsXG4gIHJlc3VsdDogZnVuY3Rpb24oKSB7XG4gICAgdmFyIGJvdW5kcyA9IFtbeDAkMiwgeTAkMl0sIFt4MSwgeTFdXTtcbiAgICB4MSA9IHkxID0gLSh5MCQyID0geDAkMiA9IEluZmluaXR5KTtcbiAgICByZXR1cm4gYm91bmRzO1xuICB9XG59O1xuXG5mdW5jdGlvbiBib3VuZHNQb2ludCQxKHgsIHkpIHtcbiAgaWYgKHggPCB4MCQyKSB4MCQyID0geDtcbiAgaWYgKHggPiB4MSkgeDEgPSB4O1xuICBpZiAoeSA8IHkwJDIpIHkwJDIgPSB5O1xuICBpZiAoeSA+IHkxKSB5MSA9IHk7XG59XG5cbi8vIFRPRE8gRW5mb3JjZSBwb3NpdGl2ZSBhcmVhIGZvciBleHRlcmlvciwgbmVnYXRpdmUgYXJlYSBmb3IgaW50ZXJpb3I/XG5cbnZhciBYMCQxID0gMDtcbnZhciBZMCQxID0gMDtcbnZhciBaMCQxID0gMDtcbnZhciBYMSQxID0gMDtcbnZhciBZMSQxID0gMDtcbnZhciBaMSQxID0gMDtcbnZhciBYMiQxID0gMDtcbnZhciBZMiQxID0gMDtcbnZhciBaMiQxID0gMDtcbnZhciB4MDAkMTtcbnZhciB5MDAkMTtcbnZhciB4MCQzO1xudmFyIHkwJDM7XG5cbnZhciBjZW50cm9pZFN0cmVhbSQxID0ge1xuICBwb2ludDogY2VudHJvaWRQb2ludCQxLFxuICBsaW5lU3RhcnQ6IGNlbnRyb2lkTGluZVN0YXJ0JDEsXG4gIGxpbmVFbmQ6IGNlbnRyb2lkTGluZUVuZCQxLFxuICBwb2x5Z29uU3RhcnQ6IGZ1bmN0aW9uKCkge1xuICAgIGNlbnRyb2lkU3RyZWFtJDEubGluZVN0YXJ0ID0gY2VudHJvaWRSaW5nU3RhcnQkMTtcbiAgICBjZW50cm9pZFN0cmVhbSQxLmxpbmVFbmQgPSBjZW50cm9pZFJpbmdFbmQkMTtcbiAgfSxcbiAgcG9seWdvbkVuZDogZnVuY3Rpb24oKSB7XG4gICAgY2VudHJvaWRTdHJlYW0kMS5wb2ludCA9IGNlbnRyb2lkUG9pbnQkMTtcbiAgICBjZW50cm9pZFN0cmVhbSQxLmxpbmVTdGFydCA9IGNlbnRyb2lkTGluZVN0YXJ0JDE7XG4gICAgY2VudHJvaWRTdHJlYW0kMS5saW5lRW5kID0gY2VudHJvaWRMaW5lRW5kJDE7XG4gIH0sXG4gIHJlc3VsdDogZnVuY3Rpb24oKSB7XG4gICAgdmFyIGNlbnRyb2lkID0gWjIkMSA/IFtYMiQxIC8gWjIkMSwgWTIkMSAvIFoyJDFdXG4gICAgICAgIDogWjEkMSA/IFtYMSQxIC8gWjEkMSwgWTEkMSAvIFoxJDFdXG4gICAgICAgIDogWjAkMSA/IFtYMCQxIC8gWjAkMSwgWTAkMSAvIFowJDFdXG4gICAgICAgIDogW05hTiwgTmFOXTtcbiAgICBYMCQxID0gWTAkMSA9IFowJDEgPVxuICAgIFgxJDEgPSBZMSQxID0gWjEkMSA9XG4gICAgWDIkMSA9IFkyJDEgPSBaMiQxID0gMDtcbiAgICByZXR1cm4gY2VudHJvaWQ7XG4gIH1cbn07XG5cbmZ1bmN0aW9uIGNlbnRyb2lkUG9pbnQkMSh4LCB5KSB7XG4gIFgwJDEgKz0geDtcbiAgWTAkMSArPSB5O1xuICArK1owJDE7XG59XG5cbmZ1bmN0aW9uIGNlbnRyb2lkTGluZVN0YXJ0JDEoKSB7XG4gIGNlbnRyb2lkU3RyZWFtJDEucG9pbnQgPSBjZW50cm9pZFBvaW50Rmlyc3RMaW5lO1xufVxuXG5mdW5jdGlvbiBjZW50cm9pZFBvaW50Rmlyc3RMaW5lKHgsIHkpIHtcbiAgY2VudHJvaWRTdHJlYW0kMS5wb2ludCA9IGNlbnRyb2lkUG9pbnRMaW5lO1xuICBjZW50cm9pZFBvaW50JDEoeDAkMyA9IHgsIHkwJDMgPSB5KTtcbn1cblxuZnVuY3Rpb24gY2VudHJvaWRQb2ludExpbmUoeCwgeSkge1xuICB2YXIgZHggPSB4IC0geDAkMywgZHkgPSB5IC0geTAkMywgeiA9IHNxcnQoZHggKiBkeCArIGR5ICogZHkpO1xuICBYMSQxICs9IHogKiAoeDAkMyArIHgpIC8gMjtcbiAgWTEkMSArPSB6ICogKHkwJDMgKyB5KSAvIDI7XG4gIFoxJDEgKz0gejtcbiAgY2VudHJvaWRQb2ludCQxKHgwJDMgPSB4LCB5MCQzID0geSk7XG59XG5cbmZ1bmN0aW9uIGNlbnRyb2lkTGluZUVuZCQxKCkge1xuICBjZW50cm9pZFN0cmVhbSQxLnBvaW50ID0gY2VudHJvaWRQb2ludCQxO1xufVxuXG5mdW5jdGlvbiBjZW50cm9pZFJpbmdTdGFydCQxKCkge1xuICBjZW50cm9pZFN0cmVhbSQxLnBvaW50ID0gY2VudHJvaWRQb2ludEZpcnN0UmluZztcbn1cblxuZnVuY3Rpb24gY2VudHJvaWRSaW5nRW5kJDEoKSB7XG4gIGNlbnRyb2lkUG9pbnRSaW5nKHgwMCQxLCB5MDAkMSk7XG59XG5cbmZ1bmN0aW9uIGNlbnRyb2lkUG9pbnRGaXJzdFJpbmcoeCwgeSkge1xuICBjZW50cm9pZFN0cmVhbSQxLnBvaW50ID0gY2VudHJvaWRQb2ludFJpbmc7XG4gIGNlbnRyb2lkUG9pbnQkMSh4MDAkMSA9IHgwJDMgPSB4LCB5MDAkMSA9IHkwJDMgPSB5KTtcbn1cblxuZnVuY3Rpb24gY2VudHJvaWRQb2ludFJpbmcoeCwgeSkge1xuICB2YXIgZHggPSB4IC0geDAkMyxcbiAgICAgIGR5ID0geSAtIHkwJDMsXG4gICAgICB6ID0gc3FydChkeCAqIGR4ICsgZHkgKiBkeSk7XG5cbiAgWDEkMSArPSB6ICogKHgwJDMgKyB4KSAvIDI7XG4gIFkxJDEgKz0geiAqICh5MCQzICsgeSkgLyAyO1xuICBaMSQxICs9IHo7XG5cbiAgeiA9IHkwJDMgKiB4IC0geDAkMyAqIHk7XG4gIFgyJDEgKz0geiAqICh4MCQzICsgeCk7XG4gIFkyJDEgKz0geiAqICh5MCQzICsgeSk7XG4gIFoyJDEgKz0geiAqIDM7XG4gIGNlbnRyb2lkUG9pbnQkMSh4MCQzID0geCwgeTAkMyA9IHkpO1xufVxuXG5mdW5jdGlvbiBQYXRoQ29udGV4dChjb250ZXh0KSB7XG4gIHRoaXMuX2NvbnRleHQgPSBjb250ZXh0O1xufVxuXG5QYXRoQ29udGV4dC5wcm90b3R5cGUgPSB7XG4gIF9yYWRpdXM6IDQuNSxcbiAgcG9pbnRSYWRpdXM6IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gdGhpcy5fcmFkaXVzID0gXywgdGhpcztcbiAgfSxcbiAgcG9seWdvblN0YXJ0OiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLl9saW5lID0gMDtcbiAgfSxcbiAgcG9seWdvbkVuZDogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5fbGluZSA9IE5hTjtcbiAgfSxcbiAgbGluZVN0YXJ0OiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLl9wb2ludCA9IDA7XG4gIH0sXG4gIGxpbmVFbmQ6IGZ1bmN0aW9uKCkge1xuICAgIGlmICh0aGlzLl9saW5lID09PSAwKSB0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpO1xuICAgIHRoaXMuX3BvaW50ID0gTmFOO1xuICB9LFxuICBwb2ludDogZnVuY3Rpb24oeCwgeSkge1xuICAgIHN3aXRjaCAodGhpcy5fcG9pbnQpIHtcbiAgICAgIGNhc2UgMDoge1xuICAgICAgICB0aGlzLl9jb250ZXh0Lm1vdmVUbyh4LCB5KTtcbiAgICAgICAgdGhpcy5fcG9pbnQgPSAxO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgMToge1xuICAgICAgICB0aGlzLl9jb250ZXh0LmxpbmVUbyh4LCB5KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIHRoaXMuX2NvbnRleHQubW92ZVRvKHggKyB0aGlzLl9yYWRpdXMsIHkpO1xuICAgICAgICB0aGlzLl9jb250ZXh0LmFyYyh4LCB5LCB0aGlzLl9yYWRpdXMsIDAsIHRhdSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgcmVzdWx0OiBub29wXG59O1xuXG52YXIgbGVuZ3RoU3VtJDEgPSBhZGRlcigpO1xudmFyIGxlbmd0aFJpbmc7XG52YXIgeDAwJDI7XG52YXIgeTAwJDI7XG52YXIgeDAkNDtcbnZhciB5MCQ0O1xuXG52YXIgbGVuZ3RoU3RyZWFtJDEgPSB7XG4gIHBvaW50OiBub29wLFxuICBsaW5lU3RhcnQ6IGZ1bmN0aW9uKCkge1xuICAgIGxlbmd0aFN0cmVhbSQxLnBvaW50ID0gbGVuZ3RoUG9pbnRGaXJzdCQxO1xuICB9LFxuICBsaW5lRW5kOiBmdW5jdGlvbigpIHtcbiAgICBpZiAobGVuZ3RoUmluZykgbGVuZ3RoUG9pbnQkMSh4MDAkMiwgeTAwJDIpO1xuICAgIGxlbmd0aFN0cmVhbSQxLnBvaW50ID0gbm9vcDtcbiAgfSxcbiAgcG9seWdvblN0YXJ0OiBmdW5jdGlvbigpIHtcbiAgICBsZW5ndGhSaW5nID0gdHJ1ZTtcbiAgfSxcbiAgcG9seWdvbkVuZDogZnVuY3Rpb24oKSB7XG4gICAgbGVuZ3RoUmluZyA9IG51bGw7XG4gIH0sXG4gIHJlc3VsdDogZnVuY3Rpb24oKSB7XG4gICAgdmFyIGxlbmd0aCA9ICtsZW5ndGhTdW0kMTtcbiAgICBsZW5ndGhTdW0kMS5yZXNldCgpO1xuICAgIHJldHVybiBsZW5ndGg7XG4gIH1cbn07XG5cbmZ1bmN0aW9uIGxlbmd0aFBvaW50Rmlyc3QkMSh4LCB5KSB7XG4gIGxlbmd0aFN0cmVhbSQxLnBvaW50ID0gbGVuZ3RoUG9pbnQkMTtcbiAgeDAwJDIgPSB4MCQ0ID0geCwgeTAwJDIgPSB5MCQ0ID0geTtcbn1cblxuZnVuY3Rpb24gbGVuZ3RoUG9pbnQkMSh4LCB5KSB7XG4gIHgwJDQgLT0geCwgeTAkNCAtPSB5O1xuICBsZW5ndGhTdW0kMS5hZGQoc3FydCh4MCQ0ICogeDAkNCArIHkwJDQgKiB5MCQ0KSk7XG4gIHgwJDQgPSB4LCB5MCQ0ID0geTtcbn1cblxuZnVuY3Rpb24gUGF0aFN0cmluZygpIHtcbiAgdGhpcy5fc3RyaW5nID0gW107XG59XG5cblBhdGhTdHJpbmcucHJvdG90eXBlID0ge1xuICBfY2lyY2xlOiBjaXJjbGUkMSg0LjUpLFxuICBwb2ludFJhZGl1czogZnVuY3Rpb24oXykge1xuICAgIHJldHVybiB0aGlzLl9jaXJjbGUgPSBjaXJjbGUkMShfKSwgdGhpcztcbiAgfSxcbiAgcG9seWdvblN0YXJ0OiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLl9saW5lID0gMDtcbiAgfSxcbiAgcG9seWdvbkVuZDogZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5fbGluZSA9IE5hTjtcbiAgfSxcbiAgbGluZVN0YXJ0OiBmdW5jdGlvbigpIHtcbiAgICB0aGlzLl9wb2ludCA9IDA7XG4gIH0sXG4gIGxpbmVFbmQ6IGZ1bmN0aW9uKCkge1xuICAgIGlmICh0aGlzLl9saW5lID09PSAwKSB0aGlzLl9zdHJpbmcucHVzaChcIlpcIik7XG4gICAgdGhpcy5fcG9pbnQgPSBOYU47XG4gIH0sXG4gIHBvaW50OiBmdW5jdGlvbih4LCB5KSB7XG4gICAgc3dpdGNoICh0aGlzLl9wb2ludCkge1xuICAgICAgY2FzZSAwOiB7XG4gICAgICAgIHRoaXMuX3N0cmluZy5wdXNoKFwiTVwiLCB4LCBcIixcIiwgeSk7XG4gICAgICAgIHRoaXMuX3BvaW50ID0gMTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIDE6IHtcbiAgICAgICAgdGhpcy5fc3RyaW5nLnB1c2goXCJMXCIsIHgsIFwiLFwiLCB5KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIHRoaXMuX3N0cmluZy5wdXNoKFwiTVwiLCB4LCBcIixcIiwgeSwgdGhpcy5fY2lyY2xlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICByZXN1bHQ6IGZ1bmN0aW9uKCkge1xuICAgIGlmICh0aGlzLl9zdHJpbmcubGVuZ3RoKSB7XG4gICAgICB2YXIgcmVzdWx0ID0gdGhpcy5fc3RyaW5nLmpvaW4oXCJcIik7XG4gICAgICB0aGlzLl9zdHJpbmcgPSBbXTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICB9XG59O1xuXG5mdW5jdGlvbiBjaXJjbGUkMShyYWRpdXMpIHtcbiAgcmV0dXJuIFwibTAsXCIgKyByYWRpdXNcbiAgICAgICsgXCJhXCIgKyByYWRpdXMgKyBcIixcIiArIHJhZGl1cyArIFwiIDAgMSwxIDAsXCIgKyAtMiAqIHJhZGl1c1xuICAgICAgKyBcImFcIiArIHJhZGl1cyArIFwiLFwiICsgcmFkaXVzICsgXCIgMCAxLDEgMCxcIiArIDIgKiByYWRpdXNcbiAgICAgICsgXCJ6XCI7XG59XG5cbnZhciBpbmRleCA9IGZ1bmN0aW9uKHByb2plY3Rpb24sIGNvbnRleHQpIHtcbiAgdmFyIHBvaW50UmFkaXVzID0gNC41LFxuICAgICAgcHJvamVjdGlvblN0cmVhbSxcbiAgICAgIGNvbnRleHRTdHJlYW07XG5cbiAgZnVuY3Rpb24gcGF0aChvYmplY3QpIHtcbiAgICBpZiAob2JqZWN0KSB7XG4gICAgICBpZiAodHlwZW9mIHBvaW50UmFkaXVzID09PSBcImZ1bmN0aW9uXCIpIGNvbnRleHRTdHJlYW0ucG9pbnRSYWRpdXMoK3BvaW50UmFkaXVzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cykpO1xuICAgICAgZ2VvU3RyZWFtKG9iamVjdCwgcHJvamVjdGlvblN0cmVhbShjb250ZXh0U3RyZWFtKSk7XG4gICAgfVxuICAgIHJldHVybiBjb250ZXh0U3RyZWFtLnJlc3VsdCgpO1xuICB9XG5cbiAgcGF0aC5hcmVhID0gZnVuY3Rpb24ob2JqZWN0KSB7XG4gICAgZ2VvU3RyZWFtKG9iamVjdCwgcHJvamVjdGlvblN0cmVhbShhcmVhU3RyZWFtJDEpKTtcbiAgICByZXR1cm4gYXJlYVN0cmVhbSQxLnJlc3VsdCgpO1xuICB9O1xuXG4gIHBhdGgubWVhc3VyZSA9IGZ1bmN0aW9uKG9iamVjdCkge1xuICAgIGdlb1N0cmVhbShvYmplY3QsIHByb2plY3Rpb25TdHJlYW0obGVuZ3RoU3RyZWFtJDEpKTtcbiAgICByZXR1cm4gbGVuZ3RoU3RyZWFtJDEucmVzdWx0KCk7XG4gIH07XG5cbiAgcGF0aC5ib3VuZHMgPSBmdW5jdGlvbihvYmplY3QpIHtcbiAgICBnZW9TdHJlYW0ob2JqZWN0LCBwcm9qZWN0aW9uU3RyZWFtKGJvdW5kc1N0cmVhbSQxKSk7XG4gICAgcmV0dXJuIGJvdW5kc1N0cmVhbSQxLnJlc3VsdCgpO1xuICB9O1xuXG4gIHBhdGguY2VudHJvaWQgPSBmdW5jdGlvbihvYmplY3QpIHtcbiAgICBnZW9TdHJlYW0ob2JqZWN0LCBwcm9qZWN0aW9uU3RyZWFtKGNlbnRyb2lkU3RyZWFtJDEpKTtcbiAgICByZXR1cm4gY2VudHJvaWRTdHJlYW0kMS5yZXN1bHQoKTtcbiAgfTtcblxuICBwYXRoLnByb2plY3Rpb24gPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAocHJvamVjdGlvblN0cmVhbSA9IF8gPT0gbnVsbCA/IChwcm9qZWN0aW9uID0gbnVsbCwgaWRlbnRpdHkpIDogKHByb2plY3Rpb24gPSBfKS5zdHJlYW0sIHBhdGgpIDogcHJvamVjdGlvbjtcbiAgfTtcblxuICBwYXRoLmNvbnRleHQgPSBmdW5jdGlvbihfKSB7XG4gICAgaWYgKCFhcmd1bWVudHMubGVuZ3RoKSByZXR1cm4gY29udGV4dDtcbiAgICBjb250ZXh0U3RyZWFtID0gXyA9PSBudWxsID8gKGNvbnRleHQgPSBudWxsLCBuZXcgUGF0aFN0cmluZykgOiBuZXcgUGF0aENvbnRleHQoY29udGV4dCA9IF8pO1xuICAgIGlmICh0eXBlb2YgcG9pbnRSYWRpdXMgIT09IFwiZnVuY3Rpb25cIikgY29udGV4dFN0cmVhbS5wb2ludFJhZGl1cyhwb2ludFJhZGl1cyk7XG4gICAgcmV0dXJuIHBhdGg7XG4gIH07XG5cbiAgcGF0aC5wb2ludFJhZGl1cyA9IGZ1bmN0aW9uKF8pIHtcbiAgICBpZiAoIWFyZ3VtZW50cy5sZW5ndGgpIHJldHVybiBwb2ludFJhZGl1cztcbiAgICBwb2ludFJhZGl1cyA9IHR5cGVvZiBfID09PSBcImZ1bmN0aW9uXCIgPyBfIDogKGNvbnRleHRTdHJlYW0ucG9pbnRSYWRpdXMoK18pLCArXyk7XG4gICAgcmV0dXJuIHBhdGg7XG4gIH07XG5cbiAgcmV0dXJuIHBhdGgucHJvamVjdGlvbihwcm9qZWN0aW9uKS5jb250ZXh0KGNvbnRleHQpO1xufTtcblxudmFyIGNsaXAgPSBmdW5jdGlvbihwb2ludFZpc2libGUsIGNsaXBMaW5lLCBpbnRlcnBvbGF0ZSwgc3RhcnQpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKHJvdGF0ZSwgc2luaykge1xuICAgIHZhciBsaW5lID0gY2xpcExpbmUoc2luayksXG4gICAgICAgIHJvdGF0ZWRTdGFydCA9IHJvdGF0ZS5pbnZlcnQoc3RhcnRbMF0sIHN0YXJ0WzFdKSxcbiAgICAgICAgcmluZ0J1ZmZlciA9IGNsaXBCdWZmZXIoKSxcbiAgICAgICAgcmluZ1NpbmsgPSBjbGlwTGluZShyaW5nQnVmZmVyKSxcbiAgICAgICAgcG9seWdvblN0YXJ0ZWQgPSBmYWxzZSxcbiAgICAgICAgcG9seWdvbixcbiAgICAgICAgc2VnbWVudHMsXG4gICAgICAgIHJpbmc7XG5cbiAgICB2YXIgY2xpcCA9IHtcbiAgICAgIHBvaW50OiBwb2ludCxcbiAgICAgIGxpbmVTdGFydDogbGluZVN0YXJ0LFxuICAgICAgbGluZUVuZDogbGluZUVuZCxcbiAgICAgIHBvbHlnb25TdGFydDogZnVuY3Rpb24oKSB7XG4gICAgICAgIGNsaXAucG9pbnQgPSBwb2ludFJpbmc7XG4gICAgICAgIGNsaXAubGluZVN0YXJ0ID0gcmluZ1N0YXJ0O1xuICAgICAgICBjbGlwLmxpbmVFbmQgPSByaW5nRW5kO1xuICAgICAgICBzZWdtZW50cyA9IFtdO1xuICAgICAgICBwb2x5Z29uID0gW107XG4gICAgICB9LFxuICAgICAgcG9seWdvbkVuZDogZnVuY3Rpb24oKSB7XG4gICAgICAgIGNsaXAucG9pbnQgPSBwb2ludDtcbiAgICAgICAgY2xpcC5saW5lU3RhcnQgPSBsaW5lU3RhcnQ7XG4gICAgICAgIGNsaXAubGluZUVuZCA9IGxpbmVFbmQ7XG4gICAgICAgIHNlZ21lbnRzID0gZDNBcnJheS5tZXJnZShzZWdtZW50cyk7XG4gICAgICAgIHZhciBzdGFydEluc2lkZSA9IHBvbHlnb25Db250YWlucyhwb2x5Z29uLCByb3RhdGVkU3RhcnQpO1xuICAgICAgICBpZiAoc2VnbWVudHMubGVuZ3RoKSB7XG4gICAgICAgICAgaWYgKCFwb2x5Z29uU3RhcnRlZCkgc2luay5wb2x5Z29uU3RhcnQoKSwgcG9seWdvblN0YXJ0ZWQgPSB0cnVlO1xuICAgICAgICAgIGNsaXBQb2x5Z29uKHNlZ21lbnRzLCBjb21wYXJlSW50ZXJzZWN0aW9uLCBzdGFydEluc2lkZSwgaW50ZXJwb2xhdGUsIHNpbmspO1xuICAgICAgICB9IGVsc2UgaWYgKHN0YXJ0SW5zaWRlKSB7XG4gICAgICAgICAgaWYgKCFwb2x5Z29uU3RhcnRlZCkgc2luay5wb2x5Z29uU3RhcnQoKSwgcG9seWdvblN0YXJ0ZWQgPSB0cnVlO1xuICAgICAgICAgIHNpbmsubGluZVN0YXJ0KCk7XG4gICAgICAgICAgaW50ZXJwb2xhdGUobnVsbCwgbnVsbCwgMSwgc2luayk7XG4gICAgICAgICAgc2luay5saW5lRW5kKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBvbHlnb25TdGFydGVkKSBzaW5rLnBvbHlnb25FbmQoKSwgcG9seWdvblN0YXJ0ZWQgPSBmYWxzZTtcbiAgICAgICAgc2VnbWVudHMgPSBwb2x5Z29uID0gbnVsbDtcbiAgICAgIH0sXG4gICAgICBzcGhlcmU6IGZ1bmN0aW9uKCkge1xuICAgICAgICBzaW5rLnBvbHlnb25TdGFydCgpO1xuICAgICAgICBzaW5rLmxpbmVTdGFydCgpO1xuICAgICAgICBpbnRlcnBvbGF0ZShudWxsLCBudWxsLCAxLCBzaW5rKTtcbiAgICAgICAgc2luay5saW5lRW5kKCk7XG4gICAgICAgIHNpbmsucG9seWdvbkVuZCgpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBwb2ludChsYW1iZGEsIHBoaSkge1xuICAgICAgdmFyIHBvaW50ID0gcm90YXRlKGxhbWJkYSwgcGhpKTtcbiAgICAgIGlmIChwb2ludFZpc2libGUobGFtYmRhID0gcG9pbnRbMF0sIHBoaSA9IHBvaW50WzFdKSkgc2luay5wb2ludChsYW1iZGEsIHBoaSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcG9pbnRMaW5lKGxhbWJkYSwgcGhpKSB7XG4gICAgICB2YXIgcG9pbnQgPSByb3RhdGUobGFtYmRhLCBwaGkpO1xuICAgICAgbGluZS5wb2ludChwb2ludFswXSwgcG9pbnRbMV0pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGxpbmVTdGFydCgpIHtcbiAgICAgIGNsaXAucG9pbnQgPSBwb2ludExpbmU7XG4gICAgICBsaW5lLmxpbmVTdGFydCgpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGxpbmVFbmQoKSB7XG4gICAgICBjbGlwLnBvaW50ID0gcG9pbnQ7XG4gICAgICBsaW5lLmxpbmVFbmQoKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwb2ludFJpbmcobGFtYmRhLCBwaGkpIHtcbiAgICAgIHJpbmcucHVzaChbbGFtYmRhLCBwaGldKTtcbiAgICAgIHZhciBwb2ludCA9IHJvdGF0ZShsYW1iZGEsIHBoaSk7XG4gICAgICByaW5nU2luay5wb2ludChwb2ludFswXSwgcG9pbnRbMV0pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJpbmdTdGFydCgpIHtcbiAgICAgIHJpbmdTaW5rLmxpbmVTdGFydCgpO1xuICAgICAgcmluZyA9IFtdO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJpbmdFbmQoKSB7XG4gICAgICBwb2ludFJpbmcocmluZ1swXVswXSwgcmluZ1swXVsxXSk7XG4gICAgICByaW5nU2luay5saW5lRW5kKCk7XG5cbiAgICAgIHZhciBjbGVhbiA9IHJpbmdTaW5rLmNsZWFuKCksXG4gICAgICAgICAgcmluZ1NlZ21lbnRzID0gcmluZ0J1ZmZlci5yZXN1bHQoKSxcbiAgICAgICAgICBpLCBuID0gcmluZ1NlZ21lbnRzLmxlbmd0aCwgbSxcbiAgICAgICAgICBzZWdtZW50LFxuICAgICAgICAgIHBvaW50O1xuXG4gICAgICByaW5nLnBvcCgpO1xuICAgICAgcG9seWdvbi5wdXNoKHJpbmcpO1xuICAgICAgcmluZyA9IG51bGw7XG5cbiAgICAgIGlmICghbikgcmV0dXJuO1xuXG4gICAgICAvLyBObyBpbnRlcnNlY3Rpb25zLlxuICAgICAgaWYgKGNsZWFuICYgMSkge1xuICAgICAgICBzZWdtZW50ID0gcmluZ1NlZ21lbnRzWzBdO1xuICAgICAgICBpZiAoKG0gPSBzZWdtZW50Lmxlbmd0aCAtIDEpID4gMCkge1xuICAgICAgICAgIGlmICghcG9seWdvblN0YXJ0ZWQpIHNpbmsucG9seWdvblN0YXJ0KCksIHBvbHlnb25TdGFydGVkID0gdHJ1ZTtcbiAgICAgICAgICBzaW5rLmxpbmVTdGFydCgpO1xuICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBtOyArK2kpIHNpbmsucG9pbnQoKHBvaW50ID0gc2VnbWVudFtpXSlbMF0sIHBvaW50WzFdKTtcbiAgICAgICAgICBzaW5rLmxpbmVFbmQoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIFJlam9pbiBjb25uZWN0ZWQgc2VnbWVudHMuXG4gICAgICAvLyBUT0RPIHJldXNlIHJpbmdCdWZmZXIucmVqb2luKCk/XG4gICAgICBpZiAobiA+IDEgJiYgY2xlYW4gJiAyKSByaW5nU2VnbWVudHMucHVzaChyaW5nU2VnbWVudHMucG9wKCkuY29uY2F0KHJpbmdTZWdtZW50cy5zaGlmdCgpKSk7XG5cbiAgICAgIHNlZ21lbnRzLnB1c2gocmluZ1NlZ21lbnRzLmZpbHRlcih2YWxpZFNlZ21lbnQpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY2xpcDtcbiAgfTtcbn07XG5cbmZ1bmN0aW9uIHZhbGlkU2VnbWVudChzZWdtZW50KSB7XG4gIHJldHVybiBzZWdtZW50Lmxlbmd0aCA+IDE7XG59XG5cbi8vIEludGVyc2VjdGlvbnMgYXJlIHNvcnRlZCBhbG9uZyB0aGUgY2xpcCBlZGdlLiBGb3IgYm90aCBhbnRpbWVyaWRpYW4gY3V0dGluZ1xuLy8gYW5kIGNpcmNsZSBjbGlwcGluZywgdGhlIHNhbWUgY29tcGFyaXNvbiBpcyB1c2VkLlxuZnVuY3Rpb24gY29tcGFyZUludGVyc2VjdGlvbihhLCBiKSB7XG4gIHJldHVybiAoKGEgPSBhLngpWzBdIDwgMCA/IGFbMV0gLSBoYWxmUGkgLSBlcHNpbG9uIDogaGFsZlBpIC0gYVsxXSlcbiAgICAgICAtICgoYiA9IGIueClbMF0gPCAwID8gYlsxXSAtIGhhbGZQaSAtIGVwc2lsb24gOiBoYWxmUGkgLSBiWzFdKTtcbn1cblxudmFyIGNsaXBBbnRpbWVyaWRpYW4gPSBjbGlwKFxuICBmdW5jdGlvbigpIHsgcmV0dXJuIHRydWU7IH0sXG4gIGNsaXBBbnRpbWVyaWRpYW5MaW5lLFxuICBjbGlwQW50aW1lcmlkaWFuSW50ZXJwb2xhdGUsXG4gIFstcGksIC1oYWxmUGldXG4pO1xuXG4vLyBUYWtlcyBhIGxpbmUgYW5kIGN1dHMgaW50byB2aXNpYmxlIHNlZ21lbnRzLiBSZXR1cm4gdmFsdWVzOiAwIC0gdGhlcmUgd2VyZVxuLy8gaW50ZXJzZWN0aW9ucyBvciB0aGUgbGluZSB3YXMgZW1wdHk7IDEgLSBubyBpbnRlcnNlY3Rpb25zOyAyIC0gdGhlcmUgd2VyZVxuLy8gaW50ZXJzZWN0aW9ucywgYW5kIHRoZSBmaXJzdCBhbmQgbGFzdCBzZWdtZW50cyBzaG91bGQgYmUgcmVqb2luZWQuXG5mdW5jdGlvbiBjbGlwQW50aW1lcmlkaWFuTGluZShzdHJlYW0pIHtcbiAgdmFyIGxhbWJkYTAgPSBOYU4sXG4gICAgICBwaGkwID0gTmFOLFxuICAgICAgc2lnbjAgPSBOYU4sXG4gICAgICBjbGVhbjsgLy8gbm8gaW50ZXJzZWN0aW9uc1xuXG4gIHJldHVybiB7XG4gICAgbGluZVN0YXJ0OiBmdW5jdGlvbigpIHtcbiAgICAgIHN0cmVhbS5saW5lU3RhcnQoKTtcbiAgICAgIGNsZWFuID0gMTtcbiAgICB9LFxuICAgIHBvaW50OiBmdW5jdGlvbihsYW1iZGExLCBwaGkxKSB7XG4gICAgICB2YXIgc2lnbjEgPSBsYW1iZGExID4gMCA/IHBpIDogLXBpLFxuICAgICAgICAgIGRlbHRhID0gYWJzKGxhbWJkYTEgLSBsYW1iZGEwKTtcbiAgICAgIGlmIChhYnMoZGVsdGEgLSBwaSkgPCBlcHNpbG9uKSB7IC8vIGxpbmUgY3Jvc3NlcyBhIHBvbGVcbiAgICAgICAgc3RyZWFtLnBvaW50KGxhbWJkYTAsIHBoaTAgPSAocGhpMCArIHBoaTEpIC8gMiA+IDAgPyBoYWxmUGkgOiAtaGFsZlBpKTtcbiAgICAgICAgc3RyZWFtLnBvaW50KHNpZ24wLCBwaGkwKTtcbiAgICAgICAgc3RyZWFtLmxpbmVFbmQoKTtcbiAgICAgICAgc3RyZWFtLmxpbmVTdGFydCgpO1xuICAgICAgICBzdHJlYW0ucG9pbnQoc2lnbjEsIHBoaTApO1xuICAgICAgICBzdHJlYW0ucG9pbnQobGFtYmRhMSwgcGhpMCk7XG4gICAgICAgIGNsZWFuID0gMDtcbiAgICAgIH0gZWxzZSBpZiAoc2lnbjAgIT09IHNpZ24xICYmIGRlbHRhID49IHBpKSB7IC8vIGxpbmUgY3Jvc3NlcyBhbnRpbWVyaWRpYW5cbiAgICAgICAgaWYgKGFicyhsYW1iZGEwIC0gc2lnbjApIDwgZXBzaWxvbikgbGFtYmRhMCAtPSBzaWduMCAqIGVwc2lsb247IC8vIGhhbmRsZSBkZWdlbmVyYWNpZXNcbiAgICAgICAgaWYgKGFicyhsYW1iZGExIC0gc2lnbjEpIDwgZXBzaWxvbikgbGFtYmRhMSAtPSBzaWduMSAqIGVwc2lsb247XG4gICAgICAgIHBoaTAgPSBjbGlwQW50aW1lcmlkaWFuSW50ZXJzZWN0KGxhbWJkYTAsIHBoaTAsIGxhbWJkYTEsIHBoaTEpO1xuICAgICAgICBzdHJlYW0ucG9pbnQoc2lnbjAsIHBoaTApO1xuICAgICAgICBzdHJlYW0ubGluZUVuZCgpO1xuICAgICAgICBzdHJlYW0ubGluZVN0YXJ0KCk7XG4gICAgICAgIHN0cmVhbS5wb2ludChzaWduMSwgcGhpMCk7XG4gICAgICAgIGNsZWFuID0gMDtcbiAgICAgIH1cbiAgICAgIHN0cmVhbS5wb2ludChsYW1iZGEwID0gbGFtYmRhMSwgcGhpMCA9IHBoaTEpO1xuICAgICAgc2lnbjAgPSBzaWduMTtcbiAgICB9LFxuICAgIGxpbmVFbmQ6IGZ1bmN0aW9uKCkge1xuICAgICAgc3RyZWFtLmxpbmVFbmQoKTtcbiAgICAgIGxhbWJkYTAgPSBwaGkwID0gTmFOO1xuICAgIH0sXG4gICAgY2xlYW46IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIDIgLSBjbGVhbjsgLy8gaWYgaW50ZXJzZWN0aW9ucywgcmVqb2luIGZpcnN0IGFuZCBsYXN0IHNlZ21lbnRzXG4gICAgfVxuICB9O1xufVxuXG5mdW5jdGlvbiBjbGlwQW50aW1lcmlkaWFuSW50ZXJzZWN0KGxhbWJkYTAsIHBoaTAsIGxhbWJkYTEsIHBoaTEpIHtcbiAgdmFyIGNvc1BoaTAsXG4gICAgICBjb3NQaGkxLFxuICAgICAgc2luTGFtYmRhMExhbWJkYTEgPSBzaW4obGFtYmRhMCAtIGxhbWJkYTEpO1xuICByZXR1cm4gYWJzKHNpbkxhbWJkYTBMYW1iZGExKSA+IGVwc2lsb25cbiAgICAgID8gYXRhbigoc2luKHBoaTApICogKGNvc1BoaTEgPSBjb3MocGhpMSkpICogc2luKGxhbWJkYTEpXG4gICAgICAgICAgLSBzaW4ocGhpMSkgKiAoY29zUGhpMCA9IGNvcyhwaGkwKSkgKiBzaW4obGFtYmRhMCkpXG4gICAgICAgICAgLyAoY29zUGhpMCAqIGNvc1BoaTEgKiBzaW5MYW1iZGEwTGFtYmRhMSkpXG4gICAgICA6IChwaGkwICsgcGhpMSkgLyAyO1xufVxuXG5mdW5jdGlvbiBjbGlwQW50aW1lcmlkaWFuSW50ZXJwb2xhdGUoZnJvbSwgdG8sIGRpcmVjdGlvbiwgc3RyZWFtKSB7XG4gIHZhciBwaGk7XG4gIGlmIChmcm9tID09IG51bGwpIHtcbiAgICBwaGkgPSBkaXJlY3Rpb24gKiBoYWxmUGk7XG4gICAgc3RyZWFtLnBvaW50KC1waSwgcGhpKTtcbiAgICBzdHJlYW0ucG9pbnQoMCwgcGhpKTtcbiAgICBzdHJlYW0ucG9pbnQocGksIHBoaSk7XG4gICAgc3RyZWFtLnBvaW50KHBpLCAwKTtcbiAgICBzdHJlYW0ucG9pbnQocGksIC1waGkpO1xuICAgIHN0cmVhbS5wb2ludCgwLCAtcGhpKTtcbiAgICBzdHJlYW0ucG9pbnQoLXBpLCAtcGhpKTtcbiAgICBzdHJlYW0ucG9pbnQoLXBpLCAwKTtcbiAgICBzdHJlYW0ucG9pbnQoLXBpLCBwaGkpO1xuICB9IGVsc2UgaWYgKGFicyhmcm9tWzBdIC0gdG9bMF0pID4gZXBzaWxvbikge1xuICAgIHZhciBsYW1iZGEgPSBmcm9tWzBdIDwgdG9bMF0gPyBwaSA6IC1waTtcbiAgICBwaGkgPSBkaXJlY3Rpb24gKiBsYW1iZGEgLyAyO1xuICAgIHN0cmVhbS5wb2ludCgtbGFtYmRhLCBwaGkpO1xuICAgIHN0cmVhbS5wb2ludCgwLCBwaGkpO1xuICAgIHN0cmVhbS5wb2ludChsYW1iZGEsIHBoaSk7XG4gIH0gZWxzZSB7XG4gICAgc3RyZWFtLnBvaW50KHRvWzBdLCB0b1sxXSk7XG4gIH1cbn1cblxudmFyIGNsaXBDaXJjbGUgPSBmdW5jdGlvbihyYWRpdXMsIGRlbHRhKSB7XG4gIHZhciBjciA9IGNvcyhyYWRpdXMpLFxuICAgICAgc21hbGxSYWRpdXMgPSBjciA+IDAsXG4gICAgICBub3RIZW1pc3BoZXJlID0gYWJzKGNyKSA+IGVwc2lsb247IC8vIFRPRE8gb3B0aW1pc2UgZm9yIHRoaXMgY29tbW9uIGNhc2VcblxuICBmdW5jdGlvbiBpbnRlcnBvbGF0ZShmcm9tLCB0bywgZGlyZWN0aW9uLCBzdHJlYW0pIHtcbiAgICBjaXJjbGVTdHJlYW0oc3RyZWFtLCByYWRpdXMsIGRlbHRhLCBkaXJlY3Rpb24sIGZyb20sIHRvKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHZpc2libGUobGFtYmRhLCBwaGkpIHtcbiAgICByZXR1cm4gY29zKGxhbWJkYSkgKiBjb3MocGhpKSA+IGNyO1xuICB9XG5cbiAgLy8gVGFrZXMgYSBsaW5lIGFuZCBjdXRzIGludG8gdmlzaWJsZSBzZWdtZW50cy4gUmV0dXJuIHZhbHVlcyB1c2VkIGZvciBwb2x5Z29uXG4gIC8vIGNsaXBwaW5nOiAwIC0gdGhlcmUgd2VyZSBpbnRlcnNlY3Rpb25zIG9yIHRoZSBsaW5lIHdhcyBlbXB0eTsgMSAtIG5vXG4gIC8vIGludGVyc2VjdGlvbnMgMiAtIHRoZXJlIHdlcmUgaW50ZXJzZWN0aW9ucywgYW5kIHRoZSBmaXJzdCBhbmQgbGFzdCBzZWdtZW50c1xuICAvLyBzaG91bGQgYmUgcmVqb2luZWQuXG4gIGZ1bmN0aW9uIGNsaXBMaW5lKHN0cmVhbSkge1xuICAgIHZhciBwb2ludDAsIC8vIHByZXZpb3VzIHBvaW50XG4gICAgICAgIGMwLCAvLyBjb2RlIGZvciBwcmV2aW91cyBwb2ludFxuICAgICAgICB2MCwgLy8gdmlzaWJpbGl0eSBvZiBwcmV2aW91cyBwb2ludFxuICAgICAgICB2MDAsIC8vIHZpc2liaWxpdHkgb2YgZmlyc3QgcG9pbnRcbiAgICAgICAgY2xlYW47IC8vIG5vIGludGVyc2VjdGlvbnNcbiAgICByZXR1cm4ge1xuICAgICAgbGluZVN0YXJ0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgdjAwID0gdjAgPSBmYWxzZTtcbiAgICAgICAgY2xlYW4gPSAxO1xuICAgICAgfSxcbiAgICAgIHBvaW50OiBmdW5jdGlvbihsYW1iZGEsIHBoaSkge1xuICAgICAgICB2YXIgcG9pbnQxID0gW2xhbWJkYSwgcGhpXSxcbiAgICAgICAgICAgIHBvaW50MixcbiAgICAgICAgICAgIHYgPSB2aXNpYmxlKGxhbWJkYSwgcGhpKSxcbiAgICAgICAgICAgIGMgPSBzbWFsbFJhZGl1c1xuICAgICAgICAgICAgICA/IHYgPyAwIDogY29kZShsYW1iZGEsIHBoaSlcbiAgICAgICAgICAgICAgOiB2ID8gY29kZShsYW1iZGEgKyAobGFtYmRhIDwgMCA/IHBpIDogLXBpKSwgcGhpKSA6IDA7XG4gICAgICAgIGlmICghcG9pbnQwICYmICh2MDAgPSB2MCA9IHYpKSBzdHJlYW0ubGluZVN0YXJ0KCk7XG4gICAgICAgIC8vIEhhbmRsZSBkZWdlbmVyYWNpZXMuXG4gICAgICAgIC8vIFRPRE8gaWdub3JlIGlmIG5vdCBjbGlwcGluZyBwb2x5Z29ucy5cbiAgICAgICAgaWYgKHYgIT09IHYwKSB7XG4gICAgICAgICAgcG9pbnQyID0gaW50ZXJzZWN0KHBvaW50MCwgcG9pbnQxKTtcbiAgICAgICAgICBpZiAocG9pbnRFcXVhbChwb2ludDAsIHBvaW50MikgfHwgcG9pbnRFcXVhbChwb2ludDEsIHBvaW50MikpIHtcbiAgICAgICAgICAgIHBvaW50MVswXSArPSBlcHNpbG9uO1xuICAgICAgICAgICAgcG9pbnQxWzFdICs9IGVwc2lsb247XG4gICAgICAgICAgICB2ID0gdmlzaWJsZShwb2ludDFbMF0sIHBvaW50MVsxXSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh2ICE9PSB2MCkge1xuICAgICAgICAgIGNsZWFuID0gMDtcbiAgICAgICAgICBpZiAodikge1xuICAgICAgICAgICAgLy8gb3V0c2lkZSBnb2luZyBpblxuICAgICAgICAgICAgc3RyZWFtLmxpbmVTdGFydCgpO1xuICAgICAgICAgICAgcG9pbnQyID0gaW50ZXJzZWN0KHBvaW50MSwgcG9pbnQwKTtcbiAgICAgICAgICAgIHN0cmVhbS5wb2ludChwb2ludDJbMF0sIHBvaW50MlsxXSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIGluc2lkZSBnb2luZyBvdXRcbiAgICAgICAgICAgIHBvaW50MiA9IGludGVyc2VjdChwb2ludDAsIHBvaW50MSk7XG4gICAgICAgICAgICBzdHJlYW0ucG9pbnQocG9pbnQyWzBdLCBwb2ludDJbMV0pO1xuICAgICAgICAgICAgc3RyZWFtLmxpbmVFbmQoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcG9pbnQwID0gcG9pbnQyO1xuICAgICAgICB9IGVsc2UgaWYgKG5vdEhlbWlzcGhlcmUgJiYgcG9pbnQwICYmIHNtYWxsUmFkaXVzIF4gdikge1xuICAgICAgICAgIHZhciB0O1xuICAgICAgICAgIC8vIElmIHRoZSBjb2RlcyBmb3IgdHdvIHBvaW50cyBhcmUgZGlmZmVyZW50LCBvciBhcmUgYm90aCB6ZXJvLFxuICAgICAgICAgIC8vIGFuZCB0aGVyZSB0aGlzIHNlZ21lbnQgaW50ZXJzZWN0cyB3aXRoIHRoZSBzbWFsbCBjaXJjbGUuXG4gICAgICAgICAgaWYgKCEoYyAmIGMwKSAmJiAodCA9IGludGVyc2VjdChwb2ludDEsIHBvaW50MCwgdHJ1ZSkpKSB7XG4gICAgICAgICAgICBjbGVhbiA9IDA7XG4gICAgICAgICAgICBpZiAoc21hbGxSYWRpdXMpIHtcbiAgICAgICAgICAgICAgc3RyZWFtLmxpbmVTdGFydCgpO1xuICAgICAgICAgICAgICBzdHJlYW0ucG9pbnQodFswXVswXSwgdFswXVsxXSk7XG4gICAgICAgICAgICAgIHN0cmVhbS5wb2ludCh0WzFdWzBdLCB0WzFdWzFdKTtcbiAgICAgICAgICAgICAgc3RyZWFtLmxpbmVFbmQoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHN0cmVhbS5wb2ludCh0WzFdWzBdLCB0WzFdWzFdKTtcbiAgICAgICAgICAgICAgc3RyZWFtLmxpbmVFbmQoKTtcbiAgICAgICAgICAgICAgc3RyZWFtLmxpbmVTdGFydCgpO1xuICAgICAgICAgICAgICBzdHJlYW0ucG9pbnQodFswXVswXSwgdFswXVsxXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh2ICYmICghcG9pbnQwIHx8ICFwb2ludEVxdWFsKHBvaW50MCwgcG9pbnQxKSkpIHtcbiAgICAgICAgICBzdHJlYW0ucG9pbnQocG9pbnQxWzBdLCBwb2ludDFbMV0pO1xuICAgICAgICB9XG4gICAgICAgIHBvaW50MCA9IHBvaW50MSwgdjAgPSB2LCBjMCA9IGM7XG4gICAgICB9LFxuICAgICAgbGluZUVuZDogZnVuY3Rpb24oKSB7XG4gICAgICAgIGlmICh2MCkgc3RyZWFtLmxpbmVFbmQoKTtcbiAgICAgICAgcG9pbnQwID0gbnVsbDtcbiAgICAgIH0sXG4gICAgICAvLyBSZWpvaW4gZmlyc3QgYW5kIGxhc3Qgc2VnbWVudHMgaWYgdGhlcmUgd2VyZSBpbnRlcnNlY3Rpb25zIGFuZCB0aGUgZmlyc3RcbiAgICAgIC8vIGFuZCBsYXN0IHBvaW50cyB3ZXJlIHZpc2libGUuXG4gICAgICBjbGVhbjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBjbGVhbiB8ICgodjAwICYmIHYwKSA8PCAxKTtcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgLy8gSW50ZXJzZWN0cyB0aGUgZ3JlYXQgY2lyY2xlIGJldHdlZW4gYSBhbmQgYiB3aXRoIHRoZSBjbGlwIGNpcmNsZS5cbiAgZnVuY3Rpb24gaW50ZXJzZWN0KGEsIGIsIHR3bykge1xuICAgIHZhciBwYSA9IGNhcnRlc2lhbihhKSxcbiAgICAgICAgcGIgPSBjYXJ0ZXNpYW4oYik7XG5cbiAgICAvLyBXZSBoYXZlIHR3byBwbGFuZXMsIG4xLnAgPSBkMSBhbmQgbjIucCA9IGQyLlxuICAgIC8vIEZpbmQgaW50ZXJzZWN0aW9uIGxpbmUgcCh0KSA9IGMxIG4xICsgYzIgbjIgKyB0IChuMSDiqK8gbjIpLlxuICAgIHZhciBuMSA9IFsxLCAwLCAwXSwgLy8gbm9ybWFsXG4gICAgICAgIG4yID0gY2FydGVzaWFuQ3Jvc3MocGEsIHBiKSxcbiAgICAgICAgbjJuMiA9IGNhcnRlc2lhbkRvdChuMiwgbjIpLFxuICAgICAgICBuMW4yID0gbjJbMF0sIC8vIGNhcnRlc2lhbkRvdChuMSwgbjIpLFxuICAgICAgICBkZXRlcm1pbmFudCA9IG4ybjIgLSBuMW4yICogbjFuMjtcblxuICAgIC8vIFR3byBwb2xhciBwb2ludHMuXG4gICAgaWYgKCFkZXRlcm1pbmFudCkgcmV0dXJuICF0d28gJiYgYTtcblxuICAgIHZhciBjMSA9ICBjciAqIG4ybjIgLyBkZXRlcm1pbmFudCxcbiAgICAgICAgYzIgPSAtY3IgKiBuMW4yIC8gZGV0ZXJtaW5hbnQsXG4gICAgICAgIG4xeG4yID0gY2FydGVzaWFuQ3Jvc3MobjEsIG4yKSxcbiAgICAgICAgQSA9IGNhcnRlc2lhblNjYWxlKG4xLCBjMSksXG4gICAgICAgIEIgPSBjYXJ0ZXNpYW5TY2FsZShuMiwgYzIpO1xuICAgIGNhcnRlc2lhbkFkZEluUGxhY2UoQSwgQik7XG5cbiAgICAvLyBTb2x2ZSB8cCh0KXxeMiA9IDEuXG4gICAgdmFyIHUgPSBuMXhuMixcbiAgICAgICAgdyA9IGNhcnRlc2lhbkRvdChBLCB1KSxcbiAgICAgICAgdXUgPSBjYXJ0ZXNpYW5Eb3QodSwgdSksXG4gICAgICAgIHQyID0gdyAqIHcgLSB1dSAqIChjYXJ0ZXNpYW5Eb3QoQSwgQSkgLSAxKTtcblxuICAgIGlmICh0MiA8IDApIHJldHVybjtcblxuICAgIHZhciB0ID0gc3FydCh0MiksXG4gICAgICAgIHEgPSBjYXJ0ZXNpYW5TY2FsZSh1LCAoLXcgLSB0KSAvIHV1KTtcbiAgICBjYXJ0ZXNpYW5BZGRJblBsYWNlKHEsIEEpO1xuICAgIHEgPSBzcGhlcmljYWwocSk7XG5cbiAgICBpZiAoIXR3bykgcmV0dXJuIHE7XG5cbiAgICAvLyBUd28gaW50ZXJzZWN0aW9uIHBvaW50cy5cbiAgICB2YXIgbGFtYmRhMCA9IGFbMF0sXG4gICAgICAgIGxhbWJkYTEgPSBiWzBdLFxuICAgICAgICBwaGkwID0gYVsxXSxcbiAgICAgICAgcGhpMSA9IGJbMV0sXG4gICAgICAgIHo7XG5cbiAgICBpZiAobGFtYmRhMSA8IGxhbWJkYTApIHogPSBsYW1iZGEwLCBsYW1iZGEwID0gbGFtYmRhMSwgbGFtYmRhMSA9IHo7XG5cbiAgICB2YXIgZGVsdGEgPSBsYW1iZGExIC0gbGFtYmRhMCxcbiAgICAgICAgcG9sYXIgPSBhYnMoZGVsdGEgLSBwaSkgPCBlcHNpbG9uLFxuICAgICAgICBtZXJpZGlhbiA9IHBvbGFyIHx8IGRlbHRhIDwgZXBzaWxvbjtcblxuICAgIGlmICghcG9sYXIgJiYgcGhpMSA8IHBoaTApIHogPSBwaGkwLCBwaGkwID0gcGhpMSwgcGhpMSA9IHo7XG5cbiAgICAvLyBDaGVjayB0aGF0IHRoZSBmaXJzdCBwb2ludCBpcyBiZXR3ZWVuIGEgYW5kIGIuXG4gICAgaWYgKG1lcmlkaWFuXG4gICAgICAgID8gcG9sYXJcbiAgICAgICAgICA/IHBoaTAgKyBwaGkxID4gMCBeIHFbMV0gPCAoYWJzKHFbMF0gLSBsYW1iZGEwKSA8IGVwc2lsb24gPyBwaGkwIDogcGhpMSlcbiAgICAgICAgICA6IHBoaTAgPD0gcVsxXSAmJiBxWzFdIDw9IHBoaTFcbiAgICAgICAgOiBkZWx0YSA+IHBpIF4gKGxhbWJkYTAgPD0gcVswXSAmJiBxWzBdIDw9IGxhbWJkYTEpKSB7XG4gICAgICB2YXIgcTEgPSBjYXJ0ZXNpYW5TY2FsZSh1LCAoLXcgKyB0KSAvIHV1KTtcbiAgICAgIGNhcnRlc2lhbkFkZEluUGxhY2UocTEsIEEpO1xuICAgICAgcmV0dXJuIFtxLCBzcGhlcmljYWwocTEpXTtcbiAgICB9XG4gIH1cblxuICAvLyBHZW5lcmF0ZXMgYSA0LWJpdCB2ZWN0b3IgcmVwcmVzZW50aW5nIHRoZSBsb2NhdGlvbiBvZiBhIHBvaW50IHJlbGF0aXZlIHRvXG4gIC8vIHRoZSBzbWFsbCBjaXJjbGUncyBib3VuZGluZyBib3guXG4gIGZ1bmN0aW9uIGNvZGUobGFtYmRhLCBwaGkpIHtcbiAgICB2YXIgciA9IHNtYWxsUmFkaXVzID8gcmFkaXVzIDogcGkgLSByYWRpdXMsXG4gICAgICAgIGNvZGUgPSAwO1xuICAgIGlmIChsYW1iZGEgPCAtcikgY29kZSB8PSAxOyAvLyBsZWZ0XG4gICAgZWxzZSBpZiAobGFtYmRhID4gcikgY29kZSB8PSAyOyAvLyByaWdodFxuICAgIGlmIChwaGkgPCAtcikgY29kZSB8PSA0OyAvLyBiZWxvd1xuICAgIGVsc2UgaWYgKHBoaSA+IHIpIGNvZGUgfD0gODsgLy8gYWJvdmVcbiAgICByZXR1cm4gY29kZTtcbiAgfVxuXG4gIHJldHVybiBjbGlwKHZpc2libGUsIGNsaXBMaW5lLCBpbnRlcnBvbGF0ZSwgc21hbGxSYWRpdXMgPyBbMCwgLXJhZGl1c10gOiBbLXBpLCByYWRpdXMgLSBwaV0pO1xufTtcblxudmFyIHRyYW5zZm9ybSA9IGZ1bmN0aW9uKG1ldGhvZHMpIHtcbiAgcmV0dXJuIHtcbiAgICBzdHJlYW06IHRyYW5zZm9ybWVyKG1ldGhvZHMpXG4gIH07XG59O1xuXG5mdW5jdGlvbiB0cmFuc2Zvcm1lcihtZXRob2RzKSB7XG4gIHJldHVybiBmdW5jdGlvbihzdHJlYW0pIHtcbiAgICB2YXIgcyA9IG5ldyBUcmFuc2Zvcm1TdHJlYW07XG4gICAgZm9yICh2YXIga2V5IGluIG1ldGhvZHMpIHNba2V5XSA9IG1ldGhvZHNba2V5XTtcbiAgICBzLnN0cmVhbSA9IHN0cmVhbTtcbiAgICByZXR1cm4gcztcbiAgfTtcbn1cblxuZnVuY3Rpb24gVHJhbnNmb3JtU3RyZWFtKCkge31cblxuVHJhbnNmb3JtU3RyZWFtLnByb3RvdHlwZSA9IHtcbiAgY29uc3RydWN0b3I6IFRyYW5zZm9ybVN0cmVhbSxcbiAgcG9pbnQ6IGZ1bmN0aW9uKHgsIHkpIHsgdGhpcy5zdHJlYW0ucG9pbnQoeCwgeSk7IH0sXG4gIHNwaGVyZTogZnVuY3Rpb24oKSB7IHRoaXMuc3RyZWFtLnNwaGVyZSgpOyB9LFxuICBsaW5lU3RhcnQ6IGZ1bmN0aW9uKCkgeyB0aGlzLnN0cmVhbS5saW5lU3RhcnQoKTsgfSxcbiAgbGluZUVuZDogZnVuY3Rpb24oKSB7IHRoaXMuc3RyZWFtLmxpbmVFbmQoKTsgfSxcbiAgcG9seWdvblN0YXJ0OiBmdW5jdGlvbigpIHsgdGhpcy5zdHJlYW0ucG9seWdvblN0YXJ0KCk7IH0sXG4gIHBvbHlnb25FbmQ6IGZ1bmN0aW9uKCkgeyB0aGlzLnN0cmVhbS5wb2x5Z29uRW5kKCk7IH1cbn07XG5cbmZ1bmN0aW9uIGZpdEV4dGVudChwcm9qZWN0aW9uLCBleHRlbnQsIG9iamVjdCkge1xuICB2YXIgdyA9IGV4dGVudFsxXVswXSAtIGV4dGVudFswXVswXSxcbiAgICAgIGggPSBleHRlbnRbMV1bMV0gLSBleHRlbnRbMF1bMV0sXG4gICAgICBjbGlwID0gcHJvamVjdGlvbi5jbGlwRXh0ZW50ICYmIHByb2plY3Rpb24uY2xpcEV4dGVudCgpO1xuXG4gIHByb2plY3Rpb25cbiAgICAgIC5zY2FsZSgxNTApXG4gICAgICAudHJhbnNsYXRlKFswLCAwXSk7XG5cbiAgaWYgKGNsaXAgIT0gbnVsbCkgcHJvamVjdGlvbi5jbGlwRXh0ZW50KG51bGwpO1xuXG4gIGdlb1N0cmVhbShvYmplY3QsIHByb2plY3Rpb24uc3RyZWFtKGJvdW5kc1N0cmVhbSQxKSk7XG5cbiAgdmFyIGIgPSBib3VuZHNTdHJlYW0kMS5yZXN1bHQoKSxcbiAgICAgIGsgPSBNYXRoLm1pbih3IC8gKGJbMV1bMF0gLSBiWzBdWzBdKSwgaCAvIChiWzFdWzFdIC0gYlswXVsxXSkpLFxuICAgICAgeCA9ICtleHRlbnRbMF1bMF0gKyAodyAtIGsgKiAoYlsxXVswXSArIGJbMF1bMF0pKSAvIDIsXG4gICAgICB5ID0gK2V4dGVudFswXVsxXSArIChoIC0gayAqIChiWzFdWzFdICsgYlswXVsxXSkpIC8gMjtcblxuICBpZiAoY2xpcCAhPSBudWxsKSBwcm9qZWN0aW9uLmNsaXBFeHRlbnQoY2xpcCk7XG5cbiAgcmV0dXJuIHByb2plY3Rpb25cbiAgICAgIC5zY2FsZShrICogMTUwKVxuICAgICAgLnRyYW5zbGF0ZShbeCwgeV0pO1xufVxuXG5mdW5jdGlvbiBmaXRTaXplKHByb2plY3Rpb24sIHNpemUsIG9iamVjdCkge1xuICByZXR1cm4gZml0RXh0ZW50KHByb2plY3Rpb24sIFtbMCwgMF0sIHNpemVdLCBvYmplY3QpO1xufVxuXG52YXIgbWF4RGVwdGggPSAxNjtcbnZhciBjb3NNaW5EaXN0YW5jZSA9IGNvcygzMCAqIHJhZGlhbnMpOyAvLyBjb3MobWluaW11bSBhbmd1bGFyIGRpc3RhbmNlKVxuXG52YXIgcmVzYW1wbGUgPSBmdW5jdGlvbihwcm9qZWN0LCBkZWx0YTIpIHtcbiAgcmV0dXJuICtkZWx0YTIgPyByZXNhbXBsZSQxKHByb2plY3QsIGRlbHRhMikgOiByZXNhbXBsZU5vbmUocHJvamVjdCk7XG59O1xuXG5mdW5jdGlvbiByZXNhbXBsZU5vbmUocHJvamVjdCkge1xuICByZXR1cm4gdHJhbnNmb3JtZXIoe1xuICAgIHBvaW50OiBmdW5jdGlvbih4LCB5KSB7XG4gICAgICB4ID0gcHJvamVjdCh4LCB5KTtcbiAgICAgIHRoaXMuc3RyZWFtLnBvaW50KHhbMF0sIHhbMV0pO1xuICAgIH1cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHJlc2FtcGxlJDEocHJvamVjdCwgZGVsdGEyKSB7XG5cbiAgZnVuY3Rpb24gcmVzYW1wbGVMaW5lVG8oeDAsIHkwLCBsYW1iZGEwLCBhMCwgYjAsIGMwLCB4MSwgeTEsIGxhbWJkYTEsIGExLCBiMSwgYzEsIGRlcHRoLCBzdHJlYW0pIHtcbiAgICB2YXIgZHggPSB4MSAtIHgwLFxuICAgICAgICBkeSA9IHkxIC0geTAsXG4gICAgICAgIGQyID0gZHggKiBkeCArIGR5ICogZHk7XG4gICAgaWYgKGQyID4gNCAqIGRlbHRhMiAmJiBkZXB0aC0tKSB7XG4gICAgICB2YXIgYSA9IGEwICsgYTEsXG4gICAgICAgICAgYiA9IGIwICsgYjEsXG4gICAgICAgICAgYyA9IGMwICsgYzEsXG4gICAgICAgICAgbSA9IHNxcnQoYSAqIGEgKyBiICogYiArIGMgKiBjKSxcbiAgICAgICAgICBwaGkyID0gYXNpbihjIC89IG0pLFxuICAgICAgICAgIGxhbWJkYTIgPSBhYnMoYWJzKGMpIC0gMSkgPCBlcHNpbG9uIHx8IGFicyhsYW1iZGEwIC0gbGFtYmRhMSkgPCBlcHNpbG9uID8gKGxhbWJkYTAgKyBsYW1iZGExKSAvIDIgOiBhdGFuMihiLCBhKSxcbiAgICAgICAgICBwID0gcHJvamVjdChsYW1iZGEyLCBwaGkyKSxcbiAgICAgICAgICB4MiA9IHBbMF0sXG4gICAgICAgICAgeTIgPSBwWzFdLFxuICAgICAgICAgIGR4MiA9IHgyIC0geDAsXG4gICAgICAgICAgZHkyID0geTIgLSB5MCxcbiAgICAgICAgICBkeiA9IGR5ICogZHgyIC0gZHggKiBkeTI7XG4gICAgICBpZiAoZHogKiBkeiAvIGQyID4gZGVsdGEyIC8vIHBlcnBlbmRpY3VsYXIgcHJvamVjdGVkIGRpc3RhbmNlXG4gICAgICAgICAgfHwgYWJzKChkeCAqIGR4MiArIGR5ICogZHkyKSAvIGQyIC0gMC41KSA+IDAuMyAvLyBtaWRwb2ludCBjbG9zZSB0byBhbiBlbmRcbiAgICAgICAgICB8fCBhMCAqIGExICsgYjAgKiBiMSArIGMwICogYzEgPCBjb3NNaW5EaXN0YW5jZSkgeyAvLyBhbmd1bGFyIGRpc3RhbmNlXG4gICAgICAgIHJlc2FtcGxlTGluZVRvKHgwLCB5MCwgbGFtYmRhMCwgYTAsIGIwLCBjMCwgeDIsIHkyLCBsYW1iZGEyLCBhIC89IG0sIGIgLz0gbSwgYywgZGVwdGgsIHN0cmVhbSk7XG4gICAgICAgIHN0cmVhbS5wb2ludCh4MiwgeTIpO1xuICAgICAgICByZXNhbXBsZUxpbmVUbyh4MiwgeTIsIGxhbWJkYTIsIGEsIGIsIGMsIHgxLCB5MSwgbGFtYmRhMSwgYTEsIGIxLCBjMSwgZGVwdGgsIHN0cmVhbSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBmdW5jdGlvbihzdHJlYW0pIHtcbiAgICB2YXIgbGFtYmRhMDAsIHgwMCwgeTAwLCBhMDAsIGIwMCwgYzAwLCAvLyBmaXJzdCBwb2ludFxuICAgICAgICBsYW1iZGEwLCB4MCwgeTAsIGEwLCBiMCwgYzA7IC8vIHByZXZpb3VzIHBvaW50XG5cbiAgICB2YXIgcmVzYW1wbGVTdHJlYW0gPSB7XG4gICAgICBwb2ludDogcG9pbnQsXG4gICAgICBsaW5lU3RhcnQ6IGxpbmVTdGFydCxcbiAgICAgIGxpbmVFbmQ6IGxpbmVFbmQsXG4gICAgICBwb2x5Z29uU3RhcnQ6IGZ1bmN0aW9uKCkgeyBzdHJlYW0ucG9seWdvblN0YXJ0KCk7IHJlc2FtcGxlU3RyZWFtLmxpbmVTdGFydCA9IHJpbmdTdGFydDsgfSxcbiAgICAgIHBvbHlnb25FbmQ6IGZ1bmN0aW9uKCkgeyBzdHJlYW0ucG9seWdvbkVuZCgpOyByZXNhbXBsZVN0cmVhbS5saW5lU3RhcnQgPSBsaW5lU3RhcnQ7IH1cbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gcG9pbnQoeCwgeSkge1xuICAgICAgeCA9IHByb2plY3QoeCwgeSk7XG4gICAgICBzdHJlYW0ucG9pbnQoeFswXSwgeFsxXSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbGluZVN0YXJ0KCkge1xuICAgICAgeDAgPSBOYU47XG4gICAgICByZXNhbXBsZVN0cmVhbS5wb2ludCA9IGxpbmVQb2ludDtcbiAgICAgIHN0cmVhbS5saW5lU3RhcnQoKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBsaW5lUG9pbnQobGFtYmRhLCBwaGkpIHtcbiAgICAgIHZhciBjID0gY2FydGVzaWFuKFtsYW1iZGEsIHBoaV0pLCBwID0gcHJvamVjdChsYW1iZGEsIHBoaSk7XG4gICAgICByZXNhbXBsZUxpbmVUbyh4MCwgeTAsIGxhbWJkYTAsIGEwLCBiMCwgYzAsIHgwID0gcFswXSwgeTAgPSBwWzFdLCBsYW1iZGEwID0gbGFtYmRhLCBhMCA9IGNbMF0sIGIwID0gY1sxXSwgYzAgPSBjWzJdLCBtYXhEZXB0aCwgc3RyZWFtKTtcbiAgICAgIHN0cmVhbS5wb2ludCh4MCwgeTApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGxpbmVFbmQoKSB7XG4gICAgICByZXNhbXBsZVN0cmVhbS5wb2ludCA9IHBvaW50O1xuICAgICAgc3RyZWFtLmxpbmVFbmQoKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiByaW5nU3RhcnQoKSB7XG4gICAgICBsaW5lU3RhcnQoKTtcbiAgICAgIHJlc2FtcGxlU3RyZWFtLnBvaW50ID0gcmluZ1BvaW50O1xuICAgICAgcmVzYW1wbGVTdHJlYW0ubGluZUVuZCA9IHJpbmdFbmQ7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcmluZ1BvaW50KGxhbWJkYSwgcGhpKSB7XG4gICAgICBsaW5lUG9pbnQobGFtYmRhMDAgPSBsYW1iZGEsIHBoaSksIHgwMCA9IHgwLCB5MDAgPSB5MCwgYTAwID0gYTAsIGIwMCA9IGIwLCBjMDAgPSBjMDtcbiAgICAgIHJlc2FtcGxlU3RyZWFtLnBvaW50ID0gbGluZVBvaW50O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHJpbmdFbmQoKSB7XG4gICAgICByZXNhbXBsZUxpbmVUbyh4MCwgeTAsIGxhbWJkYTAsIGEwLCBiMCwgYzAsIHgwMCwgeTAwLCBsYW1iZGEwMCwgYTAwLCBiMDAsIGMwMCwgbWF4RGVwdGgsIHN0cmVhbSk7XG4gICAgICByZXNhbXBsZVN0cmVhbS5saW5lRW5kID0gbGluZUVuZDtcbiAgICAgIGxpbmVFbmQoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzYW1wbGVTdHJlYW07XG4gIH07XG59XG5cbnZhciB0cmFuc2Zvcm1SYWRpYW5zID0gdHJhbnNmb3JtZXIoe1xuICBwb2ludDogZnVuY3Rpb24oeCwgeSkge1xuICAgIHRoaXMuc3RyZWFtLnBvaW50KHggKiByYWRpYW5zLCB5ICogcmFkaWFucyk7XG4gIH1cbn0pO1xuXG5mdW5jdGlvbiBwcm9qZWN0aW9uKHByb2plY3QpIHtcbiAgcmV0dXJuIHByb2plY3Rpb25NdXRhdG9yKGZ1bmN0aW9uKCkgeyByZXR1cm4gcHJvamVjdDsgfSkoKTtcbn1cblxuZnVuY3Rpb24gcHJvamVjdGlvbk11dGF0b3IocHJvamVjdEF0KSB7XG4gIHZhciBwcm9qZWN0LFxuICAgICAgayA9IDE1MCwgLy8gc2NhbGVcbiAgICAgIHggPSA0ODAsIHkgPSAyNTAsIC8vIHRyYW5zbGF0ZVxuICAgICAgZHgsIGR5LCBsYW1iZGEgPSAwLCBwaGkgPSAwLCAvLyBjZW50ZXJcbiAgICAgIGRlbHRhTGFtYmRhID0gMCwgZGVsdGFQaGkgPSAwLCBkZWx0YUdhbW1hID0gMCwgcm90YXRlLCBwcm9qZWN0Um90YXRlLCAvLyByb3RhdGVcbiAgICAgIHRoZXRhID0gbnVsbCwgcHJlY2xpcCA9IGNsaXBBbnRpbWVyaWRpYW4sIC8vIGNsaXAgYW5nbGVcbiAgICAgIHgwID0gbnVsbCwgeTAsIHgxLCB5MSwgcG9zdGNsaXAgPSBpZGVudGl0eSwgLy8gY2xpcCBleHRlbnRcbiAgICAgIGRlbHRhMiA9IDAuNSwgcHJvamVjdFJlc2FtcGxlID0gcmVzYW1wbGUocHJvamVjdFRyYW5zZm9ybSwgZGVsdGEyKSwgLy8gcHJlY2lzaW9uXG4gICAgICBjYWNoZSxcbiAgICAgIGNhY2hlU3RyZWFtO1xuXG4gIGZ1bmN0aW9uIHByb2plY3Rpb24ocG9pbnQpIHtcbiAgICBwb2ludCA9IHByb2plY3RSb3RhdGUocG9pbnRbMF0gKiByYWRpYW5zLCBwb2ludFsxXSAqIHJhZGlhbnMpO1xuICAgIHJldHVybiBbcG9pbnRbMF0gKiBrICsgZHgsIGR5IC0gcG9pbnRbMV0gKiBrXTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGludmVydChwb2ludCkge1xuICAgIHBvaW50ID0gcHJvamVjdFJvdGF0ZS5pbnZlcnQoKHBvaW50WzBdIC0gZHgpIC8gaywgKGR5IC0gcG9pbnRbMV0pIC8gayk7XG4gICAgcmV0dXJuIHBvaW50ICYmIFtwb2ludFswXSAqIGRlZ3JlZXMsIHBvaW50WzFdICogZGVncmVlc107XG4gIH1cblxuICBmdW5jdGlvbiBwcm9qZWN0VHJhbnNmb3JtKHgsIHkpIHtcbiAgICByZXR1cm4geCA9IHByb2plY3QoeCwgeSksIFt4WzBdICogayArIGR4LCBkeSAtIHhbMV0gKiBrXTtcbiAgfVxuXG4gIHByb2plY3Rpb24uc3RyZWFtID0gZnVuY3Rpb24oc3RyZWFtKSB7XG4gICAgcmV0dXJuIGNhY2hlICYmIGNhY2hlU3RyZWFtID09PSBzdHJlYW0gPyBjYWNoZSA6IGNhY2hlID0gdHJhbnNmb3JtUmFkaWFucyhwcmVjbGlwKHJvdGF0ZSwgcHJvamVjdFJlc2FtcGxlKHBvc3RjbGlwKGNhY2hlU3RyZWFtID0gc3RyZWFtKSkpKTtcbiAgfTtcblxuICBwcm9qZWN0aW9uLmNsaXBBbmdsZSA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChwcmVjbGlwID0gK18gPyBjbGlwQ2lyY2xlKHRoZXRhID0gXyAqIHJhZGlhbnMsIDYgKiByYWRpYW5zKSA6ICh0aGV0YSA9IG51bGwsIGNsaXBBbnRpbWVyaWRpYW4pLCByZXNldCgpKSA6IHRoZXRhICogZGVncmVlcztcbiAgfTtcblxuICBwcm9qZWN0aW9uLmNsaXBFeHRlbnQgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAocG9zdGNsaXAgPSBfID09IG51bGwgPyAoeDAgPSB5MCA9IHgxID0geTEgPSBudWxsLCBpZGVudGl0eSkgOiBjbGlwRXh0ZW50KHgwID0gK19bMF1bMF0sIHkwID0gK19bMF1bMV0sIHgxID0gK19bMV1bMF0sIHkxID0gK19bMV1bMV0pLCByZXNldCgpKSA6IHgwID09IG51bGwgPyBudWxsIDogW1t4MCwgeTBdLCBbeDEsIHkxXV07XG4gIH07XG5cbiAgcHJvamVjdGlvbi5zY2FsZSA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChrID0gK18sIHJlY2VudGVyKCkpIDogaztcbiAgfTtcblxuICBwcm9qZWN0aW9uLnRyYW5zbGF0ZSA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICh4ID0gK19bMF0sIHkgPSArX1sxXSwgcmVjZW50ZXIoKSkgOiBbeCwgeV07XG4gIH07XG5cbiAgcHJvamVjdGlvbi5jZW50ZXIgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAobGFtYmRhID0gX1swXSAlIDM2MCAqIHJhZGlhbnMsIHBoaSA9IF9bMV0gJSAzNjAgKiByYWRpYW5zLCByZWNlbnRlcigpKSA6IFtsYW1iZGEgKiBkZWdyZWVzLCBwaGkgKiBkZWdyZWVzXTtcbiAgfTtcblxuICBwcm9qZWN0aW9uLnJvdGF0ZSA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChkZWx0YUxhbWJkYSA9IF9bMF0gJSAzNjAgKiByYWRpYW5zLCBkZWx0YVBoaSA9IF9bMV0gJSAzNjAgKiByYWRpYW5zLCBkZWx0YUdhbW1hID0gXy5sZW5ndGggPiAyID8gX1syXSAlIDM2MCAqIHJhZGlhbnMgOiAwLCByZWNlbnRlcigpKSA6IFtkZWx0YUxhbWJkYSAqIGRlZ3JlZXMsIGRlbHRhUGhpICogZGVncmVlcywgZGVsdGFHYW1tYSAqIGRlZ3JlZXNdO1xuICB9O1xuXG4gIHByb2plY3Rpb24ucHJlY2lzaW9uID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHByb2plY3RSZXNhbXBsZSA9IHJlc2FtcGxlKHByb2plY3RUcmFuc2Zvcm0sIGRlbHRhMiA9IF8gKiBfKSwgcmVzZXQoKSkgOiBzcXJ0KGRlbHRhMik7XG4gIH07XG5cbiAgcHJvamVjdGlvbi5maXRFeHRlbnQgPSBmdW5jdGlvbihleHRlbnQsIG9iamVjdCkge1xuICAgIHJldHVybiBmaXRFeHRlbnQocHJvamVjdGlvbiwgZXh0ZW50LCBvYmplY3QpO1xuICB9O1xuXG4gIHByb2plY3Rpb24uZml0U2l6ZSA9IGZ1bmN0aW9uKHNpemUsIG9iamVjdCkge1xuICAgIHJldHVybiBmaXRTaXplKHByb2plY3Rpb24sIHNpemUsIG9iamVjdCk7XG4gIH07XG5cbiAgZnVuY3Rpb24gcmVjZW50ZXIoKSB7XG4gICAgcHJvamVjdFJvdGF0ZSA9IGNvbXBvc2Uocm90YXRlID0gcm90YXRlUmFkaWFucyhkZWx0YUxhbWJkYSwgZGVsdGFQaGksIGRlbHRhR2FtbWEpLCBwcm9qZWN0KTtcbiAgICB2YXIgY2VudGVyID0gcHJvamVjdChsYW1iZGEsIHBoaSk7XG4gICAgZHggPSB4IC0gY2VudGVyWzBdICogaztcbiAgICBkeSA9IHkgKyBjZW50ZXJbMV0gKiBrO1xuICAgIHJldHVybiByZXNldCgpO1xuICB9XG5cbiAgZnVuY3Rpb24gcmVzZXQoKSB7XG4gICAgY2FjaGUgPSBjYWNoZVN0cmVhbSA9IG51bGw7XG4gICAgcmV0dXJuIHByb2plY3Rpb247XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgcHJvamVjdCA9IHByb2plY3RBdC5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIHByb2plY3Rpb24uaW52ZXJ0ID0gcHJvamVjdC5pbnZlcnQgJiYgaW52ZXJ0O1xuICAgIHJldHVybiByZWNlbnRlcigpO1xuICB9O1xufVxuXG5mdW5jdGlvbiBjb25pY1Byb2plY3Rpb24ocHJvamVjdEF0KSB7XG4gIHZhciBwaGkwID0gMCxcbiAgICAgIHBoaTEgPSBwaSAvIDMsXG4gICAgICBtID0gcHJvamVjdGlvbk11dGF0b3IocHJvamVjdEF0KSxcbiAgICAgIHAgPSBtKHBoaTAsIHBoaTEpO1xuXG4gIHAucGFyYWxsZWxzID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gbShwaGkwID0gX1swXSAqIHJhZGlhbnMsIHBoaTEgPSBfWzFdICogcmFkaWFucykgOiBbcGhpMCAqIGRlZ3JlZXMsIHBoaTEgKiBkZWdyZWVzXTtcbiAgfTtcblxuICByZXR1cm4gcDtcbn1cblxuZnVuY3Rpb24gY3lsaW5kcmljYWxFcXVhbEFyZWFSYXcocGhpMCkge1xuICB2YXIgY29zUGhpMCA9IGNvcyhwaGkwKTtcblxuICBmdW5jdGlvbiBmb3J3YXJkKGxhbWJkYSwgcGhpKSB7XG4gICAgcmV0dXJuIFtsYW1iZGEgKiBjb3NQaGkwLCBzaW4ocGhpKSAvIGNvc1BoaTBdO1xuICB9XG5cbiAgZm9yd2FyZC5pbnZlcnQgPSBmdW5jdGlvbih4LCB5KSB7XG4gICAgcmV0dXJuIFt4IC8gY29zUGhpMCwgYXNpbih5ICogY29zUGhpMCldO1xuICB9O1xuXG4gIHJldHVybiBmb3J3YXJkO1xufVxuXG5mdW5jdGlvbiBjb25pY0VxdWFsQXJlYVJhdyh5MCwgeTEpIHtcbiAgdmFyIHN5MCA9IHNpbih5MCksIG4gPSAoc3kwICsgc2luKHkxKSkgLyAyO1xuXG4gIC8vIEFyZSB0aGUgcGFyYWxsZWxzIHN5bW1ldHJpY2FsIGFyb3VuZCB0aGUgRXF1YXRvcj9cbiAgaWYgKGFicyhuKSA8IGVwc2lsb24pIHJldHVybiBjeWxpbmRyaWNhbEVxdWFsQXJlYVJhdyh5MCk7XG5cbiAgdmFyIGMgPSAxICsgc3kwICogKDIgKiBuIC0gc3kwKSwgcjAgPSBzcXJ0KGMpIC8gbjtcblxuICBmdW5jdGlvbiBwcm9qZWN0KHgsIHkpIHtcbiAgICB2YXIgciA9IHNxcnQoYyAtIDIgKiBuICogc2luKHkpKSAvIG47XG4gICAgcmV0dXJuIFtyICogc2luKHggKj0gbiksIHIwIC0gciAqIGNvcyh4KV07XG4gIH1cblxuICBwcm9qZWN0LmludmVydCA9IGZ1bmN0aW9uKHgsIHkpIHtcbiAgICB2YXIgcjB5ID0gcjAgLSB5O1xuICAgIHJldHVybiBbYXRhbjIoeCwgYWJzKHIweSkpIC8gbiAqIHNpZ24ocjB5KSwgYXNpbigoYyAtICh4ICogeCArIHIweSAqIHIweSkgKiBuICogbikgLyAoMiAqIG4pKV07XG4gIH07XG5cbiAgcmV0dXJuIHByb2plY3Q7XG59XG5cbnZhciBjb25pY0VxdWFsQXJlYSA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gY29uaWNQcm9qZWN0aW9uKGNvbmljRXF1YWxBcmVhUmF3KVxuICAgICAgLnNjYWxlKDE1NS40MjQpXG4gICAgICAuY2VudGVyKFswLCAzMy42NDQyXSk7XG59O1xuXG52YXIgYWxiZXJzID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiBjb25pY0VxdWFsQXJlYSgpXG4gICAgICAucGFyYWxsZWxzKFsyOS41LCA0NS41XSlcbiAgICAgIC5zY2FsZSgxMDcwKVxuICAgICAgLnRyYW5zbGF0ZShbNDgwLCAyNTBdKVxuICAgICAgLnJvdGF0ZShbOTYsIDBdKVxuICAgICAgLmNlbnRlcihbLTAuNiwgMzguN10pO1xufTtcblxuLy8gVGhlIHByb2plY3Rpb25zIG11c3QgaGF2ZSBtdXR1YWxseSBleGNsdXNpdmUgY2xpcCByZWdpb25zIG9uIHRoZSBzcGhlcmUsXG4vLyBhcyB0aGlzIHdpbGwgYXZvaWQgZW1pdHRpbmcgaW50ZXJsZWF2aW5nIGxpbmVzIGFuZCBwb2x5Z29ucy5cbmZ1bmN0aW9uIG11bHRpcGxleChzdHJlYW1zKSB7XG4gIHZhciBuID0gc3RyZWFtcy5sZW5ndGg7XG4gIHJldHVybiB7XG4gICAgcG9pbnQ6IGZ1bmN0aW9uKHgsIHkpIHsgdmFyIGkgPSAtMTsgd2hpbGUgKCsraSA8IG4pIHN0cmVhbXNbaV0ucG9pbnQoeCwgeSk7IH0sXG4gICAgc3BoZXJlOiBmdW5jdGlvbigpIHsgdmFyIGkgPSAtMTsgd2hpbGUgKCsraSA8IG4pIHN0cmVhbXNbaV0uc3BoZXJlKCk7IH0sXG4gICAgbGluZVN0YXJ0OiBmdW5jdGlvbigpIHsgdmFyIGkgPSAtMTsgd2hpbGUgKCsraSA8IG4pIHN0cmVhbXNbaV0ubGluZVN0YXJ0KCk7IH0sXG4gICAgbGluZUVuZDogZnVuY3Rpb24oKSB7IHZhciBpID0gLTE7IHdoaWxlICgrK2kgPCBuKSBzdHJlYW1zW2ldLmxpbmVFbmQoKTsgfSxcbiAgICBwb2x5Z29uU3RhcnQ6IGZ1bmN0aW9uKCkgeyB2YXIgaSA9IC0xOyB3aGlsZSAoKytpIDwgbikgc3RyZWFtc1tpXS5wb2x5Z29uU3RhcnQoKTsgfSxcbiAgICBwb2x5Z29uRW5kOiBmdW5jdGlvbigpIHsgdmFyIGkgPSAtMTsgd2hpbGUgKCsraSA8IG4pIHN0cmVhbXNbaV0ucG9seWdvbkVuZCgpOyB9XG4gIH07XG59XG5cbi8vIEEgY29tcG9zaXRlIHByb2plY3Rpb24gZm9yIHRoZSBVbml0ZWQgU3RhdGVzLCBjb25maWd1cmVkIGJ5IGRlZmF1bHQgZm9yXG4vLyA5NjDDlzUwMC4gVGhlIHByb2plY3Rpb24gYWxzbyB3b3JrcyBxdWl0ZSB3ZWxsIGF0IDk2MMOXNjAwIGlmIHlvdSBjaGFuZ2UgdGhlXG4vLyBzY2FsZSB0byAxMjg1IGFuZCBhZGp1c3QgdGhlIHRyYW5zbGF0ZSBhY2NvcmRpbmdseS4gVGhlIHNldCBvZiBzdGFuZGFyZFxuLy8gcGFyYWxsZWxzIGZvciBlYWNoIHJlZ2lvbiBjb21lcyBmcm9tIFVTR1MsIHdoaWNoIGlzIHB1Ymxpc2hlZCBoZXJlOlxuLy8gaHR0cDovL2Vnc2MudXNncy5nb3YvaXNiL3B1YnMvTWFwUHJvamVjdGlvbnMvcHJvamVjdGlvbnMuaHRtbCNhbGJlcnNcbnZhciBhbGJlcnNVc2EgPSBmdW5jdGlvbigpIHtcbiAgdmFyIGNhY2hlLFxuICAgICAgY2FjaGVTdHJlYW0sXG4gICAgICBsb3dlcjQ4ID0gYWxiZXJzKCksIGxvd2VyNDhQb2ludCxcbiAgICAgIGFsYXNrYSA9IGNvbmljRXF1YWxBcmVhKCkucm90YXRlKFsxNTQsIDBdKS5jZW50ZXIoWy0yLCA1OC41XSkucGFyYWxsZWxzKFs1NSwgNjVdKSwgYWxhc2thUG9pbnQsIC8vIEVQU0c6MzMzOFxuICAgICAgaGF3YWlpID0gY29uaWNFcXVhbEFyZWEoKS5yb3RhdGUoWzE1NywgMF0pLmNlbnRlcihbLTMsIDE5LjldKS5wYXJhbGxlbHMoWzgsIDE4XSksIGhhd2FpaVBvaW50LCAvLyBFU1JJOjEwMjAwN1xuICAgICAgcG9pbnQsIHBvaW50U3RyZWFtID0ge3BvaW50OiBmdW5jdGlvbih4LCB5KSB7IHBvaW50ID0gW3gsIHldOyB9fTtcblxuICBmdW5jdGlvbiBhbGJlcnNVc2EoY29vcmRpbmF0ZXMpIHtcbiAgICB2YXIgeCA9IGNvb3JkaW5hdGVzWzBdLCB5ID0gY29vcmRpbmF0ZXNbMV07XG4gICAgcmV0dXJuIHBvaW50ID0gbnVsbCxcbiAgICAgICAgKGxvd2VyNDhQb2ludC5wb2ludCh4LCB5KSwgcG9pbnQpXG4gICAgICAgIHx8IChhbGFza2FQb2ludC5wb2ludCh4LCB5KSwgcG9pbnQpXG4gICAgICAgIHx8IChoYXdhaWlQb2ludC5wb2ludCh4LCB5KSwgcG9pbnQpO1xuICB9XG5cbiAgYWxiZXJzVXNhLmludmVydCA9IGZ1bmN0aW9uKGNvb3JkaW5hdGVzKSB7XG4gICAgdmFyIGsgPSBsb3dlcjQ4LnNjYWxlKCksXG4gICAgICAgIHQgPSBsb3dlcjQ4LnRyYW5zbGF0ZSgpLFxuICAgICAgICB4ID0gKGNvb3JkaW5hdGVzWzBdIC0gdFswXSkgLyBrLFxuICAgICAgICB5ID0gKGNvb3JkaW5hdGVzWzFdIC0gdFsxXSkgLyBrO1xuICAgIHJldHVybiAoeSA+PSAwLjEyMCAmJiB5IDwgMC4yMzQgJiYgeCA+PSAtMC40MjUgJiYgeCA8IC0wLjIxNCA/IGFsYXNrYVxuICAgICAgICA6IHkgPj0gMC4xNjYgJiYgeSA8IDAuMjM0ICYmIHggPj0gLTAuMjE0ICYmIHggPCAtMC4xMTUgPyBoYXdhaWlcbiAgICAgICAgOiBsb3dlcjQ4KS5pbnZlcnQoY29vcmRpbmF0ZXMpO1xuICB9O1xuXG4gIGFsYmVyc1VzYS5zdHJlYW0gPSBmdW5jdGlvbihzdHJlYW0pIHtcbiAgICByZXR1cm4gY2FjaGUgJiYgY2FjaGVTdHJlYW0gPT09IHN0cmVhbSA/IGNhY2hlIDogY2FjaGUgPSBtdWx0aXBsZXgoW2xvd2VyNDguc3RyZWFtKGNhY2hlU3RyZWFtID0gc3RyZWFtKSwgYWxhc2thLnN0cmVhbShzdHJlYW0pLCBoYXdhaWkuc3RyZWFtKHN0cmVhbSldKTtcbiAgfTtcblxuICBhbGJlcnNVc2EucHJlY2lzaW9uID0gZnVuY3Rpb24oXykge1xuICAgIGlmICghYXJndW1lbnRzLmxlbmd0aCkgcmV0dXJuIGxvd2VyNDgucHJlY2lzaW9uKCk7XG4gICAgbG93ZXI0OC5wcmVjaXNpb24oXyksIGFsYXNrYS5wcmVjaXNpb24oXyksIGhhd2FpaS5wcmVjaXNpb24oXyk7XG4gICAgcmV0dXJuIHJlc2V0KCk7XG4gIH07XG5cbiAgYWxiZXJzVXNhLnNjYWxlID0gZnVuY3Rpb24oXykge1xuICAgIGlmICghYXJndW1lbnRzLmxlbmd0aCkgcmV0dXJuIGxvd2VyNDguc2NhbGUoKTtcbiAgICBsb3dlcjQ4LnNjYWxlKF8pLCBhbGFza2Euc2NhbGUoXyAqIDAuMzUpLCBoYXdhaWkuc2NhbGUoXyk7XG4gICAgcmV0dXJuIGFsYmVyc1VzYS50cmFuc2xhdGUobG93ZXI0OC50cmFuc2xhdGUoKSk7XG4gIH07XG5cbiAgYWxiZXJzVXNhLnRyYW5zbGF0ZSA9IGZ1bmN0aW9uKF8pIHtcbiAgICBpZiAoIWFyZ3VtZW50cy5sZW5ndGgpIHJldHVybiBsb3dlcjQ4LnRyYW5zbGF0ZSgpO1xuICAgIHZhciBrID0gbG93ZXI0OC5zY2FsZSgpLCB4ID0gK19bMF0sIHkgPSArX1sxXTtcblxuICAgIGxvd2VyNDhQb2ludCA9IGxvd2VyNDhcbiAgICAgICAgLnRyYW5zbGF0ZShfKVxuICAgICAgICAuY2xpcEV4dGVudChbW3ggLSAwLjQ1NSAqIGssIHkgLSAwLjIzOCAqIGtdLCBbeCArIDAuNDU1ICogaywgeSArIDAuMjM4ICoga11dKVxuICAgICAgICAuc3RyZWFtKHBvaW50U3RyZWFtKTtcblxuICAgIGFsYXNrYVBvaW50ID0gYWxhc2thXG4gICAgICAgIC50cmFuc2xhdGUoW3ggLSAwLjMwNyAqIGssIHkgKyAwLjIwMSAqIGtdKVxuICAgICAgICAuY2xpcEV4dGVudChbW3ggLSAwLjQyNSAqIGsgKyBlcHNpbG9uLCB5ICsgMC4xMjAgKiBrICsgZXBzaWxvbl0sIFt4IC0gMC4yMTQgKiBrIC0gZXBzaWxvbiwgeSArIDAuMjM0ICogayAtIGVwc2lsb25dXSlcbiAgICAgICAgLnN0cmVhbShwb2ludFN0cmVhbSk7XG5cbiAgICBoYXdhaWlQb2ludCA9IGhhd2FpaVxuICAgICAgICAudHJhbnNsYXRlKFt4IC0gMC4yMDUgKiBrLCB5ICsgMC4yMTIgKiBrXSlcbiAgICAgICAgLmNsaXBFeHRlbnQoW1t4IC0gMC4yMTQgKiBrICsgZXBzaWxvbiwgeSArIDAuMTY2ICogayArIGVwc2lsb25dLCBbeCAtIDAuMTE1ICogayAtIGVwc2lsb24sIHkgKyAwLjIzNCAqIGsgLSBlcHNpbG9uXV0pXG4gICAgICAgIC5zdHJlYW0ocG9pbnRTdHJlYW0pO1xuXG4gICAgcmV0dXJuIHJlc2V0KCk7XG4gIH07XG5cbiAgYWxiZXJzVXNhLmZpdEV4dGVudCA9IGZ1bmN0aW9uKGV4dGVudCwgb2JqZWN0KSB7XG4gICAgcmV0dXJuIGZpdEV4dGVudChhbGJlcnNVc2EsIGV4dGVudCwgb2JqZWN0KTtcbiAgfTtcblxuICBhbGJlcnNVc2EuZml0U2l6ZSA9IGZ1bmN0aW9uKHNpemUsIG9iamVjdCkge1xuICAgIHJldHVybiBmaXRTaXplKGFsYmVyc1VzYSwgc2l6ZSwgb2JqZWN0KTtcbiAgfTtcblxuICBmdW5jdGlvbiByZXNldCgpIHtcbiAgICBjYWNoZSA9IGNhY2hlU3RyZWFtID0gbnVsbDtcbiAgICByZXR1cm4gYWxiZXJzVXNhO1xuICB9XG5cbiAgcmV0dXJuIGFsYmVyc1VzYS5zY2FsZSgxMDcwKTtcbn07XG5cbmZ1bmN0aW9uIGF6aW11dGhhbFJhdyhzY2FsZSkge1xuICByZXR1cm4gZnVuY3Rpb24oeCwgeSkge1xuICAgIHZhciBjeCA9IGNvcyh4KSxcbiAgICAgICAgY3kgPSBjb3MoeSksXG4gICAgICAgIGsgPSBzY2FsZShjeCAqIGN5KTtcbiAgICByZXR1cm4gW1xuICAgICAgayAqIGN5ICogc2luKHgpLFxuICAgICAgayAqIHNpbih5KVxuICAgIF07XG4gIH1cbn1cblxuZnVuY3Rpb24gYXppbXV0aGFsSW52ZXJ0KGFuZ2xlKSB7XG4gIHJldHVybiBmdW5jdGlvbih4LCB5KSB7XG4gICAgdmFyIHogPSBzcXJ0KHggKiB4ICsgeSAqIHkpLFxuICAgICAgICBjID0gYW5nbGUoeiksXG4gICAgICAgIHNjID0gc2luKGMpLFxuICAgICAgICBjYyA9IGNvcyhjKTtcbiAgICByZXR1cm4gW1xuICAgICAgYXRhbjIoeCAqIHNjLCB6ICogY2MpLFxuICAgICAgYXNpbih6ICYmIHkgKiBzYyAvIHopXG4gICAgXTtcbiAgfVxufVxuXG52YXIgYXppbXV0aGFsRXF1YWxBcmVhUmF3ID0gYXppbXV0aGFsUmF3KGZ1bmN0aW9uKGN4Y3kpIHtcbiAgcmV0dXJuIHNxcnQoMiAvICgxICsgY3hjeSkpO1xufSk7XG5cbmF6aW11dGhhbEVxdWFsQXJlYVJhdy5pbnZlcnQgPSBhemltdXRoYWxJbnZlcnQoZnVuY3Rpb24oeikge1xuICByZXR1cm4gMiAqIGFzaW4oeiAvIDIpO1xufSk7XG5cbnZhciBhemltdXRoYWxFcXVhbEFyZWEgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHByb2plY3Rpb24oYXppbXV0aGFsRXF1YWxBcmVhUmF3KVxuICAgICAgLnNjYWxlKDEyNC43NSlcbiAgICAgIC5jbGlwQW5nbGUoMTgwIC0gMWUtMyk7XG59O1xuXG52YXIgYXppbXV0aGFsRXF1aWRpc3RhbnRSYXcgPSBhemltdXRoYWxSYXcoZnVuY3Rpb24oYykge1xuICByZXR1cm4gKGMgPSBhY29zKGMpKSAmJiBjIC8gc2luKGMpO1xufSk7XG5cbmF6aW11dGhhbEVxdWlkaXN0YW50UmF3LmludmVydCA9IGF6aW11dGhhbEludmVydChmdW5jdGlvbih6KSB7XG4gIHJldHVybiB6O1xufSk7XG5cbnZhciBhemltdXRoYWxFcXVpZGlzdGFudCA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gcHJvamVjdGlvbihhemltdXRoYWxFcXVpZGlzdGFudFJhdylcbiAgICAgIC5zY2FsZSg3OS40MTg4KVxuICAgICAgLmNsaXBBbmdsZSgxODAgLSAxZS0zKTtcbn07XG5cbmZ1bmN0aW9uIG1lcmNhdG9yUmF3KGxhbWJkYSwgcGhpKSB7XG4gIHJldHVybiBbbGFtYmRhLCBsb2codGFuKChoYWxmUGkgKyBwaGkpIC8gMikpXTtcbn1cblxubWVyY2F0b3JSYXcuaW52ZXJ0ID0gZnVuY3Rpb24oeCwgeSkge1xuICByZXR1cm4gW3gsIDIgKiBhdGFuKGV4cCh5KSkgLSBoYWxmUGldO1xufTtcblxudmFyIG1lcmNhdG9yID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiBtZXJjYXRvclByb2plY3Rpb24obWVyY2F0b3JSYXcpXG4gICAgICAuc2NhbGUoOTYxIC8gdGF1KTtcbn07XG5cbmZ1bmN0aW9uIG1lcmNhdG9yUHJvamVjdGlvbihwcm9qZWN0KSB7XG4gIHZhciBtID0gcHJvamVjdGlvbihwcm9qZWN0KSxcbiAgICAgIGNlbnRlciA9IG0uY2VudGVyLFxuICAgICAgc2NhbGUgPSBtLnNjYWxlLFxuICAgICAgdHJhbnNsYXRlID0gbS50cmFuc2xhdGUsXG4gICAgICBjbGlwRXh0ZW50ID0gbS5jbGlwRXh0ZW50LFxuICAgICAgeDAgPSBudWxsLCB5MCwgeDEsIHkxOyAvLyBjbGlwIGV4dGVudFxuXG4gIG0uc2NhbGUgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAoc2NhbGUoXyksIHJlY2xpcCgpKSA6IHNjYWxlKCk7XG4gIH07XG5cbiAgbS50cmFuc2xhdGUgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAodHJhbnNsYXRlKF8pLCByZWNsaXAoKSkgOiB0cmFuc2xhdGUoKTtcbiAgfTtcblxuICBtLmNlbnRlciA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChjZW50ZXIoXyksIHJlY2xpcCgpKSA6IGNlbnRlcigpO1xuICB9O1xuXG4gIG0uY2xpcEV4dGVudCA9IGZ1bmN0aW9uKF8pIHtcbiAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICgoXyA9PSBudWxsID8geDAgPSB5MCA9IHgxID0geTEgPSBudWxsIDogKHgwID0gK19bMF1bMF0sIHkwID0gK19bMF1bMV0sIHgxID0gK19bMV1bMF0sIHkxID0gK19bMV1bMV0pKSwgcmVjbGlwKCkpIDogeDAgPT0gbnVsbCA/IG51bGwgOiBbW3gwLCB5MF0sIFt4MSwgeTFdXTtcbiAgfTtcblxuICBmdW5jdGlvbiByZWNsaXAoKSB7XG4gICAgdmFyIGsgPSBwaSAqIHNjYWxlKCksXG4gICAgICAgIHQgPSBtKHJvdGF0aW9uKG0ucm90YXRlKCkpLmludmVydChbMCwgMF0pKTtcbiAgICByZXR1cm4gY2xpcEV4dGVudCh4MCA9PSBudWxsXG4gICAgICAgID8gW1t0WzBdIC0gaywgdFsxXSAtIGtdLCBbdFswXSArIGssIHRbMV0gKyBrXV0gOiBwcm9qZWN0ID09PSBtZXJjYXRvclJhd1xuICAgICAgICA/IFtbTWF0aC5tYXgodFswXSAtIGssIHgwKSwgeTBdLCBbTWF0aC5taW4odFswXSArIGssIHgxKSwgeTFdXVxuICAgICAgICA6IFtbeDAsIE1hdGgubWF4KHRbMV0gLSBrLCB5MCldLCBbeDEsIE1hdGgubWluKHRbMV0gKyBrLCB5MSldXSk7XG4gIH1cblxuICByZXR1cm4gcmVjbGlwKCk7XG59XG5cbmZ1bmN0aW9uIHRhbnkoeSkge1xuICByZXR1cm4gdGFuKChoYWxmUGkgKyB5KSAvIDIpO1xufVxuXG5mdW5jdGlvbiBjb25pY0NvbmZvcm1hbFJhdyh5MCwgeTEpIHtcbiAgdmFyIGN5MCA9IGNvcyh5MCksXG4gICAgICBuID0geTAgPT09IHkxID8gc2luKHkwKSA6IGxvZyhjeTAgLyBjb3MoeTEpKSAvIGxvZyh0YW55KHkxKSAvIHRhbnkoeTApKSxcbiAgICAgIGYgPSBjeTAgKiBwb3codGFueSh5MCksIG4pIC8gbjtcblxuICBpZiAoIW4pIHJldHVybiBtZXJjYXRvclJhdztcblxuICBmdW5jdGlvbiBwcm9qZWN0KHgsIHkpIHtcbiAgICBpZiAoZiA+IDApIHsgaWYgKHkgPCAtaGFsZlBpICsgZXBzaWxvbikgeSA9IC1oYWxmUGkgKyBlcHNpbG9uOyB9XG4gICAgZWxzZSB7IGlmICh5ID4gaGFsZlBpIC0gZXBzaWxvbikgeSA9IGhhbGZQaSAtIGVwc2lsb247IH1cbiAgICB2YXIgciA9IGYgLyBwb3codGFueSh5KSwgbik7XG4gICAgcmV0dXJuIFtyICogc2luKG4gKiB4KSwgZiAtIHIgKiBjb3MobiAqIHgpXTtcbiAgfVxuXG4gIHByb2plY3QuaW52ZXJ0ID0gZnVuY3Rpb24oeCwgeSkge1xuICAgIHZhciBmeSA9IGYgLSB5LCByID0gc2lnbihuKSAqIHNxcnQoeCAqIHggKyBmeSAqIGZ5KTtcbiAgICByZXR1cm4gW2F0YW4yKHgsIGFicyhmeSkpIC8gbiAqIHNpZ24oZnkpLCAyICogYXRhbihwb3coZiAvIHIsIDEgLyBuKSkgLSBoYWxmUGldO1xuICB9O1xuXG4gIHJldHVybiBwcm9qZWN0O1xufVxuXG52YXIgY29uaWNDb25mb3JtYWwgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIGNvbmljUHJvamVjdGlvbihjb25pY0NvbmZvcm1hbFJhdylcbiAgICAgIC5zY2FsZSgxMDkuNSlcbiAgICAgIC5wYXJhbGxlbHMoWzMwLCAzMF0pO1xufTtcblxuZnVuY3Rpb24gZXF1aXJlY3Rhbmd1bGFyUmF3KGxhbWJkYSwgcGhpKSB7XG4gIHJldHVybiBbbGFtYmRhLCBwaGldO1xufVxuXG5lcXVpcmVjdGFuZ3VsYXJSYXcuaW52ZXJ0ID0gZXF1aXJlY3Rhbmd1bGFyUmF3O1xuXG52YXIgZXF1aXJlY3Rhbmd1bGFyID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiBwcm9qZWN0aW9uKGVxdWlyZWN0YW5ndWxhclJhdylcbiAgICAgIC5zY2FsZSgxNTIuNjMpO1xufTtcblxuZnVuY3Rpb24gY29uaWNFcXVpZGlzdGFudFJhdyh5MCwgeTEpIHtcbiAgdmFyIGN5MCA9IGNvcyh5MCksXG4gICAgICBuID0geTAgPT09IHkxID8gc2luKHkwKSA6IChjeTAgLSBjb3MoeTEpKSAvICh5MSAtIHkwKSxcbiAgICAgIGcgPSBjeTAgLyBuICsgeTA7XG5cbiAgaWYgKGFicyhuKSA8IGVwc2lsb24pIHJldHVybiBlcXVpcmVjdGFuZ3VsYXJSYXc7XG5cbiAgZnVuY3Rpb24gcHJvamVjdCh4LCB5KSB7XG4gICAgdmFyIGd5ID0gZyAtIHksIG54ID0gbiAqIHg7XG4gICAgcmV0dXJuIFtneSAqIHNpbihueCksIGcgLSBneSAqIGNvcyhueCldO1xuICB9XG5cbiAgcHJvamVjdC5pbnZlcnQgPSBmdW5jdGlvbih4LCB5KSB7XG4gICAgdmFyIGd5ID0gZyAtIHk7XG4gICAgcmV0dXJuIFthdGFuMih4LCBhYnMoZ3kpKSAvIG4gKiBzaWduKGd5KSwgZyAtIHNpZ24obikgKiBzcXJ0KHggKiB4ICsgZ3kgKiBneSldO1xuICB9O1xuXG4gIHJldHVybiBwcm9qZWN0O1xufVxuXG52YXIgY29uaWNFcXVpZGlzdGFudCA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gY29uaWNQcm9qZWN0aW9uKGNvbmljRXF1aWRpc3RhbnRSYXcpXG4gICAgICAuc2NhbGUoMTMxLjE1NClcbiAgICAgIC5jZW50ZXIoWzAsIDEzLjkzODldKTtcbn07XG5cbmZ1bmN0aW9uIGdub21vbmljUmF3KHgsIHkpIHtcbiAgdmFyIGN5ID0gY29zKHkpLCBrID0gY29zKHgpICogY3k7XG4gIHJldHVybiBbY3kgKiBzaW4oeCkgLyBrLCBzaW4oeSkgLyBrXTtcbn1cblxuZ25vbW9uaWNSYXcuaW52ZXJ0ID0gYXppbXV0aGFsSW52ZXJ0KGF0YW4pO1xuXG52YXIgZ25vbW9uaWMgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHByb2plY3Rpb24oZ25vbW9uaWNSYXcpXG4gICAgICAuc2NhbGUoMTQ0LjA0OSlcbiAgICAgIC5jbGlwQW5nbGUoNjApO1xufTtcblxuZnVuY3Rpb24gc2NhbGVUcmFuc2xhdGUoa3gsIGt5LCB0eCwgdHkpIHtcbiAgcmV0dXJuIGt4ID09PSAxICYmIGt5ID09PSAxICYmIHR4ID09PSAwICYmIHR5ID09PSAwID8gaWRlbnRpdHkgOiB0cmFuc2Zvcm1lcih7XG4gICAgcG9pbnQ6IGZ1bmN0aW9uKHgsIHkpIHtcbiAgICAgIHRoaXMuc3RyZWFtLnBvaW50KHggKiBreCArIHR4LCB5ICoga3kgKyB0eSk7XG4gICAgfVxuICB9KTtcbn1cblxudmFyIGlkZW50aXR5JDEgPSBmdW5jdGlvbigpIHtcbiAgdmFyIGsgPSAxLCB0eCA9IDAsIHR5ID0gMCwgc3ggPSAxLCBzeSA9IDEsIHRyYW5zZm9ybSA9IGlkZW50aXR5LCAvLyBzY2FsZSwgdHJhbnNsYXRlIGFuZCByZWZsZWN0XG4gICAgICB4MCA9IG51bGwsIHkwLCB4MSwgeTEsIGNsaXAgPSBpZGVudGl0eSwgLy8gY2xpcCBleHRlbnRcbiAgICAgIGNhY2hlLFxuICAgICAgY2FjaGVTdHJlYW0sXG4gICAgICBwcm9qZWN0aW9uO1xuXG4gIGZ1bmN0aW9uIHJlc2V0KCkge1xuICAgIGNhY2hlID0gY2FjaGVTdHJlYW0gPSBudWxsO1xuICAgIHJldHVybiBwcm9qZWN0aW9uO1xuICB9XG5cbiAgcmV0dXJuIHByb2plY3Rpb24gPSB7XG4gICAgc3RyZWFtOiBmdW5jdGlvbihzdHJlYW0pIHtcbiAgICAgIHJldHVybiBjYWNoZSAmJiBjYWNoZVN0cmVhbSA9PT0gc3RyZWFtID8gY2FjaGUgOiBjYWNoZSA9IHRyYW5zZm9ybShjbGlwKGNhY2hlU3RyZWFtID0gc3RyZWFtKSk7XG4gICAgfSxcbiAgICBjbGlwRXh0ZW50OiBmdW5jdGlvbihfKSB7XG4gICAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/IChjbGlwID0gXyA9PSBudWxsID8gKHgwID0geTAgPSB4MSA9IHkxID0gbnVsbCwgaWRlbnRpdHkpIDogY2xpcEV4dGVudCh4MCA9ICtfWzBdWzBdLCB5MCA9ICtfWzBdWzFdLCB4MSA9ICtfWzFdWzBdLCB5MSA9ICtfWzFdWzFdKSwgcmVzZXQoKSkgOiB4MCA9PSBudWxsID8gbnVsbCA6IFtbeDAsIHkwXSwgW3gxLCB5MV1dO1xuICAgIH0sXG4gICAgc2NhbGU6IGZ1bmN0aW9uKF8pIHtcbiAgICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHRyYW5zZm9ybSA9IHNjYWxlVHJhbnNsYXRlKChrID0gK18pICogc3gsIGsgKiBzeSwgdHgsIHR5KSwgcmVzZXQoKSkgOiBrO1xuICAgIH0sXG4gICAgdHJhbnNsYXRlOiBmdW5jdGlvbihfKSB7XG4gICAgICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA/ICh0cmFuc2Zvcm0gPSBzY2FsZVRyYW5zbGF0ZShrICogc3gsIGsgKiBzeSwgdHggPSArX1swXSwgdHkgPSArX1sxXSksIHJlc2V0KCkpIDogW3R4LCB0eV07XG4gICAgfSxcbiAgICByZWZsZWN0WDogZnVuY3Rpb24oXykge1xuICAgICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyAodHJhbnNmb3JtID0gc2NhbGVUcmFuc2xhdGUoayAqIChzeCA9IF8gPyAtMSA6IDEpLCBrICogc3ksIHR4LCB0eSksIHJlc2V0KCkpIDogc3ggPCAwO1xuICAgIH0sXG4gICAgcmVmbGVjdFk6IGZ1bmN0aW9uKF8pIHtcbiAgICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gKHRyYW5zZm9ybSA9IHNjYWxlVHJhbnNsYXRlKGsgKiBzeCwgayAqIChzeSA9IF8gPyAtMSA6IDEpLCB0eCwgdHkpLCByZXNldCgpKSA6IHN5IDwgMDtcbiAgICB9LFxuICAgIGZpdEV4dGVudDogZnVuY3Rpb24oZXh0ZW50LCBvYmplY3QpIHtcbiAgICAgIHJldHVybiBmaXRFeHRlbnQocHJvamVjdGlvbiwgZXh0ZW50LCBvYmplY3QpO1xuICAgIH0sXG4gICAgZml0U2l6ZTogZnVuY3Rpb24oc2l6ZSwgb2JqZWN0KSB7XG4gICAgICByZXR1cm4gZml0U2l6ZShwcm9qZWN0aW9uLCBzaXplLCBvYmplY3QpO1xuICAgIH1cbiAgfTtcbn07XG5cbmZ1bmN0aW9uIG9ydGhvZ3JhcGhpY1Jhdyh4LCB5KSB7XG4gIHJldHVybiBbY29zKHkpICogc2luKHgpLCBzaW4oeSldO1xufVxuXG5vcnRob2dyYXBoaWNSYXcuaW52ZXJ0ID0gYXppbXV0aGFsSW52ZXJ0KGFzaW4pO1xuXG52YXIgb3J0aG9ncmFwaGljID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiBwcm9qZWN0aW9uKG9ydGhvZ3JhcGhpY1JhdylcbiAgICAgIC5zY2FsZSgyNDkuNSlcbiAgICAgIC5jbGlwQW5nbGUoOTAgKyBlcHNpbG9uKTtcbn07XG5cbmZ1bmN0aW9uIHN0ZXJlb2dyYXBoaWNSYXcoeCwgeSkge1xuICB2YXIgY3kgPSBjb3MoeSksIGsgPSAxICsgY29zKHgpICogY3k7XG4gIHJldHVybiBbY3kgKiBzaW4oeCkgLyBrLCBzaW4oeSkgLyBrXTtcbn1cblxuc3RlcmVvZ3JhcGhpY1Jhdy5pbnZlcnQgPSBhemltdXRoYWxJbnZlcnQoZnVuY3Rpb24oeikge1xuICByZXR1cm4gMiAqIGF0YW4oeik7XG59KTtcblxudmFyIHN0ZXJlb2dyYXBoaWMgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHByb2plY3Rpb24oc3RlcmVvZ3JhcGhpY1JhdylcbiAgICAgIC5zY2FsZSgyNTApXG4gICAgICAuY2xpcEFuZ2xlKDE0Mik7XG59O1xuXG5mdW5jdGlvbiB0cmFuc3ZlcnNlTWVyY2F0b3JSYXcobGFtYmRhLCBwaGkpIHtcbiAgcmV0dXJuIFtsb2codGFuKChoYWxmUGkgKyBwaGkpIC8gMikpLCAtbGFtYmRhXTtcbn1cblxudHJhbnN2ZXJzZU1lcmNhdG9yUmF3LmludmVydCA9IGZ1bmN0aW9uKHgsIHkpIHtcbiAgcmV0dXJuIFsteSwgMiAqIGF0YW4oZXhwKHgpKSAtIGhhbGZQaV07XG59O1xuXG52YXIgdHJhbnN2ZXJzZU1lcmNhdG9yID0gZnVuY3Rpb24oKSB7XG4gIHZhciBtID0gbWVyY2F0b3JQcm9qZWN0aW9uKHRyYW5zdmVyc2VNZXJjYXRvclJhdyksXG4gICAgICBjZW50ZXIgPSBtLmNlbnRlcixcbiAgICAgIHJvdGF0ZSA9IG0ucm90YXRlO1xuXG4gIG0uY2VudGVyID0gZnVuY3Rpb24oXykge1xuICAgIHJldHVybiBhcmd1bWVudHMubGVuZ3RoID8gY2VudGVyKFstX1sxXSwgX1swXV0pIDogKF8gPSBjZW50ZXIoKSwgW19bMV0sIC1fWzBdXSk7XG4gIH07XG5cbiAgbS5yb3RhdGUgPSBmdW5jdGlvbihfKSB7XG4gICAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPyByb3RhdGUoW19bMF0sIF9bMV0sIF8ubGVuZ3RoID4gMiA/IF9bMl0gKyA5MCA6IDkwXSkgOiAoXyA9IHJvdGF0ZSgpLCBbX1swXSwgX1sxXSwgX1syXSAtIDkwXSk7XG4gIH07XG5cbiAgcmV0dXJuIHJvdGF0ZShbMCwgMCwgOTBdKVxuICAgICAgLnNjYWxlKDE1OS4xNTUpO1xufTtcblxuZXhwb3J0cy5nZW9BcmVhID0gYXJlYTtcbmV4cG9ydHMuZ2VvQm91bmRzID0gYm91bmRzO1xuZXhwb3J0cy5nZW9DZW50cm9pZCA9IGNlbnRyb2lkO1xuZXhwb3J0cy5nZW9DaXJjbGUgPSBjaXJjbGU7XG5leHBvcnRzLmdlb0NsaXBFeHRlbnQgPSBleHRlbnQ7XG5leHBvcnRzLmdlb0NvbnRhaW5zID0gY29udGFpbnM7XG5leHBvcnRzLmdlb0Rpc3RhbmNlID0gZGlzdGFuY2U7XG5leHBvcnRzLmdlb0dyYXRpY3VsZSA9IGdyYXRpY3VsZTtcbmV4cG9ydHMuZ2VvR3JhdGljdWxlMTAgPSBncmF0aWN1bGUxMDtcbmV4cG9ydHMuZ2VvSW50ZXJwb2xhdGUgPSBpbnRlcnBvbGF0ZTtcbmV4cG9ydHMuZ2VvTGVuZ3RoID0gbGVuZ3RoO1xuZXhwb3J0cy5nZW9QYXRoID0gaW5kZXg7XG5leHBvcnRzLmdlb0FsYmVycyA9IGFsYmVycztcbmV4cG9ydHMuZ2VvQWxiZXJzVXNhID0gYWxiZXJzVXNhO1xuZXhwb3J0cy5nZW9BemltdXRoYWxFcXVhbEFyZWEgPSBhemltdXRoYWxFcXVhbEFyZWE7XG5leHBvcnRzLmdlb0F6aW11dGhhbEVxdWFsQXJlYVJhdyA9IGF6aW11dGhhbEVxdWFsQXJlYVJhdztcbmV4cG9ydHMuZ2VvQXppbXV0aGFsRXF1aWRpc3RhbnQgPSBhemltdXRoYWxFcXVpZGlzdGFudDtcbmV4cG9ydHMuZ2VvQXppbXV0aGFsRXF1aWRpc3RhbnRSYXcgPSBhemltdXRoYWxFcXVpZGlzdGFudFJhdztcbmV4cG9ydHMuZ2VvQ29uaWNDb25mb3JtYWwgPSBjb25pY0NvbmZvcm1hbDtcbmV4cG9ydHMuZ2VvQ29uaWNDb25mb3JtYWxSYXcgPSBjb25pY0NvbmZvcm1hbFJhdztcbmV4cG9ydHMuZ2VvQ29uaWNFcXVhbEFyZWEgPSBjb25pY0VxdWFsQXJlYTtcbmV4cG9ydHMuZ2VvQ29uaWNFcXVhbEFyZWFSYXcgPSBjb25pY0VxdWFsQXJlYVJhdztcbmV4cG9ydHMuZ2VvQ29uaWNFcXVpZGlzdGFudCA9IGNvbmljRXF1aWRpc3RhbnQ7XG5leHBvcnRzLmdlb0NvbmljRXF1aWRpc3RhbnRSYXcgPSBjb25pY0VxdWlkaXN0YW50UmF3O1xuZXhwb3J0cy5nZW9FcXVpcmVjdGFuZ3VsYXIgPSBlcXVpcmVjdGFuZ3VsYXI7XG5leHBvcnRzLmdlb0VxdWlyZWN0YW5ndWxhclJhdyA9IGVxdWlyZWN0YW5ndWxhclJhdztcbmV4cG9ydHMuZ2VvR25vbW9uaWMgPSBnbm9tb25pYztcbmV4cG9ydHMuZ2VvR25vbW9uaWNSYXcgPSBnbm9tb25pY1JhdztcbmV4cG9ydHMuZ2VvSWRlbnRpdHkgPSBpZGVudGl0eSQxO1xuZXhwb3J0cy5nZW9Qcm9qZWN0aW9uID0gcHJvamVjdGlvbjtcbmV4cG9ydHMuZ2VvUHJvamVjdGlvbk11dGF0b3IgPSBwcm9qZWN0aW9uTXV0YXRvcjtcbmV4cG9ydHMuZ2VvTWVyY2F0b3IgPSBtZXJjYXRvcjtcbmV4cG9ydHMuZ2VvTWVyY2F0b3JSYXcgPSBtZXJjYXRvclJhdztcbmV4cG9ydHMuZ2VvT3J0aG9ncmFwaGljID0gb3J0aG9ncmFwaGljO1xuZXhwb3J0cy5nZW9PcnRob2dyYXBoaWNSYXcgPSBvcnRob2dyYXBoaWNSYXc7XG5leHBvcnRzLmdlb1N0ZXJlb2dyYXBoaWMgPSBzdGVyZW9ncmFwaGljO1xuZXhwb3J0cy5nZW9TdGVyZW9ncmFwaGljUmF3ID0gc3RlcmVvZ3JhcGhpY1JhdztcbmV4cG9ydHMuZ2VvVHJhbnN2ZXJzZU1lcmNhdG9yID0gdHJhbnN2ZXJzZU1lcmNhdG9yO1xuZXhwb3J0cy5nZW9UcmFuc3ZlcnNlTWVyY2F0b3JSYXcgPSB0cmFuc3ZlcnNlTWVyY2F0b3JSYXc7XG5leHBvcnRzLmdlb1JvdGF0aW9uID0gcm90YXRpb247XG5leHBvcnRzLmdlb1N0cmVhbSA9IGdlb1N0cmVhbTtcbmV4cG9ydHMuZ2VvVHJhbnNmb3JtID0gdHJhbnNmb3JtO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuXG59KSkpO1xuIiwiXG4vKipcbiAqIFRoaXMgaXMgdGhlIHdlYiBicm93c2VyIGltcGxlbWVudGF0aW9uIG9mIGBkZWJ1ZygpYC5cbiAqXG4gKiBFeHBvc2UgYGRlYnVnKClgIGFzIHRoZSBtb2R1bGUuXG4gKi9cblxuZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9kZWJ1ZycpO1xuZXhwb3J0cy5sb2cgPSBsb2c7XG5leHBvcnRzLmZvcm1hdEFyZ3MgPSBmb3JtYXRBcmdzO1xuZXhwb3J0cy5zYXZlID0gc2F2ZTtcbmV4cG9ydHMubG9hZCA9IGxvYWQ7XG5leHBvcnRzLnVzZUNvbG9ycyA9IHVzZUNvbG9ycztcbmV4cG9ydHMuc3RvcmFnZSA9ICd1bmRlZmluZWQnICE9IHR5cGVvZiBjaHJvbWVcbiAgICAgICAgICAgICAgICYmICd1bmRlZmluZWQnICE9IHR5cGVvZiBjaHJvbWUuc3RvcmFnZVxuICAgICAgICAgICAgICAgICAgPyBjaHJvbWUuc3RvcmFnZS5sb2NhbFxuICAgICAgICAgICAgICAgICAgOiBsb2NhbHN0b3JhZ2UoKTtcblxuLyoqXG4gKiBDb2xvcnMuXG4gKi9cblxuZXhwb3J0cy5jb2xvcnMgPSBbXG4gICdsaWdodHNlYWdyZWVuJyxcbiAgJ2ZvcmVzdGdyZWVuJyxcbiAgJ2dvbGRlbnJvZCcsXG4gICdkb2RnZXJibHVlJyxcbiAgJ2RhcmtvcmNoaWQnLFxuICAnY3JpbXNvbidcbl07XG5cbi8qKlxuICogQ3VycmVudGx5IG9ubHkgV2ViS2l0LWJhc2VkIFdlYiBJbnNwZWN0b3JzLCBGaXJlZm94ID49IHYzMSxcbiAqIGFuZCB0aGUgRmlyZWJ1ZyBleHRlbnNpb24gKGFueSBGaXJlZm94IHZlcnNpb24pIGFyZSBrbm93blxuICogdG8gc3VwcG9ydCBcIiVjXCIgQ1NTIGN1c3RvbWl6YXRpb25zLlxuICpcbiAqIFRPRE86IGFkZCBhIGBsb2NhbFN0b3JhZ2VgIHZhcmlhYmxlIHRvIGV4cGxpY2l0bHkgZW5hYmxlL2Rpc2FibGUgY29sb3JzXG4gKi9cblxuZnVuY3Rpb24gdXNlQ29sb3JzKCkge1xuICAvLyBpcyB3ZWJraXQ/IGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9hLzE2NDU5NjA2LzM3Njc3M1xuICByZXR1cm4gKCdXZWJraXRBcHBlYXJhbmNlJyBpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUpIHx8XG4gICAgLy8gaXMgZmlyZWJ1Zz8gaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL2EvMzk4MTIwLzM3Njc3M1xuICAgICh3aW5kb3cuY29uc29sZSAmJiAoY29uc29sZS5maXJlYnVnIHx8IChjb25zb2xlLmV4Y2VwdGlvbiAmJiBjb25zb2xlLnRhYmxlKSkpIHx8XG4gICAgLy8gaXMgZmlyZWZveCA+PSB2MzE/XG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9Ub29scy9XZWJfQ29uc29sZSNTdHlsaW5nX21lc3NhZ2VzXG4gICAgKG5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKS5tYXRjaCgvZmlyZWZveFxcLyhcXGQrKS8pICYmIHBhcnNlSW50KFJlZ0V4cC4kMSwgMTApID49IDMxKTtcbn1cblxuLyoqXG4gKiBNYXAgJWogdG8gYEpTT04uc3RyaW5naWZ5KClgLCBzaW5jZSBubyBXZWIgSW5zcGVjdG9ycyBkbyB0aGF0IGJ5IGRlZmF1bHQuXG4gKi9cblxuZXhwb3J0cy5mb3JtYXR0ZXJzLmogPSBmdW5jdGlvbih2KSB7XG4gIHJldHVybiBKU09OLnN0cmluZ2lmeSh2KTtcbn07XG5cblxuLyoqXG4gKiBDb2xvcml6ZSBsb2cgYXJndW1lbnRzIGlmIGVuYWJsZWQuXG4gKlxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5mdW5jdGlvbiBmb3JtYXRBcmdzKCkge1xuICB2YXIgYXJncyA9IGFyZ3VtZW50cztcbiAgdmFyIHVzZUNvbG9ycyA9IHRoaXMudXNlQ29sb3JzO1xuXG4gIGFyZ3NbMF0gPSAodXNlQ29sb3JzID8gJyVjJyA6ICcnKVxuICAgICsgdGhpcy5uYW1lc3BhY2VcbiAgICArICh1c2VDb2xvcnMgPyAnICVjJyA6ICcgJylcbiAgICArIGFyZ3NbMF1cbiAgICArICh1c2VDb2xvcnMgPyAnJWMgJyA6ICcgJylcbiAgICArICcrJyArIGV4cG9ydHMuaHVtYW5pemUodGhpcy5kaWZmKTtcblxuICBpZiAoIXVzZUNvbG9ycykgcmV0dXJuIGFyZ3M7XG5cbiAgdmFyIGMgPSAnY29sb3I6ICcgKyB0aGlzLmNvbG9yO1xuICBhcmdzID0gW2FyZ3NbMF0sIGMsICdjb2xvcjogaW5oZXJpdCddLmNvbmNhdChBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmdzLCAxKSk7XG5cbiAgLy8gdGhlIGZpbmFsIFwiJWNcIiBpcyBzb21ld2hhdCB0cmlja3ksIGJlY2F1c2UgdGhlcmUgY291bGQgYmUgb3RoZXJcbiAgLy8gYXJndW1lbnRzIHBhc3NlZCBlaXRoZXIgYmVmb3JlIG9yIGFmdGVyIHRoZSAlYywgc28gd2UgbmVlZCB0b1xuICAvLyBmaWd1cmUgb3V0IHRoZSBjb3JyZWN0IGluZGV4IHRvIGluc2VydCB0aGUgQ1NTIGludG9cbiAgdmFyIGluZGV4ID0gMDtcbiAgdmFyIGxhc3RDID0gMDtcbiAgYXJnc1swXS5yZXBsYWNlKC8lW2EteiVdL2csIGZ1bmN0aW9uKG1hdGNoKSB7XG4gICAgaWYgKCclJScgPT09IG1hdGNoKSByZXR1cm47XG4gICAgaW5kZXgrKztcbiAgICBpZiAoJyVjJyA9PT0gbWF0Y2gpIHtcbiAgICAgIC8vIHdlIG9ubHkgYXJlIGludGVyZXN0ZWQgaW4gdGhlICpsYXN0KiAlY1xuICAgICAgLy8gKHRoZSB1c2VyIG1heSBoYXZlIHByb3ZpZGVkIHRoZWlyIG93bilcbiAgICAgIGxhc3RDID0gaW5kZXg7XG4gICAgfVxuICB9KTtcblxuICBhcmdzLnNwbGljZShsYXN0QywgMCwgYyk7XG4gIHJldHVybiBhcmdzO1xufVxuXG4vKipcbiAqIEludm9rZXMgYGNvbnNvbGUubG9nKClgIHdoZW4gYXZhaWxhYmxlLlxuICogTm8tb3Agd2hlbiBgY29uc29sZS5sb2dgIGlzIG5vdCBhIFwiZnVuY3Rpb25cIi5cbiAqXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbmZ1bmN0aW9uIGxvZygpIHtcbiAgLy8gdGhpcyBoYWNrZXJ5IGlzIHJlcXVpcmVkIGZvciBJRTgvOSwgd2hlcmVcbiAgLy8gdGhlIGBjb25zb2xlLmxvZ2AgZnVuY3Rpb24gZG9lc24ndCBoYXZlICdhcHBseSdcbiAgcmV0dXJuICdvYmplY3QnID09PSB0eXBlb2YgY29uc29sZVxuICAgICYmIGNvbnNvbGUubG9nXG4gICAgJiYgRnVuY3Rpb24ucHJvdG90eXBlLmFwcGx5LmNhbGwoY29uc29sZS5sb2csIGNvbnNvbGUsIGFyZ3VtZW50cyk7XG59XG5cbi8qKlxuICogU2F2ZSBgbmFtZXNwYWNlc2AuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IG5hbWVzcGFjZXNcbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIHNhdmUobmFtZXNwYWNlcykge1xuICB0cnkge1xuICAgIGlmIChudWxsID09IG5hbWVzcGFjZXMpIHtcbiAgICAgIGV4cG9ydHMuc3RvcmFnZS5yZW1vdmVJdGVtKCdkZWJ1ZycpO1xuICAgIH0gZWxzZSB7XG4gICAgICBleHBvcnRzLnN0b3JhZ2UuZGVidWcgPSBuYW1lc3BhY2VzO1xuICAgIH1cbiAgfSBjYXRjaChlKSB7fVxufVxuXG4vKipcbiAqIExvYWQgYG5hbWVzcGFjZXNgLlxuICpcbiAqIEByZXR1cm4ge1N0cmluZ30gcmV0dXJucyB0aGUgcHJldmlvdXNseSBwZXJzaXN0ZWQgZGVidWcgbW9kZXNcbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIGxvYWQoKSB7XG4gIHZhciByO1xuICB0cnkge1xuICAgIHIgPSBleHBvcnRzLnN0b3JhZ2UuZGVidWc7XG4gIH0gY2F0Y2goZSkge31cbiAgcmV0dXJuIHI7XG59XG5cbi8qKlxuICogRW5hYmxlIG5hbWVzcGFjZXMgbGlzdGVkIGluIGBsb2NhbFN0b3JhZ2UuZGVidWdgIGluaXRpYWxseS5cbiAqL1xuXG5leHBvcnRzLmVuYWJsZShsb2FkKCkpO1xuXG4vKipcbiAqIExvY2Fsc3RvcmFnZSBhdHRlbXB0cyB0byByZXR1cm4gdGhlIGxvY2Fsc3RvcmFnZS5cbiAqXG4gKiBUaGlzIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIHNhZmFyaSB0aHJvd3NcbiAqIHdoZW4gYSB1c2VyIGRpc2FibGVzIGNvb2tpZXMvbG9jYWxzdG9yYWdlXG4gKiBhbmQgeW91IGF0dGVtcHQgdG8gYWNjZXNzIGl0LlxuICpcbiAqIEByZXR1cm4ge0xvY2FsU3RvcmFnZX1cbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIGxvY2Fsc3RvcmFnZSgpe1xuICB0cnkge1xuICAgIHJldHVybiB3aW5kb3cubG9jYWxTdG9yYWdlO1xuICB9IGNhdGNoIChlKSB7fVxufVxuIiwiXG4vKipcbiAqIFRoaXMgaXMgdGhlIGNvbW1vbiBsb2dpYyBmb3IgYm90aCB0aGUgTm9kZS5qcyBhbmQgd2ViIGJyb3dzZXJcbiAqIGltcGxlbWVudGF0aW9ucyBvZiBgZGVidWcoKWAuXG4gKlxuICogRXhwb3NlIGBkZWJ1ZygpYCBhcyB0aGUgbW9kdWxlLlxuICovXG5cbmV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cyA9IGRlYnVnO1xuZXhwb3J0cy5jb2VyY2UgPSBjb2VyY2U7XG5leHBvcnRzLmRpc2FibGUgPSBkaXNhYmxlO1xuZXhwb3J0cy5lbmFibGUgPSBlbmFibGU7XG5leHBvcnRzLmVuYWJsZWQgPSBlbmFibGVkO1xuZXhwb3J0cy5odW1hbml6ZSA9IHJlcXVpcmUoJ21zJyk7XG5cbi8qKlxuICogVGhlIGN1cnJlbnRseSBhY3RpdmUgZGVidWcgbW9kZSBuYW1lcywgYW5kIG5hbWVzIHRvIHNraXAuXG4gKi9cblxuZXhwb3J0cy5uYW1lcyA9IFtdO1xuZXhwb3J0cy5za2lwcyA9IFtdO1xuXG4vKipcbiAqIE1hcCBvZiBzcGVjaWFsIFwiJW5cIiBoYW5kbGluZyBmdW5jdGlvbnMsIGZvciB0aGUgZGVidWcgXCJmb3JtYXRcIiBhcmd1bWVudC5cbiAqXG4gKiBWYWxpZCBrZXkgbmFtZXMgYXJlIGEgc2luZ2xlLCBsb3dlcmNhc2VkIGxldHRlciwgaS5lLiBcIm5cIi5cbiAqL1xuXG5leHBvcnRzLmZvcm1hdHRlcnMgPSB7fTtcblxuLyoqXG4gKiBQcmV2aW91c2x5IGFzc2lnbmVkIGNvbG9yLlxuICovXG5cbnZhciBwcmV2Q29sb3IgPSAwO1xuXG4vKipcbiAqIFByZXZpb3VzIGxvZyB0aW1lc3RhbXAuXG4gKi9cblxudmFyIHByZXZUaW1lO1xuXG4vKipcbiAqIFNlbGVjdCBhIGNvbG9yLlxuICpcbiAqIEByZXR1cm4ge051bWJlcn1cbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIHNlbGVjdENvbG9yKCkge1xuICByZXR1cm4gZXhwb3J0cy5jb2xvcnNbcHJldkNvbG9yKysgJSBleHBvcnRzLmNvbG9ycy5sZW5ndGhdO1xufVxuXG4vKipcbiAqIENyZWF0ZSBhIGRlYnVnZ2VyIHdpdGggdGhlIGdpdmVuIGBuYW1lc3BhY2VgLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBuYW1lc3BhY2VcbiAqIEByZXR1cm4ge0Z1bmN0aW9ufVxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5mdW5jdGlvbiBkZWJ1ZyhuYW1lc3BhY2UpIHtcblxuICAvLyBkZWZpbmUgdGhlIGBkaXNhYmxlZGAgdmVyc2lvblxuICBmdW5jdGlvbiBkaXNhYmxlZCgpIHtcbiAgfVxuICBkaXNhYmxlZC5lbmFibGVkID0gZmFsc2U7XG5cbiAgLy8gZGVmaW5lIHRoZSBgZW5hYmxlZGAgdmVyc2lvblxuICBmdW5jdGlvbiBlbmFibGVkKCkge1xuXG4gICAgdmFyIHNlbGYgPSBlbmFibGVkO1xuXG4gICAgLy8gc2V0IGBkaWZmYCB0aW1lc3RhbXBcbiAgICB2YXIgY3VyciA9ICtuZXcgRGF0ZSgpO1xuICAgIHZhciBtcyA9IGN1cnIgLSAocHJldlRpbWUgfHwgY3Vycik7XG4gICAgc2VsZi5kaWZmID0gbXM7XG4gICAgc2VsZi5wcmV2ID0gcHJldlRpbWU7XG4gICAgc2VsZi5jdXJyID0gY3VycjtcbiAgICBwcmV2VGltZSA9IGN1cnI7XG5cbiAgICAvLyBhZGQgdGhlIGBjb2xvcmAgaWYgbm90IHNldFxuICAgIGlmIChudWxsID09IHNlbGYudXNlQ29sb3JzKSBzZWxmLnVzZUNvbG9ycyA9IGV4cG9ydHMudXNlQ29sb3JzKCk7XG4gICAgaWYgKG51bGwgPT0gc2VsZi5jb2xvciAmJiBzZWxmLnVzZUNvbG9ycykgc2VsZi5jb2xvciA9IHNlbGVjdENvbG9yKCk7XG5cbiAgICB2YXIgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7XG5cbiAgICBhcmdzWzBdID0gZXhwb3J0cy5jb2VyY2UoYXJnc1swXSk7XG5cbiAgICBpZiAoJ3N0cmluZycgIT09IHR5cGVvZiBhcmdzWzBdKSB7XG4gICAgICAvLyBhbnl0aGluZyBlbHNlIGxldCdzIGluc3BlY3Qgd2l0aCAlb1xuICAgICAgYXJncyA9IFsnJW8nXS5jb25jYXQoYXJncyk7XG4gICAgfVxuXG4gICAgLy8gYXBwbHkgYW55IGBmb3JtYXR0ZXJzYCB0cmFuc2Zvcm1hdGlvbnNcbiAgICB2YXIgaW5kZXggPSAwO1xuICAgIGFyZ3NbMF0gPSBhcmdzWzBdLnJlcGxhY2UoLyUoW2EteiVdKS9nLCBmdW5jdGlvbihtYXRjaCwgZm9ybWF0KSB7XG4gICAgICAvLyBpZiB3ZSBlbmNvdW50ZXIgYW4gZXNjYXBlZCAlIHRoZW4gZG9uJ3QgaW5jcmVhc2UgdGhlIGFycmF5IGluZGV4XG4gICAgICBpZiAobWF0Y2ggPT09ICclJScpIHJldHVybiBtYXRjaDtcbiAgICAgIGluZGV4Kys7XG4gICAgICB2YXIgZm9ybWF0dGVyID0gZXhwb3J0cy5mb3JtYXR0ZXJzW2Zvcm1hdF07XG4gICAgICBpZiAoJ2Z1bmN0aW9uJyA9PT0gdHlwZW9mIGZvcm1hdHRlcikge1xuICAgICAgICB2YXIgdmFsID0gYXJnc1tpbmRleF07XG4gICAgICAgIG1hdGNoID0gZm9ybWF0dGVyLmNhbGwoc2VsZiwgdmFsKTtcblxuICAgICAgICAvLyBub3cgd2UgbmVlZCB0byByZW1vdmUgYGFyZ3NbaW5kZXhdYCBzaW5jZSBpdCdzIGlubGluZWQgaW4gdGhlIGBmb3JtYXRgXG4gICAgICAgIGFyZ3Muc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgaW5kZXgtLTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBtYXRjaDtcbiAgICB9KTtcblxuICAgIGlmICgnZnVuY3Rpb24nID09PSB0eXBlb2YgZXhwb3J0cy5mb3JtYXRBcmdzKSB7XG4gICAgICBhcmdzID0gZXhwb3J0cy5mb3JtYXRBcmdzLmFwcGx5KHNlbGYsIGFyZ3MpO1xuICAgIH1cbiAgICB2YXIgbG9nRm4gPSBlbmFibGVkLmxvZyB8fCBleHBvcnRzLmxvZyB8fCBjb25zb2xlLmxvZy5iaW5kKGNvbnNvbGUpO1xuICAgIGxvZ0ZuLmFwcGx5KHNlbGYsIGFyZ3MpO1xuICB9XG4gIGVuYWJsZWQuZW5hYmxlZCA9IHRydWU7XG5cbiAgdmFyIGZuID0gZXhwb3J0cy5lbmFibGVkKG5hbWVzcGFjZSkgPyBlbmFibGVkIDogZGlzYWJsZWQ7XG5cbiAgZm4ubmFtZXNwYWNlID0gbmFtZXNwYWNlO1xuXG4gIHJldHVybiBmbjtcbn1cblxuLyoqXG4gKiBFbmFibGVzIGEgZGVidWcgbW9kZSBieSBuYW1lc3BhY2VzLiBUaGlzIGNhbiBpbmNsdWRlIG1vZGVzXG4gKiBzZXBhcmF0ZWQgYnkgYSBjb2xvbiBhbmQgd2lsZGNhcmRzLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBuYW1lc3BhY2VzXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbmZ1bmN0aW9uIGVuYWJsZShuYW1lc3BhY2VzKSB7XG4gIGV4cG9ydHMuc2F2ZShuYW1lc3BhY2VzKTtcblxuICB2YXIgc3BsaXQgPSAobmFtZXNwYWNlcyB8fCAnJykuc3BsaXQoL1tcXHMsXSsvKTtcbiAgdmFyIGxlbiA9IHNwbGl0Lmxlbmd0aDtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgaWYgKCFzcGxpdFtpXSkgY29udGludWU7IC8vIGlnbm9yZSBlbXB0eSBzdHJpbmdzXG4gICAgbmFtZXNwYWNlcyA9IHNwbGl0W2ldLnJlcGxhY2UoL1xcKi9nLCAnLio/Jyk7XG4gICAgaWYgKG5hbWVzcGFjZXNbMF0gPT09ICctJykge1xuICAgICAgZXhwb3J0cy5za2lwcy5wdXNoKG5ldyBSZWdFeHAoJ14nICsgbmFtZXNwYWNlcy5zdWJzdHIoMSkgKyAnJCcpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZXhwb3J0cy5uYW1lcy5wdXNoKG5ldyBSZWdFeHAoJ14nICsgbmFtZXNwYWNlcyArICckJykpO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIERpc2FibGUgZGVidWcgb3V0cHV0LlxuICpcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuZnVuY3Rpb24gZGlzYWJsZSgpIHtcbiAgZXhwb3J0cy5lbmFibGUoJycpO1xufVxuXG4vKipcbiAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gbW9kZSBuYW1lIGlzIGVuYWJsZWQsIGZhbHNlIG90aGVyd2lzZS5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gbmFtZVxuICogQHJldHVybiB7Qm9vbGVhbn1cbiAqIEBhcGkgcHVibGljXG4gKi9cblxuZnVuY3Rpb24gZW5hYmxlZChuYW1lKSB7XG4gIHZhciBpLCBsZW47XG4gIGZvciAoaSA9IDAsIGxlbiA9IGV4cG9ydHMuc2tpcHMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICBpZiAoZXhwb3J0cy5za2lwc1tpXS50ZXN0KG5hbWUpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIGZvciAoaSA9IDAsIGxlbiA9IGV4cG9ydHMubmFtZXMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICBpZiAoZXhwb3J0cy5uYW1lc1tpXS50ZXN0KG5hbWUpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG4vKipcbiAqIENvZXJjZSBgdmFsYC5cbiAqXG4gKiBAcGFyYW0ge01peGVkfSB2YWxcbiAqIEByZXR1cm4ge01peGVkfVxuICogQGFwaSBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gY29lcmNlKHZhbCkge1xuICBpZiAodmFsIGluc3RhbmNlb2YgRXJyb3IpIHJldHVybiB2YWwuc3RhY2sgfHwgdmFsLm1lc3NhZ2U7XG4gIHJldHVybiB2YWw7XG59XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vbGliL2VxbCcpO1xuIiwiLyohXG4gKiBkZWVwLWVxbFxuICogQ29weXJpZ2h0KGMpIDIwMTMgSmFrZSBMdWVyIDxqYWtlQGFsb2dpY2FscGFyYWRveC5jb20+XG4gKiBNSVQgTGljZW5zZWRcbiAqL1xuXG4vKiFcbiAqIE1vZHVsZSBkZXBlbmRlbmNpZXNcbiAqL1xuXG52YXIgdHlwZSA9IHJlcXVpcmUoJ3R5cGUtZGV0ZWN0Jyk7XG5cbi8qIVxuICogQnVmZmVyLmlzQnVmZmVyIGJyb3dzZXIgc2hpbVxuICovXG5cbnZhciBCdWZmZXI7XG50cnkgeyBCdWZmZXIgPSByZXF1aXJlKCdidWZmZXInKS5CdWZmZXI7IH1cbmNhdGNoKGV4KSB7XG4gIEJ1ZmZlciA9IHt9O1xuICBCdWZmZXIuaXNCdWZmZXIgPSBmdW5jdGlvbigpIHsgcmV0dXJuIGZhbHNlOyB9XG59XG5cbi8qIVxuICogUHJpbWFyeSBFeHBvcnRcbiAqL1xuXG5tb2R1bGUuZXhwb3J0cyA9IGRlZXBFcXVhbDtcblxuLyoqXG4gKiBBc3NlcnQgc3VwZXItc3RyaWN0IChlZ2FsKSBlcXVhbGl0eSBiZXR3ZWVuXG4gKiB0d28gb2JqZWN0cyBvZiBhbnkgdHlwZS5cbiAqXG4gKiBAcGFyYW0ge01peGVkfSBhXG4gKiBAcGFyYW0ge01peGVkfSBiXG4gKiBAcGFyYW0ge0FycmF5fSBtZW1vaXNlZCAob3B0aW9uYWwpXG4gKiBAcmV0dXJuIHtCb29sZWFufSBlcXVhbCBtYXRjaFxuICovXG5cbmZ1bmN0aW9uIGRlZXBFcXVhbChhLCBiLCBtKSB7XG4gIGlmIChzYW1lVmFsdWUoYSwgYikpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBlbHNlIGlmICgnZGF0ZScgPT09IHR5cGUoYSkpIHtcbiAgICByZXR1cm4gZGF0ZUVxdWFsKGEsIGIpO1xuICB9IGVsc2UgaWYgKCdyZWdleHAnID09PSB0eXBlKGEpKSB7XG4gICAgcmV0dXJuIHJlZ2V4cEVxdWFsKGEsIGIpO1xuICB9IGVsc2UgaWYgKEJ1ZmZlci5pc0J1ZmZlcihhKSkge1xuICAgIHJldHVybiBidWZmZXJFcXVhbChhLCBiKTtcbiAgfSBlbHNlIGlmICgnYXJndW1lbnRzJyA9PT0gdHlwZShhKSkge1xuICAgIHJldHVybiBhcmd1bWVudHNFcXVhbChhLCBiLCBtKTtcbiAgfSBlbHNlIGlmICghdHlwZUVxdWFsKGEsIGIpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9IGVsc2UgaWYgKCgnb2JqZWN0JyAhPT0gdHlwZShhKSAmJiAnb2JqZWN0JyAhPT0gdHlwZShiKSlcbiAgJiYgKCdhcnJheScgIT09IHR5cGUoYSkgJiYgJ2FycmF5JyAhPT0gdHlwZShiKSkpIHtcbiAgICByZXR1cm4gc2FtZVZhbHVlKGEsIGIpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBvYmplY3RFcXVhbChhLCBiLCBtKTtcbiAgfVxufVxuXG4vKiFcbiAqIFN0cmljdCAoZWdhbCkgZXF1YWxpdHkgdGVzdC4gRW5zdXJlcyB0aGF0IE5hTiBhbHdheXNcbiAqIGVxdWFscyBOYU4gYW5kIGAtMGAgZG9lcyBub3QgZXF1YWwgYCswYC5cbiAqXG4gKiBAcGFyYW0ge01peGVkfSBhXG4gKiBAcGFyYW0ge01peGVkfSBiXG4gKiBAcmV0dXJuIHtCb29sZWFufSBlcXVhbCBtYXRjaFxuICovXG5cbmZ1bmN0aW9uIHNhbWVWYWx1ZShhLCBiKSB7XG4gIGlmIChhID09PSBiKSByZXR1cm4gYSAhPT0gMCB8fCAxIC8gYSA9PT0gMSAvIGI7XG4gIHJldHVybiBhICE9PSBhICYmIGIgIT09IGI7XG59XG5cbi8qIVxuICogQ29tcGFyZSB0aGUgdHlwZXMgb2YgdHdvIGdpdmVuIG9iamVjdHMgYW5kXG4gKiByZXR1cm4gaWYgdGhleSBhcmUgZXF1YWwuIE5vdGUgdGhhdCBhbiBBcnJheVxuICogaGFzIGEgdHlwZSBvZiBgYXJyYXlgIChub3QgYG9iamVjdGApIGFuZCBhcmd1bWVudHNcbiAqIGhhdmUgYSB0eXBlIG9mIGBhcmd1bWVudHNgIChub3QgYGFycmF5YC9gb2JqZWN0YCkuXG4gKlxuICogQHBhcmFtIHtNaXhlZH0gYVxuICogQHBhcmFtIHtNaXhlZH0gYlxuICogQHJldHVybiB7Qm9vbGVhbn0gcmVzdWx0XG4gKi9cblxuZnVuY3Rpb24gdHlwZUVxdWFsKGEsIGIpIHtcbiAgcmV0dXJuIHR5cGUoYSkgPT09IHR5cGUoYik7XG59XG5cbi8qIVxuICogQ29tcGFyZSB0d28gRGF0ZSBvYmplY3RzIGJ5IGFzc2VydGluZyB0aGF0XG4gKiB0aGUgdGltZSB2YWx1ZXMgYXJlIGVxdWFsIHVzaW5nIGBzYXZlVmFsdWVgLlxuICpcbiAqIEBwYXJhbSB7RGF0ZX0gYVxuICogQHBhcmFtIHtEYXRlfSBiXG4gKiBAcmV0dXJuIHtCb29sZWFufSByZXN1bHRcbiAqL1xuXG5mdW5jdGlvbiBkYXRlRXF1YWwoYSwgYikge1xuICBpZiAoJ2RhdGUnICE9PSB0eXBlKGIpKSByZXR1cm4gZmFsc2U7XG4gIHJldHVybiBzYW1lVmFsdWUoYS5nZXRUaW1lKCksIGIuZ2V0VGltZSgpKTtcbn1cblxuLyohXG4gKiBDb21wYXJlIHR3byByZWd1bGFyIGV4cHJlc3Npb25zIGJ5IGNvbnZlcnRpbmcgdGhlbVxuICogdG8gc3RyaW5nIGFuZCBjaGVja2luZyBmb3IgYHNhbWVWYWx1ZWAuXG4gKlxuICogQHBhcmFtIHtSZWdFeHB9IGFcbiAqIEBwYXJhbSB7UmVnRXhwfSBiXG4gKiBAcmV0dXJuIHtCb29sZWFufSByZXN1bHRcbiAqL1xuXG5mdW5jdGlvbiByZWdleHBFcXVhbChhLCBiKSB7XG4gIGlmICgncmVnZXhwJyAhPT0gdHlwZShiKSkgcmV0dXJuIGZhbHNlO1xuICByZXR1cm4gc2FtZVZhbHVlKGEudG9TdHJpbmcoKSwgYi50b1N0cmluZygpKTtcbn1cblxuLyohXG4gKiBBc3NlcnQgZGVlcCBlcXVhbGl0eSBvZiB0d28gYGFyZ3VtZW50c2Agb2JqZWN0cy5cbiAqIFVuZm9ydHVuYXRlbHksIHRoZXNlIG11c3QgYmUgc2xpY2VkIHRvIGFycmF5c1xuICogcHJpb3IgdG8gdGVzdCB0byBlbnN1cmUgbm8gYmFkIGJlaGF2aW9yLlxuICpcbiAqIEBwYXJhbSB7QXJndW1lbnRzfSBhXG4gKiBAcGFyYW0ge0FyZ3VtZW50c30gYlxuICogQHBhcmFtIHtBcnJheX0gbWVtb2l6ZSAob3B0aW9uYWwpXG4gKiBAcmV0dXJuIHtCb29sZWFufSByZXN1bHRcbiAqL1xuXG5mdW5jdGlvbiBhcmd1bWVudHNFcXVhbChhLCBiLCBtKSB7XG4gIGlmICgnYXJndW1lbnRzJyAhPT0gdHlwZShiKSkgcmV0dXJuIGZhbHNlO1xuICBhID0gW10uc2xpY2UuY2FsbChhKTtcbiAgYiA9IFtdLnNsaWNlLmNhbGwoYik7XG4gIHJldHVybiBkZWVwRXF1YWwoYSwgYiwgbSk7XG59XG5cbi8qIVxuICogR2V0IGVudW1lcmFibGUgcHJvcGVydGllcyBvZiBhIGdpdmVuIG9iamVjdC5cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gYVxuICogQHJldHVybiB7QXJyYXl9IHByb3BlcnR5IG5hbWVzXG4gKi9cblxuZnVuY3Rpb24gZW51bWVyYWJsZShhKSB7XG4gIHZhciByZXMgPSBbXTtcbiAgZm9yICh2YXIga2V5IGluIGEpIHJlcy5wdXNoKGtleSk7XG4gIHJldHVybiByZXM7XG59XG5cbi8qIVxuICogU2ltcGxlIGVxdWFsaXR5IGZvciBmbGF0IGl0ZXJhYmxlIG9iamVjdHNcbiAqIHN1Y2ggYXMgQXJyYXlzIG9yIE5vZGUuanMgYnVmZmVycy5cbiAqXG4gKiBAcGFyYW0ge0l0ZXJhYmxlfSBhXG4gKiBAcGFyYW0ge0l0ZXJhYmxlfSBiXG4gKiBAcmV0dXJuIHtCb29sZWFufSByZXN1bHRcbiAqL1xuXG5mdW5jdGlvbiBpdGVyYWJsZUVxdWFsKGEsIGIpIHtcbiAgaWYgKGEubGVuZ3RoICE9PSAgYi5sZW5ndGgpIHJldHVybiBmYWxzZTtcblxuICB2YXIgaSA9IDA7XG4gIHZhciBtYXRjaCA9IHRydWU7XG5cbiAgZm9yICg7IGkgPCBhLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKGFbaV0gIT09IGJbaV0pIHtcbiAgICAgIG1hdGNoID0gZmFsc2U7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbWF0Y2g7XG59XG5cbi8qIVxuICogRXh0ZW5zaW9uIHRvIGBpdGVyYWJsZUVxdWFsYCBzcGVjaWZpY2FsbHlcbiAqIGZvciBOb2RlLmpzIEJ1ZmZlcnMuXG4gKlxuICogQHBhcmFtIHtCdWZmZXJ9IGFcbiAqIEBwYXJhbSB7TWl4ZWR9IGJcbiAqIEByZXR1cm4ge0Jvb2xlYW59IHJlc3VsdFxuICovXG5cbmZ1bmN0aW9uIGJ1ZmZlckVxdWFsKGEsIGIpIHtcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoYikpIHJldHVybiBmYWxzZTtcbiAgcmV0dXJuIGl0ZXJhYmxlRXF1YWwoYSwgYik7XG59XG5cbi8qIVxuICogQmxvY2sgZm9yIGBvYmplY3RFcXVhbGAgZW5zdXJpbmcgbm9uLWV4aXN0aW5nXG4gKiB2YWx1ZXMgZG9uJ3QgZ2V0IGluLlxuICpcbiAqIEBwYXJhbSB7TWl4ZWR9IG9iamVjdFxuICogQHJldHVybiB7Qm9vbGVhbn0gcmVzdWx0XG4gKi9cblxuZnVuY3Rpb24gaXNWYWx1ZShhKSB7XG4gIHJldHVybiBhICE9PSBudWxsICYmIGEgIT09IHVuZGVmaW5lZDtcbn1cblxuLyohXG4gKiBSZWN1cnNpdmVseSBjaGVjayB0aGUgZXF1YWxpdHkgb2YgdHdvIG9iamVjdHMuXG4gKiBPbmNlIGJhc2ljIHNhbWVuZXNzIGhhcyBiZWVuIGVzdGFibGlzaGVkIGl0IHdpbGxcbiAqIGRlZmVyIHRvIGBkZWVwRXF1YWxgIGZvciBlYWNoIGVudW1lcmFibGUga2V5XG4gKiBpbiB0aGUgb2JqZWN0LlxuICpcbiAqIEBwYXJhbSB7TWl4ZWR9IGFcbiAqIEBwYXJhbSB7TWl4ZWR9IGJcbiAqIEByZXR1cm4ge0Jvb2xlYW59IHJlc3VsdFxuICovXG5cbmZ1bmN0aW9uIG9iamVjdEVxdWFsKGEsIGIsIG0pIHtcbiAgaWYgKCFpc1ZhbHVlKGEpIHx8ICFpc1ZhbHVlKGIpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKGEucHJvdG90eXBlICE9PSBiLnByb3RvdHlwZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHZhciBpO1xuICBpZiAobSkge1xuICAgIGZvciAoaSA9IDA7IGkgPCBtLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoKG1baV1bMF0gPT09IGEgJiYgbVtpXVsxXSA9PT0gYilcbiAgICAgIHx8ICAobVtpXVswXSA9PT0gYiAmJiBtW2ldWzFdID09PSBhKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgbSA9IFtdO1xuICB9XG5cbiAgdHJ5IHtcbiAgICB2YXIga2EgPSBlbnVtZXJhYmxlKGEpO1xuICAgIHZhciBrYiA9IGVudW1lcmFibGUoYik7XG4gIH0gY2F0Y2ggKGV4KSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAga2Euc29ydCgpO1xuICBrYi5zb3J0KCk7XG5cbiAgaWYgKCFpdGVyYWJsZUVxdWFsKGthLCBrYikpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBtLnB1c2goWyBhLCBiIF0pO1xuXG4gIHZhciBrZXk7XG4gIGZvciAoaSA9IGthLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAga2V5ID0ga2FbaV07XG4gICAgaWYgKCFkZWVwRXF1YWwoYVtrZXldLCBiW2tleV0sIG0pKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vbGliL3R5cGUnKTtcbiIsIi8qIVxuICogdHlwZS1kZXRlY3RcbiAqIENvcHlyaWdodChjKSAyMDEzIGpha2UgbHVlciA8amFrZUBhbG9naWNhbHBhcmFkb3guY29tPlxuICogTUlUIExpY2Vuc2VkXG4gKi9cblxuLyohXG4gKiBQcmltYXJ5IEV4cG9ydHNcbiAqL1xuXG52YXIgZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzID0gZ2V0VHlwZTtcblxuLyohXG4gKiBEZXRlY3RhYmxlIGphdmFzY3JpcHQgbmF0aXZlc1xuICovXG5cbnZhciBuYXRpdmVzID0ge1xuICAgICdbb2JqZWN0IEFycmF5XSc6ICdhcnJheSdcbiAgLCAnW29iamVjdCBSZWdFeHBdJzogJ3JlZ2V4cCdcbiAgLCAnW29iamVjdCBGdW5jdGlvbl0nOiAnZnVuY3Rpb24nXG4gICwgJ1tvYmplY3QgQXJndW1lbnRzXSc6ICdhcmd1bWVudHMnXG4gICwgJ1tvYmplY3QgRGF0ZV0nOiAnZGF0ZSdcbn07XG5cbi8qKlxuICogIyMjIHR5cGVPZiAob2JqKVxuICpcbiAqIFVzZSBzZXZlcmFsIGRpZmZlcmVudCB0ZWNobmlxdWVzIHRvIGRldGVybWluZVxuICogdGhlIHR5cGUgb2Ygb2JqZWN0IGJlaW5nIHRlc3RlZC5cbiAqXG4gKlxuICogQHBhcmFtIHtNaXhlZH0gb2JqZWN0XG4gKiBAcmV0dXJuIHtTdHJpbmd9IG9iamVjdCB0eXBlXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbmZ1bmN0aW9uIGdldFR5cGUgKG9iaikge1xuICB2YXIgc3RyID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG9iaik7XG4gIGlmIChuYXRpdmVzW3N0cl0pIHJldHVybiBuYXRpdmVzW3N0cl07XG4gIGlmIChvYmogPT09IG51bGwpIHJldHVybiAnbnVsbCc7XG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgcmV0dXJuICd1bmRlZmluZWQnO1xuICBpZiAob2JqID09PSBPYmplY3Qob2JqKSkgcmV0dXJuICdvYmplY3QnO1xuICByZXR1cm4gdHlwZW9mIG9iajtcbn1cblxuZXhwb3J0cy5MaWJyYXJ5ID0gTGlicmFyeTtcblxuLyoqXG4gKiAjIyMgTGlicmFyeVxuICpcbiAqIENyZWF0ZSBhIHJlcG9zaXRvcnkgZm9yIGN1c3RvbSB0eXBlIGRldGVjdGlvbi5cbiAqXG4gKiBgYGBqc1xuICogdmFyIGxpYiA9IG5ldyB0eXBlLkxpYnJhcnk7XG4gKiBgYGBcbiAqXG4gKi9cblxuZnVuY3Rpb24gTGlicmFyeSAoKSB7XG4gIHRoaXMudGVzdHMgPSB7fTtcbn1cblxuLyoqXG4gKiAjIyMjIC5vZiAob2JqKVxuICpcbiAqIEV4cG9zZSByZXBsYWNlbWVudCBgdHlwZW9mYCBkZXRlY3Rpb24gdG8gdGhlIGxpYnJhcnkuXG4gKlxuICogYGBganNcbiAqIGlmICgnc3RyaW5nJyA9PT0gbGliLm9mKCdoZWxsbyB3b3JsZCcpKSB7XG4gKiAgIC8vIC4uLlxuICogfVxuICogYGBgXG4gKlxuICogQHBhcmFtIHtNaXhlZH0gb2JqZWN0IHRvIHRlc3RcbiAqIEByZXR1cm4ge1N0cmluZ30gdHlwZVxuICovXG5cbkxpYnJhcnkucHJvdG90eXBlLm9mID0gZ2V0VHlwZTtcblxuLyoqXG4gKiAjIyMjIC5kZWZpbmUgKHR5cGUsIHRlc3QpXG4gKlxuICogQWRkIGEgdGVzdCB0byBmb3IgdGhlIGAudGVzdCgpYCBhc3NlcnRpb24uXG4gKlxuICogQ2FuIGJlIGRlZmluZWQgYXMgYSByZWd1bGFyIGV4cHJlc3Npb246XG4gKlxuICogYGBganNcbiAqIGxpYi5kZWZpbmUoJ2ludCcsIC9eWzAtOV0rJC8pO1xuICogYGBgXG4gKlxuICogLi4uIG9yIGFzIGEgZnVuY3Rpb246XG4gKlxuICogYGBganNcbiAqIGxpYi5kZWZpbmUoJ2JsbicsIGZ1bmN0aW9uIChvYmopIHtcbiAqICAgaWYgKCdib29sZWFuJyA9PT0gbGliLm9mKG9iaikpIHJldHVybiB0cnVlO1xuICogICB2YXIgYmxucyA9IFsgJ3llcycsICdubycsICd0cnVlJywgJ2ZhbHNlJywgMSwgMCBdO1xuICogICBpZiAoJ3N0cmluZycgPT09IGxpYi5vZihvYmopKSBvYmogPSBvYmoudG9Mb3dlckNhc2UoKTtcbiAqICAgcmV0dXJuICEhIH5ibG5zLmluZGV4T2Yob2JqKTtcbiAqIH0pO1xuICogYGBgXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHR5cGVcbiAqIEBwYXJhbSB7UmVnRXhwfEZ1bmN0aW9ufSB0ZXN0XG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbkxpYnJhcnkucHJvdG90eXBlLmRlZmluZSA9IGZ1bmN0aW9uICh0eXBlLCB0ZXN0KSB7XG4gIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAxKSByZXR1cm4gdGhpcy50ZXN0c1t0eXBlXTtcbiAgdGhpcy50ZXN0c1t0eXBlXSA9IHRlc3Q7XG4gIHJldHVybiB0aGlzO1xufTtcblxuLyoqXG4gKiAjIyMjIC50ZXN0IChvYmosIHRlc3QpXG4gKlxuICogQXNzZXJ0IHRoYXQgYW4gb2JqZWN0IGlzIG9mIHR5cGUuIFdpbGwgZmlyc3RcbiAqIGNoZWNrIG5hdGl2ZXMsIGFuZCBpZiB0aGF0IGRvZXMgbm90IHBhc3MgaXQgd2lsbFxuICogdXNlIHRoZSB1c2VyIGRlZmluZWQgY3VzdG9tIHRlc3RzLlxuICpcbiAqIGBgYGpzXG4gKiBhc3NlcnQobGliLnRlc3QoJzEnLCAnaW50JykpO1xuICogYXNzZXJ0KGxpYi50ZXN0KCd5ZXMnLCAnYmxuJykpO1xuICogYGBgXG4gKlxuICogQHBhcmFtIHtNaXhlZH0gb2JqZWN0XG4gKiBAcGFyYW0ge1N0cmluZ30gdHlwZVxuICogQHJldHVybiB7Qm9vbGVhbn0gcmVzdWx0XG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbkxpYnJhcnkucHJvdG90eXBlLnRlc3QgPSBmdW5jdGlvbiAob2JqLCB0eXBlKSB7XG4gIGlmICh0eXBlID09PSBnZXRUeXBlKG9iaikpIHJldHVybiB0cnVlO1xuICB2YXIgdGVzdCA9IHRoaXMudGVzdHNbdHlwZV07XG5cbiAgaWYgKHRlc3QgJiYgJ3JlZ2V4cCcgPT09IGdldFR5cGUodGVzdCkpIHtcbiAgICByZXR1cm4gdGVzdC50ZXN0KG9iaik7XG4gIH0gZWxzZSBpZiAodGVzdCAmJiAnZnVuY3Rpb24nID09PSBnZXRUeXBlKHRlc3QpKSB7XG4gICAgcmV0dXJuIHRlc3Qob2JqKTtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoJ1R5cGUgdGVzdCBcIicgKyB0eXBlICsgJ1wiIG5vdCBkZWZpbmVkIG9yIGludmFsaWQuJyk7XG4gIH1cbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbmV4cG9ydHMudXRpbHMgPSByZXF1aXJlKCcuL2Rlcy91dGlscycpO1xuZXhwb3J0cy5DaXBoZXIgPSByZXF1aXJlKCcuL2Rlcy9jaXBoZXInKTtcbmV4cG9ydHMuREVTID0gcmVxdWlyZSgnLi9kZXMvZGVzJyk7XG5leHBvcnRzLkNCQyA9IHJlcXVpcmUoJy4vZGVzL2NiYycpO1xuZXhwb3J0cy5FREUgPSByZXF1aXJlKCcuL2Rlcy9lZGUnKTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGFzc2VydCA9IHJlcXVpcmUoJ21pbmltYWxpc3RpYy1hc3NlcnQnKTtcbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJyk7XG5cbnZhciBwcm90byA9IHt9O1xuXG5mdW5jdGlvbiBDQkNTdGF0ZShpdikge1xuICBhc3NlcnQuZXF1YWwoaXYubGVuZ3RoLCA4LCAnSW52YWxpZCBJViBsZW5ndGgnKTtcblxuICB0aGlzLml2ID0gbmV3IEFycmF5KDgpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuaXYubGVuZ3RoOyBpKyspXG4gICAgdGhpcy5pdltpXSA9IGl2W2ldO1xufVxuXG5mdW5jdGlvbiBpbnN0YW50aWF0ZShCYXNlKSB7XG4gIGZ1bmN0aW9uIENCQyhvcHRpb25zKSB7XG4gICAgQmFzZS5jYWxsKHRoaXMsIG9wdGlvbnMpO1xuICAgIHRoaXMuX2NiY0luaXQoKTtcbiAgfVxuICBpbmhlcml0cyhDQkMsIEJhc2UpO1xuXG4gIHZhciBrZXlzID0gT2JqZWN0LmtleXMocHJvdG8pO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIga2V5ID0ga2V5c1tpXTtcbiAgICBDQkMucHJvdG90eXBlW2tleV0gPSBwcm90b1trZXldO1xuICB9XG5cbiAgQ0JDLmNyZWF0ZSA9IGZ1bmN0aW9uIGNyZWF0ZShvcHRpb25zKSB7XG4gICAgcmV0dXJuIG5ldyBDQkMob3B0aW9ucyk7XG4gIH07XG5cbiAgcmV0dXJuIENCQztcbn1cblxuZXhwb3J0cy5pbnN0YW50aWF0ZSA9IGluc3RhbnRpYXRlO1xuXG5wcm90by5fY2JjSW5pdCA9IGZ1bmN0aW9uIF9jYmNJbml0KCkge1xuICB2YXIgc3RhdGUgPSBuZXcgQ0JDU3RhdGUodGhpcy5vcHRpb25zLml2KTtcbiAgdGhpcy5fY2JjU3RhdGUgPSBzdGF0ZTtcbn07XG5cbnByb3RvLl91cGRhdGUgPSBmdW5jdGlvbiBfdXBkYXRlKGlucCwgaW5PZmYsIG91dCwgb3V0T2ZmKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX2NiY1N0YXRlO1xuICB2YXIgc3VwZXJQcm90byA9IHRoaXMuY29uc3RydWN0b3Iuc3VwZXJfLnByb3RvdHlwZTtcblxuICB2YXIgaXYgPSBzdGF0ZS5pdjtcbiAgaWYgKHRoaXMudHlwZSA9PT0gJ2VuY3J5cHQnKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmJsb2NrU2l6ZTsgaSsrKVxuICAgICAgaXZbaV0gXj0gaW5wW2luT2ZmICsgaV07XG5cbiAgICBzdXBlclByb3RvLl91cGRhdGUuY2FsbCh0aGlzLCBpdiwgMCwgb3V0LCBvdXRPZmYpO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmJsb2NrU2l6ZTsgaSsrKVxuICAgICAgaXZbaV0gPSBvdXRbb3V0T2ZmICsgaV07XG4gIH0gZWxzZSB7XG4gICAgc3VwZXJQcm90by5fdXBkYXRlLmNhbGwodGhpcywgaW5wLCBpbk9mZiwgb3V0LCBvdXRPZmYpO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmJsb2NrU2l6ZTsgaSsrKVxuICAgICAgb3V0W291dE9mZiArIGldIF49IGl2W2ldO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmJsb2NrU2l6ZTsgaSsrKVxuICAgICAgaXZbaV0gPSBpbnBbaW5PZmYgKyBpXTtcbiAgfVxufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGFzc2VydCA9IHJlcXVpcmUoJ21pbmltYWxpc3RpYy1hc3NlcnQnKTtcblxuZnVuY3Rpb24gQ2lwaGVyKG9wdGlvbnMpIHtcbiAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcblxuICB0aGlzLnR5cGUgPSB0aGlzLm9wdGlvbnMudHlwZTtcbiAgdGhpcy5ibG9ja1NpemUgPSA4O1xuICB0aGlzLl9pbml0KCk7XG5cbiAgdGhpcy5idWZmZXIgPSBuZXcgQXJyYXkodGhpcy5ibG9ja1NpemUpO1xuICB0aGlzLmJ1ZmZlck9mZiA9IDA7XG59XG5tb2R1bGUuZXhwb3J0cyA9IENpcGhlcjtcblxuQ2lwaGVyLnByb3RvdHlwZS5faW5pdCA9IGZ1bmN0aW9uIF9pbml0KCkge1xuICAvLyBNaWdodCBiZSBvdmVycmlkZWRcbn07XG5cbkNpcGhlci5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24gdXBkYXRlKGRhdGEpIHtcbiAgaWYgKGRhdGEubGVuZ3RoID09PSAwKVxuICAgIHJldHVybiBbXTtcblxuICBpZiAodGhpcy50eXBlID09PSAnZGVjcnlwdCcpXG4gICAgcmV0dXJuIHRoaXMuX3VwZGF0ZURlY3J5cHQoZGF0YSk7XG4gIGVsc2VcbiAgICByZXR1cm4gdGhpcy5fdXBkYXRlRW5jcnlwdChkYXRhKTtcbn07XG5cbkNpcGhlci5wcm90b3R5cGUuX2J1ZmZlciA9IGZ1bmN0aW9uIF9idWZmZXIoZGF0YSwgb2ZmKSB7XG4gIC8vIEFwcGVuZCBkYXRhIHRvIGJ1ZmZlclxuICB2YXIgbWluID0gTWF0aC5taW4odGhpcy5idWZmZXIubGVuZ3RoIC0gdGhpcy5idWZmZXJPZmYsIGRhdGEubGVuZ3RoIC0gb2ZmKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBtaW47IGkrKylcbiAgICB0aGlzLmJ1ZmZlclt0aGlzLmJ1ZmZlck9mZiArIGldID0gZGF0YVtvZmYgKyBpXTtcbiAgdGhpcy5idWZmZXJPZmYgKz0gbWluO1xuXG4gIC8vIFNoaWZ0IG5leHRcbiAgcmV0dXJuIG1pbjtcbn07XG5cbkNpcGhlci5wcm90b3R5cGUuX2ZsdXNoQnVmZmVyID0gZnVuY3Rpb24gX2ZsdXNoQnVmZmVyKG91dCwgb2ZmKSB7XG4gIHRoaXMuX3VwZGF0ZSh0aGlzLmJ1ZmZlciwgMCwgb3V0LCBvZmYpO1xuICB0aGlzLmJ1ZmZlck9mZiA9IDA7XG4gIHJldHVybiB0aGlzLmJsb2NrU2l6ZTtcbn07XG5cbkNpcGhlci5wcm90b3R5cGUuX3VwZGF0ZUVuY3J5cHQgPSBmdW5jdGlvbiBfdXBkYXRlRW5jcnlwdChkYXRhKSB7XG4gIHZhciBpbnB1dE9mZiA9IDA7XG4gIHZhciBvdXRwdXRPZmYgPSAwO1xuXG4gIHZhciBjb3VudCA9ICgodGhpcy5idWZmZXJPZmYgKyBkYXRhLmxlbmd0aCkgLyB0aGlzLmJsb2NrU2l6ZSkgfCAwO1xuICB2YXIgb3V0ID0gbmV3IEFycmF5KGNvdW50ICogdGhpcy5ibG9ja1NpemUpO1xuXG4gIGlmICh0aGlzLmJ1ZmZlck9mZiAhPT0gMCkge1xuICAgIGlucHV0T2ZmICs9IHRoaXMuX2J1ZmZlcihkYXRhLCBpbnB1dE9mZik7XG5cbiAgICBpZiAodGhpcy5idWZmZXJPZmYgPT09IHRoaXMuYnVmZmVyLmxlbmd0aClcbiAgICAgIG91dHB1dE9mZiArPSB0aGlzLl9mbHVzaEJ1ZmZlcihvdXQsIG91dHB1dE9mZik7XG4gIH1cblxuICAvLyBXcml0ZSBibG9ja3NcbiAgdmFyIG1heCA9IGRhdGEubGVuZ3RoIC0gKChkYXRhLmxlbmd0aCAtIGlucHV0T2ZmKSAlIHRoaXMuYmxvY2tTaXplKTtcbiAgZm9yICg7IGlucHV0T2ZmIDwgbWF4OyBpbnB1dE9mZiArPSB0aGlzLmJsb2NrU2l6ZSkge1xuICAgIHRoaXMuX3VwZGF0ZShkYXRhLCBpbnB1dE9mZiwgb3V0LCBvdXRwdXRPZmYpO1xuICAgIG91dHB1dE9mZiArPSB0aGlzLmJsb2NrU2l6ZTtcbiAgfVxuXG4gIC8vIFF1ZXVlIHJlc3RcbiAgZm9yICg7IGlucHV0T2ZmIDwgZGF0YS5sZW5ndGg7IGlucHV0T2ZmKyssIHRoaXMuYnVmZmVyT2ZmKyspXG4gICAgdGhpcy5idWZmZXJbdGhpcy5idWZmZXJPZmZdID0gZGF0YVtpbnB1dE9mZl07XG5cbiAgcmV0dXJuIG91dDtcbn07XG5cbkNpcGhlci5wcm90b3R5cGUuX3VwZGF0ZURlY3J5cHQgPSBmdW5jdGlvbiBfdXBkYXRlRGVjcnlwdChkYXRhKSB7XG4gIHZhciBpbnB1dE9mZiA9IDA7XG4gIHZhciBvdXRwdXRPZmYgPSAwO1xuXG4gIHZhciBjb3VudCA9IE1hdGguY2VpbCgodGhpcy5idWZmZXJPZmYgKyBkYXRhLmxlbmd0aCkgLyB0aGlzLmJsb2NrU2l6ZSkgLSAxO1xuICB2YXIgb3V0ID0gbmV3IEFycmF5KGNvdW50ICogdGhpcy5ibG9ja1NpemUpO1xuXG4gIC8vIFRPRE8oaW5kdXRueSk6IG9wdGltaXplIGl0LCB0aGlzIGlzIGZhciBmcm9tIG9wdGltYWxcbiAgZm9yICg7IGNvdW50ID4gMDsgY291bnQtLSkge1xuICAgIGlucHV0T2ZmICs9IHRoaXMuX2J1ZmZlcihkYXRhLCBpbnB1dE9mZik7XG4gICAgb3V0cHV0T2ZmICs9IHRoaXMuX2ZsdXNoQnVmZmVyKG91dCwgb3V0cHV0T2ZmKTtcbiAgfVxuXG4gIC8vIEJ1ZmZlciByZXN0IG9mIHRoZSBpbnB1dFxuICBpbnB1dE9mZiArPSB0aGlzLl9idWZmZXIoZGF0YSwgaW5wdXRPZmYpO1xuXG4gIHJldHVybiBvdXQ7XG59O1xuXG5DaXBoZXIucHJvdG90eXBlLmZpbmFsID0gZnVuY3Rpb24gZmluYWwoYnVmZmVyKSB7XG4gIHZhciBmaXJzdDtcbiAgaWYgKGJ1ZmZlcilcbiAgICBmaXJzdCA9IHRoaXMudXBkYXRlKGJ1ZmZlcik7XG5cbiAgdmFyIGxhc3Q7XG4gIGlmICh0aGlzLnR5cGUgPT09ICdlbmNyeXB0JylcbiAgICBsYXN0ID0gdGhpcy5fZmluYWxFbmNyeXB0KCk7XG4gIGVsc2VcbiAgICBsYXN0ID0gdGhpcy5fZmluYWxEZWNyeXB0KCk7XG5cbiAgaWYgKGZpcnN0KVxuICAgIHJldHVybiBmaXJzdC5jb25jYXQobGFzdCk7XG4gIGVsc2VcbiAgICByZXR1cm4gbGFzdDtcbn07XG5cbkNpcGhlci5wcm90b3R5cGUuX3BhZCA9IGZ1bmN0aW9uIF9wYWQoYnVmZmVyLCBvZmYpIHtcbiAgaWYgKG9mZiA9PT0gMClcbiAgICByZXR1cm4gZmFsc2U7XG5cbiAgd2hpbGUgKG9mZiA8IGJ1ZmZlci5sZW5ndGgpXG4gICAgYnVmZmVyW29mZisrXSA9IDA7XG5cbiAgcmV0dXJuIHRydWU7XG59O1xuXG5DaXBoZXIucHJvdG90eXBlLl9maW5hbEVuY3J5cHQgPSBmdW5jdGlvbiBfZmluYWxFbmNyeXB0KCkge1xuICBpZiAoIXRoaXMuX3BhZCh0aGlzLmJ1ZmZlciwgdGhpcy5idWZmZXJPZmYpKVxuICAgIHJldHVybiBbXTtcblxuICB2YXIgb3V0ID0gbmV3IEFycmF5KHRoaXMuYmxvY2tTaXplKTtcbiAgdGhpcy5fdXBkYXRlKHRoaXMuYnVmZmVyLCAwLCBvdXQsIDApO1xuICByZXR1cm4gb3V0O1xufTtcblxuQ2lwaGVyLnByb3RvdHlwZS5fdW5wYWQgPSBmdW5jdGlvbiBfdW5wYWQoYnVmZmVyKSB7XG4gIHJldHVybiBidWZmZXI7XG59O1xuXG5DaXBoZXIucHJvdG90eXBlLl9maW5hbERlY3J5cHQgPSBmdW5jdGlvbiBfZmluYWxEZWNyeXB0KCkge1xuICBhc3NlcnQuZXF1YWwodGhpcy5idWZmZXJPZmYsIHRoaXMuYmxvY2tTaXplLCAnTm90IGVub3VnaCBkYXRhIHRvIGRlY3J5cHQnKTtcbiAgdmFyIG91dCA9IG5ldyBBcnJheSh0aGlzLmJsb2NrU2l6ZSk7XG4gIHRoaXMuX2ZsdXNoQnVmZmVyKG91dCwgMCk7XG5cbiAgcmV0dXJuIHRoaXMuX3VucGFkKG91dCk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgYXNzZXJ0ID0gcmVxdWlyZSgnbWluaW1hbGlzdGljLWFzc2VydCcpO1xudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcblxudmFyIGRlcyA9IHJlcXVpcmUoJy4uL2RlcycpO1xudmFyIHV0aWxzID0gZGVzLnV0aWxzO1xudmFyIENpcGhlciA9IGRlcy5DaXBoZXI7XG5cbmZ1bmN0aW9uIERFU1N0YXRlKCkge1xuICB0aGlzLnRtcCA9IG5ldyBBcnJheSgyKTtcbiAgdGhpcy5rZXlzID0gbnVsbDtcbn1cblxuZnVuY3Rpb24gREVTKG9wdGlvbnMpIHtcbiAgQ2lwaGVyLmNhbGwodGhpcywgb3B0aW9ucyk7XG5cbiAgdmFyIHN0YXRlID0gbmV3IERFU1N0YXRlKCk7XG4gIHRoaXMuX2Rlc1N0YXRlID0gc3RhdGU7XG5cbiAgdGhpcy5kZXJpdmVLZXlzKHN0YXRlLCBvcHRpb25zLmtleSk7XG59XG5pbmhlcml0cyhERVMsIENpcGhlcik7XG5tb2R1bGUuZXhwb3J0cyA9IERFUztcblxuREVTLmNyZWF0ZSA9IGZ1bmN0aW9uIGNyZWF0ZShvcHRpb25zKSB7XG4gIHJldHVybiBuZXcgREVTKG9wdGlvbnMpO1xufTtcblxudmFyIHNoaWZ0VGFibGUgPSBbXG4gIDEsIDEsIDIsIDIsIDIsIDIsIDIsIDIsXG4gIDEsIDIsIDIsIDIsIDIsIDIsIDIsIDFcbl07XG5cbkRFUy5wcm90b3R5cGUuZGVyaXZlS2V5cyA9IGZ1bmN0aW9uIGRlcml2ZUtleXMoc3RhdGUsIGtleSkge1xuICBzdGF0ZS5rZXlzID0gbmV3IEFycmF5KDE2ICogMik7XG5cbiAgYXNzZXJ0LmVxdWFsKGtleS5sZW5ndGgsIHRoaXMuYmxvY2tTaXplLCAnSW52YWxpZCBrZXkgbGVuZ3RoJyk7XG5cbiAgdmFyIGtMID0gdXRpbHMucmVhZFVJbnQzMkJFKGtleSwgMCk7XG4gIHZhciBrUiA9IHV0aWxzLnJlYWRVSW50MzJCRShrZXksIDQpO1xuXG4gIHV0aWxzLnBjMShrTCwga1IsIHN0YXRlLnRtcCwgMCk7XG4gIGtMID0gc3RhdGUudG1wWzBdO1xuICBrUiA9IHN0YXRlLnRtcFsxXTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdGF0ZS5rZXlzLmxlbmd0aDsgaSArPSAyKSB7XG4gICAgdmFyIHNoaWZ0ID0gc2hpZnRUYWJsZVtpID4+PiAxXTtcbiAgICBrTCA9IHV0aWxzLnIyOHNobChrTCwgc2hpZnQpO1xuICAgIGtSID0gdXRpbHMucjI4c2hsKGtSLCBzaGlmdCk7XG4gICAgdXRpbHMucGMyKGtMLCBrUiwgc3RhdGUua2V5cywgaSk7XG4gIH1cbn07XG5cbkRFUy5wcm90b3R5cGUuX3VwZGF0ZSA9IGZ1bmN0aW9uIF91cGRhdGUoaW5wLCBpbk9mZiwgb3V0LCBvdXRPZmYpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fZGVzU3RhdGU7XG5cbiAgdmFyIGwgPSB1dGlscy5yZWFkVUludDMyQkUoaW5wLCBpbk9mZik7XG4gIHZhciByID0gdXRpbHMucmVhZFVJbnQzMkJFKGlucCwgaW5PZmYgKyA0KTtcblxuICAvLyBJbml0aWFsIFBlcm11dGF0aW9uXG4gIHV0aWxzLmlwKGwsIHIsIHN0YXRlLnRtcCwgMCk7XG4gIGwgPSBzdGF0ZS50bXBbMF07XG4gIHIgPSBzdGF0ZS50bXBbMV07XG5cbiAgaWYgKHRoaXMudHlwZSA9PT0gJ2VuY3J5cHQnKVxuICAgIHRoaXMuX2VuY3J5cHQoc3RhdGUsIGwsIHIsIHN0YXRlLnRtcCwgMCk7XG4gIGVsc2VcbiAgICB0aGlzLl9kZWNyeXB0KHN0YXRlLCBsLCByLCBzdGF0ZS50bXAsIDApO1xuXG4gIGwgPSBzdGF0ZS50bXBbMF07XG4gIHIgPSBzdGF0ZS50bXBbMV07XG5cbiAgdXRpbHMud3JpdGVVSW50MzJCRShvdXQsIGwsIG91dE9mZik7XG4gIHV0aWxzLndyaXRlVUludDMyQkUob3V0LCByLCBvdXRPZmYgKyA0KTtcbn07XG5cbkRFUy5wcm90b3R5cGUuX3BhZCA9IGZ1bmN0aW9uIF9wYWQoYnVmZmVyLCBvZmYpIHtcbiAgdmFyIHZhbHVlID0gYnVmZmVyLmxlbmd0aCAtIG9mZjtcbiAgZm9yICh2YXIgaSA9IG9mZjsgaSA8IGJ1ZmZlci5sZW5ndGg7IGkrKylcbiAgICBidWZmZXJbaV0gPSB2YWx1ZTtcblxuICByZXR1cm4gdHJ1ZTtcbn07XG5cbkRFUy5wcm90b3R5cGUuX3VucGFkID0gZnVuY3Rpb24gX3VucGFkKGJ1ZmZlcikge1xuICB2YXIgcGFkID0gYnVmZmVyW2J1ZmZlci5sZW5ndGggLSAxXTtcbiAgZm9yICh2YXIgaSA9IGJ1ZmZlci5sZW5ndGggLSBwYWQ7IGkgPCBidWZmZXIubGVuZ3RoOyBpKyspXG4gICAgYXNzZXJ0LmVxdWFsKGJ1ZmZlcltpXSwgcGFkKTtcblxuICByZXR1cm4gYnVmZmVyLnNsaWNlKDAsIGJ1ZmZlci5sZW5ndGggLSBwYWQpO1xufTtcblxuREVTLnByb3RvdHlwZS5fZW5jcnlwdCA9IGZ1bmN0aW9uIF9lbmNyeXB0KHN0YXRlLCBsU3RhcnQsIHJTdGFydCwgb3V0LCBvZmYpIHtcbiAgdmFyIGwgPSBsU3RhcnQ7XG4gIHZhciByID0gclN0YXJ0O1xuXG4gIC8vIEFwcGx5IGYoKSB4MTYgdGltZXNcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdGF0ZS5rZXlzLmxlbmd0aDsgaSArPSAyKSB7XG4gICAgdmFyIGtleUwgPSBzdGF0ZS5rZXlzW2ldO1xuICAgIHZhciBrZXlSID0gc3RhdGUua2V5c1tpICsgMV07XG5cbiAgICAvLyBmKHIsIGspXG4gICAgdXRpbHMuZXhwYW5kKHIsIHN0YXRlLnRtcCwgMCk7XG5cbiAgICBrZXlMIF49IHN0YXRlLnRtcFswXTtcbiAgICBrZXlSIF49IHN0YXRlLnRtcFsxXTtcbiAgICB2YXIgcyA9IHV0aWxzLnN1YnN0aXR1dGUoa2V5TCwga2V5Uik7XG4gICAgdmFyIGYgPSB1dGlscy5wZXJtdXRlKHMpO1xuXG4gICAgdmFyIHQgPSByO1xuICAgIHIgPSAobCBeIGYpID4+PiAwO1xuICAgIGwgPSB0O1xuICB9XG5cbiAgLy8gUmV2ZXJzZSBJbml0aWFsIFBlcm11dGF0aW9uXG4gIHV0aWxzLnJpcChyLCBsLCBvdXQsIG9mZik7XG59O1xuXG5ERVMucHJvdG90eXBlLl9kZWNyeXB0ID0gZnVuY3Rpb24gX2RlY3J5cHQoc3RhdGUsIGxTdGFydCwgclN0YXJ0LCBvdXQsIG9mZikge1xuICB2YXIgbCA9IHJTdGFydDtcbiAgdmFyIHIgPSBsU3RhcnQ7XG5cbiAgLy8gQXBwbHkgZigpIHgxNiB0aW1lc1xuICBmb3IgKHZhciBpID0gc3RhdGUua2V5cy5sZW5ndGggLSAyOyBpID49IDA7IGkgLT0gMikge1xuICAgIHZhciBrZXlMID0gc3RhdGUua2V5c1tpXTtcbiAgICB2YXIga2V5UiA9IHN0YXRlLmtleXNbaSArIDFdO1xuXG4gICAgLy8gZihyLCBrKVxuICAgIHV0aWxzLmV4cGFuZChsLCBzdGF0ZS50bXAsIDApO1xuXG4gICAga2V5TCBePSBzdGF0ZS50bXBbMF07XG4gICAga2V5UiBePSBzdGF0ZS50bXBbMV07XG4gICAgdmFyIHMgPSB1dGlscy5zdWJzdGl0dXRlKGtleUwsIGtleVIpO1xuICAgIHZhciBmID0gdXRpbHMucGVybXV0ZShzKTtcblxuICAgIHZhciB0ID0gbDtcbiAgICBsID0gKHIgXiBmKSA+Pj4gMDtcbiAgICByID0gdDtcbiAgfVxuXG4gIC8vIFJldmVyc2UgSW5pdGlhbCBQZXJtdXRhdGlvblxuICB1dGlscy5yaXAobCwgciwgb3V0LCBvZmYpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGFzc2VydCA9IHJlcXVpcmUoJ21pbmltYWxpc3RpYy1hc3NlcnQnKTtcbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJyk7XG5cbnZhciBkZXMgPSByZXF1aXJlKCcuLi9kZXMnKTtcbnZhciBDaXBoZXIgPSBkZXMuQ2lwaGVyO1xudmFyIERFUyA9IGRlcy5ERVM7XG5cbmZ1bmN0aW9uIEVERVN0YXRlKHR5cGUsIGtleSkge1xuICBhc3NlcnQuZXF1YWwoa2V5Lmxlbmd0aCwgMjQsICdJbnZhbGlkIGtleSBsZW5ndGgnKTtcblxuICB2YXIgazEgPSBrZXkuc2xpY2UoMCwgOCk7XG4gIHZhciBrMiA9IGtleS5zbGljZSg4LCAxNik7XG4gIHZhciBrMyA9IGtleS5zbGljZSgxNiwgMjQpO1xuXG4gIGlmICh0eXBlID09PSAnZW5jcnlwdCcpIHtcbiAgICB0aGlzLmNpcGhlcnMgPSBbXG4gICAgICBERVMuY3JlYXRlKHsgdHlwZTogJ2VuY3J5cHQnLCBrZXk6IGsxIH0pLFxuICAgICAgREVTLmNyZWF0ZSh7IHR5cGU6ICdkZWNyeXB0Jywga2V5OiBrMiB9KSxcbiAgICAgIERFUy5jcmVhdGUoeyB0eXBlOiAnZW5jcnlwdCcsIGtleTogazMgfSlcbiAgICBdO1xuICB9IGVsc2Uge1xuICAgIHRoaXMuY2lwaGVycyA9IFtcbiAgICAgIERFUy5jcmVhdGUoeyB0eXBlOiAnZGVjcnlwdCcsIGtleTogazMgfSksXG4gICAgICBERVMuY3JlYXRlKHsgdHlwZTogJ2VuY3J5cHQnLCBrZXk6IGsyIH0pLFxuICAgICAgREVTLmNyZWF0ZSh7IHR5cGU6ICdkZWNyeXB0Jywga2V5OiBrMSB9KVxuICAgIF07XG4gIH1cbn1cblxuZnVuY3Rpb24gRURFKG9wdGlvbnMpIHtcbiAgQ2lwaGVyLmNhbGwodGhpcywgb3B0aW9ucyk7XG5cbiAgdmFyIHN0YXRlID0gbmV3IEVERVN0YXRlKHRoaXMudHlwZSwgdGhpcy5vcHRpb25zLmtleSk7XG4gIHRoaXMuX2VkZVN0YXRlID0gc3RhdGU7XG59XG5pbmhlcml0cyhFREUsIENpcGhlcik7XG5cbm1vZHVsZS5leHBvcnRzID0gRURFO1xuXG5FREUuY3JlYXRlID0gZnVuY3Rpb24gY3JlYXRlKG9wdGlvbnMpIHtcbiAgcmV0dXJuIG5ldyBFREUob3B0aW9ucyk7XG59O1xuXG5FREUucHJvdG90eXBlLl91cGRhdGUgPSBmdW5jdGlvbiBfdXBkYXRlKGlucCwgaW5PZmYsIG91dCwgb3V0T2ZmKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX2VkZVN0YXRlO1xuXG4gIHN0YXRlLmNpcGhlcnNbMF0uX3VwZGF0ZShpbnAsIGluT2ZmLCBvdXQsIG91dE9mZik7XG4gIHN0YXRlLmNpcGhlcnNbMV0uX3VwZGF0ZShvdXQsIG91dE9mZiwgb3V0LCBvdXRPZmYpO1xuICBzdGF0ZS5jaXBoZXJzWzJdLl91cGRhdGUob3V0LCBvdXRPZmYsIG91dCwgb3V0T2ZmKTtcbn07XG5cbkVERS5wcm90b3R5cGUuX3BhZCA9IERFUy5wcm90b3R5cGUuX3BhZDtcbkVERS5wcm90b3R5cGUuX3VucGFkID0gREVTLnByb3RvdHlwZS5fdW5wYWQ7XG4iLCIndXNlIHN0cmljdCc7XG5cbmV4cG9ydHMucmVhZFVJbnQzMkJFID0gZnVuY3Rpb24gcmVhZFVJbnQzMkJFKGJ5dGVzLCBvZmYpIHtcbiAgdmFyIHJlcyA9ICAoYnl0ZXNbMCArIG9mZl0gPDwgMjQpIHxcbiAgICAgICAgICAgICAoYnl0ZXNbMSArIG9mZl0gPDwgMTYpIHxcbiAgICAgICAgICAgICAoYnl0ZXNbMiArIG9mZl0gPDwgOCkgfFxuICAgICAgICAgICAgIGJ5dGVzWzMgKyBvZmZdO1xuICByZXR1cm4gcmVzID4+PiAwO1xufTtcblxuZXhwb3J0cy53cml0ZVVJbnQzMkJFID0gZnVuY3Rpb24gd3JpdGVVSW50MzJCRShieXRlcywgdmFsdWUsIG9mZikge1xuICBieXRlc1swICsgb2ZmXSA9IHZhbHVlID4+PiAyNDtcbiAgYnl0ZXNbMSArIG9mZl0gPSAodmFsdWUgPj4+IDE2KSAmIDB4ZmY7XG4gIGJ5dGVzWzIgKyBvZmZdID0gKHZhbHVlID4+PiA4KSAmIDB4ZmY7XG4gIGJ5dGVzWzMgKyBvZmZdID0gdmFsdWUgJiAweGZmO1xufTtcblxuZXhwb3J0cy5pcCA9IGZ1bmN0aW9uIGlwKGluTCwgaW5SLCBvdXQsIG9mZikge1xuICB2YXIgb3V0TCA9IDA7XG4gIHZhciBvdXRSID0gMDtcblxuICBmb3IgKHZhciBpID0gNjsgaSA+PSAwOyBpIC09IDIpIHtcbiAgICBmb3IgKHZhciBqID0gMDsgaiA8PSAyNDsgaiArPSA4KSB7XG4gICAgICBvdXRMIDw8PSAxO1xuICAgICAgb3V0TCB8PSAoaW5SID4+PiAoaiArIGkpKSAmIDE7XG4gICAgfVxuICAgIGZvciAodmFyIGogPSAwOyBqIDw9IDI0OyBqICs9IDgpIHtcbiAgICAgIG91dEwgPDw9IDE7XG4gICAgICBvdXRMIHw9IChpbkwgPj4+IChqICsgaSkpICYgMTtcbiAgICB9XG4gIH1cblxuICBmb3IgKHZhciBpID0gNjsgaSA+PSAwOyBpIC09IDIpIHtcbiAgICBmb3IgKHZhciBqID0gMTsgaiA8PSAyNTsgaiArPSA4KSB7XG4gICAgICBvdXRSIDw8PSAxO1xuICAgICAgb3V0UiB8PSAoaW5SID4+PiAoaiArIGkpKSAmIDE7XG4gICAgfVxuICAgIGZvciAodmFyIGogPSAxOyBqIDw9IDI1OyBqICs9IDgpIHtcbiAgICAgIG91dFIgPDw9IDE7XG4gICAgICBvdXRSIHw9IChpbkwgPj4+IChqICsgaSkpICYgMTtcbiAgICB9XG4gIH1cblxuICBvdXRbb2ZmICsgMF0gPSBvdXRMID4+PiAwO1xuICBvdXRbb2ZmICsgMV0gPSBvdXRSID4+PiAwO1xufTtcblxuZXhwb3J0cy5yaXAgPSBmdW5jdGlvbiByaXAoaW5MLCBpblIsIG91dCwgb2ZmKSB7XG4gIHZhciBvdXRMID0gMDtcbiAgdmFyIG91dFIgPSAwO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgNDsgaSsrKSB7XG4gICAgZm9yICh2YXIgaiA9IDI0OyBqID49IDA7IGogLT0gOCkge1xuICAgICAgb3V0TCA8PD0gMTtcbiAgICAgIG91dEwgfD0gKGluUiA+Pj4gKGogKyBpKSkgJiAxO1xuICAgICAgb3V0TCA8PD0gMTtcbiAgICAgIG91dEwgfD0gKGluTCA+Pj4gKGogKyBpKSkgJiAxO1xuICAgIH1cbiAgfVxuICBmb3IgKHZhciBpID0gNDsgaSA8IDg7IGkrKykge1xuICAgIGZvciAodmFyIGogPSAyNDsgaiA+PSAwOyBqIC09IDgpIHtcbiAgICAgIG91dFIgPDw9IDE7XG4gICAgICBvdXRSIHw9IChpblIgPj4+IChqICsgaSkpICYgMTtcbiAgICAgIG91dFIgPDw9IDE7XG4gICAgICBvdXRSIHw9IChpbkwgPj4+IChqICsgaSkpICYgMTtcbiAgICB9XG4gIH1cblxuICBvdXRbb2ZmICsgMF0gPSBvdXRMID4+PiAwO1xuICBvdXRbb2ZmICsgMV0gPSBvdXRSID4+PiAwO1xufTtcblxuZXhwb3J0cy5wYzEgPSBmdW5jdGlvbiBwYzEoaW5MLCBpblIsIG91dCwgb2ZmKSB7XG4gIHZhciBvdXRMID0gMDtcbiAgdmFyIG91dFIgPSAwO1xuXG4gIC8vIDcsIDE1LCAyMywgMzEsIDM5LCA0NywgNTUsIDYzXG4gIC8vIDYsIDE0LCAyMiwgMzAsIDM5LCA0NywgNTUsIDYzXG4gIC8vIDUsIDEzLCAyMSwgMjksIDM5LCA0NywgNTUsIDYzXG4gIC8vIDQsIDEyLCAyMCwgMjhcbiAgZm9yICh2YXIgaSA9IDc7IGkgPj0gNTsgaS0tKSB7XG4gICAgZm9yICh2YXIgaiA9IDA7IGogPD0gMjQ7IGogKz0gOCkge1xuICAgICAgb3V0TCA8PD0gMTtcbiAgICAgIG91dEwgfD0gKGluUiA+PiAoaiArIGkpKSAmIDE7XG4gICAgfVxuICAgIGZvciAodmFyIGogPSAwOyBqIDw9IDI0OyBqICs9IDgpIHtcbiAgICAgIG91dEwgPDw9IDE7XG4gICAgICBvdXRMIHw9IChpbkwgPj4gKGogKyBpKSkgJiAxO1xuICAgIH1cbiAgfVxuICBmb3IgKHZhciBqID0gMDsgaiA8PSAyNDsgaiArPSA4KSB7XG4gICAgb3V0TCA8PD0gMTtcbiAgICBvdXRMIHw9IChpblIgPj4gKGogKyBpKSkgJiAxO1xuICB9XG5cbiAgLy8gMSwgOSwgMTcsIDI1LCAzMywgNDEsIDQ5LCA1N1xuICAvLyAyLCAxMCwgMTgsIDI2LCAzNCwgNDIsIDUwLCA1OFxuICAvLyAzLCAxMSwgMTksIDI3LCAzNSwgNDMsIDUxLCA1OVxuICAvLyAzNiwgNDQsIDUyLCA2MFxuICBmb3IgKHZhciBpID0gMTsgaSA8PSAzOyBpKyspIHtcbiAgICBmb3IgKHZhciBqID0gMDsgaiA8PSAyNDsgaiArPSA4KSB7XG4gICAgICBvdXRSIDw8PSAxO1xuICAgICAgb3V0UiB8PSAoaW5SID4+IChqICsgaSkpICYgMTtcbiAgICB9XG4gICAgZm9yICh2YXIgaiA9IDA7IGogPD0gMjQ7IGogKz0gOCkge1xuICAgICAgb3V0UiA8PD0gMTtcbiAgICAgIG91dFIgfD0gKGluTCA+PiAoaiArIGkpKSAmIDE7XG4gICAgfVxuICB9XG4gIGZvciAodmFyIGogPSAwOyBqIDw9IDI0OyBqICs9IDgpIHtcbiAgICBvdXRSIDw8PSAxO1xuICAgIG91dFIgfD0gKGluTCA+PiAoaiArIGkpKSAmIDE7XG4gIH1cblxuICBvdXRbb2ZmICsgMF0gPSBvdXRMID4+PiAwO1xuICBvdXRbb2ZmICsgMV0gPSBvdXRSID4+PiAwO1xufTtcblxuZXhwb3J0cy5yMjhzaGwgPSBmdW5jdGlvbiByMjhzaGwobnVtLCBzaGlmdCkge1xuICByZXR1cm4gKChudW0gPDwgc2hpZnQpICYgMHhmZmZmZmZmKSB8IChudW0gPj4+ICgyOCAtIHNoaWZ0KSk7XG59O1xuXG52YXIgcGMydGFibGUgPSBbXG4gIC8vIGluTCA9PiBvdXRMXG4gIDE0LCAxMSwgMTcsIDQsIDI3LCAyMywgMjUsIDAsXG4gIDEzLCAyMiwgNywgMTgsIDUsIDksIDE2LCAyNCxcbiAgMiwgMjAsIDEyLCAyMSwgMSwgOCwgMTUsIDI2LFxuXG4gIC8vIGluUiA9PiBvdXRSXG4gIDE1LCA0LCAyNSwgMTksIDksIDEsIDI2LCAxNixcbiAgNSwgMTEsIDIzLCA4LCAxMiwgNywgMTcsIDAsXG4gIDIyLCAzLCAxMCwgMTQsIDYsIDIwLCAyNywgMjRcbl07XG5cbmV4cG9ydHMucGMyID0gZnVuY3Rpb24gcGMyKGluTCwgaW5SLCBvdXQsIG9mZikge1xuICB2YXIgb3V0TCA9IDA7XG4gIHZhciBvdXRSID0gMDtcblxuICB2YXIgbGVuID0gcGMydGFibGUubGVuZ3RoID4+PiAxO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgb3V0TCA8PD0gMTtcbiAgICBvdXRMIHw9IChpbkwgPj4+IHBjMnRhYmxlW2ldKSAmIDB4MTtcbiAgfVxuICBmb3IgKHZhciBpID0gbGVuOyBpIDwgcGMydGFibGUubGVuZ3RoOyBpKyspIHtcbiAgICBvdXRSIDw8PSAxO1xuICAgIG91dFIgfD0gKGluUiA+Pj4gcGMydGFibGVbaV0pICYgMHgxO1xuICB9XG5cbiAgb3V0W29mZiArIDBdID0gb3V0TCA+Pj4gMDtcbiAgb3V0W29mZiArIDFdID0gb3V0UiA+Pj4gMDtcbn07XG5cbmV4cG9ydHMuZXhwYW5kID0gZnVuY3Rpb24gZXhwYW5kKHIsIG91dCwgb2ZmKSB7XG4gIHZhciBvdXRMID0gMDtcbiAgdmFyIG91dFIgPSAwO1xuXG4gIG91dEwgPSAoKHIgJiAxKSA8PCA1KSB8IChyID4+PiAyNyk7XG4gIGZvciAodmFyIGkgPSAyMzsgaSA+PSAxNTsgaSAtPSA0KSB7XG4gICAgb3V0TCA8PD0gNjtcbiAgICBvdXRMIHw9IChyID4+PiBpKSAmIDB4M2Y7XG4gIH1cbiAgZm9yICh2YXIgaSA9IDExOyBpID49IDM7IGkgLT0gNCkge1xuICAgIG91dFIgfD0gKHIgPj4+IGkpICYgMHgzZjtcbiAgICBvdXRSIDw8PSA2O1xuICB9XG4gIG91dFIgfD0gKChyICYgMHgxZikgPDwgMSkgfCAociA+Pj4gMzEpO1xuXG4gIG91dFtvZmYgKyAwXSA9IG91dEwgPj4+IDA7XG4gIG91dFtvZmYgKyAxXSA9IG91dFIgPj4+IDA7XG59O1xuXG52YXIgc1RhYmxlID0gW1xuICAxNCwgMCwgNCwgMTUsIDEzLCA3LCAxLCA0LCAyLCAxNCwgMTUsIDIsIDExLCAxMywgOCwgMSxcbiAgMywgMTAsIDEwLCA2LCA2LCAxMiwgMTIsIDExLCA1LCA5LCA5LCA1LCAwLCAzLCA3LCA4LFxuICA0LCAxNSwgMSwgMTIsIDE0LCA4LCA4LCAyLCAxMywgNCwgNiwgOSwgMiwgMSwgMTEsIDcsXG4gIDE1LCA1LCAxMiwgMTEsIDksIDMsIDcsIDE0LCAzLCAxMCwgMTAsIDAsIDUsIDYsIDAsIDEzLFxuXG4gIDE1LCAzLCAxLCAxMywgOCwgNCwgMTQsIDcsIDYsIDE1LCAxMSwgMiwgMywgOCwgNCwgMTQsXG4gIDksIDEyLCA3LCAwLCAyLCAxLCAxMywgMTAsIDEyLCA2LCAwLCA5LCA1LCAxMSwgMTAsIDUsXG4gIDAsIDEzLCAxNCwgOCwgNywgMTAsIDExLCAxLCAxMCwgMywgNCwgMTUsIDEzLCA0LCAxLCAyLFxuICA1LCAxMSwgOCwgNiwgMTIsIDcsIDYsIDEyLCA5LCAwLCAzLCA1LCAyLCAxNCwgMTUsIDksXG5cbiAgMTAsIDEzLCAwLCA3LCA5LCAwLCAxNCwgOSwgNiwgMywgMywgNCwgMTUsIDYsIDUsIDEwLFxuICAxLCAyLCAxMywgOCwgMTIsIDUsIDcsIDE0LCAxMSwgMTIsIDQsIDExLCAyLCAxNSwgOCwgMSxcbiAgMTMsIDEsIDYsIDEwLCA0LCAxMywgOSwgMCwgOCwgNiwgMTUsIDksIDMsIDgsIDAsIDcsXG4gIDExLCA0LCAxLCAxNSwgMiwgMTQsIDEyLCAzLCA1LCAxMSwgMTAsIDUsIDE0LCAyLCA3LCAxMixcblxuICA3LCAxMywgMTMsIDgsIDE0LCAxMSwgMywgNSwgMCwgNiwgNiwgMTUsIDksIDAsIDEwLCAzLFxuICAxLCA0LCAyLCA3LCA4LCAyLCA1LCAxMiwgMTEsIDEsIDEyLCAxMCwgNCwgMTQsIDE1LCA5LFxuICAxMCwgMywgNiwgMTUsIDksIDAsIDAsIDYsIDEyLCAxMCwgMTEsIDEsIDcsIDEzLCAxMywgOCxcbiAgMTUsIDksIDEsIDQsIDMsIDUsIDE0LCAxMSwgNSwgMTIsIDIsIDcsIDgsIDIsIDQsIDE0LFxuXG4gIDIsIDE0LCAxMiwgMTEsIDQsIDIsIDEsIDEyLCA3LCA0LCAxMCwgNywgMTEsIDEzLCA2LCAxLFxuICA4LCA1LCA1LCAwLCAzLCAxNSwgMTUsIDEwLCAxMywgMywgMCwgOSwgMTQsIDgsIDksIDYsXG4gIDQsIDExLCAyLCA4LCAxLCAxMiwgMTEsIDcsIDEwLCAxLCAxMywgMTQsIDcsIDIsIDgsIDEzLFxuICAxNSwgNiwgOSwgMTUsIDEyLCAwLCA1LCA5LCA2LCAxMCwgMywgNCwgMCwgNSwgMTQsIDMsXG5cbiAgMTIsIDEwLCAxLCAxNSwgMTAsIDQsIDE1LCAyLCA5LCA3LCAyLCAxMiwgNiwgOSwgOCwgNSxcbiAgMCwgNiwgMTMsIDEsIDMsIDEzLCA0LCAxNCwgMTQsIDAsIDcsIDExLCA1LCAzLCAxMSwgOCxcbiAgOSwgNCwgMTQsIDMsIDE1LCAyLCA1LCAxMiwgMiwgOSwgOCwgNSwgMTIsIDE1LCAzLCAxMCxcbiAgNywgMTEsIDAsIDE0LCA0LCAxLCAxMCwgNywgMSwgNiwgMTMsIDAsIDExLCA4LCA2LCAxMyxcblxuICA0LCAxMywgMTEsIDAsIDIsIDExLCAxNCwgNywgMTUsIDQsIDAsIDksIDgsIDEsIDEzLCAxMCxcbiAgMywgMTQsIDEyLCAzLCA5LCA1LCA3LCAxMiwgNSwgMiwgMTAsIDE1LCA2LCA4LCAxLCA2LFxuICAxLCA2LCA0LCAxMSwgMTEsIDEzLCAxMywgOCwgMTIsIDEsIDMsIDQsIDcsIDEwLCAxNCwgNyxcbiAgMTAsIDksIDE1LCA1LCA2LCAwLCA4LCAxNSwgMCwgMTQsIDUsIDIsIDksIDMsIDIsIDEyLFxuXG4gIDEzLCAxLCAyLCAxNSwgOCwgMTMsIDQsIDgsIDYsIDEwLCAxNSwgMywgMTEsIDcsIDEsIDQsXG4gIDEwLCAxMiwgOSwgNSwgMywgNiwgMTQsIDExLCA1LCAwLCAwLCAxNCwgMTIsIDksIDcsIDIsXG4gIDcsIDIsIDExLCAxLCA0LCAxNCwgMSwgNywgOSwgNCwgMTIsIDEwLCAxNCwgOCwgMiwgMTMsXG4gIDAsIDE1LCA2LCAxMiwgMTAsIDksIDEzLCAwLCAxNSwgMywgMywgNSwgNSwgNiwgOCwgMTFcbl07XG5cbmV4cG9ydHMuc3Vic3RpdHV0ZSA9IGZ1bmN0aW9uIHN1YnN0aXR1dGUoaW5MLCBpblIpIHtcbiAgdmFyIG91dCA9IDA7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgNDsgaSsrKSB7XG4gICAgdmFyIGIgPSAoaW5MID4+PiAoMTggLSBpICogNikpICYgMHgzZjtcbiAgICB2YXIgc2IgPSBzVGFibGVbaSAqIDB4NDAgKyBiXTtcblxuICAgIG91dCA8PD0gNDtcbiAgICBvdXQgfD0gc2I7XG4gIH1cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCA0OyBpKyspIHtcbiAgICB2YXIgYiA9IChpblIgPj4+ICgxOCAtIGkgKiA2KSkgJiAweDNmO1xuICAgIHZhciBzYiA9IHNUYWJsZVs0ICogMHg0MCArIGkgKiAweDQwICsgYl07XG5cbiAgICBvdXQgPDw9IDQ7XG4gICAgb3V0IHw9IHNiO1xuICB9XG4gIHJldHVybiBvdXQgPj4+IDA7XG59O1xuXG52YXIgcGVybXV0ZVRhYmxlID0gW1xuICAxNiwgMjUsIDEyLCAxMSwgMywgMjAsIDQsIDE1LCAzMSwgMTcsIDksIDYsIDI3LCAxNCwgMSwgMjIsXG4gIDMwLCAyNCwgOCwgMTgsIDAsIDUsIDI5LCAyMywgMTMsIDE5LCAyLCAyNiwgMTAsIDIxLCAyOCwgN1xuXTtcblxuZXhwb3J0cy5wZXJtdXRlID0gZnVuY3Rpb24gcGVybXV0ZShudW0pIHtcbiAgdmFyIG91dCA9IDA7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcGVybXV0ZVRhYmxlLmxlbmd0aDsgaSsrKSB7XG4gICAgb3V0IDw8PSAxO1xuICAgIG91dCB8PSAobnVtID4+PiBwZXJtdXRlVGFibGVbaV0pICYgMHgxO1xuICB9XG4gIHJldHVybiBvdXQgPj4+IDA7XG59O1xuXG5leHBvcnRzLnBhZFNwbGl0ID0gZnVuY3Rpb24gcGFkU3BsaXQobnVtLCBzaXplLCBncm91cCkge1xuICB2YXIgc3RyID0gbnVtLnRvU3RyaW5nKDIpO1xuICB3aGlsZSAoc3RyLmxlbmd0aCA8IHNpemUpXG4gICAgc3RyID0gJzAnICsgc3RyO1xuXG4gIHZhciBvdXQgPSBbXTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaXplOyBpICs9IGdyb3VwKVxuICAgIG91dC5wdXNoKHN0ci5zbGljZShpLCBpICsgZ3JvdXApKTtcbiAgcmV0dXJuIG91dC5qb2luKCcgJyk7XG59O1xuIiwidmFyIGdlbmVyYXRlUHJpbWUgPSByZXF1aXJlKCcuL2xpYi9nZW5lcmF0ZVByaW1lJylcbnZhciBwcmltZXMgPSByZXF1aXJlKCcuL2xpYi9wcmltZXMuanNvbicpXG5cbnZhciBESCA9IHJlcXVpcmUoJy4vbGliL2RoJylcblxuZnVuY3Rpb24gZ2V0RGlmZmllSGVsbG1hbiAobW9kKSB7XG4gIHZhciBwcmltZSA9IG5ldyBCdWZmZXIocHJpbWVzW21vZF0ucHJpbWUsICdoZXgnKVxuICB2YXIgZ2VuID0gbmV3IEJ1ZmZlcihwcmltZXNbbW9kXS5nZW4sICdoZXgnKVxuXG4gIHJldHVybiBuZXcgREgocHJpbWUsIGdlbilcbn1cblxudmFyIEVOQ09ESU5HUyA9IHtcbiAgJ2JpbmFyeSc6IHRydWUsICdoZXgnOiB0cnVlLCAnYmFzZTY0JzogdHJ1ZVxufVxuXG5mdW5jdGlvbiBjcmVhdGVEaWZmaWVIZWxsbWFuIChwcmltZSwgZW5jLCBnZW5lcmF0b3IsIGdlbmMpIHtcbiAgaWYgKEJ1ZmZlci5pc0J1ZmZlcihlbmMpIHx8IEVOQ09ESU5HU1tlbmNdID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gY3JlYXRlRGlmZmllSGVsbG1hbihwcmltZSwgJ2JpbmFyeScsIGVuYywgZ2VuZXJhdG9yKVxuICB9XG5cbiAgZW5jID0gZW5jIHx8ICdiaW5hcnknXG4gIGdlbmMgPSBnZW5jIHx8ICdiaW5hcnknXG4gIGdlbmVyYXRvciA9IGdlbmVyYXRvciB8fCBuZXcgQnVmZmVyKFsyXSlcblxuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihnZW5lcmF0b3IpKSB7XG4gICAgZ2VuZXJhdG9yID0gbmV3IEJ1ZmZlcihnZW5lcmF0b3IsIGdlbmMpXG4gIH1cblxuICBpZiAodHlwZW9mIHByaW1lID09PSAnbnVtYmVyJykge1xuICAgIHJldHVybiBuZXcgREgoZ2VuZXJhdGVQcmltZShwcmltZSwgZ2VuZXJhdG9yKSwgZ2VuZXJhdG9yLCB0cnVlKVxuICB9XG5cbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIocHJpbWUpKSB7XG4gICAgcHJpbWUgPSBuZXcgQnVmZmVyKHByaW1lLCBlbmMpXG4gIH1cblxuICByZXR1cm4gbmV3IERIKHByaW1lLCBnZW5lcmF0b3IsIHRydWUpXG59XG5cbmV4cG9ydHMuRGlmZmllSGVsbG1hbkdyb3VwID0gZXhwb3J0cy5jcmVhdGVEaWZmaWVIZWxsbWFuR3JvdXAgPSBleHBvcnRzLmdldERpZmZpZUhlbGxtYW4gPSBnZXREaWZmaWVIZWxsbWFuXG5leHBvcnRzLmNyZWF0ZURpZmZpZUhlbGxtYW4gPSBleHBvcnRzLkRpZmZpZUhlbGxtYW4gPSBjcmVhdGVEaWZmaWVIZWxsbWFuXG4iLCJ2YXIgQk4gPSByZXF1aXJlKCdibi5qcycpO1xudmFyIE1pbGxlclJhYmluID0gcmVxdWlyZSgnbWlsbGVyLXJhYmluJyk7XG52YXIgbWlsbGVyUmFiaW4gPSBuZXcgTWlsbGVyUmFiaW4oKTtcbnZhciBUV0VOVFlGT1VSID0gbmV3IEJOKDI0KTtcbnZhciBFTEVWRU4gPSBuZXcgQk4oMTEpO1xudmFyIFRFTiA9IG5ldyBCTigxMCk7XG52YXIgVEhSRUUgPSBuZXcgQk4oMyk7XG52YXIgU0VWRU4gPSBuZXcgQk4oNyk7XG52YXIgcHJpbWVzID0gcmVxdWlyZSgnLi9nZW5lcmF0ZVByaW1lJyk7XG52YXIgcmFuZG9tQnl0ZXMgPSByZXF1aXJlKCdyYW5kb21ieXRlcycpO1xubW9kdWxlLmV4cG9ydHMgPSBESDtcblxuZnVuY3Rpb24gc2V0UHVibGljS2V5KHB1YiwgZW5jKSB7XG4gIGVuYyA9IGVuYyB8fCAndXRmOCc7XG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKHB1YikpIHtcbiAgICBwdWIgPSBuZXcgQnVmZmVyKHB1YiwgZW5jKTtcbiAgfVxuICB0aGlzLl9wdWIgPSBuZXcgQk4ocHViKTtcbiAgcmV0dXJuIHRoaXM7XG59XG5cbmZ1bmN0aW9uIHNldFByaXZhdGVLZXkocHJpdiwgZW5jKSB7XG4gIGVuYyA9IGVuYyB8fCAndXRmOCc7XG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKHByaXYpKSB7XG4gICAgcHJpdiA9IG5ldyBCdWZmZXIocHJpdiwgZW5jKTtcbiAgfVxuICB0aGlzLl9wcml2ID0gbmV3IEJOKHByaXYpO1xuICByZXR1cm4gdGhpcztcbn1cblxudmFyIHByaW1lQ2FjaGUgPSB7fTtcbmZ1bmN0aW9uIGNoZWNrUHJpbWUocHJpbWUsIGdlbmVyYXRvcikge1xuICB2YXIgZ2VuID0gZ2VuZXJhdG9yLnRvU3RyaW5nKCdoZXgnKTtcbiAgdmFyIGhleCA9IFtnZW4sIHByaW1lLnRvU3RyaW5nKDE2KV0uam9pbignXycpO1xuICBpZiAoaGV4IGluIHByaW1lQ2FjaGUpIHtcbiAgICByZXR1cm4gcHJpbWVDYWNoZVtoZXhdO1xuICB9XG4gIHZhciBlcnJvciA9IDA7XG5cbiAgaWYgKHByaW1lLmlzRXZlbigpIHx8XG4gICAgIXByaW1lcy5zaW1wbGVTaWV2ZSB8fFxuICAgICFwcmltZXMuZmVybWF0VGVzdChwcmltZSkgfHxcbiAgICAhbWlsbGVyUmFiaW4udGVzdChwcmltZSkpIHtcbiAgICAvL25vdCBhIHByaW1lIHNvICsxXG4gICAgZXJyb3IgKz0gMTtcblxuICAgIGlmIChnZW4gPT09ICcwMicgfHwgZ2VuID09PSAnMDUnKSB7XG4gICAgICAvLyB3ZSdkIGJlIGFibGUgdG8gY2hlY2sgdGhlIGdlbmVyYXRvclxuICAgICAgLy8gaXQgd291bGQgZmFpbCBzbyArOFxuICAgICAgZXJyb3IgKz0gODtcbiAgICB9IGVsc2Uge1xuICAgICAgLy93ZSB3b3VsZG4ndCBiZSBhYmxlIHRvIHRlc3QgdGhlIGdlbmVyYXRvclxuICAgICAgLy8gc28gKzRcbiAgICAgIGVycm9yICs9IDQ7XG4gICAgfVxuICAgIHByaW1lQ2FjaGVbaGV4XSA9IGVycm9yO1xuICAgIHJldHVybiBlcnJvcjtcbiAgfVxuICBpZiAoIW1pbGxlclJhYmluLnRlc3QocHJpbWUuc2hybigxKSkpIHtcbiAgICAvL25vdCBhIHNhZmUgcHJpbWVcbiAgICBlcnJvciArPSAyO1xuICB9XG4gIHZhciByZW07XG4gIHN3aXRjaCAoZ2VuKSB7XG4gICAgY2FzZSAnMDInOlxuICAgICAgaWYgKHByaW1lLm1vZChUV0VOVFlGT1VSKS5jbXAoRUxFVkVOKSkge1xuICAgICAgICAvLyB1bnN1aWRhYmxlIGdlbmVyYXRvclxuICAgICAgICBlcnJvciArPSA4O1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnMDUnOlxuICAgICAgcmVtID0gcHJpbWUubW9kKFRFTik7XG4gICAgICBpZiAocmVtLmNtcChUSFJFRSkgJiYgcmVtLmNtcChTRVZFTikpIHtcbiAgICAgICAgLy8gcHJpbWUgbW9kIDEwIG5lZWRzIHRvIGVxdWFsIDMgb3IgN1xuICAgICAgICBlcnJvciArPSA4O1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIGVycm9yICs9IDQ7XG4gIH1cbiAgcHJpbWVDYWNoZVtoZXhdID0gZXJyb3I7XG4gIHJldHVybiBlcnJvcjtcbn1cblxuZnVuY3Rpb24gREgocHJpbWUsIGdlbmVyYXRvciwgbWFsbGVhYmxlKSB7XG4gIHRoaXMuc2V0R2VuZXJhdG9yKGdlbmVyYXRvcik7XG4gIHRoaXMuX19wcmltZSA9IG5ldyBCTihwcmltZSk7XG4gIHRoaXMuX3ByaW1lID0gQk4ubW9udCh0aGlzLl9fcHJpbWUpO1xuICB0aGlzLl9wcmltZUxlbiA9IHByaW1lLmxlbmd0aDtcbiAgdGhpcy5fcHViID0gdW5kZWZpbmVkO1xuICB0aGlzLl9wcml2ID0gdW5kZWZpbmVkO1xuICB0aGlzLl9wcmltZUNvZGUgPSB1bmRlZmluZWQ7XG4gIGlmIChtYWxsZWFibGUpIHtcbiAgICB0aGlzLnNldFB1YmxpY0tleSA9IHNldFB1YmxpY0tleTtcbiAgICB0aGlzLnNldFByaXZhdGVLZXkgPSBzZXRQcml2YXRlS2V5O1xuICB9IGVsc2Uge1xuICAgIHRoaXMuX3ByaW1lQ29kZSA9IDg7XG4gIH1cbn1cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShESC5wcm90b3R5cGUsICd2ZXJpZnlFcnJvcicsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHR5cGVvZiB0aGlzLl9wcmltZUNvZGUgIT09ICdudW1iZXInKSB7XG4gICAgICB0aGlzLl9wcmltZUNvZGUgPSBjaGVja1ByaW1lKHRoaXMuX19wcmltZSwgdGhpcy5fX2dlbik7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9wcmltZUNvZGU7XG4gIH1cbn0pO1xuREgucHJvdG90eXBlLmdlbmVyYXRlS2V5cyA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKCF0aGlzLl9wcml2KSB7XG4gICAgdGhpcy5fcHJpdiA9IG5ldyBCTihyYW5kb21CeXRlcyh0aGlzLl9wcmltZUxlbikpO1xuICB9XG4gIHRoaXMuX3B1YiA9IHRoaXMuX2dlbi50b1JlZCh0aGlzLl9wcmltZSkucmVkUG93KHRoaXMuX3ByaXYpLmZyb21SZWQoKTtcbiAgcmV0dXJuIHRoaXMuZ2V0UHVibGljS2V5KCk7XG59O1xuXG5ESC5wcm90b3R5cGUuY29tcHV0ZVNlY3JldCA9IGZ1bmN0aW9uIChvdGhlcikge1xuICBvdGhlciA9IG5ldyBCTihvdGhlcik7XG4gIG90aGVyID0gb3RoZXIudG9SZWQodGhpcy5fcHJpbWUpO1xuICB2YXIgc2VjcmV0ID0gb3RoZXIucmVkUG93KHRoaXMuX3ByaXYpLmZyb21SZWQoKTtcbiAgdmFyIG91dCA9IG5ldyBCdWZmZXIoc2VjcmV0LnRvQXJyYXkoKSk7XG4gIHZhciBwcmltZSA9IHRoaXMuZ2V0UHJpbWUoKTtcbiAgaWYgKG91dC5sZW5ndGggPCBwcmltZS5sZW5ndGgpIHtcbiAgICB2YXIgZnJvbnQgPSBuZXcgQnVmZmVyKHByaW1lLmxlbmd0aCAtIG91dC5sZW5ndGgpO1xuICAgIGZyb250LmZpbGwoMCk7XG4gICAgb3V0ID0gQnVmZmVyLmNvbmNhdChbZnJvbnQsIG91dF0pO1xuICB9XG4gIHJldHVybiBvdXQ7XG59O1xuXG5ESC5wcm90b3R5cGUuZ2V0UHVibGljS2V5ID0gZnVuY3Rpb24gZ2V0UHVibGljS2V5KGVuYykge1xuICByZXR1cm4gZm9ybWF0UmV0dXJuVmFsdWUodGhpcy5fcHViLCBlbmMpO1xufTtcblxuREgucHJvdG90eXBlLmdldFByaXZhdGVLZXkgPSBmdW5jdGlvbiBnZXRQcml2YXRlS2V5KGVuYykge1xuICByZXR1cm4gZm9ybWF0UmV0dXJuVmFsdWUodGhpcy5fcHJpdiwgZW5jKTtcbn07XG5cbkRILnByb3RvdHlwZS5nZXRQcmltZSA9IGZ1bmN0aW9uIChlbmMpIHtcbiAgcmV0dXJuIGZvcm1hdFJldHVyblZhbHVlKHRoaXMuX19wcmltZSwgZW5jKTtcbn07XG5cbkRILnByb3RvdHlwZS5nZXRHZW5lcmF0b3IgPSBmdW5jdGlvbiAoZW5jKSB7XG4gIHJldHVybiBmb3JtYXRSZXR1cm5WYWx1ZSh0aGlzLl9nZW4sIGVuYyk7XG59O1xuXG5ESC5wcm90b3R5cGUuc2V0R2VuZXJhdG9yID0gZnVuY3Rpb24gKGdlbiwgZW5jKSB7XG4gIGVuYyA9IGVuYyB8fCAndXRmOCc7XG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKGdlbikpIHtcbiAgICBnZW4gPSBuZXcgQnVmZmVyKGdlbiwgZW5jKTtcbiAgfVxuICB0aGlzLl9fZ2VuID0gZ2VuO1xuICB0aGlzLl9nZW4gPSBuZXcgQk4oZ2VuKTtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5mdW5jdGlvbiBmb3JtYXRSZXR1cm5WYWx1ZShibiwgZW5jKSB7XG4gIHZhciBidWYgPSBuZXcgQnVmZmVyKGJuLnRvQXJyYXkoKSk7XG4gIGlmICghZW5jKSB7XG4gICAgcmV0dXJuIGJ1ZjtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gYnVmLnRvU3RyaW5nKGVuYyk7XG4gIH1cbn1cbiIsInZhciByYW5kb21CeXRlcyA9IHJlcXVpcmUoJ3JhbmRvbWJ5dGVzJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZpbmRQcmltZTtcbmZpbmRQcmltZS5zaW1wbGVTaWV2ZSA9IHNpbXBsZVNpZXZlO1xuZmluZFByaW1lLmZlcm1hdFRlc3QgPSBmZXJtYXRUZXN0O1xudmFyIEJOID0gcmVxdWlyZSgnYm4uanMnKTtcbnZhciBUV0VOVFlGT1VSID0gbmV3IEJOKDI0KTtcbnZhciBNaWxsZXJSYWJpbiA9IHJlcXVpcmUoJ21pbGxlci1yYWJpbicpO1xudmFyIG1pbGxlclJhYmluID0gbmV3IE1pbGxlclJhYmluKCk7XG52YXIgT05FID0gbmV3IEJOKDEpO1xudmFyIFRXTyA9IG5ldyBCTigyKTtcbnZhciBGSVZFID0gbmV3IEJOKDUpO1xudmFyIFNJWFRFRU4gPSBuZXcgQk4oMTYpO1xudmFyIEVJR0hUID0gbmV3IEJOKDgpO1xudmFyIFRFTiA9IG5ldyBCTigxMCk7XG52YXIgVEhSRUUgPSBuZXcgQk4oMyk7XG52YXIgU0VWRU4gPSBuZXcgQk4oNyk7XG52YXIgRUxFVkVOID0gbmV3IEJOKDExKTtcbnZhciBGT1VSID0gbmV3IEJOKDQpO1xudmFyIFRXRUxWRSA9IG5ldyBCTigxMik7XG52YXIgcHJpbWVzID0gbnVsbDtcblxuZnVuY3Rpb24gX2dldFByaW1lcygpIHtcbiAgaWYgKHByaW1lcyAhPT0gbnVsbClcbiAgICByZXR1cm4gcHJpbWVzO1xuXG4gIHZhciBsaW1pdCA9IDB4MTAwMDAwO1xuICB2YXIgcmVzID0gW107XG4gIHJlc1swXSA9IDI7XG4gIGZvciAodmFyIGkgPSAxLCBrID0gMzsgayA8IGxpbWl0OyBrICs9IDIpIHtcbiAgICB2YXIgc3FydCA9IE1hdGguY2VpbChNYXRoLnNxcnQoaykpO1xuICAgIGZvciAodmFyIGogPSAwOyBqIDwgaSAmJiByZXNbal0gPD0gc3FydDsgaisrKVxuICAgICAgaWYgKGsgJSByZXNbal0gPT09IDApXG4gICAgICAgIGJyZWFrO1xuXG4gICAgaWYgKGkgIT09IGogJiYgcmVzW2pdIDw9IHNxcnQpXG4gICAgICBjb250aW51ZTtcblxuICAgIHJlc1tpKytdID0gaztcbiAgfVxuICBwcmltZXMgPSByZXM7XG4gIHJldHVybiByZXM7XG59XG5cbmZ1bmN0aW9uIHNpbXBsZVNpZXZlKHApIHtcbiAgdmFyIHByaW1lcyA9IF9nZXRQcmltZXMoKTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHByaW1lcy5sZW5ndGg7IGkrKylcbiAgICBpZiAocC5tb2RuKHByaW1lc1tpXSkgPT09IDApIHtcbiAgICAgIGlmIChwLmNtcG4ocHJpbWVzW2ldKSA9PT0gMCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbmZ1bmN0aW9uIGZlcm1hdFRlc3QocCkge1xuICB2YXIgcmVkID0gQk4ubW9udChwKTtcbiAgcmV0dXJuIFRXTy50b1JlZChyZWQpLnJlZFBvdyhwLnN1Ym4oMSkpLmZyb21SZWQoKS5jbXBuKDEpID09PSAwO1xufVxuXG5mdW5jdGlvbiBmaW5kUHJpbWUoYml0cywgZ2VuKSB7XG4gIGlmIChiaXRzIDwgMTYpIHtcbiAgICAvLyB0aGlzIGlzIHdoYXQgb3BlbnNzbCBkb2VzXG4gICAgaWYgKGdlbiA9PT0gMiB8fCBnZW4gPT09IDUpIHtcbiAgICAgIHJldHVybiBuZXcgQk4oWzB4OGMsIDB4N2JdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG5ldyBCTihbMHg4YywgMHgyN10pO1xuICAgIH1cbiAgfVxuICBnZW4gPSBuZXcgQk4oZ2VuKTtcblxuICB2YXIgbnVtLCBuMjtcblxuICB3aGlsZSAodHJ1ZSkge1xuICAgIG51bSA9IG5ldyBCTihyYW5kb21CeXRlcyhNYXRoLmNlaWwoYml0cyAvIDgpKSk7XG4gICAgd2hpbGUgKG51bS5iaXRMZW5ndGgoKSA+IGJpdHMpIHtcbiAgICAgIG51bS5pc2hybigxKTtcbiAgICB9XG4gICAgaWYgKG51bS5pc0V2ZW4oKSkge1xuICAgICAgbnVtLmlhZGQoT05FKTtcbiAgICB9XG4gICAgaWYgKCFudW0udGVzdG4oMSkpIHtcbiAgICAgIG51bS5pYWRkKFRXTyk7XG4gICAgfVxuICAgIGlmICghZ2VuLmNtcChUV08pKSB7XG4gICAgICB3aGlsZSAobnVtLm1vZChUV0VOVFlGT1VSKS5jbXAoRUxFVkVOKSkge1xuICAgICAgICBudW0uaWFkZChGT1VSKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKCFnZW4uY21wKEZJVkUpKSB7XG4gICAgICB3aGlsZSAobnVtLm1vZChURU4pLmNtcChUSFJFRSkpIHtcbiAgICAgICAgbnVtLmlhZGQoRk9VUik7XG4gICAgICB9XG4gICAgfVxuICAgIG4yID0gbnVtLnNocm4oMSk7XG4gICAgaWYgKHNpbXBsZVNpZXZlKG4yKSAmJiBzaW1wbGVTaWV2ZShudW0pICYmXG4gICAgICBmZXJtYXRUZXN0KG4yKSAmJiBmZXJtYXRUZXN0KG51bSkgJiZcbiAgICAgIG1pbGxlclJhYmluLnRlc3QobjIpICYmIG1pbGxlclJhYmluLnRlc3QobnVtKSkge1xuICAgICAgcmV0dXJuIG51bTtcbiAgICB9XG4gIH1cblxufVxuIiwibW9kdWxlLmV4cG9ydHM9e1xuICAgIFwibW9kcDFcIjoge1xuICAgICAgICBcImdlblwiOiBcIjAyXCIsXG4gICAgICAgIFwicHJpbWVcIjogXCJmZmZmZmZmZmZmZmZmZmZmYzkwZmRhYTIyMTY4YzIzNGM0YzY2MjhiODBkYzFjZDEyOTAyNGUwODhhNjdjYzc0MDIwYmJlYTYzYjEzOWIyMjUxNGEwODc5OGUzNDA0ZGRlZjk1MTliM2NkM2E0MzFiMzAyYjBhNmRmMjVmMTQzNzRmZTEzNTZkNmQ1MWMyNDVlNDg1YjU3NjYyNWU3ZWM2ZjQ0YzQyZTlhNjNhMzYyMGZmZmZmZmZmZmZmZmZmZmZcIlxuICAgIH0sXG4gICAgXCJtb2RwMlwiOiB7XG4gICAgICAgIFwiZ2VuXCI6IFwiMDJcIixcbiAgICAgICAgXCJwcmltZVwiOiBcImZmZmZmZmZmZmZmZmZmZmZjOTBmZGFhMjIxNjhjMjM0YzRjNjYyOGI4MGRjMWNkMTI5MDI0ZTA4OGE2N2NjNzQwMjBiYmVhNjNiMTM5YjIyNTE0YTA4Nzk4ZTM0MDRkZGVmOTUxOWIzY2QzYTQzMWIzMDJiMGE2ZGYyNWYxNDM3NGZlMTM1NmQ2ZDUxYzI0NWU0ODViNTc2NjI1ZTdlYzZmNDRjNDJlOWE2MzdlZDZiMGJmZjVjYjZmNDA2YjdlZGVlMzg2YmZiNWE4OTlmYTVhZTlmMjQxMTdjNGIxZmU2NDkyODY2NTFlY2U2NTM4MWZmZmZmZmZmZmZmZmZmZmZcIlxuICAgIH0sXG4gICAgXCJtb2RwNVwiOiB7XG4gICAgICAgIFwiZ2VuXCI6IFwiMDJcIixcbiAgICAgICAgXCJwcmltZVwiOiBcImZmZmZmZmZmZmZmZmZmZmZjOTBmZGFhMjIxNjhjMjM0YzRjNjYyOGI4MGRjMWNkMTI5MDI0ZTA4OGE2N2NjNzQwMjBiYmVhNjNiMTM5YjIyNTE0YTA4Nzk4ZTM0MDRkZGVmOTUxOWIzY2QzYTQzMWIzMDJiMGE2ZGYyNWYxNDM3NGZlMTM1NmQ2ZDUxYzI0NWU0ODViNTc2NjI1ZTdlYzZmNDRjNDJlOWE2MzdlZDZiMGJmZjVjYjZmNDA2YjdlZGVlMzg2YmZiNWE4OTlmYTVhZTlmMjQxMTdjNGIxZmU2NDkyODY2NTFlY2U0NWIzZGMyMDA3Y2I4YTE2M2JmMDU5OGRhNDgzNjFjNTVkMzlhNjkxNjNmYThmZDI0Y2Y1ZjgzNjU1ZDIzZGNhM2FkOTYxYzYyZjM1NjIwODU1MmJiOWVkNTI5MDc3MDk2OTY2ZDY3MGMzNTRlNGFiYzk4MDRmMTc0NmMwOGNhMjM3MzI3ZmZmZmZmZmZmZmZmZmZmZlwiXG4gICAgfSxcbiAgICBcIm1vZHAxNFwiOiB7XG4gICAgICAgIFwiZ2VuXCI6IFwiMDJcIixcbiAgICAgICAgXCJwcmltZVwiOiBcImZmZmZmZmZmZmZmZmZmZmZjOTBmZGFhMjIxNjhjMjM0YzRjNjYyOGI4MGRjMWNkMTI5MDI0ZTA4OGE2N2NjNzQwMjBiYmVhNjNiMTM5YjIyNTE0YTA4Nzk4ZTM0MDRkZGVmOTUxOWIzY2QzYTQzMWIzMDJiMGE2ZGYyNWYxNDM3NGZlMTM1NmQ2ZDUxYzI0NWU0ODViNTc2NjI1ZTdlYzZmNDRjNDJlOWE2MzdlZDZiMGJmZjVjYjZmNDA2YjdlZGVlMzg2YmZiNWE4OTlmYTVhZTlmMjQxMTdjNGIxZmU2NDkyODY2NTFlY2U0NWIzZGMyMDA3Y2I4YTE2M2JmMDU5OGRhNDgzNjFjNTVkMzlhNjkxNjNmYThmZDI0Y2Y1ZjgzNjU1ZDIzZGNhM2FkOTYxYzYyZjM1NjIwODU1MmJiOWVkNTI5MDc3MDk2OTY2ZDY3MGMzNTRlNGFiYzk4MDRmMTc0NmMwOGNhMTgyMTdjMzI5MDVlNDYyZTM2Y2UzYmUzOWU3NzJjMTgwZTg2MDM5YjI3ODNhMmVjMDdhMjhmYjVjNTVkZjA2ZjRjNTJjOWRlMmJjYmY2OTU1ODE3MTgzOTk1NDk3Y2VhOTU2YWU1MTVkMjI2MTg5OGZhMDUxMDE1NzI4ZTVhOGFhY2FhNjhmZmZmZmZmZmZmZmZmZmZmXCJcbiAgICB9LFxuICAgIFwibW9kcDE1XCI6IHtcbiAgICAgICAgXCJnZW5cIjogXCIwMlwiLFxuICAgICAgICBcInByaW1lXCI6IFwiZmZmZmZmZmZmZmZmZmZmZmM5MGZkYWEyMjE2OGMyMzRjNGM2NjI4YjgwZGMxY2QxMjkwMjRlMDg4YTY3Y2M3NDAyMGJiZWE2M2IxMzliMjI1MTRhMDg3OThlMzQwNGRkZWY5NTE5YjNjZDNhNDMxYjMwMmIwYTZkZjI1ZjE0Mzc0ZmUxMzU2ZDZkNTFjMjQ1ZTQ4NWI1NzY2MjVlN2VjNmY0NGM0MmU5YTYzN2VkNmIwYmZmNWNiNmY0MDZiN2VkZWUzODZiZmI1YTg5OWZhNWFlOWYyNDExN2M0YjFmZTY0OTI4NjY1MWVjZTQ1YjNkYzIwMDdjYjhhMTYzYmYwNTk4ZGE0ODM2MWM1NWQzOWE2OTE2M2ZhOGZkMjRjZjVmODM2NTVkMjNkY2EzYWQ5NjFjNjJmMzU2MjA4NTUyYmI5ZWQ1MjkwNzcwOTY5NjZkNjcwYzM1NGU0YWJjOTgwNGYxNzQ2YzA4Y2ExODIxN2MzMjkwNWU0NjJlMzZjZTNiZTM5ZTc3MmMxODBlODYwMzliMjc4M2EyZWMwN2EyOGZiNWM1NWRmMDZmNGM1MmM5ZGUyYmNiZjY5NTU4MTcxODM5OTU0OTdjZWE5NTZhZTUxNWQyMjYxODk4ZmEwNTEwMTU3MjhlNWE4YWFhYzQyZGFkMzMxNzBkMDQ1MDdhMzNhODU1MjFhYmRmMWNiYTY0ZWNmYjg1MDQ1OGRiZWYwYThhZWE3MTU3NWQwNjBjN2RiMzk3MGY4NWE2ZTFlNGM3YWJmNWFlOGNkYjA5MzNkNzFlOGM5NGUwNGEyNTYxOWRjZWUzZDIyNjFhZDJlZTZiZjEyZmZhMDZkOThhMDg2NGQ4NzYwMjczM2VjODZhNjQ1MjFmMmIxODE3N2IyMDBjYmJlMTE3NTc3YTYxNWQ2Yzc3MDk4OGMwYmFkOTQ2ZTIwOGUyNGZhMDc0ZTVhYjMxNDNkYjViZmNlMGZkMTA4ZTRiODJkMTIwYTkzYWQyY2FmZmZmZmZmZmZmZmZmZmZmXCJcbiAgICB9LFxuICAgIFwibW9kcDE2XCI6IHtcbiAgICAgICAgXCJnZW5cIjogXCIwMlwiLFxuICAgICAgICBcInByaW1lXCI6IFwiZmZmZmZmZmZmZmZmZmZmZmM5MGZkYWEyMjE2OGMyMzRjNGM2NjI4YjgwZGMxY2QxMjkwMjRlMDg4YTY3Y2M3NDAyMGJiZWE2M2IxMzliMjI1MTRhMDg3OThlMzQwNGRkZWY5NTE5YjNjZDNhNDMxYjMwMmIwYTZkZjI1ZjE0Mzc0ZmUxMzU2ZDZkNTFjMjQ1ZTQ4NWI1NzY2MjVlN2VjNmY0NGM0MmU5YTYzN2VkNmIwYmZmNWNiNmY0MDZiN2VkZWUzODZiZmI1YTg5OWZhNWFlOWYyNDExN2M0YjFmZTY0OTI4NjY1MWVjZTQ1YjNkYzIwMDdjYjhhMTYzYmYwNTk4ZGE0ODM2MWM1NWQzOWE2OTE2M2ZhOGZkMjRjZjVmODM2NTVkMjNkY2EzYWQ5NjFjNjJmMzU2MjA4NTUyYmI5ZWQ1MjkwNzcwOTY5NjZkNjcwYzM1NGU0YWJjOTgwNGYxNzQ2YzA4Y2ExODIxN2MzMjkwNWU0NjJlMzZjZTNiZTM5ZTc3MmMxODBlODYwMzliMjc4M2EyZWMwN2EyOGZiNWM1NWRmMDZmNGM1MmM5ZGUyYmNiZjY5NTU4MTcxODM5OTU0OTdjZWE5NTZhZTUxNWQyMjYxODk4ZmEwNTEwMTU3MjhlNWE4YWFhYzQyZGFkMzMxNzBkMDQ1MDdhMzNhODU1MjFhYmRmMWNiYTY0ZWNmYjg1MDQ1OGRiZWYwYThhZWE3MTU3NWQwNjBjN2RiMzk3MGY4NWE2ZTFlNGM3YWJmNWFlOGNkYjA5MzNkNzFlOGM5NGUwNGEyNTYxOWRjZWUzZDIyNjFhZDJlZTZiZjEyZmZhMDZkOThhMDg2NGQ4NzYwMjczM2VjODZhNjQ1MjFmMmIxODE3N2IyMDBjYmJlMTE3NTc3YTYxNWQ2Yzc3MDk4OGMwYmFkOTQ2ZTIwOGUyNGZhMDc0ZTVhYjMxNDNkYjViZmNlMGZkMTA4ZTRiODJkMTIwYTkyMTA4MDExYTcyM2MxMmE3ODdlNmQ3ODg3MTlhMTBiZGJhNWIyNjk5YzMyNzE4NmFmNGUyM2MxYTk0NjgzNGI2MTUwYmRhMjU4M2U5Y2EyYWQ0NGNlOGRiYmJjMmRiMDRkZThlZjkyZThlZmMxNDFmYmVjYWE2Mjg3YzU5NDc0ZTZiYzA1ZDk5YjI5NjRmYTA5MGMzYTIyMzNiYTE4NjUxNWJlN2VkMWY2MTI5NzBjZWUyZDdhZmI4MWJkZDc2MjE3MDQ4MWNkMDA2OTEyN2Q1YjA1YWE5OTNiNGVhOTg4ZDhmZGRjMTg2ZmZiN2RjOTBhNmMwOGY0ZGY0MzVjOTM0MDYzMTk5ZmZmZmZmZmZmZmZmZmZmZlwiXG4gICAgfSxcbiAgICBcIm1vZHAxN1wiOiB7XG4gICAgICAgIFwiZ2VuXCI6IFwiMDJcIixcbiAgICAgICAgXCJwcmltZVwiOiBcImZmZmZmZmZmZmZmZmZmZmZjOTBmZGFhMjIxNjhjMjM0YzRjNjYyOGI4MGRjMWNkMTI5MDI0ZTA4OGE2N2NjNzQwMjBiYmVhNjNiMTM5YjIyNTE0YTA4Nzk4ZTM0MDRkZGVmOTUxOWIzY2QzYTQzMWIzMDJiMGE2ZGYyNWYxNDM3NGZlMTM1NmQ2ZDUxYzI0NWU0ODViNTc2NjI1ZTdlYzZmNDRjNDJlOWE2MzdlZDZiMGJmZjVjYjZmNDA2YjdlZGVlMzg2YmZiNWE4OTlmYTVhZTlmMjQxMTdjNGIxZmU2NDkyODY2NTFlY2U0NWIzZGMyMDA3Y2I4YTE2M2JmMDU5OGRhNDgzNjFjNTVkMzlhNjkxNjNmYThmZDI0Y2Y1ZjgzNjU1ZDIzZGNhM2FkOTYxYzYyZjM1NjIwODU1MmJiOWVkNTI5MDc3MDk2OTY2ZDY3MGMzNTRlNGFiYzk4MDRmMTc0NmMwOGNhMTgyMTdjMzI5MDVlNDYyZTM2Y2UzYmUzOWU3NzJjMTgwZTg2MDM5YjI3ODNhMmVjMDdhMjhmYjVjNTVkZjA2ZjRjNTJjOWRlMmJjYmY2OTU1ODE3MTgzOTk1NDk3Y2VhOTU2YWU1MTVkMjI2MTg5OGZhMDUxMDE1NzI4ZTVhOGFhYWM0MmRhZDMzMTcwZDA0NTA3YTMzYTg1NTIxYWJkZjFjYmE2NGVjZmI4NTA0NThkYmVmMGE4YWVhNzE1NzVkMDYwYzdkYjM5NzBmODVhNmUxZTRjN2FiZjVhZThjZGIwOTMzZDcxZThjOTRlMDRhMjU2MTlkY2VlM2QyMjYxYWQyZWU2YmYxMmZmYTA2ZDk4YTA4NjRkODc2MDI3MzNlYzg2YTY0NTIxZjJiMTgxNzdiMjAwY2JiZTExNzU3N2E2MTVkNmM3NzA5ODhjMGJhZDk0NmUyMDhlMjRmYTA3NGU1YWIzMTQzZGI1YmZjZTBmZDEwOGU0YjgyZDEyMGE5MjEwODAxMWE3MjNjMTJhNzg3ZTZkNzg4NzE5YTEwYmRiYTViMjY5OWMzMjcxODZhZjRlMjNjMWE5NDY4MzRiNjE1MGJkYTI1ODNlOWNhMmFkNDRjZThkYmJiYzJkYjA0ZGU4ZWY5MmU4ZWZjMTQxZmJlY2FhNjI4N2M1OTQ3NGU2YmMwNWQ5OWIyOTY0ZmEwOTBjM2EyMjMzYmExODY1MTViZTdlZDFmNjEyOTcwY2VlMmQ3YWZiODFiZGQ3NjIxNzA0ODFjZDAwNjkxMjdkNWIwNWFhOTkzYjRlYTk4OGQ4ZmRkYzE4NmZmYjdkYzkwYTZjMDhmNGRmNDM1YzkzNDAyODQ5MjM2YzNmYWI0ZDI3YzcwMjZjMWQ0ZGNiMjYwMjY0NmRlYzk3NTFlNzYzZGJhMzdiZGY4ZmY5NDA2YWQ5ZTUzMGVlNWRiMzgyZjQxMzAwMWFlYjA2YTUzZWQ5MDI3ZDgzMTE3OTcyN2IwODY1YTg5MThkYTNlZGJlYmNmOWIxNGVkNDRjZTZjYmFjZWQ0YmIxYmRiN2YxNDQ3ZTZjYzI1NGIzMzIwNTE1MTJiZDdhZjQyNmZiOGY0MDEzNzhjZDJiZjU5ODNjYTAxYzY0YjkyZWNmMDMyZWExNWQxNzIxZDAzZjQ4MmQ3Y2U2ZTc0ZmVmNmQ1NWU3MDJmNDY5ODBjODJiNWE4NDAzMTkwMGIxYzllNTllN2M5N2ZiZWM3ZThmMzIzYTk3YTdlMzZjYzg4YmUwZjFkNDViN2ZmNTg1YWM1NGJkNDA3YjIyYjQxNTRhYWNjOGY2ZDdlYmY0OGUxZDgxNGNjNWVkMjBmODAzN2UwYTc5NzE1ZWVmMjliZTMyODA2YTFkNThiYjdjNWRhNzZmNTUwYWEzZDhhMWZiZmYwZWIxOWNjYjFhMzEzZDU1Y2RhNTZjOWVjMmVmMjk2MzIzODdmZThkNzZlM2MwNDY4MDQzZThmNjYzZjQ4NjBlZTEyYmYyZDViMGI3NDc0ZDZlNjk0ZjkxZTZkY2M0MDI0ZmZmZmZmZmZmZmZmZmZmZlwiXG4gICAgfSxcbiAgICBcIm1vZHAxOFwiOiB7XG4gICAgICAgIFwiZ2VuXCI6IFwiMDJcIixcbiAgICAgICAgXCJwcmltZVwiOiBcImZmZmZmZmZmZmZmZmZmZmZjOTBmZGFhMjIxNjhjMjM0YzRjNjYyOGI4MGRjMWNkMTI5MDI0ZTA4OGE2N2NjNzQwMjBiYmVhNjNiMTM5YjIyNTE0YTA4Nzk4ZTM0MDRkZGVmOTUxOWIzY2QzYTQzMWIzMDJiMGE2ZGYyNWYxNDM3NGZlMTM1NmQ2ZDUxYzI0NWU0ODViNTc2NjI1ZTdlYzZmNDRjNDJlOWE2MzdlZDZiMGJmZjVjYjZmNDA2YjdlZGVlMzg2YmZiNWE4OTlmYTVhZTlmMjQxMTdjNGIxZmU2NDkyODY2NTFlY2U0NWIzZGMyMDA3Y2I4YTE2M2JmMDU5OGRhNDgzNjFjNTVkMzlhNjkxNjNmYThmZDI0Y2Y1ZjgzNjU1ZDIzZGNhM2FkOTYxYzYyZjM1NjIwODU1MmJiOWVkNTI5MDc3MDk2OTY2ZDY3MGMzNTRlNGFiYzk4MDRmMTc0NmMwOGNhMTgyMTdjMzI5MDVlNDYyZTM2Y2UzYmUzOWU3NzJjMTgwZTg2MDM5YjI3ODNhMmVjMDdhMjhmYjVjNTVkZjA2ZjRjNTJjOWRlMmJjYmY2OTU1ODE3MTgzOTk1NDk3Y2VhOTU2YWU1MTVkMjI2MTg5OGZhMDUxMDE1NzI4ZTVhOGFhYWM0MmRhZDMzMTcwZDA0NTA3YTMzYTg1NTIxYWJkZjFjYmE2NGVjZmI4NTA0NThkYmVmMGE4YWVhNzE1NzVkMDYwYzdkYjM5NzBmODVhNmUxZTRjN2FiZjVhZThjZGIwOTMzZDcxZThjOTRlMDRhMjU2MTlkY2VlM2QyMjYxYWQyZWU2YmYxMmZmYTA2ZDk4YTA4NjRkODc2MDI3MzNlYzg2YTY0NTIxZjJiMTgxNzdiMjAwY2JiZTExNzU3N2E2MTVkNmM3NzA5ODhjMGJhZDk0NmUyMDhlMjRmYTA3NGU1YWIzMTQzZGI1YmZjZTBmZDEwOGU0YjgyZDEyMGE5MjEwODAxMWE3MjNjMTJhNzg3ZTZkNzg4NzE5YTEwYmRiYTViMjY5OWMzMjcxODZhZjRlMjNjMWE5NDY4MzRiNjE1MGJkYTI1ODNlOWNhMmFkNDRjZThkYmJiYzJkYjA0ZGU4ZWY5MmU4ZWZjMTQxZmJlY2FhNjI4N2M1OTQ3NGU2YmMwNWQ5OWIyOTY0ZmEwOTBjM2EyMjMzYmExODY1MTViZTdlZDFmNjEyOTcwY2VlMmQ3YWZiODFiZGQ3NjIxNzA0ODFjZDAwNjkxMjdkNWIwNWFhOTkzYjRlYTk4OGQ4ZmRkYzE4NmZmYjdkYzkwYTZjMDhmNGRmNDM1YzkzNDAyODQ5MjM2YzNmYWI0ZDI3YzcwMjZjMWQ0ZGNiMjYwMjY0NmRlYzk3NTFlNzYzZGJhMzdiZGY4ZmY5NDA2YWQ5ZTUzMGVlNWRiMzgyZjQxMzAwMWFlYjA2YTUzZWQ5MDI3ZDgzMTE3OTcyN2IwODY1YTg5MThkYTNlZGJlYmNmOWIxNGVkNDRjZTZjYmFjZWQ0YmIxYmRiN2YxNDQ3ZTZjYzI1NGIzMzIwNTE1MTJiZDdhZjQyNmZiOGY0MDEzNzhjZDJiZjU5ODNjYTAxYzY0YjkyZWNmMDMyZWExNWQxNzIxZDAzZjQ4MmQ3Y2U2ZTc0ZmVmNmQ1NWU3MDJmNDY5ODBjODJiNWE4NDAzMTkwMGIxYzllNTllN2M5N2ZiZWM3ZThmMzIzYTk3YTdlMzZjYzg4YmUwZjFkNDViN2ZmNTg1YWM1NGJkNDA3YjIyYjQxNTRhYWNjOGY2ZDdlYmY0OGUxZDgxNGNjNWVkMjBmODAzN2UwYTc5NzE1ZWVmMjliZTMyODA2YTFkNThiYjdjNWRhNzZmNTUwYWEzZDhhMWZiZmYwZWIxOWNjYjFhMzEzZDU1Y2RhNTZjOWVjMmVmMjk2MzIzODdmZThkNzZlM2MwNDY4MDQzZThmNjYzZjQ4NjBlZTEyYmYyZDViMGI3NDc0ZDZlNjk0ZjkxZTZkYmUxMTU5NzRhMzkyNmYxMmZlZTVlNDM4Nzc3Y2I2YTkzMmRmOGNkOGJlYzRkMDczYjkzMWJhM2JjODMyYjY4ZDlkZDMwMDc0MWZhN2JmOGFmYzQ3ZWQyNTc2ZjY5MzZiYTQyNDY2M2FhYjYzOWM1YWU0ZjU2ODM0MjNiNDc0MmJmMWM5NzgyMzhmMTZjYmUzOWQ2NTJkZTNmZGI4YmVmYzg0OGFkOTIyMjIyZTA0YTQwMzdjMDcxM2ViNTdhODFhMjNmMGM3MzQ3M2ZjNjQ2Y2VhMzA2YjRiY2JjODg2MmY4Mzg1ZGRmYTlkNGI3ZmEyYzA4N2U4Nzk2ODMzMDNlZDViZGQzYTA2MmIzY2Y1YjNhMjc4YTY2ZDJhMTNmODNmNDRmODJkZGYzMTBlZTA3NGFiNmEzNjQ1OTdlODk5YTAyNTVkYzE2NGYzMWNjNTA4NDY4NTFkZjlhYjQ4MTk1ZGVkN2VhMWIxZDUxMGJkN2VlNzRkNzNmYWYzNmJjMzFlY2ZhMjY4MzU5MDQ2ZjRlYjg3OWY5MjQwMDk0MzhiNDgxYzZjZDc4ODlhMDAyZWQ1ZWUzODJiYzkxOTBkYTZmYzAyNmU0Nzk1NThlNDQ3NTY3N2U5YWE5ZTMwNTBlMjc2NTY5NGRmYzgxZjU2ZTg4MGI5NmU3MTYwYzk4MGRkOThlZGQzZGZmZmZmZmZmZmZmZmZmZmZmXCJcbiAgICB9XG59IiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgZWxsaXB0aWMgPSBleHBvcnRzO1xuXG5lbGxpcHRpYy52ZXJzaW9uID0gcmVxdWlyZSgnLi4vcGFja2FnZS5qc29uJykudmVyc2lvbjtcbmVsbGlwdGljLnV0aWxzID0gcmVxdWlyZSgnLi9lbGxpcHRpYy91dGlscycpO1xuZWxsaXB0aWMucmFuZCA9IHJlcXVpcmUoJ2Jyb3JhbmQnKTtcbmVsbGlwdGljLmN1cnZlID0gcmVxdWlyZSgnLi9lbGxpcHRpYy9jdXJ2ZScpO1xuZWxsaXB0aWMuY3VydmVzID0gcmVxdWlyZSgnLi9lbGxpcHRpYy9jdXJ2ZXMnKTtcblxuLy8gUHJvdG9jb2xzXG5lbGxpcHRpYy5lYyA9IHJlcXVpcmUoJy4vZWxsaXB0aWMvZWMnKTtcbmVsbGlwdGljLmVkZHNhID0gcmVxdWlyZSgnLi9lbGxpcHRpYy9lZGRzYScpO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgQk4gPSByZXF1aXJlKCdibi5qcycpO1xudmFyIGVsbGlwdGljID0gcmVxdWlyZSgnLi4vLi4vZWxsaXB0aWMnKTtcbnZhciB1dGlscyA9IGVsbGlwdGljLnV0aWxzO1xudmFyIGdldE5BRiA9IHV0aWxzLmdldE5BRjtcbnZhciBnZXRKU0YgPSB1dGlscy5nZXRKU0Y7XG52YXIgYXNzZXJ0ID0gdXRpbHMuYXNzZXJ0O1xuXG5mdW5jdGlvbiBCYXNlQ3VydmUodHlwZSwgY29uZikge1xuICB0aGlzLnR5cGUgPSB0eXBlO1xuICB0aGlzLnAgPSBuZXcgQk4oY29uZi5wLCAxNik7XG5cbiAgLy8gVXNlIE1vbnRnb21lcnksIHdoZW4gdGhlcmUgaXMgbm8gZmFzdCByZWR1Y3Rpb24gZm9yIHRoZSBwcmltZVxuICB0aGlzLnJlZCA9IGNvbmYucHJpbWUgPyBCTi5yZWQoY29uZi5wcmltZSkgOiBCTi5tb250KHRoaXMucCk7XG5cbiAgLy8gVXNlZnVsIGZvciBtYW55IGN1cnZlc1xuICB0aGlzLnplcm8gPSBuZXcgQk4oMCkudG9SZWQodGhpcy5yZWQpO1xuICB0aGlzLm9uZSA9IG5ldyBCTigxKS50b1JlZCh0aGlzLnJlZCk7XG4gIHRoaXMudHdvID0gbmV3IEJOKDIpLnRvUmVkKHRoaXMucmVkKTtcblxuICAvLyBDdXJ2ZSBjb25maWd1cmF0aW9uLCBvcHRpb25hbFxuICB0aGlzLm4gPSBjb25mLm4gJiYgbmV3IEJOKGNvbmYubiwgMTYpO1xuICB0aGlzLmcgPSBjb25mLmcgJiYgdGhpcy5wb2ludEZyb21KU09OKGNvbmYuZywgY29uZi5nUmVkKTtcblxuICAvLyBUZW1wb3JhcnkgYXJyYXlzXG4gIHRoaXMuX3duYWZUMSA9IG5ldyBBcnJheSg0KTtcbiAgdGhpcy5fd25hZlQyID0gbmV3IEFycmF5KDQpO1xuICB0aGlzLl93bmFmVDMgPSBuZXcgQXJyYXkoNCk7XG4gIHRoaXMuX3duYWZUNCA9IG5ldyBBcnJheSg0KTtcblxuICAvLyBHZW5lcmFsaXplZCBHcmVnIE1heHdlbGwncyB0cmlja1xuICB2YXIgYWRqdXN0Q291bnQgPSB0aGlzLm4gJiYgdGhpcy5wLmRpdih0aGlzLm4pO1xuICBpZiAoIWFkanVzdENvdW50IHx8IGFkanVzdENvdW50LmNtcG4oMTAwKSA+IDApIHtcbiAgICB0aGlzLnJlZE4gPSBudWxsO1xuICB9IGVsc2Uge1xuICAgIHRoaXMuX21heHdlbGxUcmljayA9IHRydWU7XG4gICAgdGhpcy5yZWROID0gdGhpcy5uLnRvUmVkKHRoaXMucmVkKTtcbiAgfVxufVxubW9kdWxlLmV4cG9ydHMgPSBCYXNlQ3VydmU7XG5cbkJhc2VDdXJ2ZS5wcm90b3R5cGUucG9pbnQgPSBmdW5jdGlvbiBwb2ludCgpIHtcbiAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbn07XG5cbkJhc2VDdXJ2ZS5wcm90b3R5cGUudmFsaWRhdGUgPSBmdW5jdGlvbiB2YWxpZGF0ZSgpIHtcbiAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbn07XG5cbkJhc2VDdXJ2ZS5wcm90b3R5cGUuX2ZpeGVkTmFmTXVsID0gZnVuY3Rpb24gX2ZpeGVkTmFmTXVsKHAsIGspIHtcbiAgYXNzZXJ0KHAucHJlY29tcHV0ZWQpO1xuICB2YXIgZG91YmxlcyA9IHAuX2dldERvdWJsZXMoKTtcblxuICB2YXIgbmFmID0gZ2V0TkFGKGssIDEpO1xuICB2YXIgSSA9ICgxIDw8IChkb3VibGVzLnN0ZXAgKyAxKSkgLSAoZG91Ymxlcy5zdGVwICUgMiA9PT0gMCA/IDIgOiAxKTtcbiAgSSAvPSAzO1xuXG4gIC8vIFRyYW5zbGF0ZSBpbnRvIG1vcmUgd2luZG93ZWQgZm9ybVxuICB2YXIgcmVwciA9IFtdO1xuICBmb3IgKHZhciBqID0gMDsgaiA8IG5hZi5sZW5ndGg7IGogKz0gZG91Ymxlcy5zdGVwKSB7XG4gICAgdmFyIG5hZlcgPSAwO1xuICAgIGZvciAodmFyIGsgPSBqICsgZG91Ymxlcy5zdGVwIC0gMTsgayA+PSBqOyBrLS0pXG4gICAgICBuYWZXID0gKG5hZlcgPDwgMSkgKyBuYWZba107XG4gICAgcmVwci5wdXNoKG5hZlcpO1xuICB9XG5cbiAgdmFyIGEgPSB0aGlzLmpwb2ludChudWxsLCBudWxsLCBudWxsKTtcbiAgdmFyIGIgPSB0aGlzLmpwb2ludChudWxsLCBudWxsLCBudWxsKTtcbiAgZm9yICh2YXIgaSA9IEk7IGkgPiAwOyBpLS0pIHtcbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IHJlcHIubGVuZ3RoOyBqKyspIHtcbiAgICAgIHZhciBuYWZXID0gcmVwcltqXTtcbiAgICAgIGlmIChuYWZXID09PSBpKVxuICAgICAgICBiID0gYi5taXhlZEFkZChkb3VibGVzLnBvaW50c1tqXSk7XG4gICAgICBlbHNlIGlmIChuYWZXID09PSAtaSlcbiAgICAgICAgYiA9IGIubWl4ZWRBZGQoZG91Ymxlcy5wb2ludHNbal0ubmVnKCkpO1xuICAgIH1cbiAgICBhID0gYS5hZGQoYik7XG4gIH1cbiAgcmV0dXJuIGEudG9QKCk7XG59O1xuXG5CYXNlQ3VydmUucHJvdG90eXBlLl93bmFmTXVsID0gZnVuY3Rpb24gX3duYWZNdWwocCwgaykge1xuICB2YXIgdyA9IDQ7XG5cbiAgLy8gUHJlY29tcHV0ZSB3aW5kb3dcbiAgdmFyIG5hZlBvaW50cyA9IHAuX2dldE5BRlBvaW50cyh3KTtcbiAgdyA9IG5hZlBvaW50cy53bmQ7XG4gIHZhciB3bmQgPSBuYWZQb2ludHMucG9pbnRzO1xuXG4gIC8vIEdldCBOQUYgZm9ybVxuICB2YXIgbmFmID0gZ2V0TkFGKGssIHcpO1xuXG4gIC8vIEFkZCBgdGhpc2AqKE4rMSkgZm9yIGV2ZXJ5IHctTkFGIGluZGV4XG4gIHZhciBhY2MgPSB0aGlzLmpwb2ludChudWxsLCBudWxsLCBudWxsKTtcbiAgZm9yICh2YXIgaSA9IG5hZi5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgIC8vIENvdW50IHplcm9lc1xuICAgIGZvciAodmFyIGsgPSAwOyBpID49IDAgJiYgbmFmW2ldID09PSAwOyBpLS0pXG4gICAgICBrKys7XG4gICAgaWYgKGkgPj0gMClcbiAgICAgIGsrKztcbiAgICBhY2MgPSBhY2MuZGJscChrKTtcblxuICAgIGlmIChpIDwgMClcbiAgICAgIGJyZWFrO1xuICAgIHZhciB6ID0gbmFmW2ldO1xuICAgIGFzc2VydCh6ICE9PSAwKTtcbiAgICBpZiAocC50eXBlID09PSAnYWZmaW5lJykge1xuICAgICAgLy8gSiArLSBQXG4gICAgICBpZiAoeiA+IDApXG4gICAgICAgIGFjYyA9IGFjYy5taXhlZEFkZCh3bmRbKHogLSAxKSA+PiAxXSk7XG4gICAgICBlbHNlXG4gICAgICAgIGFjYyA9IGFjYy5taXhlZEFkZCh3bmRbKC16IC0gMSkgPj4gMV0ubmVnKCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBKICstIEpcbiAgICAgIGlmICh6ID4gMClcbiAgICAgICAgYWNjID0gYWNjLmFkZCh3bmRbKHogLSAxKSA+PiAxXSk7XG4gICAgICBlbHNlXG4gICAgICAgIGFjYyA9IGFjYy5hZGQod25kWygteiAtIDEpID4+IDFdLm5lZygpKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHAudHlwZSA9PT0gJ2FmZmluZScgPyBhY2MudG9QKCkgOiBhY2M7XG59O1xuXG5CYXNlQ3VydmUucHJvdG90eXBlLl93bmFmTXVsQWRkID0gZnVuY3Rpb24gX3duYWZNdWxBZGQoZGVmVyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2ludHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29lZmZzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqYWNvYmlhblJlc3VsdCkge1xuICB2YXIgd25kV2lkdGggPSB0aGlzLl93bmFmVDE7XG4gIHZhciB3bmQgPSB0aGlzLl93bmFmVDI7XG4gIHZhciBuYWYgPSB0aGlzLl93bmFmVDM7XG5cbiAgLy8gRmlsbCBhbGwgYXJyYXlzXG4gIHZhciBtYXggPSAwO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgdmFyIHAgPSBwb2ludHNbaV07XG4gICAgdmFyIG5hZlBvaW50cyA9IHAuX2dldE5BRlBvaW50cyhkZWZXKTtcbiAgICB3bmRXaWR0aFtpXSA9IG5hZlBvaW50cy53bmQ7XG4gICAgd25kW2ldID0gbmFmUG9pbnRzLnBvaW50cztcbiAgfVxuXG4gIC8vIENvbWIgc21hbGwgd2luZG93IE5BRnNcbiAgZm9yICh2YXIgaSA9IGxlbiAtIDE7IGkgPj0gMTsgaSAtPSAyKSB7XG4gICAgdmFyIGEgPSBpIC0gMTtcbiAgICB2YXIgYiA9IGk7XG4gICAgaWYgKHduZFdpZHRoW2FdICE9PSAxIHx8IHduZFdpZHRoW2JdICE9PSAxKSB7XG4gICAgICBuYWZbYV0gPSBnZXROQUYoY29lZmZzW2FdLCB3bmRXaWR0aFthXSk7XG4gICAgICBuYWZbYl0gPSBnZXROQUYoY29lZmZzW2JdLCB3bmRXaWR0aFtiXSk7XG4gICAgICBtYXggPSBNYXRoLm1heChuYWZbYV0ubGVuZ3RoLCBtYXgpO1xuICAgICAgbWF4ID0gTWF0aC5tYXgobmFmW2JdLmxlbmd0aCwgbWF4KTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIHZhciBjb21iID0gW1xuICAgICAgcG9pbnRzW2FdLCAvKiAxICovXG4gICAgICBudWxsLCAvKiAzICovXG4gICAgICBudWxsLCAvKiA1ICovXG4gICAgICBwb2ludHNbYl0gLyogNyAqL1xuICAgIF07XG5cbiAgICAvLyBUcnkgdG8gYXZvaWQgUHJvamVjdGl2ZSBwb2ludHMsIGlmIHBvc3NpYmxlXG4gICAgaWYgKHBvaW50c1thXS55LmNtcChwb2ludHNbYl0ueSkgPT09IDApIHtcbiAgICAgIGNvbWJbMV0gPSBwb2ludHNbYV0uYWRkKHBvaW50c1tiXSk7XG4gICAgICBjb21iWzJdID0gcG9pbnRzW2FdLnRvSigpLm1peGVkQWRkKHBvaW50c1tiXS5uZWcoKSk7XG4gICAgfSBlbHNlIGlmIChwb2ludHNbYV0ueS5jbXAocG9pbnRzW2JdLnkucmVkTmVnKCkpID09PSAwKSB7XG4gICAgICBjb21iWzFdID0gcG9pbnRzW2FdLnRvSigpLm1peGVkQWRkKHBvaW50c1tiXSk7XG4gICAgICBjb21iWzJdID0gcG9pbnRzW2FdLmFkZChwb2ludHNbYl0ubmVnKCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb21iWzFdID0gcG9pbnRzW2FdLnRvSigpLm1peGVkQWRkKHBvaW50c1tiXSk7XG4gICAgICBjb21iWzJdID0gcG9pbnRzW2FdLnRvSigpLm1peGVkQWRkKHBvaW50c1tiXS5uZWcoKSk7XG4gICAgfVxuXG4gICAgdmFyIGluZGV4ID0gW1xuICAgICAgLTMsIC8qIC0xIC0xICovXG4gICAgICAtMSwgLyogLTEgMCAqL1xuICAgICAgLTUsIC8qIC0xIDEgKi9cbiAgICAgIC03LCAvKiAwIC0xICovXG4gICAgICAwLCAvKiAwIDAgKi9cbiAgICAgIDcsIC8qIDAgMSAqL1xuICAgICAgNSwgLyogMSAtMSAqL1xuICAgICAgMSwgLyogMSAwICovXG4gICAgICAzICAvKiAxIDEgKi9cbiAgICBdO1xuXG4gICAgdmFyIGpzZiA9IGdldEpTRihjb2VmZnNbYV0sIGNvZWZmc1tiXSk7XG4gICAgbWF4ID0gTWF0aC5tYXgoanNmWzBdLmxlbmd0aCwgbWF4KTtcbiAgICBuYWZbYV0gPSBuZXcgQXJyYXkobWF4KTtcbiAgICBuYWZbYl0gPSBuZXcgQXJyYXkobWF4KTtcbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IG1heDsgaisrKSB7XG4gICAgICB2YXIgamEgPSBqc2ZbMF1bal0gfCAwO1xuICAgICAgdmFyIGpiID0ganNmWzFdW2pdIHwgMDtcblxuICAgICAgbmFmW2FdW2pdID0gaW5kZXhbKGphICsgMSkgKiAzICsgKGpiICsgMSldO1xuICAgICAgbmFmW2JdW2pdID0gMDtcbiAgICAgIHduZFthXSA9IGNvbWI7XG4gICAgfVxuICB9XG5cbiAgdmFyIGFjYyA9IHRoaXMuanBvaW50KG51bGwsIG51bGwsIG51bGwpO1xuICB2YXIgdG1wID0gdGhpcy5fd25hZlQ0O1xuICBmb3IgKHZhciBpID0gbWF4OyBpID49IDA7IGktLSkge1xuICAgIHZhciBrID0gMDtcblxuICAgIHdoaWxlIChpID49IDApIHtcbiAgICAgIHZhciB6ZXJvID0gdHJ1ZTtcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgbGVuOyBqKyspIHtcbiAgICAgICAgdG1wW2pdID0gbmFmW2pdW2ldIHwgMDtcbiAgICAgICAgaWYgKHRtcFtqXSAhPT0gMClcbiAgICAgICAgICB6ZXJvID0gZmFsc2U7XG4gICAgICB9XG4gICAgICBpZiAoIXplcm8pXG4gICAgICAgIGJyZWFrO1xuICAgICAgaysrO1xuICAgICAgaS0tO1xuICAgIH1cbiAgICBpZiAoaSA+PSAwKVxuICAgICAgaysrO1xuICAgIGFjYyA9IGFjYy5kYmxwKGspO1xuICAgIGlmIChpIDwgMClcbiAgICAgIGJyZWFrO1xuXG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCBsZW47IGorKykge1xuICAgICAgdmFyIHogPSB0bXBbal07XG4gICAgICB2YXIgcDtcbiAgICAgIGlmICh6ID09PSAwKVxuICAgICAgICBjb250aW51ZTtcbiAgICAgIGVsc2UgaWYgKHogPiAwKVxuICAgICAgICBwID0gd25kW2pdWyh6IC0gMSkgPj4gMV07XG4gICAgICBlbHNlIGlmICh6IDwgMClcbiAgICAgICAgcCA9IHduZFtqXVsoLXogLSAxKSA+PiAxXS5uZWcoKTtcblxuICAgICAgaWYgKHAudHlwZSA9PT0gJ2FmZmluZScpXG4gICAgICAgIGFjYyA9IGFjYy5taXhlZEFkZChwKTtcbiAgICAgIGVsc2VcbiAgICAgICAgYWNjID0gYWNjLmFkZChwKTtcbiAgICB9XG4gIH1cbiAgLy8gWmVyb2lmeSByZWZlcmVuY2VzXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspXG4gICAgd25kW2ldID0gbnVsbDtcblxuICBpZiAoamFjb2JpYW5SZXN1bHQpXG4gICAgcmV0dXJuIGFjYztcbiAgZWxzZVxuICAgIHJldHVybiBhY2MudG9QKCk7XG59O1xuXG5mdW5jdGlvbiBCYXNlUG9pbnQoY3VydmUsIHR5cGUpIHtcbiAgdGhpcy5jdXJ2ZSA9IGN1cnZlO1xuICB0aGlzLnR5cGUgPSB0eXBlO1xuICB0aGlzLnByZWNvbXB1dGVkID0gbnVsbDtcbn1cbkJhc2VDdXJ2ZS5CYXNlUG9pbnQgPSBCYXNlUG9pbnQ7XG5cbkJhc2VQb2ludC5wcm90b3R5cGUuZXEgPSBmdW5jdGlvbiBlcSgvKm90aGVyKi8pIHtcbiAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcbn07XG5cbkJhc2VQb2ludC5wcm90b3R5cGUudmFsaWRhdGUgPSBmdW5jdGlvbiB2YWxpZGF0ZSgpIHtcbiAgcmV0dXJuIHRoaXMuY3VydmUudmFsaWRhdGUodGhpcyk7XG59O1xuXG5CYXNlQ3VydmUucHJvdG90eXBlLmRlY29kZVBvaW50ID0gZnVuY3Rpb24gZGVjb2RlUG9pbnQoYnl0ZXMsIGVuYykge1xuICBieXRlcyA9IHV0aWxzLnRvQXJyYXkoYnl0ZXMsIGVuYyk7XG5cbiAgdmFyIGxlbiA9IHRoaXMucC5ieXRlTGVuZ3RoKCk7XG5cbiAgLy8gdW5jb21wcmVzc2VkLCBoeWJyaWQtb2RkLCBoeWJyaWQtZXZlblxuICBpZiAoKGJ5dGVzWzBdID09PSAweDA0IHx8IGJ5dGVzWzBdID09PSAweDA2IHx8IGJ5dGVzWzBdID09PSAweDA3KSAmJlxuICAgICAgYnl0ZXMubGVuZ3RoIC0gMSA9PT0gMiAqIGxlbikge1xuICAgIGlmIChieXRlc1swXSA9PT0gMHgwNilcbiAgICAgIGFzc2VydChieXRlc1tieXRlcy5sZW5ndGggLSAxXSAlIDIgPT09IDApO1xuICAgIGVsc2UgaWYgKGJ5dGVzWzBdID09PSAweDA3KVxuICAgICAgYXNzZXJ0KGJ5dGVzW2J5dGVzLmxlbmd0aCAtIDFdICUgMiA9PT0gMSk7XG5cbiAgICB2YXIgcmVzID0gIHRoaXMucG9pbnQoYnl0ZXMuc2xpY2UoMSwgMSArIGxlbiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVzLnNsaWNlKDEgKyBsZW4sIDEgKyAyICogbGVuKSk7XG5cbiAgICByZXR1cm4gcmVzO1xuICB9IGVsc2UgaWYgKChieXRlc1swXSA9PT0gMHgwMiB8fCBieXRlc1swXSA9PT0gMHgwMykgJiZcbiAgICAgICAgICAgICAgYnl0ZXMubGVuZ3RoIC0gMSA9PT0gbGVuKSB7XG4gICAgcmV0dXJuIHRoaXMucG9pbnRGcm9tWChieXRlcy5zbGljZSgxLCAxICsgbGVuKSwgYnl0ZXNbMF0gPT09IDB4MDMpO1xuICB9XG4gIHRocm93IG5ldyBFcnJvcignVW5rbm93biBwb2ludCBmb3JtYXQnKTtcbn07XG5cbkJhc2VQb2ludC5wcm90b3R5cGUuZW5jb2RlQ29tcHJlc3NlZCA9IGZ1bmN0aW9uIGVuY29kZUNvbXByZXNzZWQoZW5jKSB7XG4gIHJldHVybiB0aGlzLmVuY29kZShlbmMsIHRydWUpO1xufTtcblxuQmFzZVBvaW50LnByb3RvdHlwZS5fZW5jb2RlID0gZnVuY3Rpb24gX2VuY29kZShjb21wYWN0KSB7XG4gIHZhciBsZW4gPSB0aGlzLmN1cnZlLnAuYnl0ZUxlbmd0aCgpO1xuICB2YXIgeCA9IHRoaXMuZ2V0WCgpLnRvQXJyYXkoJ2JlJywgbGVuKTtcblxuICBpZiAoY29tcGFjdClcbiAgICByZXR1cm4gWyB0aGlzLmdldFkoKS5pc0V2ZW4oKSA/IDB4MDIgOiAweDAzIF0uY29uY2F0KHgpO1xuXG4gIHJldHVybiBbIDB4MDQgXS5jb25jYXQoeCwgdGhpcy5nZXRZKCkudG9BcnJheSgnYmUnLCBsZW4pKSA7XG59O1xuXG5CYXNlUG9pbnQucHJvdG90eXBlLmVuY29kZSA9IGZ1bmN0aW9uIGVuY29kZShlbmMsIGNvbXBhY3QpIHtcbiAgcmV0dXJuIHV0aWxzLmVuY29kZSh0aGlzLl9lbmNvZGUoY29tcGFjdCksIGVuYyk7XG59O1xuXG5CYXNlUG9pbnQucHJvdG90eXBlLnByZWNvbXB1dGUgPSBmdW5jdGlvbiBwcmVjb21wdXRlKHBvd2VyKSB7XG4gIGlmICh0aGlzLnByZWNvbXB1dGVkKVxuICAgIHJldHVybiB0aGlzO1xuXG4gIHZhciBwcmVjb21wdXRlZCA9IHtcbiAgICBkb3VibGVzOiBudWxsLFxuICAgIG5hZjogbnVsbCxcbiAgICBiZXRhOiBudWxsXG4gIH07XG4gIHByZWNvbXB1dGVkLm5hZiA9IHRoaXMuX2dldE5BRlBvaW50cyg4KTtcbiAgcHJlY29tcHV0ZWQuZG91YmxlcyA9IHRoaXMuX2dldERvdWJsZXMoNCwgcG93ZXIpO1xuICBwcmVjb21wdXRlZC5iZXRhID0gdGhpcy5fZ2V0QmV0YSgpO1xuICB0aGlzLnByZWNvbXB1dGVkID0gcHJlY29tcHV0ZWQ7XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5CYXNlUG9pbnQucHJvdG90eXBlLl9oYXNEb3VibGVzID0gZnVuY3Rpb24gX2hhc0RvdWJsZXMoaykge1xuICBpZiAoIXRoaXMucHJlY29tcHV0ZWQpXG4gICAgcmV0dXJuIGZhbHNlO1xuXG4gIHZhciBkb3VibGVzID0gdGhpcy5wcmVjb21wdXRlZC5kb3VibGVzO1xuICBpZiAoIWRvdWJsZXMpXG4gICAgcmV0dXJuIGZhbHNlO1xuXG4gIHJldHVybiBkb3VibGVzLnBvaW50cy5sZW5ndGggPj0gTWF0aC5jZWlsKChrLmJpdExlbmd0aCgpICsgMSkgLyBkb3VibGVzLnN0ZXApO1xufTtcblxuQmFzZVBvaW50LnByb3RvdHlwZS5fZ2V0RG91YmxlcyA9IGZ1bmN0aW9uIF9nZXREb3VibGVzKHN0ZXAsIHBvd2VyKSB7XG4gIGlmICh0aGlzLnByZWNvbXB1dGVkICYmIHRoaXMucHJlY29tcHV0ZWQuZG91YmxlcylcbiAgICByZXR1cm4gdGhpcy5wcmVjb21wdXRlZC5kb3VibGVzO1xuXG4gIHZhciBkb3VibGVzID0gWyB0aGlzIF07XG4gIHZhciBhY2MgPSB0aGlzO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHBvd2VyOyBpICs9IHN0ZXApIHtcbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IHN0ZXA7IGorKylcbiAgICAgIGFjYyA9IGFjYy5kYmwoKTtcbiAgICBkb3VibGVzLnB1c2goYWNjKTtcbiAgfVxuICByZXR1cm4ge1xuICAgIHN0ZXA6IHN0ZXAsXG4gICAgcG9pbnRzOiBkb3VibGVzXG4gIH07XG59O1xuXG5CYXNlUG9pbnQucHJvdG90eXBlLl9nZXROQUZQb2ludHMgPSBmdW5jdGlvbiBfZ2V0TkFGUG9pbnRzKHduZCkge1xuICBpZiAodGhpcy5wcmVjb21wdXRlZCAmJiB0aGlzLnByZWNvbXB1dGVkLm5hZilcbiAgICByZXR1cm4gdGhpcy5wcmVjb21wdXRlZC5uYWY7XG5cbiAgdmFyIHJlcyA9IFsgdGhpcyBdO1xuICB2YXIgbWF4ID0gKDEgPDwgd25kKSAtIDE7XG4gIHZhciBkYmwgPSBtYXggPT09IDEgPyBudWxsIDogdGhpcy5kYmwoKTtcbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBtYXg7IGkrKylcbiAgICByZXNbaV0gPSByZXNbaSAtIDFdLmFkZChkYmwpO1xuICByZXR1cm4ge1xuICAgIHduZDogd25kLFxuICAgIHBvaW50czogcmVzXG4gIH07XG59O1xuXG5CYXNlUG9pbnQucHJvdG90eXBlLl9nZXRCZXRhID0gZnVuY3Rpb24gX2dldEJldGEoKSB7XG4gIHJldHVybiBudWxsO1xufTtcblxuQmFzZVBvaW50LnByb3RvdHlwZS5kYmxwID0gZnVuY3Rpb24gZGJscChrKSB7XG4gIHZhciByID0gdGhpcztcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBrOyBpKyspXG4gICAgciA9IHIuZGJsKCk7XG4gIHJldHVybiByO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGN1cnZlID0gcmVxdWlyZSgnLi4vY3VydmUnKTtcbnZhciBlbGxpcHRpYyA9IHJlcXVpcmUoJy4uLy4uL2VsbGlwdGljJyk7XG52YXIgQk4gPSByZXF1aXJlKCdibi5qcycpO1xudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcbnZhciBCYXNlID0gY3VydmUuYmFzZTtcblxudmFyIGFzc2VydCA9IGVsbGlwdGljLnV0aWxzLmFzc2VydDtcblxuZnVuY3Rpb24gRWR3YXJkc0N1cnZlKGNvbmYpIHtcbiAgLy8gTk9URTogSW1wb3J0YW50IGFzIHdlIGFyZSBjcmVhdGluZyBwb2ludCBpbiBCYXNlLmNhbGwoKVxuICB0aGlzLnR3aXN0ZWQgPSAoY29uZi5hIHwgMCkgIT09IDE7XG4gIHRoaXMubU9uZUEgPSB0aGlzLnR3aXN0ZWQgJiYgKGNvbmYuYSB8IDApID09PSAtMTtcbiAgdGhpcy5leHRlbmRlZCA9IHRoaXMubU9uZUE7XG5cbiAgQmFzZS5jYWxsKHRoaXMsICdlZHdhcmRzJywgY29uZik7XG5cbiAgdGhpcy5hID0gbmV3IEJOKGNvbmYuYSwgMTYpLnVtb2QodGhpcy5yZWQubSk7XG4gIHRoaXMuYSA9IHRoaXMuYS50b1JlZCh0aGlzLnJlZCk7XG4gIHRoaXMuYyA9IG5ldyBCTihjb25mLmMsIDE2KS50b1JlZCh0aGlzLnJlZCk7XG4gIHRoaXMuYzIgPSB0aGlzLmMucmVkU3FyKCk7XG4gIHRoaXMuZCA9IG5ldyBCTihjb25mLmQsIDE2KS50b1JlZCh0aGlzLnJlZCk7XG4gIHRoaXMuZGQgPSB0aGlzLmQucmVkQWRkKHRoaXMuZCk7XG5cbiAgYXNzZXJ0KCF0aGlzLnR3aXN0ZWQgfHwgdGhpcy5jLmZyb21SZWQoKS5jbXBuKDEpID09PSAwKTtcbiAgdGhpcy5vbmVDID0gKGNvbmYuYyB8IDApID09PSAxO1xufVxuaW5oZXJpdHMoRWR3YXJkc0N1cnZlLCBCYXNlKTtcbm1vZHVsZS5leHBvcnRzID0gRWR3YXJkc0N1cnZlO1xuXG5FZHdhcmRzQ3VydmUucHJvdG90eXBlLl9tdWxBID0gZnVuY3Rpb24gX211bEEobnVtKSB7XG4gIGlmICh0aGlzLm1PbmVBKVxuICAgIHJldHVybiBudW0ucmVkTmVnKCk7XG4gIGVsc2VcbiAgICByZXR1cm4gdGhpcy5hLnJlZE11bChudW0pO1xufTtcblxuRWR3YXJkc0N1cnZlLnByb3RvdHlwZS5fbXVsQyA9IGZ1bmN0aW9uIF9tdWxDKG51bSkge1xuICBpZiAodGhpcy5vbmVDKVxuICAgIHJldHVybiBudW07XG4gIGVsc2VcbiAgICByZXR1cm4gdGhpcy5jLnJlZE11bChudW0pO1xufTtcblxuLy8gSnVzdCBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIFNob3J0IGN1cnZlXG5FZHdhcmRzQ3VydmUucHJvdG90eXBlLmpwb2ludCA9IGZ1bmN0aW9uIGpwb2ludCh4LCB5LCB6LCB0KSB7XG4gIHJldHVybiB0aGlzLnBvaW50KHgsIHksIHosIHQpO1xufTtcblxuRWR3YXJkc0N1cnZlLnByb3RvdHlwZS5wb2ludEZyb21YID0gZnVuY3Rpb24gcG9pbnRGcm9tWCh4LCBvZGQpIHtcbiAgeCA9IG5ldyBCTih4LCAxNik7XG4gIGlmICgheC5yZWQpXG4gICAgeCA9IHgudG9SZWQodGhpcy5yZWQpO1xuXG4gIHZhciB4MiA9IHgucmVkU3FyKCk7XG4gIHZhciByaHMgPSB0aGlzLmMyLnJlZFN1Yih0aGlzLmEucmVkTXVsKHgyKSk7XG4gIHZhciBsaHMgPSB0aGlzLm9uZS5yZWRTdWIodGhpcy5jMi5yZWRNdWwodGhpcy5kKS5yZWRNdWwoeDIpKTtcblxuICB2YXIgeTIgPSByaHMucmVkTXVsKGxocy5yZWRJbnZtKCkpO1xuICB2YXIgeSA9IHkyLnJlZFNxcnQoKTtcbiAgaWYgKHkucmVkU3FyKCkucmVkU3ViKHkyKS5jbXAodGhpcy56ZXJvKSAhPT0gMClcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgcG9pbnQnKTtcblxuICB2YXIgaXNPZGQgPSB5LmZyb21SZWQoKS5pc09kZCgpO1xuICBpZiAob2RkICYmICFpc09kZCB8fCAhb2RkICYmIGlzT2RkKVxuICAgIHkgPSB5LnJlZE5lZygpO1xuXG4gIHJldHVybiB0aGlzLnBvaW50KHgsIHkpO1xufTtcblxuRWR3YXJkc0N1cnZlLnByb3RvdHlwZS5wb2ludEZyb21ZID0gZnVuY3Rpb24gcG9pbnRGcm9tWSh5LCBvZGQpIHtcbiAgeSA9IG5ldyBCTih5LCAxNik7XG4gIGlmICgheS5yZWQpXG4gICAgeSA9IHkudG9SZWQodGhpcy5yZWQpO1xuXG4gIC8vIHheMiA9ICh5XjIgLSAxKSAvIChkIHleMiArIDEpXG4gIHZhciB5MiA9IHkucmVkU3FyKCk7XG4gIHZhciBsaHMgPSB5Mi5yZWRTdWIodGhpcy5vbmUpO1xuICB2YXIgcmhzID0geTIucmVkTXVsKHRoaXMuZCkucmVkQWRkKHRoaXMub25lKTtcbiAgdmFyIHgyID0gbGhzLnJlZE11bChyaHMucmVkSW52bSgpKTtcblxuICBpZiAoeDIuY21wKHRoaXMuemVybykgPT09IDApIHtcbiAgICBpZiAob2RkKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIHBvaW50Jyk7XG4gICAgZWxzZVxuICAgICAgcmV0dXJuIHRoaXMucG9pbnQodGhpcy56ZXJvLCB5KTtcbiAgfVxuXG4gIHZhciB4ID0geDIucmVkU3FydCgpO1xuICBpZiAoeC5yZWRTcXIoKS5yZWRTdWIoeDIpLmNtcCh0aGlzLnplcm8pICE9PSAwKVxuICAgIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBwb2ludCcpO1xuXG4gIGlmICh4LmlzT2RkKCkgIT09IG9kZClcbiAgICB4ID0geC5yZWROZWcoKTtcblxuICByZXR1cm4gdGhpcy5wb2ludCh4LCB5KTtcbn07XG5cbkVkd2FyZHNDdXJ2ZS5wcm90b3R5cGUudmFsaWRhdGUgPSBmdW5jdGlvbiB2YWxpZGF0ZShwb2ludCkge1xuICBpZiAocG9pbnQuaXNJbmZpbml0eSgpKVxuICAgIHJldHVybiB0cnVlO1xuXG4gIC8vIEN1cnZlOiBBICogWF4yICsgWV4yID0gQ14yICogKDEgKyBEICogWF4yICogWV4yKVxuICBwb2ludC5ub3JtYWxpemUoKTtcblxuICB2YXIgeDIgPSBwb2ludC54LnJlZFNxcigpO1xuICB2YXIgeTIgPSBwb2ludC55LnJlZFNxcigpO1xuICB2YXIgbGhzID0geDIucmVkTXVsKHRoaXMuYSkucmVkQWRkKHkyKTtcbiAgdmFyIHJocyA9IHRoaXMuYzIucmVkTXVsKHRoaXMub25lLnJlZEFkZCh0aGlzLmQucmVkTXVsKHgyKS5yZWRNdWwoeTIpKSk7XG5cbiAgcmV0dXJuIGxocy5jbXAocmhzKSA9PT0gMDtcbn07XG5cbmZ1bmN0aW9uIFBvaW50KGN1cnZlLCB4LCB5LCB6LCB0KSB7XG4gIEJhc2UuQmFzZVBvaW50LmNhbGwodGhpcywgY3VydmUsICdwcm9qZWN0aXZlJyk7XG4gIGlmICh4ID09PSBudWxsICYmIHkgPT09IG51bGwgJiYgeiA9PT0gbnVsbCkge1xuICAgIHRoaXMueCA9IHRoaXMuY3VydmUuemVybztcbiAgICB0aGlzLnkgPSB0aGlzLmN1cnZlLm9uZTtcbiAgICB0aGlzLnogPSB0aGlzLmN1cnZlLm9uZTtcbiAgICB0aGlzLnQgPSB0aGlzLmN1cnZlLnplcm87XG4gICAgdGhpcy56T25lID0gdHJ1ZTtcbiAgfSBlbHNlIHtcbiAgICB0aGlzLnggPSBuZXcgQk4oeCwgMTYpO1xuICAgIHRoaXMueSA9IG5ldyBCTih5LCAxNik7XG4gICAgdGhpcy56ID0geiA/IG5ldyBCTih6LCAxNikgOiB0aGlzLmN1cnZlLm9uZTtcbiAgICB0aGlzLnQgPSB0ICYmIG5ldyBCTih0LCAxNik7XG4gICAgaWYgKCF0aGlzLngucmVkKVxuICAgICAgdGhpcy54ID0gdGhpcy54LnRvUmVkKHRoaXMuY3VydmUucmVkKTtcbiAgICBpZiAoIXRoaXMueS5yZWQpXG4gICAgICB0aGlzLnkgPSB0aGlzLnkudG9SZWQodGhpcy5jdXJ2ZS5yZWQpO1xuICAgIGlmICghdGhpcy56LnJlZClcbiAgICAgIHRoaXMueiA9IHRoaXMuei50b1JlZCh0aGlzLmN1cnZlLnJlZCk7XG4gICAgaWYgKHRoaXMudCAmJiAhdGhpcy50LnJlZClcbiAgICAgIHRoaXMudCA9IHRoaXMudC50b1JlZCh0aGlzLmN1cnZlLnJlZCk7XG4gICAgdGhpcy56T25lID0gdGhpcy56ID09PSB0aGlzLmN1cnZlLm9uZTtcblxuICAgIC8vIFVzZSBleHRlbmRlZCBjb29yZGluYXRlc1xuICAgIGlmICh0aGlzLmN1cnZlLmV4dGVuZGVkICYmICF0aGlzLnQpIHtcbiAgICAgIHRoaXMudCA9IHRoaXMueC5yZWRNdWwodGhpcy55KTtcbiAgICAgIGlmICghdGhpcy56T25lKVxuICAgICAgICB0aGlzLnQgPSB0aGlzLnQucmVkTXVsKHRoaXMuei5yZWRJbnZtKCkpO1xuICAgIH1cbiAgfVxufVxuaW5oZXJpdHMoUG9pbnQsIEJhc2UuQmFzZVBvaW50KTtcblxuRWR3YXJkc0N1cnZlLnByb3RvdHlwZS5wb2ludEZyb21KU09OID0gZnVuY3Rpb24gcG9pbnRGcm9tSlNPTihvYmopIHtcbiAgcmV0dXJuIFBvaW50LmZyb21KU09OKHRoaXMsIG9iaik7XG59O1xuXG5FZHdhcmRzQ3VydmUucHJvdG90eXBlLnBvaW50ID0gZnVuY3Rpb24gcG9pbnQoeCwgeSwgeiwgdCkge1xuICByZXR1cm4gbmV3IFBvaW50KHRoaXMsIHgsIHksIHosIHQpO1xufTtcblxuUG9pbnQuZnJvbUpTT04gPSBmdW5jdGlvbiBmcm9tSlNPTihjdXJ2ZSwgb2JqKSB7XG4gIHJldHVybiBuZXcgUG9pbnQoY3VydmUsIG9ialswXSwgb2JqWzFdLCBvYmpbMl0pO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmluc3BlY3QgPSBmdW5jdGlvbiBpbnNwZWN0KCkge1xuICBpZiAodGhpcy5pc0luZmluaXR5KCkpXG4gICAgcmV0dXJuICc8RUMgUG9pbnQgSW5maW5pdHk+JztcbiAgcmV0dXJuICc8RUMgUG9pbnQgeDogJyArIHRoaXMueC5mcm9tUmVkKCkudG9TdHJpbmcoMTYsIDIpICtcbiAgICAgICcgeTogJyArIHRoaXMueS5mcm9tUmVkKCkudG9TdHJpbmcoMTYsIDIpICtcbiAgICAgICcgejogJyArIHRoaXMuei5mcm9tUmVkKCkudG9TdHJpbmcoMTYsIDIpICsgJz4nO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmlzSW5maW5pdHkgPSBmdW5jdGlvbiBpc0luZmluaXR5KCkge1xuICAvLyBYWFggVGhpcyBjb2RlIGFzc3VtZXMgdGhhdCB6ZXJvIGlzIGFsd2F5cyB6ZXJvIGluIHJlZFxuICByZXR1cm4gdGhpcy54LmNtcG4oMCkgPT09IDAgJiZcbiAgICAgICAgIHRoaXMueS5jbXAodGhpcy56KSA9PT0gMDtcbn07XG5cblBvaW50LnByb3RvdHlwZS5fZXh0RGJsID0gZnVuY3Rpb24gX2V4dERibCgpIHtcbiAgLy8gaHlwZXJlbGxpcHRpYy5vcmcvRUZEL2cxcC9hdXRvLXR3aXN0ZWQtZXh0ZW5kZWQtMS5odG1sXG4gIC8vICAgICAjZG91YmxpbmctZGJsLTIwMDgtaHdjZFxuICAvLyA0TSArIDRTXG5cbiAgLy8gQSA9IFgxXjJcbiAgdmFyIGEgPSB0aGlzLngucmVkU3FyKCk7XG4gIC8vIEIgPSBZMV4yXG4gIHZhciBiID0gdGhpcy55LnJlZFNxcigpO1xuICAvLyBDID0gMiAqIFoxXjJcbiAgdmFyIGMgPSB0aGlzLnoucmVkU3FyKCk7XG4gIGMgPSBjLnJlZElBZGQoYyk7XG4gIC8vIEQgPSBhICogQVxuICB2YXIgZCA9IHRoaXMuY3VydmUuX211bEEoYSk7XG4gIC8vIEUgPSAoWDEgKyBZMSleMiAtIEEgLSBCXG4gIHZhciBlID0gdGhpcy54LnJlZEFkZCh0aGlzLnkpLnJlZFNxcigpLnJlZElTdWIoYSkucmVkSVN1YihiKTtcbiAgLy8gRyA9IEQgKyBCXG4gIHZhciBnID0gZC5yZWRBZGQoYik7XG4gIC8vIEYgPSBHIC0gQ1xuICB2YXIgZiA9IGcucmVkU3ViKGMpO1xuICAvLyBIID0gRCAtIEJcbiAgdmFyIGggPSBkLnJlZFN1YihiKTtcbiAgLy8gWDMgPSBFICogRlxuICB2YXIgbnggPSBlLnJlZE11bChmKTtcbiAgLy8gWTMgPSBHICogSFxuICB2YXIgbnkgPSBnLnJlZE11bChoKTtcbiAgLy8gVDMgPSBFICogSFxuICB2YXIgbnQgPSBlLnJlZE11bChoKTtcbiAgLy8gWjMgPSBGICogR1xuICB2YXIgbnogPSBmLnJlZE11bChnKTtcbiAgcmV0dXJuIHRoaXMuY3VydmUucG9pbnQobngsIG55LCBueiwgbnQpO1xufTtcblxuUG9pbnQucHJvdG90eXBlLl9wcm9qRGJsID0gZnVuY3Rpb24gX3Byb2pEYmwoKSB7XG4gIC8vIGh5cGVyZWxsaXB0aWMub3JnL0VGRC9nMXAvYXV0by10d2lzdGVkLXByb2plY3RpdmUuaHRtbFxuICAvLyAgICAgI2RvdWJsaW5nLWRibC0yMDA4LWJiamxwXG4gIC8vICAgICAjZG91YmxpbmctZGJsLTIwMDctYmxcbiAgLy8gYW5kIG90aGVyc1xuICAvLyBHZW5lcmFsbHkgM00gKyA0UyBvciAyTSArIDRTXG5cbiAgLy8gQiA9IChYMSArIFkxKV4yXG4gIHZhciBiID0gdGhpcy54LnJlZEFkZCh0aGlzLnkpLnJlZFNxcigpO1xuICAvLyBDID0gWDFeMlxuICB2YXIgYyA9IHRoaXMueC5yZWRTcXIoKTtcbiAgLy8gRCA9IFkxXjJcbiAgdmFyIGQgPSB0aGlzLnkucmVkU3FyKCk7XG5cbiAgdmFyIG54O1xuICB2YXIgbnk7XG4gIHZhciBuejtcbiAgaWYgKHRoaXMuY3VydmUudHdpc3RlZCkge1xuICAgIC8vIEUgPSBhICogQ1xuICAgIHZhciBlID0gdGhpcy5jdXJ2ZS5fbXVsQShjKTtcbiAgICAvLyBGID0gRSArIERcbiAgICB2YXIgZiA9IGUucmVkQWRkKGQpO1xuICAgIGlmICh0aGlzLnpPbmUpIHtcbiAgICAgIC8vIFgzID0gKEIgLSBDIC0gRCkgKiAoRiAtIDIpXG4gICAgICBueCA9IGIucmVkU3ViKGMpLnJlZFN1YihkKS5yZWRNdWwoZi5yZWRTdWIodGhpcy5jdXJ2ZS50d28pKTtcbiAgICAgIC8vIFkzID0gRiAqIChFIC0gRClcbiAgICAgIG55ID0gZi5yZWRNdWwoZS5yZWRTdWIoZCkpO1xuICAgICAgLy8gWjMgPSBGXjIgLSAyICogRlxuICAgICAgbnogPSBmLnJlZFNxcigpLnJlZFN1YihmKS5yZWRTdWIoZik7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEggPSBaMV4yXG4gICAgICB2YXIgaCA9IHRoaXMuei5yZWRTcXIoKTtcbiAgICAgIC8vIEogPSBGIC0gMiAqIEhcbiAgICAgIHZhciBqID0gZi5yZWRTdWIoaCkucmVkSVN1YihoKTtcbiAgICAgIC8vIFgzID0gKEItQy1EKSpKXG4gICAgICBueCA9IGIucmVkU3ViKGMpLnJlZElTdWIoZCkucmVkTXVsKGopO1xuICAgICAgLy8gWTMgPSBGICogKEUgLSBEKVxuICAgICAgbnkgPSBmLnJlZE11bChlLnJlZFN1YihkKSk7XG4gICAgICAvLyBaMyA9IEYgKiBKXG4gICAgICBueiA9IGYucmVkTXVsKGopO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICAvLyBFID0gQyArIERcbiAgICB2YXIgZSA9IGMucmVkQWRkKGQpO1xuICAgIC8vIEggPSAoYyAqIFoxKV4yXG4gICAgdmFyIGggPSB0aGlzLmN1cnZlLl9tdWxDKHRoaXMuYy5yZWRNdWwodGhpcy56KSkucmVkU3FyKCk7XG4gICAgLy8gSiA9IEUgLSAyICogSFxuICAgIHZhciBqID0gZS5yZWRTdWIoaCkucmVkU3ViKGgpO1xuICAgIC8vIFgzID0gYyAqIChCIC0gRSkgKiBKXG4gICAgbnggPSB0aGlzLmN1cnZlLl9tdWxDKGIucmVkSVN1YihlKSkucmVkTXVsKGopO1xuICAgIC8vIFkzID0gYyAqIEUgKiAoQyAtIEQpXG4gICAgbnkgPSB0aGlzLmN1cnZlLl9tdWxDKGUpLnJlZE11bChjLnJlZElTdWIoZCkpO1xuICAgIC8vIFozID0gRSAqIEpcbiAgICBueiA9IGUucmVkTXVsKGopO1xuICB9XG4gIHJldHVybiB0aGlzLmN1cnZlLnBvaW50KG54LCBueSwgbnopO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmRibCA9IGZ1bmN0aW9uIGRibCgpIHtcbiAgaWYgKHRoaXMuaXNJbmZpbml0eSgpKVxuICAgIHJldHVybiB0aGlzO1xuXG4gIC8vIERvdWJsZSBpbiBleHRlbmRlZCBjb29yZGluYXRlc1xuICBpZiAodGhpcy5jdXJ2ZS5leHRlbmRlZClcbiAgICByZXR1cm4gdGhpcy5fZXh0RGJsKCk7XG4gIGVsc2VcbiAgICByZXR1cm4gdGhpcy5fcHJvakRibCgpO1xufTtcblxuUG9pbnQucHJvdG90eXBlLl9leHRBZGQgPSBmdW5jdGlvbiBfZXh0QWRkKHApIHtcbiAgLy8gaHlwZXJlbGxpcHRpYy5vcmcvRUZEL2cxcC9hdXRvLXR3aXN0ZWQtZXh0ZW5kZWQtMS5odG1sXG4gIC8vICAgICAjYWRkaXRpb24tYWRkLTIwMDgtaHdjZC0zXG4gIC8vIDhNXG5cbiAgLy8gQSA9IChZMSAtIFgxKSAqIChZMiAtIFgyKVxuICB2YXIgYSA9IHRoaXMueS5yZWRTdWIodGhpcy54KS5yZWRNdWwocC55LnJlZFN1YihwLngpKTtcbiAgLy8gQiA9IChZMSArIFgxKSAqIChZMiArIFgyKVxuICB2YXIgYiA9IHRoaXMueS5yZWRBZGQodGhpcy54KS5yZWRNdWwocC55LnJlZEFkZChwLngpKTtcbiAgLy8gQyA9IFQxICogayAqIFQyXG4gIHZhciBjID0gdGhpcy50LnJlZE11bCh0aGlzLmN1cnZlLmRkKS5yZWRNdWwocC50KTtcbiAgLy8gRCA9IFoxICogMiAqIFoyXG4gIHZhciBkID0gdGhpcy56LnJlZE11bChwLnoucmVkQWRkKHAueikpO1xuICAvLyBFID0gQiAtIEFcbiAgdmFyIGUgPSBiLnJlZFN1YihhKTtcbiAgLy8gRiA9IEQgLSBDXG4gIHZhciBmID0gZC5yZWRTdWIoYyk7XG4gIC8vIEcgPSBEICsgQ1xuICB2YXIgZyA9IGQucmVkQWRkKGMpO1xuICAvLyBIID0gQiArIEFcbiAgdmFyIGggPSBiLnJlZEFkZChhKTtcbiAgLy8gWDMgPSBFICogRlxuICB2YXIgbnggPSBlLnJlZE11bChmKTtcbiAgLy8gWTMgPSBHICogSFxuICB2YXIgbnkgPSBnLnJlZE11bChoKTtcbiAgLy8gVDMgPSBFICogSFxuICB2YXIgbnQgPSBlLnJlZE11bChoKTtcbiAgLy8gWjMgPSBGICogR1xuICB2YXIgbnogPSBmLnJlZE11bChnKTtcbiAgcmV0dXJuIHRoaXMuY3VydmUucG9pbnQobngsIG55LCBueiwgbnQpO1xufTtcblxuUG9pbnQucHJvdG90eXBlLl9wcm9qQWRkID0gZnVuY3Rpb24gX3Byb2pBZGQocCkge1xuICAvLyBoeXBlcmVsbGlwdGljLm9yZy9FRkQvZzFwL2F1dG8tdHdpc3RlZC1wcm9qZWN0aXZlLmh0bWxcbiAgLy8gICAgICNhZGRpdGlvbi1hZGQtMjAwOC1iYmpscFxuICAvLyAgICAgI2FkZGl0aW9uLWFkZC0yMDA3LWJsXG4gIC8vIDEwTSArIDFTXG5cbiAgLy8gQSA9IFoxICogWjJcbiAgdmFyIGEgPSB0aGlzLnoucmVkTXVsKHAueik7XG4gIC8vIEIgPSBBXjJcbiAgdmFyIGIgPSBhLnJlZFNxcigpO1xuICAvLyBDID0gWDEgKiBYMlxuICB2YXIgYyA9IHRoaXMueC5yZWRNdWwocC54KTtcbiAgLy8gRCA9IFkxICogWTJcbiAgdmFyIGQgPSB0aGlzLnkucmVkTXVsKHAueSk7XG4gIC8vIEUgPSBkICogQyAqIERcbiAgdmFyIGUgPSB0aGlzLmN1cnZlLmQucmVkTXVsKGMpLnJlZE11bChkKTtcbiAgLy8gRiA9IEIgLSBFXG4gIHZhciBmID0gYi5yZWRTdWIoZSk7XG4gIC8vIEcgPSBCICsgRVxuICB2YXIgZyA9IGIucmVkQWRkKGUpO1xuICAvLyBYMyA9IEEgKiBGICogKChYMSArIFkxKSAqIChYMiArIFkyKSAtIEMgLSBEKVxuICB2YXIgdG1wID0gdGhpcy54LnJlZEFkZCh0aGlzLnkpLnJlZE11bChwLngucmVkQWRkKHAueSkpLnJlZElTdWIoYykucmVkSVN1YihkKTtcbiAgdmFyIG54ID0gYS5yZWRNdWwoZikucmVkTXVsKHRtcCk7XG4gIHZhciBueTtcbiAgdmFyIG56O1xuICBpZiAodGhpcy5jdXJ2ZS50d2lzdGVkKSB7XG4gICAgLy8gWTMgPSBBICogRyAqIChEIC0gYSAqIEMpXG4gICAgbnkgPSBhLnJlZE11bChnKS5yZWRNdWwoZC5yZWRTdWIodGhpcy5jdXJ2ZS5fbXVsQShjKSkpO1xuICAgIC8vIFozID0gRiAqIEdcbiAgICBueiA9IGYucmVkTXVsKGcpO1xuICB9IGVsc2Uge1xuICAgIC8vIFkzID0gQSAqIEcgKiAoRCAtIEMpXG4gICAgbnkgPSBhLnJlZE11bChnKS5yZWRNdWwoZC5yZWRTdWIoYykpO1xuICAgIC8vIFozID0gYyAqIEYgKiBHXG4gICAgbnogPSB0aGlzLmN1cnZlLl9tdWxDKGYpLnJlZE11bChnKTtcbiAgfVxuICByZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChueCwgbnksIG56KTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiBhZGQocCkge1xuICBpZiAodGhpcy5pc0luZmluaXR5KCkpXG4gICAgcmV0dXJuIHA7XG4gIGlmIChwLmlzSW5maW5pdHkoKSlcbiAgICByZXR1cm4gdGhpcztcblxuICBpZiAodGhpcy5jdXJ2ZS5leHRlbmRlZClcbiAgICByZXR1cm4gdGhpcy5fZXh0QWRkKHApO1xuICBlbHNlXG4gICAgcmV0dXJuIHRoaXMuX3Byb2pBZGQocCk7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUubXVsID0gZnVuY3Rpb24gbXVsKGspIHtcbiAgaWYgKHRoaXMuX2hhc0RvdWJsZXMoaykpXG4gICAgcmV0dXJuIHRoaXMuY3VydmUuX2ZpeGVkTmFmTXVsKHRoaXMsIGspO1xuICBlbHNlXG4gICAgcmV0dXJuIHRoaXMuY3VydmUuX3duYWZNdWwodGhpcywgayk7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUubXVsQWRkID0gZnVuY3Rpb24gbXVsQWRkKGsxLCBwLCBrMikge1xuICByZXR1cm4gdGhpcy5jdXJ2ZS5fd25hZk11bEFkZCgxLCBbIHRoaXMsIHAgXSwgWyBrMSwgazIgXSwgMiwgZmFsc2UpO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmptdWxBZGQgPSBmdW5jdGlvbiBqbXVsQWRkKGsxLCBwLCBrMikge1xuICByZXR1cm4gdGhpcy5jdXJ2ZS5fd25hZk11bEFkZCgxLCBbIHRoaXMsIHAgXSwgWyBrMSwgazIgXSwgMiwgdHJ1ZSk7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUubm9ybWFsaXplID0gZnVuY3Rpb24gbm9ybWFsaXplKCkge1xuICBpZiAodGhpcy56T25lKVxuICAgIHJldHVybiB0aGlzO1xuXG4gIC8vIE5vcm1hbGl6ZSBjb29yZGluYXRlc1xuICB2YXIgemkgPSB0aGlzLnoucmVkSW52bSgpO1xuICB0aGlzLnggPSB0aGlzLngucmVkTXVsKHppKTtcbiAgdGhpcy55ID0gdGhpcy55LnJlZE11bCh6aSk7XG4gIGlmICh0aGlzLnQpXG4gICAgdGhpcy50ID0gdGhpcy50LnJlZE11bCh6aSk7XG4gIHRoaXMueiA9IHRoaXMuY3VydmUub25lO1xuICB0aGlzLnpPbmUgPSB0cnVlO1xuICByZXR1cm4gdGhpcztcbn07XG5cblBvaW50LnByb3RvdHlwZS5uZWcgPSBmdW5jdGlvbiBuZWcoKSB7XG4gIHJldHVybiB0aGlzLmN1cnZlLnBvaW50KHRoaXMueC5yZWROZWcoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy55LFxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnosXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudCAmJiB0aGlzLnQucmVkTmVnKCkpO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmdldFggPSBmdW5jdGlvbiBnZXRYKCkge1xuICB0aGlzLm5vcm1hbGl6ZSgpO1xuICByZXR1cm4gdGhpcy54LmZyb21SZWQoKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5nZXRZID0gZnVuY3Rpb24gZ2V0WSgpIHtcbiAgdGhpcy5ub3JtYWxpemUoKTtcbiAgcmV0dXJuIHRoaXMueS5mcm9tUmVkKCk7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuZXEgPSBmdW5jdGlvbiBlcShvdGhlcikge1xuICByZXR1cm4gdGhpcyA9PT0gb3RoZXIgfHxcbiAgICAgICAgIHRoaXMuZ2V0WCgpLmNtcChvdGhlci5nZXRYKCkpID09PSAwICYmXG4gICAgICAgICB0aGlzLmdldFkoKS5jbXAob3RoZXIuZ2V0WSgpKSA9PT0gMDtcbn07XG5cblBvaW50LnByb3RvdHlwZS5lcVhUb1AgPSBmdW5jdGlvbiBlcVhUb1AoeCkge1xuICB2YXIgcnggPSB4LnRvUmVkKHRoaXMuY3VydmUucmVkKS5yZWRNdWwodGhpcy56KTtcbiAgaWYgKHRoaXMueC5jbXAocngpID09PSAwKVxuICAgIHJldHVybiB0cnVlO1xuXG4gIHZhciB4YyA9IHguY2xvbmUoKTtcbiAgdmFyIHQgPSB0aGlzLmN1cnZlLnJlZE4ucmVkTXVsKHRoaXMueik7XG4gIGZvciAoOzspIHtcbiAgICB4Yy5pYWRkKHRoaXMuY3VydmUubik7XG4gICAgaWYgKHhjLmNtcCh0aGlzLmN1cnZlLnApID49IDApXG4gICAgICByZXR1cm4gZmFsc2U7XG5cbiAgICByeC5yZWRJQWRkKHQpO1xuICAgIGlmICh0aGlzLnguY21wKHJ4KSA9PT0gMClcbiAgICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn07XG5cbi8vIENvbXBhdGliaWxpdHkgd2l0aCBCYXNlQ3VydmVcblBvaW50LnByb3RvdHlwZS50b1AgPSBQb2ludC5wcm90b3R5cGUubm9ybWFsaXplO1xuUG9pbnQucHJvdG90eXBlLm1peGVkQWRkID0gUG9pbnQucHJvdG90eXBlLmFkZDtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGN1cnZlID0gZXhwb3J0cztcblxuY3VydmUuYmFzZSA9IHJlcXVpcmUoJy4vYmFzZScpO1xuY3VydmUuc2hvcnQgPSByZXF1aXJlKCcuL3Nob3J0Jyk7XG5jdXJ2ZS5tb250ID0gcmVxdWlyZSgnLi9tb250Jyk7XG5jdXJ2ZS5lZHdhcmRzID0gcmVxdWlyZSgnLi9lZHdhcmRzJyk7XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBjdXJ2ZSA9IHJlcXVpcmUoJy4uL2N1cnZlJyk7XG52YXIgQk4gPSByZXF1aXJlKCdibi5qcycpO1xudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcbnZhciBCYXNlID0gY3VydmUuYmFzZTtcblxudmFyIGVsbGlwdGljID0gcmVxdWlyZSgnLi4vLi4vZWxsaXB0aWMnKTtcbnZhciB1dGlscyA9IGVsbGlwdGljLnV0aWxzO1xuXG5mdW5jdGlvbiBNb250Q3VydmUoY29uZikge1xuICBCYXNlLmNhbGwodGhpcywgJ21vbnQnLCBjb25mKTtcblxuICB0aGlzLmEgPSBuZXcgQk4oY29uZi5hLCAxNikudG9SZWQodGhpcy5yZWQpO1xuICB0aGlzLmIgPSBuZXcgQk4oY29uZi5iLCAxNikudG9SZWQodGhpcy5yZWQpO1xuICB0aGlzLmk0ID0gbmV3IEJOKDQpLnRvUmVkKHRoaXMucmVkKS5yZWRJbnZtKCk7XG4gIHRoaXMudHdvID0gbmV3IEJOKDIpLnRvUmVkKHRoaXMucmVkKTtcbiAgdGhpcy5hMjQgPSB0aGlzLmk0LnJlZE11bCh0aGlzLmEucmVkQWRkKHRoaXMudHdvKSk7XG59XG5pbmhlcml0cyhNb250Q3VydmUsIEJhc2UpO1xubW9kdWxlLmV4cG9ydHMgPSBNb250Q3VydmU7XG5cbk1vbnRDdXJ2ZS5wcm90b3R5cGUudmFsaWRhdGUgPSBmdW5jdGlvbiB2YWxpZGF0ZShwb2ludCkge1xuICB2YXIgeCA9IHBvaW50Lm5vcm1hbGl6ZSgpLng7XG4gIHZhciB4MiA9IHgucmVkU3FyKCk7XG4gIHZhciByaHMgPSB4Mi5yZWRNdWwoeCkucmVkQWRkKHgyLnJlZE11bCh0aGlzLmEpKS5yZWRBZGQoeCk7XG4gIHZhciB5ID0gcmhzLnJlZFNxcnQoKTtcblxuICByZXR1cm4geS5yZWRTcXIoKS5jbXAocmhzKSA9PT0gMDtcbn07XG5cbmZ1bmN0aW9uIFBvaW50KGN1cnZlLCB4LCB6KSB7XG4gIEJhc2UuQmFzZVBvaW50LmNhbGwodGhpcywgY3VydmUsICdwcm9qZWN0aXZlJyk7XG4gIGlmICh4ID09PSBudWxsICYmIHogPT09IG51bGwpIHtcbiAgICB0aGlzLnggPSB0aGlzLmN1cnZlLm9uZTtcbiAgICB0aGlzLnogPSB0aGlzLmN1cnZlLnplcm87XG4gIH0gZWxzZSB7XG4gICAgdGhpcy54ID0gbmV3IEJOKHgsIDE2KTtcbiAgICB0aGlzLnogPSBuZXcgQk4oeiwgMTYpO1xuICAgIGlmICghdGhpcy54LnJlZClcbiAgICAgIHRoaXMueCA9IHRoaXMueC50b1JlZCh0aGlzLmN1cnZlLnJlZCk7XG4gICAgaWYgKCF0aGlzLnoucmVkKVxuICAgICAgdGhpcy56ID0gdGhpcy56LnRvUmVkKHRoaXMuY3VydmUucmVkKTtcbiAgfVxufVxuaW5oZXJpdHMoUG9pbnQsIEJhc2UuQmFzZVBvaW50KTtcblxuTW9udEN1cnZlLnByb3RvdHlwZS5kZWNvZGVQb2ludCA9IGZ1bmN0aW9uIGRlY29kZVBvaW50KGJ5dGVzLCBlbmMpIHtcbiAgcmV0dXJuIHRoaXMucG9pbnQodXRpbHMudG9BcnJheShieXRlcywgZW5jKSwgMSk7XG59O1xuXG5Nb250Q3VydmUucHJvdG90eXBlLnBvaW50ID0gZnVuY3Rpb24gcG9pbnQoeCwgeikge1xuICByZXR1cm4gbmV3IFBvaW50KHRoaXMsIHgsIHopO1xufTtcblxuTW9udEN1cnZlLnByb3RvdHlwZS5wb2ludEZyb21KU09OID0gZnVuY3Rpb24gcG9pbnRGcm9tSlNPTihvYmopIHtcbiAgcmV0dXJuIFBvaW50LmZyb21KU09OKHRoaXMsIG9iaik7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUucHJlY29tcHV0ZSA9IGZ1bmN0aW9uIHByZWNvbXB1dGUoKSB7XG4gIC8vIE5vLW9wXG59O1xuXG5Qb2ludC5wcm90b3R5cGUuX2VuY29kZSA9IGZ1bmN0aW9uIF9lbmNvZGUoKSB7XG4gIHJldHVybiB0aGlzLmdldFgoKS50b0FycmF5KCdiZScsIHRoaXMuY3VydmUucC5ieXRlTGVuZ3RoKCkpO1xufTtcblxuUG9pbnQuZnJvbUpTT04gPSBmdW5jdGlvbiBmcm9tSlNPTihjdXJ2ZSwgb2JqKSB7XG4gIHJldHVybiBuZXcgUG9pbnQoY3VydmUsIG9ialswXSwgb2JqWzFdIHx8IGN1cnZlLm9uZSk7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuaW5zcGVjdCA9IGZ1bmN0aW9uIGluc3BlY3QoKSB7XG4gIGlmICh0aGlzLmlzSW5maW5pdHkoKSlcbiAgICByZXR1cm4gJzxFQyBQb2ludCBJbmZpbml0eT4nO1xuICByZXR1cm4gJzxFQyBQb2ludCB4OiAnICsgdGhpcy54LmZyb21SZWQoKS50b1N0cmluZygxNiwgMikgK1xuICAgICAgJyB6OiAnICsgdGhpcy56LmZyb21SZWQoKS50b1N0cmluZygxNiwgMikgKyAnPic7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuaXNJbmZpbml0eSA9IGZ1bmN0aW9uIGlzSW5maW5pdHkoKSB7XG4gIC8vIFhYWCBUaGlzIGNvZGUgYXNzdW1lcyB0aGF0IHplcm8gaXMgYWx3YXlzIHplcm8gaW4gcmVkXG4gIHJldHVybiB0aGlzLnouY21wbigwKSA9PT0gMDtcbn07XG5cblBvaW50LnByb3RvdHlwZS5kYmwgPSBmdW5jdGlvbiBkYmwoKSB7XG4gIC8vIGh0dHA6Ly9oeXBlcmVsbGlwdGljLm9yZy9FRkQvZzFwL2F1dG8tbW9udGdvbS14ei5odG1sI2RvdWJsaW5nLWRibC0xOTg3LW0tM1xuICAvLyAyTSArIDJTICsgNEFcblxuICAvLyBBID0gWDEgKyBaMVxuICB2YXIgYSA9IHRoaXMueC5yZWRBZGQodGhpcy56KTtcbiAgLy8gQUEgPSBBXjJcbiAgdmFyIGFhID0gYS5yZWRTcXIoKTtcbiAgLy8gQiA9IFgxIC0gWjFcbiAgdmFyIGIgPSB0aGlzLngucmVkU3ViKHRoaXMueik7XG4gIC8vIEJCID0gQl4yXG4gIHZhciBiYiA9IGIucmVkU3FyKCk7XG4gIC8vIEMgPSBBQSAtIEJCXG4gIHZhciBjID0gYWEucmVkU3ViKGJiKTtcbiAgLy8gWDMgPSBBQSAqIEJCXG4gIHZhciBueCA9IGFhLnJlZE11bChiYik7XG4gIC8vIFozID0gQyAqIChCQiArIEEyNCAqIEMpXG4gIHZhciBueiA9IGMucmVkTXVsKGJiLnJlZEFkZCh0aGlzLmN1cnZlLmEyNC5yZWRNdWwoYykpKTtcbiAgcmV0dXJuIHRoaXMuY3VydmUucG9pbnQobngsIG56KTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiBhZGQoKSB7XG4gIHRocm93IG5ldyBFcnJvcignTm90IHN1cHBvcnRlZCBvbiBNb250Z29tZXJ5IGN1cnZlJyk7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuZGlmZkFkZCA9IGZ1bmN0aW9uIGRpZmZBZGQocCwgZGlmZikge1xuICAvLyBodHRwOi8vaHlwZXJlbGxpcHRpYy5vcmcvRUZEL2cxcC9hdXRvLW1vbnRnb20teHouaHRtbCNkaWZmYWRkLWRhZGQtMTk4Ny1tLTNcbiAgLy8gNE0gKyAyUyArIDZBXG5cbiAgLy8gQSA9IFgyICsgWjJcbiAgdmFyIGEgPSB0aGlzLngucmVkQWRkKHRoaXMueik7XG4gIC8vIEIgPSBYMiAtIFoyXG4gIHZhciBiID0gdGhpcy54LnJlZFN1Yih0aGlzLnopO1xuICAvLyBDID0gWDMgKyBaM1xuICB2YXIgYyA9IHAueC5yZWRBZGQocC56KTtcbiAgLy8gRCA9IFgzIC0gWjNcbiAgdmFyIGQgPSBwLngucmVkU3ViKHAueik7XG4gIC8vIERBID0gRCAqIEFcbiAgdmFyIGRhID0gZC5yZWRNdWwoYSk7XG4gIC8vIENCID0gQyAqIEJcbiAgdmFyIGNiID0gYy5yZWRNdWwoYik7XG4gIC8vIFg1ID0gWjEgKiAoREEgKyBDQileMlxuICB2YXIgbnggPSBkaWZmLnoucmVkTXVsKGRhLnJlZEFkZChjYikucmVkU3FyKCkpO1xuICAvLyBaNSA9IFgxICogKERBIC0gQ0IpXjJcbiAgdmFyIG56ID0gZGlmZi54LnJlZE11bChkYS5yZWRJU3ViKGNiKS5yZWRTcXIoKSk7XG4gIHJldHVybiB0aGlzLmN1cnZlLnBvaW50KG54LCBueik7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUubXVsID0gZnVuY3Rpb24gbXVsKGspIHtcbiAgdmFyIHQgPSBrLmNsb25lKCk7XG4gIHZhciBhID0gdGhpczsgLy8gKE4gLyAyKSAqIFEgKyBRXG4gIHZhciBiID0gdGhpcy5jdXJ2ZS5wb2ludChudWxsLCBudWxsKTsgLy8gKE4gLyAyKSAqIFFcbiAgdmFyIGMgPSB0aGlzOyAvLyBRXG5cbiAgZm9yICh2YXIgYml0cyA9IFtdOyB0LmNtcG4oMCkgIT09IDA7IHQuaXVzaHJuKDEpKVxuICAgIGJpdHMucHVzaCh0LmFuZGxuKDEpKTtcblxuICBmb3IgKHZhciBpID0gYml0cy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgIGlmIChiaXRzW2ldID09PSAwKSB7XG4gICAgICAvLyBOICogUSArIFEgPSAoKE4gLyAyKSAqIFEgKyBRKSkgKyAoTiAvIDIpICogUVxuICAgICAgYSA9IGEuZGlmZkFkZChiLCBjKTtcbiAgICAgIC8vIE4gKiBRID0gMiAqICgoTiAvIDIpICogUSArIFEpKVxuICAgICAgYiA9IGIuZGJsKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIE4gKiBRID0gKChOIC8gMikgKiBRICsgUSkgKyAoKE4gLyAyKSAqIFEpXG4gICAgICBiID0gYS5kaWZmQWRkKGIsIGMpO1xuICAgICAgLy8gTiAqIFEgKyBRID0gMiAqICgoTiAvIDIpICogUSArIFEpXG4gICAgICBhID0gYS5kYmwoKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGI7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUubXVsQWRkID0gZnVuY3Rpb24gbXVsQWRkKCkge1xuICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBzdXBwb3J0ZWQgb24gTW9udGdvbWVyeSBjdXJ2ZScpO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmp1bWxBZGQgPSBmdW5jdGlvbiBqdW1sQWRkKCkge1xuICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBzdXBwb3J0ZWQgb24gTW9udGdvbWVyeSBjdXJ2ZScpO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmVxID0gZnVuY3Rpb24gZXEob3RoZXIpIHtcbiAgcmV0dXJuIHRoaXMuZ2V0WCgpLmNtcChvdGhlci5nZXRYKCkpID09PSAwO1xufTtcblxuUG9pbnQucHJvdG90eXBlLm5vcm1hbGl6ZSA9IGZ1bmN0aW9uIG5vcm1hbGl6ZSgpIHtcbiAgdGhpcy54ID0gdGhpcy54LnJlZE11bCh0aGlzLnoucmVkSW52bSgpKTtcbiAgdGhpcy56ID0gdGhpcy5jdXJ2ZS5vbmU7XG4gIHJldHVybiB0aGlzO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmdldFggPSBmdW5jdGlvbiBnZXRYKCkge1xuICAvLyBOb3JtYWxpemUgY29vcmRpbmF0ZXNcbiAgdGhpcy5ub3JtYWxpemUoKTtcblxuICByZXR1cm4gdGhpcy54LmZyb21SZWQoKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBjdXJ2ZSA9IHJlcXVpcmUoJy4uL2N1cnZlJyk7XG52YXIgZWxsaXB0aWMgPSByZXF1aXJlKCcuLi8uLi9lbGxpcHRpYycpO1xudmFyIEJOID0gcmVxdWlyZSgnYm4uanMnKTtcbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJyk7XG52YXIgQmFzZSA9IGN1cnZlLmJhc2U7XG5cbnZhciBhc3NlcnQgPSBlbGxpcHRpYy51dGlscy5hc3NlcnQ7XG5cbmZ1bmN0aW9uIFNob3J0Q3VydmUoY29uZikge1xuICBCYXNlLmNhbGwodGhpcywgJ3Nob3J0JywgY29uZik7XG5cbiAgdGhpcy5hID0gbmV3IEJOKGNvbmYuYSwgMTYpLnRvUmVkKHRoaXMucmVkKTtcbiAgdGhpcy5iID0gbmV3IEJOKGNvbmYuYiwgMTYpLnRvUmVkKHRoaXMucmVkKTtcbiAgdGhpcy50aW52ID0gdGhpcy50d28ucmVkSW52bSgpO1xuXG4gIHRoaXMuemVyb0EgPSB0aGlzLmEuZnJvbVJlZCgpLmNtcG4oMCkgPT09IDA7XG4gIHRoaXMudGhyZWVBID0gdGhpcy5hLmZyb21SZWQoKS5zdWIodGhpcy5wKS5jbXBuKC0zKSA9PT0gMDtcblxuICAvLyBJZiB0aGUgY3VydmUgaXMgZW5kb21vcnBoaWMsIHByZWNhbGN1bGF0ZSBiZXRhIGFuZCBsYW1iZGFcbiAgdGhpcy5lbmRvID0gdGhpcy5fZ2V0RW5kb21vcnBoaXNtKGNvbmYpO1xuICB0aGlzLl9lbmRvV25hZlQxID0gbmV3IEFycmF5KDQpO1xuICB0aGlzLl9lbmRvV25hZlQyID0gbmV3IEFycmF5KDQpO1xufVxuaW5oZXJpdHMoU2hvcnRDdXJ2ZSwgQmFzZSk7XG5tb2R1bGUuZXhwb3J0cyA9IFNob3J0Q3VydmU7XG5cblNob3J0Q3VydmUucHJvdG90eXBlLl9nZXRFbmRvbW9ycGhpc20gPSBmdW5jdGlvbiBfZ2V0RW5kb21vcnBoaXNtKGNvbmYpIHtcbiAgLy8gTm8gZWZmaWNpZW50IGVuZG9tb3JwaGlzbVxuICBpZiAoIXRoaXMuemVyb0EgfHwgIXRoaXMuZyB8fCAhdGhpcy5uIHx8IHRoaXMucC5tb2RuKDMpICE9PSAxKVxuICAgIHJldHVybjtcblxuICAvLyBDb21wdXRlIGJldGEgYW5kIGxhbWJkYSwgdGhhdCBsYW1iZGEgKiBQID0gKGJldGEgKiBQeDsgUHkpXG4gIHZhciBiZXRhO1xuICB2YXIgbGFtYmRhO1xuICBpZiAoY29uZi5iZXRhKSB7XG4gICAgYmV0YSA9IG5ldyBCTihjb25mLmJldGEsIDE2KS50b1JlZCh0aGlzLnJlZCk7XG4gIH0gZWxzZSB7XG4gICAgdmFyIGJldGFzID0gdGhpcy5fZ2V0RW5kb1Jvb3RzKHRoaXMucCk7XG4gICAgLy8gQ2hvb3NlIHRoZSBzbWFsbGVzdCBiZXRhXG4gICAgYmV0YSA9IGJldGFzWzBdLmNtcChiZXRhc1sxXSkgPCAwID8gYmV0YXNbMF0gOiBiZXRhc1sxXTtcbiAgICBiZXRhID0gYmV0YS50b1JlZCh0aGlzLnJlZCk7XG4gIH1cbiAgaWYgKGNvbmYubGFtYmRhKSB7XG4gICAgbGFtYmRhID0gbmV3IEJOKGNvbmYubGFtYmRhLCAxNik7XG4gIH0gZWxzZSB7XG4gICAgLy8gQ2hvb3NlIHRoZSBsYW1iZGEgdGhhdCBpcyBtYXRjaGluZyBzZWxlY3RlZCBiZXRhXG4gICAgdmFyIGxhbWJkYXMgPSB0aGlzLl9nZXRFbmRvUm9vdHModGhpcy5uKTtcbiAgICBpZiAodGhpcy5nLm11bChsYW1iZGFzWzBdKS54LmNtcCh0aGlzLmcueC5yZWRNdWwoYmV0YSkpID09PSAwKSB7XG4gICAgICBsYW1iZGEgPSBsYW1iZGFzWzBdO1xuICAgIH0gZWxzZSB7XG4gICAgICBsYW1iZGEgPSBsYW1iZGFzWzFdO1xuICAgICAgYXNzZXJ0KHRoaXMuZy5tdWwobGFtYmRhKS54LmNtcCh0aGlzLmcueC5yZWRNdWwoYmV0YSkpID09PSAwKTtcbiAgICB9XG4gIH1cblxuICAvLyBHZXQgYmFzaXMgdmVjdG9ycywgdXNlZCBmb3IgYmFsYW5jZWQgbGVuZ3RoLXR3byByZXByZXNlbnRhdGlvblxuICB2YXIgYmFzaXM7XG4gIGlmIChjb25mLmJhc2lzKSB7XG4gICAgYmFzaXMgPSBjb25mLmJhc2lzLm1hcChmdW5jdGlvbih2ZWMpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGE6IG5ldyBCTih2ZWMuYSwgMTYpLFxuICAgICAgICBiOiBuZXcgQk4odmVjLmIsIDE2KVxuICAgICAgfTtcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBiYXNpcyA9IHRoaXMuX2dldEVuZG9CYXNpcyhsYW1iZGEpO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBiZXRhOiBiZXRhLFxuICAgIGxhbWJkYTogbGFtYmRhLFxuICAgIGJhc2lzOiBiYXNpc1xuICB9O1xufTtcblxuU2hvcnRDdXJ2ZS5wcm90b3R5cGUuX2dldEVuZG9Sb290cyA9IGZ1bmN0aW9uIF9nZXRFbmRvUm9vdHMobnVtKSB7XG4gIC8vIEZpbmQgcm9vdHMgb2YgZm9yIHheMiArIHggKyAxIGluIEZcbiAgLy8gUm9vdCA9ICgtMSArLSBTcXJ0KC0zKSkgLyAyXG4gIC8vXG4gIHZhciByZWQgPSBudW0gPT09IHRoaXMucCA/IHRoaXMucmVkIDogQk4ubW9udChudW0pO1xuICB2YXIgdGludiA9IG5ldyBCTigyKS50b1JlZChyZWQpLnJlZEludm0oKTtcbiAgdmFyIG50aW52ID0gdGludi5yZWROZWcoKTtcblxuICB2YXIgcyA9IG5ldyBCTigzKS50b1JlZChyZWQpLnJlZE5lZygpLnJlZFNxcnQoKS5yZWRNdWwodGludik7XG5cbiAgdmFyIGwxID0gbnRpbnYucmVkQWRkKHMpLmZyb21SZWQoKTtcbiAgdmFyIGwyID0gbnRpbnYucmVkU3ViKHMpLmZyb21SZWQoKTtcbiAgcmV0dXJuIFsgbDEsIGwyIF07XG59O1xuXG5TaG9ydEN1cnZlLnByb3RvdHlwZS5fZ2V0RW5kb0Jhc2lzID0gZnVuY3Rpb24gX2dldEVuZG9CYXNpcyhsYW1iZGEpIHtcbiAgLy8gYXByeFNxcnQgPj0gc3FydCh0aGlzLm4pXG4gIHZhciBhcHJ4U3FydCA9IHRoaXMubi51c2hybihNYXRoLmZsb29yKHRoaXMubi5iaXRMZW5ndGgoKSAvIDIpKTtcblxuICAvLyAzLjc0XG4gIC8vIFJ1biBFR0NELCB1bnRpbCByKEwgKyAxKSA8IGFwcnhTcXJ0XG4gIHZhciB1ID0gbGFtYmRhO1xuICB2YXIgdiA9IHRoaXMubi5jbG9uZSgpO1xuICB2YXIgeDEgPSBuZXcgQk4oMSk7XG4gIHZhciB5MSA9IG5ldyBCTigwKTtcbiAgdmFyIHgyID0gbmV3IEJOKDApO1xuICB2YXIgeTIgPSBuZXcgQk4oMSk7XG5cbiAgLy8gTk9URTogYWxsIHZlY3RvcnMgYXJlIHJvb3RzIG9mOiBhICsgYiAqIGxhbWJkYSA9IDAgKG1vZCBuKVxuICB2YXIgYTA7XG4gIHZhciBiMDtcbiAgLy8gRmlyc3QgdmVjdG9yXG4gIHZhciBhMTtcbiAgdmFyIGIxO1xuICAvLyBTZWNvbmQgdmVjdG9yXG4gIHZhciBhMjtcbiAgdmFyIGIyO1xuXG4gIHZhciBwcmV2UjtcbiAgdmFyIGkgPSAwO1xuICB2YXIgcjtcbiAgdmFyIHg7XG4gIHdoaWxlICh1LmNtcG4oMCkgIT09IDApIHtcbiAgICB2YXIgcSA9IHYuZGl2KHUpO1xuICAgIHIgPSB2LnN1YihxLm11bCh1KSk7XG4gICAgeCA9IHgyLnN1YihxLm11bCh4MSkpO1xuICAgIHZhciB5ID0geTIuc3ViKHEubXVsKHkxKSk7XG5cbiAgICBpZiAoIWExICYmIHIuY21wKGFwcnhTcXJ0KSA8IDApIHtcbiAgICAgIGEwID0gcHJldlIubmVnKCk7XG4gICAgICBiMCA9IHgxO1xuICAgICAgYTEgPSByLm5lZygpO1xuICAgICAgYjEgPSB4O1xuICAgIH0gZWxzZSBpZiAoYTEgJiYgKytpID09PSAyKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgcHJldlIgPSByO1xuXG4gICAgdiA9IHU7XG4gICAgdSA9IHI7XG4gICAgeDIgPSB4MTtcbiAgICB4MSA9IHg7XG4gICAgeTIgPSB5MTtcbiAgICB5MSA9IHk7XG4gIH1cbiAgYTIgPSByLm5lZygpO1xuICBiMiA9IHg7XG5cbiAgdmFyIGxlbjEgPSBhMS5zcXIoKS5hZGQoYjEuc3FyKCkpO1xuICB2YXIgbGVuMiA9IGEyLnNxcigpLmFkZChiMi5zcXIoKSk7XG4gIGlmIChsZW4yLmNtcChsZW4xKSA+PSAwKSB7XG4gICAgYTIgPSBhMDtcbiAgICBiMiA9IGIwO1xuICB9XG5cbiAgLy8gTm9ybWFsaXplIHNpZ25zXG4gIGlmIChhMS5uZWdhdGl2ZSkge1xuICAgIGExID0gYTEubmVnKCk7XG4gICAgYjEgPSBiMS5uZWcoKTtcbiAgfVxuICBpZiAoYTIubmVnYXRpdmUpIHtcbiAgICBhMiA9IGEyLm5lZygpO1xuICAgIGIyID0gYjIubmVnKCk7XG4gIH1cblxuICByZXR1cm4gW1xuICAgIHsgYTogYTEsIGI6IGIxIH0sXG4gICAgeyBhOiBhMiwgYjogYjIgfVxuICBdO1xufTtcblxuU2hvcnRDdXJ2ZS5wcm90b3R5cGUuX2VuZG9TcGxpdCA9IGZ1bmN0aW9uIF9lbmRvU3BsaXQoaykge1xuICB2YXIgYmFzaXMgPSB0aGlzLmVuZG8uYmFzaXM7XG4gIHZhciB2MSA9IGJhc2lzWzBdO1xuICB2YXIgdjIgPSBiYXNpc1sxXTtcblxuICB2YXIgYzEgPSB2Mi5iLm11bChrKS5kaXZSb3VuZCh0aGlzLm4pO1xuICB2YXIgYzIgPSB2MS5iLm5lZygpLm11bChrKS5kaXZSb3VuZCh0aGlzLm4pO1xuXG4gIHZhciBwMSA9IGMxLm11bCh2MS5hKTtcbiAgdmFyIHAyID0gYzIubXVsKHYyLmEpO1xuICB2YXIgcTEgPSBjMS5tdWwodjEuYik7XG4gIHZhciBxMiA9IGMyLm11bCh2Mi5iKTtcblxuICAvLyBDYWxjdWxhdGUgYW5zd2VyXG4gIHZhciBrMSA9IGsuc3ViKHAxKS5zdWIocDIpO1xuICB2YXIgazIgPSBxMS5hZGQocTIpLm5lZygpO1xuICByZXR1cm4geyBrMTogazEsIGsyOiBrMiB9O1xufTtcblxuU2hvcnRDdXJ2ZS5wcm90b3R5cGUucG9pbnRGcm9tWCA9IGZ1bmN0aW9uIHBvaW50RnJvbVgoeCwgb2RkKSB7XG4gIHggPSBuZXcgQk4oeCwgMTYpO1xuICBpZiAoIXgucmVkKVxuICAgIHggPSB4LnRvUmVkKHRoaXMucmVkKTtcblxuICB2YXIgeTIgPSB4LnJlZFNxcigpLnJlZE11bCh4KS5yZWRJQWRkKHgucmVkTXVsKHRoaXMuYSkpLnJlZElBZGQodGhpcy5iKTtcbiAgdmFyIHkgPSB5Mi5yZWRTcXJ0KCk7XG4gIGlmICh5LnJlZFNxcigpLnJlZFN1Yih5MikuY21wKHRoaXMuemVybykgIT09IDApXG4gICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIHBvaW50Jyk7XG5cbiAgLy8gWFhYIElzIHRoZXJlIGFueSB3YXkgdG8gdGVsbCBpZiB0aGUgbnVtYmVyIGlzIG9kZCB3aXRob3V0IGNvbnZlcnRpbmcgaXRcbiAgLy8gdG8gbm9uLXJlZCBmb3JtP1xuICB2YXIgaXNPZGQgPSB5LmZyb21SZWQoKS5pc09kZCgpO1xuICBpZiAob2RkICYmICFpc09kZCB8fCAhb2RkICYmIGlzT2RkKVxuICAgIHkgPSB5LnJlZE5lZygpO1xuXG4gIHJldHVybiB0aGlzLnBvaW50KHgsIHkpO1xufTtcblxuU2hvcnRDdXJ2ZS5wcm90b3R5cGUudmFsaWRhdGUgPSBmdW5jdGlvbiB2YWxpZGF0ZShwb2ludCkge1xuICBpZiAocG9pbnQuaW5mKVxuICAgIHJldHVybiB0cnVlO1xuXG4gIHZhciB4ID0gcG9pbnQueDtcbiAgdmFyIHkgPSBwb2ludC55O1xuXG4gIHZhciBheCA9IHRoaXMuYS5yZWRNdWwoeCk7XG4gIHZhciByaHMgPSB4LnJlZFNxcigpLnJlZE11bCh4KS5yZWRJQWRkKGF4KS5yZWRJQWRkKHRoaXMuYik7XG4gIHJldHVybiB5LnJlZFNxcigpLnJlZElTdWIocmhzKS5jbXBuKDApID09PSAwO1xufTtcblxuU2hvcnRDdXJ2ZS5wcm90b3R5cGUuX2VuZG9XbmFmTXVsQWRkID1cbiAgICBmdW5jdGlvbiBfZW5kb1duYWZNdWxBZGQocG9pbnRzLCBjb2VmZnMsIGphY29iaWFuUmVzdWx0KSB7XG4gIHZhciBucG9pbnRzID0gdGhpcy5fZW5kb1duYWZUMTtcbiAgdmFyIG5jb2VmZnMgPSB0aGlzLl9lbmRvV25hZlQyO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHBvaW50cy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBzcGxpdCA9IHRoaXMuX2VuZG9TcGxpdChjb2VmZnNbaV0pO1xuICAgIHZhciBwID0gcG9pbnRzW2ldO1xuICAgIHZhciBiZXRhID0gcC5fZ2V0QmV0YSgpO1xuXG4gICAgaWYgKHNwbGl0LmsxLm5lZ2F0aXZlKSB7XG4gICAgICBzcGxpdC5rMS5pbmVnKCk7XG4gICAgICBwID0gcC5uZWcodHJ1ZSk7XG4gICAgfVxuICAgIGlmIChzcGxpdC5rMi5uZWdhdGl2ZSkge1xuICAgICAgc3BsaXQuazIuaW5lZygpO1xuICAgICAgYmV0YSA9IGJldGEubmVnKHRydWUpO1xuICAgIH1cblxuICAgIG5wb2ludHNbaSAqIDJdID0gcDtcbiAgICBucG9pbnRzW2kgKiAyICsgMV0gPSBiZXRhO1xuICAgIG5jb2VmZnNbaSAqIDJdID0gc3BsaXQuazE7XG4gICAgbmNvZWZmc1tpICogMiArIDFdID0gc3BsaXQuazI7XG4gIH1cbiAgdmFyIHJlcyA9IHRoaXMuX3duYWZNdWxBZGQoMSwgbnBvaW50cywgbmNvZWZmcywgaSAqIDIsIGphY29iaWFuUmVzdWx0KTtcblxuICAvLyBDbGVhbi11cCByZWZlcmVuY2VzIHRvIHBvaW50cyBhbmQgY29lZmZpY2llbnRzXG4gIGZvciAodmFyIGogPSAwOyBqIDwgaSAqIDI7IGorKykge1xuICAgIG5wb2ludHNbal0gPSBudWxsO1xuICAgIG5jb2VmZnNbal0gPSBudWxsO1xuICB9XG4gIHJldHVybiByZXM7XG59O1xuXG5mdW5jdGlvbiBQb2ludChjdXJ2ZSwgeCwgeSwgaXNSZWQpIHtcbiAgQmFzZS5CYXNlUG9pbnQuY2FsbCh0aGlzLCBjdXJ2ZSwgJ2FmZmluZScpO1xuICBpZiAoeCA9PT0gbnVsbCAmJiB5ID09PSBudWxsKSB7XG4gICAgdGhpcy54ID0gbnVsbDtcbiAgICB0aGlzLnkgPSBudWxsO1xuICAgIHRoaXMuaW5mID0gdHJ1ZTtcbiAgfSBlbHNlIHtcbiAgICB0aGlzLnggPSBuZXcgQk4oeCwgMTYpO1xuICAgIHRoaXMueSA9IG5ldyBCTih5LCAxNik7XG4gICAgLy8gRm9yY2UgcmVkZ29tZXJ5IHJlcHJlc2VudGF0aW9uIHdoZW4gbG9hZGluZyBmcm9tIEpTT05cbiAgICBpZiAoaXNSZWQpIHtcbiAgICAgIHRoaXMueC5mb3JjZVJlZCh0aGlzLmN1cnZlLnJlZCk7XG4gICAgICB0aGlzLnkuZm9yY2VSZWQodGhpcy5jdXJ2ZS5yZWQpO1xuICAgIH1cbiAgICBpZiAoIXRoaXMueC5yZWQpXG4gICAgICB0aGlzLnggPSB0aGlzLngudG9SZWQodGhpcy5jdXJ2ZS5yZWQpO1xuICAgIGlmICghdGhpcy55LnJlZClcbiAgICAgIHRoaXMueSA9IHRoaXMueS50b1JlZCh0aGlzLmN1cnZlLnJlZCk7XG4gICAgdGhpcy5pbmYgPSBmYWxzZTtcbiAgfVxufVxuaW5oZXJpdHMoUG9pbnQsIEJhc2UuQmFzZVBvaW50KTtcblxuU2hvcnRDdXJ2ZS5wcm90b3R5cGUucG9pbnQgPSBmdW5jdGlvbiBwb2ludCh4LCB5LCBpc1JlZCkge1xuICByZXR1cm4gbmV3IFBvaW50KHRoaXMsIHgsIHksIGlzUmVkKTtcbn07XG5cblNob3J0Q3VydmUucHJvdG90eXBlLnBvaW50RnJvbUpTT04gPSBmdW5jdGlvbiBwb2ludEZyb21KU09OKG9iaiwgcmVkKSB7XG4gIHJldHVybiBQb2ludC5mcm9tSlNPTih0aGlzLCBvYmosIHJlZCk7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuX2dldEJldGEgPSBmdW5jdGlvbiBfZ2V0QmV0YSgpIHtcbiAgaWYgKCF0aGlzLmN1cnZlLmVuZG8pXG4gICAgcmV0dXJuO1xuXG4gIHZhciBwcmUgPSB0aGlzLnByZWNvbXB1dGVkO1xuICBpZiAocHJlICYmIHByZS5iZXRhKVxuICAgIHJldHVybiBwcmUuYmV0YTtcblxuICB2YXIgYmV0YSA9IHRoaXMuY3VydmUucG9pbnQodGhpcy54LnJlZE11bCh0aGlzLmN1cnZlLmVuZG8uYmV0YSksIHRoaXMueSk7XG4gIGlmIChwcmUpIHtcbiAgICB2YXIgY3VydmUgPSB0aGlzLmN1cnZlO1xuICAgIHZhciBlbmRvTXVsID0gZnVuY3Rpb24ocCkge1xuICAgICAgcmV0dXJuIGN1cnZlLnBvaW50KHAueC5yZWRNdWwoY3VydmUuZW5kby5iZXRhKSwgcC55KTtcbiAgICB9O1xuICAgIHByZS5iZXRhID0gYmV0YTtcbiAgICBiZXRhLnByZWNvbXB1dGVkID0ge1xuICAgICAgYmV0YTogbnVsbCxcbiAgICAgIG5hZjogcHJlLm5hZiAmJiB7XG4gICAgICAgIHduZDogcHJlLm5hZi53bmQsXG4gICAgICAgIHBvaW50czogcHJlLm5hZi5wb2ludHMubWFwKGVuZG9NdWwpXG4gICAgICB9LFxuICAgICAgZG91YmxlczogcHJlLmRvdWJsZXMgJiYge1xuICAgICAgICBzdGVwOiBwcmUuZG91Ymxlcy5zdGVwLFxuICAgICAgICBwb2ludHM6IHByZS5kb3VibGVzLnBvaW50cy5tYXAoZW5kb011bClcbiAgICAgIH1cbiAgICB9O1xuICB9XG4gIHJldHVybiBiZXRhO1xufTtcblxuUG9pbnQucHJvdG90eXBlLnRvSlNPTiA9IGZ1bmN0aW9uIHRvSlNPTigpIHtcbiAgaWYgKCF0aGlzLnByZWNvbXB1dGVkKVxuICAgIHJldHVybiBbIHRoaXMueCwgdGhpcy55IF07XG5cbiAgcmV0dXJuIFsgdGhpcy54LCB0aGlzLnksIHRoaXMucHJlY29tcHV0ZWQgJiYge1xuICAgIGRvdWJsZXM6IHRoaXMucHJlY29tcHV0ZWQuZG91YmxlcyAmJiB7XG4gICAgICBzdGVwOiB0aGlzLnByZWNvbXB1dGVkLmRvdWJsZXMuc3RlcCxcbiAgICAgIHBvaW50czogdGhpcy5wcmVjb21wdXRlZC5kb3VibGVzLnBvaW50cy5zbGljZSgxKVxuICAgIH0sXG4gICAgbmFmOiB0aGlzLnByZWNvbXB1dGVkLm5hZiAmJiB7XG4gICAgICB3bmQ6IHRoaXMucHJlY29tcHV0ZWQubmFmLnduZCxcbiAgICAgIHBvaW50czogdGhpcy5wcmVjb21wdXRlZC5uYWYucG9pbnRzLnNsaWNlKDEpXG4gICAgfVxuICB9IF07XG59O1xuXG5Qb2ludC5mcm9tSlNPTiA9IGZ1bmN0aW9uIGZyb21KU09OKGN1cnZlLCBvYmosIHJlZCkge1xuICBpZiAodHlwZW9mIG9iaiA9PT0gJ3N0cmluZycpXG4gICAgb2JqID0gSlNPTi5wYXJzZShvYmopO1xuICB2YXIgcmVzID0gY3VydmUucG9pbnQob2JqWzBdLCBvYmpbMV0sIHJlZCk7XG4gIGlmICghb2JqWzJdKVxuICAgIHJldHVybiByZXM7XG5cbiAgZnVuY3Rpb24gb2JqMnBvaW50KG9iaikge1xuICAgIHJldHVybiBjdXJ2ZS5wb2ludChvYmpbMF0sIG9ialsxXSwgcmVkKTtcbiAgfVxuXG4gIHZhciBwcmUgPSBvYmpbMl07XG4gIHJlcy5wcmVjb21wdXRlZCA9IHtcbiAgICBiZXRhOiBudWxsLFxuICAgIGRvdWJsZXM6IHByZS5kb3VibGVzICYmIHtcbiAgICAgIHN0ZXA6IHByZS5kb3VibGVzLnN0ZXAsXG4gICAgICBwb2ludHM6IFsgcmVzIF0uY29uY2F0KHByZS5kb3VibGVzLnBvaW50cy5tYXAob2JqMnBvaW50KSlcbiAgICB9LFxuICAgIG5hZjogcHJlLm5hZiAmJiB7XG4gICAgICB3bmQ6IHByZS5uYWYud25kLFxuICAgICAgcG9pbnRzOiBbIHJlcyBdLmNvbmNhdChwcmUubmFmLnBvaW50cy5tYXAob2JqMnBvaW50KSlcbiAgICB9XG4gIH07XG4gIHJldHVybiByZXM7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuaW5zcGVjdCA9IGZ1bmN0aW9uIGluc3BlY3QoKSB7XG4gIGlmICh0aGlzLmlzSW5maW5pdHkoKSlcbiAgICByZXR1cm4gJzxFQyBQb2ludCBJbmZpbml0eT4nO1xuICByZXR1cm4gJzxFQyBQb2ludCB4OiAnICsgdGhpcy54LmZyb21SZWQoKS50b1N0cmluZygxNiwgMikgK1xuICAgICAgJyB5OiAnICsgdGhpcy55LmZyb21SZWQoKS50b1N0cmluZygxNiwgMikgKyAnPic7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuaXNJbmZpbml0eSA9IGZ1bmN0aW9uIGlzSW5maW5pdHkoKSB7XG4gIHJldHVybiB0aGlzLmluZjtcbn07XG5cblBvaW50LnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiBhZGQocCkge1xuICAvLyBPICsgUCA9IFBcbiAgaWYgKHRoaXMuaW5mKVxuICAgIHJldHVybiBwO1xuXG4gIC8vIFAgKyBPID0gUFxuICBpZiAocC5pbmYpXG4gICAgcmV0dXJuIHRoaXM7XG5cbiAgLy8gUCArIFAgPSAyUFxuICBpZiAodGhpcy5lcShwKSlcbiAgICByZXR1cm4gdGhpcy5kYmwoKTtcblxuICAvLyBQICsgKC1QKSA9IE9cbiAgaWYgKHRoaXMubmVnKCkuZXEocCkpXG4gICAgcmV0dXJuIHRoaXMuY3VydmUucG9pbnQobnVsbCwgbnVsbCk7XG5cbiAgLy8gUCArIFEgPSBPXG4gIGlmICh0aGlzLnguY21wKHAueCkgPT09IDApXG4gICAgcmV0dXJuIHRoaXMuY3VydmUucG9pbnQobnVsbCwgbnVsbCk7XG5cbiAgdmFyIGMgPSB0aGlzLnkucmVkU3ViKHAueSk7XG4gIGlmIChjLmNtcG4oMCkgIT09IDApXG4gICAgYyA9IGMucmVkTXVsKHRoaXMueC5yZWRTdWIocC54KS5yZWRJbnZtKCkpO1xuICB2YXIgbnggPSBjLnJlZFNxcigpLnJlZElTdWIodGhpcy54KS5yZWRJU3ViKHAueCk7XG4gIHZhciBueSA9IGMucmVkTXVsKHRoaXMueC5yZWRTdWIobngpKS5yZWRJU3ViKHRoaXMueSk7XG4gIHJldHVybiB0aGlzLmN1cnZlLnBvaW50KG54LCBueSk7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuZGJsID0gZnVuY3Rpb24gZGJsKCkge1xuICBpZiAodGhpcy5pbmYpXG4gICAgcmV0dXJuIHRoaXM7XG5cbiAgLy8gMlAgPSBPXG4gIHZhciB5czEgPSB0aGlzLnkucmVkQWRkKHRoaXMueSk7XG4gIGlmICh5czEuY21wbigwKSA9PT0gMClcbiAgICByZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludChudWxsLCBudWxsKTtcblxuICB2YXIgYSA9IHRoaXMuY3VydmUuYTtcblxuICB2YXIgeDIgPSB0aGlzLngucmVkU3FyKCk7XG4gIHZhciBkeWludiA9IHlzMS5yZWRJbnZtKCk7XG4gIHZhciBjID0geDIucmVkQWRkKHgyKS5yZWRJQWRkKHgyKS5yZWRJQWRkKGEpLnJlZE11bChkeWludik7XG5cbiAgdmFyIG54ID0gYy5yZWRTcXIoKS5yZWRJU3ViKHRoaXMueC5yZWRBZGQodGhpcy54KSk7XG4gIHZhciBueSA9IGMucmVkTXVsKHRoaXMueC5yZWRTdWIobngpKS5yZWRJU3ViKHRoaXMueSk7XG4gIHJldHVybiB0aGlzLmN1cnZlLnBvaW50KG54LCBueSk7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuZ2V0WCA9IGZ1bmN0aW9uIGdldFgoKSB7XG4gIHJldHVybiB0aGlzLnguZnJvbVJlZCgpO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmdldFkgPSBmdW5jdGlvbiBnZXRZKCkge1xuICByZXR1cm4gdGhpcy55LmZyb21SZWQoKTtcbn07XG5cblBvaW50LnByb3RvdHlwZS5tdWwgPSBmdW5jdGlvbiBtdWwoaykge1xuICBrID0gbmV3IEJOKGssIDE2KTtcblxuICBpZiAodGhpcy5faGFzRG91YmxlcyhrKSlcbiAgICByZXR1cm4gdGhpcy5jdXJ2ZS5fZml4ZWROYWZNdWwodGhpcywgayk7XG4gIGVsc2UgaWYgKHRoaXMuY3VydmUuZW5kbylcbiAgICByZXR1cm4gdGhpcy5jdXJ2ZS5fZW5kb1duYWZNdWxBZGQoWyB0aGlzIF0sIFsgayBdKTtcbiAgZWxzZVxuICAgIHJldHVybiB0aGlzLmN1cnZlLl93bmFmTXVsKHRoaXMsIGspO1xufTtcblxuUG9pbnQucHJvdG90eXBlLm11bEFkZCA9IGZ1bmN0aW9uIG11bEFkZChrMSwgcDIsIGsyKSB7XG4gIHZhciBwb2ludHMgPSBbIHRoaXMsIHAyIF07XG4gIHZhciBjb2VmZnMgPSBbIGsxLCBrMiBdO1xuICBpZiAodGhpcy5jdXJ2ZS5lbmRvKVxuICAgIHJldHVybiB0aGlzLmN1cnZlLl9lbmRvV25hZk11bEFkZChwb2ludHMsIGNvZWZmcyk7XG4gIGVsc2VcbiAgICByZXR1cm4gdGhpcy5jdXJ2ZS5fd25hZk11bEFkZCgxLCBwb2ludHMsIGNvZWZmcywgMik7XG59O1xuXG5Qb2ludC5wcm90b3R5cGUuam11bEFkZCA9IGZ1bmN0aW9uIGptdWxBZGQoazEsIHAyLCBrMikge1xuICB2YXIgcG9pbnRzID0gWyB0aGlzLCBwMiBdO1xuICB2YXIgY29lZmZzID0gWyBrMSwgazIgXTtcbiAgaWYgKHRoaXMuY3VydmUuZW5kbylcbiAgICByZXR1cm4gdGhpcy5jdXJ2ZS5fZW5kb1duYWZNdWxBZGQocG9pbnRzLCBjb2VmZnMsIHRydWUpO1xuICBlbHNlXG4gICAgcmV0dXJuIHRoaXMuY3VydmUuX3duYWZNdWxBZGQoMSwgcG9pbnRzLCBjb2VmZnMsIDIsIHRydWUpO1xufTtcblxuUG9pbnQucHJvdG90eXBlLmVxID0gZnVuY3Rpb24gZXEocCkge1xuICByZXR1cm4gdGhpcyA9PT0gcCB8fFxuICAgICAgICAgdGhpcy5pbmYgPT09IHAuaW5mICYmXG4gICAgICAgICAgICAgKHRoaXMuaW5mIHx8IHRoaXMueC5jbXAocC54KSA9PT0gMCAmJiB0aGlzLnkuY21wKHAueSkgPT09IDApO1xufTtcblxuUG9pbnQucHJvdG90eXBlLm5lZyA9IGZ1bmN0aW9uIG5lZyhfcHJlY29tcHV0ZSkge1xuICBpZiAodGhpcy5pbmYpXG4gICAgcmV0dXJuIHRoaXM7XG5cbiAgdmFyIHJlcyA9IHRoaXMuY3VydmUucG9pbnQodGhpcy54LCB0aGlzLnkucmVkTmVnKCkpO1xuICBpZiAoX3ByZWNvbXB1dGUgJiYgdGhpcy5wcmVjb21wdXRlZCkge1xuICAgIHZhciBwcmUgPSB0aGlzLnByZWNvbXB1dGVkO1xuICAgIHZhciBuZWdhdGUgPSBmdW5jdGlvbihwKSB7XG4gICAgICByZXR1cm4gcC5uZWcoKTtcbiAgICB9O1xuICAgIHJlcy5wcmVjb21wdXRlZCA9IHtcbiAgICAgIG5hZjogcHJlLm5hZiAmJiB7XG4gICAgICAgIHduZDogcHJlLm5hZi53bmQsXG4gICAgICAgIHBvaW50czogcHJlLm5hZi5wb2ludHMubWFwKG5lZ2F0ZSlcbiAgICAgIH0sXG4gICAgICBkb3VibGVzOiBwcmUuZG91YmxlcyAmJiB7XG4gICAgICAgIHN0ZXA6IHByZS5kb3VibGVzLnN0ZXAsXG4gICAgICAgIHBvaW50czogcHJlLmRvdWJsZXMucG9pbnRzLm1hcChuZWdhdGUpXG4gICAgICB9XG4gICAgfTtcbiAgfVxuICByZXR1cm4gcmVzO1xufTtcblxuUG9pbnQucHJvdG90eXBlLnRvSiA9IGZ1bmN0aW9uIHRvSigpIHtcbiAgaWYgKHRoaXMuaW5mKVxuICAgIHJldHVybiB0aGlzLmN1cnZlLmpwb2ludChudWxsLCBudWxsLCBudWxsKTtcblxuICB2YXIgcmVzID0gdGhpcy5jdXJ2ZS5qcG9pbnQodGhpcy54LCB0aGlzLnksIHRoaXMuY3VydmUub25lKTtcbiAgcmV0dXJuIHJlcztcbn07XG5cbmZ1bmN0aW9uIEpQb2ludChjdXJ2ZSwgeCwgeSwgeikge1xuICBCYXNlLkJhc2VQb2ludC5jYWxsKHRoaXMsIGN1cnZlLCAnamFjb2JpYW4nKTtcbiAgaWYgKHggPT09IG51bGwgJiYgeSA9PT0gbnVsbCAmJiB6ID09PSBudWxsKSB7XG4gICAgdGhpcy54ID0gdGhpcy5jdXJ2ZS5vbmU7XG4gICAgdGhpcy55ID0gdGhpcy5jdXJ2ZS5vbmU7XG4gICAgdGhpcy56ID0gbmV3IEJOKDApO1xuICB9IGVsc2Uge1xuICAgIHRoaXMueCA9IG5ldyBCTih4LCAxNik7XG4gICAgdGhpcy55ID0gbmV3IEJOKHksIDE2KTtcbiAgICB0aGlzLnogPSBuZXcgQk4oeiwgMTYpO1xuICB9XG4gIGlmICghdGhpcy54LnJlZClcbiAgICB0aGlzLnggPSB0aGlzLngudG9SZWQodGhpcy5jdXJ2ZS5yZWQpO1xuICBpZiAoIXRoaXMueS5yZWQpXG4gICAgdGhpcy55ID0gdGhpcy55LnRvUmVkKHRoaXMuY3VydmUucmVkKTtcbiAgaWYgKCF0aGlzLnoucmVkKVxuICAgIHRoaXMueiA9IHRoaXMuei50b1JlZCh0aGlzLmN1cnZlLnJlZCk7XG5cbiAgdGhpcy56T25lID0gdGhpcy56ID09PSB0aGlzLmN1cnZlLm9uZTtcbn1cbmluaGVyaXRzKEpQb2ludCwgQmFzZS5CYXNlUG9pbnQpO1xuXG5TaG9ydEN1cnZlLnByb3RvdHlwZS5qcG9pbnQgPSBmdW5jdGlvbiBqcG9pbnQoeCwgeSwgeikge1xuICByZXR1cm4gbmV3IEpQb2ludCh0aGlzLCB4LCB5LCB6KTtcbn07XG5cbkpQb2ludC5wcm90b3R5cGUudG9QID0gZnVuY3Rpb24gdG9QKCkge1xuICBpZiAodGhpcy5pc0luZmluaXR5KCkpXG4gICAgcmV0dXJuIHRoaXMuY3VydmUucG9pbnQobnVsbCwgbnVsbCk7XG5cbiAgdmFyIHppbnYgPSB0aGlzLnoucmVkSW52bSgpO1xuICB2YXIgemludjIgPSB6aW52LnJlZFNxcigpO1xuICB2YXIgYXggPSB0aGlzLngucmVkTXVsKHppbnYyKTtcbiAgdmFyIGF5ID0gdGhpcy55LnJlZE11bCh6aW52MikucmVkTXVsKHppbnYpO1xuXG4gIHJldHVybiB0aGlzLmN1cnZlLnBvaW50KGF4LCBheSk7XG59O1xuXG5KUG9pbnQucHJvdG90eXBlLm5lZyA9IGZ1bmN0aW9uIG5lZygpIHtcbiAgcmV0dXJuIHRoaXMuY3VydmUuanBvaW50KHRoaXMueCwgdGhpcy55LnJlZE5lZygpLCB0aGlzLnopO1xufTtcblxuSlBvaW50LnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiBhZGQocCkge1xuICAvLyBPICsgUCA9IFBcbiAgaWYgKHRoaXMuaXNJbmZpbml0eSgpKVxuICAgIHJldHVybiBwO1xuXG4gIC8vIFAgKyBPID0gUFxuICBpZiAocC5pc0luZmluaXR5KCkpXG4gICAgcmV0dXJuIHRoaXM7XG5cbiAgLy8gMTJNICsgNFMgKyA3QVxuICB2YXIgcHoyID0gcC56LnJlZFNxcigpO1xuICB2YXIgejIgPSB0aGlzLnoucmVkU3FyKCk7XG4gIHZhciB1MSA9IHRoaXMueC5yZWRNdWwocHoyKTtcbiAgdmFyIHUyID0gcC54LnJlZE11bCh6Mik7XG4gIHZhciBzMSA9IHRoaXMueS5yZWRNdWwocHoyLnJlZE11bChwLnopKTtcbiAgdmFyIHMyID0gcC55LnJlZE11bCh6Mi5yZWRNdWwodGhpcy56KSk7XG5cbiAgdmFyIGggPSB1MS5yZWRTdWIodTIpO1xuICB2YXIgciA9IHMxLnJlZFN1YihzMik7XG4gIGlmIChoLmNtcG4oMCkgPT09IDApIHtcbiAgICBpZiAoci5jbXBuKDApICE9PSAwKVxuICAgICAgcmV0dXJuIHRoaXMuY3VydmUuanBvaW50KG51bGwsIG51bGwsIG51bGwpO1xuICAgIGVsc2VcbiAgICAgIHJldHVybiB0aGlzLmRibCgpO1xuICB9XG5cbiAgdmFyIGgyID0gaC5yZWRTcXIoKTtcbiAgdmFyIGgzID0gaDIucmVkTXVsKGgpO1xuICB2YXIgdiA9IHUxLnJlZE11bChoMik7XG5cbiAgdmFyIG54ID0gci5yZWRTcXIoKS5yZWRJQWRkKGgzKS5yZWRJU3ViKHYpLnJlZElTdWIodik7XG4gIHZhciBueSA9IHIucmVkTXVsKHYucmVkSVN1YihueCkpLnJlZElTdWIoczEucmVkTXVsKGgzKSk7XG4gIHZhciBueiA9IHRoaXMuei5yZWRNdWwocC56KS5yZWRNdWwoaCk7XG5cbiAgcmV0dXJuIHRoaXMuY3VydmUuanBvaW50KG54LCBueSwgbnopO1xufTtcblxuSlBvaW50LnByb3RvdHlwZS5taXhlZEFkZCA9IGZ1bmN0aW9uIG1peGVkQWRkKHApIHtcbiAgLy8gTyArIFAgPSBQXG4gIGlmICh0aGlzLmlzSW5maW5pdHkoKSlcbiAgICByZXR1cm4gcC50b0ooKTtcblxuICAvLyBQICsgTyA9IFBcbiAgaWYgKHAuaXNJbmZpbml0eSgpKVxuICAgIHJldHVybiB0aGlzO1xuXG4gIC8vIDhNICsgM1MgKyA3QVxuICB2YXIgejIgPSB0aGlzLnoucmVkU3FyKCk7XG4gIHZhciB1MSA9IHRoaXMueDtcbiAgdmFyIHUyID0gcC54LnJlZE11bCh6Mik7XG4gIHZhciBzMSA9IHRoaXMueTtcbiAgdmFyIHMyID0gcC55LnJlZE11bCh6MikucmVkTXVsKHRoaXMueik7XG5cbiAgdmFyIGggPSB1MS5yZWRTdWIodTIpO1xuICB2YXIgciA9IHMxLnJlZFN1YihzMik7XG4gIGlmIChoLmNtcG4oMCkgPT09IDApIHtcbiAgICBpZiAoci5jbXBuKDApICE9PSAwKVxuICAgICAgcmV0dXJuIHRoaXMuY3VydmUuanBvaW50KG51bGwsIG51bGwsIG51bGwpO1xuICAgIGVsc2VcbiAgICAgIHJldHVybiB0aGlzLmRibCgpO1xuICB9XG5cbiAgdmFyIGgyID0gaC5yZWRTcXIoKTtcbiAgdmFyIGgzID0gaDIucmVkTXVsKGgpO1xuICB2YXIgdiA9IHUxLnJlZE11bChoMik7XG5cbiAgdmFyIG54ID0gci5yZWRTcXIoKS5yZWRJQWRkKGgzKS5yZWRJU3ViKHYpLnJlZElTdWIodik7XG4gIHZhciBueSA9IHIucmVkTXVsKHYucmVkSVN1YihueCkpLnJlZElTdWIoczEucmVkTXVsKGgzKSk7XG4gIHZhciBueiA9IHRoaXMuei5yZWRNdWwoaCk7XG5cbiAgcmV0dXJuIHRoaXMuY3VydmUuanBvaW50KG54LCBueSwgbnopO1xufTtcblxuSlBvaW50LnByb3RvdHlwZS5kYmxwID0gZnVuY3Rpb24gZGJscChwb3cpIHtcbiAgaWYgKHBvdyA9PT0gMClcbiAgICByZXR1cm4gdGhpcztcbiAgaWYgKHRoaXMuaXNJbmZpbml0eSgpKVxuICAgIHJldHVybiB0aGlzO1xuICBpZiAoIXBvdylcbiAgICByZXR1cm4gdGhpcy5kYmwoKTtcblxuICBpZiAodGhpcy5jdXJ2ZS56ZXJvQSB8fCB0aGlzLmN1cnZlLnRocmVlQSkge1xuICAgIHZhciByID0gdGhpcztcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBvdzsgaSsrKVxuICAgICAgciA9IHIuZGJsKCk7XG4gICAgcmV0dXJuIHI7XG4gIH1cblxuICAvLyAxTSArIDJTICsgMUEgKyBOICogKDRTICsgNU0gKyA4QSlcbiAgLy8gTiA9IDEgPT4gNk0gKyA2UyArIDlBXG4gIHZhciBhID0gdGhpcy5jdXJ2ZS5hO1xuICB2YXIgdGludiA9IHRoaXMuY3VydmUudGludjtcblxuICB2YXIganggPSB0aGlzLng7XG4gIHZhciBqeSA9IHRoaXMueTtcbiAgdmFyIGp6ID0gdGhpcy56O1xuICB2YXIgano0ID0ganoucmVkU3FyKCkucmVkU3FyKCk7XG5cbiAgLy8gUmV1c2UgcmVzdWx0c1xuICB2YXIganlkID0gankucmVkQWRkKGp5KTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBwb3c7IGkrKykge1xuICAgIHZhciBqeDIgPSBqeC5yZWRTcXIoKTtcbiAgICB2YXIganlkMiA9IGp5ZC5yZWRTcXIoKTtcbiAgICB2YXIganlkNCA9IGp5ZDIucmVkU3FyKCk7XG4gICAgdmFyIGMgPSBqeDIucmVkQWRkKGp4MikucmVkSUFkZChqeDIpLnJlZElBZGQoYS5yZWRNdWwoano0KSk7XG5cbiAgICB2YXIgdDEgPSBqeC5yZWRNdWwoanlkMik7XG4gICAgdmFyIG54ID0gYy5yZWRTcXIoKS5yZWRJU3ViKHQxLnJlZEFkZCh0MSkpO1xuICAgIHZhciB0MiA9IHQxLnJlZElTdWIobngpO1xuICAgIHZhciBkbnkgPSBjLnJlZE11bCh0Mik7XG4gICAgZG55ID0gZG55LnJlZElBZGQoZG55KS5yZWRJU3ViKGp5ZDQpO1xuICAgIHZhciBueiA9IGp5ZC5yZWRNdWwoanopO1xuICAgIGlmIChpICsgMSA8IHBvdylcbiAgICAgIGp6NCA9IGp6NC5yZWRNdWwoanlkNCk7XG5cbiAgICBqeCA9IG54O1xuICAgIGp6ID0gbno7XG4gICAganlkID0gZG55O1xuICB9XG5cbiAgcmV0dXJuIHRoaXMuY3VydmUuanBvaW50KGp4LCBqeWQucmVkTXVsKHRpbnYpLCBqeik7XG59O1xuXG5KUG9pbnQucHJvdG90eXBlLmRibCA9IGZ1bmN0aW9uIGRibCgpIHtcbiAgaWYgKHRoaXMuaXNJbmZpbml0eSgpKVxuICAgIHJldHVybiB0aGlzO1xuXG4gIGlmICh0aGlzLmN1cnZlLnplcm9BKVxuICAgIHJldHVybiB0aGlzLl96ZXJvRGJsKCk7XG4gIGVsc2UgaWYgKHRoaXMuY3VydmUudGhyZWVBKVxuICAgIHJldHVybiB0aGlzLl90aHJlZURibCgpO1xuICBlbHNlXG4gICAgcmV0dXJuIHRoaXMuX2RibCgpO1xufTtcblxuSlBvaW50LnByb3RvdHlwZS5femVyb0RibCA9IGZ1bmN0aW9uIF96ZXJvRGJsKCkge1xuICB2YXIgbng7XG4gIHZhciBueTtcbiAgdmFyIG56O1xuICAvLyBaID0gMVxuICBpZiAodGhpcy56T25lKSB7XG4gICAgLy8gaHlwZXJlbGxpcHRpYy5vcmcvRUZEL2cxcC9hdXRvLXNob3J0dy1qYWNvYmlhbi0wLmh0bWxcbiAgICAvLyAgICAgI2RvdWJsaW5nLW1kYmwtMjAwNy1ibFxuICAgIC8vIDFNICsgNVMgKyAxNEFcblxuICAgIC8vIFhYID0gWDFeMlxuICAgIHZhciB4eCA9IHRoaXMueC5yZWRTcXIoKTtcbiAgICAvLyBZWSA9IFkxXjJcbiAgICB2YXIgeXkgPSB0aGlzLnkucmVkU3FyKCk7XG4gICAgLy8gWVlZWSA9IFlZXjJcbiAgICB2YXIgeXl5eSA9IHl5LnJlZFNxcigpO1xuICAgIC8vIFMgPSAyICogKChYMSArIFlZKV4yIC0gWFggLSBZWVlZKVxuICAgIHZhciBzID0gdGhpcy54LnJlZEFkZCh5eSkucmVkU3FyKCkucmVkSVN1Yih4eCkucmVkSVN1Yih5eXl5KTtcbiAgICBzID0gcy5yZWRJQWRkKHMpO1xuICAgIC8vIE0gPSAzICogWFggKyBhOyBhID0gMFxuICAgIHZhciBtID0geHgucmVkQWRkKHh4KS5yZWRJQWRkKHh4KTtcbiAgICAvLyBUID0gTSBeIDIgLSAyKlNcbiAgICB2YXIgdCA9IG0ucmVkU3FyKCkucmVkSVN1YihzKS5yZWRJU3ViKHMpO1xuXG4gICAgLy8gOCAqIFlZWVlcbiAgICB2YXIgeXl5eTggPSB5eXl5LnJlZElBZGQoeXl5eSk7XG4gICAgeXl5eTggPSB5eXl5OC5yZWRJQWRkKHl5eXk4KTtcbiAgICB5eXl5OCA9IHl5eXk4LnJlZElBZGQoeXl5eTgpO1xuXG4gICAgLy8gWDMgPSBUXG4gICAgbnggPSB0O1xuICAgIC8vIFkzID0gTSAqIChTIC0gVCkgLSA4ICogWVlZWVxuICAgIG55ID0gbS5yZWRNdWwocy5yZWRJU3ViKHQpKS5yZWRJU3ViKHl5eXk4KTtcbiAgICAvLyBaMyA9IDIqWTFcbiAgICBueiA9IHRoaXMueS5yZWRBZGQodGhpcy55KTtcbiAgfSBlbHNlIHtcbiAgICAvLyBoeXBlcmVsbGlwdGljLm9yZy9FRkQvZzFwL2F1dG8tc2hvcnR3LWphY29iaWFuLTAuaHRtbFxuICAgIC8vICAgICAjZG91YmxpbmctZGJsLTIwMDktbFxuICAgIC8vIDJNICsgNVMgKyAxM0FcblxuICAgIC8vIEEgPSBYMV4yXG4gICAgdmFyIGEgPSB0aGlzLngucmVkU3FyKCk7XG4gICAgLy8gQiA9IFkxXjJcbiAgICB2YXIgYiA9IHRoaXMueS5yZWRTcXIoKTtcbiAgICAvLyBDID0gQl4yXG4gICAgdmFyIGMgPSBiLnJlZFNxcigpO1xuICAgIC8vIEQgPSAyICogKChYMSArIEIpXjIgLSBBIC0gQylcbiAgICB2YXIgZCA9IHRoaXMueC5yZWRBZGQoYikucmVkU3FyKCkucmVkSVN1YihhKS5yZWRJU3ViKGMpO1xuICAgIGQgPSBkLnJlZElBZGQoZCk7XG4gICAgLy8gRSA9IDMgKiBBXG4gICAgdmFyIGUgPSBhLnJlZEFkZChhKS5yZWRJQWRkKGEpO1xuICAgIC8vIEYgPSBFXjJcbiAgICB2YXIgZiA9IGUucmVkU3FyKCk7XG5cbiAgICAvLyA4ICogQ1xuICAgIHZhciBjOCA9IGMucmVkSUFkZChjKTtcbiAgICBjOCA9IGM4LnJlZElBZGQoYzgpO1xuICAgIGM4ID0gYzgucmVkSUFkZChjOCk7XG5cbiAgICAvLyBYMyA9IEYgLSAyICogRFxuICAgIG54ID0gZi5yZWRJU3ViKGQpLnJlZElTdWIoZCk7XG4gICAgLy8gWTMgPSBFICogKEQgLSBYMykgLSA4ICogQ1xuICAgIG55ID0gZS5yZWRNdWwoZC5yZWRJU3ViKG54KSkucmVkSVN1YihjOCk7XG4gICAgLy8gWjMgPSAyICogWTEgKiBaMVxuICAgIG56ID0gdGhpcy55LnJlZE11bCh0aGlzLnopO1xuICAgIG56ID0gbnoucmVkSUFkZChueik7XG4gIH1cblxuICByZXR1cm4gdGhpcy5jdXJ2ZS5qcG9pbnQobngsIG55LCBueik7XG59O1xuXG5KUG9pbnQucHJvdG90eXBlLl90aHJlZURibCA9IGZ1bmN0aW9uIF90aHJlZURibCgpIHtcbiAgdmFyIG54O1xuICB2YXIgbnk7XG4gIHZhciBuejtcbiAgLy8gWiA9IDFcbiAgaWYgKHRoaXMuek9uZSkge1xuICAgIC8vIGh5cGVyZWxsaXB0aWMub3JnL0VGRC9nMXAvYXV0by1zaG9ydHctamFjb2JpYW4tMy5odG1sXG4gICAgLy8gICAgICNkb3VibGluZy1tZGJsLTIwMDctYmxcbiAgICAvLyAxTSArIDVTICsgMTVBXG5cbiAgICAvLyBYWCA9IFgxXjJcbiAgICB2YXIgeHggPSB0aGlzLngucmVkU3FyKCk7XG4gICAgLy8gWVkgPSBZMV4yXG4gICAgdmFyIHl5ID0gdGhpcy55LnJlZFNxcigpO1xuICAgIC8vIFlZWVkgPSBZWV4yXG4gICAgdmFyIHl5eXkgPSB5eS5yZWRTcXIoKTtcbiAgICAvLyBTID0gMiAqICgoWDEgKyBZWSleMiAtIFhYIC0gWVlZWSlcbiAgICB2YXIgcyA9IHRoaXMueC5yZWRBZGQoeXkpLnJlZFNxcigpLnJlZElTdWIoeHgpLnJlZElTdWIoeXl5eSk7XG4gICAgcyA9IHMucmVkSUFkZChzKTtcbiAgICAvLyBNID0gMyAqIFhYICsgYVxuICAgIHZhciBtID0geHgucmVkQWRkKHh4KS5yZWRJQWRkKHh4KS5yZWRJQWRkKHRoaXMuY3VydmUuYSk7XG4gICAgLy8gVCA9IE1eMiAtIDIgKiBTXG4gICAgdmFyIHQgPSBtLnJlZFNxcigpLnJlZElTdWIocykucmVkSVN1YihzKTtcbiAgICAvLyBYMyA9IFRcbiAgICBueCA9IHQ7XG4gICAgLy8gWTMgPSBNICogKFMgLSBUKSAtIDggKiBZWVlZXG4gICAgdmFyIHl5eXk4ID0geXl5eS5yZWRJQWRkKHl5eXkpO1xuICAgIHl5eXk4ID0geXl5eTgucmVkSUFkZCh5eXl5OCk7XG4gICAgeXl5eTggPSB5eXl5OC5yZWRJQWRkKHl5eXk4KTtcbiAgICBueSA9IG0ucmVkTXVsKHMucmVkSVN1Yih0KSkucmVkSVN1Yih5eXl5OCk7XG4gICAgLy8gWjMgPSAyICogWTFcbiAgICBueiA9IHRoaXMueS5yZWRBZGQodGhpcy55KTtcbiAgfSBlbHNlIHtcbiAgICAvLyBoeXBlcmVsbGlwdGljLm9yZy9FRkQvZzFwL2F1dG8tc2hvcnR3LWphY29iaWFuLTMuaHRtbCNkb3VibGluZy1kYmwtMjAwMS1iXG4gICAgLy8gM00gKyA1U1xuXG4gICAgLy8gZGVsdGEgPSBaMV4yXG4gICAgdmFyIGRlbHRhID0gdGhpcy56LnJlZFNxcigpO1xuICAgIC8vIGdhbW1hID0gWTFeMlxuICAgIHZhciBnYW1tYSA9IHRoaXMueS5yZWRTcXIoKTtcbiAgICAvLyBiZXRhID0gWDEgKiBnYW1tYVxuICAgIHZhciBiZXRhID0gdGhpcy54LnJlZE11bChnYW1tYSk7XG4gICAgLy8gYWxwaGEgPSAzICogKFgxIC0gZGVsdGEpICogKFgxICsgZGVsdGEpXG4gICAgdmFyIGFscGhhID0gdGhpcy54LnJlZFN1YihkZWx0YSkucmVkTXVsKHRoaXMueC5yZWRBZGQoZGVsdGEpKTtcbiAgICBhbHBoYSA9IGFscGhhLnJlZEFkZChhbHBoYSkucmVkSUFkZChhbHBoYSk7XG4gICAgLy8gWDMgPSBhbHBoYV4yIC0gOCAqIGJldGFcbiAgICB2YXIgYmV0YTQgPSBiZXRhLnJlZElBZGQoYmV0YSk7XG4gICAgYmV0YTQgPSBiZXRhNC5yZWRJQWRkKGJldGE0KTtcbiAgICB2YXIgYmV0YTggPSBiZXRhNC5yZWRBZGQoYmV0YTQpO1xuICAgIG54ID0gYWxwaGEucmVkU3FyKCkucmVkSVN1YihiZXRhOCk7XG4gICAgLy8gWjMgPSAoWTEgKyBaMSleMiAtIGdhbW1hIC0gZGVsdGFcbiAgICBueiA9IHRoaXMueS5yZWRBZGQodGhpcy56KS5yZWRTcXIoKS5yZWRJU3ViKGdhbW1hKS5yZWRJU3ViKGRlbHRhKTtcbiAgICAvLyBZMyA9IGFscGhhICogKDQgKiBiZXRhIC0gWDMpIC0gOCAqIGdhbW1hXjJcbiAgICB2YXIgZ2dhbW1hOCA9IGdhbW1hLnJlZFNxcigpO1xuICAgIGdnYW1tYTggPSBnZ2FtbWE4LnJlZElBZGQoZ2dhbW1hOCk7XG4gICAgZ2dhbW1hOCA9IGdnYW1tYTgucmVkSUFkZChnZ2FtbWE4KTtcbiAgICBnZ2FtbWE4ID0gZ2dhbW1hOC5yZWRJQWRkKGdnYW1tYTgpO1xuICAgIG55ID0gYWxwaGEucmVkTXVsKGJldGE0LnJlZElTdWIobngpKS5yZWRJU3ViKGdnYW1tYTgpO1xuICB9XG5cbiAgcmV0dXJuIHRoaXMuY3VydmUuanBvaW50KG54LCBueSwgbnopO1xufTtcblxuSlBvaW50LnByb3RvdHlwZS5fZGJsID0gZnVuY3Rpb24gX2RibCgpIHtcbiAgdmFyIGEgPSB0aGlzLmN1cnZlLmE7XG5cbiAgLy8gNE0gKyA2UyArIDEwQVxuICB2YXIganggPSB0aGlzLng7XG4gIHZhciBqeSA9IHRoaXMueTtcbiAgdmFyIGp6ID0gdGhpcy56O1xuICB2YXIgano0ID0ganoucmVkU3FyKCkucmVkU3FyKCk7XG5cbiAgdmFyIGp4MiA9IGp4LnJlZFNxcigpO1xuICB2YXIgankyID0gankucmVkU3FyKCk7XG5cbiAgdmFyIGMgPSBqeDIucmVkQWRkKGp4MikucmVkSUFkZChqeDIpLnJlZElBZGQoYS5yZWRNdWwoano0KSk7XG5cbiAgdmFyIGp4ZDQgPSBqeC5yZWRBZGQoangpO1xuICBqeGQ0ID0ganhkNC5yZWRJQWRkKGp4ZDQpO1xuICB2YXIgdDEgPSBqeGQ0LnJlZE11bChqeTIpO1xuICB2YXIgbnggPSBjLnJlZFNxcigpLnJlZElTdWIodDEucmVkQWRkKHQxKSk7XG4gIHZhciB0MiA9IHQxLnJlZElTdWIobngpO1xuXG4gIHZhciBqeWQ4ID0gankyLnJlZFNxcigpO1xuICBqeWQ4ID0ganlkOC5yZWRJQWRkKGp5ZDgpO1xuICBqeWQ4ID0ganlkOC5yZWRJQWRkKGp5ZDgpO1xuICBqeWQ4ID0ganlkOC5yZWRJQWRkKGp5ZDgpO1xuICB2YXIgbnkgPSBjLnJlZE11bCh0MikucmVkSVN1YihqeWQ4KTtcbiAgdmFyIG56ID0gankucmVkQWRkKGp5KS5yZWRNdWwoanopO1xuXG4gIHJldHVybiB0aGlzLmN1cnZlLmpwb2ludChueCwgbnksIG56KTtcbn07XG5cbkpQb2ludC5wcm90b3R5cGUudHJwbCA9IGZ1bmN0aW9uIHRycGwoKSB7XG4gIGlmICghdGhpcy5jdXJ2ZS56ZXJvQSlcbiAgICByZXR1cm4gdGhpcy5kYmwoKS5hZGQodGhpcyk7XG5cbiAgLy8gaHlwZXJlbGxpcHRpYy5vcmcvRUZEL2cxcC9hdXRvLXNob3J0dy1qYWNvYmlhbi0wLmh0bWwjdHJpcGxpbmctdHBsLTIwMDctYmxcbiAgLy8gNU0gKyAxMFMgKyAuLi5cblxuICAvLyBYWCA9IFgxXjJcbiAgdmFyIHh4ID0gdGhpcy54LnJlZFNxcigpO1xuICAvLyBZWSA9IFkxXjJcbiAgdmFyIHl5ID0gdGhpcy55LnJlZFNxcigpO1xuICAvLyBaWiA9IFoxXjJcbiAgdmFyIHp6ID0gdGhpcy56LnJlZFNxcigpO1xuICAvLyBZWVlZID0gWVleMlxuICB2YXIgeXl5eSA9IHl5LnJlZFNxcigpO1xuICAvLyBNID0gMyAqIFhYICsgYSAqIFpaMjsgYSA9IDBcbiAgdmFyIG0gPSB4eC5yZWRBZGQoeHgpLnJlZElBZGQoeHgpO1xuICAvLyBNTSA9IE1eMlxuICB2YXIgbW0gPSBtLnJlZFNxcigpO1xuICAvLyBFID0gNiAqICgoWDEgKyBZWSleMiAtIFhYIC0gWVlZWSkgLSBNTVxuICB2YXIgZSA9IHRoaXMueC5yZWRBZGQoeXkpLnJlZFNxcigpLnJlZElTdWIoeHgpLnJlZElTdWIoeXl5eSk7XG4gIGUgPSBlLnJlZElBZGQoZSk7XG4gIGUgPSBlLnJlZEFkZChlKS5yZWRJQWRkKGUpO1xuICBlID0gZS5yZWRJU3ViKG1tKTtcbiAgLy8gRUUgPSBFXjJcbiAgdmFyIGVlID0gZS5yZWRTcXIoKTtcbiAgLy8gVCA9IDE2KllZWVlcbiAgdmFyIHQgPSB5eXl5LnJlZElBZGQoeXl5eSk7XG4gIHQgPSB0LnJlZElBZGQodCk7XG4gIHQgPSB0LnJlZElBZGQodCk7XG4gIHQgPSB0LnJlZElBZGQodCk7XG4gIC8vIFUgPSAoTSArIEUpXjIgLSBNTSAtIEVFIC0gVFxuICB2YXIgdSA9IG0ucmVkSUFkZChlKS5yZWRTcXIoKS5yZWRJU3ViKG1tKS5yZWRJU3ViKGVlKS5yZWRJU3ViKHQpO1xuICAvLyBYMyA9IDQgKiAoWDEgKiBFRSAtIDQgKiBZWSAqIFUpXG4gIHZhciB5eXU0ID0geXkucmVkTXVsKHUpO1xuICB5eXU0ID0geXl1NC5yZWRJQWRkKHl5dTQpO1xuICB5eXU0ID0geXl1NC5yZWRJQWRkKHl5dTQpO1xuICB2YXIgbnggPSB0aGlzLngucmVkTXVsKGVlKS5yZWRJU3ViKHl5dTQpO1xuICBueCA9IG54LnJlZElBZGQobngpO1xuICBueCA9IG54LnJlZElBZGQobngpO1xuICAvLyBZMyA9IDggKiBZMSAqIChVICogKFQgLSBVKSAtIEUgKiBFRSlcbiAgdmFyIG55ID0gdGhpcy55LnJlZE11bCh1LnJlZE11bCh0LnJlZElTdWIodSkpLnJlZElTdWIoZS5yZWRNdWwoZWUpKSk7XG4gIG55ID0gbnkucmVkSUFkZChueSk7XG4gIG55ID0gbnkucmVkSUFkZChueSk7XG4gIG55ID0gbnkucmVkSUFkZChueSk7XG4gIC8vIFozID0gKFoxICsgRSleMiAtIFpaIC0gRUVcbiAgdmFyIG56ID0gdGhpcy56LnJlZEFkZChlKS5yZWRTcXIoKS5yZWRJU3ViKHp6KS5yZWRJU3ViKGVlKTtcblxuICByZXR1cm4gdGhpcy5jdXJ2ZS5qcG9pbnQobngsIG55LCBueik7XG59O1xuXG5KUG9pbnQucHJvdG90eXBlLm11bCA9IGZ1bmN0aW9uIG11bChrLCBrYmFzZSkge1xuICBrID0gbmV3IEJOKGssIGtiYXNlKTtcblxuICByZXR1cm4gdGhpcy5jdXJ2ZS5fd25hZk11bCh0aGlzLCBrKTtcbn07XG5cbkpQb2ludC5wcm90b3R5cGUuZXEgPSBmdW5jdGlvbiBlcShwKSB7XG4gIGlmIChwLnR5cGUgPT09ICdhZmZpbmUnKVxuICAgIHJldHVybiB0aGlzLmVxKHAudG9KKCkpO1xuXG4gIGlmICh0aGlzID09PSBwKVxuICAgIHJldHVybiB0cnVlO1xuXG4gIC8vIHgxICogejJeMiA9PSB4MiAqIHoxXjJcbiAgdmFyIHoyID0gdGhpcy56LnJlZFNxcigpO1xuICB2YXIgcHoyID0gcC56LnJlZFNxcigpO1xuICBpZiAodGhpcy54LnJlZE11bChwejIpLnJlZElTdWIocC54LnJlZE11bCh6MikpLmNtcG4oMCkgIT09IDApXG4gICAgcmV0dXJuIGZhbHNlO1xuXG4gIC8vIHkxICogejJeMyA9PSB5MiAqIHoxXjNcbiAgdmFyIHozID0gejIucmVkTXVsKHRoaXMueik7XG4gIHZhciBwejMgPSBwejIucmVkTXVsKHAueik7XG4gIHJldHVybiB0aGlzLnkucmVkTXVsKHB6MykucmVkSVN1YihwLnkucmVkTXVsKHozKSkuY21wbigwKSA9PT0gMDtcbn07XG5cbkpQb2ludC5wcm90b3R5cGUuZXFYVG9QID0gZnVuY3Rpb24gZXFYVG9QKHgpIHtcbiAgdmFyIHpzID0gdGhpcy56LnJlZFNxcigpO1xuICB2YXIgcnggPSB4LnRvUmVkKHRoaXMuY3VydmUucmVkKS5yZWRNdWwoenMpO1xuICBpZiAodGhpcy54LmNtcChyeCkgPT09IDApXG4gICAgcmV0dXJuIHRydWU7XG5cbiAgdmFyIHhjID0geC5jbG9uZSgpO1xuICB2YXIgdCA9IHRoaXMuY3VydmUucmVkTi5yZWRNdWwoenMpO1xuICBmb3IgKDs7KSB7XG4gICAgeGMuaWFkZCh0aGlzLmN1cnZlLm4pO1xuICAgIGlmICh4Yy5jbXAodGhpcy5jdXJ2ZS5wKSA+PSAwKVxuICAgICAgcmV0dXJuIGZhbHNlO1xuXG4gICAgcngucmVkSUFkZCh0KTtcbiAgICBpZiAodGhpcy54LmNtcChyeCkgPT09IDApXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59O1xuXG5KUG9pbnQucHJvdG90eXBlLmluc3BlY3QgPSBmdW5jdGlvbiBpbnNwZWN0KCkge1xuICBpZiAodGhpcy5pc0luZmluaXR5KCkpXG4gICAgcmV0dXJuICc8RUMgSlBvaW50IEluZmluaXR5Pic7XG4gIHJldHVybiAnPEVDIEpQb2ludCB4OiAnICsgdGhpcy54LnRvU3RyaW5nKDE2LCAyKSArXG4gICAgICAnIHk6ICcgKyB0aGlzLnkudG9TdHJpbmcoMTYsIDIpICtcbiAgICAgICcgejogJyArIHRoaXMuei50b1N0cmluZygxNiwgMikgKyAnPic7XG59O1xuXG5KUG9pbnQucHJvdG90eXBlLmlzSW5maW5pdHkgPSBmdW5jdGlvbiBpc0luZmluaXR5KCkge1xuICAvLyBYWFggVGhpcyBjb2RlIGFzc3VtZXMgdGhhdCB6ZXJvIGlzIGFsd2F5cyB6ZXJvIGluIHJlZFxuICByZXR1cm4gdGhpcy56LmNtcG4oMCkgPT09IDA7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgY3VydmVzID0gZXhwb3J0cztcblxudmFyIGhhc2ggPSByZXF1aXJlKCdoYXNoLmpzJyk7XG52YXIgZWxsaXB0aWMgPSByZXF1aXJlKCcuLi9lbGxpcHRpYycpO1xuXG52YXIgYXNzZXJ0ID0gZWxsaXB0aWMudXRpbHMuYXNzZXJ0O1xuXG5mdW5jdGlvbiBQcmVzZXRDdXJ2ZShvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zLnR5cGUgPT09ICdzaG9ydCcpXG4gICAgdGhpcy5jdXJ2ZSA9IG5ldyBlbGxpcHRpYy5jdXJ2ZS5zaG9ydChvcHRpb25zKTtcbiAgZWxzZSBpZiAob3B0aW9ucy50eXBlID09PSAnZWR3YXJkcycpXG4gICAgdGhpcy5jdXJ2ZSA9IG5ldyBlbGxpcHRpYy5jdXJ2ZS5lZHdhcmRzKG9wdGlvbnMpO1xuICBlbHNlXG4gICAgdGhpcy5jdXJ2ZSA9IG5ldyBlbGxpcHRpYy5jdXJ2ZS5tb250KG9wdGlvbnMpO1xuICB0aGlzLmcgPSB0aGlzLmN1cnZlLmc7XG4gIHRoaXMubiA9IHRoaXMuY3VydmUubjtcbiAgdGhpcy5oYXNoID0gb3B0aW9ucy5oYXNoO1xuXG4gIGFzc2VydCh0aGlzLmcudmFsaWRhdGUoKSwgJ0ludmFsaWQgY3VydmUnKTtcbiAgYXNzZXJ0KHRoaXMuZy5tdWwodGhpcy5uKS5pc0luZmluaXR5KCksICdJbnZhbGlkIGN1cnZlLCBHKk4gIT0gTycpO1xufVxuY3VydmVzLlByZXNldEN1cnZlID0gUHJlc2V0Q3VydmU7XG5cbmZ1bmN0aW9uIGRlZmluZUN1cnZlKG5hbWUsIG9wdGlvbnMpIHtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGN1cnZlcywgbmFtZSwge1xuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgY3VydmUgPSBuZXcgUHJlc2V0Q3VydmUob3B0aW9ucyk7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoY3VydmVzLCBuYW1lLCB7XG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgdmFsdWU6IGN1cnZlXG4gICAgICB9KTtcbiAgICAgIHJldHVybiBjdXJ2ZTtcbiAgICB9XG4gIH0pO1xufVxuXG5kZWZpbmVDdXJ2ZSgncDE5MicsIHtcbiAgdHlwZTogJ3Nob3J0JyxcbiAgcHJpbWU6ICdwMTkyJyxcbiAgcDogJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZmZmZmIGZmZmZmZmZmJyxcbiAgYTogJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZmZmZmIGZmZmZmZmZjJyxcbiAgYjogJzY0MjEwNTE5IGU1OWM4MGU3IDBmYTdlOWFiIDcyMjQzMDQ5IGZlYjhkZWVjIGMxNDZiOWIxJyxcbiAgbjogJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIDk5ZGVmODM2IDE0NmJjOWIxIGI0ZDIyODMxJyxcbiAgaGFzaDogaGFzaC5zaGEyNTYsXG4gIGdSZWQ6IGZhbHNlLFxuICBnOiBbXG4gICAgJzE4OGRhODBlIGIwMzA5MGY2IDdjYmYyMGViIDQzYTE4ODAwIGY0ZmYwYWZkIDgyZmYxMDEyJyxcbiAgICAnMDcxOTJiOTUgZmZjOGRhNzggNjMxMDExZWQgNmIyNGNkZDUgNzNmOTc3YTEgMWU3OTQ4MTEnXG4gIF1cbn0pO1xuXG5kZWZpbmVDdXJ2ZSgncDIyNCcsIHtcbiAgdHlwZTogJ3Nob3J0JyxcbiAgcHJpbWU6ICdwMjI0JyxcbiAgcDogJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIDAwMDAwMDAwIDAwMDAwMDAwIDAwMDAwMDAxJyxcbiAgYTogJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlJyxcbiAgYjogJ2I0MDUwYTg1IDBjMDRiM2FiIGY1NDEzMjU2IDUwNDRiMGI3IGQ3YmZkOGJhIDI3MGIzOTQzIDIzNTVmZmI0JyxcbiAgbjogJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmYxNmEyIGUwYjhmMDNlIDEzZGQyOTQ1IDVjNWMyYTNkJyxcbiAgaGFzaDogaGFzaC5zaGEyNTYsXG4gIGdSZWQ6IGZhbHNlLFxuICBnOiBbXG4gICAgJ2I3MGUwY2JkIDZiYjRiZjdmIDMyMTM5MGI5IDRhMDNjMWQzIDU2YzIxMTIyIDM0MzI4MGQ2IDExNWMxZDIxJyxcbiAgICAnYmQzNzYzODggYjVmNzIzZmIgNGMyMmRmZTYgY2Q0Mzc1YTAgNWEwNzQ3NjQgNDRkNTgxOTkgODUwMDdlMzQnXG4gIF1cbn0pO1xuXG5kZWZpbmVDdXJ2ZSgncDI1NicsIHtcbiAgdHlwZTogJ3Nob3J0JyxcbiAgcHJpbWU6IG51bGwsXG4gIHA6ICdmZmZmZmZmZiAwMDAwMDAwMSAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMCBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZicsXG4gIGE6ICdmZmZmZmZmZiAwMDAwMDAwMSAwMDAwMDAwMCAwMDAwMDAwMCAwMDAwMDAwMCBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmYycsXG4gIGI6ICc1YWM2MzVkOCBhYTNhOTNlNyBiM2ViYmQ1NSA3Njk4ODZiYyA2NTFkMDZiMCBjYzUzYjBmNiAzYmNlM2MzZSAyN2QyNjA0YicsXG4gIG46ICdmZmZmZmZmZiAwMDAwMDAwMCBmZmZmZmZmZiBmZmZmZmZmZiBiY2U2ZmFhZCBhNzE3OWU4NCBmM2I5Y2FjMiBmYzYzMjU1MScsXG4gIGhhc2g6IGhhc2guc2hhMjU2LFxuICBnUmVkOiBmYWxzZSxcbiAgZzogW1xuICAgICc2YjE3ZDFmMiBlMTJjNDI0NyBmOGJjZTZlNSA2M2E0NDBmMiA3NzAzN2Q4MSAyZGViMzNhMCBmNGExMzk0NSBkODk4YzI5NicsXG4gICAgJzRmZTM0MmUyIGZlMWE3ZjliIDhlZTdlYjRhIDdjMGY5ZTE2IDJiY2UzMzU3IDZiMzE1ZWNlIGNiYjY0MDY4IDM3YmY1MWY1J1xuICBdXG59KTtcblxuZGVmaW5lQ3VydmUoJ3AzODQnLCB7XG4gIHR5cGU6ICdzaG9ydCcsXG4gIHByaW1lOiBudWxsLFxuICBwOiAnZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgJyArXG4gICAgICdmZmZmZmZmZSBmZmZmZmZmZiAwMDAwMDAwMCAwMDAwMDAwMCBmZmZmZmZmZicsXG4gIGE6ICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiAnICtcbiAgICAgJ2ZmZmZmZmZlIGZmZmZmZmZmIDAwMDAwMDAwIDAwMDAwMDAwIGZmZmZmZmZjJyxcbiAgYjogJ2IzMzEyZmE3IGUyM2VlN2U0IDk4OGUwNTZiIGUzZjgyZDE5IDE4MWQ5YzZlIGZlODE0MTEyIDAzMTQwODhmICcgK1xuICAgICAnNTAxMzg3NWEgYzY1NjM5OGQgOGEyZWQxOWQgMmE4NWM4ZWQgZDNlYzJhZWYnLFxuICBuOiAnZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgYzc2MzRkODEgJyArXG4gICAgICdmNDM3MmRkZiA1ODFhMGRiMiA0OGIwYTc3YSBlY2VjMTk2YSBjY2M1Mjk3MycsXG4gIGhhc2g6IGhhc2guc2hhMzg0LFxuICBnUmVkOiBmYWxzZSxcbiAgZzogW1xuICAgICdhYTg3Y2EyMiBiZThiMDUzNyA4ZWIxYzcxZSBmMzIwYWQ3NCA2ZTFkM2I2MiA4YmE3OWI5OCA1OWY3NDFlMCA4MjU0MmEzOCAnICtcbiAgICAnNTUwMmYyNWQgYmY1NTI5NmMgM2E1NDVlMzggNzI3NjBhYjcnLFxuICAgICczNjE3ZGU0YSA5NjI2MmM2ZiA1ZDllOThiZiA5MjkyZGMyOSBmOGY0MWRiZCAyODlhMTQ3YyBlOWRhMzExMyBiNWYwYjhjMCAnICtcbiAgICAnMGE2MGIxY2UgMWQ3ZTgxOWQgN2E0MzFkN2MgOTBlYTBlNWYnXG4gIF1cbn0pO1xuXG5kZWZpbmVDdXJ2ZSgncDUyMScsIHtcbiAgdHlwZTogJ3Nob3J0JyxcbiAgcHJpbWU6IG51bGwsXG4gIHA6ICcwMDAwMDFmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiAnICtcbiAgICAgJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmICcgK1xuICAgICAnZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYnLFxuICBhOiAnMDAwMDAxZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgJyArXG4gICAgICdmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiAnICtcbiAgICAgJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZjJyxcbiAgYjogJzAwMDAwMDUxIDk1M2ViOTYxIDhlMWM5YTFmIDkyOWEyMWEwIGI2ODU0MGVlIGEyZGE3MjViICcgK1xuICAgICAnOTliMzE1ZjMgYjhiNDg5OTEgOGVmMTA5ZTEgNTYxOTM5NTEgZWM3ZTkzN2IgMTY1MmMwYmQgJyArXG4gICAgICczYmIxYmYwNyAzNTczZGY4OCAzZDJjMzRmMSBlZjQ1MWZkNCA2YjUwM2YwMCcsXG4gIG46ICcwMDAwMDFmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiBmZmZmZmZmZiAnICtcbiAgICAgJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZhIDUxODY4NzgzIGJmMmY5NjZiIDdmY2MwMTQ4ICcgK1xuICAgICAnZjcwOWE1ZDAgM2JiNWM5YjggODk5YzQ3YWUgYmI2ZmI3MWUgOTEzODY0MDknLFxuICBoYXNoOiBoYXNoLnNoYTUxMixcbiAgZ1JlZDogZmFsc2UsXG4gIGc6IFtcbiAgICAnMDAwMDAwYzYgODU4ZTA2YjcgMDQwNGU5Y2QgOWUzZWNiNjYgMjM5NWI0NDIgOWM2NDgxMzkgJyArXG4gICAgJzA1M2ZiNTIxIGY4MjhhZjYwIDZiNGQzZGJhIGExNGI1ZTc3IGVmZTc1OTI4IGZlMWRjMTI3ICcgK1xuICAgICdhMmZmYThkZSAzMzQ4YjNjMSA4NTZhNDI5YiBmOTdlN2UzMSBjMmU1YmQ2NicsXG4gICAgJzAwMDAwMTE4IDM5Mjk2YTc4IDlhM2JjMDA0IDVjOGE1ZmI0IDJjN2QxYmQ5IDk4ZjU0NDQ5ICcgK1xuICAgICc1NzliNDQ2OCAxN2FmYmQxNyAyNzNlNjYyYyA5N2VlNzI5OSA1ZWY0MjY0MCBjNTUwYjkwMSAnICtcbiAgICAnM2ZhZDA3NjEgMzUzYzcwODYgYTI3MmMyNDAgODhiZTk0NzYgOWZkMTY2NTAnXG4gIF1cbn0pO1xuXG5kZWZpbmVDdXJ2ZSgnY3VydmUyNTUxOScsIHtcbiAgdHlwZTogJ21vbnQnLFxuICBwcmltZTogJ3AyNTUxOScsXG4gIHA6ICc3ZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmVkJyxcbiAgYTogJzc2ZDA2JyxcbiAgYjogJzEnLFxuICBuOiAnMTAwMDAwMDAwMDAwMDAwMCAwMDAwMDAwMDAwMDAwMDAwIDE0ZGVmOWRlYTJmNzljZDYgNTgxMjYzMWE1Y2Y1ZDNlZCcsXG4gIGhhc2g6IGhhc2guc2hhMjU2LFxuICBnUmVkOiBmYWxzZSxcbiAgZzogW1xuICAgICc5J1xuICBdXG59KTtcblxuZGVmaW5lQ3VydmUoJ2VkMjU1MTknLCB7XG4gIHR5cGU6ICdlZHdhcmRzJyxcbiAgcHJpbWU6ICdwMjU1MTknLFxuICBwOiAnN2ZmZmZmZmZmZmZmZmZmZiBmZmZmZmZmZmZmZmZmZmZmIGZmZmZmZmZmZmZmZmZmZmYgZmZmZmZmZmZmZmZmZmZlZCcsXG4gIGE6ICctMScsXG4gIGM6ICcxJyxcbiAgLy8gLTEyMTY2NSAqICgxMjE2NjZeKC0xKSkgKG1vZCBQKVxuICBkOiAnNTIwMzZjZWUyYjZmZmU3MyA4Y2M3NDA3OTc3NzllODk4IDAwNzAwYTRkNDE0MWQ4YWIgNzVlYjRkY2ExMzU5NzhhMycsXG4gIG46ICcxMDAwMDAwMDAwMDAwMDAwIDAwMDAwMDAwMDAwMDAwMDAgMTRkZWY5ZGVhMmY3OWNkNiA1ODEyNjMxYTVjZjVkM2VkJyxcbiAgaGFzaDogaGFzaC5zaGEyNTYsXG4gIGdSZWQ6IGZhbHNlLFxuICBnOiBbXG4gICAgJzIxNjkzNmQzY2Q2ZTUzZmVjMGE0ZTIzMWZkZDZkYzVjNjkyY2M3NjA5NTI1YTdiMmM5NTYyZDYwOGYyNWQ1MWEnLFxuXG4gICAgLy8gNC81XG4gICAgJzY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NTgnXG4gIF1cbn0pO1xuXG52YXIgcHJlO1xudHJ5IHtcbiAgcHJlID0gcmVxdWlyZSgnLi9wcmVjb21wdXRlZC9zZWNwMjU2azEnKTtcbn0gY2F0Y2ggKGUpIHtcbiAgcHJlID0gdW5kZWZpbmVkO1xufVxuXG5kZWZpbmVDdXJ2ZSgnc2VjcDI1NmsxJywge1xuICB0eXBlOiAnc2hvcnQnLFxuICBwcmltZTogJ2syNTYnLFxuICBwOiAnZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmYgZmZmZmZmZmUgZmZmZmZjMmYnLFxuICBhOiAnMCcsXG4gIGI6ICc3JyxcbiAgbjogJ2ZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZmIGZmZmZmZmZlIGJhYWVkY2U2IGFmNDhhMDNiIGJmZDI1ZThjIGQwMzY0MTQxJyxcbiAgaDogJzEnLFxuICBoYXNoOiBoYXNoLnNoYTI1NixcblxuICAvLyBQcmVjb21wdXRlZCBlbmRvbW9ycGhpc21cbiAgYmV0YTogJzdhZTk2YTJiNjU3YzA3MTA2ZTY0NDc5ZWFjMzQzNGU5OWNmMDQ5NzUxMmY1ODk5NWMxMzk2YzI4NzE5NTAxZWUnLFxuICBsYW1iZGE6ICc1MzYzYWQ0Y2MwNWMzMGUwYTUyNjFjMDI4ODEyNjQ1YTEyMmUyMmVhMjA4MTY2NzhkZjAyOTY3YzFiMjNiZDcyJyxcbiAgYmFzaXM6IFtcbiAgICB7XG4gICAgICBhOiAnMzA4NmQyMjFhN2Q0NmJjZGU4NmM5MGU0OTI4NGViMTUnLFxuICAgICAgYjogJy1lNDQzN2VkNjAxMGU4ODI4NmY1NDdmYTkwYWJmZTRjMydcbiAgICB9LFxuICAgIHtcbiAgICAgIGE6ICcxMTRjYTUwZjdhOGUyZjNmNjU3YzExMDhkOWQ0NGNmZDgnLFxuICAgICAgYjogJzMwODZkMjIxYTdkNDZiY2RlODZjOTBlNDkyODRlYjE1J1xuICAgIH1cbiAgXSxcblxuICBnUmVkOiBmYWxzZSxcbiAgZzogW1xuICAgICc3OWJlNjY3ZWY5ZGNiYmFjNTVhMDYyOTVjZTg3MGIwNzAyOWJmY2RiMmRjZTI4ZDk1OWYyODE1YjE2ZjgxNzk4JyxcbiAgICAnNDgzYWRhNzcyNmEzYzQ2NTVkYTRmYmZjMGUxMTA4YThmZDE3YjQ0OGE2ODU1NDE5OWM0N2QwOGZmYjEwZDRiOCcsXG4gICAgcHJlXG4gIF1cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgQk4gPSByZXF1aXJlKCdibi5qcycpO1xudmFyIEhtYWNEUkJHID0gcmVxdWlyZSgnaG1hYy1kcmJnJyk7XG52YXIgZWxsaXB0aWMgPSByZXF1aXJlKCcuLi8uLi9lbGxpcHRpYycpO1xudmFyIHV0aWxzID0gZWxsaXB0aWMudXRpbHM7XG52YXIgYXNzZXJ0ID0gdXRpbHMuYXNzZXJ0O1xuXG52YXIgS2V5UGFpciA9IHJlcXVpcmUoJy4va2V5Jyk7XG52YXIgU2lnbmF0dXJlID0gcmVxdWlyZSgnLi9zaWduYXR1cmUnKTtcblxuZnVuY3Rpb24gRUMob3B0aW9ucykge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgRUMpKVxuICAgIHJldHVybiBuZXcgRUMob3B0aW9ucyk7XG5cbiAgLy8gU2hvcnRjdXQgYGVsbGlwdGljLmVjKGN1cnZlLW5hbWUpYFxuICBpZiAodHlwZW9mIG9wdGlvbnMgPT09ICdzdHJpbmcnKSB7XG4gICAgYXNzZXJ0KGVsbGlwdGljLmN1cnZlcy5oYXNPd25Qcm9wZXJ0eShvcHRpb25zKSwgJ1Vua25vd24gY3VydmUgJyArIG9wdGlvbnMpO1xuXG4gICAgb3B0aW9ucyA9IGVsbGlwdGljLmN1cnZlc1tvcHRpb25zXTtcbiAgfVxuXG4gIC8vIFNob3J0Y3V0IGZvciBgZWxsaXB0aWMuZWMoZWxsaXB0aWMuY3VydmVzLmN1cnZlTmFtZSlgXG4gIGlmIChvcHRpb25zIGluc3RhbmNlb2YgZWxsaXB0aWMuY3VydmVzLlByZXNldEN1cnZlKVxuICAgIG9wdGlvbnMgPSB7IGN1cnZlOiBvcHRpb25zIH07XG5cbiAgdGhpcy5jdXJ2ZSA9IG9wdGlvbnMuY3VydmUuY3VydmU7XG4gIHRoaXMubiA9IHRoaXMuY3VydmUubjtcbiAgdGhpcy5uaCA9IHRoaXMubi51c2hybigxKTtcbiAgdGhpcy5nID0gdGhpcy5jdXJ2ZS5nO1xuXG4gIC8vIFBvaW50IG9uIGN1cnZlXG4gIHRoaXMuZyA9IG9wdGlvbnMuY3VydmUuZztcbiAgdGhpcy5nLnByZWNvbXB1dGUob3B0aW9ucy5jdXJ2ZS5uLmJpdExlbmd0aCgpICsgMSk7XG5cbiAgLy8gSGFzaCBmb3IgZnVuY3Rpb24gZm9yIERSQkdcbiAgdGhpcy5oYXNoID0gb3B0aW9ucy5oYXNoIHx8IG9wdGlvbnMuY3VydmUuaGFzaDtcbn1cbm1vZHVsZS5leHBvcnRzID0gRUM7XG5cbkVDLnByb3RvdHlwZS5rZXlQYWlyID0gZnVuY3Rpb24ga2V5UGFpcihvcHRpb25zKSB7XG4gIHJldHVybiBuZXcgS2V5UGFpcih0aGlzLCBvcHRpb25zKTtcbn07XG5cbkVDLnByb3RvdHlwZS5rZXlGcm9tUHJpdmF0ZSA9IGZ1bmN0aW9uIGtleUZyb21Qcml2YXRlKHByaXYsIGVuYykge1xuICByZXR1cm4gS2V5UGFpci5mcm9tUHJpdmF0ZSh0aGlzLCBwcml2LCBlbmMpO1xufTtcblxuRUMucHJvdG90eXBlLmtleUZyb21QdWJsaWMgPSBmdW5jdGlvbiBrZXlGcm9tUHVibGljKHB1YiwgZW5jKSB7XG4gIHJldHVybiBLZXlQYWlyLmZyb21QdWJsaWModGhpcywgcHViLCBlbmMpO1xufTtcblxuRUMucHJvdG90eXBlLmdlbktleVBhaXIgPSBmdW5jdGlvbiBnZW5LZXlQYWlyKG9wdGlvbnMpIHtcbiAgaWYgKCFvcHRpb25zKVxuICAgIG9wdGlvbnMgPSB7fTtcblxuICAvLyBJbnN0YW50aWF0ZSBIbWFjX0RSQkdcbiAgdmFyIGRyYmcgPSBuZXcgSG1hY0RSQkcoe1xuICAgIGhhc2g6IHRoaXMuaGFzaCxcbiAgICBwZXJzOiBvcHRpb25zLnBlcnMsXG4gICAgcGVyc0VuYzogb3B0aW9ucy5wZXJzRW5jIHx8ICd1dGY4JyxcbiAgICBlbnRyb3B5OiBvcHRpb25zLmVudHJvcHkgfHwgZWxsaXB0aWMucmFuZCh0aGlzLmhhc2guaG1hY1N0cmVuZ3RoKSxcbiAgICBlbnRyb3B5RW5jOiBvcHRpb25zLmVudHJvcHkgJiYgb3B0aW9ucy5lbnRyb3B5RW5jIHx8ICd1dGY4JyxcbiAgICBub25jZTogdGhpcy5uLnRvQXJyYXkoKVxuICB9KTtcblxuICB2YXIgYnl0ZXMgPSB0aGlzLm4uYnl0ZUxlbmd0aCgpO1xuICB2YXIgbnMyID0gdGhpcy5uLnN1YihuZXcgQk4oMikpO1xuICBkbyB7XG4gICAgdmFyIHByaXYgPSBuZXcgQk4oZHJiZy5nZW5lcmF0ZShieXRlcykpO1xuICAgIGlmIChwcml2LmNtcChuczIpID4gMClcbiAgICAgIGNvbnRpbnVlO1xuXG4gICAgcHJpdi5pYWRkbigxKTtcbiAgICByZXR1cm4gdGhpcy5rZXlGcm9tUHJpdmF0ZShwcml2KTtcbiAgfSB3aGlsZSAodHJ1ZSk7XG59O1xuXG5FQy5wcm90b3R5cGUuX3RydW5jYXRlVG9OID0gZnVuY3Rpb24gdHJ1bmNhdGVUb04obXNnLCB0cnVuY09ubHkpIHtcbiAgdmFyIGRlbHRhID0gbXNnLmJ5dGVMZW5ndGgoKSAqIDggLSB0aGlzLm4uYml0TGVuZ3RoKCk7XG4gIGlmIChkZWx0YSA+IDApXG4gICAgbXNnID0gbXNnLnVzaHJuKGRlbHRhKTtcbiAgaWYgKCF0cnVuY09ubHkgJiYgbXNnLmNtcCh0aGlzLm4pID49IDApXG4gICAgcmV0dXJuIG1zZy5zdWIodGhpcy5uKTtcbiAgZWxzZVxuICAgIHJldHVybiBtc2c7XG59O1xuXG5FQy5wcm90b3R5cGUuc2lnbiA9IGZ1bmN0aW9uIHNpZ24obXNnLCBrZXksIGVuYywgb3B0aW9ucykge1xuICBpZiAodHlwZW9mIGVuYyA9PT0gJ29iamVjdCcpIHtcbiAgICBvcHRpb25zID0gZW5jO1xuICAgIGVuYyA9IG51bGw7XG4gIH1cbiAgaWYgKCFvcHRpb25zKVxuICAgIG9wdGlvbnMgPSB7fTtcblxuICBrZXkgPSB0aGlzLmtleUZyb21Qcml2YXRlKGtleSwgZW5jKTtcbiAgbXNnID0gdGhpcy5fdHJ1bmNhdGVUb04obmV3IEJOKG1zZywgMTYpKTtcblxuICAvLyBaZXJvLWV4dGVuZCBrZXkgdG8gcHJvdmlkZSBlbm91Z2ggZW50cm9weVxuICB2YXIgYnl0ZXMgPSB0aGlzLm4uYnl0ZUxlbmd0aCgpO1xuICB2YXIgYmtleSA9IGtleS5nZXRQcml2YXRlKCkudG9BcnJheSgnYmUnLCBieXRlcyk7XG5cbiAgLy8gWmVyby1leHRlbmQgbm9uY2UgdG8gaGF2ZSB0aGUgc2FtZSBieXRlIHNpemUgYXMgTlxuICB2YXIgbm9uY2UgPSBtc2cudG9BcnJheSgnYmUnLCBieXRlcyk7XG5cbiAgLy8gSW5zdGFudGlhdGUgSG1hY19EUkJHXG4gIHZhciBkcmJnID0gbmV3IEhtYWNEUkJHKHtcbiAgICBoYXNoOiB0aGlzLmhhc2gsXG4gICAgZW50cm9weTogYmtleSxcbiAgICBub25jZTogbm9uY2UsXG4gICAgcGVyczogb3B0aW9ucy5wZXJzLFxuICAgIHBlcnNFbmM6IG9wdGlvbnMucGVyc0VuYyB8fCAndXRmOCdcbiAgfSk7XG5cbiAgLy8gTnVtYmVyIG9mIGJ5dGVzIHRvIGdlbmVyYXRlXG4gIHZhciBuczEgPSB0aGlzLm4uc3ViKG5ldyBCTigxKSk7XG5cbiAgZm9yICh2YXIgaXRlciA9IDA7IHRydWU7IGl0ZXIrKykge1xuICAgIHZhciBrID0gb3B0aW9ucy5rID9cbiAgICAgICAgb3B0aW9ucy5rKGl0ZXIpIDpcbiAgICAgICAgbmV3IEJOKGRyYmcuZ2VuZXJhdGUodGhpcy5uLmJ5dGVMZW5ndGgoKSkpO1xuICAgIGsgPSB0aGlzLl90cnVuY2F0ZVRvTihrLCB0cnVlKTtcbiAgICBpZiAoay5jbXBuKDEpIDw9IDAgfHwgay5jbXAobnMxKSA+PSAwKVxuICAgICAgY29udGludWU7XG5cbiAgICB2YXIga3AgPSB0aGlzLmcubXVsKGspO1xuICAgIGlmIChrcC5pc0luZmluaXR5KCkpXG4gICAgICBjb250aW51ZTtcblxuICAgIHZhciBrcFggPSBrcC5nZXRYKCk7XG4gICAgdmFyIHIgPSBrcFgudW1vZCh0aGlzLm4pO1xuICAgIGlmIChyLmNtcG4oMCkgPT09IDApXG4gICAgICBjb250aW51ZTtcblxuICAgIHZhciBzID0gay5pbnZtKHRoaXMubikubXVsKHIubXVsKGtleS5nZXRQcml2YXRlKCkpLmlhZGQobXNnKSk7XG4gICAgcyA9IHMudW1vZCh0aGlzLm4pO1xuICAgIGlmIChzLmNtcG4oMCkgPT09IDApXG4gICAgICBjb250aW51ZTtcblxuICAgIHZhciByZWNvdmVyeVBhcmFtID0gKGtwLmdldFkoKS5pc09kZCgpID8gMSA6IDApIHxcbiAgICAgICAgICAgICAgICAgICAgICAgIChrcFguY21wKHIpICE9PSAwID8gMiA6IDApO1xuXG4gICAgLy8gVXNlIGNvbXBsZW1lbnQgb2YgYHNgLCBpZiBpdCBpcyA+IGBuIC8gMmBcbiAgICBpZiAob3B0aW9ucy5jYW5vbmljYWwgJiYgcy5jbXAodGhpcy5uaCkgPiAwKSB7XG4gICAgICBzID0gdGhpcy5uLnN1YihzKTtcbiAgICAgIHJlY292ZXJ5UGFyYW0gXj0gMTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFNpZ25hdHVyZSh7IHI6IHIsIHM6IHMsIHJlY292ZXJ5UGFyYW06IHJlY292ZXJ5UGFyYW0gfSk7XG4gIH1cbn07XG5cbkVDLnByb3RvdHlwZS52ZXJpZnkgPSBmdW5jdGlvbiB2ZXJpZnkobXNnLCBzaWduYXR1cmUsIGtleSwgZW5jKSB7XG4gIG1zZyA9IHRoaXMuX3RydW5jYXRlVG9OKG5ldyBCTihtc2csIDE2KSk7XG4gIGtleSA9IHRoaXMua2V5RnJvbVB1YmxpYyhrZXksIGVuYyk7XG4gIHNpZ25hdHVyZSA9IG5ldyBTaWduYXR1cmUoc2lnbmF0dXJlLCAnaGV4Jyk7XG5cbiAgLy8gUGVyZm9ybSBwcmltaXRpdmUgdmFsdWVzIHZhbGlkYXRpb25cbiAgdmFyIHIgPSBzaWduYXR1cmUucjtcbiAgdmFyIHMgPSBzaWduYXR1cmUucztcbiAgaWYgKHIuY21wbigxKSA8IDAgfHwgci5jbXAodGhpcy5uKSA+PSAwKVxuICAgIHJldHVybiBmYWxzZTtcbiAgaWYgKHMuY21wbigxKSA8IDAgfHwgcy5jbXAodGhpcy5uKSA+PSAwKVxuICAgIHJldHVybiBmYWxzZTtcblxuICAvLyBWYWxpZGF0ZSBzaWduYXR1cmVcbiAgdmFyIHNpbnYgPSBzLmludm0odGhpcy5uKTtcbiAgdmFyIHUxID0gc2ludi5tdWwobXNnKS51bW9kKHRoaXMubik7XG4gIHZhciB1MiA9IHNpbnYubXVsKHIpLnVtb2QodGhpcy5uKTtcblxuICBpZiAoIXRoaXMuY3VydmUuX21heHdlbGxUcmljaykge1xuICAgIHZhciBwID0gdGhpcy5nLm11bEFkZCh1MSwga2V5LmdldFB1YmxpYygpLCB1Mik7XG4gICAgaWYgKHAuaXNJbmZpbml0eSgpKVxuICAgICAgcmV0dXJuIGZhbHNlO1xuXG4gICAgcmV0dXJuIHAuZ2V0WCgpLnVtb2QodGhpcy5uKS5jbXAocikgPT09IDA7XG4gIH1cblxuICAvLyBOT1RFOiBHcmVnIE1heHdlbGwncyB0cmljaywgaW5zcGlyZWQgYnk6XG4gIC8vIGh0dHBzOi8vZ2l0LmlvL3ZhZDNLXG5cbiAgdmFyIHAgPSB0aGlzLmcuam11bEFkZCh1MSwga2V5LmdldFB1YmxpYygpLCB1Mik7XG4gIGlmIChwLmlzSW5maW5pdHkoKSlcbiAgICByZXR1cm4gZmFsc2U7XG5cbiAgLy8gQ29tcGFyZSBgcC54YCBvZiBKYWNvYmlhbiBwb2ludCB3aXRoIGByYCxcbiAgLy8gdGhpcyB3aWxsIGRvIGBwLnggPT0gciAqIHAuel4yYCBpbnN0ZWFkIG9mIG11bHRpcGx5aW5nIGBwLnhgIGJ5IHRoZVxuICAvLyBpbnZlcnNlIG9mIGBwLnpeMmBcbiAgcmV0dXJuIHAuZXFYVG9QKHIpO1xufTtcblxuRUMucHJvdG90eXBlLnJlY292ZXJQdWJLZXkgPSBmdW5jdGlvbihtc2csIHNpZ25hdHVyZSwgaiwgZW5jKSB7XG4gIGFzc2VydCgoMyAmIGopID09PSBqLCAnVGhlIHJlY292ZXJ5IHBhcmFtIGlzIG1vcmUgdGhhbiB0d28gYml0cycpO1xuICBzaWduYXR1cmUgPSBuZXcgU2lnbmF0dXJlKHNpZ25hdHVyZSwgZW5jKTtcblxuICB2YXIgbiA9IHRoaXMubjtcbiAgdmFyIGUgPSBuZXcgQk4obXNnKTtcbiAgdmFyIHIgPSBzaWduYXR1cmUucjtcbiAgdmFyIHMgPSBzaWduYXR1cmUucztcblxuICAvLyBBIHNldCBMU0Igc2lnbmlmaWVzIHRoYXQgdGhlIHktY29vcmRpbmF0ZSBpcyBvZGRcbiAgdmFyIGlzWU9kZCA9IGogJiAxO1xuICB2YXIgaXNTZWNvbmRLZXkgPSBqID4+IDE7XG4gIGlmIChyLmNtcCh0aGlzLmN1cnZlLnAudW1vZCh0aGlzLmN1cnZlLm4pKSA+PSAwICYmIGlzU2Vjb25kS2V5KVxuICAgIHRocm93IG5ldyBFcnJvcignVW5hYmxlIHRvIGZpbmQgc2VuY29uZCBrZXkgY2FuZGluYXRlJyk7XG5cbiAgLy8gMS4xLiBMZXQgeCA9IHIgKyBqbi5cbiAgaWYgKGlzU2Vjb25kS2V5KVxuICAgIHIgPSB0aGlzLmN1cnZlLnBvaW50RnJvbVgoci5hZGQodGhpcy5jdXJ2ZS5uKSwgaXNZT2RkKTtcbiAgZWxzZVxuICAgIHIgPSB0aGlzLmN1cnZlLnBvaW50RnJvbVgociwgaXNZT2RkKTtcblxuICB2YXIgckludiA9IHNpZ25hdHVyZS5yLmludm0obik7XG4gIHZhciBzMSA9IG4uc3ViKGUpLm11bChySW52KS51bW9kKG4pO1xuICB2YXIgczIgPSBzLm11bChySW52KS51bW9kKG4pO1xuXG4gIC8vIDEuNi4xIENvbXB1dGUgUSA9IHJeLTEgKHNSIC0gIGVHKVxuICAvLyAgICAgICAgICAgICAgIFEgPSByXi0xIChzUiArIC1lRylcbiAgcmV0dXJuIHRoaXMuZy5tdWxBZGQoczEsIHIsIHMyKTtcbn07XG5cbkVDLnByb3RvdHlwZS5nZXRLZXlSZWNvdmVyeVBhcmFtID0gZnVuY3Rpb24oZSwgc2lnbmF0dXJlLCBRLCBlbmMpIHtcbiAgc2lnbmF0dXJlID0gbmV3IFNpZ25hdHVyZShzaWduYXR1cmUsIGVuYyk7XG4gIGlmIChzaWduYXR1cmUucmVjb3ZlcnlQYXJhbSAhPT0gbnVsbClcbiAgICByZXR1cm4gc2lnbmF0dXJlLnJlY292ZXJ5UGFyYW07XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCA0OyBpKyspIHtcbiAgICB2YXIgUXByaW1lO1xuICAgIHRyeSB7XG4gICAgICBRcHJpbWUgPSB0aGlzLnJlY292ZXJQdWJLZXkoZSwgc2lnbmF0dXJlLCBpKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAoUXByaW1lLmVxKFEpKVxuICAgICAgcmV0dXJuIGk7XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKCdVbmFibGUgdG8gZmluZCB2YWxpZCByZWNvdmVyeSBmYWN0b3InKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBCTiA9IHJlcXVpcmUoJ2JuLmpzJyk7XG52YXIgZWxsaXB0aWMgPSByZXF1aXJlKCcuLi8uLi9lbGxpcHRpYycpO1xudmFyIHV0aWxzID0gZWxsaXB0aWMudXRpbHM7XG52YXIgYXNzZXJ0ID0gdXRpbHMuYXNzZXJ0O1xuXG5mdW5jdGlvbiBLZXlQYWlyKGVjLCBvcHRpb25zKSB7XG4gIHRoaXMuZWMgPSBlYztcbiAgdGhpcy5wcml2ID0gbnVsbDtcbiAgdGhpcy5wdWIgPSBudWxsO1xuXG4gIC8vIEtleVBhaXIoZWMsIHsgcHJpdjogLi4uLCBwdWI6IC4uLiB9KVxuICBpZiAob3B0aW9ucy5wcml2KVxuICAgIHRoaXMuX2ltcG9ydFByaXZhdGUob3B0aW9ucy5wcml2LCBvcHRpb25zLnByaXZFbmMpO1xuICBpZiAob3B0aW9ucy5wdWIpXG4gICAgdGhpcy5faW1wb3J0UHVibGljKG9wdGlvbnMucHViLCBvcHRpb25zLnB1YkVuYyk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IEtleVBhaXI7XG5cbktleVBhaXIuZnJvbVB1YmxpYyA9IGZ1bmN0aW9uIGZyb21QdWJsaWMoZWMsIHB1YiwgZW5jKSB7XG4gIGlmIChwdWIgaW5zdGFuY2VvZiBLZXlQYWlyKVxuICAgIHJldHVybiBwdWI7XG5cbiAgcmV0dXJuIG5ldyBLZXlQYWlyKGVjLCB7XG4gICAgcHViOiBwdWIsXG4gICAgcHViRW5jOiBlbmNcbiAgfSk7XG59O1xuXG5LZXlQYWlyLmZyb21Qcml2YXRlID0gZnVuY3Rpb24gZnJvbVByaXZhdGUoZWMsIHByaXYsIGVuYykge1xuICBpZiAocHJpdiBpbnN0YW5jZW9mIEtleVBhaXIpXG4gICAgcmV0dXJuIHByaXY7XG5cbiAgcmV0dXJuIG5ldyBLZXlQYWlyKGVjLCB7XG4gICAgcHJpdjogcHJpdixcbiAgICBwcml2RW5jOiBlbmNcbiAgfSk7XG59O1xuXG5LZXlQYWlyLnByb3RvdHlwZS52YWxpZGF0ZSA9IGZ1bmN0aW9uIHZhbGlkYXRlKCkge1xuICB2YXIgcHViID0gdGhpcy5nZXRQdWJsaWMoKTtcblxuICBpZiAocHViLmlzSW5maW5pdHkoKSlcbiAgICByZXR1cm4geyByZXN1bHQ6IGZhbHNlLCByZWFzb246ICdJbnZhbGlkIHB1YmxpYyBrZXknIH07XG4gIGlmICghcHViLnZhbGlkYXRlKCkpXG4gICAgcmV0dXJuIHsgcmVzdWx0OiBmYWxzZSwgcmVhc29uOiAnUHVibGljIGtleSBpcyBub3QgYSBwb2ludCcgfTtcbiAgaWYgKCFwdWIubXVsKHRoaXMuZWMuY3VydmUubikuaXNJbmZpbml0eSgpKVxuICAgIHJldHVybiB7IHJlc3VsdDogZmFsc2UsIHJlYXNvbjogJ1B1YmxpYyBrZXkgKiBOICE9IE8nIH07XG5cbiAgcmV0dXJuIHsgcmVzdWx0OiB0cnVlLCByZWFzb246IG51bGwgfTtcbn07XG5cbktleVBhaXIucHJvdG90eXBlLmdldFB1YmxpYyA9IGZ1bmN0aW9uIGdldFB1YmxpYyhjb21wYWN0LCBlbmMpIHtcbiAgLy8gY29tcGFjdCBpcyBvcHRpb25hbCBhcmd1bWVudFxuICBpZiAodHlwZW9mIGNvbXBhY3QgPT09ICdzdHJpbmcnKSB7XG4gICAgZW5jID0gY29tcGFjdDtcbiAgICBjb21wYWN0ID0gbnVsbDtcbiAgfVxuXG4gIGlmICghdGhpcy5wdWIpXG4gICAgdGhpcy5wdWIgPSB0aGlzLmVjLmcubXVsKHRoaXMucHJpdik7XG5cbiAgaWYgKCFlbmMpXG4gICAgcmV0dXJuIHRoaXMucHViO1xuXG4gIHJldHVybiB0aGlzLnB1Yi5lbmNvZGUoZW5jLCBjb21wYWN0KTtcbn07XG5cbktleVBhaXIucHJvdG90eXBlLmdldFByaXZhdGUgPSBmdW5jdGlvbiBnZXRQcml2YXRlKGVuYykge1xuICBpZiAoZW5jID09PSAnaGV4JylcbiAgICByZXR1cm4gdGhpcy5wcml2LnRvU3RyaW5nKDE2LCAyKTtcbiAgZWxzZVxuICAgIHJldHVybiB0aGlzLnByaXY7XG59O1xuXG5LZXlQYWlyLnByb3RvdHlwZS5faW1wb3J0UHJpdmF0ZSA9IGZ1bmN0aW9uIF9pbXBvcnRQcml2YXRlKGtleSwgZW5jKSB7XG4gIHRoaXMucHJpdiA9IG5ldyBCTihrZXksIGVuYyB8fCAxNik7XG5cbiAgLy8gRW5zdXJlIHRoYXQgdGhlIHByaXYgd29uJ3QgYmUgYmlnZ2VyIHRoYW4gbiwgb3RoZXJ3aXNlIHdlIG1heSBmYWlsXG4gIC8vIGluIGZpeGVkIG11bHRpcGxpY2F0aW9uIG1ldGhvZFxuICB0aGlzLnByaXYgPSB0aGlzLnByaXYudW1vZCh0aGlzLmVjLmN1cnZlLm4pO1xufTtcblxuS2V5UGFpci5wcm90b3R5cGUuX2ltcG9ydFB1YmxpYyA9IGZ1bmN0aW9uIF9pbXBvcnRQdWJsaWMoa2V5LCBlbmMpIHtcbiAgaWYgKGtleS54IHx8IGtleS55KSB7XG4gICAgLy8gTW9udGdvbWVyeSBwb2ludHMgb25seSBoYXZlIGFuIGB4YCBjb29yZGluYXRlLlxuICAgIC8vIFdlaWVyc3RyYXNzL0Vkd2FyZHMgcG9pbnRzIG9uIHRoZSBvdGhlciBoYW5kIGhhdmUgYm90aCBgeGAgYW5kXG4gICAgLy8gYHlgIGNvb3JkaW5hdGVzLlxuICAgIGlmICh0aGlzLmVjLmN1cnZlLnR5cGUgPT09ICdtb250Jykge1xuICAgICAgYXNzZXJ0KGtleS54LCAnTmVlZCB4IGNvb3JkaW5hdGUnKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuZWMuY3VydmUudHlwZSA9PT0gJ3Nob3J0JyB8fFxuICAgICAgICAgICAgICAgdGhpcy5lYy5jdXJ2ZS50eXBlID09PSAnZWR3YXJkcycpIHtcbiAgICAgIGFzc2VydChrZXkueCAmJiBrZXkueSwgJ05lZWQgYm90aCB4IGFuZCB5IGNvb3JkaW5hdGUnKTtcbiAgICB9XG4gICAgdGhpcy5wdWIgPSB0aGlzLmVjLmN1cnZlLnBvaW50KGtleS54LCBrZXkueSk7XG4gICAgcmV0dXJuO1xuICB9XG4gIHRoaXMucHViID0gdGhpcy5lYy5jdXJ2ZS5kZWNvZGVQb2ludChrZXksIGVuYyk7XG59O1xuXG4vLyBFQ0RIXG5LZXlQYWlyLnByb3RvdHlwZS5kZXJpdmUgPSBmdW5jdGlvbiBkZXJpdmUocHViKSB7XG4gIHJldHVybiBwdWIubXVsKHRoaXMucHJpdikuZ2V0WCgpO1xufTtcblxuLy8gRUNEU0FcbktleVBhaXIucHJvdG90eXBlLnNpZ24gPSBmdW5jdGlvbiBzaWduKG1zZywgZW5jLCBvcHRpb25zKSB7XG4gIHJldHVybiB0aGlzLmVjLnNpZ24obXNnLCB0aGlzLCBlbmMsIG9wdGlvbnMpO1xufTtcblxuS2V5UGFpci5wcm90b3R5cGUudmVyaWZ5ID0gZnVuY3Rpb24gdmVyaWZ5KG1zZywgc2lnbmF0dXJlKSB7XG4gIHJldHVybiB0aGlzLmVjLnZlcmlmeShtc2csIHNpZ25hdHVyZSwgdGhpcyk7XG59O1xuXG5LZXlQYWlyLnByb3RvdHlwZS5pbnNwZWN0ID0gZnVuY3Rpb24gaW5zcGVjdCgpIHtcbiAgcmV0dXJuICc8S2V5IHByaXY6ICcgKyAodGhpcy5wcml2ICYmIHRoaXMucHJpdi50b1N0cmluZygxNiwgMikpICtcbiAgICAgICAgICcgcHViOiAnICsgKHRoaXMucHViICYmIHRoaXMucHViLmluc3BlY3QoKSkgKyAnID4nO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIEJOID0gcmVxdWlyZSgnYm4uanMnKTtcblxudmFyIGVsbGlwdGljID0gcmVxdWlyZSgnLi4vLi4vZWxsaXB0aWMnKTtcbnZhciB1dGlscyA9IGVsbGlwdGljLnV0aWxzO1xudmFyIGFzc2VydCA9IHV0aWxzLmFzc2VydDtcblxuZnVuY3Rpb24gU2lnbmF0dXJlKG9wdGlvbnMsIGVuYykge1xuICBpZiAob3B0aW9ucyBpbnN0YW5jZW9mIFNpZ25hdHVyZSlcbiAgICByZXR1cm4gb3B0aW9ucztcblxuICBpZiAodGhpcy5faW1wb3J0REVSKG9wdGlvbnMsIGVuYykpXG4gICAgcmV0dXJuO1xuXG4gIGFzc2VydChvcHRpb25zLnIgJiYgb3B0aW9ucy5zLCAnU2lnbmF0dXJlIHdpdGhvdXQgciBvciBzJyk7XG4gIHRoaXMuciA9IG5ldyBCTihvcHRpb25zLnIsIDE2KTtcbiAgdGhpcy5zID0gbmV3IEJOKG9wdGlvbnMucywgMTYpO1xuICBpZiAob3B0aW9ucy5yZWNvdmVyeVBhcmFtID09PSB1bmRlZmluZWQpXG4gICAgdGhpcy5yZWNvdmVyeVBhcmFtID0gbnVsbDtcbiAgZWxzZVxuICAgIHRoaXMucmVjb3ZlcnlQYXJhbSA9IG9wdGlvbnMucmVjb3ZlcnlQYXJhbTtcbn1cbm1vZHVsZS5leHBvcnRzID0gU2lnbmF0dXJlO1xuXG5mdW5jdGlvbiBQb3NpdGlvbigpIHtcbiAgdGhpcy5wbGFjZSA9IDA7XG59XG5cbmZ1bmN0aW9uIGdldExlbmd0aChidWYsIHApIHtcbiAgdmFyIGluaXRpYWwgPSBidWZbcC5wbGFjZSsrXTtcbiAgaWYgKCEoaW5pdGlhbCAmIDB4ODApKSB7XG4gICAgcmV0dXJuIGluaXRpYWw7XG4gIH1cbiAgdmFyIG9jdGV0TGVuID0gaW5pdGlhbCAmIDB4ZjtcbiAgdmFyIHZhbCA9IDA7XG4gIGZvciAodmFyIGkgPSAwLCBvZmYgPSBwLnBsYWNlOyBpIDwgb2N0ZXRMZW47IGkrKywgb2ZmKyspIHtcbiAgICB2YWwgPDw9IDg7XG4gICAgdmFsIHw9IGJ1ZltvZmZdO1xuICB9XG4gIHAucGxhY2UgPSBvZmY7XG4gIHJldHVybiB2YWw7XG59XG5cbmZ1bmN0aW9uIHJtUGFkZGluZyhidWYpIHtcbiAgdmFyIGkgPSAwO1xuICB2YXIgbGVuID0gYnVmLmxlbmd0aCAtIDE7XG4gIHdoaWxlICghYnVmW2ldICYmICEoYnVmW2kgKyAxXSAmIDB4ODApICYmIGkgPCBsZW4pIHtcbiAgICBpKys7XG4gIH1cbiAgaWYgKGkgPT09IDApIHtcbiAgICByZXR1cm4gYnVmO1xuICB9XG4gIHJldHVybiBidWYuc2xpY2UoaSk7XG59XG5cblNpZ25hdHVyZS5wcm90b3R5cGUuX2ltcG9ydERFUiA9IGZ1bmN0aW9uIF9pbXBvcnRERVIoZGF0YSwgZW5jKSB7XG4gIGRhdGEgPSB1dGlscy50b0FycmF5KGRhdGEsIGVuYyk7XG4gIHZhciBwID0gbmV3IFBvc2l0aW9uKCk7XG4gIGlmIChkYXRhW3AucGxhY2UrK10gIT09IDB4MzApIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIGxlbiA9IGdldExlbmd0aChkYXRhLCBwKTtcbiAgaWYgKChsZW4gKyBwLnBsYWNlKSAhPT0gZGF0YS5sZW5ndGgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKGRhdGFbcC5wbGFjZSsrXSAhPT0gMHgwMikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgcmxlbiA9IGdldExlbmd0aChkYXRhLCBwKTtcbiAgdmFyIHIgPSBkYXRhLnNsaWNlKHAucGxhY2UsIHJsZW4gKyBwLnBsYWNlKTtcbiAgcC5wbGFjZSArPSBybGVuO1xuICBpZiAoZGF0YVtwLnBsYWNlKytdICE9PSAweDAyKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHZhciBzbGVuID0gZ2V0TGVuZ3RoKGRhdGEsIHApO1xuICBpZiAoZGF0YS5sZW5ndGggIT09IHNsZW4gKyBwLnBsYWNlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHZhciBzID0gZGF0YS5zbGljZShwLnBsYWNlLCBzbGVuICsgcC5wbGFjZSk7XG4gIGlmIChyWzBdID09PSAwICYmIChyWzFdICYgMHg4MCkpIHtcbiAgICByID0gci5zbGljZSgxKTtcbiAgfVxuICBpZiAoc1swXSA9PT0gMCAmJiAoc1sxXSAmIDB4ODApKSB7XG4gICAgcyA9IHMuc2xpY2UoMSk7XG4gIH1cblxuICB0aGlzLnIgPSBuZXcgQk4ocik7XG4gIHRoaXMucyA9IG5ldyBCTihzKTtcbiAgdGhpcy5yZWNvdmVyeVBhcmFtID0gbnVsbDtcblxuICByZXR1cm4gdHJ1ZTtcbn07XG5cbmZ1bmN0aW9uIGNvbnN0cnVjdExlbmd0aChhcnIsIGxlbikge1xuICBpZiAobGVuIDwgMHg4MCkge1xuICAgIGFyci5wdXNoKGxlbik7XG4gICAgcmV0dXJuO1xuICB9XG4gIHZhciBvY3RldHMgPSAxICsgKE1hdGgubG9nKGxlbikgLyBNYXRoLkxOMiA+Pj4gMyk7XG4gIGFyci5wdXNoKG9jdGV0cyB8IDB4ODApO1xuICB3aGlsZSAoLS1vY3RldHMpIHtcbiAgICBhcnIucHVzaCgobGVuID4+PiAob2N0ZXRzIDw8IDMpKSAmIDB4ZmYpO1xuICB9XG4gIGFyci5wdXNoKGxlbik7XG59XG5cblNpZ25hdHVyZS5wcm90b3R5cGUudG9ERVIgPSBmdW5jdGlvbiB0b0RFUihlbmMpIHtcbiAgdmFyIHIgPSB0aGlzLnIudG9BcnJheSgpO1xuICB2YXIgcyA9IHRoaXMucy50b0FycmF5KCk7XG5cbiAgLy8gUGFkIHZhbHVlc1xuICBpZiAoclswXSAmIDB4ODApXG4gICAgciA9IFsgMCBdLmNvbmNhdChyKTtcbiAgLy8gUGFkIHZhbHVlc1xuICBpZiAoc1swXSAmIDB4ODApXG4gICAgcyA9IFsgMCBdLmNvbmNhdChzKTtcblxuICByID0gcm1QYWRkaW5nKHIpO1xuICBzID0gcm1QYWRkaW5nKHMpO1xuXG4gIHdoaWxlICghc1swXSAmJiAhKHNbMV0gJiAweDgwKSkge1xuICAgIHMgPSBzLnNsaWNlKDEpO1xuICB9XG4gIHZhciBhcnIgPSBbIDB4MDIgXTtcbiAgY29uc3RydWN0TGVuZ3RoKGFyciwgci5sZW5ndGgpO1xuICBhcnIgPSBhcnIuY29uY2F0KHIpO1xuICBhcnIucHVzaCgweDAyKTtcbiAgY29uc3RydWN0TGVuZ3RoKGFyciwgcy5sZW5ndGgpO1xuICB2YXIgYmFja0hhbGYgPSBhcnIuY29uY2F0KHMpO1xuICB2YXIgcmVzID0gWyAweDMwIF07XG4gIGNvbnN0cnVjdExlbmd0aChyZXMsIGJhY2tIYWxmLmxlbmd0aCk7XG4gIHJlcyA9IHJlcy5jb25jYXQoYmFja0hhbGYpO1xuICByZXR1cm4gdXRpbHMuZW5jb2RlKHJlcywgZW5jKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBoYXNoID0gcmVxdWlyZSgnaGFzaC5qcycpO1xudmFyIGVsbGlwdGljID0gcmVxdWlyZSgnLi4vLi4vZWxsaXB0aWMnKTtcbnZhciB1dGlscyA9IGVsbGlwdGljLnV0aWxzO1xudmFyIGFzc2VydCA9IHV0aWxzLmFzc2VydDtcbnZhciBwYXJzZUJ5dGVzID0gdXRpbHMucGFyc2VCeXRlcztcbnZhciBLZXlQYWlyID0gcmVxdWlyZSgnLi9rZXknKTtcbnZhciBTaWduYXR1cmUgPSByZXF1aXJlKCcuL3NpZ25hdHVyZScpO1xuXG5mdW5jdGlvbiBFRERTQShjdXJ2ZSkge1xuICBhc3NlcnQoY3VydmUgPT09ICdlZDI1NTE5JywgJ29ubHkgdGVzdGVkIHdpdGggZWQyNTUxOSBzbyBmYXInKTtcblxuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgRUREU0EpKVxuICAgIHJldHVybiBuZXcgRUREU0EoY3VydmUpO1xuXG4gIHZhciBjdXJ2ZSA9IGVsbGlwdGljLmN1cnZlc1tjdXJ2ZV0uY3VydmU7XG4gIHRoaXMuY3VydmUgPSBjdXJ2ZTtcbiAgdGhpcy5nID0gY3VydmUuZztcbiAgdGhpcy5nLnByZWNvbXB1dGUoY3VydmUubi5iaXRMZW5ndGgoKSArIDEpO1xuXG4gIHRoaXMucG9pbnRDbGFzcyA9IGN1cnZlLnBvaW50KCkuY29uc3RydWN0b3I7XG4gIHRoaXMuZW5jb2RpbmdMZW5ndGggPSBNYXRoLmNlaWwoY3VydmUubi5iaXRMZW5ndGgoKSAvIDgpO1xuICB0aGlzLmhhc2ggPSBoYXNoLnNoYTUxMjtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBFRERTQTtcblxuLyoqXG4qIEBwYXJhbSB7QXJyYXl8U3RyaW5nfSBtZXNzYWdlIC0gbWVzc2FnZSBieXRlc1xuKiBAcGFyYW0ge0FycmF5fFN0cmluZ3xLZXlQYWlyfSBzZWNyZXQgLSBzZWNyZXQgYnl0ZXMgb3IgYSBrZXlwYWlyXG4qIEByZXR1cm5zIHtTaWduYXR1cmV9IC0gc2lnbmF0dXJlXG4qL1xuRUREU0EucHJvdG90eXBlLnNpZ24gPSBmdW5jdGlvbiBzaWduKG1lc3NhZ2UsIHNlY3JldCkge1xuICBtZXNzYWdlID0gcGFyc2VCeXRlcyhtZXNzYWdlKTtcbiAgdmFyIGtleSA9IHRoaXMua2V5RnJvbVNlY3JldChzZWNyZXQpO1xuICB2YXIgciA9IHRoaXMuaGFzaEludChrZXkubWVzc2FnZVByZWZpeCgpLCBtZXNzYWdlKTtcbiAgdmFyIFIgPSB0aGlzLmcubXVsKHIpO1xuICB2YXIgUmVuY29kZWQgPSB0aGlzLmVuY29kZVBvaW50KFIpO1xuICB2YXIgc18gPSB0aGlzLmhhc2hJbnQoUmVuY29kZWQsIGtleS5wdWJCeXRlcygpLCBtZXNzYWdlKVxuICAgICAgICAgICAgICAgLm11bChrZXkucHJpdigpKTtcbiAgdmFyIFMgPSByLmFkZChzXykudW1vZCh0aGlzLmN1cnZlLm4pO1xuICByZXR1cm4gdGhpcy5tYWtlU2lnbmF0dXJlKHsgUjogUiwgUzogUywgUmVuY29kZWQ6IFJlbmNvZGVkIH0pO1xufTtcblxuLyoqXG4qIEBwYXJhbSB7QXJyYXl9IG1lc3NhZ2UgLSBtZXNzYWdlIGJ5dGVzXG4qIEBwYXJhbSB7QXJyYXl8U3RyaW5nfFNpZ25hdHVyZX0gc2lnIC0gc2lnIGJ5dGVzXG4qIEBwYXJhbSB7QXJyYXl8U3RyaW5nfFBvaW50fEtleVBhaXJ9IHB1YiAtIHB1YmxpYyBrZXlcbiogQHJldHVybnMge0Jvb2xlYW59IC0gdHJ1ZSBpZiBwdWJsaWMga2V5IG1hdGNoZXMgc2lnIG9mIG1lc3NhZ2VcbiovXG5FRERTQS5wcm90b3R5cGUudmVyaWZ5ID0gZnVuY3Rpb24gdmVyaWZ5KG1lc3NhZ2UsIHNpZywgcHViKSB7XG4gIG1lc3NhZ2UgPSBwYXJzZUJ5dGVzKG1lc3NhZ2UpO1xuICBzaWcgPSB0aGlzLm1ha2VTaWduYXR1cmUoc2lnKTtcbiAgdmFyIGtleSA9IHRoaXMua2V5RnJvbVB1YmxpYyhwdWIpO1xuICB2YXIgaCA9IHRoaXMuaGFzaEludChzaWcuUmVuY29kZWQoKSwga2V5LnB1YkJ5dGVzKCksIG1lc3NhZ2UpO1xuICB2YXIgU0cgPSB0aGlzLmcubXVsKHNpZy5TKCkpO1xuICB2YXIgUnBsdXNBaCA9IHNpZy5SKCkuYWRkKGtleS5wdWIoKS5tdWwoaCkpO1xuICByZXR1cm4gUnBsdXNBaC5lcShTRyk7XG59O1xuXG5FRERTQS5wcm90b3R5cGUuaGFzaEludCA9IGZ1bmN0aW9uIGhhc2hJbnQoKSB7XG4gIHZhciBoYXNoID0gdGhpcy5oYXNoKCk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKVxuICAgIGhhc2gudXBkYXRlKGFyZ3VtZW50c1tpXSk7XG4gIHJldHVybiB1dGlscy5pbnRGcm9tTEUoaGFzaC5kaWdlc3QoKSkudW1vZCh0aGlzLmN1cnZlLm4pO1xufTtcblxuRUREU0EucHJvdG90eXBlLmtleUZyb21QdWJsaWMgPSBmdW5jdGlvbiBrZXlGcm9tUHVibGljKHB1Yikge1xuICByZXR1cm4gS2V5UGFpci5mcm9tUHVibGljKHRoaXMsIHB1Yik7XG59O1xuXG5FRERTQS5wcm90b3R5cGUua2V5RnJvbVNlY3JldCA9IGZ1bmN0aW9uIGtleUZyb21TZWNyZXQoc2VjcmV0KSB7XG4gIHJldHVybiBLZXlQYWlyLmZyb21TZWNyZXQodGhpcywgc2VjcmV0KTtcbn07XG5cbkVERFNBLnByb3RvdHlwZS5tYWtlU2lnbmF0dXJlID0gZnVuY3Rpb24gbWFrZVNpZ25hdHVyZShzaWcpIHtcbiAgaWYgKHNpZyBpbnN0YW5jZW9mIFNpZ25hdHVyZSlcbiAgICByZXR1cm4gc2lnO1xuICByZXR1cm4gbmV3IFNpZ25hdHVyZSh0aGlzLCBzaWcpO1xufTtcblxuLyoqXG4qICogaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL2RyYWZ0LWpvc2Vmc3Nvbi1lZGRzYS1lZDI1NTE5LTAzI3NlY3Rpb24tNS4yXG4qXG4qIEVERFNBIGRlZmluZXMgbWV0aG9kcyBmb3IgZW5jb2RpbmcgYW5kIGRlY29kaW5nIHBvaW50cyBhbmQgaW50ZWdlcnMuIFRoZXNlIGFyZVxuKiBoZWxwZXIgY29udmVuaWVuY2UgbWV0aG9kcywgdGhhdCBwYXNzIGFsb25nIHRvIHV0aWxpdHkgZnVuY3Rpb25zIGltcGxpZWRcbiogcGFyYW1ldGVycy5cbipcbiovXG5FRERTQS5wcm90b3R5cGUuZW5jb2RlUG9pbnQgPSBmdW5jdGlvbiBlbmNvZGVQb2ludChwb2ludCkge1xuICB2YXIgZW5jID0gcG9pbnQuZ2V0WSgpLnRvQXJyYXkoJ2xlJywgdGhpcy5lbmNvZGluZ0xlbmd0aCk7XG4gIGVuY1t0aGlzLmVuY29kaW5nTGVuZ3RoIC0gMV0gfD0gcG9pbnQuZ2V0WCgpLmlzT2RkKCkgPyAweDgwIDogMDtcbiAgcmV0dXJuIGVuYztcbn07XG5cbkVERFNBLnByb3RvdHlwZS5kZWNvZGVQb2ludCA9IGZ1bmN0aW9uIGRlY29kZVBvaW50KGJ5dGVzKSB7XG4gIGJ5dGVzID0gdXRpbHMucGFyc2VCeXRlcyhieXRlcyk7XG5cbiAgdmFyIGxhc3RJeCA9IGJ5dGVzLmxlbmd0aCAtIDE7XG4gIHZhciBub3JtZWQgPSBieXRlcy5zbGljZSgwLCBsYXN0SXgpLmNvbmNhdChieXRlc1tsYXN0SXhdICYgfjB4ODApO1xuICB2YXIgeElzT2RkID0gKGJ5dGVzW2xhc3RJeF0gJiAweDgwKSAhPT0gMDtcblxuICB2YXIgeSA9IHV0aWxzLmludEZyb21MRShub3JtZWQpO1xuICByZXR1cm4gdGhpcy5jdXJ2ZS5wb2ludEZyb21ZKHksIHhJc09kZCk7XG59O1xuXG5FRERTQS5wcm90b3R5cGUuZW5jb2RlSW50ID0gZnVuY3Rpb24gZW5jb2RlSW50KG51bSkge1xuICByZXR1cm4gbnVtLnRvQXJyYXkoJ2xlJywgdGhpcy5lbmNvZGluZ0xlbmd0aCk7XG59O1xuXG5FRERTQS5wcm90b3R5cGUuZGVjb2RlSW50ID0gZnVuY3Rpb24gZGVjb2RlSW50KGJ5dGVzKSB7XG4gIHJldHVybiB1dGlscy5pbnRGcm9tTEUoYnl0ZXMpO1xufTtcblxuRUREU0EucHJvdG90eXBlLmlzUG9pbnQgPSBmdW5jdGlvbiBpc1BvaW50KHZhbCkge1xuICByZXR1cm4gdmFsIGluc3RhbmNlb2YgdGhpcy5wb2ludENsYXNzO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGVsbGlwdGljID0gcmVxdWlyZSgnLi4vLi4vZWxsaXB0aWMnKTtcbnZhciB1dGlscyA9IGVsbGlwdGljLnV0aWxzO1xudmFyIGFzc2VydCA9IHV0aWxzLmFzc2VydDtcbnZhciBwYXJzZUJ5dGVzID0gdXRpbHMucGFyc2VCeXRlcztcbnZhciBjYWNoZWRQcm9wZXJ0eSA9IHV0aWxzLmNhY2hlZFByb3BlcnR5O1xuXG4vKipcbiogQHBhcmFtIHtFRERTQX0gZWRkc2EgLSBpbnN0YW5jZVxuKiBAcGFyYW0ge09iamVjdH0gcGFyYW1zIC0gcHVibGljL3ByaXZhdGUga2V5IHBhcmFtZXRlcnNcbipcbiogQHBhcmFtIHtBcnJheTxCeXRlPn0gW3BhcmFtcy5zZWNyZXRdIC0gc2VjcmV0IHNlZWQgYnl0ZXNcbiogQHBhcmFtIHtQb2ludH0gW3BhcmFtcy5wdWJdIC0gcHVibGljIGtleSBwb2ludCAoYWthIGBBYCBpbiBlZGRzYSB0ZXJtcylcbiogQHBhcmFtIHtBcnJheTxCeXRlPn0gW3BhcmFtcy5wdWJdIC0gcHVibGljIGtleSBwb2ludCBlbmNvZGVkIGFzIGJ5dGVzXG4qXG4qL1xuZnVuY3Rpb24gS2V5UGFpcihlZGRzYSwgcGFyYW1zKSB7XG4gIHRoaXMuZWRkc2EgPSBlZGRzYTtcbiAgdGhpcy5fc2VjcmV0ID0gcGFyc2VCeXRlcyhwYXJhbXMuc2VjcmV0KTtcbiAgaWYgKGVkZHNhLmlzUG9pbnQocGFyYW1zLnB1YikpXG4gICAgdGhpcy5fcHViID0gcGFyYW1zLnB1YjtcbiAgZWxzZVxuICAgIHRoaXMuX3B1YkJ5dGVzID0gcGFyc2VCeXRlcyhwYXJhbXMucHViKTtcbn1cblxuS2V5UGFpci5mcm9tUHVibGljID0gZnVuY3Rpb24gZnJvbVB1YmxpYyhlZGRzYSwgcHViKSB7XG4gIGlmIChwdWIgaW5zdGFuY2VvZiBLZXlQYWlyKVxuICAgIHJldHVybiBwdWI7XG4gIHJldHVybiBuZXcgS2V5UGFpcihlZGRzYSwgeyBwdWI6IHB1YiB9KTtcbn07XG5cbktleVBhaXIuZnJvbVNlY3JldCA9IGZ1bmN0aW9uIGZyb21TZWNyZXQoZWRkc2EsIHNlY3JldCkge1xuICBpZiAoc2VjcmV0IGluc3RhbmNlb2YgS2V5UGFpcilcbiAgICByZXR1cm4gc2VjcmV0O1xuICByZXR1cm4gbmV3IEtleVBhaXIoZWRkc2EsIHsgc2VjcmV0OiBzZWNyZXQgfSk7XG59O1xuXG5LZXlQYWlyLnByb3RvdHlwZS5zZWNyZXQgPSBmdW5jdGlvbiBzZWNyZXQoKSB7XG4gIHJldHVybiB0aGlzLl9zZWNyZXQ7XG59O1xuXG5jYWNoZWRQcm9wZXJ0eShLZXlQYWlyLCAncHViQnl0ZXMnLCBmdW5jdGlvbiBwdWJCeXRlcygpIHtcbiAgcmV0dXJuIHRoaXMuZWRkc2EuZW5jb2RlUG9pbnQodGhpcy5wdWIoKSk7XG59KTtcblxuY2FjaGVkUHJvcGVydHkoS2V5UGFpciwgJ3B1YicsIGZ1bmN0aW9uIHB1YigpIHtcbiAgaWYgKHRoaXMuX3B1YkJ5dGVzKVxuICAgIHJldHVybiB0aGlzLmVkZHNhLmRlY29kZVBvaW50KHRoaXMuX3B1YkJ5dGVzKTtcbiAgcmV0dXJuIHRoaXMuZWRkc2EuZy5tdWwodGhpcy5wcml2KCkpO1xufSk7XG5cbmNhY2hlZFByb3BlcnR5KEtleVBhaXIsICdwcml2Qnl0ZXMnLCBmdW5jdGlvbiBwcml2Qnl0ZXMoKSB7XG4gIHZhciBlZGRzYSA9IHRoaXMuZWRkc2E7XG4gIHZhciBoYXNoID0gdGhpcy5oYXNoKCk7XG4gIHZhciBsYXN0SXggPSBlZGRzYS5lbmNvZGluZ0xlbmd0aCAtIDE7XG5cbiAgdmFyIGEgPSBoYXNoLnNsaWNlKDAsIGVkZHNhLmVuY29kaW5nTGVuZ3RoKTtcbiAgYVswXSAmPSAyNDg7XG4gIGFbbGFzdEl4XSAmPSAxMjc7XG4gIGFbbGFzdEl4XSB8PSA2NDtcblxuICByZXR1cm4gYTtcbn0pO1xuXG5jYWNoZWRQcm9wZXJ0eShLZXlQYWlyLCAncHJpdicsIGZ1bmN0aW9uIHByaXYoKSB7XG4gIHJldHVybiB0aGlzLmVkZHNhLmRlY29kZUludCh0aGlzLnByaXZCeXRlcygpKTtcbn0pO1xuXG5jYWNoZWRQcm9wZXJ0eShLZXlQYWlyLCAnaGFzaCcsIGZ1bmN0aW9uIGhhc2goKSB7XG4gIHJldHVybiB0aGlzLmVkZHNhLmhhc2goKS51cGRhdGUodGhpcy5zZWNyZXQoKSkuZGlnZXN0KCk7XG59KTtcblxuY2FjaGVkUHJvcGVydHkoS2V5UGFpciwgJ21lc3NhZ2VQcmVmaXgnLCBmdW5jdGlvbiBtZXNzYWdlUHJlZml4KCkge1xuICByZXR1cm4gdGhpcy5oYXNoKCkuc2xpY2UodGhpcy5lZGRzYS5lbmNvZGluZ0xlbmd0aCk7XG59KTtcblxuS2V5UGFpci5wcm90b3R5cGUuc2lnbiA9IGZ1bmN0aW9uIHNpZ24obWVzc2FnZSkge1xuICBhc3NlcnQodGhpcy5fc2VjcmV0LCAnS2V5UGFpciBjYW4gb25seSB2ZXJpZnknKTtcbiAgcmV0dXJuIHRoaXMuZWRkc2Euc2lnbihtZXNzYWdlLCB0aGlzKTtcbn07XG5cbktleVBhaXIucHJvdG90eXBlLnZlcmlmeSA9IGZ1bmN0aW9uIHZlcmlmeShtZXNzYWdlLCBzaWcpIHtcbiAgcmV0dXJuIHRoaXMuZWRkc2EudmVyaWZ5KG1lc3NhZ2UsIHNpZywgdGhpcyk7XG59O1xuXG5LZXlQYWlyLnByb3RvdHlwZS5nZXRTZWNyZXQgPSBmdW5jdGlvbiBnZXRTZWNyZXQoZW5jKSB7XG4gIGFzc2VydCh0aGlzLl9zZWNyZXQsICdLZXlQYWlyIGlzIHB1YmxpYyBvbmx5Jyk7XG4gIHJldHVybiB1dGlscy5lbmNvZGUodGhpcy5zZWNyZXQoKSwgZW5jKTtcbn07XG5cbktleVBhaXIucHJvdG90eXBlLmdldFB1YmxpYyA9IGZ1bmN0aW9uIGdldFB1YmxpYyhlbmMpIHtcbiAgcmV0dXJuIHV0aWxzLmVuY29kZSh0aGlzLnB1YkJ5dGVzKCksIGVuYyk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IEtleVBhaXI7XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBCTiA9IHJlcXVpcmUoJ2JuLmpzJyk7XG52YXIgZWxsaXB0aWMgPSByZXF1aXJlKCcuLi8uLi9lbGxpcHRpYycpO1xudmFyIHV0aWxzID0gZWxsaXB0aWMudXRpbHM7XG52YXIgYXNzZXJ0ID0gdXRpbHMuYXNzZXJ0O1xudmFyIGNhY2hlZFByb3BlcnR5ID0gdXRpbHMuY2FjaGVkUHJvcGVydHk7XG52YXIgcGFyc2VCeXRlcyA9IHV0aWxzLnBhcnNlQnl0ZXM7XG5cbi8qKlxuKiBAcGFyYW0ge0VERFNBfSBlZGRzYSAtIGVkZHNhIGluc3RhbmNlXG4qIEBwYXJhbSB7QXJyYXk8Qnl0ZXM+fE9iamVjdH0gc2lnIC1cbiogQHBhcmFtIHtBcnJheTxCeXRlcz58UG9pbnR9IFtzaWcuUl0gLSBSIHBvaW50IGFzIFBvaW50IG9yIGJ5dGVzXG4qIEBwYXJhbSB7QXJyYXk8Qnl0ZXM+fGJufSBbc2lnLlNdIC0gUyBzY2FsYXIgYXMgYm4gb3IgYnl0ZXNcbiogQHBhcmFtIHtBcnJheTxCeXRlcz59IFtzaWcuUmVuY29kZWRdIC0gUiBwb2ludCBlbmNvZGVkXG4qIEBwYXJhbSB7QXJyYXk8Qnl0ZXM+fSBbc2lnLlNlbmNvZGVkXSAtIFMgc2NhbGFyIGVuY29kZWRcbiovXG5mdW5jdGlvbiBTaWduYXR1cmUoZWRkc2EsIHNpZykge1xuICB0aGlzLmVkZHNhID0gZWRkc2E7XG5cbiAgaWYgKHR5cGVvZiBzaWcgIT09ICdvYmplY3QnKVxuICAgIHNpZyA9IHBhcnNlQnl0ZXMoc2lnKTtcblxuICBpZiAoQXJyYXkuaXNBcnJheShzaWcpKSB7XG4gICAgc2lnID0ge1xuICAgICAgUjogc2lnLnNsaWNlKDAsIGVkZHNhLmVuY29kaW5nTGVuZ3RoKSxcbiAgICAgIFM6IHNpZy5zbGljZShlZGRzYS5lbmNvZGluZ0xlbmd0aClcbiAgICB9O1xuICB9XG5cbiAgYXNzZXJ0KHNpZy5SICYmIHNpZy5TLCAnU2lnbmF0dXJlIHdpdGhvdXQgUiBvciBTJyk7XG5cbiAgaWYgKGVkZHNhLmlzUG9pbnQoc2lnLlIpKVxuICAgIHRoaXMuX1IgPSBzaWcuUjtcbiAgaWYgKHNpZy5TIGluc3RhbmNlb2YgQk4pXG4gICAgdGhpcy5fUyA9IHNpZy5TO1xuXG4gIHRoaXMuX1JlbmNvZGVkID0gQXJyYXkuaXNBcnJheShzaWcuUikgPyBzaWcuUiA6IHNpZy5SZW5jb2RlZDtcbiAgdGhpcy5fU2VuY29kZWQgPSBBcnJheS5pc0FycmF5KHNpZy5TKSA/IHNpZy5TIDogc2lnLlNlbmNvZGVkO1xufVxuXG5jYWNoZWRQcm9wZXJ0eShTaWduYXR1cmUsICdTJywgZnVuY3Rpb24gUygpIHtcbiAgcmV0dXJuIHRoaXMuZWRkc2EuZGVjb2RlSW50KHRoaXMuU2VuY29kZWQoKSk7XG59KTtcblxuY2FjaGVkUHJvcGVydHkoU2lnbmF0dXJlLCAnUicsIGZ1bmN0aW9uIFIoKSB7XG4gIHJldHVybiB0aGlzLmVkZHNhLmRlY29kZVBvaW50KHRoaXMuUmVuY29kZWQoKSk7XG59KTtcblxuY2FjaGVkUHJvcGVydHkoU2lnbmF0dXJlLCAnUmVuY29kZWQnLCBmdW5jdGlvbiBSZW5jb2RlZCgpIHtcbiAgcmV0dXJuIHRoaXMuZWRkc2EuZW5jb2RlUG9pbnQodGhpcy5SKCkpO1xufSk7XG5cbmNhY2hlZFByb3BlcnR5KFNpZ25hdHVyZSwgJ1NlbmNvZGVkJywgZnVuY3Rpb24gU2VuY29kZWQoKSB7XG4gIHJldHVybiB0aGlzLmVkZHNhLmVuY29kZUludCh0aGlzLlMoKSk7XG59KTtcblxuU2lnbmF0dXJlLnByb3RvdHlwZS50b0J5dGVzID0gZnVuY3Rpb24gdG9CeXRlcygpIHtcbiAgcmV0dXJuIHRoaXMuUmVuY29kZWQoKS5jb25jYXQodGhpcy5TZW5jb2RlZCgpKTtcbn07XG5cblNpZ25hdHVyZS5wcm90b3R5cGUudG9IZXggPSBmdW5jdGlvbiB0b0hleCgpIHtcbiAgcmV0dXJuIHV0aWxzLmVuY29kZSh0aGlzLnRvQnl0ZXMoKSwgJ2hleCcpLnRvVXBwZXJDYXNlKCk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFNpZ25hdHVyZTtcbiIsIm1vZHVsZS5leHBvcnRzID0ge1xuICBkb3VibGVzOiB7XG4gICAgc3RlcDogNCxcbiAgICBwb2ludHM6IFtcbiAgICAgIFtcbiAgICAgICAgJ2U2MGZjZTkzYjU5ZTllYzUzMDExYWFiYzIxYzIzZTk3YjJhMzEzNjliODdhNWFlOWM0NGVlODllMmE2ZGVjMGEnLFxuICAgICAgICAnZjdlMzUwNzM5OWU1OTU5MjlkYjk5ZjM0ZjU3OTM3MTAxMjk2ODkxZTQ0ZDIzZjBiZTFmMzJjY2U2OTYxNjgyMSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc4MjgyMjYzMjEyYzYwOWQ5ZWEyYTZlM2UxNzJkZTIzOGQ4YzM5Y2FiZDVhYzFjYTEwNjQ2ZTIzZmQ1ZjUxNTA4JyxcbiAgICAgICAgJzExZjhhODA5ODU1N2RmZTQ1ZTgyNTZlODMwYjYwYWNlNjJkNjEzYWMyZjdiMTdiZWQzMWI2ZWFmZjZlMjZjYWYnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMTc1ZTE1OWY3MjhiODY1YTcyZjk5Y2M2YzZmYzg0NmRlMGI5MzgzM2ZkMjIyMmVkNzNmY2U1YjU1MWU1YjczOScsXG4gICAgICAgICdkMzUwNmUwZDllM2M3OWViYTRlZjk3YTUxZmY3MWY1ZWFjYjU5NTVhZGQyNDM0NWM2ZWZhNmZmZWU5ZmVkNjk1J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzM2M2Q5MGQ0NDdiMDBjOWM5OWNlYWMwNWI2MjYyZWUwNTM0NDFjN2U1NTU1MmZmZTUyNmJhZDhmODNmZjQ2NDAnLFxuICAgICAgICAnNGUyNzNhZGZjNzMyMjIxOTUzYjQ0NTM5N2YzMzYzMTQ1YjlhODkwMDgxOTllY2I2MjAwM2M3ZjNiZWU5ZGU5J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzhiNGI1ZjE2NWRmM2MyYmU4YzYyNDRiNWI3NDU2Mzg4NDNlNGE3ODFhMTViY2QxYjY5Zjc5YTU1ZGZmZGY4MGMnLFxuICAgICAgICAnNGFhZDBhNmY2OGQzMDhiNGIzZmJkNzgxM2FiMGRhMDRmOWUzMzY1NDYxNjJlZTU2YjNlZmYwYzY1ZmQ0ZmQzNidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc3MjNjYmFhNmU1ZGI5OTZkNmJmNzcxYzAwYmQ1NDhjN2I3MDBkYmZmYTZjMGU3N2JjYjYxMTU5MjUyMzJmY2RhJyxcbiAgICAgICAgJzk2ZTg2N2I1NTk1Y2M0OThhOTIxMTM3NDg4ODI0ZDZlMjY2MGEwNjUzNzc5NDk0ODAxZGMwNjlkOWViMzlmNWYnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZWViZmE0ZDQ5M2JlYmY5OGJhNWZlZWM4MTJjMmQzYjUwOTQ3OTYxMjM3YTkxOTgzOWE1MzNlY2EwZTdkZDdmYScsXG4gICAgICAgICc1ZDlhOGNhMzk3MGVmMGYyNjllZTdlZGFmMTc4MDg5ZDlhZTRjZGMzYTcxMWY3MTJkZGZkNGZkYWUxZGU4OTk5J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzEwMGY0NGRhNjk2ZTcxNjcyNzkxZDBhMDliN2JkZTQ1OWYxMjE1YTI5YjNjMDNiZmVmZDc4MzViMzlhNDhkYjAnLFxuICAgICAgICAnY2RkOWUxMzE5MmEwMGI3NzJlYzhmMzMwMGMwOTA2NjZiN2ZmNGExOGZmNTE5NWFjMGZiZDVjZDYyYmM2NWEwOSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdlMTAzMWJlMjYyYzdlZDFiMWRjOTIyN2E0YTA0YzAxN2E3N2Y4ZDQ0NjRmM2IzODUyYzhhY2RlNmU1MzRmZDJkJyxcbiAgICAgICAgJzlkNzA2MTkyODk0MDQwNWU2YmI2YTQxNzY1OTc1MzVhZjI5MmRkNDE5ZTFjZWQ3OWE0NGYxOGYyOTQ1NmEwMGQnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZmVlYTZjYWU0NmQ1NWI1MzBhYzI4MzlmMTQzYmQ3ZWM1Y2Y4YjI2NmE0MWQ2YWY1MmQ1ZTY4OGQ5MDk0Njk2ZCcsXG4gICAgICAgICdlNTdjNmI2Yzk3ZGNlMWJhYjA2ZTRlMTJiZjNlY2Q1Yzk4MWM4OTU3Y2M0MTQ0MmQzMTU1ZGViZjE4MDkwMDg4J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2RhNjdhOTFkOTEwNDljZGNiMzY3YmU0YmU2ZmZjYTNjZmVlZDY1N2Q4MDg1ODNkZTMzZmE5NzhiYzFlYzZjYjEnLFxuICAgICAgICAnOWJhY2FhMzU0ODE2NDJiYzQxZjQ2M2Y3ZWM5NzgwZTVkZWM3YWRjNTA4Zjc0MGExN2U5ZWE4ZTI3YTY4YmUxZCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc1MzkwNGZhYTBiMzM0Y2RkYTZlMDAwOTM1ZWYyMjE1MWVjMDhkMGY3YmIxMTA2OWY1NzU0NWNjYzFhMzdiN2MwJyxcbiAgICAgICAgJzViYzA4N2QwYmM4MDEwNmQ4OGM5ZWNjYWMyMGQzYzFjMTM5OTk5ODFlMTQ0MzQ2OTlkY2IwOTZiMDIyNzcxYzgnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnOGU3YmNkMGJkMzU5ODNhNzcxOWNjYTc3NjRjYTkwNjc3OWI1M2EwNDNhOWI4YmNhZWZmOTU5ZjQzYWQ4NjA0NycsXG4gICAgICAgICcxMGI3NzcwYjJhM2RhNGIzOTQwMzEwNDIwY2E5NTE0NTc5ZTg4ZTJlNDdmZDY4YjNlYTEwMDQ3ZTg0NjAzNzJhJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzM4NWVlZDM0YzFjZGZmMjFlNmQwODE4Njg5YjgxYmRlNzFhN2Y0ZjE4Mzk3ZTY2OTBhODQxZTE1OTljNDM4NjInLFxuICAgICAgICAnMjgzYmViYzNlOGVhMjNmNTY3MDFkZTE5ZTllYmY0NTc2YjMwNGVlYzIwODZkYzhjYzA0NThmZTU1NDJlNTQ1MydcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc2ZjlkOWI4MDNlY2YxOTE2MzdjNzNhNDQxM2RmYTE4MGZkZGY4NGE1OTQ3ZmJjOWM2MDZlZDg2YzNmYWMzYTcnLFxuICAgICAgICAnN2M4MGM2OGU2MDMwNTliYTY5YjhlMmEzMGU0NWM0ZDQ3ZWE0ZGQyZjVjMjgxMDAyZDg2ODkwNjAzYTg0MjE2MCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICczMzIyZDQwMTI0M2M0ZTI1ODJhMjE0N2MxMDRkNmVjYmY3NzRkMTYzZGIwZjVlNTMxM2I3ZTBlNzQyZDBlNmJkJyxcbiAgICAgICAgJzU2ZTcwNzk3ZTk2NjRlZjViZmIwMTliYzRkZGFmOWI3MjgwNWY2M2VhMjg3M2FmNjI0ZjNhMmU5NmMyOGIyYTAnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnODU2NzJjN2QyZGUwYjdkYTJiZDE3NzBkODk2NjU4Njg3NDFiM2Y5YWY3NjQzMzk3NzIxZDc0ZDI4MTM0YWI4MycsXG4gICAgICAgICc3YzQ4MWI5YjViNDNiMmViNjM3NDA0OWJmYTYyYzJlNWU3N2YxN2ZjYzUyOThmNDRjOGUzMDk0Zjc5MDMxM2E2J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzk0OGJmODA5YjE5ODhhNDZiMDZjOWYxOTE5NDEzYjEwZjkyMjZjNjBmNjY4ODMyZmZkOTU5YWY2MGM4MmEwYScsXG4gICAgICAgICc1M2E1NjI4NTZkY2I2NjQ2ZGM2Yjc0YzVkMWMzNDE4YzZkNGRmZjA4Yzk3Y2QyYmVkNGNiN2Y4OGQ4YzhlNTg5J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzYyNjBjZTdmNDYxODAxYzM0ZjA2N2NlMGYwMjg3M2E4ZjFiMGU0NGRmYzY5NzUyYWNjZWNkODE5ZjM4ZmQ4ZTgnLFxuICAgICAgICAnYmMyZGE4MmI2ZmE1YjU3MWE3ZjA5MDQ5Nzc2YTFlZjdlY2QyOTIyMzgwNTFjMTk4YzFhODRlOTViMmI0YWUxNydcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdlNTAzN2RlMGFmYzFkOGQ0M2Q4MzQ4NDE0YmJmNDEwMzA0M2VjOGY1NzViZmRjNDMyOTUzY2M4ZDIwMzdmYTJkJyxcbiAgICAgICAgJzQ1NzE1MzRiYWE5NGQzYjVmOWY5OGQwOWZiOTkwYmRkYmQ1ZjViMDNlYzQ4MWYxMGUwZTVkYzg0MWQ3NTViZGEnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZTA2MzcyYjBmNGEyMDdhZGY1ZWE5MDVlOGYxNzcxYjRlN2U4ZGJkMWM2YTZjNWI3MjU4NjZhMGFlNGZjZTcyNScsXG4gICAgICAgICc3YTkwODk3NGJjZTE4Y2ZlMTJhMjdiYjJhZDVhNDg4Y2Q3NDg0YTc3ODcxMDQ4NzBiMjcwMzRmOTRlZWUzMWRkJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzIxM2M3YTcxNWNkNWQ0NTM1OGQwYmJmOWRjMGNlMDIyMDRiMTBiZGRlMmEzZjU4NTQwYWQ2OTA4ZDA1NTk3NTQnLFxuICAgICAgICAnNGI2ZGFkMGI1YWU0NjI1MDcwMTNhZDA2MjQ1YmExOTBiYjQ4NTBmNWYzNmE3ZWVkZGZmMmMyNzUzNGI0NThmMidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc0ZTdjMjcyYTdhZjRiMzRlOGRiYjkzNTJhNTQxOWE4N2UyODM4YzcwYWRjNjJjZGRmMGNjM2EzYjA4ZmJkNTNjJyxcbiAgICAgICAgJzE3NzQ5Yzc2NmM5ZDBiMThlMTZmZDA5ZjZkZWY2ODFiNTMwYjk2MTRiZmY3ZGQzM2UwYjM5NDE4MTdkY2FhZTYnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZmVhNzRlM2RiZTc3OGIxYjEwZjIzOGFkNjE2ODZhYTVjNzZlM2RiMmJlNDMwNTc2MzI0MjdlMjg0MGZiMjdiNicsXG4gICAgICAgICc2ZTA1NjhkYjliMGIxMzI5N2NmNjc0ZGVjY2I2YWY5MzEyNmI1OTZiOTczZjdiNzc3MDFkM2RiN2YyM2NiOTZmJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzc2ZTY0MTEzZjY3N2NmMGUxMGEyNTcwZDU5OTk2OGQzMTU0NGUxNzliNzYwNDMyOTUyYzAyYTQ0MTdiZGRlMzknLFxuICAgICAgICAnYzkwZGRmOGRlZTRlOTVjZjU3NzA2NmQ3MDY4MWYwZDM1ZTJhMzNkMmI1NmQyMDMyYjRiMTc1MmQxOTAxYWMwMSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdjNzM4YzU2YjAzYjJhYmUxZTgyODFiYWE3NDNmOGY5YThmN2NjNjQzZGYyNmNiZWUzYWIxNTAyNDJiY2JiODkxJyxcbiAgICAgICAgJzg5M2ZiNTc4OTUxYWQyNTM3ZjcxOGYyZWFjYmZiYmJiODIzMTRlZWY3ODgwY2ZlOTE3ZTczNWQ5Njk5YTg0YzMnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZDg5NTYyNjU0OGI2NWI4MWUyNjRjNzYzN2M5NzI4NzdkMWQ3MmU1ZjNhOTI1MDE0MzcyZTlmNjU4OGY2YzE0YicsXG4gICAgICAgICdmZWJmYWEzOGYyYmM3ZWFlNzI4ZWM2MDgxOGMzNDBlYjAzNDI4ZDYzMmJiMDY3ZTE3OTM2M2VkNzVkN2Q5OTFmJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2I4ZGE5NDAzMmE5NTc1MThlYjBmNjQzMzU3MWU4NzYxY2VmZmM3MzY5M2U4NGVkZDQ5MTUwYTU2NGY2NzZlMDMnLFxuICAgICAgICAnMjgwNGRmYTQ0ODA1YTFlNGQ3Yzk5Y2M5NzYyODA4YjA5MmNjNTg0ZDk1ZmYzYjUxMTQ4OGU0ZTc0ZWZkZjZlNydcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdlODBmZWExNDQ0MWZiMzNhN2Q4YWRhYjk0NzVkN2ZhYjIwMTllZmZiNTE1NmE3OTJmMWExMTc3OGUzYzBkZjVkJyxcbiAgICAgICAgJ2VlZDFkZTdmNjM4ZTAwNzcxZTg5NzY4Y2EzY2E5NDQ3MmQxNTVlODBhZjMyMmVhOWZjYjQyOTFiNmFjOWVjNzgnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnYTMwMTY5N2JkZmNkNzA0MzEzYmE0OGU1MWQ1Njc1NDNmMmExODIwMzFlZmQ2OTE1ZGRjMDdiYmNjNGUxNjA3MCcsXG4gICAgICAgICc3MzcwZjkxY2ZiNjdlNGY1MDgxODA5ZmEyNWQ0MGY5YjE3MzVkYmY3YzBhMTFhMTMwYzBkMWEwNDFlMTc3ZWExJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzkwYWQ4NWIzODlkNmI5MzY0NjNmOWQwNTEyNjc4ZGUyMDhjYzMzMGIxMTMwN2ZmZmFiN2FjNjNlM2ZiMDRlZDQnLFxuICAgICAgICAnZTUwN2EzNjIwYTM4MjYxYWZmZGNiZDk0MjcyMjJiODM5YWVmYWJlMTU4Mjg5NGQ5OTFkNGQ0OGNiNmVmMTUwJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzhmNjhiOWQyZjYzYjVmMzM5MjM5YzFhZDk4MWYxNjJlZTg4YzU2Nzg3MjNlYTMzNTFiN2I0NDRjOWVjNGMwZGEnLFxuICAgICAgICAnNjYyYTlmMmRiYTA2Mzk4NmRlMWQ5MGMyYjZiZTIxNWRiYmVhMmNmZTk1NTEwYmZkZjIzY2JmNzk1MDFmZmY4MidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdlNGYzZmIwMTc2YWY4NWQ2NWZmOTlmZjkxOThjMzYwOTFmNDhlODY1MDM2ODFlM2U2Njg2ZmQ1MDUzMjMxZTExJyxcbiAgICAgICAgJzFlNjM2MzNhZDBlZjRmMWMxNjYxYTZkMGVhMDJiNzI4NmNjN2U3NGVjOTUxZDFjOTgyMmMzODU3NmZlYjczYmMnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnOGMwMGZhOWIxOGViZjMzMWViOTYxNTM3YTQ1YTQyNjZjNzAzNGYyZjBkNGUxZDA3MTZmYjZlYWUyMGVhZTI5ZScsXG4gICAgICAgICdlZmE0NzI2N2ZlYTUyMWExYTlkYzM0M2EzNzM2Yzk3NGMyZmFkYWZhODFlMzZjNTRlN2QyYTRjNjY3MDI0MTRiJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2U3YTI2Y2U2OWRkNDgyOWYzZTEwY2VjMGE5ZTk4ZWQzMTQzZDA4NGYzMDhiOTJjMDk5N2ZkZGZjNjBjYjNlNDEnLFxuICAgICAgICAnMmE3NThlMzAwZmE3OTg0YjQ3MWIwMDZhMWFhZmJiMThkMGE2YjJjMDQyMGU4M2UyMGU4YTk0MjFjZjJjZmQ1MSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdiNjQ1OWUwZWUzNjYyZWM4ZDIzNTQwYzIyM2JjYmRjNTcxY2JjYjk2N2Q3OTQyNGYzY2YyOWViM2RlNmI4MGVmJyxcbiAgICAgICAgJzY3Yzg3NmQwNmYzZTA2ZGUxZGFkZjE2ZTU2NjFkYjNjNGIzYWU2ZDQ4ZTM1YjJmZjMwYmYwYjYxYTcxYmE0NSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdkNjhhODBjODI4MGJiODQwNzkzMjM0YWExMThmMDYyMzFkNmYxZmM2N2U3M2M1YTVkZWRhMGY1YjQ5Njk0M2U4JyxcbiAgICAgICAgJ2RiOGJhOWZmZjRiNTg2ZDAwYzRiMWY5MTc3YjBlMjhiNWIwZTdiOGY3ODQ1Mjk1YTI5NGM4NDI2NmIxMzMxMjAnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMzI0YWVkN2RmNjVjODA0MjUyZGMwMjcwOTA3YTMwYjA5NjEyYWViOTczNDQ5Y2VhNDA5NTk4MGZjMjhkM2Q1ZCcsXG4gICAgICAgICc2NDhhMzY1Nzc0YjYxZjJmZjEzMGMwYzM1YWVjMWY0ZjE5MjEzYjBjN2UzMzI4NDM5NjcyMjRhZjk2YWI3Yzg0J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzRkZjljMTQ5MTljZGU2MWY2ZDUxZGZkYmU1ZmVlNWRjZWVjNDE0M2JhOGQxY2E4ODhlOGJkMzczZmQwNTRjOTYnLFxuICAgICAgICAnMzVlYzUxMDkyZDg3MjgwNTA5NzRjMjNhMWQ4NWQ0YjVkNTA2Y2RjMjg4NDkwMTkyZWJhYzA2Y2FkMTBkNWQnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnOWMzOTE5YTg0YTQ3NDg3MGZhZWQ4YTljMWNjNjYwMjE1MjM0ODkwNTRkN2YwMzA4Y2JmYzk5YzhhYzFmOThjZCcsXG4gICAgICAgICdkZGI4NGYwZjRhNGRkZDU3NTg0ZjA0NGJmMjYwZTY0MTkwNTMyNmY3NmM2NGM4ZTZiZTdlNWUwM2Q0ZmM1OTlkJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzYwNTcxNzBiMWRkMTJmZGY4ZGUwNWYyODFkOGUwNmJiOTFlMTQ5M2E4YjkxZDRjYzVhMjEzODIxMjBhOTU5ZTUnLFxuICAgICAgICAnOWExYWYwYjI2YTZhNDgwN2FkZDlhMmRhZjcxZGYyNjI0NjUxNTJiYzNlZTI0YzY1ZTg5OWJlOTMyMzg1YTJhOCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdhNTc2ZGY4ZTIzYTA4NDExNDIxNDM5YTQ1MThkYTMxODgwY2VmMGZiYTdkNGRmMTJiMWE2OTczZWVjYjk0MjY2JyxcbiAgICAgICAgJzQwYTZiZjIwZTc2NjQwYjJjOTJiOTdhZmU1OGNkODJjNDMyZTEwYTdmNTE0ZDlmM2VlOGJlMTFhZTFiMjhlYzgnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNzc3OGE3OGMyOGRlYzNlMzBhMDVmZTk2MjlkZThjMzhiYjMwZDFmNWNmOWEzYTIwOGY3NjM4ODliZTU4YWQ3MScsXG4gICAgICAgICczNDYyNmQ5YWI1YTViMjJmZjcwOThlMTJmMmZmNTgwMDg3YjM4NDExZmYyNGFjNTYzYjUxM2ZjMWZkOWY0M2FjJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzkyODk1NWVlNjM3YTg0NDYzNzI5ZmQzMGU3YWZkMmVkNWY5NjI3NGU1YWQ3ZTVjYjA5ZWRhOWMwNmQ5MDNhYycsXG4gICAgICAgICdjMjU2MjEwMDNkM2Y0MmE4MjdiNzhhMTMwOTNhOTVlZWFjM2QyNmVmYThhOGQ4M2ZjNTE4MGU5MzViY2QwOTFmJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzg1ZDBmZWYzZWM2ZGIxMDkzOTkwNjRmM2EwZTNiMjg1NTY0NWI0YTkwN2FkMzU0NTI3YWFlNzUxNjNkODI3NTEnLFxuICAgICAgICAnMWYwMzY0ODQxM2EzOGMwYmUyOWQ0OTZlNTgyY2Y1NjYzZTg3NTFlOTY4NzczMzE1ODJjMjM3YTI0ZWIxZjk2MidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdmZjJiMGRjZTk3ZWVjZTk3YzFjOWI2MDQxNzk4Yjg1ZGZkZmI2ZDg4ODJkYTIwMzA4ZjU0MDQ4MjQ1MjYwODdlJyxcbiAgICAgICAgJzQ5M2QxM2ZlZjUyNGJhMTg4YWY0YzRkYzU0ZDA3OTM2YzdiN2VkNmZiOTBlMmNlYjJjOTUxZTAxZjBjMjk5MDcnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnODI3ZmJiZTRiMWU4ODBlYTllZDJiMmU2MzAxYjIxMmI1N2YxZWUxNDhjZDZkZDI4NzgwZTVlMmNmODU2ZTI0MScsXG4gICAgICAgICdjNjBmOWM5MjNjNzI3YjBiNzFiZWYyYzY3ZDFkMTI2ODdmZjdhNjMxODY5MDMxNjZkNjA1YjY4YmFlYzI5M2VjJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2VhYTY0OWYyMWY1MWJkYmFlN2JlNGFlMzRjZTZlNTIxN2E1OGZkY2U3ZjQ3ZjlhYTdmM2I1OGZhMjEyMGUyYjMnLFxuICAgICAgICAnYmUzMjc5ZWQ1YmJiYjAzYWM2OWE4MGY4OTg3OWFhNWEwMWE2Yjk2NWYxM2Y3ZTU5ZDQ3YTUzMDViYTVhZDkzZCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdlNGE0MmQ0M2M1Y2YxNjlkOTM5MWRmNmRlY2Y0MmVlNTQxYjZkOGYwYzlhMTM3NDAxZTIzNjMyZGRhMzRkMjRmJyxcbiAgICAgICAgJzRkOWY5MmU3MTZkMWM3MzUyNmZjOTljY2ZiOGFkMzRjZTg4NmVlZGZhOGQ4ZTRmMTNhN2Y3MTMxZGViYTk0MTQnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMWVjODBmZWYzNjBjYmRkOTU0MTYwZmFkYWIzNTJiNmI5MmI1MzU3NmE4OGZlYTQ5NDcxNzNiOWQ0MzAwYmYxOScsXG4gICAgICAgICdhZWVmZTkzNzU2YjUzNDBkMmYzYTQ5NThhN2FiYmY1ZTAxNDZlNzdmNjI5NWEwN2I2NzFjZGMxY2MxMDdjZWZkJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzE0NmE3NzhjMDQ2NzBjMmY5MWIwMGFmNDY4MGRmYThiY2UzNDkwNzE3ZDU4YmE4ODlkZGI1OTI4MzY2NjQyYmUnLFxuICAgICAgICAnYjMxOGUwZWMzMzU0MDI4YWRkNjY5ODI3ZjlkNGIyODcwYWFhOTcxZDJmN2U1ZWQxZDBiMjk3NDgzZDgzZWZkMCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdmYTUwYzBmNjFkMjJlNWYwN2UzYWNlYmIxYWEwN2IxMjhkMDAxMjIwOWEyOGI5Nzc2ZDc2YTg3OTMxODBlZWY5JyxcbiAgICAgICAgJzZiODRjNjkyMjM5N2ViYTliNzJjZDI4NzIyODFhNjhhNWU2ODMyOTNhNTdhMjEzYjM4Y2Q4ZDdkM2Y0ZjI4MTEnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZGExZDYxZDBjYTcyMWExMWIxYTViZjZiN2Q4OGU4NDIxYTI4OGFiNWQ1YmJhNTIyMGU1M2QzMmI1ZjA2N2VjMicsXG4gICAgICAgICc4MTU3ZjU1YTdjOTkzMDZjNzljMDc2NjE2MWM5MWUyOTY2YTczODk5ZDI3OWI0OGE2NTVmYmEwZjFhZDgzNmYxJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2E4ZTI4MmZmMGM5NzA2OTA3MjE1ZmY5OGU4ZmQ0MTY2MTUzMTFkZTA0NDZmMWUwNjJhNzNiMDYxMGQwNjRlMTMnLFxuICAgICAgICAnN2Y5NzM1NWI4ZGI4MWMwOWFiZmI3ZjNjNWIyNTE1ODg4YjY3OWEzZTUwZGQ2YmQ2Y2VmN2M3MzExMWY0Y2MwYydcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcxNzRhNTNiOWM5YTI4NTg3MmQzOWU1NmU2OTEzY2FiMTVkNTliMWZhNTEyNTA4YzAyMmYzODJkZTgzMTk0OTdjJyxcbiAgICAgICAgJ2NjYzlkYzM3YWJmYzljMTY1N2I0MTU1ZjJjNDdmOWU2NjQ2YjNhMWQ4Y2I5ODU0MzgzZGExM2FjMDc5YWZhNzMnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnOTU5Mzk2OTgxOTQzNzg1YzNkM2U1N2VkZjUwMThjZGJlMDM5ZTczMGU0OTE4YjNkODg0ZmRmZjA5NDc1YjdiYScsXG4gICAgICAgICcyZTdlNTUyODg4YzMzMWRkOGJhMDM4NmE0YjljZDY4NDljNjUzZjY0Yzg3MDkzODVlOWI4YWJmODc1MjRmMmZkJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2QyYTYzYTUwYWU0MDFlNTZkNjQ1YTExNTNiMTA5YThmY2NhMGE0M2Q1NjFmYmEyZGJiNTEzNDBjOWQ4MmIxNTEnLFxuICAgICAgICAnZTgyZDg2ZmI2NDQzZmNiNzU2NWFlZTU4YjI5NDgyMjBhNzBmNzUwYWY0ODRjYTUyZDQxNDIxNzRkY2Y4OTQwNSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc2NDU4N2UyMzM1NDcxZWI4OTBlZTc4OTZkN2NmZGM4NjZiYWNiZGJkMzgzOTMxN2IzNDM2ZjliNDU2MTdlMDczJyxcbiAgICAgICAgJ2Q5OWZjZGQ1YmY2OTAyZTJhZTk2ZGQ2NDQ3YzI5OWExODViOTBhMzkxMzNhZWFiMzU4Mjk5ZTVlOWZhZjY1ODknXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnODQ4MWJkZTBlNGU0ZDg4NWIzYTU0NmQzZTU0OWRlMDQyZjBhYTZjZWEyNTBlN2ZkMzU4ZDZjODZkZDQ1ZTQ1OCcsXG4gICAgICAgICczOGVlN2I4Y2JhNTQwNGRkODRhMjViZjM5Y2VjYjJjYTkwMGE3OWM0MmIyNjJlNTU2ZDY0YjFiNTk3NzkwNTdlJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzEzNDY0YTU3YTc4MTAyYWE2MmI2OTc5YWU4MTdmNDYzN2ZmY2ZlZDNjNGIxY2UzMGJjZDYzMDNmNmNhZjY2NmInLFxuICAgICAgICAnNjliZTE1OTAwNDYxNDU4MGVmN2U0MzM0NTNjY2IwY2E0OGYzMDBhODFkMDk0MmUxM2Y0OTVhOTA3ZjZlY2MyNydcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdiYzRhOWRmNWI3MTNmZTJlOWFlZjQzMGJjYzFkYzk3YTBjZDljY2VkZTJmMjg1ODhjYWRhM2EwZDJkODNmMzY2JyxcbiAgICAgICAgJ2QzYTgxY2E2ZTc4NWMwNjM4MzkzN2FkZjRiNzk4Y2FhNmU4YTlmYmZhNTQ3YjE2ZDc1OGQ2NjY1ODFmMzNjMSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc4YzI4YTk3YmY4Mjk4YmMwZDIzZDhjNzQ5NDUyYTMyZTY5NGI2NWUzMGE5NDcyYTM5NTRhYjMwZmU1MzI0Y2FhJyxcbiAgICAgICAgJzQwYTMwNDYzYTMzMDUxOTMzNzhmZWRmMzFmN2NjMGViN2FlNzg0ZjA0NTFjYjk0NTllNzFkYzczY2JlZjk0ODInXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnOGVhOTY2NjEzOTUyN2E4YzFkZDk0Y2U0ZjA3MWZkMjNjOGIzNTBjNWE0YmIzMzc0OGM0YmExMTFmYWNjYWUwJyxcbiAgICAgICAgJzYyMGVmYWJiYzhlZTI3ODJlMjRlN2MwY2ZiOTVjNWQ3MzViNzgzYmU5Y2YwZjhlOTU1YWYzNGEzMGU2MmI5NDUnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZGQzNjI1ZmFlZjViYTA2MDc0NjY5NzE2YmJkMzc4OGQ4OWJkZGU4MTU5NTk5NjgwOTJmNzZjYzRlYjlhOTc4NycsXG4gICAgICAgICc3YTE4OGZhMzUyMGUzMGQ0NjFkYTI1MDEwNDU3MzFjYTk0MTQ2MTk4Mjg4MzM5NTkzN2Y2OGQwMGM2NDRhNTczJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2Y3MTBkNzlkOWViOTYyMjk3ZTRmNjIzMmI0MGU4ZjdmZWIyYmM2MzgxNDYxNGQ2OTJjMTJkZTc1MjQwODIyMWUnLFxuICAgICAgICAnZWE5OGU2NzIzMmQzYjMyOTVkM2I1MzU1MzIxMTVjY2FjODYxMmM3MjE4NTE2MTc1MjZhZTQ3YTljNzdiZmM4MidcbiAgICAgIF1cbiAgICBdXG4gIH0sXG4gIG5hZjoge1xuICAgIHduZDogNyxcbiAgICBwb2ludHM6IFtcbiAgICAgIFtcbiAgICAgICAgJ2Y5MzA4YTAxOTI1OGMzMTA0OTM0NGY4NWY4OWQ1MjI5YjUzMWM4NDU4MzZmOTliMDg2MDFmMTEzYmNlMDM2ZjknLFxuICAgICAgICAnMzg4ZjdiMGY2MzJkZTgxNDBmZTMzN2U2MmEzN2YzNTY2NTAwYTk5OTM0YzIyMzFiNmNiOWZkNzU4NGI4ZTY3MidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcyZjhiZGU0ZDFhMDcyMDkzNTViNGE3MjUwYTVjNTEyOGU4OGI4NGJkZGM2MTlhYjdjYmE4ZDU2OWIyNDBlZmU0JyxcbiAgICAgICAgJ2Q4YWMyMjI2MzZlNWUzZDZkNGRiYTlkZGE2YzljNDI2Zjc4ODI3MWJhYjBkNjg0MGRjYTg3ZDNhYTZhYzYyZDYnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNWNiZGYwNjQ2ZTVkYjRlYWEzOThmMzY1ZjJlYTdhMGUzZDQxOWI3ZTAzMzBlMzljZTkyYmRkZWRjYWM0ZjliYycsXG4gICAgICAgICc2YWViY2E0MGJhMjU1OTYwYTMxNzhkNmQ4NjFhNTRkYmE4MTNkMGI4MTNmZGU3YjVhNTA4MjYyODA4NzI2NGRhJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2FjZDQ4NGUyZjBjN2Y2NTMwOWFkMTc4YTlmNTU5YWJkZTA5Nzk2OTc0YzU3ZTcxNGMzNWYxMTBkZmMyN2NjYmUnLFxuICAgICAgICAnY2MzMzg5MjFiMGE3ZDlmZDY0MzgwOTcxNzYzYjYxZTlhZGQ4ODhhNDM3NWY4ZTBmMDVjYzI2MmFjNjRmOWMzNydcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc3NzRhZTdmODU4YTk0MTFlNWVmNDI0NmI3MGM2NWFhYzU2NDk5ODBiZTVjMTc4OTFiYmVjMTc4OTVkYTAwOGNiJyxcbiAgICAgICAgJ2Q5ODRhMDMyZWI2YjVlMTkwMjQzZGQ1NmQ3YjdiMzY1MzcyZGIxZTJkZmY5ZDZhODMwMWQ3NGM5Yzk1M2M2MWInXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZjI4NzczYzJkOTc1Mjg4YmM3ZDFkMjA1YzM3NDg2NTFiMDc1ZmJjNjYxMGU1OGNkZGVlZGRmOGYxOTQwNWFhOCcsXG4gICAgICAgICdhYjA5MDJlOGQ4ODBhODk3NTgyMTJlYjY1Y2RhZjQ3M2ExYTA2ZGE1MjFmYTkxZjI5YjVjYjUyZGIwM2VkODEnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZDc5MjRkNGY3ZDQzZWE5NjVhNDY1YWUzMDk1ZmY0MTEzMWU1OTQ2ZjNjODVmNzllNDRhZGJjZjhlMjdlMDgwZScsXG4gICAgICAgICc1ODFlMjg3MmE4NmM3MmE2ODM4NDJlYzIyOGNjNmRlZmVhNDBhZjJiZDg5NmQzYTVjNTA0ZGM5ZmY2YTI2YjU4J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2RlZmRlYTRjZGI2Nzc3NTBhNDIwZmVlODA3ZWFjZjIxZWI5ODk4YWU3OWI5NzY4NzY2ZTRmYWEwNGEyZDRhMzQnLFxuICAgICAgICAnNDIxMWFiMDY5NDYzNTE2OGU5OTdiMGVhZDJhOTNkYWVjZWQxZjRhMDRhOTVjMGY2Y2ZiMTk5ZjY5ZTU2ZWI3NydcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcyYjRlYTBhNzk3YTQ0M2QyOTNlZjVjZmY0NDRmNDk3OWYwNmFjZmViZDdlODZkMjc3NDc1NjU2MTM4Mzg1YjZjJyxcbiAgICAgICAgJzg1ZTg5YmMwMzc5NDVkOTNiMzQzMDgzYjVhMWM4NjEzMWEwMWY2MGM1MDI2OTc2M2I1NzBjODU0ZTVjMDliN2EnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMzUyYmJmNGE0Y2RkMTI1NjRmOTNmYTMzMmNlMzMzMzAxZDlhZDQwMjcxZjgxMDcxODEzNDBhZWYyNWJlNTlkNScsXG4gICAgICAgICczMjFlYjQwNzUzNDhmNTM0ZDU5YzE4MjU5ZGRhM2UxZjRhMWIzYjJlNzFiMTAzOWM2N2JkM2Q4YmNmODE5OThjJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzJmYTIxMDRkNmIzOGQxMWIwMjMwMDEwNTU5ODc5MTI0ZTQyYWI4ZGZlZmY1ZmYyOWRjOWNkYWRkNGVjYWNjM2YnLFxuICAgICAgICAnMmRlMTA2ODI5NWRkODY1YjY0NTY5MzM1YmQ1ZGQ4MDE4MWQ3MGVjZmM4ODI2NDg0MjNiYTc2YjUzMmI3ZDY3J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzkyNDgyNzliMDliNGQ2OGRhYjIxYTliMDY2ZWRkYTgzMjYzYzNkODRlMDk1NzJlMjY5Y2EwY2Q3ZjU0NTM3MTQnLFxuICAgICAgICAnNzMwMTZmN2JmMjM0YWFkZTVkMWFhNzFiZGVhMmIxZmYzZmMwZGUyYTg4NzkxMmZmZTU0YTMyY2U5N2NiMzQwMidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdkYWVkNGYyYmUzYThiZjI3OGU3MDEzMmZiMGJlYjc1MjJmNTcwZTE0NGJmNjE1YzA3ZTk5NmQ0NDNkZWU4NzI5JyxcbiAgICAgICAgJ2E2OWRjZTRhN2Q2Yzk4ZThkNGExYWNhODdlZjhkNzAwM2Y4M2MyMzBmM2FmYTcyNmFiNDBlNTIyOTBiZTFjNTUnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnYzQ0ZDEyYzcwNjVkODEyZThhY2YyOGQ3Y2JiMTlmOTAxMWVjZDllOWZkZjI4MWIwZTZhM2I1ZTg3ZDIyZTdkYicsXG4gICAgICAgICcyMTE5YTQ2MGNlMzI2Y2RjNzZjNDU5MjZjOTgyZmRhYzBlMTA2ZTg2MWVkZjYxYzVhMDM5MDYzZjBlMGU2NDgyJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzZhMjQ1YmY2ZGM2OTg1MDRjODlhMjBjZmRlZDYwODUzMTUyYjY5NTMzNmMyODA2M2I2MWM2NWNiZDI2OWU2YjQnLFxuICAgICAgICAnZTAyMmNmNDJjMmJkNGE3MDhiM2Y1MTI2ZjE2YTI0YWQ4YjMzYmE0OGQwNDIzYjZlZmQ1ZTYzNDgxMDBkOGE4MidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcxNjk3ZmZhNmZkOWRlNjI3YzA3N2UzZDJmZTU0MTA4NGNlMTMzMDBiMGJlYzExNDZmOTVhZTU3ZjBkMGJkNmE1JyxcbiAgICAgICAgJ2I5YzM5OGYxODY4MDZmNWQyNzU2MTUwNmU0NTU3NDMzYTJjZjE1MDA5ZTQ5OGFlN2FkZWU5ZDYzZDAxYjIzOTYnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNjA1YmRiMDE5OTgxNzE4Yjk4NmQwZjA3ZTgzNGNiMGQ5ZGViODM2MGZmYjdmNjFkZjk4MjM0NWVmMjdhNzQ3OScsXG4gICAgICAgICcyOTcyZDJkZTRmOGQyMDY4MWE3OGQ5M2VjOTZmZTIzYzI2YmZhZTg0ZmIxNGRiNDNiMDFlMWU5MDU2YjhjNDknXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNjJkMTRkYWI0MTUwYmY0OTc0MDJmZGM0NWEyMTVlMTBkY2IwMWMzNTQ5NTliMTBjZmUzMWM3ZTlkODdmZjMzZCcsXG4gICAgICAgICc4MGZjMDZiZDhjYzViMDEwOTgwODhhMTk1MGVlZDBkYjAxYWExMzI5NjdhYjQ3MjIzNWY1NjQyNDgzYjI1ZWFmJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzgwYzYwYWQwMDQwZjI3ZGFkZTViNGIwNmM0MDhlNTZiMmM1MGU5ZjU2YjliOGI0MjVlNTU1YzJmODYzMDhiNmYnLFxuICAgICAgICAnMWMzODMwM2YxY2M1YzMwZjI2ZTY2YmFkN2ZlNzJmNzBhNjVlZWQ0Y2JlNzAyNGViMWFhMDFmNTY0MzBiZDU3YSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc3YTkzNzVhZDYxNjdhZDU0YWE3NGM2MzQ4Y2M1NGQzNDRjYzVkYzk0ODdkODQ3MDQ5ZDVlYWJiMGZhMDNjOGZiJyxcbiAgICAgICAgJ2QwZTNmYTllY2E4NzI2OTA5NTU5ZTBkNzkyNjkwNDZiZGM1OWVhMTBjNzBjZTJiMDJkNDk5ZWMyMjRkYzdmNydcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdkNTI4ZWNkOWI2OTZiNTRjOTA3YTllZDA0NTQ0N2E3OWJiNDA4ZWMzOWI2OGRmNTA0YmI1MWY0NTliYzNmZmM5JyxcbiAgICAgICAgJ2VlY2Y0MTI1MzEzNmU1Zjk5OTY2ZjIxODgxZmQ2NTZlYmM0MzQ1NDA1YzUyMGRiYzA2MzQ2NWI1MjE0MDk5MzMnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNDkzNzBhNGI1ZjQzNDEyZWEyNWY1MTRlOGVjZGFkMDUyNjYxMTVlNGE3ZWNiMTM4NzIzMTgwOGY4YjQ1OTYzJyxcbiAgICAgICAgJzc1OGYzZjQxYWZkNmVkNDI4YjMwODFiMDUxMmZkNjJhNTRjM2YzYWZiYjViNjc2NGI2NTMwNTJhMTI5NDljOWEnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNzdmMjMwOTM2ZWU4OGNiYmQ3M2RmOTMwZDY0NzAyZWY4ODFkODExZTBlMTQ5OGUyZjFjMTNlYjFmYzM0NWQ3NCcsXG4gICAgICAgICc5NThlZjQyYTc4ODZiNjQwMGEwODI2NmU5YmExYjM3ODk2Yzk1MzMwZDk3MDc3Y2JiZThlYjNjNzY3MWM2MGQ2J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2YyZGFjOTkxY2M0Y2U0YjllYTQ0ODg3ZTVjN2MwYmNlNThjODAwNzRhYjlkNGRiYWViMjg1MzFiNzczOWY1MzAnLFxuICAgICAgICAnZTBkZWRjOWIzYjJmOGRhZDRkYTFmMzJkZWMyNTMxZGY5ZWI1ZmJlYjA1OThlNGZkMWExMTdkYmE3MDNhM2MzNydcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc0NjNiM2Q5ZjY2MjYyMWZiMWI0YmU4ZmJiZTI1MjAxMjVhMjE2Y2RmYzlkYWUzZGViY2JhNDg1MGM2OTBkNDViJyxcbiAgICAgICAgJzVlZDQzMGQ3OGMyOTZjMzU0MzExNDMwNmRkODYyMmQ3YzYyMmUyN2M5NzBhMWRlMzFjYjM3N2IwMWFmNzMwN2UnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZjE2ZjgwNDI0NGU0NmUyYTA5MjMyZDRhZmYzYjU5OTc2Yjk4ZmFjMTQzMjhhMmQxYTMyNDk2YjQ5OTk4ZjI0NycsXG4gICAgICAgICdjZWRhYmQ5YjgyMjAzZjdlMTNkMjA2ZmNkZjRlMzNkOTJhNmM1M2MyNmU1Y2NlMjZkNjU3OTk2MmM0ZTMxZGY2J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2NhZjc1NDI3MmRjODQ1NjNiMDM1MmI3YTE0MzExYWY1NWQyNDUzMTVhY2UyN2M2NTM2OWUxNWY3MTUxZDQxZDEnLFxuICAgICAgICAnY2I0NzQ2NjBlZjM1ZjVmMmE0MWI2NDNmYTVlNDYwNTc1ZjRmYTliNzk2MjIzMmE1YzMyZjkwODMxOGEwNDQ3NidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcyNjAwY2E0YjI4MmNiOTg2Zjg1ZDBmMTcwOTk3OWQ4YjQ0YTA5YzA3Y2I4NmQ3YzEyNDQ5N2JjODZmMDgyMTIwJyxcbiAgICAgICAgJzQxMTliODg3NTNjMTViZDZhNjkzYjAzZmNkZGJiNDVkNWFjNmJlNzRhYjVmMGVmNDRiMGJlOTQ3NWE3ZTRiNDAnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNzYzNWNhNzJkN2U4NDMyYzMzOGVjNTNjZDEyMjIwYmMwMWM0ODY4NWUyNGY3ZGM4YzYwMmE3NzQ2OTk4ZTQzNScsXG4gICAgICAgICc5MWI2NDk2MDk0ODlkNjEzZDFkNWU1OTBmNzhlNmQ3NGVjZmMwNjFkNTcwNDhiYWQ5ZTc2ZjMwMmM1YjljNjEnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNzU0ZTMyMzlmMzI1NTcwY2RiYmY0YTg3ZGVlZThhNjZiN2YyYjMzNDc5ZDQ2OGZiYzFhNTA3NDNiZjU2Y2MxOCcsXG4gICAgICAgICc2NzNmYjg2ZTViZGEzMGZiM2NkMGVkMzA0ZWE0OWEwMjNlZTMzZDAxOTdhNjk1ZDBjNWQ5ODA5M2M1MzY2ODMnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZTNlNmJkMTA3MWExZTk2YWZmNTc4NTljODJkNTcwZjAzMzA4MDA2NjFkMWM5NTJmOWZlMjY5NDY5MWQ5YjllOCcsXG4gICAgICAgICc1OWM5ZTBiYmEzOTRlNzZmNDBjMGFhNTgzNzlhM2NiNmE1YTIyODM5OTNlOTBjNDE2NzAwMmFmNDkyMGUzN2Y1J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzE4NmI0ODNkMDU2YTAzMzgyNmFlNzNkODhmNzMyOTg1YzRjY2IxZjMyYmEzNWY0YjRjYzQ3ZmRjZjA0YWE2ZWInLFxuICAgICAgICAnM2I5NTJkMzJjNjdjZjc3ZTJlMTc0NDZlMjA0MTgwYWIyMWZiODA5MDg5NTEzOGI0YTRhNzk3Zjg2ZTgwODg4YidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdkZjlkNzBhNmI5ODc2Y2U1NDRjOTg1NjFmNGJlNGY3MjU0NDJlNmQyYjczN2Q5YzkxYTgzMjE3MjRjZTA5NjNmJyxcbiAgICAgICAgJzU1ZWIyZGFmZDg0ZDZjY2Q1Zjg2MmI3ODVkYzM5ZDRhYjE1NzIyMjcyMGVmOWRhMjE3YjhjNDVjZjJiYTI0MTcnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNWVkZDVjYzIzYzUxZTg3YTQ5N2NhODE1ZDVkY2UwZjhhYjUyNTU0Zjg0OWVkODk5NWRlNjRjNWYzNGNlNzE0MycsXG4gICAgICAgICdlZmFlOWM4ZGJjMTQxMzA2NjFlOGNlYzAzMGM4OWFkMGMxM2M2NmMwZDE3YTI5MDVjZGM3MDZhYjczOTlhODY4J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzI5MDc5OGMyYjY0NzY4MzBkYTEyZmUwMjI4N2U5ZTc3N2FhM2ZiYTFjMzU1YjE3YTcyMmQzNjJmODQ2MTRmYmEnLFxuICAgICAgICAnZTM4ZGE3NmRjZDQ0MDYyMTk4OGQwMGJjZjc5YWYyNWQ1YjI5YzA5NGRiMmEyMzE0NmQwMDNhZmQ0MTk0M2U3YSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdhZjNjNDIzYTk1ZDlmNWIzMDU0NzU0ZWZhMTUwYWMzOWNkMjk1NTJmZTM2MDI1NzM2MmRmZGVjZWY0MDUzYjQ1JyxcbiAgICAgICAgJ2Y5OGEzZmQ4MzFlYjJiNzQ5YTkzYjBlNmYzNWNmYjQwYzhjZDVhYTY2N2ExNTU4MWJjMmZlZGVkNDk4ZmQ5YzYnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNzY2ZGJiMjRkMTM0ZTc0NWNjY2FhMjhjOTliZjI3NDkwNmJiNjZiMjZkY2Y5OGRmOGQyZmVkNTBkODg0MjQ5YScsXG4gICAgICAgICc3NDRiMTE1MmVhY2JlNWUzOGRjYzg4Nzk4MGRhMzhiODk3NTg0YTY1ZmEwNmNlZGQyYzkyNGY5N2NiYWM1OTk2J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzU5ZGJmNDZmOGM5NDc1OWJhMjEyNzdjMzM3ODRmNDE2NDVmN2I0NGY2YzU5NmE1OGNlOTJlNjY2MTkxYWJlM2UnLFxuICAgICAgICAnYzUzNGFkNDQxNzVmYmMzMDBmNGVhNmNlNjQ4MzA5YTA0MmNlNzM5YTc5MTk3OThjZDg1ZTIxNmM0YTMwN2Y2ZSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdmMTNhZGE5NTEwM2M0NTM3MzA1ZTY5MWU3NGU5YTRhOGRkNjQ3ZTcxMWE5NWU3M2NiNjJkYzYwMThjZmQ4N2I4JyxcbiAgICAgICAgJ2UxMzgxN2I0NGVlMTRkZTY2M2JmNGJjODA4MzQxZjMyNjk0OWUyMWE2YTc1YzI1NzA3Nzg0MTliZGFmNTczM2QnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNzc1NGI0ZmEwZThhY2VkMDZkNDE2N2EyYzU5Y2NhNGNkYTE4NjljMDZlYmFkZmI2NDg4NTUwMDE1YTg4NTIyYycsXG4gICAgICAgICczMGU5M2U4NjRlNjY5ZDgyMjI0Yjk2N2MzMDIwYjhmYThkMWU0ZTM1MGI2Y2JjYzUzN2E0OGI1Nzg0MTE2M2EyJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzk0OGRjYWRmNTk5MGUwNDhhYTM4NzRkNDZhYmVmOWQ3MDE4NThmOTVkZTgwNDFkMmE2ODI4Yzk5ZTIyNjI1MTknLFxuICAgICAgICAnZTQ5MWE0MjUzN2Y2ZTU5N2Q1ZDI4YTMyMjRiMWJjMjVkZjkxNTRlZmJkMmVmMWQyY2JiYTJjYWU1MzQ3ZDU3ZSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc3OTYyNDE0NDUwYzc2YzE2ODljN2I0OGY4MjAyZWMzN2ZiMjI0Y2Y1YWMwYmZhMTU3MDMyOGE4YTNkN2M3N2FiJyxcbiAgICAgICAgJzEwMGI2MTBlYzRmZmI0NzYwZDVjMWZjMTMzZWY2ZjZiMTI1MDdhMDUxZjA0YWM1NzYwYWZhNWIyOWRiODM0MzcnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMzUxNDA4NzgzNDk2NGI1NGIxNWIxNjA2NDRkOTE1NDg1YTE2OTc3MjI1Yjg4NDdiYjBkZDA4NTEzN2VjNDdjYScsXG4gICAgICAgICdlZjBhZmJiMjA1NjIwNTQ0OGUxNjUyYzQ4ZTgxMjdmYzYwMzllNzdjMTVjMjM3OGI3ZTdkMTVhMGRlMjkzMzExJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2QzY2MzMGFkNmI0ODNlNGJjNzljZTJjOWRkOGJjNTQ5OTNlOTQ3ZWI4ZGY3ODdiNDQyOTQzZDNmN2I1MjdlYWYnLFxuICAgICAgICAnOGIzNzhhMjJkODI3Mjc4ZDg5YzVlOWJlOGY5NTA4YWUzYzJhZDQ2MjkwMzU4NjMwYWZiMzRkYjA0ZWVkZTBhNCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcxNjI0ZDg0NzgwNzMyODYwY2UxYzc4ZmNiZmVmZTA4YjJiMjk4MjNkYjkxM2Y2NDkzOTc1YmEwZmY0ODQ3NjEwJyxcbiAgICAgICAgJzY4NjUxY2Y5YjZkYTkwM2UwOTE0NDQ4YzZjZDlkNGNhODk2ODc4ZjUyODJiZTRjOGNjMDZlMmE0MDQwNzg1NzUnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNzMzY2U4MGRhOTU1YThhMjY5MDJjOTU2MzNlNjJhOTg1MTkyNDc0YjVhZjIwN2RhNmRmN2I0ZmQ1ZmM2MWNkNCcsXG4gICAgICAgICdmNTQzNWEyYmQyYmFkZjdkNDg1YTRkOGI4ZGI5ZmNjZTNlMWVmOGUwMjAxZTQ1NzhjNTQ2NzNiYzFkYzVlYTFkJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzE1ZDk0NDEyNTQ5NDUwNjRjZjFhMWMzM2JiZDNiNDlmODk2NmM1MDkyMTcxZTY5OWVmMjU4ZGZhYjgxYzA0NWMnLFxuICAgICAgICAnZDU2ZWIzMGI2OTQ2M2U3MjM0ZjUxMzdiNzNiODQxNzc0MzQ4MDBiYWNlYmZjNjg1ZmMzN2JiZTllZmU0MDcwZCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdhMWQwZmNmMmVjOWRlNjc1YjYxMjEzNmU1Y2U3MGQyNzFjMjE0MTdjOWQyYjhhYWFhYzEzODU5OWQwNzE3OTQwJyxcbiAgICAgICAgJ2VkZDc3ZjUwYmNiNWEzY2FiMmU5MDczNzMwOTY2N2YyNjQxNDYyYTU0MDcwZjNkNTE5MjEyZDM5YzE5N2E2MjknXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZTIyZmJlMTVjMGFmOGNjYzU3ODBjMDczNWY4NGRiZTlhNzkwYmFkZWU4MjQ1YzA2YzdjYTM3MzMxY2IzNjk4MCcsXG4gICAgICAgICdhODU1YmFiYWQ1Y2Q2MGM4OGI0MzBhNjlmNTNhMWE3YTM4Mjg5MTU0OTY0Nzk5YmU0M2QwNmQ3N2QzMWRhMDYnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMzExMDkxZGQ5ODYwZThlMjBlZTEzNDczYzExNTVmNWY2OTYzNWUzOTQ3MDRlYWE3NDAwOTQ1MjI0NmNmYTliMycsXG4gICAgICAgICc2NmRiNjU2Zjg3ZDFmMDRmZmZkMWYwNDc4OGMwNjgzMDg3MWVjNWE2NGZlZWU2ODViZDgwZjBiMTI4NmQ4Mzc0J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzM0YzFmZDA0ZDMwMWJlODliMzFjMDQ0MmQzZTZhYzI0ODgzOTI4YjQ1YTkzNDA3ODE4NjdkNDIzMmVjMmRiZGYnLFxuICAgICAgICAnOTQxNDY4NWU5N2IxYjU5NTRiZDQ2ZjczMDE3NDEzNmQ1N2YxY2VlYjQ4NzQ0M2RjNTMyMTg1N2JhNzNhYmVlJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2YyMTllYTVkNmI1NDcwMWMxYzE0ZGU1YjU1N2ViNDJhOGQxM2YzYWJiY2QwOGFmZmNjMmE1ZTZiMDQ5YjhkNjMnLFxuICAgICAgICAnNGNiOTU5NTdlODNkNDBiMGY3M2FmNDU0NGNjY2Y2YjFmNGIwOGQzYzA3YjI3ZmI4ZDhjMjk2MmE0MDA3NjZkMSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdkN2I4NzQwZjc0YThmYmFhYjFmNjgzZGI4ZjQ1ZGUyNjU0M2E1NDkwYmNhNjI3MDg3MjM2OTEyNDY5YTBiNDQ4JyxcbiAgICAgICAgJ2ZhNzc5NjgxMjhkOWM5MmVlMTAxMGYzMzdhZDQ3MTdlZmYxNWRiNWVkM2MwNDliMzQxMWUwMzE1ZWFhNDU5M2InXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMzJkMzFjMjIyZjhmNmYwZWY4NmY3Yzk4ZDNhMzMzNWVhZDViY2QzMmFiZGQ5NDI4OWZlNGQzMDkxYWE4MjRiZicsXG4gICAgICAgICc1ZjMwMzJmNTg5MjE1NmUzOWNjZDNkNzkxNWI5ZTFkYTJlNmRhYzllNmYyNmU5NjExMThkMTRiODQ2MmUxNjYxJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzc0NjFmMzcxOTE0YWIzMjY3MTA0NWExNTVkOTgzMWVhODc5M2Q3N2NkNTk1OTJjNDM0MGY4NmNiYzE4MzQ3YjUnLFxuICAgICAgICAnOGVjMGJhMjM4Yjk2YmVjMGNiZGRkY2FlMGFhNDQyNTQyZWVlMWZmNTBjOTg2ZWE2YjM5ODQ3YjNjYzA5MmZmNidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdlZTA3OWFkYjFkZjE4NjAwNzQzNTZhMjVhYTM4MjA2YTZkNzE2YjJjM2U2NzQ1M2QyODc2OThiYWQ3YjJiMmQ2JyxcbiAgICAgICAgJzhkYzI0MTJhYWZlM2JlNWM0YzVmMzdlMGVjYzVmOWY2YTQ0Njk4OWFmMDRjNGUyNWViYWFjNDc5ZWMxYzhjMWUnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMTZlYzkzZTQ0N2VjODNmMDQ2N2IxODMwMmVlNjIwZjdlNjVkZTMzMTg3NGM5ZGM3MmJmZDg2MTZiYTlkYTZiNScsXG4gICAgICAgICc1ZTQ2MzExNTBlNjJmYjQwZDBlOGMyYTdjYTU4MDRhMzlkNTgxODZhNTBlNDk3MTM5NjI2Nzc4ZTI1YjA2NzRkJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2VhYTVmOTgwYzI0NWY2ZjAzODk3ODI5MGFmYTcwYjZiZDg4NTU4OTdmOThiNmFhNDg1Yjk2MDY1ZDUzN2JkOTknLFxuICAgICAgICAnZjY1ZjVkM2UyOTJjMmUwODE5YTUyODM5MWM5OTQ2MjRkNzg0ODY5ZDdlNmVhNjdmYjE4MDQxMDI0ZWRjMDdkYydcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc3OGM5NDA3NTQ0YWMxMzI2OTJlZTE5MTBhMDI0Mzk5NThhZTA0ODc3MTUxMzQyZWE5NmM0YjZiMzVhNDlmNTEnLFxuICAgICAgICAnZjNlMDMxOTE2OWViOWI4NWQ1NDA0Nzk1NTM5YTVlNjhmYTFmYmQ1ODNjMDY0ZDI0NjJiNjc1ZjE5NGEzZGRiNCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc0OTRmNGJlMjE5YTFhNzcwMTZkY2Q4Mzg0MzFhZWEwMDAxY2RjOGFlN2E2ZmM2ODg3MjY1NzhkOTcwMjg1N2E1JyxcbiAgICAgICAgJzQyMjQyYTk2OTI4M2E1ZjMzOWJhN2YwNzVlMzZiYTJhZjkyNWNlMzBkNzY3ZWQ2ZTU1ZjRiMDMxODgwZDU2MmMnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnYTU5OGE4MDMwZGE2ZDg2YzZiYzdmMmY1MTQ0ZWE1NDlkMjgyMTFlYTU4ZmFhNzBlYmY0YzFlNjY1YzFmZTliNScsXG4gICAgICAgICcyMDRiNWQ2Zjg0ODIyYzMwN2U0YjRhNzE0MDczN2FlYzIzZmM2M2I2NWIzNWY4NmExMDAyNmRiZDJkODY0ZTZiJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2M0MTkxNjM2NWFiYjJiNWQwOTE5MmY1ZjJkYmVhZmVjMjA4ZjAyMGYxMjU3MGExODRkYmFkYzNlNTg1OTU5OTcnLFxuICAgICAgICAnNGYxNDM1MWQwMDg3ZWZhNDlkMjQ1YjMyODk4NDk4OWQ1Y2FmOTQ1MGYzNGJmYzBlZDE2ZTk2YjU4ZmE5OTEzJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzg0MWQ2MDYzYTU4NmZhNDc1YTcyNDYwNGRhMDNiYzViOTJhMmUwZDJlMGEzNmFjZmU0YzczYTU1MTQ3NDI4ODEnLFxuICAgICAgICAnNzM4NjdmNTljMDY1OWU4MTkwNGY5YTFjNzU0MzY5OGU2MjU2MmQ2NzQ0YzE2OWNlN2EzNmRlMDFhOGQ2MTU0J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzVlOTViYjM5OWE2OTcxZDM3NjAyNjk0N2Y4OWJkZTJmMjgyYjMzODEwOTI4YmU0ZGVkMTEyYWM0ZDcwZTIwZDUnLFxuICAgICAgICAnMzlmMjNmMzY2ODA5MDg1YmVlYmZjNzExODEzMTM3NzVhOTljOWFlZDdkOGJhMzhiMTYxMzg0Yzc0NjAxMjg2NSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICczNmU0NjQxYTUzOTQ4ZmQ0NzZjMzlmOGE5OWZkOTc0ZTVlYzA3NTY0YjUzMTVkOGJmOTk0NzFiY2EwZWYyZjY2JyxcbiAgICAgICAgJ2QyNDI0YjFiMWFiZTRlYjgxNjQyMjdiMDg1YzlhYTk0NTZlYTEzNDkzZmQ1NjNlMDZmZDUxY2Y1Njk0Yzc4ZmMnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMzM2NTgxZWE3YmZiYmIyOTBjMTkxYTJmNTA3YTQxY2Y1NjQzODQyMTcwZTkxNGZhZWFiMjdjMmM1NzlmNzI2JyxcbiAgICAgICAgJ2VhZDEyMTY4NTk1ZmUxYmU5OTI1MjEyOWI2ZTU2YjMzOTFmN2FiMTQxMGNkMWUwZWYzZGNkY2FiZDJmZGEyMjQnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnOGFiODk4MTZkYWRmZDZiNmExZjI2MzRmY2YwMGVjODQwMzc4MTAyNWVkNjg5MGM0ODQ5NzQyNzA2YmQ0M2VkZScsXG4gICAgICAgICc2ZmRjZWYwOWYyZjZkMGEwNDRlNjU0YWVmNjI0MTM2ZjUwM2Q0NTljM2U4OTg0NTg1OGE0N2E5MTI5Y2RkMjRlJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzFlMzNmMWE3NDZjOWM1Nzc4MTMzMzQ0ZDkyOTlmY2FhMjBiMDkzOGU4YWNmZjI1NDRiYjQwMjg0YjhjNWZiOTQnLFxuICAgICAgICAnNjA2NjAyNTdkZDExYjNhYTljOGVkNjE4ZDI0ZWRmZjIzMDZkMzIwZjFkMDMwMTBlMzNhN2QyMDU3ZjNiM2I2J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzg1YjdjMWRjYjNjZWMxYjdlZTdmMzBkZWQ3OWRkMjBhMGVkMWY0Y2MxOGNiY2ZjZmE0MTAzNjFmZDhmMDhmMzEnLFxuICAgICAgICAnM2Q5OGE5Y2RkMDI2ZGQ0M2YzOTA0OGYyNWE4ODQ3ZjRmY2FmYWQxODk1ZDdhNjMzYzZmZWQzYzM1ZTk5OTUxMSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcyOWRmOWZiZDhkOWU0NjUwOTI3NWY0YjEyNWQ2ZDQ1ZDdmYmU5YTNiODc4YTdhZjg3MmEyODAwNjYxYWM1ZjUxJyxcbiAgICAgICAgJ2I0YzRmZTk5Yzc3NWE2MDZlMmQ4ODYyMTc5MTM5ZmZkYTYxZGM4NjFjMDE5ZTU1Y2QyODc2ZWIyYTI3ZDg0YidcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdhMGIxY2FlMDZiMGE4NDdhM2ZlYTZlNjcxYWFmOGFkZmRmZTU4Y2EyZjc2ODEwNWM4MDgyYjJlNDQ5ZmNlMjUyJyxcbiAgICAgICAgJ2FlNDM0MTAyZWRkZTA5NThlYzRiMTlkOTE3YTZhMjhlNmI3MmRhMTgzNGFmZjBlNjUwZjA0OTUwM2EyOTZjZjInXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNGU4Y2VhZmI5YjNlOWExMzZkYzdmZjY3ZTg0MDI5NWI0OTlkZmIzYjIxMzNlNGJhMTEzZjJlNGMwZTEyMWU1JyxcbiAgICAgICAgJ2NmMjE3NDExOGM4YjZkN2E0YjQ4ZjZkNTM0Y2U1Yzc5NDIyYzA4NmE2MzQ2MDUwMmI4MjdjZTYyYTMyNjY4M2MnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZDI0YTQ0ZTA0N2UxOWI2ZjVhZmI4MWM3Y2EyZjY5MDgwYTUwNzY2ODlhMDEwOTE5ZjQyNzI1YzJiNzg5YTMzYicsXG4gICAgICAgICc2ZmI4ZDU1OTFiNDY2ZjhmYzYzZGI1MGYxYzBmMWM2OTAxM2Y5OTY4ODdiODI0NGQyY2RlYzQxN2FmZWE4ZmEzJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2VhMDE2MDZhN2E2YzljZGQyNDlmZGZjZmFjYjk5NTg0MDAxZWRkMjhhYmJhYjc3YjUxMDRlOThlOGUzYjM1ZDQnLFxuICAgICAgICAnMzIyYWY0OTA4YzczMTJiMGNmYmZlMzY5ZjdhN2IzY2RiN2Q0NDk0YmMyODIzNzAwY2ZkNjUyMTg4YTNlYTk4ZCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdhZjhhZGRiZjJiNjYxYzhhNmM2MzI4NjU1ZWI5NjY1MTI1MjAwN2Q4YzVlYTMxYmU0YWQxOTZkZThjZTIxMzFmJyxcbiAgICAgICAgJzY3NDllNjdjMDI5Yjg1ZjUyYTAzNGVhZmQwOTY4MzZiMjUyMDgxODY4MGUyNmFjOGYzZGZiY2RiNzE3NDk3MDAnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZTNhZTE5NzQ1NjZjYTA2Y2M1MTZkNDdlMGZiMTY1YTY3NGEzZGFiY2ZjYTE1ZTcyMmYwZTM0NTBmNDU4ODknLFxuICAgICAgICAnMmFlYWJlN2U0NTMxNTEwMTE2MjE3ZjA3YmY0ZDA3MzAwZGU5N2U0ODc0ZjgxZjUzMzQyMGE3MmVlYjBiZDZhNCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc1OTFlZTM1NTMxM2Q5OTcyMWNmNjk5M2ZmZWQxZTNlMzAxOTkzZmYzZWQyNTg4MDIwNzVlYThjZWQzOTdlMjQ2JyxcbiAgICAgICAgJ2IwZWE1NThhMTEzYzMwYmVhNjBmYzQ3NzU0NjBjNzkwMWZmMGIwNTNkMjVjYTJiZGVlZTk4ZjFhNGJlNWQxOTYnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMTEzOTZkNTVmZGE1NGM0OWYxOWFhOTczMThkOGRhNjFmYTg1ODRlNDdiMDg0OTQ1MDc3Y2YwMzI1NWI1Mjk4NCcsXG4gICAgICAgICc5OThjNzRhOGNkNDVhYzAxMjg5ZDU4MzNhN2JlYjQ3NDRmZjUzNmIwMWIyNTdiZTRjNTc2N2JlYTkzZWE1N2E0J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzNjNWQyYTFiYTM5YzVhMTc5MDAwMDczOGM5ZTBjNDBiOGRjZGZkNTQ2ODc1NGI2NDA1NTQwMTU3ZTAxN2FhN2EnLFxuICAgICAgICAnYjIyODQyNzk5OTVhMzRlMmY5ZDRkZTczOTZmYzE4YjgwZjliOGI5ZmRkMjcwZjY2NjFmNzljYTRjODFiZDI1NydcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdjYzg3MDRiOGE2MGEwZGVmYTNhOTlhNzI5OWYyZTljM2ZiYzM5NWFmYjA0YWMwNzg0MjVlZjhhMTc5M2NjMDMwJyxcbiAgICAgICAgJ2JkZDQ2MDM5ZmVlZDE3ODgxZDFlMDg2MmRiMzQ3ZjhjZjM5NWI3NGZjNGJjZGM0ZTk0MGI3NGUzYWMxZjFiMTMnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnYzUzM2U0ZjdlYTg1NTVhYWNkOTc3N2FjNWNhZDI5Yjk3ZGQ0ZGVmY2NjNTNlZTdlYTIwNDExOWIyODg5YjE5NycsXG4gICAgICAgICc2ZjBhMjU2YmM1ZWZkZjQyOWEyZmI2MjQyZjFhNDNhMmQ5YjkyNWJiNGE0YjNhMjZiYjhlMGY0NWViNTk2MDk2J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2MxNGY4ZjJjY2IyN2Q2ZjEwOWY2ZDA4ZDAzY2M5NmE2OWJhOGMzNGVlYzA3YmJjZjU2NmQ0OGUzM2RhNjU5MycsXG4gICAgICAgICdjMzU5ZDY5MjNiYjM5OGY3ZmQ0NDczZTE2ZmUxYzI4NDc1Yjc0MGRkMDk4MDc1ZTZjMGU4NjQ5MTEzZGMzYTM4J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2E2Y2JjMzA0NmJjNmE0NTBiYWMyNDc4OWZhMTcxMTVhNGM5NzM5ZWQ3NWY4ZjIxY2U0NDFmNzJlMGI5MGU2ZWYnLFxuICAgICAgICAnMjFhZTdmNDY4MGU4ODliYjEzMDYxOWUyYzBmOTVhMzYwY2ViNTczYzcwNjAzMTM5ODYyYWZkNjE3ZmE5YjlmJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzM0N2Q2ZDlhMDJjNDg5MjdlYmZiODZjMTM1OWIxY2FmMTMwYTNjMDI2N2QxMWNlNjM0NGIzOWY5OWQ0M2NjMzgnLFxuICAgICAgICAnNjBlYTdmNjFhMzUzNTI0ZDFjOTg3ZjZlY2VjOTJmMDg2ZDU2NWFiNjg3ODcwY2IxMjY4OWZmMWUzMWM3NDQ0OCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdkYTY1NDVkMjE4MWRiOGQ5ODNmN2RjYjM3NWVmNTg2NmQ0N2M2N2IxYmYzMWM4Y2Y4NTVlZjc0MzdiNzI2NTZhJyxcbiAgICAgICAgJzQ5Yjk2NzE1YWI2ODc4YTc5ZTc4ZjA3Y2U1NjgwYzVkNjY3MzA1MWI0OTM1YmQ4OTdmZWE4MjRiNzdkYzIwOGEnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnYzQwNzQ3Y2M5ZDAxMmNiMWExM2I4MTQ4MzA5YzZkZTdlYzI1ZDY5NDVkNjU3MTQ2YjlkNTk5NGI4ZmViMTExMScsXG4gICAgICAgICc1Y2E1NjA3NTNiZTJhMTJmYzZkZTZjYWYyY2I0ODk1NjVkYjkzNjE1NmI5NTE0ZTFiYjVlODMwMzdlMGZhMmQ0J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzRlNDJjOGVjODJjOTk3OThjY2YzYTYxMGJlODcwZTc4MzM4YzdmNzEzMzQ4YmQzNGM4MjAzZWY0MDM3ZjM1MDInLFxuICAgICAgICAnNzU3MWQ3NGVlNWUwZmI5MmE3YThiMzNhMDc3ODMzNDFhNTQ5MjE0NGNjNTRiY2M0MGE5NDQ3MzY5MzYwNjQzNydcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICczNzc1YWI3MDg5YmM2YWY4MjNhYmEyZTFhZjcwYjIzNmQyNTFjYWRiMGM4Njc0MzI4NzUyMmExYjNiMGRlZGVhJyxcbiAgICAgICAgJ2JlNTJkMTA3YmNmYTA5ZDhiY2I5NzM2YTgyOGNmYTdmYWM4ZGIxN2JmN2E3NmEyYzQyYWQ5NjE0MDkwMThjZjcnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnY2VlMzFjYmY3ZTM0ZWMzNzlkOTRmYjgxNGQzZDc3NWFkOTU0NTk1ZDEzMTRiYTg4NDY5NTllM2U4MmY3NGUyNicsXG4gICAgICAgICc4ZmQ2NGExNGMwNmI1ODljMjZiOTQ3YWUyYmNmNmJmYTAxNDllZjBiZTE0ZWQ0ZDgwZjQ0OGEwMWM0M2IxYzZkJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2I0ZjllYWVhMDliNjkxNzYxOWY2ZWE2YTRlYjU0NjRlZmRkYjU4ZmQ0NWIxZWJlZmNkYzFhMDFkMDhiNDc5ODYnLFxuICAgICAgICAnMzllNWM5OTI1YjVhNTRiMDc0MzNhNGYxOGM2MTcyNmY4YmIxMzFjMDEyY2E1NDJlYjI0YThhYzA3MjAwNjgyYSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdkNDI2M2RmYzNkMmRmOTIzYTAxNzlhNDg5NjZkMzBjZTg0ZTI1MTVhZmMzZGNjYzFiNzc5MDc3OTJlYmNjNjBlJyxcbiAgICAgICAgJzYyZGZhZjA3YTBmNzhmZWIzMGUzMGQ2Mjk1ODUzY2UxODllMTI3NzYwYWQ2Y2Y3ZmFlMTY0ZTEyMmEyMDhkNTQnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNDg0NTc1MjQ4MjBmYTY1YTRmOGQzNWViNjkzMDg1N2MwMDMyYWNjMGE0YTJkZTQyMjIzM2VlZGE4OTc2MTJjNCcsXG4gICAgICAgICcyNWE3NDhhYjM2Nzk3OWQ5ODczM2MzOGExZmExYzJlN2RjNmNjMDdkYjJkNjBhOWFlN2E3NmFhYTQ5YmQwZjc3J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2RmZWVlZjE4ODExMDFmMmNiMTE2NDRmM2EyYWZkZmMyMDQ1ZTE5OTE5MTUyOTIzZjM2N2ExNzY3YzExY2NlZGEnLFxuICAgICAgICAnZWNmYjcwNTZjZjFkZTA0MmY5NDIwYmFiMzk2NzkzYzBjMzkwYmRlNzRiNGJiZGZmMTZhODNhZTA5YTlhNzUxNydcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc2ZDdlZjZiMTc1NDNmODM3M2M1NzNmNDRlMWYzODk4MzVkODliY2JjNjA2MmNlZDM2YzgyZGY4M2I4ZmFlODU5JyxcbiAgICAgICAgJ2NkNDUwZWMzMzU0Mzg5ODZkZmVmYTEwYzU3ZmVhOWJjYzUyMWEwOTU5YjJkODBiYmY3NGIxOTBkY2E3MTJkMTAnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZTc1NjA1ZDU5MTAyYTVhMjY4NDUwMGQzYjk5MWYyZTNmM2M4OGI5MzIyNTU0NzAzNWFmMjVhZjY2ZTA0NTQxZicsXG4gICAgICAgICdmNWM1NDc1NGE4ZjcxZWU1NDBiOWI0ODcyODQ3M2UzMTRmNzI5YWM1MzA4YjA2OTM4MzYwOTkwZTJiZmFkMTI1J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2ViOTg2NjBmNGM0ZGZhYTA2YTJiZTQ1M2Q1MDIwYmM5OWEwYzJlNjBhYmUzODg0NTdkZDQzZmVmYjFlZDYyMGMnLFxuICAgICAgICAnNmNiOWE4ODc2ZDljYjg1MjA2MDlhZjNhZGQyNmNkMjBhMGE3Y2Q4YTk0MTExMzFjZTg1ZjQ0MTAwMDk5MjIzZSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICcxM2U4N2IwMjdkODUxNGQzNTkzOWYyZTY4OTJiMTk5MjIxNTQ1OTY5NDE4ODgzMzZkYzM1NjNlM2I4ZGJhOTQyJyxcbiAgICAgICAgJ2ZlZjVhM2M2ODA1OWE2ZGVjNWQ2MjQxMTRiZjFlOTFhYWMyYjlkYTU2OGQ2YWJlYjI1NzBkNTU2NDZiOGFkZjEnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnZWUxNjMwMjZlOWZkNmZlMDE3YzM4ZjA2YTViZTZmYzEyNTQyNGIzNzFjZTI3MDhlN2JmNDQ5MTY5MWU1NzY0YScsXG4gICAgICAgICcxYWNiMjUwZjI1NWRkNjFjNDNkOTRjY2M2NzBkMGY1OGY0OWFlM2ZhMTViOTY2MjNlNTQzMGRhMGFkNmM2MmIyJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2IyNjhmNWVmOWFkNTFlNGQ3OGRlM2E3NTBjMmRjODliMWU2MjZkNDM1MDU4Njc5OTk5MzJlNWRiMzNhZjNkODAnLFxuICAgICAgICAnNWYzMTBkNGIzYzk5YjllYmIxOWY3N2Q0MWMxZGVlMDE4Y2YwZDM0ZmQ0MTkxNjE0MDAzZTk0NWExMjE2ZTQyMydcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdmZjA3ZjMxMThhOWRmMDM1ZTlmYWQ4NWViNmM3YmZlNDJiMDJmMDFjYTk5Y2VlYTNiZjdmZmRiYTkzYzQ3NTBkJyxcbiAgICAgICAgJzQzODEzNmQ2MDNlODU4YTNhNWM0NDBjMzhlY2NiYWRkYzFkMjk0MjExNGUyZWRkZDQ3NDBkMDk4Y2VkMWYwZDgnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnOGQ4Yjk4NTVjN2MwNTJhMzQxNDZmZDIwZmZiNjU4YmVhNGI5ZjY5ZTBkODI1ZWJlYzE2ZThjM2NlMmI1MjZhMScsXG4gICAgICAgICdjZGI1NTllZWRjMmQ3OWY5MjZiYWY0NGZiODRlYTRkNDRiY2Y1MGZlZTUxZDdjZWIzMGUyZTdmNDYzMDM2NzU4J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzUyZGIwYjUzODRkZmJmMDViZmE5ZDQ3MmQ3YWUyNmRmZTRiODUxY2VjYTkxYjFlYmE1NDI2MzE4MGRhMzJiNjMnLFxuICAgICAgICAnYzNiOTk3ZDA1MGVlNWQ0MjNlYmFmNjZhNmRiOWY1N2IzMTgwYzkwMjg3NTY3OWRlOTI0YjY5ZDg0YTdiMzc1J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2U2MmY5NDkwZDNkNTFkYTYzOTVlZmQyNGU4MDkxOWNjN2QwZjI5YzNmM2ZhNDhjNmZmZjU0M2JlY2JkNDMzNTInLFxuICAgICAgICAnNmQ4OWFkN2JhNDg3NmIwYjIyYzJjYTI4MGM2ODI4NjJmMzQyYzg1OTFmMWRhZjUxNzBlMDdiZmQ5Y2NhZmE3ZCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc3ZjMwZWEyNDc2YjM5OWI0OTU3NTA5Yzg4Zjc3ZDAxOTFhZmEyZmY1Y2I3YjE0ZmQ2ZDhlN2Q2NWFhYWIxMTkzJyxcbiAgICAgICAgJ2NhNWVmN2Q0YjIzMWM5NGMzYjE1Mzg5YTVmNjMxMWU5ZGFmZjdiYjY3YjEwM2U5ODgwZWY0YmZmNjM3YWNhZWMnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNTA5OGZmMWUxZDlmMTRmYjQ2YTIxMGZhZGE2YzkwM2ZlZjBmYjdiNGExZGQxZDlhYzYwYTAzNjE4MDBiN2EwMCcsXG4gICAgICAgICc5NzMxMTQxZDgxZmM4ZjgwODRkMzdjNmU3NTQyMDA2YjNlZTFiNDBkNjBkZmU1MzYyYTViMTMyZmQxN2RkYzAnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMzJiNzhjN2RlOWVlNTEyYTcyODk1YmU2YjljYmVmYTZlMmYzYzRjY2NlNDQ1Yzk2YjlmMmM4MWUyNzc4YWQ1OCcsXG4gICAgICAgICdlZTE4NDlmNTEzZGY3MWUzMmVmYzM4OTZlZTI4MjYwYzczYmI4MDU0N2FlMjI3NWJhNDk3MjM3Nzk0Yzg3NTNjJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2UyY2I3NGZkZGM4ZTlmYmNkMDc2ZWVmMmE3YzcyYjBjZTM3ZDUwZjA4MjY5ZGZjMDc0YjU4MTU1MDU0N2E0ZjcnLFxuICAgICAgICAnZDNhYTJlZDcxYzlkZDIyNDdhNjJkZjA2MjczNmViMGJhZGRlYTllMzYxMjJkMmJlODY0MWFiY2IwMDVjYzRhNCdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc4NDM4NDQ3NTY2ZDRkN2JlZGFkYzI5OTQ5NmFiMzU3NDI2MDA5YTM1ZjIzNWNiMTQxYmUwZDk5Y2QxMGFlM2E4JyxcbiAgICAgICAgJ2M0ZTEwMjA5MTY5ODBhNGRhNWQwMWFjNWU2YWQzMzA3MzRlZjBkNzkwNjYzMWM0ZjIzOTA0MjZiMmVkZDc5MWYnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNDE2MmQ0ODhiODk0MDIwMzliNTg0YzZmYzZjMzA4ODcwNTg3ZDljNDZmNjYwYjg3OGFiNjVjODJjNzExZDY3ZScsXG4gICAgICAgICc2NzE2M2U5MDMyMzYyODlmNzc2ZjIyYzI1ZmI4YTNhZmMxNzMyZjJiODRiNGU5NWRiZGE0N2FlNWEwODUyNjQ5J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzNmYWQzZmE4NGNhZjBmMzRmMGY4OWJmZDJkY2Y1NGZjMTc1ZDc2N2FlYzNlNTA2ODRmM2JhNGE0YmY1ZjY4M2QnLFxuICAgICAgICAnY2QxYmM3Y2I2Y2M0MDdiYjJmMGNhNjQ3YzcxOGE3MzBjZjcxODcyZTdkMGQyYTUzZmEyMGVmY2RmZTYxODI2J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzY3NGYyNjAwYTMwMDdhMDA1NjhjMWE3Y2UwNWQwODE2YzFmYjg0YmYxMzcwNzk4ZjFjNjk1MzJmYWViMWE4NmInLFxuICAgICAgICAnMjk5ZDIxZjk0MTNmMzNiM2VkZjQzYjI1NzAwNDU4MGI3MGRiNTdkYTBiMTgyMjU5ZTA5ZWVjYzY5ZTBkMzhhNSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdkMzJmNGRhNTRhZGU3NGFiYjgxYjgxNWFkMWZiM2IyNjNkODJkNmM2OTI3MTRiY2ZmODdkMjliZDVlZTlmMDhmJyxcbiAgICAgICAgJ2Y5NDI5ZTczOGI4ZTUzYjk2OGU5OTAxNmMwNTk3MDc3ODJlMTRmNDUzNTM1OWQ1ODJmYzQxNjkxMGIzZWVhODcnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMzBlNGU2NzA0MzUzODU1NTZlNTkzNjU3MTM1ODQ1ZDM2ZmJiNjkzMWY3MmIwOGNiMWVkOTU0ZjFlM2NlM2ZmNicsXG4gICAgICAgICc0NjJmOWJjZTYxOTg5ODYzODQ5OTM1MDExM2JiYzliMTBhODc4ZDM1ZGE3MDc0MGRjNjk1YTU1OWViODhkYjdiJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2JlMjA2MjAwM2M1MWNjMzAwNDY4MjkwNDMzMGU0ZGVlN2YzZGNkMTBiMDFlNTgwYmYxOTcxYjA0ZDRjYWQyOTcnLFxuICAgICAgICAnNjIxODhiYzQ5ZDYxZTU0Mjg1NzNkNDhhNzRlMWM2NTViMWM2MTA5MDkwNTY4MmEwZDU1NThlZDcyZGNjYjliYydcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc5MzE0NDQyM2FjZTM0NTFlZDI5ZTBmYjlhYzJhZjIxMWNiNmU4NGE2MDFkZjU5OTNjNDE5ODU5ZmZmNWRmMDRhJyxcbiAgICAgICAgJzdjMTBkZmIxNjRjMzQyNWY1YzcxYTNmOWQ3OTkyMDM4ZjEwNjUyMjRmNzJiYjlkMWQ5MDJhNmQxMzAzN2I0N2MnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnYjAxNWY4MDQ0ZjVmY2JkY2YyMWNhMjZkNmMzNGZiODE5NzgyOTIwNWM3YjdkMmE3Y2I2NjQxOGMxNTdiMTEyYycsXG4gICAgICAgICdhYjhjMWUwODZkMDRlODEzNzQ0YTY1NWIyZGY4ZDVmODNiM2NkYzZmYWEzMDg4YzFkM2FlYTE0NTRlM2ExZDVmJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJ2Q1ZTllMWRhNjQ5ZDk3ZDg5ZTQ4NjgxMTdhNDY1YTNhNGY4YTE4ZGU1N2ExNDBkMzZiM2YyYWYzNDFhMjFiNTInLFxuICAgICAgICAnNGNiMDQ0MzdmMzkxZWQ3MzExMWExM2NjMWQ0ZGQwZGIxNjkzNDY1YzIyNDA0ODBkODk1NWU4NTkyZjI3NDQ3YSdcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICdkM2FlNDEwNDdkZDdjYTA2NWRiZjhlZDc3Yjk5MjQzOTk4MzAwNWNkNzJlMTZkNmY5OTZhNTMxNmQzNjk2NmJiJyxcbiAgICAgICAgJ2JkMWFlYjIxYWQyMmViYjIyYTEwZjAzMDM0MTdjNmQ5NjRmOGNkZDdkZjBhY2E2MTRiMTBkYzE0ZDEyNWFjNDYnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnNDYzZTI3NjNkODg1Zjk1OGZjNjZjZGQyMjgwMGYwYTQ4NzE5N2QwYTgyZTM3N2I0OWY4MGFmODdjODk3YjA2NScsXG4gICAgICAgICdiZmVmYWNkYjBlNWQwZmQ3ZGYzYTMxMWE5NGRlMDYyYjI2YjgwYzYxZmJjOTc1MDhiNzk5OTI2NzFlZjdjYTdmJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzc5ODVmZGZkMTI3YzA1NjdjNmY1M2VjMWJiNjNlYzMxNThlNTk3YzQwYmZlNzQ3YzgzY2RkZmM5MTA2NDE5MTcnLFxuICAgICAgICAnNjAzYzEyZGFmM2Q5ODYyZWYyYjI1ZmUxZGUyODlhZWQyNGVkMjkxZTBlYzY3MDg3MDNhNWJkNTY3ZjMyZWQwMydcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc3NGExYWQ2YjVmNzZlMzlkYjJkZDI0OTQxMGVhYzdmOTllNzRjNTljYjgzZDJkMGVkNWZmMTU0M2RhNzcwM2U5JyxcbiAgICAgICAgJ2NjNjE1N2VmMThjOWM2M2NkNjE5M2Q4MzYzMWJiZWEwMDkzZTA5Njg5NDJlOGMzM2Q1NzM3ZmQ3OTBlMGRiMDgnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnMzA2ODJhNTA3MDMzNzVmNjAyZDQxNjY2NGJhMTliN2ZjOWJhYjQyYzcyNzQ3NDYzYTcxZDA4OTZiMjJmNmRhMycsXG4gICAgICAgICc1NTNlMDRmNmIwMThiNGZhNmM4ZjM5ZTdmMzExZDMxNzYyOTBkMGUwZjE5Y2E3M2YxNzcxNGQ5OTc3YTIyZmY4J1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzllMjE1OGYwZDdjMGQ1ZjI2YzM3OTFlZmVmYTc5NTk3NjU0ZTdhMmIyNDY0ZjUyYjFlZTZjMTM0Nzc2OWVmNTcnLFxuICAgICAgICAnNzEyZmNkZDFiOTA1M2YwOTAwM2EzNDgxZmE3NzYyZTlmZmQ3YzhlZjM1YTM4NTA5ZTJmYmYyNjI5MDA4MzczJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzE3NmUyNjk4OWE0M2M5Y2ZlYmE0MDI5YzIwMjUzOGMyODE3MmU1NjZlM2M0ZmNlNzMyMjg1N2YzYmUzMjdkNjYnLFxuICAgICAgICAnZWQ4Y2M5ZDA0YjI5ZWI4NzdkMjcwYjQ4NzhkYzQzYzE5YWVmZDMxZjRlZWUwOWVlN2I0NzgzNGMxZmE0YjFjMydcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgICc3NWQ0NmVmZWEzNzcxZTZlNjhhYmI4OWExM2FkNzQ3ZWNmMTg5MjM5M2RmYzRmMWI3MDA0Nzg4YzUwMzc0ZGE4JyxcbiAgICAgICAgJzk4NTIzOTBhOTk1MDc2NzlmZDBiODZmZDJiMzlhODY4ZDdlZmMyMjE1MTM0NmUxYTNjYTQ3MjY1ODZhNmJlZDgnXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICAnODA5YTIwYzY3ZDY0OTAwZmZiNjk4YzRjODI1ZjZkNWYyMzEwZmIwNDUxYzg2OTM0NWI3MzE5ZjY0NTYwNTcyMScsXG4gICAgICAgICc5ZTk5NDk4MGQ5OTE3ZTIyYjc2YjA2MTkyN2ZhMDQxNDNkMDk2Y2NjNTQ5NjNlNmE1ZWJmYTVmM2Y4ZTI4NmMxJ1xuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgJzFiMzg5MDNhNDNmN2YxMTRlZDQ1MDBiNGVhYzcwODNmZGVmZWNlMWNmMjljNjM1MjhkNTYzNDQ2Zjk3MmMxODAnLFxuICAgICAgICAnNDAzNmVkYzkzMWE2MGFlODg5MzUzZjc3ZmQ1M2RlNGEyNzA4YjI2YjZmNWRhNzJhZDMzOTQxMTlkYWY0MDhmOSdcbiAgICAgIF1cbiAgICBdXG4gIH1cbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IGV4cG9ydHM7XG52YXIgQk4gPSByZXF1aXJlKCdibi5qcycpO1xudmFyIG1pbkFzc2VydCA9IHJlcXVpcmUoJ21pbmltYWxpc3RpYy1hc3NlcnQnKTtcbnZhciBtaW5VdGlscyA9IHJlcXVpcmUoJ21pbmltYWxpc3RpYy1jcnlwdG8tdXRpbHMnKTtcblxudXRpbHMuYXNzZXJ0ID0gbWluQXNzZXJ0O1xudXRpbHMudG9BcnJheSA9IG1pblV0aWxzLnRvQXJyYXk7XG51dGlscy56ZXJvMiA9IG1pblV0aWxzLnplcm8yO1xudXRpbHMudG9IZXggPSBtaW5VdGlscy50b0hleDtcbnV0aWxzLmVuY29kZSA9IG1pblV0aWxzLmVuY29kZTtcblxuLy8gUmVwcmVzZW50IG51bSBpbiBhIHctTkFGIGZvcm1cbmZ1bmN0aW9uIGdldE5BRihudW0sIHcpIHtcbiAgdmFyIG5hZiA9IFtdO1xuICB2YXIgd3MgPSAxIDw8ICh3ICsgMSk7XG4gIHZhciBrID0gbnVtLmNsb25lKCk7XG4gIHdoaWxlIChrLmNtcG4oMSkgPj0gMCkge1xuICAgIHZhciB6O1xuICAgIGlmIChrLmlzT2RkKCkpIHtcbiAgICAgIHZhciBtb2QgPSBrLmFuZGxuKHdzIC0gMSk7XG4gICAgICBpZiAobW9kID4gKHdzID4+IDEpIC0gMSlcbiAgICAgICAgeiA9ICh3cyA+PiAxKSAtIG1vZDtcbiAgICAgIGVsc2VcbiAgICAgICAgeiA9IG1vZDtcbiAgICAgIGsuaXN1Ym4oeik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHogPSAwO1xuICAgIH1cbiAgICBuYWYucHVzaCh6KTtcblxuICAgIC8vIE9wdGltaXphdGlvbiwgc2hpZnQgYnkgd29yZCBpZiBwb3NzaWJsZVxuICAgIHZhciBzaGlmdCA9IChrLmNtcG4oMCkgIT09IDAgJiYgay5hbmRsbih3cyAtIDEpID09PSAwKSA/ICh3ICsgMSkgOiAxO1xuICAgIGZvciAodmFyIGkgPSAxOyBpIDwgc2hpZnQ7IGkrKylcbiAgICAgIG5hZi5wdXNoKDApO1xuICAgIGsuaXVzaHJuKHNoaWZ0KTtcbiAgfVxuXG4gIHJldHVybiBuYWY7XG59XG51dGlscy5nZXROQUYgPSBnZXROQUY7XG5cbi8vIFJlcHJlc2VudCBrMSwgazIgaW4gYSBKb2ludCBTcGFyc2UgRm9ybVxuZnVuY3Rpb24gZ2V0SlNGKGsxLCBrMikge1xuICB2YXIganNmID0gW1xuICAgIFtdLFxuICAgIFtdXG4gIF07XG5cbiAgazEgPSBrMS5jbG9uZSgpO1xuICBrMiA9IGsyLmNsb25lKCk7XG4gIHZhciBkMSA9IDA7XG4gIHZhciBkMiA9IDA7XG4gIHdoaWxlIChrMS5jbXBuKC1kMSkgPiAwIHx8IGsyLmNtcG4oLWQyKSA+IDApIHtcblxuICAgIC8vIEZpcnN0IHBoYXNlXG4gICAgdmFyIG0xNCA9IChrMS5hbmRsbigzKSArIGQxKSAmIDM7XG4gICAgdmFyIG0yNCA9IChrMi5hbmRsbigzKSArIGQyKSAmIDM7XG4gICAgaWYgKG0xNCA9PT0gMylcbiAgICAgIG0xNCA9IC0xO1xuICAgIGlmIChtMjQgPT09IDMpXG4gICAgICBtMjQgPSAtMTtcbiAgICB2YXIgdTE7XG4gICAgaWYgKChtMTQgJiAxKSA9PT0gMCkge1xuICAgICAgdTEgPSAwO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgbTggPSAoazEuYW5kbG4oNykgKyBkMSkgJiA3O1xuICAgICAgaWYgKChtOCA9PT0gMyB8fCBtOCA9PT0gNSkgJiYgbTI0ID09PSAyKVxuICAgICAgICB1MSA9IC1tMTQ7XG4gICAgICBlbHNlXG4gICAgICAgIHUxID0gbTE0O1xuICAgIH1cbiAgICBqc2ZbMF0ucHVzaCh1MSk7XG5cbiAgICB2YXIgdTI7XG4gICAgaWYgKChtMjQgJiAxKSA9PT0gMCkge1xuICAgICAgdTIgPSAwO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgbTggPSAoazIuYW5kbG4oNykgKyBkMikgJiA3O1xuICAgICAgaWYgKChtOCA9PT0gMyB8fCBtOCA9PT0gNSkgJiYgbTE0ID09PSAyKVxuICAgICAgICB1MiA9IC1tMjQ7XG4gICAgICBlbHNlXG4gICAgICAgIHUyID0gbTI0O1xuICAgIH1cbiAgICBqc2ZbMV0ucHVzaCh1Mik7XG5cbiAgICAvLyBTZWNvbmQgcGhhc2VcbiAgICBpZiAoMiAqIGQxID09PSB1MSArIDEpXG4gICAgICBkMSA9IDEgLSBkMTtcbiAgICBpZiAoMiAqIGQyID09PSB1MiArIDEpXG4gICAgICBkMiA9IDEgLSBkMjtcbiAgICBrMS5pdXNocm4oMSk7XG4gICAgazIuaXVzaHJuKDEpO1xuICB9XG5cbiAgcmV0dXJuIGpzZjtcbn1cbnV0aWxzLmdldEpTRiA9IGdldEpTRjtcblxuZnVuY3Rpb24gY2FjaGVkUHJvcGVydHkob2JqLCBuYW1lLCBjb21wdXRlcikge1xuICB2YXIga2V5ID0gJ18nICsgbmFtZTtcbiAgb2JqLnByb3RvdHlwZVtuYW1lXSA9IGZ1bmN0aW9uIGNhY2hlZFByb3BlcnR5KCkge1xuICAgIHJldHVybiB0aGlzW2tleV0gIT09IHVuZGVmaW5lZCA/IHRoaXNba2V5XSA6XG4gICAgICAgICAgIHRoaXNba2V5XSA9IGNvbXB1dGVyLmNhbGwodGhpcyk7XG4gIH07XG59XG51dGlscy5jYWNoZWRQcm9wZXJ0eSA9IGNhY2hlZFByb3BlcnR5O1xuXG5mdW5jdGlvbiBwYXJzZUJ5dGVzKGJ5dGVzKSB7XG4gIHJldHVybiB0eXBlb2YgYnl0ZXMgPT09ICdzdHJpbmcnID8gdXRpbHMudG9BcnJheShieXRlcywgJ2hleCcpIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBieXRlcztcbn1cbnV0aWxzLnBhcnNlQnl0ZXMgPSBwYXJzZUJ5dGVzO1xuXG5mdW5jdGlvbiBpbnRGcm9tTEUoYnl0ZXMpIHtcbiAgcmV0dXJuIG5ldyBCTihieXRlcywgJ2hleCcsICdsZScpO1xufVxudXRpbHMuaW50RnJvbUxFID0gaW50RnJvbUxFO1xuXG4iLCJtb2R1bGUuZXhwb3J0cz17XG4gIFwiX2FyZ3NcIjogW1xuICAgIFtcbiAgICAgIHtcbiAgICAgICAgXCJyYXdcIjogXCJlbGxpcHRpY0BeNi4wLjBcIixcbiAgICAgICAgXCJzY29wZVwiOiBudWxsLFxuICAgICAgICBcImVzY2FwZWROYW1lXCI6IFwiZWxsaXB0aWNcIixcbiAgICAgICAgXCJuYW1lXCI6IFwiZWxsaXB0aWNcIixcbiAgICAgICAgXCJyYXdTcGVjXCI6IFwiXjYuMC4wXCIsXG4gICAgICAgIFwic3BlY1wiOiBcIj49Ni4wLjAgPDcuMC4wXCIsXG4gICAgICAgIFwidHlwZVwiOiBcInJhbmdlXCJcbiAgICAgIH0sXG4gICAgICBcIi9kYXRhL2dpdGh1Yi9nZW9wYWNrYWdlLWpzL25vZGVfbW9kdWxlcy9icm93c2VyaWZ5LXNpZ25cIlxuICAgIF1cbiAgXSxcbiAgXCJfZnJvbVwiOiBcImVsbGlwdGljQD49Ni4wLjAgPDcuMC4wXCIsXG4gIFwiX2lkXCI6IFwiZWxsaXB0aWNANi40LjBcIixcbiAgXCJfaW5DYWNoZVwiOiB0cnVlLFxuICBcIl9sb2NhdGlvblwiOiBcIi9lbGxpcHRpY1wiLFxuICBcIl9ub2RlVmVyc2lvblwiOiBcIjcuMC4wXCIsXG4gIFwiX25wbU9wZXJhdGlvbmFsSW50ZXJuYWxcIjoge1xuICAgIFwiaG9zdFwiOiBcInBhY2thZ2VzLTE4LWVhc3QuaW50ZXJuYWwubnBtanMuY29tXCIsXG4gICAgXCJ0bXBcIjogXCJ0bXAvZWxsaXB0aWMtNi40LjAudGd6XzE0ODc3OTg4NjY0MjhfMC4zMDUxMDYyMDE5MDc2MTk4M1wiXG4gIH0sXG4gIFwiX25wbVVzZXJcIjoge1xuICAgIFwibmFtZVwiOiBcImluZHV0bnlcIixcbiAgICBcImVtYWlsXCI6IFwiZmVkb3JAaW5kdXRueS5jb21cIlxuICB9LFxuICBcIl9ucG1WZXJzaW9uXCI6IFwiMy4xMC44XCIsXG4gIFwiX3BoYW50b21DaGlsZHJlblwiOiB7fSxcbiAgXCJfcmVxdWVzdGVkXCI6IHtcbiAgICBcInJhd1wiOiBcImVsbGlwdGljQF42LjAuMFwiLFxuICAgIFwic2NvcGVcIjogbnVsbCxcbiAgICBcImVzY2FwZWROYW1lXCI6IFwiZWxsaXB0aWNcIixcbiAgICBcIm5hbWVcIjogXCJlbGxpcHRpY1wiLFxuICAgIFwicmF3U3BlY1wiOiBcIl42LjAuMFwiLFxuICAgIFwic3BlY1wiOiBcIj49Ni4wLjAgPDcuMC4wXCIsXG4gICAgXCJ0eXBlXCI6IFwicmFuZ2VcIlxuICB9LFxuICBcIl9yZXF1aXJlZEJ5XCI6IFtcbiAgICBcIi9icm93c2VyaWZ5LXNpZ25cIixcbiAgICBcIi9jcmVhdGUtZWNkaFwiXG4gIF0sXG4gIFwiX3Jlc29sdmVkXCI6IFwiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZWxsaXB0aWMvLS9lbGxpcHRpYy02LjQuMC50Z3pcIixcbiAgXCJfc2hhc3VtXCI6IFwiY2FjOWFmODc2MmM4NTgzNjE4NzAwM2M4ZGZlMTkzZTVlMmVhZTVkZlwiLFxuICBcIl9zaHJpbmt3cmFwXCI6IG51bGwsXG4gIFwiX3NwZWNcIjogXCJlbGxpcHRpY0BeNi4wLjBcIixcbiAgXCJfd2hlcmVcIjogXCIvZGF0YS9naXRodWIvZ2VvcGFja2FnZS1qcy9ub2RlX21vZHVsZXMvYnJvd3NlcmlmeS1zaWduXCIsXG4gIFwiYXV0aG9yXCI6IHtcbiAgICBcIm5hbWVcIjogXCJGZWRvciBJbmR1dG55XCIsXG4gICAgXCJlbWFpbFwiOiBcImZlZG9yQGluZHV0bnkuY29tXCJcbiAgfSxcbiAgXCJidWdzXCI6IHtcbiAgICBcInVybFwiOiBcImh0dHBzOi8vZ2l0aHViLmNvbS9pbmR1dG55L2VsbGlwdGljL2lzc3Vlc1wiXG4gIH0sXG4gIFwiZGVwZW5kZW5jaWVzXCI6IHtcbiAgICBcImJuLmpzXCI6IFwiXjQuNC4wXCIsXG4gICAgXCJicm9yYW5kXCI6IFwiXjEuMC4xXCIsXG4gICAgXCJoYXNoLmpzXCI6IFwiXjEuMC4wXCIsXG4gICAgXCJobWFjLWRyYmdcIjogXCJeMS4wLjBcIixcbiAgICBcImluaGVyaXRzXCI6IFwiXjIuMC4xXCIsXG4gICAgXCJtaW5pbWFsaXN0aWMtYXNzZXJ0XCI6IFwiXjEuMC4wXCIsXG4gICAgXCJtaW5pbWFsaXN0aWMtY3J5cHRvLXV0aWxzXCI6IFwiXjEuMC4wXCJcbiAgfSxcbiAgXCJkZXNjcmlwdGlvblwiOiBcIkVDIGNyeXB0b2dyYXBoeVwiLFxuICBcImRldkRlcGVuZGVuY2llc1wiOiB7XG4gICAgXCJicmZzXCI6IFwiXjEuNC4zXCIsXG4gICAgXCJjb3ZlcmFsbHNcIjogXCJeMi4xMS4zXCIsXG4gICAgXCJncnVudFwiOiBcIl4wLjQuNVwiLFxuICAgIFwiZ3J1bnQtYnJvd3NlcmlmeVwiOiBcIl41LjAuMFwiLFxuICAgIFwiZ3J1bnQtY2xpXCI6IFwiXjEuMi4wXCIsXG4gICAgXCJncnVudC1jb250cmliLWNvbm5lY3RcIjogXCJeMS4wLjBcIixcbiAgICBcImdydW50LWNvbnRyaWItY29weVwiOiBcIl4xLjAuMFwiLFxuICAgIFwiZ3J1bnQtY29udHJpYi11Z2xpZnlcIjogXCJeMS4wLjFcIixcbiAgICBcImdydW50LW1vY2hhLWlzdGFuYnVsXCI6IFwiXjMuMC4xXCIsXG4gICAgXCJncnVudC1zYXVjZWxhYnNcIjogXCJeOC42LjJcIixcbiAgICBcImlzdGFuYnVsXCI6IFwiXjAuNC4yXCIsXG4gICAgXCJqc2NzXCI6IFwiXjIuOS4wXCIsXG4gICAgXCJqc2hpbnRcIjogXCJeMi42LjBcIixcbiAgICBcIm1vY2hhXCI6IFwiXjIuMS4wXCJcbiAgfSxcbiAgXCJkaXJlY3Rvcmllc1wiOiB7fSxcbiAgXCJkaXN0XCI6IHtcbiAgICBcInNoYXN1bVwiOiBcImNhYzlhZjg3NjJjODU4MzYxODcwMDNjOGRmZTE5M2U1ZTJlYWU1ZGZcIixcbiAgICBcInRhcmJhbGxcIjogXCJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9lbGxpcHRpYy8tL2VsbGlwdGljLTYuNC4wLnRnelwiXG4gIH0sXG4gIFwiZmlsZXNcIjogW1xuICAgIFwibGliXCJcbiAgXSxcbiAgXCJnaXRIZWFkXCI6IFwiNmIwZDJiNzZjYWFlOTE0NzE2NDljOGUyMWYwYjFkM2JhMGY5NjA5MFwiLFxuICBcImhvbWVwYWdlXCI6IFwiaHR0cHM6Ly9naXRodWIuY29tL2luZHV0bnkvZWxsaXB0aWNcIixcbiAgXCJrZXl3b3Jkc1wiOiBbXG4gICAgXCJFQ1wiLFxuICAgIFwiRWxsaXB0aWNcIixcbiAgICBcImN1cnZlXCIsXG4gICAgXCJDcnlwdG9ncmFwaHlcIlxuICBdLFxuICBcImxpY2Vuc2VcIjogXCJNSVRcIixcbiAgXCJtYWluXCI6IFwibGliL2VsbGlwdGljLmpzXCIsXG4gIFwibWFpbnRhaW5lcnNcIjogW1xuICAgIHtcbiAgICAgIFwibmFtZVwiOiBcImluZHV0bnlcIixcbiAgICAgIFwiZW1haWxcIjogXCJmZWRvckBpbmR1dG55LmNvbVwiXG4gICAgfVxuICBdLFxuICBcIm5hbWVcIjogXCJlbGxpcHRpY1wiLFxuICBcIm9wdGlvbmFsRGVwZW5kZW5jaWVzXCI6IHt9LFxuICBcInJlYWRtZVwiOiBcIkVSUk9SOiBObyBSRUFETUUgZGF0YSBmb3VuZCFcIixcbiAgXCJyZXBvc2l0b3J5XCI6IHtcbiAgICBcInR5cGVcIjogXCJnaXRcIixcbiAgICBcInVybFwiOiBcImdpdCtzc2g6Ly9naXRAZ2l0aHViLmNvbS9pbmR1dG55L2VsbGlwdGljLmdpdFwiXG4gIH0sXG4gIFwic2NyaXB0c1wiOiB7XG4gICAgXCJqc2NzXCI6IFwianNjcyBiZW5jaG1hcmtzLyouanMgbGliLyouanMgbGliLyoqLyouanMgbGliLyoqLyoqLyouanMgdGVzdC9pbmRleC5qc1wiLFxuICAgIFwianNoaW50XCI6IFwianNjcyBiZW5jaG1hcmtzLyouanMgbGliLyouanMgbGliLyoqLyouanMgbGliLyoqLyoqLyouanMgdGVzdC9pbmRleC5qc1wiLFxuICAgIFwibGludFwiOiBcIm5wbSBydW4ganNjcyAmJiBucG0gcnVuIGpzaGludFwiLFxuICAgIFwidGVzdFwiOiBcIm5wbSBydW4gbGludCAmJiBucG0gcnVuIHVuaXRcIixcbiAgICBcInVuaXRcIjogXCJpc3RhbmJ1bCB0ZXN0IF9tb2NoYSAtLXJlcG9ydGVyPXNwZWMgdGVzdC9pbmRleC5qc1wiLFxuICAgIFwidmVyc2lvblwiOiBcImdydW50IGRpc3QgJiYgZ2l0IGFkZCBkaXN0L1wiXG4gIH0sXG4gIFwidmVyc2lvblwiOiBcIjYuNC4wXCJcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuZnVuY3Rpb24gY3JlYXRlRXJyb3IobXNnLCBjb2RlLCBwcm9wcykge1xuICAgIHZhciBlcnIgPSAgbXNnIGluc3RhbmNlb2YgRXJyb3IgPyBtc2cgOiBuZXcgRXJyb3IobXNnKTtcbiAgICB2YXIga2V5O1xuXG4gICAgaWYgKGNvZGUgIT0gbnVsbCkge1xuICAgICAgICBlcnIuY29kZSA9IGNvZGU7XG4gICAgfVxuXG4gICAgaWYgKHByb3BzKSB7XG4gICAgICAgIGZvciAoa2V5IGluIHByb3BzKSB7XG4gICAgICAgICAgICBlcnJba2V5XSA9IHByb3BzW2tleV07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZXJyO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNyZWF0ZUVycm9yO1xuIiwiLy8gQ29weXJpZ2h0IEpveWVudCwgSW5jLiBhbmQgb3RoZXIgTm9kZSBjb250cmlidXRvcnMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbi8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGVcbi8vIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZ1xuLy8gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLFxuLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdFxuLy8gcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlXG4vLyBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZFxuLy8gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTU1xuLy8gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRlxuLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTlxuLy8gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sXG4vLyBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Jcbi8vIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEVcbi8vIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG5cbmZ1bmN0aW9uIEV2ZW50RW1pdHRlcigpIHtcbiAgdGhpcy5fZXZlbnRzID0gdGhpcy5fZXZlbnRzIHx8IHt9O1xuICB0aGlzLl9tYXhMaXN0ZW5lcnMgPSB0aGlzLl9tYXhMaXN0ZW5lcnMgfHwgdW5kZWZpbmVkO1xufVxubW9kdWxlLmV4cG9ydHMgPSBFdmVudEVtaXR0ZXI7XG5cbi8vIEJhY2t3YXJkcy1jb21wYXQgd2l0aCBub2RlIDAuMTAueFxuRXZlbnRFbWl0dGVyLkV2ZW50RW1pdHRlciA9IEV2ZW50RW1pdHRlcjtcblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5fZXZlbnRzID0gdW5kZWZpbmVkO1xuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5fbWF4TGlzdGVuZXJzID0gdW5kZWZpbmVkO1xuXG4vLyBCeSBkZWZhdWx0IEV2ZW50RW1pdHRlcnMgd2lsbCBwcmludCBhIHdhcm5pbmcgaWYgbW9yZSB0aGFuIDEwIGxpc3RlbmVycyBhcmVcbi8vIGFkZGVkIHRvIGl0LiBUaGlzIGlzIGEgdXNlZnVsIGRlZmF1bHQgd2hpY2ggaGVscHMgZmluZGluZyBtZW1vcnkgbGVha3MuXG5FdmVudEVtaXR0ZXIuZGVmYXVsdE1heExpc3RlbmVycyA9IDEwO1xuXG4vLyBPYnZpb3VzbHkgbm90IGFsbCBFbWl0dGVycyBzaG91bGQgYmUgbGltaXRlZCB0byAxMC4gVGhpcyBmdW5jdGlvbiBhbGxvd3Ncbi8vIHRoYXQgdG8gYmUgaW5jcmVhc2VkLiBTZXQgdG8gemVybyBmb3IgdW5saW1pdGVkLlxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5zZXRNYXhMaXN0ZW5lcnMgPSBmdW5jdGlvbihuKSB7XG4gIGlmICghaXNOdW1iZXIobikgfHwgbiA8IDAgfHwgaXNOYU4obikpXG4gICAgdGhyb3cgVHlwZUVycm9yKCduIG11c3QgYmUgYSBwb3NpdGl2ZSBudW1iZXInKTtcbiAgdGhpcy5fbWF4TGlzdGVuZXJzID0gbjtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLmVtaXQgPSBmdW5jdGlvbih0eXBlKSB7XG4gIHZhciBlciwgaGFuZGxlciwgbGVuLCBhcmdzLCBpLCBsaXN0ZW5lcnM7XG5cbiAgaWYgKCF0aGlzLl9ldmVudHMpXG4gICAgdGhpcy5fZXZlbnRzID0ge307XG5cbiAgLy8gSWYgdGhlcmUgaXMgbm8gJ2Vycm9yJyBldmVudCBsaXN0ZW5lciB0aGVuIHRocm93LlxuICBpZiAodHlwZSA9PT0gJ2Vycm9yJykge1xuICAgIGlmICghdGhpcy5fZXZlbnRzLmVycm9yIHx8XG4gICAgICAgIChpc09iamVjdCh0aGlzLl9ldmVudHMuZXJyb3IpICYmICF0aGlzLl9ldmVudHMuZXJyb3IubGVuZ3RoKSkge1xuICAgICAgZXIgPSBhcmd1bWVudHNbMV07XG4gICAgICBpZiAoZXIgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICB0aHJvdyBlcjsgLy8gVW5oYW5kbGVkICdlcnJvcicgZXZlbnRcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIEF0IGxlYXN0IGdpdmUgc29tZSBraW5kIG9mIGNvbnRleHQgdG8gdGhlIHVzZXJcbiAgICAgICAgdmFyIGVyciA9IG5ldyBFcnJvcignVW5jYXVnaHQsIHVuc3BlY2lmaWVkIFwiZXJyb3JcIiBldmVudC4gKCcgKyBlciArICcpJyk7XG4gICAgICAgIGVyci5jb250ZXh0ID0gZXI7XG4gICAgICAgIHRocm93IGVycjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBoYW5kbGVyID0gdGhpcy5fZXZlbnRzW3R5cGVdO1xuXG4gIGlmIChpc1VuZGVmaW5lZChoYW5kbGVyKSlcbiAgICByZXR1cm4gZmFsc2U7XG5cbiAgaWYgKGlzRnVuY3Rpb24oaGFuZGxlcikpIHtcbiAgICBzd2l0Y2ggKGFyZ3VtZW50cy5sZW5ndGgpIHtcbiAgICAgIC8vIGZhc3QgY2FzZXNcbiAgICAgIGNhc2UgMTpcbiAgICAgICAgaGFuZGxlci5jYWxsKHRoaXMpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjpcbiAgICAgICAgaGFuZGxlci5jYWxsKHRoaXMsIGFyZ3VtZW50c1sxXSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAzOlxuICAgICAgICBoYW5kbGVyLmNhbGwodGhpcywgYXJndW1lbnRzWzFdLCBhcmd1bWVudHNbMl0pO1xuICAgICAgICBicmVhaztcbiAgICAgIC8vIHNsb3dlclxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMSk7XG4gICAgICAgIGhhbmRsZXIuYXBwbHkodGhpcywgYXJncyk7XG4gICAgfVxuICB9IGVsc2UgaWYgKGlzT2JqZWN0KGhhbmRsZXIpKSB7XG4gICAgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMSk7XG4gICAgbGlzdGVuZXJzID0gaGFuZGxlci5zbGljZSgpO1xuICAgIGxlbiA9IGxpc3RlbmVycy5sZW5ndGg7XG4gICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKVxuICAgICAgbGlzdGVuZXJzW2ldLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59O1xuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLmFkZExpc3RlbmVyID0gZnVuY3Rpb24odHlwZSwgbGlzdGVuZXIpIHtcbiAgdmFyIG07XG5cbiAgaWYgKCFpc0Z1bmN0aW9uKGxpc3RlbmVyKSlcbiAgICB0aHJvdyBUeXBlRXJyb3IoJ2xpc3RlbmVyIG11c3QgYmUgYSBmdW5jdGlvbicpO1xuXG4gIGlmICghdGhpcy5fZXZlbnRzKVxuICAgIHRoaXMuX2V2ZW50cyA9IHt9O1xuXG4gIC8vIFRvIGF2b2lkIHJlY3Vyc2lvbiBpbiB0aGUgY2FzZSB0aGF0IHR5cGUgPT09IFwibmV3TGlzdGVuZXJcIiEgQmVmb3JlXG4gIC8vIGFkZGluZyBpdCB0byB0aGUgbGlzdGVuZXJzLCBmaXJzdCBlbWl0IFwibmV3TGlzdGVuZXJcIi5cbiAgaWYgKHRoaXMuX2V2ZW50cy5uZXdMaXN0ZW5lcilcbiAgICB0aGlzLmVtaXQoJ25ld0xpc3RlbmVyJywgdHlwZSxcbiAgICAgICAgICAgICAgaXNGdW5jdGlvbihsaXN0ZW5lci5saXN0ZW5lcikgP1xuICAgICAgICAgICAgICBsaXN0ZW5lci5saXN0ZW5lciA6IGxpc3RlbmVyKTtcblxuICBpZiAoIXRoaXMuX2V2ZW50c1t0eXBlXSlcbiAgICAvLyBPcHRpbWl6ZSB0aGUgY2FzZSBvZiBvbmUgbGlzdGVuZXIuIERvbid0IG5lZWQgdGhlIGV4dHJhIGFycmF5IG9iamVjdC5cbiAgICB0aGlzLl9ldmVudHNbdHlwZV0gPSBsaXN0ZW5lcjtcbiAgZWxzZSBpZiAoaXNPYmplY3QodGhpcy5fZXZlbnRzW3R5cGVdKSlcbiAgICAvLyBJZiB3ZSd2ZSBhbHJlYWR5IGdvdCBhbiBhcnJheSwganVzdCBhcHBlbmQuXG4gICAgdGhpcy5fZXZlbnRzW3R5cGVdLnB1c2gobGlzdGVuZXIpO1xuICBlbHNlXG4gICAgLy8gQWRkaW5nIHRoZSBzZWNvbmQgZWxlbWVudCwgbmVlZCB0byBjaGFuZ2UgdG8gYXJyYXkuXG4gICAgdGhpcy5fZXZlbnRzW3R5cGVdID0gW3RoaXMuX2V2ZW50c1t0eXBlXSwgbGlzdGVuZXJdO1xuXG4gIC8vIENoZWNrIGZvciBsaXN0ZW5lciBsZWFrXG4gIGlmIChpc09iamVjdCh0aGlzLl9ldmVudHNbdHlwZV0pICYmICF0aGlzLl9ldmVudHNbdHlwZV0ud2FybmVkKSB7XG4gICAgaWYgKCFpc1VuZGVmaW5lZCh0aGlzLl9tYXhMaXN0ZW5lcnMpKSB7XG4gICAgICBtID0gdGhpcy5fbWF4TGlzdGVuZXJzO1xuICAgIH0gZWxzZSB7XG4gICAgICBtID0gRXZlbnRFbWl0dGVyLmRlZmF1bHRNYXhMaXN0ZW5lcnM7XG4gICAgfVxuXG4gICAgaWYgKG0gJiYgbSA+IDAgJiYgdGhpcy5fZXZlbnRzW3R5cGVdLmxlbmd0aCA+IG0pIHtcbiAgICAgIHRoaXMuX2V2ZW50c1t0eXBlXS53YXJuZWQgPSB0cnVlO1xuICAgICAgY29uc29sZS5lcnJvcignKG5vZGUpIHdhcm5pbmc6IHBvc3NpYmxlIEV2ZW50RW1pdHRlciBtZW1vcnkgJyArXG4gICAgICAgICAgICAgICAgICAgICdsZWFrIGRldGVjdGVkLiAlZCBsaXN0ZW5lcnMgYWRkZWQuICcgK1xuICAgICAgICAgICAgICAgICAgICAnVXNlIGVtaXR0ZXIuc2V0TWF4TGlzdGVuZXJzKCkgdG8gaW5jcmVhc2UgbGltaXQuJyxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZXZlbnRzW3R5cGVdLmxlbmd0aCk7XG4gICAgICBpZiAodHlwZW9mIGNvbnNvbGUudHJhY2UgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgLy8gbm90IHN1cHBvcnRlZCBpbiBJRSAxMFxuICAgICAgICBjb25zb2xlLnRyYWNlKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLm9uID0gRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5hZGRMaXN0ZW5lcjtcblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5vbmNlID0gZnVuY3Rpb24odHlwZSwgbGlzdGVuZXIpIHtcbiAgaWYgKCFpc0Z1bmN0aW9uKGxpc3RlbmVyKSlcbiAgICB0aHJvdyBUeXBlRXJyb3IoJ2xpc3RlbmVyIG11c3QgYmUgYSBmdW5jdGlvbicpO1xuXG4gIHZhciBmaXJlZCA9IGZhbHNlO1xuXG4gIGZ1bmN0aW9uIGcoKSB7XG4gICAgdGhpcy5yZW1vdmVMaXN0ZW5lcih0eXBlLCBnKTtcblxuICAgIGlmICghZmlyZWQpIHtcbiAgICAgIGZpcmVkID0gdHJ1ZTtcbiAgICAgIGxpc3RlbmVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfVxuICB9XG5cbiAgZy5saXN0ZW5lciA9IGxpc3RlbmVyO1xuICB0aGlzLm9uKHR5cGUsIGcpO1xuXG4gIHJldHVybiB0aGlzO1xufTtcblxuLy8gZW1pdHMgYSAncmVtb3ZlTGlzdGVuZXInIGV2ZW50IGlmZiB0aGUgbGlzdGVuZXIgd2FzIHJlbW92ZWRcbkV2ZW50RW1pdHRlci5wcm90b3R5cGUucmVtb3ZlTGlzdGVuZXIgPSBmdW5jdGlvbih0eXBlLCBsaXN0ZW5lcikge1xuICB2YXIgbGlzdCwgcG9zaXRpb24sIGxlbmd0aCwgaTtcblxuICBpZiAoIWlzRnVuY3Rpb24obGlzdGVuZXIpKVxuICAgIHRocm93IFR5cGVFcnJvcignbGlzdGVuZXIgbXVzdCBiZSBhIGZ1bmN0aW9uJyk7XG5cbiAgaWYgKCF0aGlzLl9ldmVudHMgfHwgIXRoaXMuX2V2ZW50c1t0eXBlXSlcbiAgICByZXR1cm4gdGhpcztcblxuICBsaXN0ID0gdGhpcy5fZXZlbnRzW3R5cGVdO1xuICBsZW5ndGggPSBsaXN0Lmxlbmd0aDtcbiAgcG9zaXRpb24gPSAtMTtcblxuICBpZiAobGlzdCA9PT0gbGlzdGVuZXIgfHxcbiAgICAgIChpc0Z1bmN0aW9uKGxpc3QubGlzdGVuZXIpICYmIGxpc3QubGlzdGVuZXIgPT09IGxpc3RlbmVyKSkge1xuICAgIGRlbGV0ZSB0aGlzLl9ldmVudHNbdHlwZV07XG4gICAgaWYgKHRoaXMuX2V2ZW50cy5yZW1vdmVMaXN0ZW5lcilcbiAgICAgIHRoaXMuZW1pdCgncmVtb3ZlTGlzdGVuZXInLCB0eXBlLCBsaXN0ZW5lcik7XG5cbiAgfSBlbHNlIGlmIChpc09iamVjdChsaXN0KSkge1xuICAgIGZvciAoaSA9IGxlbmd0aDsgaS0tID4gMDspIHtcbiAgICAgIGlmIChsaXN0W2ldID09PSBsaXN0ZW5lciB8fFxuICAgICAgICAgIChsaXN0W2ldLmxpc3RlbmVyICYmIGxpc3RbaV0ubGlzdGVuZXIgPT09IGxpc3RlbmVyKSkge1xuICAgICAgICBwb3NpdGlvbiA9IGk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChwb3NpdGlvbiA8IDApXG4gICAgICByZXR1cm4gdGhpcztcblxuICAgIGlmIChsaXN0Lmxlbmd0aCA9PT0gMSkge1xuICAgICAgbGlzdC5sZW5ndGggPSAwO1xuICAgICAgZGVsZXRlIHRoaXMuX2V2ZW50c1t0eXBlXTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGlzdC5zcGxpY2UocG9zaXRpb24sIDEpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9ldmVudHMucmVtb3ZlTGlzdGVuZXIpXG4gICAgICB0aGlzLmVtaXQoJ3JlbW92ZUxpc3RlbmVyJywgdHlwZSwgbGlzdGVuZXIpO1xuICB9XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLnJlbW92ZUFsbExpc3RlbmVycyA9IGZ1bmN0aW9uKHR5cGUpIHtcbiAgdmFyIGtleSwgbGlzdGVuZXJzO1xuXG4gIGlmICghdGhpcy5fZXZlbnRzKVxuICAgIHJldHVybiB0aGlzO1xuXG4gIC8vIG5vdCBsaXN0ZW5pbmcgZm9yIHJlbW92ZUxpc3RlbmVyLCBubyBuZWVkIHRvIGVtaXRcbiAgaWYgKCF0aGlzLl9ldmVudHMucmVtb3ZlTGlzdGVuZXIpIHtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMClcbiAgICAgIHRoaXMuX2V2ZW50cyA9IHt9O1xuICAgIGVsc2UgaWYgKHRoaXMuX2V2ZW50c1t0eXBlXSlcbiAgICAgIGRlbGV0ZSB0aGlzLl9ldmVudHNbdHlwZV07XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvLyBlbWl0IHJlbW92ZUxpc3RlbmVyIGZvciBhbGwgbGlzdGVuZXJzIG9uIGFsbCBldmVudHNcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApIHtcbiAgICBmb3IgKGtleSBpbiB0aGlzLl9ldmVudHMpIHtcbiAgICAgIGlmIChrZXkgPT09ICdyZW1vdmVMaXN0ZW5lcicpIGNvbnRpbnVlO1xuICAgICAgdGhpcy5yZW1vdmVBbGxMaXN0ZW5lcnMoa2V5KTtcbiAgICB9XG4gICAgdGhpcy5yZW1vdmVBbGxMaXN0ZW5lcnMoJ3JlbW92ZUxpc3RlbmVyJyk7XG4gICAgdGhpcy5fZXZlbnRzID0ge307XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBsaXN0ZW5lcnMgPSB0aGlzLl9ldmVudHNbdHlwZV07XG5cbiAgaWYgKGlzRnVuY3Rpb24obGlzdGVuZXJzKSkge1xuICAgIHRoaXMucmVtb3ZlTGlzdGVuZXIodHlwZSwgbGlzdGVuZXJzKTtcbiAgfSBlbHNlIGlmIChsaXN0ZW5lcnMpIHtcbiAgICAvLyBMSUZPIG9yZGVyXG4gICAgd2hpbGUgKGxpc3RlbmVycy5sZW5ndGgpXG4gICAgICB0aGlzLnJlbW92ZUxpc3RlbmVyKHR5cGUsIGxpc3RlbmVyc1tsaXN0ZW5lcnMubGVuZ3RoIC0gMV0pO1xuICB9XG4gIGRlbGV0ZSB0aGlzLl9ldmVudHNbdHlwZV07XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLmxpc3RlbmVycyA9IGZ1bmN0aW9uKHR5cGUpIHtcbiAgdmFyIHJldDtcbiAgaWYgKCF0aGlzLl9ldmVudHMgfHwgIXRoaXMuX2V2ZW50c1t0eXBlXSlcbiAgICByZXQgPSBbXTtcbiAgZWxzZSBpZiAoaXNGdW5jdGlvbih0aGlzLl9ldmVudHNbdHlwZV0pKVxuICAgIHJldCA9IFt0aGlzLl9ldmVudHNbdHlwZV1dO1xuICBlbHNlXG4gICAgcmV0ID0gdGhpcy5fZXZlbnRzW3R5cGVdLnNsaWNlKCk7XG4gIHJldHVybiByZXQ7XG59O1xuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLmxpc3RlbmVyQ291bnQgPSBmdW5jdGlvbih0eXBlKSB7XG4gIGlmICh0aGlzLl9ldmVudHMpIHtcbiAgICB2YXIgZXZsaXN0ZW5lciA9IHRoaXMuX2V2ZW50c1t0eXBlXTtcblxuICAgIGlmIChpc0Z1bmN0aW9uKGV2bGlzdGVuZXIpKVxuICAgICAgcmV0dXJuIDE7XG4gICAgZWxzZSBpZiAoZXZsaXN0ZW5lcilcbiAgICAgIHJldHVybiBldmxpc3RlbmVyLmxlbmd0aDtcbiAgfVxuICByZXR1cm4gMDtcbn07XG5cbkV2ZW50RW1pdHRlci5saXN0ZW5lckNvdW50ID0gZnVuY3Rpb24oZW1pdHRlciwgdHlwZSkge1xuICByZXR1cm4gZW1pdHRlci5saXN0ZW5lckNvdW50KHR5cGUpO1xufTtcblxuZnVuY3Rpb24gaXNGdW5jdGlvbihhcmcpIHtcbiAgcmV0dXJuIHR5cGVvZiBhcmcgPT09ICdmdW5jdGlvbic7XG59XG5cbmZ1bmN0aW9uIGlzTnVtYmVyKGFyZykge1xuICByZXR1cm4gdHlwZW9mIGFyZyA9PT0gJ251bWJlcic7XG59XG5cbmZ1bmN0aW9uIGlzT2JqZWN0KGFyZykge1xuICByZXR1cm4gdHlwZW9mIGFyZyA9PT0gJ29iamVjdCcgJiYgYXJnICE9PSBudWxsO1xufVxuXG5mdW5jdGlvbiBpc1VuZGVmaW5lZChhcmcpIHtcbiAgcmV0dXJuIGFyZyA9PT0gdm9pZCAwO1xufVxuIiwidmFyIG1kNSA9IHJlcXVpcmUoJ2NyZWF0ZS1oYXNoL21kNScpXG5tb2R1bGUuZXhwb3J0cyA9IEVWUF9CeXRlc1RvS2V5XG5mdW5jdGlvbiBFVlBfQnl0ZXNUb0tleSAocGFzc3dvcmQsIHNhbHQsIGtleUxlbiwgaXZMZW4pIHtcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIocGFzc3dvcmQpKSB7XG4gICAgcGFzc3dvcmQgPSBuZXcgQnVmZmVyKHBhc3N3b3JkLCAnYmluYXJ5JylcbiAgfVxuICBpZiAoc2FsdCAmJiAhQnVmZmVyLmlzQnVmZmVyKHNhbHQpKSB7XG4gICAgc2FsdCA9IG5ldyBCdWZmZXIoc2FsdCwgJ2JpbmFyeScpXG4gIH1cbiAga2V5TGVuID0ga2V5TGVuIC8gOFxuICBpdkxlbiA9IGl2TGVuIHx8IDBcbiAgdmFyIGtpID0gMFxuICB2YXIgaWkgPSAwXG4gIHZhciBrZXkgPSBuZXcgQnVmZmVyKGtleUxlbilcbiAgdmFyIGl2ID0gbmV3IEJ1ZmZlcihpdkxlbilcbiAgdmFyIGFkZG1kID0gMFxuICB2YXIgbWRfYnVmXG4gIHZhciBpXG4gIHZhciBidWZzID0gW11cbiAgd2hpbGUgKHRydWUpIHtcbiAgICBpZiAoYWRkbWQrKyA+IDApIHtcbiAgICAgIGJ1ZnMucHVzaChtZF9idWYpXG4gICAgfVxuICAgIGJ1ZnMucHVzaChwYXNzd29yZClcbiAgICBpZiAoc2FsdCkge1xuICAgICAgYnVmcy5wdXNoKHNhbHQpXG4gICAgfVxuICAgIG1kX2J1ZiA9IG1kNShCdWZmZXIuY29uY2F0KGJ1ZnMpKVxuICAgIGJ1ZnMgPSBbXVxuICAgIGkgPSAwXG4gICAgaWYgKGtleUxlbiA+IDApIHtcbiAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgIGlmIChrZXlMZW4gPT09IDApIHtcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICAgIGlmIChpID09PSBtZF9idWYubGVuZ3RoKSB7XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgICBrZXlba2krK10gPSBtZF9idWZbaV1cbiAgICAgICAga2V5TGVuLS1cbiAgICAgICAgaSsrXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChpdkxlbiA+IDAgJiYgaSAhPT0gbWRfYnVmLmxlbmd0aCkge1xuICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgaWYgKGl2TGVuID09PSAwKSB7XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaSA9PT0gbWRfYnVmLmxlbmd0aCkge1xuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgICAgaXZbaWkrK10gPSBtZF9idWZbaV1cbiAgICAgICAgaXZMZW4tLVxuICAgICAgICBpKytcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGtleUxlbiA9PT0gMCAmJiBpdkxlbiA9PT0gMCkge1xuICAgICAgYnJlYWtcbiAgICB9XG4gIH1cbiAgZm9yIChpID0gMDsgaSA8IG1kX2J1Zi5sZW5ndGg7IGkrKykge1xuICAgIG1kX2J1ZltpXSA9IDBcbiAgfVxuICByZXR1cm4ge1xuICAgIGtleToga2V5LFxuICAgIGl2OiBpdlxuICB9XG59XG4iLCIndXNlIHN0cmljdCc7XG5tb2R1bGUuZXhwb3J0cyA9IGlucHV0ID0+IHtcblx0Y29uc3QgYnVmID0gbmV3IFVpbnQ4QXJyYXkoaW5wdXQpO1xuXG5cdGlmICghKGJ1ZiAmJiBidWYubGVuZ3RoID4gMSkpIHtcblx0XHRyZXR1cm4gbnVsbDtcblx0fVxuXG5cdGlmIChidWZbMF0gPT09IDB4RkYgJiYgYnVmWzFdID09PSAweEQ4ICYmIGJ1ZlsyXSA9PT0gMHhGRikge1xuXHRcdHJldHVybiB7XG5cdFx0XHRleHQ6ICdqcGcnLFxuXHRcdFx0bWltZTogJ2ltYWdlL2pwZWcnXG5cdFx0fTtcblx0fVxuXG5cdGlmIChidWZbMF0gPT09IDB4ODkgJiYgYnVmWzFdID09PSAweDUwICYmIGJ1ZlsyXSA9PT0gMHg0RSAmJiBidWZbM10gPT09IDB4NDcpIHtcblx0XHRyZXR1cm4ge1xuXHRcdFx0ZXh0OiAncG5nJyxcblx0XHRcdG1pbWU6ICdpbWFnZS9wbmcnXG5cdFx0fTtcblx0fVxuXG5cdGlmIChidWZbMF0gPT09IDB4NDcgJiYgYnVmWzFdID09PSAweDQ5ICYmIGJ1ZlsyXSA9PT0gMHg0Nikge1xuXHRcdHJldHVybiB7XG5cdFx0XHRleHQ6ICdnaWYnLFxuXHRcdFx0bWltZTogJ2ltYWdlL2dpZidcblx0XHR9O1xuXHR9XG5cblx0aWYgKGJ1Zls4XSA9PT0gMHg1NyAmJiBidWZbOV0gPT09IDB4NDUgJiYgYnVmWzEwXSA9PT0gMHg0MiAmJiBidWZbMTFdID09PSAweDUwKSB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdGV4dDogJ3dlYnAnLFxuXHRcdFx0bWltZTogJ2ltYWdlL3dlYnAnXG5cdFx0fTtcblx0fVxuXG5cdGlmIChidWZbMF0gPT09IDB4NDYgJiYgYnVmWzFdID09PSAweDRDICYmIGJ1ZlsyXSA9PT0gMHg0OSAmJiBidWZbM10gPT09IDB4NDYpIHtcblx0XHRyZXR1cm4ge1xuXHRcdFx0ZXh0OiAnZmxpZicsXG5cdFx0XHRtaW1lOiAnaW1hZ2UvZmxpZidcblx0XHR9O1xuXHR9XG5cblx0Ly8gbmVlZHMgdG8gYmUgYmVmb3JlIGB0aWZgIGNoZWNrXG5cdGlmICgoKGJ1ZlswXSA9PT0gMHg0OSAmJiBidWZbMV0gPT09IDB4NDkgJiYgYnVmWzJdID09PSAweDJBICYmIGJ1ZlszXSA9PT0gMHgwKSB8fCAoYnVmWzBdID09PSAweDREICYmIGJ1ZlsxXSA9PT0gMHg0RCAmJiBidWZbMl0gPT09IDB4MCAmJiBidWZbM10gPT09IDB4MkEpKSAmJiBidWZbOF0gPT09IDB4NDMgJiYgYnVmWzldID09PSAweDUyKSB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdGV4dDogJ2NyMicsXG5cdFx0XHRtaW1lOiAnaW1hZ2UveC1jYW5vbi1jcjInXG5cdFx0fTtcblx0fVxuXG5cdGlmICgoYnVmWzBdID09PSAweDQ5ICYmIGJ1ZlsxXSA9PT0gMHg0OSAmJiBidWZbMl0gPT09IDB4MkEgJiYgYnVmWzNdID09PSAweDApIHx8IChidWZbMF0gPT09IDB4NEQgJiYgYnVmWzFdID09PSAweDREICYmIGJ1ZlsyXSA9PT0gMHgwICYmIGJ1ZlszXSA9PT0gMHgyQSkpIHtcblx0XHRyZXR1cm4ge1xuXHRcdFx0ZXh0OiAndGlmJyxcblx0XHRcdG1pbWU6ICdpbWFnZS90aWZmJ1xuXHRcdH07XG5cdH1cblxuXHRpZiAoYnVmWzBdID09PSAweDQyICYmIGJ1ZlsxXSA9PT0gMHg0RCkge1xuXHRcdHJldHVybiB7XG5cdFx0XHRleHQ6ICdibXAnLFxuXHRcdFx0bWltZTogJ2ltYWdlL2JtcCdcblx0XHR9O1xuXHR9XG5cblx0aWYgKGJ1ZlswXSA9PT0gMHg0OSAmJiBidWZbMV0gPT09IDB4NDkgJiYgYnVmWzJdID09PSAweEJDKSB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdGV4dDogJ2p4cicsXG5cdFx0XHRtaW1lOiAnaW1hZ2Uvdm5kLm1zLXBob3RvJ1xuXHRcdH07XG5cdH1cblxuXHRpZiAoYnVmWzBdID09PSAweDM4ICYmIGJ1ZlsxXSA9PT0gMHg0MiAmJiBidWZbMl0gPT09IDB4NTAgJiYgYnVmWzNdID09PSAweDUzKSB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdGV4dDogJ3BzZCcsXG5cdFx0XHRtaW1lOiAnaW1hZ2Uvdm5kLmFkb2JlLnBob3Rvc2hvcCdcblx0XHR9O1xuXHR9XG5cblx0Ly8gbmVlZHMgdG8gYmUgYmVmb3JlIGB6aXBgIGNoZWNrXG5cdGlmIChidWZbMF0gPT09IDB4NTAgJiYgYnVmWzFdID09PSAweDRCICYmIGJ1ZlsyXSA9PT0gMHgzICYmIGJ1ZlszXSA9PT0gMHg0ICYmIGJ1ZlszMF0gPT09IDB4NkQgJiYgYnVmWzMxXSA9PT0gMHg2OSAmJiBidWZbMzJdID09PSAweDZEICYmIGJ1ZlszM10gPT09IDB4NjUgJiYgYnVmWzM0XSA9PT0gMHg3NCAmJiBidWZbMzVdID09PSAweDc5ICYmIGJ1ZlszNl0gPT09IDB4NzAgJiYgYnVmWzM3XSA9PT0gMHg2NSAmJiBidWZbMzhdID09PSAweDYxICYmIGJ1ZlszOV0gPT09IDB4NzAgJiYgYnVmWzQwXSA9PT0gMHg3MCAmJiBidWZbNDFdID09PSAweDZDICYmIGJ1Zls0Ml0gPT09IDB4NjkgJiYgYnVmWzQzXSA9PT0gMHg2MyAmJiBidWZbNDRdID09PSAweDYxICYmIGJ1Zls0NV0gPT09IDB4NzQgJiYgYnVmWzQ2XSA9PT0gMHg2OSAmJiBidWZbNDddID09PSAweDZGICYmIGJ1Zls0OF0gPT09IDB4NkUgJiYgYnVmWzQ5XSA9PT0gMHgyRiAmJiBidWZbNTBdID09PSAweDY1ICYmIGJ1Zls1MV0gPT09IDB4NzAgJiYgYnVmWzUyXSA9PT0gMHg3NSAmJiBidWZbNTNdID09PSAweDYyICYmIGJ1Zls1NF0gPT09IDB4MkIgJiYgYnVmWzU1XSA9PT0gMHg3QSAmJiBidWZbNTZdID09PSAweDY5ICYmIGJ1Zls1N10gPT09IDB4NzApIHtcblx0XHRyZXR1cm4ge1xuXHRcdFx0ZXh0OiAnZXB1YicsXG5cdFx0XHRtaW1lOiAnYXBwbGljYXRpb24vZXB1Yit6aXAnXG5cdFx0fTtcblx0fVxuXG5cdC8vIG5lZWRzIHRvIGJlIGJlZm9yZSBgemlwYCBjaGVja1xuXHQvLyBhc3N1bWVzIHNpZ25lZCAueHBpIGZyb20gYWRkb25zLm1vemlsbGEub3JnXG5cdGlmIChidWZbMF0gPT09IDB4NTAgJiYgYnVmWzFdID09PSAweDRCICYmIGJ1ZlsyXSA9PT0gMHgzICYmIGJ1ZlszXSA9PT0gMHg0ICYmIGJ1ZlszMF0gPT09IDB4NEQgJiYgYnVmWzMxXSA9PT0gMHg0NSAmJiBidWZbMzJdID09PSAweDU0ICYmIGJ1ZlszM10gPT09IDB4NDEgJiYgYnVmWzM0XSA9PT0gMHgyRCAmJiBidWZbMzVdID09PSAweDQ5ICYmIGJ1ZlszNl0gPT09IDB4NEUgJiYgYnVmWzM3XSA9PT0gMHg0NiAmJiBidWZbMzhdID09PSAweDJGICYmIGJ1ZlszOV0gPT09IDB4NkQgJiYgYnVmWzQwXSA9PT0gMHg2RiAmJiBidWZbNDFdID09PSAweDdBICYmIGJ1Zls0Ml0gPT09IDB4NjkgJiYgYnVmWzQzXSA9PT0gMHg2QyAmJiBidWZbNDRdID09PSAweDZDICYmIGJ1Zls0NV0gPT09IDB4NjEgJiYgYnVmWzQ2XSA9PT0gMHgyRSAmJiBidWZbNDddID09PSAweDcyICYmIGJ1Zls0OF0gPT09IDB4NzMgJiYgYnVmWzQ5XSA9PT0gMHg2MSkge1xuXHRcdHJldHVybiB7XG5cdFx0XHRleHQ6ICd4cGknLFxuXHRcdFx0bWltZTogJ2FwcGxpY2F0aW9uL3gteHBpbnN0YWxsJ1xuXHRcdH07XG5cdH1cblxuXHRpZiAoYnVmWzBdID09PSAweDUwICYmIGJ1ZlsxXSA9PT0gMHg0QiAmJiAoYnVmWzJdID09PSAweDMgfHwgYnVmWzJdID09PSAweDUgfHwgYnVmWzJdID09PSAweDcpICYmIChidWZbM10gPT09IDB4NCB8fCBidWZbM10gPT09IDB4NiB8fCBidWZbM10gPT09IDB4OCkpIHtcblx0XHRyZXR1cm4ge1xuXHRcdFx0ZXh0OiAnemlwJyxcblx0XHRcdG1pbWU6ICdhcHBsaWNhdGlvbi96aXAnXG5cdFx0fTtcblx0fVxuXG5cdGlmIChidWZbMjU3XSA9PT0gMHg3NSAmJiBidWZbMjU4XSA9PT0gMHg3MyAmJiBidWZbMjU5XSA9PT0gMHg3NCAmJiBidWZbMjYwXSA9PT0gMHg2MSAmJiBidWZbMjYxXSA9PT0gMHg3Mikge1xuXHRcdHJldHVybiB7XG5cdFx0XHRleHQ6ICd0YXInLFxuXHRcdFx0bWltZTogJ2FwcGxpY2F0aW9uL3gtdGFyJ1xuXHRcdH07XG5cdH1cblxuXHRpZiAoYnVmWzBdID09PSAweDUyICYmIGJ1ZlsxXSA9PT0gMHg2MSAmJiBidWZbMl0gPT09IDB4NzIgJiYgYnVmWzNdID09PSAweDIxICYmIGJ1Zls0XSA9PT0gMHgxQSAmJiBidWZbNV0gPT09IDB4NyAmJiAoYnVmWzZdID09PSAweDAgfHwgYnVmWzZdID09PSAweDEpKSB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdGV4dDogJ3JhcicsXG5cdFx0XHRtaW1lOiAnYXBwbGljYXRpb24veC1yYXItY29tcHJlc3NlZCdcblx0XHR9O1xuXHR9XG5cblx0aWYgKGJ1ZlswXSA9PT0gMHgxRiAmJiBidWZbMV0gPT09IDB4OEIgJiYgYnVmWzJdID09PSAweDgpIHtcblx0XHRyZXR1cm4ge1xuXHRcdFx0ZXh0OiAnZ3onLFxuXHRcdFx0bWltZTogJ2FwcGxpY2F0aW9uL2d6aXAnXG5cdFx0fTtcblx0fVxuXG5cdGlmIChidWZbMF0gPT09IDB4NDIgJiYgYnVmWzFdID09PSAweDVBICYmIGJ1ZlsyXSA9PT0gMHg2OCkge1xuXHRcdHJldHVybiB7XG5cdFx0XHRleHQ6ICdiejInLFxuXHRcdFx0bWltZTogJ2FwcGxpY2F0aW9uL3gtYnppcDInXG5cdFx0fTtcblx0fVxuXG5cdGlmIChidWZbMF0gPT09IDB4MzcgJiYgYnVmWzFdID09PSAweDdBICYmIGJ1ZlsyXSA9PT0gMHhCQyAmJiBidWZbM10gPT09IDB4QUYgJiYgYnVmWzRdID09PSAweDI3ICYmIGJ1Zls1XSA9PT0gMHgxQykge1xuXHRcdHJldHVybiB7XG5cdFx0XHRleHQ6ICc3eicsXG5cdFx0XHRtaW1lOiAnYXBwbGljYXRpb24veC03ei1jb21wcmVzc2VkJ1xuXHRcdH07XG5cdH1cblxuXHRpZiAoYnVmWzBdID09PSAweDc4ICYmIGJ1ZlsxXSA9PT0gMHgwMSkge1xuXHRcdHJldHVybiB7XG5cdFx0XHRleHQ6ICdkbWcnLFxuXHRcdFx0bWltZTogJ2FwcGxpY2F0aW9uL3gtYXBwbGUtZGlza2ltYWdlJ1xuXHRcdH07XG5cdH1cblxuXHRpZiAoXG5cdFx0KGJ1ZlswXSA9PT0gMHgwICYmIGJ1ZlsxXSA9PT0gMHgwICYmIGJ1ZlsyXSA9PT0gMHgwICYmIChidWZbM10gPT09IDB4MTggfHwgYnVmWzNdID09PSAweDIwKSAmJiBidWZbNF0gPT09IDB4NjYgJiYgYnVmWzVdID09PSAweDc0ICYmIGJ1Zls2XSA9PT0gMHg3OSAmJiBidWZbN10gPT09IDB4NzApIHx8XG5cdFx0KGJ1ZlswXSA9PT0gMHgzMyAmJiBidWZbMV0gPT09IDB4NjcgJiYgYnVmWzJdID09PSAweDcwICYmIGJ1ZlszXSA9PT0gMHgzNSkgfHxcblx0XHQoYnVmWzBdID09PSAweDAgJiYgYnVmWzFdID09PSAweDAgJiYgYnVmWzJdID09PSAweDAgJiYgYnVmWzNdID09PSAweDFDICYmIGJ1Zls0XSA9PT0gMHg2NiAmJiBidWZbNV0gPT09IDB4NzQgJiYgYnVmWzZdID09PSAweDc5ICYmIGJ1Zls3XSA9PT0gMHg3MCAmJiBidWZbOF0gPT09IDB4NkQgJiYgYnVmWzldID09PSAweDcwICYmIGJ1ZlsxMF0gPT09IDB4MzQgJiYgYnVmWzExXSA9PT0gMHgzMiAmJiBidWZbMTZdID09PSAweDZEICYmIGJ1ZlsxN10gPT09IDB4NzAgJiYgYnVmWzE4XSA9PT0gMHgzNCAmJiBidWZbMTldID09PSAweDMxICYmIGJ1ZlsyMF0gPT09IDB4NkQgJiYgYnVmWzIxXSA9PT0gMHg3MCAmJiBidWZbMjJdID09PSAweDM0ICYmIGJ1ZlsyM10gPT09IDB4MzIgJiYgYnVmWzI0XSA9PT0gMHg2OSAmJiBidWZbMjVdID09PSAweDczICYmIGJ1ZlsyNl0gPT09IDB4NkYgJiYgYnVmWzI3XSA9PT0gMHg2RCkgfHxcblx0XHQoYnVmWzBdID09PSAweDAgJiYgYnVmWzFdID09PSAweDAgJiYgYnVmWzJdID09PSAweDAgJiYgYnVmWzNdID09PSAweDFDICYmIGJ1Zls0XSA9PT0gMHg2NiAmJiBidWZbNV0gPT09IDB4NzQgJiYgYnVmWzZdID09PSAweDc5ICYmIGJ1Zls3XSA9PT0gMHg3MCAmJiBidWZbOF0gPT09IDB4NjkgJiYgYnVmWzldID09PSAweDczICYmIGJ1ZlsxMF0gPT09IDB4NkYgJiYgYnVmWzExXSA9PT0gMHg2RCkgfHxcblx0XHQoYnVmWzBdID09PSAweDAgJiYgYnVmWzFdID09PSAweDAgJiYgYnVmWzJdID09PSAweDAgJiYgYnVmWzNdID09PSAweDFjICYmIGJ1Zls0XSA9PT0gMHg2NiAmJiBidWZbNV0gPT09IDB4NzQgJiYgYnVmWzZdID09PSAweDc5ICYmIGJ1Zls3XSA9PT0gMHg3MCAmJiBidWZbOF0gPT09IDB4NkQgJiYgYnVmWzldID09PSAweDcwICYmIGJ1ZlsxMF0gPT09IDB4MzQgJiYgYnVmWzExXSA9PT0gMHgzMiAmJiBidWZbMTJdID09PSAweDAgJiYgYnVmWzEzXSA9PT0gMHgwICYmIGJ1ZlsxNF0gPT09IDB4MCAmJiBidWZbMTVdID09PSAweDApXG5cdCkge1xuXHRcdHJldHVybiB7XG5cdFx0XHRleHQ6ICdtcDQnLFxuXHRcdFx0bWltZTogJ3ZpZGVvL21wNCdcblx0XHR9O1xuXHR9XG5cblx0aWYgKChidWZbMF0gPT09IDB4MCAmJiBidWZbMV0gPT09IDB4MCAmJiBidWZbMl0gPT09IDB4MCAmJiBidWZbM10gPT09IDB4MUMgJiYgYnVmWzRdID09PSAweDY2ICYmIGJ1Zls1XSA9PT0gMHg3NCAmJiBidWZbNl0gPT09IDB4NzkgJiYgYnVmWzddID09PSAweDcwICYmIGJ1Zls4XSA9PT0gMHg0RCAmJiBidWZbOV0gPT09IDB4MzQgJiYgYnVmWzEwXSA9PT0gMHg1NikpIHtcblx0XHRyZXR1cm4ge1xuXHRcdFx0ZXh0OiAnbTR2Jyxcblx0XHRcdG1pbWU6ICd2aWRlby94LW00didcblx0XHR9O1xuXHR9XG5cblx0aWYgKGJ1ZlswXSA9PT0gMHg0RCAmJiBidWZbMV0gPT09IDB4NTQgJiYgYnVmWzJdID09PSAweDY4ICYmIGJ1ZlszXSA9PT0gMHg2NCkge1xuXHRcdHJldHVybiB7XG5cdFx0XHRleHQ6ICdtaWQnLFxuXHRcdFx0bWltZTogJ2F1ZGlvL21pZGknXG5cdFx0fTtcblx0fVxuXG5cdC8vIGh0dHBzOi8vZ2l0aHViLmNvbS90aHJlYXRzdGFjay9saWJtYWdpYy9ibG9iL21hc3Rlci9tYWdpYy9NYWdkaXIvbWF0cm9za2Fcblx0aWYgKGJ1ZlswXSA9PT0gMHgxQSAmJiBidWZbMV0gPT09IDB4NDUgJiYgYnVmWzJdID09PSAweERGICYmIGJ1ZlszXSA9PT0gMHhBMykge1xuXHRcdGNvbnN0IHNsaWNlZCA9IGJ1Zi5zdWJhcnJheSg0LCA0ICsgNDA5Nik7XG5cdFx0Y29uc3QgaWRQb3MgPSBzbGljZWQuZmluZEluZGV4KChlbCwgaSwgYXJyKSA9PiBhcnJbaV0gPT09IDB4NDIgJiYgYXJyW2kgKyAxXSA9PT0gMHg4Mik7XG5cblx0XHRpZiAoaWRQb3MgPj0gMCkge1xuXHRcdFx0Y29uc3QgZG9jVHlwZVBvcyA9IGlkUG9zICsgMztcblx0XHRcdGNvbnN0IGZpbmREb2NUeXBlID0gdHlwZSA9PiBBcnJheS5mcm9tKHR5cGUpLmV2ZXJ5KChjLCBpKSA9PiBzbGljZWRbZG9jVHlwZVBvcyArIGldID09PSBjLmNoYXJDb2RlQXQoMCkpO1xuXG5cdFx0XHRpZiAoZmluZERvY1R5cGUoJ21hdHJvc2thJykpIHtcblx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRleHQ6ICdta3YnLFxuXHRcdFx0XHRcdG1pbWU6ICd2aWRlby94LW1hdHJvc2thJ1xuXHRcdFx0XHR9O1xuXHRcdFx0fVxuXHRcdFx0aWYgKGZpbmREb2NUeXBlKCd3ZWJtJykpIHtcblx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRleHQ6ICd3ZWJtJyxcblx0XHRcdFx0XHRtaW1lOiAndmlkZW8vd2VibSdcblx0XHRcdFx0fTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRpZiAoYnVmWzBdID09PSAweDAgJiYgYnVmWzFdID09PSAweDAgJiYgYnVmWzJdID09PSAweDAgJiYgYnVmWzNdID09PSAweDE0ICYmIGJ1Zls0XSA9PT0gMHg2NiAmJiBidWZbNV0gPT09IDB4NzQgJiYgYnVmWzZdID09PSAweDc5ICYmIGJ1Zls3XSA9PT0gMHg3MCkge1xuXHRcdHJldHVybiB7XG5cdFx0XHRleHQ6ICdtb3YnLFxuXHRcdFx0bWltZTogJ3ZpZGVvL3F1aWNrdGltZSdcblx0XHR9O1xuXHR9XG5cblx0aWYgKGJ1ZlswXSA9PT0gMHg1MiAmJiBidWZbMV0gPT09IDB4NDkgJiYgYnVmWzJdID09PSAweDQ2ICYmIGJ1ZlszXSA9PT0gMHg0NiAmJiBidWZbOF0gPT09IDB4NDEgJiYgYnVmWzldID09PSAweDU2ICYmIGJ1ZlsxMF0gPT09IDB4NDkpIHtcblx0XHRyZXR1cm4ge1xuXHRcdFx0ZXh0OiAnYXZpJyxcblx0XHRcdG1pbWU6ICd2aWRlby94LW1zdmlkZW8nXG5cdFx0fTtcblx0fVxuXG5cdGlmIChidWZbMF0gPT09IDB4MzAgJiYgYnVmWzFdID09PSAweDI2ICYmIGJ1ZlsyXSA9PT0gMHhCMiAmJiBidWZbM10gPT09IDB4NzUgJiYgYnVmWzRdID09PSAweDhFICYmIGJ1Zls1XSA9PT0gMHg2NiAmJiBidWZbNl0gPT09IDB4Q0YgJiYgYnVmWzddID09PSAweDExICYmIGJ1Zls4XSA9PT0gMHhBNiAmJiBidWZbOV0gPT09IDB4RDkpIHtcblx0XHRyZXR1cm4ge1xuXHRcdFx0ZXh0OiAnd212Jyxcblx0XHRcdG1pbWU6ICd2aWRlby94LW1zLXdtdidcblx0XHR9O1xuXHR9XG5cblx0aWYgKGJ1ZlswXSA9PT0gMHgwICYmIGJ1ZlsxXSA9PT0gMHgwICYmIGJ1ZlsyXSA9PT0gMHgxICYmIGJ1ZlszXS50b1N0cmluZygxNilbMF0gPT09ICdiJykge1xuXHRcdHJldHVybiB7XG5cdFx0XHRleHQ6ICdtcGcnLFxuXHRcdFx0bWltZTogJ3ZpZGVvL21wZWcnXG5cdFx0fTtcblx0fVxuXG5cdGlmICgoYnVmWzBdID09PSAweDQ5ICYmIGJ1ZlsxXSA9PT0gMHg0NCAmJiBidWZbMl0gPT09IDB4MzMpIHx8IChidWZbMF0gPT09IDB4RkYgJiYgYnVmWzFdID09PSAweGZiKSkge1xuXHRcdHJldHVybiB7XG5cdFx0XHRleHQ6ICdtcDMnLFxuXHRcdFx0bWltZTogJ2F1ZGlvL21wZWcnXG5cdFx0fTtcblx0fVxuXG5cdGlmICgoYnVmWzRdID09PSAweDY2ICYmIGJ1Zls1XSA9PT0gMHg3NCAmJiBidWZbNl0gPT09IDB4NzkgJiYgYnVmWzddID09PSAweDcwICYmIGJ1Zls4XSA9PT0gMHg0RCAmJiBidWZbOV0gPT09IDB4MzQgJiYgYnVmWzEwXSA9PT0gMHg0MSkgfHwgKGJ1ZlswXSA9PT0gMHg0RCAmJiBidWZbMV0gPT09IDB4MzQgJiYgYnVmWzJdID09PSAweDQxICYmIGJ1ZlszXSA9PT0gMHgyMCkpIHtcblx0XHRyZXR1cm4ge1xuXHRcdFx0ZXh0OiAnbTRhJyxcblx0XHRcdG1pbWU6ICdhdWRpby9tNGEnXG5cdFx0fTtcblx0fVxuXG5cdC8vIG5lZWRzIHRvIGJlIGJlZm9yZSBgb2dnYCBjaGVja1xuXHRpZiAoYnVmWzI4XSA9PT0gMHg0RiAmJiBidWZbMjldID09PSAweDcwICYmIGJ1ZlszMF0gPT09IDB4NzUgJiYgYnVmWzMxXSA9PT0gMHg3MyAmJiBidWZbMzJdID09PSAweDQ4ICYmIGJ1ZlszM10gPT09IDB4NjUgJiYgYnVmWzM0XSA9PT0gMHg2MSAmJiBidWZbMzVdID09PSAweDY0KSB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdGV4dDogJ29wdXMnLFxuXHRcdFx0bWltZTogJ2F1ZGlvL29wdXMnXG5cdFx0fTtcblx0fVxuXG5cdGlmIChidWZbMF0gPT09IDB4NEYgJiYgYnVmWzFdID09PSAweDY3ICYmIGJ1ZlsyXSA9PT0gMHg2NyAmJiBidWZbM10gPT09IDB4NTMpIHtcblx0XHRyZXR1cm4ge1xuXHRcdFx0ZXh0OiAnb2dnJyxcblx0XHRcdG1pbWU6ICdhdWRpby9vZ2cnXG5cdFx0fTtcblx0fVxuXG5cdGlmIChidWZbMF0gPT09IDB4NjYgJiYgYnVmWzFdID09PSAweDRDICYmIGJ1ZlsyXSA9PT0gMHg2MSAmJiBidWZbM10gPT09IDB4NDMpIHtcblx0XHRyZXR1cm4ge1xuXHRcdFx0ZXh0OiAnZmxhYycsXG5cdFx0XHRtaW1lOiAnYXVkaW8veC1mbGFjJ1xuXHRcdH07XG5cdH1cblxuXHRpZiAoYnVmWzBdID09PSAweDUyICYmIGJ1ZlsxXSA9PT0gMHg0OSAmJiBidWZbMl0gPT09IDB4NDYgJiYgYnVmWzNdID09PSAweDQ2ICYmIGJ1Zls4XSA9PT0gMHg1NyAmJiBidWZbOV0gPT09IDB4NDEgJiYgYnVmWzEwXSA9PT0gMHg1NiAmJiBidWZbMTFdID09PSAweDQ1KSB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdGV4dDogJ3dhdicsXG5cdFx0XHRtaW1lOiAnYXVkaW8veC13YXYnXG5cdFx0fTtcblx0fVxuXG5cdGlmIChidWZbMF0gPT09IDB4MjMgJiYgYnVmWzFdID09PSAweDIxICYmIGJ1ZlsyXSA9PT0gMHg0MSAmJiBidWZbM10gPT09IDB4NEQgJiYgYnVmWzRdID09PSAweDUyICYmIGJ1Zls1XSA9PT0gMHgwQSkge1xuXHRcdHJldHVybiB7XG5cdFx0XHRleHQ6ICdhbXInLFxuXHRcdFx0bWltZTogJ2F1ZGlvL2Ftcidcblx0XHR9O1xuXHR9XG5cblx0aWYgKGJ1ZlswXSA9PT0gMHgyNSAmJiBidWZbMV0gPT09IDB4NTAgJiYgYnVmWzJdID09PSAweDQ0ICYmIGJ1ZlszXSA9PT0gMHg0Nikge1xuXHRcdHJldHVybiB7XG5cdFx0XHRleHQ6ICdwZGYnLFxuXHRcdFx0bWltZTogJ2FwcGxpY2F0aW9uL3BkZidcblx0XHR9O1xuXHR9XG5cblx0aWYgKGJ1ZlswXSA9PT0gMHg0RCAmJiBidWZbMV0gPT09IDB4NUEpIHtcblx0XHRyZXR1cm4ge1xuXHRcdFx0ZXh0OiAnZXhlJyxcblx0XHRcdG1pbWU6ICdhcHBsaWNhdGlvbi94LW1zZG93bmxvYWQnXG5cdFx0fTtcblx0fVxuXG5cdGlmICgoYnVmWzBdID09PSAweDQzIHx8IGJ1ZlswXSA9PT0gMHg0NikgJiYgYnVmWzFdID09PSAweDU3ICYmIGJ1ZlsyXSA9PT0gMHg1Mykge1xuXHRcdHJldHVybiB7XG5cdFx0XHRleHQ6ICdzd2YnLFxuXHRcdFx0bWltZTogJ2FwcGxpY2F0aW9uL3gtc2hvY2t3YXZlLWZsYXNoJ1xuXHRcdH07XG5cdH1cblxuXHRpZiAoYnVmWzBdID09PSAweDdCICYmIGJ1ZlsxXSA9PT0gMHg1QyAmJiBidWZbMl0gPT09IDB4NzIgJiYgYnVmWzNdID09PSAweDc0ICYmIGJ1Zls0XSA9PT0gMHg2Nikge1xuXHRcdHJldHVybiB7XG5cdFx0XHRleHQ6ICdydGYnLFxuXHRcdFx0bWltZTogJ2FwcGxpY2F0aW9uL3J0Zidcblx0XHR9O1xuXHR9XG5cblx0aWYgKFxuXHRcdChidWZbMF0gPT09IDB4NzcgJiYgYnVmWzFdID09PSAweDRGICYmIGJ1ZlsyXSA9PT0gMHg0NiAmJiBidWZbM10gPT09IDB4NDYpICYmXG5cdFx0KFxuXHRcdFx0KGJ1Zls0XSA9PT0gMHgwMCAmJiBidWZbNV0gPT09IDB4MDEgJiYgYnVmWzZdID09PSAweDAwICYmIGJ1Zls3XSA9PT0gMHgwMCkgfHxcblx0XHRcdChidWZbNF0gPT09IDB4NEYgJiYgYnVmWzVdID09PSAweDU0ICYmIGJ1Zls2XSA9PT0gMHg1NCAmJiBidWZbN10gPT09IDB4NEYpXG5cdFx0KVxuXHQpIHtcblx0XHRyZXR1cm4ge1xuXHRcdFx0ZXh0OiAnd29mZicsXG5cdFx0XHRtaW1lOiAnYXBwbGljYXRpb24vZm9udC13b2ZmJ1xuXHRcdH07XG5cdH1cblxuXHRpZiAoXG5cdFx0KGJ1ZlswXSA9PT0gMHg3NyAmJiBidWZbMV0gPT09IDB4NEYgJiYgYnVmWzJdID09PSAweDQ2ICYmIGJ1ZlszXSA9PT0gMHgzMikgJiZcblx0XHQoXG5cdFx0XHQoYnVmWzRdID09PSAweDAwICYmIGJ1Zls1XSA9PT0gMHgwMSAmJiBidWZbNl0gPT09IDB4MDAgJiYgYnVmWzddID09PSAweDAwKSB8fFxuXHRcdFx0KGJ1Zls0XSA9PT0gMHg0RiAmJiBidWZbNV0gPT09IDB4NTQgJiYgYnVmWzZdID09PSAweDU0ICYmIGJ1Zls3XSA9PT0gMHg0Rilcblx0XHQpXG5cdCkge1xuXHRcdHJldHVybiB7XG5cdFx0XHRleHQ6ICd3b2ZmMicsXG5cdFx0XHRtaW1lOiAnYXBwbGljYXRpb24vZm9udC13b2ZmJ1xuXHRcdH07XG5cdH1cblxuXHRpZiAoXG5cdFx0KGJ1ZlszNF0gPT09IDB4NEMgJiYgYnVmWzM1XSA9PT0gMHg1MCkgJiZcblx0XHQoXG5cdFx0XHQoYnVmWzhdID09PSAweDAwICYmIGJ1Zls5XSA9PT0gMHgwMCAmJiBidWZbMTBdID09PSAweDAxKSB8fFxuXHRcdFx0KGJ1Zls4XSA9PT0gMHgwMSAmJiBidWZbOV0gPT09IDB4MDAgJiYgYnVmWzEwXSA9PT0gMHgwMikgfHxcblx0XHRcdChidWZbOF0gPT09IDB4MDIgJiYgYnVmWzldID09PSAweDAwICYmIGJ1ZlsxMF0gPT09IDB4MDIpXG5cdFx0KVxuXHQpIHtcblx0XHRyZXR1cm4ge1xuXHRcdFx0ZXh0OiAnZW90Jyxcblx0XHRcdG1pbWU6ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nXG5cdFx0fTtcblx0fVxuXG5cdGlmIChidWZbMF0gPT09IDB4MDAgJiYgYnVmWzFdID09PSAweDAxICYmIGJ1ZlsyXSA9PT0gMHgwMCAmJiBidWZbM10gPT09IDB4MDAgJiYgYnVmWzRdID09PSAweDAwKSB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdGV4dDogJ3R0ZicsXG5cdFx0XHRtaW1lOiAnYXBwbGljYXRpb24vZm9udC1zZm50J1xuXHRcdH07XG5cdH1cblxuXHRpZiAoYnVmWzBdID09PSAweDRGICYmIGJ1ZlsxXSA9PT0gMHg1NCAmJiBidWZbMl0gPT09IDB4NTQgJiYgYnVmWzNdID09PSAweDRGICYmIGJ1Zls0XSA9PT0gMHgwMCkge1xuXHRcdHJldHVybiB7XG5cdFx0XHRleHQ6ICdvdGYnLFxuXHRcdFx0bWltZTogJ2FwcGxpY2F0aW9uL2ZvbnQtc2ZudCdcblx0XHR9O1xuXHR9XG5cblx0aWYgKGJ1ZlswXSA9PT0gMHgwMCAmJiBidWZbMV0gPT09IDB4MDAgJiYgYnVmWzJdID09PSAweDAxICYmIGJ1ZlszXSA9PT0gMHgwMCkge1xuXHRcdHJldHVybiB7XG5cdFx0XHRleHQ6ICdpY28nLFxuXHRcdFx0bWltZTogJ2ltYWdlL3gtaWNvbidcblx0XHR9O1xuXHR9XG5cblx0aWYgKGJ1ZlswXSA9PT0gMHg0NiAmJiBidWZbMV0gPT09IDB4NEMgJiYgYnVmWzJdID09PSAweDU2ICYmIGJ1ZlszXSA9PT0gMHgwMSkge1xuXHRcdHJldHVybiB7XG5cdFx0XHRleHQ6ICdmbHYnLFxuXHRcdFx0bWltZTogJ3ZpZGVvL3gtZmx2J1xuXHRcdH07XG5cdH1cblxuXHRpZiAoYnVmWzBdID09PSAweDI1ICYmIGJ1ZlsxXSA9PT0gMHgyMSkge1xuXHRcdHJldHVybiB7XG5cdFx0XHRleHQ6ICdwcycsXG5cdFx0XHRtaW1lOiAnYXBwbGljYXRpb24vcG9zdHNjcmlwdCdcblx0XHR9O1xuXHR9XG5cblx0aWYgKGJ1ZlswXSA9PT0gMHhGRCAmJiBidWZbMV0gPT09IDB4MzcgJiYgYnVmWzJdID09PSAweDdBICYmIGJ1ZlszXSA9PT0gMHg1OCAmJiBidWZbNF0gPT09IDB4NUEgJiYgYnVmWzVdID09PSAweDAwKSB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdGV4dDogJ3h6Jyxcblx0XHRcdG1pbWU6ICdhcHBsaWNhdGlvbi94LXh6J1xuXHRcdH07XG5cdH1cblxuXHRpZiAoYnVmWzBdID09PSAweDUzICYmIGJ1ZlsxXSA9PT0gMHg1MSAmJiBidWZbMl0gPT09IDB4NEMgJiYgYnVmWzNdID09PSAweDY5KSB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdGV4dDogJ3NxbGl0ZScsXG5cdFx0XHRtaW1lOiAnYXBwbGljYXRpb24veC1zcWxpdGUzJ1xuXHRcdH07XG5cdH1cblxuXHRpZiAoYnVmWzBdID09PSAweDRFICYmIGJ1ZlsxXSA9PT0gMHg0NSAmJiBidWZbMl0gPT09IDB4NTMgJiYgYnVmWzNdID09PSAweDFBKSB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdGV4dDogJ25lcycsXG5cdFx0XHRtaW1lOiAnYXBwbGljYXRpb24veC1uaW50ZW5kby1uZXMtcm9tJ1xuXHRcdH07XG5cdH1cblxuXHRpZiAoYnVmWzBdID09PSAweDQzICYmIGJ1ZlsxXSA9PT0gMHg3MiAmJiBidWZbMl0gPT09IDB4MzIgJiYgYnVmWzNdID09PSAweDM0KSB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdGV4dDogJ2NyeCcsXG5cdFx0XHRtaW1lOiAnYXBwbGljYXRpb24veC1nb29nbGUtY2hyb21lLWV4dGVuc2lvbidcblx0XHR9O1xuXHR9XG5cblx0aWYgKFxuXHRcdChidWZbMF0gPT09IDB4NEQgJiYgYnVmWzFdID09PSAweDUzICYmIGJ1ZlsyXSA9PT0gMHg0MyAmJiBidWZbM10gPT09IDB4NDYpIHx8XG5cdFx0KGJ1ZlswXSA9PT0gMHg0OSAmJiBidWZbMV0gPT09IDB4NTMgJiYgYnVmWzJdID09PSAweDYzICYmIGJ1ZlszXSA9PT0gMHgyOClcblx0KSB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdGV4dDogJ2NhYicsXG5cdFx0XHRtaW1lOiAnYXBwbGljYXRpb24vdm5kLm1zLWNhYi1jb21wcmVzc2VkJ1xuXHRcdH07XG5cdH1cblxuXHQvLyBuZWVkcyB0byBiZSBiZWZvcmUgYGFyYCBjaGVja1xuXHRpZiAoYnVmWzBdID09PSAweDIxICYmIGJ1ZlsxXSA9PT0gMHgzQyAmJiBidWZbMl0gPT09IDB4NjEgJiYgYnVmWzNdID09PSAweDcyICYmIGJ1Zls0XSA9PT0gMHg2MyAmJiBidWZbNV0gPT09IDB4NjggJiYgYnVmWzZdID09PSAweDNFICYmIGJ1Zls3XSA9PT0gMHgwQSAmJiBidWZbOF0gPT09IDB4NjQgJiYgYnVmWzldID09PSAweDY1ICYmIGJ1ZlsxMF0gPT09IDB4NjIgJiYgYnVmWzExXSA9PT0gMHg2OSAmJiBidWZbMTJdID09PSAweDYxICYmIGJ1ZlsxM10gPT09IDB4NkUgJiYgYnVmWzE0XSA9PT0gMHgyRCAmJiBidWZbMTVdID09PSAweDYyICYmIGJ1ZlsxNl0gPT09IDB4NjkgJiYgYnVmWzE3XSA9PT0gMHg2RSAmJiBidWZbMThdID09PSAweDYxICYmIGJ1ZlsxOV0gPT09IDB4NzIgJiYgYnVmWzIwXSA9PT0gMHg3OSkge1xuXHRcdHJldHVybiB7XG5cdFx0XHRleHQ6ICdkZWInLFxuXHRcdFx0bWltZTogJ2FwcGxpY2F0aW9uL3gtZGViJ1xuXHRcdH07XG5cdH1cblxuXHRpZiAoYnVmWzBdID09PSAweDIxICYmIGJ1ZlsxXSA9PT0gMHgzQyAmJiBidWZbMl0gPT09IDB4NjEgJiYgYnVmWzNdID09PSAweDcyICYmIGJ1Zls0XSA9PT0gMHg2MyAmJiBidWZbNV0gPT09IDB4NjggJiYgYnVmWzZdID09PSAweDNFKSB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdGV4dDogJ2FyJyxcblx0XHRcdG1pbWU6ICdhcHBsaWNhdGlvbi94LXVuaXgtYXJjaGl2ZSdcblx0XHR9O1xuXHR9XG5cblx0aWYgKGJ1ZlswXSA9PT0gMHhFRCAmJiBidWZbMV0gPT09IDB4QUIgJiYgYnVmWzJdID09PSAweEVFICYmIGJ1ZlszXSA9PT0gMHhEQikge1xuXHRcdHJldHVybiB7XG5cdFx0XHRleHQ6ICdycG0nLFxuXHRcdFx0bWltZTogJ2FwcGxpY2F0aW9uL3gtcnBtJ1xuXHRcdH07XG5cdH1cblxuXHRpZiAoXG5cdFx0KGJ1ZlswXSA9PT0gMHgxRiAmJiBidWZbMV0gPT09IDB4QTApIHx8XG5cdFx0KGJ1ZlswXSA9PT0gMHgxRiAmJiBidWZbMV0gPT09IDB4OUQpXG5cdCkge1xuXHRcdHJldHVybiB7XG5cdFx0XHRleHQ6ICdaJyxcblx0XHRcdG1pbWU6ICdhcHBsaWNhdGlvbi94LWNvbXByZXNzJ1xuXHRcdH07XG5cdH1cblxuXHRpZiAoYnVmWzBdID09PSAweDRDICYmIGJ1ZlsxXSA9PT0gMHg1QSAmJiBidWZbMl0gPT09IDB4NDkgJiYgYnVmWzNdID09PSAweDUwKSB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdGV4dDogJ2x6Jyxcblx0XHRcdG1pbWU6ICdhcHBsaWNhdGlvbi94LWx6aXAnXG5cdFx0fTtcblx0fVxuXG5cdGlmIChidWZbMF0gPT09IDB4RDAgJiYgYnVmWzFdID09PSAweENGICYmIGJ1ZlsyXSA9PT0gMHgxMSAmJiBidWZbM10gPT09IDB4RTAgJiYgYnVmWzRdID09PSAweEExICYmIGJ1Zls1XSA9PT0gMHhCMSAmJiBidWZbNl0gPT09IDB4MUEgJiYgYnVmWzddID09PSAweEUxKSB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdGV4dDogJ21zaScsXG5cdFx0XHRtaW1lOiAnYXBwbGljYXRpb24veC1tc2knXG5cdFx0fTtcblx0fVxuXG5cdGlmIChidWZbMF0gPT09IDB4MDYgJiYgYnVmWzFdID09PSAweDBFICYmIGJ1ZlsyXSA9PT0gMHgyQiAmJiBidWZbM10gPT09IDB4MzQgJiYgYnVmWzRdID09PSAweDAyICYmIGJ1Zls1XSA9PT0gMHgwNSAmJiBidWZbNl0gPT09IDB4MDEgJiYgYnVmWzddID09PSAweDAxICYmIGJ1Zls4XSA9PT0gMHgwRCAmJiBidWZbOV0gPT09IDB4MDEgJiYgYnVmWzEwXSA9PT0gMHgwMiAmJiBidWZbMTFdID09PSAweDAxICYmIGJ1ZlsxMl0gPT09IDB4MDEgJiYgYnVmWzEzXSA9PT0gMHgwMikge1xuXHRcdHJldHVybiB7XG5cdFx0XHRleHQ6ICdteGYnLFxuXHRcdFx0bWltZTogJ2FwcGxpY2F0aW9uL214Zidcblx0XHR9O1xuXHR9XG5cblx0cmV0dXJuIG51bGw7XG59O1xuIiwiJ3VzZSBzdHJpY3QnXG5cbmNvbnN0IGZzID0gcmVxdWlyZSgnZ3JhY2VmdWwtZnMnKVxuXG5jb25zdCBCVUZfTEVOR1RIID0gNjQgKiAxMDI0XG5jb25zdCBfYnVmZiA9IG5ldyBCdWZmZXIoQlVGX0xFTkdUSClcblxuZnVuY3Rpb24gY29weUZpbGVTeW5jIChzcmNGaWxlLCBkZXN0RmlsZSwgb3B0aW9ucykge1xuICBjb25zdCBvdmVyd3JpdGUgPSBvcHRpb25zLm92ZXJ3cml0ZVxuICBjb25zdCBlcnJvck9uRXhpc3QgPSBvcHRpb25zLmVycm9yT25FeGlzdFxuICBjb25zdCBwcmVzZXJ2ZVRpbWVzdGFtcHMgPSBvcHRpb25zLnByZXNlcnZlVGltZXN0YW1wc1xuXG4gIGlmIChmcy5leGlzdHNTeW5jKGRlc3RGaWxlKSkge1xuICAgIGlmIChvdmVyd3JpdGUpIHtcbiAgICAgIGZzLnVubGlua1N5bmMoZGVzdEZpbGUpXG4gICAgfSBlbHNlIGlmIChlcnJvck9uRXhpc3QpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgJHtkZXN0RmlsZX0gYWxyZWFkeSBleGlzdHNgKVxuICAgIH0gZWxzZSByZXR1cm5cbiAgfVxuXG4gIGNvbnN0IGZkciA9IGZzLm9wZW5TeW5jKHNyY0ZpbGUsICdyJylcbiAgY29uc3Qgc3RhdCA9IGZzLmZzdGF0U3luYyhmZHIpXG4gIGNvbnN0IGZkdyA9IGZzLm9wZW5TeW5jKGRlc3RGaWxlLCAndycsIHN0YXQubW9kZSlcbiAgbGV0IGJ5dGVzUmVhZCA9IDFcbiAgbGV0IHBvcyA9IDBcblxuICB3aGlsZSAoYnl0ZXNSZWFkID4gMCkge1xuICAgIGJ5dGVzUmVhZCA9IGZzLnJlYWRTeW5jKGZkciwgX2J1ZmYsIDAsIEJVRl9MRU5HVEgsIHBvcylcbiAgICBmcy53cml0ZVN5bmMoZmR3LCBfYnVmZiwgMCwgYnl0ZXNSZWFkKVxuICAgIHBvcyArPSBieXRlc1JlYWRcbiAgfVxuXG4gIGlmIChwcmVzZXJ2ZVRpbWVzdGFtcHMpIHtcbiAgICBmcy5mdXRpbWVzU3luYyhmZHcsIHN0YXQuYXRpbWUsIHN0YXQubXRpbWUpXG4gIH1cblxuICBmcy5jbG9zZVN5bmMoZmRyKVxuICBmcy5jbG9zZVN5bmMoZmR3KVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNvcHlGaWxlU3luY1xuIiwiJ3VzZSBzdHJpY3QnXG5cbmNvbnN0IGZzID0gcmVxdWlyZSgnZ3JhY2VmdWwtZnMnKVxuY29uc3QgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKVxuY29uc3QgY29weUZpbGVTeW5jID0gcmVxdWlyZSgnLi9jb3B5LWZpbGUtc3luYycpXG5jb25zdCBta2RpciA9IHJlcXVpcmUoJy4uL21rZGlycycpXG5cbmZ1bmN0aW9uIGNvcHlTeW5jIChzcmMsIGRlc3QsIG9wdGlvbnMpIHtcbiAgaWYgKHR5cGVvZiBvcHRpb25zID09PSAnZnVuY3Rpb24nIHx8IG9wdGlvbnMgaW5zdGFuY2VvZiBSZWdFeHApIHtcbiAgICBvcHRpb25zID0ge2ZpbHRlcjogb3B0aW9uc31cbiAgfVxuXG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9XG4gIG9wdGlvbnMucmVjdXJzaXZlID0gISFvcHRpb25zLnJlY3Vyc2l2ZVxuXG4gIC8vIGRlZmF1bHQgdG8gdHJ1ZSBmb3Igbm93XG4gIG9wdGlvbnMuY2xvYmJlciA9ICdjbG9iYmVyJyBpbiBvcHRpb25zID8gISFvcHRpb25zLmNsb2JiZXIgOiB0cnVlXG4gIC8vIG92ZXJ3cml0ZSBmYWxscyBiYWNrIHRvIGNsb2JiZXJcbiAgb3B0aW9ucy5vdmVyd3JpdGUgPSAnb3ZlcndyaXRlJyBpbiBvcHRpb25zID8gISFvcHRpb25zLm92ZXJ3cml0ZSA6IG9wdGlvbnMuY2xvYmJlclxuICBvcHRpb25zLmRlcmVmZXJlbmNlID0gJ2RlcmVmZXJlbmNlJyBpbiBvcHRpb25zID8gISFvcHRpb25zLmRlcmVmZXJlbmNlIDogZmFsc2VcbiAgb3B0aW9ucy5wcmVzZXJ2ZVRpbWVzdGFtcHMgPSAncHJlc2VydmVUaW1lc3RhbXBzJyBpbiBvcHRpb25zID8gISFvcHRpb25zLnByZXNlcnZlVGltZXN0YW1wcyA6IGZhbHNlXG5cbiAgb3B0aW9ucy5maWx0ZXIgPSBvcHRpb25zLmZpbHRlciB8fCBmdW5jdGlvbiAoKSB7IHJldHVybiB0cnVlIH1cblxuICAvLyBXYXJuIGFib3V0IHVzaW5nIHByZXNlcnZlVGltZXN0YW1wcyBvbiAzMi1iaXQgbm9kZTpcbiAgaWYgKG9wdGlvbnMucHJlc2VydmVUaW1lc3RhbXBzICYmIHByb2Nlc3MuYXJjaCA9PT0gJ2lhMzInKSB7XG4gICAgY29uc29sZS53YXJuKGBmcy1leHRyYTogVXNpbmcgdGhlIHByZXNlcnZlVGltZXN0YW1wcyBvcHRpb24gaW4gMzItYml0IG5vZGUgaXMgbm90IHJlY29tbWVuZGVkO1xcblxuICAgIHNlZSBodHRwczovL2dpdGh1Yi5jb20vanByaWNoYXJkc29uL25vZGUtZnMtZXh0cmEvaXNzdWVzLzI2OWApXG4gIH1cblxuICBjb25zdCBzdGF0cyA9IChvcHRpb25zLnJlY3Vyc2l2ZSAmJiAhb3B0aW9ucy5kZXJlZmVyZW5jZSkgPyBmcy5sc3RhdFN5bmMoc3JjKSA6IGZzLnN0YXRTeW5jKHNyYylcbiAgY29uc3QgZGVzdEZvbGRlciA9IHBhdGguZGlybmFtZShkZXN0KVxuICBjb25zdCBkZXN0Rm9sZGVyRXhpc3RzID0gZnMuZXhpc3RzU3luYyhkZXN0Rm9sZGVyKVxuICBsZXQgcGVyZm9ybUNvcHkgPSBmYWxzZVxuXG4gIGlmIChvcHRpb25zLmZpbHRlciBpbnN0YW5jZW9mIFJlZ0V4cCkge1xuICAgIGNvbnNvbGUud2FybignV2FybmluZzogZnMtZXh0cmE6IFBhc3NpbmcgYSBSZWdFeHAgZmlsdGVyIGlzIGRlcHJlY2F0ZWQsIHVzZSBhIGZ1bmN0aW9uJylcbiAgICBwZXJmb3JtQ29weSA9IG9wdGlvbnMuZmlsdGVyLnRlc3Qoc3JjKVxuICB9IGVsc2UgaWYgKHR5cGVvZiBvcHRpb25zLmZpbHRlciA9PT0gJ2Z1bmN0aW9uJykgcGVyZm9ybUNvcHkgPSBvcHRpb25zLmZpbHRlcihzcmMsIGRlc3QpXG5cbiAgaWYgKHN0YXRzLmlzRmlsZSgpICYmIHBlcmZvcm1Db3B5KSB7XG4gICAgaWYgKCFkZXN0Rm9sZGVyRXhpc3RzKSBta2Rpci5ta2RpcnNTeW5jKGRlc3RGb2xkZXIpXG4gICAgY29weUZpbGVTeW5jKHNyYywgZGVzdCwge1xuICAgICAgb3ZlcndyaXRlOiBvcHRpb25zLm92ZXJ3cml0ZSxcbiAgICAgIGVycm9yT25FeGlzdDogb3B0aW9ucy5lcnJvck9uRXhpc3QsXG4gICAgICBwcmVzZXJ2ZVRpbWVzdGFtcHM6IG9wdGlvbnMucHJlc2VydmVUaW1lc3RhbXBzXG4gICAgfSlcbiAgfSBlbHNlIGlmIChzdGF0cy5pc0RpcmVjdG9yeSgpICYmIHBlcmZvcm1Db3B5KSB7XG4gICAgaWYgKCFmcy5leGlzdHNTeW5jKGRlc3QpKSBta2Rpci5ta2RpcnNTeW5jKGRlc3QpXG4gICAgY29uc3QgY29udGVudHMgPSBmcy5yZWFkZGlyU3luYyhzcmMpXG4gICAgY29udGVudHMuZm9yRWFjaChjb250ZW50ID0+IHtcbiAgICAgIGNvbnN0IG9wdHMgPSBvcHRpb25zXG4gICAgICBvcHRzLnJlY3Vyc2l2ZSA9IHRydWVcbiAgICAgIGNvcHlTeW5jKHBhdGguam9pbihzcmMsIGNvbnRlbnQpLCBwYXRoLmpvaW4oZGVzdCwgY29udGVudCksIG9wdHMpXG4gICAgfSlcbiAgfSBlbHNlIGlmIChvcHRpb25zLnJlY3Vyc2l2ZSAmJiBzdGF0cy5pc1N5bWJvbGljTGluaygpICYmIHBlcmZvcm1Db3B5KSB7XG4gICAgY29uc3Qgc3JjUGF0aCA9IGZzLnJlYWRsaW5rU3luYyhzcmMpXG4gICAgZnMuc3ltbGlua1N5bmMoc3JjUGF0aCwgZGVzdClcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNvcHlTeW5jXG4iLCJtb2R1bGUuZXhwb3J0cyA9IHtcbiAgY29weVN5bmM6IHJlcXVpcmUoJy4vY29weS1zeW5jJylcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5jb25zdCBmcyA9IHJlcXVpcmUoJ2dyYWNlZnVsLWZzJylcbmNvbnN0IHBhdGggPSByZXF1aXJlKCdwYXRoJylcbmNvbnN0IG5jcCA9IHJlcXVpcmUoJy4vbmNwJylcbmNvbnN0IG1rZGlyID0gcmVxdWlyZSgnLi4vbWtkaXJzJylcblxuZnVuY3Rpb24gY29weSAoc3JjLCBkZXN0LCBvcHRpb25zLCBjYWxsYmFjaykge1xuICBpZiAodHlwZW9mIG9wdGlvbnMgPT09ICdmdW5jdGlvbicgJiYgIWNhbGxiYWNrKSB7XG4gICAgY2FsbGJhY2sgPSBvcHRpb25zXG4gICAgb3B0aW9ucyA9IHt9XG4gIH0gZWxzZSBpZiAodHlwZW9mIG9wdGlvbnMgPT09ICdmdW5jdGlvbicgfHwgb3B0aW9ucyBpbnN0YW5jZW9mIFJlZ0V4cCkge1xuICAgIG9wdGlvbnMgPSB7ZmlsdGVyOiBvcHRpb25zfVxuICB9XG4gIGNhbGxiYWNrID0gY2FsbGJhY2sgfHwgZnVuY3Rpb24gKCkge31cbiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge31cblxuICAvLyBXYXJuIGFib3V0IHVzaW5nIHByZXNlcnZlVGltZXN0YW1wcyBvbiAzMi1iaXQgbm9kZTpcbiAgaWYgKG9wdGlvbnMucHJlc2VydmVUaW1lc3RhbXBzICYmIHByb2Nlc3MuYXJjaCA9PT0gJ2lhMzInKSB7XG4gICAgY29uc29sZS53YXJuKGBmcy1leHRyYTogVXNpbmcgdGhlIHByZXNlcnZlVGltZXN0YW1wcyBvcHRpb24gaW4gMzItYml0IG5vZGUgaXMgbm90IHJlY29tbWVuZGVkO1xcblxuICAgIHNlZSBodHRwczovL2dpdGh1Yi5jb20vanByaWNoYXJkc29uL25vZGUtZnMtZXh0cmEvaXNzdWVzLzI2OWApXG4gIH1cblxuICAvLyBkb24ndCBhbGxvdyBzcmMgYW5kIGRlc3QgdG8gYmUgdGhlIHNhbWVcbiAgY29uc3QgYmFzZVBhdGggPSBwcm9jZXNzLmN3ZCgpXG4gIGNvbnN0IGN1cnJlbnRQYXRoID0gcGF0aC5yZXNvbHZlKGJhc2VQYXRoLCBzcmMpXG4gIGNvbnN0IHRhcmdldFBhdGggPSBwYXRoLnJlc29sdmUoYmFzZVBhdGgsIGRlc3QpXG4gIGlmIChjdXJyZW50UGF0aCA9PT0gdGFyZ2V0UGF0aCkgcmV0dXJuIGNhbGxiYWNrKG5ldyBFcnJvcignU291cmNlIGFuZCBkZXN0aW5hdGlvbiBtdXN0IG5vdCBiZSB0aGUgc2FtZS4nKSlcblxuICBmcy5sc3RhdChzcmMsIChlcnIsIHN0YXRzKSA9PiB7XG4gICAgaWYgKGVycikgcmV0dXJuIGNhbGxiYWNrKGVycilcblxuICAgIGxldCBkaXIgPSBudWxsXG4gICAgaWYgKHN0YXRzLmlzRGlyZWN0b3J5KCkpIHtcbiAgICAgIGNvbnN0IHBhcnRzID0gZGVzdC5zcGxpdChwYXRoLnNlcClcbiAgICAgIHBhcnRzLnBvcCgpXG4gICAgICBkaXIgPSBwYXJ0cy5qb2luKHBhdGguc2VwKVxuICAgIH0gZWxzZSB7XG4gICAgICBkaXIgPSBwYXRoLmRpcm5hbWUoZGVzdClcbiAgICB9XG5cbiAgICBmcy5leGlzdHMoZGlyLCBkaXJFeGlzdHMgPT4ge1xuICAgICAgaWYgKGRpckV4aXN0cykgcmV0dXJuIG5jcChzcmMsIGRlc3QsIG9wdGlvbnMsIGNhbGxiYWNrKVxuICAgICAgbWtkaXIubWtkaXJzKGRpciwgZXJyID0+IHtcbiAgICAgICAgaWYgKGVycikgcmV0dXJuIGNhbGxiYWNrKGVycilcbiAgICAgICAgbmNwKHNyYywgZGVzdCwgb3B0aW9ucywgY2FsbGJhY2spXG4gICAgICB9KVxuICAgIH0pXG4gIH0pXG59XG5cbm1vZHVsZS5leHBvcnRzID0gY29weVxuIiwibW9kdWxlLmV4cG9ydHMgPSB7XG4gIGNvcHk6IHJlcXVpcmUoJy4vY29weScpXG59XG4iLCIvLyBpbXBvcnRlZCBmcm9tIG5jcCAodGhpcyBpcyB0ZW1wb3JhcnksIHdpbGwgcmV3cml0ZSlcblxudmFyIGZzID0gcmVxdWlyZSgnZ3JhY2VmdWwtZnMnKVxudmFyIHBhdGggPSByZXF1aXJlKCdwYXRoJylcbnZhciB1dGltZXMgPSByZXF1aXJlKCcuLi91dGlsL3V0aW1lcycpXG5cbmZ1bmN0aW9uIG5jcCAoc291cmNlLCBkZXN0LCBvcHRpb25zLCBjYWxsYmFjaykge1xuICBpZiAoIWNhbGxiYWNrKSB7XG4gICAgY2FsbGJhY2sgPSBvcHRpb25zXG4gICAgb3B0aW9ucyA9IHt9XG4gIH1cblxuICB2YXIgYmFzZVBhdGggPSBwcm9jZXNzLmN3ZCgpXG4gIHZhciBjdXJyZW50UGF0aCA9IHBhdGgucmVzb2x2ZShiYXNlUGF0aCwgc291cmNlKVxuICB2YXIgdGFyZ2V0UGF0aCA9IHBhdGgucmVzb2x2ZShiYXNlUGF0aCwgZGVzdClcblxuICB2YXIgZmlsdGVyID0gb3B0aW9ucy5maWx0ZXJcbiAgdmFyIHRyYW5zZm9ybSA9IG9wdGlvbnMudHJhbnNmb3JtXG4gIHZhciBvdmVyd3JpdGUgPSBvcHRpb25zLm92ZXJ3cml0ZVxuICAvLyBJZiBvdmVyd3JpdGUgaXMgdW5kZWZpbmVkLCB1c2UgY2xvYmJlciwgb3RoZXJ3aXNlIGRlZmF1bHQgdG8gdHJ1ZTpcbiAgaWYgKG92ZXJ3cml0ZSA9PT0gdW5kZWZpbmVkKSBvdmVyd3JpdGUgPSBvcHRpb25zLmNsb2JiZXJcbiAgaWYgKG92ZXJ3cml0ZSA9PT0gdW5kZWZpbmVkKSBvdmVyd3JpdGUgPSB0cnVlXG4gIHZhciBlcnJvck9uRXhpc3QgPSBvcHRpb25zLmVycm9yT25FeGlzdFxuICB2YXIgZGVyZWZlcmVuY2UgPSBvcHRpb25zLmRlcmVmZXJlbmNlXG4gIHZhciBwcmVzZXJ2ZVRpbWVzdGFtcHMgPSBvcHRpb25zLnByZXNlcnZlVGltZXN0YW1wcyA9PT0gdHJ1ZVxuXG4gIHZhciBzdGFydGVkID0gMFxuICB2YXIgZmluaXNoZWQgPSAwXG4gIHZhciBydW5uaW5nID0gMFxuXG4gIHZhciBlcnJvcmVkID0gZmFsc2VcblxuICBzdGFydENvcHkoY3VycmVudFBhdGgpXG5cbiAgZnVuY3Rpb24gc3RhcnRDb3B5IChzb3VyY2UpIHtcbiAgICBzdGFydGVkKytcbiAgICBpZiAoZmlsdGVyKSB7XG4gICAgICBpZiAoZmlsdGVyIGluc3RhbmNlb2YgUmVnRXhwKSB7XG4gICAgICAgIGNvbnNvbGUud2FybignV2FybmluZzogZnMtZXh0cmE6IFBhc3NpbmcgYSBSZWdFeHAgZmlsdGVyIGlzIGRlcHJlY2F0ZWQsIHVzZSBhIGZ1bmN0aW9uJylcbiAgICAgICAgaWYgKCFmaWx0ZXIudGVzdChzb3VyY2UpKSB7XG4gICAgICAgICAgcmV0dXJuIGRvbmVPbmUodHJ1ZSlcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgZmlsdGVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGlmICghZmlsdGVyKHNvdXJjZSwgZGVzdCkpIHtcbiAgICAgICAgICByZXR1cm4gZG9uZU9uZSh0cnVlKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBnZXRTdGF0cyhzb3VyY2UpXG4gIH1cblxuICBmdW5jdGlvbiBnZXRTdGF0cyAoc291cmNlKSB7XG4gICAgdmFyIHN0YXQgPSBkZXJlZmVyZW5jZSA/IGZzLnN0YXQgOiBmcy5sc3RhdFxuICAgIHJ1bm5pbmcrK1xuICAgIHN0YXQoc291cmNlLCBmdW5jdGlvbiAoZXJyLCBzdGF0cykge1xuICAgICAgaWYgKGVycikgcmV0dXJuIG9uRXJyb3IoZXJyKVxuXG4gICAgICAvLyBXZSBuZWVkIHRvIGdldCB0aGUgbW9kZSBmcm9tIHRoZSBzdGF0cyBvYmplY3QgYW5kIHByZXNlcnZlIGl0LlxuICAgICAgdmFyIGl0ZW0gPSB7XG4gICAgICAgIG5hbWU6IHNvdXJjZSxcbiAgICAgICAgbW9kZTogc3RhdHMubW9kZSxcbiAgICAgICAgbXRpbWU6IHN0YXRzLm10aW1lLCAvLyBtb2RpZmllZCB0aW1lXG4gICAgICAgIGF0aW1lOiBzdGF0cy5hdGltZSwgLy8gYWNjZXNzIHRpbWVcbiAgICAgICAgc3RhdHM6IHN0YXRzIC8vIHRlbXBvcmFyeVxuICAgICAgfVxuXG4gICAgICBpZiAoc3RhdHMuaXNEaXJlY3RvcnkoKSkge1xuICAgICAgICByZXR1cm4gb25EaXIoaXRlbSlcbiAgICAgIH0gZWxzZSBpZiAoc3RhdHMuaXNGaWxlKCkgfHwgc3RhdHMuaXNDaGFyYWN0ZXJEZXZpY2UoKSB8fCBzdGF0cy5pc0Jsb2NrRGV2aWNlKCkpIHtcbiAgICAgICAgcmV0dXJuIG9uRmlsZShpdGVtKVxuICAgICAgfSBlbHNlIGlmIChzdGF0cy5pc1N5bWJvbGljTGluaygpKSB7XG4gICAgICAgIC8vIFN5bWxpbmtzIGRvbid0IHJlYWxseSBuZWVkIHRvIGtub3cgYWJvdXQgdGhlIG1vZGUuXG4gICAgICAgIHJldHVybiBvbkxpbmsoc291cmNlKVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICBmdW5jdGlvbiBvbkZpbGUgKGZpbGUpIHtcbiAgICB2YXIgdGFyZ2V0ID0gZmlsZS5uYW1lLnJlcGxhY2UoY3VycmVudFBhdGgsIHRhcmdldFBhdGgucmVwbGFjZSgnJCcsICckJCQkJykpIC8vIGVzY2FwZXMgJyQnIHdpdGggJyQkJ1xuICAgIGlzV3JpdGFibGUodGFyZ2V0LCBmdW5jdGlvbiAod3JpdGFibGUpIHtcbiAgICAgIGlmICh3cml0YWJsZSkge1xuICAgICAgICBjb3B5RmlsZShmaWxlLCB0YXJnZXQpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAob3ZlcndyaXRlKSB7XG4gICAgICAgICAgcm1GaWxlKHRhcmdldCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgY29weUZpbGUoZmlsZSwgdGFyZ2V0KVxuICAgICAgICAgIH0pXG4gICAgICAgIH0gZWxzZSBpZiAoZXJyb3JPbkV4aXN0KSB7XG4gICAgICAgICAgb25FcnJvcihuZXcgRXJyb3IodGFyZ2V0ICsgJyBhbHJlYWR5IGV4aXN0cycpKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGRvbmVPbmUoKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIGZ1bmN0aW9uIGNvcHlGaWxlIChmaWxlLCB0YXJnZXQpIHtcbiAgICB2YXIgcmVhZFN0cmVhbSA9IGZzLmNyZWF0ZVJlYWRTdHJlYW0oZmlsZS5uYW1lKVxuICAgIHZhciB3cml0ZVN0cmVhbSA9IGZzLmNyZWF0ZVdyaXRlU3RyZWFtKHRhcmdldCwgeyBtb2RlOiBmaWxlLm1vZGUgfSlcblxuICAgIHJlYWRTdHJlYW0ub24oJ2Vycm9yJywgb25FcnJvcilcbiAgICB3cml0ZVN0cmVhbS5vbignZXJyb3InLCBvbkVycm9yKVxuXG4gICAgaWYgKHRyYW5zZm9ybSkge1xuICAgICAgdHJhbnNmb3JtKHJlYWRTdHJlYW0sIHdyaXRlU3RyZWFtLCBmaWxlKVxuICAgIH0gZWxzZSB7XG4gICAgICB3cml0ZVN0cmVhbS5vbignb3BlbicsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmVhZFN0cmVhbS5waXBlKHdyaXRlU3RyZWFtKVxuICAgICAgfSlcbiAgICB9XG5cbiAgICB3cml0ZVN0cmVhbS5vbmNlKCdjbG9zZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGZzLmNobW9kKHRhcmdldCwgZmlsZS5tb2RlLCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgIGlmIChlcnIpIHJldHVybiBvbkVycm9yKGVycilcbiAgICAgICAgaWYgKHByZXNlcnZlVGltZXN0YW1wcykge1xuICAgICAgICAgIHV0aW1lcy51dGltZXNNaWxsaXModGFyZ2V0LCBmaWxlLmF0aW1lLCBmaWxlLm10aW1lLCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgICAgICBpZiAoZXJyKSByZXR1cm4gb25FcnJvcihlcnIpXG4gICAgICAgICAgICByZXR1cm4gZG9uZU9uZSgpXG4gICAgICAgICAgfSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBkb25lT25lKClcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9KVxuICB9XG5cbiAgZnVuY3Rpb24gcm1GaWxlIChmaWxlLCBkb25lKSB7XG4gICAgZnMudW5saW5rKGZpbGUsIGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgIGlmIChlcnIpIHJldHVybiBvbkVycm9yKGVycilcbiAgICAgIHJldHVybiBkb25lKClcbiAgICB9KVxuICB9XG5cbiAgZnVuY3Rpb24gb25EaXIgKGRpcikge1xuICAgIHZhciB0YXJnZXQgPSBkaXIubmFtZS5yZXBsYWNlKGN1cnJlbnRQYXRoLCB0YXJnZXRQYXRoLnJlcGxhY2UoJyQnLCAnJCQkJCcpKSAvLyBlc2NhcGVzICckJyB3aXRoICckJCdcbiAgICBpc1dyaXRhYmxlKHRhcmdldCwgZnVuY3Rpb24gKHdyaXRhYmxlKSB7XG4gICAgICBpZiAod3JpdGFibGUpIHtcbiAgICAgICAgcmV0dXJuIG1rRGlyKGRpciwgdGFyZ2V0KVxuICAgICAgfVxuICAgICAgY29weURpcihkaXIubmFtZSlcbiAgICB9KVxuICB9XG5cbiAgZnVuY3Rpb24gbWtEaXIgKGRpciwgdGFyZ2V0KSB7XG4gICAgZnMubWtkaXIodGFyZ2V0LCBkaXIubW9kZSwgZnVuY3Rpb24gKGVycikge1xuICAgICAgaWYgKGVycikgcmV0dXJuIG9uRXJyb3IoZXJyKVxuICAgICAgLy8gZGVzcGl0ZSBzZXR0aW5nIG1vZGUgaW4gZnMubWtkaXIsIGRvZXNuJ3Qgc2VlbSB0byB3b3JrXG4gICAgICAvLyBzbyB3ZSBzZXQgaXQgaGVyZS5cbiAgICAgIGZzLmNobW9kKHRhcmdldCwgZGlyLm1vZGUsIGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgaWYgKGVycikgcmV0dXJuIG9uRXJyb3IoZXJyKVxuICAgICAgICBjb3B5RGlyKGRpci5uYW1lKVxuICAgICAgfSlcbiAgICB9KVxuICB9XG5cbiAgZnVuY3Rpb24gY29weURpciAoZGlyKSB7XG4gICAgZnMucmVhZGRpcihkaXIsIGZ1bmN0aW9uIChlcnIsIGl0ZW1zKSB7XG4gICAgICBpZiAoZXJyKSByZXR1cm4gb25FcnJvcihlcnIpXG4gICAgICBpdGVtcy5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICAgIHN0YXJ0Q29weShwYXRoLmpvaW4oZGlyLCBpdGVtKSlcbiAgICAgIH0pXG4gICAgICByZXR1cm4gZG9uZU9uZSgpXG4gICAgfSlcbiAgfVxuXG4gIGZ1bmN0aW9uIG9uTGluayAobGluaykge1xuICAgIHZhciB0YXJnZXQgPSBsaW5rLnJlcGxhY2UoY3VycmVudFBhdGgsIHRhcmdldFBhdGgpXG4gICAgZnMucmVhZGxpbmsobGluaywgZnVuY3Rpb24gKGVyciwgcmVzb2x2ZWRQYXRoKSB7XG4gICAgICBpZiAoZXJyKSByZXR1cm4gb25FcnJvcihlcnIpXG4gICAgICBjaGVja0xpbmsocmVzb2x2ZWRQYXRoLCB0YXJnZXQpXG4gICAgfSlcbiAgfVxuXG4gIGZ1bmN0aW9uIGNoZWNrTGluayAocmVzb2x2ZWRQYXRoLCB0YXJnZXQpIHtcbiAgICBpZiAoZGVyZWZlcmVuY2UpIHtcbiAgICAgIHJlc29sdmVkUGF0aCA9IHBhdGgucmVzb2x2ZShiYXNlUGF0aCwgcmVzb2x2ZWRQYXRoKVxuICAgIH1cbiAgICBpc1dyaXRhYmxlKHRhcmdldCwgZnVuY3Rpb24gKHdyaXRhYmxlKSB7XG4gICAgICBpZiAod3JpdGFibGUpIHtcbiAgICAgICAgcmV0dXJuIG1ha2VMaW5rKHJlc29sdmVkUGF0aCwgdGFyZ2V0KVxuICAgICAgfVxuICAgICAgZnMucmVhZGxpbmsodGFyZ2V0LCBmdW5jdGlvbiAoZXJyLCB0YXJnZXREZXN0KSB7XG4gICAgICAgIGlmIChlcnIpIHJldHVybiBvbkVycm9yKGVycilcblxuICAgICAgICBpZiAoZGVyZWZlcmVuY2UpIHtcbiAgICAgICAgICB0YXJnZXREZXN0ID0gcGF0aC5yZXNvbHZlKGJhc2VQYXRoLCB0YXJnZXREZXN0KVxuICAgICAgICB9XG4gICAgICAgIGlmICh0YXJnZXREZXN0ID09PSByZXNvbHZlZFBhdGgpIHtcbiAgICAgICAgICByZXR1cm4gZG9uZU9uZSgpXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJtRmlsZSh0YXJnZXQsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBtYWtlTGluayhyZXNvbHZlZFBhdGgsIHRhcmdldClcbiAgICAgICAgfSlcbiAgICAgIH0pXG4gICAgfSlcbiAgfVxuXG4gIGZ1bmN0aW9uIG1ha2VMaW5rIChsaW5rUGF0aCwgdGFyZ2V0KSB7XG4gICAgZnMuc3ltbGluayhsaW5rUGF0aCwgdGFyZ2V0LCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICBpZiAoZXJyKSByZXR1cm4gb25FcnJvcihlcnIpXG4gICAgICByZXR1cm4gZG9uZU9uZSgpXG4gICAgfSlcbiAgfVxuXG4gIGZ1bmN0aW9uIGlzV3JpdGFibGUgKHBhdGgsIGRvbmUpIHtcbiAgICBmcy5sc3RhdChwYXRoLCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICBpZiAoZXJyKSB7XG4gICAgICAgIGlmIChlcnIuY29kZSA9PT0gJ0VOT0VOVCcpIHJldHVybiBkb25lKHRydWUpXG4gICAgICAgIHJldHVybiBkb25lKGZhbHNlKVxuICAgICAgfVxuICAgICAgcmV0dXJuIGRvbmUoZmFsc2UpXG4gICAgfSlcbiAgfVxuXG4gIGZ1bmN0aW9uIG9uRXJyb3IgKGVycikge1xuICAgIC8vIGVuc3VyZSBjYWxsYmFjayBpcyBkZWZpbmVkICYgY2FsbGVkIG9ubHkgb25jZTpcbiAgICBpZiAoIWVycm9yZWQgJiYgY2FsbGJhY2sgIT09IHVuZGVmaW5lZCkge1xuICAgICAgZXJyb3JlZCA9IHRydWVcbiAgICAgIHJldHVybiBjYWxsYmFjayhlcnIpXG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gZG9uZU9uZSAoc2tpcHBlZCkge1xuICAgIGlmICghc2tpcHBlZCkgcnVubmluZy0tXG4gICAgZmluaXNoZWQrK1xuICAgIGlmICgoc3RhcnRlZCA9PT0gZmluaXNoZWQpICYmIChydW5uaW5nID09PSAwKSkge1xuICAgICAgaWYgKGNhbGxiYWNrICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIGNhbGxiYWNrKG51bGwpXG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbmNwXG4iLCIndXNlIHN0cmljdCdcblxuY29uc3QgZnMgPSByZXF1aXJlKCdmcycpXG5jb25zdCBwYXRoID0gcmVxdWlyZSgncGF0aCcpXG5jb25zdCBta2RpciA9IHJlcXVpcmUoJy4uL21rZGlycycpXG5jb25zdCByZW1vdmUgPSByZXF1aXJlKCcuLi9yZW1vdmUnKVxuXG5mdW5jdGlvbiBlbXB0eURpciAoZGlyLCBjYWxsYmFjaykge1xuICBjYWxsYmFjayA9IGNhbGxiYWNrIHx8IGZ1bmN0aW9uICgpIHt9XG4gIGZzLnJlYWRkaXIoZGlyLCAoZXJyLCBpdGVtcykgPT4ge1xuICAgIGlmIChlcnIpIHJldHVybiBta2Rpci5ta2RpcnMoZGlyLCBjYWxsYmFjaylcblxuICAgIGl0ZW1zID0gaXRlbXMubWFwKGl0ZW0gPT4gcGF0aC5qb2luKGRpciwgaXRlbSkpXG5cbiAgICBkZWxldGVJdGVtKClcblxuICAgIGZ1bmN0aW9uIGRlbGV0ZUl0ZW0gKCkge1xuICAgICAgY29uc3QgaXRlbSA9IGl0ZW1zLnBvcCgpXG4gICAgICBpZiAoIWl0ZW0pIHJldHVybiBjYWxsYmFjaygpXG4gICAgICByZW1vdmUucmVtb3ZlKGl0ZW0sIGVyciA9PiB7XG4gICAgICAgIGlmIChlcnIpIHJldHVybiBjYWxsYmFjayhlcnIpXG4gICAgICAgIGRlbGV0ZUl0ZW0oKVxuICAgICAgfSlcbiAgICB9XG4gIH0pXG59XG5cbmZ1bmN0aW9uIGVtcHR5RGlyU3luYyAoZGlyKSB7XG4gIGxldCBpdGVtc1xuICB0cnkge1xuICAgIGl0ZW1zID0gZnMucmVhZGRpclN5bmMoZGlyKVxuICB9IGNhdGNoIChlcnIpIHtcbiAgICByZXR1cm4gbWtkaXIubWtkaXJzU3luYyhkaXIpXG4gIH1cblxuICBpdGVtcy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgIGl0ZW0gPSBwYXRoLmpvaW4oZGlyLCBpdGVtKVxuICAgIHJlbW92ZS5yZW1vdmVTeW5jKGl0ZW0pXG4gIH0pXG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBlbXB0eURpclN5bmMsXG4gIGVtcHR5ZGlyU3luYzogZW1wdHlEaXJTeW5jLFxuICBlbXB0eURpcixcbiAgZW1wdHlkaXI6IGVtcHR5RGlyXG59XG4iLCIndXNlIHN0cmljdCdcblxuY29uc3QgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKVxuY29uc3QgZnMgPSByZXF1aXJlKCdncmFjZWZ1bC1mcycpXG5jb25zdCBta2RpciA9IHJlcXVpcmUoJy4uL21rZGlycycpXG5cbmZ1bmN0aW9uIGNyZWF0ZUZpbGUgKGZpbGUsIGNhbGxiYWNrKSB7XG4gIGZ1bmN0aW9uIG1ha2VGaWxlICgpIHtcbiAgICBmcy53cml0ZUZpbGUoZmlsZSwgJycsIGVyciA9PiB7XG4gICAgICBpZiAoZXJyKSByZXR1cm4gY2FsbGJhY2soZXJyKVxuICAgICAgY2FsbGJhY2soKVxuICAgIH0pXG4gIH1cblxuICBmcy5leGlzdHMoZmlsZSwgZmlsZUV4aXN0cyA9PiB7XG4gICAgaWYgKGZpbGVFeGlzdHMpIHJldHVybiBjYWxsYmFjaygpXG4gICAgY29uc3QgZGlyID0gcGF0aC5kaXJuYW1lKGZpbGUpXG4gICAgZnMuZXhpc3RzKGRpciwgZGlyRXhpc3RzID0+IHtcbiAgICAgIGlmIChkaXJFeGlzdHMpIHJldHVybiBtYWtlRmlsZSgpXG4gICAgICBta2Rpci5ta2RpcnMoZGlyLCBlcnIgPT4ge1xuICAgICAgICBpZiAoZXJyKSByZXR1cm4gY2FsbGJhY2soZXJyKVxuICAgICAgICBtYWtlRmlsZSgpXG4gICAgICB9KVxuICAgIH0pXG4gIH0pXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUZpbGVTeW5jIChmaWxlKSB7XG4gIGlmIChmcy5leGlzdHNTeW5jKGZpbGUpKSByZXR1cm5cblxuICBjb25zdCBkaXIgPSBwYXRoLmRpcm5hbWUoZmlsZSlcbiAgaWYgKCFmcy5leGlzdHNTeW5jKGRpcikpIHtcbiAgICBta2Rpci5ta2RpcnNTeW5jKGRpcilcbiAgfVxuXG4gIGZzLndyaXRlRmlsZVN5bmMoZmlsZSwgJycpXG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBjcmVhdGVGaWxlLFxuICBjcmVhdGVGaWxlU3luYyxcbiAgLy8gYWxpYXNcbiAgZW5zdXJlRmlsZTogY3JlYXRlRmlsZSxcbiAgZW5zdXJlRmlsZVN5bmM6IGNyZWF0ZUZpbGVTeW5jXG59XG4iLCIndXNlIHN0cmljdCdcblxuY29uc3QgZmlsZSA9IHJlcXVpcmUoJy4vZmlsZScpXG5jb25zdCBsaW5rID0gcmVxdWlyZSgnLi9saW5rJylcbmNvbnN0IHN5bWxpbmsgPSByZXF1aXJlKCcuL3N5bWxpbmsnKVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgLy8gZmlsZVxuICBjcmVhdGVGaWxlOiBmaWxlLmNyZWF0ZUZpbGUsXG4gIGNyZWF0ZUZpbGVTeW5jOiBmaWxlLmNyZWF0ZUZpbGVTeW5jLFxuICBlbnN1cmVGaWxlOiBmaWxlLmNyZWF0ZUZpbGUsXG4gIGVuc3VyZUZpbGVTeW5jOiBmaWxlLmNyZWF0ZUZpbGVTeW5jLFxuICAvLyBsaW5rXG4gIGNyZWF0ZUxpbms6IGxpbmsuY3JlYXRlTGluayxcbiAgY3JlYXRlTGlua1N5bmM6IGxpbmsuY3JlYXRlTGlua1N5bmMsXG4gIGVuc3VyZUxpbms6IGxpbmsuY3JlYXRlTGluayxcbiAgZW5zdXJlTGlua1N5bmM6IGxpbmsuY3JlYXRlTGlua1N5bmMsXG4gIC8vIHN5bWxpbmtcbiAgY3JlYXRlU3ltbGluazogc3ltbGluay5jcmVhdGVTeW1saW5rLFxuICBjcmVhdGVTeW1saW5rU3luYzogc3ltbGluay5jcmVhdGVTeW1saW5rU3luYyxcbiAgZW5zdXJlU3ltbGluazogc3ltbGluay5jcmVhdGVTeW1saW5rLFxuICBlbnN1cmVTeW1saW5rU3luYzogc3ltbGluay5jcmVhdGVTeW1saW5rU3luY1xufVxuIiwiJ3VzZSBzdHJpY3QnXG5cbmNvbnN0IHBhdGggPSByZXF1aXJlKCdwYXRoJylcbmNvbnN0IGZzID0gcmVxdWlyZSgnZ3JhY2VmdWwtZnMnKVxuY29uc3QgbWtkaXIgPSByZXF1aXJlKCcuLi9ta2RpcnMnKVxuXG5mdW5jdGlvbiBjcmVhdGVMaW5rIChzcmNwYXRoLCBkc3RwYXRoLCBjYWxsYmFjaykge1xuICBmdW5jdGlvbiBtYWtlTGluayAoc3JjcGF0aCwgZHN0cGF0aCkge1xuICAgIGZzLmxpbmsoc3JjcGF0aCwgZHN0cGF0aCwgZXJyID0+IHtcbiAgICAgIGlmIChlcnIpIHJldHVybiBjYWxsYmFjayhlcnIpXG4gICAgICBjYWxsYmFjayhudWxsKVxuICAgIH0pXG4gIH1cblxuICBmcy5leGlzdHMoZHN0cGF0aCwgZGVzdGluYXRpb25FeGlzdHMgPT4ge1xuICAgIGlmIChkZXN0aW5hdGlvbkV4aXN0cykgcmV0dXJuIGNhbGxiYWNrKG51bGwpXG4gICAgZnMubHN0YXQoc3JjcGF0aCwgKGVyciwgc3RhdCkgPT4ge1xuICAgICAgaWYgKGVycikge1xuICAgICAgICBlcnIubWVzc2FnZSA9IGVyci5tZXNzYWdlLnJlcGxhY2UoJ2xzdGF0JywgJ2Vuc3VyZUxpbmsnKVxuICAgICAgICByZXR1cm4gY2FsbGJhY2soZXJyKVxuICAgICAgfVxuXG4gICAgICBjb25zdCBkaXIgPSBwYXRoLmRpcm5hbWUoZHN0cGF0aClcbiAgICAgIGZzLmV4aXN0cyhkaXIsIGRpckV4aXN0cyA9PiB7XG4gICAgICAgIGlmIChkaXJFeGlzdHMpIHJldHVybiBtYWtlTGluayhzcmNwYXRoLCBkc3RwYXRoKVxuICAgICAgICBta2Rpci5ta2RpcnMoZGlyLCBlcnIgPT4ge1xuICAgICAgICAgIGlmIChlcnIpIHJldHVybiBjYWxsYmFjayhlcnIpXG4gICAgICAgICAgbWFrZUxpbmsoc3JjcGF0aCwgZHN0cGF0aClcbiAgICAgICAgfSlcbiAgICAgIH0pXG4gICAgfSlcbiAgfSlcbn1cblxuZnVuY3Rpb24gY3JlYXRlTGlua1N5bmMgKHNyY3BhdGgsIGRzdHBhdGgsIGNhbGxiYWNrKSB7XG4gIGNvbnN0IGRlc3RpbmF0aW9uRXhpc3RzID0gZnMuZXhpc3RzU3luYyhkc3RwYXRoKVxuICBpZiAoZGVzdGluYXRpb25FeGlzdHMpIHJldHVybiB1bmRlZmluZWRcblxuICB0cnkge1xuICAgIGZzLmxzdGF0U3luYyhzcmNwYXRoKVxuICB9IGNhdGNoIChlcnIpIHtcbiAgICBlcnIubWVzc2FnZSA9IGVyci5tZXNzYWdlLnJlcGxhY2UoJ2xzdGF0JywgJ2Vuc3VyZUxpbmsnKVxuICAgIHRocm93IGVyclxuICB9XG5cbiAgY29uc3QgZGlyID0gcGF0aC5kaXJuYW1lKGRzdHBhdGgpXG4gIGNvbnN0IGRpckV4aXN0cyA9IGZzLmV4aXN0c1N5bmMoZGlyKVxuICBpZiAoZGlyRXhpc3RzKSByZXR1cm4gZnMubGlua1N5bmMoc3JjcGF0aCwgZHN0cGF0aClcbiAgbWtkaXIubWtkaXJzU3luYyhkaXIpXG5cbiAgcmV0dXJuIGZzLmxpbmtTeW5jKHNyY3BhdGgsIGRzdHBhdGgpXG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBjcmVhdGVMaW5rLFxuICBjcmVhdGVMaW5rU3luYyxcbiAgLy8gYWxpYXNcbiAgZW5zdXJlTGluazogY3JlYXRlTGluayxcbiAgZW5zdXJlTGlua1N5bmM6IGNyZWF0ZUxpbmtTeW5jXG59XG4iLCIndXNlIHN0cmljdCdcblxuY29uc3QgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKVxuY29uc3QgZnMgPSByZXF1aXJlKCdncmFjZWZ1bC1mcycpXG5cbi8qKlxuICogRnVuY3Rpb24gdGhhdCByZXR1cm5zIHR3byB0eXBlcyBvZiBwYXRocywgb25lIHJlbGF0aXZlIHRvIHN5bWxpbmssIGFuZCBvbmVcbiAqIHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LiBDaGVja3MgaWYgcGF0aCBpcyBhYnNvbHV0ZSBvclxuICogcmVsYXRpdmUuIElmIHRoZSBwYXRoIGlzIHJlbGF0aXZlLCB0aGlzIGZ1bmN0aW9uIGNoZWNrcyBpZiB0aGUgcGF0aCBpc1xuICogcmVsYXRpdmUgdG8gc3ltbGluayBvciByZWxhdGl2ZSB0byBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LiBUaGlzIGlzIGFuXG4gKiBpbml0aWF0aXZlIHRvIGZpbmQgYSBzbWFydGVyIGBzcmNwYXRoYCB0byBzdXBwbHkgd2hlbiBidWlsZGluZyBzeW1saW5rcy5cbiAqIFRoaXMgYWxsb3dzIHlvdSB0byBkZXRlcm1pbmUgd2hpY2ggcGF0aCB0byB1c2Ugb3V0IG9mIG9uZSBvZiB0aHJlZSBwb3NzaWJsZVxuICogdHlwZXMgb2Ygc291cmNlIHBhdGhzLiBUaGUgZmlyc3QgaXMgYW4gYWJzb2x1dGUgcGF0aC4gVGhpcyBpcyBkZXRlY3RlZCBieVxuICogYHBhdGguaXNBYnNvbHV0ZSgpYC4gV2hlbiBhbiBhYnNvbHV0ZSBwYXRoIGlzIHByb3ZpZGVkLCBpdCBpcyBjaGVja2VkIHRvXG4gKiBzZWUgaWYgaXQgZXhpc3RzLiBJZiBpdCBkb2VzIGl0J3MgdXNlZCwgaWYgbm90IGFuIGVycm9yIGlzIHJldHVybmVkXG4gKiAoY2FsbGJhY2spLyB0aHJvd24gKHN5bmMpLiBUaGUgb3RoZXIgdHdvIG9wdGlvbnMgZm9yIGBzcmNwYXRoYCBhcmUgYVxuICogcmVsYXRpdmUgdXJsLiBCeSBkZWZhdWx0IE5vZGUncyBgZnMuc3ltbGlua2Agd29ya3MgYnkgY3JlYXRpbmcgYSBzeW1saW5rXG4gKiB1c2luZyBgZHN0cGF0aGAgYW5kIGV4cGVjdHMgdGhlIGBzcmNwYXRoYCB0byBiZSByZWxhdGl2ZSB0byB0aGUgbmV3bHlcbiAqIGNyZWF0ZWQgc3ltbGluay4gSWYgeW91IHByb3ZpZGUgYSBgc3JjcGF0aGAgdGhhdCBkb2VzIG5vdCBleGlzdCBvbiB0aGUgZmlsZVxuICogc3lzdGVtIGl0IHJlc3VsdHMgaW4gYSBicm9rZW4gc3ltbGluay4gVG8gbWluaW1pemUgdGhpcywgdGhlIGZ1bmN0aW9uXG4gKiBjaGVja3MgdG8gc2VlIGlmIHRoZSAncmVsYXRpdmUgdG8gc3ltbGluaycgc291cmNlIGZpbGUgZXhpc3RzLCBhbmQgaWYgaXRcbiAqIGRvZXMgaXQgd2lsbCB1c2UgaXQuIElmIGl0IGRvZXMgbm90LCBpdCBjaGVja3MgaWYgdGhlcmUncyBhIGZpbGUgdGhhdFxuICogZXhpc3RzIHRoYXQgaXMgcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnksIGlmIGRvZXMgaXRzIHVzZWQuXG4gKiBUaGlzIHByZXNlcnZlcyB0aGUgZXhwZWN0YXRpb25zIG9mIHRoZSBvcmlnaW5hbCBmcy5zeW1saW5rIHNwZWMgYW5kIGFkZHNcbiAqIHRoZSBhYmlsaXR5IHRvIHBhc3MgaW4gYHJlbGF0aXZlIHRvIGN1cnJlbnQgd29ya2luZyBkaXJlY290cnlgIHBhdGhzLlxuICovXG5cbmZ1bmN0aW9uIHN5bWxpbmtQYXRocyAoc3JjcGF0aCwgZHN0cGF0aCwgY2FsbGJhY2spIHtcbiAgaWYgKHBhdGguaXNBYnNvbHV0ZShzcmNwYXRoKSkge1xuICAgIHJldHVybiBmcy5sc3RhdChzcmNwYXRoLCAoZXJyLCBzdGF0KSA9PiB7XG4gICAgICBpZiAoZXJyKSB7XG4gICAgICAgIGVyci5tZXNzYWdlID0gZXJyLm1lc3NhZ2UucmVwbGFjZSgnbHN0YXQnLCAnZW5zdXJlU3ltbGluaycpXG4gICAgICAgIHJldHVybiBjYWxsYmFjayhlcnIpXG4gICAgICB9XG4gICAgICByZXR1cm4gY2FsbGJhY2sobnVsbCwge1xuICAgICAgICAndG9Dd2QnOiBzcmNwYXRoLFxuICAgICAgICAndG9Ec3QnOiBzcmNwYXRoXG4gICAgICB9KVxuICAgIH0pXG4gIH0gZWxzZSB7XG4gICAgY29uc3QgZHN0ZGlyID0gcGF0aC5kaXJuYW1lKGRzdHBhdGgpXG4gICAgY29uc3QgcmVsYXRpdmVUb0RzdCA9IHBhdGguam9pbihkc3RkaXIsIHNyY3BhdGgpXG4gICAgcmV0dXJuIGZzLmV4aXN0cyhyZWxhdGl2ZVRvRHN0LCBleGlzdHMgPT4ge1xuICAgICAgaWYgKGV4aXN0cykge1xuICAgICAgICByZXR1cm4gY2FsbGJhY2sobnVsbCwge1xuICAgICAgICAgICd0b0N3ZCc6IHJlbGF0aXZlVG9Ec3QsXG4gICAgICAgICAgJ3RvRHN0Jzogc3JjcGF0aFxuICAgICAgICB9KVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGZzLmxzdGF0KHNyY3BhdGgsIChlcnIsIHN0YXQpID0+IHtcbiAgICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICBlcnIubWVzc2FnZSA9IGVyci5tZXNzYWdlLnJlcGxhY2UoJ2xzdGF0JywgJ2Vuc3VyZVN5bWxpbmsnKVxuICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGVycilcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKG51bGwsIHtcbiAgICAgICAgICAgICd0b0N3ZCc6IHNyY3BhdGgsXG4gICAgICAgICAgICAndG9Ec3QnOiBwYXRoLnJlbGF0aXZlKGRzdGRpciwgc3JjcGF0aClcbiAgICAgICAgICB9KVxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH0pXG4gIH1cbn1cblxuZnVuY3Rpb24gc3ltbGlua1BhdGhzU3luYyAoc3JjcGF0aCwgZHN0cGF0aCkge1xuICBsZXQgZXhpc3RzXG4gIGlmIChwYXRoLmlzQWJzb2x1dGUoc3JjcGF0aCkpIHtcbiAgICBleGlzdHMgPSBmcy5leGlzdHNTeW5jKHNyY3BhdGgpXG4gICAgaWYgKCFleGlzdHMpIHRocm93IG5ldyBFcnJvcignYWJzb2x1dGUgc3JjcGF0aCBkb2VzIG5vdCBleGlzdCcpXG4gICAgcmV0dXJuIHtcbiAgICAgICd0b0N3ZCc6IHNyY3BhdGgsXG4gICAgICAndG9Ec3QnOiBzcmNwYXRoXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGNvbnN0IGRzdGRpciA9IHBhdGguZGlybmFtZShkc3RwYXRoKVxuICAgIGNvbnN0IHJlbGF0aXZlVG9Ec3QgPSBwYXRoLmpvaW4oZHN0ZGlyLCBzcmNwYXRoKVxuICAgIGV4aXN0cyA9IGZzLmV4aXN0c1N5bmMocmVsYXRpdmVUb0RzdClcbiAgICBpZiAoZXhpc3RzKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAndG9Dd2QnOiByZWxhdGl2ZVRvRHN0LFxuICAgICAgICAndG9Ec3QnOiBzcmNwYXRoXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGV4aXN0cyA9IGZzLmV4aXN0c1N5bmMoc3JjcGF0aClcbiAgICAgIGlmICghZXhpc3RzKSB0aHJvdyBuZXcgRXJyb3IoJ3JlbGF0aXZlIHNyY3BhdGggZG9lcyBub3QgZXhpc3QnKVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgJ3RvQ3dkJzogc3JjcGF0aCxcbiAgICAgICAgJ3RvRHN0JzogcGF0aC5yZWxhdGl2ZShkc3RkaXIsIHNyY3BhdGgpXG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBzeW1saW5rUGF0aHMsXG4gIHN5bWxpbmtQYXRoc1N5bmNcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5jb25zdCBmcyA9IHJlcXVpcmUoJ2dyYWNlZnVsLWZzJylcblxuZnVuY3Rpb24gc3ltbGlua1R5cGUgKHNyY3BhdGgsIHR5cGUsIGNhbGxiYWNrKSB7XG4gIGNhbGxiYWNrID0gKHR5cGVvZiB0eXBlID09PSAnZnVuY3Rpb24nKSA/IHR5cGUgOiBjYWxsYmFja1xuICB0eXBlID0gKHR5cGVvZiB0eXBlID09PSAnZnVuY3Rpb24nKSA/IGZhbHNlIDogdHlwZVxuICBpZiAodHlwZSkgcmV0dXJuIGNhbGxiYWNrKG51bGwsIHR5cGUpXG4gIGZzLmxzdGF0KHNyY3BhdGgsIChlcnIsIHN0YXRzKSA9PiB7XG4gICAgaWYgKGVycikgcmV0dXJuIGNhbGxiYWNrKG51bGwsICdmaWxlJylcbiAgICB0eXBlID0gKHN0YXRzICYmIHN0YXRzLmlzRGlyZWN0b3J5KCkpID8gJ2RpcicgOiAnZmlsZSdcbiAgICBjYWxsYmFjayhudWxsLCB0eXBlKVxuICB9KVxufVxuXG5mdW5jdGlvbiBzeW1saW5rVHlwZVN5bmMgKHNyY3BhdGgsIHR5cGUpIHtcbiAgbGV0IHN0YXRzXG5cbiAgaWYgKHR5cGUpIHJldHVybiB0eXBlXG4gIHRyeSB7XG4gICAgc3RhdHMgPSBmcy5sc3RhdFN5bmMoc3JjcGF0aClcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiAnZmlsZSdcbiAgfVxuICByZXR1cm4gKHN0YXRzICYmIHN0YXRzLmlzRGlyZWN0b3J5KCkpID8gJ2RpcicgOiAnZmlsZSdcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIHN5bWxpbmtUeXBlLFxuICBzeW1saW5rVHlwZVN5bmNcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5jb25zdCBwYXRoID0gcmVxdWlyZSgncGF0aCcpXG5jb25zdCBmcyA9IHJlcXVpcmUoJ2dyYWNlZnVsLWZzJylcbmNvbnN0IF9ta2RpcnMgPSByZXF1aXJlKCcuLi9ta2RpcnMnKVxuY29uc3QgbWtkaXJzID0gX21rZGlycy5ta2RpcnNcbmNvbnN0IG1rZGlyc1N5bmMgPSBfbWtkaXJzLm1rZGlyc1N5bmNcblxuY29uc3QgX3N5bWxpbmtQYXRocyA9IHJlcXVpcmUoJy4vc3ltbGluay1wYXRocycpXG5jb25zdCBzeW1saW5rUGF0aHMgPSBfc3ltbGlua1BhdGhzLnN5bWxpbmtQYXRoc1xuY29uc3Qgc3ltbGlua1BhdGhzU3luYyA9IF9zeW1saW5rUGF0aHMuc3ltbGlua1BhdGhzU3luY1xuXG5jb25zdCBfc3ltbGlua1R5cGUgPSByZXF1aXJlKCcuL3N5bWxpbmstdHlwZScpXG5jb25zdCBzeW1saW5rVHlwZSA9IF9zeW1saW5rVHlwZS5zeW1saW5rVHlwZVxuY29uc3Qgc3ltbGlua1R5cGVTeW5jID0gX3N5bWxpbmtUeXBlLnN5bWxpbmtUeXBlU3luY1xuXG5mdW5jdGlvbiBjcmVhdGVTeW1saW5rIChzcmNwYXRoLCBkc3RwYXRoLCB0eXBlLCBjYWxsYmFjaykge1xuICBjYWxsYmFjayA9ICh0eXBlb2YgdHlwZSA9PT0gJ2Z1bmN0aW9uJykgPyB0eXBlIDogY2FsbGJhY2tcbiAgdHlwZSA9ICh0eXBlb2YgdHlwZSA9PT0gJ2Z1bmN0aW9uJykgPyBmYWxzZSA6IHR5cGVcblxuICBmcy5leGlzdHMoZHN0cGF0aCwgZGVzdGluYXRpb25FeGlzdHMgPT4ge1xuICAgIGlmIChkZXN0aW5hdGlvbkV4aXN0cykgcmV0dXJuIGNhbGxiYWNrKG51bGwpXG4gICAgc3ltbGlua1BhdGhzKHNyY3BhdGgsIGRzdHBhdGgsIChlcnIsIHJlbGF0aXZlKSA9PiB7XG4gICAgICBpZiAoZXJyKSByZXR1cm4gY2FsbGJhY2soZXJyKVxuICAgICAgc3JjcGF0aCA9IHJlbGF0aXZlLnRvRHN0XG4gICAgICBzeW1saW5rVHlwZShyZWxhdGl2ZS50b0N3ZCwgdHlwZSwgKGVyciwgdHlwZSkgPT4ge1xuICAgICAgICBpZiAoZXJyKSByZXR1cm4gY2FsbGJhY2soZXJyKVxuICAgICAgICBjb25zdCBkaXIgPSBwYXRoLmRpcm5hbWUoZHN0cGF0aClcbiAgICAgICAgZnMuZXhpc3RzKGRpciwgZGlyRXhpc3RzID0+IHtcbiAgICAgICAgICBpZiAoZGlyRXhpc3RzKSByZXR1cm4gZnMuc3ltbGluayhzcmNwYXRoLCBkc3RwYXRoLCB0eXBlLCBjYWxsYmFjaylcbiAgICAgICAgICBta2RpcnMoZGlyLCBlcnIgPT4ge1xuICAgICAgICAgICAgaWYgKGVycikgcmV0dXJuIGNhbGxiYWNrKGVycilcbiAgICAgICAgICAgIGZzLnN5bWxpbmsoc3JjcGF0aCwgZHN0cGF0aCwgdHlwZSwgY2FsbGJhY2spXG4gICAgICAgICAgfSlcbiAgICAgICAgfSlcbiAgICAgIH0pXG4gICAgfSlcbiAgfSlcbn1cblxuZnVuY3Rpb24gY3JlYXRlU3ltbGlua1N5bmMgKHNyY3BhdGgsIGRzdHBhdGgsIHR5cGUsIGNhbGxiYWNrKSB7XG4gIGNhbGxiYWNrID0gKHR5cGVvZiB0eXBlID09PSAnZnVuY3Rpb24nKSA/IHR5cGUgOiBjYWxsYmFja1xuICB0eXBlID0gKHR5cGVvZiB0eXBlID09PSAnZnVuY3Rpb24nKSA/IGZhbHNlIDogdHlwZVxuXG4gIGNvbnN0IGRlc3RpbmF0aW9uRXhpc3RzID0gZnMuZXhpc3RzU3luYyhkc3RwYXRoKVxuICBpZiAoZGVzdGluYXRpb25FeGlzdHMpIHJldHVybiB1bmRlZmluZWRcblxuICBjb25zdCByZWxhdGl2ZSA9IHN5bWxpbmtQYXRoc1N5bmMoc3JjcGF0aCwgZHN0cGF0aClcbiAgc3JjcGF0aCA9IHJlbGF0aXZlLnRvRHN0XG4gIHR5cGUgPSBzeW1saW5rVHlwZVN5bmMocmVsYXRpdmUudG9Dd2QsIHR5cGUpXG4gIGNvbnN0IGRpciA9IHBhdGguZGlybmFtZShkc3RwYXRoKVxuICBjb25zdCBleGlzdHMgPSBmcy5leGlzdHNTeW5jKGRpcilcbiAgaWYgKGV4aXN0cykgcmV0dXJuIGZzLnN5bWxpbmtTeW5jKHNyY3BhdGgsIGRzdHBhdGgsIHR5cGUpXG4gIG1rZGlyc1N5bmMoZGlyKVxuICByZXR1cm4gZnMuc3ltbGlua1N5bmMoc3JjcGF0aCwgZHN0cGF0aCwgdHlwZSlcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGNyZWF0ZVN5bWxpbmssXG4gIGNyZWF0ZVN5bWxpbmtTeW5jLFxuICAvLyBhbGlhc1xuICBlbnN1cmVTeW1saW5rOiBjcmVhdGVTeW1saW5rLFxuICBlbnN1cmVTeW1saW5rU3luYzogY3JlYXRlU3ltbGlua1N5bmNcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5jb25zdCBhc3NpZ24gPSByZXF1aXJlKCcuL3V0aWwvYXNzaWduJylcblxuY29uc3QgZnNlID0ge31cbmNvbnN0IGdmcyA9IHJlcXVpcmUoJ2dyYWNlZnVsLWZzJylcblxuLy8gYXR0YWNoIGZzIG1ldGhvZHMgdG8gZnNlXG5PYmplY3Qua2V5cyhnZnMpLmZvckVhY2goa2V5ID0+IHtcbiAgZnNlW2tleV0gPSBnZnNba2V5XVxufSlcblxuY29uc3QgZnMgPSBmc2VcblxuYXNzaWduKGZzLCByZXF1aXJlKCcuL2NvcHknKSlcbmFzc2lnbihmcywgcmVxdWlyZSgnLi9jb3B5LXN5bmMnKSlcbmFzc2lnbihmcywgcmVxdWlyZSgnLi9ta2RpcnMnKSlcbmFzc2lnbihmcywgcmVxdWlyZSgnLi9yZW1vdmUnKSlcbmFzc2lnbihmcywgcmVxdWlyZSgnLi9qc29uJykpXG5hc3NpZ24oZnMsIHJlcXVpcmUoJy4vbW92ZScpKVxuYXNzaWduKGZzLCByZXF1aXJlKCcuL21vdmUtc3luYycpKVxuYXNzaWduKGZzLCByZXF1aXJlKCcuL2VtcHR5JykpXG5hc3NpZ24oZnMsIHJlcXVpcmUoJy4vZW5zdXJlJykpXG5hc3NpZ24oZnMsIHJlcXVpcmUoJy4vb3V0cHV0JykpXG5cbm1vZHVsZS5leHBvcnRzID0gZnNcblxuLy8gbWFpbnRhaW4gYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgZm9yIGF3aGlsZVxuY29uc3QganNvbmZpbGUgPSB7fVxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGpzb25maWxlLCAnc3BhY2VzJywge1xuICBnZXQ6ICgpID0+IGZzLnNwYWNlcywgLy8gZm91bmQgaW4gLi9qc29uXG4gIHNldDogdmFsID0+IHtcbiAgICBmcy5zcGFjZXMgPSB2YWxcbiAgfVxufSlcblxubW9kdWxlLmV4cG9ydHMuanNvbmZpbGUgPSBqc29uZmlsZSAvLyBzbyB1c2VycyBvZiBmcy1leHRyYSBjYW4gbW9kaWZ5IGpzb25GaWxlLnNwYWNlc1xuIiwiJ3VzZSBzdHJpY3QnXG5cbmNvbnN0IGpzb25GaWxlID0gcmVxdWlyZSgnLi9qc29uZmlsZScpXG5cbmpzb25GaWxlLm91dHB1dEpzb25TeW5jID0gcmVxdWlyZSgnLi9vdXRwdXQtanNvbi1zeW5jJylcbmpzb25GaWxlLm91dHB1dEpzb24gPSByZXF1aXJlKCcuL291dHB1dC1qc29uJylcbi8vIGFsaWFzZXNcbmpzb25GaWxlLm91dHB1dEpTT05TeW5jID0gcmVxdWlyZSgnLi9vdXRwdXQtanNvbi1zeW5jJylcbmpzb25GaWxlLm91dHB1dEpTT04gPSByZXF1aXJlKCcuL291dHB1dC1qc29uJylcblxubW9kdWxlLmV4cG9ydHMgPSBqc29uRmlsZVxuIiwiJ3VzZSBzdHJpY3QnXG5cbmNvbnN0IGpzb25GaWxlID0gcmVxdWlyZSgnanNvbmZpbGUnKVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgLy8ganNvbmZpbGUgZXhwb3J0c1xuICByZWFkSnNvbjoganNvbkZpbGUucmVhZEZpbGUsXG4gIHJlYWRKU09OOiBqc29uRmlsZS5yZWFkRmlsZSxcbiAgcmVhZEpzb25TeW5jOiBqc29uRmlsZS5yZWFkRmlsZVN5bmMsXG4gIHJlYWRKU09OU3luYzoganNvbkZpbGUucmVhZEZpbGVTeW5jLFxuICB3cml0ZUpzb246IGpzb25GaWxlLndyaXRlRmlsZSxcbiAgd3JpdGVKU09OOiBqc29uRmlsZS53cml0ZUZpbGUsXG4gIHdyaXRlSnNvblN5bmM6IGpzb25GaWxlLndyaXRlRmlsZVN5bmMsXG4gIHdyaXRlSlNPTlN5bmM6IGpzb25GaWxlLndyaXRlRmlsZVN5bmMsXG4gIHNwYWNlczogMiAvLyBkZWZhdWx0IGluIGZzLWV4dHJhXG59XG4iLCIndXNlIHN0cmljdCdcblxuY29uc3QgZnMgPSByZXF1aXJlKCdncmFjZWZ1bC1mcycpXG5jb25zdCBwYXRoID0gcmVxdWlyZSgncGF0aCcpXG5jb25zdCBta2RpciA9IHJlcXVpcmUoJy4uL21rZGlycycpXG5jb25zdCBqc29uRmlsZSA9IHJlcXVpcmUoJy4vanNvbmZpbGUnKVxuXG5mdW5jdGlvbiBvdXRwdXRKc29uU3luYyAoZmlsZSwgZGF0YSwgb3B0aW9ucykge1xuICBjb25zdCBkaXIgPSBwYXRoLmRpcm5hbWUoZmlsZSlcblxuICBpZiAoIWZzLmV4aXN0c1N5bmMoZGlyKSkge1xuICAgIG1rZGlyLm1rZGlyc1N5bmMoZGlyKVxuICB9XG5cbiAganNvbkZpbGUud3JpdGVKc29uU3luYyhmaWxlLCBkYXRhLCBvcHRpb25zKVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG91dHB1dEpzb25TeW5jXG4iLCIndXNlIHN0cmljdCdcblxuY29uc3QgZnMgPSByZXF1aXJlKCdncmFjZWZ1bC1mcycpXG5jb25zdCBwYXRoID0gcmVxdWlyZSgncGF0aCcpXG5jb25zdCBta2RpciA9IHJlcXVpcmUoJy4uL21rZGlycycpXG5jb25zdCBqc29uRmlsZSA9IHJlcXVpcmUoJy4vanNvbmZpbGUnKVxuXG5mdW5jdGlvbiBvdXRwdXRKc29uIChmaWxlLCBkYXRhLCBvcHRpb25zLCBjYWxsYmFjaykge1xuICBpZiAodHlwZW9mIG9wdGlvbnMgPT09ICdmdW5jdGlvbicpIHtcbiAgICBjYWxsYmFjayA9IG9wdGlvbnNcbiAgICBvcHRpb25zID0ge31cbiAgfVxuXG4gIGNvbnN0IGRpciA9IHBhdGguZGlybmFtZShmaWxlKVxuXG4gIGZzLmV4aXN0cyhkaXIsIGl0RG9lcyA9PiB7XG4gICAgaWYgKGl0RG9lcykgcmV0dXJuIGpzb25GaWxlLndyaXRlSnNvbihmaWxlLCBkYXRhLCBvcHRpb25zLCBjYWxsYmFjaylcblxuICAgIG1rZGlyLm1rZGlycyhkaXIsIGVyciA9PiB7XG4gICAgICBpZiAoZXJyKSByZXR1cm4gY2FsbGJhY2soZXJyKVxuICAgICAganNvbkZpbGUud3JpdGVKc29uKGZpbGUsIGRhdGEsIG9wdGlvbnMsIGNhbGxiYWNrKVxuICAgIH0pXG4gIH0pXG59XG5cbm1vZHVsZS5leHBvcnRzID0gb3V0cHV0SnNvblxuIiwibW9kdWxlLmV4cG9ydHMgPSB7XG4gIG1rZGlyczogcmVxdWlyZSgnLi9ta2RpcnMnKSxcbiAgbWtkaXJzU3luYzogcmVxdWlyZSgnLi9ta2RpcnMtc3luYycpLFxuICAvLyBhbGlhc1xuICBta2RpcnA6IHJlcXVpcmUoJy4vbWtkaXJzJyksXG4gIG1rZGlycFN5bmM6IHJlcXVpcmUoJy4vbWtkaXJzLXN5bmMnKSxcbiAgZW5zdXJlRGlyOiByZXF1aXJlKCcuL21rZGlycycpLFxuICBlbnN1cmVEaXJTeW5jOiByZXF1aXJlKCcuL21rZGlycy1zeW5jJylcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5jb25zdCBmcyA9IHJlcXVpcmUoJ2dyYWNlZnVsLWZzJylcbmNvbnN0IHBhdGggPSByZXF1aXJlKCdwYXRoJylcbmNvbnN0IGludmFsaWRXaW4zMlBhdGggPSByZXF1aXJlKCcuL3dpbjMyJykuaW52YWxpZFdpbjMyUGF0aFxuXG5jb25zdCBvNzc3ID0gcGFyc2VJbnQoJzA3NzcnLCA4KVxuXG5mdW5jdGlvbiBta2RpcnNTeW5jIChwLCBvcHRzLCBtYWRlKSB7XG4gIGlmICghb3B0cyB8fCB0eXBlb2Ygb3B0cyAhPT0gJ29iamVjdCcpIHtcbiAgICBvcHRzID0geyBtb2RlOiBvcHRzIH1cbiAgfVxuXG4gIGxldCBtb2RlID0gb3B0cy5tb2RlXG4gIGNvbnN0IHhmcyA9IG9wdHMuZnMgfHwgZnNcblxuICBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJyAmJiBpbnZhbGlkV2luMzJQYXRoKHApKSB7XG4gICAgY29uc3QgZXJySW52YWwgPSBuZXcgRXJyb3IocCArICcgY29udGFpbnMgaW52YWxpZCBXSU4zMiBwYXRoIGNoYXJhY3RlcnMuJylcbiAgICBlcnJJbnZhbC5jb2RlID0gJ0VJTlZBTCdcbiAgICB0aHJvdyBlcnJJbnZhbFxuICB9XG5cbiAgaWYgKG1vZGUgPT09IHVuZGVmaW5lZCkge1xuICAgIG1vZGUgPSBvNzc3ICYgKH5wcm9jZXNzLnVtYXNrKCkpXG4gIH1cbiAgaWYgKCFtYWRlKSBtYWRlID0gbnVsbFxuXG4gIHAgPSBwYXRoLnJlc29sdmUocClcblxuICB0cnkge1xuICAgIHhmcy5ta2RpclN5bmMocCwgbW9kZSlcbiAgICBtYWRlID0gbWFkZSB8fCBwXG4gIH0gY2F0Y2ggKGVycjApIHtcbiAgICBzd2l0Y2ggKGVycjAuY29kZSkge1xuICAgICAgY2FzZSAnRU5PRU5UJzpcbiAgICAgICAgaWYgKHBhdGguZGlybmFtZShwKSA9PT0gcCkgdGhyb3cgZXJyMFxuICAgICAgICBtYWRlID0gbWtkaXJzU3luYyhwYXRoLmRpcm5hbWUocCksIG9wdHMsIG1hZGUpXG4gICAgICAgIG1rZGlyc1N5bmMocCwgb3B0cywgbWFkZSlcbiAgICAgICAgYnJlYWtcblxuICAgICAgLy8gSW4gdGhlIGNhc2Ugb2YgYW55IG90aGVyIGVycm9yLCBqdXN0IHNlZSBpZiB0aGVyZSdzIGEgZGlyXG4gICAgICAvLyB0aGVyZSBhbHJlYWR5LiAgSWYgc28sIHRoZW4gaG9vcmF5ISAgSWYgbm90LCB0aGVuIHNvbWV0aGluZ1xuICAgICAgLy8gaXMgYm9ya2VkLlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgbGV0IHN0YXRcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBzdGF0ID0geGZzLnN0YXRTeW5jKHApXG4gICAgICAgIH0gY2F0Y2ggKGVycjEpIHtcbiAgICAgICAgICB0aHJvdyBlcnIwXG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFzdGF0LmlzRGlyZWN0b3J5KCkpIHRocm93IGVycjBcbiAgICAgICAgYnJlYWtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbWFkZVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG1rZGlyc1N5bmNcbiIsIid1c2Ugc3RyaWN0J1xuXG5jb25zdCBmcyA9IHJlcXVpcmUoJ2dyYWNlZnVsLWZzJylcbmNvbnN0IHBhdGggPSByZXF1aXJlKCdwYXRoJylcbmNvbnN0IGludmFsaWRXaW4zMlBhdGggPSByZXF1aXJlKCcuL3dpbjMyJykuaW52YWxpZFdpbjMyUGF0aFxuXG5jb25zdCBvNzc3ID0gcGFyc2VJbnQoJzA3NzcnLCA4KVxuXG5mdW5jdGlvbiBta2RpcnMgKHAsIG9wdHMsIGNhbGxiYWNrLCBtYWRlKSB7XG4gIGlmICh0eXBlb2Ygb3B0cyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGNhbGxiYWNrID0gb3B0c1xuICAgIG9wdHMgPSB7fVxuICB9IGVsc2UgaWYgKCFvcHRzIHx8IHR5cGVvZiBvcHRzICE9PSAnb2JqZWN0Jykge1xuICAgIG9wdHMgPSB7IG1vZGU6IG9wdHMgfVxuICB9XG5cbiAgaWYgKHByb2Nlc3MucGxhdGZvcm0gPT09ICd3aW4zMicgJiYgaW52YWxpZFdpbjMyUGF0aChwKSkge1xuICAgIGNvbnN0IGVyckludmFsID0gbmV3IEVycm9yKHAgKyAnIGNvbnRhaW5zIGludmFsaWQgV0lOMzIgcGF0aCBjaGFyYWN0ZXJzLicpXG4gICAgZXJySW52YWwuY29kZSA9ICdFSU5WQUwnXG4gICAgcmV0dXJuIGNhbGxiYWNrKGVyckludmFsKVxuICB9XG5cbiAgbGV0IG1vZGUgPSBvcHRzLm1vZGVcbiAgY29uc3QgeGZzID0gb3B0cy5mcyB8fCBmc1xuXG4gIGlmIChtb2RlID09PSB1bmRlZmluZWQpIHtcbiAgICBtb2RlID0gbzc3NyAmICh+cHJvY2Vzcy51bWFzaygpKVxuICB9XG4gIGlmICghbWFkZSkgbWFkZSA9IG51bGxcblxuICBjYWxsYmFjayA9IGNhbGxiYWNrIHx8IGZ1bmN0aW9uICgpIHt9XG4gIHAgPSBwYXRoLnJlc29sdmUocClcblxuICB4ZnMubWtkaXIocCwgbW9kZSwgZXIgPT4ge1xuICAgIGlmICghZXIpIHtcbiAgICAgIG1hZGUgPSBtYWRlIHx8IHBcbiAgICAgIHJldHVybiBjYWxsYmFjayhudWxsLCBtYWRlKVxuICAgIH1cbiAgICBzd2l0Y2ggKGVyLmNvZGUpIHtcbiAgICAgIGNhc2UgJ0VOT0VOVCc6XG4gICAgICAgIGlmIChwYXRoLmRpcm5hbWUocCkgPT09IHApIHJldHVybiBjYWxsYmFjayhlcilcbiAgICAgICAgbWtkaXJzKHBhdGguZGlybmFtZShwKSwgb3B0cywgKGVyLCBtYWRlKSA9PiB7XG4gICAgICAgICAgaWYgKGVyKSBjYWxsYmFjayhlciwgbWFkZSlcbiAgICAgICAgICBlbHNlIG1rZGlycyhwLCBvcHRzLCBjYWxsYmFjaywgbWFkZSlcbiAgICAgICAgfSlcbiAgICAgICAgYnJlYWtcblxuICAgICAgLy8gSW4gdGhlIGNhc2Ugb2YgYW55IG90aGVyIGVycm9yLCBqdXN0IHNlZSBpZiB0aGVyZSdzIGEgZGlyXG4gICAgICAvLyB0aGVyZSBhbHJlYWR5LiAgSWYgc28sIHRoZW4gaG9vcmF5ISAgSWYgbm90LCB0aGVuIHNvbWV0aGluZ1xuICAgICAgLy8gaXMgYm9ya2VkLlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgeGZzLnN0YXQocCwgKGVyMiwgc3RhdCkgPT4ge1xuICAgICAgICAgIC8vIGlmIHRoZSBzdGF0IGZhaWxzLCB0aGVuIHRoYXQncyBzdXBlciB3ZWlyZC5cbiAgICAgICAgICAvLyBsZXQgdGhlIG9yaWdpbmFsIGVycm9yIGJlIHRoZSBmYWlsdXJlIHJlYXNvbi5cbiAgICAgICAgICBpZiAoZXIyIHx8ICFzdGF0LmlzRGlyZWN0b3J5KCkpIGNhbGxiYWNrKGVyLCBtYWRlKVxuICAgICAgICAgIGVsc2UgY2FsbGJhY2sobnVsbCwgbWFkZSlcbiAgICAgICAgfSlcbiAgICAgICAgYnJlYWtcbiAgICB9XG4gIH0pXG59XG5cbm1vZHVsZS5leHBvcnRzID0gbWtkaXJzXG4iLCIndXNlIHN0cmljdCdcblxuY29uc3QgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKVxuXG4vLyBnZXQgZHJpdmUgb24gd2luZG93c1xuZnVuY3Rpb24gZ2V0Um9vdFBhdGggKHApIHtcbiAgcCA9IHBhdGgubm9ybWFsaXplKHBhdGgucmVzb2x2ZShwKSkuc3BsaXQocGF0aC5zZXApXG4gIGlmIChwLmxlbmd0aCA+IDApIHJldHVybiBwWzBdXG4gIHJldHVybiBudWxsXG59XG5cbi8vIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9hLzYyODg4LzEwMzMzIGNvbnRhaW5zIG1vcmUgYWNjdXJhdGVcbi8vIFRPRE86IGV4cGFuZCB0byBpbmNsdWRlIHRoZSByZXN0XG5jb25zdCBJTlZBTElEX1BBVEhfQ0hBUlMgPSAvWzw+OlwifD8qXS9cblxuZnVuY3Rpb24gaW52YWxpZFdpbjMyUGF0aCAocCkge1xuICBjb25zdCBycCA9IGdldFJvb3RQYXRoKHApXG4gIHAgPSBwLnJlcGxhY2UocnAsICcnKVxuICByZXR1cm4gSU5WQUxJRF9QQVRIX0NIQVJTLnRlc3QocClcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGdldFJvb3RQYXRoLFxuICBpbnZhbGlkV2luMzJQYXRoXG59XG4iLCIndXNlIHN0cmljdCdcblxuY29uc3QgZnMgPSByZXF1aXJlKCdncmFjZWZ1bC1mcycpXG5jb25zdCBwYXRoID0gcmVxdWlyZSgncGF0aCcpXG5jb25zdCBjb3B5U3luYyA9IHJlcXVpcmUoJy4uL2NvcHktc3luYycpLmNvcHlTeW5jXG5jb25zdCByZW1vdmVTeW5jID0gcmVxdWlyZSgnLi4vcmVtb3ZlJykucmVtb3ZlU3luY1xuY29uc3QgbWtkaXJwU3luYyA9IHJlcXVpcmUoJy4uL21rZGlycycpLm1rZGlyc1N5bmNcblxuZnVuY3Rpb24gbW92ZVN5bmMgKHNyYywgZGVzdCwgb3B0aW9ucykge1xuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fVxuICBjb25zdCBvdmVyd3JpdGUgPSBvcHRpb25zLm92ZXJ3cml0ZSB8fCBvcHRpb25zLmNsb2JiZXIgfHwgZmFsc2VcblxuICBzcmMgPSBwYXRoLnJlc29sdmUoc3JjKVxuICBkZXN0ID0gcGF0aC5yZXNvbHZlKGRlc3QpXG5cbiAgaWYgKHNyYyA9PT0gZGVzdCkgcmV0dXJuXG5cbiAgaWYgKGlzU3JjU3ViZGlyKHNyYywgZGVzdCkpIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IG1vdmUgJyR7c3JjfScgaW50byBpdHNlbGYgJyR7ZGVzdH0nLmApXG5cbiAgbWtkaXJwU3luYyhwYXRoLmRpcm5hbWUoZGVzdCkpXG4gIHRyeVJlbmFtZVN5bmMoKVxuXG4gIGZ1bmN0aW9uIHRyeVJlbmFtZVN5bmMgKCkge1xuICAgIGlmIChvdmVyd3JpdGUpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBmcy5yZW5hbWVTeW5jKHNyYywgZGVzdClcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBpZiAoZXJyLmNvZGUgPT09ICdFTk9URU1QVFknIHx8IGVyci5jb2RlID09PSAnRUVYSVNUJyB8fCBlcnIuY29kZSA9PT0gJ0VQRVJNJykge1xuICAgICAgICAgIHJlbW92ZVN5bmMoZGVzdClcbiAgICAgICAgICBvcHRpb25zLm92ZXJ3cml0ZSA9IGZhbHNlIC8vIGp1c3Qgb3ZlcndyaXRlZWQgaXQsIG5vIG5lZWQgdG8gZG8gaXQgYWdhaW5cbiAgICAgICAgICByZXR1cm4gbW92ZVN5bmMoc3JjLCBkZXN0LCBvcHRpb25zKVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGVyci5jb2RlICE9PSAnRVhERVYnKSB0aHJvdyBlcnJcbiAgICAgICAgcmV0dXJuIG1vdmVTeW5jQWNyb3NzRGV2aWNlKHNyYywgZGVzdCwgb3ZlcndyaXRlKVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0cnkge1xuICAgICAgICBmcy5saW5rU3luYyhzcmMsIGRlc3QpXG4gICAgICAgIHJldHVybiBmcy51bmxpbmtTeW5jKHNyYylcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBpZiAoZXJyLmNvZGUgPT09ICdFWERFVicgfHwgZXJyLmNvZGUgPT09ICdFSVNESVInIHx8IGVyci5jb2RlID09PSAnRVBFUk0nIHx8IGVyci5jb2RlID09PSAnRU5PVFNVUCcpIHtcbiAgICAgICAgICByZXR1cm4gbW92ZVN5bmNBY3Jvc3NEZXZpY2Uoc3JjLCBkZXN0LCBvdmVyd3JpdGUpXG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgZXJyXG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIG1vdmVTeW5jQWNyb3NzRGV2aWNlIChzcmMsIGRlc3QsIG92ZXJ3cml0ZSkge1xuICBjb25zdCBzdGF0ID0gZnMuc3RhdFN5bmMoc3JjKVxuXG4gIGlmIChzdGF0LmlzRGlyZWN0b3J5KCkpIHtcbiAgICByZXR1cm4gbW92ZURpclN5bmNBY3Jvc3NEZXZpY2Uoc3JjLCBkZXN0LCBvdmVyd3JpdGUpXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG1vdmVGaWxlU3luY0Fjcm9zc0RldmljZShzcmMsIGRlc3QsIG92ZXJ3cml0ZSlcbiAgfVxufVxuXG5mdW5jdGlvbiBtb3ZlRmlsZVN5bmNBY3Jvc3NEZXZpY2UgKHNyYywgZGVzdCwgb3ZlcndyaXRlKSB7XG4gIGNvbnN0IEJVRl9MRU5HVEggPSA2NCAqIDEwMjRcbiAgY29uc3QgX2J1ZmYgPSBuZXcgQnVmZmVyKEJVRl9MRU5HVEgpXG5cbiAgY29uc3QgZmxhZ3MgPSBvdmVyd3JpdGUgPyAndycgOiAnd3gnXG5cbiAgY29uc3QgZmRyID0gZnMub3BlblN5bmMoc3JjLCAncicpXG4gIGNvbnN0IHN0YXQgPSBmcy5mc3RhdFN5bmMoZmRyKVxuICBjb25zdCBmZHcgPSBmcy5vcGVuU3luYyhkZXN0LCBmbGFncywgc3RhdC5tb2RlKVxuICBsZXQgYnl0ZXNSZWFkID0gMVxuICBsZXQgcG9zID0gMFxuXG4gIHdoaWxlIChieXRlc1JlYWQgPiAwKSB7XG4gICAgYnl0ZXNSZWFkID0gZnMucmVhZFN5bmMoZmRyLCBfYnVmZiwgMCwgQlVGX0xFTkdUSCwgcG9zKVxuICAgIGZzLndyaXRlU3luYyhmZHcsIF9idWZmLCAwLCBieXRlc1JlYWQpXG4gICAgcG9zICs9IGJ5dGVzUmVhZFxuICB9XG5cbiAgZnMuY2xvc2VTeW5jKGZkcilcbiAgZnMuY2xvc2VTeW5jKGZkdylcbiAgcmV0dXJuIGZzLnVubGlua1N5bmMoc3JjKVxufVxuXG5mdW5jdGlvbiBtb3ZlRGlyU3luY0Fjcm9zc0RldmljZSAoc3JjLCBkZXN0LCBvdmVyd3JpdGUpIHtcbiAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICBvdmVyd3JpdGU6IGZhbHNlXG4gIH1cblxuICBpZiAob3ZlcndyaXRlKSB7XG4gICAgcmVtb3ZlU3luYyhkZXN0KVxuICAgIHRyeUNvcHlTeW5jKClcbiAgfSBlbHNlIHtcbiAgICB0cnlDb3B5U3luYygpXG4gIH1cblxuICBmdW5jdGlvbiB0cnlDb3B5U3luYyAoKSB7XG4gICAgY29weVN5bmMoc3JjLCBkZXN0LCBvcHRpb25zKVxuICAgIHJldHVybiByZW1vdmVTeW5jKHNyYylcbiAgfVxufVxuXG4vLyByZXR1cm4gdHJ1ZSBpZiBkZXN0IGlzIGEgc3ViZGlyIG9mIHNyYywgb3RoZXJ3aXNlIGZhbHNlLlxuLy8gZXh0cmFjdCBkZXN0IGJhc2UgZGlyIGFuZCBjaGVjayBpZiB0aGF0IGlzIHRoZSBzYW1lIGFzIHNyYyBiYXNlbmFtZVxuZnVuY3Rpb24gaXNTcmNTdWJkaXIgKHNyYywgZGVzdCkge1xuICB0cnkge1xuICAgIHJldHVybiBmcy5zdGF0U3luYyhzcmMpLmlzRGlyZWN0b3J5KCkgJiZcbiAgICAgICAgICAgc3JjICE9PSBkZXN0ICYmXG4gICAgICAgICAgIGRlc3QuaW5kZXhPZihzcmMpID4gLTEgJiZcbiAgICAgICAgICAgZGVzdC5zcGxpdChwYXRoLmRpcm5hbWUoc3JjKSArIHBhdGguc2VwKVsxXS5zcGxpdChwYXRoLnNlcClbMF0gPT09IHBhdGguYmFzZW5hbWUoc3JjKVxuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIG1vdmVTeW5jXG59XG4iLCIndXNlIHN0cmljdCdcblxuLy8gbW9zdCBvZiB0aGlzIGNvZGUgd2FzIHdyaXR0ZW4gYnkgQW5kcmV3IEtlbGxleVxuLy8gbGljZW5zZWQgdW5kZXIgdGhlIEJTRCBsaWNlbnNlOiBzZWVcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmRyZXdyay9ub2RlLW12L2Jsb2IvbWFzdGVyL3BhY2thZ2UuanNvblxuXG4vLyB0aGlzIG5lZWRzIGEgY2xlYW51cFxuXG5jb25zdCBmcyA9IHJlcXVpcmUoJ2dyYWNlZnVsLWZzJylcbmNvbnN0IG5jcCA9IHJlcXVpcmUoJy4uL2NvcHkvbmNwJylcbmNvbnN0IHBhdGggPSByZXF1aXJlKCdwYXRoJylcbmNvbnN0IHJlbW92ZSA9IHJlcXVpcmUoJy4uL3JlbW92ZScpLnJlbW92ZVxuY29uc3QgbWtkaXJwID0gcmVxdWlyZSgnLi4vbWtkaXJzJykubWtkaXJzXG5cbmZ1bmN0aW9uIG1vdmUgKHNvdXJjZSwgZGVzdCwgb3B0aW9ucywgY2FsbGJhY2spIHtcbiAgaWYgKHR5cGVvZiBvcHRpb25zID09PSAnZnVuY3Rpb24nKSB7XG4gICAgY2FsbGJhY2sgPSBvcHRpb25zXG4gICAgb3B0aW9ucyA9IHt9XG4gIH1cblxuICBjb25zdCBzaG91bGRNa2RpcnAgPSAoJ21rZGlycCcgaW4gb3B0aW9ucykgPyBvcHRpb25zLm1rZGlycCA6IHRydWVcbiAgY29uc3Qgb3ZlcndyaXRlID0gb3B0aW9ucy5vdmVyd3JpdGUgfHwgb3B0aW9ucy5jbG9iYmVyIHx8IGZhbHNlXG5cbiAgaWYgKHNob3VsZE1rZGlycCkge1xuICAgIG1rZGlycygpXG4gIH0gZWxzZSB7XG4gICAgZG9SZW5hbWUoKVxuICB9XG5cbiAgZnVuY3Rpb24gbWtkaXJzICgpIHtcbiAgICBta2RpcnAocGF0aC5kaXJuYW1lKGRlc3QpLCBlcnIgPT4ge1xuICAgICAgaWYgKGVycikgcmV0dXJuIGNhbGxiYWNrKGVycilcbiAgICAgIGRvUmVuYW1lKClcbiAgICB9KVxuICB9XG5cbiAgZnVuY3Rpb24gZG9SZW5hbWUgKCkge1xuICAgIGlmIChwYXRoLnJlc29sdmUoc291cmNlKSA9PT0gcGF0aC5yZXNvbHZlKGRlc3QpKSB7XG4gICAgICBzZXRJbW1lZGlhdGUoY2FsbGJhY2spXG4gICAgfSBlbHNlIGlmIChvdmVyd3JpdGUpIHtcbiAgICAgIGZzLnJlbmFtZShzb3VyY2UsIGRlc3QsIGVyciA9PiB7XG4gICAgICAgIGlmICghZXJyKSByZXR1cm4gY2FsbGJhY2soKVxuXG4gICAgICAgIGlmIChlcnIuY29kZSA9PT0gJ0VOT1RFTVBUWScgfHwgZXJyLmNvZGUgPT09ICdFRVhJU1QnKSB7XG4gICAgICAgICAgcmVtb3ZlKGRlc3QsIGVyciA9PiB7XG4gICAgICAgICAgICBpZiAoZXJyKSByZXR1cm4gY2FsbGJhY2soZXJyKVxuICAgICAgICAgICAgb3B0aW9ucy5vdmVyd3JpdGUgPSBmYWxzZSAvLyBqdXN0IG92ZXJ3cml0ZWVkIGl0LCBubyBuZWVkIHRvIGRvIGl0IGFnYWluXG4gICAgICAgICAgICBtb3ZlKHNvdXJjZSwgZGVzdCwgb3B0aW9ucywgY2FsbGJhY2spXG4gICAgICAgICAgfSlcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHdlaXJkIFdpbmRvd3Mgc2hpdFxuICAgICAgICBpZiAoZXJyLmNvZGUgPT09ICdFUEVSTScpIHtcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHJlbW92ZShkZXN0LCBlcnIgPT4ge1xuICAgICAgICAgICAgICBpZiAoZXJyKSByZXR1cm4gY2FsbGJhY2soZXJyKVxuICAgICAgICAgICAgICBvcHRpb25zLm92ZXJ3cml0ZSA9IGZhbHNlXG4gICAgICAgICAgICAgIG1vdmUoc291cmNlLCBkZXN0LCBvcHRpb25zLCBjYWxsYmFjaylcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfSwgMjAwKVxuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGVyci5jb2RlICE9PSAnRVhERVYnKSByZXR1cm4gY2FsbGJhY2soZXJyKVxuICAgICAgICBtb3ZlQWNyb3NzRGV2aWNlKHNvdXJjZSwgZGVzdCwgb3ZlcndyaXRlLCBjYWxsYmFjaylcbiAgICAgIH0pXG4gICAgfSBlbHNlIHtcbiAgICAgIGZzLmxpbmsoc291cmNlLCBkZXN0LCBlcnIgPT4ge1xuICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgaWYgKGVyci5jb2RlID09PSAnRVhERVYnIHx8IGVyci5jb2RlID09PSAnRUlTRElSJyB8fCBlcnIuY29kZSA9PT0gJ0VQRVJNJyB8fCBlcnIuY29kZSA9PT0gJ0VOT1RTVVAnKSB7XG4gICAgICAgICAgICBtb3ZlQWNyb3NzRGV2aWNlKHNvdXJjZSwgZGVzdCwgb3ZlcndyaXRlLCBjYWxsYmFjaylcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgIH1cbiAgICAgICAgICBjYWxsYmFjayhlcnIpXG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cbiAgICAgICAgZnMudW5saW5rKHNvdXJjZSwgY2FsbGJhY2spXG4gICAgICB9KVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBtb3ZlQWNyb3NzRGV2aWNlIChzb3VyY2UsIGRlc3QsIG92ZXJ3cml0ZSwgY2FsbGJhY2spIHtcbiAgZnMuc3RhdChzb3VyY2UsIChlcnIsIHN0YXQpID0+IHtcbiAgICBpZiAoZXJyKSB7XG4gICAgICBjYWxsYmFjayhlcnIpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoc3RhdC5pc0RpcmVjdG9yeSgpKSB7XG4gICAgICBtb3ZlRGlyQWNyb3NzRGV2aWNlKHNvdXJjZSwgZGVzdCwgb3ZlcndyaXRlLCBjYWxsYmFjaylcbiAgICB9IGVsc2Uge1xuICAgICAgbW92ZUZpbGVBY3Jvc3NEZXZpY2Uoc291cmNlLCBkZXN0LCBvdmVyd3JpdGUsIGNhbGxiYWNrKVxuICAgIH1cbiAgfSlcbn1cblxuZnVuY3Rpb24gbW92ZUZpbGVBY3Jvc3NEZXZpY2UgKHNvdXJjZSwgZGVzdCwgb3ZlcndyaXRlLCBjYWxsYmFjaykge1xuICBjb25zdCBmbGFncyA9IG92ZXJ3cml0ZSA/ICd3JyA6ICd3eCdcbiAgY29uc3QgaW5zID0gZnMuY3JlYXRlUmVhZFN0cmVhbShzb3VyY2UpXG4gIGNvbnN0IG91dHMgPSBmcy5jcmVhdGVXcml0ZVN0cmVhbShkZXN0LCB7IGZsYWdzIH0pXG5cbiAgaW5zLm9uKCdlcnJvcicsIGVyciA9PiB7XG4gICAgaW5zLmRlc3Ryb3koKVxuICAgIG91dHMuZGVzdHJveSgpXG4gICAgb3V0cy5yZW1vdmVMaXN0ZW5lcignY2xvc2UnLCBvbkNsb3NlKVxuXG4gICAgLy8gbWF5IHdhbnQgdG8gY3JlYXRlIGEgZGlyZWN0b3J5IGJ1dCBgb3V0YCBsaW5lIGFib3ZlXG4gICAgLy8gY3JlYXRlcyBhbiBlbXB0eSBmaWxlIGZvciB1czogU2VlICMxMDhcbiAgICAvLyBkb24ndCBjYXJlIGFib3V0IGVycm9yIGhlcmVcbiAgICBmcy51bmxpbmsoZGVzdCwgKCkgPT4ge1xuICAgICAgLy8gbm90ZTogYGVycmAgaGVyZSBpcyBmcm9tIHRoZSBpbnB1dCBzdHJlYW0gZXJycm9yXG4gICAgICBpZiAoZXJyLmNvZGUgPT09ICdFSVNESVInIHx8IGVyci5jb2RlID09PSAnRVBFUk0nKSB7XG4gICAgICAgIG1vdmVEaXJBY3Jvc3NEZXZpY2Uoc291cmNlLCBkZXN0LCBvdmVyd3JpdGUsIGNhbGxiYWNrKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2FsbGJhY2soZXJyKVxuICAgICAgfVxuICAgIH0pXG4gIH0pXG5cbiAgb3V0cy5vbignZXJyb3InLCBlcnIgPT4ge1xuICAgIGlucy5kZXN0cm95KClcbiAgICBvdXRzLmRlc3Ryb3koKVxuICAgIG91dHMucmVtb3ZlTGlzdGVuZXIoJ2Nsb3NlJywgb25DbG9zZSlcbiAgICBjYWxsYmFjayhlcnIpXG4gIH0pXG5cbiAgb3V0cy5vbmNlKCdjbG9zZScsIG9uQ2xvc2UpXG4gIGlucy5waXBlKG91dHMpXG5cbiAgZnVuY3Rpb24gb25DbG9zZSAoKSB7XG4gICAgZnMudW5saW5rKHNvdXJjZSwgY2FsbGJhY2spXG4gIH1cbn1cblxuZnVuY3Rpb24gbW92ZURpckFjcm9zc0RldmljZSAoc291cmNlLCBkZXN0LCBvdmVyd3JpdGUsIGNhbGxiYWNrKSB7XG4gIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgb3ZlcndyaXRlOiBmYWxzZVxuICB9XG5cbiAgaWYgKG92ZXJ3cml0ZSkge1xuICAgIHJlbW92ZShkZXN0LCBlcnIgPT4ge1xuICAgICAgaWYgKGVycikgcmV0dXJuIGNhbGxiYWNrKGVycilcbiAgICAgIHN0YXJ0TmNwKClcbiAgICB9KVxuICB9IGVsc2Uge1xuICAgIHN0YXJ0TmNwKClcbiAgfVxuXG4gIGZ1bmN0aW9uIHN0YXJ0TmNwICgpIHtcbiAgICBuY3Aoc291cmNlLCBkZXN0LCBvcHRpb25zLCBlcnIgPT4ge1xuICAgICAgaWYgKGVycikgcmV0dXJuIGNhbGxiYWNrKGVycilcbiAgICAgIHJlbW92ZShzb3VyY2UsIGNhbGxiYWNrKVxuICAgIH0pXG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIG1vdmVcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5jb25zdCBmcyA9IHJlcXVpcmUoJ2dyYWNlZnVsLWZzJylcbmNvbnN0IHBhdGggPSByZXF1aXJlKCdwYXRoJylcbmNvbnN0IG1rZGlyID0gcmVxdWlyZSgnLi4vbWtkaXJzJylcblxuZnVuY3Rpb24gb3V0cHV0RmlsZSAoZmlsZSwgZGF0YSwgZW5jb2RpbmcsIGNhbGxiYWNrKSB7XG4gIGlmICh0eXBlb2YgZW5jb2RpbmcgPT09ICdmdW5jdGlvbicpIHtcbiAgICBjYWxsYmFjayA9IGVuY29kaW5nXG4gICAgZW5jb2RpbmcgPSAndXRmOCdcbiAgfVxuXG4gIGNvbnN0IGRpciA9IHBhdGguZGlybmFtZShmaWxlKVxuICBmcy5leGlzdHMoZGlyLCBpdERvZXMgPT4ge1xuICAgIGlmIChpdERvZXMpIHJldHVybiBmcy53cml0ZUZpbGUoZmlsZSwgZGF0YSwgZW5jb2RpbmcsIGNhbGxiYWNrKVxuXG4gICAgbWtkaXIubWtkaXJzKGRpciwgZXJyID0+IHtcbiAgICAgIGlmIChlcnIpIHJldHVybiBjYWxsYmFjayhlcnIpXG5cbiAgICAgIGZzLndyaXRlRmlsZShmaWxlLCBkYXRhLCBlbmNvZGluZywgY2FsbGJhY2spXG4gICAgfSlcbiAgfSlcbn1cblxuZnVuY3Rpb24gb3V0cHV0RmlsZVN5bmMgKGZpbGUsIGRhdGEsIGVuY29kaW5nKSB7XG4gIGNvbnN0IGRpciA9IHBhdGguZGlybmFtZShmaWxlKVxuICBpZiAoZnMuZXhpc3RzU3luYyhkaXIpKSB7XG4gICAgcmV0dXJuIGZzLndyaXRlRmlsZVN5bmMuYXBwbHkoZnMsIGFyZ3VtZW50cylcbiAgfVxuICBta2Rpci5ta2RpcnNTeW5jKGRpcilcbiAgZnMud3JpdGVGaWxlU3luYy5hcHBseShmcywgYXJndW1lbnRzKVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgb3V0cHV0RmlsZSxcbiAgb3V0cHV0RmlsZVN5bmNcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5jb25zdCByaW1yYWYgPSByZXF1aXJlKCcuL3JpbXJhZicpXG5cbmZ1bmN0aW9uIHJlbW92ZVN5bmMgKGRpcikge1xuICByZXR1cm4gcmltcmFmLnN5bmMoZGlyLCB7ZGlzYWJsZUdsb2I6IHRydWV9KVxufVxuXG5mdW5jdGlvbiByZW1vdmUgKGRpciwgY2FsbGJhY2spIHtcbiAgY29uc3Qgb3B0aW9ucyA9IHtkaXNhYmxlR2xvYjogdHJ1ZX1cbiAgcmV0dXJuIGNhbGxiYWNrID8gcmltcmFmKGRpciwgb3B0aW9ucywgY2FsbGJhY2spIDogcmltcmFmKGRpciwgb3B0aW9ucywgZnVuY3Rpb24gKCkge30pXG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICByZW1vdmUsXG4gIHJlbW92ZVN5bmNcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG5jb25zdCBmcyA9IHJlcXVpcmUoJ2dyYWNlZnVsLWZzJylcbmNvbnN0IHBhdGggPSByZXF1aXJlKCdwYXRoJylcbmNvbnN0IGFzc2VydCA9IHJlcXVpcmUoJ2Fzc2VydCcpXG5cbmNvbnN0IGlzV2luZG93cyA9IChwcm9jZXNzLnBsYXRmb3JtID09PSAnd2luMzInKVxuXG5mdW5jdGlvbiBkZWZhdWx0cyAob3B0aW9ucykge1xuICBjb25zdCBtZXRob2RzID0gW1xuICAgICd1bmxpbmsnLFxuICAgICdjaG1vZCcsXG4gICAgJ3N0YXQnLFxuICAgICdsc3RhdCcsXG4gICAgJ3JtZGlyJyxcbiAgICAncmVhZGRpcidcbiAgXVxuICBtZXRob2RzLmZvckVhY2gobSA9PiB7XG4gICAgb3B0aW9uc1ttXSA9IG9wdGlvbnNbbV0gfHwgZnNbbV1cbiAgICBtID0gbSArICdTeW5jJ1xuICAgIG9wdGlvbnNbbV0gPSBvcHRpb25zW21dIHx8IGZzW21dXG4gIH0pXG5cbiAgb3B0aW9ucy5tYXhCdXN5VHJpZXMgPSBvcHRpb25zLm1heEJ1c3lUcmllcyB8fCAzXG59XG5cbmZ1bmN0aW9uIHJpbXJhZiAocCwgb3B0aW9ucywgY2IpIHtcbiAgbGV0IGJ1c3lUcmllcyA9IDBcblxuICBpZiAodHlwZW9mIG9wdGlvbnMgPT09ICdmdW5jdGlvbicpIHtcbiAgICBjYiA9IG9wdGlvbnNcbiAgICBvcHRpb25zID0ge31cbiAgfVxuXG4gIGFzc2VydChwLCAncmltcmFmOiBtaXNzaW5nIHBhdGgnKVxuICBhc3NlcnQuZXF1YWwodHlwZW9mIHAsICdzdHJpbmcnLCAncmltcmFmOiBwYXRoIHNob3VsZCBiZSBhIHN0cmluZycpXG4gIGFzc2VydC5lcXVhbCh0eXBlb2YgY2IsICdmdW5jdGlvbicsICdyaW1yYWY6IGNhbGxiYWNrIGZ1bmN0aW9uIHJlcXVpcmVkJylcbiAgYXNzZXJ0KG9wdGlvbnMsICdyaW1yYWY6IGludmFsaWQgb3B0aW9ucyBhcmd1bWVudCBwcm92aWRlZCcpXG4gIGFzc2VydC5lcXVhbCh0eXBlb2Ygb3B0aW9ucywgJ29iamVjdCcsICdyaW1yYWY6IG9wdGlvbnMgc2hvdWxkIGJlIG9iamVjdCcpXG5cbiAgZGVmYXVsdHMob3B0aW9ucylcblxuICByaW1yYWZfKHAsIG9wdGlvbnMsIGZ1bmN0aW9uIENCIChlcikge1xuICAgIGlmIChlcikge1xuICAgICAgaWYgKGlzV2luZG93cyAmJiAoZXIuY29kZSA9PT0gJ0VCVVNZJyB8fCBlci5jb2RlID09PSAnRU5PVEVNUFRZJyB8fCBlci5jb2RlID09PSAnRVBFUk0nKSAmJlxuICAgICAgICAgIGJ1c3lUcmllcyA8IG9wdGlvbnMubWF4QnVzeVRyaWVzKSB7XG4gICAgICAgIGJ1c3lUcmllcysrXG4gICAgICAgIGxldCB0aW1lID0gYnVzeVRyaWVzICogMTAwXG4gICAgICAgIC8vIHRyeSBhZ2Fpbiwgd2l0aCB0aGUgc2FtZSBleGFjdCBjYWxsYmFjayBhcyB0aGlzIG9uZS5cbiAgICAgICAgcmV0dXJuIHNldFRpbWVvdXQoKCkgPT4gcmltcmFmXyhwLCBvcHRpb25zLCBDQiksIHRpbWUpXG4gICAgICB9XG5cbiAgICAgIC8vIGFscmVhZHkgZ29uZVxuICAgICAgaWYgKGVyLmNvZGUgPT09ICdFTk9FTlQnKSBlciA9IG51bGxcbiAgICB9XG5cbiAgICBjYihlcilcbiAgfSlcbn1cblxuLy8gVHdvIHBvc3NpYmxlIHN0cmF0ZWdpZXMuXG4vLyAxLiBBc3N1bWUgaXQncyBhIGZpbGUuICB1bmxpbmsgaXQsIHRoZW4gZG8gdGhlIGRpciBzdHVmZiBvbiBFUEVSTSBvciBFSVNESVJcbi8vIDIuIEFzc3VtZSBpdCdzIGEgZGlyZWN0b3J5LiAgcmVhZGRpciwgdGhlbiBkbyB0aGUgZmlsZSBzdHVmZiBvbiBFTk9URElSXG4vL1xuLy8gQm90aCByZXN1bHQgaW4gYW4gZXh0cmEgc3lzY2FsbCB3aGVuIHlvdSBndWVzcyB3cm9uZy4gIEhvd2V2ZXIsIHRoZXJlXG4vLyBhcmUgbGlrZWx5IGZhciBtb3JlIG5vcm1hbCBmaWxlcyBpbiB0aGUgd29ybGQgdGhhbiBkaXJlY3Rvcmllcy4gIFRoaXNcbi8vIGlzIGJhc2VkIG9uIHRoZSBhc3N1bXB0aW9uIHRoYXQgYSB0aGUgYXZlcmFnZSBudW1iZXIgb2YgZmlsZXMgcGVyXG4vLyBkaXJlY3RvcnkgaXMgPj0gMS5cbi8vXG4vLyBJZiBhbnlvbmUgZXZlciBjb21wbGFpbnMgYWJvdXQgdGhpcywgdGhlbiBJIGd1ZXNzIHRoZSBzdHJhdGVneSBjb3VsZFxuLy8gYmUgbWFkZSBjb25maWd1cmFibGUgc29tZWhvdy4gIEJ1dCB1bnRpbCB0aGVuLCBZQUdOSS5cbmZ1bmN0aW9uIHJpbXJhZl8gKHAsIG9wdGlvbnMsIGNiKSB7XG4gIGFzc2VydChwKVxuICBhc3NlcnQob3B0aW9ucylcbiAgYXNzZXJ0KHR5cGVvZiBjYiA9PT0gJ2Z1bmN0aW9uJylcblxuICAvLyBzdW5vcyBsZXRzIHRoZSByb290IHVzZXIgdW5saW5rIGRpcmVjdG9yaWVzLCB3aGljaCBpcy4uLiB3ZWlyZC5cbiAgLy8gc28gd2UgaGF2ZSB0byBsc3RhdCBoZXJlIGFuZCBtYWtlIHN1cmUgaXQncyBub3QgYSBkaXIuXG4gIG9wdGlvbnMubHN0YXQocCwgKGVyLCBzdCkgPT4ge1xuICAgIGlmIChlciAmJiBlci5jb2RlID09PSAnRU5PRU5UJykge1xuICAgICAgcmV0dXJuIGNiKG51bGwpXG4gICAgfVxuXG4gICAgLy8gV2luZG93cyBjYW4gRVBFUk0gb24gc3RhdC4gIExpZmUgaXMgc3VmZmVyaW5nLlxuICAgIGlmIChlciAmJiBlci5jb2RlID09PSAnRVBFUk0nICYmIGlzV2luZG93cykge1xuICAgICAgcmV0dXJuIGZpeFdpbkVQRVJNKHAsIG9wdGlvbnMsIGVyLCBjYilcbiAgICB9XG5cbiAgICBpZiAoc3QgJiYgc3QuaXNEaXJlY3RvcnkoKSkge1xuICAgICAgcmV0dXJuIHJtZGlyKHAsIG9wdGlvbnMsIGVyLCBjYilcbiAgICB9XG5cbiAgICBvcHRpb25zLnVubGluayhwLCBlciA9PiB7XG4gICAgICBpZiAoZXIpIHtcbiAgICAgICAgaWYgKGVyLmNvZGUgPT09ICdFTk9FTlQnKSB7XG4gICAgICAgICAgcmV0dXJuIGNiKG51bGwpXG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVyLmNvZGUgPT09ICdFUEVSTScpIHtcbiAgICAgICAgICByZXR1cm4gKGlzV2luZG93cylcbiAgICAgICAgICAgID8gZml4V2luRVBFUk0ocCwgb3B0aW9ucywgZXIsIGNiKVxuICAgICAgICAgICAgOiBybWRpcihwLCBvcHRpb25zLCBlciwgY2IpXG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVyLmNvZGUgPT09ICdFSVNESVInKSB7XG4gICAgICAgICAgcmV0dXJuIHJtZGlyKHAsIG9wdGlvbnMsIGVyLCBjYilcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGNiKGVyKVxuICAgIH0pXG4gIH0pXG59XG5cbmZ1bmN0aW9uIGZpeFdpbkVQRVJNIChwLCBvcHRpb25zLCBlciwgY2IpIHtcbiAgYXNzZXJ0KHApXG4gIGFzc2VydChvcHRpb25zKVxuICBhc3NlcnQodHlwZW9mIGNiID09PSAnZnVuY3Rpb24nKVxuICBpZiAoZXIpIHtcbiAgICBhc3NlcnQoZXIgaW5zdGFuY2VvZiBFcnJvcilcbiAgfVxuXG4gIG9wdGlvbnMuY2htb2QocCwgNjY2LCBlcjIgPT4ge1xuICAgIGlmIChlcjIpIHtcbiAgICAgIGNiKGVyMi5jb2RlID09PSAnRU5PRU5UJyA/IG51bGwgOiBlcilcbiAgICB9IGVsc2Uge1xuICAgICAgb3B0aW9ucy5zdGF0KHAsIChlcjMsIHN0YXRzKSA9PiB7XG4gICAgICAgIGlmIChlcjMpIHtcbiAgICAgICAgICBjYihlcjMuY29kZSA9PT0gJ0VOT0VOVCcgPyBudWxsIDogZXIpXG4gICAgICAgIH0gZWxzZSBpZiAoc3RhdHMuaXNEaXJlY3RvcnkoKSkge1xuICAgICAgICAgIHJtZGlyKHAsIG9wdGlvbnMsIGVyLCBjYilcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvcHRpb25zLnVubGluayhwLCBjYilcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG4gIH0pXG59XG5cbmZ1bmN0aW9uIGZpeFdpbkVQRVJNU3luYyAocCwgb3B0aW9ucywgZXIpIHtcbiAgbGV0IHN0YXRzXG5cbiAgYXNzZXJ0KHApXG4gIGFzc2VydChvcHRpb25zKVxuICBpZiAoZXIpIHtcbiAgICBhc3NlcnQoZXIgaW5zdGFuY2VvZiBFcnJvcilcbiAgfVxuXG4gIHRyeSB7XG4gICAgb3B0aW9ucy5jaG1vZFN5bmMocCwgNjY2KVxuICB9IGNhdGNoIChlcjIpIHtcbiAgICBpZiAoZXIyLmNvZGUgPT09ICdFTk9FTlQnKSB7XG4gICAgICByZXR1cm5cbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgZXJcbiAgICB9XG4gIH1cblxuICB0cnkge1xuICAgIHN0YXRzID0gb3B0aW9ucy5zdGF0U3luYyhwKVxuICB9IGNhdGNoIChlcjMpIHtcbiAgICBpZiAoZXIzLmNvZGUgPT09ICdFTk9FTlQnKSB7XG4gICAgICByZXR1cm5cbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgZXJcbiAgICB9XG4gIH1cblxuICBpZiAoc3RhdHMuaXNEaXJlY3RvcnkoKSkge1xuICAgIHJtZGlyU3luYyhwLCBvcHRpb25zLCBlcilcbiAgfSBlbHNlIHtcbiAgICBvcHRpb25zLnVubGlua1N5bmMocClcbiAgfVxufVxuXG5mdW5jdGlvbiBybWRpciAocCwgb3B0aW9ucywgb3JpZ2luYWxFciwgY2IpIHtcbiAgYXNzZXJ0KHApXG4gIGFzc2VydChvcHRpb25zKVxuICBpZiAob3JpZ2luYWxFcikge1xuICAgIGFzc2VydChvcmlnaW5hbEVyIGluc3RhbmNlb2YgRXJyb3IpXG4gIH1cbiAgYXNzZXJ0KHR5cGVvZiBjYiA9PT0gJ2Z1bmN0aW9uJylcblxuICAvLyB0cnkgdG8gcm1kaXIgZmlyc3QsIGFuZCBvbmx5IHJlYWRkaXIgb24gRU5PVEVNUFRZIG9yIEVFWElTVCAoU3VuT1MpXG4gIC8vIGlmIHdlIGd1ZXNzZWQgd3JvbmcsIGFuZCBpdCdzIG5vdCBhIGRpcmVjdG9yeSwgdGhlblxuICAvLyByYWlzZSB0aGUgb3JpZ2luYWwgZXJyb3IuXG4gIG9wdGlvbnMucm1kaXIocCwgZXIgPT4ge1xuICAgIGlmIChlciAmJiAoZXIuY29kZSA9PT0gJ0VOT1RFTVBUWScgfHwgZXIuY29kZSA9PT0gJ0VFWElTVCcgfHwgZXIuY29kZSA9PT0gJ0VQRVJNJykpIHtcbiAgICAgIHJta2lkcyhwLCBvcHRpb25zLCBjYilcbiAgICB9IGVsc2UgaWYgKGVyICYmIGVyLmNvZGUgPT09ICdFTk9URElSJykge1xuICAgICAgY2Iob3JpZ2luYWxFcilcbiAgICB9IGVsc2Uge1xuICAgICAgY2IoZXIpXG4gICAgfVxuICB9KVxufVxuXG5mdW5jdGlvbiBybWtpZHMgKHAsIG9wdGlvbnMsIGNiKSB7XG4gIGFzc2VydChwKVxuICBhc3NlcnQob3B0aW9ucylcbiAgYXNzZXJ0KHR5cGVvZiBjYiA9PT0gJ2Z1bmN0aW9uJylcblxuICBvcHRpb25zLnJlYWRkaXIocCwgKGVyLCBmaWxlcykgPT4ge1xuICAgIGlmIChlcikgcmV0dXJuIGNiKGVyKVxuXG4gICAgbGV0IG4gPSBmaWxlcy5sZW5ndGhcbiAgICBsZXQgZXJyU3RhdGVcblxuICAgIGlmIChuID09PSAwKSByZXR1cm4gb3B0aW9ucy5ybWRpcihwLCBjYilcblxuICAgIGZpbGVzLmZvckVhY2goZiA9PiB7XG4gICAgICByaW1yYWYocGF0aC5qb2luKHAsIGYpLCBvcHRpb25zLCBlciA9PiB7XG4gICAgICAgIGlmIChlcnJTdGF0ZSkge1xuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG4gICAgICAgIGlmIChlcikgcmV0dXJuIGNiKGVyclN0YXRlID0gZXIpXG4gICAgICAgIGlmICgtLW4gPT09IDApIHtcbiAgICAgICAgICBvcHRpb25zLnJtZGlyKHAsIGNiKVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH0pXG4gIH0pXG59XG5cbi8vIHRoaXMgbG9va3Mgc2ltcGxlciwgYW5kIGlzIHN0cmljdGx5ICpmYXN0ZXIqLCBidXQgd2lsbFxuLy8gdGllIHVwIHRoZSBKYXZhU2NyaXB0IHRocmVhZCBhbmQgZmFpbCBvbiBleGNlc3NpdmVseVxuLy8gZGVlcCBkaXJlY3RvcnkgdHJlZXMuXG5mdW5jdGlvbiByaW1yYWZTeW5jIChwLCBvcHRpb25zKSB7XG4gIGxldCBzdFxuXG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9XG4gIGRlZmF1bHRzKG9wdGlvbnMpXG5cbiAgYXNzZXJ0KHAsICdyaW1yYWY6IG1pc3NpbmcgcGF0aCcpXG4gIGFzc2VydC5lcXVhbCh0eXBlb2YgcCwgJ3N0cmluZycsICdyaW1yYWY6IHBhdGggc2hvdWxkIGJlIGEgc3RyaW5nJylcbiAgYXNzZXJ0KG9wdGlvbnMsICdyaW1yYWY6IG1pc3Npbmcgb3B0aW9ucycpXG4gIGFzc2VydC5lcXVhbCh0eXBlb2Ygb3B0aW9ucywgJ29iamVjdCcsICdyaW1yYWY6IG9wdGlvbnMgc2hvdWxkIGJlIG9iamVjdCcpXG5cbiAgdHJ5IHtcbiAgICBzdCA9IG9wdGlvbnMubHN0YXRTeW5jKHApXG4gIH0gY2F0Y2ggKGVyKSB7XG4gICAgaWYgKGVyLmNvZGUgPT09ICdFTk9FTlQnKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICAvLyBXaW5kb3dzIGNhbiBFUEVSTSBvbiBzdGF0LiAgTGlmZSBpcyBzdWZmZXJpbmcuXG4gICAgaWYgKGVyLmNvZGUgPT09ICdFUEVSTScgJiYgaXNXaW5kb3dzKSB7XG4gICAgICBmaXhXaW5FUEVSTVN5bmMocCwgb3B0aW9ucywgZXIpXG4gICAgfVxuICB9XG5cbiAgdHJ5IHtcbiAgICAvLyBzdW5vcyBsZXRzIHRoZSByb290IHVzZXIgdW5saW5rIGRpcmVjdG9yaWVzLCB3aGljaCBpcy4uLiB3ZWlyZC5cbiAgICBpZiAoc3QgJiYgc3QuaXNEaXJlY3RvcnkoKSkge1xuICAgICAgcm1kaXJTeW5jKHAsIG9wdGlvbnMsIG51bGwpXG4gICAgfSBlbHNlIHtcbiAgICAgIG9wdGlvbnMudW5saW5rU3luYyhwKVxuICAgIH1cbiAgfSBjYXRjaCAoZXIpIHtcbiAgICBpZiAoZXIuY29kZSA9PT0gJ0VOT0VOVCcpIHtcbiAgICAgIHJldHVyblxuICAgIH0gZWxzZSBpZiAoZXIuY29kZSA9PT0gJ0VQRVJNJykge1xuICAgICAgcmV0dXJuIGlzV2luZG93cyA/IGZpeFdpbkVQRVJNU3luYyhwLCBvcHRpb25zLCBlcikgOiBybWRpclN5bmMocCwgb3B0aW9ucywgZXIpXG4gICAgfSBlbHNlIGlmIChlci5jb2RlICE9PSAnRUlTRElSJykge1xuICAgICAgdGhyb3cgZXJcbiAgICB9XG4gICAgcm1kaXJTeW5jKHAsIG9wdGlvbnMsIGVyKVxuICB9XG59XG5cbmZ1bmN0aW9uIHJtZGlyU3luYyAocCwgb3B0aW9ucywgb3JpZ2luYWxFcikge1xuICBhc3NlcnQocClcbiAgYXNzZXJ0KG9wdGlvbnMpXG4gIGlmIChvcmlnaW5hbEVyKSB7XG4gICAgYXNzZXJ0KG9yaWdpbmFsRXIgaW5zdGFuY2VvZiBFcnJvcilcbiAgfVxuXG4gIHRyeSB7XG4gICAgb3B0aW9ucy5ybWRpclN5bmMocClcbiAgfSBjYXRjaCAoZXIpIHtcbiAgICBpZiAoZXIuY29kZSA9PT0gJ0VOT0VOVCcpIHtcbiAgICAgIHJldHVyblxuICAgIH0gZWxzZSBpZiAoZXIuY29kZSA9PT0gJ0VOT1RESVInKSB7XG4gICAgICB0aHJvdyBvcmlnaW5hbEVyXG4gICAgfSBlbHNlIGlmIChlci5jb2RlID09PSAnRU5PVEVNUFRZJyB8fCBlci5jb2RlID09PSAnRUVYSVNUJyB8fCBlci5jb2RlID09PSAnRVBFUk0nKSB7XG4gICAgICBybWtpZHNTeW5jKHAsIG9wdGlvbnMpXG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHJta2lkc1N5bmMgKHAsIG9wdGlvbnMpIHtcbiAgYXNzZXJ0KHApXG4gIGFzc2VydChvcHRpb25zKVxuICBvcHRpb25zLnJlYWRkaXJTeW5jKHApLmZvckVhY2goZiA9PiByaW1yYWZTeW5jKHBhdGguam9pbihwLCBmKSwgb3B0aW9ucykpXG4gIG9wdGlvbnMucm1kaXJTeW5jKHAsIG9wdGlvbnMpXG59XG5cbm1vZHVsZS5leHBvcnRzID0gcmltcmFmXG5yaW1yYWYuc3luYyA9IHJpbXJhZlN5bmNcbiIsIid1c2Ugc3RyaWN0J1xuXG4vLyBzaW1wbGUgbXV0YWJsZSBhc3NpZ25cbmZ1bmN0aW9uIGFzc2lnbiAoKSB7XG4gIGNvbnN0IGFyZ3MgPSBbXS5zbGljZS5jYWxsKGFyZ3VtZW50cykuZmlsdGVyKGkgPT4gaSlcbiAgY29uc3QgZGVzdCA9IGFyZ3Muc2hpZnQoKVxuICBhcmdzLmZvckVhY2goc3JjID0+IHtcbiAgICBPYmplY3Qua2V5cyhzcmMpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgIGRlc3Rba2V5XSA9IHNyY1trZXldXG4gICAgfSlcbiAgfSlcblxuICByZXR1cm4gZGVzdFxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFzc2lnblxuIiwiJ3VzZSBzdHJpY3QnXG5cbmNvbnN0IGZzID0gcmVxdWlyZSgnZ3JhY2VmdWwtZnMnKVxuY29uc3Qgb3MgPSByZXF1aXJlKCdvcycpXG5jb25zdCBwYXRoID0gcmVxdWlyZSgncGF0aCcpXG5cbi8vIEhGUywgZXh0ezIsM30sIEZBVCBkbyBub3QsIE5vZGUuanMgdjAuMTAgZG9lcyBub3RcbmZ1bmN0aW9uIGhhc01pbGxpc1Jlc1N5bmMgKCkge1xuICBsZXQgdG1wZmlsZSA9IHBhdGguam9pbignbWlsbGlzLXRlc3Qtc3luYycgKyBEYXRlLm5vdygpLnRvU3RyaW5nKCkgKyBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKCkuc2xpY2UoMikpXG4gIHRtcGZpbGUgPSBwYXRoLmpvaW4ob3MudG1wZGlyKCksIHRtcGZpbGUpXG5cbiAgLy8gNTUwIG1pbGxpcyBwYXN0IFVOSVggZXBvY2hcbiAgY29uc3QgZCA9IG5ldyBEYXRlKDE0MzU0MTAyNDM4NjIpXG4gIGZzLndyaXRlRmlsZVN5bmModG1wZmlsZSwgJ2h0dHBzOi8vZ2l0aHViLmNvbS9qcHJpY2hhcmRzb24vbm9kZS1mcy1leHRyYS9wdWxsLzE0MScpXG4gIGNvbnN0IGZkID0gZnMub3BlblN5bmModG1wZmlsZSwgJ3IrJylcbiAgZnMuZnV0aW1lc1N5bmMoZmQsIGQsIGQpXG4gIGZzLmNsb3NlU3luYyhmZClcbiAgcmV0dXJuIGZzLnN0YXRTeW5jKHRtcGZpbGUpLm10aW1lID4gMTQzNTQxMDI0MzAwMFxufVxuXG5mdW5jdGlvbiBoYXNNaWxsaXNSZXMgKGNhbGxiYWNrKSB7XG4gIGxldCB0bXBmaWxlID0gcGF0aC5qb2luKCdtaWxsaXMtdGVzdCcgKyBEYXRlLm5vdygpLnRvU3RyaW5nKCkgKyBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKCkuc2xpY2UoMikpXG4gIHRtcGZpbGUgPSBwYXRoLmpvaW4ob3MudG1wZGlyKCksIHRtcGZpbGUpXG5cbiAgLy8gNTUwIG1pbGxpcyBwYXN0IFVOSVggZXBvY2hcbiAgY29uc3QgZCA9IG5ldyBEYXRlKDE0MzU0MTAyNDM4NjIpXG4gIGZzLndyaXRlRmlsZSh0bXBmaWxlLCAnaHR0cHM6Ly9naXRodWIuY29tL2pwcmljaGFyZHNvbi9ub2RlLWZzLWV4dHJhL3B1bGwvMTQxJywgZXJyID0+IHtcbiAgICBpZiAoZXJyKSByZXR1cm4gY2FsbGJhY2soZXJyKVxuICAgIGZzLm9wZW4odG1wZmlsZSwgJ3IrJywgKGVyciwgZmQpID0+IHtcbiAgICAgIGlmIChlcnIpIHJldHVybiBjYWxsYmFjayhlcnIpXG4gICAgICBmcy5mdXRpbWVzKGZkLCBkLCBkLCBlcnIgPT4ge1xuICAgICAgICBpZiAoZXJyKSByZXR1cm4gY2FsbGJhY2soZXJyKVxuICAgICAgICBmcy5jbG9zZShmZCwgZXJyID0+IHtcbiAgICAgICAgICBpZiAoZXJyKSByZXR1cm4gY2FsbGJhY2soZXJyKVxuICAgICAgICAgIGZzLnN0YXQodG1wZmlsZSwgKGVyciwgc3RhdHMpID0+IHtcbiAgICAgICAgICAgIGlmIChlcnIpIHJldHVybiBjYWxsYmFjayhlcnIpXG4gICAgICAgICAgICBjYWxsYmFjayhudWxsLCBzdGF0cy5tdGltZSA+IDE0MzU0MTAyNDMwMDApXG4gICAgICAgICAgfSlcbiAgICAgICAgfSlcbiAgICAgIH0pXG4gICAgfSlcbiAgfSlcbn1cblxuZnVuY3Rpb24gdGltZVJlbW92ZU1pbGxpcyAodGltZXN0YW1wKSB7XG4gIGlmICh0eXBlb2YgdGltZXN0YW1wID09PSAnbnVtYmVyJykge1xuICAgIHJldHVybiBNYXRoLmZsb29yKHRpbWVzdGFtcCAvIDEwMDApICogMTAwMFxuICB9IGVsc2UgaWYgKHRpbWVzdGFtcCBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICByZXR1cm4gbmV3IERhdGUoTWF0aC5mbG9vcih0aW1lc3RhbXAuZ2V0VGltZSgpIC8gMTAwMCkgKiAxMDAwKVxuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcignZnMtZXh0cmE6IHRpbWVSZW1vdmVNaWxsaXMoKSB1bmtub3duIHBhcmFtZXRlciB0eXBlJylcbiAgfVxufVxuXG5mdW5jdGlvbiB1dGltZXNNaWxsaXMgKHBhdGgsIGF0aW1lLCBtdGltZSwgY2FsbGJhY2spIHtcbiAgLy8gaWYgKCFIQVNfTUlMTElTX1JFUykgcmV0dXJuIGZzLnV0aW1lcyhwYXRoLCBhdGltZSwgbXRpbWUsIGNhbGxiYWNrKVxuICBmcy5vcGVuKHBhdGgsICdyKycsIChlcnIsIGZkKSA9PiB7XG4gICAgaWYgKGVycikgcmV0dXJuIGNhbGxiYWNrKGVycilcbiAgICBmcy5mdXRpbWVzKGZkLCBhdGltZSwgbXRpbWUsIGZ1dGltZXNFcnIgPT4ge1xuICAgICAgZnMuY2xvc2UoZmQsIGNsb3NlRXJyID0+IHtcbiAgICAgICAgaWYgKGNhbGxiYWNrKSBjYWxsYmFjayhmdXRpbWVzRXJyIHx8IGNsb3NlRXJyKVxuICAgICAgfSlcbiAgICB9KVxuICB9KVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgaGFzTWlsbGlzUmVzLFxuICBoYXNNaWxsaXNSZXNTeW5jLFxuICB0aW1lUmVtb3ZlTWlsbGlzLFxuICB1dGltZXNNaWxsaXNcbn1cbiIsIlxuLyoqXG4gKiBNb2R1bGUgZGVwZW5kZW5jaWVzLlxuICovXG5cbnZhciBTdHJlYW0gPSByZXF1aXJlKCdzdHJlYW0nKS5TdHJlYW07XG52YXIgRXZlbnRFbWl0dGVyID0gcmVxdWlyZSgnZXZlbnRzJykuRXZlbnRFbWl0dGVyO1xudmFyIHV0aWwgPSByZXF1aXJlKCd1dGlsJyk7XG5cbnV0aWwuaW5oZXJpdHMoZ20sIEV2ZW50RW1pdHRlcik7XG5cbi8qKlxuICogQ29uc3RydWN0b3IuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd8TnVtYmVyfSBwYXRoIC0gcGF0aCB0byBpbWcgc291cmNlIG9yIFJlYWRhYmxlU3RyZWFtIG9yIHdpZHRoIG9mIGltZyB0byBjcmVhdGVcbiAqIEBwYXJhbSB7TnVtYmVyfSBbaGVpZ2h0XSAtIG9wdGlvbmFsIGZpbGVuYW1lIG9mIFJlYWRhYmxlU3RyZWFtIG9yIGhlaWdodCBvZiBpbWcgdG8gY3JlYXRlXG4gKiBAcGFyYW0ge1N0cmluZ30gW2NvbG9yXSAtIG9wdGlvbmFsIGhleCBiYWNrZ3JvdW5kIGNvbG9yIG9mIGNyZWF0ZWQgaW1nXG4gKi9cblxuZnVuY3Rpb24gZ20gKHNvdXJjZSwgaGVpZ2h0LCBjb2xvcikge1xuICB2YXIgd2lkdGg7XG5cbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIGdtKSkge1xuICAgIHJldHVybiBuZXcgZ20oc291cmNlLCBoZWlnaHQsIGNvbG9yKTtcbiAgfVxuXG4gIEV2ZW50RW1pdHRlci5jYWxsKHRoaXMpO1xuXG4gIHRoaXMuX29wdGlvbnMgPSB7fTtcbiAgdGhpcy5vcHRpb25zKHRoaXMuX19wcm90b19fLl9vcHRpb25zKTtcblxuICB0aGlzLmRhdGEgPSB7fTtcbiAgdGhpcy5faW4gPSBbXTtcbiAgdGhpcy5fb3V0ID0gW107XG4gIHRoaXMuX291dHB1dEZvcm1hdCA9IG51bGw7XG4gIHRoaXMuX3N1YkNvbW1hbmQgPSAnY29udmVydCc7XG5cbiAgaWYgKHNvdXJjZSBpbnN0YW5jZW9mIFN0cmVhbSkge1xuICAgIHRoaXMuc291cmNlU3RyZWFtID0gc291cmNlO1xuICAgIHNvdXJjZSA9IGhlaWdodCB8fCAndW5rbm93bi5qcGcnO1xuICB9IGVsc2UgaWYgKEJ1ZmZlci5pc0J1ZmZlcihzb3VyY2UpKSB7XG4gICAgdGhpcy5zb3VyY2VCdWZmZXIgPSBzb3VyY2U7XG4gICAgc291cmNlID0gaGVpZ2h0IHx8ICd1bmtub3duLmpwZyc7XG4gIH0gZWxzZSBpZiAoaGVpZ2h0KSB7XG4gICAgLy8gbmV3IGltYWdlc1xuICAgIHdpZHRoID0gc291cmNlO1xuICAgIHNvdXJjZSA9IFwiXCI7XG5cbiAgICB0aGlzLmluKFwiLXNpemVcIiwgd2lkdGggKyBcInhcIiArIGhlaWdodCk7XG5cbiAgICBpZiAoY29sb3IpIHtcbiAgICAgIHRoaXMuaW4oXCJ4YzpcIisgY29sb3IpO1xuICAgIH1cbiAgfVxuXG4gIGlmICh0eXBlb2Ygc291cmNlID09PSBcInN0cmluZ1wiKSB7XG4gICAgLy8gdGhlbiBzb3VyY2UgaXMgYSBwYXRoXG5cbiAgICAvLyBwYXJzZSBvdXQgZ2lmIGZyYW1lIGJyYWNrZXRzIGZyb20gZmlsZW5hbWVcbiAgICAvLyBzaW5jZSBzdHJlYW0gZG9lc24ndCB1c2Ugc291cmNlIHBhdGhcbiAgICAvLyBlZy4gXCJmaWxlbmFtZS5naWZbMF1cIlxuICAgIHZhciBmcmFtZXMgPSBzb3VyY2UubWF0Y2goLyhcXFsuK1xcXSkkLyk7XG4gICAgaWYgKGZyYW1lcykge1xuICAgICAgdGhpcy5zb3VyY2VGcmFtZXMgPSBzb3VyY2Uuc3Vic3RyKGZyYW1lcy5pbmRleCwgZnJhbWVzWzBdLmxlbmd0aCk7XG4gICAgICBzb3VyY2UgPSBzb3VyY2Uuc3Vic3RyKDAsIGZyYW1lcy5pbmRleCk7XG4gICAgfVxuICB9XG5cbiAgdGhpcy5zb3VyY2UgPSBzb3VyY2U7XG5cbiAgdGhpcy5hZGRTcmNGb3JtYXR0ZXIoZnVuY3Rpb24gKHNyYykge1xuICAgIC8vIG11c3QgYmUgZmlyc3Qgc291cmNlIGZvcm1hdHRlclxuXG4gICAgdmFyIGlucHV0RnJvbVN0ZGluID0gdGhpcy5zb3VyY2VTdHJlYW0gfHwgdGhpcy5zb3VyY2VCdWZmZXI7XG4gICAgdmFyIHJldCA9IGlucHV0RnJvbVN0ZGluID8gJy0nIDogdGhpcy5zb3VyY2U7XG5cbiAgICBpZiAocmV0ICYmIHRoaXMuc291cmNlRnJhbWVzKSByZXQgKz0gdGhpcy5zb3VyY2VGcmFtZXM7XG5cbiAgICBzcmMubGVuZ3RoID0gMDtcbiAgICBzcmNbMF0gPSByZXQ7XG4gIH0pO1xufVxuXG4vKipcbiAqIFN1YmNsYXNzZXMgdGhlIGdtIGNvbnN0cnVjdG9yIHdpdGggY3VzdG9tIG9wdGlvbnMuXG4gKlxuICogQHBhcmFtIHtvcHRpb25zfSBvcHRpb25zXG4gKiBAcmV0dXJuIHtnbX0gdGhlIHN1YmNsYXNzZXMgZ20gY29uc3RydWN0b3JcbiAqL1xuXG52YXIgcGFyZW50ID0gZ207XG5nbS5zdWJDbGFzcyA9IGZ1bmN0aW9uIHN1YkNsYXNzIChvcHRpb25zKSB7XG4gIGZ1bmN0aW9uIGdtIChzb3VyY2UsIGhlaWdodCwgY29sb3IpIHtcbiAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgcGFyZW50KSkge1xuICAgICAgcmV0dXJuIG5ldyBnbShzb3VyY2UsIGhlaWdodCwgY29sb3IpO1xuICAgIH1cblxuICAgIHBhcmVudC5jYWxsKHRoaXMsIHNvdXJjZSwgaGVpZ2h0LCBjb2xvcik7XG4gIH1cblxuICBnbS5wcm90b3R5cGUuX19wcm90b19fID0gcGFyZW50LnByb3RvdHlwZTtcbiAgZ20ucHJvdG90eXBlLl9vcHRpb25zID0ge307XG4gIGdtLnByb3RvdHlwZS5vcHRpb25zKG9wdGlvbnMpO1xuXG4gIHJldHVybiBnbTtcbn1cblxuLyoqXG4gKiBBdWdtZW50IHRoZSBwcm90b3R5cGUuXG4gKi9cblxucmVxdWlyZShcIi4vbGliL29wdGlvbnNcIikoZ20ucHJvdG90eXBlKTtcbnJlcXVpcmUoXCIuL2xpYi9nZXR0ZXJzXCIpKGdtKTtcbnJlcXVpcmUoXCIuL2xpYi9hcmdzXCIpKGdtLnByb3RvdHlwZSk7XG5yZXF1aXJlKFwiLi9saWIvZHJhd2luZ1wiKShnbS5wcm90b3R5cGUpO1xucmVxdWlyZShcIi4vbGliL2NvbnZlbmllbmNlXCIpKGdtLnByb3RvdHlwZSk7XG5yZXF1aXJlKFwiLi9saWIvY29tbWFuZFwiKShnbS5wcm90b3R5cGUpO1xucmVxdWlyZShcIi4vbGliL2NvbXBhcmVcIikoZ20ucHJvdG90eXBlKTtcbnJlcXVpcmUoXCIuL2xpYi9jb21wb3NpdGVcIikoZ20ucHJvdG90eXBlKTtcbnJlcXVpcmUoXCIuL2xpYi9tb250YWdlXCIpKGdtLnByb3RvdHlwZSk7XG5cbi8qKlxuICogRXhwb3NlLlxuICovXG5cbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0cyA9IGdtO1xubW9kdWxlLmV4cG9ydHMudXRpbHMgPSByZXF1aXJlKCcuL2xpYi91dGlscycpO1xubW9kdWxlLmV4cG9ydHMuY29tcGFyZSA9IHJlcXVpcmUoJy4vbGliL2NvbXBhcmUnKSgpO1xubW9kdWxlLmV4cG9ydHMudmVyc2lvbiA9IEpTT04ucGFyc2UoXG4gIHJlcXVpcmUoJ2ZzJykucmVhZEZpbGVTeW5jKF9fZGlybmFtZSArICcvcGFja2FnZS5qc29uJywgJ3V0ZjgnKVxuKS52ZXJzaW9uO1xuXG4iLCIvKipcbiAqIERlcGVuZGVuY2llc1xuICovXG5cbnZhciBhcmdzVG9BcnJheSA9IHJlcXVpcmUoJy4vdXRpbHMnKS5hcmdzVG9BcnJheTtcbnZhciBpc1V0aWwgPSByZXF1aXJlKCcuL3V0aWxzJykuaXNVdGlsO1xuLyoqXG4gKiBFeHRlbmQgcHJvdG9cbiAqL1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChwcm90bykge1xuICAvLyBjaGFuZ2UgdGhlIHNwZWNpZmllZCBmcmFtZS5cbiAgLy8gU2VlICMyMDIuXG4gIHByb3RvLnNlbGVjdEZyYW1lID0gZnVuY3Rpb24gKGZyYW1lKSB7XG4gICAgaWYgKHR5cGVvZiBmcmFtZSA9PT0gJ251bWJlcicpXG4gICAgICB0aGlzLnNvdXJjZUZyYW1lcyA9ICdbJyArIGZyYW1lICsgJ10nO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLy8gZGVmaW5lIHRoZSBzdWItY29tbWFuZCB0byB1c2UsIGh0dHA6Ly93d3cuZ3JhcGhpY3NtYWdpY2sub3JnL3V0aWxpdGllcy5odG1sXG4gIHByb3RvLmNvbW1hbmQgPSBwcm90by5zdWJDb21tYW5kID0gZnVuY3Rpb24gc3ViQ29tbWFuZCAobmFtZSl7XG4gICAgdGhpcy5fc3ViQ29tbWFuZCA9IG5hbWU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvLyBodHRwOi8vd3d3LmdyYXBoaWNzbWFnaWNrLm9yZy9HcmFwaGljc01hZ2ljay5odG1sI2RldGFpbHMtYWRqb2luXG4gIHByb3RvLmFkam9pbiA9IGZ1bmN0aW9uIGFkam9pbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMub3V0KFwiLWFkam9pblwiKTtcbiAgfVxuXG4gIC8vIGh0dHA6Ly93d3cuZ3JhcGhpY3NtYWdpY2sub3JnL0dyYXBoaWNzTWFnaWNrLmh0bWwjZGV0YWlscy1hZmZpbmVcbiAgcHJvdG8uYWZmaW5lID0gZnVuY3Rpb24gYWZmaW5lIChtYXRyaXgpIHtcbiAgICByZXR1cm4gdGhpcy5vdXQoXCItYWZmaW5lXCIsIG1hdHJpeCk7XG4gIH1cblxuICBwcm90by5hbHBoYSA9IGZ1bmN0aW9uIGFscGhhICh0eXBlKSB7XG4gICAgaWYgKCF0aGlzLl9vcHRpb25zLmltYWdlTWFnaWNrKSByZXR1cm4gbmV3IEVycm9yKCdNZXRob2QgLWFscGhhIGlzIG5vdCBzdXBwb3J0ZWQgYnkgR3JhcGhpY3NNYWdpY2snKTtcbiAgICByZXR1cm4gdGhpcy5vdXQoJy1hbHBoYScsIHR5cGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFwcGVuZHMgaW1hZ2VzIHRvIHRoZSBsaXN0IG9mIFwic291cmNlXCIgaW1hZ2VzLlxuICAgKlxuICAgKiBXZSBtYXkgYWxzbyBzcGVjaWZ5IGVpdGhlciB0b3AtdG8tYm90dG9tIG9yIGxlZnQtdG8tcmlnaHRcbiAgICogYmVoYXZpb3Igb2YgdGhlIGFwcGVuZGluZyBieSBwYXNzaW5nIGEgYm9vbGVhbiBhcmd1bWVudC5cbiAgICpcbiAgICogRXhhbXBsZXM6XG4gICAqXG4gICAqICAgIGltZyA9IGdtKHNyYyk7XG4gICAqXG4gICAqICAgIC8vICthcHBlbmQgbWVhbnMgbGVmdC10by1yaWdodFxuICAgKiAgICBpbWcuYXBwZW5kKGltZzEsIGltZzIpICAgICAgIGdtIGNvbnZlcnQgc3JjIGltZzEgaW1nMiAtYXBwZW5kXG4gICAqICAgIGltZy5hcHBlbmQoaW1nLCB0cnVlKSAgICAgICAgZ20gY29udmVydCBzcmMgaW1nICthcHBlbmRcbiAgICogICAgaW1nLmFwcGVuZChpbWcsIGZhbHNlKSAgICAgICBnbSBjb252ZXJ0IHNyYyBpbWcgLWFwcGVuZFxuICAgKiAgICBpbWcuYXBwZW5kKGltZykgICAgICAgICAgICAgIGdtIGNvbnZlcnQgc3JjIGltZyAtYXBwZW5kXG4gICAqICAgIGltZy5hcHBlbmQoaW1nKS5hcHBlbmQoKSAgICAgZ20gY29udmVydCBzcmMgaW1nIC1hcHBlbmRcbiAgICogICAgaW1nLmFwcGVuZChpbWcpLmFwcGVuZCh0cnVlKSBnbSBjb252ZXJ0IHNyYyBpbWcgK2FwcGVuZFxuICAgKiAgICBpbWcuYXBwZW5kKGltZykuYXBwZW5kKHRydWUpIGdtIGNvbnZlcnQgc3JjIGltZyArYXBwZW5kXG4gICAqICAgIGltZy5hcHBlbmQoaW1nKS5iYWNrZ3JvdW5kKCcjMjIyKSBnbSBjb252ZXJ0IHNyYyBpbWcgLWJhY2tncm91bmQgIzIyMiArYXBwZW5kXG4gICAqICAgIGltZy5hcHBlbmQoW2ltZzEsaW1nMi4uLl0sdHJ1ZSlcblxuICAgKiBAcGFyYW0ge1N0cmluZ30gb3Ige0FycmF5fSBbaW1nXVxuICAgKiBAcGFyYW0ge0Jvb2xlYW59IFtsdHJdXG4gICAqIEBzZWUgaHR0cDovL3d3dy5ncmFwaGljc21hZ2ljay5vcmcvR3JhcGhpY3NNYWdpY2suaHRtbCNkZXRhaWxzLWFwcGVuZFxuICAgKi9cblxuICBwcm90by5hcHBlbmQgPSBmdW5jdGlvbiBhcHBlbmQgKGltZywgbHRyKSB7XG4gICAgaWYgKCF0aGlzLl9hcHBlbmQpIHtcbiAgICAgIHRoaXMuX2FwcGVuZCA9IFtdO1xuICAgICAgdGhpcy5hZGRTcmNGb3JtYXR0ZXIoZnVuY3Rpb24gKHNyYykge1xuICAgICAgICB0aGlzLm91dCh0aGlzLl9hcHBlbmQubHRyID8gJythcHBlbmQnIDogJy1hcHBlbmQnKTtcbiAgICAgICAgc3JjLnB1c2guYXBwbHkoc3JjLCB0aGlzLl9hcHBlbmQpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKDAgPT09IGFyZ3VtZW50cy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuX2FwcGVuZC5sdHIgPSBmYWxzZTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgKytpKSB7XG4gICAgICB2YXIgYXJnID0gYXJndW1lbnRzW2ldO1xuICAgICAgc3dpdGNoIChpc1V0aWwoYXJnKSkge1xuICAgICAgICBjYXNlICdCb29sZWFuJzpcbiAgICAgICAgICB0aGlzLl9hcHBlbmQubHRyID0gYXJnO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdTdHJpbmcnOlxuICAgICAgICAgIHRoaXMuX2FwcGVuZC5wdXNoKGFyZyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ0FycmF5JzpcbiAgICAgICAgICBmb3IodmFyIGo9MCxsZW49YXJnLmxlbmd0aDtqPGxlbjtqKyspe1xuICAgICAgICAgICAgaWYoaXNVdGlsKGFyZ1tqXSkgPT0gJ1N0cmluZycpe1xuICAgICAgICAgICAgICB0aGlzLl9hcHBlbmQucHVzaChhcmdbal0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8vIGh0dHA6Ly93d3cuZ3JhcGhpY3NtYWdpY2sub3JnL0dyYXBoaWNzTWFnaWNrLmh0bWwjZGV0YWlscy1hdXRoZW50aWNhdGVcbiAgcHJvdG8uYXV0aGVudGljYXRlID0gZnVuY3Rpb24gYXV0aGVudGljYXRlIChzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5vdXQoXCItYXV0aGVudGljYXRlXCIsIHN0cmluZyk7XG4gIH1cblxuICAvLyBodHRwOi8vd3d3LmdyYXBoaWNzbWFnaWNrLm9yZy9HcmFwaGljc01hZ2ljay5odG1sI2RldGFpbHMtYXZlcmFnZVxuICBwcm90by5hdmVyYWdlID0gZnVuY3Rpb24gYXZlcmFnZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMub3V0KFwiLWF2ZXJhZ2VcIik7XG4gIH1cblxuICAvLyBodHRwOi8vd3d3LmdyYXBoaWNzbWFnaWNrLm9yZy9HcmFwaGljc01hZ2ljay5odG1sI2RldGFpbHMtYmFja2Ryb3BcbiAgcHJvdG8uYmFja2Ryb3AgPSBmdW5jdGlvbiBiYWNrZHJvcCAoKSB7XG4gICAgcmV0dXJuIHRoaXMub3V0KFwiLWJhY2tkcm9wXCIpO1xuICB9XG5cbiAgLy8gaHR0cDovL3d3dy5ncmFwaGljc21hZ2ljay5vcmcvR3JhcGhpY3NNYWdpY2suaHRtbCNkZXRhaWxzLWJsYWNrLXRocmVzaG9sZFxuICBwcm90by5ibGFja1RocmVzaG9sZCA9IGZ1bmN0aW9uIGJsYWNrVGhyZXNob2xkIChyZWQsIGdyZWVuLCBibHVlLCBvcGFjaXR5KSB7XG4gICAgcmV0dXJuIHRoaXMub3V0KFwiLWJsYWNrLXRocmVzaG9sZFwiLCBhcmdzVG9BcnJheShyZWQsIGdyZWVuLCBibHVlLCBvcGFjaXR5KS5qb2luKCcsJykpO1xuICB9XG5cbiAgLy8gaHR0cDovL3d3dy5ncmFwaGljc21hZ2ljay5vcmcvR3JhcGhpY3NNYWdpY2suaHRtbCNkZXRhaWxzLWJsdWUtcHJpbWFyeVxuICBwcm90by5ibHVlUHJpbWFyeSA9IGZ1bmN0aW9uIGJsdWVQcmltYXJ5ICh4LCB5KSB7XG4gICAgcmV0dXJuIHRoaXMub3V0KFwiLWJsdWUtcHJpbWFyeVwiLCBhcmdzVG9BcnJheSh4LCB5KS5qb2luKCcsJykpO1xuICB9XG5cbiAgLy8gaHR0cDovL3d3dy5ncmFwaGljc21hZ2ljay5vcmcvR3JhcGhpY3NNYWdpY2suaHRtbCNkZXRhaWxzLWJvcmRlclxuICBwcm90by5ib3JkZXIgPSBmdW5jdGlvbiBib3JkZXIgKHdpZHRoLCBoZWlnaHQpIHtcbiAgICByZXR1cm4gdGhpcy5vdXQoXCItYm9yZGVyXCIsIHdpZHRoK1wieFwiK2hlaWdodCk7XG4gIH1cblxuICAvLyBodHRwOi8vd3d3LmdyYXBoaWNzbWFnaWNrLm9yZy9HcmFwaGljc01hZ2ljay5odG1sI2RldGFpbHMtYm9yZGVyY29sb3JcbiAgcHJvdG8uYm9yZGVyQ29sb3IgPSBmdW5jdGlvbiBib3JkZXJDb2xvciAoY29sb3IpIHtcbiAgICByZXR1cm4gdGhpcy5vdXQoXCItYm9yZGVyY29sb3JcIiwgY29sb3IpO1xuICB9XG5cbiAgLy8gaHR0cDovL3d3dy5ncmFwaGljc21hZ2ljay5vcmcvR3JhcGhpY3NNYWdpY2suaHRtbCNkZXRhaWxzLWJveFxuICBwcm90by5ib3ggPSBmdW5jdGlvbiBib3ggKGNvbG9yKSB7XG4gICAgcmV0dXJuIHRoaXMub3V0KFwiLWJveFwiLCBjb2xvcik7XG4gIH1cblxuICAvLyBodHRwOi8vd3d3LmdyYXBoaWNzbWFnaWNrLm9yZy9HcmFwaGljc01hZ2ljay5odG1sI2RldGFpbHMtY2hhbm5lbFxuICBwcm90by5jaGFubmVsID0gZnVuY3Rpb24gY2hhbm5lbCAodHlwZSkge1xuICAgIHJldHVybiB0aGlzLm91dChcIi1jaGFubmVsXCIsIHR5cGUpO1xuICB9XG5cbiAgLy8gaHR0cDovL3d3dy5ncmFwaGljc21hZ2ljay5vcmcvR3JhcGhpY3NNYWdpY2suaHRtbCNkZXRhaWxzLWNob3BcbiAgcHJvdG8uY2hvcCA9IGZ1bmN0aW9uIGNob3AgKHcsIGgsIHgsIHkpIHtcbiAgICByZXR1cm4gdGhpcy5pbihcIi1jaG9wXCIsIHcrXCJ4XCIraCArIFwiK1wiKyh4fHwwKStcIitcIisoeXx8MCkpO1xuICB9XG5cbiAgLy8gaHR0cDovL3d3dy5ncmFwaGljc21hZ2ljay5vcmcvR3JhcGhpY3NNYWdpY2suaHRtbCNkZXRhaWxzLWNsaXBcbiAgcHJvdG8uY2xpcCA9IGZ1bmN0aW9uIGNsaXAgKCkge1xuICAgIHJldHVybiB0aGlzLm91dChcIi1jbGlwXCIpO1xuICB9XG5cbiAgLy8gaHR0cDovL3d3dy5ncmFwaGljc21hZ2ljay5vcmcvR3JhcGhpY3NNYWdpY2suaHRtbCNkZXRhaWxzLWNvYWxlc2NlXG4gIHByb3RvLmNvYWxlc2NlID0gZnVuY3Rpb24gY29hbGVzY2UgKCkge1xuICAgIHJldHVybiB0aGlzLm91dChcIi1jb2FsZXNjZVwiKTtcbiAgfVxuXG4gIC8vIGh0dHA6Ly93d3cuZ3JhcGhpY3NtYWdpY2sub3JnL0dyYXBoaWNzTWFnaWNrLmh0bWwjZGV0YWlscy1jb2xvcml6ZVxuICBwcm90by5jb2xvcml6ZSA9IGZ1bmN0aW9uIGNvbG9yaXplIChyLCBnLCBiKSB7XG4gICAgcmV0dXJuIHRoaXMub3V0KFwiLWNvbG9yaXplXCIsIFtyLGcsYl0uam9pbihcIixcIikpO1xuICB9XG5cbiAgLy8gaHR0cDovL3d3dy5ncmFwaGljc21hZ2ljay5vcmcvR3JhcGhpY3NNYWdpY2suaHRtbCNkZXRhaWxzLWNvbG9ybWFwXG4gIHByb3RvLmNvbG9yTWFwID0gZnVuY3Rpb24gY29sb3JNYXAgKHR5cGUpIHtcbiAgICByZXR1cm4gdGhpcy5vdXQoXCItY29sb3JtYXBcIiwgdHlwZSk7XG4gIH1cblxuICAvLyBodHRwOi8vd3d3LmdyYXBoaWNzbWFnaWNrLm9yZy9HcmFwaGljc01hZ2ljay5odG1sI2RldGFpbHMtY29tcG9zZVxuICBwcm90by5jb21wb3NlID0gZnVuY3Rpb24gY29tcG9zZSAob3BlcmF0b3IpIHtcbiAgICByZXR1cm4gdGhpcy5vdXQoXCItY29tcG9zZVwiLCBvcGVyYXRvcik7XG4gIH1cblxuICAvLyBodHRwOi8vd3d3LmdyYXBoaWNzbWFnaWNrLm9yZy9HcmFwaGljc01hZ2ljay5odG1sI2RldGFpbHMtY29tcHJlc3NcbiAgcHJvdG8uY29tcHJlc3MgPSBmdW5jdGlvbiBjb21wcmVzcyAodHlwZSkge1xuICAgIHJldHVybiB0aGlzLm91dChcIi1jb21wcmVzc1wiLCB0eXBlKTtcbiAgfVxuXG4gIC8vIGh0dHA6Ly93d3cuZ3JhcGhpY3NtYWdpY2sub3JnL0dyYXBoaWNzTWFnaWNrLmh0bWwjZGV0YWlscy1rZXJuZWxcbiAgcHJvdG8uY29udm9sdmUgPSBmdW5jdGlvbiBjb252b2x2ZSAoa2VybmVsKSB7XG4gICAgcmV0dXJuIHRoaXMub3V0KFwiLWNvbnZvbHZlXCIsIGtlcm5lbCk7XG4gIH1cblxuICAvLyBodHRwOi8vd3d3LmdyYXBoaWNzbWFnaWNrLm9yZy9HcmFwaGljc01hZ2ljay5odG1sI2RldGFpbHMtY3JlYXRlLWRpcmVjdG9yaWVzXG4gIHByb3RvLmNyZWF0ZURpcmVjdG9yaWVzID0gZnVuY3Rpb24gY3JlYXRlRGlyZWN0b3JpZXMgKCkge1xuICAgIHJldHVybiB0aGlzLm91dChcIi1jcmVhdGUtZGlyZWN0b3JpZXNcIik7XG4gIH1cblxuICAvLyBodHRwOi8vd3d3LmdyYXBoaWNzbWFnaWNrLm9yZy9HcmFwaGljc01hZ2ljay5odG1sI2RldGFpbHMtZGVjb25zdHJ1Y3RcbiAgcHJvdG8uZGVjb25zdHJ1Y3QgPSBmdW5jdGlvbiBkZWNvbnN0cnVjdCAoKSB7XG4gICAgcmV0dXJuIHRoaXMub3V0KFwiLWRlY29uc3RydWN0XCIpO1xuICB9XG5cbiAgLy8gaHR0cDovL3d3dy5ncmFwaGljc21hZ2ljay5vcmcvR3JhcGhpY3NNYWdpY2suaHRtbCNkZXRhaWxzLWRlZmluZVxuICBwcm90by5kZWZpbmUgPSBmdW5jdGlvbiBkZWZpbmUgKHZhbHVlKSB7XG4gICAgcmV0dXJuIHRoaXMub3V0KFwiLWRlZmluZVwiLCB2YWx1ZSk7XG4gIH1cblxuICAvLyBodHRwOi8vd3d3LmdyYXBoaWNzbWFnaWNrLm9yZy9HcmFwaGljc01hZ2ljay5odG1sI2RldGFpbHMtZGVsYXlcbiAgcHJvdG8uZGVsYXkgPSBmdW5jdGlvbiBkZWxheSAodmFsdWUpIHtcbiAgICByZXR1cm4gdGhpcy5vdXQoXCItZGVsYXlcIiwgdmFsdWUpO1xuICB9XG5cbiAgLy8gaHR0cDovL3d3dy5ncmFwaGljc21hZ2ljay5vcmcvR3JhcGhpY3NNYWdpY2suaHRtbCNkZXRhaWxzLWRpc3BsYWNlXG4gIHByb3RvLmRpc3BsYWNlID0gZnVuY3Rpb24gZGlzcGxhY2UgKGhvcml6b250YWxTY2FsZSwgdmVydGljYWxTY2FsZSkge1xuICAgIHJldHVybiB0aGlzLm91dChcIi1kaXNwbGFjZVwiLCBob3Jpem9udGFsU2NhbGUrJ3gnK3ZlcnRpY2FsU2NhbGUpO1xuICB9XG5cbiAgLy8gaHR0cDovL3d3dy5ncmFwaGljc21hZ2ljay5vcmcvR3JhcGhpY3NNYWdpY2suaHRtbCNkZXRhaWxzLWRpc3BsYXlcbiAgcHJvdG8uZGlzcGxheSA9IGZ1bmN0aW9uIGRpc3BsYXkgKHZhbHVlKSB7XG4gICAgcmV0dXJuIHRoaXMub3V0KFwiLWRpc3BsYXlcIiwgdmFsdWUpO1xuICB9XG5cbiAgLy8gaHR0cDovL3d3dy5ncmFwaGljc21hZ2ljay5vcmcvR3JhcGhpY3NNYWdpY2suaHRtbCNkZXRhaWxzLWRpc3Bvc2VcbiAgcHJvdG8uZGlzcG9zZSA9IGZ1bmN0aW9uIGRpc3Bvc2UgKG1ldGhvZCkge1xuICAgIHJldHVybiB0aGlzLm91dChcIi1kaXNwb3NlXCIsIG1ldGhvZCk7XG4gIH1cblxuICAvLyBodHRwOi8vd3d3LmdyYXBoaWNzbWFnaWNrLm9yZy9HcmFwaGljc01hZ2ljay5odG1sI2RldGFpbHMtZGlzc29sdmVcbiAgcHJvdG8uZGlzc29sdmUgPSBmdW5jdGlvbiBkaXNzb2x2ZSAocGVyY2VudCkge1xuICAgIHJldHVybiB0aGlzLm91dChcIi1kaXNzb2x2ZVwiLCBwZXJjZW50KyclJyk7XG4gIH1cblxuICAvLyBodHRwOi8vd3d3LmdyYXBoaWNzbWFnaWNrLm9yZy9HcmFwaGljc01hZ2ljay5odG1sI2RldGFpbHMtZW5jb2RpbmdcbiAgcHJvdG8uZW5jb2RpbmcgPSBmdW5jdGlvbiBlbmNvZGluZyAodHlwZSkge1xuICAgIHJldHVybiB0aGlzLm91dChcIi1lbmNvZGluZ1wiLCB0eXBlKTtcbiAgfVxuXG4gIC8vIGh0dHA6Ly93d3cuZ3JhcGhpY3NtYWdpY2sub3JnL0dyYXBoaWNzTWFnaWNrLmh0bWwjZGV0YWlscy1lbmRpYW5cbiAgcHJvdG8uZW5kaWFuID0gZnVuY3Rpb24gZW5kaWFuICh0eXBlKSB7XG4gICAgcmV0dXJuIHRoaXMub3V0KFwiLWVuZGlhblwiLCB0eXBlKTtcbiAgfVxuXG4gIC8vIGh0dHA6Ly93d3cuZ3JhcGhpY3NtYWdpY2sub3JnL0dyYXBoaWNzTWFnaWNrLmh0bWwjZGV0YWlscy1maWxlXG4gIHByb3RvLmZpbGUgPSBmdW5jdGlvbiBmaWxlIChmaWxlbmFtZSkge1xuICAgIHJldHVybiB0aGlzLm91dChcIi1maWxlXCIsIGZpbGVuYW1lKTtcbiAgfVxuXG4gIC8vIGh0dHA6Ly93d3cuZ3JhcGhpY3NtYWdpY2sub3JnL0dyYXBoaWNzTWFnaWNrLmh0bWwjZGV0YWlscy1mbGF0dGVuXG4gIHByb3RvLmZsYXR0ZW4gPSBmdW5jdGlvbiBmbGF0dGVuICgpIHtcbiAgICByZXR1cm4gdGhpcy5vdXQoXCItZmxhdHRlblwiKTtcbiAgfVxuXG4gIC8vIGh0dHA6Ly93d3cuZ3JhcGhpY3NtYWdpY2sub3JnL0dyYXBoaWNzTWFnaWNrLmh0bWwjZGV0YWlscy1mb3JlZ3JvdW5kXG4gIHByb3RvLmZvcmVncm91bmQgPSBmdW5jdGlvbiBmb3JlZ3JvdW5kIChjb2xvcikge1xuICAgIHJldHVybiB0aGlzLm91dChcIi1mb3JlZ3JvdW5kXCIsIGNvbG9yKTtcbiAgfVxuXG4gIC8vIGh0dHA6Ly93d3cuZ3JhcGhpY3NtYWdpY2sub3JnL0dyYXBoaWNzTWFnaWNrLmh0bWwjZGV0YWlscy1mcmFtZVxuICBwcm90by5mcmFtZSA9IGZ1bmN0aW9uIGZyYW1lICh3aWR0aCwgaGVpZ2h0LCBvdXRlckJldmVsV2lkdGgsIGlubmVyQmV2ZWxXaWR0aCkge1xuICAgIGlmKGFyZ3VtZW50cy5sZW5ndGg9PTApIHJldHVybiB0aGlzLm91dChcIi1mcmFtZVwiKTtcbiAgICByZXR1cm4gdGhpcy5vdXQoXCItZnJhbWVcIiwgd2lkdGgrJ3gnK2hlaWdodCsnKycrb3V0ZXJCZXZlbFdpZHRoKycrJytpbm5lckJldmVsV2lkdGgpO1xuICB9XG5cbiAgLy8gaHR0cDovL3d3dy5ncmFwaGljc21hZ2ljay5vcmcvR3JhcGhpY3NNYWdpY2suaHRtbCNkZXRhaWxzLWZ1enpcbiAgcHJvdG8uZnV6eiA9IGZ1bmN0aW9uIGZ1enogKGRpc3RhbmNlLCBwZXJjZW50KSB7XG4gICAgcmV0dXJuIHRoaXMub3V0KFwiLWZ1enpcIiwgZGlzdGFuY2UrKHBlcmNlbnQ/JyUnOicnKSk7XG4gIH1cblxuICAvLyBodHRwOi8vd3d3LmdyYXBoaWNzbWFnaWNrLm9yZy9HcmFwaGljc01hZ2ljay5odG1sI2RldGFpbHMtZ2F1c3NpYW5cbiAgcHJvdG8uZ2F1c3NpYW4gPSBmdW5jdGlvbiBnYXVzc2lhbiAocmFkaXVzLCBzaWdtYSkge1xuICAgIHJldHVybiB0aGlzLm91dChcIi1nYXVzc2lhblwiLCBhcmdzVG9BcnJheShyYWRpdXMsIHNpZ21hKS5qb2luKCd4JykpO1xuICB9XG5cbiAgLy8gaHR0cDovL3d3dy5ncmFwaGljc21hZ2ljay5vcmcvR3JhcGhpY3NNYWdpY2suaHRtbCNkZXRhaWxzLWdlb21ldHJ5XG4gIHByb3RvLmdlb21ldHJ5ID0gZnVuY3Rpb24gZ2VvbWV0cnkgKHdpZHRoLCBoZWlnaHQsIGFyZykge1xuICAgIC8vIElmIHRoZSBmaXJzdCBhcmd1bWVudCBpcyBhIHN0cmluZywgYW5kIHRoZXJlIGlzIG9ubHkgb25lIGFyZ3VtZW50LCB0aGlzIGlzIGEgY3VzdG9tIGdlb21ldHJ5IGNvbW1hbmQuXG4gICAgaWYoYXJndW1lbnRzLmxlbmd0aCA9PSAxICYmIHR5cGVvZiBhcmd1bWVudHNbMF0gPT09IFwic3RyaW5nXCIpXG4gICAgICByZXR1cm4gdGhpcy5vdXQoXCItZ2VvbWV0cnlcIiwgYXJndW1lbnRzWzBdKTtcblxuICAgIC8vIE90aGVyd2lzZSwgcmV0dXJuIGEgcmVzaXppbmcgZ2VvbWV0cnkgY29tbWFuZCB3aXRoIGFuIG9wdGlvbiBhbHJndW1lbnQuXG4gICAgcmV0dXJuIHRoaXMub3V0KFwiLWdlb21ldHJ5XCIsIHdpZHRoKyd4JytoZWlnaHQrKGFyZ3x8JycpKTtcbiAgfVxuXG4gIC8vIGh0dHA6Ly93d3cuZ3JhcGhpY3NtYWdpY2sub3JnL0dyYXBoaWNzTWFnaWNrLmh0bWwjZGV0YWlscy1ncmVlbi1wcmltYXJ5XG4gIHByb3RvLmdyZWVuUHJpbWFyeSA9IGZ1bmN0aW9uIGdyZWVuUHJpbWFyeSAoeCwgeSkge1xuICAgIHJldHVybiB0aGlzLm91dChcIi1ncmVlbi1wcmltYXJ5XCIsIHgrJywnK3kpO1xuICB9XG5cbiAgLy8gaHR0cDovL3d3dy5ncmFwaGljc21hZ2ljay5vcmcvR3JhcGhpY3NNYWdpY2suaHRtbCNkZXRhaWxzLWhpZ2hsaWdodC1jb2xvclxuICBwcm90by5oaWdobGlnaHRDb2xvciA9IGZ1bmN0aW9uIGhpZ2hsaWdodENvbG9yIChjb2xvcikge1xuICAgIHJldHVybiB0aGlzLm91dChcIi1oaWdobGlnaHQtY29sb3JcIiwgY29sb3IpO1xuICB9XG5cbiAgLy8gaHR0cDovL3d3dy5ncmFwaGljc21hZ2ljay5vcmcvR3JhcGhpY3NNYWdpY2suaHRtbCNkZXRhaWxzLWhpZ2hsaWdodC1zdHlsZVxuICBwcm90by5oaWdobGlnaHRTdHlsZSA9IGZ1bmN0aW9uIGhpZ2hsaWdodFN0eWxlIChzdHlsZSkge1xuICAgIHJldHVybiB0aGlzLm91dChcIi1oaWdobGlnaHQtc3R5bGVcIiwgc3R5bGUpO1xuICB9XG5cbiAgLy8gaHR0cDovL3d3dy5ncmFwaGljc21hZ2ljay5vcmcvR3JhcGhpY3NNYWdpY2suaHRtbCNkZXRhaWxzLWljb25HZW9tZXRyeVxuICBwcm90by5pY29uR2VvbWV0cnkgPSBmdW5jdGlvbiBpY29uR2VvbWV0cnkgKGdlb21ldHJ5KSB7XG4gICAgcmV0dXJuIHRoaXMub3V0KFwiLWljb25HZW9tZXRyeVwiLCBnZW9tZXRyeSk7XG4gIH1cblxuICAvLyBodHRwOi8vd3d3LmdyYXBoaWNzbWFnaWNrLm9yZy9HcmFwaGljc01hZ2ljay5odG1sI2RldGFpbHMtaW50ZW50XG4gIHByb3RvLmludGVudCA9IGZ1bmN0aW9uIGludGVudCAodHlwZSkge1xuICAgIHJldHVybiB0aGlzLm91dChcIi1pbnRlbnRcIiwgdHlwZSk7XG4gIH1cblxuICAvLyBodHRwOi8vd3d3LmdyYXBoaWNzbWFnaWNrLm9yZy9HcmFwaGljc01hZ2ljay5odG1sI2RldGFpbHMtbGF0XG4gIHByb3RvLmxhdCA9IGZ1bmN0aW9uIGxhdCAod2lkdGgsIGhlaWdodCwgb2Zmc2V0LCBwZXJjZW50KSB7XG4gICAgcmV0dXJuIHRoaXMub3V0KFwiLWxhdFwiLCB3aWR0aCsneCcraGVpZ2h0K29mZnNldCsocGVyY2VudD8nJSc6JycpKTtcbiAgfVxuXG4gIC8vIGh0dHA6Ly93d3cuZ3JhcGhpY3NtYWdpY2sub3JnL0dyYXBoaWNzTWFnaWNrLmh0bWwjZGV0YWlscy1sZXZlbFxuICBwcm90by5sZXZlbCA9IGZ1bmN0aW9uIGxldmVsIChibGFja1BvaW50LCBnYW1tYSwgd2hpdGVQb2ludCwgcGVyY2VudCkge1xuICAgIHJldHVybiB0aGlzLm91dChcIi1sZXZlbFwiLCBhcmdzVG9BcnJheShibGFja1BvaW50LCBnYW1tYSwgd2hpdGVQb2ludCkuam9pbignLCcpKyhwZXJjZW50PyclJzonJykpO1xuICB9XG5cbiAgLy8gaHR0cDovL3d3dy5ncmFwaGljc21hZ2ljay5vcmcvR3JhcGhpY3NNYWdpY2suaHRtbCNkZXRhaWxzLWxpc3RcbiAgcHJvdG8ubGlzdCA9IGZ1bmN0aW9uIGxpc3QgKHR5cGUpIHtcbiAgICByZXR1cm4gdGhpcy5vdXQoXCItbGlzdFwiLCB0eXBlKTtcbiAgfVxuXG4gIC8vIGh0dHA6Ly93d3cuZ3JhcGhpY3NtYWdpY2sub3JnL0dyYXBoaWNzTWFnaWNrLmh0bWwjZGV0YWlscy1sb2dcbiAgcHJvdG8ubG9nID0gZnVuY3Rpb24gbG9nIChzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5vdXQoXCItbG9nXCIsIHN0cmluZyk7XG4gIH1cblxuICAvLyBodHRwOi8vd3d3LmdyYXBoaWNzbWFnaWNrLm9yZy9HcmFwaGljc01hZ2ljay5odG1sI2RldGFpbHMtbG9vcFxuICBwcm90by5sb29wID0gZnVuY3Rpb24gbG9vcCAoaXRlcmF0aW9ucykge1xuICAgIHJldHVybiB0aGlzLm91dChcIi1sb29wXCIsIGl0ZXJhdGlvbnMpO1xuICB9XG5cbiAgLy8gaHR0cDovL3d3dy5ncmFwaGljc21hZ2ljay5vcmcvR3JhcGhpY3NNYWdpY2suaHRtbCNkZXRhaWxzLW1hcFxuICBwcm90by5tYXAgPSBmdW5jdGlvbiBtYXAgKGZpbGVuYW1lKSB7XG4gICAgcmV0dXJuIHRoaXMub3V0KFwiLW1hcFwiLCBmaWxlbmFtZSk7XG4gIH1cblxuICAvLyBodHRwOi8vd3d3LmdyYXBoaWNzbWFnaWNrLm9yZy9HcmFwaGljc01hZ2ljay5odG1sI2RldGFpbHMtbWFza1xuICBwcm90by5tYXNrID0gZnVuY3Rpb24gbWFzayAoZmlsZW5hbWUpIHtcbiAgICByZXR1cm4gdGhpcy5vdXQoXCItbWFza1wiLCBmaWxlbmFtZSk7XG4gIH1cblxuICAvLyBodHRwOi8vd3d3LmdyYXBoaWNzbWFnaWNrLm9yZy9HcmFwaGljc01hZ2ljay5odG1sI2RldGFpbHMtbWF0dGVcbiAgcHJvdG8ubWF0dGUgPSBmdW5jdGlvbiBtYXR0ZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMub3V0KFwiLW1hdHRlXCIpO1xuICB9XG5cbiAgLy8gaHR0cDovL3d3dy5ncmFwaGljc21hZ2ljay5vcmcvR3JhcGhpY3NNYWdpY2suaHRtbCNkZXRhaWxzLW1hdHRlY29sb3JcbiAgcHJvdG8ubWF0dGVDb2xvciA9IGZ1bmN0aW9uIG1hdHRlQ29sb3IgKGNvbG9yKSB7XG4gICAgcmV0dXJuIHRoaXMub3V0KFwiLW1hdHRlY29sb3JcIiwgY29sb3IpO1xuICB9XG5cbiAgLy8gaHR0cDovL3d3dy5ncmFwaGljc21hZ2ljay5vcmcvR3JhcGhpY3NNYWdpY2suaHRtbCNkZXRhaWxzLW1heGltdW0tZXJyb3JcbiAgcHJvdG8ubWF4aW11bUVycm9yID0gZnVuY3Rpb24gbWF4aW11bUVycm9yIChsaW1pdCkge1xuICAgIHJldHVybiB0aGlzLm91dChcIi1tYXhpbXVtLWVycm9yXCIsIGxpbWl0KTtcbiAgfVxuXG4gIC8vIGh0dHA6Ly93d3cuZ3JhcGhpY3NtYWdpY2sub3JnL0dyYXBoaWNzTWFnaWNrLmh0bWwjZGV0YWlscy1tb2RlXG4gIHByb3RvLm1vZGUgPSBmdW5jdGlvbiBtb2RlICh2YWx1ZSkge1xuICAgIHJldHVybiB0aGlzLm91dChcIi1tb2RlXCIsIHZhbHVlKTtcbiAgfVxuXG4gIC8vIGh0dHA6Ly93d3cuZ3JhcGhpY3NtYWdpY2sub3JnL0dyYXBoaWNzTWFnaWNrLmh0bWwjZGV0YWlscy1tb25pdG9yXG4gIHByb3RvLm1vbml0b3IgPSBmdW5jdGlvbiBtb25pdG9yICgpIHtcbiAgICByZXR1cm4gdGhpcy5vdXQoXCItbW9uaXRvclwiKTtcbiAgfVxuXG4gIC8vIGh0dHA6Ly93d3cuZ3JhcGhpY3NtYWdpY2sub3JnL0dyYXBoaWNzTWFnaWNrLmh0bWwjZGV0YWlscy1tb3NhaWNcbiAgcHJvdG8ubW9zYWljID0gZnVuY3Rpb24gbW9zYWljICgpIHtcbiAgICByZXR1cm4gdGhpcy5vdXQoXCItbW9zYWljXCIpO1xuICB9XG5cbiAgLy8gaHR0cDovL3d3dy5ncmFwaGljc21hZ2ljay5vcmcvR3JhcGhpY3NNYWdpY2suaHRtbCNkZXRhaWxzLW1vdGlvbi1ibHVyXG4gIHByb3RvLm1vdGlvbkJsdXIgPSBmdW5jdGlvbiBtb3Rpb25CbHVyIChyYWRpdXMsIHNpZ21hLCBhbmdsZSkge1xuICAgIHZhciBhcmc9cmFkaXVzO1xuICAgIGlmICh0eXBlb2Ygc2lnbWEhPSd1bmRlZmluZWQnKSBhcmcrPSd4JytzaWdtYTtcbiAgICBpZiAodHlwZW9mIGFuZ2xlIT0ndW5kZWZpbmVkJykgYXJnKz0nKycrYW5nbGU7XG4gICAgcmV0dXJuIHRoaXMub3V0KFwiLW1vdGlvbi1ibHVyXCIsIGFyZyk7XG4gIH1cblxuICAvLyBodHRwOi8vd3d3LmdyYXBoaWNzbWFnaWNrLm9yZy9HcmFwaGljc01hZ2ljay5odG1sI2RldGFpbHMtbmFtZVxuICBwcm90by5uYW1lID0gZnVuY3Rpb24gbmFtZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMub3V0KFwiLW5hbWVcIik7XG4gIH1cblxuICAvLyBodHRwOi8vd3d3LmdyYXBoaWNzbWFnaWNrLm9yZy9HcmFwaGljc01hZ2ljay5odG1sI2RldGFpbHMtbm9vcFxuICBwcm90by5ub29wID0gZnVuY3Rpb24gbm9vcCAoKSB7XG4gICAgcmV0dXJuIHRoaXMub3V0KFwiLW5vb3BcIik7XG4gIH1cblxuICAvLyBodHRwOi8vd3d3LmdyYXBoaWNzbWFnaWNrLm9yZy9HcmFwaGljc01hZ2ljay5odG1sI2RldGFpbHMtbm9ybWFsaXplXG4gIHByb3RvLm5vcm1hbGl6ZSA9IGZ1bmN0aW9uIG5vcm1hbGl6ZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMub3V0KFwiLW5vcm1hbGl6ZVwiKTtcbiAgfVxuXG4gIC8vIGh0dHA6Ly93d3cuZ3JhcGhpY3NtYWdpY2sub3JnL0dyYXBoaWNzTWFnaWNrLmh0bWwjZGV0YWlscy1vcGFxdWVcbiAgcHJvdG8ub3BhcXVlID0gZnVuY3Rpb24gb3BhcXVlIChjb2xvcikge1xuICAgIHJldHVybiB0aGlzLm91dChcIi1vcGFxdWVcIiwgY29sb3IpO1xuICB9XG5cbiAgLy8gaHR0cDovL3d3dy5ncmFwaGljc21hZ2ljay5vcmcvR3JhcGhpY3NNYWdpY2suaHRtbCNkZXRhaWxzLW9wZXJhdG9yXG4gIHByb3RvLm9wZXJhdG9yID0gZnVuY3Rpb24gb3BlcmF0b3IgKGNoYW5uZWwsIG9wZXJhdG9yLCBydmFsdWUsIHBlcmNlbnQpIHtcbiAgICByZXR1cm4gdGhpcy5vdXQoXCItb3BlcmF0b3JcIiwgY2hhbm5lbCwgb3BlcmF0b3IsIHJ2YWx1ZSsocGVyY2VudD8nJSc6JycpKTtcbiAgfVxuXG4gIC8vIGh0dHA6Ly93d3cuZ3JhcGhpY3NtYWdpY2sub3JnL0dyYXBoaWNzTWFnaWNrLmh0bWwjZGV0YWlscy1vcmRlcmVkLWRpdGhlclxuICBwcm90by5vcmRlcmVkRGl0aGVyID0gZnVuY3Rpb24gb3JkZXJlZERpdGhlciAoY2hhbm5lbHR5cGUsIE54Tikge1xuICAgIHJldHVybiB0aGlzLm91dChcIi1vcmRlcmVkLWRpdGhlclwiLCBjaGFubmVsdHlwZSwgTnhOKTtcbiAgfVxuXG4gIC8vIGh0dHA6Ly93d3cuZ3JhcGhpY3NtYWdpY2sub3JnL0dyYXBoaWNzTWFnaWNrLmh0bWwjZGV0YWlscy1vdXRwdXQtZGlyZWN0b3J5XG4gIHByb3RvLm91dHB1dERpcmVjdG9yeSA9IGZ1bmN0aW9uIG91dHB1dERpcmVjdG9yeSAoZGlyZWN0b3J5KSB7XG4gICAgcmV0dXJuIHRoaXMub3V0KFwiLW91dHB1dC1kaXJlY3RvcnlcIiwgZGlyZWN0b3J5KTtcbiAgfVxuXG4gIC8vIGh0dHA6Ly93d3cuZ3JhcGhpY3NtYWdpY2sub3JnL0dyYXBoaWNzTWFnaWNrLmh0bWwjZGV0YWlscy1wYWdlXG4gIHByb3RvLnBhZ2UgPSBmdW5jdGlvbiBwYWdlICh3aWR0aCwgaGVpZ2h0LCBhcmcpIHtcbiAgICByZXR1cm4gdGhpcy5vdXQoXCItcGFnZVwiLCB3aWR0aCsneCcraGVpZ2h0Kyhhcmd8fCcnKSk7XG4gIH1cblxuICAvLyBodHRwOi8vd3d3LmdyYXBoaWNzbWFnaWNrLm9yZy9HcmFwaGljc01hZ2ljay5odG1sI2RldGFpbHMtcGF1c2VcbiAgcHJvdG8ucGF1c2UgPSBmdW5jdGlvbiBwYXVzZSAoc2Vjb25kcykge1xuICAgIHJldHVybiB0aGlzLm91dChcIi1wYXVzZVwiLCBzZWNvbmRzKTtcbiAgfVxuXG4gIC8vIGh0dHA6Ly93d3cuZ3JhcGhpY3NtYWdpY2sub3JnL0dyYXBoaWNzTWFnaWNrLmh0bWwjZGV0YWlscy1wZW5cbiAgcHJvdG8ucGVuID0gZnVuY3Rpb24gcGVuIChjb2xvcikge1xuICAgIHJldHVybiB0aGlzLm91dChcIi1wZW5cIiwgY29sb3IpO1xuICB9XG5cbiAgLy8gaHR0cDovL3d3dy5ncmFwaGljc21hZ2ljay5vcmcvR3JhcGhpY3NNYWdpY2suaHRtbCNkZXRhaWxzLXBpbmdcbiAgcHJvdG8ucGluZyA9IGZ1bmN0aW9uIHBpbmcgKCkge1xuICAgIHJldHVybiB0aGlzLm91dChcIi1waW5nXCIpO1xuICB9XG5cbiAgLy8gaHR0cDovL3d3dy5ncmFwaGljc21hZ2ljay5vcmcvR3JhcGhpY3NNYWdpY2suaHRtbCNkZXRhaWxzLXBvaW50c2l6ZVxuICBwcm90by5wb2ludFNpemUgPSBmdW5jdGlvbiBwb2ludFNpemUgKHZhbHVlKSB7XG4gICAgcmV0dXJuIHRoaXMub3V0KFwiLXBvaW50c2l6ZVwiLCB2YWx1ZSk7XG4gIH1cblxuICAvLyBodHRwOi8vd3d3LmdyYXBoaWNzbWFnaWNrLm9yZy9HcmFwaGljc01hZ2ljay5odG1sI2RldGFpbHMtcHJldmlld1xuICBwcm90by5wcmV2aWV3ID0gZnVuY3Rpb24gcHJldmlldyAodHlwZSkge1xuICAgIHJldHVybiB0aGlzLm91dChcIi1wcmV2aWV3XCIsIHR5cGUpO1xuICB9XG5cbiAgLy8gaHR0cDovL3d3dy5ncmFwaGljc21hZ2ljay5vcmcvR3JhcGhpY3NNYWdpY2suaHRtbCNkZXRhaWxzLXByb2Nlc3NcbiAgcHJvdG8ucHJvY2VzcyA9IGZ1bmN0aW9uIHByb2Nlc3MgKGNvbW1hbmQpIHtcbiAgICByZXR1cm4gdGhpcy5vdXQoXCItcHJvY2Vzc1wiLCBjb21tYW5kKTtcbiAgfVxuXG4gIC8vIGh0dHA6Ly93d3cuZ3JhcGhpY3NtYWdpY2sub3JnL0dyYXBoaWNzTWFnaWNrLmh0bWwjZGV0YWlscy1wcm9maWxlXG4gIHByb3RvLnByb2ZpbGUgPSBmdW5jdGlvbiBwcm9maWxlIChmaWxlbmFtZSkge1xuICAgIHJldHVybiB0aGlzLm91dChcIi1wcm9maWxlXCIsIGZpbGVuYW1lKTtcbiAgfVxuXG4gIC8vIGh0dHA6Ly93d3cuZ3JhcGhpY3NtYWdpY2sub3JnL0dyYXBoaWNzTWFnaWNrLmh0bWwjZGV0YWlscy1wcm9ncmVzc1xuICBwcm90by5wcm9ncmVzcyA9IGZ1bmN0aW9uIHByb2dyZXNzICgpIHtcbiAgICByZXR1cm4gdGhpcy5vdXQoXCIrcHJvZ3Jlc3NcIik7XG4gIH1cblxuICAvLyBodHRwOi8vd3d3LmdyYXBoaWNzbWFnaWNrLm9yZy9HcmFwaGljc01hZ2ljay5odG1sI2RldGFpbHMtcmFuZG9tLXRocmVzaG9sZFxuICBwcm90by5yYW5kb21UaHJlc2hvbGQgPSBmdW5jdGlvbiByYW5kb21UaHJlc2hvbGQgKGNoYW5uZWx0eXBlLCBMT1d4SElHSCkge1xuICAgIHJldHVybiB0aGlzLm91dChcIi1yYW5kb20tdGhyZXNob2xkXCIsIGNoYW5uZWx0eXBlLCBMT1d4SElHSCk7XG4gIH1cblxuICAvLyBodHRwOi8vd3d3LmdyYXBoaWNzbWFnaWNrLm9yZy9HcmFwaGljc01hZ2ljay5odG1sI2RldGFpbHMtcmVjb2xvclxuICBwcm90by5yZWNvbG9yID0gZnVuY3Rpb24gcmVjb2xvciAobWF0cml4KSB7XG4gICAgcmV0dXJuIHRoaXMub3V0KFwiLXJlY29sb3JcIiwgbWF0cml4KTtcbiAgfVxuXG4gIC8vIGh0dHA6Ly93d3cuZ3JhcGhpY3NtYWdpY2sub3JnL0dyYXBoaWNzTWFnaWNrLmh0bWwjZGV0YWlscy1yZWQtcHJpbWFyeVxuICBwcm90by5yZWRQcmltYXJ5ID0gZnVuY3Rpb24gcmVkUHJpbWFyeSAoeCwgeSkge1xuICAgIHJldHVybiB0aGlzLm91dChcIi1yZWQtcHJpbWFyeVwiLCB4LCB5KTtcbiAgfVxuXG4gIC8vIGh0dHA6Ly93d3cuZ3JhcGhpY3NtYWdpY2sub3JnL0dyYXBoaWNzTWFnaWNrLmh0bWwjZGV0YWlscy1yZW1vdGVcbiAgcHJvdG8ucmVtb3RlID0gZnVuY3Rpb24gcmVtb3RlICgpIHtcbiAgICByZXR1cm4gdGhpcy5vdXQoXCItcmVtb3RlXCIpO1xuICB9XG5cbiAgLy8gaHR0cDovL3d3dy5ncmFwaGljc21hZ2ljay5vcmcvR3JhcGhpY3NNYWdpY2suaHRtbCNkZXRhaWxzLXJlbmRlclxuICBwcm90by5yZW5kZXIgPSBmdW5jdGlvbiByZW5kZXIgKCkge1xuICAgIHJldHVybiB0aGlzLm91dChcIi1yZW5kZXJcIik7XG4gIH1cblxuICAvLyBodHRwOi8vd3d3LmdyYXBoaWNzbWFnaWNrLm9yZy9HcmFwaGljc01hZ2ljay5odG1sI2RldGFpbHMtcmVwYWdlXG4gIHByb3RvLnJlcGFnZSA9IGZ1bmN0aW9uIHJlcGFnZSAod2lkdGgsIGhlaWdodCwgeG9mZiwgeW9mZiwgYXJnKSB7XG4gICAgaWYgKGFyZ3VtZW50c1swXSA9PT0gXCIrXCIpIHJldHVybiB0aGlzLm91dChcIityZXBhZ2VcIik7XG4gICAgcmV0dXJuIHRoaXMub3V0KFwiLXJlcGFnZVwiLCB3aWR0aCsneCcraGVpZ2h0KycrJyt4b2ZmKycrJyt5b2ZmKyhhcmd8fCcnKSk7XG4gIH1cblxuICAvLyBodHRwOi8vd3d3LmdyYXBoaWNzbWFnaWNrLm9yZy9HcmFwaGljc01hZ2ljay5odG1sI2RldGFpbHMtc2FtcGxlXG4gIHByb3RvLnNhbXBsZSA9IGZ1bmN0aW9uIHNhbXBsZSAoZ2VvbWV0cnkpIHtcbiAgICByZXR1cm4gdGhpcy5vdXQoXCItc2FtcGxlXCIsIGdlb21ldHJ5KTtcbiAgfVxuXG4gIC8vIGh0dHA6Ly93d3cuZ3JhcGhpY3NtYWdpY2sub3JnL0dyYXBoaWNzTWFnaWNrLmh0bWwjZGV0YWlscy1zYW1wbGluZy1mYWN0b3JcbiAgcHJvdG8uc2FtcGxpbmdGYWN0b3IgPSBmdW5jdGlvbiBzYW1wbGluZ0ZhY3RvciAoaG9yaXpvbnRhbEZhY3RvciwgdmVydGljYWxGYWN0b3IpIHtcbiAgICByZXR1cm4gdGhpcy5vdXQoXCItc2FtcGxpbmctZmFjdG9yXCIsIGhvcml6b250YWxGYWN0b3IrJ3gnK3ZlcnRpY2FsRmFjdG9yKTtcbiAgfVxuXG4gIC8vIGh0dHA6Ly93d3cuZ3JhcGhpY3NtYWdpY2sub3JnL0dyYXBoaWNzTWFnaWNrLmh0bWwjZGV0YWlscy1zY2VuZVxuICBwcm90by5zY2VuZSA9IGZ1bmN0aW9uIHNjZW5lICh2YWx1ZSkge1xuICAgIHJldHVybiB0aGlzLm91dChcIi1zY2VuZVwiLCB2YWx1ZSk7XG4gIH1cblxuICAvLyBodHRwOi8vd3d3LmdyYXBoaWNzbWFnaWNrLm9yZy9HcmFwaGljc01hZ2ljay5odG1sI2RldGFpbHMtc2NlbmVzXG4gIHByb3RvLnNjZW5lcyA9IGZ1bmN0aW9uIHNjZW5lcyAoc3RhcnQsIGVuZCkge1xuICAgIHJldHVybiB0aGlzLm91dChcIi1zY2VuZXNcIiwgc3RhcnQrJy0nK2VuZCk7XG4gIH1cblxuICAvLyBodHRwOi8vd3d3LmdyYXBoaWNzbWFnaWNrLm9yZy9HcmFwaGljc01hZ2ljay5odG1sI2RldGFpbHMtc2NyZWVuXG4gIHByb3RvLnNjcmVlbiA9IGZ1bmN0aW9uIHNjcmVlbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMub3V0KFwiLXNjcmVlblwiKTtcbiAgfVxuXG4gIC8vIGh0dHA6Ly93d3cuZ3JhcGhpY3NtYWdpY2sub3JnL0dyYXBoaWNzTWFnaWNrLmh0bWwjZGV0YWlscy1zZXRcbiAgcHJvdG8uc2V0ID0gZnVuY3Rpb24gc2V0IChhdHRyaWJ1dGUsIHZhbHVlKSB7XG4gICAgcmV0dXJuIHRoaXMub3V0KFwiLXNldFwiLCBhdHRyaWJ1dGUsIHZhbHVlKTtcbiAgfVxuXG4gIC8vIGh0dHA6Ly93d3cuZ3JhcGhpY3NtYWdpY2sub3JnL0dyYXBoaWNzTWFnaWNrLmh0bWwjZGV0YWlscy1zZWdtZW50XG4gIHByb3RvLnNlZ21lbnQgPSBmdW5jdGlvbiBzZWdtZW50IChjbHVzdGVyVGhyZXNob2xkLCBzbW9vdGhpbmdUaHJlc2hvbGQpIHtcbiAgICByZXR1cm4gdGhpcy5vdXQoXCItc2VnbWVudFwiLCBjbHVzdGVyVGhyZXNob2xkKyd4JytzbW9vdGhpbmdUaHJlc2hvbGQpO1xuICB9XG5cbiAgLy8gaHR0cDovL3d3dy5ncmFwaGljc21hZ2ljay5vcmcvR3JhcGhpY3NNYWdpY2suaHRtbCNkZXRhaWxzLXNoYWRlXG4gIHByb3RvLnNoYWRlID0gZnVuY3Rpb24gc2hhZGUgKGF6aW11dGgsIGVsZXZhdGlvbikge1xuICAgIHJldHVybiB0aGlzLm91dChcIi1zaGFkZVwiLCBhemltdXRoKyd4JytlbGV2YXRpb24pO1xuICB9XG5cbiAgLy8gaHR0cDovL3d3dy5ncmFwaGljc21hZ2ljay5vcmcvR3JhcGhpY3NNYWdpY2suaHRtbCNkZXRhaWxzLXNoYWRvd1xuICBwcm90by5zaGFkb3cgPSBmdW5jdGlvbiBzaGFkb3cgKHJhZGl1cywgc2lnbWEpIHtcbiAgICByZXR1cm4gdGhpcy5vdXQoXCItc2hhZG93XCIsIGFyZ3NUb0FycmF5KHJhZGl1cywgc2lnbWEpLmpvaW4oJ3gnKSk7XG4gIH1cblxuICAvLyBodHRwOi8vd3d3LmdyYXBoaWNzbWFnaWNrLm9yZy9HcmFwaGljc01hZ2ljay5odG1sI2RldGFpbHMtc2hhcmVkLW1lbW9yeVxuICBwcm90by5zaGFyZWRNZW1vcnkgPSBmdW5jdGlvbiBzaGFyZWRNZW1vcnkgKCkge1xuICAgIHJldHVybiB0aGlzLm91dChcIi1zaGFyZWQtbWVtb3J5XCIpO1xuICB9XG5cbiAgLy8gaHR0cDovL3d3dy5ncmFwaGljc21hZ2ljay5vcmcvR3JhcGhpY3NNYWdpY2suaHRtbCNkZXRhaWxzLXNoYXZlXG4gIHByb3RvLnNoYXZlID0gZnVuY3Rpb24gc2hhdmUgKHdpZHRoLCBoZWlnaHQsIHBlcmNlbnQpIHtcbiAgICByZXR1cm4gdGhpcy5vdXQoXCItc2hhdmVcIiwgd2lkdGgrJ3gnK2hlaWdodCsocGVyY2VudD8nJSc6JycpKTtcbiAgfVxuXG4gIC8vIGh0dHA6Ly93d3cuZ3JhcGhpY3NtYWdpY2sub3JnL0dyYXBoaWNzTWFnaWNrLmh0bWwjZGV0YWlscy1zaGVhclxuICBwcm90by5zaGVhciA9IGZ1bmN0aW9uIHNoZWFyICh4RGVncmVlcywgeURlZ3JlZWVzKSB7XG4gICAgcmV0dXJuIHRoaXMub3V0KFwiLXNoZWFyXCIsIHhEZWdyZWVzKyd4Jyt5RGVncmVlZXMpO1xuICB9XG5cbiAgLy8gaHR0cDovL3d3dy5ncmFwaGljc21hZ2ljay5vcmcvR3JhcGhpY3NNYWdpY2suaHRtbCNkZXRhaWxzLXNpbGVudFxuICBwcm90by5zaWxlbnQgPSBmdW5jdGlvbiBzaWxlbnQgKGNvbG9yKSB7XG4gICAgcmV0dXJuIHRoaXMub3V0KFwiLXNpbGVudFwiKTtcbiAgfVxuXG4gIC8vIGh0dHA6Ly93d3cuZ3JhcGhpY3NtYWdpY2sub3JnL0dyYXBoaWNzTWFnaWNrLmh0bWwjZGV0YWlscy1zaXplXG4gIHByb3RvLnJhd1NpemUgPSBmdW5jdGlvbiByYXdTaXplICh3aWR0aCwgaGVpZ2h0LCBvZmZzZXQpIHtcbiAgICB2YXIgb2ZmID0gJ3VuZGVmaW5lZCcgIT0gdHlwZW9mIG9mZnNldFxuICAgICAgPyAnKycgKyBvZmZzZXRcbiAgICAgIDogJyc7XG4gICAgcmV0dXJuIHRoaXMub3V0KFwiLXNpemVcIiwgd2lkdGggKyd4JysgaGVpZ2h0ICsgb2ZmKTtcbiAgfVxuXG4gIC8vIGh0dHA6Ly93d3cuZ3JhcGhpY3NtYWdpY2sub3JnL0dyYXBoaWNzTWFnaWNrLmh0bWwjZGV0YWlscy1zbmFwc1xuICBwcm90by5zbmFwcyA9IGZ1bmN0aW9uIHNuYXBzICh2YWx1ZSkge1xuICAgIHJldHVybiB0aGlzLm91dChcIi1zbmFwc1wiLCB2YWx1ZSk7XG4gIH1cblxuICAvLyBodHRwOi8vd3d3LmdyYXBoaWNzbWFnaWNrLm9yZy9HcmFwaGljc01hZ2ljay5odG1sI2RldGFpbHMtc3RlZ2Fub1xuICBwcm90by5zdGVnYW5vID0gZnVuY3Rpb24gc3RlZ2FubyAob2Zmc2V0KSB7XG4gICAgcmV0dXJuIHRoaXMub3V0KFwiLXN0ZWdhbm9cIiwgb2Zmc2V0KTtcbiAgfVxuXG4gIC8vIGh0dHA6Ly93d3cuZ3JhcGhpY3NtYWdpY2sub3JnL0dyYXBoaWNzTWFnaWNrLmh0bWwjZGV0YWlscy1zdGVyZW9cbiAgcHJvdG8uc3RlcmVvID0gZnVuY3Rpb24gc3RlcmVvICgpIHtcbiAgICByZXR1cm4gdGhpcy5vdXQoXCItc3RlcmVvXCIpO1xuICB9XG5cbiAgLy8gaHR0cDovL3d3dy5ncmFwaGljc21hZ2ljay5vcmcvR3JhcGhpY3NNYWdpY2suaHRtbCNkZXRhaWxzLXRleHQtZm9udFxuICBwcm90by50ZXh0Rm9udCA9IGZ1bmN0aW9uIHRleHRGb250IChuYW1lKSB7XG4gICAgcmV0dXJuIHRoaXMub3V0KFwiLXRleHQtZm9udFwiLCBuYW1lKTtcbiAgfVxuXG4gIC8vIGh0dHA6Ly93d3cuZ3JhcGhpY3NtYWdpY2sub3JnL0dyYXBoaWNzTWFnaWNrLmh0bWwjZGV0YWlscy10ZXh0dXJlXG4gIHByb3RvLnRleHR1cmUgPSBmdW5jdGlvbiB0ZXh0dXJlIChmaWxlbmFtZSkge1xuICAgIHJldHVybiB0aGlzLm91dChcIi10ZXh0dXJlXCIsIGZpbGVuYW1lKTtcbiAgfVxuXG4gIC8vIGh0dHA6Ly93d3cuZ3JhcGhpY3NtYWdpY2sub3JnL0dyYXBoaWNzTWFnaWNrLmh0bWwjZGV0YWlscy10aHJlc2hvbGRcbiAgcHJvdG8udGhyZXNob2xkID0gZnVuY3Rpb24gdGhyZXNob2xkICh2YWx1ZSwgcGVyY2VudCkge1xuICAgIHJldHVybiB0aGlzLm91dChcIi10aHJlc2hvbGRcIiwgdmFsdWUrKHBlcmNlbnQ/JyUnOicnKSk7XG4gIH1cblxuICAvLyBodHRwOi8vd3d3LmdyYXBoaWNzbWFnaWNrLm9yZy9HcmFwaGljc01hZ2ljay5odG1sI2RldGFpbHMtdGh1bWJuYWlsXG4gIHByb3RvLnRodW1ibmFpbCA9IGZ1bmN0aW9uIHRodW1ibmFpbCAod2lkdGgsIGhlaWdodCkge1xuICAgIHJldHVybiB0aGlzLm91dChcIi10aHVtYm5haWxcIiwgd2lkdGggKyBcInhcIiArIGhlaWdodCk7XG4gIH1cblxuICAvLyBodHRwOi8vd3d3LmdyYXBoaWNzbWFnaWNrLm9yZy9HcmFwaGljc01hZ2ljay5odG1sI2RldGFpbHMtdGlsZVxuICBwcm90by50aWxlID0gZnVuY3Rpb24gdGlsZSAoZmlsZW5hbWUpIHtcbiAgICByZXR1cm4gdGhpcy5vdXQoXCItdGlsZVwiLCBmaWxlbmFtZSk7XG4gIH1cblxuICAvLyBodHRwOi8vd3d3LmdyYXBoaWNzbWFnaWNrLm9yZy9HcmFwaGljc01hZ2ljay5odG1sI2RldGFpbHMtdGl0bGVcbiAgcHJvdG8udGl0bGUgPSBmdW5jdGlvbiB0aXRsZSAoc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMub3V0KFwiLXRpdGxlXCIsIHN0cmluZyk7XG4gIH1cblxuICAvLyBodHRwOi8vd3d3LmdyYXBoaWNzbWFnaWNrLm9yZy9HcmFwaGljc01hZ2ljay5odG1sI2RldGFpbHMtdHJhbnNmb3JtXG4gIHByb3RvLnRyYW5zZm9ybSA9IGZ1bmN0aW9uIHRyYW5zZm9ybSAoY29sb3IpIHtcbiAgICByZXR1cm4gdGhpcy5vdXQoXCItdHJhbnNmb3JtXCIsIGNvbG9yKTtcbiAgfVxuXG4gIC8vIGh0dHA6Ly93d3cuZ3JhcGhpY3NtYWdpY2sub3JnL0dyYXBoaWNzTWFnaWNrLmh0bWwjZGV0YWlscy10cmFuc3BhcmVudFxuICBwcm90by50cmFuc3BhcmVudCA9IGZ1bmN0aW9uIHRyYW5zcGFyZW50IChjb2xvcikge1xuICAgIHJldHVybiB0aGlzLm91dChcIi10cmFuc3BhcmVudFwiLCBjb2xvcik7XG4gIH1cblxuICAvLyBodHRwOi8vd3d3LmdyYXBoaWNzbWFnaWNrLm9yZy9HcmFwaGljc01hZ2ljay5odG1sI2RldGFpbHMtdHJlZWRlcHRoXG4gIHByb3RvLnRyZWVEZXB0aCA9IGZ1bmN0aW9uIHRyZWVEZXB0aCAodmFsdWUpIHtcbiAgICByZXR1cm4gdGhpcy5vdXQoXCItdHJlZWRlcHRoXCIsIHZhbHVlKTtcbiAgfVxuXG4gIC8vIGh0dHA6Ly93d3cuZ3JhcGhpY3NtYWdpY2sub3JnL0dyYXBoaWNzTWFnaWNrLmh0bWwjZGV0YWlscy11cGRhdGVcbiAgcHJvdG8udXBkYXRlID0gZnVuY3Rpb24gdXBkYXRlIChzZWNvbmRzKSB7XG4gICAgcmV0dXJuIHRoaXMub3V0KFwiLXVwZGF0ZVwiLCBzZWNvbmRzKTtcbiAgfVxuXG4gIC8vIGh0dHA6Ly93d3cuZ3JhcGhpY3NtYWdpY2sub3JnL0dyYXBoaWNzTWFnaWNrLmh0bWwjZGV0YWlscy11bml0c1xuICBwcm90by51bml0cyA9IGZ1bmN0aW9uIHVuaXRzICh0eXBlKSB7XG4gICAgcmV0dXJuIHRoaXMub3V0KFwiLXVuaXRzXCIsIHR5cGUpO1xuICB9XG5cbiAgLy8gaHR0cDovL3d3dy5ncmFwaGljc21hZ2ljay5vcmcvR3JhcGhpY3NNYWdpY2suaHRtbCNkZXRhaWxzLXVuc2hhcnBcbiAgcHJvdG8udW5zaGFycCA9IGZ1bmN0aW9uIHVuc2hhcnAgKHJhZGl1cywgc2lnbWEsIGFtb3VudCwgdGhyZXNob2xkKSB7XG4gICAgdmFyIGFyZz1yYWRpdXM7XG4gICAgaWYgKHR5cGVvZiBzaWdtYSAhPSAndW5kZWZpbmVkJykgYXJnKz0neCcrc2lnbWE7XG4gICAgaWYgKHR5cGVvZiBhbW91bnQgIT0gJ3VuZGVmaW5lZCcpIGFyZys9JysnK2Ftb3VudDtcbiAgICBpZiAodHlwZW9mIHRocmVzaG9sZCAhPSAndW5kZWZpbmVkJykgYXJnKz0nKycrdGhyZXNob2xkO1xuICAgIHJldHVybiB0aGlzLm91dChcIi11bnNoYXJwXCIsIGFyZyk7XG4gIH1cblxuICAvLyBodHRwOi8vd3d3LmdyYXBoaWNzbWFnaWNrLm9yZy9HcmFwaGljc01hZ2ljay5odG1sI2RldGFpbHMtdXNlLXBpeG1hcFxuICBwcm90by51c2VQaXhtYXAgPSBmdW5jdGlvbiB1c2VQaXhtYXAgKCkge1xuICAgIHJldHVybiB0aGlzLm91dChcIi11c2UtcGl4bWFwXCIpO1xuICB9XG5cbiAgLy8gaHR0cDovL3d3dy5ncmFwaGljc21hZ2ljay5vcmcvR3JhcGhpY3NNYWdpY2suaHRtbCNkZXRhaWxzLXZpZXdcbiAgcHJvdG8udmlldyA9IGZ1bmN0aW9uIHZpZXcgKHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLm91dChcIi12aWV3XCIsIHN0cmluZyk7XG4gIH1cblxuICAvLyBodHRwOi8vd3d3LmdyYXBoaWNzbWFnaWNrLm9yZy9HcmFwaGljc01hZ2ljay5odG1sI2RldGFpbHMtdmlydHVhbC1waXhlbFxuICBwcm90by52aXJ0dWFsUGl4ZWwgPSBmdW5jdGlvbiB2aXJ0dWFsUGl4ZWwgKG1ldGhvZCkge1xuICAgIHJldHVybiB0aGlzLm91dChcIi12aXJ0dWFsLXBpeGVsXCIsIG1ldGhvZCk7XG4gIH1cblxuICAvLyBodHRwOi8vd3d3LmdyYXBoaWNzbWFnaWNrLm9yZy9HcmFwaGljc01hZ2ljay5odG1sI2RldGFpbHMtdmlzdWFsXG4gIHByb3RvLnZpc3VhbCA9IGZ1bmN0aW9uIHZpc3VhbCAodHlwZSkge1xuICAgIHJldHVybiB0aGlzLm91dChcIi12aXN1YWxcIiwgdHlwZSk7XG4gIH1cblxuICAvLyBodHRwOi8vd3d3LmdyYXBoaWNzbWFnaWNrLm9yZy9HcmFwaGljc01hZ2ljay5odG1sI2RldGFpbHMtd2F0ZXJtYXJrXG4gIHByb3RvLndhdGVybWFyayA9IGZ1bmN0aW9uIHdhdGVybWFyayAoYnJpZ2h0bmVzcywgc2F0dXJhdGlvbikge1xuICAgIHJldHVybiB0aGlzLm91dChcIi13YXRlcm1hcmtcIiwgYnJpZ2h0bmVzcysneCcrc2F0dXJhdGlvbik7XG4gIH1cblxuICAvLyBodHRwOi8vd3d3LmdyYXBoaWNzbWFnaWNrLm9yZy9HcmFwaGljc01hZ2ljay5odG1sI2RldGFpbHMtd2F2ZVxuICBwcm90by53YXZlID0gZnVuY3Rpb24gd2F2ZSAoYW1wbGl0dWRlLCB3YXZlbGVuZ3RoKSB7XG4gICAgcmV0dXJuIHRoaXMub3V0KFwiLXdhdmVcIiwgYW1wbGl0dWRlKyd4Jyt3YXZlbGVuZ3RoKTtcbiAgfVxuXG4gIC8vIGh0dHA6Ly93d3cuZ3JhcGhpY3NtYWdpY2sub3JnL0dyYXBoaWNzTWFnaWNrLmh0bWwjZGV0YWlscy13aGl0ZS1wb2ludFxuICBwcm90by53aGl0ZVBvaW50ID0gZnVuY3Rpb24gd2hpdGVQb2ludCAoeCwgeSkge1xuICAgIHJldHVybiB0aGlzLm91dChcIi13aGl0ZS1wb2ludFwiLCB4Kyd4Jyt5KTtcbiAgfVxuXG4gIC8vIGh0dHA6Ly93d3cuZ3JhcGhpY3NtYWdpY2sub3JnL0dyYXBoaWNzTWFnaWNrLmh0bWwjZGV0YWlscy13aGl0ZS10aHJlc2hvbGRcbiAgcHJvdG8ud2hpdGVUaHJlc2hvbGQgPSBmdW5jdGlvbiB3aGl0ZVRocmVzaG9sZCAocmVkLCBncmVlbiwgYmx1ZSwgb3BhY2l0eSkge1xuICAgIHJldHVybiB0aGlzLm91dChcIi13aGl0ZS10aHJlc2hvbGRcIiwgYXJnc1RvQXJyYXkocmVkLCBncmVlbiwgYmx1ZSwgb3BhY2l0eSkuam9pbignLCcpKTtcbiAgfVxuXG4gIC8vIGh0dHA6Ly93d3cuZ3JhcGhpY3NtYWdpY2sub3JnL0dyYXBoaWNzTWFnaWNrLmh0bWwjZGV0YWlscy13aW5kb3dcbiAgcHJvdG8ud2luZG93ID0gZnVuY3Rpb24gd2luZG93IChpZCkge1xuICAgIHJldHVybiB0aGlzLm91dChcIi13aW5kb3dcIiwgaWQpO1xuICB9XG5cbiAgLy8gaHR0cDovL3d3dy5ncmFwaGljc21hZ2ljay5vcmcvR3JhcGhpY3NNYWdpY2suaHRtbCNkZXRhaWxzLXdpbmRvdy1ncm91cFxuICBwcm90by53aW5kb3dHcm91cCA9IGZ1bmN0aW9uIHdpbmRvd0dyb3VwICgpIHtcbiAgICByZXR1cm4gdGhpcy5vdXQoXCItd2luZG93LWdyb3VwXCIpO1xuICB9XG5cbiAgLy8gaHR0cDovL3d3dy5ncmFwaGljc21hZ2ljay5vcmcvR3JhcGhpY3NNYWdpY2suaHRtbCNkZXRhaWxzLXN0cmlwIChncmFwaGljc01hZ2ljayA+PSAxLjMuMTUpXG4gIHByb3RvLnN0cmlwID0gZnVuY3Rpb24gc3RyaXAgKCkge1xuICAgIGlmICh0aGlzLl9vcHRpb25zLmltYWdlTWFnaWNrKSByZXR1cm4gdGhpcy5vdXQoXCItc3RyaXBcIik7XG4gICAgcmV0dXJuIHRoaXMubm9Qcm9maWxlKCkub3V0KFwiK2NvbW1lbnRcIik7Ly9FcXVpdmFsZW50IHRvIFwiLXN0cmlwXCIgZm9yIGFsbCB2ZXJzaW9ucyBvZiBncmFwaGljc01hZ2lja1xuICB9XG5cbiAgLy8gaHR0cDovL3d3dy5ncmFwaGljc21hZ2ljay5vcmcvR3JhcGhpY3NNYWdpY2suaHRtbCNkZXRhaWxzLWludGVybGFjZVxuICBwcm90by5pbnRlcmxhY2UgPSBmdW5jdGlvbiBpbnRlcmxhY2UgKHR5cGUpIHtcbiAgICByZXR1cm4gdGhpcy5vdXQoXCItaW50ZXJsYWNlXCIsIHR5cGUgfHwgXCJOb25lXCIpO1xuICB9XG5cbiAgLy8gZm9yY2Ugb3V0cHV0IGZvcm1hdFxuICBwcm90by5zZXRGb3JtYXQgPSBmdW5jdGlvbiBzZXRGb3JtYXQgKGZvcm1hdCkge1xuICAgIGlmIChmb3JtYXQpIHRoaXMuX291dHB1dEZvcm1hdCA9IGZvcm1hdDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8vIGh0dHA6Ly93d3cuZ3JhcGhpY3NtYWdpY2sub3JnL0dyYXBoaWNzTWFnaWNrLmh0bWwjZGV0YWlscy1yZXNpemVcbiAgcHJvdG8ucmVzaXplID0gZnVuY3Rpb24gcmVzaXplICh3LCBoLCBvcHRpb25zKSB7XG4gICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwgXCJcIjtcbiAgICB2YXIgZ2VvbWV0cnksXG4gICAgICB3SXNWYWxpZCA9IEJvb2xlYW4odyB8fCB3ID09PSAwKSxcbiAgICAgIGhJc1ZhbGlkID0gQm9vbGVhbihoIHx8IGggPT09IDApO1xuXG4gICAgaWYgKHdJc1ZhbGlkICYmIGhJc1ZhbGlkKSB7XG4gICAgICBnZW9tZXRyeSA9IHcgKyBcInhcIiArIGggKyBvcHRpb25zXG4gICAgfSBlbHNlIGlmICh3SXNWYWxpZCkge1xuICAgICAgLy8gR3JhcGhpY3NNYWdpY2sgcmVxdWlyZXMgPHdpZHRoPng8b3B0aW9ucz4sIEltYWdlTWFnaWNrIHJlcXVpcmVzIDx3aWR0aD48b3B0aW9ucz5cbiAgICAgIGdlb21ldHJ5ID0gKHRoaXMuX29wdGlvbnMuaW1hZ2VNYWdpY2spID8gdyArIG9wdGlvbnMgOiB3ICtcbiAgICAgICAgJ3gnICsgb3B0aW9ucztcbiAgICB9IGVsc2UgaWYgKGhJc1ZhbGlkKSB7XG4gICAgICBnZW9tZXRyeSA9ICd4JyArIGggKyBvcHRpb25zXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzXG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMub3V0KFwiLXJlc2l6ZVwiLCBnZW9tZXRyeSk7XG4gIH1cblxuICAvLyBodHRwOi8vd3d3LmdyYXBoaWNzbWFnaWNrLm9yZy9HcmFwaGljc01hZ2ljay5odG1sI2RldGFpbHMtcmVzaXplIHdpdGggJyEnIG9wdGlvblxuICBwcm90by5yZXNpemVFeGFjdCA9IGZ1bmN0aW9uIHJlc2l6ZSAodywgaCkge1xuICAgIHZhciBvcHRpb25zID0gXCIhXCI7XG4gICAgcmV0dXJuIHByb3RvLnJlc2l6ZS5hcHBseSh0aGlzLCBbdywgaCwgb3B0aW9uc10pO1xuICB9XG5cbiAgLy8gaHR0cDovL3d3dy5ncmFwaGljc21hZ2ljay5vcmcvR3JhcGhpY3NNYWdpY2suaHRtbCNkZXRhaWxzLXNjYWxlXG4gIHByb3RvLnNjYWxlID0gZnVuY3Rpb24gc2NhbGUgKHcsIGgsIG9wdGlvbnMpIHtcbiAgICBvcHRpb25zID0gb3B0aW9ucyB8fCBcIlwiO1xuICAgIHZhciBnZW9tZXRyeTtcbiAgICBpZiAodyAmJiBoKSB7XG4gICAgICBnZW9tZXRyeSA9IHcgKyBcInhcIiArIGggKyBvcHRpb25zXG4gICAgfSBlbHNlIGlmICh3ICYmICFoKSB7XG4gICAgICBnZW9tZXRyeSA9ICh0aGlzLl9vcHRpb25zLmltYWdlTWFnaWNrKSA/IHcgKyBvcHRpb25zIDogdyArICd4JyArIG9wdGlvbnM7XG4gICAgfSBlbHNlIGlmICghdyAmJiBoKSB7XG4gICAgICBnZW9tZXRyeSA9ICd4JyArIGggKyBvcHRpb25zXG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMub3V0KFwiLXNjYWxlXCIsIGdlb21ldHJ5KTtcbiAgfVxuXG4gIC8vIGh0dHA6Ly93d3cuZ3JhcGhpY3NtYWdpY2sub3JnL0dyYXBoaWNzTWFnaWNrLmh0bWwjZGV0YWlscy1maWx0ZXJcbiAgcHJvdG8uZmlsdGVyID0gZnVuY3Rpb24gZmlsdGVyICh2YWwpIHtcbiAgICByZXR1cm4gdGhpcy5vdXQoXCItZmlsdGVyXCIsIHZhbCk7XG4gIH1cblxuICAvLyBodHRwOi8vd3d3LmdyYXBoaWNzbWFnaWNrLm9yZy9HcmFwaGljc01hZ2ljay5odG1sI2RldGFpbHMtZGVuc2l0eVxuICBwcm90by5kZW5zaXR5ID0gZnVuY3Rpb24gZGVuc2l0eSAodywgaCkge1xuICAgIGlmICh3ICYmICFoICYmIHRoaXMuX29wdGlvbnMuaW1hZ2VNYWdpY2spIHtcbiAgICAgIC8vIEdyYXBoaWNzTWFnaWNrIHJlcXVpcmVzIDx3aWR0aD54PGhlaWdodD55LCBJbWFnZU1hZ2ljayBtYXkgdGFrZSBkcGk8cmVzb2x1dGlvbj5cbiAgICAgIC8vIHJlY29tbWVuZGVkIDMwMGRwaSBmb3IgaGlnaGVyIHF1YWxpdHlcbiAgICAgIHJldHVybiB0aGlzLmluKFwiLWRlbnNpdHlcIiwgdyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmluKFwiLWRlbnNpdHlcIiwgdyArXCJ4XCIrIGgpO1xuICB9XG5cbiAgLy8gaHR0cDovL3d3dy5ncmFwaGljc21hZ2ljay5vcmcvR3JhcGhpY3NNYWdpY2suaHRtbCNkZXRhaWxzLXByb2ZpbGVcbiAgcHJvdG8ubm9Qcm9maWxlID0gZnVuY3Rpb24gbm9Qcm9maWxlICgpIHtcbiAgICB0aGlzLm91dCgnK3Byb2ZpbGUnLCAnXCIqXCInKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8vIGh0dHA6Ly93d3cuZ3JhcGhpY3NtYWdpY2sub3JnL0dyYXBoaWNzTWFnaWNrLmh0bWwjZGV0YWlscy1yZXNhbXBsZVxuICBwcm90by5yZXNhbXBsZSA9IGZ1bmN0aW9uIHJlc2FtcGxlICh3LCBoKSB7XG4gICAgcmV0dXJuIHRoaXMub3V0KFwiLXJlc2FtcGxlXCIsIHcrXCJ4XCIraCk7XG4gIH1cblxuICAvLyBodHRwOi8vd3d3LmdyYXBoaWNzbWFnaWNrLm9yZy9HcmFwaGljc01hZ2ljay5odG1sI2RldGFpbHMtcm90YXRlXG4gIHByb3RvLnJvdGF0ZSA9IGZ1bmN0aW9uIHJvdGF0ZSAoY29sb3IsIGRlZykge1xuICAgIHJldHVybiB0aGlzLm91dChcIi1iYWNrZ3JvdW5kXCIsIGNvbG9yLCBcIi1yb3RhdGVcIiwgU3RyaW5nKGRlZyB8fCAwKSk7XG4gIH1cblxuICAvLyBodHRwOi8vd3d3LmdyYXBoaWNzbWFnaWNrLm9yZy9HcmFwaGljc01hZ2ljay5odG1sI2RldGFpbHMtZmxpcFxuICBwcm90by5mbGlwID0gZnVuY3Rpb24gZmxpcCAoKSB7XG4gICAgcmV0dXJuIHRoaXMub3V0KFwiLWZsaXBcIik7XG4gIH1cblxuICAvLyBodHRwOi8vd3d3LmdyYXBoaWNzbWFnaWNrLm9yZy9HcmFwaGljc01hZ2ljay5odG1sI2RldGFpbHMtZmxvcFxuICBwcm90by5mbG9wID0gZnVuY3Rpb24gZmxvcCAoKSB7XG4gICAgcmV0dXJuIHRoaXMub3V0KFwiLWZsb3BcIik7XG4gIH1cblxuICAvLyBodHRwOi8vd3d3LmdyYXBoaWNzbWFnaWNrLm9yZy9HcmFwaGljc01hZ2ljay5odG1sI2RldGFpbHMtY3JvcFxuICBwcm90by5jcm9wID0gZnVuY3Rpb24gY3JvcCAodywgaCwgeCwgeSwgcGVyY2VudCkge1xuICAgIGlmICh0aGlzLmlucHV0SXMoJ2pwZycpKSB7XG4gICAgICAvLyBhdm9pZCBlcnJvciBcImdlb21ldHJ5IGRvZXMgbm90IGNvbnRhaW4gaW1hZ2UgKHVuYWJsZSB0byBjcm9wIGltYWdlKVwiIC0gZ2gtMTdcbiAgICAgIHZhciBpbmRleCA9IHRoaXMuX2luLmluZGV4T2YoJy1zaXplJyk7XG4gICAgICBpZiAofmluZGV4KSB7XG4gICAgICAgIHRoaXMuX2luLnNwbGljZShpbmRleCwgMik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMub3V0KFwiLWNyb3BcIiwgdyArIFwieFwiICsgaCArIFwiK1wiICsgKHggfHwgMCkgKyBcIitcIiArICh5IHx8IDApICsgKHBlcmNlbnQgPyAnJScgOiAnJykpO1xuICB9XG5cbiAgLy8gaHR0cDovL3d3dy5ncmFwaGljc21hZ2ljay5vcmcvR3JhcGhpY3NNYWdpY2suaHRtbCNkZXRhaWxzLW1hZ25pZnlcbiAgcHJvdG8ubWFnbmlmeSA9IGZ1bmN0aW9uIG1hZ25pZnkgKGZhY3Rvcikge1xuICAgIHJldHVybiB0aGlzLmluKFwiLW1hZ25pZnlcIik7XG4gIH1cblxuICAvLyBodHRwOi8vd3d3LmdyYXBoaWNzbWFnaWNrLm9yZy9HcmFwaGljc01hZ2ljay5odG1sXG4gIHByb3RvLm1pbmlmeSA9IGZ1bmN0aW9uIG1pbmlmeSAoKSB7XG4gICAgcmV0dXJuIHRoaXMuaW4oXCItbWluaWZ5XCIpXG4gIH1cblxuICAvLyBodHRwOi8vd3d3LmdyYXBoaWNzbWFnaWNrLm9yZy9HcmFwaGljc01hZ2ljay5odG1sI2RldGFpbHMtcXVhbGl0eVxuICBwcm90by5xdWFsaXR5ID0gZnVuY3Rpb24gcXVhbGl0eSAodmFsKSB7XG4gICAgcmV0dXJuIHRoaXMuaW4oXCItcXVhbGl0eVwiLCB2YWwgfHwgNzUpO1xuICB9XG5cbiAgLy8gaHR0cDovL3d3dy5ncmFwaGljc21hZ2ljay5vcmcvR3JhcGhpY3NNYWdpY2suaHRtbCNkZXRhaWxzLWJsdXJcbiAgcHJvdG8uYmx1ciA9IGZ1bmN0aW9uIGJsdXIgKHJhZGl1cywgc2lnbWEpIHtcbiAgICByZXR1cm4gdGhpcy5vdXQoXCItYmx1clwiLCByYWRpdXMgKyAoc2lnbWEgPyBcInhcIitzaWdtYSA6IFwiXCIpKTtcbiAgfVxuXG4gIC8vIGh0dHA6Ly93d3cuZ3JhcGhpY3NtYWdpY2sub3JnL2NvbnZlcnQuaHRtbFxuICBwcm90by5jaGFyY29hbCA9IGZ1bmN0aW9uIGNoYXJjb2FsIChmYWN0b3IpIHtcbiAgICByZXR1cm4gdGhpcy5vdXQoXCItY2hhcmNvYWxcIiwgZmFjdG9yIHx8IDIpO1xuICB9XG5cbiAgLy8gaHR0cDovL3d3dy5ncmFwaGljc21hZ2ljay5vcmcvR3JhcGhpY3NNYWdpY2suaHRtbCNkZXRhaWxzLW1vZHVsYXRlXG4gIHByb3RvLm1vZHVsYXRlID0gZnVuY3Rpb24gbW9kdWxhdGUgKGIsIHMsIGgpIHtcbiAgICByZXR1cm4gdGhpcy5vdXQoXCItbW9kdWxhdGVcIiwgW2IscyxoXS5qb2luKFwiLFwiKSk7XG4gIH1cblxuICAvLyBodHRwOi8vd3d3LmdyYXBoaWNzbWFnaWNrLm9yZy9HcmFwaGljc01hZ2ljay5odG1sI2RldGFpbHMtYW50aWFsaWFzXG4gIC8vIG5vdGU6IGFudGlhbGlhc2luZyBpcyBlbmFibGVkIGJ5IGRlZmF1bHRcbiAgcHJvdG8uYW50aWFsaWFzID0gZnVuY3Rpb24gYW50aWFsaWFzIChkaXNhYmxlKSB7XG4gICAgcmV0dXJuIGZhbHNlID09PSBkaXNhYmxlXG4gICAgICA/IHRoaXMub3V0KFwiK2FudGlhbGlhc1wiKVxuICAgICAgOiB0aGlzO1xuICB9XG5cbiAgLy8gaHR0cDovL3d3dy5ncmFwaGljc21hZ2ljay5vcmcvR3JhcGhpY3NNYWdpY2suaHRtbCNkZXRhaWxzLWRlcHRoXG4gIHByb3RvLmJpdGRlcHRoID0gZnVuY3Rpb24gYml0ZGVwdGggKHZhbCkge1xuICAgIHJldHVybiB0aGlzLm91dChcIi1kZXB0aFwiLCB2YWwpO1xuICB9XG5cbiAgLy8gaHR0cDovL3d3dy5ncmFwaGljc21hZ2ljay5vcmcvR3JhcGhpY3NNYWdpY2suaHRtbCNkZXRhaWxzLWNvbG9yc1xuICBwcm90by5jb2xvcnMgPSBmdW5jdGlvbiBjb2xvcnMgKHZhbCkge1xuICAgIHJldHVybiB0aGlzLm91dChcIi1jb2xvcnNcIiwgdmFsIHx8IDEyOCk7XG4gIH1cblxuICAvLyBodHRwOi8vd3d3LmdyYXBoaWNzbWFnaWNrLm9yZy9HcmFwaGljc01hZ2ljay5odG1sI2RldGFpbHMtY29sb3JzcGFjZVxuICBwcm90by5jb2xvcnNwYWNlID0gZnVuY3Rpb24gY29sb3JzcGFjZSAodmFsKSB7XG4gICAgcmV0dXJuIHRoaXMub3V0KFwiLWNvbG9yc3BhY2VcIiwgdmFsKTtcbiAgfVxuXG4gIC8vIGh0dHA6Ly93d3cuZ3JhcGhpY3NtYWdpY2sub3JnL0dyYXBoaWNzTWFnaWNrLmh0bWwjZGV0YWlscy1jb21tZW50XG4gIHByb3RvLmNvbW1lbnQgPSBjb21tZW50KFwiLWNvbW1lbnRcIik7XG5cbiAgLy8gaHR0cDovL3d3dy5ncmFwaGljc21hZ2ljay5vcmcvR3JhcGhpY3NNYWdpY2suaHRtbCNkZXRhaWxzLWNvbnRyYXN0XG4gIHByb3RvLmNvbnRyYXN0ID0gZnVuY3Rpb24gY29udHJhc3QgKG11bHQpIHtcbiAgICB2YXIgYXJnID0gKHBhcnNlSW50KG11bHQsIDEwKSB8fCAwKSA+IDBcbiAgICAgID8gXCIrY29udHJhc3RcIlxuICAgICAgOiBcIi1jb250cmFzdFwiO1xuXG4gICAgbXVsdCA9IE1hdGguYWJzKG11bHQpIHx8IDE7XG5cbiAgICB3aGlsZSAobXVsdC0tKSB7XG4gICAgICB0aGlzLm91dChhcmcpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLy8gaHR0cDovL3d3dy5ncmFwaGljc21hZ2ljay5vcmcvR3JhcGhpY3NNYWdpY2suaHRtbCNkZXRhaWxzLWN5Y2xlXG4gIHByb3RvLmN5Y2xlID0gZnVuY3Rpb24gY3ljbGUgKGFtb3VudCkge1xuICAgIHJldHVybiB0aGlzLm91dChcIi1jeWNsZVwiLCBhbW91bnQgfHwgMik7XG4gIH1cblxuICAvLyBodHRwOi8vd3d3LmdyYXBoaWNzbWFnaWNrLm9yZy9HcmFwaGljc01hZ2ljay5odG1sXG4gIHByb3RvLmRlc3BlY2tsZSA9IGZ1bmN0aW9uIGRlc3BlY2tsZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMub3V0KFwiLWRlc3BlY2tsZVwiKTtcbiAgfVxuXG4gIC8vIGh0dHA6Ly93d3cuZ3JhcGhpY3NtYWdpY2sub3JnL0dyYXBoaWNzTWFnaWNrLmh0bWwjZGV0YWlscy1kaXRoZXJcbiAgLy8gbm90ZTogZWl0aGVyIGNvbG9ycygpIG9yIG1vbm9jaHJvbWUoKSBtdXN0IGJlIHVzZWQgZm9yIHRoaXNcbiAgLy8gdG8gdGFrZSBlZmZlY3QuXG4gIHByb3RvLmRpdGhlciA9IGZ1bmN0aW9uIGRpdGhlciAob24pIHtcbiAgICB2YXIgc2lnbiA9IGZhbHNlID09PSBvblxuICAgICAgPyBcIitcIlxuICAgICAgOiBcIi1cIjtcblxuICAgIHJldHVybiB0aGlzLm91dChzaWduICsgXCJkaXRoZXJcIik7XG4gIH1cblxuICAvLyBodHRwOi8vd3d3LmdyYXBoaWNzbWFnaWNrLm9yZy9HcmFwaGljc01hZ2ljay5odG1sXG4gIHByb3RvLm1vbm9jaHJvbWUgPSBmdW5jdGlvbiBtb25vY2hyb21lICgpIHtcbiAgICByZXR1cm4gdGhpcy5vdXQoXCItbW9ub2Nocm9tZVwiKTtcbiAgfVxuXG4gIC8vIGh0dHA6Ly93d3cuZ3JhcGhpY3NtYWdpY2sub3JnL0dyYXBoaWNzTWFnaWNrLmh0bWxcbiAgcHJvdG8uZWRnZSA9IGZ1bmN0aW9uIGVkZ2UgKHJhZGl1cykge1xuICAgIHJldHVybiB0aGlzLm91dChcIi1lZGdlXCIsIHJhZGl1cyB8fCAxKTtcbiAgfVxuXG4gIC8vIGh0dHA6Ly93d3cuZ3JhcGhpY3NtYWdpY2sub3JnL0dyYXBoaWNzTWFnaWNrLmh0bWxcbiAgcHJvdG8uZW1ib3NzID0gZnVuY3Rpb24gZW1ib3NzIChyYWRpdXMpIHtcbiAgICByZXR1cm4gdGhpcy5vdXQoXCItZW1ib3NzXCIsIHJhZGl1cyB8fCAxKTtcbiAgfVxuXG4gIC8vIGh0dHA6Ly93d3cuZ3JhcGhpY3NtYWdpY2sub3JnL0dyYXBoaWNzTWFnaWNrLmh0bWxcbiAgcHJvdG8uZW5oYW5jZSA9IGZ1bmN0aW9uIGVuaGFuY2UgKCkge1xuICAgIHJldHVybiB0aGlzLm91dChcIi1lbmhhbmNlXCIpO1xuICB9XG5cbiAgLy8gaHR0cDovL3d3dy5ncmFwaGljc21hZ2ljay5vcmcvR3JhcGhpY3NNYWdpY2suaHRtbFxuICBwcm90by5lcXVhbGl6ZSA9IGZ1bmN0aW9uIGVxdWFsaXplICgpIHtcbiAgICByZXR1cm4gdGhpcy5vdXQoXCItZXF1YWxpemVcIik7XG4gIH1cblxuICAvLyBodHRwOi8vd3d3LmdyYXBoaWNzbWFnaWNrLm9yZy9HcmFwaGljc01hZ2ljay5odG1sI2RldGFpbHMtZ2FtbWFcbiAgcHJvdG8uZ2FtbWEgPSBmdW5jdGlvbiBnYW1tYSAociwgZywgYikge1xuICAgIHJldHVybiB0aGlzLm91dChcIi1nYW1tYVwiLCBbcixnLGJdLmpvaW4oKSk7XG4gIH1cblxuICAvLyBodHRwOi8vd3d3LmdyYXBoaWNzbWFnaWNrLm9yZy9HcmFwaGljc01hZ2ljay5odG1sXG4gIHByb3RvLmltcGxvZGUgPSBmdW5jdGlvbiBpbXBsb2RlIChmYWN0b3IpIHtcbiAgICByZXR1cm4gdGhpcy5vdXQoXCItaW1wbG9kZVwiLCBmYWN0b3IgfHwgMSk7XG4gIH1cblxuICAvLyBodHRwOi8vd3d3LmdyYXBoaWNzbWFnaWNrLm9yZy9HcmFwaGljc01hZ2ljay5odG1sI2RldGFpbHMtY29tbWVudFxuICBwcm90by5sYWJlbCA9IGNvbW1lbnQoXCItbGFiZWxcIik7XG5cbiAgdmFyIGxpbWl0cyA9IFsgXCJkaXNrXCIsIFwiZmlsZVwiLCBcIm1hcFwiLCBcIm1lbW9yeVwiLCBcInBpeGVsc1wiLCBcInRocmVhZHNcIl07XG5cbiAgLy8gaHR0cDovL3d3dy5ncmFwaGljc21hZ2ljay5vcmcvR3JhcGhpY3NNYWdpY2suaHRtbCNkZXRhaWxzLWxpbWl0XG4gIHByb3RvLmxpbWl0ID0gZnVuY3Rpb24gbGltaXQgKHR5cGUsIHZhbCkge1xuICAgIHR5cGUgPSB0eXBlLnRvTG93ZXJDYXNlKCk7XG5cbiAgICBpZiAoIX5saW1pdHMuaW5kZXhPZih0eXBlKSkge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMub3V0KFwiLWxpbWl0XCIsIHR5cGUsIHZhbCk7XG4gIH1cblxuICAvLyBodHRwOi8vd3d3LmdyYXBoaWNzbWFnaWNrLm9yZy9HcmFwaGljc01hZ2ljay5odG1sXG4gIHByb3RvLm1lZGlhbiA9IGZ1bmN0aW9uIG1lZGlhbiAocmFkaXVzKSB7XG4gICAgcmV0dXJuIHRoaXMub3V0KFwiLW1lZGlhblwiLCByYWRpdXMgfHwgMSk7XG4gIH1cblxuICAvLyBodHRwOi8vd3d3LmdyYXBoaWNzbWFnaWNrLm9yZy9HcmFwaGljc01hZ2ljay5odG1sI2RldGFpbHMtbmVnYXRlXG4gIHByb3RvLm5lZ2F0aXZlID0gZnVuY3Rpb24gbmVnYXRpdmUgKGdyYXlzY2FsZSkge1xuICAgIHZhciBzaWduID0gZ3JheXNjYWxlID8gXCIrXCIgOiBcIi1cIjtcbiAgICByZXR1cm4gdGhpcy5vdXQoc2lnbiArIFwibmVnYXRlXCIpO1xuICB9XG5cbiAgdmFyIG5vaXNlcyA9IFtcbiAgICAgIFwidW5pZm9ybVwiXG4gICAgLCBcImdhdXNzaWFuXCJcbiAgICAsIFwibXVsdGlwbGljYXRpdmVcIlxuICAgICwgXCJpbXB1bHNlXCJcbiAgICAsIFwibGFwbGFjaWFuXCJcbiAgICAsIFwicG9pc3NvblwiXG4gIF07XG5cbiAgLy8gaHR0cDovL3d3dy5ncmFwaGljc21hZ2ljay5vcmcvR3JhcGhpY3NNYWdpY2suaHRtbCNkZXRhaWxzLW5vaXNlXG4gIHByb3RvLm5vaXNlID0gZnVuY3Rpb24gbm9pc2UgKHJhZGl1cykge1xuICAgIHJhZGl1cyA9IChTdHJpbmcocmFkaXVzKSkudG9Mb3dlckNhc2UoKTtcblxuICAgIHZhciBzaWduID0gfm5vaXNlcy5pbmRleE9mKHJhZGl1cylcbiAgICAgID8gXCIrXCJcbiAgICAgIDogXCItXCI7XG5cbiAgICByZXR1cm4gdGhpcy5vdXQoc2lnbiArIFwibm9pc2VcIiwgcmFkaXVzKTtcbiAgfVxuXG4gIC8vIGh0dHA6Ly93d3cuZ3JhcGhpY3NtYWdpY2sub3JnL0dyYXBoaWNzTWFnaWNrLmh0bWwjZGV0YWlscy1wYWludFxuICBwcm90by5wYWludCA9IGZ1bmN0aW9uIHBhaW50IChyYWRpdXMpIHtcbiAgICByZXR1cm4gdGhpcy5vdXQoXCItcGFpbnRcIiwgcmFkaXVzKTtcbiAgfVxuXG4gIC8vIGh0dHA6Ly93d3cuZ3JhcGhpY3NtYWdpY2sub3JnL0dyYXBoaWNzTWFnaWNrLmh0bWwjZGV0YWlscy1yYWlzZVxuICBwcm90by5yYWlzZSA9IGZ1bmN0aW9uIHJhaXNlICh3LCBoKSB7XG4gICAgcmV0dXJuIHRoaXMub3V0KFwiLXJhaXNlXCIsICh3fHwwKStcInhcIisoaHx8MCkpO1xuICB9XG5cbiAgLy8gaHR0cDovL3d3dy5ncmFwaGljc21hZ2ljay5vcmcvR3JhcGhpY3NNYWdpY2suaHRtbCNkZXRhaWxzLXJhaXNlXG4gIHByb3RvLmxvd2VyID0gZnVuY3Rpb24gbG93ZXIgKHcsIGgpIHtcbiAgICByZXR1cm4gdGhpcy5vdXQoXCIrcmFpc2VcIiwgKHd8fDApK1wieFwiKyhofHwwKSk7XG4gIH1cblxuICAvLyBodHRwOi8vd3d3LmdyYXBoaWNzbWFnaWNrLm9yZy9HcmFwaGljc01hZ2ljay5odG1sI2RldGFpbHMtcmVnaW9uXG4gIHByb3RvLnJlZ2lvbiA9IGZ1bmN0aW9uIHJlZ2lvbiAodywgaCwgeCwgeSkge1xuICAgIHcgPSB3IHx8IDA7XG4gICAgaCA9IGggfHwgMDtcbiAgICB4ID0geCB8fCAwO1xuICAgIHkgPSB5IHx8IDA7XG4gICAgcmV0dXJuIHRoaXMub3V0KFwiLXJlZ2lvblwiLCB3ICsgXCJ4XCIgKyBoICsgXCIrXCIgKyB4ICsgXCIrXCIgKyB5KTtcbiAgfVxuXG4gIC8vIGh0dHA6Ly93d3cuZ3JhcGhpY3NtYWdpY2sub3JnL0dyYXBoaWNzTWFnaWNrLmh0bWwjZGV0YWlscy1yb2xsXG4gIHByb3RvLnJvbGwgPSBmdW5jdGlvbiByb2xsICh4LCB5KSB7XG4gICAgeCA9ICgoeCA9IHBhcnNlSW50KHgsIDEwKSB8fCAwKSA+PSAwID8gXCIrXCIgOiBcIlwiKSArIHg7XG4gICAgeSA9ICgoeSA9IHBhcnNlSW50KHksIDEwKSB8fCAwKSA+PSAwID8gXCIrXCIgOiBcIlwiKSArIHk7XG4gICAgcmV0dXJuIHRoaXMub3V0KFwiLXJvbGxcIiwgeCt5KTtcbiAgfVxuXG4gIC8vIGh0dHA6Ly93d3cuZ3JhcGhpY3NtYWdpY2sub3JnL0dyYXBoaWNzTWFnaWNrLmh0bWwjZGV0YWlscy1zaGFycGVuXG4gIHByb3RvLnNoYXJwZW4gPSBmdW5jdGlvbiBzaGFycGVuIChyYWRpdXMsIHNpZ21hKSB7XG4gICAgc2lnbWEgPSBzaWdtYVxuICAgICAgPyBcInhcIiArIHNpZ21hXG4gICAgICA6IFwiXCI7XG5cbiAgICByZXR1cm4gdGhpcy5vdXQoXCItc2hhcnBlblwiLCByYWRpdXMgKyBzaWdtYSk7XG4gIH1cblxuICAvLyBodHRwOi8vd3d3LmdyYXBoaWNzbWFnaWNrLm9yZy9HcmFwaGljc01hZ2ljay5odG1sI2RldGFpbHMtc29sYXJpemVcbiAgcHJvdG8uc29sYXJpemUgPSBmdW5jdGlvbiBzb2xhcml6ZSAoZmFjdG9yKSB7XG4gICAgcmV0dXJuIHRoaXMub3V0KFwiLXNvbGFyaXplXCIsIChmYWN0b3IgfHwgMSkrXCIlXCIpO1xuICB9XG5cbiAgLy8gaHR0cDovL3d3dy5ncmFwaGljc21hZ2ljay5vcmcvR3JhcGhpY3NNYWdpY2suaHRtbCNkZXRhaWxzLXNwcmVhZFxuICBwcm90by5zcHJlYWQgPSBmdW5jdGlvbiBzcHJlYWQgKGFtb3VudCkge1xuICAgIHJldHVybiB0aGlzLm91dChcIi1zcHJlYWRcIiwgYW1vdW50IHx8IDUpO1xuICB9XG5cbiAgLy8gaHR0cDovL3d3dy5ncmFwaGljc21hZ2ljay5vcmcvR3JhcGhpY3NNYWdpY2suaHRtbCNkZXRhaWxzLXN3aXJsXG4gIHByb3RvLnN3aXJsID0gZnVuY3Rpb24gc3dpcmwgKGRlZ3JlZXMpIHtcbiAgICByZXR1cm4gdGhpcy5vdXQoXCItc3dpcmxcIiwgZGVncmVlcyB8fCAxODApO1xuICB9XG5cbiAgLy8gaHR0cDovL3d3dy5ncmFwaGljc21hZ2ljay5vcmcvR3JhcGhpY3NNYWdpY2suaHRtbCNkZXRhaWxzLXR5cGVcbiAgcHJvdG8udHlwZSA9IGZ1bmN0aW9uIHR5cGUgKHR5cGUpIHtcbiAgICByZXR1cm4gdGhpcy5pbihcIi10eXBlXCIsIHR5cGUpO1xuICB9XG5cbiAgLy8gaHR0cDovL3d3dy5ncmFwaGljc21hZ2ljay5vcmcvR3JhcGhpY3NNYWdpY2suaHRtbCNkZXRhaWxzLXRyaW1cbiAgcHJvdG8udHJpbSA9IGZ1bmN0aW9uIHRyaW0gKCkge1xuICAgIHJldHVybiB0aGlzLm91dChcIi10cmltXCIpO1xuICB9XG5cbiAgLy8gaHR0cDovL3d3dy5ncmFwaGljc21hZ2ljay5vcmcvR3JhcGhpY3NNYWdpY2suaHRtbCNkZXRhaWxzLWV4dGVudFxuICBwcm90by5leHRlbnQgPSBmdW5jdGlvbiBleHRlbnQgKHcsIGgsIG9wdGlvbnMpIHtcbiAgICBvcHRpb25zID0gb3B0aW9ucyB8fCBcIlwiO1xuICAgIHZhciBnZW9tZXRyeTtcbiAgICBpZiAodyAmJiBoKSB7XG4gICAgICBnZW9tZXRyeSA9IHcgKyBcInhcIiArIGggKyBvcHRpb25zXG4gICAgfSBlbHNlIGlmICh3ICYmICFoKSB7XG4gICAgICBnZW9tZXRyeSA9ICh0aGlzLl9vcHRpb25zLmltYWdlTWFnaWNrKSA/IHcgKyBvcHRpb25zIDogdyArICd4JyArIG9wdGlvbnM7XG4gICAgfSBlbHNlIGlmICghdyAmJiBoKSB7XG4gICAgICBnZW9tZXRyeSA9ICd4JyArIGggKyBvcHRpb25zXG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMub3V0KFwiLWV4dGVudFwiLCBnZW9tZXRyeSk7XG4gIH1cblxuICAvLyBodHRwOi8vd3d3LmdyYXBoaWNzbWFnaWNrLm9yZy9HcmFwaGljc01hZ2ljay5odG1sI2RldGFpbHMtZ3Jhdml0eVxuICAvLyBCZSBzdXJlIHRvIHVzZSBncmF2aXR5IEJFRk9SRSBleHRlbnRcbiAgcHJvdG8uZ3Jhdml0eSA9IGZ1bmN0aW9uIGdyYXZpdHkgKHR5cGUpIHtcbiAgICBpZiAoIXR5cGUgfHwgIX5ncmF2aXR5LnR5cGVzLmluZGV4T2YodHlwZSkpIHtcbiAgICAgIHR5cGUgPSBcIk5vcnRoV2VzdFwiOyAvLyBEb2N1bWVudGVkIGRlZmF1bHQuXG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMub3V0KFwiLWdyYXZpdHlcIiwgdHlwZSk7XG4gIH1cblxuICBwcm90by5ncmF2aXR5LnR5cGVzID0gW1xuICAgICAgXCJOb3J0aFdlc3RcIlxuICAgICwgXCJOb3J0aFwiXG4gICAgLCBcIk5vcnRoRWFzdFwiXG4gICAgLCBcIldlc3RcIlxuICAgICwgXCJDZW50ZXJcIlxuICAgICwgXCJFYXN0XCJcbiAgICAsIFwiU291dGhXZXN0XCJcbiAgICAsIFwiU291dGhcIlxuICAgICwgXCJTb3V0aEVhc3RcIlxuICBdO1xuXG4gIC8vIGh0dHA6Ly93d3cuZ3JhcGhpY3NtYWdpY2sub3JnL0dyYXBoaWNzTWFnaWNrLmh0bWwjZGV0YWlscy1mbGF0dGVuXG4gIHByb3RvLmZsYXR0ZW4gPSBmdW5jdGlvbiBmbGF0dGVuICgpIHtcbiAgICByZXR1cm4gdGhpcy5vdXQoXCItZmxhdHRlblwiKTtcbiAgfVxuXG4gIC8vIGh0dHA6Ly93d3cuZ3JhcGhpY3NtYWdpY2sub3JnL0dyYXBoaWNzTWFnaWNrLmh0bWwjZGV0YWlscy1iYWNrZ3JvdW5kXG4gIHByb3RvLmJhY2tncm91bmQgPSBmdW5jdGlvbiBiYWNrZ3JvdW5kIChjb2xvcikge1xuICAgIHJldHVybiB0aGlzLmluKFwiLWJhY2tncm91bmRcIiwgY29sb3IpO1xuICB9XG59O1xuXG4vKipcbiAqIEdlbmVyYXRlcyBhIGhhbmRsZXIgZm9yIGNvbW1lbnRzL2xhYmVscy5cbiAqL1xuXG5mdW5jdGlvbiBjb21tZW50IChhcmcpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChmb3JtYXQpIHtcbiAgICBmb3JtYXQgPSBTdHJpbmcoZm9ybWF0KTtcblxuICAgIGZvcm1hdCA9IFwiQFwiID09IGZvcm1hdC5jaGFyQXQoMClcbiAgICAgID8gZm9ybWF0LnN1YnN0cmluZygxKVxuICAgICAgOiBmb3JtYXQ7XG5cbiAgICByZXR1cm4gdGhpcy5vdXQoYXJnLCAnXCInICsgZm9ybWF0ICsgJ1wiJyk7XG4gIH1cbn1cbiIsIlxuLyoqXG4gKiBNb2R1bGUgZGVwZW5kZW5jaWVzLlxuICovXG5cbnZhciBzcGF3biA9IHJlcXVpcmUoJ2NoaWxkX3Byb2Nlc3MnKS5zcGF3bjtcbnZhciB1dGlscyA9IHJlcXVpcmUoJy4vdXRpbHMnKTtcbnZhciBkZWJ1ZyA9IHJlcXVpcmUoJ2RlYnVnJykoJ2dtJyk7XG52YXIgc2VyaWVzID0gcmVxdWlyZSgnYXJyYXktc2VyaWVzJyk7XG52YXIgUGFzc1Rocm91Z2ggPSByZXF1aXJlKCdzdHJlYW0nKS5QYXNzVGhyb3VnaDtcblxuLyoqXG4gKiBFcnJvciBtZXNzYWdpbmcuXG4gKi9cblxudmFyIG5vQnVmZmVyQ29uY2F0ID0gJ2dtIHYxLjkuMCsgcmVxdWlyZWQgbm9kZSB2MC44Ky4gUGxlYXNlIHVwZGF0ZSB5b3VyIHZlcnNpb24gb2Ygbm9kZSwgZG93bmdyYWRlIGdtIDwgMS45LCBvciBkbyBub3QgdXNlIGBidWZmZXJTdHJlYW1gLic7XG5cbi8qKlxuICogRXh0ZW5kIHByb3RvXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAocHJvdG8pIHtcblxuICBmdW5jdGlvbiBhcmdzIChwcm9wKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIGFyZ3MgKCkge1xuICAgICAgdmFyIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgICB2YXIgYSA9IFtdO1xuICAgICAgdmFyIGkgPSAwO1xuXG4gICAgICBmb3IgKDsgaSA8IGxlbjsgKytpKSB7XG4gICAgICAgIGEucHVzaChhcmd1bWVudHNbaV0pO1xuICAgICAgfVxuXG4gICAgICB0aGlzW3Byb3BdID0gdGhpc1twcm9wXS5jb25jYXQoYSk7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gIH1cbiAgXG4gIGZ1bmN0aW9uIHN0cmVhbVRvVW5lbXB0eUJ1ZmZlcihzdHJlYW0sIGNhbGxiYWNrKSB7XG4gICAgdmFyIGRvbmUgPSBmYWxzZVxuICAgIHZhciBidWZmZXJzID0gW11cblxuICAgIHN0cmVhbS5vbignZGF0YScsIGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICBidWZmZXJzLnB1c2goZGF0YSlcbiAgICB9KVxuXG4gICAgc3RyZWFtLm9uKCdlbmQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgcmVzdWx0LCBlcnI7XG4gICAgICBpZiAoZG9uZSlcbiAgICAgICAgcmV0dXJuXG5cbiAgICAgIGRvbmUgPSB0cnVlXG4gICAgICByZXN1bHQgPSBCdWZmZXIuY29uY2F0KGJ1ZmZlcnMpXG4gICAgICBidWZmZXJzID0gbnVsbFxuICAgICAgaWYgKHJlc3VsdC5sZW5ndGg9PTApXG4gICAgICB7XG4gICAgICAgICAgZXJyID0gbmV3IEVycm9yKFwiU3RyZWFtIHlpZWxkcyBlbXB0eSBidWZmZXJcIik7IFxuICAgICAgICAgIGNhbGxiYWNrKGVyciwgbnVsbCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNhbGxiYWNrKG51bGwsIHJlc3VsdCk7XG4gICAgICB9XG4gICAgfSlcblxuICAgIHN0cmVhbS5vbignZXJyb3InLCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICBkb25lID0gdHJ1ZVxuICAgICAgYnVmZmVycyA9IG51bGxcbiAgICAgIGNhbGxiYWNrKGVycilcbiAgICB9KVxuICB9XG5cbiAgcHJvdG8uaW4gPSBhcmdzKCdfaW4nKTtcbiAgcHJvdG8ub3V0ID0gYXJncygnX291dCcpO1xuXG4gIHByb3RvLl9wcmVwcm9jZXNzb3IgPSBbXTtcbiAgcHJvdG8ucHJlcHJvY2Vzc29yID0gYXJncygnX3ByZXByb2Nlc3NvcicpO1xuXG4gIC8qKlxuICAgKiBFeGVjdXRlIHRoZSBjb21tYW5kIGFuZCB3cml0ZSB0aGUgaW1hZ2UgdG8gdGhlIHNwZWNpZmllZCBmaWxlIG5hbWUuXG4gICAqXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBuYW1lXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGNhbGxiYWNrXG4gICAqIEByZXR1cm4ge09iamVjdH0gZ21cbiAgICovXG5cbiAgcHJvdG8ud3JpdGUgPSBmdW5jdGlvbiB3cml0ZSAobmFtZSwgY2FsbGJhY2spIHtcbiAgICBpZiAoIWNhbGxiYWNrKSBjYWxsYmFjayA9IG5hbWUsIG5hbWUgPSBudWxsO1xuXG4gICAgaWYgKFwiZnVuY3Rpb25cIiAhPT0gdHlwZW9mIGNhbGxiYWNrKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiZ20oKS53cml0ZSgpIGV4cGVjdHMgYSBjYWxsYmFjayBmdW5jdGlvblwiKVxuICAgIH1cblxuICAgIGlmICghbmFtZSkge1xuICAgICAgcmV0dXJuIGNhbGxiYWNrKFR5cGVFcnJvcihcImdtKCkud3JpdGUoKSBleHBlY3RzIGEgZmlsZW5hbWUgd2hlbiB3cml0aW5nIG5ldyBmaWxlc1wiKSk7XG4gICAgfVxuXG4gICAgdGhpcy5vdXRuYW1lID0gbmFtZTtcblxuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB0aGlzLl9wcmVwcm9jZXNzKGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgIGlmIChlcnIpIHJldHVybiBjYWxsYmFjayhlcnIpO1xuICAgICAgc2VsZi5fc3Bhd24oc2VsZi5hcmdzKCksIHRydWUsIGNhbGxiYWNrKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeGVjdXRlIHRoZSBjb21tYW5kIGFuZCByZXR1cm4gc3RkaW4gYW5kIHN0ZGVyclxuICAgKiBSZWFkYWJsZVN0cmVhbXMgcHJvdmlkaW5nIHRoZSBpbWFnZSBkYXRhLlxuICAgKiBJZiBubyBjYWxsYmFjayBpcyBwYXNzZWQsIGEgXCJ0aHJvdWdoXCIgc3RyZWFtIHdpbGwgYmUgcmV0dXJuZWQsXG4gICAqIGFuZCBzdGRvdXQgd2lsbCBiZSBwaXBlZCB0aHJvdWdoLCBvdGhlcndpc2UgdGhlIGVycm9yIHdpbGwgYmUgcGFzc2VkLlxuICAgKlxuICAgKiBAcGFyYW0ge1N0cmluZ30gZm9ybWF0IChvcHRpb25hbClcbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gY2FsbGJhY2sgKG9wdGlvbmFsKVxuICAgKiBAcmV0dXJuIHtTdHJlYW19XG4gICAqL1xuXG4gIHByb3RvLnN0cmVhbSA9IGZ1bmN0aW9uIHN0cmVhbSAoZm9ybWF0LCBjYWxsYmFjaykge1xuICAgIGlmICghY2FsbGJhY2sgJiYgdHlwZW9mIGZvcm1hdCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgY2FsbGJhY2sgPSBmb3JtYXQ7XG4gICAgICBmb3JtYXQgPSBudWxsO1xuICAgIH1cblxuICAgIHZhciB0aHJvdWdoU3RyZWFtO1xuXG4gICAgaWYgKFwiZnVuY3Rpb25cIiAhPT0gdHlwZW9mIGNhbGxiYWNrKSB7XG4gICAgICB0aHJvdWdoU3RyZWFtID0gbmV3IFBhc3NUaHJvdWdoKCk7XG4gICAgICBjYWxsYmFjayA9IGZ1bmN0aW9uIChlcnIsIHN0ZG91dCwgc3RkZXJyKSB7XG4gICAgICAgIGlmIChlcnIpIHRocm91Z2hTdHJlYW0uZW1pdCgnZXJyb3InLCBlcnIpO1xuICAgICAgICBlbHNlIHN0ZG91dC5waXBlKHRocm91Z2hTdHJlYW0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChmb3JtYXQpIHtcbiAgICAgIGZvcm1hdCA9IGZvcm1hdC5zcGxpdCgnLicpLnBvcCgpO1xuICAgICAgdGhpcy5vdXRuYW1lID0gZm9ybWF0ICsgXCI6LVwiO1xuICAgIH1cblxuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB0aGlzLl9wcmVwcm9jZXNzKGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgIGlmIChlcnIpIHJldHVybiBjYWxsYmFjayhlcnIpO1xuICAgICAgcmV0dXJuIHNlbGYuX3NwYXduKHNlbGYuYXJncygpLCBmYWxzZSwgY2FsbGJhY2spO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRocm91Z2hTdHJlYW0gfHwgdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZW5pZW5jZSBmdW5jdGlvbiBmb3IgYHByb3RvLnN0cmVhbWAuXG4gICAqIFNpbXBseSByZXR1cm5zIHRoZSBidWZmZXIgaW5zdGVhZCBvZiB0aGUgc3RyZWFtLlxuICAgKlxuICAgKiBAcGFyYW0ge1N0cmluZ30gZm9ybWF0IChvcHRpb25hbClcbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gY2FsbGJhY2tcbiAgICogQHJldHVybiB7bnVsbH1cbiAgICovXG5cbiAgcHJvdG8udG9CdWZmZXIgPSBmdW5jdGlvbiB0b0J1ZmZlciAoZm9ybWF0LCBjYWxsYmFjaykge1xuICAgIGlmICghY2FsbGJhY2spIGNhbGxiYWNrID0gZm9ybWF0LCBmb3JtYXQgPSBudWxsO1xuXG4gICAgaWYgKFwiZnVuY3Rpb25cIiAhPT0gdHlwZW9mIGNhbGxiYWNrKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2dtKCkudG9CdWZmZXIoKSBleHBlY3RzIGEgY2FsbGJhY2suJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyZWFtKGZvcm1hdCwgZnVuY3Rpb24gKGVyciwgc3Rkb3V0KSB7XG4gICAgICBpZiAoZXJyKSByZXR1cm4gY2FsbGJhY2soZXJyKTtcblxuICAgICAgc3RyZWFtVG9VbmVtcHR5QnVmZmVyKHN0ZG91dCwgY2FsbGJhY2spO1xuICAgIH0pXG4gIH1cblxuICAvKipcbiAgICAqIFJ1biBhbnkgcHJlUHJvY2Vzc29yIGZ1bmN0aW9ucyBpbiBzZXJpZXMuIFVzZWQgYnkgYXV0b09yaWVudC5cbiAgICAqXG4gICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBjYWxsYmFja1xuICAgICogQHJldHVybiB7T2JqZWN0fSBnbVxuICAgICovXG5cbiAgcHJvdG8uX3ByZXByb2Nlc3MgPSBmdW5jdGlvbiBfcHJlcHJvY2VzcyAoY2FsbGJhY2spIHtcbiAgICBzZXJpZXModGhpcy5fcHJlcHJvY2Vzc29yLCB0aGlzLCBjYWxsYmFjayk7XG4gIH1cblxuICAvKipcbiAgICAqIEV4ZWN1dGUgdGhlIGNvbW1hbmQsIGJ1ZmZlciBpbnB1dCBhbmQgb3V0cHV0LCByZXR1cm4gc3Rkb3V0IGFuZCBzdGRlcnIgYnVmZmVycy5cbiAgICAqXG4gICAgKiBAcGFyYW0ge1N0cmluZ30gYmluXG4gICAgKiBAcGFyYW0ge0FycmF5fSBhcmdzXG4gICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBjYWxsYmFja1xuICAgICogQHJldHVybiB7T2JqZWN0fSBnbVxuICAgICovXG5cbiAgcHJvdG8uX2V4ZWMgPSBmdW5jdGlvbiBfZXhlYyAoYXJncywgY2FsbGJhY2spIHtcbiAgICByZXR1cm4gdGhpcy5fc3Bhd24oYXJncywgdHJ1ZSwgY2FsbGJhY2spO1xuICB9XG5cbiAgLyoqXG4gICAgKiBFeGVjdXRlIHRoZSBjb21tYW5kIHdpdGggc3RkaW4sIHJldHVybmluZyBzdGRvdXQgYW5kIHN0ZGVyciBzdHJlYW1zIG9yIGJ1ZmZlcnMuXG4gICAgKiBAcGFyYW0ge1N0cmluZ30gYmluXG4gICAgKiBAcGFyYW0ge0FycmF5fSBhcmdzXG4gICAgKiBAcGFyYW0ge1JlYWRhYmxlU3RyZWFtfSBzdHJlYW1cbiAgICAqIEBwYXJhbSB7Qm9vbGVhbn0gc2hvdWxkQnVmZmVyXG4gICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBjYWxsYmFjaywgc2lnbmF0dXJlIChlcnIsIHN0ZG91dCwgc3RkZXJyKSAtPiAqIFxuICAgICogQHJldHVybiB7T2JqZWN0fSBnbVxuICAgICogQFRPRE8gcmVmYWN0b3IgdGhpcyBtZXNzXG4gICAgKi9cblxuICBwcm90by5fc3Bhd24gPSBmdW5jdGlvbiBfc3Bhd24gKGFyZ3MsIGJ1ZmZlck91dHB1dCwgY2FsbGJhY2spIHtcbiAgICB2YXIgYXBwUGF0aCA9IHRoaXMuX29wdGlvbnMuYXBwUGF0aCB8fCAnJztcbiAgICB2YXIgYmluID0gdGhpcy5fb3B0aW9ucy5pbWFnZU1hZ2lja1xuICAgICAgPyBhcHBQYXRoICsgYXJncy5zaGlmdCgpXG4gICAgICA6IGFwcFBhdGggKyAnZ20nXG5cbiAgICB2YXIgY21kID0gYmluICsgJyAnICsgYXJncy5tYXAodXRpbHMuZXNjYXBlKS5qb2luKCcgJylcbiAgICAgICwgc2VsZiA9IHRoaXNcbiAgICAgICwgcHJvYywgZXJyXG4gICAgICAsIHRpbWVvdXQgPSBwYXJzZUludCh0aGlzLl9vcHRpb25zLnRpbWVvdXQpXG4gICAgICAsIHRpbWVvdXRJZDtcblxuICAgIGRlYnVnKGNtZCk7XG4gICAgLy9pbWFnZU1hZ2ljayBkb2VzIG5vdCBzdXBwb3J0IG1pbmlmeSAoaHR0cHM6Ly9naXRodWIuY29tL2FoZWNrbWFubi9nbS9pc3N1ZXMvMzg1KVxuICAgIGlmKGFyZ3MuaW5kZXhPZihcIi1taW5pZnlcIikgPiAtMSAmJiB0aGlzLl9vcHRpb25zLmltYWdlTWFnaWNrKXtcbiAgICAgIGVyciA9IG5ldyBFcnJvcihcImltYWdlTWFnaWNrIGRvZXMgbm90IHN1cHBvcnQgbWluaWZ5LCB1c2UgLXNjYWxlIG9yIC1zYW1wbGUuIEFsdGVybmF0aXZlbHksIHVzZSBncmFwaGljc01hZ2lja1wiKTtcbiAgICAgIHJldHVybiBjYihlcnIpO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgcHJvYyA9IHNwYXduKGJpbiwgYXJncyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIGNiKGUpO1xuICAgIH1cbiAgICBwcm9jLnN0ZGluLm9uY2UoJ2Vycm9yJywgY2IpO1xuXG4gICAgaWYgKHRpbWVvdXQpIHtcbiAgICAgIHRpbWVvdXRJZCA9IHNldFRpbWVvdXQoZnVuY3Rpb24oKXtcbiAgICAgICAgZXJyID0gbmV3IEVycm9yKCdnbSgpIHJlc3VsdGVkIGluIGEgdGltZW91dC4nKTtcbiAgICAgICAgY2IoZXJyKTtcbiAgICAgICAgaWYgKHByb2MuY29ubmVjdGVkKSB7XG4gICAgICAgICAgcHJvYy5zdGRpbi5wYXVzZSgpO1xuICAgICAgICAgIHByb2Mua2lsbCgpO1xuICAgICAgICB9XG4gICAgICB9LCB0aW1lb3V0KTtcbiAgICB9XG5cbiAgICBpZiAoc2VsZi5zb3VyY2VCdWZmZXIpIHtcbiAgICAgIHByb2Muc3RkaW4ud3JpdGUodGhpcy5zb3VyY2VCdWZmZXIpO1xuICAgICAgcHJvYy5zdGRpbi5lbmQoKTtcbiAgICB9IGVsc2UgaWYgKHNlbGYuc291cmNlU3RyZWFtKSB7XG5cbiAgICAgIGlmICghc2VsZi5zb3VyY2VTdHJlYW0ucmVhZGFibGUpIHtcbiAgICAgICAgZXJyID0gbmV3IEVycm9yKFwiZ20oKS5zdHJlYW0oKSBvciBnbSgpLndyaXRlKCkgd2l0aCBhIG5vbi1yZWFkYWJsZSBzdHJlYW0uXCIpO1xuICAgICAgICByZXR1cm4gY2IoZXJyKTtcbiAgICAgIH1cblxuICAgICAgc2VsZi5zb3VyY2VTdHJlYW0ucGlwZShwcm9jLnN0ZGluKTtcblxuICAgICAgLy8gYnVmZmVyU3RyZWFtXG4gICAgICAvLyBXZSBjb252ZXJ0IHRoZSBpbnB1dCBzb3VyY2UgZnJvbSBhIHN0cmVhbSB0byBhIGJ1ZmZlci5cbiAgICAgIGlmIChzZWxmLmJ1ZmZlclN0cmVhbSAmJiAhdGhpcy5fYnVmZmVyaW5nKSB7XG4gICAgICAgIGlmICghQnVmZmVyLmNvbmNhdCkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihub0J1ZmZlckNvbmNhdCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBJbmNhc2UgdGhlcmUgYXJlIG11bHRpcGxlIHByb2Nlc3NlcyBpbiBwYXJhbGxlbCxcbiAgICAgICAgLy8gd2Ugb25seSBuZWVkIG9uZVxuICAgICAgICBzZWxmLl9idWZmZXJpbmcgPSB0cnVlO1xuXG4gICAgICAgIHN0cmVhbVRvVW5lbXB0eUJ1ZmZlcihzZWxmLnNvdXJjZVN0cmVhbSwgZnVuY3Rpb24gKGVyciwgYnVmZmVyKSB7XG4gICAgICAgICAgc2VsZi5zb3VyY2VCdWZmZXIgPSBidWZmZXI7XG4gICAgICAgICAgc2VsZi5zb3VyY2VTdHJlYW0gPSBudWxsOyAvLyBUaGUgc3RyZWFtIGlzIG5vdyBkZWFkXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gZm9yIF9leGVjIG9wZXJhdGlvbnMgKGlkZW50aWZ5KCkgbW9zdGx5KSwgd2UgYWxzb1xuICAgIC8vIG5lZWQgdG8gYnVmZmVyIHRoZSBvdXRwdXQgc3RyZWFtIGJlZm9yZSByZXR1cm5pbmdcbiAgICBpZiAoYnVmZmVyT3V0cHV0KSB7XG4gICAgICB2YXIgc3Rkb3V0ID0gJydcbiAgICAgICAgLCBzdGRlcnIgPSAnJ1xuICAgICAgICAsIG9uT3V0XG4gICAgICAgICwgb25FcnJcbiAgICAgICAgLCBvbkV4aXRcblxuICAgICAgcHJvYy5zdGRvdXQub24oJ2RhdGEnLCBvbk91dCA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICAgIHN0ZG91dCArPSBkYXRhO1xuICAgICAgfSk7XG5cbiAgICAgIHByb2Muc3RkZXJyLm9uKCdkYXRhJywgb25FcnIgPSBmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgICBzdGRlcnIgKz0gZGF0YTtcbiAgICAgIH0pO1xuXG4gICAgICBwcm9jLm9uKCdjbG9zZScsIG9uRXhpdCA9IGZ1bmN0aW9uIChjb2RlLCBzaWduYWwpIHtcbiAgICAgICAgaWYgKGNvZGUgIT09IDAgfHwgc2lnbmFsICE9PSBudWxsKSB7XG4gICAgICAgICAgZXJyID0gbmV3IEVycm9yKCdDb21tYW5kIGZhaWxlZDogJyArIHN0ZGVycik7XG4gICAgICAgICAgZXJyLmNvZGUgPSBjb2RlO1xuICAgICAgICAgIGVyci5zaWduYWwgPSBzaWduYWw7XG4gICAgICAgIH07XG4gICAgICAgIGNiKGVyciwgc3Rkb3V0LCBzdGRlcnIsIGNtZCk7XG4gICAgICAgIHN0ZG91dCA9IHN0ZGVyciA9IG9uT3V0ID0gb25FcnIgPSBvbkV4aXQgPSBudWxsO1xuICAgICAgfSk7XG5cbiAgICAgIHByb2Mub24oJ2Vycm9yJywgZnVuY3Rpb24oZXJyKXtcbiAgICAgICAgaWYgKGVyci5jb2RlID09PSAnRU5PRU5UJykge1xuICAgICAgICAgIGNiKG5ldyBFcnJvcignQ291bGQgbm90IGV4ZWN1dGUgR3JhcGhpY3NNYWdpY2svSW1hZ2VNYWdpY2s6ICcrY21kK1wiIHRoaXMgbW9zdCBsaWtlbHkgbWVhbnMgdGhlIGdtL2NvbnZlcnQgYmluYXJpZXMgY2FuJ3QgYmUgZm91bmRcIikpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNiKGVycik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjYihudWxsLCBwcm9jLnN0ZG91dCwgcHJvYy5zdGRlcnIsIGNtZCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNlbGY7XG5cbiAgICBmdW5jdGlvbiBjYiAoZXJyLCBzdGRvdXQsIHN0ZGVyciwgY21kKSB7XG4gICAgICBpZiAoY2IuY2FsbGVkKSByZXR1cm47XG4gICAgICBpZiAodGltZW91dElkKSBjbGVhclRpbWVvdXQodGltZW91dElkKTtcbiAgICAgIGNiLmNhbGxlZCA9IDE7XG5cdFx0XHRpZiAoYXJnc1swXSAhPT0gJ2lkZW50aWZ5JyAmJiBiaW4gIT09ICdpZGVudGlmeScpIHtcblx0XHRcdFx0c2VsZi5faW4gPSBbXTtcblx0XHRcdFx0c2VsZi5fb3V0ID0gW107XG5cdFx0XHR9XG4gICAgICBjYWxsYmFjay5jYWxsKHNlbGYsIGVyciwgc3Rkb3V0LCBzdGRlcnIsIGNtZCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYXJndW1lbnRzIHRvIGJlIHVzZWQgaW4gdGhlIGNvbW1hbmQuXG4gICAqXG4gICAqIEByZXR1cm4ge0FycmF5fVxuICAgKi9cblxuICBwcm90by5hcmdzID0gZnVuY3Rpb24gYXJncyAoKSB7XG4gICAgdmFyIG91dG5hbWUgPSB0aGlzLm91dG5hbWUgfHwgXCItXCI7XG4gIFx0aWYgKHRoaXMuX291dHB1dEZvcm1hdCkgb3V0bmFtZSA9IHRoaXMuX291dHB1dEZvcm1hdCArICc6JyArIG91dG5hbWU7XG5cbiAgICByZXR1cm4gW10uY29uY2F0KFxuICAgICAgICB0aGlzLl9zdWJDb21tYW5kXG4gICAgICAsIHRoaXMuX2luXG4gICAgICAsIHRoaXMuc3JjKClcbiAgICAgICwgdGhpcy5fb3V0XG4gICAgICAsIG91dG5hbWVcbiAgICApLmZpbHRlcihCb29sZWFuKTsgLy8gcmVtb3ZlIGZhbHNleVxuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYW4gaW1nIHNvdXJjZSBmb3JtYXR0ZXIuXG4gICAqXG4gICAqIGBmb3JtYXR0ZXJzYCBhcmUgcGFzc2VkIGFuIGFycmF5IG9mIGltYWdlcyB3aGljaCB3aWxsIGJlXG4gICAqIHVzZWQgYXMgJ2lucHV0JyBpbWFnZXMgZm9yIHRoZSBjb21tYW5kLiBVc2VmdWwgZm9yIG1ldGhvZHNcbiAgICogbGlrZSBgLmFwcGVuZCgpYCB3aGVyZSBtdWx0aXBsZSBzb3VyY2UgaW1hZ2VzIG1heSBiZSB1c2VkLlxuICAgKlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmb3JtYXR0ZXJcbiAgICogQHJldHVybiB7Z219IHRoaXNcbiAgICovXG5cbiAgcHJvdG8uYWRkU3JjRm9ybWF0dGVyID0gZnVuY3Rpb24gYWRkU3JjRm9ybWF0dGVyIChmb3JtYXR0ZXIpIHtcbiAgICBpZiAoJ2Z1bmN0aW9uJyAhPSB0eXBlb2YgZm9ybWF0dGVyKVxuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignc291cmNlRm9ybWF0dGVyIG11c3QgYmUgYSBmdW5jdGlvbicpO1xuICAgIHRoaXMuX3NvdXJjZUZvcm1hdHRlcnMgfHwgKHRoaXMuX3NvdXJjZUZvcm1hdHRlcnMgPSBbXSk7XG4gICAgdGhpcy5fc291cmNlRm9ybWF0dGVycy5wdXNoKGZvcm1hdHRlcik7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogQXBwbGllcyBhbGwgX3NvdXJjZUZvcm1hdHRlcnNcbiAgICpcbiAgICogQHJldHVybiB7QXJyYXl9XG4gICAqL1xuXG4gIHByb3RvLnNyYyA9IGZ1bmN0aW9uIHNyYyAoKSB7XG4gICAgdmFyIGFyciA9IFtdO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fc291cmNlRm9ybWF0dGVycy5sZW5ndGg7ICsraSkge1xuICAgICAgdGhpcy5fc291cmNlRm9ybWF0dGVyc1tpXS5jYWxsKHRoaXMsIGFycik7XG4gICAgfVxuICAgIHJldHVybiBhcnI7XG4gIH1cblxuICAvKipcbiAgICogSW1hZ2UgdHlwZXMuXG4gICAqL1xuXG4gIHZhciB0eXBlcyA9IHtcbiAgICAgICdqcGcnOiAvXFwuanBlP2ckL2lcbiAgICAsICdwbmcnIDogL1xcLnBuZyQvaVxuICAgICwgJ2dpZicgOiAvXFwuZ2lmJC9pXG4gICAgLCAndGlmZic6IC9cXC50aWY/ZiQvaVxuICAgICwgJ2JtcCcgOiAvKD86XFwuYm1wfFxcLmRpYikkL2lcbiAgICAsICd3ZWJwJzogL1xcLndlYnAkL2lcbiAgfTtcblxuICB0eXBlcy5qcGVnID0gdHlwZXMuanBnO1xuICB0eXBlcy50aWYgPSB0eXBlcy50aWZmO1xuICB0eXBlcy5kaWIgPSB0eXBlcy5ibXA7XG5cbiAgLyoqXG4gICAqIERldGVybWluZSB0aGUgdHlwZSBvZiBzb3VyY2UgaW1hZ2UuXG4gICAqXG4gICAqIEBwYXJhbSB7U3RyaW5nfSB0eXBlXG4gICAqIEByZXR1cm4ge0Jvb2xlYW59XG4gICAqIEBleGFtcGxlXG4gICAqICAgaWYgKHRoaXMuaW5wdXRJcygncG5nJykpIC4uLlxuICAgKi9cblxuICBwcm90by5pbnB1dElzID0gZnVuY3Rpb24gaW5wdXRJcyAodHlwZSkge1xuICAgIGlmICghdHlwZSkgcmV0dXJuIGZhbHNlO1xuXG4gICAgdmFyIHJneCA9IHR5cGVzW3R5cGVdO1xuICAgIGlmICghcmd4KSB7XG4gICAgICBpZiAoJy4nICE9PSB0eXBlWzBdKSB0eXBlID0gJy4nICsgdHlwZTtcbiAgICAgIHJneCA9IG5ldyBSZWdFeHAoJ1xcXFwnICsgdHlwZSArICckJywgJ2knKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmd4LnRlc3QodGhpcy5zb3VyY2UpO1xuICB9XG59XG4iLCIvLyBjb21wYXJlXG5cbnZhciBzcGF3biA9IHJlcXVpcmUoJ2NoaWxkX3Byb2Nlc3MnKS5zcGF3bjtcblxuLyoqXG4gKiBDb21wYXJlIHR3byBpbWFnZXMgdXNlcyBncmFwaGljc21hZ2lja3MgYGNvbXBhcmVgIGNvbW1hbmQuXG4gKlxuICogZ20uY29tcGFyZShpbWcxLCBpbWcyLCAwLjQsIGZ1bmN0aW9uIChlcnIsIGVxdWFsLCBlcXVhbGl0eSkge1xuICogICBpZiAoZXJyKSByZXR1cm4gaGFuZGxlKGVycik7XG4gKiAgIGNvbnNvbGUubG9nKCdUaGUgaW1hZ2VzIGFyZSBlcXVhbDogJXMnLCBlcXVhbCk7XG4gKiAgIGNvbnNvbGUubG9nKCdUaGVyZSBlcXVhbGl0eSB3YXMgJWQnLCBlcXVhbGl0eSk7XG4gKiB9KTtcbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gb3JpZyBQYXRoIHRvIGFuIGltYWdlLlxuICogQHBhcmFtIHtTdHJpbmd9IGNvbXBhcmVUbyBQYXRoIHRvIGFub3RoZXIgaW1hZ2UgdG8gY29tcGFyZSB0byBgb3JpZ2AuXG4gKiBAcGFyYW0ge051bWJlcnxPYmplY3R9IFtvcHRpb25zXSBPcHRpb25zIG9iamVjdCBvciB0aGUgYW1vdW50IG9mIGRpZmZlcmVuY2UgdG8gdG9sZXJhdGUgYmVmb3JlIGZhaWxpbmcgLSBkZWZhdWx0cyB0byAwLjRcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGNiKGVyciwgQm9vbGVhbiwgZXF1YWxpdHksIHJhd091dHB1dClcbiAqL1xuXG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMgPSBmdW5jdGlvbiAocHJvdG8pIHtcbiAgZnVuY3Rpb24gY29tcGFyZShvcmlnLCBjb21wYXJlVG8sIG9wdGlvbnMsIGNiKSB7XG5cbiAgICB2YXIgaXNJbWFnZU1hZ2ljayA9IHRoaXMuX29wdGlvbnMgJiYgdGhpcy5fb3B0aW9ucy5pbWFnZU1hZ2ljaztcbiAgICB2YXIgYXBwUGF0aCA9IHRoaXMuX29wdGlvbnMgJiYgdGhpcy5fb3B0aW9ucy5hcHBQYXRoIHx8ICcnO1xuICAgIHZhciBiaW4gPSBpc0ltYWdlTWFnaWNrXG4gICAgICA/IGFwcFBhdGggKyAnY29tcGFyZScgXG4gICAgICA6IGFwcFBhdGggKyAnZ20nXG4gICAgdmFyIGFyZ3MgPSBbJy1tZXRyaWMnLCAnbXNlJywgb3JpZywgY29tcGFyZVRvXVxuICAgIGlmICghaXNJbWFnZU1hZ2ljaykge1xuICAgICAgICBhcmdzLnVuc2hpZnQoJ2NvbXBhcmUnKTtcbiAgICB9XG4gICAgdmFyIHRvbGVyYW5jZSA9IDAuNDtcbiAgICAvLyBvdXRwdXR0aW5nIHRoZSBkaWZmIGltYWdlXG4gICAgaWYgKHR5cGVvZiBvcHRpb25zID09PSAnb2JqZWN0Jykge1xuXG4gICAgICBpZiAob3B0aW9ucy5oaWdobGlnaHRDb2xvciAmJiBvcHRpb25zLmhpZ2hsaWdodENvbG9yLmluZGV4T2YoJ1wiJykgPCAwKSB7XG4gICAgICAgIG9wdGlvbnMuaGlnaGxpZ2h0Q29sb3IgPSAnXCInICsgb3B0aW9ucy5oaWdobGlnaHRDb2xvciArICdcIic7XG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLmZpbGUpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBvcHRpb25zLmZpbGUgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIHBhdGggZm9yIHRoZSBkaWZmIG91dHB1dCBpcyBpbnZhbGlkJyk7XG4gICAgICAgIH1cbiAgICAgICAgIC8vIGdyYXBoaWNzbWFnaWNrIGRlZmF1bHRzIHRvIHJlZFxuICAgICAgICBpZiAob3B0aW9ucy5oaWdobGlnaHRDb2xvdXIpIHtcbiAgICAgICAgICAgIGFyZ3MucHVzaCgnLWhpZ2hsaWdodC1jb2xvcicpO1xuICAgICAgICAgICAgYXJncy5wdXNoKG9wdGlvbnMuaGlnaGxpZ2h0Q29sb3IpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcHRpb25zLmhpZ2hsaWdodFN0eWxlKSB7XG4gICAgICAgICAgICBhcmdzLnB1c2goJy1oaWdobGlnaHQtc3R5bGUnKVxuICAgICAgICAgICAgYXJncy5wdXNoKG9wdGlvbnMuaGlnaGxpZ2h0U3R5bGUpXG4gICAgICAgIH1cbiAgICAgICAgLy8gRm9yIElNLCBmaWxlbmFtZSBpcyB0aGUgbGFzdCBhcmd1bWVudC4gRm9yIEdNIGl0J3MgYC1maWxlIDxmaWxlbmFtZT5gXG4gICAgICAgIGlmICghaXNJbWFnZU1hZ2ljaykge1xuICAgICAgICAgICAgYXJncy5wdXNoKCctZmlsZScpO1xuICAgICAgICB9XG4gICAgICAgIGFyZ3MucHVzaChvcHRpb25zLmZpbGUpO1xuICAgICAgfVxuICAgICAgXG4gICAgICBpZiAodHlwZW9mIG9wdGlvbnMudG9sZXJhbmNlICE9ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIGlmICh0eXBlb2Ygb3B0aW9ucy50b2xlcmFuY2UgIT09ICdudW1iZXInKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIHRvbGVyYW5jZSB2YWx1ZSBzaG91bGQgYmUgYSBudW1iZXInKTtcbiAgICAgICAgfVxuICAgICAgICB0b2xlcmFuY2UgPSBvcHRpb25zLnRvbGVyYW5jZTtcbiAgICAgIH0gXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEZvciBJbWFnZU1hZ2ljayBkaWZmIGZpbGUgaXMgcmVxdWlyZWQgYnV0IHdlIGRvbid0IGNhcmUgYWJvdXQgaXQsIHNvIG51bGwgaXQgb3V0XG4gICAgICBpZiAoaXNJbWFnZU1hZ2ljaykge1xuICAgICAgICBhcmdzLnB1c2goJ251bGw6Jyk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlb2Ygb3B0aW9ucyA9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIGNiID0gb3B0aW9uczsgLy8gdG9sZXJhbmNlIHZhbHVlIG5vdCBwcm92aWRlZCwgZmxpcCB0aGUgY2IgcGxhY2VcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRvbGVyYW5jZSA9IG9wdGlvbnNcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgcHJvYyA9IHNwYXduKGJpbiwgYXJncyk7XG4gICAgdmFyIHN0ZG91dCA9ICcnO1xuICAgIHZhciBzdGRlcnIgPSAnJztcbiAgICBwcm9jLnN0ZG91dC5vbignZGF0YScsZnVuY3Rpb24oZGF0YSkgeyBzdGRvdXQrPWRhdGEgfSk7XG4gICAgcHJvYy5zdGRlcnIub24oJ2RhdGEnLGZ1bmN0aW9uKGRhdGEpIHsgc3RkZXJyKz1kYXRhIH0pO1xuICAgIHByb2Mub24oJ2Nsb3NlJywgZnVuY3Rpb24gKGNvZGUpIHtcbiAgICAgIC8vIEltYWdlTWFnaWNrIHJldHVybnMgZXJyIGNvZGUgMiBpZiBlcnIsIDAgaWYgc2ltaWxhciwgMSBpZiBkaXNzaW1pbGFyXG4gICAgICBpZiAoaXNJbWFnZU1hZ2ljaykge1xuICAgICAgICBpZiAoY29kZSA9PT0gMCkge1xuICAgICAgICAgIHJldHVybiBjYihudWxsLCAwIDw9IHRvbGVyYW5jZSwgMCwgc3Rkb3V0KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChjb2RlID09PSAxKSB7XG4gICAgICAgICAgZXJyID0gbnVsbDtcbiAgICAgICAgICBzdGRvdXQgPSBzdGRlcnI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBjYihzdGRlcnIpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZihjb2RlICE9PSAwKSB7XG4gICAgICAgICAgcmV0dXJuIGNiKHN0ZGVycik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8vIFNpbmNlIEltYWdlTWFnaWNrIHNpbWlsYXIgZ2l2ZXMgZXJyIGNvZGUgMCBhbmQgbm8gc3Rkb3V0LCB0aGVyZSdzIHJlYWxseSBubyBtYXRjaGluZ1xuICAgICAgLy8gT3RoZXJ3aXNlLCBvdXRwdXQgZm9ybWF0IGZvciBJTSBpcyBgMTIuMDAgKDAuMTIzKWAgYW5kIGZvciBHTSBpdCdzIGBUb3RhbDogMC4xMjNgXG4gICAgICB2YXIgcmVnZXggPSBpc0ltYWdlTWFnaWNrID8gL1xcKChcXGQrXFwuP1tcXGRcXC1cXCtlXSopXFwpL20gOiAvVG90YWw6IChcXGQrXFwuP1xcZCopL207XG4gICAgICB2YXIgbWF0Y2ggPSByZWdleC5leGVjKHN0ZG91dCk7XG4gICAgICBpZiAoIW1hdGNoKSB7XG4gICAgICAgIGVyciA9IG5ldyBFcnJvcignVW5hYmxlIHRvIHBhcnNlIG91dHB1dC5cXG5Hb3QgJyArIHN0ZG91dCk7XG4gICAgICAgIHJldHVybiBjYihlcnIpO1xuICAgICAgfVxuXG4gICAgICB2YXIgZXF1YWxpdHkgPSBwYXJzZUZsb2F0KG1hdGNoWzFdKTtcbiAgICAgIGNiKG51bGwsIGVxdWFsaXR5IDw9IHRvbGVyYW5jZSwgZXF1YWxpdHksIHN0ZG91dCwgb3JpZywgY29tcGFyZVRvKTtcbiAgICB9KTtcbiAgfVxuXG4gIGlmIChwcm90bykge1xuICAgIHByb3RvLmNvbXBhcmUgPSBjb21wYXJlO1xuICB9XG4gIHJldHVybiBjb21wYXJlO1xufTtcblxuIiwiLy8gY29tcG9zaXRlXG5cbi8qKlxuICogQ29tcG9zaXRlIGltYWdlcyB0b2dldGhlciB1c2luZyB0aGUgYGNvbXBvc2l0ZWAgY29tbWFuZCBpbiBncmFwaGljc21hZ2ljay5cbiAqXG4gKiBnbSgnL3BhdGgvdG8vaW1hZ2UuanBnJylcbiAqIC5jb21wb3NpdGUoJy9wYXRoL3RvL3NlY29uZF9pbWFnZS5qcGcnKVxuICogLmdlb21ldHJ5KCcrMTAwKzE1MCcpXG4gKiAud3JpdGUoJy9wYXRoL3RvL2NvbXBvc2l0ZS5wbmcnLCBmdW5jdGlvbihlcnIpIHtcbiAqICAgaWYoIWVycikgY29uc29sZS5sb2coXCJXcml0dGVuIGNvbXBvc2l0ZSBpbWFnZS5cIik7XG4gKiB9KTtcbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gb3RoZXIgIFBhdGggdG8gdGhlIGltYWdlIHRoYXQgY29udGFpbnMgdGhlIGNoYW5nZXMuXG4gKiBAcGFyYW0ge1N0cmluZ30gW21hc2tdIFBhdGggdG8gdGhlIGltYWdlIHdpdGggb3BhY2l0eSBpbmZvcm10aW9uLiBHcmF5c2NhbGUuXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzID0gZnVuY3Rpb24ocHJvdG8pIHtcbiAgICBwcm90by5jb21wb3NpdGUgPSBmdW5jdGlvbihvdGhlciwgbWFzaykge1xuICAgICAgICB0aGlzLmluKG90aGVyKTtcblxuICAgICAgICAvLyBJZiB0aGUgbWFzayBpcyBkZWZpbmVkLCBhZGQgaXQgdG8gdGhlIG91dHB1dC5cbiAgICAgICAgaWYodHlwZW9mIG1hc2sgIT09IFwidW5kZWZpbmVkXCIpXG4gICAgICAgICAgICB0aGlzLm91dChtYXNrKTtcblxuICAgICAgICB0aGlzLnN1YkNvbW1hbmQoXCJjb21wb3NpdGVcIik7XG5cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxufVxuIiwiXG4vKipcbiAqIEV4dGVuZCBwcm90b1xuICovXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKHByb3RvKSB7XG4gIHJlcXVpcmUoXCIuL2NvbnZlbmllbmNlL3RodW1iXCIpKHByb3RvKTtcbiAgcmVxdWlyZShcIi4vY29udmVuaWVuY2UvbW9ycGhcIikocHJvdG8pO1xuICByZXF1aXJlKFwiLi9jb252ZW5pZW5jZS9zZXBpYVwiKShwcm90byk7XG4gIHJlcXVpcmUoXCIuL2NvbnZlbmllbmNlL2F1dG9PcmllbnRcIikocHJvdG8pO1xufVxuIiwiXG4vKipcbiAqIEV4dGVuZCBwcm90by5cbiAqL1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChwcm90bykge1xuXG4gIHZhciBleGlmVHJhbnNmb3JtcyA9IHtcbiAgICAgIHRvcGxlZnQ6ICAgICAnJ1xuICAgICwgdG9wcmlnaHQ6ICAgIFsnLWZsb3AnXVxuICAgICwgYm90dG9tcmlnaHQ6IFsnLXJvdGF0ZScsIDE4MF1cbiAgICAsIGJvdHRvbWxlZnQ6ICBbJy1mbGlwJ11cbiAgICAsIGxlZnR0b3A6ICAgICBbJy1mbGlwJywgJy1yb3RhdGUnLCA5MF1cbiAgICAsIHJpZ2h0dG9wOiAgICBbJy1yb3RhdGUnLCA5MF1cbiAgICAsIHJpZ2h0Ym90dG9tOiBbJy1mbG9wJywgJy1yb3RhdGUnLCA5MF1cbiAgICAsIGxlZnRib3R0b206ICBbJy1yb3RhdGUnLCAyNzBdXG4gIH1cblxuICBwcm90by5hdXRvT3JpZW50ID0gZnVuY3Rpb24gYXV0b09yaWVudCAoKSB7XG4gICAgLy8gQWx3YXlzIHN0cmlwIEVYSUYgZGF0YSBzaW5jZSB3ZSBjYW4ndFxuICAgIC8vIGNoYW5nZS9lZGl0IGl0LlxuXG4gICAgLy8gaW1hZ2VtYWdpY2sgaGFzIGEgbmF0aXZlIC1hdXRvLW9yaWVudCBvcHRpb25cbiAgICAvLyBzbyBkb2VzIGdyYXBoaWNzbWFnaWNrLCBidXQgaW4gMS4zLjE4LlxuICAgIC8vIG5hdGl2ZUF1dG9PcmllbnQgb3B0aW9uIGVuYWJsZXMgdGhpcyBpZiB5b3Uga25vdyB5b3UgaGF2ZSA+PSAxLjMuMThcbiAgICBpZiAodGhpcy5fb3B0aW9ucy5uYXRpdmVBdXRvT3JpZW50IHx8IHRoaXMuX29wdGlvbnMuaW1hZ2VNYWdpY2spIHtcbiAgICAgIHRoaXMub3V0KCctYXV0by1vcmllbnQnKTtcbiAgICAgIHRoaXMuc3RyaXAoKTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHRoaXMucHJlcHJvY2Vzc29yKGZ1bmN0aW9uIChjYWxsYmFjaykge1xuICAgICAgdGhpcy5vcmllbnRhdGlvbih7YnVmZmVyU3RyZWFtOiB0cnVlfSwgZnVuY3Rpb24gKGVyciwgb3JpZW50YXRpb24pIHtcbiAgICAgICAgaWYgKGVycikgcmV0dXJuIGNhbGxiYWNrKGVycik7XG5cbiAgICAgICAgdmFyIHRyYW5zZm9ybXMgPSBleGlmVHJhbnNmb3Jtc1tvcmllbnRhdGlvbi50b0xvd2VyQ2FzZSgpXTtcbiAgICAgICAgaWYgKHRyYW5zZm9ybXMpIHtcblxuICAgICAgICAgIC8vIHJlbW92ZSBhbnkgZXhpc3RpbmcgdHJhbnNmb3JtcyB0aGF0IG1pZ2h0IGNvbmZsaWN0XG4gICAgICAgICAgdmFyIGluZGV4ID0gdGhpcy5fb3V0LmluZGV4T2YodHJhbnNmb3Jtc1swXSk7XG4gICAgICAgICAgaWYgKH5pbmRleCkge1xuICAgICAgICAgICAgdGhpcy5fb3V0LnNwbGljZShpbmRleCwgdHJhbnNmb3Jtcy5sZW5ndGgpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIHJlcGFnZSB0byBmaXggY29vcmRpbmF0ZXNcbiAgICAgICAgICB0aGlzLl9vdXQudW5zaGlmdC5hcHBseSh0aGlzLl9vdXQsIHRyYW5zZm9ybXMuY29uY2F0KCctcGFnZScsICcrMCswJykpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zdHJpcCgpO1xuXG4gICAgICAgIGNhbGxiYWNrKCk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG59XG4iLCJcbi8qKlxuICogTW9kdWxlIGRlcGVuZGVuY2llcy5cbiAqL1xuXG52YXIgZnMgPSByZXF1aXJlKCdmcycpO1xudmFyIHBhcmFsbGVsID0gcmVxdWlyZSgnYXJyYXktcGFyYWxsZWwnKTtcblxuLyoqXG4gKiBFeHRlbmQgcHJvdG8uXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAocHJvdG8pIHtcblxuICAvKipcbiAgICogRG8gbm90aGluZy5cbiAgICovXG5cbiAgZnVuY3Rpb24gbm9vcCAoKSB7fVxuXG4gIC8vIGh0dHA6Ly93d3cuZ3JhcGhpY3NtYWdpY2sub3JnL0dyYXBoaWNzTWFnaWNrLmh0bWwjZGV0YWlscy1tb3JwaFxuICBwcm90by5tb3JwaCA9IGZ1bmN0aW9uIG1vcnBoIChvdGhlciwgb3V0bmFtZSwgY2FsbGJhY2spIHtcbiAgICBpZiAoIW91dG5hbWUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcImFuIG91dHB1dCBmaWxlbmFtZSBpcyByZXF1aXJlZFwiKTtcbiAgICB9XG5cbiAgICBjYWxsYmFjayA9IChjYWxsYmFjayB8fCBub29wKS5iaW5kKHRoaXMpXG5cbiAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICBpZiAoQXJyYXkuaXNBcnJheShvdGhlcikpIHtcbiAgICAgIG90aGVyLmZvckVhY2goZnVuY3Rpb24gKGltZykge1xuICAgICAgICBzZWxmLm91dChpbWcpO1xuICAgICAgfSk7XG4gICAgICBzZWxmLm91dChcIi1tb3JwaFwiLCBvdGhlci5sZW5ndGgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZWxmLm91dChvdGhlciwgXCItbW9ycGhcIiwgMSk7XG4gICAgfVxuXG4gICAgc2VsZi53cml0ZShvdXRuYW1lLCBmdW5jdGlvbiAoZXJyLCBzdGRvdXQsIHN0ZGVyciwgY21kKSB7XG4gICAgICBpZiAoZXJyKSByZXR1cm4gY2FsbGJhY2soZXJyLCBzdGRvdXQsIHN0ZGVyciwgY21kKTtcblxuICAgICAgLy8gQXBwYXJlbnRseSBzb21lIHBsYXRmb3JtcyBjcmVhdGUgdGhlIGZvbGxvd2luZyB0ZW1wb3JhcnkgZmlsZXMuXG4gICAgICAvLyBDaGVjayBpZiB0aGUgb3V0cHV0IGZpbGUgZXhpc3RzLCBpZiBpdCBkb2Vzbid0LCB0aGVuXG4gICAgICAvLyB3b3JrIHdpdGggdGVtcG9yYXJ5IGZpbGVzLlxuICAgICAgZnMuZXhpc3RzKG91dG5hbWUsIGZ1bmN0aW9uIChleGlzdHMpIHtcbiAgICAgICAgaWYgKGV4aXN0cykgcmV0dXJuIGNhbGxiYWNrKG51bGwsIHN0ZG91dCwgc3RkZXJyLCBjbWQpO1xuXG4gICAgICAgIHBhcmFsbGVsKFtcbiAgICAgICAgICBmcy51bmxpbmsuYmluZChmcywgb3V0bmFtZSArICcuMCcpLFxuICAgICAgICAgIGZzLnVubGluay5iaW5kKGZzLCBvdXRuYW1lICsgJy4yJyksXG4gICAgICAgICAgZnMucmVuYW1lLmJpbmQoZnMsIG91dG5hbWUgKyAnLjEnLCBvdXRuYW1lKVxuICAgICAgICBdLCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgICAgY2FsbGJhY2soZXJyLCBzdGRvdXQsIHN0ZGVyciwgY21kKTtcbiAgICAgICAgfSlcbiAgICAgIH0pXG4gICAgfSk7XG5cbiAgICByZXR1cm4gc2VsZjtcbiAgfVxufVxuIiwiXG4vKipcbiAqIEV4dGVuZCBwcm90by5cbiAqL1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChwcm90bykge1xuICBwcm90by5zZXBpYSA9IGZ1bmN0aW9uIHNlcGlhICgpIHtcbiAgICByZXR1cm4gdGhpcy5tb2R1bGF0ZSgxMTUsIDAsIDEwMCkuY29sb3JpemUoNywgMjEsIDUwKTtcbiAgfVxufVxuIiwiXG4vKipcbiAqIEV4dGVuZCBwcm90by5cbiAqL1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChwcm90bykge1xuXG4gIHByb3RvLnRodW1iID0gZnVuY3Rpb24gdGh1bWIgKHcsIGgsIG5hbWUsIHF1YWxpdHksIGFsaWduLCBwcm9ncmVzc2l2ZSwgY2FsbGJhY2ssIG9wdHMpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXMsXG4gICAgICBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTtcblxuICAgIG9wdHMgPSBhcmdzLnBvcCgpO1xuXG4gICAgaWYgKHR5cGVvZiBvcHRzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBjYWxsYmFjayA9IG9wdHM7XG4gICAgICBvcHRzID0gJyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNhbGxiYWNrID0gYXJncy5wb3AoKTtcbiAgICB9XG5cbiAgICB3ID0gYXJncy5zaGlmdCgpO1xuICAgIGggPSBhcmdzLnNoaWZ0KCk7XG4gICAgbmFtZSA9IGFyZ3Muc2hpZnQoKTtcbiAgICBxdWFsaXR5ID0gYXJncy5zaGlmdCgpIHx8IDYzO1xuICAgIGFsaWduID0gYXJncy5zaGlmdCgpIHx8ICd0b3BsZWZ0JztcbiAgICB2YXIgaW50ZXJsYWNlID0gYXJncy5zaGlmdCgpID8gJ0xpbmUnIDogJ05vbmUnO1xuXG4gICAgc2VsZi5zaXplKGZ1bmN0aW9uIChlcnIsIHNpemUpIHtcbiAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgcmV0dXJuIGNhbGxiYWNrLmFwcGx5KHNlbGYsIGFyZ3VtZW50cyk7XG4gICAgICB9XG5cbiAgICAgIHcgPSBwYXJzZUludCh3LCAxMCk7XG4gICAgICBoID0gcGFyc2VJbnQoaCwgMTApO1xuXG4gICAgICB2YXIgdzEsIGgxO1xuICAgICAgdmFyIHhvZmZzZXQgPSAwO1xuICAgICAgdmFyIHlvZmZzZXQgPSAwO1xuXG4gICAgICBpZiAoc2l6ZS53aWR0aCA8IHNpemUuaGVpZ2h0KSB7XG4gICAgICAgIHcxID0gdztcbiAgICAgICAgaDEgPSBNYXRoLmZsb29yKHNpemUuaGVpZ2h0ICogKHcvc2l6ZS53aWR0aCkpO1xuICAgICAgICBpZiAoaDEgPCBoKSB7XG4gICAgICAgICAgdzEgPSBNYXRoLmZsb29yKHcxICogKCgoaC1oMSkvaCkgKyAxKSk7XG4gICAgICAgICAgaDEgPSBoO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHNpemUud2lkdGggPiBzaXplLmhlaWdodCkge1xuICAgICAgICBoMSA9IGg7XG4gICAgICAgIHcxID0gTWF0aC5mbG9vcihzaXplLndpZHRoICogKGgvc2l6ZS5oZWlnaHQpKTtcbiAgICAgICAgaWYgKHcxIDwgdykge1xuICAgICAgICAgIGgxID0gTWF0aC5mbG9vcihoMSAqICgoKHctdzEpL3cpICsgMSkpO1xuICAgICAgICAgIHcxID0gdztcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChzaXplLndpZHRoID09IHNpemUuaGVpZ2h0KSB7XG4gICAgICAgIHZhciBiaWdnZXIgPSAodz5oP3c6aCk7XG4gICAgICAgIHcxID0gYmlnZ2VyO1xuICAgICAgICBoMSA9IGJpZ2dlcjtcbiAgICAgIH1cblxuICAgICAgaWYgKGFsaWduID09ICdjZW50ZXInKSB7XG4gICAgICAgIGlmICh3IDwgdzEpIHtcbiAgICAgICAgICB4b2Zmc2V0ID0gKHcxLXcpLzI7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGggPCBoMSkge1xuICAgICAgICAgIHlvZmZzZXQgPSAoaDEtaCkvMjtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBzZWxmXG4gICAgICAucXVhbGl0eShxdWFsaXR5KVxuICAgICAgLmluKFwiLXNpemVcIiwgdzErXCJ4XCIraDEpXG4gICAgICAuc2NhbGUodzEsIGgxLCBvcHRzKVxuICAgICAgLmNyb3AodywgaCwgeG9mZnNldCwgeW9mZnNldClcbiAgICAgIC5pbnRlcmxhY2UoaW50ZXJsYWNlKVxuICAgICAgLm5vUHJvZmlsZSgpXG4gICAgICAud3JpdGUobmFtZSwgZnVuY3Rpb24gKCkge1xuICAgICAgICBjYWxsYmFjay5hcHBseShzZWxmLCBhcmd1bWVudHMpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gc2VsZjtcbiAgfTtcblxuICBwcm90by50aHVtYkV4YWN0ID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBzZWxmID0gdGhpcyxcbiAgICAgIGFyZ3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpO1xuXG4gICAgYXJncy5wdXNoKCchJyk7XG5cbiAgICBzZWxmLnRodW1iLmFwcGx5KHNlbGYsIGFyZ3MpO1xuICB9O1xufTtcbiIsIlxuLyoqXG4gKiBNb2R1bGUgZGVwZW5kZW5jaWVzLlxuICovXG5cbnZhciBlc2NhcGUgPSByZXF1aXJlKCcuL3V0aWxzJykuZXNjYXBlO1xuXG4vKipcbiAqIEV4dGVuZCBwcm90by5cbiAqL1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChwcm90bykge1xuXG4gIC8vIGh0dHA6Ly93d3cuZ3JhcGhpY3NtYWdpY2sub3JnL0dyYXBoaWNzTWFnaWNrLmh0bWwjZGV0YWlscy1maWxsXG4gIHByb3RvLmZpbGwgPSBmdW5jdGlvbiBmaWxsIChjb2xvcikge1xuICAgIHJldHVybiB0aGlzLm91dChcIi1maWxsXCIsIGNvbG9yIHx8IFwibm9uZVwiKTtcbiAgfVxuXG4gIC8vIGh0dHA6Ly93d3cuZ3JhcGhpY3NtYWdpY2sub3JnL0dyYXBoaWNzTWFnaWNrLmh0bWwjZGV0YWlscy1zdHJva2VcbiAgcHJvdG8uc3Ryb2tlID0gZnVuY3Rpb24gc3Ryb2tlIChjb2xvciwgd2lkdGgpIHtcbiAgICBpZiAod2lkdGgpIHtcbiAgICAgIHRoaXMuc3Ryb2tlV2lkdGgod2lkdGgpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLm91dChcIi1zdHJva2VcIiwgY29sb3IgfHwgXCJub25lXCIpO1xuICB9XG5cbiAgLy8gaHR0cDovL3d3dy5ncmFwaGljc21hZ2ljay5vcmcvR3JhcGhpY3NNYWdpY2suaHRtbCNkZXRhaWxzLXN0cm9rZXdpZHRoXG4gIHByb3RvLnN0cm9rZVdpZHRoID0gZnVuY3Rpb24gc3Ryb2tlV2lkdGggKHdpZHRoKSB7XG4gICAgcmV0dXJuIHRoaXMub3V0KFwiLXN0cm9rZXdpZHRoXCIsIHdpZHRoKTtcbiAgfVxuXG4gIC8vIGh0dHA6Ly93d3cuZ3JhcGhpY3NtYWdpY2sub3JnL0dyYXBoaWNzTWFnaWNrLmh0bWwjZGV0YWlscy1mb250XG4gIHByb3RvLmZvbnQgPSBmdW5jdGlvbiBmb250IChmb250LCBzaXplKSB7XG4gICAgaWYgKHNpemUpIHtcbiAgICAgIHRoaXMuZm9udFNpemUoc2l6ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMub3V0KFwiLWZvbnRcIiwgZm9udCk7XG4gIH1cblxuICAvLyBodHRwOi8vd3d3LmdyYXBoaWNzbWFnaWNrLm9yZy9HcmFwaGljc01hZ2ljay5odG1sXG4gIHByb3RvLmZvbnRTaXplID0gZnVuY3Rpb24gZm9udFNpemUgKHNpemUpIHtcbiAgICByZXR1cm4gdGhpcy5vdXQoXCItcG9pbnRzaXplXCIsIHNpemUpO1xuICB9XG5cbiAgLy8gaHR0cDovL3d3dy5ncmFwaGljc21hZ2ljay5vcmcvR3JhcGhpY3NNYWdpY2suaHRtbCNkZXRhaWxzLWRyYXdcbiAgcHJvdG8uZHJhdyA9IGZ1bmN0aW9uIGRyYXcgKGFyZ3MpIHtcbiAgICByZXR1cm4gdGhpcy5vdXQoXCItZHJhd1wiLCBbXS5zbGljZS5jYWxsKGFyZ3VtZW50cykuam9pbihcIiBcIikpO1xuICB9XG5cbiAgLy8gaHR0cDovL3d3dy5ncmFwaGljc21hZ2ljay5vcmcvR3JhcGhpY3NNYWdpY2suaHRtbCNkZXRhaWxzLWRyYXdcbiAgcHJvdG8uZHJhd1BvaW50ID0gZnVuY3Rpb24gZHJhd1BvaW50ICh4LCB5KSB7XG4gICAgcmV0dXJuIHRoaXMuZHJhdyhcInBvaW50XCIsIHggK1wiLFwiKyB5KTtcbiAgfVxuXG4gIC8vIGh0dHA6Ly93d3cuZ3JhcGhpY3NtYWdpY2sub3JnL0dyYXBoaWNzTWFnaWNrLmh0bWwjZGV0YWlscy1kcmF3XG4gIHByb3RvLmRyYXdMaW5lID0gZnVuY3Rpb24gZHJhd0xpbmUgKHgwLCB5MCwgeDEsIHkxKSB7XG4gICAgcmV0dXJuIHRoaXMuZHJhdyhcImxpbmVcIiwgeDArXCIsXCIreTAsIHgxK1wiLFwiK3kxKTtcbiAgfVxuXG4gIC8vIGh0dHA6Ly93d3cuZ3JhcGhpY3NtYWdpY2sub3JnL0dyYXBoaWNzTWFnaWNrLmh0bWwjZGV0YWlscy1kcmF3XG4gIHByb3RvLmRyYXdSZWN0YW5nbGUgPSBmdW5jdGlvbiBkcmF3UmVjdGFuZ2xlICh4MCwgeTAsIHgxLCB5MSwgd2MsIGhjKSB7XG4gICAgdmFyIHNoYXBlID0gXCJyZWN0YW5nbGVcIlxuICAgICAgLCBsYXN0YXJnO1xuXG4gICAgaWYgKFwidW5kZWZpbmVkXCIgIT09IHR5cGVvZiB3Yykge1xuICAgICAgc2hhcGUgPSBcInJvdW5kUmVjdGFuZ2xlXCI7XG5cbiAgICAgIGlmIChcInVuZGVmaW5lZFwiID09PSB0eXBlb2YgaGMpIHtcbiAgICAgICAgaGMgPSB3YztcbiAgICAgIH1cblxuICAgICAgbGFzdGFyZyA9IHdjK1wiLFwiK2hjO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmRyYXcoc2hhcGUsIHgwK1wiLFwiK3kwLCB4MStcIixcIit5MSwgbGFzdGFyZyk7XG4gIH1cblxuICAvLyBodHRwOi8vd3d3LmdyYXBoaWNzbWFnaWNrLm9yZy9HcmFwaGljc01hZ2ljay5odG1sI2RldGFpbHMtZHJhd1xuICBwcm90by5kcmF3QXJjID0gZnVuY3Rpb24gZHJhd0FyYyAoeDAsIHkwLCB4MSwgeTEsIGEwLCBhMSkge1xuICAgIHJldHVybiB0aGlzLmRyYXcoXCJhcmNcIiwgeDArXCIsXCIreTAsIHgxK1wiLFwiK3kxLCBhMCtcIixcIithMSk7XG4gIH1cblxuICAvLyBodHRwOi8vd3d3LmdyYXBoaWNzbWFnaWNrLm9yZy9HcmFwaGljc01hZ2ljay5odG1sI2RldGFpbHMtZHJhd1xuICBwcm90by5kcmF3RWxsaXBzZSA9IGZ1bmN0aW9uIGRyYXdFbGxpcHNlICh4MCwgeTAsIHJ4LCByeSwgYTAsIGExKSB7XG4gICAgaWYgKGEwID09IHVuZGVmaW5lZCkgYTAgPSAwO1xuICAgIGlmIChhMSA9PSB1bmRlZmluZWQpIGExID0gMzYwO1xuICAgIHJldHVybiB0aGlzLmRyYXcoXCJlbGxpcHNlXCIsIHgwK1wiLFwiK3kwLCByeCtcIixcIityeSwgYTArXCIsXCIrYTEpO1xuICB9XG5cbiAgLy8gaHR0cDovL3d3dy5ncmFwaGljc21hZ2ljay5vcmcvR3JhcGhpY3NNYWdpY2suaHRtbCNkZXRhaWxzLWRyYXdcbiAgcHJvdG8uZHJhd0NpcmNsZSA9IGZ1bmN0aW9uIGRyYXdDaXJjbGUgKHgwLCB5MCwgeDEsIHkxKSB7XG4gICAgcmV0dXJuIHRoaXMuZHJhdyhcImNpcmNsZVwiLCB4MCtcIixcIit5MCwgeDErXCIsXCIreTEpO1xuICB9XG5cbiAgLy8gaHR0cDovL3d3dy5ncmFwaGljc21hZ2ljay5vcmcvR3JhcGhpY3NNYWdpY2suaHRtbCNkZXRhaWxzLWRyYXdcbiAgcHJvdG8uZHJhd1BvbHlsaW5lID0gZnVuY3Rpb24gZHJhd1BvbHlsaW5lICgpIHtcbiAgICByZXR1cm4gdGhpcy5kcmF3KFwicG9seWxpbmVcIiwgZm9ybWF0UG9pbnRzKGFyZ3VtZW50cykpO1xuICB9XG5cbiAgLy8gaHR0cDovL3d3dy5ncmFwaGljc21hZ2ljay5vcmcvR3JhcGhpY3NNYWdpY2suaHRtbCNkZXRhaWxzLWRyYXdcbiAgcHJvdG8uZHJhd1BvbHlnb24gPSBmdW5jdGlvbiBkcmF3UG9seWdvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMuZHJhdyhcInBvbHlnb25cIiwgZm9ybWF0UG9pbnRzKGFyZ3VtZW50cykpO1xuICB9XG5cbiAgLy8gaHR0cDovL3d3dy5ncmFwaGljc21hZ2ljay5vcmcvR3JhcGhpY3NNYWdpY2suaHRtbCNkZXRhaWxzLWRyYXdcbiAgcHJvdG8uZHJhd0JlemllciA9IGZ1bmN0aW9uIGRyYXdCZXppZXIgKCkge1xuICAgIHJldHVybiB0aGlzLmRyYXcoXCJiZXppZXJcIiwgZm9ybWF0UG9pbnRzKGFyZ3VtZW50cykpO1xuICB9XG5cbiAgcHJvdG8uX2dyYXZpdGllcyA9IFtcbiAgICAgIFwibm9ydGh3ZXN0XCJcblx0ICAsIFwibm9ydGhcIlxuICAgICwgXCJub3J0aGVhc3RcIlxuXHQgICwgXCJ3ZXN0XCJcbiAgICAsIFwiY2VudGVyXCJcblx0ICAsIFwiZWFzdFwiXG4gICAgLCBcInNvdXRod2VzdFwiXG4gICAgLCBcInNvdXRoXCJcbiAgICAsIFwic291dGhlYXN0XCJdO1xuXG4gIC8vIGh0dHA6Ly93d3cuZ3JhcGhpY3NtYWdpY2sub3JnL0dyYXBoaWNzTWFnaWNrLmh0bWwjZGV0YWlscy1kcmF3XG4gIHByb3RvLmRyYXdUZXh0ID0gZnVuY3Rpb24gZHJhd1RleHQgKHgwLCB5MCwgdGV4dCwgZ3Jhdml0eSkge1xuICAgIHZhciBncmF2aXR5ID0gU3RyaW5nKGdyYXZpdHkgfHwgXCJcIikudG9Mb3dlckNhc2UoKVxuICAgICAgLCBhcmcgPSBbXCJ0ZXh0IFwiICsgeDAgKyBcIixcIiArIHkwICsgXCIgXCIgKyBlc2NhcGUodGV4dCldO1xuXG4gICAgaWYgKH50aGlzLl9ncmF2aXRpZXMuaW5kZXhPZihncmF2aXR5KSkge1xuICAgICAgYXJnLnVuc2hpZnQoXCJncmF2aXR5XCIsIGdyYXZpdHkpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmRyYXcuYXBwbHkodGhpcywgYXJnKTtcbiAgfVxuXG4gIHByb3RvLl9kcmF3UHJvcHMgPSBbXCJjb2xvclwiLCBcIm1hdHRlXCJdO1xuXG4gIC8vIGh0dHA6Ly93d3cuZ3JhcGhpY3NtYWdpY2sub3JnL0dyYXBoaWNzTWFnaWNrLmh0bWwjZGV0YWlscy1kcmF3XG4gIHByb3RvLnNldERyYXcgPSBmdW5jdGlvbiBzZXREcmF3IChwcm9wLCB4LCB5LCBtZXRob2QpIHtcbiAgICBwcm9wID0gU3RyaW5nKHByb3AgfHwgXCJcIikudG9Mb3dlckNhc2UoKTtcblxuICAgIGlmICghfnRoaXMuX2RyYXdQcm9wcy5pbmRleE9mKHByb3ApKSB7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5kcmF3KHByb3AsIHgrXCIsXCIreSwgbWV0aG9kKTtcbiAgfVxuXG59XG5cbmZ1bmN0aW9uIGZvcm1hdFBvaW50cyAocG9pbnRzKSB7XG4gIHZhciBsZW4gPSBwb2ludHMubGVuZ3RoXG4gICAgLCByZXN1bHQgPSBbXVxuICAgICwgaSA9IDA7XG5cbiAgZm9yICg7IGkgPCBsZW47ICsraSkge1xuICAgIHJlc3VsdC5wdXNoKHBvaW50c1tpXS5qb2luKFwiLFwiKSk7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuIiwiLyoqXG4gKiBFeHRlbmQgcHJvdG8uXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZ20pIHtcblxuICB2YXIgcHJvdG8gPSBnbS5wcm90b3R5cGU7XG5cbiAgLyoqXG4gICAqIGBpZGVudGlmeWAgc3RhdGVzXG4gICAqL1xuXG4gIGNvbnN0IElERU5USUZZSU5HID0gMTtcbiAgY29uc3QgSURFTlRJRklFRCA9IDI7XG5cbiAgLyoqXG4gICAqIE1hcCBnZXR0ZXIgZnVuY3Rpb25zIHRvIG91dHB1dCBuYW1lcy5cbiAgICpcbiAgICogLSBmb3JtYXQ6IHNwZWNpZnlpbmcgdGhlIC1mb3JtYXQgYXJndW1lbnQgKHNlZSBtYW4gZ20pXG4gICAqIC0gdmVyYm9zZTogdXNlIC12ZXJib3NlIGluc3RlYWQgb2YgLWZvcm1hdCAob25seSBpZiBuZWNlc3NhcnkgYi9jIGl0cyBzbG93KVxuICAgKiAtIGhlbHBlcjogdXNlIHRoZSBjb252ZXJzaW9uIGhlbHBlclxuICAgKi9cblxuICB2YXIgbWFwID0ge1xuICAgICAgJ2Zvcm1hdCc6IHsga2V5OiAnZm9ybWF0JywgZm9ybWF0OiAnJW0gJywgaGVscGVyOiAnRm9ybWF0JyB9XG4gICAgLCAnZGVwdGgnOiAgeyBrZXk6ICdkZXB0aCcsICBmb3JtYXQ6ICclcScgfVxuICAgICwgJ2ZpbGVzaXplJzogeyBrZXk6ICdGaWxlc2l6ZScsIGZvcm1hdDogJyViJyB9XG4gICAgLCAnc2l6ZSc6ICB7IGtleTogJ3NpemUnLCBmb3JtYXQ6ICcld3glaCAnLCBoZWxwZXI6ICdHZW9tZXRyeScgfVxuICAgICwgJ2NvbG9yJzogeyBrZXk6ICdjb2xvcicsIGZvcm1hdDogJyVrJywgIGhlbHBlcjogJ0NvbG9ycycgfVxuICAgICwgJ29yaWVudGF0aW9uJzogeyBrZXk6ICdPcmllbnRhdGlvbicsIGZvcm1hdDogJyVbRVhJRjpPcmllbnRhdGlvbl0nLCBoZWxwZXI6ICdPcmllbnRhdGlvbicgfVxuICAgICwgJ3Jlcyc6ICAgeyBrZXk6ICdSZXNvbHV0aW9uJywgdmVyYm9zZTogdHJ1ZSB9XG4gIH1cblxuICAvKipcbiAgICogR2V0dGVyIGZ1bmN0aW9uc1xuICAgKi9cblxuICBPYmplY3Qua2V5cyhtYXApLmZvckVhY2goZnVuY3Rpb24gKGdldHRlcikge1xuICAgIHByb3RvW2dldHRlcl0gPSBmdW5jdGlvbiAob3B0cywgY2FsbGJhY2spIHtcbiAgICAgIGlmICghY2FsbGJhY2spIGNhbGxiYWNrID0gb3B0cywgb3B0cyA9IHt9O1xuICAgICAgaWYgKCFjYWxsYmFjaykgcmV0dXJuIHRoaXM7XG5cbiAgICAgIHZhciB2YWwgPSBtYXBbZ2V0dGVyXVxuICAgICAgICAsIGtleSA9IHZhbC5rZXlcbiAgICAgICAgLCBzZWxmID0gdGhpcztcblxuICAgICAgaWYgKHNlbGYuZGF0YVtrZXldKSB7XG4gICAgICAgIGNhbGxiYWNrLmNhbGwoc2VsZiwgbnVsbCwgc2VsZi5kYXRhW2tleV0pO1xuICAgICAgICByZXR1cm4gc2VsZjtcbiAgICAgIH1cblxuICAgICAgc2VsZi5vbihnZXR0ZXIsIGNhbGxiYWNrKTtcblxuICAgICAgc2VsZi5idWZmZXJTdHJlYW0gPSAhIW9wdHMuYnVmZmVyU3RyZWFtO1xuXG4gICAgICBpZiAodmFsLnZlcmJvc2UpIHtcbiAgICAgICAgc2VsZi5pZGVudGlmeShvcHRzLCBmdW5jdGlvbiAoZXJyLCBzdGRvdXQsIHN0ZGVyciwgY21kKSB7XG4gICAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgc2VsZi5lbWl0KGdldHRlciwgZXJyLCBzZWxmLmRhdGFba2V5XSwgc3Rkb3V0LCBzdGRlcnIsIGNtZCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNlbGYuZW1pdChnZXR0ZXIsIGVyciwgc2VsZi5kYXRhW2tleV0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBzZWxmO1xuICAgICAgfVxuXG4gICAgICB2YXIgYXJncyA9IG1ha2VBcmdzKHNlbGYsIHZhbCk7XG4gICAgICBzZWxmLl9leGVjKGFyZ3MsIGZ1bmN0aW9uIChlcnIsIHN0ZG91dCwgc3RkZXJyLCBjbWQpIHtcbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgIHNlbGYuZW1pdChnZXR0ZXIsIGVyciwgc2VsZi5kYXRhW2tleV0sIHN0ZG91dCwgc3RkZXJyLCBjbWQpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciByZXN1bHQgPSAoc3Rkb3V0fHwnJykudHJpbSgpO1xuXG4gICAgICAgIGlmICh2YWwuaGVscGVyIGluIGhlbHBlcikge1xuICAgICAgICAgIGhlbHBlclt2YWwuaGVscGVyXShzZWxmLmRhdGEsIHJlc3VsdCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2VsZi5kYXRhW2tleV0gPSByZXN1bHQ7XG4gICAgICAgIH1cblxuICAgICAgICBzZWxmLmVtaXQoZ2V0dGVyLCBlcnIsIHNlbGYuZGF0YVtrZXldKTtcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gc2VsZjtcbiAgICB9XG4gIH0pO1xuXG4gIC8qKlxuICAgKiBpZGVudGlmeSBjb21tYW5kXG4gICAqXG4gICAqIE92ZXJ3cml0ZXMgYWxsIGludGVybmFsIGRhdGEgd2l0aCB0aGUgcGFyc2VkIG91dHB1dFxuICAgKiB3aGljaCBpcyBtb3JlIGFjY3VyYXRlIHRoYW4gdGhlIGZhc3Qgc2hvcnRjdXRcbiAgICogZ2V0dGVycy5cbiAgICovXG5cbiAgcHJvdG8uaWRlbnRpZnkgPSBmdW5jdGlvbiBpZGVudGlmeSAob3B0cywgY2FsbGJhY2spIHtcbiAgICAvLyBpZGVudGlmeSB3aXRoIHBhdHRlcm5cbiAgICBpZiAodHlwZW9mKG9wdHMpID09PSAnc3RyaW5nJykge1xuICAgICAgb3B0cyA9IHtcbiAgICAgICAgZm9ybWF0OiBvcHRzXG4gICAgICB9XG4gICAgfVxuICAgIGlmICghY2FsbGJhY2spIGNhbGxiYWNrID0gb3B0cywgb3B0cyA9IHt9O1xuICAgIGlmICghY2FsbGJhY2spIHJldHVybiB0aGlzO1xuICAgIGlmIChvcHRzICYmIG9wdHMuZm9ybWF0KSByZXR1cm4gaWRlbnRpZnlQYXR0ZXJuLmNhbGwodGhpcywgb3B0cywgY2FsbGJhY2spO1xuXG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgaWYgKElERU5USUZJRUQgPT09IHNlbGYuX2lkZW50aWZ5U3RhdGUpIHtcbiAgICAgIGNhbGxiYWNrLmNhbGwoc2VsZiwgbnVsbCwgc2VsZi5kYXRhKTtcbiAgICAgIHJldHVybiBzZWxmO1xuICAgIH1cblxuICAgIHNlbGYub24oJ2lkZW50aWZ5JywgY2FsbGJhY2spO1xuXG4gICAgaWYgKElERU5USUZZSU5HID09PSBzZWxmLl9pZGVudGlmeVN0YXRlKSB7XG4gICAgICByZXR1cm4gc2VsZjtcbiAgICB9XG5cbiAgICBzZWxmLl9pZGVudGlmeVN0YXRlID0gSURFTlRJRllJTkc7XG5cbiAgICBzZWxmLmJ1ZmZlclN0cmVhbSA9ICEhb3B0cy5idWZmZXJTdHJlYW07XG5cbiAgICB2YXIgYXJncyA9IG1ha2VBcmdzKHNlbGYsIHsgdmVyYm9zZTogdHJ1ZSB9KTtcblxuICAgIHNlbGYuX2V4ZWMoYXJncywgZnVuY3Rpb24gKGVyciwgc3Rkb3V0LCBzdGRlcnIsIGNtZCkge1xuICAgICAgaWYgKGVycikge1xuICAgICAgICBzZWxmLmVtaXQoJ2lkZW50aWZ5JywgZXJyLCBzZWxmLmRhdGEsIHN0ZG91dCwgc3RkZXJyLCBjbWQpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGVyciA9IHBhcnNlKHN0ZG91dCwgc2VsZik7XG5cbiAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgc2VsZi5lbWl0KCdpZGVudGlmeScsIGVyciwgc2VsZi5kYXRhLCBzdGRvdXQsIHN0ZGVyciwgY21kKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBzZWxmLmRhdGEucGF0aCA9IHNlbGYuc291cmNlO1xuXG4gICAgICBzZWxmLmVtaXQoJ2lkZW50aWZ5JywgbnVsbCwgc2VsZi5kYXRhKTtcbiAgICAgIHNlbGYuX2lkZW50aWZ5U3RhdGUgPSBJREVOVElGSUVEO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHNlbGY7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBpZGVudGlmeSB3aXRoIHBhdHRlcm5cbiAgICpcbiAgICogRXhlY3V0ZSBgaWRlbnRpZnkgLWZvcm1hdGAgd2l0aCBjdXN0b20gcGF0dGVyblxuICAgKi9cblxuICBmdW5jdGlvbiBpZGVudGlmeVBhdHRlcm4gKG9wdHMsIGNhbGxiYWNrKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgc2VsZi5idWZmZXJTdHJlYW0gPSAhIW9wdHMuYnVmZmVyU3RyZWFtO1xuXG4gICAgdmFyIGFyZ3MgPSBtYWtlQXJncyhzZWxmLCBvcHRzKTtcbiAgICBzZWxmLl9leGVjKGFyZ3MsIGZ1bmN0aW9uIChlcnIsIHN0ZG91dCwgc3RkZXJyLCBjbWQpIHtcbiAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgcmV0dXJuIGNhbGxiYWNrLmNhbGwoc2VsZiwgZXJyLCB1bmRlZmluZWQsIHN0ZG91dCwgc3RkZXJyLCBjbWQpO1xuICAgICAgfVxuXG4gICAgICBjYWxsYmFjay5jYWxsKHNlbGYsIGVyciwgKHN0ZG91dHx8JycpLnRyaW0oKSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gc2VsZjtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIFBhcnNlcyBgaWRlbnRpZnlgIHJlc3BvbnNlcy5cbiAgICpcbiAgICogQHBhcmFtIHtTdHJpbmd9IHN0ZG91dFxuICAgKiBAcGFyYW0ge0dtfSBzZWxmXG4gICAqIEByZXR1cm4ge0Vycm9yfSBbb3B0aW9uYWxseV1cbiAgICovXG5cbiAgZnVuY3Rpb24gcGFyc2UgKHN0ZG91dCwgc2VsZikge1xuICAgIC8vIG5vcm1hbGl6ZVxuICAgIHZhciBwYXJ0cyA9IChzdGRvdXR8fFwiXCIpLnRyaW0oKS5yZXBsYWNlKC9cXHJcXG58XFxyL2csIFwiXFxuXCIpLnNwbGl0KFwiXFxuXCIpO1xuXG4gICAgLy8gc2tpcCB0aGUgZmlyc3QgbGluZSAoaXRzIGp1c3QgdGhlIGZpbGVuYW1lKVxuICAgIHBhcnRzLnNoaWZ0KCk7XG5cbiAgICB0cnkge1xuICAgICAgdmFyIGxlbiA9IHBhcnRzLmxlbmd0aFxuICAgICAgICAsIHJneDEgPSAvXiggKikoLis/KTogKC4qKSQvIC8vIGtleTogdmFsXG4gICAgICAgICwgcmd4MiA9IC9eKCAqKSguKz8pOiQvICAgICAgLy8ga2V5OiBiZWdpbiBuZXN0ZWQgb2JqZWN0XG4gICAgICAgICwgb3V0ID0geyBpbmRlbnQ6IHt9IH1cbiAgICAgICAgLCBsZXZlbCA9IG51bGxcbiAgICAgICAgLCBsYXN0a2V5XG4gICAgICAgICwgaSA9IDBcbiAgICAgICAgLCByZXNcbiAgICAgICAgLCBvXG5cbiAgICAgIGZvciAoOyBpIDwgbGVuOyArK2kpIHtcbiAgICAgICAgcmVzID0gcmd4MS5leGVjKHBhcnRzW2ldKSB8fCByZ3gyLmV4ZWMocGFydHNbaV0pO1xuICAgICAgICBpZiAoIXJlcykgY29udGludWU7XG5cbiAgICAgICAgdmFyIGluZGVudCA9IHJlc1sxXS5sZW5ndGhcbiAgICAgICAgICAsIGtleSA9IHJlc1syXSA/IHJlc1syXS50cmltKCkgOiAnJztcblxuICAgICAgICBpZiAoJ0ltYWdlJyA9PSBrZXkgfHwgJ1dhcm5pbmcnID09IGtleSkgY29udGludWU7XG5cbiAgICAgICAgdmFyIHZhbCA9IHJlc1szXSA/IHJlc1szXS50cmltKCkgOiBudWxsO1xuXG4gICAgICAgIC8vIGZpcnN0IGl0ZXJhdGlvbj9cbiAgICAgICAgaWYgKG51bGwgPT09IGxldmVsKSB7XG4gICAgICAgICAgbGV2ZWwgPSBpbmRlbnQ7XG4gICAgICAgICAgbyA9IG91dC5yb290ID0gb3V0LmluZGVudFtsZXZlbF0gPSBzZWxmLmRhdGE7XG4gICAgICAgIH0gZWxzZSBpZiAoaW5kZW50IDwgbGV2ZWwpIHtcbiAgICAgICAgICAvLyBvdXRkZW50XG4gICAgICAgICAgaWYgKCEoaW5kZW50IGluIG91dC5pbmRlbnQpKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgbyA9IG91dC5pbmRlbnRbaW5kZW50XTtcbiAgICAgICAgfSBlbHNlIGlmIChpbmRlbnQgPiBsZXZlbCkge1xuICAgICAgICAgIC8vIGRyb3BwaW5nIGludG8gYSBuZXN0ZWQgb2JqZWN0XG4gICAgICAgICAgb3V0LmluZGVudFtsZXZlbF0gPSBvO1xuICAgICAgICAgIC8vIHdpZXJkIGZvcm1hdCwga2V5L3ZhbCBwYWlyIHdpdGggbmVzdGVkIGNoaWxkcmVuLiBkaXNjYXJkIHRoZSB2YWxcbiAgICAgICAgICBvID0gb1tsYXN0a2V5XSA9IHt9O1xuICAgICAgICB9XG5cbiAgICAgICAgbGV2ZWwgPSBpbmRlbnQ7XG5cbiAgICAgICAgaWYgKHZhbCkge1xuICAgICAgICAgIG9ba2V5XSA9IHZhbDtcblxuICAgICAgICAgIGlmIChrZXkgaW4gaGVscGVyKSB7XG4gICAgICAgICAgICBoZWxwZXJba2V5XShvLCB2YWwpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGxhc3RrZXkgPSBrZXk7XG4gICAgICB9XG5cbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGVyci5tZXNzYWdlID0gZXJyLm1lc3NhZ2UgKyBcIlxcblxcbiAgSWRlbnRpZnkgc3Rkb3V0OlxcbiAgXCIgKyBzdGRvdXQ7XG4gICAgICByZXR1cm4gZXJyO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYW4gYXJndW1lbnQgYXJyYXkgZm9yIHRoZSBpZGVudGlmeSBjb21tYW5kLlxuICAgKlxuICAgKiBAcGFyYW0ge2dtfSBzZWxmXG4gICAqIEBwYXJhbSB7T2JqZWN0fSB2YWxcbiAgICogQHJldHVybiB7QXJyYXl9XG4gICAqL1xuXG4gIGZ1bmN0aW9uIG1ha2VBcmdzIChzZWxmLCB2YWwpIHtcbiAgICB2YXIgYXJncyA9IFtcbiAgICAgICAgJ2lkZW50aWZ5J1xuICAgICAgLCAnLXBpbmcnXG4gICAgXTtcblxuICAgIGlmICh2YWwuZm9ybWF0KSB7XG4gICAgICBhcmdzLnB1c2goJy1mb3JtYXQnLCB2YWwuZm9ybWF0KTtcbiAgICB9XG5cbiAgICBpZiAodmFsLnZlcmJvc2UpIHtcbiAgICAgIGFyZ3MucHVzaCgnLXZlcmJvc2UnKTtcbiAgICB9XG5cbiAgICBhcmdzID0gYXJncy5jb25jYXQoc2VsZi5zcmMoKSk7XG4gICAgcmV0dXJuIGFyZ3M7XG4gIH1cblxuICAvKipcbiAgICogTWFwIGV4aWYgb3JpZW50YXRpb24gY29kZXMgdG8gb3JpZW50YXRpb24gbmFtZXMuXG4gICAqL1xuXG4gIHZhciBvcmllbnRhdGlvbnMgPSB7XG4gICAgICAnMSc6ICdUb3BMZWZ0J1xuICAgICwgJzInOiAnVG9wUmlnaHQnXG4gICAgLCAnMyc6ICdCb3R0b21SaWdodCdcbiAgICAsICc0JzogJ0JvdHRvbUxlZnQnXG4gICAgLCAnNSc6ICdMZWZ0VG9wJ1xuICAgICwgJzYnOiAnUmlnaHRUb3AnXG4gICAgLCAnNyc6ICdSaWdodEJvdHRvbSdcbiAgICAsICc4JzogJ0xlZnRCb3R0b20nXG4gIH1cblxuICAvKipcbiAgICogaWRlbnRpZnkgLXZlcmJvc2UgaGVscGVyc1xuICAgKi9cblxuICB2YXIgaGVscGVyID0gZ20uaWRlbnRpZnlIZWxwZXJzID0ge307XG5cbiAgaGVscGVyLkdlb21ldHJ5ID0gZnVuY3Rpb24gR2VvbWV0cnkgKG8sIHZhbCkge1xuICAgIC8vIFdlIG9ubHkgd2FudCB0aGUgc2l6ZSBvZiB0aGUgZmlyc3QgZnJhbWUuXG4gICAgLy8gRWFjaCBmcmFtZSBpcyBzZXBhcmF0ZWQgYnkgYSBzcGFjZS5cbiAgICB2YXIgc3BsaXQgPSB2YWwuc3BsaXQoXCIgXCIpLnNoaWZ0KCkuc3BsaXQoXCJ4XCIpO1xuICAgIHZhciB3aWR0aCA9IHBhcnNlSW50KHNwbGl0WzBdLCAxMCk7XG4gICAgdmFyIGhlaWdodCA9IHBhcnNlSW50KHNwbGl0WzFdLCAxMCk7XG4gICAgaWYgKG8uc2l6ZSAmJiBvLnNpemUud2lkdGggJiYgby5zaXplLmhlaWdodCkge1xuICAgICAgaWYgKHdpZHRoID4gby5zaXplLndpZHRoKSBvLnNpemUud2lkdGggPSB3aWR0aDtcbiAgICAgIGlmIChoZWlnaHQgPiBvLnNpemUuaGVpZ2h0KSBvLnNpemUuaGVpZ2h0ID0gaGVpZ2h0O1xuICAgIH0gZWxzZSB7XG4gICAgICBvLnNpemUgPSB7XG4gICAgICAgIHdpZHRoOiAgd2lkdGgsXG4gICAgICAgIGhlaWdodDogaGVpZ2h0XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIGhlbHBlci5Gb3JtYXQgPSBmdW5jdGlvbiBGb3JtYXQgKG8sIHZhbCkge1xuICAgIG8uZm9ybWF0ID0gdmFsLnNwbGl0KFwiIFwiKVswXTtcbiAgfTtcblxuICBoZWxwZXIuRGVwdGggPSBmdW5jdGlvbiBEZXB0aCAobywgdmFsKSB7XG4gICAgby5kZXB0aCA9IHBhcnNlSW50KHZhbCwgMTApO1xuICB9O1xuXG4gIGhlbHBlci5Db2xvcnMgPSBmdW5jdGlvbiBDb2xvcnMgKG8sIHZhbCkge1xuICAgIG8uY29sb3IgPSBwYXJzZUludCh2YWwsIDEwKTtcbiAgfTtcblxuICBoZWxwZXIuT3JpZW50YXRpb24gPSBmdW5jdGlvbiBPcmllbnRhdGlvbiAobywgdmFsKSB7XG4gICAgaWYgKHZhbCBpbiBvcmllbnRhdGlvbnMpIHtcbiAgICAgIG9bJ1Byb2ZpbGUtRVhJRiddIHx8IChvWydQcm9maWxlLUVYSUYnXSA9IHt9KTtcbiAgICAgIG9bJ1Byb2ZpbGUtRVhJRiddLk9yaWVudGF0aW9uID0gdmFsO1xuICAgICAgby5PcmllbnRhdGlvbiA9IG9yaWVudGF0aW9uc1t2YWxdO1xuICAgIH0gZWxzZSB7XG4gICAgICBvLk9yaWVudGF0aW9uID0gdmFsIHx8ICdVbmtub3duJztcbiAgICB9XG4gIH07XG59XG4iLCIvLyBtb250YWdlXG5cbi8qKlxuICogTW9udGFnZSBpbWFnZXMgbmV4dCB0byBlYWNoIG90aGVyIHVzaW5nIHRoZSBgbW9udGFnZWAgY29tbWFuZCBpbiBncmFwaGljc21hZ2ljay5cbiAqXG4gKiBnbSgnL3BhdGgvdG8vaW1hZ2UuanBnJylcbiAqIC5tb250YWdlKCcvcGF0aC90by9zZWNvbmRfaW1hZ2UuanBnJylcbiAqIC5nZW9tZXRyeSgnKzEwMCsxNTAnKVxuICogLndyaXRlKCcvcGF0aC90by9tb250YWdlLnBuZycsIGZ1bmN0aW9uKGVycikge1xuICogICBpZighZXJyKSBjb25zb2xlLmxvZyhcIldyaXR0ZW4gbW9udGFnZSBpbWFnZS5cIik7XG4gKiB9KTtcbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gb3RoZXIgIFBhdGggdG8gdGhlIGltYWdlIHRoYXQgY29udGFpbnMgdGhlIGNoYW5nZXMuXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzID0gZnVuY3Rpb24ocHJvdG8pIHtcbiAgICBwcm90by5tb250YWdlID0gZnVuY3Rpb24ob3RoZXIpIHtcbiAgICAgICAgdGhpcy5pbihvdGhlcik7XG5cbiAgICAgICAgdGhpcy5zdWJDb21tYW5kKFwibW9udGFnZVwiKTtcblxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG59XG4iLCJcbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0cyA9IGZ1bmN0aW9uIChwcm90bykge1xuICBwcm90by5fb3B0aW9ucyA9IHt9O1xuXG4gIHByb3RvLm9wdGlvbnMgPSBmdW5jdGlvbiBzZXRPcHRpb25zIChvcHRpb25zKSB7XG4gICAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhvcHRpb25zKVxuICAgICAgLCBpID0ga2V5cy5sZW5ndGhcbiAgICAgICwga2V5XG5cbiAgICB3aGlsZSAoaS0tKSB7XG4gICAgICBrZXkgPSBrZXlzW2ldO1xuICAgICAgdGhpcy5fb3B0aW9uc1trZXldID0gb3B0aW9uc1trZXldO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9XG59XG4iLCJcbi8qKlxuICogRXNjYXBlIHRoZSBnaXZlbiBzaGVsbCBgYXJnYC5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gYXJnXG4gKiBAcmV0dXJuIHtTdHJpbmd9XG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbmV4cG9ydHMuZXNjYXBlID0gZnVuY3Rpb24gZXNjYXBlIChhcmcpIHtcbiAgcmV0dXJuICdcIicgKyBTdHJpbmcoYXJnKS50cmltKCkucmVwbGFjZSgvXCIvZywgJ1xcXFxcIicpICsgJ1wiJztcbn07XG5cbmV4cG9ydHMudW5lc2NhcGUgPSBmdW5jdGlvbiBlc2NhcGUgKGFyZykge1xuICAgIHJldHVybiBTdHJpbmcoYXJnKS50cmltKCkucmVwbGFjZSgvXCIvZywgXCJcIik7XG59O1xuXG5leHBvcnRzLmFyZ3NUb0FycmF5ID0gZnVuY3Rpb24gKGFyZ3MpIHtcbiAgdmFyIGFyciA9IFtdO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDw9IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykge1xuICAgIGlmICgndW5kZWZpbmVkJyAhPSB0eXBlb2YgYXJndW1lbnRzW2ldKVxuICAgICAgYXJyLnB1c2goYXJndW1lbnRzW2ldKTtcbiAgfVxuXG4gIHJldHVybiBhcnI7XG59O1xuXG5leHBvcnRzLmlzVXRpbCA9IGZ1bmN0aW9uICh2KSB7XG5cdHZhciB0eSA9ICdvYmplY3QnO1xuXHRzd2l0Y2ggKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh2KSkge1xuXHRjYXNlICdbb2JqZWN0IFN0cmluZ10nOlxuXHRcdHR5ID0gJ1N0cmluZyc7XG5cdFx0YnJlYWs7XG5cdGNhc2UgJ1tvYmplY3QgQXJyYXldJzpcblx0XHR0eSA9ICdBcnJheSc7XG5cdFx0YnJlYWs7XG5cdGNhc2UgJ1tvYmplY3QgQm9vbGVhbl0nOlxuXHRcdHR5ID0gJ0Jvb2xlYW4nO1xuXHRcdGJyZWFrO1xuXHR9XG5cdHJldHVybiB0eTtcbn0iLCIndXNlIHN0cmljdCdcblxudmFyIGZzID0gcmVxdWlyZSgnZnMnKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNsb25lKGZzKVxuXG5mdW5jdGlvbiBjbG9uZSAob2JqKSB7XG4gIGlmIChvYmogPT09IG51bGwgfHwgdHlwZW9mIG9iaiAhPT0gJ29iamVjdCcpXG4gICAgcmV0dXJuIG9ialxuXG4gIGlmIChvYmogaW5zdGFuY2VvZiBPYmplY3QpXG4gICAgdmFyIGNvcHkgPSB7IF9fcHJvdG9fXzogb2JqLl9fcHJvdG9fXyB9XG4gIGVsc2VcbiAgICB2YXIgY29weSA9IE9iamVjdC5jcmVhdGUobnVsbClcblxuICBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhvYmopLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjb3B5LCBrZXksIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqLCBrZXkpKVxuICB9KVxuXG4gIHJldHVybiBjb3B5XG59XG4iLCJ2YXIgZnMgPSByZXF1aXJlKCdmcycpXG52YXIgcG9seWZpbGxzID0gcmVxdWlyZSgnLi9wb2x5ZmlsbHMuanMnKVxudmFyIGxlZ2FjeSA9IHJlcXVpcmUoJy4vbGVnYWN5LXN0cmVhbXMuanMnKVxudmFyIHF1ZXVlID0gW11cblxudmFyIHV0aWwgPSByZXF1aXJlKCd1dGlsJylcblxuZnVuY3Rpb24gbm9vcCAoKSB7fVxuXG52YXIgZGVidWcgPSBub29wXG5pZiAodXRpbC5kZWJ1Z2xvZylcbiAgZGVidWcgPSB1dGlsLmRlYnVnbG9nKCdnZnM0JylcbmVsc2UgaWYgKC9cXGJnZnM0XFxiL2kudGVzdChwcm9jZXNzLmVudi5OT0RFX0RFQlVHIHx8ICcnKSlcbiAgZGVidWcgPSBmdW5jdGlvbigpIHtcbiAgICB2YXIgbSA9IHV0aWwuZm9ybWF0LmFwcGx5KHV0aWwsIGFyZ3VtZW50cylcbiAgICBtID0gJ0dGUzQ6ICcgKyBtLnNwbGl0KC9cXG4vKS5qb2luKCdcXG5HRlM0OiAnKVxuICAgIGNvbnNvbGUuZXJyb3IobSlcbiAgfVxuXG5pZiAoL1xcYmdmczRcXGIvaS50ZXN0KHByb2Nlc3MuZW52Lk5PREVfREVCVUcgfHwgJycpKSB7XG4gIHByb2Nlc3Mub24oJ2V4aXQnLCBmdW5jdGlvbigpIHtcbiAgICBkZWJ1ZyhxdWV1ZSlcbiAgICByZXF1aXJlKCdhc3NlcnQnKS5lcXVhbChxdWV1ZS5sZW5ndGgsIDApXG4gIH0pXG59XG5cbm1vZHVsZS5leHBvcnRzID0gcGF0Y2gocmVxdWlyZSgnLi9mcy5qcycpKVxuaWYgKHByb2Nlc3MuZW52LlRFU1RfR1JBQ0VGVUxfRlNfR0xPQkFMX1BBVENIKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcGF0Y2goZnMpXG59XG5cbi8vIEFsd2F5cyBwYXRjaCBmcy5jbG9zZS9jbG9zZVN5bmMsIGJlY2F1c2Ugd2Ugd2FudCB0b1xuLy8gcmV0cnkoKSB3aGVuZXZlciBhIGNsb3NlIGhhcHBlbnMgKmFueXdoZXJlKiBpbiB0aGUgcHJvZ3JhbS5cbi8vIFRoaXMgaXMgZXNzZW50aWFsIHdoZW4gbXVsdGlwbGUgZ3JhY2VmdWwtZnMgaW5zdGFuY2VzIGFyZVxuLy8gaW4gcGxheSBhdCB0aGUgc2FtZSB0aW1lLlxubW9kdWxlLmV4cG9ydHMuY2xvc2UgPVxuZnMuY2xvc2UgPSAoZnVuY3Rpb24gKGZzJGNsb3NlKSB7IHJldHVybiBmdW5jdGlvbiAoZmQsIGNiKSB7XG4gIHJldHVybiBmcyRjbG9zZS5jYWxsKGZzLCBmZCwgZnVuY3Rpb24gKGVycikge1xuICAgIGlmICghZXJyKVxuICAgICAgcmV0cnkoKVxuXG4gICAgaWYgKHR5cGVvZiBjYiA9PT0gJ2Z1bmN0aW9uJylcbiAgICAgIGNiLmFwcGx5KHRoaXMsIGFyZ3VtZW50cylcbiAgfSlcbn19KShmcy5jbG9zZSlcblxubW9kdWxlLmV4cG9ydHMuY2xvc2VTeW5jID1cbmZzLmNsb3NlU3luYyA9IChmdW5jdGlvbiAoZnMkY2xvc2VTeW5jKSB7IHJldHVybiBmdW5jdGlvbiAoZmQpIHtcbiAgLy8gTm90ZSB0aGF0IGdyYWNlZnVsLWZzIGFsc28gcmV0cmllcyB3aGVuIGZzLmNsb3NlU3luYygpIGZhaWxzLlxuICAvLyBMb29rcyBsaWtlIGEgYnVnIHRvIG1lLCBhbHRob3VnaCBpdCdzIHByb2JhYmx5IGEgaGFybWxlc3Mgb25lLlxuICB2YXIgcnZhbCA9IGZzJGNsb3NlU3luYy5hcHBseShmcywgYXJndW1lbnRzKVxuICByZXRyeSgpXG4gIHJldHVybiBydmFsXG59fSkoZnMuY2xvc2VTeW5jKVxuXG5mdW5jdGlvbiBwYXRjaCAoZnMpIHtcbiAgLy8gRXZlcnl0aGluZyB0aGF0IHJlZmVyZW5jZXMgdGhlIG9wZW4oKSBmdW5jdGlvbiBuZWVkcyB0byBiZSBpbiBoZXJlXG4gIHBvbHlmaWxscyhmcylcbiAgZnMuZ3JhY2VmdWxpZnkgPSBwYXRjaFxuICBmcy5GaWxlUmVhZFN0cmVhbSA9IFJlYWRTdHJlYW07ICAvLyBMZWdhY3kgbmFtZS5cbiAgZnMuRmlsZVdyaXRlU3RyZWFtID0gV3JpdGVTdHJlYW07ICAvLyBMZWdhY3kgbmFtZS5cbiAgZnMuY3JlYXRlUmVhZFN0cmVhbSA9IGNyZWF0ZVJlYWRTdHJlYW1cbiAgZnMuY3JlYXRlV3JpdGVTdHJlYW0gPSBjcmVhdGVXcml0ZVN0cmVhbVxuICB2YXIgZnMkcmVhZEZpbGUgPSBmcy5yZWFkRmlsZVxuICBmcy5yZWFkRmlsZSA9IHJlYWRGaWxlXG4gIGZ1bmN0aW9uIHJlYWRGaWxlIChwYXRoLCBvcHRpb25zLCBjYikge1xuICAgIGlmICh0eXBlb2Ygb3B0aW9ucyA9PT0gJ2Z1bmN0aW9uJylcbiAgICAgIGNiID0gb3B0aW9ucywgb3B0aW9ucyA9IG51bGxcblxuICAgIHJldHVybiBnbyRyZWFkRmlsZShwYXRoLCBvcHRpb25zLCBjYilcblxuICAgIGZ1bmN0aW9uIGdvJHJlYWRGaWxlIChwYXRoLCBvcHRpb25zLCBjYikge1xuICAgICAgcmV0dXJuIGZzJHJlYWRGaWxlKHBhdGgsIG9wdGlvbnMsIGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgaWYgKGVyciAmJiAoZXJyLmNvZGUgPT09ICdFTUZJTEUnIHx8IGVyci5jb2RlID09PSAnRU5GSUxFJykpXG4gICAgICAgICAgZW5xdWV1ZShbZ28kcmVhZEZpbGUsIFtwYXRoLCBvcHRpb25zLCBjYl1dKVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICBpZiAodHlwZW9mIGNiID09PSAnZnVuY3Rpb24nKVxuICAgICAgICAgICAgY2IuYXBwbHkodGhpcywgYXJndW1lbnRzKVxuICAgICAgICAgIHJldHJ5KClcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICB2YXIgZnMkd3JpdGVGaWxlID0gZnMud3JpdGVGaWxlXG4gIGZzLndyaXRlRmlsZSA9IHdyaXRlRmlsZVxuICBmdW5jdGlvbiB3cml0ZUZpbGUgKHBhdGgsIGRhdGEsIG9wdGlvbnMsIGNiKSB7XG4gICAgaWYgKHR5cGVvZiBvcHRpb25zID09PSAnZnVuY3Rpb24nKVxuICAgICAgY2IgPSBvcHRpb25zLCBvcHRpb25zID0gbnVsbFxuXG4gICAgcmV0dXJuIGdvJHdyaXRlRmlsZShwYXRoLCBkYXRhLCBvcHRpb25zLCBjYilcblxuICAgIGZ1bmN0aW9uIGdvJHdyaXRlRmlsZSAocGF0aCwgZGF0YSwgb3B0aW9ucywgY2IpIHtcbiAgICAgIHJldHVybiBmcyR3cml0ZUZpbGUocGF0aCwgZGF0YSwgb3B0aW9ucywgZnVuY3Rpb24gKGVycikge1xuICAgICAgICBpZiAoZXJyICYmIChlcnIuY29kZSA9PT0gJ0VNRklMRScgfHwgZXJyLmNvZGUgPT09ICdFTkZJTEUnKSlcbiAgICAgICAgICBlbnF1ZXVlKFtnbyR3cml0ZUZpbGUsIFtwYXRoLCBkYXRhLCBvcHRpb25zLCBjYl1dKVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICBpZiAodHlwZW9mIGNiID09PSAnZnVuY3Rpb24nKVxuICAgICAgICAgICAgY2IuYXBwbHkodGhpcywgYXJndW1lbnRzKVxuICAgICAgICAgIHJldHJ5KClcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICB2YXIgZnMkYXBwZW5kRmlsZSA9IGZzLmFwcGVuZEZpbGVcbiAgaWYgKGZzJGFwcGVuZEZpbGUpXG4gICAgZnMuYXBwZW5kRmlsZSA9IGFwcGVuZEZpbGVcbiAgZnVuY3Rpb24gYXBwZW5kRmlsZSAocGF0aCwgZGF0YSwgb3B0aW9ucywgY2IpIHtcbiAgICBpZiAodHlwZW9mIG9wdGlvbnMgPT09ICdmdW5jdGlvbicpXG4gICAgICBjYiA9IG9wdGlvbnMsIG9wdGlvbnMgPSBudWxsXG5cbiAgICByZXR1cm4gZ28kYXBwZW5kRmlsZShwYXRoLCBkYXRhLCBvcHRpb25zLCBjYilcblxuICAgIGZ1bmN0aW9uIGdvJGFwcGVuZEZpbGUgKHBhdGgsIGRhdGEsIG9wdGlvbnMsIGNiKSB7XG4gICAgICByZXR1cm4gZnMkYXBwZW5kRmlsZShwYXRoLCBkYXRhLCBvcHRpb25zLCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgIGlmIChlcnIgJiYgKGVyci5jb2RlID09PSAnRU1GSUxFJyB8fCBlcnIuY29kZSA9PT0gJ0VORklMRScpKVxuICAgICAgICAgIGVucXVldWUoW2dvJGFwcGVuZEZpbGUsIFtwYXRoLCBkYXRhLCBvcHRpb25zLCBjYl1dKVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICBpZiAodHlwZW9mIGNiID09PSAnZnVuY3Rpb24nKVxuICAgICAgICAgICAgY2IuYXBwbHkodGhpcywgYXJndW1lbnRzKVxuICAgICAgICAgIHJldHJ5KClcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICB2YXIgZnMkcmVhZGRpciA9IGZzLnJlYWRkaXJcbiAgZnMucmVhZGRpciA9IHJlYWRkaXJcbiAgZnVuY3Rpb24gcmVhZGRpciAocGF0aCwgb3B0aW9ucywgY2IpIHtcbiAgICB2YXIgYXJncyA9IFtwYXRoXVxuICAgIGlmICh0eXBlb2Ygb3B0aW9ucyAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgYXJncy5wdXNoKG9wdGlvbnMpXG4gICAgfSBlbHNlIHtcbiAgICAgIGNiID0gb3B0aW9uc1xuICAgIH1cbiAgICBhcmdzLnB1c2goZ28kcmVhZGRpciRjYilcblxuICAgIHJldHVybiBnbyRyZWFkZGlyKGFyZ3MpXG5cbiAgICBmdW5jdGlvbiBnbyRyZWFkZGlyJGNiIChlcnIsIGZpbGVzKSB7XG4gICAgICBpZiAoZmlsZXMgJiYgZmlsZXMuc29ydClcbiAgICAgICAgZmlsZXMuc29ydCgpXG5cbiAgICAgIGlmIChlcnIgJiYgKGVyci5jb2RlID09PSAnRU1GSUxFJyB8fCBlcnIuY29kZSA9PT0gJ0VORklMRScpKVxuICAgICAgICBlbnF1ZXVlKFtnbyRyZWFkZGlyLCBbYXJnc11dKVxuICAgICAgZWxzZSB7XG4gICAgICAgIGlmICh0eXBlb2YgY2IgPT09ICdmdW5jdGlvbicpXG4gICAgICAgICAgY2IuYXBwbHkodGhpcywgYXJndW1lbnRzKVxuICAgICAgICByZXRyeSgpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gZ28kcmVhZGRpciAoYXJncykge1xuICAgIHJldHVybiBmcyRyZWFkZGlyLmFwcGx5KGZzLCBhcmdzKVxuICB9XG5cbiAgaWYgKHByb2Nlc3MudmVyc2lvbi5zdWJzdHIoMCwgNCkgPT09ICd2MC44Jykge1xuICAgIHZhciBsZWdTdHJlYW1zID0gbGVnYWN5KGZzKVxuICAgIFJlYWRTdHJlYW0gPSBsZWdTdHJlYW1zLlJlYWRTdHJlYW1cbiAgICBXcml0ZVN0cmVhbSA9IGxlZ1N0cmVhbXMuV3JpdGVTdHJlYW1cbiAgfVxuXG4gIHZhciBmcyRSZWFkU3RyZWFtID0gZnMuUmVhZFN0cmVhbVxuICBSZWFkU3RyZWFtLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoZnMkUmVhZFN0cmVhbS5wcm90b3R5cGUpXG4gIFJlYWRTdHJlYW0ucHJvdG90eXBlLm9wZW4gPSBSZWFkU3RyZWFtJG9wZW5cblxuICB2YXIgZnMkV3JpdGVTdHJlYW0gPSBmcy5Xcml0ZVN0cmVhbVxuICBXcml0ZVN0cmVhbS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKGZzJFdyaXRlU3RyZWFtLnByb3RvdHlwZSlcbiAgV3JpdGVTdHJlYW0ucHJvdG90eXBlLm9wZW4gPSBXcml0ZVN0cmVhbSRvcGVuXG5cbiAgZnMuUmVhZFN0cmVhbSA9IFJlYWRTdHJlYW1cbiAgZnMuV3JpdGVTdHJlYW0gPSBXcml0ZVN0cmVhbVxuXG4gIGZ1bmN0aW9uIFJlYWRTdHJlYW0gKHBhdGgsIG9wdGlvbnMpIHtcbiAgICBpZiAodGhpcyBpbnN0YW5jZW9mIFJlYWRTdHJlYW0pXG4gICAgICByZXR1cm4gZnMkUmVhZFN0cmVhbS5hcHBseSh0aGlzLCBhcmd1bWVudHMpLCB0aGlzXG4gICAgZWxzZVxuICAgICAgcmV0dXJuIFJlYWRTdHJlYW0uYXBwbHkoT2JqZWN0LmNyZWF0ZShSZWFkU3RyZWFtLnByb3RvdHlwZSksIGFyZ3VtZW50cylcbiAgfVxuXG4gIGZ1bmN0aW9uIFJlYWRTdHJlYW0kb3BlbiAoKSB7XG4gICAgdmFyIHRoYXQgPSB0aGlzXG4gICAgb3Blbih0aGF0LnBhdGgsIHRoYXQuZmxhZ3MsIHRoYXQubW9kZSwgZnVuY3Rpb24gKGVyciwgZmQpIHtcbiAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgaWYgKHRoYXQuYXV0b0Nsb3NlKVxuICAgICAgICAgIHRoYXQuZGVzdHJveSgpXG5cbiAgICAgICAgdGhhdC5lbWl0KCdlcnJvcicsIGVycilcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoYXQuZmQgPSBmZFxuICAgICAgICB0aGF0LmVtaXQoJ29wZW4nLCBmZClcbiAgICAgICAgdGhhdC5yZWFkKClcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgZnVuY3Rpb24gV3JpdGVTdHJlYW0gKHBhdGgsIG9wdGlvbnMpIHtcbiAgICBpZiAodGhpcyBpbnN0YW5jZW9mIFdyaXRlU3RyZWFtKVxuICAgICAgcmV0dXJuIGZzJFdyaXRlU3RyZWFtLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyksIHRoaXNcbiAgICBlbHNlXG4gICAgICByZXR1cm4gV3JpdGVTdHJlYW0uYXBwbHkoT2JqZWN0LmNyZWF0ZShXcml0ZVN0cmVhbS5wcm90b3R5cGUpLCBhcmd1bWVudHMpXG4gIH1cblxuICBmdW5jdGlvbiBXcml0ZVN0cmVhbSRvcGVuICgpIHtcbiAgICB2YXIgdGhhdCA9IHRoaXNcbiAgICBvcGVuKHRoYXQucGF0aCwgdGhhdC5mbGFncywgdGhhdC5tb2RlLCBmdW5jdGlvbiAoZXJyLCBmZCkge1xuICAgICAgaWYgKGVycikge1xuICAgICAgICB0aGF0LmRlc3Ryb3koKVxuICAgICAgICB0aGF0LmVtaXQoJ2Vycm9yJywgZXJyKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhhdC5mZCA9IGZkXG4gICAgICAgIHRoYXQuZW1pdCgnb3BlbicsIGZkKVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICBmdW5jdGlvbiBjcmVhdGVSZWFkU3RyZWFtIChwYXRoLCBvcHRpb25zKSB7XG4gICAgcmV0dXJuIG5ldyBSZWFkU3RyZWFtKHBhdGgsIG9wdGlvbnMpXG4gIH1cblxuICBmdW5jdGlvbiBjcmVhdGVXcml0ZVN0cmVhbSAocGF0aCwgb3B0aW9ucykge1xuICAgIHJldHVybiBuZXcgV3JpdGVTdHJlYW0ocGF0aCwgb3B0aW9ucylcbiAgfVxuXG4gIHZhciBmcyRvcGVuID0gZnMub3BlblxuICBmcy5vcGVuID0gb3BlblxuICBmdW5jdGlvbiBvcGVuIChwYXRoLCBmbGFncywgbW9kZSwgY2IpIHtcbiAgICBpZiAodHlwZW9mIG1vZGUgPT09ICdmdW5jdGlvbicpXG4gICAgICBjYiA9IG1vZGUsIG1vZGUgPSBudWxsXG5cbiAgICByZXR1cm4gZ28kb3BlbihwYXRoLCBmbGFncywgbW9kZSwgY2IpXG5cbiAgICBmdW5jdGlvbiBnbyRvcGVuIChwYXRoLCBmbGFncywgbW9kZSwgY2IpIHtcbiAgICAgIHJldHVybiBmcyRvcGVuKHBhdGgsIGZsYWdzLCBtb2RlLCBmdW5jdGlvbiAoZXJyLCBmZCkge1xuICAgICAgICBpZiAoZXJyICYmIChlcnIuY29kZSA9PT0gJ0VNRklMRScgfHwgZXJyLmNvZGUgPT09ICdFTkZJTEUnKSlcbiAgICAgICAgICBlbnF1ZXVlKFtnbyRvcGVuLCBbcGF0aCwgZmxhZ3MsIG1vZGUsIGNiXV0pXG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIGlmICh0eXBlb2YgY2IgPT09ICdmdW5jdGlvbicpXG4gICAgICAgICAgICBjYi5hcHBseSh0aGlzLCBhcmd1bWVudHMpXG4gICAgICAgICAgcmV0cnkoKVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmc1xufVxuXG5mdW5jdGlvbiBlbnF1ZXVlIChlbGVtKSB7XG4gIGRlYnVnKCdFTlFVRVVFJywgZWxlbVswXS5uYW1lLCBlbGVtWzFdKVxuICBxdWV1ZS5wdXNoKGVsZW0pXG59XG5cbmZ1bmN0aW9uIHJldHJ5ICgpIHtcbiAgdmFyIGVsZW0gPSBxdWV1ZS5zaGlmdCgpXG4gIGlmIChlbGVtKSB7XG4gICAgZGVidWcoJ1JFVFJZJywgZWxlbVswXS5uYW1lLCBlbGVtWzFdKVxuICAgIGVsZW1bMF0uYXBwbHkobnVsbCwgZWxlbVsxXSlcbiAgfVxufVxuIiwidmFyIFN0cmVhbSA9IHJlcXVpcmUoJ3N0cmVhbScpLlN0cmVhbVxuXG5tb2R1bGUuZXhwb3J0cyA9IGxlZ2FjeVxuXG5mdW5jdGlvbiBsZWdhY3kgKGZzKSB7XG4gIHJldHVybiB7XG4gICAgUmVhZFN0cmVhbTogUmVhZFN0cmVhbSxcbiAgICBXcml0ZVN0cmVhbTogV3JpdGVTdHJlYW1cbiAgfVxuXG4gIGZ1bmN0aW9uIFJlYWRTdHJlYW0gKHBhdGgsIG9wdGlvbnMpIHtcbiAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgUmVhZFN0cmVhbSkpIHJldHVybiBuZXcgUmVhZFN0cmVhbShwYXRoLCBvcHRpb25zKTtcblxuICAgIFN0cmVhbS5jYWxsKHRoaXMpO1xuXG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgdGhpcy5wYXRoID0gcGF0aDtcbiAgICB0aGlzLmZkID0gbnVsbDtcbiAgICB0aGlzLnJlYWRhYmxlID0gdHJ1ZTtcbiAgICB0aGlzLnBhdXNlZCA9IGZhbHNlO1xuXG4gICAgdGhpcy5mbGFncyA9ICdyJztcbiAgICB0aGlzLm1vZGUgPSA0Mzg7IC8qPTA2NjYqL1xuICAgIHRoaXMuYnVmZmVyU2l6ZSA9IDY0ICogMTAyNDtcblxuICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuXG4gICAgLy8gTWl4aW4gb3B0aW9ucyBpbnRvIHRoaXNcbiAgICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG9wdGlvbnMpO1xuICAgIGZvciAodmFyIGluZGV4ID0gMCwgbGVuZ3RoID0ga2V5cy5sZW5ndGg7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICB2YXIga2V5ID0ga2V5c1tpbmRleF07XG4gICAgICB0aGlzW2tleV0gPSBvcHRpb25zW2tleV07XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZW5jb2RpbmcpIHRoaXMuc2V0RW5jb2RpbmcodGhpcy5lbmNvZGluZyk7XG5cbiAgICBpZiAodGhpcy5zdGFydCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAoJ251bWJlcicgIT09IHR5cGVvZiB0aGlzLnN0YXJ0KSB7XG4gICAgICAgIHRocm93IFR5cGVFcnJvcignc3RhcnQgbXVzdCBiZSBhIE51bWJlcicpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuZW5kID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5lbmQgPSBJbmZpbml0eTtcbiAgICAgIH0gZWxzZSBpZiAoJ251bWJlcicgIT09IHR5cGVvZiB0aGlzLmVuZCkge1xuICAgICAgICB0aHJvdyBUeXBlRXJyb3IoJ2VuZCBtdXN0IGJlIGEgTnVtYmVyJyk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLnN0YXJ0ID4gdGhpcy5lbmQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdzdGFydCBtdXN0IGJlIDw9IGVuZCcpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnBvcyA9IHRoaXMuc3RhcnQ7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZmQgIT09IG51bGwpIHtcbiAgICAgIHByb2Nlc3MubmV4dFRpY2soZnVuY3Rpb24oKSB7XG4gICAgICAgIHNlbGYuX3JlYWQoKTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGZzLm9wZW4odGhpcy5wYXRoLCB0aGlzLmZsYWdzLCB0aGlzLm1vZGUsIGZ1bmN0aW9uIChlcnIsIGZkKSB7XG4gICAgICBpZiAoZXJyKSB7XG4gICAgICAgIHNlbGYuZW1pdCgnZXJyb3InLCBlcnIpO1xuICAgICAgICBzZWxmLnJlYWRhYmxlID0gZmFsc2U7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgc2VsZi5mZCA9IGZkO1xuICAgICAgc2VsZi5lbWl0KCdvcGVuJywgZmQpO1xuICAgICAgc2VsZi5fcmVhZCgpO1xuICAgIH0pXG4gIH1cblxuICBmdW5jdGlvbiBXcml0ZVN0cmVhbSAocGF0aCwgb3B0aW9ucykge1xuICAgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBXcml0ZVN0cmVhbSkpIHJldHVybiBuZXcgV3JpdGVTdHJlYW0ocGF0aCwgb3B0aW9ucyk7XG5cbiAgICBTdHJlYW0uY2FsbCh0aGlzKTtcblxuICAgIHRoaXMucGF0aCA9IHBhdGg7XG4gICAgdGhpcy5mZCA9IG51bGw7XG4gICAgdGhpcy53cml0YWJsZSA9IHRydWU7XG5cbiAgICB0aGlzLmZsYWdzID0gJ3cnO1xuICAgIHRoaXMuZW5jb2RpbmcgPSAnYmluYXJ5JztcbiAgICB0aGlzLm1vZGUgPSA0Mzg7IC8qPTA2NjYqL1xuICAgIHRoaXMuYnl0ZXNXcml0dGVuID0gMDtcblxuICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuXG4gICAgLy8gTWl4aW4gb3B0aW9ucyBpbnRvIHRoaXNcbiAgICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG9wdGlvbnMpO1xuICAgIGZvciAodmFyIGluZGV4ID0gMCwgbGVuZ3RoID0ga2V5cy5sZW5ndGg7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICB2YXIga2V5ID0ga2V5c1tpbmRleF07XG4gICAgICB0aGlzW2tleV0gPSBvcHRpb25zW2tleV07XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc3RhcnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKCdudW1iZXInICE9PSB0eXBlb2YgdGhpcy5zdGFydCkge1xuICAgICAgICB0aHJvdyBUeXBlRXJyb3IoJ3N0YXJ0IG11c3QgYmUgYSBOdW1iZXInKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLnN0YXJ0IDwgMCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3N0YXJ0IG11c3QgYmUgPj0gemVybycpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnBvcyA9IHRoaXMuc3RhcnQ7XG4gICAgfVxuXG4gICAgdGhpcy5idXN5ID0gZmFsc2U7XG4gICAgdGhpcy5fcXVldWUgPSBbXTtcblxuICAgIGlmICh0aGlzLmZkID09PSBudWxsKSB7XG4gICAgICB0aGlzLl9vcGVuID0gZnMub3BlbjtcbiAgICAgIHRoaXMuX3F1ZXVlLnB1c2goW3RoaXMuX29wZW4sIHRoaXMucGF0aCwgdGhpcy5mbGFncywgdGhpcy5tb2RlLCB1bmRlZmluZWRdKTtcbiAgICAgIHRoaXMuZmx1c2goKTtcbiAgICB9XG4gIH1cbn1cbiIsInZhciBmcyA9IHJlcXVpcmUoJy4vZnMuanMnKVxudmFyIGNvbnN0YW50cyA9IHJlcXVpcmUoJ2NvbnN0YW50cycpXG5cbnZhciBvcmlnQ3dkID0gcHJvY2Vzcy5jd2RcbnZhciBjd2QgPSBudWxsXG5cbnZhciBwbGF0Zm9ybSA9IHByb2Nlc3MuZW52LkdSQUNFRlVMX0ZTX1BMQVRGT1JNIHx8IHByb2Nlc3MucGxhdGZvcm1cblxucHJvY2Vzcy5jd2QgPSBmdW5jdGlvbigpIHtcbiAgaWYgKCFjd2QpXG4gICAgY3dkID0gb3JpZ0N3ZC5jYWxsKHByb2Nlc3MpXG4gIHJldHVybiBjd2Rcbn1cbnRyeSB7XG4gIHByb2Nlc3MuY3dkKClcbn0gY2F0Y2ggKGVyKSB7fVxuXG52YXIgY2hkaXIgPSBwcm9jZXNzLmNoZGlyXG5wcm9jZXNzLmNoZGlyID0gZnVuY3Rpb24oZCkge1xuICBjd2QgPSBudWxsXG4gIGNoZGlyLmNhbGwocHJvY2VzcywgZClcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBwYXRjaFxuXG5mdW5jdGlvbiBwYXRjaCAoZnMpIHtcbiAgLy8gKHJlLSlpbXBsZW1lbnQgc29tZSB0aGluZ3MgdGhhdCBhcmUga25vd24gYnVzdGVkIG9yIG1pc3NpbmcuXG5cbiAgLy8gbGNobW9kLCBicm9rZW4gcHJpb3IgdG8gMC42LjJcbiAgLy8gYmFjay1wb3J0IHRoZSBmaXggaGVyZS5cbiAgaWYgKGNvbnN0YW50cy5oYXNPd25Qcm9wZXJ0eSgnT19TWU1MSU5LJykgJiZcbiAgICAgIHByb2Nlc3MudmVyc2lvbi5tYXRjaCgvXnYwXFwuNlxcLlswLTJdfF52MFxcLjVcXC4vKSkge1xuICAgIHBhdGNoTGNobW9kKGZzKVxuICB9XG5cbiAgLy8gbHV0aW1lcyBpbXBsZW1lbnRhdGlvbiwgb3Igbm8tb3BcbiAgaWYgKCFmcy5sdXRpbWVzKSB7XG4gICAgcGF0Y2hMdXRpbWVzKGZzKVxuICB9XG5cbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2lzYWFjcy9ub2RlLWdyYWNlZnVsLWZzL2lzc3Vlcy80XG4gIC8vIENob3duIHNob3VsZCBub3QgZmFpbCBvbiBlaW52YWwgb3IgZXBlcm0gaWYgbm9uLXJvb3QuXG4gIC8vIEl0IHNob3VsZCBub3QgZmFpbCBvbiBlbm9zeXMgZXZlciwgYXMgdGhpcyBqdXN0IGluZGljYXRlc1xuICAvLyB0aGF0IGEgZnMgZG9lc24ndCBzdXBwb3J0IHRoZSBpbnRlbmRlZCBvcGVyYXRpb24uXG5cbiAgZnMuY2hvd24gPSBjaG93bkZpeChmcy5jaG93bilcbiAgZnMuZmNob3duID0gY2hvd25GaXgoZnMuZmNob3duKVxuICBmcy5sY2hvd24gPSBjaG93bkZpeChmcy5sY2hvd24pXG5cbiAgZnMuY2htb2QgPSBjaG1vZEZpeChmcy5jaG1vZClcbiAgZnMuZmNobW9kID0gY2htb2RGaXgoZnMuZmNobW9kKVxuICBmcy5sY2htb2QgPSBjaG1vZEZpeChmcy5sY2htb2QpXG5cbiAgZnMuY2hvd25TeW5jID0gY2hvd25GaXhTeW5jKGZzLmNob3duU3luYylcbiAgZnMuZmNob3duU3luYyA9IGNob3duRml4U3luYyhmcy5mY2hvd25TeW5jKVxuICBmcy5sY2hvd25TeW5jID0gY2hvd25GaXhTeW5jKGZzLmxjaG93blN5bmMpXG5cbiAgZnMuY2htb2RTeW5jID0gY2htb2RGaXhTeW5jKGZzLmNobW9kU3luYylcbiAgZnMuZmNobW9kU3luYyA9IGNobW9kRml4U3luYyhmcy5mY2htb2RTeW5jKVxuICBmcy5sY2htb2RTeW5jID0gY2htb2RGaXhTeW5jKGZzLmxjaG1vZFN5bmMpXG5cbiAgZnMuc3RhdCA9IHN0YXRGaXgoZnMuc3RhdClcbiAgZnMuZnN0YXQgPSBzdGF0Rml4KGZzLmZzdGF0KVxuICBmcy5sc3RhdCA9IHN0YXRGaXgoZnMubHN0YXQpXG5cbiAgZnMuc3RhdFN5bmMgPSBzdGF0Rml4U3luYyhmcy5zdGF0U3luYylcbiAgZnMuZnN0YXRTeW5jID0gc3RhdEZpeFN5bmMoZnMuZnN0YXRTeW5jKVxuICBmcy5sc3RhdFN5bmMgPSBzdGF0Rml4U3luYyhmcy5sc3RhdFN5bmMpXG5cbiAgLy8gaWYgbGNobW9kL2xjaG93biBkbyBub3QgZXhpc3QsIHRoZW4gbWFrZSB0aGVtIG5vLW9wc1xuICBpZiAoIWZzLmxjaG1vZCkge1xuICAgIGZzLmxjaG1vZCA9IGZ1bmN0aW9uIChwYXRoLCBtb2RlLCBjYikge1xuICAgICAgaWYgKGNiKSBwcm9jZXNzLm5leHRUaWNrKGNiKVxuICAgIH1cbiAgICBmcy5sY2htb2RTeW5jID0gZnVuY3Rpb24gKCkge31cbiAgfVxuICBpZiAoIWZzLmxjaG93bikge1xuICAgIGZzLmxjaG93biA9IGZ1bmN0aW9uIChwYXRoLCB1aWQsIGdpZCwgY2IpIHtcbiAgICAgIGlmIChjYikgcHJvY2Vzcy5uZXh0VGljayhjYilcbiAgICB9XG4gICAgZnMubGNob3duU3luYyA9IGZ1bmN0aW9uICgpIHt9XG4gIH1cblxuICAvLyBvbiBXaW5kb3dzLCBBL1Ygc29mdHdhcmUgY2FuIGxvY2sgdGhlIGRpcmVjdG9yeSwgY2F1c2luZyB0aGlzXG4gIC8vIHRvIGZhaWwgd2l0aCBhbiBFQUNDRVMgb3IgRVBFUk0gaWYgdGhlIGRpcmVjdG9yeSBjb250YWlucyBuZXdseVxuICAvLyBjcmVhdGVkIGZpbGVzLiAgVHJ5IGFnYWluIG9uIGZhaWx1cmUsIGZvciB1cCB0byA2MCBzZWNvbmRzLlxuXG4gIC8vIFNldCB0aGUgdGltZW91dCB0aGlzIGxvbmcgYmVjYXVzZSBzb21lIFdpbmRvd3MgQW50aS1WaXJ1cywgc3VjaCBhcyBQYXJpdHlcbiAgLy8gYml0OSwgbWF5IGxvY2sgZmlsZXMgZm9yIHVwIHRvIGEgbWludXRlLCBjYXVzaW5nIG5wbSBwYWNrYWdlIGluc3RhbGxcbiAgLy8gZmFpbHVyZXMuIEFsc28sIHRha2UgY2FyZSB0byB5aWVsZCB0aGUgc2NoZWR1bGVyLiBXaW5kb3dzIHNjaGVkdWxpbmcgZ2l2ZXNcbiAgLy8gQ1BVIHRvIGEgYnVzeSBsb29waW5nIHByb2Nlc3MsIHdoaWNoIGNhbiBjYXVzZSB0aGUgcHJvZ3JhbSBjYXVzaW5nIHRoZSBsb2NrXG4gIC8vIGNvbnRlbnRpb24gdG8gYmUgc3RhcnZlZCBvZiBDUFUgYnkgbm9kZSwgc28gdGhlIGNvbnRlbnRpb24gZG9lc24ndCByZXNvbHZlLlxuICBpZiAocGxhdGZvcm0gPT09IFwid2luMzJcIikge1xuICAgIGZzLnJlbmFtZSA9IChmdW5jdGlvbiAoZnMkcmVuYW1lKSB7IHJldHVybiBmdW5jdGlvbiAoZnJvbSwgdG8sIGNiKSB7XG4gICAgICB2YXIgc3RhcnQgPSBEYXRlLm5vdygpXG4gICAgICB2YXIgYmFja29mZiA9IDA7XG4gICAgICBmcyRyZW5hbWUoZnJvbSwgdG8sIGZ1bmN0aW9uIENCIChlcikge1xuICAgICAgICBpZiAoZXJcbiAgICAgICAgICAgICYmIChlci5jb2RlID09PSBcIkVBQ0NFU1wiIHx8IGVyLmNvZGUgPT09IFwiRVBFUk1cIilcbiAgICAgICAgICAgICYmIERhdGUubm93KCkgLSBzdGFydCA8IDYwMDAwKSB7XG4gICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIGZzLnN0YXQodG8sIGZ1bmN0aW9uIChzdGF0ZXIsIHN0KSB7XG4gICAgICAgICAgICAgIGlmIChzdGF0ZXIgJiYgc3RhdGVyLmNvZGUgPT09IFwiRU5PRU5UXCIpXG4gICAgICAgICAgICAgICAgZnMkcmVuYW1lKGZyb20sIHRvLCBDQik7XG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBjYihlcilcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfSwgYmFja29mZilcbiAgICAgICAgICBpZiAoYmFja29mZiA8IDEwMClcbiAgICAgICAgICAgIGJhY2tvZmYgKz0gMTA7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjYikgY2IoZXIpXG4gICAgICB9KVxuICAgIH19KShmcy5yZW5hbWUpXG4gIH1cblxuICAvLyBpZiByZWFkKCkgcmV0dXJucyBFQUdBSU4sIHRoZW4ganVzdCB0cnkgaXQgYWdhaW4uXG4gIGZzLnJlYWQgPSAoZnVuY3Rpb24gKGZzJHJlYWQpIHsgcmV0dXJuIGZ1bmN0aW9uIChmZCwgYnVmZmVyLCBvZmZzZXQsIGxlbmd0aCwgcG9zaXRpb24sIGNhbGxiYWNrXykge1xuICAgIHZhciBjYWxsYmFja1xuICAgIGlmIChjYWxsYmFja18gJiYgdHlwZW9mIGNhbGxiYWNrXyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdmFyIGVhZ0NvdW50ZXIgPSAwXG4gICAgICBjYWxsYmFjayA9IGZ1bmN0aW9uIChlciwgXywgX18pIHtcbiAgICAgICAgaWYgKGVyICYmIGVyLmNvZGUgPT09ICdFQUdBSU4nICYmIGVhZ0NvdW50ZXIgPCAxMCkge1xuICAgICAgICAgIGVhZ0NvdW50ZXIgKytcbiAgICAgICAgICByZXR1cm4gZnMkcmVhZC5jYWxsKGZzLCBmZCwgYnVmZmVyLCBvZmZzZXQsIGxlbmd0aCwgcG9zaXRpb24sIGNhbGxiYWNrKVxuICAgICAgICB9XG4gICAgICAgIGNhbGxiYWNrXy5hcHBseSh0aGlzLCBhcmd1bWVudHMpXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmcyRyZWFkLmNhbGwoZnMsIGZkLCBidWZmZXIsIG9mZnNldCwgbGVuZ3RoLCBwb3NpdGlvbiwgY2FsbGJhY2spXG4gIH19KShmcy5yZWFkKVxuXG4gIGZzLnJlYWRTeW5jID0gKGZ1bmN0aW9uIChmcyRyZWFkU3luYykgeyByZXR1cm4gZnVuY3Rpb24gKGZkLCBidWZmZXIsIG9mZnNldCwgbGVuZ3RoLCBwb3NpdGlvbikge1xuICAgIHZhciBlYWdDb3VudGVyID0gMFxuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gZnMkcmVhZFN5bmMuY2FsbChmcywgZmQsIGJ1ZmZlciwgb2Zmc2V0LCBsZW5ndGgsIHBvc2l0aW9uKVxuICAgICAgfSBjYXRjaCAoZXIpIHtcbiAgICAgICAgaWYgKGVyLmNvZGUgPT09ICdFQUdBSU4nICYmIGVhZ0NvdW50ZXIgPCAxMCkge1xuICAgICAgICAgIGVhZ0NvdW50ZXIgKytcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICAgIHRocm93IGVyXG4gICAgICB9XG4gICAgfVxuICB9fSkoZnMucmVhZFN5bmMpXG59XG5cbmZ1bmN0aW9uIHBhdGNoTGNobW9kIChmcykge1xuICBmcy5sY2htb2QgPSBmdW5jdGlvbiAocGF0aCwgbW9kZSwgY2FsbGJhY2spIHtcbiAgICBmcy5vcGVuKCBwYXRoXG4gICAgICAgICAgICwgY29uc3RhbnRzLk9fV1JPTkxZIHwgY29uc3RhbnRzLk9fU1lNTElOS1xuICAgICAgICAgICAsIG1vZGVcbiAgICAgICAgICAgLCBmdW5jdGlvbiAoZXJyLCBmZCkge1xuICAgICAgaWYgKGVycikge1xuICAgICAgICBpZiAoY2FsbGJhY2spIGNhbGxiYWNrKGVycilcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICAvLyBwcmVmZXIgdG8gcmV0dXJuIHRoZSBjaG1vZCBlcnJvciwgaWYgb25lIG9jY3VycyxcbiAgICAgIC8vIGJ1dCBzdGlsbCB0cnkgdG8gY2xvc2UsIGFuZCByZXBvcnQgY2xvc2luZyBlcnJvcnMgaWYgdGhleSBvY2N1ci5cbiAgICAgIGZzLmZjaG1vZChmZCwgbW9kZSwgZnVuY3Rpb24gKGVycikge1xuICAgICAgICBmcy5jbG9zZShmZCwgZnVuY3Rpb24oZXJyMikge1xuICAgICAgICAgIGlmIChjYWxsYmFjaykgY2FsbGJhY2soZXJyIHx8IGVycjIpXG4gICAgICAgIH0pXG4gICAgICB9KVxuICAgIH0pXG4gIH1cblxuICBmcy5sY2htb2RTeW5jID0gZnVuY3Rpb24gKHBhdGgsIG1vZGUpIHtcbiAgICB2YXIgZmQgPSBmcy5vcGVuU3luYyhwYXRoLCBjb25zdGFudHMuT19XUk9OTFkgfCBjb25zdGFudHMuT19TWU1MSU5LLCBtb2RlKVxuXG4gICAgLy8gcHJlZmVyIHRvIHJldHVybiB0aGUgY2htb2QgZXJyb3IsIGlmIG9uZSBvY2N1cnMsXG4gICAgLy8gYnV0IHN0aWxsIHRyeSB0byBjbG9zZSwgYW5kIHJlcG9ydCBjbG9zaW5nIGVycm9ycyBpZiB0aGV5IG9jY3VyLlxuICAgIHZhciB0aHJldyA9IHRydWVcbiAgICB2YXIgcmV0XG4gICAgdHJ5IHtcbiAgICAgIHJldCA9IGZzLmZjaG1vZFN5bmMoZmQsIG1vZGUpXG4gICAgICB0aHJldyA9IGZhbHNlXG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmICh0aHJldykge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGZzLmNsb3NlU3luYyhmZClcbiAgICAgICAgfSBjYXRjaCAoZXIpIHt9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmcy5jbG9zZVN5bmMoZmQpXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXRcbiAgfVxufVxuXG5mdW5jdGlvbiBwYXRjaEx1dGltZXMgKGZzKSB7XG4gIGlmIChjb25zdGFudHMuaGFzT3duUHJvcGVydHkoXCJPX1NZTUxJTktcIikpIHtcbiAgICBmcy5sdXRpbWVzID0gZnVuY3Rpb24gKHBhdGgsIGF0LCBtdCwgY2IpIHtcbiAgICAgIGZzLm9wZW4ocGF0aCwgY29uc3RhbnRzLk9fU1lNTElOSywgZnVuY3Rpb24gKGVyLCBmZCkge1xuICAgICAgICBpZiAoZXIpIHtcbiAgICAgICAgICBpZiAoY2IpIGNiKGVyKVxuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG4gICAgICAgIGZzLmZ1dGltZXMoZmQsIGF0LCBtdCwgZnVuY3Rpb24gKGVyKSB7XG4gICAgICAgICAgZnMuY2xvc2UoZmQsIGZ1bmN0aW9uIChlcjIpIHtcbiAgICAgICAgICAgIGlmIChjYikgY2IoZXIgfHwgZXIyKVxuICAgICAgICAgIH0pXG4gICAgICAgIH0pXG4gICAgICB9KVxuICAgIH1cblxuICAgIGZzLmx1dGltZXNTeW5jID0gZnVuY3Rpb24gKHBhdGgsIGF0LCBtdCkge1xuICAgICAgdmFyIGZkID0gZnMub3BlblN5bmMocGF0aCwgY29uc3RhbnRzLk9fU1lNTElOSylcbiAgICAgIHZhciByZXRcbiAgICAgIHZhciB0aHJldyA9IHRydWVcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldCA9IGZzLmZ1dGltZXNTeW5jKGZkLCBhdCwgbXQpXG4gICAgICAgIHRocmV3ID0gZmFsc2VcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIGlmICh0aHJldykge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBmcy5jbG9zZVN5bmMoZmQpXG4gICAgICAgICAgfSBjYXRjaCAoZXIpIHt9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZnMuY2xvc2VTeW5jKGZkKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmV0XG4gICAgfVxuXG4gIH0gZWxzZSB7XG4gICAgZnMubHV0aW1lcyA9IGZ1bmN0aW9uIChfYSwgX2IsIF9jLCBjYikgeyBpZiAoY2IpIHByb2Nlc3MubmV4dFRpY2soY2IpIH1cbiAgICBmcy5sdXRpbWVzU3luYyA9IGZ1bmN0aW9uICgpIHt9XG4gIH1cbn1cblxuZnVuY3Rpb24gY2htb2RGaXggKG9yaWcpIHtcbiAgaWYgKCFvcmlnKSByZXR1cm4gb3JpZ1xuICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldCwgbW9kZSwgY2IpIHtcbiAgICByZXR1cm4gb3JpZy5jYWxsKGZzLCB0YXJnZXQsIG1vZGUsIGZ1bmN0aW9uIChlcikge1xuICAgICAgaWYgKGNob3duRXJPayhlcikpIGVyID0gbnVsbFxuICAgICAgaWYgKGNiKSBjYi5hcHBseSh0aGlzLCBhcmd1bWVudHMpXG4gICAgfSlcbiAgfVxufVxuXG5mdW5jdGlvbiBjaG1vZEZpeFN5bmMgKG9yaWcpIHtcbiAgaWYgKCFvcmlnKSByZXR1cm4gb3JpZ1xuICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldCwgbW9kZSkge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gb3JpZy5jYWxsKGZzLCB0YXJnZXQsIG1vZGUpXG4gICAgfSBjYXRjaCAoZXIpIHtcbiAgICAgIGlmICghY2hvd25Fck9rKGVyKSkgdGhyb3cgZXJcbiAgICB9XG4gIH1cbn1cblxuXG5mdW5jdGlvbiBjaG93bkZpeCAob3JpZykge1xuICBpZiAoIW9yaWcpIHJldHVybiBvcmlnXG4gIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0LCB1aWQsIGdpZCwgY2IpIHtcbiAgICByZXR1cm4gb3JpZy5jYWxsKGZzLCB0YXJnZXQsIHVpZCwgZ2lkLCBmdW5jdGlvbiAoZXIpIHtcbiAgICAgIGlmIChjaG93bkVyT2soZXIpKSBlciA9IG51bGxcbiAgICAgIGlmIChjYikgY2IuYXBwbHkodGhpcywgYXJndW1lbnRzKVxuICAgIH0pXG4gIH1cbn1cblxuZnVuY3Rpb24gY2hvd25GaXhTeW5jIChvcmlnKSB7XG4gIGlmICghb3JpZykgcmV0dXJuIG9yaWdcbiAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQsIHVpZCwgZ2lkKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBvcmlnLmNhbGwoZnMsIHRhcmdldCwgdWlkLCBnaWQpXG4gICAgfSBjYXRjaCAoZXIpIHtcbiAgICAgIGlmICghY2hvd25Fck9rKGVyKSkgdGhyb3cgZXJcbiAgICB9XG4gIH1cbn1cblxuXG5mdW5jdGlvbiBzdGF0Rml4IChvcmlnKSB7XG4gIGlmICghb3JpZykgcmV0dXJuIG9yaWdcbiAgLy8gT2xkZXIgdmVyc2lvbnMgb2YgTm9kZSBlcnJvbmVvdXNseSByZXR1cm5lZCBzaWduZWQgaW50ZWdlcnMgZm9yXG4gIC8vIHVpZCArIGdpZC5cbiAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQsIGNiKSB7XG4gICAgcmV0dXJuIG9yaWcuY2FsbChmcywgdGFyZ2V0LCBmdW5jdGlvbiAoZXIsIHN0YXRzKSB7XG4gICAgICBpZiAoIXN0YXRzKSByZXR1cm4gY2IuYXBwbHkodGhpcywgYXJndW1lbnRzKVxuICAgICAgaWYgKHN0YXRzLnVpZCA8IDApIHN0YXRzLnVpZCArPSAweDEwMDAwMDAwMFxuICAgICAgaWYgKHN0YXRzLmdpZCA8IDApIHN0YXRzLmdpZCArPSAweDEwMDAwMDAwMFxuICAgICAgaWYgKGNiKSBjYi5hcHBseSh0aGlzLCBhcmd1bWVudHMpXG4gICAgfSlcbiAgfVxufVxuXG5mdW5jdGlvbiBzdGF0Rml4U3luYyAob3JpZykge1xuICBpZiAoIW9yaWcpIHJldHVybiBvcmlnXG4gIC8vIE9sZGVyIHZlcnNpb25zIG9mIE5vZGUgZXJyb25lb3VzbHkgcmV0dXJuZWQgc2lnbmVkIGludGVnZXJzIGZvclxuICAvLyB1aWQgKyBnaWQuXG4gIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0KSB7XG4gICAgdmFyIHN0YXRzID0gb3JpZy5jYWxsKGZzLCB0YXJnZXQpXG4gICAgaWYgKHN0YXRzLnVpZCA8IDApIHN0YXRzLnVpZCArPSAweDEwMDAwMDAwMFxuICAgIGlmIChzdGF0cy5naWQgPCAwKSBzdGF0cy5naWQgKz0gMHgxMDAwMDAwMDBcbiAgICByZXR1cm4gc3RhdHM7XG4gIH1cbn1cblxuLy8gRU5PU1lTIG1lYW5zIHRoYXQgdGhlIGZzIGRvZXNuJ3Qgc3VwcG9ydCB0aGUgb3AuIEp1c3QgaWdub3JlXG4vLyB0aGF0LCBiZWNhdXNlIGl0IGRvZXNuJ3QgbWF0dGVyLlxuLy9cbi8vIGlmIHRoZXJlJ3Mgbm8gZ2V0dWlkLCBvciBpZiBnZXR1aWQoKSBpcyBzb21ldGhpbmcgb3RoZXJcbi8vIHRoYW4gMCwgYW5kIHRoZSBlcnJvciBpcyBFSU5WQUwgb3IgRVBFUk0sIHRoZW4ganVzdCBpZ25vcmVcbi8vIGl0LlxuLy9cbi8vIFRoaXMgc3BlY2lmaWMgY2FzZSBpcyBhIHNpbGVudCBmYWlsdXJlIGluIGNwLCBpbnN0YWxsLCB0YXIsXG4vLyBhbmQgbW9zdCBvdGhlciB1bml4IHRvb2xzIHRoYXQgbWFuYWdlIHBlcm1pc3Npb25zLlxuLy9cbi8vIFdoZW4gcnVubmluZyBhcyByb290LCBvciBpZiBvdGhlciB0eXBlcyBvZiBlcnJvcnMgYXJlXG4vLyBlbmNvdW50ZXJlZCwgdGhlbiBpdCdzIHN0cmljdC5cbmZ1bmN0aW9uIGNob3duRXJPayAoZXIpIHtcbiAgaWYgKCFlcilcbiAgICByZXR1cm4gdHJ1ZVxuXG4gIGlmIChlci5jb2RlID09PSBcIkVOT1NZU1wiKVxuICAgIHJldHVybiB0cnVlXG5cbiAgdmFyIG5vbnJvb3QgPSAhcHJvY2Vzcy5nZXR1aWQgfHwgcHJvY2Vzcy5nZXR1aWQoKSAhPT0gMFxuICBpZiAobm9ucm9vdCkge1xuICAgIGlmIChlci5jb2RlID09PSBcIkVJTlZBTFwiIHx8IGVyLmNvZGUgPT09IFwiRVBFUk1cIilcbiAgICAgIHJldHVybiB0cnVlXG4gIH1cblxuICByZXR1cm4gZmFsc2Vcbn1cbiIsInZhciBoYXNoID0gZXhwb3J0cztcblxuaGFzaC51dGlscyA9IHJlcXVpcmUoJy4vaGFzaC91dGlscycpO1xuaGFzaC5jb21tb24gPSByZXF1aXJlKCcuL2hhc2gvY29tbW9uJyk7XG5oYXNoLnNoYSA9IHJlcXVpcmUoJy4vaGFzaC9zaGEnKTtcbmhhc2gucmlwZW1kID0gcmVxdWlyZSgnLi9oYXNoL3JpcGVtZCcpO1xuaGFzaC5obWFjID0gcmVxdWlyZSgnLi9oYXNoL2htYWMnKTtcblxuLy8gUHJveHkgaGFzaCBmdW5jdGlvbnMgdG8gdGhlIG1haW4gb2JqZWN0XG5oYXNoLnNoYTEgPSBoYXNoLnNoYS5zaGExO1xuaGFzaC5zaGEyNTYgPSBoYXNoLnNoYS5zaGEyNTY7XG5oYXNoLnNoYTIyNCA9IGhhc2guc2hhLnNoYTIyNDtcbmhhc2guc2hhMzg0ID0gaGFzaC5zaGEuc2hhMzg0O1xuaGFzaC5zaGE1MTIgPSBoYXNoLnNoYS5zaGE1MTI7XG5oYXNoLnJpcGVtZDE2MCA9IGhhc2gucmlwZW1kLnJpcGVtZDE2MDtcbiIsInZhciBoYXNoID0gcmVxdWlyZSgnLi4vaGFzaCcpO1xudmFyIHV0aWxzID0gaGFzaC51dGlscztcbnZhciBhc3NlcnQgPSB1dGlscy5hc3NlcnQ7XG5cbmZ1bmN0aW9uIEJsb2NrSGFzaCgpIHtcbiAgdGhpcy5wZW5kaW5nID0gbnVsbDtcbiAgdGhpcy5wZW5kaW5nVG90YWwgPSAwO1xuICB0aGlzLmJsb2NrU2l6ZSA9IHRoaXMuY29uc3RydWN0b3IuYmxvY2tTaXplO1xuICB0aGlzLm91dFNpemUgPSB0aGlzLmNvbnN0cnVjdG9yLm91dFNpemU7XG4gIHRoaXMuaG1hY1N0cmVuZ3RoID0gdGhpcy5jb25zdHJ1Y3Rvci5obWFjU3RyZW5ndGg7XG4gIHRoaXMucGFkTGVuZ3RoID0gdGhpcy5jb25zdHJ1Y3Rvci5wYWRMZW5ndGggLyA4O1xuICB0aGlzLmVuZGlhbiA9ICdiaWcnO1xuXG4gIHRoaXMuX2RlbHRhOCA9IHRoaXMuYmxvY2tTaXplIC8gODtcbiAgdGhpcy5fZGVsdGEzMiA9IHRoaXMuYmxvY2tTaXplIC8gMzI7XG59XG5leHBvcnRzLkJsb2NrSGFzaCA9IEJsb2NrSGFzaDtcblxuQmxvY2tIYXNoLnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiB1cGRhdGUobXNnLCBlbmMpIHtcbiAgLy8gQ29udmVydCBtZXNzYWdlIHRvIGFycmF5LCBwYWQgaXQsIGFuZCBqb2luIGludG8gMzJiaXQgYmxvY2tzXG4gIG1zZyA9IHV0aWxzLnRvQXJyYXkobXNnLCBlbmMpO1xuICBpZiAoIXRoaXMucGVuZGluZylcbiAgICB0aGlzLnBlbmRpbmcgPSBtc2c7XG4gIGVsc2VcbiAgICB0aGlzLnBlbmRpbmcgPSB0aGlzLnBlbmRpbmcuY29uY2F0KG1zZyk7XG4gIHRoaXMucGVuZGluZ1RvdGFsICs9IG1zZy5sZW5ndGg7XG5cbiAgLy8gRW5vdWdoIGRhdGEsIHRyeSB1cGRhdGluZ1xuICBpZiAodGhpcy5wZW5kaW5nLmxlbmd0aCA+PSB0aGlzLl9kZWx0YTgpIHtcbiAgICBtc2cgPSB0aGlzLnBlbmRpbmc7XG5cbiAgICAvLyBQcm9jZXNzIHBlbmRpbmcgZGF0YSBpbiBibG9ja3NcbiAgICB2YXIgciA9IG1zZy5sZW5ndGggJSB0aGlzLl9kZWx0YTg7XG4gICAgdGhpcy5wZW5kaW5nID0gbXNnLnNsaWNlKG1zZy5sZW5ndGggLSByLCBtc2cubGVuZ3RoKTtcbiAgICBpZiAodGhpcy5wZW5kaW5nLmxlbmd0aCA9PT0gMClcbiAgICAgIHRoaXMucGVuZGluZyA9IG51bGw7XG5cbiAgICBtc2cgPSB1dGlscy5qb2luMzIobXNnLCAwLCBtc2cubGVuZ3RoIC0gciwgdGhpcy5lbmRpYW4pO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbXNnLmxlbmd0aDsgaSArPSB0aGlzLl9kZWx0YTMyKVxuICAgICAgdGhpcy5fdXBkYXRlKG1zZywgaSwgaSArIHRoaXMuX2RlbHRhMzIpO1xuICB9XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5CbG9ja0hhc2gucHJvdG90eXBlLmRpZ2VzdCA9IGZ1bmN0aW9uIGRpZ2VzdChlbmMpIHtcbiAgdGhpcy51cGRhdGUodGhpcy5fcGFkKCkpO1xuICBhc3NlcnQodGhpcy5wZW5kaW5nID09PSBudWxsKTtcblxuICByZXR1cm4gdGhpcy5fZGlnZXN0KGVuYyk7XG59O1xuXG5CbG9ja0hhc2gucHJvdG90eXBlLl9wYWQgPSBmdW5jdGlvbiBwYWQoKSB7XG4gIHZhciBsZW4gPSB0aGlzLnBlbmRpbmdUb3RhbDtcbiAgdmFyIGJ5dGVzID0gdGhpcy5fZGVsdGE4O1xuICB2YXIgayA9IGJ5dGVzIC0gKChsZW4gKyB0aGlzLnBhZExlbmd0aCkgJSBieXRlcyk7XG4gIHZhciByZXMgPSBuZXcgQXJyYXkoayArIHRoaXMucGFkTGVuZ3RoKTtcbiAgcmVzWzBdID0gMHg4MDtcbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBrOyBpKyspXG4gICAgcmVzW2ldID0gMDtcblxuICAvLyBBcHBlbmQgbGVuZ3RoXG4gIGxlbiA8PD0gMztcbiAgaWYgKHRoaXMuZW5kaWFuID09PSAnYmlnJykge1xuICAgIGZvciAodmFyIHQgPSA4OyB0IDwgdGhpcy5wYWRMZW5ndGg7IHQrKylcbiAgICAgIHJlc1tpKytdID0gMDtcblxuICAgIHJlc1tpKytdID0gMDtcbiAgICByZXNbaSsrXSA9IDA7XG4gICAgcmVzW2krK10gPSAwO1xuICAgIHJlc1tpKytdID0gMDtcbiAgICByZXNbaSsrXSA9IChsZW4gPj4+IDI0KSAmIDB4ZmY7XG4gICAgcmVzW2krK10gPSAobGVuID4+PiAxNikgJiAweGZmO1xuICAgIHJlc1tpKytdID0gKGxlbiA+Pj4gOCkgJiAweGZmO1xuICAgIHJlc1tpKytdID0gbGVuICYgMHhmZjtcbiAgfSBlbHNlIHtcbiAgICByZXNbaSsrXSA9IGxlbiAmIDB4ZmY7XG4gICAgcmVzW2krK10gPSAobGVuID4+PiA4KSAmIDB4ZmY7XG4gICAgcmVzW2krK10gPSAobGVuID4+PiAxNikgJiAweGZmO1xuICAgIHJlc1tpKytdID0gKGxlbiA+Pj4gMjQpICYgMHhmZjtcbiAgICByZXNbaSsrXSA9IDA7XG4gICAgcmVzW2krK10gPSAwO1xuICAgIHJlc1tpKytdID0gMDtcbiAgICByZXNbaSsrXSA9IDA7XG5cbiAgICBmb3IgKHZhciB0ID0gODsgdCA8IHRoaXMucGFkTGVuZ3RoOyB0KyspXG4gICAgICByZXNbaSsrXSA9IDA7XG4gIH1cblxuICByZXR1cm4gcmVzO1xufTtcbiIsInZhciBobWFjID0gZXhwb3J0cztcblxudmFyIGhhc2ggPSByZXF1aXJlKCcuLi9oYXNoJyk7XG52YXIgdXRpbHMgPSBoYXNoLnV0aWxzO1xudmFyIGFzc2VydCA9IHV0aWxzLmFzc2VydDtcblxuZnVuY3Rpb24gSG1hYyhoYXNoLCBrZXksIGVuYykge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgSG1hYykpXG4gICAgcmV0dXJuIG5ldyBIbWFjKGhhc2gsIGtleSwgZW5jKTtcbiAgdGhpcy5IYXNoID0gaGFzaDtcbiAgdGhpcy5ibG9ja1NpemUgPSBoYXNoLmJsb2NrU2l6ZSAvIDg7XG4gIHRoaXMub3V0U2l6ZSA9IGhhc2gub3V0U2l6ZSAvIDg7XG4gIHRoaXMuaW5uZXIgPSBudWxsO1xuICB0aGlzLm91dGVyID0gbnVsbDtcblxuICB0aGlzLl9pbml0KHV0aWxzLnRvQXJyYXkoa2V5LCBlbmMpKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gSG1hYztcblxuSG1hYy5wcm90b3R5cGUuX2luaXQgPSBmdW5jdGlvbiBpbml0KGtleSkge1xuICAvLyBTaG9ydGVuIGtleSwgaWYgbmVlZGVkXG4gIGlmIChrZXkubGVuZ3RoID4gdGhpcy5ibG9ja1NpemUpXG4gICAga2V5ID0gbmV3IHRoaXMuSGFzaCgpLnVwZGF0ZShrZXkpLmRpZ2VzdCgpO1xuICBhc3NlcnQoa2V5Lmxlbmd0aCA8PSB0aGlzLmJsb2NrU2l6ZSk7XG5cbiAgLy8gQWRkIHBhZGRpbmcgdG8ga2V5XG4gIGZvciAodmFyIGkgPSBrZXkubGVuZ3RoOyBpIDwgdGhpcy5ibG9ja1NpemU7IGkrKylcbiAgICBrZXkucHVzaCgwKTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGtleS5sZW5ndGg7IGkrKylcbiAgICBrZXlbaV0gXj0gMHgzNjtcbiAgdGhpcy5pbm5lciA9IG5ldyB0aGlzLkhhc2goKS51cGRhdGUoa2V5KTtcblxuICAvLyAweDM2IF4gMHg1YyA9IDB4NmFcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXkubGVuZ3RoOyBpKyspXG4gICAga2V5W2ldIF49IDB4NmE7XG4gIHRoaXMub3V0ZXIgPSBuZXcgdGhpcy5IYXNoKCkudXBkYXRlKGtleSk7XG59O1xuXG5IbWFjLnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiB1cGRhdGUobXNnLCBlbmMpIHtcbiAgdGhpcy5pbm5lci51cGRhdGUobXNnLCBlbmMpO1xuICByZXR1cm4gdGhpcztcbn07XG5cbkhtYWMucHJvdG90eXBlLmRpZ2VzdCA9IGZ1bmN0aW9uIGRpZ2VzdChlbmMpIHtcbiAgdGhpcy5vdXRlci51cGRhdGUodGhpcy5pbm5lci5kaWdlc3QoKSk7XG4gIHJldHVybiB0aGlzLm91dGVyLmRpZ2VzdChlbmMpO1xufTtcbiIsInZhciBoYXNoID0gcmVxdWlyZSgnLi4vaGFzaCcpO1xudmFyIHV0aWxzID0gaGFzaC51dGlscztcblxudmFyIHJvdGwzMiA9IHV0aWxzLnJvdGwzMjtcbnZhciBzdW0zMiA9IHV0aWxzLnN1bTMyO1xudmFyIHN1bTMyXzMgPSB1dGlscy5zdW0zMl8zO1xudmFyIHN1bTMyXzQgPSB1dGlscy5zdW0zMl80O1xudmFyIEJsb2NrSGFzaCA9IGhhc2guY29tbW9uLkJsb2NrSGFzaDtcblxuZnVuY3Rpb24gUklQRU1EMTYwKCkge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgUklQRU1EMTYwKSlcbiAgICByZXR1cm4gbmV3IFJJUEVNRDE2MCgpO1xuXG4gIEJsb2NrSGFzaC5jYWxsKHRoaXMpO1xuXG4gIHRoaXMuaCA9IFsgMHg2NzQ1MjMwMSwgMHhlZmNkYWI4OSwgMHg5OGJhZGNmZSwgMHgxMDMyNTQ3NiwgMHhjM2QyZTFmMCBdO1xuICB0aGlzLmVuZGlhbiA9ICdsaXR0bGUnO1xufVxudXRpbHMuaW5oZXJpdHMoUklQRU1EMTYwLCBCbG9ja0hhc2gpO1xuZXhwb3J0cy5yaXBlbWQxNjAgPSBSSVBFTUQxNjA7XG5cblJJUEVNRDE2MC5ibG9ja1NpemUgPSA1MTI7XG5SSVBFTUQxNjAub3V0U2l6ZSA9IDE2MDtcblJJUEVNRDE2MC5obWFjU3RyZW5ndGggPSAxOTI7XG5SSVBFTUQxNjAucGFkTGVuZ3RoID0gNjQ7XG5cblJJUEVNRDE2MC5wcm90b3R5cGUuX3VwZGF0ZSA9IGZ1bmN0aW9uIHVwZGF0ZShtc2csIHN0YXJ0KSB7XG4gIHZhciBBID0gdGhpcy5oWzBdO1xuICB2YXIgQiA9IHRoaXMuaFsxXTtcbiAgdmFyIEMgPSB0aGlzLmhbMl07XG4gIHZhciBEID0gdGhpcy5oWzNdO1xuICB2YXIgRSA9IHRoaXMuaFs0XTtcbiAgdmFyIEFoID0gQTtcbiAgdmFyIEJoID0gQjtcbiAgdmFyIENoID0gQztcbiAgdmFyIERoID0gRDtcbiAgdmFyIEVoID0gRTtcbiAgZm9yICh2YXIgaiA9IDA7IGogPCA4MDsgaisrKSB7XG4gICAgdmFyIFQgPSBzdW0zMihcbiAgICAgIHJvdGwzMihcbiAgICAgICAgc3VtMzJfNChBLCBmKGosIEIsIEMsIEQpLCBtc2dbcltqXSArIHN0YXJ0XSwgSyhqKSksXG4gICAgICAgIHNbal0pLFxuICAgICAgRSk7XG4gICAgQSA9IEU7XG4gICAgRSA9IEQ7XG4gICAgRCA9IHJvdGwzMihDLCAxMCk7XG4gICAgQyA9IEI7XG4gICAgQiA9IFQ7XG4gICAgVCA9IHN1bTMyKFxuICAgICAgcm90bDMyKFxuICAgICAgICBzdW0zMl80KEFoLCBmKDc5IC0gaiwgQmgsIENoLCBEaCksIG1zZ1tyaFtqXSArIHN0YXJ0XSwgS2goaikpLFxuICAgICAgICBzaFtqXSksXG4gICAgICBFaCk7XG4gICAgQWggPSBFaDtcbiAgICBFaCA9IERoO1xuICAgIERoID0gcm90bDMyKENoLCAxMCk7XG4gICAgQ2ggPSBCaDtcbiAgICBCaCA9IFQ7XG4gIH1cbiAgVCA9IHN1bTMyXzModGhpcy5oWzFdLCBDLCBEaCk7XG4gIHRoaXMuaFsxXSA9IHN1bTMyXzModGhpcy5oWzJdLCBELCBFaCk7XG4gIHRoaXMuaFsyXSA9IHN1bTMyXzModGhpcy5oWzNdLCBFLCBBaCk7XG4gIHRoaXMuaFszXSA9IHN1bTMyXzModGhpcy5oWzRdLCBBLCBCaCk7XG4gIHRoaXMuaFs0XSA9IHN1bTMyXzModGhpcy5oWzBdLCBCLCBDaCk7XG4gIHRoaXMuaFswXSA9IFQ7XG59O1xuXG5SSVBFTUQxNjAucHJvdG90eXBlLl9kaWdlc3QgPSBmdW5jdGlvbiBkaWdlc3QoZW5jKSB7XG4gIGlmIChlbmMgPT09ICdoZXgnKVxuICAgIHJldHVybiB1dGlscy50b0hleDMyKHRoaXMuaCwgJ2xpdHRsZScpO1xuICBlbHNlXG4gICAgcmV0dXJuIHV0aWxzLnNwbGl0MzIodGhpcy5oLCAnbGl0dGxlJyk7XG59O1xuXG5mdW5jdGlvbiBmKGosIHgsIHksIHopIHtcbiAgaWYgKGogPD0gMTUpXG4gICAgcmV0dXJuIHggXiB5IF4gejtcbiAgZWxzZSBpZiAoaiA8PSAzMSlcbiAgICByZXR1cm4gKHggJiB5KSB8ICgofngpICYgeik7XG4gIGVsc2UgaWYgKGogPD0gNDcpXG4gICAgcmV0dXJuICh4IHwgKH55KSkgXiB6O1xuICBlbHNlIGlmIChqIDw9IDYzKVxuICAgIHJldHVybiAoeCAmIHopIHwgKHkgJiAofnopKTtcbiAgZWxzZVxuICAgIHJldHVybiB4IF4gKHkgfCAofnopKTtcbn1cblxuZnVuY3Rpb24gSyhqKSB7XG4gIGlmIChqIDw9IDE1KVxuICAgIHJldHVybiAweDAwMDAwMDAwO1xuICBlbHNlIGlmIChqIDw9IDMxKVxuICAgIHJldHVybiAweDVhODI3OTk5O1xuICBlbHNlIGlmIChqIDw9IDQ3KVxuICAgIHJldHVybiAweDZlZDllYmExO1xuICBlbHNlIGlmIChqIDw9IDYzKVxuICAgIHJldHVybiAweDhmMWJiY2RjO1xuICBlbHNlXG4gICAgcmV0dXJuIDB4YTk1M2ZkNGU7XG59XG5cbmZ1bmN0aW9uIEtoKGopIHtcbiAgaWYgKGogPD0gMTUpXG4gICAgcmV0dXJuIDB4NTBhMjhiZTY7XG4gIGVsc2UgaWYgKGogPD0gMzEpXG4gICAgcmV0dXJuIDB4NWM0ZGQxMjQ7XG4gIGVsc2UgaWYgKGogPD0gNDcpXG4gICAgcmV0dXJuIDB4NmQ3MDNlZjM7XG4gIGVsc2UgaWYgKGogPD0gNjMpXG4gICAgcmV0dXJuIDB4N2E2ZDc2ZTk7XG4gIGVsc2VcbiAgICByZXR1cm4gMHgwMDAwMDAwMDtcbn1cblxudmFyIHIgPSBbXG4gIDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsXG4gIDcsIDQsIDEzLCAxLCAxMCwgNiwgMTUsIDMsIDEyLCAwLCA5LCA1LCAyLCAxNCwgMTEsIDgsXG4gIDMsIDEwLCAxNCwgNCwgOSwgMTUsIDgsIDEsIDIsIDcsIDAsIDYsIDEzLCAxMSwgNSwgMTIsXG4gIDEsIDksIDExLCAxMCwgMCwgOCwgMTIsIDQsIDEzLCAzLCA3LCAxNSwgMTQsIDUsIDYsIDIsXG4gIDQsIDAsIDUsIDksIDcsIDEyLCAyLCAxMCwgMTQsIDEsIDMsIDgsIDExLCA2LCAxNSwgMTNcbl07XG5cbnZhciByaCA9IFtcbiAgNSwgMTQsIDcsIDAsIDksIDIsIDExLCA0LCAxMywgNiwgMTUsIDgsIDEsIDEwLCAzLCAxMixcbiAgNiwgMTEsIDMsIDcsIDAsIDEzLCA1LCAxMCwgMTQsIDE1LCA4LCAxMiwgNCwgOSwgMSwgMixcbiAgMTUsIDUsIDEsIDMsIDcsIDE0LCA2LCA5LCAxMSwgOCwgMTIsIDIsIDEwLCAwLCA0LCAxMyxcbiAgOCwgNiwgNCwgMSwgMywgMTEsIDE1LCAwLCA1LCAxMiwgMiwgMTMsIDksIDcsIDEwLCAxNCxcbiAgMTIsIDE1LCAxMCwgNCwgMSwgNSwgOCwgNywgNiwgMiwgMTMsIDE0LCAwLCAzLCA5LCAxMVxuXTtcblxudmFyIHMgPSBbXG4gIDExLCAxNCwgMTUsIDEyLCA1LCA4LCA3LCA5LCAxMSwgMTMsIDE0LCAxNSwgNiwgNywgOSwgOCxcbiAgNywgNiwgOCwgMTMsIDExLCA5LCA3LCAxNSwgNywgMTIsIDE1LCA5LCAxMSwgNywgMTMsIDEyLFxuICAxMSwgMTMsIDYsIDcsIDE0LCA5LCAxMywgMTUsIDE0LCA4LCAxMywgNiwgNSwgMTIsIDcsIDUsXG4gIDExLCAxMiwgMTQsIDE1LCAxNCwgMTUsIDksIDgsIDksIDE0LCA1LCA2LCA4LCA2LCA1LCAxMixcbiAgOSwgMTUsIDUsIDExLCA2LCA4LCAxMywgMTIsIDUsIDEyLCAxMywgMTQsIDExLCA4LCA1LCA2XG5dO1xuXG52YXIgc2ggPSBbXG4gIDgsIDksIDksIDExLCAxMywgMTUsIDE1LCA1LCA3LCA3LCA4LCAxMSwgMTQsIDE0LCAxMiwgNixcbiAgOSwgMTMsIDE1LCA3LCAxMiwgOCwgOSwgMTEsIDcsIDcsIDEyLCA3LCA2LCAxNSwgMTMsIDExLFxuICA5LCA3LCAxNSwgMTEsIDgsIDYsIDYsIDE0LCAxMiwgMTMsIDUsIDE0LCAxMywgMTMsIDcsIDUsXG4gIDE1LCA1LCA4LCAxMSwgMTQsIDE0LCA2LCAxNCwgNiwgOSwgMTIsIDksIDEyLCA1LCAxNSwgOCxcbiAgOCwgNSwgMTIsIDksIDEyLCA1LCAxNCwgNiwgOCwgMTMsIDYsIDUsIDE1LCAxMywgMTEsIDExXG5dO1xuIiwidmFyIGhhc2ggPSByZXF1aXJlKCcuLi9oYXNoJyk7XG52YXIgdXRpbHMgPSBoYXNoLnV0aWxzO1xudmFyIGFzc2VydCA9IHV0aWxzLmFzc2VydDtcblxudmFyIHJvdHIzMiA9IHV0aWxzLnJvdHIzMjtcbnZhciByb3RsMzIgPSB1dGlscy5yb3RsMzI7XG52YXIgc3VtMzIgPSB1dGlscy5zdW0zMjtcbnZhciBzdW0zMl80ID0gdXRpbHMuc3VtMzJfNDtcbnZhciBzdW0zMl81ID0gdXRpbHMuc3VtMzJfNTtcbnZhciByb3RyNjRfaGkgPSB1dGlscy5yb3RyNjRfaGk7XG52YXIgcm90cjY0X2xvID0gdXRpbHMucm90cjY0X2xvO1xudmFyIHNocjY0X2hpID0gdXRpbHMuc2hyNjRfaGk7XG52YXIgc2hyNjRfbG8gPSB1dGlscy5zaHI2NF9sbztcbnZhciBzdW02NCA9IHV0aWxzLnN1bTY0O1xudmFyIHN1bTY0X2hpID0gdXRpbHMuc3VtNjRfaGk7XG52YXIgc3VtNjRfbG8gPSB1dGlscy5zdW02NF9sbztcbnZhciBzdW02NF80X2hpID0gdXRpbHMuc3VtNjRfNF9oaTtcbnZhciBzdW02NF80X2xvID0gdXRpbHMuc3VtNjRfNF9sbztcbnZhciBzdW02NF81X2hpID0gdXRpbHMuc3VtNjRfNV9oaTtcbnZhciBzdW02NF81X2xvID0gdXRpbHMuc3VtNjRfNV9sbztcbnZhciBCbG9ja0hhc2ggPSBoYXNoLmNvbW1vbi5CbG9ja0hhc2g7XG5cbnZhciBzaGEyNTZfSyA9IFtcbiAgMHg0MjhhMmY5OCwgMHg3MTM3NDQ5MSwgMHhiNWMwZmJjZiwgMHhlOWI1ZGJhNSxcbiAgMHgzOTU2YzI1YiwgMHg1OWYxMTFmMSwgMHg5MjNmODJhNCwgMHhhYjFjNWVkNSxcbiAgMHhkODA3YWE5OCwgMHgxMjgzNWIwMSwgMHgyNDMxODViZSwgMHg1NTBjN2RjMyxcbiAgMHg3MmJlNWQ3NCwgMHg4MGRlYjFmZSwgMHg5YmRjMDZhNywgMHhjMTliZjE3NCxcbiAgMHhlNDliNjljMSwgMHhlZmJlNDc4NiwgMHgwZmMxOWRjNiwgMHgyNDBjYTFjYyxcbiAgMHgyZGU5MmM2ZiwgMHg0YTc0ODRhYSwgMHg1Y2IwYTlkYywgMHg3NmY5ODhkYSxcbiAgMHg5ODNlNTE1MiwgMHhhODMxYzY2ZCwgMHhiMDAzMjdjOCwgMHhiZjU5N2ZjNyxcbiAgMHhjNmUwMGJmMywgMHhkNWE3OTE0NywgMHgwNmNhNjM1MSwgMHgxNDI5Mjk2NyxcbiAgMHgyN2I3MGE4NSwgMHgyZTFiMjEzOCwgMHg0ZDJjNmRmYywgMHg1MzM4MGQxMyxcbiAgMHg2NTBhNzM1NCwgMHg3NjZhMGFiYiwgMHg4MWMyYzkyZSwgMHg5MjcyMmM4NSxcbiAgMHhhMmJmZThhMSwgMHhhODFhNjY0YiwgMHhjMjRiOGI3MCwgMHhjNzZjNTFhMyxcbiAgMHhkMTkyZTgxOSwgMHhkNjk5MDYyNCwgMHhmNDBlMzU4NSwgMHgxMDZhYTA3MCxcbiAgMHgxOWE0YzExNiwgMHgxZTM3NmMwOCwgMHgyNzQ4Nzc0YywgMHgzNGIwYmNiNSxcbiAgMHgzOTFjMGNiMywgMHg0ZWQ4YWE0YSwgMHg1YjljY2E0ZiwgMHg2ODJlNmZmMyxcbiAgMHg3NDhmODJlZSwgMHg3OGE1NjM2ZiwgMHg4NGM4NzgxNCwgMHg4Y2M3MDIwOCxcbiAgMHg5MGJlZmZmYSwgMHhhNDUwNmNlYiwgMHhiZWY5YTNmNywgMHhjNjcxNzhmMlxuXTtcblxudmFyIHNoYTUxMl9LID0gW1xuICAweDQyOGEyZjk4LCAweGQ3MjhhZTIyLCAweDcxMzc0NDkxLCAweDIzZWY2NWNkLFxuICAweGI1YzBmYmNmLCAweGVjNGQzYjJmLCAweGU5YjVkYmE1LCAweDgxODlkYmJjLFxuICAweDM5NTZjMjViLCAweGYzNDhiNTM4LCAweDU5ZjExMWYxLCAweGI2MDVkMDE5LFxuICAweDkyM2Y4MmE0LCAweGFmMTk0ZjliLCAweGFiMWM1ZWQ1LCAweGRhNmQ4MTE4LFxuICAweGQ4MDdhYTk4LCAweGEzMDMwMjQyLCAweDEyODM1YjAxLCAweDQ1NzA2ZmJlLFxuICAweDI0MzE4NWJlLCAweDRlZTRiMjhjLCAweDU1MGM3ZGMzLCAweGQ1ZmZiNGUyLFxuICAweDcyYmU1ZDc0LCAweGYyN2I4OTZmLCAweDgwZGViMWZlLCAweDNiMTY5NmIxLFxuICAweDliZGMwNmE3LCAweDI1YzcxMjM1LCAweGMxOWJmMTc0LCAweGNmNjkyNjk0LFxuICAweGU0OWI2OWMxLCAweDllZjE0YWQyLCAweGVmYmU0Nzg2LCAweDM4NGYyNWUzLFxuICAweDBmYzE5ZGM2LCAweDhiOGNkNWI1LCAweDI0MGNhMWNjLCAweDc3YWM5YzY1LFxuICAweDJkZTkyYzZmLCAweDU5MmIwMjc1LCAweDRhNzQ4NGFhLCAweDZlYTZlNDgzLFxuICAweDVjYjBhOWRjLCAweGJkNDFmYmQ0LCAweDc2Zjk4OGRhLCAweDgzMTE1M2I1LFxuICAweDk4M2U1MTUyLCAweGVlNjZkZmFiLCAweGE4MzFjNjZkLCAweDJkYjQzMjEwLFxuICAweGIwMDMyN2M4LCAweDk4ZmIyMTNmLCAweGJmNTk3ZmM3LCAweGJlZWYwZWU0LFxuICAweGM2ZTAwYmYzLCAweDNkYTg4ZmMyLCAweGQ1YTc5MTQ3LCAweDkzMGFhNzI1LFxuICAweDA2Y2E2MzUxLCAweGUwMDM4MjZmLCAweDE0MjkyOTY3LCAweDBhMGU2ZTcwLFxuICAweDI3YjcwYTg1LCAweDQ2ZDIyZmZjLCAweDJlMWIyMTM4LCAweDVjMjZjOTI2LFxuICAweDRkMmM2ZGZjLCAweDVhYzQyYWVkLCAweDUzMzgwZDEzLCAweDlkOTViM2RmLFxuICAweDY1MGE3MzU0LCAweDhiYWY2M2RlLCAweDc2NmEwYWJiLCAweDNjNzdiMmE4LFxuICAweDgxYzJjOTJlLCAweDQ3ZWRhZWU2LCAweDkyNzIyYzg1LCAweDE0ODIzNTNiLFxuICAweGEyYmZlOGExLCAweDRjZjEwMzY0LCAweGE4MWE2NjRiLCAweGJjNDIzMDAxLFxuICAweGMyNGI4YjcwLCAweGQwZjg5NzkxLCAweGM3NmM1MWEzLCAweDA2NTRiZTMwLFxuICAweGQxOTJlODE5LCAweGQ2ZWY1MjE4LCAweGQ2OTkwNjI0LCAweDU1NjVhOTEwLFxuICAweGY0MGUzNTg1LCAweDU3NzEyMDJhLCAweDEwNmFhMDcwLCAweDMyYmJkMWI4LFxuICAweDE5YTRjMTE2LCAweGI4ZDJkMGM4LCAweDFlMzc2YzA4LCAweDUxNDFhYjUzLFxuICAweDI3NDg3NzRjLCAweGRmOGVlYjk5LCAweDM0YjBiY2I1LCAweGUxOWI0OGE4LFxuICAweDM5MWMwY2IzLCAweGM1Yzk1YTYzLCAweDRlZDhhYTRhLCAweGUzNDE4YWNiLFxuICAweDViOWNjYTRmLCAweDc3NjNlMzczLCAweDY4MmU2ZmYzLCAweGQ2YjJiOGEzLFxuICAweDc0OGY4MmVlLCAweDVkZWZiMmZjLCAweDc4YTU2MzZmLCAweDQzMTcyZjYwLFxuICAweDg0Yzg3ODE0LCAweGExZjBhYjcyLCAweDhjYzcwMjA4LCAweDFhNjQzOWVjLFxuICAweDkwYmVmZmZhLCAweDIzNjMxZTI4LCAweGE0NTA2Y2ViLCAweGRlODJiZGU5LFxuICAweGJlZjlhM2Y3LCAweGIyYzY3OTE1LCAweGM2NzE3OGYyLCAweGUzNzI1MzJiLFxuICAweGNhMjczZWNlLCAweGVhMjY2MTljLCAweGQxODZiOGM3LCAweDIxYzBjMjA3LFxuICAweGVhZGE3ZGQ2LCAweGNkZTBlYjFlLCAweGY1N2Q0ZjdmLCAweGVlNmVkMTc4LFxuICAweDA2ZjA2N2FhLCAweDcyMTc2ZmJhLCAweDBhNjM3ZGM1LCAweGEyYzg5OGE2LFxuICAweDExM2Y5ODA0LCAweGJlZjkwZGFlLCAweDFiNzEwYjM1LCAweDEzMWM0NzFiLFxuICAweDI4ZGI3N2Y1LCAweDIzMDQ3ZDg0LCAweDMyY2FhYjdiLCAweDQwYzcyNDkzLFxuICAweDNjOWViZTBhLCAweDE1YzliZWJjLCAweDQzMWQ2N2M0LCAweDljMTAwZDRjLFxuICAweDRjYzVkNGJlLCAweGNiM2U0MmI2LCAweDU5N2YyOTljLCAweGZjNjU3ZTJhLFxuICAweDVmY2I2ZmFiLCAweDNhZDZmYWVjLCAweDZjNDQxOThjLCAweDRhNDc1ODE3XG5dO1xuXG52YXIgc2hhMV9LID0gW1xuICAweDVBODI3OTk5LCAweDZFRDlFQkExLFxuICAweDhGMUJCQ0RDLCAweENBNjJDMUQ2XG5dO1xuXG5mdW5jdGlvbiBTSEEyNTYoKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBTSEEyNTYpKVxuICAgIHJldHVybiBuZXcgU0hBMjU2KCk7XG5cbiAgQmxvY2tIYXNoLmNhbGwodGhpcyk7XG4gIHRoaXMuaCA9IFsgMHg2YTA5ZTY2NywgMHhiYjY3YWU4NSwgMHgzYzZlZjM3MiwgMHhhNTRmZjUzYSxcbiAgICAgICAgICAgICAweDUxMGU1MjdmLCAweDliMDU2ODhjLCAweDFmODNkOWFiLCAweDViZTBjZDE5IF07XG4gIHRoaXMuayA9IHNoYTI1Nl9LO1xuICB0aGlzLlcgPSBuZXcgQXJyYXkoNjQpO1xufVxudXRpbHMuaW5oZXJpdHMoU0hBMjU2LCBCbG9ja0hhc2gpO1xuZXhwb3J0cy5zaGEyNTYgPSBTSEEyNTY7XG5cblNIQTI1Ni5ibG9ja1NpemUgPSA1MTI7XG5TSEEyNTYub3V0U2l6ZSA9IDI1NjtcblNIQTI1Ni5obWFjU3RyZW5ndGggPSAxOTI7XG5TSEEyNTYucGFkTGVuZ3RoID0gNjQ7XG5cblNIQTI1Ni5wcm90b3R5cGUuX3VwZGF0ZSA9IGZ1bmN0aW9uIF91cGRhdGUobXNnLCBzdGFydCkge1xuICB2YXIgVyA9IHRoaXMuVztcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IDE2OyBpKyspXG4gICAgV1tpXSA9IG1zZ1tzdGFydCArIGldO1xuICBmb3IgKDsgaSA8IFcubGVuZ3RoOyBpKyspXG4gICAgV1tpXSA9IHN1bTMyXzQoZzFfMjU2KFdbaSAtIDJdKSwgV1tpIC0gN10sIGcwXzI1NihXW2kgLSAxNV0pLCBXW2kgLSAxNl0pO1xuXG4gIHZhciBhID0gdGhpcy5oWzBdO1xuICB2YXIgYiA9IHRoaXMuaFsxXTtcbiAgdmFyIGMgPSB0aGlzLmhbMl07XG4gIHZhciBkID0gdGhpcy5oWzNdO1xuICB2YXIgZSA9IHRoaXMuaFs0XTtcbiAgdmFyIGYgPSB0aGlzLmhbNV07XG4gIHZhciBnID0gdGhpcy5oWzZdO1xuICB2YXIgaCA9IHRoaXMuaFs3XTtcblxuICBhc3NlcnQodGhpcy5rLmxlbmd0aCA9PT0gVy5sZW5ndGgpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IFcubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgVDEgPSBzdW0zMl81KGgsIHMxXzI1NihlKSwgY2gzMihlLCBmLCBnKSwgdGhpcy5rW2ldLCBXW2ldKTtcbiAgICB2YXIgVDIgPSBzdW0zMihzMF8yNTYoYSksIG1hajMyKGEsIGIsIGMpKTtcbiAgICBoID0gZztcbiAgICBnID0gZjtcbiAgICBmID0gZTtcbiAgICBlID0gc3VtMzIoZCwgVDEpO1xuICAgIGQgPSBjO1xuICAgIGMgPSBiO1xuICAgIGIgPSBhO1xuICAgIGEgPSBzdW0zMihUMSwgVDIpO1xuICB9XG5cbiAgdGhpcy5oWzBdID0gc3VtMzIodGhpcy5oWzBdLCBhKTtcbiAgdGhpcy5oWzFdID0gc3VtMzIodGhpcy5oWzFdLCBiKTtcbiAgdGhpcy5oWzJdID0gc3VtMzIodGhpcy5oWzJdLCBjKTtcbiAgdGhpcy5oWzNdID0gc3VtMzIodGhpcy5oWzNdLCBkKTtcbiAgdGhpcy5oWzRdID0gc3VtMzIodGhpcy5oWzRdLCBlKTtcbiAgdGhpcy5oWzVdID0gc3VtMzIodGhpcy5oWzVdLCBmKTtcbiAgdGhpcy5oWzZdID0gc3VtMzIodGhpcy5oWzZdLCBnKTtcbiAgdGhpcy5oWzddID0gc3VtMzIodGhpcy5oWzddLCBoKTtcbn07XG5cblNIQTI1Ni5wcm90b3R5cGUuX2RpZ2VzdCA9IGZ1bmN0aW9uIGRpZ2VzdChlbmMpIHtcbiAgaWYgKGVuYyA9PT0gJ2hleCcpXG4gICAgcmV0dXJuIHV0aWxzLnRvSGV4MzIodGhpcy5oLCAnYmlnJyk7XG4gIGVsc2VcbiAgICByZXR1cm4gdXRpbHMuc3BsaXQzMih0aGlzLmgsICdiaWcnKTtcbn07XG5cbmZ1bmN0aW9uIFNIQTIyNCgpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFNIQTIyNCkpXG4gICAgcmV0dXJuIG5ldyBTSEEyMjQoKTtcblxuICBTSEEyNTYuY2FsbCh0aGlzKTtcbiAgdGhpcy5oID0gWyAweGMxMDU5ZWQ4LCAweDM2N2NkNTA3LCAweDMwNzBkZDE3LCAweGY3MGU1OTM5LFxuICAgICAgICAgICAgIDB4ZmZjMDBiMzEsIDB4Njg1ODE1MTEsIDB4NjRmOThmYTcsIDB4YmVmYTRmYTQgXTtcbn1cbnV0aWxzLmluaGVyaXRzKFNIQTIyNCwgU0hBMjU2KTtcbmV4cG9ydHMuc2hhMjI0ID0gU0hBMjI0O1xuXG5TSEEyMjQuYmxvY2tTaXplID0gNTEyO1xuU0hBMjI0Lm91dFNpemUgPSAyMjQ7XG5TSEEyMjQuaG1hY1N0cmVuZ3RoID0gMTkyO1xuU0hBMjI0LnBhZExlbmd0aCA9IDY0O1xuXG5TSEEyMjQucHJvdG90eXBlLl9kaWdlc3QgPSBmdW5jdGlvbiBkaWdlc3QoZW5jKSB7XG4gIC8vIEp1c3QgdHJ1bmNhdGUgb3V0cHV0XG4gIGlmIChlbmMgPT09ICdoZXgnKVxuICAgIHJldHVybiB1dGlscy50b0hleDMyKHRoaXMuaC5zbGljZSgwLCA3KSwgJ2JpZycpO1xuICBlbHNlXG4gICAgcmV0dXJuIHV0aWxzLnNwbGl0MzIodGhpcy5oLnNsaWNlKDAsIDcpLCAnYmlnJyk7XG59O1xuXG5mdW5jdGlvbiBTSEE1MTIoKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBTSEE1MTIpKVxuICAgIHJldHVybiBuZXcgU0hBNTEyKCk7XG5cbiAgQmxvY2tIYXNoLmNhbGwodGhpcyk7XG4gIHRoaXMuaCA9IFsgMHg2YTA5ZTY2NywgMHhmM2JjYzkwOCxcbiAgICAgICAgICAgICAweGJiNjdhZTg1LCAweDg0Y2FhNzNiLFxuICAgICAgICAgICAgIDB4M2M2ZWYzNzIsIDB4ZmU5NGY4MmIsXG4gICAgICAgICAgICAgMHhhNTRmZjUzYSwgMHg1ZjFkMzZmMSxcbiAgICAgICAgICAgICAweDUxMGU1MjdmLCAweGFkZTY4MmQxLFxuICAgICAgICAgICAgIDB4OWIwNTY4OGMsIDB4MmIzZTZjMWYsXG4gICAgICAgICAgICAgMHgxZjgzZDlhYiwgMHhmYjQxYmQ2YixcbiAgICAgICAgICAgICAweDViZTBjZDE5LCAweDEzN2UyMTc5IF07XG4gIHRoaXMuayA9IHNoYTUxMl9LO1xuICB0aGlzLlcgPSBuZXcgQXJyYXkoMTYwKTtcbn1cbnV0aWxzLmluaGVyaXRzKFNIQTUxMiwgQmxvY2tIYXNoKTtcbmV4cG9ydHMuc2hhNTEyID0gU0hBNTEyO1xuXG5TSEE1MTIuYmxvY2tTaXplID0gMTAyNDtcblNIQTUxMi5vdXRTaXplID0gNTEyO1xuU0hBNTEyLmhtYWNTdHJlbmd0aCA9IDE5MjtcblNIQTUxMi5wYWRMZW5ndGggPSAxMjg7XG5cblNIQTUxMi5wcm90b3R5cGUuX3ByZXBhcmVCbG9jayA9IGZ1bmN0aW9uIF9wcmVwYXJlQmxvY2sobXNnLCBzdGFydCkge1xuICB2YXIgVyA9IHRoaXMuVztcblxuICAvLyAzMiB4IDMyYml0IHdvcmRzXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgMzI7IGkrKylcbiAgICBXW2ldID0gbXNnW3N0YXJ0ICsgaV07XG4gIGZvciAoOyBpIDwgVy5sZW5ndGg7IGkgKz0gMikge1xuICAgIHZhciBjMF9oaSA9IGcxXzUxMl9oaShXW2kgLSA0XSwgV1tpIC0gM10pOyAgLy8gaSAtIDJcbiAgICB2YXIgYzBfbG8gPSBnMV81MTJfbG8oV1tpIC0gNF0sIFdbaSAtIDNdKTtcbiAgICB2YXIgYzFfaGkgPSBXW2kgLSAxNF07ICAvLyBpIC0gN1xuICAgIHZhciBjMV9sbyA9IFdbaSAtIDEzXTtcbiAgICB2YXIgYzJfaGkgPSBnMF81MTJfaGkoV1tpIC0gMzBdLCBXW2kgLSAyOV0pOyAgLy8gaSAtIDE1XG4gICAgdmFyIGMyX2xvID0gZzBfNTEyX2xvKFdbaSAtIDMwXSwgV1tpIC0gMjldKTtcbiAgICB2YXIgYzNfaGkgPSBXW2kgLSAzMl07ICAvLyBpIC0gMTZcbiAgICB2YXIgYzNfbG8gPSBXW2kgLSAzMV07XG5cbiAgICBXW2ldID0gc3VtNjRfNF9oaShjMF9oaSwgYzBfbG8sXG4gICAgICAgICAgICAgICAgICAgICAgYzFfaGksIGMxX2xvLFxuICAgICAgICAgICAgICAgICAgICAgIGMyX2hpLCBjMl9sbyxcbiAgICAgICAgICAgICAgICAgICAgICBjM19oaSwgYzNfbG8pO1xuICAgIFdbaSArIDFdID0gc3VtNjRfNF9sbyhjMF9oaSwgYzBfbG8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGMxX2hpLCBjMV9sbyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYzJfaGksIGMyX2xvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBjM19oaSwgYzNfbG8pO1xuICB9XG59O1xuXG5TSEE1MTIucHJvdG90eXBlLl91cGRhdGUgPSBmdW5jdGlvbiBfdXBkYXRlKG1zZywgc3RhcnQpIHtcbiAgdGhpcy5fcHJlcGFyZUJsb2NrKG1zZywgc3RhcnQpO1xuXG4gIHZhciBXID0gdGhpcy5XO1xuXG4gIHZhciBhaCA9IHRoaXMuaFswXTtcbiAgdmFyIGFsID0gdGhpcy5oWzFdO1xuICB2YXIgYmggPSB0aGlzLmhbMl07XG4gIHZhciBibCA9IHRoaXMuaFszXTtcbiAgdmFyIGNoID0gdGhpcy5oWzRdO1xuICB2YXIgY2wgPSB0aGlzLmhbNV07XG4gIHZhciBkaCA9IHRoaXMuaFs2XTtcbiAgdmFyIGRsID0gdGhpcy5oWzddO1xuICB2YXIgZWggPSB0aGlzLmhbOF07XG4gIHZhciBlbCA9IHRoaXMuaFs5XTtcbiAgdmFyIGZoID0gdGhpcy5oWzEwXTtcbiAgdmFyIGZsID0gdGhpcy5oWzExXTtcbiAgdmFyIGdoID0gdGhpcy5oWzEyXTtcbiAgdmFyIGdsID0gdGhpcy5oWzEzXTtcbiAgdmFyIGhoID0gdGhpcy5oWzE0XTtcbiAgdmFyIGhsID0gdGhpcy5oWzE1XTtcblxuICBhc3NlcnQodGhpcy5rLmxlbmd0aCA9PT0gVy5sZW5ndGgpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IFcubGVuZ3RoOyBpICs9IDIpIHtcbiAgICB2YXIgYzBfaGkgPSBoaDtcbiAgICB2YXIgYzBfbG8gPSBobDtcbiAgICB2YXIgYzFfaGkgPSBzMV81MTJfaGkoZWgsIGVsKTtcbiAgICB2YXIgYzFfbG8gPSBzMV81MTJfbG8oZWgsIGVsKTtcbiAgICB2YXIgYzJfaGkgPSBjaDY0X2hpKGVoLCBlbCwgZmgsIGZsLCBnaCwgZ2wpO1xuICAgIHZhciBjMl9sbyA9IGNoNjRfbG8oZWgsIGVsLCBmaCwgZmwsIGdoLCBnbCk7XG4gICAgdmFyIGMzX2hpID0gdGhpcy5rW2ldO1xuICAgIHZhciBjM19sbyA9IHRoaXMua1tpICsgMV07XG4gICAgdmFyIGM0X2hpID0gV1tpXTtcbiAgICB2YXIgYzRfbG8gPSBXW2kgKyAxXTtcblxuICAgIHZhciBUMV9oaSA9IHN1bTY0XzVfaGkoYzBfaGksIGMwX2xvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgYzFfaGksIGMxX2xvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgYzJfaGksIGMyX2xvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgYzNfaGksIGMzX2xvLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgYzRfaGksIGM0X2xvKTtcbiAgICB2YXIgVDFfbG8gPSBzdW02NF81X2xvKGMwX2hpLCBjMF9sbyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGMxX2hpLCBjMV9sbyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGMyX2hpLCBjMl9sbyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGMzX2hpLCBjM19sbyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGM0X2hpLCBjNF9sbyk7XG5cbiAgICB2YXIgYzBfaGkgPSBzMF81MTJfaGkoYWgsIGFsKTtcbiAgICB2YXIgYzBfbG8gPSBzMF81MTJfbG8oYWgsIGFsKTtcbiAgICB2YXIgYzFfaGkgPSBtYWo2NF9oaShhaCwgYWwsIGJoLCBibCwgY2gsIGNsKTtcbiAgICB2YXIgYzFfbG8gPSBtYWo2NF9sbyhhaCwgYWwsIGJoLCBibCwgY2gsIGNsKTtcblxuICAgIHZhciBUMl9oaSA9IHN1bTY0X2hpKGMwX2hpLCBjMF9sbywgYzFfaGksIGMxX2xvKTtcbiAgICB2YXIgVDJfbG8gPSBzdW02NF9sbyhjMF9oaSwgYzBfbG8sIGMxX2hpLCBjMV9sbyk7XG5cbiAgICBoaCA9IGdoO1xuICAgIGhsID0gZ2w7XG5cbiAgICBnaCA9IGZoO1xuICAgIGdsID0gZmw7XG5cbiAgICBmaCA9IGVoO1xuICAgIGZsID0gZWw7XG5cbiAgICBlaCA9IHN1bTY0X2hpKGRoLCBkbCwgVDFfaGksIFQxX2xvKTtcbiAgICBlbCA9IHN1bTY0X2xvKGRsLCBkbCwgVDFfaGksIFQxX2xvKTtcblxuICAgIGRoID0gY2g7XG4gICAgZGwgPSBjbDtcblxuICAgIGNoID0gYmg7XG4gICAgY2wgPSBibDtcblxuICAgIGJoID0gYWg7XG4gICAgYmwgPSBhbDtcblxuICAgIGFoID0gc3VtNjRfaGkoVDFfaGksIFQxX2xvLCBUMl9oaSwgVDJfbG8pO1xuICAgIGFsID0gc3VtNjRfbG8oVDFfaGksIFQxX2xvLCBUMl9oaSwgVDJfbG8pO1xuICB9XG5cbiAgc3VtNjQodGhpcy5oLCAwLCBhaCwgYWwpO1xuICBzdW02NCh0aGlzLmgsIDIsIGJoLCBibCk7XG4gIHN1bTY0KHRoaXMuaCwgNCwgY2gsIGNsKTtcbiAgc3VtNjQodGhpcy5oLCA2LCBkaCwgZGwpO1xuICBzdW02NCh0aGlzLmgsIDgsIGVoLCBlbCk7XG4gIHN1bTY0KHRoaXMuaCwgMTAsIGZoLCBmbCk7XG4gIHN1bTY0KHRoaXMuaCwgMTIsIGdoLCBnbCk7XG4gIHN1bTY0KHRoaXMuaCwgMTQsIGhoLCBobCk7XG59O1xuXG5TSEE1MTIucHJvdG90eXBlLl9kaWdlc3QgPSBmdW5jdGlvbiBkaWdlc3QoZW5jKSB7XG4gIGlmIChlbmMgPT09ICdoZXgnKVxuICAgIHJldHVybiB1dGlscy50b0hleDMyKHRoaXMuaCwgJ2JpZycpO1xuICBlbHNlXG4gICAgcmV0dXJuIHV0aWxzLnNwbGl0MzIodGhpcy5oLCAnYmlnJyk7XG59O1xuXG5mdW5jdGlvbiBTSEEzODQoKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBTSEEzODQpKVxuICAgIHJldHVybiBuZXcgU0hBMzg0KCk7XG5cbiAgU0hBNTEyLmNhbGwodGhpcyk7XG4gIHRoaXMuaCA9IFsgMHhjYmJiOWQ1ZCwgMHhjMTA1OWVkOCxcbiAgICAgICAgICAgICAweDYyOWEyOTJhLCAweDM2N2NkNTA3LFxuICAgICAgICAgICAgIDB4OTE1OTAxNWEsIDB4MzA3MGRkMTcsXG4gICAgICAgICAgICAgMHgxNTJmZWNkOCwgMHhmNzBlNTkzOSxcbiAgICAgICAgICAgICAweDY3MzMyNjY3LCAweGZmYzAwYjMxLFxuICAgICAgICAgICAgIDB4OGViNDRhODcsIDB4Njg1ODE1MTEsXG4gICAgICAgICAgICAgMHhkYjBjMmUwZCwgMHg2NGY5OGZhNyxcbiAgICAgICAgICAgICAweDQ3YjU0ODFkLCAweGJlZmE0ZmE0IF07XG59XG51dGlscy5pbmhlcml0cyhTSEEzODQsIFNIQTUxMik7XG5leHBvcnRzLnNoYTM4NCA9IFNIQTM4NDtcblxuU0hBMzg0LmJsb2NrU2l6ZSA9IDEwMjQ7XG5TSEEzODQub3V0U2l6ZSA9IDM4NDtcblNIQTM4NC5obWFjU3RyZW5ndGggPSAxOTI7XG5TSEEzODQucGFkTGVuZ3RoID0gMTI4O1xuXG5TSEEzODQucHJvdG90eXBlLl9kaWdlc3QgPSBmdW5jdGlvbiBkaWdlc3QoZW5jKSB7XG4gIGlmIChlbmMgPT09ICdoZXgnKVxuICAgIHJldHVybiB1dGlscy50b0hleDMyKHRoaXMuaC5zbGljZSgwLCAxMiksICdiaWcnKTtcbiAgZWxzZVxuICAgIHJldHVybiB1dGlscy5zcGxpdDMyKHRoaXMuaC5zbGljZSgwLCAxMiksICdiaWcnKTtcbn07XG5cbmZ1bmN0aW9uIFNIQTEoKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBTSEExKSlcbiAgICByZXR1cm4gbmV3IFNIQTEoKTtcblxuICBCbG9ja0hhc2guY2FsbCh0aGlzKTtcbiAgdGhpcy5oID0gWyAweDY3NDUyMzAxLCAweGVmY2RhYjg5LCAweDk4YmFkY2ZlLFxuICAgICAgICAgICAgIDB4MTAzMjU0NzYsIDB4YzNkMmUxZjAgXTtcbiAgdGhpcy5XID0gbmV3IEFycmF5KDgwKTtcbn1cblxudXRpbHMuaW5oZXJpdHMoU0hBMSwgQmxvY2tIYXNoKTtcbmV4cG9ydHMuc2hhMSA9IFNIQTE7XG5cblNIQTEuYmxvY2tTaXplID0gNTEyO1xuU0hBMS5vdXRTaXplID0gMTYwO1xuU0hBMS5obWFjU3RyZW5ndGggPSA4MDtcblNIQTEucGFkTGVuZ3RoID0gNjQ7XG5cblNIQTEucHJvdG90eXBlLl91cGRhdGUgPSBmdW5jdGlvbiBfdXBkYXRlKG1zZywgc3RhcnQpIHtcbiAgdmFyIFcgPSB0aGlzLlc7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCAxNjsgaSsrKVxuICAgIFdbaV0gPSBtc2dbc3RhcnQgKyBpXTtcblxuICBmb3IoOyBpIDwgVy5sZW5ndGg7IGkrKylcbiAgICBXW2ldID0gcm90bDMyKFdbaSAtIDNdIF4gV1tpIC0gOF0gXiBXW2kgLSAxNF0gXiBXW2kgLSAxNl0sIDEpO1xuXG4gIHZhciBhID0gdGhpcy5oWzBdO1xuICB2YXIgYiA9IHRoaXMuaFsxXTtcbiAgdmFyIGMgPSB0aGlzLmhbMl07XG4gIHZhciBkID0gdGhpcy5oWzNdO1xuICB2YXIgZSA9IHRoaXMuaFs0XTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IFcubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgcyA9IH5+KGkgLyAyMCk7XG4gICAgdmFyIHQgPSBzdW0zMl81KHJvdGwzMihhLCA1KSwgZnRfMShzLCBiLCBjLCBkKSwgZSwgV1tpXSwgc2hhMV9LW3NdKTtcbiAgICBlID0gZDtcbiAgICBkID0gYztcbiAgICBjID0gcm90bDMyKGIsIDMwKTtcbiAgICBiID0gYTtcbiAgICBhID0gdDtcbiAgfVxuXG4gIHRoaXMuaFswXSA9IHN1bTMyKHRoaXMuaFswXSwgYSk7XG4gIHRoaXMuaFsxXSA9IHN1bTMyKHRoaXMuaFsxXSwgYik7XG4gIHRoaXMuaFsyXSA9IHN1bTMyKHRoaXMuaFsyXSwgYyk7XG4gIHRoaXMuaFszXSA9IHN1bTMyKHRoaXMuaFszXSwgZCk7XG4gIHRoaXMuaFs0XSA9IHN1bTMyKHRoaXMuaFs0XSwgZSk7XG59O1xuXG5TSEExLnByb3RvdHlwZS5fZGlnZXN0ID0gZnVuY3Rpb24gZGlnZXN0KGVuYykge1xuICBpZiAoZW5jID09PSAnaGV4JylcbiAgICByZXR1cm4gdXRpbHMudG9IZXgzMih0aGlzLmgsICdiaWcnKTtcbiAgZWxzZVxuICAgIHJldHVybiB1dGlscy5zcGxpdDMyKHRoaXMuaCwgJ2JpZycpO1xufTtcblxuZnVuY3Rpb24gY2gzMih4LCB5LCB6KSB7XG4gIHJldHVybiAoeCAmIHkpIF4gKCh+eCkgJiB6KTtcbn1cblxuZnVuY3Rpb24gbWFqMzIoeCwgeSwgeikge1xuICByZXR1cm4gKHggJiB5KSBeICh4ICYgeikgXiAoeSAmIHopO1xufVxuXG5mdW5jdGlvbiBwMzIoeCwgeSwgeikge1xuICByZXR1cm4geCBeIHkgXiB6O1xufVxuXG5mdW5jdGlvbiBzMF8yNTYoeCkge1xuICByZXR1cm4gcm90cjMyKHgsIDIpIF4gcm90cjMyKHgsIDEzKSBeIHJvdHIzMih4LCAyMik7XG59XG5cbmZ1bmN0aW9uIHMxXzI1Nih4KSB7XG4gIHJldHVybiByb3RyMzIoeCwgNikgXiByb3RyMzIoeCwgMTEpIF4gcm90cjMyKHgsIDI1KTtcbn1cblxuZnVuY3Rpb24gZzBfMjU2KHgpIHtcbiAgcmV0dXJuIHJvdHIzMih4LCA3KSBeIHJvdHIzMih4LCAxOCkgXiAoeCA+Pj4gMyk7XG59XG5cbmZ1bmN0aW9uIGcxXzI1Nih4KSB7XG4gIHJldHVybiByb3RyMzIoeCwgMTcpIF4gcm90cjMyKHgsIDE5KSBeICh4ID4+PiAxMCk7XG59XG5cbmZ1bmN0aW9uIGZ0XzEocywgeCwgeSwgeikge1xuICBpZiAocyA9PT0gMClcbiAgICByZXR1cm4gY2gzMih4LCB5LCB6KTtcbiAgaWYgKHMgPT09IDEgfHwgcyA9PT0gMylcbiAgICByZXR1cm4gcDMyKHgsIHksIHopO1xuICBpZiAocyA9PT0gMilcbiAgICByZXR1cm4gbWFqMzIoeCwgeSwgeik7XG59XG5cbmZ1bmN0aW9uIGNoNjRfaGkoeGgsIHhsLCB5aCwgeWwsIHpoLCB6bCkge1xuICB2YXIgciA9ICh4aCAmIHloKSBeICgofnhoKSAmIHpoKTtcbiAgaWYgKHIgPCAwKVxuICAgIHIgKz0gMHgxMDAwMDAwMDA7XG4gIHJldHVybiByO1xufVxuXG5mdW5jdGlvbiBjaDY0X2xvKHhoLCB4bCwgeWgsIHlsLCB6aCwgemwpIHtcbiAgdmFyIHIgPSAoeGwgJiB5bCkgXiAoKH54bCkgJiB6bCk7XG4gIGlmIChyIDwgMClcbiAgICByICs9IDB4MTAwMDAwMDAwO1xuICByZXR1cm4gcjtcbn1cblxuZnVuY3Rpb24gbWFqNjRfaGkoeGgsIHhsLCB5aCwgeWwsIHpoLCB6bCkge1xuICB2YXIgciA9ICh4aCAmIHloKSBeICh4aCAmIHpoKSBeICh5aCAmIHpoKTtcbiAgaWYgKHIgPCAwKVxuICAgIHIgKz0gMHgxMDAwMDAwMDA7XG4gIHJldHVybiByO1xufVxuXG5mdW5jdGlvbiBtYWo2NF9sbyh4aCwgeGwsIHloLCB5bCwgemgsIHpsKSB7XG4gIHZhciByID0gKHhsICYgeWwpIF4gKHhsICYgemwpIF4gKHlsICYgemwpO1xuICBpZiAociA8IDApXG4gICAgciArPSAweDEwMDAwMDAwMDtcbiAgcmV0dXJuIHI7XG59XG5cbmZ1bmN0aW9uIHMwXzUxMl9oaSh4aCwgeGwpIHtcbiAgdmFyIGMwX2hpID0gcm90cjY0X2hpKHhoLCB4bCwgMjgpO1xuICB2YXIgYzFfaGkgPSByb3RyNjRfaGkoeGwsIHhoLCAyKTsgIC8vIDM0XG4gIHZhciBjMl9oaSA9IHJvdHI2NF9oaSh4bCwgeGgsIDcpOyAgLy8gMzlcblxuICB2YXIgciA9IGMwX2hpIF4gYzFfaGkgXiBjMl9oaTtcbiAgaWYgKHIgPCAwKVxuICAgIHIgKz0gMHgxMDAwMDAwMDA7XG4gIHJldHVybiByO1xufVxuXG5mdW5jdGlvbiBzMF81MTJfbG8oeGgsIHhsKSB7XG4gIHZhciBjMF9sbyA9IHJvdHI2NF9sbyh4aCwgeGwsIDI4KTtcbiAgdmFyIGMxX2xvID0gcm90cjY0X2xvKHhsLCB4aCwgMik7ICAvLyAzNFxuICB2YXIgYzJfbG8gPSByb3RyNjRfbG8oeGwsIHhoLCA3KTsgIC8vIDM5XG5cbiAgdmFyIHIgPSBjMF9sbyBeIGMxX2xvIF4gYzJfbG87XG4gIGlmIChyIDwgMClcbiAgICByICs9IDB4MTAwMDAwMDAwO1xuICByZXR1cm4gcjtcbn1cblxuZnVuY3Rpb24gczFfNTEyX2hpKHhoLCB4bCkge1xuICB2YXIgYzBfaGkgPSByb3RyNjRfaGkoeGgsIHhsLCAxNCk7XG4gIHZhciBjMV9oaSA9IHJvdHI2NF9oaSh4aCwgeGwsIDE4KTtcbiAgdmFyIGMyX2hpID0gcm90cjY0X2hpKHhsLCB4aCwgOSk7ICAvLyA0MVxuXG4gIHZhciByID0gYzBfaGkgXiBjMV9oaSBeIGMyX2hpO1xuICBpZiAociA8IDApXG4gICAgciArPSAweDEwMDAwMDAwMDtcbiAgcmV0dXJuIHI7XG59XG5cbmZ1bmN0aW9uIHMxXzUxMl9sbyh4aCwgeGwpIHtcbiAgdmFyIGMwX2xvID0gcm90cjY0X2xvKHhoLCB4bCwgMTQpO1xuICB2YXIgYzFfbG8gPSByb3RyNjRfbG8oeGgsIHhsLCAxOCk7XG4gIHZhciBjMl9sbyA9IHJvdHI2NF9sbyh4bCwgeGgsIDkpOyAgLy8gNDFcblxuICB2YXIgciA9IGMwX2xvIF4gYzFfbG8gXiBjMl9sbztcbiAgaWYgKHIgPCAwKVxuICAgIHIgKz0gMHgxMDAwMDAwMDA7XG4gIHJldHVybiByO1xufVxuXG5mdW5jdGlvbiBnMF81MTJfaGkoeGgsIHhsKSB7XG4gIHZhciBjMF9oaSA9IHJvdHI2NF9oaSh4aCwgeGwsIDEpO1xuICB2YXIgYzFfaGkgPSByb3RyNjRfaGkoeGgsIHhsLCA4KTtcbiAgdmFyIGMyX2hpID0gc2hyNjRfaGkoeGgsIHhsLCA3KTtcblxuICB2YXIgciA9IGMwX2hpIF4gYzFfaGkgXiBjMl9oaTtcbiAgaWYgKHIgPCAwKVxuICAgIHIgKz0gMHgxMDAwMDAwMDA7XG4gIHJldHVybiByO1xufVxuXG5mdW5jdGlvbiBnMF81MTJfbG8oeGgsIHhsKSB7XG4gIHZhciBjMF9sbyA9IHJvdHI2NF9sbyh4aCwgeGwsIDEpO1xuICB2YXIgYzFfbG8gPSByb3RyNjRfbG8oeGgsIHhsLCA4KTtcbiAgdmFyIGMyX2xvID0gc2hyNjRfbG8oeGgsIHhsLCA3KTtcblxuICB2YXIgciA9IGMwX2xvIF4gYzFfbG8gXiBjMl9sbztcbiAgaWYgKHIgPCAwKVxuICAgIHIgKz0gMHgxMDAwMDAwMDA7XG4gIHJldHVybiByO1xufVxuXG5mdW5jdGlvbiBnMV81MTJfaGkoeGgsIHhsKSB7XG4gIHZhciBjMF9oaSA9IHJvdHI2NF9oaSh4aCwgeGwsIDE5KTtcbiAgdmFyIGMxX2hpID0gcm90cjY0X2hpKHhsLCB4aCwgMjkpOyAgLy8gNjFcbiAgdmFyIGMyX2hpID0gc2hyNjRfaGkoeGgsIHhsLCA2KTtcblxuICB2YXIgciA9IGMwX2hpIF4gYzFfaGkgXiBjMl9oaTtcbiAgaWYgKHIgPCAwKVxuICAgIHIgKz0gMHgxMDAwMDAwMDA7XG4gIHJldHVybiByO1xufVxuXG5mdW5jdGlvbiBnMV81MTJfbG8oeGgsIHhsKSB7XG4gIHZhciBjMF9sbyA9IHJvdHI2NF9sbyh4aCwgeGwsIDE5KTtcbiAgdmFyIGMxX2xvID0gcm90cjY0X2xvKHhsLCB4aCwgMjkpOyAgLy8gNjFcbiAgdmFyIGMyX2xvID0gc2hyNjRfbG8oeGgsIHhsLCA2KTtcblxuICB2YXIgciA9IGMwX2xvIF4gYzFfbG8gXiBjMl9sbztcbiAgaWYgKHIgPCAwKVxuICAgIHIgKz0gMHgxMDAwMDAwMDA7XG4gIHJldHVybiByO1xufVxuIiwidmFyIHV0aWxzID0gZXhwb3J0cztcbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJyk7XG5cbmZ1bmN0aW9uIHRvQXJyYXkobXNnLCBlbmMpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkobXNnKSlcbiAgICByZXR1cm4gbXNnLnNsaWNlKCk7XG4gIGlmICghbXNnKVxuICAgIHJldHVybiBbXTtcbiAgdmFyIHJlcyA9IFtdO1xuICBpZiAodHlwZW9mIG1zZyA9PT0gJ3N0cmluZycpIHtcbiAgICBpZiAoIWVuYykge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtc2cubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGMgPSBtc2cuY2hhckNvZGVBdChpKTtcbiAgICAgICAgdmFyIGhpID0gYyA+PiA4O1xuICAgICAgICB2YXIgbG8gPSBjICYgMHhmZjtcbiAgICAgICAgaWYgKGhpKVxuICAgICAgICAgIHJlcy5wdXNoKGhpLCBsbyk7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICByZXMucHVzaChsbyk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChlbmMgPT09ICdoZXgnKSB7XG4gICAgICBtc2cgPSBtc2cucmVwbGFjZSgvW15hLXowLTldKy9pZywgJycpO1xuICAgICAgaWYgKG1zZy5sZW5ndGggJSAyICE9PSAwKVxuICAgICAgICBtc2cgPSAnMCcgKyBtc2c7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1zZy5sZW5ndGg7IGkgKz0gMilcbiAgICAgICAgcmVzLnB1c2gocGFyc2VJbnQobXNnW2ldICsgbXNnW2kgKyAxXSwgMTYpKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtc2cubGVuZ3RoOyBpKyspXG4gICAgICByZXNbaV0gPSBtc2dbaV0gfCAwO1xuICB9XG4gIHJldHVybiByZXM7XG59XG51dGlscy50b0FycmF5ID0gdG9BcnJheTtcblxuZnVuY3Rpb24gdG9IZXgobXNnKSB7XG4gIHZhciByZXMgPSAnJztcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBtc2cubGVuZ3RoOyBpKyspXG4gICAgcmVzICs9IHplcm8yKG1zZ1tpXS50b1N0cmluZygxNikpO1xuICByZXR1cm4gcmVzO1xufVxudXRpbHMudG9IZXggPSB0b0hleDtcblxuZnVuY3Rpb24gaHRvbmwodykge1xuICB2YXIgcmVzID0gKHcgPj4+IDI0KSB8XG4gICAgICAgICAgICAoKHcgPj4+IDgpICYgMHhmZjAwKSB8XG4gICAgICAgICAgICAoKHcgPDwgOCkgJiAweGZmMDAwMCkgfFxuICAgICAgICAgICAgKCh3ICYgMHhmZikgPDwgMjQpO1xuICByZXR1cm4gcmVzID4+PiAwO1xufVxudXRpbHMuaHRvbmwgPSBodG9ubDtcblxuZnVuY3Rpb24gdG9IZXgzMihtc2csIGVuZGlhbikge1xuICB2YXIgcmVzID0gJyc7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbXNnLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHcgPSBtc2dbaV07XG4gICAgaWYgKGVuZGlhbiA9PT0gJ2xpdHRsZScpXG4gICAgICB3ID0gaHRvbmwodyk7XG4gICAgcmVzICs9IHplcm84KHcudG9TdHJpbmcoMTYpKTtcbiAgfVxuICByZXR1cm4gcmVzO1xufVxudXRpbHMudG9IZXgzMiA9IHRvSGV4MzI7XG5cbmZ1bmN0aW9uIHplcm8yKHdvcmQpIHtcbiAgaWYgKHdvcmQubGVuZ3RoID09PSAxKVxuICAgIHJldHVybiAnMCcgKyB3b3JkO1xuICBlbHNlXG4gICAgcmV0dXJuIHdvcmQ7XG59XG51dGlscy56ZXJvMiA9IHplcm8yO1xuXG5mdW5jdGlvbiB6ZXJvOCh3b3JkKSB7XG4gIGlmICh3b3JkLmxlbmd0aCA9PT0gNylcbiAgICByZXR1cm4gJzAnICsgd29yZDtcbiAgZWxzZSBpZiAod29yZC5sZW5ndGggPT09IDYpXG4gICAgcmV0dXJuICcwMCcgKyB3b3JkO1xuICBlbHNlIGlmICh3b3JkLmxlbmd0aCA9PT0gNSlcbiAgICByZXR1cm4gJzAwMCcgKyB3b3JkO1xuICBlbHNlIGlmICh3b3JkLmxlbmd0aCA9PT0gNClcbiAgICByZXR1cm4gJzAwMDAnICsgd29yZDtcbiAgZWxzZSBpZiAod29yZC5sZW5ndGggPT09IDMpXG4gICAgcmV0dXJuICcwMDAwMCcgKyB3b3JkO1xuICBlbHNlIGlmICh3b3JkLmxlbmd0aCA9PT0gMilcbiAgICByZXR1cm4gJzAwMDAwMCcgKyB3b3JkO1xuICBlbHNlIGlmICh3b3JkLmxlbmd0aCA9PT0gMSlcbiAgICByZXR1cm4gJzAwMDAwMDAnICsgd29yZDtcbiAgZWxzZVxuICAgIHJldHVybiB3b3JkO1xufVxudXRpbHMuemVybzggPSB6ZXJvODtcblxuZnVuY3Rpb24gam9pbjMyKG1zZywgc3RhcnQsIGVuZCwgZW5kaWFuKSB7XG4gIHZhciBsZW4gPSBlbmQgLSBzdGFydDtcbiAgYXNzZXJ0KGxlbiAlIDQgPT09IDApO1xuICB2YXIgcmVzID0gbmV3IEFycmF5KGxlbiAvIDQpO1xuICBmb3IgKHZhciBpID0gMCwgayA9IHN0YXJ0OyBpIDwgcmVzLmxlbmd0aDsgaSsrLCBrICs9IDQpIHtcbiAgICB2YXIgdztcbiAgICBpZiAoZW5kaWFuID09PSAnYmlnJylcbiAgICAgIHcgPSAobXNnW2tdIDw8IDI0KSB8IChtc2dbayArIDFdIDw8IDE2KSB8IChtc2dbayArIDJdIDw8IDgpIHwgbXNnW2sgKyAzXTtcbiAgICBlbHNlXG4gICAgICB3ID0gKG1zZ1trICsgM10gPDwgMjQpIHwgKG1zZ1trICsgMl0gPDwgMTYpIHwgKG1zZ1trICsgMV0gPDwgOCkgfCBtc2dba107XG4gICAgcmVzW2ldID0gdyA+Pj4gMDtcbiAgfVxuICByZXR1cm4gcmVzO1xufVxudXRpbHMuam9pbjMyID0gam9pbjMyO1xuXG5mdW5jdGlvbiBzcGxpdDMyKG1zZywgZW5kaWFuKSB7XG4gIHZhciByZXMgPSBuZXcgQXJyYXkobXNnLmxlbmd0aCAqIDQpO1xuICBmb3IgKHZhciBpID0gMCwgayA9IDA7IGkgPCBtc2cubGVuZ3RoOyBpKyssIGsgKz0gNCkge1xuICAgIHZhciBtID0gbXNnW2ldO1xuICAgIGlmIChlbmRpYW4gPT09ICdiaWcnKSB7XG4gICAgICByZXNba10gPSBtID4+PiAyNDtcbiAgICAgIHJlc1trICsgMV0gPSAobSA+Pj4gMTYpICYgMHhmZjtcbiAgICAgIHJlc1trICsgMl0gPSAobSA+Pj4gOCkgJiAweGZmO1xuICAgICAgcmVzW2sgKyAzXSA9IG0gJiAweGZmO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXNbayArIDNdID0gbSA+Pj4gMjQ7XG4gICAgICByZXNbayArIDJdID0gKG0gPj4+IDE2KSAmIDB4ZmY7XG4gICAgICByZXNbayArIDFdID0gKG0gPj4+IDgpICYgMHhmZjtcbiAgICAgIHJlc1trXSA9IG0gJiAweGZmO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzO1xufVxudXRpbHMuc3BsaXQzMiA9IHNwbGl0MzI7XG5cbmZ1bmN0aW9uIHJvdHIzMih3LCBiKSB7XG4gIHJldHVybiAodyA+Pj4gYikgfCAodyA8PCAoMzIgLSBiKSk7XG59XG51dGlscy5yb3RyMzIgPSByb3RyMzI7XG5cbmZ1bmN0aW9uIHJvdGwzMih3LCBiKSB7XG4gIHJldHVybiAodyA8PCBiKSB8ICh3ID4+PiAoMzIgLSBiKSk7XG59XG51dGlscy5yb3RsMzIgPSByb3RsMzI7XG5cbmZ1bmN0aW9uIHN1bTMyKGEsIGIpIHtcbiAgcmV0dXJuIChhICsgYikgPj4+IDA7XG59XG51dGlscy5zdW0zMiA9IHN1bTMyO1xuXG5mdW5jdGlvbiBzdW0zMl8zKGEsIGIsIGMpIHtcbiAgcmV0dXJuIChhICsgYiArIGMpID4+PiAwO1xufVxudXRpbHMuc3VtMzJfMyA9IHN1bTMyXzM7XG5cbmZ1bmN0aW9uIHN1bTMyXzQoYSwgYiwgYywgZCkge1xuICByZXR1cm4gKGEgKyBiICsgYyArIGQpID4+PiAwO1xufVxudXRpbHMuc3VtMzJfNCA9IHN1bTMyXzQ7XG5cbmZ1bmN0aW9uIHN1bTMyXzUoYSwgYiwgYywgZCwgZSkge1xuICByZXR1cm4gKGEgKyBiICsgYyArIGQgKyBlKSA+Pj4gMDtcbn1cbnV0aWxzLnN1bTMyXzUgPSBzdW0zMl81O1xuXG5mdW5jdGlvbiBhc3NlcnQoY29uZCwgbXNnKSB7XG4gIGlmICghY29uZClcbiAgICB0aHJvdyBuZXcgRXJyb3IobXNnIHx8ICdBc3NlcnRpb24gZmFpbGVkJyk7XG59XG51dGlscy5hc3NlcnQgPSBhc3NlcnQ7XG5cbnV0aWxzLmluaGVyaXRzID0gaW5oZXJpdHM7XG5cbmZ1bmN0aW9uIHN1bTY0KGJ1ZiwgcG9zLCBhaCwgYWwpIHtcbiAgdmFyIGJoID0gYnVmW3Bvc107XG4gIHZhciBibCA9IGJ1Zltwb3MgKyAxXTtcblxuICB2YXIgbG8gPSAoYWwgKyBibCkgPj4+IDA7XG4gIHZhciBoaSA9IChsbyA8IGFsID8gMSA6IDApICsgYWggKyBiaDtcbiAgYnVmW3Bvc10gPSBoaSA+Pj4gMDtcbiAgYnVmW3BvcyArIDFdID0gbG87XG59XG5leHBvcnRzLnN1bTY0ID0gc3VtNjQ7XG5cbmZ1bmN0aW9uIHN1bTY0X2hpKGFoLCBhbCwgYmgsIGJsKSB7XG4gIHZhciBsbyA9IChhbCArIGJsKSA+Pj4gMDtcbiAgdmFyIGhpID0gKGxvIDwgYWwgPyAxIDogMCkgKyBhaCArIGJoO1xuICByZXR1cm4gaGkgPj4+IDA7XG59O1xuZXhwb3J0cy5zdW02NF9oaSA9IHN1bTY0X2hpO1xuXG5mdW5jdGlvbiBzdW02NF9sbyhhaCwgYWwsIGJoLCBibCkge1xuICB2YXIgbG8gPSBhbCArIGJsO1xuICByZXR1cm4gbG8gPj4+IDA7XG59O1xuZXhwb3J0cy5zdW02NF9sbyA9IHN1bTY0X2xvO1xuXG5mdW5jdGlvbiBzdW02NF80X2hpKGFoLCBhbCwgYmgsIGJsLCBjaCwgY2wsIGRoLCBkbCkge1xuICB2YXIgY2FycnkgPSAwO1xuICB2YXIgbG8gPSBhbDtcbiAgbG8gPSAobG8gKyBibCkgPj4+IDA7XG4gIGNhcnJ5ICs9IGxvIDwgYWwgPyAxIDogMDtcbiAgbG8gPSAobG8gKyBjbCkgPj4+IDA7XG4gIGNhcnJ5ICs9IGxvIDwgY2wgPyAxIDogMDtcbiAgbG8gPSAobG8gKyBkbCkgPj4+IDA7XG4gIGNhcnJ5ICs9IGxvIDwgZGwgPyAxIDogMDtcblxuICB2YXIgaGkgPSBhaCArIGJoICsgY2ggKyBkaCArIGNhcnJ5O1xuICByZXR1cm4gaGkgPj4+IDA7XG59O1xuZXhwb3J0cy5zdW02NF80X2hpID0gc3VtNjRfNF9oaTtcblxuZnVuY3Rpb24gc3VtNjRfNF9sbyhhaCwgYWwsIGJoLCBibCwgY2gsIGNsLCBkaCwgZGwpIHtcbiAgdmFyIGxvID0gYWwgKyBibCArIGNsICsgZGw7XG4gIHJldHVybiBsbyA+Pj4gMDtcbn07XG5leHBvcnRzLnN1bTY0XzRfbG8gPSBzdW02NF80X2xvO1xuXG5mdW5jdGlvbiBzdW02NF81X2hpKGFoLCBhbCwgYmgsIGJsLCBjaCwgY2wsIGRoLCBkbCwgZWgsIGVsKSB7XG4gIHZhciBjYXJyeSA9IDA7XG4gIHZhciBsbyA9IGFsO1xuICBsbyA9IChsbyArIGJsKSA+Pj4gMDtcbiAgY2FycnkgKz0gbG8gPCBhbCA/IDEgOiAwO1xuICBsbyA9IChsbyArIGNsKSA+Pj4gMDtcbiAgY2FycnkgKz0gbG8gPCBjbCA/IDEgOiAwO1xuICBsbyA9IChsbyArIGRsKSA+Pj4gMDtcbiAgY2FycnkgKz0gbG8gPCBkbCA/IDEgOiAwO1xuICBsbyA9IChsbyArIGVsKSA+Pj4gMDtcbiAgY2FycnkgKz0gbG8gPCBlbCA/IDEgOiAwO1xuXG4gIHZhciBoaSA9IGFoICsgYmggKyBjaCArIGRoICsgZWggKyBjYXJyeTtcbiAgcmV0dXJuIGhpID4+PiAwO1xufTtcbmV4cG9ydHMuc3VtNjRfNV9oaSA9IHN1bTY0XzVfaGk7XG5cbmZ1bmN0aW9uIHN1bTY0XzVfbG8oYWgsIGFsLCBiaCwgYmwsIGNoLCBjbCwgZGgsIGRsLCBlaCwgZWwpIHtcbiAgdmFyIGxvID0gYWwgKyBibCArIGNsICsgZGwgKyBlbDtcblxuICByZXR1cm4gbG8gPj4+IDA7XG59O1xuZXhwb3J0cy5zdW02NF81X2xvID0gc3VtNjRfNV9sbztcblxuZnVuY3Rpb24gcm90cjY0X2hpKGFoLCBhbCwgbnVtKSB7XG4gIHZhciByID0gKGFsIDw8ICgzMiAtIG51bSkpIHwgKGFoID4+PiBudW0pO1xuICByZXR1cm4gciA+Pj4gMDtcbn07XG5leHBvcnRzLnJvdHI2NF9oaSA9IHJvdHI2NF9oaTtcblxuZnVuY3Rpb24gcm90cjY0X2xvKGFoLCBhbCwgbnVtKSB7XG4gIHZhciByID0gKGFoIDw8ICgzMiAtIG51bSkpIHwgKGFsID4+PiBudW0pO1xuICByZXR1cm4gciA+Pj4gMDtcbn07XG5leHBvcnRzLnJvdHI2NF9sbyA9IHJvdHI2NF9sbztcblxuZnVuY3Rpb24gc2hyNjRfaGkoYWgsIGFsLCBudW0pIHtcbiAgcmV0dXJuIGFoID4+PiBudW07XG59O1xuZXhwb3J0cy5zaHI2NF9oaSA9IHNocjY0X2hpO1xuXG5mdW5jdGlvbiBzaHI2NF9sbyhhaCwgYWwsIG51bSkge1xuICB2YXIgciA9IChhaCA8PCAoMzIgLSBudW0pKSB8IChhbCA+Pj4gbnVtKTtcbiAgcmV0dXJuIHIgPj4+IDA7XG59O1xuZXhwb3J0cy5zaHI2NF9sbyA9IHNocjY0X2xvO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgaGFzaCA9IHJlcXVpcmUoJ2hhc2guanMnKTtcbnZhciB1dGlscyA9IHJlcXVpcmUoJ21pbmltYWxpc3RpYy1jcnlwdG8tdXRpbHMnKTtcbnZhciBhc3NlcnQgPSByZXF1aXJlKCdtaW5pbWFsaXN0aWMtYXNzZXJ0Jyk7XG5cbmZ1bmN0aW9uIEhtYWNEUkJHKG9wdGlvbnMpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIEhtYWNEUkJHKSlcbiAgICByZXR1cm4gbmV3IEhtYWNEUkJHKG9wdGlvbnMpO1xuICB0aGlzLmhhc2ggPSBvcHRpb25zLmhhc2g7XG4gIHRoaXMucHJlZFJlc2lzdCA9ICEhb3B0aW9ucy5wcmVkUmVzaXN0O1xuXG4gIHRoaXMub3V0TGVuID0gdGhpcy5oYXNoLm91dFNpemU7XG4gIHRoaXMubWluRW50cm9weSA9IG9wdGlvbnMubWluRW50cm9weSB8fCB0aGlzLmhhc2guaG1hY1N0cmVuZ3RoO1xuXG4gIHRoaXMuX3Jlc2VlZCA9IG51bGw7XG4gIHRoaXMucmVzZWVkSW50ZXJ2YWwgPSBudWxsO1xuICB0aGlzLksgPSBudWxsO1xuICB0aGlzLlYgPSBudWxsO1xuXG4gIHZhciBlbnRyb3B5ID0gdXRpbHMudG9BcnJheShvcHRpb25zLmVudHJvcHksIG9wdGlvbnMuZW50cm9weUVuYyB8fCAnaGV4Jyk7XG4gIHZhciBub25jZSA9IHV0aWxzLnRvQXJyYXkob3B0aW9ucy5ub25jZSwgb3B0aW9ucy5ub25jZUVuYyB8fCAnaGV4Jyk7XG4gIHZhciBwZXJzID0gdXRpbHMudG9BcnJheShvcHRpb25zLnBlcnMsIG9wdGlvbnMucGVyc0VuYyB8fCAnaGV4Jyk7XG4gIGFzc2VydChlbnRyb3B5Lmxlbmd0aCA+PSAodGhpcy5taW5FbnRyb3B5IC8gOCksXG4gICAgICAgICAnTm90IGVub3VnaCBlbnRyb3B5LiBNaW5pbXVtIGlzOiAnICsgdGhpcy5taW5FbnRyb3B5ICsgJyBiaXRzJyk7XG4gIHRoaXMuX2luaXQoZW50cm9weSwgbm9uY2UsIHBlcnMpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBIbWFjRFJCRztcblxuSG1hY0RSQkcucHJvdG90eXBlLl9pbml0ID0gZnVuY3Rpb24gaW5pdChlbnRyb3B5LCBub25jZSwgcGVycykge1xuICB2YXIgc2VlZCA9IGVudHJvcHkuY29uY2F0KG5vbmNlKS5jb25jYXQocGVycyk7XG5cbiAgdGhpcy5LID0gbmV3IEFycmF5KHRoaXMub3V0TGVuIC8gOCk7XG4gIHRoaXMuViA9IG5ldyBBcnJheSh0aGlzLm91dExlbiAvIDgpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuVi5sZW5ndGg7IGkrKykge1xuICAgIHRoaXMuS1tpXSA9IDB4MDA7XG4gICAgdGhpcy5WW2ldID0gMHgwMTtcbiAgfVxuXG4gIHRoaXMuX3VwZGF0ZShzZWVkKTtcbiAgdGhpcy5fcmVzZWVkID0gMTtcbiAgdGhpcy5yZXNlZWRJbnRlcnZhbCA9IDB4MTAwMDAwMDAwMDAwMDsgIC8vIDJeNDhcbn07XG5cbkhtYWNEUkJHLnByb3RvdHlwZS5faG1hYyA9IGZ1bmN0aW9uIGhtYWMoKSB7XG4gIHJldHVybiBuZXcgaGFzaC5obWFjKHRoaXMuaGFzaCwgdGhpcy5LKTtcbn07XG5cbkhtYWNEUkJHLnByb3RvdHlwZS5fdXBkYXRlID0gZnVuY3Rpb24gdXBkYXRlKHNlZWQpIHtcbiAgdmFyIGttYWMgPSB0aGlzLl9obWFjKClcbiAgICAgICAgICAgICAgICAgLnVwZGF0ZSh0aGlzLlYpXG4gICAgICAgICAgICAgICAgIC51cGRhdGUoWyAweDAwIF0pO1xuICBpZiAoc2VlZClcbiAgICBrbWFjID0ga21hYy51cGRhdGUoc2VlZCk7XG4gIHRoaXMuSyA9IGttYWMuZGlnZXN0KCk7XG4gIHRoaXMuViA9IHRoaXMuX2htYWMoKS51cGRhdGUodGhpcy5WKS5kaWdlc3QoKTtcbiAgaWYgKCFzZWVkKVxuICAgIHJldHVybjtcblxuICB0aGlzLksgPSB0aGlzLl9obWFjKClcbiAgICAgICAgICAgICAgIC51cGRhdGUodGhpcy5WKVxuICAgICAgICAgICAgICAgLnVwZGF0ZShbIDB4MDEgXSlcbiAgICAgICAgICAgICAgIC51cGRhdGUoc2VlZClcbiAgICAgICAgICAgICAgIC5kaWdlc3QoKTtcbiAgdGhpcy5WID0gdGhpcy5faG1hYygpLnVwZGF0ZSh0aGlzLlYpLmRpZ2VzdCgpO1xufTtcblxuSG1hY0RSQkcucHJvdG90eXBlLnJlc2VlZCA9IGZ1bmN0aW9uIHJlc2VlZChlbnRyb3B5LCBlbnRyb3B5RW5jLCBhZGQsIGFkZEVuYykge1xuICAvLyBPcHRpb25hbCBlbnRyb3B5IGVuY1xuICBpZiAodHlwZW9mIGVudHJvcHlFbmMgIT09ICdzdHJpbmcnKSB7XG4gICAgYWRkRW5jID0gYWRkO1xuICAgIGFkZCA9IGVudHJvcHlFbmM7XG4gICAgZW50cm9weUVuYyA9IG51bGw7XG4gIH1cblxuICBlbnRyb3B5ID0gdXRpbHMudG9BcnJheShlbnRyb3B5LCBlbnRyb3B5RW5jKTtcbiAgYWRkID0gdXRpbHMudG9BcnJheShhZGQsIGFkZEVuYyk7XG5cbiAgYXNzZXJ0KGVudHJvcHkubGVuZ3RoID49ICh0aGlzLm1pbkVudHJvcHkgLyA4KSxcbiAgICAgICAgICdOb3QgZW5vdWdoIGVudHJvcHkuIE1pbmltdW0gaXM6ICcgKyB0aGlzLm1pbkVudHJvcHkgKyAnIGJpdHMnKTtcblxuICB0aGlzLl91cGRhdGUoZW50cm9weS5jb25jYXQoYWRkIHx8IFtdKSk7XG4gIHRoaXMuX3Jlc2VlZCA9IDE7XG59O1xuXG5IbWFjRFJCRy5wcm90b3R5cGUuZ2VuZXJhdGUgPSBmdW5jdGlvbiBnZW5lcmF0ZShsZW4sIGVuYywgYWRkLCBhZGRFbmMpIHtcbiAgaWYgKHRoaXMuX3Jlc2VlZCA+IHRoaXMucmVzZWVkSW50ZXJ2YWwpXG4gICAgdGhyb3cgbmV3IEVycm9yKCdSZXNlZWQgaXMgcmVxdWlyZWQnKTtcblxuICAvLyBPcHRpb25hbCBlbmNvZGluZ1xuICBpZiAodHlwZW9mIGVuYyAhPT0gJ3N0cmluZycpIHtcbiAgICBhZGRFbmMgPSBhZGQ7XG4gICAgYWRkID0gZW5jO1xuICAgIGVuYyA9IG51bGw7XG4gIH1cblxuICAvLyBPcHRpb25hbCBhZGRpdGlvbmFsIGRhdGFcbiAgaWYgKGFkZCkge1xuICAgIGFkZCA9IHV0aWxzLnRvQXJyYXkoYWRkLCBhZGRFbmMgfHwgJ2hleCcpO1xuICAgIHRoaXMuX3VwZGF0ZShhZGQpO1xuICB9XG5cbiAgdmFyIHRlbXAgPSBbXTtcbiAgd2hpbGUgKHRlbXAubGVuZ3RoIDwgbGVuKSB7XG4gICAgdGhpcy5WID0gdGhpcy5faG1hYygpLnVwZGF0ZSh0aGlzLlYpLmRpZ2VzdCgpO1xuICAgIHRlbXAgPSB0ZW1wLmNvbmNhdCh0aGlzLlYpO1xuICB9XG5cbiAgdmFyIHJlcyA9IHRlbXAuc2xpY2UoMCwgbGVuKTtcbiAgdGhpcy5fdXBkYXRlKGFkZCk7XG4gIHRoaXMuX3Jlc2VlZCsrO1xuICByZXR1cm4gdXRpbHMuZW5jb2RlKHJlcywgZW5jKTtcbn07XG4iLCJleHBvcnRzLnJlYWQgPSBmdW5jdGlvbiAoYnVmZmVyLCBvZmZzZXQsIGlzTEUsIG1MZW4sIG5CeXRlcykge1xuICB2YXIgZSwgbVxuICB2YXIgZUxlbiA9IG5CeXRlcyAqIDggLSBtTGVuIC0gMVxuICB2YXIgZU1heCA9ICgxIDw8IGVMZW4pIC0gMVxuICB2YXIgZUJpYXMgPSBlTWF4ID4+IDFcbiAgdmFyIG5CaXRzID0gLTdcbiAgdmFyIGkgPSBpc0xFID8gKG5CeXRlcyAtIDEpIDogMFxuICB2YXIgZCA9IGlzTEUgPyAtMSA6IDFcbiAgdmFyIHMgPSBidWZmZXJbb2Zmc2V0ICsgaV1cblxuICBpICs9IGRcblxuICBlID0gcyAmICgoMSA8PCAoLW5CaXRzKSkgLSAxKVxuICBzID4+PSAoLW5CaXRzKVxuICBuQml0cyArPSBlTGVuXG4gIGZvciAoOyBuQml0cyA+IDA7IGUgPSBlICogMjU2ICsgYnVmZmVyW29mZnNldCArIGldLCBpICs9IGQsIG5CaXRzIC09IDgpIHt9XG5cbiAgbSA9IGUgJiAoKDEgPDwgKC1uQml0cykpIC0gMSlcbiAgZSA+Pj0gKC1uQml0cylcbiAgbkJpdHMgKz0gbUxlblxuICBmb3IgKDsgbkJpdHMgPiAwOyBtID0gbSAqIDI1NiArIGJ1ZmZlcltvZmZzZXQgKyBpXSwgaSArPSBkLCBuQml0cyAtPSA4KSB7fVxuXG4gIGlmIChlID09PSAwKSB7XG4gICAgZSA9IDEgLSBlQmlhc1xuICB9IGVsc2UgaWYgKGUgPT09IGVNYXgpIHtcbiAgICByZXR1cm4gbSA/IE5hTiA6ICgocyA/IC0xIDogMSkgKiBJbmZpbml0eSlcbiAgfSBlbHNlIHtcbiAgICBtID0gbSArIE1hdGgucG93KDIsIG1MZW4pXG4gICAgZSA9IGUgLSBlQmlhc1xuICB9XG4gIHJldHVybiAocyA/IC0xIDogMSkgKiBtICogTWF0aC5wb3coMiwgZSAtIG1MZW4pXG59XG5cbmV4cG9ydHMud3JpdGUgPSBmdW5jdGlvbiAoYnVmZmVyLCB2YWx1ZSwgb2Zmc2V0LCBpc0xFLCBtTGVuLCBuQnl0ZXMpIHtcbiAgdmFyIGUsIG0sIGNcbiAgdmFyIGVMZW4gPSBuQnl0ZXMgKiA4IC0gbUxlbiAtIDFcbiAgdmFyIGVNYXggPSAoMSA8PCBlTGVuKSAtIDFcbiAgdmFyIGVCaWFzID0gZU1heCA+PiAxXG4gIHZhciBydCA9IChtTGVuID09PSAyMyA/IE1hdGgucG93KDIsIC0yNCkgLSBNYXRoLnBvdygyLCAtNzcpIDogMClcbiAgdmFyIGkgPSBpc0xFID8gMCA6IChuQnl0ZXMgLSAxKVxuICB2YXIgZCA9IGlzTEUgPyAxIDogLTFcbiAgdmFyIHMgPSB2YWx1ZSA8IDAgfHwgKHZhbHVlID09PSAwICYmIDEgLyB2YWx1ZSA8IDApID8gMSA6IDBcblxuICB2YWx1ZSA9IE1hdGguYWJzKHZhbHVlKVxuXG4gIGlmIChpc05hTih2YWx1ZSkgfHwgdmFsdWUgPT09IEluZmluaXR5KSB7XG4gICAgbSA9IGlzTmFOKHZhbHVlKSA/IDEgOiAwXG4gICAgZSA9IGVNYXhcbiAgfSBlbHNlIHtcbiAgICBlID0gTWF0aC5mbG9vcihNYXRoLmxvZyh2YWx1ZSkgLyBNYXRoLkxOMilcbiAgICBpZiAodmFsdWUgKiAoYyA9IE1hdGgucG93KDIsIC1lKSkgPCAxKSB7XG4gICAgICBlLS1cbiAgICAgIGMgKj0gMlxuICAgIH1cbiAgICBpZiAoZSArIGVCaWFzID49IDEpIHtcbiAgICAgIHZhbHVlICs9IHJ0IC8gY1xuICAgIH0gZWxzZSB7XG4gICAgICB2YWx1ZSArPSBydCAqIE1hdGgucG93KDIsIDEgLSBlQmlhcylcbiAgICB9XG4gICAgaWYgKHZhbHVlICogYyA+PSAyKSB7XG4gICAgICBlKytcbiAgICAgIGMgLz0gMlxuICAgIH1cblxuICAgIGlmIChlICsgZUJpYXMgPj0gZU1heCkge1xuICAgICAgbSA9IDBcbiAgICAgIGUgPSBlTWF4XG4gICAgfSBlbHNlIGlmIChlICsgZUJpYXMgPj0gMSkge1xuICAgICAgbSA9ICh2YWx1ZSAqIGMgLSAxKSAqIE1hdGgucG93KDIsIG1MZW4pXG4gICAgICBlID0gZSArIGVCaWFzXG4gICAgfSBlbHNlIHtcbiAgICAgIG0gPSB2YWx1ZSAqIE1hdGgucG93KDIsIGVCaWFzIC0gMSkgKiBNYXRoLnBvdygyLCBtTGVuKVxuICAgICAgZSA9IDBcbiAgICB9XG4gIH1cblxuICBmb3IgKDsgbUxlbiA+PSA4OyBidWZmZXJbb2Zmc2V0ICsgaV0gPSBtICYgMHhmZiwgaSArPSBkLCBtIC89IDI1NiwgbUxlbiAtPSA4KSB7fVxuXG4gIGUgPSAoZSA8PCBtTGVuKSB8IG1cbiAgZUxlbiArPSBtTGVuXG4gIGZvciAoOyBlTGVuID4gMDsgYnVmZmVyW29mZnNldCArIGldID0gZSAmIDB4ZmYsIGkgKz0gZCwgZSAvPSAyNTYsIGVMZW4gLT0gOCkge31cblxuICBidWZmZXJbb2Zmc2V0ICsgaSAtIGRdIHw9IHMgKiAxMjhcbn1cbiIsIi8vIExvYWQgaW4gb3VyIGRlcGVuZGVuY2llc1xudmFyIGFzc2VydCA9IHJlcXVpcmUoJ2Fzc2VydCcpO1xudmFyIGZzID0gcmVxdWlyZSgnZnMnKTtcbnZhciBwYXRoID0gcmVxdWlyZSgncGF0aCcpO1xudmFyIGFzeW5jID0gcmVxdWlyZSgnYXN5bmMnKTtcbnZhciBnbSA9IHJlcXVpcmUoJ2dtJykuc3ViQ2xhc3Moe2ltYWdlTWFnaWNrOiB0cnVlfSk7XG52YXIgYnVmZmVyZWRTcGF3biA9IHJlcXVpcmUoJ2J1ZmZlcmVkLXNwYXduJyk7XG52YXIgbWtkaXJwID0gcmVxdWlyZSgnbWtkaXJwJyk7XG52YXIgdG1wID0gcmVxdWlyZSgndG1wJyk7XG5cbi8vIERFVjogSWYgd2Ugd2FudCB0byByZXN0cnVjdHVyZSBhd2F5IGZyb20gYSBjbGFzc1xuLy8gICBJIChAdHdvbGZzb24pIHN1Z2dlc3Qgd3JpdGluZyB0byBgZXhwb3J0c2AgKGUuZy4gYGV4cG9ydHMuZ2V0Qm9vbGVhblJlc3VsdGAsIGBleHBvcnRzLmdldEZ1bGxSZXN1bHRgKVxuLy8gICB0aGVuIG1ha2luZyBgbW9kdWxlLmV4cG9ydHMgPSBfLmV4dGVuZChleHBvcnRzLmdldEJvb2xlYW5SZXN1bHQsIGV4cG9ydHMpO2BcblxuLy8gRGVmaW5lIGN1c3RvbSByZXNpemUgZnVuY3Rpb25cbmZ1bmN0aW9uIHRyYW5zcGFyZW50RXh0ZW50KGdtLCBwYXJhbXMpIHtcbiAgLy8gQXNzZXJ0IHdlIHJlY2VpdmVkIG91ciBwYXJhbWV0ZXJzXG4gIGFzc2VydC5ub3RFcXVhbChwYXJhbXMud2lkdGgsIHVuZGVmaW5lZCk7XG4gIGFzc2VydC5ub3RFcXVhbChwYXJhbXMuaGVpZ2h0LCB1bmRlZmluZWQpO1xuXG4gIC8vIEZpbGwgaW4gbmV3IHNwYWNlIHdpdGggd2hpdGUgYmFja2dyb3VuZFxuICAvLyBUT0RPOiBQYXJhbWV0ZXJpemUgYmFja2dyb3VuZCBjb2xvciAoc2hvdWxkIGJlIGNvbnNpZGVyZWQgJ3RyYW5zcGFyZW50JyBjb2xvciBpbiB0aGlzIGNhc2UpXG4gIGdtLmJhY2tncm91bmQoJ3RyYW5zcGFyZW50Jyk7XG5cbiAgLy8gQW5jaG9yIGltYWdlIHRvIHVwcGVyLWxlZnRcbiAgLy8gVE9ETzogUGFyYW1ldGVyaXplIGFuY2hvciBwb2ludFxuICBnbS5ncmF2aXR5KCdOb3J0aFdlc3QnKTtcblxuICAvLyBTcGVjaWZ5IG5ldyBpbWFnZSBzaXplXG4gIGdtLmV4dGVudChwYXJhbXMud2lkdGgsIHBhcmFtcy5oZWlnaHQpO1xuXG4gIC8vIFJldHVybiBnbSBpbnN0YW5jZSBmb3IgYSBmbHVlbnQgaW50ZXJmYWNlXG4gIHJldHVybiBnbTtcbn1cblxuZnVuY3Rpb24gSW1hZ2VEaWZmKCkge1xufVxuSW1hZ2VEaWZmLmdldEltYWdlU2l6ZSA9IGZ1bmN0aW9uIChmaWxlcGF0aCwgY2IpIHtcbiAgLy8gVE9ETzogVGhpcyBjb3VsZCBiZSBkb25lIHZpYSBwbmdqcyBidXQgc3RpY2sgdG8gaW1hZ2VtYWdpY2sgZm9yIG5vd1xuICBmcy5zdGF0KGZpbGVwYXRoLCBmdW5jdGlvbiAoZXJyLCBzdGF0cykge1xuICAgIC8vIElmIHRoZSBmaWxlIGRvZXMgbm90IGV4aXN0LCBjYWxsYmFjayB3aXRoIGluZm9cbiAgICBpZiAoZXJyKSB7XG4gICAgICBpZiAoZXJyLmNvZGUgPT09ICdFTk9FTlQnKSB7XG4gICAgICAgIHJldHVybiBjYihudWxsLCBudWxsKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBjYihlcnIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGdtKGZpbGVwYXRoKS5zaXplKGZ1bmN0aW9uIChlcnIsIHZhbHVlKSB7XG4gICAgICBpZiAoZXJyKSB7XG4gICAgICAgIHJldHVybiBjYihlcnIpO1xuICAgICAgfVxuICAgICAgY2IobnVsbCwgdmFsdWUpO1xuICAgIH0pO1xuICB9KTtcbn07XG5JbWFnZURpZmYuZXh0cmFjdERpZmZlcmVuY2UgPSBmdW5jdGlvbiAob3V0cHV0KSB7XG4gIC8vIEF0dGVtcHQgdG8gZmluZCB2YXJpYW50IGJldHdlZW4gJ2FsbDogMCAoMCknLCAnYWxsOiA0MDEzMS44ICgwLjYxMjM3MiknLCBvciAnYWxsOiAwLjQ2MDk2MSAoNy4wMzM4MWUtMDYpJ1xuICAvLyBERVY6IEFjY29yZGluZyB0byBodHRwOi8vd3d3LmltYWdlbWFnaWNrLm9yZy9kaXNjb3Vyc2Utc2VydmVyL3ZpZXd0b3BpYy5waHA/Zj0xJnQ9MTcyODRcbiAgLy8gREVWOiBUaGVzZSB2YWx1ZXMgYXJlIHRoZSB0b3RhbCBzcXVhcmUgcm9vdCBtZWFuIHNxdWFyZSAoUk1TRSkgcGl4ZWwgZGlmZmVyZW5jZSBhY3Jvc3MgYWxsIHBpeGVscyBhbmQgaXRzIHBlcmNlbnRhZ2VcbiAgLy8gVE9ETzogVGhpcyBpcyBub3QgdmVyeSBtdWx0aS1sZW5ndWFsID0oXG4gIHZhciByZXN1bHRJbmZvID0gb3V0cHV0Lm1hdGNoKC9hbGw6IChcXGQrKD86XFwuXFxkKyk/KD86W0VlXS0/XFxkKyk/KSBcXCgoXFxkKyg/OlxcLlxcZCspPyg/OltFZV0tP1xcZCspPylcXCkvKTtcbiAgaWYgKCFyZXN1bHRJbmZvKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdFeHBlY3RlZCBvdXRwdXQgdG8gY29udGFpbiBcXCdhbGxcXCcgYnV0IHJlY2VpdmVkIFwiJyArIG91dHB1dCArICdcIicpO1xuICB9XG4gIHJldHVybiB7XG4gICAgdG90YWw6IHBhcnNlRmxvYXQocmVzdWx0SW5mb1sxXSwgMTApLFxuICAgIHBlcmNlbnRhZ2U6IHBhcnNlRmxvYXQocmVzdWx0SW5mb1syXSwgMTApXG4gIH07XG59O1xuSW1hZ2VEaWZmLmNyZWF0ZURpZmYgPSBmdW5jdGlvbiAob3B0aW9ucywgY2IpIHtcbiAgLy8gaHR0cDovL3d3dy5pbWFnZW1hZ2ljay5vcmcvc2NyaXB0L2NvbXBhcmUucGhwXG4gIHZhciBkaWZmQ21kID0gJ2NvbXBhcmUnO1xuICB2YXIgZGlmZkFyZ3MgPSBbXG4gICAgJy12ZXJib3NlJyxcbiAgICAvLyBUT0RPOiBtZXRyaWMgYW5kIGhpZ2hsaWdodCBjb3VsZCBiZWNvbWUgY29uc3RydWN0b3Igb3B0aW9uc1xuICAgICctbWV0cmljJywgJ1JNU0UnLFxuICAgICctaGlnaGxpZ2h0LWNvbG9yJywgJ1JFRCddXG4gICAgLy8gU2hhZG93IG9wdGlvbnMgaWYgb3B0aW9ucy5zaGFkb3cgaXMgc2V0XG4gICAgLmNvbmNhdChvcHRpb25zLnNoYWRvdyA/IFtdIDogWyctY29tcG9zZScsICdTcmMnXSlcbiAgICAvLyBQYXRocyB0byBhY3R1YWwsIGV4cGVjdGVkLCBhbmQgZGlmZiBpbWFnZXNcbiAgICAuY29uY2F0KFtcbiAgICBvcHRpb25zLmFjdHVhbFBhdGgsXG4gICAgb3B0aW9ucy5leHBlY3RlZFBhdGgsXG4gICAgLy8gSWYgdGhlcmUgaXMgbm8gb3V0cHV0IGltYWdlLCB0aGVuIG91dHB1dCB0byBgc3Rkb3V0YCAod2hpY2ggaXMgaWdub3JlZClcbiAgICBvcHRpb25zLmRpZmZQYXRoIHx8ICctJ1xuICBdKTtcbiAgLy8gSWdub3JlIGBzdGRpbmAgYW5kIGBzdGRvdXRgICh1c2VmdWwgZm9yIGlnbm9yaW5nIHdoZW4gaW1hZ2VzIGFyZSBiZWluZyBzZW50IHRvIHN0ZG91dClcbiAgdmFyIHNwYXduT3B0aW9ucyA9IHtzdGRpbzogWydpZ25vcmUnLCAnaWdub3JlJywgJ3BpcGUnXX07XG4gIGJ1ZmZlcmVkU3Bhd24oZGlmZkNtZCwgZGlmZkFyZ3MsIHNwYXduT3B0aW9ucywgZnVuY3Rpb24gcHJvY2Vzc0RpZmZPdXRwdXQgKGVyciwgc3Rkb3V0LCBzdGRlcnIpIHtcbiAgICAvLyBJZiB3ZSBmYWlsZWQgd2l0aCBubyBpbmZvLCBjYWxsYmFja1xuICAgIGlmIChlcnIgJiYgIXN0ZGVycikge1xuICAgICAgcmV0dXJuIGNiKGVycik7XG4gICAgfVxuXG4gICAgLy8gQ2FsbGJhY2sgd2l0aCByYXcgcmVzdWx0XG4gICAgcmV0dXJuIGNiKG51bGwsIHN0ZGVycik7XG4gIH0pO1xufTtcbkltYWdlRGlmZi5wcm90b3R5cGUgPSB7XG4gIHJhd0RpZmY6IGZ1bmN0aW9uIChvcHRpb25zLCBjYWxsYmFjaykge1xuICAgIC8vIFRPRE86IEJyZWFrIHRoaXMgZG93biBtb3JlLi4uXG4gICAgdmFyIGFjdHVhbFBhdGggPSBvcHRpb25zLmFjdHVhbEltYWdlO1xuICAgIHZhciBleHBlY3RlZFBhdGggPSBvcHRpb25zLmV4cGVjdGVkSW1hZ2U7XG4gICAgdmFyIGRpZmZQYXRoID0gb3B0aW9ucy5kaWZmSW1hZ2U7XG4gICAgdmFyIHNoYWRvdyA9IG9wdGlvbnMuc2hhZG93O1xuXG4gICAgLy8gQXNzZXJ0IG91ciBvcHRpb25zIGFyZSBwYXNzZWQgaW5cbiAgICBpZiAoIWFjdHVhbFBhdGgpIHtcbiAgICAgIHJldHVybiBwcm9jZXNzLm5leHRUaWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY2FsbGJhY2sobmV3IEVycm9yKCdgb3B0aW9ucy5hY3R1YWxQYXRoYCB3YXMgbm90IHBhc3NlZCB0byBgaW1hZ2UtZGlmZmAnKSk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgaWYgKCFleHBlY3RlZFBhdGgpIHtcbiAgICAgIHJldHVybiBwcm9jZXNzLm5leHRUaWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY2FsbGJhY2sobmV3IEVycm9yKCdgb3B0aW9ucy5leHBlY3RlZFBhdGhgIHdhcyBub3QgcGFzc2VkIHRvIGBpbWFnZS1kaWZmYCcpKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHZhciBhY3R1YWxUbXBQYXRoO1xuICAgIHZhciBleHBlY3RlZFRtcFBhdGg7XG4gICAgdmFyIHJhd1Jlc3VsdDtcbiAgICBhc3luYy53YXRlcmZhbGwoW1xuICAgICAgZnVuY3Rpb24gYXNzZXJ0QWN0dWFsUGF0aEV4aXN0cyAoY2IpIHtcbiAgICAgICAgZnMuZXhpc3RzKGFjdHVhbFBhdGgsIGZ1bmN0aW9uIGhhbmRsZUFjdHVhbEV4aXN0cyAoYWN0dWFsRXhpc3RzKSB7XG4gICAgICAgICAgaWYgKGFjdHVhbEV4aXN0cykge1xuICAgICAgICAgICAgY2IoKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY2IobmV3IEVycm9yKCdgaW1hZ2UtZGlmZmAgZXhwZWN0ZWQgXCInICsgYWN0dWFsUGF0aCArICdcIiB0byBleGlzdCBidXQgaXQgZGlkblxcJ3QnKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgICBmdW5jdGlvbiBjb2xsZWN0SW1hZ2VTaXplcyAoY2IpIHtcbiAgICAgICAgLy8gQ29sbGVjdCB0aGUgaW1hZ2VzIHNpemVzXG4gICAgICAgIGFzeW5jLm1hcChbYWN0dWFsUGF0aCwgZXhwZWN0ZWRQYXRoXSwgSW1hZ2VEaWZmLmdldEltYWdlU2l6ZSwgY2IpO1xuICAgICAgfSxcbiAgICAgIGZ1bmN0aW9uIHJlc2l6ZUltYWdlcyAoc2l6ZXMsIGNiKSB7XG4gICAgICAgIC8vIEZpbmQgdGhlIG1heGltdW0gZGltZW5zaW9uc1xuICAgICAgICB2YXIgYWN0dWFsU2l6ZSA9IHNpemVzWzBdO1xuICAgICAgICB2YXIgZXhwZWN0ZWRTaXplID0gc2l6ZXNbMV0gfHwge2RvZXNOb3RFeGlzdDogdHJ1ZSwgaGVpZ2h0OiAwLCB3aWR0aDogMH07XG4gICAgICAgIHZhciBtYXhIZWlnaHQgPSBNYXRoLm1heChhY3R1YWxTaXplLmhlaWdodCwgZXhwZWN0ZWRTaXplLmhlaWdodCk7XG4gICAgICAgIHZhciBtYXhXaWR0aCA9IE1hdGgubWF4KGFjdHVhbFNpemUud2lkdGgsIGV4cGVjdGVkU2l6ZS53aWR0aCk7XG5cbiAgICAgICAgLy8gUmVzaXplIGJvdGggaW1hZ2VzXG4gICAgICAgIGFzeW5jLnBhcmFsbGVsKFtcbiAgICAgICAgICBmdW5jdGlvbiByZXNpemVBY3R1YWxJbWFnZSAoY2IpIHtcbiAgICAgICAgICAgIC8vIEdldCBhIHRlbXBvcmFyeSBmaWxlcGF0aFxuICAgICAgICAgICAgdG1wLnRtcE5hbWUoe3Bvc3RmaXg6ICcucG5nJ30sIGZ1bmN0aW9uIChlcnIsIGZpbGVwYXRoKSB7XG4gICAgICAgICAgICAgIC8vIElmIHRoZXJlIHdhcyBhbiBlcnJvciwgY2FsbGJhY2tcbiAgICAgICAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgICAgIHJldHVybiBjYihlcnIpO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgLy8gT3RoZXJ3aXNlLCByZXNpemUgdGhlIGltYWdlXG4gICAgICAgICAgICAgIGFjdHVhbFRtcFBhdGggPSBmaWxlcGF0aDtcbiAgICAgICAgICAgICAgdHJhbnNwYXJlbnRFeHRlbnQoZ20oYWN0dWFsUGF0aCksIHtcbiAgICAgICAgICAgICAgICB3aWR0aDogbWF4V2lkdGgsXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiBtYXhIZWlnaHRcbiAgICAgICAgICAgICAgfSkud3JpdGUoYWN0dWFsVG1wUGF0aCwgY2IpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBmdW5jdGlvbiByZXNpemVFeHBlY3RlZEltYWdlIChjYikge1xuICAgICAgICAgICAgdG1wLnRtcE5hbWUoe3Bvc3RmaXg6ICcucG5nJ30sIGZ1bmN0aW9uIChlcnIsIGZpbGVwYXRoKSB7XG4gICAgICAgICAgICAgIC8vIElmIHRoZXJlIHdhcyBhbiBlcnJvciwgY2FsbGJhY2tcbiAgICAgICAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgICAgIHJldHVybiBjYihlcnIpO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgLy8gSWYgdGhlcmUgd2FzIG5vIGV4cGVjdGVkIGltYWdlLCBjcmVhdGUgYSB0cmFuc3BhcmVudCBpbWFnZSB0byBjb21wYXJlIGFnYWluc3RcbiAgICAgICAgICAgICAgZXhwZWN0ZWRUbXBQYXRoID0gZmlsZXBhdGg7XG4gICAgICAgICAgICAgIGlmIChleHBlY3RlZFNpemUuZG9lc05vdEV4aXN0KSB7XG4gICAgICAgICAgICAgICAgZ20obWF4V2lkdGgsIG1heEhlaWdodCwgJ3RyYW5zcGFyZW50Jykud3JpdGUoZXhwZWN0ZWRUbXBQYXRoLCBjYik7XG4gICAgICAgICAgICAgIC8vIE90aGVyd2lzZSwgcmVzaXplIHRoZSBpbWFnZVxuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRyYW5zcGFyZW50RXh0ZW50KGdtKGV4cGVjdGVkUGF0aCksIHtcbiAgICAgICAgICAgICAgICAgIHdpZHRoOiBtYXhXaWR0aCxcbiAgICAgICAgICAgICAgICAgIGhlaWdodDogbWF4SGVpZ2h0XG4gICAgICAgICAgICAgICAgfSkud3JpdGUoZXhwZWN0ZWRUbXBQYXRoLCBjYik7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgXSwgY2IpO1xuICAgICAgfSxcbiAgICAgIGZ1bmN0aW9uIGNyZWF0ZURpZmZEaXJlY3RvcnkgKC8qLi4uLCBjYiovKSB7XG4gICAgICAgIHZhciBjYiA9IFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAtMSlbMF07XG4gICAgICAgIGlmIChkaWZmUGF0aCkge1xuICAgICAgICAgIG1rZGlycChwYXRoLmRpcm5hbWUoZGlmZlBhdGgpLCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgICAgICBjYihlcnIpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHByb2Nlc3MubmV4dFRpY2soY2IpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZnVuY3Rpb24gY3JlYXRlRGlmZiAoY2IpIHtcbiAgICAgICAgSW1hZ2VEaWZmLmNyZWF0ZURpZmYoe1xuICAgICAgICAgIGFjdHVhbFBhdGg6IGFjdHVhbFRtcFBhdGgsXG4gICAgICAgICAgZXhwZWN0ZWRQYXRoOiBleHBlY3RlZFRtcFBhdGgsXG4gICAgICAgICAgZGlmZlBhdGg6IGRpZmZQYXRoLFxuICAgICAgICAgIHNoYWRvdzogc2hhZG93XG4gICAgICAgIH0sIGZ1bmN0aW9uIHNhdmVSZXN1bHQgKGVyciwgX3Jhd1Jlc3VsdCkge1xuICAgICAgICAgIHJhd1Jlc3VsdCA9IF9yYXdSZXN1bHQ7XG4gICAgICAgICAgY2IoZXJyKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgXSwgZnVuY3Rpb24gY2xlYW51cCAoZXJyKSB7XG4gICAgICAvLyBDbGVhbiB1cCB0aGUgdGVtcG9yYXJ5IGZpbGVzXG4gICAgICB2YXIgY2xlYW51cFBhdGhzID0gW2FjdHVhbFRtcFBhdGgsIGV4cGVjdGVkVG1wUGF0aF0uZmlsdGVyKGZ1bmN0aW9uIChmaWxlcGF0aCkge1xuICAgICAgICByZXR1cm4gISFmaWxlcGF0aDtcbiAgICAgIH0pO1xuICAgICAgYXN5bmMuZm9yRWFjaChjbGVhbnVwUGF0aHMsIGZ1bmN0aW9uIGNsZWFudXBGaWxlIChmaWxlcGF0aCwgY2IpIHtcbiAgICAgICAgZnMudW5saW5rKGZpbGVwYXRoLCBjYik7XG4gICAgICB9LCBmdW5jdGlvbiBjYWxsT3JpZ2luYWxDYWxsYmFjayAoX2Vycikge1xuICAgICAgICAvLyBDYWxsYmFjayB3aXRoIHRoZSByYXcgcmVzdWx0XG4gICAgICAgIGNhbGxiYWNrKGVyciwgcmF3UmVzdWx0KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9LFxuICBmdWxsRGlmZjogZnVuY3Rpb24gKG9wdGlvbnMsIGNiKSB7XG4gICAgLy8gQ3JlYXRlIGEgcmF3IGRpZmZcbiAgICB0aGlzLnJhd0RpZmYob3B0aW9ucywgZnVuY3Rpb24gaGFuZGxlUmF3RGlmZiAoZXJyLCByYXdSZXN1bHQpIHtcbiAgICAgIC8vIElmIHRoZXJlIHdhcyBhbiBlcnJvciwgY2FsbGJhY2sgd2l0aCBpdFxuICAgICAgaWYgKGVycikge1xuICAgICAgICByZXR1cm4gY2IoZXJyKTtcbiAgICAgIH1cblxuICAgICAgLy8gT3RoZXJ3aXNlLCBwYXJzZSB0aGUgcmVzdWx0IGFuZCBjYWxsYmFja1xuICAgICAgY2IobnVsbCwgSW1hZ2VEaWZmLmV4dHJhY3REaWZmZXJlbmNlKHJhd1Jlc3VsdCkpO1xuICAgIH0pO1xuICB9LFxuICBkaWZmOiBmdW5jdGlvbiAob3B0aW9ucywgY2IpIHtcbiAgICAvLyBDcmVhdGUgYSBmdWxsIGRpZmZcbiAgICB0aGlzLmZ1bGxEaWZmKG9wdGlvbnMsIGZ1bmN0aW9uIGhhbmRsZUZ1bGxEaWZmIChlcnIsIGRpZmZlcmVuY2UpIHtcbiAgICAgIC8vIElmIHRoZXJlIHdhcyBhbiBlcnJvciwgY2FsbGJhY2sgd2l0aCBpdFxuICAgICAgaWYgKGVycikge1xuICAgICAgICByZXR1cm4gY2IoZXJyKTtcbiAgICAgIH1cblxuICAgICAgLy8gT3RoZXJ3aXNlLCB2YWxpZGF0ZSB0aGUgZGlmZmVyZW5jZSBhbmQgY2FsbGJhY2tcbiAgICAgIGNiKG51bGwsIGRpZmZlcmVuY2UudG90YWwgPT09IDApO1xuICAgIH0pO1xuICB9XG59O1xuXG4vLyBDcmVhdGUgaGVscGVyIHV0aWxpdGllc1xuZnVuY3Rpb24gaW1hZ2VEaWZmKG9wdGlvbnMsIGNiKSB7XG4gIHZhciBkaWZmZXIgPSBuZXcgSW1hZ2VEaWZmKCk7XG4gIGRpZmZlci5kaWZmKG9wdGlvbnMsIGNiKTtcbn1cbmltYWdlRGlmZi5nZXRGdWxsUmVzdWx0ID0gZnVuY3Rpb24gKG9wdGlvbnMsIGNiKSB7XG4gIHZhciBkaWZmZXIgPSBuZXcgSW1hZ2VEaWZmKCk7XG4gIGRpZmZlci5mdWxsRGlmZihvcHRpb25zLCBjYik7XG59O1xuaW1hZ2VEaWZmLmdldFJhd1Jlc3VsdCA9IGZ1bmN0aW9uIChvcHRpb25zLCBjYikge1xuICB2YXIgZGlmZmVyID0gbmV3IEltYWdlRGlmZigpO1xuICBkaWZmZXIucmF3RGlmZihvcHRpb25zLCBjYik7XG59O1xuXG4vLyBFeHBvcnQgdGhlIG9yaWdpbmFsIGNsYXNzIGFuZCBoZWxwZXJcbmltYWdlRGlmZi5JbWFnZURpZmYgPSBJbWFnZURpZmY7XG5tb2R1bGUuZXhwb3J0cyA9IGltYWdlRGlmZjtcbiIsIi8qZ2xvYmFsIHNldEltbWVkaWF0ZTogZmFsc2UsIHNldFRpbWVvdXQ6IGZhbHNlLCBjb25zb2xlOiBmYWxzZSAqL1xuKGZ1bmN0aW9uICgpIHtcblxuICAgIHZhciBhc3luYyA9IHt9O1xuXG4gICAgLy8gZ2xvYmFsIG9uIHRoZSBzZXJ2ZXIsIHdpbmRvdyBpbiB0aGUgYnJvd3NlclxuICAgIHZhciByb290LCBwcmV2aW91c19hc3luYztcblxuICAgIHJvb3QgPSB0aGlzO1xuICAgIGlmIChyb290ICE9IG51bGwpIHtcbiAgICAgIHByZXZpb3VzX2FzeW5jID0gcm9vdC5hc3luYztcbiAgICB9XG5cbiAgICBhc3luYy5ub0NvbmZsaWN0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByb290LmFzeW5jID0gcHJldmlvdXNfYXN5bmM7XG4gICAgICAgIHJldHVybiBhc3luYztcbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gb25seV9vbmNlKGZuKSB7XG4gICAgICAgIHZhciBjYWxsZWQgPSBmYWxzZTtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgaWYgKGNhbGxlZCkgdGhyb3cgbmV3IEVycm9yKFwiQ2FsbGJhY2sgd2FzIGFscmVhZHkgY2FsbGVkLlwiKTtcbiAgICAgICAgICAgIGNhbGxlZCA9IHRydWU7XG4gICAgICAgICAgICBmbi5hcHBseShyb290LCBhcmd1bWVudHMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8vLyBjcm9zcy1icm93c2VyIGNvbXBhdGlibGl0eSBmdW5jdGlvbnMgLy8vL1xuXG4gICAgdmFyIF9lYWNoID0gZnVuY3Rpb24gKGFyciwgaXRlcmF0b3IpIHtcbiAgICAgICAgaWYgKGFyci5mb3JFYWNoKSB7XG4gICAgICAgICAgICByZXR1cm4gYXJyLmZvckVhY2goaXRlcmF0b3IpO1xuICAgICAgICB9XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICAgICAgICBpdGVyYXRvcihhcnJbaV0sIGksIGFycik7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgdmFyIF9tYXAgPSBmdW5jdGlvbiAoYXJyLCBpdGVyYXRvcikge1xuICAgICAgICBpZiAoYXJyLm1hcCkge1xuICAgICAgICAgICAgcmV0dXJuIGFyci5tYXAoaXRlcmF0b3IpO1xuICAgICAgICB9XG4gICAgICAgIHZhciByZXN1bHRzID0gW107XG4gICAgICAgIF9lYWNoKGFyciwgZnVuY3Rpb24gKHgsIGksIGEpIHtcbiAgICAgICAgICAgIHJlc3VsdHMucHVzaChpdGVyYXRvcih4LCBpLCBhKSk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcmVzdWx0cztcbiAgICB9O1xuXG4gICAgdmFyIF9yZWR1Y2UgPSBmdW5jdGlvbiAoYXJyLCBpdGVyYXRvciwgbWVtbykge1xuICAgICAgICBpZiAoYXJyLnJlZHVjZSkge1xuICAgICAgICAgICAgcmV0dXJuIGFyci5yZWR1Y2UoaXRlcmF0b3IsIG1lbW8pO1xuICAgICAgICB9XG4gICAgICAgIF9lYWNoKGFyciwgZnVuY3Rpb24gKHgsIGksIGEpIHtcbiAgICAgICAgICAgIG1lbW8gPSBpdGVyYXRvcihtZW1vLCB4LCBpLCBhKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBtZW1vO1xuICAgIH07XG5cbiAgICB2YXIgX2tleXMgPSBmdW5jdGlvbiAob2JqKSB7XG4gICAgICAgIGlmIChPYmplY3Qua2V5cykge1xuICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKG9iaik7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGtleXMgPSBbXTtcbiAgICAgICAgZm9yICh2YXIgayBpbiBvYmopIHtcbiAgICAgICAgICAgIGlmIChvYmouaGFzT3duUHJvcGVydHkoaykpIHtcbiAgICAgICAgICAgICAgICBrZXlzLnB1c2goayk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGtleXM7XG4gICAgfTtcblxuICAgIC8vLy8gZXhwb3J0ZWQgYXN5bmMgbW9kdWxlIGZ1bmN0aW9ucyAvLy8vXG5cbiAgICAvLy8vIG5leHRUaWNrIGltcGxlbWVudGF0aW9uIHdpdGggYnJvd3Nlci1jb21wYXRpYmxlIGZhbGxiYWNrIC8vLy9cbiAgICBpZiAodHlwZW9mIHByb2Nlc3MgPT09ICd1bmRlZmluZWQnIHx8ICEocHJvY2Vzcy5uZXh0VGljaykpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBzZXRJbW1lZGlhdGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGFzeW5jLm5leHRUaWNrID0gZnVuY3Rpb24gKGZuKSB7XG4gICAgICAgICAgICAgICAgLy8gbm90IGEgZGlyZWN0IGFsaWFzIGZvciBJRTEwIGNvbXBhdGliaWxpdHlcbiAgICAgICAgICAgICAgICBzZXRJbW1lZGlhdGUoZm4pO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGFzeW5jLnNldEltbWVkaWF0ZSA9IGFzeW5jLm5leHRUaWNrO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgYXN5bmMubmV4dFRpY2sgPSBmdW5jdGlvbiAoZm4pIHtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZuLCAwKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBhc3luYy5zZXRJbW1lZGlhdGUgPSBhc3luYy5uZXh0VGljaztcbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgYXN5bmMubmV4dFRpY2sgPSBwcm9jZXNzLm5leHRUaWNrO1xuICAgICAgICBpZiAodHlwZW9mIHNldEltbWVkaWF0ZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIGFzeW5jLnNldEltbWVkaWF0ZSA9IGZ1bmN0aW9uIChmbikge1xuICAgICAgICAgICAgICAvLyBub3QgYSBkaXJlY3QgYWxpYXMgZm9yIElFMTAgY29tcGF0aWJpbGl0eVxuICAgICAgICAgICAgICBzZXRJbW1lZGlhdGUoZm4pO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGFzeW5jLnNldEltbWVkaWF0ZSA9IGFzeW5jLm5leHRUaWNrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMuZWFjaCA9IGZ1bmN0aW9uIChhcnIsIGl0ZXJhdG9yLCBjYWxsYmFjaykge1xuICAgICAgICBjYWxsYmFjayA9IGNhbGxiYWNrIHx8IGZ1bmN0aW9uICgpIHt9O1xuICAgICAgICBpZiAoIWFyci5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiBjYWxsYmFjaygpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBjb21wbGV0ZWQgPSAwO1xuICAgICAgICBfZWFjaChhcnIsIGZ1bmN0aW9uICh4KSB7XG4gICAgICAgICAgICBpdGVyYXRvcih4LCBvbmx5X29uY2UoZnVuY3Rpb24gKGVycikge1xuICAgICAgICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soZXJyKTtcbiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2sgPSBmdW5jdGlvbiAoKSB7fTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbXBsZXRlZCArPSAxO1xuICAgICAgICAgICAgICAgICAgICBpZiAoY29tcGxldGVkID49IGFyci5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKG51bGwpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSkpO1xuICAgICAgICB9KTtcbiAgICB9O1xuICAgIGFzeW5jLmZvckVhY2ggPSBhc3luYy5lYWNoO1xuXG4gICAgYXN5bmMuZWFjaFNlcmllcyA9IGZ1bmN0aW9uIChhcnIsIGl0ZXJhdG9yLCBjYWxsYmFjaykge1xuICAgICAgICBjYWxsYmFjayA9IGNhbGxiYWNrIHx8IGZ1bmN0aW9uICgpIHt9O1xuICAgICAgICBpZiAoIWFyci5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiBjYWxsYmFjaygpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBjb21wbGV0ZWQgPSAwO1xuICAgICAgICB2YXIgaXRlcmF0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGl0ZXJhdG9yKGFycltjb21wbGV0ZWRdLCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgICAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhlcnIpO1xuICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayA9IGZ1bmN0aW9uICgpIHt9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29tcGxldGVkICs9IDE7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjb21wbGV0ZWQgPj0gYXJyLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2sobnVsbCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVyYXRlKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgaXRlcmF0ZSgpO1xuICAgIH07XG4gICAgYXN5bmMuZm9yRWFjaFNlcmllcyA9IGFzeW5jLmVhY2hTZXJpZXM7XG5cbiAgICBhc3luYy5lYWNoTGltaXQgPSBmdW5jdGlvbiAoYXJyLCBsaW1pdCwgaXRlcmF0b3IsIGNhbGxiYWNrKSB7XG4gICAgICAgIHZhciBmbiA9IF9lYWNoTGltaXQobGltaXQpO1xuICAgICAgICBmbi5hcHBseShudWxsLCBbYXJyLCBpdGVyYXRvciwgY2FsbGJhY2tdKTtcbiAgICB9O1xuICAgIGFzeW5jLmZvckVhY2hMaW1pdCA9IGFzeW5jLmVhY2hMaW1pdDtcblxuICAgIHZhciBfZWFjaExpbWl0ID0gZnVuY3Rpb24gKGxpbWl0KSB7XG5cbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChhcnIsIGl0ZXJhdG9yLCBjYWxsYmFjaykge1xuICAgICAgICAgICAgY2FsbGJhY2sgPSBjYWxsYmFjayB8fCBmdW5jdGlvbiAoKSB7fTtcbiAgICAgICAgICAgIGlmICghYXJyLmxlbmd0aCB8fCBsaW1pdCA8PSAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgY29tcGxldGVkID0gMDtcbiAgICAgICAgICAgIHZhciBzdGFydGVkID0gMDtcbiAgICAgICAgICAgIHZhciBydW5uaW5nID0gMDtcblxuICAgICAgICAgICAgKGZ1bmN0aW9uIHJlcGxlbmlzaCAoKSB7XG4gICAgICAgICAgICAgICAgaWYgKGNvbXBsZXRlZCA+PSBhcnIubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjaygpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHdoaWxlIChydW5uaW5nIDwgbGltaXQgJiYgc3RhcnRlZCA8IGFyci5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgc3RhcnRlZCArPSAxO1xuICAgICAgICAgICAgICAgICAgICBydW5uaW5nICs9IDE7XG4gICAgICAgICAgICAgICAgICAgIGl0ZXJhdG9yKGFycltzdGFydGVkIC0gMV0sIGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhlcnIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrID0gZnVuY3Rpb24gKCkge307XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZWQgKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBydW5uaW5nIC09IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbXBsZXRlZCA+PSBhcnIubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBsZW5pc2goKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pKCk7XG4gICAgICAgIH07XG4gICAgfTtcblxuXG4gICAgdmFyIGRvUGFyYWxsZWwgPSBmdW5jdGlvbiAoZm4pIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTtcbiAgICAgICAgICAgIHJldHVybiBmbi5hcHBseShudWxsLCBbYXN5bmMuZWFjaF0uY29uY2F0KGFyZ3MpKTtcbiAgICAgICAgfTtcbiAgICB9O1xuICAgIHZhciBkb1BhcmFsbGVsTGltaXQgPSBmdW5jdGlvbihsaW1pdCwgZm4pIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTtcbiAgICAgICAgICAgIHJldHVybiBmbi5hcHBseShudWxsLCBbX2VhY2hMaW1pdChsaW1pdCldLmNvbmNhdChhcmdzKSk7XG4gICAgICAgIH07XG4gICAgfTtcbiAgICB2YXIgZG9TZXJpZXMgPSBmdW5jdGlvbiAoZm4pIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTtcbiAgICAgICAgICAgIHJldHVybiBmbi5hcHBseShudWxsLCBbYXN5bmMuZWFjaFNlcmllc10uY29uY2F0KGFyZ3MpKTtcbiAgICAgICAgfTtcbiAgICB9O1xuXG5cbiAgICB2YXIgX2FzeW5jTWFwID0gZnVuY3Rpb24gKGVhY2hmbiwgYXJyLCBpdGVyYXRvciwgY2FsbGJhY2spIHtcbiAgICAgICAgdmFyIHJlc3VsdHMgPSBbXTtcbiAgICAgICAgYXJyID0gX21hcChhcnIsIGZ1bmN0aW9uICh4LCBpKSB7XG4gICAgICAgICAgICByZXR1cm4ge2luZGV4OiBpLCB2YWx1ZTogeH07XG4gICAgICAgIH0pO1xuICAgICAgICBlYWNoZm4oYXJyLCBmdW5jdGlvbiAoeCwgY2FsbGJhY2spIHtcbiAgICAgICAgICAgIGl0ZXJhdG9yKHgudmFsdWUsIGZ1bmN0aW9uIChlcnIsIHYpIHtcbiAgICAgICAgICAgICAgICByZXN1bHRzW3guaW5kZXhdID0gdjtcbiAgICAgICAgICAgICAgICBjYWxsYmFjayhlcnIpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sIGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgICAgIGNhbGxiYWNrKGVyciwgcmVzdWx0cyk7XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgYXN5bmMubWFwID0gZG9QYXJhbGxlbChfYXN5bmNNYXApO1xuICAgIGFzeW5jLm1hcFNlcmllcyA9IGRvU2VyaWVzKF9hc3luY01hcCk7XG4gICAgYXN5bmMubWFwTGltaXQgPSBmdW5jdGlvbiAoYXJyLCBsaW1pdCwgaXRlcmF0b3IsIGNhbGxiYWNrKSB7XG4gICAgICAgIHJldHVybiBfbWFwTGltaXQobGltaXQpKGFyciwgaXRlcmF0b3IsIGNhbGxiYWNrKTtcbiAgICB9O1xuXG4gICAgdmFyIF9tYXBMaW1pdCA9IGZ1bmN0aW9uKGxpbWl0KSB7XG4gICAgICAgIHJldHVybiBkb1BhcmFsbGVsTGltaXQobGltaXQsIF9hc3luY01hcCk7XG4gICAgfTtcblxuICAgIC8vIHJlZHVjZSBvbmx5IGhhcyBhIHNlcmllcyB2ZXJzaW9uLCBhcyBkb2luZyByZWR1Y2UgaW4gcGFyYWxsZWwgd29uJ3RcbiAgICAvLyB3b3JrIGluIG1hbnkgc2l0dWF0aW9ucy5cbiAgICBhc3luYy5yZWR1Y2UgPSBmdW5jdGlvbiAoYXJyLCBtZW1vLCBpdGVyYXRvciwgY2FsbGJhY2spIHtcbiAgICAgICAgYXN5bmMuZWFjaFNlcmllcyhhcnIsIGZ1bmN0aW9uICh4LCBjYWxsYmFjaykge1xuICAgICAgICAgICAgaXRlcmF0b3IobWVtbywgeCwgZnVuY3Rpb24gKGVyciwgdikge1xuICAgICAgICAgICAgICAgIG1lbW8gPSB2O1xuICAgICAgICAgICAgICAgIGNhbGxiYWNrKGVycik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSwgZnVuY3Rpb24gKGVycikge1xuICAgICAgICAgICAgY2FsbGJhY2soZXJyLCBtZW1vKTtcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICAvLyBpbmplY3QgYWxpYXNcbiAgICBhc3luYy5pbmplY3QgPSBhc3luYy5yZWR1Y2U7XG4gICAgLy8gZm9sZGwgYWxpYXNcbiAgICBhc3luYy5mb2xkbCA9IGFzeW5jLnJlZHVjZTtcblxuICAgIGFzeW5jLnJlZHVjZVJpZ2h0ID0gZnVuY3Rpb24gKGFyciwgbWVtbywgaXRlcmF0b3IsIGNhbGxiYWNrKSB7XG4gICAgICAgIHZhciByZXZlcnNlZCA9IF9tYXAoYXJyLCBmdW5jdGlvbiAoeCkge1xuICAgICAgICAgICAgcmV0dXJuIHg7XG4gICAgICAgIH0pLnJldmVyc2UoKTtcbiAgICAgICAgYXN5bmMucmVkdWNlKHJldmVyc2VkLCBtZW1vLCBpdGVyYXRvciwgY2FsbGJhY2spO1xuICAgIH07XG4gICAgLy8gZm9sZHIgYWxpYXNcbiAgICBhc3luYy5mb2xkciA9IGFzeW5jLnJlZHVjZVJpZ2h0O1xuXG4gICAgdmFyIF9maWx0ZXIgPSBmdW5jdGlvbiAoZWFjaGZuLCBhcnIsIGl0ZXJhdG9yLCBjYWxsYmFjaykge1xuICAgICAgICB2YXIgcmVzdWx0cyA9IFtdO1xuICAgICAgICBhcnIgPSBfbWFwKGFyciwgZnVuY3Rpb24gKHgsIGkpIHtcbiAgICAgICAgICAgIHJldHVybiB7aW5kZXg6IGksIHZhbHVlOiB4fTtcbiAgICAgICAgfSk7XG4gICAgICAgIGVhY2hmbihhcnIsIGZ1bmN0aW9uICh4LCBjYWxsYmFjaykge1xuICAgICAgICAgICAgaXRlcmF0b3IoeC52YWx1ZSwgZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgICAgICAgICBpZiAodikge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHRzLnB1c2goeCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhbGxiYWNrKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSwgZnVuY3Rpb24gKGVycikge1xuICAgICAgICAgICAgY2FsbGJhY2soX21hcChyZXN1bHRzLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYS5pbmRleCAtIGIuaW5kZXg7XG4gICAgICAgICAgICB9KSwgZnVuY3Rpb24gKHgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4geC52YWx1ZTtcbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICBhc3luYy5maWx0ZXIgPSBkb1BhcmFsbGVsKF9maWx0ZXIpO1xuICAgIGFzeW5jLmZpbHRlclNlcmllcyA9IGRvU2VyaWVzKF9maWx0ZXIpO1xuICAgIC8vIHNlbGVjdCBhbGlhc1xuICAgIGFzeW5jLnNlbGVjdCA9IGFzeW5jLmZpbHRlcjtcbiAgICBhc3luYy5zZWxlY3RTZXJpZXMgPSBhc3luYy5maWx0ZXJTZXJpZXM7XG5cbiAgICB2YXIgX3JlamVjdCA9IGZ1bmN0aW9uIChlYWNoZm4sIGFyciwgaXRlcmF0b3IsIGNhbGxiYWNrKSB7XG4gICAgICAgIHZhciByZXN1bHRzID0gW107XG4gICAgICAgIGFyciA9IF9tYXAoYXJyLCBmdW5jdGlvbiAoeCwgaSkge1xuICAgICAgICAgICAgcmV0dXJuIHtpbmRleDogaSwgdmFsdWU6IHh9O1xuICAgICAgICB9KTtcbiAgICAgICAgZWFjaGZuKGFyciwgZnVuY3Rpb24gKHgsIGNhbGxiYWNrKSB7XG4gICAgICAgICAgICBpdGVyYXRvcih4LnZhbHVlLCBmdW5jdGlvbiAodikge1xuICAgICAgICAgICAgICAgIGlmICghdikge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHRzLnB1c2goeCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhbGxiYWNrKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSwgZnVuY3Rpb24gKGVycikge1xuICAgICAgICAgICAgY2FsbGJhY2soX21hcChyZXN1bHRzLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYS5pbmRleCAtIGIuaW5kZXg7XG4gICAgICAgICAgICB9KSwgZnVuY3Rpb24gKHgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4geC52YWx1ZTtcbiAgICAgICAgICAgIH0pKTtcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICBhc3luYy5yZWplY3QgPSBkb1BhcmFsbGVsKF9yZWplY3QpO1xuICAgIGFzeW5jLnJlamVjdFNlcmllcyA9IGRvU2VyaWVzKF9yZWplY3QpO1xuXG4gICAgdmFyIF9kZXRlY3QgPSBmdW5jdGlvbiAoZWFjaGZuLCBhcnIsIGl0ZXJhdG9yLCBtYWluX2NhbGxiYWNrKSB7XG4gICAgICAgIGVhY2hmbihhcnIsIGZ1bmN0aW9uICh4LCBjYWxsYmFjaykge1xuICAgICAgICAgICAgaXRlcmF0b3IoeCwgZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgICAgICAgICAgICAgbWFpbl9jYWxsYmFjayh4KTtcbiAgICAgICAgICAgICAgICAgICAgbWFpbl9jYWxsYmFjayA9IGZ1bmN0aW9uICgpIHt9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSwgZnVuY3Rpb24gKGVycikge1xuICAgICAgICAgICAgbWFpbl9jYWxsYmFjaygpO1xuICAgICAgICB9KTtcbiAgICB9O1xuICAgIGFzeW5jLmRldGVjdCA9IGRvUGFyYWxsZWwoX2RldGVjdCk7XG4gICAgYXN5bmMuZGV0ZWN0U2VyaWVzID0gZG9TZXJpZXMoX2RldGVjdCk7XG5cbiAgICBhc3luYy5zb21lID0gZnVuY3Rpb24gKGFyciwgaXRlcmF0b3IsIG1haW5fY2FsbGJhY2spIHtcbiAgICAgICAgYXN5bmMuZWFjaChhcnIsIGZ1bmN0aW9uICh4LCBjYWxsYmFjaykge1xuICAgICAgICAgICAgaXRlcmF0b3IoeCwgZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgICAgICAgICBpZiAodikge1xuICAgICAgICAgICAgICAgICAgICBtYWluX2NhbGxiYWNrKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICBtYWluX2NhbGxiYWNrID0gZnVuY3Rpb24gKCkge307XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhbGxiYWNrKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSwgZnVuY3Rpb24gKGVycikge1xuICAgICAgICAgICAgbWFpbl9jYWxsYmFjayhmYWxzZSk7XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgLy8gYW55IGFsaWFzXG4gICAgYXN5bmMuYW55ID0gYXN5bmMuc29tZTtcblxuICAgIGFzeW5jLmV2ZXJ5ID0gZnVuY3Rpb24gKGFyciwgaXRlcmF0b3IsIG1haW5fY2FsbGJhY2spIHtcbiAgICAgICAgYXN5bmMuZWFjaChhcnIsIGZ1bmN0aW9uICh4LCBjYWxsYmFjaykge1xuICAgICAgICAgICAgaXRlcmF0b3IoeCwgZnVuY3Rpb24gKHYpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXYpIHtcbiAgICAgICAgICAgICAgICAgICAgbWFpbl9jYWxsYmFjayhmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIG1haW5fY2FsbGJhY2sgPSBmdW5jdGlvbiAoKSB7fTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FsbGJhY2soKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgICAgICBtYWluX2NhbGxiYWNrKHRydWUpO1xuICAgICAgICB9KTtcbiAgICB9O1xuICAgIC8vIGFsbCBhbGlhc1xuICAgIGFzeW5jLmFsbCA9IGFzeW5jLmV2ZXJ5O1xuXG4gICAgYXN5bmMuc29ydEJ5ID0gZnVuY3Rpb24gKGFyciwgaXRlcmF0b3IsIGNhbGxiYWNrKSB7XG4gICAgICAgIGFzeW5jLm1hcChhcnIsIGZ1bmN0aW9uICh4LCBjYWxsYmFjaykge1xuICAgICAgICAgICAgaXRlcmF0b3IoeCwgZnVuY3Rpb24gKGVyciwgY3JpdGVyaWEpIHtcbiAgICAgICAgICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKGVycik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhudWxsLCB7dmFsdWU6IHgsIGNyaXRlcmlhOiBjcml0ZXJpYX0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LCBmdW5jdGlvbiAoZXJyLCByZXN1bHRzKSB7XG4gICAgICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGVycik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB2YXIgZm4gPSBmdW5jdGlvbiAobGVmdCwgcmlnaHQpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBsZWZ0LmNyaXRlcmlhLCBiID0gcmlnaHQuY3JpdGVyaWE7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhIDwgYiA/IC0xIDogYSA+IGIgPyAxIDogMDtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGNhbGxiYWNrKG51bGwsIF9tYXAocmVzdWx0cy5zb3J0KGZuKSwgZnVuY3Rpb24gKHgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHgudmFsdWU7XG4gICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgYXN5bmMuYXV0byA9IGZ1bmN0aW9uICh0YXNrcywgY2FsbGJhY2spIHtcbiAgICAgICAgY2FsbGJhY2sgPSBjYWxsYmFjayB8fCBmdW5jdGlvbiAoKSB7fTtcbiAgICAgICAgdmFyIGtleXMgPSBfa2V5cyh0YXNrcyk7XG4gICAgICAgIGlmICgha2V5cy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhudWxsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciByZXN1bHRzID0ge307XG5cbiAgICAgICAgdmFyIGxpc3RlbmVycyA9IFtdO1xuICAgICAgICB2YXIgYWRkTGlzdGVuZXIgPSBmdW5jdGlvbiAoZm4pIHtcbiAgICAgICAgICAgIGxpc3RlbmVycy51bnNoaWZ0KGZuKTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIHJlbW92ZUxpc3RlbmVyID0gZnVuY3Rpb24gKGZuKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxpc3RlbmVycy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICAgICAgICAgIGlmIChsaXN0ZW5lcnNbaV0gPT09IGZuKSB7XG4gICAgICAgICAgICAgICAgICAgIGxpc3RlbmVycy5zcGxpY2UoaSwgMSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHZhciB0YXNrQ29tcGxldGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBfZWFjaChsaXN0ZW5lcnMuc2xpY2UoMCksIGZ1bmN0aW9uIChmbikge1xuICAgICAgICAgICAgICAgIGZuKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcblxuICAgICAgICBhZGRMaXN0ZW5lcihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAoX2tleXMocmVzdWx0cykubGVuZ3RoID09PSBrZXlzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGNhbGxiYWNrKG51bGwsIHJlc3VsdHMpO1xuICAgICAgICAgICAgICAgIGNhbGxiYWNrID0gZnVuY3Rpb24gKCkge307XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIF9lYWNoKGtleXMsIGZ1bmN0aW9uIChrKSB7XG4gICAgICAgICAgICB2YXIgdGFzayA9ICh0YXNrc1trXSBpbnN0YW5jZW9mIEZ1bmN0aW9uKSA/IFt0YXNrc1trXV06IHRhc2tzW2tdO1xuICAgICAgICAgICAgdmFyIHRhc2tDYWxsYmFjayA9IGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgICAgICAgICB2YXIgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMSk7XG4gICAgICAgICAgICAgICAgaWYgKGFyZ3MubGVuZ3RoIDw9IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgYXJncyA9IGFyZ3NbMF07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHNhZmVSZXN1bHRzID0ge307XG4gICAgICAgICAgICAgICAgICAgIF9lYWNoKF9rZXlzKHJlc3VsdHMpLCBmdW5jdGlvbihya2V5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzYWZlUmVzdWx0c1tya2V5XSA9IHJlc3VsdHNbcmtleV07XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBzYWZlUmVzdWx0c1trXSA9IGFyZ3M7XG4gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKGVyciwgc2FmZVJlc3VsdHMpO1xuICAgICAgICAgICAgICAgICAgICAvLyBzdG9wIHN1YnNlcXVlbnQgZXJyb3JzIGhpdHRpbmcgY2FsbGJhY2sgbXVsdGlwbGUgdGltZXNcbiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2sgPSBmdW5jdGlvbiAoKSB7fTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdHNba10gPSBhcmdzO1xuICAgICAgICAgICAgICAgICAgICBhc3luYy5zZXRJbW1lZGlhdGUodGFza0NvbXBsZXRlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdmFyIHJlcXVpcmVzID0gdGFzay5zbGljZSgwLCBNYXRoLmFicyh0YXNrLmxlbmd0aCAtIDEpKSB8fCBbXTtcbiAgICAgICAgICAgIHZhciByZWFkeSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gX3JlZHVjZShyZXF1aXJlcywgZnVuY3Rpb24gKGEsIHgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChhICYmIHJlc3VsdHMuaGFzT3duUHJvcGVydHkoeCkpO1xuICAgICAgICAgICAgICAgIH0sIHRydWUpICYmICFyZXN1bHRzLmhhc093blByb3BlcnR5KGspO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGlmIChyZWFkeSgpKSB7XG4gICAgICAgICAgICAgICAgdGFza1t0YXNrLmxlbmd0aCAtIDFdKHRhc2tDYWxsYmFjaywgcmVzdWx0cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB2YXIgbGlzdGVuZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZWFkeSgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVMaXN0ZW5lcihsaXN0ZW5lcik7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YXNrW3Rhc2subGVuZ3RoIC0gMV0odGFza0NhbGxiYWNrLCByZXN1bHRzKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgYWRkTGlzdGVuZXIobGlzdGVuZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgYXN5bmMud2F0ZXJmYWxsID0gZnVuY3Rpb24gKHRhc2tzLCBjYWxsYmFjaykge1xuICAgICAgICBjYWxsYmFjayA9IGNhbGxiYWNrIHx8IGZ1bmN0aW9uICgpIHt9O1xuICAgICAgICBpZiAodGFza3MuY29uc3RydWN0b3IgIT09IEFycmF5KSB7XG4gICAgICAgICAgdmFyIGVyciA9IG5ldyBFcnJvcignRmlyc3QgYXJndW1lbnQgdG8gd2F0ZXJmYWxsIG11c3QgYmUgYW4gYXJyYXkgb2YgZnVuY3Rpb25zJyk7XG4gICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGVycik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0YXNrcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiBjYWxsYmFjaygpO1xuICAgICAgICB9XG4gICAgICAgIHZhciB3cmFwSXRlcmF0b3IgPSBmdW5jdGlvbiAoaXRlcmF0b3IpIHtcbiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgICAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgICAgICAgICBjYWxsYmFjay5hcHBseShudWxsLCBhcmd1bWVudHMpO1xuICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayA9IGZ1bmN0aW9uICgpIHt9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGFyZ3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpO1xuICAgICAgICAgICAgICAgICAgICB2YXIgbmV4dCA9IGl0ZXJhdG9yLm5leHQoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG5leHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MucHVzaCh3cmFwSXRlcmF0b3IobmV4dCkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgYXJncy5wdXNoKGNhbGxiYWNrKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBhc3luYy5zZXRJbW1lZGlhdGUoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaXRlcmF0b3IuYXBwbHkobnVsbCwgYXJncyk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgIH07XG4gICAgICAgIHdyYXBJdGVyYXRvcihhc3luYy5pdGVyYXRvcih0YXNrcykpKCk7XG4gICAgfTtcblxuICAgIHZhciBfcGFyYWxsZWwgPSBmdW5jdGlvbihlYWNoZm4sIHRhc2tzLCBjYWxsYmFjaykge1xuICAgICAgICBjYWxsYmFjayA9IGNhbGxiYWNrIHx8IGZ1bmN0aW9uICgpIHt9O1xuICAgICAgICBpZiAodGFza3MuY29uc3RydWN0b3IgPT09IEFycmF5KSB7XG4gICAgICAgICAgICBlYWNoZm4ubWFwKHRhc2tzLCBmdW5jdGlvbiAoZm4sIGNhbGxiYWNrKSB7XG4gICAgICAgICAgICAgICAgaWYgKGZuKSB7XG4gICAgICAgICAgICAgICAgICAgIGZuKGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhcmdzLmxlbmd0aCA8PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncyA9IGFyZ3NbMF07XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjay5jYWxsKG51bGwsIGVyciwgYXJncyk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sIGNhbGxiYWNrKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHZhciByZXN1bHRzID0ge307XG4gICAgICAgICAgICBlYWNoZm4uZWFjaChfa2V5cyh0YXNrcyksIGZ1bmN0aW9uIChrLCBjYWxsYmFjaykge1xuICAgICAgICAgICAgICAgIHRhc2tzW2tdKGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGFyZ3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoYXJncy5sZW5ndGggPD0gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYXJncyA9IGFyZ3NbMF07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0c1trXSA9IGFyZ3M7XG4gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKGVycik7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgICAgICAgICAgY2FsbGJhY2soZXJyLCByZXN1bHRzKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIGFzeW5jLnBhcmFsbGVsID0gZnVuY3Rpb24gKHRhc2tzLCBjYWxsYmFjaykge1xuICAgICAgICBfcGFyYWxsZWwoeyBtYXA6IGFzeW5jLm1hcCwgZWFjaDogYXN5bmMuZWFjaCB9LCB0YXNrcywgY2FsbGJhY2spO1xuICAgIH07XG5cbiAgICBhc3luYy5wYXJhbGxlbExpbWl0ID0gZnVuY3Rpb24odGFza3MsIGxpbWl0LCBjYWxsYmFjaykge1xuICAgICAgICBfcGFyYWxsZWwoeyBtYXA6IF9tYXBMaW1pdChsaW1pdCksIGVhY2g6IF9lYWNoTGltaXQobGltaXQpIH0sIHRhc2tzLCBjYWxsYmFjayk7XG4gICAgfTtcblxuICAgIGFzeW5jLnNlcmllcyA9IGZ1bmN0aW9uICh0YXNrcywgY2FsbGJhY2spIHtcbiAgICAgICAgY2FsbGJhY2sgPSBjYWxsYmFjayB8fCBmdW5jdGlvbiAoKSB7fTtcbiAgICAgICAgaWYgKHRhc2tzLmNvbnN0cnVjdG9yID09PSBBcnJheSkge1xuICAgICAgICAgICAgYXN5bmMubWFwU2VyaWVzKHRhc2tzLCBmdW5jdGlvbiAoZm4sIGNhbGxiYWNrKSB7XG4gICAgICAgICAgICAgICAgaWYgKGZuKSB7XG4gICAgICAgICAgICAgICAgICAgIGZuKGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhcmdzLmxlbmd0aCA8PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncyA9IGFyZ3NbMF07XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjay5jYWxsKG51bGwsIGVyciwgYXJncyk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sIGNhbGxiYWNrKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHZhciByZXN1bHRzID0ge307XG4gICAgICAgICAgICBhc3luYy5lYWNoU2VyaWVzKF9rZXlzKHRhc2tzKSwgZnVuY3Rpb24gKGssIGNhbGxiYWNrKSB7XG4gICAgICAgICAgICAgICAgdGFza3Nba10oZnVuY3Rpb24gKGVycikge1xuICAgICAgICAgICAgICAgICAgICB2YXIgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChhcmdzLmxlbmd0aCA8PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhcmdzID0gYXJnc1swXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXN1bHRzW2tdID0gYXJncztcbiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soZXJyKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sIGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgICAgICAgICBjYWxsYmFjayhlcnIsIHJlc3VsdHMpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgYXN5bmMuaXRlcmF0b3IgPSBmdW5jdGlvbiAodGFza3MpIHtcbiAgICAgICAgdmFyIG1ha2VDYWxsYmFjayA9IGZ1bmN0aW9uIChpbmRleCkge1xuICAgICAgICAgICAgdmFyIGZuID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGlmICh0YXNrcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGFza3NbaW5kZXhdLmFwcGx5KG51bGwsIGFyZ3VtZW50cyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBmbi5uZXh0KCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgZm4ubmV4dCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKGluZGV4IDwgdGFza3MubGVuZ3RoIC0gMSkgPyBtYWtlQ2FsbGJhY2soaW5kZXggKyAxKTogbnVsbDtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICByZXR1cm4gZm47XG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBtYWtlQ2FsbGJhY2soMCk7XG4gICAgfTtcblxuICAgIGFzeW5jLmFwcGx5ID0gZnVuY3Rpb24gKGZuKSB7XG4gICAgICAgIHZhciBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKTtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBmbi5hcHBseShcbiAgICAgICAgICAgICAgICBudWxsLCBhcmdzLmNvbmNhdChBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfTtcbiAgICB9O1xuXG4gICAgdmFyIF9jb25jYXQgPSBmdW5jdGlvbiAoZWFjaGZuLCBhcnIsIGZuLCBjYWxsYmFjaykge1xuICAgICAgICB2YXIgciA9IFtdO1xuICAgICAgICBlYWNoZm4oYXJyLCBmdW5jdGlvbiAoeCwgY2IpIHtcbiAgICAgICAgICAgIGZuKHgsIGZ1bmN0aW9uIChlcnIsIHkpIHtcbiAgICAgICAgICAgICAgICByID0gci5jb25jYXQoeSB8fCBbXSk7XG4gICAgICAgICAgICAgICAgY2IoZXJyKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgICAgICBjYWxsYmFjayhlcnIsIHIpO1xuICAgICAgICB9KTtcbiAgICB9O1xuICAgIGFzeW5jLmNvbmNhdCA9IGRvUGFyYWxsZWwoX2NvbmNhdCk7XG4gICAgYXN5bmMuY29uY2F0U2VyaWVzID0gZG9TZXJpZXMoX2NvbmNhdCk7XG5cbiAgICBhc3luYy53aGlsc3QgPSBmdW5jdGlvbiAodGVzdCwgaXRlcmF0b3IsIGNhbGxiYWNrKSB7XG4gICAgICAgIGlmICh0ZXN0KCkpIHtcbiAgICAgICAgICAgIGl0ZXJhdG9yKGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhlcnIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBhc3luYy53aGlsc3QodGVzdCwgaXRlcmF0b3IsIGNhbGxiYWNrKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY2FsbGJhY2soKTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBhc3luYy5kb1doaWxzdCA9IGZ1bmN0aW9uIChpdGVyYXRvciwgdGVzdCwgY2FsbGJhY2spIHtcbiAgICAgICAgaXRlcmF0b3IoZnVuY3Rpb24gKGVycikge1xuICAgICAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgICAgIHJldHVybiBjYWxsYmFjayhlcnIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRlc3QoKSkge1xuICAgICAgICAgICAgICAgIGFzeW5jLmRvV2hpbHN0KGl0ZXJhdG9yLCB0ZXN0LCBjYWxsYmFjayk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBjYWxsYmFjaygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgYXN5bmMudW50aWwgPSBmdW5jdGlvbiAodGVzdCwgaXRlcmF0b3IsIGNhbGxiYWNrKSB7XG4gICAgICAgIGlmICghdGVzdCgpKSB7XG4gICAgICAgICAgICBpdGVyYXRvcihmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgICAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soZXJyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYXN5bmMudW50aWwodGVzdCwgaXRlcmF0b3IsIGNhbGxiYWNrKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY2FsbGJhY2soKTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBhc3luYy5kb1VudGlsID0gZnVuY3Rpb24gKGl0ZXJhdG9yLCB0ZXN0LCBjYWxsYmFjaykge1xuICAgICAgICBpdGVyYXRvcihmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGVycik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIXRlc3QoKSkge1xuICAgICAgICAgICAgICAgIGFzeW5jLmRvVW50aWwoaXRlcmF0b3IsIHRlc3QsIGNhbGxiYWNrKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGNhbGxiYWNrKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH07XG5cbiAgICBhc3luYy5xdWV1ZSA9IGZ1bmN0aW9uICh3b3JrZXIsIGNvbmN1cnJlbmN5KSB7XG4gICAgICAgIGlmIChjb25jdXJyZW5jeSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBjb25jdXJyZW5jeSA9IDE7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gX2luc2VydChxLCBkYXRhLCBwb3MsIGNhbGxiYWNrKSB7XG4gICAgICAgICAgaWYoZGF0YS5jb25zdHJ1Y3RvciAhPT0gQXJyYXkpIHtcbiAgICAgICAgICAgICAgZGF0YSA9IFtkYXRhXTtcbiAgICAgICAgICB9XG4gICAgICAgICAgX2VhY2goZGF0YSwgZnVuY3Rpb24odGFzaykge1xuICAgICAgICAgICAgICB2YXIgaXRlbSA9IHtcbiAgICAgICAgICAgICAgICAgIGRhdGE6IHRhc2ssXG4gICAgICAgICAgICAgICAgICBjYWxsYmFjazogdHlwZW9mIGNhbGxiYWNrID09PSAnZnVuY3Rpb24nID8gY2FsbGJhY2sgOiBudWxsXG4gICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgaWYgKHBvcykge1xuICAgICAgICAgICAgICAgIHEudGFza3MudW5zaGlmdChpdGVtKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBxLnRhc2tzLnB1c2goaXRlbSk7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBpZiAocS5zYXR1cmF0ZWQgJiYgcS50YXNrcy5sZW5ndGggPT09IGNvbmN1cnJlbmN5KSB7XG4gICAgICAgICAgICAgICAgICBxLnNhdHVyYXRlZCgpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGFzeW5jLnNldEltbWVkaWF0ZShxLnByb2Nlc3MpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIHdvcmtlcnMgPSAwO1xuICAgICAgICB2YXIgcSA9IHtcbiAgICAgICAgICAgIHRhc2tzOiBbXSxcbiAgICAgICAgICAgIGNvbmN1cnJlbmN5OiBjb25jdXJyZW5jeSxcbiAgICAgICAgICAgIHNhdHVyYXRlZDogbnVsbCxcbiAgICAgICAgICAgIGVtcHR5OiBudWxsLFxuICAgICAgICAgICAgZHJhaW46IG51bGwsXG4gICAgICAgICAgICBwdXNoOiBmdW5jdGlvbiAoZGF0YSwgY2FsbGJhY2spIHtcbiAgICAgICAgICAgICAgX2luc2VydChxLCBkYXRhLCBmYWxzZSwgY2FsbGJhY2spO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHVuc2hpZnQ6IGZ1bmN0aW9uIChkYXRhLCBjYWxsYmFjaykge1xuICAgICAgICAgICAgICBfaW5zZXJ0KHEsIGRhdGEsIHRydWUsIGNhbGxiYWNrKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwcm9jZXNzOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgaWYgKHdvcmtlcnMgPCBxLmNvbmN1cnJlbmN5ICYmIHEudGFza3MubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB0YXNrID0gcS50YXNrcy5zaGlmdCgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAocS5lbXB0eSAmJiBxLnRhc2tzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcS5lbXB0eSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHdvcmtlcnMgKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIG5leHQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB3b3JrZXJzIC09IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGFzay5jYWxsYmFjaykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhc2suY2FsbGJhY2suYXBwbHkodGFzaywgYXJndW1lbnRzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChxLmRyYWluICYmIHEudGFza3MubGVuZ3RoICsgd29ya2VycyA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHEuZHJhaW4oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHEucHJvY2VzcygpO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICB2YXIgY2IgPSBvbmx5X29uY2UobmV4dCk7XG4gICAgICAgICAgICAgICAgICAgIHdvcmtlcih0YXNrLmRhdGEsIGNiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGVuZ3RoOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHEudGFza3MubGVuZ3RoO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJ1bm5pbmc6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gd29ya2VycztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIHE7XG4gICAgfTtcblxuICAgIGFzeW5jLmNhcmdvID0gZnVuY3Rpb24gKHdvcmtlciwgcGF5bG9hZCkge1xuICAgICAgICB2YXIgd29ya2luZyAgICAgPSBmYWxzZSxcbiAgICAgICAgICAgIHRhc2tzICAgICAgID0gW107XG5cbiAgICAgICAgdmFyIGNhcmdvID0ge1xuICAgICAgICAgICAgdGFza3M6IHRhc2tzLFxuICAgICAgICAgICAgcGF5bG9hZDogcGF5bG9hZCxcbiAgICAgICAgICAgIHNhdHVyYXRlZDogbnVsbCxcbiAgICAgICAgICAgIGVtcHR5OiBudWxsLFxuICAgICAgICAgICAgZHJhaW46IG51bGwsXG4gICAgICAgICAgICBwdXNoOiBmdW5jdGlvbiAoZGF0YSwgY2FsbGJhY2spIHtcbiAgICAgICAgICAgICAgICBpZihkYXRhLmNvbnN0cnVjdG9yICE9PSBBcnJheSkge1xuICAgICAgICAgICAgICAgICAgICBkYXRhID0gW2RhdGFdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBfZWFjaChkYXRhLCBmdW5jdGlvbih0YXNrKSB7XG4gICAgICAgICAgICAgICAgICAgIHRhc2tzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogdGFzayxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrOiB0eXBlb2YgY2FsbGJhY2sgPT09ICdmdW5jdGlvbicgPyBjYWxsYmFjayA6IG51bGxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjYXJnby5zYXR1cmF0ZWQgJiYgdGFza3MubGVuZ3RoID09PSBwYXlsb2FkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXJnby5zYXR1cmF0ZWQoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGFzeW5jLnNldEltbWVkaWF0ZShjYXJnby5wcm9jZXNzKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwcm9jZXNzOiBmdW5jdGlvbiBwcm9jZXNzKCkge1xuICAgICAgICAgICAgICAgIGlmICh3b3JraW5nKSByZXR1cm47XG4gICAgICAgICAgICAgICAgaWYgKHRhc2tzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICBpZihjYXJnby5kcmFpbikgY2FyZ28uZHJhaW4oKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHZhciB0cyA9IHR5cGVvZiBwYXlsb2FkID09PSAnbnVtYmVyJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gdGFza3Muc3BsaWNlKDAsIHBheWxvYWQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB0YXNrcy5zcGxpY2UoMCk7XG5cbiAgICAgICAgICAgICAgICB2YXIgZHMgPSBfbWFwKHRzLCBmdW5jdGlvbiAodGFzaykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGFzay5kYXRhO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgaWYoY2FyZ28uZW1wdHkpIGNhcmdvLmVtcHR5KCk7XG4gICAgICAgICAgICAgICAgd29ya2luZyA9IHRydWU7XG4gICAgICAgICAgICAgICAgd29ya2VyKGRzLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHdvcmtpbmcgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgICAgICB2YXIgYXJncyA9IGFyZ3VtZW50cztcbiAgICAgICAgICAgICAgICAgICAgX2VhY2godHMsIGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5jYWxsYmFjaykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEuY2FsbGJhY2suYXBwbHkobnVsbCwgYXJncyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgIHByb2Nlc3MoKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsZW5ndGg6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGFza3MubGVuZ3RoO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJ1bm5pbmc6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gd29ya2luZztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIGNhcmdvO1xuICAgIH07XG5cbiAgICB2YXIgX2NvbnNvbGVfZm4gPSBmdW5jdGlvbiAobmFtZSkge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKGZuKSB7XG4gICAgICAgICAgICB2YXIgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMSk7XG4gICAgICAgICAgICBmbi5hcHBseShudWxsLCBhcmdzLmNvbmNhdChbZnVuY3Rpb24gKGVycikge1xuICAgICAgICAgICAgICAgIHZhciBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKTtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb25zb2xlLmVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNvbnNvbGVbbmFtZV0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIF9lYWNoKGFyZ3MsIGZ1bmN0aW9uICh4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZVtuYW1lXSh4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfV0pKTtcbiAgICAgICAgfTtcbiAgICB9O1xuICAgIGFzeW5jLmxvZyA9IF9jb25zb2xlX2ZuKCdsb2cnKTtcbiAgICBhc3luYy5kaXIgPSBfY29uc29sZV9mbignZGlyJyk7XG4gICAgLyphc3luYy5pbmZvID0gX2NvbnNvbGVfZm4oJ2luZm8nKTtcbiAgICBhc3luYy53YXJuID0gX2NvbnNvbGVfZm4oJ3dhcm4nKTtcbiAgICBhc3luYy5lcnJvciA9IF9jb25zb2xlX2ZuKCdlcnJvcicpOyovXG5cbiAgICBhc3luYy5tZW1vaXplID0gZnVuY3Rpb24gKGZuLCBoYXNoZXIpIHtcbiAgICAgICAgdmFyIG1lbW8gPSB7fTtcbiAgICAgICAgdmFyIHF1ZXVlcyA9IHt9O1xuICAgICAgICBoYXNoZXIgPSBoYXNoZXIgfHwgZnVuY3Rpb24gKHgpIHtcbiAgICAgICAgICAgIHJldHVybiB4O1xuICAgICAgICB9O1xuICAgICAgICB2YXIgbWVtb2l6ZWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7XG4gICAgICAgICAgICB2YXIgY2FsbGJhY2sgPSBhcmdzLnBvcCgpO1xuICAgICAgICAgICAgdmFyIGtleSA9IGhhc2hlci5hcHBseShudWxsLCBhcmdzKTtcbiAgICAgICAgICAgIGlmIChrZXkgaW4gbWVtbykge1xuICAgICAgICAgICAgICAgIGNhbGxiYWNrLmFwcGx5KG51bGwsIG1lbW9ba2V5XSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChrZXkgaW4gcXVldWVzKSB7XG4gICAgICAgICAgICAgICAgcXVldWVzW2tleV0ucHVzaChjYWxsYmFjayk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBxdWV1ZXNba2V5XSA9IFtjYWxsYmFja107XG4gICAgICAgICAgICAgICAgZm4uYXBwbHkobnVsbCwgYXJncy5jb25jYXQoW2Z1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgbWVtb1trZXldID0gYXJndW1lbnRzO1xuICAgICAgICAgICAgICAgICAgICB2YXIgcSA9IHF1ZXVlc1trZXldO1xuICAgICAgICAgICAgICAgICAgICBkZWxldGUgcXVldWVzW2tleV07XG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwLCBsID0gcS5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICBxW2ldLmFwcGx5KG51bGwsIGFyZ3VtZW50cyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBtZW1vaXplZC5tZW1vID0gbWVtbztcbiAgICAgICAgbWVtb2l6ZWQudW5tZW1vaXplZCA9IGZuO1xuICAgICAgICByZXR1cm4gbWVtb2l6ZWQ7XG4gICAgfTtcblxuICAgIGFzeW5jLnVubWVtb2l6ZSA9IGZ1bmN0aW9uIChmbikge1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIChmbi51bm1lbW9pemVkIHx8IGZuKS5hcHBseShudWxsLCBhcmd1bWVudHMpO1xuICAgICAgfTtcbiAgICB9O1xuXG4gICAgYXN5bmMudGltZXMgPSBmdW5jdGlvbiAoY291bnQsIGl0ZXJhdG9yLCBjYWxsYmFjaykge1xuICAgICAgICB2YXIgY291bnRlciA9IFtdO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvdW50OyBpKyspIHtcbiAgICAgICAgICAgIGNvdW50ZXIucHVzaChpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYXN5bmMubWFwKGNvdW50ZXIsIGl0ZXJhdG9yLCBjYWxsYmFjayk7XG4gICAgfTtcblxuICAgIGFzeW5jLnRpbWVzU2VyaWVzID0gZnVuY3Rpb24gKGNvdW50LCBpdGVyYXRvciwgY2FsbGJhY2spIHtcbiAgICAgICAgdmFyIGNvdW50ZXIgPSBbXTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7XG4gICAgICAgICAgICBjb3VudGVyLnB1c2goaSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFzeW5jLm1hcFNlcmllcyhjb3VudGVyLCBpdGVyYXRvciwgY2FsbGJhY2spO1xuICAgIH07XG5cbiAgICBhc3luYy5jb21wb3NlID0gZnVuY3Rpb24gKC8qIGZ1bmN0aW9ucy4uLiAqLykge1xuICAgICAgICB2YXIgZm5zID0gQXJyYXkucHJvdG90eXBlLnJldmVyc2UuY2FsbChhcmd1bWVudHMpO1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIHRoYXQgPSB0aGlzO1xuICAgICAgICAgICAgdmFyIGFyZ3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpO1xuICAgICAgICAgICAgdmFyIGNhbGxiYWNrID0gYXJncy5wb3AoKTtcbiAgICAgICAgICAgIGFzeW5jLnJlZHVjZShmbnMsIGFyZ3MsIGZ1bmN0aW9uIChuZXdhcmdzLCBmbiwgY2IpIHtcbiAgICAgICAgICAgICAgICBmbi5hcHBseSh0aGF0LCBuZXdhcmdzLmNvbmNhdChbZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgZXJyID0gYXJndW1lbnRzWzBdO1xuICAgICAgICAgICAgICAgICAgICB2YXIgbmV4dGFyZ3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpO1xuICAgICAgICAgICAgICAgICAgICBjYihlcnIsIG5leHRhcmdzKTtcbiAgICAgICAgICAgICAgICB9XSkpXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZnVuY3Rpb24gKGVyciwgcmVzdWx0cykge1xuICAgICAgICAgICAgICAgIGNhbGxiYWNrLmFwcGx5KHRoYXQsIFtlcnJdLmNvbmNhdChyZXN1bHRzKSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICB9O1xuXG4gICAgdmFyIF9hcHBseUVhY2ggPSBmdW5jdGlvbiAoZWFjaGZuLCBmbnMgLyphcmdzLi4uKi8pIHtcbiAgICAgICAgdmFyIGdvID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIHRoYXQgPSB0aGlzO1xuICAgICAgICAgICAgdmFyIGFyZ3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpO1xuICAgICAgICAgICAgdmFyIGNhbGxiYWNrID0gYXJncy5wb3AoKTtcbiAgICAgICAgICAgIHJldHVybiBlYWNoZm4oZm5zLCBmdW5jdGlvbiAoZm4sIGNiKSB7XG4gICAgICAgICAgICAgICAgZm4uYXBwbHkodGhhdCwgYXJncy5jb25jYXQoW2NiXSkpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNhbGxiYWNrKTtcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPiAyKSB7XG4gICAgICAgICAgICB2YXIgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMik7XG4gICAgICAgICAgICByZXR1cm4gZ28uYXBwbHkodGhpcywgYXJncyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZ287XG4gICAgICAgIH1cbiAgICB9O1xuICAgIGFzeW5jLmFwcGx5RWFjaCA9IGRvUGFyYWxsZWwoX2FwcGx5RWFjaCk7XG4gICAgYXN5bmMuYXBwbHlFYWNoU2VyaWVzID0gZG9TZXJpZXMoX2FwcGx5RWFjaCk7XG5cbiAgICBhc3luYy5mb3JldmVyID0gZnVuY3Rpb24gKGZuLCBjYWxsYmFjaykge1xuICAgICAgICBmdW5jdGlvbiBuZXh0KGVycikge1xuICAgICAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soZXJyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZm4obmV4dCk7XG4gICAgICAgIH1cbiAgICAgICAgbmV4dCgpO1xuICAgIH07XG5cbiAgICAvLyBBTUQgLyBSZXF1aXJlSlNcbiAgICBpZiAodHlwZW9mIGRlZmluZSAhPT0gJ3VuZGVmaW5lZCcgJiYgZGVmaW5lLmFtZCkge1xuICAgICAgICBkZWZpbmUoW10sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBhc3luYztcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIC8vIE5vZGUuanNcbiAgICBlbHNlIGlmICh0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJyAmJiBtb2R1bGUuZXhwb3J0cykge1xuICAgICAgICBtb2R1bGUuZXhwb3J0cyA9IGFzeW5jO1xuICAgIH1cbiAgICAvLyBpbmNsdWRlZCBkaXJlY3RseSB2aWEgPHNjcmlwdD4gdGFnXG4gICAgZWxzZSB7XG4gICAgICAgIHJvb3QuYXN5bmMgPSBhc3luYztcbiAgICB9XG5cbn0oKSk7XG4iLCIvKiFcbiAqIFRtcFxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxMS0yMDEzIEtBUkFTWkkgSXN0dmFuIDxnaXRodWJAc3BhbS5yYXN6aS5odT5cbiAqXG4gKiBNSVQgTGljZW5zZWRcbiAqL1xuXG4vKipcbiAqIE1vZHVsZSBkZXBlbmRlbmNpZXMuXG4gKi9cbnZhclxuICBmcyAgICAgPSByZXF1aXJlKCdmcycpLFxuICBwYXRoICAgPSByZXF1aXJlKCdwYXRoJyksXG4gIG9zICAgICA9IHJlcXVpcmUoJ29zJyksXG4gIGV4aXN0cyA9IGZzLmV4aXN0cyB8fCBwYXRoLmV4aXN0cyxcbiAgdG1wRGlyID0gb3MudG1wRGlyIHx8IF9nZXRUTVBEaXIsXG4gIF9jICAgICA9IHJlcXVpcmUoJ2NvbnN0YW50cycpO1xuXG4vKipcbiAqIFRoZSB3b3JraW5nIGlubmVyIHZhcmlhYmxlcy5cbiAqL1xudmFyXG4gIC8vIHN0b3JlIHRoZSBhY3R1YWwgVE1QIGRpcmVjdG9yeVxuICBfVE1QID0gdG1wRGlyKCksXG5cbiAgLy8gdGhlIHJhbmRvbSBjaGFyYWN0ZXJzIHRvIGNob29zZSBmcm9tXG4gIHJhbmRvbUNoYXJzID0gXCIwMTIzNDU2Nzg5QUJDREVGR0hJSktMTU5PUFFSU1RVVldYVFphYmNkZWZnaGlrbG1ub3BxcnN0dXZ3eHl6XCIsXG4gIHJhbmRvbUNoYXJzTGVuZ3RoID0gcmFuZG9tQ2hhcnMubGVuZ3RoLFxuXG4gIC8vIHRoaXMgd2lsbCBob2xkIHRoZSBvYmplY3RzIG5lZWQgdG8gYmUgcmVtb3ZlZCBvbiBleGl0XG4gIF9yZW1vdmVPYmplY3RzID0gW10sXG5cbiAgX2dyYWNlZnVsQ2xlYW51cCA9IGZhbHNlLFxuICBfdW5jYXVnaHRFeGNlcHRpb24gPSBmYWxzZTtcblxuLyoqXG4gKiBHZXRzIHRoZSB0ZW1wIGRpcmVjdG9yeS5cbiAqXG4gKiBAcmV0dXJuIHtTdHJpbmd9XG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuZnVuY3Rpb24gX2dldFRNUERpcigpIHtcbiAgdmFyIHRtcE5hbWVzID0gWyAnVE1QRElSJywgJ1RNUCcsICdURU1QJyBdO1xuXG4gIGZvciAodmFyIGkgPSAwLCBsZW5ndGggPSB0bXBOYW1lcy5sZW5ndGg7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgIGlmIChfaXNVbmRlZmluZWQocHJvY2Vzcy5lbnZbdG1wTmFtZXNbaV1dKSkgY29udGludWU7XG5cbiAgICByZXR1cm4gcHJvY2Vzcy5lbnZbdG1wTmFtZXNbaV1dO1xuICB9XG5cbiAgLy8gZmFsbGJhY2sgdG8gdGhlIGRlZmF1bHRcbiAgcmV0dXJuICcvdG1wJztcbn1cblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciB0aGUgYG9iamAgcGFyYW1ldGVyIGlzIGRlZmluZWQgb3Igbm90LlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmpcbiAqIEByZXR1cm4ge0Jvb2xlYW59XG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuZnVuY3Rpb24gX2lzVW5kZWZpbmVkKG9iaikge1xuICByZXR1cm4gdHlwZW9mIG9iaiA9PT0gJ3VuZGVmaW5lZCc7XG59XG5cbi8qKlxuICogUGFyc2VzIHRoZSBmdW5jdGlvbiBhcmd1bWVudHMuXG4gKlxuICogVGhpcyBmdW5jdGlvbiBoZWxwcyB0byBoYXZlIG9wdGlvbmFsIGFyZ3VtZW50cy5cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gb3B0aW9uc1xuICogQHBhcmFtIHtGdW5jdGlvbn0gY2FsbGJhY2tcbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5mdW5jdGlvbiBfcGFyc2VBcmd1bWVudHMob3B0aW9ucywgY2FsbGJhY2spIHtcbiAgaWYgKCFjYWxsYmFjayB8fCB0eXBlb2YgY2FsbGJhY2sgIT0gXCJmdW5jdGlvblwiKSB7XG4gICAgY2FsbGJhY2sgPSBvcHRpb25zO1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuXG4gIHJldHVybiBbIG9wdGlvbnMsIGNhbGxiYWNrIF07XG59XG5cbi8qKlxuICogR2V0cyBhIHRlbXBvcmFyeSBmaWxlIG5hbWUuXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IG9wdHNcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGNiXG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuZnVuY3Rpb24gX2dldFRtcE5hbWUob3B0aW9ucywgY2FsbGJhY2spIHtcbiAgdmFyXG4gICAgYXJncyA9IF9wYXJzZUFyZ3VtZW50cyhvcHRpb25zLCBjYWxsYmFjayksXG4gICAgb3B0cyA9IGFyZ3NbMF0sXG4gICAgY2IgPSBhcmdzWzFdLFxuICAgIHRlbXBsYXRlID0gb3B0cy50ZW1wbGF0ZSxcbiAgICB0ZW1wbGF0ZURlZmluZWQgPSAhX2lzVW5kZWZpbmVkKHRlbXBsYXRlKSxcbiAgICB0cmllcyA9IG9wdHMudHJpZXMgfHwgMztcblxuICBpZiAoaXNOYU4odHJpZXMpIHx8IHRyaWVzIDwgMClcbiAgICByZXR1cm4gY2IobmV3IEVycm9yKCdJbnZhbGlkIHRyaWVzJykpO1xuXG4gIGlmICh0ZW1wbGF0ZURlZmluZWQgJiYgIXRlbXBsYXRlLm1hdGNoKC9YWFhYWFgvKSlcbiAgICByZXR1cm4gY2IobmV3IEVycm9yKCdJbnZhbGlkIHRlbXBsYXRlIHByb3ZpZGVkJykpO1xuXG4gIGZ1bmN0aW9uIF9nZXROYW1lKCkge1xuXG4gICAgLy8gcHJlZml4IGFuZCBwb3N0Zml4XG4gICAgaWYgKCF0ZW1wbGF0ZURlZmluZWQpIHtcbiAgICAgIHZhciBuYW1lID0gW1xuICAgICAgICAoX2lzVW5kZWZpbmVkKG9wdHMucHJlZml4KSkgPyAndG1wLScgOiBvcHRzLnByZWZpeCxcbiAgICAgICAgcHJvY2Vzcy5waWQsXG4gICAgICAgIChNYXRoLnJhbmRvbSgpICogMHgxMDAwMDAwMDAwKS50b1N0cmluZygzNiksXG4gICAgICAgIG9wdHMucG9zdGZpeFxuICAgICAgXS5qb2luKCcnKTtcblxuICAgICAgcmV0dXJuIHBhdGguam9pbihvcHRzLmRpciB8fCBfVE1QLCBuYW1lKTtcbiAgICB9XG5cbiAgICAvLyBta3N0ZW1wcyBsaWtlIHRlbXBsYXRlXG4gICAgdmFyIGNoYXJzID0gW107XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IDY7IGkrKykge1xuICAgICAgY2hhcnMucHVzaChyYW5kb21DaGFycy5zdWJzdHIoTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogcmFuZG9tQ2hhcnNMZW5ndGgpLCAxKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRlbXBsYXRlLnJlcGxhY2UoL1hYWFhYWC8sIGNoYXJzLmpvaW4oJycpKTtcbiAgfVxuXG4gIChmdW5jdGlvbiBfZ2V0VW5pcXVlTmFtZSgpIHtcbiAgICB2YXIgbmFtZSA9IF9nZXROYW1lKCk7XG5cbiAgICAvLyBjaGVjayB3aGV0aGVyIHRoZSBwYXRoIGV4aXN0cyB0aGVuIHJldHJ5IGlmIG5lZWRlZFxuICAgIGV4aXN0cyhuYW1lLCBmdW5jdGlvbiBfcGF0aEV4aXN0cyhwYXRoRXhpc3RzKSB7XG4gICAgICBpZiAocGF0aEV4aXN0cykge1xuICAgICAgICBpZiAodHJpZXMtLSA+IDApIHJldHVybiBfZ2V0VW5pcXVlTmFtZSgpO1xuXG4gICAgICAgIHJldHVybiBjYihuZXcgRXJyb3IoJ0NvdWxkIG5vdCBnZXQgYSB1bmlxdWUgdG1wIGZpbGVuYW1lLCBtYXggdHJpZXMgcmVhY2hlZCcpKTtcbiAgICAgIH1cblxuICAgICAgY2IobnVsbCwgbmFtZSk7XG4gICAgfSk7XG4gIH0oKSk7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhbmQgb3BlbnMgYSB0ZW1wb3JhcnkgZmlsZS5cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gb3B0aW9uc1xuICogQHBhcmFtIHtGdW5jdGlvbn0gY2FsbGJhY2tcbiAqIEBhcGkgcHVibGljXG4gKi9cbmZ1bmN0aW9uIF9jcmVhdGVUbXBGaWxlKG9wdGlvbnMsIGNhbGxiYWNrKSB7XG4gIHZhclxuICAgIGFyZ3MgPSBfcGFyc2VBcmd1bWVudHMob3B0aW9ucywgY2FsbGJhY2spLFxuICAgIG9wdHMgPSBhcmdzWzBdLFxuICAgIGNiID0gYXJnc1sxXTtcblxuICAgIG9wdHMucG9zdGZpeCA9IChfaXNVbmRlZmluZWQob3B0cy5wb3N0Zml4KSkgPyAnLnRtcCcgOiBvcHRzLnBvc3RmaXg7XG5cbiAgLy8gZ2V0cyBhIHRlbXBvcmFyeSBmaWxlbmFtZVxuICBfZ2V0VG1wTmFtZShvcHRzLCBmdW5jdGlvbiBfdG1wTmFtZUNyZWF0ZWQoZXJyLCBuYW1lKSB7XG4gICAgaWYgKGVycikgcmV0dXJuIGNiKGVycik7XG5cbiAgICAvLyBjcmVhdGUgYW5kIG9wZW4gdGhlIGZpbGVcbiAgICBmcy5vcGVuKG5hbWUsIF9jLk9fQ1JFQVQgfCBfYy5PX0VYQ0wgfCBfYy5PX1JEV1IsIG9wdHMubW9kZSB8fCAwNjAwLCBmdW5jdGlvbiBfZmlsZUNyZWF0ZWQoZXJyLCBmZCkge1xuICAgICAgaWYgKGVycikgcmV0dXJuIGNiKGVycik7XG5cbiAgICAgIGlmICghb3B0cy5rZWVwKSBfcmVtb3ZlT2JqZWN0cy51bnNoaWZ0KFsgZnMudW5saW5rU3luYywgbmFtZSBdKTtcblxuICAgICAgY2IobnVsbCwgbmFtZSwgZmQpO1xuICAgIH0pO1xuICB9KTtcbn1cblxuLyoqXG4gKiBSZW1vdmVzIGZpbGVzIGFuZCBmb2xkZXJzIGluIGEgZGlyZWN0b3J5IHJlY3Vyc2l2ZWx5LlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBwYXRoXG4gKi9cbmZ1bmN0aW9uIF9ybWRpclJlY3Vyc2l2ZVN5bmMoZGlyKSB7XG4gIHZhciBmaWxlcyA9IGZzLnJlYWRkaXJTeW5jKGRpcik7XG5cbiAgZm9yICh2YXIgaSA9IDAsIGxlbmd0aCA9IGZpbGVzLmxlbmd0aDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGZpbGUgPSBwYXRoLmpvaW4oZGlyLCBmaWxlc1tpXSk7XG4gICAgLy8gbHN0YXQgc28gd2UgZG9uJ3QgcmVjdXJzZSBpbnRvIHN5bWxpbmtlZCBkaXJlY3Rvcmllcy5cbiAgICB2YXIgc3RhdCA9IGZzLmxzdGF0U3luYyhmaWxlKTtcblxuICAgIGlmIChzdGF0LmlzRGlyZWN0b3J5KCkpIHtcbiAgICAgIF9ybWRpclJlY3Vyc2l2ZVN5bmMoZmlsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZzLnVubGlua1N5bmMoZmlsZSk7XG4gICAgfVxuICB9XG5cbiAgZnMucm1kaXJTeW5jKGRpcik7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIHRlbXBvcmFyeSBkaXJlY3RvcnkuXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnNcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGNhbGxiYWNrXG4gKiBAYXBpIHB1YmxpY1xuICovXG5mdW5jdGlvbiBfY3JlYXRlVG1wRGlyKG9wdGlvbnMsIGNhbGxiYWNrKSB7XG4gIHZhclxuICAgIGFyZ3MgPSBfcGFyc2VBcmd1bWVudHMob3B0aW9ucywgY2FsbGJhY2spLFxuICAgIG9wdHMgPSBhcmdzWzBdLFxuICAgIGNiID0gYXJnc1sxXTtcblxuICAvLyBnZXRzIGEgdGVtcG9yYXJ5IGZpbGVuYW1lXG4gIF9nZXRUbXBOYW1lKG9wdHMsIGZ1bmN0aW9uIF90bXBOYW1lQ3JlYXRlZChlcnIsIG5hbWUpIHtcbiAgICBpZiAoZXJyKSByZXR1cm4gY2IoZXJyKTtcblxuICAgIC8vIGNyZWF0ZSB0aGUgZGlyZWN0b3J5XG4gICAgZnMubWtkaXIobmFtZSwgb3B0cy5tb2RlIHx8IDA3MDAsIGZ1bmN0aW9uIF9kaXJDcmVhdGVkKGVycikge1xuICAgICAgaWYgKGVycikgcmV0dXJuIGNiKGVycik7XG5cbiAgICAgIGlmICghb3B0cy5rZWVwKSB7XG4gICAgICAgIGlmIChvcHRzLnVuc2FmZUNsZWFudXApIHtcbiAgICAgICAgICBfcmVtb3ZlT2JqZWN0cy51bnNoaWZ0KFsgX3JtZGlyUmVjdXJzaXZlU3luYywgbmFtZSBdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBfcmVtb3ZlT2JqZWN0cy51bnNoaWZ0KFsgZnMucm1kaXJTeW5jLCBuYW1lIF0pO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNiKG51bGwsIG5hbWUpO1xuICAgIH0pO1xuICB9KTtcbn1cblxuLyoqXG4gKiBUaGUgZ2FyYmFnZSBjb2xsZWN0b3IuXG4gKlxuICogQGFwaSBwcml2YXRlXG4gKi9cbmZ1bmN0aW9uIF9nYXJiYWdlQ29sbGVjdG9yKCkge1xuICBpZiAoX3VuY2F1Z2h0RXhjZXB0aW9uICYmICFfZ3JhY2VmdWxDbGVhbnVwKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgZm9yICh2YXIgaSA9IDAsIGxlbmd0aCA9IF9yZW1vdmVPYmplY3RzLmxlbmd0aDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgdHJ5IHtcbiAgICAgIF9yZW1vdmVPYmplY3RzW2ldWzBdLmNhbGwobnVsbCwgX3JlbW92ZU9iamVjdHNbaV1bMV0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIC8vIGFscmVhZHkgcmVtb3ZlZD9cbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gX3NldEdyYWNlZnVsQ2xlYW51cCgpIHtcbiAgX2dyYWNlZnVsQ2xlYW51cCA9IHRydWU7XG59XG5cbnZhciB2ZXJzaW9uID0gcHJvY2Vzcy52ZXJzaW9ucy5ub2RlLnNwbGl0KCcuJykubWFwKGZ1bmN0aW9uICh2YWx1ZSkge1xuICByZXR1cm4gcGFyc2VJbnQodmFsdWUsIDEwKTtcbn0pO1xuXG5pZiAodmVyc2lvblswXSA9PT0gMCAmJiAodmVyc2lvblsxXSA8IDkgfHwgdmVyc2lvblsxXSA9PT0gOSAmJiB2ZXJzaW9uWzJdIDwgNSkpIHtcbiAgcHJvY2Vzcy5hZGRMaXN0ZW5lcigndW5jYXVnaHRFeGNlcHRpb24nLCBmdW5jdGlvbiBfdW5jYXVnaHRFeGNlcHRpb25UaHJvd24oIGVyciApIHtcbiAgICBfdW5jYXVnaHRFeGNlcHRpb24gPSB0cnVlO1xuICAgIF9nYXJiYWdlQ29sbGVjdG9yKCk7XG5cbiAgICB0aHJvdyBlcnI7XG4gIH0pO1xufVxuXG5wcm9jZXNzLmFkZExpc3RlbmVyKCdleGl0JywgZnVuY3Rpb24gX2V4aXQoY29kZSkge1xuICBpZiAoY29kZSkgX3VuY2F1Z2h0RXhjZXB0aW9uID0gdHJ1ZTtcbiAgX2dhcmJhZ2VDb2xsZWN0b3IoKTtcbn0pO1xuXG4vLyBleHBvcnRpbmcgYWxsIHRoZSBuZWVkZWQgbWV0aG9kc1xubW9kdWxlLmV4cG9ydHMudG1wZGlyID0gX1RNUDtcbm1vZHVsZS5leHBvcnRzLmRpciA9IF9jcmVhdGVUbXBEaXI7XG5tb2R1bGUuZXhwb3J0cy5maWxlID0gX2NyZWF0ZVRtcEZpbGU7XG5tb2R1bGUuZXhwb3J0cy50bXBOYW1lID0gX2dldFRtcE5hbWU7XG5tb2R1bGUuZXhwb3J0cy5zZXRHcmFjZWZ1bENsZWFudXAgPSBfc2V0R3JhY2VmdWxDbGVhbnVwO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gQ2FudmFzICgpIHtcbiAgcmV0dXJuIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xufTtcbiIsIi8vIGpzLWltYWdlZGlmZiAxLjAuM1xuLy8gKGMpIDIwMTEtMjAxMiBDYXJsIFN1dGhlcmxhbmQsIEh1bWJsZSBTb2Z0d2FyZVxuLy8gRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlXG4vLyBGb3Igb3JpZ2luYWwgc291cmNlIGFuZCBkb2N1bWVudGF0aW9uIHZpc2l0OlxuLy8gaHR0cDovL3d3dy5naXRodWIuY29tL0h1bWJsZVNvZnR3YXJlL2pzLWltYWdlZGlmZlxuXG4oZnVuY3Rpb24gKG5hbWUsIGRlZmluaXRpb24pIHtcbiAgdmFyIHJvb3QgPSB0aGlzO1xuICBpZiAodHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICB0cnkge1xuICAgICAgdmFyIENhbnZhcyA9IHJlcXVpcmUoJ2NhbnZhcycpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgZS5tZXNzYWdlICsgJ1xcbicgK1xuICAgICAgICAnUGxlYXNlIHNlZSBodHRwczovL2dpdGh1Yi5jb20vSHVtYmxlU29mdHdhcmUvanMtaW1hZ2VkaWZmI2Nhbm5vdC1maW5kLW1vZHVsZS1jYW52YXNcXG4nXG4gICAgICApO1xuICAgIH1cbiAgICBtb2R1bGUuZXhwb3J0cyA9IGRlZmluaXRpb24ocm9vdCwgbmFtZSwgQ2FudmFzKTtcbiAgfSBlbHNlIGlmICh0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBkZWZpbmUuYW1kID09PSAnb2JqZWN0Jykge1xuICAgIGRlZmluZShkZWZpbml0aW9uKTtcbiAgfSBlbHNlIHtcbiAgICByb290W25hbWVdID0gZGVmaW5pdGlvbihyb290LCBuYW1lKTtcbiAgfVxufSkoJ2ltYWdlZGlmZicsIGZ1bmN0aW9uIChyb290LCBuYW1lLCBDYW52YXMpIHtcblxuICB2YXJcbiAgICBUWVBFX0FSUkFZICAgICAgICA9IC9cXFtvYmplY3QgQXJyYXlcXF0vaSxcbiAgICBUWVBFX0NBTlZBUyAgICAgICA9IC9cXFtvYmplY3QgKENhbnZhc3xIVE1MQ2FudmFzRWxlbWVudClcXF0vaSxcbiAgICBUWVBFX0NPTlRFWFQgICAgICA9IC9cXFtvYmplY3QgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEXFxdL2ksXG4gICAgVFlQRV9JTUFHRSAgICAgICAgPSAvXFxbb2JqZWN0IChJbWFnZXxIVE1MSW1hZ2VFbGVtZW50KVxcXS9pLFxuICAgIFRZUEVfSU1BR0VfREFUQSAgID0gL1xcW29iamVjdCBJbWFnZURhdGFcXF0vaSxcblxuICAgIFVOREVGSU5FRCAgICAgICAgID0gJ3VuZGVmaW5lZCcsXG5cbiAgICBjYW52YXMgICAgICAgICAgICA9IGdldENhbnZhcygpLFxuICAgIGNvbnRleHQgICAgICAgICAgID0gY2FudmFzLmdldENvbnRleHQoJzJkJyksXG4gICAgcHJldmlvdXMgICAgICAgICAgPSByb290W25hbWVdLFxuICAgIGltYWdlZGlmZiwgamFzbWluZTtcblxuICAvLyBDcmVhdGlvblxuICBmdW5jdGlvbiBnZXRDYW52YXMgKHdpZHRoLCBoZWlnaHQpIHtcbiAgICB2YXJcbiAgICAgIGNhbnZhcyA9IENhbnZhcyA/XG4gICAgICAgIG5ldyBDYW52YXMoKSA6XG4gICAgICAgIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xuICAgIGlmICh3aWR0aCkgY2FudmFzLndpZHRoID0gd2lkdGg7XG4gICAgaWYgKGhlaWdodCkgY2FudmFzLmhlaWdodCA9IGhlaWdodDtcbiAgICByZXR1cm4gY2FudmFzO1xuICB9XG4gIGZ1bmN0aW9uIGdldEltYWdlRGF0YSAod2lkdGgsIGhlaWdodCkge1xuICAgIGNhbnZhcy53aWR0aCA9IHdpZHRoO1xuICAgIGNhbnZhcy5oZWlnaHQgPSBoZWlnaHQ7XG4gICAgY29udGV4dC5jbGVhclJlY3QoMCwgMCwgd2lkdGgsIGhlaWdodCk7XG4gICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlSW1hZ2VEYXRhKHdpZHRoLCBoZWlnaHQpO1xuICB9XG4gIC8vIGV4cG9zdCBjYW52YXMgbW9kdWxlXG4gIGZ1bmN0aW9uIGdldENhbnZhc1JlZigpIHtcbiAgICByZXR1cm4gQ2FudmFzO1xuICB9XG5cblxuICAvLyBUeXBlIENoZWNraW5nXG4gIGZ1bmN0aW9uIGlzSW1hZ2UgKG9iamVjdCkge1xuICAgIHJldHVybiBpc1R5cGUob2JqZWN0LCBUWVBFX0lNQUdFKTtcbiAgfVxuICBmdW5jdGlvbiBpc0NhbnZhcyAob2JqZWN0KSB7XG4gICAgcmV0dXJuIGlzVHlwZShvYmplY3QsIFRZUEVfQ0FOVkFTKTtcbiAgfVxuICBmdW5jdGlvbiBpc0NvbnRleHQgKG9iamVjdCkge1xuICAgIHJldHVybiBpc1R5cGUob2JqZWN0LCBUWVBFX0NPTlRFWFQpO1xuICB9XG4gIGZ1bmN0aW9uIGlzSW1hZ2VEYXRhIChvYmplY3QpIHtcbiAgICByZXR1cm4gISEob2JqZWN0ICYmXG4gICAgICBpc1R5cGUob2JqZWN0LCBUWVBFX0lNQUdFX0RBVEEpICYmXG4gICAgICB0eXBlb2Yob2JqZWN0LndpZHRoKSAhPT0gVU5ERUZJTkVEICYmXG4gICAgICB0eXBlb2Yob2JqZWN0LmhlaWdodCkgIT09IFVOREVGSU5FRCAmJlxuICAgICAgdHlwZW9mKG9iamVjdC5kYXRhKSAhPT0gVU5ERUZJTkVEKTtcbiAgfVxuICBmdW5jdGlvbiBpc0ltYWdlVHlwZSAob2JqZWN0KSB7XG4gICAgcmV0dXJuIChcbiAgICAgIGlzSW1hZ2Uob2JqZWN0KSB8fFxuICAgICAgaXNDYW52YXMob2JqZWN0KSB8fFxuICAgICAgaXNDb250ZXh0KG9iamVjdCkgfHxcbiAgICAgIGlzSW1hZ2VEYXRhKG9iamVjdClcbiAgICApO1xuICB9XG4gIGZ1bmN0aW9uIGlzVHlwZSAob2JqZWN0LCB0eXBlKSB7XG4gICAgcmV0dXJuIHR5cGVvZiAob2JqZWN0KSA9PT0gJ29iamVjdCcgJiYgISFPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmFwcGx5KG9iamVjdCkubWF0Y2godHlwZSk7XG4gIH1cblxuXG4gIC8vIFR5cGUgQ29udmVyc2lvblxuICBmdW5jdGlvbiBjb3B5SW1hZ2VEYXRhIChpbWFnZURhdGEpIHtcbiAgICB2YXJcbiAgICAgIGhlaWdodCA9IGltYWdlRGF0YS5oZWlnaHQsXG4gICAgICB3aWR0aCA9IGltYWdlRGF0YS53aWR0aCxcbiAgICAgIGRhdGEgPSBpbWFnZURhdGEuZGF0YSxcbiAgICAgIG5ld0ltYWdlRGF0YSwgbmV3RGF0YSwgaTtcblxuICAgIGNhbnZhcy53aWR0aCA9IHdpZHRoO1xuICAgIGNhbnZhcy5oZWlnaHQgPSBoZWlnaHQ7XG4gICAgbmV3SW1hZ2VEYXRhID0gY29udGV4dC5nZXRJbWFnZURhdGEoMCwgMCwgd2lkdGgsIGhlaWdodCk7XG4gICAgbmV3RGF0YSA9IG5ld0ltYWdlRGF0YS5kYXRhO1xuXG4gICAgZm9yIChpID0gaW1hZ2VEYXRhLmRhdGEubGVuZ3RoOyBpLS07KSB7XG4gICAgICAgIG5ld0RhdGFbaV0gPSBkYXRhW2ldO1xuICAgIH1cblxuICAgIHJldHVybiBuZXdJbWFnZURhdGE7XG4gIH1cbiAgZnVuY3Rpb24gdG9JbWFnZURhdGEgKG9iamVjdCkge1xuICAgIGlmIChpc0ltYWdlKG9iamVjdCkpIHsgcmV0dXJuIHRvSW1hZ2VEYXRhRnJvbUltYWdlKG9iamVjdCk7IH1cbiAgICBpZiAoaXNDYW52YXMob2JqZWN0KSkgeyByZXR1cm4gdG9JbWFnZURhdGFGcm9tQ2FudmFzKG9iamVjdCk7IH1cbiAgICBpZiAoaXNDb250ZXh0KG9iamVjdCkpIHsgcmV0dXJuIHRvSW1hZ2VEYXRhRnJvbUNvbnRleHQob2JqZWN0KTsgfVxuICAgIGlmIChpc0ltYWdlRGF0YShvYmplY3QpKSB7IHJldHVybiBvYmplY3Q7IH1cbiAgfVxuICBmdW5jdGlvbiB0b0ltYWdlRGF0YUZyb21JbWFnZSAoaW1hZ2UpIHtcbiAgICB2YXJcbiAgICAgIGhlaWdodCA9IGltYWdlLmhlaWdodCxcbiAgICAgIHdpZHRoID0gaW1hZ2Uud2lkdGg7XG4gICAgY2FudmFzLndpZHRoID0gd2lkdGg7XG4gICAgY2FudmFzLmhlaWdodCA9IGhlaWdodDtcbiAgICBjb250ZXh0LmNsZWFyUmVjdCgwLCAwLCB3aWR0aCwgaGVpZ2h0KTtcbiAgICBjb250ZXh0LmRyYXdJbWFnZShpbWFnZSwgMCwgMCk7XG4gICAgcmV0dXJuIGNvbnRleHQuZ2V0SW1hZ2VEYXRhKDAsIDAsIHdpZHRoLCBoZWlnaHQpO1xuICB9XG4gIGZ1bmN0aW9uIHRvSW1hZ2VEYXRhRnJvbUNhbnZhcyAoY2FudmFzKSB7XG4gICAgdmFyXG4gICAgICBoZWlnaHQgPSBjYW52YXMuaGVpZ2h0LFxuICAgICAgd2lkdGggPSBjYW52YXMud2lkdGgsXG4gICAgICBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7XG4gICAgcmV0dXJuIGNvbnRleHQuZ2V0SW1hZ2VEYXRhKDAsIDAsIHdpZHRoLCBoZWlnaHQpO1xuICB9XG4gIGZ1bmN0aW9uIHRvSW1hZ2VEYXRhRnJvbUNvbnRleHQgKGNvbnRleHQpIHtcbiAgICB2YXJcbiAgICAgIGNhbnZhcyA9IGNvbnRleHQuY2FudmFzLFxuICAgICAgaGVpZ2h0ID0gY2FudmFzLmhlaWdodCxcbiAgICAgIHdpZHRoID0gY2FudmFzLndpZHRoO1xuICAgIHJldHVybiBjb250ZXh0LmdldEltYWdlRGF0YSgwLCAwLCB3aWR0aCwgaGVpZ2h0KTtcbiAgfVxuICBmdW5jdGlvbiB0b0NhbnZhcyAob2JqZWN0KSB7XG4gICAgdmFyXG4gICAgICBkYXRhID0gdG9JbWFnZURhdGEob2JqZWN0KSxcbiAgICAgIGNhbnZhcyA9IGdldENhbnZhcyhkYXRhLndpZHRoLCBkYXRhLmhlaWdodCksXG4gICAgICBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7XG5cbiAgICBjb250ZXh0LnB1dEltYWdlRGF0YShkYXRhLCAwLCAwKTtcbiAgICByZXR1cm4gY2FudmFzO1xuICB9XG5cblxuICAvLyBJbWFnZURhdGEgRXF1YWxpdHkgT3BlcmF0b3JzXG4gIGZ1bmN0aW9uIGVxdWFsV2lkdGggKGEsIGIpIHtcbiAgICByZXR1cm4gYS53aWR0aCA9PT0gYi53aWR0aDtcbiAgfVxuICBmdW5jdGlvbiBlcXVhbEhlaWdodCAoYSwgYikge1xuICAgIHJldHVybiBhLmhlaWdodCA9PT0gYi5oZWlnaHQ7XG4gIH1cbiAgZnVuY3Rpb24gZXF1YWxEaW1lbnNpb25zIChhLCBiKSB7XG4gICAgcmV0dXJuIGVxdWFsSGVpZ2h0KGEsIGIpICYmIGVxdWFsV2lkdGgoYSwgYik7XG4gIH1cbiAgZnVuY3Rpb24gZXF1YWwgKGEsIGIsIHRvbGVyYW5jZSkge1xuXG4gICAgdmFyXG4gICAgICBhRGF0YSAgICAgPSBhLmRhdGEsXG4gICAgICBiRGF0YSAgICAgPSBiLmRhdGEsXG4gICAgICBsZW5ndGggICAgPSBhRGF0YS5sZW5ndGgsXG4gICAgICBpO1xuXG4gICAgdG9sZXJhbmNlID0gdG9sZXJhbmNlIHx8IDA7XG5cbiAgICBpZiAoIWVxdWFsRGltZW5zaW9ucyhhLCBiKSkgcmV0dXJuIGZhbHNlO1xuICAgIGZvciAoaSA9IGxlbmd0aDsgaS0tOykgaWYgKGFEYXRhW2ldICE9PSBiRGF0YVtpXSAmJiBNYXRoLmFicyhhRGF0YVtpXSAtIGJEYXRhW2ldKSA+IHRvbGVyYW5jZSkgcmV0dXJuIGZhbHNlO1xuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuXG4gIC8vIERpZmZcbiAgZnVuY3Rpb24gZGlmZiAoYSwgYiwgb3B0aW9ucykge1xuICAgIHJldHVybiAoZXF1YWxEaW1lbnNpb25zKGEsIGIpID8gZGlmZkVxdWFsIDogZGlmZlVuZXF1YWwpKGEsIGIsIG9wdGlvbnMpO1xuICB9XG4gIGZ1bmN0aW9uIGRpZmZFcXVhbCAoYSwgYiwgb3B0aW9ucykge1xuXG4gICAgdmFyXG4gICAgICBoZWlnaHQgID0gYS5oZWlnaHQsXG4gICAgICB3aWR0aCAgID0gYS53aWR0aCxcbiAgICAgIGMgICAgICAgPSBnZXRJbWFnZURhdGEod2lkdGgsIGhlaWdodCksIC8vIGMgPSBhIC0gYlxuICAgICAgYURhdGEgICA9IGEuZGF0YSxcbiAgICAgIGJEYXRhICAgPSBiLmRhdGEsXG4gICAgICBjRGF0YSAgID0gYy5kYXRhLFxuICAgICAgbGVuZ3RoICA9IGNEYXRhLmxlbmd0aCxcbiAgICAgIHJvdywgY29sdW1uLFxuICAgICAgaSwgaiwgaywgdjtcblxuICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7IGkgKz0gNCkge1xuICAgICAgY0RhdGFbaV0gPSBNYXRoLmFicyhhRGF0YVtpXSAtIGJEYXRhW2ldKTtcbiAgICAgIGNEYXRhW2krMV0gPSBNYXRoLmFicyhhRGF0YVtpKzFdIC0gYkRhdGFbaSsxXSk7XG4gICAgICBjRGF0YVtpKzJdID0gTWF0aC5hYnMoYURhdGFbaSsyXSAtIGJEYXRhW2krMl0pO1xuICAgICAgY0RhdGFbaSszXSA9IE1hdGguYWJzKDI1NSAtIE1hdGguYWJzKGFEYXRhW2krM10gLSBiRGF0YVtpKzNdKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGM7XG4gIH1cbiAgZnVuY3Rpb24gZGlmZlVuZXF1YWwgKGEsIGIsIG9wdGlvbnMpIHtcblxuICAgIHZhclxuICAgICAgaGVpZ2h0ICA9IE1hdGgubWF4KGEuaGVpZ2h0LCBiLmhlaWdodCksXG4gICAgICB3aWR0aCAgID0gTWF0aC5tYXgoYS53aWR0aCwgYi53aWR0aCksXG4gICAgICBjICAgICAgID0gZ2V0SW1hZ2VEYXRhKHdpZHRoLCBoZWlnaHQpLCAvLyBjID0gYSAtIGJcbiAgICAgIGFEYXRhICAgPSBhLmRhdGEsXG4gICAgICBiRGF0YSAgID0gYi5kYXRhLFxuICAgICAgY0RhdGEgICA9IGMuZGF0YSxcbiAgICAgIGFsaWduICAgPSBvcHRpb25zICYmIG9wdGlvbnMuYWxpZ24sXG4gICAgICByb3dPZmZzZXQsXG4gICAgICBjb2x1bW5PZmZzZXQsXG4gICAgICByb3csIGNvbHVtbixcbiAgICAgIGksIGosIGssIHY7XG5cblxuICAgIGZvciAoaSA9IGNEYXRhLmxlbmd0aCAtIDE7IGkgPiAwOyBpID0gaSAtIDQpIHtcbiAgICAgIGNEYXRhW2ldID0gMjU1O1xuICAgIH1cblxuICAgIC8vIEFkZCBGaXJzdCBJbWFnZVxuICAgIG9mZnNldHMoYSk7XG4gICAgZm9yIChyb3cgPSBhLmhlaWdodDsgcm93LS07KXtcbiAgICAgIGZvciAoY29sdW1uID0gYS53aWR0aDsgY29sdW1uLS07KSB7XG4gICAgICAgIGkgPSA0ICogKChyb3cgKyByb3dPZmZzZXQpICogd2lkdGggKyAoY29sdW1uICsgY29sdW1uT2Zmc2V0KSk7XG4gICAgICAgIGogPSA0ICogKHJvdyAqIGEud2lkdGggKyBjb2x1bW4pO1xuICAgICAgICBjRGF0YVtpKzBdID0gYURhdGFbaiswXTsgLy8gclxuICAgICAgICBjRGF0YVtpKzFdID0gYURhdGFbaisxXTsgLy8gZ1xuICAgICAgICBjRGF0YVtpKzJdID0gYURhdGFbaisyXTsgLy8gYlxuICAgICAgICAvLyBjRGF0YVtpKzNdID0gYURhdGFbaiszXTsgLy8gYVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFN1YnRyYWN0IFNlY29uZCBJbWFnZVxuICAgIG9mZnNldHMoYik7XG4gICAgZm9yIChyb3cgPSBiLmhlaWdodDsgcm93LS07KXtcbiAgICAgIGZvciAoY29sdW1uID0gYi53aWR0aDsgY29sdW1uLS07KSB7XG4gICAgICAgIGkgPSA0ICogKChyb3cgKyByb3dPZmZzZXQpICogd2lkdGggKyAoY29sdW1uICsgY29sdW1uT2Zmc2V0KSk7XG4gICAgICAgIGogPSA0ICogKHJvdyAqIGIud2lkdGggKyBjb2x1bW4pO1xuICAgICAgICBjRGF0YVtpKzBdID0gTWF0aC5hYnMoY0RhdGFbaSswXSAtIGJEYXRhW2orMF0pOyAvLyByXG4gICAgICAgIGNEYXRhW2krMV0gPSBNYXRoLmFicyhjRGF0YVtpKzFdIC0gYkRhdGFbaisxXSk7IC8vIGdcbiAgICAgICAgY0RhdGFbaSsyXSA9IE1hdGguYWJzKGNEYXRhW2krMl0gLSBiRGF0YVtqKzJdKTsgLy8gYlxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEhlbHBlcnNcbiAgICBmdW5jdGlvbiBvZmZzZXRzIChpbWFnZURhdGEpIHtcbiAgICAgIGlmIChhbGlnbiA9PT0gJ3RvcCcpIHtcbiAgICAgICAgcm93T2Zmc2V0ID0gMDtcbiAgICAgICAgY29sdW1uT2Zmc2V0ID0gMDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJvd09mZnNldCA9IE1hdGguZmxvb3IoKGhlaWdodCAtIGltYWdlRGF0YS5oZWlnaHQpIC8gMik7XG4gICAgICAgIGNvbHVtbk9mZnNldCA9IE1hdGguZmxvb3IoKHdpZHRoIC0gaW1hZ2VEYXRhLndpZHRoKSAvIDIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBjO1xuICB9XG5cblxuICAvLyBWYWxpZGF0aW9uXG4gIGZ1bmN0aW9uIGNoZWNrVHlwZSAoKSB7XG4gICAgdmFyIGk7XG4gICAgZm9yIChpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKCFpc0ltYWdlVHlwZShhcmd1bWVudHNbaV0pKSB7XG4gICAgICAgIHRocm93IHtcbiAgICAgICAgICBuYW1lIDogJ0ltYWdlVHlwZUVycm9yJyxcbiAgICAgICAgICBtZXNzYWdlIDogJ1N1Ym1pdHRlZCBvYmplY3Qgd2FzIG5vdCBhbiBpbWFnZS4nXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuICB9XG5cblxuICAvLyBKYXNtaW5lIE1hdGNoZXJzXG4gIGZ1bmN0aW9uIGdldCAoZWxlbWVudCwgY29udGVudCkge1xuICAgIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KGVsZW1lbnQpO1xuICAgIGlmIChlbGVtZW50ICYmIGNvbnRlbnQpIHtcbiAgICAgIGVsZW1lbnQuaW5uZXJIVE1MID0gY29udGVudDtcbiAgICB9XG4gICAgcmV0dXJuIGVsZW1lbnQ7XG4gIH1cblxuICBqYXNtaW5lID0ge1xuXG4gICAgdG9CZUltYWdlRGF0YSA6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBpbWFnZWRpZmYuaXNJbWFnZURhdGEodGhpcy5hY3R1YWwpO1xuICAgIH0sXG5cbiAgICB0b0ltYWdlRGlmZkVxdWFsIDogZnVuY3Rpb24gKGV4cGVjdGVkLCB0b2xlcmFuY2UpIHtcblxuICAgICAgaWYgKHR5cGVvZiAoZG9jdW1lbnQpICE9PSBVTkRFRklORUQpIHtcbiAgICAgICAgdGhpcy5tZXNzYWdlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHZhclxuICAgICAgICAgICAgZGl2ICAgICA9IGdldCgnZGl2JyksXG4gICAgICAgICAgICBhICAgICAgID0gZ2V0KCdkaXYnLCAnPGRpdj5BY3R1YWw6PC9kaXY+JyksXG4gICAgICAgICAgICBiICAgICAgID0gZ2V0KCdkaXYnLCAnPGRpdj5FeHBlY3RlZDo8L2Rpdj4nKSxcbiAgICAgICAgICAgIGMgICAgICAgPSBnZXQoJ2RpdicsICc8ZGl2PkRpZmY6PC9kaXY+JyksXG4gICAgICAgICAgICBkaWZmICAgID0gaW1hZ2VkaWZmLmRpZmYodGhpcy5hY3R1YWwsIGV4cGVjdGVkKSxcbiAgICAgICAgICAgIGNhbnZhcyAgPSBnZXRDYW52YXMoKSxcbiAgICAgICAgICAgIGNvbnRleHQ7XG5cbiAgICAgICAgICBjYW52YXMuaGVpZ2h0ID0gZGlmZi5oZWlnaHQ7XG4gICAgICAgICAgY2FudmFzLndpZHRoICA9IGRpZmYud2lkdGg7XG5cbiAgICAgICAgICBkaXYuc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJztcbiAgICAgICAgICBhLnN0eWxlLmZsb2F0ID0gJ2xlZnQnO1xuICAgICAgICAgIGIuc3R5bGUuZmxvYXQgPSAnbGVmdCc7XG4gICAgICAgICAgYy5zdHlsZS5mbG9hdCA9ICdsZWZ0JztcblxuICAgICAgICAgIGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcbiAgICAgICAgICBjb250ZXh0LnB1dEltYWdlRGF0YShkaWZmLCAwLCAwKTtcblxuICAgICAgICAgIGEuYXBwZW5kQ2hpbGQodG9DYW52YXModGhpcy5hY3R1YWwpKTtcbiAgICAgICAgICBiLmFwcGVuZENoaWxkKHRvQ2FudmFzKGV4cGVjdGVkKSk7XG4gICAgICAgICAgYy5hcHBlbmRDaGlsZChjYW52YXMpO1xuXG4gICAgICAgICAgZGl2LmFwcGVuZENoaWxkKGEpO1xuICAgICAgICAgIGRpdi5hcHBlbmRDaGlsZChiKTtcbiAgICAgICAgICBkaXYuYXBwZW5kQ2hpbGQoYyk7XG5cbiAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgZGl2LFxuICAgICAgICAgICAgXCJFeHBlY3RlZCBub3QgdG8gYmUgZXF1YWwuXCJcbiAgICAgICAgICBdO1xuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gaW1hZ2VkaWZmLmVxdWFsKHRoaXMuYWN0dWFsLCBleHBlY3RlZCwgdG9sZXJhbmNlKTtcbiAgICB9XG4gIH07XG5cblxuICAvLyBJbWFnZSBPdXRwdXRcbiAgZnVuY3Rpb24gaW1hZ2VEYXRhVG9QTkcgKGltYWdlRGF0YSwgb3V0cHV0RmlsZSwgY2FsbGJhY2spIHtcblxuICAgIHZhclxuICAgICAgY2FudmFzID0gdG9DYW52YXMoaW1hZ2VEYXRhKSxcbiAgICAgIGJhc2U2NERhdGEsXG4gICAgICBkZWNvZGVkSW1hZ2U7XG5cbiAgICBjYWxsYmFjayA9IGNhbGxiYWNrIHx8IEZ1bmN0aW9uO1xuXG4gICAgYmFzZTY0RGF0YSA9IGNhbnZhcy50b0RhdGFVUkwoKS5yZXBsYWNlKC9eZGF0YTppbWFnZVxcL1xcdys7YmFzZTY0LC8sXCJcIik7XG4gICAgZGVjb2RlZEltYWdlID0gbmV3IEJ1ZmZlcihiYXNlNjREYXRhLCAnYmFzZTY0Jyk7XG4gICAgcmVxdWlyZSgnZnMnKS53cml0ZUZpbGUob3V0cHV0RmlsZSwgZGVjb2RlZEltYWdlLCBjYWxsYmFjayk7XG4gIH1cblxuXG4gIC8vIERlZmluaXRpb25cbiAgaW1hZ2VkaWZmID0ge1xuXG4gICAgY3JlYXRlQ2FudmFzIDogZ2V0Q2FudmFzLFxuICAgIGNyZWF0ZUltYWdlRGF0YSA6IGdldEltYWdlRGF0YSxcbiAgICBnZXRDYW52YXNSZWY6IGdldENhbnZhc1JlZixcblxuICAgIGlzSW1hZ2UgOiBpc0ltYWdlLFxuICAgIGlzQ2FudmFzIDogaXNDYW52YXMsXG4gICAgaXNDb250ZXh0IDogaXNDb250ZXh0LFxuICAgIGlzSW1hZ2VEYXRhIDogaXNJbWFnZURhdGEsXG4gICAgaXNJbWFnZVR5cGUgOiBpc0ltYWdlVHlwZSxcblxuICAgIHRvSW1hZ2VEYXRhIDogZnVuY3Rpb24gKG9iamVjdCkge1xuICAgICAgY2hlY2tUeXBlKG9iamVjdCk7XG4gICAgICBpZiAoaXNJbWFnZURhdGEob2JqZWN0KSkgeyByZXR1cm4gY29weUltYWdlRGF0YShvYmplY3QpOyB9XG4gICAgICByZXR1cm4gdG9JbWFnZURhdGEob2JqZWN0KTtcbiAgICB9LFxuXG4gICAgZXF1YWwgOiBmdW5jdGlvbiAoYSwgYiwgdG9sZXJhbmNlKSB7XG4gICAgICBjaGVja1R5cGUoYSwgYik7XG4gICAgICBhID0gdG9JbWFnZURhdGEoYSk7XG4gICAgICBiID0gdG9JbWFnZURhdGEoYik7XG4gICAgICByZXR1cm4gZXF1YWwoYSwgYiwgdG9sZXJhbmNlKTtcbiAgICB9LFxuICAgIGRpZmYgOiBmdW5jdGlvbiAoYSwgYiwgb3B0aW9ucykge1xuICAgICAgY2hlY2tUeXBlKGEsIGIpO1xuICAgICAgYSA9IHRvSW1hZ2VEYXRhKGEpO1xuICAgICAgYiA9IHRvSW1hZ2VEYXRhKGIpO1xuICAgICAgcmV0dXJuIGRpZmYoYSwgYiwgb3B0aW9ucyk7XG4gICAgfSxcblxuICAgIGphc21pbmUgOiBqYXNtaW5lLFxuXG4gICAgLy8gQ29tcGF0aWJpbGl0eVxuICAgIG5vQ29uZmxpY3QgOiBmdW5jdGlvbiAoKSB7XG4gICAgICByb290W25hbWVdID0gcHJldmlvdXM7XG4gICAgICByZXR1cm4gaW1hZ2VkaWZmO1xuICAgIH1cbiAgfTtcblxuICBpZiAodHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBpbWFnZWRpZmYuaW1hZ2VEYXRhVG9QTkcgPSBpbWFnZURhdGFUb1BORztcbiAgfVxuXG4gIHJldHVybiBpbWFnZWRpZmY7XG59KTtcbiIsIlxudmFyIGluZGV4T2YgPSBbXS5pbmRleE9mO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGFyciwgb2JqKXtcbiAgaWYgKGluZGV4T2YpIHJldHVybiBhcnIuaW5kZXhPZihvYmopO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGFyci5sZW5ndGg7ICsraSkge1xuICAgIGlmIChhcnJbaV0gPT09IG9iaikgcmV0dXJuIGk7XG4gIH1cbiAgcmV0dXJuIC0xO1xufTsiLCJpZiAodHlwZW9mIE9iamVjdC5jcmVhdGUgPT09ICdmdW5jdGlvbicpIHtcbiAgLy8gaW1wbGVtZW50YXRpb24gZnJvbSBzdGFuZGFyZCBub2RlLmpzICd1dGlsJyBtb2R1bGVcbiAgbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBpbmhlcml0cyhjdG9yLCBzdXBlckN0b3IpIHtcbiAgICBjdG9yLnN1cGVyXyA9IHN1cGVyQ3RvclxuICAgIGN0b3IucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckN0b3IucHJvdG90eXBlLCB7XG4gICAgICBjb25zdHJ1Y3Rvcjoge1xuICAgICAgICB2YWx1ZTogY3RvcixcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIHdyaXRhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgIH1cbiAgICB9KTtcbiAgfTtcbn0gZWxzZSB7XG4gIC8vIG9sZCBzY2hvb2wgc2hpbSBmb3Igb2xkIGJyb3dzZXJzXG4gIG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaW5oZXJpdHMoY3Rvciwgc3VwZXJDdG9yKSB7XG4gICAgY3Rvci5zdXBlcl8gPSBzdXBlckN0b3JcbiAgICB2YXIgVGVtcEN0b3IgPSBmdW5jdGlvbiAoKSB7fVxuICAgIFRlbXBDdG9yLnByb3RvdHlwZSA9IHN1cGVyQ3Rvci5wcm90b3R5cGVcbiAgICBjdG9yLnByb3RvdHlwZSA9IG5ldyBUZW1wQ3RvcigpXG4gICAgY3Rvci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBjdG9yXG4gIH1cbn1cbiIsIi8qIVxuICogRGV0ZXJtaW5lIGlmIGFuIG9iamVjdCBpcyBhIEJ1ZmZlclxuICpcbiAqIEBhdXRob3IgICBGZXJvc3MgQWJvdWtoYWRpamVoIDxmZXJvc3NAZmVyb3NzLm9yZz4gPGh0dHA6Ly9mZXJvc3Mub3JnPlxuICogQGxpY2Vuc2UgIE1JVFxuICovXG5cbi8vIFRoZSBfaXNCdWZmZXIgY2hlY2sgaXMgZm9yIFNhZmFyaSA1LTcgc3VwcG9ydCwgYmVjYXVzZSBpdCdzIG1pc3Npbmdcbi8vIE9iamVjdC5wcm90b3R5cGUuY29uc3RydWN0b3IuIFJlbW92ZSB0aGlzIGV2ZW50dWFsbHlcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9iaikge1xuICByZXR1cm4gb2JqICE9IG51bGwgJiYgKGlzQnVmZmVyKG9iaikgfHwgaXNTbG93QnVmZmVyKG9iaikgfHwgISFvYmouX2lzQnVmZmVyKVxufVxuXG5mdW5jdGlvbiBpc0J1ZmZlciAob2JqKSB7XG4gIHJldHVybiAhIW9iai5jb25zdHJ1Y3RvciAmJiB0eXBlb2Ygb2JqLmNvbnN0cnVjdG9yLmlzQnVmZmVyID09PSAnZnVuY3Rpb24nICYmIG9iai5jb25zdHJ1Y3Rvci5pc0J1ZmZlcihvYmopXG59XG5cbi8vIEZvciBOb2RlIHYwLjEwIHN1cHBvcnQuIFJlbW92ZSB0aGlzIGV2ZW50dWFsbHkuXG5mdW5jdGlvbiBpc1Nsb3dCdWZmZXIgKG9iaikge1xuICByZXR1cm4gdHlwZW9mIG9iai5yZWFkRmxvYXRMRSA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2Ygb2JqLnNsaWNlID09PSAnZnVuY3Rpb24nICYmIGlzQnVmZmVyKG9iai5zbGljZSgwLCAwKSlcbn1cbiIsInZhciB0b1N0cmluZyA9IHt9LnRvU3RyaW5nO1xuXG5tb2R1bGUuZXhwb3J0cyA9IEFycmF5LmlzQXJyYXkgfHwgZnVuY3Rpb24gKGFycikge1xuICByZXR1cm4gdG9TdHJpbmcuY2FsbChhcnIpID09ICdbb2JqZWN0IEFycmF5XSc7XG59O1xuIiwidmFyIGZzID0gcmVxdWlyZSgnZnMnKVxudmFyIGNvcmVcbmlmIChwcm9jZXNzLnBsYXRmb3JtID09PSAnd2luMzInIHx8IGdsb2JhbC5URVNUSU5HX1dJTkRPV1MpIHtcbiAgY29yZSA9IHJlcXVpcmUoJy4vd2luZG93cy5qcycpXG59IGVsc2Uge1xuICBjb3JlID0gcmVxdWlyZSgnLi9tb2RlLmpzJylcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc2V4ZVxuaXNleGUuc3luYyA9IHN5bmNcblxuZnVuY3Rpb24gaXNleGUgKHBhdGgsIG9wdGlvbnMsIGNiKSB7XG4gIGlmICh0eXBlb2Ygb3B0aW9ucyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGNiID0gb3B0aW9uc1xuICAgIG9wdGlvbnMgPSB7fVxuICB9XG5cbiAgaWYgKCFjYikge1xuICAgIGlmICh0eXBlb2YgUHJvbWlzZSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignY2FsbGJhY2sgbm90IHByb3ZpZGVkJylcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgaXNleGUocGF0aCwgb3B0aW9ucyB8fCB7fSwgZnVuY3Rpb24gKGVyLCBpcykge1xuICAgICAgICBpZiAoZXIpIHtcbiAgICAgICAgICByZWplY3QoZXIpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzb2x2ZShpcylcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9KVxuICB9XG5cbiAgY29yZShwYXRoLCBvcHRpb25zIHx8IHt9LCBmdW5jdGlvbiAoZXIsIGlzKSB7XG4gICAgLy8gaWdub3JlIEVBQ0NFUyBiZWNhdXNlIHRoYXQganVzdCBtZWFucyB3ZSBhcmVuJ3QgYWxsb3dlZCB0byBydW4gaXRcbiAgICBpZiAoZXIpIHtcbiAgICAgIGlmIChlci5jb2RlID09PSAnRUFDQ0VTJyB8fCBvcHRpb25zICYmIG9wdGlvbnMuaWdub3JlRXJyb3JzKSB7XG4gICAgICAgIGVyID0gbnVsbFxuICAgICAgICBpcyA9IGZhbHNlXG4gICAgICB9XG4gICAgfVxuICAgIGNiKGVyLCBpcylcbiAgfSlcbn1cblxuZnVuY3Rpb24gc3luYyAocGF0aCwgb3B0aW9ucykge1xuICAvLyBteSBraW5nZG9tIGZvciBhIGZpbHRlcmVkIGNhdGNoXG4gIHRyeSB7XG4gICAgcmV0dXJuIGNvcmUuc3luYyhwYXRoLCBvcHRpb25zIHx8IHt9KVxuICB9IGNhdGNoIChlcikge1xuICAgIGlmIChvcHRpb25zICYmIG9wdGlvbnMuaWdub3JlRXJyb3JzIHx8IGVyLmNvZGUgPT09ICdFQUNDRVMnKSB7XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgZXJcbiAgICB9XG4gIH1cbn1cbiIsIm1vZHVsZS5leHBvcnRzID0gaXNleGVcbmlzZXhlLnN5bmMgPSBzeW5jXG5cbnZhciBmcyA9IHJlcXVpcmUoJ2ZzJylcblxuZnVuY3Rpb24gaXNleGUgKHBhdGgsIG9wdGlvbnMsIGNiKSB7XG4gIGZzLnN0YXQocGF0aCwgZnVuY3Rpb24gKGVyLCBzdGF0KSB7XG4gICAgY2IoZXIsIGVyID8gZmFsc2UgOiBjaGVja1N0YXQoc3RhdCwgb3B0aW9ucykpXG4gIH0pXG59XG5cbmZ1bmN0aW9uIHN5bmMgKHBhdGgsIG9wdGlvbnMpIHtcbiAgcmV0dXJuIGNoZWNrU3RhdChmcy5zdGF0U3luYyhwYXRoKSwgb3B0aW9ucylcbn1cblxuZnVuY3Rpb24gY2hlY2tTdGF0IChzdGF0LCBvcHRpb25zKSB7XG4gIHJldHVybiBzdGF0LmlzRmlsZSgpICYmIGNoZWNrTW9kZShzdGF0LCBvcHRpb25zKVxufVxuXG5mdW5jdGlvbiBjaGVja01vZGUgKHN0YXQsIG9wdGlvbnMpIHtcbiAgdmFyIG1vZCA9IHN0YXQubW9kZVxuICB2YXIgdWlkID0gc3RhdC51aWRcbiAgdmFyIGdpZCA9IHN0YXQuZ2lkXG5cbiAgdmFyIG15VWlkID0gb3B0aW9ucy51aWQgIT09IHVuZGVmaW5lZCA/XG4gICAgb3B0aW9ucy51aWQgOiBwcm9jZXNzLmdldHVpZCAmJiBwcm9jZXNzLmdldHVpZCgpXG4gIHZhciBteUdpZCA9IG9wdGlvbnMuZ2lkICE9PSB1bmRlZmluZWQgP1xuICAgIG9wdGlvbnMuZ2lkIDogcHJvY2Vzcy5nZXRnaWQgJiYgcHJvY2Vzcy5nZXRnaWQoKVxuXG4gIHZhciB1ID0gcGFyc2VJbnQoJzEwMCcsIDgpXG4gIHZhciBnID0gcGFyc2VJbnQoJzAxMCcsIDgpXG4gIHZhciBvID0gcGFyc2VJbnQoJzAwMScsIDgpXG4gIHZhciB1ZyA9IHUgfCBnXG5cbiAgdmFyIHJldCA9IChtb2QgJiBvKSB8fFxuICAgIChtb2QgJiBnKSAmJiBnaWQgPT09IG15R2lkIHx8XG4gICAgKG1vZCAmIHUpICYmIHVpZCA9PT0gbXlVaWQgfHxcbiAgICAobW9kICYgdWcpICYmIG15VWlkID09PSAwXG5cbiAgcmV0dXJuIHJldFxufVxuIiwibW9kdWxlLmV4cG9ydHMgPSBpc2V4ZVxuaXNleGUuc3luYyA9IHN5bmNcblxudmFyIGZzID0gcmVxdWlyZSgnZnMnKVxuXG5mdW5jdGlvbiBjaGVja1BhdGhFeHQgKHBhdGgsIG9wdGlvbnMpIHtcbiAgdmFyIHBhdGhleHQgPSBvcHRpb25zLnBhdGhFeHQgIT09IHVuZGVmaW5lZCA/XG4gICAgb3B0aW9ucy5wYXRoRXh0IDogcHJvY2Vzcy5lbnYuUEFUSEVYVFxuXG4gIGlmICghcGF0aGV4dCkge1xuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICBwYXRoZXh0ID0gcGF0aGV4dC5zcGxpdCgnOycpXG4gIGlmIChwYXRoZXh0LmluZGV4T2YoJycpICE9PSAtMSkge1xuICAgIHJldHVybiB0cnVlXG4gIH1cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYXRoZXh0Lmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHAgPSBwYXRoZXh0W2ldLnRvTG93ZXJDYXNlKClcbiAgICBpZiAocCAmJiBwYXRoLnN1YnN0cigtcC5sZW5ndGgpLnRvTG93ZXJDYXNlKCkgPT09IHApIHtcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuICB9XG4gIHJldHVybiBmYWxzZVxufVxuXG5mdW5jdGlvbiBjaGVja1N0YXQgKHN0YXQsIHBhdGgsIG9wdGlvbnMpIHtcbiAgaWYgKCFzdGF0LmlzU3ltYm9saWNMaW5rKCkgJiYgIXN0YXQuaXNGaWxlKCkpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuICByZXR1cm4gY2hlY2tQYXRoRXh0KHBhdGgsIG9wdGlvbnMpXG59XG5cbmZ1bmN0aW9uIGlzZXhlIChwYXRoLCBvcHRpb25zLCBjYikge1xuICBmcy5zdGF0KHBhdGgsIGZ1bmN0aW9uIChlciwgc3RhdCkge1xuICAgIGNiKGVyLCBlciA/IGZhbHNlIDogY2hlY2tTdGF0KHN0YXQsIHBhdGgsIG9wdGlvbnMpKVxuICB9KVxufVxuXG5mdW5jdGlvbiBzeW5jIChwYXRoLCBvcHRpb25zKSB7XG4gIHJldHVybiBjaGVja1N0YXQoZnMuc3RhdFN5bmMocGF0aCksIHBhdGgsIG9wdGlvbnMpXG59XG4iLCJ2YXIgZW5jb2RlID0gcmVxdWlyZSgnLi9saWIvZW5jb2RlcicpLFxuICAgIGRlY29kZSA9IHJlcXVpcmUoJy4vbGliL2RlY29kZXInKTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGVuY29kZTogZW5jb2RlLFxuICBkZWNvZGU6IGRlY29kZVxufTtcbiIsIi8qIC0qLSBNb2RlOiBKYXZhOyB0YWItd2lkdGg6IDI7IGluZGVudC10YWJzLW1vZGU6IG5pbDsgYy1iYXNpYy1vZmZzZXQ6IDIgLSotIC9cbi8qIHZpbTogc2V0IHNoaWZ0d2lkdGg9MiB0YWJzdG9wPTIgYXV0b2luZGVudCBjaW5kZW50IGV4cGFuZHRhYjogKi9cbi8qXG4gICBDb3B5cmlnaHQgMjAxMSBub3RtYXN0ZXJ5ZXRcblxuICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cbiAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG4vLyAtIFRoZSBKUEVHIHNwZWNpZmljYXRpb24gY2FuIGJlIGZvdW5kIGluIHRoZSBJVFUgQ0NJVFQgUmVjb21tZW5kYXRpb24gVC44MVxuLy8gICAod3d3LnczLm9yZy9HcmFwaGljcy9KUEVHL2l0dS10ODEucGRmKVxuLy8gLSBUaGUgSkZJRiBzcGVjaWZpY2F0aW9uIGNhbiBiZSBmb3VuZCBpbiB0aGUgSlBFRyBGaWxlIEludGVyY2hhbmdlIEZvcm1hdFxuLy8gICAod3d3LnczLm9yZy9HcmFwaGljcy9KUEVHL2pmaWYzLnBkZilcbi8vIC0gVGhlIEFkb2JlIEFwcGxpY2F0aW9uLVNwZWNpZmljIEpQRUcgbWFya2VycyBpbiB0aGUgU3VwcG9ydGluZyB0aGUgRENUIEZpbHRlcnNcbi8vICAgaW4gUG9zdFNjcmlwdCBMZXZlbCAyLCBUZWNobmljYWwgTm90ZSAjNTExNlxuLy8gICAocGFydG5lcnMuYWRvYmUuY29tL3B1YmxpYy9kZXZlbG9wZXIvZW4vcHMvc2RrLzUxMTYuRENUX0ZpbHRlci5wZGYpXG5cbnZhciBKcGVnSW1hZ2UgPSAoZnVuY3Rpb24ganBlZ0ltYWdlKCkge1xuICBcInVzZSBzdHJpY3RcIjtcbiAgdmFyIGRjdFppZ1phZyA9IG5ldyBJbnQzMkFycmF5KFtcbiAgICAgMCxcbiAgICAgMSwgIDgsXG4gICAgMTYsICA5LCAgMixcbiAgICAgMywgMTAsIDE3LCAyNCxcbiAgICAzMiwgMjUsIDE4LCAxMSwgNCxcbiAgICAgNSwgMTIsIDE5LCAyNiwgMzMsIDQwLFxuICAgIDQ4LCA0MSwgMzQsIDI3LCAyMCwgMTMsICA2LFxuICAgICA3LCAxNCwgMjEsIDI4LCAzNSwgNDIsIDQ5LCA1NixcbiAgICA1NywgNTAsIDQzLCAzNiwgMjksIDIyLCAxNSxcbiAgICAyMywgMzAsIDM3LCA0NCwgNTEsIDU4LFxuICAgIDU5LCA1MiwgNDUsIDM4LCAzMSxcbiAgICAzOSwgNDYsIDUzLCA2MCxcbiAgICA2MSwgNTQsIDQ3LFxuICAgIDU1LCA2MixcbiAgICA2M1xuICBdKTtcblxuICB2YXIgZGN0Q29zMSAgPSAgNDAxNyAgIC8vIGNvcyhwaS8xNilcbiAgdmFyIGRjdFNpbjEgID0gICA3OTkgICAvLyBzaW4ocGkvMTYpXG4gIHZhciBkY3RDb3MzICA9ICAzNDA2ICAgLy8gY29zKDMqcGkvMTYpXG4gIHZhciBkY3RTaW4zICA9ICAyMjc2ICAgLy8gc2luKDMqcGkvMTYpXG4gIHZhciBkY3RDb3M2ICA9ICAxNTY3ICAgLy8gY29zKDYqcGkvMTYpXG4gIHZhciBkY3RTaW42ICA9ICAzNzg0ICAgLy8gc2luKDYqcGkvMTYpXG4gIHZhciBkY3RTcXJ0MiA9ICA1NzkzICAgLy8gc3FydCgyKVxuICB2YXIgZGN0U3FydDFkMiA9IDI4OTYgIC8vIHNxcnQoMikgLyAyXG5cbiAgZnVuY3Rpb24gY29uc3RydWN0b3IoKSB7XG4gIH1cblxuICBmdW5jdGlvbiBidWlsZEh1ZmZtYW5UYWJsZShjb2RlTGVuZ3RocywgdmFsdWVzKSB7XG4gICAgdmFyIGsgPSAwLCBjb2RlID0gW10sIGksIGosIGxlbmd0aCA9IDE2O1xuICAgIHdoaWxlIChsZW5ndGggPiAwICYmICFjb2RlTGVuZ3Roc1tsZW5ndGggLSAxXSlcbiAgICAgIGxlbmd0aC0tO1xuICAgIGNvZGUucHVzaCh7Y2hpbGRyZW46IFtdLCBpbmRleDogMH0pO1xuICAgIHZhciBwID0gY29kZVswXSwgcTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgIGZvciAoaiA9IDA7IGogPCBjb2RlTGVuZ3Roc1tpXTsgaisrKSB7XG4gICAgICAgIHAgPSBjb2RlLnBvcCgpO1xuICAgICAgICBwLmNoaWxkcmVuW3AuaW5kZXhdID0gdmFsdWVzW2tdO1xuICAgICAgICB3aGlsZSAocC5pbmRleCA+IDApIHtcbiAgICAgICAgICBwID0gY29kZS5wb3AoKTtcbiAgICAgICAgfVxuICAgICAgICBwLmluZGV4Kys7XG4gICAgICAgIGNvZGUucHVzaChwKTtcbiAgICAgICAgd2hpbGUgKGNvZGUubGVuZ3RoIDw9IGkpIHtcbiAgICAgICAgICBjb2RlLnB1c2gocSA9IHtjaGlsZHJlbjogW10sIGluZGV4OiAwfSk7XG4gICAgICAgICAgcC5jaGlsZHJlbltwLmluZGV4XSA9IHEuY2hpbGRyZW47XG4gICAgICAgICAgcCA9IHE7XG4gICAgICAgIH1cbiAgICAgICAgaysrO1xuICAgICAgfVxuICAgICAgaWYgKGkgKyAxIDwgbGVuZ3RoKSB7XG4gICAgICAgIC8vIHAgaGVyZSBwb2ludHMgdG8gbGFzdCBjb2RlXG4gICAgICAgIGNvZGUucHVzaChxID0ge2NoaWxkcmVuOiBbXSwgaW5kZXg6IDB9KTtcbiAgICAgICAgcC5jaGlsZHJlbltwLmluZGV4XSA9IHEuY2hpbGRyZW47XG4gICAgICAgIHAgPSBxO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY29kZVswXS5jaGlsZHJlbjtcbiAgfVxuXG4gIGZ1bmN0aW9uIGRlY29kZVNjYW4oZGF0YSwgb2Zmc2V0LFxuICAgICAgICAgICAgICAgICAgICAgIGZyYW1lLCBjb21wb25lbnRzLCByZXNldEludGVydmFsLFxuICAgICAgICAgICAgICAgICAgICAgIHNwZWN0cmFsU3RhcnQsIHNwZWN0cmFsRW5kLFxuICAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3NpdmVQcmV2LCBzdWNjZXNzaXZlKSB7XG4gICAgdmFyIHByZWNpc2lvbiA9IGZyYW1lLnByZWNpc2lvbjtcbiAgICB2YXIgc2FtcGxlc1BlckxpbmUgPSBmcmFtZS5zYW1wbGVzUGVyTGluZTtcbiAgICB2YXIgc2NhbkxpbmVzID0gZnJhbWUuc2NhbkxpbmVzO1xuICAgIHZhciBtY3VzUGVyTGluZSA9IGZyYW1lLm1jdXNQZXJMaW5lO1xuICAgIHZhciBwcm9ncmVzc2l2ZSA9IGZyYW1lLnByb2dyZXNzaXZlO1xuICAgIHZhciBtYXhIID0gZnJhbWUubWF4SCwgbWF4ViA9IGZyYW1lLm1heFY7XG5cbiAgICB2YXIgc3RhcnRPZmZzZXQgPSBvZmZzZXQsIGJpdHNEYXRhID0gMCwgYml0c0NvdW50ID0gMDtcbiAgICBmdW5jdGlvbiByZWFkQml0KCkge1xuICAgICAgaWYgKGJpdHNDb3VudCA+IDApIHtcbiAgICAgICAgYml0c0NvdW50LS07XG4gICAgICAgIHJldHVybiAoYml0c0RhdGEgPj4gYml0c0NvdW50KSAmIDE7XG4gICAgICB9XG4gICAgICBiaXRzRGF0YSA9IGRhdGFbb2Zmc2V0KytdO1xuICAgICAgaWYgKGJpdHNEYXRhID09IDB4RkYpIHtcbiAgICAgICAgdmFyIG5leHRCeXRlID0gZGF0YVtvZmZzZXQrK107XG4gICAgICAgIGlmIChuZXh0Qnl0ZSkge1xuICAgICAgICAgIHRocm93IFwidW5leHBlY3RlZCBtYXJrZXI6IFwiICsgKChiaXRzRGF0YSA8PCA4KSB8IG5leHRCeXRlKS50b1N0cmluZygxNik7XG4gICAgICAgIH1cbiAgICAgICAgLy8gdW5zdHVmZiAwXG4gICAgICB9XG4gICAgICBiaXRzQ291bnQgPSA3O1xuICAgICAgcmV0dXJuIGJpdHNEYXRhID4+PiA3O1xuICAgIH1cbiAgICBmdW5jdGlvbiBkZWNvZGVIdWZmbWFuKHRyZWUpIHtcbiAgICAgIHZhciBub2RlID0gdHJlZSwgYml0O1xuICAgICAgd2hpbGUgKChiaXQgPSByZWFkQml0KCkpICE9PSBudWxsKSB7XG4gICAgICAgIG5vZGUgPSBub2RlW2JpdF07XG4gICAgICAgIGlmICh0eXBlb2Ygbm9kZSA9PT0gJ251bWJlcicpXG4gICAgICAgICAgcmV0dXJuIG5vZGU7XG4gICAgICAgIGlmICh0eXBlb2Ygbm9kZSAhPT0gJ29iamVjdCcpXG4gICAgICAgICAgdGhyb3cgXCJpbnZhbGlkIGh1ZmZtYW4gc2VxdWVuY2VcIjtcbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBmdW5jdGlvbiByZWNlaXZlKGxlbmd0aCkge1xuICAgICAgdmFyIG4gPSAwO1xuICAgICAgd2hpbGUgKGxlbmd0aCA+IDApIHtcbiAgICAgICAgdmFyIGJpdCA9IHJlYWRCaXQoKTtcbiAgICAgICAgaWYgKGJpdCA9PT0gbnVsbCkgcmV0dXJuO1xuICAgICAgICBuID0gKG4gPDwgMSkgfCBiaXQ7XG4gICAgICAgIGxlbmd0aC0tO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG47XG4gICAgfVxuICAgIGZ1bmN0aW9uIHJlY2VpdmVBbmRFeHRlbmQobGVuZ3RoKSB7XG4gICAgICB2YXIgbiA9IHJlY2VpdmUobGVuZ3RoKTtcbiAgICAgIGlmIChuID49IDEgPDwgKGxlbmd0aCAtIDEpKVxuICAgICAgICByZXR1cm4gbjtcbiAgICAgIHJldHVybiBuICsgKC0xIDw8IGxlbmd0aCkgKyAxO1xuICAgIH1cbiAgICBmdW5jdGlvbiBkZWNvZGVCYXNlbGluZShjb21wb25lbnQsIHp6KSB7XG4gICAgICB2YXIgdCA9IGRlY29kZUh1ZmZtYW4oY29tcG9uZW50Lmh1ZmZtYW5UYWJsZURDKTtcbiAgICAgIHZhciBkaWZmID0gdCA9PT0gMCA/IDAgOiByZWNlaXZlQW5kRXh0ZW5kKHQpO1xuICAgICAgenpbMF09IChjb21wb25lbnQucHJlZCArPSBkaWZmKTtcbiAgICAgIHZhciBrID0gMTtcbiAgICAgIHdoaWxlIChrIDwgNjQpIHtcbiAgICAgICAgdmFyIHJzID0gZGVjb2RlSHVmZm1hbihjb21wb25lbnQuaHVmZm1hblRhYmxlQUMpO1xuICAgICAgICB2YXIgcyA9IHJzICYgMTUsIHIgPSBycyA+PiA0O1xuICAgICAgICBpZiAocyA9PT0gMCkge1xuICAgICAgICAgIGlmIChyIDwgMTUpXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBrICs9IDE2O1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGsgKz0gcjtcbiAgICAgICAgdmFyIHogPSBkY3RaaWdaYWdba107XG4gICAgICAgIHp6W3pdID0gcmVjZWl2ZUFuZEV4dGVuZChzKTtcbiAgICAgICAgaysrO1xuICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBkZWNvZGVEQ0ZpcnN0KGNvbXBvbmVudCwgenopIHtcbiAgICAgIHZhciB0ID0gZGVjb2RlSHVmZm1hbihjb21wb25lbnQuaHVmZm1hblRhYmxlREMpO1xuICAgICAgdmFyIGRpZmYgPSB0ID09PSAwID8gMCA6IChyZWNlaXZlQW5kRXh0ZW5kKHQpIDw8IHN1Y2Nlc3NpdmUpO1xuICAgICAgenpbMF0gPSAoY29tcG9uZW50LnByZWQgKz0gZGlmZik7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGRlY29kZURDU3VjY2Vzc2l2ZShjb21wb25lbnQsIHp6KSB7XG4gICAgICB6elswXSB8PSByZWFkQml0KCkgPDwgc3VjY2Vzc2l2ZTtcbiAgICB9XG4gICAgdmFyIGVvYnJ1biA9IDA7XG4gICAgZnVuY3Rpb24gZGVjb2RlQUNGaXJzdChjb21wb25lbnQsIHp6KSB7XG4gICAgICBpZiAoZW9icnVuID4gMCkge1xuICAgICAgICBlb2JydW4tLTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdmFyIGsgPSBzcGVjdHJhbFN0YXJ0LCBlID0gc3BlY3RyYWxFbmQ7XG4gICAgICB3aGlsZSAoayA8PSBlKSB7XG4gICAgICAgIHZhciBycyA9IGRlY29kZUh1ZmZtYW4oY29tcG9uZW50Lmh1ZmZtYW5UYWJsZUFDKTtcbiAgICAgICAgdmFyIHMgPSBycyAmIDE1LCByID0gcnMgPj4gNDtcbiAgICAgICAgaWYgKHMgPT09IDApIHtcbiAgICAgICAgICBpZiAociA8IDE1KSB7XG4gICAgICAgICAgICBlb2JydW4gPSByZWNlaXZlKHIpICsgKDEgPDwgcikgLSAxO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGsgKz0gMTY7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgayArPSByO1xuICAgICAgICB2YXIgeiA9IGRjdFppZ1phZ1trXTtcbiAgICAgICAgenpbel0gPSByZWNlaXZlQW5kRXh0ZW5kKHMpICogKDEgPDwgc3VjY2Vzc2l2ZSk7XG4gICAgICAgIGsrKztcbiAgICAgIH1cbiAgICB9XG4gICAgdmFyIHN1Y2Nlc3NpdmVBQ1N0YXRlID0gMCwgc3VjY2Vzc2l2ZUFDTmV4dFZhbHVlO1xuICAgIGZ1bmN0aW9uIGRlY29kZUFDU3VjY2Vzc2l2ZShjb21wb25lbnQsIHp6KSB7XG4gICAgICB2YXIgayA9IHNwZWN0cmFsU3RhcnQsIGUgPSBzcGVjdHJhbEVuZCwgciA9IDA7XG4gICAgICB3aGlsZSAoayA8PSBlKSB7XG4gICAgICAgIHZhciB6ID0gZGN0WmlnWmFnW2tdO1xuICAgICAgICBzd2l0Y2ggKHN1Y2Nlc3NpdmVBQ1N0YXRlKSB7XG4gICAgICAgIGNhc2UgMDogLy8gaW5pdGlhbCBzdGF0ZVxuICAgICAgICAgIHZhciBycyA9IGRlY29kZUh1ZmZtYW4oY29tcG9uZW50Lmh1ZmZtYW5UYWJsZUFDKTtcbiAgICAgICAgICB2YXIgcyA9IHJzICYgMTUsIHIgPSBycyA+PiA0O1xuICAgICAgICAgIGlmIChzID09PSAwKSB7XG4gICAgICAgICAgICBpZiAociA8IDE1KSB7XG4gICAgICAgICAgICAgIGVvYnJ1biA9IHJlY2VpdmUocikgKyAoMSA8PCByKTtcbiAgICAgICAgICAgICAgc3VjY2Vzc2l2ZUFDU3RhdGUgPSA0O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgciA9IDE2O1xuICAgICAgICAgICAgICBzdWNjZXNzaXZlQUNTdGF0ZSA9IDE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChzICE9PSAxKVxuICAgICAgICAgICAgICB0aHJvdyBcImludmFsaWQgQUNuIGVuY29kaW5nXCI7XG4gICAgICAgICAgICBzdWNjZXNzaXZlQUNOZXh0VmFsdWUgPSByZWNlaXZlQW5kRXh0ZW5kKHMpO1xuICAgICAgICAgICAgc3VjY2Vzc2l2ZUFDU3RhdGUgPSByID8gMiA6IDM7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICBjYXNlIDE6IC8vIHNraXBwaW5nIHIgemVybyBpdGVtc1xuICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgaWYgKHp6W3pdKVxuICAgICAgICAgICAgenpbel0gKz0gKHJlYWRCaXQoKSA8PCBzdWNjZXNzaXZlKTtcbiAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHItLTtcbiAgICAgICAgICAgIGlmIChyID09PSAwKVxuICAgICAgICAgICAgICBzdWNjZXNzaXZlQUNTdGF0ZSA9IHN1Y2Nlc3NpdmVBQ1N0YXRlID09IDIgPyAzIDogMDtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMzogLy8gc2V0IHZhbHVlIGZvciBhIHplcm8gaXRlbVxuICAgICAgICAgIGlmICh6elt6XSlcbiAgICAgICAgICAgIHp6W3pdICs9IChyZWFkQml0KCkgPDwgc3VjY2Vzc2l2ZSk7XG4gICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB6elt6XSA9IHN1Y2Nlc3NpdmVBQ05leHRWYWx1ZSA8PCBzdWNjZXNzaXZlO1xuICAgICAgICAgICAgc3VjY2Vzc2l2ZUFDU3RhdGUgPSAwO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA0OiAvLyBlb2JcbiAgICAgICAgICBpZiAoenpbel0pXG4gICAgICAgICAgICB6elt6XSArPSAocmVhZEJpdCgpIDw8IHN1Y2Nlc3NpdmUpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGsrKztcbiAgICAgIH1cbiAgICAgIGlmIChzdWNjZXNzaXZlQUNTdGF0ZSA9PT0gNCkge1xuICAgICAgICBlb2JydW4tLTtcbiAgICAgICAgaWYgKGVvYnJ1biA9PT0gMClcbiAgICAgICAgICBzdWNjZXNzaXZlQUNTdGF0ZSA9IDA7XG4gICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIGRlY29kZU1jdShjb21wb25lbnQsIGRlY29kZSwgbWN1LCByb3csIGNvbCkge1xuICAgICAgdmFyIG1jdVJvdyA9IChtY3UgLyBtY3VzUGVyTGluZSkgfCAwO1xuICAgICAgdmFyIG1jdUNvbCA9IG1jdSAlIG1jdXNQZXJMaW5lO1xuICAgICAgdmFyIGJsb2NrUm93ID0gbWN1Um93ICogY29tcG9uZW50LnYgKyByb3c7XG4gICAgICB2YXIgYmxvY2tDb2wgPSBtY3VDb2wgKiBjb21wb25lbnQuaCArIGNvbDtcbiAgICAgIGRlY29kZShjb21wb25lbnQsIGNvbXBvbmVudC5ibG9ja3NbYmxvY2tSb3ddW2Jsb2NrQ29sXSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGRlY29kZUJsb2NrKGNvbXBvbmVudCwgZGVjb2RlLCBtY3UpIHtcbiAgICAgIHZhciBibG9ja1JvdyA9IChtY3UgLyBjb21wb25lbnQuYmxvY2tzUGVyTGluZSkgfCAwO1xuICAgICAgdmFyIGJsb2NrQ29sID0gbWN1ICUgY29tcG9uZW50LmJsb2Nrc1BlckxpbmU7XG4gICAgICBkZWNvZGUoY29tcG9uZW50LCBjb21wb25lbnQuYmxvY2tzW2Jsb2NrUm93XVtibG9ja0NvbF0pO1xuICAgIH1cblxuICAgIHZhciBjb21wb25lbnRzTGVuZ3RoID0gY29tcG9uZW50cy5sZW5ndGg7XG4gICAgdmFyIGNvbXBvbmVudCwgaSwgaiwgaywgbjtcbiAgICB2YXIgZGVjb2RlRm47XG4gICAgaWYgKHByb2dyZXNzaXZlKSB7XG4gICAgICBpZiAoc3BlY3RyYWxTdGFydCA9PT0gMClcbiAgICAgICAgZGVjb2RlRm4gPSBzdWNjZXNzaXZlUHJldiA9PT0gMCA/IGRlY29kZURDRmlyc3QgOiBkZWNvZGVEQ1N1Y2Nlc3NpdmU7XG4gICAgICBlbHNlXG4gICAgICAgIGRlY29kZUZuID0gc3VjY2Vzc2l2ZVByZXYgPT09IDAgPyBkZWNvZGVBQ0ZpcnN0IDogZGVjb2RlQUNTdWNjZXNzaXZlO1xuICAgIH0gZWxzZSB7XG4gICAgICBkZWNvZGVGbiA9IGRlY29kZUJhc2VsaW5lO1xuICAgIH1cblxuICAgIHZhciBtY3UgPSAwLCBtYXJrZXI7XG4gICAgdmFyIG1jdUV4cGVjdGVkO1xuICAgIGlmIChjb21wb25lbnRzTGVuZ3RoID09IDEpIHtcbiAgICAgIG1jdUV4cGVjdGVkID0gY29tcG9uZW50c1swXS5ibG9ja3NQZXJMaW5lICogY29tcG9uZW50c1swXS5ibG9ja3NQZXJDb2x1bW47XG4gICAgfSBlbHNlIHtcbiAgICAgIG1jdUV4cGVjdGVkID0gbWN1c1BlckxpbmUgKiBmcmFtZS5tY3VzUGVyQ29sdW1uO1xuICAgIH1cbiAgICBpZiAoIXJlc2V0SW50ZXJ2YWwpIHJlc2V0SW50ZXJ2YWwgPSBtY3VFeHBlY3RlZDtcblxuICAgIHZhciBoLCB2O1xuICAgIHdoaWxlIChtY3UgPCBtY3VFeHBlY3RlZCkge1xuICAgICAgLy8gcmVzZXQgaW50ZXJ2YWwgc3R1ZmZcbiAgICAgIGZvciAoaSA9IDA7IGkgPCBjb21wb25lbnRzTGVuZ3RoOyBpKyspXG4gICAgICAgIGNvbXBvbmVudHNbaV0ucHJlZCA9IDA7XG4gICAgICBlb2JydW4gPSAwO1xuXG4gICAgICBpZiAoY29tcG9uZW50c0xlbmd0aCA9PSAxKSB7XG4gICAgICAgIGNvbXBvbmVudCA9IGNvbXBvbmVudHNbMF07XG4gICAgICAgIGZvciAobiA9IDA7IG4gPCByZXNldEludGVydmFsOyBuKyspIHtcbiAgICAgICAgICBkZWNvZGVCbG9jayhjb21wb25lbnQsIGRlY29kZUZuLCBtY3UpO1xuICAgICAgICAgIG1jdSsrO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmb3IgKG4gPSAwOyBuIDwgcmVzZXRJbnRlcnZhbDsgbisrKSB7XG4gICAgICAgICAgZm9yIChpID0gMDsgaSA8IGNvbXBvbmVudHNMZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29tcG9uZW50ID0gY29tcG9uZW50c1tpXTtcbiAgICAgICAgICAgIGggPSBjb21wb25lbnQuaDtcbiAgICAgICAgICAgIHYgPSBjb21wb25lbnQudjtcbiAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCB2OyBqKyspIHtcbiAgICAgICAgICAgICAgZm9yIChrID0gMDsgayA8IGg7IGsrKykge1xuICAgICAgICAgICAgICAgIGRlY29kZU1jdShjb21wb25lbnQsIGRlY29kZUZuLCBtY3UsIGosIGspO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIG1jdSsrO1xuXG4gICAgICAgICAgLy8gSWYgd2UndmUgcmVhY2hlZCBvdXIgZXhwZWN0ZWQgTUNVJ3MsIHN0b3AgZGVjb2RpbmdcbiAgICAgICAgICBpZiAobWN1ID09PSBtY3VFeHBlY3RlZCkgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gZmluZCBtYXJrZXJcbiAgICAgIGJpdHNDb3VudCA9IDA7XG4gICAgICBtYXJrZXIgPSAoZGF0YVtvZmZzZXRdIDw8IDgpIHwgZGF0YVtvZmZzZXQgKyAxXTtcbiAgICAgIGlmIChtYXJrZXIgPCAweEZGMDApIHtcbiAgICAgICAgdGhyb3cgXCJtYXJrZXIgd2FzIG5vdCBmb3VuZFwiO1xuICAgICAgfVxuXG4gICAgICBpZiAobWFya2VyID49IDB4RkZEMCAmJiBtYXJrZXIgPD0gMHhGRkQ3KSB7IC8vIFJTVHhcbiAgICAgICAgb2Zmc2V0ICs9IDI7XG4gICAgICB9XG4gICAgICBlbHNlXG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHJldHVybiBvZmZzZXQgLSBzdGFydE9mZnNldDtcbiAgfVxuXG4gIGZ1bmN0aW9uIGJ1aWxkQ29tcG9uZW50RGF0YShmcmFtZSwgY29tcG9uZW50KSB7XG4gICAgdmFyIGxpbmVzID0gW107XG4gICAgdmFyIGJsb2Nrc1BlckxpbmUgPSBjb21wb25lbnQuYmxvY2tzUGVyTGluZTtcbiAgICB2YXIgYmxvY2tzUGVyQ29sdW1uID0gY29tcG9uZW50LmJsb2Nrc1BlckNvbHVtbjtcbiAgICB2YXIgc2FtcGxlc1BlckxpbmUgPSBibG9ja3NQZXJMaW5lIDw8IDM7XG4gICAgdmFyIFIgPSBuZXcgSW50MzJBcnJheSg2NCksIHIgPSBuZXcgVWludDhBcnJheSg2NCk7XG5cbiAgICAvLyBBIHBvcnQgb2YgcG9wcGxlcidzIElEQ1QgbWV0aG9kIHdoaWNoIGluIHR1cm4gaXMgdGFrZW4gZnJvbTpcbiAgICAvLyAgIENocmlzdG9waCBMb2VmZmxlciwgQWRyaWFhbiBMaWd0ZW5iZXJnLCBHZW9yZ2UgUy4gTW9zY2h5dHosXG4gICAgLy8gICBcIlByYWN0aWNhbCBGYXN0IDEtRCBEQ1QgQWxnb3JpdGhtcyB3aXRoIDExIE11bHRpcGxpY2F0aW9uc1wiLFxuICAgIC8vICAgSUVFRSBJbnRsLiBDb25mLiBvbiBBY291c3RpY3MsIFNwZWVjaCAmIFNpZ25hbCBQcm9jZXNzaW5nLCAxOTg5LFxuICAgIC8vICAgOTg4LTk5MS5cbiAgICBmdW5jdGlvbiBxdWFudGl6ZUFuZEludmVyc2UoenosIGRhdGFPdXQsIGRhdGFJbikge1xuICAgICAgdmFyIHF0ID0gY29tcG9uZW50LnF1YW50aXphdGlvblRhYmxlO1xuICAgICAgdmFyIHYwLCB2MSwgdjIsIHYzLCB2NCwgdjUsIHY2LCB2NywgdDtcbiAgICAgIHZhciBwID0gZGF0YUluO1xuICAgICAgdmFyIGk7XG5cbiAgICAgIC8vIGRlcXVhbnRcbiAgICAgIGZvciAoaSA9IDA7IGkgPCA2NDsgaSsrKVxuICAgICAgICBwW2ldID0genpbaV0gKiBxdFtpXTtcblxuICAgICAgLy8gaW52ZXJzZSBEQ1Qgb24gcm93c1xuICAgICAgZm9yIChpID0gMDsgaSA8IDg7ICsraSkge1xuICAgICAgICB2YXIgcm93ID0gOCAqIGk7XG5cbiAgICAgICAgLy8gY2hlY2sgZm9yIGFsbC16ZXJvIEFDIGNvZWZmaWNpZW50c1xuICAgICAgICBpZiAocFsxICsgcm93XSA9PSAwICYmIHBbMiArIHJvd10gPT0gMCAmJiBwWzMgKyByb3ddID09IDAgJiZcbiAgICAgICAgICAgIHBbNCArIHJvd10gPT0gMCAmJiBwWzUgKyByb3ddID09IDAgJiYgcFs2ICsgcm93XSA9PSAwICYmXG4gICAgICAgICAgICBwWzcgKyByb3ddID09IDApIHtcbiAgICAgICAgICB0ID0gKGRjdFNxcnQyICogcFswICsgcm93XSArIDUxMikgPj4gMTA7XG4gICAgICAgICAgcFswICsgcm93XSA9IHQ7XG4gICAgICAgICAgcFsxICsgcm93XSA9IHQ7XG4gICAgICAgICAgcFsyICsgcm93XSA9IHQ7XG4gICAgICAgICAgcFszICsgcm93XSA9IHQ7XG4gICAgICAgICAgcFs0ICsgcm93XSA9IHQ7XG4gICAgICAgICAgcFs1ICsgcm93XSA9IHQ7XG4gICAgICAgICAgcFs2ICsgcm93XSA9IHQ7XG4gICAgICAgICAgcFs3ICsgcm93XSA9IHQ7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBzdGFnZSA0XG4gICAgICAgIHYwID0gKGRjdFNxcnQyICogcFswICsgcm93XSArIDEyOCkgPj4gODtcbiAgICAgICAgdjEgPSAoZGN0U3FydDIgKiBwWzQgKyByb3ddICsgMTI4KSA+PiA4O1xuICAgICAgICB2MiA9IHBbMiArIHJvd107XG4gICAgICAgIHYzID0gcFs2ICsgcm93XTtcbiAgICAgICAgdjQgPSAoZGN0U3FydDFkMiAqIChwWzEgKyByb3ddIC0gcFs3ICsgcm93XSkgKyAxMjgpID4+IDg7XG4gICAgICAgIHY3ID0gKGRjdFNxcnQxZDIgKiAocFsxICsgcm93XSArIHBbNyArIHJvd10pICsgMTI4KSA+PiA4O1xuICAgICAgICB2NSA9IHBbMyArIHJvd10gPDwgNDtcbiAgICAgICAgdjYgPSBwWzUgKyByb3ddIDw8IDQ7XG5cbiAgICAgICAgLy8gc3RhZ2UgM1xuICAgICAgICB0ID0gKHYwIC0gdjErIDEpID4+IDE7XG4gICAgICAgIHYwID0gKHYwICsgdjEgKyAxKSA+PiAxO1xuICAgICAgICB2MSA9IHQ7XG4gICAgICAgIHQgPSAodjIgKiBkY3RTaW42ICsgdjMgKiBkY3RDb3M2ICsgMTI4KSA+PiA4O1xuICAgICAgICB2MiA9ICh2MiAqIGRjdENvczYgLSB2MyAqIGRjdFNpbjYgKyAxMjgpID4+IDg7XG4gICAgICAgIHYzID0gdDtcbiAgICAgICAgdCA9ICh2NCAtIHY2ICsgMSkgPj4gMTtcbiAgICAgICAgdjQgPSAodjQgKyB2NiArIDEpID4+IDE7XG4gICAgICAgIHY2ID0gdDtcbiAgICAgICAgdCA9ICh2NyArIHY1ICsgMSkgPj4gMTtcbiAgICAgICAgdjUgPSAodjcgLSB2NSArIDEpID4+IDE7XG4gICAgICAgIHY3ID0gdDtcblxuICAgICAgICAvLyBzdGFnZSAyXG4gICAgICAgIHQgPSAodjAgLSB2MyArIDEpID4+IDE7XG4gICAgICAgIHYwID0gKHYwICsgdjMgKyAxKSA+PiAxO1xuICAgICAgICB2MyA9IHQ7XG4gICAgICAgIHQgPSAodjEgLSB2MiArIDEpID4+IDE7XG4gICAgICAgIHYxID0gKHYxICsgdjIgKyAxKSA+PiAxO1xuICAgICAgICB2MiA9IHQ7XG4gICAgICAgIHQgPSAodjQgKiBkY3RTaW4zICsgdjcgKiBkY3RDb3MzICsgMjA0OCkgPj4gMTI7XG4gICAgICAgIHY0ID0gKHY0ICogZGN0Q29zMyAtIHY3ICogZGN0U2luMyArIDIwNDgpID4+IDEyO1xuICAgICAgICB2NyA9IHQ7XG4gICAgICAgIHQgPSAodjUgKiBkY3RTaW4xICsgdjYgKiBkY3RDb3MxICsgMjA0OCkgPj4gMTI7XG4gICAgICAgIHY1ID0gKHY1ICogZGN0Q29zMSAtIHY2ICogZGN0U2luMSArIDIwNDgpID4+IDEyO1xuICAgICAgICB2NiA9IHQ7XG5cbiAgICAgICAgLy8gc3RhZ2UgMVxuICAgICAgICBwWzAgKyByb3ddID0gdjAgKyB2NztcbiAgICAgICAgcFs3ICsgcm93XSA9IHYwIC0gdjc7XG4gICAgICAgIHBbMSArIHJvd10gPSB2MSArIHY2O1xuICAgICAgICBwWzYgKyByb3ddID0gdjEgLSB2NjtcbiAgICAgICAgcFsyICsgcm93XSA9IHYyICsgdjU7XG4gICAgICAgIHBbNSArIHJvd10gPSB2MiAtIHY1O1xuICAgICAgICBwWzMgKyByb3ddID0gdjMgKyB2NDtcbiAgICAgICAgcFs0ICsgcm93XSA9IHYzIC0gdjQ7XG4gICAgICB9XG5cbiAgICAgIC8vIGludmVyc2UgRENUIG9uIGNvbHVtbnNcbiAgICAgIGZvciAoaSA9IDA7IGkgPCA4OyArK2kpIHtcbiAgICAgICAgdmFyIGNvbCA9IGk7XG5cbiAgICAgICAgLy8gY2hlY2sgZm9yIGFsbC16ZXJvIEFDIGNvZWZmaWNpZW50c1xuICAgICAgICBpZiAocFsxKjggKyBjb2xdID09IDAgJiYgcFsyKjggKyBjb2xdID09IDAgJiYgcFszKjggKyBjb2xdID09IDAgJiZcbiAgICAgICAgICAgIHBbNCo4ICsgY29sXSA9PSAwICYmIHBbNSo4ICsgY29sXSA9PSAwICYmIHBbNio4ICsgY29sXSA9PSAwICYmXG4gICAgICAgICAgICBwWzcqOCArIGNvbF0gPT0gMCkge1xuICAgICAgICAgIHQgPSAoZGN0U3FydDIgKiBkYXRhSW5baSswXSArIDgxOTIpID4+IDE0O1xuICAgICAgICAgIHBbMCo4ICsgY29sXSA9IHQ7XG4gICAgICAgICAgcFsxKjggKyBjb2xdID0gdDtcbiAgICAgICAgICBwWzIqOCArIGNvbF0gPSB0O1xuICAgICAgICAgIHBbMyo4ICsgY29sXSA9IHQ7XG4gICAgICAgICAgcFs0KjggKyBjb2xdID0gdDtcbiAgICAgICAgICBwWzUqOCArIGNvbF0gPSB0O1xuICAgICAgICAgIHBbNio4ICsgY29sXSA9IHQ7XG4gICAgICAgICAgcFs3KjggKyBjb2xdID0gdDtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHN0YWdlIDRcbiAgICAgICAgdjAgPSAoZGN0U3FydDIgKiBwWzAqOCArIGNvbF0gKyAyMDQ4KSA+PiAxMjtcbiAgICAgICAgdjEgPSAoZGN0U3FydDIgKiBwWzQqOCArIGNvbF0gKyAyMDQ4KSA+PiAxMjtcbiAgICAgICAgdjIgPSBwWzIqOCArIGNvbF07XG4gICAgICAgIHYzID0gcFs2KjggKyBjb2xdO1xuICAgICAgICB2NCA9IChkY3RTcXJ0MWQyICogKHBbMSo4ICsgY29sXSAtIHBbNyo4ICsgY29sXSkgKyAyMDQ4KSA+PiAxMjtcbiAgICAgICAgdjcgPSAoZGN0U3FydDFkMiAqIChwWzEqOCArIGNvbF0gKyBwWzcqOCArIGNvbF0pICsgMjA0OCkgPj4gMTI7XG4gICAgICAgIHY1ID0gcFszKjggKyBjb2xdO1xuICAgICAgICB2NiA9IHBbNSo4ICsgY29sXTtcblxuICAgICAgICAvLyBzdGFnZSAzXG4gICAgICAgIHQgPSAodjAgLSB2MSArIDEpID4+IDE7XG4gICAgICAgIHYwID0gKHYwICsgdjEgKyAxKSA+PiAxO1xuICAgICAgICB2MSA9IHQ7XG4gICAgICAgIHQgPSAodjIgKiBkY3RTaW42ICsgdjMgKiBkY3RDb3M2ICsgMjA0OCkgPj4gMTI7XG4gICAgICAgIHYyID0gKHYyICogZGN0Q29zNiAtIHYzICogZGN0U2luNiArIDIwNDgpID4+IDEyO1xuICAgICAgICB2MyA9IHQ7XG4gICAgICAgIHQgPSAodjQgLSB2NiArIDEpID4+IDE7XG4gICAgICAgIHY0ID0gKHY0ICsgdjYgKyAxKSA+PiAxO1xuICAgICAgICB2NiA9IHQ7XG4gICAgICAgIHQgPSAodjcgKyB2NSArIDEpID4+IDE7XG4gICAgICAgIHY1ID0gKHY3IC0gdjUgKyAxKSA+PiAxO1xuICAgICAgICB2NyA9IHQ7XG5cbiAgICAgICAgLy8gc3RhZ2UgMlxuICAgICAgICB0ID0gKHYwIC0gdjMgKyAxKSA+PiAxO1xuICAgICAgICB2MCA9ICh2MCArIHYzICsgMSkgPj4gMTtcbiAgICAgICAgdjMgPSB0O1xuICAgICAgICB0ID0gKHYxIC0gdjIgKyAxKSA+PiAxO1xuICAgICAgICB2MSA9ICh2MSArIHYyICsgMSkgPj4gMTtcbiAgICAgICAgdjIgPSB0O1xuICAgICAgICB0ID0gKHY0ICogZGN0U2luMyArIHY3ICogZGN0Q29zMyArIDIwNDgpID4+IDEyO1xuICAgICAgICB2NCA9ICh2NCAqIGRjdENvczMgLSB2NyAqIGRjdFNpbjMgKyAyMDQ4KSA+PiAxMjtcbiAgICAgICAgdjcgPSB0O1xuICAgICAgICB0ID0gKHY1ICogZGN0U2luMSArIHY2ICogZGN0Q29zMSArIDIwNDgpID4+IDEyO1xuICAgICAgICB2NSA9ICh2NSAqIGRjdENvczEgLSB2NiAqIGRjdFNpbjEgKyAyMDQ4KSA+PiAxMjtcbiAgICAgICAgdjYgPSB0O1xuXG4gICAgICAgIC8vIHN0YWdlIDFcbiAgICAgICAgcFswKjggKyBjb2xdID0gdjAgKyB2NztcbiAgICAgICAgcFs3KjggKyBjb2xdID0gdjAgLSB2NztcbiAgICAgICAgcFsxKjggKyBjb2xdID0gdjEgKyB2NjtcbiAgICAgICAgcFs2KjggKyBjb2xdID0gdjEgLSB2NjtcbiAgICAgICAgcFsyKjggKyBjb2xdID0gdjIgKyB2NTtcbiAgICAgICAgcFs1KjggKyBjb2xdID0gdjIgLSB2NTtcbiAgICAgICAgcFszKjggKyBjb2xdID0gdjMgKyB2NDtcbiAgICAgICAgcFs0KjggKyBjb2xdID0gdjMgLSB2NDtcbiAgICAgIH1cblxuICAgICAgLy8gY29udmVydCB0byA4LWJpdCBpbnRlZ2Vyc1xuICAgICAgZm9yIChpID0gMDsgaSA8IDY0OyArK2kpIHtcbiAgICAgICAgdmFyIHNhbXBsZSA9IDEyOCArICgocFtpXSArIDgpID4+IDQpO1xuICAgICAgICBkYXRhT3V0W2ldID0gc2FtcGxlIDwgMCA/IDAgOiBzYW1wbGUgPiAweEZGID8gMHhGRiA6IHNhbXBsZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgaSwgajtcbiAgICBmb3IgKHZhciBibG9ja1JvdyA9IDA7IGJsb2NrUm93IDwgYmxvY2tzUGVyQ29sdW1uOyBibG9ja1JvdysrKSB7XG4gICAgICB2YXIgc2NhbkxpbmUgPSBibG9ja1JvdyA8PCAzO1xuICAgICAgZm9yIChpID0gMDsgaSA8IDg7IGkrKylcbiAgICAgICAgbGluZXMucHVzaChuZXcgVWludDhBcnJheShzYW1wbGVzUGVyTGluZSkpO1xuICAgICAgZm9yICh2YXIgYmxvY2tDb2wgPSAwOyBibG9ja0NvbCA8IGJsb2Nrc1BlckxpbmU7IGJsb2NrQ29sKyspIHtcbiAgICAgICAgcXVhbnRpemVBbmRJbnZlcnNlKGNvbXBvbmVudC5ibG9ja3NbYmxvY2tSb3ddW2Jsb2NrQ29sXSwgciwgUik7XG5cbiAgICAgICAgdmFyIG9mZnNldCA9IDAsIHNhbXBsZSA9IGJsb2NrQ29sIDw8IDM7XG4gICAgICAgIGZvciAoaiA9IDA7IGogPCA4OyBqKyspIHtcbiAgICAgICAgICB2YXIgbGluZSA9IGxpbmVzW3NjYW5MaW5lICsgal07XG4gICAgICAgICAgZm9yIChpID0gMDsgaSA8IDg7IGkrKylcbiAgICAgICAgICAgIGxpbmVbc2FtcGxlICsgaV0gPSByW29mZnNldCsrXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbGluZXM7XG4gIH1cblxuICBmdW5jdGlvbiBjbGFtcFRvOGJpdChhKSB7XG4gICAgcmV0dXJuIGEgPCAwID8gMCA6IGEgPiAyNTUgPyAyNTUgOiBhO1xuICB9XG5cbiAgY29uc3RydWN0b3IucHJvdG90eXBlID0ge1xuICAgIGxvYWQ6IGZ1bmN0aW9uIGxvYWQocGF0aCkge1xuICAgICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xuICAgICAgeGhyLm9wZW4oXCJHRVRcIiwgcGF0aCwgdHJ1ZSk7XG4gICAgICB4aHIucmVzcG9uc2VUeXBlID0gXCJhcnJheWJ1ZmZlclwiO1xuICAgICAgeGhyLm9ubG9hZCA9IChmdW5jdGlvbigpIHtcbiAgICAgICAgLy8gVE9ETyBjYXRjaCBwYXJzZSBlcnJvclxuICAgICAgICB2YXIgZGF0YSA9IG5ldyBVaW50OEFycmF5KHhoci5yZXNwb25zZSB8fCB4aHIubW96UmVzcG9uc2VBcnJheUJ1ZmZlcik7XG4gICAgICAgIHRoaXMucGFyc2UoZGF0YSk7XG4gICAgICAgIGlmICh0aGlzLm9ubG9hZClcbiAgICAgICAgICB0aGlzLm9ubG9hZCgpO1xuICAgICAgfSkuYmluZCh0aGlzKTtcbiAgICAgIHhoci5zZW5kKG51bGwpO1xuICAgIH0sXG4gICAgcGFyc2U6IGZ1bmN0aW9uIHBhcnNlKGRhdGEpIHtcbiAgICAgIHZhciBvZmZzZXQgPSAwLCBsZW5ndGggPSBkYXRhLmxlbmd0aDtcbiAgICAgIGZ1bmN0aW9uIHJlYWRVaW50MTYoKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IChkYXRhW29mZnNldF0gPDwgOCkgfCBkYXRhW29mZnNldCArIDFdO1xuICAgICAgICBvZmZzZXQgKz0gMjtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfVxuICAgICAgZnVuY3Rpb24gcmVhZERhdGFCbG9jaygpIHtcbiAgICAgICAgdmFyIGxlbmd0aCA9IHJlYWRVaW50MTYoKTtcbiAgICAgICAgdmFyIGFycmF5ID0gZGF0YS5zdWJhcnJheShvZmZzZXQsIG9mZnNldCArIGxlbmd0aCAtIDIpO1xuICAgICAgICBvZmZzZXQgKz0gYXJyYXkubGVuZ3RoO1xuICAgICAgICByZXR1cm4gYXJyYXk7XG4gICAgICB9XG4gICAgICBmdW5jdGlvbiBwcmVwYXJlQ29tcG9uZW50cyhmcmFtZSkge1xuICAgICAgICB2YXIgbWF4SCA9IDAsIG1heFYgPSAwO1xuICAgICAgICB2YXIgY29tcG9uZW50LCBjb21wb25lbnRJZDtcbiAgICAgICAgZm9yIChjb21wb25lbnRJZCBpbiBmcmFtZS5jb21wb25lbnRzKSB7XG4gICAgICAgICAgaWYgKGZyYW1lLmNvbXBvbmVudHMuaGFzT3duUHJvcGVydHkoY29tcG9uZW50SWQpKSB7XG4gICAgICAgICAgICBjb21wb25lbnQgPSBmcmFtZS5jb21wb25lbnRzW2NvbXBvbmVudElkXTtcbiAgICAgICAgICAgIGlmIChtYXhIIDwgY29tcG9uZW50LmgpIG1heEggPSBjb21wb25lbnQuaDtcbiAgICAgICAgICAgIGlmIChtYXhWIDwgY29tcG9uZW50LnYpIG1heFYgPSBjb21wb25lbnQudjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdmFyIG1jdXNQZXJMaW5lID0gTWF0aC5jZWlsKGZyYW1lLnNhbXBsZXNQZXJMaW5lIC8gOCAvIG1heEgpO1xuICAgICAgICB2YXIgbWN1c1BlckNvbHVtbiA9IE1hdGguY2VpbChmcmFtZS5zY2FuTGluZXMgLyA4IC8gbWF4Vik7XG4gICAgICAgIGZvciAoY29tcG9uZW50SWQgaW4gZnJhbWUuY29tcG9uZW50cykge1xuICAgICAgICAgIGlmIChmcmFtZS5jb21wb25lbnRzLmhhc093blByb3BlcnR5KGNvbXBvbmVudElkKSkge1xuICAgICAgICAgICAgY29tcG9uZW50ID0gZnJhbWUuY29tcG9uZW50c1tjb21wb25lbnRJZF07XG4gICAgICAgICAgICB2YXIgYmxvY2tzUGVyTGluZSA9IE1hdGguY2VpbChNYXRoLmNlaWwoZnJhbWUuc2FtcGxlc1BlckxpbmUgLyA4KSAqIGNvbXBvbmVudC5oIC8gbWF4SCk7XG4gICAgICAgICAgICB2YXIgYmxvY2tzUGVyQ29sdW1uID0gTWF0aC5jZWlsKE1hdGguY2VpbChmcmFtZS5zY2FuTGluZXMgIC8gOCkgKiBjb21wb25lbnQudiAvIG1heFYpO1xuICAgICAgICAgICAgdmFyIGJsb2Nrc1BlckxpbmVGb3JNY3UgPSBtY3VzUGVyTGluZSAqIGNvbXBvbmVudC5oO1xuICAgICAgICAgICAgdmFyIGJsb2Nrc1BlckNvbHVtbkZvck1jdSA9IG1jdXNQZXJDb2x1bW4gKiBjb21wb25lbnQudjtcbiAgICAgICAgICAgIHZhciBibG9ja3MgPSBbXTtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYmxvY2tzUGVyQ29sdW1uRm9yTWN1OyBpKyspIHtcbiAgICAgICAgICAgICAgdmFyIHJvdyA9IFtdO1xuICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGJsb2Nrc1BlckxpbmVGb3JNY3U7IGorKylcbiAgICAgICAgICAgICAgICByb3cucHVzaChuZXcgSW50MzJBcnJheSg2NCkpO1xuICAgICAgICAgICAgICBibG9ja3MucHVzaChyb3cpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29tcG9uZW50LmJsb2Nrc1BlckxpbmUgPSBibG9ja3NQZXJMaW5lO1xuICAgICAgICAgICAgY29tcG9uZW50LmJsb2Nrc1BlckNvbHVtbiA9IGJsb2Nrc1BlckNvbHVtbjtcbiAgICAgICAgICAgIGNvbXBvbmVudC5ibG9ja3MgPSBibG9ja3M7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGZyYW1lLm1heEggPSBtYXhIO1xuICAgICAgICBmcmFtZS5tYXhWID0gbWF4VjtcbiAgICAgICAgZnJhbWUubWN1c1BlckxpbmUgPSBtY3VzUGVyTGluZTtcbiAgICAgICAgZnJhbWUubWN1c1BlckNvbHVtbiA9IG1jdXNQZXJDb2x1bW47XG4gICAgICB9XG4gICAgICB2YXIgamZpZiA9IG51bGw7XG4gICAgICB2YXIgYWRvYmUgPSBudWxsO1xuICAgICAgdmFyIHBpeGVscyA9IG51bGw7XG4gICAgICB2YXIgZnJhbWUsIHJlc2V0SW50ZXJ2YWw7XG4gICAgICB2YXIgcXVhbnRpemF0aW9uVGFibGVzID0gW10sIGZyYW1lcyA9IFtdO1xuICAgICAgdmFyIGh1ZmZtYW5UYWJsZXNBQyA9IFtdLCBodWZmbWFuVGFibGVzREMgPSBbXTtcbiAgICAgIHZhciBmaWxlTWFya2VyID0gcmVhZFVpbnQxNigpO1xuICAgICAgaWYgKGZpbGVNYXJrZXIgIT0gMHhGRkQ4KSB7IC8vIFNPSSAoU3RhcnQgb2YgSW1hZ2UpXG4gICAgICAgIHRocm93IFwiU09JIG5vdCBmb3VuZFwiO1xuICAgICAgfVxuXG4gICAgICBmaWxlTWFya2VyID0gcmVhZFVpbnQxNigpO1xuICAgICAgd2hpbGUgKGZpbGVNYXJrZXIgIT0gMHhGRkQ5KSB7IC8vIEVPSSAoRW5kIG9mIGltYWdlKVxuICAgICAgICB2YXIgaSwgaiwgbDtcbiAgICAgICAgc3dpdGNoKGZpbGVNYXJrZXIpIHtcbiAgICAgICAgICBjYXNlIDB4RkYwMDogYnJlYWs7XG4gICAgICAgICAgY2FzZSAweEZGRTA6IC8vIEFQUDAgKEFwcGxpY2F0aW9uIFNwZWNpZmljKVxuICAgICAgICAgIGNhc2UgMHhGRkUxOiAvLyBBUFAxXG4gICAgICAgICAgY2FzZSAweEZGRTI6IC8vIEFQUDJcbiAgICAgICAgICBjYXNlIDB4RkZFMzogLy8gQVBQM1xuICAgICAgICAgIGNhc2UgMHhGRkU0OiAvLyBBUFA0XG4gICAgICAgICAgY2FzZSAweEZGRTU6IC8vIEFQUDVcbiAgICAgICAgICBjYXNlIDB4RkZFNjogLy8gQVBQNlxuICAgICAgICAgIGNhc2UgMHhGRkU3OiAvLyBBUFA3XG4gICAgICAgICAgY2FzZSAweEZGRTg6IC8vIEFQUDhcbiAgICAgICAgICBjYXNlIDB4RkZFOTogLy8gQVBQOVxuICAgICAgICAgIGNhc2UgMHhGRkVBOiAvLyBBUFAxMFxuICAgICAgICAgIGNhc2UgMHhGRkVCOiAvLyBBUFAxMVxuICAgICAgICAgIGNhc2UgMHhGRkVDOiAvLyBBUFAxMlxuICAgICAgICAgIGNhc2UgMHhGRkVEOiAvLyBBUFAxM1xuICAgICAgICAgIGNhc2UgMHhGRkVFOiAvLyBBUFAxNFxuICAgICAgICAgIGNhc2UgMHhGRkVGOiAvLyBBUFAxNVxuICAgICAgICAgIGNhc2UgMHhGRkZFOiAvLyBDT00gKENvbW1lbnQpXG4gICAgICAgICAgICB2YXIgYXBwRGF0YSA9IHJlYWREYXRhQmxvY2soKTtcblxuICAgICAgICAgICAgaWYgKGZpbGVNYXJrZXIgPT09IDB4RkZFMCkge1xuICAgICAgICAgICAgICBpZiAoYXBwRGF0YVswXSA9PT0gMHg0QSAmJiBhcHBEYXRhWzFdID09PSAweDQ2ICYmIGFwcERhdGFbMl0gPT09IDB4NDkgJiZcbiAgICAgICAgICAgICAgICBhcHBEYXRhWzNdID09PSAweDQ2ICYmIGFwcERhdGFbNF0gPT09IDApIHsgLy8gJ0pGSUZcXHgwMCdcbiAgICAgICAgICAgICAgICBqZmlmID0ge1xuICAgICAgICAgICAgICAgICAgdmVyc2lvbjogeyBtYWpvcjogYXBwRGF0YVs1XSwgbWlub3I6IGFwcERhdGFbNl0gfSxcbiAgICAgICAgICAgICAgICAgIGRlbnNpdHlVbml0czogYXBwRGF0YVs3XSxcbiAgICAgICAgICAgICAgICAgIHhEZW5zaXR5OiAoYXBwRGF0YVs4XSA8PCA4KSB8IGFwcERhdGFbOV0sXG4gICAgICAgICAgICAgICAgICB5RGVuc2l0eTogKGFwcERhdGFbMTBdIDw8IDgpIHwgYXBwRGF0YVsxMV0sXG4gICAgICAgICAgICAgICAgICB0aHVtYldpZHRoOiBhcHBEYXRhWzEyXSxcbiAgICAgICAgICAgICAgICAgIHRodW1iSGVpZ2h0OiBhcHBEYXRhWzEzXSxcbiAgICAgICAgICAgICAgICAgIHRodW1iRGF0YTogYXBwRGF0YS5zdWJhcnJheSgxNCwgMTQgKyAzICogYXBwRGF0YVsxMl0gKiBhcHBEYXRhWzEzXSlcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBUT0RPIEFQUDEgLSBFeGlmXG4gICAgICAgICAgICBpZiAoZmlsZU1hcmtlciA9PT0gMHhGRkVFKSB7XG4gICAgICAgICAgICAgIGlmIChhcHBEYXRhWzBdID09PSAweDQxICYmIGFwcERhdGFbMV0gPT09IDB4NjQgJiYgYXBwRGF0YVsyXSA9PT0gMHg2RiAmJlxuICAgICAgICAgICAgICAgIGFwcERhdGFbM10gPT09IDB4NjIgJiYgYXBwRGF0YVs0XSA9PT0gMHg2NSAmJiBhcHBEYXRhWzVdID09PSAwKSB7IC8vICdBZG9iZVxceDAwJ1xuICAgICAgICAgICAgICAgIGFkb2JlID0ge1xuICAgICAgICAgICAgICAgICAgdmVyc2lvbjogYXBwRGF0YVs2XSxcbiAgICAgICAgICAgICAgICAgIGZsYWdzMDogKGFwcERhdGFbN10gPDwgOCkgfCBhcHBEYXRhWzhdLFxuICAgICAgICAgICAgICAgICAgZmxhZ3MxOiAoYXBwRGF0YVs5XSA8PCA4KSB8IGFwcERhdGFbMTBdLFxuICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtQ29kZTogYXBwRGF0YVsxMV1cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgIGNhc2UgMHhGRkRCOiAvLyBEUVQgKERlZmluZSBRdWFudGl6YXRpb24gVGFibGVzKVxuICAgICAgICAgICAgdmFyIHF1YW50aXphdGlvblRhYmxlc0xlbmd0aCA9IHJlYWRVaW50MTYoKTtcbiAgICAgICAgICAgIHZhciBxdWFudGl6YXRpb25UYWJsZXNFbmQgPSBxdWFudGl6YXRpb25UYWJsZXNMZW5ndGggKyBvZmZzZXQgLSAyO1xuICAgICAgICAgICAgd2hpbGUgKG9mZnNldCA8IHF1YW50aXphdGlvblRhYmxlc0VuZCkge1xuICAgICAgICAgICAgICB2YXIgcXVhbnRpemF0aW9uVGFibGVTcGVjID0gZGF0YVtvZmZzZXQrK107XG4gICAgICAgICAgICAgIHZhciB0YWJsZURhdGEgPSBuZXcgSW50MzJBcnJheSg2NCk7XG4gICAgICAgICAgICAgIGlmICgocXVhbnRpemF0aW9uVGFibGVTcGVjID4+IDQpID09PSAwKSB7IC8vIDggYml0IHZhbHVlc1xuICAgICAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCA2NDsgaisrKSB7XG4gICAgICAgICAgICAgICAgICB2YXIgeiA9IGRjdFppZ1phZ1tqXTtcbiAgICAgICAgICAgICAgICAgIHRhYmxlRGF0YVt6XSA9IGRhdGFbb2Zmc2V0KytdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSBlbHNlIGlmICgocXVhbnRpemF0aW9uVGFibGVTcGVjID4+IDQpID09PSAxKSB7IC8vMTYgYml0XG4gICAgICAgICAgICAgICAgZm9yIChqID0gMDsgaiA8IDY0OyBqKyspIHtcbiAgICAgICAgICAgICAgICAgIHZhciB6ID0gZGN0WmlnWmFnW2pdO1xuICAgICAgICAgICAgICAgICAgdGFibGVEYXRhW3pdID0gcmVhZFVpbnQxNigpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSBlbHNlXG4gICAgICAgICAgICAgICAgdGhyb3cgXCJEUVQ6IGludmFsaWQgdGFibGUgc3BlY1wiO1xuICAgICAgICAgICAgICBxdWFudGl6YXRpb25UYWJsZXNbcXVhbnRpemF0aW9uVGFibGVTcGVjICYgMTVdID0gdGFibGVEYXRhO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICBjYXNlIDB4RkZDMDogLy8gU09GMCAoU3RhcnQgb2YgRnJhbWUsIEJhc2VsaW5lIERDVClcbiAgICAgICAgICBjYXNlIDB4RkZDMTogLy8gU09GMSAoU3RhcnQgb2YgRnJhbWUsIEV4dGVuZGVkIERDVClcbiAgICAgICAgICBjYXNlIDB4RkZDMjogLy8gU09GMiAoU3RhcnQgb2YgRnJhbWUsIFByb2dyZXNzaXZlIERDVClcbiAgICAgICAgICAgIHJlYWRVaW50MTYoKTsgLy8gc2tpcCBkYXRhIGxlbmd0aFxuICAgICAgICAgICAgZnJhbWUgPSB7fTtcbiAgICAgICAgICAgIGZyYW1lLmV4dGVuZGVkID0gKGZpbGVNYXJrZXIgPT09IDB4RkZDMSk7XG4gICAgICAgICAgICBmcmFtZS5wcm9ncmVzc2l2ZSA9IChmaWxlTWFya2VyID09PSAweEZGQzIpO1xuICAgICAgICAgICAgZnJhbWUucHJlY2lzaW9uID0gZGF0YVtvZmZzZXQrK107XG4gICAgICAgICAgICBmcmFtZS5zY2FuTGluZXMgPSByZWFkVWludDE2KCk7XG4gICAgICAgICAgICBmcmFtZS5zYW1wbGVzUGVyTGluZSA9IHJlYWRVaW50MTYoKTtcbiAgICAgICAgICAgIGZyYW1lLmNvbXBvbmVudHMgPSB7fTtcbiAgICAgICAgICAgIGZyYW1lLmNvbXBvbmVudHNPcmRlciA9IFtdO1xuICAgICAgICAgICAgdmFyIGNvbXBvbmVudHNDb3VudCA9IGRhdGFbb2Zmc2V0KytdLCBjb21wb25lbnRJZDtcbiAgICAgICAgICAgIHZhciBtYXhIID0gMCwgbWF4ViA9IDA7XG4gICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgY29tcG9uZW50c0NvdW50OyBpKyspIHtcbiAgICAgICAgICAgICAgY29tcG9uZW50SWQgPSBkYXRhW29mZnNldF07XG4gICAgICAgICAgICAgIHZhciBoID0gZGF0YVtvZmZzZXQgKyAxXSA+PiA0O1xuICAgICAgICAgICAgICB2YXIgdiA9IGRhdGFbb2Zmc2V0ICsgMV0gJiAxNTtcbiAgICAgICAgICAgICAgdmFyIHFJZCA9IGRhdGFbb2Zmc2V0ICsgMl07XG4gICAgICAgICAgICAgIGZyYW1lLmNvbXBvbmVudHNPcmRlci5wdXNoKGNvbXBvbmVudElkKTtcbiAgICAgICAgICAgICAgZnJhbWUuY29tcG9uZW50c1tjb21wb25lbnRJZF0gPSB7XG4gICAgICAgICAgICAgICAgaDogaCxcbiAgICAgICAgICAgICAgICB2OiB2LFxuICAgICAgICAgICAgICAgIHF1YW50aXphdGlvbklkeDogcUlkXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIG9mZnNldCArPSAzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcHJlcGFyZUNvbXBvbmVudHMoZnJhbWUpO1xuICAgICAgICAgICAgZnJhbWVzLnB1c2goZnJhbWUpO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICBjYXNlIDB4RkZDNDogLy8gREhUIChEZWZpbmUgSHVmZm1hbiBUYWJsZXMpXG4gICAgICAgICAgICB2YXIgaHVmZm1hbkxlbmd0aCA9IHJlYWRVaW50MTYoKTtcbiAgICAgICAgICAgIGZvciAoaSA9IDI7IGkgPCBodWZmbWFuTGVuZ3RoOykge1xuICAgICAgICAgICAgICB2YXIgaHVmZm1hblRhYmxlU3BlYyA9IGRhdGFbb2Zmc2V0KytdO1xuICAgICAgICAgICAgICB2YXIgY29kZUxlbmd0aHMgPSBuZXcgVWludDhBcnJheSgxNik7XG4gICAgICAgICAgICAgIHZhciBjb2RlTGVuZ3RoU3VtID0gMDtcbiAgICAgICAgICAgICAgZm9yIChqID0gMDsgaiA8IDE2OyBqKyssIG9mZnNldCsrKVxuICAgICAgICAgICAgICAgIGNvZGVMZW5ndGhTdW0gKz0gKGNvZGVMZW5ndGhzW2pdID0gZGF0YVtvZmZzZXRdKTtcbiAgICAgICAgICAgICAgdmFyIGh1ZmZtYW5WYWx1ZXMgPSBuZXcgVWludDhBcnJheShjb2RlTGVuZ3RoU3VtKTtcbiAgICAgICAgICAgICAgZm9yIChqID0gMDsgaiA8IGNvZGVMZW5ndGhTdW07IGorKywgb2Zmc2V0KyspXG4gICAgICAgICAgICAgICAgaHVmZm1hblZhbHVlc1tqXSA9IGRhdGFbb2Zmc2V0XTtcbiAgICAgICAgICAgICAgaSArPSAxNyArIGNvZGVMZW5ndGhTdW07XG5cbiAgICAgICAgICAgICAgKChodWZmbWFuVGFibGVTcGVjID4+IDQpID09PSAwID8gXG4gICAgICAgICAgICAgICAgaHVmZm1hblRhYmxlc0RDIDogaHVmZm1hblRhYmxlc0FDKVtodWZmbWFuVGFibGVTcGVjICYgMTVdID1cbiAgICAgICAgICAgICAgICBidWlsZEh1ZmZtYW5UYWJsZShjb2RlTGVuZ3RocywgaHVmZm1hblZhbHVlcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgIGNhc2UgMHhGRkREOiAvLyBEUkkgKERlZmluZSBSZXN0YXJ0IEludGVydmFsKVxuICAgICAgICAgICAgcmVhZFVpbnQxNigpOyAvLyBza2lwIGRhdGEgbGVuZ3RoXG4gICAgICAgICAgICByZXNldEludGVydmFsID0gcmVhZFVpbnQxNigpO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICBjYXNlIDB4RkZEQTogLy8gU09TIChTdGFydCBvZiBTY2FuKVxuICAgICAgICAgICAgdmFyIHNjYW5MZW5ndGggPSByZWFkVWludDE2KCk7XG4gICAgICAgICAgICB2YXIgc2VsZWN0b3JzQ291bnQgPSBkYXRhW29mZnNldCsrXTtcbiAgICAgICAgICAgIHZhciBjb21wb25lbnRzID0gW10sIGNvbXBvbmVudDtcbiAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBzZWxlY3RvcnNDb3VudDsgaSsrKSB7XG4gICAgICAgICAgICAgIGNvbXBvbmVudCA9IGZyYW1lLmNvbXBvbmVudHNbZGF0YVtvZmZzZXQrK11dO1xuICAgICAgICAgICAgICB2YXIgdGFibGVTcGVjID0gZGF0YVtvZmZzZXQrK107XG4gICAgICAgICAgICAgIGNvbXBvbmVudC5odWZmbWFuVGFibGVEQyA9IGh1ZmZtYW5UYWJsZXNEQ1t0YWJsZVNwZWMgPj4gNF07XG4gICAgICAgICAgICAgIGNvbXBvbmVudC5odWZmbWFuVGFibGVBQyA9IGh1ZmZtYW5UYWJsZXNBQ1t0YWJsZVNwZWMgJiAxNV07XG4gICAgICAgICAgICAgIGNvbXBvbmVudHMucHVzaChjb21wb25lbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIHNwZWN0cmFsU3RhcnQgPSBkYXRhW29mZnNldCsrXTtcbiAgICAgICAgICAgIHZhciBzcGVjdHJhbEVuZCA9IGRhdGFbb2Zmc2V0KytdO1xuICAgICAgICAgICAgdmFyIHN1Y2Nlc3NpdmVBcHByb3hpbWF0aW9uID0gZGF0YVtvZmZzZXQrK107XG4gICAgICAgICAgICB2YXIgcHJvY2Vzc2VkID0gZGVjb2RlU2NhbihkYXRhLCBvZmZzZXQsXG4gICAgICAgICAgICAgIGZyYW1lLCBjb21wb25lbnRzLCByZXNldEludGVydmFsLFxuICAgICAgICAgICAgICBzcGVjdHJhbFN0YXJ0LCBzcGVjdHJhbEVuZCxcbiAgICAgICAgICAgICAgc3VjY2Vzc2l2ZUFwcHJveGltYXRpb24gPj4gNCwgc3VjY2Vzc2l2ZUFwcHJveGltYXRpb24gJiAxNSk7XG4gICAgICAgICAgICBvZmZzZXQgKz0gcHJvY2Vzc2VkO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIGlmIChkYXRhW29mZnNldCAtIDNdID09IDB4RkYgJiZcbiAgICAgICAgICAgICAgICBkYXRhW29mZnNldCAtIDJdID49IDB4QzAgJiYgZGF0YVtvZmZzZXQgLSAyXSA8PSAweEZFKSB7XG4gICAgICAgICAgICAgIC8vIGNvdWxkIGJlIGluY29ycmVjdCBlbmNvZGluZyAtLSBsYXN0IDB4RkYgYnl0ZSBvZiB0aGUgcHJldmlvdXNcbiAgICAgICAgICAgICAgLy8gYmxvY2sgd2FzIGVhdGVuIGJ5IHRoZSBlbmNvZGVyXG4gICAgICAgICAgICAgIG9mZnNldCAtPSAzO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRocm93IFwidW5rbm93biBKUEVHIG1hcmtlciBcIiArIGZpbGVNYXJrZXIudG9TdHJpbmcoMTYpO1xuICAgICAgICB9XG4gICAgICAgIGZpbGVNYXJrZXIgPSByZWFkVWludDE2KCk7XG4gICAgICB9XG4gICAgICBpZiAoZnJhbWVzLmxlbmd0aCAhPSAxKVxuICAgICAgICB0aHJvdyBcIm9ubHkgc2luZ2xlIGZyYW1lIEpQRUdzIHN1cHBvcnRlZFwiO1xuXG4gICAgICAvLyBzZXQgZWFjaCBmcmFtZSdzIGNvbXBvbmVudHMgcXVhbnRpemF0aW9uIHRhYmxlXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGZyYW1lcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgY3AgPSBmcmFtZXNbaV0uY29tcG9uZW50cztcbiAgICAgICAgZm9yICh2YXIgaiBpbiBjcCkge1xuICAgICAgICAgIGNwW2pdLnF1YW50aXphdGlvblRhYmxlID0gcXVhbnRpemF0aW9uVGFibGVzW2NwW2pdLnF1YW50aXphdGlvbklkeF07XG4gICAgICAgICAgZGVsZXRlIGNwW2pdLnF1YW50aXphdGlvbklkeDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB0aGlzLndpZHRoID0gZnJhbWUuc2FtcGxlc1BlckxpbmU7XG4gICAgICB0aGlzLmhlaWdodCA9IGZyYW1lLnNjYW5MaW5lcztcbiAgICAgIHRoaXMuamZpZiA9IGpmaWY7XG4gICAgICB0aGlzLmFkb2JlID0gYWRvYmU7XG4gICAgICB0aGlzLmNvbXBvbmVudHMgPSBbXTtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZnJhbWUuY29tcG9uZW50c09yZGVyLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBjb21wb25lbnQgPSBmcmFtZS5jb21wb25lbnRzW2ZyYW1lLmNvbXBvbmVudHNPcmRlcltpXV07XG4gICAgICAgIHRoaXMuY29tcG9uZW50cy5wdXNoKHtcbiAgICAgICAgICBsaW5lczogYnVpbGRDb21wb25lbnREYXRhKGZyYW1lLCBjb21wb25lbnQpLFxuICAgICAgICAgIHNjYWxlWDogY29tcG9uZW50LmggLyBmcmFtZS5tYXhILFxuICAgICAgICAgIHNjYWxlWTogY29tcG9uZW50LnYgLyBmcmFtZS5tYXhWXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0sXG4gICAgZ2V0RGF0YTogZnVuY3Rpb24gZ2V0RGF0YSh3aWR0aCwgaGVpZ2h0KSB7XG4gICAgICB2YXIgc2NhbGVYID0gdGhpcy53aWR0aCAvIHdpZHRoLCBzY2FsZVkgPSB0aGlzLmhlaWdodCAvIGhlaWdodDtcblxuICAgICAgdmFyIGNvbXBvbmVudDEsIGNvbXBvbmVudDIsIGNvbXBvbmVudDMsIGNvbXBvbmVudDQ7XG4gICAgICB2YXIgY29tcG9uZW50MUxpbmUsIGNvbXBvbmVudDJMaW5lLCBjb21wb25lbnQzTGluZSwgY29tcG9uZW50NExpbmU7XG4gICAgICB2YXIgeCwgeTtcbiAgICAgIHZhciBvZmZzZXQgPSAwO1xuICAgICAgdmFyIFksIENiLCBDciwgSywgQywgTSwgWWUsIFIsIEcsIEI7XG4gICAgICB2YXIgY29sb3JUcmFuc2Zvcm07XG4gICAgICB2YXIgZGF0YUxlbmd0aCA9IHdpZHRoICogaGVpZ2h0ICogdGhpcy5jb21wb25lbnRzLmxlbmd0aDtcbiAgICAgIHZhciBkYXRhID0gbmV3IFVpbnQ4QXJyYXkoZGF0YUxlbmd0aCk7XG4gICAgICBzd2l0Y2ggKHRoaXMuY29tcG9uZW50cy5sZW5ndGgpIHtcbiAgICAgICAgY2FzZSAxOlxuICAgICAgICAgIGNvbXBvbmVudDEgPSB0aGlzLmNvbXBvbmVudHNbMF07XG4gICAgICAgICAgZm9yICh5ID0gMDsgeSA8IGhlaWdodDsgeSsrKSB7XG4gICAgICAgICAgICBjb21wb25lbnQxTGluZSA9IGNvbXBvbmVudDEubGluZXNbMCB8ICh5ICogY29tcG9uZW50MS5zY2FsZVkgKiBzY2FsZVkpXTtcbiAgICAgICAgICAgIGZvciAoeCA9IDA7IHggPCB3aWR0aDsgeCsrKSB7XG4gICAgICAgICAgICAgIFkgPSBjb21wb25lbnQxTGluZVswIHwgKHggKiBjb21wb25lbnQxLnNjYWxlWCAqIHNjYWxlWCldO1xuXG4gICAgICAgICAgICAgIGRhdGFbb2Zmc2V0KytdID0gWTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAvLyBQREYgbWlnaHQgY29tcHJlc3MgdHdvIGNvbXBvbmVudCBkYXRhIGluIGN1c3RvbSBjb2xvcnNwYWNlXG4gICAgICAgICAgY29tcG9uZW50MSA9IHRoaXMuY29tcG9uZW50c1swXTtcbiAgICAgICAgICBjb21wb25lbnQyID0gdGhpcy5jb21wb25lbnRzWzFdO1xuICAgICAgICAgIGZvciAoeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykge1xuICAgICAgICAgICAgY29tcG9uZW50MUxpbmUgPSBjb21wb25lbnQxLmxpbmVzWzAgfCAoeSAqIGNvbXBvbmVudDEuc2NhbGVZICogc2NhbGVZKV07XG4gICAgICAgICAgICBjb21wb25lbnQyTGluZSA9IGNvbXBvbmVudDIubGluZXNbMCB8ICh5ICogY29tcG9uZW50Mi5zY2FsZVkgKiBzY2FsZVkpXTtcbiAgICAgICAgICAgIGZvciAoeCA9IDA7IHggPCB3aWR0aDsgeCsrKSB7XG4gICAgICAgICAgICAgIFkgPSBjb21wb25lbnQxTGluZVswIHwgKHggKiBjb21wb25lbnQxLnNjYWxlWCAqIHNjYWxlWCldO1xuICAgICAgICAgICAgICBkYXRhW29mZnNldCsrXSA9IFk7XG4gICAgICAgICAgICAgIFkgPSBjb21wb25lbnQyTGluZVswIHwgKHggKiBjb21wb25lbnQyLnNjYWxlWCAqIHNjYWxlWCldO1xuICAgICAgICAgICAgICBkYXRhW29mZnNldCsrXSA9IFk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgLy8gVGhlIGRlZmF1bHQgdHJhbnNmb3JtIGZvciB0aHJlZSBjb21wb25lbnRzIGlzIHRydWVcbiAgICAgICAgICBjb2xvclRyYW5zZm9ybSA9IHRydWU7XG4gICAgICAgICAgLy8gVGhlIGFkb2JlIHRyYW5zZm9ybSBtYXJrZXIgb3ZlcnJpZGVzIGFueSBwcmV2aW91cyBzZXR0aW5nXG4gICAgICAgICAgaWYgKHRoaXMuYWRvYmUgJiYgdGhpcy5hZG9iZS50cmFuc2Zvcm1Db2RlKVxuICAgICAgICAgICAgY29sb3JUcmFuc2Zvcm0gPSB0cnVlO1xuICAgICAgICAgIGVsc2UgaWYgKHR5cGVvZiB0aGlzLmNvbG9yVHJhbnNmb3JtICE9PSAndW5kZWZpbmVkJylcbiAgICAgICAgICAgIGNvbG9yVHJhbnNmb3JtID0gISF0aGlzLmNvbG9yVHJhbnNmb3JtO1xuXG4gICAgICAgICAgY29tcG9uZW50MSA9IHRoaXMuY29tcG9uZW50c1swXTtcbiAgICAgICAgICBjb21wb25lbnQyID0gdGhpcy5jb21wb25lbnRzWzFdO1xuICAgICAgICAgIGNvbXBvbmVudDMgPSB0aGlzLmNvbXBvbmVudHNbMl07XG4gICAgICAgICAgZm9yICh5ID0gMDsgeSA8IGhlaWdodDsgeSsrKSB7XG4gICAgICAgICAgICBjb21wb25lbnQxTGluZSA9IGNvbXBvbmVudDEubGluZXNbMCB8ICh5ICogY29tcG9uZW50MS5zY2FsZVkgKiBzY2FsZVkpXTtcbiAgICAgICAgICAgIGNvbXBvbmVudDJMaW5lID0gY29tcG9uZW50Mi5saW5lc1swIHwgKHkgKiBjb21wb25lbnQyLnNjYWxlWSAqIHNjYWxlWSldO1xuICAgICAgICAgICAgY29tcG9uZW50M0xpbmUgPSBjb21wb25lbnQzLmxpbmVzWzAgfCAoeSAqIGNvbXBvbmVudDMuc2NhbGVZICogc2NhbGVZKV07XG4gICAgICAgICAgICBmb3IgKHggPSAwOyB4IDwgd2lkdGg7IHgrKykge1xuICAgICAgICAgICAgICBpZiAoIWNvbG9yVHJhbnNmb3JtKSB7XG4gICAgICAgICAgICAgICAgUiA9IGNvbXBvbmVudDFMaW5lWzAgfCAoeCAqIGNvbXBvbmVudDEuc2NhbGVYICogc2NhbGVYKV07XG4gICAgICAgICAgICAgICAgRyA9IGNvbXBvbmVudDJMaW5lWzAgfCAoeCAqIGNvbXBvbmVudDIuc2NhbGVYICogc2NhbGVYKV07XG4gICAgICAgICAgICAgICAgQiA9IGNvbXBvbmVudDNMaW5lWzAgfCAoeCAqIGNvbXBvbmVudDMuc2NhbGVYICogc2NhbGVYKV07XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgWSA9IGNvbXBvbmVudDFMaW5lWzAgfCAoeCAqIGNvbXBvbmVudDEuc2NhbGVYICogc2NhbGVYKV07XG4gICAgICAgICAgICAgICAgQ2IgPSBjb21wb25lbnQyTGluZVswIHwgKHggKiBjb21wb25lbnQyLnNjYWxlWCAqIHNjYWxlWCldO1xuICAgICAgICAgICAgICAgIENyID0gY29tcG9uZW50M0xpbmVbMCB8ICh4ICogY29tcG9uZW50My5zY2FsZVggKiBzY2FsZVgpXTtcblxuICAgICAgICAgICAgICAgIFIgPSBjbGFtcFRvOGJpdChZICsgMS40MDIgKiAoQ3IgLSAxMjgpKTtcbiAgICAgICAgICAgICAgICBHID0gY2xhbXBUbzhiaXQoWSAtIDAuMzQ0MTM2MyAqIChDYiAtIDEyOCkgLSAwLjcxNDEzNjM2ICogKENyIC0gMTI4KSk7XG4gICAgICAgICAgICAgICAgQiA9IGNsYW1wVG84Yml0KFkgKyAxLjc3MiAqIChDYiAtIDEyOCkpO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgZGF0YVtvZmZzZXQrK10gPSBSO1xuICAgICAgICAgICAgICBkYXRhW29mZnNldCsrXSA9IEc7XG4gICAgICAgICAgICAgIGRhdGFbb2Zmc2V0KytdID0gQjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgNDpcbiAgICAgICAgICBpZiAoIXRoaXMuYWRvYmUpXG4gICAgICAgICAgICB0aHJvdyAnVW5zdXBwb3J0ZWQgY29sb3IgbW9kZSAoNCBjb21wb25lbnRzKSc7XG4gICAgICAgICAgLy8gVGhlIGRlZmF1bHQgdHJhbnNmb3JtIGZvciBmb3VyIGNvbXBvbmVudHMgaXMgZmFsc2VcbiAgICAgICAgICBjb2xvclRyYW5zZm9ybSA9IGZhbHNlO1xuICAgICAgICAgIC8vIFRoZSBhZG9iZSB0cmFuc2Zvcm0gbWFya2VyIG92ZXJyaWRlcyBhbnkgcHJldmlvdXMgc2V0dGluZ1xuICAgICAgICAgIGlmICh0aGlzLmFkb2JlICYmIHRoaXMuYWRvYmUudHJhbnNmb3JtQ29kZSlcbiAgICAgICAgICAgIGNvbG9yVHJhbnNmb3JtID0gdHJ1ZTtcbiAgICAgICAgICBlbHNlIGlmICh0eXBlb2YgdGhpcy5jb2xvclRyYW5zZm9ybSAhPT0gJ3VuZGVmaW5lZCcpXG4gICAgICAgICAgICBjb2xvclRyYW5zZm9ybSA9ICEhdGhpcy5jb2xvclRyYW5zZm9ybTtcblxuICAgICAgICAgIGNvbXBvbmVudDEgPSB0aGlzLmNvbXBvbmVudHNbMF07XG4gICAgICAgICAgY29tcG9uZW50MiA9IHRoaXMuY29tcG9uZW50c1sxXTtcbiAgICAgICAgICBjb21wb25lbnQzID0gdGhpcy5jb21wb25lbnRzWzJdO1xuICAgICAgICAgIGNvbXBvbmVudDQgPSB0aGlzLmNvbXBvbmVudHNbM107XG4gICAgICAgICAgZm9yICh5ID0gMDsgeSA8IGhlaWdodDsgeSsrKSB7XG4gICAgICAgICAgICBjb21wb25lbnQxTGluZSA9IGNvbXBvbmVudDEubGluZXNbMCB8ICh5ICogY29tcG9uZW50MS5zY2FsZVkgKiBzY2FsZVkpXTtcbiAgICAgICAgICAgIGNvbXBvbmVudDJMaW5lID0gY29tcG9uZW50Mi5saW5lc1swIHwgKHkgKiBjb21wb25lbnQyLnNjYWxlWSAqIHNjYWxlWSldO1xuICAgICAgICAgICAgY29tcG9uZW50M0xpbmUgPSBjb21wb25lbnQzLmxpbmVzWzAgfCAoeSAqIGNvbXBvbmVudDMuc2NhbGVZICogc2NhbGVZKV07XG4gICAgICAgICAgICBjb21wb25lbnQ0TGluZSA9IGNvbXBvbmVudDQubGluZXNbMCB8ICh5ICogY29tcG9uZW50NC5zY2FsZVkgKiBzY2FsZVkpXTtcbiAgICAgICAgICAgIGZvciAoeCA9IDA7IHggPCB3aWR0aDsgeCsrKSB7XG4gICAgICAgICAgICAgIGlmICghY29sb3JUcmFuc2Zvcm0pIHtcbiAgICAgICAgICAgICAgICBDID0gY29tcG9uZW50MUxpbmVbMCB8ICh4ICogY29tcG9uZW50MS5zY2FsZVggKiBzY2FsZVgpXTtcbiAgICAgICAgICAgICAgICBNID0gY29tcG9uZW50MkxpbmVbMCB8ICh4ICogY29tcG9uZW50Mi5zY2FsZVggKiBzY2FsZVgpXTtcbiAgICAgICAgICAgICAgICBZZSA9IGNvbXBvbmVudDNMaW5lWzAgfCAoeCAqIGNvbXBvbmVudDMuc2NhbGVYICogc2NhbGVYKV07XG4gICAgICAgICAgICAgICAgSyA9IGNvbXBvbmVudDRMaW5lWzAgfCAoeCAqIGNvbXBvbmVudDQuc2NhbGVYICogc2NhbGVYKV07XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgWSA9IGNvbXBvbmVudDFMaW5lWzAgfCAoeCAqIGNvbXBvbmVudDEuc2NhbGVYICogc2NhbGVYKV07XG4gICAgICAgICAgICAgICAgQ2IgPSBjb21wb25lbnQyTGluZVswIHwgKHggKiBjb21wb25lbnQyLnNjYWxlWCAqIHNjYWxlWCldO1xuICAgICAgICAgICAgICAgIENyID0gY29tcG9uZW50M0xpbmVbMCB8ICh4ICogY29tcG9uZW50My5zY2FsZVggKiBzY2FsZVgpXTtcbiAgICAgICAgICAgICAgICBLID0gY29tcG9uZW50NExpbmVbMCB8ICh4ICogY29tcG9uZW50NC5zY2FsZVggKiBzY2FsZVgpXTtcblxuICAgICAgICAgICAgICAgIEMgPSAyNTUgLSBjbGFtcFRvOGJpdChZICsgMS40MDIgKiAoQ3IgLSAxMjgpKTtcbiAgICAgICAgICAgICAgICBNID0gMjU1IC0gY2xhbXBUbzhiaXQoWSAtIDAuMzQ0MTM2MyAqIChDYiAtIDEyOCkgLSAwLjcxNDEzNjM2ICogKENyIC0gMTI4KSk7XG4gICAgICAgICAgICAgICAgWWUgPSAyNTUgLSBjbGFtcFRvOGJpdChZICsgMS43NzIgKiAoQ2IgLSAxMjgpKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBkYXRhW29mZnNldCsrXSA9IDI1NS1DO1xuICAgICAgICAgICAgICBkYXRhW29mZnNldCsrXSA9IDI1NS1NO1xuICAgICAgICAgICAgICBkYXRhW29mZnNldCsrXSA9IDI1NS1ZZTtcbiAgICAgICAgICAgICAgZGF0YVtvZmZzZXQrK10gPSAyNTUtSztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgdGhyb3cgJ1Vuc3VwcG9ydGVkIGNvbG9yIG1vZGUnO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfSxcbiAgICBjb3B5VG9JbWFnZURhdGE6IGZ1bmN0aW9uIGNvcHlUb0ltYWdlRGF0YShpbWFnZURhdGEpIHtcbiAgICAgIHZhciB3aWR0aCA9IGltYWdlRGF0YS53aWR0aCwgaGVpZ2h0ID0gaW1hZ2VEYXRhLmhlaWdodDtcbiAgICAgIHZhciBpbWFnZURhdGFBcnJheSA9IGltYWdlRGF0YS5kYXRhO1xuICAgICAgdmFyIGRhdGEgPSB0aGlzLmdldERhdGEod2lkdGgsIGhlaWdodCk7XG4gICAgICB2YXIgaSA9IDAsIGogPSAwLCB4LCB5O1xuICAgICAgdmFyIFksIEssIEMsIE0sIFIsIEcsIEI7XG4gICAgICBzd2l0Y2ggKHRoaXMuY29tcG9uZW50cy5sZW5ndGgpIHtcbiAgICAgICAgY2FzZSAxOlxuICAgICAgICAgIGZvciAoeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykge1xuICAgICAgICAgICAgZm9yICh4ID0gMDsgeCA8IHdpZHRoOyB4KyspIHtcbiAgICAgICAgICAgICAgWSA9IGRhdGFbaSsrXTtcblxuICAgICAgICAgICAgICBpbWFnZURhdGFBcnJheVtqKytdID0gWTtcbiAgICAgICAgICAgICAgaW1hZ2VEYXRhQXJyYXlbaisrXSA9IFk7XG4gICAgICAgICAgICAgIGltYWdlRGF0YUFycmF5W2orK10gPSBZO1xuICAgICAgICAgICAgICBpbWFnZURhdGFBcnJheVtqKytdID0gMjU1O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAzOlxuICAgICAgICAgIGZvciAoeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykge1xuICAgICAgICAgICAgZm9yICh4ID0gMDsgeCA8IHdpZHRoOyB4KyspIHtcbiAgICAgICAgICAgICAgUiA9IGRhdGFbaSsrXTtcbiAgICAgICAgICAgICAgRyA9IGRhdGFbaSsrXTtcbiAgICAgICAgICAgICAgQiA9IGRhdGFbaSsrXTtcblxuICAgICAgICAgICAgICBpbWFnZURhdGFBcnJheVtqKytdID0gUjtcbiAgICAgICAgICAgICAgaW1hZ2VEYXRhQXJyYXlbaisrXSA9IEc7XG4gICAgICAgICAgICAgIGltYWdlRGF0YUFycmF5W2orK10gPSBCO1xuICAgICAgICAgICAgICBpbWFnZURhdGFBcnJheVtqKytdID0gMjU1O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSA0OlxuICAgICAgICAgIGZvciAoeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykge1xuICAgICAgICAgICAgZm9yICh4ID0gMDsgeCA8IHdpZHRoOyB4KyspIHtcbiAgICAgICAgICAgICAgQyA9IGRhdGFbaSsrXTtcbiAgICAgICAgICAgICAgTSA9IGRhdGFbaSsrXTtcbiAgICAgICAgICAgICAgWSA9IGRhdGFbaSsrXTtcbiAgICAgICAgICAgICAgSyA9IGRhdGFbaSsrXTtcblxuICAgICAgICAgICAgICBSID0gMjU1IC0gY2xhbXBUbzhiaXQoQyAqICgxIC0gSyAvIDI1NSkgKyBLKTtcbiAgICAgICAgICAgICAgRyA9IDI1NSAtIGNsYW1wVG84Yml0KE0gKiAoMSAtIEsgLyAyNTUpICsgSyk7XG4gICAgICAgICAgICAgIEIgPSAyNTUgLSBjbGFtcFRvOGJpdChZICogKDEgLSBLIC8gMjU1KSArIEspO1xuXG4gICAgICAgICAgICAgIGltYWdlRGF0YUFycmF5W2orK10gPSBSO1xuICAgICAgICAgICAgICBpbWFnZURhdGFBcnJheVtqKytdID0gRztcbiAgICAgICAgICAgICAgaW1hZ2VEYXRhQXJyYXlbaisrXSA9IEI7XG4gICAgICAgICAgICAgIGltYWdlRGF0YUFycmF5W2orK10gPSAyNTU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHRocm93ICdVbnN1cHBvcnRlZCBjb2xvciBtb2RlJztcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIGNvbnN0cnVjdG9yO1xufSkoKTtcbm1vZHVsZS5leHBvcnRzID0gZGVjb2RlO1xuXG5mdW5jdGlvbiBkZWNvZGUoanBlZ0RhdGEsIHVzZVRBcnJheSkge1xuICB2YXIgYXJyID0gbmV3IFVpbnQ4QXJyYXkoanBlZ0RhdGEpO1xuICB2YXIgZGVjb2RlciA9IG5ldyBKcGVnSW1hZ2UoKTtcbiAgZGVjb2Rlci5wYXJzZShhcnIpO1xuXG4gIHZhciBpbWFnZSA9IHtcbiAgICB3aWR0aDogZGVjb2Rlci53aWR0aCxcbiAgICBoZWlnaHQ6IGRlY29kZXIuaGVpZ2h0LFxuICAgIGRhdGE6IHVzZVRBcnJheSA/XG4gICAgICBuZXcgVWludDhBcnJheShkZWNvZGVyLndpZHRoICogZGVjb2Rlci5oZWlnaHQgKiA0KSA6XG4gICAgICBuZXcgQnVmZmVyKGRlY29kZXIud2lkdGggKiBkZWNvZGVyLmhlaWdodCAqIDQpXG4gIH07XG5cbiAgZGVjb2Rlci5jb3B5VG9JbWFnZURhdGEoaW1hZ2UpO1xuXG4gIHJldHVybiBpbWFnZTtcbn1cbiIsIi8qXG4gIENvcHlyaWdodCAoYykgMjAwOCwgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWRcbiAgQWxsIHJpZ2h0cyByZXNlcnZlZC5cblxuICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQgXG4gIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmVcbiAgbWV0OlxuXG4gICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCBcbiAgICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLlxuICBcbiAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodFxuICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgXG4gICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi5cbiAgXG4gICogTmVpdGhlciB0aGUgbmFtZSBvZiBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZCBub3IgdGhlIG5hbWVzIG9mIGl0cyBcbiAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSBcbiAgICB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLlxuXG4gIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgXCJBU1xuICBJU1wiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLFxuICBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSXG4gIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IgXG4gIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLFxuICBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sXG4gIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUlxuICBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GXG4gIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HXG4gIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJU1xuICBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS5cbiovXG4vKlxuSlBFRyBlbmNvZGVyIHBvcnRlZCB0byBKYXZhU2NyaXB0IGFuZCBvcHRpbWl6ZWQgYnkgQW5kcmVhcyBSaXR0ZXIsIHd3dy5ieXRlc3Ryb20uZXUsIDExLzIwMDlcblxuQmFzaWMgR1VJIGJsb2NraW5nIGpwZWcgZW5jb2RlclxuKi9cblxudmFyIGJ0b2EgPSBidG9hIHx8IGZ1bmN0aW9uKGJ1Zikge1xuICByZXR1cm4gbmV3IEJ1ZmZlcihidWYpLnRvU3RyaW5nKCdiYXNlNjQnKTtcbn07XG5cbmZ1bmN0aW9uIEpQRUdFbmNvZGVyKHF1YWxpdHkpIHtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuXHR2YXIgZnJvdW5kID0gTWF0aC5yb3VuZDtcblx0dmFyIGZmbG9vciA9IE1hdGguZmxvb3I7XG5cdHZhciBZVGFibGUgPSBuZXcgQXJyYXkoNjQpO1xuXHR2YXIgVVZUYWJsZSA9IG5ldyBBcnJheSg2NCk7XG5cdHZhciBmZHRibF9ZID0gbmV3IEFycmF5KDY0KTtcblx0dmFyIGZkdGJsX1VWID0gbmV3IEFycmF5KDY0KTtcblx0dmFyIFlEQ19IVDtcblx0dmFyIFVWRENfSFQ7XG5cdHZhciBZQUNfSFQ7XG5cdHZhciBVVkFDX0hUO1xuXHRcblx0dmFyIGJpdGNvZGUgPSBuZXcgQXJyYXkoNjU1MzUpO1xuXHR2YXIgY2F0ZWdvcnkgPSBuZXcgQXJyYXkoNjU1MzUpO1xuXHR2YXIgb3V0cHV0ZkRDVFF1YW50ID0gbmV3IEFycmF5KDY0KTtcblx0dmFyIERVID0gbmV3IEFycmF5KDY0KTtcblx0dmFyIGJ5dGVvdXQgPSBbXTtcblx0dmFyIGJ5dGVuZXcgPSAwO1xuXHR2YXIgYnl0ZXBvcyA9IDc7XG5cdFxuXHR2YXIgWURVID0gbmV3IEFycmF5KDY0KTtcblx0dmFyIFVEVSA9IG5ldyBBcnJheSg2NCk7XG5cdHZhciBWRFUgPSBuZXcgQXJyYXkoNjQpO1xuXHR2YXIgY2x0ID0gbmV3IEFycmF5KDI1Nik7XG5cdHZhciBSR0JfWVVWX1RBQkxFID0gbmV3IEFycmF5KDIwNDgpO1xuXHR2YXIgY3VycmVudFF1YWxpdHk7XG5cdFxuXHR2YXIgWmlnWmFnID0gW1xuXHRcdFx0IDAsIDEsIDUsIDYsMTQsMTUsMjcsMjgsXG5cdFx0XHQgMiwgNCwgNywxMywxNiwyNiwyOSw0Mixcblx0XHRcdCAzLCA4LDEyLDE3LDI1LDMwLDQxLDQzLFxuXHRcdFx0IDksMTEsMTgsMjQsMzEsNDAsNDQsNTMsXG5cdFx0XHQxMCwxOSwyMywzMiwzOSw0NSw1Miw1NCxcblx0XHRcdDIwLDIyLDMzLDM4LDQ2LDUxLDU1LDYwLFxuXHRcdFx0MjEsMzQsMzcsNDcsNTAsNTYsNTksNjEsXG5cdFx0XHQzNSwzNiw0OCw0OSw1Nyw1OCw2Miw2M1xuXHRcdF07XG5cdFxuXHR2YXIgc3RkX2RjX2x1bWluYW5jZV9ucmNvZGVzID0gWzAsMCwxLDUsMSwxLDEsMSwxLDEsMCwwLDAsMCwwLDAsMF07XG5cdHZhciBzdGRfZGNfbHVtaW5hbmNlX3ZhbHVlcyA9IFswLDEsMiwzLDQsNSw2LDcsOCw5LDEwLDExXTtcblx0dmFyIHN0ZF9hY19sdW1pbmFuY2VfbnJjb2RlcyA9IFswLDAsMiwxLDMsMywyLDQsMyw1LDUsNCw0LDAsMCwxLDB4N2RdO1xuXHR2YXIgc3RkX2FjX2x1bWluYW5jZV92YWx1ZXMgPSBbXG5cdFx0XHQweDAxLDB4MDIsMHgwMywweDAwLDB4MDQsMHgxMSwweDA1LDB4MTIsXG5cdFx0XHQweDIxLDB4MzEsMHg0MSwweDA2LDB4MTMsMHg1MSwweDYxLDB4MDcsXG5cdFx0XHQweDIyLDB4NzEsMHgxNCwweDMyLDB4ODEsMHg5MSwweGExLDB4MDgsXG5cdFx0XHQweDIzLDB4NDIsMHhiMSwweGMxLDB4MTUsMHg1MiwweGQxLDB4ZjAsXG5cdFx0XHQweDI0LDB4MzMsMHg2MiwweDcyLDB4ODIsMHgwOSwweDBhLDB4MTYsXG5cdFx0XHQweDE3LDB4MTgsMHgxOSwweDFhLDB4MjUsMHgyNiwweDI3LDB4MjgsXG5cdFx0XHQweDI5LDB4MmEsMHgzNCwweDM1LDB4MzYsMHgzNywweDM4LDB4MzksXG5cdFx0XHQweDNhLDB4NDMsMHg0NCwweDQ1LDB4NDYsMHg0NywweDQ4LDB4NDksXG5cdFx0XHQweDRhLDB4NTMsMHg1NCwweDU1LDB4NTYsMHg1NywweDU4LDB4NTksXG5cdFx0XHQweDVhLDB4NjMsMHg2NCwweDY1LDB4NjYsMHg2NywweDY4LDB4NjksXG5cdFx0XHQweDZhLDB4NzMsMHg3NCwweDc1LDB4NzYsMHg3NywweDc4LDB4NzksXG5cdFx0XHQweDdhLDB4ODMsMHg4NCwweDg1LDB4ODYsMHg4NywweDg4LDB4ODksXG5cdFx0XHQweDhhLDB4OTIsMHg5MywweDk0LDB4OTUsMHg5NiwweDk3LDB4OTgsXG5cdFx0XHQweDk5LDB4OWEsMHhhMiwweGEzLDB4YTQsMHhhNSwweGE2LDB4YTcsXG5cdFx0XHQweGE4LDB4YTksMHhhYSwweGIyLDB4YjMsMHhiNCwweGI1LDB4YjYsXG5cdFx0XHQweGI3LDB4YjgsMHhiOSwweGJhLDB4YzIsMHhjMywweGM0LDB4YzUsXG5cdFx0XHQweGM2LDB4YzcsMHhjOCwweGM5LDB4Y2EsMHhkMiwweGQzLDB4ZDQsXG5cdFx0XHQweGQ1LDB4ZDYsMHhkNywweGQ4LDB4ZDksMHhkYSwweGUxLDB4ZTIsXG5cdFx0XHQweGUzLDB4ZTQsMHhlNSwweGU2LDB4ZTcsMHhlOCwweGU5LDB4ZWEsXG5cdFx0XHQweGYxLDB4ZjIsMHhmMywweGY0LDB4ZjUsMHhmNiwweGY3LDB4ZjgsXG5cdFx0XHQweGY5LDB4ZmFcblx0XHRdO1xuXHRcblx0dmFyIHN0ZF9kY19jaHJvbWluYW5jZV9ucmNvZGVzID0gWzAsMCwzLDEsMSwxLDEsMSwxLDEsMSwxLDAsMCwwLDAsMF07XG5cdHZhciBzdGRfZGNfY2hyb21pbmFuY2VfdmFsdWVzID0gWzAsMSwyLDMsNCw1LDYsNyw4LDksMTAsMTFdO1xuXHR2YXIgc3RkX2FjX2Nocm9taW5hbmNlX25yY29kZXMgPSBbMCwwLDIsMSwyLDQsNCwzLDQsNyw1LDQsNCwwLDEsMiwweDc3XTtcblx0dmFyIHN0ZF9hY19jaHJvbWluYW5jZV92YWx1ZXMgPSBbXG5cdFx0XHQweDAwLDB4MDEsMHgwMiwweDAzLDB4MTEsMHgwNCwweDA1LDB4MjEsXG5cdFx0XHQweDMxLDB4MDYsMHgxMiwweDQxLDB4NTEsMHgwNywweDYxLDB4NzEsXG5cdFx0XHQweDEzLDB4MjIsMHgzMiwweDgxLDB4MDgsMHgxNCwweDQyLDB4OTEsXG5cdFx0XHQweGExLDB4YjEsMHhjMSwweDA5LDB4MjMsMHgzMywweDUyLDB4ZjAsXG5cdFx0XHQweDE1LDB4NjIsMHg3MiwweGQxLDB4MGEsMHgxNiwweDI0LDB4MzQsXG5cdFx0XHQweGUxLDB4MjUsMHhmMSwweDE3LDB4MTgsMHgxOSwweDFhLDB4MjYsXG5cdFx0XHQweDI3LDB4MjgsMHgyOSwweDJhLDB4MzUsMHgzNiwweDM3LDB4MzgsXG5cdFx0XHQweDM5LDB4M2EsMHg0MywweDQ0LDB4NDUsMHg0NiwweDQ3LDB4NDgsXG5cdFx0XHQweDQ5LDB4NGEsMHg1MywweDU0LDB4NTUsMHg1NiwweDU3LDB4NTgsXG5cdFx0XHQweDU5LDB4NWEsMHg2MywweDY0LDB4NjUsMHg2NiwweDY3LDB4NjgsXG5cdFx0XHQweDY5LDB4NmEsMHg3MywweDc0LDB4NzUsMHg3NiwweDc3LDB4NzgsXG5cdFx0XHQweDc5LDB4N2EsMHg4MiwweDgzLDB4ODQsMHg4NSwweDg2LDB4ODcsXG5cdFx0XHQweDg4LDB4ODksMHg4YSwweDkyLDB4OTMsMHg5NCwweDk1LDB4OTYsXG5cdFx0XHQweDk3LDB4OTgsMHg5OSwweDlhLDB4YTIsMHhhMywweGE0LDB4YTUsXG5cdFx0XHQweGE2LDB4YTcsMHhhOCwweGE5LDB4YWEsMHhiMiwweGIzLDB4YjQsXG5cdFx0XHQweGI1LDB4YjYsMHhiNywweGI4LDB4YjksMHhiYSwweGMyLDB4YzMsXG5cdFx0XHQweGM0LDB4YzUsMHhjNiwweGM3LDB4YzgsMHhjOSwweGNhLDB4ZDIsXG5cdFx0XHQweGQzLDB4ZDQsMHhkNSwweGQ2LDB4ZDcsMHhkOCwweGQ5LDB4ZGEsXG5cdFx0XHQweGUyLDB4ZTMsMHhlNCwweGU1LDB4ZTYsMHhlNywweGU4LDB4ZTksXG5cdFx0XHQweGVhLDB4ZjIsMHhmMywweGY0LDB4ZjUsMHhmNiwweGY3LDB4ZjgsXG5cdFx0XHQweGY5LDB4ZmFcblx0XHRdO1xuXHRcblx0ZnVuY3Rpb24gaW5pdFF1YW50VGFibGVzKHNmKXtcblx0XHRcdHZhciBZUVQgPSBbXG5cdFx0XHRcdDE2LCAxMSwgMTAsIDE2LCAyNCwgNDAsIDUxLCA2MSxcblx0XHRcdFx0MTIsIDEyLCAxNCwgMTksIDI2LCA1OCwgNjAsIDU1LFxuXHRcdFx0XHQxNCwgMTMsIDE2LCAyNCwgNDAsIDU3LCA2OSwgNTYsXG5cdFx0XHRcdDE0LCAxNywgMjIsIDI5LCA1MSwgODcsIDgwLCA2Mixcblx0XHRcdFx0MTgsIDIyLCAzNywgNTYsIDY4LDEwOSwxMDMsIDc3LFxuXHRcdFx0XHQyNCwgMzUsIDU1LCA2NCwgODEsMTA0LDExMywgOTIsXG5cdFx0XHRcdDQ5LCA2NCwgNzgsIDg3LDEwMywxMjEsMTIwLDEwMSxcblx0XHRcdFx0NzIsIDkyLCA5NSwgOTgsMTEyLDEwMCwxMDMsIDk5XG5cdFx0XHRdO1xuXHRcdFx0XG5cdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IDY0OyBpKyspIHtcblx0XHRcdFx0dmFyIHQgPSBmZmxvb3IoKFlRVFtpXSpzZis1MCkvMTAwKTtcblx0XHRcdFx0aWYgKHQgPCAxKSB7XG5cdFx0XHRcdFx0dCA9IDE7XG5cdFx0XHRcdH0gZWxzZSBpZiAodCA+IDI1NSkge1xuXHRcdFx0XHRcdHQgPSAyNTU7XG5cdFx0XHRcdH1cblx0XHRcdFx0WVRhYmxlW1ppZ1phZ1tpXV0gPSB0O1xuXHRcdFx0fVxuXHRcdFx0dmFyIFVWUVQgPSBbXG5cdFx0XHRcdDE3LCAxOCwgMjQsIDQ3LCA5OSwgOTksIDk5LCA5OSxcblx0XHRcdFx0MTgsIDIxLCAyNiwgNjYsIDk5LCA5OSwgOTksIDk5LFxuXHRcdFx0XHQyNCwgMjYsIDU2LCA5OSwgOTksIDk5LCA5OSwgOTksXG5cdFx0XHRcdDQ3LCA2NiwgOTksIDk5LCA5OSwgOTksIDk5LCA5OSxcblx0XHRcdFx0OTksIDk5LCA5OSwgOTksIDk5LCA5OSwgOTksIDk5LFxuXHRcdFx0XHQ5OSwgOTksIDk5LCA5OSwgOTksIDk5LCA5OSwgOTksXG5cdFx0XHRcdDk5LCA5OSwgOTksIDk5LCA5OSwgOTksIDk5LCA5OSxcblx0XHRcdFx0OTksIDk5LCA5OSwgOTksIDk5LCA5OSwgOTksIDk5XG5cdFx0XHRdO1xuXHRcdFx0Zm9yICh2YXIgaiA9IDA7IGogPCA2NDsgaisrKSB7XG5cdFx0XHRcdHZhciB1ID0gZmZsb29yKChVVlFUW2pdKnNmKzUwKS8xMDApO1xuXHRcdFx0XHRpZiAodSA8IDEpIHtcblx0XHRcdFx0XHR1ID0gMTtcblx0XHRcdFx0fSBlbHNlIGlmICh1ID4gMjU1KSB7XG5cdFx0XHRcdFx0dSA9IDI1NTtcblx0XHRcdFx0fVxuXHRcdFx0XHRVVlRhYmxlW1ppZ1phZ1tqXV0gPSB1O1xuXHRcdFx0fVxuXHRcdFx0dmFyIGFhc2YgPSBbXG5cdFx0XHRcdDEuMCwgMS4zODcwMzk4NDUsIDEuMzA2NTYyOTY1LCAxLjE3NTg3NTYwMixcblx0XHRcdFx0MS4wLCAwLjc4NTY5NDk1OCwgMC41NDExOTYxMDAsIDAuMjc1ODk5Mzc5XG5cdFx0XHRdO1xuXHRcdFx0dmFyIGsgPSAwO1xuXHRcdFx0Zm9yICh2YXIgcm93ID0gMDsgcm93IDwgODsgcm93KyspXG5cdFx0XHR7XG5cdFx0XHRcdGZvciAodmFyIGNvbCA9IDA7IGNvbCA8IDg7IGNvbCsrKVxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0ZmR0YmxfWVtrXSAgPSAoMS4wIC8gKFlUYWJsZSBbWmlnWmFnW2tdXSAqIGFhc2Zbcm93XSAqIGFhc2ZbY29sXSAqIDguMCkpO1xuXHRcdFx0XHRcdGZkdGJsX1VWW2tdID0gKDEuMCAvIChVVlRhYmxlW1ppZ1phZ1trXV0gKiBhYXNmW3Jvd10gKiBhYXNmW2NvbF0gKiA4LjApKTtcblx0XHRcdFx0XHRrKys7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0XG5cdFx0ZnVuY3Rpb24gY29tcHV0ZUh1ZmZtYW5UYmwobnJjb2Rlcywgc3RkX3RhYmxlKXtcblx0XHRcdHZhciBjb2RldmFsdWUgPSAwO1xuXHRcdFx0dmFyIHBvc19pbl90YWJsZSA9IDA7XG5cdFx0XHR2YXIgSFQgPSBuZXcgQXJyYXkoKTtcblx0XHRcdGZvciAodmFyIGsgPSAxOyBrIDw9IDE2OyBrKyspIHtcblx0XHRcdFx0Zm9yICh2YXIgaiA9IDE7IGogPD0gbnJjb2Rlc1trXTsgaisrKSB7XG5cdFx0XHRcdFx0SFRbc3RkX3RhYmxlW3Bvc19pbl90YWJsZV1dID0gW107XG5cdFx0XHRcdFx0SFRbc3RkX3RhYmxlW3Bvc19pbl90YWJsZV1dWzBdID0gY29kZXZhbHVlO1xuXHRcdFx0XHRcdEhUW3N0ZF90YWJsZVtwb3NfaW5fdGFibGVdXVsxXSA9IGs7XG5cdFx0XHRcdFx0cG9zX2luX3RhYmxlKys7XG5cdFx0XHRcdFx0Y29kZXZhbHVlKys7XG5cdFx0XHRcdH1cblx0XHRcdFx0Y29kZXZhbHVlKj0yO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIEhUO1xuXHRcdH1cblx0XHRcblx0XHRmdW5jdGlvbiBpbml0SHVmZm1hblRibCgpXG5cdFx0e1xuXHRcdFx0WURDX0hUID0gY29tcHV0ZUh1ZmZtYW5UYmwoc3RkX2RjX2x1bWluYW5jZV9ucmNvZGVzLHN0ZF9kY19sdW1pbmFuY2VfdmFsdWVzKTtcblx0XHRcdFVWRENfSFQgPSBjb21wdXRlSHVmZm1hblRibChzdGRfZGNfY2hyb21pbmFuY2VfbnJjb2RlcyxzdGRfZGNfY2hyb21pbmFuY2VfdmFsdWVzKTtcblx0XHRcdFlBQ19IVCA9IGNvbXB1dGVIdWZmbWFuVGJsKHN0ZF9hY19sdW1pbmFuY2VfbnJjb2RlcyxzdGRfYWNfbHVtaW5hbmNlX3ZhbHVlcyk7XG5cdFx0XHRVVkFDX0hUID0gY29tcHV0ZUh1ZmZtYW5UYmwoc3RkX2FjX2Nocm9taW5hbmNlX25yY29kZXMsc3RkX2FjX2Nocm9taW5hbmNlX3ZhbHVlcyk7XG5cdFx0fVxuXHRcblx0XHRmdW5jdGlvbiBpbml0Q2F0ZWdvcnlOdW1iZXIoKVxuXHRcdHtcblx0XHRcdHZhciBucmxvd2VyID0gMTtcblx0XHRcdHZhciBucnVwcGVyID0gMjtcblx0XHRcdGZvciAodmFyIGNhdCA9IDE7IGNhdCA8PSAxNTsgY2F0KyspIHtcblx0XHRcdFx0Ly9Qb3NpdGl2ZSBudW1iZXJzXG5cdFx0XHRcdGZvciAodmFyIG5yID0gbnJsb3dlcjsgbnI8bnJ1cHBlcjsgbnIrKykge1xuXHRcdFx0XHRcdGNhdGVnb3J5WzMyNzY3K25yXSA9IGNhdDtcblx0XHRcdFx0XHRiaXRjb2RlWzMyNzY3K25yXSA9IFtdO1xuXHRcdFx0XHRcdGJpdGNvZGVbMzI3NjcrbnJdWzFdID0gY2F0O1xuXHRcdFx0XHRcdGJpdGNvZGVbMzI3NjcrbnJdWzBdID0gbnI7XG5cdFx0XHRcdH1cblx0XHRcdFx0Ly9OZWdhdGl2ZSBudW1iZXJzXG5cdFx0XHRcdGZvciAodmFyIG5ybmVnID0tKG5ydXBwZXItMSk7IG5ybmVnPD0tbnJsb3dlcjsgbnJuZWcrKykge1xuXHRcdFx0XHRcdGNhdGVnb3J5WzMyNzY3K25ybmVnXSA9IGNhdDtcblx0XHRcdFx0XHRiaXRjb2RlWzMyNzY3K25ybmVnXSA9IFtdO1xuXHRcdFx0XHRcdGJpdGNvZGVbMzI3NjcrbnJuZWddWzFdID0gY2F0O1xuXHRcdFx0XHRcdGJpdGNvZGVbMzI3NjcrbnJuZWddWzBdID0gbnJ1cHBlci0xK25ybmVnO1xuXHRcdFx0XHR9XG5cdFx0XHRcdG5ybG93ZXIgPDw9IDE7XG5cdFx0XHRcdG5ydXBwZXIgPDw9IDE7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdFxuXHRcdGZ1bmN0aW9uIGluaXRSR0JZVVZUYWJsZSgpIHtcblx0XHRcdGZvcih2YXIgaSA9IDA7IGkgPCAyNTY7aSsrKSB7XG5cdFx0XHRcdFJHQl9ZVVZfVEFCTEVbaV0gICAgICBcdFx0PSAgMTk1OTUgKiBpO1xuXHRcdFx0XHRSR0JfWVVWX1RBQkxFWyhpKyAyNTYpPj4wXSBcdD0gIDM4NDcwICogaTtcblx0XHRcdFx0UkdCX1lVVl9UQUJMRVsoaSsgNTEyKT4+MF0gXHQ9ICAgNzQ3MSAqIGkgKyAweDgwMDA7XG5cdFx0XHRcdFJHQl9ZVVZfVEFCTEVbKGkrIDc2OCk+PjBdIFx0PSAtMTEwNTkgKiBpO1xuXHRcdFx0XHRSR0JfWVVWX1RBQkxFWyhpKzEwMjQpPj4wXSBcdD0gLTIxNzA5ICogaTtcblx0XHRcdFx0UkdCX1lVVl9UQUJMRVsoaSsxMjgwKT4+MF0gXHQ9ICAzMjc2OCAqIGkgKyAweDgwN0ZGRjtcblx0XHRcdFx0UkdCX1lVVl9UQUJMRVsoaSsxNTM2KT4+MF0gXHQ9IC0yNzQzOSAqIGk7XG5cdFx0XHRcdFJHQl9ZVVZfVEFCTEVbKGkrMTc5Mik+PjBdIFx0PSAtIDUzMjkgKiBpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRcblx0XHQvLyBJTyBmdW5jdGlvbnNcblx0XHRmdW5jdGlvbiB3cml0ZUJpdHMoYnMpXG5cdFx0e1xuXHRcdFx0dmFyIHZhbHVlID0gYnNbMF07XG5cdFx0XHR2YXIgcG9zdmFsID0gYnNbMV0tMTtcblx0XHRcdHdoaWxlICggcG9zdmFsID49IDAgKSB7XG5cdFx0XHRcdGlmICh2YWx1ZSAmICgxIDw8IHBvc3ZhbCkgKSB7XG5cdFx0XHRcdFx0Ynl0ZW5ldyB8PSAoMSA8PCBieXRlcG9zKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRwb3N2YWwtLTtcblx0XHRcdFx0Ynl0ZXBvcy0tO1xuXHRcdFx0XHRpZiAoYnl0ZXBvcyA8IDApIHtcblx0XHRcdFx0XHRpZiAoYnl0ZW5ldyA9PSAweEZGKSB7XG5cdFx0XHRcdFx0XHR3cml0ZUJ5dGUoMHhGRik7XG5cdFx0XHRcdFx0XHR3cml0ZUJ5dGUoMCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0d3JpdGVCeXRlKGJ5dGVuZXcpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRieXRlcG9zPTc7XG5cdFx0XHRcdFx0Ynl0ZW5ldz0wO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHRcblx0XHRmdW5jdGlvbiB3cml0ZUJ5dGUodmFsdWUpXG5cdFx0e1xuXHRcdFx0Ly9ieXRlb3V0LnB1c2goY2x0W3ZhbHVlXSk7IC8vIHdyaXRlIGNoYXIgZGlyZWN0bHkgaW5zdGVhZCBvZiBjb252ZXJ0aW5nIGxhdGVyXG4gICAgICBieXRlb3V0LnB1c2godmFsdWUpO1xuXHRcdH1cblx0XG5cdFx0ZnVuY3Rpb24gd3JpdGVXb3JkKHZhbHVlKVxuXHRcdHtcblx0XHRcdHdyaXRlQnl0ZSgodmFsdWU+PjgpJjB4RkYpO1xuXHRcdFx0d3JpdGVCeXRlKCh2YWx1ZSAgICkmMHhGRik7XG5cdFx0fVxuXHRcdFxuXHRcdC8vIERDVCAmIHF1YW50aXphdGlvbiBjb3JlXG5cdFx0ZnVuY3Rpb24gZkRDVFF1YW50KGRhdGEsIGZkdGJsKVxuXHRcdHtcblx0XHRcdHZhciBkMCwgZDEsIGQyLCBkMywgZDQsIGQ1LCBkNiwgZDc7XG5cdFx0XHQvKiBQYXNzIDE6IHByb2Nlc3Mgcm93cy4gKi9cblx0XHRcdHZhciBkYXRhT2ZmPTA7XG5cdFx0XHR2YXIgaTtcblx0XHRcdGNvbnN0IEk4ID0gODtcblx0XHRcdGNvbnN0IEk2NCA9IDY0O1xuXHRcdFx0Zm9yIChpPTA7IGk8STg7ICsraSlcblx0XHRcdHtcblx0XHRcdFx0ZDAgPSBkYXRhW2RhdGFPZmZdO1xuXHRcdFx0XHRkMSA9IGRhdGFbZGF0YU9mZisxXTtcblx0XHRcdFx0ZDIgPSBkYXRhW2RhdGFPZmYrMl07XG5cdFx0XHRcdGQzID0gZGF0YVtkYXRhT2ZmKzNdO1xuXHRcdFx0XHRkNCA9IGRhdGFbZGF0YU9mZis0XTtcblx0XHRcdFx0ZDUgPSBkYXRhW2RhdGFPZmYrNV07XG5cdFx0XHRcdGQ2ID0gZGF0YVtkYXRhT2ZmKzZdO1xuXHRcdFx0XHRkNyA9IGRhdGFbZGF0YU9mZis3XTtcblx0XHRcdFx0XG5cdFx0XHRcdHZhciB0bXAwID0gZDAgKyBkNztcblx0XHRcdFx0dmFyIHRtcDcgPSBkMCAtIGQ3O1xuXHRcdFx0XHR2YXIgdG1wMSA9IGQxICsgZDY7XG5cdFx0XHRcdHZhciB0bXA2ID0gZDEgLSBkNjtcblx0XHRcdFx0dmFyIHRtcDIgPSBkMiArIGQ1O1xuXHRcdFx0XHR2YXIgdG1wNSA9IGQyIC0gZDU7XG5cdFx0XHRcdHZhciB0bXAzID0gZDMgKyBkNDtcblx0XHRcdFx0dmFyIHRtcDQgPSBkMyAtIGQ0O1xuXHRcblx0XHRcdFx0LyogRXZlbiBwYXJ0ICovXG5cdFx0XHRcdHZhciB0bXAxMCA9IHRtcDAgKyB0bXAzO1x0LyogcGhhc2UgMiAqL1xuXHRcdFx0XHR2YXIgdG1wMTMgPSB0bXAwIC0gdG1wMztcblx0XHRcdFx0dmFyIHRtcDExID0gdG1wMSArIHRtcDI7XG5cdFx0XHRcdHZhciB0bXAxMiA9IHRtcDEgLSB0bXAyO1xuXHRcblx0XHRcdFx0ZGF0YVtkYXRhT2ZmXSA9IHRtcDEwICsgdG1wMTE7IC8qIHBoYXNlIDMgKi9cblx0XHRcdFx0ZGF0YVtkYXRhT2ZmKzRdID0gdG1wMTAgLSB0bXAxMTtcblx0XG5cdFx0XHRcdHZhciB6MSA9ICh0bXAxMiArIHRtcDEzKSAqIDAuNzA3MTA2NzgxOyAvKiBjNCAqL1xuXHRcdFx0XHRkYXRhW2RhdGFPZmYrMl0gPSB0bXAxMyArIHoxOyAvKiBwaGFzZSA1ICovXG5cdFx0XHRcdGRhdGFbZGF0YU9mZis2XSA9IHRtcDEzIC0gejE7XG5cdFxuXHRcdFx0XHQvKiBPZGQgcGFydCAqL1xuXHRcdFx0XHR0bXAxMCA9IHRtcDQgKyB0bXA1OyAvKiBwaGFzZSAyICovXG5cdFx0XHRcdHRtcDExID0gdG1wNSArIHRtcDY7XG5cdFx0XHRcdHRtcDEyID0gdG1wNiArIHRtcDc7XG5cdFxuXHRcdFx0XHQvKiBUaGUgcm90YXRvciBpcyBtb2RpZmllZCBmcm9tIGZpZyA0LTggdG8gYXZvaWQgZXh0cmEgbmVnYXRpb25zLiAqL1xuXHRcdFx0XHR2YXIgejUgPSAodG1wMTAgLSB0bXAxMikgKiAwLjM4MjY4MzQzMzsgLyogYzYgKi9cblx0XHRcdFx0dmFyIHoyID0gMC41NDExOTYxMDAgKiB0bXAxMCArIHo1OyAvKiBjMi1jNiAqL1xuXHRcdFx0XHR2YXIgejQgPSAxLjMwNjU2Mjk2NSAqIHRtcDEyICsgejU7IC8qIGMyK2M2ICovXG5cdFx0XHRcdHZhciB6MyA9IHRtcDExICogMC43MDcxMDY3ODE7IC8qIGM0ICovXG5cdFxuXHRcdFx0XHR2YXIgejExID0gdG1wNyArIHozO1x0LyogcGhhc2UgNSAqL1xuXHRcdFx0XHR2YXIgejEzID0gdG1wNyAtIHozO1xuXHRcblx0XHRcdFx0ZGF0YVtkYXRhT2ZmKzVdID0gejEzICsgejI7XHQvKiBwaGFzZSA2ICovXG5cdFx0XHRcdGRhdGFbZGF0YU9mZiszXSA9IHoxMyAtIHoyO1xuXHRcdFx0XHRkYXRhW2RhdGFPZmYrMV0gPSB6MTEgKyB6NDtcblx0XHRcdFx0ZGF0YVtkYXRhT2ZmKzddID0gejExIC0gejQ7XG5cdFxuXHRcdFx0XHRkYXRhT2ZmICs9IDg7IC8qIGFkdmFuY2UgcG9pbnRlciB0byBuZXh0IHJvdyAqL1xuXHRcdFx0fVxuXHRcblx0XHRcdC8qIFBhc3MgMjogcHJvY2VzcyBjb2x1bW5zLiAqL1xuXHRcdFx0ZGF0YU9mZiA9IDA7XG5cdFx0XHRmb3IgKGk9MDsgaTxJODsgKytpKVxuXHRcdFx0e1xuXHRcdFx0XHRkMCA9IGRhdGFbZGF0YU9mZl07XG5cdFx0XHRcdGQxID0gZGF0YVtkYXRhT2ZmICsgOF07XG5cdFx0XHRcdGQyID0gZGF0YVtkYXRhT2ZmICsgMTZdO1xuXHRcdFx0XHRkMyA9IGRhdGFbZGF0YU9mZiArIDI0XTtcblx0XHRcdFx0ZDQgPSBkYXRhW2RhdGFPZmYgKyAzMl07XG5cdFx0XHRcdGQ1ID0gZGF0YVtkYXRhT2ZmICsgNDBdO1xuXHRcdFx0XHRkNiA9IGRhdGFbZGF0YU9mZiArIDQ4XTtcblx0XHRcdFx0ZDcgPSBkYXRhW2RhdGFPZmYgKyA1Nl07XG5cdFx0XHRcdFxuXHRcdFx0XHR2YXIgdG1wMHAyID0gZDAgKyBkNztcblx0XHRcdFx0dmFyIHRtcDdwMiA9IGQwIC0gZDc7XG5cdFx0XHRcdHZhciB0bXAxcDIgPSBkMSArIGQ2O1xuXHRcdFx0XHR2YXIgdG1wNnAyID0gZDEgLSBkNjtcblx0XHRcdFx0dmFyIHRtcDJwMiA9IGQyICsgZDU7XG5cdFx0XHRcdHZhciB0bXA1cDIgPSBkMiAtIGQ1O1xuXHRcdFx0XHR2YXIgdG1wM3AyID0gZDMgKyBkNDtcblx0XHRcdFx0dmFyIHRtcDRwMiA9IGQzIC0gZDQ7XG5cdFxuXHRcdFx0XHQvKiBFdmVuIHBhcnQgKi9cblx0XHRcdFx0dmFyIHRtcDEwcDIgPSB0bXAwcDIgKyB0bXAzcDI7XHQvKiBwaGFzZSAyICovXG5cdFx0XHRcdHZhciB0bXAxM3AyID0gdG1wMHAyIC0gdG1wM3AyO1xuXHRcdFx0XHR2YXIgdG1wMTFwMiA9IHRtcDFwMiArIHRtcDJwMjtcblx0XHRcdFx0dmFyIHRtcDEycDIgPSB0bXAxcDIgLSB0bXAycDI7XG5cdFxuXHRcdFx0XHRkYXRhW2RhdGFPZmZdID0gdG1wMTBwMiArIHRtcDExcDI7IC8qIHBoYXNlIDMgKi9cblx0XHRcdFx0ZGF0YVtkYXRhT2ZmKzMyXSA9IHRtcDEwcDIgLSB0bXAxMXAyO1xuXHRcblx0XHRcdFx0dmFyIHoxcDIgPSAodG1wMTJwMiArIHRtcDEzcDIpICogMC43MDcxMDY3ODE7IC8qIGM0ICovXG5cdFx0XHRcdGRhdGFbZGF0YU9mZisxNl0gPSB0bXAxM3AyICsgejFwMjsgLyogcGhhc2UgNSAqL1xuXHRcdFx0XHRkYXRhW2RhdGFPZmYrNDhdID0gdG1wMTNwMiAtIHoxcDI7XG5cdFxuXHRcdFx0XHQvKiBPZGQgcGFydCAqL1xuXHRcdFx0XHR0bXAxMHAyID0gdG1wNHAyICsgdG1wNXAyOyAvKiBwaGFzZSAyICovXG5cdFx0XHRcdHRtcDExcDIgPSB0bXA1cDIgKyB0bXA2cDI7XG5cdFx0XHRcdHRtcDEycDIgPSB0bXA2cDIgKyB0bXA3cDI7XG5cdFxuXHRcdFx0XHQvKiBUaGUgcm90YXRvciBpcyBtb2RpZmllZCBmcm9tIGZpZyA0LTggdG8gYXZvaWQgZXh0cmEgbmVnYXRpb25zLiAqL1xuXHRcdFx0XHR2YXIgejVwMiA9ICh0bXAxMHAyIC0gdG1wMTJwMikgKiAwLjM4MjY4MzQzMzsgLyogYzYgKi9cblx0XHRcdFx0dmFyIHoycDIgPSAwLjU0MTE5NjEwMCAqIHRtcDEwcDIgKyB6NXAyOyAvKiBjMi1jNiAqL1xuXHRcdFx0XHR2YXIgejRwMiA9IDEuMzA2NTYyOTY1ICogdG1wMTJwMiArIHo1cDI7IC8qIGMyK2M2ICovXG5cdFx0XHRcdHZhciB6M3AyID0gdG1wMTFwMiAqIDAuNzA3MTA2NzgxOyAvKiBjNCAqL1xuXHRcblx0XHRcdFx0dmFyIHoxMXAyID0gdG1wN3AyICsgejNwMjtcdC8qIHBoYXNlIDUgKi9cblx0XHRcdFx0dmFyIHoxM3AyID0gdG1wN3AyIC0gejNwMjtcblx0XG5cdFx0XHRcdGRhdGFbZGF0YU9mZis0MF0gPSB6MTNwMiArIHoycDI7IC8qIHBoYXNlIDYgKi9cblx0XHRcdFx0ZGF0YVtkYXRhT2ZmKzI0XSA9IHoxM3AyIC0gejJwMjtcblx0XHRcdFx0ZGF0YVtkYXRhT2ZmKyA4XSA9IHoxMXAyICsgejRwMjtcblx0XHRcdFx0ZGF0YVtkYXRhT2ZmKzU2XSA9IHoxMXAyIC0gejRwMjtcblx0XG5cdFx0XHRcdGRhdGFPZmYrKzsgLyogYWR2YW5jZSBwb2ludGVyIHRvIG5leHQgY29sdW1uICovXG5cdFx0XHR9XG5cdFxuXHRcdFx0Ly8gUXVhbnRpemUvZGVzY2FsZSB0aGUgY29lZmZpY2llbnRzXG5cdFx0XHR2YXIgZkRDVFF1YW50O1xuXHRcdFx0Zm9yIChpPTA7IGk8STY0OyArK2kpXG5cdFx0XHR7XG5cdFx0XHRcdC8vIEFwcGx5IHRoZSBxdWFudGl6YXRpb24gYW5kIHNjYWxpbmcgZmFjdG9yICYgUm91bmQgdG8gbmVhcmVzdCBpbnRlZ2VyXG5cdFx0XHRcdGZEQ1RRdWFudCA9IGRhdGFbaV0qZmR0YmxbaV07XG5cdFx0XHRcdG91dHB1dGZEQ1RRdWFudFtpXSA9IChmRENUUXVhbnQgPiAwLjApID8gKChmRENUUXVhbnQgKyAwLjUpfDApIDogKChmRENUUXVhbnQgLSAwLjUpfDApO1xuXHRcdFx0XHQvL291dHB1dGZEQ1RRdWFudFtpXSA9IGZyb3VuZChmRENUUXVhbnQpO1xuXG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gb3V0cHV0ZkRDVFF1YW50O1xuXHRcdH1cblx0XHRcblx0XHRmdW5jdGlvbiB3cml0ZUFQUDAoKVxuXHRcdHtcblx0XHRcdHdyaXRlV29yZCgweEZGRTApOyAvLyBtYXJrZXJcblx0XHRcdHdyaXRlV29yZCgxNik7IC8vIGxlbmd0aFxuXHRcdFx0d3JpdGVCeXRlKDB4NEEpOyAvLyBKXG5cdFx0XHR3cml0ZUJ5dGUoMHg0Nik7IC8vIEZcblx0XHRcdHdyaXRlQnl0ZSgweDQ5KTsgLy8gSVxuXHRcdFx0d3JpdGVCeXRlKDB4NDYpOyAvLyBGXG5cdFx0XHR3cml0ZUJ5dGUoMCk7IC8vID0gXCJKRklGXCIsJ1xcMCdcblx0XHRcdHdyaXRlQnl0ZSgxKTsgLy8gdmVyc2lvbmhpXG5cdFx0XHR3cml0ZUJ5dGUoMSk7IC8vIHZlcnNpb25sb1xuXHRcdFx0d3JpdGVCeXRlKDApOyAvLyB4eXVuaXRzXG5cdFx0XHR3cml0ZVdvcmQoMSk7IC8vIHhkZW5zaXR5XG5cdFx0XHR3cml0ZVdvcmQoMSk7IC8vIHlkZW5zaXR5XG5cdFx0XHR3cml0ZUJ5dGUoMCk7IC8vIHRodW1ibndpZHRoXG5cdFx0XHR3cml0ZUJ5dGUoMCk7IC8vIHRodW1ibmhlaWdodFxuXHRcdH1cblx0XG5cdFx0ZnVuY3Rpb24gd3JpdGVTT0YwKHdpZHRoLCBoZWlnaHQpXG5cdFx0e1xuXHRcdFx0d3JpdGVXb3JkKDB4RkZDMCk7IC8vIG1hcmtlclxuXHRcdFx0d3JpdGVXb3JkKDE3KTsgICAvLyBsZW5ndGgsIHRydWVjb2xvciBZVVYgSlBHXG5cdFx0XHR3cml0ZUJ5dGUoOCk7ICAgIC8vIHByZWNpc2lvblxuXHRcdFx0d3JpdGVXb3JkKGhlaWdodCk7XG5cdFx0XHR3cml0ZVdvcmQod2lkdGgpO1xuXHRcdFx0d3JpdGVCeXRlKDMpOyAgICAvLyBucm9mY29tcG9uZW50c1xuXHRcdFx0d3JpdGVCeXRlKDEpOyAgICAvLyBJZFlcblx0XHRcdHdyaXRlQnl0ZSgweDExKTsgLy8gSFZZXG5cdFx0XHR3cml0ZUJ5dGUoMCk7ICAgIC8vIFFUWVxuXHRcdFx0d3JpdGVCeXRlKDIpOyAgICAvLyBJZFVcblx0XHRcdHdyaXRlQnl0ZSgweDExKTsgLy8gSFZVXG5cdFx0XHR3cml0ZUJ5dGUoMSk7ICAgIC8vIFFUVVxuXHRcdFx0d3JpdGVCeXRlKDMpOyAgICAvLyBJZFZcblx0XHRcdHdyaXRlQnl0ZSgweDExKTsgLy8gSFZWXG5cdFx0XHR3cml0ZUJ5dGUoMSk7ICAgIC8vIFFUVlxuXHRcdH1cblx0XG5cdFx0ZnVuY3Rpb24gd3JpdGVEUVQoKVxuXHRcdHtcblx0XHRcdHdyaXRlV29yZCgweEZGREIpOyAvLyBtYXJrZXJcblx0XHRcdHdyaXRlV29yZCgxMzIpO1x0ICAgLy8gbGVuZ3RoXG5cdFx0XHR3cml0ZUJ5dGUoMCk7XG5cdFx0XHRmb3IgKHZhciBpPTA7IGk8NjQ7IGkrKykge1xuXHRcdFx0XHR3cml0ZUJ5dGUoWVRhYmxlW2ldKTtcblx0XHRcdH1cblx0XHRcdHdyaXRlQnl0ZSgxKTtcblx0XHRcdGZvciAodmFyIGo9MDsgajw2NDsgaisrKSB7XG5cdFx0XHRcdHdyaXRlQnl0ZShVVlRhYmxlW2pdKTtcblx0XHRcdH1cblx0XHR9XG5cdFxuXHRcdGZ1bmN0aW9uIHdyaXRlREhUKClcblx0XHR7XG5cdFx0XHR3cml0ZVdvcmQoMHhGRkM0KTsgLy8gbWFya2VyXG5cdFx0XHR3cml0ZVdvcmQoMHgwMUEyKTsgLy8gbGVuZ3RoXG5cdFxuXHRcdFx0d3JpdGVCeXRlKDApOyAvLyBIVFlEQ2luZm9cblx0XHRcdGZvciAodmFyIGk9MDsgaTwxNjsgaSsrKSB7XG5cdFx0XHRcdHdyaXRlQnl0ZShzdGRfZGNfbHVtaW5hbmNlX25yY29kZXNbaSsxXSk7XG5cdFx0XHR9XG5cdFx0XHRmb3IgKHZhciBqPTA7IGo8PTExOyBqKyspIHtcblx0XHRcdFx0d3JpdGVCeXRlKHN0ZF9kY19sdW1pbmFuY2VfdmFsdWVzW2pdKTtcblx0XHRcdH1cblx0XG5cdFx0XHR3cml0ZUJ5dGUoMHgxMCk7IC8vIEhUWUFDaW5mb1xuXHRcdFx0Zm9yICh2YXIgaz0wOyBrPDE2OyBrKyspIHtcblx0XHRcdFx0d3JpdGVCeXRlKHN0ZF9hY19sdW1pbmFuY2VfbnJjb2Rlc1trKzFdKTtcblx0XHRcdH1cblx0XHRcdGZvciAodmFyIGw9MDsgbDw9MTYxOyBsKyspIHtcblx0XHRcdFx0d3JpdGVCeXRlKHN0ZF9hY19sdW1pbmFuY2VfdmFsdWVzW2xdKTtcblx0XHRcdH1cblx0XG5cdFx0XHR3cml0ZUJ5dGUoMSk7IC8vIEhUVURDaW5mb1xuXHRcdFx0Zm9yICh2YXIgbT0wOyBtPDE2OyBtKyspIHtcblx0XHRcdFx0d3JpdGVCeXRlKHN0ZF9kY19jaHJvbWluYW5jZV9ucmNvZGVzW20rMV0pO1xuXHRcdFx0fVxuXHRcdFx0Zm9yICh2YXIgbj0wOyBuPD0xMTsgbisrKSB7XG5cdFx0XHRcdHdyaXRlQnl0ZShzdGRfZGNfY2hyb21pbmFuY2VfdmFsdWVzW25dKTtcblx0XHRcdH1cblx0XG5cdFx0XHR3cml0ZUJ5dGUoMHgxMSk7IC8vIEhUVUFDaW5mb1xuXHRcdFx0Zm9yICh2YXIgbz0wOyBvPDE2OyBvKyspIHtcblx0XHRcdFx0d3JpdGVCeXRlKHN0ZF9hY19jaHJvbWluYW5jZV9ucmNvZGVzW28rMV0pO1xuXHRcdFx0fVxuXHRcdFx0Zm9yICh2YXIgcD0wOyBwPD0xNjE7IHArKykge1xuXHRcdFx0XHR3cml0ZUJ5dGUoc3RkX2FjX2Nocm9taW5hbmNlX3ZhbHVlc1twXSk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcblx0XHRmdW5jdGlvbiB3cml0ZVNPUygpXG5cdFx0e1xuXHRcdFx0d3JpdGVXb3JkKDB4RkZEQSk7IC8vIG1hcmtlclxuXHRcdFx0d3JpdGVXb3JkKDEyKTsgLy8gbGVuZ3RoXG5cdFx0XHR3cml0ZUJ5dGUoMyk7IC8vIG5yb2Zjb21wb25lbnRzXG5cdFx0XHR3cml0ZUJ5dGUoMSk7IC8vIElkWVxuXHRcdFx0d3JpdGVCeXRlKDApOyAvLyBIVFlcblx0XHRcdHdyaXRlQnl0ZSgyKTsgLy8gSWRVXG5cdFx0XHR3cml0ZUJ5dGUoMHgxMSk7IC8vIEhUVVxuXHRcdFx0d3JpdGVCeXRlKDMpOyAvLyBJZFZcblx0XHRcdHdyaXRlQnl0ZSgweDExKTsgLy8gSFRWXG5cdFx0XHR3cml0ZUJ5dGUoMCk7IC8vIFNzXG5cdFx0XHR3cml0ZUJ5dGUoMHgzZik7IC8vIFNlXG5cdFx0XHR3cml0ZUJ5dGUoMCk7IC8vIEJmXG5cdFx0fVxuXHRcdFxuXHRcdGZ1bmN0aW9uIHByb2Nlc3NEVShDRFUsIGZkdGJsLCBEQywgSFREQywgSFRBQyl7XG5cdFx0XHR2YXIgRU9CID0gSFRBQ1sweDAwXTtcblx0XHRcdHZhciBNMTZ6ZXJvZXMgPSBIVEFDWzB4RjBdO1xuXHRcdFx0dmFyIHBvcztcblx0XHRcdGNvbnN0IEkxNiA9IDE2O1xuXHRcdFx0Y29uc3QgSTYzID0gNjM7XG5cdFx0XHRjb25zdCBJNjQgPSA2NDtcblx0XHRcdHZhciBEVV9EQ1QgPSBmRENUUXVhbnQoQ0RVLCBmZHRibCk7XG5cdFx0XHQvL1ppZ1phZyByZW9yZGVyXG5cdFx0XHRmb3IgKHZhciBqPTA7ajxJNjQ7KytqKSB7XG5cdFx0XHRcdERVW1ppZ1phZ1tqXV09RFVfRENUW2pdO1xuXHRcdFx0fVxuXHRcdFx0dmFyIERpZmYgPSBEVVswXSAtIERDOyBEQyA9IERVWzBdO1xuXHRcdFx0Ly9FbmNvZGUgRENcblx0XHRcdGlmIChEaWZmPT0wKSB7XG5cdFx0XHRcdHdyaXRlQml0cyhIVERDWzBdKTsgLy8gRGlmZiBtaWdodCBiZSAwXG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRwb3MgPSAzMjc2NytEaWZmO1xuXHRcdFx0XHR3cml0ZUJpdHMoSFREQ1tjYXRlZ29yeVtwb3NdXSk7XG5cdFx0XHRcdHdyaXRlQml0cyhiaXRjb2RlW3Bvc10pO1xuXHRcdFx0fVxuXHRcdFx0Ly9FbmNvZGUgQUNzXG5cdFx0XHR2YXIgZW5kMHBvcyA9IDYzOyAvLyB3YXMgY29uc3QuLi4gd2hpY2ggaXMgY3Jhenlcblx0XHRcdGZvciAoOyAoZW5kMHBvcz4wKSYmKERVW2VuZDBwb3NdPT0wKTsgZW5kMHBvcy0tKSB7fTtcblx0XHRcdC8vZW5kMHBvcyA9IGZpcnN0IGVsZW1lbnQgaW4gcmV2ZXJzZSBvcmRlciAhPTBcblx0XHRcdGlmICggZW5kMHBvcyA9PSAwKSB7XG5cdFx0XHRcdHdyaXRlQml0cyhFT0IpO1xuXHRcdFx0XHRyZXR1cm4gREM7XG5cdFx0XHR9XG5cdFx0XHR2YXIgaSA9IDE7XG5cdFx0XHR2YXIgbG5nO1xuXHRcdFx0d2hpbGUgKCBpIDw9IGVuZDBwb3MgKSB7XG5cdFx0XHRcdHZhciBzdGFydHBvcyA9IGk7XG5cdFx0XHRcdGZvciAoOyAoRFVbaV09PTApICYmIChpPD1lbmQwcG9zKTsgKytpKSB7fVxuXHRcdFx0XHR2YXIgbnJ6ZXJvZXMgPSBpLXN0YXJ0cG9zO1xuXHRcdFx0XHRpZiAoIG5yemVyb2VzID49IEkxNiApIHtcblx0XHRcdFx0XHRsbmcgPSBucnplcm9lcz4+NDtcblx0XHRcdFx0XHRmb3IgKHZhciBucm1hcmtlcj0xOyBucm1hcmtlciA8PSBsbmc7ICsrbnJtYXJrZXIpXG5cdFx0XHRcdFx0XHR3cml0ZUJpdHMoTTE2emVyb2VzKTtcblx0XHRcdFx0XHRucnplcm9lcyA9IG5yemVyb2VzJjB4Rjtcblx0XHRcdFx0fVxuXHRcdFx0XHRwb3MgPSAzMjc2NytEVVtpXTtcblx0XHRcdFx0d3JpdGVCaXRzKEhUQUNbKG5yemVyb2VzPDw0KStjYXRlZ29yeVtwb3NdXSk7XG5cdFx0XHRcdHdyaXRlQml0cyhiaXRjb2RlW3Bvc10pO1xuXHRcdFx0XHRpKys7XG5cdFx0XHR9XG5cdFx0XHRpZiAoIGVuZDBwb3MgIT0gSTYzICkge1xuXHRcdFx0XHR3cml0ZUJpdHMoRU9CKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBEQztcblx0XHR9XG5cblx0XHRmdW5jdGlvbiBpbml0Q2hhckxvb2t1cFRhYmxlKCl7XG5cdFx0XHR2YXIgc2ZjYyA9IFN0cmluZy5mcm9tQ2hhckNvZGU7XG5cdFx0XHRmb3IodmFyIGk9MDsgaSA8IDI1NjsgaSsrKXsgLy8vLy8gQUNIVFVORyAvLyAyNTVcblx0XHRcdFx0Y2x0W2ldID0gc2ZjYyhpKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0XG5cdFx0dGhpcy5lbmNvZGUgPSBmdW5jdGlvbihpbWFnZSxxdWFsaXR5KSAvLyBpbWFnZSBkYXRhIG9iamVjdFxuXHRcdHtcblx0XHRcdHZhciB0aW1lX3N0YXJ0ID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG5cdFx0XHRcblx0XHRcdGlmKHF1YWxpdHkpIHNldFF1YWxpdHkocXVhbGl0eSk7XG5cdFx0XHRcblx0XHRcdC8vIEluaXRpYWxpemUgYml0IHdyaXRlclxuXHRcdFx0Ynl0ZW91dCA9IG5ldyBBcnJheSgpO1xuXHRcdFx0Ynl0ZW5ldz0wO1xuXHRcdFx0Ynl0ZXBvcz03O1xuXHRcblx0XHRcdC8vIEFkZCBKUEVHIGhlYWRlcnNcblx0XHRcdHdyaXRlV29yZCgweEZGRDgpOyAvLyBTT0lcblx0XHRcdHdyaXRlQVBQMCgpO1xuXHRcdFx0d3JpdGVEUVQoKTtcblx0XHRcdHdyaXRlU09GMChpbWFnZS53aWR0aCxpbWFnZS5oZWlnaHQpO1xuXHRcdFx0d3JpdGVESFQoKTtcblx0XHRcdHdyaXRlU09TKCk7XG5cblx0XG5cdFx0XHQvLyBFbmNvZGUgOHg4IG1hY3JvYmxvY2tzXG5cdFx0XHR2YXIgRENZPTA7XG5cdFx0XHR2YXIgRENVPTA7XG5cdFx0XHR2YXIgRENWPTA7XG5cdFx0XHRcblx0XHRcdGJ5dGVuZXc9MDtcblx0XHRcdGJ5dGVwb3M9Nztcblx0XHRcdFxuXHRcdFx0XG5cdFx0XHR0aGlzLmVuY29kZS5kaXNwbGF5TmFtZSA9IFwiX2VuY29kZV9cIjtcblxuXHRcdFx0dmFyIGltYWdlRGF0YSA9IGltYWdlLmRhdGE7XG5cdFx0XHR2YXIgd2lkdGggPSBpbWFnZS53aWR0aDtcblx0XHRcdHZhciBoZWlnaHQgPSBpbWFnZS5oZWlnaHQ7XG5cblx0XHRcdHZhciBxdWFkV2lkdGggPSB3aWR0aCo0O1xuXHRcdFx0dmFyIHRyaXBsZVdpZHRoID0gd2lkdGgqMztcblx0XHRcdFxuXHRcdFx0dmFyIHgsIHkgPSAwO1xuXHRcdFx0dmFyIHIsIGcsIGI7XG5cdFx0XHR2YXIgc3RhcnQscCwgY29sLHJvdyxwb3M7XG5cdFx0XHR3aGlsZSh5IDwgaGVpZ2h0KXtcblx0XHRcdFx0eCA9IDA7XG5cdFx0XHRcdHdoaWxlKHggPCBxdWFkV2lkdGgpe1xuXHRcdFx0XHRzdGFydCA9IHF1YWRXaWR0aCAqIHkgKyB4O1xuXHRcdFx0XHRwID0gc3RhcnQ7XG5cdFx0XHRcdGNvbCA9IC0xO1xuXHRcdFx0XHRyb3cgPSAwO1xuXHRcdFx0XHRcblx0XHRcdFx0Zm9yKHBvcz0wOyBwb3MgPCA2NDsgcG9zKyspe1xuXHRcdFx0XHRcdHJvdyA9IHBvcyA+PiAzOy8vIC84XG5cdFx0XHRcdFx0Y29sID0gKCBwb3MgJiA3ICkgKiA0OyAvLyAlOFxuXHRcdFx0XHRcdHAgPSBzdGFydCArICggcm93ICogcXVhZFdpZHRoICkgKyBjb2w7XHRcdFxuXHRcdFx0XHRcdFxuXHRcdFx0XHRcdGlmKHkrcm93ID49IGhlaWdodCl7IC8vIHBhZGRpbmcgYm90dG9tXG5cdFx0XHRcdFx0XHRwLT0gKHF1YWRXaWR0aCooeSsxK3Jvdy1oZWlnaHQpKTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRpZih4K2NvbCA+PSBxdWFkV2lkdGgpeyAvLyBwYWRkaW5nIHJpZ2h0XHRcblx0XHRcdFx0XHRcdHAtPSAoKHgrY29sKSAtIHF1YWRXaWR0aCArNClcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XG5cdFx0XHRcdFx0ciA9IGltYWdlRGF0YVsgcCsrIF07XG5cdFx0XHRcdFx0ZyA9IGltYWdlRGF0YVsgcCsrIF07XG5cdFx0XHRcdFx0YiA9IGltYWdlRGF0YVsgcCsrIF07XG5cdFx0XHRcdFx0XG5cdFx0XHRcdFx0XG5cdFx0XHRcdFx0LyogLy8gY2FsY3VsYXRlIFlVViB2YWx1ZXMgZHluYW1pY2FsbHlcblx0XHRcdFx0XHRZRFVbcG9zXT0oKCggMC4yOTkwMCkqcisoIDAuNTg3MDApKmcrKCAwLjExNDAwKSpiKSktMTI4OyAvLy0weDgwXG5cdFx0XHRcdFx0VURVW3Bvc109KCgoLTAuMTY4NzQpKnIrKC0wLjMzMTI2KSpnKyggMC41MDAwMCkqYikpO1xuXHRcdFx0XHRcdFZEVVtwb3NdPSgoKCAwLjUwMDAwKSpyKygtMC40MTg2OSkqZysoLTAuMDgxMzEpKmIpKTtcblx0XHRcdFx0XHQqL1xuXHRcdFx0XHRcdFxuXHRcdFx0XHRcdC8vIHVzZSBsb29rdXAgdGFibGUgKHNsaWdodGx5IGZhc3Rlcilcblx0XHRcdFx0XHRZRFVbcG9zXSA9ICgoUkdCX1lVVl9UQUJMRVtyXSAgICAgICAgICAgICArIFJHQl9ZVVZfVEFCTEVbKGcgKyAgMjU2KT4+MF0gKyBSR0JfWVVWX1RBQkxFWyhiICsgIDUxMik+PjBdKSA+PiAxNiktMTI4O1xuXHRcdFx0XHRcdFVEVVtwb3NdID0gKChSR0JfWVVWX1RBQkxFWyhyICsgIDc2OCk+PjBdICsgUkdCX1lVVl9UQUJMRVsoZyArIDEwMjQpPj4wXSArIFJHQl9ZVVZfVEFCTEVbKGIgKyAxMjgwKT4+MF0pID4+IDE2KS0xMjg7XG5cdFx0XHRcdFx0VkRVW3Bvc10gPSAoKFJHQl9ZVVZfVEFCTEVbKHIgKyAxMjgwKT4+MF0gKyBSR0JfWVVWX1RBQkxFWyhnICsgMTUzNik+PjBdICsgUkdCX1lVVl9UQUJMRVsoYiArIDE3OTIpPj4wXSkgPj4gMTYpLTEyODtcblxuXHRcdFx0XHR9XG5cdFx0XHRcdFxuXHRcdFx0XHREQ1kgPSBwcm9jZXNzRFUoWURVLCBmZHRibF9ZLCBEQ1ksIFlEQ19IVCwgWUFDX0hUKTtcblx0XHRcdFx0RENVID0gcHJvY2Vzc0RVKFVEVSwgZmR0YmxfVVYsIERDVSwgVVZEQ19IVCwgVVZBQ19IVCk7XG5cdFx0XHRcdERDViA9IHByb2Nlc3NEVShWRFUsIGZkdGJsX1VWLCBEQ1YsIFVWRENfSFQsIFVWQUNfSFQpO1xuXHRcdFx0XHR4Kz0zMjtcblx0XHRcdFx0fVxuXHRcdFx0XHR5Kz04O1xuXHRcdFx0fVxuXHRcdFx0XG5cdFx0XHRcblx0XHRcdC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblx0XG5cdFx0XHQvLyBEbyB0aGUgYml0IGFsaWdubWVudCBvZiB0aGUgRU9JIG1hcmtlclxuXHRcdFx0aWYgKCBieXRlcG9zID49IDAgKSB7XG5cdFx0XHRcdHZhciBmaWxsYml0cyA9IFtdO1xuXHRcdFx0XHRmaWxsYml0c1sxXSA9IGJ5dGVwb3MrMTtcblx0XHRcdFx0ZmlsbGJpdHNbMF0gPSAoMTw8KGJ5dGVwb3MrMSkpLTE7XG5cdFx0XHRcdHdyaXRlQml0cyhmaWxsYml0cyk7XG5cdFx0XHR9XG5cdFxuXHRcdFx0d3JpdGVXb3JkKDB4RkZEOSk7IC8vRU9JXG5cbiAgICAgIC8vcmV0dXJuIG5ldyBVaW50OEFycmF5KGJ5dGVvdXQpO1xuICAgICAgcmV0dXJuIG5ldyBCdWZmZXIoYnl0ZW91dCk7XG5cblx0XHRcdHZhciBqcGVnRGF0YVVyaSA9ICdkYXRhOmltYWdlL2pwZWc7YmFzZTY0LCcgKyBidG9hKGJ5dGVvdXQuam9pbignJykpO1xuXHRcdFx0XG5cdFx0XHRieXRlb3V0ID0gW107XG5cdFx0XHRcblx0XHRcdC8vIGJlbmNobWFya2luZ1xuXHRcdFx0dmFyIGR1cmF0aW9uID0gbmV3IERhdGUoKS5nZXRUaW1lKCkgLSB0aW1lX3N0YXJ0O1xuICAgIFx0XHQvL2NvbnNvbGUubG9nKCdFbmNvZGluZyB0aW1lOiAnKyBkdXJhdGlvbiArICdtcycpO1xuICAgIFx0XHQvL1xuXHRcdFx0XG5cdFx0XHRyZXR1cm4ganBlZ0RhdGFVcmlcdFx0XHRcblx0fVxuXHRcblx0ZnVuY3Rpb24gc2V0UXVhbGl0eShxdWFsaXR5KXtcblx0XHRpZiAocXVhbGl0eSA8PSAwKSB7XG5cdFx0XHRxdWFsaXR5ID0gMTtcblx0XHR9XG5cdFx0aWYgKHF1YWxpdHkgPiAxMDApIHtcblx0XHRcdHF1YWxpdHkgPSAxMDA7XG5cdFx0fVxuXHRcdFxuXHRcdGlmKGN1cnJlbnRRdWFsaXR5ID09IHF1YWxpdHkpIHJldHVybiAvLyBkb24ndCByZWNhbGMgaWYgdW5jaGFuZ2VkXG5cdFx0XG5cdFx0dmFyIHNmID0gMDtcblx0XHRpZiAocXVhbGl0eSA8IDUwKSB7XG5cdFx0XHRzZiA9IE1hdGguZmxvb3IoNTAwMCAvIHF1YWxpdHkpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRzZiA9IE1hdGguZmxvb3IoMjAwIC0gcXVhbGl0eSoyKTtcblx0XHR9XG5cdFx0XG5cdFx0aW5pdFF1YW50VGFibGVzKHNmKTtcblx0XHRjdXJyZW50UXVhbGl0eSA9IHF1YWxpdHk7XG5cdFx0Ly9jb25zb2xlLmxvZygnUXVhbGl0eSBzZXQgdG86ICcrcXVhbGl0eSArJyUnKTtcblx0fVxuXHRcblx0ZnVuY3Rpb24gaW5pdCgpe1xuXHRcdHZhciB0aW1lX3N0YXJ0ID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG5cdFx0aWYoIXF1YWxpdHkpIHF1YWxpdHkgPSA1MDtcblx0XHQvLyBDcmVhdGUgdGFibGVzXG5cdFx0aW5pdENoYXJMb29rdXBUYWJsZSgpXG5cdFx0aW5pdEh1ZmZtYW5UYmwoKTtcblx0XHRpbml0Q2F0ZWdvcnlOdW1iZXIoKTtcblx0XHRpbml0UkdCWVVWVGFibGUoKTtcblx0XHRcblx0XHRzZXRRdWFsaXR5KHF1YWxpdHkpO1xuXHRcdHZhciBkdXJhdGlvbiA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpIC0gdGltZV9zdGFydDtcbiAgICBcdC8vY29uc29sZS5sb2coJ0luaXRpYWxpemF0aW9uICcrIGR1cmF0aW9uICsgJ21zJyk7XG5cdH1cblx0XG5cdGluaXQoKTtcblx0XG59O1xubW9kdWxlLmV4cG9ydHMgPSBlbmNvZGU7XG5cbmZ1bmN0aW9uIGVuY29kZShpbWdEYXRhLCBxdSkge1xuICBpZiAodHlwZW9mIHF1ID09PSAndW5kZWZpbmVkJykgcXUgPSA1MDtcbiAgdmFyIGVuY29kZXIgPSBuZXcgSlBFR0VuY29kZXIocXUpO1xuXHR2YXIgZGF0YSA9IGVuY29kZXIuZW5jb2RlKGltZ0RhdGEsIHF1KTtcbiAgcmV0dXJuIHtcbiAgICBkYXRhOiBkYXRhLFxuICAgIHdpZHRoOiBpbWdEYXRhLndpZHRoLFxuICAgIGhlaWdodDogaW1nRGF0YS5oZWlnaHRcbiAgfTtcbn1cblxuLy8gaGVscGVyIGZ1bmN0aW9uIHRvIGdldCB0aGUgaW1hZ2VEYXRhIG9mIGFuIGV4aXN0aW5nIGltYWdlIG9uIHRoZSBjdXJyZW50IHBhZ2UuXG5mdW5jdGlvbiBnZXRJbWFnZURhdGFGcm9tSW1hZ2UoaWRPckVsZW1lbnQpe1xuXHR2YXIgdGhlSW1nID0gKHR5cGVvZihpZE9yRWxlbWVudCk9PSdzdHJpbmcnKT8gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWRPckVsZW1lbnQpOmlkT3JFbGVtZW50O1xuXHR2YXIgY3ZzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7XG5cdGN2cy53aWR0aCA9IHRoZUltZy53aWR0aDtcblx0Y3ZzLmhlaWdodCA9IHRoZUltZy5oZWlnaHQ7XG5cdHZhciBjdHggPSBjdnMuZ2V0Q29udGV4dChcIjJkXCIpO1xuXHRjdHguZHJhd0ltYWdlKHRoZUltZywwLDApO1xuXHRcblx0cmV0dXJuIChjdHguZ2V0SW1hZ2VEYXRhKDAsIDAsIGN2cy53aWR0aCwgY3ZzLmhlaWdodCkpO1xufVxuIiwidmFyIF9mc1xudHJ5IHtcbiAgX2ZzID0gcmVxdWlyZSgnZ3JhY2VmdWwtZnMnKVxufSBjYXRjaCAoXykge1xuICBfZnMgPSByZXF1aXJlKCdmcycpXG59XG5cbmZ1bmN0aW9uIHJlYWRGaWxlIChmaWxlLCBvcHRpb25zLCBjYWxsYmFjaykge1xuICBpZiAoY2FsbGJhY2sgPT0gbnVsbCkge1xuICAgIGNhbGxiYWNrID0gb3B0aW9uc1xuICAgIG9wdGlvbnMgPSB7fVxuICB9XG5cbiAgaWYgKHR5cGVvZiBvcHRpb25zID09PSAnc3RyaW5nJykge1xuICAgIG9wdGlvbnMgPSB7ZW5jb2Rpbmc6IG9wdGlvbnN9XG4gIH1cblxuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fVxuICB2YXIgZnMgPSBvcHRpb25zLmZzIHx8IF9mc1xuXG4gIHZhciBzaG91bGRUaHJvdyA9IHRydWVcbiAgLy8gRE8gTk9UIFVTRSAncGFzc1BhcnNpbmdFcnJvcnMnIFRIRSBOQU1FIFdJTEwgQ0hBTkdFISEhLCB1c2UgJ3Rocm93cycgaW5zdGVhZFxuICBpZiAoJ3Bhc3NQYXJzaW5nRXJyb3JzJyBpbiBvcHRpb25zKSB7XG4gICAgc2hvdWxkVGhyb3cgPSBvcHRpb25zLnBhc3NQYXJzaW5nRXJyb3JzXG4gIH0gZWxzZSBpZiAoJ3Rocm93cycgaW4gb3B0aW9ucykge1xuICAgIHNob3VsZFRocm93ID0gb3B0aW9ucy50aHJvd3NcbiAgfVxuXG4gIGZzLnJlYWRGaWxlKGZpbGUsIG9wdGlvbnMsIGZ1bmN0aW9uIChlcnIsIGRhdGEpIHtcbiAgICBpZiAoZXJyKSByZXR1cm4gY2FsbGJhY2soZXJyKVxuXG4gICAgZGF0YSA9IHN0cmlwQm9tKGRhdGEpXG5cbiAgICB2YXIgb2JqXG4gICAgdHJ5IHtcbiAgICAgIG9iaiA9IEpTT04ucGFyc2UoZGF0YSwgb3B0aW9ucyA/IG9wdGlvbnMucmV2aXZlciA6IG51bGwpXG4gICAgfSBjYXRjaCAoZXJyMikge1xuICAgICAgaWYgKHNob3VsZFRocm93KSB7XG4gICAgICAgIGVycjIubWVzc2FnZSA9IGZpbGUgKyAnOiAnICsgZXJyMi5tZXNzYWdlXG4gICAgICAgIHJldHVybiBjYWxsYmFjayhlcnIyKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGNhbGxiYWNrKG51bGwsIG51bGwpXG4gICAgICB9XG4gICAgfVxuXG4gICAgY2FsbGJhY2sobnVsbCwgb2JqKVxuICB9KVxufVxuXG5mdW5jdGlvbiByZWFkRmlsZVN5bmMgKGZpbGUsIG9wdGlvbnMpIHtcbiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge31cbiAgaWYgKHR5cGVvZiBvcHRpb25zID09PSAnc3RyaW5nJykge1xuICAgIG9wdGlvbnMgPSB7ZW5jb2Rpbmc6IG9wdGlvbnN9XG4gIH1cblxuICB2YXIgZnMgPSBvcHRpb25zLmZzIHx8IF9mc1xuXG4gIHZhciBzaG91bGRUaHJvdyA9IHRydWVcbiAgLy8gRE8gTk9UIFVTRSAncGFzc1BhcnNpbmdFcnJvcnMnIFRIRSBOQU1FIFdJTEwgQ0hBTkdFISEhLCB1c2UgJ3Rocm93cycgaW5zdGVhZFxuICBpZiAoJ3Bhc3NQYXJzaW5nRXJyb3JzJyBpbiBvcHRpb25zKSB7XG4gICAgc2hvdWxkVGhyb3cgPSBvcHRpb25zLnBhc3NQYXJzaW5nRXJyb3JzXG4gIH0gZWxzZSBpZiAoJ3Rocm93cycgaW4gb3B0aW9ucykge1xuICAgIHNob3VsZFRocm93ID0gb3B0aW9ucy50aHJvd3NcbiAgfVxuXG4gIHZhciBjb250ZW50ID0gZnMucmVhZEZpbGVTeW5jKGZpbGUsIG9wdGlvbnMpXG4gIGNvbnRlbnQgPSBzdHJpcEJvbShjb250ZW50KVxuXG4gIHRyeSB7XG4gICAgcmV0dXJuIEpTT04ucGFyc2UoY29udGVudCwgb3B0aW9ucy5yZXZpdmVyKVxuICB9IGNhdGNoIChlcnIpIHtcbiAgICBpZiAoc2hvdWxkVGhyb3cpIHtcbiAgICAgIGVyci5tZXNzYWdlID0gZmlsZSArICc6ICcgKyBlcnIubWVzc2FnZVxuICAgICAgdGhyb3cgZXJyXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHdyaXRlRmlsZSAoZmlsZSwgb2JqLCBvcHRpb25zLCBjYWxsYmFjaykge1xuICBpZiAoY2FsbGJhY2sgPT0gbnVsbCkge1xuICAgIGNhbGxiYWNrID0gb3B0aW9uc1xuICAgIG9wdGlvbnMgPSB7fVxuICB9XG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9XG4gIHZhciBmcyA9IG9wdGlvbnMuZnMgfHwgX2ZzXG5cbiAgdmFyIHNwYWNlcyA9IHR5cGVvZiBvcHRpb25zID09PSAnb2JqZWN0JyAmJiBvcHRpb25zICE9PSBudWxsXG4gICAgPyAnc3BhY2VzJyBpbiBvcHRpb25zXG4gICAgPyBvcHRpb25zLnNwYWNlcyA6IHRoaXMuc3BhY2VzXG4gICAgOiB0aGlzLnNwYWNlc1xuXG4gIHZhciBzdHIgPSAnJ1xuICB0cnkge1xuICAgIHN0ciA9IEpTT04uc3RyaW5naWZ5KG9iaiwgb3B0aW9ucyA/IG9wdGlvbnMucmVwbGFjZXIgOiBudWxsLCBzcGFjZXMpICsgJ1xcbidcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgaWYgKGNhbGxiYWNrKSByZXR1cm4gY2FsbGJhY2soZXJyLCBudWxsKVxuICB9XG5cbiAgZnMud3JpdGVGaWxlKGZpbGUsIHN0ciwgb3B0aW9ucywgY2FsbGJhY2spXG59XG5cbmZ1bmN0aW9uIHdyaXRlRmlsZVN5bmMgKGZpbGUsIG9iaiwgb3B0aW9ucykge1xuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fVxuICB2YXIgZnMgPSBvcHRpb25zLmZzIHx8IF9mc1xuXG4gIHZhciBzcGFjZXMgPSB0eXBlb2Ygb3B0aW9ucyA9PT0gJ29iamVjdCcgJiYgb3B0aW9ucyAhPT0gbnVsbFxuICAgID8gJ3NwYWNlcycgaW4gb3B0aW9uc1xuICAgID8gb3B0aW9ucy5zcGFjZXMgOiB0aGlzLnNwYWNlc1xuICAgIDogdGhpcy5zcGFjZXNcblxuICB2YXIgc3RyID0gSlNPTi5zdHJpbmdpZnkob2JqLCBvcHRpb25zLnJlcGxhY2VyLCBzcGFjZXMpICsgJ1xcbidcbiAgLy8gbm90IHN1cmUgaWYgZnMud3JpdGVGaWxlU3luYyByZXR1cm5zIGFueXRoaW5nLCBidXQganVzdCBpbiBjYXNlXG4gIHJldHVybiBmcy53cml0ZUZpbGVTeW5jKGZpbGUsIHN0ciwgb3B0aW9ucylcbn1cblxuZnVuY3Rpb24gc3RyaXBCb20gKGNvbnRlbnQpIHtcbiAgLy8gd2UgZG8gdGhpcyBiZWNhdXNlIEpTT04ucGFyc2Ugd291bGQgY29udmVydCBpdCB0byBhIHV0Zjggc3RyaW5nIGlmIGVuY29kaW5nIHdhc24ndCBzcGVjaWZpZWRcbiAgaWYgKEJ1ZmZlci5pc0J1ZmZlcihjb250ZW50KSkgY29udGVudCA9IGNvbnRlbnQudG9TdHJpbmcoJ3V0ZjgnKVxuICBjb250ZW50ID0gY29udGVudC5yZXBsYWNlKC9eXFx1RkVGRi8sICcnKVxuICByZXR1cm4gY29udGVudFxufVxuXG52YXIganNvbmZpbGUgPSB7XG4gIHNwYWNlczogbnVsbCxcbiAgcmVhZEZpbGU6IHJlYWRGaWxlLFxuICByZWFkRmlsZVN5bmM6IHJlYWRGaWxlU3luYyxcbiAgd3JpdGVGaWxlOiB3cml0ZUZpbGUsXG4gIHdyaXRlRmlsZVN5bmM6IHdyaXRlRmlsZVN5bmNcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBqc29uZmlsZVxuIiwiOyhmdW5jdGlvbiAoKSB7IC8vIGNsb3N1cmUgZm9yIHdlYiBicm93c2Vyc1xuXG5pZiAodHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcgJiYgbW9kdWxlLmV4cG9ydHMpIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSBMUlVDYWNoZVxufSBlbHNlIHtcbiAgLy8ganVzdCBzZXQgdGhlIGdsb2JhbCBmb3Igbm9uLW5vZGUgcGxhdGZvcm1zLlxuICB0aGlzLkxSVUNhY2hlID0gTFJVQ2FjaGVcbn1cblxuZnVuY3Rpb24gaE9QIChvYmosIGtleSkge1xuICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KVxufVxuXG5mdW5jdGlvbiBuYWl2ZUxlbmd0aCAoKSB7IHJldHVybiAxIH1cblxudmFyIGRpZFR5cGVXYXJuaW5nID0gZmFsc2VcbmZ1bmN0aW9uIHR5cGVDaGVja0tleShrZXkpIHtcbiAgaWYgKCFkaWRUeXBlV2FybmluZyAmJiB0eXBlb2Yga2V5ICE9PSAnc3RyaW5nJyAmJiB0eXBlb2Yga2V5ICE9PSAnbnVtYmVyJykge1xuICAgIGRpZFR5cGVXYXJuaW5nID0gdHJ1ZVxuICAgIGNvbnNvbGUuZXJyb3IobmV3IFR5cGVFcnJvcihcIkxSVToga2V5IG11c3QgYmUgYSBzdHJpbmcgb3IgbnVtYmVyLiBBbG1vc3QgY2VydGFpbmx5IGEgYnVnISBcIiArIHR5cGVvZiBrZXkpLnN0YWNrKVxuICB9XG59XG5cbmZ1bmN0aW9uIExSVUNhY2hlIChvcHRpb25zKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBMUlVDYWNoZSkpXG4gICAgcmV0dXJuIG5ldyBMUlVDYWNoZShvcHRpb25zKVxuXG4gIGlmICh0eXBlb2Ygb3B0aW9ucyA9PT0gJ251bWJlcicpXG4gICAgb3B0aW9ucyA9IHsgbWF4OiBvcHRpb25zIH1cblxuICBpZiAoIW9wdGlvbnMpXG4gICAgb3B0aW9ucyA9IHt9XG5cbiAgdGhpcy5fbWF4ID0gb3B0aW9ucy5tYXhcbiAgLy8gS2luZCBvZiB3ZWlyZCB0byBoYXZlIGEgZGVmYXVsdCBtYXggb2YgSW5maW5pdHksIGJ1dCBvaCB3ZWxsLlxuICBpZiAoIXRoaXMuX21heCB8fCAhKHR5cGVvZiB0aGlzLl9tYXggPT09IFwibnVtYmVyXCIpIHx8IHRoaXMuX21heCA8PSAwIClcbiAgICB0aGlzLl9tYXggPSBJbmZpbml0eVxuXG4gIHRoaXMuX2xlbmd0aENhbGN1bGF0b3IgPSBvcHRpb25zLmxlbmd0aCB8fCBuYWl2ZUxlbmd0aFxuICBpZiAodHlwZW9mIHRoaXMuX2xlbmd0aENhbGN1bGF0b3IgIT09IFwiZnVuY3Rpb25cIilcbiAgICB0aGlzLl9sZW5ndGhDYWxjdWxhdG9yID0gbmFpdmVMZW5ndGhcblxuICB0aGlzLl9hbGxvd1N0YWxlID0gb3B0aW9ucy5zdGFsZSB8fCBmYWxzZVxuICB0aGlzLl9tYXhBZ2UgPSBvcHRpb25zLm1heEFnZSB8fCBudWxsXG4gIHRoaXMuX2Rpc3Bvc2UgPSBvcHRpb25zLmRpc3Bvc2VcbiAgdGhpcy5yZXNldCgpXG59XG5cbi8vIHJlc2l6ZSB0aGUgY2FjaGUgd2hlbiB0aGUgbWF4IGNoYW5nZXMuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoTFJVQ2FjaGUucHJvdG90eXBlLCBcIm1heFwiLFxuICB7IHNldCA6IGZ1bmN0aW9uIChtTCkge1xuICAgICAgaWYgKCFtTCB8fCAhKHR5cGVvZiBtTCA9PT0gXCJudW1iZXJcIikgfHwgbUwgPD0gMCApIG1MID0gSW5maW5pdHlcbiAgICAgIHRoaXMuX21heCA9IG1MXG4gICAgICBpZiAodGhpcy5fbGVuZ3RoID4gdGhpcy5fbWF4KSB0cmltKHRoaXMpXG4gICAgfVxuICAsIGdldCA6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMuX21heCB9XG4gICwgZW51bWVyYWJsZSA6IHRydWVcbiAgfSlcblxuLy8gcmVzaXplIHRoZSBjYWNoZSB3aGVuIHRoZSBsZW5ndGhDYWxjdWxhdG9yIGNoYW5nZXMuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoTFJVQ2FjaGUucHJvdG90eXBlLCBcImxlbmd0aENhbGN1bGF0b3JcIixcbiAgeyBzZXQgOiBmdW5jdGlvbiAobEMpIHtcbiAgICAgIGlmICh0eXBlb2YgbEMgIT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICB0aGlzLl9sZW5ndGhDYWxjdWxhdG9yID0gbmFpdmVMZW5ndGhcbiAgICAgICAgdGhpcy5fbGVuZ3RoID0gdGhpcy5faXRlbUNvdW50XG4gICAgICAgIGZvciAodmFyIGtleSBpbiB0aGlzLl9jYWNoZSkge1xuICAgICAgICAgIHRoaXMuX2NhY2hlW2tleV0ubGVuZ3RoID0gMVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9sZW5ndGhDYWxjdWxhdG9yID0gbENcbiAgICAgICAgdGhpcy5fbGVuZ3RoID0gMFxuICAgICAgICBmb3IgKHZhciBrZXkgaW4gdGhpcy5fY2FjaGUpIHtcbiAgICAgICAgICB0aGlzLl9jYWNoZVtrZXldLmxlbmd0aCA9IHRoaXMuX2xlbmd0aENhbGN1bGF0b3IodGhpcy5fY2FjaGVba2V5XS52YWx1ZSlcbiAgICAgICAgICB0aGlzLl9sZW5ndGggKz0gdGhpcy5fY2FjaGVba2V5XS5sZW5ndGhcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5fbGVuZ3RoID4gdGhpcy5fbWF4KSB0cmltKHRoaXMpXG4gICAgfVxuICAsIGdldCA6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMuX2xlbmd0aENhbGN1bGF0b3IgfVxuICAsIGVudW1lcmFibGUgOiB0cnVlXG4gIH0pXG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShMUlVDYWNoZS5wcm90b3R5cGUsIFwibGVuZ3RoXCIsXG4gIHsgZ2V0IDogZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy5fbGVuZ3RoIH1cbiAgLCBlbnVtZXJhYmxlIDogdHJ1ZVxuICB9KVxuXG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShMUlVDYWNoZS5wcm90b3R5cGUsIFwiaXRlbUNvdW50XCIsXG4gIHsgZ2V0IDogZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy5faXRlbUNvdW50IH1cbiAgLCBlbnVtZXJhYmxlIDogdHJ1ZVxuICB9KVxuXG5MUlVDYWNoZS5wcm90b3R5cGUuZm9yRWFjaCA9IGZ1bmN0aW9uIChmbiwgdGhpc3ApIHtcbiAgdGhpc3AgPSB0aGlzcCB8fCB0aGlzXG4gIHZhciBpID0gMFxuICB2YXIgaXRlbUNvdW50ID0gdGhpcy5faXRlbUNvdW50XG5cbiAgZm9yICh2YXIgayA9IHRoaXMuX21ydSAtIDE7IGsgPj0gMCAmJiBpIDwgaXRlbUNvdW50OyBrLS0pIGlmICh0aGlzLl9scnVMaXN0W2tdKSB7XG4gICAgaSsrXG4gICAgdmFyIGhpdCA9IHRoaXMuX2xydUxpc3Rba11cbiAgICBpZiAoaXNTdGFsZSh0aGlzLCBoaXQpKSB7XG4gICAgICBkZWwodGhpcywgaGl0KVxuICAgICAgaWYgKCF0aGlzLl9hbGxvd1N0YWxlKSBoaXQgPSB1bmRlZmluZWRcbiAgICB9XG4gICAgaWYgKGhpdCkge1xuICAgICAgZm4uY2FsbCh0aGlzcCwgaGl0LnZhbHVlLCBoaXQua2V5LCB0aGlzKVxuICAgIH1cbiAgfVxufVxuXG5MUlVDYWNoZS5wcm90b3R5cGUua2V5cyA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGtleXMgPSBuZXcgQXJyYXkodGhpcy5faXRlbUNvdW50KVxuICB2YXIgaSA9IDBcbiAgZm9yICh2YXIgayA9IHRoaXMuX21ydSAtIDE7IGsgPj0gMCAmJiBpIDwgdGhpcy5faXRlbUNvdW50OyBrLS0pIGlmICh0aGlzLl9scnVMaXN0W2tdKSB7XG4gICAgdmFyIGhpdCA9IHRoaXMuX2xydUxpc3Rba11cbiAgICBrZXlzW2krK10gPSBoaXQua2V5XG4gIH1cbiAgcmV0dXJuIGtleXNcbn1cblxuTFJVQ2FjaGUucHJvdG90eXBlLnZhbHVlcyA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIHZhbHVlcyA9IG5ldyBBcnJheSh0aGlzLl9pdGVtQ291bnQpXG4gIHZhciBpID0gMFxuICBmb3IgKHZhciBrID0gdGhpcy5fbXJ1IC0gMTsgayA+PSAwICYmIGkgPCB0aGlzLl9pdGVtQ291bnQ7IGstLSkgaWYgKHRoaXMuX2xydUxpc3Rba10pIHtcbiAgICB2YXIgaGl0ID0gdGhpcy5fbHJ1TGlzdFtrXVxuICAgIHZhbHVlc1tpKytdID0gaGl0LnZhbHVlXG4gIH1cbiAgcmV0dXJuIHZhbHVlc1xufVxuXG5MUlVDYWNoZS5wcm90b3R5cGUucmVzZXQgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICh0aGlzLl9kaXNwb3NlICYmIHRoaXMuX2NhY2hlKSB7XG4gICAgZm9yICh2YXIgayBpbiB0aGlzLl9jYWNoZSkge1xuICAgICAgdGhpcy5fZGlzcG9zZShrLCB0aGlzLl9jYWNoZVtrXS52YWx1ZSlcbiAgICB9XG4gIH1cblxuICB0aGlzLl9jYWNoZSA9IE9iamVjdC5jcmVhdGUobnVsbCkgLy8gaGFzaCBvZiBpdGVtcyBieSBrZXlcbiAgdGhpcy5fbHJ1TGlzdCA9IE9iamVjdC5jcmVhdGUobnVsbCkgLy8gbGlzdCBvZiBpdGVtcyBpbiBvcmRlciBvZiB1c2UgcmVjZW5jeVxuICB0aGlzLl9tcnUgPSAwIC8vIG1vc3QgcmVjZW50bHkgdXNlZFxuICB0aGlzLl9scnUgPSAwIC8vIGxlYXN0IHJlY2VudGx5IHVzZWRcbiAgdGhpcy5fbGVuZ3RoID0gMCAvLyBudW1iZXIgb2YgaXRlbXMgaW4gdGhlIGxpc3RcbiAgdGhpcy5faXRlbUNvdW50ID0gMFxufVxuXG5MUlVDYWNoZS5wcm90b3R5cGUuZHVtcCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGFyciA9IFtdXG4gIHZhciBpID0gMFxuXG4gIGZvciAodmFyIGsgPSB0aGlzLl9tcnUgLSAxOyBrID49IDAgJiYgaSA8IHRoaXMuX2l0ZW1Db3VudDsgay0tKSBpZiAodGhpcy5fbHJ1TGlzdFtrXSkge1xuICAgIHZhciBoaXQgPSB0aGlzLl9scnVMaXN0W2tdXG4gICAgaWYgKCFpc1N0YWxlKHRoaXMsIGhpdCkpIHtcbiAgICAgIC8vRG8gbm90IHN0b3JlIHN0YWxlZCBoaXRzXG4gICAgICArK2lcbiAgICAgIGFyci5wdXNoKHtcbiAgICAgICAgazogaGl0LmtleSxcbiAgICAgICAgdjogaGl0LnZhbHVlLFxuICAgICAgICBlOiBoaXQubm93ICsgKGhpdC5tYXhBZ2UgfHwgMClcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuICAvL2FyciBoYXMgdGhlIG1vc3QgcmVhZCBmaXJzdFxuICByZXR1cm4gYXJyXG59XG5cbkxSVUNhY2hlLnByb3RvdHlwZS5kdW1wTHJ1ID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5fbHJ1TGlzdFxufVxuXG5MUlVDYWNoZS5wcm90b3R5cGUuc2V0ID0gZnVuY3Rpb24gKGtleSwgdmFsdWUsIG1heEFnZSkge1xuICBtYXhBZ2UgPSBtYXhBZ2UgfHwgdGhpcy5fbWF4QWdlXG4gIHR5cGVDaGVja0tleShrZXkpXG5cbiAgdmFyIG5vdyA9IG1heEFnZSA/IERhdGUubm93KCkgOiAwXG4gIHZhciBsZW4gPSB0aGlzLl9sZW5ndGhDYWxjdWxhdG9yKHZhbHVlKVxuXG4gIGlmIChoT1AodGhpcy5fY2FjaGUsIGtleSkpIHtcbiAgICBpZiAobGVuID4gdGhpcy5fbWF4KSB7XG4gICAgICBkZWwodGhpcywgdGhpcy5fY2FjaGVba2V5XSlcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cbiAgICAvLyBkaXNwb3NlIG9mIHRoZSBvbGQgb25lIGJlZm9yZSBvdmVyd3JpdGluZ1xuICAgIGlmICh0aGlzLl9kaXNwb3NlKVxuICAgICAgdGhpcy5fZGlzcG9zZShrZXksIHRoaXMuX2NhY2hlW2tleV0udmFsdWUpXG5cbiAgICB0aGlzLl9jYWNoZVtrZXldLm5vdyA9IG5vd1xuICAgIHRoaXMuX2NhY2hlW2tleV0ubWF4QWdlID0gbWF4QWdlXG4gICAgdGhpcy5fY2FjaGVba2V5XS52YWx1ZSA9IHZhbHVlXG4gICAgdGhpcy5fbGVuZ3RoICs9IChsZW4gLSB0aGlzLl9jYWNoZVtrZXldLmxlbmd0aClcbiAgICB0aGlzLl9jYWNoZVtrZXldLmxlbmd0aCA9IGxlblxuICAgIHRoaXMuZ2V0KGtleSlcblxuICAgIGlmICh0aGlzLl9sZW5ndGggPiB0aGlzLl9tYXgpXG4gICAgICB0cmltKHRoaXMpXG5cbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgdmFyIGhpdCA9IG5ldyBFbnRyeShrZXksIHZhbHVlLCB0aGlzLl9tcnUrKywgbGVuLCBub3csIG1heEFnZSlcblxuICAvLyBvdmVyc2l6ZWQgb2JqZWN0cyBmYWxsIG91dCBvZiBjYWNoZSBhdXRvbWF0aWNhbGx5LlxuICBpZiAoaGl0Lmxlbmd0aCA+IHRoaXMuX21heCkge1xuICAgIGlmICh0aGlzLl9kaXNwb3NlKSB0aGlzLl9kaXNwb3NlKGtleSwgdmFsdWUpXG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICB0aGlzLl9sZW5ndGggKz0gaGl0Lmxlbmd0aFxuICB0aGlzLl9scnVMaXN0W2hpdC5sdV0gPSB0aGlzLl9jYWNoZVtrZXldID0gaGl0XG4gIHRoaXMuX2l0ZW1Db3VudCArK1xuXG4gIGlmICh0aGlzLl9sZW5ndGggPiB0aGlzLl9tYXgpXG4gICAgdHJpbSh0aGlzKVxuXG4gIHJldHVybiB0cnVlXG59XG5cbkxSVUNhY2hlLnByb3RvdHlwZS5oYXMgPSBmdW5jdGlvbiAoa2V5KSB7XG4gIHR5cGVDaGVja0tleShrZXkpXG4gIGlmICghaE9QKHRoaXMuX2NhY2hlLCBrZXkpKSByZXR1cm4gZmFsc2VcbiAgdmFyIGhpdCA9IHRoaXMuX2NhY2hlW2tleV1cbiAgaWYgKGlzU3RhbGUodGhpcywgaGl0KSkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG4gIHJldHVybiB0cnVlXG59XG5cbkxSVUNhY2hlLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbiAoa2V5KSB7XG4gIHR5cGVDaGVja0tleShrZXkpXG4gIHJldHVybiBnZXQodGhpcywga2V5LCB0cnVlKVxufVxuXG5MUlVDYWNoZS5wcm90b3R5cGUucGVlayA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgdHlwZUNoZWNrS2V5KGtleSlcbiAgcmV0dXJuIGdldCh0aGlzLCBrZXksIGZhbHNlKVxufVxuXG5MUlVDYWNoZS5wcm90b3R5cGUucG9wID0gZnVuY3Rpb24gKCkge1xuICB2YXIgaGl0ID0gdGhpcy5fbHJ1TGlzdFt0aGlzLl9scnVdXG4gIGRlbCh0aGlzLCBoaXQpXG4gIHJldHVybiBoaXQgfHwgbnVsbFxufVxuXG5MUlVDYWNoZS5wcm90b3R5cGUuZGVsID0gZnVuY3Rpb24gKGtleSkge1xuICB0eXBlQ2hlY2tLZXkoa2V5KVxuICBkZWwodGhpcywgdGhpcy5fY2FjaGVba2V5XSlcbn1cblxuTFJVQ2FjaGUucHJvdG90eXBlLmxvYWQgPSBmdW5jdGlvbiAoYXJyKSB7XG4gIC8vcmVzZXQgdGhlIGNhY2hlXG4gIHRoaXMucmVzZXQoKTtcblxuICB2YXIgbm93ID0gRGF0ZS5ub3coKVxuICAvL0EgcHJldmlvdXMgc2VyaWFsaXplZCBjYWNoZSBoYXMgdGhlIG1vc3QgcmVjZW50IGl0ZW1zIGZpcnN0XG4gIGZvciAodmFyIGwgPSBhcnIubGVuZ3RoIC0gMTsgbCA+PSAwOyBsLS0gKSB7XG4gICAgdmFyIGhpdCA9IGFycltsXVxuICAgIHR5cGVDaGVja0tleShoaXQuaylcbiAgICB2YXIgZXhwaXJlc0F0ID0gaGl0LmUgfHwgMFxuICAgIGlmIChleHBpcmVzQXQgPT09IDApIHtcbiAgICAgIC8vdGhlIGl0ZW0gd2FzIGNyZWF0ZWQgd2l0aG91dCBleHBpcmF0aW9uIGluIGEgbm9uIGFnZWQgY2FjaGVcbiAgICAgIHRoaXMuc2V0KGhpdC5rLCBoaXQudilcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIG1heEFnZSA9IGV4cGlyZXNBdCAtIG5vd1xuICAgICAgLy9kb250IGFkZCBhbHJlYWR5IGV4cGlyZWQgaXRlbXNcbiAgICAgIGlmIChtYXhBZ2UgPiAwKSB0aGlzLnNldChoaXQuaywgaGl0LnYsIG1heEFnZSlcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0IChzZWxmLCBrZXksIGRvVXNlKSB7XG4gIHR5cGVDaGVja0tleShrZXkpXG4gIHZhciBoaXQgPSBzZWxmLl9jYWNoZVtrZXldXG4gIGlmIChoaXQpIHtcbiAgICBpZiAoaXNTdGFsZShzZWxmLCBoaXQpKSB7XG4gICAgICBkZWwoc2VsZiwgaGl0KVxuICAgICAgaWYgKCFzZWxmLl9hbGxvd1N0YWxlKSBoaXQgPSB1bmRlZmluZWRcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGRvVXNlKSB1c2Uoc2VsZiwgaGl0KVxuICAgIH1cbiAgICBpZiAoaGl0KSBoaXQgPSBoaXQudmFsdWVcbiAgfVxuICByZXR1cm4gaGl0XG59XG5cbmZ1bmN0aW9uIGlzU3RhbGUoc2VsZiwgaGl0KSB7XG4gIGlmICghaGl0IHx8ICghaGl0Lm1heEFnZSAmJiAhc2VsZi5fbWF4QWdlKSkgcmV0dXJuIGZhbHNlXG4gIHZhciBzdGFsZSA9IGZhbHNlO1xuICB2YXIgZGlmZiA9IERhdGUubm93KCkgLSBoaXQubm93XG4gIGlmIChoaXQubWF4QWdlKSB7XG4gICAgc3RhbGUgPSBkaWZmID4gaGl0Lm1heEFnZVxuICB9IGVsc2Uge1xuICAgIHN0YWxlID0gc2VsZi5fbWF4QWdlICYmIChkaWZmID4gc2VsZi5fbWF4QWdlKVxuICB9XG4gIHJldHVybiBzdGFsZTtcbn1cblxuZnVuY3Rpb24gdXNlIChzZWxmLCBoaXQpIHtcbiAgc2hpZnRMVShzZWxmLCBoaXQpXG4gIGhpdC5sdSA9IHNlbGYuX21ydSArK1xuICBzZWxmLl9scnVMaXN0W2hpdC5sdV0gPSBoaXRcbn1cblxuZnVuY3Rpb24gdHJpbSAoc2VsZikge1xuICB3aGlsZSAoc2VsZi5fbHJ1IDwgc2VsZi5fbXJ1ICYmIHNlbGYuX2xlbmd0aCA+IHNlbGYuX21heClcbiAgICBkZWwoc2VsZiwgc2VsZi5fbHJ1TGlzdFtzZWxmLl9scnVdKVxufVxuXG5mdW5jdGlvbiBzaGlmdExVIChzZWxmLCBoaXQpIHtcbiAgZGVsZXRlIHNlbGYuX2xydUxpc3RbIGhpdC5sdSBdXG4gIHdoaWxlIChzZWxmLl9scnUgPCBzZWxmLl9tcnUgJiYgIXNlbGYuX2xydUxpc3Rbc2VsZi5fbHJ1XSkgc2VsZi5fbHJ1ICsrXG59XG5cbmZ1bmN0aW9uIGRlbCAoc2VsZiwgaGl0KSB7XG4gIGlmIChoaXQpIHtcbiAgICBpZiAoc2VsZi5fZGlzcG9zZSkgc2VsZi5fZGlzcG9zZShoaXQua2V5LCBoaXQudmFsdWUpXG4gICAgc2VsZi5fbGVuZ3RoIC09IGhpdC5sZW5ndGhcbiAgICBzZWxmLl9pdGVtQ291bnQgLS1cbiAgICBkZWxldGUgc2VsZi5fY2FjaGVbIGhpdC5rZXkgXVxuICAgIHNoaWZ0TFUoc2VsZiwgaGl0KVxuICB9XG59XG5cbi8vIGNsYXNzeSwgc2luY2UgVjggcHJlZmVycyBwcmVkaWN0YWJsZSBvYmplY3RzLlxuZnVuY3Rpb24gRW50cnkgKGtleSwgdmFsdWUsIGx1LCBsZW5ndGgsIG5vdywgbWF4QWdlKSB7XG4gIHRoaXMua2V5ID0ga2V5XG4gIHRoaXMudmFsdWUgPSB2YWx1ZVxuICB0aGlzLmx1ID0gbHVcbiAgdGhpcy5sZW5ndGggPSBsZW5ndGhcbiAgdGhpcy5ub3cgPSBub3dcbiAgaWYgKG1heEFnZSkgdGhpcy5tYXhBZ2UgPSBtYXhBZ2Vcbn1cblxufSkoKVxuIiwidmFyIGJuID0gcmVxdWlyZSgnYm4uanMnKTtcbnZhciBicm9yYW5kID0gcmVxdWlyZSgnYnJvcmFuZCcpO1xuXG5mdW5jdGlvbiBNaWxsZXJSYWJpbihyYW5kKSB7XG4gIHRoaXMucmFuZCA9IHJhbmQgfHwgbmV3IGJyb3JhbmQuUmFuZCgpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBNaWxsZXJSYWJpbjtcblxuTWlsbGVyUmFiaW4uY3JlYXRlID0gZnVuY3Rpb24gY3JlYXRlKHJhbmQpIHtcbiAgcmV0dXJuIG5ldyBNaWxsZXJSYWJpbihyYW5kKTtcbn07XG5cbk1pbGxlclJhYmluLnByb3RvdHlwZS5fcmFuZCA9IGZ1bmN0aW9uIF9yYW5kKG4pIHtcbiAgdmFyIGxlbiA9IG4uYml0TGVuZ3RoKCk7XG4gIHZhciBidWYgPSB0aGlzLnJhbmQuZ2VuZXJhdGUoTWF0aC5jZWlsKGxlbiAvIDgpKTtcblxuICAvLyBTZXQgbG93IGJpdHNcbiAgYnVmWzBdIHw9IDM7XG5cbiAgLy8gTWFzayBoaWdoIGJpdHNcbiAgdmFyIG1hc2sgPSBsZW4gJiAweDc7XG4gIGlmIChtYXNrICE9PSAwKVxuICAgIGJ1ZltidWYubGVuZ3RoIC0gMV0gPj49IDcgLSBtYXNrO1xuXG4gIHJldHVybiBuZXcgYm4oYnVmKTtcbn1cblxuTWlsbGVyUmFiaW4ucHJvdG90eXBlLnRlc3QgPSBmdW5jdGlvbiB0ZXN0KG4sIGssIGNiKSB7XG4gIHZhciBsZW4gPSBuLmJpdExlbmd0aCgpO1xuICB2YXIgcmVkID0gYm4ubW9udChuKTtcbiAgdmFyIHJvbmUgPSBuZXcgYm4oMSkudG9SZWQocmVkKTtcblxuICBpZiAoIWspXG4gICAgayA9IE1hdGgubWF4KDEsIChsZW4gLyA0OCkgfCAwKTtcblxuICAvLyBGaW5kIGQgYW5kIHMsIChuIC0gMSkgPSAoMiBeIHMpICogZDtcbiAgdmFyIG4xID0gbi5zdWJuKDEpO1xuICB2YXIgbjIgPSBuMS5zdWJuKDEpO1xuICBmb3IgKHZhciBzID0gMDsgIW4xLnRlc3RuKHMpOyBzKyspIHt9XG4gIHZhciBkID0gbi5zaHJuKHMpO1xuXG4gIHZhciBybjEgPSBuMS50b1JlZChyZWQpO1xuXG4gIHZhciBwcmltZSA9IHRydWU7XG4gIGZvciAoOyBrID4gMDsgay0tKSB7XG4gICAgdmFyIGEgPSB0aGlzLl9yYW5kKG4yKTtcbiAgICBpZiAoY2IpXG4gICAgICBjYihhKTtcblxuICAgIHZhciB4ID0gYS50b1JlZChyZWQpLnJlZFBvdyhkKTtcbiAgICBpZiAoeC5jbXAocm9uZSkgPT09IDAgfHwgeC5jbXAocm4xKSA9PT0gMClcbiAgICAgIGNvbnRpbnVlO1xuXG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzOyBpKyspIHtcbiAgICAgIHggPSB4LnJlZFNxcigpO1xuXG4gICAgICBpZiAoeC5jbXAocm9uZSkgPT09IDApXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIGlmICh4LmNtcChybjEpID09PSAwKVxuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICBpZiAoaSA9PT0gcylcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiBwcmltZTtcbn07XG5cbk1pbGxlclJhYmluLnByb3RvdHlwZS5nZXREaXZpc29yID0gZnVuY3Rpb24gZ2V0RGl2aXNvcihuLCBrKSB7XG4gIHZhciBsZW4gPSBuLmJpdExlbmd0aCgpO1xuICB2YXIgcmVkID0gYm4ubW9udChuKTtcbiAgdmFyIHJvbmUgPSBuZXcgYm4oMSkudG9SZWQocmVkKTtcblxuICBpZiAoIWspXG4gICAgayA9IE1hdGgubWF4KDEsIChsZW4gLyA0OCkgfCAwKTtcblxuICAvLyBGaW5kIGQgYW5kIHMsIChuIC0gMSkgPSAoMiBeIHMpICogZDtcbiAgdmFyIG4xID0gbi5zdWJuKDEpO1xuICB2YXIgbjIgPSBuMS5zdWJuKDEpO1xuICBmb3IgKHZhciBzID0gMDsgIW4xLnRlc3RuKHMpOyBzKyspIHt9XG4gIHZhciBkID0gbi5zaHJuKHMpO1xuXG4gIHZhciBybjEgPSBuMS50b1JlZChyZWQpO1xuXG4gIGZvciAoOyBrID4gMDsgay0tKSB7XG4gICAgdmFyIGEgPSB0aGlzLl9yYW5kKG4yKTtcblxuICAgIHZhciBnID0gbi5nY2QoYSk7XG4gICAgaWYgKGcuY21wbigxKSAhPT0gMClcbiAgICAgIHJldHVybiBnO1xuXG4gICAgdmFyIHggPSBhLnRvUmVkKHJlZCkucmVkUG93KGQpO1xuICAgIGlmICh4LmNtcChyb25lKSA9PT0gMCB8fCB4LmNtcChybjEpID09PSAwKVxuICAgICAgY29udGludWU7XG5cbiAgICBmb3IgKHZhciBpID0gMTsgaSA8IHM7IGkrKykge1xuICAgICAgeCA9IHgucmVkU3FyKCk7XG5cbiAgICAgIGlmICh4LmNtcChyb25lKSA9PT0gMClcbiAgICAgICAgcmV0dXJuIHguZnJvbVJlZCgpLnN1Ym4oMSkuZ2NkKG4pO1xuICAgICAgaWYgKHguY21wKHJuMSkgPT09IDApXG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGlmIChpID09PSBzKSB7XG4gICAgICB4ID0geC5yZWRTcXIoKTtcbiAgICAgIHJldHVybiB4LmZyb21SZWQoKS5zdWJuKDEpLmdjZChuKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSBhc3NlcnQ7XG5cbmZ1bmN0aW9uIGFzc2VydCh2YWwsIG1zZykge1xuICBpZiAoIXZhbClcbiAgICB0aHJvdyBuZXcgRXJyb3IobXNnIHx8ICdBc3NlcnRpb24gZmFpbGVkJyk7XG59XG5cbmFzc2VydC5lcXVhbCA9IGZ1bmN0aW9uIGFzc2VydEVxdWFsKGwsIHIsIG1zZykge1xuICBpZiAobCAhPSByKVxuICAgIHRocm93IG5ldyBFcnJvcihtc2cgfHwgKCdBc3NlcnRpb24gZmFpbGVkOiAnICsgbCArICcgIT0gJyArIHIpKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyA9IGV4cG9ydHM7XG5cbmZ1bmN0aW9uIHRvQXJyYXkobXNnLCBlbmMpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkobXNnKSlcbiAgICByZXR1cm4gbXNnLnNsaWNlKCk7XG4gIGlmICghbXNnKVxuICAgIHJldHVybiBbXTtcbiAgdmFyIHJlcyA9IFtdO1xuICBpZiAodHlwZW9mIG1zZyAhPT0gJ3N0cmluZycpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1zZy5sZW5ndGg7IGkrKylcbiAgICAgIHJlc1tpXSA9IG1zZ1tpXSB8IDA7XG4gICAgcmV0dXJuIHJlcztcbiAgfVxuICBpZiAoZW5jID09PSAnaGV4Jykge1xuICAgIG1zZyA9IG1zZy5yZXBsYWNlKC9bXmEtejAtOV0rL2lnLCAnJyk7XG4gICAgaWYgKG1zZy5sZW5ndGggJSAyICE9PSAwKVxuICAgICAgbXNnID0gJzAnICsgbXNnO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbXNnLmxlbmd0aDsgaSArPSAyKVxuICAgICAgcmVzLnB1c2gocGFyc2VJbnQobXNnW2ldICsgbXNnW2kgKyAxXSwgMTYpKTtcbiAgfSBlbHNlIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1zZy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGMgPSBtc2cuY2hhckNvZGVBdChpKTtcbiAgICAgIHZhciBoaSA9IGMgPj4gODtcbiAgICAgIHZhciBsbyA9IGMgJiAweGZmO1xuICAgICAgaWYgKGhpKVxuICAgICAgICByZXMucHVzaChoaSwgbG8pO1xuICAgICAgZWxzZVxuICAgICAgICByZXMucHVzaChsbyk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXM7XG59XG51dGlscy50b0FycmF5ID0gdG9BcnJheTtcblxuZnVuY3Rpb24gemVybzIod29yZCkge1xuICBpZiAod29yZC5sZW5ndGggPT09IDEpXG4gICAgcmV0dXJuICcwJyArIHdvcmQ7XG4gIGVsc2VcbiAgICByZXR1cm4gd29yZDtcbn1cbnV0aWxzLnplcm8yID0gemVybzI7XG5cbmZ1bmN0aW9uIHRvSGV4KG1zZykge1xuICB2YXIgcmVzID0gJyc7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbXNnLmxlbmd0aDsgaSsrKVxuICAgIHJlcyArPSB6ZXJvMihtc2dbaV0udG9TdHJpbmcoMTYpKTtcbiAgcmV0dXJuIHJlcztcbn1cbnV0aWxzLnRvSGV4ID0gdG9IZXg7XG5cbnV0aWxzLmVuY29kZSA9IGZ1bmN0aW9uIGVuY29kZShhcnIsIGVuYykge1xuICBpZiAoZW5jID09PSAnaGV4JylcbiAgICByZXR1cm4gdG9IZXgoYXJyKTtcbiAgZWxzZVxuICAgIHJldHVybiBhcnI7XG59O1xuIiwidmFyIHBhdGggPSByZXF1aXJlKCdwYXRoJyk7XG52YXIgZnMgPSByZXF1aXJlKCdmcycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IG1rZGlyUC5ta2RpcnAgPSBta2RpclAubWtkaXJQID0gbWtkaXJQO1xuXG5mdW5jdGlvbiBta2RpclAgKHAsIG1vZGUsIGYsIG1hZGUpIHtcbiAgICBpZiAodHlwZW9mIG1vZGUgPT09ICdmdW5jdGlvbicgfHwgbW9kZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGYgPSBtb2RlO1xuICAgICAgICBtb2RlID0gMDc3NyAmICh+cHJvY2Vzcy51bWFzaygpKTtcbiAgICB9XG4gICAgaWYgKCFtYWRlKSBtYWRlID0gbnVsbDtcblxuICAgIHZhciBjYiA9IGYgfHwgZnVuY3Rpb24gKCkge307XG4gICAgaWYgKHR5cGVvZiBtb2RlID09PSAnc3RyaW5nJykgbW9kZSA9IHBhcnNlSW50KG1vZGUsIDgpO1xuICAgIHAgPSBwYXRoLnJlc29sdmUocCk7XG5cbiAgICBmcy5ta2RpcihwLCBtb2RlLCBmdW5jdGlvbiAoZXIpIHtcbiAgICAgICAgaWYgKCFlcikge1xuICAgICAgICAgICAgbWFkZSA9IG1hZGUgfHwgcDtcbiAgICAgICAgICAgIHJldHVybiBjYihudWxsLCBtYWRlKTtcbiAgICAgICAgfVxuICAgICAgICBzd2l0Y2ggKGVyLmNvZGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ0VOT0VOVCc6XG4gICAgICAgICAgICAgICAgbWtkaXJQKHBhdGguZGlybmFtZShwKSwgbW9kZSwgZnVuY3Rpb24gKGVyLCBtYWRlKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChlcikgY2IoZXIsIG1hZGUpO1xuICAgICAgICAgICAgICAgICAgICBlbHNlIG1rZGlyUChwLCBtb2RlLCBjYiwgbWFkZSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIC8vIEluIHRoZSBjYXNlIG9mIGFueSBvdGhlciBlcnJvciwganVzdCBzZWUgaWYgdGhlcmUncyBhIGRpclxuICAgICAgICAgICAgLy8gdGhlcmUgYWxyZWFkeS4gIElmIHNvLCB0aGVuIGhvb3JheSEgIElmIG5vdCwgdGhlbiBzb21ldGhpbmdcbiAgICAgICAgICAgIC8vIGlzIGJvcmtlZC5cbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgZnMuc3RhdChwLCBmdW5jdGlvbiAoZXIyLCBzdGF0KSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGlmIHRoZSBzdGF0IGZhaWxzLCB0aGVuIHRoYXQncyBzdXBlciB3ZWlyZC5cbiAgICAgICAgICAgICAgICAgICAgLy8gbGV0IHRoZSBvcmlnaW5hbCBlcnJvciBiZSB0aGUgZmFpbHVyZSByZWFzb24uXG4gICAgICAgICAgICAgICAgICAgIGlmIChlcjIgfHwgIXN0YXQuaXNEaXJlY3RvcnkoKSkgY2IoZXIsIG1hZGUpXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgY2IobnVsbCwgbWFkZSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9KTtcbn1cblxubWtkaXJQLnN5bmMgPSBmdW5jdGlvbiBzeW5jIChwLCBtb2RlLCBtYWRlKSB7XG4gICAgaWYgKG1vZGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBtb2RlID0gMDc3NyAmICh+cHJvY2Vzcy51bWFzaygpKTtcbiAgICB9XG4gICAgaWYgKCFtYWRlKSBtYWRlID0gbnVsbDtcblxuICAgIGlmICh0eXBlb2YgbW9kZSA9PT0gJ3N0cmluZycpIG1vZGUgPSBwYXJzZUludChtb2RlLCA4KTtcbiAgICBwID0gcGF0aC5yZXNvbHZlKHApO1xuXG4gICAgdHJ5IHtcbiAgICAgICAgZnMubWtkaXJTeW5jKHAsIG1vZGUpO1xuICAgICAgICBtYWRlID0gbWFkZSB8fCBwO1xuICAgIH1cbiAgICBjYXRjaCAoZXJyMCkge1xuICAgICAgICBzd2l0Y2ggKGVycjAuY29kZSkge1xuICAgICAgICAgICAgY2FzZSAnRU5PRU5UJyA6XG4gICAgICAgICAgICAgICAgbWFkZSA9IHN5bmMocGF0aC5kaXJuYW1lKHApLCBtb2RlLCBtYWRlKTtcbiAgICAgICAgICAgICAgICBzeW5jKHAsIG1vZGUsIG1hZGUpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAvLyBJbiB0aGUgY2FzZSBvZiBhbnkgb3RoZXIgZXJyb3IsIGp1c3Qgc2VlIGlmIHRoZXJlJ3MgYSBkaXJcbiAgICAgICAgICAgIC8vIHRoZXJlIGFscmVhZHkuICBJZiBzbywgdGhlbiBob29yYXkhICBJZiBub3QsIHRoZW4gc29tZXRoaW5nXG4gICAgICAgICAgICAvLyBpcyBib3JrZWQuXG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHZhciBzdGF0O1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIHN0YXQgPSBmcy5zdGF0U3luYyhwKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2F0Y2ggKGVycjEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgZXJyMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKCFzdGF0LmlzRGlyZWN0b3J5KCkpIHRocm93IGVycjA7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbWFkZTtcbn07XG4iLCIvKipcbiAqIEhlbHBlcnMuXG4gKi9cblxudmFyIHMgPSAxMDAwO1xudmFyIG0gPSBzICogNjA7XG52YXIgaCA9IG0gKiA2MDtcbnZhciBkID0gaCAqIDI0O1xudmFyIHkgPSBkICogMzY1LjI1O1xuXG4vKipcbiAqIFBhcnNlIG9yIGZvcm1hdCB0aGUgZ2l2ZW4gYHZhbGAuXG4gKlxuICogT3B0aW9uczpcbiAqXG4gKiAgLSBgbG9uZ2AgdmVyYm9zZSBmb3JtYXR0aW5nIFtmYWxzZV1cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ3xOdW1iZXJ9IHZhbFxuICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnNcbiAqIEByZXR1cm4ge1N0cmluZ3xOdW1iZXJ9XG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24odmFsLCBvcHRpb25zKXtcbiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG4gIGlmICgnc3RyaW5nJyA9PSB0eXBlb2YgdmFsKSByZXR1cm4gcGFyc2UodmFsKTtcbiAgcmV0dXJuIG9wdGlvbnMubG9uZ1xuICAgID8gbG9uZyh2YWwpXG4gICAgOiBzaG9ydCh2YWwpO1xufTtcblxuLyoqXG4gKiBQYXJzZSB0aGUgZ2l2ZW4gYHN0cmAgYW5kIHJldHVybiBtaWxsaXNlY29uZHMuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHN0clxuICogQHJldHVybiB7TnVtYmVyfVxuICogQGFwaSBwcml2YXRlXG4gKi9cblxuZnVuY3Rpb24gcGFyc2Uoc3RyKSB7XG4gIHN0ciA9ICcnICsgc3RyO1xuICBpZiAoc3RyLmxlbmd0aCA+IDEwMDAwKSByZXR1cm47XG4gIHZhciBtYXRjaCA9IC9eKCg/OlxcZCspP1xcLj9cXGQrKSAqKG1pbGxpc2Vjb25kcz98bXNlY3M/fG1zfHNlY29uZHM/fHNlY3M/fHN8bWludXRlcz98bWlucz98bXxob3Vycz98aHJzP3xofGRheXM/fGR8eWVhcnM/fHlycz98eSk/JC9pLmV4ZWMoc3RyKTtcbiAgaWYgKCFtYXRjaCkgcmV0dXJuO1xuICB2YXIgbiA9IHBhcnNlRmxvYXQobWF0Y2hbMV0pO1xuICB2YXIgdHlwZSA9IChtYXRjaFsyXSB8fCAnbXMnKS50b0xvd2VyQ2FzZSgpO1xuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlICd5ZWFycyc6XG4gICAgY2FzZSAneWVhcic6XG4gICAgY2FzZSAneXJzJzpcbiAgICBjYXNlICd5cic6XG4gICAgY2FzZSAneSc6XG4gICAgICByZXR1cm4gbiAqIHk7XG4gICAgY2FzZSAnZGF5cyc6XG4gICAgY2FzZSAnZGF5JzpcbiAgICBjYXNlICdkJzpcbiAgICAgIHJldHVybiBuICogZDtcbiAgICBjYXNlICdob3Vycyc6XG4gICAgY2FzZSAnaG91cic6XG4gICAgY2FzZSAnaHJzJzpcbiAgICBjYXNlICdocic6XG4gICAgY2FzZSAnaCc6XG4gICAgICByZXR1cm4gbiAqIGg7XG4gICAgY2FzZSAnbWludXRlcyc6XG4gICAgY2FzZSAnbWludXRlJzpcbiAgICBjYXNlICdtaW5zJzpcbiAgICBjYXNlICdtaW4nOlxuICAgIGNhc2UgJ20nOlxuICAgICAgcmV0dXJuIG4gKiBtO1xuICAgIGNhc2UgJ3NlY29uZHMnOlxuICAgIGNhc2UgJ3NlY29uZCc6XG4gICAgY2FzZSAnc2Vjcyc6XG4gICAgY2FzZSAnc2VjJzpcbiAgICBjYXNlICdzJzpcbiAgICAgIHJldHVybiBuICogcztcbiAgICBjYXNlICdtaWxsaXNlY29uZHMnOlxuICAgIGNhc2UgJ21pbGxpc2Vjb25kJzpcbiAgICBjYXNlICdtc2Vjcyc6XG4gICAgY2FzZSAnbXNlYyc6XG4gICAgY2FzZSAnbXMnOlxuICAgICAgcmV0dXJuIG47XG4gIH1cbn1cblxuLyoqXG4gKiBTaG9ydCBmb3JtYXQgZm9yIGBtc2AuXG4gKlxuICogQHBhcmFtIHtOdW1iZXJ9IG1zXG4gKiBAcmV0dXJuIHtTdHJpbmd9XG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBzaG9ydChtcykge1xuICBpZiAobXMgPj0gZCkgcmV0dXJuIE1hdGgucm91bmQobXMgLyBkKSArICdkJztcbiAgaWYgKG1zID49IGgpIHJldHVybiBNYXRoLnJvdW5kKG1zIC8gaCkgKyAnaCc7XG4gIGlmIChtcyA+PSBtKSByZXR1cm4gTWF0aC5yb3VuZChtcyAvIG0pICsgJ20nO1xuICBpZiAobXMgPj0gcykgcmV0dXJuIE1hdGgucm91bmQobXMgLyBzKSArICdzJztcbiAgcmV0dXJuIG1zICsgJ21zJztcbn1cblxuLyoqXG4gKiBMb25nIGZvcm1hdCBmb3IgYG1zYC5cbiAqXG4gKiBAcGFyYW0ge051bWJlcn0gbXNcbiAqIEByZXR1cm4ge1N0cmluZ31cbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIGxvbmcobXMpIHtcbiAgcmV0dXJuIHBsdXJhbChtcywgZCwgJ2RheScpXG4gICAgfHwgcGx1cmFsKG1zLCBoLCAnaG91cicpXG4gICAgfHwgcGx1cmFsKG1zLCBtLCAnbWludXRlJylcbiAgICB8fCBwbHVyYWwobXMsIHMsICdzZWNvbmQnKVxuICAgIHx8IG1zICsgJyBtcyc7XG59XG5cbi8qKlxuICogUGx1cmFsaXphdGlvbiBoZWxwZXIuXG4gKi9cblxuZnVuY3Rpb24gcGx1cmFsKG1zLCBuLCBuYW1lKSB7XG4gIGlmIChtcyA8IG4pIHJldHVybjtcbiAgaWYgKG1zIDwgbiAqIDEuNSkgcmV0dXJuIE1hdGguZmxvb3IobXMgLyBuKSArICcgJyArIG5hbWU7XG4gIHJldHVybiBNYXRoLmNlaWwobXMgLyBuKSArICcgJyArIG5hbWUgKyAncyc7XG59XG4iLCIvLyBUaGUgQm91bmRpbmcgQm94IG9iamVjdFxuXG4ndXNlIHN0cmljdCc7XG5cbmZ1bmN0aW9uIGRlcml2ZSh2MCwgdjEsIHYyLCB2MywgdCkge1xuICAgIHJldHVybiBNYXRoLnBvdygxIC0gdCwgMykgKiB2MCArXG4gICAgICAgIDMgKiBNYXRoLnBvdygxIC0gdCwgMikgKiB0ICogdjEgK1xuICAgICAgICAzICogKDEgLSB0KSAqIE1hdGgucG93KHQsIDIpICogdjIgK1xuICAgICAgICBNYXRoLnBvdyh0LCAzKSAqIHYzO1xufVxuLyoqXG4gKiBBIGJvdW5kaW5nIGJveCBpcyBhbiBlbmNsb3NpbmcgYm94IHRoYXQgZGVzY3JpYmVzIHRoZSBzbWFsbGVzdCBtZWFzdXJlIHdpdGhpbiB3aGljaCBhbGwgdGhlIHBvaW50cyBsaWUuXG4gKiBJdCBpcyB1c2VkIHRvIGNhbGN1bGF0ZSB0aGUgYm91bmRpbmcgYm94IG9mIGEgZ2x5cGggb3IgdGV4dCBwYXRoLlxuICpcbiAqIE9uIGluaXRpYWxpemF0aW9uLCB4MS95MS94Mi95MiB3aWxsIGJlIE5hTi4gQ2hlY2sgaWYgdGhlIGJvdW5kaW5nIGJveCBpcyBlbXB0eSB1c2luZyBgaXNFbXB0eSgpYC5cbiAqXG4gKiBAZXhwb3J0cyBvcGVudHlwZS5Cb3VuZGluZ0JveFxuICogQGNsYXNzXG4gKiBAY29uc3RydWN0b3JcbiAqL1xuZnVuY3Rpb24gQm91bmRpbmdCb3goKSB7XG4gICAgdGhpcy54MSA9IE51bWJlci5OYU47XG4gICAgdGhpcy55MSA9IE51bWJlci5OYU47XG4gICAgdGhpcy54MiA9IE51bWJlci5OYU47XG4gICAgdGhpcy55MiA9IE51bWJlci5OYU47XG59XG5cbi8qKlxuICogUmV0dXJucyB0cnVlIGlmIHRoZSBib3VuZGluZyBib3ggaXMgZW1wdHksIHRoYXQgaXMsIG5vIHBvaW50cyBoYXZlIGJlZW4gYWRkZWQgdG8gdGhlIGJveCB5ZXQuXG4gKi9cbkJvdW5kaW5nQm94LnByb3RvdHlwZS5pc0VtcHR5ID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIGlzTmFOKHRoaXMueDEpIHx8IGlzTmFOKHRoaXMueTEpIHx8IGlzTmFOKHRoaXMueDIpIHx8IGlzTmFOKHRoaXMueTIpO1xufTtcblxuLyoqXG4gKiBBZGQgdGhlIHBvaW50IHRvIHRoZSBib3VuZGluZyBib3guXG4gKiBUaGUgeDEveTEveDIveTIgY29vcmRpbmF0ZXMgb2YgdGhlIGJvdW5kaW5nIGJveCB3aWxsIG5vdyBlbmNvbXBhc3MgdGhlIGdpdmVuIHBvaW50LlxuICogQHBhcmFtIHtudW1iZXJ9IHggLSBUaGUgWCBjb29yZGluYXRlIG9mIHRoZSBwb2ludC5cbiAqIEBwYXJhbSB7bnVtYmVyfSB5IC0gVGhlIFkgY29vcmRpbmF0ZSBvZiB0aGUgcG9pbnQuXG4gKi9cbkJvdW5kaW5nQm94LnByb3RvdHlwZS5hZGRQb2ludCA9IGZ1bmN0aW9uKHgsIHkpIHtcbiAgICBpZiAodHlwZW9mIHggPT09ICdudW1iZXInKSB7XG4gICAgICAgIGlmIChpc05hTih0aGlzLngxKSB8fCBpc05hTih0aGlzLngyKSkge1xuICAgICAgICAgICAgdGhpcy54MSA9IHg7XG4gICAgICAgICAgICB0aGlzLngyID0geDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoeCA8IHRoaXMueDEpIHtcbiAgICAgICAgICAgIHRoaXMueDEgPSB4O1xuICAgICAgICB9XG4gICAgICAgIGlmICh4ID4gdGhpcy54Mikge1xuICAgICAgICAgICAgdGhpcy54MiA9IHg7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKHR5cGVvZiB5ID09PSAnbnVtYmVyJykge1xuICAgICAgICBpZiAoaXNOYU4odGhpcy55MSkgfHwgaXNOYU4odGhpcy55MikpIHtcbiAgICAgICAgICAgIHRoaXMueTEgPSB5O1xuICAgICAgICAgICAgdGhpcy55MiA9IHk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHkgPCB0aGlzLnkxKSB7XG4gICAgICAgICAgICB0aGlzLnkxID0geTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoeSA+IHRoaXMueTIpIHtcbiAgICAgICAgICAgIHRoaXMueTIgPSB5O1xuICAgICAgICB9XG4gICAgfVxufTtcblxuLyoqXG4gKiBBZGQgYSBYIGNvb3JkaW5hdGUgdG8gdGhlIGJvdW5kaW5nIGJveC5cbiAqIFRoaXMgZXh0ZW5kcyB0aGUgYm91bmRpbmcgYm94IHRvIGluY2x1ZGUgdGhlIFggY29vcmRpbmF0ZS5cbiAqIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCBpbnRlcm5hbGx5IGluc2lkZSBvZiBhZGRCZXppZXIuXG4gKiBAcGFyYW0ge251bWJlcn0geCAtIFRoZSBYIGNvb3JkaW5hdGUgb2YgdGhlIHBvaW50LlxuICovXG5Cb3VuZGluZ0JveC5wcm90b3R5cGUuYWRkWCA9IGZ1bmN0aW9uKHgpIHtcbiAgICB0aGlzLmFkZFBvaW50KHgsIG51bGwpO1xufTtcblxuLyoqXG4gKiBBZGQgYSBZIGNvb3JkaW5hdGUgdG8gdGhlIGJvdW5kaW5nIGJveC5cbiAqIFRoaXMgZXh0ZW5kcyB0aGUgYm91bmRpbmcgYm94IHRvIGluY2x1ZGUgdGhlIFkgY29vcmRpbmF0ZS5cbiAqIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCBpbnRlcm5hbGx5IGluc2lkZSBvZiBhZGRCZXppZXIuXG4gKiBAcGFyYW0ge251bWJlcn0geSAtIFRoZSBZIGNvb3JkaW5hdGUgb2YgdGhlIHBvaW50LlxuICovXG5Cb3VuZGluZ0JveC5wcm90b3R5cGUuYWRkWSA9IGZ1bmN0aW9uKHkpIHtcbiAgICB0aGlzLmFkZFBvaW50KG51bGwsIHkpO1xufTtcblxuLyoqXG4gKiBBZGQgYSBCw6l6aWVyIGN1cnZlIHRvIHRoZSBib3VuZGluZyBib3guXG4gKiBUaGlzIGV4dGVuZHMgdGhlIGJvdW5kaW5nIGJveCB0byBpbmNsdWRlIHRoZSBlbnRpcmUgQsOpemllci5cbiAqIEBwYXJhbSB7bnVtYmVyfSB4MCAtIFRoZSBzdGFydGluZyBYIGNvb3JkaW5hdGUuXG4gKiBAcGFyYW0ge251bWJlcn0geTAgLSBUaGUgc3RhcnRpbmcgWSBjb29yZGluYXRlLlxuICogQHBhcmFtIHtudW1iZXJ9IHgxIC0gVGhlIFggY29vcmRpbmF0ZSBvZiB0aGUgZmlyc3QgY29udHJvbCBwb2ludC5cbiAqIEBwYXJhbSB7bnVtYmVyfSB5MSAtIFRoZSBZIGNvb3JkaW5hdGUgb2YgdGhlIGZpcnN0IGNvbnRyb2wgcG9pbnQuXG4gKiBAcGFyYW0ge251bWJlcn0geDIgLSBUaGUgWCBjb29yZGluYXRlIG9mIHRoZSBzZWNvbmQgY29udHJvbCBwb2ludC5cbiAqIEBwYXJhbSB7bnVtYmVyfSB5MiAtIFRoZSBZIGNvb3JkaW5hdGUgb2YgdGhlIHNlY29uZCBjb250cm9sIHBvaW50LlxuICogQHBhcmFtIHtudW1iZXJ9IHggLSBUaGUgZW5kaW5nIFggY29vcmRpbmF0ZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSB5IC0gVGhlIGVuZGluZyBZIGNvb3JkaW5hdGUuXG4gKi9cbkJvdW5kaW5nQm94LnByb3RvdHlwZS5hZGRCZXppZXIgPSBmdW5jdGlvbih4MCwgeTAsIHgxLCB5MSwgeDIsIHkyLCB4LCB5KSB7XG4gICAgLy8gVGhpcyBjb2RlIGlzIGJhc2VkIG9uIGh0dHA6Ly9uaXNoaW9oaXJva2F6dS5ibG9nc3BvdC5jb20vMjAwOS8wNi9ob3ctdG8tY2FsY3VsYXRlLWJlemllci1jdXJ2ZXMtYm91bmRpbmcuaHRtbFxuICAgIC8vIGFuZCBodHRwczovL2dpdGh1Yi5jb20vaWNvbnM4L3N2Zy1wYXRoLWJvdW5kaW5nLWJveFxuXG4gICAgdmFyIHAwID0gW3gwLCB5MF07XG4gICAgdmFyIHAxID0gW3gxLCB5MV07XG4gICAgdmFyIHAyID0gW3gyLCB5Ml07XG4gICAgdmFyIHAzID0gW3gsIHldO1xuXG4gICAgdGhpcy5hZGRQb2ludCh4MCwgeTApO1xuICAgIHRoaXMuYWRkUG9pbnQoeCwgeSk7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8PSAxOyBpKyspIHtcbiAgICAgICAgdmFyIGIgPSA2ICogcDBbaV0gLSAxMiAqIHAxW2ldICsgNiAqIHAyW2ldO1xuICAgICAgICB2YXIgYSA9IC0zICogcDBbaV0gKyA5ICogcDFbaV0gLSA5ICogcDJbaV0gKyAzICogcDNbaV07XG4gICAgICAgIHZhciBjID0gMyAqIHAxW2ldIC0gMyAqIHAwW2ldO1xuXG4gICAgICAgIGlmIChhID09PSAwKSB7XG4gICAgICAgICAgICBpZiAoYiA9PT0gMCkgY29udGludWU7XG4gICAgICAgICAgICB2YXIgdCA9IC1jIC8gYjtcbiAgICAgICAgICAgIGlmICgwIDwgdCAmJiB0IDwgMSkge1xuICAgICAgICAgICAgICAgIGlmIChpID09PSAwKSB0aGlzLmFkZFgoZGVyaXZlKHAwW2ldLCBwMVtpXSwgcDJbaV0sIHAzW2ldLCB0KSk7XG4gICAgICAgICAgICAgICAgaWYgKGkgPT09IDEpIHRoaXMuYWRkWShkZXJpdmUocDBbaV0sIHAxW2ldLCBwMltpXSwgcDNbaV0sIHQpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGIyYWMgPSBNYXRoLnBvdyhiLCAyKSAtIDQgKiBjICogYTtcbiAgICAgICAgaWYgKGIyYWMgPCAwKSBjb250aW51ZTtcbiAgICAgICAgdmFyIHQxID0gKC1iICsgTWF0aC5zcXJ0KGIyYWMpKSAvICgyICogYSk7XG4gICAgICAgIGlmICgwIDwgdDEgJiYgdDEgPCAxKSB7XG4gICAgICAgICAgICBpZiAoaSA9PT0gMCkgdGhpcy5hZGRYKGRlcml2ZShwMFtpXSwgcDFbaV0sIHAyW2ldLCBwM1tpXSwgdDEpKTtcbiAgICAgICAgICAgIGlmIChpID09PSAxKSB0aGlzLmFkZFkoZGVyaXZlKHAwW2ldLCBwMVtpXSwgcDJbaV0sIHAzW2ldLCB0MSkpO1xuICAgICAgICB9XG4gICAgICAgIHZhciB0MiA9ICgtYiAtIE1hdGguc3FydChiMmFjKSkgLyAoMiAqIGEpO1xuICAgICAgICBpZiAoMCA8IHQyICYmIHQyIDwgMSkge1xuICAgICAgICAgICAgaWYgKGkgPT09IDApIHRoaXMuYWRkWChkZXJpdmUocDBbaV0sIHAxW2ldLCBwMltpXSwgcDNbaV0sIHQyKSk7XG4gICAgICAgICAgICBpZiAoaSA9PT0gMSkgdGhpcy5hZGRZKGRlcml2ZShwMFtpXSwgcDFbaV0sIHAyW2ldLCBwM1tpXSwgdDIpKTtcbiAgICAgICAgfVxuICAgIH1cbn07XG5cbi8qKlxuICogQWRkIGEgcXVhZHJhdGljIGN1cnZlIHRvIHRoZSBib3VuZGluZyBib3guXG4gKiBUaGlzIGV4dGVuZHMgdGhlIGJvdW5kaW5nIGJveCB0byBpbmNsdWRlIHRoZSBlbnRpcmUgcXVhZHJhdGljIGN1cnZlLlxuICogQHBhcmFtIHtudW1iZXJ9IHgwIC0gVGhlIHN0YXJ0aW5nIFggY29vcmRpbmF0ZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSB5MCAtIFRoZSBzdGFydGluZyBZIGNvb3JkaW5hdGUuXG4gKiBAcGFyYW0ge251bWJlcn0geDEgLSBUaGUgWCBjb29yZGluYXRlIG9mIHRoZSBjb250cm9sIHBvaW50LlxuICogQHBhcmFtIHtudW1iZXJ9IHkxIC0gVGhlIFkgY29vcmRpbmF0ZSBvZiB0aGUgY29udHJvbCBwb2ludC5cbiAqIEBwYXJhbSB7bnVtYmVyfSB4IC0gVGhlIGVuZGluZyBYIGNvb3JkaW5hdGUuXG4gKiBAcGFyYW0ge251bWJlcn0geSAtIFRoZSBlbmRpbmcgWSBjb29yZGluYXRlLlxuICovXG5Cb3VuZGluZ0JveC5wcm90b3R5cGUuYWRkUXVhZCA9IGZ1bmN0aW9uKHgwLCB5MCwgeDEsIHkxLCB4LCB5KSB7XG4gICAgdmFyIGNwMXggPSB4MCArIDIgLyAzICogKHgxIC0geDApO1xuICAgIHZhciBjcDF5ID0geTAgKyAyIC8gMyAqICh5MSAtIHkwKTtcbiAgICB2YXIgY3AyeCA9IGNwMXggKyAxIC8gMyAqICh4IC0geDApO1xuICAgIHZhciBjcDJ5ID0gY3AxeSArIDEgLyAzICogKHkgLSB5MCk7XG4gICAgdGhpcy5hZGRCZXppZXIoeDAsIHkwLCBjcDF4LCBjcDF5LCBjcDJ4LCBjcDJ5LCB4LCB5KTtcbn07XG5cbmV4cG9ydHMuQm91bmRpbmdCb3ggPSBCb3VuZGluZ0JveDtcbiIsIi8vIFJ1bi10aW1lIGNoZWNraW5nIG9mIHByZWNvbmRpdGlvbnMuXG5cbid1c2Ugc3RyaWN0JztcblxuZXhwb3J0cy5mYWlsID0gZnVuY3Rpb24obWVzc2FnZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbn07XG5cbi8vIFByZWNvbmRpdGlvbiBmdW5jdGlvbiB0aGF0IGNoZWNrcyBpZiB0aGUgZ2l2ZW4gcHJlZGljYXRlIGlzIHRydWUuXG4vLyBJZiBub3QsIGl0IHdpbGwgdGhyb3cgYW4gZXJyb3IuXG5leHBvcnRzLmFyZ3VtZW50ID0gZnVuY3Rpb24ocHJlZGljYXRlLCBtZXNzYWdlKSB7XG4gICAgaWYgKCFwcmVkaWNhdGUpIHtcbiAgICAgICAgZXhwb3J0cy5mYWlsKG1lc3NhZ2UpO1xuICAgIH1cbn07XG5cbi8vIFByZWNvbmRpdGlvbiBmdW5jdGlvbiB0aGF0IGNoZWNrcyBpZiB0aGUgZ2l2ZW4gYXNzZXJ0aW9uIGlzIHRydWUuXG4vLyBJZiBub3QsIGl0IHdpbGwgdGhyb3cgYW4gZXJyb3IuXG5leHBvcnRzLmFzc2VydCA9IGV4cG9ydHMuYXJndW1lbnQ7XG4iLCIvLyBEcmF3aW5nIHV0aWxpdHkgZnVuY3Rpb25zLlxuXG4ndXNlIHN0cmljdCc7XG5cbi8vIERyYXcgYSBsaW5lIG9uIHRoZSBnaXZlbiBjb250ZXh0IGZyb20gcG9pbnQgYHgxLHkxYCB0byBwb2ludCBgeDIseTJgLlxuZnVuY3Rpb24gbGluZShjdHgsIHgxLCB5MSwgeDIsIHkyKSB7XG4gICAgY3R4LmJlZ2luUGF0aCgpO1xuICAgIGN0eC5tb3ZlVG8oeDEsIHkxKTtcbiAgICBjdHgubGluZVRvKHgyLCB5Mik7XG4gICAgY3R4LnN0cm9rZSgpO1xufVxuXG5leHBvcnRzLmxpbmUgPSBsaW5lO1xuIiwiLy8gR2x5cGggZW5jb2RpbmdcblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgY2ZmU3RhbmRhcmRTdHJpbmdzID0gW1xuICAgICcubm90ZGVmJywgJ3NwYWNlJywgJ2V4Y2xhbScsICdxdW90ZWRibCcsICdudW1iZXJzaWduJywgJ2RvbGxhcicsICdwZXJjZW50JywgJ2FtcGVyc2FuZCcsICdxdW90ZXJpZ2h0JyxcbiAgICAncGFyZW5sZWZ0JywgJ3BhcmVucmlnaHQnLCAnYXN0ZXJpc2snLCAncGx1cycsICdjb21tYScsICdoeXBoZW4nLCAncGVyaW9kJywgJ3NsYXNoJywgJ3plcm8nLCAnb25lJywgJ3R3bycsXG4gICAgJ3RocmVlJywgJ2ZvdXInLCAnZml2ZScsICdzaXgnLCAnc2V2ZW4nLCAnZWlnaHQnLCAnbmluZScsICdjb2xvbicsICdzZW1pY29sb24nLCAnbGVzcycsICdlcXVhbCcsICdncmVhdGVyJyxcbiAgICAncXVlc3Rpb24nLCAnYXQnLCAnQScsICdCJywgJ0MnLCAnRCcsICdFJywgJ0YnLCAnRycsICdIJywgJ0knLCAnSicsICdLJywgJ0wnLCAnTScsICdOJywgJ08nLCAnUCcsICdRJywgJ1InLCAnUycsXG4gICAgJ1QnLCAnVScsICdWJywgJ1cnLCAnWCcsICdZJywgJ1onLCAnYnJhY2tldGxlZnQnLCAnYmFja3NsYXNoJywgJ2JyYWNrZXRyaWdodCcsICdhc2NpaWNpcmN1bScsICd1bmRlcnNjb3JlJyxcbiAgICAncXVvdGVsZWZ0JywgJ2EnLCAnYicsICdjJywgJ2QnLCAnZScsICdmJywgJ2cnLCAnaCcsICdpJywgJ2onLCAnaycsICdsJywgJ20nLCAnbicsICdvJywgJ3AnLCAncScsICdyJywgJ3MnLCAndCcsXG4gICAgJ3UnLCAndicsICd3JywgJ3gnLCAneScsICd6JywgJ2JyYWNlbGVmdCcsICdiYXInLCAnYnJhY2VyaWdodCcsICdhc2NpaXRpbGRlJywgJ2V4Y2xhbWRvd24nLCAnY2VudCcsICdzdGVybGluZycsXG4gICAgJ2ZyYWN0aW9uJywgJ3llbicsICdmbG9yaW4nLCAnc2VjdGlvbicsICdjdXJyZW5jeScsICdxdW90ZXNpbmdsZScsICdxdW90ZWRibGxlZnQnLCAnZ3VpbGxlbW90bGVmdCcsXG4gICAgJ2d1aWxzaW5nbGxlZnQnLCAnZ3VpbHNpbmdscmlnaHQnLCAnZmknLCAnZmwnLCAnZW5kYXNoJywgJ2RhZ2dlcicsICdkYWdnZXJkYmwnLCAncGVyaW9kY2VudGVyZWQnLCAncGFyYWdyYXBoJyxcbiAgICAnYnVsbGV0JywgJ3F1b3Rlc2luZ2xiYXNlJywgJ3F1b3RlZGJsYmFzZScsICdxdW90ZWRibHJpZ2h0JywgJ2d1aWxsZW1vdHJpZ2h0JywgJ2VsbGlwc2lzJywgJ3BlcnRob3VzYW5kJyxcbiAgICAncXVlc3Rpb25kb3duJywgJ2dyYXZlJywgJ2FjdXRlJywgJ2NpcmN1bWZsZXgnLCAndGlsZGUnLCAnbWFjcm9uJywgJ2JyZXZlJywgJ2RvdGFjY2VudCcsICdkaWVyZXNpcycsICdyaW5nJyxcbiAgICAnY2VkaWxsYScsICdodW5nYXJ1bWxhdXQnLCAnb2dvbmVrJywgJ2Nhcm9uJywgJ2VtZGFzaCcsICdBRScsICdvcmRmZW1pbmluZScsICdMc2xhc2gnLCAnT3NsYXNoJywgJ09FJyxcbiAgICAnb3JkbWFzY3VsaW5lJywgJ2FlJywgJ2RvdGxlc3NpJywgJ2xzbGFzaCcsICdvc2xhc2gnLCAnb2UnLCAnZ2VybWFuZGJscycsICdvbmVzdXBlcmlvcicsICdsb2dpY2Fsbm90JywgJ211JyxcbiAgICAndHJhZGVtYXJrJywgJ0V0aCcsICdvbmVoYWxmJywgJ3BsdXNtaW51cycsICdUaG9ybicsICdvbmVxdWFydGVyJywgJ2RpdmlkZScsICdicm9rZW5iYXInLCAnZGVncmVlJywgJ3Rob3JuJyxcbiAgICAndGhyZWVxdWFydGVycycsICd0d29zdXBlcmlvcicsICdyZWdpc3RlcmVkJywgJ21pbnVzJywgJ2V0aCcsICdtdWx0aXBseScsICd0aHJlZXN1cGVyaW9yJywgJ2NvcHlyaWdodCcsXG4gICAgJ0FhY3V0ZScsICdBY2lyY3VtZmxleCcsICdBZGllcmVzaXMnLCAnQWdyYXZlJywgJ0FyaW5nJywgJ0F0aWxkZScsICdDY2VkaWxsYScsICdFYWN1dGUnLCAnRWNpcmN1bWZsZXgnLFxuICAgICdFZGllcmVzaXMnLCAnRWdyYXZlJywgJ0lhY3V0ZScsICdJY2lyY3VtZmxleCcsICdJZGllcmVzaXMnLCAnSWdyYXZlJywgJ050aWxkZScsICdPYWN1dGUnLCAnT2NpcmN1bWZsZXgnLFxuICAgICdPZGllcmVzaXMnLCAnT2dyYXZlJywgJ090aWxkZScsICdTY2Fyb24nLCAnVWFjdXRlJywgJ1VjaXJjdW1mbGV4JywgJ1VkaWVyZXNpcycsICdVZ3JhdmUnLCAnWWFjdXRlJyxcbiAgICAnWWRpZXJlc2lzJywgJ1pjYXJvbicsICdhYWN1dGUnLCAnYWNpcmN1bWZsZXgnLCAnYWRpZXJlc2lzJywgJ2FncmF2ZScsICdhcmluZycsICdhdGlsZGUnLCAnY2NlZGlsbGEnLCAnZWFjdXRlJyxcbiAgICAnZWNpcmN1bWZsZXgnLCAnZWRpZXJlc2lzJywgJ2VncmF2ZScsICdpYWN1dGUnLCAnaWNpcmN1bWZsZXgnLCAnaWRpZXJlc2lzJywgJ2lncmF2ZScsICdudGlsZGUnLCAnb2FjdXRlJyxcbiAgICAnb2NpcmN1bWZsZXgnLCAnb2RpZXJlc2lzJywgJ29ncmF2ZScsICdvdGlsZGUnLCAnc2Nhcm9uJywgJ3VhY3V0ZScsICd1Y2lyY3VtZmxleCcsICd1ZGllcmVzaXMnLCAndWdyYXZlJyxcbiAgICAneWFjdXRlJywgJ3lkaWVyZXNpcycsICd6Y2Fyb24nLCAnZXhjbGFtc21hbGwnLCAnSHVuZ2FydW1sYXV0c21hbGwnLCAnZG9sbGFyb2xkc3R5bGUnLCAnZG9sbGFyc3VwZXJpb3InLFxuICAgICdhbXBlcnNhbmRzbWFsbCcsICdBY3V0ZXNtYWxsJywgJ3BhcmVubGVmdHN1cGVyaW9yJywgJ3BhcmVucmlnaHRzdXBlcmlvcicsICcyNjYgZmYnLCAnb25lZG90ZW5sZWFkZXInLFxuICAgICd6ZXJvb2xkc3R5bGUnLCAnb25lb2xkc3R5bGUnLCAndHdvb2xkc3R5bGUnLCAndGhyZWVvbGRzdHlsZScsICdmb3Vyb2xkc3R5bGUnLCAnZml2ZW9sZHN0eWxlJywgJ3NpeG9sZHN0eWxlJyxcbiAgICAnc2V2ZW5vbGRzdHlsZScsICdlaWdodG9sZHN0eWxlJywgJ25pbmVvbGRzdHlsZScsICdjb21tYXN1cGVyaW9yJywgJ3RocmVlcXVhcnRlcnNlbWRhc2gnLCAncGVyaW9kc3VwZXJpb3InLFxuICAgICdxdWVzdGlvbnNtYWxsJywgJ2FzdXBlcmlvcicsICdic3VwZXJpb3InLCAnY2VudHN1cGVyaW9yJywgJ2RzdXBlcmlvcicsICdlc3VwZXJpb3InLCAnaXN1cGVyaW9yJywgJ2xzdXBlcmlvcicsXG4gICAgJ21zdXBlcmlvcicsICduc3VwZXJpb3InLCAnb3N1cGVyaW9yJywgJ3JzdXBlcmlvcicsICdzc3VwZXJpb3InLCAndHN1cGVyaW9yJywgJ2ZmJywgJ2ZmaScsICdmZmwnLFxuICAgICdwYXJlbmxlZnRpbmZlcmlvcicsICdwYXJlbnJpZ2h0aW5mZXJpb3InLCAnQ2lyY3VtZmxleHNtYWxsJywgJ2h5cGhlbnN1cGVyaW9yJywgJ0dyYXZlc21hbGwnLCAnQXNtYWxsJyxcbiAgICAnQnNtYWxsJywgJ0NzbWFsbCcsICdEc21hbGwnLCAnRXNtYWxsJywgJ0ZzbWFsbCcsICdHc21hbGwnLCAnSHNtYWxsJywgJ0lzbWFsbCcsICdKc21hbGwnLCAnS3NtYWxsJywgJ0xzbWFsbCcsXG4gICAgJ01zbWFsbCcsICdOc21hbGwnLCAnT3NtYWxsJywgJ1BzbWFsbCcsICdRc21hbGwnLCAnUnNtYWxsJywgJ1NzbWFsbCcsICdUc21hbGwnLCAnVXNtYWxsJywgJ1ZzbWFsbCcsICdXc21hbGwnLFxuICAgICdYc21hbGwnLCAnWXNtYWxsJywgJ1pzbWFsbCcsICdjb2xvbm1vbmV0YXJ5JywgJ29uZWZpdHRlZCcsICdydXBpYWgnLCAnVGlsZGVzbWFsbCcsICdleGNsYW1kb3duc21hbGwnLFxuICAgICdjZW50b2xkc3R5bGUnLCAnTHNsYXNoc21hbGwnLCAnU2Nhcm9uc21hbGwnLCAnWmNhcm9uc21hbGwnLCAnRGllcmVzaXNzbWFsbCcsICdCcmV2ZXNtYWxsJywgJ0Nhcm9uc21hbGwnLFxuICAgICdEb3RhY2NlbnRzbWFsbCcsICdNYWNyb25zbWFsbCcsICdmaWd1cmVkYXNoJywgJ2h5cGhlbmluZmVyaW9yJywgJ09nb25la3NtYWxsJywgJ1JpbmdzbWFsbCcsICdDZWRpbGxhc21hbGwnLFxuICAgICdxdWVzdGlvbmRvd25zbWFsbCcsICdvbmVlaWdodGgnLCAndGhyZWVlaWdodGhzJywgJ2ZpdmVlaWdodGhzJywgJ3NldmVuZWlnaHRocycsICdvbmV0aGlyZCcsICd0d290aGlyZHMnLFxuICAgICd6ZXJvc3VwZXJpb3InLCAnZm91cnN1cGVyaW9yJywgJ2ZpdmVzdXBlcmlvcicsICdzaXhzdXBlcmlvcicsICdzZXZlbnN1cGVyaW9yJywgJ2VpZ2h0c3VwZXJpb3InLCAnbmluZXN1cGVyaW9yJyxcbiAgICAnemVyb2luZmVyaW9yJywgJ29uZWluZmVyaW9yJywgJ3R3b2luZmVyaW9yJywgJ3RocmVlaW5mZXJpb3InLCAnZm91cmluZmVyaW9yJywgJ2ZpdmVpbmZlcmlvcicsICdzaXhpbmZlcmlvcicsXG4gICAgJ3NldmVuaW5mZXJpb3InLCAnZWlnaHRpbmZlcmlvcicsICduaW5laW5mZXJpb3InLCAnY2VudGluZmVyaW9yJywgJ2RvbGxhcmluZmVyaW9yJywgJ3BlcmlvZGluZmVyaW9yJyxcbiAgICAnY29tbWFpbmZlcmlvcicsICdBZ3JhdmVzbWFsbCcsICdBYWN1dGVzbWFsbCcsICdBY2lyY3VtZmxleHNtYWxsJywgJ0F0aWxkZXNtYWxsJywgJ0FkaWVyZXNpc3NtYWxsJyxcbiAgICAnQXJpbmdzbWFsbCcsICdBRXNtYWxsJywgJ0NjZWRpbGxhc21hbGwnLCAnRWdyYXZlc21hbGwnLCAnRWFjdXRlc21hbGwnLCAnRWNpcmN1bWZsZXhzbWFsbCcsICdFZGllcmVzaXNzbWFsbCcsXG4gICAgJ0lncmF2ZXNtYWxsJywgJ0lhY3V0ZXNtYWxsJywgJ0ljaXJjdW1mbGV4c21hbGwnLCAnSWRpZXJlc2lzc21hbGwnLCAnRXRoc21hbGwnLCAnTnRpbGRlc21hbGwnLCAnT2dyYXZlc21hbGwnLFxuICAgICdPYWN1dGVzbWFsbCcsICdPY2lyY3VtZmxleHNtYWxsJywgJ090aWxkZXNtYWxsJywgJ09kaWVyZXNpc3NtYWxsJywgJ09Fc21hbGwnLCAnT3NsYXNoc21hbGwnLCAnVWdyYXZlc21hbGwnLFxuICAgICdVYWN1dGVzbWFsbCcsICdVY2lyY3VtZmxleHNtYWxsJywgJ1VkaWVyZXNpc3NtYWxsJywgJ1lhY3V0ZXNtYWxsJywgJ1Rob3Juc21hbGwnLCAnWWRpZXJlc2lzc21hbGwnLCAnMDAxLjAwMCcsXG4gICAgJzAwMS4wMDEnLCAnMDAxLjAwMicsICcwMDEuMDAzJywgJ0JsYWNrJywgJ0JvbGQnLCAnQm9vaycsICdMaWdodCcsICdNZWRpdW0nLCAnUmVndWxhcicsICdSb21hbicsICdTZW1pYm9sZCddO1xuXG52YXIgY2ZmU3RhbmRhcmRFbmNvZGluZyA9IFtcbiAgICAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJyxcbiAgICAnJywgJycsICcnLCAnJywgJ3NwYWNlJywgJ2V4Y2xhbScsICdxdW90ZWRibCcsICdudW1iZXJzaWduJywgJ2RvbGxhcicsICdwZXJjZW50JywgJ2FtcGVyc2FuZCcsICdxdW90ZXJpZ2h0JyxcbiAgICAncGFyZW5sZWZ0JywgJ3BhcmVucmlnaHQnLCAnYXN0ZXJpc2snLCAncGx1cycsICdjb21tYScsICdoeXBoZW4nLCAncGVyaW9kJywgJ3NsYXNoJywgJ3plcm8nLCAnb25lJywgJ3R3bycsXG4gICAgJ3RocmVlJywgJ2ZvdXInLCAnZml2ZScsICdzaXgnLCAnc2V2ZW4nLCAnZWlnaHQnLCAnbmluZScsICdjb2xvbicsICdzZW1pY29sb24nLCAnbGVzcycsICdlcXVhbCcsICdncmVhdGVyJyxcbiAgICAncXVlc3Rpb24nLCAnYXQnLCAnQScsICdCJywgJ0MnLCAnRCcsICdFJywgJ0YnLCAnRycsICdIJywgJ0knLCAnSicsICdLJywgJ0wnLCAnTScsICdOJywgJ08nLCAnUCcsICdRJywgJ1InLCAnUycsXG4gICAgJ1QnLCAnVScsICdWJywgJ1cnLCAnWCcsICdZJywgJ1onLCAnYnJhY2tldGxlZnQnLCAnYmFja3NsYXNoJywgJ2JyYWNrZXRyaWdodCcsICdhc2NpaWNpcmN1bScsICd1bmRlcnNjb3JlJyxcbiAgICAncXVvdGVsZWZ0JywgJ2EnLCAnYicsICdjJywgJ2QnLCAnZScsICdmJywgJ2cnLCAnaCcsICdpJywgJ2onLCAnaycsICdsJywgJ20nLCAnbicsICdvJywgJ3AnLCAncScsICdyJywgJ3MnLCAndCcsXG4gICAgJ3UnLCAndicsICd3JywgJ3gnLCAneScsICd6JywgJ2JyYWNlbGVmdCcsICdiYXInLCAnYnJhY2VyaWdodCcsICdhc2NpaXRpbGRlJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLFxuICAgICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJyxcbiAgICAnZXhjbGFtZG93bicsICdjZW50JywgJ3N0ZXJsaW5nJywgJ2ZyYWN0aW9uJywgJ3llbicsICdmbG9yaW4nLCAnc2VjdGlvbicsICdjdXJyZW5jeScsICdxdW90ZXNpbmdsZScsXG4gICAgJ3F1b3RlZGJsbGVmdCcsICdndWlsbGVtb3RsZWZ0JywgJ2d1aWxzaW5nbGxlZnQnLCAnZ3VpbHNpbmdscmlnaHQnLCAnZmknLCAnZmwnLCAnJywgJ2VuZGFzaCcsICdkYWdnZXInLFxuICAgICdkYWdnZXJkYmwnLCAncGVyaW9kY2VudGVyZWQnLCAnJywgJ3BhcmFncmFwaCcsICdidWxsZXQnLCAncXVvdGVzaW5nbGJhc2UnLCAncXVvdGVkYmxiYXNlJywgJ3F1b3RlZGJscmlnaHQnLFxuICAgICdndWlsbGVtb3RyaWdodCcsICdlbGxpcHNpcycsICdwZXJ0aG91c2FuZCcsICcnLCAncXVlc3Rpb25kb3duJywgJycsICdncmF2ZScsICdhY3V0ZScsICdjaXJjdW1mbGV4JywgJ3RpbGRlJyxcbiAgICAnbWFjcm9uJywgJ2JyZXZlJywgJ2RvdGFjY2VudCcsICdkaWVyZXNpcycsICcnLCAncmluZycsICdjZWRpbGxhJywgJycsICdodW5nYXJ1bWxhdXQnLCAnb2dvbmVrJywgJ2Nhcm9uJyxcbiAgICAnZW1kYXNoJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICdBRScsICcnLCAnb3JkZmVtaW5pbmUnLCAnJywgJycsICcnLFxuICAgICcnLCAnTHNsYXNoJywgJ09zbGFzaCcsICdPRScsICdvcmRtYXNjdWxpbmUnLCAnJywgJycsICcnLCAnJywgJycsICdhZScsICcnLCAnJywgJycsICdkb3RsZXNzaScsICcnLCAnJyxcbiAgICAnbHNsYXNoJywgJ29zbGFzaCcsICdvZScsICdnZXJtYW5kYmxzJ107XG5cbnZhciBjZmZFeHBlcnRFbmNvZGluZyA9IFtcbiAgICAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJyxcbiAgICAnJywgJycsICcnLCAnJywgJ3NwYWNlJywgJ2V4Y2xhbXNtYWxsJywgJ0h1bmdhcnVtbGF1dHNtYWxsJywgJycsICdkb2xsYXJvbGRzdHlsZScsICdkb2xsYXJzdXBlcmlvcicsXG4gICAgJ2FtcGVyc2FuZHNtYWxsJywgJ0FjdXRlc21hbGwnLCAncGFyZW5sZWZ0c3VwZXJpb3InLCAncGFyZW5yaWdodHN1cGVyaW9yJywgJ3R3b2RvdGVubGVhZGVyJywgJ29uZWRvdGVubGVhZGVyJyxcbiAgICAnY29tbWEnLCAnaHlwaGVuJywgJ3BlcmlvZCcsICdmcmFjdGlvbicsICd6ZXJvb2xkc3R5bGUnLCAnb25lb2xkc3R5bGUnLCAndHdvb2xkc3R5bGUnLCAndGhyZWVvbGRzdHlsZScsXG4gICAgJ2ZvdXJvbGRzdHlsZScsICdmaXZlb2xkc3R5bGUnLCAnc2l4b2xkc3R5bGUnLCAnc2V2ZW5vbGRzdHlsZScsICdlaWdodG9sZHN0eWxlJywgJ25pbmVvbGRzdHlsZScsICdjb2xvbicsXG4gICAgJ3NlbWljb2xvbicsICdjb21tYXN1cGVyaW9yJywgJ3RocmVlcXVhcnRlcnNlbWRhc2gnLCAncGVyaW9kc3VwZXJpb3InLCAncXVlc3Rpb25zbWFsbCcsICcnLCAnYXN1cGVyaW9yJyxcbiAgICAnYnN1cGVyaW9yJywgJ2NlbnRzdXBlcmlvcicsICdkc3VwZXJpb3InLCAnZXN1cGVyaW9yJywgJycsICcnLCAnaXN1cGVyaW9yJywgJycsICcnLCAnbHN1cGVyaW9yJywgJ21zdXBlcmlvcicsXG4gICAgJ25zdXBlcmlvcicsICdvc3VwZXJpb3InLCAnJywgJycsICdyc3VwZXJpb3InLCAnc3N1cGVyaW9yJywgJ3RzdXBlcmlvcicsICcnLCAnZmYnLCAnZmknLCAnZmwnLCAnZmZpJywgJ2ZmbCcsXG4gICAgJ3BhcmVubGVmdGluZmVyaW9yJywgJycsICdwYXJlbnJpZ2h0aW5mZXJpb3InLCAnQ2lyY3VtZmxleHNtYWxsJywgJ2h5cGhlbnN1cGVyaW9yJywgJ0dyYXZlc21hbGwnLCAnQXNtYWxsJyxcbiAgICAnQnNtYWxsJywgJ0NzbWFsbCcsICdEc21hbGwnLCAnRXNtYWxsJywgJ0ZzbWFsbCcsICdHc21hbGwnLCAnSHNtYWxsJywgJ0lzbWFsbCcsICdKc21hbGwnLCAnS3NtYWxsJywgJ0xzbWFsbCcsXG4gICAgJ01zbWFsbCcsICdOc21hbGwnLCAnT3NtYWxsJywgJ1BzbWFsbCcsICdRc21hbGwnLCAnUnNtYWxsJywgJ1NzbWFsbCcsICdUc21hbGwnLCAnVXNtYWxsJywgJ1ZzbWFsbCcsICdXc21hbGwnLFxuICAgICdYc21hbGwnLCAnWXNtYWxsJywgJ1pzbWFsbCcsICdjb2xvbm1vbmV0YXJ5JywgJ29uZWZpdHRlZCcsICdydXBpYWgnLCAnVGlsZGVzbWFsbCcsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLFxuICAgICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsXG4gICAgJ2V4Y2xhbWRvd25zbWFsbCcsICdjZW50b2xkc3R5bGUnLCAnTHNsYXNoc21hbGwnLCAnJywgJycsICdTY2Fyb25zbWFsbCcsICdaY2Fyb25zbWFsbCcsICdEaWVyZXNpc3NtYWxsJyxcbiAgICAnQnJldmVzbWFsbCcsICdDYXJvbnNtYWxsJywgJycsICdEb3RhY2NlbnRzbWFsbCcsICcnLCAnJywgJ01hY3JvbnNtYWxsJywgJycsICcnLCAnZmlndXJlZGFzaCcsICdoeXBoZW5pbmZlcmlvcicsXG4gICAgJycsICcnLCAnT2dvbmVrc21hbGwnLCAnUmluZ3NtYWxsJywgJ0NlZGlsbGFzbWFsbCcsICcnLCAnJywgJycsICdvbmVxdWFydGVyJywgJ29uZWhhbGYnLCAndGhyZWVxdWFydGVycycsXG4gICAgJ3F1ZXN0aW9uZG93bnNtYWxsJywgJ29uZWVpZ2h0aCcsICd0aHJlZWVpZ2h0aHMnLCAnZml2ZWVpZ2h0aHMnLCAnc2V2ZW5laWdodGhzJywgJ29uZXRoaXJkJywgJ3R3b3RoaXJkcycsICcnLFxuICAgICcnLCAnemVyb3N1cGVyaW9yJywgJ29uZXN1cGVyaW9yJywgJ3R3b3N1cGVyaW9yJywgJ3RocmVlc3VwZXJpb3InLCAnZm91cnN1cGVyaW9yJywgJ2ZpdmVzdXBlcmlvcicsXG4gICAgJ3NpeHN1cGVyaW9yJywgJ3NldmVuc3VwZXJpb3InLCAnZWlnaHRzdXBlcmlvcicsICduaW5lc3VwZXJpb3InLCAnemVyb2luZmVyaW9yJywgJ29uZWluZmVyaW9yJywgJ3R3b2luZmVyaW9yJyxcbiAgICAndGhyZWVpbmZlcmlvcicsICdmb3VyaW5mZXJpb3InLCAnZml2ZWluZmVyaW9yJywgJ3NpeGluZmVyaW9yJywgJ3NldmVuaW5mZXJpb3InLCAnZWlnaHRpbmZlcmlvcicsXG4gICAgJ25pbmVpbmZlcmlvcicsICdjZW50aW5mZXJpb3InLCAnZG9sbGFyaW5mZXJpb3InLCAncGVyaW9kaW5mZXJpb3InLCAnY29tbWFpbmZlcmlvcicsICdBZ3JhdmVzbWFsbCcsXG4gICAgJ0FhY3V0ZXNtYWxsJywgJ0FjaXJjdW1mbGV4c21hbGwnLCAnQXRpbGRlc21hbGwnLCAnQWRpZXJlc2lzc21hbGwnLCAnQXJpbmdzbWFsbCcsICdBRXNtYWxsJywgJ0NjZWRpbGxhc21hbGwnLFxuICAgICdFZ3JhdmVzbWFsbCcsICdFYWN1dGVzbWFsbCcsICdFY2lyY3VtZmxleHNtYWxsJywgJ0VkaWVyZXNpc3NtYWxsJywgJ0lncmF2ZXNtYWxsJywgJ0lhY3V0ZXNtYWxsJyxcbiAgICAnSWNpcmN1bWZsZXhzbWFsbCcsICdJZGllcmVzaXNzbWFsbCcsICdFdGhzbWFsbCcsICdOdGlsZGVzbWFsbCcsICdPZ3JhdmVzbWFsbCcsICdPYWN1dGVzbWFsbCcsXG4gICAgJ09jaXJjdW1mbGV4c21hbGwnLCAnT3RpbGRlc21hbGwnLCAnT2RpZXJlc2lzc21hbGwnLCAnT0VzbWFsbCcsICdPc2xhc2hzbWFsbCcsICdVZ3JhdmVzbWFsbCcsICdVYWN1dGVzbWFsbCcsXG4gICAgJ1VjaXJjdW1mbGV4c21hbGwnLCAnVWRpZXJlc2lzc21hbGwnLCAnWWFjdXRlc21hbGwnLCAnVGhvcm5zbWFsbCcsICdZZGllcmVzaXNzbWFsbCddO1xuXG52YXIgc3RhbmRhcmROYW1lcyA9IFtcbiAgICAnLm5vdGRlZicsICcubnVsbCcsICdub25tYXJraW5ncmV0dXJuJywgJ3NwYWNlJywgJ2V4Y2xhbScsICdxdW90ZWRibCcsICdudW1iZXJzaWduJywgJ2RvbGxhcicsICdwZXJjZW50JyxcbiAgICAnYW1wZXJzYW5kJywgJ3F1b3Rlc2luZ2xlJywgJ3BhcmVubGVmdCcsICdwYXJlbnJpZ2h0JywgJ2FzdGVyaXNrJywgJ3BsdXMnLCAnY29tbWEnLCAnaHlwaGVuJywgJ3BlcmlvZCcsICdzbGFzaCcsXG4gICAgJ3plcm8nLCAnb25lJywgJ3R3bycsICd0aHJlZScsICdmb3VyJywgJ2ZpdmUnLCAnc2l4JywgJ3NldmVuJywgJ2VpZ2h0JywgJ25pbmUnLCAnY29sb24nLCAnc2VtaWNvbG9uJywgJ2xlc3MnLFxuICAgICdlcXVhbCcsICdncmVhdGVyJywgJ3F1ZXN0aW9uJywgJ2F0JywgJ0EnLCAnQicsICdDJywgJ0QnLCAnRScsICdGJywgJ0cnLCAnSCcsICdJJywgJ0onLCAnSycsICdMJywgJ00nLCAnTicsICdPJyxcbiAgICAnUCcsICdRJywgJ1InLCAnUycsICdUJywgJ1UnLCAnVicsICdXJywgJ1gnLCAnWScsICdaJywgJ2JyYWNrZXRsZWZ0JywgJ2JhY2tzbGFzaCcsICdicmFja2V0cmlnaHQnLFxuICAgICdhc2NpaWNpcmN1bScsICd1bmRlcnNjb3JlJywgJ2dyYXZlJywgJ2EnLCAnYicsICdjJywgJ2QnLCAnZScsICdmJywgJ2cnLCAnaCcsICdpJywgJ2onLCAnaycsICdsJywgJ20nLCAnbicsICdvJyxcbiAgICAncCcsICdxJywgJ3InLCAncycsICd0JywgJ3UnLCAndicsICd3JywgJ3gnLCAneScsICd6JywgJ2JyYWNlbGVmdCcsICdiYXInLCAnYnJhY2VyaWdodCcsICdhc2NpaXRpbGRlJyxcbiAgICAnQWRpZXJlc2lzJywgJ0FyaW5nJywgJ0NjZWRpbGxhJywgJ0VhY3V0ZScsICdOdGlsZGUnLCAnT2RpZXJlc2lzJywgJ1VkaWVyZXNpcycsICdhYWN1dGUnLCAnYWdyYXZlJyxcbiAgICAnYWNpcmN1bWZsZXgnLCAnYWRpZXJlc2lzJywgJ2F0aWxkZScsICdhcmluZycsICdjY2VkaWxsYScsICdlYWN1dGUnLCAnZWdyYXZlJywgJ2VjaXJjdW1mbGV4JywgJ2VkaWVyZXNpcycsXG4gICAgJ2lhY3V0ZScsICdpZ3JhdmUnLCAnaWNpcmN1bWZsZXgnLCAnaWRpZXJlc2lzJywgJ250aWxkZScsICdvYWN1dGUnLCAnb2dyYXZlJywgJ29jaXJjdW1mbGV4JywgJ29kaWVyZXNpcycsXG4gICAgJ290aWxkZScsICd1YWN1dGUnLCAndWdyYXZlJywgJ3VjaXJjdW1mbGV4JywgJ3VkaWVyZXNpcycsICdkYWdnZXInLCAnZGVncmVlJywgJ2NlbnQnLCAnc3RlcmxpbmcnLCAnc2VjdGlvbicsXG4gICAgJ2J1bGxldCcsICdwYXJhZ3JhcGgnLCAnZ2VybWFuZGJscycsICdyZWdpc3RlcmVkJywgJ2NvcHlyaWdodCcsICd0cmFkZW1hcmsnLCAnYWN1dGUnLCAnZGllcmVzaXMnLCAnbm90ZXF1YWwnLFxuICAgICdBRScsICdPc2xhc2gnLCAnaW5maW5pdHknLCAncGx1c21pbnVzJywgJ2xlc3NlcXVhbCcsICdncmVhdGVyZXF1YWwnLCAneWVuJywgJ211JywgJ3BhcnRpYWxkaWZmJywgJ3N1bW1hdGlvbicsXG4gICAgJ3Byb2R1Y3QnLCAncGknLCAnaW50ZWdyYWwnLCAnb3JkZmVtaW5pbmUnLCAnb3JkbWFzY3VsaW5lJywgJ09tZWdhJywgJ2FlJywgJ29zbGFzaCcsICdxdWVzdGlvbmRvd24nLFxuICAgICdleGNsYW1kb3duJywgJ2xvZ2ljYWxub3QnLCAncmFkaWNhbCcsICdmbG9yaW4nLCAnYXBwcm94ZXF1YWwnLCAnRGVsdGEnLCAnZ3VpbGxlbW90bGVmdCcsICdndWlsbGVtb3RyaWdodCcsXG4gICAgJ2VsbGlwc2lzJywgJ25vbmJyZWFraW5nc3BhY2UnLCAnQWdyYXZlJywgJ0F0aWxkZScsICdPdGlsZGUnLCAnT0UnLCAnb2UnLCAnZW5kYXNoJywgJ2VtZGFzaCcsICdxdW90ZWRibGxlZnQnLFxuICAgICdxdW90ZWRibHJpZ2h0JywgJ3F1b3RlbGVmdCcsICdxdW90ZXJpZ2h0JywgJ2RpdmlkZScsICdsb3plbmdlJywgJ3lkaWVyZXNpcycsICdZZGllcmVzaXMnLCAnZnJhY3Rpb24nLFxuICAgICdjdXJyZW5jeScsICdndWlsc2luZ2xsZWZ0JywgJ2d1aWxzaW5nbHJpZ2h0JywgJ2ZpJywgJ2ZsJywgJ2RhZ2dlcmRibCcsICdwZXJpb2RjZW50ZXJlZCcsICdxdW90ZXNpbmdsYmFzZScsXG4gICAgJ3F1b3RlZGJsYmFzZScsICdwZXJ0aG91c2FuZCcsICdBY2lyY3VtZmxleCcsICdFY2lyY3VtZmxleCcsICdBYWN1dGUnLCAnRWRpZXJlc2lzJywgJ0VncmF2ZScsICdJYWN1dGUnLFxuICAgICdJY2lyY3VtZmxleCcsICdJZGllcmVzaXMnLCAnSWdyYXZlJywgJ09hY3V0ZScsICdPY2lyY3VtZmxleCcsICdhcHBsZScsICdPZ3JhdmUnLCAnVWFjdXRlJywgJ1VjaXJjdW1mbGV4JyxcbiAgICAnVWdyYXZlJywgJ2RvdGxlc3NpJywgJ2NpcmN1bWZsZXgnLCAndGlsZGUnLCAnbWFjcm9uJywgJ2JyZXZlJywgJ2RvdGFjY2VudCcsICdyaW5nJywgJ2NlZGlsbGEnLCAnaHVuZ2FydW1sYXV0JyxcbiAgICAnb2dvbmVrJywgJ2Nhcm9uJywgJ0xzbGFzaCcsICdsc2xhc2gnLCAnU2Nhcm9uJywgJ3NjYXJvbicsICdaY2Fyb24nLCAnemNhcm9uJywgJ2Jyb2tlbmJhcicsICdFdGgnLCAnZXRoJyxcbiAgICAnWWFjdXRlJywgJ3lhY3V0ZScsICdUaG9ybicsICd0aG9ybicsICdtaW51cycsICdtdWx0aXBseScsICdvbmVzdXBlcmlvcicsICd0d29zdXBlcmlvcicsICd0aHJlZXN1cGVyaW9yJyxcbiAgICAnb25laGFsZicsICdvbmVxdWFydGVyJywgJ3RocmVlcXVhcnRlcnMnLCAnZnJhbmMnLCAnR2JyZXZlJywgJ2dicmV2ZScsICdJZG90YWNjZW50JywgJ1NjZWRpbGxhJywgJ3NjZWRpbGxhJyxcbiAgICAnQ2FjdXRlJywgJ2NhY3V0ZScsICdDY2Fyb24nLCAnY2Nhcm9uJywgJ2Rjcm9hdCddO1xuXG4vKipcbiAqIFRoaXMgaXMgdGhlIGVuY29kaW5nIHVzZWQgZm9yIGZvbnRzIGNyZWF0ZWQgZnJvbSBzY3JhdGNoLlxuICogSXQgbG9vcHMgdGhyb3VnaCBhbGwgZ2x5cGhzIGFuZCBmaW5kcyB0aGUgYXBwcm9wcmlhdGUgdW5pY29kZSB2YWx1ZS5cbiAqIFNpbmNlIGl0J3MgbGluZWFyIHRpbWUsIG90aGVyIGVuY29kaW5ncyB3aWxsIGJlIGZhc3Rlci5cbiAqIEBleHBvcnRzIG9wZW50eXBlLkRlZmF1bHRFbmNvZGluZ1xuICogQGNsYXNzXG4gKiBAY29uc3RydWN0b3JcbiAqIEBwYXJhbSB7b3BlbnR5cGUuRm9udH1cbiAqL1xuZnVuY3Rpb24gRGVmYXVsdEVuY29kaW5nKGZvbnQpIHtcbiAgICB0aGlzLmZvbnQgPSBmb250O1xufVxuXG5EZWZhdWx0RW5jb2RpbmcucHJvdG90eXBlLmNoYXJUb0dseXBoSW5kZXggPSBmdW5jdGlvbihjKSB7XG4gICAgdmFyIGNvZGUgPSBjLmNoYXJDb2RlQXQoMCk7XG4gICAgdmFyIGdseXBocyA9IHRoaXMuZm9udC5nbHlwaHM7XG4gICAgaWYgKGdseXBocykge1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGdseXBocy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICAgICAgdmFyIGdseXBoID0gZ2x5cGhzLmdldChpKTtcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgZ2x5cGgudW5pY29kZXMubGVuZ3RoOyBqICs9IDEpIHtcbiAgICAgICAgICAgICAgICBpZiAoZ2x5cGgudW5pY29kZXNbal0gPT09IGNvZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxufTtcblxuLyoqXG4gKiBAZXhwb3J0cyBvcGVudHlwZS5DbWFwRW5jb2RpbmdcbiAqIEBjbGFzc1xuICogQGNvbnN0cnVjdG9yXG4gKiBAcGFyYW0ge09iamVjdH0gY21hcCAtIGEgb2JqZWN0IHdpdGggdGhlIGNtYXAgZW5jb2RlZCBkYXRhXG4gKi9cbmZ1bmN0aW9uIENtYXBFbmNvZGluZyhjbWFwKSB7XG4gICAgdGhpcy5jbWFwID0gY21hcDtcbn1cblxuLyoqXG4gKiBAcGFyYW0gIHtzdHJpbmd9IGMgLSB0aGUgY2hhcmFjdGVyXG4gKiBAcmV0dXJuIHtudW1iZXJ9IFRoZSBnbHlwaCBpbmRleC5cbiAqL1xuQ21hcEVuY29kaW5nLnByb3RvdHlwZS5jaGFyVG9HbHlwaEluZGV4ID0gZnVuY3Rpb24oYykge1xuICAgIHJldHVybiB0aGlzLmNtYXAuZ2x5cGhJbmRleE1hcFtjLmNoYXJDb2RlQXQoMCldIHx8IDA7XG59O1xuXG4vKipcbiAqIEBleHBvcnRzIG9wZW50eXBlLkNmZkVuY29kaW5nXG4gKiBAY2xhc3NcbiAqIEBjb25zdHJ1Y3RvclxuICogQHBhcmFtIHtzdHJpbmd9IGVuY29kaW5nIC0gVGhlIGVuY29kaW5nXG4gKiBAcGFyYW0ge0FycmF5fSBjaGFyc2V0IC0gVGhlIGNoYXJjYXRlciBzZXQuXG4gKi9cbmZ1bmN0aW9uIENmZkVuY29kaW5nKGVuY29kaW5nLCBjaGFyc2V0KSB7XG4gICAgdGhpcy5lbmNvZGluZyA9IGVuY29kaW5nO1xuICAgIHRoaXMuY2hhcnNldCA9IGNoYXJzZXQ7XG59XG5cbi8qKlxuICogQHBhcmFtICB7c3RyaW5nfSBzIC0gVGhlIGNoYXJhY3RlclxuICogQHJldHVybiB7bnVtYmVyfSBUaGUgaW5kZXguXG4gKi9cbkNmZkVuY29kaW5nLnByb3RvdHlwZS5jaGFyVG9HbHlwaEluZGV4ID0gZnVuY3Rpb24ocykge1xuICAgIHZhciBjb2RlID0gcy5jaGFyQ29kZUF0KDApO1xuICAgIHZhciBjaGFyTmFtZSA9IHRoaXMuZW5jb2RpbmdbY29kZV07XG4gICAgcmV0dXJuIHRoaXMuY2hhcnNldC5pbmRleE9mKGNoYXJOYW1lKTtcbn07XG5cbi8qKlxuICogQGV4cG9ydHMgb3BlbnR5cGUuR2x5cGhOYW1lc1xuICogQGNsYXNzXG4gKiBAY29uc3RydWN0b3JcbiAqIEBwYXJhbSB7T2JqZWN0fSBwb3N0XG4gKi9cbmZ1bmN0aW9uIEdseXBoTmFtZXMocG9zdCkge1xuICAgIHZhciBpO1xuICAgIHN3aXRjaCAocG9zdC52ZXJzaW9uKSB7XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgIHRoaXMubmFtZXMgPSBleHBvcnRzLnN0YW5kYXJkTmFtZXMuc2xpY2UoKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICB0aGlzLm5hbWVzID0gbmV3IEFycmF5KHBvc3QubnVtYmVyT2ZHbHlwaHMpO1xuICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IHBvc3QubnVtYmVyT2ZHbHlwaHM7IGkrKykge1xuICAgICAgICAgICAgICAgIGlmIChwb3N0LmdseXBoTmFtZUluZGV4W2ldIDwgZXhwb3J0cy5zdGFuZGFyZE5hbWVzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm5hbWVzW2ldID0gZXhwb3J0cy5zdGFuZGFyZE5hbWVzW3Bvc3QuZ2x5cGhOYW1lSW5kZXhbaV1dO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubmFtZXNbaV0gPSBwb3N0Lm5hbWVzW3Bvc3QuZ2x5cGhOYW1lSW5kZXhbaV0gLSBleHBvcnRzLnN0YW5kYXJkTmFtZXMubGVuZ3RoXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDIuNTpcbiAgICAgICAgICAgIHRoaXMubmFtZXMgPSBuZXcgQXJyYXkocG9zdC5udW1iZXJPZkdseXBocyk7XG4gICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgcG9zdC5udW1iZXJPZkdseXBoczsgaSsrKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5uYW1lc1tpXSA9IGV4cG9ydHMuc3RhbmRhcmROYW1lc1tpICsgcG9zdC5nbHlwaE5hbWVJbmRleFtpXV07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICB0aGlzLm5hbWVzID0gW107XG4gICAgICAgICAgICBicmVhaztcbiAgICB9XG59XG5cbi8qKlxuICogR2V0cyB0aGUgaW5kZXggb2YgYSBnbHlwaCBieSBuYW1lLlxuICogQHBhcmFtICB7c3RyaW5nfSBuYW1lIC0gVGhlIGdseXBoIG5hbWVcbiAqIEByZXR1cm4ge251bWJlcn0gVGhlIGluZGV4XG4gKi9cbkdseXBoTmFtZXMucHJvdG90eXBlLm5hbWVUb0dseXBoSW5kZXggPSBmdW5jdGlvbihuYW1lKSB7XG4gICAgcmV0dXJuIHRoaXMubmFtZXMuaW5kZXhPZihuYW1lKTtcbn07XG5cbi8qKlxuICogQHBhcmFtICB7bnVtYmVyfSBnaWRcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuR2x5cGhOYW1lcy5wcm90b3R5cGUuZ2x5cGhJbmRleFRvTmFtZSA9IGZ1bmN0aW9uKGdpZCkge1xuICAgIHJldHVybiB0aGlzLm5hbWVzW2dpZF07XG59O1xuXG4vKipcbiAqIEBhbGlhcyBvcGVudHlwZS5hZGRHbHlwaE5hbWVzXG4gKiBAcGFyYW0ge29wZW50eXBlLkZvbnR9XG4gKi9cbmZ1bmN0aW9uIGFkZEdseXBoTmFtZXMoZm9udCkge1xuICAgIHZhciBnbHlwaDtcbiAgICB2YXIgZ2x5cGhJbmRleE1hcCA9IGZvbnQudGFibGVzLmNtYXAuZ2x5cGhJbmRleE1hcDtcbiAgICB2YXIgY2hhckNvZGVzID0gT2JqZWN0LmtleXMoZ2x5cGhJbmRleE1hcCk7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoYXJDb2Rlcy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICB2YXIgYyA9IGNoYXJDb2Rlc1tpXTtcbiAgICAgICAgdmFyIGdseXBoSW5kZXggPSBnbHlwaEluZGV4TWFwW2NdO1xuICAgICAgICBnbHlwaCA9IGZvbnQuZ2x5cGhzLmdldChnbHlwaEluZGV4KTtcbiAgICAgICAgZ2x5cGguYWRkVW5pY29kZShwYXJzZUludChjKSk7XG4gICAgfVxuXG4gICAgZm9yIChpID0gMDsgaSA8IGZvbnQuZ2x5cGhzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICAgIGdseXBoID0gZm9udC5nbHlwaHMuZ2V0KGkpO1xuICAgICAgICBpZiAoZm9udC5jZmZFbmNvZGluZykge1xuICAgICAgICAgICAgZ2x5cGgubmFtZSA9IGZvbnQuY2ZmRW5jb2RpbmcuY2hhcnNldFtpXTtcbiAgICAgICAgfSBlbHNlIGlmIChmb250LmdseXBoTmFtZXMubmFtZXMpIHtcbiAgICAgICAgICAgIGdseXBoLm5hbWUgPSBmb250LmdseXBoTmFtZXMuZ2x5cGhJbmRleFRvTmFtZShpKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0cy5jZmZTdGFuZGFyZFN0cmluZ3MgPSBjZmZTdGFuZGFyZFN0cmluZ3M7XG5leHBvcnRzLmNmZlN0YW5kYXJkRW5jb2RpbmcgPSBjZmZTdGFuZGFyZEVuY29kaW5nO1xuZXhwb3J0cy5jZmZFeHBlcnRFbmNvZGluZyA9IGNmZkV4cGVydEVuY29kaW5nO1xuZXhwb3J0cy5zdGFuZGFyZE5hbWVzID0gc3RhbmRhcmROYW1lcztcbmV4cG9ydHMuRGVmYXVsdEVuY29kaW5nID0gRGVmYXVsdEVuY29kaW5nO1xuZXhwb3J0cy5DbWFwRW5jb2RpbmcgPSBDbWFwRW5jb2Rpbmc7XG5leHBvcnRzLkNmZkVuY29kaW5nID0gQ2ZmRW5jb2Rpbmc7XG5leHBvcnRzLkdseXBoTmFtZXMgPSBHbHlwaE5hbWVzO1xuZXhwb3J0cy5hZGRHbHlwaE5hbWVzID0gYWRkR2x5cGhOYW1lcztcbiIsIi8vIFRoZSBGb250IG9iamVjdFxuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBwYXRoID0gcmVxdWlyZSgnLi9wYXRoJyk7XG52YXIgc2ZudCA9IHJlcXVpcmUoJy4vdGFibGVzL3NmbnQnKTtcbnZhciBlbmNvZGluZyA9IHJlcXVpcmUoJy4vZW5jb2RpbmcnKTtcbnZhciBnbHlwaHNldCA9IHJlcXVpcmUoJy4vZ2x5cGhzZXQnKTtcbnZhciBTdWJzdGl0dXRpb24gPSByZXF1aXJlKCcuL3N1YnN0aXR1dGlvbicpO1xudmFyIHV0aWwgPSByZXF1aXJlKCcuL3V0aWwnKTtcblxuLyoqXG4gKiBAdHlwZWRlZiBGb250T3B0aW9uc1xuICogQHR5cGUgT2JqZWN0XG4gKiBAcHJvcGVydHkge0Jvb2xlYW59IGVtcHR5IC0gd2hldGhlciB0byBjcmVhdGUgYSBuZXcgZW1wdHkgZm9udFxuICogQHByb3BlcnR5IHtzdHJpbmd9IGZhbWlseU5hbWVcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBzdHlsZU5hbWVcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nPX0gZnVsbE5hbWVcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nPX0gcG9zdFNjcmlwdE5hbWVcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nPX0gZGVzaWduZXJcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nPX0gZGVzaWduZXJVUkxcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nPX0gbWFudWZhY3R1cmVyXG4gKiBAcHJvcGVydHkge3N0cmluZz19IG1hbnVmYWN0dXJlclVSTFxuICogQHByb3BlcnR5IHtzdHJpbmc9fSBsaWNlbnNlXG4gKiBAcHJvcGVydHkge3N0cmluZz19IGxpY2Vuc2VVUkxcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nPX0gdmVyc2lvblxuICogQHByb3BlcnR5IHtzdHJpbmc9fSBkZXNjcmlwdGlvblxuICogQHByb3BlcnR5IHtzdHJpbmc9fSBjb3B5cmlnaHRcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nPX0gdHJhZGVtYXJrXG4gKiBAcHJvcGVydHkge051bWJlcn0gdW5pdHNQZXJFbVxuICogQHByb3BlcnR5IHtOdW1iZXJ9IGFzY2VuZGVyXG4gKiBAcHJvcGVydHkge051bWJlcn0gZGVzY2VuZGVyXG4gKiBAcHJvcGVydHkge051bWJlcn0gY3JlYXRlZFRpbWVzdGFtcFxuICogQHByb3BlcnR5IHtzdHJpbmc9fSB3ZWlnaHRDbGFzc1xuICogQHByb3BlcnR5IHtzdHJpbmc9fSB3aWR0aENsYXNzXG4gKiBAcHJvcGVydHkge3N0cmluZz19IGZzU2VsZWN0aW9uXG4gKi9cblxuLyoqXG4gKiBBIEZvbnQgcmVwcmVzZW50cyBhIGxvYWRlZCBPcGVuVHlwZSBmb250IGZpbGUuXG4gKiBJdCBjb250YWlucyBhIHNldCBvZiBnbHlwaHMgYW5kIG1ldGhvZHMgdG8gZHJhdyB0ZXh0IG9uIGEgZHJhd2luZyBjb250ZXh0LFxuICogb3IgdG8gZ2V0IGEgcGF0aCByZXByZXNlbnRpbmcgdGhlIHRleHQuXG4gKiBAZXhwb3J0cyBvcGVudHlwZS5Gb250XG4gKiBAY2xhc3NcbiAqIEBwYXJhbSB7Rm9udE9wdGlvbnN9XG4gKiBAY29uc3RydWN0b3JcbiAqL1xuZnVuY3Rpb24gRm9udChvcHRpb25zKSB7XG4gICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG5cbiAgICBpZiAoIW9wdGlvbnMuZW1wdHkpIHtcbiAgICAgICAgLy8gQ2hlY2sgdGhhdCB3ZSd2ZSBwcm92aWRlZCB0aGUgbWluaW11bSBzZXQgb2YgbmFtZXMuXG4gICAgICAgIHV0aWwuY2hlY2tBcmd1bWVudChvcHRpb25zLmZhbWlseU5hbWUsICdXaGVuIGNyZWF0aW5nIGEgbmV3IEZvbnQgb2JqZWN0LCBmYW1pbHlOYW1lIGlzIHJlcXVpcmVkLicpO1xuICAgICAgICB1dGlsLmNoZWNrQXJndW1lbnQob3B0aW9ucy5zdHlsZU5hbWUsICdXaGVuIGNyZWF0aW5nIGEgbmV3IEZvbnQgb2JqZWN0LCBzdHlsZU5hbWUgaXMgcmVxdWlyZWQuJyk7XG4gICAgICAgIHV0aWwuY2hlY2tBcmd1bWVudChvcHRpb25zLnVuaXRzUGVyRW0sICdXaGVuIGNyZWF0aW5nIGEgbmV3IEZvbnQgb2JqZWN0LCB1bml0c1BlckVtIGlzIHJlcXVpcmVkLicpO1xuICAgICAgICB1dGlsLmNoZWNrQXJndW1lbnQob3B0aW9ucy5hc2NlbmRlciwgJ1doZW4gY3JlYXRpbmcgYSBuZXcgRm9udCBvYmplY3QsIGFzY2VuZGVyIGlzIHJlcXVpcmVkLicpO1xuICAgICAgICB1dGlsLmNoZWNrQXJndW1lbnQob3B0aW9ucy5kZXNjZW5kZXIsICdXaGVuIGNyZWF0aW5nIGEgbmV3IEZvbnQgb2JqZWN0LCBkZXNjZW5kZXIgaXMgcmVxdWlyZWQuJyk7XG4gICAgICAgIHV0aWwuY2hlY2tBcmd1bWVudChvcHRpb25zLmRlc2NlbmRlciA8IDAsICdEZXNjZW5kZXIgc2hvdWxkIGJlIG5lZ2F0aXZlIChlLmcuIC01MTIpLicpO1xuXG4gICAgICAgIC8vIE9TIFggd2lsbCBjb21wbGFpbiBpZiB0aGUgbmFtZXMgYXJlIGVtcHR5LCBzbyB3ZSBwdXQgYSBzaW5nbGUgc3BhY2UgZXZlcnl3aGVyZSBieSBkZWZhdWx0LlxuICAgICAgICB0aGlzLm5hbWVzID0ge1xuICAgICAgICAgICAgZm9udEZhbWlseToge2VuOiBvcHRpb25zLmZhbWlseU5hbWUgfHwgJyAnfSxcbiAgICAgICAgICAgIGZvbnRTdWJmYW1pbHk6IHtlbjogb3B0aW9ucy5zdHlsZU5hbWUgfHwgJyAnfSxcbiAgICAgICAgICAgIGZ1bGxOYW1lOiB7ZW46IG9wdGlvbnMuZnVsbE5hbWUgfHwgb3B0aW9ucy5mYW1pbHlOYW1lICsgJyAnICsgb3B0aW9ucy5zdHlsZU5hbWV9LFxuICAgICAgICAgICAgcG9zdFNjcmlwdE5hbWU6IHtlbjogb3B0aW9ucy5wb3N0U2NyaXB0TmFtZSB8fCBvcHRpb25zLmZhbWlseU5hbWUgKyBvcHRpb25zLnN0eWxlTmFtZX0sXG4gICAgICAgICAgICBkZXNpZ25lcjoge2VuOiBvcHRpb25zLmRlc2lnbmVyIHx8ICcgJ30sXG4gICAgICAgICAgICBkZXNpZ25lclVSTDoge2VuOiBvcHRpb25zLmRlc2lnbmVyVVJMIHx8ICcgJ30sXG4gICAgICAgICAgICBtYW51ZmFjdHVyZXI6IHtlbjogb3B0aW9ucy5tYW51ZmFjdHVyZXIgfHwgJyAnfSxcbiAgICAgICAgICAgIG1hbnVmYWN0dXJlclVSTDoge2VuOiBvcHRpb25zLm1hbnVmYWN0dXJlclVSTCB8fCAnICd9LFxuICAgICAgICAgICAgbGljZW5zZToge2VuOiBvcHRpb25zLmxpY2Vuc2UgfHwgJyAnfSxcbiAgICAgICAgICAgIGxpY2Vuc2VVUkw6IHtlbjogb3B0aW9ucy5saWNlbnNlVVJMIHx8ICcgJ30sXG4gICAgICAgICAgICB2ZXJzaW9uOiB7ZW46IG9wdGlvbnMudmVyc2lvbiB8fCAnVmVyc2lvbiAwLjEnfSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiB7ZW46IG9wdGlvbnMuZGVzY3JpcHRpb24gfHwgJyAnfSxcbiAgICAgICAgICAgIGNvcHlyaWdodDoge2VuOiBvcHRpb25zLmNvcHlyaWdodCB8fCAnICd9LFxuICAgICAgICAgICAgdHJhZGVtYXJrOiB7ZW46IG9wdGlvbnMudHJhZGVtYXJrIHx8ICcgJ31cbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy51bml0c1BlckVtID0gb3B0aW9ucy51bml0c1BlckVtIHx8IDEwMDA7XG4gICAgICAgIHRoaXMuYXNjZW5kZXIgPSBvcHRpb25zLmFzY2VuZGVyO1xuICAgICAgICB0aGlzLmRlc2NlbmRlciA9IG9wdGlvbnMuZGVzY2VuZGVyO1xuICAgICAgICB0aGlzLmNyZWF0ZWRUaW1lc3RhbXAgPSBvcHRpb25zLmNyZWF0ZWRUaW1lc3RhbXA7XG4gICAgICAgIHRoaXMudGFibGVzID0geyBvczI6IHtcbiAgICAgICAgICAgIHVzV2VpZ2h0Q2xhc3M6IG9wdGlvbnMud2VpZ2h0Q2xhc3MgfHwgdGhpcy51c1dlaWdodENsYXNzZXMuTUVESVVNLFxuICAgICAgICAgICAgdXNXaWR0aENsYXNzOiBvcHRpb25zLndpZHRoQ2xhc3MgfHwgdGhpcy51c1dpZHRoQ2xhc3Nlcy5NRURJVU0sXG4gICAgICAgICAgICBmc1NlbGVjdGlvbjogb3B0aW9ucy5mc1NlbGVjdGlvbiB8fCB0aGlzLmZzU2VsZWN0aW9uVmFsdWVzLlJFR1VMQVJcbiAgICAgICAgfSB9O1xuICAgIH1cblxuICAgIHRoaXMuc3VwcG9ydGVkID0gdHJ1ZTsgLy8gRGVwcmVjYXRlZDogcGFyc2VCdWZmZXIgd2lsbCB0aHJvdyBhbiBlcnJvciBpZiBmb250IGlzIG5vdCBzdXBwb3J0ZWQuXG4gICAgdGhpcy5nbHlwaHMgPSBuZXcgZ2x5cGhzZXQuR2x5cGhTZXQodGhpcywgb3B0aW9ucy5nbHlwaHMgfHwgW10pO1xuICAgIHRoaXMuZW5jb2RpbmcgPSBuZXcgZW5jb2RpbmcuRGVmYXVsdEVuY29kaW5nKHRoaXMpO1xuICAgIHRoaXMuc3Vic3RpdHV0aW9uID0gbmV3IFN1YnN0aXR1dGlvbih0aGlzKTtcbiAgICB0aGlzLnRhYmxlcyA9IHRoaXMudGFibGVzIHx8IHt9O1xufVxuXG4vKipcbiAqIENoZWNrIGlmIHRoZSBmb250IGhhcyBhIGdseXBoIGZvciB0aGUgZ2l2ZW4gY2hhcmFjdGVyLlxuICogQHBhcmFtICB7c3RyaW5nfVxuICogQHJldHVybiB7Qm9vbGVhbn1cbiAqL1xuRm9udC5wcm90b3R5cGUuaGFzQ2hhciA9IGZ1bmN0aW9uKGMpIHtcbiAgICByZXR1cm4gdGhpcy5lbmNvZGluZy5jaGFyVG9HbHlwaEluZGV4KGMpICE9PSBudWxsO1xufTtcblxuLyoqXG4gKiBDb252ZXJ0IHRoZSBnaXZlbiBjaGFyYWN0ZXIgdG8gYSBzaW5nbGUgZ2x5cGggaW5kZXguXG4gKiBOb3RlIHRoYXQgdGhpcyBmdW5jdGlvbiBhc3N1bWVzIHRoYXQgdGhlcmUgaXMgYSBvbmUtdG8tb25lIG1hcHBpbmcgYmV0d2VlblxuICogdGhlIGdpdmVuIGNoYXJhY3RlciBhbmQgYSBnbHlwaDsgZm9yIGNvbXBsZXggc2NyaXB0cyB0aGlzIG1pZ2h0IG5vdCBiZSB0aGUgY2FzZS5cbiAqIEBwYXJhbSAge3N0cmluZ31cbiAqIEByZXR1cm4ge051bWJlcn1cbiAqL1xuRm9udC5wcm90b3R5cGUuY2hhclRvR2x5cGhJbmRleCA9IGZ1bmN0aW9uKHMpIHtcbiAgICByZXR1cm4gdGhpcy5lbmNvZGluZy5jaGFyVG9HbHlwaEluZGV4KHMpO1xufTtcblxuLyoqXG4gKiBDb252ZXJ0IHRoZSBnaXZlbiBjaGFyYWN0ZXIgdG8gYSBzaW5nbGUgR2x5cGggb2JqZWN0LlxuICogTm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gYXNzdW1lcyB0aGF0IHRoZXJlIGlzIGEgb25lLXRvLW9uZSBtYXBwaW5nIGJldHdlZW5cbiAqIHRoZSBnaXZlbiBjaGFyYWN0ZXIgYW5kIGEgZ2x5cGg7IGZvciBjb21wbGV4IHNjcmlwdHMgdGhpcyBtaWdodCBub3QgYmUgdGhlIGNhc2UuXG4gKiBAcGFyYW0gIHtzdHJpbmd9XG4gKiBAcmV0dXJuIHtvcGVudHlwZS5HbHlwaH1cbiAqL1xuRm9udC5wcm90b3R5cGUuY2hhclRvR2x5cGggPSBmdW5jdGlvbihjKSB7XG4gICAgdmFyIGdseXBoSW5kZXggPSB0aGlzLmNoYXJUb0dseXBoSW5kZXgoYyk7XG4gICAgdmFyIGdseXBoID0gdGhpcy5nbHlwaHMuZ2V0KGdseXBoSW5kZXgpO1xuICAgIGlmICghZ2x5cGgpIHtcbiAgICAgICAgLy8gLm5vdGRlZlxuICAgICAgICBnbHlwaCA9IHRoaXMuZ2x5cGhzLmdldCgwKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZ2x5cGg7XG59O1xuXG4vKipcbiAqIENvbnZlcnQgdGhlIGdpdmVuIHRleHQgdG8gYSBsaXN0IG9mIEdseXBoIG9iamVjdHMuXG4gKiBOb3RlIHRoYXQgdGhlcmUgaXMgbm8gc3RyaWN0IG9uZS10by1vbmUgbWFwcGluZyBiZXR3ZWVuIGNoYXJhY3RlcnMgYW5kXG4gKiBnbHlwaHMsIHNvIHRoZSBsaXN0IG9mIHJldHVybmVkIGdseXBocyBjYW4gYmUgbGFyZ2VyIG9yIHNtYWxsZXIgdGhhbiB0aGVcbiAqIGxlbmd0aCBvZiB0aGUgZ2l2ZW4gc3RyaW5nLlxuICogQHBhcmFtICB7c3RyaW5nfVxuICogQHBhcmFtICB7R2x5cGhSZW5kZXJPcHRpb25zfSBbb3B0aW9uc11cbiAqIEByZXR1cm4ge29wZW50eXBlLkdseXBoW119XG4gKi9cbkZvbnQucHJvdG90eXBlLnN0cmluZ1RvR2x5cGhzID0gZnVuY3Rpb24ocywgb3B0aW9ucykge1xuICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHRoaXMuZGVmYXVsdFJlbmRlck9wdGlvbnM7XG4gICAgdmFyIGk7XG4gICAgLy8gR2V0IGdseXBoIGluZGV4ZXNcbiAgICB2YXIgaW5kZXhlcyA9IFtdO1xuICAgIGZvciAoaSA9IDA7IGkgPCBzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICAgIHZhciBjID0gc1tpXTtcbiAgICAgICAgaW5kZXhlcy5wdXNoKHRoaXMuY2hhclRvR2x5cGhJbmRleChjKSk7XG4gICAgfVxuICAgIHZhciBsZW5ndGggPSBpbmRleGVzLmxlbmd0aDtcblxuICAgIC8vIEFwcGx5IHN1YnN0aXR1dGlvbnMgb24gZ2x5cGggaW5kZXhlc1xuICAgIGlmIChvcHRpb25zLmZlYXR1cmVzKSB7XG4gICAgICAgIHZhciBzY3JpcHQgPSBvcHRpb25zLnNjcmlwdCB8fCB0aGlzLnN1YnN0aXR1dGlvbi5nZXREZWZhdWx0U2NyaXB0TmFtZSgpO1xuICAgICAgICB2YXIgbWFueVRvT25lID0gW107XG4gICAgICAgIGlmIChvcHRpb25zLmZlYXR1cmVzLmxpZ2EpIG1hbnlUb09uZSA9IG1hbnlUb09uZS5jb25jYXQodGhpcy5zdWJzdGl0dXRpb24uZ2V0RmVhdHVyZSgnbGlnYScsIHNjcmlwdCwgb3B0aW9ucy5sYW5ndWFnZSkpO1xuICAgICAgICBpZiAob3B0aW9ucy5mZWF0dXJlcy5ybGlnKSBtYW55VG9PbmUgPSBtYW55VG9PbmUuY29uY2F0KHRoaXMuc3Vic3RpdHV0aW9uLmdldEZlYXR1cmUoJ3JsaWcnLCBzY3JpcHQsIG9wdGlvbnMubGFuZ3VhZ2UpKTtcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDsgaSArPSAxKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IG1hbnlUb09uZS5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgICAgIHZhciBsaWdhdHVyZSA9IG1hbnlUb09uZVtqXTtcbiAgICAgICAgICAgICAgICB2YXIgY29tcG9uZW50cyA9IGxpZ2F0dXJlLnN1YjtcbiAgICAgICAgICAgICAgICB2YXIgY29tcENvdW50ID0gY29tcG9uZW50cy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgdmFyIGsgPSAwO1xuICAgICAgICAgICAgICAgIHdoaWxlIChrIDwgY29tcENvdW50ICYmIGNvbXBvbmVudHNba10gPT09IGluZGV4ZXNbaSArIGtdKSBrKys7XG4gICAgICAgICAgICAgICAgaWYgKGsgPT09IGNvbXBDb3VudCkge1xuICAgICAgICAgICAgICAgICAgICBpbmRleGVzLnNwbGljZShpLCBjb21wQ291bnQsIGxpZ2F0dXJlLmJ5KTtcbiAgICAgICAgICAgICAgICAgICAgbGVuZ3RoID0gbGVuZ3RoIC0gY29tcENvdW50ICsgMTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBjb252ZXJ0IGdseXBoIGluZGV4ZXMgdG8gZ2x5cGggb2JqZWN0c1xuICAgIHZhciBnbHlwaHMgPSBuZXcgQXJyYXkobGVuZ3RoKTtcbiAgICB2YXIgbm90ZGVmID0gdGhpcy5nbHlwaHMuZ2V0KDApO1xuICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICBnbHlwaHNbaV0gPSB0aGlzLmdseXBocy5nZXQoaW5kZXhlc1tpXSkgfHwgbm90ZGVmO1xuICAgIH1cbiAgICByZXR1cm4gZ2x5cGhzO1xufTtcblxuLyoqXG4gKiBAcGFyYW0gIHtzdHJpbmd9XG4gKiBAcmV0dXJuIHtOdW1iZXJ9XG4gKi9cbkZvbnQucHJvdG90eXBlLm5hbWVUb0dseXBoSW5kZXggPSBmdW5jdGlvbihuYW1lKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2x5cGhOYW1lcy5uYW1lVG9HbHlwaEluZGV4KG5hbWUpO1xufTtcblxuLyoqXG4gKiBAcGFyYW0gIHtzdHJpbmd9XG4gKiBAcmV0dXJuIHtvcGVudHlwZS5HbHlwaH1cbiAqL1xuRm9udC5wcm90b3R5cGUubmFtZVRvR2x5cGggPSBmdW5jdGlvbihuYW1lKSB7XG4gICAgdmFyIGdseXBoSW5kZXggPSB0aGlzLm5hbWVUb0dseXBoSW5kZXgobmFtZSk7XG4gICAgdmFyIGdseXBoID0gdGhpcy5nbHlwaHMuZ2V0KGdseXBoSW5kZXgpO1xuICAgIGlmICghZ2x5cGgpIHtcbiAgICAgICAgLy8gLm5vdGRlZlxuICAgICAgICBnbHlwaCA9IHRoaXMuZ2x5cGhzLmdldCgwKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZ2x5cGg7XG59O1xuXG4vKipcbiAqIEBwYXJhbSAge051bWJlcn1cbiAqIEByZXR1cm4ge1N0cmluZ31cbiAqL1xuRm9udC5wcm90b3R5cGUuZ2x5cGhJbmRleFRvTmFtZSA9IGZ1bmN0aW9uKGdpZCkge1xuICAgIGlmICghdGhpcy5nbHlwaE5hbWVzLmdseXBoSW5kZXhUb05hbWUpIHtcbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmdseXBoTmFtZXMuZ2x5cGhJbmRleFRvTmFtZShnaWQpO1xufTtcblxuLyoqXG4gKiBSZXRyaWV2ZSB0aGUgdmFsdWUgb2YgdGhlIGtlcm5pbmcgcGFpciBiZXR3ZWVuIHRoZSBsZWZ0IGdseXBoIChvciBpdHMgaW5kZXgpXG4gKiBhbmQgdGhlIHJpZ2h0IGdseXBoIChvciBpdHMgaW5kZXgpLiBJZiBubyBrZXJuaW5nIHBhaXIgaXMgZm91bmQsIHJldHVybiAwLlxuICogVGhlIGtlcm5pbmcgdmFsdWUgZ2V0cyBhZGRlZCB0byB0aGUgYWR2YW5jZSB3aWR0aCB3aGVuIGNhbGN1bGF0aW5nIHRoZSBzcGFjaW5nXG4gKiBiZXR3ZWVuIGdseXBocy5cbiAqIEBwYXJhbSAge29wZW50eXBlLkdseXBofSBsZWZ0R2x5cGhcbiAqIEBwYXJhbSAge29wZW50eXBlLkdseXBofSByaWdodEdseXBoXG4gKiBAcmV0dXJuIHtOdW1iZXJ9XG4gKi9cbkZvbnQucHJvdG90eXBlLmdldEtlcm5pbmdWYWx1ZSA9IGZ1bmN0aW9uKGxlZnRHbHlwaCwgcmlnaHRHbHlwaCkge1xuICAgIGxlZnRHbHlwaCA9IGxlZnRHbHlwaC5pbmRleCB8fCBsZWZ0R2x5cGg7XG4gICAgcmlnaHRHbHlwaCA9IHJpZ2h0R2x5cGguaW5kZXggfHwgcmlnaHRHbHlwaDtcbiAgICB2YXIgZ3Bvc0tlcm5pbmcgPSB0aGlzLmdldEdwb3NLZXJuaW5nVmFsdWU7XG4gICAgcmV0dXJuIGdwb3NLZXJuaW5nID8gZ3Bvc0tlcm5pbmcobGVmdEdseXBoLCByaWdodEdseXBoKSA6XG4gICAgICAgICh0aGlzLmtlcm5pbmdQYWlyc1tsZWZ0R2x5cGggKyAnLCcgKyByaWdodEdseXBoXSB8fCAwKTtcbn07XG5cbi8qKlxuICogQHR5cGVkZWYgR2x5cGhSZW5kZXJPcHRpb25zXG4gKiBAdHlwZSBPYmplY3RcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbc2NyaXB0XSAtIHNjcmlwdCB1c2VkIHRvIGRldGVybWluZSB3aGljaCBmZWF0dXJlcyB0byBhcHBseS4gQnkgZGVmYXVsdCwgJ0RGTFQnIG9yICdsYXRuJyBpcyB1c2VkLlxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VlIGh0dHBzOi8vd3d3Lm1pY3Jvc29mdC5jb20vdHlwb2dyYXBoeS9vdHNwZWMvc2NyaXB0dGFncy5odG1cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbbGFuZ3VhZ2U9J2RmbHQnXSAtIGxhbmd1YWdlIHN5c3RlbSB1c2VkIHRvIGRldGVybWluZSB3aGljaCBmZWF0dXJlcyB0byBhcHBseS5cbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlZSBodHRwczovL3d3dy5taWNyb3NvZnQuY29tL3R5cG9ncmFwaHkvZGV2ZWxvcGVycy9vcGVudHlwZS9sYW5ndWFnZXRhZ3MuYXNweFxuICogQHByb3BlcnR5IHtib29sZWFufSBba2VybmluZz10cnVlXSAtIHdoZXRoZXIgdG8gaW5jbHVkZSBrZXJuaW5nIHZhbHVlc1xuICogQHByb3BlcnR5IHtvYmplY3R9IFtmZWF0dXJlc10gLSBPcGVuVHlwZSBMYXlvdXQgZmVhdHVyZSB0YWdzLiBVc2VkIHRvIGVuYWJsZSBvciBkaXNhYmxlIHRoZSBmZWF0dXJlcyBvZiB0aGUgZ2l2ZW4gc2NyaXB0L2xhbmd1YWdlIHN5c3RlbS5cbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VlIGh0dHBzOi8vd3d3Lm1pY3Jvc29mdC5jb20vdHlwb2dyYXBoeS9vdHNwZWMvZmVhdHVyZXRhZ3MuaHRtXG4gKi9cbkZvbnQucHJvdG90eXBlLmRlZmF1bHRSZW5kZXJPcHRpb25zID0ge1xuICAgIGtlcm5pbmc6IHRydWUsXG4gICAgZmVhdHVyZXM6IHtcbiAgICAgICAgbGlnYTogdHJ1ZSxcbiAgICAgICAgcmxpZzogdHJ1ZVxuICAgIH1cbn07XG5cbi8qKlxuICogSGVscGVyIGZ1bmN0aW9uIHRoYXQgaW52b2tlcyB0aGUgZ2l2ZW4gY2FsbGJhY2sgZm9yIGVhY2ggZ2x5cGggaW4gdGhlIGdpdmVuIHRleHQuXG4gKiBUaGUgY2FsbGJhY2sgZ2V0cyBgKGdseXBoLCB4LCB5LCBmb250U2l6ZSwgb3B0aW9ucylgLiogQHBhcmFtICB7c3RyaW5nfSB0ZXh0XG4gKiBAcGFyYW0ge3N0cmluZ30gdGV4dCAtIFRoZSB0ZXh0IHRvIGFwcGx5LlxuICogQHBhcmFtICB7bnVtYmVyfSBbeD0wXSAtIEhvcml6b250YWwgcG9zaXRpb24gb2YgdGhlIGJlZ2lubmluZyBvZiB0aGUgdGV4dC5cbiAqIEBwYXJhbSAge251bWJlcn0gW3k9MF0gLSBWZXJ0aWNhbCBwb3NpdGlvbiBvZiB0aGUgKmJhc2VsaW5lKiBvZiB0aGUgdGV4dC5cbiAqIEBwYXJhbSAge251bWJlcn0gW2ZvbnRTaXplPTcyXSAtIEZvbnQgc2l6ZSBpbiBwaXhlbHMuIFdlIHNjYWxlIHRoZSBnbHlwaCB1bml0cyBieSBgMSAvIHVuaXRzUGVyRW0gKiBmb250U2l6ZWAuXG4gKiBAcGFyYW0gIHtHbHlwaFJlbmRlck9wdGlvbnM9fSBvcHRpb25zXG4gKiBAcGFyYW0gIHtGdW5jdGlvbn0gY2FsbGJhY2tcbiAqL1xuRm9udC5wcm90b3R5cGUuZm9yRWFjaEdseXBoID0gZnVuY3Rpb24odGV4dCwgeCwgeSwgZm9udFNpemUsIG9wdGlvbnMsIGNhbGxiYWNrKSB7XG4gICAgeCA9IHggIT09IHVuZGVmaW5lZCA/IHggOiAwO1xuICAgIHkgPSB5ICE9PSB1bmRlZmluZWQgPyB5IDogMDtcbiAgICBmb250U2l6ZSA9IGZvbnRTaXplICE9PSB1bmRlZmluZWQgPyBmb250U2l6ZSA6IDcyO1xuICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHRoaXMuZGVmYXVsdFJlbmRlck9wdGlvbnM7XG4gICAgdmFyIGZvbnRTY2FsZSA9IDEgLyB0aGlzLnVuaXRzUGVyRW0gKiBmb250U2l6ZTtcbiAgICB2YXIgZ2x5cGhzID0gdGhpcy5zdHJpbmdUb0dseXBocyh0ZXh0LCBvcHRpb25zKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGdseXBocy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICB2YXIgZ2x5cGggPSBnbHlwaHNbaV07XG4gICAgICAgIGNhbGxiYWNrKGdseXBoLCB4LCB5LCBmb250U2l6ZSwgb3B0aW9ucyk7XG4gICAgICAgIGlmIChnbHlwaC5hZHZhbmNlV2lkdGgpIHtcbiAgICAgICAgICAgIHggKz0gZ2x5cGguYWR2YW5jZVdpZHRoICogZm9udFNjYWxlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9wdGlvbnMua2VybmluZyAmJiBpIDwgZ2x5cGhzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgIHZhciBrZXJuaW5nVmFsdWUgPSB0aGlzLmdldEtlcm5pbmdWYWx1ZShnbHlwaCwgZ2x5cGhzW2kgKyAxXSk7XG4gICAgICAgICAgICB4ICs9IGtlcm5pbmdWYWx1ZSAqIGZvbnRTY2FsZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRpb25zLmxldHRlclNwYWNpbmcpIHtcbiAgICAgICAgICAgIHggKz0gb3B0aW9ucy5sZXR0ZXJTcGFjaW5nICogZm9udFNpemU7XG4gICAgICAgIH0gZWxzZSBpZiAob3B0aW9ucy50cmFja2luZykge1xuICAgICAgICAgICAgeCArPSAob3B0aW9ucy50cmFja2luZyAvIDEwMDApICogZm9udFNpemU7XG4gICAgICAgIH1cbiAgICB9XG59O1xuXG4vKipcbiAqIENyZWF0ZSBhIFBhdGggb2JqZWN0IHRoYXQgcmVwcmVzZW50cyB0aGUgZ2l2ZW4gdGV4dC5cbiAqIEBwYXJhbSAge3N0cmluZ30gdGV4dCAtIFRoZSB0ZXh0IHRvIGNyZWF0ZS5cbiAqIEBwYXJhbSAge251bWJlcn0gW3g9MF0gLSBIb3Jpem9udGFsIHBvc2l0aW9uIG9mIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHRleHQuXG4gKiBAcGFyYW0gIHtudW1iZXJ9IFt5PTBdIC0gVmVydGljYWwgcG9zaXRpb24gb2YgdGhlICpiYXNlbGluZSogb2YgdGhlIHRleHQuXG4gKiBAcGFyYW0gIHtudW1iZXJ9IFtmb250U2l6ZT03Ml0gLSBGb250IHNpemUgaW4gcGl4ZWxzLiBXZSBzY2FsZSB0aGUgZ2x5cGggdW5pdHMgYnkgYDEgLyB1bml0c1BlckVtICogZm9udFNpemVgLlxuICogQHBhcmFtICB7R2x5cGhSZW5kZXJPcHRpb25zPX0gb3B0aW9uc1xuICogQHJldHVybiB7b3BlbnR5cGUuUGF0aH1cbiAqL1xuRm9udC5wcm90b3R5cGUuZ2V0UGF0aCA9IGZ1bmN0aW9uKHRleHQsIHgsIHksIGZvbnRTaXplLCBvcHRpb25zKSB7XG4gICAgdmFyIGZ1bGxQYXRoID0gbmV3IHBhdGguUGF0aCgpO1xuICAgIHRoaXMuZm9yRWFjaEdseXBoKHRleHQsIHgsIHksIGZvbnRTaXplLCBvcHRpb25zLCBmdW5jdGlvbihnbHlwaCwgZ1gsIGdZLCBnRm9udFNpemUpIHtcbiAgICAgICAgdmFyIGdseXBoUGF0aCA9IGdseXBoLmdldFBhdGgoZ1gsIGdZLCBnRm9udFNpemUpO1xuICAgICAgICBmdWxsUGF0aC5leHRlbmQoZ2x5cGhQYXRoKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBmdWxsUGF0aDtcbn07XG5cbi8qKlxuICogQ3JlYXRlIGFuIGFycmF5IG9mIFBhdGggb2JqZWN0cyB0aGF0IHJlcHJlc2VudCB0aGUgZ2x5cHMgb2YgYSBnaXZlbiB0ZXh0LlxuICogQHBhcmFtICB7c3RyaW5nfSB0ZXh0IC0gVGhlIHRleHQgdG8gY3JlYXRlLlxuICogQHBhcmFtICB7bnVtYmVyfSBbeD0wXSAtIEhvcml6b250YWwgcG9zaXRpb24gb2YgdGhlIGJlZ2lubmluZyBvZiB0aGUgdGV4dC5cbiAqIEBwYXJhbSAge251bWJlcn0gW3k9MF0gLSBWZXJ0aWNhbCBwb3NpdGlvbiBvZiB0aGUgKmJhc2VsaW5lKiBvZiB0aGUgdGV4dC5cbiAqIEBwYXJhbSAge251bWJlcn0gW2ZvbnRTaXplPTcyXSAtIEZvbnQgc2l6ZSBpbiBwaXhlbHMuIFdlIHNjYWxlIHRoZSBnbHlwaCB1bml0cyBieSBgMSAvIHVuaXRzUGVyRW0gKiBmb250U2l6ZWAuXG4gKiBAcGFyYW0gIHtHbHlwaFJlbmRlck9wdGlvbnM9fSBvcHRpb25zXG4gKiBAcmV0dXJuIHtvcGVudHlwZS5QYXRoW119XG4gKi9cbkZvbnQucHJvdG90eXBlLmdldFBhdGhzID0gZnVuY3Rpb24odGV4dCwgeCwgeSwgZm9udFNpemUsIG9wdGlvbnMpIHtcbiAgICB2YXIgZ2x5cGhQYXRocyA9IFtdO1xuICAgIHRoaXMuZm9yRWFjaEdseXBoKHRleHQsIHgsIHksIGZvbnRTaXplLCBvcHRpb25zLCBmdW5jdGlvbihnbHlwaCwgZ1gsIGdZLCBnRm9udFNpemUpIHtcbiAgICAgICAgdmFyIGdseXBoUGF0aCA9IGdseXBoLmdldFBhdGgoZ1gsIGdZLCBnRm9udFNpemUpO1xuICAgICAgICBnbHlwaFBhdGhzLnB1c2goZ2x5cGhQYXRoKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBnbHlwaFBhdGhzO1xufTtcblxuLyoqXG4gKiBEcmF3IHRoZSB0ZXh0IG9uIHRoZSBnaXZlbiBkcmF3aW5nIGNvbnRleHQuXG4gKiBAcGFyYW0gIHtDYW52YXNSZW5kZXJpbmdDb250ZXh0MkR9IGN0eCAtIEEgMkQgZHJhd2luZyBjb250ZXh0LCBsaWtlIENhbnZhcy5cbiAqIEBwYXJhbSAge3N0cmluZ30gdGV4dCAtIFRoZSB0ZXh0IHRvIGNyZWF0ZS5cbiAqIEBwYXJhbSAge251bWJlcn0gW3g9MF0gLSBIb3Jpem9udGFsIHBvc2l0aW9uIG9mIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHRleHQuXG4gKiBAcGFyYW0gIHtudW1iZXJ9IFt5PTBdIC0gVmVydGljYWwgcG9zaXRpb24gb2YgdGhlICpiYXNlbGluZSogb2YgdGhlIHRleHQuXG4gKiBAcGFyYW0gIHtudW1iZXJ9IFtmb250U2l6ZT03Ml0gLSBGb250IHNpemUgaW4gcGl4ZWxzLiBXZSBzY2FsZSB0aGUgZ2x5cGggdW5pdHMgYnkgYDEgLyB1bml0c1BlckVtICogZm9udFNpemVgLlxuICogQHBhcmFtICB7R2x5cGhSZW5kZXJPcHRpb25zPX0gb3B0aW9uc1xuICovXG5Gb250LnByb3RvdHlwZS5kcmF3ID0gZnVuY3Rpb24oY3R4LCB0ZXh0LCB4LCB5LCBmb250U2l6ZSwgb3B0aW9ucykge1xuICAgIHRoaXMuZ2V0UGF0aCh0ZXh0LCB4LCB5LCBmb250U2l6ZSwgb3B0aW9ucykuZHJhdyhjdHgpO1xufTtcblxuLyoqXG4gKiBEcmF3IHRoZSBwb2ludHMgb2YgYWxsIGdseXBocyBpbiB0aGUgdGV4dC5cbiAqIE9uLWN1cnZlIHBvaW50cyB3aWxsIGJlIGRyYXduIGluIGJsdWUsIG9mZi1jdXJ2ZSBwb2ludHMgd2lsbCBiZSBkcmF3biBpbiByZWQuXG4gKiBAcGFyYW0ge0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRH0gY3R4IC0gQSAyRCBkcmF3aW5nIGNvbnRleHQsIGxpa2UgQ2FudmFzLlxuICogQHBhcmFtIHtzdHJpbmd9IHRleHQgLSBUaGUgdGV4dCB0byBjcmVhdGUuXG4gKiBAcGFyYW0ge251bWJlcn0gW3g9MF0gLSBIb3Jpem9udGFsIHBvc2l0aW9uIG9mIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHRleHQuXG4gKiBAcGFyYW0ge251bWJlcn0gW3k9MF0gLSBWZXJ0aWNhbCBwb3NpdGlvbiBvZiB0aGUgKmJhc2VsaW5lKiBvZiB0aGUgdGV4dC5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbZm9udFNpemU9NzJdIC0gRm9udCBzaXplIGluIHBpeGVscy4gV2Ugc2NhbGUgdGhlIGdseXBoIHVuaXRzIGJ5IGAxIC8gdW5pdHNQZXJFbSAqIGZvbnRTaXplYC5cbiAqIEBwYXJhbSB7R2x5cGhSZW5kZXJPcHRpb25zPX0gb3B0aW9uc1xuICovXG5Gb250LnByb3RvdHlwZS5kcmF3UG9pbnRzID0gZnVuY3Rpb24oY3R4LCB0ZXh0LCB4LCB5LCBmb250U2l6ZSwgb3B0aW9ucykge1xuICAgIHRoaXMuZm9yRWFjaEdseXBoKHRleHQsIHgsIHksIGZvbnRTaXplLCBvcHRpb25zLCBmdW5jdGlvbihnbHlwaCwgZ1gsIGdZLCBnRm9udFNpemUpIHtcbiAgICAgICAgZ2x5cGguZHJhd1BvaW50cyhjdHgsIGdYLCBnWSwgZ0ZvbnRTaXplKTtcbiAgICB9KTtcbn07XG5cbi8qKlxuICogRHJhdyBsaW5lcyBpbmRpY2F0aW5nIGltcG9ydGFudCBmb250IG1lYXN1cmVtZW50cyBmb3IgYWxsIGdseXBocyBpbiB0aGUgdGV4dC5cbiAqIEJsYWNrIGxpbmVzIGluZGljYXRlIHRoZSBvcmlnaW4gb2YgdGhlIGNvb3JkaW5hdGUgc3lzdGVtIChwb2ludCAwLDApLlxuICogQmx1ZSBsaW5lcyBpbmRpY2F0ZSB0aGUgZ2x5cGggYm91bmRpbmcgYm94LlxuICogR3JlZW4gbGluZSBpbmRpY2F0ZXMgdGhlIGFkdmFuY2Ugd2lkdGggb2YgdGhlIGdseXBoLlxuICogQHBhcmFtIHtDYW52YXNSZW5kZXJpbmdDb250ZXh0MkR9IGN0eCAtIEEgMkQgZHJhd2luZyBjb250ZXh0LCBsaWtlIENhbnZhcy5cbiAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IC0gVGhlIHRleHQgdG8gY3JlYXRlLlxuICogQHBhcmFtIHtudW1iZXJ9IFt4PTBdIC0gSG9yaXpvbnRhbCBwb3NpdGlvbiBvZiB0aGUgYmVnaW5uaW5nIG9mIHRoZSB0ZXh0LlxuICogQHBhcmFtIHtudW1iZXJ9IFt5PTBdIC0gVmVydGljYWwgcG9zaXRpb24gb2YgdGhlICpiYXNlbGluZSogb2YgdGhlIHRleHQuXG4gKiBAcGFyYW0ge251bWJlcn0gW2ZvbnRTaXplPTcyXSAtIEZvbnQgc2l6ZSBpbiBwaXhlbHMuIFdlIHNjYWxlIHRoZSBnbHlwaCB1bml0cyBieSBgMSAvIHVuaXRzUGVyRW0gKiBmb250U2l6ZWAuXG4gKiBAcGFyYW0ge0dseXBoUmVuZGVyT3B0aW9ucz19IG9wdGlvbnNcbiAqL1xuRm9udC5wcm90b3R5cGUuZHJhd01ldHJpY3MgPSBmdW5jdGlvbihjdHgsIHRleHQsIHgsIHksIGZvbnRTaXplLCBvcHRpb25zKSB7XG4gICAgdGhpcy5mb3JFYWNoR2x5cGgodGV4dCwgeCwgeSwgZm9udFNpemUsIG9wdGlvbnMsIGZ1bmN0aW9uKGdseXBoLCBnWCwgZ1ksIGdGb250U2l6ZSkge1xuICAgICAgICBnbHlwaC5kcmF3TWV0cmljcyhjdHgsIGdYLCBnWSwgZ0ZvbnRTaXplKTtcbiAgICB9KTtcbn07XG5cbi8qKlxuICogQHBhcmFtICB7c3RyaW5nfVxuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5Gb250LnByb3RvdHlwZS5nZXRFbmdsaXNoTmFtZSA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgICB2YXIgdHJhbnNsYXRpb25zID0gdGhpcy5uYW1lc1tuYW1lXTtcbiAgICBpZiAodHJhbnNsYXRpb25zKSB7XG4gICAgICAgIHJldHVybiB0cmFuc2xhdGlvbnMuZW47XG4gICAgfVxufTtcblxuLyoqXG4gKiBWYWxpZGF0ZVxuICovXG5Gb250LnByb3RvdHlwZS52YWxpZGF0ZSA9IGZ1bmN0aW9uKCkge1xuICAgIHZhciB3YXJuaW5ncyA9IFtdO1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICBmdW5jdGlvbiBhc3NlcnQocHJlZGljYXRlLCBtZXNzYWdlKSB7XG4gICAgICAgIGlmICghcHJlZGljYXRlKSB7XG4gICAgICAgICAgICB3YXJuaW5ncy5wdXNoKG1lc3NhZ2UpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYXNzZXJ0TmFtZVByZXNlbnQobmFtZSkge1xuICAgICAgICB2YXIgZW5nbGlzaE5hbWUgPSBfdGhpcy5nZXRFbmdsaXNoTmFtZShuYW1lKTtcbiAgICAgICAgYXNzZXJ0KGVuZ2xpc2hOYW1lICYmIGVuZ2xpc2hOYW1lLnRyaW0oKS5sZW5ndGggPiAwLFxuICAgICAgICAgICAgICAgJ05vIEVuZ2xpc2ggJyArIG5hbWUgKyAnIHNwZWNpZmllZC4nKTtcbiAgICB9XG5cbiAgICAvLyBJZGVudGlmaWNhdGlvbiBpbmZvcm1hdGlvblxuICAgIGFzc2VydE5hbWVQcmVzZW50KCdmb250RmFtaWx5Jyk7XG4gICAgYXNzZXJ0TmFtZVByZXNlbnQoJ3dlaWdodE5hbWUnKTtcbiAgICBhc3NlcnROYW1lUHJlc2VudCgnbWFudWZhY3R1cmVyJyk7XG4gICAgYXNzZXJ0TmFtZVByZXNlbnQoJ2NvcHlyaWdodCcpO1xuICAgIGFzc2VydE5hbWVQcmVzZW50KCd2ZXJzaW9uJyk7XG5cbiAgICAvLyBEaW1lbnNpb24gaW5mb3JtYXRpb25cbiAgICBhc3NlcnQodGhpcy51bml0c1BlckVtID4gMCwgJ05vIHVuaXRzUGVyRW0gc3BlY2lmaWVkLicpO1xufTtcblxuLyoqXG4gKiBDb252ZXJ0IHRoZSBmb250IG9iamVjdCB0byBhIFNGTlQgZGF0YSBzdHJ1Y3R1cmUuXG4gKiBUaGlzIHN0cnVjdHVyZSBjb250YWlucyBhbGwgdGhlIG5lY2Vzc2FyeSB0YWJsZXMgYW5kIG1ldGFkYXRhIHRvIGNyZWF0ZSBhIGJpbmFyeSBPVEYgZmlsZS5cbiAqIEByZXR1cm4ge29wZW50eXBlLlRhYmxlfVxuICovXG5Gb250LnByb3RvdHlwZS50b1RhYmxlcyA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBzZm50LmZvbnRUb1RhYmxlKHRoaXMpO1xufTtcbi8qKlxuICogQGRlcHJlY2F0ZWQgRm9udC50b0J1ZmZlciBpcyBkZXByZWNhdGVkLiBVc2UgRm9udC50b0FycmF5QnVmZmVyIGluc3RlYWQuXG4gKi9cbkZvbnQucHJvdG90eXBlLnRvQnVmZmVyID0gZnVuY3Rpb24oKSB7XG4gICAgY29uc29sZS53YXJuKCdGb250LnRvQnVmZmVyIGlzIGRlcHJlY2F0ZWQuIFVzZSBGb250LnRvQXJyYXlCdWZmZXIgaW5zdGVhZC4nKTtcbiAgICByZXR1cm4gdGhpcy50b0FycmF5QnVmZmVyKCk7XG59O1xuLyoqXG4gKiBDb252ZXJ0cyBhIGBvcGVudHlwZS5Gb250YCBpbnRvIGFuIGBBcnJheUJ1ZmZlcmBcbiAqIEByZXR1cm4ge0FycmF5QnVmZmVyfVxuICovXG5Gb250LnByb3RvdHlwZS50b0FycmF5QnVmZmVyID0gZnVuY3Rpb24oKSB7XG4gICAgdmFyIHNmbnRUYWJsZSA9IHRoaXMudG9UYWJsZXMoKTtcbiAgICB2YXIgYnl0ZXMgPSBzZm50VGFibGUuZW5jb2RlKCk7XG4gICAgdmFyIGJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcihieXRlcy5sZW5ndGgpO1xuICAgIHZhciBpbnRBcnJheSA9IG5ldyBVaW50OEFycmF5KGJ1ZmZlcik7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBieXRlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBpbnRBcnJheVtpXSA9IGJ5dGVzW2ldO1xuICAgIH1cblxuICAgIHJldHVybiBidWZmZXI7XG59O1xuXG4vKipcbiAqIEluaXRpYXRlIGEgZG93bmxvYWQgb2YgdGhlIE9wZW5UeXBlIGZvbnQuXG4gKi9cbkZvbnQucHJvdG90eXBlLmRvd25sb2FkID0gZnVuY3Rpb24oZmlsZU5hbWUpIHtcbiAgICB2YXIgZmFtaWx5TmFtZSA9IHRoaXMuZ2V0RW5nbGlzaE5hbWUoJ2ZvbnRGYW1pbHknKTtcbiAgICB2YXIgc3R5bGVOYW1lID0gdGhpcy5nZXRFbmdsaXNoTmFtZSgnZm9udFN1YmZhbWlseScpO1xuICAgIGZpbGVOYW1lID0gZmlsZU5hbWUgfHwgZmFtaWx5TmFtZS5yZXBsYWNlKC9cXHMvZywgJycpICsgJy0nICsgc3R5bGVOYW1lICsgJy5vdGYnO1xuICAgIHZhciBhcnJheUJ1ZmZlciA9IHRoaXMudG9BcnJheUJ1ZmZlcigpO1xuXG4gICAgaWYgKHV0aWwuaXNCcm93c2VyKCkpIHtcbiAgICAgICAgd2luZG93LnJlcXVlc3RGaWxlU3lzdGVtID0gd2luZG93LnJlcXVlc3RGaWxlU3lzdGVtIHx8IHdpbmRvdy53ZWJraXRSZXF1ZXN0RmlsZVN5c3RlbTtcbiAgICAgICAgd2luZG93LnJlcXVlc3RGaWxlU3lzdGVtKHdpbmRvdy5URU1QT1JBUlksIGFycmF5QnVmZmVyLmJ5dGVMZW5ndGgsIGZ1bmN0aW9uKGZzKSB7XG4gICAgICAgICAgICBmcy5yb290LmdldEZpbGUoZmlsZU5hbWUsIHtjcmVhdGU6IHRydWV9LCBmdW5jdGlvbihmaWxlRW50cnkpIHtcbiAgICAgICAgICAgICAgICBmaWxlRW50cnkuY3JlYXRlV3JpdGVyKGZ1bmN0aW9uKHdyaXRlcikge1xuICAgICAgICAgICAgICAgICAgICB2YXIgZGF0YVZpZXcgPSBuZXcgRGF0YVZpZXcoYXJyYXlCdWZmZXIpO1xuICAgICAgICAgICAgICAgICAgICB2YXIgYmxvYiA9IG5ldyBCbG9iKFtkYXRhVmlld10sIHt0eXBlOiAnZm9udC9vcGVudHlwZSd9KTtcbiAgICAgICAgICAgICAgICAgICAgd3JpdGVyLndyaXRlKGJsb2IpO1xuXG4gICAgICAgICAgICAgICAgICAgIHdyaXRlci5hZGRFdmVudExpc3RlbmVyKCd3cml0ZWVuZCcsIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gTmF2aWdhdGluZyB0byB0aGUgZmlsZSB3aWxsIGRvd25sb2FkIGl0LlxuICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb24uaHJlZiA9IGZpbGVFbnRyeS50b1VSTCgpO1xuICAgICAgICAgICAgICAgICAgICB9LCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgZnVuY3Rpb24oZXJyKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyLm5hbWUgKyAnOiAnICsgZXJyLm1lc3NhZ2UpO1xuICAgICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgZnMgPSByZXF1aXJlKCdmcycpO1xuICAgICAgICB2YXIgYnVmZmVyID0gdXRpbC5hcnJheUJ1ZmZlclRvTm9kZUJ1ZmZlcihhcnJheUJ1ZmZlcik7XG4gICAgICAgIGZzLndyaXRlRmlsZVN5bmMoZmlsZU5hbWUsIGJ1ZmZlcik7XG4gICAgfVxufTtcbi8qKlxuICogQHByaXZhdGVcbiAqL1xuRm9udC5wcm90b3R5cGUuZnNTZWxlY3Rpb25WYWx1ZXMgPSB7XG4gICAgSVRBTElDOiAgICAgICAgICAgICAgMHgwMDEsIC8vMVxuICAgIFVOREVSU0NPUkU6ICAgICAgICAgIDB4MDAyLCAvLzJcbiAgICBORUdBVElWRTogICAgICAgICAgICAweDAwNCwgLy80XG4gICAgT1VUTElORUQ6ICAgICAgICAgICAgMHgwMDgsIC8vOFxuICAgIFNUUklLRU9VVDogICAgICAgICAgIDB4MDEwLCAvLzE2XG4gICAgQk9MRDogICAgICAgICAgICAgICAgMHgwMjAsIC8vMzJcbiAgICBSRUdVTEFSOiAgICAgICAgICAgICAweDA0MCwgLy82NFxuICAgIFVTRVJfVFlQT19NRVRSSUNTOiAgIDB4MDgwLCAvLzEyOFxuICAgIFdXUzogICAgICAgICAgICAgICAgIDB4MTAwLCAvLzI1NlxuICAgIE9CTElRVUU6ICAgICAgICAgICAgIDB4MjAwICAvLzUxMlxufTtcblxuLyoqXG4gKiBAcHJpdmF0ZVxuICovXG5Gb250LnByb3RvdHlwZS51c1dpZHRoQ2xhc3NlcyA9IHtcbiAgICBVTFRSQV9DT05ERU5TRUQ6IDEsXG4gICAgRVhUUkFfQ09OREVOU0VEOiAyLFxuICAgIENPTkRFTlNFRDogMyxcbiAgICBTRU1JX0NPTkRFTlNFRDogNCxcbiAgICBNRURJVU06IDUsXG4gICAgU0VNSV9FWFBBTkRFRDogNixcbiAgICBFWFBBTkRFRDogNyxcbiAgICBFWFRSQV9FWFBBTkRFRDogOCxcbiAgICBVTFRSQV9FWFBBTkRFRDogOVxufTtcblxuLyoqXG4gKiBAcHJpdmF0ZVxuICovXG5Gb250LnByb3RvdHlwZS51c1dlaWdodENsYXNzZXMgPSB7XG4gICAgVEhJTjogMTAwLFxuICAgIEVYVFJBX0xJR0hUOiAyMDAsXG4gICAgTElHSFQ6IDMwMCxcbiAgICBOT1JNQUw6IDQwMCxcbiAgICBNRURJVU06IDUwMCxcbiAgICBTRU1JX0JPTEQ6IDYwMCxcbiAgICBCT0xEOiA3MDAsXG4gICAgRVhUUkFfQk9MRDogODAwLFxuICAgIEJMQUNLOiAgICA5MDBcbn07XG5cbmV4cG9ydHMuRm9udCA9IEZvbnQ7XG4iLCIvLyBUaGUgR2x5cGggb2JqZWN0XG5cbid1c2Ugc3RyaWN0JztcblxudmFyIGNoZWNrID0gcmVxdWlyZSgnLi9jaGVjaycpO1xudmFyIGRyYXcgPSByZXF1aXJlKCcuL2RyYXcnKTtcbnZhciBwYXRoID0gcmVxdWlyZSgnLi9wYXRoJyk7XG5cbmZ1bmN0aW9uIGdldFBhdGhEZWZpbml0aW9uKGdseXBoLCBwYXRoKSB7XG4gICAgdmFyIF9wYXRoID0gcGF0aCB8fCB7IGNvbW1hbmRzOiBbXSB9O1xuICAgIHJldHVybiB7XG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcblxuICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBfcGF0aCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgIF9wYXRoID0gX3BhdGgoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIF9wYXRoO1xuICAgICAgICB9LFxuXG4gICAgICAgIHNldDogZnVuY3Rpb24ocCkge1xuICAgICAgICAgICAgX3BhdGggPSBwO1xuICAgICAgICB9XG4gICAgfTtcbn1cbi8qKlxuICogQHR5cGVkZWYgR2x5cGhPcHRpb25zXG4gKiBAdHlwZSBPYmplY3RcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbbmFtZV0gLSBUaGUgZ2x5cGggbmFtZVxuICogQHByb3BlcnR5IHtudW1iZXJ9IFt1bmljb2RlXVxuICogQHByb3BlcnR5IHtBcnJheX0gW3VuaWNvZGVzXVxuICogQHByb3BlcnR5IHtudW1iZXJ9IFt4TWluXVxuICogQHByb3BlcnR5IHtudW1iZXJ9IFt5TWluXVxuICogQHByb3BlcnR5IHtudW1iZXJ9IFt4TWF4XVxuICogQHByb3BlcnR5IHtudW1iZXJ9IFt5TWF4XVxuICogQHByb3BlcnR5IHtudW1iZXJ9IFthZHZhbmNlV2lkdGhdXG4gKi9cblxuLy8gQSBHbHlwaCBpcyBhbiBpbmRpdmlkdWFsIG1hcmsgdGhhdCBvZnRlbiBjb3JyZXNwb25kcyB0byBhIGNoYXJhY3Rlci5cbi8vIFNvbWUgZ2x5cGhzLCBzdWNoIGFzIGxpZ2F0dXJlcywgYXJlIGEgY29tYmluYXRpb24gb2YgbWFueSBjaGFyYWN0ZXJzLlxuLy8gR2x5cGhzIGFyZSB0aGUgYmFzaWMgYnVpbGRpbmcgYmxvY2tzIG9mIGEgZm9udC5cbi8vXG4vLyBUaGUgYEdseXBoYCBjbGFzcyBjb250YWlucyB1dGlsaXR5IG1ldGhvZHMgZm9yIGRyYXdpbmcgdGhlIHBhdGggYW5kIGl0cyBwb2ludHMuXG4vKipcbiAqIEBleHBvcnRzIG9wZW50eXBlLkdseXBoXG4gKiBAY2xhc3NcbiAqIEBwYXJhbSB7R2x5cGhPcHRpb25zfVxuICogQGNvbnN0cnVjdG9yXG4gKi9cbmZ1bmN0aW9uIEdseXBoKG9wdGlvbnMpIHtcbiAgICAvLyBCeSBwdXR0aW5nIGFsbCB0aGUgY29kZSBvbiBhIHByb3RvdHlwZSBmdW5jdGlvbiAod2hpY2ggaXMgb25seSBkZWNsYXJlZCBvbmNlKVxuICAgIC8vIHdlIHJlZHVjZSB0aGUgbWVtb3J5IHJlcXVpcmVtZW50cyBmb3IgbGFyZ2VyIGZvbnRzIGJ5IHNvbWUgMiVcbiAgICB0aGlzLmJpbmRDb25zdHJ1Y3RvclZhbHVlcyhvcHRpb25zKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0gIHtHbHlwaE9wdGlvbnN9XG4gKi9cbkdseXBoLnByb3RvdHlwZS5iaW5kQ29uc3RydWN0b3JWYWx1ZXMgPSBmdW5jdGlvbihvcHRpb25zKSB7XG4gICAgdGhpcy5pbmRleCA9IG9wdGlvbnMuaW5kZXggfHwgMDtcblxuICAgIC8vIFRoZXNlIHRocmVlIHZhbHVlcyBjYW5ubm90IGJlIGRlZmVycmVkIGZvciBtZW1vcnkgb3B0aW1pemF0aW9uOlxuICAgIHRoaXMubmFtZSA9IG9wdGlvbnMubmFtZSB8fCBudWxsO1xuICAgIHRoaXMudW5pY29kZSA9IG9wdGlvbnMudW5pY29kZSB8fCB1bmRlZmluZWQ7XG4gICAgdGhpcy51bmljb2RlcyA9IG9wdGlvbnMudW5pY29kZXMgfHwgb3B0aW9ucy51bmljb2RlICE9PSB1bmRlZmluZWQgPyBbb3B0aW9ucy51bmljb2RlXSA6IFtdO1xuXG4gICAgLy8gQnV0IGJ5IGJpbmRpbmcgdGhlc2UgdmFsdWVzIG9ubHkgd2hlbiBuZWNlc3NhcnksIHdlIHJlZHVjZSBjYW5cbiAgICAvLyB0aGUgbWVtb3J5IHJlcXVpcmVtZW50cyBieSBhbG1vc3QgMyUgZm9yIGxhcmdlciBmb250cy5cbiAgICBpZiAob3B0aW9ucy54TWluKSB7XG4gICAgICAgIHRoaXMueE1pbiA9IG9wdGlvbnMueE1pbjtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy55TWluKSB7XG4gICAgICAgIHRoaXMueU1pbiA9IG9wdGlvbnMueU1pbjtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy54TWF4KSB7XG4gICAgICAgIHRoaXMueE1heCA9IG9wdGlvbnMueE1heDtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy55TWF4KSB7XG4gICAgICAgIHRoaXMueU1heCA9IG9wdGlvbnMueU1heDtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5hZHZhbmNlV2lkdGgpIHtcbiAgICAgICAgdGhpcy5hZHZhbmNlV2lkdGggPSBvcHRpb25zLmFkdmFuY2VXaWR0aDtcbiAgICB9XG5cbiAgICAvLyBUaGUgcGF0aCBmb3IgYSBnbHlwaCBpcyB0aGUgbW9zdCBtZW1vcnkgaW50ZW5zaXZlLCBhbmQgaXMgYm91bmQgYXMgYSB2YWx1ZVxuICAgIC8vIHdpdGggYSBnZXR0ZXIvc2V0dGVyIHRvIGVuc3VyZSB3ZSBhY3R1YWxseSBkbyBwYXRoIHBhcnNpbmcgb25seSBvbmNlIHRoZVxuICAgIC8vIHBhdGggaXMgYWN0dWFsbHkgbmVlZGVkIGJ5IGFueXRoaW5nLlxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCAncGF0aCcsIGdldFBhdGhEZWZpbml0aW9uKHRoaXMsIG9wdGlvbnMucGF0aCkpO1xufTtcblxuLyoqXG4gKiBAcGFyYW0ge251bWJlcn1cbiAqL1xuR2x5cGgucHJvdG90eXBlLmFkZFVuaWNvZGUgPSBmdW5jdGlvbih1bmljb2RlKSB7XG4gICAgaWYgKHRoaXMudW5pY29kZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHRoaXMudW5pY29kZSA9IHVuaWNvZGU7XG4gICAgfVxuXG4gICAgdGhpcy51bmljb2Rlcy5wdXNoKHVuaWNvZGUpO1xufTtcblxuLyoqXG4gKiBDYWxjdWxhdGUgdGhlIG1pbmltdW0gYm91bmRpbmcgYm94IGZvciB0aGlzIGdseXBoLlxuICogQHJldHVybiB7b3BlbnR5cGUuQm91bmRpbmdCb3h9XG4gKi9cbkdseXBoLnByb3RvdHlwZS5nZXRCb3VuZGluZ0JveCA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnBhdGguZ2V0Qm91bmRpbmdCb3goKTtcbn07XG5cbi8qKlxuICogQ29udmVydCB0aGUgZ2x5cGggdG8gYSBQYXRoIHdlIGNhbiBkcmF3IG9uIGEgZHJhd2luZyBjb250ZXh0LlxuICogQHBhcmFtICB7bnVtYmVyfSBbeD0wXSAtIEhvcml6b250YWwgcG9zaXRpb24gb2YgdGhlIGJlZ2lubmluZyBvZiB0aGUgdGV4dC5cbiAqIEBwYXJhbSAge251bWJlcn0gW3k9MF0gLSBWZXJ0aWNhbCBwb3NpdGlvbiBvZiB0aGUgKmJhc2VsaW5lKiBvZiB0aGUgdGV4dC5cbiAqIEBwYXJhbSAge251bWJlcn0gW2ZvbnRTaXplPTcyXSAtIEZvbnQgc2l6ZSBpbiBwaXhlbHMuIFdlIHNjYWxlIHRoZSBnbHlwaCB1bml0cyBieSBgMSAvIHVuaXRzUGVyRW0gKiBmb250U2l6ZWAuXG4gKiBAcGFyYW0gIHtPYmplY3Q9fSBvcHRpb25zIC0geFNjYWxlLCB5U2NhbGUgdG8gc3RyZWNoIHRoZSBnbHlwaC5cbiAqIEByZXR1cm4ge29wZW50eXBlLlBhdGh9XG4gKi9cbkdseXBoLnByb3RvdHlwZS5nZXRQYXRoID0gZnVuY3Rpb24oeCwgeSwgZm9udFNpemUsIG9wdGlvbnMpIHtcbiAgICB4ID0geCAhPT0gdW5kZWZpbmVkID8geCA6IDA7XG4gICAgeSA9IHkgIT09IHVuZGVmaW5lZCA/IHkgOiAwO1xuICAgIG9wdGlvbnMgPSBvcHRpb25zICE9PSB1bmRlZmluZWQgPyBvcHRpb25zIDoge3hTY2FsZTogMS4wLCB5U2NhbGU6IDEuMH07XG4gICAgZm9udFNpemUgPSBmb250U2l6ZSAhPT0gdW5kZWZpbmVkID8gZm9udFNpemUgOiA3MjtcbiAgICB2YXIgc2NhbGUgPSAxIC8gdGhpcy5wYXRoLnVuaXRzUGVyRW0gKiBmb250U2l6ZTtcbiAgICB2YXIgeFNjYWxlID0gb3B0aW9ucy54U2NhbGUgKiBzY2FsZTtcbiAgICB2YXIgeVNjYWxlID0gb3B0aW9ucy55U2NhbGUgKiBzY2FsZTtcblxuICAgIHZhciBwID0gbmV3IHBhdGguUGF0aCgpO1xuICAgIHZhciBjb21tYW5kcyA9IHRoaXMucGF0aC5jb21tYW5kcztcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvbW1hbmRzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICAgIHZhciBjbWQgPSBjb21tYW5kc1tpXTtcbiAgICAgICAgaWYgKGNtZC50eXBlID09PSAnTScpIHtcbiAgICAgICAgICAgIHAubW92ZVRvKHggKyAoY21kLnggKiB4U2NhbGUpLCB5ICsgKC1jbWQueSAqIHlTY2FsZSkpO1xuICAgICAgICB9IGVsc2UgaWYgKGNtZC50eXBlID09PSAnTCcpIHtcbiAgICAgICAgICAgIHAubGluZVRvKHggKyAoY21kLnggKiB4U2NhbGUpLCB5ICsgKC1jbWQueSAqIHlTY2FsZSkpO1xuICAgICAgICB9IGVsc2UgaWYgKGNtZC50eXBlID09PSAnUScpIHtcbiAgICAgICAgICAgIHAucXVhZHJhdGljQ3VydmVUbyh4ICsgKGNtZC54MSAqIHhTY2FsZSksIHkgKyAoLWNtZC55MSAqIHlTY2FsZSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeCArIChjbWQueCAqIHhTY2FsZSksIHkgKyAoLWNtZC55ICogeVNjYWxlKSk7XG4gICAgICAgIH0gZWxzZSBpZiAoY21kLnR5cGUgPT09ICdDJykge1xuICAgICAgICAgICAgcC5jdXJ2ZVRvKHggKyAoY21kLngxICogeFNjYWxlKSwgeSArICgtY21kLnkxICogeVNjYWxlKSxcbiAgICAgICAgICAgICAgICAgICAgICB4ICsgKGNtZC54MiAqIHhTY2FsZSksIHkgKyAoLWNtZC55MiAqIHlTY2FsZSksXG4gICAgICAgICAgICAgICAgICAgICAgeCArIChjbWQueCAqIHhTY2FsZSksIHkgKyAoLWNtZC55ICogeVNjYWxlKSk7XG4gICAgICAgIH0gZWxzZSBpZiAoY21kLnR5cGUgPT09ICdaJykge1xuICAgICAgICAgICAgcC5jbG9zZVBhdGgoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBwO1xufTtcblxuLyoqXG4gKiBTcGxpdCB0aGUgZ2x5cGggaW50byBjb250b3Vycy5cbiAqIFRoaXMgZnVuY3Rpb24gaXMgaGVyZSBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHksIGFuZCB0b1xuICogcHJvdmlkZSByYXcgYWNjZXNzIHRvIHRoZSBUcnVlVHlwZSBnbHlwaCBvdXRsaW5lcy5cbiAqIEByZXR1cm4ge0FycmF5fVxuICovXG5HbHlwaC5wcm90b3R5cGUuZ2V0Q29udG91cnMgPSBmdW5jdGlvbigpIHtcbiAgICBpZiAodGhpcy5wb2ludHMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgdmFyIGNvbnRvdXJzID0gW107XG4gICAgdmFyIGN1cnJlbnRDb250b3VyID0gW107XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLnBvaW50cy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICB2YXIgcHQgPSB0aGlzLnBvaW50c1tpXTtcbiAgICAgICAgY3VycmVudENvbnRvdXIucHVzaChwdCk7XG4gICAgICAgIGlmIChwdC5sYXN0UG9pbnRPZkNvbnRvdXIpIHtcbiAgICAgICAgICAgIGNvbnRvdXJzLnB1c2goY3VycmVudENvbnRvdXIpO1xuICAgICAgICAgICAgY3VycmVudENvbnRvdXIgPSBbXTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNoZWNrLmFyZ3VtZW50KGN1cnJlbnRDb250b3VyLmxlbmd0aCA9PT0gMCwgJ1RoZXJlIGFyZSBzdGlsbCBwb2ludHMgbGVmdCBpbiB0aGUgY3VycmVudCBjb250b3VyLicpO1xuICAgIHJldHVybiBjb250b3Vycztcbn07XG5cbi8qKlxuICogQ2FsY3VsYXRlIHRoZSB4TWluL3lNaW4veE1heC95TWF4L2xzYi9yc2IgZm9yIGEgR2x5cGguXG4gKiBAcmV0dXJuIHtPYmplY3R9XG4gKi9cbkdseXBoLnByb3RvdHlwZS5nZXRNZXRyaWNzID0gZnVuY3Rpb24oKSB7XG4gICAgdmFyIGNvbW1hbmRzID0gdGhpcy5wYXRoLmNvbW1hbmRzO1xuICAgIHZhciB4Q29vcmRzID0gW107XG4gICAgdmFyIHlDb29yZHMgPSBbXTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvbW1hbmRzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICAgIHZhciBjbWQgPSBjb21tYW5kc1tpXTtcbiAgICAgICAgaWYgKGNtZC50eXBlICE9PSAnWicpIHtcbiAgICAgICAgICAgIHhDb29yZHMucHVzaChjbWQueCk7XG4gICAgICAgICAgICB5Q29vcmRzLnB1c2goY21kLnkpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNtZC50eXBlID09PSAnUScgfHwgY21kLnR5cGUgPT09ICdDJykge1xuICAgICAgICAgICAgeENvb3Jkcy5wdXNoKGNtZC54MSk7XG4gICAgICAgICAgICB5Q29vcmRzLnB1c2goY21kLnkxKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjbWQudHlwZSA9PT0gJ0MnKSB7XG4gICAgICAgICAgICB4Q29vcmRzLnB1c2goY21kLngyKTtcbiAgICAgICAgICAgIHlDb29yZHMucHVzaChjbWQueTIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIG1ldHJpY3MgPSB7XG4gICAgICAgIHhNaW46IE1hdGgubWluLmFwcGx5KG51bGwsIHhDb29yZHMpLFxuICAgICAgICB5TWluOiBNYXRoLm1pbi5hcHBseShudWxsLCB5Q29vcmRzKSxcbiAgICAgICAgeE1heDogTWF0aC5tYXguYXBwbHkobnVsbCwgeENvb3JkcyksXG4gICAgICAgIHlNYXg6IE1hdGgubWF4LmFwcGx5KG51bGwsIHlDb29yZHMpLFxuICAgICAgICBsZWZ0U2lkZUJlYXJpbmc6IHRoaXMubGVmdFNpZGVCZWFyaW5nXG4gICAgfTtcblxuICAgIGlmICghaXNGaW5pdGUobWV0cmljcy54TWluKSkge1xuICAgICAgICBtZXRyaWNzLnhNaW4gPSAwO1xuICAgIH1cblxuICAgIGlmICghaXNGaW5pdGUobWV0cmljcy54TWF4KSkge1xuICAgICAgICBtZXRyaWNzLnhNYXggPSB0aGlzLmFkdmFuY2VXaWR0aDtcbiAgICB9XG5cbiAgICBpZiAoIWlzRmluaXRlKG1ldHJpY3MueU1pbikpIHtcbiAgICAgICAgbWV0cmljcy55TWluID0gMDtcbiAgICB9XG5cbiAgICBpZiAoIWlzRmluaXRlKG1ldHJpY3MueU1heCkpIHtcbiAgICAgICAgbWV0cmljcy55TWF4ID0gMDtcbiAgICB9XG5cbiAgICBtZXRyaWNzLnJpZ2h0U2lkZUJlYXJpbmcgPSB0aGlzLmFkdmFuY2VXaWR0aCAtIG1ldHJpY3MubGVmdFNpZGVCZWFyaW5nIC0gKG1ldHJpY3MueE1heCAtIG1ldHJpY3MueE1pbik7XG4gICAgcmV0dXJuIG1ldHJpY3M7XG59O1xuXG4vKipcbiAqIERyYXcgdGhlIGdseXBoIG9uIHRoZSBnaXZlbiBjb250ZXh0LlxuICogQHBhcmFtICB7Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEfSBjdHggLSBBIDJEIGRyYXdpbmcgY29udGV4dCwgbGlrZSBDYW52YXMuXG4gKiBAcGFyYW0gIHtudW1iZXJ9IFt4PTBdIC0gSG9yaXpvbnRhbCBwb3NpdGlvbiBvZiB0aGUgYmVnaW5uaW5nIG9mIHRoZSB0ZXh0LlxuICogQHBhcmFtICB7bnVtYmVyfSBbeT0wXSAtIFZlcnRpY2FsIHBvc2l0aW9uIG9mIHRoZSAqYmFzZWxpbmUqIG9mIHRoZSB0ZXh0LlxuICogQHBhcmFtICB7bnVtYmVyfSBbZm9udFNpemU9NzJdIC0gRm9udCBzaXplIGluIHBpeGVscy4gV2Ugc2NhbGUgdGhlIGdseXBoIHVuaXRzIGJ5IGAxIC8gdW5pdHNQZXJFbSAqIGZvbnRTaXplYC5cbiAqIEBwYXJhbSAge09iamVjdD19IG9wdGlvbnMgLSB4U2NhbGUsIHlTY2FsZSB0byBzdHJlY2ggdGhlIGdseXBoLlxuICovXG5HbHlwaC5wcm90b3R5cGUuZHJhdyA9IGZ1bmN0aW9uKGN0eCwgeCwgeSwgZm9udFNpemUsIG9wdGlvbnMpIHtcbiAgICB0aGlzLmdldFBhdGgoeCwgeSwgZm9udFNpemUsIG9wdGlvbnMpLmRyYXcoY3R4KTtcbn07XG5cbi8qKlxuICogRHJhdyB0aGUgcG9pbnRzIG9mIHRoZSBnbHlwaC5cbiAqIE9uLWN1cnZlIHBvaW50cyB3aWxsIGJlIGRyYXduIGluIGJsdWUsIG9mZi1jdXJ2ZSBwb2ludHMgd2lsbCBiZSBkcmF3biBpbiByZWQuXG4gKiBAcGFyYW0gIHtDYW52YXNSZW5kZXJpbmdDb250ZXh0MkR9IGN0eCAtIEEgMkQgZHJhd2luZyBjb250ZXh0LCBsaWtlIENhbnZhcy5cbiAqIEBwYXJhbSAge251bWJlcn0gW3g9MF0gLSBIb3Jpem9udGFsIHBvc2l0aW9uIG9mIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHRleHQuXG4gKiBAcGFyYW0gIHtudW1iZXJ9IFt5PTBdIC0gVmVydGljYWwgcG9zaXRpb24gb2YgdGhlICpiYXNlbGluZSogb2YgdGhlIHRleHQuXG4gKiBAcGFyYW0gIHtudW1iZXJ9IFtmb250U2l6ZT03Ml0gLSBGb250IHNpemUgaW4gcGl4ZWxzLiBXZSBzY2FsZSB0aGUgZ2x5cGggdW5pdHMgYnkgYDEgLyB1bml0c1BlckVtICogZm9udFNpemVgLlxuICovXG5HbHlwaC5wcm90b3R5cGUuZHJhd1BvaW50cyA9IGZ1bmN0aW9uKGN0eCwgeCwgeSwgZm9udFNpemUpIHtcblxuICAgIGZ1bmN0aW9uIGRyYXdDaXJjbGVzKGwsIHgsIHksIHNjYWxlKSB7XG4gICAgICAgIHZhciBQSV9TUSA9IE1hdGguUEkgKiAyO1xuICAgICAgICBjdHguYmVnaW5QYXRoKCk7XG4gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgbC5sZW5ndGg7IGogKz0gMSkge1xuICAgICAgICAgICAgY3R4Lm1vdmVUbyh4ICsgKGxbal0ueCAqIHNjYWxlKSwgeSArIChsW2pdLnkgKiBzY2FsZSkpO1xuICAgICAgICAgICAgY3R4LmFyYyh4ICsgKGxbal0ueCAqIHNjYWxlKSwgeSArIChsW2pdLnkgKiBzY2FsZSksIDIsIDAsIFBJX1NRLCBmYWxzZSk7XG4gICAgICAgIH1cblxuICAgICAgICBjdHguY2xvc2VQYXRoKCk7XG4gICAgICAgIGN0eC5maWxsKCk7XG4gICAgfVxuXG4gICAgeCA9IHggIT09IHVuZGVmaW5lZCA/IHggOiAwO1xuICAgIHkgPSB5ICE9PSB1bmRlZmluZWQgPyB5IDogMDtcbiAgICBmb250U2l6ZSA9IGZvbnRTaXplICE9PSB1bmRlZmluZWQgPyBmb250U2l6ZSA6IDI0O1xuICAgIHZhciBzY2FsZSA9IDEgLyB0aGlzLnBhdGgudW5pdHNQZXJFbSAqIGZvbnRTaXplO1xuXG4gICAgdmFyIGJsdWVDaXJjbGVzID0gW107XG4gICAgdmFyIHJlZENpcmNsZXMgPSBbXTtcbiAgICB2YXIgcGF0aCA9IHRoaXMucGF0aDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBhdGguY29tbWFuZHMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgICAgdmFyIGNtZCA9IHBhdGguY29tbWFuZHNbaV07XG4gICAgICAgIGlmIChjbWQueCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBibHVlQ2lyY2xlcy5wdXNoKHt4OiBjbWQueCwgeTogLWNtZC55fSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY21kLngxICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJlZENpcmNsZXMucHVzaCh7eDogY21kLngxLCB5OiAtY21kLnkxfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY21kLngyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJlZENpcmNsZXMucHVzaCh7eDogY21kLngyLCB5OiAtY21kLnkyfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjdHguZmlsbFN0eWxlID0gJ2JsdWUnO1xuICAgIGRyYXdDaXJjbGVzKGJsdWVDaXJjbGVzLCB4LCB5LCBzY2FsZSk7XG4gICAgY3R4LmZpbGxTdHlsZSA9ICdyZWQnO1xuICAgIGRyYXdDaXJjbGVzKHJlZENpcmNsZXMsIHgsIHksIHNjYWxlKTtcbn07XG5cbi8qKlxuICogRHJhdyBsaW5lcyBpbmRpY2F0aW5nIGltcG9ydGFudCBmb250IG1lYXN1cmVtZW50cy5cbiAqIEJsYWNrIGxpbmVzIGluZGljYXRlIHRoZSBvcmlnaW4gb2YgdGhlIGNvb3JkaW5hdGUgc3lzdGVtIChwb2ludCAwLDApLlxuICogQmx1ZSBsaW5lcyBpbmRpY2F0ZSB0aGUgZ2x5cGggYm91bmRpbmcgYm94LlxuICogR3JlZW4gbGluZSBpbmRpY2F0ZXMgdGhlIGFkdmFuY2Ugd2lkdGggb2YgdGhlIGdseXBoLlxuICogQHBhcmFtICB7Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEfSBjdHggLSBBIDJEIGRyYXdpbmcgY29udGV4dCwgbGlrZSBDYW52YXMuXG4gKiBAcGFyYW0gIHtudW1iZXJ9IFt4PTBdIC0gSG9yaXpvbnRhbCBwb3NpdGlvbiBvZiB0aGUgYmVnaW5uaW5nIG9mIHRoZSB0ZXh0LlxuICogQHBhcmFtICB7bnVtYmVyfSBbeT0wXSAtIFZlcnRpY2FsIHBvc2l0aW9uIG9mIHRoZSAqYmFzZWxpbmUqIG9mIHRoZSB0ZXh0LlxuICogQHBhcmFtICB7bnVtYmVyfSBbZm9udFNpemU9NzJdIC0gRm9udCBzaXplIGluIHBpeGVscy4gV2Ugc2NhbGUgdGhlIGdseXBoIHVuaXRzIGJ5IGAxIC8gdW5pdHNQZXJFbSAqIGZvbnRTaXplYC5cbiAqL1xuR2x5cGgucHJvdG90eXBlLmRyYXdNZXRyaWNzID0gZnVuY3Rpb24oY3R4LCB4LCB5LCBmb250U2l6ZSkge1xuICAgIHZhciBzY2FsZTtcbiAgICB4ID0geCAhPT0gdW5kZWZpbmVkID8geCA6IDA7XG4gICAgeSA9IHkgIT09IHVuZGVmaW5lZCA/IHkgOiAwO1xuICAgIGZvbnRTaXplID0gZm9udFNpemUgIT09IHVuZGVmaW5lZCA/IGZvbnRTaXplIDogMjQ7XG4gICAgc2NhbGUgPSAxIC8gdGhpcy5wYXRoLnVuaXRzUGVyRW0gKiBmb250U2l6ZTtcbiAgICBjdHgubGluZVdpZHRoID0gMTtcblxuICAgIC8vIERyYXcgdGhlIG9yaWdpblxuICAgIGN0eC5zdHJva2VTdHlsZSA9ICdibGFjayc7XG4gICAgZHJhdy5saW5lKGN0eCwgeCwgLTEwMDAwLCB4LCAxMDAwMCk7XG4gICAgZHJhdy5saW5lKGN0eCwgLTEwMDAwLCB5LCAxMDAwMCwgeSk7XG5cbiAgICAvLyBUaGlzIGNvZGUgaXMgaGVyZSBkdWUgdG8gbWVtb3J5IG9wdGltaXphdGlvbjogYnkgbm90IHVzaW5nXG4gICAgLy8gZGVmYXVsdHMgaW4gdGhlIGNvbnN0cnVjdG9yLCB3ZSBzYXZlIGEgbm90YWJsZSBhbW91bnQgb2YgbWVtb3J5LlxuICAgIHZhciB4TWluID0gdGhpcy54TWluIHx8IDA7XG4gICAgdmFyIHlNaW4gPSB0aGlzLnlNaW4gfHwgMDtcbiAgICB2YXIgeE1heCA9IHRoaXMueE1heCB8fCAwO1xuICAgIHZhciB5TWF4ID0gdGhpcy55TWF4IHx8IDA7XG4gICAgdmFyIGFkdmFuY2VXaWR0aCA9IHRoaXMuYWR2YW5jZVdpZHRoIHx8IDA7XG5cbiAgICAvLyBEcmF3IHRoZSBnbHlwaCBib3hcbiAgICBjdHguc3Ryb2tlU3R5bGUgPSAnYmx1ZSc7XG4gICAgZHJhdy5saW5lKGN0eCwgeCArICh4TWluICogc2NhbGUpLCAtMTAwMDAsIHggKyAoeE1pbiAqIHNjYWxlKSwgMTAwMDApO1xuICAgIGRyYXcubGluZShjdHgsIHggKyAoeE1heCAqIHNjYWxlKSwgLTEwMDAwLCB4ICsgKHhNYXggKiBzY2FsZSksIDEwMDAwKTtcbiAgICBkcmF3LmxpbmUoY3R4LCAtMTAwMDAsIHkgKyAoLXlNaW4gKiBzY2FsZSksIDEwMDAwLCB5ICsgKC15TWluICogc2NhbGUpKTtcbiAgICBkcmF3LmxpbmUoY3R4LCAtMTAwMDAsIHkgKyAoLXlNYXggKiBzY2FsZSksIDEwMDAwLCB5ICsgKC15TWF4ICogc2NhbGUpKTtcblxuICAgIC8vIERyYXcgdGhlIGFkdmFuY2Ugd2lkdGhcbiAgICBjdHguc3Ryb2tlU3R5bGUgPSAnZ3JlZW4nO1xuICAgIGRyYXcubGluZShjdHgsIHggKyAoYWR2YW5jZVdpZHRoICogc2NhbGUpLCAtMTAwMDAsIHggKyAoYWR2YW5jZVdpZHRoICogc2NhbGUpLCAxMDAwMCk7XG59O1xuXG5leHBvcnRzLkdseXBoID0gR2x5cGg7XG4iLCIvLyBUaGUgR2x5cGhTZXQgb2JqZWN0XG5cbid1c2Ugc3RyaWN0JztcblxudmFyIF9nbHlwaCA9IHJlcXVpcmUoJy4vZ2x5cGgnKTtcblxuLy8gRGVmaW5lIGEgcHJvcGVydHkgb24gdGhlIGdseXBoIHRoYXQgZGVwZW5kcyBvbiB0aGUgcGF0aCBiZWluZyBsb2FkZWQuXG5mdW5jdGlvbiBkZWZpbmVEZXBlbmRlbnRQcm9wZXJ0eShnbHlwaCwgZXh0ZXJuYWxOYW1lLCBpbnRlcm5hbE5hbWUpIHtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZ2x5cGgsIGV4dGVybmFsTmFtZSwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgLy8gUmVxdWVzdCB0aGUgcGF0aCBwcm9wZXJ0eSB0byBtYWtlIHN1cmUgdGhlIHBhdGggaXMgbG9hZGVkLlxuICAgICAgICAgICAgZ2x5cGgucGF0aDsgLy8ganNoaW50IGlnbm9yZTpsaW5lXG4gICAgICAgICAgICByZXR1cm4gZ2x5cGhbaW50ZXJuYWxOYW1lXTtcbiAgICAgICAgfSxcbiAgICAgICAgc2V0OiBmdW5jdGlvbihuZXdWYWx1ZSkge1xuICAgICAgICAgICAgZ2x5cGhbaW50ZXJuYWxOYW1lXSA9IG5ld1ZhbHVlO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbn1cblxuLyoqXG4gKiBBIEdseXBoU2V0IHJlcHJlc2VudHMgYWxsIGdseXBocyBhdmFpbGFibGUgaW4gdGhlIGZvbnQsIGJ1dCBtb2RlbGxlZCB1c2luZ1xuICogYSBkZWZlcnJlZCBnbHlwaCBsb2FkZXIsIGZvciByZXRyaWV2aW5nIGdseXBocyBvbmx5IG9uY2UgdGhleSBhcmUgYWJzb2x1dGVseVxuICogbmVjZXNzYXJ5LCB0byBrZWVwIHRoZSBtZW1vcnkgZm9vdHByaW50IGRvd24uXG4gKiBAZXhwb3J0cyBvcGVudHlwZS5HbHlwaFNldFxuICogQGNsYXNzXG4gKiBAcGFyYW0ge29wZW50eXBlLkZvbnR9XG4gKiBAcGFyYW0ge0FycmF5fVxuICovXG5mdW5jdGlvbiBHbHlwaFNldChmb250LCBnbHlwaHMpIHtcbiAgICB0aGlzLmZvbnQgPSBmb250O1xuICAgIHRoaXMuZ2x5cGhzID0ge307XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZ2x5cGhzKSkge1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGdseXBocy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdGhpcy5nbHlwaHNbaV0gPSBnbHlwaHNbaV07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmxlbmd0aCA9IChnbHlwaHMgJiYgZ2x5cGhzLmxlbmd0aCkgfHwgMDtcbn1cblxuLyoqXG4gKiBAcGFyYW0gIHtudW1iZXJ9IGluZGV4XG4gKiBAcmV0dXJuIHtvcGVudHlwZS5HbHlwaH1cbiAqL1xuR2x5cGhTZXQucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uKGluZGV4KSB7XG4gICAgaWYgKHR5cGVvZiB0aGlzLmdseXBoc1tpbmRleF0gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhpcy5nbHlwaHNbaW5kZXhdID0gdGhpcy5nbHlwaHNbaW5kZXhdKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZ2x5cGhzW2luZGV4XTtcbn07XG5cbi8qKlxuICogQHBhcmFtICB7bnVtYmVyfSBpbmRleFxuICogQHBhcmFtICB7T2JqZWN0fVxuICovXG5HbHlwaFNldC5wcm90b3R5cGUucHVzaCA9IGZ1bmN0aW9uKGluZGV4LCBsb2FkZXIpIHtcbiAgICB0aGlzLmdseXBoc1tpbmRleF0gPSBsb2FkZXI7XG4gICAgdGhpcy5sZW5ndGgrKztcbn07XG5cbi8qKlxuICogQGFsaWFzIG9wZW50eXBlLmdseXBoTG9hZGVyXG4gKiBAcGFyYW0gIHtvcGVudHlwZS5Gb250fSBmb250XG4gKiBAcGFyYW0gIHtudW1iZXJ9IGluZGV4XG4gKiBAcmV0dXJuIHtvcGVudHlwZS5HbHlwaH1cbiAqL1xuZnVuY3Rpb24gZ2x5cGhMb2FkZXIoZm9udCwgaW5kZXgpIHtcbiAgICByZXR1cm4gbmV3IF9nbHlwaC5HbHlwaCh7aW5kZXg6IGluZGV4LCBmb250OiBmb250fSk7XG59XG5cbi8qKlxuICogR2VuZXJhdGUgYSBzdHViIGdseXBoIHRoYXQgY2FuIGJlIGZpbGxlZCB3aXRoIGFsbCBtZXRhZGF0YSAqZXhjZXB0KlxuICogdGhlIFwicG9pbnRzXCIgYW5kIFwicGF0aFwiIHByb3BlcnRpZXMsIHdoaWNoIG11c3QgYmUgbG9hZGVkIG9ubHkgb25jZVxuICogdGhlIGdseXBoJ3MgcGF0aCBpcyBhY3R1YWxseSByZXF1ZXN0ZWQgZm9yIHRleHQgc2hhcGluZy5cbiAqIEBhbGlhcyBvcGVudHlwZS50dGZHbHlwaExvYWRlclxuICogQHBhcmFtICB7b3BlbnR5cGUuRm9udH0gZm9udFxuICogQHBhcmFtICB7bnVtYmVyfSBpbmRleFxuICogQHBhcmFtICB7RnVuY3Rpb259IHBhcnNlR2x5cGhcbiAqIEBwYXJhbSAge09iamVjdH0gZGF0YVxuICogQHBhcmFtICB7bnVtYmVyfSBwb3NpdGlvblxuICogQHBhcmFtICB7RnVuY3Rpb259IGJ1aWxkUGF0aFxuICogQHJldHVybiB7b3BlbnR5cGUuR2x5cGh9XG4gKi9cbmZ1bmN0aW9uIHR0ZkdseXBoTG9hZGVyKGZvbnQsIGluZGV4LCBwYXJzZUdseXBoLCBkYXRhLCBwb3NpdGlvbiwgYnVpbGRQYXRoKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgZ2x5cGggPSBuZXcgX2dseXBoLkdseXBoKHtpbmRleDogaW5kZXgsIGZvbnQ6IGZvbnR9KTtcblxuICAgICAgICBnbHlwaC5wYXRoID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICBwYXJzZUdseXBoKGdseXBoLCBkYXRhLCBwb3NpdGlvbik7XG4gICAgICAgICAgICB2YXIgcGF0aCA9IGJ1aWxkUGF0aChmb250LmdseXBocywgZ2x5cGgpO1xuICAgICAgICAgICAgcGF0aC51bml0c1BlckVtID0gZm9udC51bml0c1BlckVtO1xuICAgICAgICAgICAgcmV0dXJuIHBhdGg7XG4gICAgICAgIH07XG5cbiAgICAgICAgZGVmaW5lRGVwZW5kZW50UHJvcGVydHkoZ2x5cGgsICd4TWluJywgJ194TWluJyk7XG4gICAgICAgIGRlZmluZURlcGVuZGVudFByb3BlcnR5KGdseXBoLCAneE1heCcsICdfeE1heCcpO1xuICAgICAgICBkZWZpbmVEZXBlbmRlbnRQcm9wZXJ0eShnbHlwaCwgJ3lNaW4nLCAnX3lNaW4nKTtcbiAgICAgICAgZGVmaW5lRGVwZW5kZW50UHJvcGVydHkoZ2x5cGgsICd5TWF4JywgJ195TWF4Jyk7XG5cbiAgICAgICAgcmV0dXJuIGdseXBoO1xuICAgIH07XG59XG4vKipcbiAqIEBhbGlhcyBvcGVudHlwZS5jZmZHbHlwaExvYWRlclxuICogQHBhcmFtICB7b3BlbnR5cGUuRm9udH0gZm9udFxuICogQHBhcmFtICB7bnVtYmVyfSBpbmRleFxuICogQHBhcmFtICB7RnVuY3Rpb259IHBhcnNlQ0ZGQ2hhcnN0cmluZ1xuICogQHBhcmFtICB7c3RyaW5nfSBjaGFyc3RyaW5nXG4gKiBAcmV0dXJuIHtvcGVudHlwZS5HbHlwaH1cbiAqL1xuZnVuY3Rpb24gY2ZmR2x5cGhMb2FkZXIoZm9udCwgaW5kZXgsIHBhcnNlQ0ZGQ2hhcnN0cmluZywgY2hhcnN0cmluZykge1xuICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIGdseXBoID0gbmV3IF9nbHlwaC5HbHlwaCh7aW5kZXg6IGluZGV4LCBmb250OiBmb250fSk7XG5cbiAgICAgICAgZ2x5cGgucGF0aCA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdmFyIHBhdGggPSBwYXJzZUNGRkNoYXJzdHJpbmcoZm9udCwgZ2x5cGgsIGNoYXJzdHJpbmcpO1xuICAgICAgICAgICAgcGF0aC51bml0c1BlckVtID0gZm9udC51bml0c1BlckVtO1xuICAgICAgICAgICAgcmV0dXJuIHBhdGg7XG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIGdseXBoO1xuICAgIH07XG59XG5cbmV4cG9ydHMuR2x5cGhTZXQgPSBHbHlwaFNldDtcbmV4cG9ydHMuZ2x5cGhMb2FkZXIgPSBnbHlwaExvYWRlcjtcbmV4cG9ydHMudHRmR2x5cGhMb2FkZXIgPSB0dGZHbHlwaExvYWRlcjtcbmV4cG9ydHMuY2ZmR2x5cGhMb2FkZXIgPSBjZmZHbHlwaExvYWRlcjtcbiIsIi8vIFRoZSBMYXlvdXQgb2JqZWN0IGlzIHRoZSBwcm90b3R5cGUgb2YgU3Vic3RpdGlvbiBvYmplY3RzLCBhbmQgcHJvdmlkZXMgdXRpbGl0eSBtZXRob2RzIHRvIG1hbmlwdWxhdGVcbi8vIGNvbW1vbiBsYXlvdXQgdGFibGVzIChHUE9TLCBHU1VCLCBHREVGLi4uKVxuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBjaGVjayA9IHJlcXVpcmUoJy4vY2hlY2snKTtcblxuZnVuY3Rpb24gc2VhcmNoVGFnKGFyciwgdGFnKSB7XG4gICAgLyoganNoaW50IGJpdHdpc2U6IGZhbHNlICovXG4gICAgdmFyIGltaW4gPSAwO1xuICAgIHZhciBpbWF4ID0gYXJyLmxlbmd0aCAtIDE7XG4gICAgd2hpbGUgKGltaW4gPD0gaW1heCkge1xuICAgICAgICB2YXIgaW1pZCA9IChpbWluICsgaW1heCkgPj4+IDE7XG4gICAgICAgIHZhciB2YWwgPSBhcnJbaW1pZF0udGFnO1xuICAgICAgICBpZiAodmFsID09PSB0YWcpIHtcbiAgICAgICAgICAgIHJldHVybiBpbWlkO1xuICAgICAgICB9IGVsc2UgaWYgKHZhbCA8IHRhZykge1xuICAgICAgICAgICAgaW1pbiA9IGltaWQgKyAxO1xuICAgICAgICB9IGVsc2UgeyBpbWF4ID0gaW1pZCAtIDE7IH1cbiAgICB9XG4gICAgLy8gTm90IGZvdW5kOiByZXR1cm4gLTEtaW5zZXJ0aW9uIHBvaW50XG4gICAgcmV0dXJuIC1pbWluIC0gMTtcbn1cblxuZnVuY3Rpb24gYmluU2VhcmNoKGFyciwgdmFsdWUpIHtcbiAgICAvKiBqc2hpbnQgYml0d2lzZTogZmFsc2UgKi9cbiAgICB2YXIgaW1pbiA9IDA7XG4gICAgdmFyIGltYXggPSBhcnIubGVuZ3RoIC0gMTtcbiAgICB3aGlsZSAoaW1pbiA8PSBpbWF4KSB7XG4gICAgICAgIHZhciBpbWlkID0gKGltaW4gKyBpbWF4KSA+Pj4gMTtcbiAgICAgICAgdmFyIHZhbCA9IGFycltpbWlkXTtcbiAgICAgICAgaWYgKHZhbCA9PT0gdmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybiBpbWlkO1xuICAgICAgICB9IGVsc2UgaWYgKHZhbCA8IHZhbHVlKSB7XG4gICAgICAgICAgICBpbWluID0gaW1pZCArIDE7XG4gICAgICAgIH0gZWxzZSB7IGltYXggPSBpbWlkIC0gMTsgfVxuICAgIH1cbiAgICAvLyBOb3QgZm91bmQ6IHJldHVybiAtMS1pbnNlcnRpb24gcG9pbnRcbiAgICByZXR1cm4gLWltaW4gLSAxO1xufVxuXG4vKipcbiAqIEBleHBvcnRzIG9wZW50eXBlLkxheW91dFxuICogQGNsYXNzXG4gKi9cbmZ1bmN0aW9uIExheW91dChmb250LCB0YWJsZU5hbWUpIHtcbiAgICB0aGlzLmZvbnQgPSBmb250O1xuICAgIHRoaXMudGFibGVOYW1lID0gdGFibGVOYW1lO1xufVxuXG5MYXlvdXQucHJvdG90eXBlID0ge1xuXG4gICAgLyoqXG4gICAgICogQmluYXJ5IHNlYXJjaCBhbiBvYmplY3QgYnkgXCJ0YWdcIiBwcm9wZXJ0eVxuICAgICAqIEBpbnN0YW5jZVxuICAgICAqIEBmdW5jdGlvbiBzZWFyY2hUYWdcbiAgICAgKiBAbWVtYmVyb2Ygb3BlbnR5cGUuTGF5b3V0XG4gICAgICogQHBhcmFtICB7QXJyYXl9IGFyclxuICAgICAqIEBwYXJhbSAge3N0cmluZ30gdGFnXG4gICAgICogQHJldHVybiB7bnVtYmVyfVxuICAgICAqL1xuICAgIHNlYXJjaFRhZzogc2VhcmNoVGFnLFxuXG4gICAgLyoqXG4gICAgICogQmluYXJ5IHNlYXJjaCBpbiBhIGxpc3Qgb2YgbnVtYmVyc1xuICAgICAqIEBpbnN0YW5jZVxuICAgICAqIEBmdW5jdGlvbiBiaW5TZWFyY2hcbiAgICAgKiBAbWVtYmVyb2Ygb3BlbnR5cGUuTGF5b3V0XG4gICAgICogQHBhcmFtICB7QXJyYXl9IGFyclxuICAgICAqIEBwYXJhbSAge251bWJlcn0gdmFsdWVcbiAgICAgKiBAcmV0dXJuIHtudW1iZXJ9XG4gICAgICovXG4gICAgYmluU2VhcmNoOiBiaW5TZWFyY2gsXG5cbiAgICAvKipcbiAgICAgKiBHZXQgb3IgY3JlYXRlIHRoZSBMYXlvdXQgdGFibGUgKEdTVUIsIEdQT1MgZXRjKS5cbiAgICAgKiBAcGFyYW0gIHtib29sZWFufSBjcmVhdGUgLSBXaGV0aGVyIHRvIGNyZWF0ZSBhIG5ldyBvbmUuXG4gICAgICogQHJldHVybiB7T2JqZWN0fSBUaGUgR1NVQiBvciBHUE9TIHRhYmxlLlxuICAgICAqL1xuICAgIGdldFRhYmxlOiBmdW5jdGlvbihjcmVhdGUpIHtcbiAgICAgICAgdmFyIGxheW91dCA9IHRoaXMuZm9udC50YWJsZXNbdGhpcy50YWJsZU5hbWVdO1xuICAgICAgICBpZiAoIWxheW91dCAmJiBjcmVhdGUpIHtcbiAgICAgICAgICAgIGxheW91dCA9IHRoaXMuZm9udC50YWJsZXNbdGhpcy50YWJsZU5hbWVdID0gdGhpcy5jcmVhdGVEZWZhdWx0VGFibGUoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbGF5b3V0O1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGFsbCBzY3JpcHRzIGluIHRoZSBzdWJzdGl0dXRpb24gdGFibGUuXG4gICAgICogQGluc3RhbmNlXG4gICAgICogQHJldHVybiB7QXJyYXl9XG4gICAgICovXG4gICAgZ2V0U2NyaXB0TmFtZXM6IGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgbGF5b3V0ID0gdGhpcy5nZXRUYWJsZSgpO1xuICAgICAgICBpZiAoIWxheW91dCkgeyByZXR1cm4gW107IH1cbiAgICAgICAgcmV0dXJuIGxheW91dC5zY3JpcHRzLm1hcChmdW5jdGlvbihzY3JpcHQpIHtcbiAgICAgICAgICAgIHJldHVybiBzY3JpcHQudGFnO1xuICAgICAgICB9KTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgYmVzdCBiZXQgZm9yIGEgc2NyaXB0IG5hbWUuXG4gICAgICogUmV0dXJucyAnREZMVCcgaWYgaXQgZXhpc3RzLlxuICAgICAqIElmIG5vdCwgcmV0dXJucyAnbGF0bicgaWYgaXQgZXhpc3RzLlxuICAgICAqIElmIG5laXRoZXIgZXhpc3QsIHJldHVybnMgdW5kZWZpbmVkLlxuICAgICAqL1xuICAgIGdldERlZmF1bHRTY3JpcHROYW1lOiBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIGxheW91dCA9IHRoaXMuZ2V0VGFibGUoKTtcbiAgICAgICAgaWYgKCFsYXlvdXQpIHsgcmV0dXJuOyB9XG4gICAgICAgIHZhciBoYXNMYXRuID0gZmFsc2U7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGF5b3V0LnNjcmlwdHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHZhciBuYW1lID0gbGF5b3V0LnNjcmlwdHNbaV0udGFnO1xuICAgICAgICAgICAgaWYgKG5hbWUgPT09ICdERkxUJykgcmV0dXJuIG5hbWU7XG4gICAgICAgICAgICBpZiAobmFtZSA9PT0gJ2xhdG4nKSBoYXNMYXRuID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaGFzTGF0bikgcmV0dXJuICdsYXRuJztcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBhbGwgTGFuZ1N5c1JlY29yZHMgaW4gdGhlIGdpdmVuIHNjcmlwdC5cbiAgICAgKiBAaW5zdGFuY2VcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW3NjcmlwdD0nREZMVCddXG4gICAgICogQHBhcmFtIHtib29sZWFufSBjcmVhdGUgLSBmb3JjZXMgdGhlIGNyZWF0aW9uIG9mIHRoaXMgc2NyaXB0IHRhYmxlIGlmIGl0IGRvZXNuJ3QgZXhpc3QuXG4gICAgICogQHJldHVybiB7T2JqZWN0fSBBbiBvYmplY3Qgd2l0aCB0YWcgYW5kIHNjcmlwdCBwcm9wZXJ0aWVzLlxuICAgICAqL1xuICAgIGdldFNjcmlwdFRhYmxlOiBmdW5jdGlvbihzY3JpcHQsIGNyZWF0ZSkge1xuICAgICAgICB2YXIgbGF5b3V0ID0gdGhpcy5nZXRUYWJsZShjcmVhdGUpO1xuICAgICAgICBpZiAobGF5b3V0KSB7XG4gICAgICAgICAgICBzY3JpcHQgPSBzY3JpcHQgfHwgJ0RGTFQnO1xuICAgICAgICAgICAgdmFyIHNjcmlwdHMgPSBsYXlvdXQuc2NyaXB0cztcbiAgICAgICAgICAgIHZhciBwb3MgPSBzZWFyY2hUYWcobGF5b3V0LnNjcmlwdHMsIHNjcmlwdCk7XG4gICAgICAgICAgICBpZiAocG9zID49IDApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc2NyaXB0c1twb3NdLnNjcmlwdDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY3JlYXRlKSB7XG4gICAgICAgICAgICAgICAgdmFyIHNjciA9IHtcbiAgICAgICAgICAgICAgICAgICAgdGFnOiBzY3JpcHQsXG4gICAgICAgICAgICAgICAgICAgIHNjcmlwdDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdExhbmdTeXM6IHsgcmVzZXJ2ZWQ6IDAsIHJlcUZlYXR1cmVJbmRleDogMHhmZmZmLCBmZWF0dXJlSW5kZXhlczogW10gfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhbmdTeXNSZWNvcmRzOiBbXVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBzY3JpcHRzLnNwbGljZSgtMSAtIHBvcywgMCwgc2NyKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gc2NyLnNjcmlwdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGEgbGFuZ3VhZ2Ugc3lzdGVtIHRhYmxlXG4gICAgICogQGluc3RhbmNlXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IFtzY3JpcHQ9J0RGTFQnXVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbbGFuZ3VhZ2U9J2RsZnQnXVxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gY3JlYXRlIC0gZm9yY2VzIHRoZSBjcmVhdGlvbiBvZiB0aGlzIGxhbmdTeXNUYWJsZSBpZiBpdCBkb2Vzbid0IGV4aXN0LlxuICAgICAqIEByZXR1cm4ge09iamVjdH1cbiAgICAgKi9cbiAgICBnZXRMYW5nU3lzVGFibGU6IGZ1bmN0aW9uKHNjcmlwdCwgbGFuZ3VhZ2UsIGNyZWF0ZSkge1xuICAgICAgICB2YXIgc2NyaXB0VGFibGUgPSB0aGlzLmdldFNjcmlwdFRhYmxlKHNjcmlwdCwgY3JlYXRlKTtcbiAgICAgICAgaWYgKHNjcmlwdFRhYmxlKSB7XG4gICAgICAgICAgICBpZiAoIWxhbmd1YWdlIHx8IGxhbmd1YWdlID09PSAnZGZsdCcgfHwgbGFuZ3VhZ2UgPT09ICdERkxUJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBzY3JpcHRUYWJsZS5kZWZhdWx0TGFuZ1N5cztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBwb3MgPSBzZWFyY2hUYWcoc2NyaXB0VGFibGUubGFuZ1N5c1JlY29yZHMsIGxhbmd1YWdlKTtcbiAgICAgICAgICAgIGlmIChwb3MgPj0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBzY3JpcHRUYWJsZS5sYW5nU3lzUmVjb3Jkc1twb3NdLmxhbmdTeXM7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNyZWF0ZSkge1xuICAgICAgICAgICAgICAgIHZhciBsYW5nU3lzUmVjb3JkID0ge1xuICAgICAgICAgICAgICAgICAgICB0YWc6IGxhbmd1YWdlLFxuICAgICAgICAgICAgICAgICAgICBsYW5nU3lzOiB7IHJlc2VydmVkOiAwLCByZXFGZWF0dXJlSW5kZXg6IDB4ZmZmZiwgZmVhdHVyZUluZGV4ZXM6IFtdIH1cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHNjcmlwdFRhYmxlLmxhbmdTeXNSZWNvcmRzLnNwbGljZSgtMSAtIHBvcywgMCwgbGFuZ1N5c1JlY29yZCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGxhbmdTeXNSZWNvcmQubGFuZ1N5cztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBHZXQgYSBzcGVjaWZpYyBmZWF0dXJlIHRhYmxlLlxuICAgICAqIEBpbnN0YW5jZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc2NyaXB0PSdERkxUJ11cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW2xhbmd1YWdlPSdkbGZ0J11cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gZmVhdHVyZSAtIE9uZSBvZiB0aGUgY29kZXMgbGlzdGVkIGF0IGh0dHBzOi8vd3d3Lm1pY3Jvc29mdC5jb20vdHlwb2dyYXBoeS9PVFNQRUMvZmVhdHVyZWxpc3QuaHRtXG4gICAgICogQHBhcmFtIHtib29sZWFufSBjcmVhdGUgLSBmb3JjZXMgdGhlIGNyZWF0aW9uIG9mIHRoZSBmZWF0dXJlIHRhYmxlIGlmIGl0IGRvZXNuJ3QgZXhpc3QuXG4gICAgICogQHJldHVybiB7T2JqZWN0fVxuICAgICAqL1xuICAgIGdldEZlYXR1cmVUYWJsZTogZnVuY3Rpb24oc2NyaXB0LCBsYW5ndWFnZSwgZmVhdHVyZSwgY3JlYXRlKSB7XG4gICAgICAgIHZhciBsYW5nU3lzVGFibGUgPSB0aGlzLmdldExhbmdTeXNUYWJsZShzY3JpcHQsIGxhbmd1YWdlLCBjcmVhdGUpO1xuICAgICAgICBpZiAobGFuZ1N5c1RhYmxlKSB7XG4gICAgICAgICAgICB2YXIgZmVhdHVyZVJlY29yZDtcbiAgICAgICAgICAgIHZhciBmZWF0SW5kZXhlcyA9IGxhbmdTeXNUYWJsZS5mZWF0dXJlSW5kZXhlcztcbiAgICAgICAgICAgIHZhciBhbGxGZWF0dXJlcyA9IHRoaXMuZm9udC50YWJsZXNbdGhpcy50YWJsZU5hbWVdLmZlYXR1cmVzO1xuICAgICAgICAgICAgLy8gVGhlIEZlYXR1cmVJbmRleCBhcnJheSBvZiBpbmRpY2VzIGlzIGluIGFyYml0cmFyeSBvcmRlcixcbiAgICAgICAgICAgIC8vIGV2ZW4gaWYgYWxsRmVhdHVyZXMgaXMgc29ydGVkIGFscGhhYmV0aWNhbGx5IGJ5IGZlYXR1cmUgdGFnLlxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBmZWF0SW5kZXhlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGZlYXR1cmVSZWNvcmQgPSBhbGxGZWF0dXJlc1tmZWF0SW5kZXhlc1tpXV07XG4gICAgICAgICAgICAgICAgaWYgKGZlYXR1cmVSZWNvcmQudGFnID09PSBmZWF0dXJlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmZWF0dXJlUmVjb3JkLmZlYXR1cmU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGNyZWF0ZSkge1xuICAgICAgICAgICAgICAgIHZhciBpbmRleCA9IGFsbEZlYXR1cmVzLmxlbmd0aDtcbiAgICAgICAgICAgICAgICAvLyBBdXRvbWF0aWMgb3JkZXJpbmcgb2YgZmVhdHVyZXMgd291bGQgcmVxdWlyZSB0byBzaGlmdCBmZWF0dXJlIGluZGV4ZXMgaW4gdGhlIHNjcmlwdCBsaXN0LlxuICAgICAgICAgICAgICAgIGNoZWNrLmFzc2VydChpbmRleCA9PT0gMCB8fCBmZWF0dXJlID49IGFsbEZlYXR1cmVzW2luZGV4IC0gMV0udGFnLCAnRmVhdHVyZXMgbXVzdCBiZSBhZGRlZCBpbiBhbHBoYWJldGljYWwgb3JkZXIuJyk7XG4gICAgICAgICAgICAgICAgZmVhdHVyZVJlY29yZCA9IHtcbiAgICAgICAgICAgICAgICAgICAgdGFnOiBmZWF0dXJlLFxuICAgICAgICAgICAgICAgICAgICBmZWF0dXJlOiB7IHBhcmFtczogMCwgbG9va3VwTGlzdEluZGV4ZXM6IFtdIH1cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGFsbEZlYXR1cmVzLnB1c2goZmVhdHVyZVJlY29yZCk7XG4gICAgICAgICAgICAgICAgZmVhdEluZGV4ZXMucHVzaChpbmRleCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZlYXR1cmVSZWNvcmQuZmVhdHVyZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBHZXQgdGhlIGxvb2t1cCB0YWJsZXMgb2YgYSBnaXZlbiB0eXBlIGZvciBhIHNjcmlwdC9sYW5ndWFnZS9mZWF0dXJlLlxuICAgICAqIEBpbnN0YW5jZVxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBbc2NyaXB0PSdERkxUJ11cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gW2xhbmd1YWdlPSdkbGZ0J11cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gZmVhdHVyZSAtIDQtbGV0dGVyIGZlYXR1cmUgY29kZVxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBsb29rdXBUeXBlIC0gMSB0byA4XG4gICAgICogQHBhcmFtIHtib29sZWFufSBjcmVhdGUgLSBmb3JjZXMgdGhlIGNyZWF0aW9uIG9mIHRoZSBsb29rdXAgdGFibGUgaWYgaXQgZG9lc24ndCBleGlzdCwgd2l0aCBubyBzdWJ0YWJsZXMuXG4gICAgICogQHJldHVybiB7T2JqZWN0W119XG4gICAgICovXG4gICAgZ2V0TG9va3VwVGFibGVzOiBmdW5jdGlvbihzY3JpcHQsIGxhbmd1YWdlLCBmZWF0dXJlLCBsb29rdXBUeXBlLCBjcmVhdGUpIHtcbiAgICAgICAgdmFyIGZlYXR1cmVUYWJsZSA9IHRoaXMuZ2V0RmVhdHVyZVRhYmxlKHNjcmlwdCwgbGFuZ3VhZ2UsIGZlYXR1cmUsIGNyZWF0ZSk7XG4gICAgICAgIHZhciB0YWJsZXMgPSBbXTtcbiAgICAgICAgaWYgKGZlYXR1cmVUYWJsZSkge1xuICAgICAgICAgICAgdmFyIGxvb2t1cFRhYmxlO1xuICAgICAgICAgICAgdmFyIGxvb2t1cExpc3RJbmRleGVzID0gZmVhdHVyZVRhYmxlLmxvb2t1cExpc3RJbmRleGVzO1xuICAgICAgICAgICAgdmFyIGFsbExvb2t1cHMgPSB0aGlzLmZvbnQudGFibGVzW3RoaXMudGFibGVOYW1lXS5sb29rdXBzO1xuICAgICAgICAgICAgLy8gbG9va3VwTGlzdEluZGV4ZXMgYXJlIGluIG5vIHBhcnRpY3VsYXIgb3JkZXIsIHNvIHVzZSBuYcOvdmUgc2VhcmNoLlxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsb29rdXBMaXN0SW5kZXhlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGxvb2t1cFRhYmxlID0gYWxsTG9va3Vwc1tsb29rdXBMaXN0SW5kZXhlc1tpXV07XG4gICAgICAgICAgICAgICAgaWYgKGxvb2t1cFRhYmxlLmxvb2t1cFR5cGUgPT09IGxvb2t1cFR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGFibGVzLnB1c2gobG9va3VwVGFibGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0YWJsZXMubGVuZ3RoID09PSAwICYmIGNyZWF0ZSkge1xuICAgICAgICAgICAgICAgIGxvb2t1cFRhYmxlID0ge1xuICAgICAgICAgICAgICAgICAgICBsb29rdXBUeXBlOiBsb29rdXBUeXBlLFxuICAgICAgICAgICAgICAgICAgICBsb29rdXBGbGFnOiAwLFxuICAgICAgICAgICAgICAgICAgICBzdWJ0YWJsZXM6IFtdLFxuICAgICAgICAgICAgICAgICAgICBtYXJrRmlsdGVyaW5nU2V0OiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHZhciBpbmRleCA9IGFsbExvb2t1cHMubGVuZ3RoO1xuICAgICAgICAgICAgICAgIGFsbExvb2t1cHMucHVzaChsb29rdXBUYWJsZSk7XG4gICAgICAgICAgICAgICAgbG9va3VwTGlzdEluZGV4ZXMucHVzaChpbmRleCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtsb29rdXBUYWJsZV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRhYmxlcztcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgbGlzdCBvZiBnbHlwaCBpbmRleGVzIG9mIGEgY292ZXJhZ2UgdGFibGUuXG4gICAgICogRm9ybWF0IDE6IHRoZSBsaXN0IGlzIHN0b3JlZCByYXdcbiAgICAgKiBGb3JtYXQgMjogY29tcGFjdCBsaXN0IGFzIHJhbmdlIHJlY29yZHMuXG4gICAgICogQGluc3RhbmNlXG4gICAgICogQHBhcmFtICB7T2JqZWN0fSBjb3ZlcmFnZVRhYmxlXG4gICAgICogQHJldHVybiB7QXJyYXl9XG4gICAgICovXG4gICAgZXhwYW5kQ292ZXJhZ2U6IGZ1bmN0aW9uKGNvdmVyYWdlVGFibGUpIHtcbiAgICAgICAgaWYgKGNvdmVyYWdlVGFibGUuZm9ybWF0ID09PSAxKSB7XG4gICAgICAgICAgICByZXR1cm4gY292ZXJhZ2VUYWJsZS5nbHlwaHM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2YXIgZ2x5cGhzID0gW107XG4gICAgICAgICAgICB2YXIgcmFuZ2VzID0gY292ZXJhZ2VUYWJsZS5yYW5nZXM7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJhbmdlczsgaSsrKSB7XG4gICAgICAgICAgICAgICAgdmFyIHJhbmdlID0gcmFuZ2VzW2ldO1xuICAgICAgICAgICAgICAgIHZhciBzdGFydCA9IHJhbmdlLnN0YXJ0O1xuICAgICAgICAgICAgICAgIHZhciBlbmQgPSByYW5nZS5lbmQ7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IHN0YXJ0OyBqIDw9IGVuZDsgaisrKSB7XG4gICAgICAgICAgICAgICAgICAgIGdseXBocy5wdXNoKGopO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBnbHlwaHM7XG4gICAgICAgIH1cbiAgICB9XG5cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gTGF5b3V0O1xuIiwiLy8gb3BlbnR5cGUuanNcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlYm94L29wZW50eXBlLmpzXG4vLyAoYykgMjAxNSBGcmVkZXJpayBEZSBCbGVzZXJcbi8vIG9wZW50eXBlLmpzIG1heSBiZSBmcmVlbHkgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLlxuXG4vKiBnbG9iYWwgRGF0YVZpZXcsIFVpbnQ4QXJyYXksIFhNTEh0dHBSZXF1ZXN0ICAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBpbmZsYXRlID0gcmVxdWlyZSgndGlueS1pbmZsYXRlJyk7XG5cbnZhciBlbmNvZGluZyA9IHJlcXVpcmUoJy4vZW5jb2RpbmcnKTtcbnZhciBfZm9udCA9IHJlcXVpcmUoJy4vZm9udCcpO1xudmFyIGdseXBoID0gcmVxdWlyZSgnLi9nbHlwaCcpO1xudmFyIHBhcnNlID0gcmVxdWlyZSgnLi9wYXJzZScpO1xudmFyIGJib3ggPSByZXF1aXJlKCcuL2Jib3gnKTtcbnZhciBwYXRoID0gcmVxdWlyZSgnLi9wYXRoJyk7XG52YXIgdXRpbCA9IHJlcXVpcmUoJy4vdXRpbCcpO1xuXG52YXIgY21hcCA9IHJlcXVpcmUoJy4vdGFibGVzL2NtYXAnKTtcbnZhciBjZmYgPSByZXF1aXJlKCcuL3RhYmxlcy9jZmYnKTtcbnZhciBmdmFyID0gcmVxdWlyZSgnLi90YWJsZXMvZnZhcicpO1xudmFyIGdseWYgPSByZXF1aXJlKCcuL3RhYmxlcy9nbHlmJyk7XG52YXIgZ3BvcyA9IHJlcXVpcmUoJy4vdGFibGVzL2dwb3MnKTtcbnZhciBnc3ViID0gcmVxdWlyZSgnLi90YWJsZXMvZ3N1YicpO1xudmFyIGhlYWQgPSByZXF1aXJlKCcuL3RhYmxlcy9oZWFkJyk7XG52YXIgaGhlYSA9IHJlcXVpcmUoJy4vdGFibGVzL2hoZWEnKTtcbnZhciBobXR4ID0gcmVxdWlyZSgnLi90YWJsZXMvaG10eCcpO1xudmFyIGtlcm4gPSByZXF1aXJlKCcuL3RhYmxlcy9rZXJuJyk7XG52YXIgbHRhZyA9IHJlcXVpcmUoJy4vdGFibGVzL2x0YWcnKTtcbnZhciBsb2NhID0gcmVxdWlyZSgnLi90YWJsZXMvbG9jYScpO1xudmFyIG1heHAgPSByZXF1aXJlKCcuL3RhYmxlcy9tYXhwJyk7XG52YXIgX25hbWUgPSByZXF1aXJlKCcuL3RhYmxlcy9uYW1lJyk7XG52YXIgb3MyID0gcmVxdWlyZSgnLi90YWJsZXMvb3MyJyk7XG52YXIgcG9zdCA9IHJlcXVpcmUoJy4vdGFibGVzL3Bvc3QnKTtcbnZhciBtZXRhID0gcmVxdWlyZSgnLi90YWJsZXMvbWV0YScpO1xuXG4vKipcbiAqIFRoZSBvcGVudHlwZSBsaWJyYXJ5LlxuICogQG5hbWVzcGFjZSBvcGVudHlwZVxuICovXG5cbi8vIEZpbGUgbG9hZGVycyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8qKlxuICogTG9hZHMgYSBmb250IGZyb20gYSBmaWxlLiBUaGUgY2FsbGJhY2sgdGhyb3dzIGFuIGVycm9yIG1lc3NhZ2UgYXMgdGhlIGZpcnN0IHBhcmFtZXRlciBpZiBpdCBmYWlsc1xuICogYW5kIHRoZSBmb250IGFzIGFuIEFycmF5QnVmZmVyIGluIHRoZSBzZWNvbmQgcGFyYW1ldGVyIGlmIGl0IHN1Y2NlZWRzLlxuICogQHBhcmFtICB7c3RyaW5nfSBwYXRoIC0gVGhlIHBhdGggb2YgdGhlIGZpbGVcbiAqIEBwYXJhbSAge0Z1bmN0aW9ufSBjYWxsYmFjayAtIFRoZSBmdW5jdGlvbiB0byBjYWxsIHdoZW4gdGhlIGZvbnQgbG9hZCBjb21wbGV0ZXNcbiAqL1xuZnVuY3Rpb24gbG9hZEZyb21GaWxlKHBhdGgsIGNhbGxiYWNrKSB7XG4gICAgdmFyIGZzID0gcmVxdWlyZSgnZnMnKTtcbiAgICBmcy5yZWFkRmlsZShwYXRoLCBmdW5jdGlvbihlcnIsIGJ1ZmZlcikge1xuICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soZXJyLm1lc3NhZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgY2FsbGJhY2sobnVsbCwgdXRpbC5ub2RlQnVmZmVyVG9BcnJheUJ1ZmZlcihidWZmZXIpKTtcbiAgICB9KTtcbn1cbi8qKlxuICogTG9hZHMgYSBmb250IGZyb20gYSBVUkwuIFRoZSBjYWxsYmFjayB0aHJvd3MgYW4gZXJyb3IgbWVzc2FnZSBhcyB0aGUgZmlyc3QgcGFyYW1ldGVyIGlmIGl0IGZhaWxzXG4gKiBhbmQgdGhlIGZvbnQgYXMgYW4gQXJyYXlCdWZmZXIgaW4gdGhlIHNlY29uZCBwYXJhbWV0ZXIgaWYgaXQgc3VjY2VlZHMuXG4gKiBAcGFyYW0gIHtzdHJpbmd9IHVybCAtIFRoZSBVUkwgb2YgdGhlIGZvbnQgZmlsZS5cbiAqIEBwYXJhbSAge0Z1bmN0aW9ufSBjYWxsYmFjayAtIFRoZSBmdW5jdGlvbiB0byBjYWxsIHdoZW4gdGhlIGZvbnQgbG9hZCBjb21wbGV0ZXNcbiAqL1xuZnVuY3Rpb24gbG9hZEZyb21VcmwodXJsLCBjYWxsYmFjaykge1xuICAgIHZhciByZXF1ZXN0ID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7XG4gICAgcmVxdWVzdC5vcGVuKCdnZXQnLCB1cmwsIHRydWUpO1xuICAgIHJlcXVlc3QucmVzcG9uc2VUeXBlID0gJ2FycmF5YnVmZmVyJztcbiAgICByZXF1ZXN0Lm9ubG9hZCA9IGZ1bmN0aW9uKCkge1xuICAgICAgICBpZiAocmVxdWVzdC5zdGF0dXMgIT09IDIwMCkge1xuICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKCdGb250IGNvdWxkIG5vdCBiZSBsb2FkZWQ6ICcgKyByZXF1ZXN0LnN0YXR1c1RleHQpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNhbGxiYWNrKG51bGwsIHJlcXVlc3QucmVzcG9uc2UpO1xuICAgIH07XG5cbiAgICByZXF1ZXN0LnNlbmQoKTtcbn1cblxuLy8gVGFibGUgRGlyZWN0b3J5IEVudHJpZXMgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLyoqXG4gKiBQYXJzZXMgT3BlblR5cGUgdGFibGUgZW50cmllcy5cbiAqIEBwYXJhbSAge0RhdGFWaWV3fVxuICogQHBhcmFtICB7TnVtYmVyfVxuICogQHJldHVybiB7T2JqZWN0W119XG4gKi9cbmZ1bmN0aW9uIHBhcnNlT3BlblR5cGVUYWJsZUVudHJpZXMoZGF0YSwgbnVtVGFibGVzKSB7XG4gICAgdmFyIHRhYmxlRW50cmllcyA9IFtdO1xuICAgIHZhciBwID0gMTI7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1UYWJsZXM7IGkgKz0gMSkge1xuICAgICAgICB2YXIgdGFnID0gcGFyc2UuZ2V0VGFnKGRhdGEsIHApO1xuICAgICAgICB2YXIgY2hlY2tzdW0gPSBwYXJzZS5nZXRVTG9uZyhkYXRhLCBwICsgNCk7XG4gICAgICAgIHZhciBvZmZzZXQgPSBwYXJzZS5nZXRVTG9uZyhkYXRhLCBwICsgOCk7XG4gICAgICAgIHZhciBsZW5ndGggPSBwYXJzZS5nZXRVTG9uZyhkYXRhLCBwICsgMTIpO1xuICAgICAgICB0YWJsZUVudHJpZXMucHVzaCh7dGFnOiB0YWcsIGNoZWNrc3VtOiBjaGVja3N1bSwgb2Zmc2V0OiBvZmZzZXQsIGxlbmd0aDogbGVuZ3RoLCBjb21wcmVzc2lvbjogZmFsc2V9KTtcbiAgICAgICAgcCArPSAxNjtcbiAgICB9XG5cbiAgICByZXR1cm4gdGFibGVFbnRyaWVzO1xufVxuXG4vKipcbiAqIFBhcnNlcyBXT0ZGIHRhYmxlIGVudHJpZXMuXG4gKiBAcGFyYW0gIHtEYXRhVmlld31cbiAqIEBwYXJhbSAge051bWJlcn1cbiAqIEByZXR1cm4ge09iamVjdFtdfVxuICovXG5mdW5jdGlvbiBwYXJzZVdPRkZUYWJsZUVudHJpZXMoZGF0YSwgbnVtVGFibGVzKSB7XG4gICAgdmFyIHRhYmxlRW50cmllcyA9IFtdO1xuICAgIHZhciBwID0gNDQ7IC8vIG9mZnNldCB0byB0aGUgZmlyc3QgdGFibGUgZGlyZWN0b3J5IGVudHJ5LlxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtVGFibGVzOyBpICs9IDEpIHtcbiAgICAgICAgdmFyIHRhZyA9IHBhcnNlLmdldFRhZyhkYXRhLCBwKTtcbiAgICAgICAgdmFyIG9mZnNldCA9IHBhcnNlLmdldFVMb25nKGRhdGEsIHAgKyA0KTtcbiAgICAgICAgdmFyIGNvbXBMZW5ndGggPSBwYXJzZS5nZXRVTG9uZyhkYXRhLCBwICsgOCk7XG4gICAgICAgIHZhciBvcmlnTGVuZ3RoID0gcGFyc2UuZ2V0VUxvbmcoZGF0YSwgcCArIDEyKTtcbiAgICAgICAgdmFyIGNvbXByZXNzaW9uO1xuICAgICAgICBpZiAoY29tcExlbmd0aCA8IG9yaWdMZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbXByZXNzaW9uID0gJ1dPRkYnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29tcHJlc3Npb24gPSBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRhYmxlRW50cmllcy5wdXNoKHt0YWc6IHRhZywgb2Zmc2V0OiBvZmZzZXQsIGNvbXByZXNzaW9uOiBjb21wcmVzc2lvbixcbiAgICAgICAgICAgIGNvbXByZXNzZWRMZW5ndGg6IGNvbXBMZW5ndGgsIG9yaWdpbmFsTGVuZ3RoOiBvcmlnTGVuZ3RofSk7XG4gICAgICAgIHAgKz0gMjA7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRhYmxlRW50cmllcztcbn1cblxuLyoqXG4gKiBAdHlwZWRlZiBUYWJsZURhdGFcbiAqIEB0eXBlIE9iamVjdFxuICogQHByb3BlcnR5IHtEYXRhVmlld30gZGF0YSAtIFRoZSBEYXRhVmlld1xuICogQHByb3BlcnR5IHtudW1iZXJ9IG9mZnNldCAtIFRoZSBkYXRhIG9mZnNldC5cbiAqL1xuXG4vKipcbiAqIEBwYXJhbSAge0RhdGFWaWV3fVxuICogQHBhcmFtICB7T2JqZWN0fVxuICogQHJldHVybiB7VGFibGVEYXRhfVxuICovXG5mdW5jdGlvbiB1bmNvbXByZXNzVGFibGUoZGF0YSwgdGFibGVFbnRyeSkge1xuICAgIGlmICh0YWJsZUVudHJ5LmNvbXByZXNzaW9uID09PSAnV09GRicpIHtcbiAgICAgICAgdmFyIGluQnVmZmVyID0gbmV3IFVpbnQ4QXJyYXkoZGF0YS5idWZmZXIsIHRhYmxlRW50cnkub2Zmc2V0ICsgMiwgdGFibGVFbnRyeS5jb21wcmVzc2VkTGVuZ3RoIC0gMik7XG4gICAgICAgIHZhciBvdXRCdWZmZXIgPSBuZXcgVWludDhBcnJheSh0YWJsZUVudHJ5Lm9yaWdpbmFsTGVuZ3RoKTtcbiAgICAgICAgaW5mbGF0ZShpbkJ1ZmZlciwgb3V0QnVmZmVyKTtcbiAgICAgICAgaWYgKG91dEJ1ZmZlci5ieXRlTGVuZ3RoICE9PSB0YWJsZUVudHJ5Lm9yaWdpbmFsTGVuZ3RoKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0RlY29tcHJlc3Npb24gZXJyb3I6ICcgKyB0YWJsZUVudHJ5LnRhZyArICcgZGVjb21wcmVzc2VkIGxlbmd0aCBkb2VzblxcJ3QgbWF0Y2ggcmVjb3JkZWQgbGVuZ3RoJyk7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgdmlldyA9IG5ldyBEYXRhVmlldyhvdXRCdWZmZXIuYnVmZmVyLCAwKTtcbiAgICAgICAgcmV0dXJuIHtkYXRhOiB2aWV3LCBvZmZzZXQ6IDB9O1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB7ZGF0YTogZGF0YSwgb2Zmc2V0OiB0YWJsZUVudHJ5Lm9mZnNldH07XG4gICAgfVxufVxuXG4vLyBQdWJsaWMgQVBJIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbi8qKlxuICogUGFyc2UgdGhlIE9wZW5UeXBlIGZpbGUgZGF0YSAoYXMgYW4gQXJyYXlCdWZmZXIpIGFuZCByZXR1cm4gYSBGb250IG9iamVjdC5cbiAqIFRocm93cyBhbiBlcnJvciBpZiB0aGUgZm9udCBjb3VsZCBub3QgYmUgcGFyc2VkLlxuICogQHBhcmFtICB7QXJyYXlCdWZmZXJ9XG4gKiBAcmV0dXJuIHtvcGVudHlwZS5Gb250fVxuICovXG5mdW5jdGlvbiBwYXJzZUJ1ZmZlcihidWZmZXIpIHtcbiAgICB2YXIgaW5kZXhUb0xvY0Zvcm1hdDtcbiAgICB2YXIgbHRhZ1RhYmxlO1xuXG4gICAgLy8gU2luY2UgdGhlIGNvbnN0cnVjdG9yIGNhbiBhbHNvIGJlIGNhbGxlZCB0byBjcmVhdGUgbmV3IGZvbnRzIGZyb20gc2NyYXRjaCwgd2UgaW5kaWNhdGUgdGhpc1xuICAgIC8vIHNob3VsZCBiZSBhbiBlbXB0eSBmb250IHRoYXQgd2UnbGwgZmlsbCB3aXRoIG91ciBvd24gZGF0YS5cbiAgICB2YXIgZm9udCA9IG5ldyBfZm9udC5Gb250KHtlbXB0eTogdHJ1ZX0pO1xuXG4gICAgLy8gT3BlblR5cGUgZm9udHMgdXNlIGJpZyBlbmRpYW4gYnl0ZSBvcmRlcmluZy5cbiAgICAvLyBXZSBjYW4ndCByZWx5IG9uIHR5cGVkIGFycmF5IHZpZXcgdHlwZXMsIGJlY2F1c2UgdGhleSBvcGVyYXRlIHdpdGggdGhlIGVuZGlhbm5lc3Mgb2YgdGhlIGhvc3QgY29tcHV0ZXIuXG4gICAgLy8gSW5zdGVhZCB3ZSB1c2UgRGF0YVZpZXdzIHdoZXJlIHdlIGNhbiBzcGVjaWZ5IGVuZGlhbm5lc3MuXG4gICAgdmFyIGRhdGEgPSBuZXcgRGF0YVZpZXcoYnVmZmVyLCAwKTtcbiAgICB2YXIgbnVtVGFibGVzO1xuICAgIHZhciB0YWJsZUVudHJpZXMgPSBbXTtcbiAgICB2YXIgc2lnbmF0dXJlID0gcGFyc2UuZ2V0VGFnKGRhdGEsIDApO1xuICAgIGlmIChzaWduYXR1cmUgPT09IFN0cmluZy5mcm9tQ2hhckNvZGUoMCwgMSwgMCwgMCkpIHtcbiAgICAgICAgZm9udC5vdXRsaW5lc0Zvcm1hdCA9ICd0cnVldHlwZSc7XG4gICAgICAgIG51bVRhYmxlcyA9IHBhcnNlLmdldFVTaG9ydChkYXRhLCA0KTtcbiAgICAgICAgdGFibGVFbnRyaWVzID0gcGFyc2VPcGVuVHlwZVRhYmxlRW50cmllcyhkYXRhLCBudW1UYWJsZXMpO1xuICAgIH0gZWxzZSBpZiAoc2lnbmF0dXJlID09PSAnT1RUTycpIHtcbiAgICAgICAgZm9udC5vdXRsaW5lc0Zvcm1hdCA9ICdjZmYnO1xuICAgICAgICBudW1UYWJsZXMgPSBwYXJzZS5nZXRVU2hvcnQoZGF0YSwgNCk7XG4gICAgICAgIHRhYmxlRW50cmllcyA9IHBhcnNlT3BlblR5cGVUYWJsZUVudHJpZXMoZGF0YSwgbnVtVGFibGVzKTtcbiAgICB9IGVsc2UgaWYgKHNpZ25hdHVyZSA9PT0gJ3dPRkYnKSB7XG4gICAgICAgIHZhciBmbGF2b3IgPSBwYXJzZS5nZXRUYWcoZGF0YSwgNCk7XG4gICAgICAgIGlmIChmbGF2b3IgPT09IFN0cmluZy5mcm9tQ2hhckNvZGUoMCwgMSwgMCwgMCkpIHtcbiAgICAgICAgICAgIGZvbnQub3V0bGluZXNGb3JtYXQgPSAndHJ1ZXR5cGUnO1xuICAgICAgICB9IGVsc2UgaWYgKGZsYXZvciA9PT0gJ09UVE8nKSB7XG4gICAgICAgICAgICBmb250Lm91dGxpbmVzRm9ybWF0ID0gJ2NmZic7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIE9wZW5UeXBlIGZsYXZvciAnICsgc2lnbmF0dXJlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIG51bVRhYmxlcyA9IHBhcnNlLmdldFVTaG9ydChkYXRhLCAxMik7XG4gICAgICAgIHRhYmxlRW50cmllcyA9IHBhcnNlV09GRlRhYmxlRW50cmllcyhkYXRhLCBudW1UYWJsZXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignVW5zdXBwb3J0ZWQgT3BlblR5cGUgc2lnbmF0dXJlICcgKyBzaWduYXR1cmUpO1xuICAgIH1cblxuICAgIHZhciBjZmZUYWJsZUVudHJ5O1xuICAgIHZhciBmdmFyVGFibGVFbnRyeTtcbiAgICB2YXIgZ2x5ZlRhYmxlRW50cnk7XG4gICAgdmFyIGdwb3NUYWJsZUVudHJ5O1xuICAgIHZhciBnc3ViVGFibGVFbnRyeTtcbiAgICB2YXIgaG10eFRhYmxlRW50cnk7XG4gICAgdmFyIGtlcm5UYWJsZUVudHJ5O1xuICAgIHZhciBsb2NhVGFibGVFbnRyeTtcbiAgICB2YXIgbmFtZVRhYmxlRW50cnk7XG4gICAgdmFyIG1ldGFUYWJsZUVudHJ5O1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1UYWJsZXM7IGkgKz0gMSkge1xuICAgICAgICB2YXIgdGFibGVFbnRyeSA9IHRhYmxlRW50cmllc1tpXTtcbiAgICAgICAgdmFyIHRhYmxlO1xuICAgICAgICBzd2l0Y2ggKHRhYmxlRW50cnkudGFnKSB7XG4gICAgICAgICAgICBjYXNlICdjbWFwJzpcbiAgICAgICAgICAgICAgICB0YWJsZSA9IHVuY29tcHJlc3NUYWJsZShkYXRhLCB0YWJsZUVudHJ5KTtcbiAgICAgICAgICAgICAgICBmb250LnRhYmxlcy5jbWFwID0gY21hcC5wYXJzZSh0YWJsZS5kYXRhLCB0YWJsZS5vZmZzZXQpO1xuICAgICAgICAgICAgICAgIGZvbnQuZW5jb2RpbmcgPSBuZXcgZW5jb2RpbmcuQ21hcEVuY29kaW5nKGZvbnQudGFibGVzLmNtYXApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnZnZhcic6XG4gICAgICAgICAgICAgICAgZnZhclRhYmxlRW50cnkgPSB0YWJsZUVudHJ5O1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnaGVhZCc6XG4gICAgICAgICAgICAgICAgdGFibGUgPSB1bmNvbXByZXNzVGFibGUoZGF0YSwgdGFibGVFbnRyeSk7XG4gICAgICAgICAgICAgICAgZm9udC50YWJsZXMuaGVhZCA9IGhlYWQucGFyc2UodGFibGUuZGF0YSwgdGFibGUub2Zmc2V0KTtcbiAgICAgICAgICAgICAgICBmb250LnVuaXRzUGVyRW0gPSBmb250LnRhYmxlcy5oZWFkLnVuaXRzUGVyRW07XG4gICAgICAgICAgICAgICAgaW5kZXhUb0xvY0Zvcm1hdCA9IGZvbnQudGFibGVzLmhlYWQuaW5kZXhUb0xvY0Zvcm1hdDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2hoZWEnOlxuICAgICAgICAgICAgICAgIHRhYmxlID0gdW5jb21wcmVzc1RhYmxlKGRhdGEsIHRhYmxlRW50cnkpO1xuICAgICAgICAgICAgICAgIGZvbnQudGFibGVzLmhoZWEgPSBoaGVhLnBhcnNlKHRhYmxlLmRhdGEsIHRhYmxlLm9mZnNldCk7XG4gICAgICAgICAgICAgICAgZm9udC5hc2NlbmRlciA9IGZvbnQudGFibGVzLmhoZWEuYXNjZW5kZXI7XG4gICAgICAgICAgICAgICAgZm9udC5kZXNjZW5kZXIgPSBmb250LnRhYmxlcy5oaGVhLmRlc2NlbmRlcjtcbiAgICAgICAgICAgICAgICBmb250Lm51bWJlck9mSE1ldHJpY3MgPSBmb250LnRhYmxlcy5oaGVhLm51bWJlck9mSE1ldHJpY3M7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdobXR4JzpcbiAgICAgICAgICAgICAgICBobXR4VGFibGVFbnRyeSA9IHRhYmxlRW50cnk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdsdGFnJzpcbiAgICAgICAgICAgICAgICB0YWJsZSA9IHVuY29tcHJlc3NUYWJsZShkYXRhLCB0YWJsZUVudHJ5KTtcbiAgICAgICAgICAgICAgICBsdGFnVGFibGUgPSBsdGFnLnBhcnNlKHRhYmxlLmRhdGEsIHRhYmxlLm9mZnNldCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdtYXhwJzpcbiAgICAgICAgICAgICAgICB0YWJsZSA9IHVuY29tcHJlc3NUYWJsZShkYXRhLCB0YWJsZUVudHJ5KTtcbiAgICAgICAgICAgICAgICBmb250LnRhYmxlcy5tYXhwID0gbWF4cC5wYXJzZSh0YWJsZS5kYXRhLCB0YWJsZS5vZmZzZXQpO1xuICAgICAgICAgICAgICAgIGZvbnQubnVtR2x5cGhzID0gZm9udC50YWJsZXMubWF4cC5udW1HbHlwaHM7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICduYW1lJzpcbiAgICAgICAgICAgICAgICBuYW1lVGFibGVFbnRyeSA9IHRhYmxlRW50cnk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdPUy8yJzpcbiAgICAgICAgICAgICAgICB0YWJsZSA9IHVuY29tcHJlc3NUYWJsZShkYXRhLCB0YWJsZUVudHJ5KTtcbiAgICAgICAgICAgICAgICBmb250LnRhYmxlcy5vczIgPSBvczIucGFyc2UodGFibGUuZGF0YSwgdGFibGUub2Zmc2V0KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3Bvc3QnOlxuICAgICAgICAgICAgICAgIHRhYmxlID0gdW5jb21wcmVzc1RhYmxlKGRhdGEsIHRhYmxlRW50cnkpO1xuICAgICAgICAgICAgICAgIGZvbnQudGFibGVzLnBvc3QgPSBwb3N0LnBhcnNlKHRhYmxlLmRhdGEsIHRhYmxlLm9mZnNldCk7XG4gICAgICAgICAgICAgICAgZm9udC5nbHlwaE5hbWVzID0gbmV3IGVuY29kaW5nLkdseXBoTmFtZXMoZm9udC50YWJsZXMucG9zdCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdnbHlmJzpcbiAgICAgICAgICAgICAgICBnbHlmVGFibGVFbnRyeSA9IHRhYmxlRW50cnk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdsb2NhJzpcbiAgICAgICAgICAgICAgICBsb2NhVGFibGVFbnRyeSA9IHRhYmxlRW50cnk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdDRkYgJzpcbiAgICAgICAgICAgICAgICBjZmZUYWJsZUVudHJ5ID0gdGFibGVFbnRyeTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2tlcm4nOlxuICAgICAgICAgICAgICAgIGtlcm5UYWJsZUVudHJ5ID0gdGFibGVFbnRyeTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ0dQT1MnOlxuICAgICAgICAgICAgICAgIGdwb3NUYWJsZUVudHJ5ID0gdGFibGVFbnRyeTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ0dTVUInOlxuICAgICAgICAgICAgICAgIGdzdWJUYWJsZUVudHJ5ID0gdGFibGVFbnRyeTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ21ldGEnOlxuICAgICAgICAgICAgICAgIG1ldGFUYWJsZUVudHJ5ID0gdGFibGVFbnRyeTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHZhciBuYW1lVGFibGUgPSB1bmNvbXByZXNzVGFibGUoZGF0YSwgbmFtZVRhYmxlRW50cnkpO1xuICAgIGZvbnQudGFibGVzLm5hbWUgPSBfbmFtZS5wYXJzZShuYW1lVGFibGUuZGF0YSwgbmFtZVRhYmxlLm9mZnNldCwgbHRhZ1RhYmxlKTtcbiAgICBmb250Lm5hbWVzID0gZm9udC50YWJsZXMubmFtZTtcblxuICAgIGlmIChnbHlmVGFibGVFbnRyeSAmJiBsb2NhVGFibGVFbnRyeSkge1xuICAgICAgICB2YXIgc2hvcnRWZXJzaW9uID0gaW5kZXhUb0xvY0Zvcm1hdCA9PT0gMDtcbiAgICAgICAgdmFyIGxvY2FUYWJsZSA9IHVuY29tcHJlc3NUYWJsZShkYXRhLCBsb2NhVGFibGVFbnRyeSk7XG4gICAgICAgIHZhciBsb2NhT2Zmc2V0cyA9IGxvY2EucGFyc2UobG9jYVRhYmxlLmRhdGEsIGxvY2FUYWJsZS5vZmZzZXQsIGZvbnQubnVtR2x5cGhzLCBzaG9ydFZlcnNpb24pO1xuICAgICAgICB2YXIgZ2x5ZlRhYmxlID0gdW5jb21wcmVzc1RhYmxlKGRhdGEsIGdseWZUYWJsZUVudHJ5KTtcbiAgICAgICAgZm9udC5nbHlwaHMgPSBnbHlmLnBhcnNlKGdseWZUYWJsZS5kYXRhLCBnbHlmVGFibGUub2Zmc2V0LCBsb2NhT2Zmc2V0cywgZm9udCk7XG4gICAgfSBlbHNlIGlmIChjZmZUYWJsZUVudHJ5KSB7XG4gICAgICAgIHZhciBjZmZUYWJsZSA9IHVuY29tcHJlc3NUYWJsZShkYXRhLCBjZmZUYWJsZUVudHJ5KTtcbiAgICAgICAgY2ZmLnBhcnNlKGNmZlRhYmxlLmRhdGEsIGNmZlRhYmxlLm9mZnNldCwgZm9udCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdGb250IGRvZXNuXFwndCBjb250YWluIFRydWVUeXBlIG9yIENGRiBvdXRsaW5lcy4nKTtcbiAgICB9XG5cbiAgICB2YXIgaG10eFRhYmxlID0gdW5jb21wcmVzc1RhYmxlKGRhdGEsIGhtdHhUYWJsZUVudHJ5KTtcbiAgICBobXR4LnBhcnNlKGhtdHhUYWJsZS5kYXRhLCBobXR4VGFibGUub2Zmc2V0LCBmb250Lm51bWJlck9mSE1ldHJpY3MsIGZvbnQubnVtR2x5cGhzLCBmb250LmdseXBocyk7XG4gICAgZW5jb2RpbmcuYWRkR2x5cGhOYW1lcyhmb250KTtcblxuICAgIGlmIChrZXJuVGFibGVFbnRyeSkge1xuICAgICAgICB2YXIga2VyblRhYmxlID0gdW5jb21wcmVzc1RhYmxlKGRhdGEsIGtlcm5UYWJsZUVudHJ5KTtcbiAgICAgICAgZm9udC5rZXJuaW5nUGFpcnMgPSBrZXJuLnBhcnNlKGtlcm5UYWJsZS5kYXRhLCBrZXJuVGFibGUub2Zmc2V0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBmb250Lmtlcm5pbmdQYWlycyA9IHt9O1xuICAgIH1cblxuICAgIGlmIChncG9zVGFibGVFbnRyeSkge1xuICAgICAgICB2YXIgZ3Bvc1RhYmxlID0gdW5jb21wcmVzc1RhYmxlKGRhdGEsIGdwb3NUYWJsZUVudHJ5KTtcbiAgICAgICAgZ3Bvcy5wYXJzZShncG9zVGFibGUuZGF0YSwgZ3Bvc1RhYmxlLm9mZnNldCwgZm9udCk7XG4gICAgfVxuXG4gICAgaWYgKGdzdWJUYWJsZUVudHJ5KSB7XG4gICAgICAgIHZhciBnc3ViVGFibGUgPSB1bmNvbXByZXNzVGFibGUoZGF0YSwgZ3N1YlRhYmxlRW50cnkpO1xuICAgICAgICBmb250LnRhYmxlcy5nc3ViID0gZ3N1Yi5wYXJzZShnc3ViVGFibGUuZGF0YSwgZ3N1YlRhYmxlLm9mZnNldCk7XG4gICAgfVxuXG4gICAgaWYgKGZ2YXJUYWJsZUVudHJ5KSB7XG4gICAgICAgIHZhciBmdmFyVGFibGUgPSB1bmNvbXByZXNzVGFibGUoZGF0YSwgZnZhclRhYmxlRW50cnkpO1xuICAgICAgICBmb250LnRhYmxlcy5mdmFyID0gZnZhci5wYXJzZShmdmFyVGFibGUuZGF0YSwgZnZhclRhYmxlLm9mZnNldCwgZm9udC5uYW1lcyk7XG4gICAgfVxuXG4gICAgaWYgKG1ldGFUYWJsZUVudHJ5KSB7XG4gICAgICAgIHZhciBtZXRhVGFibGUgPSB1bmNvbXByZXNzVGFibGUoZGF0YSwgbWV0YVRhYmxlRW50cnkpO1xuICAgICAgICBmb250LnRhYmxlcy5tZXRhID0gbWV0YS5wYXJzZShtZXRhVGFibGUuZGF0YSwgbWV0YVRhYmxlLm9mZnNldCk7XG4gICAgICAgIGZvbnQubWV0YXMgPSBmb250LnRhYmxlcy5tZXRhO1xuICAgIH1cblxuICAgIHJldHVybiBmb250O1xufVxuXG4vKipcbiAqIEFzeW5jaHJvbm91c2x5IGxvYWQgdGhlIGZvbnQgZnJvbSBhIFVSTCBvciBhIGZpbGVzeXN0ZW0uIFdoZW4gZG9uZSwgY2FsbCB0aGUgY2FsbGJhY2tcbiAqIHdpdGggdHdvIGFyZ3VtZW50cyBgKGVyciwgZm9udClgLiBUaGUgYGVycmAgd2lsbCBiZSBudWxsIG9uIHN1Y2Nlc3MsXG4gKiB0aGUgYGZvbnRgIGlzIGEgRm9udCBvYmplY3QuXG4gKiBXZSB1c2UgdGhlIG5vZGUuanMgY2FsbGJhY2sgY29udmVudGlvbiBzbyB0aGF0XG4gKiBvcGVudHlwZS5qcyBjYW4gaW50ZWdyYXRlIHdpdGggZnJhbWV3b3JrcyBsaWtlIGFzeW5jLmpzLlxuICogQGFsaWFzIG9wZW50eXBlLmxvYWRcbiAqIEBwYXJhbSAge3N0cmluZ30gdXJsIC0gVGhlIFVSTCBvZiB0aGUgZm9udCB0byBsb2FkLlxuICogQHBhcmFtICB7RnVuY3Rpb259IGNhbGxiYWNrIC0gVGhlIGNhbGxiYWNrLlxuICovXG5mdW5jdGlvbiBsb2FkKHVybCwgY2FsbGJhY2spIHtcbiAgICB2YXIgaXNOb2RlID0gdHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCc7XG4gICAgdmFyIGxvYWRGbiA9IGlzTm9kZSA/IGxvYWRGcm9tRmlsZSA6IGxvYWRGcm9tVXJsO1xuICAgIGxvYWRGbih1cmwsIGZ1bmN0aW9uKGVyciwgYXJyYXlCdWZmZXIpIHtcbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKGVycik7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGZvbnQ7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBmb250ID0gcGFyc2VCdWZmZXIoYXJyYXlCdWZmZXIpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soZSwgbnVsbCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNhbGxiYWNrKG51bGwsIGZvbnQpO1xuICAgIH0pO1xufVxuXG4vKipcbiAqIFN5bmNocm9ub3VzbHkgbG9hZCB0aGUgZm9udCBmcm9tIGEgVVJMIG9yIGZpbGUuXG4gKiBXaGVuIGRvbmUsIHJldHVybnMgdGhlIGZvbnQgb2JqZWN0IG9yIHRocm93cyBhbiBlcnJvci5cbiAqIEBhbGlhcyBvcGVudHlwZS5sb2FkU3luY1xuICogQHBhcmFtICB7c3RyaW5nfSB1cmwgLSBUaGUgVVJMIG9mIHRoZSBmb250IHRvIGxvYWQuXG4gKiBAcmV0dXJuIHtvcGVudHlwZS5Gb250fVxuICovXG5mdW5jdGlvbiBsb2FkU3luYyh1cmwpIHtcbiAgICB2YXIgZnMgPSByZXF1aXJlKCdmcycpO1xuICAgIHZhciBidWZmZXIgPSBmcy5yZWFkRmlsZVN5bmModXJsKTtcbiAgICByZXR1cm4gcGFyc2VCdWZmZXIodXRpbC5ub2RlQnVmZmVyVG9BcnJheUJ1ZmZlcihidWZmZXIpKTtcbn1cblxuZXhwb3J0cy5fcGFyc2UgPSBwYXJzZTtcbmV4cG9ydHMuRm9udCA9IF9mb250LkZvbnQ7XG5leHBvcnRzLkdseXBoID0gZ2x5cGguR2x5cGg7XG5leHBvcnRzLlBhdGggPSBwYXRoLlBhdGg7XG5leHBvcnRzLkJvdW5kaW5nQm94ID0gYmJveC5Cb3VuZGluZ0JveDtcbmV4cG9ydHMucGFyc2UgPSBwYXJzZUJ1ZmZlcjtcbmV4cG9ydHMubG9hZCA9IGxvYWQ7XG5leHBvcnRzLmxvYWRTeW5jID0gbG9hZFN5bmM7XG4iLCIvLyBQYXJzaW5nIHV0aWxpdHkgZnVuY3Rpb25zXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIGNoZWNrID0gcmVxdWlyZSgnLi9jaGVjaycpO1xuXG4vLyBSZXRyaWV2ZSBhbiB1bnNpZ25lZCBieXRlIGZyb20gdGhlIERhdGFWaWV3LlxuZXhwb3J0cy5nZXRCeXRlID0gZnVuY3Rpb24gZ2V0Qnl0ZShkYXRhVmlldywgb2Zmc2V0KSB7XG4gICAgcmV0dXJuIGRhdGFWaWV3LmdldFVpbnQ4KG9mZnNldCk7XG59O1xuXG5leHBvcnRzLmdldENhcmQ4ID0gZXhwb3J0cy5nZXRCeXRlO1xuXG4vLyBSZXRyaWV2ZSBhbiB1bnNpZ25lZCAxNi1iaXQgc2hvcnQgZnJvbSB0aGUgRGF0YVZpZXcuXG4vLyBUaGUgdmFsdWUgaXMgc3RvcmVkIGluIGJpZyBlbmRpYW4uXG5mdW5jdGlvbiBnZXRVU2hvcnQoZGF0YVZpZXcsIG9mZnNldCkge1xuICAgIHJldHVybiBkYXRhVmlldy5nZXRVaW50MTYob2Zmc2V0LCBmYWxzZSk7XG59XG5cbmV4cG9ydHMuZ2V0VVNob3J0ID0gZXhwb3J0cy5nZXRDYXJkMTYgPSBnZXRVU2hvcnQ7XG5cbi8vIFJldHJpZXZlIGEgc2lnbmVkIDE2LWJpdCBzaG9ydCBmcm9tIHRoZSBEYXRhVmlldy5cbi8vIFRoZSB2YWx1ZSBpcyBzdG9yZWQgaW4gYmlnIGVuZGlhbi5cbmV4cG9ydHMuZ2V0U2hvcnQgPSBmdW5jdGlvbihkYXRhVmlldywgb2Zmc2V0KSB7XG4gICAgcmV0dXJuIGRhdGFWaWV3LmdldEludDE2KG9mZnNldCwgZmFsc2UpO1xufTtcblxuLy8gUmV0cmlldmUgYW4gdW5zaWduZWQgMzItYml0IGxvbmcgZnJvbSB0aGUgRGF0YVZpZXcuXG4vLyBUaGUgdmFsdWUgaXMgc3RvcmVkIGluIGJpZyBlbmRpYW4uXG5leHBvcnRzLmdldFVMb25nID0gZnVuY3Rpb24oZGF0YVZpZXcsIG9mZnNldCkge1xuICAgIHJldHVybiBkYXRhVmlldy5nZXRVaW50MzIob2Zmc2V0LCBmYWxzZSk7XG59O1xuXG4vLyBSZXRyaWV2ZSBhIDMyLWJpdCBzaWduZWQgZml4ZWQtcG9pbnQgbnVtYmVyICgxNi4xNikgZnJvbSB0aGUgRGF0YVZpZXcuXG4vLyBUaGUgdmFsdWUgaXMgc3RvcmVkIGluIGJpZyBlbmRpYW4uXG5leHBvcnRzLmdldEZpeGVkID0gZnVuY3Rpb24oZGF0YVZpZXcsIG9mZnNldCkge1xuICAgIHZhciBkZWNpbWFsID0gZGF0YVZpZXcuZ2V0SW50MTYob2Zmc2V0LCBmYWxzZSk7XG4gICAgdmFyIGZyYWN0aW9uID0gZGF0YVZpZXcuZ2V0VWludDE2KG9mZnNldCArIDIsIGZhbHNlKTtcbiAgICByZXR1cm4gZGVjaW1hbCArIGZyYWN0aW9uIC8gNjU1MzU7XG59O1xuXG4vLyBSZXRyaWV2ZSBhIDQtY2hhcmFjdGVyIHRhZyBmcm9tIHRoZSBEYXRhVmlldy5cbi8vIFRhZ3MgYXJlIHVzZWQgdG8gaWRlbnRpZnkgdGFibGVzLlxuZXhwb3J0cy5nZXRUYWcgPSBmdW5jdGlvbihkYXRhVmlldywgb2Zmc2V0KSB7XG4gICAgdmFyIHRhZyA9ICcnO1xuICAgIGZvciAodmFyIGkgPSBvZmZzZXQ7IGkgPCBvZmZzZXQgKyA0OyBpICs9IDEpIHtcbiAgICAgICAgdGFnICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoZGF0YVZpZXcuZ2V0SW50OChpKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRhZztcbn07XG5cbi8vIFJldHJpZXZlIGFuIG9mZnNldCBmcm9tIHRoZSBEYXRhVmlldy5cbi8vIE9mZnNldHMgYXJlIDEgdG8gNCBieXRlcyBpbiBsZW5ndGgsIGRlcGVuZGluZyBvbiB0aGUgb2ZmU2l6ZSBhcmd1bWVudC5cbmV4cG9ydHMuZ2V0T2Zmc2V0ID0gZnVuY3Rpb24oZGF0YVZpZXcsIG9mZnNldCwgb2ZmU2l6ZSkge1xuICAgIHZhciB2ID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG9mZlNpemU7IGkgKz0gMSkge1xuICAgICAgICB2IDw8PSA4O1xuICAgICAgICB2ICs9IGRhdGFWaWV3LmdldFVpbnQ4KG9mZnNldCArIGkpO1xuICAgIH1cblxuICAgIHJldHVybiB2O1xufTtcblxuLy8gUmV0cmlldmUgYSBudW1iZXIgb2YgYnl0ZXMgZnJvbSBzdGFydCBvZmZzZXQgdG8gdGhlIGVuZCBvZmZzZXQgZnJvbSB0aGUgRGF0YVZpZXcuXG5leHBvcnRzLmdldEJ5dGVzID0gZnVuY3Rpb24oZGF0YVZpZXcsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpIHtcbiAgICB2YXIgYnl0ZXMgPSBbXTtcbiAgICBmb3IgKHZhciBpID0gc3RhcnRPZmZzZXQ7IGkgPCBlbmRPZmZzZXQ7IGkgKz0gMSkge1xuICAgICAgICBieXRlcy5wdXNoKGRhdGFWaWV3LmdldFVpbnQ4KGkpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYnl0ZXM7XG59O1xuXG4vLyBDb252ZXJ0IHRoZSBsaXN0IG9mIGJ5dGVzIHRvIGEgc3RyaW5nLlxuZXhwb3J0cy5ieXRlc1RvU3RyaW5nID0gZnVuY3Rpb24oYnl0ZXMpIHtcbiAgICB2YXIgcyA9ICcnO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYnl0ZXMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgICAgcyArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGJ5dGVzW2ldKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcztcbn07XG5cbnZhciB0eXBlT2Zmc2V0cyA9IHtcbiAgICBieXRlOiAxLFxuICAgIHVTaG9ydDogMixcbiAgICBzaG9ydDogMixcbiAgICB1TG9uZzogNCxcbiAgICBmaXhlZDogNCxcbiAgICBsb25nRGF0ZVRpbWU6IDgsXG4gICAgdGFnOiA0XG59O1xuXG4vLyBBIHN0YXRlZnVsIHBhcnNlciB0aGF0IGNoYW5nZXMgdGhlIG9mZnNldCB3aGVuZXZlciBhIHZhbHVlIGlzIHJldHJpZXZlZC5cbi8vIFRoZSBkYXRhIGlzIGEgRGF0YVZpZXcuXG5mdW5jdGlvbiBQYXJzZXIoZGF0YSwgb2Zmc2V0KSB7XG4gICAgdGhpcy5kYXRhID0gZGF0YTtcbiAgICB0aGlzLm9mZnNldCA9IG9mZnNldDtcbiAgICB0aGlzLnJlbGF0aXZlT2Zmc2V0ID0gMDtcbn1cblxuUGFyc2VyLnByb3RvdHlwZS5wYXJzZUJ5dGUgPSBmdW5jdGlvbigpIHtcbiAgICB2YXIgdiA9IHRoaXMuZGF0YS5nZXRVaW50OCh0aGlzLm9mZnNldCArIHRoaXMucmVsYXRpdmVPZmZzZXQpO1xuICAgIHRoaXMucmVsYXRpdmVPZmZzZXQgKz0gMTtcbiAgICByZXR1cm4gdjtcbn07XG5cblBhcnNlci5wcm90b3R5cGUucGFyc2VDaGFyID0gZnVuY3Rpb24oKSB7XG4gICAgdmFyIHYgPSB0aGlzLmRhdGEuZ2V0SW50OCh0aGlzLm9mZnNldCArIHRoaXMucmVsYXRpdmVPZmZzZXQpO1xuICAgIHRoaXMucmVsYXRpdmVPZmZzZXQgKz0gMTtcbiAgICByZXR1cm4gdjtcbn07XG5cblBhcnNlci5wcm90b3R5cGUucGFyc2VDYXJkOCA9IFBhcnNlci5wcm90b3R5cGUucGFyc2VCeXRlO1xuXG5QYXJzZXIucHJvdG90eXBlLnBhcnNlVVNob3J0ID0gZnVuY3Rpb24oKSB7XG4gICAgdmFyIHYgPSB0aGlzLmRhdGEuZ2V0VWludDE2KHRoaXMub2Zmc2V0ICsgdGhpcy5yZWxhdGl2ZU9mZnNldCk7XG4gICAgdGhpcy5yZWxhdGl2ZU9mZnNldCArPSAyO1xuICAgIHJldHVybiB2O1xufTtcblxuUGFyc2VyLnByb3RvdHlwZS5wYXJzZUNhcmQxNiA9IFBhcnNlci5wcm90b3R5cGUucGFyc2VVU2hvcnQ7XG5QYXJzZXIucHJvdG90eXBlLnBhcnNlU0lEID0gUGFyc2VyLnByb3RvdHlwZS5wYXJzZVVTaG9ydDtcblBhcnNlci5wcm90b3R5cGUucGFyc2VPZmZzZXQxNiA9IFBhcnNlci5wcm90b3R5cGUucGFyc2VVU2hvcnQ7XG5cblBhcnNlci5wcm90b3R5cGUucGFyc2VTaG9ydCA9IGZ1bmN0aW9uKCkge1xuICAgIHZhciB2ID0gdGhpcy5kYXRhLmdldEludDE2KHRoaXMub2Zmc2V0ICsgdGhpcy5yZWxhdGl2ZU9mZnNldCk7XG4gICAgdGhpcy5yZWxhdGl2ZU9mZnNldCArPSAyO1xuICAgIHJldHVybiB2O1xufTtcblxuUGFyc2VyLnByb3RvdHlwZS5wYXJzZUYyRG90MTQgPSBmdW5jdGlvbigpIHtcbiAgICB2YXIgdiA9IHRoaXMuZGF0YS5nZXRJbnQxNih0aGlzLm9mZnNldCArIHRoaXMucmVsYXRpdmVPZmZzZXQpIC8gMTYzODQ7XG4gICAgdGhpcy5yZWxhdGl2ZU9mZnNldCArPSAyO1xuICAgIHJldHVybiB2O1xufTtcblxuUGFyc2VyLnByb3RvdHlwZS5wYXJzZVVMb25nID0gZnVuY3Rpb24oKSB7XG4gICAgdmFyIHYgPSBleHBvcnRzLmdldFVMb25nKHRoaXMuZGF0YSwgdGhpcy5vZmZzZXQgKyB0aGlzLnJlbGF0aXZlT2Zmc2V0KTtcbiAgICB0aGlzLnJlbGF0aXZlT2Zmc2V0ICs9IDQ7XG4gICAgcmV0dXJuIHY7XG59O1xuXG5QYXJzZXIucHJvdG90eXBlLnBhcnNlRml4ZWQgPSBmdW5jdGlvbigpIHtcbiAgICB2YXIgdiA9IGV4cG9ydHMuZ2V0Rml4ZWQodGhpcy5kYXRhLCB0aGlzLm9mZnNldCArIHRoaXMucmVsYXRpdmVPZmZzZXQpO1xuICAgIHRoaXMucmVsYXRpdmVPZmZzZXQgKz0gNDtcbiAgICByZXR1cm4gdjtcbn07XG5cblBhcnNlci5wcm90b3R5cGUucGFyc2VTdHJpbmcgPSBmdW5jdGlvbihsZW5ndGgpIHtcbiAgICB2YXIgZGF0YVZpZXcgPSB0aGlzLmRhdGE7XG4gICAgdmFyIG9mZnNldCA9IHRoaXMub2Zmc2V0ICsgdGhpcy5yZWxhdGl2ZU9mZnNldDtcbiAgICB2YXIgc3RyaW5nID0gJyc7XG4gICAgdGhpcy5yZWxhdGl2ZU9mZnNldCArPSBsZW5ndGg7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgICBzdHJpbmcgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShkYXRhVmlldy5nZXRVaW50OChvZmZzZXQgKyBpKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0cmluZztcbn07XG5cblBhcnNlci5wcm90b3R5cGUucGFyc2VUYWcgPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5wYXJzZVN0cmluZyg0KTtcbn07XG5cbi8vIExPTkdEQVRFVElNRSBpcyBhIDY0LWJpdCBpbnRlZ2VyLlxuLy8gSmF2YVNjcmlwdCBhbmQgdW5peCB0aW1lc3RhbXBzIHRyYWRpdGlvbmFsbHkgdXNlIDMyIGJpdHMsIHNvIHdlXG4vLyBvbmx5IHRha2UgdGhlIGxhc3QgMzIgYml0cy5cbi8vICsgU2luY2UgdW50aWwgMjAzOCB0aG9zZSBiaXRzIHdpbGwgYmUgZmlsbGVkIGJ5IHplcm9zIHdlIGNhbiBpZ25vcmUgdGhlbS5cblBhcnNlci5wcm90b3R5cGUucGFyc2VMb25nRGF0ZVRpbWUgPSBmdW5jdGlvbigpIHtcbiAgICB2YXIgdiA9IGV4cG9ydHMuZ2V0VUxvbmcodGhpcy5kYXRhLCB0aGlzLm9mZnNldCArIHRoaXMucmVsYXRpdmVPZmZzZXQgKyA0KTtcbiAgICAvLyBTdWJ0cmFjdCBzZWNvbmRzIGJldHdlZW4gMDEvMDEvMTkwNCBhbmQgMDEvMDEvMTk3MFxuICAgIC8vIHRvIGNvbnZlcnQgQXBwbGUgTWFjIHRpbXN0YW1wIHRvIFN0YW5kYXJkIFVuaXggdGltZXN0YW1wXG4gICAgdiAtPSAyMDgyODQ0ODAwO1xuICAgIHRoaXMucmVsYXRpdmVPZmZzZXQgKz0gODtcbiAgICByZXR1cm4gdjtcbn07XG5cblBhcnNlci5wcm90b3R5cGUucGFyc2VWZXJzaW9uID0gZnVuY3Rpb24oKSB7XG4gICAgdmFyIG1ham9yID0gZ2V0VVNob3J0KHRoaXMuZGF0YSwgdGhpcy5vZmZzZXQgKyB0aGlzLnJlbGF0aXZlT2Zmc2V0KTtcblxuICAgIC8vIEhvdyB0byBpbnRlcnByZXQgdGhlIG1pbm9yIHZlcnNpb24gaXMgdmVyeSB2YWd1ZSBpbiB0aGUgc3BlYy4gMHg1MDAwIGlzIDUsIDB4MTAwMCBpcyAxXG4gICAgLy8gVGhpcyByZXR1cm5zIHRoZSBjb3JyZWN0IG51bWJlciBpZiBtaW5vciA9IDB4TjAwMCB3aGVyZSBOIGlzIDAtOVxuICAgIHZhciBtaW5vciA9IGdldFVTaG9ydCh0aGlzLmRhdGEsIHRoaXMub2Zmc2V0ICsgdGhpcy5yZWxhdGl2ZU9mZnNldCArIDIpO1xuICAgIHRoaXMucmVsYXRpdmVPZmZzZXQgKz0gNDtcbiAgICByZXR1cm4gbWFqb3IgKyBtaW5vciAvIDB4MTAwMCAvIDEwO1xufTtcblxuUGFyc2VyLnByb3RvdHlwZS5za2lwID0gZnVuY3Rpb24odHlwZSwgYW1vdW50KSB7XG4gICAgaWYgKGFtb3VudCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGFtb3VudCA9IDE7XG4gICAgfVxuXG4gICAgdGhpcy5yZWxhdGl2ZU9mZnNldCArPSB0eXBlT2Zmc2V0c1t0eXBlXSAqIGFtb3VudDtcbn07XG5cbi8vLy8vIFBhcnNpbmcgbGlzdHMgYW5kIHJlY29yZHMgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4vLyBQYXJzZSBhIGxpc3Qgb2YgMTYgYml0IGludGVnZXJzLiBUaGUgbGVuZ3RoIG9mIHRoZSBsaXN0IGNhbiBiZSByZWFkIG9uIHRoZSBzdHJlYW1cbi8vIG9yIHByb3ZpZGVkIGFzIGFuIGFyZ3VtZW50LlxuUGFyc2VyLnByb3RvdHlwZS5wYXJzZU9mZnNldDE2TGlzdCA9XG5QYXJzZXIucHJvdG90eXBlLnBhcnNlVVNob3J0TGlzdCA9IGZ1bmN0aW9uKGNvdW50KSB7XG4gICAgaWYgKGNvdW50ID09PSB1bmRlZmluZWQpIHsgY291bnQgPSB0aGlzLnBhcnNlVVNob3J0KCk7IH1cbiAgICB2YXIgb2Zmc2V0cyA9IG5ldyBBcnJheShjb3VudCk7XG4gICAgdmFyIGRhdGFWaWV3ID0gdGhpcy5kYXRhO1xuICAgIHZhciBvZmZzZXQgPSB0aGlzLm9mZnNldCArIHRoaXMucmVsYXRpdmVPZmZzZXQ7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7XG4gICAgICAgIG9mZnNldHNbaV0gPSBkYXRhVmlldy5nZXRVaW50MTYob2Zmc2V0KTtcbiAgICAgICAgb2Zmc2V0ICs9IDI7XG4gICAgfVxuXG4gICAgdGhpcy5yZWxhdGl2ZU9mZnNldCArPSBjb3VudCAqIDI7XG4gICAgcmV0dXJuIG9mZnNldHM7XG59O1xuXG4vKipcbiAqIFBhcnNlIGEgbGlzdCBvZiBpdGVtcy5cbiAqIFJlY29yZCBjb3VudCBpcyBvcHRpb25hbCwgaWYgb21pdHRlZCBpdCBpcyByZWFkIGZyb20gdGhlIHN0cmVhbS5cbiAqIGl0ZW1DYWxsYmFjayBpcyBvbmUgb2YgdGhlIFBhcnNlciBtZXRob2RzLlxuICovXG5QYXJzZXIucHJvdG90eXBlLnBhcnNlTGlzdCA9IGZ1bmN0aW9uKGNvdW50LCBpdGVtQ2FsbGJhY2spIHtcbiAgICBpZiAoIWl0ZW1DYWxsYmFjaykge1xuICAgICAgICBpdGVtQ2FsbGJhY2sgPSBjb3VudDtcbiAgICAgICAgY291bnQgPSB0aGlzLnBhcnNlVVNob3J0KCk7XG4gICAgfVxuICAgIHZhciBsaXN0ID0gbmV3IEFycmF5KGNvdW50KTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvdW50OyBpKyspIHtcbiAgICAgICAgbGlzdFtpXSA9IGl0ZW1DYWxsYmFjay5jYWxsKHRoaXMpO1xuICAgIH1cbiAgICByZXR1cm4gbGlzdDtcbn07XG5cbi8qKlxuICogUGFyc2UgYSBsaXN0IG9mIHJlY29yZHMuXG4gKiBSZWNvcmQgY291bnQgaXMgb3B0aW9uYWwsIGlmIG9taXR0ZWQgaXQgaXMgcmVhZCBmcm9tIHRoZSBzdHJlYW0uXG4gKiBFeGFtcGxlIG9mIHJlY29yZERlc2NyaXB0aW9uOiB7IHNlcXVlbmNlSW5kZXg6IFBhcnNlci51U2hvcnQsIGxvb2t1cExpc3RJbmRleDogUGFyc2VyLnVTaG9ydCB9XG4gKi9cblBhcnNlci5wcm90b3R5cGUucGFyc2VSZWNvcmRMaXN0ID0gZnVuY3Rpb24oY291bnQsIHJlY29yZERlc2NyaXB0aW9uKSB7XG4gICAgLy8gSWYgdGhlIGNvdW50IGFyZ3VtZW50IGlzIGFic2VudCwgcmVhZCBpdCBpbiB0aGUgc3RyZWFtLlxuICAgIGlmICghcmVjb3JkRGVzY3JpcHRpb24pIHtcbiAgICAgICAgcmVjb3JkRGVzY3JpcHRpb24gPSBjb3VudDtcbiAgICAgICAgY291bnQgPSB0aGlzLnBhcnNlVVNob3J0KCk7XG4gICAgfVxuICAgIHZhciByZWNvcmRzID0gbmV3IEFycmF5KGNvdW50KTtcbiAgICB2YXIgZmllbGRzID0gT2JqZWN0LmtleXMocmVjb3JkRGVzY3JpcHRpb24pO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY291bnQ7IGkrKykge1xuICAgICAgICB2YXIgcmVjID0ge307XG4gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgZmllbGRzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgICB2YXIgZmllbGROYW1lID0gZmllbGRzW2pdO1xuICAgICAgICAgICAgdmFyIGZpZWxkVHlwZSA9IHJlY29yZERlc2NyaXB0aW9uW2ZpZWxkTmFtZV07XG4gICAgICAgICAgICByZWNbZmllbGROYW1lXSA9IGZpZWxkVHlwZS5jYWxsKHRoaXMpO1xuICAgICAgICB9XG4gICAgICAgIHJlY29yZHNbaV0gPSByZWM7XG4gICAgfVxuICAgIHJldHVybiByZWNvcmRzO1xufTtcblxuLy8gUGFyc2UgYSBkYXRhIHN0cnVjdHVyZSBpbnRvIGFuIG9iamVjdFxuLy8gRXhhbXBsZSBvZiBkZXNjcmlwdGlvbjogeyBzZXF1ZW5jZUluZGV4OiBQYXJzZXIudVNob3J0LCBsb29rdXBMaXN0SW5kZXg6IFBhcnNlci51U2hvcnQgfVxuUGFyc2VyLnByb3RvdHlwZS5wYXJzZVN0cnVjdCA9IGZ1bmN0aW9uKGRlc2NyaXB0aW9uKSB7XG4gICAgaWYgKHR5cGVvZiBkZXNjcmlwdGlvbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm4gZGVzY3JpcHRpb24uY2FsbCh0aGlzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgZmllbGRzID0gT2JqZWN0LmtleXMoZGVzY3JpcHRpb24pO1xuICAgICAgICB2YXIgc3RydWN0ID0ge307XG4gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgZmllbGRzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgICB2YXIgZmllbGROYW1lID0gZmllbGRzW2pdO1xuICAgICAgICAgICAgdmFyIGZpZWxkVHlwZSA9IGRlc2NyaXB0aW9uW2ZpZWxkTmFtZV07XG4gICAgICAgICAgICBzdHJ1Y3RbZmllbGROYW1lXSA9IGZpZWxkVHlwZS5jYWxsKHRoaXMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdHJ1Y3Q7XG4gICAgfVxufTtcblxuUGFyc2VyLnByb3RvdHlwZS5wYXJzZVBvaW50ZXIgPSBmdW5jdGlvbihkZXNjcmlwdGlvbikge1xuICAgIHZhciBzdHJ1Y3RPZmZzZXQgPSB0aGlzLnBhcnNlT2Zmc2V0MTYoKTtcbiAgICBpZiAoc3RydWN0T2Zmc2V0ID4gMCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAvLyBOVUxMIG9mZnNldCA9PiByZXR1cm4gaW5kZWZpbmVkXG4gICAgICAgIHJldHVybiBuZXcgUGFyc2VyKHRoaXMuZGF0YSwgdGhpcy5vZmZzZXQgKyBzdHJ1Y3RPZmZzZXQpLnBhcnNlU3RydWN0KGRlc2NyaXB0aW9uKTtcbiAgICB9XG59O1xuXG4vKipcbiAqIFBhcnNlIGEgbGlzdCBvZiBvZmZzZXRzIHRvIGxpc3RzIG9mIDE2LWJpdCBpbnRlZ2VycyxcbiAqIG9yIGEgbGlzdCBvZiBvZmZzZXRzIHRvIGxpc3RzIG9mIG9mZnNldHMgdG8gYW55IGtpbmQgb2YgaXRlbXMuXG4gKiBJZiBpdGVtQ2FsbGJhY2sgaXMgbm90IHByb3ZpZGVkLCBhIGxpc3Qgb2YgbGlzdCBvZiBVU2hvcnQgaXMgYXNzdW1lZC5cbiAqIElmIHByb3ZpZGVkLCBpdGVtQ2FsbGJhY2sgaXMgY2FsbGVkIG9uIGVhY2ggaXRlbSBhbmQgbXVzdCBwYXJzZSB0aGUgaXRlbS5cbiAqIFNlZSBleGFtcGxlcyBpbiB0YWJsZXMvZ3N1Yi5qc1xuICovXG5QYXJzZXIucHJvdG90eXBlLnBhcnNlTGlzdE9mTGlzdHMgPSBmdW5jdGlvbihpdGVtQ2FsbGJhY2spIHtcbiAgICB2YXIgb2Zmc2V0cyA9IHRoaXMucGFyc2VPZmZzZXQxNkxpc3QoKTtcbiAgICB2YXIgY291bnQgPSBvZmZzZXRzLmxlbmd0aDtcbiAgICB2YXIgcmVsYXRpdmVPZmZzZXQgPSB0aGlzLnJlbGF0aXZlT2Zmc2V0O1xuICAgIHZhciBsaXN0ID0gbmV3IEFycmF5KGNvdW50KTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvdW50OyBpKyspIHtcbiAgICAgICAgdmFyIHN0YXJ0ID0gb2Zmc2V0c1tpXTtcbiAgICAgICAgaWYgKHN0YXJ0ID09PSAwKSB7ICAgICAgICAgICAgICAgICAgLy8gTlVMTCBvZmZzZXRcbiAgICAgICAgICAgIGxpc3RbaV0gPSB1bmRlZmluZWQ7ICAgICAgICAgICAgLy8gQWRkIGkgYXMgb3duZWQgcHJvcGVydHkgdG8gbGlzdC4gQ29udmVuaWVudCB3aXRoIGFzc2VydC5cbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucmVsYXRpdmVPZmZzZXQgPSBzdGFydDtcbiAgICAgICAgaWYgKGl0ZW1DYWxsYmFjaykge1xuICAgICAgICAgICAgdmFyIHN1Yk9mZnNldHMgPSB0aGlzLnBhcnNlT2Zmc2V0MTZMaXN0KCk7XG4gICAgICAgICAgICB2YXIgc3ViTGlzdCA9IG5ldyBBcnJheShzdWJPZmZzZXRzLmxlbmd0aCk7XG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHN1Yk9mZnNldHMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbGF0aXZlT2Zmc2V0ID0gc3RhcnQgKyBzdWJPZmZzZXRzW2pdO1xuICAgICAgICAgICAgICAgIHN1Ykxpc3Rbal0gPSBpdGVtQ2FsbGJhY2suY2FsbCh0aGlzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxpc3RbaV0gPSBzdWJMaXN0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbGlzdFtpXSA9IHRoaXMucGFyc2VVU2hvcnRMaXN0KCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5yZWxhdGl2ZU9mZnNldCA9IHJlbGF0aXZlT2Zmc2V0O1xuICAgIHJldHVybiBsaXN0O1xufTtcblxuLy8vLy8gQ29tcGxleCB0YWJsZXMgcGFyc2luZyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbi8vIFBhcnNlIGEgY292ZXJhZ2UgdGFibGUgaW4gYSBHU1VCLCBHUE9TIG9yIEdERUYgdGFibGUuXG4vLyBodHRwczovL3d3dy5taWNyb3NvZnQuY29tL3R5cG9ncmFwaHkvT1RTUEVDL2NoYXB0ZXIyLmh0bVxuLy8gcGFyc2VyLm9mZnNldCBtdXN0IHBvaW50IHRvIHRoZSBzdGFydCBvZiB0aGUgdGFibGUgY29udGFpbmluZyB0aGUgY292ZXJhZ2UuXG5QYXJzZXIucHJvdG90eXBlLnBhcnNlQ292ZXJhZ2UgPSBmdW5jdGlvbigpIHtcbiAgICB2YXIgc3RhcnRPZmZzZXQgPSB0aGlzLm9mZnNldCArIHRoaXMucmVsYXRpdmVPZmZzZXQ7XG4gICAgdmFyIGZvcm1hdCA9IHRoaXMucGFyc2VVU2hvcnQoKTtcbiAgICB2YXIgY291bnQgPSB0aGlzLnBhcnNlVVNob3J0KCk7XG4gICAgaWYgKGZvcm1hdCA9PT0gMSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZm9ybWF0OiAxLFxuICAgICAgICAgICAgZ2x5cGhzOiB0aGlzLnBhcnNlVVNob3J0TGlzdChjb3VudClcbiAgICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKGZvcm1hdCA9PT0gMikge1xuICAgICAgICB2YXIgcmFuZ2VzID0gbmV3IEFycmF5KGNvdW50KTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7XG4gICAgICAgICAgICByYW5nZXNbaV0gPSB7XG4gICAgICAgICAgICAgICAgc3RhcnQ6IHRoaXMucGFyc2VVU2hvcnQoKSxcbiAgICAgICAgICAgICAgICBlbmQ6IHRoaXMucGFyc2VVU2hvcnQoKSxcbiAgICAgICAgICAgICAgICBpbmRleDogdGhpcy5wYXJzZVVTaG9ydCgpXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBmb3JtYXQ6IDIsXG4gICAgICAgICAgICByYW5nZXM6IHJhbmdlc1xuICAgICAgICB9O1xuICAgIH1cbiAgICBjaGVjay5hc3NlcnQoZmFsc2UsICcweCcgKyBzdGFydE9mZnNldC50b1N0cmluZygxNikgKyAnOiBDb3ZlcmFnZSBmb3JtYXQgbXVzdCBiZSAxIG9yIDIuJyk7XG59O1xuXG4vLyBQYXJzZSBhIENsYXNzIERlZmluaXRpb24gVGFibGUgaW4gYSBHU1VCLCBHUE9TIG9yIEdERUYgdGFibGUuXG4vLyBodHRwczovL3d3dy5taWNyb3NvZnQuY29tL3R5cG9ncmFwaHkvT1RTUEVDL2NoYXB0ZXIyLmh0bVxuUGFyc2VyLnByb3RvdHlwZS5wYXJzZUNsYXNzRGVmID0gZnVuY3Rpb24oKSB7XG4gICAgdmFyIHN0YXJ0T2Zmc2V0ID0gdGhpcy5vZmZzZXQgKyB0aGlzLnJlbGF0aXZlT2Zmc2V0O1xuICAgIHZhciBmb3JtYXQgPSB0aGlzLnBhcnNlVVNob3J0KCk7XG4gICAgaWYgKGZvcm1hdCA9PT0gMSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZm9ybWF0OiAxLFxuICAgICAgICAgICAgc3RhcnRHbHlwaDogdGhpcy5wYXJzZVVTaG9ydCgpLFxuICAgICAgICAgICAgY2xhc3NlczogdGhpcy5wYXJzZVVTaG9ydExpc3QoKVxuICAgICAgICB9O1xuICAgIH0gZWxzZSBpZiAoZm9ybWF0ID09PSAyKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBmb3JtYXQ6IDIsXG4gICAgICAgICAgICByYW5nZXM6IHRoaXMucGFyc2VSZWNvcmRMaXN0KHtcbiAgICAgICAgICAgICAgICBzdGFydDogUGFyc2VyLnVTaG9ydCxcbiAgICAgICAgICAgICAgICBlbmQ6IFBhcnNlci51U2hvcnQsXG4gICAgICAgICAgICAgICAgY2xhc3NJZDogUGFyc2VyLnVTaG9ydFxuICAgICAgICAgICAgfSlcbiAgICAgICAgfTtcbiAgICB9XG4gICAgY2hlY2suYXNzZXJ0KGZhbHNlLCAnMHgnICsgc3RhcnRPZmZzZXQudG9TdHJpbmcoMTYpICsgJzogQ2xhc3NEZWYgZm9ybWF0IG11c3QgYmUgMSBvciAyLicpO1xufTtcblxuLy8vLy8gU3RhdGljIG1ldGhvZHMgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFRoZXNlIGNvbnZlbmllbmNlIG1ldGhvZHMgY2FuIGJlIHVzZWQgYXMgY2FsbGJhY2tzIGFuZCBzaG91bGQgYmUgY2FsbGVkIHdpdGggXCJ0aGlzXCIgY29udGV4dCBzZXQgdG8gYSBQYXJzZXIgaW5zdGFuY2UuXG5cblBhcnNlci5saXN0ID0gZnVuY3Rpb24oY291bnQsIGl0ZW1DYWxsYmFjaykge1xuICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VMaXN0KGNvdW50LCBpdGVtQ2FsbGJhY2spO1xuICAgIH07XG59O1xuXG5QYXJzZXIucmVjb3JkTGlzdCA9IGZ1bmN0aW9uKGNvdW50LCByZWNvcmREZXNjcmlwdGlvbikge1xuICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VSZWNvcmRMaXN0KGNvdW50LCByZWNvcmREZXNjcmlwdGlvbik7XG4gICAgfTtcbn07XG5cblBhcnNlci5wb2ludGVyID0gZnVuY3Rpb24oZGVzY3JpcHRpb24pIHtcbiAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBhcnNlUG9pbnRlcihkZXNjcmlwdGlvbik7XG4gICAgfTtcbn07XG5cblBhcnNlci50YWcgPSBQYXJzZXIucHJvdG90eXBlLnBhcnNlVGFnO1xuUGFyc2VyLmJ5dGUgPSBQYXJzZXIucHJvdG90eXBlLnBhcnNlQnl0ZTtcblBhcnNlci51U2hvcnQgPSBQYXJzZXIub2Zmc2V0MTYgPSBQYXJzZXIucHJvdG90eXBlLnBhcnNlVVNob3J0O1xuUGFyc2VyLnVTaG9ydExpc3QgPSBQYXJzZXIucHJvdG90eXBlLnBhcnNlVVNob3J0TGlzdDtcblBhcnNlci5zdHJ1Y3QgPSBQYXJzZXIucHJvdG90eXBlLnBhcnNlU3RydWN0O1xuUGFyc2VyLmNvdmVyYWdlID0gUGFyc2VyLnByb3RvdHlwZS5wYXJzZUNvdmVyYWdlO1xuUGFyc2VyLmNsYXNzRGVmID0gUGFyc2VyLnByb3RvdHlwZS5wYXJzZUNsYXNzRGVmO1xuXG4vLy8vLyBTY3JpcHQsIEZlYXR1cmUsIExvb2t1cCBsaXN0cyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gaHR0cHM6Ly93d3cubWljcm9zb2Z0LmNvbS90eXBvZ3JhcGh5L09UU1BFQy9jaGFwdGVyMi5odG1cblxudmFyIGxhbmdTeXNUYWJsZSA9IHtcbiAgICByZXNlcnZlZDogUGFyc2VyLnVTaG9ydCxcbiAgICByZXFGZWF0dXJlSW5kZXg6IFBhcnNlci51U2hvcnQsXG4gICAgZmVhdHVyZUluZGV4ZXM6IFBhcnNlci51U2hvcnRMaXN0XG59O1xuXG5QYXJzZXIucHJvdG90eXBlLnBhcnNlU2NyaXB0TGlzdCA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnBhcnNlUG9pbnRlcihQYXJzZXIucmVjb3JkTGlzdCh7XG4gICAgICAgIHRhZzogUGFyc2VyLnRhZyxcbiAgICAgICAgc2NyaXB0OiBQYXJzZXIucG9pbnRlcih7XG4gICAgICAgICAgICBkZWZhdWx0TGFuZ1N5czogUGFyc2VyLnBvaW50ZXIobGFuZ1N5c1RhYmxlKSxcbiAgICAgICAgICAgIGxhbmdTeXNSZWNvcmRzOiBQYXJzZXIucmVjb3JkTGlzdCh7XG4gICAgICAgICAgICAgICAgdGFnOiBQYXJzZXIudGFnLFxuICAgICAgICAgICAgICAgIGxhbmdTeXM6IFBhcnNlci5wb2ludGVyKGxhbmdTeXNUYWJsZSlcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH0pXG4gICAgfSkpO1xufTtcblxuUGFyc2VyLnByb3RvdHlwZS5wYXJzZUZlYXR1cmVMaXN0ID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMucGFyc2VQb2ludGVyKFBhcnNlci5yZWNvcmRMaXN0KHtcbiAgICAgICAgdGFnOiBQYXJzZXIudGFnLFxuICAgICAgICBmZWF0dXJlOiBQYXJzZXIucG9pbnRlcih7XG4gICAgICAgICAgICBmZWF0dXJlUGFyYW1zOiBQYXJzZXIub2Zmc2V0MTYsXG4gICAgICAgICAgICBsb29rdXBMaXN0SW5kZXhlczogUGFyc2VyLnVTaG9ydExpc3RcbiAgICAgICAgfSlcbiAgICB9KSk7XG59O1xuXG5QYXJzZXIucHJvdG90eXBlLnBhcnNlTG9va3VwTGlzdCA9IGZ1bmN0aW9uKGxvb2t1cFRhYmxlUGFyc2Vycykge1xuICAgIHJldHVybiB0aGlzLnBhcnNlUG9pbnRlcihQYXJzZXIubGlzdChQYXJzZXIucG9pbnRlcihmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIGxvb2t1cFR5cGUgPSB0aGlzLnBhcnNlVVNob3J0KCk7XG4gICAgICAgIGNoZWNrLmFyZ3VtZW50KDEgPD0gbG9va3VwVHlwZSAmJiBsb29rdXBUeXBlIDw9IDgsICdHU1VCIGxvb2t1cCB0eXBlICcgKyBsb29rdXBUeXBlICsgJyB1bmtub3duLicpO1xuICAgICAgICB2YXIgbG9va3VwRmxhZyA9IHRoaXMucGFyc2VVU2hvcnQoKTtcbiAgICAgICAgdmFyIHVzZU1hcmtGaWx0ZXJpbmdTZXQgPSBsb29rdXBGbGFnICYgMHgxMDtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGxvb2t1cFR5cGU6IGxvb2t1cFR5cGUsXG4gICAgICAgICAgICBsb29rdXBGbGFnOiBsb29rdXBGbGFnLFxuICAgICAgICAgICAgc3VidGFibGVzOiB0aGlzLnBhcnNlTGlzdChQYXJzZXIucG9pbnRlcihsb29rdXBUYWJsZVBhcnNlcnNbbG9va3VwVHlwZV0pKSxcbiAgICAgICAgICAgIG1hcmtGaWx0ZXJpbmdTZXQ6IHVzZU1hcmtGaWx0ZXJpbmdTZXQgPyB0aGlzLnBhcnNlVVNob3J0KCkgOiB1bmRlZmluZWRcbiAgICAgICAgfTtcbiAgICB9KSkpO1xufTtcblxuZXhwb3J0cy5QYXJzZXIgPSBQYXJzZXI7XG4iLCIvLyBHZW9tZXRyaWMgb2JqZWN0c1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBiYm94ID0gcmVxdWlyZSgnLi9iYm94Jyk7XG5cbi8qKlxuICogQSBiw6l6aWVyIHBhdGggY29udGFpbmluZyBhIHNldCBvZiBwYXRoIGNvbW1hbmRzIHNpbWlsYXIgdG8gYSBTVkcgcGF0aC5cbiAqIFBhdGhzIGNhbiBiZSBkcmF3biBvbiBhIGNvbnRleHQgdXNpbmcgYGRyYXdgLlxuICogQGV4cG9ydHMgb3BlbnR5cGUuUGF0aFxuICogQGNsYXNzXG4gKiBAY29uc3RydWN0b3JcbiAqL1xuZnVuY3Rpb24gUGF0aCgpIHtcbiAgICB0aGlzLmNvbW1hbmRzID0gW107XG4gICAgdGhpcy5maWxsID0gJ2JsYWNrJztcbiAgICB0aGlzLnN0cm9rZSA9IG51bGw7XG4gICAgdGhpcy5zdHJva2VXaWR0aCA9IDE7XG59XG5cbi8qKlxuICogQHBhcmFtICB7bnVtYmVyfSB4XG4gKiBAcGFyYW0gIHtudW1iZXJ9IHlcbiAqL1xuUGF0aC5wcm90b3R5cGUubW92ZVRvID0gZnVuY3Rpb24oeCwgeSkge1xuICAgIHRoaXMuY29tbWFuZHMucHVzaCh7XG4gICAgICAgIHR5cGU6ICdNJyxcbiAgICAgICAgeDogeCxcbiAgICAgICAgeTogeVxuICAgIH0pO1xufTtcblxuLyoqXG4gKiBAcGFyYW0gIHtudW1iZXJ9IHhcbiAqIEBwYXJhbSAge251bWJlcn0geVxuICovXG5QYXRoLnByb3RvdHlwZS5saW5lVG8gPSBmdW5jdGlvbih4LCB5KSB7XG4gICAgdGhpcy5jb21tYW5kcy5wdXNoKHtcbiAgICAgICAgdHlwZTogJ0wnLFxuICAgICAgICB4OiB4LFxuICAgICAgICB5OiB5XG4gICAgfSk7XG59O1xuXG4vKipcbiAqIERyYXdzIGN1YmljIGN1cnZlXG4gKiBAZnVuY3Rpb25cbiAqIGN1cnZlVG9cbiAqIEBtZW1iZXJvZiBvcGVudHlwZS5QYXRoLnByb3RvdHlwZVxuICogQHBhcmFtICB7bnVtYmVyfSB4MSAtIHggb2YgY29udHJvbCAxXG4gKiBAcGFyYW0gIHtudW1iZXJ9IHkxIC0geSBvZiBjb250cm9sIDFcbiAqIEBwYXJhbSAge251bWJlcn0geDIgLSB4IG9mIGNvbnRyb2wgMlxuICogQHBhcmFtICB7bnVtYmVyfSB5MiAtIHkgb2YgY29udHJvbCAyXG4gKiBAcGFyYW0gIHtudW1iZXJ9IHggLSB4IG9mIHBhdGggcG9pbnRcbiAqIEBwYXJhbSAge251bWJlcn0geSAtIHkgb2YgcGF0aCBwb2ludFxuICovXG5cbi8qKlxuICogRHJhd3MgY3ViaWMgY3VydmVcbiAqIEBmdW5jdGlvblxuICogYmV6aWVyQ3VydmVUb1xuICogQG1lbWJlcm9mIG9wZW50eXBlLlBhdGgucHJvdG90eXBlXG4gKiBAcGFyYW0gIHtudW1iZXJ9IHgxIC0geCBvZiBjb250cm9sIDFcbiAqIEBwYXJhbSAge251bWJlcn0geTEgLSB5IG9mIGNvbnRyb2wgMVxuICogQHBhcmFtICB7bnVtYmVyfSB4MiAtIHggb2YgY29udHJvbCAyXG4gKiBAcGFyYW0gIHtudW1iZXJ9IHkyIC0geSBvZiBjb250cm9sIDJcbiAqIEBwYXJhbSAge251bWJlcn0geCAtIHggb2YgcGF0aCBwb2ludFxuICogQHBhcmFtICB7bnVtYmVyfSB5IC0geSBvZiBwYXRoIHBvaW50XG4gKiBAc2VlIGN1cnZlVG9cbiAqL1xuUGF0aC5wcm90b3R5cGUuY3VydmVUbyA9IFBhdGgucHJvdG90eXBlLmJlemllckN1cnZlVG8gPSBmdW5jdGlvbih4MSwgeTEsIHgyLCB5MiwgeCwgeSkge1xuICAgIHRoaXMuY29tbWFuZHMucHVzaCh7XG4gICAgICAgIHR5cGU6ICdDJyxcbiAgICAgICAgeDE6IHgxLFxuICAgICAgICB5MTogeTEsXG4gICAgICAgIHgyOiB4MixcbiAgICAgICAgeTI6IHkyLFxuICAgICAgICB4OiB4LFxuICAgICAgICB5OiB5XG4gICAgfSk7XG59O1xuXG4vKipcbiAqIERyYXdzIHF1YWRyYXRpYyBjdXJ2ZVxuICogQGZ1bmN0aW9uXG4gKiBxdWFkcmF0aWNDdXJ2ZVRvXG4gKiBAbWVtYmVyb2Ygb3BlbnR5cGUuUGF0aC5wcm90b3R5cGVcbiAqIEBwYXJhbSAge251bWJlcn0geDEgLSB4IG9mIGNvbnRyb2xcbiAqIEBwYXJhbSAge251bWJlcn0geTEgLSB5IG9mIGNvbnRyb2xcbiAqIEBwYXJhbSAge251bWJlcn0geCAtIHggb2YgcGF0aCBwb2ludFxuICogQHBhcmFtICB7bnVtYmVyfSB5IC0geSBvZiBwYXRoIHBvaW50XG4gKi9cblxuLyoqXG4gKiBEcmF3cyBxdWFkcmF0aWMgY3VydmVcbiAqIEBmdW5jdGlvblxuICogcXVhZFRvXG4gKiBAbWVtYmVyb2Ygb3BlbnR5cGUuUGF0aC5wcm90b3R5cGVcbiAqIEBwYXJhbSAge251bWJlcn0geDEgLSB4IG9mIGNvbnRyb2xcbiAqIEBwYXJhbSAge251bWJlcn0geTEgLSB5IG9mIGNvbnRyb2xcbiAqIEBwYXJhbSAge251bWJlcn0geCAtIHggb2YgcGF0aCBwb2ludFxuICogQHBhcmFtICB7bnVtYmVyfSB5IC0geSBvZiBwYXRoIHBvaW50XG4gKi9cblBhdGgucHJvdG90eXBlLnF1YWRUbyA9IFBhdGgucHJvdG90eXBlLnF1YWRyYXRpY0N1cnZlVG8gPSBmdW5jdGlvbih4MSwgeTEsIHgsIHkpIHtcbiAgICB0aGlzLmNvbW1hbmRzLnB1c2goe1xuICAgICAgICB0eXBlOiAnUScsXG4gICAgICAgIHgxOiB4MSxcbiAgICAgICAgeTE6IHkxLFxuICAgICAgICB4OiB4LFxuICAgICAgICB5OiB5XG4gICAgfSk7XG59O1xuXG4vKipcbiAqIENsb3NlcyB0aGUgcGF0aFxuICogQGZ1bmN0aW9uIGNsb3NlUGF0aFxuICogQG1lbWJlcm9mIG9wZW50eXBlLlBhdGgucHJvdG90eXBlXG4gKi9cblxuLyoqXG4gKiBDbG9zZSB0aGUgcGF0aFxuICogQGZ1bmN0aW9uIGNsb3NlXG4gKiBAbWVtYmVyb2Ygb3BlbnR5cGUuUGF0aC5wcm90b3R5cGVcbiAqL1xuUGF0aC5wcm90b3R5cGUuY2xvc2UgPSBQYXRoLnByb3RvdHlwZS5jbG9zZVBhdGggPSBmdW5jdGlvbigpIHtcbiAgICB0aGlzLmNvbW1hbmRzLnB1c2goe1xuICAgICAgICB0eXBlOiAnWidcbiAgICB9KTtcbn07XG5cbi8qKlxuICogQWRkIHRoZSBnaXZlbiBwYXRoIG9yIGxpc3Qgb2YgY29tbWFuZHMgdG8gdGhlIGNvbW1hbmRzIG9mIHRoaXMgcGF0aC5cbiAqIEBwYXJhbSAge0FycmF5fSBwYXRoT3JDb21tYW5kcyAtIGFub3RoZXIgb3BlbnR5cGUuUGF0aCwgYW4gb3BlbnR5cGUuQm91bmRpbmdCb3gsIG9yIGFuIGFycmF5IG9mIGNvbW1hbmRzLlxuICovXG5QYXRoLnByb3RvdHlwZS5leHRlbmQgPSBmdW5jdGlvbihwYXRoT3JDb21tYW5kcykge1xuICAgIGlmIChwYXRoT3JDb21tYW5kcy5jb21tYW5kcykge1xuICAgICAgICBwYXRoT3JDb21tYW5kcyA9IHBhdGhPckNvbW1hbmRzLmNvbW1hbmRzO1xuICAgIH0gZWxzZSBpZiAocGF0aE9yQ29tbWFuZHMgaW5zdGFuY2VvZiBiYm94LkJvdW5kaW5nQm94KSB7XG4gICAgICAgIHZhciBib3ggPSBwYXRoT3JDb21tYW5kcztcbiAgICAgICAgdGhpcy5tb3ZlVG8oYm94LngxLCBib3gueTEpO1xuICAgICAgICB0aGlzLmxpbmVUbyhib3gueDIsIGJveC55MSk7XG4gICAgICAgIHRoaXMubGluZVRvKGJveC54MiwgYm94LnkyKTtcbiAgICAgICAgdGhpcy5saW5lVG8oYm94LngxLCBib3gueTIpO1xuICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseSh0aGlzLmNvbW1hbmRzLCBwYXRoT3JDb21tYW5kcyk7XG59O1xuXG4vKipcbiAqIENhbGN1bGF0ZSB0aGUgYm91bmRpbmcgYm94IG9mIHRoZSBwYXRoLlxuICogQHJldHVybnMge29wZW50eXBlLkJvdW5kaW5nQm94fVxuICovXG5QYXRoLnByb3RvdHlwZS5nZXRCb3VuZGluZ0JveCA9IGZ1bmN0aW9uKCkge1xuICAgIHZhciBib3ggPSBuZXcgYmJveC5Cb3VuZGluZ0JveCgpO1xuXG4gICAgdmFyIHN0YXJ0WCA9IDA7XG4gICAgdmFyIHN0YXJ0WSA9IDA7XG4gICAgdmFyIHByZXZYID0gMDtcbiAgICB2YXIgcHJldlkgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5jb21tYW5kcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgY21kID0gdGhpcy5jb21tYW5kc1tpXTtcbiAgICAgICAgc3dpdGNoIChjbWQudHlwZSkge1xuICAgICAgICAgICAgY2FzZSAnTSc6XG4gICAgICAgICAgICAgICAgYm94LmFkZFBvaW50KGNtZC54LCBjbWQueSk7XG4gICAgICAgICAgICAgICAgc3RhcnRYID0gcHJldlggPSBjbWQueDtcbiAgICAgICAgICAgICAgICBzdGFydFkgPSBwcmV2WSA9IGNtZC55O1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnTCc6XG4gICAgICAgICAgICAgICAgYm94LmFkZFBvaW50KGNtZC54LCBjbWQueSk7XG4gICAgICAgICAgICAgICAgcHJldlggPSBjbWQueDtcbiAgICAgICAgICAgICAgICBwcmV2WSA9IGNtZC55O1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnUSc6XG4gICAgICAgICAgICAgICAgYm94LmFkZFF1YWQocHJldlgsIHByZXZZLCBjbWQueDEsIGNtZC55MSwgY21kLngsIGNtZC55KTtcbiAgICAgICAgICAgICAgICBwcmV2WCA9IGNtZC54O1xuICAgICAgICAgICAgICAgIHByZXZZID0gY21kLnk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdDJzpcbiAgICAgICAgICAgICAgICBib3guYWRkQmV6aWVyKHByZXZYLCBwcmV2WSwgY21kLngxLCBjbWQueTEsIGNtZC54MiwgY21kLnkyLCBjbWQueCwgY21kLnkpO1xuICAgICAgICAgICAgICAgIHByZXZYID0gY21kLng7XG4gICAgICAgICAgICAgICAgcHJldlkgPSBjbWQueTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ1onOlxuICAgICAgICAgICAgICAgIHByZXZYID0gc3RhcnRYO1xuICAgICAgICAgICAgICAgIHByZXZZID0gc3RhcnRZO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1VuZXhwZWN0ZWQgcGF0aCBjb21tbWFuZCAnICsgY21kLnR5cGUpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChib3guaXNFbXB0eSgpKSB7XG4gICAgICAgIGJveC5hZGRQb2ludCgwLCAwKTtcbiAgICB9XG4gICAgcmV0dXJuIGJveDtcbn07XG5cbi8qKlxuICogRHJhdyB0aGUgcGF0aCB0byBhIDJEIGNvbnRleHQuXG4gKiBAcGFyYW0ge0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRH0gY3R4IC0gQSAyRCBkcmF3aW5nIGNvbnRleHQuXG4gKi9cblBhdGgucHJvdG90eXBlLmRyYXcgPSBmdW5jdGlvbihjdHgpIHtcbiAgICBjdHguYmVnaW5QYXRoKCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmNvbW1hbmRzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICAgIHZhciBjbWQgPSB0aGlzLmNvbW1hbmRzW2ldO1xuICAgICAgICBpZiAoY21kLnR5cGUgPT09ICdNJykge1xuICAgICAgICAgICAgY3R4Lm1vdmVUbyhjbWQueCwgY21kLnkpO1xuICAgICAgICB9IGVsc2UgaWYgKGNtZC50eXBlID09PSAnTCcpIHtcbiAgICAgICAgICAgIGN0eC5saW5lVG8oY21kLngsIGNtZC55KTtcbiAgICAgICAgfSBlbHNlIGlmIChjbWQudHlwZSA9PT0gJ0MnKSB7XG4gICAgICAgICAgICBjdHguYmV6aWVyQ3VydmVUbyhjbWQueDEsIGNtZC55MSwgY21kLngyLCBjbWQueTIsIGNtZC54LCBjbWQueSk7XG4gICAgICAgIH0gZWxzZSBpZiAoY21kLnR5cGUgPT09ICdRJykge1xuICAgICAgICAgICAgY3R4LnF1YWRyYXRpY0N1cnZlVG8oY21kLngxLCBjbWQueTEsIGNtZC54LCBjbWQueSk7XG4gICAgICAgIH0gZWxzZSBpZiAoY21kLnR5cGUgPT09ICdaJykge1xuICAgICAgICAgICAgY3R4LmNsb3NlUGF0aCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZmlsbCkge1xuICAgICAgICBjdHguZmlsbFN0eWxlID0gdGhpcy5maWxsO1xuICAgICAgICBjdHguZmlsbCgpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnN0cm9rZSkge1xuICAgICAgICBjdHguc3Ryb2tlU3R5bGUgPSB0aGlzLnN0cm9rZTtcbiAgICAgICAgY3R4LmxpbmVXaWR0aCA9IHRoaXMuc3Ryb2tlV2lkdGg7XG4gICAgICAgIGN0eC5zdHJva2UoKTtcbiAgICB9XG59O1xuXG4vKipcbiAqIENvbnZlcnQgdGhlIFBhdGggdG8gYSBzdHJpbmcgb2YgcGF0aCBkYXRhIGluc3RydWN0aW9uc1xuICogU2VlIGh0dHA6Ly93d3cudzMub3JnL1RSL1NWRy9wYXRocy5odG1sI1BhdGhEYXRhXG4gKiBAcGFyYW0gIHtudW1iZXJ9IFtkZWNpbWFsUGxhY2VzPTJdIC0gVGhlIGFtb3VudCBvZiBkZWNpbWFsIHBsYWNlcyBmb3IgZmxvYXRpbmctcG9pbnQgdmFsdWVzXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cblBhdGgucHJvdG90eXBlLnRvUGF0aERhdGEgPSBmdW5jdGlvbihkZWNpbWFsUGxhY2VzKSB7XG4gICAgZGVjaW1hbFBsYWNlcyA9IGRlY2ltYWxQbGFjZXMgIT09IHVuZGVmaW5lZCA/IGRlY2ltYWxQbGFjZXMgOiAyO1xuXG4gICAgZnVuY3Rpb24gZmxvYXRUb1N0cmluZyh2KSB7XG4gICAgICAgIGlmIChNYXRoLnJvdW5kKHYpID09PSB2KSB7XG4gICAgICAgICAgICByZXR1cm4gJycgKyBNYXRoLnJvdW5kKHYpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHYudG9GaXhlZChkZWNpbWFsUGxhY2VzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHBhY2tWYWx1ZXMoKSB7XG4gICAgICAgIHZhciBzID0gJyc7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICAgICAgICB2YXIgdiA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgICAgIGlmICh2ID49IDAgJiYgaSA+IDApIHtcbiAgICAgICAgICAgICAgICBzICs9ICcgJztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcyArPSBmbG9hdFRvU3RyaW5nKHYpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHM7XG4gICAgfVxuXG4gICAgdmFyIGQgPSAnJztcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuY29tbWFuZHMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgICAgdmFyIGNtZCA9IHRoaXMuY29tbWFuZHNbaV07XG4gICAgICAgIGlmIChjbWQudHlwZSA9PT0gJ00nKSB7XG4gICAgICAgICAgICBkICs9ICdNJyArIHBhY2tWYWx1ZXMoY21kLngsIGNtZC55KTtcbiAgICAgICAgfSBlbHNlIGlmIChjbWQudHlwZSA9PT0gJ0wnKSB7XG4gICAgICAgICAgICBkICs9ICdMJyArIHBhY2tWYWx1ZXMoY21kLngsIGNtZC55KTtcbiAgICAgICAgfSBlbHNlIGlmIChjbWQudHlwZSA9PT0gJ0MnKSB7XG4gICAgICAgICAgICBkICs9ICdDJyArIHBhY2tWYWx1ZXMoY21kLngxLCBjbWQueTEsIGNtZC54MiwgY21kLnkyLCBjbWQueCwgY21kLnkpO1xuICAgICAgICB9IGVsc2UgaWYgKGNtZC50eXBlID09PSAnUScpIHtcbiAgICAgICAgICAgIGQgKz0gJ1EnICsgcGFja1ZhbHVlcyhjbWQueDEsIGNtZC55MSwgY21kLngsIGNtZC55KTtcbiAgICAgICAgfSBlbHNlIGlmIChjbWQudHlwZSA9PT0gJ1onKSB7XG4gICAgICAgICAgICBkICs9ICdaJztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBkO1xufTtcblxuLyoqXG4gKiBDb252ZXJ0IHRoZSBwYXRoIHRvIGFuIFNWRyA8cGF0aD4gZWxlbWVudCwgYXMgYSBzdHJpbmcuXG4gKiBAcGFyYW0gIHtudW1iZXJ9IFtkZWNpbWFsUGxhY2VzPTJdIC0gVGhlIGFtb3VudCBvZiBkZWNpbWFsIHBsYWNlcyBmb3IgZmxvYXRpbmctcG9pbnQgdmFsdWVzXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cblBhdGgucHJvdG90eXBlLnRvU1ZHID0gZnVuY3Rpb24oZGVjaW1hbFBsYWNlcykge1xuICAgIHZhciBzdmcgPSAnPHBhdGggZD1cIic7XG4gICAgc3ZnICs9IHRoaXMudG9QYXRoRGF0YShkZWNpbWFsUGxhY2VzKTtcbiAgICBzdmcgKz0gJ1wiJztcbiAgICBpZiAodGhpcy5maWxsICYmIHRoaXMuZmlsbCAhPT0gJ2JsYWNrJykge1xuICAgICAgICBpZiAodGhpcy5maWxsID09PSBudWxsKSB7XG4gICAgICAgICAgICBzdmcgKz0gJyBmaWxsPVwibm9uZVwiJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHN2ZyArPSAnIGZpbGw9XCInICsgdGhpcy5maWxsICsgJ1wiJztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLnN0cm9rZSkge1xuICAgICAgICBzdmcgKz0gJyBzdHJva2U9XCInICsgdGhpcy5zdHJva2UgKyAnXCIgc3Ryb2tlLXdpZHRoPVwiJyArIHRoaXMuc3Ryb2tlV2lkdGggKyAnXCInO1xuICAgIH1cblxuICAgIHN2ZyArPSAnLz4nO1xuICAgIHJldHVybiBzdmc7XG59O1xuXG5QYXRoLnByb3RvdHlwZS50b0RPTUVsZW1lbnQgPSBmdW5jdGlvbihkZWNpbWFsUGxhY2VzKSB7XG4gICAgdmFyIHRlbXBvcmFyeVBhdGggPSB0aGlzLnRvUGF0aERhdGEoZGVjaW1hbFBsYWNlcyk7XG4gICAgdmFyIG5ld1BhdGggPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJywgJ3BhdGgnKTtcblxuICAgIG5ld1BhdGguc2V0QXR0cmlidXRlKCdkJywgdGVtcG9yYXJ5UGF0aCk7XG5cbiAgICByZXR1cm4gbmV3UGF0aDtcbn07XG5cbmV4cG9ydHMuUGF0aCA9IFBhdGg7XG4iLCIvLyBUaGUgU3Vic3RpdHV0aW9uIG9iamVjdCBwcm92aWRlcyB1dGlsaXR5IG1ldGhvZHMgdG8gbWFuaXB1bGF0ZVxuLy8gdGhlIEdTVUIgc3Vic3RpdHV0aW9uIHRhYmxlLlxuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBjaGVjayA9IHJlcXVpcmUoJy4vY2hlY2snKTtcbnZhciBMYXlvdXQgPSByZXF1aXJlKCcuL2xheW91dCcpO1xuXG4vKipcbiAqIEBleHBvcnRzIG9wZW50eXBlLlN1YnN0aXR1dGlvblxuICogQGNsYXNzXG4gKiBAZXh0ZW5kcyBvcGVudHlwZS5MYXlvdXRcbiAqIEBwYXJhbSB7b3BlbnR5cGUuRm9udH1cbiAqIEBjb25zdHJ1Y3RvclxuICovXG52YXIgU3Vic3RpdHV0aW9uID0gZnVuY3Rpb24oZm9udCkge1xuICAgIExheW91dC5jYWxsKHRoaXMsIGZvbnQsICdnc3ViJyk7XG59O1xuXG4vLyBDaGVjayBpZiAyIGFycmF5cyBvZiBwcmltaXRpdmVzIGFyZSBlcXVhbC5cbmZ1bmN0aW9uIGFycmF5c0VxdWFsKGFyMSwgYXIyKSB7XG4gICAgdmFyIG4gPSBhcjEubGVuZ3RoO1xuICAgIGlmIChuICE9PSBhcjIubGVuZ3RoKSB7IHJldHVybiBmYWxzZTsgfVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgIGlmIChhcjFbaV0gIT09IGFyMltpXSkgeyByZXR1cm4gZmFsc2U7IH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG59XG5cbi8vIEZpbmQgdGhlIGZpcnN0IHN1YnRhYmxlIG9mIGEgbG9va3VwIHRhYmxlIGluIGEgcGFydGljdWxhciBmb3JtYXQuXG5mdW5jdGlvbiBnZXRTdWJzdEZvcm1hdChsb29rdXBUYWJsZSwgZm9ybWF0LCBkZWZhdWx0U3VidGFibGUpIHtcbiAgICB2YXIgc3VidGFibGVzID0gbG9va3VwVGFibGUuc3VidGFibGVzO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3VidGFibGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBzdWJ0YWJsZSA9IHN1YnRhYmxlc1tpXTtcbiAgICAgICAgaWYgKHN1YnRhYmxlLnN1YnN0Rm9ybWF0ID09PSBmb3JtYXQpIHtcbiAgICAgICAgICAgIHJldHVybiBzdWJ0YWJsZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAoZGVmYXVsdFN1YnRhYmxlKSB7XG4gICAgICAgIHN1YnRhYmxlcy5wdXNoKGRlZmF1bHRTdWJ0YWJsZSk7XG4gICAgICAgIHJldHVybiBkZWZhdWx0U3VidGFibGU7XG4gICAgfVxufVxuXG5TdWJzdGl0dXRpb24ucHJvdG90eXBlID0gTGF5b3V0LnByb3RvdHlwZTtcblxuLyoqXG4gKiBDcmVhdGUgYSBkZWZhdWx0IEdTVUIgdGFibGUuXG4gKiBAcmV0dXJuIHtPYmplY3R9IGdzdWIgLSBUaGUgR1NVQiB0YWJsZS5cbiAqL1xuU3Vic3RpdHV0aW9uLnByb3RvdHlwZS5jcmVhdGVEZWZhdWx0VGFibGUgPSBmdW5jdGlvbigpIHtcbiAgICAvLyBHZW5lcmF0ZSBhIGRlZmF1bHQgZW1wdHkgR1NVQiB0YWJsZSB3aXRoIGp1c3QgYSBERkxUIHNjcmlwdCBhbmQgZGZsdCBsYW5nIHN5cy5cbiAgICByZXR1cm4ge1xuICAgICAgICB2ZXJzaW9uOiAxLFxuICAgICAgICBzY3JpcHRzOiBbe1xuICAgICAgICAgICAgdGFnOiAnREZMVCcsXG4gICAgICAgICAgICBzY3JpcHQ6IHtcbiAgICAgICAgICAgICAgICBkZWZhdWx0TGFuZ1N5czogeyByZXNlcnZlZDogMCwgcmVxRmVhdHVyZUluZGV4OiAweGZmZmYsIGZlYXR1cmVJbmRleGVzOiBbXSB9LFxuICAgICAgICAgICAgICAgIGxhbmdTeXNSZWNvcmRzOiBbXVxuICAgICAgICAgICAgfVxuICAgICAgICB9XSxcbiAgICAgICAgZmVhdHVyZXM6IFtdLFxuICAgICAgICBsb29rdXBzOiBbXVxuICAgIH07XG59O1xuXG4vKipcbiAqIExpc3QgYWxsIHNpbmdsZSBzdWJzdGl0dXRpb25zIChsb29rdXAgdHlwZSAxKSBmb3IgYSBnaXZlbiBzY3JpcHQsIGxhbmd1YWdlLCBhbmQgZmVhdHVyZS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBbc2NyaXB0PSdERkxUJ11cbiAqIEBwYXJhbSB7c3RyaW5nfSBbbGFuZ3VhZ2U9J2RmbHQnXVxuICogQHBhcmFtIHtzdHJpbmd9IGZlYXR1cmUgLSA0LWNoYXJhY3RlciBmZWF0dXJlIG5hbWUgKCdhYWx0JywgJ3NhbHQnLCAnc3MwMScuLi4pXG4gKiBAcmV0dXJuIHtBcnJheX0gc3Vic3RpdHV0aW9ucyAtIFRoZSBsaXN0IG9mIHN1YnN0aXR1dGlvbnMuXG4gKi9cblN1YnN0aXR1dGlvbi5wcm90b3R5cGUuZ2V0U2luZ2xlID0gZnVuY3Rpb24oZmVhdHVyZSwgc2NyaXB0LCBsYW5ndWFnZSkge1xuICAgIHZhciBzdWJzdGl0dXRpb25zID0gW107XG4gICAgdmFyIGxvb2t1cFRhYmxlcyA9IHRoaXMuZ2V0TG9va3VwVGFibGVzKHNjcmlwdCwgbGFuZ3VhZ2UsIGZlYXR1cmUsIDEpO1xuICAgIGZvciAodmFyIGlkeCA9IDA7IGlkeCA8IGxvb2t1cFRhYmxlcy5sZW5ndGg7IGlkeCsrKSB7XG4gICAgICAgIHZhciBzdWJ0YWJsZXMgPSBsb29rdXBUYWJsZXNbaWR4XS5zdWJ0YWJsZXM7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3VidGFibGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB2YXIgc3VidGFibGUgPSBzdWJ0YWJsZXNbaV07XG4gICAgICAgICAgICB2YXIgZ2x5cGhzID0gdGhpcy5leHBhbmRDb3ZlcmFnZShzdWJ0YWJsZS5jb3ZlcmFnZSk7XG4gICAgICAgICAgICB2YXIgajtcbiAgICAgICAgICAgIGlmIChzdWJ0YWJsZS5zdWJzdEZvcm1hdCA9PT0gMSkge1xuICAgICAgICAgICAgICAgIHZhciBkZWx0YSA9IHN1YnRhYmxlLmRlbHRhR2x5cGhJZDtcbiAgICAgICAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgZ2x5cGhzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBnbHlwaCA9IGdseXBoc1tqXTtcbiAgICAgICAgICAgICAgICAgICAgc3Vic3RpdHV0aW9ucy5wdXNoKHsgc3ViOiBnbHlwaCwgYnk6IGdseXBoICsgZGVsdGEgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB2YXIgc3Vic3RpdHV0ZSA9IHN1YnRhYmxlLnN1YnN0aXR1dGU7XG4gICAgICAgICAgICAgICAgZm9yIChqID0gMDsgaiA8IGdseXBocy5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgICAgICAgICBzdWJzdGl0dXRpb25zLnB1c2goeyBzdWI6IGdseXBoc1tqXSwgYnk6IHN1YnN0aXR1dGVbal0gfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBzdWJzdGl0dXRpb25zO1xufTtcblxuLyoqXG4gKiBMaXN0IGFsbCBhbHRlcm5hdGVzIChsb29rdXAgdHlwZSAzKSBmb3IgYSBnaXZlbiBzY3JpcHQsIGxhbmd1YWdlLCBhbmQgZmVhdHVyZS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBbc2NyaXB0PSdERkxUJ11cbiAqIEBwYXJhbSB7c3RyaW5nfSBbbGFuZ3VhZ2U9J2RmbHQnXVxuICogQHBhcmFtIHtzdHJpbmd9IGZlYXR1cmUgLSA0LWNoYXJhY3RlciBmZWF0dXJlIG5hbWUgKCdhYWx0JywgJ3NhbHQnLi4uKVxuICogQHJldHVybiB7QXJyYXl9IGFsdGVybmF0ZXMgLSBUaGUgbGlzdCBvZiBhbHRlcm5hdGVzXG4gKi9cblN1YnN0aXR1dGlvbi5wcm90b3R5cGUuZ2V0QWx0ZXJuYXRlcyA9IGZ1bmN0aW9uKGZlYXR1cmUsIHNjcmlwdCwgbGFuZ3VhZ2UpIHtcbiAgICB2YXIgYWx0ZXJuYXRlcyA9IFtdO1xuICAgIHZhciBsb29rdXBUYWJsZXMgPSB0aGlzLmdldExvb2t1cFRhYmxlcyhzY3JpcHQsIGxhbmd1YWdlLCBmZWF0dXJlLCAzKTtcbiAgICBmb3IgKHZhciBpZHggPSAwOyBpZHggPCBsb29rdXBUYWJsZXMubGVuZ3RoOyBpZHgrKykge1xuICAgICAgICB2YXIgc3VidGFibGVzID0gbG9va3VwVGFibGVzW2lkeF0uc3VidGFibGVzO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN1YnRhYmxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdmFyIHN1YnRhYmxlID0gc3VidGFibGVzW2ldO1xuICAgICAgICAgICAgdmFyIGdseXBocyA9IHRoaXMuZXhwYW5kQ292ZXJhZ2Uoc3VidGFibGUuY292ZXJhZ2UpO1xuICAgICAgICAgICAgdmFyIGFsdGVybmF0ZVNldHMgPSBzdWJ0YWJsZS5hbHRlcm5hdGVTZXRzO1xuICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBnbHlwaHMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgICAgICBhbHRlcm5hdGVzLnB1c2goeyBzdWI6IGdseXBoc1tqXSwgYnk6IGFsdGVybmF0ZVNldHNbal0gfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGFsdGVybmF0ZXM7XG59O1xuXG4vKipcbiAqIExpc3QgYWxsIGxpZ2F0dXJlcyAobG9va3VwIHR5cGUgNCkgZm9yIGEgZ2l2ZW4gc2NyaXB0LCBsYW5ndWFnZSwgYW5kIGZlYXR1cmUuXG4gKiBUaGUgcmVzdWx0IGlzIGFuIGFycmF5IG9mIGxpZ2F0dXJlIG9iamVjdHMgbGlrZSB7IHN1YjogW2lkc10sIGJ5OiBpZCB9XG4gKiBAcGFyYW0ge3N0cmluZ30gZmVhdHVyZSAtIDQtbGV0dGVyIGZlYXR1cmUgbmFtZSAoJ2xpZ2EnLCAncmxpZycsICdkbGlnJy4uLilcbiAqIEBwYXJhbSB7c3RyaW5nfSBbc2NyaXB0PSdERkxUJ11cbiAqIEBwYXJhbSB7c3RyaW5nfSBbbGFuZ3VhZ2U9J2RmbHQnXVxuICogQHJldHVybiB7QXJyYXl9IGxpZ2F0dXJlcyAtIFRoZSBsaXN0IG9mIGxpZ2F0dXJlcy5cbiAqL1xuU3Vic3RpdHV0aW9uLnByb3RvdHlwZS5nZXRMaWdhdHVyZXMgPSBmdW5jdGlvbihmZWF0dXJlLCBzY3JpcHQsIGxhbmd1YWdlKSB7XG4gICAgdmFyIGxpZ2F0dXJlcyA9IFtdO1xuICAgIHZhciBsb29rdXBUYWJsZXMgPSB0aGlzLmdldExvb2t1cFRhYmxlcyhzY3JpcHQsIGxhbmd1YWdlLCBmZWF0dXJlLCA0KTtcbiAgICBmb3IgKHZhciBpZHggPSAwOyBpZHggPCBsb29rdXBUYWJsZXMubGVuZ3RoOyBpZHgrKykge1xuICAgICAgICB2YXIgc3VidGFibGVzID0gbG9va3VwVGFibGVzW2lkeF0uc3VidGFibGVzO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN1YnRhYmxlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdmFyIHN1YnRhYmxlID0gc3VidGFibGVzW2ldO1xuICAgICAgICAgICAgdmFyIGdseXBocyA9IHRoaXMuZXhwYW5kQ292ZXJhZ2Uoc3VidGFibGUuY292ZXJhZ2UpO1xuICAgICAgICAgICAgdmFyIGxpZ2F0dXJlU2V0cyA9IHN1YnRhYmxlLmxpZ2F0dXJlU2V0cztcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgZ2x5cGhzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgICAgICAgdmFyIHN0YXJ0R2x5cGggPSBnbHlwaHNbal07XG4gICAgICAgICAgICAgICAgdmFyIGxpZ1NldCA9IGxpZ2F0dXJlU2V0c1tqXTtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBrID0gMDsgayA8IGxpZ1NldC5sZW5ndGg7IGsrKykge1xuICAgICAgICAgICAgICAgICAgICB2YXIgbGlnID0gbGlnU2V0W2tdO1xuICAgICAgICAgICAgICAgICAgICBsaWdhdHVyZXMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdWI6IFtzdGFydEdseXBoXS5jb25jYXQobGlnLmNvbXBvbmVudHMpLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnk6IGxpZy5saWdHbHlwaFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGxpZ2F0dXJlcztcbn07XG5cbi8qKlxuICogQWRkIG9yIG1vZGlmeSBhIHNpbmdsZSBzdWJzdGl0dXRpb24gKGxvb2t1cCB0eXBlIDEpXG4gKiBGb3JtYXQgMiwgbW9yZSBmbGV4aWJsZSwgaXMgYWx3YXlzIHVzZWQuXG4gKiBAcGFyYW0ge3N0cmluZ30gZmVhdHVyZSAtIDQtbGV0dGVyIGZlYXR1cmUgbmFtZSAoJ2xpZ2EnLCAncmxpZycsICdkbGlnJy4uLilcbiAqIEBwYXJhbSB7T2JqZWN0fSBzdWJzdGl0dXRpb24gLSB7IHN1YjogaWQsIGRlbHRhOiBudW1iZXIgfSBmb3IgZm9ybWF0IDEgb3IgeyBzdWI6IGlkLCBieTogaWQgfSBmb3IgZm9ybWF0IDIuXG4gKiBAcGFyYW0ge3N0cmluZ30gW3NjcmlwdD0nREZMVCddXG4gKiBAcGFyYW0ge3N0cmluZ30gW2xhbmd1YWdlPSdkZmx0J11cbiAqL1xuU3Vic3RpdHV0aW9uLnByb3RvdHlwZS5hZGRTaW5nbGUgPSBmdW5jdGlvbihmZWF0dXJlLCBzdWJzdGl0dXRpb24sIHNjcmlwdCwgbGFuZ3VhZ2UpIHtcbiAgICB2YXIgbG9va3VwVGFibGUgPSB0aGlzLmdldExvb2t1cFRhYmxlcyhzY3JpcHQsIGxhbmd1YWdlLCBmZWF0dXJlLCAxLCB0cnVlKVswXTtcbiAgICB2YXIgc3VidGFibGUgPSBnZXRTdWJzdEZvcm1hdChsb29rdXBUYWJsZSwgMiwgeyAgICAgICAgICAgICAgICAvLyBsb29rdXAgdHlwZSAxIHN1YnRhYmxlLCBmb3JtYXQgMiwgY292ZXJhZ2UgZm9ybWF0IDFcbiAgICAgICAgc3Vic3RGb3JtYXQ6IDIsXG4gICAgICAgIGNvdmVyYWdlOiB7IGZvcm1hdDogMSwgZ2x5cGhzOiBbXSB9LFxuICAgICAgICBzdWJzdGl0dXRlOiBbXVxuICAgIH0pO1xuICAgIGNoZWNrLmFzc2VydChzdWJ0YWJsZS5jb3ZlcmFnZS5mb3JtYXQgPT09IDEsICdMaWdhdHVyZTogdW5hYmxlIHRvIG1vZGlmeSBjb3ZlcmFnZSB0YWJsZSBmb3JtYXQgJyArIHN1YnRhYmxlLmNvdmVyYWdlLmZvcm1hdCk7XG4gICAgdmFyIGNvdmVyYWdlR2x5cGggPSBzdWJzdGl0dXRpb24uc3ViO1xuICAgIHZhciBwb3MgPSB0aGlzLmJpblNlYXJjaChzdWJ0YWJsZS5jb3ZlcmFnZS5nbHlwaHMsIGNvdmVyYWdlR2x5cGgpO1xuICAgIGlmIChwb3MgPCAwKSB7XG4gICAgICAgIHBvcyA9IC0xIC0gcG9zO1xuICAgICAgICBzdWJ0YWJsZS5jb3ZlcmFnZS5nbHlwaHMuc3BsaWNlKHBvcywgMCwgY292ZXJhZ2VHbHlwaCk7XG4gICAgICAgIHN1YnRhYmxlLnN1YnN0aXR1dGUuc3BsaWNlKHBvcywgMCwgMCk7XG4gICAgfVxuICAgIHN1YnRhYmxlLnN1YnN0aXR1dGVbcG9zXSA9IHN1YnN0aXR1dGlvbi5ieTtcbn07XG5cbi8qKlxuICogQWRkIG9yIG1vZGlmeSBhbiBhbHRlcm5hdGUgc3Vic3RpdHV0aW9uIChsb29rdXAgdHlwZSAxKVxuICogQHBhcmFtIHtzdHJpbmd9IGZlYXR1cmUgLSA0LWxldHRlciBmZWF0dXJlIG5hbWUgKCdsaWdhJywgJ3JsaWcnLCAnZGxpZycuLi4pXG4gKiBAcGFyYW0ge09iamVjdH0gc3Vic3RpdHV0aW9uIC0geyBzdWI6IGlkLCBieTogW2lkc10gfVxuICogQHBhcmFtIHtzdHJpbmd9IFtzY3JpcHQ9J0RGTFQnXVxuICogQHBhcmFtIHtzdHJpbmd9IFtsYW5ndWFnZT0nZGZsdCddXG4gKi9cblN1YnN0aXR1dGlvbi5wcm90b3R5cGUuYWRkQWx0ZXJuYXRlID0gZnVuY3Rpb24oZmVhdHVyZSwgc3Vic3RpdHV0aW9uLCBzY3JpcHQsIGxhbmd1YWdlKSB7XG4gICAgdmFyIGxvb2t1cFRhYmxlID0gdGhpcy5nZXRMb29rdXBUYWJsZXMoc2NyaXB0LCBsYW5ndWFnZSwgZmVhdHVyZSwgMywgdHJ1ZSlbMF07XG4gICAgdmFyIHN1YnRhYmxlID0gZ2V0U3Vic3RGb3JtYXQobG9va3VwVGFibGUsIDEsIHsgICAgICAgICAgICAgICAgLy8gbG9va3VwIHR5cGUgMyBzdWJ0YWJsZSwgZm9ybWF0IDEsIGNvdmVyYWdlIGZvcm1hdCAxXG4gICAgICAgIHN1YnN0Rm9ybWF0OiAxLFxuICAgICAgICBjb3ZlcmFnZTogeyBmb3JtYXQ6IDEsIGdseXBoczogW10gfSxcbiAgICAgICAgYWx0ZXJuYXRlU2V0czogW11cbiAgICB9KTtcbiAgICBjaGVjay5hc3NlcnQoc3VidGFibGUuY292ZXJhZ2UuZm9ybWF0ID09PSAxLCAnTGlnYXR1cmU6IHVuYWJsZSB0byBtb2RpZnkgY292ZXJhZ2UgdGFibGUgZm9ybWF0ICcgKyBzdWJ0YWJsZS5jb3ZlcmFnZS5mb3JtYXQpO1xuICAgIHZhciBjb3ZlcmFnZUdseXBoID0gc3Vic3RpdHV0aW9uLnN1YjtcbiAgICB2YXIgcG9zID0gdGhpcy5iaW5TZWFyY2goc3VidGFibGUuY292ZXJhZ2UuZ2x5cGhzLCBjb3ZlcmFnZUdseXBoKTtcbiAgICBpZiAocG9zIDwgMCkge1xuICAgICAgICBwb3MgPSAtMSAtIHBvcztcbiAgICAgICAgc3VidGFibGUuY292ZXJhZ2UuZ2x5cGhzLnNwbGljZShwb3MsIDAsIGNvdmVyYWdlR2x5cGgpO1xuICAgICAgICBzdWJ0YWJsZS5hbHRlcm5hdGVTZXRzLnNwbGljZShwb3MsIDAsIDApO1xuICAgIH1cbiAgICBzdWJ0YWJsZS5hbHRlcm5hdGVTZXRzW3Bvc10gPSBzdWJzdGl0dXRpb24uYnk7XG59O1xuXG4vKipcbiAqIEFkZCBhIGxpZ2F0dXJlIChsb29rdXAgdHlwZSA0KVxuICogTGlnYXR1cmVzIHdpdGggbW9yZSBjb21wb25lbnRzIG11c3QgYmUgc3RvcmVkIGFoZWFkIG9mIHRob3NlIHdpdGggZmV3ZXIgY29tcG9uZW50cyBpbiBvcmRlciB0byBiZSBmb3VuZFxuICogQHBhcmFtIHtzdHJpbmd9IGZlYXR1cmUgLSA0LWxldHRlciBmZWF0dXJlIG5hbWUgKCdsaWdhJywgJ3JsaWcnLCAnZGxpZycuLi4pXG4gKiBAcGFyYW0ge09iamVjdH0gbGlnYXR1cmUgLSB7IHN1YjogW2lkc10sIGJ5OiBpZCB9XG4gKiBAcGFyYW0ge3N0cmluZ30gW3NjcmlwdD0nREZMVCddXG4gKiBAcGFyYW0ge3N0cmluZ30gW2xhbmd1YWdlPSdkZmx0J11cbiAqL1xuU3Vic3RpdHV0aW9uLnByb3RvdHlwZS5hZGRMaWdhdHVyZSA9IGZ1bmN0aW9uKGZlYXR1cmUsIGxpZ2F0dXJlLCBzY3JpcHQsIGxhbmd1YWdlKSB7XG4gICAgdmFyIGxvb2t1cFRhYmxlID0gdGhpcy5nZXRMb29rdXBUYWJsZXMoc2NyaXB0LCBsYW5ndWFnZSwgZmVhdHVyZSwgNCwgdHJ1ZSlbMF07XG4gICAgdmFyIHN1YnRhYmxlID0gbG9va3VwVGFibGUuc3VidGFibGVzWzBdO1xuICAgIGlmICghc3VidGFibGUpIHtcbiAgICAgICAgc3VidGFibGUgPSB7ICAgICAgICAgICAgICAgIC8vIGxvb2t1cCB0eXBlIDQgc3VidGFibGUsIGZvcm1hdCAxLCBjb3ZlcmFnZSBmb3JtYXQgMVxuICAgICAgICAgICAgc3Vic3RGb3JtYXQ6IDEsXG4gICAgICAgICAgICBjb3ZlcmFnZTogeyBmb3JtYXQ6IDEsIGdseXBoczogW10gfSxcbiAgICAgICAgICAgIGxpZ2F0dXJlU2V0czogW11cbiAgICAgICAgfTtcbiAgICAgICAgbG9va3VwVGFibGUuc3VidGFibGVzWzBdID0gc3VidGFibGU7XG4gICAgfVxuICAgIGNoZWNrLmFzc2VydChzdWJ0YWJsZS5jb3ZlcmFnZS5mb3JtYXQgPT09IDEsICdMaWdhdHVyZTogdW5hYmxlIHRvIG1vZGlmeSBjb3ZlcmFnZSB0YWJsZSBmb3JtYXQgJyArIHN1YnRhYmxlLmNvdmVyYWdlLmZvcm1hdCk7XG4gICAgdmFyIGNvdmVyYWdlR2x5cGggPSBsaWdhdHVyZS5zdWJbMF07XG4gICAgdmFyIGxpZ0NvbXBvbmVudHMgPSBsaWdhdHVyZS5zdWIuc2xpY2UoMSk7XG4gICAgdmFyIGxpZ2F0dXJlVGFibGUgPSB7XG4gICAgICAgIGxpZ0dseXBoOiBsaWdhdHVyZS5ieSxcbiAgICAgICAgY29tcG9uZW50czogbGlnQ29tcG9uZW50c1xuICAgIH07XG4gICAgdmFyIHBvcyA9IHRoaXMuYmluU2VhcmNoKHN1YnRhYmxlLmNvdmVyYWdlLmdseXBocywgY292ZXJhZ2VHbHlwaCk7XG4gICAgaWYgKHBvcyA+PSAwKSB7XG4gICAgICAgIC8vIGxpZ2F0dXJlU2V0IGFscmVhZHkgZXhpc3RzXG4gICAgICAgIHZhciBsaWdhdHVyZVNldCA9IHN1YnRhYmxlLmxpZ2F0dXJlU2V0c1twb3NdO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxpZ2F0dXJlU2V0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAvLyBJZiBsaWdhdHVyZSBhbHJlYWR5IGV4aXN0cywgcmV0dXJuLlxuICAgICAgICAgICAgaWYgKGFycmF5c0VxdWFsKGxpZ2F0dXJlU2V0W2ldLmNvbXBvbmVudHMsIGxpZ0NvbXBvbmVudHMpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIGxpZ2F0dXJlIGRvZXMgbm90IGV4aXN0OiBhZGQgaXQuXG4gICAgICAgIGxpZ2F0dXJlU2V0LnB1c2gobGlnYXR1cmVUYWJsZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgLy8gQ3JlYXRlIGEgbmV3IGxpZ2F0dXJlU2V0IGFuZCBhZGQgY292ZXJhZ2UgZm9yIHRoZSBmaXJzdCBnbHlwaC5cbiAgICAgICAgcG9zID0gLTEgLSBwb3M7XG4gICAgICAgIHN1YnRhYmxlLmNvdmVyYWdlLmdseXBocy5zcGxpY2UocG9zLCAwLCBjb3ZlcmFnZUdseXBoKTtcbiAgICAgICAgc3VidGFibGUubGlnYXR1cmVTZXRzLnNwbGljZShwb3MsIDAsIFtsaWdhdHVyZVRhYmxlXSk7XG4gICAgfVxufTtcblxuLyoqXG4gKiBMaXN0IGFsbCBmZWF0dXJlIGRhdGEgZm9yIGEgZ2l2ZW4gc2NyaXB0IGFuZCBsYW5ndWFnZS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBmZWF0dXJlIC0gNC1sZXR0ZXIgZmVhdHVyZSBuYW1lXG4gKiBAcGFyYW0ge3N0cmluZ30gW3NjcmlwdD0nREZMVCddXG4gKiBAcGFyYW0ge3N0cmluZ30gW2xhbmd1YWdlPSdkZmx0J11cbiAqIEByZXR1cm4ge0FycmF5fSBzdWJzdGl0dXRpb25zIC0gVGhlIGxpc3Qgb2Ygc3Vic3RpdHV0aW9ucy5cbiAqL1xuU3Vic3RpdHV0aW9uLnByb3RvdHlwZS5nZXRGZWF0dXJlID0gZnVuY3Rpb24oZmVhdHVyZSwgc2NyaXB0LCBsYW5ndWFnZSkge1xuICAgIGlmICgvc3NcXGRcXGQvLnRlc3QoZmVhdHVyZSkpIHsgICAgICAgICAgICAgICAvLyBzczAxIC0gc3MyMFxuICAgICAgICByZXR1cm4gdGhpcy5nZXRTaW5nbGUoZmVhdHVyZSwgc2NyaXB0LCBsYW5ndWFnZSk7XG4gICAgfVxuICAgIHN3aXRjaCAoZmVhdHVyZSkge1xuICAgICAgICBjYXNlICdhYWx0JzpcbiAgICAgICAgY2FzZSAnc2FsdCc6XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRTaW5nbGUoZmVhdHVyZSwgc2NyaXB0LCBsYW5ndWFnZSlcbiAgICAgICAgICAgICAgICAgICAgLmNvbmNhdCh0aGlzLmdldEFsdGVybmF0ZXMoZmVhdHVyZSwgc2NyaXB0LCBsYW5ndWFnZSkpO1xuICAgICAgICBjYXNlICdkbGlnJzpcbiAgICAgICAgY2FzZSAnbGlnYSc6XG4gICAgICAgIGNhc2UgJ3JsaWcnOiByZXR1cm4gdGhpcy5nZXRMaWdhdHVyZXMoZmVhdHVyZSwgc2NyaXB0LCBsYW5ndWFnZSk7XG4gICAgfVxufTtcblxuLyoqXG4gKiBBZGQgYSBzdWJzdGl0dXRpb24gdG8gYSBmZWF0dXJlIGZvciBhIGdpdmVuIHNjcmlwdCBhbmQgbGFuZ3VhZ2UuXG4gKiBAcGFyYW0ge3N0cmluZ30gZmVhdHVyZSAtIDQtbGV0dGVyIGZlYXR1cmUgbmFtZVxuICogQHBhcmFtIHtPYmplY3R9IHN1YiAtIHRoZSBzdWJzdGl0dXRpb24gdG8gYWRkIChhbiBvYmplY3QgbGlrZSB7IHN1YjogaWQgb3IgW2lkc10sIGJ5OiBpZCBvciBbaWRzXSB9KVxuICogQHBhcmFtIHtzdHJpbmd9IFtzY3JpcHQ9J0RGTFQnXVxuICogQHBhcmFtIHtzdHJpbmd9IFtsYW5ndWFnZT0nZGZsdCddXG4gKi9cblN1YnN0aXR1dGlvbi5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24oZmVhdHVyZSwgc3ViLCBzY3JpcHQsIGxhbmd1YWdlKSB7XG4gICAgaWYgKC9zc1xcZFxcZC8udGVzdChmZWF0dXJlKSkgeyAgICAgICAgICAgICAgIC8vIHNzMDEgLSBzczIwXG4gICAgICAgIHJldHVybiB0aGlzLmFkZFNpbmdsZShmZWF0dXJlLCBzdWIsIHNjcmlwdCwgbGFuZ3VhZ2UpO1xuICAgIH1cbiAgICBzd2l0Y2ggKGZlYXR1cmUpIHtcbiAgICAgICAgY2FzZSAnYWFsdCc6XG4gICAgICAgIGNhc2UgJ3NhbHQnOlxuICAgICAgICAgICAgaWYgKHR5cGVvZiBzdWIuYnkgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuYWRkU2luZ2xlKGZlYXR1cmUsIHN1Yiwgc2NyaXB0LCBsYW5ndWFnZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5hZGRBbHRlcm5hdGUoZmVhdHVyZSwgc3ViLCBzY3JpcHQsIGxhbmd1YWdlKTtcbiAgICAgICAgY2FzZSAnZGxpZyc6XG4gICAgICAgIGNhc2UgJ2xpZ2EnOlxuICAgICAgICBjYXNlICdybGlnJzpcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmFkZExpZ2F0dXJlKGZlYXR1cmUsIHN1Yiwgc2NyaXB0LCBsYW5ndWFnZSk7XG4gICAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBTdWJzdGl0dXRpb247XG4iLCIvLyBUYWJsZSBtZXRhZGF0YVxuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBjaGVjayA9IHJlcXVpcmUoJy4vY2hlY2snKTtcbnZhciBlbmNvZGUgPSByZXF1aXJlKCcuL3R5cGVzJykuZW5jb2RlO1xudmFyIHNpemVPZiA9IHJlcXVpcmUoJy4vdHlwZXMnKS5zaXplT2Y7XG4vKipcbiAqIEBleHBvcnRzIG9wZW50eXBlLlRhYmxlXG4gKiBAY2xhc3NcbiAqIEBwYXJhbSB7c3RyaW5nfSB0YWJsZU5hbWVcbiAqIEBwYXJhbSB7QXJyYXl9IGZpZWxkc1xuICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnNcbiAqIEBjb25zdHJ1Y3RvclxuICovXG5mdW5jdGlvbiBUYWJsZSh0YWJsZU5hbWUsIGZpZWxkcywgb3B0aW9ucykge1xuICAgIHZhciBpO1xuICAgIGZvciAoaSA9IDA7IGkgPCBmaWVsZHMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgICAgdmFyIGZpZWxkID0gZmllbGRzW2ldO1xuICAgICAgICB0aGlzW2ZpZWxkLm5hbWVdID0gZmllbGQudmFsdWU7XG4gICAgfVxuXG4gICAgdGhpcy50YWJsZU5hbWUgPSB0YWJsZU5hbWU7XG4gICAgdGhpcy5maWVsZHMgPSBmaWVsZHM7XG4gICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgdmFyIG9wdGlvbktleXMgPSBPYmplY3Qua2V5cyhvcHRpb25zKTtcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IG9wdGlvbktleXMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgICAgICAgIHZhciBrID0gb3B0aW9uS2V5c1tpXTtcbiAgICAgICAgICAgIHZhciB2ID0gb3B0aW9uc1trXTtcbiAgICAgICAgICAgIGlmICh0aGlzW2tdICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzW2tdID0gdjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuLyoqXG4gKiBFbmNvZGVzIHRoZSB0YWJsZSBhbmQgcmV0dXJucyBhbiBhcnJheSBvZiBieXRlc1xuICogQHJldHVybiB7QXJyYXl9XG4gKi9cblRhYmxlLnByb3RvdHlwZS5lbmNvZGUgPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gZW5jb2RlLlRBQkxFKHRoaXMpO1xufTtcblxuLyoqXG4gKiBHZXQgdGhlIHNpemUgb2YgdGhlIHRhYmxlLlxuICogQHJldHVybiB7bnVtYmVyfVxuICovXG5UYWJsZS5wcm90b3R5cGUuc2l6ZU9mID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHNpemVPZi5UQUJMRSh0aGlzKTtcbn07XG5cbi8qKlxuICogQHByaXZhdGVcbiAqL1xuZnVuY3Rpb24gdXNob3J0TGlzdChpdGVtTmFtZSwgbGlzdCwgY291bnQpIHtcbiAgICBpZiAoY291bnQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb3VudCA9IGxpc3QubGVuZ3RoO1xuICAgIH1cbiAgICB2YXIgZmllbGRzID0gbmV3IEFycmF5KGxpc3QubGVuZ3RoICsgMSk7XG4gICAgZmllbGRzWzBdID0ge25hbWU6IGl0ZW1OYW1lICsgJ0NvdW50JywgdHlwZTogJ1VTSE9SVCcsIHZhbHVlOiBjb3VudH07XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGZpZWxkc1tpICsgMV0gPSB7bmFtZTogaXRlbU5hbWUgKyBpLCB0eXBlOiAnVVNIT1JUJywgdmFsdWU6IGxpc3RbaV19O1xuICAgIH1cbiAgICByZXR1cm4gZmllbGRzO1xufVxuXG4vKipcbiAqIEBwcml2YXRlXG4gKi9cbmZ1bmN0aW9uIHRhYmxlTGlzdChpdGVtTmFtZSwgcmVjb3JkcywgaXRlbUNhbGxiYWNrKSB7XG4gICAgdmFyIGNvdW50ID0gcmVjb3Jkcy5sZW5ndGg7XG4gICAgdmFyIGZpZWxkcyA9IG5ldyBBcnJheShjb3VudCArIDEpO1xuICAgIGZpZWxkc1swXSA9IHtuYW1lOiBpdGVtTmFtZSArICdDb3VudCcsIHR5cGU6ICdVU0hPUlQnLCB2YWx1ZTogY291bnR9O1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY291bnQ7IGkrKykge1xuICAgICAgICBmaWVsZHNbaSArIDFdID0ge25hbWU6IGl0ZW1OYW1lICsgaSwgdHlwZTogJ1RBQkxFJywgdmFsdWU6IGl0ZW1DYWxsYmFjayhyZWNvcmRzW2ldLCBpKX07XG4gICAgfVxuICAgIHJldHVybiBmaWVsZHM7XG59XG5cbi8qKlxuICogQHByaXZhdGVcbiAqL1xuZnVuY3Rpb24gcmVjb3JkTGlzdChpdGVtTmFtZSwgcmVjb3JkcywgaXRlbUNhbGxiYWNrKSB7XG4gICAgdmFyIGNvdW50ID0gcmVjb3Jkcy5sZW5ndGg7XG4gICAgdmFyIGZpZWxkcyA9IFtdO1xuICAgIGZpZWxkc1swXSA9IHtuYW1lOiBpdGVtTmFtZSArICdDb3VudCcsIHR5cGU6ICdVU0hPUlQnLCB2YWx1ZTogY291bnR9O1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY291bnQ7IGkrKykge1xuICAgICAgICBmaWVsZHMgPSBmaWVsZHMuY29uY2F0KGl0ZW1DYWxsYmFjayhyZWNvcmRzW2ldLCBpKSk7XG4gICAgfVxuICAgIHJldHVybiBmaWVsZHM7XG59XG5cbi8vIENvbW1vbiBMYXlvdXQgVGFibGVzXG5cbi8qKlxuICogQGV4cG9ydHMgb3BlbnR5cGUuQ292ZXJhZ2VcbiAqIEBjbGFzc1xuICogQHBhcmFtIHtvcGVudHlwZS5UYWJsZX1cbiAqIEBjb25zdHJ1Y3RvclxuICogQGV4dGVuZHMgb3BlbnR5cGUuVGFibGVcbiAqL1xuZnVuY3Rpb24gQ292ZXJhZ2UoY292ZXJhZ2VUYWJsZSkge1xuICAgIGlmIChjb3ZlcmFnZVRhYmxlLmZvcm1hdCA9PT0gMSkge1xuICAgICAgICBUYWJsZS5jYWxsKHRoaXMsICdjb3ZlcmFnZVRhYmxlJyxcbiAgICAgICAgICAgIFt7bmFtZTogJ2NvdmVyYWdlRm9ybWF0JywgdHlwZTogJ1VTSE9SVCcsIHZhbHVlOiAxfV1cbiAgICAgICAgICAgIC5jb25jYXQodXNob3J0TGlzdCgnZ2x5cGgnLCBjb3ZlcmFnZVRhYmxlLmdseXBocykpXG4gICAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY2hlY2suYXNzZXJ0KGZhbHNlLCAnQ2FuXFwndCBjcmVhdGUgY292ZXJhZ2UgdGFibGUgZm9ybWF0IDIgeWV0LicpO1xuICAgIH1cbn1cbkNvdmVyYWdlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoVGFibGUucHJvdG90eXBlKTtcbkNvdmVyYWdlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IENvdmVyYWdlO1xuXG5mdW5jdGlvbiBTY3JpcHRMaXN0KHNjcmlwdExpc3RUYWJsZSkge1xuICAgIFRhYmxlLmNhbGwodGhpcywgJ3NjcmlwdExpc3RUYWJsZScsXG4gICAgICAgIHJlY29yZExpc3QoJ3NjcmlwdFJlY29yZCcsIHNjcmlwdExpc3RUYWJsZSwgZnVuY3Rpb24oc2NyaXB0UmVjb3JkLCBpKSB7XG4gICAgICAgICAgICB2YXIgc2NyaXB0ID0gc2NyaXB0UmVjb3JkLnNjcmlwdDtcbiAgICAgICAgICAgIHZhciBkZWZhdWx0TGFuZ1N5cyA9IHNjcmlwdC5kZWZhdWx0TGFuZ1N5cztcbiAgICAgICAgICAgIGNoZWNrLmFzc2VydCghIWRlZmF1bHRMYW5nU3lzLCAnVW5hYmxlIHRvIHdyaXRlIEdTVUI6IHNjcmlwdCAnICsgc2NyaXB0UmVjb3JkLnRhZyArICcgaGFzIG5vIGRlZmF1bHQgbGFuZ3VhZ2Ugc3lzdGVtLicpO1xuICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICB7bmFtZTogJ3NjcmlwdFRhZycgKyBpLCB0eXBlOiAnVEFHJywgdmFsdWU6IHNjcmlwdFJlY29yZC50YWd9LFxuICAgICAgICAgICAgICAgIHtuYW1lOiAnc2NyaXB0JyArIGksIHR5cGU6ICdUQUJMRScsIHZhbHVlOiBuZXcgVGFibGUoJ3NjcmlwdFRhYmxlJywgW1xuICAgICAgICAgICAgICAgICAgICB7bmFtZTogJ2RlZmF1bHRMYW5nU3lzJywgdHlwZTogJ1RBQkxFJywgdmFsdWU6IG5ldyBUYWJsZSgnZGVmYXVsdExhbmdTeXMnLCBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7bmFtZTogJ2xvb2t1cE9yZGVyJywgdHlwZTogJ1VTSE9SVCcsIHZhbHVlOiAwfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtuYW1lOiAncmVxRmVhdHVyZUluZGV4JywgdHlwZTogJ1VTSE9SVCcsIHZhbHVlOiBkZWZhdWx0TGFuZ1N5cy5yZXFGZWF0dXJlSW5kZXh9XVxuICAgICAgICAgICAgICAgICAgICAgICAgLmNvbmNhdCh1c2hvcnRMaXN0KCdmZWF0dXJlSW5kZXgnLCBkZWZhdWx0TGFuZ1N5cy5mZWF0dXJlSW5kZXhlcykpKX1cbiAgICAgICAgICAgICAgICAgICAgXS5jb25jYXQocmVjb3JkTGlzdCgnbGFuZ1N5cycsIHNjcmlwdC5sYW5nU3lzUmVjb3JkcywgZnVuY3Rpb24obGFuZ1N5c1JlY29yZCwgaSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGxhbmdTeXMgPSBsYW5nU3lzUmVjb3JkLmxhbmdTeXM7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtuYW1lOiAnbGFuZ1N5c1RhZycgKyBpLCB0eXBlOiAnVEFHJywgdmFsdWU6IGxhbmdTeXNSZWNvcmQudGFnfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7bmFtZTogJ2xhbmdTeXMnICsgaSwgdHlwZTogJ1RBQkxFJywgdmFsdWU6IG5ldyBUYWJsZSgnbGFuZ1N5cycsIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge25hbWU6ICdsb29rdXBPcmRlcicsIHR5cGU6ICdVU0hPUlQnLCB2YWx1ZTogMH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtuYW1lOiAncmVxRmVhdHVyZUluZGV4JywgdHlwZTogJ1VTSE9SVCcsIHZhbHVlOiBsYW5nU3lzLnJlcUZlYXR1cmVJbmRleH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXS5jb25jYXQodXNob3J0TGlzdCgnZmVhdHVyZUluZGV4JywgbGFuZ1N5cy5mZWF0dXJlSW5kZXhlcykpKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgICAgICAgIH0pKSl9XG4gICAgICAgICAgICBdO1xuICAgICAgICB9KVxuICAgICk7XG59XG5TY3JpcHRMaXN0LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoVGFibGUucHJvdG90eXBlKTtcblNjcmlwdExpc3QucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gU2NyaXB0TGlzdDtcblxuLyoqXG4gKiBAZXhwb3J0cyBvcGVudHlwZS5GZWF0dXJlTGlzdFxuICogQGNsYXNzXG4gKiBAcGFyYW0ge29wZW50eXBlLlRhYmxlfVxuICogQGNvbnN0cnVjdG9yXG4gKiBAZXh0ZW5kcyBvcGVudHlwZS5UYWJsZVxuICovXG5mdW5jdGlvbiBGZWF0dXJlTGlzdChmZWF0dXJlTGlzdFRhYmxlKSB7XG4gICAgVGFibGUuY2FsbCh0aGlzLCAnZmVhdHVyZUxpc3RUYWJsZScsXG4gICAgICAgIHJlY29yZExpc3QoJ2ZlYXR1cmVSZWNvcmQnLCBmZWF0dXJlTGlzdFRhYmxlLCBmdW5jdGlvbihmZWF0dXJlUmVjb3JkLCBpKSB7XG4gICAgICAgICAgICB2YXIgZmVhdHVyZSA9IGZlYXR1cmVSZWNvcmQuZmVhdHVyZTtcbiAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAge25hbWU6ICdmZWF0dXJlVGFnJyArIGksIHR5cGU6ICdUQUcnLCB2YWx1ZTogZmVhdHVyZVJlY29yZC50YWd9LFxuICAgICAgICAgICAgICAgIHtuYW1lOiAnZmVhdHVyZScgKyBpLCB0eXBlOiAnVEFCTEUnLCB2YWx1ZTogbmV3IFRhYmxlKCdmZWF0dXJlVGFibGUnLCBbXG4gICAgICAgICAgICAgICAgICAgIHtuYW1lOiAnZmVhdHVyZVBhcmFtcycsIHR5cGU6ICdVU0hPUlQnLCB2YWx1ZTogZmVhdHVyZS5mZWF0dXJlUGFyYW1zfSxcbiAgICAgICAgICAgICAgICAgICAgXS5jb25jYXQodXNob3J0TGlzdCgnbG9va3VwTGlzdEluZGV4JywgZmVhdHVyZS5sb29rdXBMaXN0SW5kZXhlcykpKX1cbiAgICAgICAgICAgIF07XG4gICAgICAgIH0pXG4gICAgKTtcbn1cbkZlYXR1cmVMaXN0LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoVGFibGUucHJvdG90eXBlKTtcbkZlYXR1cmVMaXN0LnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEZlYXR1cmVMaXN0O1xuXG4vKipcbiAqIEBleHBvcnRzIG9wZW50eXBlLkxvb2t1cExpc3RcbiAqIEBjbGFzc1xuICogQHBhcmFtIHtvcGVudHlwZS5UYWJsZX1cbiAqIEBwYXJhbSB7T2JqZWN0fVxuICogQGNvbnN0cnVjdG9yXG4gKiBAZXh0ZW5kcyBvcGVudHlwZS5UYWJsZVxuICovXG5mdW5jdGlvbiBMb29rdXBMaXN0KGxvb2t1cExpc3RUYWJsZSwgc3VidGFibGVNYWtlcnMpIHtcbiAgICBUYWJsZS5jYWxsKHRoaXMsICdsb29rdXBMaXN0VGFibGUnLCB0YWJsZUxpc3QoJ2xvb2t1cCcsIGxvb2t1cExpc3RUYWJsZSwgZnVuY3Rpb24obG9va3VwVGFibGUpIHtcbiAgICAgICAgdmFyIHN1YnRhYmxlQ2FsbGJhY2sgPSBzdWJ0YWJsZU1ha2Vyc1tsb29rdXBUYWJsZS5sb29rdXBUeXBlXTtcbiAgICAgICAgY2hlY2suYXNzZXJ0KCEhc3VidGFibGVDYWxsYmFjaywgJ1VuYWJsZSB0byB3cml0ZSBHU1VCIGxvb2t1cCB0eXBlICcgKyBsb29rdXBUYWJsZS5sb29rdXBUeXBlICsgJyB0YWJsZXMuJyk7XG4gICAgICAgIHJldHVybiBuZXcgVGFibGUoJ2xvb2t1cFRhYmxlJywgW1xuICAgICAgICAgICAge25hbWU6ICdsb29rdXBUeXBlJywgdHlwZTogJ1VTSE9SVCcsIHZhbHVlOiBsb29rdXBUYWJsZS5sb29rdXBUeXBlfSxcbiAgICAgICAgICAgIHtuYW1lOiAnbG9va3VwRmxhZycsIHR5cGU6ICdVU0hPUlQnLCB2YWx1ZTogbG9va3VwVGFibGUubG9va3VwRmxhZ31cbiAgICAgICAgXS5jb25jYXQodGFibGVMaXN0KCdzdWJ0YWJsZScsIGxvb2t1cFRhYmxlLnN1YnRhYmxlcywgc3VidGFibGVDYWxsYmFjaykpKTtcbiAgICB9KSk7XG59XG5Mb29rdXBMaXN0LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoVGFibGUucHJvdG90eXBlKTtcbkxvb2t1cExpc3QucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gTG9va3VwTGlzdDtcblxuLy8gUmVjb3JkID0gc2FtZSBhcyBUYWJsZSwgYnV0IGlubGluZWQgKGEgVGFibGUgaGFzIGFuIG9mZnNldCBhbmQgaXRzIGRhdGEgaXMgZnVydGhlciBpbiB0aGUgc3RyZWFtKVxuLy8gRG9uJ3QgdXNlIG9mZnNldHMgaW5zaWRlIFJlY29yZHMgKHByb2JhYmxlIGJ1ZyksIG9ubHkgaW4gVGFibGVzLlxuZXhwb3J0cy5SZWNvcmQgPSBleHBvcnRzLlRhYmxlID0gVGFibGU7XG5leHBvcnRzLkNvdmVyYWdlID0gQ292ZXJhZ2U7XG5leHBvcnRzLlNjcmlwdExpc3QgPSBTY3JpcHRMaXN0O1xuZXhwb3J0cy5GZWF0dXJlTGlzdCA9IEZlYXR1cmVMaXN0O1xuZXhwb3J0cy5Mb29rdXBMaXN0ID0gTG9va3VwTGlzdDtcblxuZXhwb3J0cy51c2hvcnRMaXN0ID0gdXNob3J0TGlzdDtcbmV4cG9ydHMudGFibGVMaXN0ID0gdGFibGVMaXN0O1xuZXhwb3J0cy5yZWNvcmRMaXN0ID0gcmVjb3JkTGlzdDtcbiIsIi8vIFRoZSBgQ0ZGYCB0YWJsZSBjb250YWlucyB0aGUgZ2x5cGggb3V0bGluZXMgaW4gUG9zdFNjcmlwdCBmb3JtYXQuXG4vLyBodHRwczovL3d3dy5taWNyb3NvZnQuY29tL3R5cG9ncmFwaHkvT1RTUEVDL2NmZi5odG1cbi8vIGh0dHA6Ly9kb3dubG9hZC5taWNyb3NvZnQuY29tL2Rvd25sb2FkLzgvMC8xLzgwMWExOTFjLTAyOWQtNGFmMy05NjQyLTU1NWY2ZmU1MTRlZS9jZmYucGRmXG4vLyBodHRwOi8vZG93bmxvYWQubWljcm9zb2Z0LmNvbS9kb3dubG9hZC84LzAvMS84MDFhMTkxYy0wMjlkLTRhZjMtOTY0Mi01NTVmNmZlNTE0ZWUvdHlwZTIucGRmXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIGVuY29kaW5nID0gcmVxdWlyZSgnLi4vZW5jb2RpbmcnKTtcbnZhciBnbHlwaHNldCA9IHJlcXVpcmUoJy4uL2dseXBoc2V0Jyk7XG52YXIgcGFyc2UgPSByZXF1aXJlKCcuLi9wYXJzZScpO1xudmFyIHBhdGggPSByZXF1aXJlKCcuLi9wYXRoJyk7XG52YXIgdGFibGUgPSByZXF1aXJlKCcuLi90YWJsZScpO1xuXG4vLyBDdXN0b20gZXF1YWxzIGZ1bmN0aW9uIHRoYXQgY2FuIGFsc28gY2hlY2sgbGlzdHMuXG5mdW5jdGlvbiBlcXVhbHMoYSwgYikge1xuICAgIGlmIChhID09PSBiKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShhKSAmJiBBcnJheS5pc0FycmF5KGIpKSB7XG4gICAgICAgIGlmIChhLmxlbmd0aCAhPT0gYi5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYS5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICAgICAgaWYgKCFlcXVhbHMoYVtpXSwgYltpXSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxufVxuXG4vLyBQYXJzZSBhIGBDRkZgIElOREVYIGFycmF5LlxuLy8gQW4gaW5kZXggYXJyYXkgY29uc2lzdHMgb2YgYSBsaXN0IG9mIG9mZnNldHMsIHRoZW4gYSBsaXN0IG9mIG9iamVjdHMgYXQgdGhvc2Ugb2Zmc2V0cy5cbmZ1bmN0aW9uIHBhcnNlQ0ZGSW5kZXgoZGF0YSwgc3RhcnQsIGNvbnZlcnNpb25Gbikge1xuICAgIC8vdmFyIGksIG9iamVjdE9mZnNldCwgZW5kT2Zmc2V0O1xuICAgIHZhciBvZmZzZXRzID0gW107XG4gICAgdmFyIG9iamVjdHMgPSBbXTtcbiAgICB2YXIgY291bnQgPSBwYXJzZS5nZXRDYXJkMTYoZGF0YSwgc3RhcnQpO1xuICAgIHZhciBpO1xuICAgIHZhciBvYmplY3RPZmZzZXQ7XG4gICAgdmFyIGVuZE9mZnNldDtcbiAgICBpZiAoY291bnQgIT09IDApIHtcbiAgICAgICAgdmFyIG9mZnNldFNpemUgPSBwYXJzZS5nZXRCeXRlKGRhdGEsIHN0YXJ0ICsgMik7XG4gICAgICAgIG9iamVjdE9mZnNldCA9IHN0YXJ0ICsgKChjb3VudCArIDEpICogb2Zmc2V0U2l6ZSkgKyAyO1xuICAgICAgICB2YXIgcG9zID0gc3RhcnQgKyAzO1xuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgY291bnQgKyAxOyBpICs9IDEpIHtcbiAgICAgICAgICAgIG9mZnNldHMucHVzaChwYXJzZS5nZXRPZmZzZXQoZGF0YSwgcG9zLCBvZmZzZXRTaXplKSk7XG4gICAgICAgICAgICBwb3MgKz0gb2Zmc2V0U2l6ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRoZSB0b3RhbCBzaXplIG9mIHRoZSBpbmRleCBhcnJheSBpcyA0IGhlYWRlciBieXRlcyArIHRoZSB2YWx1ZSBvZiB0aGUgbGFzdCBvZmZzZXQuXG4gICAgICAgIGVuZE9mZnNldCA9IG9iamVjdE9mZnNldCArIG9mZnNldHNbY291bnRdO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGVuZE9mZnNldCA9IHN0YXJ0ICsgMjtcbiAgICB9XG5cbiAgICBmb3IgKGkgPSAwOyBpIDwgb2Zmc2V0cy5sZW5ndGggLSAxOyBpICs9IDEpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gcGFyc2UuZ2V0Qnl0ZXMoZGF0YSwgb2JqZWN0T2Zmc2V0ICsgb2Zmc2V0c1tpXSwgb2JqZWN0T2Zmc2V0ICsgb2Zmc2V0c1tpICsgMV0pO1xuICAgICAgICBpZiAoY29udmVyc2lvbkZuKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IGNvbnZlcnNpb25Gbih2YWx1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICBvYmplY3RzLnB1c2godmFsdWUpO1xuICAgIH1cblxuICAgIHJldHVybiB7b2JqZWN0czogb2JqZWN0cywgc3RhcnRPZmZzZXQ6IHN0YXJ0LCBlbmRPZmZzZXQ6IGVuZE9mZnNldH07XG59XG5cbi8vIFBhcnNlIGEgYENGRmAgRElDVCByZWFsIHZhbHVlLlxuZnVuY3Rpb24gcGFyc2VGbG9hdE9wZXJhbmQocGFyc2VyKSB7XG4gICAgdmFyIHMgPSAnJztcbiAgICB2YXIgZW9mID0gMTU7XG4gICAgdmFyIGxvb2t1cCA9IFsnMCcsICcxJywgJzInLCAnMycsICc0JywgJzUnLCAnNicsICc3JywgJzgnLCAnOScsICcuJywgJ0UnLCAnRS0nLCBudWxsLCAnLSddO1xuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgIHZhciBiID0gcGFyc2VyLnBhcnNlQnl0ZSgpO1xuICAgICAgICB2YXIgbjEgPSBiID4+IDQ7XG4gICAgICAgIHZhciBuMiA9IGIgJiAxNTtcblxuICAgICAgICBpZiAobjEgPT09IGVvZikge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBzICs9IGxvb2t1cFtuMV07XG5cbiAgICAgICAgaWYgKG4yID09PSBlb2YpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgcyArPSBsb29rdXBbbjJdO1xuICAgIH1cblxuICAgIHJldHVybiBwYXJzZUZsb2F0KHMpO1xufVxuXG4vLyBQYXJzZSBhIGBDRkZgIERJQ1Qgb3BlcmFuZC5cbmZ1bmN0aW9uIHBhcnNlT3BlcmFuZChwYXJzZXIsIGIwKSB7XG4gICAgdmFyIGIxO1xuICAgIHZhciBiMjtcbiAgICB2YXIgYjM7XG4gICAgdmFyIGI0O1xuICAgIGlmIChiMCA9PT0gMjgpIHtcbiAgICAgICAgYjEgPSBwYXJzZXIucGFyc2VCeXRlKCk7XG4gICAgICAgIGIyID0gcGFyc2VyLnBhcnNlQnl0ZSgpO1xuICAgICAgICByZXR1cm4gYjEgPDwgOCB8IGIyO1xuICAgIH1cblxuICAgIGlmIChiMCA9PT0gMjkpIHtcbiAgICAgICAgYjEgPSBwYXJzZXIucGFyc2VCeXRlKCk7XG4gICAgICAgIGIyID0gcGFyc2VyLnBhcnNlQnl0ZSgpO1xuICAgICAgICBiMyA9IHBhcnNlci5wYXJzZUJ5dGUoKTtcbiAgICAgICAgYjQgPSBwYXJzZXIucGFyc2VCeXRlKCk7XG4gICAgICAgIHJldHVybiBiMSA8PCAyNCB8IGIyIDw8IDE2IHwgYjMgPDwgOCB8IGI0O1xuICAgIH1cblxuICAgIGlmIChiMCA9PT0gMzApIHtcbiAgICAgICAgcmV0dXJuIHBhcnNlRmxvYXRPcGVyYW5kKHBhcnNlcik7XG4gICAgfVxuXG4gICAgaWYgKGIwID49IDMyICYmIGIwIDw9IDI0Nikge1xuICAgICAgICByZXR1cm4gYjAgLSAxMzk7XG4gICAgfVxuXG4gICAgaWYgKGIwID49IDI0NyAmJiBiMCA8PSAyNTApIHtcbiAgICAgICAgYjEgPSBwYXJzZXIucGFyc2VCeXRlKCk7XG4gICAgICAgIHJldHVybiAoYjAgLSAyNDcpICogMjU2ICsgYjEgKyAxMDg7XG4gICAgfVxuXG4gICAgaWYgKGIwID49IDI1MSAmJiBiMCA8PSAyNTQpIHtcbiAgICAgICAgYjEgPSBwYXJzZXIucGFyc2VCeXRlKCk7XG4gICAgICAgIHJldHVybiAtKGIwIC0gMjUxKSAqIDI1NiAtIGIxIC0gMTA4O1xuICAgIH1cblxuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBiMCAnICsgYjApO1xufVxuXG4vLyBDb252ZXJ0IHRoZSBlbnRyaWVzIHJldHVybmVkIGJ5IGBwYXJzZURpY3RgIHRvIGEgcHJvcGVyIGRpY3Rpb25hcnkuXG4vLyBJZiBhIHZhbHVlIGlzIGEgbGlzdCBvZiBvbmUsIGl0IGlzIHVucGFja2VkLlxuZnVuY3Rpb24gZW50cmllc1RvT2JqZWN0KGVudHJpZXMpIHtcbiAgICB2YXIgbyA9IHt9O1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZW50cmllcy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICB2YXIga2V5ID0gZW50cmllc1tpXVswXTtcbiAgICAgICAgdmFyIHZhbHVlcyA9IGVudHJpZXNbaV1bMV07XG4gICAgICAgIHZhciB2YWx1ZTtcbiAgICAgICAgaWYgKHZhbHVlcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIHZhbHVlID0gdmFsdWVzWzBdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZXM7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoby5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ09iamVjdCAnICsgbyArICcgYWxyZWFkeSBoYXMga2V5ICcgKyBrZXkpO1xuICAgICAgICB9XG5cbiAgICAgICAgb1trZXldID0gdmFsdWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIG87XG59XG5cbi8vIFBhcnNlIGEgYENGRmAgRElDVCBvYmplY3QuXG4vLyBBIGRpY3Rpb25hcnkgY29udGFpbnMga2V5LXZhbHVlIHBhaXJzIGluIGEgY29tcGFjdCB0b2tlbml6ZWQgZm9ybWF0LlxuZnVuY3Rpb24gcGFyc2VDRkZEaWN0KGRhdGEsIHN0YXJ0LCBzaXplKSB7XG4gICAgc3RhcnQgPSBzdGFydCAhPT0gdW5kZWZpbmVkID8gc3RhcnQgOiAwO1xuICAgIHZhciBwYXJzZXIgPSBuZXcgcGFyc2UuUGFyc2VyKGRhdGEsIHN0YXJ0KTtcbiAgICB2YXIgZW50cmllcyA9IFtdO1xuICAgIHZhciBvcGVyYW5kcyA9IFtdO1xuICAgIHNpemUgPSBzaXplICE9PSB1bmRlZmluZWQgPyBzaXplIDogZGF0YS5sZW5ndGg7XG5cbiAgICB3aGlsZSAocGFyc2VyLnJlbGF0aXZlT2Zmc2V0IDwgc2l6ZSkge1xuICAgICAgICB2YXIgb3AgPSBwYXJzZXIucGFyc2VCeXRlKCk7XG5cbiAgICAgICAgLy8gVGhlIGZpcnN0IGJ5dGUgZm9yIGVhY2ggZGljdCBpdGVtIGRpc3Rpbmd1aXNoZXMgYmV0d2VlbiBvcGVyYXRvciAoa2V5KSBhbmQgb3BlcmFuZCAodmFsdWUpLlxuICAgICAgICAvLyBWYWx1ZXMgPD0gMjEgYXJlIG9wZXJhdG9ycy5cbiAgICAgICAgaWYgKG9wIDw9IDIxKSB7XG4gICAgICAgICAgICAvLyBUd28tYnl0ZSBvcGVyYXRvcnMgaGF2ZSBhbiBpbml0aWFsIGVzY2FwZSBieXRlIG9mIDEyLlxuICAgICAgICAgICAgaWYgKG9wID09PSAxMikge1xuICAgICAgICAgICAgICAgIG9wID0gMTIwMCArIHBhcnNlci5wYXJzZUJ5dGUoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZW50cmllcy5wdXNoKFtvcCwgb3BlcmFuZHNdKTtcbiAgICAgICAgICAgIG9wZXJhbmRzID0gW107XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBTaW5jZSB0aGUgb3BlcmFuZHMgKHZhbHVlcykgY29tZSBiZWZvcmUgdGhlIG9wZXJhdG9ycyAoa2V5cyksIHdlIHN0b3JlIGFsbCBvcGVyYW5kcyBpbiBhIGxpc3RcbiAgICAgICAgICAgIC8vIHVudGlsIHdlIGVuY291bnRlciBhbiBvcGVyYXRvci5cbiAgICAgICAgICAgIG9wZXJhbmRzLnB1c2gocGFyc2VPcGVyYW5kKHBhcnNlciwgb3ApKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBlbnRyaWVzVG9PYmplY3QoZW50cmllcyk7XG59XG5cbi8vIEdpdmVuIGEgU3RyaW5nIEluZGV4IChTSUQpLCByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSBzdHJpbmcuXG4vLyBTdHJpbmdzIGJlbG93IGluZGV4IDM5MiBhcmUgc3RhbmRhcmQgQ0ZGIHN0cmluZ3MgYW5kIGFyZSBub3QgZW5jb2RlZCBpbiB0aGUgZm9udC5cbmZ1bmN0aW9uIGdldENGRlN0cmluZyhzdHJpbmdzLCBpbmRleCkge1xuICAgIGlmIChpbmRleCA8PSAzOTApIHtcbiAgICAgICAgaW5kZXggPSBlbmNvZGluZy5jZmZTdGFuZGFyZFN0cmluZ3NbaW5kZXhdO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGluZGV4ID0gc3RyaW5nc1tpbmRleCAtIDM5MV07XG4gICAgfVxuXG4gICAgcmV0dXJuIGluZGV4O1xufVxuXG4vLyBJbnRlcnByZXQgYSBkaWN0aW9uYXJ5IGFuZCByZXR1cm4gYSBuZXcgZGljdGlvbmFyeSB3aXRoIHJlYWRhYmxlIGtleXMgYW5kIHZhbHVlcyBmb3IgbWlzc2luZyBlbnRyaWVzLlxuLy8gVGhpcyBmdW5jdGlvbiB0YWtlcyBgbWV0YWAgd2hpY2ggaXMgYSBsaXN0IG9mIG9iamVjdHMgY29udGFpbmluZyBgb3BlcmFuZGAsIGBuYW1lYCBhbmQgYGRlZmF1bHRgLlxuZnVuY3Rpb24gaW50ZXJwcmV0RGljdChkaWN0LCBtZXRhLCBzdHJpbmdzKSB7XG4gICAgdmFyIG5ld0RpY3QgPSB7fTtcblxuICAgIC8vIEJlY2F1c2Ugd2UgYWxzbyB3YW50IHRvIGluY2x1ZGUgbWlzc2luZyB2YWx1ZXMsIHdlIHN0YXJ0IG91dCBmcm9tIHRoZSBtZXRhIGxpc3RcbiAgICAvLyBhbmQgbG9va3VwIHZhbHVlcyBpbiB0aGUgZGljdC5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1ldGEubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgICAgdmFyIG0gPSBtZXRhW2ldO1xuICAgICAgICB2YXIgdmFsdWUgPSBkaWN0W20ub3BdO1xuICAgICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdmFsdWUgPSBtLnZhbHVlICE9PSB1bmRlZmluZWQgPyBtLnZhbHVlIDogbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChtLnR5cGUgPT09ICdTSUQnKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IGdldENGRlN0cmluZyhzdHJpbmdzLCB2YWx1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICBuZXdEaWN0W20ubmFtZV0gPSB2YWx1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3RGljdDtcbn1cblxuLy8gUGFyc2UgdGhlIENGRiBoZWFkZXIuXG5mdW5jdGlvbiBwYXJzZUNGRkhlYWRlcihkYXRhLCBzdGFydCkge1xuICAgIHZhciBoZWFkZXIgPSB7fTtcbiAgICBoZWFkZXIuZm9ybWF0TWFqb3IgPSBwYXJzZS5nZXRDYXJkOChkYXRhLCBzdGFydCk7XG4gICAgaGVhZGVyLmZvcm1hdE1pbm9yID0gcGFyc2UuZ2V0Q2FyZDgoZGF0YSwgc3RhcnQgKyAxKTtcbiAgICBoZWFkZXIuc2l6ZSA9IHBhcnNlLmdldENhcmQ4KGRhdGEsIHN0YXJ0ICsgMik7XG4gICAgaGVhZGVyLm9mZnNldFNpemUgPSBwYXJzZS5nZXRDYXJkOChkYXRhLCBzdGFydCArIDMpO1xuICAgIGhlYWRlci5zdGFydE9mZnNldCA9IHN0YXJ0O1xuICAgIGhlYWRlci5lbmRPZmZzZXQgPSBzdGFydCArIDQ7XG4gICAgcmV0dXJuIGhlYWRlcjtcbn1cblxudmFyIFRPUF9ESUNUX01FVEEgPSBbXG4gICAge25hbWU6ICd2ZXJzaW9uJywgb3A6IDAsIHR5cGU6ICdTSUQnfSxcbiAgICB7bmFtZTogJ25vdGljZScsIG9wOiAxLCB0eXBlOiAnU0lEJ30sXG4gICAge25hbWU6ICdjb3B5cmlnaHQnLCBvcDogMTIwMCwgdHlwZTogJ1NJRCd9LFxuICAgIHtuYW1lOiAnZnVsbE5hbWUnLCBvcDogMiwgdHlwZTogJ1NJRCd9LFxuICAgIHtuYW1lOiAnZmFtaWx5TmFtZScsIG9wOiAzLCB0eXBlOiAnU0lEJ30sXG4gICAge25hbWU6ICd3ZWlnaHQnLCBvcDogNCwgdHlwZTogJ1NJRCd9LFxuICAgIHtuYW1lOiAnaXNGaXhlZFBpdGNoJywgb3A6IDEyMDEsIHR5cGU6ICdudW1iZXInLCB2YWx1ZTogMH0sXG4gICAge25hbWU6ICdpdGFsaWNBbmdsZScsIG9wOiAxMjAyLCB0eXBlOiAnbnVtYmVyJywgdmFsdWU6IDB9LFxuICAgIHtuYW1lOiAndW5kZXJsaW5lUG9zaXRpb24nLCBvcDogMTIwMywgdHlwZTogJ251bWJlcicsIHZhbHVlOiAtMTAwfSxcbiAgICB7bmFtZTogJ3VuZGVybGluZVRoaWNrbmVzcycsIG9wOiAxMjA0LCB0eXBlOiAnbnVtYmVyJywgdmFsdWU6IDUwfSxcbiAgICB7bmFtZTogJ3BhaW50VHlwZScsIG9wOiAxMjA1LCB0eXBlOiAnbnVtYmVyJywgdmFsdWU6IDB9LFxuICAgIHtuYW1lOiAnY2hhcnN0cmluZ1R5cGUnLCBvcDogMTIwNiwgdHlwZTogJ251bWJlcicsIHZhbHVlOiAyfSxcbiAgICB7bmFtZTogJ2ZvbnRNYXRyaXgnLCBvcDogMTIwNywgdHlwZTogWydyZWFsJywgJ3JlYWwnLCAncmVhbCcsICdyZWFsJywgJ3JlYWwnLCAncmVhbCddLCB2YWx1ZTogWzAuMDAxLCAwLCAwLCAwLjAwMSwgMCwgMF19LFxuICAgIHtuYW1lOiAndW5pcXVlSWQnLCBvcDogMTMsIHR5cGU6ICdudW1iZXInfSxcbiAgICB7bmFtZTogJ2ZvbnRCQm94Jywgb3A6IDUsIHR5cGU6IFsnbnVtYmVyJywgJ251bWJlcicsICdudW1iZXInLCAnbnVtYmVyJ10sIHZhbHVlOiBbMCwgMCwgMCwgMF19LFxuICAgIHtuYW1lOiAnc3Ryb2tlV2lkdGgnLCBvcDogMTIwOCwgdHlwZTogJ251bWJlcicsIHZhbHVlOiAwfSxcbiAgICB7bmFtZTogJ3h1aWQnLCBvcDogMTQsIHR5cGU6IFtdLCB2YWx1ZTogbnVsbH0sXG4gICAge25hbWU6ICdjaGFyc2V0Jywgb3A6IDE1LCB0eXBlOiAnb2Zmc2V0JywgdmFsdWU6IDB9LFxuICAgIHtuYW1lOiAnZW5jb2RpbmcnLCBvcDogMTYsIHR5cGU6ICdvZmZzZXQnLCB2YWx1ZTogMH0sXG4gICAge25hbWU6ICdjaGFyU3RyaW5ncycsIG9wOiAxNywgdHlwZTogJ29mZnNldCcsIHZhbHVlOiAwfSxcbiAgICB7bmFtZTogJ3ByaXZhdGUnLCBvcDogMTgsIHR5cGU6IFsnbnVtYmVyJywgJ29mZnNldCddLCB2YWx1ZTogWzAsIDBdfVxuXTtcblxudmFyIFBSSVZBVEVfRElDVF9NRVRBID0gW1xuICAgIHtuYW1lOiAnc3VicnMnLCBvcDogMTksIHR5cGU6ICdvZmZzZXQnLCB2YWx1ZTogMH0sXG4gICAge25hbWU6ICdkZWZhdWx0V2lkdGhYJywgb3A6IDIwLCB0eXBlOiAnbnVtYmVyJywgdmFsdWU6IDB9LFxuICAgIHtuYW1lOiAnbm9taW5hbFdpZHRoWCcsIG9wOiAyMSwgdHlwZTogJ251bWJlcicsIHZhbHVlOiAwfVxuXTtcblxuLy8gUGFyc2UgdGhlIENGRiB0b3AgZGljdGlvbmFyeS4gQSBDRkYgdGFibGUgY2FuIGNvbnRhaW4gbXVsdGlwbGUgZm9udHMsIGVhY2ggd2l0aCB0aGVpciBvd24gdG9wIGRpY3Rpb25hcnkuXG4vLyBUaGUgdG9wIGRpY3Rpb25hcnkgY29udGFpbnMgdGhlIGVzc2VudGlhbCBtZXRhZGF0YSBmb3IgdGhlIGZvbnQsIHRvZ2V0aGVyIHdpdGggdGhlIHByaXZhdGUgZGljdGlvbmFyeS5cbmZ1bmN0aW9uIHBhcnNlQ0ZGVG9wRGljdChkYXRhLCBzdHJpbmdzKSB7XG4gICAgdmFyIGRpY3QgPSBwYXJzZUNGRkRpY3QoZGF0YSwgMCwgZGF0YS5ieXRlTGVuZ3RoKTtcbiAgICByZXR1cm4gaW50ZXJwcmV0RGljdChkaWN0LCBUT1BfRElDVF9NRVRBLCBzdHJpbmdzKTtcbn1cblxuLy8gUGFyc2UgdGhlIENGRiBwcml2YXRlIGRpY3Rpb25hcnkuIFdlIGRvbid0IGZ1bGx5IHBhcnNlIG91dCBhbGwgdGhlIHZhbHVlcywgb25seSB0aGUgb25lcyB3ZSBuZWVkLlxuZnVuY3Rpb24gcGFyc2VDRkZQcml2YXRlRGljdChkYXRhLCBzdGFydCwgc2l6ZSwgc3RyaW5ncykge1xuICAgIHZhciBkaWN0ID0gcGFyc2VDRkZEaWN0KGRhdGEsIHN0YXJ0LCBzaXplKTtcbiAgICByZXR1cm4gaW50ZXJwcmV0RGljdChkaWN0LCBQUklWQVRFX0RJQ1RfTUVUQSwgc3RyaW5ncyk7XG59XG5cbi8vIFBhcnNlIHRoZSBDRkYgY2hhcnNldCB0YWJsZSwgd2hpY2ggY29udGFpbnMgaW50ZXJuYWwgbmFtZXMgZm9yIGFsbCB0aGUgZ2x5cGhzLlxuLy8gVGhpcyBmdW5jdGlvbiB3aWxsIHJldHVybiBhIGxpc3Qgb2YgZ2x5cGggbmFtZXMuXG4vLyBTZWUgQWRvYmUgVE4gIzUxNzYgY2hhcHRlciAxMywgXCJDaGFyc2V0c1wiLlxuZnVuY3Rpb24gcGFyc2VDRkZDaGFyc2V0KGRhdGEsIHN0YXJ0LCBuR2x5cGhzLCBzdHJpbmdzKSB7XG4gICAgdmFyIGk7XG4gICAgdmFyIHNpZDtcbiAgICB2YXIgY291bnQ7XG4gICAgdmFyIHBhcnNlciA9IG5ldyBwYXJzZS5QYXJzZXIoZGF0YSwgc3RhcnQpO1xuXG4gICAgLy8gVGhlIC5ub3RkZWYgZ2x5cGggaXMgbm90IGluY2x1ZGVkLCBzbyBzdWJ0cmFjdCAxLlxuICAgIG5HbHlwaHMgLT0gMTtcbiAgICB2YXIgY2hhcnNldCA9IFsnLm5vdGRlZiddO1xuXG4gICAgdmFyIGZvcm1hdCA9IHBhcnNlci5wYXJzZUNhcmQ4KCk7XG4gICAgaWYgKGZvcm1hdCA9PT0gMCkge1xuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbkdseXBoczsgaSArPSAxKSB7XG4gICAgICAgICAgICBzaWQgPSBwYXJzZXIucGFyc2VTSUQoKTtcbiAgICAgICAgICAgIGNoYXJzZXQucHVzaChnZXRDRkZTdHJpbmcoc3RyaW5ncywgc2lkKSk7XG4gICAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGZvcm1hdCA9PT0gMSkge1xuICAgICAgICB3aGlsZSAoY2hhcnNldC5sZW5ndGggPD0gbkdseXBocykge1xuICAgICAgICAgICAgc2lkID0gcGFyc2VyLnBhcnNlU0lEKCk7XG4gICAgICAgICAgICBjb3VudCA9IHBhcnNlci5wYXJzZUNhcmQ4KCk7XG4gICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDw9IGNvdW50OyBpICs9IDEpIHtcbiAgICAgICAgICAgICAgICBjaGFyc2V0LnB1c2goZ2V0Q0ZGU3RyaW5nKHN0cmluZ3MsIHNpZCkpO1xuICAgICAgICAgICAgICAgIHNpZCArPSAxO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSBlbHNlIGlmIChmb3JtYXQgPT09IDIpIHtcbiAgICAgICAgd2hpbGUgKGNoYXJzZXQubGVuZ3RoIDw9IG5HbHlwaHMpIHtcbiAgICAgICAgICAgIHNpZCA9IHBhcnNlci5wYXJzZVNJRCgpO1xuICAgICAgICAgICAgY291bnQgPSBwYXJzZXIucGFyc2VDYXJkMTYoKTtcbiAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPD0gY291bnQ7IGkgKz0gMSkge1xuICAgICAgICAgICAgICAgIGNoYXJzZXQucHVzaChnZXRDRkZTdHJpbmcoc3RyaW5ncywgc2lkKSk7XG4gICAgICAgICAgICAgICAgc2lkICs9IDE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gY2hhcnNldCBmb3JtYXQgJyArIGZvcm1hdCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNoYXJzZXQ7XG59XG5cbi8vIFBhcnNlIHRoZSBDRkYgZW5jb2RpbmcgZGF0YS4gT25seSBvbmUgZW5jb2RpbmcgY2FuIGJlIHNwZWNpZmllZCBwZXIgZm9udC5cbi8vIFNlZSBBZG9iZSBUTiAjNTE3NiBjaGFwdGVyIDEyLCBcIkVuY29kaW5nc1wiLlxuZnVuY3Rpb24gcGFyc2VDRkZFbmNvZGluZyhkYXRhLCBzdGFydCwgY2hhcnNldCkge1xuICAgIHZhciBpO1xuICAgIHZhciBjb2RlO1xuICAgIHZhciBlbmMgPSB7fTtcbiAgICB2YXIgcGFyc2VyID0gbmV3IHBhcnNlLlBhcnNlcihkYXRhLCBzdGFydCk7XG4gICAgdmFyIGZvcm1hdCA9IHBhcnNlci5wYXJzZUNhcmQ4KCk7XG4gICAgaWYgKGZvcm1hdCA9PT0gMCkge1xuICAgICAgICB2YXIgbkNvZGVzID0gcGFyc2VyLnBhcnNlQ2FyZDgoKTtcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IG5Db2RlczsgaSArPSAxKSB7XG4gICAgICAgICAgICBjb2RlID0gcGFyc2VyLnBhcnNlQ2FyZDgoKTtcbiAgICAgICAgICAgIGVuY1tjb2RlXSA9IGk7XG4gICAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGZvcm1hdCA9PT0gMSkge1xuICAgICAgICB2YXIgblJhbmdlcyA9IHBhcnNlci5wYXJzZUNhcmQ4KCk7XG4gICAgICAgIGNvZGUgPSAxO1xuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgblJhbmdlczsgaSArPSAxKSB7XG4gICAgICAgICAgICB2YXIgZmlyc3QgPSBwYXJzZXIucGFyc2VDYXJkOCgpO1xuICAgICAgICAgICAgdmFyIG5MZWZ0ID0gcGFyc2VyLnBhcnNlQ2FyZDgoKTtcbiAgICAgICAgICAgIGZvciAodmFyIGogPSBmaXJzdDsgaiA8PSBmaXJzdCArIG5MZWZ0OyBqICs9IDEpIHtcbiAgICAgICAgICAgICAgICBlbmNbal0gPSBjb2RlO1xuICAgICAgICAgICAgICAgIGNvZGUgKz0gMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignVW5rbm93biBlbmNvZGluZyBmb3JtYXQgJyArIGZvcm1hdCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBlbmNvZGluZy5DZmZFbmNvZGluZyhlbmMsIGNoYXJzZXQpO1xufVxuXG4vLyBUYWtlIGluIGNoYXJzdHJpbmcgY29kZSBhbmQgcmV0dXJuIGEgR2x5cGggb2JqZWN0LlxuLy8gVGhlIGVuY29kaW5nIGlzIGRlc2NyaWJlZCBpbiB0aGUgVHlwZSAyIENoYXJzdHJpbmcgRm9ybWF0XG4vLyBodHRwczovL3d3dy5taWNyb3NvZnQuY29tL3R5cG9ncmFwaHkvT1RTUEVDL2NoYXJzdHIyLmh0bVxuZnVuY3Rpb24gcGFyc2VDRkZDaGFyc3RyaW5nKGZvbnQsIGdseXBoLCBjb2RlKSB7XG4gICAgdmFyIGMxeDtcbiAgICB2YXIgYzF5O1xuICAgIHZhciBjMng7XG4gICAgdmFyIGMyeTtcbiAgICB2YXIgcCA9IG5ldyBwYXRoLlBhdGgoKTtcbiAgICB2YXIgc3RhY2sgPSBbXTtcbiAgICB2YXIgblN0ZW1zID0gMDtcbiAgICB2YXIgaGF2ZVdpZHRoID0gZmFsc2U7XG4gICAgdmFyIHdpZHRoID0gZm9udC5kZWZhdWx0V2lkdGhYO1xuICAgIHZhciBvcGVuID0gZmFsc2U7XG4gICAgdmFyIHggPSAwO1xuICAgIHZhciB5ID0gMDtcblxuICAgIGZ1bmN0aW9uIG5ld0NvbnRvdXIoeCwgeSkge1xuICAgICAgICBpZiAob3Blbikge1xuICAgICAgICAgICAgcC5jbG9zZVBhdGgoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHAubW92ZVRvKHgsIHkpO1xuICAgICAgICBvcGVuID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwYXJzZVN0ZW1zKCkge1xuICAgICAgICB2YXIgaGFzV2lkdGhBcmc7XG5cbiAgICAgICAgLy8gVGhlIG51bWJlciBvZiBzdGVtIG9wZXJhdG9ycyBvbiB0aGUgc3RhY2sgaXMgYWx3YXlzIGV2ZW4uXG4gICAgICAgIC8vIElmIHRoZSB2YWx1ZSBpcyB1bmV2ZW4sIHRoYXQgbWVhbnMgYSB3aWR0aCBpcyBzcGVjaWZpZWQuXG4gICAgICAgIGhhc1dpZHRoQXJnID0gc3RhY2subGVuZ3RoICUgMiAhPT0gMDtcbiAgICAgICAgaWYgKGhhc1dpZHRoQXJnICYmICFoYXZlV2lkdGgpIHtcbiAgICAgICAgICAgIHdpZHRoID0gc3RhY2suc2hpZnQoKSArIGZvbnQubm9taW5hbFdpZHRoWDtcbiAgICAgICAgfVxuXG4gICAgICAgIG5TdGVtcyArPSBzdGFjay5sZW5ndGggPj4gMTtcbiAgICAgICAgc3RhY2subGVuZ3RoID0gMDtcbiAgICAgICAgaGF2ZVdpZHRoID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBwYXJzZShjb2RlKSB7XG4gICAgICAgIHZhciBiMTtcbiAgICAgICAgdmFyIGIyO1xuICAgICAgICB2YXIgYjM7XG4gICAgICAgIHZhciBiNDtcbiAgICAgICAgdmFyIGNvZGVJbmRleDtcbiAgICAgICAgdmFyIHN1YnJDb2RlO1xuICAgICAgICB2YXIganB4O1xuICAgICAgICB2YXIganB5O1xuICAgICAgICB2YXIgYzN4O1xuICAgICAgICB2YXIgYzN5O1xuICAgICAgICB2YXIgYzR4O1xuICAgICAgICB2YXIgYzR5O1xuXG4gICAgICAgIHZhciBpID0gMDtcbiAgICAgICAgd2hpbGUgKGkgPCBjb2RlLmxlbmd0aCkge1xuICAgICAgICAgICAgdmFyIHYgPSBjb2RlW2ldO1xuICAgICAgICAgICAgaSArPSAxO1xuICAgICAgICAgICAgc3dpdGNoICh2KSB7XG4gICAgICAgICAgICAgICAgY2FzZSAxOiAvLyBoc3RlbVxuICAgICAgICAgICAgICAgICAgICBwYXJzZVN0ZW1zKCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgMzogLy8gdnN0ZW1cbiAgICAgICAgICAgICAgICAgICAgcGFyc2VTdGVtcygpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IC8vIHZtb3ZldG9cbiAgICAgICAgICAgICAgICAgICAgaWYgKHN0YWNrLmxlbmd0aCA+IDEgJiYgIWhhdmVXaWR0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGggPSBzdGFjay5zaGlmdCgpICsgZm9udC5ub21pbmFsV2lkdGhYO1xuICAgICAgICAgICAgICAgICAgICAgICAgaGF2ZVdpZHRoID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHkgKz0gc3RhY2sucG9wKCk7XG4gICAgICAgICAgICAgICAgICAgIG5ld0NvbnRvdXIoeCwgeSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgNTogLy8gcmxpbmV0b1xuICAgICAgICAgICAgICAgICAgICB3aGlsZSAoc3RhY2subGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgeCArPSBzdGFjay5zaGlmdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgeSArPSBzdGFjay5zaGlmdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcC5saW5lVG8oeCwgeSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDY6IC8vIGhsaW5ldG9cbiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHN0YWNrLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHggKz0gc3RhY2suc2hpZnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHAubGluZVRvKHgsIHkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0YWNrLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICB5ICs9IHN0YWNrLnNoaWZ0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBwLmxpbmVUbyh4LCB5KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgNzogLy8gdmxpbmV0b1xuICAgICAgICAgICAgICAgICAgICB3aGlsZSAoc3RhY2subGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgeSArPSBzdGFjay5zaGlmdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcC5saW5lVG8oeCwgeSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RhY2subGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHggKz0gc3RhY2suc2hpZnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHAubGluZVRvKHgsIHkpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSA4OiAvLyBycmN1cnZldG9cbiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHN0YWNrLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGMxeCA9IHggKyBzdGFjay5zaGlmdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYzF5ID0geSArIHN0YWNrLnNoaWZ0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjMnggPSBjMXggKyBzdGFjay5zaGlmdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYzJ5ID0gYzF5ICsgc3RhY2suc2hpZnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHggPSBjMnggKyBzdGFjay5zaGlmdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgeSA9IGMyeSArIHN0YWNrLnNoaWZ0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBwLmN1cnZlVG8oYzF4LCBjMXksIGMyeCwgYzJ5LCB4LCB5KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgMTA6IC8vIGNhbGxzdWJyXG4gICAgICAgICAgICAgICAgICAgIGNvZGVJbmRleCA9IHN0YWNrLnBvcCgpICsgZm9udC5zdWJyc0JpYXM7XG4gICAgICAgICAgICAgICAgICAgIHN1YnJDb2RlID0gZm9udC5zdWJyc1tjb2RlSW5kZXhdO1xuICAgICAgICAgICAgICAgICAgICBpZiAoc3VickNvZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlKHN1YnJDb2RlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgMTE6IC8vIHJldHVyblxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgY2FzZSAxMjogLy8gZmxleCBvcGVyYXRvcnNcbiAgICAgICAgICAgICAgICAgICAgdiA9IGNvZGVbaV07XG4gICAgICAgICAgICAgICAgICAgIGkgKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoICh2KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDM1OiAvLyBmbGV4XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gfC0gZHgxIGR5MSBkeDIgZHkyIGR4MyBkeTMgZHg0IGR5NCBkeDUgZHk1IGR4NiBkeTYgZmQgZmxleCAoMTIgMzUpIHwtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYzF4ID0geCAgICsgc3RhY2suc2hpZnQoKTsgICAgLy8gZHgxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYzF5ID0geSAgICsgc3RhY2suc2hpZnQoKTsgICAgLy8gZHkxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYzJ4ID0gYzF4ICsgc3RhY2suc2hpZnQoKTsgICAgLy8gZHgyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYzJ5ID0gYzF5ICsgc3RhY2suc2hpZnQoKTsgICAgLy8gZHkyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAganB4ID0gYzJ4ICsgc3RhY2suc2hpZnQoKTsgICAgLy8gZHgzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAganB5ID0gYzJ5ICsgc3RhY2suc2hpZnQoKTsgICAgLy8gZHkzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYzN4ID0ganB4ICsgc3RhY2suc2hpZnQoKTsgICAgLy8gZHg0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYzN5ID0ganB5ICsgc3RhY2suc2hpZnQoKTsgICAgLy8gZHk0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYzR4ID0gYzN4ICsgc3RhY2suc2hpZnQoKTsgICAgLy8gZHg1XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYzR5ID0gYzN5ICsgc3RhY2suc2hpZnQoKTsgICAgLy8gZHk1XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeCA9IGM0eCArIHN0YWNrLnNoaWZ0KCk7ICAgICAgLy8gZHg2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeSA9IGM0eSArIHN0YWNrLnNoaWZ0KCk7ICAgICAgLy8gZHk2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2suc2hpZnQoKTsgICAgICAgICAgICAgICAgLy8gZmxleCBkZXB0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAuY3VydmVUbyhjMXgsIGMxeSwgYzJ4LCBjMnksIGpweCwganB5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwLmN1cnZlVG8oYzN4LCBjM3ksIGM0eCwgYzR5LCB4LCB5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMzQ6IC8vIGhmbGV4XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gfC0gZHgxIGR4MiBkeTIgZHgzIGR4NCBkeDUgZHg2IGhmbGV4ICgxMiAzNCkgfC1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMXggPSB4ICAgKyBzdGFjay5zaGlmdCgpOyAgICAvLyBkeDFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMXkgPSB5OyAgICAgICAgICAgICAgICAgICAgICAvLyBkeTFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMnggPSBjMXggKyBzdGFjay5zaGlmdCgpOyAgICAvLyBkeDJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMnkgPSBjMXkgKyBzdGFjay5zaGlmdCgpOyAgICAvLyBkeTJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqcHggPSBjMnggKyBzdGFjay5zaGlmdCgpOyAgICAvLyBkeDNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqcHkgPSBjMnk7ICAgICAgICAgICAgICAgICAgICAvLyBkeTNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjM3ggPSBqcHggKyBzdGFjay5zaGlmdCgpOyAgICAvLyBkeDRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjM3kgPSBjMnk7ICAgICAgICAgICAgICAgICAgICAvLyBkeTRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjNHggPSBjM3ggKyBzdGFjay5zaGlmdCgpOyAgICAvLyBkeDVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjNHkgPSB5OyAgICAgICAgICAgICAgICAgICAgICAvLyBkeTVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4ID0gYzR4ICsgc3RhY2suc2hpZnQoKTsgICAgICAvLyBkeDZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwLmN1cnZlVG8oYzF4LCBjMXksIGMyeCwgYzJ5LCBqcHgsIGpweSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcC5jdXJ2ZVRvKGMzeCwgYzN5LCBjNHgsIGM0eSwgeCwgeSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDM2OiAvLyBoZmxleDFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB8LSBkeDEgZHkxIGR4MiBkeTIgZHgzIGR4NCBkeDUgZHk1IGR4NiBoZmxleDEgKDEyIDM2KSB8LVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMxeCA9IHggICArIHN0YWNrLnNoaWZ0KCk7ICAgIC8vIGR4MVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMxeSA9IHkgICArIHN0YWNrLnNoaWZ0KCk7ICAgIC8vIGR5MVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMyeCA9IGMxeCArIHN0YWNrLnNoaWZ0KCk7ICAgIC8vIGR4MlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMyeSA9IGMxeSArIHN0YWNrLnNoaWZ0KCk7ICAgIC8vIGR5MlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpweCA9IGMyeCArIHN0YWNrLnNoaWZ0KCk7ICAgIC8vIGR4M1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpweSA9IGMyeTsgICAgICAgICAgICAgICAgICAgIC8vIGR5M1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMzeCA9IGpweCArIHN0YWNrLnNoaWZ0KCk7ICAgIC8vIGR4NFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMzeSA9IGMyeTsgICAgICAgICAgICAgICAgICAgIC8vIGR5NFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGM0eCA9IGMzeCArIHN0YWNrLnNoaWZ0KCk7ICAgIC8vIGR4NVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGM0eSA9IGMzeSArIHN0YWNrLnNoaWZ0KCk7ICAgIC8vIGR5NVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHggPSBjNHggKyBzdGFjay5zaGlmdCgpOyAgICAgIC8vIGR4NlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAuY3VydmVUbyhjMXgsIGMxeSwgYzJ4LCBjMnksIGpweCwganB5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwLmN1cnZlVG8oYzN4LCBjM3ksIGM0eCwgYzR5LCB4LCB5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMzc6IC8vIGZsZXgxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gfC0gZHgxIGR5MSBkeDIgZHkyIGR4MyBkeTMgZHg0IGR5NCBkeDUgZHk1IGQ2IGZsZXgxICgxMiAzNykgfC1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMXggPSB4ICAgKyBzdGFjay5zaGlmdCgpOyAgICAvLyBkeDFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMXkgPSB5ICAgKyBzdGFjay5zaGlmdCgpOyAgICAvLyBkeTFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMnggPSBjMXggKyBzdGFjay5zaGlmdCgpOyAgICAvLyBkeDJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMnkgPSBjMXkgKyBzdGFjay5zaGlmdCgpOyAgICAvLyBkeTJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqcHggPSBjMnggKyBzdGFjay5zaGlmdCgpOyAgICAvLyBkeDNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqcHkgPSBjMnkgKyBzdGFjay5zaGlmdCgpOyAgICAvLyBkeTNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjM3ggPSBqcHggKyBzdGFjay5zaGlmdCgpOyAgICAvLyBkeDRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjM3kgPSBqcHkgKyBzdGFjay5zaGlmdCgpOyAgICAvLyBkeTRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjNHggPSBjM3ggKyBzdGFjay5zaGlmdCgpOyAgICAvLyBkeDVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjNHkgPSBjM3kgKyBzdGFjay5zaGlmdCgpOyAgICAvLyBkeTVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoTWF0aC5hYnMoYzR4IC0geCkgPiBNYXRoLmFicyhjNHkgLSB5KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4ID0gYzR4ICsgc3RhY2suc2hpZnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ID0gYzR5ICsgc3RhY2suc2hpZnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwLmN1cnZlVG8oYzF4LCBjMXksIGMyeCwgYzJ5LCBqcHgsIGpweSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcC5jdXJ2ZVRvKGMzeCwgYzN5LCBjNHgsIGM0eSwgeCwgeSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdHbHlwaCAnICsgZ2x5cGguaW5kZXggKyAnOiB1bmtub3duIG9wZXJhdG9yICcgKyAxMjAwICsgdik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2subGVuZ3RoID0gMDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDE0OiAvLyBlbmRjaGFyXG4gICAgICAgICAgICAgICAgICAgIGlmIChzdGFjay5sZW5ndGggPiAwICYmICFoYXZlV2lkdGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoID0gc3RhY2suc2hpZnQoKSArIGZvbnQubm9taW5hbFdpZHRoWDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhhdmVXaWR0aCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAob3Blbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcC5jbG9zZVBhdGgoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wZW4gPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgMTg6IC8vIGhzdGVtaG1cbiAgICAgICAgICAgICAgICAgICAgcGFyc2VTdGVtcygpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDE5OiAvLyBoaW50bWFza1xuICAgICAgICAgICAgICAgIGNhc2UgMjA6IC8vIGNudHJtYXNrXG4gICAgICAgICAgICAgICAgICAgIHBhcnNlU3RlbXMoKTtcbiAgICAgICAgICAgICAgICAgICAgaSArPSAoblN0ZW1zICsgNykgPj4gMztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAyMTogLy8gcm1vdmV0b1xuICAgICAgICAgICAgICAgICAgICBpZiAoc3RhY2subGVuZ3RoID4gMiAmJiAhaGF2ZVdpZHRoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCA9IHN0YWNrLnNoaWZ0KCkgKyBmb250Lm5vbWluYWxXaWR0aFg7XG4gICAgICAgICAgICAgICAgICAgICAgICBoYXZlV2lkdGggPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgeSArPSBzdGFjay5wb3AoKTtcbiAgICAgICAgICAgICAgICAgICAgeCArPSBzdGFjay5wb3AoKTtcbiAgICAgICAgICAgICAgICAgICAgbmV3Q29udG91cih4LCB5KTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAyMjogLy8gaG1vdmV0b1xuICAgICAgICAgICAgICAgICAgICBpZiAoc3RhY2subGVuZ3RoID4gMSAmJiAhaGF2ZVdpZHRoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCA9IHN0YWNrLnNoaWZ0KCkgKyBmb250Lm5vbWluYWxXaWR0aFg7XG4gICAgICAgICAgICAgICAgICAgICAgICBoYXZlV2lkdGggPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgeCArPSBzdGFjay5wb3AoKTtcbiAgICAgICAgICAgICAgICAgICAgbmV3Q29udG91cih4LCB5KTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAyMzogLy8gdnN0ZW1obVxuICAgICAgICAgICAgICAgICAgICBwYXJzZVN0ZW1zKCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgMjQ6IC8vIHJjdXJ2ZWxpbmVcbiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHN0YWNrLmxlbmd0aCA+IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGMxeCA9IHggKyBzdGFjay5zaGlmdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYzF5ID0geSArIHN0YWNrLnNoaWZ0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjMnggPSBjMXggKyBzdGFjay5zaGlmdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYzJ5ID0gYzF5ICsgc3RhY2suc2hpZnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHggPSBjMnggKyBzdGFjay5zaGlmdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgeSA9IGMyeSArIHN0YWNrLnNoaWZ0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBwLmN1cnZlVG8oYzF4LCBjMXksIGMyeCwgYzJ5LCB4LCB5KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHggKz0gc3RhY2suc2hpZnQoKTtcbiAgICAgICAgICAgICAgICAgICAgeSArPSBzdGFjay5zaGlmdCgpO1xuICAgICAgICAgICAgICAgICAgICBwLmxpbmVUbyh4LCB5KTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAyNTogLy8gcmxpbmVjdXJ2ZVxuICAgICAgICAgICAgICAgICAgICB3aGlsZSAoc3RhY2subGVuZ3RoID4gNikge1xuICAgICAgICAgICAgICAgICAgICAgICAgeCArPSBzdGFjay5zaGlmdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgeSArPSBzdGFjay5zaGlmdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcC5saW5lVG8oeCwgeSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBjMXggPSB4ICsgc3RhY2suc2hpZnQoKTtcbiAgICAgICAgICAgICAgICAgICAgYzF5ID0geSArIHN0YWNrLnNoaWZ0KCk7XG4gICAgICAgICAgICAgICAgICAgIGMyeCA9IGMxeCArIHN0YWNrLnNoaWZ0KCk7XG4gICAgICAgICAgICAgICAgICAgIGMyeSA9IGMxeSArIHN0YWNrLnNoaWZ0KCk7XG4gICAgICAgICAgICAgICAgICAgIHggPSBjMnggKyBzdGFjay5zaGlmdCgpO1xuICAgICAgICAgICAgICAgICAgICB5ID0gYzJ5ICsgc3RhY2suc2hpZnQoKTtcbiAgICAgICAgICAgICAgICAgICAgcC5jdXJ2ZVRvKGMxeCwgYzF5LCBjMngsIGMyeSwgeCwgeSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgMjY6IC8vIHZ2Y3VydmV0b1xuICAgICAgICAgICAgICAgICAgICBpZiAoc3RhY2subGVuZ3RoICUgMikge1xuICAgICAgICAgICAgICAgICAgICAgICAgeCArPSBzdGFjay5zaGlmdCgpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHN0YWNrLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGMxeCA9IHg7XG4gICAgICAgICAgICAgICAgICAgICAgICBjMXkgPSB5ICsgc3RhY2suc2hpZnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGMyeCA9IGMxeCArIHN0YWNrLnNoaWZ0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjMnkgPSBjMXkgKyBzdGFjay5zaGlmdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgeCA9IGMyeDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHkgPSBjMnkgKyBzdGFjay5zaGlmdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcC5jdXJ2ZVRvKGMxeCwgYzF5LCBjMngsIGMyeSwgeCwgeSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDI3OiAvLyBoaGN1cnZldG9cbiAgICAgICAgICAgICAgICAgICAgaWYgKHN0YWNrLmxlbmd0aCAlIDIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHkgKz0gc3RhY2suc2hpZnQoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHdoaWxlIChzdGFjay5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjMXggPSB4ICsgc3RhY2suc2hpZnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGMxeSA9IHk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjMnggPSBjMXggKyBzdGFjay5zaGlmdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYzJ5ID0gYzF5ICsgc3RhY2suc2hpZnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHggPSBjMnggKyBzdGFjay5zaGlmdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgeSA9IGMyeTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHAuY3VydmVUbyhjMXgsIGMxeSwgYzJ4LCBjMnksIHgsIHkpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAyODogLy8gc2hvcnRpbnRcbiAgICAgICAgICAgICAgICAgICAgYjEgPSBjb2RlW2ldO1xuICAgICAgICAgICAgICAgICAgICBiMiA9IGNvZGVbaSArIDFdO1xuICAgICAgICAgICAgICAgICAgICBzdGFjay5wdXNoKCgoYjEgPDwgMjQpIHwgKGIyIDw8IDE2KSkgPj4gMTYpO1xuICAgICAgICAgICAgICAgICAgICBpICs9IDI7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgMjk6IC8vIGNhbGxnc3ViclxuICAgICAgICAgICAgICAgICAgICBjb2RlSW5kZXggPSBzdGFjay5wb3AoKSArIGZvbnQuZ3N1YnJzQmlhcztcbiAgICAgICAgICAgICAgICAgICAgc3VickNvZGUgPSBmb250LmdzdWJyc1tjb2RlSW5kZXhdO1xuICAgICAgICAgICAgICAgICAgICBpZiAoc3VickNvZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlKHN1YnJDb2RlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgMzA6IC8vIHZoY3VydmV0b1xuICAgICAgICAgICAgICAgICAgICB3aGlsZSAoc3RhY2subGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYzF4ID0geDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGMxeSA9IHkgKyBzdGFjay5zaGlmdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYzJ4ID0gYzF4ICsgc3RhY2suc2hpZnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGMyeSA9IGMxeSArIHN0YWNrLnNoaWZ0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB4ID0gYzJ4ICsgc3RhY2suc2hpZnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHkgPSBjMnkgKyAoc3RhY2subGVuZ3RoID09PSAxID8gc3RhY2suc2hpZnQoKSA6IDApO1xuICAgICAgICAgICAgICAgICAgICAgICAgcC5jdXJ2ZVRvKGMxeCwgYzF5LCBjMngsIGMyeSwgeCwgeSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RhY2subGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGMxeCA9IHggKyBzdGFjay5zaGlmdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYzF5ID0geTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGMyeCA9IGMxeCArIHN0YWNrLnNoaWZ0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjMnkgPSBjMXkgKyBzdGFjay5zaGlmdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgeSA9IGMyeSArIHN0YWNrLnNoaWZ0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB4ID0gYzJ4ICsgKHN0YWNrLmxlbmd0aCA9PT0gMSA/IHN0YWNrLnNoaWZ0KCkgOiAwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHAuY3VydmVUbyhjMXgsIGMxeSwgYzJ4LCBjMnksIHgsIHkpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAzMTogLy8gaHZjdXJ2ZXRvXG4gICAgICAgICAgICAgICAgICAgIHdoaWxlIChzdGFjay5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjMXggPSB4ICsgc3RhY2suc2hpZnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGMxeSA9IHk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjMnggPSBjMXggKyBzdGFjay5zaGlmdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYzJ5ID0gYzF5ICsgc3RhY2suc2hpZnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHkgPSBjMnkgKyBzdGFjay5zaGlmdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgeCA9IGMyeCArIChzdGFjay5sZW5ndGggPT09IDEgPyBzdGFjay5zaGlmdCgpIDogMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBwLmN1cnZlVG8oYzF4LCBjMXksIGMyeCwgYzJ5LCB4LCB5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdGFjay5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgYzF4ID0geDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGMxeSA9IHkgKyBzdGFjay5zaGlmdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYzJ4ID0gYzF4ICsgc3RhY2suc2hpZnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGMyeSA9IGMxeSArIHN0YWNrLnNoaWZ0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB4ID0gYzJ4ICsgc3RhY2suc2hpZnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHkgPSBjMnkgKyAoc3RhY2subGVuZ3RoID09PSAxID8gc3RhY2suc2hpZnQoKSA6IDApO1xuICAgICAgICAgICAgICAgICAgICAgICAgcC5jdXJ2ZVRvKGMxeCwgYzF5LCBjMngsIGMyeSwgeCwgeSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICBpZiAodiA8IDMyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnR2x5cGggJyArIGdseXBoLmluZGV4ICsgJzogdW5rbm93biBvcGVyYXRvciAnICsgdik7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodiA8IDI0Nykge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2sucHVzaCh2IC0gMTM5KTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh2IDwgMjUxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBiMSA9IGNvZGVbaV07XG4gICAgICAgICAgICAgICAgICAgICAgICBpICs9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFjay5wdXNoKCh2IC0gMjQ3KSAqIDI1NiArIGIxICsgMTA4KTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh2IDwgMjU1KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBiMSA9IGNvZGVbaV07XG4gICAgICAgICAgICAgICAgICAgICAgICBpICs9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFjay5wdXNoKC0odiAtIDI1MSkgKiAyNTYgLSBiMSAtIDEwOCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBiMSA9IGNvZGVbaV07XG4gICAgICAgICAgICAgICAgICAgICAgICBiMiA9IGNvZGVbaSArIDFdO1xuICAgICAgICAgICAgICAgICAgICAgICAgYjMgPSBjb2RlW2kgKyAyXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGI0ID0gY29kZVtpICsgM107XG4gICAgICAgICAgICAgICAgICAgICAgICBpICs9IDQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFjay5wdXNoKCgoYjEgPDwgMjQpIHwgKGIyIDw8IDE2KSB8IChiMyA8PCA4KSB8IGI0KSAvIDY1NTM2KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcGFyc2UoY29kZSk7XG5cbiAgICBnbHlwaC5hZHZhbmNlV2lkdGggPSB3aWR0aDtcbiAgICByZXR1cm4gcDtcbn1cblxuLy8gU3Vicm91dGluZXMgYXJlIGVuY29kZWQgdXNpbmcgdGhlIG5lZ2F0aXZlIGhhbGYgb2YgdGhlIG51bWJlciBzcGFjZS5cbi8vIFNlZSB0eXBlIDIgY2hhcHRlciA0LjcgXCJTdWJyb3V0aW5lIG9wZXJhdG9yc1wiLlxuZnVuY3Rpb24gY2FsY0NGRlN1YnJvdXRpbmVCaWFzKHN1YnJzKSB7XG4gICAgdmFyIGJpYXM7XG4gICAgaWYgKHN1YnJzLmxlbmd0aCA8IDEyNDApIHtcbiAgICAgICAgYmlhcyA9IDEwNztcbiAgICB9IGVsc2UgaWYgKHN1YnJzLmxlbmd0aCA8IDMzOTAwKSB7XG4gICAgICAgIGJpYXMgPSAxMTMxO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGJpYXMgPSAzMjc2ODtcbiAgICB9XG5cbiAgICByZXR1cm4gYmlhcztcbn1cblxuLy8gUGFyc2UgdGhlIGBDRkZgIHRhYmxlLCB3aGljaCBjb250YWlucyB0aGUgZ2x5cGggb3V0bGluZXMgaW4gUG9zdFNjcmlwdCBmb3JtYXQuXG5mdW5jdGlvbiBwYXJzZUNGRlRhYmxlKGRhdGEsIHN0YXJ0LCBmb250KSB7XG4gICAgZm9udC50YWJsZXMuY2ZmID0ge307XG4gICAgdmFyIGhlYWRlciA9IHBhcnNlQ0ZGSGVhZGVyKGRhdGEsIHN0YXJ0KTtcbiAgICB2YXIgbmFtZUluZGV4ID0gcGFyc2VDRkZJbmRleChkYXRhLCBoZWFkZXIuZW5kT2Zmc2V0LCBwYXJzZS5ieXRlc1RvU3RyaW5nKTtcbiAgICB2YXIgdG9wRGljdEluZGV4ID0gcGFyc2VDRkZJbmRleChkYXRhLCBuYW1lSW5kZXguZW5kT2Zmc2V0KTtcbiAgICB2YXIgc3RyaW5nSW5kZXggPSBwYXJzZUNGRkluZGV4KGRhdGEsIHRvcERpY3RJbmRleC5lbmRPZmZzZXQsIHBhcnNlLmJ5dGVzVG9TdHJpbmcpO1xuICAgIHZhciBnbG9iYWxTdWJySW5kZXggPSBwYXJzZUNGRkluZGV4KGRhdGEsIHN0cmluZ0luZGV4LmVuZE9mZnNldCk7XG4gICAgZm9udC5nc3VicnMgPSBnbG9iYWxTdWJySW5kZXgub2JqZWN0cztcbiAgICBmb250LmdzdWJyc0JpYXMgPSBjYWxjQ0ZGU3Vicm91dGluZUJpYXMoZm9udC5nc3VicnMpO1xuXG4gICAgdmFyIHRvcERpY3REYXRhID0gbmV3IERhdGFWaWV3KG5ldyBVaW50OEFycmF5KHRvcERpY3RJbmRleC5vYmplY3RzWzBdKS5idWZmZXIpO1xuICAgIHZhciB0b3BEaWN0ID0gcGFyc2VDRkZUb3BEaWN0KHRvcERpY3REYXRhLCBzdHJpbmdJbmRleC5vYmplY3RzKTtcbiAgICBmb250LnRhYmxlcy5jZmYudG9wRGljdCA9IHRvcERpY3Q7XG5cbiAgICB2YXIgcHJpdmF0ZURpY3RPZmZzZXQgPSBzdGFydCArIHRvcERpY3RbJ3ByaXZhdGUnXVsxXTtcbiAgICB2YXIgcHJpdmF0ZURpY3QgPSBwYXJzZUNGRlByaXZhdGVEaWN0KGRhdGEsIHByaXZhdGVEaWN0T2Zmc2V0LCB0b3BEaWN0Wydwcml2YXRlJ11bMF0sIHN0cmluZ0luZGV4Lm9iamVjdHMpO1xuICAgIGZvbnQuZGVmYXVsdFdpZHRoWCA9IHByaXZhdGVEaWN0LmRlZmF1bHRXaWR0aFg7XG4gICAgZm9udC5ub21pbmFsV2lkdGhYID0gcHJpdmF0ZURpY3Qubm9taW5hbFdpZHRoWDtcblxuICAgIGlmIChwcml2YXRlRGljdC5zdWJycyAhPT0gMCkge1xuICAgICAgICB2YXIgc3Vick9mZnNldCA9IHByaXZhdGVEaWN0T2Zmc2V0ICsgcHJpdmF0ZURpY3Quc3VicnM7XG4gICAgICAgIHZhciBzdWJySW5kZXggPSBwYXJzZUNGRkluZGV4KGRhdGEsIHN1YnJPZmZzZXQpO1xuICAgICAgICBmb250LnN1YnJzID0gc3VickluZGV4Lm9iamVjdHM7XG4gICAgICAgIGZvbnQuc3VicnNCaWFzID0gY2FsY0NGRlN1YnJvdXRpbmVCaWFzKGZvbnQuc3VicnMpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGZvbnQuc3VicnMgPSBbXTtcbiAgICAgICAgZm9udC5zdWJyc0JpYXMgPSAwO1xuICAgIH1cblxuICAgIC8vIE9mZnNldHMgaW4gdGhlIHRvcCBkaWN0IGFyZSByZWxhdGl2ZSB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBDRkYgZGF0YSwgc28gYWRkIHRoZSBDRkYgc3RhcnQgb2Zmc2V0LlxuICAgIHZhciBjaGFyU3RyaW5nc0luZGV4ID0gcGFyc2VDRkZJbmRleChkYXRhLCBzdGFydCArIHRvcERpY3QuY2hhclN0cmluZ3MpO1xuICAgIGZvbnQubkdseXBocyA9IGNoYXJTdHJpbmdzSW5kZXgub2JqZWN0cy5sZW5ndGg7XG5cbiAgICB2YXIgY2hhcnNldCA9IHBhcnNlQ0ZGQ2hhcnNldChkYXRhLCBzdGFydCArIHRvcERpY3QuY2hhcnNldCwgZm9udC5uR2x5cGhzLCBzdHJpbmdJbmRleC5vYmplY3RzKTtcbiAgICBpZiAodG9wRGljdC5lbmNvZGluZyA9PT0gMCkgeyAvLyBTdGFuZGFyZCBlbmNvZGluZ1xuICAgICAgICBmb250LmNmZkVuY29kaW5nID0gbmV3IGVuY29kaW5nLkNmZkVuY29kaW5nKGVuY29kaW5nLmNmZlN0YW5kYXJkRW5jb2RpbmcsIGNoYXJzZXQpO1xuICAgIH0gZWxzZSBpZiAodG9wRGljdC5lbmNvZGluZyA9PT0gMSkgeyAvLyBFeHBlcnQgZW5jb2RpbmdcbiAgICAgICAgZm9udC5jZmZFbmNvZGluZyA9IG5ldyBlbmNvZGluZy5DZmZFbmNvZGluZyhlbmNvZGluZy5jZmZFeHBlcnRFbmNvZGluZywgY2hhcnNldCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgZm9udC5jZmZFbmNvZGluZyA9IHBhcnNlQ0ZGRW5jb2RpbmcoZGF0YSwgc3RhcnQgKyB0b3BEaWN0LmVuY29kaW5nLCBjaGFyc2V0KTtcbiAgICB9XG5cbiAgICAvLyBQcmVmZXIgdGhlIENNQVAgZW5jb2RpbmcgdG8gdGhlIENGRiBlbmNvZGluZy5cbiAgICBmb250LmVuY29kaW5nID0gZm9udC5lbmNvZGluZyB8fCBmb250LmNmZkVuY29kaW5nO1xuXG4gICAgZm9udC5nbHlwaHMgPSBuZXcgZ2x5cGhzZXQuR2x5cGhTZXQoZm9udCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBmb250Lm5HbHlwaHM7IGkgKz0gMSkge1xuICAgICAgICB2YXIgY2hhclN0cmluZyA9IGNoYXJTdHJpbmdzSW5kZXgub2JqZWN0c1tpXTtcbiAgICAgICAgZm9udC5nbHlwaHMucHVzaChpLCBnbHlwaHNldC5jZmZHbHlwaExvYWRlcihmb250LCBpLCBwYXJzZUNGRkNoYXJzdHJpbmcsIGNoYXJTdHJpbmcpKTtcbiAgICB9XG59XG5cbi8vIENvbnZlcnQgYSBzdHJpbmcgdG8gYSBTdHJpbmcgSUQgKFNJRCkuXG4vLyBUaGUgbGlzdCBvZiBzdHJpbmdzIGlzIG1vZGlmaWVkIGluIHBsYWNlLlxuZnVuY3Rpb24gZW5jb2RlU3RyaW5nKHMsIHN0cmluZ3MpIHtcbiAgICB2YXIgc2lkO1xuXG4gICAgLy8gSXMgdGhlIHN0cmluZyBpbiB0aGUgQ0ZGIHN0YW5kYXJkIHN0cmluZ3M/XG4gICAgdmFyIGkgPSBlbmNvZGluZy5jZmZTdGFuZGFyZFN0cmluZ3MuaW5kZXhPZihzKTtcbiAgICBpZiAoaSA+PSAwKSB7XG4gICAgICAgIHNpZCA9IGk7XG4gICAgfVxuXG4gICAgLy8gSXMgdGhlIHN0cmluZyBhbHJlYWR5IGluIHRoZSBzdHJpbmcgaW5kZXg/XG4gICAgaSA9IHN0cmluZ3MuaW5kZXhPZihzKTtcbiAgICBpZiAoaSA+PSAwKSB7XG4gICAgICAgIHNpZCA9IGkgKyBlbmNvZGluZy5jZmZTdGFuZGFyZFN0cmluZ3MubGVuZ3RoO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHNpZCA9IGVuY29kaW5nLmNmZlN0YW5kYXJkU3RyaW5ncy5sZW5ndGggKyBzdHJpbmdzLmxlbmd0aDtcbiAgICAgICAgc3RyaW5ncy5wdXNoKHMpO1xuICAgIH1cblxuICAgIHJldHVybiBzaWQ7XG59XG5cbmZ1bmN0aW9uIG1ha2VIZWFkZXIoKSB7XG4gICAgcmV0dXJuIG5ldyB0YWJsZS5SZWNvcmQoJ0hlYWRlcicsIFtcbiAgICAgICAge25hbWU6ICdtYWpvcicsIHR5cGU6ICdDYXJkOCcsIHZhbHVlOiAxfSxcbiAgICAgICAge25hbWU6ICdtaW5vcicsIHR5cGU6ICdDYXJkOCcsIHZhbHVlOiAwfSxcbiAgICAgICAge25hbWU6ICdoZHJTaXplJywgdHlwZTogJ0NhcmQ4JywgdmFsdWU6IDR9LFxuICAgICAgICB7bmFtZTogJ21ham9yJywgdHlwZTogJ0NhcmQ4JywgdmFsdWU6IDF9XG4gICAgXSk7XG59XG5cbmZ1bmN0aW9uIG1ha2VOYW1lSW5kZXgoZm9udE5hbWVzKSB7XG4gICAgdmFyIHQgPSBuZXcgdGFibGUuUmVjb3JkKCdOYW1lIElOREVYJywgW1xuICAgICAgICB7bmFtZTogJ25hbWVzJywgdHlwZTogJ0lOREVYJywgdmFsdWU6IFtdfVxuICAgIF0pO1xuICAgIHQubmFtZXMgPSBbXTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGZvbnROYW1lcy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICB0Lm5hbWVzLnB1c2goe25hbWU6ICduYW1lXycgKyBpLCB0eXBlOiAnTkFNRScsIHZhbHVlOiBmb250TmFtZXNbaV19KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdDtcbn1cblxuLy8gR2l2ZW4gYSBkaWN0aW9uYXJ5J3MgbWV0YWRhdGEsIGNyZWF0ZSBhIERJQ1Qgc3RydWN0dXJlLlxuZnVuY3Rpb24gbWFrZURpY3QobWV0YSwgYXR0cnMsIHN0cmluZ3MpIHtcbiAgICB2YXIgbSA9IHt9O1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbWV0YS5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICB2YXIgZW50cnkgPSBtZXRhW2ldO1xuICAgICAgICB2YXIgdmFsdWUgPSBhdHRyc1tlbnRyeS5uYW1lXTtcbiAgICAgICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQgJiYgIWVxdWFscyh2YWx1ZSwgZW50cnkudmFsdWUpKSB7XG4gICAgICAgICAgICBpZiAoZW50cnkudHlwZSA9PT0gJ1NJRCcpIHtcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IGVuY29kZVN0cmluZyh2YWx1ZSwgc3RyaW5ncyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIG1bZW50cnkub3BdID0ge25hbWU6IGVudHJ5Lm5hbWUsIHR5cGU6IGVudHJ5LnR5cGUsIHZhbHVlOiB2YWx1ZX07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbTtcbn1cblxuLy8gVGhlIFRvcCBESUNUIGhvdXNlcyB0aGUgZ2xvYmFsIGZvbnQgYXR0cmlidXRlcy5cbmZ1bmN0aW9uIG1ha2VUb3BEaWN0KGF0dHJzLCBzdHJpbmdzKSB7XG4gICAgdmFyIHQgPSBuZXcgdGFibGUuUmVjb3JkKCdUb3AgRElDVCcsIFtcbiAgICAgICAge25hbWU6ICdkaWN0JywgdHlwZTogJ0RJQ1QnLCB2YWx1ZToge319XG4gICAgXSk7XG4gICAgdC5kaWN0ID0gbWFrZURpY3QoVE9QX0RJQ1RfTUVUQSwgYXR0cnMsIHN0cmluZ3MpO1xuICAgIHJldHVybiB0O1xufVxuXG5mdW5jdGlvbiBtYWtlVG9wRGljdEluZGV4KHRvcERpY3QpIHtcbiAgICB2YXIgdCA9IG5ldyB0YWJsZS5SZWNvcmQoJ1RvcCBESUNUIElOREVYJywgW1xuICAgICAgICB7bmFtZTogJ3RvcERpY3RzJywgdHlwZTogJ0lOREVYJywgdmFsdWU6IFtdfVxuICAgIF0pO1xuICAgIHQudG9wRGljdHMgPSBbe25hbWU6ICd0b3BEaWN0XzAnLCB0eXBlOiAnVEFCTEUnLCB2YWx1ZTogdG9wRGljdH1dO1xuICAgIHJldHVybiB0O1xufVxuXG5mdW5jdGlvbiBtYWtlU3RyaW5nSW5kZXgoc3RyaW5ncykge1xuICAgIHZhciB0ID0gbmV3IHRhYmxlLlJlY29yZCgnU3RyaW5nIElOREVYJywgW1xuICAgICAgICB7bmFtZTogJ3N0cmluZ3MnLCB0eXBlOiAnSU5ERVgnLCB2YWx1ZTogW119XG4gICAgXSk7XG4gICAgdC5zdHJpbmdzID0gW107XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHJpbmdzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICAgIHQuc3RyaW5ncy5wdXNoKHtuYW1lOiAnc3RyaW5nXycgKyBpLCB0eXBlOiAnU1RSSU5HJywgdmFsdWU6IHN0cmluZ3NbaV19KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdDtcbn1cblxuZnVuY3Rpb24gbWFrZUdsb2JhbFN1YnJJbmRleCgpIHtcbiAgICAvLyBDdXJyZW50bHkgd2UgZG9uJ3QgdXNlIHN1YnJvdXRpbmVzLlxuICAgIHJldHVybiBuZXcgdGFibGUuUmVjb3JkKCdHbG9iYWwgU3ViciBJTkRFWCcsIFtcbiAgICAgICAge25hbWU6ICdzdWJycycsIHR5cGU6ICdJTkRFWCcsIHZhbHVlOiBbXX1cbiAgICBdKTtcbn1cblxuZnVuY3Rpb24gbWFrZUNoYXJzZXRzKGdseXBoTmFtZXMsIHN0cmluZ3MpIHtcbiAgICB2YXIgdCA9IG5ldyB0YWJsZS5SZWNvcmQoJ0NoYXJzZXRzJywgW1xuICAgICAgICB7bmFtZTogJ2Zvcm1hdCcsIHR5cGU6ICdDYXJkOCcsIHZhbHVlOiAwfVxuICAgIF0pO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZ2x5cGhOYW1lcy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICB2YXIgZ2x5cGhOYW1lID0gZ2x5cGhOYW1lc1tpXTtcbiAgICAgICAgdmFyIGdseXBoU0lEID0gZW5jb2RlU3RyaW5nKGdseXBoTmFtZSwgc3RyaW5ncyk7XG4gICAgICAgIHQuZmllbGRzLnB1c2goe25hbWU6ICdnbHlwaF8nICsgaSwgdHlwZTogJ1NJRCcsIHZhbHVlOiBnbHlwaFNJRH0pO1xuICAgIH1cblxuICAgIHJldHVybiB0O1xufVxuXG5mdW5jdGlvbiBnbHlwaFRvT3BzKGdseXBoKSB7XG4gICAgdmFyIG9wcyA9IFtdO1xuICAgIHZhciBwYXRoID0gZ2x5cGgucGF0aDtcbiAgICBvcHMucHVzaCh7bmFtZTogJ3dpZHRoJywgdHlwZTogJ05VTUJFUicsIHZhbHVlOiBnbHlwaC5hZHZhbmNlV2lkdGh9KTtcbiAgICB2YXIgeCA9IDA7XG4gICAgdmFyIHkgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGF0aC5jb21tYW5kcy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICB2YXIgZHg7XG4gICAgICAgIHZhciBkeTtcbiAgICAgICAgdmFyIGNtZCA9IHBhdGguY29tbWFuZHNbaV07XG4gICAgICAgIGlmIChjbWQudHlwZSA9PT0gJ1EnKSB7XG4gICAgICAgICAgICAvLyBDRkYgb25seSBzdXBwb3J0cyBiw6l6aWVyIGN1cnZlcywgc28gY29udmVydCB0aGUgcXVhZCB0byBhIGLDqXppZXIuXG4gICAgICAgICAgICB2YXIgXzEzID0gMSAvIDM7XG4gICAgICAgICAgICB2YXIgXzIzID0gMiAvIDM7XG5cbiAgICAgICAgICAgIC8vIFdlJ3JlIGdvaW5nIHRvIGNyZWF0ZSBhIG5ldyBjb21tYW5kIHNvIHdlIGRvbid0IGNoYW5nZSB0aGUgb3JpZ2luYWwgcGF0aC5cbiAgICAgICAgICAgIGNtZCA9IHtcbiAgICAgICAgICAgICAgICB0eXBlOiAnQycsXG4gICAgICAgICAgICAgICAgeDogY21kLngsXG4gICAgICAgICAgICAgICAgeTogY21kLnksXG4gICAgICAgICAgICAgICAgeDE6IF8xMyAqIHggKyBfMjMgKiBjbWQueDEsXG4gICAgICAgICAgICAgICAgeTE6IF8xMyAqIHkgKyBfMjMgKiBjbWQueTEsXG4gICAgICAgICAgICAgICAgeDI6IF8xMyAqIGNtZC54ICsgXzIzICogY21kLngxLFxuICAgICAgICAgICAgICAgIHkyOiBfMTMgKiBjbWQueSArIF8yMyAqIGNtZC55MVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjbWQudHlwZSA9PT0gJ00nKSB7XG4gICAgICAgICAgICBkeCA9IE1hdGgucm91bmQoY21kLnggLSB4KTtcbiAgICAgICAgICAgIGR5ID0gTWF0aC5yb3VuZChjbWQueSAtIHkpO1xuICAgICAgICAgICAgb3BzLnB1c2goe25hbWU6ICdkeCcsIHR5cGU6ICdOVU1CRVInLCB2YWx1ZTogZHh9KTtcbiAgICAgICAgICAgIG9wcy5wdXNoKHtuYW1lOiAnZHknLCB0eXBlOiAnTlVNQkVSJywgdmFsdWU6IGR5fSk7XG4gICAgICAgICAgICBvcHMucHVzaCh7bmFtZTogJ3Jtb3ZldG8nLCB0eXBlOiAnT1AnLCB2YWx1ZTogMjF9KTtcbiAgICAgICAgICAgIHggPSBNYXRoLnJvdW5kKGNtZC54KTtcbiAgICAgICAgICAgIHkgPSBNYXRoLnJvdW5kKGNtZC55KTtcbiAgICAgICAgfSBlbHNlIGlmIChjbWQudHlwZSA9PT0gJ0wnKSB7XG4gICAgICAgICAgICBkeCA9IE1hdGgucm91bmQoY21kLnggLSB4KTtcbiAgICAgICAgICAgIGR5ID0gTWF0aC5yb3VuZChjbWQueSAtIHkpO1xuICAgICAgICAgICAgb3BzLnB1c2goe25hbWU6ICdkeCcsIHR5cGU6ICdOVU1CRVInLCB2YWx1ZTogZHh9KTtcbiAgICAgICAgICAgIG9wcy5wdXNoKHtuYW1lOiAnZHknLCB0eXBlOiAnTlVNQkVSJywgdmFsdWU6IGR5fSk7XG4gICAgICAgICAgICBvcHMucHVzaCh7bmFtZTogJ3JsaW5ldG8nLCB0eXBlOiAnT1AnLCB2YWx1ZTogNX0pO1xuICAgICAgICAgICAgeCA9IE1hdGgucm91bmQoY21kLngpO1xuICAgICAgICAgICAgeSA9IE1hdGgucm91bmQoY21kLnkpO1xuICAgICAgICB9IGVsc2UgaWYgKGNtZC50eXBlID09PSAnQycpIHtcbiAgICAgICAgICAgIHZhciBkeDEgPSBNYXRoLnJvdW5kKGNtZC54MSAtIHgpO1xuICAgICAgICAgICAgdmFyIGR5MSA9IE1hdGgucm91bmQoY21kLnkxIC0geSk7XG4gICAgICAgICAgICB2YXIgZHgyID0gTWF0aC5yb3VuZChjbWQueDIgLSBjbWQueDEpO1xuICAgICAgICAgICAgdmFyIGR5MiA9IE1hdGgucm91bmQoY21kLnkyIC0gY21kLnkxKTtcbiAgICAgICAgICAgIGR4ID0gTWF0aC5yb3VuZChjbWQueCAtIGNtZC54Mik7XG4gICAgICAgICAgICBkeSA9IE1hdGgucm91bmQoY21kLnkgLSBjbWQueTIpO1xuICAgICAgICAgICAgb3BzLnB1c2goe25hbWU6ICdkeDEnLCB0eXBlOiAnTlVNQkVSJywgdmFsdWU6IGR4MX0pO1xuICAgICAgICAgICAgb3BzLnB1c2goe25hbWU6ICdkeTEnLCB0eXBlOiAnTlVNQkVSJywgdmFsdWU6IGR5MX0pO1xuICAgICAgICAgICAgb3BzLnB1c2goe25hbWU6ICdkeDInLCB0eXBlOiAnTlVNQkVSJywgdmFsdWU6IGR4Mn0pO1xuICAgICAgICAgICAgb3BzLnB1c2goe25hbWU6ICdkeTInLCB0eXBlOiAnTlVNQkVSJywgdmFsdWU6IGR5Mn0pO1xuICAgICAgICAgICAgb3BzLnB1c2goe25hbWU6ICdkeCcsIHR5cGU6ICdOVU1CRVInLCB2YWx1ZTogZHh9KTtcbiAgICAgICAgICAgIG9wcy5wdXNoKHtuYW1lOiAnZHknLCB0eXBlOiAnTlVNQkVSJywgdmFsdWU6IGR5fSk7XG4gICAgICAgICAgICBvcHMucHVzaCh7bmFtZTogJ3JyY3VydmV0bycsIHR5cGU6ICdPUCcsIHZhbHVlOiA4fSk7XG4gICAgICAgICAgICB4ID0gTWF0aC5yb3VuZChjbWQueCk7XG4gICAgICAgICAgICB5ID0gTWF0aC5yb3VuZChjbWQueSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDb250b3VycyBhcmUgY2xvc2VkIGF1dG9tYXRpY2FsbHkuXG5cbiAgICB9XG5cbiAgICBvcHMucHVzaCh7bmFtZTogJ2VuZGNoYXInLCB0eXBlOiAnT1AnLCB2YWx1ZTogMTR9KTtcbiAgICByZXR1cm4gb3BzO1xufVxuXG5mdW5jdGlvbiBtYWtlQ2hhclN0cmluZ3NJbmRleChnbHlwaHMpIHtcbiAgICB2YXIgdCA9IG5ldyB0YWJsZS5SZWNvcmQoJ0NoYXJTdHJpbmdzIElOREVYJywgW1xuICAgICAgICB7bmFtZTogJ2NoYXJTdHJpbmdzJywgdHlwZTogJ0lOREVYJywgdmFsdWU6IFtdfVxuICAgIF0pO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBnbHlwaHMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgICAgdmFyIGdseXBoID0gZ2x5cGhzLmdldChpKTtcbiAgICAgICAgdmFyIG9wcyA9IGdseXBoVG9PcHMoZ2x5cGgpO1xuICAgICAgICB0LmNoYXJTdHJpbmdzLnB1c2goe25hbWU6IGdseXBoLm5hbWUsIHR5cGU6ICdDSEFSU1RSSU5HJywgdmFsdWU6IG9wc30pO1xuICAgIH1cblxuICAgIHJldHVybiB0O1xufVxuXG5mdW5jdGlvbiBtYWtlUHJpdmF0ZURpY3QoYXR0cnMsIHN0cmluZ3MpIHtcbiAgICB2YXIgdCA9IG5ldyB0YWJsZS5SZWNvcmQoJ1ByaXZhdGUgRElDVCcsIFtcbiAgICAgICAge25hbWU6ICdkaWN0JywgdHlwZTogJ0RJQ1QnLCB2YWx1ZToge319XG4gICAgXSk7XG4gICAgdC5kaWN0ID0gbWFrZURpY3QoUFJJVkFURV9ESUNUX01FVEEsIGF0dHJzLCBzdHJpbmdzKTtcbiAgICByZXR1cm4gdDtcbn1cblxuZnVuY3Rpb24gbWFrZUNGRlRhYmxlKGdseXBocywgb3B0aW9ucykge1xuICAgIHZhciB0ID0gbmV3IHRhYmxlLlRhYmxlKCdDRkYgJywgW1xuICAgICAgICB7bmFtZTogJ2hlYWRlcicsIHR5cGU6ICdSRUNPUkQnfSxcbiAgICAgICAge25hbWU6ICduYW1lSW5kZXgnLCB0eXBlOiAnUkVDT1JEJ30sXG4gICAgICAgIHtuYW1lOiAndG9wRGljdEluZGV4JywgdHlwZTogJ1JFQ09SRCd9LFxuICAgICAgICB7bmFtZTogJ3N0cmluZ0luZGV4JywgdHlwZTogJ1JFQ09SRCd9LFxuICAgICAgICB7bmFtZTogJ2dsb2JhbFN1YnJJbmRleCcsIHR5cGU6ICdSRUNPUkQnfSxcbiAgICAgICAge25hbWU6ICdjaGFyc2V0cycsIHR5cGU6ICdSRUNPUkQnfSxcbiAgICAgICAge25hbWU6ICdjaGFyU3RyaW5nc0luZGV4JywgdHlwZTogJ1JFQ09SRCd9LFxuICAgICAgICB7bmFtZTogJ3ByaXZhdGVEaWN0JywgdHlwZTogJ1JFQ09SRCd9XG4gICAgXSk7XG5cbiAgICB2YXIgZm9udFNjYWxlID0gMSAvIG9wdGlvbnMudW5pdHNQZXJFbTtcbiAgICAvLyBXZSB1c2Ugbm9uLXplcm8gdmFsdWVzIGZvciB0aGUgb2Zmc2V0cyBzbyB0aGF0IHRoZSBESUNUIGVuY29kZXMgdGhlbS5cbiAgICAvLyBUaGlzIGlzIGltcG9ydGFudCBiZWNhdXNlIHRoZSBzaXplIG9mIHRoZSBUb3AgRElDVCBwbGF5cyBhIHJvbGUgaW4gb2Zmc2V0IGNhbGN1bGF0aW9uLFxuICAgIC8vIGFuZCB0aGUgc2l6ZSBzaG91bGRuJ3QgY2hhbmdlIGFmdGVyIHdlJ3ZlIHdyaXR0ZW4gY29ycmVjdCBvZmZzZXRzLlxuICAgIHZhciBhdHRycyA9IHtcbiAgICAgICAgdmVyc2lvbjogb3B0aW9ucy52ZXJzaW9uLFxuICAgICAgICBmdWxsTmFtZTogb3B0aW9ucy5mdWxsTmFtZSxcbiAgICAgICAgZmFtaWx5TmFtZTogb3B0aW9ucy5mYW1pbHlOYW1lLFxuICAgICAgICB3ZWlnaHQ6IG9wdGlvbnMud2VpZ2h0TmFtZSxcbiAgICAgICAgZm9udEJCb3g6IG9wdGlvbnMuZm9udEJCb3ggfHwgWzAsIDAsIDAsIDBdLFxuICAgICAgICBmb250TWF0cml4OiBbZm9udFNjYWxlLCAwLCAwLCBmb250U2NhbGUsIDAsIDBdLFxuICAgICAgICBjaGFyc2V0OiA5OTksXG4gICAgICAgIGVuY29kaW5nOiAwLFxuICAgICAgICBjaGFyU3RyaW5nczogOTk5LFxuICAgICAgICBwcml2YXRlOiBbMCwgOTk5XVxuICAgIH07XG5cbiAgICB2YXIgcHJpdmF0ZUF0dHJzID0ge307XG5cbiAgICB2YXIgZ2x5cGhOYW1lcyA9IFtdO1xuICAgIHZhciBnbHlwaDtcblxuICAgIC8vIFNraXAgZmlyc3QgZ2x5cGggKC5ub3RkZWYpXG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPCBnbHlwaHMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgICAgZ2x5cGggPSBnbHlwaHMuZ2V0KGkpO1xuICAgICAgICBnbHlwaE5hbWVzLnB1c2goZ2x5cGgubmFtZSk7XG4gICAgfVxuXG4gICAgdmFyIHN0cmluZ3MgPSBbXTtcblxuICAgIHQuaGVhZGVyID0gbWFrZUhlYWRlcigpO1xuICAgIHQubmFtZUluZGV4ID0gbWFrZU5hbWVJbmRleChbb3B0aW9ucy5wb3N0U2NyaXB0TmFtZV0pO1xuICAgIHZhciB0b3BEaWN0ID0gbWFrZVRvcERpY3QoYXR0cnMsIHN0cmluZ3MpO1xuICAgIHQudG9wRGljdEluZGV4ID0gbWFrZVRvcERpY3RJbmRleCh0b3BEaWN0KTtcbiAgICB0Lmdsb2JhbFN1YnJJbmRleCA9IG1ha2VHbG9iYWxTdWJySW5kZXgoKTtcbiAgICB0LmNoYXJzZXRzID0gbWFrZUNoYXJzZXRzKGdseXBoTmFtZXMsIHN0cmluZ3MpO1xuICAgIHQuY2hhclN0cmluZ3NJbmRleCA9IG1ha2VDaGFyU3RyaW5nc0luZGV4KGdseXBocyk7XG4gICAgdC5wcml2YXRlRGljdCA9IG1ha2VQcml2YXRlRGljdChwcml2YXRlQXR0cnMsIHN0cmluZ3MpO1xuXG4gICAgLy8gTmVlZHMgdG8gY29tZSBhdCB0aGUgZW5kLCB0byBlbmNvZGUgYWxsIGN1c3RvbSBzdHJpbmdzIHVzZWQgaW4gdGhlIGZvbnQuXG4gICAgdC5zdHJpbmdJbmRleCA9IG1ha2VTdHJpbmdJbmRleChzdHJpbmdzKTtcblxuICAgIHZhciBzdGFydE9mZnNldCA9IHQuaGVhZGVyLnNpemVPZigpICtcbiAgICAgICAgdC5uYW1lSW5kZXguc2l6ZU9mKCkgK1xuICAgICAgICB0LnRvcERpY3RJbmRleC5zaXplT2YoKSArXG4gICAgICAgIHQuc3RyaW5nSW5kZXguc2l6ZU9mKCkgK1xuICAgICAgICB0Lmdsb2JhbFN1YnJJbmRleC5zaXplT2YoKTtcbiAgICBhdHRycy5jaGFyc2V0ID0gc3RhcnRPZmZzZXQ7XG5cbiAgICAvLyBXZSB1c2UgdGhlIENGRiBzdGFuZGFyZCBlbmNvZGluZzsgcHJvcGVyIGVuY29kaW5nIHdpbGwgYmUgaGFuZGxlZCBpbiBjbWFwLlxuICAgIGF0dHJzLmVuY29kaW5nID0gMDtcbiAgICBhdHRycy5jaGFyU3RyaW5ncyA9IGF0dHJzLmNoYXJzZXQgKyB0LmNoYXJzZXRzLnNpemVPZigpO1xuICAgIGF0dHJzLnByaXZhdGVbMV0gPSBhdHRycy5jaGFyU3RyaW5ncyArIHQuY2hhclN0cmluZ3NJbmRleC5zaXplT2YoKTtcblxuICAgIC8vIFJlY3JlYXRlIHRoZSBUb3AgRElDVCBJTkRFWCB3aXRoIHRoZSBjb3JyZWN0IG9mZnNldHMuXG4gICAgdG9wRGljdCA9IG1ha2VUb3BEaWN0KGF0dHJzLCBzdHJpbmdzKTtcbiAgICB0LnRvcERpY3RJbmRleCA9IG1ha2VUb3BEaWN0SW5kZXgodG9wRGljdCk7XG5cbiAgICByZXR1cm4gdDtcbn1cblxuZXhwb3J0cy5wYXJzZSA9IHBhcnNlQ0ZGVGFibGU7XG5leHBvcnRzLm1ha2UgPSBtYWtlQ0ZGVGFibGU7XG4iLCIvLyBUaGUgYGNtYXBgIHRhYmxlIHN0b3JlcyB0aGUgbWFwcGluZ3MgZnJvbSBjaGFyYWN0ZXJzIHRvIGdseXBocy5cbi8vIGh0dHBzOi8vd3d3Lm1pY3Jvc29mdC5jb20vdHlwb2dyYXBoeS9PVFNQRUMvY21hcC5odG1cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgY2hlY2sgPSByZXF1aXJlKCcuLi9jaGVjaycpO1xudmFyIHBhcnNlID0gcmVxdWlyZSgnLi4vcGFyc2UnKTtcbnZhciB0YWJsZSA9IHJlcXVpcmUoJy4uL3RhYmxlJyk7XG5cbmZ1bmN0aW9uIHBhcnNlQ21hcFRhYmxlRm9ybWF0MTIoY21hcCwgcCkge1xuICAgIHZhciBpO1xuXG4gICAgLy9Ta2lwIHJlc2VydmVkLlxuICAgIHAucGFyc2VVU2hvcnQoKTtcblxuICAgIC8vIExlbmd0aCBpbiBieXRlcyBvZiB0aGUgc3ViLXRhYmxlcy5cbiAgICBjbWFwLmxlbmd0aCA9IHAucGFyc2VVTG9uZygpO1xuICAgIGNtYXAubGFuZ3VhZ2UgPSBwLnBhcnNlVUxvbmcoKTtcblxuICAgIHZhciBncm91cENvdW50O1xuICAgIGNtYXAuZ3JvdXBDb3VudCA9IGdyb3VwQ291bnQgPSBwLnBhcnNlVUxvbmcoKTtcbiAgICBjbWFwLmdseXBoSW5kZXhNYXAgPSB7fTtcblxuICAgIGZvciAoaSA9IDA7IGkgPCBncm91cENvdW50OyBpICs9IDEpIHtcbiAgICAgICAgdmFyIHN0YXJ0Q2hhckNvZGUgPSBwLnBhcnNlVUxvbmcoKTtcbiAgICAgICAgdmFyIGVuZENoYXJDb2RlID0gcC5wYXJzZVVMb25nKCk7XG4gICAgICAgIHZhciBzdGFydEdseXBoSWQgPSBwLnBhcnNlVUxvbmcoKTtcblxuICAgICAgICBmb3IgKHZhciBjID0gc3RhcnRDaGFyQ29kZTsgYyA8PSBlbmRDaGFyQ29kZTsgYyArPSAxKSB7XG4gICAgICAgICAgICBjbWFwLmdseXBoSW5kZXhNYXBbY10gPSBzdGFydEdseXBoSWQ7XG4gICAgICAgICAgICBzdGFydEdseXBoSWQrKztcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZnVuY3Rpb24gcGFyc2VDbWFwVGFibGVGb3JtYXQ0KGNtYXAsIHAsIGRhdGEsIHN0YXJ0LCBvZmZzZXQpIHtcbiAgICB2YXIgaTtcblxuICAgIC8vIExlbmd0aCBpbiBieXRlcyBvZiB0aGUgc3ViLXRhYmxlcy5cbiAgICBjbWFwLmxlbmd0aCA9IHAucGFyc2VVU2hvcnQoKTtcbiAgICBjbWFwLmxhbmd1YWdlID0gcC5wYXJzZVVTaG9ydCgpO1xuXG4gICAgLy8gc2VnQ291bnQgaXMgc3RvcmVkIHggMi5cbiAgICB2YXIgc2VnQ291bnQ7XG4gICAgY21hcC5zZWdDb3VudCA9IHNlZ0NvdW50ID0gcC5wYXJzZVVTaG9ydCgpID4+IDE7XG5cbiAgICAvLyBTa2lwIHNlYXJjaFJhbmdlLCBlbnRyeVNlbGVjdG9yLCByYW5nZVNoaWZ0LlxuICAgIHAuc2tpcCgndVNob3J0JywgMyk7XG5cbiAgICAvLyBUaGUgXCJ1bnJvbGxlZFwiIG1hcHBpbmcgZnJvbSBjaGFyYWN0ZXIgY29kZXMgdG8gZ2x5cGggaW5kaWNlcy5cbiAgICBjbWFwLmdseXBoSW5kZXhNYXAgPSB7fTtcbiAgICB2YXIgZW5kQ291bnRQYXJzZXIgPSBuZXcgcGFyc2UuUGFyc2VyKGRhdGEsIHN0YXJ0ICsgb2Zmc2V0ICsgMTQpO1xuICAgIHZhciBzdGFydENvdW50UGFyc2VyID0gbmV3IHBhcnNlLlBhcnNlcihkYXRhLCBzdGFydCArIG9mZnNldCArIDE2ICsgc2VnQ291bnQgKiAyKTtcbiAgICB2YXIgaWREZWx0YVBhcnNlciA9IG5ldyBwYXJzZS5QYXJzZXIoZGF0YSwgc3RhcnQgKyBvZmZzZXQgKyAxNiArIHNlZ0NvdW50ICogNCk7XG4gICAgdmFyIGlkUmFuZ2VPZmZzZXRQYXJzZXIgPSBuZXcgcGFyc2UuUGFyc2VyKGRhdGEsIHN0YXJ0ICsgb2Zmc2V0ICsgMTYgKyBzZWdDb3VudCAqIDYpO1xuICAgIHZhciBnbHlwaEluZGV4T2Zmc2V0ID0gc3RhcnQgKyBvZmZzZXQgKyAxNiArIHNlZ0NvdW50ICogODtcbiAgICBmb3IgKGkgPSAwOyBpIDwgc2VnQ291bnQgLSAxOyBpICs9IDEpIHtcbiAgICAgICAgdmFyIGdseXBoSW5kZXg7XG4gICAgICAgIHZhciBlbmRDb3VudCA9IGVuZENvdW50UGFyc2VyLnBhcnNlVVNob3J0KCk7XG4gICAgICAgIHZhciBzdGFydENvdW50ID0gc3RhcnRDb3VudFBhcnNlci5wYXJzZVVTaG9ydCgpO1xuICAgICAgICB2YXIgaWREZWx0YSA9IGlkRGVsdGFQYXJzZXIucGFyc2VTaG9ydCgpO1xuICAgICAgICB2YXIgaWRSYW5nZU9mZnNldCA9IGlkUmFuZ2VPZmZzZXRQYXJzZXIucGFyc2VVU2hvcnQoKTtcbiAgICAgICAgZm9yICh2YXIgYyA9IHN0YXJ0Q291bnQ7IGMgPD0gZW5kQ291bnQ7IGMgKz0gMSkge1xuICAgICAgICAgICAgaWYgKGlkUmFuZ2VPZmZzZXQgIT09IDApIHtcbiAgICAgICAgICAgICAgICAvLyBUaGUgaWRSYW5nZU9mZnNldCBpcyByZWxhdGl2ZSB0byB0aGUgY3VycmVudCBwb3NpdGlvbiBpbiB0aGUgaWRSYW5nZU9mZnNldCBhcnJheS5cbiAgICAgICAgICAgICAgICAvLyBUYWtlIHRoZSBjdXJyZW50IG9mZnNldCBpbiB0aGUgaWRSYW5nZU9mZnNldCBhcnJheS5cbiAgICAgICAgICAgICAgICBnbHlwaEluZGV4T2Zmc2V0ID0gKGlkUmFuZ2VPZmZzZXRQYXJzZXIub2Zmc2V0ICsgaWRSYW5nZU9mZnNldFBhcnNlci5yZWxhdGl2ZU9mZnNldCAtIDIpO1xuXG4gICAgICAgICAgICAgICAgLy8gQWRkIHRoZSB2YWx1ZSBvZiB0aGUgaWRSYW5nZU9mZnNldCwgd2hpY2ggd2lsbCBtb3ZlIHVzIGludG8gdGhlIGdseXBoSW5kZXggYXJyYXkuXG4gICAgICAgICAgICAgICAgZ2x5cGhJbmRleE9mZnNldCArPSBpZFJhbmdlT2Zmc2V0O1xuXG4gICAgICAgICAgICAgICAgLy8gVGhlbiBhZGQgdGhlIGNoYXJhY3RlciBpbmRleCBvZiB0aGUgY3VycmVudCBzZWdtZW50LCBtdWx0aXBsaWVkIGJ5IDIgZm9yIFVTSE9SVHMuXG4gICAgICAgICAgICAgICAgZ2x5cGhJbmRleE9mZnNldCArPSAoYyAtIHN0YXJ0Q291bnQpICogMjtcbiAgICAgICAgICAgICAgICBnbHlwaEluZGV4ID0gcGFyc2UuZ2V0VVNob3J0KGRhdGEsIGdseXBoSW5kZXhPZmZzZXQpO1xuICAgICAgICAgICAgICAgIGlmIChnbHlwaEluZGV4ICE9PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGdseXBoSW5kZXggPSAoZ2x5cGhJbmRleCArIGlkRGVsdGEpICYgMHhGRkZGO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZ2x5cGhJbmRleCA9IChjICsgaWREZWx0YSkgJiAweEZGRkY7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNtYXAuZ2x5cGhJbmRleE1hcFtjXSA9IGdseXBoSW5kZXg7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vIFBhcnNlIHRoZSBgY21hcGAgdGFibGUuIFRoaXMgdGFibGUgc3RvcmVzIHRoZSBtYXBwaW5ncyBmcm9tIGNoYXJhY3RlcnMgdG8gZ2x5cGhzLlxuLy8gVGhlcmUgYXJlIG1hbnkgYXZhaWxhYmxlIGZvcm1hdHMsIGJ1dCB3ZSBvbmx5IHN1cHBvcnQgdGhlIFdpbmRvd3MgZm9ybWF0IDQgYW5kIDEyLlxuLy8gVGhpcyBmdW5jdGlvbiByZXR1cm5zIGEgYENtYXBFbmNvZGluZ2Agb2JqZWN0IG9yIG51bGwgaWYgbm8gc3VwcG9ydGVkIGZvcm1hdCBjb3VsZCBiZSBmb3VuZC5cbmZ1bmN0aW9uIHBhcnNlQ21hcFRhYmxlKGRhdGEsIHN0YXJ0KSB7XG4gICAgdmFyIGk7XG4gICAgdmFyIGNtYXAgPSB7fTtcbiAgICBjbWFwLnZlcnNpb24gPSBwYXJzZS5nZXRVU2hvcnQoZGF0YSwgc3RhcnQpO1xuICAgIGNoZWNrLmFyZ3VtZW50KGNtYXAudmVyc2lvbiA9PT0gMCwgJ2NtYXAgdGFibGUgdmVyc2lvbiBzaG91bGQgYmUgMC4nKTtcblxuICAgIC8vIFRoZSBjbWFwIHRhYmxlIGNhbiBjb250YWluIG1hbnkgc3ViLXRhYmxlcywgZWFjaCB3aXRoIHRoZWlyIG93biBmb3JtYXQuXG4gICAgLy8gV2UncmUgb25seSBpbnRlcmVzdGVkIGluIGEgXCJwbGF0Zm9ybSAzXCIgdGFibGUuIFRoaXMgaXMgYSBXaW5kb3dzIGZvcm1hdC5cbiAgICBjbWFwLm51bVRhYmxlcyA9IHBhcnNlLmdldFVTaG9ydChkYXRhLCBzdGFydCArIDIpO1xuICAgIHZhciBvZmZzZXQgPSAtMTtcbiAgICBmb3IgKGkgPSBjbWFwLm51bVRhYmxlcyAtIDE7IGkgPj0gMDsgaSAtPSAxKSB7XG4gICAgICAgIHZhciBwbGF0Zm9ybUlkID0gcGFyc2UuZ2V0VVNob3J0KGRhdGEsIHN0YXJ0ICsgNCArIChpICogOCkpO1xuICAgICAgICB2YXIgZW5jb2RpbmdJZCA9IHBhcnNlLmdldFVTaG9ydChkYXRhLCBzdGFydCArIDQgKyAoaSAqIDgpICsgMik7XG4gICAgICAgIGlmIChwbGF0Zm9ybUlkID09PSAzICYmIChlbmNvZGluZ0lkID09PSAwIHx8IGVuY29kaW5nSWQgPT09IDEgfHwgZW5jb2RpbmdJZCA9PT0gMTApKSB7XG4gICAgICAgICAgICBvZmZzZXQgPSBwYXJzZS5nZXRVTG9uZyhkYXRhLCBzdGFydCArIDQgKyAoaSAqIDgpICsgNCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlmIChvZmZzZXQgPT09IC0xKSB7XG4gICAgICAgIC8vIFRoZXJlIGlzIG5vIGNtYXAgdGFibGUgaW4gdGhlIGZvbnQgdGhhdCB3ZSBzdXBwb3J0LCBzbyByZXR1cm4gbnVsbC5cbiAgICAgICAgLy8gVGhpcyBmb250IHdpbGwgYmUgbWFya2VkIGFzIHVuc3VwcG9ydGVkLlxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICB2YXIgcCA9IG5ldyBwYXJzZS5QYXJzZXIoZGF0YSwgc3RhcnQgKyBvZmZzZXQpO1xuICAgIGNtYXAuZm9ybWF0ID0gcC5wYXJzZVVTaG9ydCgpO1xuXG4gICAgaWYgKGNtYXAuZm9ybWF0ID09PSAxMikge1xuICAgICAgICBwYXJzZUNtYXBUYWJsZUZvcm1hdDEyKGNtYXAsIHApO1xuICAgIH0gZWxzZSBpZiAoY21hcC5mb3JtYXQgPT09IDQpIHtcbiAgICAgICAgcGFyc2VDbWFwVGFibGVGb3JtYXQ0KGNtYXAsIHAsIGRhdGEsIHN0YXJ0LCBvZmZzZXQpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignT25seSBmb3JtYXQgNCBhbmQgMTIgY21hcCB0YWJsZXMgYXJlIHN1cHBvcnRlZC4nKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY21hcDtcbn1cblxuZnVuY3Rpb24gYWRkU2VnbWVudCh0LCBjb2RlLCBnbHlwaEluZGV4KSB7XG4gICAgdC5zZWdtZW50cy5wdXNoKHtcbiAgICAgICAgZW5kOiBjb2RlLFxuICAgICAgICBzdGFydDogY29kZSxcbiAgICAgICAgZGVsdGE6IC0oY29kZSAtIGdseXBoSW5kZXgpLFxuICAgICAgICBvZmZzZXQ6IDBcbiAgICB9KTtcbn1cblxuZnVuY3Rpb24gYWRkVGVybWluYXRvclNlZ21lbnQodCkge1xuICAgIHQuc2VnbWVudHMucHVzaCh7XG4gICAgICAgIGVuZDogMHhGRkZGLFxuICAgICAgICBzdGFydDogMHhGRkZGLFxuICAgICAgICBkZWx0YTogMSxcbiAgICAgICAgb2Zmc2V0OiAwXG4gICAgfSk7XG59XG5cbmZ1bmN0aW9uIG1ha2VDbWFwVGFibGUoZ2x5cGhzKSB7XG4gICAgdmFyIGk7XG4gICAgdmFyIHQgPSBuZXcgdGFibGUuVGFibGUoJ2NtYXAnLCBbXG4gICAgICAgIHtuYW1lOiAndmVyc2lvbicsIHR5cGU6ICdVU0hPUlQnLCB2YWx1ZTogMH0sXG4gICAgICAgIHtuYW1lOiAnbnVtVGFibGVzJywgdHlwZTogJ1VTSE9SVCcsIHZhbHVlOiAxfSxcbiAgICAgICAge25hbWU6ICdwbGF0Zm9ybUlEJywgdHlwZTogJ1VTSE9SVCcsIHZhbHVlOiAzfSxcbiAgICAgICAge25hbWU6ICdlbmNvZGluZ0lEJywgdHlwZTogJ1VTSE9SVCcsIHZhbHVlOiAxfSxcbiAgICAgICAge25hbWU6ICdvZmZzZXQnLCB0eXBlOiAnVUxPTkcnLCB2YWx1ZTogMTJ9LFxuICAgICAgICB7bmFtZTogJ2Zvcm1hdCcsIHR5cGU6ICdVU0hPUlQnLCB2YWx1ZTogNH0sXG4gICAgICAgIHtuYW1lOiAnbGVuZ3RoJywgdHlwZTogJ1VTSE9SVCcsIHZhbHVlOiAwfSxcbiAgICAgICAge25hbWU6ICdsYW5ndWFnZScsIHR5cGU6ICdVU0hPUlQnLCB2YWx1ZTogMH0sXG4gICAgICAgIHtuYW1lOiAnc2VnQ291bnRYMicsIHR5cGU6ICdVU0hPUlQnLCB2YWx1ZTogMH0sXG4gICAgICAgIHtuYW1lOiAnc2VhcmNoUmFuZ2UnLCB0eXBlOiAnVVNIT1JUJywgdmFsdWU6IDB9LFxuICAgICAgICB7bmFtZTogJ2VudHJ5U2VsZWN0b3InLCB0eXBlOiAnVVNIT1JUJywgdmFsdWU6IDB9LFxuICAgICAgICB7bmFtZTogJ3JhbmdlU2hpZnQnLCB0eXBlOiAnVVNIT1JUJywgdmFsdWU6IDB9XG4gICAgXSk7XG5cbiAgICB0LnNlZ21lbnRzID0gW107XG4gICAgZm9yIChpID0gMDsgaSA8IGdseXBocy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICB2YXIgZ2x5cGggPSBnbHlwaHMuZ2V0KGkpO1xuICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGdseXBoLnVuaWNvZGVzLmxlbmd0aDsgaiArPSAxKSB7XG4gICAgICAgICAgICBhZGRTZWdtZW50KHQsIGdseXBoLnVuaWNvZGVzW2pdLCBpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHQuc2VnbWVudHMgPSB0LnNlZ21lbnRzLnNvcnQoZnVuY3Rpb24oYSwgYikge1xuICAgICAgICAgICAgcmV0dXJuIGEuc3RhcnQgLSBiLnN0YXJ0O1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBhZGRUZXJtaW5hdG9yU2VnbWVudCh0KTtcblxuICAgIHZhciBzZWdDb3VudDtcbiAgICBzZWdDb3VudCA9IHQuc2VnbWVudHMubGVuZ3RoO1xuICAgIHQuc2VnQ291bnRYMiA9IHNlZ0NvdW50ICogMjtcbiAgICB0LnNlYXJjaFJhbmdlID0gTWF0aC5wb3coMiwgTWF0aC5mbG9vcihNYXRoLmxvZyhzZWdDb3VudCkgLyBNYXRoLmxvZygyKSkpICogMjtcbiAgICB0LmVudHJ5U2VsZWN0b3IgPSBNYXRoLmxvZyh0LnNlYXJjaFJhbmdlIC8gMikgLyBNYXRoLmxvZygyKTtcbiAgICB0LnJhbmdlU2hpZnQgPSB0LnNlZ0NvdW50WDIgLSB0LnNlYXJjaFJhbmdlO1xuXG4gICAgLy8gU2V0IHVwIHBhcmFsbGVsIHNlZ21lbnQgYXJyYXlzLlxuICAgIHZhciBlbmRDb3VudHMgPSBbXTtcbiAgICB2YXIgc3RhcnRDb3VudHMgPSBbXTtcbiAgICB2YXIgaWREZWx0YXMgPSBbXTtcbiAgICB2YXIgaWRSYW5nZU9mZnNldHMgPSBbXTtcbiAgICB2YXIgZ2x5cGhJZHMgPSBbXTtcblxuICAgIGZvciAoaSA9IDA7IGkgPCBzZWdDb3VudDsgaSArPSAxKSB7XG4gICAgICAgIHZhciBzZWdtZW50ID0gdC5zZWdtZW50c1tpXTtcbiAgICAgICAgZW5kQ291bnRzID0gZW5kQ291bnRzLmNvbmNhdCh7bmFtZTogJ2VuZF8nICsgaSwgdHlwZTogJ1VTSE9SVCcsIHZhbHVlOiBzZWdtZW50LmVuZH0pO1xuICAgICAgICBzdGFydENvdW50cyA9IHN0YXJ0Q291bnRzLmNvbmNhdCh7bmFtZTogJ3N0YXJ0XycgKyBpLCB0eXBlOiAnVVNIT1JUJywgdmFsdWU6IHNlZ21lbnQuc3RhcnR9KTtcbiAgICAgICAgaWREZWx0YXMgPSBpZERlbHRhcy5jb25jYXQoe25hbWU6ICdpZERlbHRhXycgKyBpLCB0eXBlOiAnU0hPUlQnLCB2YWx1ZTogc2VnbWVudC5kZWx0YX0pO1xuICAgICAgICBpZFJhbmdlT2Zmc2V0cyA9IGlkUmFuZ2VPZmZzZXRzLmNvbmNhdCh7bmFtZTogJ2lkUmFuZ2VPZmZzZXRfJyArIGksIHR5cGU6ICdVU0hPUlQnLCB2YWx1ZTogc2VnbWVudC5vZmZzZXR9KTtcbiAgICAgICAgaWYgKHNlZ21lbnQuZ2x5cGhJZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBnbHlwaElkcyA9IGdseXBoSWRzLmNvbmNhdCh7bmFtZTogJ2dseXBoXycgKyBpLCB0eXBlOiAnVVNIT1JUJywgdmFsdWU6IHNlZ21lbnQuZ2x5cGhJZH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdC5maWVsZHMgPSB0LmZpZWxkcy5jb25jYXQoZW5kQ291bnRzKTtcbiAgICB0LmZpZWxkcy5wdXNoKHtuYW1lOiAncmVzZXJ2ZWRQYWQnLCB0eXBlOiAnVVNIT1JUJywgdmFsdWU6IDB9KTtcbiAgICB0LmZpZWxkcyA9IHQuZmllbGRzLmNvbmNhdChzdGFydENvdW50cyk7XG4gICAgdC5maWVsZHMgPSB0LmZpZWxkcy5jb25jYXQoaWREZWx0YXMpO1xuICAgIHQuZmllbGRzID0gdC5maWVsZHMuY29uY2F0KGlkUmFuZ2VPZmZzZXRzKTtcbiAgICB0LmZpZWxkcyA9IHQuZmllbGRzLmNvbmNhdChnbHlwaElkcyk7XG5cbiAgICB0Lmxlbmd0aCA9IDE0ICsgLy8gU3VidGFibGUgaGVhZGVyXG4gICAgICAgIGVuZENvdW50cy5sZW5ndGggKiAyICtcbiAgICAgICAgMiArIC8vIHJlc2VydmVkUGFkXG4gICAgICAgIHN0YXJ0Q291bnRzLmxlbmd0aCAqIDIgK1xuICAgICAgICBpZERlbHRhcy5sZW5ndGggKiAyICtcbiAgICAgICAgaWRSYW5nZU9mZnNldHMubGVuZ3RoICogMiArXG4gICAgICAgIGdseXBoSWRzLmxlbmd0aCAqIDI7XG5cbiAgICByZXR1cm4gdDtcbn1cblxuZXhwb3J0cy5wYXJzZSA9IHBhcnNlQ21hcFRhYmxlO1xuZXhwb3J0cy5tYWtlID0gbWFrZUNtYXBUYWJsZTtcbiIsIi8vIFRoZSBgZnZhcmAgdGFibGUgc3RvcmVzIGZvbnQgdmFyaWF0aW9uIGF4ZXMgYW5kIGluc3RhbmNlcy5cbi8vIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9mb250cy9UcnVlVHlwZS1SZWZlcmVuY2UtTWFudWFsL1JNMDYvQ2hhcDZmdmFyLmh0bWxcblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgY2hlY2sgPSByZXF1aXJlKCcuLi9jaGVjaycpO1xudmFyIHBhcnNlID0gcmVxdWlyZSgnLi4vcGFyc2UnKTtcbnZhciB0YWJsZSA9IHJlcXVpcmUoJy4uL3RhYmxlJyk7XG5cbmZ1bmN0aW9uIGFkZE5hbWUobmFtZSwgbmFtZXMpIHtcbiAgICB2YXIgbmFtZVN0cmluZyA9IEpTT04uc3RyaW5naWZ5KG5hbWUpO1xuICAgIHZhciBuYW1lSUQgPSAyNTY7XG4gICAgZm9yICh2YXIgbmFtZUtleSBpbiBuYW1lcykge1xuICAgICAgICB2YXIgbiA9IHBhcnNlSW50KG5hbWVLZXkpO1xuICAgICAgICBpZiAoIW4gfHwgbiA8IDI1Nikge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoSlNPTi5zdHJpbmdpZnkobmFtZXNbbmFtZUtleV0pID09PSBuYW1lU3RyaW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gbjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChuYW1lSUQgPD0gbikge1xuICAgICAgICAgICAgbmFtZUlEID0gbiArIDE7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuYW1lc1tuYW1lSURdID0gbmFtZTtcbiAgICByZXR1cm4gbmFtZUlEO1xufVxuXG5mdW5jdGlvbiBtYWtlRnZhckF4aXMobiwgYXhpcywgbmFtZXMpIHtcbiAgICB2YXIgbmFtZUlEID0gYWRkTmFtZShheGlzLm5hbWUsIG5hbWVzKTtcbiAgICByZXR1cm4gW1xuICAgICAgICB7bmFtZTogJ3RhZ18nICsgbiwgdHlwZTogJ1RBRycsIHZhbHVlOiBheGlzLnRhZ30sXG4gICAgICAgIHtuYW1lOiAnbWluVmFsdWVfJyArIG4sIHR5cGU6ICdGSVhFRCcsIHZhbHVlOiBheGlzLm1pblZhbHVlIDw8IDE2fSxcbiAgICAgICAge25hbWU6ICdkZWZhdWx0VmFsdWVfJyArIG4sIHR5cGU6ICdGSVhFRCcsIHZhbHVlOiBheGlzLmRlZmF1bHRWYWx1ZSA8PCAxNn0sXG4gICAgICAgIHtuYW1lOiAnbWF4VmFsdWVfJyArIG4sIHR5cGU6ICdGSVhFRCcsIHZhbHVlOiBheGlzLm1heFZhbHVlIDw8IDE2fSxcbiAgICAgICAge25hbWU6ICdmbGFnc18nICsgbiwgdHlwZTogJ1VTSE9SVCcsIHZhbHVlOiAwfSxcbiAgICAgICAge25hbWU6ICduYW1lSURfJyArIG4sIHR5cGU6ICdVU0hPUlQnLCB2YWx1ZTogbmFtZUlEfVxuICAgIF07XG59XG5cbmZ1bmN0aW9uIHBhcnNlRnZhckF4aXMoZGF0YSwgc3RhcnQsIG5hbWVzKSB7XG4gICAgdmFyIGF4aXMgPSB7fTtcbiAgICB2YXIgcCA9IG5ldyBwYXJzZS5QYXJzZXIoZGF0YSwgc3RhcnQpO1xuICAgIGF4aXMudGFnID0gcC5wYXJzZVRhZygpO1xuICAgIGF4aXMubWluVmFsdWUgPSBwLnBhcnNlRml4ZWQoKTtcbiAgICBheGlzLmRlZmF1bHRWYWx1ZSA9IHAucGFyc2VGaXhlZCgpO1xuICAgIGF4aXMubWF4VmFsdWUgPSBwLnBhcnNlRml4ZWQoKTtcbiAgICBwLnNraXAoJ3VTaG9ydCcsIDEpOyAgLy8gcmVzZXJ2ZWQgZm9yIGZsYWdzOyBubyB2YWx1ZXMgZGVmaW5lZFxuICAgIGF4aXMubmFtZSA9IG5hbWVzW3AucGFyc2VVU2hvcnQoKV0gfHwge307XG4gICAgcmV0dXJuIGF4aXM7XG59XG5cbmZ1bmN0aW9uIG1ha2VGdmFySW5zdGFuY2UobiwgaW5zdCwgYXhlcywgbmFtZXMpIHtcbiAgICB2YXIgbmFtZUlEID0gYWRkTmFtZShpbnN0Lm5hbWUsIG5hbWVzKTtcbiAgICB2YXIgZmllbGRzID0gW1xuICAgICAgICB7bmFtZTogJ25hbWVJRF8nICsgbiwgdHlwZTogJ1VTSE9SVCcsIHZhbHVlOiBuYW1lSUR9LFxuICAgICAgICB7bmFtZTogJ2ZsYWdzXycgKyBuLCB0eXBlOiAnVVNIT1JUJywgdmFsdWU6IDB9XG4gICAgXTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXhlcy5sZW5ndGg7ICsraSkge1xuICAgICAgICB2YXIgYXhpc1RhZyA9IGF4ZXNbaV0udGFnO1xuICAgICAgICBmaWVsZHMucHVzaCh7XG4gICAgICAgICAgICBuYW1lOiAnYXhpc18nICsgbiArICcgJyArIGF4aXNUYWcsXG4gICAgICAgICAgICB0eXBlOiAnRklYRUQnLFxuICAgICAgICAgICAgdmFsdWU6IGluc3QuY29vcmRpbmF0ZXNbYXhpc1RhZ10gPDwgMTZcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZpZWxkcztcbn1cblxuZnVuY3Rpb24gcGFyc2VGdmFySW5zdGFuY2UoZGF0YSwgc3RhcnQsIGF4ZXMsIG5hbWVzKSB7XG4gICAgdmFyIGluc3QgPSB7fTtcbiAgICB2YXIgcCA9IG5ldyBwYXJzZS5QYXJzZXIoZGF0YSwgc3RhcnQpO1xuICAgIGluc3QubmFtZSA9IG5hbWVzW3AucGFyc2VVU2hvcnQoKV0gfHwge307XG4gICAgcC5za2lwKCd1U2hvcnQnLCAxKTsgIC8vIHJlc2VydmVkIGZvciBmbGFnczsgbm8gdmFsdWVzIGRlZmluZWRcblxuICAgIGluc3QuY29vcmRpbmF0ZXMgPSB7fTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGF4ZXMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgaW5zdC5jb29yZGluYXRlc1theGVzW2ldLnRhZ10gPSBwLnBhcnNlRml4ZWQoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gaW5zdDtcbn1cblxuZnVuY3Rpb24gbWFrZUZ2YXJUYWJsZShmdmFyLCBuYW1lcykge1xuICAgIHZhciByZXN1bHQgPSBuZXcgdGFibGUuVGFibGUoJ2Z2YXInLCBbXG4gICAgICAgIHtuYW1lOiAndmVyc2lvbicsIHR5cGU6ICdVTE9ORycsIHZhbHVlOiAweDEwMDAwfSxcbiAgICAgICAge25hbWU6ICdvZmZzZXRUb0RhdGEnLCB0eXBlOiAnVVNIT1JUJywgdmFsdWU6IDB9LFxuICAgICAgICB7bmFtZTogJ2NvdW50U2l6ZVBhaXJzJywgdHlwZTogJ1VTSE9SVCcsIHZhbHVlOiAyfSxcbiAgICAgICAge25hbWU6ICdheGlzQ291bnQnLCB0eXBlOiAnVVNIT1JUJywgdmFsdWU6IGZ2YXIuYXhlcy5sZW5ndGh9LFxuICAgICAgICB7bmFtZTogJ2F4aXNTaXplJywgdHlwZTogJ1VTSE9SVCcsIHZhbHVlOiAyMH0sXG4gICAgICAgIHtuYW1lOiAnaW5zdGFuY2VDb3VudCcsIHR5cGU6ICdVU0hPUlQnLCB2YWx1ZTogZnZhci5pbnN0YW5jZXMubGVuZ3RofSxcbiAgICAgICAge25hbWU6ICdpbnN0YW5jZVNpemUnLCB0eXBlOiAnVVNIT1JUJywgdmFsdWU6IDQgKyBmdmFyLmF4ZXMubGVuZ3RoICogNH1cbiAgICBdKTtcbiAgICByZXN1bHQub2Zmc2V0VG9EYXRhID0gcmVzdWx0LnNpemVPZigpO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBmdmFyLmF4ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcmVzdWx0LmZpZWxkcyA9IHJlc3VsdC5maWVsZHMuY29uY2F0KG1ha2VGdmFyQXhpcyhpLCBmdmFyLmF4ZXNbaV0sIG5hbWVzKSk7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCBmdmFyLmluc3RhbmNlcy5sZW5ndGg7IGorKykge1xuICAgICAgICByZXN1bHQuZmllbGRzID0gcmVzdWx0LmZpZWxkcy5jb25jYXQobWFrZUZ2YXJJbnN0YW5jZShqLCBmdmFyLmluc3RhbmNlc1tqXSwgZnZhci5heGVzLCBuYW1lcykpO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIHBhcnNlRnZhclRhYmxlKGRhdGEsIHN0YXJ0LCBuYW1lcykge1xuICAgIHZhciBwID0gbmV3IHBhcnNlLlBhcnNlcihkYXRhLCBzdGFydCk7XG4gICAgdmFyIHRhYmxlVmVyc2lvbiA9IHAucGFyc2VVTG9uZygpO1xuICAgIGNoZWNrLmFyZ3VtZW50KHRhYmxlVmVyc2lvbiA9PT0gMHgwMDAxMDAwMCwgJ1Vuc3VwcG9ydGVkIGZ2YXIgdGFibGUgdmVyc2lvbi4nKTtcbiAgICB2YXIgb2Zmc2V0VG9EYXRhID0gcC5wYXJzZU9mZnNldDE2KCk7XG4gICAgLy8gU2tpcCBjb3VudFNpemVQYWlycy5cbiAgICBwLnNraXAoJ3VTaG9ydCcsIDEpO1xuICAgIHZhciBheGlzQ291bnQgPSBwLnBhcnNlVVNob3J0KCk7XG4gICAgdmFyIGF4aXNTaXplID0gcC5wYXJzZVVTaG9ydCgpO1xuICAgIHZhciBpbnN0YW5jZUNvdW50ID0gcC5wYXJzZVVTaG9ydCgpO1xuICAgIHZhciBpbnN0YW5jZVNpemUgPSBwLnBhcnNlVVNob3J0KCk7XG5cbiAgICB2YXIgYXhlcyA9IFtdO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXhpc0NvdW50OyBpKyspIHtcbiAgICAgICAgYXhlcy5wdXNoKHBhcnNlRnZhckF4aXMoZGF0YSwgc3RhcnQgKyBvZmZzZXRUb0RhdGEgKyBpICogYXhpc1NpemUsIG5hbWVzKSk7XG4gICAgfVxuXG4gICAgdmFyIGluc3RhbmNlcyA9IFtdO1xuICAgIHZhciBpbnN0YW5jZVN0YXJ0ID0gc3RhcnQgKyBvZmZzZXRUb0RhdGEgKyBheGlzQ291bnQgKiBheGlzU2l6ZTtcbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IGluc3RhbmNlQ291bnQ7IGorKykge1xuICAgICAgICBpbnN0YW5jZXMucHVzaChwYXJzZUZ2YXJJbnN0YW5jZShkYXRhLCBpbnN0YW5jZVN0YXJ0ICsgaiAqIGluc3RhbmNlU2l6ZSwgYXhlcywgbmFtZXMpKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge2F4ZXM6IGF4ZXMsIGluc3RhbmNlczogaW5zdGFuY2VzfTtcbn1cblxuZXhwb3J0cy5tYWtlID0gbWFrZUZ2YXJUYWJsZTtcbmV4cG9ydHMucGFyc2UgPSBwYXJzZUZ2YXJUYWJsZTtcbiIsIi8vIFRoZSBgZ2x5ZmAgdGFibGUgZGVzY3JpYmVzIHRoZSBnbHlwaHMgaW4gVHJ1ZVR5cGUgb3V0bGluZSBmb3JtYXQuXG4vLyBodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vdHlwb2dyYXBoeS9vdHNwZWMvZ2x5Zi5odG1cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgY2hlY2sgPSByZXF1aXJlKCcuLi9jaGVjaycpO1xudmFyIGdseXBoc2V0ID0gcmVxdWlyZSgnLi4vZ2x5cGhzZXQnKTtcbnZhciBwYXJzZSA9IHJlcXVpcmUoJy4uL3BhcnNlJyk7XG52YXIgcGF0aCA9IHJlcXVpcmUoJy4uL3BhdGgnKTtcblxuLy8gUGFyc2UgdGhlIGNvb3JkaW5hdGUgZGF0YSBmb3IgYSBnbHlwaC5cbmZ1bmN0aW9uIHBhcnNlR2x5cGhDb29yZGluYXRlKHAsIGZsYWcsIHByZXZpb3VzVmFsdWUsIHNob3J0VmVjdG9yQml0TWFzaywgc2FtZUJpdE1hc2spIHtcbiAgICB2YXIgdjtcbiAgICBpZiAoKGZsYWcgJiBzaG9ydFZlY3RvckJpdE1hc2spID4gMCkge1xuICAgICAgICAvLyBUaGUgY29vcmRpbmF0ZSBpcyAxIGJ5dGUgbG9uZy5cbiAgICAgICAgdiA9IHAucGFyc2VCeXRlKCk7XG4gICAgICAgIC8vIFRoZSBgc2FtZWAgYml0IGlzIHJlLXVzZWQgZm9yIHNob3J0IHZhbHVlcyB0byBzaWduaWZ5IHRoZSBzaWduIG9mIHRoZSB2YWx1ZS5cbiAgICAgICAgaWYgKChmbGFnICYgc2FtZUJpdE1hc2spID09PSAwKSB7XG4gICAgICAgICAgICB2ID0gLXY7XG4gICAgICAgIH1cblxuICAgICAgICB2ID0gcHJldmlvdXNWYWx1ZSArIHY7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgLy8gIFRoZSBjb29yZGluYXRlIGlzIDIgYnl0ZXMgbG9uZy5cbiAgICAgICAgLy8gSWYgdGhlIGBzYW1lYCBiaXQgaXMgc2V0LCB0aGUgY29vcmRpbmF0ZSBpcyB0aGUgc2FtZSBhcyB0aGUgcHJldmlvdXMgY29vcmRpbmF0ZS5cbiAgICAgICAgaWYgKChmbGFnICYgc2FtZUJpdE1hc2spID4gMCkge1xuICAgICAgICAgICAgdiA9IHByZXZpb3VzVmFsdWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBQYXJzZSB0aGUgY29vcmRpbmF0ZSBhcyBhIHNpZ25lZCAxNi1iaXQgZGVsdGEgdmFsdWUuXG4gICAgICAgICAgICB2ID0gcHJldmlvdXNWYWx1ZSArIHAucGFyc2VTaG9ydCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHY7XG59XG5cbi8vIFBhcnNlIGEgVHJ1ZVR5cGUgZ2x5cGguXG5mdW5jdGlvbiBwYXJzZUdseXBoKGdseXBoLCBkYXRhLCBzdGFydCkge1xuICAgIHZhciBwID0gbmV3IHBhcnNlLlBhcnNlcihkYXRhLCBzdGFydCk7XG4gICAgZ2x5cGgubnVtYmVyT2ZDb250b3VycyA9IHAucGFyc2VTaG9ydCgpO1xuICAgIGdseXBoLl94TWluID0gcC5wYXJzZVNob3J0KCk7XG4gICAgZ2x5cGguX3lNaW4gPSBwLnBhcnNlU2hvcnQoKTtcbiAgICBnbHlwaC5feE1heCA9IHAucGFyc2VTaG9ydCgpO1xuICAgIGdseXBoLl95TWF4ID0gcC5wYXJzZVNob3J0KCk7XG4gICAgdmFyIGZsYWdzO1xuICAgIHZhciBmbGFnO1xuICAgIGlmIChnbHlwaC5udW1iZXJPZkNvbnRvdXJzID4gMCkge1xuICAgICAgICB2YXIgaTtcbiAgICAgICAgLy8gVGhpcyBnbHlwaCBpcyBub3QgYSBjb21wb3NpdGUuXG4gICAgICAgIHZhciBlbmRQb2ludEluZGljZXMgPSBnbHlwaC5lbmRQb2ludEluZGljZXMgPSBbXTtcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IGdseXBoLm51bWJlck9mQ29udG91cnM7IGkgKz0gMSkge1xuICAgICAgICAgICAgZW5kUG9pbnRJbmRpY2VzLnB1c2gocC5wYXJzZVVTaG9ydCgpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGdseXBoLmluc3RydWN0aW9uTGVuZ3RoID0gcC5wYXJzZVVTaG9ydCgpO1xuICAgICAgICBnbHlwaC5pbnN0cnVjdGlvbnMgPSBbXTtcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IGdseXBoLmluc3RydWN0aW9uTGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgICAgICAgIGdseXBoLmluc3RydWN0aW9ucy5wdXNoKHAucGFyc2VCeXRlKCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIG51bWJlck9mQ29vcmRpbmF0ZXMgPSBlbmRQb2ludEluZGljZXNbZW5kUG9pbnRJbmRpY2VzLmxlbmd0aCAtIDFdICsgMTtcbiAgICAgICAgZmxhZ3MgPSBbXTtcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IG51bWJlck9mQ29vcmRpbmF0ZXM7IGkgKz0gMSkge1xuICAgICAgICAgICAgZmxhZyA9IHAucGFyc2VCeXRlKCk7XG4gICAgICAgICAgICBmbGFncy5wdXNoKGZsYWcpO1xuICAgICAgICAgICAgLy8gSWYgYml0IDMgaXMgc2V0LCB3ZSByZXBlYXQgdGhpcyBmbGFnIG4gdGltZXMsIHdoZXJlIG4gaXMgdGhlIG5leHQgYnl0ZS5cbiAgICAgICAgICAgIGlmICgoZmxhZyAmIDgpID4gMCkge1xuICAgICAgICAgICAgICAgIHZhciByZXBlYXRDb3VudCA9IHAucGFyc2VCeXRlKCk7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCByZXBlYXRDb3VudDsgaiArPSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIGZsYWdzLnB1c2goZmxhZyk7XG4gICAgICAgICAgICAgICAgICAgIGkgKz0gMTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjaGVjay5hcmd1bWVudChmbGFncy5sZW5ndGggPT09IG51bWJlck9mQ29vcmRpbmF0ZXMsICdCYWQgZmxhZ3MuJyk7XG5cbiAgICAgICAgaWYgKGVuZFBvaW50SW5kaWNlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB2YXIgcG9pbnRzID0gW107XG4gICAgICAgICAgICB2YXIgcG9pbnQ7XG4gICAgICAgICAgICAvLyBYL1kgY29vcmRpbmF0ZXMgYXJlIHJlbGF0aXZlIHRvIHRoZSBwcmV2aW91cyBwb2ludCwgZXhjZXB0IGZvciB0aGUgZmlyc3QgcG9pbnQgd2hpY2ggaXMgcmVsYXRpdmUgdG8gMCwwLlxuICAgICAgICAgICAgaWYgKG51bWJlck9mQ29vcmRpbmF0ZXMgPiAwKSB7XG4gICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IG51bWJlck9mQ29vcmRpbmF0ZXM7IGkgKz0gMSkge1xuICAgICAgICAgICAgICAgICAgICBmbGFnID0gZmxhZ3NbaV07XG4gICAgICAgICAgICAgICAgICAgIHBvaW50ID0ge307XG4gICAgICAgICAgICAgICAgICAgIHBvaW50Lm9uQ3VydmUgPSAhIShmbGFnICYgMSk7XG4gICAgICAgICAgICAgICAgICAgIHBvaW50Lmxhc3RQb2ludE9mQ29udG91ciA9IGVuZFBvaW50SW5kaWNlcy5pbmRleE9mKGkpID49IDA7XG4gICAgICAgICAgICAgICAgICAgIHBvaW50cy5wdXNoKHBvaW50KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB2YXIgcHggPSAwO1xuICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBudW1iZXJPZkNvb3JkaW5hdGVzOyBpICs9IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgZmxhZyA9IGZsYWdzW2ldO1xuICAgICAgICAgICAgICAgICAgICBwb2ludCA9IHBvaW50c1tpXTtcbiAgICAgICAgICAgICAgICAgICAgcG9pbnQueCA9IHBhcnNlR2x5cGhDb29yZGluYXRlKHAsIGZsYWcsIHB4LCAyLCAxNik7XG4gICAgICAgICAgICAgICAgICAgIHB4ID0gcG9pbnQueDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB2YXIgcHkgPSAwO1xuICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBudW1iZXJPZkNvb3JkaW5hdGVzOyBpICs9IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgZmxhZyA9IGZsYWdzW2ldO1xuICAgICAgICAgICAgICAgICAgICBwb2ludCA9IHBvaW50c1tpXTtcbiAgICAgICAgICAgICAgICAgICAgcG9pbnQueSA9IHBhcnNlR2x5cGhDb29yZGluYXRlKHAsIGZsYWcsIHB5LCA0LCAzMik7XG4gICAgICAgICAgICAgICAgICAgIHB5ID0gcG9pbnQueTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGdseXBoLnBvaW50cyA9IHBvaW50cztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGdseXBoLnBvaW50cyA9IFtdO1xuICAgICAgICB9XG4gICAgfSBlbHNlIGlmIChnbHlwaC5udW1iZXJPZkNvbnRvdXJzID09PSAwKSB7XG4gICAgICAgIGdseXBoLnBvaW50cyA9IFtdO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGdseXBoLmlzQ29tcG9zaXRlID0gdHJ1ZTtcbiAgICAgICAgZ2x5cGgucG9pbnRzID0gW107XG4gICAgICAgIGdseXBoLmNvbXBvbmVudHMgPSBbXTtcbiAgICAgICAgdmFyIG1vcmVDb21wb25lbnRzID0gdHJ1ZTtcbiAgICAgICAgd2hpbGUgKG1vcmVDb21wb25lbnRzKSB7XG4gICAgICAgICAgICBmbGFncyA9IHAucGFyc2VVU2hvcnQoKTtcbiAgICAgICAgICAgIHZhciBjb21wb25lbnQgPSB7XG4gICAgICAgICAgICAgICAgZ2x5cGhJbmRleDogcC5wYXJzZVVTaG9ydCgpLFxuICAgICAgICAgICAgICAgIHhTY2FsZTogMSxcbiAgICAgICAgICAgICAgICBzY2FsZTAxOiAwLFxuICAgICAgICAgICAgICAgIHNjYWxlMTA6IDAsXG4gICAgICAgICAgICAgICAgeVNjYWxlOiAxLFxuICAgICAgICAgICAgICAgIGR4OiAwLFxuICAgICAgICAgICAgICAgIGR5OiAwXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgaWYgKChmbGFncyAmIDEpID4gMCkge1xuICAgICAgICAgICAgICAgIC8vIFRoZSBhcmd1bWVudHMgYXJlIHdvcmRzXG4gICAgICAgICAgICAgICAgaWYgKChmbGFncyAmIDIpID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAvLyB2YWx1ZXMgYXJlIG9mZnNldFxuICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQuZHggPSBwLnBhcnNlU2hvcnQoKTtcbiAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LmR5ID0gcC5wYXJzZVNob3J0KCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gdmFsdWVzIGFyZSBtYXRjaGVkIHBvaW50c1xuICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQubWF0Y2hlZFBvaW50cyA9IFtwLnBhcnNlVVNob3J0KCksIHAucGFyc2VVU2hvcnQoKV07XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIFRoZSBhcmd1bWVudHMgYXJlIGJ5dGVzXG4gICAgICAgICAgICAgICAgaWYgKChmbGFncyAmIDIpID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAvLyB2YWx1ZXMgYXJlIG9mZnNldFxuICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQuZHggPSBwLnBhcnNlQ2hhcigpO1xuICAgICAgICAgICAgICAgICAgICBjb21wb25lbnQuZHkgPSBwLnBhcnNlQ2hhcigpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIHZhbHVlcyBhcmUgbWF0Y2hlZCBwb2ludHNcbiAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50Lm1hdGNoZWRQb2ludHMgPSBbcC5wYXJzZUJ5dGUoKSwgcC5wYXJzZUJ5dGUoKV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoKGZsYWdzICYgOCkgPiAwKSB7XG4gICAgICAgICAgICAgICAgLy8gV2UgaGF2ZSBhIHNjYWxlXG4gICAgICAgICAgICAgICAgY29tcG9uZW50LnhTY2FsZSA9IGNvbXBvbmVudC55U2NhbGUgPSBwLnBhcnNlRjJEb3QxNCgpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICgoZmxhZ3MgJiA2NCkgPiAwKSB7XG4gICAgICAgICAgICAgICAgLy8gV2UgaGF2ZSBhbiBYIC8gWSBzY2FsZVxuICAgICAgICAgICAgICAgIGNvbXBvbmVudC54U2NhbGUgPSBwLnBhcnNlRjJEb3QxNCgpO1xuICAgICAgICAgICAgICAgIGNvbXBvbmVudC55U2NhbGUgPSBwLnBhcnNlRjJEb3QxNCgpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICgoZmxhZ3MgJiAxMjgpID4gMCkge1xuICAgICAgICAgICAgICAgIC8vIFdlIGhhdmUgYSAyeDIgdHJhbnNmb3JtYXRpb25cbiAgICAgICAgICAgICAgICBjb21wb25lbnQueFNjYWxlID0gcC5wYXJzZUYyRG90MTQoKTtcbiAgICAgICAgICAgICAgICBjb21wb25lbnQuc2NhbGUwMSA9IHAucGFyc2VGMkRvdDE0KCk7XG4gICAgICAgICAgICAgICAgY29tcG9uZW50LnNjYWxlMTAgPSBwLnBhcnNlRjJEb3QxNCgpO1xuICAgICAgICAgICAgICAgIGNvbXBvbmVudC55U2NhbGUgPSBwLnBhcnNlRjJEb3QxNCgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBnbHlwaC5jb21wb25lbnRzLnB1c2goY29tcG9uZW50KTtcbiAgICAgICAgICAgIG1vcmVDb21wb25lbnRzID0gISEoZmxhZ3MgJiAzMik7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vIFRyYW5zZm9ybSBhbiBhcnJheSBvZiBwb2ludHMgYW5kIHJldHVybiBhIG5ldyBhcnJheS5cbmZ1bmN0aW9uIHRyYW5zZm9ybVBvaW50cyhwb2ludHMsIHRyYW5zZm9ybSkge1xuICAgIHZhciBuZXdQb2ludHMgPSBbXTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBvaW50cy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICB2YXIgcHQgPSBwb2ludHNbaV07XG4gICAgICAgIHZhciBuZXdQdCA9IHtcbiAgICAgICAgICAgIHg6IHRyYW5zZm9ybS54U2NhbGUgKiBwdC54ICsgdHJhbnNmb3JtLnNjYWxlMDEgKiBwdC55ICsgdHJhbnNmb3JtLmR4LFxuICAgICAgICAgICAgeTogdHJhbnNmb3JtLnNjYWxlMTAgKiBwdC54ICsgdHJhbnNmb3JtLnlTY2FsZSAqIHB0LnkgKyB0cmFuc2Zvcm0uZHksXG4gICAgICAgICAgICBvbkN1cnZlOiBwdC5vbkN1cnZlLFxuICAgICAgICAgICAgbGFzdFBvaW50T2ZDb250b3VyOiBwdC5sYXN0UG9pbnRPZkNvbnRvdXJcbiAgICAgICAgfTtcbiAgICAgICAgbmV3UG9pbnRzLnB1c2gobmV3UHQpO1xuICAgIH1cblxuICAgIHJldHVybiBuZXdQb2ludHM7XG59XG5cbmZ1bmN0aW9uIGdldENvbnRvdXJzKHBvaW50cykge1xuICAgIHZhciBjb250b3VycyA9IFtdO1xuICAgIHZhciBjdXJyZW50Q29udG91ciA9IFtdO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcG9pbnRzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICAgIHZhciBwdCA9IHBvaW50c1tpXTtcbiAgICAgICAgY3VycmVudENvbnRvdXIucHVzaChwdCk7XG4gICAgICAgIGlmIChwdC5sYXN0UG9pbnRPZkNvbnRvdXIpIHtcbiAgICAgICAgICAgIGNvbnRvdXJzLnB1c2goY3VycmVudENvbnRvdXIpO1xuICAgICAgICAgICAgY3VycmVudENvbnRvdXIgPSBbXTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNoZWNrLmFyZ3VtZW50KGN1cnJlbnRDb250b3VyLmxlbmd0aCA9PT0gMCwgJ1RoZXJlIGFyZSBzdGlsbCBwb2ludHMgbGVmdCBpbiB0aGUgY3VycmVudCBjb250b3VyLicpO1xuICAgIHJldHVybiBjb250b3Vycztcbn1cblxuLy8gQ29udmVydCB0aGUgVHJ1ZVR5cGUgZ2x5cGggb3V0bGluZSB0byBhIFBhdGguXG5mdW5jdGlvbiBnZXRQYXRoKHBvaW50cykge1xuICAgIHZhciBwID0gbmV3IHBhdGguUGF0aCgpO1xuICAgIGlmICghcG9pbnRzKSB7XG4gICAgICAgIHJldHVybiBwO1xuICAgIH1cblxuICAgIHZhciBjb250b3VycyA9IGdldENvbnRvdXJzKHBvaW50cyk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb250b3Vycy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICB2YXIgY29udG91ciA9IGNvbnRvdXJzW2ldO1xuICAgICAgICB2YXIgZmlyc3RQdCA9IGNvbnRvdXJbMF07XG4gICAgICAgIHZhciBsYXN0UHQgPSBjb250b3VyW2NvbnRvdXIubGVuZ3RoIC0gMV07XG4gICAgICAgIHZhciBjdXJ2ZVB0O1xuICAgICAgICB2YXIgcmVhbEZpcnN0UG9pbnQ7XG4gICAgICAgIGlmIChmaXJzdFB0Lm9uQ3VydmUpIHtcbiAgICAgICAgICAgIGN1cnZlUHQgPSBudWxsO1xuICAgICAgICAgICAgLy8gVGhlIGZpcnN0IHBvaW50IHdpbGwgYmUgY29uc3VtZWQgYnkgdGhlIG1vdmVUbyBjb21tYW5kLFxuICAgICAgICAgICAgLy8gc28gc2tpcCBpdCBpbiB0aGUgbG9vcC5cbiAgICAgICAgICAgIHJlYWxGaXJzdFBvaW50ID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChsYXN0UHQub25DdXJ2ZSkge1xuICAgICAgICAgICAgICAgIC8vIElmIHRoZSBmaXJzdCBwb2ludCBpcyBvZmYtY3VydmUgYW5kIHRoZSBsYXN0IHBvaW50IGlzIG9uLWN1cnZlLFxuICAgICAgICAgICAgICAgIC8vIHN0YXJ0IGF0IHRoZSBsYXN0IHBvaW50LlxuICAgICAgICAgICAgICAgIGZpcnN0UHQgPSBsYXN0UHQ7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIElmIGJvdGggZmlyc3QgYW5kIGxhc3QgcG9pbnRzIGFyZSBvZmYtY3VydmUsIHN0YXJ0IGF0IHRoZWlyIG1pZGRsZS5cbiAgICAgICAgICAgICAgICBmaXJzdFB0ID0geyB4OiAoZmlyc3RQdC54ICsgbGFzdFB0LngpIC8gMiwgeTogKGZpcnN0UHQueSArIGxhc3RQdC55KSAvIDIgfTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY3VydmVQdCA9IGZpcnN0UHQ7XG4gICAgICAgICAgICAvLyBUaGUgZmlyc3QgcG9pbnQgaXMgc3ludGhlc2l6ZWQsIHNvIGRvbid0IHNraXAgdGhlIHJlYWwgZmlyc3QgcG9pbnQuXG4gICAgICAgICAgICByZWFsRmlyc3RQb2ludCA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgcC5tb3ZlVG8oZmlyc3RQdC54LCBmaXJzdFB0LnkpO1xuXG4gICAgICAgIGZvciAodmFyIGogPSByZWFsRmlyc3RQb2ludCA/IDEgOiAwOyBqIDwgY29udG91ci5sZW5ndGg7IGogKz0gMSkge1xuICAgICAgICAgICAgdmFyIHB0ID0gY29udG91cltqXTtcbiAgICAgICAgICAgIHZhciBwcmV2UHQgPSBqID09PSAwID8gZmlyc3RQdCA6IGNvbnRvdXJbaiAtIDFdO1xuICAgICAgICAgICAgaWYgKHByZXZQdC5vbkN1cnZlICYmIHB0Lm9uQ3VydmUpIHtcbiAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIGEgc3RyYWlnaHQgbGluZS5cbiAgICAgICAgICAgICAgICBwLmxpbmVUbyhwdC54LCBwdC55KTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocHJldlB0Lm9uQ3VydmUgJiYgIXB0Lm9uQ3VydmUpIHtcbiAgICAgICAgICAgICAgICBjdXJ2ZVB0ID0gcHQ7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCFwcmV2UHQub25DdXJ2ZSAmJiAhcHQub25DdXJ2ZSkge1xuICAgICAgICAgICAgICAgIHZhciBtaWRQdCA9IHsgeDogKHByZXZQdC54ICsgcHQueCkgLyAyLCB5OiAocHJldlB0LnkgKyBwdC55KSAvIDIgfTtcbiAgICAgICAgICAgICAgICBwLnF1YWRyYXRpY0N1cnZlVG8ocHJldlB0LngsIHByZXZQdC55LCBtaWRQdC54LCBtaWRQdC55KTtcbiAgICAgICAgICAgICAgICBjdXJ2ZVB0ID0gcHQ7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCFwcmV2UHQub25DdXJ2ZSAmJiBwdC5vbkN1cnZlKSB7XG4gICAgICAgICAgICAgICAgLy8gUHJldmlvdXMgcG9pbnQgb2ZmLWN1cnZlLCB0aGlzIHBvaW50IG9uLWN1cnZlLlxuICAgICAgICAgICAgICAgIHAucXVhZHJhdGljQ3VydmVUbyhjdXJ2ZVB0LngsIGN1cnZlUHQueSwgcHQueCwgcHQueSk7XG4gICAgICAgICAgICAgICAgY3VydmVQdCA9IG51bGw7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBzdGF0ZS4nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChmaXJzdFB0ICE9PSBsYXN0UHQpIHtcbiAgICAgICAgICAgIC8vIENvbm5lY3QgdGhlIGxhc3QgYW5kIGZpcnN0IHBvaW50c1xuICAgICAgICAgICAgaWYgKGN1cnZlUHQpIHtcbiAgICAgICAgICAgICAgICBwLnF1YWRyYXRpY0N1cnZlVG8oY3VydmVQdC54LCBjdXJ2ZVB0LnksIGZpcnN0UHQueCwgZmlyc3RQdC55KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcC5saW5lVG8oZmlyc3RQdC54LCBmaXJzdFB0LnkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcC5jbG9zZVBhdGgoKTtcbiAgICByZXR1cm4gcDtcbn1cblxuZnVuY3Rpb24gYnVpbGRQYXRoKGdseXBocywgZ2x5cGgpIHtcbiAgICBpZiAoZ2x5cGguaXNDb21wb3NpdGUpIHtcbiAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBnbHlwaC5jb21wb25lbnRzLmxlbmd0aDsgaiArPSAxKSB7XG4gICAgICAgICAgICB2YXIgY29tcG9uZW50ID0gZ2x5cGguY29tcG9uZW50c1tqXTtcbiAgICAgICAgICAgIHZhciBjb21wb25lbnRHbHlwaCA9IGdseXBocy5nZXQoY29tcG9uZW50LmdseXBoSW5kZXgpO1xuICAgICAgICAgICAgLy8gRm9yY2UgdGhlIHR0ZkdseXBoTG9hZGVyIHRvIHBhcnNlIHRoZSBnbHlwaC5cbiAgICAgICAgICAgIGNvbXBvbmVudEdseXBoLmdldFBhdGgoKTtcbiAgICAgICAgICAgIGlmIChjb21wb25lbnRHbHlwaC5wb2ludHMpIHtcbiAgICAgICAgICAgICAgICB2YXIgdHJhbnNmb3JtZWRQb2ludHM7XG4gICAgICAgICAgICAgICAgaWYgKGNvbXBvbmVudC5tYXRjaGVkUG9pbnRzID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gY29tcG9uZW50IHBvc2l0aW9uZWQgYnkgb2Zmc2V0XG4gICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybWVkUG9pbnRzID0gdHJhbnNmb3JtUG9pbnRzKGNvbXBvbmVudEdseXBoLnBvaW50cywgY29tcG9uZW50KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyBjb21wb25lbnQgcG9zaXRpb25lZCBieSBtYXRjaGVkIHBvaW50c1xuICAgICAgICAgICAgICAgICAgICBpZiAoKGNvbXBvbmVudC5tYXRjaGVkUG9pbnRzWzBdID4gZ2x5cGgucG9pbnRzLmxlbmd0aCAtIDEpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAoY29tcG9uZW50Lm1hdGNoZWRQb2ludHNbMV0gPiBjb21wb25lbnRHbHlwaC5wb2ludHMubGVuZ3RoIC0gMSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yKCdNYXRjaGVkIHBvaW50cyBvdXQgb2YgcmFuZ2UgaW4gJyArIGdseXBoLm5hbWUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHZhciBmaXJzdFB0ID0gZ2x5cGgucG9pbnRzW2NvbXBvbmVudC5tYXRjaGVkUG9pbnRzWzBdXTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHNlY29uZFB0ID0gY29tcG9uZW50R2x5cGgucG9pbnRzW2NvbXBvbmVudC5tYXRjaGVkUG9pbnRzWzFdXTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRyYW5zZm9ybSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHhTY2FsZTogY29tcG9uZW50LnhTY2FsZSwgc2NhbGUwMTogY29tcG9uZW50LnNjYWxlMDEsXG4gICAgICAgICAgICAgICAgICAgICAgICBzY2FsZTEwOiBjb21wb25lbnQuc2NhbGUxMCwgeVNjYWxlOiBjb21wb25lbnQueVNjYWxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZHg6IDAsIGR5OiAwXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIHNlY29uZFB0ID0gdHJhbnNmb3JtUG9pbnRzKFtzZWNvbmRQdF0sIHRyYW5zZm9ybSlbMF07XG4gICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybS5keCA9IGZpcnN0UHQueCAtIHNlY29uZFB0Lng7XG4gICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybS5keSA9IGZpcnN0UHQueSAtIHNlY29uZFB0Lnk7XG4gICAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybWVkUG9pbnRzID0gdHJhbnNmb3JtUG9pbnRzKGNvbXBvbmVudEdseXBoLnBvaW50cywgdHJhbnNmb3JtKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZ2x5cGgucG9pbnRzID0gZ2x5cGgucG9pbnRzLmNvbmNhdCh0cmFuc2Zvcm1lZFBvaW50cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZ2V0UGF0aChnbHlwaC5wb2ludHMpO1xufVxuXG4vLyBQYXJzZSBhbGwgdGhlIGdseXBocyBhY2NvcmRpbmcgdG8gdGhlIG9mZnNldHMgZnJvbSB0aGUgYGxvY2FgIHRhYmxlLlxuZnVuY3Rpb24gcGFyc2VHbHlmVGFibGUoZGF0YSwgc3RhcnQsIGxvY2EsIGZvbnQpIHtcbiAgICB2YXIgZ2x5cGhzID0gbmV3IGdseXBoc2V0LkdseXBoU2V0KGZvbnQpO1xuICAgIHZhciBpO1xuXG4gICAgLy8gVGhlIGxhc3QgZWxlbWVudCBvZiB0aGUgbG9jYSB0YWJsZSBpcyBpbnZhbGlkLlxuICAgIGZvciAoaSA9IDA7IGkgPCBsb2NhLmxlbmd0aCAtIDE7IGkgKz0gMSkge1xuICAgICAgICB2YXIgb2Zmc2V0ID0gbG9jYVtpXTtcbiAgICAgICAgdmFyIG5leHRPZmZzZXQgPSBsb2NhW2kgKyAxXTtcbiAgICAgICAgaWYgKG9mZnNldCAhPT0gbmV4dE9mZnNldCkge1xuICAgICAgICAgICAgZ2x5cGhzLnB1c2goaSwgZ2x5cGhzZXQudHRmR2x5cGhMb2FkZXIoZm9udCwgaSwgcGFyc2VHbHlwaCwgZGF0YSwgc3RhcnQgKyBvZmZzZXQsIGJ1aWxkUGF0aCkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZ2x5cGhzLnB1c2goaSwgZ2x5cGhzZXQuZ2x5cGhMb2FkZXIoZm9udCwgaSkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGdseXBocztcbn1cblxuZXhwb3J0cy5wYXJzZSA9IHBhcnNlR2x5ZlRhYmxlO1xuIiwiLy8gVGhlIGBHUE9TYCB0YWJsZSBjb250YWlucyBrZXJuaW5nIHBhaXJzLCBhbW9uZyBvdGhlciB0aGluZ3MuXG4vLyBodHRwczovL3d3dy5taWNyb3NvZnQuY29tL3R5cG9ncmFwaHkvT1RTUEVDL2dwb3MuaHRtXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIGNoZWNrID0gcmVxdWlyZSgnLi4vY2hlY2snKTtcbnZhciBwYXJzZSA9IHJlcXVpcmUoJy4uL3BhcnNlJyk7XG5cbi8vIFBhcnNlIFNjcmlwdExpc3QgYW5kIEZlYXR1cmVMaXN0IHRhYmxlcyBvZiBHUE9TLCBHU1VCLCBHREVGLCBCQVNFLCBKU1RGIHRhYmxlcy5cbi8vIFRoZXNlIGxpc3RzIGFyZSB1bnVzZWQgYnkgbm93LCB0aGlzIGZ1bmN0aW9uIGlzIGp1c3QgdGhlIGJhc2lzIGZvciBhIHJlYWwgcGFyc2luZy5cbmZ1bmN0aW9uIHBhcnNlVGFnZ2VkTGlzdFRhYmxlKGRhdGEsIHN0YXJ0KSB7XG4gICAgdmFyIHAgPSBuZXcgcGFyc2UuUGFyc2VyKGRhdGEsIHN0YXJ0KTtcbiAgICB2YXIgbiA9IHAucGFyc2VVU2hvcnQoKTtcbiAgICB2YXIgbGlzdCA9IFtdO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgIGxpc3RbcC5wYXJzZVRhZygpXSA9IHsgb2Zmc2V0OiBwLnBhcnNlVVNob3J0KCkgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gbGlzdDtcbn1cblxuLy8gUGFyc2UgYSBjb3ZlcmFnZSB0YWJsZSBpbiBhIEdTVUIsIEdQT1Mgb3IgR0RFRiB0YWJsZS5cbi8vIEZvcm1hdCAxIGlzIGEgc2ltcGxlIGxpc3Qgb2YgZ2x5cGggaWRzLFxuLy8gRm9ybWF0IDIgaXMgYSBsaXN0IG9mIHJhbmdlcy4gSXQgaXMgZXhwYW5kZWQgaW4gYSBsaXN0IG9mIGdseXBocywgbWF5YmUgbm90IHRoZSBiZXN0IGlkZWEuXG5mdW5jdGlvbiBwYXJzZUNvdmVyYWdlVGFibGUoZGF0YSwgc3RhcnQpIHtcbiAgICB2YXIgcCA9IG5ldyBwYXJzZS5QYXJzZXIoZGF0YSwgc3RhcnQpO1xuICAgIHZhciBmb3JtYXQgPSBwLnBhcnNlVVNob3J0KCk7XG4gICAgdmFyIGNvdW50ID0gIHAucGFyc2VVU2hvcnQoKTtcbiAgICBpZiAoZm9ybWF0ID09PSAxKSB7XG4gICAgICAgIHJldHVybiBwLnBhcnNlVVNob3J0TGlzdChjb3VudCk7XG4gICAgfSBlbHNlIGlmIChmb3JtYXQgPT09IDIpIHtcbiAgICAgICAgdmFyIGNvdmVyYWdlID0gW107XG4gICAgICAgIGZvciAoOyBjb3VudC0tOykge1xuICAgICAgICAgICAgdmFyIGJlZ2luID0gcC5wYXJzZVVTaG9ydCgpO1xuICAgICAgICAgICAgdmFyIGVuZCA9IHAucGFyc2VVU2hvcnQoKTtcbiAgICAgICAgICAgIHZhciBpbmRleCA9IHAucGFyc2VVU2hvcnQoKTtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSBiZWdpbjsgaSA8PSBlbmQ7IGkrKykge1xuICAgICAgICAgICAgICAgIGNvdmVyYWdlW2luZGV4KytdID0gaTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjb3ZlcmFnZTtcbiAgICB9XG59XG5cbi8vIFBhcnNlIGEgQ2xhc3MgRGVmaW5pdGlvbiBUYWJsZSBpbiBhIEdTVUIsIEdQT1Mgb3IgR0RFRiB0YWJsZS5cbi8vIFJldHVybnMgYSBmdW5jdGlvbiB0aGF0IGdldHMgYSBjbGFzcyB2YWx1ZSBmcm9tIGEgZ2x5cGggSUQuXG5mdW5jdGlvbiBwYXJzZUNsYXNzRGVmVGFibGUoZGF0YSwgc3RhcnQpIHtcbiAgICB2YXIgcCA9IG5ldyBwYXJzZS5QYXJzZXIoZGF0YSwgc3RhcnQpO1xuICAgIHZhciBmb3JtYXQgPSBwLnBhcnNlVVNob3J0KCk7XG4gICAgaWYgKGZvcm1hdCA9PT0gMSkge1xuICAgICAgICAvLyBGb3JtYXQgMSBzcGVjaWZpZXMgYSByYW5nZSBvZiBjb25zZWN1dGl2ZSBnbHlwaCBpbmRpY2VzLCBvbmUgY2xhc3MgcGVyIGdseXBoIElELlxuICAgICAgICB2YXIgc3RhcnRHbHlwaCA9IHAucGFyc2VVU2hvcnQoKTtcbiAgICAgICAgdmFyIGdseXBoQ291bnQgPSBwLnBhcnNlVVNob3J0KCk7XG4gICAgICAgIHZhciBjbGFzc2VzID0gcC5wYXJzZVVTaG9ydExpc3QoZ2x5cGhDb3VudCk7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbihnbHlwaElEKSB7XG4gICAgICAgICAgICByZXR1cm4gY2xhc3Nlc1tnbHlwaElEIC0gc3RhcnRHbHlwaF0gfHwgMDtcbiAgICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKGZvcm1hdCA9PT0gMikge1xuICAgICAgICAvLyBGb3JtYXQgMiBkZWZpbmVzIG11bHRpcGxlIGdyb3VwcyBvZiBnbHlwaCBpbmRpY2VzIHRoYXQgYmVsb25nIHRvIHRoZSBzYW1lIGNsYXNzLlxuICAgICAgICB2YXIgcmFuZ2VDb3VudCA9IHAucGFyc2VVU2hvcnQoKTtcbiAgICAgICAgdmFyIHN0YXJ0R2x5cGhzID0gW107XG4gICAgICAgIHZhciBlbmRHbHlwaHMgPSBbXTtcbiAgICAgICAgdmFyIGNsYXNzVmFsdWVzID0gW107XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmFuZ2VDb3VudDsgaSsrKSB7XG4gICAgICAgICAgICBzdGFydEdseXBoc1tpXSA9IHAucGFyc2VVU2hvcnQoKTtcbiAgICAgICAgICAgIGVuZEdseXBoc1tpXSA9IHAucGFyc2VVU2hvcnQoKTtcbiAgICAgICAgICAgIGNsYXNzVmFsdWVzW2ldID0gcC5wYXJzZVVTaG9ydCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGdseXBoSUQpIHtcbiAgICAgICAgICAgIHZhciBsID0gMDtcbiAgICAgICAgICAgIHZhciByID0gc3RhcnRHbHlwaHMubGVuZ3RoIC0gMTtcbiAgICAgICAgICAgIHdoaWxlIChsIDwgcikge1xuICAgICAgICAgICAgICAgIHZhciBjID0gKGwgKyByICsgMSkgPj4gMTtcbiAgICAgICAgICAgICAgICBpZiAoZ2x5cGhJRCA8IHN0YXJ0R2x5cGhzW2NdKSB7XG4gICAgICAgICAgICAgICAgICAgIHIgPSBjIC0gMTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBsID0gYztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChzdGFydEdseXBoc1tsXSA8PSBnbHlwaElEICYmIGdseXBoSUQgPD0gZW5kR2x5cGhzW2xdKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNsYXNzVmFsdWVzW2xdIHx8IDA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9O1xuICAgIH1cbn1cblxuLy8gUGFyc2UgYSBwYWlyIGFkanVzdG1lbnQgcG9zaXRpb25pbmcgc3VidGFibGUsIGZvcm1hdCAxIG9yIGZvcm1hdCAyXG4vLyBUaGUgc3VidGFibGUgaXMgcmV0dXJuZWQgaW4gdGhlIGZvcm0gb2YgYSBsb29rdXAgZnVuY3Rpb24uXG5mdW5jdGlvbiBwYXJzZVBhaXJQb3NTdWJUYWJsZShkYXRhLCBzdGFydCkge1xuICAgIHZhciBwID0gbmV3IHBhcnNlLlBhcnNlcihkYXRhLCBzdGFydCk7XG4gICAgLy8gVGhpcyBwYXJ0IGlzIGNvbW1vbiB0byBmb3JtYXQgMSBhbmQgZm9ybWF0IDIgc3VidGFibGVzXG4gICAgdmFyIGZvcm1hdCA9IHAucGFyc2VVU2hvcnQoKTtcbiAgICB2YXIgY292ZXJhZ2VPZmZzZXQgPSBwLnBhcnNlVVNob3J0KCk7XG4gICAgdmFyIGNvdmVyYWdlID0gcGFyc2VDb3ZlcmFnZVRhYmxlKGRhdGEsIHN0YXJ0ICsgY292ZXJhZ2VPZmZzZXQpO1xuICAgIC8vIHZhbHVlRm9ybWF0IDQ6IFhBZHZhbmNlIG9ubHksIDE6IFhQbGFjZW1lbnQgb25seSwgMDogbm8gVmFsdWVSZWNvcmQgZm9yIHNlY29uZCBnbHlwaFxuICAgIC8vIE9ubHkgdmFsdWVGb3JtYXQxPTQgYW5kIHZhbHVlRm9ybWF0Mj0wIGlzIHN1cHBvcnRlZC5cbiAgICB2YXIgdmFsdWVGb3JtYXQxID0gcC5wYXJzZVVTaG9ydCgpO1xuICAgIHZhciB2YWx1ZUZvcm1hdDIgPSBwLnBhcnNlVVNob3J0KCk7XG4gICAgdmFyIHZhbHVlMTtcbiAgICB2YXIgdmFsdWUyO1xuICAgIGlmICh2YWx1ZUZvcm1hdDEgIT09IDQgfHwgdmFsdWVGb3JtYXQyICE9PSAwKSByZXR1cm47XG4gICAgdmFyIHNoYXJlZFBhaXJTZXRzID0ge307XG4gICAgaWYgKGZvcm1hdCA9PT0gMSkge1xuICAgICAgICAvLyBQYWlyIFBvc2l0aW9uaW5nIEFkanVzdG1lbnQ6IEZvcm1hdCAxXG4gICAgICAgIHZhciBwYWlyU2V0Q291bnQgPSBwLnBhcnNlVVNob3J0KCk7XG4gICAgICAgIHZhciBwYWlyU2V0ID0gW107XG4gICAgICAgIC8vIEFycmF5IG9mIG9mZnNldHMgdG8gUGFpclNldCB0YWJsZXMtZnJvbSBiZWdpbm5pbmcgb2YgUGFpclBvcyBzdWJ0YWJsZS1vcmRlcmVkIGJ5IENvdmVyYWdlIEluZGV4XG4gICAgICAgIHZhciBwYWlyU2V0T2Zmc2V0cyA9IHAucGFyc2VPZmZzZXQxNkxpc3QocGFpclNldENvdW50KTtcbiAgICAgICAgZm9yICh2YXIgZmlyc3RHbHlwaCA9IDA7IGZpcnN0R2x5cGggPCBwYWlyU2V0Q291bnQ7IGZpcnN0R2x5cGgrKykge1xuICAgICAgICAgICAgdmFyIHBhaXJTZXRPZmZzZXQgPSBwYWlyU2V0T2Zmc2V0c1tmaXJzdEdseXBoXTtcbiAgICAgICAgICAgIHZhciBzaGFyZWRQYWlyU2V0ID0gc2hhcmVkUGFpclNldHNbcGFpclNldE9mZnNldF07XG4gICAgICAgICAgICBpZiAoIXNoYXJlZFBhaXJTZXQpIHtcbiAgICAgICAgICAgICAgICAvLyBQYXJzZSBhIHBhaXJzZXQgdGFibGUgaW4gYSBwYWlyIGFkanVzdG1lbnQgc3VidGFibGUgZm9ybWF0IDFcbiAgICAgICAgICAgICAgICBzaGFyZWRQYWlyU2V0ID0ge307XG4gICAgICAgICAgICAgICAgcC5yZWxhdGl2ZU9mZnNldCA9IHBhaXJTZXRPZmZzZXQ7XG4gICAgICAgICAgICAgICAgdmFyIHBhaXJWYWx1ZUNvdW50ID0gcC5wYXJzZVVTaG9ydCgpO1xuICAgICAgICAgICAgICAgIGZvciAoOyBwYWlyVmFsdWVDb3VudC0tOykge1xuICAgICAgICAgICAgICAgICAgICB2YXIgc2Vjb25kR2x5cGggPSBwLnBhcnNlVVNob3J0KCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZUZvcm1hdDEpIHZhbHVlMSA9IHAucGFyc2VTaG9ydCgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWVGb3JtYXQyKSB2YWx1ZTIgPSBwLnBhcnNlU2hvcnQoKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gV2Ugb25seSBzdXBwb3J0IHZhbHVlRm9ybWF0MSA9IDQgYW5kIHZhbHVlRm9ybWF0MiA9IDAsXG4gICAgICAgICAgICAgICAgICAgIC8vIHNvIHZhbHVlMSBpcyB0aGUgWEFkdmFuY2UgYW5kIHZhbHVlMiBpcyBlbXB0eS5cbiAgICAgICAgICAgICAgICAgICAgc2hhcmVkUGFpclNldFtzZWNvbmRHbHlwaF0gPSB2YWx1ZTE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBwYWlyU2V0W2NvdmVyYWdlW2ZpcnN0R2x5cGhdXSA9IHNoYXJlZFBhaXJTZXQ7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZnVuY3Rpb24obGVmdEdseXBoLCByaWdodEdseXBoKSB7XG4gICAgICAgICAgICB2YXIgcGFpcnMgPSBwYWlyU2V0W2xlZnRHbHlwaF07XG4gICAgICAgICAgICBpZiAocGFpcnMpIHJldHVybiBwYWlyc1tyaWdodEdseXBoXTtcbiAgICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKGZvcm1hdCA9PT0gMikge1xuICAgICAgICAvLyBQYWlyIFBvc2l0aW9uaW5nIEFkanVzdG1lbnQ6IEZvcm1hdCAyXG4gICAgICAgIHZhciBjbGFzc0RlZjFPZmZzZXQgPSBwLnBhcnNlVVNob3J0KCk7XG4gICAgICAgIHZhciBjbGFzc0RlZjJPZmZzZXQgPSBwLnBhcnNlVVNob3J0KCk7XG4gICAgICAgIHZhciBjbGFzczFDb3VudCA9IHAucGFyc2VVU2hvcnQoKTtcbiAgICAgICAgdmFyIGNsYXNzMkNvdW50ID0gcC5wYXJzZVVTaG9ydCgpO1xuICAgICAgICB2YXIgZ2V0Q2xhc3MxID0gcGFyc2VDbGFzc0RlZlRhYmxlKGRhdGEsIHN0YXJ0ICsgY2xhc3NEZWYxT2Zmc2V0KTtcbiAgICAgICAgdmFyIGdldENsYXNzMiA9IHBhcnNlQ2xhc3NEZWZUYWJsZShkYXRhLCBzdGFydCArIGNsYXNzRGVmMk9mZnNldCk7XG5cbiAgICAgICAgLy8gUGFyc2Uga2VybmluZyB2YWx1ZXMgYnkgY2xhc3MgcGFpci5cbiAgICAgICAgdmFyIGtlcm5pbmdNYXRyaXggPSBbXTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjbGFzczFDb3VudDsgaSsrKSB7XG4gICAgICAgICAgICB2YXIga2VybmluZ1JvdyA9IGtlcm5pbmdNYXRyaXhbaV0gPSBbXTtcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgY2xhc3MyQ291bnQ7IGorKykge1xuICAgICAgICAgICAgICAgIGlmICh2YWx1ZUZvcm1hdDEpIHZhbHVlMSA9IHAucGFyc2VTaG9ydCgpO1xuICAgICAgICAgICAgICAgIGlmICh2YWx1ZUZvcm1hdDIpIHZhbHVlMiA9IHAucGFyc2VTaG9ydCgpO1xuICAgICAgICAgICAgICAgIC8vIFdlIG9ubHkgc3VwcG9ydCB2YWx1ZUZvcm1hdDEgPSA0IGFuZCB2YWx1ZUZvcm1hdDIgPSAwLFxuICAgICAgICAgICAgICAgIC8vIHNvIHZhbHVlMSBpcyB0aGUgWEFkdmFuY2UgYW5kIHZhbHVlMiBpcyBlbXB0eS5cbiAgICAgICAgICAgICAgICBrZXJuaW5nUm93W2pdID0gdmFsdWUxO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ29udmVydCBjb3ZlcmFnZSBsaXN0IHRvIGEgaGFzaFxuICAgICAgICB2YXIgY292ZXJlZCA9IHt9O1xuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgY292ZXJhZ2UubGVuZ3RoOyBpKyspIGNvdmVyZWRbY292ZXJhZ2VbaV1dID0gMTtcblxuICAgICAgICAvLyBHZXQgdGhlIGtlcm5pbmcgdmFsdWUgZm9yIGEgc3BlY2lmaWMgZ2x5cGggcGFpci5cbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGxlZnRHbHlwaCwgcmlnaHRHbHlwaCkge1xuICAgICAgICAgICAgaWYgKCFjb3ZlcmVkW2xlZnRHbHlwaF0pIHJldHVybjtcbiAgICAgICAgICAgIHZhciBjbGFzczEgPSBnZXRDbGFzczEobGVmdEdseXBoKTtcbiAgICAgICAgICAgIHZhciBjbGFzczIgPSBnZXRDbGFzczIocmlnaHRHbHlwaCk7XG4gICAgICAgICAgICB2YXIga2VybmluZ1JvdyA9IGtlcm5pbmdNYXRyaXhbY2xhc3MxXTtcblxuICAgICAgICAgICAgaWYgKGtlcm5pbmdSb3cpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ga2VybmluZ1Jvd1tjbGFzczJdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgIH1cbn1cblxuLy8gUGFyc2UgYSBMb29rdXBUYWJsZSAocHJlc2VudCBpbiBvZiBHUE9TLCBHU1VCLCBHREVGLCBCQVNFLCBKU1RGIHRhYmxlcykuXG5mdW5jdGlvbiBwYXJzZUxvb2t1cFRhYmxlKGRhdGEsIHN0YXJ0KSB7XG4gICAgdmFyIHAgPSBuZXcgcGFyc2UuUGFyc2VyKGRhdGEsIHN0YXJ0KTtcbiAgICB2YXIgbG9va3VwVHlwZSA9IHAucGFyc2VVU2hvcnQoKTtcbiAgICB2YXIgbG9va3VwRmxhZyA9IHAucGFyc2VVU2hvcnQoKTtcbiAgICB2YXIgdXNlTWFya0ZpbHRlcmluZ1NldCA9IGxvb2t1cEZsYWcgJiAweDEwO1xuICAgIHZhciBzdWJUYWJsZUNvdW50ID0gcC5wYXJzZVVTaG9ydCgpO1xuICAgIHZhciBzdWJUYWJsZU9mZnNldHMgPSBwLnBhcnNlT2Zmc2V0MTZMaXN0KHN1YlRhYmxlQ291bnQpO1xuICAgIHZhciB0YWJsZSA9IHtcbiAgICAgICAgbG9va3VwVHlwZTogbG9va3VwVHlwZSxcbiAgICAgICAgbG9va3VwRmxhZzogbG9va3VwRmxhZyxcbiAgICAgICAgbWFya0ZpbHRlcmluZ1NldDogdXNlTWFya0ZpbHRlcmluZ1NldCA/IHAucGFyc2VVU2hvcnQoKSA6IC0xXG4gICAgfTtcbiAgICAvLyBMb29rdXBUeXBlIDIsIFBhaXIgYWRqdXN0bWVudFxuICAgIGlmIChsb29rdXBUeXBlID09PSAyKSB7XG4gICAgICAgIHZhciBzdWJ0YWJsZXMgPSBbXTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdWJUYWJsZUNvdW50OyBpKyspIHtcbiAgICAgICAgICAgIHZhciBwYWlyUG9zU3ViVGFibGUgPSBwYXJzZVBhaXJQb3NTdWJUYWJsZShkYXRhLCBzdGFydCArIHN1YlRhYmxlT2Zmc2V0c1tpXSk7XG4gICAgICAgICAgICBpZiAocGFpclBvc1N1YlRhYmxlKSBzdWJ0YWJsZXMucHVzaChwYWlyUG9zU3ViVGFibGUpO1xuICAgICAgICB9XG4gICAgICAgIC8vIFJldHVybiBhIGZ1bmN0aW9uIHdoaWNoIGZpbmRzIHRoZSBrZXJuaW5nIHZhbHVlcyBpbiB0aGUgc3VidGFibGVzLlxuICAgICAgICB0YWJsZS5nZXRLZXJuaW5nVmFsdWUgPSBmdW5jdGlvbihsZWZ0R2x5cGgsIHJpZ2h0R2x5cGgpIHtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSBzdWJ0YWJsZXMubGVuZ3RoOyBpLS07KSB7XG4gICAgICAgICAgICAgICAgdmFyIHZhbHVlID0gc3VidGFibGVzW2ldKGxlZnRHbHlwaCwgcmlnaHRHbHlwaCk7XG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHJldHVybiB2YWx1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHRhYmxlO1xufVxuXG4vLyBQYXJzZSB0aGUgYEdQT1NgIHRhYmxlIHdoaWNoIGNvbnRhaW5zLCBhbW9uZyBvdGhlciB0aGluZ3MsIGtlcm5pbmcgcGFpcnMuXG4vLyBodHRwczovL3d3dy5taWNyb3NvZnQuY29tL3R5cG9ncmFwaHkvT1RTUEVDL2dwb3MuaHRtXG5mdW5jdGlvbiBwYXJzZUdwb3NUYWJsZShkYXRhLCBzdGFydCwgZm9udCkge1xuICAgIHZhciBwID0gbmV3IHBhcnNlLlBhcnNlcihkYXRhLCBzdGFydCk7XG4gICAgdmFyIHRhYmxlVmVyc2lvbiA9IHAucGFyc2VGaXhlZCgpO1xuICAgIGNoZWNrLmFyZ3VtZW50KHRhYmxlVmVyc2lvbiA9PT0gMSwgJ1Vuc3VwcG9ydGVkIEdQT1MgdGFibGUgdmVyc2lvbi4nKTtcblxuICAgIC8vIFNjcmlwdExpc3QgYW5kIEZlYXR1cmVMaXN0IC0gaWdub3JlZCBmb3Igbm93XG4gICAgcGFyc2VUYWdnZWRMaXN0VGFibGUoZGF0YSwgc3RhcnQgKyBwLnBhcnNlVVNob3J0KCkpO1xuICAgIC8vICdrZXJuJyBpcyB0aGUgZmVhdHVyZSB3ZSBhcmUgbG9va2luZyBmb3IuXG4gICAgcGFyc2VUYWdnZWRMaXN0VGFibGUoZGF0YSwgc3RhcnQgKyBwLnBhcnNlVVNob3J0KCkpO1xuXG4gICAgLy8gTG9va3VwTGlzdFxuICAgIHZhciBsb29rdXBMaXN0T2Zmc2V0ID0gcC5wYXJzZVVTaG9ydCgpO1xuICAgIHAucmVsYXRpdmVPZmZzZXQgPSBsb29rdXBMaXN0T2Zmc2V0O1xuICAgIHZhciBsb29rdXBDb3VudCA9IHAucGFyc2VVU2hvcnQoKTtcbiAgICB2YXIgbG9va3VwVGFibGVPZmZzZXRzID0gcC5wYXJzZU9mZnNldDE2TGlzdChsb29rdXBDb3VudCk7XG4gICAgdmFyIGxvb2t1cExpc3RBYnNvbHV0ZU9mZnNldCA9IHN0YXJ0ICsgbG9va3VwTGlzdE9mZnNldDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxvb2t1cENvdW50OyBpKyspIHtcbiAgICAgICAgdmFyIHRhYmxlID0gcGFyc2VMb29rdXBUYWJsZShkYXRhLCBsb29rdXBMaXN0QWJzb2x1dGVPZmZzZXQgKyBsb29rdXBUYWJsZU9mZnNldHNbaV0pO1xuICAgICAgICBpZiAodGFibGUubG9va3VwVHlwZSA9PT0gMiAmJiAhZm9udC5nZXRHcG9zS2VybmluZ1ZhbHVlKSBmb250LmdldEdwb3NLZXJuaW5nVmFsdWUgPSB0YWJsZS5nZXRLZXJuaW5nVmFsdWU7XG4gICAgfVxufVxuXG5leHBvcnRzLnBhcnNlID0gcGFyc2VHcG9zVGFibGU7XG4iLCIvLyBUaGUgYEdTVUJgIHRhYmxlIGNvbnRhaW5zIGxpZ2F0dXJlcywgYW1vbmcgb3RoZXIgdGhpbmdzLlxuLy8gaHR0cHM6Ly93d3cubWljcm9zb2Z0LmNvbS90eXBvZ3JhcGh5L09UU1BFQy9nc3ViLmh0bVxuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBjaGVjayA9IHJlcXVpcmUoJy4uL2NoZWNrJyk7XG52YXIgUGFyc2VyID0gcmVxdWlyZSgnLi4vcGFyc2UnKS5QYXJzZXI7XG52YXIgc3VidGFibGVQYXJzZXJzID0gbmV3IEFycmF5KDkpOyAgICAgICAgIC8vIHN1YnRhYmxlUGFyc2Vyc1swXSBpcyB1bnVzZWRcbnZhciB0YWJsZSA9IHJlcXVpcmUoJy4uL3RhYmxlJyk7XG5cbi8vIGh0dHBzOi8vd3d3Lm1pY3Jvc29mdC5jb20vdHlwb2dyYXBoeS9PVFNQRUMvR1NVQi5odG0jU1NcbnN1YnRhYmxlUGFyc2Vyc1sxXSA9IGZ1bmN0aW9uIHBhcnNlTG9va3VwMSgpIHtcbiAgICB2YXIgc3RhcnQgPSB0aGlzLm9mZnNldCArIHRoaXMucmVsYXRpdmVPZmZzZXQ7XG4gICAgdmFyIHN1YnN0Rm9ybWF0ID0gdGhpcy5wYXJzZVVTaG9ydCgpO1xuICAgIGlmIChzdWJzdEZvcm1hdCA9PT0gMSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgc3Vic3RGb3JtYXQ6IDEsXG4gICAgICAgICAgICBjb3ZlcmFnZTogdGhpcy5wYXJzZVBvaW50ZXIoUGFyc2VyLmNvdmVyYWdlKSxcbiAgICAgICAgICAgIGRlbHRhR2x5cGhJZDogdGhpcy5wYXJzZVVTaG9ydCgpXG4gICAgICAgIH07XG4gICAgfSBlbHNlIGlmIChzdWJzdEZvcm1hdCA9PT0gMikge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgc3Vic3RGb3JtYXQ6IDIsXG4gICAgICAgICAgICBjb3ZlcmFnZTogdGhpcy5wYXJzZVBvaW50ZXIoUGFyc2VyLmNvdmVyYWdlKSxcbiAgICAgICAgICAgIHN1YnN0aXR1dGU6IHRoaXMucGFyc2VPZmZzZXQxNkxpc3QoKVxuICAgICAgICB9O1xuICAgIH1cbiAgICBjaGVjay5hc3NlcnQoZmFsc2UsICcweCcgKyBzdGFydC50b1N0cmluZygxNikgKyAnOiBsb29rdXAgdHlwZSAxIGZvcm1hdCBtdXN0IGJlIDEgb3IgMi4nKTtcbn07XG5cbi8vIGh0dHBzOi8vd3d3Lm1pY3Jvc29mdC5jb20vdHlwb2dyYXBoeS9PVFNQRUMvR1NVQi5odG0jTVNcbnN1YnRhYmxlUGFyc2Vyc1syXSA9IGZ1bmN0aW9uIHBhcnNlTG9va3VwMigpIHtcbiAgICB2YXIgc3Vic3RGb3JtYXQgPSB0aGlzLnBhcnNlVVNob3J0KCk7XG4gICAgY2hlY2suYXJndW1lbnQoc3Vic3RGb3JtYXQgPT09IDEsICdHU1VCIE11bHRpcGxlIFN1YnN0aXR1dGlvbiBTdWJ0YWJsZSBpZGVudGlmaWVyLWZvcm1hdCBtdXN0IGJlIDEnKTtcbiAgICByZXR1cm4ge1xuICAgICAgICBzdWJzdEZvcm1hdDogc3Vic3RGb3JtYXQsXG4gICAgICAgIGNvdmVyYWdlOiB0aGlzLnBhcnNlUG9pbnRlcihQYXJzZXIuY292ZXJhZ2UpLFxuICAgICAgICBzZXF1ZW5jZXM6IHRoaXMucGFyc2VMaXN0T2ZMaXN0cygpXG4gICAgfTtcbn07XG5cbi8vIGh0dHBzOi8vd3d3Lm1pY3Jvc29mdC5jb20vdHlwb2dyYXBoeS9PVFNQRUMvR1NVQi5odG0jQVNcbnN1YnRhYmxlUGFyc2Vyc1szXSA9IGZ1bmN0aW9uIHBhcnNlTG9va3VwMygpIHtcbiAgICB2YXIgc3Vic3RGb3JtYXQgPSB0aGlzLnBhcnNlVVNob3J0KCk7XG4gICAgY2hlY2suYXJndW1lbnQoc3Vic3RGb3JtYXQgPT09IDEsICdHU1VCIEFsdGVybmF0ZSBTdWJzdGl0dXRpb24gU3VidGFibGUgaWRlbnRpZmllci1mb3JtYXQgbXVzdCBiZSAxJyk7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgc3Vic3RGb3JtYXQ6IHN1YnN0Rm9ybWF0LFxuICAgICAgICBjb3ZlcmFnZTogdGhpcy5wYXJzZVBvaW50ZXIoUGFyc2VyLmNvdmVyYWdlKSxcbiAgICAgICAgYWx0ZXJuYXRlU2V0czogdGhpcy5wYXJzZUxpc3RPZkxpc3RzKClcbiAgICB9O1xufTtcblxuLy8gaHR0cHM6Ly93d3cubWljcm9zb2Z0LmNvbS90eXBvZ3JhcGh5L09UU1BFQy9HU1VCLmh0bSNMU1xuc3VidGFibGVQYXJzZXJzWzRdID0gZnVuY3Rpb24gcGFyc2VMb29rdXA0KCkge1xuICAgIHZhciBzdWJzdEZvcm1hdCA9IHRoaXMucGFyc2VVU2hvcnQoKTtcbiAgICBjaGVjay5hcmd1bWVudChzdWJzdEZvcm1hdCA9PT0gMSwgJ0dTVUIgbGlnYXR1cmUgdGFibGUgaWRlbnRpZmllci1mb3JtYXQgbXVzdCBiZSAxJyk7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgc3Vic3RGb3JtYXQ6IHN1YnN0Rm9ybWF0LFxuICAgICAgICBjb3ZlcmFnZTogdGhpcy5wYXJzZVBvaW50ZXIoUGFyc2VyLmNvdmVyYWdlKSxcbiAgICAgICAgbGlnYXR1cmVTZXRzOiB0aGlzLnBhcnNlTGlzdE9mTGlzdHMoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGxpZ0dseXBoOiB0aGlzLnBhcnNlVVNob3J0KCksXG4gICAgICAgICAgICAgICAgY29tcG9uZW50czogdGhpcy5wYXJzZVVTaG9ydExpc3QodGhpcy5wYXJzZVVTaG9ydCgpIC0gMSlcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pXG4gICAgfTtcbn07XG5cbnZhciBsb29rdXBSZWNvcmREZXNjID0ge1xuICAgIHNlcXVlbmNlSW5kZXg6IFBhcnNlci51U2hvcnQsXG4gICAgbG9va3VwTGlzdEluZGV4OiBQYXJzZXIudVNob3J0XG59O1xuXG4vLyBodHRwczovL3d3dy5taWNyb3NvZnQuY29tL3R5cG9ncmFwaHkvT1RTUEVDL0dTVUIuaHRtI0NTRlxuc3VidGFibGVQYXJzZXJzWzVdID0gZnVuY3Rpb24gcGFyc2VMb29rdXA1KCkge1xuICAgIHZhciBzdGFydCA9IHRoaXMub2Zmc2V0ICsgdGhpcy5yZWxhdGl2ZU9mZnNldDtcbiAgICB2YXIgc3Vic3RGb3JtYXQgPSB0aGlzLnBhcnNlVVNob3J0KCk7XG5cbiAgICBpZiAoc3Vic3RGb3JtYXQgPT09IDEpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHN1YnN0Rm9ybWF0OiBzdWJzdEZvcm1hdCxcbiAgICAgICAgICAgIGNvdmVyYWdlOiB0aGlzLnBhcnNlUG9pbnRlcihQYXJzZXIuY292ZXJhZ2UpLFxuICAgICAgICAgICAgcnVsZVNldHM6IHRoaXMucGFyc2VMaXN0T2ZMaXN0cyhmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICB2YXIgZ2x5cGhDb3VudCA9IHRoaXMucGFyc2VVU2hvcnQoKTtcbiAgICAgICAgICAgICAgICB2YXIgc3Vic3RDb3VudCA9IHRoaXMucGFyc2VVU2hvcnQoKTtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBpbnB1dDogdGhpcy5wYXJzZVVTaG9ydExpc3QoZ2x5cGhDb3VudCAtIDEpLFxuICAgICAgICAgICAgICAgICAgICBsb29rdXBSZWNvcmRzOiB0aGlzLnBhcnNlUmVjb3JkTGlzdChzdWJzdENvdW50LCBsb29rdXBSZWNvcmREZXNjKVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KVxuICAgICAgICB9O1xuICAgIH0gZWxzZSBpZiAoc3Vic3RGb3JtYXQgPT09IDIpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHN1YnN0Rm9ybWF0OiBzdWJzdEZvcm1hdCxcbiAgICAgICAgICAgIGNvdmVyYWdlOiB0aGlzLnBhcnNlUG9pbnRlcihQYXJzZXIuY292ZXJhZ2UpLFxuICAgICAgICAgICAgY2xhc3NEZWY6IHRoaXMucGFyc2VQb2ludGVyKFBhcnNlci5jbGFzc0RlZiksXG4gICAgICAgICAgICBjbGFzc1NldHM6IHRoaXMucGFyc2VMaXN0T2ZMaXN0cyhmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICB2YXIgZ2x5cGhDb3VudCA9IHRoaXMucGFyc2VVU2hvcnQoKTtcbiAgICAgICAgICAgICAgICB2YXIgc3Vic3RDb3VudCA9IHRoaXMucGFyc2VVU2hvcnQoKTtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBjbGFzc2VzOiB0aGlzLnBhcnNlVVNob3J0TGlzdChnbHlwaENvdW50IC0gMSksXG4gICAgICAgICAgICAgICAgICAgIGxvb2t1cFJlY29yZHM6IHRoaXMucGFyc2VSZWNvcmRMaXN0KHN1YnN0Q291bnQsIGxvb2t1cFJlY29yZERlc2MpXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH07XG4gICAgfSBlbHNlIGlmIChzdWJzdEZvcm1hdCA9PT0gMykge1xuICAgICAgICB2YXIgZ2x5cGhDb3VudCA9IHRoaXMucGFyc2VVU2hvcnQoKTtcbiAgICAgICAgdmFyIHN1YnN0Q291bnQgPSB0aGlzLnBhcnNlVVNob3J0KCk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzdWJzdEZvcm1hdDogc3Vic3RGb3JtYXQsXG4gICAgICAgICAgICBjb3ZlcmFnZXM6IHRoaXMucGFyc2VMaXN0KGdseXBoQ291bnQsIFBhcnNlci5wb2ludGVyKFBhcnNlci5jb3ZlcmFnZSkpLFxuICAgICAgICAgICAgbG9va3VwUmVjb3JkczogdGhpcy5wYXJzZVJlY29yZExpc3Qoc3Vic3RDb3VudCwgbG9va3VwUmVjb3JkRGVzYylcbiAgICAgICAgfTtcbiAgICB9XG4gICAgY2hlY2suYXNzZXJ0KGZhbHNlLCAnMHgnICsgc3RhcnQudG9TdHJpbmcoMTYpICsgJzogbG9va3VwIHR5cGUgNSBmb3JtYXQgbXVzdCBiZSAxLCAyIG9yIDMuJyk7XG59O1xuXG4vLyBodHRwczovL3d3dy5taWNyb3NvZnQuY29tL3R5cG9ncmFwaHkvT1RTUEVDL0dTVUIuaHRtI0NDXG5zdWJ0YWJsZVBhcnNlcnNbNl0gPSBmdW5jdGlvbiBwYXJzZUxvb2t1cDYoKSB7XG4gICAgdmFyIHN0YXJ0ID0gdGhpcy5vZmZzZXQgKyB0aGlzLnJlbGF0aXZlT2Zmc2V0O1xuICAgIHZhciBzdWJzdEZvcm1hdCA9IHRoaXMucGFyc2VVU2hvcnQoKTtcbiAgICBpZiAoc3Vic3RGb3JtYXQgPT09IDEpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHN1YnN0Rm9ybWF0OiAxLFxuICAgICAgICAgICAgY292ZXJhZ2U6IHRoaXMucGFyc2VQb2ludGVyKFBhcnNlci5jb3ZlcmFnZSksXG4gICAgICAgICAgICBjaGFpblJ1bGVTZXRzOiB0aGlzLnBhcnNlTGlzdE9mTGlzdHMoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgYmFja3RyYWNrOiB0aGlzLnBhcnNlVVNob3J0TGlzdCgpLFxuICAgICAgICAgICAgICAgICAgICBpbnB1dDogdGhpcy5wYXJzZVVTaG9ydExpc3QodGhpcy5wYXJzZVNob3J0KCkgLSAxKSxcbiAgICAgICAgICAgICAgICAgICAgbG9va2FoZWFkOiB0aGlzLnBhcnNlVVNob3J0TGlzdCgpLFxuICAgICAgICAgICAgICAgICAgICBsb29rdXBSZWNvcmRzOiB0aGlzLnBhcnNlUmVjb3JkTGlzdChsb29rdXBSZWNvcmREZXNjKVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KVxuICAgICAgICB9O1xuICAgIH0gZWxzZSBpZiAoc3Vic3RGb3JtYXQgPT09IDIpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHN1YnN0Rm9ybWF0OiAyLFxuICAgICAgICAgICAgY292ZXJhZ2U6IHRoaXMucGFyc2VQb2ludGVyKFBhcnNlci5jb3ZlcmFnZSksXG4gICAgICAgICAgICBiYWNrdHJhY2tDbGFzc0RlZjogdGhpcy5wYXJzZVBvaW50ZXIoUGFyc2VyLmNsYXNzRGVmKSxcbiAgICAgICAgICAgIGlucHV0Q2xhc3NEZWY6IHRoaXMucGFyc2VQb2ludGVyKFBhcnNlci5jbGFzc0RlZiksXG4gICAgICAgICAgICBsb29rYWhlYWRDbGFzc0RlZjogdGhpcy5wYXJzZVBvaW50ZXIoUGFyc2VyLmNsYXNzRGVmKSxcbiAgICAgICAgICAgIGNoYWluQ2xhc3NTZXQ6IHRoaXMucGFyc2VMaXN0T2ZMaXN0cyhmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBiYWNrdHJhY2s6IHRoaXMucGFyc2VVU2hvcnRMaXN0KCksXG4gICAgICAgICAgICAgICAgICAgIGlucHV0OiB0aGlzLnBhcnNlVVNob3J0TGlzdCh0aGlzLnBhcnNlU2hvcnQoKSAtIDEpLFxuICAgICAgICAgICAgICAgICAgICBsb29rYWhlYWQ6IHRoaXMucGFyc2VVU2hvcnRMaXN0KCksXG4gICAgICAgICAgICAgICAgICAgIGxvb2t1cFJlY29yZHM6IHRoaXMucGFyc2VSZWNvcmRMaXN0KGxvb2t1cFJlY29yZERlc2MpXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH07XG4gICAgfSBlbHNlIGlmIChzdWJzdEZvcm1hdCA9PT0gMykge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgc3Vic3RGb3JtYXQ6IDMsXG4gICAgICAgICAgICBiYWNrdHJhY2tDb3ZlcmFnZTogdGhpcy5wYXJzZUxpc3QoUGFyc2VyLnBvaW50ZXIoUGFyc2VyLmNvdmVyYWdlKSksXG4gICAgICAgICAgICBpbnB1dENvdmVyYWdlOiB0aGlzLnBhcnNlTGlzdChQYXJzZXIucG9pbnRlcihQYXJzZXIuY292ZXJhZ2UpKSxcbiAgICAgICAgICAgIGxvb2thaGVhZENvdmVyYWdlOiB0aGlzLnBhcnNlTGlzdChQYXJzZXIucG9pbnRlcihQYXJzZXIuY292ZXJhZ2UpKSxcbiAgICAgICAgICAgIGxvb2t1cFJlY29yZHM6IHRoaXMucGFyc2VSZWNvcmRMaXN0KGxvb2t1cFJlY29yZERlc2MpXG4gICAgICAgIH07XG4gICAgfVxuICAgIGNoZWNrLmFzc2VydChmYWxzZSwgJzB4JyArIHN0YXJ0LnRvU3RyaW5nKDE2KSArICc6IGxvb2t1cCB0eXBlIDYgZm9ybWF0IG11c3QgYmUgMSwgMiBvciAzLicpO1xufTtcblxuLy8gaHR0cHM6Ly93d3cubWljcm9zb2Z0LmNvbS90eXBvZ3JhcGh5L09UU1BFQy9HU1VCLmh0bSNFU1xuc3VidGFibGVQYXJzZXJzWzddID0gZnVuY3Rpb24gcGFyc2VMb29rdXA3KCkge1xuICAgIC8vIEV4dGVuc2lvbiBTdWJzdGl0dXRpb24gc3VidGFibGVcbiAgICB2YXIgc3Vic3RGb3JtYXQgPSB0aGlzLnBhcnNlVVNob3J0KCk7XG4gICAgY2hlY2suYXJndW1lbnQoc3Vic3RGb3JtYXQgPT09IDEsICdHU1VCIEV4dGVuc2lvbiBTdWJzdGl0dXRpb24gc3VidGFibGUgaWRlbnRpZmllci1mb3JtYXQgbXVzdCBiZSAxJyk7XG4gICAgdmFyIGV4dGVuc2lvbkxvb2t1cFR5cGUgPSB0aGlzLnBhcnNlVVNob3J0KCk7XG4gICAgdmFyIGV4dGVuc2lvblBhcnNlciA9IG5ldyBQYXJzZXIodGhpcy5kYXRhLCB0aGlzLm9mZnNldCArIHRoaXMucGFyc2VVTG9uZygpKTtcbiAgICByZXR1cm4ge1xuICAgICAgICBzdWJzdEZvcm1hdDogMSxcbiAgICAgICAgbG9va3VwVHlwZTogZXh0ZW5zaW9uTG9va3VwVHlwZSxcbiAgICAgICAgZXh0ZW5zaW9uOiBzdWJ0YWJsZVBhcnNlcnNbZXh0ZW5zaW9uTG9va3VwVHlwZV0uY2FsbChleHRlbnNpb25QYXJzZXIpXG4gICAgfTtcbn07XG5cbi8vIGh0dHBzOi8vd3d3Lm1pY3Jvc29mdC5jb20vdHlwb2dyYXBoeS9PVFNQRUMvR1NVQi5odG0jUkNDU1xuc3VidGFibGVQYXJzZXJzWzhdID0gZnVuY3Rpb24gcGFyc2VMb29rdXA4KCkge1xuICAgIHZhciBzdWJzdEZvcm1hdCA9IHRoaXMucGFyc2VVU2hvcnQoKTtcbiAgICBjaGVjay5hcmd1bWVudChzdWJzdEZvcm1hdCA9PT0gMSwgJ0dTVUIgUmV2ZXJzZSBDaGFpbmluZyBDb250ZXh0dWFsIFNpbmdsZSBTdWJzdGl0dXRpb24gU3VidGFibGUgaWRlbnRpZmllci1mb3JtYXQgbXVzdCBiZSAxJyk7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgc3Vic3RGb3JtYXQ6IHN1YnN0Rm9ybWF0LFxuICAgICAgICBjb3ZlcmFnZTogdGhpcy5wYXJzZVBvaW50ZXIoUGFyc2VyLmNvdmVyYWdlKSxcbiAgICAgICAgYmFja3RyYWNrQ292ZXJhZ2U6IHRoaXMucGFyc2VMaXN0KFBhcnNlci5wb2ludGVyKFBhcnNlci5jb3ZlcmFnZSkpLFxuICAgICAgICBsb29rYWhlYWRDb3ZlcmFnZTogdGhpcy5wYXJzZUxpc3QoUGFyc2VyLnBvaW50ZXIoUGFyc2VyLmNvdmVyYWdlKSksXG4gICAgICAgIHN1YnN0aXR1dGVzOiB0aGlzLnBhcnNlVVNob3J0TGlzdCgpXG4gICAgfTtcbn07XG5cbi8vIGh0dHBzOi8vd3d3Lm1pY3Jvc29mdC5jb20vdHlwb2dyYXBoeS9PVFNQRUMvZ3N1Yi5odG1cbmZ1bmN0aW9uIHBhcnNlR3N1YlRhYmxlKGRhdGEsIHN0YXJ0KSB7XG4gICAgc3RhcnQgPSBzdGFydCB8fCAwO1xuICAgIHZhciBwID0gbmV3IFBhcnNlcihkYXRhLCBzdGFydCk7XG4gICAgdmFyIHRhYmxlVmVyc2lvbiA9IHAucGFyc2VWZXJzaW9uKCk7XG4gICAgY2hlY2suYXJndW1lbnQodGFibGVWZXJzaW9uID09PSAxLCAnVW5zdXBwb3J0ZWQgR1NVQiB0YWJsZSB2ZXJzaW9uLicpO1xuICAgIHJldHVybiB7XG4gICAgICAgIHZlcnNpb246IHRhYmxlVmVyc2lvbixcbiAgICAgICAgc2NyaXB0czogcC5wYXJzZVNjcmlwdExpc3QoKSxcbiAgICAgICAgZmVhdHVyZXM6IHAucGFyc2VGZWF0dXJlTGlzdCgpLFxuICAgICAgICBsb29rdXBzOiBwLnBhcnNlTG9va3VwTGlzdChzdWJ0YWJsZVBhcnNlcnMpXG4gICAgfTtcbn1cblxuLy8gR1NVQiBXcml0aW5nIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbnZhciBzdWJ0YWJsZU1ha2VycyA9IG5ldyBBcnJheSg5KTtcblxuc3VidGFibGVNYWtlcnNbMV0gPSBmdW5jdGlvbiBtYWtlTG9va3VwMShzdWJ0YWJsZSkge1xuICAgIGlmIChzdWJ0YWJsZS5zdWJzdEZvcm1hdCA9PT0gMSkge1xuICAgICAgICByZXR1cm4gbmV3IHRhYmxlLlRhYmxlKCdzdWJzdGl0dXRpb25UYWJsZScsIFtcbiAgICAgICAgICAgIHtuYW1lOiAnc3Vic3RGb3JtYXQnLCB0eXBlOiAnVVNIT1JUJywgdmFsdWU6IDF9LFxuICAgICAgICAgICAge25hbWU6ICdjb3ZlcmFnZScsIHR5cGU6ICdUQUJMRScsIHZhbHVlOiBuZXcgdGFibGUuQ292ZXJhZ2Uoc3VidGFibGUuY292ZXJhZ2UpfSxcbiAgICAgICAgICAgIHtuYW1lOiAnZGVsdGFHbHlwaElEJywgdHlwZTogJ1VTSE9SVCcsIHZhbHVlOiBzdWJ0YWJsZS5kZWx0YUdseXBoSWR9XG4gICAgICAgIF0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBuZXcgdGFibGUuVGFibGUoJ3N1YnN0aXR1dGlvblRhYmxlJywgW1xuICAgICAgICAgICAge25hbWU6ICdzdWJzdEZvcm1hdCcsIHR5cGU6ICdVU0hPUlQnLCB2YWx1ZTogMn0sXG4gICAgICAgICAgICB7bmFtZTogJ2NvdmVyYWdlJywgdHlwZTogJ1RBQkxFJywgdmFsdWU6IG5ldyB0YWJsZS5Db3ZlcmFnZShzdWJ0YWJsZS5jb3ZlcmFnZSl9XG4gICAgICAgIF0uY29uY2F0KHRhYmxlLnVzaG9ydExpc3QoJ3N1YnN0aXR1dGUnLCBzdWJ0YWJsZS5zdWJzdGl0dXRlKSkpO1xuICAgIH1cbiAgICBjaGVjay5mYWlsKCdMb29rdXAgdHlwZSAxIHN1YnN0Rm9ybWF0IG11c3QgYmUgMSBvciAyLicpO1xufTtcblxuc3VidGFibGVNYWtlcnNbM10gPSBmdW5jdGlvbiBtYWtlTG9va3VwMyhzdWJ0YWJsZSkge1xuICAgIGNoZWNrLmFzc2VydChzdWJ0YWJsZS5zdWJzdEZvcm1hdCA9PT0gMSwgJ0xvb2t1cCB0eXBlIDMgc3Vic3RGb3JtYXQgbXVzdCBiZSAxLicpO1xuICAgIHJldHVybiBuZXcgdGFibGUuVGFibGUoJ3N1YnN0aXR1dGlvblRhYmxlJywgW1xuICAgICAgICB7bmFtZTogJ3N1YnN0Rm9ybWF0JywgdHlwZTogJ1VTSE9SVCcsIHZhbHVlOiAxfSxcbiAgICAgICAge25hbWU6ICdjb3ZlcmFnZScsIHR5cGU6ICdUQUJMRScsIHZhbHVlOiBuZXcgdGFibGUuQ292ZXJhZ2Uoc3VidGFibGUuY292ZXJhZ2UpfVxuICAgIF0uY29uY2F0KHRhYmxlLnRhYmxlTGlzdCgnYWx0U2V0Jywgc3VidGFibGUuYWx0ZXJuYXRlU2V0cywgZnVuY3Rpb24oYWx0ZXJuYXRlU2V0KSB7XG4gICAgICAgIHJldHVybiBuZXcgdGFibGUuVGFibGUoJ2FsdGVybmF0ZVNldFRhYmxlJywgdGFibGUudXNob3J0TGlzdCgnYWx0ZXJuYXRlJywgYWx0ZXJuYXRlU2V0KSk7XG4gICAgfSkpKTtcbn07XG5cbnN1YnRhYmxlTWFrZXJzWzRdID0gZnVuY3Rpb24gbWFrZUxvb2t1cDQoc3VidGFibGUpIHtcbiAgICBjaGVjay5hc3NlcnQoc3VidGFibGUuc3Vic3RGb3JtYXQgPT09IDEsICdMb29rdXAgdHlwZSA0IHN1YnN0Rm9ybWF0IG11c3QgYmUgMS4nKTtcbiAgICByZXR1cm4gbmV3IHRhYmxlLlRhYmxlKCdzdWJzdGl0dXRpb25UYWJsZScsIFtcbiAgICAgICAge25hbWU6ICdzdWJzdEZvcm1hdCcsIHR5cGU6ICdVU0hPUlQnLCB2YWx1ZTogMX0sXG4gICAgICAgIHtuYW1lOiAnY292ZXJhZ2UnLCB0eXBlOiAnVEFCTEUnLCB2YWx1ZTogbmV3IHRhYmxlLkNvdmVyYWdlKHN1YnRhYmxlLmNvdmVyYWdlKX1cbiAgICBdLmNvbmNhdCh0YWJsZS50YWJsZUxpc3QoJ2xpZ1NldCcsIHN1YnRhYmxlLmxpZ2F0dXJlU2V0cywgZnVuY3Rpb24obGlnYXR1cmVTZXQpIHtcbiAgICAgICAgcmV0dXJuIG5ldyB0YWJsZS5UYWJsZSgnbGlnYXR1cmVTZXRUYWJsZScsIHRhYmxlLnRhYmxlTGlzdCgnbGlnYXR1cmUnLCBsaWdhdHVyZVNldCwgZnVuY3Rpb24obGlnYXR1cmUpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgdGFibGUuVGFibGUoJ2xpZ2F0dXJlVGFibGUnLFxuICAgICAgICAgICAgICAgIFt7bmFtZTogJ2xpZ0dseXBoJywgdHlwZTogJ1VTSE9SVCcsIHZhbHVlOiBsaWdhdHVyZS5saWdHbHlwaH1dXG4gICAgICAgICAgICAgICAgLmNvbmNhdCh0YWJsZS51c2hvcnRMaXN0KCdjb21wb25lbnQnLCBsaWdhdHVyZS5jb21wb25lbnRzLCBsaWdhdHVyZS5jb21wb25lbnRzLmxlbmd0aCArIDEpKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSkpO1xuICAgIH0pKSk7XG59O1xuXG5mdW5jdGlvbiBtYWtlR3N1YlRhYmxlKGdzdWIpIHtcbiAgICByZXR1cm4gbmV3IHRhYmxlLlRhYmxlKCdHU1VCJywgW1xuICAgICAgICB7bmFtZTogJ3ZlcnNpb24nLCB0eXBlOiAnVUxPTkcnLCB2YWx1ZTogMHgxMDAwMH0sXG4gICAgICAgIHtuYW1lOiAnc2NyaXB0cycsIHR5cGU6ICdUQUJMRScsIHZhbHVlOiBuZXcgdGFibGUuU2NyaXB0TGlzdChnc3ViLnNjcmlwdHMpfSxcbiAgICAgICAge25hbWU6ICdmZWF0dXJlcycsIHR5cGU6ICdUQUJMRScsIHZhbHVlOiBuZXcgdGFibGUuRmVhdHVyZUxpc3QoZ3N1Yi5mZWF0dXJlcyl9LFxuICAgICAgICB7bmFtZTogJ2xvb2t1cHMnLCB0eXBlOiAnVEFCTEUnLCB2YWx1ZTogbmV3IHRhYmxlLkxvb2t1cExpc3QoZ3N1Yi5sb29rdXBzLCBzdWJ0YWJsZU1ha2Vycyl9XG4gICAgXSk7XG59XG5cbmV4cG9ydHMucGFyc2UgPSBwYXJzZUdzdWJUYWJsZTtcbmV4cG9ydHMubWFrZSA9IG1ha2VHc3ViVGFibGU7XG4iLCIvLyBUaGUgYGhlYWRgIHRhYmxlIGNvbnRhaW5zIGdsb2JhbCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZm9udC5cbi8vIGh0dHBzOi8vd3d3Lm1pY3Jvc29mdC5jb20vdHlwb2dyYXBoeS9PVFNQRUMvaGVhZC5odG1cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgY2hlY2sgPSByZXF1aXJlKCcuLi9jaGVjaycpO1xudmFyIHBhcnNlID0gcmVxdWlyZSgnLi4vcGFyc2UnKTtcbnZhciB0YWJsZSA9IHJlcXVpcmUoJy4uL3RhYmxlJyk7XG5cbi8vIFBhcnNlIHRoZSBoZWFkZXIgYGhlYWRgIHRhYmxlXG5mdW5jdGlvbiBwYXJzZUhlYWRUYWJsZShkYXRhLCBzdGFydCkge1xuICAgIHZhciBoZWFkID0ge307XG4gICAgdmFyIHAgPSBuZXcgcGFyc2UuUGFyc2VyKGRhdGEsIHN0YXJ0KTtcbiAgICBoZWFkLnZlcnNpb24gPSBwLnBhcnNlVmVyc2lvbigpO1xuICAgIGhlYWQuZm9udFJldmlzaW9uID0gTWF0aC5yb3VuZChwLnBhcnNlRml4ZWQoKSAqIDEwMDApIC8gMTAwMDtcbiAgICBoZWFkLmNoZWNrU3VtQWRqdXN0bWVudCA9IHAucGFyc2VVTG9uZygpO1xuICAgIGhlYWQubWFnaWNOdW1iZXIgPSBwLnBhcnNlVUxvbmcoKTtcbiAgICBjaGVjay5hcmd1bWVudChoZWFkLm1hZ2ljTnVtYmVyID09PSAweDVGMEYzQ0Y1LCAnRm9udCBoZWFkZXIgaGFzIHdyb25nIG1hZ2ljIG51bWJlci4nKTtcbiAgICBoZWFkLmZsYWdzID0gcC5wYXJzZVVTaG9ydCgpO1xuICAgIGhlYWQudW5pdHNQZXJFbSA9IHAucGFyc2VVU2hvcnQoKTtcbiAgICBoZWFkLmNyZWF0ZWQgPSBwLnBhcnNlTG9uZ0RhdGVUaW1lKCk7XG4gICAgaGVhZC5tb2RpZmllZCA9IHAucGFyc2VMb25nRGF0ZVRpbWUoKTtcbiAgICBoZWFkLnhNaW4gPSBwLnBhcnNlU2hvcnQoKTtcbiAgICBoZWFkLnlNaW4gPSBwLnBhcnNlU2hvcnQoKTtcbiAgICBoZWFkLnhNYXggPSBwLnBhcnNlU2hvcnQoKTtcbiAgICBoZWFkLnlNYXggPSBwLnBhcnNlU2hvcnQoKTtcbiAgICBoZWFkLm1hY1N0eWxlID0gcC5wYXJzZVVTaG9ydCgpO1xuICAgIGhlYWQubG93ZXN0UmVjUFBFTSA9IHAucGFyc2VVU2hvcnQoKTtcbiAgICBoZWFkLmZvbnREaXJlY3Rpb25IaW50ID0gcC5wYXJzZVNob3J0KCk7XG4gICAgaGVhZC5pbmRleFRvTG9jRm9ybWF0ID0gcC5wYXJzZVNob3J0KCk7XG4gICAgaGVhZC5nbHlwaERhdGFGb3JtYXQgPSBwLnBhcnNlU2hvcnQoKTtcbiAgICByZXR1cm4gaGVhZDtcbn1cblxuZnVuY3Rpb24gbWFrZUhlYWRUYWJsZShvcHRpb25zKSB7XG4gICAgLy8gQXBwbGUgTWFjIHRpbWVzdGFtcCBlcG9jaCBpcyAwMS8wMS8xOTA0IG5vdCAwMS8wMS8xOTcwXG4gICAgdmFyIHRpbWVzdGFtcCA9IE1hdGgucm91bmQobmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwKSArIDIwODI4NDQ4MDA7XG4gICAgdmFyIGNyZWF0ZWRUaW1lc3RhbXAgPSB0aW1lc3RhbXA7XG5cbiAgICBpZiAob3B0aW9ucy5jcmVhdGVkVGltZXN0YW1wKSB7XG4gICAgICAgIGNyZWF0ZWRUaW1lc3RhbXAgPSBvcHRpb25zLmNyZWF0ZWRUaW1lc3RhbXAgKyAyMDgyODQ0ODAwO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgdGFibGUuVGFibGUoJ2hlYWQnLCBbXG4gICAgICAgIHtuYW1lOiAndmVyc2lvbicsIHR5cGU6ICdGSVhFRCcsIHZhbHVlOiAweDAwMDEwMDAwfSxcbiAgICAgICAge25hbWU6ICdmb250UmV2aXNpb24nLCB0eXBlOiAnRklYRUQnLCB2YWx1ZTogMHgwMDAxMDAwMH0sXG4gICAgICAgIHtuYW1lOiAnY2hlY2tTdW1BZGp1c3RtZW50JywgdHlwZTogJ1VMT05HJywgdmFsdWU6IDB9LFxuICAgICAgICB7bmFtZTogJ21hZ2ljTnVtYmVyJywgdHlwZTogJ1VMT05HJywgdmFsdWU6IDB4NUYwRjNDRjV9LFxuICAgICAgICB7bmFtZTogJ2ZsYWdzJywgdHlwZTogJ1VTSE9SVCcsIHZhbHVlOiAwfSxcbiAgICAgICAge25hbWU6ICd1bml0c1BlckVtJywgdHlwZTogJ1VTSE9SVCcsIHZhbHVlOiAxMDAwfSxcbiAgICAgICAge25hbWU6ICdjcmVhdGVkJywgdHlwZTogJ0xPTkdEQVRFVElNRScsIHZhbHVlOiBjcmVhdGVkVGltZXN0YW1wfSxcbiAgICAgICAge25hbWU6ICdtb2RpZmllZCcsIHR5cGU6ICdMT05HREFURVRJTUUnLCB2YWx1ZTogdGltZXN0YW1wfSxcbiAgICAgICAge25hbWU6ICd4TWluJywgdHlwZTogJ1NIT1JUJywgdmFsdWU6IDB9LFxuICAgICAgICB7bmFtZTogJ3lNaW4nLCB0eXBlOiAnU0hPUlQnLCB2YWx1ZTogMH0sXG4gICAgICAgIHtuYW1lOiAneE1heCcsIHR5cGU6ICdTSE9SVCcsIHZhbHVlOiAwfSxcbiAgICAgICAge25hbWU6ICd5TWF4JywgdHlwZTogJ1NIT1JUJywgdmFsdWU6IDB9LFxuICAgICAgICB7bmFtZTogJ21hY1N0eWxlJywgdHlwZTogJ1VTSE9SVCcsIHZhbHVlOiAwfSxcbiAgICAgICAge25hbWU6ICdsb3dlc3RSZWNQUEVNJywgdHlwZTogJ1VTSE9SVCcsIHZhbHVlOiAwfSxcbiAgICAgICAge25hbWU6ICdmb250RGlyZWN0aW9uSGludCcsIHR5cGU6ICdTSE9SVCcsIHZhbHVlOiAyfSxcbiAgICAgICAge25hbWU6ICdpbmRleFRvTG9jRm9ybWF0JywgdHlwZTogJ1NIT1JUJywgdmFsdWU6IDB9LFxuICAgICAgICB7bmFtZTogJ2dseXBoRGF0YUZvcm1hdCcsIHR5cGU6ICdTSE9SVCcsIHZhbHVlOiAwfVxuICAgIF0sIG9wdGlvbnMpO1xufVxuXG5leHBvcnRzLnBhcnNlID0gcGFyc2VIZWFkVGFibGU7XG5leHBvcnRzLm1ha2UgPSBtYWtlSGVhZFRhYmxlO1xuIiwiLy8gVGhlIGBoaGVhYCB0YWJsZSBjb250YWlucyBpbmZvcm1hdGlvbiBmb3IgaG9yaXpvbnRhbCBsYXlvdXQuXG4vLyBodHRwczovL3d3dy5taWNyb3NvZnQuY29tL3R5cG9ncmFwaHkvT1RTUEVDL2hoZWEuaHRtXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIHBhcnNlID0gcmVxdWlyZSgnLi4vcGFyc2UnKTtcbnZhciB0YWJsZSA9IHJlcXVpcmUoJy4uL3RhYmxlJyk7XG5cbi8vIFBhcnNlIHRoZSBob3Jpem9udGFsIGhlYWRlciBgaGhlYWAgdGFibGVcbmZ1bmN0aW9uIHBhcnNlSGhlYVRhYmxlKGRhdGEsIHN0YXJ0KSB7XG4gICAgdmFyIGhoZWEgPSB7fTtcbiAgICB2YXIgcCA9IG5ldyBwYXJzZS5QYXJzZXIoZGF0YSwgc3RhcnQpO1xuICAgIGhoZWEudmVyc2lvbiA9IHAucGFyc2VWZXJzaW9uKCk7XG4gICAgaGhlYS5hc2NlbmRlciA9IHAucGFyc2VTaG9ydCgpO1xuICAgIGhoZWEuZGVzY2VuZGVyID0gcC5wYXJzZVNob3J0KCk7XG4gICAgaGhlYS5saW5lR2FwID0gcC5wYXJzZVNob3J0KCk7XG4gICAgaGhlYS5hZHZhbmNlV2lkdGhNYXggPSBwLnBhcnNlVVNob3J0KCk7XG4gICAgaGhlYS5taW5MZWZ0U2lkZUJlYXJpbmcgPSBwLnBhcnNlU2hvcnQoKTtcbiAgICBoaGVhLm1pblJpZ2h0U2lkZUJlYXJpbmcgPSBwLnBhcnNlU2hvcnQoKTtcbiAgICBoaGVhLnhNYXhFeHRlbnQgPSBwLnBhcnNlU2hvcnQoKTtcbiAgICBoaGVhLmNhcmV0U2xvcGVSaXNlID0gcC5wYXJzZVNob3J0KCk7XG4gICAgaGhlYS5jYXJldFNsb3BlUnVuID0gcC5wYXJzZVNob3J0KCk7XG4gICAgaGhlYS5jYXJldE9mZnNldCA9IHAucGFyc2VTaG9ydCgpO1xuICAgIHAucmVsYXRpdmVPZmZzZXQgKz0gODtcbiAgICBoaGVhLm1ldHJpY0RhdGFGb3JtYXQgPSBwLnBhcnNlU2hvcnQoKTtcbiAgICBoaGVhLm51bWJlck9mSE1ldHJpY3MgPSBwLnBhcnNlVVNob3J0KCk7XG4gICAgcmV0dXJuIGhoZWE7XG59XG5cbmZ1bmN0aW9uIG1ha2VIaGVhVGFibGUob3B0aW9ucykge1xuICAgIHJldHVybiBuZXcgdGFibGUuVGFibGUoJ2hoZWEnLCBbXG4gICAgICAgIHtuYW1lOiAndmVyc2lvbicsIHR5cGU6ICdGSVhFRCcsIHZhbHVlOiAweDAwMDEwMDAwfSxcbiAgICAgICAge25hbWU6ICdhc2NlbmRlcicsIHR5cGU6ICdGV09SRCcsIHZhbHVlOiAwfSxcbiAgICAgICAge25hbWU6ICdkZXNjZW5kZXInLCB0eXBlOiAnRldPUkQnLCB2YWx1ZTogMH0sXG4gICAgICAgIHtuYW1lOiAnbGluZUdhcCcsIHR5cGU6ICdGV09SRCcsIHZhbHVlOiAwfSxcbiAgICAgICAge25hbWU6ICdhZHZhbmNlV2lkdGhNYXgnLCB0eXBlOiAnVUZXT1JEJywgdmFsdWU6IDB9LFxuICAgICAgICB7bmFtZTogJ21pbkxlZnRTaWRlQmVhcmluZycsIHR5cGU6ICdGV09SRCcsIHZhbHVlOiAwfSxcbiAgICAgICAge25hbWU6ICdtaW5SaWdodFNpZGVCZWFyaW5nJywgdHlwZTogJ0ZXT1JEJywgdmFsdWU6IDB9LFxuICAgICAgICB7bmFtZTogJ3hNYXhFeHRlbnQnLCB0eXBlOiAnRldPUkQnLCB2YWx1ZTogMH0sXG4gICAgICAgIHtuYW1lOiAnY2FyZXRTbG9wZVJpc2UnLCB0eXBlOiAnU0hPUlQnLCB2YWx1ZTogMX0sXG4gICAgICAgIHtuYW1lOiAnY2FyZXRTbG9wZVJ1bicsIHR5cGU6ICdTSE9SVCcsIHZhbHVlOiAwfSxcbiAgICAgICAge25hbWU6ICdjYXJldE9mZnNldCcsIHR5cGU6ICdTSE9SVCcsIHZhbHVlOiAwfSxcbiAgICAgICAge25hbWU6ICdyZXNlcnZlZDEnLCB0eXBlOiAnU0hPUlQnLCB2YWx1ZTogMH0sXG4gICAgICAgIHtuYW1lOiAncmVzZXJ2ZWQyJywgdHlwZTogJ1NIT1JUJywgdmFsdWU6IDB9LFxuICAgICAgICB7bmFtZTogJ3Jlc2VydmVkMycsIHR5cGU6ICdTSE9SVCcsIHZhbHVlOiAwfSxcbiAgICAgICAge25hbWU6ICdyZXNlcnZlZDQnLCB0eXBlOiAnU0hPUlQnLCB2YWx1ZTogMH0sXG4gICAgICAgIHtuYW1lOiAnbWV0cmljRGF0YUZvcm1hdCcsIHR5cGU6ICdTSE9SVCcsIHZhbHVlOiAwfSxcbiAgICAgICAge25hbWU6ICdudW1iZXJPZkhNZXRyaWNzJywgdHlwZTogJ1VTSE9SVCcsIHZhbHVlOiAwfVxuICAgIF0sIG9wdGlvbnMpO1xufVxuXG5leHBvcnRzLnBhcnNlID0gcGFyc2VIaGVhVGFibGU7XG5leHBvcnRzLm1ha2UgPSBtYWtlSGhlYVRhYmxlO1xuIiwiLy8gVGhlIGBobXR4YCB0YWJsZSBjb250YWlucyB0aGUgaG9yaXpvbnRhbCBtZXRyaWNzIGZvciBhbGwgZ2x5cGhzLlxuLy8gaHR0cHM6Ly93d3cubWljcm9zb2Z0LmNvbS90eXBvZ3JhcGh5L09UU1BFQy9obXR4Lmh0bVxuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBwYXJzZSA9IHJlcXVpcmUoJy4uL3BhcnNlJyk7XG52YXIgdGFibGUgPSByZXF1aXJlKCcuLi90YWJsZScpO1xuXG4vLyBQYXJzZSB0aGUgYGhtdHhgIHRhYmxlLCB3aGljaCBjb250YWlucyB0aGUgaG9yaXpvbnRhbCBtZXRyaWNzIGZvciBhbGwgZ2x5cGhzLlxuLy8gVGhpcyBmdW5jdGlvbiBhdWdtZW50cyB0aGUgZ2x5cGggYXJyYXksIGFkZGluZyB0aGUgYWR2YW5jZVdpZHRoIGFuZCBsZWZ0U2lkZUJlYXJpbmcgdG8gZWFjaCBnbHlwaC5cbmZ1bmN0aW9uIHBhcnNlSG10eFRhYmxlKGRhdGEsIHN0YXJ0LCBudW1NZXRyaWNzLCBudW1HbHlwaHMsIGdseXBocykge1xuICAgIHZhciBhZHZhbmNlV2lkdGg7XG4gICAgdmFyIGxlZnRTaWRlQmVhcmluZztcbiAgICB2YXIgcCA9IG5ldyBwYXJzZS5QYXJzZXIoZGF0YSwgc3RhcnQpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtR2x5cGhzOyBpICs9IDEpIHtcbiAgICAgICAgLy8gSWYgdGhlIGZvbnQgaXMgbW9ub3NwYWNlZCwgb25seSBvbmUgZW50cnkgaXMgbmVlZGVkLiBUaGlzIGxhc3QgZW50cnkgYXBwbGllcyB0byBhbGwgc3Vic2VxdWVudCBnbHlwaHMuXG4gICAgICAgIGlmIChpIDwgbnVtTWV0cmljcykge1xuICAgICAgICAgICAgYWR2YW5jZVdpZHRoID0gcC5wYXJzZVVTaG9ydCgpO1xuICAgICAgICAgICAgbGVmdFNpZGVCZWFyaW5nID0gcC5wYXJzZVNob3J0KCk7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgZ2x5cGggPSBnbHlwaHMuZ2V0KGkpO1xuICAgICAgICBnbHlwaC5hZHZhbmNlV2lkdGggPSBhZHZhbmNlV2lkdGg7XG4gICAgICAgIGdseXBoLmxlZnRTaWRlQmVhcmluZyA9IGxlZnRTaWRlQmVhcmluZztcbiAgICB9XG59XG5cbmZ1bmN0aW9uIG1ha2VIbXR4VGFibGUoZ2x5cGhzKSB7XG4gICAgdmFyIHQgPSBuZXcgdGFibGUuVGFibGUoJ2htdHgnLCBbXSk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBnbHlwaHMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgICAgdmFyIGdseXBoID0gZ2x5cGhzLmdldChpKTtcbiAgICAgICAgdmFyIGFkdmFuY2VXaWR0aCA9IGdseXBoLmFkdmFuY2VXaWR0aCB8fCAwO1xuICAgICAgICB2YXIgbGVmdFNpZGVCZWFyaW5nID0gZ2x5cGgubGVmdFNpZGVCZWFyaW5nIHx8IDA7XG4gICAgICAgIHQuZmllbGRzLnB1c2goe25hbWU6ICdhZHZhbmNlV2lkdGhfJyArIGksIHR5cGU6ICdVU0hPUlQnLCB2YWx1ZTogYWR2YW5jZVdpZHRofSk7XG4gICAgICAgIHQuZmllbGRzLnB1c2goe25hbWU6ICdsZWZ0U2lkZUJlYXJpbmdfJyArIGksIHR5cGU6ICdTSE9SVCcsIHZhbHVlOiBsZWZ0U2lkZUJlYXJpbmd9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdDtcbn1cblxuZXhwb3J0cy5wYXJzZSA9IHBhcnNlSG10eFRhYmxlO1xuZXhwb3J0cy5tYWtlID0gbWFrZUhtdHhUYWJsZTtcbiIsIi8vIFRoZSBga2VybmAgdGFibGUgY29udGFpbnMga2VybmluZyBwYWlycy5cbi8vIE5vdGUgdGhhdCBzb21lIGZvbnRzIHVzZSB0aGUgR1BPUyBPcGVuVHlwZSBsYXlvdXQgdGFibGUgdG8gc3BlY2lmeSBrZXJuaW5nLlxuLy8gaHR0cHM6Ly93d3cubWljcm9zb2Z0LmNvbS90eXBvZ3JhcGh5L09UU1BFQy9rZXJuLmh0bVxuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBjaGVjayA9IHJlcXVpcmUoJy4uL2NoZWNrJyk7XG52YXIgcGFyc2UgPSByZXF1aXJlKCcuLi9wYXJzZScpO1xuXG5mdW5jdGlvbiBwYXJzZVdpbmRvd3NLZXJuVGFibGUocCkge1xuICAgIHZhciBwYWlycyA9IHt9O1xuICAgIC8vIFNraXAgblRhYmxlcy5cbiAgICBwLnNraXAoJ3VTaG9ydCcpO1xuICAgIHZhciBzdWJ0YWJsZVZlcnNpb24gPSBwLnBhcnNlVVNob3J0KCk7XG4gICAgY2hlY2suYXJndW1lbnQoc3VidGFibGVWZXJzaW9uID09PSAwLCAnVW5zdXBwb3J0ZWQga2VybiBzdWItdGFibGUgdmVyc2lvbi4nKTtcbiAgICAvLyBTa2lwIHN1YnRhYmxlTGVuZ3RoLCBzdWJ0YWJsZUNvdmVyYWdlXG4gICAgcC5za2lwKCd1U2hvcnQnLCAyKTtcbiAgICB2YXIgblBhaXJzID0gcC5wYXJzZVVTaG9ydCgpO1xuICAgIC8vIFNraXAgc2VhcmNoUmFuZ2UsIGVudHJ5U2VsZWN0b3IsIHJhbmdlU2hpZnQuXG4gICAgcC5za2lwKCd1U2hvcnQnLCAzKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5QYWlyczsgaSArPSAxKSB7XG4gICAgICAgIHZhciBsZWZ0SW5kZXggPSBwLnBhcnNlVVNob3J0KCk7XG4gICAgICAgIHZhciByaWdodEluZGV4ID0gcC5wYXJzZVVTaG9ydCgpO1xuICAgICAgICB2YXIgdmFsdWUgPSBwLnBhcnNlU2hvcnQoKTtcbiAgICAgICAgcGFpcnNbbGVmdEluZGV4ICsgJywnICsgcmlnaHRJbmRleF0gPSB2YWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHBhaXJzO1xufVxuXG5mdW5jdGlvbiBwYXJzZU1hY0tlcm5UYWJsZShwKSB7XG4gICAgdmFyIHBhaXJzID0ge307XG4gICAgLy8gVGhlIE1hYyBrZXJuIHRhYmxlIHN0b3JlcyB0aGUgdmVyc2lvbiBhcyBhIGZpeGVkICgzMiBiaXRzKSBidXQgd2Ugb25seSBsb2FkZWQgdGhlIGZpcnN0IDE2IGJpdHMuXG4gICAgLy8gU2tpcCB0aGUgcmVzdC5cbiAgICBwLnNraXAoJ3VTaG9ydCcpO1xuICAgIHZhciBuVGFibGVzID0gcC5wYXJzZVVMb25nKCk7XG4gICAgLy9jaGVjay5hcmd1bWVudChuVGFibGVzID09PSAxLCAnT25seSAxIHN1YnRhYmxlIGlzIHN1cHBvcnRlZCAoZ290ICcgKyBuVGFibGVzICsgJykuJyk7XG4gICAgaWYgKG5UYWJsZXMgPiAxKSB7XG4gICAgICAgIGNvbnNvbGUud2FybignT25seSB0aGUgZmlyc3Qga2VybiBzdWJ0YWJsZSBpcyBzdXBwb3J0ZWQuJyk7XG4gICAgfVxuICAgIHAuc2tpcCgndUxvbmcnKTtcbiAgICB2YXIgY292ZXJhZ2UgPSBwLnBhcnNlVVNob3J0KCk7XG4gICAgdmFyIHN1YnRhYmxlVmVyc2lvbiA9IGNvdmVyYWdlICYgMHhGRjtcbiAgICBwLnNraXAoJ3VTaG9ydCcpO1xuICAgIGlmIChzdWJ0YWJsZVZlcnNpb24gPT09IDApIHtcbiAgICAgICAgdmFyIG5QYWlycyA9IHAucGFyc2VVU2hvcnQoKTtcbiAgICAgICAgLy8gU2tpcCBzZWFyY2hSYW5nZSwgZW50cnlTZWxlY3RvciwgcmFuZ2VTaGlmdC5cbiAgICAgICAgcC5za2lwKCd1U2hvcnQnLCAzKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuUGFpcnM7IGkgKz0gMSkge1xuICAgICAgICAgICAgdmFyIGxlZnRJbmRleCA9IHAucGFyc2VVU2hvcnQoKTtcbiAgICAgICAgICAgIHZhciByaWdodEluZGV4ID0gcC5wYXJzZVVTaG9ydCgpO1xuICAgICAgICAgICAgdmFyIHZhbHVlID0gcC5wYXJzZVNob3J0KCk7XG4gICAgICAgICAgICBwYWlyc1tsZWZ0SW5kZXggKyAnLCcgKyByaWdodEluZGV4XSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBwYWlycztcbn1cblxuLy8gUGFyc2UgdGhlIGBrZXJuYCB0YWJsZSB3aGljaCBjb250YWlucyBrZXJuaW5nIHBhaXJzLlxuZnVuY3Rpb24gcGFyc2VLZXJuVGFibGUoZGF0YSwgc3RhcnQpIHtcbiAgICB2YXIgcCA9IG5ldyBwYXJzZS5QYXJzZXIoZGF0YSwgc3RhcnQpO1xuICAgIHZhciB0YWJsZVZlcnNpb24gPSBwLnBhcnNlVVNob3J0KCk7XG4gICAgaWYgKHRhYmxlVmVyc2lvbiA9PT0gMCkge1xuICAgICAgICByZXR1cm4gcGFyc2VXaW5kb3dzS2VyblRhYmxlKHApO1xuICAgIH0gZWxzZSBpZiAodGFibGVWZXJzaW9uID09PSAxKSB7XG4gICAgICAgIHJldHVybiBwYXJzZU1hY0tlcm5UYWJsZShwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIGtlcm4gdGFibGUgdmVyc2lvbiAoJyArIHRhYmxlVmVyc2lvbiArICcpLicpO1xuICAgIH1cbn1cblxuZXhwb3J0cy5wYXJzZSA9IHBhcnNlS2VyblRhYmxlO1xuIiwiLy8gVGhlIGBsb2NhYCB0YWJsZSBzdG9yZXMgdGhlIG9mZnNldHMgdG8gdGhlIGxvY2F0aW9ucyBvZiB0aGUgZ2x5cGhzIGluIHRoZSBmb250LlxuLy8gaHR0cHM6Ly93d3cubWljcm9zb2Z0LmNvbS90eXBvZ3JhcGh5L09UU1BFQy9sb2NhLmh0bVxuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBwYXJzZSA9IHJlcXVpcmUoJy4uL3BhcnNlJyk7XG5cbi8vIFBhcnNlIHRoZSBgbG9jYWAgdGFibGUuIFRoaXMgdGFibGUgc3RvcmVzIHRoZSBvZmZzZXRzIHRvIHRoZSBsb2NhdGlvbnMgb2YgdGhlIGdseXBocyBpbiB0aGUgZm9udCxcbi8vIHJlbGF0aXZlIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGdseXBoRGF0YSB0YWJsZS5cbi8vIFRoZSBudW1iZXIgb2YgZ2x5cGhzIHN0b3JlZCBpbiB0aGUgYGxvY2FgIHRhYmxlIGlzIHNwZWNpZmllZCBpbiB0aGUgYG1heHBgIHRhYmxlICh1bmRlciBudW1HbHlwaHMpXG4vLyBUaGUgbG9jYSB0YWJsZSBoYXMgdHdvIHZlcnNpb25zOiBhIHNob3J0IHZlcnNpb24gd2hlcmUgb2Zmc2V0cyBhcmUgc3RvcmVkIGFzIHVTaG9ydHMsIGFuZCBhIGxvbmdcbi8vIHZlcnNpb24gd2hlcmUgb2Zmc2V0cyBhcmUgc3RvcmVkIGFzIHVMb25ncy4gVGhlIGBoZWFkYCB0YWJsZSBzcGVjaWZpZXMgd2hpY2ggdmVyc2lvbiB0byB1c2Vcbi8vICh1bmRlciBpbmRleFRvTG9jRm9ybWF0KS5cbmZ1bmN0aW9uIHBhcnNlTG9jYVRhYmxlKGRhdGEsIHN0YXJ0LCBudW1HbHlwaHMsIHNob3J0VmVyc2lvbikge1xuICAgIHZhciBwID0gbmV3IHBhcnNlLlBhcnNlcihkYXRhLCBzdGFydCk7XG4gICAgdmFyIHBhcnNlRm4gPSBzaG9ydFZlcnNpb24gPyBwLnBhcnNlVVNob3J0IDogcC5wYXJzZVVMb25nO1xuICAgIC8vIFRoZXJlIGlzIGFuIGV4dHJhIGVudHJ5IGFmdGVyIHRoZSBsYXN0IGluZGV4IGVsZW1lbnQgdG8gY29tcHV0ZSB0aGUgbGVuZ3RoIG9mIHRoZSBsYXN0IGdseXBoLlxuICAgIC8vIFRoYXQncyB3aHkgd2UgdXNlIG51bUdseXBocyArIDEuXG4gICAgdmFyIGdseXBoT2Zmc2V0cyA9IFtdO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtR2x5cGhzICsgMTsgaSArPSAxKSB7XG4gICAgICAgIHZhciBnbHlwaE9mZnNldCA9IHBhcnNlRm4uY2FsbChwKTtcbiAgICAgICAgaWYgKHNob3J0VmVyc2lvbikge1xuICAgICAgICAgICAgLy8gVGhlIHNob3J0IHRhYmxlIHZlcnNpb24gc3RvcmVzIHRoZSBhY3R1YWwgb2Zmc2V0IGRpdmlkZWQgYnkgMi5cbiAgICAgICAgICAgIGdseXBoT2Zmc2V0ICo9IDI7XG4gICAgICAgIH1cblxuICAgICAgICBnbHlwaE9mZnNldHMucHVzaChnbHlwaE9mZnNldCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGdseXBoT2Zmc2V0cztcbn1cblxuZXhwb3J0cy5wYXJzZSA9IHBhcnNlTG9jYVRhYmxlO1xuIiwiLy8gVGhlIGBsdGFnYCB0YWJsZSBzdG9yZXMgSUVURiBCQ1AtNDcgbGFuZ3VhZ2UgdGFncy4gSXQgYWxsb3dzIHN1cHBvcnRpbmdcbi8vIGxhbmd1YWdlcyBmb3Igd2hpY2ggVHJ1ZVR5cGUgZG9lcyBub3QgYXNzaWduIGEgbnVtZXJpYyBjb2RlLlxuLy8gaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2ZvbnRzL1RydWVUeXBlLVJlZmVyZW5jZS1NYW51YWwvUk0wNi9DaGFwNmx0YWcuaHRtbFxuLy8gaHR0cDovL3d3dy53My5vcmcvSW50ZXJuYXRpb25hbC9hcnRpY2xlcy9sYW5ndWFnZS10YWdzL1xuLy8gaHR0cDovL3d3dy5pYW5hLm9yZy9hc3NpZ25tZW50cy9sYW5ndWFnZS1zdWJ0YWctcmVnaXN0cnkvbGFuZ3VhZ2Utc3VidGFnLXJlZ2lzdHJ5XG5cbid1c2Ugc3RyaWN0JztcblxudmFyIGNoZWNrID0gcmVxdWlyZSgnLi4vY2hlY2snKTtcbnZhciBwYXJzZSA9IHJlcXVpcmUoJy4uL3BhcnNlJyk7XG52YXIgdGFibGUgPSByZXF1aXJlKCcuLi90YWJsZScpO1xuXG5mdW5jdGlvbiBtYWtlTHRhZ1RhYmxlKHRhZ3MpIHtcbiAgICB2YXIgcmVzdWx0ID0gbmV3IHRhYmxlLlRhYmxlKCdsdGFnJywgW1xuICAgICAgICB7bmFtZTogJ3ZlcnNpb24nLCB0eXBlOiAnVUxPTkcnLCB2YWx1ZTogMX0sXG4gICAgICAgIHtuYW1lOiAnZmxhZ3MnLCB0eXBlOiAnVUxPTkcnLCB2YWx1ZTogMH0sXG4gICAgICAgIHtuYW1lOiAnbnVtVGFncycsIHR5cGU6ICdVTE9ORycsIHZhbHVlOiB0YWdzLmxlbmd0aH1cbiAgICBdKTtcblxuICAgIHZhciBzdHJpbmdQb29sID0gJyc7XG4gICAgdmFyIHN0cmluZ1Bvb2xPZmZzZXQgPSAxMiArIHRhZ3MubGVuZ3RoICogNDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRhZ3MubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgdmFyIHBvcyA9IHN0cmluZ1Bvb2wuaW5kZXhPZih0YWdzW2ldKTtcbiAgICAgICAgaWYgKHBvcyA8IDApIHtcbiAgICAgICAgICAgIHBvcyA9IHN0cmluZ1Bvb2wubGVuZ3RoO1xuICAgICAgICAgICAgc3RyaW5nUG9vbCArPSB0YWdzW2ldO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVzdWx0LmZpZWxkcy5wdXNoKHtuYW1lOiAnb2Zmc2V0ICcgKyBpLCB0eXBlOiAnVVNIT1JUJywgdmFsdWU6IHN0cmluZ1Bvb2xPZmZzZXQgKyBwb3N9KTtcbiAgICAgICAgcmVzdWx0LmZpZWxkcy5wdXNoKHtuYW1lOiAnbGVuZ3RoICcgKyBpLCB0eXBlOiAnVVNIT1JUJywgdmFsdWU6IHRhZ3NbaV0ubGVuZ3RofSk7XG4gICAgfVxuXG4gICAgcmVzdWx0LmZpZWxkcy5wdXNoKHtuYW1lOiAnc3RyaW5nUG9vbCcsIHR5cGU6ICdDSEFSQVJSQVknLCB2YWx1ZTogc3RyaW5nUG9vbH0pO1xuICAgIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIHBhcnNlTHRhZ1RhYmxlKGRhdGEsIHN0YXJ0KSB7XG4gICAgdmFyIHAgPSBuZXcgcGFyc2UuUGFyc2VyKGRhdGEsIHN0YXJ0KTtcbiAgICB2YXIgdGFibGVWZXJzaW9uID0gcC5wYXJzZVVMb25nKCk7XG4gICAgY2hlY2suYXJndW1lbnQodGFibGVWZXJzaW9uID09PSAxLCAnVW5zdXBwb3J0ZWQgbHRhZyB0YWJsZSB2ZXJzaW9uLicpO1xuICAgIC8vIFRoZSAnbHRhZycgc3BlY2lmaWNhdGlvbiBkb2VzIG5vdCBkZWZpbmUgYW55IGZsYWdzOyBza2lwIHRoZSBmaWVsZC5cbiAgICBwLnNraXAoJ3VMb25nJywgMSk7XG4gICAgdmFyIG51bVRhZ3MgPSBwLnBhcnNlVUxvbmcoKTtcblxuICAgIHZhciB0YWdzID0gW107XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1UYWdzOyBpKyspIHtcbiAgICAgICAgdmFyIHRhZyA9ICcnO1xuICAgICAgICB2YXIgb2Zmc2V0ID0gc3RhcnQgKyBwLnBhcnNlVVNob3J0KCk7XG4gICAgICAgIHZhciBsZW5ndGggPSBwLnBhcnNlVVNob3J0KCk7XG4gICAgICAgIGZvciAodmFyIGogPSBvZmZzZXQ7IGogPCBvZmZzZXQgKyBsZW5ndGg7ICsraikge1xuICAgICAgICAgICAgdGFnICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoZGF0YS5nZXRJbnQ4KGopKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRhZ3MucHVzaCh0YWcpO1xuICAgIH1cblxuICAgIHJldHVybiB0YWdzO1xufVxuXG5leHBvcnRzLm1ha2UgPSBtYWtlTHRhZ1RhYmxlO1xuZXhwb3J0cy5wYXJzZSA9IHBhcnNlTHRhZ1RhYmxlO1xuIiwiLy8gVGhlIGBtYXhwYCB0YWJsZSBlc3RhYmxpc2hlcyB0aGUgbWVtb3J5IHJlcXVpcmVtZW50cyBmb3IgdGhlIGZvbnQuXG4vLyBXZSBuZWVkIGl0IGp1c3QgdG8gZ2V0IHRoZSBudW1iZXIgb2YgZ2x5cGhzIGluIHRoZSBmb250LlxuLy8gaHR0cHM6Ly93d3cubWljcm9zb2Z0LmNvbS90eXBvZ3JhcGh5L09UU1BFQy9tYXhwLmh0bVxuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBwYXJzZSA9IHJlcXVpcmUoJy4uL3BhcnNlJyk7XG52YXIgdGFibGUgPSByZXF1aXJlKCcuLi90YWJsZScpO1xuXG4vLyBQYXJzZSB0aGUgbWF4aW11bSBwcm9maWxlIGBtYXhwYCB0YWJsZS5cbmZ1bmN0aW9uIHBhcnNlTWF4cFRhYmxlKGRhdGEsIHN0YXJ0KSB7XG4gICAgdmFyIG1heHAgPSB7fTtcbiAgICB2YXIgcCA9IG5ldyBwYXJzZS5QYXJzZXIoZGF0YSwgc3RhcnQpO1xuICAgIG1heHAudmVyc2lvbiA9IHAucGFyc2VWZXJzaW9uKCk7XG4gICAgbWF4cC5udW1HbHlwaHMgPSBwLnBhcnNlVVNob3J0KCk7XG4gICAgaWYgKG1heHAudmVyc2lvbiA9PT0gMS4wKSB7XG4gICAgICAgIG1heHAubWF4UG9pbnRzID0gcC5wYXJzZVVTaG9ydCgpO1xuICAgICAgICBtYXhwLm1heENvbnRvdXJzID0gcC5wYXJzZVVTaG9ydCgpO1xuICAgICAgICBtYXhwLm1heENvbXBvc2l0ZVBvaW50cyA9IHAucGFyc2VVU2hvcnQoKTtcbiAgICAgICAgbWF4cC5tYXhDb21wb3NpdGVDb250b3VycyA9IHAucGFyc2VVU2hvcnQoKTtcbiAgICAgICAgbWF4cC5tYXhab25lcyA9IHAucGFyc2VVU2hvcnQoKTtcbiAgICAgICAgbWF4cC5tYXhUd2lsaWdodFBvaW50cyA9IHAucGFyc2VVU2hvcnQoKTtcbiAgICAgICAgbWF4cC5tYXhTdG9yYWdlID0gcC5wYXJzZVVTaG9ydCgpO1xuICAgICAgICBtYXhwLm1heEZ1bmN0aW9uRGVmcyA9IHAucGFyc2VVU2hvcnQoKTtcbiAgICAgICAgbWF4cC5tYXhJbnN0cnVjdGlvbkRlZnMgPSBwLnBhcnNlVVNob3J0KCk7XG4gICAgICAgIG1heHAubWF4U3RhY2tFbGVtZW50cyA9IHAucGFyc2VVU2hvcnQoKTtcbiAgICAgICAgbWF4cC5tYXhTaXplT2ZJbnN0cnVjdGlvbnMgPSBwLnBhcnNlVVNob3J0KCk7XG4gICAgICAgIG1heHAubWF4Q29tcG9uZW50RWxlbWVudHMgPSBwLnBhcnNlVVNob3J0KCk7XG4gICAgICAgIG1heHAubWF4Q29tcG9uZW50RGVwdGggPSBwLnBhcnNlVVNob3J0KCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1heHA7XG59XG5cbmZ1bmN0aW9uIG1ha2VNYXhwVGFibGUobnVtR2x5cGhzKSB7XG4gICAgcmV0dXJuIG5ldyB0YWJsZS5UYWJsZSgnbWF4cCcsIFtcbiAgICAgICAge25hbWU6ICd2ZXJzaW9uJywgdHlwZTogJ0ZJWEVEJywgdmFsdWU6IDB4MDAwMDUwMDB9LFxuICAgICAgICB7bmFtZTogJ251bUdseXBocycsIHR5cGU6ICdVU0hPUlQnLCB2YWx1ZTogbnVtR2x5cGhzfVxuICAgIF0pO1xufVxuXG5leHBvcnRzLnBhcnNlID0gcGFyc2VNYXhwVGFibGU7XG5leHBvcnRzLm1ha2UgPSBtYWtlTWF4cFRhYmxlO1xuIiwiLy8gVGhlIGBHUE9TYCB0YWJsZSBjb250YWlucyBrZXJuaW5nIHBhaXJzLCBhbW9uZyBvdGhlciB0aGluZ3MuXG4vLyBodHRwczovL3d3dy5taWNyb3NvZnQuY29tL3R5cG9ncmFwaHkvT1RTUEVDL2dwb3MuaHRtXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIHR5cGVzID0gcmVxdWlyZSgnLi4vdHlwZXMnKTtcbnZhciBkZWNvZGUgPSB0eXBlcy5kZWNvZGU7XG52YXIgY2hlY2sgPSByZXF1aXJlKCcuLi9jaGVjaycpO1xudmFyIHBhcnNlID0gcmVxdWlyZSgnLi4vcGFyc2UnKTtcbnZhciB0YWJsZSA9IHJlcXVpcmUoJy4uL3RhYmxlJyk7XG5cbi8vIFBhcnNlIHRoZSBtZXRhZGF0YSBgbWV0YWAgdGFibGUuXG4vLyBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vZm9udHMvVHJ1ZVR5cGUtUmVmZXJlbmNlLU1hbnVhbC9STTA2L0NoYXA2bWV0YS5odG1sXG5mdW5jdGlvbiBwYXJzZU1ldGFUYWJsZShkYXRhLCBzdGFydCkge1xuICAgIHZhciBwID0gbmV3IHBhcnNlLlBhcnNlcihkYXRhLCBzdGFydCk7XG4gICAgdmFyIHRhYmxlVmVyc2lvbiA9IHAucGFyc2VVTG9uZygpO1xuICAgIGNoZWNrLmFyZ3VtZW50KHRhYmxlVmVyc2lvbiA9PT0gMSwgJ1Vuc3VwcG9ydGVkIE1FVEEgdGFibGUgdmVyc2lvbi4nKTtcbiAgICBwLnBhcnNlVUxvbmcoKTsgLy8gZmxhZ3MgLSBjdXJyZW50bHkgdW51c2VkIGFuZCBzZXQgdG8gMFxuICAgIHAucGFyc2VVTG9uZygpOyAvLyB0YWJsZU9mZnNldFxuICAgIHZhciBudW1EYXRhTWFwcyA9IHAucGFyc2VVTG9uZygpO1xuXG4gICAgdmFyIHRhZ3MgPSB7fTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bURhdGFNYXBzOyBpKyspIHtcbiAgICAgICAgdmFyIHRhZyA9IHAucGFyc2VUYWcoKTtcbiAgICAgICAgdmFyIGRhdGFPZmZzZXQgPSBwLnBhcnNlVUxvbmcoKTtcbiAgICAgICAgdmFyIGRhdGFMZW5ndGggPSBwLnBhcnNlVUxvbmcoKTtcbiAgICAgICAgdmFyIHRleHQgPSBkZWNvZGUuVVRGOChkYXRhLCBzdGFydCArIGRhdGFPZmZzZXQsIGRhdGFMZW5ndGgpO1xuXG4gICAgICAgIHRhZ3NbdGFnXSA9IHRleHQ7XG4gICAgfVxuICAgIHJldHVybiB0YWdzO1xufVxuXG5mdW5jdGlvbiBtYWtlTWV0YVRhYmxlKHRhZ3MpIHtcbiAgICB2YXIgbnVtVGFncyA9IE9iamVjdC5rZXlzKHRhZ3MpLmxlbmd0aDtcbiAgICB2YXIgc3RyaW5nUG9vbCA9ICcnO1xuICAgIHZhciBzdHJpbmdQb29sT2Zmc2V0ID0gMTYgKyBudW1UYWdzICogMTI7XG5cbiAgICB2YXIgcmVzdWx0ID0gbmV3IHRhYmxlLlRhYmxlKCdtZXRhJywgW1xuICAgICAgICB7bmFtZTogJ3ZlcnNpb24nLCB0eXBlOiAnVUxPTkcnLCB2YWx1ZTogMX0sXG4gICAgICAgIHtuYW1lOiAnZmxhZ3MnLCB0eXBlOiAnVUxPTkcnLCB2YWx1ZTogMH0sXG4gICAgICAgIHtuYW1lOiAnb2Zmc2V0JywgdHlwZTogJ1VMT05HJywgdmFsdWU6IHN0cmluZ1Bvb2xPZmZzZXR9LFxuICAgICAgICB7bmFtZTogJ251bVRhZ3MnLCB0eXBlOiAnVUxPTkcnLCB2YWx1ZTogbnVtVGFnc31cbiAgICBdKTtcblxuICAgIGZvciAodmFyIHRhZyBpbiB0YWdzKSB7XG4gICAgICAgIHZhciBwb3MgPSBzdHJpbmdQb29sLmxlbmd0aDtcbiAgICAgICAgc3RyaW5nUG9vbCArPSB0YWdzW3RhZ107XG5cbiAgICAgICAgcmVzdWx0LmZpZWxkcy5wdXNoKHtuYW1lOiAndGFnICcgKyB0YWcsIHR5cGU6ICdUQUcnLCB2YWx1ZTogdGFnfSk7XG4gICAgICAgIHJlc3VsdC5maWVsZHMucHVzaCh7bmFtZTogJ29mZnNldCAnICsgdGFnLCB0eXBlOiAnVUxPTkcnLCB2YWx1ZTogc3RyaW5nUG9vbE9mZnNldCArIHBvc30pO1xuICAgICAgICByZXN1bHQuZmllbGRzLnB1c2goe25hbWU6ICdsZW5ndGggJyArIHRhZywgdHlwZTogJ1VMT05HJywgdmFsdWU6IHRhZ3NbdGFnXS5sZW5ndGh9KTtcbiAgICB9XG5cbiAgICByZXN1bHQuZmllbGRzLnB1c2goe25hbWU6ICdzdHJpbmdQb29sJywgdHlwZTogJ0NIQVJBUlJBWScsIHZhbHVlOiBzdHJpbmdQb29sfSk7XG5cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuXG5leHBvcnRzLnBhcnNlID0gcGFyc2VNZXRhVGFibGU7XG5leHBvcnRzLm1ha2UgPSBtYWtlTWV0YVRhYmxlO1xuIiwiLy8gVGhlIGBuYW1lYCBuYW1pbmcgdGFibGUuXG4vLyBodHRwczovL3d3dy5taWNyb3NvZnQuY29tL3R5cG9ncmFwaHkvT1RTUEVDL25hbWUuaHRtXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIHR5cGVzID0gcmVxdWlyZSgnLi4vdHlwZXMnKTtcbnZhciBkZWNvZGUgPSB0eXBlcy5kZWNvZGU7XG52YXIgZW5jb2RlID0gdHlwZXMuZW5jb2RlO1xudmFyIHBhcnNlID0gcmVxdWlyZSgnLi4vcGFyc2UnKTtcbnZhciB0YWJsZSA9IHJlcXVpcmUoJy4uL3RhYmxlJyk7XG5cbi8vIE5hbWVJRHMgZm9yIHRoZSBuYW1lIHRhYmxlLlxudmFyIG5hbWVUYWJsZU5hbWVzID0gW1xuICAgICdjb3B5cmlnaHQnLCAgICAgICAgICAgICAgLy8gMFxuICAgICdmb250RmFtaWx5JywgICAgICAgICAgICAgLy8gMVxuICAgICdmb250U3ViZmFtaWx5JywgICAgICAgICAgLy8gMlxuICAgICd1bmlxdWVJRCcsICAgICAgICAgICAgICAgLy8gM1xuICAgICdmdWxsTmFtZScsICAgICAgICAgICAgICAgLy8gNFxuICAgICd2ZXJzaW9uJywgICAgICAgICAgICAgICAgLy8gNVxuICAgICdwb3N0U2NyaXB0TmFtZScsICAgICAgICAgLy8gNlxuICAgICd0cmFkZW1hcmsnLCAgICAgICAgICAgICAgLy8gN1xuICAgICdtYW51ZmFjdHVyZXInLCAgICAgICAgICAgLy8gOFxuICAgICdkZXNpZ25lcicsICAgICAgICAgICAgICAgLy8gOVxuICAgICdkZXNjcmlwdGlvbicsICAgICAgICAgICAgLy8gMTBcbiAgICAnbWFudWZhY3R1cmVyVVJMJywgICAgICAgIC8vIDExXG4gICAgJ2Rlc2lnbmVyVVJMJywgICAgICAgICAgICAvLyAxMlxuICAgICdsaWNlbnNlJywgICAgICAgICAgICAgICAgLy8gMTNcbiAgICAnbGljZW5zZVVSTCcsICAgICAgICAgICAgIC8vIDE0XG4gICAgJ3Jlc2VydmVkJywgICAgICAgICAgICAgICAvLyAxNVxuICAgICdwcmVmZXJyZWRGYW1pbHknLCAgICAgICAgLy8gMTZcbiAgICAncHJlZmVycmVkU3ViZmFtaWx5JywgICAgIC8vIDE3XG4gICAgJ2NvbXBhdGlibGVGdWxsTmFtZScsICAgICAvLyAxOFxuICAgICdzYW1wbGVUZXh0JywgICAgICAgICAgICAgLy8gMTlcbiAgICAncG9zdFNjcmlwdEZpbmRGb250TmFtZScsIC8vIDIwXG4gICAgJ3d3c0ZhbWlseScsICAgICAgICAgICAgICAvLyAyMVxuICAgICd3d3NTdWJmYW1pbHknICAgICAgICAgICAgLy8gMjJcbl07XG5cbnZhciBtYWNMYW5ndWFnZXMgPSB7XG4gICAgMDogJ2VuJyxcbiAgICAxOiAnZnInLFxuICAgIDI6ICdkZScsXG4gICAgMzogJ2l0JyxcbiAgICA0OiAnbmwnLFxuICAgIDU6ICdzdicsXG4gICAgNjogJ2VzJyxcbiAgICA3OiAnZGEnLFxuICAgIDg6ICdwdCcsXG4gICAgOTogJ25vJyxcbiAgICAxMDogJ2hlJyxcbiAgICAxMTogJ2phJyxcbiAgICAxMjogJ2FyJyxcbiAgICAxMzogJ2ZpJyxcbiAgICAxNDogJ2VsJyxcbiAgICAxNTogJ2lzJyxcbiAgICAxNjogJ210JyxcbiAgICAxNzogJ3RyJyxcbiAgICAxODogJ2hyJyxcbiAgICAxOTogJ3poLUhhbnQnLFxuICAgIDIwOiAndXInLFxuICAgIDIxOiAnaGknLFxuICAgIDIyOiAndGgnLFxuICAgIDIzOiAna28nLFxuICAgIDI0OiAnbHQnLFxuICAgIDI1OiAncGwnLFxuICAgIDI2OiAnaHUnLFxuICAgIDI3OiAnZXMnLFxuICAgIDI4OiAnbHYnLFxuICAgIDI5OiAnc2UnLFxuICAgIDMwOiAnZm8nLFxuICAgIDMxOiAnZmEnLFxuICAgIDMyOiAncnUnLFxuICAgIDMzOiAnemgnLFxuICAgIDM0OiAnbmwtQkUnLFxuICAgIDM1OiAnZ2EnLFxuICAgIDM2OiAnc3EnLFxuICAgIDM3OiAncm8nLFxuICAgIDM4OiAnY3onLFxuICAgIDM5OiAnc2snLFxuICAgIDQwOiAnc2knLFxuICAgIDQxOiAneWknLFxuICAgIDQyOiAnc3InLFxuICAgIDQzOiAnbWsnLFxuICAgIDQ0OiAnYmcnLFxuICAgIDQ1OiAndWsnLFxuICAgIDQ2OiAnYmUnLFxuICAgIDQ3OiAndXonLFxuICAgIDQ4OiAna2snLFxuICAgIDQ5OiAnYXotQ3lybCcsXG4gICAgNTA6ICdhei1BcmFiJyxcbiAgICA1MTogJ2h5JyxcbiAgICA1MjogJ2thJyxcbiAgICA1MzogJ21vJyxcbiAgICA1NDogJ2t5JyxcbiAgICA1NTogJ3RnJyxcbiAgICA1NjogJ3RrJyxcbiAgICA1NzogJ21uLUNOJyxcbiAgICA1ODogJ21uJyxcbiAgICA1OTogJ3BzJyxcbiAgICA2MDogJ2tzJyxcbiAgICA2MTogJ2t1JyxcbiAgICA2MjogJ3NkJyxcbiAgICA2MzogJ2JvJyxcbiAgICA2NDogJ25lJyxcbiAgICA2NTogJ3NhJyxcbiAgICA2NjogJ21yJyxcbiAgICA2NzogJ2JuJyxcbiAgICA2ODogJ2FzJyxcbiAgICA2OTogJ2d1JyxcbiAgICA3MDogJ3BhJyxcbiAgICA3MTogJ29yJyxcbiAgICA3MjogJ21sJyxcbiAgICA3MzogJ2tuJyxcbiAgICA3NDogJ3RhJyxcbiAgICA3NTogJ3RlJyxcbiAgICA3NjogJ3NpJyxcbiAgICA3NzogJ215JyxcbiAgICA3ODogJ2ttJyxcbiAgICA3OTogJ2xvJyxcbiAgICA4MDogJ3ZpJyxcbiAgICA4MTogJ2lkJyxcbiAgICA4MjogJ3RsJyxcbiAgICA4MzogJ21zJyxcbiAgICA4NDogJ21zLUFyYWInLFxuICAgIDg1OiAnYW0nLFxuICAgIDg2OiAndGknLFxuICAgIDg3OiAnb20nLFxuICAgIDg4OiAnc28nLFxuICAgIDg5OiAnc3cnLFxuICAgIDkwOiAncncnLFxuICAgIDkxOiAncm4nLFxuICAgIDkyOiAnbnknLFxuICAgIDkzOiAnbWcnLFxuICAgIDk0OiAnZW8nLFxuICAgIDEyODogJ2N5JyxcbiAgICAxMjk6ICdldScsXG4gICAgMTMwOiAnY2EnLFxuICAgIDEzMTogJ2xhJyxcbiAgICAxMzI6ICdxdScsXG4gICAgMTMzOiAnZ24nLFxuICAgIDEzNDogJ2F5JyxcbiAgICAxMzU6ICd0dCcsXG4gICAgMTM2OiAndWcnLFxuICAgIDEzNzogJ2R6JyxcbiAgICAxMzg6ICdqdicsXG4gICAgMTM5OiAnc3UnLFxuICAgIDE0MDogJ2dsJyxcbiAgICAxNDE6ICdhZicsXG4gICAgMTQyOiAnYnInLFxuICAgIDE0MzogJ2l1JyxcbiAgICAxNDQ6ICdnZCcsXG4gICAgMTQ1OiAnZ3YnLFxuICAgIDE0NjogJ2dhJyxcbiAgICAxNDc6ICd0bycsXG4gICAgMTQ4OiAnZWwtcG9seXRvbicsXG4gICAgMTQ5OiAna2wnLFxuICAgIDE1MDogJ2F6JyxcbiAgICAxNTE6ICdubidcbn07XG5cbi8vIE1hY09TIGxhbmd1YWdlIElEIOKGkiBNYWNPUyBzY3JpcHQgSURcbi8vXG4vLyBOb3RlIHRoYXQgdGhlIHNjcmlwdCBJRCBpcyBub3Qgc3VmZmljaWVudCB0byBkZXRlcm1pbmUgd2hhdCBlbmNvZGluZ1xuLy8gdG8gdXNlIGluIFRydWVUeXBlIGZpbGVzLiBGb3Igc29tZSBsYW5ndWFnZXMsIE1hY09TIHVzZWQgYSBtb2RpZmljYXRpb25cbi8vIG9mIGEgbWFpbnN0cmVhbSBzY3JpcHQuIEZvciBleGFtcGxlLCBhbiBJY2VsYW5kaWMgbmFtZSB3b3VsZCBiZSBzdG9yZWRcbi8vIHdpdGggc21Sb21hbiBpbiB0aGUgVHJ1ZVR5cGUgbmFtaW5nIHRhYmxlLCBidXQgdGhlIGFjdHVhbCBlbmNvZGluZ1xuLy8gaXMgYSBzcGVjaWFsIEljZWxhbmRpYyB2ZXJzaW9uIG9mIHRoZSBub3JtYWwgTWFjaW50b3NoIFJvbWFuIGVuY29kaW5nLlxuLy8gQXMgYW5vdGhlciBleGFtcGxlLCBJbnVrdGl0dXQgdXNlcyBhbiA4LWJpdCBlbmNvZGluZyBmb3IgQ2FuYWRpYW4gQWJvcmlnaW5hbFxuLy8gU3lsbGFibGVzIGJ1dCBNYWNPUyBoYWQgcnVuIG91dCBvZiBhdmFpbGFibGUgc2NyaXB0IGNvZGVzLCBzbyB0aGlzIHdhc1xuLy8gZG9uZSBhcyBhIChwcmV0dHkgcmFkaWNhbCkgXCJtb2RpZmljYXRpb25cIiBvZiBFdGhpb3BpYy5cbi8vXG4vLyBodHRwOi8vdW5pY29kZS5vcmcvUHVibGljL01BUFBJTkdTL1ZFTkRPUlMvQVBQTEUvUmVhZG1lLnR4dFxudmFyIG1hY0xhbmd1YWdlVG9TY3JpcHQgPSB7XG4gICAgMDogMCwgIC8vIGxhbmdFbmdsaXNoIOKGkiBzbVJvbWFuXG4gICAgMTogMCwgIC8vIGxhbmdGcmVuY2gg4oaSIHNtUm9tYW5cbiAgICAyOiAwLCAgLy8gbGFuZ0dlcm1hbiDihpIgc21Sb21hblxuICAgIDM6IDAsICAvLyBsYW5nSXRhbGlhbiDihpIgc21Sb21hblxuICAgIDQ6IDAsICAvLyBsYW5nRHV0Y2gg4oaSIHNtUm9tYW5cbiAgICA1OiAwLCAgLy8gbGFuZ1N3ZWRpc2gg4oaSIHNtUm9tYW5cbiAgICA2OiAwLCAgLy8gbGFuZ1NwYW5pc2gg4oaSIHNtUm9tYW5cbiAgICA3OiAwLCAgLy8gbGFuZ0RhbmlzaCDihpIgc21Sb21hblxuICAgIDg6IDAsICAvLyBsYW5nUG9ydHVndWVzZSDihpIgc21Sb21hblxuICAgIDk6IDAsICAvLyBsYW5nTm9yd2VnaWFuIOKGkiBzbVJvbWFuXG4gICAgMTA6IDUsICAvLyBsYW5nSGVicmV3IOKGkiBzbUhlYnJld1xuICAgIDExOiAxLCAgLy8gbGFuZ0phcGFuZXNlIOKGkiBzbUphcGFuZXNlXG4gICAgMTI6IDQsICAvLyBsYW5nQXJhYmljIOKGkiBzbUFyYWJpY1xuICAgIDEzOiAwLCAgLy8gbGFuZ0Zpbm5pc2gg4oaSIHNtUm9tYW5cbiAgICAxNDogNiwgIC8vIGxhbmdHcmVlayDihpIgc21HcmVla1xuICAgIDE1OiAwLCAgLy8gbGFuZ0ljZWxhbmRpYyDihpIgc21Sb21hbiAobW9kaWZpZWQpXG4gICAgMTY6IDAsICAvLyBsYW5nTWFsdGVzZSDihpIgc21Sb21hblxuICAgIDE3OiAwLCAgLy8gbGFuZ1R1cmtpc2gg4oaSIHNtUm9tYW4gKG1vZGlmaWVkKVxuICAgIDE4OiAwLCAgLy8gbGFuZ0Nyb2F0aWFuIOKGkiBzbVJvbWFuIChtb2RpZmllZClcbiAgICAxOTogMiwgIC8vIGxhbmdUcmFkQ2hpbmVzZSDihpIgc21UcmFkQ2hpbmVzZVxuICAgIDIwOiA0LCAgLy8gbGFuZ1VyZHUg4oaSIHNtQXJhYmljXG4gICAgMjE6IDksICAvLyBsYW5nSGluZGkg4oaSIHNtRGV2YW5hZ2FyaVxuICAgIDIyOiAyMSwgIC8vIGxhbmdUaGFpIOKGkiBzbVRoYWlcbiAgICAyMzogMywgIC8vIGxhbmdLb3JlYW4g4oaSIHNtS29yZWFuXG4gICAgMjQ6IDI5LCAgLy8gbGFuZ0xpdGh1YW5pYW4g4oaSIHNtQ2VudHJhbEV1cm9Sb21hblxuICAgIDI1OiAyOSwgIC8vIGxhbmdQb2xpc2gg4oaSIHNtQ2VudHJhbEV1cm9Sb21hblxuICAgIDI2OiAyOSwgIC8vIGxhbmdIdW5nYXJpYW4g4oaSIHNtQ2VudHJhbEV1cm9Sb21hblxuICAgIDI3OiAyOSwgIC8vIGxhbmdFc3RvbmlhbiDihpIgc21DZW50cmFsRXVyb1JvbWFuXG4gICAgMjg6IDI5LCAgLy8gbGFuZ0xhdHZpYW4g4oaSIHNtQ2VudHJhbEV1cm9Sb21hblxuICAgIDI5OiAwLCAgLy8gbGFuZ1NhbWkg4oaSIHNtUm9tYW5cbiAgICAzMDogMCwgIC8vIGxhbmdGYXJvZXNlIOKGkiBzbVJvbWFuIChtb2RpZmllZClcbiAgICAzMTogNCwgIC8vIGxhbmdGYXJzaSDihpIgc21BcmFiaWMgKG1vZGlmaWVkKVxuICAgIDMyOiA3LCAgLy8gbGFuZ1J1c3NpYW4g4oaSIHNtQ3lyaWxsaWNcbiAgICAzMzogMjUsICAvLyBsYW5nU2ltcENoaW5lc2Ug4oaSIHNtU2ltcENoaW5lc2VcbiAgICAzNDogMCwgIC8vIGxhbmdGbGVtaXNoIOKGkiBzbVJvbWFuXG4gICAgMzU6IDAsICAvLyBsYW5nSXJpc2hHYWVsaWMg4oaSIHNtUm9tYW4gKG1vZGlmaWVkKVxuICAgIDM2OiAwLCAgLy8gbGFuZ0FsYmFuaWFuIOKGkiBzbVJvbWFuXG4gICAgMzc6IDAsICAvLyBsYW5nUm9tYW5pYW4g4oaSIHNtUm9tYW4gKG1vZGlmaWVkKVxuICAgIDM4OiAyOSwgIC8vIGxhbmdDemVjaCDihpIgc21DZW50cmFsRXVyb1JvbWFuXG4gICAgMzk6IDI5LCAgLy8gbGFuZ1Nsb3ZhayDihpIgc21DZW50cmFsRXVyb1JvbWFuXG4gICAgNDA6IDAsICAvLyBsYW5nU2xvdmVuaWFuIOKGkiBzbVJvbWFuIChtb2RpZmllZClcbiAgICA0MTogNSwgIC8vIGxhbmdZaWRkaXNoIOKGkiBzbUhlYnJld1xuICAgIDQyOiA3LCAgLy8gbGFuZ1NlcmJpYW4g4oaSIHNtQ3lyaWxsaWNcbiAgICA0MzogNywgIC8vIGxhbmdNYWNlZG9uaWFuIOKGkiBzbUN5cmlsbGljXG4gICAgNDQ6IDcsICAvLyBsYW5nQnVsZ2FyaWFuIOKGkiBzbUN5cmlsbGljXG4gICAgNDU6IDcsICAvLyBsYW5nVWtyYWluaWFuIOKGkiBzbUN5cmlsbGljIChtb2RpZmllZClcbiAgICA0NjogNywgIC8vIGxhbmdCeWVsb3J1c3NpYW4g4oaSIHNtQ3lyaWxsaWNcbiAgICA0NzogNywgIC8vIGxhbmdVemJlayDihpIgc21DeXJpbGxpY1xuICAgIDQ4OiA3LCAgLy8gbGFuZ0themFraCDihpIgc21DeXJpbGxpY1xuICAgIDQ5OiA3LCAgLy8gbGFuZ0F6ZXJiYWlqYW5pIOKGkiBzbUN5cmlsbGljXG4gICAgNTA6IDQsICAvLyBsYW5nQXplcmJhaWphbkFyIOKGkiBzbUFyYWJpY1xuICAgIDUxOiAyNCwgIC8vIGxhbmdBcm1lbmlhbiDihpIgc21Bcm1lbmlhblxuICAgIDUyOiAyMywgIC8vIGxhbmdHZW9yZ2lhbiDihpIgc21HZW9yZ2lhblxuICAgIDUzOiA3LCAgLy8gbGFuZ01vbGRhdmlhbiDihpIgc21DeXJpbGxpY1xuICAgIDU0OiA3LCAgLy8gbGFuZ0tpcmdoaXog4oaSIHNtQ3lyaWxsaWNcbiAgICA1NTogNywgIC8vIGxhbmdUYWppa2kg4oaSIHNtQ3lyaWxsaWNcbiAgICA1NjogNywgIC8vIGxhbmdUdXJrbWVuIOKGkiBzbUN5cmlsbGljXG4gICAgNTc6IDI3LCAgLy8gbGFuZ01vbmdvbGlhbiDihpIgc21Nb25nb2xpYW5cbiAgICA1ODogNywgIC8vIGxhbmdNb25nb2xpYW5DeXIg4oaSIHNtQ3lyaWxsaWNcbiAgICA1OTogNCwgIC8vIGxhbmdQYXNodG8g4oaSIHNtQXJhYmljXG4gICAgNjA6IDQsICAvLyBsYW5nS3VyZGlzaCDihpIgc21BcmFiaWNcbiAgICA2MTogNCwgIC8vIGxhbmdLYXNobWlyaSDihpIgc21BcmFiaWNcbiAgICA2MjogNCwgIC8vIGxhbmdTaW5kaGkg4oaSIHNtQXJhYmljXG4gICAgNjM6IDI2LCAgLy8gbGFuZ1RpYmV0YW4g4oaSIHNtVGliZXRhblxuICAgIDY0OiA5LCAgLy8gbGFuZ05lcGFsaSDihpIgc21EZXZhbmFnYXJpXG4gICAgNjU6IDksICAvLyBsYW5nU2Fuc2tyaXQg4oaSIHNtRGV2YW5hZ2FyaVxuICAgIDY2OiA5LCAgLy8gbGFuZ01hcmF0aGkg4oaSIHNtRGV2YW5hZ2FyaVxuICAgIDY3OiAxMywgIC8vIGxhbmdCZW5nYWxpIOKGkiBzbUJlbmdhbGlcbiAgICA2ODogMTMsICAvLyBsYW5nQXNzYW1lc2Ug4oaSIHNtQmVuZ2FsaVxuICAgIDY5OiAxMSwgIC8vIGxhbmdHdWphcmF0aSDihpIgc21HdWphcmF0aVxuICAgIDcwOiAxMCwgIC8vIGxhbmdQdW5qYWJpIOKGkiBzbUd1cm11a2hpXG4gICAgNzE6IDEyLCAgLy8gbGFuZ09yaXlhIOKGkiBzbU9yaXlhXG4gICAgNzI6IDE3LCAgLy8gbGFuZ01hbGF5YWxhbSDihpIgc21NYWxheWFsYW1cbiAgICA3MzogMTYsICAvLyBsYW5nS2FubmFkYSDihpIgc21LYW5uYWRhXG4gICAgNzQ6IDE0LCAgLy8gbGFuZ1RhbWlsIOKGkiBzbVRhbWlsXG4gICAgNzU6IDE1LCAgLy8gbGFuZ1RlbHVndSDihpIgc21UZWx1Z3VcbiAgICA3NjogMTgsICAvLyBsYW5nU2luaGFsZXNlIOKGkiBzbVNpbmhhbGVzZVxuICAgIDc3OiAxOSwgIC8vIGxhbmdCdXJtZXNlIOKGkiBzbUJ1cm1lc2VcbiAgICA3ODogMjAsICAvLyBsYW5nS2htZXIg4oaSIHNtS2htZXJcbiAgICA3OTogMjIsICAvLyBsYW5nTGFvIOKGkiBzbUxhb1xuICAgIDgwOiAzMCwgIC8vIGxhbmdWaWV0bmFtZXNlIOKGkiBzbVZpZXRuYW1lc2VcbiAgICA4MTogMCwgIC8vIGxhbmdJbmRvbmVzaWFuIOKGkiBzbVJvbWFuXG4gICAgODI6IDAsICAvLyBsYW5nVGFnYWxvZyDihpIgc21Sb21hblxuICAgIDgzOiAwLCAgLy8gbGFuZ01hbGF5Um9tYW4g4oaSIHNtUm9tYW5cbiAgICA4NDogNCwgIC8vIGxhbmdNYWxheUFyYWJpYyDihpIgc21BcmFiaWNcbiAgICA4NTogMjgsICAvLyBsYW5nQW1oYXJpYyDihpIgc21FdGhpb3BpY1xuICAgIDg2OiAyOCwgIC8vIGxhbmdUaWdyaW55YSDihpIgc21FdGhpb3BpY1xuICAgIDg3OiAyOCwgIC8vIGxhbmdPcm9tbyDihpIgc21FdGhpb3BpY1xuICAgIDg4OiAwLCAgLy8gbGFuZ1NvbWFsaSDihpIgc21Sb21hblxuICAgIDg5OiAwLCAgLy8gbGFuZ1N3YWhpbGkg4oaSIHNtUm9tYW5cbiAgICA5MDogMCwgIC8vIGxhbmdLaW55YXJ3YW5kYSDihpIgc21Sb21hblxuICAgIDkxOiAwLCAgLy8gbGFuZ1J1bmRpIOKGkiBzbVJvbWFuXG4gICAgOTI6IDAsICAvLyBsYW5nTnlhbmphIOKGkiBzbVJvbWFuXG4gICAgOTM6IDAsICAvLyBsYW5nTWFsYWdhc3kg4oaSIHNtUm9tYW5cbiAgICA5NDogMCwgIC8vIGxhbmdFc3BlcmFudG8g4oaSIHNtUm9tYW5cbiAgICAxMjg6IDAsICAvLyBsYW5nV2Vsc2gg4oaSIHNtUm9tYW4gKG1vZGlmaWVkKVxuICAgIDEyOTogMCwgIC8vIGxhbmdCYXNxdWUg4oaSIHNtUm9tYW5cbiAgICAxMzA6IDAsICAvLyBsYW5nQ2F0YWxhbiDihpIgc21Sb21hblxuICAgIDEzMTogMCwgIC8vIGxhbmdMYXRpbiDihpIgc21Sb21hblxuICAgIDEzMjogMCwgIC8vIGxhbmdRdWVjaHVhIOKGkiBzbVJvbWFuXG4gICAgMTMzOiAwLCAgLy8gbGFuZ0d1YXJhbmkg4oaSIHNtUm9tYW5cbiAgICAxMzQ6IDAsICAvLyBsYW5nQXltYXJhIOKGkiBzbVJvbWFuXG4gICAgMTM1OiA3LCAgLy8gbGFuZ1RhdGFyIOKGkiBzbUN5cmlsbGljXG4gICAgMTM2OiA0LCAgLy8gbGFuZ1VpZ2h1ciDihpIgc21BcmFiaWNcbiAgICAxMzc6IDI2LCAgLy8gbGFuZ0R6b25na2hhIOKGkiBzbVRpYmV0YW5cbiAgICAxMzg6IDAsICAvLyBsYW5nSmF2YW5lc2VSb20g4oaSIHNtUm9tYW5cbiAgICAxMzk6IDAsICAvLyBsYW5nU3VuZGFuZXNlUm9tIOKGkiBzbVJvbWFuXG4gICAgMTQwOiAwLCAgLy8gbGFuZ0dhbGljaWFuIOKGkiBzbVJvbWFuXG4gICAgMTQxOiAwLCAgLy8gbGFuZ0FmcmlrYWFucyDihpIgc21Sb21hblxuICAgIDE0MjogMCwgIC8vIGxhbmdCcmV0b24g4oaSIHNtUm9tYW4gKG1vZGlmaWVkKVxuICAgIDE0MzogMjgsICAvLyBsYW5nSW51a3RpdHV0IOKGkiBzbUV0aGlvcGljIChtb2RpZmllZClcbiAgICAxNDQ6IDAsICAvLyBsYW5nU2NvdHRpc2hHYWVsaWMg4oaSIHNtUm9tYW4gKG1vZGlmaWVkKVxuICAgIDE0NTogMCwgIC8vIGxhbmdNYW54R2FlbGljIOKGkiBzbVJvbWFuIChtb2RpZmllZClcbiAgICAxNDY6IDAsICAvLyBsYW5nSXJpc2hHYWVsaWNTY3JpcHQg4oaSIHNtUm9tYW4gKG1vZGlmaWVkKVxuICAgIDE0NzogMCwgIC8vIGxhbmdUb25nYW4g4oaSIHNtUm9tYW5cbiAgICAxNDg6IDYsICAvLyBsYW5nR3JlZWtBbmNpZW50IOKGkiBzbVJvbWFuXG4gICAgMTQ5OiAwLCAgLy8gbGFuZ0dyZWVubGFuZGljIOKGkiBzbVJvbWFuXG4gICAgMTUwOiAwLCAgLy8gbGFuZ0F6ZXJiYWlqYW5Sb21hbiDihpIgc21Sb21hblxuICAgIDE1MTogMCAgIC8vIGxhbmdOeW5vcnNrIOKGkiBzbVJvbWFuXG59O1xuXG4vLyBXaGlsZSBNaWNyb3NvZnQgaW5kaWNhdGVzIGEgcmVnaW9uL2NvdW50cnkgZm9yIGFsbCBpdHMgbGFuZ3VhZ2Vcbi8vIElEcywgd2Ugb21pdCB0aGUgcmVnaW9uIGNvZGUgaWYgaXQncyBlcXVhbCB0byB0aGUgXCJtb3N0IGxpa2VseVxuLy8gcmVnaW9uIHN1YnRhZ1wiIGFjY29yZGluZyB0byBVbmljb2RlIENMRFIuIEZvciBzY3JpcHRzLCB3ZSBvbWl0XG4vLyB0aGUgc3VidGFnIGlmIGl0IGlzIGVxdWFsIHRvIHRoZSBTdXBwcmVzcy1TY3JpcHQgZW50cnkgaW4gdGhlXG4vLyBJQU5BIGxhbmd1YWdlIHN1YnRhZyByZWdpc3RyeSBmb3IgSUVURiBCQ1AgNDcuXG4vL1xuLy8gRm9yIGV4YW1wbGUsIE1pY3Jvc29mdCBzdGF0ZXMgdGhhdCBpdHMgbGFuZ3VhZ2UgY29kZSAweDA0MUEgaXNcbi8vIENyb2F0aWFuIGluIENyb2F0aWEuIFdlIHRyYW5zZm9ybSB0aGlzIHRvIHRoZSBCQ1AgNDcgbGFuZ3VhZ2UgY29kZSAnaHInXG4vLyBhbmQgbm90ICdoci1IUicgYmVjYXVzZSBDcm9hdGlhIGlzIHRoZSBkZWZhdWx0IGNvdW50cnkgZm9yIENyb2F0aWFuLFxuLy8gYWNjb3JkaW5nIHRvIFVuaWNvZGUgQ0xEUi4gQXMgYW5vdGhlciBleGFtcGxlLCBNaWNyb3NvZnQgc3RhdGVzXG4vLyB0aGF0IDB4MTAxQSBpcyBDcm9hdGlhbiAoTGF0aW4pIGluIEJvc25pYS1IZXJ6ZWdvdmluYS4gV2UgdHJhbnNmb3JtXG4vLyB0aGlzIHRvICdoci1CQScgYW5kIG5vdCAnaHItTGF0bi1CQScgYmVjYXVzZSBMYXRpbiBpcyB0aGUgZGVmYXVsdCBzY3JpcHRcbi8vIGZvciB0aGUgQ3JvYXRpYW4gbGFuZ3VhZ2UsIGFjY29yZGluZyB0byBJQU5BLlxuLy9cbi8vIGh0dHA6Ly93d3cudW5pY29kZS5vcmcvY2xkci9jaGFydHMvbGF0ZXN0L3N1cHBsZW1lbnRhbC9saWtlbHlfc3VidGFncy5odG1sXG4vLyBodHRwOi8vd3d3LmlhbmEub3JnL2Fzc2lnbm1lbnRzL2xhbmd1YWdlLXN1YnRhZy1yZWdpc3RyeS9sYW5ndWFnZS1zdWJ0YWctcmVnaXN0cnlcbnZhciB3aW5kb3dzTGFuZ3VhZ2VzID0ge1xuICAgIDB4MDQzNjogJ2FmJyxcbiAgICAweDA0MUM6ICdzcScsXG4gICAgMHgwNDg0OiAnZ3N3JyxcbiAgICAweDA0NUU6ICdhbScsXG4gICAgMHgxNDAxOiAnYXItRFonLFxuICAgIDB4M0MwMTogJ2FyLUJIJyxcbiAgICAweDBDMDE6ICdhcicsXG4gICAgMHgwODAxOiAnYXItSVEnLFxuICAgIDB4MkMwMTogJ2FyLUpPJyxcbiAgICAweDM0MDE6ICdhci1LVycsXG4gICAgMHgzMDAxOiAnYXItTEInLFxuICAgIDB4MTAwMTogJ2FyLUxZJyxcbiAgICAweDE4MDE6ICdhcnknLFxuICAgIDB4MjAwMTogJ2FyLU9NJyxcbiAgICAweDQwMDE6ICdhci1RQScsXG4gICAgMHgwNDAxOiAnYXItU0EnLFxuICAgIDB4MjgwMTogJ2FyLVNZJyxcbiAgICAweDFDMDE6ICdhZWInLFxuICAgIDB4MzgwMTogJ2FyLUFFJyxcbiAgICAweDI0MDE6ICdhci1ZRScsXG4gICAgMHgwNDJCOiAnaHknLFxuICAgIDB4MDQ0RDogJ2FzJyxcbiAgICAweDA4MkM6ICdhei1DeXJsJyxcbiAgICAweDA0MkM6ICdheicsXG4gICAgMHgwNDZEOiAnYmEnLFxuICAgIDB4MDQyRDogJ2V1JyxcbiAgICAweDA0MjM6ICdiZScsXG4gICAgMHgwODQ1OiAnYm4nLFxuICAgIDB4MDQ0NTogJ2JuLUlOJyxcbiAgICAweDIwMUE6ICdicy1DeXJsJyxcbiAgICAweDE0MUE6ICdicycsXG4gICAgMHgwNDdFOiAnYnInLFxuICAgIDB4MDQwMjogJ2JnJyxcbiAgICAweDA0MDM6ICdjYScsXG4gICAgMHgwQzA0OiAnemgtSEsnLFxuICAgIDB4MTQwNDogJ3poLU1PJyxcbiAgICAweDA4MDQ6ICd6aCcsXG4gICAgMHgxMDA0OiAnemgtU0cnLFxuICAgIDB4MDQwNDogJ3poLVRXJyxcbiAgICAweDA0ODM6ICdjbycsXG4gICAgMHgwNDFBOiAnaHInLFxuICAgIDB4MTAxQTogJ2hyLUJBJyxcbiAgICAweDA0MDU6ICdjcycsXG4gICAgMHgwNDA2OiAnZGEnLFxuICAgIDB4MDQ4QzogJ3BycycsXG4gICAgMHgwNDY1OiAnZHYnLFxuICAgIDB4MDgxMzogJ25sLUJFJyxcbiAgICAweDA0MTM6ICdubCcsXG4gICAgMHgwQzA5OiAnZW4tQVUnLFxuICAgIDB4MjgwOTogJ2VuLUJaJyxcbiAgICAweDEwMDk6ICdlbi1DQScsXG4gICAgMHgyNDA5OiAnZW4tMDI5JyxcbiAgICAweDQwMDk6ICdlbi1JTicsXG4gICAgMHgxODA5OiAnZW4tSUUnLFxuICAgIDB4MjAwOTogJ2VuLUpNJyxcbiAgICAweDQ0MDk6ICdlbi1NWScsXG4gICAgMHgxNDA5OiAnZW4tTlonLFxuICAgIDB4MzQwOTogJ2VuLVBIJyxcbiAgICAweDQ4MDk6ICdlbi1TRycsXG4gICAgMHgxQzA5OiAnZW4tWkEnLFxuICAgIDB4MkMwOTogJ2VuLVRUJyxcbiAgICAweDA4MDk6ICdlbi1HQicsXG4gICAgMHgwNDA5OiAnZW4nLFxuICAgIDB4MzAwOTogJ2VuLVpXJyxcbiAgICAweDA0MjU6ICdldCcsXG4gICAgMHgwNDM4OiAnZm8nLFxuICAgIDB4MDQ2NDogJ2ZpbCcsXG4gICAgMHgwNDBCOiAnZmknLFxuICAgIDB4MDgwQzogJ2ZyLUJFJyxcbiAgICAweDBDMEM6ICdmci1DQScsXG4gICAgMHgwNDBDOiAnZnInLFxuICAgIDB4MTQwQzogJ2ZyLUxVJyxcbiAgICAweDE4MEM6ICdmci1NQycsXG4gICAgMHgxMDBDOiAnZnItQ0gnLFxuICAgIDB4MDQ2MjogJ2Z5JyxcbiAgICAweDA0NTY6ICdnbCcsXG4gICAgMHgwNDM3OiAna2EnLFxuICAgIDB4MEMwNzogJ2RlLUFUJyxcbiAgICAweDA0MDc6ICdkZScsXG4gICAgMHgxNDA3OiAnZGUtTEknLFxuICAgIDB4MTAwNzogJ2RlLUxVJyxcbiAgICAweDA4MDc6ICdkZS1DSCcsXG4gICAgMHgwNDA4OiAnZWwnLFxuICAgIDB4MDQ2RjogJ2tsJyxcbiAgICAweDA0NDc6ICdndScsXG4gICAgMHgwNDY4OiAnaGEnLFxuICAgIDB4MDQwRDogJ2hlJyxcbiAgICAweDA0Mzk6ICdoaScsXG4gICAgMHgwNDBFOiAnaHUnLFxuICAgIDB4MDQwRjogJ2lzJyxcbiAgICAweDA0NzA6ICdpZycsXG4gICAgMHgwNDIxOiAnaWQnLFxuICAgIDB4MDQ1RDogJ2l1JyxcbiAgICAweDA4NUQ6ICdpdS1MYXRuJyxcbiAgICAweDA4M0M6ICdnYScsXG4gICAgMHgwNDM0OiAneGgnLFxuICAgIDB4MDQzNTogJ3p1JyxcbiAgICAweDA0MTA6ICdpdCcsXG4gICAgMHgwODEwOiAnaXQtQ0gnLFxuICAgIDB4MDQxMTogJ2phJyxcbiAgICAweDA0NEI6ICdrbicsXG4gICAgMHgwNDNGOiAna2snLFxuICAgIDB4MDQ1MzogJ2ttJyxcbiAgICAweDA0ODY6ICdxdWMnLFxuICAgIDB4MDQ4NzogJ3J3JyxcbiAgICAweDA0NDE6ICdzdycsXG4gICAgMHgwNDU3OiAna29rJyxcbiAgICAweDA0MTI6ICdrbycsXG4gICAgMHgwNDQwOiAna3knLFxuICAgIDB4MDQ1NDogJ2xvJyxcbiAgICAweDA0MjY6ICdsdicsXG4gICAgMHgwNDI3OiAnbHQnLFxuICAgIDB4MDgyRTogJ2RzYicsXG4gICAgMHgwNDZFOiAnbGInLFxuICAgIDB4MDQyRjogJ21rJyxcbiAgICAweDA4M0U6ICdtcy1CTicsXG4gICAgMHgwNDNFOiAnbXMnLFxuICAgIDB4MDQ0QzogJ21sJyxcbiAgICAweDA0M0E6ICdtdCcsXG4gICAgMHgwNDgxOiAnbWknLFxuICAgIDB4MDQ3QTogJ2FybicsXG4gICAgMHgwNDRFOiAnbXInLFxuICAgIDB4MDQ3QzogJ21vaCcsXG4gICAgMHgwNDUwOiAnbW4nLFxuICAgIDB4MDg1MDogJ21uLUNOJyxcbiAgICAweDA0NjE6ICduZScsXG4gICAgMHgwNDE0OiAnbmInLFxuICAgIDB4MDgxNDogJ25uJyxcbiAgICAweDA0ODI6ICdvYycsXG4gICAgMHgwNDQ4OiAnb3InLFxuICAgIDB4MDQ2MzogJ3BzJyxcbiAgICAweDA0MTU6ICdwbCcsXG4gICAgMHgwNDE2OiAncHQnLFxuICAgIDB4MDgxNjogJ3B0LVBUJyxcbiAgICAweDA0NDY6ICdwYScsXG4gICAgMHgwNDZCOiAncXUtQk8nLFxuICAgIDB4MDg2QjogJ3F1LUVDJyxcbiAgICAweDBDNkI6ICdxdScsXG4gICAgMHgwNDE4OiAncm8nLFxuICAgIDB4MDQxNzogJ3JtJyxcbiAgICAweDA0MTk6ICdydScsXG4gICAgMHgyNDNCOiAnc21uJyxcbiAgICAweDEwM0I6ICdzbWotTk8nLFxuICAgIDB4MTQzQjogJ3NtaicsXG4gICAgMHgwQzNCOiAnc2UtRkknLFxuICAgIDB4MDQzQjogJ3NlJyxcbiAgICAweDA4M0I6ICdzZS1TRScsXG4gICAgMHgyMDNCOiAnc21zJyxcbiAgICAweDE4M0I6ICdzbWEtTk8nLFxuICAgIDB4MUMzQjogJ3NtcycsXG4gICAgMHgwNDRGOiAnc2EnLFxuICAgIDB4MUMxQTogJ3NyLUN5cmwtQkEnLFxuICAgIDB4MEMxQTogJ3NyJyxcbiAgICAweDE4MUE6ICdzci1MYXRuLUJBJyxcbiAgICAweDA4MUE6ICdzci1MYXRuJyxcbiAgICAweDA0NkM6ICduc28nLFxuICAgIDB4MDQzMjogJ3RuJyxcbiAgICAweDA0NUI6ICdzaScsXG4gICAgMHgwNDFCOiAnc2snLFxuICAgIDB4MDQyNDogJ3NsJyxcbiAgICAweDJDMEE6ICdlcy1BUicsXG4gICAgMHg0MDBBOiAnZXMtQk8nLFxuICAgIDB4MzQwQTogJ2VzLUNMJyxcbiAgICAweDI0MEE6ICdlcy1DTycsXG4gICAgMHgxNDBBOiAnZXMtQ1InLFxuICAgIDB4MUMwQTogJ2VzLURPJyxcbiAgICAweDMwMEE6ICdlcy1FQycsXG4gICAgMHg0NDBBOiAnZXMtU1YnLFxuICAgIDB4MTAwQTogJ2VzLUdUJyxcbiAgICAweDQ4MEE6ICdlcy1ITicsXG4gICAgMHgwODBBOiAnZXMtTVgnLFxuICAgIDB4NEMwQTogJ2VzLU5JJyxcbiAgICAweDE4MEE6ICdlcy1QQScsXG4gICAgMHgzQzBBOiAnZXMtUFknLFxuICAgIDB4MjgwQTogJ2VzLVBFJyxcbiAgICAweDUwMEE6ICdlcy1QUicsXG5cbiAgICAvLyBNaWNyb3NvZnQgaGFzIGRlZmluZWQgdHdvIGRpZmZlcmVudCBsYW5ndWFnZSBjb2RlcyBmb3JcbiAgICAvLyDigJxTcGFuaXNoIHdpdGggbW9kZXJuIHNvcnRpbmfigJ0gYW5kIOKAnFNwYW5pc2ggd2l0aCB0cmFkaXRpb25hbFxuICAgIC8vIHNvcnRpbmfigJ0uIFRoaXMgbWFrZXMgc2Vuc2UgZm9yIGNvbGxhdGlvbiBBUElzLCBhbmQgaXQgd291bGQgYmVcbiAgICAvLyBwb3NzaWJsZSB0byBleHByZXNzIHRoaXMgaW4gQkNQIDQ3IGxhbmd1YWdlIHRhZ3MgdmlhIFVuaWNvZGVcbiAgICAvLyBleHRlbnNpb25zIChlZy4sIGVzLXUtY28tdHJhZCBpcyBTcGFuaXNoIHdpdGggdHJhZGl0aW9uYWxcbiAgICAvLyBzb3J0aW5nKS4gSG93ZXZlciwgZm9yIHN0b3JpbmcgbmFtZXMgaW4gZm9udHMsIHRoZSBkaXN0aW5jdGlvblxuICAgIC8vIGRvZXMgbm90IG1ha2Ugc2Vuc2UsIHNvIHdlIGdpdmUg4oCcZXPigJ0gaW4gYm90aCBjYXNlcy5cbiAgICAweDBDMEE6ICdlcycsXG4gICAgMHgwNDBBOiAnZXMnLFxuXG4gICAgMHg1NDBBOiAnZXMtVVMnLFxuICAgIDB4MzgwQTogJ2VzLVVZJyxcbiAgICAweDIwMEE6ICdlcy1WRScsXG4gICAgMHgwODFEOiAnc3YtRkknLFxuICAgIDB4MDQxRDogJ3N2JyxcbiAgICAweDA0NUE6ICdzeXInLFxuICAgIDB4MDQyODogJ3RnJyxcbiAgICAweDA4NUY6ICd0em0nLFxuICAgIDB4MDQ0OTogJ3RhJyxcbiAgICAweDA0NDQ6ICd0dCcsXG4gICAgMHgwNDRBOiAndGUnLFxuICAgIDB4MDQxRTogJ3RoJyxcbiAgICAweDA0NTE6ICdibycsXG4gICAgMHgwNDFGOiAndHInLFxuICAgIDB4MDQ0MjogJ3RrJyxcbiAgICAweDA0ODA6ICd1ZycsXG4gICAgMHgwNDIyOiAndWsnLFxuICAgIDB4MDQyRTogJ2hzYicsXG4gICAgMHgwNDIwOiAndXInLFxuICAgIDB4MDg0MzogJ3V6LUN5cmwnLFxuICAgIDB4MDQ0MzogJ3V6JyxcbiAgICAweDA0MkE6ICd2aScsXG4gICAgMHgwNDUyOiAnY3knLFxuICAgIDB4MDQ4ODogJ3dvJyxcbiAgICAweDA0ODU6ICdzYWgnLFxuICAgIDB4MDQ3ODogJ2lpJyxcbiAgICAweDA0NkE6ICd5bydcbn07XG5cbi8vIFJldHVybnMgYSBJRVRGIEJDUCA0NyBsYW5ndWFnZSBjb2RlLCBmb3IgZXhhbXBsZSAnemgtSGFudCdcbi8vIGZvciAnQ2hpbmVzZSBpbiB0aGUgdHJhZGl0aW9uYWwgc2NyaXB0Jy5cbmZ1bmN0aW9uIGdldExhbmd1YWdlQ29kZShwbGF0Zm9ybUlELCBsYW5ndWFnZUlELCBsdGFnKSB7XG4gICAgc3dpdGNoIChwbGF0Zm9ybUlEKSB7XG4gICAgICAgIGNhc2UgMDogIC8vIFVuaWNvZGVcbiAgICAgICAgICAgIGlmIChsYW5ndWFnZUlEID09PSAweEZGRkYpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3VuZCc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGx0YWcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbHRhZ1tsYW5ndWFnZUlEXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAxOiAgLy8gTWFjaW50b3NoXG4gICAgICAgICAgICByZXR1cm4gbWFjTGFuZ3VhZ2VzW2xhbmd1YWdlSURdO1xuXG4gICAgICAgIGNhc2UgMzogIC8vIFdpbmRvd3NcbiAgICAgICAgICAgIHJldHVybiB3aW5kb3dzTGFuZ3VhZ2VzW2xhbmd1YWdlSURdO1xuICAgIH1cblxuICAgIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbnZhciB1dGYxNiA9ICd1dGYtMTYnO1xuXG4vLyBNYWNPUyBzY3JpcHQgSUQg4oaSIGVuY29kaW5nLiBUaGlzIHRhYmxlIHN0b3JlcyB0aGUgZGVmYXVsdCBjYXNlLFxuLy8gd2hpY2ggY2FuIGJlIG92ZXJyaWRkZW4gYnkgbWFjTGFuZ3VhZ2VFbmNvZGluZ3MuXG52YXIgbWFjU2NyaXB0RW5jb2RpbmdzID0ge1xuICAgIDA6ICdtYWNpbnRvc2gnLCAgICAgICAgICAgLy8gc21Sb21hblxuICAgIDE6ICd4LW1hYy1qYXBhbmVzZScsICAgICAgLy8gc21KYXBhbmVzZVxuICAgIDI6ICd4LW1hYy1jaGluZXNldHJhZCcsICAgLy8gc21UcmFkQ2hpbmVzZVxuICAgIDM6ICd4LW1hYy1rb3JlYW4nLCAgICAgICAgLy8gc21Lb3JlYW5cbiAgICA2OiAneC1tYWMtZ3JlZWsnLCAgICAgICAgIC8vIHNtR3JlZWtcbiAgICA3OiAneC1tYWMtY3lyaWxsaWMnLCAgICAgIC8vIHNtQ3lyaWxsaWNcbiAgICA5OiAneC1tYWMtZGV2YW5hZ2FpJywgICAgIC8vIHNtRGV2YW5hZ2FyaVxuICAgIDEwOiAneC1tYWMtZ3VybXVraGknLCAgICAgLy8gc21HdXJtdWtoaVxuICAgIDExOiAneC1tYWMtZ3VqYXJhdGknLCAgICAgLy8gc21HdWphcmF0aVxuICAgIDEyOiAneC1tYWMtb3JpeWEnLCAgICAgICAgLy8gc21Pcml5YVxuICAgIDEzOiAneC1tYWMtYmVuZ2FsaScsICAgICAgLy8gc21CZW5nYWxpXG4gICAgMTQ6ICd4LW1hYy10YW1pbCcsICAgICAgICAvLyBzbVRhbWlsXG4gICAgMTU6ICd4LW1hYy10ZWx1Z3UnLCAgICAgICAvLyBzbVRlbHVndVxuICAgIDE2OiAneC1tYWMta2FubmFkYScsICAgICAgLy8gc21LYW5uYWRhXG4gICAgMTc6ICd4LW1hYy1tYWxheWFsYW0nLCAgICAvLyBzbU1hbGF5YWxhbVxuICAgIDE4OiAneC1tYWMtc2luaGFsZXNlJywgICAgLy8gc21TaW5oYWxlc2VcbiAgICAxOTogJ3gtbWFjLWJ1cm1lc2UnLCAgICAgIC8vIHNtQnVybWVzZVxuICAgIDIwOiAneC1tYWMta2htZXInLCAgICAgICAgLy8gc21LaG1lclxuICAgIDIxOiAneC1tYWMtdGhhaScsICAgICAgICAgLy8gc21UaGFpXG4gICAgMjI6ICd4LW1hYy1sYW8nLCAgICAgICAgICAvLyBzbUxhb1xuICAgIDIzOiAneC1tYWMtZ2VvcmdpYW4nLCAgICAgLy8gc21HZW9yZ2lhblxuICAgIDI0OiAneC1tYWMtYXJtZW5pYW4nLCAgICAgLy8gc21Bcm1lbmlhblxuICAgIDI1OiAneC1tYWMtY2hpbmVzZXNpbXAnLCAgLy8gc21TaW1wQ2hpbmVzZVxuICAgIDI2OiAneC1tYWMtdGliZXRhbicsICAgICAgLy8gc21UaWJldGFuXG4gICAgMjc6ICd4LW1hYy1tb25nb2xpYW4nLCAgICAvLyBzbU1vbmdvbGlhblxuICAgIDI4OiAneC1tYWMtZXRoaW9waWMnLCAgICAgLy8gc21FdGhpb3BpY1xuICAgIDI5OiAneC1tYWMtY2UnLCAgICAgICAgICAgLy8gc21DZW50cmFsRXVyb1JvbWFuXG4gICAgMzA6ICd4LW1hYy12aWV0bmFtZXNlJywgICAvLyBzbVZpZXRuYW1lc2VcbiAgICAzMTogJ3gtbWFjLWV4dGFyYWJpYycgICAgIC8vIHNtRXh0QXJhYmljXG59O1xuXG4vLyBNYWNPUyBsYW5ndWFnZSBJRCDihpIgZW5jb2RpbmcuIFRoaXMgdGFibGUgc3RvcmVzIHRoZSBleGNlcHRpb25hbFxuLy8gY2FzZXMsIHdoaWNoIG92ZXJyaWRlIG1hY1NjcmlwdEVuY29kaW5ncy4gRm9yIHdyaXRpbmcgTWFjT1MgbmFtaW5nXG4vLyB0YWJsZXMsIHdlIG5lZWQgdG8gZW1pdCBhIE1hY09TIHNjcmlwdCBJRC4gVGhlcmVmb3JlLCB3ZSBjYW5ub3Rcbi8vIG1lcmdlIG1hY1NjcmlwdEVuY29kaW5ncyBpbnRvIG1hY0xhbmd1YWdlRW5jb2RpbmdzLlxuLy9cbi8vIGh0dHA6Ly91bmljb2RlLm9yZy9QdWJsaWMvTUFQUElOR1MvVkVORE9SUy9BUFBMRS9SZWFkbWUudHh0XG52YXIgbWFjTGFuZ3VhZ2VFbmNvZGluZ3MgPSB7XG4gICAgMTU6ICd4LW1hYy1pY2VsYW5kaWMnLCAgICAvLyBsYW5nSWNlbGFuZGljXG4gICAgMTc6ICd4LW1hYy10dXJraXNoJywgICAgICAvLyBsYW5nVHVya2lzaFxuICAgIDE4OiAneC1tYWMtY3JvYXRpYW4nLCAgICAgLy8gbGFuZ0Nyb2F0aWFuXG4gICAgMjQ6ICd4LW1hYy1jZScsICAgICAgICAgICAvLyBsYW5nTGl0aHVhbmlhblxuICAgIDI1OiAneC1tYWMtY2UnLCAgICAgICAgICAgLy8gbGFuZ1BvbGlzaFxuICAgIDI2OiAneC1tYWMtY2UnLCAgICAgICAgICAgLy8gbGFuZ0h1bmdhcmlhblxuICAgIDI3OiAneC1tYWMtY2UnLCAgICAgICAgICAgLy8gbGFuZ0VzdG9uaWFuXG4gICAgMjg6ICd4LW1hYy1jZScsICAgICAgICAgICAvLyBsYW5nTGF0dmlhblxuICAgIDMwOiAneC1tYWMtaWNlbGFuZGljJywgICAgLy8gbGFuZ0Zhcm9lc2VcbiAgICAzNzogJ3gtbWFjLXJvbWFuaWFuJywgICAgIC8vIGxhbmdSb21hbmlhblxuICAgIDM4OiAneC1tYWMtY2UnLCAgICAgICAgICAgLy8gbGFuZ0N6ZWNoXG4gICAgMzk6ICd4LW1hYy1jZScsICAgICAgICAgICAvLyBsYW5nU2xvdmFrXG4gICAgNDA6ICd4LW1hYy1jZScsICAgICAgICAgICAvLyBsYW5nU2xvdmVuaWFuXG4gICAgMTQzOiAneC1tYWMtaW51aXQnLCAgICAgICAvLyBsYW5nSW51a3RpdHV0XG4gICAgMTQ2OiAneC1tYWMtZ2FlbGljJyAgICAgICAvLyBsYW5nSXJpc2hHYWVsaWNTY3JpcHRcbn07XG5cbmZ1bmN0aW9uIGdldEVuY29kaW5nKHBsYXRmb3JtSUQsIGVuY29kaW5nSUQsIGxhbmd1YWdlSUQpIHtcbiAgICBzd2l0Y2ggKHBsYXRmb3JtSUQpIHtcbiAgICAgICAgY2FzZSAwOiAgLy8gVW5pY29kZVxuICAgICAgICAgICAgcmV0dXJuIHV0ZjE2O1xuXG4gICAgICAgIGNhc2UgMTogIC8vIEFwcGxlIE1hY2ludG9zaFxuICAgICAgICAgICAgcmV0dXJuIG1hY0xhbmd1YWdlRW5jb2RpbmdzW2xhbmd1YWdlSURdIHx8IG1hY1NjcmlwdEVuY29kaW5nc1tlbmNvZGluZ0lEXTtcblxuICAgICAgICBjYXNlIDM6ICAvLyBNaWNyb3NvZnQgV2luZG93c1xuICAgICAgICAgICAgaWYgKGVuY29kaW5nSUQgPT09IDEgfHwgZW5jb2RpbmdJRCA9PT0gMTApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdXRmMTY7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbi8vIFBhcnNlIHRoZSBuYW1pbmcgYG5hbWVgIHRhYmxlLlxuLy8gRklYTUU6IEZvcm1hdCAxIGFkZGl0aW9uYWwgZmllbGRzIGFyZSBub3Qgc3VwcG9ydGVkIHlldC5cbi8vIGx0YWcgaXMgdGhlIGNvbnRlbnQgb2YgdGhlIGBsdGFnJyB0YWJsZSwgc3VjaCBhcyBbJ2VuJywgJ3poLUhhbnMnLCAnZGUtQ0gtMTkwNCddLlxuZnVuY3Rpb24gcGFyc2VOYW1lVGFibGUoZGF0YSwgc3RhcnQsIGx0YWcpIHtcbiAgICB2YXIgbmFtZSA9IHt9O1xuICAgIHZhciBwID0gbmV3IHBhcnNlLlBhcnNlcihkYXRhLCBzdGFydCk7XG4gICAgdmFyIGZvcm1hdCA9IHAucGFyc2VVU2hvcnQoKTtcbiAgICB2YXIgY291bnQgPSBwLnBhcnNlVVNob3J0KCk7XG4gICAgdmFyIHN0cmluZ09mZnNldCA9IHAub2Zmc2V0ICsgcC5wYXJzZVVTaG9ydCgpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY291bnQ7IGkrKykge1xuICAgICAgICB2YXIgcGxhdGZvcm1JRCA9IHAucGFyc2VVU2hvcnQoKTtcbiAgICAgICAgdmFyIGVuY29kaW5nSUQgPSBwLnBhcnNlVVNob3J0KCk7XG4gICAgICAgIHZhciBsYW5ndWFnZUlEID0gcC5wYXJzZVVTaG9ydCgpO1xuICAgICAgICB2YXIgbmFtZUlEID0gcC5wYXJzZVVTaG9ydCgpO1xuICAgICAgICB2YXIgcHJvcGVydHkgPSBuYW1lVGFibGVOYW1lc1tuYW1lSURdIHx8IG5hbWVJRDtcbiAgICAgICAgdmFyIGJ5dGVMZW5ndGggPSBwLnBhcnNlVVNob3J0KCk7XG4gICAgICAgIHZhciBvZmZzZXQgPSBwLnBhcnNlVVNob3J0KCk7XG4gICAgICAgIHZhciBsYW5ndWFnZSA9IGdldExhbmd1YWdlQ29kZShwbGF0Zm9ybUlELCBsYW5ndWFnZUlELCBsdGFnKTtcbiAgICAgICAgdmFyIGVuY29kaW5nID0gZ2V0RW5jb2RpbmcocGxhdGZvcm1JRCwgZW5jb2RpbmdJRCwgbGFuZ3VhZ2VJRCk7XG4gICAgICAgIGlmIChlbmNvZGluZyAhPT0gdW5kZWZpbmVkICYmIGxhbmd1YWdlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHZhciB0ZXh0O1xuICAgICAgICAgICAgaWYgKGVuY29kaW5nID09PSB1dGYxNikge1xuICAgICAgICAgICAgICAgIHRleHQgPSBkZWNvZGUuVVRGMTYoZGF0YSwgc3RyaW5nT2Zmc2V0ICsgb2Zmc2V0LCBieXRlTGVuZ3RoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGV4dCA9IGRlY29kZS5NQUNTVFJJTkcoZGF0YSwgc3RyaW5nT2Zmc2V0ICsgb2Zmc2V0LCBieXRlTGVuZ3RoLCBlbmNvZGluZyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0ZXh0KSB7XG4gICAgICAgICAgICAgICAgdmFyIHRyYW5zbGF0aW9ucyA9IG5hbWVbcHJvcGVydHldO1xuICAgICAgICAgICAgICAgIGlmICh0cmFuc2xhdGlvbnMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGlvbnMgPSBuYW1lW3Byb3BlcnR5XSA9IHt9O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRyYW5zbGF0aW9uc1tsYW5ndWFnZV0gPSB0ZXh0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGxhbmdUYWdDb3VudCA9IDA7XG4gICAgaWYgKGZvcm1hdCA9PT0gMSkge1xuICAgICAgICAvLyBGSVhNRTogQWxzbyBoYW5kbGUgTWljcm9zb2Z0J3MgJ25hbWUnIHRhYmxlIDEuXG4gICAgICAgIGxhbmdUYWdDb3VudCA9IHAucGFyc2VVU2hvcnQoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmFtZTtcbn1cblxuLy8gezIzOiAnZm9vJ30g4oaSIHsnZm9vJzogMjN9XG4vLyBbJ2JhcicsICdiYXonXSDihpIgeydiYXInOiAwLCAnYmF6JzogMX1cbmZ1bmN0aW9uIHJldmVyc2VEaWN0KGRpY3QpIHtcbiAgICB2YXIgcmVzdWx0ID0ge307XG4gICAgZm9yICh2YXIga2V5IGluIGRpY3QpIHtcbiAgICAgICAgcmVzdWx0W2RpY3Rba2V5XV0gPSBwYXJzZUludChrZXkpO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIG1ha2VOYW1lUmVjb3JkKHBsYXRmb3JtSUQsIGVuY29kaW5nSUQsIGxhbmd1YWdlSUQsIG5hbWVJRCwgbGVuZ3RoLCBvZmZzZXQpIHtcbiAgICByZXR1cm4gbmV3IHRhYmxlLlJlY29yZCgnTmFtZVJlY29yZCcsIFtcbiAgICAgICAge25hbWU6ICdwbGF0Zm9ybUlEJywgdHlwZTogJ1VTSE9SVCcsIHZhbHVlOiBwbGF0Zm9ybUlEfSxcbiAgICAgICAge25hbWU6ICdlbmNvZGluZ0lEJywgdHlwZTogJ1VTSE9SVCcsIHZhbHVlOiBlbmNvZGluZ0lEfSxcbiAgICAgICAge25hbWU6ICdsYW5ndWFnZUlEJywgdHlwZTogJ1VTSE9SVCcsIHZhbHVlOiBsYW5ndWFnZUlEfSxcbiAgICAgICAge25hbWU6ICduYW1lSUQnLCB0eXBlOiAnVVNIT1JUJywgdmFsdWU6IG5hbWVJRH0sXG4gICAgICAgIHtuYW1lOiAnbGVuZ3RoJywgdHlwZTogJ1VTSE9SVCcsIHZhbHVlOiBsZW5ndGh9LFxuICAgICAgICB7bmFtZTogJ29mZnNldCcsIHR5cGU6ICdVU0hPUlQnLCB2YWx1ZTogb2Zmc2V0fVxuICAgIF0pO1xufVxuXG4vLyBGaW5kcyB0aGUgcG9zaXRpb24gb2YgbmVlZGxlIGluIGhheXN0YWNrLCBvciAtMSBpZiBub3QgdGhlcmUuXG4vLyBMaWtlIFN0cmluZy5pbmRleE9mKCksIGJ1dCBmb3IgYXJyYXlzLlxuZnVuY3Rpb24gZmluZFN1YkFycmF5KG5lZWRsZSwgaGF5c3RhY2spIHtcbiAgICB2YXIgbmVlZGxlTGVuZ3RoID0gbmVlZGxlLmxlbmd0aDtcbiAgICB2YXIgbGltaXQgPSBoYXlzdGFjay5sZW5ndGggLSBuZWVkbGVMZW5ndGggKyAxO1xuXG4gICAgbG9vcDpcbiAgICBmb3IgKHZhciBwb3MgPSAwOyBwb3MgPCBsaW1pdDsgcG9zKyspIHtcbiAgICAgICAgZm9yICg7IHBvcyA8IGxpbWl0OyBwb3MrKykge1xuICAgICAgICAgICAgZm9yICh2YXIgayA9IDA7IGsgPCBuZWVkbGVMZW5ndGg7IGsrKykge1xuICAgICAgICAgICAgICAgIGlmIChoYXlzdGFja1twb3MgKyBrXSAhPT0gbmVlZGxlW2tdKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlIGxvb3A7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gcG9zO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIC0xO1xufVxuXG5mdW5jdGlvbiBhZGRTdHJpbmdUb1Bvb2wocywgcG9vbCkge1xuICAgIHZhciBvZmZzZXQgPSBmaW5kU3ViQXJyYXkocywgcG9vbCk7XG4gICAgaWYgKG9mZnNldCA8IDApIHtcbiAgICAgICAgb2Zmc2V0ID0gcG9vbC5sZW5ndGg7XG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBsZW4gPSBzLmxlbmd0aDsgaSA8IGxlbjsgKytpKSB7XG4gICAgICAgICAgICBwb29sLnB1c2goc1tpXSk7XG4gICAgICAgIH1cblxuICAgIH1cblxuICAgIHJldHVybiBvZmZzZXQ7XG59XG5cbmZ1bmN0aW9uIG1ha2VOYW1lVGFibGUobmFtZXMsIGx0YWcpIHtcbiAgICB2YXIgbmFtZUlEO1xuICAgIHZhciBuYW1lSURzID0gW107XG5cbiAgICB2YXIgbmFtZXNXaXRoTnVtZXJpY0tleXMgPSB7fTtcbiAgICB2YXIgbmFtZVRhYmxlSWRzID0gcmV2ZXJzZURpY3QobmFtZVRhYmxlTmFtZXMpO1xuICAgIGZvciAodmFyIGtleSBpbiBuYW1lcykge1xuICAgICAgICB2YXIgaWQgPSBuYW1lVGFibGVJZHNba2V5XTtcbiAgICAgICAgaWYgKGlkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGlkID0ga2V5O1xuICAgICAgICB9XG5cbiAgICAgICAgbmFtZUlEID0gcGFyc2VJbnQoaWQpO1xuXG4gICAgICAgIGlmIChpc05hTihuYW1lSUQpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05hbWUgdGFibGUgZW50cnkgXCInICsga2V5ICsgJ1wiIGRvZXMgbm90IGV4aXN0LCBzZWUgbmFtZVRhYmxlTmFtZXMgZm9yIGNvbXBsZXRlIGxpc3QuJyk7XG4gICAgICAgIH1cblxuICAgICAgICBuYW1lc1dpdGhOdW1lcmljS2V5c1tuYW1lSURdID0gbmFtZXNba2V5XTtcbiAgICAgICAgbmFtZUlEcy5wdXNoKG5hbWVJRCk7XG4gICAgfVxuXG4gICAgdmFyIG1hY0xhbmd1YWdlSWRzID0gcmV2ZXJzZURpY3QobWFjTGFuZ3VhZ2VzKTtcbiAgICB2YXIgd2luZG93c0xhbmd1YWdlSWRzID0gcmV2ZXJzZURpY3Qod2luZG93c0xhbmd1YWdlcyk7XG5cbiAgICB2YXIgbmFtZVJlY29yZHMgPSBbXTtcbiAgICB2YXIgc3RyaW5nUG9vbCA9IFtdO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuYW1lSURzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIG5hbWVJRCA9IG5hbWVJRHNbaV07XG4gICAgICAgIHZhciB0cmFuc2xhdGlvbnMgPSBuYW1lc1dpdGhOdW1lcmljS2V5c1tuYW1lSURdO1xuICAgICAgICBmb3IgKHZhciBsYW5nIGluIHRyYW5zbGF0aW9ucykge1xuICAgICAgICAgICAgdmFyIHRleHQgPSB0cmFuc2xhdGlvbnNbbGFuZ107XG5cbiAgICAgICAgICAgIC8vIEZvciBNYWNPUywgd2UgdHJ5IHRvIGVtaXQgdGhlIG5hbWUgaW4gdGhlIGZvcm0gdGhhdCB3YXMgaW50cm9kdWNlZFxuICAgICAgICAgICAgLy8gaW4gdGhlIGluaXRpYWwgdmVyc2lvbiBvZiB0aGUgVHJ1ZVR5cGUgc3BlYyAoaW4gdGhlIGxhdGUgMTk4MHMpLlxuICAgICAgICAgICAgLy8gSG93ZXZlciwgdGhpcyBjYW4gZmFpbCBmb3IgdmFyaW91cyByZWFzb25zOiB0aGUgcmVxdWVzdGVkIEJDUCA0N1xuICAgICAgICAgICAgLy8gbGFuZ3VhZ2UgY29kZSBtaWdodCBub3QgaGF2ZSBhbiBvbGQtc3R5bGUgTWFjIGVxdWl2YWxlbnQ7XG4gICAgICAgICAgICAvLyB3ZSBtaWdodCBub3QgaGF2ZSBhIGNvZGVjIGZvciB0aGUgbmVlZGVkIGNoYXJhY3RlciBlbmNvZGluZztcbiAgICAgICAgICAgIC8vIG9yIHRoZSBuYW1lIG1pZ2h0IGNvbnRhaW4gY2hhcmFjdGVycyB0aGF0IGNhbm5vdCBiZSBleHByZXNzZWRcbiAgICAgICAgICAgIC8vIGluIHRoZSBvbGQtc3R5bGUgTWFjaW50b3NoIGVuY29kaW5nLiBJbiBjYXNlIG9mIGZhaWx1cmUsIHdlIGVtaXRcbiAgICAgICAgICAgIC8vIHRoZSBuYW1lIGluIGEgbW9yZSBtb2Rlcm4gZmFzaGlvbiAoVW5pY29kZSBlbmNvZGluZyB3aXRoIEJDUCA0N1xuICAgICAgICAgICAgLy8gbGFuZ3VhZ2UgdGFncykgdGhhdCBpcyByZWNvZ25pemVkIGJ5IE1hY09TIDEwLjUsIHJlbGVhc2VkIGluIDIwMDkuXG4gICAgICAgICAgICAvLyBJZiBmb250cyB3ZXJlIG9ubHkgcmVhZCBieSBvcGVyYXRpbmcgc3lzdGVtcywgd2UgY291bGQgc2ltcGx5XG4gICAgICAgICAgICAvLyBlbWl0IGFsbCBuYW1lcyBpbiB0aGUgbW9kZXJuIGZvcm07IHRoaXMgd291bGQgYmUgbXVjaCBlYXNpZXIuXG4gICAgICAgICAgICAvLyBIb3dldmVyLCB0aGVyZSBhcmUgbWFueSBhcHBsaWNhdGlvbnMgYW5kIGxpYnJhcmllcyB0aGF0IHJlYWRcbiAgICAgICAgICAgIC8vICduYW1lJyB0YWJsZXMgZGlyZWN0bHksIGFuZCB0aGVzZSB3aWxsIHVzdWFsbHkgb25seSByZWNvZ25pemVcbiAgICAgICAgICAgIC8vIHRoZSBhbmNpZW50IGZvcm0gKHNpbGVudGx5IHNraXBwaW5nIHRoZSB1bnJlY29nbml6ZWQgbmFtZXMpLlxuICAgICAgICAgICAgdmFyIG1hY1BsYXRmb3JtID0gMTsgIC8vIE1hY2ludG9zaFxuICAgICAgICAgICAgdmFyIG1hY0xhbmd1YWdlID0gbWFjTGFuZ3VhZ2VJZHNbbGFuZ107XG4gICAgICAgICAgICB2YXIgbWFjU2NyaXB0ID0gbWFjTGFuZ3VhZ2VUb1NjcmlwdFttYWNMYW5ndWFnZV07XG4gICAgICAgICAgICB2YXIgbWFjRW5jb2RpbmcgPSBnZXRFbmNvZGluZyhtYWNQbGF0Zm9ybSwgbWFjU2NyaXB0LCBtYWNMYW5ndWFnZSk7XG4gICAgICAgICAgICB2YXIgbWFjTmFtZSA9IGVuY29kZS5NQUNTVFJJTkcodGV4dCwgbWFjRW5jb2RpbmcpO1xuICAgICAgICAgICAgaWYgKG1hY05hbWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIG1hY1BsYXRmb3JtID0gMDsgIC8vIFVuaWNvZGVcbiAgICAgICAgICAgICAgICBtYWNMYW5ndWFnZSA9IGx0YWcuaW5kZXhPZihsYW5nKTtcbiAgICAgICAgICAgICAgICBpZiAobWFjTGFuZ3VhZ2UgPCAwKSB7XG4gICAgICAgICAgICAgICAgICAgIG1hY0xhbmd1YWdlID0gbHRhZy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgIGx0YWcucHVzaChsYW5nKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBtYWNTY3JpcHQgPSA0OyAgLy8gVW5pY29kZSAyLjAgYW5kIGxhdGVyXG4gICAgICAgICAgICAgICAgbWFjTmFtZSA9IGVuY29kZS5VVEYxNih0ZXh0KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdmFyIG1hY05hbWVPZmZzZXQgPSBhZGRTdHJpbmdUb1Bvb2wobWFjTmFtZSwgc3RyaW5nUG9vbCk7XG4gICAgICAgICAgICBuYW1lUmVjb3Jkcy5wdXNoKG1ha2VOYW1lUmVjb3JkKG1hY1BsYXRmb3JtLCBtYWNTY3JpcHQsIG1hY0xhbmd1YWdlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lSUQsIG1hY05hbWUubGVuZ3RoLCBtYWNOYW1lT2Zmc2V0KSk7XG5cbiAgICAgICAgICAgIHZhciB3aW5MYW5ndWFnZSA9IHdpbmRvd3NMYW5ndWFnZUlkc1tsYW5nXTtcbiAgICAgICAgICAgIGlmICh3aW5MYW5ndWFnZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgdmFyIHdpbk5hbWUgPSBlbmNvZGUuVVRGMTYodGV4dCk7XG4gICAgICAgICAgICAgICAgdmFyIHdpbk5hbWVPZmZzZXQgPSBhZGRTdHJpbmdUb1Bvb2wod2luTmFtZSwgc3RyaW5nUG9vbCk7XG4gICAgICAgICAgICAgICAgbmFtZVJlY29yZHMucHVzaChtYWtlTmFtZVJlY29yZCgzLCAxLCB3aW5MYW5ndWFnZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVJRCwgd2luTmFtZS5sZW5ndGgsIHdpbk5hbWVPZmZzZXQpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5hbWVSZWNvcmRzLnNvcnQoZnVuY3Rpb24oYSwgYikge1xuICAgICAgICByZXR1cm4gKChhLnBsYXRmb3JtSUQgLSBiLnBsYXRmb3JtSUQpIHx8XG4gICAgICAgICAgICAgICAgKGEuZW5jb2RpbmdJRCAtIGIuZW5jb2RpbmdJRCkgfHxcbiAgICAgICAgICAgICAgICAoYS5sYW5ndWFnZUlEIC0gYi5sYW5ndWFnZUlEKSB8fFxuICAgICAgICAgICAgICAgIChhLm5hbWVJRCAtIGIubmFtZUlEKSk7XG4gICAgfSk7XG5cbiAgICB2YXIgdCA9IG5ldyB0YWJsZS5UYWJsZSgnbmFtZScsIFtcbiAgICAgICAge25hbWU6ICdmb3JtYXQnLCB0eXBlOiAnVVNIT1JUJywgdmFsdWU6IDB9LFxuICAgICAgICB7bmFtZTogJ2NvdW50JywgdHlwZTogJ1VTSE9SVCcsIHZhbHVlOiBuYW1lUmVjb3Jkcy5sZW5ndGh9LFxuICAgICAgICB7bmFtZTogJ3N0cmluZ09mZnNldCcsIHR5cGU6ICdVU0hPUlQnLCB2YWx1ZTogNiArIG5hbWVSZWNvcmRzLmxlbmd0aCAqIDEyfVxuICAgIF0pO1xuXG4gICAgZm9yICh2YXIgciA9IDA7IHIgPCBuYW1lUmVjb3Jkcy5sZW5ndGg7IHIrKykge1xuICAgICAgICB0LmZpZWxkcy5wdXNoKHtuYW1lOiAncmVjb3JkXycgKyByLCB0eXBlOiAnUkVDT1JEJywgdmFsdWU6IG5hbWVSZWNvcmRzW3JdfSk7XG4gICAgfVxuXG4gICAgdC5maWVsZHMucHVzaCh7bmFtZTogJ3N0cmluZ3MnLCB0eXBlOiAnTElURVJBTCcsIHZhbHVlOiBzdHJpbmdQb29sfSk7XG4gICAgcmV0dXJuIHQ7XG59XG5cbmV4cG9ydHMucGFyc2UgPSBwYXJzZU5hbWVUYWJsZTtcbmV4cG9ydHMubWFrZSA9IG1ha2VOYW1lVGFibGU7XG4iLCIvLyBUaGUgYE9TLzJgIHRhYmxlIGNvbnRhaW5zIG1ldHJpY3MgcmVxdWlyZWQgaW4gT3BlblR5cGUgZm9udHMuXG4vLyBodHRwczovL3d3dy5taWNyb3NvZnQuY29tL3R5cG9ncmFwaHkvT1RTUEVDL29zMi5odG1cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgcGFyc2UgPSByZXF1aXJlKCcuLi9wYXJzZScpO1xudmFyIHRhYmxlID0gcmVxdWlyZSgnLi4vdGFibGUnKTtcblxudmFyIHVuaWNvZGVSYW5nZXMgPSBbXG4gICAge2JlZ2luOiAweDAwMDAsIGVuZDogMHgwMDdGfSwgLy8gQmFzaWMgTGF0aW5cbiAgICB7YmVnaW46IDB4MDA4MCwgZW5kOiAweDAwRkZ9LCAvLyBMYXRpbi0xIFN1cHBsZW1lbnRcbiAgICB7YmVnaW46IDB4MDEwMCwgZW5kOiAweDAxN0Z9LCAvLyBMYXRpbiBFeHRlbmRlZC1BXG4gICAge2JlZ2luOiAweDAxODAsIGVuZDogMHgwMjRGfSwgLy8gTGF0aW4gRXh0ZW5kZWQtQlxuICAgIHtiZWdpbjogMHgwMjUwLCBlbmQ6IDB4MDJBRn0sIC8vIElQQSBFeHRlbnNpb25zXG4gICAge2JlZ2luOiAweDAyQjAsIGVuZDogMHgwMkZGfSwgLy8gU3BhY2luZyBNb2RpZmllciBMZXR0ZXJzXG4gICAge2JlZ2luOiAweDAzMDAsIGVuZDogMHgwMzZGfSwgLy8gQ29tYmluaW5nIERpYWNyaXRpY2FsIE1hcmtzXG4gICAge2JlZ2luOiAweDAzNzAsIGVuZDogMHgwM0ZGfSwgLy8gR3JlZWsgYW5kIENvcHRpY1xuICAgIHtiZWdpbjogMHgyQzgwLCBlbmQ6IDB4MkNGRn0sIC8vIENvcHRpY1xuICAgIHtiZWdpbjogMHgwNDAwLCBlbmQ6IDB4MDRGRn0sIC8vIEN5cmlsbGljXG4gICAge2JlZ2luOiAweDA1MzAsIGVuZDogMHgwNThGfSwgLy8gQXJtZW5pYW5cbiAgICB7YmVnaW46IDB4MDU5MCwgZW5kOiAweDA1RkZ9LCAvLyBIZWJyZXdcbiAgICB7YmVnaW46IDB4QTUwMCwgZW5kOiAweEE2M0Z9LCAvLyBWYWlcbiAgICB7YmVnaW46IDB4MDYwMCwgZW5kOiAweDA2RkZ9LCAvLyBBcmFiaWNcbiAgICB7YmVnaW46IDB4MDdDMCwgZW5kOiAweDA3RkZ9LCAvLyBOS29cbiAgICB7YmVnaW46IDB4MDkwMCwgZW5kOiAweDA5N0Z9LCAvLyBEZXZhbmFnYXJpXG4gICAge2JlZ2luOiAweDA5ODAsIGVuZDogMHgwOUZGfSwgLy8gQmVuZ2FsaVxuICAgIHtiZWdpbjogMHgwQTAwLCBlbmQ6IDB4MEE3Rn0sIC8vIEd1cm11a2hpXG4gICAge2JlZ2luOiAweDBBODAsIGVuZDogMHgwQUZGfSwgLy8gR3VqYXJhdGlcbiAgICB7YmVnaW46IDB4MEIwMCwgZW5kOiAweDBCN0Z9LCAvLyBPcml5YVxuICAgIHtiZWdpbjogMHgwQjgwLCBlbmQ6IDB4MEJGRn0sIC8vIFRhbWlsXG4gICAge2JlZ2luOiAweDBDMDAsIGVuZDogMHgwQzdGfSwgLy8gVGVsdWd1XG4gICAge2JlZ2luOiAweDBDODAsIGVuZDogMHgwQ0ZGfSwgLy8gS2FubmFkYVxuICAgIHtiZWdpbjogMHgwRDAwLCBlbmQ6IDB4MEQ3Rn0sIC8vIE1hbGF5YWxhbVxuICAgIHtiZWdpbjogMHgwRTAwLCBlbmQ6IDB4MEU3Rn0sIC8vIFRoYWlcbiAgICB7YmVnaW46IDB4MEU4MCwgZW5kOiAweDBFRkZ9LCAvLyBMYW9cbiAgICB7YmVnaW46IDB4MTBBMCwgZW5kOiAweDEwRkZ9LCAvLyBHZW9yZ2lhblxuICAgIHtiZWdpbjogMHgxQjAwLCBlbmQ6IDB4MUI3Rn0sIC8vIEJhbGluZXNlXG4gICAge2JlZ2luOiAweDExMDAsIGVuZDogMHgxMUZGfSwgLy8gSGFuZ3VsIEphbW9cbiAgICB7YmVnaW46IDB4MUUwMCwgZW5kOiAweDFFRkZ9LCAvLyBMYXRpbiBFeHRlbmRlZCBBZGRpdGlvbmFsXG4gICAge2JlZ2luOiAweDFGMDAsIGVuZDogMHgxRkZGfSwgLy8gR3JlZWsgRXh0ZW5kZWRcbiAgICB7YmVnaW46IDB4MjAwMCwgZW5kOiAweDIwNkZ9LCAvLyBHZW5lcmFsIFB1bmN0dWF0aW9uXG4gICAge2JlZ2luOiAweDIwNzAsIGVuZDogMHgyMDlGfSwgLy8gU3VwZXJzY3JpcHRzIEFuZCBTdWJzY3JpcHRzXG4gICAge2JlZ2luOiAweDIwQTAsIGVuZDogMHgyMENGfSwgLy8gQ3VycmVuY3kgU3ltYm9sXG4gICAge2JlZ2luOiAweDIwRDAsIGVuZDogMHgyMEZGfSwgLy8gQ29tYmluaW5nIERpYWNyaXRpY2FsIE1hcmtzIEZvciBTeW1ib2xzXG4gICAge2JlZ2luOiAweDIxMDAsIGVuZDogMHgyMTRGfSwgLy8gTGV0dGVybGlrZSBTeW1ib2xzXG4gICAge2JlZ2luOiAweDIxNTAsIGVuZDogMHgyMThGfSwgLy8gTnVtYmVyIEZvcm1zXG4gICAge2JlZ2luOiAweDIxOTAsIGVuZDogMHgyMUZGfSwgLy8gQXJyb3dzXG4gICAge2JlZ2luOiAweDIyMDAsIGVuZDogMHgyMkZGfSwgLy8gTWF0aGVtYXRpY2FsIE9wZXJhdG9yc1xuICAgIHtiZWdpbjogMHgyMzAwLCBlbmQ6IDB4MjNGRn0sIC8vIE1pc2NlbGxhbmVvdXMgVGVjaG5pY2FsXG4gICAge2JlZ2luOiAweDI0MDAsIGVuZDogMHgyNDNGfSwgLy8gQ29udHJvbCBQaWN0dXJlc1xuICAgIHtiZWdpbjogMHgyNDQwLCBlbmQ6IDB4MjQ1Rn0sIC8vIE9wdGljYWwgQ2hhcmFjdGVyIFJlY29nbml0aW9uXG4gICAge2JlZ2luOiAweDI0NjAsIGVuZDogMHgyNEZGfSwgLy8gRW5jbG9zZWQgQWxwaGFudW1lcmljc1xuICAgIHtiZWdpbjogMHgyNTAwLCBlbmQ6IDB4MjU3Rn0sIC8vIEJveCBEcmF3aW5nXG4gICAge2JlZ2luOiAweDI1ODAsIGVuZDogMHgyNTlGfSwgLy8gQmxvY2sgRWxlbWVudHNcbiAgICB7YmVnaW46IDB4MjVBMCwgZW5kOiAweDI1RkZ9LCAvLyBHZW9tZXRyaWMgU2hhcGVzXG4gICAge2JlZ2luOiAweDI2MDAsIGVuZDogMHgyNkZGfSwgLy8gTWlzY2VsbGFuZW91cyBTeW1ib2xzXG4gICAge2JlZ2luOiAweDI3MDAsIGVuZDogMHgyN0JGfSwgLy8gRGluZ2JhdHNcbiAgICB7YmVnaW46IDB4MzAwMCwgZW5kOiAweDMwM0Z9LCAvLyBDSksgU3ltYm9scyBBbmQgUHVuY3R1YXRpb25cbiAgICB7YmVnaW46IDB4MzA0MCwgZW5kOiAweDMwOUZ9LCAvLyBIaXJhZ2FuYVxuICAgIHtiZWdpbjogMHgzMEEwLCBlbmQ6IDB4MzBGRn0sIC8vIEthdGFrYW5hXG4gICAge2JlZ2luOiAweDMxMDAsIGVuZDogMHgzMTJGfSwgLy8gQm9wb21vZm9cbiAgICB7YmVnaW46IDB4MzEzMCwgZW5kOiAweDMxOEZ9LCAvLyBIYW5ndWwgQ29tcGF0aWJpbGl0eSBKYW1vXG4gICAge2JlZ2luOiAweEE4NDAsIGVuZDogMHhBODdGfSwgLy8gUGhhZ3MtcGFcbiAgICB7YmVnaW46IDB4MzIwMCwgZW5kOiAweDMyRkZ9LCAvLyBFbmNsb3NlZCBDSksgTGV0dGVycyBBbmQgTW9udGhzXG4gICAge2JlZ2luOiAweDMzMDAsIGVuZDogMHgzM0ZGfSwgLy8gQ0pLIENvbXBhdGliaWxpdHlcbiAgICB7YmVnaW46IDB4QUMwMCwgZW5kOiAweEQ3QUZ9LCAvLyBIYW5ndWwgU3lsbGFibGVzXG4gICAge2JlZ2luOiAweEQ4MDAsIGVuZDogMHhERkZGfSwgLy8gTm9uLVBsYW5lIDAgKlxuICAgIHtiZWdpbjogMHgxMDkwMCwgZW5kOiAweDEwOTFGfSwgLy8gUGhvZW5pY2lhXG4gICAge2JlZ2luOiAweDRFMDAsIGVuZDogMHg5RkZGfSwgLy8gQ0pLIFVuaWZpZWQgSWRlb2dyYXBoc1xuICAgIHtiZWdpbjogMHhFMDAwLCBlbmQ6IDB4RjhGRn0sIC8vIFByaXZhdGUgVXNlIEFyZWEgKHBsYW5lIDApXG4gICAge2JlZ2luOiAweDMxQzAsIGVuZDogMHgzMUVGfSwgLy8gQ0pLIFN0cm9rZXNcbiAgICB7YmVnaW46IDB4RkIwMCwgZW5kOiAweEZCNEZ9LCAvLyBBbHBoYWJldGljIFByZXNlbnRhdGlvbiBGb3Jtc1xuICAgIHtiZWdpbjogMHhGQjUwLCBlbmQ6IDB4RkRGRn0sIC8vIEFyYWJpYyBQcmVzZW50YXRpb24gRm9ybXMtQVxuICAgIHtiZWdpbjogMHhGRTIwLCBlbmQ6IDB4RkUyRn0sIC8vIENvbWJpbmluZyBIYWxmIE1hcmtzXG4gICAge2JlZ2luOiAweEZFMTAsIGVuZDogMHhGRTFGfSwgLy8gVmVydGljYWwgRm9ybXNcbiAgICB7YmVnaW46IDB4RkU1MCwgZW5kOiAweEZFNkZ9LCAvLyBTbWFsbCBGb3JtIFZhcmlhbnRzXG4gICAge2JlZ2luOiAweEZFNzAsIGVuZDogMHhGRUZGfSwgLy8gQXJhYmljIFByZXNlbnRhdGlvbiBGb3Jtcy1CXG4gICAge2JlZ2luOiAweEZGMDAsIGVuZDogMHhGRkVGfSwgLy8gSGFsZndpZHRoIEFuZCBGdWxsd2lkdGggRm9ybXNcbiAgICB7YmVnaW46IDB4RkZGMCwgZW5kOiAweEZGRkZ9LCAvLyBTcGVjaWFsc1xuICAgIHtiZWdpbjogMHgwRjAwLCBlbmQ6IDB4MEZGRn0sIC8vIFRpYmV0YW5cbiAgICB7YmVnaW46IDB4MDcwMCwgZW5kOiAweDA3NEZ9LCAvLyBTeXJpYWNcbiAgICB7YmVnaW46IDB4MDc4MCwgZW5kOiAweDA3QkZ9LCAvLyBUaGFhbmFcbiAgICB7YmVnaW46IDB4MEQ4MCwgZW5kOiAweDBERkZ9LCAvLyBTaW5oYWxhXG4gICAge2JlZ2luOiAweDEwMDAsIGVuZDogMHgxMDlGfSwgLy8gTXlhbm1hclxuICAgIHtiZWdpbjogMHgxMjAwLCBlbmQ6IDB4MTM3Rn0sIC8vIEV0aGlvcGljXG4gICAge2JlZ2luOiAweDEzQTAsIGVuZDogMHgxM0ZGfSwgLy8gQ2hlcm9rZWVcbiAgICB7YmVnaW46IDB4MTQwMCwgZW5kOiAweDE2N0Z9LCAvLyBVbmlmaWVkIENhbmFkaWFuIEFib3JpZ2luYWwgU3lsbGFiaWNzXG4gICAge2JlZ2luOiAweDE2ODAsIGVuZDogMHgxNjlGfSwgLy8gT2doYW1cbiAgICB7YmVnaW46IDB4MTZBMCwgZW5kOiAweDE2RkZ9LCAvLyBSdW5pY1xuICAgIHtiZWdpbjogMHgxNzgwLCBlbmQ6IDB4MTdGRn0sIC8vIEtobWVyXG4gICAge2JlZ2luOiAweDE4MDAsIGVuZDogMHgxOEFGfSwgLy8gTW9uZ29saWFuXG4gICAge2JlZ2luOiAweDI4MDAsIGVuZDogMHgyOEZGfSwgLy8gQnJhaWxsZSBQYXR0ZXJuc1xuICAgIHtiZWdpbjogMHhBMDAwLCBlbmQ6IDB4QTQ4Rn0sIC8vIFlpIFN5bGxhYmxlc1xuICAgIHtiZWdpbjogMHgxNzAwLCBlbmQ6IDB4MTcxRn0sIC8vIFRhZ2Fsb2dcbiAgICB7YmVnaW46IDB4MTAzMDAsIGVuZDogMHgxMDMyRn0sIC8vIE9sZCBJdGFsaWNcbiAgICB7YmVnaW46IDB4MTAzMzAsIGVuZDogMHgxMDM0Rn0sIC8vIEdvdGhpY1xuICAgIHtiZWdpbjogMHgxMDQwMCwgZW5kOiAweDEwNDRGfSwgLy8gRGVzZXJldFxuICAgIHtiZWdpbjogMHgxRDAwMCwgZW5kOiAweDFEMEZGfSwgLy8gQnl6YW50aW5lIE11c2ljYWwgU3ltYm9sc1xuICAgIHtiZWdpbjogMHgxRDQwMCwgZW5kOiAweDFEN0ZGfSwgLy8gTWF0aGVtYXRpY2FsIEFscGhhbnVtZXJpYyBTeW1ib2xzXG4gICAge2JlZ2luOiAweEZGMDAwLCBlbmQ6IDB4RkZGRkR9LCAvLyBQcml2YXRlIFVzZSAocGxhbmUgMTUpXG4gICAge2JlZ2luOiAweEZFMDAsIGVuZDogMHhGRTBGfSwgLy8gVmFyaWF0aW9uIFNlbGVjdG9yc1xuICAgIHtiZWdpbjogMHhFMDAwMCwgZW5kOiAweEUwMDdGfSwgLy8gVGFnc1xuICAgIHtiZWdpbjogMHgxOTAwLCBlbmQ6IDB4MTk0Rn0sIC8vIExpbWJ1XG4gICAge2JlZ2luOiAweDE5NTAsIGVuZDogMHgxOTdGfSwgLy8gVGFpIExlXG4gICAge2JlZ2luOiAweDE5ODAsIGVuZDogMHgxOURGfSwgLy8gTmV3IFRhaSBMdWVcbiAgICB7YmVnaW46IDB4MUEwMCwgZW5kOiAweDFBMUZ9LCAvLyBCdWdpbmVzZVxuICAgIHtiZWdpbjogMHgyQzAwLCBlbmQ6IDB4MkM1Rn0sIC8vIEdsYWdvbGl0aWNcbiAgICB7YmVnaW46IDB4MkQzMCwgZW5kOiAweDJEN0Z9LCAvLyBUaWZpbmFnaFxuICAgIHtiZWdpbjogMHg0REMwLCBlbmQ6IDB4NERGRn0sIC8vIFlpamluZyBIZXhhZ3JhbSBTeW1ib2xzXG4gICAge2JlZ2luOiAweEE4MDAsIGVuZDogMHhBODJGfSwgLy8gU3lsb3RpIE5hZ3JpXG4gICAge2JlZ2luOiAweDEwMDAwLCBlbmQ6IDB4MTAwN0Z9LCAvLyBMaW5lYXIgQiBTeWxsYWJhcnlcbiAgICB7YmVnaW46IDB4MTAxNDAsIGVuZDogMHgxMDE4Rn0sIC8vIEFuY2llbnQgR3JlZWsgTnVtYmVyc1xuICAgIHtiZWdpbjogMHgxMDM4MCwgZW5kOiAweDEwMzlGfSwgLy8gVWdhcml0aWNcbiAgICB7YmVnaW46IDB4MTAzQTAsIGVuZDogMHgxMDNERn0sIC8vIE9sZCBQZXJzaWFuXG4gICAge2JlZ2luOiAweDEwNDUwLCBlbmQ6IDB4MTA0N0Z9LCAvLyBTaGF2aWFuXG4gICAge2JlZ2luOiAweDEwNDgwLCBlbmQ6IDB4MTA0QUZ9LCAvLyBPc21hbnlhXG4gICAge2JlZ2luOiAweDEwODAwLCBlbmQ6IDB4MTA4M0Z9LCAvLyBDeXByaW90IFN5bGxhYmFyeVxuICAgIHtiZWdpbjogMHgxMEEwMCwgZW5kOiAweDEwQTVGfSwgLy8gS2hhcm9zaHRoaVxuICAgIHtiZWdpbjogMHgxRDMwMCwgZW5kOiAweDFEMzVGfSwgLy8gVGFpIFh1YW4gSmluZyBTeW1ib2xzXG4gICAge2JlZ2luOiAweDEyMDAwLCBlbmQ6IDB4MTIzRkZ9LCAvLyBDdW5laWZvcm1cbiAgICB7YmVnaW46IDB4MUQzNjAsIGVuZDogMHgxRDM3Rn0sIC8vIENvdW50aW5nIFJvZCBOdW1lcmFsc1xuICAgIHtiZWdpbjogMHgxQjgwLCBlbmQ6IDB4MUJCRn0sIC8vIFN1bmRhbmVzZVxuICAgIHtiZWdpbjogMHgxQzAwLCBlbmQ6IDB4MUM0Rn0sIC8vIExlcGNoYVxuICAgIHtiZWdpbjogMHgxQzUwLCBlbmQ6IDB4MUM3Rn0sIC8vIE9sIENoaWtpXG4gICAge2JlZ2luOiAweEE4ODAsIGVuZDogMHhBOERGfSwgLy8gU2F1cmFzaHRyYVxuICAgIHtiZWdpbjogMHhBOTAwLCBlbmQ6IDB4QTkyRn0sIC8vIEtheWFoIExpXG4gICAge2JlZ2luOiAweEE5MzAsIGVuZDogMHhBOTVGfSwgLy8gUmVqYW5nXG4gICAge2JlZ2luOiAweEFBMDAsIGVuZDogMHhBQTVGfSwgLy8gQ2hhbVxuICAgIHtiZWdpbjogMHgxMDE5MCwgZW5kOiAweDEwMUNGfSwgLy8gQW5jaWVudCBTeW1ib2xzXG4gICAge2JlZ2luOiAweDEwMUQwLCBlbmQ6IDB4MTAxRkZ9LCAvLyBQaGFpc3RvcyBEaXNjXG4gICAge2JlZ2luOiAweDEwMkEwLCBlbmQ6IDB4MTAyREZ9LCAvLyBDYXJpYW5cbiAgICB7YmVnaW46IDB4MUYwMzAsIGVuZDogMHgxRjA5Rn0gIC8vIERvbWlubyBUaWxlc1xuXTtcblxuZnVuY3Rpb24gZ2V0VW5pY29kZVJhbmdlKHVuaWNvZGUpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHVuaWNvZGVSYW5nZXMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgICAgdmFyIHJhbmdlID0gdW5pY29kZVJhbmdlc1tpXTtcbiAgICAgICAgaWYgKHVuaWNvZGUgPj0gcmFuZ2UuYmVnaW4gJiYgdW5pY29kZSA8IHJhbmdlLmVuZCkge1xuICAgICAgICAgICAgcmV0dXJuIGk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gLTE7XG59XG5cbi8vIFBhcnNlIHRoZSBPUy8yIGFuZCBXaW5kb3dzIG1ldHJpY3MgYE9TLzJgIHRhYmxlXG5mdW5jdGlvbiBwYXJzZU9TMlRhYmxlKGRhdGEsIHN0YXJ0KSB7XG4gICAgdmFyIG9zMiA9IHt9O1xuICAgIHZhciBwID0gbmV3IHBhcnNlLlBhcnNlcihkYXRhLCBzdGFydCk7XG4gICAgb3MyLnZlcnNpb24gPSBwLnBhcnNlVVNob3J0KCk7XG4gICAgb3MyLnhBdmdDaGFyV2lkdGggPSBwLnBhcnNlU2hvcnQoKTtcbiAgICBvczIudXNXZWlnaHRDbGFzcyA9IHAucGFyc2VVU2hvcnQoKTtcbiAgICBvczIudXNXaWR0aENsYXNzID0gcC5wYXJzZVVTaG9ydCgpO1xuICAgIG9zMi5mc1R5cGUgPSBwLnBhcnNlVVNob3J0KCk7XG4gICAgb3MyLnlTdWJzY3JpcHRYU2l6ZSA9IHAucGFyc2VTaG9ydCgpO1xuICAgIG9zMi55U3Vic2NyaXB0WVNpemUgPSBwLnBhcnNlU2hvcnQoKTtcbiAgICBvczIueVN1YnNjcmlwdFhPZmZzZXQgPSBwLnBhcnNlU2hvcnQoKTtcbiAgICBvczIueVN1YnNjcmlwdFlPZmZzZXQgPSBwLnBhcnNlU2hvcnQoKTtcbiAgICBvczIueVN1cGVyc2NyaXB0WFNpemUgPSBwLnBhcnNlU2hvcnQoKTtcbiAgICBvczIueVN1cGVyc2NyaXB0WVNpemUgPSBwLnBhcnNlU2hvcnQoKTtcbiAgICBvczIueVN1cGVyc2NyaXB0WE9mZnNldCA9IHAucGFyc2VTaG9ydCgpO1xuICAgIG9zMi55U3VwZXJzY3JpcHRZT2Zmc2V0ID0gcC5wYXJzZVNob3J0KCk7XG4gICAgb3MyLnlTdHJpa2VvdXRTaXplID0gcC5wYXJzZVNob3J0KCk7XG4gICAgb3MyLnlTdHJpa2VvdXRQb3NpdGlvbiA9IHAucGFyc2VTaG9ydCgpO1xuICAgIG9zMi5zRmFtaWx5Q2xhc3MgPSBwLnBhcnNlU2hvcnQoKTtcbiAgICBvczIucGFub3NlID0gW107XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDsgaSsrKSB7XG4gICAgICAgIG9zMi5wYW5vc2VbaV0gPSBwLnBhcnNlQnl0ZSgpO1xuICAgIH1cblxuICAgIG9zMi51bFVuaWNvZGVSYW5nZTEgPSBwLnBhcnNlVUxvbmcoKTtcbiAgICBvczIudWxVbmljb2RlUmFuZ2UyID0gcC5wYXJzZVVMb25nKCk7XG4gICAgb3MyLnVsVW5pY29kZVJhbmdlMyA9IHAucGFyc2VVTG9uZygpO1xuICAgIG9zMi51bFVuaWNvZGVSYW5nZTQgPSBwLnBhcnNlVUxvbmcoKTtcbiAgICBvczIuYWNoVmVuZElEID0gU3RyaW5nLmZyb21DaGFyQ29kZShwLnBhcnNlQnl0ZSgpLCBwLnBhcnNlQnl0ZSgpLCBwLnBhcnNlQnl0ZSgpLCBwLnBhcnNlQnl0ZSgpKTtcbiAgICBvczIuZnNTZWxlY3Rpb24gPSBwLnBhcnNlVVNob3J0KCk7XG4gICAgb3MyLnVzRmlyc3RDaGFySW5kZXggPSBwLnBhcnNlVVNob3J0KCk7XG4gICAgb3MyLnVzTGFzdENoYXJJbmRleCA9IHAucGFyc2VVU2hvcnQoKTtcbiAgICBvczIuc1R5cG9Bc2NlbmRlciA9IHAucGFyc2VTaG9ydCgpO1xuICAgIG9zMi5zVHlwb0Rlc2NlbmRlciA9IHAucGFyc2VTaG9ydCgpO1xuICAgIG9zMi5zVHlwb0xpbmVHYXAgPSBwLnBhcnNlU2hvcnQoKTtcbiAgICBvczIudXNXaW5Bc2NlbnQgPSBwLnBhcnNlVVNob3J0KCk7XG4gICAgb3MyLnVzV2luRGVzY2VudCA9IHAucGFyc2VVU2hvcnQoKTtcbiAgICBpZiAob3MyLnZlcnNpb24gPj0gMSkge1xuICAgICAgICBvczIudWxDb2RlUGFnZVJhbmdlMSA9IHAucGFyc2VVTG9uZygpO1xuICAgICAgICBvczIudWxDb2RlUGFnZVJhbmdlMiA9IHAucGFyc2VVTG9uZygpO1xuICAgIH1cblxuICAgIGlmIChvczIudmVyc2lvbiA+PSAyKSB7XG4gICAgICAgIG9zMi5zeEhlaWdodCA9IHAucGFyc2VTaG9ydCgpO1xuICAgICAgICBvczIuc0NhcEhlaWdodCA9IHAucGFyc2VTaG9ydCgpO1xuICAgICAgICBvczIudXNEZWZhdWx0Q2hhciA9IHAucGFyc2VVU2hvcnQoKTtcbiAgICAgICAgb3MyLnVzQnJlYWtDaGFyID0gcC5wYXJzZVVTaG9ydCgpO1xuICAgICAgICBvczIudXNNYXhDb250ZW50ID0gcC5wYXJzZVVTaG9ydCgpO1xuICAgIH1cblxuICAgIHJldHVybiBvczI7XG59XG5cbmZ1bmN0aW9uIG1ha2VPUzJUYWJsZShvcHRpb25zKSB7XG4gICAgcmV0dXJuIG5ldyB0YWJsZS5UYWJsZSgnT1MvMicsIFtcbiAgICAgICAge25hbWU6ICd2ZXJzaW9uJywgdHlwZTogJ1VTSE9SVCcsIHZhbHVlOiAweDAwMDN9LFxuICAgICAgICB7bmFtZTogJ3hBdmdDaGFyV2lkdGgnLCB0eXBlOiAnU0hPUlQnLCB2YWx1ZTogMH0sXG4gICAgICAgIHtuYW1lOiAndXNXZWlnaHRDbGFzcycsIHR5cGU6ICdVU0hPUlQnLCB2YWx1ZTogMH0sXG4gICAgICAgIHtuYW1lOiAndXNXaWR0aENsYXNzJywgdHlwZTogJ1VTSE9SVCcsIHZhbHVlOiAwfSxcbiAgICAgICAge25hbWU6ICdmc1R5cGUnLCB0eXBlOiAnVVNIT1JUJywgdmFsdWU6IDB9LFxuICAgICAgICB7bmFtZTogJ3lTdWJzY3JpcHRYU2l6ZScsIHR5cGU6ICdTSE9SVCcsIHZhbHVlOiA2NTB9LFxuICAgICAgICB7bmFtZTogJ3lTdWJzY3JpcHRZU2l6ZScsIHR5cGU6ICdTSE9SVCcsIHZhbHVlOiA2OTl9LFxuICAgICAgICB7bmFtZTogJ3lTdWJzY3JpcHRYT2Zmc2V0JywgdHlwZTogJ1NIT1JUJywgdmFsdWU6IDB9LFxuICAgICAgICB7bmFtZTogJ3lTdWJzY3JpcHRZT2Zmc2V0JywgdHlwZTogJ1NIT1JUJywgdmFsdWU6IDE0MH0sXG4gICAgICAgIHtuYW1lOiAneVN1cGVyc2NyaXB0WFNpemUnLCB0eXBlOiAnU0hPUlQnLCB2YWx1ZTogNjUwfSxcbiAgICAgICAge25hbWU6ICd5U3VwZXJzY3JpcHRZU2l6ZScsIHR5cGU6ICdTSE9SVCcsIHZhbHVlOiA2OTl9LFxuICAgICAgICB7bmFtZTogJ3lTdXBlcnNjcmlwdFhPZmZzZXQnLCB0eXBlOiAnU0hPUlQnLCB2YWx1ZTogMH0sXG4gICAgICAgIHtuYW1lOiAneVN1cGVyc2NyaXB0WU9mZnNldCcsIHR5cGU6ICdTSE9SVCcsIHZhbHVlOiA0Nzl9LFxuICAgICAgICB7bmFtZTogJ3lTdHJpa2VvdXRTaXplJywgdHlwZTogJ1NIT1JUJywgdmFsdWU6IDQ5fSxcbiAgICAgICAge25hbWU6ICd5U3RyaWtlb3V0UG9zaXRpb24nLCB0eXBlOiAnU0hPUlQnLCB2YWx1ZTogMjU4fSxcbiAgICAgICAge25hbWU6ICdzRmFtaWx5Q2xhc3MnLCB0eXBlOiAnU0hPUlQnLCB2YWx1ZTogMH0sXG4gICAgICAgIHtuYW1lOiAnYkZhbWlseVR5cGUnLCB0eXBlOiAnQllURScsIHZhbHVlOiAwfSxcbiAgICAgICAge25hbWU6ICdiU2VyaWZTdHlsZScsIHR5cGU6ICdCWVRFJywgdmFsdWU6IDB9LFxuICAgICAgICB7bmFtZTogJ2JXZWlnaHQnLCB0eXBlOiAnQllURScsIHZhbHVlOiAwfSxcbiAgICAgICAge25hbWU6ICdiUHJvcG9ydGlvbicsIHR5cGU6ICdCWVRFJywgdmFsdWU6IDB9LFxuICAgICAgICB7bmFtZTogJ2JDb250cmFzdCcsIHR5cGU6ICdCWVRFJywgdmFsdWU6IDB9LFxuICAgICAgICB7bmFtZTogJ2JTdHJva2VWYXJpYXRpb24nLCB0eXBlOiAnQllURScsIHZhbHVlOiAwfSxcbiAgICAgICAge25hbWU6ICdiQXJtU3R5bGUnLCB0eXBlOiAnQllURScsIHZhbHVlOiAwfSxcbiAgICAgICAge25hbWU6ICdiTGV0dGVyZm9ybScsIHR5cGU6ICdCWVRFJywgdmFsdWU6IDB9LFxuICAgICAgICB7bmFtZTogJ2JNaWRsaW5lJywgdHlwZTogJ0JZVEUnLCB2YWx1ZTogMH0sXG4gICAgICAgIHtuYW1lOiAnYlhIZWlnaHQnLCB0eXBlOiAnQllURScsIHZhbHVlOiAwfSxcbiAgICAgICAge25hbWU6ICd1bFVuaWNvZGVSYW5nZTEnLCB0eXBlOiAnVUxPTkcnLCB2YWx1ZTogMH0sXG4gICAgICAgIHtuYW1lOiAndWxVbmljb2RlUmFuZ2UyJywgdHlwZTogJ1VMT05HJywgdmFsdWU6IDB9LFxuICAgICAgICB7bmFtZTogJ3VsVW5pY29kZVJhbmdlMycsIHR5cGU6ICdVTE9ORycsIHZhbHVlOiAwfSxcbiAgICAgICAge25hbWU6ICd1bFVuaWNvZGVSYW5nZTQnLCB0eXBlOiAnVUxPTkcnLCB2YWx1ZTogMH0sXG4gICAgICAgIHtuYW1lOiAnYWNoVmVuZElEJywgdHlwZTogJ0NIQVJBUlJBWScsIHZhbHVlOiAnWFhYWCd9LFxuICAgICAgICB7bmFtZTogJ2ZzU2VsZWN0aW9uJywgdHlwZTogJ1VTSE9SVCcsIHZhbHVlOiAwfSxcbiAgICAgICAge25hbWU6ICd1c0ZpcnN0Q2hhckluZGV4JywgdHlwZTogJ1VTSE9SVCcsIHZhbHVlOiAwfSxcbiAgICAgICAge25hbWU6ICd1c0xhc3RDaGFySW5kZXgnLCB0eXBlOiAnVVNIT1JUJywgdmFsdWU6IDB9LFxuICAgICAgICB7bmFtZTogJ3NUeXBvQXNjZW5kZXInLCB0eXBlOiAnU0hPUlQnLCB2YWx1ZTogMH0sXG4gICAgICAgIHtuYW1lOiAnc1R5cG9EZXNjZW5kZXInLCB0eXBlOiAnU0hPUlQnLCB2YWx1ZTogMH0sXG4gICAgICAgIHtuYW1lOiAnc1R5cG9MaW5lR2FwJywgdHlwZTogJ1NIT1JUJywgdmFsdWU6IDB9LFxuICAgICAgICB7bmFtZTogJ3VzV2luQXNjZW50JywgdHlwZTogJ1VTSE9SVCcsIHZhbHVlOiAwfSxcbiAgICAgICAge25hbWU6ICd1c1dpbkRlc2NlbnQnLCB0eXBlOiAnVVNIT1JUJywgdmFsdWU6IDB9LFxuICAgICAgICB7bmFtZTogJ3VsQ29kZVBhZ2VSYW5nZTEnLCB0eXBlOiAnVUxPTkcnLCB2YWx1ZTogMH0sXG4gICAgICAgIHtuYW1lOiAndWxDb2RlUGFnZVJhbmdlMicsIHR5cGU6ICdVTE9ORycsIHZhbHVlOiAwfSxcbiAgICAgICAge25hbWU6ICdzeEhlaWdodCcsIHR5cGU6ICdTSE9SVCcsIHZhbHVlOiAwfSxcbiAgICAgICAge25hbWU6ICdzQ2FwSGVpZ2h0JywgdHlwZTogJ1NIT1JUJywgdmFsdWU6IDB9LFxuICAgICAgICB7bmFtZTogJ3VzRGVmYXVsdENoYXInLCB0eXBlOiAnVVNIT1JUJywgdmFsdWU6IDB9LFxuICAgICAgICB7bmFtZTogJ3VzQnJlYWtDaGFyJywgdHlwZTogJ1VTSE9SVCcsIHZhbHVlOiAwfSxcbiAgICAgICAge25hbWU6ICd1c01heENvbnRleHQnLCB0eXBlOiAnVVNIT1JUJywgdmFsdWU6IDB9XG4gICAgXSwgb3B0aW9ucyk7XG59XG5cbmV4cG9ydHMudW5pY29kZVJhbmdlcyA9IHVuaWNvZGVSYW5nZXM7XG5leHBvcnRzLmdldFVuaWNvZGVSYW5nZSA9IGdldFVuaWNvZGVSYW5nZTtcbmV4cG9ydHMucGFyc2UgPSBwYXJzZU9TMlRhYmxlO1xuZXhwb3J0cy5tYWtlID0gbWFrZU9TMlRhYmxlO1xuIiwiLy8gVGhlIGBwb3N0YCB0YWJsZSBzdG9yZXMgYWRkaXRpb25hbCBQb3N0U2NyaXB0IGluZm9ybWF0aW9uLCBzdWNoIGFzIGdseXBoIG5hbWVzLlxuLy8gaHR0cHM6Ly93d3cubWljcm9zb2Z0LmNvbS90eXBvZ3JhcGh5L09UU1BFQy9wb3N0Lmh0bVxuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBlbmNvZGluZyA9IHJlcXVpcmUoJy4uL2VuY29kaW5nJyk7XG52YXIgcGFyc2UgPSByZXF1aXJlKCcuLi9wYXJzZScpO1xudmFyIHRhYmxlID0gcmVxdWlyZSgnLi4vdGFibGUnKTtcblxuLy8gUGFyc2UgdGhlIFBvc3RTY3JpcHQgYHBvc3RgIHRhYmxlXG5mdW5jdGlvbiBwYXJzZVBvc3RUYWJsZShkYXRhLCBzdGFydCkge1xuICAgIHZhciBwb3N0ID0ge307XG4gICAgdmFyIHAgPSBuZXcgcGFyc2UuUGFyc2VyKGRhdGEsIHN0YXJ0KTtcbiAgICB2YXIgaTtcbiAgICBwb3N0LnZlcnNpb24gPSBwLnBhcnNlVmVyc2lvbigpO1xuICAgIHBvc3QuaXRhbGljQW5nbGUgPSBwLnBhcnNlRml4ZWQoKTtcbiAgICBwb3N0LnVuZGVybGluZVBvc2l0aW9uID0gcC5wYXJzZVNob3J0KCk7XG4gICAgcG9zdC51bmRlcmxpbmVUaGlja25lc3MgPSBwLnBhcnNlU2hvcnQoKTtcbiAgICBwb3N0LmlzRml4ZWRQaXRjaCA9IHAucGFyc2VVTG9uZygpO1xuICAgIHBvc3QubWluTWVtVHlwZTQyID0gcC5wYXJzZVVMb25nKCk7XG4gICAgcG9zdC5tYXhNZW1UeXBlNDIgPSBwLnBhcnNlVUxvbmcoKTtcbiAgICBwb3N0Lm1pbk1lbVR5cGUxID0gcC5wYXJzZVVMb25nKCk7XG4gICAgcG9zdC5tYXhNZW1UeXBlMSA9IHAucGFyc2VVTG9uZygpO1xuICAgIHN3aXRjaCAocG9zdC52ZXJzaW9uKSB7XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgIHBvc3QubmFtZXMgPSBlbmNvZGluZy5zdGFuZGFyZE5hbWVzLnNsaWNlKCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgcG9zdC5udW1iZXJPZkdseXBocyA9IHAucGFyc2VVU2hvcnQoKTtcbiAgICAgICAgICAgIHBvc3QuZ2x5cGhOYW1lSW5kZXggPSBuZXcgQXJyYXkocG9zdC5udW1iZXJPZkdseXBocyk7XG4gICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgcG9zdC5udW1iZXJPZkdseXBoczsgaSsrKSB7XG4gICAgICAgICAgICAgICAgcG9zdC5nbHlwaE5hbWVJbmRleFtpXSA9IHAucGFyc2VVU2hvcnQoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcG9zdC5uYW1lcyA9IFtdO1xuICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IHBvc3QubnVtYmVyT2ZHbHlwaHM7IGkrKykge1xuICAgICAgICAgICAgICAgIGlmIChwb3N0LmdseXBoTmFtZUluZGV4W2ldID49IGVuY29kaW5nLnN0YW5kYXJkTmFtZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBuYW1lTGVuZ3RoID0gcC5wYXJzZUNoYXIoKTtcbiAgICAgICAgICAgICAgICAgICAgcG9zdC5uYW1lcy5wdXNoKHAucGFyc2VTdHJpbmcobmFtZUxlbmd0aCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMi41OlxuICAgICAgICAgICAgcG9zdC5udW1iZXJPZkdseXBocyA9IHAucGFyc2VVU2hvcnQoKTtcbiAgICAgICAgICAgIHBvc3Qub2Zmc2V0ID0gbmV3IEFycmF5KHBvc3QubnVtYmVyT2ZHbHlwaHMpO1xuICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IHBvc3QubnVtYmVyT2ZHbHlwaHM7IGkrKykge1xuICAgICAgICAgICAgICAgIHBvc3Qub2Zmc2V0W2ldID0gcC5wYXJzZUNoYXIoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHJldHVybiBwb3N0O1xufVxuXG5mdW5jdGlvbiBtYWtlUG9zdFRhYmxlKCkge1xuICAgIHJldHVybiBuZXcgdGFibGUuVGFibGUoJ3Bvc3QnLCBbXG4gICAgICAgIHtuYW1lOiAndmVyc2lvbicsIHR5cGU6ICdGSVhFRCcsIHZhbHVlOiAweDAwMDMwMDAwfSxcbiAgICAgICAge25hbWU6ICdpdGFsaWNBbmdsZScsIHR5cGU6ICdGSVhFRCcsIHZhbHVlOiAwfSxcbiAgICAgICAge25hbWU6ICd1bmRlcmxpbmVQb3NpdGlvbicsIHR5cGU6ICdGV09SRCcsIHZhbHVlOiAwfSxcbiAgICAgICAge25hbWU6ICd1bmRlcmxpbmVUaGlja25lc3MnLCB0eXBlOiAnRldPUkQnLCB2YWx1ZTogMH0sXG4gICAgICAgIHtuYW1lOiAnaXNGaXhlZFBpdGNoJywgdHlwZTogJ1VMT05HJywgdmFsdWU6IDB9LFxuICAgICAgICB7bmFtZTogJ21pbk1lbVR5cGU0MicsIHR5cGU6ICdVTE9ORycsIHZhbHVlOiAwfSxcbiAgICAgICAge25hbWU6ICdtYXhNZW1UeXBlNDInLCB0eXBlOiAnVUxPTkcnLCB2YWx1ZTogMH0sXG4gICAgICAgIHtuYW1lOiAnbWluTWVtVHlwZTEnLCB0eXBlOiAnVUxPTkcnLCB2YWx1ZTogMH0sXG4gICAgICAgIHtuYW1lOiAnbWF4TWVtVHlwZTEnLCB0eXBlOiAnVUxPTkcnLCB2YWx1ZTogMH1cbiAgICBdKTtcbn1cblxuZXhwb3J0cy5wYXJzZSA9IHBhcnNlUG9zdFRhYmxlO1xuZXhwb3J0cy5tYWtlID0gbWFrZVBvc3RUYWJsZTtcbiIsIi8vIFRoZSBgc2ZudGAgd3JhcHBlciBwcm92aWRlcyBvcmdhbml6YXRpb24gZm9yIHRoZSB0YWJsZXMgaW4gdGhlIGZvbnQuXG4vLyBJdCBpcyB0aGUgdG9wLWxldmVsIGRhdGEgc3RydWN0dXJlIGluIGEgZm9udC5cbi8vIGh0dHBzOi8vd3d3Lm1pY3Jvc29mdC5jb20vdHlwb2dyYXBoeS9PVFNQRUMvb3RmZi5odG1cbi8vIFJlY29tbWVuZGF0aW9ucyBmb3IgY3JlYXRpbmcgT3BlblR5cGUgRm9udHM6XG4vLyBodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20vdHlwb2dyYXBoeS9vdHNwZWMxNDAvcmVjb20uaHRtXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIGNoZWNrID0gcmVxdWlyZSgnLi4vY2hlY2snKTtcbnZhciB0YWJsZSA9IHJlcXVpcmUoJy4uL3RhYmxlJyk7XG5cbnZhciBjbWFwID0gcmVxdWlyZSgnLi9jbWFwJyk7XG52YXIgY2ZmID0gcmVxdWlyZSgnLi9jZmYnKTtcbnZhciBoZWFkID0gcmVxdWlyZSgnLi9oZWFkJyk7XG52YXIgaGhlYSA9IHJlcXVpcmUoJy4vaGhlYScpO1xudmFyIGhtdHggPSByZXF1aXJlKCcuL2htdHgnKTtcbnZhciBsdGFnID0gcmVxdWlyZSgnLi9sdGFnJyk7XG52YXIgbWF4cCA9IHJlcXVpcmUoJy4vbWF4cCcpO1xudmFyIF9uYW1lID0gcmVxdWlyZSgnLi9uYW1lJyk7XG52YXIgb3MyID0gcmVxdWlyZSgnLi9vczInKTtcbnZhciBwb3N0ID0gcmVxdWlyZSgnLi9wb3N0Jyk7XG52YXIgZ3N1YiA9IHJlcXVpcmUoJy4vZ3N1YicpO1xudmFyIG1ldGEgPSByZXF1aXJlKCcuL21ldGEnKTtcblxuZnVuY3Rpb24gbG9nMih2KSB7XG4gICAgcmV0dXJuIE1hdGgubG9nKHYpIC8gTWF0aC5sb2coMikgfCAwO1xufVxuXG5mdW5jdGlvbiBjb21wdXRlQ2hlY2tTdW0oYnl0ZXMpIHtcbiAgICB3aGlsZSAoYnl0ZXMubGVuZ3RoICUgNCAhPT0gMCkge1xuICAgICAgICBieXRlcy5wdXNoKDApO1xuICAgIH1cblxuICAgIHZhciBzdW0gPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYnl0ZXMubGVuZ3RoOyBpICs9IDQpIHtcbiAgICAgICAgc3VtICs9IChieXRlc1tpXSA8PCAyNCkgK1xuICAgICAgICAgICAgKGJ5dGVzW2kgKyAxXSA8PCAxNikgK1xuICAgICAgICAgICAgKGJ5dGVzW2kgKyAyXSA8PCA4KSArXG4gICAgICAgICAgICAoYnl0ZXNbaSArIDNdKTtcbiAgICB9XG5cbiAgICBzdW0gJT0gTWF0aC5wb3coMiwgMzIpO1xuICAgIHJldHVybiBzdW07XG59XG5cbmZ1bmN0aW9uIG1ha2VUYWJsZVJlY29yZCh0YWcsIGNoZWNrU3VtLCBvZmZzZXQsIGxlbmd0aCkge1xuICAgIHJldHVybiBuZXcgdGFibGUuUmVjb3JkKCdUYWJsZSBSZWNvcmQnLCBbXG4gICAgICAgIHtuYW1lOiAndGFnJywgdHlwZTogJ1RBRycsIHZhbHVlOiB0YWcgIT09IHVuZGVmaW5lZCA/IHRhZyA6ICcnfSxcbiAgICAgICAge25hbWU6ICdjaGVja1N1bScsIHR5cGU6ICdVTE9ORycsIHZhbHVlOiBjaGVja1N1bSAhPT0gdW5kZWZpbmVkID8gY2hlY2tTdW0gOiAwfSxcbiAgICAgICAge25hbWU6ICdvZmZzZXQnLCB0eXBlOiAnVUxPTkcnLCB2YWx1ZTogb2Zmc2V0ICE9PSB1bmRlZmluZWQgPyBvZmZzZXQgOiAwfSxcbiAgICAgICAge25hbWU6ICdsZW5ndGgnLCB0eXBlOiAnVUxPTkcnLCB2YWx1ZTogbGVuZ3RoICE9PSB1bmRlZmluZWQgPyBsZW5ndGggOiAwfVxuICAgIF0pO1xufVxuXG5mdW5jdGlvbiBtYWtlU2ZudFRhYmxlKHRhYmxlcykge1xuICAgIHZhciBzZm50ID0gbmV3IHRhYmxlLlRhYmxlKCdzZm50JywgW1xuICAgICAgICB7bmFtZTogJ3ZlcnNpb24nLCB0eXBlOiAnVEFHJywgdmFsdWU6ICdPVFRPJ30sXG4gICAgICAgIHtuYW1lOiAnbnVtVGFibGVzJywgdHlwZTogJ1VTSE9SVCcsIHZhbHVlOiAwfSxcbiAgICAgICAge25hbWU6ICdzZWFyY2hSYW5nZScsIHR5cGU6ICdVU0hPUlQnLCB2YWx1ZTogMH0sXG4gICAgICAgIHtuYW1lOiAnZW50cnlTZWxlY3RvcicsIHR5cGU6ICdVU0hPUlQnLCB2YWx1ZTogMH0sXG4gICAgICAgIHtuYW1lOiAncmFuZ2VTaGlmdCcsIHR5cGU6ICdVU0hPUlQnLCB2YWx1ZTogMH1cbiAgICBdKTtcbiAgICBzZm50LnRhYmxlcyA9IHRhYmxlcztcbiAgICBzZm50Lm51bVRhYmxlcyA9IHRhYmxlcy5sZW5ndGg7XG4gICAgdmFyIGhpZ2hlc3RQb3dlck9mMiA9IE1hdGgucG93KDIsIGxvZzIoc2ZudC5udW1UYWJsZXMpKTtcbiAgICBzZm50LnNlYXJjaFJhbmdlID0gMTYgKiBoaWdoZXN0UG93ZXJPZjI7XG4gICAgc2ZudC5lbnRyeVNlbGVjdG9yID0gbG9nMihoaWdoZXN0UG93ZXJPZjIpO1xuICAgIHNmbnQucmFuZ2VTaGlmdCA9IHNmbnQubnVtVGFibGVzICogMTYgLSBzZm50LnNlYXJjaFJhbmdlO1xuXG4gICAgdmFyIHJlY29yZEZpZWxkcyA9IFtdO1xuICAgIHZhciB0YWJsZUZpZWxkcyA9IFtdO1xuXG4gICAgdmFyIG9mZnNldCA9IHNmbnQuc2l6ZU9mKCkgKyAobWFrZVRhYmxlUmVjb3JkKCkuc2l6ZU9mKCkgKiBzZm50Lm51bVRhYmxlcyk7XG4gICAgd2hpbGUgKG9mZnNldCAlIDQgIT09IDApIHtcbiAgICAgICAgb2Zmc2V0ICs9IDE7XG4gICAgICAgIHRhYmxlRmllbGRzLnB1c2goe25hbWU6ICdwYWRkaW5nJywgdHlwZTogJ0JZVEUnLCB2YWx1ZTogMH0pO1xuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGFibGVzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICAgIHZhciB0ID0gdGFibGVzW2ldO1xuICAgICAgICBjaGVjay5hcmd1bWVudCh0LnRhYmxlTmFtZS5sZW5ndGggPT09IDQsICdUYWJsZSBuYW1lJyArIHQudGFibGVOYW1lICsgJyBpcyBpbnZhbGlkLicpO1xuICAgICAgICB2YXIgdGFibGVMZW5ndGggPSB0LnNpemVPZigpO1xuICAgICAgICB2YXIgdGFibGVSZWNvcmQgPSBtYWtlVGFibGVSZWNvcmQodC50YWJsZU5hbWUsIGNvbXB1dGVDaGVja1N1bSh0LmVuY29kZSgpKSwgb2Zmc2V0LCB0YWJsZUxlbmd0aCk7XG4gICAgICAgIHJlY29yZEZpZWxkcy5wdXNoKHtuYW1lOiB0YWJsZVJlY29yZC50YWcgKyAnIFRhYmxlIFJlY29yZCcsIHR5cGU6ICdSRUNPUkQnLCB2YWx1ZTogdGFibGVSZWNvcmR9KTtcbiAgICAgICAgdGFibGVGaWVsZHMucHVzaCh7bmFtZTogdC50YWJsZU5hbWUgKyAnIHRhYmxlJywgdHlwZTogJ1JFQ09SRCcsIHZhbHVlOiB0fSk7XG4gICAgICAgIG9mZnNldCArPSB0YWJsZUxlbmd0aDtcbiAgICAgICAgY2hlY2suYXJndW1lbnQoIWlzTmFOKG9mZnNldCksICdTb21ldGhpbmcgd2VudCB3cm9uZyBjYWxjdWxhdGluZyB0aGUgb2Zmc2V0LicpO1xuICAgICAgICB3aGlsZSAob2Zmc2V0ICUgNCAhPT0gMCkge1xuICAgICAgICAgICAgb2Zmc2V0ICs9IDE7XG4gICAgICAgICAgICB0YWJsZUZpZWxkcy5wdXNoKHtuYW1lOiAncGFkZGluZycsIHR5cGU6ICdCWVRFJywgdmFsdWU6IDB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFRhYmxlIHJlY29yZHMgbmVlZCB0byBiZSBzb3J0ZWQgYWxwaGFiZXRpY2FsbHkuXG4gICAgcmVjb3JkRmllbGRzLnNvcnQoZnVuY3Rpb24ocjEsIHIyKSB7XG4gICAgICAgIGlmIChyMS52YWx1ZS50YWcgPiByMi52YWx1ZS50YWcpIHtcbiAgICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICBzZm50LmZpZWxkcyA9IHNmbnQuZmllbGRzLmNvbmNhdChyZWNvcmRGaWVsZHMpO1xuICAgIHNmbnQuZmllbGRzID0gc2ZudC5maWVsZHMuY29uY2F0KHRhYmxlRmllbGRzKTtcbiAgICByZXR1cm4gc2ZudDtcbn1cblxuLy8gR2V0IHRoZSBtZXRyaWNzIGZvciBhIGNoYXJhY3Rlci4gSWYgdGhlIHN0cmluZyBoYXMgbW9yZSB0aGFuIG9uZSBjaGFyYWN0ZXJcbi8vIHRoaXMgZnVuY3Rpb24gcmV0dXJucyBtZXRyaWNzIGZvciB0aGUgZmlyc3QgYXZhaWxhYmxlIGNoYXJhY3Rlci5cbi8vIFlvdSBjYW4gcHJvdmlkZSBvcHRpb25hbCBmYWxsYmFjayBtZXRyaWNzIGlmIG5vIGNoYXJhY3RlcnMgYXJlIGF2YWlsYWJsZS5cbmZ1bmN0aW9uIG1ldHJpY3NGb3JDaGFyKGZvbnQsIGNoYXJzLCBub3RGb3VuZE1ldHJpY3MpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoYXJzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICAgIHZhciBnbHlwaEluZGV4ID0gZm9udC5jaGFyVG9HbHlwaEluZGV4KGNoYXJzW2ldKTtcbiAgICAgICAgaWYgKGdseXBoSW5kZXggPiAwKSB7XG4gICAgICAgICAgICB2YXIgZ2x5cGggPSBmb250LmdseXBocy5nZXQoZ2x5cGhJbmRleCk7XG4gICAgICAgICAgICByZXR1cm4gZ2x5cGguZ2V0TWV0cmljcygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG5vdEZvdW5kTWV0cmljcztcbn1cblxuZnVuY3Rpb24gYXZlcmFnZSh2cykge1xuICAgIHZhciBzdW0gPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdnMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgICAgc3VtICs9IHZzW2ldO1xuICAgIH1cblxuICAgIHJldHVybiBzdW0gLyB2cy5sZW5ndGg7XG59XG5cbi8vIENvbnZlcnQgdGhlIGZvbnQgb2JqZWN0IHRvIGEgU0ZOVCBkYXRhIHN0cnVjdHVyZS5cbi8vIFRoaXMgc3RydWN0dXJlIGNvbnRhaW5zIGFsbCB0aGUgbmVjZXNzYXJ5IHRhYmxlcyBhbmQgbWV0YWRhdGEgdG8gY3JlYXRlIGEgYmluYXJ5IE9URiBmaWxlLlxuZnVuY3Rpb24gZm9udFRvU2ZudFRhYmxlKGZvbnQpIHtcbiAgICB2YXIgeE1pbnMgPSBbXTtcbiAgICB2YXIgeU1pbnMgPSBbXTtcbiAgICB2YXIgeE1heHMgPSBbXTtcbiAgICB2YXIgeU1heHMgPSBbXTtcbiAgICB2YXIgYWR2YW5jZVdpZHRocyA9IFtdO1xuICAgIHZhciBsZWZ0U2lkZUJlYXJpbmdzID0gW107XG4gICAgdmFyIHJpZ2h0U2lkZUJlYXJpbmdzID0gW107XG4gICAgdmFyIGZpcnN0Q2hhckluZGV4O1xuICAgIHZhciBsYXN0Q2hhckluZGV4ID0gMDtcbiAgICB2YXIgdWxVbmljb2RlUmFuZ2UxID0gMDtcbiAgICB2YXIgdWxVbmljb2RlUmFuZ2UyID0gMDtcbiAgICB2YXIgdWxVbmljb2RlUmFuZ2UzID0gMDtcbiAgICB2YXIgdWxVbmljb2RlUmFuZ2U0ID0gMDtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZm9udC5nbHlwaHMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgICAgdmFyIGdseXBoID0gZm9udC5nbHlwaHMuZ2V0KGkpO1xuICAgICAgICB2YXIgdW5pY29kZSA9IGdseXBoLnVuaWNvZGUgfCAwO1xuXG4gICAgICAgIGlmIChpc05hTihnbHlwaC5hZHZhbmNlV2lkdGgpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0dseXBoICcgKyBnbHlwaC5uYW1lICsgJyAoJyArIGkgKyAnKTogYWR2YW5jZVdpZHRoIGlzIG5vdCBhIG51bWJlci4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChmaXJzdENoYXJJbmRleCA+IHVuaWNvZGUgfHwgZmlyc3RDaGFySW5kZXggPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgLy8gaWdub3JlIC5ub3RkZWYgY2hhclxuICAgICAgICAgICAgaWYgKHVuaWNvZGUgPiAwKSB7XG4gICAgICAgICAgICAgICAgZmlyc3RDaGFySW5kZXggPSB1bmljb2RlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGxhc3RDaGFySW5kZXggPCB1bmljb2RlKSB7XG4gICAgICAgICAgICBsYXN0Q2hhckluZGV4ID0gdW5pY29kZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBwb3NpdGlvbiA9IG9zMi5nZXRVbmljb2RlUmFuZ2UodW5pY29kZSk7XG4gICAgICAgIGlmIChwb3NpdGlvbiA8IDMyKSB7XG4gICAgICAgICAgICB1bFVuaWNvZGVSYW5nZTEgfD0gMSA8PCBwb3NpdGlvbjtcbiAgICAgICAgfSBlbHNlIGlmIChwb3NpdGlvbiA8IDY0KSB7XG4gICAgICAgICAgICB1bFVuaWNvZGVSYW5nZTIgfD0gMSA8PCBwb3NpdGlvbiAtIDMyO1xuICAgICAgICB9IGVsc2UgaWYgKHBvc2l0aW9uIDwgOTYpIHtcbiAgICAgICAgICAgIHVsVW5pY29kZVJhbmdlMyB8PSAxIDw8IHBvc2l0aW9uIC0gNjQ7XG4gICAgICAgIH0gZWxzZSBpZiAocG9zaXRpb24gPCAxMjMpIHtcbiAgICAgICAgICAgIHVsVW5pY29kZVJhbmdlNCB8PSAxIDw8IHBvc2l0aW9uIC0gOTY7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1VuaWNvZGUgcmFuZ2VzIGJpdHMgPiAxMjMgYXJlIHJlc2VydmVkIGZvciBpbnRlcm5hbCB1c2FnZScpO1xuICAgICAgICB9XG4gICAgICAgIC8vIFNraXAgbm9uLWltcG9ydGFudCBjaGFyYWN0ZXJzLlxuICAgICAgICBpZiAoZ2x5cGgubmFtZSA9PT0gJy5ub3RkZWYnKSBjb250aW51ZTtcbiAgICAgICAgdmFyIG1ldHJpY3MgPSBnbHlwaC5nZXRNZXRyaWNzKCk7XG4gICAgICAgIHhNaW5zLnB1c2gobWV0cmljcy54TWluKTtcbiAgICAgICAgeU1pbnMucHVzaChtZXRyaWNzLnlNaW4pO1xuICAgICAgICB4TWF4cy5wdXNoKG1ldHJpY3MueE1heCk7XG4gICAgICAgIHlNYXhzLnB1c2gobWV0cmljcy55TWF4KTtcbiAgICAgICAgbGVmdFNpZGVCZWFyaW5ncy5wdXNoKG1ldHJpY3MubGVmdFNpZGVCZWFyaW5nKTtcbiAgICAgICAgcmlnaHRTaWRlQmVhcmluZ3MucHVzaChtZXRyaWNzLnJpZ2h0U2lkZUJlYXJpbmcpO1xuICAgICAgICBhZHZhbmNlV2lkdGhzLnB1c2goZ2x5cGguYWR2YW5jZVdpZHRoKTtcbiAgICB9XG5cbiAgICB2YXIgZ2xvYmFscyA9IHtcbiAgICAgICAgeE1pbjogTWF0aC5taW4uYXBwbHkobnVsbCwgeE1pbnMpLFxuICAgICAgICB5TWluOiBNYXRoLm1pbi5hcHBseShudWxsLCB5TWlucyksXG4gICAgICAgIHhNYXg6IE1hdGgubWF4LmFwcGx5KG51bGwsIHhNYXhzKSxcbiAgICAgICAgeU1heDogTWF0aC5tYXguYXBwbHkobnVsbCwgeU1heHMpLFxuICAgICAgICBhZHZhbmNlV2lkdGhNYXg6IE1hdGgubWF4LmFwcGx5KG51bGwsIGFkdmFuY2VXaWR0aHMpLFxuICAgICAgICBhZHZhbmNlV2lkdGhBdmc6IGF2ZXJhZ2UoYWR2YW5jZVdpZHRocyksXG4gICAgICAgIG1pbkxlZnRTaWRlQmVhcmluZzogTWF0aC5taW4uYXBwbHkobnVsbCwgbGVmdFNpZGVCZWFyaW5ncyksXG4gICAgICAgIG1heExlZnRTaWRlQmVhcmluZzogTWF0aC5tYXguYXBwbHkobnVsbCwgbGVmdFNpZGVCZWFyaW5ncyksXG4gICAgICAgIG1pblJpZ2h0U2lkZUJlYXJpbmc6IE1hdGgubWluLmFwcGx5KG51bGwsIHJpZ2h0U2lkZUJlYXJpbmdzKVxuICAgIH07XG4gICAgZ2xvYmFscy5hc2NlbmRlciA9IGZvbnQuYXNjZW5kZXI7XG4gICAgZ2xvYmFscy5kZXNjZW5kZXIgPSBmb250LmRlc2NlbmRlcjtcblxuICAgIHZhciBoZWFkVGFibGUgPSBoZWFkLm1ha2Uoe1xuICAgICAgICBmbGFnczogMywgLy8gMDAwMDAwMTEgKGJhc2VsaW5lIGZvciBmb250IGF0IHk9MDsgbGVmdCBzaWRlYmVhcmluZyBwb2ludCBhdCB4PTApXG4gICAgICAgIHVuaXRzUGVyRW06IGZvbnQudW5pdHNQZXJFbSxcbiAgICAgICAgeE1pbjogZ2xvYmFscy54TWluLFxuICAgICAgICB5TWluOiBnbG9iYWxzLnlNaW4sXG4gICAgICAgIHhNYXg6IGdsb2JhbHMueE1heCxcbiAgICAgICAgeU1heDogZ2xvYmFscy55TWF4LFxuICAgICAgICBsb3dlc3RSZWNQUEVNOiAzLFxuICAgICAgICBjcmVhdGVkVGltZXN0YW1wOiBmb250LmNyZWF0ZWRUaW1lc3RhbXBcbiAgICB9KTtcblxuICAgIHZhciBoaGVhVGFibGUgPSBoaGVhLm1ha2Uoe1xuICAgICAgICBhc2NlbmRlcjogZ2xvYmFscy5hc2NlbmRlcixcbiAgICAgICAgZGVzY2VuZGVyOiBnbG9iYWxzLmRlc2NlbmRlcixcbiAgICAgICAgYWR2YW5jZVdpZHRoTWF4OiBnbG9iYWxzLmFkdmFuY2VXaWR0aE1heCxcbiAgICAgICAgbWluTGVmdFNpZGVCZWFyaW5nOiBnbG9iYWxzLm1pbkxlZnRTaWRlQmVhcmluZyxcbiAgICAgICAgbWluUmlnaHRTaWRlQmVhcmluZzogZ2xvYmFscy5taW5SaWdodFNpZGVCZWFyaW5nLFxuICAgICAgICB4TWF4RXh0ZW50OiBnbG9iYWxzLm1heExlZnRTaWRlQmVhcmluZyArIChnbG9iYWxzLnhNYXggLSBnbG9iYWxzLnhNaW4pLFxuICAgICAgICBudW1iZXJPZkhNZXRyaWNzOiBmb250LmdseXBocy5sZW5ndGhcbiAgICB9KTtcblxuICAgIHZhciBtYXhwVGFibGUgPSBtYXhwLm1ha2UoZm9udC5nbHlwaHMubGVuZ3RoKTtcblxuICAgIHZhciBvczJUYWJsZSA9IG9zMi5tYWtlKHtcbiAgICAgICAgeEF2Z0NoYXJXaWR0aDogTWF0aC5yb3VuZChnbG9iYWxzLmFkdmFuY2VXaWR0aEF2ZyksXG4gICAgICAgIHVzV2VpZ2h0Q2xhc3M6IGZvbnQudGFibGVzLm9zMi51c1dlaWdodENsYXNzLFxuICAgICAgICB1c1dpZHRoQ2xhc3M6IGZvbnQudGFibGVzLm9zMi51c1dpZHRoQ2xhc3MsXG4gICAgICAgIHVzRmlyc3RDaGFySW5kZXg6IGZpcnN0Q2hhckluZGV4LFxuICAgICAgICB1c0xhc3RDaGFySW5kZXg6IGxhc3RDaGFySW5kZXgsXG4gICAgICAgIHVsVW5pY29kZVJhbmdlMTogdWxVbmljb2RlUmFuZ2UxLFxuICAgICAgICB1bFVuaWNvZGVSYW5nZTI6IHVsVW5pY29kZVJhbmdlMixcbiAgICAgICAgdWxVbmljb2RlUmFuZ2UzOiB1bFVuaWNvZGVSYW5nZTMsXG4gICAgICAgIHVsVW5pY29kZVJhbmdlNDogdWxVbmljb2RlUmFuZ2U0LFxuICAgICAgICBmc1NlbGVjdGlvbjogZm9udC50YWJsZXMub3MyLmZzU2VsZWN0aW9uLCAvLyBSRUdVTEFSXG4gICAgICAgIC8vIFNlZSBodHRwOi8vdHlwb3BoaWxlLmNvbS9ub2RlLzEzMDgxIGZvciBtb3JlIGluZm8gb24gdmVydGljYWwgbWV0cmljcy5cbiAgICAgICAgLy8gV2UgZ2V0IG1ldHJpY3MgZm9yIHR5cGljYWwgY2hhcmFjdGVycyAoc3VjaCBhcyBcInhcIiBmb3IgeEhlaWdodCkuXG4gICAgICAgIC8vIFdlIHByb3ZpZGUgc29tZSBmYWxsYmFjayBjaGFyYWN0ZXJzIGlmIGNoYXJhY3RlcnMgYXJlIHVuYXZhaWxhYmxlOiB0aGVpclxuICAgICAgICAvLyBvcmRlcmluZyB3YXMgY2hvc2VuIGV4cGVyaW1lbnRhbGx5LlxuICAgICAgICBzVHlwb0FzY2VuZGVyOiBnbG9iYWxzLmFzY2VuZGVyLFxuICAgICAgICBzVHlwb0Rlc2NlbmRlcjogZ2xvYmFscy5kZXNjZW5kZXIsXG4gICAgICAgIHNUeXBvTGluZUdhcDogMCxcbiAgICAgICAgdXNXaW5Bc2NlbnQ6IGdsb2JhbHMueU1heCxcbiAgICAgICAgdXNXaW5EZXNjZW50OiBNYXRoLmFicyhnbG9iYWxzLnlNaW4pLFxuICAgICAgICB1bENvZGVQYWdlUmFuZ2UxOiAxLCAvLyBGSVhNRTogaGFyZC1jb2RlIExhdGluIDEgc3VwcG9ydCBmb3Igbm93XG4gICAgICAgIHN4SGVpZ2h0OiBtZXRyaWNzRm9yQ2hhcihmb250LCAneHl2dycsIHt5TWF4OiBNYXRoLnJvdW5kKGdsb2JhbHMuYXNjZW5kZXIgLyAyKX0pLnlNYXgsXG4gICAgICAgIHNDYXBIZWlnaHQ6IG1ldHJpY3NGb3JDaGFyKGZvbnQsICdISUtMRUZKTU5UWkJEUFJBR09RU1VWV1hZJywgZ2xvYmFscykueU1heCxcbiAgICAgICAgdXNEZWZhdWx0Q2hhcjogZm9udC5oYXNDaGFyKCcgJykgPyAzMiA6IDAsIC8vIFVzZSBzcGFjZSBhcyB0aGUgZGVmYXVsdCBjaGFyYWN0ZXIsIGlmIGF2YWlsYWJsZS5cbiAgICAgICAgdXNCcmVha0NoYXI6IGZvbnQuaGFzQ2hhcignICcpID8gMzIgOiAwIC8vIFVzZSBzcGFjZSBhcyB0aGUgYnJlYWsgY2hhcmFjdGVyLCBpZiBhdmFpbGFibGUuXG4gICAgfSk7XG5cbiAgICB2YXIgaG10eFRhYmxlID0gaG10eC5tYWtlKGZvbnQuZ2x5cGhzKTtcbiAgICB2YXIgY21hcFRhYmxlID0gY21hcC5tYWtlKGZvbnQuZ2x5cGhzKTtcblxuICAgIHZhciBlbmdsaXNoRmFtaWx5TmFtZSA9IGZvbnQuZ2V0RW5nbGlzaE5hbWUoJ2ZvbnRGYW1pbHknKTtcbiAgICB2YXIgZW5nbGlzaFN0eWxlTmFtZSA9IGZvbnQuZ2V0RW5nbGlzaE5hbWUoJ2ZvbnRTdWJmYW1pbHknKTtcbiAgICB2YXIgZW5nbGlzaEZ1bGxOYW1lID0gZW5nbGlzaEZhbWlseU5hbWUgKyAnICcgKyBlbmdsaXNoU3R5bGVOYW1lO1xuICAgIHZhciBwb3N0U2NyaXB0TmFtZSA9IGZvbnQuZ2V0RW5nbGlzaE5hbWUoJ3Bvc3RTY3JpcHROYW1lJyk7XG4gICAgaWYgKCFwb3N0U2NyaXB0TmFtZSkge1xuICAgICAgICBwb3N0U2NyaXB0TmFtZSA9IGVuZ2xpc2hGYW1pbHlOYW1lLnJlcGxhY2UoL1xccy9nLCAnJykgKyAnLScgKyBlbmdsaXNoU3R5bGVOYW1lO1xuICAgIH1cblxuICAgIHZhciBuYW1lcyA9IHt9O1xuICAgIGZvciAodmFyIG4gaW4gZm9udC5uYW1lcykge1xuICAgICAgICBuYW1lc1tuXSA9IGZvbnQubmFtZXNbbl07XG4gICAgfVxuXG4gICAgaWYgKCFuYW1lcy51bmlxdWVJRCkge1xuICAgICAgICBuYW1lcy51bmlxdWVJRCA9IHtlbjogZm9udC5nZXRFbmdsaXNoTmFtZSgnbWFudWZhY3R1cmVyJykgKyAnOicgKyBlbmdsaXNoRnVsbE5hbWV9O1xuICAgIH1cblxuICAgIGlmICghbmFtZXMucG9zdFNjcmlwdE5hbWUpIHtcbiAgICAgICAgbmFtZXMucG9zdFNjcmlwdE5hbWUgPSB7ZW46IHBvc3RTY3JpcHROYW1lfTtcbiAgICB9XG5cbiAgICBpZiAoIW5hbWVzLnByZWZlcnJlZEZhbWlseSkge1xuICAgICAgICBuYW1lcy5wcmVmZXJyZWRGYW1pbHkgPSBmb250Lm5hbWVzLmZvbnRGYW1pbHk7XG4gICAgfVxuXG4gICAgaWYgKCFuYW1lcy5wcmVmZXJyZWRTdWJmYW1pbHkpIHtcbiAgICAgICAgbmFtZXMucHJlZmVycmVkU3ViZmFtaWx5ID0gZm9udC5uYW1lcy5mb250U3ViZmFtaWx5O1xuICAgIH1cblxuICAgIHZhciBsYW5ndWFnZVRhZ3MgPSBbXTtcbiAgICB2YXIgbmFtZVRhYmxlID0gX25hbWUubWFrZShuYW1lcywgbGFuZ3VhZ2VUYWdzKTtcbiAgICB2YXIgbHRhZ1RhYmxlID0gKGxhbmd1YWdlVGFncy5sZW5ndGggPiAwID8gbHRhZy5tYWtlKGxhbmd1YWdlVGFncykgOiB1bmRlZmluZWQpO1xuXG4gICAgdmFyIHBvc3RUYWJsZSA9IHBvc3QubWFrZSgpO1xuICAgIHZhciBjZmZUYWJsZSA9IGNmZi5tYWtlKGZvbnQuZ2x5cGhzLCB7XG4gICAgICAgIHZlcnNpb246IGZvbnQuZ2V0RW5nbGlzaE5hbWUoJ3ZlcnNpb24nKSxcbiAgICAgICAgZnVsbE5hbWU6IGVuZ2xpc2hGdWxsTmFtZSxcbiAgICAgICAgZmFtaWx5TmFtZTogZW5nbGlzaEZhbWlseU5hbWUsXG4gICAgICAgIHdlaWdodE5hbWU6IGVuZ2xpc2hTdHlsZU5hbWUsXG4gICAgICAgIHBvc3RTY3JpcHROYW1lOiBwb3N0U2NyaXB0TmFtZSxcbiAgICAgICAgdW5pdHNQZXJFbTogZm9udC51bml0c1BlckVtLFxuICAgICAgICBmb250QkJveDogWzAsIGdsb2JhbHMueU1pbiwgZ2xvYmFscy5hc2NlbmRlciwgZ2xvYmFscy5hZHZhbmNlV2lkdGhNYXhdXG4gICAgfSk7XG5cbiAgICB2YXIgbWV0YVRhYmxlID0gKGZvbnQubWV0YXMgJiYgT2JqZWN0LmtleXMoZm9udC5tZXRhcykubGVuZ3RoID4gMCkgPyBtZXRhLm1ha2UoZm9udC5tZXRhcykgOiB1bmRlZmluZWQ7XG5cbiAgICAvLyBUaGUgb3JkZXIgZG9lcyBub3QgbWF0dGVyIGJlY2F1c2UgbWFrZVNmbnRUYWJsZSgpIHdpbGwgc29ydCB0aGVtLlxuICAgIHZhciB0YWJsZXMgPSBbaGVhZFRhYmxlLCBoaGVhVGFibGUsIG1heHBUYWJsZSwgb3MyVGFibGUsIG5hbWVUYWJsZSwgY21hcFRhYmxlLCBwb3N0VGFibGUsIGNmZlRhYmxlLCBobXR4VGFibGVdO1xuICAgIGlmIChsdGFnVGFibGUpIHtcbiAgICAgICAgdGFibGVzLnB1c2gobHRhZ1RhYmxlKTtcbiAgICB9XG4gICAgLy8gT3B0aW9uYWwgdGFibGVzXG4gICAgaWYgKGZvbnQudGFibGVzLmdzdWIpIHtcbiAgICAgICAgdGFibGVzLnB1c2goZ3N1Yi5tYWtlKGZvbnQudGFibGVzLmdzdWIpKTtcbiAgICB9XG4gICAgaWYgKG1ldGFUYWJsZSkge1xuICAgICAgICB0YWJsZXMucHVzaChtZXRhVGFibGUpO1xuICAgIH1cblxuICAgIHZhciBzZm50VGFibGUgPSBtYWtlU2ZudFRhYmxlKHRhYmxlcyk7XG5cbiAgICAvLyBDb21wdXRlIHRoZSBmb250J3MgY2hlY2tTdW0gYW5kIHN0b3JlIGl0IGluIGhlYWQuY2hlY2tTdW1BZGp1c3RtZW50LlxuICAgIHZhciBieXRlcyA9IHNmbnRUYWJsZS5lbmNvZGUoKTtcbiAgICB2YXIgY2hlY2tTdW0gPSBjb21wdXRlQ2hlY2tTdW0oYnl0ZXMpO1xuICAgIHZhciB0YWJsZUZpZWxkcyA9IHNmbnRUYWJsZS5maWVsZHM7XG4gICAgdmFyIGNoZWNrU3VtQWRqdXN0ZWQgPSBmYWxzZTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgdGFibGVGaWVsZHMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgICAgaWYgKHRhYmxlRmllbGRzW2ldLm5hbWUgPT09ICdoZWFkIHRhYmxlJykge1xuICAgICAgICAgICAgdGFibGVGaWVsZHNbaV0udmFsdWUuY2hlY2tTdW1BZGp1c3RtZW50ID0gMHhCMUIwQUZCQSAtIGNoZWNrU3VtO1xuICAgICAgICAgICAgY2hlY2tTdW1BZGp1c3RlZCA9IHRydWU7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlmICghY2hlY2tTdW1BZGp1c3RlZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvdWxkIG5vdCBmaW5kIGhlYWQgdGFibGUgd2l0aCBjaGVja1N1bSB0byBhZGp1c3QuJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNmbnRUYWJsZTtcbn1cblxuZXhwb3J0cy5jb21wdXRlQ2hlY2tTdW0gPSBjb21wdXRlQ2hlY2tTdW07XG5leHBvcnRzLm1ha2UgPSBtYWtlU2ZudFRhYmxlO1xuZXhwb3J0cy5mb250VG9UYWJsZSA9IGZvbnRUb1NmbnRUYWJsZTtcbiIsIi8vIERhdGEgdHlwZXMgdXNlZCBpbiB0aGUgT3BlblR5cGUgZm9udCBmaWxlLlxuLy8gQWxsIE9wZW5UeXBlIGZvbnRzIHVzZSBNb3Rvcm9sYS1zdHlsZSBieXRlIG9yZGVyaW5nIChCaWcgRW5kaWFuKVxuXG4vKiBnbG9iYWwgV2Vha01hcCAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBjaGVjayA9IHJlcXVpcmUoJy4vY2hlY2snKTtcblxudmFyIExJTUlUMTYgPSAzMjc2ODsgLy8gVGhlIGxpbWl0IGF0IHdoaWNoIGEgMTYtYml0IG51bWJlciBzd2l0Y2hlcyBzaWducyA9PSAyXjE1XG52YXIgTElNSVQzMiA9IDIxNDc0ODM2NDg7IC8vIFRoZSBsaW1pdCBhdCB3aGljaCBhIDMyLWJpdCBudW1iZXIgc3dpdGNoZXMgc2lnbnMgPT0gMiBeIDMxXG5cbi8qKlxuICogQGV4cG9ydHMgb3BlbnR5cGUuZGVjb2RlXG4gKiBAY2xhc3NcbiAqL1xudmFyIGRlY29kZSA9IHt9O1xuLyoqXG4gKiBAZXhwb3J0cyBvcGVudHlwZS5lbmNvZGVcbiAqIEBjbGFzc1xuICovXG52YXIgZW5jb2RlID0ge307XG4vKipcbiAqIEBleHBvcnRzIG9wZW50eXBlLnNpemVPZlxuICogQGNsYXNzXG4gKi9cbnZhciBzaXplT2YgPSB7fTtcblxuLy8gUmV0dXJuIGEgZnVuY3Rpb24gdGhhdCBhbHdheXMgcmV0dXJucyB0aGUgc2FtZSB2YWx1ZS5cbmZ1bmN0aW9uIGNvbnN0YW50KHYpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB2O1xuICAgIH07XG59XG5cbi8vIE9wZW5UeXBlIGRhdGEgdHlwZXMgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbi8qKlxuICogQ29udmVydCBhbiA4LWJpdCB1bnNpZ25lZCBpbnRlZ2VyIHRvIGEgbGlzdCBvZiAxIGJ5dGUuXG4gKiBAcGFyYW0ge251bWJlcn1cbiAqIEByZXR1cm5zIHtBcnJheX1cbiAqL1xuZW5jb2RlLkJZVEUgPSBmdW5jdGlvbih2KSB7XG4gICAgY2hlY2suYXJndW1lbnQodiA+PSAwICYmIHYgPD0gMjU1LCAnQnl0ZSB2YWx1ZSBzaG91bGQgYmUgYmV0d2VlbiAwIGFuZCAyNTUuJyk7XG4gICAgcmV0dXJuIFt2XTtcbn07XG4vKipcbiAqIEBjb25zdGFudFxuICogQHR5cGUge251bWJlcn1cbiAqL1xuc2l6ZU9mLkJZVEUgPSBjb25zdGFudCgxKTtcblxuLyoqXG4gKiBDb252ZXJ0IGEgOC1iaXQgc2lnbmVkIGludGVnZXIgdG8gYSBsaXN0IG9mIDEgYnl0ZS5cbiAqIEBwYXJhbSB7c3RyaW5nfVxuICogQHJldHVybnMge0FycmF5fVxuICovXG5lbmNvZGUuQ0hBUiA9IGZ1bmN0aW9uKHYpIHtcbiAgICByZXR1cm4gW3YuY2hhckNvZGVBdCgwKV07XG59O1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQHR5cGUge251bWJlcn1cbiAqL1xuc2l6ZU9mLkNIQVIgPSBjb25zdGFudCgxKTtcblxuLyoqXG4gKiBDb252ZXJ0IGFuIEFTQ0lJIHN0cmluZyB0byBhIGxpc3Qgb2YgYnl0ZXMuXG4gKiBAcGFyYW0ge3N0cmluZ31cbiAqIEByZXR1cm5zIHtBcnJheX1cbiAqL1xuZW5jb2RlLkNIQVJBUlJBWSA9IGZ1bmN0aW9uKHYpIHtcbiAgICB2YXIgYiA9IFtdO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdi5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICBiW2ldID0gdi5jaGFyQ29kZUF0KGkpO1xuICAgIH1cblxuICAgIHJldHVybiBiO1xufTtcblxuLyoqXG4gKiBAcGFyYW0ge0FycmF5fVxuICogQHJldHVybnMge251bWJlcn1cbiAqL1xuc2l6ZU9mLkNIQVJBUlJBWSA9IGZ1bmN0aW9uKHYpIHtcbiAgICByZXR1cm4gdi5sZW5ndGg7XG59O1xuXG4vKipcbiAqIENvbnZlcnQgYSAxNi1iaXQgdW5zaWduZWQgaW50ZWdlciB0byBhIGxpc3Qgb2YgMiBieXRlcy5cbiAqIEBwYXJhbSB7bnVtYmVyfVxuICogQHJldHVybnMge0FycmF5fVxuICovXG5lbmNvZGUuVVNIT1JUID0gZnVuY3Rpb24odikge1xuICAgIHJldHVybiBbKHYgPj4gOCkgJiAweEZGLCB2ICYgMHhGRl07XG59O1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQHR5cGUge251bWJlcn1cbiAqL1xuc2l6ZU9mLlVTSE9SVCA9IGNvbnN0YW50KDIpO1xuXG4vKipcbiAqIENvbnZlcnQgYSAxNi1iaXQgc2lnbmVkIGludGVnZXIgdG8gYSBsaXN0IG9mIDIgYnl0ZXMuXG4gKiBAcGFyYW0ge251bWJlcn1cbiAqIEByZXR1cm5zIHtBcnJheX1cbiAqL1xuZW5jb2RlLlNIT1JUID0gZnVuY3Rpb24odikge1xuICAgIC8vIFR3bydzIGNvbXBsZW1lbnRcbiAgICBpZiAodiA+PSBMSU1JVDE2KSB7XG4gICAgICAgIHYgPSAtKDIgKiBMSU1JVDE2IC0gdik7XG4gICAgfVxuXG4gICAgcmV0dXJuIFsodiA+PiA4KSAmIDB4RkYsIHYgJiAweEZGXTtcbn07XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAdHlwZSB7bnVtYmVyfVxuICovXG5zaXplT2YuU0hPUlQgPSBjb25zdGFudCgyKTtcblxuLyoqXG4gKiBDb252ZXJ0IGEgMjQtYml0IHVuc2lnbmVkIGludGVnZXIgdG8gYSBsaXN0IG9mIDMgYnl0ZXMuXG4gKiBAcGFyYW0ge251bWJlcn1cbiAqIEByZXR1cm5zIHtBcnJheX1cbiAqL1xuZW5jb2RlLlVJTlQyNCA9IGZ1bmN0aW9uKHYpIHtcbiAgICByZXR1cm4gWyh2ID4+IDE2KSAmIDB4RkYsICh2ID4+IDgpICYgMHhGRiwgdiAmIDB4RkZdO1xufTtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEB0eXBlIHtudW1iZXJ9XG4gKi9cbnNpemVPZi5VSU5UMjQgPSBjb25zdGFudCgzKTtcblxuLyoqXG4gKiBDb252ZXJ0IGEgMzItYml0IHVuc2lnbmVkIGludGVnZXIgdG8gYSBsaXN0IG9mIDQgYnl0ZXMuXG4gKiBAcGFyYW0ge251bWJlcn1cbiAqIEByZXR1cm5zIHtBcnJheX1cbiAqL1xuZW5jb2RlLlVMT05HID0gZnVuY3Rpb24odikge1xuICAgIHJldHVybiBbKHYgPj4gMjQpICYgMHhGRiwgKHYgPj4gMTYpICYgMHhGRiwgKHYgPj4gOCkgJiAweEZGLCB2ICYgMHhGRl07XG59O1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQHR5cGUge251bWJlcn1cbiAqL1xuc2l6ZU9mLlVMT05HID0gY29uc3RhbnQoNCk7XG5cbi8qKlxuICogQ29udmVydCBhIDMyLWJpdCB1bnNpZ25lZCBpbnRlZ2VyIHRvIGEgbGlzdCBvZiA0IGJ5dGVzLlxuICogQHBhcmFtIHtudW1iZXJ9XG4gKiBAcmV0dXJucyB7QXJyYXl9XG4gKi9cbmVuY29kZS5MT05HID0gZnVuY3Rpb24odikge1xuICAgIC8vIFR3bydzIGNvbXBsZW1lbnRcbiAgICBpZiAodiA+PSBMSU1JVDMyKSB7XG4gICAgICAgIHYgPSAtKDIgKiBMSU1JVDMyIC0gdik7XG4gICAgfVxuXG4gICAgcmV0dXJuIFsodiA+PiAyNCkgJiAweEZGLCAodiA+PiAxNikgJiAweEZGLCAodiA+PiA4KSAmIDB4RkYsIHYgJiAweEZGXTtcbn07XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAdHlwZSB7bnVtYmVyfVxuICovXG5zaXplT2YuTE9ORyA9IGNvbnN0YW50KDQpO1xuXG5lbmNvZGUuRklYRUQgPSBlbmNvZGUuVUxPTkc7XG5zaXplT2YuRklYRUQgPSBzaXplT2YuVUxPTkc7XG5cbmVuY29kZS5GV09SRCA9IGVuY29kZS5TSE9SVDtcbnNpemVPZi5GV09SRCA9IHNpemVPZi5TSE9SVDtcblxuZW5jb2RlLlVGV09SRCA9IGVuY29kZS5VU0hPUlQ7XG5zaXplT2YuVUZXT1JEID0gc2l6ZU9mLlVTSE9SVDtcblxuLyoqXG4gKiBDb252ZXJ0IGEgMzItYml0IEFwcGxlIE1hYyB0aW1lc3RhbXAgaW50ZWdlciB0byBhIGxpc3Qgb2YgOCBieXRlcywgNjQtYml0IHRpbWVzdGFtcC5cbiAqIEBwYXJhbSB7bnVtYmVyfVxuICogQHJldHVybnMge0FycmF5fVxuICovXG5lbmNvZGUuTE9OR0RBVEVUSU1FID0gZnVuY3Rpb24odikge1xuICAgIHJldHVybiBbMCwgMCwgMCwgMCwgKHYgPj4gMjQpICYgMHhGRiwgKHYgPj4gMTYpICYgMHhGRiwgKHYgPj4gOCkgJiAweEZGLCB2ICYgMHhGRl07XG59O1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQHR5cGUge251bWJlcn1cbiAqL1xuc2l6ZU9mLkxPTkdEQVRFVElNRSA9IGNvbnN0YW50KDgpO1xuXG4vKipcbiAqIENvbnZlcnQgYSA0LWNoYXIgdGFnIHRvIGEgbGlzdCBvZiA0IGJ5dGVzLlxuICogQHBhcmFtIHtzdHJpbmd9XG4gKiBAcmV0dXJucyB7QXJyYXl9XG4gKi9cbmVuY29kZS5UQUcgPSBmdW5jdGlvbih2KSB7XG4gICAgY2hlY2suYXJndW1lbnQodi5sZW5ndGggPT09IDQsICdUYWcgc2hvdWxkIGJlIGV4YWN0bHkgNCBBU0NJSSBjaGFyYWN0ZXJzLicpO1xuICAgIHJldHVybiBbdi5jaGFyQ29kZUF0KDApLFxuICAgICAgICAgICAgdi5jaGFyQ29kZUF0KDEpLFxuICAgICAgICAgICAgdi5jaGFyQ29kZUF0KDIpLFxuICAgICAgICAgICAgdi5jaGFyQ29kZUF0KDMpXTtcbn07XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAdHlwZSB7bnVtYmVyfVxuICovXG5zaXplT2YuVEFHID0gY29uc3RhbnQoNCk7XG5cbi8vIENGRiBkYXRhIHR5cGVzIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbmVuY29kZS5DYXJkOCA9IGVuY29kZS5CWVRFO1xuc2l6ZU9mLkNhcmQ4ID0gc2l6ZU9mLkJZVEU7XG5cbmVuY29kZS5DYXJkMTYgPSBlbmNvZGUuVVNIT1JUO1xuc2l6ZU9mLkNhcmQxNiA9IHNpemVPZi5VU0hPUlQ7XG5cbmVuY29kZS5PZmZTaXplID0gZW5jb2RlLkJZVEU7XG5zaXplT2YuT2ZmU2l6ZSA9IHNpemVPZi5CWVRFO1xuXG5lbmNvZGUuU0lEID0gZW5jb2RlLlVTSE9SVDtcbnNpemVPZi5TSUQgPSBzaXplT2YuVVNIT1JUO1xuXG4vLyBDb252ZXJ0IGEgbnVtZXJpYyBvcGVyYW5kIG9yIGNoYXJzdHJpbmcgbnVtYmVyIHRvIGEgdmFyaWFibGUtc2l6ZSBsaXN0IG9mIGJ5dGVzLlxuLyoqXG4gKiBDb252ZXJ0IGEgbnVtZXJpYyBvcGVyYW5kIG9yIGNoYXJzdHJpbmcgbnVtYmVyIHRvIGEgdmFyaWFibGUtc2l6ZSBsaXN0IG9mIGJ5dGVzLlxuICogQHBhcmFtIHtudW1iZXJ9XG4gKiBAcmV0dXJucyB7QXJyYXl9XG4gKi9cbmVuY29kZS5OVU1CRVIgPSBmdW5jdGlvbih2KSB7XG4gICAgaWYgKHYgPj0gLTEwNyAmJiB2IDw9IDEwNykge1xuICAgICAgICByZXR1cm4gW3YgKyAxMzldO1xuICAgIH0gZWxzZSBpZiAodiA+PSAxMDggJiYgdiA8PSAxMTMxKSB7XG4gICAgICAgIHYgPSB2IC0gMTA4O1xuICAgICAgICByZXR1cm4gWyh2ID4+IDgpICsgMjQ3LCB2ICYgMHhGRl07XG4gICAgfSBlbHNlIGlmICh2ID49IC0xMTMxICYmIHYgPD0gLTEwOCkge1xuICAgICAgICB2ID0gLXYgLSAxMDg7XG4gICAgICAgIHJldHVybiBbKHYgPj4gOCkgKyAyNTEsIHYgJiAweEZGXTtcbiAgICB9IGVsc2UgaWYgKHYgPj0gLTMyNzY4ICYmIHYgPD0gMzI3NjcpIHtcbiAgICAgICAgcmV0dXJuIGVuY29kZS5OVU1CRVIxNih2KTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZW5jb2RlLk5VTUJFUjMyKHYpO1xuICAgIH1cbn07XG5cbi8qKlxuICogQHBhcmFtIHtudW1iZXJ9XG4gKiBAcmV0dXJucyB7bnVtYmVyfVxuICovXG5zaXplT2YuTlVNQkVSID0gZnVuY3Rpb24odikge1xuICAgIHJldHVybiBlbmNvZGUuTlVNQkVSKHYpLmxlbmd0aDtcbn07XG5cbi8qKlxuICogQ29udmVydCBhIHNpZ25lZCBudW1iZXIgYmV0d2VlbiAtMzI3NjggYW5kICszMjc2NyB0byBhIHRocmVlLWJ5dGUgdmFsdWUuXG4gKiBUaGlzIGVuc3VyZXMgd2UgYWx3YXlzIHVzZSB0aHJlZSBieXRlcywgYnV0IGlzIG5vdCB0aGUgbW9zdCBjb21wYWN0IGZvcm1hdC5cbiAqIEBwYXJhbSB7bnVtYmVyfVxuICogQHJldHVybnMge0FycmF5fVxuICovXG5lbmNvZGUuTlVNQkVSMTYgPSBmdW5jdGlvbih2KSB7XG4gICAgcmV0dXJuIFsyOCwgKHYgPj4gOCkgJiAweEZGLCB2ICYgMHhGRl07XG59O1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQHR5cGUge251bWJlcn1cbiAqL1xuc2l6ZU9mLk5VTUJFUjE2ID0gY29uc3RhbnQoMyk7XG5cbi8qKlxuICogQ29udmVydCBhIHNpZ25lZCBudW1iZXIgYmV0d2VlbiAtKDJeMzEpIGFuZCArKDJeMzEtMSkgdG8gYSBmaXZlLWJ5dGUgdmFsdWUuXG4gKiBUaGlzIGlzIHVzZWZ1bCBpZiB5b3Ugd2FudCB0byBiZSBzdXJlIHlvdSBhbHdheXMgdXNlIGZvdXIgYnl0ZXMsXG4gKiBhdCB0aGUgZXhwZW5zZSBvZiB3YXN0aW5nIGEgZmV3IGJ5dGVzIGZvciBzbWFsbGVyIG51bWJlcnMuXG4gKiBAcGFyYW0ge251bWJlcn1cbiAqIEByZXR1cm5zIHtBcnJheX1cbiAqL1xuZW5jb2RlLk5VTUJFUjMyID0gZnVuY3Rpb24odikge1xuICAgIHJldHVybiBbMjksICh2ID4+IDI0KSAmIDB4RkYsICh2ID4+IDE2KSAmIDB4RkYsICh2ID4+IDgpICYgMHhGRiwgdiAmIDB4RkZdO1xufTtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEB0eXBlIHtudW1iZXJ9XG4gKi9cbnNpemVPZi5OVU1CRVIzMiA9IGNvbnN0YW50KDUpO1xuXG4vKipcbiAqIEBwYXJhbSB7bnVtYmVyfVxuICogQHJldHVybnMge0FycmF5fVxuICovXG5lbmNvZGUuUkVBTCA9IGZ1bmN0aW9uKHYpIHtcbiAgICB2YXIgdmFsdWUgPSB2LnRvU3RyaW5nKCk7XG5cbiAgICAvLyBTb21lIG51bWJlcnMgdXNlIGFuIGVwc2lsb24gdG8gZW5jb2RlIHRoZSB2YWx1ZS4gKGUuZy4gSmF2YVNjcmlwdCB3aWxsIHN0b3JlIDAuMDAwMDAwMSBhcyAxZS03KVxuICAgIC8vIFRoaXMgY29kZSBjb252ZXJ0cyBpdCBiYWNrIHRvIGEgbnVtYmVyIHdpdGhvdXQgdGhlIGVwc2lsb24uXG4gICAgdmFyIG0gPSAvXFwuKFxcZCo/KSg/Ojl7NSwyMH18MHs1LDIwfSlcXGR7MCwyfSg/OmUoLispfCQpLy5leGVjKHZhbHVlKTtcbiAgICBpZiAobSkge1xuICAgICAgICB2YXIgZXBzaWxvbiA9IHBhcnNlRmxvYXQoJzFlJyArICgobVsyXSA/ICttWzJdIDogMCkgKyBtWzFdLmxlbmd0aCkpO1xuICAgICAgICB2YWx1ZSA9IChNYXRoLnJvdW5kKHYgKiBlcHNpbG9uKSAvIGVwc2lsb24pLnRvU3RyaW5nKCk7XG4gICAgfVxuXG4gICAgdmFyIG5pYmJsZXMgPSAnJztcbiAgICB2YXIgaTtcbiAgICB2YXIgaWk7XG4gICAgZm9yIChpID0gMCwgaWkgPSB2YWx1ZS5sZW5ndGg7IGkgPCBpaTsgaSArPSAxKSB7XG4gICAgICAgIHZhciBjID0gdmFsdWVbaV07XG4gICAgICAgIGlmIChjID09PSAnZScpIHtcbiAgICAgICAgICAgIG5pYmJsZXMgKz0gdmFsdWVbKytpXSA9PT0gJy0nID8gJ2MnIDogJ2InO1xuICAgICAgICB9IGVsc2UgaWYgKGMgPT09ICcuJykge1xuICAgICAgICAgICAgbmliYmxlcyArPSAnYSc7XG4gICAgICAgIH0gZWxzZSBpZiAoYyA9PT0gJy0nKSB7XG4gICAgICAgICAgICBuaWJibGVzICs9ICdlJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG5pYmJsZXMgKz0gYztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5pYmJsZXMgKz0gKG5pYmJsZXMubGVuZ3RoICYgMSkgPyAnZicgOiAnZmYnO1xuICAgIHZhciBvdXQgPSBbMzBdO1xuICAgIGZvciAoaSA9IDAsIGlpID0gbmliYmxlcy5sZW5ndGg7IGkgPCBpaTsgaSArPSAyKSB7XG4gICAgICAgIG91dC5wdXNoKHBhcnNlSW50KG5pYmJsZXMuc3Vic3RyKGksIDIpLCAxNikpO1xuICAgIH1cblxuICAgIHJldHVybiBvdXQ7XG59O1xuXG4vKipcbiAqIEBwYXJhbSB7bnVtYmVyfVxuICogQHJldHVybnMge251bWJlcn1cbiAqL1xuc2l6ZU9mLlJFQUwgPSBmdW5jdGlvbih2KSB7XG4gICAgcmV0dXJuIGVuY29kZS5SRUFMKHYpLmxlbmd0aDtcbn07XG5cbmVuY29kZS5OQU1FID0gZW5jb2RlLkNIQVJBUlJBWTtcbnNpemVPZi5OQU1FID0gc2l6ZU9mLkNIQVJBUlJBWTtcblxuZW5jb2RlLlNUUklORyA9IGVuY29kZS5DSEFSQVJSQVk7XG5zaXplT2YuU1RSSU5HID0gc2l6ZU9mLkNIQVJBUlJBWTtcblxuLyoqXG4gKiBAcGFyYW0ge0RhdGFWaWV3fSBkYXRhXG4gKiBAcGFyYW0ge251bWJlcn0gb2Zmc2V0XG4gKiBAcGFyYW0ge251bWJlcn0gbnVtQnl0ZXNcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmRlY29kZS5VVEY4ID0gZnVuY3Rpb24oZGF0YSwgb2Zmc2V0LCBudW1CeXRlcykge1xuICAgIHZhciBjb2RlUG9pbnRzID0gW107XG4gICAgdmFyIG51bUNoYXJzID0gbnVtQnl0ZXM7XG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCBudW1DaGFyczsgaisrLCBvZmZzZXQgKz0gMSkge1xuICAgICAgICBjb2RlUG9pbnRzW2pdID0gZGF0YS5nZXRVaW50OChvZmZzZXQpO1xuICAgIH1cblxuICAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsIGNvZGVQb2ludHMpO1xufTtcblxuLyoqXG4gKiBAcGFyYW0ge0RhdGFWaWV3fSBkYXRhXG4gKiBAcGFyYW0ge251bWJlcn0gb2Zmc2V0XG4gKiBAcGFyYW0ge251bWJlcn0gbnVtQnl0ZXNcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmRlY29kZS5VVEYxNiA9IGZ1bmN0aW9uKGRhdGEsIG9mZnNldCwgbnVtQnl0ZXMpIHtcbiAgICB2YXIgY29kZVBvaW50cyA9IFtdO1xuICAgIHZhciBudW1DaGFycyA9IG51bUJ5dGVzIC8gMjtcbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IG51bUNoYXJzOyBqKyssIG9mZnNldCArPSAyKSB7XG4gICAgICAgIGNvZGVQb2ludHNbal0gPSBkYXRhLmdldFVpbnQxNihvZmZzZXQpO1xuICAgIH1cblxuICAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsIGNvZGVQb2ludHMpO1xufTtcblxuLyoqXG4gKiBDb252ZXJ0IGEgSmF2YVNjcmlwdCBzdHJpbmcgdG8gVVRGMTYtQkUuXG4gKiBAcGFyYW0ge3N0cmluZ31cbiAqIEByZXR1cm5zIHtBcnJheX1cbiAqL1xuZW5jb2RlLlVURjE2ID0gZnVuY3Rpb24odikge1xuICAgIHZhciBiID0gW107XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB2Lmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICAgIHZhciBjb2RlcG9pbnQgPSB2LmNoYXJDb2RlQXQoaSk7XG4gICAgICAgIGJbYi5sZW5ndGhdID0gKGNvZGVwb2ludCA+PiA4KSAmIDB4RkY7XG4gICAgICAgIGJbYi5sZW5ndGhdID0gY29kZXBvaW50ICYgMHhGRjtcbiAgICB9XG5cbiAgICByZXR1cm4gYjtcbn07XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9XG4gKiBAcmV0dXJucyB7bnVtYmVyfVxuICovXG5zaXplT2YuVVRGMTYgPSBmdW5jdGlvbih2KSB7XG4gICAgcmV0dXJuIHYubGVuZ3RoICogMjtcbn07XG5cbi8vIERhdGEgZm9yIGNvbnZlcnRpbmcgb2xkIGVpZ2h0LWJpdCBNYWNpbnRvc2ggZW5jb2RpbmdzIHRvIFVuaWNvZGUuXG4vLyBUaGlzIHJlcHJlc2VudGF0aW9uIGlzIG9wdGltaXplZCBmb3IgZGVjb2Rpbmc7IGVuY29kaW5nIGlzIHNsb3dlclxuLy8gYW5kIG5lZWRzIG1vcmUgbWVtb3J5LiBUaGUgYXNzdW1wdGlvbiBpcyB0aGF0IGFsbCBvcGVudHlwZS5qcyB1c2Vyc1xuLy8gd2FudCB0byBvcGVuIGZvbnRzLCBidXQgc2F2aW5nIGEgZm9udCB3aWxsIGJlIGNvbXBlcmF0aXZlbHkgcmFyZVxuLy8gc28gaXQgY2FuIGJlIG1vcmUgZXhwZW5zaXZlLiBLZXllZCBieSBJQU5BIGNoYXJhY3RlciBzZXQgbmFtZS5cbi8vXG4vLyBQeXRob24gc2NyaXB0IGZvciBnZW5lcmF0aW5nIHRoZXNlIHN0cmluZ3M6XG4vL1xuLy8gICAgIHMgPSB1Jycuam9pbihbY2hyKGMpLmRlY29kZSgnbWFjX2dyZWVrJykgZm9yIGMgaW4gcmFuZ2UoMTI4LCAyNTYpXSlcbi8vICAgICBwcmludChzLmVuY29kZSgndXRmLTgnKSlcbi8qKlxuICogQHByaXZhdGVcbiAqL1xudmFyIGVpZ2h0Qml0TWFjRW5jb2RpbmdzID0ge1xuICAgICd4LW1hYy1jcm9hdGlhbic6ICAvLyBQeXRob246ICdtYWNfY3JvYXRpYW4nXG4gICAgICAgICfDhMOFw4fDicORw5bDnMOhw6DDosOkw6PDpcOnw6nDqMOqw6vDrcOsw67Dr8Oxw7PDssO0w7bDtcO6w7nDu8O84oCgwrDCosKjwqfigKLCtsOfwq7FoOKEosK0wqjiiaDFvcOY4oiewrHiiaTiiaXiiIbCteKIguKIkeKIj8Wh4oirwqrCus6pxb7DuCcgK1xuICAgICAgICAnwr/CocKs4oiaxpLiiYjEhsKrxIzigKbCoMOAw4PDlcWSxZPEkOKAlOKAnOKAneKAmOKAmcO34peK76O/wqnigYTigqzigLnigLrDhsK74oCTwrfigJrigJ7igLDDgsSHw4HEjcOIw43DjsOPw4zDk8OUxJHDksOaw5vDmcSxy4bLnMKvz4DDi8uawrjDisOmy4cnLFxuICAgICd4LW1hYy1jeXJpbGxpYyc6ICAvLyBQeXRob246ICdtYWNfY3lyaWxsaWMnXG4gICAgICAgICfQkNCR0JLQk9CU0JXQltCX0JjQmdCa0JvQnNCd0J7Qn9Cg0KHQotCj0KTQpdCm0KfQqNCp0KrQq9Cs0K3QrtCv4oCgwrDSkMKjwqfigKLCttCGwq7CqeKEotCC0ZLiiaDQg9GT4oiewrHiiaTiiaXRlsK10pHQiNCE0ZTQh9GX0InRmdCK0ZonICtcbiAgICAgICAgJ9GY0IXCrOKImsaS4omI4oiGwqvCu+KApsKg0IvRm9CM0ZzRleKAk+KAlOKAnOKAneKAmOKAmcO34oCe0I7RntCP0Z/ihJbQgdGR0Y/QsNCx0LLQs9C00LXQttC30LjQudC60LvQvNC90L7Qv9GA0YHRgtGD0YTRhdGG0YfRiNGJ0YrRi9GM0Y3RjicsXG4gICAgJ3gtbWFjLWdhZWxpYyc6XG4gICAgICAgIC8vIGh0dHA6Ly91bmljb2RlLm9yZy9QdWJsaWMvTUFQUElOR1MvVkVORE9SUy9BUFBMRS9HQUVMSUMuVFhUXG4gICAgICAgICfDhMOFw4fDicORw5bDnMOhw6DDosOkw6PDpcOnw6nDqMOqw6vDrcOsw67Dr8Oxw7PDssO0w7bDtcO6w7nDu8O84oCgwrDCosKjwqfigKLCtsOfwq7CqeKEosK0wqjiiaDDhsOY4biCwrHiiaTiiaXhuIPEisSL4biK4biL4bie4bifxKDEoeG5gMOmw7gnICtcbiAgICAgICAgJ+G5geG5luG5l8m8xpLFv+G5oMKrwrvigKbCoMOAw4PDlcWSxZPigJPigJTigJzigJ3igJjigJnhuaHhupvDv8W44bmq4oKs4oC54oC6xbbFt+G5q8K34buy4buz4oGKw4LDisOBw4vDiMONw47Dj8OMw5PDlOKZo8OSw5rDm8OZxLHDncO9xbTFteG6hOG6heG6gOG6geG6guG6gycsXG4gICAgJ3gtbWFjLWdyZWVrJzogIC8vIFB5dGhvbjogJ21hY19ncmVlaydcbiAgICAgICAgJ8OEwrnCssOJwrPDlsOczoXDoMOiw6TOhMKow6fDqcOow6rDq8Kj4oSiw67Dr+KAosK94oCww7TDtsKm4oKsw7nDu8O84oCgzpPOlM6YzpvOns6gw5/CrsKpzqPOqsKn4omgwrDCt86RwrHiiaTiiaXCpc6SzpXOls6XzpnOms6czqbOq86ozqknICtcbiAgICAgICAgJ86szp3CrM6fzqHiiYjOpMKrwrvigKbCoM6lzqfOhs6IxZPigJPigJXigJzigJ3igJjigJnDt86JzorOjM6Ozq3Ors6vz4zOj8+NzrHOss+IzrTOtc+GzrPOt865zr7Ous67zrzOvc6/z4DPjs+Bz4PPhM64z4nPgs+Hz4XOts+Kz4vOkM6wXFx1MDBBRCcsXG4gICAgJ3gtbWFjLWljZWxhbmRpYyc6ICAvLyBQeXRob246ICdtYWNfaWNlbGFuZCdcbiAgICAgICAgJ8OEw4XDh8OJw5HDlsOcw6HDoMOiw6TDo8Olw6fDqcOow6rDq8Otw6zDrsOvw7HDs8Oyw7TDtsO1w7rDucO7w7zDncKwwqLCo8Kn4oCiwrbDn8KuwqnihKLCtMKo4omgw4bDmOKInsKx4omk4omlwqXCteKIguKIkeKIj8+A4oirwqrCus6pw6bDuCcgK1xuICAgICAgICAnwr/CocKs4oiaxpLiiYjiiIbCq8K74oCmwqDDgMODw5XFksWT4oCT4oCU4oCc4oCd4oCY4oCZw7fil4rDv8W44oGE4oKsw5DDsMOew77DvcK34oCa4oCe4oCww4LDisOBw4vDiMONw47Dj8OMw5PDlO+jv8OSw5rDm8OZxLHLhsucwq/LmMuZy5rCuMudy5vLhycsXG4gICAgJ3gtbWFjLWludWl0JzpcbiAgICAgICAgLy8gaHR0cDovL3VuaWNvZGUub3JnL1B1YmxpYy9NQVBQSU5HUy9WRU5ET1JTL0FQUExFL0lOVUlULlRYVFxuICAgICAgICAn4ZCD4ZCE4ZCF4ZCG4ZCK4ZCL4ZCx4ZCy4ZCz4ZC04ZC44ZC54ZGJ4ZGO4ZGP4ZGQ4ZGR4ZGV4ZGW4ZGm4ZGt4ZGu4ZGv4ZGw4ZGy4ZGz4ZKD4ZKL4ZKM4ZKN4ZKO4ZKQ4ZKRwrDhkqHhkqXhkqbigKLCtuGSp8KuwqnihKLhkqjhkqrhkqvhkrvhk4Lhk4Phk4Thk4Xhk4fhk4jhk5Dhk6/hk7Dhk7Hhk7Lhk7Thk7XhlIXhk5Xhk5bhk5cnICtcbiAgICAgICAgJ+GTmOGTmuGTm+GTquGUqOGUqeGUquGUq+GUreKApsKg4ZSu4ZS+4ZWV4ZWW4ZWX4oCT4oCU4oCc4oCd4oCY4oCZ4ZWY4ZWZ4ZWa4ZWd4ZWG4ZWH4ZWI4ZWJ4ZWL4ZWM4ZWQ4ZW/4ZaA4ZaB4ZaC4ZaD4ZaE4ZaF4ZaP4ZaQ4ZaR4ZaS4ZaT4ZaU4ZaV4Zmx4Zmy4Zmz4Zm04Zm14Zm24ZaW4Zag4Zah4Zai4Zaj4Zak4Zal4Zam4ZW8xYHFgicsXG4gICAgJ3gtbWFjLWNlJzogIC8vIFB5dGhvbjogJ21hY19sYXRpbjInXG4gICAgICAgICfDhMSAxIHDicSEw5bDnMOhxIXEjMOkxI3EhsSHw6nFucW6xI7DrcSPxJLEk8SWw7PEl8O0w7bDtcO6xJrEm8O84oCgwrDEmMKjwqfigKLCtsOfwq7CqeKEosSZwqjiiaDEo8SuxK/EquKJpOKJpcSrxLbiiILiiJHFgsS7xLzEvcS+xLnEusWFJyArXG4gICAgICAgICfFhsWDwqziiJrFhMWH4oiGwqvCu+KApsKgxYjFkMOVxZHFjOKAk+KAlOKAnOKAneKAmOKAmcO34peKxY3FlMWVxZjigLnigLrFmcWWxZfFoOKAmuKAnsWhxZrFm8OBxaTFpcONxb3FvsWqw5PDlMWrxa7DmsWvxbDFscWyxbPDncO9xLfFu8WBxbzEosuHJyxcbiAgICBtYWNpbnRvc2g6ICAvLyBQeXRob246ICdtYWNfcm9tYW4nXG4gICAgICAgICfDhMOFw4fDicORw5bDnMOhw6DDosOkw6PDpcOnw6nDqMOqw6vDrcOsw67Dr8Oxw7PDssO0w7bDtcO6w7nDu8O84oCgwrDCosKjwqfigKLCtsOfwq7CqeKEosK0wqjiiaDDhsOY4oiewrHiiaTiiaXCpcK14oiC4oiR4oiPz4DiiKvCqsK6zqnDpsO4JyArXG4gICAgICAgICfCv8KhwqziiJrGkuKJiOKIhsKrwrvigKbCoMOAw4PDlcWSxZPigJPigJTigJzigJ3igJjigJnDt+KXisO/xbjigYTigqzigLnigLrvrIHvrILigKHCt+KAmuKAnuKAsMOCw4rDgcOLw4jDjcOOw4/DjMOTw5Tvo7/DksOaw5vDmcSxy4bLnMKvy5jLmcuawrjLncuby4cnLFxuICAgICd4LW1hYy1yb21hbmlhbic6ICAvLyBQeXRob246ICdtYWNfcm9tYW5pYW4nXG4gICAgICAgICfDhMOFw4fDicORw5bDnMOhw6DDosOkw6PDpcOnw6nDqMOqw6vDrcOsw67Dr8Oxw7PDssO0w7bDtcO6w7nDu8O84oCgwrDCosKjwqfigKLCtsOfwq7CqeKEosK0wqjiiaDEgsiY4oiewrHiiaTiiaXCpcK14oiC4oiR4oiPz4DiiKvCqsK6zqnEg8iZJyArXG4gICAgICAgICfCv8KhwqziiJrGkuKJiOKIhsKrwrvigKbCoMOAw4PDlcWSxZPigJPigJTigJzigJ3igJjigJnDt+KXisO/xbjigYTigqzigLnigLrImsib4oChwrfigJrigJ7igLDDgsOKw4HDi8OIw43DjsOPw4zDk8OU76O/w5LDmsObw5nEscuGy5zCr8uYy5nLmsK4y53Lm8uHJyxcbiAgICAneC1tYWMtdHVya2lzaCc6ICAvLyBQeXRob246ICdtYWNfdHVya2lzaCdcbiAgICAgICAgJ8OEw4XDh8OJw5HDlsOcw6HDoMOiw6TDo8Olw6fDqcOow6rDq8Otw6zDrsOvw7HDs8Oyw7TDtsO1w7rDucO7w7zigKDCsMKiwqPCp+KAosK2w5/CrsKp4oSiwrTCqOKJoMOGw5jiiJ7CseKJpOKJpcKlwrXiiILiiJHiiI/PgOKIq8KqwrrOqcOmw7gnICtcbiAgICAgICAgJ8K/wqHCrOKImsaS4omI4oiGwqvCu+KApsKgw4DDg8OVxZLFk+KAk+KAlOKAnOKAneKAmOKAmcO34peKw7/FuMSexJ/EsMSxxZ7Fn+KAocK34oCa4oCe4oCww4LDisOBw4vDiMONw47Dj8OMw5PDlO+jv8OSw5rDm8OZ76Kgy4bLnMKvy5jLmcuawrjLncuby4cnXG59O1xuXG4vKipcbiAqIERlY29kZXMgYW4gb2xkLXN0eWxlIE1hY2ludG9zaCBzdHJpbmcuIFJldHVybnMgZWl0aGVyIGEgVW5pY29kZSBKYXZhU2NyaXB0XG4gKiBzdHJpbmcsIG9yICd1bmRlZmluZWQnIGlmIHRoZSBlbmNvZGluZyBpcyB1bnN1cHBvcnRlZC4gRm9yIGV4YW1wbGUsIHdlIGRvXG4gKiBub3Qgc3VwcG9ydCBDaGluZXNlLCBKYXBhbmVzZSBvciBLb3JlYW4gYmVjYXVzZSB0aGVzZSB3b3VsZCBuZWVkIGxhcmdlXG4gKiBtYXBwaW5nIHRhYmxlcy5cbiAqIEBwYXJhbSB7RGF0YVZpZXd9IGRhdGFWaWV3XG4gKiBAcGFyYW0ge251bWJlcn0gb2Zmc2V0XG4gKiBAcGFyYW0ge251bWJlcn0gZGF0YUxlbmd0aFxuICogQHBhcmFtIHtzdHJpbmd9IGVuY29kaW5nXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5kZWNvZGUuTUFDU1RSSU5HID0gZnVuY3Rpb24oZGF0YVZpZXcsIG9mZnNldCwgZGF0YUxlbmd0aCwgZW5jb2RpbmcpIHtcbiAgICB2YXIgdGFibGUgPSBlaWdodEJpdE1hY0VuY29kaW5nc1tlbmNvZGluZ107XG4gICAgaWYgKHRhYmxlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICB2YXIgcmVzdWx0ID0gJyc7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkYXRhTGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGMgPSBkYXRhVmlldy5nZXRVaW50OChvZmZzZXQgKyBpKTtcbiAgICAgICAgLy8gSW4gYWxsIGVpZ2h0LWJpdCBNYWMgZW5jb2RpbmdzLCB0aGUgY2hhcmFjdGVycyAweDAwLi4weDdGIGFyZVxuICAgICAgICAvLyBtYXBwZWQgdG8gVSswMDAwLi5VKzAwN0Y7IHdlIG9ubHkgbmVlZCB0byBsb29rIHVwIHRoZSBvdGhlcnMuXG4gICAgICAgIGlmIChjIDw9IDB4N0YpIHtcbiAgICAgICAgICAgIHJlc3VsdCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVzdWx0ICs9IHRhYmxlW2MgJiAweDdGXTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG59O1xuXG4vLyBIZWxwZXIgZnVuY3Rpb24gZm9yIGVuY29kZS5NQUNTVFJJTkcuIFJldHVybnMgYSBkaWN0aW9uYXJ5IGZvciBtYXBwaW5nXG4vLyBVbmljb2RlIGNoYXJhY3RlciBjb2RlcyB0byB0aGVpciA4LWJpdCBNYWNPUyBlcXVpdmFsZW50LiBUaGlzIHRhYmxlXG4vLyBpcyBub3QgZXhhY3RseSBhIHN1cGVyIGNoZWFwIGRhdGEgc3RydWN0dXJlLCBidXQgd2UgZG8gbm90IGNhcmUgYmVjYXVzZVxuLy8gZW5jb2RpbmcgTWFjaW50b3NoIHN0cmluZ3MgaXMgb25seSByYXJlbHkgbmVlZGVkIGluIHR5cGljYWwgYXBwbGljYXRpb25zLlxudmFyIG1hY0VuY29kaW5nVGFibGVDYWNoZSA9IHR5cGVvZiBXZWFrTWFwID09PSAnZnVuY3Rpb24nICYmIG5ldyBXZWFrTWFwKCk7XG52YXIgbWFjRW5jb2RpbmdDYWNoZUtleXM7XG52YXIgZ2V0TWFjRW5jb2RpbmdUYWJsZSA9IGZ1bmN0aW9uKGVuY29kaW5nKSB7XG4gICAgLy8gU2luY2Ugd2UgdXNlIGVuY29kaW5nIGFzIGEgY2FjaGUga2V5IGZvciBXZWFrTWFwLCBpdCBoYXMgdG8gYmVcbiAgICAvLyBhIFN0cmluZyBvYmplY3QgYW5kIG5vdCBhIGxpdGVyYWwuIEFuZCBhdCBsZWFzdCBvbiBOb2RlSlMgMi4xMC4xLFxuICAgIC8vIFdlYWtNYXAgcmVxdWlyZXMgdGhhdCB0aGUgc2FtZSBTdHJpbmcgaW5zdGFuY2UgaXMgcGFzc2VkIGZvciBjYWNoZSBoaXRzLlxuICAgIGlmICghbWFjRW5jb2RpbmdDYWNoZUtleXMpIHtcbiAgICAgICAgbWFjRW5jb2RpbmdDYWNoZUtleXMgPSB7fTtcbiAgICAgICAgZm9yICh2YXIgZSBpbiBlaWdodEJpdE1hY0VuY29kaW5ncykge1xuICAgICAgICAgICAgLypqc2hpbnQgLVcwNTMgKi8gIC8vIFN1cHByZXNzIFwiRG8gbm90IHVzZSBTdHJpbmcgYXMgYSBjb25zdHJ1Y3Rvci5cIlxuICAgICAgICAgICAgbWFjRW5jb2RpbmdDYWNoZUtleXNbZV0gPSBuZXcgU3RyaW5nKGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGNhY2hlS2V5ID0gbWFjRW5jb2RpbmdDYWNoZUtleXNbZW5jb2RpbmddO1xuICAgIGlmIChjYWNoZUtleSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLy8gV2UgY2FuJ3QgZG8gXCJpZiAoY2FjaGUuaGFzKGtleSkpIHtyZXR1cm4gY2FjaGUuZ2V0KGtleSl9XCIgaGVyZTpcbiAgICAvLyBzaW5jZSBnYXJiYWdlIGNvbGxlY3Rpb24gbWF5IHJ1biBhdCBhbnkgdGltZSwgaXQgY291bGQgYWxzbyBraWNrIGluXG4gICAgLy8gYmV0d2VlbiB0aGUgY2FsbHMgdG8gY2FjaGUuaGFzKCkgYW5kIGNhY2hlLmdldCgpLiBJbiB0aGF0IGNhc2UsXG4gICAgLy8gd2Ugd291bGQgcmV0dXJuICd1bmRlZmluZWQnIGV2ZW4gdGhvdWdoIHdlIGRvIHN1cHBvcnQgdGhlIGVuY29kaW5nLlxuICAgIGlmIChtYWNFbmNvZGluZ1RhYmxlQ2FjaGUpIHtcbiAgICAgICAgdmFyIGNhY2hlZFRhYmxlID0gbWFjRW5jb2RpbmdUYWJsZUNhY2hlLmdldChjYWNoZUtleSk7XG4gICAgICAgIGlmIChjYWNoZWRUYWJsZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkVGFibGU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgZGVjb2RpbmdUYWJsZSA9IGVpZ2h0Qml0TWFjRW5jb2RpbmdzW2VuY29kaW5nXTtcbiAgICBpZiAoZGVjb2RpbmdUYWJsZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgdmFyIGVuY29kaW5nVGFibGUgPSB7fTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRlY29kaW5nVGFibGUubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgZW5jb2RpbmdUYWJsZVtkZWNvZGluZ1RhYmxlLmNoYXJDb2RlQXQoaSldID0gaSArIDB4ODA7XG4gICAgfVxuXG4gICAgaWYgKG1hY0VuY29kaW5nVGFibGVDYWNoZSkge1xuICAgICAgICBtYWNFbmNvZGluZ1RhYmxlQ2FjaGUuc2V0KGNhY2hlS2V5LCBlbmNvZGluZ1RhYmxlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZW5jb2RpbmdUYWJsZTtcbn07XG5cbi8qKlxuICogRW5jb2RlcyBhbiBvbGQtc3R5bGUgTWFjaW50b3NoIHN0cmluZy4gUmV0dXJucyBhIGJ5dGUgYXJyYXkgdXBvbiBzdWNjZXNzLlxuICogSWYgdGhlIHJlcXVlc3RlZCBlbmNvZGluZyBpcyB1bnN1cHBvcnRlZCwgb3IgaWYgdGhlIGlucHV0IHN0cmluZyBjb250YWluc1xuICogYSBjaGFyYWN0ZXIgdGhhdCBjYW5ub3QgYmUgZXhwcmVzc2VkIGluIHRoZSBlbmNvZGluZywgdGhlIGZ1bmN0aW9uIHJldHVybnNcbiAqICd1bmRlZmluZWQnLlxuICogQHBhcmFtIHtzdHJpbmd9IHN0clxuICogQHBhcmFtIHtzdHJpbmd9IGVuY29kaW5nXG4gKiBAcmV0dXJucyB7QXJyYXl9XG4gKi9cbmVuY29kZS5NQUNTVFJJTkcgPSBmdW5jdGlvbihzdHIsIGVuY29kaW5nKSB7XG4gICAgdmFyIHRhYmxlID0gZ2V0TWFjRW5jb2RpbmdUYWJsZShlbmNvZGluZyk7XG4gICAgaWYgKHRhYmxlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICB2YXIgcmVzdWx0ID0gW107XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHIubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGMgPSBzdHIuY2hhckNvZGVBdChpKTtcblxuICAgICAgICAvLyBJbiBhbGwgZWlnaHQtYml0IE1hYyBlbmNvZGluZ3MsIHRoZSBjaGFyYWN0ZXJzIDB4MDAuLjB4N0YgYXJlXG4gICAgICAgIC8vIG1hcHBlZCB0byBVKzAwMDAuLlUrMDA3Rjsgd2Ugb25seSBuZWVkIHRvIGxvb2sgdXAgdGhlIG90aGVycy5cbiAgICAgICAgaWYgKGMgPj0gMHg4MCkge1xuICAgICAgICAgICAgYyA9IHRhYmxlW2NdO1xuICAgICAgICAgICAgaWYgKGMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIC8vIHN0ciBjb250YWlucyBhIFVuaWNvZGUgY2hhcmFjdGVyIHRoYXQgY2Fubm90IGJlIGVuY29kZWRcbiAgICAgICAgICAgICAgICAvLyBpbiB0aGUgcmVxdWVzdGVkIGVuY29kaW5nLlxuICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0W2ldID0gYztcbiAgICAgICAgLy8gcmVzdWx0LnB1c2goYyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHN0clxuICogQHBhcmFtIHtzdHJpbmd9IGVuY29kaW5nXG4gKiBAcmV0dXJucyB7bnVtYmVyfVxuICovXG5zaXplT2YuTUFDU1RSSU5HID0gZnVuY3Rpb24oc3RyLCBlbmNvZGluZykge1xuICAgIHZhciBiID0gZW5jb2RlLk1BQ1NUUklORyhzdHIsIGVuY29kaW5nKTtcbiAgICBpZiAoYiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBiLmxlbmd0aDtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gMDtcbiAgICB9XG59O1xuXG4vLyBDb252ZXJ0IGEgbGlzdCBvZiB2YWx1ZXMgdG8gYSBDRkYgSU5ERVggc3RydWN0dXJlLlxuLy8gVGhlIHZhbHVlcyBzaG91bGQgYmUgb2JqZWN0cyBjb250YWluaW5nIG5hbWUgLyB0eXBlIC8gdmFsdWUuXG4vKipcbiAqIEBwYXJhbSB7QXJyYXl9IGxcbiAqIEByZXR1cm5zIHtBcnJheX1cbiAqL1xuZW5jb2RlLklOREVYID0gZnVuY3Rpb24obCkge1xuICAgIHZhciBpO1xuICAgIC8vdmFyIG9mZnNldCwgb2Zmc2V0cywgb2Zmc2V0RW5jb2RlciwgZW5jb2RlZE9mZnNldHMsIGVuY29kZWRPZmZzZXQsIGRhdGEsXG4gICAgLy8gICAgaSwgdjtcbiAgICAvLyBCZWNhdXNlIHdlIGhhdmUgdG8ga25vdyB3aGljaCBkYXRhIHR5cGUgdG8gdXNlIHRvIGVuY29kZSB0aGUgb2Zmc2V0cyxcbiAgICAvLyB3ZSBoYXZlIHRvIGdvIHRocm91Z2ggdGhlIHZhbHVlcyB0d2ljZTogb25jZSB0byBlbmNvZGUgdGhlIGRhdGEgYW5kXG4gICAgLy8gY2FsY3VsYXRlIHRoZSBvZmZldHMsIHRoZW4gYWdhaW4gdG8gZW5jb2RlIHRoZSBvZmZzZXRzIHVzaW5nIHRoZSBmaXR0aW5nIGRhdGEgdHlwZS5cbiAgICB2YXIgb2Zmc2V0ID0gMTsgLy8gRmlyc3Qgb2Zmc2V0IGlzIGFsd2F5cyAxLlxuICAgIHZhciBvZmZzZXRzID0gW29mZnNldF07XG4gICAgdmFyIGRhdGEgPSBbXTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgbC5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICB2YXIgdiA9IGVuY29kZS5PQkpFQ1QobFtpXSk7XG4gICAgICAgIEFycmF5LnByb3RvdHlwZS5wdXNoLmFwcGx5KGRhdGEsIHYpO1xuICAgICAgICBvZmZzZXQgKz0gdi5sZW5ndGg7XG4gICAgICAgIG9mZnNldHMucHVzaChvZmZzZXQpO1xuICAgIH1cblxuICAgIGlmIChkYXRhLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gWzAsIDBdO1xuICAgIH1cblxuICAgIHZhciBlbmNvZGVkT2Zmc2V0cyA9IFtdO1xuICAgIHZhciBvZmZTaXplID0gKDEgKyBNYXRoLmZsb29yKE1hdGgubG9nKG9mZnNldCkgLyBNYXRoLmxvZygyKSkgLyA4KSB8IDA7XG4gICAgdmFyIG9mZnNldEVuY29kZXIgPSBbdW5kZWZpbmVkLCBlbmNvZGUuQllURSwgZW5jb2RlLlVTSE9SVCwgZW5jb2RlLlVJTlQyNCwgZW5jb2RlLlVMT05HXVtvZmZTaXplXTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgb2Zmc2V0cy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICB2YXIgZW5jb2RlZE9mZnNldCA9IG9mZnNldEVuY29kZXIob2Zmc2V0c1tpXSk7XG4gICAgICAgIEFycmF5LnByb3RvdHlwZS5wdXNoLmFwcGx5KGVuY29kZWRPZmZzZXRzLCBlbmNvZGVkT2Zmc2V0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gQXJyYXkucHJvdG90eXBlLmNvbmNhdChlbmNvZGUuQ2FyZDE2KGwubGVuZ3RoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kZS5PZmZTaXplKG9mZlNpemUpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2RlZE9mZnNldHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhKTtcbn07XG5cbi8qKlxuICogQHBhcmFtIHtBcnJheX1cbiAqIEByZXR1cm5zIHtudW1iZXJ9XG4gKi9cbnNpemVPZi5JTkRFWCA9IGZ1bmN0aW9uKHYpIHtcbiAgICByZXR1cm4gZW5jb2RlLklOREVYKHYpLmxlbmd0aDtcbn07XG5cbi8qKlxuICogQ29udmVydCBhbiBvYmplY3QgdG8gYSBDRkYgRElDVCBzdHJ1Y3R1cmUuXG4gKiBUaGUga2V5cyBzaG91bGQgYmUgbnVtZXJpYy5cbiAqIFRoZSB2YWx1ZXMgc2hvdWxkIGJlIG9iamVjdHMgY29udGFpbmluZyBuYW1lIC8gdHlwZSAvIHZhbHVlLlxuICogQHBhcmFtIHtPYmplY3R9IG1cbiAqIEByZXR1cm5zIHtBcnJheX1cbiAqL1xuZW5jb2RlLkRJQ1QgPSBmdW5jdGlvbihtKSB7XG4gICAgdmFyIGQgPSBbXTtcbiAgICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG0pO1xuICAgIHZhciBsZW5ndGggPSBrZXlzLmxlbmd0aDtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgICAgLy8gT2JqZWN0LmtleXMoKSByZXR1cm4gc3RyaW5nIGtleXMsIGJ1dCBvdXIga2V5cyBhcmUgYWx3YXlzIG51bWVyaWMuXG4gICAgICAgIHZhciBrID0gcGFyc2VJbnQoa2V5c1tpXSwgMCk7XG4gICAgICAgIHZhciB2ID0gbVtrXTtcbiAgICAgICAgLy8gVmFsdWUgY29tZXMgYmVmb3JlIHRoZSBrZXkuXG4gICAgICAgIGQgPSBkLmNvbmNhdChlbmNvZGUuT1BFUkFORCh2LnZhbHVlLCB2LnR5cGUpKTtcbiAgICAgICAgZCA9IGQuY29uY2F0KGVuY29kZS5PUEVSQVRPUihrKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGQ7XG59O1xuXG4vKipcbiAqIEBwYXJhbSB7T2JqZWN0fVxuICogQHJldHVybnMge251bWJlcn1cbiAqL1xuc2l6ZU9mLkRJQ1QgPSBmdW5jdGlvbihtKSB7XG4gICAgcmV0dXJuIGVuY29kZS5ESUNUKG0pLmxlbmd0aDtcbn07XG5cbi8qKlxuICogQHBhcmFtIHtudW1iZXJ9XG4gKiBAcmV0dXJucyB7QXJyYXl9XG4gKi9cbmVuY29kZS5PUEVSQVRPUiA9IGZ1bmN0aW9uKHYpIHtcbiAgICBpZiAodiA8IDEyMDApIHtcbiAgICAgICAgcmV0dXJuIFt2XTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gWzEyLCB2IC0gMTIwMF07XG4gICAgfVxufTtcblxuLyoqXG4gKiBAcGFyYW0ge0FycmF5fSB2XG4gKiBAcGFyYW0ge3N0cmluZ31cbiAqIEByZXR1cm5zIHtBcnJheX1cbiAqL1xuZW5jb2RlLk9QRVJBTkQgPSBmdW5jdGlvbih2LCB0eXBlKSB7XG4gICAgdmFyIGQgPSBbXTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh0eXBlKSkge1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHR5cGUubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgICAgICAgIGNoZWNrLmFyZ3VtZW50KHYubGVuZ3RoID09PSB0eXBlLmxlbmd0aCwgJ05vdCBlbm91Z2ggYXJndW1lbnRzIGdpdmVuIGZvciB0eXBlJyArIHR5cGUpO1xuICAgICAgICAgICAgZCA9IGQuY29uY2F0KGVuY29kZS5PUEVSQU5EKHZbaV0sIHR5cGVbaV0pKTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh0eXBlID09PSAnU0lEJykge1xuICAgICAgICAgICAgZCA9IGQuY29uY2F0KGVuY29kZS5OVU1CRVIodikpO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdvZmZzZXQnKSB7XG4gICAgICAgICAgICAvLyBXZSBtYWtlIGl0IGVhc3kgZm9yIG91cnNlbHZlcyBhbmQgYWx3YXlzIGVuY29kZSBvZmZzZXRzIGFzXG4gICAgICAgICAgICAvLyA0IGJ5dGVzLiBUaGlzIG1ha2VzIG9mZnNldCBjYWxjdWxhdGlvbiBmb3IgdGhlIHRvcCBkaWN0IGVhc2llci5cbiAgICAgICAgICAgIGQgPSBkLmNvbmNhdChlbmNvZGUuTlVNQkVSMzIodikpO1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICBkID0gZC5jb25jYXQoZW5jb2RlLk5VTUJFUih2KSk7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ3JlYWwnKSB7XG4gICAgICAgICAgICBkID0gZC5jb25jYXQoZW5jb2RlLlJFQUwodikpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIG9wZXJhbmQgdHlwZSAnICsgdHlwZSk7XG4gICAgICAgICAgICAvLyBGSVhNRSBBZGQgc3VwcG9ydCBmb3IgYm9vbGVhbnNcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBkO1xufTtcblxuZW5jb2RlLk9QID0gZW5jb2RlLkJZVEU7XG5zaXplT2YuT1AgPSBzaXplT2YuQllURTtcblxuLy8gbWVtb2l6ZSBjaGFyc3RyaW5nIGVuY29kaW5nIHVzaW5nIFdlYWtNYXAgaWYgYXZhaWxhYmxlXG52YXIgd21tID0gdHlwZW9mIFdlYWtNYXAgPT09ICdmdW5jdGlvbicgJiYgbmV3IFdlYWtNYXAoKTtcblxuLyoqXG4gKiBDb252ZXJ0IGEgbGlzdCBvZiBDaGFyU3RyaW5nIG9wZXJhdGlvbnMgdG8gYnl0ZXMuXG4gKiBAcGFyYW0ge0FycmF5fVxuICogQHJldHVybnMge0FycmF5fVxuICovXG5lbmNvZGUuQ0hBUlNUUklORyA9IGZ1bmN0aW9uKG9wcykge1xuICAgIC8vIFNlZSBlbmNvZGUuTUFDU1RSSU5HIGZvciB3aHkgd2UgZG9uJ3QgZG8gXCJpZiAod21tICYmIHdtbS5oYXMob3BzKSlcIi5cbiAgICBpZiAod21tKSB7XG4gICAgICAgIHZhciBjYWNoZWRWYWx1ZSA9IHdtbS5nZXQob3BzKTtcbiAgICAgICAgaWYgKGNhY2hlZFZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBjYWNoZWRWYWx1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHZhciBkID0gW107XG4gICAgdmFyIGxlbmd0aCA9IG9wcy5sZW5ndGg7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSArPSAxKSB7XG4gICAgICAgIHZhciBvcCA9IG9wc1tpXTtcbiAgICAgICAgZCA9IGQuY29uY2F0KGVuY29kZVtvcC50eXBlXShvcC52YWx1ZSkpO1xuICAgIH1cblxuICAgIGlmICh3bW0pIHtcbiAgICAgICAgd21tLnNldChvcHMsIGQpO1xuICAgIH1cblxuICAgIHJldHVybiBkO1xufTtcblxuLyoqXG4gKiBAcGFyYW0ge0FycmF5fVxuICogQHJldHVybnMge251bWJlcn1cbiAqL1xuc2l6ZU9mLkNIQVJTVFJJTkcgPSBmdW5jdGlvbihvcHMpIHtcbiAgICByZXR1cm4gZW5jb2RlLkNIQVJTVFJJTkcob3BzKS5sZW5ndGg7XG59O1xuXG4vLyBVdGlsaXR5IGZ1bmN0aW9ucyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4vKipcbiAqIENvbnZlcnQgYW4gb2JqZWN0IGNvbnRhaW5pbmcgbmFtZSAvIHR5cGUgLyB2YWx1ZSB0byBieXRlcy5cbiAqIEBwYXJhbSB7T2JqZWN0fVxuICogQHJldHVybnMge0FycmF5fVxuICovXG5lbmNvZGUuT0JKRUNUID0gZnVuY3Rpb24odikge1xuICAgIHZhciBlbmNvZGluZ0Z1bmN0aW9uID0gZW5jb2RlW3YudHlwZV07XG4gICAgY2hlY2suYXJndW1lbnQoZW5jb2RpbmdGdW5jdGlvbiAhPT0gdW5kZWZpbmVkLCAnTm8gZW5jb2RpbmcgZnVuY3Rpb24gZm9yIHR5cGUgJyArIHYudHlwZSk7XG4gICAgcmV0dXJuIGVuY29kaW5nRnVuY3Rpb24odi52YWx1ZSk7XG59O1xuXG4vKipcbiAqIEBwYXJhbSB7T2JqZWN0fVxuICogQHJldHVybnMge251bWJlcn1cbiAqL1xuc2l6ZU9mLk9CSkVDVCA9IGZ1bmN0aW9uKHYpIHtcbiAgICB2YXIgc2l6ZU9mRnVuY3Rpb24gPSBzaXplT2Zbdi50eXBlXTtcbiAgICBjaGVjay5hcmd1bWVudChzaXplT2ZGdW5jdGlvbiAhPT0gdW5kZWZpbmVkLCAnTm8gc2l6ZU9mIGZ1bmN0aW9uIGZvciB0eXBlICcgKyB2LnR5cGUpO1xuICAgIHJldHVybiBzaXplT2ZGdW5jdGlvbih2LnZhbHVlKTtcbn07XG5cbi8qKlxuICogQ29udmVydCBhIHRhYmxlIG9iamVjdCB0byBieXRlcy5cbiAqIEEgdGFibGUgY29udGFpbnMgYSBsaXN0IG9mIGZpZWxkcyBjb250YWluaW5nIHRoZSBtZXRhZGF0YSAobmFtZSwgdHlwZSBhbmQgZGVmYXVsdCB2YWx1ZSkuXG4gKiBUaGUgdGFibGUgaXRzZWxmIGhhcyB0aGUgZmllbGQgdmFsdWVzIHNldCBhcyBhdHRyaWJ1dGVzLlxuICogQHBhcmFtIHtvcGVudHlwZS5UYWJsZX1cbiAqIEByZXR1cm5zIHtBcnJheX1cbiAqL1xuZW5jb2RlLlRBQkxFID0gZnVuY3Rpb24odGFibGUpIHtcbiAgICB2YXIgZCA9IFtdO1xuICAgIHZhciBsZW5ndGggPSB0YWJsZS5maWVsZHMubGVuZ3RoO1xuICAgIHZhciBzdWJ0YWJsZXMgPSBbXTtcbiAgICB2YXIgc3VidGFibGVPZmZzZXRzID0gW107XG4gICAgdmFyIGk7XG5cbiAgICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgICAgdmFyIGZpZWxkID0gdGFibGUuZmllbGRzW2ldO1xuICAgICAgICB2YXIgZW5jb2RpbmdGdW5jdGlvbiA9IGVuY29kZVtmaWVsZC50eXBlXTtcbiAgICAgICAgY2hlY2suYXJndW1lbnQoZW5jb2RpbmdGdW5jdGlvbiAhPT0gdW5kZWZpbmVkLCAnTm8gZW5jb2RpbmcgZnVuY3Rpb24gZm9yIGZpZWxkIHR5cGUgJyArIGZpZWxkLnR5cGUgKyAnICgnICsgZmllbGQubmFtZSArICcpJyk7XG4gICAgICAgIHZhciB2YWx1ZSA9IHRhYmxlW2ZpZWxkLm5hbWVdO1xuICAgICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdmFsdWUgPSBmaWVsZC52YWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBieXRlcyA9IGVuY29kaW5nRnVuY3Rpb24odmFsdWUpO1xuXG4gICAgICAgIGlmIChmaWVsZC50eXBlID09PSAnVEFCTEUnKSB7XG4gICAgICAgICAgICBzdWJ0YWJsZU9mZnNldHMucHVzaChkLmxlbmd0aCk7XG4gICAgICAgICAgICBkID0gZC5jb25jYXQoWzAsIDBdKTtcbiAgICAgICAgICAgIHN1YnRhYmxlcy5wdXNoKGJ5dGVzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGQgPSBkLmNvbmNhdChieXRlcyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKGkgPSAwOyBpIDwgc3VidGFibGVzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICAgIHZhciBvID0gc3VidGFibGVPZmZzZXRzW2ldO1xuICAgICAgICB2YXIgb2Zmc2V0ID0gZC5sZW5ndGg7XG4gICAgICAgIGNoZWNrLmFyZ3VtZW50KG9mZnNldCA8IDY1NTM2LCAnVGFibGUgJyArIHRhYmxlLnRhYmxlTmFtZSArICcgdG9vIGJpZy4nKTtcbiAgICAgICAgZFtvXSA9IG9mZnNldCA+PiA4O1xuICAgICAgICBkW28gKyAxXSA9IG9mZnNldCAmIDB4ZmY7XG4gICAgICAgIGQgPSBkLmNvbmNhdChzdWJ0YWJsZXNbaV0pO1xuICAgIH1cblxuICAgIHJldHVybiBkO1xufTtcblxuLyoqXG4gKiBAcGFyYW0ge29wZW50eXBlLlRhYmxlfVxuICogQHJldHVybnMge251bWJlcn1cbiAqL1xuc2l6ZU9mLlRBQkxFID0gZnVuY3Rpb24odGFibGUpIHtcbiAgICB2YXIgbnVtQnl0ZXMgPSAwO1xuICAgIHZhciBsZW5ndGggPSB0YWJsZS5maWVsZHMubGVuZ3RoO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICB2YXIgZmllbGQgPSB0YWJsZS5maWVsZHNbaV07XG4gICAgICAgIHZhciBzaXplT2ZGdW5jdGlvbiA9IHNpemVPZltmaWVsZC50eXBlXTtcbiAgICAgICAgY2hlY2suYXJndW1lbnQoc2l6ZU9mRnVuY3Rpb24gIT09IHVuZGVmaW5lZCwgJ05vIHNpemVPZiBmdW5jdGlvbiBmb3IgZmllbGQgdHlwZSAnICsgZmllbGQudHlwZSArICcgKCcgKyBmaWVsZC5uYW1lICsgJyknKTtcbiAgICAgICAgdmFyIHZhbHVlID0gdGFibGVbZmllbGQubmFtZV07XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IGZpZWxkLnZhbHVlO1xuICAgICAgICB9XG5cbiAgICAgICAgbnVtQnl0ZXMgKz0gc2l6ZU9mRnVuY3Rpb24odmFsdWUpO1xuXG4gICAgICAgIC8vIFN1YnRhYmxlcyB0YWtlIDIgbW9yZSBieXRlcyBmb3Igb2Zmc2V0cy5cbiAgICAgICAgaWYgKGZpZWxkLnR5cGUgPT09ICdUQUJMRScpIHtcbiAgICAgICAgICAgIG51bUJ5dGVzICs9IDI7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbnVtQnl0ZXM7XG59O1xuXG5lbmNvZGUuUkVDT1JEID0gZW5jb2RlLlRBQkxFO1xuc2l6ZU9mLlJFQ09SRCA9IHNpemVPZi5UQUJMRTtcblxuLy8gTWVyZ2UgaW4gYSBsaXN0IG9mIGJ5dGVzLlxuZW5jb2RlLkxJVEVSQUwgPSBmdW5jdGlvbih2KSB7XG4gICAgcmV0dXJuIHY7XG59O1xuXG5zaXplT2YuTElURVJBTCA9IGZ1bmN0aW9uKHYpIHtcbiAgICByZXR1cm4gdi5sZW5ndGg7XG59O1xuXG5leHBvcnRzLmRlY29kZSA9IGRlY29kZTtcbmV4cG9ydHMuZW5jb2RlID0gZW5jb2RlO1xuZXhwb3J0cy5zaXplT2YgPSBzaXplT2Y7XG4iLCIndXNlIHN0cmljdCc7XG5cbmV4cG9ydHMuaXNCcm93c2VyID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnO1xufTtcblxuZXhwb3J0cy5pc05vZGUgPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCc7XG59O1xuXG5leHBvcnRzLm5vZGVCdWZmZXJUb0FycmF5QnVmZmVyID0gZnVuY3Rpb24oYnVmZmVyKSB7XG4gICAgdmFyIGFiID0gbmV3IEFycmF5QnVmZmVyKGJ1ZmZlci5sZW5ndGgpO1xuICAgIHZhciB2aWV3ID0gbmV3IFVpbnQ4QXJyYXkoYWIpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYnVmZmVyLmxlbmd0aDsgKytpKSB7XG4gICAgICAgIHZpZXdbaV0gPSBidWZmZXJbaV07XG4gICAgfVxuXG4gICAgcmV0dXJuIGFiO1xufTtcblxuZXhwb3J0cy5hcnJheUJ1ZmZlclRvTm9kZUJ1ZmZlciA9IGZ1bmN0aW9uKGFiKSB7XG4gICAgdmFyIGJ1ZmZlciA9IG5ldyBCdWZmZXIoYWIuYnl0ZUxlbmd0aCk7XG4gICAgdmFyIHZpZXcgPSBuZXcgVWludDhBcnJheShhYik7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBidWZmZXIubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgYnVmZmVyW2ldID0gdmlld1tpXTtcbiAgICB9XG5cbiAgICByZXR1cm4gYnVmZmVyO1xufTtcblxuZXhwb3J0cy5jaGVja0FyZ3VtZW50ID0gZnVuY3Rpb24oZXhwcmVzc2lvbiwgbWVzc2FnZSkge1xuICAgIGlmICghZXhwcmVzc2lvbikge1xuICAgICAgICB0aHJvdyBtZXNzYWdlO1xuICAgIH1cbn07XG4iLCJleHBvcnRzLmVuZGlhbm5lc3MgPSBmdW5jdGlvbiAoKSB7IHJldHVybiAnTEUnIH07XG5cbmV4cG9ydHMuaG9zdG5hbWUgPSBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHR5cGVvZiBsb2NhdGlvbiAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgcmV0dXJuIGxvY2F0aW9uLmhvc3RuYW1lXG4gICAgfVxuICAgIGVsc2UgcmV0dXJuICcnO1xufTtcblxuZXhwb3J0cy5sb2FkYXZnID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gW10gfTtcblxuZXhwb3J0cy51cHRpbWUgPSBmdW5jdGlvbiAoKSB7IHJldHVybiAwIH07XG5cbmV4cG9ydHMuZnJlZW1lbSA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gTnVtYmVyLk1BWF9WQUxVRTtcbn07XG5cbmV4cG9ydHMudG90YWxtZW0gPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIE51bWJlci5NQVhfVkFMVUU7XG59O1xuXG5leHBvcnRzLmNwdXMgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBbXSB9O1xuXG5leHBvcnRzLnR5cGUgPSBmdW5jdGlvbiAoKSB7IHJldHVybiAnQnJvd3NlcicgfTtcblxuZXhwb3J0cy5yZWxlYXNlID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICh0eXBlb2YgbmF2aWdhdG9yICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICByZXR1cm4gbmF2aWdhdG9yLmFwcFZlcnNpb247XG4gICAgfVxuICAgIHJldHVybiAnJztcbn07XG5cbmV4cG9ydHMubmV0d29ya0ludGVyZmFjZXNcbj0gZXhwb3J0cy5nZXROZXR3b3JrSW50ZXJmYWNlc1xuPSBmdW5jdGlvbiAoKSB7IHJldHVybiB7fSB9O1xuXG5leHBvcnRzLmFyY2ggPSBmdW5jdGlvbiAoKSB7IHJldHVybiAnamF2YXNjcmlwdCcgfTtcblxuZXhwb3J0cy5wbGF0Zm9ybSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuICdicm93c2VyJyB9O1xuXG5leHBvcnRzLnRtcGRpciA9IGV4cG9ydHMudG1wRGlyID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiAnL3RtcCc7XG59O1xuXG5leHBvcnRzLkVPTCA9ICdcXG4nO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5cbnZhciBUWVBFRF9PSyA9ICAodHlwZW9mIFVpbnQ4QXJyYXkgIT09ICd1bmRlZmluZWQnKSAmJlxuICAgICAgICAgICAgICAgICh0eXBlb2YgVWludDE2QXJyYXkgIT09ICd1bmRlZmluZWQnKSAmJlxuICAgICAgICAgICAgICAgICh0eXBlb2YgSW50MzJBcnJheSAhPT0gJ3VuZGVmaW5lZCcpO1xuXG5cbmV4cG9ydHMuYXNzaWduID0gZnVuY3Rpb24gKG9iaiAvKmZyb20xLCBmcm9tMiwgZnJvbTMsIC4uLiovKSB7XG4gIHZhciBzb3VyY2VzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKTtcbiAgd2hpbGUgKHNvdXJjZXMubGVuZ3RoKSB7XG4gICAgdmFyIHNvdXJjZSA9IHNvdXJjZXMuc2hpZnQoKTtcbiAgICBpZiAoIXNvdXJjZSkgeyBjb250aW51ZTsgfVxuXG4gICAgaWYgKHR5cGVvZiBzb3VyY2UgIT09ICdvYmplY3QnKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKHNvdXJjZSArICdtdXN0IGJlIG5vbi1vYmplY3QnKTtcbiAgICB9XG5cbiAgICBmb3IgKHZhciBwIGluIHNvdXJjZSkge1xuICAgICAgaWYgKHNvdXJjZS5oYXNPd25Qcm9wZXJ0eShwKSkge1xuICAgICAgICBvYmpbcF0gPSBzb3VyY2VbcF07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG9iajtcbn07XG5cblxuLy8gcmVkdWNlIGJ1ZmZlciBzaXplLCBhdm9pZGluZyBtZW0gY29weVxuZXhwb3J0cy5zaHJpbmtCdWYgPSBmdW5jdGlvbiAoYnVmLCBzaXplKSB7XG4gIGlmIChidWYubGVuZ3RoID09PSBzaXplKSB7IHJldHVybiBidWY7IH1cbiAgaWYgKGJ1Zi5zdWJhcnJheSkgeyByZXR1cm4gYnVmLnN1YmFycmF5KDAsIHNpemUpOyB9XG4gIGJ1Zi5sZW5ndGggPSBzaXplO1xuICByZXR1cm4gYnVmO1xufTtcblxuXG52YXIgZm5UeXBlZCA9IHtcbiAgYXJyYXlTZXQ6IGZ1bmN0aW9uIChkZXN0LCBzcmMsIHNyY19vZmZzLCBsZW4sIGRlc3Rfb2Zmcykge1xuICAgIGlmIChzcmMuc3ViYXJyYXkgJiYgZGVzdC5zdWJhcnJheSkge1xuICAgICAgZGVzdC5zZXQoc3JjLnN1YmFycmF5KHNyY19vZmZzLCBzcmNfb2ZmcyArIGxlbiksIGRlc3Rfb2Zmcyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIC8vIEZhbGxiYWNrIHRvIG9yZGluYXJ5IGFycmF5XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgZGVzdFtkZXN0X29mZnMgKyBpXSA9IHNyY1tzcmNfb2ZmcyArIGldO1xuICAgIH1cbiAgfSxcbiAgLy8gSm9pbiBhcnJheSBvZiBjaHVua3MgdG8gc2luZ2xlIGFycmF5LlxuICBmbGF0dGVuQ2h1bmtzOiBmdW5jdGlvbiAoY2h1bmtzKSB7XG4gICAgdmFyIGksIGwsIGxlbiwgcG9zLCBjaHVuaywgcmVzdWx0O1xuXG4gICAgLy8gY2FsY3VsYXRlIGRhdGEgbGVuZ3RoXG4gICAgbGVuID0gMDtcbiAgICBmb3IgKGkgPSAwLCBsID0gY2h1bmtzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgbGVuICs9IGNodW5rc1tpXS5sZW5ndGg7XG4gICAgfVxuXG4gICAgLy8gam9pbiBjaHVua3NcbiAgICByZXN1bHQgPSBuZXcgVWludDhBcnJheShsZW4pO1xuICAgIHBvcyA9IDA7XG4gICAgZm9yIChpID0gMCwgbCA9IGNodW5rcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgIGNodW5rID0gY2h1bmtzW2ldO1xuICAgICAgcmVzdWx0LnNldChjaHVuaywgcG9zKTtcbiAgICAgIHBvcyArPSBjaHVuay5sZW5ndGg7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufTtcblxudmFyIGZuVW50eXBlZCA9IHtcbiAgYXJyYXlTZXQ6IGZ1bmN0aW9uIChkZXN0LCBzcmMsIHNyY19vZmZzLCBsZW4sIGRlc3Rfb2Zmcykge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIGRlc3RbZGVzdF9vZmZzICsgaV0gPSBzcmNbc3JjX29mZnMgKyBpXTtcbiAgICB9XG4gIH0sXG4gIC8vIEpvaW4gYXJyYXkgb2YgY2h1bmtzIHRvIHNpbmdsZSBhcnJheS5cbiAgZmxhdHRlbkNodW5rczogZnVuY3Rpb24gKGNodW5rcykge1xuICAgIHJldHVybiBbXS5jb25jYXQuYXBwbHkoW10sIGNodW5rcyk7XG4gIH1cbn07XG5cblxuLy8gRW5hYmxlL0Rpc2FibGUgdHlwZWQgYXJyYXlzIHVzZSwgZm9yIHRlc3Rpbmdcbi8vXG5leHBvcnRzLnNldFR5cGVkID0gZnVuY3Rpb24gKG9uKSB7XG4gIGlmIChvbikge1xuICAgIGV4cG9ydHMuQnVmOCAgPSBVaW50OEFycmF5O1xuICAgIGV4cG9ydHMuQnVmMTYgPSBVaW50MTZBcnJheTtcbiAgICBleHBvcnRzLkJ1ZjMyID0gSW50MzJBcnJheTtcbiAgICBleHBvcnRzLmFzc2lnbihleHBvcnRzLCBmblR5cGVkKTtcbiAgfSBlbHNlIHtcbiAgICBleHBvcnRzLkJ1ZjggID0gQXJyYXk7XG4gICAgZXhwb3J0cy5CdWYxNiA9IEFycmF5O1xuICAgIGV4cG9ydHMuQnVmMzIgPSBBcnJheTtcbiAgICBleHBvcnRzLmFzc2lnbihleHBvcnRzLCBmblVudHlwZWQpO1xuICB9XG59O1xuXG5leHBvcnRzLnNldFR5cGVkKFRZUEVEX09LKTtcbiIsIid1c2Ugc3RyaWN0JztcblxuLy8gTm90ZTogYWRsZXIzMiB0YWtlcyAxMiUgZm9yIGxldmVsIDAgYW5kIDIlIGZvciBsZXZlbCA2LlxuLy8gSXQgZG9lc24ndCB3b3J0aCB0byBtYWtlIGFkZGl0aW9uYWwgb3B0aW1pemF0aW9uYSBhcyBpbiBvcmlnaW5hbC5cbi8vIFNtYWxsIHNpemUgaXMgcHJlZmVyYWJsZS5cblxuZnVuY3Rpb24gYWRsZXIzMihhZGxlciwgYnVmLCBsZW4sIHBvcykge1xuICB2YXIgczEgPSAoYWRsZXIgJiAweGZmZmYpIHwwLFxuICAgICAgczIgPSAoKGFkbGVyID4+PiAxNikgJiAweGZmZmYpIHwwLFxuICAgICAgbiA9IDA7XG5cbiAgd2hpbGUgKGxlbiAhPT0gMCkge1xuICAgIC8vIFNldCBsaW1pdCB+IHR3aWNlIGxlc3MgdGhhbiA1NTUyLCB0byBrZWVwXG4gICAgLy8gczIgaW4gMzEtYml0cywgYmVjYXVzZSB3ZSBmb3JjZSBzaWduZWQgaW50cy5cbiAgICAvLyBpbiBvdGhlciBjYXNlICU9IHdpbGwgZmFpbC5cbiAgICBuID0gbGVuID4gMjAwMCA/IDIwMDAgOiBsZW47XG4gICAgbGVuIC09IG47XG5cbiAgICBkbyB7XG4gICAgICBzMSA9IChzMSArIGJ1Zltwb3MrK10pIHwwO1xuICAgICAgczIgPSAoczIgKyBzMSkgfDA7XG4gICAgfSB3aGlsZSAoLS1uKTtcblxuICAgIHMxICU9IDY1NTIxO1xuICAgIHMyICU9IDY1NTIxO1xuICB9XG5cbiAgcmV0dXJuIChzMSB8IChzMiA8PCAxNikpIHwwO1xufVxuXG5cbm1vZHVsZS5leHBvcnRzID0gYWRsZXIzMjtcbiIsIid1c2Ugc3RyaWN0JztcblxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcblxuICAvKiBBbGxvd2VkIGZsdXNoIHZhbHVlczsgc2VlIGRlZmxhdGUoKSBhbmQgaW5mbGF0ZSgpIGJlbG93IGZvciBkZXRhaWxzICovXG4gIFpfTk9fRkxVU0g6ICAgICAgICAgMCxcbiAgWl9QQVJUSUFMX0ZMVVNIOiAgICAxLFxuICBaX1NZTkNfRkxVU0g6ICAgICAgIDIsXG4gIFpfRlVMTF9GTFVTSDogICAgICAgMyxcbiAgWl9GSU5JU0g6ICAgICAgICAgICA0LFxuICBaX0JMT0NLOiAgICAgICAgICAgIDUsXG4gIFpfVFJFRVM6ICAgICAgICAgICAgNixcblxuICAvKiBSZXR1cm4gY29kZXMgZm9yIHRoZSBjb21wcmVzc2lvbi9kZWNvbXByZXNzaW9uIGZ1bmN0aW9ucy4gTmVnYXRpdmUgdmFsdWVzXG4gICogYXJlIGVycm9ycywgcG9zaXRpdmUgdmFsdWVzIGFyZSB1c2VkIGZvciBzcGVjaWFsIGJ1dCBub3JtYWwgZXZlbnRzLlxuICAqL1xuICBaX09LOiAgICAgICAgICAgICAgIDAsXG4gIFpfU1RSRUFNX0VORDogICAgICAgMSxcbiAgWl9ORUVEX0RJQ1Q6ICAgICAgICAyLFxuICBaX0VSUk5POiAgICAgICAgICAgLTEsXG4gIFpfU1RSRUFNX0VSUk9SOiAgICAtMixcbiAgWl9EQVRBX0VSUk9SOiAgICAgIC0zLFxuICAvL1pfTUVNX0VSUk9SOiAgICAgLTQsXG4gIFpfQlVGX0VSUk9SOiAgICAgICAtNSxcbiAgLy9aX1ZFUlNJT05fRVJST1I6IC02LFxuXG4gIC8qIGNvbXByZXNzaW9uIGxldmVscyAqL1xuICBaX05PX0NPTVBSRVNTSU9OOiAgICAgICAgIDAsXG4gIFpfQkVTVF9TUEVFRDogICAgICAgICAgICAgMSxcbiAgWl9CRVNUX0NPTVBSRVNTSU9OOiAgICAgICA5LFxuICBaX0RFRkFVTFRfQ09NUFJFU1NJT046ICAgLTEsXG5cblxuICBaX0ZJTFRFUkVEOiAgICAgICAgICAgICAgIDEsXG4gIFpfSFVGRk1BTl9PTkxZOiAgICAgICAgICAgMixcbiAgWl9STEU6ICAgICAgICAgICAgICAgICAgICAzLFxuICBaX0ZJWEVEOiAgICAgICAgICAgICAgICAgIDQsXG4gIFpfREVGQVVMVF9TVFJBVEVHWTogICAgICAgMCxcblxuICAvKiBQb3NzaWJsZSB2YWx1ZXMgb2YgdGhlIGRhdGFfdHlwZSBmaWVsZCAodGhvdWdoIHNlZSBpbmZsYXRlKCkpICovXG4gIFpfQklOQVJZOiAgICAgICAgICAgICAgICAgMCxcbiAgWl9URVhUOiAgICAgICAgICAgICAgICAgICAxLFxuICAvL1pfQVNDSUk6ICAgICAgICAgICAgICAgIDEsIC8vID0gWl9URVhUIChkZXByZWNhdGVkKVxuICBaX1VOS05PV046ICAgICAgICAgICAgICAgIDIsXG5cbiAgLyogVGhlIGRlZmxhdGUgY29tcHJlc3Npb24gbWV0aG9kICovXG4gIFpfREVGTEFURUQ6ICAgICAgICAgICAgICAgOFxuICAvL1pfTlVMTDogICAgICAgICAgICAgICAgIG51bGwgLy8gVXNlIC0xIG9yIG51bGwgaW5saW5lLCBkZXBlbmRpbmcgb24gdmFyIHR5cGVcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8vIE5vdGU6IHdlIGNhbid0IGdldCBzaWduaWZpY2FudCBzcGVlZCBib29zdCBoZXJlLlxuLy8gU28gd3JpdGUgY29kZSB0byBtaW5pbWl6ZSBzaXplIC0gbm8gcHJlZ2VuZXJhdGVkIHRhYmxlc1xuLy8gYW5kIGFycmF5IHRvb2xzIGRlcGVuZGVuY2llcy5cblxuXG4vLyBVc2Ugb3JkaW5hcnkgYXJyYXksIHNpbmNlIHVudHlwZWQgbWFrZXMgbm8gYm9vc3QgaGVyZVxuZnVuY3Rpb24gbWFrZVRhYmxlKCkge1xuICB2YXIgYywgdGFibGUgPSBbXTtcblxuICBmb3IgKHZhciBuID0gMDsgbiA8IDI1NjsgbisrKSB7XG4gICAgYyA9IG47XG4gICAgZm9yICh2YXIgayA9IDA7IGsgPCA4OyBrKyspIHtcbiAgICAgIGMgPSAoKGMgJiAxKSA/ICgweEVEQjg4MzIwIF4gKGMgPj4+IDEpKSA6IChjID4+PiAxKSk7XG4gICAgfVxuICAgIHRhYmxlW25dID0gYztcbiAgfVxuXG4gIHJldHVybiB0YWJsZTtcbn1cblxuLy8gQ3JlYXRlIHRhYmxlIG9uIGxvYWQuIEp1c3QgMjU1IHNpZ25lZCBsb25ncy4gTm90IGEgcHJvYmxlbS5cbnZhciBjcmNUYWJsZSA9IG1ha2VUYWJsZSgpO1xuXG5cbmZ1bmN0aW9uIGNyYzMyKGNyYywgYnVmLCBsZW4sIHBvcykge1xuICB2YXIgdCA9IGNyY1RhYmxlLFxuICAgICAgZW5kID0gcG9zICsgbGVuO1xuXG4gIGNyYyBePSAtMTtcblxuICBmb3IgKHZhciBpID0gcG9zOyBpIDwgZW5kOyBpKyspIHtcbiAgICBjcmMgPSAoY3JjID4+PiA4KSBeIHRbKGNyYyBeIGJ1ZltpXSkgJiAweEZGXTtcbiAgfVxuXG4gIHJldHVybiAoY3JjIF4gKC0xKSk7IC8vID4+PiAwO1xufVxuXG5cbm1vZHVsZS5leHBvcnRzID0gY3JjMzI7XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlscyAgID0gcmVxdWlyZSgnLi4vdXRpbHMvY29tbW9uJyk7XG52YXIgdHJlZXMgICA9IHJlcXVpcmUoJy4vdHJlZXMnKTtcbnZhciBhZGxlcjMyID0gcmVxdWlyZSgnLi9hZGxlcjMyJyk7XG52YXIgY3JjMzIgICA9IHJlcXVpcmUoJy4vY3JjMzInKTtcbnZhciBtc2cgICAgID0gcmVxdWlyZSgnLi9tZXNzYWdlcycpO1xuXG4vKiBQdWJsaWMgY29uc3RhbnRzID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qL1xuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki9cblxuXG4vKiBBbGxvd2VkIGZsdXNoIHZhbHVlczsgc2VlIGRlZmxhdGUoKSBhbmQgaW5mbGF0ZSgpIGJlbG93IGZvciBkZXRhaWxzICovXG52YXIgWl9OT19GTFVTSCAgICAgID0gMDtcbnZhciBaX1BBUlRJQUxfRkxVU0ggPSAxO1xuLy92YXIgWl9TWU5DX0ZMVVNIICAgID0gMjtcbnZhciBaX0ZVTExfRkxVU0ggICAgPSAzO1xudmFyIFpfRklOSVNIICAgICAgICA9IDQ7XG52YXIgWl9CTE9DSyAgICAgICAgID0gNTtcbi8vdmFyIFpfVFJFRVMgICAgICAgICA9IDY7XG5cblxuLyogUmV0dXJuIGNvZGVzIGZvciB0aGUgY29tcHJlc3Npb24vZGVjb21wcmVzc2lvbiBmdW5jdGlvbnMuIE5lZ2F0aXZlIHZhbHVlc1xuICogYXJlIGVycm9ycywgcG9zaXRpdmUgdmFsdWVzIGFyZSB1c2VkIGZvciBzcGVjaWFsIGJ1dCBub3JtYWwgZXZlbnRzLlxuICovXG52YXIgWl9PSyAgICAgICAgICAgID0gMDtcbnZhciBaX1NUUkVBTV9FTkQgICAgPSAxO1xuLy92YXIgWl9ORUVEX0RJQ1QgICAgID0gMjtcbi8vdmFyIFpfRVJSTk8gICAgICAgICA9IC0xO1xudmFyIFpfU1RSRUFNX0VSUk9SICA9IC0yO1xudmFyIFpfREFUQV9FUlJPUiAgICA9IC0zO1xuLy92YXIgWl9NRU1fRVJST1IgICAgID0gLTQ7XG52YXIgWl9CVUZfRVJST1IgICAgID0gLTU7XG4vL3ZhciBaX1ZFUlNJT05fRVJST1IgPSAtNjtcblxuXG4vKiBjb21wcmVzc2lvbiBsZXZlbHMgKi9cbi8vdmFyIFpfTk9fQ09NUFJFU1NJT04gICAgICA9IDA7XG4vL3ZhciBaX0JFU1RfU1BFRUQgICAgICAgICAgPSAxO1xuLy92YXIgWl9CRVNUX0NPTVBSRVNTSU9OICAgID0gOTtcbnZhciBaX0RFRkFVTFRfQ09NUFJFU1NJT04gPSAtMTtcblxuXG52YXIgWl9GSUxURVJFRCAgICAgICAgICAgID0gMTtcbnZhciBaX0hVRkZNQU5fT05MWSAgICAgICAgPSAyO1xudmFyIFpfUkxFICAgICAgICAgICAgICAgICA9IDM7XG52YXIgWl9GSVhFRCAgICAgICAgICAgICAgID0gNDtcbnZhciBaX0RFRkFVTFRfU1RSQVRFR1kgICAgPSAwO1xuXG4vKiBQb3NzaWJsZSB2YWx1ZXMgb2YgdGhlIGRhdGFfdHlwZSBmaWVsZCAodGhvdWdoIHNlZSBpbmZsYXRlKCkpICovXG4vL3ZhciBaX0JJTkFSWSAgICAgICAgICAgICAgPSAwO1xuLy92YXIgWl9URVhUICAgICAgICAgICAgICAgID0gMTtcbi8vdmFyIFpfQVNDSUkgICAgICAgICAgICAgICA9IDE7IC8vID0gWl9URVhUXG52YXIgWl9VTktOT1dOICAgICAgICAgICAgID0gMjtcblxuXG4vKiBUaGUgZGVmbGF0ZSBjb21wcmVzc2lvbiBtZXRob2QgKi9cbnZhciBaX0RFRkxBVEVEICA9IDg7XG5cbi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovXG5cblxudmFyIE1BWF9NRU1fTEVWRUwgPSA5O1xuLyogTWF4aW11bSB2YWx1ZSBmb3IgbWVtTGV2ZWwgaW4gZGVmbGF0ZUluaXQyICovXG52YXIgTUFYX1dCSVRTID0gMTU7XG4vKiAzMksgTFo3NyB3aW5kb3cgKi9cbnZhciBERUZfTUVNX0xFVkVMID0gODtcblxuXG52YXIgTEVOR1RIX0NPREVTICA9IDI5O1xuLyogbnVtYmVyIG9mIGxlbmd0aCBjb2Rlcywgbm90IGNvdW50aW5nIHRoZSBzcGVjaWFsIEVORF9CTE9DSyBjb2RlICovXG52YXIgTElURVJBTFMgICAgICA9IDI1Njtcbi8qIG51bWJlciBvZiBsaXRlcmFsIGJ5dGVzIDAuLjI1NSAqL1xudmFyIExfQ09ERVMgICAgICAgPSBMSVRFUkFMUyArIDEgKyBMRU5HVEhfQ09ERVM7XG4vKiBudW1iZXIgb2YgTGl0ZXJhbCBvciBMZW5ndGggY29kZXMsIGluY2x1ZGluZyB0aGUgRU5EX0JMT0NLIGNvZGUgKi9cbnZhciBEX0NPREVTICAgICAgID0gMzA7XG4vKiBudW1iZXIgb2YgZGlzdGFuY2UgY29kZXMgKi9cbnZhciBCTF9DT0RFUyAgICAgID0gMTk7XG4vKiBudW1iZXIgb2YgY29kZXMgdXNlZCB0byB0cmFuc2ZlciB0aGUgYml0IGxlbmd0aHMgKi9cbnZhciBIRUFQX1NJWkUgICAgID0gMiAqIExfQ09ERVMgKyAxO1xuLyogbWF4aW11bSBoZWFwIHNpemUgKi9cbnZhciBNQVhfQklUUyAgPSAxNTtcbi8qIEFsbCBjb2RlcyBtdXN0IG5vdCBleGNlZWQgTUFYX0JJVFMgYml0cyAqL1xuXG52YXIgTUlOX01BVENIID0gMztcbnZhciBNQVhfTUFUQ0ggPSAyNTg7XG52YXIgTUlOX0xPT0tBSEVBRCA9IChNQVhfTUFUQ0ggKyBNSU5fTUFUQ0ggKyAxKTtcblxudmFyIFBSRVNFVF9ESUNUID0gMHgyMDtcblxudmFyIElOSVRfU1RBVEUgPSA0MjtcbnZhciBFWFRSQV9TVEFURSA9IDY5O1xudmFyIE5BTUVfU1RBVEUgPSA3MztcbnZhciBDT01NRU5UX1NUQVRFID0gOTE7XG52YXIgSENSQ19TVEFURSA9IDEwMztcbnZhciBCVVNZX1NUQVRFID0gMTEzO1xudmFyIEZJTklTSF9TVEFURSA9IDY2NjtcblxudmFyIEJTX05FRURfTU9SRSAgICAgID0gMTsgLyogYmxvY2sgbm90IGNvbXBsZXRlZCwgbmVlZCBtb3JlIGlucHV0IG9yIG1vcmUgb3V0cHV0ICovXG52YXIgQlNfQkxPQ0tfRE9ORSAgICAgPSAyOyAvKiBibG9jayBmbHVzaCBwZXJmb3JtZWQgKi9cbnZhciBCU19GSU5JU0hfU1RBUlRFRCA9IDM7IC8qIGZpbmlzaCBzdGFydGVkLCBuZWVkIG9ubHkgbW9yZSBvdXRwdXQgYXQgbmV4dCBkZWZsYXRlICovXG52YXIgQlNfRklOSVNIX0RPTkUgICAgPSA0OyAvKiBmaW5pc2ggZG9uZSwgYWNjZXB0IG5vIG1vcmUgaW5wdXQgb3Igb3V0cHV0ICovXG5cbnZhciBPU19DT0RFID0gMHgwMzsgLy8gVW5peCA6KSAuIERvbid0IGRldGVjdCwgdXNlIHRoaXMgZGVmYXVsdC5cblxuZnVuY3Rpb24gZXJyKHN0cm0sIGVycm9yQ29kZSkge1xuICBzdHJtLm1zZyA9IG1zZ1tlcnJvckNvZGVdO1xuICByZXR1cm4gZXJyb3JDb2RlO1xufVxuXG5mdW5jdGlvbiByYW5rKGYpIHtcbiAgcmV0dXJuICgoZikgPDwgMSkgLSAoKGYpID4gNCA/IDkgOiAwKTtcbn1cblxuZnVuY3Rpb24gemVybyhidWYpIHsgdmFyIGxlbiA9IGJ1Zi5sZW5ndGg7IHdoaWxlICgtLWxlbiA+PSAwKSB7IGJ1ZltsZW5dID0gMDsgfSB9XG5cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICogRmx1c2ggYXMgbXVjaCBwZW5kaW5nIG91dHB1dCBhcyBwb3NzaWJsZS4gQWxsIGRlZmxhdGUoKSBvdXRwdXQgZ29lc1xuICogdGhyb3VnaCB0aGlzIGZ1bmN0aW9uIHNvIHNvbWUgYXBwbGljYXRpb25zIG1heSB3aXNoIHRvIG1vZGlmeSBpdFxuICogdG8gYXZvaWQgYWxsb2NhdGluZyBhIGxhcmdlIHN0cm0tPm91dHB1dCBidWZmZXIgYW5kIGNvcHlpbmcgaW50byBpdC5cbiAqIChTZWUgYWxzbyByZWFkX2J1ZigpKS5cbiAqL1xuZnVuY3Rpb24gZmx1c2hfcGVuZGluZyhzdHJtKSB7XG4gIHZhciBzID0gc3RybS5zdGF0ZTtcblxuICAvL190cl9mbHVzaF9iaXRzKHMpO1xuICB2YXIgbGVuID0gcy5wZW5kaW5nO1xuICBpZiAobGVuID4gc3RybS5hdmFpbF9vdXQpIHtcbiAgICBsZW4gPSBzdHJtLmF2YWlsX291dDtcbiAgfVxuICBpZiAobGVuID09PSAwKSB7IHJldHVybjsgfVxuXG4gIHV0aWxzLmFycmF5U2V0KHN0cm0ub3V0cHV0LCBzLnBlbmRpbmdfYnVmLCBzLnBlbmRpbmdfb3V0LCBsZW4sIHN0cm0ubmV4dF9vdXQpO1xuICBzdHJtLm5leHRfb3V0ICs9IGxlbjtcbiAgcy5wZW5kaW5nX291dCArPSBsZW47XG4gIHN0cm0udG90YWxfb3V0ICs9IGxlbjtcbiAgc3RybS5hdmFpbF9vdXQgLT0gbGVuO1xuICBzLnBlbmRpbmcgLT0gbGVuO1xuICBpZiAocy5wZW5kaW5nID09PSAwKSB7XG4gICAgcy5wZW5kaW5nX291dCA9IDA7XG4gIH1cbn1cblxuXG5mdW5jdGlvbiBmbHVzaF9ibG9ja19vbmx5KHMsIGxhc3QpIHtcbiAgdHJlZXMuX3RyX2ZsdXNoX2Jsb2NrKHMsIChzLmJsb2NrX3N0YXJ0ID49IDAgPyBzLmJsb2NrX3N0YXJ0IDogLTEpLCBzLnN0cnN0YXJ0IC0gcy5ibG9ja19zdGFydCwgbGFzdCk7XG4gIHMuYmxvY2tfc3RhcnQgPSBzLnN0cnN0YXJ0O1xuICBmbHVzaF9wZW5kaW5nKHMuc3RybSk7XG59XG5cblxuZnVuY3Rpb24gcHV0X2J5dGUocywgYikge1xuICBzLnBlbmRpbmdfYnVmW3MucGVuZGluZysrXSA9IGI7XG59XG5cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICogUHV0IGEgc2hvcnQgaW4gdGhlIHBlbmRpbmcgYnVmZmVyLiBUaGUgMTYtYml0IHZhbHVlIGlzIHB1dCBpbiBNU0Igb3JkZXIuXG4gKiBJTiBhc3NlcnRpb246IHRoZSBzdHJlYW0gc3RhdGUgaXMgY29ycmVjdCBhbmQgdGhlcmUgaXMgZW5vdWdoIHJvb20gaW5cbiAqIHBlbmRpbmdfYnVmLlxuICovXG5mdW5jdGlvbiBwdXRTaG9ydE1TQihzLCBiKSB7XG4vLyAgcHV0X2J5dGUocywgKEJ5dGUpKGIgPj4gOCkpO1xuLy8gIHB1dF9ieXRlKHMsIChCeXRlKShiICYgMHhmZikpO1xuICBzLnBlbmRpbmdfYnVmW3MucGVuZGluZysrXSA9IChiID4+PiA4KSAmIDB4ZmY7XG4gIHMucGVuZGluZ19idWZbcy5wZW5kaW5nKytdID0gYiAmIDB4ZmY7XG59XG5cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBSZWFkIGEgbmV3IGJ1ZmZlciBmcm9tIHRoZSBjdXJyZW50IGlucHV0IHN0cmVhbSwgdXBkYXRlIHRoZSBhZGxlcjMyXG4gKiBhbmQgdG90YWwgbnVtYmVyIG9mIGJ5dGVzIHJlYWQuICBBbGwgZGVmbGF0ZSgpIGlucHV0IGdvZXMgdGhyb3VnaFxuICogdGhpcyBmdW5jdGlvbiBzbyBzb21lIGFwcGxpY2F0aW9ucyBtYXkgd2lzaCB0byBtb2RpZnkgaXQgdG8gYXZvaWRcbiAqIGFsbG9jYXRpbmcgYSBsYXJnZSBzdHJtLT5pbnB1dCBidWZmZXIgYW5kIGNvcHlpbmcgZnJvbSBpdC5cbiAqIChTZWUgYWxzbyBmbHVzaF9wZW5kaW5nKCkpLlxuICovXG5mdW5jdGlvbiByZWFkX2J1ZihzdHJtLCBidWYsIHN0YXJ0LCBzaXplKSB7XG4gIHZhciBsZW4gPSBzdHJtLmF2YWlsX2luO1xuXG4gIGlmIChsZW4gPiBzaXplKSB7IGxlbiA9IHNpemU7IH1cbiAgaWYgKGxlbiA9PT0gMCkgeyByZXR1cm4gMDsgfVxuXG4gIHN0cm0uYXZhaWxfaW4gLT0gbGVuO1xuXG4gIC8vIHptZW1jcHkoYnVmLCBzdHJtLT5uZXh0X2luLCBsZW4pO1xuICB1dGlscy5hcnJheVNldChidWYsIHN0cm0uaW5wdXQsIHN0cm0ubmV4dF9pbiwgbGVuLCBzdGFydCk7XG4gIGlmIChzdHJtLnN0YXRlLndyYXAgPT09IDEpIHtcbiAgICBzdHJtLmFkbGVyID0gYWRsZXIzMihzdHJtLmFkbGVyLCBidWYsIGxlbiwgc3RhcnQpO1xuICB9XG5cbiAgZWxzZSBpZiAoc3RybS5zdGF0ZS53cmFwID09PSAyKSB7XG4gICAgc3RybS5hZGxlciA9IGNyYzMyKHN0cm0uYWRsZXIsIGJ1ZiwgbGVuLCBzdGFydCk7XG4gIH1cblxuICBzdHJtLm5leHRfaW4gKz0gbGVuO1xuICBzdHJtLnRvdGFsX2luICs9IGxlbjtcblxuICByZXR1cm4gbGVuO1xufVxuXG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICogU2V0IG1hdGNoX3N0YXJ0IHRvIHRoZSBsb25nZXN0IG1hdGNoIHN0YXJ0aW5nIGF0IHRoZSBnaXZlbiBzdHJpbmcgYW5kXG4gKiByZXR1cm4gaXRzIGxlbmd0aC4gTWF0Y2hlcyBzaG9ydGVyIG9yIGVxdWFsIHRvIHByZXZfbGVuZ3RoIGFyZSBkaXNjYXJkZWQsXG4gKiBpbiB3aGljaCBjYXNlIHRoZSByZXN1bHQgaXMgZXF1YWwgdG8gcHJldl9sZW5ndGggYW5kIG1hdGNoX3N0YXJ0IGlzXG4gKiBnYXJiYWdlLlxuICogSU4gYXNzZXJ0aW9uczogY3VyX21hdGNoIGlzIHRoZSBoZWFkIG9mIHRoZSBoYXNoIGNoYWluIGZvciB0aGUgY3VycmVudFxuICogICBzdHJpbmcgKHN0cnN0YXJ0KSBhbmQgaXRzIGRpc3RhbmNlIGlzIDw9IE1BWF9ESVNULCBhbmQgcHJldl9sZW5ndGggPj0gMVxuICogT1VUIGFzc2VydGlvbjogdGhlIG1hdGNoIGxlbmd0aCBpcyBub3QgZ3JlYXRlciB0aGFuIHMtPmxvb2thaGVhZC5cbiAqL1xuZnVuY3Rpb24gbG9uZ2VzdF9tYXRjaChzLCBjdXJfbWF0Y2gpIHtcbiAgdmFyIGNoYWluX2xlbmd0aCA9IHMubWF4X2NoYWluX2xlbmd0aDsgICAgICAvKiBtYXggaGFzaCBjaGFpbiBsZW5ndGggKi9cbiAgdmFyIHNjYW4gPSBzLnN0cnN0YXJ0OyAvKiBjdXJyZW50IHN0cmluZyAqL1xuICB2YXIgbWF0Y2g7ICAgICAgICAgICAgICAgICAgICAgICAvKiBtYXRjaGVkIHN0cmluZyAqL1xuICB2YXIgbGVuOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGxlbmd0aCBvZiBjdXJyZW50IG1hdGNoICovXG4gIHZhciBiZXN0X2xlbiA9IHMucHJldl9sZW5ndGg7ICAgICAgICAgICAgICAvKiBiZXN0IG1hdGNoIGxlbmd0aCBzbyBmYXIgKi9cbiAgdmFyIG5pY2VfbWF0Y2ggPSBzLm5pY2VfbWF0Y2g7ICAgICAgICAgICAgIC8qIHN0b3AgaWYgbWF0Y2ggbG9uZyBlbm91Z2ggKi9cbiAgdmFyIGxpbWl0ID0gKHMuc3Ryc3RhcnQgPiAocy53X3NpemUgLSBNSU5fTE9PS0FIRUFEKSkgP1xuICAgICAgcy5zdHJzdGFydCAtIChzLndfc2l6ZSAtIE1JTl9MT09LQUhFQUQpIDogMC8qTklMKi87XG5cbiAgdmFyIF93aW4gPSBzLndpbmRvdzsgLy8gc2hvcnRjdXRcblxuICB2YXIgd21hc2sgPSBzLndfbWFzaztcbiAgdmFyIHByZXYgID0gcy5wcmV2O1xuXG4gIC8qIFN0b3Agd2hlbiBjdXJfbWF0Y2ggYmVjb21lcyA8PSBsaW1pdC4gVG8gc2ltcGxpZnkgdGhlIGNvZGUsXG4gICAqIHdlIHByZXZlbnQgbWF0Y2hlcyB3aXRoIHRoZSBzdHJpbmcgb2Ygd2luZG93IGluZGV4IDAuXG4gICAqL1xuXG4gIHZhciBzdHJlbmQgPSBzLnN0cnN0YXJ0ICsgTUFYX01BVENIO1xuICB2YXIgc2Nhbl9lbmQxICA9IF93aW5bc2NhbiArIGJlc3RfbGVuIC0gMV07XG4gIHZhciBzY2FuX2VuZCAgID0gX3dpbltzY2FuICsgYmVzdF9sZW5dO1xuXG4gIC8qIFRoZSBjb2RlIGlzIG9wdGltaXplZCBmb3IgSEFTSF9CSVRTID49IDggYW5kIE1BWF9NQVRDSC0yIG11bHRpcGxlIG9mIDE2LlxuICAgKiBJdCBpcyBlYXN5IHRvIGdldCByaWQgb2YgdGhpcyBvcHRpbWl6YXRpb24gaWYgbmVjZXNzYXJ5LlxuICAgKi9cbiAgLy8gQXNzZXJ0KHMtPmhhc2hfYml0cyA+PSA4ICYmIE1BWF9NQVRDSCA9PSAyNTgsIFwiQ29kZSB0b28gY2xldmVyXCIpO1xuXG4gIC8qIERvIG5vdCB3YXN0ZSB0b28gbXVjaCB0aW1lIGlmIHdlIGFscmVhZHkgaGF2ZSBhIGdvb2QgbWF0Y2g6ICovXG4gIGlmIChzLnByZXZfbGVuZ3RoID49IHMuZ29vZF9tYXRjaCkge1xuICAgIGNoYWluX2xlbmd0aCA+Pj0gMjtcbiAgfVxuICAvKiBEbyBub3QgbG9vayBmb3IgbWF0Y2hlcyBiZXlvbmQgdGhlIGVuZCBvZiB0aGUgaW5wdXQuIFRoaXMgaXMgbmVjZXNzYXJ5XG4gICAqIHRvIG1ha2UgZGVmbGF0ZSBkZXRlcm1pbmlzdGljLlxuICAgKi9cbiAgaWYgKG5pY2VfbWF0Y2ggPiBzLmxvb2thaGVhZCkgeyBuaWNlX21hdGNoID0gcy5sb29rYWhlYWQ7IH1cblxuICAvLyBBc3NlcnQoKHVsZylzLT5zdHJzdGFydCA8PSBzLT53aW5kb3dfc2l6ZS1NSU5fTE9PS0FIRUFELCBcIm5lZWQgbG9va2FoZWFkXCIpO1xuXG4gIGRvIHtcbiAgICAvLyBBc3NlcnQoY3VyX21hdGNoIDwgcy0+c3Ryc3RhcnQsIFwibm8gZnV0dXJlXCIpO1xuICAgIG1hdGNoID0gY3VyX21hdGNoO1xuXG4gICAgLyogU2tpcCB0byBuZXh0IG1hdGNoIGlmIHRoZSBtYXRjaCBsZW5ndGggY2Fubm90IGluY3JlYXNlXG4gICAgICogb3IgaWYgdGhlIG1hdGNoIGxlbmd0aCBpcyBsZXNzIHRoYW4gMi4gIE5vdGUgdGhhdCB0aGUgY2hlY2tzIGJlbG93XG4gICAgICogZm9yIGluc3VmZmljaWVudCBsb29rYWhlYWQgb25seSBvY2N1ciBvY2Nhc2lvbmFsbHkgZm9yIHBlcmZvcm1hbmNlXG4gICAgICogcmVhc29ucy4gIFRoZXJlZm9yZSB1bmluaXRpYWxpemVkIG1lbW9yeSB3aWxsIGJlIGFjY2Vzc2VkLCBhbmRcbiAgICAgKiBjb25kaXRpb25hbCBqdW1wcyB3aWxsIGJlIG1hZGUgdGhhdCBkZXBlbmQgb24gdGhvc2UgdmFsdWVzLlxuICAgICAqIEhvd2V2ZXIgdGhlIGxlbmd0aCBvZiB0aGUgbWF0Y2ggaXMgbGltaXRlZCB0byB0aGUgbG9va2FoZWFkLCBzb1xuICAgICAqIHRoZSBvdXRwdXQgb2YgZGVmbGF0ZSBpcyBub3QgYWZmZWN0ZWQgYnkgdGhlIHVuaW5pdGlhbGl6ZWQgdmFsdWVzLlxuICAgICAqL1xuXG4gICAgaWYgKF93aW5bbWF0Y2ggKyBiZXN0X2xlbl0gICAgICE9PSBzY2FuX2VuZCAgfHxcbiAgICAgICAgX3dpblttYXRjaCArIGJlc3RfbGVuIC0gMV0gIT09IHNjYW5fZW5kMSB8fFxuICAgICAgICBfd2luW21hdGNoXSAgICAgICAgICAgICAgICAhPT0gX3dpbltzY2FuXSB8fFxuICAgICAgICBfd2luWysrbWF0Y2hdICAgICAgICAgICAgICAhPT0gX3dpbltzY2FuICsgMV0pIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIC8qIFRoZSBjaGVjayBhdCBiZXN0X2xlbi0xIGNhbiBiZSByZW1vdmVkIGJlY2F1c2UgaXQgd2lsbCBiZSBtYWRlXG4gICAgICogYWdhaW4gbGF0ZXIuIChUaGlzIGhldXJpc3RpYyBpcyBub3QgYWx3YXlzIGEgd2luLilcbiAgICAgKiBJdCBpcyBub3QgbmVjZXNzYXJ5IHRvIGNvbXBhcmUgc2NhblsyXSBhbmQgbWF0Y2hbMl0gc2luY2UgdGhleVxuICAgICAqIGFyZSBhbHdheXMgZXF1YWwgd2hlbiB0aGUgb3RoZXIgYnl0ZXMgbWF0Y2gsIGdpdmVuIHRoYXRcbiAgICAgKiB0aGUgaGFzaCBrZXlzIGFyZSBlcXVhbCBhbmQgdGhhdCBIQVNIX0JJVFMgPj0gOC5cbiAgICAgKi9cbiAgICBzY2FuICs9IDI7XG4gICAgbWF0Y2grKztcbiAgICAvLyBBc3NlcnQoKnNjYW4gPT0gKm1hdGNoLCBcIm1hdGNoWzJdP1wiKTtcblxuICAgIC8qIFdlIGNoZWNrIGZvciBpbnN1ZmZpY2llbnQgbG9va2FoZWFkIG9ubHkgZXZlcnkgOHRoIGNvbXBhcmlzb247XG4gICAgICogdGhlIDI1NnRoIGNoZWNrIHdpbGwgYmUgbWFkZSBhdCBzdHJzdGFydCsyNTguXG4gICAgICovXG4gICAgZG8ge1xuICAgICAgLypqc2hpbnQgbm9lbXB0eTpmYWxzZSovXG4gICAgfSB3aGlsZSAoX3dpblsrK3NjYW5dID09PSBfd2luWysrbWF0Y2hdICYmIF93aW5bKytzY2FuXSA9PT0gX3dpblsrK21hdGNoXSAmJlxuICAgICAgICAgICAgIF93aW5bKytzY2FuXSA9PT0gX3dpblsrK21hdGNoXSAmJiBfd2luWysrc2Nhbl0gPT09IF93aW5bKyttYXRjaF0gJiZcbiAgICAgICAgICAgICBfd2luWysrc2Nhbl0gPT09IF93aW5bKyttYXRjaF0gJiYgX3dpblsrK3NjYW5dID09PSBfd2luWysrbWF0Y2hdICYmXG4gICAgICAgICAgICAgX3dpblsrK3NjYW5dID09PSBfd2luWysrbWF0Y2hdICYmIF93aW5bKytzY2FuXSA9PT0gX3dpblsrK21hdGNoXSAmJlxuICAgICAgICAgICAgIHNjYW4gPCBzdHJlbmQpO1xuXG4gICAgLy8gQXNzZXJ0KHNjYW4gPD0gcy0+d2luZG93Kyh1bnNpZ25lZCkocy0+d2luZG93X3NpemUtMSksIFwid2lsZCBzY2FuXCIpO1xuXG4gICAgbGVuID0gTUFYX01BVENIIC0gKHN0cmVuZCAtIHNjYW4pO1xuICAgIHNjYW4gPSBzdHJlbmQgLSBNQVhfTUFUQ0g7XG5cbiAgICBpZiAobGVuID4gYmVzdF9sZW4pIHtcbiAgICAgIHMubWF0Y2hfc3RhcnQgPSBjdXJfbWF0Y2g7XG4gICAgICBiZXN0X2xlbiA9IGxlbjtcbiAgICAgIGlmIChsZW4gPj0gbmljZV9tYXRjaCkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIHNjYW5fZW5kMSAgPSBfd2luW3NjYW4gKyBiZXN0X2xlbiAtIDFdO1xuICAgICAgc2Nhbl9lbmQgICA9IF93aW5bc2NhbiArIGJlc3RfbGVuXTtcbiAgICB9XG4gIH0gd2hpbGUgKChjdXJfbWF0Y2ggPSBwcmV2W2N1cl9tYXRjaCAmIHdtYXNrXSkgPiBsaW1pdCAmJiAtLWNoYWluX2xlbmd0aCAhPT0gMCk7XG5cbiAgaWYgKGJlc3RfbGVuIDw9IHMubG9va2FoZWFkKSB7XG4gICAgcmV0dXJuIGJlc3RfbGVuO1xuICB9XG4gIHJldHVybiBzLmxvb2thaGVhZDtcbn1cblxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIEZpbGwgdGhlIHdpbmRvdyB3aGVuIHRoZSBsb29rYWhlYWQgYmVjb21lcyBpbnN1ZmZpY2llbnQuXG4gKiBVcGRhdGVzIHN0cnN0YXJ0IGFuZCBsb29rYWhlYWQuXG4gKlxuICogSU4gYXNzZXJ0aW9uOiBsb29rYWhlYWQgPCBNSU5fTE9PS0FIRUFEXG4gKiBPVVQgYXNzZXJ0aW9uczogc3Ryc3RhcnQgPD0gd2luZG93X3NpemUtTUlOX0xPT0tBSEVBRFxuICogICAgQXQgbGVhc3Qgb25lIGJ5dGUgaGFzIGJlZW4gcmVhZCwgb3IgYXZhaWxfaW4gPT0gMDsgcmVhZHMgYXJlXG4gKiAgICBwZXJmb3JtZWQgZm9yIGF0IGxlYXN0IHR3byBieXRlcyAocmVxdWlyZWQgZm9yIHRoZSB6aXAgdHJhbnNsYXRlX2VvbFxuICogICAgb3B0aW9uIC0tIG5vdCBzdXBwb3J0ZWQgaGVyZSkuXG4gKi9cbmZ1bmN0aW9uIGZpbGxfd2luZG93KHMpIHtcbiAgdmFyIF93X3NpemUgPSBzLndfc2l6ZTtcbiAgdmFyIHAsIG4sIG0sIG1vcmUsIHN0cjtcblxuICAvL0Fzc2VydChzLT5sb29rYWhlYWQgPCBNSU5fTE9PS0FIRUFELCBcImFscmVhZHkgZW5vdWdoIGxvb2thaGVhZFwiKTtcblxuICBkbyB7XG4gICAgbW9yZSA9IHMud2luZG93X3NpemUgLSBzLmxvb2thaGVhZCAtIHMuc3Ryc3RhcnQ7XG5cbiAgICAvLyBKUyBpbnRzIGhhdmUgMzIgYml0LCBibG9jayBiZWxvdyBub3QgbmVlZGVkXG4gICAgLyogRGVhbCB3aXRoICFAIyQlIDY0SyBsaW1pdDogKi9cbiAgICAvL2lmIChzaXplb2YoaW50KSA8PSAyKSB7XG4gICAgLy8gICAgaWYgKG1vcmUgPT0gMCAmJiBzLT5zdHJzdGFydCA9PSAwICYmIHMtPmxvb2thaGVhZCA9PSAwKSB7XG4gICAgLy8gICAgICAgIG1vcmUgPSB3c2l6ZTtcbiAgICAvL1xuICAgIC8vICB9IGVsc2UgaWYgKG1vcmUgPT0gKHVuc2lnbmVkKSgtMSkpIHtcbiAgICAvLyAgICAgICAgLyogVmVyeSB1bmxpa2VseSwgYnV0IHBvc3NpYmxlIG9uIDE2IGJpdCBtYWNoaW5lIGlmXG4gICAgLy8gICAgICAgICAqIHN0cnN0YXJ0ID09IDAgJiYgbG9va2FoZWFkID09IDEgKGlucHV0IGRvbmUgYSBieXRlIGF0IHRpbWUpXG4gICAgLy8gICAgICAgICAqL1xuICAgIC8vICAgICAgICBtb3JlLS07XG4gICAgLy8gICAgfVxuICAgIC8vfVxuXG5cbiAgICAvKiBJZiB0aGUgd2luZG93IGlzIGFsbW9zdCBmdWxsIGFuZCB0aGVyZSBpcyBpbnN1ZmZpY2llbnQgbG9va2FoZWFkLFxuICAgICAqIG1vdmUgdGhlIHVwcGVyIGhhbGYgdG8gdGhlIGxvd2VyIG9uZSB0byBtYWtlIHJvb20gaW4gdGhlIHVwcGVyIGhhbGYuXG4gICAgICovXG4gICAgaWYgKHMuc3Ryc3RhcnQgPj0gX3dfc2l6ZSArIChfd19zaXplIC0gTUlOX0xPT0tBSEVBRCkpIHtcblxuICAgICAgdXRpbHMuYXJyYXlTZXQocy53aW5kb3csIHMud2luZG93LCBfd19zaXplLCBfd19zaXplLCAwKTtcbiAgICAgIHMubWF0Y2hfc3RhcnQgLT0gX3dfc2l6ZTtcbiAgICAgIHMuc3Ryc3RhcnQgLT0gX3dfc2l6ZTtcbiAgICAgIC8qIHdlIG5vdyBoYXZlIHN0cnN0YXJ0ID49IE1BWF9ESVNUICovXG4gICAgICBzLmJsb2NrX3N0YXJ0IC09IF93X3NpemU7XG5cbiAgICAgIC8qIFNsaWRlIHRoZSBoYXNoIHRhYmxlIChjb3VsZCBiZSBhdm9pZGVkIHdpdGggMzIgYml0IHZhbHVlc1xuICAgICAgIGF0IHRoZSBleHBlbnNlIG9mIG1lbW9yeSB1c2FnZSkuIFdlIHNsaWRlIGV2ZW4gd2hlbiBsZXZlbCA9PSAwXG4gICAgICAgdG8ga2VlcCB0aGUgaGFzaCB0YWJsZSBjb25zaXN0ZW50IGlmIHdlIHN3aXRjaCBiYWNrIHRvIGxldmVsID4gMFxuICAgICAgIGxhdGVyLiAoVXNpbmcgbGV2ZWwgMCBwZXJtYW5lbnRseSBpcyBub3QgYW4gb3B0aW1hbCB1c2FnZSBvZlxuICAgICAgIHpsaWIsIHNvIHdlIGRvbid0IGNhcmUgYWJvdXQgdGhpcyBwYXRob2xvZ2ljYWwgY2FzZS4pXG4gICAgICAgKi9cblxuICAgICAgbiA9IHMuaGFzaF9zaXplO1xuICAgICAgcCA9IG47XG4gICAgICBkbyB7XG4gICAgICAgIG0gPSBzLmhlYWRbLS1wXTtcbiAgICAgICAgcy5oZWFkW3BdID0gKG0gPj0gX3dfc2l6ZSA/IG0gLSBfd19zaXplIDogMCk7XG4gICAgICB9IHdoaWxlICgtLW4pO1xuXG4gICAgICBuID0gX3dfc2l6ZTtcbiAgICAgIHAgPSBuO1xuICAgICAgZG8ge1xuICAgICAgICBtID0gcy5wcmV2Wy0tcF07XG4gICAgICAgIHMucHJldltwXSA9IChtID49IF93X3NpemUgPyBtIC0gX3dfc2l6ZSA6IDApO1xuICAgICAgICAvKiBJZiBuIGlzIG5vdCBvbiBhbnkgaGFzaCBjaGFpbiwgcHJldltuXSBpcyBnYXJiYWdlIGJ1dFxuICAgICAgICAgKiBpdHMgdmFsdWUgd2lsbCBuZXZlciBiZSB1c2VkLlxuICAgICAgICAgKi9cbiAgICAgIH0gd2hpbGUgKC0tbik7XG5cbiAgICAgIG1vcmUgKz0gX3dfc2l6ZTtcbiAgICB9XG4gICAgaWYgKHMuc3RybS5hdmFpbF9pbiA9PT0gMCkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgLyogSWYgdGhlcmUgd2FzIG5vIHNsaWRpbmc6XG4gICAgICogICAgc3Ryc3RhcnQgPD0gV1NJWkUrTUFYX0RJU1QtMSAmJiBsb29rYWhlYWQgPD0gTUlOX0xPT0tBSEVBRCAtIDEgJiZcbiAgICAgKiAgICBtb3JlID09IHdpbmRvd19zaXplIC0gbG9va2FoZWFkIC0gc3Ryc3RhcnRcbiAgICAgKiA9PiBtb3JlID49IHdpbmRvd19zaXplIC0gKE1JTl9MT09LQUhFQUQtMSArIFdTSVpFICsgTUFYX0RJU1QtMSlcbiAgICAgKiA9PiBtb3JlID49IHdpbmRvd19zaXplIC0gMipXU0laRSArIDJcbiAgICAgKiBJbiB0aGUgQklHX01FTSBvciBNTUFQIGNhc2UgKG5vdCB5ZXQgc3VwcG9ydGVkKSxcbiAgICAgKiAgIHdpbmRvd19zaXplID09IGlucHV0X3NpemUgKyBNSU5fTE9PS0FIRUFEICAmJlxuICAgICAqICAgc3Ryc3RhcnQgKyBzLT5sb29rYWhlYWQgPD0gaW5wdXRfc2l6ZSA9PiBtb3JlID49IE1JTl9MT09LQUhFQUQuXG4gICAgICogT3RoZXJ3aXNlLCB3aW5kb3dfc2l6ZSA9PSAyKldTSVpFIHNvIG1vcmUgPj0gMi5cbiAgICAgKiBJZiB0aGVyZSB3YXMgc2xpZGluZywgbW9yZSA+PSBXU0laRS4gU28gaW4gYWxsIGNhc2VzLCBtb3JlID49IDIuXG4gICAgICovXG4gICAgLy9Bc3NlcnQobW9yZSA+PSAyLCBcIm1vcmUgPCAyXCIpO1xuICAgIG4gPSByZWFkX2J1ZihzLnN0cm0sIHMud2luZG93LCBzLnN0cnN0YXJ0ICsgcy5sb29rYWhlYWQsIG1vcmUpO1xuICAgIHMubG9va2FoZWFkICs9IG47XG5cbiAgICAvKiBJbml0aWFsaXplIHRoZSBoYXNoIHZhbHVlIG5vdyB0aGF0IHdlIGhhdmUgc29tZSBpbnB1dDogKi9cbiAgICBpZiAocy5sb29rYWhlYWQgKyBzLmluc2VydCA+PSBNSU5fTUFUQ0gpIHtcbiAgICAgIHN0ciA9IHMuc3Ryc3RhcnQgLSBzLmluc2VydDtcbiAgICAgIHMuaW5zX2ggPSBzLndpbmRvd1tzdHJdO1xuXG4gICAgICAvKiBVUERBVEVfSEFTSChzLCBzLT5pbnNfaCwgcy0+d2luZG93W3N0ciArIDFdKTsgKi9cbiAgICAgIHMuaW5zX2ggPSAoKHMuaW5zX2ggPDwgcy5oYXNoX3NoaWZ0KSBeIHMud2luZG93W3N0ciArIDFdKSAmIHMuaGFzaF9tYXNrO1xuLy8jaWYgTUlOX01BVENIICE9IDNcbi8vICAgICAgICBDYWxsIHVwZGF0ZV9oYXNoKCkgTUlOX01BVENILTMgbW9yZSB0aW1lc1xuLy8jZW5kaWZcbiAgICAgIHdoaWxlIChzLmluc2VydCkge1xuICAgICAgICAvKiBVUERBVEVfSEFTSChzLCBzLT5pbnNfaCwgcy0+d2luZG93W3N0ciArIE1JTl9NQVRDSC0xXSk7ICovXG4gICAgICAgIHMuaW5zX2ggPSAoKHMuaW5zX2ggPDwgcy5oYXNoX3NoaWZ0KSBeIHMud2luZG93W3N0ciArIE1JTl9NQVRDSCAtIDFdKSAmIHMuaGFzaF9tYXNrO1xuXG4gICAgICAgIHMucHJldltzdHIgJiBzLndfbWFza10gPSBzLmhlYWRbcy5pbnNfaF07XG4gICAgICAgIHMuaGVhZFtzLmluc19oXSA9IHN0cjtcbiAgICAgICAgc3RyKys7XG4gICAgICAgIHMuaW5zZXJ0LS07XG4gICAgICAgIGlmIChzLmxvb2thaGVhZCArIHMuaW5zZXJ0IDwgTUlOX01BVENIKSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgLyogSWYgdGhlIHdob2xlIGlucHV0IGhhcyBsZXNzIHRoYW4gTUlOX01BVENIIGJ5dGVzLCBpbnNfaCBpcyBnYXJiYWdlLFxuICAgICAqIGJ1dCB0aGlzIGlzIG5vdCBpbXBvcnRhbnQgc2luY2Ugb25seSBsaXRlcmFsIGJ5dGVzIHdpbGwgYmUgZW1pdHRlZC5cbiAgICAgKi9cblxuICB9IHdoaWxlIChzLmxvb2thaGVhZCA8IE1JTl9MT09LQUhFQUQgJiYgcy5zdHJtLmF2YWlsX2luICE9PSAwKTtcblxuICAvKiBJZiB0aGUgV0lOX0lOSVQgYnl0ZXMgYWZ0ZXIgdGhlIGVuZCBvZiB0aGUgY3VycmVudCBkYXRhIGhhdmUgbmV2ZXIgYmVlblxuICAgKiB3cml0dGVuLCB0aGVuIHplcm8gdGhvc2UgYnl0ZXMgaW4gb3JkZXIgdG8gYXZvaWQgbWVtb3J5IGNoZWNrIHJlcG9ydHMgb2ZcbiAgICogdGhlIHVzZSBvZiB1bmluaXRpYWxpemVkIChvciB1bmluaXRpYWxpc2VkIGFzIEp1bGlhbiB3cml0ZXMpIGJ5dGVzIGJ5XG4gICAqIHRoZSBsb25nZXN0IG1hdGNoIHJvdXRpbmVzLiAgVXBkYXRlIHRoZSBoaWdoIHdhdGVyIG1hcmsgZm9yIHRoZSBuZXh0XG4gICAqIHRpbWUgdGhyb3VnaCBoZXJlLiAgV0lOX0lOSVQgaXMgc2V0IHRvIE1BWF9NQVRDSCBzaW5jZSB0aGUgbG9uZ2VzdCBtYXRjaFxuICAgKiByb3V0aW5lcyBhbGxvdyBzY2FubmluZyB0byBzdHJzdGFydCArIE1BWF9NQVRDSCwgaWdub3JpbmcgbG9va2FoZWFkLlxuICAgKi9cbi8vICBpZiAocy5oaWdoX3dhdGVyIDwgcy53aW5kb3dfc2l6ZSkge1xuLy8gICAgdmFyIGN1cnIgPSBzLnN0cnN0YXJ0ICsgcy5sb29rYWhlYWQ7XG4vLyAgICB2YXIgaW5pdCA9IDA7XG4vL1xuLy8gICAgaWYgKHMuaGlnaF93YXRlciA8IGN1cnIpIHtcbi8vICAgICAgLyogUHJldmlvdXMgaGlnaCB3YXRlciBtYXJrIGJlbG93IGN1cnJlbnQgZGF0YSAtLSB6ZXJvIFdJTl9JTklUXG4vLyAgICAgICAqIGJ5dGVzIG9yIHVwIHRvIGVuZCBvZiB3aW5kb3csIHdoaWNoZXZlciBpcyBsZXNzLlxuLy8gICAgICAgKi9cbi8vICAgICAgaW5pdCA9IHMud2luZG93X3NpemUgLSBjdXJyO1xuLy8gICAgICBpZiAoaW5pdCA+IFdJTl9JTklUKVxuLy8gICAgICAgIGluaXQgPSBXSU5fSU5JVDtcbi8vICAgICAgem1lbXplcm8ocy0+d2luZG93ICsgY3VyciwgKHVuc2lnbmVkKWluaXQpO1xuLy8gICAgICBzLT5oaWdoX3dhdGVyID0gY3VyciArIGluaXQ7XG4vLyAgICB9XG4vLyAgICBlbHNlIGlmIChzLT5oaWdoX3dhdGVyIDwgKHVsZyljdXJyICsgV0lOX0lOSVQpIHtcbi8vICAgICAgLyogSGlnaCB3YXRlciBtYXJrIGF0IG9yIGFib3ZlIGN1cnJlbnQgZGF0YSwgYnV0IGJlbG93IGN1cnJlbnQgZGF0YVxuLy8gICAgICAgKiBwbHVzIFdJTl9JTklUIC0tIHplcm8gb3V0IHRvIGN1cnJlbnQgZGF0YSBwbHVzIFdJTl9JTklULCBvciB1cFxuLy8gICAgICAgKiB0byBlbmQgb2Ygd2luZG93LCB3aGljaGV2ZXIgaXMgbGVzcy5cbi8vICAgICAgICovXG4vLyAgICAgIGluaXQgPSAodWxnKWN1cnIgKyBXSU5fSU5JVCAtIHMtPmhpZ2hfd2F0ZXI7XG4vLyAgICAgIGlmIChpbml0ID4gcy0+d2luZG93X3NpemUgLSBzLT5oaWdoX3dhdGVyKVxuLy8gICAgICAgIGluaXQgPSBzLT53aW5kb3dfc2l6ZSAtIHMtPmhpZ2hfd2F0ZXI7XG4vLyAgICAgIHptZW16ZXJvKHMtPndpbmRvdyArIHMtPmhpZ2hfd2F0ZXIsICh1bnNpZ25lZClpbml0KTtcbi8vICAgICAgcy0+aGlnaF93YXRlciArPSBpbml0O1xuLy8gICAgfVxuLy8gIH1cbi8vXG4vLyAgQXNzZXJ0KCh1bGcpcy0+c3Ryc3RhcnQgPD0gcy0+d2luZG93X3NpemUgLSBNSU5fTE9PS0FIRUFELFxuLy8gICAgXCJub3QgZW5vdWdoIHJvb20gZm9yIHNlYXJjaFwiKTtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBDb3B5IHdpdGhvdXQgY29tcHJlc3Npb24gYXMgbXVjaCBhcyBwb3NzaWJsZSBmcm9tIHRoZSBpbnB1dCBzdHJlYW0sIHJldHVyblxuICogdGhlIGN1cnJlbnQgYmxvY2sgc3RhdGUuXG4gKiBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IGluc2VydCBuZXcgc3RyaW5ncyBpbiB0aGUgZGljdGlvbmFyeSBzaW5jZVxuICogdW5jb21wcmVzc2libGUgZGF0YSBpcyBwcm9iYWJseSBub3QgdXNlZnVsLiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWRcbiAqIG9ubHkgZm9yIHRoZSBsZXZlbD0wIGNvbXByZXNzaW9uIG9wdGlvbi5cbiAqIE5PVEU6IHRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIG9wdGltaXplZCB0byBhdm9pZCBleHRyYSBjb3B5aW5nIGZyb21cbiAqIHdpbmRvdyB0byBwZW5kaW5nX2J1Zi5cbiAqL1xuZnVuY3Rpb24gZGVmbGF0ZV9zdG9yZWQocywgZmx1c2gpIHtcbiAgLyogU3RvcmVkIGJsb2NrcyBhcmUgbGltaXRlZCB0byAweGZmZmYgYnl0ZXMsIHBlbmRpbmdfYnVmIGlzIGxpbWl0ZWRcbiAgICogdG8gcGVuZGluZ19idWZfc2l6ZSwgYW5kIGVhY2ggc3RvcmVkIGJsb2NrIGhhcyBhIDUgYnl0ZSBoZWFkZXI6XG4gICAqL1xuICB2YXIgbWF4X2Jsb2NrX3NpemUgPSAweGZmZmY7XG5cbiAgaWYgKG1heF9ibG9ja19zaXplID4gcy5wZW5kaW5nX2J1Zl9zaXplIC0gNSkge1xuICAgIG1heF9ibG9ja19zaXplID0gcy5wZW5kaW5nX2J1Zl9zaXplIC0gNTtcbiAgfVxuXG4gIC8qIENvcHkgYXMgbXVjaCBhcyBwb3NzaWJsZSBmcm9tIGlucHV0IHRvIG91dHB1dDogKi9cbiAgZm9yICg7Oykge1xuICAgIC8qIEZpbGwgdGhlIHdpbmRvdyBhcyBtdWNoIGFzIHBvc3NpYmxlOiAqL1xuICAgIGlmIChzLmxvb2thaGVhZCA8PSAxKSB7XG5cbiAgICAgIC8vQXNzZXJ0KHMtPnN0cnN0YXJ0IDwgcy0+d19zaXplK01BWF9ESVNUKHMpIHx8XG4gICAgICAvLyAgcy0+YmxvY2tfc3RhcnQgPj0gKGxvbmcpcy0+d19zaXplLCBcInNsaWRlIHRvbyBsYXRlXCIpO1xuLy8gICAgICBpZiAoIShzLnN0cnN0YXJ0IDwgcy53X3NpemUgKyAocy53X3NpemUgLSBNSU5fTE9PS0FIRUFEKSB8fFxuLy8gICAgICAgIHMuYmxvY2tfc3RhcnQgPj0gcy53X3NpemUpKSB7XG4vLyAgICAgICAgdGhyb3cgIG5ldyBFcnJvcihcInNsaWRlIHRvbyBsYXRlXCIpO1xuLy8gICAgICB9XG5cbiAgICAgIGZpbGxfd2luZG93KHMpO1xuICAgICAgaWYgKHMubG9va2FoZWFkID09PSAwICYmIGZsdXNoID09PSBaX05PX0ZMVVNIKSB7XG4gICAgICAgIHJldHVybiBCU19ORUVEX01PUkU7XG4gICAgICB9XG5cbiAgICAgIGlmIChzLmxvb2thaGVhZCA9PT0gMCkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIC8qIGZsdXNoIHRoZSBjdXJyZW50IGJsb2NrICovXG4gICAgfVxuICAgIC8vQXNzZXJ0KHMtPmJsb2NrX3N0YXJ0ID49IDBMLCBcImJsb2NrIGdvbmVcIik7XG4vLyAgICBpZiAocy5ibG9ja19zdGFydCA8IDApIHRocm93IG5ldyBFcnJvcihcImJsb2NrIGdvbmVcIik7XG5cbiAgICBzLnN0cnN0YXJ0ICs9IHMubG9va2FoZWFkO1xuICAgIHMubG9va2FoZWFkID0gMDtcblxuICAgIC8qIEVtaXQgYSBzdG9yZWQgYmxvY2sgaWYgcGVuZGluZ19idWYgd2lsbCBiZSBmdWxsOiAqL1xuICAgIHZhciBtYXhfc3RhcnQgPSBzLmJsb2NrX3N0YXJ0ICsgbWF4X2Jsb2NrX3NpemU7XG5cbiAgICBpZiAocy5zdHJzdGFydCA9PT0gMCB8fCBzLnN0cnN0YXJ0ID49IG1heF9zdGFydCkge1xuICAgICAgLyogc3Ryc3RhcnQgPT0gMCBpcyBwb3NzaWJsZSB3aGVuIHdyYXBhcm91bmQgb24gMTYtYml0IG1hY2hpbmUgKi9cbiAgICAgIHMubG9va2FoZWFkID0gcy5zdHJzdGFydCAtIG1heF9zdGFydDtcbiAgICAgIHMuc3Ryc3RhcnQgPSBtYXhfc3RhcnQ7XG4gICAgICAvKioqIEZMVVNIX0JMT0NLKHMsIDApOyAqKiovXG4gICAgICBmbHVzaF9ibG9ja19vbmx5KHMsIGZhbHNlKTtcbiAgICAgIGlmIChzLnN0cm0uYXZhaWxfb3V0ID09PSAwKSB7XG4gICAgICAgIHJldHVybiBCU19ORUVEX01PUkU7XG4gICAgICB9XG4gICAgICAvKioqL1xuXG5cbiAgICB9XG4gICAgLyogRmx1c2ggaWYgd2UgbWF5IGhhdmUgdG8gc2xpZGUsIG90aGVyd2lzZSBibG9ja19zdGFydCBtYXkgYmVjb21lXG4gICAgICogbmVnYXRpdmUgYW5kIHRoZSBkYXRhIHdpbGwgYmUgZ29uZTpcbiAgICAgKi9cbiAgICBpZiAocy5zdHJzdGFydCAtIHMuYmxvY2tfc3RhcnQgPj0gKHMud19zaXplIC0gTUlOX0xPT0tBSEVBRCkpIHtcbiAgICAgIC8qKiogRkxVU0hfQkxPQ0socywgMCk7ICoqKi9cbiAgICAgIGZsdXNoX2Jsb2NrX29ubHkocywgZmFsc2UpO1xuICAgICAgaWYgKHMuc3RybS5hdmFpbF9vdXQgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIEJTX05FRURfTU9SRTtcbiAgICAgIH1cbiAgICAgIC8qKiovXG4gICAgfVxuICB9XG5cbiAgcy5pbnNlcnQgPSAwO1xuXG4gIGlmIChmbHVzaCA9PT0gWl9GSU5JU0gpIHtcbiAgICAvKioqIEZMVVNIX0JMT0NLKHMsIDEpOyAqKiovXG4gICAgZmx1c2hfYmxvY2tfb25seShzLCB0cnVlKTtcbiAgICBpZiAocy5zdHJtLmF2YWlsX291dCA9PT0gMCkge1xuICAgICAgcmV0dXJuIEJTX0ZJTklTSF9TVEFSVEVEO1xuICAgIH1cbiAgICAvKioqL1xuICAgIHJldHVybiBCU19GSU5JU0hfRE9ORTtcbiAgfVxuXG4gIGlmIChzLnN0cnN0YXJ0ID4gcy5ibG9ja19zdGFydCkge1xuICAgIC8qKiogRkxVU0hfQkxPQ0socywgMCk7ICoqKi9cbiAgICBmbHVzaF9ibG9ja19vbmx5KHMsIGZhbHNlKTtcbiAgICBpZiAocy5zdHJtLmF2YWlsX291dCA9PT0gMCkge1xuICAgICAgcmV0dXJuIEJTX05FRURfTU9SRTtcbiAgICB9XG4gICAgLyoqKi9cbiAgfVxuXG4gIHJldHVybiBCU19ORUVEX01PUkU7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICogQ29tcHJlc3MgYXMgbXVjaCBhcyBwb3NzaWJsZSBmcm9tIHRoZSBpbnB1dCBzdHJlYW0sIHJldHVybiB0aGUgY3VycmVudFxuICogYmxvY2sgc3RhdGUuXG4gKiBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IHBlcmZvcm0gbGF6eSBldmFsdWF0aW9uIG9mIG1hdGNoZXMgYW5kIGluc2VydHNcbiAqIG5ldyBzdHJpbmdzIGluIHRoZSBkaWN0aW9uYXJ5IG9ubHkgZm9yIHVubWF0Y2hlZCBzdHJpbmdzIG9yIGZvciBzaG9ydFxuICogbWF0Y2hlcy4gSXQgaXMgdXNlZCBvbmx5IGZvciB0aGUgZmFzdCBjb21wcmVzc2lvbiBvcHRpb25zLlxuICovXG5mdW5jdGlvbiBkZWZsYXRlX2Zhc3QocywgZmx1c2gpIHtcbiAgdmFyIGhhc2hfaGVhZDsgICAgICAgIC8qIGhlYWQgb2YgdGhlIGhhc2ggY2hhaW4gKi9cbiAgdmFyIGJmbHVzaDsgICAgICAgICAgIC8qIHNldCBpZiBjdXJyZW50IGJsb2NrIG11c3QgYmUgZmx1c2hlZCAqL1xuXG4gIGZvciAoOzspIHtcbiAgICAvKiBNYWtlIHN1cmUgdGhhdCB3ZSBhbHdheXMgaGF2ZSBlbm91Z2ggbG9va2FoZWFkLCBleGNlcHRcbiAgICAgKiBhdCB0aGUgZW5kIG9mIHRoZSBpbnB1dCBmaWxlLiBXZSBuZWVkIE1BWF9NQVRDSCBieXRlc1xuICAgICAqIGZvciB0aGUgbmV4dCBtYXRjaCwgcGx1cyBNSU5fTUFUQ0ggYnl0ZXMgdG8gaW5zZXJ0IHRoZVxuICAgICAqIHN0cmluZyBmb2xsb3dpbmcgdGhlIG5leHQgbWF0Y2guXG4gICAgICovXG4gICAgaWYgKHMubG9va2FoZWFkIDwgTUlOX0xPT0tBSEVBRCkge1xuICAgICAgZmlsbF93aW5kb3cocyk7XG4gICAgICBpZiAocy5sb29rYWhlYWQgPCBNSU5fTE9PS0FIRUFEICYmIGZsdXNoID09PSBaX05PX0ZMVVNIKSB7XG4gICAgICAgIHJldHVybiBCU19ORUVEX01PUkU7XG4gICAgICB9XG4gICAgICBpZiAocy5sb29rYWhlYWQgPT09IDApIHtcbiAgICAgICAgYnJlYWs7IC8qIGZsdXNoIHRoZSBjdXJyZW50IGJsb2NrICovXG4gICAgICB9XG4gICAgfVxuXG4gICAgLyogSW5zZXJ0IHRoZSBzdHJpbmcgd2luZG93W3N0cnN0YXJ0IC4uIHN0cnN0YXJ0KzJdIGluIHRoZVxuICAgICAqIGRpY3Rpb25hcnksIGFuZCBzZXQgaGFzaF9oZWFkIHRvIHRoZSBoZWFkIG9mIHRoZSBoYXNoIGNoYWluOlxuICAgICAqL1xuICAgIGhhc2hfaGVhZCA9IDAvKk5JTCovO1xuICAgIGlmIChzLmxvb2thaGVhZCA+PSBNSU5fTUFUQ0gpIHtcbiAgICAgIC8qKiogSU5TRVJUX1NUUklORyhzLCBzLnN0cnN0YXJ0LCBoYXNoX2hlYWQpOyAqKiovXG4gICAgICBzLmluc19oID0gKChzLmluc19oIDw8IHMuaGFzaF9zaGlmdCkgXiBzLndpbmRvd1tzLnN0cnN0YXJ0ICsgTUlOX01BVENIIC0gMV0pICYgcy5oYXNoX21hc2s7XG4gICAgICBoYXNoX2hlYWQgPSBzLnByZXZbcy5zdHJzdGFydCAmIHMud19tYXNrXSA9IHMuaGVhZFtzLmluc19oXTtcbiAgICAgIHMuaGVhZFtzLmluc19oXSA9IHMuc3Ryc3RhcnQ7XG4gICAgICAvKioqL1xuICAgIH1cblxuICAgIC8qIEZpbmQgdGhlIGxvbmdlc3QgbWF0Y2gsIGRpc2NhcmRpbmcgdGhvc2UgPD0gcHJldl9sZW5ndGguXG4gICAgICogQXQgdGhpcyBwb2ludCB3ZSBoYXZlIGFsd2F5cyBtYXRjaF9sZW5ndGggPCBNSU5fTUFUQ0hcbiAgICAgKi9cbiAgICBpZiAoaGFzaF9oZWFkICE9PSAwLypOSUwqLyAmJiAoKHMuc3Ryc3RhcnQgLSBoYXNoX2hlYWQpIDw9IChzLndfc2l6ZSAtIE1JTl9MT09LQUhFQUQpKSkge1xuICAgICAgLyogVG8gc2ltcGxpZnkgdGhlIGNvZGUsIHdlIHByZXZlbnQgbWF0Y2hlcyB3aXRoIHRoZSBzdHJpbmdcbiAgICAgICAqIG9mIHdpbmRvdyBpbmRleCAwIChpbiBwYXJ0aWN1bGFyIHdlIGhhdmUgdG8gYXZvaWQgYSBtYXRjaFxuICAgICAgICogb2YgdGhlIHN0cmluZyB3aXRoIGl0c2VsZiBhdCB0aGUgc3RhcnQgb2YgdGhlIGlucHV0IGZpbGUpLlxuICAgICAgICovXG4gICAgICBzLm1hdGNoX2xlbmd0aCA9IGxvbmdlc3RfbWF0Y2gocywgaGFzaF9oZWFkKTtcbiAgICAgIC8qIGxvbmdlc3RfbWF0Y2goKSBzZXRzIG1hdGNoX3N0YXJ0ICovXG4gICAgfVxuICAgIGlmIChzLm1hdGNoX2xlbmd0aCA+PSBNSU5fTUFUQ0gpIHtcbiAgICAgIC8vIGNoZWNrX21hdGNoKHMsIHMuc3Ryc3RhcnQsIHMubWF0Y2hfc3RhcnQsIHMubWF0Y2hfbGVuZ3RoKTsgLy8gZm9yIGRlYnVnIG9ubHlcblxuICAgICAgLyoqKiBfdHJfdGFsbHlfZGlzdChzLCBzLnN0cnN0YXJ0IC0gcy5tYXRjaF9zdGFydCxcbiAgICAgICAgICAgICAgICAgICAgIHMubWF0Y2hfbGVuZ3RoIC0gTUlOX01BVENILCBiZmx1c2gpOyAqKiovXG4gICAgICBiZmx1c2ggPSB0cmVlcy5fdHJfdGFsbHkocywgcy5zdHJzdGFydCAtIHMubWF0Y2hfc3RhcnQsIHMubWF0Y2hfbGVuZ3RoIC0gTUlOX01BVENIKTtcblxuICAgICAgcy5sb29rYWhlYWQgLT0gcy5tYXRjaF9sZW5ndGg7XG5cbiAgICAgIC8qIEluc2VydCBuZXcgc3RyaW5ncyBpbiB0aGUgaGFzaCB0YWJsZSBvbmx5IGlmIHRoZSBtYXRjaCBsZW5ndGhcbiAgICAgICAqIGlzIG5vdCB0b28gbGFyZ2UuIFRoaXMgc2F2ZXMgdGltZSBidXQgZGVncmFkZXMgY29tcHJlc3Npb24uXG4gICAgICAgKi9cbiAgICAgIGlmIChzLm1hdGNoX2xlbmd0aCA8PSBzLm1heF9sYXp5X21hdGNoLyptYXhfaW5zZXJ0X2xlbmd0aCovICYmIHMubG9va2FoZWFkID49IE1JTl9NQVRDSCkge1xuICAgICAgICBzLm1hdGNoX2xlbmd0aC0tOyAvKiBzdHJpbmcgYXQgc3Ryc3RhcnQgYWxyZWFkeSBpbiB0YWJsZSAqL1xuICAgICAgICBkbyB7XG4gICAgICAgICAgcy5zdHJzdGFydCsrO1xuICAgICAgICAgIC8qKiogSU5TRVJUX1NUUklORyhzLCBzLnN0cnN0YXJ0LCBoYXNoX2hlYWQpOyAqKiovXG4gICAgICAgICAgcy5pbnNfaCA9ICgocy5pbnNfaCA8PCBzLmhhc2hfc2hpZnQpIF4gcy53aW5kb3dbcy5zdHJzdGFydCArIE1JTl9NQVRDSCAtIDFdKSAmIHMuaGFzaF9tYXNrO1xuICAgICAgICAgIGhhc2hfaGVhZCA9IHMucHJldltzLnN0cnN0YXJ0ICYgcy53X21hc2tdID0gcy5oZWFkW3MuaW5zX2hdO1xuICAgICAgICAgIHMuaGVhZFtzLmluc19oXSA9IHMuc3Ryc3RhcnQ7XG4gICAgICAgICAgLyoqKi9cbiAgICAgICAgICAvKiBzdHJzdGFydCBuZXZlciBleGNlZWRzIFdTSVpFLU1BWF9NQVRDSCwgc28gdGhlcmUgYXJlXG4gICAgICAgICAgICogYWx3YXlzIE1JTl9NQVRDSCBieXRlcyBhaGVhZC5cbiAgICAgICAgICAgKi9cbiAgICAgICAgfSB3aGlsZSAoLS1zLm1hdGNoX2xlbmd0aCAhPT0gMCk7XG4gICAgICAgIHMuc3Ryc3RhcnQrKztcbiAgICAgIH0gZWxzZVxuICAgICAge1xuICAgICAgICBzLnN0cnN0YXJ0ICs9IHMubWF0Y2hfbGVuZ3RoO1xuICAgICAgICBzLm1hdGNoX2xlbmd0aCA9IDA7XG4gICAgICAgIHMuaW5zX2ggPSBzLndpbmRvd1tzLnN0cnN0YXJ0XTtcbiAgICAgICAgLyogVVBEQVRFX0hBU0gocywgcy5pbnNfaCwgcy53aW5kb3dbcy5zdHJzdGFydCsxXSk7ICovXG4gICAgICAgIHMuaW5zX2ggPSAoKHMuaW5zX2ggPDwgcy5oYXNoX3NoaWZ0KSBeIHMud2luZG93W3Muc3Ryc3RhcnQgKyAxXSkgJiBzLmhhc2hfbWFzaztcblxuLy8jaWYgTUlOX01BVENIICE9IDNcbi8vICAgICAgICAgICAgICAgIENhbGwgVVBEQVRFX0hBU0goKSBNSU5fTUFUQ0gtMyBtb3JlIHRpbWVzXG4vLyNlbmRpZlxuICAgICAgICAvKiBJZiBsb29rYWhlYWQgPCBNSU5fTUFUQ0gsIGluc19oIGlzIGdhcmJhZ2UsIGJ1dCBpdCBkb2VzIG5vdFxuICAgICAgICAgKiBtYXR0ZXIgc2luY2UgaXQgd2lsbCBiZSByZWNvbXB1dGVkIGF0IG5leHQgZGVmbGF0ZSBjYWxsLlxuICAgICAgICAgKi9cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLyogTm8gbWF0Y2gsIG91dHB1dCBhIGxpdGVyYWwgYnl0ZSAqL1xuICAgICAgLy9UcmFjZXZ2KChzdGRlcnIsXCIlY1wiLCBzLndpbmRvd1tzLnN0cnN0YXJ0XSkpO1xuICAgICAgLyoqKiBfdHJfdGFsbHlfbGl0KHMsIHMud2luZG93W3Muc3Ryc3RhcnRdLCBiZmx1c2gpOyAqKiovXG4gICAgICBiZmx1c2ggPSB0cmVlcy5fdHJfdGFsbHkocywgMCwgcy53aW5kb3dbcy5zdHJzdGFydF0pO1xuXG4gICAgICBzLmxvb2thaGVhZC0tO1xuICAgICAgcy5zdHJzdGFydCsrO1xuICAgIH1cbiAgICBpZiAoYmZsdXNoKSB7XG4gICAgICAvKioqIEZMVVNIX0JMT0NLKHMsIDApOyAqKiovXG4gICAgICBmbHVzaF9ibG9ja19vbmx5KHMsIGZhbHNlKTtcbiAgICAgIGlmIChzLnN0cm0uYXZhaWxfb3V0ID09PSAwKSB7XG4gICAgICAgIHJldHVybiBCU19ORUVEX01PUkU7XG4gICAgICB9XG4gICAgICAvKioqL1xuICAgIH1cbiAgfVxuICBzLmluc2VydCA9ICgocy5zdHJzdGFydCA8IChNSU5fTUFUQ0ggLSAxKSkgPyBzLnN0cnN0YXJ0IDogTUlOX01BVENIIC0gMSk7XG4gIGlmIChmbHVzaCA9PT0gWl9GSU5JU0gpIHtcbiAgICAvKioqIEZMVVNIX0JMT0NLKHMsIDEpOyAqKiovXG4gICAgZmx1c2hfYmxvY2tfb25seShzLCB0cnVlKTtcbiAgICBpZiAocy5zdHJtLmF2YWlsX291dCA9PT0gMCkge1xuICAgICAgcmV0dXJuIEJTX0ZJTklTSF9TVEFSVEVEO1xuICAgIH1cbiAgICAvKioqL1xuICAgIHJldHVybiBCU19GSU5JU0hfRE9ORTtcbiAgfVxuICBpZiAocy5sYXN0X2xpdCkge1xuICAgIC8qKiogRkxVU0hfQkxPQ0socywgMCk7ICoqKi9cbiAgICBmbHVzaF9ibG9ja19vbmx5KHMsIGZhbHNlKTtcbiAgICBpZiAocy5zdHJtLmF2YWlsX291dCA9PT0gMCkge1xuICAgICAgcmV0dXJuIEJTX05FRURfTU9SRTtcbiAgICB9XG4gICAgLyoqKi9cbiAgfVxuICByZXR1cm4gQlNfQkxPQ0tfRE9ORTtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBTYW1lIGFzIGFib3ZlLCBidXQgYWNoaWV2ZXMgYmV0dGVyIGNvbXByZXNzaW9uLiBXZSB1c2UgYSBsYXp5XG4gKiBldmFsdWF0aW9uIGZvciBtYXRjaGVzOiBhIG1hdGNoIGlzIGZpbmFsbHkgYWRvcHRlZCBvbmx5IGlmIHRoZXJlIGlzXG4gKiBubyBiZXR0ZXIgbWF0Y2ggYXQgdGhlIG5leHQgd2luZG93IHBvc2l0aW9uLlxuICovXG5mdW5jdGlvbiBkZWZsYXRlX3Nsb3cocywgZmx1c2gpIHtcbiAgdmFyIGhhc2hfaGVhZDsgICAgICAgICAgLyogaGVhZCBvZiBoYXNoIGNoYWluICovXG4gIHZhciBiZmx1c2g7ICAgICAgICAgICAgICAvKiBzZXQgaWYgY3VycmVudCBibG9jayBtdXN0IGJlIGZsdXNoZWQgKi9cblxuICB2YXIgbWF4X2luc2VydDtcblxuICAvKiBQcm9jZXNzIHRoZSBpbnB1dCBibG9jay4gKi9cbiAgZm9yICg7Oykge1xuICAgIC8qIE1ha2Ugc3VyZSB0aGF0IHdlIGFsd2F5cyBoYXZlIGVub3VnaCBsb29rYWhlYWQsIGV4Y2VwdFxuICAgICAqIGF0IHRoZSBlbmQgb2YgdGhlIGlucHV0IGZpbGUuIFdlIG5lZWQgTUFYX01BVENIIGJ5dGVzXG4gICAgICogZm9yIHRoZSBuZXh0IG1hdGNoLCBwbHVzIE1JTl9NQVRDSCBieXRlcyB0byBpbnNlcnQgdGhlXG4gICAgICogc3RyaW5nIGZvbGxvd2luZyB0aGUgbmV4dCBtYXRjaC5cbiAgICAgKi9cbiAgICBpZiAocy5sb29rYWhlYWQgPCBNSU5fTE9PS0FIRUFEKSB7XG4gICAgICBmaWxsX3dpbmRvdyhzKTtcbiAgICAgIGlmIChzLmxvb2thaGVhZCA8IE1JTl9MT09LQUhFQUQgJiYgZmx1c2ggPT09IFpfTk9fRkxVU0gpIHtcbiAgICAgICAgcmV0dXJuIEJTX05FRURfTU9SRTtcbiAgICAgIH1cbiAgICAgIGlmIChzLmxvb2thaGVhZCA9PT0gMCkgeyBicmVhazsgfSAvKiBmbHVzaCB0aGUgY3VycmVudCBibG9jayAqL1xuICAgIH1cblxuICAgIC8qIEluc2VydCB0aGUgc3RyaW5nIHdpbmRvd1tzdHJzdGFydCAuLiBzdHJzdGFydCsyXSBpbiB0aGVcbiAgICAgKiBkaWN0aW9uYXJ5LCBhbmQgc2V0IGhhc2hfaGVhZCB0byB0aGUgaGVhZCBvZiB0aGUgaGFzaCBjaGFpbjpcbiAgICAgKi9cbiAgICBoYXNoX2hlYWQgPSAwLypOSUwqLztcbiAgICBpZiAocy5sb29rYWhlYWQgPj0gTUlOX01BVENIKSB7XG4gICAgICAvKioqIElOU0VSVF9TVFJJTkcocywgcy5zdHJzdGFydCwgaGFzaF9oZWFkKTsgKioqL1xuICAgICAgcy5pbnNfaCA9ICgocy5pbnNfaCA8PCBzLmhhc2hfc2hpZnQpIF4gcy53aW5kb3dbcy5zdHJzdGFydCArIE1JTl9NQVRDSCAtIDFdKSAmIHMuaGFzaF9tYXNrO1xuICAgICAgaGFzaF9oZWFkID0gcy5wcmV2W3Muc3Ryc3RhcnQgJiBzLndfbWFza10gPSBzLmhlYWRbcy5pbnNfaF07XG4gICAgICBzLmhlYWRbcy5pbnNfaF0gPSBzLnN0cnN0YXJ0O1xuICAgICAgLyoqKi9cbiAgICB9XG5cbiAgICAvKiBGaW5kIHRoZSBsb25nZXN0IG1hdGNoLCBkaXNjYXJkaW5nIHRob3NlIDw9IHByZXZfbGVuZ3RoLlxuICAgICAqL1xuICAgIHMucHJldl9sZW5ndGggPSBzLm1hdGNoX2xlbmd0aDtcbiAgICBzLnByZXZfbWF0Y2ggPSBzLm1hdGNoX3N0YXJ0O1xuICAgIHMubWF0Y2hfbGVuZ3RoID0gTUlOX01BVENIIC0gMTtcblxuICAgIGlmIChoYXNoX2hlYWQgIT09IDAvKk5JTCovICYmIHMucHJldl9sZW5ndGggPCBzLm1heF9sYXp5X21hdGNoICYmXG4gICAgICAgIHMuc3Ryc3RhcnQgLSBoYXNoX2hlYWQgPD0gKHMud19zaXplIC0gTUlOX0xPT0tBSEVBRCkvKk1BWF9ESVNUKHMpKi8pIHtcbiAgICAgIC8qIFRvIHNpbXBsaWZ5IHRoZSBjb2RlLCB3ZSBwcmV2ZW50IG1hdGNoZXMgd2l0aCB0aGUgc3RyaW5nXG4gICAgICAgKiBvZiB3aW5kb3cgaW5kZXggMCAoaW4gcGFydGljdWxhciB3ZSBoYXZlIHRvIGF2b2lkIGEgbWF0Y2hcbiAgICAgICAqIG9mIHRoZSBzdHJpbmcgd2l0aCBpdHNlbGYgYXQgdGhlIHN0YXJ0IG9mIHRoZSBpbnB1dCBmaWxlKS5cbiAgICAgICAqL1xuICAgICAgcy5tYXRjaF9sZW5ndGggPSBsb25nZXN0X21hdGNoKHMsIGhhc2hfaGVhZCk7XG4gICAgICAvKiBsb25nZXN0X21hdGNoKCkgc2V0cyBtYXRjaF9zdGFydCAqL1xuXG4gICAgICBpZiAocy5tYXRjaF9sZW5ndGggPD0gNSAmJlxuICAgICAgICAgKHMuc3RyYXRlZ3kgPT09IFpfRklMVEVSRUQgfHwgKHMubWF0Y2hfbGVuZ3RoID09PSBNSU5fTUFUQ0ggJiYgcy5zdHJzdGFydCAtIHMubWF0Y2hfc3RhcnQgPiA0MDk2LypUT09fRkFSKi8pKSkge1xuXG4gICAgICAgIC8qIElmIHByZXZfbWF0Y2ggaXMgYWxzbyBNSU5fTUFUQ0gsIG1hdGNoX3N0YXJ0IGlzIGdhcmJhZ2VcbiAgICAgICAgICogYnV0IHdlIHdpbGwgaWdub3JlIHRoZSBjdXJyZW50IG1hdGNoIGFueXdheS5cbiAgICAgICAgICovXG4gICAgICAgIHMubWF0Y2hfbGVuZ3RoID0gTUlOX01BVENIIC0gMTtcbiAgICAgIH1cbiAgICB9XG4gICAgLyogSWYgdGhlcmUgd2FzIGEgbWF0Y2ggYXQgdGhlIHByZXZpb3VzIHN0ZXAgYW5kIHRoZSBjdXJyZW50XG4gICAgICogbWF0Y2ggaXMgbm90IGJldHRlciwgb3V0cHV0IHRoZSBwcmV2aW91cyBtYXRjaDpcbiAgICAgKi9cbiAgICBpZiAocy5wcmV2X2xlbmd0aCA+PSBNSU5fTUFUQ0ggJiYgcy5tYXRjaF9sZW5ndGggPD0gcy5wcmV2X2xlbmd0aCkge1xuICAgICAgbWF4X2luc2VydCA9IHMuc3Ryc3RhcnQgKyBzLmxvb2thaGVhZCAtIE1JTl9NQVRDSDtcbiAgICAgIC8qIERvIG5vdCBpbnNlcnQgc3RyaW5ncyBpbiBoYXNoIHRhYmxlIGJleW9uZCB0aGlzLiAqL1xuXG4gICAgICAvL2NoZWNrX21hdGNoKHMsIHMuc3Ryc3RhcnQtMSwgcy5wcmV2X21hdGNoLCBzLnByZXZfbGVuZ3RoKTtcblxuICAgICAgLyoqKl90cl90YWxseV9kaXN0KHMsIHMuc3Ryc3RhcnQgLSAxIC0gcy5wcmV2X21hdGNoLFxuICAgICAgICAgICAgICAgICAgICAgcy5wcmV2X2xlbmd0aCAtIE1JTl9NQVRDSCwgYmZsdXNoKTsqKiovXG4gICAgICBiZmx1c2ggPSB0cmVlcy5fdHJfdGFsbHkocywgcy5zdHJzdGFydCAtIDEgLSBzLnByZXZfbWF0Y2gsIHMucHJldl9sZW5ndGggLSBNSU5fTUFUQ0gpO1xuICAgICAgLyogSW5zZXJ0IGluIGhhc2ggdGFibGUgYWxsIHN0cmluZ3MgdXAgdG8gdGhlIGVuZCBvZiB0aGUgbWF0Y2guXG4gICAgICAgKiBzdHJzdGFydC0xIGFuZCBzdHJzdGFydCBhcmUgYWxyZWFkeSBpbnNlcnRlZC4gSWYgdGhlcmUgaXMgbm90XG4gICAgICAgKiBlbm91Z2ggbG9va2FoZWFkLCB0aGUgbGFzdCB0d28gc3RyaW5ncyBhcmUgbm90IGluc2VydGVkIGluXG4gICAgICAgKiB0aGUgaGFzaCB0YWJsZS5cbiAgICAgICAqL1xuICAgICAgcy5sb29rYWhlYWQgLT0gcy5wcmV2X2xlbmd0aCAtIDE7XG4gICAgICBzLnByZXZfbGVuZ3RoIC09IDI7XG4gICAgICBkbyB7XG4gICAgICAgIGlmICgrK3Muc3Ryc3RhcnQgPD0gbWF4X2luc2VydCkge1xuICAgICAgICAgIC8qKiogSU5TRVJUX1NUUklORyhzLCBzLnN0cnN0YXJ0LCBoYXNoX2hlYWQpOyAqKiovXG4gICAgICAgICAgcy5pbnNfaCA9ICgocy5pbnNfaCA8PCBzLmhhc2hfc2hpZnQpIF4gcy53aW5kb3dbcy5zdHJzdGFydCArIE1JTl9NQVRDSCAtIDFdKSAmIHMuaGFzaF9tYXNrO1xuICAgICAgICAgIGhhc2hfaGVhZCA9IHMucHJldltzLnN0cnN0YXJ0ICYgcy53X21hc2tdID0gcy5oZWFkW3MuaW5zX2hdO1xuICAgICAgICAgIHMuaGVhZFtzLmluc19oXSA9IHMuc3Ryc3RhcnQ7XG4gICAgICAgICAgLyoqKi9cbiAgICAgICAgfVxuICAgICAgfSB3aGlsZSAoLS1zLnByZXZfbGVuZ3RoICE9PSAwKTtcbiAgICAgIHMubWF0Y2hfYXZhaWxhYmxlID0gMDtcbiAgICAgIHMubWF0Y2hfbGVuZ3RoID0gTUlOX01BVENIIC0gMTtcbiAgICAgIHMuc3Ryc3RhcnQrKztcblxuICAgICAgaWYgKGJmbHVzaCkge1xuICAgICAgICAvKioqIEZMVVNIX0JMT0NLKHMsIDApOyAqKiovXG4gICAgICAgIGZsdXNoX2Jsb2NrX29ubHkocywgZmFsc2UpO1xuICAgICAgICBpZiAocy5zdHJtLmF2YWlsX291dCA9PT0gMCkge1xuICAgICAgICAgIHJldHVybiBCU19ORUVEX01PUkU7XG4gICAgICAgIH1cbiAgICAgICAgLyoqKi9cbiAgICAgIH1cblxuICAgIH0gZWxzZSBpZiAocy5tYXRjaF9hdmFpbGFibGUpIHtcbiAgICAgIC8qIElmIHRoZXJlIHdhcyBubyBtYXRjaCBhdCB0aGUgcHJldmlvdXMgcG9zaXRpb24sIG91dHB1dCBhXG4gICAgICAgKiBzaW5nbGUgbGl0ZXJhbC4gSWYgdGhlcmUgd2FzIGEgbWF0Y2ggYnV0IHRoZSBjdXJyZW50IG1hdGNoXG4gICAgICAgKiBpcyBsb25nZXIsIHRydW5jYXRlIHRoZSBwcmV2aW91cyBtYXRjaCB0byBhIHNpbmdsZSBsaXRlcmFsLlxuICAgICAgICovXG4gICAgICAvL1RyYWNldnYoKHN0ZGVycixcIiVjXCIsIHMtPndpbmRvd1tzLT5zdHJzdGFydC0xXSkpO1xuICAgICAgLyoqKiBfdHJfdGFsbHlfbGl0KHMsIHMud2luZG93W3Muc3Ryc3RhcnQtMV0sIGJmbHVzaCk7ICoqKi9cbiAgICAgIGJmbHVzaCA9IHRyZWVzLl90cl90YWxseShzLCAwLCBzLndpbmRvd1tzLnN0cnN0YXJ0IC0gMV0pO1xuXG4gICAgICBpZiAoYmZsdXNoKSB7XG4gICAgICAgIC8qKiogRkxVU0hfQkxPQ0tfT05MWShzLCAwKSAqKiovXG4gICAgICAgIGZsdXNoX2Jsb2NrX29ubHkocywgZmFsc2UpO1xuICAgICAgICAvKioqL1xuICAgICAgfVxuICAgICAgcy5zdHJzdGFydCsrO1xuICAgICAgcy5sb29rYWhlYWQtLTtcbiAgICAgIGlmIChzLnN0cm0uYXZhaWxfb3V0ID09PSAwKSB7XG4gICAgICAgIHJldHVybiBCU19ORUVEX01PUkU7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8qIFRoZXJlIGlzIG5vIHByZXZpb3VzIG1hdGNoIHRvIGNvbXBhcmUgd2l0aCwgd2FpdCBmb3JcbiAgICAgICAqIHRoZSBuZXh0IHN0ZXAgdG8gZGVjaWRlLlxuICAgICAgICovXG4gICAgICBzLm1hdGNoX2F2YWlsYWJsZSA9IDE7XG4gICAgICBzLnN0cnN0YXJ0Kys7XG4gICAgICBzLmxvb2thaGVhZC0tO1xuICAgIH1cbiAgfVxuICAvL0Fzc2VydCAoZmx1c2ggIT0gWl9OT19GTFVTSCwgXCJubyBmbHVzaD9cIik7XG4gIGlmIChzLm1hdGNoX2F2YWlsYWJsZSkge1xuICAgIC8vVHJhY2V2digoc3RkZXJyLFwiJWNcIiwgcy0+d2luZG93W3MtPnN0cnN0YXJ0LTFdKSk7XG4gICAgLyoqKiBfdHJfdGFsbHlfbGl0KHMsIHMud2luZG93W3Muc3Ryc3RhcnQtMV0sIGJmbHVzaCk7ICoqKi9cbiAgICBiZmx1c2ggPSB0cmVlcy5fdHJfdGFsbHkocywgMCwgcy53aW5kb3dbcy5zdHJzdGFydCAtIDFdKTtcblxuICAgIHMubWF0Y2hfYXZhaWxhYmxlID0gMDtcbiAgfVxuICBzLmluc2VydCA9IHMuc3Ryc3RhcnQgPCBNSU5fTUFUQ0ggLSAxID8gcy5zdHJzdGFydCA6IE1JTl9NQVRDSCAtIDE7XG4gIGlmIChmbHVzaCA9PT0gWl9GSU5JU0gpIHtcbiAgICAvKioqIEZMVVNIX0JMT0NLKHMsIDEpOyAqKiovXG4gICAgZmx1c2hfYmxvY2tfb25seShzLCB0cnVlKTtcbiAgICBpZiAocy5zdHJtLmF2YWlsX291dCA9PT0gMCkge1xuICAgICAgcmV0dXJuIEJTX0ZJTklTSF9TVEFSVEVEO1xuICAgIH1cbiAgICAvKioqL1xuICAgIHJldHVybiBCU19GSU5JU0hfRE9ORTtcbiAgfVxuICBpZiAocy5sYXN0X2xpdCkge1xuICAgIC8qKiogRkxVU0hfQkxPQ0socywgMCk7ICoqKi9cbiAgICBmbHVzaF9ibG9ja19vbmx5KHMsIGZhbHNlKTtcbiAgICBpZiAocy5zdHJtLmF2YWlsX291dCA9PT0gMCkge1xuICAgICAgcmV0dXJuIEJTX05FRURfTU9SRTtcbiAgICB9XG4gICAgLyoqKi9cbiAgfVxuXG4gIHJldHVybiBCU19CTE9DS19ET05FO1xufVxuXG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICogRm9yIFpfUkxFLCBzaW1wbHkgbG9vayBmb3IgcnVucyBvZiBieXRlcywgZ2VuZXJhdGUgbWF0Y2hlcyBvbmx5IG9mIGRpc3RhbmNlXG4gKiBvbmUuICBEbyBub3QgbWFpbnRhaW4gYSBoYXNoIHRhYmxlLiAgKEl0IHdpbGwgYmUgcmVnZW5lcmF0ZWQgaWYgdGhpcyBydW4gb2ZcbiAqIGRlZmxhdGUgc3dpdGNoZXMgYXdheSBmcm9tIFpfUkxFLilcbiAqL1xuZnVuY3Rpb24gZGVmbGF0ZV9ybGUocywgZmx1c2gpIHtcbiAgdmFyIGJmbHVzaDsgICAgICAgICAgICAvKiBzZXQgaWYgY3VycmVudCBibG9jayBtdXN0IGJlIGZsdXNoZWQgKi9cbiAgdmFyIHByZXY7ICAgICAgICAgICAgICAvKiBieXRlIGF0IGRpc3RhbmNlIG9uZSB0byBtYXRjaCAqL1xuICB2YXIgc2Nhbiwgc3RyZW5kOyAgICAgIC8qIHNjYW4gZ29lcyB1cCB0byBzdHJlbmQgZm9yIGxlbmd0aCBvZiBydW4gKi9cblxuICB2YXIgX3dpbiA9IHMud2luZG93O1xuXG4gIGZvciAoOzspIHtcbiAgICAvKiBNYWtlIHN1cmUgdGhhdCB3ZSBhbHdheXMgaGF2ZSBlbm91Z2ggbG9va2FoZWFkLCBleGNlcHRcbiAgICAgKiBhdCB0aGUgZW5kIG9mIHRoZSBpbnB1dCBmaWxlLiBXZSBuZWVkIE1BWF9NQVRDSCBieXRlc1xuICAgICAqIGZvciB0aGUgbG9uZ2VzdCBydW4sIHBsdXMgb25lIGZvciB0aGUgdW5yb2xsZWQgbG9vcC5cbiAgICAgKi9cbiAgICBpZiAocy5sb29rYWhlYWQgPD0gTUFYX01BVENIKSB7XG4gICAgICBmaWxsX3dpbmRvdyhzKTtcbiAgICAgIGlmIChzLmxvb2thaGVhZCA8PSBNQVhfTUFUQ0ggJiYgZmx1c2ggPT09IFpfTk9fRkxVU0gpIHtcbiAgICAgICAgcmV0dXJuIEJTX05FRURfTU9SRTtcbiAgICAgIH1cbiAgICAgIGlmIChzLmxvb2thaGVhZCA9PT0gMCkgeyBicmVhazsgfSAvKiBmbHVzaCB0aGUgY3VycmVudCBibG9jayAqL1xuICAgIH1cblxuICAgIC8qIFNlZSBob3cgbWFueSB0aW1lcyB0aGUgcHJldmlvdXMgYnl0ZSByZXBlYXRzICovXG4gICAgcy5tYXRjaF9sZW5ndGggPSAwO1xuICAgIGlmIChzLmxvb2thaGVhZCA+PSBNSU5fTUFUQ0ggJiYgcy5zdHJzdGFydCA+IDApIHtcbiAgICAgIHNjYW4gPSBzLnN0cnN0YXJ0IC0gMTtcbiAgICAgIHByZXYgPSBfd2luW3NjYW5dO1xuICAgICAgaWYgKHByZXYgPT09IF93aW5bKytzY2FuXSAmJiBwcmV2ID09PSBfd2luWysrc2Nhbl0gJiYgcHJldiA9PT0gX3dpblsrK3NjYW5dKSB7XG4gICAgICAgIHN0cmVuZCA9IHMuc3Ryc3RhcnQgKyBNQVhfTUFUQ0g7XG4gICAgICAgIGRvIHtcbiAgICAgICAgICAvKmpzaGludCBub2VtcHR5OmZhbHNlKi9cbiAgICAgICAgfSB3aGlsZSAocHJldiA9PT0gX3dpblsrK3NjYW5dICYmIHByZXYgPT09IF93aW5bKytzY2FuXSAmJlxuICAgICAgICAgICAgICAgICBwcmV2ID09PSBfd2luWysrc2Nhbl0gJiYgcHJldiA9PT0gX3dpblsrK3NjYW5dICYmXG4gICAgICAgICAgICAgICAgIHByZXYgPT09IF93aW5bKytzY2FuXSAmJiBwcmV2ID09PSBfd2luWysrc2Nhbl0gJiZcbiAgICAgICAgICAgICAgICAgcHJldiA9PT0gX3dpblsrK3NjYW5dICYmIHByZXYgPT09IF93aW5bKytzY2FuXSAmJlxuICAgICAgICAgICAgICAgICBzY2FuIDwgc3RyZW5kKTtcbiAgICAgICAgcy5tYXRjaF9sZW5ndGggPSBNQVhfTUFUQ0ggLSAoc3RyZW5kIC0gc2Nhbik7XG4gICAgICAgIGlmIChzLm1hdGNoX2xlbmd0aCA+IHMubG9va2FoZWFkKSB7XG4gICAgICAgICAgcy5tYXRjaF9sZW5ndGggPSBzLmxvb2thaGVhZDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy9Bc3NlcnQoc2NhbiA8PSBzLT53aW5kb3crKHVJbnQpKHMtPndpbmRvd19zaXplLTEpLCBcIndpbGQgc2NhblwiKTtcbiAgICB9XG5cbiAgICAvKiBFbWl0IG1hdGNoIGlmIGhhdmUgcnVuIG9mIE1JTl9NQVRDSCBvciBsb25nZXIsIGVsc2UgZW1pdCBsaXRlcmFsICovXG4gICAgaWYgKHMubWF0Y2hfbGVuZ3RoID49IE1JTl9NQVRDSCkge1xuICAgICAgLy9jaGVja19tYXRjaChzLCBzLnN0cnN0YXJ0LCBzLnN0cnN0YXJ0IC0gMSwgcy5tYXRjaF9sZW5ndGgpO1xuXG4gICAgICAvKioqIF90cl90YWxseV9kaXN0KHMsIDEsIHMubWF0Y2hfbGVuZ3RoIC0gTUlOX01BVENILCBiZmx1c2gpOyAqKiovXG4gICAgICBiZmx1c2ggPSB0cmVlcy5fdHJfdGFsbHkocywgMSwgcy5tYXRjaF9sZW5ndGggLSBNSU5fTUFUQ0gpO1xuXG4gICAgICBzLmxvb2thaGVhZCAtPSBzLm1hdGNoX2xlbmd0aDtcbiAgICAgIHMuc3Ryc3RhcnQgKz0gcy5tYXRjaF9sZW5ndGg7XG4gICAgICBzLm1hdGNoX2xlbmd0aCA9IDA7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8qIE5vIG1hdGNoLCBvdXRwdXQgYSBsaXRlcmFsIGJ5dGUgKi9cbiAgICAgIC8vVHJhY2V2digoc3RkZXJyLFwiJWNcIiwgcy0+d2luZG93W3MtPnN0cnN0YXJ0XSkpO1xuICAgICAgLyoqKiBfdHJfdGFsbHlfbGl0KHMsIHMud2luZG93W3Muc3Ryc3RhcnRdLCBiZmx1c2gpOyAqKiovXG4gICAgICBiZmx1c2ggPSB0cmVlcy5fdHJfdGFsbHkocywgMCwgcy53aW5kb3dbcy5zdHJzdGFydF0pO1xuXG4gICAgICBzLmxvb2thaGVhZC0tO1xuICAgICAgcy5zdHJzdGFydCsrO1xuICAgIH1cbiAgICBpZiAoYmZsdXNoKSB7XG4gICAgICAvKioqIEZMVVNIX0JMT0NLKHMsIDApOyAqKiovXG4gICAgICBmbHVzaF9ibG9ja19vbmx5KHMsIGZhbHNlKTtcbiAgICAgIGlmIChzLnN0cm0uYXZhaWxfb3V0ID09PSAwKSB7XG4gICAgICAgIHJldHVybiBCU19ORUVEX01PUkU7XG4gICAgICB9XG4gICAgICAvKioqL1xuICAgIH1cbiAgfVxuICBzLmluc2VydCA9IDA7XG4gIGlmIChmbHVzaCA9PT0gWl9GSU5JU0gpIHtcbiAgICAvKioqIEZMVVNIX0JMT0NLKHMsIDEpOyAqKiovXG4gICAgZmx1c2hfYmxvY2tfb25seShzLCB0cnVlKTtcbiAgICBpZiAocy5zdHJtLmF2YWlsX291dCA9PT0gMCkge1xuICAgICAgcmV0dXJuIEJTX0ZJTklTSF9TVEFSVEVEO1xuICAgIH1cbiAgICAvKioqL1xuICAgIHJldHVybiBCU19GSU5JU0hfRE9ORTtcbiAgfVxuICBpZiAocy5sYXN0X2xpdCkge1xuICAgIC8qKiogRkxVU0hfQkxPQ0socywgMCk7ICoqKi9cbiAgICBmbHVzaF9ibG9ja19vbmx5KHMsIGZhbHNlKTtcbiAgICBpZiAocy5zdHJtLmF2YWlsX291dCA9PT0gMCkge1xuICAgICAgcmV0dXJuIEJTX05FRURfTU9SRTtcbiAgICB9XG4gICAgLyoqKi9cbiAgfVxuICByZXR1cm4gQlNfQkxPQ0tfRE9ORTtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBGb3IgWl9IVUZGTUFOX09OTFksIGRvIG5vdCBsb29rIGZvciBtYXRjaGVzLiAgRG8gbm90IG1haW50YWluIGEgaGFzaCB0YWJsZS5cbiAqIChJdCB3aWxsIGJlIHJlZ2VuZXJhdGVkIGlmIHRoaXMgcnVuIG9mIGRlZmxhdGUgc3dpdGNoZXMgYXdheSBmcm9tIEh1ZmZtYW4uKVxuICovXG5mdW5jdGlvbiBkZWZsYXRlX2h1ZmYocywgZmx1c2gpIHtcbiAgdmFyIGJmbHVzaDsgICAgICAgICAgICAgLyogc2V0IGlmIGN1cnJlbnQgYmxvY2sgbXVzdCBiZSBmbHVzaGVkICovXG5cbiAgZm9yICg7Oykge1xuICAgIC8qIE1ha2Ugc3VyZSB0aGF0IHdlIGhhdmUgYSBsaXRlcmFsIHRvIHdyaXRlLiAqL1xuICAgIGlmIChzLmxvb2thaGVhZCA9PT0gMCkge1xuICAgICAgZmlsbF93aW5kb3cocyk7XG4gICAgICBpZiAocy5sb29rYWhlYWQgPT09IDApIHtcbiAgICAgICAgaWYgKGZsdXNoID09PSBaX05PX0ZMVVNIKSB7XG4gICAgICAgICAgcmV0dXJuIEJTX05FRURfTU9SRTtcbiAgICAgICAgfVxuICAgICAgICBicmVhazsgICAgICAvKiBmbHVzaCB0aGUgY3VycmVudCBibG9jayAqL1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qIE91dHB1dCBhIGxpdGVyYWwgYnl0ZSAqL1xuICAgIHMubWF0Y2hfbGVuZ3RoID0gMDtcbiAgICAvL1RyYWNldnYoKHN0ZGVycixcIiVjXCIsIHMtPndpbmRvd1tzLT5zdHJzdGFydF0pKTtcbiAgICAvKioqIF90cl90YWxseV9saXQocywgcy53aW5kb3dbcy5zdHJzdGFydF0sIGJmbHVzaCk7ICoqKi9cbiAgICBiZmx1c2ggPSB0cmVlcy5fdHJfdGFsbHkocywgMCwgcy53aW5kb3dbcy5zdHJzdGFydF0pO1xuICAgIHMubG9va2FoZWFkLS07XG4gICAgcy5zdHJzdGFydCsrO1xuICAgIGlmIChiZmx1c2gpIHtcbiAgICAgIC8qKiogRkxVU0hfQkxPQ0socywgMCk7ICoqKi9cbiAgICAgIGZsdXNoX2Jsb2NrX29ubHkocywgZmFsc2UpO1xuICAgICAgaWYgKHMuc3RybS5hdmFpbF9vdXQgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIEJTX05FRURfTU9SRTtcbiAgICAgIH1cbiAgICAgIC8qKiovXG4gICAgfVxuICB9XG4gIHMuaW5zZXJ0ID0gMDtcbiAgaWYgKGZsdXNoID09PSBaX0ZJTklTSCkge1xuICAgIC8qKiogRkxVU0hfQkxPQ0socywgMSk7ICoqKi9cbiAgICBmbHVzaF9ibG9ja19vbmx5KHMsIHRydWUpO1xuICAgIGlmIChzLnN0cm0uYXZhaWxfb3V0ID09PSAwKSB7XG4gICAgICByZXR1cm4gQlNfRklOSVNIX1NUQVJURUQ7XG4gICAgfVxuICAgIC8qKiovXG4gICAgcmV0dXJuIEJTX0ZJTklTSF9ET05FO1xuICB9XG4gIGlmIChzLmxhc3RfbGl0KSB7XG4gICAgLyoqKiBGTFVTSF9CTE9DSyhzLCAwKTsgKioqL1xuICAgIGZsdXNoX2Jsb2NrX29ubHkocywgZmFsc2UpO1xuICAgIGlmIChzLnN0cm0uYXZhaWxfb3V0ID09PSAwKSB7XG4gICAgICByZXR1cm4gQlNfTkVFRF9NT1JFO1xuICAgIH1cbiAgICAvKioqL1xuICB9XG4gIHJldHVybiBCU19CTE9DS19ET05FO1xufVxuXG4vKiBWYWx1ZXMgZm9yIG1heF9sYXp5X21hdGNoLCBnb29kX21hdGNoIGFuZCBtYXhfY2hhaW5fbGVuZ3RoLCBkZXBlbmRpbmcgb25cbiAqIHRoZSBkZXNpcmVkIHBhY2sgbGV2ZWwgKDAuLjkpLiBUaGUgdmFsdWVzIGdpdmVuIGJlbG93IGhhdmUgYmVlbiB0dW5lZCB0b1xuICogZXhjbHVkZSB3b3JzdCBjYXNlIHBlcmZvcm1hbmNlIGZvciBwYXRob2xvZ2ljYWwgZmlsZXMuIEJldHRlciB2YWx1ZXMgbWF5IGJlXG4gKiBmb3VuZCBmb3Igc3BlY2lmaWMgZmlsZXMuXG4gKi9cbmZ1bmN0aW9uIENvbmZpZyhnb29kX2xlbmd0aCwgbWF4X2xhenksIG5pY2VfbGVuZ3RoLCBtYXhfY2hhaW4sIGZ1bmMpIHtcbiAgdGhpcy5nb29kX2xlbmd0aCA9IGdvb2RfbGVuZ3RoO1xuICB0aGlzLm1heF9sYXp5ID0gbWF4X2xhenk7XG4gIHRoaXMubmljZV9sZW5ndGggPSBuaWNlX2xlbmd0aDtcbiAgdGhpcy5tYXhfY2hhaW4gPSBtYXhfY2hhaW47XG4gIHRoaXMuZnVuYyA9IGZ1bmM7XG59XG5cbnZhciBjb25maWd1cmF0aW9uX3RhYmxlO1xuXG5jb25maWd1cmF0aW9uX3RhYmxlID0gW1xuICAvKiAgICAgIGdvb2QgbGF6eSBuaWNlIGNoYWluICovXG4gIG5ldyBDb25maWcoMCwgMCwgMCwgMCwgZGVmbGF0ZV9zdG9yZWQpLCAgICAgICAgICAvKiAwIHN0b3JlIG9ubHkgKi9cbiAgbmV3IENvbmZpZyg0LCA0LCA4LCA0LCBkZWZsYXRlX2Zhc3QpLCAgICAgICAgICAgIC8qIDEgbWF4IHNwZWVkLCBubyBsYXp5IG1hdGNoZXMgKi9cbiAgbmV3IENvbmZpZyg0LCA1LCAxNiwgOCwgZGVmbGF0ZV9mYXN0KSwgICAgICAgICAgIC8qIDIgKi9cbiAgbmV3IENvbmZpZyg0LCA2LCAzMiwgMzIsIGRlZmxhdGVfZmFzdCksICAgICAgICAgIC8qIDMgKi9cblxuICBuZXcgQ29uZmlnKDQsIDQsIDE2LCAxNiwgZGVmbGF0ZV9zbG93KSwgICAgICAgICAgLyogNCBsYXp5IG1hdGNoZXMgKi9cbiAgbmV3IENvbmZpZyg4LCAxNiwgMzIsIDMyLCBkZWZsYXRlX3Nsb3cpLCAgICAgICAgIC8qIDUgKi9cbiAgbmV3IENvbmZpZyg4LCAxNiwgMTI4LCAxMjgsIGRlZmxhdGVfc2xvdyksICAgICAgIC8qIDYgKi9cbiAgbmV3IENvbmZpZyg4LCAzMiwgMTI4LCAyNTYsIGRlZmxhdGVfc2xvdyksICAgICAgIC8qIDcgKi9cbiAgbmV3IENvbmZpZygzMiwgMTI4LCAyNTgsIDEwMjQsIGRlZmxhdGVfc2xvdyksICAgIC8qIDggKi9cbiAgbmV3IENvbmZpZygzMiwgMjU4LCAyNTgsIDQwOTYsIGRlZmxhdGVfc2xvdykgICAgIC8qIDkgbWF4IGNvbXByZXNzaW9uICovXG5dO1xuXG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICogSW5pdGlhbGl6ZSB0aGUgXCJsb25nZXN0IG1hdGNoXCIgcm91dGluZXMgZm9yIGEgbmV3IHpsaWIgc3RyZWFtXG4gKi9cbmZ1bmN0aW9uIGxtX2luaXQocykge1xuICBzLndpbmRvd19zaXplID0gMiAqIHMud19zaXplO1xuXG4gIC8qKiogQ0xFQVJfSEFTSChzKTsgKioqL1xuICB6ZXJvKHMuaGVhZCk7IC8vIEZpbGwgd2l0aCBOSUwgKD0gMCk7XG5cbiAgLyogU2V0IHRoZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyczpcbiAgICovXG4gIHMubWF4X2xhenlfbWF0Y2ggPSBjb25maWd1cmF0aW9uX3RhYmxlW3MubGV2ZWxdLm1heF9sYXp5O1xuICBzLmdvb2RfbWF0Y2ggPSBjb25maWd1cmF0aW9uX3RhYmxlW3MubGV2ZWxdLmdvb2RfbGVuZ3RoO1xuICBzLm5pY2VfbWF0Y2ggPSBjb25maWd1cmF0aW9uX3RhYmxlW3MubGV2ZWxdLm5pY2VfbGVuZ3RoO1xuICBzLm1heF9jaGFpbl9sZW5ndGggPSBjb25maWd1cmF0aW9uX3RhYmxlW3MubGV2ZWxdLm1heF9jaGFpbjtcblxuICBzLnN0cnN0YXJ0ID0gMDtcbiAgcy5ibG9ja19zdGFydCA9IDA7XG4gIHMubG9va2FoZWFkID0gMDtcbiAgcy5pbnNlcnQgPSAwO1xuICBzLm1hdGNoX2xlbmd0aCA9IHMucHJldl9sZW5ndGggPSBNSU5fTUFUQ0ggLSAxO1xuICBzLm1hdGNoX2F2YWlsYWJsZSA9IDA7XG4gIHMuaW5zX2ggPSAwO1xufVxuXG5cbmZ1bmN0aW9uIERlZmxhdGVTdGF0ZSgpIHtcbiAgdGhpcy5zdHJtID0gbnVsbDsgICAgICAgICAgICAvKiBwb2ludGVyIGJhY2sgdG8gdGhpcyB6bGliIHN0cmVhbSAqL1xuICB0aGlzLnN0YXR1cyA9IDA7ICAgICAgICAgICAgLyogYXMgdGhlIG5hbWUgaW1wbGllcyAqL1xuICB0aGlzLnBlbmRpbmdfYnVmID0gbnVsbDsgICAgICAvKiBvdXRwdXQgc3RpbGwgcGVuZGluZyAqL1xuICB0aGlzLnBlbmRpbmdfYnVmX3NpemUgPSAwOyAgLyogc2l6ZSBvZiBwZW5kaW5nX2J1ZiAqL1xuICB0aGlzLnBlbmRpbmdfb3V0ID0gMDsgICAgICAgLyogbmV4dCBwZW5kaW5nIGJ5dGUgdG8gb3V0cHV0IHRvIHRoZSBzdHJlYW0gKi9cbiAgdGhpcy5wZW5kaW5nID0gMDsgICAgICAgICAgIC8qIG5iIG9mIGJ5dGVzIGluIHRoZSBwZW5kaW5nIGJ1ZmZlciAqL1xuICB0aGlzLndyYXAgPSAwOyAgICAgICAgICAgICAgLyogYml0IDAgdHJ1ZSBmb3IgemxpYiwgYml0IDEgdHJ1ZSBmb3IgZ3ppcCAqL1xuICB0aGlzLmd6aGVhZCA9IG51bGw7ICAgICAgICAgLyogZ3ppcCBoZWFkZXIgaW5mb3JtYXRpb24gdG8gd3JpdGUgKi9cbiAgdGhpcy5nemluZGV4ID0gMDsgICAgICAgICAgIC8qIHdoZXJlIGluIGV4dHJhLCBuYW1lLCBvciBjb21tZW50ICovXG4gIHRoaXMubWV0aG9kID0gWl9ERUZMQVRFRDsgLyogY2FuIG9ubHkgYmUgREVGTEFURUQgKi9cbiAgdGhpcy5sYXN0X2ZsdXNoID0gLTE7ICAgLyogdmFsdWUgb2YgZmx1c2ggcGFyYW0gZm9yIHByZXZpb3VzIGRlZmxhdGUgY2FsbCAqL1xuXG4gIHRoaXMud19zaXplID0gMDsgIC8qIExaNzcgd2luZG93IHNpemUgKDMySyBieSBkZWZhdWx0KSAqL1xuICB0aGlzLndfYml0cyA9IDA7ICAvKiBsb2cyKHdfc2l6ZSkgICg4Li4xNikgKi9cbiAgdGhpcy53X21hc2sgPSAwOyAgLyogd19zaXplIC0gMSAqL1xuXG4gIHRoaXMud2luZG93ID0gbnVsbDtcbiAgLyogU2xpZGluZyB3aW5kb3cuIElucHV0IGJ5dGVzIGFyZSByZWFkIGludG8gdGhlIHNlY29uZCBoYWxmIG9mIHRoZSB3aW5kb3csXG4gICAqIGFuZCBtb3ZlIHRvIHRoZSBmaXJzdCBoYWxmIGxhdGVyIHRvIGtlZXAgYSBkaWN0aW9uYXJ5IG9mIGF0IGxlYXN0IHdTaXplXG4gICAqIGJ5dGVzLiBXaXRoIHRoaXMgb3JnYW5pemF0aW9uLCBtYXRjaGVzIGFyZSBsaW1pdGVkIHRvIGEgZGlzdGFuY2Ugb2ZcbiAgICogd1NpemUtTUFYX01BVENIIGJ5dGVzLCBidXQgdGhpcyBlbnN1cmVzIHRoYXQgSU8gaXMgYWx3YXlzXG4gICAqIHBlcmZvcm1lZCB3aXRoIGEgbGVuZ3RoIG11bHRpcGxlIG9mIHRoZSBibG9jayBzaXplLlxuICAgKi9cblxuICB0aGlzLndpbmRvd19zaXplID0gMDtcbiAgLyogQWN0dWFsIHNpemUgb2Ygd2luZG93OiAyKndTaXplLCBleGNlcHQgd2hlbiB0aGUgdXNlciBpbnB1dCBidWZmZXJcbiAgICogaXMgZGlyZWN0bHkgdXNlZCBhcyBzbGlkaW5nIHdpbmRvdy5cbiAgICovXG5cbiAgdGhpcy5wcmV2ID0gbnVsbDtcbiAgLyogTGluayB0byBvbGRlciBzdHJpbmcgd2l0aCBzYW1lIGhhc2ggaW5kZXguIFRvIGxpbWl0IHRoZSBzaXplIG9mIHRoaXNcbiAgICogYXJyYXkgdG8gNjRLLCB0aGlzIGxpbmsgaXMgbWFpbnRhaW5lZCBvbmx5IGZvciB0aGUgbGFzdCAzMksgc3RyaW5ncy5cbiAgICogQW4gaW5kZXggaW4gdGhpcyBhcnJheSBpcyB0aHVzIGEgd2luZG93IGluZGV4IG1vZHVsbyAzMksuXG4gICAqL1xuXG4gIHRoaXMuaGVhZCA9IG51bGw7ICAgLyogSGVhZHMgb2YgdGhlIGhhc2ggY2hhaW5zIG9yIE5JTC4gKi9cblxuICB0aGlzLmluc19oID0gMDsgICAgICAgLyogaGFzaCBpbmRleCBvZiBzdHJpbmcgdG8gYmUgaW5zZXJ0ZWQgKi9cbiAgdGhpcy5oYXNoX3NpemUgPSAwOyAgIC8qIG51bWJlciBvZiBlbGVtZW50cyBpbiBoYXNoIHRhYmxlICovXG4gIHRoaXMuaGFzaF9iaXRzID0gMDsgICAvKiBsb2cyKGhhc2hfc2l6ZSkgKi9cbiAgdGhpcy5oYXNoX21hc2sgPSAwOyAgIC8qIGhhc2hfc2l6ZS0xICovXG5cbiAgdGhpcy5oYXNoX3NoaWZ0ID0gMDtcbiAgLyogTnVtYmVyIG9mIGJpdHMgYnkgd2hpY2ggaW5zX2ggbXVzdCBiZSBzaGlmdGVkIGF0IGVhY2ggaW5wdXRcbiAgICogc3RlcC4gSXQgbXVzdCBiZSBzdWNoIHRoYXQgYWZ0ZXIgTUlOX01BVENIIHN0ZXBzLCB0aGUgb2xkZXN0XG4gICAqIGJ5dGUgbm8gbG9uZ2VyIHRha2VzIHBhcnQgaW4gdGhlIGhhc2gga2V5LCB0aGF0IGlzOlxuICAgKiAgIGhhc2hfc2hpZnQgKiBNSU5fTUFUQ0ggPj0gaGFzaF9iaXRzXG4gICAqL1xuXG4gIHRoaXMuYmxvY2tfc3RhcnQgPSAwO1xuICAvKiBXaW5kb3cgcG9zaXRpb24gYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgY3VycmVudCBvdXRwdXQgYmxvY2suIEdldHNcbiAgICogbmVnYXRpdmUgd2hlbiB0aGUgd2luZG93IGlzIG1vdmVkIGJhY2t3YXJkcy5cbiAgICovXG5cbiAgdGhpcy5tYXRjaF9sZW5ndGggPSAwOyAgICAgIC8qIGxlbmd0aCBvZiBiZXN0IG1hdGNoICovXG4gIHRoaXMucHJldl9tYXRjaCA9IDA7ICAgICAgICAvKiBwcmV2aW91cyBtYXRjaCAqL1xuICB0aGlzLm1hdGNoX2F2YWlsYWJsZSA9IDA7ICAgLyogc2V0IGlmIHByZXZpb3VzIG1hdGNoIGV4aXN0cyAqL1xuICB0aGlzLnN0cnN0YXJ0ID0gMDsgICAgICAgICAgLyogc3RhcnQgb2Ygc3RyaW5nIHRvIGluc2VydCAqL1xuICB0aGlzLm1hdGNoX3N0YXJ0ID0gMDsgICAgICAgLyogc3RhcnQgb2YgbWF0Y2hpbmcgc3RyaW5nICovXG4gIHRoaXMubG9va2FoZWFkID0gMDsgICAgICAgICAvKiBudW1iZXIgb2YgdmFsaWQgYnl0ZXMgYWhlYWQgaW4gd2luZG93ICovXG5cbiAgdGhpcy5wcmV2X2xlbmd0aCA9IDA7XG4gIC8qIExlbmd0aCBvZiB0aGUgYmVzdCBtYXRjaCBhdCBwcmV2aW91cyBzdGVwLiBNYXRjaGVzIG5vdCBncmVhdGVyIHRoYW4gdGhpc1xuICAgKiBhcmUgZGlzY2FyZGVkLiBUaGlzIGlzIHVzZWQgaW4gdGhlIGxhenkgbWF0Y2ggZXZhbHVhdGlvbi5cbiAgICovXG5cbiAgdGhpcy5tYXhfY2hhaW5fbGVuZ3RoID0gMDtcbiAgLyogVG8gc3BlZWQgdXAgZGVmbGF0aW9uLCBoYXNoIGNoYWlucyBhcmUgbmV2ZXIgc2VhcmNoZWQgYmV5b25kIHRoaXNcbiAgICogbGVuZ3RoLiAgQSBoaWdoZXIgbGltaXQgaW1wcm92ZXMgY29tcHJlc3Npb24gcmF0aW8gYnV0IGRlZ3JhZGVzIHRoZVxuICAgKiBzcGVlZC5cbiAgICovXG5cbiAgdGhpcy5tYXhfbGF6eV9tYXRjaCA9IDA7XG4gIC8qIEF0dGVtcHQgdG8gZmluZCBhIGJldHRlciBtYXRjaCBvbmx5IHdoZW4gdGhlIGN1cnJlbnQgbWF0Y2ggaXMgc3RyaWN0bHlcbiAgICogc21hbGxlciB0aGFuIHRoaXMgdmFsdWUuIFRoaXMgbWVjaGFuaXNtIGlzIHVzZWQgb25seSBmb3IgY29tcHJlc3Npb25cbiAgICogbGV2ZWxzID49IDQuXG4gICAqL1xuICAvLyBUaGF0J3MgYWxpYXMgdG8gbWF4X2xhenlfbWF0Y2gsIGRvbid0IHVzZSBkaXJlY3RseVxuICAvL3RoaXMubWF4X2luc2VydF9sZW5ndGggPSAwO1xuICAvKiBJbnNlcnQgbmV3IHN0cmluZ3MgaW4gdGhlIGhhc2ggdGFibGUgb25seSBpZiB0aGUgbWF0Y2ggbGVuZ3RoIGlzIG5vdFxuICAgKiBncmVhdGVyIHRoYW4gdGhpcyBsZW5ndGguIFRoaXMgc2F2ZXMgdGltZSBidXQgZGVncmFkZXMgY29tcHJlc3Npb24uXG4gICAqIG1heF9pbnNlcnRfbGVuZ3RoIGlzIHVzZWQgb25seSBmb3IgY29tcHJlc3Npb24gbGV2ZWxzIDw9IDMuXG4gICAqL1xuXG4gIHRoaXMubGV2ZWwgPSAwOyAgICAgLyogY29tcHJlc3Npb24gbGV2ZWwgKDEuLjkpICovXG4gIHRoaXMuc3RyYXRlZ3kgPSAwOyAgLyogZmF2b3Igb3IgZm9yY2UgSHVmZm1hbiBjb2RpbmcqL1xuXG4gIHRoaXMuZ29vZF9tYXRjaCA9IDA7XG4gIC8qIFVzZSBhIGZhc3RlciBzZWFyY2ggd2hlbiB0aGUgcHJldmlvdXMgbWF0Y2ggaXMgbG9uZ2VyIHRoYW4gdGhpcyAqL1xuXG4gIHRoaXMubmljZV9tYXRjaCA9IDA7IC8qIFN0b3Agc2VhcmNoaW5nIHdoZW4gY3VycmVudCBtYXRjaCBleGNlZWRzIHRoaXMgKi9cblxuICAgICAgICAgICAgICAvKiB1c2VkIGJ5IHRyZWVzLmM6ICovXG5cbiAgLyogRGlkbid0IHVzZSBjdF9kYXRhIHR5cGVkZWYgYmVsb3cgdG8gc3VwcHJlc3MgY29tcGlsZXIgd2FybmluZyAqL1xuXG4gIC8vIHN0cnVjdCBjdF9kYXRhX3MgZHluX2x0cmVlW0hFQVBfU0laRV07ICAgLyogbGl0ZXJhbCBhbmQgbGVuZ3RoIHRyZWUgKi9cbiAgLy8gc3RydWN0IGN0X2RhdGFfcyBkeW5fZHRyZWVbMipEX0NPREVTKzFdOyAvKiBkaXN0YW5jZSB0cmVlICovXG4gIC8vIHN0cnVjdCBjdF9kYXRhX3MgYmxfdHJlZVsyKkJMX0NPREVTKzFdOyAgLyogSHVmZm1hbiB0cmVlIGZvciBiaXQgbGVuZ3RocyAqL1xuXG4gIC8vIFVzZSBmbGF0IGFycmF5IG9mIERPVUJMRSBzaXplLCB3aXRoIGludGVybGVhdmVkIGZhdGEsXG4gIC8vIGJlY2F1c2UgSlMgZG9lcyBub3Qgc3VwcG9ydCBlZmZlY3RpdmVcbiAgdGhpcy5keW5fbHRyZWUgID0gbmV3IHV0aWxzLkJ1ZjE2KEhFQVBfU0laRSAqIDIpO1xuICB0aGlzLmR5bl9kdHJlZSAgPSBuZXcgdXRpbHMuQnVmMTYoKDIgKiBEX0NPREVTICsgMSkgKiAyKTtcbiAgdGhpcy5ibF90cmVlICAgID0gbmV3IHV0aWxzLkJ1ZjE2KCgyICogQkxfQ09ERVMgKyAxKSAqIDIpO1xuICB6ZXJvKHRoaXMuZHluX2x0cmVlKTtcbiAgemVybyh0aGlzLmR5bl9kdHJlZSk7XG4gIHplcm8odGhpcy5ibF90cmVlKTtcblxuICB0aGlzLmxfZGVzYyAgID0gbnVsbDsgICAgICAgICAvKiBkZXNjLiBmb3IgbGl0ZXJhbCB0cmVlICovXG4gIHRoaXMuZF9kZXNjICAgPSBudWxsOyAgICAgICAgIC8qIGRlc2MuIGZvciBkaXN0YW5jZSB0cmVlICovXG4gIHRoaXMuYmxfZGVzYyAgPSBudWxsOyAgICAgICAgIC8qIGRlc2MuIGZvciBiaXQgbGVuZ3RoIHRyZWUgKi9cblxuICAvL3VzaCBibF9jb3VudFtNQVhfQklUUysxXTtcbiAgdGhpcy5ibF9jb3VudCA9IG5ldyB1dGlscy5CdWYxNihNQVhfQklUUyArIDEpO1xuICAvKiBudW1iZXIgb2YgY29kZXMgYXQgZWFjaCBiaXQgbGVuZ3RoIGZvciBhbiBvcHRpbWFsIHRyZWUgKi9cblxuICAvL2ludCBoZWFwWzIqTF9DT0RFUysxXTsgICAgICAvKiBoZWFwIHVzZWQgdG8gYnVpbGQgdGhlIEh1ZmZtYW4gdHJlZXMgKi9cbiAgdGhpcy5oZWFwID0gbmV3IHV0aWxzLkJ1ZjE2KDIgKiBMX0NPREVTICsgMSk7ICAvKiBoZWFwIHVzZWQgdG8gYnVpbGQgdGhlIEh1ZmZtYW4gdHJlZXMgKi9cbiAgemVybyh0aGlzLmhlYXApO1xuXG4gIHRoaXMuaGVhcF9sZW4gPSAwOyAgICAgICAgICAgICAgIC8qIG51bWJlciBvZiBlbGVtZW50cyBpbiB0aGUgaGVhcCAqL1xuICB0aGlzLmhlYXBfbWF4ID0gMDsgICAgICAgICAgICAgICAvKiBlbGVtZW50IG9mIGxhcmdlc3QgZnJlcXVlbmN5ICovXG4gIC8qIFRoZSBzb25zIG9mIGhlYXBbbl0gYXJlIGhlYXBbMipuXSBhbmQgaGVhcFsyKm4rMV0uIGhlYXBbMF0gaXMgbm90IHVzZWQuXG4gICAqIFRoZSBzYW1lIGhlYXAgYXJyYXkgaXMgdXNlZCB0byBidWlsZCBhbGwgdHJlZXMuXG4gICAqL1xuXG4gIHRoaXMuZGVwdGggPSBuZXcgdXRpbHMuQnVmMTYoMiAqIExfQ09ERVMgKyAxKTsgLy91Y2ggZGVwdGhbMipMX0NPREVTKzFdO1xuICB6ZXJvKHRoaXMuZGVwdGgpO1xuICAvKiBEZXB0aCBvZiBlYWNoIHN1YnRyZWUgdXNlZCBhcyB0aWUgYnJlYWtlciBmb3IgdHJlZXMgb2YgZXF1YWwgZnJlcXVlbmN5XG4gICAqL1xuXG4gIHRoaXMubF9idWYgPSAwOyAgICAgICAgICAvKiBidWZmZXIgaW5kZXggZm9yIGxpdGVyYWxzIG9yIGxlbmd0aHMgKi9cblxuICB0aGlzLmxpdF9idWZzaXplID0gMDtcbiAgLyogU2l6ZSBvZiBtYXRjaCBidWZmZXIgZm9yIGxpdGVyYWxzL2xlbmd0aHMuICBUaGVyZSBhcmUgNCByZWFzb25zIGZvclxuICAgKiBsaW1pdGluZyBsaXRfYnVmc2l6ZSB0byA2NEs6XG4gICAqICAgLSBmcmVxdWVuY2llcyBjYW4gYmUga2VwdCBpbiAxNiBiaXQgY291bnRlcnNcbiAgICogICAtIGlmIGNvbXByZXNzaW9uIGlzIG5vdCBzdWNjZXNzZnVsIGZvciB0aGUgZmlyc3QgYmxvY2ssIGFsbCBpbnB1dFxuICAgKiAgICAgZGF0YSBpcyBzdGlsbCBpbiB0aGUgd2luZG93IHNvIHdlIGNhbiBzdGlsbCBlbWl0IGEgc3RvcmVkIGJsb2NrIGV2ZW5cbiAgICogICAgIHdoZW4gaW5wdXQgY29tZXMgZnJvbSBzdGFuZGFyZCBpbnB1dC4gIChUaGlzIGNhbiBhbHNvIGJlIGRvbmUgZm9yXG4gICAqICAgICBhbGwgYmxvY2tzIGlmIGxpdF9idWZzaXplIGlzIG5vdCBncmVhdGVyIHRoYW4gMzJLLilcbiAgICogICAtIGlmIGNvbXByZXNzaW9uIGlzIG5vdCBzdWNjZXNzZnVsIGZvciBhIGZpbGUgc21hbGxlciB0aGFuIDY0Sywgd2UgY2FuXG4gICAqICAgICBldmVuIGVtaXQgYSBzdG9yZWQgZmlsZSBpbnN0ZWFkIG9mIGEgc3RvcmVkIGJsb2NrIChzYXZpbmcgNSBieXRlcykuXG4gICAqICAgICBUaGlzIGlzIGFwcGxpY2FibGUgb25seSBmb3IgemlwIChub3QgZ3ppcCBvciB6bGliKS5cbiAgICogICAtIGNyZWF0aW5nIG5ldyBIdWZmbWFuIHRyZWVzIGxlc3MgZnJlcXVlbnRseSBtYXkgbm90IHByb3ZpZGUgZmFzdFxuICAgKiAgICAgYWRhcHRhdGlvbiB0byBjaGFuZ2VzIGluIHRoZSBpbnB1dCBkYXRhIHN0YXRpc3RpY3MuIChUYWtlIGZvclxuICAgKiAgICAgZXhhbXBsZSBhIGJpbmFyeSBmaWxlIHdpdGggcG9vcmx5IGNvbXByZXNzaWJsZSBjb2RlIGZvbGxvd2VkIGJ5XG4gICAqICAgICBhIGhpZ2hseSBjb21wcmVzc2libGUgc3RyaW5nIHRhYmxlLikgU21hbGxlciBidWZmZXIgc2l6ZXMgZ2l2ZVxuICAgKiAgICAgZmFzdCBhZGFwdGF0aW9uIGJ1dCBoYXZlIG9mIGNvdXJzZSB0aGUgb3ZlcmhlYWQgb2YgdHJhbnNtaXR0aW5nXG4gICAqICAgICB0cmVlcyBtb3JlIGZyZXF1ZW50bHkuXG4gICAqICAgLSBJIGNhbid0IGNvdW50IGFib3ZlIDRcbiAgICovXG5cbiAgdGhpcy5sYXN0X2xpdCA9IDA7ICAgICAgLyogcnVubmluZyBpbmRleCBpbiBsX2J1ZiAqL1xuXG4gIHRoaXMuZF9idWYgPSAwO1xuICAvKiBCdWZmZXIgaW5kZXggZm9yIGRpc3RhbmNlcy4gVG8gc2ltcGxpZnkgdGhlIGNvZGUsIGRfYnVmIGFuZCBsX2J1ZiBoYXZlXG4gICAqIHRoZSBzYW1lIG51bWJlciBvZiBlbGVtZW50cy4gVG8gdXNlIGRpZmZlcmVudCBsZW5ndGhzLCBhbiBleHRyYSBmbGFnXG4gICAqIGFycmF5IHdvdWxkIGJlIG5lY2Vzc2FyeS5cbiAgICovXG5cbiAgdGhpcy5vcHRfbGVuID0gMDsgICAgICAgLyogYml0IGxlbmd0aCBvZiBjdXJyZW50IGJsb2NrIHdpdGggb3B0aW1hbCB0cmVlcyAqL1xuICB0aGlzLnN0YXRpY19sZW4gPSAwOyAgICAvKiBiaXQgbGVuZ3RoIG9mIGN1cnJlbnQgYmxvY2sgd2l0aCBzdGF0aWMgdHJlZXMgKi9cbiAgdGhpcy5tYXRjaGVzID0gMDsgICAgICAgLyogbnVtYmVyIG9mIHN0cmluZyBtYXRjaGVzIGluIGN1cnJlbnQgYmxvY2sgKi9cbiAgdGhpcy5pbnNlcnQgPSAwOyAgICAgICAgLyogYnl0ZXMgYXQgZW5kIG9mIHdpbmRvdyBsZWZ0IHRvIGluc2VydCAqL1xuXG5cbiAgdGhpcy5iaV9idWYgPSAwO1xuICAvKiBPdXRwdXQgYnVmZmVyLiBiaXRzIGFyZSBpbnNlcnRlZCBzdGFydGluZyBhdCB0aGUgYm90dG9tIChsZWFzdFxuICAgKiBzaWduaWZpY2FudCBiaXRzKS5cbiAgICovXG4gIHRoaXMuYmlfdmFsaWQgPSAwO1xuICAvKiBOdW1iZXIgb2YgdmFsaWQgYml0cyBpbiBiaV9idWYuICBBbGwgYml0cyBhYm92ZSB0aGUgbGFzdCB2YWxpZCBiaXRcbiAgICogYXJlIGFsd2F5cyB6ZXJvLlxuICAgKi9cblxuICAvLyBVc2VkIGZvciB3aW5kb3cgbWVtb3J5IGluaXQuIFdlIHNhZmVseSBpZ25vcmUgaXQgZm9yIEpTLiBUaGF0IG1ha2VzXG4gIC8vIHNlbnNlIG9ubHkgZm9yIHBvaW50ZXJzIGFuZCBtZW1vcnkgY2hlY2sgdG9vbHMuXG4gIC8vdGhpcy5oaWdoX3dhdGVyID0gMDtcbiAgLyogSGlnaCB3YXRlciBtYXJrIG9mZnNldCBpbiB3aW5kb3cgZm9yIGluaXRpYWxpemVkIGJ5dGVzIC0tIGJ5dGVzIGFib3ZlXG4gICAqIHRoaXMgYXJlIHNldCB0byB6ZXJvIGluIG9yZGVyIHRvIGF2b2lkIG1lbW9yeSBjaGVjayB3YXJuaW5ncyB3aGVuXG4gICAqIGxvbmdlc3QgbWF0Y2ggcm91dGluZXMgYWNjZXNzIGJ5dGVzIHBhc3QgdGhlIGlucHV0LiAgVGhpcyBpcyB0aGVuXG4gICAqIHVwZGF0ZWQgdG8gdGhlIG5ldyBoaWdoIHdhdGVyIG1hcmsuXG4gICAqL1xufVxuXG5cbmZ1bmN0aW9uIGRlZmxhdGVSZXNldEtlZXAoc3RybSkge1xuICB2YXIgcztcblxuICBpZiAoIXN0cm0gfHwgIXN0cm0uc3RhdGUpIHtcbiAgICByZXR1cm4gZXJyKHN0cm0sIFpfU1RSRUFNX0VSUk9SKTtcbiAgfVxuXG4gIHN0cm0udG90YWxfaW4gPSBzdHJtLnRvdGFsX291dCA9IDA7XG4gIHN0cm0uZGF0YV90eXBlID0gWl9VTktOT1dOO1xuXG4gIHMgPSBzdHJtLnN0YXRlO1xuICBzLnBlbmRpbmcgPSAwO1xuICBzLnBlbmRpbmdfb3V0ID0gMDtcblxuICBpZiAocy53cmFwIDwgMCkge1xuICAgIHMud3JhcCA9IC1zLndyYXA7XG4gICAgLyogd2FzIG1hZGUgbmVnYXRpdmUgYnkgZGVmbGF0ZSguLi4sIFpfRklOSVNIKTsgKi9cbiAgfVxuICBzLnN0YXR1cyA9IChzLndyYXAgPyBJTklUX1NUQVRFIDogQlVTWV9TVEFURSk7XG4gIHN0cm0uYWRsZXIgPSAocy53cmFwID09PSAyKSA/XG4gICAgMCAgLy8gY3JjMzIoMCwgWl9OVUxMLCAwKVxuICA6XG4gICAgMTsgLy8gYWRsZXIzMigwLCBaX05VTEwsIDApXG4gIHMubGFzdF9mbHVzaCA9IFpfTk9fRkxVU0g7XG4gIHRyZWVzLl90cl9pbml0KHMpO1xuICByZXR1cm4gWl9PSztcbn1cblxuXG5mdW5jdGlvbiBkZWZsYXRlUmVzZXQoc3RybSkge1xuICB2YXIgcmV0ID0gZGVmbGF0ZVJlc2V0S2VlcChzdHJtKTtcbiAgaWYgKHJldCA9PT0gWl9PSykge1xuICAgIGxtX2luaXQoc3RybS5zdGF0ZSk7XG4gIH1cbiAgcmV0dXJuIHJldDtcbn1cblxuXG5mdW5jdGlvbiBkZWZsYXRlU2V0SGVhZGVyKHN0cm0sIGhlYWQpIHtcbiAgaWYgKCFzdHJtIHx8ICFzdHJtLnN0YXRlKSB7IHJldHVybiBaX1NUUkVBTV9FUlJPUjsgfVxuICBpZiAoc3RybS5zdGF0ZS53cmFwICE9PSAyKSB7IHJldHVybiBaX1NUUkVBTV9FUlJPUjsgfVxuICBzdHJtLnN0YXRlLmd6aGVhZCA9IGhlYWQ7XG4gIHJldHVybiBaX09LO1xufVxuXG5cbmZ1bmN0aW9uIGRlZmxhdGVJbml0MihzdHJtLCBsZXZlbCwgbWV0aG9kLCB3aW5kb3dCaXRzLCBtZW1MZXZlbCwgc3RyYXRlZ3kpIHtcbiAgaWYgKCFzdHJtKSB7IC8vID09PSBaX05VTExcbiAgICByZXR1cm4gWl9TVFJFQU1fRVJST1I7XG4gIH1cbiAgdmFyIHdyYXAgPSAxO1xuXG4gIGlmIChsZXZlbCA9PT0gWl9ERUZBVUxUX0NPTVBSRVNTSU9OKSB7XG4gICAgbGV2ZWwgPSA2O1xuICB9XG5cbiAgaWYgKHdpbmRvd0JpdHMgPCAwKSB7IC8qIHN1cHByZXNzIHpsaWIgd3JhcHBlciAqL1xuICAgIHdyYXAgPSAwO1xuICAgIHdpbmRvd0JpdHMgPSAtd2luZG93Qml0cztcbiAgfVxuXG4gIGVsc2UgaWYgKHdpbmRvd0JpdHMgPiAxNSkge1xuICAgIHdyYXAgPSAyOyAgICAgICAgICAgLyogd3JpdGUgZ3ppcCB3cmFwcGVyIGluc3RlYWQgKi9cbiAgICB3aW5kb3dCaXRzIC09IDE2O1xuICB9XG5cblxuICBpZiAobWVtTGV2ZWwgPCAxIHx8IG1lbUxldmVsID4gTUFYX01FTV9MRVZFTCB8fCBtZXRob2QgIT09IFpfREVGTEFURUQgfHxcbiAgICB3aW5kb3dCaXRzIDwgOCB8fCB3aW5kb3dCaXRzID4gMTUgfHwgbGV2ZWwgPCAwIHx8IGxldmVsID4gOSB8fFxuICAgIHN0cmF0ZWd5IDwgMCB8fCBzdHJhdGVneSA+IFpfRklYRUQpIHtcbiAgICByZXR1cm4gZXJyKHN0cm0sIFpfU1RSRUFNX0VSUk9SKTtcbiAgfVxuXG5cbiAgaWYgKHdpbmRvd0JpdHMgPT09IDgpIHtcbiAgICB3aW5kb3dCaXRzID0gOTtcbiAgfVxuICAvKiB1bnRpbCAyNTYtYnl0ZSB3aW5kb3cgYnVnIGZpeGVkICovXG5cbiAgdmFyIHMgPSBuZXcgRGVmbGF0ZVN0YXRlKCk7XG5cbiAgc3RybS5zdGF0ZSA9IHM7XG4gIHMuc3RybSA9IHN0cm07XG5cbiAgcy53cmFwID0gd3JhcDtcbiAgcy5nemhlYWQgPSBudWxsO1xuICBzLndfYml0cyA9IHdpbmRvd0JpdHM7XG4gIHMud19zaXplID0gMSA8PCBzLndfYml0cztcbiAgcy53X21hc2sgPSBzLndfc2l6ZSAtIDE7XG5cbiAgcy5oYXNoX2JpdHMgPSBtZW1MZXZlbCArIDc7XG4gIHMuaGFzaF9zaXplID0gMSA8PCBzLmhhc2hfYml0cztcbiAgcy5oYXNoX21hc2sgPSBzLmhhc2hfc2l6ZSAtIDE7XG4gIHMuaGFzaF9zaGlmdCA9IH5+KChzLmhhc2hfYml0cyArIE1JTl9NQVRDSCAtIDEpIC8gTUlOX01BVENIKTtcblxuICBzLndpbmRvdyA9IG5ldyB1dGlscy5CdWY4KHMud19zaXplICogMik7XG4gIHMuaGVhZCA9IG5ldyB1dGlscy5CdWYxNihzLmhhc2hfc2l6ZSk7XG4gIHMucHJldiA9IG5ldyB1dGlscy5CdWYxNihzLndfc2l6ZSk7XG5cbiAgLy8gRG9uJ3QgbmVlZCBtZW0gaW5pdCBtYWdpYyBmb3IgSlMuXG4gIC8vcy5oaWdoX3dhdGVyID0gMDsgIC8qIG5vdGhpbmcgd3JpdHRlbiB0byBzLT53aW5kb3cgeWV0ICovXG5cbiAgcy5saXRfYnVmc2l6ZSA9IDEgPDwgKG1lbUxldmVsICsgNik7IC8qIDE2SyBlbGVtZW50cyBieSBkZWZhdWx0ICovXG5cbiAgcy5wZW5kaW5nX2J1Zl9zaXplID0gcy5saXRfYnVmc2l6ZSAqIDQ7XG5cbiAgLy9vdmVybGF5ID0gKHVzaGYgKikgWkFMTE9DKHN0cm0sIHMtPmxpdF9idWZzaXplLCBzaXplb2YodXNoKSsyKTtcbiAgLy9zLT5wZW5kaW5nX2J1ZiA9ICh1Y2hmICopIG92ZXJsYXk7XG4gIHMucGVuZGluZ19idWYgPSBuZXcgdXRpbHMuQnVmOChzLnBlbmRpbmdfYnVmX3NpemUpO1xuXG4gIC8vIEl0IGlzIG9mZnNldCBmcm9tIGBzLnBlbmRpbmdfYnVmYCAoc2l6ZSBpcyBgcy5saXRfYnVmc2l6ZSAqIDJgKVxuICAvL3MtPmRfYnVmID0gb3ZlcmxheSArIHMtPmxpdF9idWZzaXplL3NpemVvZih1c2gpO1xuICBzLmRfYnVmID0gMSAqIHMubGl0X2J1ZnNpemU7XG5cbiAgLy9zLT5sX2J1ZiA9IHMtPnBlbmRpbmdfYnVmICsgKDErc2l6ZW9mKHVzaCkpKnMtPmxpdF9idWZzaXplO1xuICBzLmxfYnVmID0gKDEgKyAyKSAqIHMubGl0X2J1ZnNpemU7XG5cbiAgcy5sZXZlbCA9IGxldmVsO1xuICBzLnN0cmF0ZWd5ID0gc3RyYXRlZ3k7XG4gIHMubWV0aG9kID0gbWV0aG9kO1xuXG4gIHJldHVybiBkZWZsYXRlUmVzZXQoc3RybSk7XG59XG5cbmZ1bmN0aW9uIGRlZmxhdGVJbml0KHN0cm0sIGxldmVsKSB7XG4gIHJldHVybiBkZWZsYXRlSW5pdDIoc3RybSwgbGV2ZWwsIFpfREVGTEFURUQsIE1BWF9XQklUUywgREVGX01FTV9MRVZFTCwgWl9ERUZBVUxUX1NUUkFURUdZKTtcbn1cblxuXG5mdW5jdGlvbiBkZWZsYXRlKHN0cm0sIGZsdXNoKSB7XG4gIHZhciBvbGRfZmx1c2gsIHM7XG4gIHZhciBiZWcsIHZhbDsgLy8gZm9yIGd6aXAgaGVhZGVyIHdyaXRlIG9ubHlcblxuICBpZiAoIXN0cm0gfHwgIXN0cm0uc3RhdGUgfHxcbiAgICBmbHVzaCA+IFpfQkxPQ0sgfHwgZmx1c2ggPCAwKSB7XG4gICAgcmV0dXJuIHN0cm0gPyBlcnIoc3RybSwgWl9TVFJFQU1fRVJST1IpIDogWl9TVFJFQU1fRVJST1I7XG4gIH1cblxuICBzID0gc3RybS5zdGF0ZTtcblxuICBpZiAoIXN0cm0ub3V0cHV0IHx8XG4gICAgICAoIXN0cm0uaW5wdXQgJiYgc3RybS5hdmFpbF9pbiAhPT0gMCkgfHxcbiAgICAgIChzLnN0YXR1cyA9PT0gRklOSVNIX1NUQVRFICYmIGZsdXNoICE9PSBaX0ZJTklTSCkpIHtcbiAgICByZXR1cm4gZXJyKHN0cm0sIChzdHJtLmF2YWlsX291dCA9PT0gMCkgPyBaX0JVRl9FUlJPUiA6IFpfU1RSRUFNX0VSUk9SKTtcbiAgfVxuXG4gIHMuc3RybSA9IHN0cm07IC8qIGp1c3QgaW4gY2FzZSAqL1xuICBvbGRfZmx1c2ggPSBzLmxhc3RfZmx1c2g7XG4gIHMubGFzdF9mbHVzaCA9IGZsdXNoO1xuXG4gIC8qIFdyaXRlIHRoZSBoZWFkZXIgKi9cbiAgaWYgKHMuc3RhdHVzID09PSBJTklUX1NUQVRFKSB7XG5cbiAgICBpZiAocy53cmFwID09PSAyKSB7IC8vIEdaSVAgaGVhZGVyXG4gICAgICBzdHJtLmFkbGVyID0gMDsgIC8vY3JjMzIoMEwsIFpfTlVMTCwgMCk7XG4gICAgICBwdXRfYnl0ZShzLCAzMSk7XG4gICAgICBwdXRfYnl0ZShzLCAxMzkpO1xuICAgICAgcHV0X2J5dGUocywgOCk7XG4gICAgICBpZiAoIXMuZ3poZWFkKSB7IC8vIHMtPmd6aGVhZCA9PSBaX05VTExcbiAgICAgICAgcHV0X2J5dGUocywgMCk7XG4gICAgICAgIHB1dF9ieXRlKHMsIDApO1xuICAgICAgICBwdXRfYnl0ZShzLCAwKTtcbiAgICAgICAgcHV0X2J5dGUocywgMCk7XG4gICAgICAgIHB1dF9ieXRlKHMsIDApO1xuICAgICAgICBwdXRfYnl0ZShzLCBzLmxldmVsID09PSA5ID8gMiA6XG4gICAgICAgICAgICAgICAgICAgIChzLnN0cmF0ZWd5ID49IFpfSFVGRk1BTl9PTkxZIHx8IHMubGV2ZWwgPCAyID9cbiAgICAgICAgICAgICAgICAgICAgIDQgOiAwKSk7XG4gICAgICAgIHB1dF9ieXRlKHMsIE9TX0NPREUpO1xuICAgICAgICBzLnN0YXR1cyA9IEJVU1lfU1RBVEU7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgcHV0X2J5dGUocywgKHMuZ3poZWFkLnRleHQgPyAxIDogMCkgK1xuICAgICAgICAgICAgICAgICAgICAocy5nemhlYWQuaGNyYyA/IDIgOiAwKSArXG4gICAgICAgICAgICAgICAgICAgICghcy5nemhlYWQuZXh0cmEgPyAwIDogNCkgK1xuICAgICAgICAgICAgICAgICAgICAoIXMuZ3poZWFkLm5hbWUgPyAwIDogOCkgK1xuICAgICAgICAgICAgICAgICAgICAoIXMuZ3poZWFkLmNvbW1lbnQgPyAwIDogMTYpXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgcHV0X2J5dGUocywgcy5nemhlYWQudGltZSAmIDB4ZmYpO1xuICAgICAgICBwdXRfYnl0ZShzLCAocy5nemhlYWQudGltZSA+PiA4KSAmIDB4ZmYpO1xuICAgICAgICBwdXRfYnl0ZShzLCAocy5nemhlYWQudGltZSA+PiAxNikgJiAweGZmKTtcbiAgICAgICAgcHV0X2J5dGUocywgKHMuZ3poZWFkLnRpbWUgPj4gMjQpICYgMHhmZik7XG4gICAgICAgIHB1dF9ieXRlKHMsIHMubGV2ZWwgPT09IDkgPyAyIDpcbiAgICAgICAgICAgICAgICAgICAgKHMuc3RyYXRlZ3kgPj0gWl9IVUZGTUFOX09OTFkgfHwgcy5sZXZlbCA8IDIgP1xuICAgICAgICAgICAgICAgICAgICAgNCA6IDApKTtcbiAgICAgICAgcHV0X2J5dGUocywgcy5nemhlYWQub3MgJiAweGZmKTtcbiAgICAgICAgaWYgKHMuZ3poZWFkLmV4dHJhICYmIHMuZ3poZWFkLmV4dHJhLmxlbmd0aCkge1xuICAgICAgICAgIHB1dF9ieXRlKHMsIHMuZ3poZWFkLmV4dHJhLmxlbmd0aCAmIDB4ZmYpO1xuICAgICAgICAgIHB1dF9ieXRlKHMsIChzLmd6aGVhZC5leHRyYS5sZW5ndGggPj4gOCkgJiAweGZmKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocy5nemhlYWQuaGNyYykge1xuICAgICAgICAgIHN0cm0uYWRsZXIgPSBjcmMzMihzdHJtLmFkbGVyLCBzLnBlbmRpbmdfYnVmLCBzLnBlbmRpbmcsIDApO1xuICAgICAgICB9XG4gICAgICAgIHMuZ3ppbmRleCA9IDA7XG4gICAgICAgIHMuc3RhdHVzID0gRVhUUkFfU1RBVEU7XG4gICAgICB9XG4gICAgfVxuICAgIGVsc2UgLy8gREVGTEFURSBoZWFkZXJcbiAgICB7XG4gICAgICB2YXIgaGVhZGVyID0gKFpfREVGTEFURUQgKyAoKHMud19iaXRzIC0gOCkgPDwgNCkpIDw8IDg7XG4gICAgICB2YXIgbGV2ZWxfZmxhZ3MgPSAtMTtcblxuICAgICAgaWYgKHMuc3RyYXRlZ3kgPj0gWl9IVUZGTUFOX09OTFkgfHwgcy5sZXZlbCA8IDIpIHtcbiAgICAgICAgbGV2ZWxfZmxhZ3MgPSAwO1xuICAgICAgfSBlbHNlIGlmIChzLmxldmVsIDwgNikge1xuICAgICAgICBsZXZlbF9mbGFncyA9IDE7XG4gICAgICB9IGVsc2UgaWYgKHMubGV2ZWwgPT09IDYpIHtcbiAgICAgICAgbGV2ZWxfZmxhZ3MgPSAyO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGV2ZWxfZmxhZ3MgPSAzO1xuICAgICAgfVxuICAgICAgaGVhZGVyIHw9IChsZXZlbF9mbGFncyA8PCA2KTtcbiAgICAgIGlmIChzLnN0cnN0YXJ0ICE9PSAwKSB7IGhlYWRlciB8PSBQUkVTRVRfRElDVDsgfVxuICAgICAgaGVhZGVyICs9IDMxIC0gKGhlYWRlciAlIDMxKTtcblxuICAgICAgcy5zdGF0dXMgPSBCVVNZX1NUQVRFO1xuICAgICAgcHV0U2hvcnRNU0IocywgaGVhZGVyKTtcblxuICAgICAgLyogU2F2ZSB0aGUgYWRsZXIzMiBvZiB0aGUgcHJlc2V0IGRpY3Rpb25hcnk6ICovXG4gICAgICBpZiAocy5zdHJzdGFydCAhPT0gMCkge1xuICAgICAgICBwdXRTaG9ydE1TQihzLCBzdHJtLmFkbGVyID4+PiAxNik7XG4gICAgICAgIHB1dFNob3J0TVNCKHMsIHN0cm0uYWRsZXIgJiAweGZmZmYpO1xuICAgICAgfVxuICAgICAgc3RybS5hZGxlciA9IDE7IC8vIGFkbGVyMzIoMEwsIFpfTlVMTCwgMCk7XG4gICAgfVxuICB9XG5cbi8vI2lmZGVmIEdaSVBcbiAgaWYgKHMuc3RhdHVzID09PSBFWFRSQV9TVEFURSkge1xuICAgIGlmIChzLmd6aGVhZC5leHRyYS8qICE9IFpfTlVMTCovKSB7XG4gICAgICBiZWcgPSBzLnBlbmRpbmc7ICAvKiBzdGFydCBvZiBieXRlcyB0byB1cGRhdGUgY3JjICovXG5cbiAgICAgIHdoaWxlIChzLmd6aW5kZXggPCAocy5nemhlYWQuZXh0cmEubGVuZ3RoICYgMHhmZmZmKSkge1xuICAgICAgICBpZiAocy5wZW5kaW5nID09PSBzLnBlbmRpbmdfYnVmX3NpemUpIHtcbiAgICAgICAgICBpZiAocy5nemhlYWQuaGNyYyAmJiBzLnBlbmRpbmcgPiBiZWcpIHtcbiAgICAgICAgICAgIHN0cm0uYWRsZXIgPSBjcmMzMihzdHJtLmFkbGVyLCBzLnBlbmRpbmdfYnVmLCBzLnBlbmRpbmcgLSBiZWcsIGJlZyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGZsdXNoX3BlbmRpbmcoc3RybSk7XG4gICAgICAgICAgYmVnID0gcy5wZW5kaW5nO1xuICAgICAgICAgIGlmIChzLnBlbmRpbmcgPT09IHMucGVuZGluZ19idWZfc2l6ZSkge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHB1dF9ieXRlKHMsIHMuZ3poZWFkLmV4dHJhW3MuZ3ppbmRleF0gJiAweGZmKTtcbiAgICAgICAgcy5nemluZGV4Kys7XG4gICAgICB9XG4gICAgICBpZiAocy5nemhlYWQuaGNyYyAmJiBzLnBlbmRpbmcgPiBiZWcpIHtcbiAgICAgICAgc3RybS5hZGxlciA9IGNyYzMyKHN0cm0uYWRsZXIsIHMucGVuZGluZ19idWYsIHMucGVuZGluZyAtIGJlZywgYmVnKTtcbiAgICAgIH1cbiAgICAgIGlmIChzLmd6aW5kZXggPT09IHMuZ3poZWFkLmV4dHJhLmxlbmd0aCkge1xuICAgICAgICBzLmd6aW5kZXggPSAwO1xuICAgICAgICBzLnN0YXR1cyA9IE5BTUVfU1RBVEU7XG4gICAgICB9XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgcy5zdGF0dXMgPSBOQU1FX1NUQVRFO1xuICAgIH1cbiAgfVxuICBpZiAocy5zdGF0dXMgPT09IE5BTUVfU1RBVEUpIHtcbiAgICBpZiAocy5nemhlYWQubmFtZS8qICE9IFpfTlVMTCovKSB7XG4gICAgICBiZWcgPSBzLnBlbmRpbmc7ICAvKiBzdGFydCBvZiBieXRlcyB0byB1cGRhdGUgY3JjICovXG4gICAgICAvL2ludCB2YWw7XG5cbiAgICAgIGRvIHtcbiAgICAgICAgaWYgKHMucGVuZGluZyA9PT0gcy5wZW5kaW5nX2J1Zl9zaXplKSB7XG4gICAgICAgICAgaWYgKHMuZ3poZWFkLmhjcmMgJiYgcy5wZW5kaW5nID4gYmVnKSB7XG4gICAgICAgICAgICBzdHJtLmFkbGVyID0gY3JjMzIoc3RybS5hZGxlciwgcy5wZW5kaW5nX2J1Ziwgcy5wZW5kaW5nIC0gYmVnLCBiZWcpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBmbHVzaF9wZW5kaW5nKHN0cm0pO1xuICAgICAgICAgIGJlZyA9IHMucGVuZGluZztcbiAgICAgICAgICBpZiAocy5wZW5kaW5nID09PSBzLnBlbmRpbmdfYnVmX3NpemUpIHtcbiAgICAgICAgICAgIHZhbCA9IDE7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gSlMgc3BlY2lmaWM6IGxpdHRsZSBtYWdpYyB0byBhZGQgemVybyB0ZXJtaW5hdG9yIHRvIGVuZCBvZiBzdHJpbmdcbiAgICAgICAgaWYgKHMuZ3ppbmRleCA8IHMuZ3poZWFkLm5hbWUubGVuZ3RoKSB7XG4gICAgICAgICAgdmFsID0gcy5nemhlYWQubmFtZS5jaGFyQ29kZUF0KHMuZ3ppbmRleCsrKSAmIDB4ZmY7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmFsID0gMDtcbiAgICAgICAgfVxuICAgICAgICBwdXRfYnl0ZShzLCB2YWwpO1xuICAgICAgfSB3aGlsZSAodmFsICE9PSAwKTtcblxuICAgICAgaWYgKHMuZ3poZWFkLmhjcmMgJiYgcy5wZW5kaW5nID4gYmVnKSB7XG4gICAgICAgIHN0cm0uYWRsZXIgPSBjcmMzMihzdHJtLmFkbGVyLCBzLnBlbmRpbmdfYnVmLCBzLnBlbmRpbmcgLSBiZWcsIGJlZyk7XG4gICAgICB9XG4gICAgICBpZiAodmFsID09PSAwKSB7XG4gICAgICAgIHMuZ3ppbmRleCA9IDA7XG4gICAgICAgIHMuc3RhdHVzID0gQ09NTUVOVF9TVEFURTtcbiAgICAgIH1cbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBzLnN0YXR1cyA9IENPTU1FTlRfU1RBVEU7XG4gICAgfVxuICB9XG4gIGlmIChzLnN0YXR1cyA9PT0gQ09NTUVOVF9TVEFURSkge1xuICAgIGlmIChzLmd6aGVhZC5jb21tZW50LyogIT0gWl9OVUxMKi8pIHtcbiAgICAgIGJlZyA9IHMucGVuZGluZzsgIC8qIHN0YXJ0IG9mIGJ5dGVzIHRvIHVwZGF0ZSBjcmMgKi9cbiAgICAgIC8vaW50IHZhbDtcblxuICAgICAgZG8ge1xuICAgICAgICBpZiAocy5wZW5kaW5nID09PSBzLnBlbmRpbmdfYnVmX3NpemUpIHtcbiAgICAgICAgICBpZiAocy5nemhlYWQuaGNyYyAmJiBzLnBlbmRpbmcgPiBiZWcpIHtcbiAgICAgICAgICAgIHN0cm0uYWRsZXIgPSBjcmMzMihzdHJtLmFkbGVyLCBzLnBlbmRpbmdfYnVmLCBzLnBlbmRpbmcgLSBiZWcsIGJlZyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGZsdXNoX3BlbmRpbmcoc3RybSk7XG4gICAgICAgICAgYmVnID0gcy5wZW5kaW5nO1xuICAgICAgICAgIGlmIChzLnBlbmRpbmcgPT09IHMucGVuZGluZ19idWZfc2l6ZSkge1xuICAgICAgICAgICAgdmFsID0gMTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBKUyBzcGVjaWZpYzogbGl0dGxlIG1hZ2ljIHRvIGFkZCB6ZXJvIHRlcm1pbmF0b3IgdG8gZW5kIG9mIHN0cmluZ1xuICAgICAgICBpZiAocy5nemluZGV4IDwgcy5nemhlYWQuY29tbWVudC5sZW5ndGgpIHtcbiAgICAgICAgICB2YWwgPSBzLmd6aGVhZC5jb21tZW50LmNoYXJDb2RlQXQocy5nemluZGV4KyspICYgMHhmZjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2YWwgPSAwO1xuICAgICAgICB9XG4gICAgICAgIHB1dF9ieXRlKHMsIHZhbCk7XG4gICAgICB9IHdoaWxlICh2YWwgIT09IDApO1xuXG4gICAgICBpZiAocy5nemhlYWQuaGNyYyAmJiBzLnBlbmRpbmcgPiBiZWcpIHtcbiAgICAgICAgc3RybS5hZGxlciA9IGNyYzMyKHN0cm0uYWRsZXIsIHMucGVuZGluZ19idWYsIHMucGVuZGluZyAtIGJlZywgYmVnKTtcbiAgICAgIH1cbiAgICAgIGlmICh2YWwgPT09IDApIHtcbiAgICAgICAgcy5zdGF0dXMgPSBIQ1JDX1NUQVRFO1xuICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHMuc3RhdHVzID0gSENSQ19TVEFURTtcbiAgICB9XG4gIH1cbiAgaWYgKHMuc3RhdHVzID09PSBIQ1JDX1NUQVRFKSB7XG4gICAgaWYgKHMuZ3poZWFkLmhjcmMpIHtcbiAgICAgIGlmIChzLnBlbmRpbmcgKyAyID4gcy5wZW5kaW5nX2J1Zl9zaXplKSB7XG4gICAgICAgIGZsdXNoX3BlbmRpbmcoc3RybSk7XG4gICAgICB9XG4gICAgICBpZiAocy5wZW5kaW5nICsgMiA8PSBzLnBlbmRpbmdfYnVmX3NpemUpIHtcbiAgICAgICAgcHV0X2J5dGUocywgc3RybS5hZGxlciAmIDB4ZmYpO1xuICAgICAgICBwdXRfYnl0ZShzLCAoc3RybS5hZGxlciA+PiA4KSAmIDB4ZmYpO1xuICAgICAgICBzdHJtLmFkbGVyID0gMDsgLy9jcmMzMigwTCwgWl9OVUxMLCAwKTtcbiAgICAgICAgcy5zdGF0dXMgPSBCVVNZX1NUQVRFO1xuICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHMuc3RhdHVzID0gQlVTWV9TVEFURTtcbiAgICB9XG4gIH1cbi8vI2VuZGlmXG5cbiAgLyogRmx1c2ggYXMgbXVjaCBwZW5kaW5nIG91dHB1dCBhcyBwb3NzaWJsZSAqL1xuICBpZiAocy5wZW5kaW5nICE9PSAwKSB7XG4gICAgZmx1c2hfcGVuZGluZyhzdHJtKTtcbiAgICBpZiAoc3RybS5hdmFpbF9vdXQgPT09IDApIHtcbiAgICAgIC8qIFNpbmNlIGF2YWlsX291dCBpcyAwLCBkZWZsYXRlIHdpbGwgYmUgY2FsbGVkIGFnYWluIHdpdGhcbiAgICAgICAqIG1vcmUgb3V0cHV0IHNwYWNlLCBidXQgcG9zc2libHkgd2l0aCBib3RoIHBlbmRpbmcgYW5kXG4gICAgICAgKiBhdmFpbF9pbiBlcXVhbCB0byB6ZXJvLiBUaGVyZSB3b24ndCBiZSBhbnl0aGluZyB0byBkbyxcbiAgICAgICAqIGJ1dCB0aGlzIGlzIG5vdCBhbiBlcnJvciBzaXR1YXRpb24gc28gbWFrZSBzdXJlIHdlXG4gICAgICAgKiByZXR1cm4gT0sgaW5zdGVhZCBvZiBCVUZfRVJST1IgYXQgbmV4dCBjYWxsIG9mIGRlZmxhdGU6XG4gICAgICAgKi9cbiAgICAgIHMubGFzdF9mbHVzaCA9IC0xO1xuICAgICAgcmV0dXJuIFpfT0s7XG4gICAgfVxuXG4gICAgLyogTWFrZSBzdXJlIHRoZXJlIGlzIHNvbWV0aGluZyB0byBkbyBhbmQgYXZvaWQgZHVwbGljYXRlIGNvbnNlY3V0aXZlXG4gICAgICogZmx1c2hlcy4gRm9yIHJlcGVhdGVkIGFuZCB1c2VsZXNzIGNhbGxzIHdpdGggWl9GSU5JU0gsIHdlIGtlZXBcbiAgICAgKiByZXR1cm5pbmcgWl9TVFJFQU1fRU5EIGluc3RlYWQgb2YgWl9CVUZfRVJST1IuXG4gICAgICovXG4gIH0gZWxzZSBpZiAoc3RybS5hdmFpbF9pbiA9PT0gMCAmJiByYW5rKGZsdXNoKSA8PSByYW5rKG9sZF9mbHVzaCkgJiZcbiAgICBmbHVzaCAhPT0gWl9GSU5JU0gpIHtcbiAgICByZXR1cm4gZXJyKHN0cm0sIFpfQlVGX0VSUk9SKTtcbiAgfVxuXG4gIC8qIFVzZXIgbXVzdCBub3QgcHJvdmlkZSBtb3JlIGlucHV0IGFmdGVyIHRoZSBmaXJzdCBGSU5JU0g6ICovXG4gIGlmIChzLnN0YXR1cyA9PT0gRklOSVNIX1NUQVRFICYmIHN0cm0uYXZhaWxfaW4gIT09IDApIHtcbiAgICByZXR1cm4gZXJyKHN0cm0sIFpfQlVGX0VSUk9SKTtcbiAgfVxuXG4gIC8qIFN0YXJ0IGEgbmV3IGJsb2NrIG9yIGNvbnRpbnVlIHRoZSBjdXJyZW50IG9uZS5cbiAgICovXG4gIGlmIChzdHJtLmF2YWlsX2luICE9PSAwIHx8IHMubG9va2FoZWFkICE9PSAwIHx8XG4gICAgKGZsdXNoICE9PSBaX05PX0ZMVVNIICYmIHMuc3RhdHVzICE9PSBGSU5JU0hfU1RBVEUpKSB7XG4gICAgdmFyIGJzdGF0ZSA9IChzLnN0cmF0ZWd5ID09PSBaX0hVRkZNQU5fT05MWSkgPyBkZWZsYXRlX2h1ZmYocywgZmx1c2gpIDpcbiAgICAgIChzLnN0cmF0ZWd5ID09PSBaX1JMRSA/IGRlZmxhdGVfcmxlKHMsIGZsdXNoKSA6XG4gICAgICAgIGNvbmZpZ3VyYXRpb25fdGFibGVbcy5sZXZlbF0uZnVuYyhzLCBmbHVzaCkpO1xuXG4gICAgaWYgKGJzdGF0ZSA9PT0gQlNfRklOSVNIX1NUQVJURUQgfHwgYnN0YXRlID09PSBCU19GSU5JU0hfRE9ORSkge1xuICAgICAgcy5zdGF0dXMgPSBGSU5JU0hfU1RBVEU7XG4gICAgfVxuICAgIGlmIChic3RhdGUgPT09IEJTX05FRURfTU9SRSB8fCBic3RhdGUgPT09IEJTX0ZJTklTSF9TVEFSVEVEKSB7XG4gICAgICBpZiAoc3RybS5hdmFpbF9vdXQgPT09IDApIHtcbiAgICAgICAgcy5sYXN0X2ZsdXNoID0gLTE7XG4gICAgICAgIC8qIGF2b2lkIEJVRl9FUlJPUiBuZXh0IGNhbGwsIHNlZSBhYm92ZSAqL1xuICAgICAgfVxuICAgICAgcmV0dXJuIFpfT0s7XG4gICAgICAvKiBJZiBmbHVzaCAhPSBaX05PX0ZMVVNIICYmIGF2YWlsX291dCA9PSAwLCB0aGUgbmV4dCBjYWxsXG4gICAgICAgKiBvZiBkZWZsYXRlIHNob3VsZCB1c2UgdGhlIHNhbWUgZmx1c2ggcGFyYW1ldGVyIHRvIG1ha2Ugc3VyZVxuICAgICAgICogdGhhdCB0aGUgZmx1c2ggaXMgY29tcGxldGUuIFNvIHdlIGRvbid0IGhhdmUgdG8gb3V0cHV0IGFuXG4gICAgICAgKiBlbXB0eSBibG9jayBoZXJlLCB0aGlzIHdpbGwgYmUgZG9uZSBhdCBuZXh0IGNhbGwuIFRoaXMgYWxzb1xuICAgICAgICogZW5zdXJlcyB0aGF0IGZvciBhIHZlcnkgc21hbGwgb3V0cHV0IGJ1ZmZlciwgd2UgZW1pdCBhdCBtb3N0XG4gICAgICAgKiBvbmUgZW1wdHkgYmxvY2suXG4gICAgICAgKi9cbiAgICB9XG4gICAgaWYgKGJzdGF0ZSA9PT0gQlNfQkxPQ0tfRE9ORSkge1xuICAgICAgaWYgKGZsdXNoID09PSBaX1BBUlRJQUxfRkxVU0gpIHtcbiAgICAgICAgdHJlZXMuX3RyX2FsaWduKHMpO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAoZmx1c2ggIT09IFpfQkxPQ0spIHsgLyogRlVMTF9GTFVTSCBvciBTWU5DX0ZMVVNIICovXG5cbiAgICAgICAgdHJlZXMuX3RyX3N0b3JlZF9ibG9jayhzLCAwLCAwLCBmYWxzZSk7XG4gICAgICAgIC8qIEZvciBhIGZ1bGwgZmx1c2gsIHRoaXMgZW1wdHkgYmxvY2sgd2lsbCBiZSByZWNvZ25pemVkXG4gICAgICAgICAqIGFzIGEgc3BlY2lhbCBtYXJrZXIgYnkgaW5mbGF0ZV9zeW5jKCkuXG4gICAgICAgICAqL1xuICAgICAgICBpZiAoZmx1c2ggPT09IFpfRlVMTF9GTFVTSCkge1xuICAgICAgICAgIC8qKiogQ0xFQVJfSEFTSChzKTsgKioqLyAgICAgICAgICAgICAvKiBmb3JnZXQgaGlzdG9yeSAqL1xuICAgICAgICAgIHplcm8ocy5oZWFkKTsgLy8gRmlsbCB3aXRoIE5JTCAoPSAwKTtcblxuICAgICAgICAgIGlmIChzLmxvb2thaGVhZCA9PT0gMCkge1xuICAgICAgICAgICAgcy5zdHJzdGFydCA9IDA7XG4gICAgICAgICAgICBzLmJsb2NrX3N0YXJ0ID0gMDtcbiAgICAgICAgICAgIHMuaW5zZXJ0ID0gMDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGZsdXNoX3BlbmRpbmcoc3RybSk7XG4gICAgICBpZiAoc3RybS5hdmFpbF9vdXQgPT09IDApIHtcbiAgICAgICAgcy5sYXN0X2ZsdXNoID0gLTE7IC8qIGF2b2lkIEJVRl9FUlJPUiBhdCBuZXh0IGNhbGwsIHNlZSBhYm92ZSAqL1xuICAgICAgICByZXR1cm4gWl9PSztcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgLy9Bc3NlcnQoc3RybS0+YXZhaWxfb3V0ID4gMCwgXCJidWcyXCIpO1xuICAvL2lmIChzdHJtLmF2YWlsX291dCA8PSAwKSB7IHRocm93IG5ldyBFcnJvcihcImJ1ZzJcIik7fVxuXG4gIGlmIChmbHVzaCAhPT0gWl9GSU5JU0gpIHsgcmV0dXJuIFpfT0s7IH1cbiAgaWYgKHMud3JhcCA8PSAwKSB7IHJldHVybiBaX1NUUkVBTV9FTkQ7IH1cblxuICAvKiBXcml0ZSB0aGUgdHJhaWxlciAqL1xuICBpZiAocy53cmFwID09PSAyKSB7XG4gICAgcHV0X2J5dGUocywgc3RybS5hZGxlciAmIDB4ZmYpO1xuICAgIHB1dF9ieXRlKHMsIChzdHJtLmFkbGVyID4+IDgpICYgMHhmZik7XG4gICAgcHV0X2J5dGUocywgKHN0cm0uYWRsZXIgPj4gMTYpICYgMHhmZik7XG4gICAgcHV0X2J5dGUocywgKHN0cm0uYWRsZXIgPj4gMjQpICYgMHhmZik7XG4gICAgcHV0X2J5dGUocywgc3RybS50b3RhbF9pbiAmIDB4ZmYpO1xuICAgIHB1dF9ieXRlKHMsIChzdHJtLnRvdGFsX2luID4+IDgpICYgMHhmZik7XG4gICAgcHV0X2J5dGUocywgKHN0cm0udG90YWxfaW4gPj4gMTYpICYgMHhmZik7XG4gICAgcHV0X2J5dGUocywgKHN0cm0udG90YWxfaW4gPj4gMjQpICYgMHhmZik7XG4gIH1cbiAgZWxzZVxuICB7XG4gICAgcHV0U2hvcnRNU0Iocywgc3RybS5hZGxlciA+Pj4gMTYpO1xuICAgIHB1dFNob3J0TVNCKHMsIHN0cm0uYWRsZXIgJiAweGZmZmYpO1xuICB9XG5cbiAgZmx1c2hfcGVuZGluZyhzdHJtKTtcbiAgLyogSWYgYXZhaWxfb3V0IGlzIHplcm8sIHRoZSBhcHBsaWNhdGlvbiB3aWxsIGNhbGwgZGVmbGF0ZSBhZ2FpblxuICAgKiB0byBmbHVzaCB0aGUgcmVzdC5cbiAgICovXG4gIGlmIChzLndyYXAgPiAwKSB7IHMud3JhcCA9IC1zLndyYXA7IH1cbiAgLyogd3JpdGUgdGhlIHRyYWlsZXIgb25seSBvbmNlISAqL1xuICByZXR1cm4gcy5wZW5kaW5nICE9PSAwID8gWl9PSyA6IFpfU1RSRUFNX0VORDtcbn1cblxuZnVuY3Rpb24gZGVmbGF0ZUVuZChzdHJtKSB7XG4gIHZhciBzdGF0dXM7XG5cbiAgaWYgKCFzdHJtLyo9PSBaX05VTEwqLyB8fCAhc3RybS5zdGF0ZS8qPT0gWl9OVUxMKi8pIHtcbiAgICByZXR1cm4gWl9TVFJFQU1fRVJST1I7XG4gIH1cblxuICBzdGF0dXMgPSBzdHJtLnN0YXRlLnN0YXR1cztcbiAgaWYgKHN0YXR1cyAhPT0gSU5JVF9TVEFURSAmJlxuICAgIHN0YXR1cyAhPT0gRVhUUkFfU1RBVEUgJiZcbiAgICBzdGF0dXMgIT09IE5BTUVfU1RBVEUgJiZcbiAgICBzdGF0dXMgIT09IENPTU1FTlRfU1RBVEUgJiZcbiAgICBzdGF0dXMgIT09IEhDUkNfU1RBVEUgJiZcbiAgICBzdGF0dXMgIT09IEJVU1lfU1RBVEUgJiZcbiAgICBzdGF0dXMgIT09IEZJTklTSF9TVEFURVxuICApIHtcbiAgICByZXR1cm4gZXJyKHN0cm0sIFpfU1RSRUFNX0VSUk9SKTtcbiAgfVxuXG4gIHN0cm0uc3RhdGUgPSBudWxsO1xuXG4gIHJldHVybiBzdGF0dXMgPT09IEJVU1lfU1RBVEUgPyBlcnIoc3RybSwgWl9EQVRBX0VSUk9SKSA6IFpfT0s7XG59XG5cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICogSW5pdGlhbGl6ZXMgdGhlIGNvbXByZXNzaW9uIGRpY3Rpb25hcnkgZnJvbSB0aGUgZ2l2ZW4gYnl0ZVxuICogc2VxdWVuY2Ugd2l0aG91dCBwcm9kdWNpbmcgYW55IGNvbXByZXNzZWQgb3V0cHV0LlxuICovXG5mdW5jdGlvbiBkZWZsYXRlU2V0RGljdGlvbmFyeShzdHJtLCBkaWN0aW9uYXJ5KSB7XG4gIHZhciBkaWN0TGVuZ3RoID0gZGljdGlvbmFyeS5sZW5ndGg7XG5cbiAgdmFyIHM7XG4gIHZhciBzdHIsIG47XG4gIHZhciB3cmFwO1xuICB2YXIgYXZhaWw7XG4gIHZhciBuZXh0O1xuICB2YXIgaW5wdXQ7XG4gIHZhciB0bXBEaWN0O1xuXG4gIGlmICghc3RybS8qPT0gWl9OVUxMKi8gfHwgIXN0cm0uc3RhdGUvKj09IFpfTlVMTCovKSB7XG4gICAgcmV0dXJuIFpfU1RSRUFNX0VSUk9SO1xuICB9XG5cbiAgcyA9IHN0cm0uc3RhdGU7XG4gIHdyYXAgPSBzLndyYXA7XG5cbiAgaWYgKHdyYXAgPT09IDIgfHwgKHdyYXAgPT09IDEgJiYgcy5zdGF0dXMgIT09IElOSVRfU1RBVEUpIHx8IHMubG9va2FoZWFkKSB7XG4gICAgcmV0dXJuIFpfU1RSRUFNX0VSUk9SO1xuICB9XG5cbiAgLyogd2hlbiB1c2luZyB6bGliIHdyYXBwZXJzLCBjb21wdXRlIEFkbGVyLTMyIGZvciBwcm92aWRlZCBkaWN0aW9uYXJ5ICovXG4gIGlmICh3cmFwID09PSAxKSB7XG4gICAgLyogYWRsZXIzMihzdHJtLT5hZGxlciwgZGljdGlvbmFyeSwgZGljdExlbmd0aCk7ICovXG4gICAgc3RybS5hZGxlciA9IGFkbGVyMzIoc3RybS5hZGxlciwgZGljdGlvbmFyeSwgZGljdExlbmd0aCwgMCk7XG4gIH1cblxuICBzLndyYXAgPSAwOyAgIC8qIGF2b2lkIGNvbXB1dGluZyBBZGxlci0zMiBpbiByZWFkX2J1ZiAqL1xuXG4gIC8qIGlmIGRpY3Rpb25hcnkgd291bGQgZmlsbCB3aW5kb3csIGp1c3QgcmVwbGFjZSB0aGUgaGlzdG9yeSAqL1xuICBpZiAoZGljdExlbmd0aCA+PSBzLndfc2l6ZSkge1xuICAgIGlmICh3cmFwID09PSAwKSB7ICAgICAgICAgICAgLyogYWxyZWFkeSBlbXB0eSBvdGhlcndpc2UgKi9cbiAgICAgIC8qKiogQ0xFQVJfSEFTSChzKTsgKioqL1xuICAgICAgemVybyhzLmhlYWQpOyAvLyBGaWxsIHdpdGggTklMICg9IDApO1xuICAgICAgcy5zdHJzdGFydCA9IDA7XG4gICAgICBzLmJsb2NrX3N0YXJ0ID0gMDtcbiAgICAgIHMuaW5zZXJ0ID0gMDtcbiAgICB9XG4gICAgLyogdXNlIHRoZSB0YWlsICovXG4gICAgLy8gZGljdGlvbmFyeSA9IGRpY3Rpb25hcnkuc2xpY2UoZGljdExlbmd0aCAtIHMud19zaXplKTtcbiAgICB0bXBEaWN0ID0gbmV3IHV0aWxzLkJ1Zjgocy53X3NpemUpO1xuICAgIHV0aWxzLmFycmF5U2V0KHRtcERpY3QsIGRpY3Rpb25hcnksIGRpY3RMZW5ndGggLSBzLndfc2l6ZSwgcy53X3NpemUsIDApO1xuICAgIGRpY3Rpb25hcnkgPSB0bXBEaWN0O1xuICAgIGRpY3RMZW5ndGggPSBzLndfc2l6ZTtcbiAgfVxuICAvKiBpbnNlcnQgZGljdGlvbmFyeSBpbnRvIHdpbmRvdyBhbmQgaGFzaCAqL1xuICBhdmFpbCA9IHN0cm0uYXZhaWxfaW47XG4gIG5leHQgPSBzdHJtLm5leHRfaW47XG4gIGlucHV0ID0gc3RybS5pbnB1dDtcbiAgc3RybS5hdmFpbF9pbiA9IGRpY3RMZW5ndGg7XG4gIHN0cm0ubmV4dF9pbiA9IDA7XG4gIHN0cm0uaW5wdXQgPSBkaWN0aW9uYXJ5O1xuICBmaWxsX3dpbmRvdyhzKTtcbiAgd2hpbGUgKHMubG9va2FoZWFkID49IE1JTl9NQVRDSCkge1xuICAgIHN0ciA9IHMuc3Ryc3RhcnQ7XG4gICAgbiA9IHMubG9va2FoZWFkIC0gKE1JTl9NQVRDSCAtIDEpO1xuICAgIGRvIHtcbiAgICAgIC8qIFVQREFURV9IQVNIKHMsIHMtPmluc19oLCBzLT53aW5kb3dbc3RyICsgTUlOX01BVENILTFdKTsgKi9cbiAgICAgIHMuaW5zX2ggPSAoKHMuaW5zX2ggPDwgcy5oYXNoX3NoaWZ0KSBeIHMud2luZG93W3N0ciArIE1JTl9NQVRDSCAtIDFdKSAmIHMuaGFzaF9tYXNrO1xuXG4gICAgICBzLnByZXZbc3RyICYgcy53X21hc2tdID0gcy5oZWFkW3MuaW5zX2hdO1xuXG4gICAgICBzLmhlYWRbcy5pbnNfaF0gPSBzdHI7XG4gICAgICBzdHIrKztcbiAgICB9IHdoaWxlICgtLW4pO1xuICAgIHMuc3Ryc3RhcnQgPSBzdHI7XG4gICAgcy5sb29rYWhlYWQgPSBNSU5fTUFUQ0ggLSAxO1xuICAgIGZpbGxfd2luZG93KHMpO1xuICB9XG4gIHMuc3Ryc3RhcnQgKz0gcy5sb29rYWhlYWQ7XG4gIHMuYmxvY2tfc3RhcnQgPSBzLnN0cnN0YXJ0O1xuICBzLmluc2VydCA9IHMubG9va2FoZWFkO1xuICBzLmxvb2thaGVhZCA9IDA7XG4gIHMubWF0Y2hfbGVuZ3RoID0gcy5wcmV2X2xlbmd0aCA9IE1JTl9NQVRDSCAtIDE7XG4gIHMubWF0Y2hfYXZhaWxhYmxlID0gMDtcbiAgc3RybS5uZXh0X2luID0gbmV4dDtcbiAgc3RybS5pbnB1dCA9IGlucHV0O1xuICBzdHJtLmF2YWlsX2luID0gYXZhaWw7XG4gIHMud3JhcCA9IHdyYXA7XG4gIHJldHVybiBaX09LO1xufVxuXG5cbmV4cG9ydHMuZGVmbGF0ZUluaXQgPSBkZWZsYXRlSW5pdDtcbmV4cG9ydHMuZGVmbGF0ZUluaXQyID0gZGVmbGF0ZUluaXQyO1xuZXhwb3J0cy5kZWZsYXRlUmVzZXQgPSBkZWZsYXRlUmVzZXQ7XG5leHBvcnRzLmRlZmxhdGVSZXNldEtlZXAgPSBkZWZsYXRlUmVzZXRLZWVwO1xuZXhwb3J0cy5kZWZsYXRlU2V0SGVhZGVyID0gZGVmbGF0ZVNldEhlYWRlcjtcbmV4cG9ydHMuZGVmbGF0ZSA9IGRlZmxhdGU7XG5leHBvcnRzLmRlZmxhdGVFbmQgPSBkZWZsYXRlRW5kO1xuZXhwb3J0cy5kZWZsYXRlU2V0RGljdGlvbmFyeSA9IGRlZmxhdGVTZXREaWN0aW9uYXJ5O1xuZXhwb3J0cy5kZWZsYXRlSW5mbyA9ICdwYWtvIGRlZmxhdGUgKGZyb20gTm9kZWNhIHByb2plY3QpJztcblxuLyogTm90IGltcGxlbWVudGVkXG5leHBvcnRzLmRlZmxhdGVCb3VuZCA9IGRlZmxhdGVCb3VuZDtcbmV4cG9ydHMuZGVmbGF0ZUNvcHkgPSBkZWZsYXRlQ29weTtcbmV4cG9ydHMuZGVmbGF0ZVBhcmFtcyA9IGRlZmxhdGVQYXJhbXM7XG5leHBvcnRzLmRlZmxhdGVQZW5kaW5nID0gZGVmbGF0ZVBlbmRpbmc7XG5leHBvcnRzLmRlZmxhdGVQcmltZSA9IGRlZmxhdGVQcmltZTtcbmV4cG9ydHMuZGVmbGF0ZVR1bmUgPSBkZWZsYXRlVHVuZTtcbiovXG4iLCIndXNlIHN0cmljdCc7XG5cbi8vIFNlZSBzdGF0ZSBkZWZzIGZyb20gaW5mbGF0ZS5qc1xudmFyIEJBRCA9IDMwOyAgICAgICAvKiBnb3QgYSBkYXRhIGVycm9yIC0tIHJlbWFpbiBoZXJlIHVudGlsIHJlc2V0ICovXG52YXIgVFlQRSA9IDEyOyAgICAgIC8qIGk6IHdhaXRpbmcgZm9yIHR5cGUgYml0cywgaW5jbHVkaW5nIGxhc3QtZmxhZyBiaXQgKi9cblxuLypcbiAgIERlY29kZSBsaXRlcmFsLCBsZW5ndGgsIGFuZCBkaXN0YW5jZSBjb2RlcyBhbmQgd3JpdGUgb3V0IHRoZSByZXN1bHRpbmdcbiAgIGxpdGVyYWwgYW5kIG1hdGNoIGJ5dGVzIHVudGlsIGVpdGhlciBub3QgZW5vdWdoIGlucHV0IG9yIG91dHB1dCBpc1xuICAgYXZhaWxhYmxlLCBhbiBlbmQtb2YtYmxvY2sgaXMgZW5jb3VudGVyZWQsIG9yIGEgZGF0YSBlcnJvciBpcyBlbmNvdW50ZXJlZC5cbiAgIFdoZW4gbGFyZ2UgZW5vdWdoIGlucHV0IGFuZCBvdXRwdXQgYnVmZmVycyBhcmUgc3VwcGxpZWQgdG8gaW5mbGF0ZSgpLCBmb3JcbiAgIGV4YW1wbGUsIGEgMTZLIGlucHV0IGJ1ZmZlciBhbmQgYSA2NEsgb3V0cHV0IGJ1ZmZlciwgbW9yZSB0aGFuIDk1JSBvZiB0aGVcbiAgIGluZmxhdGUgZXhlY3V0aW9uIHRpbWUgaXMgc3BlbnQgaW4gdGhpcyByb3V0aW5lLlxuXG4gICBFbnRyeSBhc3N1bXB0aW9uczpcblxuICAgICAgICBzdGF0ZS5tb2RlID09PSBMRU5cbiAgICAgICAgc3RybS5hdmFpbF9pbiA+PSA2XG4gICAgICAgIHN0cm0uYXZhaWxfb3V0ID49IDI1OFxuICAgICAgICBzdGFydCA+PSBzdHJtLmF2YWlsX291dFxuICAgICAgICBzdGF0ZS5iaXRzIDwgOFxuXG4gICBPbiByZXR1cm4sIHN0YXRlLm1vZGUgaXMgb25lIG9mOlxuXG4gICAgICAgIExFTiAtLSByYW4gb3V0IG9mIGVub3VnaCBvdXRwdXQgc3BhY2Ugb3IgZW5vdWdoIGF2YWlsYWJsZSBpbnB1dFxuICAgICAgICBUWVBFIC0tIHJlYWNoZWQgZW5kIG9mIGJsb2NrIGNvZGUsIGluZmxhdGUoKSB0byBpbnRlcnByZXQgbmV4dCBibG9ja1xuICAgICAgICBCQUQgLS0gZXJyb3IgaW4gYmxvY2sgZGF0YVxuXG4gICBOb3RlczpcblxuICAgIC0gVGhlIG1heGltdW0gaW5wdXQgYml0cyB1c2VkIGJ5IGEgbGVuZ3RoL2Rpc3RhbmNlIHBhaXIgaXMgMTUgYml0cyBmb3IgdGhlXG4gICAgICBsZW5ndGggY29kZSwgNSBiaXRzIGZvciB0aGUgbGVuZ3RoIGV4dHJhLCAxNSBiaXRzIGZvciB0aGUgZGlzdGFuY2UgY29kZSxcbiAgICAgIGFuZCAxMyBiaXRzIGZvciB0aGUgZGlzdGFuY2UgZXh0cmEuICBUaGlzIHRvdGFscyA0OCBiaXRzLCBvciBzaXggYnl0ZXMuXG4gICAgICBUaGVyZWZvcmUgaWYgc3RybS5hdmFpbF9pbiA+PSA2LCB0aGVuIHRoZXJlIGlzIGVub3VnaCBpbnB1dCB0byBhdm9pZFxuICAgICAgY2hlY2tpbmcgZm9yIGF2YWlsYWJsZSBpbnB1dCB3aGlsZSBkZWNvZGluZy5cblxuICAgIC0gVGhlIG1heGltdW0gYnl0ZXMgdGhhdCBhIHNpbmdsZSBsZW5ndGgvZGlzdGFuY2UgcGFpciBjYW4gb3V0cHV0IGlzIDI1OFxuICAgICAgYnl0ZXMsIHdoaWNoIGlzIHRoZSBtYXhpbXVtIGxlbmd0aCB0aGF0IGNhbiBiZSBjb2RlZC4gIGluZmxhdGVfZmFzdCgpXG4gICAgICByZXF1aXJlcyBzdHJtLmF2YWlsX291dCA+PSAyNTggZm9yIGVhY2ggbG9vcCB0byBhdm9pZCBjaGVja2luZyBmb3JcbiAgICAgIG91dHB1dCBzcGFjZS5cbiAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBpbmZsYXRlX2Zhc3Qoc3RybSwgc3RhcnQpIHtcbiAgdmFyIHN0YXRlO1xuICB2YXIgX2luOyAgICAgICAgICAgICAgICAgICAgLyogbG9jYWwgc3RybS5pbnB1dCAqL1xuICB2YXIgbGFzdDsgICAgICAgICAgICAgICAgICAgLyogaGF2ZSBlbm91Z2ggaW5wdXQgd2hpbGUgaW4gPCBsYXN0ICovXG4gIHZhciBfb3V0OyAgICAgICAgICAgICAgICAgICAvKiBsb2NhbCBzdHJtLm91dHB1dCAqL1xuICB2YXIgYmVnOyAgICAgICAgICAgICAgICAgICAgLyogaW5mbGF0ZSgpJ3MgaW5pdGlhbCBzdHJtLm91dHB1dCAqL1xuICB2YXIgZW5kOyAgICAgICAgICAgICAgICAgICAgLyogd2hpbGUgb3V0IDwgZW5kLCBlbm91Z2ggc3BhY2UgYXZhaWxhYmxlICovXG4vLyNpZmRlZiBJTkZMQVRFX1NUUklDVFxuICB2YXIgZG1heDsgICAgICAgICAgICAgICAgICAgLyogbWF4aW11bSBkaXN0YW5jZSBmcm9tIHpsaWIgaGVhZGVyICovXG4vLyNlbmRpZlxuICB2YXIgd3NpemU7ICAgICAgICAgICAgICAgICAgLyogd2luZG93IHNpemUgb3IgemVybyBpZiBub3QgdXNpbmcgd2luZG93ICovXG4gIHZhciB3aGF2ZTsgICAgICAgICAgICAgICAgICAvKiB2YWxpZCBieXRlcyBpbiB0aGUgd2luZG93ICovXG4gIHZhciB3bmV4dDsgICAgICAgICAgICAgICAgICAvKiB3aW5kb3cgd3JpdGUgaW5kZXggKi9cbiAgLy8gVXNlIGBzX3dpbmRvd2AgaW5zdGVhZCBgd2luZG93YCwgYXZvaWQgY29uZmxpY3Qgd2l0aCBpbnN0cnVtZW50YXRpb24gdG9vbHNcbiAgdmFyIHNfd2luZG93OyAgICAgICAgICAgICAgIC8qIGFsbG9jYXRlZCBzbGlkaW5nIHdpbmRvdywgaWYgd3NpemUgIT0gMCAqL1xuICB2YXIgaG9sZDsgICAgICAgICAgICAgICAgICAgLyogbG9jYWwgc3RybS5ob2xkICovXG4gIHZhciBiaXRzOyAgICAgICAgICAgICAgICAgICAvKiBsb2NhbCBzdHJtLmJpdHMgKi9cbiAgdmFyIGxjb2RlOyAgICAgICAgICAgICAgICAgIC8qIGxvY2FsIHN0cm0ubGVuY29kZSAqL1xuICB2YXIgZGNvZGU7ICAgICAgICAgICAgICAgICAgLyogbG9jYWwgc3RybS5kaXN0Y29kZSAqL1xuICB2YXIgbG1hc2s7ICAgICAgICAgICAgICAgICAgLyogbWFzayBmb3IgZmlyc3QgbGV2ZWwgb2YgbGVuZ3RoIGNvZGVzICovXG4gIHZhciBkbWFzazsgICAgICAgICAgICAgICAgICAvKiBtYXNrIGZvciBmaXJzdCBsZXZlbCBvZiBkaXN0YW5jZSBjb2RlcyAqL1xuICB2YXIgaGVyZTsgICAgICAgICAgICAgICAgICAgLyogcmV0cmlldmVkIHRhYmxlIGVudHJ5ICovXG4gIHZhciBvcDsgICAgICAgICAgICAgICAgICAgICAvKiBjb2RlIGJpdHMsIG9wZXJhdGlvbiwgZXh0cmEgYml0cywgb3IgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICB3aW5kb3cgcG9zaXRpb24sIHdpbmRvdyBieXRlcyB0byBjb3B5ICovXG4gIHZhciBsZW47ICAgICAgICAgICAgICAgICAgICAvKiBtYXRjaCBsZW5ndGgsIHVudXNlZCBieXRlcyAqL1xuICB2YXIgZGlzdDsgICAgICAgICAgICAgICAgICAgLyogbWF0Y2ggZGlzdGFuY2UgKi9cbiAgdmFyIGZyb207ICAgICAgICAgICAgICAgICAgIC8qIHdoZXJlIHRvIGNvcHkgbWF0Y2ggZnJvbSAqL1xuICB2YXIgZnJvbV9zb3VyY2U7XG5cblxuICB2YXIgaW5wdXQsIG91dHB1dDsgLy8gSlMgc3BlY2lmaWMsIGJlY2F1c2Ugd2UgaGF2ZSBubyBwb2ludGVyc1xuXG4gIC8qIGNvcHkgc3RhdGUgdG8gbG9jYWwgdmFyaWFibGVzICovXG4gIHN0YXRlID0gc3RybS5zdGF0ZTtcbiAgLy9oZXJlID0gc3RhdGUuaGVyZTtcbiAgX2luID0gc3RybS5uZXh0X2luO1xuICBpbnB1dCA9IHN0cm0uaW5wdXQ7XG4gIGxhc3QgPSBfaW4gKyAoc3RybS5hdmFpbF9pbiAtIDUpO1xuICBfb3V0ID0gc3RybS5uZXh0X291dDtcbiAgb3V0cHV0ID0gc3RybS5vdXRwdXQ7XG4gIGJlZyA9IF9vdXQgLSAoc3RhcnQgLSBzdHJtLmF2YWlsX291dCk7XG4gIGVuZCA9IF9vdXQgKyAoc3RybS5hdmFpbF9vdXQgLSAyNTcpO1xuLy8jaWZkZWYgSU5GTEFURV9TVFJJQ1RcbiAgZG1heCA9IHN0YXRlLmRtYXg7XG4vLyNlbmRpZlxuICB3c2l6ZSA9IHN0YXRlLndzaXplO1xuICB3aGF2ZSA9IHN0YXRlLndoYXZlO1xuICB3bmV4dCA9IHN0YXRlLnduZXh0O1xuICBzX3dpbmRvdyA9IHN0YXRlLndpbmRvdztcbiAgaG9sZCA9IHN0YXRlLmhvbGQ7XG4gIGJpdHMgPSBzdGF0ZS5iaXRzO1xuICBsY29kZSA9IHN0YXRlLmxlbmNvZGU7XG4gIGRjb2RlID0gc3RhdGUuZGlzdGNvZGU7XG4gIGxtYXNrID0gKDEgPDwgc3RhdGUubGVuYml0cykgLSAxO1xuICBkbWFzayA9ICgxIDw8IHN0YXRlLmRpc3RiaXRzKSAtIDE7XG5cblxuICAvKiBkZWNvZGUgbGl0ZXJhbHMgYW5kIGxlbmd0aC9kaXN0YW5jZXMgdW50aWwgZW5kLW9mLWJsb2NrIG9yIG5vdCBlbm91Z2hcbiAgICAgaW5wdXQgZGF0YSBvciBvdXRwdXQgc3BhY2UgKi9cblxuICB0b3A6XG4gIGRvIHtcbiAgICBpZiAoYml0cyA8IDE1KSB7XG4gICAgICBob2xkICs9IGlucHV0W19pbisrXSA8PCBiaXRzO1xuICAgICAgYml0cyArPSA4O1xuICAgICAgaG9sZCArPSBpbnB1dFtfaW4rK10gPDwgYml0cztcbiAgICAgIGJpdHMgKz0gODtcbiAgICB9XG5cbiAgICBoZXJlID0gbGNvZGVbaG9sZCAmIGxtYXNrXTtcblxuICAgIGRvbGVuOlxuICAgIGZvciAoOzspIHsgLy8gR290byBlbXVsYXRpb25cbiAgICAgIG9wID0gaGVyZSA+Pj4gMjQvKmhlcmUuYml0cyovO1xuICAgICAgaG9sZCA+Pj49IG9wO1xuICAgICAgYml0cyAtPSBvcDtcbiAgICAgIG9wID0gKGhlcmUgPj4+IDE2KSAmIDB4ZmYvKmhlcmUub3AqLztcbiAgICAgIGlmIChvcCA9PT0gMCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbGl0ZXJhbCAqL1xuICAgICAgICAvL1RyYWNldnYoKHN0ZGVyciwgaGVyZS52YWwgPj0gMHgyMCAmJiBoZXJlLnZhbCA8IDB4N2YgP1xuICAgICAgICAvLyAgICAgICAgXCJpbmZsYXRlOiAgICAgICAgIGxpdGVyYWwgJyVjJ1xcblwiIDpcbiAgICAgICAgLy8gICAgICAgIFwiaW5mbGF0ZTogICAgICAgICBsaXRlcmFsIDB4JTAyeFxcblwiLCBoZXJlLnZhbCkpO1xuICAgICAgICBvdXRwdXRbX291dCsrXSA9IGhlcmUgJiAweGZmZmYvKmhlcmUudmFsKi87XG4gICAgICB9XG4gICAgICBlbHNlIGlmIChvcCAmIDE2KSB7ICAgICAgICAgICAgICAgICAgICAgLyogbGVuZ3RoIGJhc2UgKi9cbiAgICAgICAgbGVuID0gaGVyZSAmIDB4ZmZmZi8qaGVyZS52YWwqLztcbiAgICAgICAgb3AgJj0gMTU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbnVtYmVyIG9mIGV4dHJhIGJpdHMgKi9cbiAgICAgICAgaWYgKG9wKSB7XG4gICAgICAgICAgaWYgKGJpdHMgPCBvcCkge1xuICAgICAgICAgICAgaG9sZCArPSBpbnB1dFtfaW4rK10gPDwgYml0cztcbiAgICAgICAgICAgIGJpdHMgKz0gODtcbiAgICAgICAgICB9XG4gICAgICAgICAgbGVuICs9IGhvbGQgJiAoKDEgPDwgb3ApIC0gMSk7XG4gICAgICAgICAgaG9sZCA+Pj49IG9wO1xuICAgICAgICAgIGJpdHMgLT0gb3A7XG4gICAgICAgIH1cbiAgICAgICAgLy9UcmFjZXZ2KChzdGRlcnIsIFwiaW5mbGF0ZTogICAgICAgICBsZW5ndGggJXVcXG5cIiwgbGVuKSk7XG4gICAgICAgIGlmIChiaXRzIDwgMTUpIHtcbiAgICAgICAgICBob2xkICs9IGlucHV0W19pbisrXSA8PCBiaXRzO1xuICAgICAgICAgIGJpdHMgKz0gODtcbiAgICAgICAgICBob2xkICs9IGlucHV0W19pbisrXSA8PCBiaXRzO1xuICAgICAgICAgIGJpdHMgKz0gODtcbiAgICAgICAgfVxuICAgICAgICBoZXJlID0gZGNvZGVbaG9sZCAmIGRtYXNrXTtcblxuICAgICAgICBkb2Rpc3Q6XG4gICAgICAgIGZvciAoOzspIHsgLy8gZ290byBlbXVsYXRpb25cbiAgICAgICAgICBvcCA9IGhlcmUgPj4+IDI0LypoZXJlLmJpdHMqLztcbiAgICAgICAgICBob2xkID4+Pj0gb3A7XG4gICAgICAgICAgYml0cyAtPSBvcDtcbiAgICAgICAgICBvcCA9IChoZXJlID4+PiAxNikgJiAweGZmLypoZXJlLm9wKi87XG5cbiAgICAgICAgICBpZiAob3AgJiAxNikgeyAgICAgICAgICAgICAgICAgICAgICAvKiBkaXN0YW5jZSBiYXNlICovXG4gICAgICAgICAgICBkaXN0ID0gaGVyZSAmIDB4ZmZmZi8qaGVyZS52YWwqLztcbiAgICAgICAgICAgIG9wICY9IDE1OyAgICAgICAgICAgICAgICAgICAgICAgLyogbnVtYmVyIG9mIGV4dHJhIGJpdHMgKi9cbiAgICAgICAgICAgIGlmIChiaXRzIDwgb3ApIHtcbiAgICAgICAgICAgICAgaG9sZCArPSBpbnB1dFtfaW4rK10gPDwgYml0cztcbiAgICAgICAgICAgICAgYml0cyArPSA4O1xuICAgICAgICAgICAgICBpZiAoYml0cyA8IG9wKSB7XG4gICAgICAgICAgICAgICAgaG9sZCArPSBpbnB1dFtfaW4rK10gPDwgYml0cztcbiAgICAgICAgICAgICAgICBiaXRzICs9IDg7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRpc3QgKz0gaG9sZCAmICgoMSA8PCBvcCkgLSAxKTtcbi8vI2lmZGVmIElORkxBVEVfU1RSSUNUXG4gICAgICAgICAgICBpZiAoZGlzdCA+IGRtYXgpIHtcbiAgICAgICAgICAgICAgc3RybS5tc2cgPSAnaW52YWxpZCBkaXN0YW5jZSB0b28gZmFyIGJhY2snO1xuICAgICAgICAgICAgICBzdGF0ZS5tb2RlID0gQkFEO1xuICAgICAgICAgICAgICBicmVhayB0b3A7XG4gICAgICAgICAgICB9XG4vLyNlbmRpZlxuICAgICAgICAgICAgaG9sZCA+Pj49IG9wO1xuICAgICAgICAgICAgYml0cyAtPSBvcDtcbiAgICAgICAgICAgIC8vVHJhY2V2digoc3RkZXJyLCBcImluZmxhdGU6ICAgICAgICAgZGlzdGFuY2UgJXVcXG5cIiwgZGlzdCkpO1xuICAgICAgICAgICAgb3AgPSBfb3V0IC0gYmVnOyAgICAgICAgICAgICAgICAvKiBtYXggZGlzdGFuY2UgaW4gb3V0cHV0ICovXG4gICAgICAgICAgICBpZiAoZGlzdCA+IG9wKSB7ICAgICAgICAgICAgICAgIC8qIHNlZSBpZiBjb3B5IGZyb20gd2luZG93ICovXG4gICAgICAgICAgICAgIG9wID0gZGlzdCAtIG9wOyAgICAgICAgICAgICAgIC8qIGRpc3RhbmNlIGJhY2sgaW4gd2luZG93ICovXG4gICAgICAgICAgICAgIGlmIChvcCA+IHdoYXZlKSB7XG4gICAgICAgICAgICAgICAgaWYgKHN0YXRlLnNhbmUpIHtcbiAgICAgICAgICAgICAgICAgIHN0cm0ubXNnID0gJ2ludmFsaWQgZGlzdGFuY2UgdG9vIGZhciBiYWNrJztcbiAgICAgICAgICAgICAgICAgIHN0YXRlLm1vZGUgPSBCQUQ7XG4gICAgICAgICAgICAgICAgICBicmVhayB0b3A7XG4gICAgICAgICAgICAgICAgfVxuXG4vLyAoISkgVGhpcyBibG9jayBpcyBkaXNhYmxlZCBpbiB6bGliIGRlZmFpbHRzLFxuLy8gZG9uJ3QgZW5hYmxlIGl0IGZvciBiaW5hcnkgY29tcGF0aWJpbGl0eVxuLy8jaWZkZWYgSU5GTEFURV9BTExPV19JTlZBTElEX0RJU1RBTkNFX1RPT0ZBUl9BUlJSXG4vLyAgICAgICAgICAgICAgICBpZiAobGVuIDw9IG9wIC0gd2hhdmUpIHtcbi8vICAgICAgICAgICAgICAgICAgZG8ge1xuLy8gICAgICAgICAgICAgICAgICAgIG91dHB1dFtfb3V0KytdID0gMDtcbi8vICAgICAgICAgICAgICAgICAgfSB3aGlsZSAoLS1sZW4pO1xuLy8gICAgICAgICAgICAgICAgICBjb250aW51ZSB0b3A7XG4vLyAgICAgICAgICAgICAgICB9XG4vLyAgICAgICAgICAgICAgICBsZW4gLT0gb3AgLSB3aGF2ZTtcbi8vICAgICAgICAgICAgICAgIGRvIHtcbi8vICAgICAgICAgICAgICAgICAgb3V0cHV0W19vdXQrK10gPSAwO1xuLy8gICAgICAgICAgICAgICAgfSB3aGlsZSAoLS1vcCA+IHdoYXZlKTtcbi8vICAgICAgICAgICAgICAgIGlmIChvcCA9PT0gMCkge1xuLy8gICAgICAgICAgICAgICAgICBmcm9tID0gX291dCAtIGRpc3Q7XG4vLyAgICAgICAgICAgICAgICAgIGRvIHtcbi8vICAgICAgICAgICAgICAgICAgICBvdXRwdXRbX291dCsrXSA9IG91dHB1dFtmcm9tKytdO1xuLy8gICAgICAgICAgICAgICAgICB9IHdoaWxlICgtLWxlbik7XG4vLyAgICAgICAgICAgICAgICAgIGNvbnRpbnVlIHRvcDtcbi8vICAgICAgICAgICAgICAgIH1cbi8vI2VuZGlmXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgZnJvbSA9IDA7IC8vIHdpbmRvdyBpbmRleFxuICAgICAgICAgICAgICBmcm9tX3NvdXJjZSA9IHNfd2luZG93O1xuICAgICAgICAgICAgICBpZiAod25leHQgPT09IDApIHsgICAgICAgICAgIC8qIHZlcnkgY29tbW9uIGNhc2UgKi9cbiAgICAgICAgICAgICAgICBmcm9tICs9IHdzaXplIC0gb3A7XG4gICAgICAgICAgICAgICAgaWYgKG9wIDwgbGVuKSB7ICAgICAgICAgLyogc29tZSBmcm9tIHdpbmRvdyAqL1xuICAgICAgICAgICAgICAgICAgbGVuIC09IG9wO1xuICAgICAgICAgICAgICAgICAgZG8ge1xuICAgICAgICAgICAgICAgICAgICBvdXRwdXRbX291dCsrXSA9IHNfd2luZG93W2Zyb20rK107XG4gICAgICAgICAgICAgICAgICB9IHdoaWxlICgtLW9wKTtcbiAgICAgICAgICAgICAgICAgIGZyb20gPSBfb3V0IC0gZGlzdDsgIC8qIHJlc3QgZnJvbSBvdXRwdXQgKi9cbiAgICAgICAgICAgICAgICAgIGZyb21fc291cmNlID0gb3V0cHV0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBlbHNlIGlmICh3bmV4dCA8IG9wKSB7ICAgICAgLyogd3JhcCBhcm91bmQgd2luZG93ICovXG4gICAgICAgICAgICAgICAgZnJvbSArPSB3c2l6ZSArIHduZXh0IC0gb3A7XG4gICAgICAgICAgICAgICAgb3AgLT0gd25leHQ7XG4gICAgICAgICAgICAgICAgaWYgKG9wIDwgbGVuKSB7ICAgICAgICAgLyogc29tZSBmcm9tIGVuZCBvZiB3aW5kb3cgKi9cbiAgICAgICAgICAgICAgICAgIGxlbiAtPSBvcDtcbiAgICAgICAgICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgICAgICAgICAgb3V0cHV0W19vdXQrK10gPSBzX3dpbmRvd1tmcm9tKytdO1xuICAgICAgICAgICAgICAgICAgfSB3aGlsZSAoLS1vcCk7XG4gICAgICAgICAgICAgICAgICBmcm9tID0gMDtcbiAgICAgICAgICAgICAgICAgIGlmICh3bmV4dCA8IGxlbikgeyAgLyogc29tZSBmcm9tIHN0YXJ0IG9mIHdpbmRvdyAqL1xuICAgICAgICAgICAgICAgICAgICBvcCA9IHduZXh0O1xuICAgICAgICAgICAgICAgICAgICBsZW4gLT0gb3A7XG4gICAgICAgICAgICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRbX291dCsrXSA9IHNfd2luZG93W2Zyb20rK107XG4gICAgICAgICAgICAgICAgICAgIH0gd2hpbGUgKC0tb3ApO1xuICAgICAgICAgICAgICAgICAgICBmcm9tID0gX291dCAtIGRpc3Q7ICAgICAgLyogcmVzdCBmcm9tIG91dHB1dCAqL1xuICAgICAgICAgICAgICAgICAgICBmcm9tX3NvdXJjZSA9IG91dHB1dDtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgZWxzZSB7ICAgICAgICAgICAgICAgICAgICAgIC8qIGNvbnRpZ3VvdXMgaW4gd2luZG93ICovXG4gICAgICAgICAgICAgICAgZnJvbSArPSB3bmV4dCAtIG9wO1xuICAgICAgICAgICAgICAgIGlmIChvcCA8IGxlbikgeyAgICAgICAgIC8qIHNvbWUgZnJvbSB3aW5kb3cgKi9cbiAgICAgICAgICAgICAgICAgIGxlbiAtPSBvcDtcbiAgICAgICAgICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgICAgICAgICAgb3V0cHV0W19vdXQrK10gPSBzX3dpbmRvd1tmcm9tKytdO1xuICAgICAgICAgICAgICAgICAgfSB3aGlsZSAoLS1vcCk7XG4gICAgICAgICAgICAgICAgICBmcm9tID0gX291dCAtIGRpc3Q7ICAvKiByZXN0IGZyb20gb3V0cHV0ICovXG4gICAgICAgICAgICAgICAgICBmcm9tX3NvdXJjZSA9IG91dHB1dDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgd2hpbGUgKGxlbiA+IDIpIHtcbiAgICAgICAgICAgICAgICBvdXRwdXRbX291dCsrXSA9IGZyb21fc291cmNlW2Zyb20rK107XG4gICAgICAgICAgICAgICAgb3V0cHV0W19vdXQrK10gPSBmcm9tX3NvdXJjZVtmcm9tKytdO1xuICAgICAgICAgICAgICAgIG91dHB1dFtfb3V0KytdID0gZnJvbV9zb3VyY2VbZnJvbSsrXTtcbiAgICAgICAgICAgICAgICBsZW4gLT0gMztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAobGVuKSB7XG4gICAgICAgICAgICAgICAgb3V0cHV0W19vdXQrK10gPSBmcm9tX3NvdXJjZVtmcm9tKytdO1xuICAgICAgICAgICAgICAgIGlmIChsZW4gPiAxKSB7XG4gICAgICAgICAgICAgICAgICBvdXRwdXRbX291dCsrXSA9IGZyb21fc291cmNlW2Zyb20rK107XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgZnJvbSA9IF9vdXQgLSBkaXN0OyAgICAgICAgICAvKiBjb3B5IGRpcmVjdCBmcm9tIG91dHB1dCAqL1xuICAgICAgICAgICAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgLyogbWluaW11bSBsZW5ndGggaXMgdGhyZWUgKi9cbiAgICAgICAgICAgICAgICBvdXRwdXRbX291dCsrXSA9IG91dHB1dFtmcm9tKytdO1xuICAgICAgICAgICAgICAgIG91dHB1dFtfb3V0KytdID0gb3V0cHV0W2Zyb20rK107XG4gICAgICAgICAgICAgICAgb3V0cHV0W19vdXQrK10gPSBvdXRwdXRbZnJvbSsrXTtcbiAgICAgICAgICAgICAgICBsZW4gLT0gMztcbiAgICAgICAgICAgICAgfSB3aGlsZSAobGVuID4gMik7XG4gICAgICAgICAgICAgIGlmIChsZW4pIHtcbiAgICAgICAgICAgICAgICBvdXRwdXRbX291dCsrXSA9IG91dHB1dFtmcm9tKytdO1xuICAgICAgICAgICAgICAgIGlmIChsZW4gPiAxKSB7XG4gICAgICAgICAgICAgICAgICBvdXRwdXRbX291dCsrXSA9IG91dHB1dFtmcm9tKytdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBlbHNlIGlmICgob3AgJiA2NCkgPT09IDApIHsgICAgICAgICAgLyogMm5kIGxldmVsIGRpc3RhbmNlIGNvZGUgKi9cbiAgICAgICAgICAgIGhlcmUgPSBkY29kZVsoaGVyZSAmIDB4ZmZmZikvKmhlcmUudmFsKi8gKyAoaG9sZCAmICgoMSA8PCBvcCkgLSAxKSldO1xuICAgICAgICAgICAgY29udGludWUgZG9kaXN0O1xuICAgICAgICAgIH1cbiAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHN0cm0ubXNnID0gJ2ludmFsaWQgZGlzdGFuY2UgY29kZSc7XG4gICAgICAgICAgICBzdGF0ZS5tb2RlID0gQkFEO1xuICAgICAgICAgICAgYnJlYWsgdG9wO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGJyZWFrOyAvLyBuZWVkIHRvIGVtdWxhdGUgZ290byB2aWEgXCJjb250aW51ZVwiXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKChvcCAmIDY0KSA9PT0gMCkgeyAgICAgICAgICAgICAgLyogMm5kIGxldmVsIGxlbmd0aCBjb2RlICovXG4gICAgICAgIGhlcmUgPSBsY29kZVsoaGVyZSAmIDB4ZmZmZikvKmhlcmUudmFsKi8gKyAoaG9sZCAmICgoMSA8PCBvcCkgLSAxKSldO1xuICAgICAgICBjb250aW51ZSBkb2xlbjtcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKG9wICYgMzIpIHsgICAgICAgICAgICAgICAgICAgICAvKiBlbmQtb2YtYmxvY2sgKi9cbiAgICAgICAgLy9UcmFjZXZ2KChzdGRlcnIsIFwiaW5mbGF0ZTogICAgICAgICBlbmQgb2YgYmxvY2tcXG5cIikpO1xuICAgICAgICBzdGF0ZS5tb2RlID0gVFlQRTtcbiAgICAgICAgYnJlYWsgdG9wO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIHN0cm0ubXNnID0gJ2ludmFsaWQgbGl0ZXJhbC9sZW5ndGggY29kZSc7XG4gICAgICAgIHN0YXRlLm1vZGUgPSBCQUQ7XG4gICAgICAgIGJyZWFrIHRvcDtcbiAgICAgIH1cblxuICAgICAgYnJlYWs7IC8vIG5lZWQgdG8gZW11bGF0ZSBnb3RvIHZpYSBcImNvbnRpbnVlXCJcbiAgICB9XG4gIH0gd2hpbGUgKF9pbiA8IGxhc3QgJiYgX291dCA8IGVuZCk7XG5cbiAgLyogcmV0dXJuIHVudXNlZCBieXRlcyAob24gZW50cnksIGJpdHMgPCA4LCBzbyBpbiB3b24ndCBnbyB0b28gZmFyIGJhY2spICovXG4gIGxlbiA9IGJpdHMgPj4gMztcbiAgX2luIC09IGxlbjtcbiAgYml0cyAtPSBsZW4gPDwgMztcbiAgaG9sZCAmPSAoMSA8PCBiaXRzKSAtIDE7XG5cbiAgLyogdXBkYXRlIHN0YXRlIGFuZCByZXR1cm4gKi9cbiAgc3RybS5uZXh0X2luID0gX2luO1xuICBzdHJtLm5leHRfb3V0ID0gX291dDtcbiAgc3RybS5hdmFpbF9pbiA9IChfaW4gPCBsYXN0ID8gNSArIChsYXN0IC0gX2luKSA6IDUgLSAoX2luIC0gbGFzdCkpO1xuICBzdHJtLmF2YWlsX291dCA9IChfb3V0IDwgZW5kID8gMjU3ICsgKGVuZCAtIF9vdXQpIDogMjU3IC0gKF9vdXQgLSBlbmQpKTtcbiAgc3RhdGUuaG9sZCA9IGhvbGQ7XG4gIHN0YXRlLmJpdHMgPSBiaXRzO1xuICByZXR1cm47XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5cbnZhciB1dGlscyAgICAgICAgID0gcmVxdWlyZSgnLi4vdXRpbHMvY29tbW9uJyk7XG52YXIgYWRsZXIzMiAgICAgICA9IHJlcXVpcmUoJy4vYWRsZXIzMicpO1xudmFyIGNyYzMyICAgICAgICAgPSByZXF1aXJlKCcuL2NyYzMyJyk7XG52YXIgaW5mbGF0ZV9mYXN0ICA9IHJlcXVpcmUoJy4vaW5mZmFzdCcpO1xudmFyIGluZmxhdGVfdGFibGUgPSByZXF1aXJlKCcuL2luZnRyZWVzJyk7XG5cbnZhciBDT0RFUyA9IDA7XG52YXIgTEVOUyA9IDE7XG52YXIgRElTVFMgPSAyO1xuXG4vKiBQdWJsaWMgY29uc3RhbnRzID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qL1xuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki9cblxuXG4vKiBBbGxvd2VkIGZsdXNoIHZhbHVlczsgc2VlIGRlZmxhdGUoKSBhbmQgaW5mbGF0ZSgpIGJlbG93IGZvciBkZXRhaWxzICovXG4vL3ZhciBaX05PX0ZMVVNIICAgICAgPSAwO1xuLy92YXIgWl9QQVJUSUFMX0ZMVVNIID0gMTtcbi8vdmFyIFpfU1lOQ19GTFVTSCAgICA9IDI7XG4vL3ZhciBaX0ZVTExfRkxVU0ggICAgPSAzO1xudmFyIFpfRklOSVNIICAgICAgICA9IDQ7XG52YXIgWl9CTE9DSyAgICAgICAgID0gNTtcbnZhciBaX1RSRUVTICAgICAgICAgPSA2O1xuXG5cbi8qIFJldHVybiBjb2RlcyBmb3IgdGhlIGNvbXByZXNzaW9uL2RlY29tcHJlc3Npb24gZnVuY3Rpb25zLiBOZWdhdGl2ZSB2YWx1ZXNcbiAqIGFyZSBlcnJvcnMsIHBvc2l0aXZlIHZhbHVlcyBhcmUgdXNlZCBmb3Igc3BlY2lhbCBidXQgbm9ybWFsIGV2ZW50cy5cbiAqL1xudmFyIFpfT0sgICAgICAgICAgICA9IDA7XG52YXIgWl9TVFJFQU1fRU5EICAgID0gMTtcbnZhciBaX05FRURfRElDVCAgICAgPSAyO1xuLy92YXIgWl9FUlJOTyAgICAgICAgID0gLTE7XG52YXIgWl9TVFJFQU1fRVJST1IgID0gLTI7XG52YXIgWl9EQVRBX0VSUk9SICAgID0gLTM7XG52YXIgWl9NRU1fRVJST1IgICAgID0gLTQ7XG52YXIgWl9CVUZfRVJST1IgICAgID0gLTU7XG4vL3ZhciBaX1ZFUlNJT05fRVJST1IgPSAtNjtcblxuLyogVGhlIGRlZmxhdGUgY29tcHJlc3Npb24gbWV0aG9kICovXG52YXIgWl9ERUZMQVRFRCAgPSA4O1xuXG5cbi8qIFNUQVRFUyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qL1xuXG5cbnZhciAgICBIRUFEID0gMTsgICAgICAgLyogaTogd2FpdGluZyBmb3IgbWFnaWMgaGVhZGVyICovXG52YXIgICAgRkxBR1MgPSAyOyAgICAgIC8qIGk6IHdhaXRpbmcgZm9yIG1ldGhvZCBhbmQgZmxhZ3MgKGd6aXApICovXG52YXIgICAgVElNRSA9IDM7ICAgICAgIC8qIGk6IHdhaXRpbmcgZm9yIG1vZGlmaWNhdGlvbiB0aW1lIChnemlwKSAqL1xudmFyICAgIE9TID0gNDsgICAgICAgICAvKiBpOiB3YWl0aW5nIGZvciBleHRyYSBmbGFncyBhbmQgb3BlcmF0aW5nIHN5c3RlbSAoZ3ppcCkgKi9cbnZhciAgICBFWExFTiA9IDU7ICAgICAgLyogaTogd2FpdGluZyBmb3IgZXh0cmEgbGVuZ3RoIChnemlwKSAqL1xudmFyICAgIEVYVFJBID0gNjsgICAgICAvKiBpOiB3YWl0aW5nIGZvciBleHRyYSBieXRlcyAoZ3ppcCkgKi9cbnZhciAgICBOQU1FID0gNzsgICAgICAgLyogaTogd2FpdGluZyBmb3IgZW5kIG9mIGZpbGUgbmFtZSAoZ3ppcCkgKi9cbnZhciAgICBDT01NRU5UID0gODsgICAgLyogaTogd2FpdGluZyBmb3IgZW5kIG9mIGNvbW1lbnQgKGd6aXApICovXG52YXIgICAgSENSQyA9IDk7ICAgICAgIC8qIGk6IHdhaXRpbmcgZm9yIGhlYWRlciBjcmMgKGd6aXApICovXG52YXIgICAgRElDVElEID0gMTA7ICAgIC8qIGk6IHdhaXRpbmcgZm9yIGRpY3Rpb25hcnkgY2hlY2sgdmFsdWUgKi9cbnZhciAgICBESUNUID0gMTE7ICAgICAgLyogd2FpdGluZyBmb3IgaW5mbGF0ZVNldERpY3Rpb25hcnkoKSBjYWxsICovXG52YXIgICAgICAgIFRZUEUgPSAxMjsgICAgICAvKiBpOiB3YWl0aW5nIGZvciB0eXBlIGJpdHMsIGluY2x1ZGluZyBsYXN0LWZsYWcgYml0ICovXG52YXIgICAgICAgIFRZUEVETyA9IDEzOyAgICAvKiBpOiBzYW1lLCBidXQgc2tpcCBjaGVjayB0byBleGl0IGluZmxhdGUgb24gbmV3IGJsb2NrICovXG52YXIgICAgICAgIFNUT1JFRCA9IDE0OyAgICAvKiBpOiB3YWl0aW5nIGZvciBzdG9yZWQgc2l6ZSAobGVuZ3RoIGFuZCBjb21wbGVtZW50KSAqL1xudmFyICAgICAgICBDT1BZXyA9IDE1OyAgICAgLyogaS9vOiBzYW1lIGFzIENPUFkgYmVsb3csIGJ1dCBvbmx5IGZpcnN0IHRpbWUgaW4gKi9cbnZhciAgICAgICAgQ09QWSA9IDE2OyAgICAgIC8qIGkvbzogd2FpdGluZyBmb3IgaW5wdXQgb3Igb3V0cHV0IHRvIGNvcHkgc3RvcmVkIGJsb2NrICovXG52YXIgICAgICAgIFRBQkxFID0gMTc7ICAgICAvKiBpOiB3YWl0aW5nIGZvciBkeW5hbWljIGJsb2NrIHRhYmxlIGxlbmd0aHMgKi9cbnZhciAgICAgICAgTEVOTEVOUyA9IDE4OyAgIC8qIGk6IHdhaXRpbmcgZm9yIGNvZGUgbGVuZ3RoIGNvZGUgbGVuZ3RocyAqL1xudmFyICAgICAgICBDT0RFTEVOUyA9IDE5OyAgLyogaTogd2FpdGluZyBmb3IgbGVuZ3RoL2xpdCBhbmQgZGlzdGFuY2UgY29kZSBsZW5ndGhzICovXG52YXIgICAgICAgICAgICBMRU5fID0gMjA7ICAgICAgLyogaTogc2FtZSBhcyBMRU4gYmVsb3csIGJ1dCBvbmx5IGZpcnN0IHRpbWUgaW4gKi9cbnZhciAgICAgICAgICAgIExFTiA9IDIxOyAgICAgICAvKiBpOiB3YWl0aW5nIGZvciBsZW5ndGgvbGl0L2VvYiBjb2RlICovXG52YXIgICAgICAgICAgICBMRU5FWFQgPSAyMjsgICAgLyogaTogd2FpdGluZyBmb3IgbGVuZ3RoIGV4dHJhIGJpdHMgKi9cbnZhciAgICAgICAgICAgIERJU1QgPSAyMzsgICAgICAvKiBpOiB3YWl0aW5nIGZvciBkaXN0YW5jZSBjb2RlICovXG52YXIgICAgICAgICAgICBESVNURVhUID0gMjQ7ICAgLyogaTogd2FpdGluZyBmb3IgZGlzdGFuY2UgZXh0cmEgYml0cyAqL1xudmFyICAgICAgICAgICAgTUFUQ0ggPSAyNTsgICAgIC8qIG86IHdhaXRpbmcgZm9yIG91dHB1dCBzcGFjZSB0byBjb3B5IHN0cmluZyAqL1xudmFyICAgICAgICAgICAgTElUID0gMjY7ICAgICAgIC8qIG86IHdhaXRpbmcgZm9yIG91dHB1dCBzcGFjZSB0byB3cml0ZSBsaXRlcmFsICovXG52YXIgICAgQ0hFQ0sgPSAyNzsgICAgIC8qIGk6IHdhaXRpbmcgZm9yIDMyLWJpdCBjaGVjayB2YWx1ZSAqL1xudmFyICAgIExFTkdUSCA9IDI4OyAgICAvKiBpOiB3YWl0aW5nIGZvciAzMi1iaXQgbGVuZ3RoIChnemlwKSAqL1xudmFyICAgIERPTkUgPSAyOTsgICAgICAvKiBmaW5pc2hlZCBjaGVjaywgZG9uZSAtLSByZW1haW4gaGVyZSB1bnRpbCByZXNldCAqL1xudmFyICAgIEJBRCA9IDMwOyAgICAgICAvKiBnb3QgYSBkYXRhIGVycm9yIC0tIHJlbWFpbiBoZXJlIHVudGlsIHJlc2V0ICovXG52YXIgICAgTUVNID0gMzE7ICAgICAgIC8qIGdvdCBhbiBpbmZsYXRlKCkgbWVtb3J5IGVycm9yIC0tIHJlbWFpbiBoZXJlIHVudGlsIHJlc2V0ICovXG52YXIgICAgU1lOQyA9IDMyOyAgICAgIC8qIGxvb2tpbmcgZm9yIHN5bmNocm9uaXphdGlvbiBieXRlcyB0byByZXN0YXJ0IGluZmxhdGUoKSAqL1xuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qL1xuXG5cblxudmFyIEVOT1VHSF9MRU5TID0gODUyO1xudmFyIEVOT1VHSF9ESVNUUyA9IDU5Mjtcbi8vdmFyIEVOT1VHSCA9ICAoRU5PVUdIX0xFTlMrRU5PVUdIX0RJU1RTKTtcblxudmFyIE1BWF9XQklUUyA9IDE1O1xuLyogMzJLIExaNzcgd2luZG93ICovXG52YXIgREVGX1dCSVRTID0gTUFYX1dCSVRTO1xuXG5cbmZ1bmN0aW9uIHpzd2FwMzIocSkge1xuICByZXR1cm4gICgoKHEgPj4+IDI0KSAmIDB4ZmYpICtcbiAgICAgICAgICAoKHEgPj4+IDgpICYgMHhmZjAwKSArXG4gICAgICAgICAgKChxICYgMHhmZjAwKSA8PCA4KSArXG4gICAgICAgICAgKChxICYgMHhmZikgPDwgMjQpKTtcbn1cblxuXG5mdW5jdGlvbiBJbmZsYXRlU3RhdGUoKSB7XG4gIHRoaXMubW9kZSA9IDA7ICAgICAgICAgICAgIC8qIGN1cnJlbnQgaW5mbGF0ZSBtb2RlICovXG4gIHRoaXMubGFzdCA9IGZhbHNlOyAgICAgICAgICAvKiB0cnVlIGlmIHByb2Nlc3NpbmcgbGFzdCBibG9jayAqL1xuICB0aGlzLndyYXAgPSAwOyAgICAgICAgICAgICAgLyogYml0IDAgdHJ1ZSBmb3IgemxpYiwgYml0IDEgdHJ1ZSBmb3IgZ3ppcCAqL1xuICB0aGlzLmhhdmVkaWN0ID0gZmFsc2U7ICAgICAgLyogdHJ1ZSBpZiBkaWN0aW9uYXJ5IHByb3ZpZGVkICovXG4gIHRoaXMuZmxhZ3MgPSAwOyAgICAgICAgICAgICAvKiBnemlwIGhlYWRlciBtZXRob2QgYW5kIGZsYWdzICgwIGlmIHpsaWIpICovXG4gIHRoaXMuZG1heCA9IDA7ICAgICAgICAgICAgICAvKiB6bGliIGhlYWRlciBtYXggZGlzdGFuY2UgKElORkxBVEVfU1RSSUNUKSAqL1xuICB0aGlzLmNoZWNrID0gMDsgICAgICAgICAgICAgLyogcHJvdGVjdGVkIGNvcHkgb2YgY2hlY2sgdmFsdWUgKi9cbiAgdGhpcy50b3RhbCA9IDA7ICAgICAgICAgICAgIC8qIHByb3RlY3RlZCBjb3B5IG9mIG91dHB1dCBjb3VudCAqL1xuICAvLyBUT0RPOiBtYXkgYmUge31cbiAgdGhpcy5oZWFkID0gbnVsbDsgICAgICAgICAgIC8qIHdoZXJlIHRvIHNhdmUgZ3ppcCBoZWFkZXIgaW5mb3JtYXRpb24gKi9cblxuICAvKiBzbGlkaW5nIHdpbmRvdyAqL1xuICB0aGlzLndiaXRzID0gMDsgICAgICAgICAgICAgLyogbG9nIGJhc2UgMiBvZiByZXF1ZXN0ZWQgd2luZG93IHNpemUgKi9cbiAgdGhpcy53c2l6ZSA9IDA7ICAgICAgICAgICAgIC8qIHdpbmRvdyBzaXplIG9yIHplcm8gaWYgbm90IHVzaW5nIHdpbmRvdyAqL1xuICB0aGlzLndoYXZlID0gMDsgICAgICAgICAgICAgLyogdmFsaWQgYnl0ZXMgaW4gdGhlIHdpbmRvdyAqL1xuICB0aGlzLnduZXh0ID0gMDsgICAgICAgICAgICAgLyogd2luZG93IHdyaXRlIGluZGV4ICovXG4gIHRoaXMud2luZG93ID0gbnVsbDsgICAgICAgICAvKiBhbGxvY2F0ZWQgc2xpZGluZyB3aW5kb3csIGlmIG5lZWRlZCAqL1xuXG4gIC8qIGJpdCBhY2N1bXVsYXRvciAqL1xuICB0aGlzLmhvbGQgPSAwOyAgICAgICAgICAgICAgLyogaW5wdXQgYml0IGFjY3VtdWxhdG9yICovXG4gIHRoaXMuYml0cyA9IDA7ICAgICAgICAgICAgICAvKiBudW1iZXIgb2YgYml0cyBpbiBcImluXCIgKi9cblxuICAvKiBmb3Igc3RyaW5nIGFuZCBzdG9yZWQgYmxvY2sgY29weWluZyAqL1xuICB0aGlzLmxlbmd0aCA9IDA7ICAgICAgICAgICAgLyogbGl0ZXJhbCBvciBsZW5ndGggb2YgZGF0YSB0byBjb3B5ICovXG4gIHRoaXMub2Zmc2V0ID0gMDsgICAgICAgICAgICAvKiBkaXN0YW5jZSBiYWNrIHRvIGNvcHkgc3RyaW5nIGZyb20gKi9cblxuICAvKiBmb3IgdGFibGUgYW5kIGNvZGUgZGVjb2RpbmcgKi9cbiAgdGhpcy5leHRyYSA9IDA7ICAgICAgICAgICAgIC8qIGV4dHJhIGJpdHMgbmVlZGVkICovXG5cbiAgLyogZml4ZWQgYW5kIGR5bmFtaWMgY29kZSB0YWJsZXMgKi9cbiAgdGhpcy5sZW5jb2RlID0gbnVsbDsgICAgICAgICAgLyogc3RhcnRpbmcgdGFibGUgZm9yIGxlbmd0aC9saXRlcmFsIGNvZGVzICovXG4gIHRoaXMuZGlzdGNvZGUgPSBudWxsOyAgICAgICAgIC8qIHN0YXJ0aW5nIHRhYmxlIGZvciBkaXN0YW5jZSBjb2RlcyAqL1xuICB0aGlzLmxlbmJpdHMgPSAwOyAgICAgICAgICAgLyogaW5kZXggYml0cyBmb3IgbGVuY29kZSAqL1xuICB0aGlzLmRpc3RiaXRzID0gMDsgICAgICAgICAgLyogaW5kZXggYml0cyBmb3IgZGlzdGNvZGUgKi9cblxuICAvKiBkeW5hbWljIHRhYmxlIGJ1aWxkaW5nICovXG4gIHRoaXMubmNvZGUgPSAwOyAgICAgICAgICAgICAvKiBudW1iZXIgb2YgY29kZSBsZW5ndGggY29kZSBsZW5ndGhzICovXG4gIHRoaXMubmxlbiA9IDA7ICAgICAgICAgICAgICAvKiBudW1iZXIgb2YgbGVuZ3RoIGNvZGUgbGVuZ3RocyAqL1xuICB0aGlzLm5kaXN0ID0gMDsgICAgICAgICAgICAgLyogbnVtYmVyIG9mIGRpc3RhbmNlIGNvZGUgbGVuZ3RocyAqL1xuICB0aGlzLmhhdmUgPSAwOyAgICAgICAgICAgICAgLyogbnVtYmVyIG9mIGNvZGUgbGVuZ3RocyBpbiBsZW5zW10gKi9cbiAgdGhpcy5uZXh0ID0gbnVsbDsgICAgICAgICAgICAgIC8qIG5leHQgYXZhaWxhYmxlIHNwYWNlIGluIGNvZGVzW10gKi9cblxuICB0aGlzLmxlbnMgPSBuZXcgdXRpbHMuQnVmMTYoMzIwKTsgLyogdGVtcG9yYXJ5IHN0b3JhZ2UgZm9yIGNvZGUgbGVuZ3RocyAqL1xuICB0aGlzLndvcmsgPSBuZXcgdXRpbHMuQnVmMTYoMjg4KTsgLyogd29yayBhcmVhIGZvciBjb2RlIHRhYmxlIGJ1aWxkaW5nICovXG5cbiAgLypcbiAgIGJlY2F1c2Ugd2UgZG9uJ3QgaGF2ZSBwb2ludGVycyBpbiBqcywgd2UgdXNlIGxlbmNvZGUgYW5kIGRpc3Rjb2RlIGRpcmVjdGx5XG4gICBhcyBidWZmZXJzIHNvIHdlIGRvbid0IG5lZWQgY29kZXNcbiAgKi9cbiAgLy90aGlzLmNvZGVzID0gbmV3IHV0aWxzLkJ1ZjMyKEVOT1VHSCk7ICAgICAgIC8qIHNwYWNlIGZvciBjb2RlIHRhYmxlcyAqL1xuICB0aGlzLmxlbmR5biA9IG51bGw7ICAgICAgICAgICAgICAvKiBkeW5hbWljIHRhYmxlIGZvciBsZW5ndGgvbGl0ZXJhbCBjb2RlcyAoSlMgc3BlY2lmaWMpICovXG4gIHRoaXMuZGlzdGR5biA9IG51bGw7ICAgICAgICAgICAgIC8qIGR5bmFtaWMgdGFibGUgZm9yIGRpc3RhbmNlIGNvZGVzIChKUyBzcGVjaWZpYykgKi9cbiAgdGhpcy5zYW5lID0gMDsgICAgICAgICAgICAgICAgICAgLyogaWYgZmFsc2UsIGFsbG93IGludmFsaWQgZGlzdGFuY2UgdG9vIGZhciAqL1xuICB0aGlzLmJhY2sgPSAwOyAgICAgICAgICAgICAgICAgICAvKiBiaXRzIGJhY2sgb2YgbGFzdCB1bnByb2Nlc3NlZCBsZW5ndGgvbGl0ICovXG4gIHRoaXMud2FzID0gMDsgICAgICAgICAgICAgICAgICAgIC8qIGluaXRpYWwgbGVuZ3RoIG9mIG1hdGNoICovXG59XG5cbmZ1bmN0aW9uIGluZmxhdGVSZXNldEtlZXAoc3RybSkge1xuICB2YXIgc3RhdGU7XG5cbiAgaWYgKCFzdHJtIHx8ICFzdHJtLnN0YXRlKSB7IHJldHVybiBaX1NUUkVBTV9FUlJPUjsgfVxuICBzdGF0ZSA9IHN0cm0uc3RhdGU7XG4gIHN0cm0udG90YWxfaW4gPSBzdHJtLnRvdGFsX291dCA9IHN0YXRlLnRvdGFsID0gMDtcbiAgc3RybS5tc2cgPSAnJzsgLypaX05VTEwqL1xuICBpZiAoc3RhdGUud3JhcCkgeyAgICAgICAvKiB0byBzdXBwb3J0IGlsbC1jb25jZWl2ZWQgSmF2YSB0ZXN0IHN1aXRlICovXG4gICAgc3RybS5hZGxlciA9IHN0YXRlLndyYXAgJiAxO1xuICB9XG4gIHN0YXRlLm1vZGUgPSBIRUFEO1xuICBzdGF0ZS5sYXN0ID0gMDtcbiAgc3RhdGUuaGF2ZWRpY3QgPSAwO1xuICBzdGF0ZS5kbWF4ID0gMzI3Njg7XG4gIHN0YXRlLmhlYWQgPSBudWxsLypaX05VTEwqLztcbiAgc3RhdGUuaG9sZCA9IDA7XG4gIHN0YXRlLmJpdHMgPSAwO1xuICAvL3N0YXRlLmxlbmNvZGUgPSBzdGF0ZS5kaXN0Y29kZSA9IHN0YXRlLm5leHQgPSBzdGF0ZS5jb2RlcztcbiAgc3RhdGUubGVuY29kZSA9IHN0YXRlLmxlbmR5biA9IG5ldyB1dGlscy5CdWYzMihFTk9VR0hfTEVOUyk7XG4gIHN0YXRlLmRpc3Rjb2RlID0gc3RhdGUuZGlzdGR5biA9IG5ldyB1dGlscy5CdWYzMihFTk9VR0hfRElTVFMpO1xuXG4gIHN0YXRlLnNhbmUgPSAxO1xuICBzdGF0ZS5iYWNrID0gLTE7XG4gIC8vVHJhY2V2KChzdGRlcnIsIFwiaW5mbGF0ZTogcmVzZXRcXG5cIikpO1xuICByZXR1cm4gWl9PSztcbn1cblxuZnVuY3Rpb24gaW5mbGF0ZVJlc2V0KHN0cm0pIHtcbiAgdmFyIHN0YXRlO1xuXG4gIGlmICghc3RybSB8fCAhc3RybS5zdGF0ZSkgeyByZXR1cm4gWl9TVFJFQU1fRVJST1I7IH1cbiAgc3RhdGUgPSBzdHJtLnN0YXRlO1xuICBzdGF0ZS53c2l6ZSA9IDA7XG4gIHN0YXRlLndoYXZlID0gMDtcbiAgc3RhdGUud25leHQgPSAwO1xuICByZXR1cm4gaW5mbGF0ZVJlc2V0S2VlcChzdHJtKTtcblxufVxuXG5mdW5jdGlvbiBpbmZsYXRlUmVzZXQyKHN0cm0sIHdpbmRvd0JpdHMpIHtcbiAgdmFyIHdyYXA7XG4gIHZhciBzdGF0ZTtcblxuICAvKiBnZXQgdGhlIHN0YXRlICovXG4gIGlmICghc3RybSB8fCAhc3RybS5zdGF0ZSkgeyByZXR1cm4gWl9TVFJFQU1fRVJST1I7IH1cbiAgc3RhdGUgPSBzdHJtLnN0YXRlO1xuXG4gIC8qIGV4dHJhY3Qgd3JhcCByZXF1ZXN0IGZyb20gd2luZG93Qml0cyBwYXJhbWV0ZXIgKi9cbiAgaWYgKHdpbmRvd0JpdHMgPCAwKSB7XG4gICAgd3JhcCA9IDA7XG4gICAgd2luZG93Qml0cyA9IC13aW5kb3dCaXRzO1xuICB9XG4gIGVsc2Uge1xuICAgIHdyYXAgPSAod2luZG93Qml0cyA+PiA0KSArIDE7XG4gICAgaWYgKHdpbmRvd0JpdHMgPCA0OCkge1xuICAgICAgd2luZG93Qml0cyAmPSAxNTtcbiAgICB9XG4gIH1cblxuICAvKiBzZXQgbnVtYmVyIG9mIHdpbmRvdyBiaXRzLCBmcmVlIHdpbmRvdyBpZiBkaWZmZXJlbnQgKi9cbiAgaWYgKHdpbmRvd0JpdHMgJiYgKHdpbmRvd0JpdHMgPCA4IHx8IHdpbmRvd0JpdHMgPiAxNSkpIHtcbiAgICByZXR1cm4gWl9TVFJFQU1fRVJST1I7XG4gIH1cbiAgaWYgKHN0YXRlLndpbmRvdyAhPT0gbnVsbCAmJiBzdGF0ZS53Yml0cyAhPT0gd2luZG93Qml0cykge1xuICAgIHN0YXRlLndpbmRvdyA9IG51bGw7XG4gIH1cblxuICAvKiB1cGRhdGUgc3RhdGUgYW5kIHJlc2V0IHRoZSByZXN0IG9mIGl0ICovXG4gIHN0YXRlLndyYXAgPSB3cmFwO1xuICBzdGF0ZS53Yml0cyA9IHdpbmRvd0JpdHM7XG4gIHJldHVybiBpbmZsYXRlUmVzZXQoc3RybSk7XG59XG5cbmZ1bmN0aW9uIGluZmxhdGVJbml0MihzdHJtLCB3aW5kb3dCaXRzKSB7XG4gIHZhciByZXQ7XG4gIHZhciBzdGF0ZTtcblxuICBpZiAoIXN0cm0pIHsgcmV0dXJuIFpfU1RSRUFNX0VSUk9SOyB9XG4gIC8vc3RybS5tc2cgPSBaX05VTEw7ICAgICAgICAgICAgICAgICAvKiBpbiBjYXNlIHdlIHJldHVybiBhbiBlcnJvciAqL1xuXG4gIHN0YXRlID0gbmV3IEluZmxhdGVTdGF0ZSgpO1xuXG4gIC8vaWYgKHN0YXRlID09PSBaX05VTEwpIHJldHVybiBaX01FTV9FUlJPUjtcbiAgLy9UcmFjZXYoKHN0ZGVyciwgXCJpbmZsYXRlOiBhbGxvY2F0ZWRcXG5cIikpO1xuICBzdHJtLnN0YXRlID0gc3RhdGU7XG4gIHN0YXRlLndpbmRvdyA9IG51bGwvKlpfTlVMTCovO1xuICByZXQgPSBpbmZsYXRlUmVzZXQyKHN0cm0sIHdpbmRvd0JpdHMpO1xuICBpZiAocmV0ICE9PSBaX09LKSB7XG4gICAgc3RybS5zdGF0ZSA9IG51bGwvKlpfTlVMTCovO1xuICB9XG4gIHJldHVybiByZXQ7XG59XG5cbmZ1bmN0aW9uIGluZmxhdGVJbml0KHN0cm0pIHtcbiAgcmV0dXJuIGluZmxhdGVJbml0MihzdHJtLCBERUZfV0JJVFMpO1xufVxuXG5cbi8qXG4gUmV0dXJuIHN0YXRlIHdpdGggbGVuZ3RoIGFuZCBkaXN0YW5jZSBkZWNvZGluZyB0YWJsZXMgYW5kIGluZGV4IHNpemVzIHNldCB0b1xuIGZpeGVkIGNvZGUgZGVjb2RpbmcuICBOb3JtYWxseSB0aGlzIHJldHVybnMgZml4ZWQgdGFibGVzIGZyb20gaW5mZml4ZWQuaC5cbiBJZiBCVUlMREZJWEVEIGlzIGRlZmluZWQsIHRoZW4gaW5zdGVhZCB0aGlzIHJvdXRpbmUgYnVpbGRzIHRoZSB0YWJsZXMgdGhlXG4gZmlyc3QgdGltZSBpdCdzIGNhbGxlZCwgYW5kIHJldHVybnMgdGhvc2UgdGFibGVzIHRoZSBmaXJzdCB0aW1lIGFuZFxuIHRoZXJlYWZ0ZXIuICBUaGlzIHJlZHVjZXMgdGhlIHNpemUgb2YgdGhlIGNvZGUgYnkgYWJvdXQgMksgYnl0ZXMsIGluXG4gZXhjaGFuZ2UgZm9yIGEgbGl0dGxlIGV4ZWN1dGlvbiB0aW1lLiAgSG93ZXZlciwgQlVJTERGSVhFRCBzaG91bGQgbm90IGJlXG4gdXNlZCBmb3IgdGhyZWFkZWQgYXBwbGljYXRpb25zLCBzaW5jZSB0aGUgcmV3cml0aW5nIG9mIHRoZSB0YWJsZXMgYW5kIHZpcmdpblxuIG1heSBub3QgYmUgdGhyZWFkLXNhZmUuXG4gKi9cbnZhciB2aXJnaW4gPSB0cnVlO1xuXG52YXIgbGVuZml4LCBkaXN0Zml4OyAvLyBXZSBoYXZlIG5vIHBvaW50ZXJzIGluIEpTLCBzbyBrZWVwIHRhYmxlcyBzZXBhcmF0ZVxuXG5mdW5jdGlvbiBmaXhlZHRhYmxlcyhzdGF0ZSkge1xuICAvKiBidWlsZCBmaXhlZCBodWZmbWFuIHRhYmxlcyBpZiBmaXJzdCBjYWxsIChtYXkgbm90IGJlIHRocmVhZCBzYWZlKSAqL1xuICBpZiAodmlyZ2luKSB7XG4gICAgdmFyIHN5bTtcblxuICAgIGxlbmZpeCA9IG5ldyB1dGlscy5CdWYzMig1MTIpO1xuICAgIGRpc3RmaXggPSBuZXcgdXRpbHMuQnVmMzIoMzIpO1xuXG4gICAgLyogbGl0ZXJhbC9sZW5ndGggdGFibGUgKi9cbiAgICBzeW0gPSAwO1xuICAgIHdoaWxlIChzeW0gPCAxNDQpIHsgc3RhdGUubGVuc1tzeW0rK10gPSA4OyB9XG4gICAgd2hpbGUgKHN5bSA8IDI1NikgeyBzdGF0ZS5sZW5zW3N5bSsrXSA9IDk7IH1cbiAgICB3aGlsZSAoc3ltIDwgMjgwKSB7IHN0YXRlLmxlbnNbc3ltKytdID0gNzsgfVxuICAgIHdoaWxlIChzeW0gPCAyODgpIHsgc3RhdGUubGVuc1tzeW0rK10gPSA4OyB9XG5cbiAgICBpbmZsYXRlX3RhYmxlKExFTlMsICBzdGF0ZS5sZW5zLCAwLCAyODgsIGxlbmZpeCwgICAwLCBzdGF0ZS53b3JrLCB7IGJpdHM6IDkgfSk7XG5cbiAgICAvKiBkaXN0YW5jZSB0YWJsZSAqL1xuICAgIHN5bSA9IDA7XG4gICAgd2hpbGUgKHN5bSA8IDMyKSB7IHN0YXRlLmxlbnNbc3ltKytdID0gNTsgfVxuXG4gICAgaW5mbGF0ZV90YWJsZShESVNUUywgc3RhdGUubGVucywgMCwgMzIsICAgZGlzdGZpeCwgMCwgc3RhdGUud29yaywgeyBiaXRzOiA1IH0pO1xuXG4gICAgLyogZG8gdGhpcyBqdXN0IG9uY2UgKi9cbiAgICB2aXJnaW4gPSBmYWxzZTtcbiAgfVxuXG4gIHN0YXRlLmxlbmNvZGUgPSBsZW5maXg7XG4gIHN0YXRlLmxlbmJpdHMgPSA5O1xuICBzdGF0ZS5kaXN0Y29kZSA9IGRpc3RmaXg7XG4gIHN0YXRlLmRpc3RiaXRzID0gNTtcbn1cblxuXG4vKlxuIFVwZGF0ZSB0aGUgd2luZG93IHdpdGggdGhlIGxhc3Qgd3NpemUgKG5vcm1hbGx5IDMySykgYnl0ZXMgd3JpdHRlbiBiZWZvcmVcbiByZXR1cm5pbmcuICBJZiB3aW5kb3cgZG9lcyBub3QgZXhpc3QgeWV0LCBjcmVhdGUgaXQuICBUaGlzIGlzIG9ubHkgY2FsbGVkXG4gd2hlbiBhIHdpbmRvdyBpcyBhbHJlYWR5IGluIHVzZSwgb3Igd2hlbiBvdXRwdXQgaGFzIGJlZW4gd3JpdHRlbiBkdXJpbmcgdGhpc1xuIGluZmxhdGUgY2FsbCwgYnV0IHRoZSBlbmQgb2YgdGhlIGRlZmxhdGUgc3RyZWFtIGhhcyBub3QgYmVlbiByZWFjaGVkIHlldC5cbiBJdCBpcyBhbHNvIGNhbGxlZCB0byBjcmVhdGUgYSB3aW5kb3cgZm9yIGRpY3Rpb25hcnkgZGF0YSB3aGVuIGEgZGljdGlvbmFyeVxuIGlzIGxvYWRlZC5cblxuIFByb3ZpZGluZyBvdXRwdXQgYnVmZmVycyBsYXJnZXIgdGhhbiAzMksgdG8gaW5mbGF0ZSgpIHNob3VsZCBwcm92aWRlIGEgc3BlZWRcbiBhZHZhbnRhZ2UsIHNpbmNlIG9ubHkgdGhlIGxhc3QgMzJLIG9mIG91dHB1dCBpcyBjb3BpZWQgdG8gdGhlIHNsaWRpbmcgd2luZG93XG4gdXBvbiByZXR1cm4gZnJvbSBpbmZsYXRlKCksIGFuZCBzaW5jZSBhbGwgZGlzdGFuY2VzIGFmdGVyIHRoZSBmaXJzdCAzMksgb2ZcbiBvdXRwdXQgd2lsbCBmYWxsIGluIHRoZSBvdXRwdXQgZGF0YSwgbWFraW5nIG1hdGNoIGNvcGllcyBzaW1wbGVyIGFuZCBmYXN0ZXIuXG4gVGhlIGFkdmFudGFnZSBtYXkgYmUgZGVwZW5kZW50IG9uIHRoZSBzaXplIG9mIHRoZSBwcm9jZXNzb3IncyBkYXRhIGNhY2hlcy5cbiAqL1xuZnVuY3Rpb24gdXBkYXRld2luZG93KHN0cm0sIHNyYywgZW5kLCBjb3B5KSB7XG4gIHZhciBkaXN0O1xuICB2YXIgc3RhdGUgPSBzdHJtLnN0YXRlO1xuXG4gIC8qIGlmIGl0IGhhc24ndCBiZWVuIGRvbmUgYWxyZWFkeSwgYWxsb2NhdGUgc3BhY2UgZm9yIHRoZSB3aW5kb3cgKi9cbiAgaWYgKHN0YXRlLndpbmRvdyA9PT0gbnVsbCkge1xuICAgIHN0YXRlLndzaXplID0gMSA8PCBzdGF0ZS53Yml0cztcbiAgICBzdGF0ZS53bmV4dCA9IDA7XG4gICAgc3RhdGUud2hhdmUgPSAwO1xuXG4gICAgc3RhdGUud2luZG93ID0gbmV3IHV0aWxzLkJ1Zjgoc3RhdGUud3NpemUpO1xuICB9XG5cbiAgLyogY29weSBzdGF0ZS0+d3NpemUgb3IgbGVzcyBvdXRwdXQgYnl0ZXMgaW50byB0aGUgY2lyY3VsYXIgd2luZG93ICovXG4gIGlmIChjb3B5ID49IHN0YXRlLndzaXplKSB7XG4gICAgdXRpbHMuYXJyYXlTZXQoc3RhdGUud2luZG93LCBzcmMsIGVuZCAtIHN0YXRlLndzaXplLCBzdGF0ZS53c2l6ZSwgMCk7XG4gICAgc3RhdGUud25leHQgPSAwO1xuICAgIHN0YXRlLndoYXZlID0gc3RhdGUud3NpemU7XG4gIH1cbiAgZWxzZSB7XG4gICAgZGlzdCA9IHN0YXRlLndzaXplIC0gc3RhdGUud25leHQ7XG4gICAgaWYgKGRpc3QgPiBjb3B5KSB7XG4gICAgICBkaXN0ID0gY29weTtcbiAgICB9XG4gICAgLy96bWVtY3B5KHN0YXRlLT53aW5kb3cgKyBzdGF0ZS0+d25leHQsIGVuZCAtIGNvcHksIGRpc3QpO1xuICAgIHV0aWxzLmFycmF5U2V0KHN0YXRlLndpbmRvdywgc3JjLCBlbmQgLSBjb3B5LCBkaXN0LCBzdGF0ZS53bmV4dCk7XG4gICAgY29weSAtPSBkaXN0O1xuICAgIGlmIChjb3B5KSB7XG4gICAgICAvL3ptZW1jcHkoc3RhdGUtPndpbmRvdywgZW5kIC0gY29weSwgY29weSk7XG4gICAgICB1dGlscy5hcnJheVNldChzdGF0ZS53aW5kb3csIHNyYywgZW5kIC0gY29weSwgY29weSwgMCk7XG4gICAgICBzdGF0ZS53bmV4dCA9IGNvcHk7XG4gICAgICBzdGF0ZS53aGF2ZSA9IHN0YXRlLndzaXplO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHN0YXRlLnduZXh0ICs9IGRpc3Q7XG4gICAgICBpZiAoc3RhdGUud25leHQgPT09IHN0YXRlLndzaXplKSB7IHN0YXRlLnduZXh0ID0gMDsgfVxuICAgICAgaWYgKHN0YXRlLndoYXZlIDwgc3RhdGUud3NpemUpIHsgc3RhdGUud2hhdmUgKz0gZGlzdDsgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gMDtcbn1cblxuZnVuY3Rpb24gaW5mbGF0ZShzdHJtLCBmbHVzaCkge1xuICB2YXIgc3RhdGU7XG4gIHZhciBpbnB1dCwgb3V0cHV0OyAgICAgICAgICAvLyBpbnB1dC9vdXRwdXQgYnVmZmVyc1xuICB2YXIgbmV4dDsgICAgICAgICAgICAgICAgICAgLyogbmV4dCBpbnB1dCBJTkRFWCAqL1xuICB2YXIgcHV0OyAgICAgICAgICAgICAgICAgICAgLyogbmV4dCBvdXRwdXQgSU5ERVggKi9cbiAgdmFyIGhhdmUsIGxlZnQ7ICAgICAgICAgICAgIC8qIGF2YWlsYWJsZSBpbnB1dCBhbmQgb3V0cHV0ICovXG4gIHZhciBob2xkOyAgICAgICAgICAgICAgICAgICAvKiBiaXQgYnVmZmVyICovXG4gIHZhciBiaXRzOyAgICAgICAgICAgICAgICAgICAvKiBiaXRzIGluIGJpdCBidWZmZXIgKi9cbiAgdmFyIF9pbiwgX291dDsgICAgICAgICAgICAgIC8qIHNhdmUgc3RhcnRpbmcgYXZhaWxhYmxlIGlucHV0IGFuZCBvdXRwdXQgKi9cbiAgdmFyIGNvcHk7ICAgICAgICAgICAgICAgICAgIC8qIG51bWJlciBvZiBzdG9yZWQgb3IgbWF0Y2ggYnl0ZXMgdG8gY29weSAqL1xuICB2YXIgZnJvbTsgICAgICAgICAgICAgICAgICAgLyogd2hlcmUgdG8gY29weSBtYXRjaCBieXRlcyBmcm9tICovXG4gIHZhciBmcm9tX3NvdXJjZTtcbiAgdmFyIGhlcmUgPSAwOyAgICAgICAgICAgICAgIC8qIGN1cnJlbnQgZGVjb2RpbmcgdGFibGUgZW50cnkgKi9cbiAgdmFyIGhlcmVfYml0cywgaGVyZV9vcCwgaGVyZV92YWw7IC8vIHBha2VkIFwiaGVyZVwiIGRlbm9ybWFsaXplZCAoSlMgc3BlY2lmaWMpXG4gIC8vdmFyIGxhc3Q7ICAgICAgICAgICAgICAgICAgIC8qIHBhcmVudCB0YWJsZSBlbnRyeSAqL1xuICB2YXIgbGFzdF9iaXRzLCBsYXN0X29wLCBsYXN0X3ZhbDsgLy8gcGFrZWQgXCJsYXN0XCIgZGVub3JtYWxpemVkIChKUyBzcGVjaWZpYylcbiAgdmFyIGxlbjsgICAgICAgICAgICAgICAgICAgIC8qIGxlbmd0aCB0byBjb3B5IGZvciByZXBlYXRzLCBiaXRzIHRvIGRyb3AgKi9cbiAgdmFyIHJldDsgICAgICAgICAgICAgICAgICAgIC8qIHJldHVybiBjb2RlICovXG4gIHZhciBoYnVmID0gbmV3IHV0aWxzLkJ1ZjgoNCk7ICAgIC8qIGJ1ZmZlciBmb3IgZ3ppcCBoZWFkZXIgY3JjIGNhbGN1bGF0aW9uICovXG4gIHZhciBvcHRzO1xuXG4gIHZhciBuOyAvLyB0ZW1wb3JhcnkgdmFyIGZvciBORUVEX0JJVFNcblxuICB2YXIgb3JkZXIgPSAvKiBwZXJtdXRhdGlvbiBvZiBjb2RlIGxlbmd0aHMgKi9cbiAgICBbIDE2LCAxNywgMTgsIDAsIDgsIDcsIDksIDYsIDEwLCA1LCAxMSwgNCwgMTIsIDMsIDEzLCAyLCAxNCwgMSwgMTUgXTtcblxuXG4gIGlmICghc3RybSB8fCAhc3RybS5zdGF0ZSB8fCAhc3RybS5vdXRwdXQgfHxcbiAgICAgICghc3RybS5pbnB1dCAmJiBzdHJtLmF2YWlsX2luICE9PSAwKSkge1xuICAgIHJldHVybiBaX1NUUkVBTV9FUlJPUjtcbiAgfVxuXG4gIHN0YXRlID0gc3RybS5zdGF0ZTtcbiAgaWYgKHN0YXRlLm1vZGUgPT09IFRZUEUpIHsgc3RhdGUubW9kZSA9IFRZUEVETzsgfSAgICAvKiBza2lwIGNoZWNrICovXG5cblxuICAvLy0tLSBMT0FEKCkgLS0tXG4gIHB1dCA9IHN0cm0ubmV4dF9vdXQ7XG4gIG91dHB1dCA9IHN0cm0ub3V0cHV0O1xuICBsZWZ0ID0gc3RybS5hdmFpbF9vdXQ7XG4gIG5leHQgPSBzdHJtLm5leHRfaW47XG4gIGlucHV0ID0gc3RybS5pbnB1dDtcbiAgaGF2ZSA9IHN0cm0uYXZhaWxfaW47XG4gIGhvbGQgPSBzdGF0ZS5ob2xkO1xuICBiaXRzID0gc3RhdGUuYml0cztcbiAgLy8tLS1cblxuICBfaW4gPSBoYXZlO1xuICBfb3V0ID0gbGVmdDtcbiAgcmV0ID0gWl9PSztcblxuICBpbmZfbGVhdmU6IC8vIGdvdG8gZW11bGF0aW9uXG4gIGZvciAoOzspIHtcbiAgICBzd2l0Y2ggKHN0YXRlLm1vZGUpIHtcbiAgICBjYXNlIEhFQUQ6XG4gICAgICBpZiAoc3RhdGUud3JhcCA9PT0gMCkge1xuICAgICAgICBzdGF0ZS5tb2RlID0gVFlQRURPO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIC8vPT09IE5FRURCSVRTKDE2KTtcbiAgICAgIHdoaWxlIChiaXRzIDwgMTYpIHtcbiAgICAgICAgaWYgKGhhdmUgPT09IDApIHsgYnJlYWsgaW5mX2xlYXZlOyB9XG4gICAgICAgIGhhdmUtLTtcbiAgICAgICAgaG9sZCArPSBpbnB1dFtuZXh0KytdIDw8IGJpdHM7XG4gICAgICAgIGJpdHMgKz0gODtcbiAgICAgIH1cbiAgICAgIC8vPT09Ly9cbiAgICAgIGlmICgoc3RhdGUud3JhcCAmIDIpICYmIGhvbGQgPT09IDB4OGIxZikgeyAgLyogZ3ppcCBoZWFkZXIgKi9cbiAgICAgICAgc3RhdGUuY2hlY2sgPSAwLypjcmMzMigwTCwgWl9OVUxMLCAwKSovO1xuICAgICAgICAvLz09PSBDUkMyKHN0YXRlLmNoZWNrLCBob2xkKTtcbiAgICAgICAgaGJ1ZlswXSA9IGhvbGQgJiAweGZmO1xuICAgICAgICBoYnVmWzFdID0gKGhvbGQgPj4+IDgpICYgMHhmZjtcbiAgICAgICAgc3RhdGUuY2hlY2sgPSBjcmMzMihzdGF0ZS5jaGVjaywgaGJ1ZiwgMiwgMCk7XG4gICAgICAgIC8vPT09Ly9cblxuICAgICAgICAvLz09PSBJTklUQklUUygpO1xuICAgICAgICBob2xkID0gMDtcbiAgICAgICAgYml0cyA9IDA7XG4gICAgICAgIC8vPT09Ly9cbiAgICAgICAgc3RhdGUubW9kZSA9IEZMQUdTO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIHN0YXRlLmZsYWdzID0gMDsgICAgICAgICAgIC8qIGV4cGVjdCB6bGliIGhlYWRlciAqL1xuICAgICAgaWYgKHN0YXRlLmhlYWQpIHtcbiAgICAgICAgc3RhdGUuaGVhZC5kb25lID0gZmFsc2U7XG4gICAgICB9XG4gICAgICBpZiAoIShzdGF0ZS53cmFwICYgMSkgfHwgICAvKiBjaGVjayBpZiB6bGliIGhlYWRlciBhbGxvd2VkICovXG4gICAgICAgICgoKGhvbGQgJiAweGZmKS8qQklUUyg4KSovIDw8IDgpICsgKGhvbGQgPj4gOCkpICUgMzEpIHtcbiAgICAgICAgc3RybS5tc2cgPSAnaW5jb3JyZWN0IGhlYWRlciBjaGVjayc7XG4gICAgICAgIHN0YXRlLm1vZGUgPSBCQUQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgaWYgKChob2xkICYgMHgwZikvKkJJVFMoNCkqLyAhPT0gWl9ERUZMQVRFRCkge1xuICAgICAgICBzdHJtLm1zZyA9ICd1bmtub3duIGNvbXByZXNzaW9uIG1ldGhvZCc7XG4gICAgICAgIHN0YXRlLm1vZGUgPSBCQUQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgLy8tLS0gRFJPUEJJVFMoNCkgLS0tLy9cbiAgICAgIGhvbGQgPj4+PSA0O1xuICAgICAgYml0cyAtPSA0O1xuICAgICAgLy8tLS0vL1xuICAgICAgbGVuID0gKGhvbGQgJiAweDBmKS8qQklUUyg0KSovICsgODtcbiAgICAgIGlmIChzdGF0ZS53Yml0cyA9PT0gMCkge1xuICAgICAgICBzdGF0ZS53Yml0cyA9IGxlbjtcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKGxlbiA+IHN0YXRlLndiaXRzKSB7XG4gICAgICAgIHN0cm0ubXNnID0gJ2ludmFsaWQgd2luZG93IHNpemUnO1xuICAgICAgICBzdGF0ZS5tb2RlID0gQkFEO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIHN0YXRlLmRtYXggPSAxIDw8IGxlbjtcbiAgICAgIC8vVHJhY2V2KChzdGRlcnIsIFwiaW5mbGF0ZTogICB6bGliIGhlYWRlciBva1xcblwiKSk7XG4gICAgICBzdHJtLmFkbGVyID0gc3RhdGUuY2hlY2sgPSAxLyphZGxlcjMyKDBMLCBaX05VTEwsIDApKi87XG4gICAgICBzdGF0ZS5tb2RlID0gaG9sZCAmIDB4MjAwID8gRElDVElEIDogVFlQRTtcbiAgICAgIC8vPT09IElOSVRCSVRTKCk7XG4gICAgICBob2xkID0gMDtcbiAgICAgIGJpdHMgPSAwO1xuICAgICAgLy89PT0vL1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBGTEFHUzpcbiAgICAgIC8vPT09IE5FRURCSVRTKDE2KTsgKi9cbiAgICAgIHdoaWxlIChiaXRzIDwgMTYpIHtcbiAgICAgICAgaWYgKGhhdmUgPT09IDApIHsgYnJlYWsgaW5mX2xlYXZlOyB9XG4gICAgICAgIGhhdmUtLTtcbiAgICAgICAgaG9sZCArPSBpbnB1dFtuZXh0KytdIDw8IGJpdHM7XG4gICAgICAgIGJpdHMgKz0gODtcbiAgICAgIH1cbiAgICAgIC8vPT09Ly9cbiAgICAgIHN0YXRlLmZsYWdzID0gaG9sZDtcbiAgICAgIGlmICgoc3RhdGUuZmxhZ3MgJiAweGZmKSAhPT0gWl9ERUZMQVRFRCkge1xuICAgICAgICBzdHJtLm1zZyA9ICd1bmtub3duIGNvbXByZXNzaW9uIG1ldGhvZCc7XG4gICAgICAgIHN0YXRlLm1vZGUgPSBCQUQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgaWYgKHN0YXRlLmZsYWdzICYgMHhlMDAwKSB7XG4gICAgICAgIHN0cm0ubXNnID0gJ3Vua25vd24gaGVhZGVyIGZsYWdzIHNldCc7XG4gICAgICAgIHN0YXRlLm1vZGUgPSBCQUQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgaWYgKHN0YXRlLmhlYWQpIHtcbiAgICAgICAgc3RhdGUuaGVhZC50ZXh0ID0gKChob2xkID4+IDgpICYgMSk7XG4gICAgICB9XG4gICAgICBpZiAoc3RhdGUuZmxhZ3MgJiAweDAyMDApIHtcbiAgICAgICAgLy89PT0gQ1JDMihzdGF0ZS5jaGVjaywgaG9sZCk7XG4gICAgICAgIGhidWZbMF0gPSBob2xkICYgMHhmZjtcbiAgICAgICAgaGJ1ZlsxXSA9IChob2xkID4+PiA4KSAmIDB4ZmY7XG4gICAgICAgIHN0YXRlLmNoZWNrID0gY3JjMzIoc3RhdGUuY2hlY2ssIGhidWYsIDIsIDApO1xuICAgICAgICAvLz09PS8vXG4gICAgICB9XG4gICAgICAvLz09PSBJTklUQklUUygpO1xuICAgICAgaG9sZCA9IDA7XG4gICAgICBiaXRzID0gMDtcbiAgICAgIC8vPT09Ly9cbiAgICAgIHN0YXRlLm1vZGUgPSBUSU1FO1xuICAgICAgLyogZmFsbHMgdGhyb3VnaCAqL1xuICAgIGNhc2UgVElNRTpcbiAgICAgIC8vPT09IE5FRURCSVRTKDMyKTsgKi9cbiAgICAgIHdoaWxlIChiaXRzIDwgMzIpIHtcbiAgICAgICAgaWYgKGhhdmUgPT09IDApIHsgYnJlYWsgaW5mX2xlYXZlOyB9XG4gICAgICAgIGhhdmUtLTtcbiAgICAgICAgaG9sZCArPSBpbnB1dFtuZXh0KytdIDw8IGJpdHM7XG4gICAgICAgIGJpdHMgKz0gODtcbiAgICAgIH1cbiAgICAgIC8vPT09Ly9cbiAgICAgIGlmIChzdGF0ZS5oZWFkKSB7XG4gICAgICAgIHN0YXRlLmhlYWQudGltZSA9IGhvbGQ7XG4gICAgICB9XG4gICAgICBpZiAoc3RhdGUuZmxhZ3MgJiAweDAyMDApIHtcbiAgICAgICAgLy89PT0gQ1JDNChzdGF0ZS5jaGVjaywgaG9sZClcbiAgICAgICAgaGJ1ZlswXSA9IGhvbGQgJiAweGZmO1xuICAgICAgICBoYnVmWzFdID0gKGhvbGQgPj4+IDgpICYgMHhmZjtcbiAgICAgICAgaGJ1ZlsyXSA9IChob2xkID4+PiAxNikgJiAweGZmO1xuICAgICAgICBoYnVmWzNdID0gKGhvbGQgPj4+IDI0KSAmIDB4ZmY7XG4gICAgICAgIHN0YXRlLmNoZWNrID0gY3JjMzIoc3RhdGUuY2hlY2ssIGhidWYsIDQsIDApO1xuICAgICAgICAvLz09PVxuICAgICAgfVxuICAgICAgLy89PT0gSU5JVEJJVFMoKTtcbiAgICAgIGhvbGQgPSAwO1xuICAgICAgYml0cyA9IDA7XG4gICAgICAvLz09PS8vXG4gICAgICBzdGF0ZS5tb2RlID0gT1M7XG4gICAgICAvKiBmYWxscyB0aHJvdWdoICovXG4gICAgY2FzZSBPUzpcbiAgICAgIC8vPT09IE5FRURCSVRTKDE2KTsgKi9cbiAgICAgIHdoaWxlIChiaXRzIDwgMTYpIHtcbiAgICAgICAgaWYgKGhhdmUgPT09IDApIHsgYnJlYWsgaW5mX2xlYXZlOyB9XG4gICAgICAgIGhhdmUtLTtcbiAgICAgICAgaG9sZCArPSBpbnB1dFtuZXh0KytdIDw8IGJpdHM7XG4gICAgICAgIGJpdHMgKz0gODtcbiAgICAgIH1cbiAgICAgIC8vPT09Ly9cbiAgICAgIGlmIChzdGF0ZS5oZWFkKSB7XG4gICAgICAgIHN0YXRlLmhlYWQueGZsYWdzID0gKGhvbGQgJiAweGZmKTtcbiAgICAgICAgc3RhdGUuaGVhZC5vcyA9IChob2xkID4+IDgpO1xuICAgICAgfVxuICAgICAgaWYgKHN0YXRlLmZsYWdzICYgMHgwMjAwKSB7XG4gICAgICAgIC8vPT09IENSQzIoc3RhdGUuY2hlY2ssIGhvbGQpO1xuICAgICAgICBoYnVmWzBdID0gaG9sZCAmIDB4ZmY7XG4gICAgICAgIGhidWZbMV0gPSAoaG9sZCA+Pj4gOCkgJiAweGZmO1xuICAgICAgICBzdGF0ZS5jaGVjayA9IGNyYzMyKHN0YXRlLmNoZWNrLCBoYnVmLCAyLCAwKTtcbiAgICAgICAgLy89PT0vL1xuICAgICAgfVxuICAgICAgLy89PT0gSU5JVEJJVFMoKTtcbiAgICAgIGhvbGQgPSAwO1xuICAgICAgYml0cyA9IDA7XG4gICAgICAvLz09PS8vXG4gICAgICBzdGF0ZS5tb2RlID0gRVhMRU47XG4gICAgICAvKiBmYWxscyB0aHJvdWdoICovXG4gICAgY2FzZSBFWExFTjpcbiAgICAgIGlmIChzdGF0ZS5mbGFncyAmIDB4MDQwMCkge1xuICAgICAgICAvLz09PSBORUVEQklUUygxNik7ICovXG4gICAgICAgIHdoaWxlIChiaXRzIDwgMTYpIHtcbiAgICAgICAgICBpZiAoaGF2ZSA9PT0gMCkgeyBicmVhayBpbmZfbGVhdmU7IH1cbiAgICAgICAgICBoYXZlLS07XG4gICAgICAgICAgaG9sZCArPSBpbnB1dFtuZXh0KytdIDw8IGJpdHM7XG4gICAgICAgICAgYml0cyArPSA4O1xuICAgICAgICB9XG4gICAgICAgIC8vPT09Ly9cbiAgICAgICAgc3RhdGUubGVuZ3RoID0gaG9sZDtcbiAgICAgICAgaWYgKHN0YXRlLmhlYWQpIHtcbiAgICAgICAgICBzdGF0ZS5oZWFkLmV4dHJhX2xlbiA9IGhvbGQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN0YXRlLmZsYWdzICYgMHgwMjAwKSB7XG4gICAgICAgICAgLy89PT0gQ1JDMihzdGF0ZS5jaGVjaywgaG9sZCk7XG4gICAgICAgICAgaGJ1ZlswXSA9IGhvbGQgJiAweGZmO1xuICAgICAgICAgIGhidWZbMV0gPSAoaG9sZCA+Pj4gOCkgJiAweGZmO1xuICAgICAgICAgIHN0YXRlLmNoZWNrID0gY3JjMzIoc3RhdGUuY2hlY2ssIGhidWYsIDIsIDApO1xuICAgICAgICAgIC8vPT09Ly9cbiAgICAgICAgfVxuICAgICAgICAvLz09PSBJTklUQklUUygpO1xuICAgICAgICBob2xkID0gMDtcbiAgICAgICAgYml0cyA9IDA7XG4gICAgICAgIC8vPT09Ly9cbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKHN0YXRlLmhlYWQpIHtcbiAgICAgICAgc3RhdGUuaGVhZC5leHRyYSA9IG51bGwvKlpfTlVMTCovO1xuICAgICAgfVxuICAgICAgc3RhdGUubW9kZSA9IEVYVFJBO1xuICAgICAgLyogZmFsbHMgdGhyb3VnaCAqL1xuICAgIGNhc2UgRVhUUkE6XG4gICAgICBpZiAoc3RhdGUuZmxhZ3MgJiAweDA0MDApIHtcbiAgICAgICAgY29weSA9IHN0YXRlLmxlbmd0aDtcbiAgICAgICAgaWYgKGNvcHkgPiBoYXZlKSB7IGNvcHkgPSBoYXZlOyB9XG4gICAgICAgIGlmIChjb3B5KSB7XG4gICAgICAgICAgaWYgKHN0YXRlLmhlYWQpIHtcbiAgICAgICAgICAgIGxlbiA9IHN0YXRlLmhlYWQuZXh0cmFfbGVuIC0gc3RhdGUubGVuZ3RoO1xuICAgICAgICAgICAgaWYgKCFzdGF0ZS5oZWFkLmV4dHJhKSB7XG4gICAgICAgICAgICAgIC8vIFVzZSB1bnR5cGVkIGFycmF5IGZvciBtb3JlIGNvbnZlbmllbmQgcHJvY2Vzc2luZyBsYXRlclxuICAgICAgICAgICAgICBzdGF0ZS5oZWFkLmV4dHJhID0gbmV3IEFycmF5KHN0YXRlLmhlYWQuZXh0cmFfbGVuKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHV0aWxzLmFycmF5U2V0KFxuICAgICAgICAgICAgICBzdGF0ZS5oZWFkLmV4dHJhLFxuICAgICAgICAgICAgICBpbnB1dCxcbiAgICAgICAgICAgICAgbmV4dCxcbiAgICAgICAgICAgICAgLy8gZXh0cmEgZmllbGQgaXMgbGltaXRlZCB0byA2NTUzNiBieXRlc1xuICAgICAgICAgICAgICAvLyAtIG5vIG5lZWQgZm9yIGFkZGl0aW9uYWwgc2l6ZSBjaGVja1xuICAgICAgICAgICAgICBjb3B5LFxuICAgICAgICAgICAgICAvKmxlbiArIGNvcHkgPiBzdGF0ZS5oZWFkLmV4dHJhX21heCAtIGxlbiA/IHN0YXRlLmhlYWQuZXh0cmFfbWF4IDogY29weSwqL1xuICAgICAgICAgICAgICBsZW5cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICAvL3ptZW1jcHkoc3RhdGUuaGVhZC5leHRyYSArIGxlbiwgbmV4dCxcbiAgICAgICAgICAgIC8vICAgICAgICBsZW4gKyBjb3B5ID4gc3RhdGUuaGVhZC5leHRyYV9tYXggP1xuICAgICAgICAgICAgLy8gICAgICAgIHN0YXRlLmhlYWQuZXh0cmFfbWF4IC0gbGVuIDogY29weSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChzdGF0ZS5mbGFncyAmIDB4MDIwMCkge1xuICAgICAgICAgICAgc3RhdGUuY2hlY2sgPSBjcmMzMihzdGF0ZS5jaGVjaywgaW5wdXQsIGNvcHksIG5leHQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBoYXZlIC09IGNvcHk7XG4gICAgICAgICAgbmV4dCArPSBjb3B5O1xuICAgICAgICAgIHN0YXRlLmxlbmd0aCAtPSBjb3B5O1xuICAgICAgICB9XG4gICAgICAgIGlmIChzdGF0ZS5sZW5ndGgpIHsgYnJlYWsgaW5mX2xlYXZlOyB9XG4gICAgICB9XG4gICAgICBzdGF0ZS5sZW5ndGggPSAwO1xuICAgICAgc3RhdGUubW9kZSA9IE5BTUU7XG4gICAgICAvKiBmYWxscyB0aHJvdWdoICovXG4gICAgY2FzZSBOQU1FOlxuICAgICAgaWYgKHN0YXRlLmZsYWdzICYgMHgwODAwKSB7XG4gICAgICAgIGlmIChoYXZlID09PSAwKSB7IGJyZWFrIGluZl9sZWF2ZTsgfVxuICAgICAgICBjb3B5ID0gMDtcbiAgICAgICAgZG8ge1xuICAgICAgICAgIC8vIFRPRE86IDIgb3IgMSBieXRlcz9cbiAgICAgICAgICBsZW4gPSBpbnB1dFtuZXh0ICsgY29weSsrXTtcbiAgICAgICAgICAvKiB1c2UgY29uc3RhbnQgbGltaXQgYmVjYXVzZSBpbiBqcyB3ZSBzaG91bGQgbm90IHByZWFsbG9jYXRlIG1lbW9yeSAqL1xuICAgICAgICAgIGlmIChzdGF0ZS5oZWFkICYmIGxlbiAmJlxuICAgICAgICAgICAgICAoc3RhdGUubGVuZ3RoIDwgNjU1MzYgLypzdGF0ZS5oZWFkLm5hbWVfbWF4Ki8pKSB7XG4gICAgICAgICAgICBzdGF0ZS5oZWFkLm5hbWUgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShsZW4pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSB3aGlsZSAobGVuICYmIGNvcHkgPCBoYXZlKTtcblxuICAgICAgICBpZiAoc3RhdGUuZmxhZ3MgJiAweDAyMDApIHtcbiAgICAgICAgICBzdGF0ZS5jaGVjayA9IGNyYzMyKHN0YXRlLmNoZWNrLCBpbnB1dCwgY29weSwgbmV4dCk7XG4gICAgICAgIH1cbiAgICAgICAgaGF2ZSAtPSBjb3B5O1xuICAgICAgICBuZXh0ICs9IGNvcHk7XG4gICAgICAgIGlmIChsZW4pIHsgYnJlYWsgaW5mX2xlYXZlOyB9XG4gICAgICB9XG4gICAgICBlbHNlIGlmIChzdGF0ZS5oZWFkKSB7XG4gICAgICAgIHN0YXRlLmhlYWQubmFtZSA9IG51bGw7XG4gICAgICB9XG4gICAgICBzdGF0ZS5sZW5ndGggPSAwO1xuICAgICAgc3RhdGUubW9kZSA9IENPTU1FTlQ7XG4gICAgICAvKiBmYWxscyB0aHJvdWdoICovXG4gICAgY2FzZSBDT01NRU5UOlxuICAgICAgaWYgKHN0YXRlLmZsYWdzICYgMHgxMDAwKSB7XG4gICAgICAgIGlmIChoYXZlID09PSAwKSB7IGJyZWFrIGluZl9sZWF2ZTsgfVxuICAgICAgICBjb3B5ID0gMDtcbiAgICAgICAgZG8ge1xuICAgICAgICAgIGxlbiA9IGlucHV0W25leHQgKyBjb3B5KytdO1xuICAgICAgICAgIC8qIHVzZSBjb25zdGFudCBsaW1pdCBiZWNhdXNlIGluIGpzIHdlIHNob3VsZCBub3QgcHJlYWxsb2NhdGUgbWVtb3J5ICovXG4gICAgICAgICAgaWYgKHN0YXRlLmhlYWQgJiYgbGVuICYmXG4gICAgICAgICAgICAgIChzdGF0ZS5sZW5ndGggPCA2NTUzNiAvKnN0YXRlLmhlYWQuY29tbV9tYXgqLykpIHtcbiAgICAgICAgICAgIHN0YXRlLmhlYWQuY29tbWVudCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGxlbik7XG4gICAgICAgICAgfVxuICAgICAgICB9IHdoaWxlIChsZW4gJiYgY29weSA8IGhhdmUpO1xuICAgICAgICBpZiAoc3RhdGUuZmxhZ3MgJiAweDAyMDApIHtcbiAgICAgICAgICBzdGF0ZS5jaGVjayA9IGNyYzMyKHN0YXRlLmNoZWNrLCBpbnB1dCwgY29weSwgbmV4dCk7XG4gICAgICAgIH1cbiAgICAgICAgaGF2ZSAtPSBjb3B5O1xuICAgICAgICBuZXh0ICs9IGNvcHk7XG4gICAgICAgIGlmIChsZW4pIHsgYnJlYWsgaW5mX2xlYXZlOyB9XG4gICAgICB9XG4gICAgICBlbHNlIGlmIChzdGF0ZS5oZWFkKSB7XG4gICAgICAgIHN0YXRlLmhlYWQuY29tbWVudCA9IG51bGw7XG4gICAgICB9XG4gICAgICBzdGF0ZS5tb2RlID0gSENSQztcbiAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi9cbiAgICBjYXNlIEhDUkM6XG4gICAgICBpZiAoc3RhdGUuZmxhZ3MgJiAweDAyMDApIHtcbiAgICAgICAgLy89PT0gTkVFREJJVFMoMTYpOyAqL1xuICAgICAgICB3aGlsZSAoYml0cyA8IDE2KSB7XG4gICAgICAgICAgaWYgKGhhdmUgPT09IDApIHsgYnJlYWsgaW5mX2xlYXZlOyB9XG4gICAgICAgICAgaGF2ZS0tO1xuICAgICAgICAgIGhvbGQgKz0gaW5wdXRbbmV4dCsrXSA8PCBiaXRzO1xuICAgICAgICAgIGJpdHMgKz0gODtcbiAgICAgICAgfVxuICAgICAgICAvLz09PS8vXG4gICAgICAgIGlmIChob2xkICE9PSAoc3RhdGUuY2hlY2sgJiAweGZmZmYpKSB7XG4gICAgICAgICAgc3RybS5tc2cgPSAnaGVhZGVyIGNyYyBtaXNtYXRjaCc7XG4gICAgICAgICAgc3RhdGUubW9kZSA9IEJBRDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICAvLz09PSBJTklUQklUUygpO1xuICAgICAgICBob2xkID0gMDtcbiAgICAgICAgYml0cyA9IDA7XG4gICAgICAgIC8vPT09Ly9cbiAgICAgIH1cbiAgICAgIGlmIChzdGF0ZS5oZWFkKSB7XG4gICAgICAgIHN0YXRlLmhlYWQuaGNyYyA9ICgoc3RhdGUuZmxhZ3MgPj4gOSkgJiAxKTtcbiAgICAgICAgc3RhdGUuaGVhZC5kb25lID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHN0cm0uYWRsZXIgPSBzdGF0ZS5jaGVjayA9IDA7XG4gICAgICBzdGF0ZS5tb2RlID0gVFlQRTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgRElDVElEOlxuICAgICAgLy89PT0gTkVFREJJVFMoMzIpOyAqL1xuICAgICAgd2hpbGUgKGJpdHMgPCAzMikge1xuICAgICAgICBpZiAoaGF2ZSA9PT0gMCkgeyBicmVhayBpbmZfbGVhdmU7IH1cbiAgICAgICAgaGF2ZS0tO1xuICAgICAgICBob2xkICs9IGlucHV0W25leHQrK10gPDwgYml0cztcbiAgICAgICAgYml0cyArPSA4O1xuICAgICAgfVxuICAgICAgLy89PT0vL1xuICAgICAgc3RybS5hZGxlciA9IHN0YXRlLmNoZWNrID0genN3YXAzMihob2xkKTtcbiAgICAgIC8vPT09IElOSVRCSVRTKCk7XG4gICAgICBob2xkID0gMDtcbiAgICAgIGJpdHMgPSAwO1xuICAgICAgLy89PT0vL1xuICAgICAgc3RhdGUubW9kZSA9IERJQ1Q7XG4gICAgICAvKiBmYWxscyB0aHJvdWdoICovXG4gICAgY2FzZSBESUNUOlxuICAgICAgaWYgKHN0YXRlLmhhdmVkaWN0ID09PSAwKSB7XG4gICAgICAgIC8vLS0tIFJFU1RPUkUoKSAtLS1cbiAgICAgICAgc3RybS5uZXh0X291dCA9IHB1dDtcbiAgICAgICAgc3RybS5hdmFpbF9vdXQgPSBsZWZ0O1xuICAgICAgICBzdHJtLm5leHRfaW4gPSBuZXh0O1xuICAgICAgICBzdHJtLmF2YWlsX2luID0gaGF2ZTtcbiAgICAgICAgc3RhdGUuaG9sZCA9IGhvbGQ7XG4gICAgICAgIHN0YXRlLmJpdHMgPSBiaXRzO1xuICAgICAgICAvLy0tLVxuICAgICAgICByZXR1cm4gWl9ORUVEX0RJQ1Q7XG4gICAgICB9XG4gICAgICBzdHJtLmFkbGVyID0gc3RhdGUuY2hlY2sgPSAxLyphZGxlcjMyKDBMLCBaX05VTEwsIDApKi87XG4gICAgICBzdGF0ZS5tb2RlID0gVFlQRTtcbiAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi9cbiAgICBjYXNlIFRZUEU6XG4gICAgICBpZiAoZmx1c2ggPT09IFpfQkxPQ0sgfHwgZmx1c2ggPT09IFpfVFJFRVMpIHsgYnJlYWsgaW5mX2xlYXZlOyB9XG4gICAgICAvKiBmYWxscyB0aHJvdWdoICovXG4gICAgY2FzZSBUWVBFRE86XG4gICAgICBpZiAoc3RhdGUubGFzdCkge1xuICAgICAgICAvLy0tLSBCWVRFQklUUygpIC0tLS8vXG4gICAgICAgIGhvbGQgPj4+PSBiaXRzICYgNztcbiAgICAgICAgYml0cyAtPSBiaXRzICYgNztcbiAgICAgICAgLy8tLS0vL1xuICAgICAgICBzdGF0ZS5tb2RlID0gQ0hFQ0s7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgLy89PT0gTkVFREJJVFMoMyk7ICovXG4gICAgICB3aGlsZSAoYml0cyA8IDMpIHtcbiAgICAgICAgaWYgKGhhdmUgPT09IDApIHsgYnJlYWsgaW5mX2xlYXZlOyB9XG4gICAgICAgIGhhdmUtLTtcbiAgICAgICAgaG9sZCArPSBpbnB1dFtuZXh0KytdIDw8IGJpdHM7XG4gICAgICAgIGJpdHMgKz0gODtcbiAgICAgIH1cbiAgICAgIC8vPT09Ly9cbiAgICAgIHN0YXRlLmxhc3QgPSAoaG9sZCAmIDB4MDEpLypCSVRTKDEpKi87XG4gICAgICAvLy0tLSBEUk9QQklUUygxKSAtLS0vL1xuICAgICAgaG9sZCA+Pj49IDE7XG4gICAgICBiaXRzIC09IDE7XG4gICAgICAvLy0tLS8vXG5cbiAgICAgIHN3aXRjaCAoKGhvbGQgJiAweDAzKS8qQklUUygyKSovKSB7XG4gICAgICBjYXNlIDA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzdG9yZWQgYmxvY2sgKi9cbiAgICAgICAgLy9UcmFjZXYoKHN0ZGVyciwgXCJpbmZsYXRlOiAgICAgc3RvcmVkIGJsb2NrJXNcXG5cIixcbiAgICAgICAgLy8gICAgICAgIHN0YXRlLmxhc3QgPyBcIiAobGFzdClcIiA6IFwiXCIpKTtcbiAgICAgICAgc3RhdGUubW9kZSA9IFNUT1JFRDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDE6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBmaXhlZCBibG9jayAqL1xuICAgICAgICBmaXhlZHRhYmxlcyhzdGF0ZSk7XG4gICAgICAgIC8vVHJhY2V2KChzdGRlcnIsIFwiaW5mbGF0ZTogICAgIGZpeGVkIGNvZGVzIGJsb2NrJXNcXG5cIixcbiAgICAgICAgLy8gICAgICAgIHN0YXRlLmxhc3QgPyBcIiAobGFzdClcIiA6IFwiXCIpKTtcbiAgICAgICAgc3RhdGUubW9kZSA9IExFTl87ICAgICAgICAgICAgIC8qIGRlY29kZSBjb2RlcyAqL1xuICAgICAgICBpZiAoZmx1c2ggPT09IFpfVFJFRVMpIHtcbiAgICAgICAgICAvLy0tLSBEUk9QQklUUygyKSAtLS0vL1xuICAgICAgICAgIGhvbGQgPj4+PSAyO1xuICAgICAgICAgIGJpdHMgLT0gMjtcbiAgICAgICAgICAvLy0tLS8vXG4gICAgICAgICAgYnJlYWsgaW5mX2xlYXZlO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZHluYW1pYyBibG9jayAqL1xuICAgICAgICAvL1RyYWNldigoc3RkZXJyLCBcImluZmxhdGU6ICAgICBkeW5hbWljIGNvZGVzIGJsb2NrJXNcXG5cIixcbiAgICAgICAgLy8gICAgICAgIHN0YXRlLmxhc3QgPyBcIiAobGFzdClcIiA6IFwiXCIpKTtcbiAgICAgICAgc3RhdGUubW9kZSA9IFRBQkxFO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMzpcbiAgICAgICAgc3RybS5tc2cgPSAnaW52YWxpZCBibG9jayB0eXBlJztcbiAgICAgICAgc3RhdGUubW9kZSA9IEJBRDtcbiAgICAgIH1cbiAgICAgIC8vLS0tIERST1BCSVRTKDIpIC0tLS8vXG4gICAgICBob2xkID4+Pj0gMjtcbiAgICAgIGJpdHMgLT0gMjtcbiAgICAgIC8vLS0tLy9cbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgU1RPUkVEOlxuICAgICAgLy8tLS0gQllURUJJVFMoKSAtLS0vLyAvKiBnbyB0byBieXRlIGJvdW5kYXJ5ICovXG4gICAgICBob2xkID4+Pj0gYml0cyAmIDc7XG4gICAgICBiaXRzIC09IGJpdHMgJiA3O1xuICAgICAgLy8tLS0vL1xuICAgICAgLy89PT0gTkVFREJJVFMoMzIpOyAqL1xuICAgICAgd2hpbGUgKGJpdHMgPCAzMikge1xuICAgICAgICBpZiAoaGF2ZSA9PT0gMCkgeyBicmVhayBpbmZfbGVhdmU7IH1cbiAgICAgICAgaGF2ZS0tO1xuICAgICAgICBob2xkICs9IGlucHV0W25leHQrK10gPDwgYml0cztcbiAgICAgICAgYml0cyArPSA4O1xuICAgICAgfVxuICAgICAgLy89PT0vL1xuICAgICAgaWYgKChob2xkICYgMHhmZmZmKSAhPT0gKChob2xkID4+PiAxNikgXiAweGZmZmYpKSB7XG4gICAgICAgIHN0cm0ubXNnID0gJ2ludmFsaWQgc3RvcmVkIGJsb2NrIGxlbmd0aHMnO1xuICAgICAgICBzdGF0ZS5tb2RlID0gQkFEO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIHN0YXRlLmxlbmd0aCA9IGhvbGQgJiAweGZmZmY7XG4gICAgICAvL1RyYWNldigoc3RkZXJyLCBcImluZmxhdGU6ICAgICAgIHN0b3JlZCBsZW5ndGggJXVcXG5cIixcbiAgICAgIC8vICAgICAgICBzdGF0ZS5sZW5ndGgpKTtcbiAgICAgIC8vPT09IElOSVRCSVRTKCk7XG4gICAgICBob2xkID0gMDtcbiAgICAgIGJpdHMgPSAwO1xuICAgICAgLy89PT0vL1xuICAgICAgc3RhdGUubW9kZSA9IENPUFlfO1xuICAgICAgaWYgKGZsdXNoID09PSBaX1RSRUVTKSB7IGJyZWFrIGluZl9sZWF2ZTsgfVxuICAgICAgLyogZmFsbHMgdGhyb3VnaCAqL1xuICAgIGNhc2UgQ09QWV86XG4gICAgICBzdGF0ZS5tb2RlID0gQ09QWTtcbiAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi9cbiAgICBjYXNlIENPUFk6XG4gICAgICBjb3B5ID0gc3RhdGUubGVuZ3RoO1xuICAgICAgaWYgKGNvcHkpIHtcbiAgICAgICAgaWYgKGNvcHkgPiBoYXZlKSB7IGNvcHkgPSBoYXZlOyB9XG4gICAgICAgIGlmIChjb3B5ID4gbGVmdCkgeyBjb3B5ID0gbGVmdDsgfVxuICAgICAgICBpZiAoY29weSA9PT0gMCkgeyBicmVhayBpbmZfbGVhdmU7IH1cbiAgICAgICAgLy8tLS0gem1lbWNweShwdXQsIG5leHQsIGNvcHkpOyAtLS1cbiAgICAgICAgdXRpbHMuYXJyYXlTZXQob3V0cHV0LCBpbnB1dCwgbmV4dCwgY29weSwgcHV0KTtcbiAgICAgICAgLy8tLS0vL1xuICAgICAgICBoYXZlIC09IGNvcHk7XG4gICAgICAgIG5leHQgKz0gY29weTtcbiAgICAgICAgbGVmdCAtPSBjb3B5O1xuICAgICAgICBwdXQgKz0gY29weTtcbiAgICAgICAgc3RhdGUubGVuZ3RoIC09IGNvcHk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgLy9UcmFjZXYoKHN0ZGVyciwgXCJpbmZsYXRlOiAgICAgICBzdG9yZWQgZW5kXFxuXCIpKTtcbiAgICAgIHN0YXRlLm1vZGUgPSBUWVBFO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBUQUJMRTpcbiAgICAgIC8vPT09IE5FRURCSVRTKDE0KTsgKi9cbiAgICAgIHdoaWxlIChiaXRzIDwgMTQpIHtcbiAgICAgICAgaWYgKGhhdmUgPT09IDApIHsgYnJlYWsgaW5mX2xlYXZlOyB9XG4gICAgICAgIGhhdmUtLTtcbiAgICAgICAgaG9sZCArPSBpbnB1dFtuZXh0KytdIDw8IGJpdHM7XG4gICAgICAgIGJpdHMgKz0gODtcbiAgICAgIH1cbiAgICAgIC8vPT09Ly9cbiAgICAgIHN0YXRlLm5sZW4gPSAoaG9sZCAmIDB4MWYpLypCSVRTKDUpKi8gKyAyNTc7XG4gICAgICAvLy0tLSBEUk9QQklUUyg1KSAtLS0vL1xuICAgICAgaG9sZCA+Pj49IDU7XG4gICAgICBiaXRzIC09IDU7XG4gICAgICAvLy0tLS8vXG4gICAgICBzdGF0ZS5uZGlzdCA9IChob2xkICYgMHgxZikvKkJJVFMoNSkqLyArIDE7XG4gICAgICAvLy0tLSBEUk9QQklUUyg1KSAtLS0vL1xuICAgICAgaG9sZCA+Pj49IDU7XG4gICAgICBiaXRzIC09IDU7XG4gICAgICAvLy0tLS8vXG4gICAgICBzdGF0ZS5uY29kZSA9IChob2xkICYgMHgwZikvKkJJVFMoNCkqLyArIDQ7XG4gICAgICAvLy0tLSBEUk9QQklUUyg0KSAtLS0vL1xuICAgICAgaG9sZCA+Pj49IDQ7XG4gICAgICBiaXRzIC09IDQ7XG4gICAgICAvLy0tLS8vXG4vLyNpZm5kZWYgUEtaSVBfQlVHX1dPUktBUk9VTkRcbiAgICAgIGlmIChzdGF0ZS5ubGVuID4gMjg2IHx8IHN0YXRlLm5kaXN0ID4gMzApIHtcbiAgICAgICAgc3RybS5tc2cgPSAndG9vIG1hbnkgbGVuZ3RoIG9yIGRpc3RhbmNlIHN5bWJvbHMnO1xuICAgICAgICBzdGF0ZS5tb2RlID0gQkFEO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbi8vI2VuZGlmXG4gICAgICAvL1RyYWNldigoc3RkZXJyLCBcImluZmxhdGU6ICAgICAgIHRhYmxlIHNpemVzIG9rXFxuXCIpKTtcbiAgICAgIHN0YXRlLmhhdmUgPSAwO1xuICAgICAgc3RhdGUubW9kZSA9IExFTkxFTlM7XG4gICAgICAvKiBmYWxscyB0aHJvdWdoICovXG4gICAgY2FzZSBMRU5MRU5TOlxuICAgICAgd2hpbGUgKHN0YXRlLmhhdmUgPCBzdGF0ZS5uY29kZSkge1xuICAgICAgICAvLz09PSBORUVEQklUUygzKTtcbiAgICAgICAgd2hpbGUgKGJpdHMgPCAzKSB7XG4gICAgICAgICAgaWYgKGhhdmUgPT09IDApIHsgYnJlYWsgaW5mX2xlYXZlOyB9XG4gICAgICAgICAgaGF2ZS0tO1xuICAgICAgICAgIGhvbGQgKz0gaW5wdXRbbmV4dCsrXSA8PCBiaXRzO1xuICAgICAgICAgIGJpdHMgKz0gODtcbiAgICAgICAgfVxuICAgICAgICAvLz09PS8vXG4gICAgICAgIHN0YXRlLmxlbnNbb3JkZXJbc3RhdGUuaGF2ZSsrXV0gPSAoaG9sZCAmIDB4MDcpOy8vQklUUygzKTtcbiAgICAgICAgLy8tLS0gRFJPUEJJVFMoMykgLS0tLy9cbiAgICAgICAgaG9sZCA+Pj49IDM7XG4gICAgICAgIGJpdHMgLT0gMztcbiAgICAgICAgLy8tLS0vL1xuICAgICAgfVxuICAgICAgd2hpbGUgKHN0YXRlLmhhdmUgPCAxOSkge1xuICAgICAgICBzdGF0ZS5sZW5zW29yZGVyW3N0YXRlLmhhdmUrK11dID0gMDtcbiAgICAgIH1cbiAgICAgIC8vIFdlIGhhdmUgc2VwYXJhdGUgdGFibGVzICYgbm8gcG9pbnRlcnMuIDIgY29tbWVudGVkIGxpbmVzIGJlbG93IG5vdCBuZWVkZWQuXG4gICAgICAvL3N0YXRlLm5leHQgPSBzdGF0ZS5jb2RlcztcbiAgICAgIC8vc3RhdGUubGVuY29kZSA9IHN0YXRlLm5leHQ7XG4gICAgICAvLyBTd2l0Y2ggdG8gdXNlIGR5bmFtaWMgdGFibGVcbiAgICAgIHN0YXRlLmxlbmNvZGUgPSBzdGF0ZS5sZW5keW47XG4gICAgICBzdGF0ZS5sZW5iaXRzID0gNztcblxuICAgICAgb3B0cyA9IHsgYml0czogc3RhdGUubGVuYml0cyB9O1xuICAgICAgcmV0ID0gaW5mbGF0ZV90YWJsZShDT0RFUywgc3RhdGUubGVucywgMCwgMTksIHN0YXRlLmxlbmNvZGUsIDAsIHN0YXRlLndvcmssIG9wdHMpO1xuICAgICAgc3RhdGUubGVuYml0cyA9IG9wdHMuYml0cztcblxuICAgICAgaWYgKHJldCkge1xuICAgICAgICBzdHJtLm1zZyA9ICdpbnZhbGlkIGNvZGUgbGVuZ3RocyBzZXQnO1xuICAgICAgICBzdGF0ZS5tb2RlID0gQkFEO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIC8vVHJhY2V2KChzdGRlcnIsIFwiaW5mbGF0ZTogICAgICAgY29kZSBsZW5ndGhzIG9rXFxuXCIpKTtcbiAgICAgIHN0YXRlLmhhdmUgPSAwO1xuICAgICAgc3RhdGUubW9kZSA9IENPREVMRU5TO1xuICAgICAgLyogZmFsbHMgdGhyb3VnaCAqL1xuICAgIGNhc2UgQ09ERUxFTlM6XG4gICAgICB3aGlsZSAoc3RhdGUuaGF2ZSA8IHN0YXRlLm5sZW4gKyBzdGF0ZS5uZGlzdCkge1xuICAgICAgICBmb3IgKDs7KSB7XG4gICAgICAgICAgaGVyZSA9IHN0YXRlLmxlbmNvZGVbaG9sZCAmICgoMSA8PCBzdGF0ZS5sZW5iaXRzKSAtIDEpXTsvKkJJVFMoc3RhdGUubGVuYml0cykqL1xuICAgICAgICAgIGhlcmVfYml0cyA9IGhlcmUgPj4+IDI0O1xuICAgICAgICAgIGhlcmVfb3AgPSAoaGVyZSA+Pj4gMTYpICYgMHhmZjtcbiAgICAgICAgICBoZXJlX3ZhbCA9IGhlcmUgJiAweGZmZmY7XG5cbiAgICAgICAgICBpZiAoKGhlcmVfYml0cykgPD0gYml0cykgeyBicmVhazsgfVxuICAgICAgICAgIC8vLS0tIFBVTExCWVRFKCkgLS0tLy9cbiAgICAgICAgICBpZiAoaGF2ZSA9PT0gMCkgeyBicmVhayBpbmZfbGVhdmU7IH1cbiAgICAgICAgICBoYXZlLS07XG4gICAgICAgICAgaG9sZCArPSBpbnB1dFtuZXh0KytdIDw8IGJpdHM7XG4gICAgICAgICAgYml0cyArPSA4O1xuICAgICAgICAgIC8vLS0tLy9cbiAgICAgICAgfVxuICAgICAgICBpZiAoaGVyZV92YWwgPCAxNikge1xuICAgICAgICAgIC8vLS0tIERST1BCSVRTKGhlcmUuYml0cykgLS0tLy9cbiAgICAgICAgICBob2xkID4+Pj0gaGVyZV9iaXRzO1xuICAgICAgICAgIGJpdHMgLT0gaGVyZV9iaXRzO1xuICAgICAgICAgIC8vLS0tLy9cbiAgICAgICAgICBzdGF0ZS5sZW5zW3N0YXRlLmhhdmUrK10gPSBoZXJlX3ZhbDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICBpZiAoaGVyZV92YWwgPT09IDE2KSB7XG4gICAgICAgICAgICAvLz09PSBORUVEQklUUyhoZXJlLmJpdHMgKyAyKTtcbiAgICAgICAgICAgIG4gPSBoZXJlX2JpdHMgKyAyO1xuICAgICAgICAgICAgd2hpbGUgKGJpdHMgPCBuKSB7XG4gICAgICAgICAgICAgIGlmIChoYXZlID09PSAwKSB7IGJyZWFrIGluZl9sZWF2ZTsgfVxuICAgICAgICAgICAgICBoYXZlLS07XG4gICAgICAgICAgICAgIGhvbGQgKz0gaW5wdXRbbmV4dCsrXSA8PCBiaXRzO1xuICAgICAgICAgICAgICBiaXRzICs9IDg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLz09PS8vXG4gICAgICAgICAgICAvLy0tLSBEUk9QQklUUyhoZXJlLmJpdHMpIC0tLS8vXG4gICAgICAgICAgICBob2xkID4+Pj0gaGVyZV9iaXRzO1xuICAgICAgICAgICAgYml0cyAtPSBoZXJlX2JpdHM7XG4gICAgICAgICAgICAvLy0tLS8vXG4gICAgICAgICAgICBpZiAoc3RhdGUuaGF2ZSA9PT0gMCkge1xuICAgICAgICAgICAgICBzdHJtLm1zZyA9ICdpbnZhbGlkIGJpdCBsZW5ndGggcmVwZWF0JztcbiAgICAgICAgICAgICAgc3RhdGUubW9kZSA9IEJBRDtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZW4gPSBzdGF0ZS5sZW5zW3N0YXRlLmhhdmUgLSAxXTtcbiAgICAgICAgICAgIGNvcHkgPSAzICsgKGhvbGQgJiAweDAzKTsvL0JJVFMoMik7XG4gICAgICAgICAgICAvLy0tLSBEUk9QQklUUygyKSAtLS0vL1xuICAgICAgICAgICAgaG9sZCA+Pj49IDI7XG4gICAgICAgICAgICBiaXRzIC09IDI7XG4gICAgICAgICAgICAvLy0tLS8vXG4gICAgICAgICAgfVxuICAgICAgICAgIGVsc2UgaWYgKGhlcmVfdmFsID09PSAxNykge1xuICAgICAgICAgICAgLy89PT0gTkVFREJJVFMoaGVyZS5iaXRzICsgMyk7XG4gICAgICAgICAgICBuID0gaGVyZV9iaXRzICsgMztcbiAgICAgICAgICAgIHdoaWxlIChiaXRzIDwgbikge1xuICAgICAgICAgICAgICBpZiAoaGF2ZSA9PT0gMCkgeyBicmVhayBpbmZfbGVhdmU7IH1cbiAgICAgICAgICAgICAgaGF2ZS0tO1xuICAgICAgICAgICAgICBob2xkICs9IGlucHV0W25leHQrK10gPDwgYml0cztcbiAgICAgICAgICAgICAgYml0cyArPSA4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy89PT0vL1xuICAgICAgICAgICAgLy8tLS0gRFJPUEJJVFMoaGVyZS5iaXRzKSAtLS0vL1xuICAgICAgICAgICAgaG9sZCA+Pj49IGhlcmVfYml0cztcbiAgICAgICAgICAgIGJpdHMgLT0gaGVyZV9iaXRzO1xuICAgICAgICAgICAgLy8tLS0vL1xuICAgICAgICAgICAgbGVuID0gMDtcbiAgICAgICAgICAgIGNvcHkgPSAzICsgKGhvbGQgJiAweDA3KTsvL0JJVFMoMyk7XG4gICAgICAgICAgICAvLy0tLSBEUk9QQklUUygzKSAtLS0vL1xuICAgICAgICAgICAgaG9sZCA+Pj49IDM7XG4gICAgICAgICAgICBiaXRzIC09IDM7XG4gICAgICAgICAgICAvLy0tLS8vXG4gICAgICAgICAgfVxuICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgLy89PT0gTkVFREJJVFMoaGVyZS5iaXRzICsgNyk7XG4gICAgICAgICAgICBuID0gaGVyZV9iaXRzICsgNztcbiAgICAgICAgICAgIHdoaWxlIChiaXRzIDwgbikge1xuICAgICAgICAgICAgICBpZiAoaGF2ZSA9PT0gMCkgeyBicmVhayBpbmZfbGVhdmU7IH1cbiAgICAgICAgICAgICAgaGF2ZS0tO1xuICAgICAgICAgICAgICBob2xkICs9IGlucHV0W25leHQrK10gPDwgYml0cztcbiAgICAgICAgICAgICAgYml0cyArPSA4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy89PT0vL1xuICAgICAgICAgICAgLy8tLS0gRFJPUEJJVFMoaGVyZS5iaXRzKSAtLS0vL1xuICAgICAgICAgICAgaG9sZCA+Pj49IGhlcmVfYml0cztcbiAgICAgICAgICAgIGJpdHMgLT0gaGVyZV9iaXRzO1xuICAgICAgICAgICAgLy8tLS0vL1xuICAgICAgICAgICAgbGVuID0gMDtcbiAgICAgICAgICAgIGNvcHkgPSAxMSArIChob2xkICYgMHg3Zik7Ly9CSVRTKDcpO1xuICAgICAgICAgICAgLy8tLS0gRFJPUEJJVFMoNykgLS0tLy9cbiAgICAgICAgICAgIGhvbGQgPj4+PSA3O1xuICAgICAgICAgICAgYml0cyAtPSA3O1xuICAgICAgICAgICAgLy8tLS0vL1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoc3RhdGUuaGF2ZSArIGNvcHkgPiBzdGF0ZS5ubGVuICsgc3RhdGUubmRpc3QpIHtcbiAgICAgICAgICAgIHN0cm0ubXNnID0gJ2ludmFsaWQgYml0IGxlbmd0aCByZXBlYXQnO1xuICAgICAgICAgICAgc3RhdGUubW9kZSA9IEJBRDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICB3aGlsZSAoY29weS0tKSB7XG4gICAgICAgICAgICBzdGF0ZS5sZW5zW3N0YXRlLmhhdmUrK10gPSBsZW47XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8qIGhhbmRsZSBlcnJvciBicmVha3MgaW4gd2hpbGUgKi9cbiAgICAgIGlmIChzdGF0ZS5tb2RlID09PSBCQUQpIHsgYnJlYWs7IH1cblxuICAgICAgLyogY2hlY2sgZm9yIGVuZC1vZi1ibG9jayBjb2RlIChiZXR0ZXIgaGF2ZSBvbmUpICovXG4gICAgICBpZiAoc3RhdGUubGVuc1syNTZdID09PSAwKSB7XG4gICAgICAgIHN0cm0ubXNnID0gJ2ludmFsaWQgY29kZSAtLSBtaXNzaW5nIGVuZC1vZi1ibG9jayc7XG4gICAgICAgIHN0YXRlLm1vZGUgPSBCQUQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICAvKiBidWlsZCBjb2RlIHRhYmxlcyAtLSBub3RlOiBkbyBub3QgY2hhbmdlIHRoZSBsZW5iaXRzIG9yIGRpc3RiaXRzXG4gICAgICAgICB2YWx1ZXMgaGVyZSAoOSBhbmQgNikgd2l0aG91dCByZWFkaW5nIHRoZSBjb21tZW50cyBpbiBpbmZ0cmVlcy5oXG4gICAgICAgICBjb25jZXJuaW5nIHRoZSBFTk9VR0ggY29uc3RhbnRzLCB3aGljaCBkZXBlbmQgb24gdGhvc2UgdmFsdWVzICovXG4gICAgICBzdGF0ZS5sZW5iaXRzID0gOTtcblxuICAgICAgb3B0cyA9IHsgYml0czogc3RhdGUubGVuYml0cyB9O1xuICAgICAgcmV0ID0gaW5mbGF0ZV90YWJsZShMRU5TLCBzdGF0ZS5sZW5zLCAwLCBzdGF0ZS5ubGVuLCBzdGF0ZS5sZW5jb2RlLCAwLCBzdGF0ZS53b3JrLCBvcHRzKTtcbiAgICAgIC8vIFdlIGhhdmUgc2VwYXJhdGUgdGFibGVzICYgbm8gcG9pbnRlcnMuIDIgY29tbWVudGVkIGxpbmVzIGJlbG93IG5vdCBuZWVkZWQuXG4gICAgICAvLyBzdGF0ZS5uZXh0X2luZGV4ID0gb3B0cy50YWJsZV9pbmRleDtcbiAgICAgIHN0YXRlLmxlbmJpdHMgPSBvcHRzLmJpdHM7XG4gICAgICAvLyBzdGF0ZS5sZW5jb2RlID0gc3RhdGUubmV4dDtcblxuICAgICAgaWYgKHJldCkge1xuICAgICAgICBzdHJtLm1zZyA9ICdpbnZhbGlkIGxpdGVyYWwvbGVuZ3RocyBzZXQnO1xuICAgICAgICBzdGF0ZS5tb2RlID0gQkFEO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgc3RhdGUuZGlzdGJpdHMgPSA2O1xuICAgICAgLy9zdGF0ZS5kaXN0Y29kZS5jb3B5KHN0YXRlLmNvZGVzKTtcbiAgICAgIC8vIFN3aXRjaCB0byB1c2UgZHluYW1pYyB0YWJsZVxuICAgICAgc3RhdGUuZGlzdGNvZGUgPSBzdGF0ZS5kaXN0ZHluO1xuICAgICAgb3B0cyA9IHsgYml0czogc3RhdGUuZGlzdGJpdHMgfTtcbiAgICAgIHJldCA9IGluZmxhdGVfdGFibGUoRElTVFMsIHN0YXRlLmxlbnMsIHN0YXRlLm5sZW4sIHN0YXRlLm5kaXN0LCBzdGF0ZS5kaXN0Y29kZSwgMCwgc3RhdGUud29yaywgb3B0cyk7XG4gICAgICAvLyBXZSBoYXZlIHNlcGFyYXRlIHRhYmxlcyAmIG5vIHBvaW50ZXJzLiAyIGNvbW1lbnRlZCBsaW5lcyBiZWxvdyBub3QgbmVlZGVkLlxuICAgICAgLy8gc3RhdGUubmV4dF9pbmRleCA9IG9wdHMudGFibGVfaW5kZXg7XG4gICAgICBzdGF0ZS5kaXN0Yml0cyA9IG9wdHMuYml0cztcbiAgICAgIC8vIHN0YXRlLmRpc3Rjb2RlID0gc3RhdGUubmV4dDtcblxuICAgICAgaWYgKHJldCkge1xuICAgICAgICBzdHJtLm1zZyA9ICdpbnZhbGlkIGRpc3RhbmNlcyBzZXQnO1xuICAgICAgICBzdGF0ZS5tb2RlID0gQkFEO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIC8vVHJhY2V2KChzdGRlcnIsICdpbmZsYXRlOiAgICAgICBjb2RlcyBva1xcbicpKTtcbiAgICAgIHN0YXRlLm1vZGUgPSBMRU5fO1xuICAgICAgaWYgKGZsdXNoID09PSBaX1RSRUVTKSB7IGJyZWFrIGluZl9sZWF2ZTsgfVxuICAgICAgLyogZmFsbHMgdGhyb3VnaCAqL1xuICAgIGNhc2UgTEVOXzpcbiAgICAgIHN0YXRlLm1vZGUgPSBMRU47XG4gICAgICAvKiBmYWxscyB0aHJvdWdoICovXG4gICAgY2FzZSBMRU46XG4gICAgICBpZiAoaGF2ZSA+PSA2ICYmIGxlZnQgPj0gMjU4KSB7XG4gICAgICAgIC8vLS0tIFJFU1RPUkUoKSAtLS1cbiAgICAgICAgc3RybS5uZXh0X291dCA9IHB1dDtcbiAgICAgICAgc3RybS5hdmFpbF9vdXQgPSBsZWZ0O1xuICAgICAgICBzdHJtLm5leHRfaW4gPSBuZXh0O1xuICAgICAgICBzdHJtLmF2YWlsX2luID0gaGF2ZTtcbiAgICAgICAgc3RhdGUuaG9sZCA9IGhvbGQ7XG4gICAgICAgIHN0YXRlLmJpdHMgPSBiaXRzO1xuICAgICAgICAvLy0tLVxuICAgICAgICBpbmZsYXRlX2Zhc3Qoc3RybSwgX291dCk7XG4gICAgICAgIC8vLS0tIExPQUQoKSAtLS1cbiAgICAgICAgcHV0ID0gc3RybS5uZXh0X291dDtcbiAgICAgICAgb3V0cHV0ID0gc3RybS5vdXRwdXQ7XG4gICAgICAgIGxlZnQgPSBzdHJtLmF2YWlsX291dDtcbiAgICAgICAgbmV4dCA9IHN0cm0ubmV4dF9pbjtcbiAgICAgICAgaW5wdXQgPSBzdHJtLmlucHV0O1xuICAgICAgICBoYXZlID0gc3RybS5hdmFpbF9pbjtcbiAgICAgICAgaG9sZCA9IHN0YXRlLmhvbGQ7XG4gICAgICAgIGJpdHMgPSBzdGF0ZS5iaXRzO1xuICAgICAgICAvLy0tLVxuXG4gICAgICAgIGlmIChzdGF0ZS5tb2RlID09PSBUWVBFKSB7XG4gICAgICAgICAgc3RhdGUuYmFjayA9IC0xO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgc3RhdGUuYmFjayA9IDA7XG4gICAgICBmb3IgKDs7KSB7XG4gICAgICAgIGhlcmUgPSBzdGF0ZS5sZW5jb2RlW2hvbGQgJiAoKDEgPDwgc3RhdGUubGVuYml0cykgLSAxKV07ICAvKkJJVFMoc3RhdGUubGVuYml0cykqL1xuICAgICAgICBoZXJlX2JpdHMgPSBoZXJlID4+PiAyNDtcbiAgICAgICAgaGVyZV9vcCA9IChoZXJlID4+PiAxNikgJiAweGZmO1xuICAgICAgICBoZXJlX3ZhbCA9IGhlcmUgJiAweGZmZmY7XG5cbiAgICAgICAgaWYgKGhlcmVfYml0cyA8PSBiaXRzKSB7IGJyZWFrOyB9XG4gICAgICAgIC8vLS0tIFBVTExCWVRFKCkgLS0tLy9cbiAgICAgICAgaWYgKGhhdmUgPT09IDApIHsgYnJlYWsgaW5mX2xlYXZlOyB9XG4gICAgICAgIGhhdmUtLTtcbiAgICAgICAgaG9sZCArPSBpbnB1dFtuZXh0KytdIDw8IGJpdHM7XG4gICAgICAgIGJpdHMgKz0gODtcbiAgICAgICAgLy8tLS0vL1xuICAgICAgfVxuICAgICAgaWYgKGhlcmVfb3AgJiYgKGhlcmVfb3AgJiAweGYwKSA9PT0gMCkge1xuICAgICAgICBsYXN0X2JpdHMgPSBoZXJlX2JpdHM7XG4gICAgICAgIGxhc3Rfb3AgPSBoZXJlX29wO1xuICAgICAgICBsYXN0X3ZhbCA9IGhlcmVfdmFsO1xuICAgICAgICBmb3IgKDs7KSB7XG4gICAgICAgICAgaGVyZSA9IHN0YXRlLmxlbmNvZGVbbGFzdF92YWwgK1xuICAgICAgICAgICAgICAgICAgKChob2xkICYgKCgxIDw8IChsYXN0X2JpdHMgKyBsYXN0X29wKSkgLSAxKSkvKkJJVFMobGFzdC5iaXRzICsgbGFzdC5vcCkqLyA+PiBsYXN0X2JpdHMpXTtcbiAgICAgICAgICBoZXJlX2JpdHMgPSBoZXJlID4+PiAyNDtcbiAgICAgICAgICBoZXJlX29wID0gKGhlcmUgPj4+IDE2KSAmIDB4ZmY7XG4gICAgICAgICAgaGVyZV92YWwgPSBoZXJlICYgMHhmZmZmO1xuXG4gICAgICAgICAgaWYgKChsYXN0X2JpdHMgKyBoZXJlX2JpdHMpIDw9IGJpdHMpIHsgYnJlYWs7IH1cbiAgICAgICAgICAvLy0tLSBQVUxMQllURSgpIC0tLS8vXG4gICAgICAgICAgaWYgKGhhdmUgPT09IDApIHsgYnJlYWsgaW5mX2xlYXZlOyB9XG4gICAgICAgICAgaGF2ZS0tO1xuICAgICAgICAgIGhvbGQgKz0gaW5wdXRbbmV4dCsrXSA8PCBiaXRzO1xuICAgICAgICAgIGJpdHMgKz0gODtcbiAgICAgICAgICAvLy0tLS8vXG4gICAgICAgIH1cbiAgICAgICAgLy8tLS0gRFJPUEJJVFMobGFzdC5iaXRzKSAtLS0vL1xuICAgICAgICBob2xkID4+Pj0gbGFzdF9iaXRzO1xuICAgICAgICBiaXRzIC09IGxhc3RfYml0cztcbiAgICAgICAgLy8tLS0vL1xuICAgICAgICBzdGF0ZS5iYWNrICs9IGxhc3RfYml0cztcbiAgICAgIH1cbiAgICAgIC8vLS0tIERST1BCSVRTKGhlcmUuYml0cykgLS0tLy9cbiAgICAgIGhvbGQgPj4+PSBoZXJlX2JpdHM7XG4gICAgICBiaXRzIC09IGhlcmVfYml0cztcbiAgICAgIC8vLS0tLy9cbiAgICAgIHN0YXRlLmJhY2sgKz0gaGVyZV9iaXRzO1xuICAgICAgc3RhdGUubGVuZ3RoID0gaGVyZV92YWw7XG4gICAgICBpZiAoaGVyZV9vcCA9PT0gMCkge1xuICAgICAgICAvL1RyYWNldnYoKHN0ZGVyciwgaGVyZS52YWwgPj0gMHgyMCAmJiBoZXJlLnZhbCA8IDB4N2YgP1xuICAgICAgICAvLyAgICAgICAgXCJpbmZsYXRlOiAgICAgICAgIGxpdGVyYWwgJyVjJ1xcblwiIDpcbiAgICAgICAgLy8gICAgICAgIFwiaW5mbGF0ZTogICAgICAgICBsaXRlcmFsIDB4JTAyeFxcblwiLCBoZXJlLnZhbCkpO1xuICAgICAgICBzdGF0ZS5tb2RlID0gTElUO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGlmIChoZXJlX29wICYgMzIpIHtcbiAgICAgICAgLy9UcmFjZXZ2KChzdGRlcnIsIFwiaW5mbGF0ZTogICAgICAgICBlbmQgb2YgYmxvY2tcXG5cIikpO1xuICAgICAgICBzdGF0ZS5iYWNrID0gLTE7XG4gICAgICAgIHN0YXRlLm1vZGUgPSBUWVBFO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGlmIChoZXJlX29wICYgNjQpIHtcbiAgICAgICAgc3RybS5tc2cgPSAnaW52YWxpZCBsaXRlcmFsL2xlbmd0aCBjb2RlJztcbiAgICAgICAgc3RhdGUubW9kZSA9IEJBRDtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBzdGF0ZS5leHRyYSA9IGhlcmVfb3AgJiAxNTtcbiAgICAgIHN0YXRlLm1vZGUgPSBMRU5FWFQ7XG4gICAgICAvKiBmYWxscyB0aHJvdWdoICovXG4gICAgY2FzZSBMRU5FWFQ6XG4gICAgICBpZiAoc3RhdGUuZXh0cmEpIHtcbiAgICAgICAgLy89PT0gTkVFREJJVFMoc3RhdGUuZXh0cmEpO1xuICAgICAgICBuID0gc3RhdGUuZXh0cmE7XG4gICAgICAgIHdoaWxlIChiaXRzIDwgbikge1xuICAgICAgICAgIGlmIChoYXZlID09PSAwKSB7IGJyZWFrIGluZl9sZWF2ZTsgfVxuICAgICAgICAgIGhhdmUtLTtcbiAgICAgICAgICBob2xkICs9IGlucHV0W25leHQrK10gPDwgYml0cztcbiAgICAgICAgICBiaXRzICs9IDg7XG4gICAgICAgIH1cbiAgICAgICAgLy89PT0vL1xuICAgICAgICBzdGF0ZS5sZW5ndGggKz0gaG9sZCAmICgoMSA8PCBzdGF0ZS5leHRyYSkgLSAxKS8qQklUUyhzdGF0ZS5leHRyYSkqLztcbiAgICAgICAgLy8tLS0gRFJPUEJJVFMoc3RhdGUuZXh0cmEpIC0tLS8vXG4gICAgICAgIGhvbGQgPj4+PSBzdGF0ZS5leHRyYTtcbiAgICAgICAgYml0cyAtPSBzdGF0ZS5leHRyYTtcbiAgICAgICAgLy8tLS0vL1xuICAgICAgICBzdGF0ZS5iYWNrICs9IHN0YXRlLmV4dHJhO1xuICAgICAgfVxuICAgICAgLy9UcmFjZXZ2KChzdGRlcnIsIFwiaW5mbGF0ZTogICAgICAgICBsZW5ndGggJXVcXG5cIiwgc3RhdGUubGVuZ3RoKSk7XG4gICAgICBzdGF0ZS53YXMgPSBzdGF0ZS5sZW5ndGg7XG4gICAgICBzdGF0ZS5tb2RlID0gRElTVDtcbiAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi9cbiAgICBjYXNlIERJU1Q6XG4gICAgICBmb3IgKDs7KSB7XG4gICAgICAgIGhlcmUgPSBzdGF0ZS5kaXN0Y29kZVtob2xkICYgKCgxIDw8IHN0YXRlLmRpc3RiaXRzKSAtIDEpXTsvKkJJVFMoc3RhdGUuZGlzdGJpdHMpKi9cbiAgICAgICAgaGVyZV9iaXRzID0gaGVyZSA+Pj4gMjQ7XG4gICAgICAgIGhlcmVfb3AgPSAoaGVyZSA+Pj4gMTYpICYgMHhmZjtcbiAgICAgICAgaGVyZV92YWwgPSBoZXJlICYgMHhmZmZmO1xuXG4gICAgICAgIGlmICgoaGVyZV9iaXRzKSA8PSBiaXRzKSB7IGJyZWFrOyB9XG4gICAgICAgIC8vLS0tIFBVTExCWVRFKCkgLS0tLy9cbiAgICAgICAgaWYgKGhhdmUgPT09IDApIHsgYnJlYWsgaW5mX2xlYXZlOyB9XG4gICAgICAgIGhhdmUtLTtcbiAgICAgICAgaG9sZCArPSBpbnB1dFtuZXh0KytdIDw8IGJpdHM7XG4gICAgICAgIGJpdHMgKz0gODtcbiAgICAgICAgLy8tLS0vL1xuICAgICAgfVxuICAgICAgaWYgKChoZXJlX29wICYgMHhmMCkgPT09IDApIHtcbiAgICAgICAgbGFzdF9iaXRzID0gaGVyZV9iaXRzO1xuICAgICAgICBsYXN0X29wID0gaGVyZV9vcDtcbiAgICAgICAgbGFzdF92YWwgPSBoZXJlX3ZhbDtcbiAgICAgICAgZm9yICg7Oykge1xuICAgICAgICAgIGhlcmUgPSBzdGF0ZS5kaXN0Y29kZVtsYXN0X3ZhbCArXG4gICAgICAgICAgICAgICAgICAoKGhvbGQgJiAoKDEgPDwgKGxhc3RfYml0cyArIGxhc3Rfb3ApKSAtIDEpKS8qQklUUyhsYXN0LmJpdHMgKyBsYXN0Lm9wKSovID4+IGxhc3RfYml0cyldO1xuICAgICAgICAgIGhlcmVfYml0cyA9IGhlcmUgPj4+IDI0O1xuICAgICAgICAgIGhlcmVfb3AgPSAoaGVyZSA+Pj4gMTYpICYgMHhmZjtcbiAgICAgICAgICBoZXJlX3ZhbCA9IGhlcmUgJiAweGZmZmY7XG5cbiAgICAgICAgICBpZiAoKGxhc3RfYml0cyArIGhlcmVfYml0cykgPD0gYml0cykgeyBicmVhazsgfVxuICAgICAgICAgIC8vLS0tIFBVTExCWVRFKCkgLS0tLy9cbiAgICAgICAgICBpZiAoaGF2ZSA9PT0gMCkgeyBicmVhayBpbmZfbGVhdmU7IH1cbiAgICAgICAgICBoYXZlLS07XG4gICAgICAgICAgaG9sZCArPSBpbnB1dFtuZXh0KytdIDw8IGJpdHM7XG4gICAgICAgICAgYml0cyArPSA4O1xuICAgICAgICAgIC8vLS0tLy9cbiAgICAgICAgfVxuICAgICAgICAvLy0tLSBEUk9QQklUUyhsYXN0LmJpdHMpIC0tLS8vXG4gICAgICAgIGhvbGQgPj4+PSBsYXN0X2JpdHM7XG4gICAgICAgIGJpdHMgLT0gbGFzdF9iaXRzO1xuICAgICAgICAvLy0tLS8vXG4gICAgICAgIHN0YXRlLmJhY2sgKz0gbGFzdF9iaXRzO1xuICAgICAgfVxuICAgICAgLy8tLS0gRFJPUEJJVFMoaGVyZS5iaXRzKSAtLS0vL1xuICAgICAgaG9sZCA+Pj49IGhlcmVfYml0cztcbiAgICAgIGJpdHMgLT0gaGVyZV9iaXRzO1xuICAgICAgLy8tLS0vL1xuICAgICAgc3RhdGUuYmFjayArPSBoZXJlX2JpdHM7XG4gICAgICBpZiAoaGVyZV9vcCAmIDY0KSB7XG4gICAgICAgIHN0cm0ubXNnID0gJ2ludmFsaWQgZGlzdGFuY2UgY29kZSc7XG4gICAgICAgIHN0YXRlLm1vZGUgPSBCQUQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgc3RhdGUub2Zmc2V0ID0gaGVyZV92YWw7XG4gICAgICBzdGF0ZS5leHRyYSA9IChoZXJlX29wKSAmIDE1O1xuICAgICAgc3RhdGUubW9kZSA9IERJU1RFWFQ7XG4gICAgICAvKiBmYWxscyB0aHJvdWdoICovXG4gICAgY2FzZSBESVNURVhUOlxuICAgICAgaWYgKHN0YXRlLmV4dHJhKSB7XG4gICAgICAgIC8vPT09IE5FRURCSVRTKHN0YXRlLmV4dHJhKTtcbiAgICAgICAgbiA9IHN0YXRlLmV4dHJhO1xuICAgICAgICB3aGlsZSAoYml0cyA8IG4pIHtcbiAgICAgICAgICBpZiAoaGF2ZSA9PT0gMCkgeyBicmVhayBpbmZfbGVhdmU7IH1cbiAgICAgICAgICBoYXZlLS07XG4gICAgICAgICAgaG9sZCArPSBpbnB1dFtuZXh0KytdIDw8IGJpdHM7XG4gICAgICAgICAgYml0cyArPSA4O1xuICAgICAgICB9XG4gICAgICAgIC8vPT09Ly9cbiAgICAgICAgc3RhdGUub2Zmc2V0ICs9IGhvbGQgJiAoKDEgPDwgc3RhdGUuZXh0cmEpIC0gMSkvKkJJVFMoc3RhdGUuZXh0cmEpKi87XG4gICAgICAgIC8vLS0tIERST1BCSVRTKHN0YXRlLmV4dHJhKSAtLS0vL1xuICAgICAgICBob2xkID4+Pj0gc3RhdGUuZXh0cmE7XG4gICAgICAgIGJpdHMgLT0gc3RhdGUuZXh0cmE7XG4gICAgICAgIC8vLS0tLy9cbiAgICAgICAgc3RhdGUuYmFjayArPSBzdGF0ZS5leHRyYTtcbiAgICAgIH1cbi8vI2lmZGVmIElORkxBVEVfU1RSSUNUXG4gICAgICBpZiAoc3RhdGUub2Zmc2V0ID4gc3RhdGUuZG1heCkge1xuICAgICAgICBzdHJtLm1zZyA9ICdpbnZhbGlkIGRpc3RhbmNlIHRvbyBmYXIgYmFjayc7XG4gICAgICAgIHN0YXRlLm1vZGUgPSBCQUQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuLy8jZW5kaWZcbiAgICAgIC8vVHJhY2V2digoc3RkZXJyLCBcImluZmxhdGU6ICAgICAgICAgZGlzdGFuY2UgJXVcXG5cIiwgc3RhdGUub2Zmc2V0KSk7XG4gICAgICBzdGF0ZS5tb2RlID0gTUFUQ0g7XG4gICAgICAvKiBmYWxscyB0aHJvdWdoICovXG4gICAgY2FzZSBNQVRDSDpcbiAgICAgIGlmIChsZWZ0ID09PSAwKSB7IGJyZWFrIGluZl9sZWF2ZTsgfVxuICAgICAgY29weSA9IF9vdXQgLSBsZWZ0O1xuICAgICAgaWYgKHN0YXRlLm9mZnNldCA+IGNvcHkpIHsgICAgICAgICAvKiBjb3B5IGZyb20gd2luZG93ICovXG4gICAgICAgIGNvcHkgPSBzdGF0ZS5vZmZzZXQgLSBjb3B5O1xuICAgICAgICBpZiAoY29weSA+IHN0YXRlLndoYXZlKSB7XG4gICAgICAgICAgaWYgKHN0YXRlLnNhbmUpIHtcbiAgICAgICAgICAgIHN0cm0ubXNnID0gJ2ludmFsaWQgZGlzdGFuY2UgdG9vIGZhciBiYWNrJztcbiAgICAgICAgICAgIHN0YXRlLm1vZGUgPSBCQUQ7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4vLyAoISkgVGhpcyBibG9jayBpcyBkaXNhYmxlZCBpbiB6bGliIGRlZmFpbHRzLFxuLy8gZG9uJ3QgZW5hYmxlIGl0IGZvciBiaW5hcnkgY29tcGF0aWJpbGl0eVxuLy8jaWZkZWYgSU5GTEFURV9BTExPV19JTlZBTElEX0RJU1RBTkNFX1RPT0ZBUl9BUlJSXG4vLyAgICAgICAgICBUcmFjZSgoc3RkZXJyLCBcImluZmxhdGUuYyB0b28gZmFyXFxuXCIpKTtcbi8vICAgICAgICAgIGNvcHkgLT0gc3RhdGUud2hhdmU7XG4vLyAgICAgICAgICBpZiAoY29weSA+IHN0YXRlLmxlbmd0aCkgeyBjb3B5ID0gc3RhdGUubGVuZ3RoOyB9XG4vLyAgICAgICAgICBpZiAoY29weSA+IGxlZnQpIHsgY29weSA9IGxlZnQ7IH1cbi8vICAgICAgICAgIGxlZnQgLT0gY29weTtcbi8vICAgICAgICAgIHN0YXRlLmxlbmd0aCAtPSBjb3B5O1xuLy8gICAgICAgICAgZG8ge1xuLy8gICAgICAgICAgICBvdXRwdXRbcHV0KytdID0gMDtcbi8vICAgICAgICAgIH0gd2hpbGUgKC0tY29weSk7XG4vLyAgICAgICAgICBpZiAoc3RhdGUubGVuZ3RoID09PSAwKSB7IHN0YXRlLm1vZGUgPSBMRU47IH1cbi8vICAgICAgICAgIGJyZWFrO1xuLy8jZW5kaWZcbiAgICAgICAgfVxuICAgICAgICBpZiAoY29weSA+IHN0YXRlLnduZXh0KSB7XG4gICAgICAgICAgY29weSAtPSBzdGF0ZS53bmV4dDtcbiAgICAgICAgICBmcm9tID0gc3RhdGUud3NpemUgLSBjb3B5O1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIGZyb20gPSBzdGF0ZS53bmV4dCAtIGNvcHk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNvcHkgPiBzdGF0ZS5sZW5ndGgpIHsgY29weSA9IHN0YXRlLmxlbmd0aDsgfVxuICAgICAgICBmcm9tX3NvdXJjZSA9IHN0YXRlLndpbmRvdztcbiAgICAgIH1cbiAgICAgIGVsc2UgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGNvcHkgZnJvbSBvdXRwdXQgKi9cbiAgICAgICAgZnJvbV9zb3VyY2UgPSBvdXRwdXQ7XG4gICAgICAgIGZyb20gPSBwdXQgLSBzdGF0ZS5vZmZzZXQ7XG4gICAgICAgIGNvcHkgPSBzdGF0ZS5sZW5ndGg7XG4gICAgICB9XG4gICAgICBpZiAoY29weSA+IGxlZnQpIHsgY29weSA9IGxlZnQ7IH1cbiAgICAgIGxlZnQgLT0gY29weTtcbiAgICAgIHN0YXRlLmxlbmd0aCAtPSBjb3B5O1xuICAgICAgZG8ge1xuICAgICAgICBvdXRwdXRbcHV0KytdID0gZnJvbV9zb3VyY2VbZnJvbSsrXTtcbiAgICAgIH0gd2hpbGUgKC0tY29weSk7XG4gICAgICBpZiAoc3RhdGUubGVuZ3RoID09PSAwKSB7IHN0YXRlLm1vZGUgPSBMRU47IH1cbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgTElUOlxuICAgICAgaWYgKGxlZnQgPT09IDApIHsgYnJlYWsgaW5mX2xlYXZlOyB9XG4gICAgICBvdXRwdXRbcHV0KytdID0gc3RhdGUubGVuZ3RoO1xuICAgICAgbGVmdC0tO1xuICAgICAgc3RhdGUubW9kZSA9IExFTjtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgQ0hFQ0s6XG4gICAgICBpZiAoc3RhdGUud3JhcCkge1xuICAgICAgICAvLz09PSBORUVEQklUUygzMik7XG4gICAgICAgIHdoaWxlIChiaXRzIDwgMzIpIHtcbiAgICAgICAgICBpZiAoaGF2ZSA9PT0gMCkgeyBicmVhayBpbmZfbGVhdmU7IH1cbiAgICAgICAgICBoYXZlLS07XG4gICAgICAgICAgLy8gVXNlICd8JyBpbnNkZWFkIG9mICcrJyB0byBtYWtlIHN1cmUgdGhhdCByZXN1bHQgaXMgc2lnbmVkXG4gICAgICAgICAgaG9sZCB8PSBpbnB1dFtuZXh0KytdIDw8IGJpdHM7XG4gICAgICAgICAgYml0cyArPSA4O1xuICAgICAgICB9XG4gICAgICAgIC8vPT09Ly9cbiAgICAgICAgX291dCAtPSBsZWZ0O1xuICAgICAgICBzdHJtLnRvdGFsX291dCArPSBfb3V0O1xuICAgICAgICBzdGF0ZS50b3RhbCArPSBfb3V0O1xuICAgICAgICBpZiAoX291dCkge1xuICAgICAgICAgIHN0cm0uYWRsZXIgPSBzdGF0ZS5jaGVjayA9XG4gICAgICAgICAgICAgIC8qVVBEQVRFKHN0YXRlLmNoZWNrLCBwdXQgLSBfb3V0LCBfb3V0KTsqL1xuICAgICAgICAgICAgICAoc3RhdGUuZmxhZ3MgPyBjcmMzMihzdGF0ZS5jaGVjaywgb3V0cHV0LCBfb3V0LCBwdXQgLSBfb3V0KSA6IGFkbGVyMzIoc3RhdGUuY2hlY2ssIG91dHB1dCwgX291dCwgcHV0IC0gX291dCkpO1xuXG4gICAgICAgIH1cbiAgICAgICAgX291dCA9IGxlZnQ7XG4gICAgICAgIC8vIE5COiBjcmMzMiBzdG9yZWQgYXMgc2lnbmVkIDMyLWJpdCBpbnQsIHpzd2FwMzIgcmV0dXJucyBzaWduZWQgdG9vXG4gICAgICAgIGlmICgoc3RhdGUuZmxhZ3MgPyBob2xkIDogenN3YXAzMihob2xkKSkgIT09IHN0YXRlLmNoZWNrKSB7XG4gICAgICAgICAgc3RybS5tc2cgPSAnaW5jb3JyZWN0IGRhdGEgY2hlY2snO1xuICAgICAgICAgIHN0YXRlLm1vZGUgPSBCQUQ7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgLy89PT0gSU5JVEJJVFMoKTtcbiAgICAgICAgaG9sZCA9IDA7XG4gICAgICAgIGJpdHMgPSAwO1xuICAgICAgICAvLz09PS8vXG4gICAgICAgIC8vVHJhY2V2KChzdGRlcnIsIFwiaW5mbGF0ZTogICBjaGVjayBtYXRjaGVzIHRyYWlsZXJcXG5cIikpO1xuICAgICAgfVxuICAgICAgc3RhdGUubW9kZSA9IExFTkdUSDtcbiAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi9cbiAgICBjYXNlIExFTkdUSDpcbiAgICAgIGlmIChzdGF0ZS53cmFwICYmIHN0YXRlLmZsYWdzKSB7XG4gICAgICAgIC8vPT09IE5FRURCSVRTKDMyKTtcbiAgICAgICAgd2hpbGUgKGJpdHMgPCAzMikge1xuICAgICAgICAgIGlmIChoYXZlID09PSAwKSB7IGJyZWFrIGluZl9sZWF2ZTsgfVxuICAgICAgICAgIGhhdmUtLTtcbiAgICAgICAgICBob2xkICs9IGlucHV0W25leHQrK10gPDwgYml0cztcbiAgICAgICAgICBiaXRzICs9IDg7XG4gICAgICAgIH1cbiAgICAgICAgLy89PT0vL1xuICAgICAgICBpZiAoaG9sZCAhPT0gKHN0YXRlLnRvdGFsICYgMHhmZmZmZmZmZikpIHtcbiAgICAgICAgICBzdHJtLm1zZyA9ICdpbmNvcnJlY3QgbGVuZ3RoIGNoZWNrJztcbiAgICAgICAgICBzdGF0ZS5tb2RlID0gQkFEO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIC8vPT09IElOSVRCSVRTKCk7XG4gICAgICAgIGhvbGQgPSAwO1xuICAgICAgICBiaXRzID0gMDtcbiAgICAgICAgLy89PT0vL1xuICAgICAgICAvL1RyYWNldigoc3RkZXJyLCBcImluZmxhdGU6ICAgbGVuZ3RoIG1hdGNoZXMgdHJhaWxlclxcblwiKSk7XG4gICAgICB9XG4gICAgICBzdGF0ZS5tb2RlID0gRE9ORTtcbiAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi9cbiAgICBjYXNlIERPTkU6XG4gICAgICByZXQgPSBaX1NUUkVBTV9FTkQ7XG4gICAgICBicmVhayBpbmZfbGVhdmU7XG4gICAgY2FzZSBCQUQ6XG4gICAgICByZXQgPSBaX0RBVEFfRVJST1I7XG4gICAgICBicmVhayBpbmZfbGVhdmU7XG4gICAgY2FzZSBNRU06XG4gICAgICByZXR1cm4gWl9NRU1fRVJST1I7XG4gICAgY2FzZSBTWU5DOlxuICAgICAgLyogZmFsbHMgdGhyb3VnaCAqL1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gWl9TVFJFQU1fRVJST1I7XG4gICAgfVxuICB9XG5cbiAgLy8gaW5mX2xlYXZlIDwtIGhlcmUgaXMgcmVhbCBwbGFjZSBmb3IgXCJnb3RvIGluZl9sZWF2ZVwiLCBlbXVsYXRlZCB2aWEgXCJicmVhayBpbmZfbGVhdmVcIlxuXG4gIC8qXG4gICAgIFJldHVybiBmcm9tIGluZmxhdGUoKSwgdXBkYXRpbmcgdGhlIHRvdGFsIGNvdW50cyBhbmQgdGhlIGNoZWNrIHZhbHVlLlxuICAgICBJZiB0aGVyZSB3YXMgbm8gcHJvZ3Jlc3MgZHVyaW5nIHRoZSBpbmZsYXRlKCkgY2FsbCwgcmV0dXJuIGEgYnVmZmVyXG4gICAgIGVycm9yLiAgQ2FsbCB1cGRhdGV3aW5kb3coKSB0byBjcmVhdGUgYW5kL29yIHVwZGF0ZSB0aGUgd2luZG93IHN0YXRlLlxuICAgICBOb3RlOiBhIG1lbW9yeSBlcnJvciBmcm9tIGluZmxhdGUoKSBpcyBub24tcmVjb3ZlcmFibGUuXG4gICAqL1xuXG4gIC8vLS0tIFJFU1RPUkUoKSAtLS1cbiAgc3RybS5uZXh0X291dCA9IHB1dDtcbiAgc3RybS5hdmFpbF9vdXQgPSBsZWZ0O1xuICBzdHJtLm5leHRfaW4gPSBuZXh0O1xuICBzdHJtLmF2YWlsX2luID0gaGF2ZTtcbiAgc3RhdGUuaG9sZCA9IGhvbGQ7XG4gIHN0YXRlLmJpdHMgPSBiaXRzO1xuICAvLy0tLVxuXG4gIGlmIChzdGF0ZS53c2l6ZSB8fCAoX291dCAhPT0gc3RybS5hdmFpbF9vdXQgJiYgc3RhdGUubW9kZSA8IEJBRCAmJlxuICAgICAgICAgICAgICAgICAgICAgIChzdGF0ZS5tb2RlIDwgQ0hFQ0sgfHwgZmx1c2ggIT09IFpfRklOSVNIKSkpIHtcbiAgICBpZiAodXBkYXRld2luZG93KHN0cm0sIHN0cm0ub3V0cHV0LCBzdHJtLm5leHRfb3V0LCBfb3V0IC0gc3RybS5hdmFpbF9vdXQpKSB7XG4gICAgICBzdGF0ZS5tb2RlID0gTUVNO1xuICAgICAgcmV0dXJuIFpfTUVNX0VSUk9SO1xuICAgIH1cbiAgfVxuICBfaW4gLT0gc3RybS5hdmFpbF9pbjtcbiAgX291dCAtPSBzdHJtLmF2YWlsX291dDtcbiAgc3RybS50b3RhbF9pbiArPSBfaW47XG4gIHN0cm0udG90YWxfb3V0ICs9IF9vdXQ7XG4gIHN0YXRlLnRvdGFsICs9IF9vdXQ7XG4gIGlmIChzdGF0ZS53cmFwICYmIF9vdXQpIHtcbiAgICBzdHJtLmFkbGVyID0gc3RhdGUuY2hlY2sgPSAvKlVQREFURShzdGF0ZS5jaGVjaywgc3RybS5uZXh0X291dCAtIF9vdXQsIF9vdXQpOyovXG4gICAgICAoc3RhdGUuZmxhZ3MgPyBjcmMzMihzdGF0ZS5jaGVjaywgb3V0cHV0LCBfb3V0LCBzdHJtLm5leHRfb3V0IC0gX291dCkgOiBhZGxlcjMyKHN0YXRlLmNoZWNrLCBvdXRwdXQsIF9vdXQsIHN0cm0ubmV4dF9vdXQgLSBfb3V0KSk7XG4gIH1cbiAgc3RybS5kYXRhX3R5cGUgPSBzdGF0ZS5iaXRzICsgKHN0YXRlLmxhc3QgPyA2NCA6IDApICtcbiAgICAgICAgICAgICAgICAgICAgKHN0YXRlLm1vZGUgPT09IFRZUEUgPyAxMjggOiAwKSArXG4gICAgICAgICAgICAgICAgICAgIChzdGF0ZS5tb2RlID09PSBMRU5fIHx8IHN0YXRlLm1vZGUgPT09IENPUFlfID8gMjU2IDogMCk7XG4gIGlmICgoKF9pbiA9PT0gMCAmJiBfb3V0ID09PSAwKSB8fCBmbHVzaCA9PT0gWl9GSU5JU0gpICYmIHJldCA9PT0gWl9PSykge1xuICAgIHJldCA9IFpfQlVGX0VSUk9SO1xuICB9XG4gIHJldHVybiByZXQ7XG59XG5cbmZ1bmN0aW9uIGluZmxhdGVFbmQoc3RybSkge1xuXG4gIGlmICghc3RybSB8fCAhc3RybS5zdGF0ZSAvKnx8IHN0cm0tPnpmcmVlID09IChmcmVlX2Z1bmMpMCovKSB7XG4gICAgcmV0dXJuIFpfU1RSRUFNX0VSUk9SO1xuICB9XG5cbiAgdmFyIHN0YXRlID0gc3RybS5zdGF0ZTtcbiAgaWYgKHN0YXRlLndpbmRvdykge1xuICAgIHN0YXRlLndpbmRvdyA9IG51bGw7XG4gIH1cbiAgc3RybS5zdGF0ZSA9IG51bGw7XG4gIHJldHVybiBaX09LO1xufVxuXG5mdW5jdGlvbiBpbmZsYXRlR2V0SGVhZGVyKHN0cm0sIGhlYWQpIHtcbiAgdmFyIHN0YXRlO1xuXG4gIC8qIGNoZWNrIHN0YXRlICovXG4gIGlmICghc3RybSB8fCAhc3RybS5zdGF0ZSkgeyByZXR1cm4gWl9TVFJFQU1fRVJST1I7IH1cbiAgc3RhdGUgPSBzdHJtLnN0YXRlO1xuICBpZiAoKHN0YXRlLndyYXAgJiAyKSA9PT0gMCkgeyByZXR1cm4gWl9TVFJFQU1fRVJST1I7IH1cblxuICAvKiBzYXZlIGhlYWRlciBzdHJ1Y3R1cmUgKi9cbiAgc3RhdGUuaGVhZCA9IGhlYWQ7XG4gIGhlYWQuZG9uZSA9IGZhbHNlO1xuICByZXR1cm4gWl9PSztcbn1cblxuZnVuY3Rpb24gaW5mbGF0ZVNldERpY3Rpb25hcnkoc3RybSwgZGljdGlvbmFyeSkge1xuICB2YXIgZGljdExlbmd0aCA9IGRpY3Rpb25hcnkubGVuZ3RoO1xuXG4gIHZhciBzdGF0ZTtcbiAgdmFyIGRpY3RpZDtcbiAgdmFyIHJldDtcblxuICAvKiBjaGVjayBzdGF0ZSAqL1xuICBpZiAoIXN0cm0gLyogPT0gWl9OVUxMICovIHx8ICFzdHJtLnN0YXRlIC8qID09IFpfTlVMTCAqLykgeyByZXR1cm4gWl9TVFJFQU1fRVJST1I7IH1cbiAgc3RhdGUgPSBzdHJtLnN0YXRlO1xuXG4gIGlmIChzdGF0ZS53cmFwICE9PSAwICYmIHN0YXRlLm1vZGUgIT09IERJQ1QpIHtcbiAgICByZXR1cm4gWl9TVFJFQU1fRVJST1I7XG4gIH1cblxuICAvKiBjaGVjayBmb3IgY29ycmVjdCBkaWN0aW9uYXJ5IGlkZW50aWZpZXIgKi9cbiAgaWYgKHN0YXRlLm1vZGUgPT09IERJQ1QpIHtcbiAgICBkaWN0aWQgPSAxOyAvKiBhZGxlcjMyKDAsIG51bGwsIDApKi9cbiAgICAvKiBkaWN0aWQgPSBhZGxlcjMyKGRpY3RpZCwgZGljdGlvbmFyeSwgZGljdExlbmd0aCk7ICovXG4gICAgZGljdGlkID0gYWRsZXIzMihkaWN0aWQsIGRpY3Rpb25hcnksIGRpY3RMZW5ndGgsIDApO1xuICAgIGlmIChkaWN0aWQgIT09IHN0YXRlLmNoZWNrKSB7XG4gICAgICByZXR1cm4gWl9EQVRBX0VSUk9SO1xuICAgIH1cbiAgfVxuICAvKiBjb3B5IGRpY3Rpb25hcnkgdG8gd2luZG93IHVzaW5nIHVwZGF0ZXdpbmRvdygpLCB3aGljaCB3aWxsIGFtZW5kIHRoZVxuICAgZXhpc3RpbmcgZGljdGlvbmFyeSBpZiBhcHByb3ByaWF0ZSAqL1xuICByZXQgPSB1cGRhdGV3aW5kb3coc3RybSwgZGljdGlvbmFyeSwgZGljdExlbmd0aCwgZGljdExlbmd0aCk7XG4gIGlmIChyZXQpIHtcbiAgICBzdGF0ZS5tb2RlID0gTUVNO1xuICAgIHJldHVybiBaX01FTV9FUlJPUjtcbiAgfVxuICBzdGF0ZS5oYXZlZGljdCA9IDE7XG4gIC8vIFRyYWNldigoc3RkZXJyLCBcImluZmxhdGU6ICAgZGljdGlvbmFyeSBzZXRcXG5cIikpO1xuICByZXR1cm4gWl9PSztcbn1cblxuZXhwb3J0cy5pbmZsYXRlUmVzZXQgPSBpbmZsYXRlUmVzZXQ7XG5leHBvcnRzLmluZmxhdGVSZXNldDIgPSBpbmZsYXRlUmVzZXQyO1xuZXhwb3J0cy5pbmZsYXRlUmVzZXRLZWVwID0gaW5mbGF0ZVJlc2V0S2VlcDtcbmV4cG9ydHMuaW5mbGF0ZUluaXQgPSBpbmZsYXRlSW5pdDtcbmV4cG9ydHMuaW5mbGF0ZUluaXQyID0gaW5mbGF0ZUluaXQyO1xuZXhwb3J0cy5pbmZsYXRlID0gaW5mbGF0ZTtcbmV4cG9ydHMuaW5mbGF0ZUVuZCA9IGluZmxhdGVFbmQ7XG5leHBvcnRzLmluZmxhdGVHZXRIZWFkZXIgPSBpbmZsYXRlR2V0SGVhZGVyO1xuZXhwb3J0cy5pbmZsYXRlU2V0RGljdGlvbmFyeSA9IGluZmxhdGVTZXREaWN0aW9uYXJ5O1xuZXhwb3J0cy5pbmZsYXRlSW5mbyA9ICdwYWtvIGluZmxhdGUgKGZyb20gTm9kZWNhIHByb2plY3QpJztcblxuLyogTm90IGltcGxlbWVudGVkXG5leHBvcnRzLmluZmxhdGVDb3B5ID0gaW5mbGF0ZUNvcHk7XG5leHBvcnRzLmluZmxhdGVHZXREaWN0aW9uYXJ5ID0gaW5mbGF0ZUdldERpY3Rpb25hcnk7XG5leHBvcnRzLmluZmxhdGVNYXJrID0gaW5mbGF0ZU1hcms7XG5leHBvcnRzLmluZmxhdGVQcmltZSA9IGluZmxhdGVQcmltZTtcbmV4cG9ydHMuaW5mbGF0ZVN5bmMgPSBpbmZsYXRlU3luYztcbmV4cG9ydHMuaW5mbGF0ZVN5bmNQb2ludCA9IGluZmxhdGVTeW5jUG9pbnQ7XG5leHBvcnRzLmluZmxhdGVVbmRlcm1pbmUgPSBpbmZsYXRlVW5kZXJtaW5lO1xuKi9cbiIsIid1c2Ugc3RyaWN0JztcblxuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLi91dGlscy9jb21tb24nKTtcblxudmFyIE1BWEJJVFMgPSAxNTtcbnZhciBFTk9VR0hfTEVOUyA9IDg1MjtcbnZhciBFTk9VR0hfRElTVFMgPSA1OTI7XG4vL3ZhciBFTk9VR0ggPSAoRU5PVUdIX0xFTlMrRU5PVUdIX0RJU1RTKTtcblxudmFyIENPREVTID0gMDtcbnZhciBMRU5TID0gMTtcbnZhciBESVNUUyA9IDI7XG5cbnZhciBsYmFzZSA9IFsgLyogTGVuZ3RoIGNvZGVzIDI1Ny4uMjg1IGJhc2UgKi9cbiAgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDExLCAxMywgMTUsIDE3LCAxOSwgMjMsIDI3LCAzMSxcbiAgMzUsIDQzLCA1MSwgNTksIDY3LCA4MywgOTksIDExNSwgMTMxLCAxNjMsIDE5NSwgMjI3LCAyNTgsIDAsIDBcbl07XG5cbnZhciBsZXh0ID0gWyAvKiBMZW5ndGggY29kZXMgMjU3Li4yODUgZXh0cmEgKi9cbiAgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNywgMTcsIDE3LCAxNywgMTgsIDE4LCAxOCwgMTgsXG4gIDE5LCAxOSwgMTksIDE5LCAyMCwgMjAsIDIwLCAyMCwgMjEsIDIxLCAyMSwgMjEsIDE2LCA3MiwgNzhcbl07XG5cbnZhciBkYmFzZSA9IFsgLyogRGlzdGFuY2UgY29kZXMgMC4uMjkgYmFzZSAqL1xuICAxLCAyLCAzLCA0LCA1LCA3LCA5LCAxMywgMTcsIDI1LCAzMywgNDksIDY1LCA5NywgMTI5LCAxOTMsXG4gIDI1NywgMzg1LCA1MTMsIDc2OSwgMTAyNSwgMTUzNywgMjA0OSwgMzA3MywgNDA5NywgNjE0NSxcbiAgODE5MywgMTIyODksIDE2Mzg1LCAyNDU3NywgMCwgMFxuXTtcblxudmFyIGRleHQgPSBbIC8qIERpc3RhbmNlIGNvZGVzIDAuLjI5IGV4dHJhICovXG4gIDE2LCAxNiwgMTYsIDE2LCAxNywgMTcsIDE4LCAxOCwgMTksIDE5LCAyMCwgMjAsIDIxLCAyMSwgMjIsIDIyLFxuICAyMywgMjMsIDI0LCAyNCwgMjUsIDI1LCAyNiwgMjYsIDI3LCAyNyxcbiAgMjgsIDI4LCAyOSwgMjksIDY0LCA2NFxuXTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBpbmZsYXRlX3RhYmxlKHR5cGUsIGxlbnMsIGxlbnNfaW5kZXgsIGNvZGVzLCB0YWJsZSwgdGFibGVfaW5kZXgsIHdvcmssIG9wdHMpXG57XG4gIHZhciBiaXRzID0gb3B0cy5iaXRzO1xuICAgICAgLy9oZXJlID0gb3B0cy5oZXJlOyAvKiB0YWJsZSBlbnRyeSBmb3IgZHVwbGljYXRpb24gKi9cblxuICB2YXIgbGVuID0gMDsgICAgICAgICAgICAgICAvKiBhIGNvZGUncyBsZW5ndGggaW4gYml0cyAqL1xuICB2YXIgc3ltID0gMDsgICAgICAgICAgICAgICAvKiBpbmRleCBvZiBjb2RlIHN5bWJvbHMgKi9cbiAgdmFyIG1pbiA9IDAsIG1heCA9IDA7ICAgICAgICAgIC8qIG1pbmltdW0gYW5kIG1heGltdW0gY29kZSBsZW5ndGhzICovXG4gIHZhciByb290ID0gMDsgICAgICAgICAgICAgIC8qIG51bWJlciBvZiBpbmRleCBiaXRzIGZvciByb290IHRhYmxlICovXG4gIHZhciBjdXJyID0gMDsgICAgICAgICAgICAgIC8qIG51bWJlciBvZiBpbmRleCBiaXRzIGZvciBjdXJyZW50IHRhYmxlICovXG4gIHZhciBkcm9wID0gMDsgICAgICAgICAgICAgIC8qIGNvZGUgYml0cyB0byBkcm9wIGZvciBzdWItdGFibGUgKi9cbiAgdmFyIGxlZnQgPSAwOyAgICAgICAgICAgICAgICAgICAvKiBudW1iZXIgb2YgcHJlZml4IGNvZGVzIGF2YWlsYWJsZSAqL1xuICB2YXIgdXNlZCA9IDA7ICAgICAgICAgICAgICAvKiBjb2RlIGVudHJpZXMgaW4gdGFibGUgdXNlZCAqL1xuICB2YXIgaHVmZiA9IDA7ICAgICAgICAgICAgICAvKiBIdWZmbWFuIGNvZGUgKi9cbiAgdmFyIGluY3I7ICAgICAgICAgICAgICAvKiBmb3IgaW5jcmVtZW50aW5nIGNvZGUsIGluZGV4ICovXG4gIHZhciBmaWxsOyAgICAgICAgICAgICAgLyogaW5kZXggZm9yIHJlcGxpY2F0aW5nIGVudHJpZXMgKi9cbiAgdmFyIGxvdzsgICAgICAgICAgICAgICAvKiBsb3cgYml0cyBmb3IgY3VycmVudCByb290IGVudHJ5ICovXG4gIHZhciBtYXNrOyAgICAgICAgICAgICAgLyogbWFzayBmb3IgbG93IHJvb3QgYml0cyAqL1xuICB2YXIgbmV4dDsgICAgICAgICAgICAgLyogbmV4dCBhdmFpbGFibGUgc3BhY2UgaW4gdGFibGUgKi9cbiAgdmFyIGJhc2UgPSBudWxsOyAgICAgLyogYmFzZSB2YWx1ZSB0YWJsZSB0byB1c2UgKi9cbiAgdmFyIGJhc2VfaW5kZXggPSAwO1xuLy8gIHZhciBzaG9leHRyYTsgICAgLyogZXh0cmEgYml0cyB0YWJsZSB0byB1c2UgKi9cbiAgdmFyIGVuZDsgICAgICAgICAgICAgICAgICAgIC8qIHVzZSBiYXNlIGFuZCBleHRyYSBmb3Igc3ltYm9sID4gZW5kICovXG4gIHZhciBjb3VudCA9IG5ldyB1dGlscy5CdWYxNihNQVhCSVRTICsgMSk7IC8vW01BWEJJVFMrMV07ICAgIC8qIG51bWJlciBvZiBjb2RlcyBvZiBlYWNoIGxlbmd0aCAqL1xuICB2YXIgb2ZmcyA9IG5ldyB1dGlscy5CdWYxNihNQVhCSVRTICsgMSk7IC8vW01BWEJJVFMrMV07ICAgICAvKiBvZmZzZXRzIGluIHRhYmxlIGZvciBlYWNoIGxlbmd0aCAqL1xuICB2YXIgZXh0cmEgPSBudWxsO1xuICB2YXIgZXh0cmFfaW5kZXggPSAwO1xuXG4gIHZhciBoZXJlX2JpdHMsIGhlcmVfb3AsIGhlcmVfdmFsO1xuXG4gIC8qXG4gICBQcm9jZXNzIGEgc2V0IG9mIGNvZGUgbGVuZ3RocyB0byBjcmVhdGUgYSBjYW5vbmljYWwgSHVmZm1hbiBjb2RlLiAgVGhlXG4gICBjb2RlIGxlbmd0aHMgYXJlIGxlbnNbMC4uY29kZXMtMV0uICBFYWNoIGxlbmd0aCBjb3JyZXNwb25kcyB0byB0aGVcbiAgIHN5bWJvbHMgMC4uY29kZXMtMS4gIFRoZSBIdWZmbWFuIGNvZGUgaXMgZ2VuZXJhdGVkIGJ5IGZpcnN0IHNvcnRpbmcgdGhlXG4gICBzeW1ib2xzIGJ5IGxlbmd0aCBmcm9tIHNob3J0IHRvIGxvbmcsIGFuZCByZXRhaW5pbmcgdGhlIHN5bWJvbCBvcmRlclxuICAgZm9yIGNvZGVzIHdpdGggZXF1YWwgbGVuZ3Rocy4gIFRoZW4gdGhlIGNvZGUgc3RhcnRzIHdpdGggYWxsIHplcm8gYml0c1xuICAgZm9yIHRoZSBmaXJzdCBjb2RlIG9mIHRoZSBzaG9ydGVzdCBsZW5ndGgsIGFuZCB0aGUgY29kZXMgYXJlIGludGVnZXJcbiAgIGluY3JlbWVudHMgZm9yIHRoZSBzYW1lIGxlbmd0aCwgYW5kIHplcm9zIGFyZSBhcHBlbmRlZCBhcyB0aGUgbGVuZ3RoXG4gICBpbmNyZWFzZXMuICBGb3IgdGhlIGRlZmxhdGUgZm9ybWF0LCB0aGVzZSBiaXRzIGFyZSBzdG9yZWQgYmFja3dhcmRzXG4gICBmcm9tIHRoZWlyIG1vcmUgbmF0dXJhbCBpbnRlZ2VyIGluY3JlbWVudCBvcmRlcmluZywgYW5kIHNvIHdoZW4gdGhlXG4gICBkZWNvZGluZyB0YWJsZXMgYXJlIGJ1aWx0IGluIHRoZSBsYXJnZSBsb29wIGJlbG93LCB0aGUgaW50ZWdlciBjb2Rlc1xuICAgYXJlIGluY3JlbWVudGVkIGJhY2t3YXJkcy5cblxuICAgVGhpcyByb3V0aW5lIGFzc3VtZXMsIGJ1dCBkb2VzIG5vdCBjaGVjaywgdGhhdCBhbGwgb2YgdGhlIGVudHJpZXMgaW5cbiAgIGxlbnNbXSBhcmUgaW4gdGhlIHJhbmdlIDAuLk1BWEJJVFMuICBUaGUgY2FsbGVyIG11c3QgYXNzdXJlIHRoaXMuXG4gICAxLi5NQVhCSVRTIGlzIGludGVycHJldGVkIGFzIHRoYXQgY29kZSBsZW5ndGguICB6ZXJvIG1lYW5zIHRoYXQgdGhhdFxuICAgc3ltYm9sIGRvZXMgbm90IG9jY3VyIGluIHRoaXMgY29kZS5cblxuICAgVGhlIGNvZGVzIGFyZSBzb3J0ZWQgYnkgY29tcHV0aW5nIGEgY291bnQgb2YgY29kZXMgZm9yIGVhY2ggbGVuZ3RoLFxuICAgY3JlYXRpbmcgZnJvbSB0aGF0IGEgdGFibGUgb2Ygc3RhcnRpbmcgaW5kaWNlcyBmb3IgZWFjaCBsZW5ndGggaW4gdGhlXG4gICBzb3J0ZWQgdGFibGUsIGFuZCB0aGVuIGVudGVyaW5nIHRoZSBzeW1ib2xzIGluIG9yZGVyIGluIHRoZSBzb3J0ZWRcbiAgIHRhYmxlLiAgVGhlIHNvcnRlZCB0YWJsZSBpcyB3b3JrW10sIHdpdGggdGhhdCBzcGFjZSBiZWluZyBwcm92aWRlZCBieVxuICAgdGhlIGNhbGxlci5cblxuICAgVGhlIGxlbmd0aCBjb3VudHMgYXJlIHVzZWQgZm9yIG90aGVyIHB1cnBvc2VzIGFzIHdlbGwsIGkuZS4gZmluZGluZ1xuICAgdGhlIG1pbmltdW0gYW5kIG1heGltdW0gbGVuZ3RoIGNvZGVzLCBkZXRlcm1pbmluZyBpZiB0aGVyZSBhcmUgYW55XG4gICBjb2RlcyBhdCBhbGwsIGNoZWNraW5nIGZvciBhIHZhbGlkIHNldCBvZiBsZW5ndGhzLCBhbmQgbG9va2luZyBhaGVhZFxuICAgYXQgbGVuZ3RoIGNvdW50cyB0byBkZXRlcm1pbmUgc3ViLXRhYmxlIHNpemVzIHdoZW4gYnVpbGRpbmcgdGhlXG4gICBkZWNvZGluZyB0YWJsZXMuXG4gICAqL1xuXG4gIC8qIGFjY3VtdWxhdGUgbGVuZ3RocyBmb3IgY29kZXMgKGFzc3VtZXMgbGVuc1tdIGFsbCBpbiAwLi5NQVhCSVRTKSAqL1xuICBmb3IgKGxlbiA9IDA7IGxlbiA8PSBNQVhCSVRTOyBsZW4rKykge1xuICAgIGNvdW50W2xlbl0gPSAwO1xuICB9XG4gIGZvciAoc3ltID0gMDsgc3ltIDwgY29kZXM7IHN5bSsrKSB7XG4gICAgY291bnRbbGVuc1tsZW5zX2luZGV4ICsgc3ltXV0rKztcbiAgfVxuXG4gIC8qIGJvdW5kIGNvZGUgbGVuZ3RocywgZm9yY2Ugcm9vdCB0byBiZSB3aXRoaW4gY29kZSBsZW5ndGhzICovXG4gIHJvb3QgPSBiaXRzO1xuICBmb3IgKG1heCA9IE1BWEJJVFM7IG1heCA+PSAxOyBtYXgtLSkge1xuICAgIGlmIChjb3VudFttYXhdICE9PSAwKSB7IGJyZWFrOyB9XG4gIH1cbiAgaWYgKHJvb3QgPiBtYXgpIHtcbiAgICByb290ID0gbWF4O1xuICB9XG4gIGlmIChtYXggPT09IDApIHsgICAgICAgICAgICAgICAgICAgICAvKiBubyBzeW1ib2xzIHRvIGNvZGUgYXQgYWxsICovXG4gICAgLy90YWJsZS5vcFtvcHRzLnRhYmxlX2luZGV4XSA9IDY0OyAgLy9oZXJlLm9wID0gKHZhciBjaGFyKTY0OyAgICAvKiBpbnZhbGlkIGNvZGUgbWFya2VyICovXG4gICAgLy90YWJsZS5iaXRzW29wdHMudGFibGVfaW5kZXhdID0gMTsgICAvL2hlcmUuYml0cyA9ICh2YXIgY2hhcikxO1xuICAgIC8vdGFibGUudmFsW29wdHMudGFibGVfaW5kZXgrK10gPSAwOyAgIC8vaGVyZS52YWwgPSAodmFyIHNob3J0KTA7XG4gICAgdGFibGVbdGFibGVfaW5kZXgrK10gPSAoMSA8PCAyNCkgfCAoNjQgPDwgMTYpIHwgMDtcblxuXG4gICAgLy90YWJsZS5vcFtvcHRzLnRhYmxlX2luZGV4XSA9IDY0O1xuICAgIC8vdGFibGUuYml0c1tvcHRzLnRhYmxlX2luZGV4XSA9IDE7XG4gICAgLy90YWJsZS52YWxbb3B0cy50YWJsZV9pbmRleCsrXSA9IDA7XG4gICAgdGFibGVbdGFibGVfaW5kZXgrK10gPSAoMSA8PCAyNCkgfCAoNjQgPDwgMTYpIHwgMDtcblxuICAgIG9wdHMuYml0cyA9IDE7XG4gICAgcmV0dXJuIDA7ICAgICAvKiBubyBzeW1ib2xzLCBidXQgd2FpdCBmb3IgZGVjb2RpbmcgdG8gcmVwb3J0IGVycm9yICovXG4gIH1cbiAgZm9yIChtaW4gPSAxOyBtaW4gPCBtYXg7IG1pbisrKSB7XG4gICAgaWYgKGNvdW50W21pbl0gIT09IDApIHsgYnJlYWs7IH1cbiAgfVxuICBpZiAocm9vdCA8IG1pbikge1xuICAgIHJvb3QgPSBtaW47XG4gIH1cblxuICAvKiBjaGVjayBmb3IgYW4gb3Zlci1zdWJzY3JpYmVkIG9yIGluY29tcGxldGUgc2V0IG9mIGxlbmd0aHMgKi9cbiAgbGVmdCA9IDE7XG4gIGZvciAobGVuID0gMTsgbGVuIDw9IE1BWEJJVFM7IGxlbisrKSB7XG4gICAgbGVmdCA8PD0gMTtcbiAgICBsZWZ0IC09IGNvdW50W2xlbl07XG4gICAgaWYgKGxlZnQgPCAwKSB7XG4gICAgICByZXR1cm4gLTE7XG4gICAgfSAgICAgICAgLyogb3Zlci1zdWJzY3JpYmVkICovXG4gIH1cbiAgaWYgKGxlZnQgPiAwICYmICh0eXBlID09PSBDT0RFUyB8fCBtYXggIT09IDEpKSB7XG4gICAgcmV0dXJuIC0xOyAgICAgICAgICAgICAgICAgICAgICAvKiBpbmNvbXBsZXRlIHNldCAqL1xuICB9XG5cbiAgLyogZ2VuZXJhdGUgb2Zmc2V0cyBpbnRvIHN5bWJvbCB0YWJsZSBmb3IgZWFjaCBsZW5ndGggZm9yIHNvcnRpbmcgKi9cbiAgb2Zmc1sxXSA9IDA7XG4gIGZvciAobGVuID0gMTsgbGVuIDwgTUFYQklUUzsgbGVuKyspIHtcbiAgICBvZmZzW2xlbiArIDFdID0gb2Zmc1tsZW5dICsgY291bnRbbGVuXTtcbiAgfVxuXG4gIC8qIHNvcnQgc3ltYm9scyBieSBsZW5ndGgsIGJ5IHN5bWJvbCBvcmRlciB3aXRoaW4gZWFjaCBsZW5ndGggKi9cbiAgZm9yIChzeW0gPSAwOyBzeW0gPCBjb2Rlczsgc3ltKyspIHtcbiAgICBpZiAobGVuc1tsZW5zX2luZGV4ICsgc3ltXSAhPT0gMCkge1xuICAgICAgd29ya1tvZmZzW2xlbnNbbGVuc19pbmRleCArIHN5bV1dKytdID0gc3ltO1xuICAgIH1cbiAgfVxuXG4gIC8qXG4gICBDcmVhdGUgYW5kIGZpbGwgaW4gZGVjb2RpbmcgdGFibGVzLiAgSW4gdGhpcyBsb29wLCB0aGUgdGFibGUgYmVpbmdcbiAgIGZpbGxlZCBpcyBhdCBuZXh0IGFuZCBoYXMgY3VyciBpbmRleCBiaXRzLiAgVGhlIGNvZGUgYmVpbmcgdXNlZCBpcyBodWZmXG4gICB3aXRoIGxlbmd0aCBsZW4uICBUaGF0IGNvZGUgaXMgY29udmVydGVkIHRvIGFuIGluZGV4IGJ5IGRyb3BwaW5nIGRyb3BcbiAgIGJpdHMgb2ZmIG9mIHRoZSBib3R0b20uICBGb3IgY29kZXMgd2hlcmUgbGVuIGlzIGxlc3MgdGhhbiBkcm9wICsgY3VycixcbiAgIHRob3NlIHRvcCBkcm9wICsgY3VyciAtIGxlbiBiaXRzIGFyZSBpbmNyZW1lbnRlZCB0aHJvdWdoIGFsbCB2YWx1ZXMgdG9cbiAgIGZpbGwgdGhlIHRhYmxlIHdpdGggcmVwbGljYXRlZCBlbnRyaWVzLlxuXG4gICByb290IGlzIHRoZSBudW1iZXIgb2YgaW5kZXggYml0cyBmb3IgdGhlIHJvb3QgdGFibGUuICBXaGVuIGxlbiBleGNlZWRzXG4gICByb290LCBzdWItdGFibGVzIGFyZSBjcmVhdGVkIHBvaW50ZWQgdG8gYnkgdGhlIHJvb3QgZW50cnkgd2l0aCBhbiBpbmRleFxuICAgb2YgdGhlIGxvdyByb290IGJpdHMgb2YgaHVmZi4gIFRoaXMgaXMgc2F2ZWQgaW4gbG93IHRvIGNoZWNrIGZvciB3aGVuIGFcbiAgIG5ldyBzdWItdGFibGUgc2hvdWxkIGJlIHN0YXJ0ZWQuICBkcm9wIGlzIHplcm8gd2hlbiB0aGUgcm9vdCB0YWJsZSBpc1xuICAgYmVpbmcgZmlsbGVkLCBhbmQgZHJvcCBpcyByb290IHdoZW4gc3ViLXRhYmxlcyBhcmUgYmVpbmcgZmlsbGVkLlxuXG4gICBXaGVuIGEgbmV3IHN1Yi10YWJsZSBpcyBuZWVkZWQsIGl0IGlzIG5lY2Vzc2FyeSB0byBsb29rIGFoZWFkIGluIHRoZVxuICAgY29kZSBsZW5ndGhzIHRvIGRldGVybWluZSB3aGF0IHNpemUgc3ViLXRhYmxlIGlzIG5lZWRlZC4gIFRoZSBsZW5ndGhcbiAgIGNvdW50cyBhcmUgdXNlZCBmb3IgdGhpcywgYW5kIHNvIGNvdW50W10gaXMgZGVjcmVtZW50ZWQgYXMgY29kZXMgYXJlXG4gICBlbnRlcmVkIGluIHRoZSB0YWJsZXMuXG5cbiAgIHVzZWQga2VlcHMgdHJhY2sgb2YgaG93IG1hbnkgdGFibGUgZW50cmllcyBoYXZlIGJlZW4gYWxsb2NhdGVkIGZyb20gdGhlXG4gICBwcm92aWRlZCAqdGFibGUgc3BhY2UuICBJdCBpcyBjaGVja2VkIGZvciBMRU5TIGFuZCBESVNUIHRhYmxlcyBhZ2FpbnN0XG4gICB0aGUgY29uc3RhbnRzIEVOT1VHSF9MRU5TIGFuZCBFTk9VR0hfRElTVFMgdG8gZ3VhcmQgYWdhaW5zdCBjaGFuZ2VzIGluXG4gICB0aGUgaW5pdGlhbCByb290IHRhYmxlIHNpemUgY29uc3RhbnRzLiAgU2VlIHRoZSBjb21tZW50cyBpbiBpbmZ0cmVlcy5oXG4gICBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cblxuICAgc3ltIGluY3JlbWVudHMgdGhyb3VnaCBhbGwgc3ltYm9scywgYW5kIHRoZSBsb29wIHRlcm1pbmF0ZXMgd2hlblxuICAgYWxsIGNvZGVzIG9mIGxlbmd0aCBtYXgsIGkuZS4gYWxsIGNvZGVzLCBoYXZlIGJlZW4gcHJvY2Vzc2VkLiAgVGhpc1xuICAgcm91dGluZSBwZXJtaXRzIGluY29tcGxldGUgY29kZXMsIHNvIGFub3RoZXIgbG9vcCBhZnRlciB0aGlzIG9uZSBmaWxsc1xuICAgaW4gdGhlIHJlc3Qgb2YgdGhlIGRlY29kaW5nIHRhYmxlcyB3aXRoIGludmFsaWQgY29kZSBtYXJrZXJzLlxuICAgKi9cblxuICAvKiBzZXQgdXAgZm9yIGNvZGUgdHlwZSAqL1xuICAvLyBwb29yIG1hbiBvcHRpbWl6YXRpb24gLSB1c2UgaWYtZWxzZSBpbnN0ZWFkIG9mIHN3aXRjaCxcbiAgLy8gdG8gYXZvaWQgZGVvcHRzIGluIG9sZCB2OFxuICBpZiAodHlwZSA9PT0gQ09ERVMpIHtcbiAgICBiYXNlID0gZXh0cmEgPSB3b3JrOyAgICAvKiBkdW1teSB2YWx1ZS0tbm90IHVzZWQgKi9cbiAgICBlbmQgPSAxOTtcblxuICB9IGVsc2UgaWYgKHR5cGUgPT09IExFTlMpIHtcbiAgICBiYXNlID0gbGJhc2U7XG4gICAgYmFzZV9pbmRleCAtPSAyNTc7XG4gICAgZXh0cmEgPSBsZXh0O1xuICAgIGV4dHJhX2luZGV4IC09IDI1NztcbiAgICBlbmQgPSAyNTY7XG5cbiAgfSBlbHNlIHsgICAgICAgICAgICAgICAgICAgIC8qIERJU1RTICovXG4gICAgYmFzZSA9IGRiYXNlO1xuICAgIGV4dHJhID0gZGV4dDtcbiAgICBlbmQgPSAtMTtcbiAgfVxuXG4gIC8qIGluaXRpYWxpemUgb3B0cyBmb3IgbG9vcCAqL1xuICBodWZmID0gMDsgICAgICAgICAgICAgICAgICAgLyogc3RhcnRpbmcgY29kZSAqL1xuICBzeW0gPSAwOyAgICAgICAgICAgICAgICAgICAgLyogc3RhcnRpbmcgY29kZSBzeW1ib2wgKi9cbiAgbGVuID0gbWluOyAgICAgICAgICAgICAgICAgIC8qIHN0YXJ0aW5nIGNvZGUgbGVuZ3RoICovXG4gIG5leHQgPSB0YWJsZV9pbmRleDsgICAgICAgICAgICAgIC8qIGN1cnJlbnQgdGFibGUgdG8gZmlsbCBpbiAqL1xuICBjdXJyID0gcm9vdDsgICAgICAgICAgICAgICAgLyogY3VycmVudCB0YWJsZSBpbmRleCBiaXRzICovXG4gIGRyb3AgPSAwOyAgICAgICAgICAgICAgICAgICAvKiBjdXJyZW50IGJpdHMgdG8gZHJvcCBmcm9tIGNvZGUgZm9yIGluZGV4ICovXG4gIGxvdyA9IC0xOyAgICAgICAgICAgICAgICAgICAvKiB0cmlnZ2VyIG5ldyBzdWItdGFibGUgd2hlbiBsZW4gPiByb290ICovXG4gIHVzZWQgPSAxIDw8IHJvb3Q7ICAgICAgICAgIC8qIHVzZSByb290IHRhYmxlIGVudHJpZXMgKi9cbiAgbWFzayA9IHVzZWQgLSAxOyAgICAgICAgICAgIC8qIG1hc2sgZm9yIGNvbXBhcmluZyBsb3cgKi9cblxuICAvKiBjaGVjayBhdmFpbGFibGUgdGFibGUgc3BhY2UgKi9cbiAgaWYgKCh0eXBlID09PSBMRU5TICYmIHVzZWQgPiBFTk9VR0hfTEVOUykgfHxcbiAgICAodHlwZSA9PT0gRElTVFMgJiYgdXNlZCA+IEVOT1VHSF9ESVNUUykpIHtcbiAgICByZXR1cm4gMTtcbiAgfVxuXG4gIHZhciBpID0gMDtcbiAgLyogcHJvY2VzcyBhbGwgY29kZXMgYW5kIG1ha2UgdGFibGUgZW50cmllcyAqL1xuICBmb3IgKDs7KSB7XG4gICAgaSsrO1xuICAgIC8qIGNyZWF0ZSB0YWJsZSBlbnRyeSAqL1xuICAgIGhlcmVfYml0cyA9IGxlbiAtIGRyb3A7XG4gICAgaWYgKHdvcmtbc3ltXSA8IGVuZCkge1xuICAgICAgaGVyZV9vcCA9IDA7XG4gICAgICBoZXJlX3ZhbCA9IHdvcmtbc3ltXTtcbiAgICB9XG4gICAgZWxzZSBpZiAod29ya1tzeW1dID4gZW5kKSB7XG4gICAgICBoZXJlX29wID0gZXh0cmFbZXh0cmFfaW5kZXggKyB3b3JrW3N5bV1dO1xuICAgICAgaGVyZV92YWwgPSBiYXNlW2Jhc2VfaW5kZXggKyB3b3JrW3N5bV1dO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGhlcmVfb3AgPSAzMiArIDY0OyAgICAgICAgIC8qIGVuZCBvZiBibG9jayAqL1xuICAgICAgaGVyZV92YWwgPSAwO1xuICAgIH1cblxuICAgIC8qIHJlcGxpY2F0ZSBmb3IgdGhvc2UgaW5kaWNlcyB3aXRoIGxvdyBsZW4gYml0cyBlcXVhbCB0byBodWZmICovXG4gICAgaW5jciA9IDEgPDwgKGxlbiAtIGRyb3ApO1xuICAgIGZpbGwgPSAxIDw8IGN1cnI7XG4gICAgbWluID0gZmlsbDsgICAgICAgICAgICAgICAgIC8qIHNhdmUgb2Zmc2V0IHRvIG5leHQgdGFibGUgKi9cbiAgICBkbyB7XG4gICAgICBmaWxsIC09IGluY3I7XG4gICAgICB0YWJsZVtuZXh0ICsgKGh1ZmYgPj4gZHJvcCkgKyBmaWxsXSA9IChoZXJlX2JpdHMgPDwgMjQpIHwgKGhlcmVfb3AgPDwgMTYpIHwgaGVyZV92YWwgfDA7XG4gICAgfSB3aGlsZSAoZmlsbCAhPT0gMCk7XG5cbiAgICAvKiBiYWNrd2FyZHMgaW5jcmVtZW50IHRoZSBsZW4tYml0IGNvZGUgaHVmZiAqL1xuICAgIGluY3IgPSAxIDw8IChsZW4gLSAxKTtcbiAgICB3aGlsZSAoaHVmZiAmIGluY3IpIHtcbiAgICAgIGluY3IgPj49IDE7XG4gICAgfVxuICAgIGlmIChpbmNyICE9PSAwKSB7XG4gICAgICBodWZmICY9IGluY3IgLSAxO1xuICAgICAgaHVmZiArPSBpbmNyO1xuICAgIH0gZWxzZSB7XG4gICAgICBodWZmID0gMDtcbiAgICB9XG5cbiAgICAvKiBnbyB0byBuZXh0IHN5bWJvbCwgdXBkYXRlIGNvdW50LCBsZW4gKi9cbiAgICBzeW0rKztcbiAgICBpZiAoLS1jb3VudFtsZW5dID09PSAwKSB7XG4gICAgICBpZiAobGVuID09PSBtYXgpIHsgYnJlYWs7IH1cbiAgICAgIGxlbiA9IGxlbnNbbGVuc19pbmRleCArIHdvcmtbc3ltXV07XG4gICAgfVxuXG4gICAgLyogY3JlYXRlIG5ldyBzdWItdGFibGUgaWYgbmVlZGVkICovXG4gICAgaWYgKGxlbiA+IHJvb3QgJiYgKGh1ZmYgJiBtYXNrKSAhPT0gbG93KSB7XG4gICAgICAvKiBpZiBmaXJzdCB0aW1lLCB0cmFuc2l0aW9uIHRvIHN1Yi10YWJsZXMgKi9cbiAgICAgIGlmIChkcm9wID09PSAwKSB7XG4gICAgICAgIGRyb3AgPSByb290O1xuICAgICAgfVxuXG4gICAgICAvKiBpbmNyZW1lbnQgcGFzdCBsYXN0IHRhYmxlICovXG4gICAgICBuZXh0ICs9IG1pbjsgICAgICAgICAgICAvKiBoZXJlIG1pbiBpcyAxIDw8IGN1cnIgKi9cblxuICAgICAgLyogZGV0ZXJtaW5lIGxlbmd0aCBvZiBuZXh0IHRhYmxlICovXG4gICAgICBjdXJyID0gbGVuIC0gZHJvcDtcbiAgICAgIGxlZnQgPSAxIDw8IGN1cnI7XG4gICAgICB3aGlsZSAoY3VyciArIGRyb3AgPCBtYXgpIHtcbiAgICAgICAgbGVmdCAtPSBjb3VudFtjdXJyICsgZHJvcF07XG4gICAgICAgIGlmIChsZWZ0IDw9IDApIHsgYnJlYWs7IH1cbiAgICAgICAgY3VycisrO1xuICAgICAgICBsZWZ0IDw8PSAxO1xuICAgICAgfVxuXG4gICAgICAvKiBjaGVjayBmb3IgZW5vdWdoIHNwYWNlICovXG4gICAgICB1c2VkICs9IDEgPDwgY3VycjtcbiAgICAgIGlmICgodHlwZSA9PT0gTEVOUyAmJiB1c2VkID4gRU5PVUdIX0xFTlMpIHx8XG4gICAgICAgICh0eXBlID09PSBESVNUUyAmJiB1c2VkID4gRU5PVUdIX0RJU1RTKSkge1xuICAgICAgICByZXR1cm4gMTtcbiAgICAgIH1cblxuICAgICAgLyogcG9pbnQgZW50cnkgaW4gcm9vdCB0YWJsZSB0byBzdWItdGFibGUgKi9cbiAgICAgIGxvdyA9IGh1ZmYgJiBtYXNrO1xuICAgICAgLyp0YWJsZS5vcFtsb3ddID0gY3VycjtcbiAgICAgIHRhYmxlLmJpdHNbbG93XSA9IHJvb3Q7XG4gICAgICB0YWJsZS52YWxbbG93XSA9IG5leHQgLSBvcHRzLnRhYmxlX2luZGV4OyovXG4gICAgICB0YWJsZVtsb3ddID0gKHJvb3QgPDwgMjQpIHwgKGN1cnIgPDwgMTYpIHwgKG5leHQgLSB0YWJsZV9pbmRleCkgfDA7XG4gICAgfVxuICB9XG5cbiAgLyogZmlsbCBpbiByZW1haW5pbmcgdGFibGUgZW50cnkgaWYgY29kZSBpcyBpbmNvbXBsZXRlIChndWFyYW50ZWVkIHRvIGhhdmVcbiAgIGF0IG1vc3Qgb25lIHJlbWFpbmluZyBlbnRyeSwgc2luY2UgaWYgdGhlIGNvZGUgaXMgaW5jb21wbGV0ZSwgdGhlXG4gICBtYXhpbXVtIGNvZGUgbGVuZ3RoIHRoYXQgd2FzIGFsbG93ZWQgdG8gZ2V0IHRoaXMgZmFyIGlzIG9uZSBiaXQpICovXG4gIGlmIChodWZmICE9PSAwKSB7XG4gICAgLy90YWJsZS5vcFtuZXh0ICsgaHVmZl0gPSA2NDsgICAgICAgICAgICAvKiBpbnZhbGlkIGNvZGUgbWFya2VyICovXG4gICAgLy90YWJsZS5iaXRzW25leHQgKyBodWZmXSA9IGxlbiAtIGRyb3A7XG4gICAgLy90YWJsZS52YWxbbmV4dCArIGh1ZmZdID0gMDtcbiAgICB0YWJsZVtuZXh0ICsgaHVmZl0gPSAoKGxlbiAtIGRyb3ApIDw8IDI0KSB8ICg2NCA8PCAxNikgfDA7XG4gIH1cblxuICAvKiBzZXQgcmV0dXJuIHBhcmFtZXRlcnMgKi9cbiAgLy9vcHRzLnRhYmxlX2luZGV4ICs9IHVzZWQ7XG4gIG9wdHMuYml0cyA9IHJvb3Q7XG4gIHJldHVybiAwO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIDI6ICAgICAgJ25lZWQgZGljdGlvbmFyeScsICAgICAvKiBaX05FRURfRElDVCAgICAgICAyICAqL1xuICAxOiAgICAgICdzdHJlYW0gZW5kJywgICAgICAgICAgLyogWl9TVFJFQU1fRU5EICAgICAgMSAgKi9cbiAgMDogICAgICAnJywgICAgICAgICAgICAgICAgICAgIC8qIFpfT0sgICAgICAgICAgICAgIDAgICovXG4gICctMSc6ICAgJ2ZpbGUgZXJyb3InLCAgICAgICAgICAvKiBaX0VSUk5PICAgICAgICAgKC0xKSAqL1xuICAnLTInOiAgICdzdHJlYW0gZXJyb3InLCAgICAgICAgLyogWl9TVFJFQU1fRVJST1IgICgtMikgKi9cbiAgJy0zJzogICAnZGF0YSBlcnJvcicsICAgICAgICAgIC8qIFpfREFUQV9FUlJPUiAgICAoLTMpICovXG4gICctNCc6ICAgJ2luc3VmZmljaWVudCBtZW1vcnknLCAvKiBaX01FTV9FUlJPUiAgICAgKC00KSAqL1xuICAnLTUnOiAgICdidWZmZXIgZXJyb3InLCAgICAgICAgLyogWl9CVUZfRVJST1IgICAgICgtNSkgKi9cbiAgJy02JzogICAnaW5jb21wYXRpYmxlIHZlcnNpb24nIC8qIFpfVkVSU0lPTl9FUlJPUiAoLTYpICovXG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4uL3V0aWxzL2NvbW1vbicpO1xuXG4vKiBQdWJsaWMgY29uc3RhbnRzID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qL1xuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki9cblxuXG4vL3ZhciBaX0ZJTFRFUkVEICAgICAgICAgID0gMTtcbi8vdmFyIFpfSFVGRk1BTl9PTkxZICAgICAgPSAyO1xuLy92YXIgWl9STEUgICAgICAgICAgICAgICA9IDM7XG52YXIgWl9GSVhFRCAgICAgICAgICAgICAgID0gNDtcbi8vdmFyIFpfREVGQVVMVF9TVFJBVEVHWSAgPSAwO1xuXG4vKiBQb3NzaWJsZSB2YWx1ZXMgb2YgdGhlIGRhdGFfdHlwZSBmaWVsZCAodGhvdWdoIHNlZSBpbmZsYXRlKCkpICovXG52YXIgWl9CSU5BUlkgICAgICAgICAgICAgID0gMDtcbnZhciBaX1RFWFQgICAgICAgICAgICAgICAgPSAxO1xuLy92YXIgWl9BU0NJSSAgICAgICAgICAgICA9IDE7IC8vID0gWl9URVhUXG52YXIgWl9VTktOT1dOICAgICAgICAgICAgID0gMjtcblxuLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki9cblxuXG5mdW5jdGlvbiB6ZXJvKGJ1ZikgeyB2YXIgbGVuID0gYnVmLmxlbmd0aDsgd2hpbGUgKC0tbGVuID49IDApIHsgYnVmW2xlbl0gPSAwOyB9IH1cblxuLy8gRnJvbSB6dXRpbC5oXG5cbnZhciBTVE9SRURfQkxPQ0sgPSAwO1xudmFyIFNUQVRJQ19UUkVFUyA9IDE7XG52YXIgRFlOX1RSRUVTICAgID0gMjtcbi8qIFRoZSB0aHJlZSBraW5kcyBvZiBibG9jayB0eXBlICovXG5cbnZhciBNSU5fTUFUQ0ggICAgPSAzO1xudmFyIE1BWF9NQVRDSCAgICA9IDI1ODtcbi8qIFRoZSBtaW5pbXVtIGFuZCBtYXhpbXVtIG1hdGNoIGxlbmd0aHMgKi9cblxuLy8gRnJvbSBkZWZsYXRlLmhcbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICogSW50ZXJuYWwgY29tcHJlc3Npb24gc3RhdGUuXG4gKi9cblxudmFyIExFTkdUSF9DT0RFUyAgPSAyOTtcbi8qIG51bWJlciBvZiBsZW5ndGggY29kZXMsIG5vdCBjb3VudGluZyB0aGUgc3BlY2lhbCBFTkRfQkxPQ0sgY29kZSAqL1xuXG52YXIgTElURVJBTFMgICAgICA9IDI1Njtcbi8qIG51bWJlciBvZiBsaXRlcmFsIGJ5dGVzIDAuLjI1NSAqL1xuXG52YXIgTF9DT0RFUyAgICAgICA9IExJVEVSQUxTICsgMSArIExFTkdUSF9DT0RFUztcbi8qIG51bWJlciBvZiBMaXRlcmFsIG9yIExlbmd0aCBjb2RlcywgaW5jbHVkaW5nIHRoZSBFTkRfQkxPQ0sgY29kZSAqL1xuXG52YXIgRF9DT0RFUyAgICAgICA9IDMwO1xuLyogbnVtYmVyIG9mIGRpc3RhbmNlIGNvZGVzICovXG5cbnZhciBCTF9DT0RFUyAgICAgID0gMTk7XG4vKiBudW1iZXIgb2YgY29kZXMgdXNlZCB0byB0cmFuc2ZlciB0aGUgYml0IGxlbmd0aHMgKi9cblxudmFyIEhFQVBfU0laRSAgICAgPSAyICogTF9DT0RFUyArIDE7XG4vKiBtYXhpbXVtIGhlYXAgc2l6ZSAqL1xuXG52YXIgTUFYX0JJVFMgICAgICA9IDE1O1xuLyogQWxsIGNvZGVzIG11c3Qgbm90IGV4Y2VlZCBNQVhfQklUUyBiaXRzICovXG5cbnZhciBCdWZfc2l6ZSAgICAgID0gMTY7XG4vKiBzaXplIG9mIGJpdCBidWZmZXIgaW4gYmlfYnVmICovXG5cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBDb25zdGFudHNcbiAqL1xuXG52YXIgTUFYX0JMX0JJVFMgPSA3O1xuLyogQml0IGxlbmd0aCBjb2RlcyBtdXN0IG5vdCBleGNlZWQgTUFYX0JMX0JJVFMgYml0cyAqL1xuXG52YXIgRU5EX0JMT0NLICAgPSAyNTY7XG4vKiBlbmQgb2YgYmxvY2sgbGl0ZXJhbCBjb2RlICovXG5cbnZhciBSRVBfM182ICAgICA9IDE2O1xuLyogcmVwZWF0IHByZXZpb3VzIGJpdCBsZW5ndGggMy02IHRpbWVzICgyIGJpdHMgb2YgcmVwZWF0IGNvdW50KSAqL1xuXG52YXIgUkVQWl8zXzEwICAgPSAxNztcbi8qIHJlcGVhdCBhIHplcm8gbGVuZ3RoIDMtMTAgdGltZXMgICgzIGJpdHMgb2YgcmVwZWF0IGNvdW50KSAqL1xuXG52YXIgUkVQWl8xMV8xMzggPSAxODtcbi8qIHJlcGVhdCBhIHplcm8gbGVuZ3RoIDExLTEzOCB0aW1lcyAgKDcgYml0cyBvZiByZXBlYXQgY291bnQpICovXG5cbi8qIGVzbGludC1kaXNhYmxlIGNvbW1hLXNwYWNpbmcsYXJyYXktYnJhY2tldC1zcGFjaW5nICovXG52YXIgZXh0cmFfbGJpdHMgPSAgIC8qIGV4dHJhIGJpdHMgZm9yIGVhY2ggbGVuZ3RoIGNvZGUgKi9cbiAgWzAsMCwwLDAsMCwwLDAsMCwxLDEsMSwxLDIsMiwyLDIsMywzLDMsMyw0LDQsNCw0LDUsNSw1LDUsMF07XG5cbnZhciBleHRyYV9kYml0cyA9ICAgLyogZXh0cmEgYml0cyBmb3IgZWFjaCBkaXN0YW5jZSBjb2RlICovXG4gIFswLDAsMCwwLDEsMSwyLDIsMywzLDQsNCw1LDUsNiw2LDcsNyw4LDgsOSw5LDEwLDEwLDExLDExLDEyLDEyLDEzLDEzXTtcblxudmFyIGV4dHJhX2JsYml0cyA9ICAvKiBleHRyYSBiaXRzIGZvciBlYWNoIGJpdCBsZW5ndGggY29kZSAqL1xuICBbMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwyLDMsN107XG5cbnZhciBibF9vcmRlciA9XG4gIFsxNiwxNywxOCwwLDgsNyw5LDYsMTAsNSwxMSw0LDEyLDMsMTMsMiwxNCwxLDE1XTtcbi8qIGVzbGludC1lbmFibGUgY29tbWEtc3BhY2luZyxhcnJheS1icmFja2V0LXNwYWNpbmcgKi9cblxuLyogVGhlIGxlbmd0aHMgb2YgdGhlIGJpdCBsZW5ndGggY29kZXMgYXJlIHNlbnQgaW4gb3JkZXIgb2YgZGVjcmVhc2luZ1xuICogcHJvYmFiaWxpdHksIHRvIGF2b2lkIHRyYW5zbWl0dGluZyB0aGUgbGVuZ3RocyBmb3IgdW51c2VkIGJpdCBsZW5ndGggY29kZXMuXG4gKi9cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBMb2NhbCBkYXRhLiBUaGVzZSBhcmUgaW5pdGlhbGl6ZWQgb25seSBvbmNlLlxuICovXG5cbi8vIFdlIHByZS1maWxsIGFycmF5cyB3aXRoIDAgdG8gYXZvaWQgdW5pbml0aWFsaXplZCBnYXBzXG5cbnZhciBESVNUX0NPREVfTEVOID0gNTEyOyAvKiBzZWUgZGVmaW5pdGlvbiBvZiBhcnJheSBkaXN0X2NvZGUgYmVsb3cgKi9cblxuLy8gISEhISBVc2UgZmxhdCBhcnJheSBpbnNkZWFkIG9mIHN0cnVjdHVyZSwgRnJlcSA9IGkqMiwgTGVuID0gaSoyKzFcbnZhciBzdGF0aWNfbHRyZWUgID0gbmV3IEFycmF5KChMX0NPREVTICsgMikgKiAyKTtcbnplcm8oc3RhdGljX2x0cmVlKTtcbi8qIFRoZSBzdGF0aWMgbGl0ZXJhbCB0cmVlLiBTaW5jZSB0aGUgYml0IGxlbmd0aHMgYXJlIGltcG9zZWQsIHRoZXJlIGlzIG5vXG4gKiBuZWVkIGZvciB0aGUgTF9DT0RFUyBleHRyYSBjb2RlcyB1c2VkIGR1cmluZyBoZWFwIGNvbnN0cnVjdGlvbi4gSG93ZXZlclxuICogVGhlIGNvZGVzIDI4NiBhbmQgMjg3IGFyZSBuZWVkZWQgdG8gYnVpbGQgYSBjYW5vbmljYWwgdHJlZSAoc2VlIF90cl9pbml0XG4gKiBiZWxvdykuXG4gKi9cblxudmFyIHN0YXRpY19kdHJlZSAgPSBuZXcgQXJyYXkoRF9DT0RFUyAqIDIpO1xuemVybyhzdGF0aWNfZHRyZWUpO1xuLyogVGhlIHN0YXRpYyBkaXN0YW5jZSB0cmVlLiAoQWN0dWFsbHkgYSB0cml2aWFsIHRyZWUgc2luY2UgYWxsIGNvZGVzIHVzZVxuICogNSBiaXRzLilcbiAqL1xuXG52YXIgX2Rpc3RfY29kZSAgICA9IG5ldyBBcnJheShESVNUX0NPREVfTEVOKTtcbnplcm8oX2Rpc3RfY29kZSk7XG4vKiBEaXN0YW5jZSBjb2Rlcy4gVGhlIGZpcnN0IDI1NiB2YWx1ZXMgY29ycmVzcG9uZCB0byB0aGUgZGlzdGFuY2VzXG4gKiAzIC4uIDI1OCwgdGhlIGxhc3QgMjU2IHZhbHVlcyBjb3JyZXNwb25kIHRvIHRoZSB0b3AgOCBiaXRzIG9mXG4gKiB0aGUgMTUgYml0IGRpc3RhbmNlcy5cbiAqL1xuXG52YXIgX2xlbmd0aF9jb2RlICA9IG5ldyBBcnJheShNQVhfTUFUQ0ggLSBNSU5fTUFUQ0ggKyAxKTtcbnplcm8oX2xlbmd0aF9jb2RlKTtcbi8qIGxlbmd0aCBjb2RlIGZvciBlYWNoIG5vcm1hbGl6ZWQgbWF0Y2ggbGVuZ3RoICgwID09IE1JTl9NQVRDSCkgKi9cblxudmFyIGJhc2VfbGVuZ3RoICAgPSBuZXcgQXJyYXkoTEVOR1RIX0NPREVTKTtcbnplcm8oYmFzZV9sZW5ndGgpO1xuLyogRmlyc3Qgbm9ybWFsaXplZCBsZW5ndGggZm9yIGVhY2ggY29kZSAoMCA9IE1JTl9NQVRDSCkgKi9cblxudmFyIGJhc2VfZGlzdCAgICAgPSBuZXcgQXJyYXkoRF9DT0RFUyk7XG56ZXJvKGJhc2VfZGlzdCk7XG4vKiBGaXJzdCBub3JtYWxpemVkIGRpc3RhbmNlIGZvciBlYWNoIGNvZGUgKDAgPSBkaXN0YW5jZSBvZiAxKSAqL1xuXG5cbmZ1bmN0aW9uIFN0YXRpY1RyZWVEZXNjKHN0YXRpY190cmVlLCBleHRyYV9iaXRzLCBleHRyYV9iYXNlLCBlbGVtcywgbWF4X2xlbmd0aCkge1xuXG4gIHRoaXMuc3RhdGljX3RyZWUgID0gc3RhdGljX3RyZWU7ICAvKiBzdGF0aWMgdHJlZSBvciBOVUxMICovXG4gIHRoaXMuZXh0cmFfYml0cyAgID0gZXh0cmFfYml0czsgICAvKiBleHRyYSBiaXRzIGZvciBlYWNoIGNvZGUgb3IgTlVMTCAqL1xuICB0aGlzLmV4dHJhX2Jhc2UgICA9IGV4dHJhX2Jhc2U7ICAgLyogYmFzZSBpbmRleCBmb3IgZXh0cmFfYml0cyAqL1xuICB0aGlzLmVsZW1zICAgICAgICA9IGVsZW1zOyAgICAgICAgLyogbWF4IG51bWJlciBvZiBlbGVtZW50cyBpbiB0aGUgdHJlZSAqL1xuICB0aGlzLm1heF9sZW5ndGggICA9IG1heF9sZW5ndGg7ICAgLyogbWF4IGJpdCBsZW5ndGggZm9yIHRoZSBjb2RlcyAqL1xuXG4gIC8vIHNob3cgaWYgYHN0YXRpY190cmVlYCBoYXMgZGF0YSBvciBkdW1teSAtIG5lZWRlZCBmb3IgbW9ub21vcnBoaWMgb2JqZWN0c1xuICB0aGlzLmhhc19zdHJlZSAgICA9IHN0YXRpY190cmVlICYmIHN0YXRpY190cmVlLmxlbmd0aDtcbn1cblxuXG52YXIgc3RhdGljX2xfZGVzYztcbnZhciBzdGF0aWNfZF9kZXNjO1xudmFyIHN0YXRpY19ibF9kZXNjO1xuXG5cbmZ1bmN0aW9uIFRyZWVEZXNjKGR5bl90cmVlLCBzdGF0X2Rlc2MpIHtcbiAgdGhpcy5keW5fdHJlZSA9IGR5bl90cmVlOyAgICAgLyogdGhlIGR5bmFtaWMgdHJlZSAqL1xuICB0aGlzLm1heF9jb2RlID0gMDsgICAgICAgICAgICAvKiBsYXJnZXN0IGNvZGUgd2l0aCBub24gemVybyBmcmVxdWVuY3kgKi9cbiAgdGhpcy5zdGF0X2Rlc2MgPSBzdGF0X2Rlc2M7ICAgLyogdGhlIGNvcnJlc3BvbmRpbmcgc3RhdGljIHRyZWUgKi9cbn1cblxuXG5cbmZ1bmN0aW9uIGRfY29kZShkaXN0KSB7XG4gIHJldHVybiBkaXN0IDwgMjU2ID8gX2Rpc3RfY29kZVtkaXN0XSA6IF9kaXN0X2NvZGVbMjU2ICsgKGRpc3QgPj4+IDcpXTtcbn1cblxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIE91dHB1dCBhIHNob3J0IExTQiBmaXJzdCBvbiB0aGUgc3RyZWFtLlxuICogSU4gYXNzZXJ0aW9uOiB0aGVyZSBpcyBlbm91Z2ggcm9vbSBpbiBwZW5kaW5nQnVmLlxuICovXG5mdW5jdGlvbiBwdXRfc2hvcnQocywgdykge1xuLy8gICAgcHV0X2J5dGUocywgKHVjaCkoKHcpICYgMHhmZikpO1xuLy8gICAgcHV0X2J5dGUocywgKHVjaCkoKHVzaCkodykgPj4gOCkpO1xuICBzLnBlbmRpbmdfYnVmW3MucGVuZGluZysrXSA9ICh3KSAmIDB4ZmY7XG4gIHMucGVuZGluZ19idWZbcy5wZW5kaW5nKytdID0gKHcgPj4+IDgpICYgMHhmZjtcbn1cblxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIFNlbmQgYSB2YWx1ZSBvbiBhIGdpdmVuIG51bWJlciBvZiBiaXRzLlxuICogSU4gYXNzZXJ0aW9uOiBsZW5ndGggPD0gMTYgYW5kIHZhbHVlIGZpdHMgaW4gbGVuZ3RoIGJpdHMuXG4gKi9cbmZ1bmN0aW9uIHNlbmRfYml0cyhzLCB2YWx1ZSwgbGVuZ3RoKSB7XG4gIGlmIChzLmJpX3ZhbGlkID4gKEJ1Zl9zaXplIC0gbGVuZ3RoKSkge1xuICAgIHMuYmlfYnVmIHw9ICh2YWx1ZSA8PCBzLmJpX3ZhbGlkKSAmIDB4ZmZmZjtcbiAgICBwdXRfc2hvcnQocywgcy5iaV9idWYpO1xuICAgIHMuYmlfYnVmID0gdmFsdWUgPj4gKEJ1Zl9zaXplIC0gcy5iaV92YWxpZCk7XG4gICAgcy5iaV92YWxpZCArPSBsZW5ndGggLSBCdWZfc2l6ZTtcbiAgfSBlbHNlIHtcbiAgICBzLmJpX2J1ZiB8PSAodmFsdWUgPDwgcy5iaV92YWxpZCkgJiAweGZmZmY7XG4gICAgcy5iaV92YWxpZCArPSBsZW5ndGg7XG4gIH1cbn1cblxuXG5mdW5jdGlvbiBzZW5kX2NvZGUocywgYywgdHJlZSkge1xuICBzZW5kX2JpdHMocywgdHJlZVtjICogMl0vKi5Db2RlKi8sIHRyZWVbYyAqIDIgKyAxXS8qLkxlbiovKTtcbn1cblxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIFJldmVyc2UgdGhlIGZpcnN0IGxlbiBiaXRzIG9mIGEgY29kZSwgdXNpbmcgc3RyYWlnaHRmb3J3YXJkIGNvZGUgKGEgZmFzdGVyXG4gKiBtZXRob2Qgd291bGQgdXNlIGEgdGFibGUpXG4gKiBJTiBhc3NlcnRpb246IDEgPD0gbGVuIDw9IDE1XG4gKi9cbmZ1bmN0aW9uIGJpX3JldmVyc2UoY29kZSwgbGVuKSB7XG4gIHZhciByZXMgPSAwO1xuICBkbyB7XG4gICAgcmVzIHw9IGNvZGUgJiAxO1xuICAgIGNvZGUgPj4+PSAxO1xuICAgIHJlcyA8PD0gMTtcbiAgfSB3aGlsZSAoLS1sZW4gPiAwKTtcbiAgcmV0dXJuIHJlcyA+Pj4gMTtcbn1cblxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIEZsdXNoIHRoZSBiaXQgYnVmZmVyLCBrZWVwaW5nIGF0IG1vc3QgNyBiaXRzIGluIGl0LlxuICovXG5mdW5jdGlvbiBiaV9mbHVzaChzKSB7XG4gIGlmIChzLmJpX3ZhbGlkID09PSAxNikge1xuICAgIHB1dF9zaG9ydChzLCBzLmJpX2J1Zik7XG4gICAgcy5iaV9idWYgPSAwO1xuICAgIHMuYmlfdmFsaWQgPSAwO1xuXG4gIH0gZWxzZSBpZiAocy5iaV92YWxpZCA+PSA4KSB7XG4gICAgcy5wZW5kaW5nX2J1ZltzLnBlbmRpbmcrK10gPSBzLmJpX2J1ZiAmIDB4ZmY7XG4gICAgcy5iaV9idWYgPj49IDg7XG4gICAgcy5iaV92YWxpZCAtPSA4O1xuICB9XG59XG5cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBDb21wdXRlIHRoZSBvcHRpbWFsIGJpdCBsZW5ndGhzIGZvciBhIHRyZWUgYW5kIHVwZGF0ZSB0aGUgdG90YWwgYml0IGxlbmd0aFxuICogZm9yIHRoZSBjdXJyZW50IGJsb2NrLlxuICogSU4gYXNzZXJ0aW9uOiB0aGUgZmllbGRzIGZyZXEgYW5kIGRhZCBhcmUgc2V0LCBoZWFwW2hlYXBfbWF4XSBhbmRcbiAqICAgIGFib3ZlIGFyZSB0aGUgdHJlZSBub2RlcyBzb3J0ZWQgYnkgaW5jcmVhc2luZyBmcmVxdWVuY3kuXG4gKiBPVVQgYXNzZXJ0aW9uczogdGhlIGZpZWxkIGxlbiBpcyBzZXQgdG8gdGhlIG9wdGltYWwgYml0IGxlbmd0aCwgdGhlXG4gKiAgICAgYXJyYXkgYmxfY291bnQgY29udGFpbnMgdGhlIGZyZXF1ZW5jaWVzIGZvciBlYWNoIGJpdCBsZW5ndGguXG4gKiAgICAgVGhlIGxlbmd0aCBvcHRfbGVuIGlzIHVwZGF0ZWQ7IHN0YXRpY19sZW4gaXMgYWxzbyB1cGRhdGVkIGlmIHN0cmVlIGlzXG4gKiAgICAgbm90IG51bGwuXG4gKi9cbmZ1bmN0aW9uIGdlbl9iaXRsZW4ocywgZGVzYylcbi8vICAgIGRlZmxhdGVfc3RhdGUgKnM7XG4vLyAgICB0cmVlX2Rlc2MgKmRlc2M7ICAgIC8qIHRoZSB0cmVlIGRlc2NyaXB0b3IgKi9cbntcbiAgdmFyIHRyZWUgICAgICAgICAgICA9IGRlc2MuZHluX3RyZWU7XG4gIHZhciBtYXhfY29kZSAgICAgICAgPSBkZXNjLm1heF9jb2RlO1xuICB2YXIgc3RyZWUgICAgICAgICAgID0gZGVzYy5zdGF0X2Rlc2Muc3RhdGljX3RyZWU7XG4gIHZhciBoYXNfc3RyZWUgICAgICAgPSBkZXNjLnN0YXRfZGVzYy5oYXNfc3RyZWU7XG4gIHZhciBleHRyYSAgICAgICAgICAgPSBkZXNjLnN0YXRfZGVzYy5leHRyYV9iaXRzO1xuICB2YXIgYmFzZSAgICAgICAgICAgID0gZGVzYy5zdGF0X2Rlc2MuZXh0cmFfYmFzZTtcbiAgdmFyIG1heF9sZW5ndGggICAgICA9IGRlc2Muc3RhdF9kZXNjLm1heF9sZW5ndGg7XG4gIHZhciBoOyAgICAgICAgICAgICAgLyogaGVhcCBpbmRleCAqL1xuICB2YXIgbiwgbTsgICAgICAgICAgIC8qIGl0ZXJhdGUgb3ZlciB0aGUgdHJlZSBlbGVtZW50cyAqL1xuICB2YXIgYml0czsgICAgICAgICAgIC8qIGJpdCBsZW5ndGggKi9cbiAgdmFyIHhiaXRzOyAgICAgICAgICAvKiBleHRyYSBiaXRzICovXG4gIHZhciBmOyAgICAgICAgICAgICAgLyogZnJlcXVlbmN5ICovXG4gIHZhciBvdmVyZmxvdyA9IDA7ICAgLyogbnVtYmVyIG9mIGVsZW1lbnRzIHdpdGggYml0IGxlbmd0aCB0b28gbGFyZ2UgKi9cblxuICBmb3IgKGJpdHMgPSAwOyBiaXRzIDw9IE1BWF9CSVRTOyBiaXRzKyspIHtcbiAgICBzLmJsX2NvdW50W2JpdHNdID0gMDtcbiAgfVxuXG4gIC8qIEluIGEgZmlyc3QgcGFzcywgY29tcHV0ZSB0aGUgb3B0aW1hbCBiaXQgbGVuZ3RocyAod2hpY2ggbWF5XG4gICAqIG92ZXJmbG93IGluIHRoZSBjYXNlIG9mIHRoZSBiaXQgbGVuZ3RoIHRyZWUpLlxuICAgKi9cbiAgdHJlZVtzLmhlYXBbcy5oZWFwX21heF0gKiAyICsgMV0vKi5MZW4qLyA9IDA7IC8qIHJvb3Qgb2YgdGhlIGhlYXAgKi9cblxuICBmb3IgKGggPSBzLmhlYXBfbWF4ICsgMTsgaCA8IEhFQVBfU0laRTsgaCsrKSB7XG4gICAgbiA9IHMuaGVhcFtoXTtcbiAgICBiaXRzID0gdHJlZVt0cmVlW24gKiAyICsgMV0vKi5EYWQqLyAqIDIgKyAxXS8qLkxlbiovICsgMTtcbiAgICBpZiAoYml0cyA+IG1heF9sZW5ndGgpIHtcbiAgICAgIGJpdHMgPSBtYXhfbGVuZ3RoO1xuICAgICAgb3ZlcmZsb3crKztcbiAgICB9XG4gICAgdHJlZVtuICogMiArIDFdLyouTGVuKi8gPSBiaXRzO1xuICAgIC8qIFdlIG92ZXJ3cml0ZSB0cmVlW25dLkRhZCB3aGljaCBpcyBubyBsb25nZXIgbmVlZGVkICovXG5cbiAgICBpZiAobiA+IG1heF9jb2RlKSB7IGNvbnRpbnVlOyB9IC8qIG5vdCBhIGxlYWYgbm9kZSAqL1xuXG4gICAgcy5ibF9jb3VudFtiaXRzXSsrO1xuICAgIHhiaXRzID0gMDtcbiAgICBpZiAobiA+PSBiYXNlKSB7XG4gICAgICB4Yml0cyA9IGV4dHJhW24gLSBiYXNlXTtcbiAgICB9XG4gICAgZiA9IHRyZWVbbiAqIDJdLyouRnJlcSovO1xuICAgIHMub3B0X2xlbiArPSBmICogKGJpdHMgKyB4Yml0cyk7XG4gICAgaWYgKGhhc19zdHJlZSkge1xuICAgICAgcy5zdGF0aWNfbGVuICs9IGYgKiAoc3RyZWVbbiAqIDIgKyAxXS8qLkxlbiovICsgeGJpdHMpO1xuICAgIH1cbiAgfVxuICBpZiAob3ZlcmZsb3cgPT09IDApIHsgcmV0dXJuOyB9XG5cbiAgLy8gVHJhY2UoKHN0ZGVycixcIlxcbmJpdCBsZW5ndGggb3ZlcmZsb3dcXG5cIikpO1xuICAvKiBUaGlzIGhhcHBlbnMgZm9yIGV4YW1wbGUgb24gb2JqMiBhbmQgcGljIG9mIHRoZSBDYWxnYXJ5IGNvcnB1cyAqL1xuXG4gIC8qIEZpbmQgdGhlIGZpcnN0IGJpdCBsZW5ndGggd2hpY2ggY291bGQgaW5jcmVhc2U6ICovXG4gIGRvIHtcbiAgICBiaXRzID0gbWF4X2xlbmd0aCAtIDE7XG4gICAgd2hpbGUgKHMuYmxfY291bnRbYml0c10gPT09IDApIHsgYml0cy0tOyB9XG4gICAgcy5ibF9jb3VudFtiaXRzXS0tOyAgICAgIC8qIG1vdmUgb25lIGxlYWYgZG93biB0aGUgdHJlZSAqL1xuICAgIHMuYmxfY291bnRbYml0cyArIDFdICs9IDI7IC8qIG1vdmUgb25lIG92ZXJmbG93IGl0ZW0gYXMgaXRzIGJyb3RoZXIgKi9cbiAgICBzLmJsX2NvdW50W21heF9sZW5ndGhdLS07XG4gICAgLyogVGhlIGJyb3RoZXIgb2YgdGhlIG92ZXJmbG93IGl0ZW0gYWxzbyBtb3ZlcyBvbmUgc3RlcCB1cCxcbiAgICAgKiBidXQgdGhpcyBkb2VzIG5vdCBhZmZlY3QgYmxfY291bnRbbWF4X2xlbmd0aF1cbiAgICAgKi9cbiAgICBvdmVyZmxvdyAtPSAyO1xuICB9IHdoaWxlIChvdmVyZmxvdyA+IDApO1xuXG4gIC8qIE5vdyByZWNvbXB1dGUgYWxsIGJpdCBsZW5ndGhzLCBzY2FubmluZyBpbiBpbmNyZWFzaW5nIGZyZXF1ZW5jeS5cbiAgICogaCBpcyBzdGlsbCBlcXVhbCB0byBIRUFQX1NJWkUuIChJdCBpcyBzaW1wbGVyIHRvIHJlY29uc3RydWN0IGFsbFxuICAgKiBsZW5ndGhzIGluc3RlYWQgb2YgZml4aW5nIG9ubHkgdGhlIHdyb25nIG9uZXMuIFRoaXMgaWRlYSBpcyB0YWtlblxuICAgKiBmcm9tICdhcicgd3JpdHRlbiBieSBIYXJ1aGlrbyBPa3VtdXJhLilcbiAgICovXG4gIGZvciAoYml0cyA9IG1heF9sZW5ndGg7IGJpdHMgIT09IDA7IGJpdHMtLSkge1xuICAgIG4gPSBzLmJsX2NvdW50W2JpdHNdO1xuICAgIHdoaWxlIChuICE9PSAwKSB7XG4gICAgICBtID0gcy5oZWFwWy0taF07XG4gICAgICBpZiAobSA+IG1heF9jb2RlKSB7IGNvbnRpbnVlOyB9XG4gICAgICBpZiAodHJlZVttICogMiArIDFdLyouTGVuKi8gIT09IGJpdHMpIHtcbiAgICAgICAgLy8gVHJhY2UoKHN0ZGVycixcImNvZGUgJWQgYml0cyAlZC0+JWRcXG5cIiwgbSwgdHJlZVttXS5MZW4sIGJpdHMpKTtcbiAgICAgICAgcy5vcHRfbGVuICs9IChiaXRzIC0gdHJlZVttICogMiArIDFdLyouTGVuKi8pICogdHJlZVttICogMl0vKi5GcmVxKi87XG4gICAgICAgIHRyZWVbbSAqIDIgKyAxXS8qLkxlbiovID0gYml0cztcbiAgICAgIH1cbiAgICAgIG4tLTtcbiAgICB9XG4gIH1cbn1cblxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIEdlbmVyYXRlIHRoZSBjb2RlcyBmb3IgYSBnaXZlbiB0cmVlIGFuZCBiaXQgY291bnRzICh3aGljaCBuZWVkIG5vdCBiZVxuICogb3B0aW1hbCkuXG4gKiBJTiBhc3NlcnRpb246IHRoZSBhcnJheSBibF9jb3VudCBjb250YWlucyB0aGUgYml0IGxlbmd0aCBzdGF0aXN0aWNzIGZvclxuICogdGhlIGdpdmVuIHRyZWUgYW5kIHRoZSBmaWVsZCBsZW4gaXMgc2V0IGZvciBhbGwgdHJlZSBlbGVtZW50cy5cbiAqIE9VVCBhc3NlcnRpb246IHRoZSBmaWVsZCBjb2RlIGlzIHNldCBmb3IgYWxsIHRyZWUgZWxlbWVudHMgb2Ygbm9uXG4gKiAgICAgemVybyBjb2RlIGxlbmd0aC5cbiAqL1xuZnVuY3Rpb24gZ2VuX2NvZGVzKHRyZWUsIG1heF9jb2RlLCBibF9jb3VudClcbi8vICAgIGN0X2RhdGEgKnRyZWU7ICAgICAgICAgICAgIC8qIHRoZSB0cmVlIHRvIGRlY29yYXRlICovXG4vLyAgICBpbnQgbWF4X2NvZGU7ICAgICAgICAgICAgICAvKiBsYXJnZXN0IGNvZGUgd2l0aCBub24gemVybyBmcmVxdWVuY3kgKi9cbi8vICAgIHVzaGYgKmJsX2NvdW50OyAgICAgICAgICAgIC8qIG51bWJlciBvZiBjb2RlcyBhdCBlYWNoIGJpdCBsZW5ndGggKi9cbntcbiAgdmFyIG5leHRfY29kZSA9IG5ldyBBcnJheShNQVhfQklUUyArIDEpOyAvKiBuZXh0IGNvZGUgdmFsdWUgZm9yIGVhY2ggYml0IGxlbmd0aCAqL1xuICB2YXIgY29kZSA9IDA7ICAgICAgICAgICAgICAvKiBydW5uaW5nIGNvZGUgdmFsdWUgKi9cbiAgdmFyIGJpdHM7ICAgICAgICAgICAgICAgICAgLyogYml0IGluZGV4ICovXG4gIHZhciBuOyAgICAgICAgICAgICAgICAgICAgIC8qIGNvZGUgaW5kZXggKi9cblxuICAvKiBUaGUgZGlzdHJpYnV0aW9uIGNvdW50cyBhcmUgZmlyc3QgdXNlZCB0byBnZW5lcmF0ZSB0aGUgY29kZSB2YWx1ZXNcbiAgICogd2l0aG91dCBiaXQgcmV2ZXJzYWwuXG4gICAqL1xuICBmb3IgKGJpdHMgPSAxOyBiaXRzIDw9IE1BWF9CSVRTOyBiaXRzKyspIHtcbiAgICBuZXh0X2NvZGVbYml0c10gPSBjb2RlID0gKGNvZGUgKyBibF9jb3VudFtiaXRzIC0gMV0pIDw8IDE7XG4gIH1cbiAgLyogQ2hlY2sgdGhhdCB0aGUgYml0IGNvdW50cyBpbiBibF9jb3VudCBhcmUgY29uc2lzdGVudC4gVGhlIGxhc3QgY29kZVxuICAgKiBtdXN0IGJlIGFsbCBvbmVzLlxuICAgKi9cbiAgLy9Bc3NlcnQgKGNvZGUgKyBibF9jb3VudFtNQVhfQklUU10tMSA9PSAoMTw8TUFYX0JJVFMpLTEsXG4gIC8vICAgICAgICBcImluY29uc2lzdGVudCBiaXQgY291bnRzXCIpO1xuICAvL1RyYWNldigoc3RkZXJyLFwiXFxuZ2VuX2NvZGVzOiBtYXhfY29kZSAlZCBcIiwgbWF4X2NvZGUpKTtcblxuICBmb3IgKG4gPSAwOyAgbiA8PSBtYXhfY29kZTsgbisrKSB7XG4gICAgdmFyIGxlbiA9IHRyZWVbbiAqIDIgKyAxXS8qLkxlbiovO1xuICAgIGlmIChsZW4gPT09IDApIHsgY29udGludWU7IH1cbiAgICAvKiBOb3cgcmV2ZXJzZSB0aGUgYml0cyAqL1xuICAgIHRyZWVbbiAqIDJdLyouQ29kZSovID0gYmlfcmV2ZXJzZShuZXh0X2NvZGVbbGVuXSsrLCBsZW4pO1xuXG4gICAgLy9UcmFjZWN2KHRyZWUgIT0gc3RhdGljX2x0cmVlLCAoc3RkZXJyLFwiXFxubiAlM2QgJWMgbCAlMmQgYyAlNHggKCV4KSBcIixcbiAgICAvLyAgICAgbiwgKGlzZ3JhcGgobikgPyBuIDogJyAnKSwgbGVuLCB0cmVlW25dLkNvZGUsIG5leHRfY29kZVtsZW5dLTEpKTtcbiAgfVxufVxuXG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICogSW5pdGlhbGl6ZSB0aGUgdmFyaW91cyAnY29uc3RhbnQnIHRhYmxlcy5cbiAqL1xuZnVuY3Rpb24gdHJfc3RhdGljX2luaXQoKSB7XG4gIHZhciBuOyAgICAgICAgLyogaXRlcmF0ZXMgb3ZlciB0cmVlIGVsZW1lbnRzICovXG4gIHZhciBiaXRzOyAgICAgLyogYml0IGNvdW50ZXIgKi9cbiAgdmFyIGxlbmd0aDsgICAvKiBsZW5ndGggdmFsdWUgKi9cbiAgdmFyIGNvZGU7ICAgICAvKiBjb2RlIHZhbHVlICovXG4gIHZhciBkaXN0OyAgICAgLyogZGlzdGFuY2UgaW5kZXggKi9cbiAgdmFyIGJsX2NvdW50ID0gbmV3IEFycmF5KE1BWF9CSVRTICsgMSk7XG4gIC8qIG51bWJlciBvZiBjb2RlcyBhdCBlYWNoIGJpdCBsZW5ndGggZm9yIGFuIG9wdGltYWwgdHJlZSAqL1xuXG4gIC8vIGRvIGNoZWNrIGluIF90cl9pbml0KClcbiAgLy9pZiAoc3RhdGljX2luaXRfZG9uZSkgcmV0dXJuO1xuXG4gIC8qIEZvciBzb21lIGVtYmVkZGVkIHRhcmdldHMsIGdsb2JhbCB2YXJpYWJsZXMgYXJlIG5vdCBpbml0aWFsaXplZDogKi9cbi8qI2lmZGVmIE5PX0lOSVRfR0xPQkFMX1BPSU5URVJTXG4gIHN0YXRpY19sX2Rlc2Muc3RhdGljX3RyZWUgPSBzdGF0aWNfbHRyZWU7XG4gIHN0YXRpY19sX2Rlc2MuZXh0cmFfYml0cyA9IGV4dHJhX2xiaXRzO1xuICBzdGF0aWNfZF9kZXNjLnN0YXRpY190cmVlID0gc3RhdGljX2R0cmVlO1xuICBzdGF0aWNfZF9kZXNjLmV4dHJhX2JpdHMgPSBleHRyYV9kYml0cztcbiAgc3RhdGljX2JsX2Rlc2MuZXh0cmFfYml0cyA9IGV4dHJhX2JsYml0cztcbiNlbmRpZiovXG5cbiAgLyogSW5pdGlhbGl6ZSB0aGUgbWFwcGluZyBsZW5ndGggKDAuLjI1NSkgLT4gbGVuZ3RoIGNvZGUgKDAuLjI4KSAqL1xuICBsZW5ndGggPSAwO1xuICBmb3IgKGNvZGUgPSAwOyBjb2RlIDwgTEVOR1RIX0NPREVTIC0gMTsgY29kZSsrKSB7XG4gICAgYmFzZV9sZW5ndGhbY29kZV0gPSBsZW5ndGg7XG4gICAgZm9yIChuID0gMDsgbiA8ICgxIDw8IGV4dHJhX2xiaXRzW2NvZGVdKTsgbisrKSB7XG4gICAgICBfbGVuZ3RoX2NvZGVbbGVuZ3RoKytdID0gY29kZTtcbiAgICB9XG4gIH1cbiAgLy9Bc3NlcnQgKGxlbmd0aCA9PSAyNTYsIFwidHJfc3RhdGljX2luaXQ6IGxlbmd0aCAhPSAyNTZcIik7XG4gIC8qIE5vdGUgdGhhdCB0aGUgbGVuZ3RoIDI1NSAobWF0Y2ggbGVuZ3RoIDI1OCkgY2FuIGJlIHJlcHJlc2VudGVkXG4gICAqIGluIHR3byBkaWZmZXJlbnQgd2F5czogY29kZSAyODQgKyA1IGJpdHMgb3IgY29kZSAyODUsIHNvIHdlXG4gICAqIG92ZXJ3cml0ZSBsZW5ndGhfY29kZVsyNTVdIHRvIHVzZSB0aGUgYmVzdCBlbmNvZGluZzpcbiAgICovXG4gIF9sZW5ndGhfY29kZVtsZW5ndGggLSAxXSA9IGNvZGU7XG5cbiAgLyogSW5pdGlhbGl6ZSB0aGUgbWFwcGluZyBkaXN0ICgwLi4zMkspIC0+IGRpc3QgY29kZSAoMC4uMjkpICovXG4gIGRpc3QgPSAwO1xuICBmb3IgKGNvZGUgPSAwOyBjb2RlIDwgMTY7IGNvZGUrKykge1xuICAgIGJhc2VfZGlzdFtjb2RlXSA9IGRpc3Q7XG4gICAgZm9yIChuID0gMDsgbiA8ICgxIDw8IGV4dHJhX2RiaXRzW2NvZGVdKTsgbisrKSB7XG4gICAgICBfZGlzdF9jb2RlW2Rpc3QrK10gPSBjb2RlO1xuICAgIH1cbiAgfVxuICAvL0Fzc2VydCAoZGlzdCA9PSAyNTYsIFwidHJfc3RhdGljX2luaXQ6IGRpc3QgIT0gMjU2XCIpO1xuICBkaXN0ID4+PSA3OyAvKiBmcm9tIG5vdyBvbiwgYWxsIGRpc3RhbmNlcyBhcmUgZGl2aWRlZCBieSAxMjggKi9cbiAgZm9yICg7IGNvZGUgPCBEX0NPREVTOyBjb2RlKyspIHtcbiAgICBiYXNlX2Rpc3RbY29kZV0gPSBkaXN0IDw8IDc7XG4gICAgZm9yIChuID0gMDsgbiA8ICgxIDw8IChleHRyYV9kYml0c1tjb2RlXSAtIDcpKTsgbisrKSB7XG4gICAgICBfZGlzdF9jb2RlWzI1NiArIGRpc3QrK10gPSBjb2RlO1xuICAgIH1cbiAgfVxuICAvL0Fzc2VydCAoZGlzdCA9PSAyNTYsIFwidHJfc3RhdGljX2luaXQ6IDI1NitkaXN0ICE9IDUxMlwiKTtcblxuICAvKiBDb25zdHJ1Y3QgdGhlIGNvZGVzIG9mIHRoZSBzdGF0aWMgbGl0ZXJhbCB0cmVlICovXG4gIGZvciAoYml0cyA9IDA7IGJpdHMgPD0gTUFYX0JJVFM7IGJpdHMrKykge1xuICAgIGJsX2NvdW50W2JpdHNdID0gMDtcbiAgfVxuXG4gIG4gPSAwO1xuICB3aGlsZSAobiA8PSAxNDMpIHtcbiAgICBzdGF0aWNfbHRyZWVbbiAqIDIgKyAxXS8qLkxlbiovID0gODtcbiAgICBuKys7XG4gICAgYmxfY291bnRbOF0rKztcbiAgfVxuICB3aGlsZSAobiA8PSAyNTUpIHtcbiAgICBzdGF0aWNfbHRyZWVbbiAqIDIgKyAxXS8qLkxlbiovID0gOTtcbiAgICBuKys7XG4gICAgYmxfY291bnRbOV0rKztcbiAgfVxuICB3aGlsZSAobiA8PSAyNzkpIHtcbiAgICBzdGF0aWNfbHRyZWVbbiAqIDIgKyAxXS8qLkxlbiovID0gNztcbiAgICBuKys7XG4gICAgYmxfY291bnRbN10rKztcbiAgfVxuICB3aGlsZSAobiA8PSAyODcpIHtcbiAgICBzdGF0aWNfbHRyZWVbbiAqIDIgKyAxXS8qLkxlbiovID0gODtcbiAgICBuKys7XG4gICAgYmxfY291bnRbOF0rKztcbiAgfVxuICAvKiBDb2RlcyAyODYgYW5kIDI4NyBkbyBub3QgZXhpc3QsIGJ1dCB3ZSBtdXN0IGluY2x1ZGUgdGhlbSBpbiB0aGVcbiAgICogdHJlZSBjb25zdHJ1Y3Rpb24gdG8gZ2V0IGEgY2Fub25pY2FsIEh1ZmZtYW4gdHJlZSAobG9uZ2VzdCBjb2RlXG4gICAqIGFsbCBvbmVzKVxuICAgKi9cbiAgZ2VuX2NvZGVzKHN0YXRpY19sdHJlZSwgTF9DT0RFUyArIDEsIGJsX2NvdW50KTtcblxuICAvKiBUaGUgc3RhdGljIGRpc3RhbmNlIHRyZWUgaXMgdHJpdmlhbDogKi9cbiAgZm9yIChuID0gMDsgbiA8IERfQ09ERVM7IG4rKykge1xuICAgIHN0YXRpY19kdHJlZVtuICogMiArIDFdLyouTGVuKi8gPSA1O1xuICAgIHN0YXRpY19kdHJlZVtuICogMl0vKi5Db2RlKi8gPSBiaV9yZXZlcnNlKG4sIDUpO1xuICB9XG5cbiAgLy8gTm93IGRhdGEgcmVhZHkgYW5kIHdlIGNhbiBpbml0IHN0YXRpYyB0cmVlc1xuICBzdGF0aWNfbF9kZXNjID0gbmV3IFN0YXRpY1RyZWVEZXNjKHN0YXRpY19sdHJlZSwgZXh0cmFfbGJpdHMsIExJVEVSQUxTICsgMSwgTF9DT0RFUywgTUFYX0JJVFMpO1xuICBzdGF0aWNfZF9kZXNjID0gbmV3IFN0YXRpY1RyZWVEZXNjKHN0YXRpY19kdHJlZSwgZXh0cmFfZGJpdHMsIDAsICAgICAgICAgIERfQ09ERVMsIE1BWF9CSVRTKTtcbiAgc3RhdGljX2JsX2Rlc2MgPSBuZXcgU3RhdGljVHJlZURlc2MobmV3IEFycmF5KDApLCBleHRyYV9ibGJpdHMsIDAsICAgICAgICAgQkxfQ09ERVMsIE1BWF9CTF9CSVRTKTtcblxuICAvL3N0YXRpY19pbml0X2RvbmUgPSB0cnVlO1xufVxuXG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICogSW5pdGlhbGl6ZSBhIG5ldyBibG9jay5cbiAqL1xuZnVuY3Rpb24gaW5pdF9ibG9jayhzKSB7XG4gIHZhciBuOyAvKiBpdGVyYXRlcyBvdmVyIHRyZWUgZWxlbWVudHMgKi9cblxuICAvKiBJbml0aWFsaXplIHRoZSB0cmVlcy4gKi9cbiAgZm9yIChuID0gMDsgbiA8IExfQ09ERVM7ICBuKyspIHsgcy5keW5fbHRyZWVbbiAqIDJdLyouRnJlcSovID0gMDsgfVxuICBmb3IgKG4gPSAwOyBuIDwgRF9DT0RFUzsgIG4rKykgeyBzLmR5bl9kdHJlZVtuICogMl0vKi5GcmVxKi8gPSAwOyB9XG4gIGZvciAobiA9IDA7IG4gPCBCTF9DT0RFUzsgbisrKSB7IHMuYmxfdHJlZVtuICogMl0vKi5GcmVxKi8gPSAwOyB9XG5cbiAgcy5keW5fbHRyZWVbRU5EX0JMT0NLICogMl0vKi5GcmVxKi8gPSAxO1xuICBzLm9wdF9sZW4gPSBzLnN0YXRpY19sZW4gPSAwO1xuICBzLmxhc3RfbGl0ID0gcy5tYXRjaGVzID0gMDtcbn1cblxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIEZsdXNoIHRoZSBiaXQgYnVmZmVyIGFuZCBhbGlnbiB0aGUgb3V0cHV0IG9uIGEgYnl0ZSBib3VuZGFyeVxuICovXG5mdW5jdGlvbiBiaV93aW5kdXAocylcbntcbiAgaWYgKHMuYmlfdmFsaWQgPiA4KSB7XG4gICAgcHV0X3Nob3J0KHMsIHMuYmlfYnVmKTtcbiAgfSBlbHNlIGlmIChzLmJpX3ZhbGlkID4gMCkge1xuICAgIC8vcHV0X2J5dGUocywgKEJ5dGUpcy0+YmlfYnVmKTtcbiAgICBzLnBlbmRpbmdfYnVmW3MucGVuZGluZysrXSA9IHMuYmlfYnVmO1xuICB9XG4gIHMuYmlfYnVmID0gMDtcbiAgcy5iaV92YWxpZCA9IDA7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICogQ29weSBhIHN0b3JlZCBibG9jaywgc3RvcmluZyBmaXJzdCB0aGUgbGVuZ3RoIGFuZCBpdHNcbiAqIG9uZSdzIGNvbXBsZW1lbnQgaWYgcmVxdWVzdGVkLlxuICovXG5mdW5jdGlvbiBjb3B5X2Jsb2NrKHMsIGJ1ZiwgbGVuLCBoZWFkZXIpXG4vL0RlZmxhdGVTdGF0ZSAqcztcbi8vY2hhcmYgICAgKmJ1ZjsgICAgLyogdGhlIGlucHV0IGRhdGEgKi9cbi8vdW5zaWduZWQgbGVuOyAgICAgLyogaXRzIGxlbmd0aCAqL1xuLy9pbnQgICAgICBoZWFkZXI7ICAvKiB0cnVlIGlmIGJsb2NrIGhlYWRlciBtdXN0IGJlIHdyaXR0ZW4gKi9cbntcbiAgYmlfd2luZHVwKHMpOyAgICAgICAgLyogYWxpZ24gb24gYnl0ZSBib3VuZGFyeSAqL1xuXG4gIGlmIChoZWFkZXIpIHtcbiAgICBwdXRfc2hvcnQocywgbGVuKTtcbiAgICBwdXRfc2hvcnQocywgfmxlbik7XG4gIH1cbi8vICB3aGlsZSAobGVuLS0pIHtcbi8vICAgIHB1dF9ieXRlKHMsICpidWYrKyk7XG4vLyAgfVxuICB1dGlscy5hcnJheVNldChzLnBlbmRpbmdfYnVmLCBzLndpbmRvdywgYnVmLCBsZW4sIHMucGVuZGluZyk7XG4gIHMucGVuZGluZyArPSBsZW47XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICogQ29tcGFyZXMgdG8gc3VidHJlZXMsIHVzaW5nIHRoZSB0cmVlIGRlcHRoIGFzIHRpZSBicmVha2VyIHdoZW5cbiAqIHRoZSBzdWJ0cmVlcyBoYXZlIGVxdWFsIGZyZXF1ZW5jeS4gVGhpcyBtaW5pbWl6ZXMgdGhlIHdvcnN0IGNhc2UgbGVuZ3RoLlxuICovXG5mdW5jdGlvbiBzbWFsbGVyKHRyZWUsIG4sIG0sIGRlcHRoKSB7XG4gIHZhciBfbjIgPSBuICogMjtcbiAgdmFyIF9tMiA9IG0gKiAyO1xuICByZXR1cm4gKHRyZWVbX24yXS8qLkZyZXEqLyA8IHRyZWVbX20yXS8qLkZyZXEqLyB8fFxuICAgICAgICAgKHRyZWVbX24yXS8qLkZyZXEqLyA9PT0gdHJlZVtfbTJdLyouRnJlcSovICYmIGRlcHRoW25dIDw9IGRlcHRoW21dKSk7XG59XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICogUmVzdG9yZSB0aGUgaGVhcCBwcm9wZXJ0eSBieSBtb3ZpbmcgZG93biB0aGUgdHJlZSBzdGFydGluZyBhdCBub2RlIGssXG4gKiBleGNoYW5naW5nIGEgbm9kZSB3aXRoIHRoZSBzbWFsbGVzdCBvZiBpdHMgdHdvIHNvbnMgaWYgbmVjZXNzYXJ5LCBzdG9wcGluZ1xuICogd2hlbiB0aGUgaGVhcCBwcm9wZXJ0eSBpcyByZS1lc3RhYmxpc2hlZCAoZWFjaCBmYXRoZXIgc21hbGxlciB0aGFuIGl0c1xuICogdHdvIHNvbnMpLlxuICovXG5mdW5jdGlvbiBwcWRvd25oZWFwKHMsIHRyZWUsIGspXG4vLyAgICBkZWZsYXRlX3N0YXRlICpzO1xuLy8gICAgY3RfZGF0YSAqdHJlZTsgIC8qIHRoZSB0cmVlIHRvIHJlc3RvcmUgKi9cbi8vICAgIGludCBrOyAgICAgICAgICAgICAgIC8qIG5vZGUgdG8gbW92ZSBkb3duICovXG57XG4gIHZhciB2ID0gcy5oZWFwW2tdO1xuICB2YXIgaiA9IGsgPDwgMTsgIC8qIGxlZnQgc29uIG9mIGsgKi9cbiAgd2hpbGUgKGogPD0gcy5oZWFwX2xlbikge1xuICAgIC8qIFNldCBqIHRvIHRoZSBzbWFsbGVzdCBvZiB0aGUgdHdvIHNvbnM6ICovXG4gICAgaWYgKGogPCBzLmhlYXBfbGVuICYmXG4gICAgICBzbWFsbGVyKHRyZWUsIHMuaGVhcFtqICsgMV0sIHMuaGVhcFtqXSwgcy5kZXB0aCkpIHtcbiAgICAgIGorKztcbiAgICB9XG4gICAgLyogRXhpdCBpZiB2IGlzIHNtYWxsZXIgdGhhbiBib3RoIHNvbnMgKi9cbiAgICBpZiAoc21hbGxlcih0cmVlLCB2LCBzLmhlYXBbal0sIHMuZGVwdGgpKSB7IGJyZWFrOyB9XG5cbiAgICAvKiBFeGNoYW5nZSB2IHdpdGggdGhlIHNtYWxsZXN0IHNvbiAqL1xuICAgIHMuaGVhcFtrXSA9IHMuaGVhcFtqXTtcbiAgICBrID0gajtcblxuICAgIC8qIEFuZCBjb250aW51ZSBkb3duIHRoZSB0cmVlLCBzZXR0aW5nIGogdG8gdGhlIGxlZnQgc29uIG9mIGsgKi9cbiAgICBqIDw8PSAxO1xuICB9XG4gIHMuaGVhcFtrXSA9IHY7XG59XG5cblxuLy8gaW5saW5lZCBtYW51YWxseVxuLy8gdmFyIFNNQUxMRVNUID0gMTtcblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBTZW5kIHRoZSBibG9jayBkYXRhIGNvbXByZXNzZWQgdXNpbmcgdGhlIGdpdmVuIEh1ZmZtYW4gdHJlZXNcbiAqL1xuZnVuY3Rpb24gY29tcHJlc3NfYmxvY2socywgbHRyZWUsIGR0cmVlKVxuLy8gICAgZGVmbGF0ZV9zdGF0ZSAqcztcbi8vICAgIGNvbnN0IGN0X2RhdGEgKmx0cmVlOyAvKiBsaXRlcmFsIHRyZWUgKi9cbi8vICAgIGNvbnN0IGN0X2RhdGEgKmR0cmVlOyAvKiBkaXN0YW5jZSB0cmVlICovXG57XG4gIHZhciBkaXN0OyAgICAgICAgICAgLyogZGlzdGFuY2Ugb2YgbWF0Y2hlZCBzdHJpbmcgKi9cbiAgdmFyIGxjOyAgICAgICAgICAgICAvKiBtYXRjaCBsZW5ndGggb3IgdW5tYXRjaGVkIGNoYXIgKGlmIGRpc3QgPT0gMCkgKi9cbiAgdmFyIGx4ID0gMDsgICAgICAgICAvKiBydW5uaW5nIGluZGV4IGluIGxfYnVmICovXG4gIHZhciBjb2RlOyAgICAgICAgICAgLyogdGhlIGNvZGUgdG8gc2VuZCAqL1xuICB2YXIgZXh0cmE7ICAgICAgICAgIC8qIG51bWJlciBvZiBleHRyYSBiaXRzIHRvIHNlbmQgKi9cblxuICBpZiAocy5sYXN0X2xpdCAhPT0gMCkge1xuICAgIGRvIHtcbiAgICAgIGRpc3QgPSAocy5wZW5kaW5nX2J1ZltzLmRfYnVmICsgbHggKiAyXSA8PCA4KSB8IChzLnBlbmRpbmdfYnVmW3MuZF9idWYgKyBseCAqIDIgKyAxXSk7XG4gICAgICBsYyA9IHMucGVuZGluZ19idWZbcy5sX2J1ZiArIGx4XTtcbiAgICAgIGx4Kys7XG5cbiAgICAgIGlmIChkaXN0ID09PSAwKSB7XG4gICAgICAgIHNlbmRfY29kZShzLCBsYywgbHRyZWUpOyAvKiBzZW5kIGEgbGl0ZXJhbCBieXRlICovXG4gICAgICAgIC8vVHJhY2Vjdihpc2dyYXBoKGxjKSwgKHN0ZGVycixcIiAnJWMnIFwiLCBsYykpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLyogSGVyZSwgbGMgaXMgdGhlIG1hdGNoIGxlbmd0aCAtIE1JTl9NQVRDSCAqL1xuICAgICAgICBjb2RlID0gX2xlbmd0aF9jb2RlW2xjXTtcbiAgICAgICAgc2VuZF9jb2RlKHMsIGNvZGUgKyBMSVRFUkFMUyArIDEsIGx0cmVlKTsgLyogc2VuZCB0aGUgbGVuZ3RoIGNvZGUgKi9cbiAgICAgICAgZXh0cmEgPSBleHRyYV9sYml0c1tjb2RlXTtcbiAgICAgICAgaWYgKGV4dHJhICE9PSAwKSB7XG4gICAgICAgICAgbGMgLT0gYmFzZV9sZW5ndGhbY29kZV07XG4gICAgICAgICAgc2VuZF9iaXRzKHMsIGxjLCBleHRyYSk7ICAgICAgIC8qIHNlbmQgdGhlIGV4dHJhIGxlbmd0aCBiaXRzICovXG4gICAgICAgIH1cbiAgICAgICAgZGlzdC0tOyAvKiBkaXN0IGlzIG5vdyB0aGUgbWF0Y2ggZGlzdGFuY2UgLSAxICovXG4gICAgICAgIGNvZGUgPSBkX2NvZGUoZGlzdCk7XG4gICAgICAgIC8vQXNzZXJ0IChjb2RlIDwgRF9DT0RFUywgXCJiYWQgZF9jb2RlXCIpO1xuXG4gICAgICAgIHNlbmRfY29kZShzLCBjb2RlLCBkdHJlZSk7ICAgICAgIC8qIHNlbmQgdGhlIGRpc3RhbmNlIGNvZGUgKi9cbiAgICAgICAgZXh0cmEgPSBleHRyYV9kYml0c1tjb2RlXTtcbiAgICAgICAgaWYgKGV4dHJhICE9PSAwKSB7XG4gICAgICAgICAgZGlzdCAtPSBiYXNlX2Rpc3RbY29kZV07XG4gICAgICAgICAgc2VuZF9iaXRzKHMsIGRpc3QsIGV4dHJhKTsgICAvKiBzZW5kIHRoZSBleHRyYSBkaXN0YW5jZSBiaXRzICovXG4gICAgICAgIH1cbiAgICAgIH0gLyogbGl0ZXJhbCBvciBtYXRjaCBwYWlyID8gKi9cblxuICAgICAgLyogQ2hlY2sgdGhhdCB0aGUgb3ZlcmxheSBiZXR3ZWVuIHBlbmRpbmdfYnVmIGFuZCBkX2J1ZitsX2J1ZiBpcyBvazogKi9cbiAgICAgIC8vQXNzZXJ0KCh1SW50KShzLT5wZW5kaW5nKSA8IHMtPmxpdF9idWZzaXplICsgMipseCxcbiAgICAgIC8vICAgICAgIFwicGVuZGluZ0J1ZiBvdmVyZmxvd1wiKTtcblxuICAgIH0gd2hpbGUgKGx4IDwgcy5sYXN0X2xpdCk7XG4gIH1cblxuICBzZW5kX2NvZGUocywgRU5EX0JMT0NLLCBsdHJlZSk7XG59XG5cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBDb25zdHJ1Y3Qgb25lIEh1ZmZtYW4gdHJlZSBhbmQgYXNzaWducyB0aGUgY29kZSBiaXQgc3RyaW5ncyBhbmQgbGVuZ3Rocy5cbiAqIFVwZGF0ZSB0aGUgdG90YWwgYml0IGxlbmd0aCBmb3IgdGhlIGN1cnJlbnQgYmxvY2suXG4gKiBJTiBhc3NlcnRpb246IHRoZSBmaWVsZCBmcmVxIGlzIHNldCBmb3IgYWxsIHRyZWUgZWxlbWVudHMuXG4gKiBPVVQgYXNzZXJ0aW9uczogdGhlIGZpZWxkcyBsZW4gYW5kIGNvZGUgYXJlIHNldCB0byB0aGUgb3B0aW1hbCBiaXQgbGVuZ3RoXG4gKiAgICAgYW5kIGNvcnJlc3BvbmRpbmcgY29kZS4gVGhlIGxlbmd0aCBvcHRfbGVuIGlzIHVwZGF0ZWQ7IHN0YXRpY19sZW4gaXNcbiAqICAgICBhbHNvIHVwZGF0ZWQgaWYgc3RyZWUgaXMgbm90IG51bGwuIFRoZSBmaWVsZCBtYXhfY29kZSBpcyBzZXQuXG4gKi9cbmZ1bmN0aW9uIGJ1aWxkX3RyZWUocywgZGVzYylcbi8vICAgIGRlZmxhdGVfc3RhdGUgKnM7XG4vLyAgICB0cmVlX2Rlc2MgKmRlc2M7IC8qIHRoZSB0cmVlIGRlc2NyaXB0b3IgKi9cbntcbiAgdmFyIHRyZWUgICAgID0gZGVzYy5keW5fdHJlZTtcbiAgdmFyIHN0cmVlICAgID0gZGVzYy5zdGF0X2Rlc2Muc3RhdGljX3RyZWU7XG4gIHZhciBoYXNfc3RyZWUgPSBkZXNjLnN0YXRfZGVzYy5oYXNfc3RyZWU7XG4gIHZhciBlbGVtcyAgICA9IGRlc2Muc3RhdF9kZXNjLmVsZW1zO1xuICB2YXIgbiwgbTsgICAgICAgICAgLyogaXRlcmF0ZSBvdmVyIGhlYXAgZWxlbWVudHMgKi9cbiAgdmFyIG1heF9jb2RlID0gLTE7IC8qIGxhcmdlc3QgY29kZSB3aXRoIG5vbiB6ZXJvIGZyZXF1ZW5jeSAqL1xuICB2YXIgbm9kZTsgICAgICAgICAgLyogbmV3IG5vZGUgYmVpbmcgY3JlYXRlZCAqL1xuXG4gIC8qIENvbnN0cnVjdCB0aGUgaW5pdGlhbCBoZWFwLCB3aXRoIGxlYXN0IGZyZXF1ZW50IGVsZW1lbnQgaW5cbiAgICogaGVhcFtTTUFMTEVTVF0uIFRoZSBzb25zIG9mIGhlYXBbbl0gYXJlIGhlYXBbMipuXSBhbmQgaGVhcFsyKm4rMV0uXG4gICAqIGhlYXBbMF0gaXMgbm90IHVzZWQuXG4gICAqL1xuICBzLmhlYXBfbGVuID0gMDtcbiAgcy5oZWFwX21heCA9IEhFQVBfU0laRTtcblxuICBmb3IgKG4gPSAwOyBuIDwgZWxlbXM7IG4rKykge1xuICAgIGlmICh0cmVlW24gKiAyXS8qLkZyZXEqLyAhPT0gMCkge1xuICAgICAgcy5oZWFwWysrcy5oZWFwX2xlbl0gPSBtYXhfY29kZSA9IG47XG4gICAgICBzLmRlcHRoW25dID0gMDtcblxuICAgIH0gZWxzZSB7XG4gICAgICB0cmVlW24gKiAyICsgMV0vKi5MZW4qLyA9IDA7XG4gICAgfVxuICB9XG5cbiAgLyogVGhlIHBremlwIGZvcm1hdCByZXF1aXJlcyB0aGF0IGF0IGxlYXN0IG9uZSBkaXN0YW5jZSBjb2RlIGV4aXN0cyxcbiAgICogYW5kIHRoYXQgYXQgbGVhc3Qgb25lIGJpdCBzaG91bGQgYmUgc2VudCBldmVuIGlmIHRoZXJlIGlzIG9ubHkgb25lXG4gICAqIHBvc3NpYmxlIGNvZGUuIFNvIHRvIGF2b2lkIHNwZWNpYWwgY2hlY2tzIGxhdGVyIG9uIHdlIGZvcmNlIGF0IGxlYXN0XG4gICAqIHR3byBjb2RlcyBvZiBub24gemVybyBmcmVxdWVuY3kuXG4gICAqL1xuICB3aGlsZSAocy5oZWFwX2xlbiA8IDIpIHtcbiAgICBub2RlID0gcy5oZWFwWysrcy5oZWFwX2xlbl0gPSAobWF4X2NvZGUgPCAyID8gKyttYXhfY29kZSA6IDApO1xuICAgIHRyZWVbbm9kZSAqIDJdLyouRnJlcSovID0gMTtcbiAgICBzLmRlcHRoW25vZGVdID0gMDtcbiAgICBzLm9wdF9sZW4tLTtcblxuICAgIGlmIChoYXNfc3RyZWUpIHtcbiAgICAgIHMuc3RhdGljX2xlbiAtPSBzdHJlZVtub2RlICogMiArIDFdLyouTGVuKi87XG4gICAgfVxuICAgIC8qIG5vZGUgaXMgMCBvciAxIHNvIGl0IGRvZXMgbm90IGhhdmUgZXh0cmEgYml0cyAqL1xuICB9XG4gIGRlc2MubWF4X2NvZGUgPSBtYXhfY29kZTtcblxuICAvKiBUaGUgZWxlbWVudHMgaGVhcFtoZWFwX2xlbi8yKzEgLi4gaGVhcF9sZW5dIGFyZSBsZWF2ZXMgb2YgdGhlIHRyZWUsXG4gICAqIGVzdGFibGlzaCBzdWItaGVhcHMgb2YgaW5jcmVhc2luZyBsZW5ndGhzOlxuICAgKi9cbiAgZm9yIChuID0gKHMuaGVhcF9sZW4gPj4gMS8qaW50IC8yKi8pOyBuID49IDE7IG4tLSkgeyBwcWRvd25oZWFwKHMsIHRyZWUsIG4pOyB9XG5cbiAgLyogQ29uc3RydWN0IHRoZSBIdWZmbWFuIHRyZWUgYnkgcmVwZWF0ZWRseSBjb21iaW5pbmcgdGhlIGxlYXN0IHR3b1xuICAgKiBmcmVxdWVudCBub2Rlcy5cbiAgICovXG4gIG5vZGUgPSBlbGVtczsgICAgICAgICAgICAgIC8qIG5leHQgaW50ZXJuYWwgbm9kZSBvZiB0aGUgdHJlZSAqL1xuICBkbyB7XG4gICAgLy9wcXJlbW92ZShzLCB0cmVlLCBuKTsgIC8qIG4gPSBub2RlIG9mIGxlYXN0IGZyZXF1ZW5jeSAqL1xuICAgIC8qKiogcHFyZW1vdmUgKioqL1xuICAgIG4gPSBzLmhlYXBbMS8qU01BTExFU1QqL107XG4gICAgcy5oZWFwWzEvKlNNQUxMRVNUKi9dID0gcy5oZWFwW3MuaGVhcF9sZW4tLV07XG4gICAgcHFkb3duaGVhcChzLCB0cmVlLCAxLypTTUFMTEVTVCovKTtcbiAgICAvKioqL1xuXG4gICAgbSA9IHMuaGVhcFsxLypTTUFMTEVTVCovXTsgLyogbSA9IG5vZGUgb2YgbmV4dCBsZWFzdCBmcmVxdWVuY3kgKi9cblxuICAgIHMuaGVhcFstLXMuaGVhcF9tYXhdID0gbjsgLyoga2VlcCB0aGUgbm9kZXMgc29ydGVkIGJ5IGZyZXF1ZW5jeSAqL1xuICAgIHMuaGVhcFstLXMuaGVhcF9tYXhdID0gbTtcblxuICAgIC8qIENyZWF0ZSBhIG5ldyBub2RlIGZhdGhlciBvZiBuIGFuZCBtICovXG4gICAgdHJlZVtub2RlICogMl0vKi5GcmVxKi8gPSB0cmVlW24gKiAyXS8qLkZyZXEqLyArIHRyZWVbbSAqIDJdLyouRnJlcSovO1xuICAgIHMuZGVwdGhbbm9kZV0gPSAocy5kZXB0aFtuXSA+PSBzLmRlcHRoW21dID8gcy5kZXB0aFtuXSA6IHMuZGVwdGhbbV0pICsgMTtcbiAgICB0cmVlW24gKiAyICsgMV0vKi5EYWQqLyA9IHRyZWVbbSAqIDIgKyAxXS8qLkRhZCovID0gbm9kZTtcblxuICAgIC8qIGFuZCBpbnNlcnQgdGhlIG5ldyBub2RlIGluIHRoZSBoZWFwICovXG4gICAgcy5oZWFwWzEvKlNNQUxMRVNUKi9dID0gbm9kZSsrO1xuICAgIHBxZG93bmhlYXAocywgdHJlZSwgMS8qU01BTExFU1QqLyk7XG5cbiAgfSB3aGlsZSAocy5oZWFwX2xlbiA+PSAyKTtcblxuICBzLmhlYXBbLS1zLmhlYXBfbWF4XSA9IHMuaGVhcFsxLypTTUFMTEVTVCovXTtcblxuICAvKiBBdCB0aGlzIHBvaW50LCB0aGUgZmllbGRzIGZyZXEgYW5kIGRhZCBhcmUgc2V0LiBXZSBjYW4gbm93XG4gICAqIGdlbmVyYXRlIHRoZSBiaXQgbGVuZ3Rocy5cbiAgICovXG4gIGdlbl9iaXRsZW4ocywgZGVzYyk7XG5cbiAgLyogVGhlIGZpZWxkIGxlbiBpcyBub3cgc2V0LCB3ZSBjYW4gZ2VuZXJhdGUgdGhlIGJpdCBjb2RlcyAqL1xuICBnZW5fY29kZXModHJlZSwgbWF4X2NvZGUsIHMuYmxfY291bnQpO1xufVxuXG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICogU2NhbiBhIGxpdGVyYWwgb3IgZGlzdGFuY2UgdHJlZSB0byBkZXRlcm1pbmUgdGhlIGZyZXF1ZW5jaWVzIG9mIHRoZSBjb2Rlc1xuICogaW4gdGhlIGJpdCBsZW5ndGggdHJlZS5cbiAqL1xuZnVuY3Rpb24gc2Nhbl90cmVlKHMsIHRyZWUsIG1heF9jb2RlKVxuLy8gICAgZGVmbGF0ZV9zdGF0ZSAqcztcbi8vICAgIGN0X2RhdGEgKnRyZWU7ICAgLyogdGhlIHRyZWUgdG8gYmUgc2Nhbm5lZCAqL1xuLy8gICAgaW50IG1heF9jb2RlOyAgICAvKiBhbmQgaXRzIGxhcmdlc3QgY29kZSBvZiBub24gemVybyBmcmVxdWVuY3kgKi9cbntcbiAgdmFyIG47ICAgICAgICAgICAgICAgICAgICAgLyogaXRlcmF0ZXMgb3ZlciBhbGwgdHJlZSBlbGVtZW50cyAqL1xuICB2YXIgcHJldmxlbiA9IC0xOyAgICAgICAgICAvKiBsYXN0IGVtaXR0ZWQgbGVuZ3RoICovXG4gIHZhciBjdXJsZW47ICAgICAgICAgICAgICAgIC8qIGxlbmd0aCBvZiBjdXJyZW50IGNvZGUgKi9cblxuICB2YXIgbmV4dGxlbiA9IHRyZWVbMCAqIDIgKyAxXS8qLkxlbiovOyAvKiBsZW5ndGggb2YgbmV4dCBjb2RlICovXG5cbiAgdmFyIGNvdW50ID0gMDsgICAgICAgICAgICAgLyogcmVwZWF0IGNvdW50IG9mIHRoZSBjdXJyZW50IGNvZGUgKi9cbiAgdmFyIG1heF9jb3VudCA9IDc7ICAgICAgICAgLyogbWF4IHJlcGVhdCBjb3VudCAqL1xuICB2YXIgbWluX2NvdW50ID0gNDsgICAgICAgICAvKiBtaW4gcmVwZWF0IGNvdW50ICovXG5cbiAgaWYgKG5leHRsZW4gPT09IDApIHtcbiAgICBtYXhfY291bnQgPSAxMzg7XG4gICAgbWluX2NvdW50ID0gMztcbiAgfVxuICB0cmVlWyhtYXhfY29kZSArIDEpICogMiArIDFdLyouTGVuKi8gPSAweGZmZmY7IC8qIGd1YXJkICovXG5cbiAgZm9yIChuID0gMDsgbiA8PSBtYXhfY29kZTsgbisrKSB7XG4gICAgY3VybGVuID0gbmV4dGxlbjtcbiAgICBuZXh0bGVuID0gdHJlZVsobiArIDEpICogMiArIDFdLyouTGVuKi87XG5cbiAgICBpZiAoKytjb3VudCA8IG1heF9jb3VudCAmJiBjdXJsZW4gPT09IG5leHRsZW4pIHtcbiAgICAgIGNvbnRpbnVlO1xuXG4gICAgfSBlbHNlIGlmIChjb3VudCA8IG1pbl9jb3VudCkge1xuICAgICAgcy5ibF90cmVlW2N1cmxlbiAqIDJdLyouRnJlcSovICs9IGNvdW50O1xuXG4gICAgfSBlbHNlIGlmIChjdXJsZW4gIT09IDApIHtcblxuICAgICAgaWYgKGN1cmxlbiAhPT0gcHJldmxlbikgeyBzLmJsX3RyZWVbY3VybGVuICogMl0vKi5GcmVxKi8rKzsgfVxuICAgICAgcy5ibF90cmVlW1JFUF8zXzYgKiAyXS8qLkZyZXEqLysrO1xuXG4gICAgfSBlbHNlIGlmIChjb3VudCA8PSAxMCkge1xuICAgICAgcy5ibF90cmVlW1JFUFpfM18xMCAqIDJdLyouRnJlcSovKys7XG5cbiAgICB9IGVsc2Uge1xuICAgICAgcy5ibF90cmVlW1JFUFpfMTFfMTM4ICogMl0vKi5GcmVxKi8rKztcbiAgICB9XG5cbiAgICBjb3VudCA9IDA7XG4gICAgcHJldmxlbiA9IGN1cmxlbjtcblxuICAgIGlmIChuZXh0bGVuID09PSAwKSB7XG4gICAgICBtYXhfY291bnQgPSAxMzg7XG4gICAgICBtaW5fY291bnQgPSAzO1xuXG4gICAgfSBlbHNlIGlmIChjdXJsZW4gPT09IG5leHRsZW4pIHtcbiAgICAgIG1heF9jb3VudCA9IDY7XG4gICAgICBtaW5fY291bnQgPSAzO1xuXG4gICAgfSBlbHNlIHtcbiAgICAgIG1heF9jb3VudCA9IDc7XG4gICAgICBtaW5fY291bnQgPSA0O1xuICAgIH1cbiAgfVxufVxuXG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICogU2VuZCBhIGxpdGVyYWwgb3IgZGlzdGFuY2UgdHJlZSBpbiBjb21wcmVzc2VkIGZvcm0sIHVzaW5nIHRoZSBjb2RlcyBpblxuICogYmxfdHJlZS5cbiAqL1xuZnVuY3Rpb24gc2VuZF90cmVlKHMsIHRyZWUsIG1heF9jb2RlKVxuLy8gICAgZGVmbGF0ZV9zdGF0ZSAqcztcbi8vICAgIGN0X2RhdGEgKnRyZWU7IC8qIHRoZSB0cmVlIHRvIGJlIHNjYW5uZWQgKi9cbi8vICAgIGludCBtYXhfY29kZTsgICAgICAgLyogYW5kIGl0cyBsYXJnZXN0IGNvZGUgb2Ygbm9uIHplcm8gZnJlcXVlbmN5ICovXG57XG4gIHZhciBuOyAgICAgICAgICAgICAgICAgICAgIC8qIGl0ZXJhdGVzIG92ZXIgYWxsIHRyZWUgZWxlbWVudHMgKi9cbiAgdmFyIHByZXZsZW4gPSAtMTsgICAgICAgICAgLyogbGFzdCBlbWl0dGVkIGxlbmd0aCAqL1xuICB2YXIgY3VybGVuOyAgICAgICAgICAgICAgICAvKiBsZW5ndGggb2YgY3VycmVudCBjb2RlICovXG5cbiAgdmFyIG5leHRsZW4gPSB0cmVlWzAgKiAyICsgMV0vKi5MZW4qLzsgLyogbGVuZ3RoIG9mIG5leHQgY29kZSAqL1xuXG4gIHZhciBjb3VudCA9IDA7ICAgICAgICAgICAgIC8qIHJlcGVhdCBjb3VudCBvZiB0aGUgY3VycmVudCBjb2RlICovXG4gIHZhciBtYXhfY291bnQgPSA3OyAgICAgICAgIC8qIG1heCByZXBlYXQgY291bnQgKi9cbiAgdmFyIG1pbl9jb3VudCA9IDQ7ICAgICAgICAgLyogbWluIHJlcGVhdCBjb3VudCAqL1xuXG4gIC8qIHRyZWVbbWF4X2NvZGUrMV0uTGVuID0gLTE7ICovICAvKiBndWFyZCBhbHJlYWR5IHNldCAqL1xuICBpZiAobmV4dGxlbiA9PT0gMCkge1xuICAgIG1heF9jb3VudCA9IDEzODtcbiAgICBtaW5fY291bnQgPSAzO1xuICB9XG5cbiAgZm9yIChuID0gMDsgbiA8PSBtYXhfY29kZTsgbisrKSB7XG4gICAgY3VybGVuID0gbmV4dGxlbjtcbiAgICBuZXh0bGVuID0gdHJlZVsobiArIDEpICogMiArIDFdLyouTGVuKi87XG5cbiAgICBpZiAoKytjb3VudCA8IG1heF9jb3VudCAmJiBjdXJsZW4gPT09IG5leHRsZW4pIHtcbiAgICAgIGNvbnRpbnVlO1xuXG4gICAgfSBlbHNlIGlmIChjb3VudCA8IG1pbl9jb3VudCkge1xuICAgICAgZG8geyBzZW5kX2NvZGUocywgY3VybGVuLCBzLmJsX3RyZWUpOyB9IHdoaWxlICgtLWNvdW50ICE9PSAwKTtcblxuICAgIH0gZWxzZSBpZiAoY3VybGVuICE9PSAwKSB7XG4gICAgICBpZiAoY3VybGVuICE9PSBwcmV2bGVuKSB7XG4gICAgICAgIHNlbmRfY29kZShzLCBjdXJsZW4sIHMuYmxfdHJlZSk7XG4gICAgICAgIGNvdW50LS07XG4gICAgICB9XG4gICAgICAvL0Fzc2VydChjb3VudCA+PSAzICYmIGNvdW50IDw9IDYsIFwiIDNfNj9cIik7XG4gICAgICBzZW5kX2NvZGUocywgUkVQXzNfNiwgcy5ibF90cmVlKTtcbiAgICAgIHNlbmRfYml0cyhzLCBjb3VudCAtIDMsIDIpO1xuXG4gICAgfSBlbHNlIGlmIChjb3VudCA8PSAxMCkge1xuICAgICAgc2VuZF9jb2RlKHMsIFJFUFpfM18xMCwgcy5ibF90cmVlKTtcbiAgICAgIHNlbmRfYml0cyhzLCBjb3VudCAtIDMsIDMpO1xuXG4gICAgfSBlbHNlIHtcbiAgICAgIHNlbmRfY29kZShzLCBSRVBaXzExXzEzOCwgcy5ibF90cmVlKTtcbiAgICAgIHNlbmRfYml0cyhzLCBjb3VudCAtIDExLCA3KTtcbiAgICB9XG5cbiAgICBjb3VudCA9IDA7XG4gICAgcHJldmxlbiA9IGN1cmxlbjtcbiAgICBpZiAobmV4dGxlbiA9PT0gMCkge1xuICAgICAgbWF4X2NvdW50ID0gMTM4O1xuICAgICAgbWluX2NvdW50ID0gMztcblxuICAgIH0gZWxzZSBpZiAoY3VybGVuID09PSBuZXh0bGVuKSB7XG4gICAgICBtYXhfY291bnQgPSA2O1xuICAgICAgbWluX2NvdW50ID0gMztcblxuICAgIH0gZWxzZSB7XG4gICAgICBtYXhfY291bnQgPSA3O1xuICAgICAgbWluX2NvdW50ID0gNDtcbiAgICB9XG4gIH1cbn1cblxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIENvbnN0cnVjdCB0aGUgSHVmZm1hbiB0cmVlIGZvciB0aGUgYml0IGxlbmd0aHMgYW5kIHJldHVybiB0aGUgaW5kZXggaW5cbiAqIGJsX29yZGVyIG9mIHRoZSBsYXN0IGJpdCBsZW5ndGggY29kZSB0byBzZW5kLlxuICovXG5mdW5jdGlvbiBidWlsZF9ibF90cmVlKHMpIHtcbiAgdmFyIG1heF9ibGluZGV4OyAgLyogaW5kZXggb2YgbGFzdCBiaXQgbGVuZ3RoIGNvZGUgb2Ygbm9uIHplcm8gZnJlcSAqL1xuXG4gIC8qIERldGVybWluZSB0aGUgYml0IGxlbmd0aCBmcmVxdWVuY2llcyBmb3IgbGl0ZXJhbCBhbmQgZGlzdGFuY2UgdHJlZXMgKi9cbiAgc2Nhbl90cmVlKHMsIHMuZHluX2x0cmVlLCBzLmxfZGVzYy5tYXhfY29kZSk7XG4gIHNjYW5fdHJlZShzLCBzLmR5bl9kdHJlZSwgcy5kX2Rlc2MubWF4X2NvZGUpO1xuXG4gIC8qIEJ1aWxkIHRoZSBiaXQgbGVuZ3RoIHRyZWU6ICovXG4gIGJ1aWxkX3RyZWUocywgcy5ibF9kZXNjKTtcbiAgLyogb3B0X2xlbiBub3cgaW5jbHVkZXMgdGhlIGxlbmd0aCBvZiB0aGUgdHJlZSByZXByZXNlbnRhdGlvbnMsIGV4Y2VwdFxuICAgKiB0aGUgbGVuZ3RocyBvZiB0aGUgYml0IGxlbmd0aHMgY29kZXMgYW5kIHRoZSA1KzUrNCBiaXRzIGZvciB0aGUgY291bnRzLlxuICAgKi9cblxuICAvKiBEZXRlcm1pbmUgdGhlIG51bWJlciBvZiBiaXQgbGVuZ3RoIGNvZGVzIHRvIHNlbmQuIFRoZSBwa3ppcCBmb3JtYXRcbiAgICogcmVxdWlyZXMgdGhhdCBhdCBsZWFzdCA0IGJpdCBsZW5ndGggY29kZXMgYmUgc2VudC4gKGFwcG5vdGUudHh0IHNheXNcbiAgICogMyBidXQgdGhlIGFjdHVhbCB2YWx1ZSB1c2VkIGlzIDQuKVxuICAgKi9cbiAgZm9yIChtYXhfYmxpbmRleCA9IEJMX0NPREVTIC0gMTsgbWF4X2JsaW5kZXggPj0gMzsgbWF4X2JsaW5kZXgtLSkge1xuICAgIGlmIChzLmJsX3RyZWVbYmxfb3JkZXJbbWF4X2JsaW5kZXhdICogMiArIDFdLyouTGVuKi8gIT09IDApIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICAvKiBVcGRhdGUgb3B0X2xlbiB0byBpbmNsdWRlIHRoZSBiaXQgbGVuZ3RoIHRyZWUgYW5kIGNvdW50cyAqL1xuICBzLm9wdF9sZW4gKz0gMyAqIChtYXhfYmxpbmRleCArIDEpICsgNSArIDUgKyA0O1xuICAvL1RyYWNldigoc3RkZXJyLCBcIlxcbmR5biB0cmVlczogZHluICVsZCwgc3RhdCAlbGRcIixcbiAgLy8gICAgICAgIHMtPm9wdF9sZW4sIHMtPnN0YXRpY19sZW4pKTtcblxuICByZXR1cm4gbWF4X2JsaW5kZXg7XG59XG5cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBTZW5kIHRoZSBoZWFkZXIgZm9yIGEgYmxvY2sgdXNpbmcgZHluYW1pYyBIdWZmbWFuIHRyZWVzOiB0aGUgY291bnRzLCB0aGVcbiAqIGxlbmd0aHMgb2YgdGhlIGJpdCBsZW5ndGggY29kZXMsIHRoZSBsaXRlcmFsIHRyZWUgYW5kIHRoZSBkaXN0YW5jZSB0cmVlLlxuICogSU4gYXNzZXJ0aW9uOiBsY29kZXMgPj0gMjU3LCBkY29kZXMgPj0gMSwgYmxjb2RlcyA+PSA0LlxuICovXG5mdW5jdGlvbiBzZW5kX2FsbF90cmVlcyhzLCBsY29kZXMsIGRjb2RlcywgYmxjb2Rlcylcbi8vICAgIGRlZmxhdGVfc3RhdGUgKnM7XG4vLyAgICBpbnQgbGNvZGVzLCBkY29kZXMsIGJsY29kZXM7IC8qIG51bWJlciBvZiBjb2RlcyBmb3IgZWFjaCB0cmVlICovXG57XG4gIHZhciByYW5rOyAgICAgICAgICAgICAgICAgICAgLyogaW5kZXggaW4gYmxfb3JkZXIgKi9cblxuICAvL0Fzc2VydCAobGNvZGVzID49IDI1NyAmJiBkY29kZXMgPj0gMSAmJiBibGNvZGVzID49IDQsIFwibm90IGVub3VnaCBjb2Rlc1wiKTtcbiAgLy9Bc3NlcnQgKGxjb2RlcyA8PSBMX0NPREVTICYmIGRjb2RlcyA8PSBEX0NPREVTICYmIGJsY29kZXMgPD0gQkxfQ09ERVMsXG4gIC8vICAgICAgICBcInRvbyBtYW55IGNvZGVzXCIpO1xuICAvL1RyYWNldigoc3RkZXJyLCBcIlxcbmJsIGNvdW50czogXCIpKTtcbiAgc2VuZF9iaXRzKHMsIGxjb2RlcyAtIDI1NywgNSk7IC8qIG5vdCArMjU1IGFzIHN0YXRlZCBpbiBhcHBub3RlLnR4dCAqL1xuICBzZW5kX2JpdHMocywgZGNvZGVzIC0gMSwgICA1KTtcbiAgc2VuZF9iaXRzKHMsIGJsY29kZXMgLSA0LCAgNCk7IC8qIG5vdCAtMyBhcyBzdGF0ZWQgaW4gYXBwbm90ZS50eHQgKi9cbiAgZm9yIChyYW5rID0gMDsgcmFuayA8IGJsY29kZXM7IHJhbmsrKykge1xuICAgIC8vVHJhY2V2KChzdGRlcnIsIFwiXFxuYmwgY29kZSAlMmQgXCIsIGJsX29yZGVyW3JhbmtdKSk7XG4gICAgc2VuZF9iaXRzKHMsIHMuYmxfdHJlZVtibF9vcmRlcltyYW5rXSAqIDIgKyAxXS8qLkxlbiovLCAzKTtcbiAgfVxuICAvL1RyYWNldigoc3RkZXJyLCBcIlxcbmJsIHRyZWU6IHNlbnQgJWxkXCIsIHMtPmJpdHNfc2VudCkpO1xuXG4gIHNlbmRfdHJlZShzLCBzLmR5bl9sdHJlZSwgbGNvZGVzIC0gMSk7IC8qIGxpdGVyYWwgdHJlZSAqL1xuICAvL1RyYWNldigoc3RkZXJyLCBcIlxcbmxpdCB0cmVlOiBzZW50ICVsZFwiLCBzLT5iaXRzX3NlbnQpKTtcblxuICBzZW5kX3RyZWUocywgcy5keW5fZHRyZWUsIGRjb2RlcyAtIDEpOyAvKiBkaXN0YW5jZSB0cmVlICovXG4gIC8vVHJhY2V2KChzdGRlcnIsIFwiXFxuZGlzdCB0cmVlOiBzZW50ICVsZFwiLCBzLT5iaXRzX3NlbnQpKTtcbn1cblxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIENoZWNrIGlmIHRoZSBkYXRhIHR5cGUgaXMgVEVYVCBvciBCSU5BUlksIHVzaW5nIHRoZSBmb2xsb3dpbmcgYWxnb3JpdGhtOlxuICogLSBURVhUIGlmIHRoZSB0d28gY29uZGl0aW9ucyBiZWxvdyBhcmUgc2F0aXNmaWVkOlxuICogICAgYSkgVGhlcmUgYXJlIG5vIG5vbi1wb3J0YWJsZSBjb250cm9sIGNoYXJhY3RlcnMgYmVsb25naW5nIHRvIHRoZVxuICogICAgICAgXCJibGFjayBsaXN0XCIgKDAuLjYsIDE0Li4yNSwgMjguLjMxKS5cbiAqICAgIGIpIFRoZXJlIGlzIGF0IGxlYXN0IG9uZSBwcmludGFibGUgY2hhcmFjdGVyIGJlbG9uZ2luZyB0byB0aGVcbiAqICAgICAgIFwid2hpdGUgbGlzdFwiICg5IHtUQUJ9LCAxMCB7TEZ9LCAxMyB7Q1J9LCAzMi4uMjU1KS5cbiAqIC0gQklOQVJZIG90aGVyd2lzZS5cbiAqIC0gVGhlIGZvbGxvd2luZyBwYXJ0aWFsbHktcG9ydGFibGUgY29udHJvbCBjaGFyYWN0ZXJzIGZvcm0gYVxuICogICBcImdyYXkgbGlzdFwiIHRoYXQgaXMgaWdub3JlZCBpbiB0aGlzIGRldGVjdGlvbiBhbGdvcml0aG06XG4gKiAgICg3IHtCRUx9LCA4IHtCU30sIDExIHtWVH0sIDEyIHtGRn0sIDI2IHtTVUJ9LCAyNyB7RVNDfSkuXG4gKiBJTiBhc3NlcnRpb246IHRoZSBmaWVsZHMgRnJlcSBvZiBkeW5fbHRyZWUgYXJlIHNldC5cbiAqL1xuZnVuY3Rpb24gZGV0ZWN0X2RhdGFfdHlwZShzKSB7XG4gIC8qIGJsYWNrX21hc2sgaXMgdGhlIGJpdCBtYXNrIG9mIGJsYWNrLWxpc3RlZCBieXRlc1xuICAgKiBzZXQgYml0cyAwLi42LCAxNC4uMjUsIGFuZCAyOC4uMzFcbiAgICogMHhmM2ZmYzA3ZiA9IGJpbmFyeSAxMTExMDAxMTExMTExMTExMTEwMDAwMDAwMTExMTExMVxuICAgKi9cbiAgdmFyIGJsYWNrX21hc2sgPSAweGYzZmZjMDdmO1xuICB2YXIgbjtcblxuICAvKiBDaGVjayBmb3Igbm9uLXRleHR1YWwgKFwiYmxhY2stbGlzdGVkXCIpIGJ5dGVzLiAqL1xuICBmb3IgKG4gPSAwOyBuIDw9IDMxOyBuKyssIGJsYWNrX21hc2sgPj4+PSAxKSB7XG4gICAgaWYgKChibGFja19tYXNrICYgMSkgJiYgKHMuZHluX2x0cmVlW24gKiAyXS8qLkZyZXEqLyAhPT0gMCkpIHtcbiAgICAgIHJldHVybiBaX0JJTkFSWTtcbiAgICB9XG4gIH1cblxuICAvKiBDaGVjayBmb3IgdGV4dHVhbCAoXCJ3aGl0ZS1saXN0ZWRcIikgYnl0ZXMuICovXG4gIGlmIChzLmR5bl9sdHJlZVs5ICogMl0vKi5GcmVxKi8gIT09IDAgfHwgcy5keW5fbHRyZWVbMTAgKiAyXS8qLkZyZXEqLyAhPT0gMCB8fFxuICAgICAgcy5keW5fbHRyZWVbMTMgKiAyXS8qLkZyZXEqLyAhPT0gMCkge1xuICAgIHJldHVybiBaX1RFWFQ7XG4gIH1cbiAgZm9yIChuID0gMzI7IG4gPCBMSVRFUkFMUzsgbisrKSB7XG4gICAgaWYgKHMuZHluX2x0cmVlW24gKiAyXS8qLkZyZXEqLyAhPT0gMCkge1xuICAgICAgcmV0dXJuIFpfVEVYVDtcbiAgICB9XG4gIH1cblxuICAvKiBUaGVyZSBhcmUgbm8gXCJibGFjay1saXN0ZWRcIiBvciBcIndoaXRlLWxpc3RlZFwiIGJ5dGVzOlxuICAgKiB0aGlzIHN0cmVhbSBlaXRoZXIgaXMgZW1wdHkgb3IgaGFzIHRvbGVyYXRlZCAoXCJncmF5LWxpc3RlZFwiKSBieXRlcyBvbmx5LlxuICAgKi9cbiAgcmV0dXJuIFpfQklOQVJZO1xufVxuXG5cbnZhciBzdGF0aWNfaW5pdF9kb25lID0gZmFsc2U7XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICogSW5pdGlhbGl6ZSB0aGUgdHJlZSBkYXRhIHN0cnVjdHVyZXMgZm9yIGEgbmV3IHpsaWIgc3RyZWFtLlxuICovXG5mdW5jdGlvbiBfdHJfaW5pdChzKVxue1xuXG4gIGlmICghc3RhdGljX2luaXRfZG9uZSkge1xuICAgIHRyX3N0YXRpY19pbml0KCk7XG4gICAgc3RhdGljX2luaXRfZG9uZSA9IHRydWU7XG4gIH1cblxuICBzLmxfZGVzYyAgPSBuZXcgVHJlZURlc2Mocy5keW5fbHRyZWUsIHN0YXRpY19sX2Rlc2MpO1xuICBzLmRfZGVzYyAgPSBuZXcgVHJlZURlc2Mocy5keW5fZHRyZWUsIHN0YXRpY19kX2Rlc2MpO1xuICBzLmJsX2Rlc2MgPSBuZXcgVHJlZURlc2Mocy5ibF90cmVlLCBzdGF0aWNfYmxfZGVzYyk7XG5cbiAgcy5iaV9idWYgPSAwO1xuICBzLmJpX3ZhbGlkID0gMDtcblxuICAvKiBJbml0aWFsaXplIHRoZSBmaXJzdCBibG9jayBvZiB0aGUgZmlyc3QgZmlsZTogKi9cbiAgaW5pdF9ibG9jayhzKTtcbn1cblxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIFNlbmQgYSBzdG9yZWQgYmxvY2tcbiAqL1xuZnVuY3Rpb24gX3RyX3N0b3JlZF9ibG9jayhzLCBidWYsIHN0b3JlZF9sZW4sIGxhc3QpXG4vL0RlZmxhdGVTdGF0ZSAqcztcbi8vY2hhcmYgKmJ1ZjsgICAgICAgLyogaW5wdXQgYmxvY2sgKi9cbi8vdWxnIHN0b3JlZF9sZW47ICAgLyogbGVuZ3RoIG9mIGlucHV0IGJsb2NrICovXG4vL2ludCBsYXN0OyAgICAgICAgIC8qIG9uZSBpZiB0aGlzIGlzIHRoZSBsYXN0IGJsb2NrIGZvciBhIGZpbGUgKi9cbntcbiAgc2VuZF9iaXRzKHMsIChTVE9SRURfQkxPQ0sgPDwgMSkgKyAobGFzdCA/IDEgOiAwKSwgMyk7ICAgIC8qIHNlbmQgYmxvY2sgdHlwZSAqL1xuICBjb3B5X2Jsb2NrKHMsIGJ1Ziwgc3RvcmVkX2xlbiwgdHJ1ZSk7IC8qIHdpdGggaGVhZGVyICovXG59XG5cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBTZW5kIG9uZSBlbXB0eSBzdGF0aWMgYmxvY2sgdG8gZ2l2ZSBlbm91Z2ggbG9va2FoZWFkIGZvciBpbmZsYXRlLlxuICogVGhpcyB0YWtlcyAxMCBiaXRzLCBvZiB3aGljaCA3IG1heSByZW1haW4gaW4gdGhlIGJpdCBidWZmZXIuXG4gKi9cbmZ1bmN0aW9uIF90cl9hbGlnbihzKSB7XG4gIHNlbmRfYml0cyhzLCBTVEFUSUNfVFJFRVMgPDwgMSwgMyk7XG4gIHNlbmRfY29kZShzLCBFTkRfQkxPQ0ssIHN0YXRpY19sdHJlZSk7XG4gIGJpX2ZsdXNoKHMpO1xufVxuXG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICogRGV0ZXJtaW5lIHRoZSBiZXN0IGVuY29kaW5nIGZvciB0aGUgY3VycmVudCBibG9jazogZHluYW1pYyB0cmVlcywgc3RhdGljXG4gKiB0cmVlcyBvciBzdG9yZSwgYW5kIG91dHB1dCB0aGUgZW5jb2RlZCBibG9jayB0byB0aGUgemlwIGZpbGUuXG4gKi9cbmZ1bmN0aW9uIF90cl9mbHVzaF9ibG9jayhzLCBidWYsIHN0b3JlZF9sZW4sIGxhc3QpXG4vL0RlZmxhdGVTdGF0ZSAqcztcbi8vY2hhcmYgKmJ1ZjsgICAgICAgLyogaW5wdXQgYmxvY2ssIG9yIE5VTEwgaWYgdG9vIG9sZCAqL1xuLy91bGcgc3RvcmVkX2xlbjsgICAvKiBsZW5ndGggb2YgaW5wdXQgYmxvY2sgKi9cbi8vaW50IGxhc3Q7ICAgICAgICAgLyogb25lIGlmIHRoaXMgaXMgdGhlIGxhc3QgYmxvY2sgZm9yIGEgZmlsZSAqL1xue1xuICB2YXIgb3B0X2xlbmIsIHN0YXRpY19sZW5iOyAgLyogb3B0X2xlbiBhbmQgc3RhdGljX2xlbiBpbiBieXRlcyAqL1xuICB2YXIgbWF4X2JsaW5kZXggPSAwOyAgICAgICAgLyogaW5kZXggb2YgbGFzdCBiaXQgbGVuZ3RoIGNvZGUgb2Ygbm9uIHplcm8gZnJlcSAqL1xuXG4gIC8qIEJ1aWxkIHRoZSBIdWZmbWFuIHRyZWVzIHVubGVzcyBhIHN0b3JlZCBibG9jayBpcyBmb3JjZWQgKi9cbiAgaWYgKHMubGV2ZWwgPiAwKSB7XG5cbiAgICAvKiBDaGVjayBpZiB0aGUgZmlsZSBpcyBiaW5hcnkgb3IgdGV4dCAqL1xuICAgIGlmIChzLnN0cm0uZGF0YV90eXBlID09PSBaX1VOS05PV04pIHtcbiAgICAgIHMuc3RybS5kYXRhX3R5cGUgPSBkZXRlY3RfZGF0YV90eXBlKHMpO1xuICAgIH1cblxuICAgIC8qIENvbnN0cnVjdCB0aGUgbGl0ZXJhbCBhbmQgZGlzdGFuY2UgdHJlZXMgKi9cbiAgICBidWlsZF90cmVlKHMsIHMubF9kZXNjKTtcbiAgICAvLyBUcmFjZXYoKHN0ZGVyciwgXCJcXG5saXQgZGF0YTogZHluICVsZCwgc3RhdCAlbGRcIiwgcy0+b3B0X2xlbixcbiAgICAvLyAgICAgICAgcy0+c3RhdGljX2xlbikpO1xuXG4gICAgYnVpbGRfdHJlZShzLCBzLmRfZGVzYyk7XG4gICAgLy8gVHJhY2V2KChzdGRlcnIsIFwiXFxuZGlzdCBkYXRhOiBkeW4gJWxkLCBzdGF0ICVsZFwiLCBzLT5vcHRfbGVuLFxuICAgIC8vICAgICAgICBzLT5zdGF0aWNfbGVuKSk7XG4gICAgLyogQXQgdGhpcyBwb2ludCwgb3B0X2xlbiBhbmQgc3RhdGljX2xlbiBhcmUgdGhlIHRvdGFsIGJpdCBsZW5ndGhzIG9mXG4gICAgICogdGhlIGNvbXByZXNzZWQgYmxvY2sgZGF0YSwgZXhjbHVkaW5nIHRoZSB0cmVlIHJlcHJlc2VudGF0aW9ucy5cbiAgICAgKi9cblxuICAgIC8qIEJ1aWxkIHRoZSBiaXQgbGVuZ3RoIHRyZWUgZm9yIHRoZSBhYm92ZSB0d28gdHJlZXMsIGFuZCBnZXQgdGhlIGluZGV4XG4gICAgICogaW4gYmxfb3JkZXIgb2YgdGhlIGxhc3QgYml0IGxlbmd0aCBjb2RlIHRvIHNlbmQuXG4gICAgICovXG4gICAgbWF4X2JsaW5kZXggPSBidWlsZF9ibF90cmVlKHMpO1xuXG4gICAgLyogRGV0ZXJtaW5lIHRoZSBiZXN0IGVuY29kaW5nLiBDb21wdXRlIHRoZSBibG9jayBsZW5ndGhzIGluIGJ5dGVzLiAqL1xuICAgIG9wdF9sZW5iID0gKHMub3B0X2xlbiArIDMgKyA3KSA+Pj4gMztcbiAgICBzdGF0aWNfbGVuYiA9IChzLnN0YXRpY19sZW4gKyAzICsgNykgPj4+IDM7XG5cbiAgICAvLyBUcmFjZXYoKHN0ZGVyciwgXCJcXG5vcHQgJWx1KCVsdSkgc3RhdCAlbHUoJWx1KSBzdG9yZWQgJWx1IGxpdCAldSBcIixcbiAgICAvLyAgICAgICAgb3B0X2xlbmIsIHMtPm9wdF9sZW4sIHN0YXRpY19sZW5iLCBzLT5zdGF0aWNfbGVuLCBzdG9yZWRfbGVuLFxuICAgIC8vICAgICAgICBzLT5sYXN0X2xpdCkpO1xuXG4gICAgaWYgKHN0YXRpY19sZW5iIDw9IG9wdF9sZW5iKSB7IG9wdF9sZW5iID0gc3RhdGljX2xlbmI7IH1cblxuICB9IGVsc2Uge1xuICAgIC8vIEFzc2VydChidWYgIT0gKGNoYXIqKTAsIFwibG9zdCBidWZcIik7XG4gICAgb3B0X2xlbmIgPSBzdGF0aWNfbGVuYiA9IHN0b3JlZF9sZW4gKyA1OyAvKiBmb3JjZSBhIHN0b3JlZCBibG9jayAqL1xuICB9XG5cbiAgaWYgKChzdG9yZWRfbGVuICsgNCA8PSBvcHRfbGVuYikgJiYgKGJ1ZiAhPT0gLTEpKSB7XG4gICAgLyogNDogdHdvIHdvcmRzIGZvciB0aGUgbGVuZ3RocyAqL1xuXG4gICAgLyogVGhlIHRlc3QgYnVmICE9IE5VTEwgaXMgb25seSBuZWNlc3NhcnkgaWYgTElUX0JVRlNJWkUgPiBXU0laRS5cbiAgICAgKiBPdGhlcndpc2Ugd2UgY2FuJ3QgaGF2ZSBwcm9jZXNzZWQgbW9yZSB0aGFuIFdTSVpFIGlucHV0IGJ5dGVzIHNpbmNlXG4gICAgICogdGhlIGxhc3QgYmxvY2sgZmx1c2gsIGJlY2F1c2UgY29tcHJlc3Npb24gd291bGQgaGF2ZSBiZWVuXG4gICAgICogc3VjY2Vzc2Z1bC4gSWYgTElUX0JVRlNJWkUgPD0gV1NJWkUsIGl0IGlzIG5ldmVyIHRvbyBsYXRlIHRvXG4gICAgICogdHJhbnNmb3JtIGEgYmxvY2sgaW50byBhIHN0b3JlZCBibG9jay5cbiAgICAgKi9cbiAgICBfdHJfc3RvcmVkX2Jsb2NrKHMsIGJ1Ziwgc3RvcmVkX2xlbiwgbGFzdCk7XG5cbiAgfSBlbHNlIGlmIChzLnN0cmF0ZWd5ID09PSBaX0ZJWEVEIHx8IHN0YXRpY19sZW5iID09PSBvcHRfbGVuYikge1xuXG4gICAgc2VuZF9iaXRzKHMsIChTVEFUSUNfVFJFRVMgPDwgMSkgKyAobGFzdCA/IDEgOiAwKSwgMyk7XG4gICAgY29tcHJlc3NfYmxvY2socywgc3RhdGljX2x0cmVlLCBzdGF0aWNfZHRyZWUpO1xuXG4gIH0gZWxzZSB7XG4gICAgc2VuZF9iaXRzKHMsIChEWU5fVFJFRVMgPDwgMSkgKyAobGFzdCA/IDEgOiAwKSwgMyk7XG4gICAgc2VuZF9hbGxfdHJlZXMocywgcy5sX2Rlc2MubWF4X2NvZGUgKyAxLCBzLmRfZGVzYy5tYXhfY29kZSArIDEsIG1heF9ibGluZGV4ICsgMSk7XG4gICAgY29tcHJlc3NfYmxvY2socywgcy5keW5fbHRyZWUsIHMuZHluX2R0cmVlKTtcbiAgfVxuICAvLyBBc3NlcnQgKHMtPmNvbXByZXNzZWRfbGVuID09IHMtPmJpdHNfc2VudCwgXCJiYWQgY29tcHJlc3NlZCBzaXplXCIpO1xuICAvKiBUaGUgYWJvdmUgY2hlY2sgaXMgbWFkZSBtb2QgMl4zMiwgZm9yIGZpbGVzIGxhcmdlciB0aGFuIDUxMiBNQlxuICAgKiBhbmQgdUxvbmcgaW1wbGVtZW50ZWQgb24gMzIgYml0cy5cbiAgICovXG4gIGluaXRfYmxvY2socyk7XG5cbiAgaWYgKGxhc3QpIHtcbiAgICBiaV93aW5kdXAocyk7XG4gIH1cbiAgLy8gVHJhY2V2KChzdGRlcnIsXCJcXG5jb21wcmxlbiAlbHUoJWx1KSBcIiwgcy0+Y29tcHJlc3NlZF9sZW4+PjMsXG4gIC8vICAgICAgIHMtPmNvbXByZXNzZWRfbGVuLTcqbGFzdCkpO1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIFNhdmUgdGhlIG1hdGNoIGluZm8gYW5kIHRhbGx5IHRoZSBmcmVxdWVuY3kgY291bnRzLiBSZXR1cm4gdHJ1ZSBpZlxuICogdGhlIGN1cnJlbnQgYmxvY2sgbXVzdCBiZSBmbHVzaGVkLlxuICovXG5mdW5jdGlvbiBfdHJfdGFsbHkocywgZGlzdCwgbGMpXG4vLyAgICBkZWZsYXRlX3N0YXRlICpzO1xuLy8gICAgdW5zaWduZWQgZGlzdDsgIC8qIGRpc3RhbmNlIG9mIG1hdGNoZWQgc3RyaW5nICovXG4vLyAgICB1bnNpZ25lZCBsYzsgICAgLyogbWF0Y2ggbGVuZ3RoLU1JTl9NQVRDSCBvciB1bm1hdGNoZWQgY2hhciAoaWYgZGlzdD09MCkgKi9cbntcbiAgLy92YXIgb3V0X2xlbmd0aCwgaW5fbGVuZ3RoLCBkY29kZTtcblxuICBzLnBlbmRpbmdfYnVmW3MuZF9idWYgKyBzLmxhc3RfbGl0ICogMl0gICAgID0gKGRpc3QgPj4+IDgpICYgMHhmZjtcbiAgcy5wZW5kaW5nX2J1ZltzLmRfYnVmICsgcy5sYXN0X2xpdCAqIDIgKyAxXSA9IGRpc3QgJiAweGZmO1xuXG4gIHMucGVuZGluZ19idWZbcy5sX2J1ZiArIHMubGFzdF9saXRdID0gbGMgJiAweGZmO1xuICBzLmxhc3RfbGl0Kys7XG5cbiAgaWYgKGRpc3QgPT09IDApIHtcbiAgICAvKiBsYyBpcyB0aGUgdW5tYXRjaGVkIGNoYXIgKi9cbiAgICBzLmR5bl9sdHJlZVtsYyAqIDJdLyouRnJlcSovKys7XG4gIH0gZWxzZSB7XG4gICAgcy5tYXRjaGVzKys7XG4gICAgLyogSGVyZSwgbGMgaXMgdGhlIG1hdGNoIGxlbmd0aCAtIE1JTl9NQVRDSCAqL1xuICAgIGRpc3QtLTsgICAgICAgICAgICAgLyogZGlzdCA9IG1hdGNoIGRpc3RhbmNlIC0gMSAqL1xuICAgIC8vQXNzZXJ0KCh1c2gpZGlzdCA8ICh1c2gpTUFYX0RJU1QocykgJiZcbiAgICAvLyAgICAgICAodXNoKWxjIDw9ICh1c2gpKE1BWF9NQVRDSC1NSU5fTUFUQ0gpICYmXG4gICAgLy8gICAgICAgKHVzaClkX2NvZGUoZGlzdCkgPCAodXNoKURfQ09ERVMsICBcIl90cl90YWxseTogYmFkIG1hdGNoXCIpO1xuXG4gICAgcy5keW5fbHRyZWVbKF9sZW5ndGhfY29kZVtsY10gKyBMSVRFUkFMUyArIDEpICogMl0vKi5GcmVxKi8rKztcbiAgICBzLmR5bl9kdHJlZVtkX2NvZGUoZGlzdCkgKiAyXS8qLkZyZXEqLysrO1xuICB9XG5cbi8vICghKSBUaGlzIGJsb2NrIGlzIGRpc2FibGVkIGluIHpsaWIgZGVmYWlsdHMsXG4vLyBkb24ndCBlbmFibGUgaXQgZm9yIGJpbmFyeSBjb21wYXRpYmlsaXR5XG5cbi8vI2lmZGVmIFRSVU5DQVRFX0JMT0NLXG4vLyAgLyogVHJ5IHRvIGd1ZXNzIGlmIGl0IGlzIHByb2ZpdGFibGUgdG8gc3RvcCB0aGUgY3VycmVudCBibG9jayBoZXJlICovXG4vLyAgaWYgKChzLmxhc3RfbGl0ICYgMHgxZmZmKSA9PT0gMCAmJiBzLmxldmVsID4gMikge1xuLy8gICAgLyogQ29tcHV0ZSBhbiB1cHBlciBib3VuZCBmb3IgdGhlIGNvbXByZXNzZWQgbGVuZ3RoICovXG4vLyAgICBvdXRfbGVuZ3RoID0gcy5sYXN0X2xpdCo4O1xuLy8gICAgaW5fbGVuZ3RoID0gcy5zdHJzdGFydCAtIHMuYmxvY2tfc3RhcnQ7XG4vL1xuLy8gICAgZm9yIChkY29kZSA9IDA7IGRjb2RlIDwgRF9DT0RFUzsgZGNvZGUrKykge1xuLy8gICAgICBvdXRfbGVuZ3RoICs9IHMuZHluX2R0cmVlW2Rjb2RlKjJdLyouRnJlcSovICogKDUgKyBleHRyYV9kYml0c1tkY29kZV0pO1xuLy8gICAgfVxuLy8gICAgb3V0X2xlbmd0aCA+Pj49IDM7XG4vLyAgICAvL1RyYWNldigoc3RkZXJyLFwiXFxubGFzdF9saXQgJXUsIGluICVsZCwgb3V0IH4lbGQoJWxkJSUpIFwiLFxuLy8gICAgLy8gICAgICAgcy0+bGFzdF9saXQsIGluX2xlbmd0aCwgb3V0X2xlbmd0aCxcbi8vICAgIC8vICAgICAgIDEwMEwgLSBvdXRfbGVuZ3RoKjEwMEwvaW5fbGVuZ3RoKSk7XG4vLyAgICBpZiAocy5tYXRjaGVzIDwgKHMubGFzdF9saXQ+PjEpLyppbnQgLzIqLyAmJiBvdXRfbGVuZ3RoIDwgKGluX2xlbmd0aD4+MSkvKmludCAvMiovKSB7XG4vLyAgICAgIHJldHVybiB0cnVlO1xuLy8gICAgfVxuLy8gIH1cbi8vI2VuZGlmXG5cbiAgcmV0dXJuIChzLmxhc3RfbGl0ID09PSBzLmxpdF9idWZzaXplIC0gMSk7XG4gIC8qIFdlIGF2b2lkIGVxdWFsaXR5IHdpdGggbGl0X2J1ZnNpemUgYmVjYXVzZSBvZiB3cmFwYXJvdW5kIGF0IDY0S1xuICAgKiBvbiAxNiBiaXQgbWFjaGluZXMgYW5kIGJlY2F1c2Ugc3RvcmVkIGJsb2NrcyBhcmUgcmVzdHJpY3RlZCB0b1xuICAgKiA2NEstMSBieXRlcy5cbiAgICovXG59XG5cbmV4cG9ydHMuX3RyX2luaXQgID0gX3RyX2luaXQ7XG5leHBvcnRzLl90cl9zdG9yZWRfYmxvY2sgPSBfdHJfc3RvcmVkX2Jsb2NrO1xuZXhwb3J0cy5fdHJfZmx1c2hfYmxvY2sgID0gX3RyX2ZsdXNoX2Jsb2NrO1xuZXhwb3J0cy5fdHJfdGFsbHkgPSBfdHJfdGFsbHk7XG5leHBvcnRzLl90cl9hbGlnbiA9IF90cl9hbGlnbjtcbiIsIid1c2Ugc3RyaWN0JztcblxuXG5mdW5jdGlvbiBaU3RyZWFtKCkge1xuICAvKiBuZXh0IGlucHV0IGJ5dGUgKi9cbiAgdGhpcy5pbnB1dCA9IG51bGw7IC8vIEpTIHNwZWNpZmljLCBiZWNhdXNlIHdlIGhhdmUgbm8gcG9pbnRlcnNcbiAgdGhpcy5uZXh0X2luID0gMDtcbiAgLyogbnVtYmVyIG9mIGJ5dGVzIGF2YWlsYWJsZSBhdCBpbnB1dCAqL1xuICB0aGlzLmF2YWlsX2luID0gMDtcbiAgLyogdG90YWwgbnVtYmVyIG9mIGlucHV0IGJ5dGVzIHJlYWQgc28gZmFyICovXG4gIHRoaXMudG90YWxfaW4gPSAwO1xuICAvKiBuZXh0IG91dHB1dCBieXRlIHNob3VsZCBiZSBwdXQgdGhlcmUgKi9cbiAgdGhpcy5vdXRwdXQgPSBudWxsOyAvLyBKUyBzcGVjaWZpYywgYmVjYXVzZSB3ZSBoYXZlIG5vIHBvaW50ZXJzXG4gIHRoaXMubmV4dF9vdXQgPSAwO1xuICAvKiByZW1haW5pbmcgZnJlZSBzcGFjZSBhdCBvdXRwdXQgKi9cbiAgdGhpcy5hdmFpbF9vdXQgPSAwO1xuICAvKiB0b3RhbCBudW1iZXIgb2YgYnl0ZXMgb3V0cHV0IHNvIGZhciAqL1xuICB0aGlzLnRvdGFsX291dCA9IDA7XG4gIC8qIGxhc3QgZXJyb3IgbWVzc2FnZSwgTlVMTCBpZiBubyBlcnJvciAqL1xuICB0aGlzLm1zZyA9ICcnLypaX05VTEwqLztcbiAgLyogbm90IHZpc2libGUgYnkgYXBwbGljYXRpb25zICovXG4gIHRoaXMuc3RhdGUgPSBudWxsO1xuICAvKiBiZXN0IGd1ZXNzIGFib3V0IHRoZSBkYXRhIHR5cGU6IGJpbmFyeSBvciB0ZXh0ICovXG4gIHRoaXMuZGF0YV90eXBlID0gMi8qWl9VTktOT1dOKi87XG4gIC8qIGFkbGVyMzIgdmFsdWUgb2YgdGhlIHVuY29tcHJlc3NlZCBkYXRhICovXG4gIHRoaXMuYWRsZXIgPSAwO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFpTdHJlYW07XG4iLCJtb2R1bGUuZXhwb3J0cz17XCIyLjE2Ljg0MC4xLjEwMS4zLjQuMS4xXCI6IFwiYWVzLTEyOC1lY2JcIixcblwiMi4xNi44NDAuMS4xMDEuMy40LjEuMlwiOiBcImFlcy0xMjgtY2JjXCIsXG5cIjIuMTYuODQwLjEuMTAxLjMuNC4xLjNcIjogXCJhZXMtMTI4LW9mYlwiLFxuXCIyLjE2Ljg0MC4xLjEwMS4zLjQuMS40XCI6IFwiYWVzLTEyOC1jZmJcIixcblwiMi4xNi44NDAuMS4xMDEuMy40LjEuMjFcIjogXCJhZXMtMTkyLWVjYlwiLFxuXCIyLjE2Ljg0MC4xLjEwMS4zLjQuMS4yMlwiOiBcImFlcy0xOTItY2JjXCIsXG5cIjIuMTYuODQwLjEuMTAxLjMuNC4xLjIzXCI6IFwiYWVzLTE5Mi1vZmJcIixcblwiMi4xNi44NDAuMS4xMDEuMy40LjEuMjRcIjogXCJhZXMtMTkyLWNmYlwiLFxuXCIyLjE2Ljg0MC4xLjEwMS4zLjQuMS40MVwiOiBcImFlcy0yNTYtZWNiXCIsXG5cIjIuMTYuODQwLjEuMTAxLjMuNC4xLjQyXCI6IFwiYWVzLTI1Ni1jYmNcIixcblwiMi4xNi44NDAuMS4xMDEuMy40LjEuNDNcIjogXCJhZXMtMjU2LW9mYlwiLFxuXCIyLjE2Ljg0MC4xLjEwMS4zLjQuMS40NFwiOiBcImFlcy0yNTYtY2ZiXCJcbn0iLCIvLyBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9pbmR1dG55L3NlbGYtc2lnbmVkL2Jsb2IvZ2gtcGFnZXMvbGliL2FzbjEuanNcbi8vIEZlZG9yLCB5b3UgYXJlIGFtYXppbmcuXG4ndXNlIHN0cmljdCdcblxudmFyIGFzbjEgPSByZXF1aXJlKCdhc24xLmpzJylcblxuZXhwb3J0cy5jZXJ0aWZpY2F0ZSA9IHJlcXVpcmUoJy4vY2VydGlmaWNhdGUnKVxuXG52YXIgUlNBUHJpdmF0ZUtleSA9IGFzbjEuZGVmaW5lKCdSU0FQcml2YXRlS2V5JywgZnVuY3Rpb24gKCkge1xuICB0aGlzLnNlcSgpLm9iaihcbiAgICB0aGlzLmtleSgndmVyc2lvbicpLmludCgpLFxuICAgIHRoaXMua2V5KCdtb2R1bHVzJykuaW50KCksXG4gICAgdGhpcy5rZXkoJ3B1YmxpY0V4cG9uZW50JykuaW50KCksXG4gICAgdGhpcy5rZXkoJ3ByaXZhdGVFeHBvbmVudCcpLmludCgpLFxuICAgIHRoaXMua2V5KCdwcmltZTEnKS5pbnQoKSxcbiAgICB0aGlzLmtleSgncHJpbWUyJykuaW50KCksXG4gICAgdGhpcy5rZXkoJ2V4cG9uZW50MScpLmludCgpLFxuICAgIHRoaXMua2V5KCdleHBvbmVudDInKS5pbnQoKSxcbiAgICB0aGlzLmtleSgnY29lZmZpY2llbnQnKS5pbnQoKVxuICApXG59KVxuZXhwb3J0cy5SU0FQcml2YXRlS2V5ID0gUlNBUHJpdmF0ZUtleVxuXG52YXIgUlNBUHVibGljS2V5ID0gYXNuMS5kZWZpbmUoJ1JTQVB1YmxpY0tleScsIGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5zZXEoKS5vYmooXG4gICAgdGhpcy5rZXkoJ21vZHVsdXMnKS5pbnQoKSxcbiAgICB0aGlzLmtleSgncHVibGljRXhwb25lbnQnKS5pbnQoKVxuICApXG59KVxuZXhwb3J0cy5SU0FQdWJsaWNLZXkgPSBSU0FQdWJsaWNLZXlcblxudmFyIFB1YmxpY0tleSA9IGFzbjEuZGVmaW5lKCdTdWJqZWN0UHVibGljS2V5SW5mbycsIGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5zZXEoKS5vYmooXG4gICAgdGhpcy5rZXkoJ2FsZ29yaXRobScpLnVzZShBbGdvcml0aG1JZGVudGlmaWVyKSxcbiAgICB0aGlzLmtleSgnc3ViamVjdFB1YmxpY0tleScpLmJpdHN0cigpXG4gIClcbn0pXG5leHBvcnRzLlB1YmxpY0tleSA9IFB1YmxpY0tleVxuXG52YXIgQWxnb3JpdGhtSWRlbnRpZmllciA9IGFzbjEuZGVmaW5lKCdBbGdvcml0aG1JZGVudGlmaWVyJywgZnVuY3Rpb24gKCkge1xuICB0aGlzLnNlcSgpLm9iaihcbiAgICB0aGlzLmtleSgnYWxnb3JpdGhtJykub2JqaWQoKSxcbiAgICB0aGlzLmtleSgnbm9uZScpLm51bGxfKCkub3B0aW9uYWwoKSxcbiAgICB0aGlzLmtleSgnY3VydmUnKS5vYmppZCgpLm9wdGlvbmFsKCksXG4gICAgdGhpcy5rZXkoJ3BhcmFtcycpLnNlcSgpLm9iaihcbiAgICAgIHRoaXMua2V5KCdwJykuaW50KCksXG4gICAgICB0aGlzLmtleSgncScpLmludCgpLFxuICAgICAgdGhpcy5rZXkoJ2cnKS5pbnQoKVxuICAgICkub3B0aW9uYWwoKVxuICApXG59KVxuXG52YXIgUHJpdmF0ZUtleUluZm8gPSBhc24xLmRlZmluZSgnUHJpdmF0ZUtleUluZm8nLCBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuc2VxKCkub2JqKFxuICAgIHRoaXMua2V5KCd2ZXJzaW9uJykuaW50KCksXG4gICAgdGhpcy5rZXkoJ2FsZ29yaXRobScpLnVzZShBbGdvcml0aG1JZGVudGlmaWVyKSxcbiAgICB0aGlzLmtleSgnc3ViamVjdFByaXZhdGVLZXknKS5vY3RzdHIoKVxuICApXG59KVxuZXhwb3J0cy5Qcml2YXRlS2V5ID0gUHJpdmF0ZUtleUluZm9cbnZhciBFbmNyeXB0ZWRQcml2YXRlS2V5SW5mbyA9IGFzbjEuZGVmaW5lKCdFbmNyeXB0ZWRQcml2YXRlS2V5SW5mbycsIGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5zZXEoKS5vYmooXG4gICAgdGhpcy5rZXkoJ2FsZ29yaXRobScpLnNlcSgpLm9iaihcbiAgICAgIHRoaXMua2V5KCdpZCcpLm9iamlkKCksXG4gICAgICB0aGlzLmtleSgnZGVjcnlwdCcpLnNlcSgpLm9iaihcbiAgICAgICAgdGhpcy5rZXkoJ2tkZScpLnNlcSgpLm9iaihcbiAgICAgICAgICB0aGlzLmtleSgnaWQnKS5vYmppZCgpLFxuICAgICAgICAgIHRoaXMua2V5KCdrZGVwYXJhbXMnKS5zZXEoKS5vYmooXG4gICAgICAgICAgICB0aGlzLmtleSgnc2FsdCcpLm9jdHN0cigpLFxuICAgICAgICAgICAgdGhpcy5rZXkoJ2l0ZXJzJykuaW50KClcbiAgICAgICAgICApXG4gICAgICAgICksXG4gICAgICAgIHRoaXMua2V5KCdjaXBoZXInKS5zZXEoKS5vYmooXG4gICAgICAgICAgdGhpcy5rZXkoJ2FsZ28nKS5vYmppZCgpLFxuICAgICAgICAgIHRoaXMua2V5KCdpdicpLm9jdHN0cigpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApLFxuICAgIHRoaXMua2V5KCdzdWJqZWN0UHJpdmF0ZUtleScpLm9jdHN0cigpXG4gIClcbn0pXG5cbmV4cG9ydHMuRW5jcnlwdGVkUHJpdmF0ZUtleSA9IEVuY3J5cHRlZFByaXZhdGVLZXlJbmZvXG5cbnZhciBEU0FQcml2YXRlS2V5ID0gYXNuMS5kZWZpbmUoJ0RTQVByaXZhdGVLZXknLCBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuc2VxKCkub2JqKFxuICAgIHRoaXMua2V5KCd2ZXJzaW9uJykuaW50KCksXG4gICAgdGhpcy5rZXkoJ3AnKS5pbnQoKSxcbiAgICB0aGlzLmtleSgncScpLmludCgpLFxuICAgIHRoaXMua2V5KCdnJykuaW50KCksXG4gICAgdGhpcy5rZXkoJ3B1Yl9rZXknKS5pbnQoKSxcbiAgICB0aGlzLmtleSgncHJpdl9rZXknKS5pbnQoKVxuICApXG59KVxuZXhwb3J0cy5EU0FQcml2YXRlS2V5ID0gRFNBUHJpdmF0ZUtleVxuXG5leHBvcnRzLkRTQXBhcmFtID0gYXNuMS5kZWZpbmUoJ0RTQXBhcmFtJywgZnVuY3Rpb24gKCkge1xuICB0aGlzLmludCgpXG59KVxuXG52YXIgRUNQcml2YXRlS2V5ID0gYXNuMS5kZWZpbmUoJ0VDUHJpdmF0ZUtleScsIGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5zZXEoKS5vYmooXG4gICAgdGhpcy5rZXkoJ3ZlcnNpb24nKS5pbnQoKSxcbiAgICB0aGlzLmtleSgncHJpdmF0ZUtleScpLm9jdHN0cigpLFxuICAgIHRoaXMua2V5KCdwYXJhbWV0ZXJzJykub3B0aW9uYWwoKS5leHBsaWNpdCgwKS51c2UoRUNQYXJhbWV0ZXJzKSxcbiAgICB0aGlzLmtleSgncHVibGljS2V5Jykub3B0aW9uYWwoKS5leHBsaWNpdCgxKS5iaXRzdHIoKVxuICApXG59KVxuZXhwb3J0cy5FQ1ByaXZhdGVLZXkgPSBFQ1ByaXZhdGVLZXlcblxudmFyIEVDUGFyYW1ldGVycyA9IGFzbjEuZGVmaW5lKCdFQ1BhcmFtZXRlcnMnLCBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuY2hvaWNlKHtcbiAgICBuYW1lZEN1cnZlOiB0aGlzLm9iamlkKClcbiAgfSlcbn0pXG5cbmV4cG9ydHMuc2lnbmF0dXJlID0gYXNuMS5kZWZpbmUoJ3NpZ25hdHVyZScsIGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5zZXEoKS5vYmooXG4gICAgdGhpcy5rZXkoJ3InKS5pbnQoKSxcbiAgICB0aGlzLmtleSgncycpLmludCgpXG4gIClcbn0pXG4iLCIvLyBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9SYW50YW5lbi9ub2RlLWR0bHMvYmxvYi8yNWE3ZGM4NjFiZGEzOGNmZWFjOTNhNzIzNTAwZWVhNGYwYWMyZTg2L0NlcnRpZmljYXRlLmpzXG4vLyB0aGFua3MgdG8gQFJhbnRhbmVuXG5cbid1c2Ugc3RyaWN0J1xuXG52YXIgYXNuID0gcmVxdWlyZSgnYXNuMS5qcycpXG5cbnZhciBUaW1lID0gYXNuLmRlZmluZSgnVGltZScsIGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5jaG9pY2Uoe1xuICAgIHV0Y1RpbWU6IHRoaXMudXRjdGltZSgpLFxuICAgIGdlbmVyYWxUaW1lOiB0aGlzLmdlbnRpbWUoKVxuICB9KVxufSlcblxudmFyIEF0dHJpYnV0ZVR5cGVWYWx1ZSA9IGFzbi5kZWZpbmUoJ0F0dHJpYnV0ZVR5cGVWYWx1ZScsIGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5zZXEoKS5vYmooXG4gICAgdGhpcy5rZXkoJ3R5cGUnKS5vYmppZCgpLFxuICAgIHRoaXMua2V5KCd2YWx1ZScpLmFueSgpXG4gIClcbn0pXG5cbnZhciBBbGdvcml0aG1JZGVudGlmaWVyID0gYXNuLmRlZmluZSgnQWxnb3JpdGhtSWRlbnRpZmllcicsIGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5zZXEoKS5vYmooXG4gICAgdGhpcy5rZXkoJ2FsZ29yaXRobScpLm9iamlkKCksXG4gICAgdGhpcy5rZXkoJ3BhcmFtZXRlcnMnKS5vcHRpb25hbCgpXG4gIClcbn0pXG5cbnZhciBTdWJqZWN0UHVibGljS2V5SW5mbyA9IGFzbi5kZWZpbmUoJ1N1YmplY3RQdWJsaWNLZXlJbmZvJywgZnVuY3Rpb24gKCkge1xuICB0aGlzLnNlcSgpLm9iaihcbiAgICB0aGlzLmtleSgnYWxnb3JpdGhtJykudXNlKEFsZ29yaXRobUlkZW50aWZpZXIpLFxuICAgIHRoaXMua2V5KCdzdWJqZWN0UHVibGljS2V5JykuYml0c3RyKClcbiAgKVxufSlcblxudmFyIFJlbGF0aXZlRGlzdGluZ3Vpc2hlZE5hbWUgPSBhc24uZGVmaW5lKCdSZWxhdGl2ZURpc3Rpbmd1aXNoZWROYW1lJywgZnVuY3Rpb24gKCkge1xuICB0aGlzLnNldG9mKEF0dHJpYnV0ZVR5cGVWYWx1ZSlcbn0pXG5cbnZhciBSRE5TZXF1ZW5jZSA9IGFzbi5kZWZpbmUoJ1JETlNlcXVlbmNlJywgZnVuY3Rpb24gKCkge1xuICB0aGlzLnNlcW9mKFJlbGF0aXZlRGlzdGluZ3Vpc2hlZE5hbWUpXG59KVxuXG52YXIgTmFtZSA9IGFzbi5kZWZpbmUoJ05hbWUnLCBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuY2hvaWNlKHtcbiAgICByZG5TZXF1ZW5jZTogdGhpcy51c2UoUkROU2VxdWVuY2UpXG4gIH0pXG59KVxuXG52YXIgVmFsaWRpdHkgPSBhc24uZGVmaW5lKCdWYWxpZGl0eScsIGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5zZXEoKS5vYmooXG4gICAgdGhpcy5rZXkoJ25vdEJlZm9yZScpLnVzZShUaW1lKSxcbiAgICB0aGlzLmtleSgnbm90QWZ0ZXInKS51c2UoVGltZSlcbiAgKVxufSlcblxudmFyIEV4dGVuc2lvbiA9IGFzbi5kZWZpbmUoJ0V4dGVuc2lvbicsIGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5zZXEoKS5vYmooXG4gICAgdGhpcy5rZXkoJ2V4dG5JRCcpLm9iamlkKCksXG4gICAgdGhpcy5rZXkoJ2NyaXRpY2FsJykuYm9vbCgpLmRlZihmYWxzZSksXG4gICAgdGhpcy5rZXkoJ2V4dG5WYWx1ZScpLm9jdHN0cigpXG4gIClcbn0pXG5cbnZhciBUQlNDZXJ0aWZpY2F0ZSA9IGFzbi5kZWZpbmUoJ1RCU0NlcnRpZmljYXRlJywgZnVuY3Rpb24gKCkge1xuICB0aGlzLnNlcSgpLm9iaihcbiAgICB0aGlzLmtleSgndmVyc2lvbicpLmV4cGxpY2l0KDApLmludCgpLFxuICAgIHRoaXMua2V5KCdzZXJpYWxOdW1iZXInKS5pbnQoKSxcbiAgICB0aGlzLmtleSgnc2lnbmF0dXJlJykudXNlKEFsZ29yaXRobUlkZW50aWZpZXIpLFxuICAgIHRoaXMua2V5KCdpc3N1ZXInKS51c2UoTmFtZSksXG4gICAgdGhpcy5rZXkoJ3ZhbGlkaXR5JykudXNlKFZhbGlkaXR5KSxcbiAgICB0aGlzLmtleSgnc3ViamVjdCcpLnVzZShOYW1lKSxcbiAgICB0aGlzLmtleSgnc3ViamVjdFB1YmxpY0tleUluZm8nKS51c2UoU3ViamVjdFB1YmxpY0tleUluZm8pLFxuICAgIHRoaXMua2V5KCdpc3N1ZXJVbmlxdWVJRCcpLmltcGxpY2l0KDEpLmJpdHN0cigpLm9wdGlvbmFsKCksXG4gICAgdGhpcy5rZXkoJ3N1YmplY3RVbmlxdWVJRCcpLmltcGxpY2l0KDIpLmJpdHN0cigpLm9wdGlvbmFsKCksXG4gICAgdGhpcy5rZXkoJ2V4dGVuc2lvbnMnKS5leHBsaWNpdCgzKS5zZXFvZihFeHRlbnNpb24pLm9wdGlvbmFsKClcbiAgKVxufSlcblxudmFyIFg1MDlDZXJ0aWZpY2F0ZSA9IGFzbi5kZWZpbmUoJ1g1MDlDZXJ0aWZpY2F0ZScsIGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5zZXEoKS5vYmooXG4gICAgdGhpcy5rZXkoJ3Ric0NlcnRpZmljYXRlJykudXNlKFRCU0NlcnRpZmljYXRlKSxcbiAgICB0aGlzLmtleSgnc2lnbmF0dXJlQWxnb3JpdGhtJykudXNlKEFsZ29yaXRobUlkZW50aWZpZXIpLFxuICAgIHRoaXMua2V5KCdzaWduYXR1cmVWYWx1ZScpLmJpdHN0cigpXG4gIClcbn0pXG5cbm1vZHVsZS5leHBvcnRzID0gWDUwOUNlcnRpZmljYXRlXG4iLCIvLyBhZGFwdGVkIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2FwYXRpbC9wZW1zdHJpcFxudmFyIGZpbmRQcm9jID0gL1Byb2MtVHlwZTogNCxFTkNSWVBURURcXG5cXHI/REVLLUluZm86IEFFUy0oKD86MTI4KXwoPzoxOTIpfCg/OjI1NikpLUNCQywoWzAtOUEtSF0rKVxcblxccj9cXG5cXHI/KFswLTlBLXpcXG5cXHJcXCtcXC9cXD1dKylcXG5cXHI/L21cbnZhciBzdGFydFJlZ2V4ID0gL14tLS0tLUJFR0lOICgoPzouKiBLRVkpfENFUlRJRklDQVRFKS0tLS0tXFxuL21cbnZhciBmdWxsUmVnZXggPSAvXi0tLS0tQkVHSU4gKCg/Oi4qIEtFWSl8Q0VSVElGSUNBVEUpLS0tLS1cXG5cXHI/KFswLTlBLXpcXG5cXHJcXCtcXC9cXD1dKylcXG5cXHI/LS0tLS1FTkQgXFwxLS0tLS0kL21cbnZhciBldnAgPSByZXF1aXJlKCdldnBfYnl0ZXN0b2tleScpXG52YXIgY2lwaGVycyA9IHJlcXVpcmUoJ2Jyb3dzZXJpZnktYWVzJylcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9rZXksIHBhc3N3b3JkKSB7XG4gIHZhciBrZXkgPSBva2V5LnRvU3RyaW5nKClcbiAgdmFyIG1hdGNoID0ga2V5Lm1hdGNoKGZpbmRQcm9jKVxuICB2YXIgZGVjcnlwdGVkXG4gIGlmICghbWF0Y2gpIHtcbiAgICB2YXIgbWF0Y2gyID0ga2V5Lm1hdGNoKGZ1bGxSZWdleClcbiAgICBkZWNyeXB0ZWQgPSBuZXcgQnVmZmVyKG1hdGNoMlsyXS5yZXBsYWNlKC9cXHI/XFxuL2csICcnKSwgJ2Jhc2U2NCcpXG4gIH0gZWxzZSB7XG4gICAgdmFyIHN1aXRlID0gJ2FlcycgKyBtYXRjaFsxXVxuICAgIHZhciBpdiA9IG5ldyBCdWZmZXIobWF0Y2hbMl0sICdoZXgnKVxuICAgIHZhciBjaXBoZXJUZXh0ID0gbmV3IEJ1ZmZlcihtYXRjaFszXS5yZXBsYWNlKC9cXHI/XFxuL2csICcnKSwgJ2Jhc2U2NCcpXG4gICAgdmFyIGNpcGhlcktleSA9IGV2cChwYXNzd29yZCwgaXYuc2xpY2UoMCwgOCksIHBhcnNlSW50KG1hdGNoWzFdLCAxMCkpLmtleVxuICAgIHZhciBvdXQgPSBbXVxuICAgIHZhciBjaXBoZXIgPSBjaXBoZXJzLmNyZWF0ZURlY2lwaGVyaXYoc3VpdGUsIGNpcGhlcktleSwgaXYpXG4gICAgb3V0LnB1c2goY2lwaGVyLnVwZGF0ZShjaXBoZXJUZXh0KSlcbiAgICBvdXQucHVzaChjaXBoZXIuZmluYWwoKSlcbiAgICBkZWNyeXB0ZWQgPSBCdWZmZXIuY29uY2F0KG91dClcbiAgfVxuICB2YXIgdGFnID0ga2V5Lm1hdGNoKHN0YXJ0UmVnZXgpWzFdXG4gIHJldHVybiB7XG4gICAgdGFnOiB0YWcsXG4gICAgZGF0YTogZGVjcnlwdGVkXG4gIH1cbn1cbiIsInZhciBhc24xID0gcmVxdWlyZSgnLi9hc24xJylcbnZhciBhZXNpZCA9IHJlcXVpcmUoJy4vYWVzaWQuanNvbicpXG52YXIgZml4UHJvYyA9IHJlcXVpcmUoJy4vZml4UHJvYycpXG52YXIgY2lwaGVycyA9IHJlcXVpcmUoJ2Jyb3dzZXJpZnktYWVzJylcbnZhciBjb21wYXQgPSByZXF1aXJlKCdwYmtkZjInKVxubW9kdWxlLmV4cG9ydHMgPSBwYXJzZUtleXNcblxuZnVuY3Rpb24gcGFyc2VLZXlzIChidWZmZXIpIHtcbiAgdmFyIHBhc3N3b3JkXG4gIGlmICh0eXBlb2YgYnVmZmVyID09PSAnb2JqZWN0JyAmJiAhQnVmZmVyLmlzQnVmZmVyKGJ1ZmZlcikpIHtcbiAgICBwYXNzd29yZCA9IGJ1ZmZlci5wYXNzcGhyYXNlXG4gICAgYnVmZmVyID0gYnVmZmVyLmtleVxuICB9XG4gIGlmICh0eXBlb2YgYnVmZmVyID09PSAnc3RyaW5nJykge1xuICAgIGJ1ZmZlciA9IG5ldyBCdWZmZXIoYnVmZmVyKVxuICB9XG5cbiAgdmFyIHN0cmlwcGVkID0gZml4UHJvYyhidWZmZXIsIHBhc3N3b3JkKVxuXG4gIHZhciB0eXBlID0gc3RyaXBwZWQudGFnXG4gIHZhciBkYXRhID0gc3RyaXBwZWQuZGF0YVxuICB2YXIgc3VidHlwZSwgbmRhdGFcbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSAnQ0VSVElGSUNBVEUnOlxuICAgICAgbmRhdGEgPSBhc24xLmNlcnRpZmljYXRlLmRlY29kZShkYXRhLCAnZGVyJykudGJzQ2VydGlmaWNhdGUuc3ViamVjdFB1YmxpY0tleUluZm9cbiAgICAgIC8vIGZhbGxzIHRocm91Z2hcbiAgICBjYXNlICdQVUJMSUMgS0VZJzpcbiAgICAgIGlmICghbmRhdGEpIHtcbiAgICAgICAgbmRhdGEgPSBhc24xLlB1YmxpY0tleS5kZWNvZGUoZGF0YSwgJ2RlcicpXG4gICAgICB9XG4gICAgICBzdWJ0eXBlID0gbmRhdGEuYWxnb3JpdGhtLmFsZ29yaXRobS5qb2luKCcuJylcbiAgICAgIHN3aXRjaCAoc3VidHlwZSkge1xuICAgICAgICBjYXNlICcxLjIuODQwLjExMzU0OS4xLjEuMSc6XG4gICAgICAgICAgcmV0dXJuIGFzbjEuUlNBUHVibGljS2V5LmRlY29kZShuZGF0YS5zdWJqZWN0UHVibGljS2V5LmRhdGEsICdkZXInKVxuICAgICAgICBjYXNlICcxLjIuODQwLjEwMDQ1LjIuMSc6XG4gICAgICAgICAgbmRhdGEuc3ViamVjdFByaXZhdGVLZXkgPSBuZGF0YS5zdWJqZWN0UHVibGljS2V5XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHR5cGU6ICdlYycsXG4gICAgICAgICAgICBkYXRhOiBuZGF0YVxuICAgICAgICAgIH1cbiAgICAgICAgY2FzZSAnMS4yLjg0MC4xMDA0MC40LjEnOlxuICAgICAgICAgIG5kYXRhLmFsZ29yaXRobS5wYXJhbXMucHViX2tleSA9IGFzbjEuRFNBcGFyYW0uZGVjb2RlKG5kYXRhLnN1YmplY3RQdWJsaWNLZXkuZGF0YSwgJ2RlcicpXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHR5cGU6ICdkc2EnLFxuICAgICAgICAgICAgZGF0YTogbmRhdGEuYWxnb3JpdGhtLnBhcmFtc1xuICAgICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDogdGhyb3cgbmV3IEVycm9yKCd1bmtub3duIGtleSBpZCAnICsgc3VidHlwZSlcbiAgICAgIH1cbiAgICAgIHRocm93IG5ldyBFcnJvcigndW5rbm93biBrZXkgdHlwZSAnICsgdHlwZSlcbiAgICBjYXNlICdFTkNSWVBURUQgUFJJVkFURSBLRVknOlxuICAgICAgZGF0YSA9IGFzbjEuRW5jcnlwdGVkUHJpdmF0ZUtleS5kZWNvZGUoZGF0YSwgJ2RlcicpXG4gICAgICBkYXRhID0gZGVjcnlwdChkYXRhLCBwYXNzd29yZClcbiAgICAgIC8vIGZhbGxzIHRocm91Z2hcbiAgICBjYXNlICdQUklWQVRFIEtFWSc6XG4gICAgICBuZGF0YSA9IGFzbjEuUHJpdmF0ZUtleS5kZWNvZGUoZGF0YSwgJ2RlcicpXG4gICAgICBzdWJ0eXBlID0gbmRhdGEuYWxnb3JpdGhtLmFsZ29yaXRobS5qb2luKCcuJylcbiAgICAgIHN3aXRjaCAoc3VidHlwZSkge1xuICAgICAgICBjYXNlICcxLjIuODQwLjExMzU0OS4xLjEuMSc6XG4gICAgICAgICAgcmV0dXJuIGFzbjEuUlNBUHJpdmF0ZUtleS5kZWNvZGUobmRhdGEuc3ViamVjdFByaXZhdGVLZXksICdkZXInKVxuICAgICAgICBjYXNlICcxLjIuODQwLjEwMDQ1LjIuMSc6XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGN1cnZlOiBuZGF0YS5hbGdvcml0aG0uY3VydmUsXG4gICAgICAgICAgICBwcml2YXRlS2V5OiBhc24xLkVDUHJpdmF0ZUtleS5kZWNvZGUobmRhdGEuc3ViamVjdFByaXZhdGVLZXksICdkZXInKS5wcml2YXRlS2V5XG4gICAgICAgICAgfVxuICAgICAgICBjYXNlICcxLjIuODQwLjEwMDQwLjQuMSc6XG4gICAgICAgICAgbmRhdGEuYWxnb3JpdGhtLnBhcmFtcy5wcml2X2tleSA9IGFzbjEuRFNBcGFyYW0uZGVjb2RlKG5kYXRhLnN1YmplY3RQcml2YXRlS2V5LCAnZGVyJylcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdHlwZTogJ2RzYScsXG4gICAgICAgICAgICBwYXJhbXM6IG5kYXRhLmFsZ29yaXRobS5wYXJhbXNcbiAgICAgICAgICB9XG4gICAgICAgIGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvcigndW5rbm93biBrZXkgaWQgJyArIHN1YnR5cGUpXG4gICAgICB9XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3Vua25vd24ga2V5IHR5cGUgJyArIHR5cGUpXG4gICAgY2FzZSAnUlNBIFBVQkxJQyBLRVknOlxuICAgICAgcmV0dXJuIGFzbjEuUlNBUHVibGljS2V5LmRlY29kZShkYXRhLCAnZGVyJylcbiAgICBjYXNlICdSU0EgUFJJVkFURSBLRVknOlxuICAgICAgcmV0dXJuIGFzbjEuUlNBUHJpdmF0ZUtleS5kZWNvZGUoZGF0YSwgJ2RlcicpXG4gICAgY2FzZSAnRFNBIFBSSVZBVEUgS0VZJzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHR5cGU6ICdkc2EnLFxuICAgICAgICBwYXJhbXM6IGFzbjEuRFNBUHJpdmF0ZUtleS5kZWNvZGUoZGF0YSwgJ2RlcicpXG4gICAgICB9XG4gICAgY2FzZSAnRUMgUFJJVkFURSBLRVknOlxuICAgICAgZGF0YSA9IGFzbjEuRUNQcml2YXRlS2V5LmRlY29kZShkYXRhLCAnZGVyJylcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGN1cnZlOiBkYXRhLnBhcmFtZXRlcnMudmFsdWUsXG4gICAgICAgIHByaXZhdGVLZXk6IGRhdGEucHJpdmF0ZUtleVxuICAgICAgfVxuICAgIGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvcigndW5rbm93biBrZXkgdHlwZSAnICsgdHlwZSlcbiAgfVxufVxucGFyc2VLZXlzLnNpZ25hdHVyZSA9IGFzbjEuc2lnbmF0dXJlXG5mdW5jdGlvbiBkZWNyeXB0IChkYXRhLCBwYXNzd29yZCkge1xuICB2YXIgc2FsdCA9IGRhdGEuYWxnb3JpdGhtLmRlY3J5cHQua2RlLmtkZXBhcmFtcy5zYWx0XG4gIHZhciBpdGVycyA9IHBhcnNlSW50KGRhdGEuYWxnb3JpdGhtLmRlY3J5cHQua2RlLmtkZXBhcmFtcy5pdGVycy50b1N0cmluZygpLCAxMClcbiAgdmFyIGFsZ28gPSBhZXNpZFtkYXRhLmFsZ29yaXRobS5kZWNyeXB0LmNpcGhlci5hbGdvLmpvaW4oJy4nKV1cbiAgdmFyIGl2ID0gZGF0YS5hbGdvcml0aG0uZGVjcnlwdC5jaXBoZXIuaXZcbiAgdmFyIGNpcGhlclRleHQgPSBkYXRhLnN1YmplY3RQcml2YXRlS2V5XG4gIHZhciBrZXlsZW4gPSBwYXJzZUludChhbGdvLnNwbGl0KCctJylbMV0sIDEwKSAvIDhcbiAgdmFyIGtleSA9IGNvbXBhdC5wYmtkZjJTeW5jKHBhc3N3b3JkLCBzYWx0LCBpdGVycywga2V5bGVuKVxuICB2YXIgY2lwaGVyID0gY2lwaGVycy5jcmVhdGVEZWNpcGhlcml2KGFsZ28sIGtleSwgaXYpXG4gIHZhciBvdXQgPSBbXVxuICBvdXQucHVzaChjaXBoZXIudXBkYXRlKGNpcGhlclRleHQpKVxuICBvdXQucHVzaChjaXBoZXIuZmluYWwoKSlcbiAgcmV0dXJuIEJ1ZmZlci5jb25jYXQob3V0KVxufVxuIiwiLy8gQ29weXJpZ2h0IEpveWVudCwgSW5jLiBhbmQgb3RoZXIgTm9kZSBjb250cmlidXRvcnMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbi8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGVcbi8vIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZ1xuLy8gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLFxuLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdFxuLy8gcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlXG4vLyBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZFxuLy8gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTU1xuLy8gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRlxuLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTlxuLy8gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sXG4vLyBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Jcbi8vIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEVcbi8vIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG5cbi8vIHJlc29sdmVzIC4gYW5kIC4uIGVsZW1lbnRzIGluIGEgcGF0aCBhcnJheSB3aXRoIGRpcmVjdG9yeSBuYW1lcyB0aGVyZVxuLy8gbXVzdCBiZSBubyBzbGFzaGVzLCBlbXB0eSBlbGVtZW50cywgb3IgZGV2aWNlIG5hbWVzIChjOlxcKSBpbiB0aGUgYXJyYXlcbi8vIChzbyBhbHNvIG5vIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHNsYXNoZXMgLSBpdCBkb2VzIG5vdCBkaXN0aW5ndWlzaFxuLy8gcmVsYXRpdmUgYW5kIGFic29sdXRlIHBhdGhzKVxuZnVuY3Rpb24gbm9ybWFsaXplQXJyYXkocGFydHMsIGFsbG93QWJvdmVSb290KSB7XG4gIC8vIGlmIHRoZSBwYXRoIHRyaWVzIHRvIGdvIGFib3ZlIHRoZSByb290LCBgdXBgIGVuZHMgdXAgPiAwXG4gIHZhciB1cCA9IDA7XG4gIGZvciAodmFyIGkgPSBwYXJ0cy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgIHZhciBsYXN0ID0gcGFydHNbaV07XG4gICAgaWYgKGxhc3QgPT09ICcuJykge1xuICAgICAgcGFydHMuc3BsaWNlKGksIDEpO1xuICAgIH0gZWxzZSBpZiAobGFzdCA9PT0gJy4uJykge1xuICAgICAgcGFydHMuc3BsaWNlKGksIDEpO1xuICAgICAgdXArKztcbiAgICB9IGVsc2UgaWYgKHVwKSB7XG4gICAgICBwYXJ0cy5zcGxpY2UoaSwgMSk7XG4gICAgICB1cC0tO1xuICAgIH1cbiAgfVxuXG4gIC8vIGlmIHRoZSBwYXRoIGlzIGFsbG93ZWQgdG8gZ28gYWJvdmUgdGhlIHJvb3QsIHJlc3RvcmUgbGVhZGluZyAuLnNcbiAgaWYgKGFsbG93QWJvdmVSb290KSB7XG4gICAgZm9yICg7IHVwLS07IHVwKSB7XG4gICAgICBwYXJ0cy51bnNoaWZ0KCcuLicpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBwYXJ0cztcbn1cblxuLy8gU3BsaXQgYSBmaWxlbmFtZSBpbnRvIFtyb290LCBkaXIsIGJhc2VuYW1lLCBleHRdLCB1bml4IHZlcnNpb25cbi8vICdyb290JyBpcyBqdXN0IGEgc2xhc2gsIG9yIG5vdGhpbmcuXG52YXIgc3BsaXRQYXRoUmUgPVxuICAgIC9eKFxcLz98KShbXFxzXFxTXSo/KSgoPzpcXC57MSwyfXxbXlxcL10rP3wpKFxcLlteLlxcL10qfCkpKD86W1xcL10qKSQvO1xudmFyIHNwbGl0UGF0aCA9IGZ1bmN0aW9uKGZpbGVuYW1lKSB7XG4gIHJldHVybiBzcGxpdFBhdGhSZS5leGVjKGZpbGVuYW1lKS5zbGljZSgxKTtcbn07XG5cbi8vIHBhdGgucmVzb2x2ZShbZnJvbSAuLi5dLCB0bylcbi8vIHBvc2l4IHZlcnNpb25cbmV4cG9ydHMucmVzb2x2ZSA9IGZ1bmN0aW9uKCkge1xuICB2YXIgcmVzb2x2ZWRQYXRoID0gJycsXG4gICAgICByZXNvbHZlZEFic29sdXRlID0gZmFsc2U7XG5cbiAgZm9yICh2YXIgaSA9IGFyZ3VtZW50cy5sZW5ndGggLSAxOyBpID49IC0xICYmICFyZXNvbHZlZEFic29sdXRlOyBpLS0pIHtcbiAgICB2YXIgcGF0aCA9IChpID49IDApID8gYXJndW1lbnRzW2ldIDogcHJvY2Vzcy5jd2QoKTtcblxuICAgIC8vIFNraXAgZW1wdHkgYW5kIGludmFsaWQgZW50cmllc1xuICAgIGlmICh0eXBlb2YgcGF0aCAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0FyZ3VtZW50cyB0byBwYXRoLnJlc29sdmUgbXVzdCBiZSBzdHJpbmdzJyk7XG4gICAgfSBlbHNlIGlmICghcGF0aCkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgcmVzb2x2ZWRQYXRoID0gcGF0aCArICcvJyArIHJlc29sdmVkUGF0aDtcbiAgICByZXNvbHZlZEFic29sdXRlID0gcGF0aC5jaGFyQXQoMCkgPT09ICcvJztcbiAgfVxuXG4gIC8vIEF0IHRoaXMgcG9pbnQgdGhlIHBhdGggc2hvdWxkIGJlIHJlc29sdmVkIHRvIGEgZnVsbCBhYnNvbHV0ZSBwYXRoLCBidXRcbiAgLy8gaGFuZGxlIHJlbGF0aXZlIHBhdGhzIHRvIGJlIHNhZmUgKG1pZ2h0IGhhcHBlbiB3aGVuIHByb2Nlc3MuY3dkKCkgZmFpbHMpXG5cbiAgLy8gTm9ybWFsaXplIHRoZSBwYXRoXG4gIHJlc29sdmVkUGF0aCA9IG5vcm1hbGl6ZUFycmF5KGZpbHRlcihyZXNvbHZlZFBhdGguc3BsaXQoJy8nKSwgZnVuY3Rpb24ocCkge1xuICAgIHJldHVybiAhIXA7XG4gIH0pLCAhcmVzb2x2ZWRBYnNvbHV0ZSkuam9pbignLycpO1xuXG4gIHJldHVybiAoKHJlc29sdmVkQWJzb2x1dGUgPyAnLycgOiAnJykgKyByZXNvbHZlZFBhdGgpIHx8ICcuJztcbn07XG5cbi8vIHBhdGgubm9ybWFsaXplKHBhdGgpXG4vLyBwb3NpeCB2ZXJzaW9uXG5leHBvcnRzLm5vcm1hbGl6ZSA9IGZ1bmN0aW9uKHBhdGgpIHtcbiAgdmFyIGlzQWJzb2x1dGUgPSBleHBvcnRzLmlzQWJzb2x1dGUocGF0aCksXG4gICAgICB0cmFpbGluZ1NsYXNoID0gc3Vic3RyKHBhdGgsIC0xKSA9PT0gJy8nO1xuXG4gIC8vIE5vcm1hbGl6ZSB0aGUgcGF0aFxuICBwYXRoID0gbm9ybWFsaXplQXJyYXkoZmlsdGVyKHBhdGguc3BsaXQoJy8nKSwgZnVuY3Rpb24ocCkge1xuICAgIHJldHVybiAhIXA7XG4gIH0pLCAhaXNBYnNvbHV0ZSkuam9pbignLycpO1xuXG4gIGlmICghcGF0aCAmJiAhaXNBYnNvbHV0ZSkge1xuICAgIHBhdGggPSAnLic7XG4gIH1cbiAgaWYgKHBhdGggJiYgdHJhaWxpbmdTbGFzaCkge1xuICAgIHBhdGggKz0gJy8nO1xuICB9XG5cbiAgcmV0dXJuIChpc0Fic29sdXRlID8gJy8nIDogJycpICsgcGF0aDtcbn07XG5cbi8vIHBvc2l4IHZlcnNpb25cbmV4cG9ydHMuaXNBYnNvbHV0ZSA9IGZ1bmN0aW9uKHBhdGgpIHtcbiAgcmV0dXJuIHBhdGguY2hhckF0KDApID09PSAnLyc7XG59O1xuXG4vLyBwb3NpeCB2ZXJzaW9uXG5leHBvcnRzLmpvaW4gPSBmdW5jdGlvbigpIHtcbiAgdmFyIHBhdGhzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAwKTtcbiAgcmV0dXJuIGV4cG9ydHMubm9ybWFsaXplKGZpbHRlcihwYXRocywgZnVuY3Rpb24ocCwgaW5kZXgpIHtcbiAgICBpZiAodHlwZW9mIHAgIT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdBcmd1bWVudHMgdG8gcGF0aC5qb2luIG11c3QgYmUgc3RyaW5ncycpO1xuICAgIH1cbiAgICByZXR1cm4gcDtcbiAgfSkuam9pbignLycpKTtcbn07XG5cblxuLy8gcGF0aC5yZWxhdGl2ZShmcm9tLCB0bylcbi8vIHBvc2l4IHZlcnNpb25cbmV4cG9ydHMucmVsYXRpdmUgPSBmdW5jdGlvbihmcm9tLCB0bykge1xuICBmcm9tID0gZXhwb3J0cy5yZXNvbHZlKGZyb20pLnN1YnN0cigxKTtcbiAgdG8gPSBleHBvcnRzLnJlc29sdmUodG8pLnN1YnN0cigxKTtcblxuICBmdW5jdGlvbiB0cmltKGFycikge1xuICAgIHZhciBzdGFydCA9IDA7XG4gICAgZm9yICg7IHN0YXJ0IDwgYXJyLmxlbmd0aDsgc3RhcnQrKykge1xuICAgICAgaWYgKGFycltzdGFydF0gIT09ICcnKSBicmVhaztcbiAgICB9XG5cbiAgICB2YXIgZW5kID0gYXJyLmxlbmd0aCAtIDE7XG4gICAgZm9yICg7IGVuZCA+PSAwOyBlbmQtLSkge1xuICAgICAgaWYgKGFycltlbmRdICE9PSAnJykgYnJlYWs7XG4gICAgfVxuXG4gICAgaWYgKHN0YXJ0ID4gZW5kKSByZXR1cm4gW107XG4gICAgcmV0dXJuIGFyci5zbGljZShzdGFydCwgZW5kIC0gc3RhcnQgKyAxKTtcbiAgfVxuXG4gIHZhciBmcm9tUGFydHMgPSB0cmltKGZyb20uc3BsaXQoJy8nKSk7XG4gIHZhciB0b1BhcnRzID0gdHJpbSh0by5zcGxpdCgnLycpKTtcblxuICB2YXIgbGVuZ3RoID0gTWF0aC5taW4oZnJvbVBhcnRzLmxlbmd0aCwgdG9QYXJ0cy5sZW5ndGgpO1xuICB2YXIgc2FtZVBhcnRzTGVuZ3RoID0gbGVuZ3RoO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKGZyb21QYXJ0c1tpXSAhPT0gdG9QYXJ0c1tpXSkge1xuICAgICAgc2FtZVBhcnRzTGVuZ3RoID0gaTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHZhciBvdXRwdXRQYXJ0cyA9IFtdO1xuICBmb3IgKHZhciBpID0gc2FtZVBhcnRzTGVuZ3RoOyBpIDwgZnJvbVBhcnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgb3V0cHV0UGFydHMucHVzaCgnLi4nKTtcbiAgfVxuXG4gIG91dHB1dFBhcnRzID0gb3V0cHV0UGFydHMuY29uY2F0KHRvUGFydHMuc2xpY2Uoc2FtZVBhcnRzTGVuZ3RoKSk7XG5cbiAgcmV0dXJuIG91dHB1dFBhcnRzLmpvaW4oJy8nKTtcbn07XG5cbmV4cG9ydHMuc2VwID0gJy8nO1xuZXhwb3J0cy5kZWxpbWl0ZXIgPSAnOic7XG5cbmV4cG9ydHMuZGlybmFtZSA9IGZ1bmN0aW9uKHBhdGgpIHtcbiAgdmFyIHJlc3VsdCA9IHNwbGl0UGF0aChwYXRoKSxcbiAgICAgIHJvb3QgPSByZXN1bHRbMF0sXG4gICAgICBkaXIgPSByZXN1bHRbMV07XG5cbiAgaWYgKCFyb290ICYmICFkaXIpIHtcbiAgICAvLyBObyBkaXJuYW1lIHdoYXRzb2V2ZXJcbiAgICByZXR1cm4gJy4nO1xuICB9XG5cbiAgaWYgKGRpcikge1xuICAgIC8vIEl0IGhhcyBhIGRpcm5hbWUsIHN0cmlwIHRyYWlsaW5nIHNsYXNoXG4gICAgZGlyID0gZGlyLnN1YnN0cigwLCBkaXIubGVuZ3RoIC0gMSk7XG4gIH1cblxuICByZXR1cm4gcm9vdCArIGRpcjtcbn07XG5cblxuZXhwb3J0cy5iYXNlbmFtZSA9IGZ1bmN0aW9uKHBhdGgsIGV4dCkge1xuICB2YXIgZiA9IHNwbGl0UGF0aChwYXRoKVsyXTtcbiAgLy8gVE9ETzogbWFrZSB0aGlzIGNvbXBhcmlzb24gY2FzZS1pbnNlbnNpdGl2ZSBvbiB3aW5kb3dzP1xuICBpZiAoZXh0ICYmIGYuc3Vic3RyKC0xICogZXh0Lmxlbmd0aCkgPT09IGV4dCkge1xuICAgIGYgPSBmLnN1YnN0cigwLCBmLmxlbmd0aCAtIGV4dC5sZW5ndGgpO1xuICB9XG4gIHJldHVybiBmO1xufTtcblxuXG5leHBvcnRzLmV4dG5hbWUgPSBmdW5jdGlvbihwYXRoKSB7XG4gIHJldHVybiBzcGxpdFBhdGgocGF0aClbM107XG59O1xuXG5mdW5jdGlvbiBmaWx0ZXIgKHhzLCBmKSB7XG4gICAgaWYgKHhzLmZpbHRlcikgcmV0dXJuIHhzLmZpbHRlcihmKTtcbiAgICB2YXIgcmVzID0gW107XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB4cy5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAoZih4c1tpXSwgaSwgeHMpKSByZXMucHVzaCh4c1tpXSk7XG4gICAgfVxuICAgIHJldHVybiByZXM7XG59XG5cbi8vIFN0cmluZy5wcm90b3R5cGUuc3Vic3RyIC0gbmVnYXRpdmUgaW5kZXggZG9uJ3Qgd29yayBpbiBJRThcbnZhciBzdWJzdHIgPSAnYWInLnN1YnN0cigtMSkgPT09ICdiJ1xuICAgID8gZnVuY3Rpb24gKHN0ciwgc3RhcnQsIGxlbikgeyByZXR1cm4gc3RyLnN1YnN0cihzdGFydCwgbGVuKSB9XG4gICAgOiBmdW5jdGlvbiAoc3RyLCBzdGFydCwgbGVuKSB7XG4gICAgICAgIGlmIChzdGFydCA8IDApIHN0YXJ0ID0gc3RyLmxlbmd0aCArIHN0YXJ0O1xuICAgICAgICByZXR1cm4gc3RyLnN1YnN0cihzdGFydCwgbGVuKTtcbiAgICB9XG47XG4iLCJ2YXIgY3JlYXRlSG1hYyA9IHJlcXVpcmUoJ2NyZWF0ZS1obWFjJylcbnZhciBjaGVja1BhcmFtZXRlcnMgPSByZXF1aXJlKCcuL3ByZWNvbmRpdGlvbicpXG5cbmV4cG9ydHMucGJrZGYyID0gZnVuY3Rpb24gKHBhc3N3b3JkLCBzYWx0LCBpdGVyYXRpb25zLCBrZXlsZW4sIGRpZ2VzdCwgY2FsbGJhY2spIHtcbiAgaWYgKHR5cGVvZiBkaWdlc3QgPT09ICdmdW5jdGlvbicpIHtcbiAgICBjYWxsYmFjayA9IGRpZ2VzdFxuICAgIGRpZ2VzdCA9IHVuZGVmaW5lZFxuICB9XG5cbiAgY2hlY2tQYXJhbWV0ZXJzKGl0ZXJhdGlvbnMsIGtleWxlbilcbiAgaWYgKHR5cGVvZiBjYWxsYmFjayAhPT0gJ2Z1bmN0aW9uJykgdGhyb3cgbmV3IEVycm9yKCdObyBjYWxsYmFjayBwcm92aWRlZCB0byBwYmtkZjInKVxuXG4gIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgIGNhbGxiYWNrKG51bGwsIGV4cG9ydHMucGJrZGYyU3luYyhwYXNzd29yZCwgc2FsdCwgaXRlcmF0aW9ucywga2V5bGVuLCBkaWdlc3QpKVxuICB9KVxufVxuXG52YXIgZGVmYXVsdEVuY29kaW5nXG5pZiAocHJvY2Vzcy5icm93c2VyKSB7XG4gIGRlZmF1bHRFbmNvZGluZyA9ICd1dGYtOCdcbn0gZWxzZSB7XG4gIHZhciBwVmVyc2lvbk1ham9yID0gcGFyc2VJbnQocHJvY2Vzcy52ZXJzaW9uLnNwbGl0KCcuJylbMF0uc2xpY2UoMSksIDEwKVxuXG4gIGRlZmF1bHRFbmNvZGluZyA9IHBWZXJzaW9uTWFqb3IgPj0gNiA/ICd1dGYtOCcgOiAnYmluYXJ5J1xufVxuXG5leHBvcnRzLnBia2RmMlN5bmMgPSBmdW5jdGlvbiAocGFzc3dvcmQsIHNhbHQsIGl0ZXJhdGlvbnMsIGtleWxlbiwgZGlnZXN0KSB7XG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKHBhc3N3b3JkKSkgcGFzc3dvcmQgPSBuZXcgQnVmZmVyKHBhc3N3b3JkLCBkZWZhdWx0RW5jb2RpbmcpXG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKHNhbHQpKSBzYWx0ID0gbmV3IEJ1ZmZlcihzYWx0LCBkZWZhdWx0RW5jb2RpbmcpXG5cbiAgY2hlY2tQYXJhbWV0ZXJzKGl0ZXJhdGlvbnMsIGtleWxlbilcblxuICBkaWdlc3QgPSBkaWdlc3QgfHwgJ3NoYTEnXG5cbiAgdmFyIGhMZW5cbiAgdmFyIGwgPSAxXG4gIHZhciBESyA9IG5ldyBCdWZmZXIoa2V5bGVuKVxuICB2YXIgYmxvY2sxID0gbmV3IEJ1ZmZlcihzYWx0Lmxlbmd0aCArIDQpXG4gIHNhbHQuY29weShibG9jazEsIDAsIDAsIHNhbHQubGVuZ3RoKVxuXG4gIHZhciByXG4gIHZhciBUXG5cbiAgZm9yICh2YXIgaSA9IDE7IGkgPD0gbDsgaSsrKSB7XG4gICAgYmxvY2sxLndyaXRlVUludDMyQkUoaSwgc2FsdC5sZW5ndGgpXG4gICAgdmFyIFUgPSBjcmVhdGVIbWFjKGRpZ2VzdCwgcGFzc3dvcmQpLnVwZGF0ZShibG9jazEpLmRpZ2VzdCgpXG5cbiAgICBpZiAoIWhMZW4pIHtcbiAgICAgIGhMZW4gPSBVLmxlbmd0aFxuICAgICAgVCA9IG5ldyBCdWZmZXIoaExlbilcbiAgICAgIGwgPSBNYXRoLmNlaWwoa2V5bGVuIC8gaExlbilcbiAgICAgIHIgPSBrZXlsZW4gLSAobCAtIDEpICogaExlblxuICAgIH1cblxuICAgIFUuY29weShULCAwLCAwLCBoTGVuKVxuXG4gICAgZm9yICh2YXIgaiA9IDE7IGogPCBpdGVyYXRpb25zOyBqKyspIHtcbiAgICAgIFUgPSBjcmVhdGVIbWFjKGRpZ2VzdCwgcGFzc3dvcmQpLnVwZGF0ZShVKS5kaWdlc3QoKVxuICAgICAgZm9yICh2YXIgayA9IDA7IGsgPCBoTGVuOyBrKyspIFRba10gXj0gVVtrXVxuICAgIH1cblxuICAgIHZhciBkZXN0UG9zID0gKGkgLSAxKSAqIGhMZW5cbiAgICB2YXIgbGVuID0gKGkgPT09IGwgPyByIDogaExlbilcbiAgICBULmNvcHkoREssIGRlc3RQb3MsIDAsIGxlbilcbiAgfVxuXG4gIHJldHVybiBES1xufVxuIiwidmFyIE1BWF9BTExPQyA9IE1hdGgucG93KDIsIDMwKSAtIDEgLy8gZGVmYXVsdCBpbiBpb2pzXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdGVyYXRpb25zLCBrZXlsZW4pIHtcbiAgaWYgKHR5cGVvZiBpdGVyYXRpb25zICE9PSAnbnVtYmVyJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0l0ZXJhdGlvbnMgbm90IGEgbnVtYmVyJylcbiAgfVxuXG4gIGlmIChpdGVyYXRpb25zIDwgMCkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0JhZCBpdGVyYXRpb25zJylcbiAgfVxuXG4gIGlmICh0eXBlb2Yga2V5bGVuICE9PSAnbnVtYmVyJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0tleSBsZW5ndGggbm90IGEgbnVtYmVyJylcbiAgfVxuXG4gIGlmIChrZXlsZW4gPCAwIHx8IGtleWxlbiA+IE1BWF9BTExPQyB8fCBrZXlsZW4gIT09IGtleWxlbikgeyAvKiBlc2xpbnQgbm8tc2VsZi1jb21wYXJlOiAwICovXG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQmFkIGtleSBsZW5ndGgnKVxuICB9XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBpbnRlcmxhY2VVdGlscyA9IHJlcXVpcmUoJy4vaW50ZXJsYWNlJyk7XG5cbnZhciBwaXhlbEJwcE1hcCA9IHtcbiAgMTogeyAvLyBMXG4gICAgMDogMCxcbiAgICAxOiAwLFxuICAgIDI6IDAsXG4gICAgMzogMHhmZlxuICB9LFxuICAyOiB7IC8vIExBXG4gICAgMDogMCxcbiAgICAxOiAwLFxuICAgIDI6IDAsXG4gICAgMzogMVxuICB9LFxuICAzOiB7IC8vIFJHQlxuICAgIDA6IDAsXG4gICAgMTogMSxcbiAgICAyOiAyLFxuICAgIDM6IDB4ZmZcbiAgfSxcbiAgNDogeyAvLyBSR0JBXG4gICAgMDogMCxcbiAgICAxOiAxLFxuICAgIDI6IDIsXG4gICAgMzogM1xuICB9XG59O1xuXG5mdW5jdGlvbiBiaXRSZXRyaWV2ZXIoZGF0YSwgZGVwdGgpIHtcblxuICB2YXIgbGVmdE92ZXIgPSBbXTtcbiAgdmFyIGkgPSAwO1xuXG4gIGZ1bmN0aW9uIHNwbGl0KCkge1xuICAgIGlmIChpID09PSBkYXRhLmxlbmd0aCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdSYW4gb3V0IG9mIGRhdGEnKTtcbiAgICB9XG4gICAgdmFyIGJ5dGUgPSBkYXRhW2ldO1xuICAgIGkrKztcbiAgICB2YXIgYnl0ZTgsIGJ5dGU3LCBieXRlNiwgYnl0ZTUsIGJ5dGU0LCBieXRlMywgYnl0ZTIsIGJ5dGUxO1xuICAgIHN3aXRjaCAoZGVwdGgpIHtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcigndW5yZWNvZ25pc2VkIGRlcHRoJyk7XG4gICAgICBjYXNlIDE2OlxuICAgICAgICBieXRlMiA9IGRhdGFbaV07XG4gICAgICAgIGkrKztcbiAgICAgICAgbGVmdE92ZXIucHVzaCgoKGJ5dGUgPDwgOCkgKyBieXRlMikpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgNDpcbiAgICAgICAgYnl0ZTIgPSBieXRlICYgMHgwZjtcbiAgICAgICAgYnl0ZTEgPSBieXRlID4+IDQ7XG4gICAgICAgIGxlZnRPdmVyLnB1c2goYnl0ZTEsIGJ5dGUyKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI6XG4gICAgICAgIGJ5dGU0ID0gYnl0ZSAmIDM7XG4gICAgICAgIGJ5dGUzID0gYnl0ZSA+PiAyICYgMztcbiAgICAgICAgYnl0ZTIgPSBieXRlID4+IDQgJiAzO1xuICAgICAgICBieXRlMSA9IGJ5dGUgPj4gNiAmIDM7XG4gICAgICAgIGxlZnRPdmVyLnB1c2goYnl0ZTEsIGJ5dGUyLCBieXRlMywgYnl0ZTQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTpcbiAgICAgICAgYnl0ZTggPSBieXRlICYgMTtcbiAgICAgICAgYnl0ZTcgPSBieXRlID4+IDEgJiAxO1xuICAgICAgICBieXRlNiA9IGJ5dGUgPj4gMiAmIDE7XG4gICAgICAgIGJ5dGU1ID0gYnl0ZSA+PiAzICYgMTtcbiAgICAgICAgYnl0ZTQgPSBieXRlID4+IDQgJiAxO1xuICAgICAgICBieXRlMyA9IGJ5dGUgPj4gNSAmIDE7XG4gICAgICAgIGJ5dGUyID0gYnl0ZSA+PiA2ICYgMTtcbiAgICAgICAgYnl0ZTEgPSBieXRlID4+IDcgJiAxO1xuICAgICAgICBsZWZ0T3Zlci5wdXNoKGJ5dGUxLCBieXRlMiwgYnl0ZTMsIGJ5dGU0LCBieXRlNSwgYnl0ZTYsIGJ5dGU3LCBieXRlOCk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgZ2V0OiBmdW5jdGlvbihjb3VudCkge1xuICAgICAgd2hpbGUgKGxlZnRPdmVyLmxlbmd0aCA8IGNvdW50KSB7XG4gICAgICAgIHNwbGl0KCk7XG4gICAgICB9XG4gICAgICB2YXIgcmV0dXJuZXIgPSBsZWZ0T3Zlci5zbGljZSgwLCBjb3VudCk7XG4gICAgICBsZWZ0T3ZlciA9IGxlZnRPdmVyLnNsaWNlKGNvdW50KTtcbiAgICAgIHJldHVybiByZXR1cm5lcjtcbiAgICB9LFxuICAgIHJlc2V0QWZ0ZXJMaW5lOiBmdW5jdGlvbigpIHtcbiAgICAgIGxlZnRPdmVyLmxlbmd0aCA9IDA7XG4gICAgfSxcbiAgICBlbmQ6IGZ1bmN0aW9uKCkge1xuICAgICAgaWYgKGkgIT09IGRhdGEubGVuZ3RoKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignZXh0cmEgZGF0YSBmb3VuZCcpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cblxuZnVuY3Rpb24gbWFwSW1hZ2U4Qml0KGltYWdlLCBweERhdGEsIGdldFB4UG9zLCBicHAsIGRhdGEsIHJhd1BvcykgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG1heC1wYXJhbXNcbiAgdmFyIGltYWdlV2lkdGggPSBpbWFnZS53aWR0aDtcbiAgdmFyIGltYWdlSGVpZ2h0ID0gaW1hZ2UuaGVpZ2h0O1xuICB2YXIgaW1hZ2VQYXNzID0gaW1hZ2UuaW5kZXg7XG4gIGZvciAodmFyIHkgPSAwOyB5IDwgaW1hZ2VIZWlnaHQ7IHkrKykge1xuICAgIGZvciAodmFyIHggPSAwOyB4IDwgaW1hZ2VXaWR0aDsgeCsrKSB7XG4gICAgICB2YXIgcHhQb3MgPSBnZXRQeFBvcyh4LCB5LCBpbWFnZVBhc3MpO1xuXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDQ7IGkrKykge1xuICAgICAgICB2YXIgaWR4ID0gcGl4ZWxCcHBNYXBbYnBwXVtpXTtcbiAgICAgICAgaWYgKGlkeCA9PT0gMHhmZikge1xuICAgICAgICAgIHB4RGF0YVtweFBvcyArIGldID0gMHhmZjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2YXIgZGF0YVBvcyA9IGlkeCArIHJhd1BvcztcbiAgICAgICAgICBpZiAoZGF0YVBvcyA9PT0gZGF0YS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignUmFuIG91dCBvZiBkYXRhJyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHB4RGF0YVtweFBvcyArIGldID0gZGF0YVtkYXRhUG9zXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmF3UG9zICs9IGJwcDsgLy9lc2xpbnQtZGlzYWJsZS1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gICAgfVxuICB9XG4gIHJldHVybiByYXdQb3M7XG59XG5cbmZ1bmN0aW9uIG1hcEltYWdlQ3VzdG9tQml0KGltYWdlLCBweERhdGEsIGdldFB4UG9zLCBicHAsIGJpdHMsIG1heEJpdCkgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG1heC1wYXJhbXNcbiAgdmFyIGltYWdlV2lkdGggPSBpbWFnZS53aWR0aDtcbiAgdmFyIGltYWdlSGVpZ2h0ID0gaW1hZ2UuaGVpZ2h0O1xuICB2YXIgaW1hZ2VQYXNzID0gaW1hZ2UuaW5kZXg7XG4gIGZvciAodmFyIHkgPSAwOyB5IDwgaW1hZ2VIZWlnaHQ7IHkrKykge1xuICAgIGZvciAodmFyIHggPSAwOyB4IDwgaW1hZ2VXaWR0aDsgeCsrKSB7XG4gICAgICB2YXIgcGl4ZWxEYXRhID0gYml0cy5nZXQoYnBwKTtcbiAgICAgIHZhciBweFBvcyA9IGdldFB4UG9zKHgsIHksIGltYWdlUGFzcyk7XG5cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNDsgaSsrKSB7XG4gICAgICAgIHZhciBpZHggPSBwaXhlbEJwcE1hcFticHBdW2ldO1xuICAgICAgICBweERhdGFbcHhQb3MgKyBpXSA9IGlkeCAhPT0gMHhmZiA/IHBpeGVsRGF0YVtpZHhdIDogbWF4Qml0O1xuICAgICAgfVxuICAgIH1cbiAgICBiaXRzLnJlc2V0QWZ0ZXJMaW5lKCk7XG4gIH1cbn1cblxuZXhwb3J0cy5kYXRhVG9CaXRNYXAgPSBmdW5jdGlvbihkYXRhLCBiaXRtYXBJbmZvKSB7XG5cbiAgdmFyIHdpZHRoID0gYml0bWFwSW5mby53aWR0aDtcbiAgdmFyIGhlaWdodCA9IGJpdG1hcEluZm8uaGVpZ2h0O1xuICB2YXIgZGVwdGggPSBiaXRtYXBJbmZvLmRlcHRoO1xuICB2YXIgYnBwID0gYml0bWFwSW5mby5icHA7XG4gIHZhciBpbnRlcmxhY2UgPSBiaXRtYXBJbmZvLmludGVybGFjZTtcblxuICBpZiAoZGVwdGggIT09IDgpIHtcbiAgICB2YXIgYml0cyA9IGJpdFJldHJpZXZlcihkYXRhLCBkZXB0aCk7XG4gIH1cbiAgdmFyIHB4RGF0YTtcbiAgaWYgKGRlcHRoIDw9IDgpIHtcbiAgICBweERhdGEgPSBuZXcgQnVmZmVyKHdpZHRoICogaGVpZ2h0ICogNCk7XG4gIH1cbiAgZWxzZSB7XG4gICAgcHhEYXRhID0gbmV3IFVpbnQxNkFycmF5KHdpZHRoICogaGVpZ2h0ICogNCk7XG4gIH1cbiAgdmFyIG1heEJpdCA9IE1hdGgucG93KDIsIGRlcHRoKSAtIDE7XG4gIHZhciByYXdQb3MgPSAwO1xuICB2YXIgaW1hZ2VzO1xuICB2YXIgZ2V0UHhQb3M7XG5cbiAgaWYgKGludGVybGFjZSkge1xuICAgIGltYWdlcyA9IGludGVybGFjZVV0aWxzLmdldEltYWdlUGFzc2VzKHdpZHRoLCBoZWlnaHQpO1xuICAgIGdldFB4UG9zID0gaW50ZXJsYWNlVXRpbHMuZ2V0SW50ZXJsYWNlSXRlcmF0b3Iod2lkdGgsIGhlaWdodCk7XG4gIH1cbiAgZWxzZSB7XG4gICAgdmFyIG5vbkludGVybGFjZWRQeFBvcyA9IDA7XG4gICAgZ2V0UHhQb3MgPSBmdW5jdGlvbigpIHtcbiAgICAgIHZhciByZXR1cm5lciA9IG5vbkludGVybGFjZWRQeFBvcztcbiAgICAgIG5vbkludGVybGFjZWRQeFBvcyArPSA0O1xuICAgICAgcmV0dXJuIHJldHVybmVyO1xuICAgIH07XG4gICAgaW1hZ2VzID0gW3sgd2lkdGg6IHdpZHRoLCBoZWlnaHQ6IGhlaWdodCB9XTtcbiAgfVxuXG4gIGZvciAodmFyIGltYWdlSW5kZXggPSAwOyBpbWFnZUluZGV4IDwgaW1hZ2VzLmxlbmd0aDsgaW1hZ2VJbmRleCsrKSB7XG4gICAgaWYgKGRlcHRoID09PSA4KSB7XG4gICAgICByYXdQb3MgPSBtYXBJbWFnZThCaXQoaW1hZ2VzW2ltYWdlSW5kZXhdLCBweERhdGEsIGdldFB4UG9zLCBicHAsIGRhdGEsIHJhd1Bvcyk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgbWFwSW1hZ2VDdXN0b21CaXQoaW1hZ2VzW2ltYWdlSW5kZXhdLCBweERhdGEsIGdldFB4UG9zLCBicHAsIGJpdHMsIG1heEJpdCk7XG4gICAgfVxuICB9XG4gIGlmIChkZXB0aCA9PT0gOCkge1xuICAgIGlmIChyYXdQb3MgIT09IGRhdGEubGVuZ3RoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2V4dHJhIGRhdGEgZm91bmQnKTtcbiAgICB9XG4gIH1cbiAgZWxzZSB7XG4gICAgYml0cy5lbmQoKTtcbiAgfVxuXG4gIHJldHVybiBweERhdGE7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgY29uc3RhbnRzID0gcmVxdWlyZSgnLi9jb25zdGFudHMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihkYXRhLCB3aWR0aCwgaGVpZ2h0LCBvcHRpb25zKSB7XG4gIHZhciBvdXRIYXNBbHBoYSA9IG9wdGlvbnMuY29sb3JUeXBlID09PSBjb25zdGFudHMuQ09MT1JUWVBFX0NPTE9SX0FMUEhBO1xuICBpZiAob3B0aW9ucy5pbnB1dEhhc0FscGhhICYmIG91dEhhc0FscGhhKSB7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cbiAgaWYgKCFvcHRpb25zLmlucHV0SGFzQWxwaGEgJiYgIW91dEhhc0FscGhhKSB7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICB2YXIgb3V0QnBwID0gb3V0SGFzQWxwaGEgPyA0IDogMztcbiAgdmFyIG91dERhdGEgPSBuZXcgQnVmZmVyKHdpZHRoICogaGVpZ2h0ICogb3V0QnBwKTtcbiAgdmFyIGluQnBwID0gb3B0aW9ucy5pbnB1dEhhc0FscGhhID8gNCA6IDM7XG4gIHZhciBpbkluZGV4ID0gMDtcbiAgdmFyIG91dEluZGV4ID0gMDtcblxuICB2YXIgYmdDb2xvciA9IG9wdGlvbnMuYmdDb2xvciB8fCB7fTtcbiAgaWYgKGJnQ29sb3IucmVkID09PSB1bmRlZmluZWQpIHtcbiAgICBiZ0NvbG9yLnJlZCA9IDI1NTtcbiAgfVxuICBpZiAoYmdDb2xvci5ncmVlbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgYmdDb2xvci5ncmVlbiA9IDI1NTtcbiAgfVxuICBpZiAoYmdDb2xvci5ibHVlID09PSB1bmRlZmluZWQpIHtcbiAgICBiZ0NvbG9yLmJsdWUgPSAyNTU7XG4gIH1cblxuICBmb3IgKHZhciB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKSB7XG4gICAgZm9yICh2YXIgeCA9IDA7IHggPCB3aWR0aDsgeCsrKSB7XG4gICAgICB2YXIgcmVkID0gZGF0YVtpbkluZGV4XTtcbiAgICAgIHZhciBncmVlbiA9IGRhdGFbaW5JbmRleCArIDFdO1xuICAgICAgdmFyIGJsdWUgPSBkYXRhW2luSW5kZXggKyAyXTtcblxuICAgICAgdmFyIGFscGhhO1xuICAgICAgaWYgKG9wdGlvbnMuaW5wdXRIYXNBbHBoYSkge1xuICAgICAgICBhbHBoYSA9IGRhdGFbaW5JbmRleCArIDNdO1xuICAgICAgICBpZiAoIW91dEhhc0FscGhhKSB7XG4gICAgICAgICAgYWxwaGEgLz0gMjU1O1xuICAgICAgICAgIHJlZCA9IE1hdGgubWluKE1hdGgubWF4KE1hdGgucm91bmQoKDEgLSBhbHBoYSkgKiBiZ0NvbG9yLnJlZCArIGFscGhhICogcmVkKSwgMCksIDI1NSk7XG4gICAgICAgICAgZ3JlZW4gPSBNYXRoLm1pbihNYXRoLm1heChNYXRoLnJvdW5kKCgxIC0gYWxwaGEpICogYmdDb2xvci5ncmVlbiArIGFscGhhICogZ3JlZW4pLCAwKSwgMjU1KTtcbiAgICAgICAgICBibHVlID0gTWF0aC5taW4oTWF0aC5tYXgoTWF0aC5yb3VuZCgoMSAtIGFscGhhKSAqIGJnQ29sb3IuYmx1ZSArIGFscGhhICogYmx1ZSksIDApLCAyNTUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgYWxwaGEgPSAyNTU7XG4gICAgICB9XG5cbiAgICAgIG91dERhdGFbb3V0SW5kZXhdID0gcmVkO1xuICAgICAgb3V0RGF0YVtvdXRJbmRleCArIDFdID0gZ3JlZW47XG4gICAgICBvdXREYXRhW291dEluZGV4ICsgMl0gPSBibHVlO1xuICAgICAgaWYgKG91dEhhc0FscGhhKSB7XG4gICAgICAgIG91dERhdGFbb3V0SW5kZXggKyAzXSA9IGFscGhhO1xuICAgICAgfVxuXG4gICAgICBpbkluZGV4ICs9IGluQnBwO1xuICAgICAgb3V0SW5kZXggKz0gb3V0QnBwO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBvdXREYXRhO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxuXG52YXIgdXRpbCA9IHJlcXVpcmUoJ3V0aWwnKTtcbnZhciBTdHJlYW0gPSByZXF1aXJlKCdzdHJlYW0nKTtcblxuXG52YXIgQ2h1bmtTdHJlYW0gPSBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKCkge1xuICBTdHJlYW0uY2FsbCh0aGlzKTtcblxuICB0aGlzLl9idWZmZXJzID0gW107XG4gIHRoaXMuX2J1ZmZlcmVkID0gMDtcblxuICB0aGlzLl9yZWFkcyA9IFtdO1xuICB0aGlzLl9wYXVzZWQgPSBmYWxzZTtcblxuICB0aGlzLl9lbmNvZGluZyA9ICd1dGY4JztcbiAgdGhpcy53cml0YWJsZSA9IHRydWU7XG59O1xudXRpbC5pbmhlcml0cyhDaHVua1N0cmVhbSwgU3RyZWFtKTtcblxuXG5DaHVua1N0cmVhbS5wcm90b3R5cGUucmVhZCA9IGZ1bmN0aW9uKGxlbmd0aCwgY2FsbGJhY2spIHtcblxuICB0aGlzLl9yZWFkcy5wdXNoKHtcbiAgICBsZW5ndGg6IE1hdGguYWJzKGxlbmd0aCksICAvLyBpZiBsZW5ndGggPCAwIHRoZW4gYXQgbW9zdCB0aGlzIGxlbmd0aFxuICAgIGFsbG93TGVzczogbGVuZ3RoIDwgMCxcbiAgICBmdW5jOiBjYWxsYmFja1xuICB9KTtcblxuICBwcm9jZXNzLm5leHRUaWNrKGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuX3Byb2Nlc3MoKTtcblxuICAgIC8vIGl0cyBwYXVzZWQgYW5kIHRoZXJlIGlzIG5vdCBlbm91Z2h0IGRhdGEgdGhlbiBhc2sgZm9yIG1vcmVcbiAgICBpZiAodGhpcy5fcGF1c2VkICYmIHRoaXMuX3JlYWRzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuX3BhdXNlZCA9IGZhbHNlO1xuXG4gICAgICB0aGlzLmVtaXQoJ2RyYWluJyk7XG4gICAgfVxuICB9LmJpbmQodGhpcykpO1xufTtcblxuQ2h1bmtTdHJlYW0ucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24oZGF0YSwgZW5jb2RpbmcpIHtcblxuICBpZiAoIXRoaXMud3JpdGFibGUpIHtcbiAgICB0aGlzLmVtaXQoJ2Vycm9yJywgbmV3IEVycm9yKCdTdHJlYW0gbm90IHdyaXRhYmxlJykpO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHZhciBkYXRhQnVmZmVyO1xuICBpZiAoQnVmZmVyLmlzQnVmZmVyKGRhdGEpKSB7XG4gICAgZGF0YUJ1ZmZlciA9IGRhdGE7XG4gIH1cbiAgZWxzZSB7XG4gICAgZGF0YUJ1ZmZlciA9IG5ldyBCdWZmZXIoZGF0YSwgZW5jb2RpbmcgfHwgdGhpcy5fZW5jb2RpbmcpO1xuICB9XG5cbiAgdGhpcy5fYnVmZmVycy5wdXNoKGRhdGFCdWZmZXIpO1xuICB0aGlzLl9idWZmZXJlZCArPSBkYXRhQnVmZmVyLmxlbmd0aDtcblxuICB0aGlzLl9wcm9jZXNzKCk7XG5cbiAgLy8gb2sgaWYgdGhlcmUgYXJlIG5vIG1vcmUgcmVhZCByZXF1ZXN0c1xuICBpZiAodGhpcy5fcmVhZHMgJiYgdGhpcy5fcmVhZHMubGVuZ3RoID09PSAwKSB7XG4gICAgdGhpcy5fcGF1c2VkID0gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiB0aGlzLndyaXRhYmxlICYmICF0aGlzLl9wYXVzZWQ7XG59O1xuXG5DaHVua1N0cmVhbS5wcm90b3R5cGUuZW5kID0gZnVuY3Rpb24oZGF0YSwgZW5jb2RpbmcpIHtcblxuICBpZiAoZGF0YSkge1xuICAgIHRoaXMud3JpdGUoZGF0YSwgZW5jb2RpbmcpO1xuICB9XG5cbiAgdGhpcy53cml0YWJsZSA9IGZhbHNlO1xuXG4gIC8vIGFscmVhZHkgZGVzdHJveWVkXG4gIGlmICghdGhpcy5fYnVmZmVycykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8vIGVucXVldWUgb3IgaGFuZGxlIGVuZFxuICBpZiAodGhpcy5fYnVmZmVycy5sZW5ndGggPT09IDApIHtcbiAgICB0aGlzLl9lbmQoKTtcbiAgfVxuICBlbHNlIHtcbiAgICB0aGlzLl9idWZmZXJzLnB1c2gobnVsbCk7XG4gICAgdGhpcy5fcHJvY2VzcygpO1xuICB9XG59O1xuXG5DaHVua1N0cmVhbS5wcm90b3R5cGUuZGVzdHJveVNvb24gPSBDaHVua1N0cmVhbS5wcm90b3R5cGUuZW5kO1xuXG5DaHVua1N0cmVhbS5wcm90b3R5cGUuX2VuZCA9IGZ1bmN0aW9uKCkge1xuXG4gIGlmICh0aGlzLl9yZWFkcy5sZW5ndGggPiAwKSB7XG4gICAgdGhpcy5lbWl0KCdlcnJvcicsXG4gICAgICBuZXcgRXJyb3IoJ1RoZXJlIGFyZSBzb21lIHJlYWQgcmVxdWVzdHMgd2FpdGluZyBvbiBmaW5pc2hlZCBzdHJlYW0nKVxuICAgICk7XG4gIH1cblxuICB0aGlzLmRlc3Ryb3koKTtcbn07XG5cbkNodW5rU3RyZWFtLnByb3RvdHlwZS5kZXN0cm95ID0gZnVuY3Rpb24oKSB7XG5cbiAgaWYgKCF0aGlzLl9idWZmZXJzKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdGhpcy53cml0YWJsZSA9IGZhbHNlO1xuICB0aGlzLl9yZWFkcyA9IG51bGw7XG4gIHRoaXMuX2J1ZmZlcnMgPSBudWxsO1xuXG4gIHRoaXMuZW1pdCgnY2xvc2UnKTtcbn07XG5cbkNodW5rU3RyZWFtLnByb3RvdHlwZS5fcHJvY2Vzc1JlYWRBbGxvd2luZ0xlc3MgPSBmdW5jdGlvbihyZWFkKSB7XG4gIC8vIG9rIHRoZXJlIGlzIGFueSBkYXRhIHNvIHRoYXQgd2UgY2FuIHNhdGlzZnkgdGhpcyByZXF1ZXN0XG4gIHRoaXMuX3JlYWRzLnNoaWZ0KCk7IC8vID09IHJlYWRcblxuICAvLyBmaXJzdCB3ZSBuZWVkIHRvIHBlZWsgaW50byBmaXJzdCBidWZmZXJcbiAgdmFyIHNtYWxsZXJCdWYgPSB0aGlzLl9idWZmZXJzWzBdO1xuXG4gIC8vIG9rIHRoZXJlIGlzIG1vcmUgZGF0YSB0aGFuIHdlIG5lZWRcbiAgaWYgKHNtYWxsZXJCdWYubGVuZ3RoID4gcmVhZC5sZW5ndGgpIHtcblxuICAgIHRoaXMuX2J1ZmZlcmVkIC09IHJlYWQubGVuZ3RoO1xuICAgIHRoaXMuX2J1ZmZlcnNbMF0gPSBzbWFsbGVyQnVmLnNsaWNlKHJlYWQubGVuZ3RoKTtcblxuICAgIHJlYWQuZnVuYy5jYWxsKHRoaXMsIHNtYWxsZXJCdWYuc2xpY2UoMCwgcmVhZC5sZW5ndGgpKTtcblxuICB9XG4gIGVsc2Uge1xuICAgIC8vIG9rIHRoaXMgaXMgbGVzcyB0aGFuIG1heGltdW0gbGVuZ3RoIHNvIHVzZSBpdCBhbGxcbiAgICB0aGlzLl9idWZmZXJlZCAtPSBzbWFsbGVyQnVmLmxlbmd0aDtcbiAgICB0aGlzLl9idWZmZXJzLnNoaWZ0KCk7IC8vID09IHNtYWxsZXJCdWZcblxuICAgIHJlYWQuZnVuYy5jYWxsKHRoaXMsIHNtYWxsZXJCdWYpO1xuICB9XG59O1xuXG5DaHVua1N0cmVhbS5wcm90b3R5cGUuX3Byb2Nlc3NSZWFkID0gZnVuY3Rpb24ocmVhZCkge1xuICB0aGlzLl9yZWFkcy5zaGlmdCgpOyAvLyA9PSByZWFkXG5cbiAgdmFyIHBvcyA9IDA7XG4gIHZhciBjb3VudCA9IDA7XG4gIHZhciBkYXRhID0gbmV3IEJ1ZmZlcihyZWFkLmxlbmd0aCk7XG5cbiAgLy8gY3JlYXRlIGJ1ZmZlciBmb3IgYWxsIGRhdGFcbiAgd2hpbGUgKHBvcyA8IHJlYWQubGVuZ3RoKSB7XG5cbiAgICB2YXIgYnVmID0gdGhpcy5fYnVmZmVyc1tjb3VudCsrXTtcbiAgICB2YXIgbGVuID0gTWF0aC5taW4oYnVmLmxlbmd0aCwgcmVhZC5sZW5ndGggLSBwb3MpO1xuXG4gICAgYnVmLmNvcHkoZGF0YSwgcG9zLCAwLCBsZW4pO1xuICAgIHBvcyArPSBsZW47XG5cbiAgICAvLyBsYXN0IGJ1ZmZlciB3YXNuJ3QgdXNlZCBhbGwgc28ganVzdCBzbGljZSBpdCBhbmQgbGVhdmVcbiAgICBpZiAobGVuICE9PSBidWYubGVuZ3RoKSB7XG4gICAgICB0aGlzLl9idWZmZXJzWy0tY291bnRdID0gYnVmLnNsaWNlKGxlbik7XG4gICAgfVxuICB9XG5cbiAgLy8gcmVtb3ZlIGFsbCB1c2VkIGJ1ZmZlcnNcbiAgaWYgKGNvdW50ID4gMCkge1xuICAgIHRoaXMuX2J1ZmZlcnMuc3BsaWNlKDAsIGNvdW50KTtcbiAgfVxuXG4gIHRoaXMuX2J1ZmZlcmVkIC09IHJlYWQubGVuZ3RoO1xuXG4gIHJlYWQuZnVuYy5jYWxsKHRoaXMsIGRhdGEpO1xufTtcblxuQ2h1bmtTdHJlYW0ucHJvdG90eXBlLl9wcm9jZXNzID0gZnVuY3Rpb24oKSB7XG5cbiAgdHJ5IHtcbiAgICAvLyBhcyBsb25nIGFzIHRoZXJlIGlzIGFueSBkYXRhIGFuZCByZWFkIHJlcXVlc3RzXG4gICAgd2hpbGUgKHRoaXMuX2J1ZmZlcmVkID4gMCAmJiB0aGlzLl9yZWFkcyAmJiB0aGlzLl9yZWFkcy5sZW5ndGggPiAwKSB7XG5cbiAgICAgIHZhciByZWFkID0gdGhpcy5fcmVhZHNbMF07XG5cbiAgICAgIC8vIHJlYWQgYW55IGRhdGEgKGJ1dCBubyBtb3JlIHRoYW4gbGVuZ3RoKVxuICAgICAgaWYgKHJlYWQuYWxsb3dMZXNzKSB7XG4gICAgICAgIHRoaXMuX3Byb2Nlc3NSZWFkQWxsb3dpbmdMZXNzKHJlYWQpO1xuXG4gICAgICB9XG4gICAgICBlbHNlIGlmICh0aGlzLl9idWZmZXJlZCA+PSByZWFkLmxlbmd0aCkge1xuICAgICAgICAvLyBvayB3ZSBjYW4gbWVldCBzb21lIGV4cGVjdGF0aW9uc1xuXG4gICAgICAgIHRoaXMuX3Byb2Nlc3NSZWFkKHJlYWQpO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIC8vIG5vdCBlbm91Z2h0IGRhdGEgdG8gc2F0aXNmeSBmaXJzdCByZXF1ZXN0IGluIHF1ZXVlXG4gICAgICAgIC8vIHNvIHdlIG5lZWQgdG8gd2FpdCBmb3IgbW9yZVxuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5fYnVmZmVycyAmJiB0aGlzLl9idWZmZXJzLmxlbmd0aCA+IDAgJiYgdGhpcy5fYnVmZmVyc1swXSA9PT0gbnVsbCkge1xuICAgICAgdGhpcy5fZW5kKCk7XG4gICAgfVxuICB9XG4gIGNhdGNoIChleCkge1xuICAgIHRoaXMuZW1pdCgnZXJyb3InLCBleCk7XG4gIH1cbn07XG4iLCIndXNlIHN0cmljdCc7XG5cblxubW9kdWxlLmV4cG9ydHMgPSB7XG5cbiAgUE5HX1NJR05BVFVSRTogWzB4ODksIDB4NTAsIDB4NGUsIDB4NDcsIDB4MGQsIDB4MGEsIDB4MWEsIDB4MGFdLFxuXG4gIFRZUEVfSUhEUjogMHg0OTQ4NDQ1MixcbiAgVFlQRV9JRU5EOiAweDQ5NDU0ZTQ0LFxuICBUWVBFX0lEQVQ6IDB4NDk0NDQxNTQsXG4gIFRZUEVfUExURTogMHg1MDRjNTQ0NSxcbiAgVFlQRV90Uk5TOiAweDc0NTI0ZTUzLCAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGNhbWVsY2FzZVxuICBUWVBFX2dBTUE6IDB4Njc0MTRkNDEsIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgY2FtZWxjYXNlXG5cbiAgLy8gY29sb3ItdHlwZSBiaXRzXG4gIENPTE9SVFlQRV9HUkFZU0NBTEU6IDAsXG4gIENPTE9SVFlQRV9QQUxFVFRFOiAxLFxuICBDT0xPUlRZUEVfQ09MT1I6IDIsXG4gIENPTE9SVFlQRV9BTFBIQTogNCwgLy8gZS5nLiBncmF5c2NhbGUgYW5kIGFscGhhXG5cbiAgLy8gY29sb3ItdHlwZSBjb21iaW5hdGlvbnNcbiAgQ09MT1JUWVBFX1BBTEVUVEVfQ09MT1I6IDMsXG4gIENPTE9SVFlQRV9DT0xPUl9BTFBIQTogNixcblxuICBDT0xPUlRZUEVfVE9fQlBQX01BUDoge1xuICAgIDA6IDEsXG4gICAgMjogMyxcbiAgICAzOiAxLFxuICAgIDQ6IDIsXG4gICAgNjogNFxuICB9LFxuXG4gIEdBTU1BX0RJVklTSU9OOiAxMDAwMDBcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBjcmNUYWJsZSA9IFtdO1xuXG4oZnVuY3Rpb24oKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgMjU2OyBpKyspIHtcbiAgICB2YXIgY3VycmVudENyYyA9IGk7XG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCA4OyBqKyspIHtcbiAgICAgIGlmIChjdXJyZW50Q3JjICYgMSkge1xuICAgICAgICBjdXJyZW50Q3JjID0gMHhlZGI4ODMyMCBeIChjdXJyZW50Q3JjID4+PiAxKTtcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBjdXJyZW50Q3JjID0gY3VycmVudENyYyA+Pj4gMTtcbiAgICAgIH1cbiAgICB9XG4gICAgY3JjVGFibGVbaV0gPSBjdXJyZW50Q3JjO1xuICB9XG59KCkpO1xuXG52YXIgQ3JjQ2FsY3VsYXRvciA9IG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oKSB7XG4gIHRoaXMuX2NyYyA9IC0xO1xufTtcblxuQ3JjQ2FsY3VsYXRvci5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbihkYXRhKSB7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgaSsrKSB7XG4gICAgdGhpcy5fY3JjID0gY3JjVGFibGVbKHRoaXMuX2NyYyBeIGRhdGFbaV0pICYgMHhmZl0gXiAodGhpcy5fY3JjID4+PiA4KTtcbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn07XG5cbkNyY0NhbGN1bGF0b3IucHJvdG90eXBlLmNyYzMyID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiB0aGlzLl9jcmMgXiAtMTtcbn07XG5cblxuQ3JjQ2FsY3VsYXRvci5jcmMzMiA9IGZ1bmN0aW9uKGJ1Zikge1xuXG4gIHZhciBjcmMgPSAtMTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBidWYubGVuZ3RoOyBpKyspIHtcbiAgICBjcmMgPSBjcmNUYWJsZVsoY3JjIF4gYnVmW2ldKSAmIDB4ZmZdIF4gKGNyYyA+Pj4gOCk7XG4gIH1cbiAgcmV0dXJuIGNyYyBeIC0xO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHBhZXRoUHJlZGljdG9yID0gcmVxdWlyZSgnLi9wYWV0aC1wcmVkaWN0b3InKTtcblxuZnVuY3Rpb24gZmlsdGVyTm9uZShweERhdGEsIHB4UG9zLCBieXRlV2lkdGgsIHJhd0RhdGEsIHJhd1Bvcykge1xuICBweERhdGEuY29weShyYXdEYXRhLCByYXdQb3MsIHB4UG9zLCBweFBvcyArIGJ5dGVXaWR0aCk7XG59XG5cbmZ1bmN0aW9uIGZpbHRlclN1bU5vbmUocHhEYXRhLCBweFBvcywgYnl0ZVdpZHRoKSB7XG5cbiAgdmFyIHN1bSA9IDA7XG4gIHZhciBsZW5ndGggPSBweFBvcyArIGJ5dGVXaWR0aDtcblxuICBmb3IgKHZhciBpID0gcHhQb3M7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgIHN1bSArPSBNYXRoLmFicyhweERhdGFbaV0pO1xuICB9XG4gIHJldHVybiBzdW07XG59XG5cbmZ1bmN0aW9uIGZpbHRlclN1YihweERhdGEsIHB4UG9zLCBieXRlV2lkdGgsIHJhd0RhdGEsIHJhd1BvcywgYnBwKSB7XG5cbiAgZm9yICh2YXIgeCA9IDA7IHggPCBieXRlV2lkdGg7IHgrKykge1xuXG4gICAgdmFyIGxlZnQgPSB4ID49IGJwcCA/IHB4RGF0YVtweFBvcyArIHggLSBicHBdIDogMDtcbiAgICB2YXIgdmFsID0gcHhEYXRhW3B4UG9zICsgeF0gLSBsZWZ0O1xuXG4gICAgcmF3RGF0YVtyYXdQb3MgKyB4XSA9IHZhbDtcbiAgfVxufVxuXG5mdW5jdGlvbiBmaWx0ZXJTdW1TdWIocHhEYXRhLCBweFBvcywgYnl0ZVdpZHRoLCBicHApIHtcblxuICB2YXIgc3VtID0gMDtcbiAgZm9yICh2YXIgeCA9IDA7IHggPCBieXRlV2lkdGg7IHgrKykge1xuXG4gICAgdmFyIGxlZnQgPSB4ID49IGJwcCA/IHB4RGF0YVtweFBvcyArIHggLSBicHBdIDogMDtcbiAgICB2YXIgdmFsID0gcHhEYXRhW3B4UG9zICsgeF0gLSBsZWZ0O1xuXG4gICAgc3VtICs9IE1hdGguYWJzKHZhbCk7XG4gIH1cblxuICByZXR1cm4gc3VtO1xufVxuXG5mdW5jdGlvbiBmaWx0ZXJVcChweERhdGEsIHB4UG9zLCBieXRlV2lkdGgsIHJhd0RhdGEsIHJhd1Bvcykge1xuXG4gIGZvciAodmFyIHggPSAwOyB4IDwgYnl0ZVdpZHRoOyB4KyspIHtcblxuICAgIHZhciB1cCA9IHB4UG9zID4gMCA/IHB4RGF0YVtweFBvcyArIHggLSBieXRlV2lkdGhdIDogMDtcbiAgICB2YXIgdmFsID0gcHhEYXRhW3B4UG9zICsgeF0gLSB1cDtcblxuICAgIHJhd0RhdGFbcmF3UG9zICsgeF0gPSB2YWw7XG4gIH1cbn1cblxuZnVuY3Rpb24gZmlsdGVyU3VtVXAocHhEYXRhLCBweFBvcywgYnl0ZVdpZHRoKSB7XG5cbiAgdmFyIHN1bSA9IDA7XG4gIHZhciBsZW5ndGggPSBweFBvcyArIGJ5dGVXaWR0aDtcbiAgZm9yICh2YXIgeCA9IHB4UG9zOyB4IDwgbGVuZ3RoOyB4KyspIHtcblxuICAgIHZhciB1cCA9IHB4UG9zID4gMCA/IHB4RGF0YVt4IC0gYnl0ZVdpZHRoXSA6IDA7XG4gICAgdmFyIHZhbCA9IHB4RGF0YVt4XSAtIHVwO1xuXG4gICAgc3VtICs9IE1hdGguYWJzKHZhbCk7XG4gIH1cblxuICByZXR1cm4gc3VtO1xufVxuXG5mdW5jdGlvbiBmaWx0ZXJBdmcocHhEYXRhLCBweFBvcywgYnl0ZVdpZHRoLCByYXdEYXRhLCByYXdQb3MsIGJwcCkge1xuXG4gIGZvciAodmFyIHggPSAwOyB4IDwgYnl0ZVdpZHRoOyB4KyspIHtcblxuICAgIHZhciBsZWZ0ID0geCA+PSBicHAgPyBweERhdGFbcHhQb3MgKyB4IC0gYnBwXSA6IDA7XG4gICAgdmFyIHVwID0gcHhQb3MgPiAwID8gcHhEYXRhW3B4UG9zICsgeCAtIGJ5dGVXaWR0aF0gOiAwO1xuICAgIHZhciB2YWwgPSBweERhdGFbcHhQb3MgKyB4XSAtICgobGVmdCArIHVwKSA+PiAxKTtcblxuICAgIHJhd0RhdGFbcmF3UG9zICsgeF0gPSB2YWw7XG4gIH1cbn1cblxuZnVuY3Rpb24gZmlsdGVyU3VtQXZnKHB4RGF0YSwgcHhQb3MsIGJ5dGVXaWR0aCwgYnBwKSB7XG5cbiAgdmFyIHN1bSA9IDA7XG4gIGZvciAodmFyIHggPSAwOyB4IDwgYnl0ZVdpZHRoOyB4KyspIHtcblxuICAgIHZhciBsZWZ0ID0geCA+PSBicHAgPyBweERhdGFbcHhQb3MgKyB4IC0gYnBwXSA6IDA7XG4gICAgdmFyIHVwID0gcHhQb3MgPiAwID8gcHhEYXRhW3B4UG9zICsgeCAtIGJ5dGVXaWR0aF0gOiAwO1xuICAgIHZhciB2YWwgPSBweERhdGFbcHhQb3MgKyB4XSAtICgobGVmdCArIHVwKSA+PiAxKTtcblxuICAgIHN1bSArPSBNYXRoLmFicyh2YWwpO1xuICB9XG5cbiAgcmV0dXJuIHN1bTtcbn1cblxuZnVuY3Rpb24gZmlsdGVyUGFldGgocHhEYXRhLCBweFBvcywgYnl0ZVdpZHRoLCByYXdEYXRhLCByYXdQb3MsIGJwcCkge1xuXG4gIGZvciAodmFyIHggPSAwOyB4IDwgYnl0ZVdpZHRoOyB4KyspIHtcblxuICAgIHZhciBsZWZ0ID0geCA+PSBicHAgPyBweERhdGFbcHhQb3MgKyB4IC0gYnBwXSA6IDA7XG4gICAgdmFyIHVwID0gcHhQb3MgPiAwID8gcHhEYXRhW3B4UG9zICsgeCAtIGJ5dGVXaWR0aF0gOiAwO1xuICAgIHZhciB1cGxlZnQgPSBweFBvcyA+IDAgJiYgeCA+PSBicHAgPyBweERhdGFbcHhQb3MgKyB4IC0gKGJ5dGVXaWR0aCArIGJwcCldIDogMDtcbiAgICB2YXIgdmFsID0gcHhEYXRhW3B4UG9zICsgeF0gLSBwYWV0aFByZWRpY3RvcihsZWZ0LCB1cCwgdXBsZWZ0KTtcblxuICAgIHJhd0RhdGFbcmF3UG9zICsgeF0gPSB2YWw7XG4gIH1cbn1cblxuZnVuY3Rpb24gZmlsdGVyU3VtUGFldGgocHhEYXRhLCBweFBvcywgYnl0ZVdpZHRoLCBicHApIHtcbiAgdmFyIHN1bSA9IDA7XG4gIGZvciAodmFyIHggPSAwOyB4IDwgYnl0ZVdpZHRoOyB4KyspIHtcblxuICAgIHZhciBsZWZ0ID0geCA+PSBicHAgPyBweERhdGFbcHhQb3MgKyB4IC0gYnBwXSA6IDA7XG4gICAgdmFyIHVwID0gcHhQb3MgPiAwID8gcHhEYXRhW3B4UG9zICsgeCAtIGJ5dGVXaWR0aF0gOiAwO1xuICAgIHZhciB1cGxlZnQgPSBweFBvcyA+IDAgJiYgeCA+PSBicHAgPyBweERhdGFbcHhQb3MgKyB4IC0gKGJ5dGVXaWR0aCArIGJwcCldIDogMDtcbiAgICB2YXIgdmFsID0gcHhEYXRhW3B4UG9zICsgeF0gLSBwYWV0aFByZWRpY3RvcihsZWZ0LCB1cCwgdXBsZWZ0KTtcblxuICAgIHN1bSArPSBNYXRoLmFicyh2YWwpO1xuICB9XG5cbiAgcmV0dXJuIHN1bTtcbn1cblxudmFyIGZpbHRlcnMgPSB7XG4gIDA6IGZpbHRlck5vbmUsXG4gIDE6IGZpbHRlclN1YixcbiAgMjogZmlsdGVyVXAsXG4gIDM6IGZpbHRlckF2ZyxcbiAgNDogZmlsdGVyUGFldGhcbn07XG5cbnZhciBmaWx0ZXJTdW1zID0ge1xuICAwOiBmaWx0ZXJTdW1Ob25lLFxuICAxOiBmaWx0ZXJTdW1TdWIsXG4gIDI6IGZpbHRlclN1bVVwLFxuICAzOiBmaWx0ZXJTdW1BdmcsXG4gIDQ6IGZpbHRlclN1bVBhZXRoXG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKHB4RGF0YSwgd2lkdGgsIGhlaWdodCwgb3B0aW9ucywgYnBwKSB7XG5cbiAgdmFyIGZpbHRlclR5cGVzO1xuICBpZiAoISgnZmlsdGVyVHlwZScgaW4gb3B0aW9ucykgfHwgb3B0aW9ucy5maWx0ZXJUeXBlID09PSAtMSkge1xuICAgIGZpbHRlclR5cGVzID0gWzAsIDEsIDIsIDMsIDRdO1xuICB9XG4gIGVsc2UgaWYgKHR5cGVvZiBvcHRpb25zLmZpbHRlclR5cGUgPT09ICdudW1iZXInKSB7XG4gICAgZmlsdGVyVHlwZXMgPSBbb3B0aW9ucy5maWx0ZXJUeXBlXTtcbiAgfVxuICBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3VucmVjb2duaXNlZCBmaWx0ZXIgdHlwZXMnKTtcbiAgfVxuXG4gIHZhciBieXRlV2lkdGggPSB3aWR0aCAqIGJwcDtcbiAgdmFyIHJhd1BvcyA9IDA7XG4gIHZhciBweFBvcyA9IDA7XG4gIHZhciByYXdEYXRhID0gbmV3IEJ1ZmZlcigoYnl0ZVdpZHRoICsgMSkgKiBoZWlnaHQpO1xuICB2YXIgc2VsID0gZmlsdGVyVHlwZXNbMF07XG5cbiAgZm9yICh2YXIgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykge1xuXG4gICAgaWYgKGZpbHRlclR5cGVzLmxlbmd0aCA+IDEpIHtcbiAgICAgIC8vIGZpbmQgYmVzdCBmaWx0ZXIgZm9yIHRoaXMgbGluZSAod2l0aCBsb3dlc3Qgc3VtIG9mIHZhbHVlcylcbiAgICAgIHZhciBtaW4gPSBJbmZpbml0eTtcblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBmaWx0ZXJUeXBlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgc3VtID0gZmlsdGVyU3Vtc1tmaWx0ZXJUeXBlc1tpXV0ocHhEYXRhLCBweFBvcywgYnl0ZVdpZHRoLCBicHApO1xuICAgICAgICBpZiAoc3VtIDwgbWluKSB7XG4gICAgICAgICAgc2VsID0gZmlsdGVyVHlwZXNbaV07XG4gICAgICAgICAgbWluID0gc3VtO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmF3RGF0YVtyYXdQb3NdID0gc2VsO1xuICAgIHJhd1BvcysrO1xuICAgIGZpbHRlcnNbc2VsXShweERhdGEsIHB4UG9zLCBieXRlV2lkdGgsIHJhd0RhdGEsIHJhd1BvcywgYnBwKTtcbiAgICByYXdQb3MgKz0gYnl0ZVdpZHRoO1xuICAgIHB4UG9zICs9IGJ5dGVXaWR0aDtcbiAgfVxuICByZXR1cm4gcmF3RGF0YTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlsID0gcmVxdWlyZSgndXRpbCcpO1xudmFyIENodW5rU3RyZWFtID0gcmVxdWlyZSgnLi9jaHVua3N0cmVhbScpO1xudmFyIEZpbHRlciA9IHJlcXVpcmUoJy4vZmlsdGVyLXBhcnNlJyk7XG5cblxudmFyIEZpbHRlckFzeW5jID0gbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihiaXRtYXBJbmZvKSB7XG4gIENodW5rU3RyZWFtLmNhbGwodGhpcyk7XG5cbiAgdmFyIGJ1ZmZlcnMgPSBbXTtcbiAgdmFyIHRoYXQgPSB0aGlzO1xuICB0aGlzLl9maWx0ZXIgPSBuZXcgRmlsdGVyKGJpdG1hcEluZm8sIHtcbiAgICByZWFkOiB0aGlzLnJlYWQuYmluZCh0aGlzKSxcbiAgICB3cml0ZTogZnVuY3Rpb24oYnVmZmVyKSB7XG4gICAgICBidWZmZXJzLnB1c2goYnVmZmVyKTtcbiAgICB9LFxuICAgIGNvbXBsZXRlOiBmdW5jdGlvbigpIHtcbiAgICAgIHRoYXQuZW1pdCgnY29tcGxldGUnLCBCdWZmZXIuY29uY2F0KGJ1ZmZlcnMpKTtcbiAgICB9XG4gIH0pO1xuXG4gIHRoaXMuX2ZpbHRlci5zdGFydCgpO1xufTtcbnV0aWwuaW5oZXJpdHMoRmlsdGVyQXN5bmMsIENodW5rU3RyZWFtKTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIFN5bmNSZWFkZXIgPSByZXF1aXJlKCcuL3N5bmMtcmVhZGVyJyk7XG52YXIgRmlsdGVyID0gcmVxdWlyZSgnLi9maWx0ZXItcGFyc2UnKTtcblxuXG5leHBvcnRzLnByb2Nlc3MgPSBmdW5jdGlvbihpbkJ1ZmZlciwgYml0bWFwSW5mbykge1xuXG4gIHZhciBvdXRCdWZmZXJzID0gW107XG4gIHZhciByZWFkZXIgPSBuZXcgU3luY1JlYWRlcihpbkJ1ZmZlcik7XG4gIHZhciBmaWx0ZXIgPSBuZXcgRmlsdGVyKGJpdG1hcEluZm8sIHtcbiAgICByZWFkOiByZWFkZXIucmVhZC5iaW5kKHJlYWRlciksXG4gICAgd3JpdGU6IGZ1bmN0aW9uKGJ1ZmZlclBhcnQpIHtcbiAgICAgIG91dEJ1ZmZlcnMucHVzaChidWZmZXJQYXJ0KTtcbiAgICB9LFxuICAgIGNvbXBsZXRlOiBmdW5jdGlvbigpIHtcbiAgICB9XG4gIH0pO1xuXG4gIGZpbHRlci5zdGFydCgpO1xuICByZWFkZXIucHJvY2VzcygpO1xuXG4gIHJldHVybiBCdWZmZXIuY29uY2F0KG91dEJ1ZmZlcnMpO1xufTsiLCIndXNlIHN0cmljdCc7XG5cbnZhciBpbnRlcmxhY2VVdGlscyA9IHJlcXVpcmUoJy4vaW50ZXJsYWNlJyk7XG52YXIgcGFldGhQcmVkaWN0b3IgPSByZXF1aXJlKCcuL3BhZXRoLXByZWRpY3RvcicpO1xuXG5mdW5jdGlvbiBnZXRCeXRlV2lkdGgod2lkdGgsIGJwcCwgZGVwdGgpIHtcbiAgdmFyIGJ5dGVXaWR0aCA9IHdpZHRoICogYnBwO1xuICBpZiAoZGVwdGggIT09IDgpIHtcbiAgICBieXRlV2lkdGggPSBNYXRoLmNlaWwoYnl0ZVdpZHRoIC8gKDggLyBkZXB0aCkpO1xuICB9XG4gIHJldHVybiBieXRlV2lkdGg7XG59XG5cbnZhciBGaWx0ZXIgPSBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGJpdG1hcEluZm8sIGRlcGVuZGVuY2llcykge1xuXG4gIHZhciB3aWR0aCA9IGJpdG1hcEluZm8ud2lkdGg7XG4gIHZhciBoZWlnaHQgPSBiaXRtYXBJbmZvLmhlaWdodDtcbiAgdmFyIGludGVybGFjZSA9IGJpdG1hcEluZm8uaW50ZXJsYWNlO1xuICB2YXIgYnBwID0gYml0bWFwSW5mby5icHA7XG4gIHZhciBkZXB0aCA9IGJpdG1hcEluZm8uZGVwdGg7XG5cbiAgdGhpcy5yZWFkID0gZGVwZW5kZW5jaWVzLnJlYWQ7XG4gIHRoaXMud3JpdGUgPSBkZXBlbmRlbmNpZXMud3JpdGU7XG4gIHRoaXMuY29tcGxldGUgPSBkZXBlbmRlbmNpZXMuY29tcGxldGU7XG5cbiAgdGhpcy5faW1hZ2VJbmRleCA9IDA7XG4gIHRoaXMuX2ltYWdlcyA9IFtdO1xuICBpZiAoaW50ZXJsYWNlKSB7XG4gICAgdmFyIHBhc3NlcyA9IGludGVybGFjZVV0aWxzLmdldEltYWdlUGFzc2VzKHdpZHRoLCBoZWlnaHQpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGFzc2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB0aGlzLl9pbWFnZXMucHVzaCh7XG4gICAgICAgIGJ5dGVXaWR0aDogZ2V0Qnl0ZVdpZHRoKHBhc3Nlc1tpXS53aWR0aCwgYnBwLCBkZXB0aCksXG4gICAgICAgIGhlaWdodDogcGFzc2VzW2ldLmhlaWdodCxcbiAgICAgICAgbGluZUluZGV4OiAwXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgZWxzZSB7XG4gICAgdGhpcy5faW1hZ2VzLnB1c2goe1xuICAgICAgYnl0ZVdpZHRoOiBnZXRCeXRlV2lkdGgod2lkdGgsIGJwcCwgZGVwdGgpLFxuICAgICAgaGVpZ2h0OiBoZWlnaHQsXG4gICAgICBsaW5lSW5kZXg6IDBcbiAgICB9KTtcbiAgfVxuXG4gIC8vIHdoZW4gZmlsdGVyaW5nIHRoZSBsaW5lIHdlIGxvb2sgYXQgdGhlIHBpeGVsIHRvIHRoZSBsZWZ0XG4gIC8vIHRoZSBzcGVjIGFsc28gc2F5cyBpdCBpcyBkb25lIG9uIGEgYnl0ZSBsZXZlbCByZWdhcmRsZXNzIG9mIHRoZSBudW1iZXIgb2YgcGl4ZWxzXG4gIC8vIHNvIGlmIHRoZSBkZXB0aCBpcyBieXRlIGNvbXBhdGlibGUgKDggb3IgMTYpIHdlIHN1YnRyYWN0IHRoZSBicHAgaW4gb3JkZXIgdG8gY29tcGFyZSBiYWNrXG4gIC8vIGEgcGl4ZWwgcmF0aGVyIHRoYW4ganVzdCBhIGRpZmZlcmVudCBieXRlIHBhcnQuIEhvd2V2ZXIgaWYgd2UgYXJlIHN1YiBieXRlLCB3ZSBpZ25vcmUuXG4gIGlmIChkZXB0aCA9PT0gOCkge1xuICAgIHRoaXMuX3hDb21wYXJpc29uID0gYnBwO1xuICB9XG4gIGVsc2UgaWYgKGRlcHRoID09PSAxNikge1xuICAgIHRoaXMuX3hDb21wYXJpc29uID0gYnBwICogMjtcbiAgfVxuICBlbHNlIHtcbiAgICB0aGlzLl94Q29tcGFyaXNvbiA9IDE7XG4gIH1cbn07XG5cbkZpbHRlci5wcm90b3R5cGUuc3RhcnQgPSBmdW5jdGlvbigpIHtcbiAgdGhpcy5yZWFkKHRoaXMuX2ltYWdlc1t0aGlzLl9pbWFnZUluZGV4XS5ieXRlV2lkdGggKyAxLCB0aGlzLl9yZXZlcnNlRmlsdGVyTGluZS5iaW5kKHRoaXMpKTtcbn07XG5cbkZpbHRlci5wcm90b3R5cGUuX3VuRmlsdGVyVHlwZTEgPSBmdW5jdGlvbihyYXdEYXRhLCB1bmZpbHRlcmVkTGluZSwgYnl0ZVdpZHRoKSB7XG5cbiAgdmFyIHhDb21wYXJpc29uID0gdGhpcy5feENvbXBhcmlzb247XG4gIHZhciB4QmlnZ2VyVGhhbiA9IHhDb21wYXJpc29uIC0gMTtcblxuICBmb3IgKHZhciB4ID0gMDsgeCA8IGJ5dGVXaWR0aDsgeCsrKSB7XG4gICAgdmFyIHJhd0J5dGUgPSByYXdEYXRhWzEgKyB4XTtcbiAgICB2YXIgZjFMZWZ0ID0geCA+IHhCaWdnZXJUaGFuID8gdW5maWx0ZXJlZExpbmVbeCAtIHhDb21wYXJpc29uXSA6IDA7XG4gICAgdW5maWx0ZXJlZExpbmVbeF0gPSByYXdCeXRlICsgZjFMZWZ0O1xuICB9XG59O1xuXG5GaWx0ZXIucHJvdG90eXBlLl91bkZpbHRlclR5cGUyID0gZnVuY3Rpb24ocmF3RGF0YSwgdW5maWx0ZXJlZExpbmUsIGJ5dGVXaWR0aCkge1xuXG4gIHZhciBsYXN0TGluZSA9IHRoaXMuX2xhc3RMaW5lO1xuXG4gIGZvciAodmFyIHggPSAwOyB4IDwgYnl0ZVdpZHRoOyB4KyspIHtcbiAgICB2YXIgcmF3Qnl0ZSA9IHJhd0RhdGFbMSArIHhdO1xuICAgIHZhciBmMlVwID0gbGFzdExpbmUgPyBsYXN0TGluZVt4XSA6IDA7XG4gICAgdW5maWx0ZXJlZExpbmVbeF0gPSByYXdCeXRlICsgZjJVcDtcbiAgfVxufTtcblxuRmlsdGVyLnByb3RvdHlwZS5fdW5GaWx0ZXJUeXBlMyA9IGZ1bmN0aW9uKHJhd0RhdGEsIHVuZmlsdGVyZWRMaW5lLCBieXRlV2lkdGgpIHtcblxuICB2YXIgeENvbXBhcmlzb24gPSB0aGlzLl94Q29tcGFyaXNvbjtcbiAgdmFyIHhCaWdnZXJUaGFuID0geENvbXBhcmlzb24gLSAxO1xuICB2YXIgbGFzdExpbmUgPSB0aGlzLl9sYXN0TGluZTtcblxuICBmb3IgKHZhciB4ID0gMDsgeCA8IGJ5dGVXaWR0aDsgeCsrKSB7XG4gICAgdmFyIHJhd0J5dGUgPSByYXdEYXRhWzEgKyB4XTtcbiAgICB2YXIgZjNVcCA9IGxhc3RMaW5lID8gbGFzdExpbmVbeF0gOiAwO1xuICAgIHZhciBmM0xlZnQgPSB4ID4geEJpZ2dlclRoYW4gPyB1bmZpbHRlcmVkTGluZVt4IC0geENvbXBhcmlzb25dIDogMDtcbiAgICB2YXIgZjNBZGQgPSBNYXRoLmZsb29yKChmM0xlZnQgKyBmM1VwKSAvIDIpO1xuICAgIHVuZmlsdGVyZWRMaW5lW3hdID0gcmF3Qnl0ZSArIGYzQWRkO1xuICB9XG59O1xuXG5GaWx0ZXIucHJvdG90eXBlLl91bkZpbHRlclR5cGU0ID0gZnVuY3Rpb24ocmF3RGF0YSwgdW5maWx0ZXJlZExpbmUsIGJ5dGVXaWR0aCkge1xuXG4gIHZhciB4Q29tcGFyaXNvbiA9IHRoaXMuX3hDb21wYXJpc29uO1xuICB2YXIgeEJpZ2dlclRoYW4gPSB4Q29tcGFyaXNvbiAtIDE7XG4gIHZhciBsYXN0TGluZSA9IHRoaXMuX2xhc3RMaW5lO1xuXG4gIGZvciAodmFyIHggPSAwOyB4IDwgYnl0ZVdpZHRoOyB4KyspIHtcbiAgICB2YXIgcmF3Qnl0ZSA9IHJhd0RhdGFbMSArIHhdO1xuICAgIHZhciBmNFVwID0gbGFzdExpbmUgPyBsYXN0TGluZVt4XSA6IDA7XG4gICAgdmFyIGY0TGVmdCA9IHggPiB4QmlnZ2VyVGhhbiA/IHVuZmlsdGVyZWRMaW5lW3ggLSB4Q29tcGFyaXNvbl0gOiAwO1xuICAgIHZhciBmNFVwTGVmdCA9IHggPiB4QmlnZ2VyVGhhbiAmJiBsYXN0TGluZSA/IGxhc3RMaW5lW3ggLSB4Q29tcGFyaXNvbl0gOiAwO1xuICAgIHZhciBmNEFkZCA9IHBhZXRoUHJlZGljdG9yKGY0TGVmdCwgZjRVcCwgZjRVcExlZnQpO1xuICAgIHVuZmlsdGVyZWRMaW5lW3hdID0gcmF3Qnl0ZSArIGY0QWRkO1xuICB9XG59O1xuXG5GaWx0ZXIucHJvdG90eXBlLl9yZXZlcnNlRmlsdGVyTGluZSA9IGZ1bmN0aW9uKHJhd0RhdGEpIHtcblxuICB2YXIgZmlsdGVyID0gcmF3RGF0YVswXTtcbiAgdmFyIHVuZmlsdGVyZWRMaW5lO1xuICB2YXIgY3VycmVudEltYWdlID0gdGhpcy5faW1hZ2VzW3RoaXMuX2ltYWdlSW5kZXhdO1xuICB2YXIgYnl0ZVdpZHRoID0gY3VycmVudEltYWdlLmJ5dGVXaWR0aDtcblxuICBpZiAoZmlsdGVyID09PSAwKSB7XG4gICAgdW5maWx0ZXJlZExpbmUgPSByYXdEYXRhLnNsaWNlKDEsIGJ5dGVXaWR0aCArIDEpO1xuICB9XG4gIGVsc2Uge1xuXG4gICAgdW5maWx0ZXJlZExpbmUgPSBuZXcgQnVmZmVyKGJ5dGVXaWR0aCk7XG5cbiAgICBzd2l0Y2ggKGZpbHRlcikge1xuICAgICAgY2FzZSAxOlxuICAgICAgICB0aGlzLl91bkZpbHRlclR5cGUxKHJhd0RhdGEsIHVuZmlsdGVyZWRMaW5lLCBieXRlV2lkdGgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjpcbiAgICAgICAgdGhpcy5fdW5GaWx0ZXJUeXBlMihyYXdEYXRhLCB1bmZpbHRlcmVkTGluZSwgYnl0ZVdpZHRoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDM6XG4gICAgICAgIHRoaXMuX3VuRmlsdGVyVHlwZTMocmF3RGF0YSwgdW5maWx0ZXJlZExpbmUsIGJ5dGVXaWR0aCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSA0OlxuICAgICAgICB0aGlzLl91bkZpbHRlclR5cGU0KHJhd0RhdGEsIHVuZmlsdGVyZWRMaW5lLCBieXRlV2lkdGgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignVW5yZWNvZ25pc2VkIGZpbHRlciB0eXBlIC0gJyArIGZpbHRlcik7XG4gICAgfVxuICB9XG5cbiAgdGhpcy53cml0ZSh1bmZpbHRlcmVkTGluZSk7XG5cbiAgY3VycmVudEltYWdlLmxpbmVJbmRleCsrO1xuICBpZiAoY3VycmVudEltYWdlLmxpbmVJbmRleCA+PSBjdXJyZW50SW1hZ2UuaGVpZ2h0KSB7XG4gICAgdGhpcy5fbGFzdExpbmUgPSBudWxsO1xuICAgIHRoaXMuX2ltYWdlSW5kZXgrKztcbiAgICBjdXJyZW50SW1hZ2UgPSB0aGlzLl9pbWFnZXNbdGhpcy5faW1hZ2VJbmRleF07XG4gIH1cbiAgZWxzZSB7XG4gICAgdGhpcy5fbGFzdExpbmUgPSB1bmZpbHRlcmVkTGluZTtcbiAgfVxuXG4gIGlmIChjdXJyZW50SW1hZ2UpIHtcbiAgICAvLyByZWFkLCB1c2luZyB0aGUgYnl0ZSB3aWR0aCB0aGF0IG1heSBiZSBmcm9tIHRoZSBuZXcgY3VycmVudCBpbWFnZVxuICAgIHRoaXMucmVhZChjdXJyZW50SW1hZ2UuYnl0ZVdpZHRoICsgMSwgdGhpcy5fcmV2ZXJzZUZpbHRlckxpbmUuYmluZCh0aGlzKSk7XG4gIH1cbiAgZWxzZSB7XG4gICAgdGhpcy5fbGFzdExpbmUgPSBudWxsO1xuICAgIHRoaXMuY29tcGxldGUoKTtcbiAgfVxufTtcbiIsIid1c2Ugc3RyaWN0JztcclxuXHJcbmZ1bmN0aW9uIGRlUGFsZXR0ZShpbmRhdGEsIG91dGRhdGEsIHdpZHRoLCBoZWlnaHQsIHBhbGV0dGUpIHtcclxuICB2YXIgcHhQb3MgPSAwO1xyXG4gIC8vIHVzZSB2YWx1ZXMgZnJvbSBwYWxldHRlXHJcbiAgZm9yICh2YXIgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykge1xyXG4gICAgZm9yICh2YXIgeCA9IDA7IHggPCB3aWR0aDsgeCsrKSB7XHJcbiAgICAgIHZhciBjb2xvciA9IHBhbGV0dGVbaW5kYXRhW3B4UG9zXV07XHJcblxyXG4gICAgICBpZiAoIWNvbG9yKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdpbmRleCAnICsgaW5kYXRhW3B4UG9zXSArICcgbm90IGluIHBhbGV0dGUnKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA0OyBpKyspIHtcclxuICAgICAgICBvdXRkYXRhW3B4UG9zICsgaV0gPSBjb2xvcltpXTtcclxuICAgICAgfVxyXG4gICAgICBweFBvcyArPSA0O1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gcmVwbGFjZVRyYW5zcGFyZW50Q29sb3IoaW5kYXRhLCBvdXRkYXRhLCB3aWR0aCwgaGVpZ2h0LCB0cmFuc0NvbG9yKSB7XHJcbiAgdmFyIHB4UG9zID0gMDtcclxuICBmb3IgKHZhciB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKSB7XHJcbiAgICBmb3IgKHZhciB4ID0gMDsgeCA8IHdpZHRoOyB4KyspIHtcclxuICAgICAgdmFyIG1ha2VUcmFucyA9IGZhbHNlO1xyXG5cclxuICAgICAgaWYgKHRyYW5zQ29sb3IubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgICAgaWYgKHRyYW5zQ29sb3JbMF0gPT09IGluZGF0YVtweFBvc10pIHtcclxuICAgICAgICAgIG1ha2VUcmFucyA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHRyYW5zQ29sb3JbMF0gPT09IGluZGF0YVtweFBvc10gJiYgdHJhbnNDb2xvclsxXSA9PT0gaW5kYXRhW3B4UG9zICsgMV0gJiYgdHJhbnNDb2xvclsyXSA9PT0gaW5kYXRhW3B4UG9zICsgMl0pIHtcclxuICAgICAgICBtYWtlVHJhbnMgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChtYWtlVHJhbnMpIHtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDQ7IGkrKykge1xyXG4gICAgICAgICAgb3V0ZGF0YVtweFBvcyArIGldID0gMDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgcHhQb3MgKz0gNDtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHNjYWxlRGVwdGgoaW5kYXRhLCBvdXRkYXRhLCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCkge1xyXG4gIHZhciBtYXhPdXRTYW1wbGUgPSAyNTU7XHJcbiAgdmFyIG1heEluU2FtcGxlID0gTWF0aC5wb3coMiwgZGVwdGgpIC0gMTtcclxuICB2YXIgcHhQb3MgPSAwO1xyXG5cclxuICBmb3IgKHZhciB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKSB7XHJcbiAgICBmb3IgKHZhciB4ID0gMDsgeCA8IHdpZHRoOyB4KyspIHtcclxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA0OyBpKyspIHtcclxuICAgICAgICBvdXRkYXRhW3B4UG9zICsgaV0gPSBNYXRoLmZsb29yKChpbmRhdGFbcHhQb3MgKyBpXSAqIG1heE91dFNhbXBsZSkgLyBtYXhJblNhbXBsZSArIDAuNSk7XHJcbiAgICAgIH1cclxuICAgICAgcHhQb3MgKz0gNDtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaW5kYXRhLCBpbWFnZURhdGEpIHtcclxuXHJcbiAgdmFyIGRlcHRoID0gaW1hZ2VEYXRhLmRlcHRoO1xyXG4gIHZhciB3aWR0aCA9IGltYWdlRGF0YS53aWR0aDtcclxuICB2YXIgaGVpZ2h0ID0gaW1hZ2VEYXRhLmhlaWdodDtcclxuICB2YXIgY29sb3JUeXBlID0gaW1hZ2VEYXRhLmNvbG9yVHlwZTtcclxuICB2YXIgdHJhbnNDb2xvciA9IGltYWdlRGF0YS50cmFuc0NvbG9yO1xyXG4gIHZhciBwYWxldHRlID0gaW1hZ2VEYXRhLnBhbGV0dGU7XHJcblxyXG4gIHZhciBvdXRkYXRhID0gaW5kYXRhOyAvLyBvbmx5IGRpZmZlcmVudCBmb3IgMTYgYml0c1xyXG5cclxuICBpZiAoY29sb3JUeXBlID09PSAzKSB7IC8vIHBhbGV0dGVkXHJcbiAgICBkZVBhbGV0dGUoaW5kYXRhLCBvdXRkYXRhLCB3aWR0aCwgaGVpZ2h0LCBwYWxldHRlKTtcclxuICB9XHJcbiAgZWxzZSB7XHJcbiAgICBpZiAodHJhbnNDb2xvcikge1xyXG4gICAgICByZXBsYWNlVHJhbnNwYXJlbnRDb2xvcihpbmRhdGEsIG91dGRhdGEsIHdpZHRoLCBoZWlnaHQsIHRyYW5zQ29sb3IpO1xyXG4gICAgfVxyXG4gICAgLy8gaWYgaXQgbmVlZHMgc2NhbGluZ1xyXG4gICAgaWYgKGRlcHRoICE9PSA4KSB7XHJcbiAgICAgIC8vIGlmIHdlIG5lZWQgdG8gY2hhbmdlIHRoZSBidWZmZXIgc2l6ZVxyXG4gICAgICBpZiAoZGVwdGggPT09IDE2KSB7XHJcbiAgICAgICAgb3V0ZGF0YSA9IG5ldyBCdWZmZXIod2lkdGggKiBoZWlnaHQgKiA0KTtcclxuICAgICAgfVxyXG4gICAgICBzY2FsZURlcHRoKGluZGF0YSwgb3V0ZGF0YSwgd2lkdGgsIGhlaWdodCwgZGVwdGgpO1xyXG4gICAgfVxyXG4gIH1cclxuICByZXR1cm4gb3V0ZGF0YTtcclxufTtcclxuIiwiJ3VzZSBzdHJpY3QnO1xuXG4vLyBBZGFtIDdcbi8vICAgMCAxIDIgMyA0IDUgNiA3XG4vLyAwIHggNiA0IDYgeCA2IDQgNlxuLy8gMSA3IDcgNyA3IDcgNyA3IDdcbi8vIDIgNSA2IDUgNiA1IDYgNSA2XG4vLyAzIDcgNyA3IDcgNyA3IDcgN1xuLy8gNCAzIDYgNCA2IDMgNiA0IDZcbi8vIDUgNyA3IDcgNyA3IDcgNyA3XG4vLyA2IDUgNiA1IDYgNSA2IDUgNlxuLy8gNyA3IDcgNyA3IDcgNyA3IDdcblxuXG52YXIgaW1hZ2VQYXNzZXMgPSBbXG4gIHsgLy8gcGFzcyAxIC0gMXB4XG4gICAgeDogWzBdLFxuICAgIHk6IFswXVxuICB9LFxuICB7IC8vIHBhc3MgMiAtIDFweFxuICAgIHg6IFs0XSxcbiAgICB5OiBbMF1cbiAgfSxcbiAgeyAvLyBwYXNzIDMgLSAycHhcbiAgICB4OiBbMCwgNF0sXG4gICAgeTogWzRdXG4gIH0sXG4gIHsgLy8gcGFzcyA0IC0gNHB4XG4gICAgeDogWzIsIDZdLFxuICAgIHk6IFswLCA0XVxuICB9LFxuICB7IC8vIHBhc3MgNSAtIDhweFxuICAgIHg6IFswLCAyLCA0LCA2XSxcbiAgICB5OiBbMiwgNl1cbiAgfSxcbiAgeyAvLyBwYXNzIDYgLSAxNnB4XG4gICAgeDogWzEsIDMsIDUsIDddLFxuICAgIHk6IFswLCAyLCA0LCA2XVxuICB9LFxuICB7IC8vIHBhc3MgNyAtIDMycHhcbiAgICB4OiBbMCwgMSwgMiwgMywgNCwgNSwgNiwgN10sXG4gICAgeTogWzEsIDMsIDUsIDddXG4gIH1cbl07XG5cbmV4cG9ydHMuZ2V0SW1hZ2VQYXNzZXMgPSBmdW5jdGlvbih3aWR0aCwgaGVpZ2h0KSB7XG4gIHZhciBpbWFnZXMgPSBbXTtcbiAgdmFyIHhMZWZ0T3ZlciA9IHdpZHRoICUgODtcbiAgdmFyIHlMZWZ0T3ZlciA9IGhlaWdodCAlIDg7XG4gIHZhciB4UmVwZWF0cyA9ICh3aWR0aCAtIHhMZWZ0T3ZlcikgLyA4O1xuICB2YXIgeVJlcGVhdHMgPSAoaGVpZ2h0IC0geUxlZnRPdmVyKSAvIDg7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgaW1hZ2VQYXNzZXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgcGFzcyA9IGltYWdlUGFzc2VzW2ldO1xuICAgIHZhciBwYXNzV2lkdGggPSB4UmVwZWF0cyAqIHBhc3MueC5sZW5ndGg7XG4gICAgdmFyIHBhc3NIZWlnaHQgPSB5UmVwZWF0cyAqIHBhc3MueS5sZW5ndGg7XG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCBwYXNzLngubGVuZ3RoOyBqKyspIHtcbiAgICAgIGlmIChwYXNzLnhbal0gPCB4TGVmdE92ZXIpIHtcbiAgICAgICAgcGFzc1dpZHRoKys7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIGZvciAoaiA9IDA7IGogPCBwYXNzLnkubGVuZ3RoOyBqKyspIHtcbiAgICAgIGlmIChwYXNzLnlbal0gPCB5TGVmdE92ZXIpIHtcbiAgICAgICAgcGFzc0hlaWdodCsrO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAocGFzc1dpZHRoID4gMCAmJiBwYXNzSGVpZ2h0ID4gMCkge1xuICAgICAgaW1hZ2VzLnB1c2goeyB3aWR0aDogcGFzc1dpZHRoLCBoZWlnaHQ6IHBhc3NIZWlnaHQsIGluZGV4OiBpIH0pO1xuICAgIH1cbiAgfVxuICByZXR1cm4gaW1hZ2VzO1xufTtcblxuZXhwb3J0cy5nZXRJbnRlcmxhY2VJdGVyYXRvciA9IGZ1bmN0aW9uKHdpZHRoKSB7XG4gIHJldHVybiBmdW5jdGlvbih4LCB5LCBwYXNzKSB7XG4gICAgdmFyIG91dGVyWExlZnRPdmVyID0geCAlIGltYWdlUGFzc2VzW3Bhc3NdLngubGVuZ3RoO1xuICAgIHZhciBvdXRlclggPSAoKCh4IC0gb3V0ZXJYTGVmdE92ZXIpIC8gaW1hZ2VQYXNzZXNbcGFzc10ueC5sZW5ndGgpICogOCkgKyBpbWFnZVBhc3Nlc1twYXNzXS54W291dGVyWExlZnRPdmVyXTtcbiAgICB2YXIgb3V0ZXJZTGVmdE92ZXIgPSB5ICUgaW1hZ2VQYXNzZXNbcGFzc10ueS5sZW5ndGg7XG4gICAgdmFyIG91dGVyWSA9ICgoKHkgLSBvdXRlcllMZWZ0T3ZlcikgLyBpbWFnZVBhc3Nlc1twYXNzXS55Lmxlbmd0aCkgKiA4KSArIGltYWdlUGFzc2VzW3Bhc3NdLnlbb3V0ZXJZTGVmdE92ZXJdO1xuICAgIHJldHVybiAob3V0ZXJYICogNCkgKyAob3V0ZXJZICogd2lkdGggKiA0KTtcbiAgfTtcbn07IiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbCA9IHJlcXVpcmUoJ3V0aWwnKTtcbnZhciBTdHJlYW0gPSByZXF1aXJlKCdzdHJlYW0nKTtcbnZhciBjb25zdGFudHMgPSByZXF1aXJlKCcuL2NvbnN0YW50cycpO1xudmFyIFBhY2tlciA9IHJlcXVpcmUoJy4vcGFja2VyJyk7XG5cbnZhciBQYWNrZXJBc3luYyA9IG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24ob3B0KSB7XG4gIFN0cmVhbS5jYWxsKHRoaXMpO1xuXG4gIHZhciBvcHRpb25zID0gb3B0IHx8IHt9O1xuXG4gIHRoaXMuX3BhY2tlciA9IG5ldyBQYWNrZXIob3B0aW9ucyk7XG4gIHRoaXMuX2RlZmxhdGUgPSB0aGlzLl9wYWNrZXIuY3JlYXRlRGVmbGF0ZSgpO1xuXG4gIHRoaXMucmVhZGFibGUgPSB0cnVlO1xufTtcbnV0aWwuaW5oZXJpdHMoUGFja2VyQXN5bmMsIFN0cmVhbSk7XG5cblxuUGFja2VyQXN5bmMucHJvdG90eXBlLnBhY2sgPSBmdW5jdGlvbihkYXRhLCB3aWR0aCwgaGVpZ2h0LCBnYW1tYSkge1xuICAvLyBTaWduYXR1cmVcbiAgdGhpcy5lbWl0KCdkYXRhJywgbmV3IEJ1ZmZlcihjb25zdGFudHMuUE5HX1NJR05BVFVSRSkpO1xuICB0aGlzLmVtaXQoJ2RhdGEnLCB0aGlzLl9wYWNrZXIucGFja0lIRFIod2lkdGgsIGhlaWdodCkpO1xuXG4gIGlmIChnYW1tYSkge1xuICAgIHRoaXMuZW1pdCgnZGF0YScsIHRoaXMuX3BhY2tlci5wYWNrR0FNQShnYW1tYSkpO1xuICB9XG5cbiAgdmFyIGZpbHRlcmVkRGF0YSA9IHRoaXMuX3BhY2tlci5maWx0ZXJEYXRhKGRhdGEsIHdpZHRoLCBoZWlnaHQpO1xuXG4gIC8vIGNvbXByZXNzIGl0XG4gIHRoaXMuX2RlZmxhdGUub24oJ2Vycm9yJywgdGhpcy5lbWl0LmJpbmQodGhpcywgJ2Vycm9yJykpO1xuXG4gIHRoaXMuX2RlZmxhdGUub24oJ2RhdGEnLCBmdW5jdGlvbihjb21wcmVzc2VkRGF0YSkge1xuICAgIHRoaXMuZW1pdCgnZGF0YScsIHRoaXMuX3BhY2tlci5wYWNrSURBVChjb21wcmVzc2VkRGF0YSkpO1xuICB9LmJpbmQodGhpcykpO1xuXG4gIHRoaXMuX2RlZmxhdGUub24oJ2VuZCcsIGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuZW1pdCgnZGF0YScsIHRoaXMuX3BhY2tlci5wYWNrSUVORCgpKTtcbiAgICB0aGlzLmVtaXQoJ2VuZCcpO1xuICB9LmJpbmQodGhpcykpO1xuXG4gIHRoaXMuX2RlZmxhdGUuZW5kKGZpbHRlcmVkRGF0YSk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgaGFzU3luY1psaWIgPSB0cnVlO1xudmFyIHpsaWIgPSByZXF1aXJlKCd6bGliJyk7XG52YXIgY29uc3RhbnRzID0gcmVxdWlyZSgnLi9jb25zdGFudHMnKTtcbnZhciBQYWNrZXIgPSByZXF1aXJlKCcuL3BhY2tlcicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKG1ldGFEYXRhLCBvcHQpIHtcblxuICBpZiAoIWhhc1N5bmNabGliKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdUbyB1c2UgdGhlIHN5bmMgY2FwYWJpbGl0eSBvZiB0aGlzIGxpYnJhcnkgaW4gb2xkIG5vZGUgdmVyc2lvbnMsIHBsZWFzZSBwaW4gcG5nanMgdG8gdjIuMy4wJyk7XG4gIH1cblxuICB2YXIgb3B0aW9ucyA9IG9wdCB8fCB7fTtcblxuICB2YXIgcGFja2VyID0gbmV3IFBhY2tlcihvcHRpb25zKTtcblxuICB2YXIgY2h1bmtzID0gW107XG5cbiAgLy8gU2lnbmF0dXJlXG4gIGNodW5rcy5wdXNoKG5ldyBCdWZmZXIoY29uc3RhbnRzLlBOR19TSUdOQVRVUkUpKTtcblxuICAvLyBIZWFkZXJcbiAgY2h1bmtzLnB1c2gocGFja2VyLnBhY2tJSERSKG1ldGFEYXRhLndpZHRoLCBtZXRhRGF0YS5oZWlnaHQpKTtcblxuICBpZiAobWV0YURhdGEuZ2FtbWEpIHtcbiAgICBjaHVua3MucHVzaChwYWNrZXIucGFja0dBTUEobWV0YURhdGEuZ2FtbWEpKTtcbiAgfVxuXG4gIHZhciBmaWx0ZXJlZERhdGEgPSBwYWNrZXIuZmlsdGVyRGF0YShtZXRhRGF0YS5kYXRhLCBtZXRhRGF0YS53aWR0aCwgbWV0YURhdGEuaGVpZ2h0KTtcblxuICAvLyBjb21wcmVzcyBpdFxuICB2YXIgY29tcHJlc3NlZERhdGEgPSB6bGliLmRlZmxhdGVTeW5jKGZpbHRlcmVkRGF0YSwgcGFja2VyLmdldERlZmxhdGVPcHRpb25zKCkpO1xuICBmaWx0ZXJlZERhdGEgPSBudWxsO1xuXG4gIGlmICghY29tcHJlc3NlZERhdGEgfHwgIWNvbXByZXNzZWREYXRhLmxlbmd0aCkge1xuICAgIHRocm93IG5ldyBFcnJvcignYmFkIHBuZyAtIGludmFsaWQgY29tcHJlc3NlZCBkYXRhIHJlc3BvbnNlJyk7XG4gIH1cbiAgY2h1bmtzLnB1c2gocGFja2VyLnBhY2tJREFUKGNvbXByZXNzZWREYXRhKSk7XG5cbiAgLy8gRW5kXG4gIGNodW5rcy5wdXNoKHBhY2tlci5wYWNrSUVORCgpKTtcblxuICByZXR1cm4gQnVmZmVyLmNvbmNhdChjaHVua3MpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGNvbnN0YW50cyA9IHJlcXVpcmUoJy4vY29uc3RhbnRzJyk7XG52YXIgQ3JjU3RyZWFtID0gcmVxdWlyZSgnLi9jcmMnKTtcbnZhciBiaXRQYWNrZXIgPSByZXF1aXJlKCcuL2JpdHBhY2tlcicpO1xudmFyIGZpbHRlciA9IHJlcXVpcmUoJy4vZmlsdGVyLXBhY2snKTtcbnZhciB6bGliID0gcmVxdWlyZSgnemxpYicpO1xuXG52YXIgUGFja2VyID0gbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihvcHRpb25zKSB7XG4gIHRoaXMuX29wdGlvbnMgPSBvcHRpb25zO1xuXG4gIG9wdGlvbnMuZGVmbGF0ZUNodW5rU2l6ZSA9IG9wdGlvbnMuZGVmbGF0ZUNodW5rU2l6ZSB8fCAzMiAqIDEwMjQ7XG4gIG9wdGlvbnMuZGVmbGF0ZUxldmVsID0gb3B0aW9ucy5kZWZsYXRlTGV2ZWwgIT0gbnVsbCA/IG9wdGlvbnMuZGVmbGF0ZUxldmVsIDogOTtcbiAgb3B0aW9ucy5kZWZsYXRlU3RyYXRlZ3kgPSBvcHRpb25zLmRlZmxhdGVTdHJhdGVneSAhPSBudWxsID8gb3B0aW9ucy5kZWZsYXRlU3RyYXRlZ3kgOiAzO1xuICBvcHRpb25zLmlucHV0SGFzQWxwaGEgPSBvcHRpb25zLmlucHV0SGFzQWxwaGEgIT0gbnVsbCA/IG9wdGlvbnMuaW5wdXRIYXNBbHBoYSA6IHRydWU7XG4gIG9wdGlvbnMuZGVmbGF0ZUZhY3RvcnkgPSBvcHRpb25zLmRlZmxhdGVGYWN0b3J5IHx8IHpsaWIuY3JlYXRlRGVmbGF0ZTtcbiAgb3B0aW9ucy5iaXREZXB0aCA9IG9wdGlvbnMuYml0RGVwdGggfHwgODtcbiAgb3B0aW9ucy5jb2xvclR5cGUgPSAodHlwZW9mIG9wdGlvbnMuY29sb3JUeXBlID09PSAnbnVtYmVyJykgPyBvcHRpb25zLmNvbG9yVHlwZSA6IGNvbnN0YW50cy5DT0xPUlRZUEVfQ09MT1JfQUxQSEE7XG5cbiAgaWYgKG9wdGlvbnMuY29sb3JUeXBlICE9PSBjb25zdGFudHMuQ09MT1JUWVBFX0NPTE9SICYmIG9wdGlvbnMuY29sb3JUeXBlICE9PSBjb25zdGFudHMuQ09MT1JUWVBFX0NPTE9SX0FMUEhBKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdvcHRpb24gY29sb3IgdHlwZTonICsgb3B0aW9ucy5jb2xvclR5cGUgKyAnIGlzIG5vdCBzdXBwb3J0ZWQgYXQgcHJlc2VudCcpO1xuICB9XG4gIGlmIChvcHRpb25zLmJpdERlcHRoICE9PSA4KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdvcHRpb24gYml0IGRlcHRoOicgKyBvcHRpb25zLmJpdERlcHRoICsgJyBpcyBub3Qgc3VwcG9ydGVkIGF0IHByZXNlbnQnKTtcbiAgfVxufTtcblxuUGFja2VyLnByb3RvdHlwZS5nZXREZWZsYXRlT3B0aW9ucyA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4ge1xuICAgIGNodW5rU2l6ZTogdGhpcy5fb3B0aW9ucy5kZWZsYXRlQ2h1bmtTaXplLFxuICAgIGxldmVsOiB0aGlzLl9vcHRpb25zLmRlZmxhdGVMZXZlbCxcbiAgICBzdHJhdGVneTogdGhpcy5fb3B0aW9ucy5kZWZsYXRlU3RyYXRlZ3lcbiAgfTtcbn07XG5cblBhY2tlci5wcm90b3R5cGUuY3JlYXRlRGVmbGF0ZSA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gdGhpcy5fb3B0aW9ucy5kZWZsYXRlRmFjdG9yeSh0aGlzLmdldERlZmxhdGVPcHRpb25zKCkpO1xufTtcblxuUGFja2VyLnByb3RvdHlwZS5maWx0ZXJEYXRhID0gZnVuY3Rpb24oZGF0YSwgd2lkdGgsIGhlaWdodCkge1xuICAvLyBjb252ZXJ0IHRvIGNvcnJlY3QgZm9ybWF0IGZvciBmaWx0ZXJpbmcgKGUuZy4gcmlnaHQgYnBwIGFuZCBiaXQgZGVwdGgpXG4gIHZhciBwYWNrZWREYXRhID0gYml0UGFja2VyKGRhdGEsIHdpZHRoLCBoZWlnaHQsIHRoaXMuX29wdGlvbnMpO1xuXG4gIC8vIGZpbHRlciBwaXhlbCBkYXRhXG4gIHZhciBicHAgPSBjb25zdGFudHMuQ09MT1JUWVBFX1RPX0JQUF9NQVBbdGhpcy5fb3B0aW9ucy5jb2xvclR5cGVdO1xuICB2YXIgZmlsdGVyZWREYXRhID0gZmlsdGVyKHBhY2tlZERhdGEsIHdpZHRoLCBoZWlnaHQsIHRoaXMuX29wdGlvbnMsIGJwcCk7XG4gIHJldHVybiBmaWx0ZXJlZERhdGE7XG59O1xuXG5QYWNrZXIucHJvdG90eXBlLl9wYWNrQ2h1bmsgPSBmdW5jdGlvbih0eXBlLCBkYXRhKSB7XG5cbiAgdmFyIGxlbiA9IChkYXRhID8gZGF0YS5sZW5ndGggOiAwKTtcbiAgdmFyIGJ1ZiA9IG5ldyBCdWZmZXIobGVuICsgMTIpO1xuXG4gIGJ1Zi53cml0ZVVJbnQzMkJFKGxlbiwgMCk7XG4gIGJ1Zi53cml0ZVVJbnQzMkJFKHR5cGUsIDQpO1xuXG4gIGlmIChkYXRhKSB7XG4gICAgZGF0YS5jb3B5KGJ1ZiwgOCk7XG4gIH1cblxuICBidWYud3JpdGVJbnQzMkJFKENyY1N0cmVhbS5jcmMzMihidWYuc2xpY2UoNCwgYnVmLmxlbmd0aCAtIDQpKSwgYnVmLmxlbmd0aCAtIDQpO1xuICByZXR1cm4gYnVmO1xufTtcblxuUGFja2VyLnByb3RvdHlwZS5wYWNrR0FNQSA9IGZ1bmN0aW9uKGdhbW1hKSB7XG4gIHZhciBidWYgPSBuZXcgQnVmZmVyKDQpO1xuICBidWYud3JpdGVVSW50MzJCRShNYXRoLmZsb29yKGdhbW1hICogY29uc3RhbnRzLkdBTU1BX0RJVklTSU9OKSwgMCk7XG4gIHJldHVybiB0aGlzLl9wYWNrQ2h1bmsoY29uc3RhbnRzLlRZUEVfZ0FNQSwgYnVmKTtcbn07XG5cblBhY2tlci5wcm90b3R5cGUucGFja0lIRFIgPSBmdW5jdGlvbih3aWR0aCwgaGVpZ2h0KSB7XG5cbiAgdmFyIGJ1ZiA9IG5ldyBCdWZmZXIoMTMpO1xuICBidWYud3JpdGVVSW50MzJCRSh3aWR0aCwgMCk7XG4gIGJ1Zi53cml0ZVVJbnQzMkJFKGhlaWdodCwgNCk7XG4gIGJ1Zls4XSA9IHRoaXMuX29wdGlvbnMuYml0RGVwdGg7ICAvLyBCaXQgZGVwdGhcbiAgYnVmWzldID0gdGhpcy5fb3B0aW9ucy5jb2xvclR5cGU7IC8vIGNvbG9yVHlwZVxuICBidWZbMTBdID0gMDsgLy8gY29tcHJlc3Npb25cbiAgYnVmWzExXSA9IDA7IC8vIGZpbHRlclxuICBidWZbMTJdID0gMDsgLy8gaW50ZXJsYWNlXG5cbiAgcmV0dXJuIHRoaXMuX3BhY2tDaHVuayhjb25zdGFudHMuVFlQRV9JSERSLCBidWYpO1xufTtcblxuUGFja2VyLnByb3RvdHlwZS5wYWNrSURBVCA9IGZ1bmN0aW9uKGRhdGEpIHtcbiAgcmV0dXJuIHRoaXMuX3BhY2tDaHVuayhjb25zdGFudHMuVFlQRV9JREFULCBkYXRhKTtcbn07XG5cblBhY2tlci5wcm90b3R5cGUucGFja0lFTkQgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHRoaXMuX3BhY2tDaHVuayhjb25zdGFudHMuVFlQRV9JRU5ELCBudWxsKTtcbn07IiwiJ3VzZSBzdHJpY3QnO1xyXG5cclxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBwYWV0aFByZWRpY3RvcihsZWZ0LCBhYm92ZSwgdXBMZWZ0KSB7XHJcblxyXG4gIHZhciBwYWV0aCA9IGxlZnQgKyBhYm92ZSAtIHVwTGVmdDtcclxuICB2YXIgcExlZnQgPSBNYXRoLmFicyhwYWV0aCAtIGxlZnQpO1xyXG4gIHZhciBwQWJvdmUgPSBNYXRoLmFicyhwYWV0aCAtIGFib3ZlKTtcclxuICB2YXIgcFVwTGVmdCA9IE1hdGguYWJzKHBhZXRoIC0gdXBMZWZ0KTtcclxuXHJcbiAgaWYgKHBMZWZ0IDw9IHBBYm92ZSAmJiBwTGVmdCA8PSBwVXBMZWZ0KSB7XHJcbiAgICByZXR1cm4gbGVmdDtcclxuICB9XHJcbiAgaWYgKHBBYm92ZSA8PSBwVXBMZWZ0KSB7XHJcbiAgICByZXR1cm4gYWJvdmU7XHJcbiAgfVxyXG4gIHJldHVybiB1cExlZnQ7XHJcbn07IiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdXRpbCA9IHJlcXVpcmUoJ3V0aWwnKTtcbnZhciB6bGliID0gcmVxdWlyZSgnemxpYicpO1xudmFyIENodW5rU3RyZWFtID0gcmVxdWlyZSgnLi9jaHVua3N0cmVhbScpO1xudmFyIEZpbHRlckFzeW5jID0gcmVxdWlyZSgnLi9maWx0ZXItcGFyc2UtYXN5bmMnKTtcbnZhciBQYXJzZXIgPSByZXF1aXJlKCcuL3BhcnNlcicpO1xudmFyIGJpdG1hcHBlciA9IHJlcXVpcmUoJy4vYml0bWFwcGVyJyk7XG52YXIgZm9ybWF0Tm9ybWFsaXNlciA9IHJlcXVpcmUoJy4vZm9ybWF0LW5vcm1hbGlzZXInKTtcblxudmFyIFBhcnNlckFzeW5jID0gbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihvcHRpb25zKSB7XG4gIENodW5rU3RyZWFtLmNhbGwodGhpcyk7XG5cbiAgdGhpcy5fcGFyc2VyID0gbmV3IFBhcnNlcihvcHRpb25zLCB7XG4gICAgcmVhZDogdGhpcy5yZWFkLmJpbmQodGhpcyksXG4gICAgZXJyb3I6IHRoaXMuX2hhbmRsZUVycm9yLmJpbmQodGhpcyksXG4gICAgbWV0YWRhdGE6IHRoaXMuX2hhbmRsZU1ldGFEYXRhLmJpbmQodGhpcyksXG4gICAgZ2FtbWE6IHRoaXMuZW1pdC5iaW5kKHRoaXMsICdnYW1tYScpLFxuICAgIHBhbGV0dGU6IHRoaXMuX2hhbmRsZVBhbGV0dGUuYmluZCh0aGlzKSxcbiAgICB0cmFuc0NvbG9yOiB0aGlzLl9oYW5kbGVUcmFuc0NvbG9yLmJpbmQodGhpcyksXG4gICAgZmluaXNoZWQ6IHRoaXMuX2ZpbmlzaGVkLmJpbmQodGhpcyksXG4gICAgaW5mbGF0ZURhdGE6IHRoaXMuX2luZmxhdGVEYXRhLmJpbmQodGhpcylcbiAgfSk7XG4gIHRoaXMuX29wdGlvbnMgPSBvcHRpb25zO1xuICB0aGlzLndyaXRhYmxlID0gdHJ1ZTtcblxuICB0aGlzLl9wYXJzZXIuc3RhcnQoKTtcbn07XG51dGlsLmluaGVyaXRzKFBhcnNlckFzeW5jLCBDaHVua1N0cmVhbSk7XG5cblxuUGFyc2VyQXN5bmMucHJvdG90eXBlLl9oYW5kbGVFcnJvciA9IGZ1bmN0aW9uKGVycikge1xuXG4gIHRoaXMuZW1pdCgnZXJyb3InLCBlcnIpO1xuXG4gIHRoaXMud3JpdGFibGUgPSBmYWxzZTtcblxuICB0aGlzLmRlc3Ryb3koKTtcblxuICBpZiAodGhpcy5faW5mbGF0ZSAmJiB0aGlzLl9pbmZsYXRlLmRlc3Ryb3kpIHtcbiAgICB0aGlzLl9pbmZsYXRlLmRlc3Ryb3koKTtcbiAgfVxuXG4gIHRoaXMuZXJyb3JkID0gdHJ1ZTtcbn07XG5cblBhcnNlckFzeW5jLnByb3RvdHlwZS5faW5mbGF0ZURhdGEgPSBmdW5jdGlvbihkYXRhKSB7XG4gIGlmICghdGhpcy5faW5mbGF0ZSkge1xuICAgIHRoaXMuX2luZmxhdGUgPSB6bGliLmNyZWF0ZUluZmxhdGUoKTtcblxuICAgIHRoaXMuX2luZmxhdGUub24oJ2Vycm9yJywgdGhpcy5lbWl0LmJpbmQodGhpcywgJ2Vycm9yJykpO1xuICAgIHRoaXMuX2ZpbHRlci5vbignY29tcGxldGUnLCB0aGlzLl9jb21wbGV0ZS5iaW5kKHRoaXMpKTtcblxuICAgIHRoaXMuX2luZmxhdGUucGlwZSh0aGlzLl9maWx0ZXIpO1xuICB9XG4gIHRoaXMuX2luZmxhdGUud3JpdGUoZGF0YSk7XG59O1xuXG5QYXJzZXJBc3luYy5wcm90b3R5cGUuX2hhbmRsZU1ldGFEYXRhID0gZnVuY3Rpb24obWV0YURhdGEpIHtcblxuICB0aGlzLmVtaXQoJ21ldGFkYXRhJywgbWV0YURhdGEpO1xuXG4gIHRoaXMuX2JpdG1hcEluZm8gPSBPYmplY3QuY3JlYXRlKG1ldGFEYXRhKTtcblxuICB0aGlzLl9maWx0ZXIgPSBuZXcgRmlsdGVyQXN5bmModGhpcy5fYml0bWFwSW5mbyk7XG59O1xuXG5QYXJzZXJBc3luYy5wcm90b3R5cGUuX2hhbmRsZVRyYW5zQ29sb3IgPSBmdW5jdGlvbih0cmFuc0NvbG9yKSB7XG4gIHRoaXMuX2JpdG1hcEluZm8udHJhbnNDb2xvciA9IHRyYW5zQ29sb3I7XG59O1xuXG5QYXJzZXJBc3luYy5wcm90b3R5cGUuX2hhbmRsZVBhbGV0dGUgPSBmdW5jdGlvbihwYWxldHRlKSB7XG4gIHRoaXMuX2JpdG1hcEluZm8ucGFsZXR0ZSA9IHBhbGV0dGU7XG59O1xuXG5cblBhcnNlckFzeW5jLnByb3RvdHlwZS5fZmluaXNoZWQgPSBmdW5jdGlvbigpIHtcbiAgaWYgKHRoaXMuZXJyb3JkKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKCF0aGlzLl9pbmZsYXRlKSB7XG4gICAgdGhpcy5lbWl0KCdlcnJvcicsICdObyBJbmZsYXRlIGJsb2NrJyk7XG4gIH1cbiAgZWxzZSB7XG4gICAgLy8gbm8gbW9yZSBkYXRhIHRvIGluZmxhdGVcbiAgICB0aGlzLl9pbmZsYXRlLmVuZCgpO1xuICB9XG4gIHRoaXMuZGVzdHJveVNvb24oKTtcbn07XG5cblBhcnNlckFzeW5jLnByb3RvdHlwZS5fY29tcGxldGUgPSBmdW5jdGlvbihmaWx0ZXJlZERhdGEpIHtcblxuICBpZiAodGhpcy5lcnJvcmQpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB0cnkge1xuICAgIHZhciBiaXRtYXBEYXRhID0gYml0bWFwcGVyLmRhdGFUb0JpdE1hcChmaWx0ZXJlZERhdGEsIHRoaXMuX2JpdG1hcEluZm8pO1xuXG4gICAgdmFyIG5vcm1hbGlzZWRCaXRtYXBEYXRhID0gZm9ybWF0Tm9ybWFsaXNlcihiaXRtYXBEYXRhLCB0aGlzLl9iaXRtYXBJbmZvKTtcbiAgICBiaXRtYXBEYXRhID0gbnVsbDtcbiAgfVxuICBjYXRjaCAoZXgpIHtcbiAgICB0aGlzLl9oYW5kbGVFcnJvcihleCk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdGhpcy5lbWl0KCdwYXJzZWQnLCBub3JtYWxpc2VkQml0bWFwRGF0YSk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgaGFzU3luY1psaWIgPSB0cnVlO1xudmFyIHpsaWIgPSByZXF1aXJlKCd6bGliJyk7XG52YXIgU3luY1JlYWRlciA9IHJlcXVpcmUoJy4vc3luYy1yZWFkZXInKTtcbnZhciBGaWx0ZXJTeW5jID0gcmVxdWlyZSgnLi9maWx0ZXItcGFyc2Utc3luYycpO1xudmFyIFBhcnNlciA9IHJlcXVpcmUoJy4vcGFyc2VyJyk7XG52YXIgYml0bWFwcGVyID0gcmVxdWlyZSgnLi9iaXRtYXBwZXInKTtcbnZhciBmb3JtYXROb3JtYWxpc2VyID0gcmVxdWlyZSgnLi9mb3JtYXQtbm9ybWFsaXNlcicpO1xuXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oYnVmZmVyLCBvcHRpb25zKSB7XG5cbiAgaWYgKCFoYXNTeW5jWmxpYikge1xuICAgIHRocm93IG5ldyBFcnJvcignVG8gdXNlIHRoZSBzeW5jIGNhcGFiaWxpdHkgb2YgdGhpcyBsaWJyYXJ5IGluIG9sZCBub2RlIHZlcnNpb25zLCBwbGVhc2UgcGluIHBuZ2pzIHRvIHYyLjMuMCcpO1xuICB9XG5cbiAgdmFyIGVycjtcbiAgZnVuY3Rpb24gaGFuZGxlRXJyb3IoX2Vycl8pIHtcbiAgICBlcnIgPSBfZXJyXztcbiAgfVxuXG4gIHZhciBtZXRhRGF0YTtcbiAgZnVuY3Rpb24gaGFuZGxlTWV0YURhdGEoX21ldGFEYXRhXykge1xuICAgIG1ldGFEYXRhID0gX21ldGFEYXRhXztcbiAgfVxuXG4gIGZ1bmN0aW9uIGhhbmRsZVRyYW5zQ29sb3IodHJhbnNDb2xvcikge1xuICAgIG1ldGFEYXRhLnRyYW5zQ29sb3IgPSB0cmFuc0NvbG9yO1xuICB9XG5cbiAgZnVuY3Rpb24gaGFuZGxlUGFsZXR0ZShwYWxldHRlKSB7XG4gICAgbWV0YURhdGEucGFsZXR0ZSA9IHBhbGV0dGU7XG4gIH1cblxuICB2YXIgZ2FtbWE7XG4gIGZ1bmN0aW9uIGhhbmRsZUdhbW1hKF9nYW1tYV8pIHtcbiAgICBnYW1tYSA9IF9nYW1tYV87XG4gIH1cblxuICB2YXIgaW5mbGF0ZURhdGFMaXN0ID0gW107XG4gIGZ1bmN0aW9uIGhhbmRsZUluZmxhdGVEYXRhKGluZmxhdGVkRGF0YSkge1xuICAgIGluZmxhdGVEYXRhTGlzdC5wdXNoKGluZmxhdGVkRGF0YSk7XG4gIH1cblxuICB2YXIgcmVhZGVyID0gbmV3IFN5bmNSZWFkZXIoYnVmZmVyKTtcblxuICB2YXIgcGFyc2VyID0gbmV3IFBhcnNlcihvcHRpb25zLCB7XG4gICAgcmVhZDogcmVhZGVyLnJlYWQuYmluZChyZWFkZXIpLFxuICAgIGVycm9yOiBoYW5kbGVFcnJvcixcbiAgICBtZXRhZGF0YTogaGFuZGxlTWV0YURhdGEsXG4gICAgZ2FtbWE6IGhhbmRsZUdhbW1hLFxuICAgIHBhbGV0dGU6IGhhbmRsZVBhbGV0dGUsXG4gICAgdHJhbnNDb2xvcjogaGFuZGxlVHJhbnNDb2xvcixcbiAgICBpbmZsYXRlRGF0YTogaGFuZGxlSW5mbGF0ZURhdGFcbiAgfSk7XG5cbiAgcGFyc2VyLnN0YXJ0KCk7XG4gIHJlYWRlci5wcm9jZXNzKCk7XG5cbiAgaWYgKGVycikge1xuICAgIHRocm93IGVycjtcbiAgfVxuXG4gIC8vam9pbiB0b2dldGhlciB0aGUgaW5mbGF0ZSBkYXRhc1xuICB2YXIgaW5mbGF0ZURhdGEgPSBCdWZmZXIuY29uY2F0KGluZmxhdGVEYXRhTGlzdCk7XG4gIGluZmxhdGVEYXRhTGlzdC5sZW5ndGggPSAwO1xuXG4gIHZhciBpbmZsYXRlZERhdGEgPSB6bGliLmluZmxhdGVTeW5jKGluZmxhdGVEYXRhKTtcbiAgaW5mbGF0ZURhdGEgPSBudWxsO1xuXG4gIGlmICghaW5mbGF0ZWREYXRhIHx8ICFpbmZsYXRlZERhdGEubGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgcG5nIC0gaW52YWxpZCBpbmZsYXRlIGRhdGEgcmVzcG9uc2UnKTtcbiAgfVxuXG4gIHZhciB1bmZpbHRlcmVkRGF0YSA9IEZpbHRlclN5bmMucHJvY2VzcyhpbmZsYXRlZERhdGEsIG1ldGFEYXRhKTtcbiAgaW5mbGF0ZURhdGEgPSBudWxsO1xuXG4gIHZhciBiaXRtYXBEYXRhID0gYml0bWFwcGVyLmRhdGFUb0JpdE1hcCh1bmZpbHRlcmVkRGF0YSwgbWV0YURhdGEpO1xuICB1bmZpbHRlcmVkRGF0YSA9IG51bGw7XG5cbiAgdmFyIG5vcm1hbGlzZWRCaXRtYXBEYXRhID0gZm9ybWF0Tm9ybWFsaXNlcihiaXRtYXBEYXRhLCBtZXRhRGF0YSk7XG5cbiAgbWV0YURhdGEuZGF0YSA9IG5vcm1hbGlzZWRCaXRtYXBEYXRhO1xuICBtZXRhRGF0YS5nYW1tYSA9IGdhbW1hIHx8IDA7XG5cbiAgcmV0dXJuIG1ldGFEYXRhO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGNvbnN0YW50cyA9IHJlcXVpcmUoJy4vY29uc3RhbnRzJyk7XG52YXIgQ3JjQ2FsY3VsYXRvciA9IHJlcXVpcmUoJy4vY3JjJyk7XG5cblxudmFyIFBhcnNlciA9IG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24ob3B0aW9ucywgZGVwZW5kZW5jaWVzKSB7XG5cbiAgdGhpcy5fb3B0aW9ucyA9IG9wdGlvbnM7XG4gIG9wdGlvbnMuY2hlY2tDUkMgPSBvcHRpb25zLmNoZWNrQ1JDICE9PSBmYWxzZTtcblxuICB0aGlzLl9oYXNJSERSID0gZmFsc2U7XG4gIHRoaXMuX2hhc0lFTkQgPSBmYWxzZTtcblxuICAvLyBpbnB1dCBmbGFncy9tZXRhZGF0YVxuICB0aGlzLl9wYWxldHRlID0gW107XG4gIHRoaXMuX2NvbG9yVHlwZSA9IDA7XG5cbiAgdGhpcy5fY2h1bmtzID0ge307XG4gIHRoaXMuX2NodW5rc1tjb25zdGFudHMuVFlQRV9JSERSXSA9IHRoaXMuX2hhbmRsZUlIRFIuYmluZCh0aGlzKTtcbiAgdGhpcy5fY2h1bmtzW2NvbnN0YW50cy5UWVBFX0lFTkRdID0gdGhpcy5faGFuZGxlSUVORC5iaW5kKHRoaXMpO1xuICB0aGlzLl9jaHVua3NbY29uc3RhbnRzLlRZUEVfSURBVF0gPSB0aGlzLl9oYW5kbGVJREFULmJpbmQodGhpcyk7XG4gIHRoaXMuX2NodW5rc1tjb25zdGFudHMuVFlQRV9QTFRFXSA9IHRoaXMuX2hhbmRsZVBMVEUuYmluZCh0aGlzKTtcbiAgdGhpcy5fY2h1bmtzW2NvbnN0YW50cy5UWVBFX3RSTlNdID0gdGhpcy5faGFuZGxlVFJOUy5iaW5kKHRoaXMpO1xuICB0aGlzLl9jaHVua3NbY29uc3RhbnRzLlRZUEVfZ0FNQV0gPSB0aGlzLl9oYW5kbGVHQU1BLmJpbmQodGhpcyk7XG5cbiAgdGhpcy5yZWFkID0gZGVwZW5kZW5jaWVzLnJlYWQ7XG4gIHRoaXMuZXJyb3IgPSBkZXBlbmRlbmNpZXMuZXJyb3I7XG4gIHRoaXMubWV0YWRhdGEgPSBkZXBlbmRlbmNpZXMubWV0YWRhdGE7XG4gIHRoaXMuZ2FtbWEgPSBkZXBlbmRlbmNpZXMuZ2FtbWE7XG4gIHRoaXMudHJhbnNDb2xvciA9IGRlcGVuZGVuY2llcy50cmFuc0NvbG9yO1xuICB0aGlzLnBhbGV0dGUgPSBkZXBlbmRlbmNpZXMucGFsZXR0ZTtcbiAgdGhpcy5wYXJzZWQgPSBkZXBlbmRlbmNpZXMucGFyc2VkO1xuICB0aGlzLmluZmxhdGVEYXRhID0gZGVwZW5kZW5jaWVzLmluZmxhdGVEYXRhO1xuICB0aGlzLmluZmxhdGVEYXRhID0gZGVwZW5kZW5jaWVzLmluZmxhdGVEYXRhO1xuICB0aGlzLmZpbmlzaGVkID0gZGVwZW5kZW5jaWVzLmZpbmlzaGVkO1xufTtcblxuUGFyc2VyLnByb3RvdHlwZS5zdGFydCA9IGZ1bmN0aW9uKCkge1xuICB0aGlzLnJlYWQoY29uc3RhbnRzLlBOR19TSUdOQVRVUkUubGVuZ3RoLFxuICAgIHRoaXMuX3BhcnNlU2lnbmF0dXJlLmJpbmQodGhpcylcbiAgKTtcbn07XG5cblBhcnNlci5wcm90b3R5cGUuX3BhcnNlU2lnbmF0dXJlID0gZnVuY3Rpb24oZGF0YSkge1xuXG4gIHZhciBzaWduYXR1cmUgPSBjb25zdGFudHMuUE5HX1NJR05BVFVSRTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHNpZ25hdHVyZS5sZW5ndGg7IGkrKykge1xuICAgIGlmIChkYXRhW2ldICE9PSBzaWduYXR1cmVbaV0pIHtcbiAgICAgIHRoaXMuZXJyb3IobmV3IEVycm9yKCdJbnZhbGlkIGZpbGUgc2lnbmF0dXJlJykpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuICB0aGlzLnJlYWQoOCwgdGhpcy5fcGFyc2VDaHVua0JlZ2luLmJpbmQodGhpcykpO1xufTtcblxuUGFyc2VyLnByb3RvdHlwZS5fcGFyc2VDaHVua0JlZ2luID0gZnVuY3Rpb24oZGF0YSkge1xuXG4gIC8vIGNodW5rIGNvbnRlbnQgbGVuZ3RoXG4gIHZhciBsZW5ndGggPSBkYXRhLnJlYWRVSW50MzJCRSgwKTtcblxuICAvLyBjaHVuayB0eXBlXG4gIHZhciB0eXBlID0gZGF0YS5yZWFkVUludDMyQkUoNCk7XG4gIHZhciBuYW1lID0gJyc7XG4gIGZvciAodmFyIGkgPSA0OyBpIDwgODsgaSsrKSB7XG4gICAgbmFtZSArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGRhdGFbaV0pO1xuICB9XG5cbiAgLy9jb25zb2xlLmxvZygnY2h1bmsgJywgbmFtZSwgbGVuZ3RoKTtcblxuICAvLyBjaHVuayBmbGFnc1xuICB2YXIgYW5jaWxsYXJ5ID0gQm9vbGVhbihkYXRhWzRdICYgMHgyMCk7IC8vIG9yIGNyaXRpY2FsXG4vLyAgICBwcml2ID0gQm9vbGVhbihkYXRhWzVdICYgMHgyMCksIC8vIG9yIHB1YmxpY1xuLy8gICAgc2FmZVRvQ29weSA9IEJvb2xlYW4oZGF0YVs3XSAmIDB4MjApOyAvLyBvciB1bnNhZmVcblxuICBpZiAoIXRoaXMuX2hhc0lIRFIgJiYgdHlwZSAhPT0gY29uc3RhbnRzLlRZUEVfSUhEUikge1xuICAgIHRoaXMuZXJyb3IobmV3IEVycm9yKCdFeHBlY3RlZCBJSERSIG9uIGJlZ2dpbmluZycpKTtcbiAgICByZXR1cm47XG4gIH1cblxuICB0aGlzLl9jcmMgPSBuZXcgQ3JjQ2FsY3VsYXRvcigpO1xuICB0aGlzLl9jcmMud3JpdGUobmV3IEJ1ZmZlcihuYW1lKSk7XG5cbiAgaWYgKHRoaXMuX2NodW5rc1t0eXBlXSkge1xuICAgIHJldHVybiB0aGlzLl9jaHVua3NbdHlwZV0obGVuZ3RoKTtcbiAgfVxuXG4gIGlmICghYW5jaWxsYXJ5KSB7XG4gICAgdGhpcy5lcnJvcihuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIGNyaXRpY2FsIGNodW5rIHR5cGUgJyArIG5hbWUpKTtcbiAgICByZXR1cm47XG4gIH1cblxuICB0aGlzLnJlYWQobGVuZ3RoICsgNCwgdGhpcy5fc2tpcENodW5rLmJpbmQodGhpcykpO1xufTtcblxuUGFyc2VyLnByb3RvdHlwZS5fc2tpcENodW5rID0gZnVuY3Rpb24oLypkYXRhKi8pIHtcbiAgdGhpcy5yZWFkKDgsIHRoaXMuX3BhcnNlQ2h1bmtCZWdpbi5iaW5kKHRoaXMpKTtcbn07XG5cblBhcnNlci5wcm90b3R5cGUuX2hhbmRsZUNodW5rRW5kID0gZnVuY3Rpb24oKSB7XG4gIHRoaXMucmVhZCg0LCB0aGlzLl9wYXJzZUNodW5rRW5kLmJpbmQodGhpcykpO1xufTtcblxuUGFyc2VyLnByb3RvdHlwZS5fcGFyc2VDaHVua0VuZCA9IGZ1bmN0aW9uKGRhdGEpIHtcblxuICB2YXIgZmlsZUNyYyA9IGRhdGEucmVhZEludDMyQkUoMCk7XG4gIHZhciBjYWxjQ3JjID0gdGhpcy5fY3JjLmNyYzMyKCk7XG5cbiAgLy8gY2hlY2sgQ1JDXG4gIGlmICh0aGlzLl9vcHRpb25zLmNoZWNrQ1JDICYmIGNhbGNDcmMgIT09IGZpbGVDcmMpIHtcbiAgICB0aGlzLmVycm9yKG5ldyBFcnJvcignQ3JjIGVycm9yIC0gJyArIGZpbGVDcmMgKyAnIC0gJyArIGNhbGNDcmMpKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAoIXRoaXMuX2hhc0lFTkQpIHtcbiAgICB0aGlzLnJlYWQoOCwgdGhpcy5fcGFyc2VDaHVua0JlZ2luLmJpbmQodGhpcykpO1xuICB9XG59O1xuXG5QYXJzZXIucHJvdG90eXBlLl9oYW5kbGVJSERSID0gZnVuY3Rpb24obGVuZ3RoKSB7XG4gIHRoaXMucmVhZChsZW5ndGgsIHRoaXMuX3BhcnNlSUhEUi5iaW5kKHRoaXMpKTtcbn07XG5QYXJzZXIucHJvdG90eXBlLl9wYXJzZUlIRFIgPSBmdW5jdGlvbihkYXRhKSB7XG5cbiAgdGhpcy5fY3JjLndyaXRlKGRhdGEpO1xuXG4gIHZhciB3aWR0aCA9IGRhdGEucmVhZFVJbnQzMkJFKDApO1xuICB2YXIgaGVpZ2h0ID0gZGF0YS5yZWFkVUludDMyQkUoNCk7XG4gIHZhciBkZXB0aCA9IGRhdGFbOF07XG4gIHZhciBjb2xvclR5cGUgPSBkYXRhWzldOyAvLyBiaXRzOiAxIHBhbGV0dGUsIDIgY29sb3IsIDQgYWxwaGFcbiAgdmFyIGNvbXByID0gZGF0YVsxMF07XG4gIHZhciBmaWx0ZXIgPSBkYXRhWzExXTtcbiAgdmFyIGludGVybGFjZSA9IGRhdGFbMTJdO1xuXG4gIC8vIGNvbnNvbGUubG9nKCcgICAgd2lkdGgnLCB3aWR0aCwgJ2hlaWdodCcsIGhlaWdodCxcbiAgLy8gICAgICdkZXB0aCcsIGRlcHRoLCAnY29sb3JUeXBlJywgY29sb3JUeXBlLFxuICAvLyAgICAgJ2NvbXByJywgY29tcHIsICdmaWx0ZXInLCBmaWx0ZXIsICdpbnRlcmxhY2UnLCBpbnRlcmxhY2VcbiAgLy8gKTtcblxuICBpZiAoZGVwdGggIT09IDggJiYgZGVwdGggIT09IDQgJiYgZGVwdGggIT09IDIgJiYgZGVwdGggIT09IDEgJiYgZGVwdGggIT09IDE2KSB7XG4gICAgdGhpcy5lcnJvcihuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIGJpdCBkZXB0aCAnICsgZGVwdGgpKTtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKCEoY29sb3JUeXBlIGluIGNvbnN0YW50cy5DT0xPUlRZUEVfVE9fQlBQX01BUCkpIHtcbiAgICB0aGlzLmVycm9yKG5ldyBFcnJvcignVW5zdXBwb3J0ZWQgY29sb3IgdHlwZScpKTtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKGNvbXByICE9PSAwKSB7XG4gICAgdGhpcy5lcnJvcihuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIGNvbXByZXNzaW9uIG1ldGhvZCcpKTtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKGZpbHRlciAhPT0gMCkge1xuICAgIHRoaXMuZXJyb3IobmV3IEVycm9yKCdVbnN1cHBvcnRlZCBmaWx0ZXIgbWV0aG9kJykpO1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAoaW50ZXJsYWNlICE9PSAwICYmIGludGVybGFjZSAhPT0gMSkge1xuICAgIHRoaXMuZXJyb3IobmV3IEVycm9yKCdVbnN1cHBvcnRlZCBpbnRlcmxhY2UgbWV0aG9kJykpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHRoaXMuX2NvbG9yVHlwZSA9IGNvbG9yVHlwZTtcblxuICB2YXIgYnBwID0gY29uc3RhbnRzLkNPTE9SVFlQRV9UT19CUFBfTUFQW3RoaXMuX2NvbG9yVHlwZV07XG5cbiAgdGhpcy5faGFzSUhEUiA9IHRydWU7XG5cbiAgdGhpcy5tZXRhZGF0YSh7XG4gICAgd2lkdGg6IHdpZHRoLFxuICAgIGhlaWdodDogaGVpZ2h0LFxuICAgIGRlcHRoOiBkZXB0aCxcbiAgICBpbnRlcmxhY2U6IEJvb2xlYW4oaW50ZXJsYWNlKSxcbiAgICBwYWxldHRlOiBCb29sZWFuKGNvbG9yVHlwZSAmIGNvbnN0YW50cy5DT0xPUlRZUEVfUEFMRVRURSksXG4gICAgY29sb3I6IEJvb2xlYW4oY29sb3JUeXBlICYgY29uc3RhbnRzLkNPTE9SVFlQRV9DT0xPUiksXG4gICAgYWxwaGE6IEJvb2xlYW4oY29sb3JUeXBlICYgY29uc3RhbnRzLkNPTE9SVFlQRV9BTFBIQSksXG4gICAgYnBwOiBicHAsXG4gICAgY29sb3JUeXBlOiBjb2xvclR5cGVcbiAgfSk7XG5cbiAgdGhpcy5faGFuZGxlQ2h1bmtFbmQoKTtcbn07XG5cblxuUGFyc2VyLnByb3RvdHlwZS5faGFuZGxlUExURSA9IGZ1bmN0aW9uKGxlbmd0aCkge1xuICB0aGlzLnJlYWQobGVuZ3RoLCB0aGlzLl9wYXJzZVBMVEUuYmluZCh0aGlzKSk7XG59O1xuUGFyc2VyLnByb3RvdHlwZS5fcGFyc2VQTFRFID0gZnVuY3Rpb24oZGF0YSkge1xuXG4gIHRoaXMuX2NyYy53cml0ZShkYXRhKTtcblxuICB2YXIgZW50cmllcyA9IE1hdGguZmxvb3IoZGF0YS5sZW5ndGggLyAzKTtcbiAgLy8gY29uc29sZS5sb2coJ1BhbGV0dGU6JywgZW50cmllcyk7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbnRyaWVzOyBpKyspIHtcbiAgICB0aGlzLl9wYWxldHRlLnB1c2goW1xuICAgICAgZGF0YVtpICogM10sXG4gICAgICBkYXRhW2kgKiAzICsgMV0sXG4gICAgICBkYXRhW2kgKiAzICsgMl0sXG4gICAgICAweGZmXG4gICAgXSk7XG4gIH1cblxuICB0aGlzLnBhbGV0dGUodGhpcy5fcGFsZXR0ZSk7XG5cbiAgdGhpcy5faGFuZGxlQ2h1bmtFbmQoKTtcbn07XG5cblBhcnNlci5wcm90b3R5cGUuX2hhbmRsZVRSTlMgPSBmdW5jdGlvbihsZW5ndGgpIHtcbiAgdGhpcy5yZWFkKGxlbmd0aCwgdGhpcy5fcGFyc2VUUk5TLmJpbmQodGhpcykpO1xufTtcblBhcnNlci5wcm90b3R5cGUuX3BhcnNlVFJOUyA9IGZ1bmN0aW9uKGRhdGEpIHtcblxuICB0aGlzLl9jcmMud3JpdGUoZGF0YSk7XG5cbiAgLy8gcGFsZXR0ZVxuICBpZiAodGhpcy5fY29sb3JUeXBlID09PSBjb25zdGFudHMuQ09MT1JUWVBFX1BBTEVUVEVfQ09MT1IpIHtcbiAgICBpZiAodGhpcy5fcGFsZXR0ZS5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMuZXJyb3IobmV3IEVycm9yKCdUcmFuc3BhcmVuY3kgY2h1bmsgbXVzdCBiZSBhZnRlciBwYWxldHRlJykpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoZGF0YS5sZW5ndGggPiB0aGlzLl9wYWxldHRlLmxlbmd0aCkge1xuICAgICAgdGhpcy5lcnJvcihuZXcgRXJyb3IoJ01vcmUgdHJhbnNwYXJlbnQgY29sb3JzIHRoYW4gcGFsZXR0ZSBzaXplJykpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXMuX3BhbGV0dGVbaV1bM10gPSBkYXRhW2ldO1xuICAgIH1cbiAgICB0aGlzLnBhbGV0dGUodGhpcy5fcGFsZXR0ZSk7XG4gIH1cblxuICAvLyBmb3IgY29sb3JUeXBlIDAgKGdyYXlzY2FsZSkgYW5kIDIgKHJnYilcbiAgLy8gdGhlcmUgbWlnaHQgYmUgb25lIGdyYXkvY29sb3IgZGVmaW5lZCBhcyB0cmFuc3BhcmVudFxuICBpZiAodGhpcy5fY29sb3JUeXBlID09PSBjb25zdGFudHMuQ09MT1JUWVBFX0dSQVlTQ0FMRSkge1xuICAgIC8vIGdyZXksIDIgYnl0ZXNcbiAgICB0aGlzLnRyYW5zQ29sb3IoW2RhdGEucmVhZFVJbnQxNkJFKDApXSk7XG4gIH1cbiAgaWYgKHRoaXMuX2NvbG9yVHlwZSA9PT0gY29uc3RhbnRzLkNPTE9SVFlQRV9DT0xPUikge1xuICAgIHRoaXMudHJhbnNDb2xvcihbZGF0YS5yZWFkVUludDE2QkUoMCksIGRhdGEucmVhZFVJbnQxNkJFKDIpLCBkYXRhLnJlYWRVSW50MTZCRSg0KV0pO1xuICB9XG5cbiAgdGhpcy5faGFuZGxlQ2h1bmtFbmQoKTtcbn07XG5cblBhcnNlci5wcm90b3R5cGUuX2hhbmRsZUdBTUEgPSBmdW5jdGlvbihsZW5ndGgpIHtcbiAgdGhpcy5yZWFkKGxlbmd0aCwgdGhpcy5fcGFyc2VHQU1BLmJpbmQodGhpcykpO1xufTtcblBhcnNlci5wcm90b3R5cGUuX3BhcnNlR0FNQSA9IGZ1bmN0aW9uKGRhdGEpIHtcblxuICB0aGlzLl9jcmMud3JpdGUoZGF0YSk7XG4gIHRoaXMuZ2FtbWEoZGF0YS5yZWFkVUludDMyQkUoMCkgLyBjb25zdGFudHMuR0FNTUFfRElWSVNJT04pO1xuXG4gIHRoaXMuX2hhbmRsZUNodW5rRW5kKCk7XG59O1xuXG5QYXJzZXIucHJvdG90eXBlLl9oYW5kbGVJREFUID0gZnVuY3Rpb24obGVuZ3RoKSB7XG4gIHRoaXMucmVhZCgtbGVuZ3RoLCB0aGlzLl9wYXJzZUlEQVQuYmluZCh0aGlzLCBsZW5ndGgpKTtcbn07XG5QYXJzZXIucHJvdG90eXBlLl9wYXJzZUlEQVQgPSBmdW5jdGlvbihsZW5ndGgsIGRhdGEpIHtcblxuICB0aGlzLl9jcmMud3JpdGUoZGF0YSk7XG5cbiAgaWYgKHRoaXMuX2NvbG9yVHlwZSA9PT0gY29uc3RhbnRzLkNPTE9SVFlQRV9QQUxFVFRFX0NPTE9SICYmIHRoaXMuX3BhbGV0dGUubGVuZ3RoID09PSAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdFeHBlY3RlZCBwYWxldHRlIG5vdCBmb3VuZCcpO1xuICB9XG5cbiAgdGhpcy5pbmZsYXRlRGF0YShkYXRhKTtcbiAgdmFyIGxlZnRPdmVyTGVuZ3RoID0gbGVuZ3RoIC0gZGF0YS5sZW5ndGg7XG5cbiAgaWYgKGxlZnRPdmVyTGVuZ3RoID4gMCkge1xuICAgIHRoaXMuX2hhbmRsZUlEQVQobGVmdE92ZXJMZW5ndGgpO1xuICB9XG4gIGVsc2Uge1xuICAgIHRoaXMuX2hhbmRsZUNodW5rRW5kKCk7XG4gIH1cbn07XG5cblBhcnNlci5wcm90b3R5cGUuX2hhbmRsZUlFTkQgPSBmdW5jdGlvbihsZW5ndGgpIHtcbiAgdGhpcy5yZWFkKGxlbmd0aCwgdGhpcy5fcGFyc2VJRU5ELmJpbmQodGhpcykpO1xufTtcblBhcnNlci5wcm90b3R5cGUuX3BhcnNlSUVORCA9IGZ1bmN0aW9uKGRhdGEpIHtcblxuICB0aGlzLl9jcmMud3JpdGUoZGF0YSk7XG5cbiAgdGhpcy5faGFzSUVORCA9IHRydWU7XG4gIHRoaXMuX2hhbmRsZUNodW5rRW5kKCk7XG5cbiAgaWYgKHRoaXMuZmluaXNoZWQpIHtcbiAgICB0aGlzLmZpbmlzaGVkKCk7XG4gIH1cbn07XG4iLCIndXNlIHN0cmljdCc7XG5cblxudmFyIHBhcnNlID0gcmVxdWlyZSgnLi9wYXJzZXItc3luYycpO1xudmFyIHBhY2sgPSByZXF1aXJlKCcuL3BhY2tlci1zeW5jJyk7XG5cblxuZXhwb3J0cy5yZWFkID0gZnVuY3Rpb24oYnVmZmVyLCBvcHRpb25zKSB7XG5cbiAgcmV0dXJuIHBhcnNlKGJ1ZmZlciwgb3B0aW9ucyB8fCB7fSk7XG59O1xuXG5leHBvcnRzLndyaXRlID0gZnVuY3Rpb24ocG5nKSB7XG5cbiAgcmV0dXJuIHBhY2socG5nKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB1dGlsID0gcmVxdWlyZSgndXRpbCcpO1xudmFyIFN0cmVhbSA9IHJlcXVpcmUoJ3N0cmVhbScpO1xudmFyIFBhcnNlciA9IHJlcXVpcmUoJy4vcGFyc2VyLWFzeW5jJyk7XG52YXIgUGFja2VyID0gcmVxdWlyZSgnLi9wYWNrZXItYXN5bmMnKTtcbnZhciBQTkdTeW5jID0gcmVxdWlyZSgnLi9wbmctc3luYycpO1xuXG5cbnZhciBQTkcgPSBleHBvcnRzLlBORyA9IGZ1bmN0aW9uKG9wdGlvbnMpIHtcbiAgU3RyZWFtLmNhbGwodGhpcyk7XG5cbiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cblxuICAvLyBjb2VyY2UgcGl4ZWwgZGltZW5zaW9ucyB0byBpbnRlZ2VycyAoYWxzbyBjb2VyY2VzIHVuZGVmaW5lZCAtPiAwKTpcbiAgdGhpcy53aWR0aCA9IG9wdGlvbnMud2lkdGggfCAwO1xuICB0aGlzLmhlaWdodCA9IG9wdGlvbnMuaGVpZ2h0IHwgMDtcblxuICB0aGlzLmRhdGEgPSB0aGlzLndpZHRoID4gMCAmJiB0aGlzLmhlaWdodCA+IDAgP1xuICAgIG5ldyBCdWZmZXIoNCAqIHRoaXMud2lkdGggKiB0aGlzLmhlaWdodCkgOiBudWxsO1xuXG4gIGlmIChvcHRpb25zLmZpbGwgJiYgdGhpcy5kYXRhKSB7XG4gICAgdGhpcy5kYXRhLmZpbGwoMCk7XG4gIH1cblxuICB0aGlzLmdhbW1hID0gMDtcbiAgdGhpcy5yZWFkYWJsZSA9IHRoaXMud3JpdGFibGUgPSB0cnVlO1xuXG4gIHRoaXMuX3BhcnNlciA9IG5ldyBQYXJzZXIob3B0aW9ucyk7XG5cbiAgdGhpcy5fcGFyc2VyLm9uKCdlcnJvcicsIHRoaXMuZW1pdC5iaW5kKHRoaXMsICdlcnJvcicpKTtcbiAgdGhpcy5fcGFyc2VyLm9uKCdjbG9zZScsIHRoaXMuX2hhbmRsZUNsb3NlLmJpbmQodGhpcykpO1xuICB0aGlzLl9wYXJzZXIub24oJ21ldGFkYXRhJywgdGhpcy5fbWV0YWRhdGEuYmluZCh0aGlzKSk7XG4gIHRoaXMuX3BhcnNlci5vbignZ2FtbWEnLCB0aGlzLl9nYW1tYS5iaW5kKHRoaXMpKTtcbiAgdGhpcy5fcGFyc2VyLm9uKCdwYXJzZWQnLCBmdW5jdGlvbihkYXRhKSB7XG4gICAgdGhpcy5kYXRhID0gZGF0YTtcbiAgICB0aGlzLmVtaXQoJ3BhcnNlZCcsIGRhdGEpO1xuICB9LmJpbmQodGhpcykpO1xuXG4gIHRoaXMuX3BhY2tlciA9IG5ldyBQYWNrZXIob3B0aW9ucyk7XG4gIHRoaXMuX3BhY2tlci5vbignZGF0YScsIHRoaXMuZW1pdC5iaW5kKHRoaXMsICdkYXRhJykpO1xuICB0aGlzLl9wYWNrZXIub24oJ2VuZCcsIHRoaXMuZW1pdC5iaW5kKHRoaXMsICdlbmQnKSk7XG4gIHRoaXMuX3BhcnNlci5vbignY2xvc2UnLCB0aGlzLl9oYW5kbGVDbG9zZS5iaW5kKHRoaXMpKTtcbiAgdGhpcy5fcGFja2VyLm9uKCdlcnJvcicsIHRoaXMuZW1pdC5iaW5kKHRoaXMsICdlcnJvcicpKTtcblxufTtcbnV0aWwuaW5oZXJpdHMoUE5HLCBTdHJlYW0pO1xuXG5QTkcuc3luYyA9IFBOR1N5bmM7XG5cblBORy5wcm90b3R5cGUucGFjayA9IGZ1bmN0aW9uKCkge1xuXG4gIGlmICghdGhpcy5kYXRhIHx8ICF0aGlzLmRhdGEubGVuZ3RoKSB7XG4gICAgdGhpcy5lbWl0KCdlcnJvcicsICdObyBkYXRhIHByb3ZpZGVkJyk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwcm9jZXNzLm5leHRUaWNrKGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuX3BhY2tlci5wYWNrKHRoaXMuZGF0YSwgdGhpcy53aWR0aCwgdGhpcy5oZWlnaHQsIHRoaXMuZ2FtbWEpO1xuICB9LmJpbmQodGhpcykpO1xuXG4gIHJldHVybiB0aGlzO1xufTtcblxuXG5QTkcucHJvdG90eXBlLnBhcnNlID0gZnVuY3Rpb24oZGF0YSwgY2FsbGJhY2spIHtcblxuICBpZiAoY2FsbGJhY2spIHtcbiAgICB2YXIgb25QYXJzZWQsIG9uRXJyb3I7XG5cbiAgICBvblBhcnNlZCA9IGZ1bmN0aW9uKHBhcnNlZERhdGEpIHtcbiAgICAgIHRoaXMucmVtb3ZlTGlzdGVuZXIoJ2Vycm9yJywgb25FcnJvcik7XG5cbiAgICAgIHRoaXMuZGF0YSA9IHBhcnNlZERhdGE7XG4gICAgICBjYWxsYmFjayhudWxsLCB0aGlzKTtcbiAgICB9LmJpbmQodGhpcyk7XG5cbiAgICBvbkVycm9yID0gZnVuY3Rpb24oZXJyKSB7XG4gICAgICB0aGlzLnJlbW92ZUxpc3RlbmVyKCdwYXJzZWQnLCBvblBhcnNlZCk7XG5cbiAgICAgIGNhbGxiYWNrKGVyciwgbnVsbCk7XG4gICAgfS5iaW5kKHRoaXMpO1xuXG4gICAgdGhpcy5vbmNlKCdwYXJzZWQnLCBvblBhcnNlZCk7XG4gICAgdGhpcy5vbmNlKCdlcnJvcicsIG9uRXJyb3IpO1xuICB9XG5cbiAgdGhpcy5lbmQoZGF0YSk7XG4gIHJldHVybiB0aGlzO1xufTtcblxuUE5HLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uKGRhdGEpIHtcbiAgdGhpcy5fcGFyc2VyLndyaXRlKGRhdGEpO1xuICByZXR1cm4gdHJ1ZTtcbn07XG5cblBORy5wcm90b3R5cGUuZW5kID0gZnVuY3Rpb24oZGF0YSkge1xuICB0aGlzLl9wYXJzZXIuZW5kKGRhdGEpO1xufTtcblxuUE5HLnByb3RvdHlwZS5fbWV0YWRhdGEgPSBmdW5jdGlvbihtZXRhZGF0YSkge1xuICB0aGlzLndpZHRoID0gbWV0YWRhdGEud2lkdGg7XG4gIHRoaXMuaGVpZ2h0ID0gbWV0YWRhdGEuaGVpZ2h0O1xuXG4gIHRoaXMuZW1pdCgnbWV0YWRhdGEnLCBtZXRhZGF0YSk7XG59O1xuXG5QTkcucHJvdG90eXBlLl9nYW1tYSA9IGZ1bmN0aW9uKGdhbW1hKSB7XG4gIHRoaXMuZ2FtbWEgPSBnYW1tYTtcbn07XG5cblBORy5wcm90b3R5cGUuX2hhbmRsZUNsb3NlID0gZnVuY3Rpb24oKSB7XG4gIGlmICghdGhpcy5fcGFyc2VyLndyaXRhYmxlICYmICF0aGlzLl9wYWNrZXIucmVhZGFibGUpIHtcbiAgICB0aGlzLmVtaXQoJ2Nsb3NlJyk7XG4gIH1cbn07XG5cblxuUE5HLmJpdGJsdCA9IGZ1bmN0aW9uKHNyYywgZHN0LCBzcmNYLCBzcmNZLCB3aWR0aCwgaGVpZ2h0LCBkZWx0YVgsIGRlbHRhWSkgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG1heC1wYXJhbXNcbiAgLy8gY29lcmNlIHBpeGVsIGRpbWVuc2lvbnMgdG8gaW50ZWdlcnMgKGFsc28gY29lcmNlcyB1bmRlZmluZWQgLT4gMCk6XG4gIC8qIGVzbGludC1kaXNhYmxlIG5vLXBhcmFtLXJlYXNzaWduICovXG4gIHNyY1ggfD0gMDtcbiAgc3JjWSB8PSAwO1xuICB3aWR0aCB8PSAwO1xuICBoZWlnaHQgfD0gMDtcbiAgZGVsdGFYIHw9IDA7XG4gIGRlbHRhWSB8PSAwO1xuICAvKiBlc2xpbnQtZW5hYmxlIG5vLXBhcmFtLXJlYXNzaWduICovXG5cbiAgaWYgKHNyY1ggPiBzcmMud2lkdGggfHwgc3JjWSA+IHNyYy5oZWlnaHQgfHwgc3JjWCArIHdpZHRoID4gc3JjLndpZHRoIHx8IHNyY1kgKyBoZWlnaHQgPiBzcmMuaGVpZ2h0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdiaXRibHQgcmVhZGluZyBvdXRzaWRlIGltYWdlJyk7XG4gIH1cblxuICBpZiAoZGVsdGFYID4gZHN0LndpZHRoIHx8IGRlbHRhWSA+IGRzdC5oZWlnaHQgfHwgZGVsdGFYICsgd2lkdGggPiBkc3Qud2lkdGggfHwgZGVsdGFZICsgaGVpZ2h0ID4gZHN0LmhlaWdodCkge1xuICAgIHRocm93IG5ldyBFcnJvcignYml0Ymx0IHdyaXRpbmcgb3V0c2lkZSBpbWFnZScpO1xuICB9XG5cbiAgZm9yICh2YXIgeSA9IDA7IHkgPCBoZWlnaHQ7IHkrKykge1xuICAgIHNyYy5kYXRhLmNvcHkoZHN0LmRhdGEsXG4gICAgICAoKGRlbHRhWSArIHkpICogZHN0LndpZHRoICsgZGVsdGFYKSA8PCAyLFxuICAgICAgKChzcmNZICsgeSkgKiBzcmMud2lkdGggKyBzcmNYKSA8PCAyLFxuICAgICAgKChzcmNZICsgeSkgKiBzcmMud2lkdGggKyBzcmNYICsgd2lkdGgpIDw8IDJcbiAgICApO1xuICB9XG59O1xuXG5cblBORy5wcm90b3R5cGUuYml0Ymx0ID0gZnVuY3Rpb24oZHN0LCBzcmNYLCBzcmNZLCB3aWR0aCwgaGVpZ2h0LCBkZWx0YVgsIGRlbHRhWSkgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG1heC1wYXJhbXNcblxuICBQTkcuYml0Ymx0KHRoaXMsIGRzdCwgc3JjWCwgc3JjWSwgd2lkdGgsIGhlaWdodCwgZGVsdGFYLCBkZWx0YVkpO1xuICByZXR1cm4gdGhpcztcbn07XG5cblBORy5hZGp1c3RHYW1tYSA9IGZ1bmN0aW9uKHNyYykge1xuICBpZiAoc3JjLmdhbW1hKSB7XG4gICAgZm9yICh2YXIgeSA9IDA7IHkgPCBzcmMuaGVpZ2h0OyB5KyspIHtcbiAgICAgIGZvciAodmFyIHggPSAwOyB4IDwgc3JjLndpZHRoOyB4KyspIHtcbiAgICAgICAgdmFyIGlkeCA9IChzcmMud2lkdGggKiB5ICsgeCkgPDwgMjtcblxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDM7IGkrKykge1xuICAgICAgICAgIHZhciBzYW1wbGUgPSBzcmMuZGF0YVtpZHggKyBpXSAvIDI1NTtcbiAgICAgICAgICBzYW1wbGUgPSBNYXRoLnBvdyhzYW1wbGUsIDEgLyAyLjIgLyBzcmMuZ2FtbWEpO1xuICAgICAgICAgIHNyYy5kYXRhW2lkeCArIGldID0gTWF0aC5yb3VuZChzYW1wbGUgKiAyNTUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHNyYy5nYW1tYSA9IDA7XG4gIH1cbn07XG5cblBORy5wcm90b3R5cGUuYWRqdXN0R2FtbWEgPSBmdW5jdGlvbigpIHtcbiAgUE5HLmFkanVzdEdhbW1hKHRoaXMpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIFN5bmNSZWFkZXIgPSBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGJ1ZmZlcikge1xuXG4gIHRoaXMuX2J1ZmZlciA9IGJ1ZmZlcjtcbiAgdGhpcy5fcmVhZHMgPSBbXTtcbn07XG5cblN5bmNSZWFkZXIucHJvdG90eXBlLnJlYWQgPSBmdW5jdGlvbihsZW5ndGgsIGNhbGxiYWNrKSB7XG5cbiAgdGhpcy5fcmVhZHMucHVzaCh7XG4gICAgbGVuZ3RoOiBNYXRoLmFicyhsZW5ndGgpLCAgLy8gaWYgbGVuZ3RoIDwgMCB0aGVuIGF0IG1vc3QgdGhpcyBsZW5ndGhcbiAgICBhbGxvd0xlc3M6IGxlbmd0aCA8IDAsXG4gICAgZnVuYzogY2FsbGJhY2tcbiAgfSk7XG59O1xuXG5TeW5jUmVhZGVyLnByb3RvdHlwZS5wcm9jZXNzID0gZnVuY3Rpb24oKSB7XG5cbiAgLy8gYXMgbG9uZyBhcyB0aGVyZSBpcyBhbnkgZGF0YSBhbmQgcmVhZCByZXF1ZXN0c1xuICB3aGlsZSAodGhpcy5fcmVhZHMubGVuZ3RoID4gMCAmJiB0aGlzLl9idWZmZXIubGVuZ3RoKSB7XG5cbiAgICB2YXIgcmVhZCA9IHRoaXMuX3JlYWRzWzBdO1xuXG4gICAgaWYgKHRoaXMuX2J1ZmZlci5sZW5ndGggJiYgKHRoaXMuX2J1ZmZlci5sZW5ndGggPj0gcmVhZC5sZW5ndGggfHwgcmVhZC5hbGxvd0xlc3MpKSB7XG5cbiAgICAgIC8vIG9rIHRoZXJlIGlzIGFueSBkYXRhIHNvIHRoYXQgd2UgY2FuIHNhdGlzZnkgdGhpcyByZXF1ZXN0XG4gICAgICB0aGlzLl9yZWFkcy5zaGlmdCgpOyAvLyA9PSByZWFkXG5cbiAgICAgIHZhciBidWYgPSB0aGlzLl9idWZmZXI7XG5cbiAgICAgIHRoaXMuX2J1ZmZlciA9IGJ1Zi5zbGljZShyZWFkLmxlbmd0aCk7XG5cbiAgICAgIHJlYWQuZnVuYy5jYWxsKHRoaXMsIGJ1Zi5zbGljZSgwLCByZWFkLmxlbmd0aCkpO1xuXG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gIH1cblxuICBpZiAodGhpcy5fcmVhZHMubGVuZ3RoID4gMCkge1xuICAgIHJldHVybiBuZXcgRXJyb3IoJ1RoZXJlIGFyZSBzb21lIHJlYWQgcmVxdWVzdHMgd2FpdG5nIG9uIGZpbmlzaGVkIHN0cmVhbScpO1xuICB9XG5cbiAgaWYgKHRoaXMuX2J1ZmZlci5sZW5ndGggPiAwKSB7XG4gICAgcmV0dXJuIG5ldyBFcnJvcigndW5yZWNvZ25pc2VkIGNvbnRlbnQgYXQgZW5kIG9mIHN0cmVhbScpO1xuICB9XG5cbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbmlmICghcHJvY2Vzcy52ZXJzaW9uIHx8XG4gICAgcHJvY2Vzcy52ZXJzaW9uLmluZGV4T2YoJ3YwLicpID09PSAwIHx8XG4gICAgcHJvY2Vzcy52ZXJzaW9uLmluZGV4T2YoJ3YxLicpID09PSAwICYmIHByb2Nlc3MudmVyc2lvbi5pbmRleE9mKCd2MS44LicpICE9PSAwKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gbmV4dFRpY2s7XG59IGVsc2Uge1xuICBtb2R1bGUuZXhwb3J0cyA9IHByb2Nlc3MubmV4dFRpY2s7XG59XG5cbmZ1bmN0aW9uIG5leHRUaWNrKGZuLCBhcmcxLCBhcmcyLCBhcmczKSB7XG4gIGlmICh0eXBlb2YgZm4gIT09ICdmdW5jdGlvbicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdcImNhbGxiYWNrXCIgYXJndW1lbnQgbXVzdCBiZSBhIGZ1bmN0aW9uJyk7XG4gIH1cbiAgdmFyIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gIHZhciBhcmdzLCBpO1xuICBzd2l0Y2ggKGxlbikge1xuICBjYXNlIDA6XG4gIGNhc2UgMTpcbiAgICByZXR1cm4gcHJvY2Vzcy5uZXh0VGljayhmbik7XG4gIGNhc2UgMjpcbiAgICByZXR1cm4gcHJvY2Vzcy5uZXh0VGljayhmdW5jdGlvbiBhZnRlclRpY2tPbmUoKSB7XG4gICAgICBmbi5jYWxsKG51bGwsIGFyZzEpO1xuICAgIH0pO1xuICBjYXNlIDM6XG4gICAgcmV0dXJuIHByb2Nlc3MubmV4dFRpY2soZnVuY3Rpb24gYWZ0ZXJUaWNrVHdvKCkge1xuICAgICAgZm4uY2FsbChudWxsLCBhcmcxLCBhcmcyKTtcbiAgICB9KTtcbiAgY2FzZSA0OlxuICAgIHJldHVybiBwcm9jZXNzLm5leHRUaWNrKGZ1bmN0aW9uIGFmdGVyVGlja1RocmVlKCkge1xuICAgICAgZm4uY2FsbChudWxsLCBhcmcxLCBhcmcyLCBhcmczKTtcbiAgICB9KTtcbiAgZGVmYXVsdDpcbiAgICBhcmdzID0gbmV3IEFycmF5KGxlbiAtIDEpO1xuICAgIGkgPSAwO1xuICAgIHdoaWxlIChpIDwgYXJncy5sZW5ndGgpIHtcbiAgICAgIGFyZ3NbaSsrXSA9IGFyZ3VtZW50c1tpXTtcbiAgICB9XG4gICAgcmV0dXJuIHByb2Nlc3MubmV4dFRpY2soZnVuY3Rpb24gYWZ0ZXJUaWNrKCkge1xuICAgICAgZm4uYXBwbHkobnVsbCwgYXJncyk7XG4gICAgfSk7XG4gIH1cbn1cbiIsIi8vIHNoaW0gZm9yIHVzaW5nIHByb2Nlc3MgaW4gYnJvd3NlclxudmFyIHByb2Nlc3MgPSBtb2R1bGUuZXhwb3J0cyA9IHt9O1xuXG4vLyBjYWNoZWQgZnJvbSB3aGF0ZXZlciBnbG9iYWwgaXMgcHJlc2VudCBzbyB0aGF0IHRlc3QgcnVubmVycyB0aGF0IHN0dWIgaXRcbi8vIGRvbid0IGJyZWFrIHRoaW5ncy4gIEJ1dCB3ZSBuZWVkIHRvIHdyYXAgaXQgaW4gYSB0cnkgY2F0Y2ggaW4gY2FzZSBpdCBpc1xuLy8gd3JhcHBlZCBpbiBzdHJpY3QgbW9kZSBjb2RlIHdoaWNoIGRvZXNuJ3QgZGVmaW5lIGFueSBnbG9iYWxzLiAgSXQncyBpbnNpZGUgYVxuLy8gZnVuY3Rpb24gYmVjYXVzZSB0cnkvY2F0Y2hlcyBkZW9wdGltaXplIGluIGNlcnRhaW4gZW5naW5lcy5cblxudmFyIGNhY2hlZFNldFRpbWVvdXQ7XG52YXIgY2FjaGVkQ2xlYXJUaW1lb3V0O1xuXG5mdW5jdGlvbiBkZWZhdWx0U2V0VGltb3V0KCkge1xuICAgIHRocm93IG5ldyBFcnJvcignc2V0VGltZW91dCBoYXMgbm90IGJlZW4gZGVmaW5lZCcpO1xufVxuZnVuY3Rpb24gZGVmYXVsdENsZWFyVGltZW91dCAoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdjbGVhclRpbWVvdXQgaGFzIG5vdCBiZWVuIGRlZmluZWQnKTtcbn1cbihmdW5jdGlvbiAoKSB7XG4gICAgdHJ5IHtcbiAgICAgICAgaWYgKHR5cGVvZiBzZXRUaW1lb3V0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBjYWNoZWRTZXRUaW1lb3V0ID0gc2V0VGltZW91dDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNhY2hlZFNldFRpbWVvdXQgPSBkZWZhdWx0U2V0VGltb3V0O1xuICAgICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjYWNoZWRTZXRUaW1lb3V0ID0gZGVmYXVsdFNldFRpbW91dDtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgaWYgKHR5cGVvZiBjbGVhclRpbWVvdXQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGNhY2hlZENsZWFyVGltZW91dCA9IGNsZWFyVGltZW91dDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNhY2hlZENsZWFyVGltZW91dCA9IGRlZmF1bHRDbGVhclRpbWVvdXQ7XG4gICAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNhY2hlZENsZWFyVGltZW91dCA9IGRlZmF1bHRDbGVhclRpbWVvdXQ7XG4gICAgfVxufSAoKSlcbmZ1bmN0aW9uIHJ1blRpbWVvdXQoZnVuKSB7XG4gICAgaWYgKGNhY2hlZFNldFRpbWVvdXQgPT09IHNldFRpbWVvdXQpIHtcbiAgICAgICAgLy9ub3JtYWwgZW52aXJvbWVudHMgaW4gc2FuZSBzaXR1YXRpb25zXG4gICAgICAgIHJldHVybiBzZXRUaW1lb3V0KGZ1biwgMCk7XG4gICAgfVxuICAgIC8vIGlmIHNldFRpbWVvdXQgd2Fzbid0IGF2YWlsYWJsZSBidXQgd2FzIGxhdHRlciBkZWZpbmVkXG4gICAgaWYgKChjYWNoZWRTZXRUaW1lb3V0ID09PSBkZWZhdWx0U2V0VGltb3V0IHx8ICFjYWNoZWRTZXRUaW1lb3V0KSAmJiBzZXRUaW1lb3V0KSB7XG4gICAgICAgIGNhY2hlZFNldFRpbWVvdXQgPSBzZXRUaW1lb3V0O1xuICAgICAgICByZXR1cm4gc2V0VGltZW91dChmdW4sIDApO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICAvLyB3aGVuIHdoZW4gc29tZWJvZHkgaGFzIHNjcmV3ZWQgd2l0aCBzZXRUaW1lb3V0IGJ1dCBubyBJLkUuIG1hZGRuZXNzXG4gICAgICAgIHJldHVybiBjYWNoZWRTZXRUaW1lb3V0KGZ1biwgMCk7XG4gICAgfSBjYXRjaChlKXtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIC8vIFdoZW4gd2UgYXJlIGluIEkuRS4gYnV0IHRoZSBzY3JpcHQgaGFzIGJlZW4gZXZhbGVkIHNvIEkuRS4gZG9lc24ndCB0cnVzdCB0aGUgZ2xvYmFsIG9iamVjdCB3aGVuIGNhbGxlZCBub3JtYWxseVxuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZFNldFRpbWVvdXQuY2FsbChudWxsLCBmdW4sIDApO1xuICAgICAgICB9IGNhdGNoKGUpe1xuICAgICAgICAgICAgLy8gc2FtZSBhcyBhYm92ZSBidXQgd2hlbiBpdCdzIGEgdmVyc2lvbiBvZiBJLkUuIHRoYXQgbXVzdCBoYXZlIHRoZSBnbG9iYWwgb2JqZWN0IGZvciAndGhpcycsIGhvcGZ1bGx5IG91ciBjb250ZXh0IGNvcnJlY3Qgb3RoZXJ3aXNlIGl0IHdpbGwgdGhyb3cgYSBnbG9iYWwgZXJyb3JcbiAgICAgICAgICAgIHJldHVybiBjYWNoZWRTZXRUaW1lb3V0LmNhbGwodGhpcywgZnVuLCAwKTtcbiAgICAgICAgfVxuICAgIH1cblxuXG59XG5mdW5jdGlvbiBydW5DbGVhclRpbWVvdXQobWFya2VyKSB7XG4gICAgaWYgKGNhY2hlZENsZWFyVGltZW91dCA9PT0gY2xlYXJUaW1lb3V0KSB7XG4gICAgICAgIC8vbm9ybWFsIGVudmlyb21lbnRzIGluIHNhbmUgc2l0dWF0aW9uc1xuICAgICAgICByZXR1cm4gY2xlYXJUaW1lb3V0KG1hcmtlcik7XG4gICAgfVxuICAgIC8vIGlmIGNsZWFyVGltZW91dCB3YXNuJ3QgYXZhaWxhYmxlIGJ1dCB3YXMgbGF0dGVyIGRlZmluZWRcbiAgICBpZiAoKGNhY2hlZENsZWFyVGltZW91dCA9PT0gZGVmYXVsdENsZWFyVGltZW91dCB8fCAhY2FjaGVkQ2xlYXJUaW1lb3V0KSAmJiBjbGVhclRpbWVvdXQpIHtcbiAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gY2xlYXJUaW1lb3V0O1xuICAgICAgICByZXR1cm4gY2xlYXJUaW1lb3V0KG1hcmtlcik7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICAgIC8vIHdoZW4gd2hlbiBzb21lYm9keSBoYXMgc2NyZXdlZCB3aXRoIHNldFRpbWVvdXQgYnV0IG5vIEkuRS4gbWFkZG5lc3NcbiAgICAgICAgcmV0dXJuIGNhY2hlZENsZWFyVGltZW91dChtYXJrZXIpO1xuICAgIH0gY2F0Y2ggKGUpe1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy8gV2hlbiB3ZSBhcmUgaW4gSS5FLiBidXQgdGhlIHNjcmlwdCBoYXMgYmVlbiBldmFsZWQgc28gSS5FLiBkb2Vzbid0ICB0cnVzdCB0aGUgZ2xvYmFsIG9iamVjdCB3aGVuIGNhbGxlZCBub3JtYWxseVxuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZENsZWFyVGltZW91dC5jYWxsKG51bGwsIG1hcmtlcik7XG4gICAgICAgIH0gY2F0Y2ggKGUpe1xuICAgICAgICAgICAgLy8gc2FtZSBhcyBhYm92ZSBidXQgd2hlbiBpdCdzIGEgdmVyc2lvbiBvZiBJLkUuIHRoYXQgbXVzdCBoYXZlIHRoZSBnbG9iYWwgb2JqZWN0IGZvciAndGhpcycsIGhvcGZ1bGx5IG91ciBjb250ZXh0IGNvcnJlY3Qgb3RoZXJ3aXNlIGl0IHdpbGwgdGhyb3cgYSBnbG9iYWwgZXJyb3IuXG4gICAgICAgICAgICAvLyBTb21lIHZlcnNpb25zIG9mIEkuRS4gaGF2ZSBkaWZmZXJlbnQgcnVsZXMgZm9yIGNsZWFyVGltZW91dCB2cyBzZXRUaW1lb3V0XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkQ2xlYXJUaW1lb3V0LmNhbGwodGhpcywgbWFya2VyKTtcbiAgICAgICAgfVxuICAgIH1cblxuXG5cbn1cbnZhciBxdWV1ZSA9IFtdO1xudmFyIGRyYWluaW5nID0gZmFsc2U7XG52YXIgY3VycmVudFF1ZXVlO1xudmFyIHF1ZXVlSW5kZXggPSAtMTtcblxuZnVuY3Rpb24gY2xlYW5VcE5leHRUaWNrKCkge1xuICAgIGlmICghZHJhaW5pbmcgfHwgIWN1cnJlbnRRdWV1ZSkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGRyYWluaW5nID0gZmFsc2U7XG4gICAgaWYgKGN1cnJlbnRRdWV1ZS5sZW5ndGgpIHtcbiAgICAgICAgcXVldWUgPSBjdXJyZW50UXVldWUuY29uY2F0KHF1ZXVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBxdWV1ZUluZGV4ID0gLTE7XG4gICAgfVxuICAgIGlmIChxdWV1ZS5sZW5ndGgpIHtcbiAgICAgICAgZHJhaW5RdWV1ZSgpO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gZHJhaW5RdWV1ZSgpIHtcbiAgICBpZiAoZHJhaW5pbmcpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB2YXIgdGltZW91dCA9IHJ1blRpbWVvdXQoY2xlYW5VcE5leHRUaWNrKTtcbiAgICBkcmFpbmluZyA9IHRydWU7XG5cbiAgICB2YXIgbGVuID0gcXVldWUubGVuZ3RoO1xuICAgIHdoaWxlKGxlbikge1xuICAgICAgICBjdXJyZW50UXVldWUgPSBxdWV1ZTtcbiAgICAgICAgcXVldWUgPSBbXTtcbiAgICAgICAgd2hpbGUgKCsrcXVldWVJbmRleCA8IGxlbikge1xuICAgICAgICAgICAgaWYgKGN1cnJlbnRRdWV1ZSkge1xuICAgICAgICAgICAgICAgIGN1cnJlbnRRdWV1ZVtxdWV1ZUluZGV4XS5ydW4oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBxdWV1ZUluZGV4ID0gLTE7XG4gICAgICAgIGxlbiA9IHF1ZXVlLmxlbmd0aDtcbiAgICB9XG4gICAgY3VycmVudFF1ZXVlID0gbnVsbDtcbiAgICBkcmFpbmluZyA9IGZhbHNlO1xuICAgIHJ1bkNsZWFyVGltZW91dCh0aW1lb3V0KTtcbn1cblxucHJvY2Vzcy5uZXh0VGljayA9IGZ1bmN0aW9uIChmdW4pIHtcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoIC0gMSk7XG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPiAxKSB7XG4gICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBhcmdzW2kgLSAxXSA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBxdWV1ZS5wdXNoKG5ldyBJdGVtKGZ1biwgYXJncykpO1xuICAgIGlmIChxdWV1ZS5sZW5ndGggPT09IDEgJiYgIWRyYWluaW5nKSB7XG4gICAgICAgIHJ1blRpbWVvdXQoZHJhaW5RdWV1ZSk7XG4gICAgfVxufTtcblxuLy8gdjggbGlrZXMgcHJlZGljdGlibGUgb2JqZWN0c1xuZnVuY3Rpb24gSXRlbShmdW4sIGFycmF5KSB7XG4gICAgdGhpcy5mdW4gPSBmdW47XG4gICAgdGhpcy5hcnJheSA9IGFycmF5O1xufVxuSXRlbS5wcm90b3R5cGUucnVuID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuZnVuLmFwcGx5KG51bGwsIHRoaXMuYXJyYXkpO1xufTtcbnByb2Nlc3MudGl0bGUgPSAnYnJvd3Nlcic7XG5wcm9jZXNzLmJyb3dzZXIgPSB0cnVlO1xucHJvY2Vzcy5lbnYgPSB7fTtcbnByb2Nlc3MuYXJndiA9IFtdO1xucHJvY2Vzcy52ZXJzaW9uID0gJyc7IC8vIGVtcHR5IHN0cmluZyB0byBhdm9pZCByZWdleHAgaXNzdWVzXG5wcm9jZXNzLnZlcnNpb25zID0ge307XG5cbmZ1bmN0aW9uIG5vb3AoKSB7fVxuXG5wcm9jZXNzLm9uID0gbm9vcDtcbnByb2Nlc3MuYWRkTGlzdGVuZXIgPSBub29wO1xucHJvY2Vzcy5vbmNlID0gbm9vcDtcbnByb2Nlc3Mub2ZmID0gbm9vcDtcbnByb2Nlc3MucmVtb3ZlTGlzdGVuZXIgPSBub29wO1xucHJvY2Vzcy5yZW1vdmVBbGxMaXN0ZW5lcnMgPSBub29wO1xucHJvY2Vzcy5lbWl0ID0gbm9vcDtcblxucHJvY2Vzcy5iaW5kaW5nID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3Byb2Nlc3MuYmluZGluZyBpcyBub3Qgc3VwcG9ydGVkJyk7XG59O1xuXG5wcm9jZXNzLmN3ZCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuICcvJyB9O1xucHJvY2Vzcy5jaGRpciA9IGZ1bmN0aW9uIChkaXIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3Byb2Nlc3MuY2hkaXIgaXMgbm90IHN1cHBvcnRlZCcpO1xufTtcbnByb2Nlc3MudW1hc2sgPSBmdW5jdGlvbigpIHsgcmV0dXJuIDA7IH07XG4iLCIoZnVuY3Rpb24gKGdsb2JhbCwgZmFjdG9yeSkge1xuXHR0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcgPyBtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkoKSA6XG5cdHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCA/IGRlZmluZShmYWN0b3J5KSA6XG5cdChnbG9iYWwucHJvajQgPSBmYWN0b3J5KCkpO1xufSh0aGlzLCAoZnVuY3Rpb24gKCkgeyAndXNlIHN0cmljdCc7XG5cblx0dmFyIGdsb2JhbHMgPSBmdW5jdGlvbihkZWZzKSB7XG5cdCAgZGVmcygnRVBTRzo0MzI2JywgXCIrdGl0bGU9V0dTIDg0IChsb25nL2xhdCkgK3Byb2o9bG9uZ2xhdCArZWxscHM9V0dTODQgK2RhdHVtPVdHUzg0ICt1bml0cz1kZWdyZWVzXCIpO1xuXHQgIGRlZnMoJ0VQU0c6NDI2OScsIFwiK3RpdGxlPU5BRDgzIChsb25nL2xhdCkgK3Byb2o9bG9uZ2xhdCArYT02Mzc4MTM3LjAgK2I9NjM1Njc1Mi4zMTQxNDAzNiArZWxscHM9R1JTODAgK2RhdHVtPU5BRDgzICt1bml0cz1kZWdyZWVzXCIpO1xuXHQgIGRlZnMoJ0VQU0c6Mzg1NycsIFwiK3RpdGxlPVdHUyA4NCAvIFBzZXVkby1NZXJjYXRvciArcHJvaj1tZXJjICthPTYzNzgxMzcgK2I9NjM3ODEzNyArbGF0X3RzPTAuMCArbG9uXzA9MC4wICt4XzA9MC4wICt5XzA9MCAraz0xLjAgK3VuaXRzPW0gK25hZGdyaWRzPUBudWxsICtub19kZWZzXCIpO1xuXG5cdCAgZGVmcy5XR1M4NCA9IGRlZnNbJ0VQU0c6NDMyNiddO1xuXHQgIGRlZnNbJ0VQU0c6Mzc4NSddID0gZGVmc1snRVBTRzozODU3J107IC8vIG1haW50YWluIGJhY2t3YXJkIGNvbXBhdCwgb2ZmaWNpYWwgY29kZSBpcyAzODU3XG5cdCAgZGVmcy5HT09HTEUgPSBkZWZzWydFUFNHOjM4NTcnXTtcblx0ICBkZWZzWydFUFNHOjkwMDkxMyddID0gZGVmc1snRVBTRzozODU3J107XG5cdCAgZGVmc1snRVBTRzoxMDIxMTMnXSA9IGRlZnNbJ0VQU0c6Mzg1NyddO1xuXHR9O1xuXG5cdHZhciBQSkRfM1BBUkFNID0gMTtcblx0dmFyIFBKRF83UEFSQU0gPSAyO1xuXHR2YXIgUEpEX1dHUzg0ID0gNDsgLy8gV0dTODQgb3IgZXF1aXZhbGVudFxuXHR2YXIgUEpEX05PREFUVU0gPSA1OyAvLyBXR1M4NCBvciBlcXVpdmFsZW50XG5cdHZhciBTRUNfVE9fUkFEID0gNC44NDgxMzY4MTEwOTUzNTk5MzU4OTkxNDEwMjM1N2UtNjtcblx0dmFyIEhBTEZfUEkgPSBNYXRoLlBJLzI7XG5cdC8vIGVsbGlwb2lkIHBqX3NldF9lbGwuY1xuXHR2YXIgU0lYVEggPSAwLjE2NjY2NjY2NjY2NjY2NjY2Njc7XG5cdC8qIDEvNiAqL1xuXHR2YXIgUkE0ID0gMC4wNDcyMjIyMjIyMjIyMjIyMjIyMjtcblx0LyogMTcvMzYwICovXG5cdHZhciBSQTYgPSAwLjAyMjE1NjA4NDY1NjA4NDY1NjA4O1xuXHR2YXIgRVBTTE4gPSAodHlwZW9mIE51bWJlci5FUFNJTE9OID09PSAndW5kZWZpbmVkJykgPyAxLjBlLTEwIDogTnVtYmVyLkVQU0lMT047XG5cdHZhciBEMlIgPSAwLjAxNzQ1MzI5MjUxOTk0MzI5NTc3O1xuXHR2YXIgUjJEID0gNTcuMjk1Nzc5NTEzMDgyMzIwODg7XG5cdHZhciBGT1JUUEkgPSBNYXRoLlBJLzQ7XG5cdHZhciBUV09fUEkgPSBNYXRoLlBJICogMjtcblx0Ly8gU1BJIGlzIHNsaWdodGx5IGdyZWF0ZXIgdGhhbiBNYXRoLlBJLCBzbyB2YWx1ZXMgdGhhdCBleGNlZWQgdGhlIC0xODAuLjE4MFxuXHQvLyBkZWdyZWUgcmFuZ2UgYnkgYSB0aW55IGFtb3VudCBkb24ndCBnZXQgd3JhcHBlZC4gVGhpcyBwcmV2ZW50cyBwb2ludHMgdGhhdFxuXHQvLyBoYXZlIGRyaWZ0ZWQgZnJvbSB0aGVpciBvcmlnaW5hbCBsb2NhdGlvbiBhbG9uZyB0aGUgMTgwdGggbWVyaWRpYW4gKGR1ZSB0b1xuXHQvLyBmbG9hdGluZyBwb2ludCBlcnJvcikgZnJvbSBjaGFuZ2luZyB0aGVpciBzaWduLlxuXHR2YXIgU1BJID0gMy4xNDE1OTI2NTM1OTtcblxuXHR2YXIgZXhwb3J0cyQxID0ge307XG5cdGV4cG9ydHMkMS5ncmVlbndpY2ggPSAwLjA7IC8vXCIwZEVcIixcblx0ZXhwb3J0cyQxLmxpc2JvbiA9IC05LjEzMTkwNjExMTExMTsgLy9cIjlkMDcnNTQuODYyXFxcIldcIixcblx0ZXhwb3J0cyQxLnBhcmlzID0gMi4zMzcyMjkxNjY2Njc7IC8vXCIyZDIwJzE0LjAyNVxcXCJFXCIsXG5cdGV4cG9ydHMkMS5ib2dvdGEgPSAtNzQuMDgwOTE2NjY2NjY3OyAvL1wiNzRkMDQnNTEuM1xcXCJXXCIsXG5cdGV4cG9ydHMkMS5tYWRyaWQgPSAtMy42ODc5Mzg4ODg4ODk7IC8vXCIzZDQxJzE2LjU4XFxcIldcIixcblx0ZXhwb3J0cyQxLnJvbWUgPSAxMi40NTIzMzMzMzMzMzM7IC8vXCIxMmQyNyc4LjRcXFwiRVwiLFxuXHRleHBvcnRzJDEuYmVybiA9IDcuNDM5NTgzMzMzMzMzOyAvL1wiN2QyNicyMi41XFxcIkVcIixcblx0ZXhwb3J0cyQxLmpha2FydGEgPSAxMDYuODA3NzE5NDQ0NDQ0OyAvL1wiMTA2ZDQ4JzI3Ljc5XFxcIkVcIixcblx0ZXhwb3J0cyQxLmZlcnJvID0gLTE3LjY2NjY2NjY2NjY2NzsgLy9cIjE3ZDQwJ1dcIixcblx0ZXhwb3J0cyQxLmJydXNzZWxzID0gNC4zNjc5NzU7IC8vXCI0ZDIyJzQuNzFcXFwiRVwiLFxuXHRleHBvcnRzJDEuc3RvY2tob2xtID0gMTguMDU4Mjc3Nzc3Nzc4OyAvL1wiMThkMycyOS44XFxcIkVcIixcblx0ZXhwb3J0cyQxLmF0aGVucyA9IDIzLjcxNjMzNzU7IC8vXCIyM2Q0Mic1OC44MTVcXFwiRVwiLFxuXHRleHBvcnRzJDEub3NsbyA9IDEwLjcyMjkxNjY2NjY2NzsgLy9cIjEwZDQzJzIyLjVcXFwiRVwiXG5cblx0dmFyIHVuaXRzID0ge1xuXHQgIGZ0OiB7dG9fbWV0ZXI6IDAuMzA0OH0sXG5cdCAgJ3VzLWZ0Jzoge3RvX21ldGVyOiAxMjAwIC8gMzkzN31cblx0fTtcblxuXHR2YXIgaWdub3JlZENoYXIgPSAvW1xcc19cXC1cXC9cXChcXCldL2c7XG5cdGZ1bmN0aW9uIG1hdGNoKG9iaiwga2V5KSB7XG5cdCAgaWYgKG9ialtrZXldKSB7XG5cdCAgICByZXR1cm4gb2JqW2tleV07XG5cdCAgfVxuXHQgIHZhciBrZXlzID0gT2JqZWN0LmtleXMob2JqKTtcblx0ICB2YXIgbGtleSA9IGtleS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoaWdub3JlZENoYXIsICcnKTtcblx0ICB2YXIgaSA9IC0xO1xuXHQgIHZhciB0ZXN0a2V5LCBwcm9jZXNzZWRLZXk7XG5cdCAgd2hpbGUgKCsraSA8IGtleXMubGVuZ3RoKSB7XG5cdCAgICB0ZXN0a2V5ID0ga2V5c1tpXTtcblx0ICAgIHByb2Nlc3NlZEtleSA9IHRlc3RrZXkudG9Mb3dlckNhc2UoKS5yZXBsYWNlKGlnbm9yZWRDaGFyLCAnJyk7XG5cdCAgICBpZiAocHJvY2Vzc2VkS2V5ID09PSBsa2V5KSB7XG5cdCAgICAgIHJldHVybiBvYmpbdGVzdGtleV07XG5cdCAgICB9XG5cdCAgfVxuXHR9XG5cblx0dmFyIHBhcnNlUHJvaiA9IGZ1bmN0aW9uKGRlZkRhdGEpIHtcblx0ICB2YXIgc2VsZiA9IHt9O1xuXHQgIHZhciBwYXJhbU9iaiA9IGRlZkRhdGEuc3BsaXQoJysnKS5tYXAoZnVuY3Rpb24odikge1xuXHQgICAgcmV0dXJuIHYudHJpbSgpO1xuXHQgIH0pLmZpbHRlcihmdW5jdGlvbihhKSB7XG5cdCAgICByZXR1cm4gYTtcblx0ICB9KS5yZWR1Y2UoZnVuY3Rpb24ocCwgYSkge1xuXHQgICAgdmFyIHNwbGl0ID0gYS5zcGxpdCgnPScpO1xuXHQgICAgc3BsaXQucHVzaCh0cnVlKTtcblx0ICAgIHBbc3BsaXRbMF0udG9Mb3dlckNhc2UoKV0gPSBzcGxpdFsxXTtcblx0ICAgIHJldHVybiBwO1xuXHQgIH0sIHt9KTtcblx0ICB2YXIgcGFyYW1OYW1lLCBwYXJhbVZhbCwgcGFyYW1PdXRuYW1lO1xuXHQgIHZhciBwYXJhbXMgPSB7XG5cdCAgICBwcm9qOiAncHJvak5hbWUnLFxuXHQgICAgZGF0dW06ICdkYXR1bUNvZGUnLFxuXHQgICAgcmY6IGZ1bmN0aW9uKHYpIHtcblx0ICAgICAgc2VsZi5yZiA9IHBhcnNlRmxvYXQodik7XG5cdCAgICB9LFxuXHQgICAgbGF0XzA6IGZ1bmN0aW9uKHYpIHtcblx0ICAgICAgc2VsZi5sYXQwID0gdiAqIEQyUjtcblx0ICAgIH0sXG5cdCAgICBsYXRfMTogZnVuY3Rpb24odikge1xuXHQgICAgICBzZWxmLmxhdDEgPSB2ICogRDJSO1xuXHQgICAgfSxcblx0ICAgIGxhdF8yOiBmdW5jdGlvbih2KSB7XG5cdCAgICAgIHNlbGYubGF0MiA9IHYgKiBEMlI7XG5cdCAgICB9LFxuXHQgICAgbGF0X3RzOiBmdW5jdGlvbih2KSB7XG5cdCAgICAgIHNlbGYubGF0X3RzID0gdiAqIEQyUjtcblx0ICAgIH0sXG5cdCAgICBsb25fMDogZnVuY3Rpb24odikge1xuXHQgICAgICBzZWxmLmxvbmcwID0gdiAqIEQyUjtcblx0ICAgIH0sXG5cdCAgICBsb25fMTogZnVuY3Rpb24odikge1xuXHQgICAgICBzZWxmLmxvbmcxID0gdiAqIEQyUjtcblx0ICAgIH0sXG5cdCAgICBsb25fMjogZnVuY3Rpb24odikge1xuXHQgICAgICBzZWxmLmxvbmcyID0gdiAqIEQyUjtcblx0ICAgIH0sXG5cdCAgICBhbHBoYTogZnVuY3Rpb24odikge1xuXHQgICAgICBzZWxmLmFscGhhID0gcGFyc2VGbG9hdCh2KSAqIEQyUjtcblx0ICAgIH0sXG5cdCAgICBsb25jOiBmdW5jdGlvbih2KSB7XG5cdCAgICAgIHNlbGYubG9uZ2MgPSB2ICogRDJSO1xuXHQgICAgfSxcblx0ICAgIHhfMDogZnVuY3Rpb24odikge1xuXHQgICAgICBzZWxmLngwID0gcGFyc2VGbG9hdCh2KTtcblx0ICAgIH0sXG5cdCAgICB5XzA6IGZ1bmN0aW9uKHYpIHtcblx0ICAgICAgc2VsZi55MCA9IHBhcnNlRmxvYXQodik7XG5cdCAgICB9LFxuXHQgICAga18wOiBmdW5jdGlvbih2KSB7XG5cdCAgICAgIHNlbGYuazAgPSBwYXJzZUZsb2F0KHYpO1xuXHQgICAgfSxcblx0ICAgIGs6IGZ1bmN0aW9uKHYpIHtcblx0ICAgICAgc2VsZi5rMCA9IHBhcnNlRmxvYXQodik7XG5cdCAgICB9LFxuXHQgICAgYTogZnVuY3Rpb24odikge1xuXHQgICAgICBzZWxmLmEgPSBwYXJzZUZsb2F0KHYpO1xuXHQgICAgfSxcblx0ICAgIGI6IGZ1bmN0aW9uKHYpIHtcblx0ICAgICAgc2VsZi5iID0gcGFyc2VGbG9hdCh2KTtcblx0ICAgIH0sXG5cdCAgICByX2E6IGZ1bmN0aW9uKCkge1xuXHQgICAgICBzZWxmLlJfQSA9IHRydWU7XG5cdCAgICB9LFxuXHQgICAgem9uZTogZnVuY3Rpb24odikge1xuXHQgICAgICBzZWxmLnpvbmUgPSBwYXJzZUludCh2LCAxMCk7XG5cdCAgICB9LFxuXHQgICAgc291dGg6IGZ1bmN0aW9uKCkge1xuXHQgICAgICBzZWxmLnV0bVNvdXRoID0gdHJ1ZTtcblx0ICAgIH0sXG5cdCAgICB0b3dnczg0OiBmdW5jdGlvbih2KSB7XG5cdCAgICAgIHNlbGYuZGF0dW1fcGFyYW1zID0gdi5zcGxpdChcIixcIikubWFwKGZ1bmN0aW9uKGEpIHtcblx0ICAgICAgICByZXR1cm4gcGFyc2VGbG9hdChhKTtcblx0ICAgICAgfSk7XG5cdCAgICB9LFxuXHQgICAgdG9fbWV0ZXI6IGZ1bmN0aW9uKHYpIHtcblx0ICAgICAgc2VsZi50b19tZXRlciA9IHBhcnNlRmxvYXQodik7XG5cdCAgICB9LFxuXHQgICAgdW5pdHM6IGZ1bmN0aW9uKHYpIHtcblx0ICAgICAgc2VsZi51bml0cyA9IHY7XG5cdCAgICAgIHZhciB1bml0ID0gbWF0Y2godW5pdHMsIHYpO1xuXHQgICAgICBpZiAodW5pdCkge1xuXHQgICAgICAgIHNlbGYudG9fbWV0ZXIgPSB1bml0LnRvX21ldGVyO1xuXHQgICAgICB9XG5cdCAgICB9LFxuXHQgICAgZnJvbV9ncmVlbndpY2g6IGZ1bmN0aW9uKHYpIHtcblx0ICAgICAgc2VsZi5mcm9tX2dyZWVud2ljaCA9IHYgKiBEMlI7XG5cdCAgICB9LFxuXHQgICAgcG06IGZ1bmN0aW9uKHYpIHtcblx0ICAgICAgdmFyIHBtID0gbWF0Y2goZXhwb3J0cyQxLCB2KTtcblx0ICAgICAgc2VsZi5mcm9tX2dyZWVud2ljaCA9IChwbSA/IHBtIDogcGFyc2VGbG9hdCh2KSkgKiBEMlI7XG5cdCAgICB9LFxuXHQgICAgbmFkZ3JpZHM6IGZ1bmN0aW9uKHYpIHtcblx0ICAgICAgaWYgKHYgPT09ICdAbnVsbCcpIHtcblx0ICAgICAgICBzZWxmLmRhdHVtQ29kZSA9ICdub25lJztcblx0ICAgICAgfVxuXHQgICAgICBlbHNlIHtcblx0ICAgICAgICBzZWxmLm5hZGdyaWRzID0gdjtcblx0ICAgICAgfVxuXHQgICAgfSxcblx0ICAgIGF4aXM6IGZ1bmN0aW9uKHYpIHtcblx0ICAgICAgdmFyIGxlZ2FsQXhpcyA9IFwiZXduc3VkXCI7XG5cdCAgICAgIGlmICh2Lmxlbmd0aCA9PT0gMyAmJiBsZWdhbEF4aXMuaW5kZXhPZih2LnN1YnN0cigwLCAxKSkgIT09IC0xICYmIGxlZ2FsQXhpcy5pbmRleE9mKHYuc3Vic3RyKDEsIDEpKSAhPT0gLTEgJiYgbGVnYWxBeGlzLmluZGV4T2Yodi5zdWJzdHIoMiwgMSkpICE9PSAtMSkge1xuXHQgICAgICAgIHNlbGYuYXhpcyA9IHY7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICB9O1xuXHQgIGZvciAocGFyYW1OYW1lIGluIHBhcmFtT2JqKSB7XG5cdCAgICBwYXJhbVZhbCA9IHBhcmFtT2JqW3BhcmFtTmFtZV07XG5cdCAgICBpZiAocGFyYW1OYW1lIGluIHBhcmFtcykge1xuXHQgICAgICBwYXJhbU91dG5hbWUgPSBwYXJhbXNbcGFyYW1OYW1lXTtcblx0ICAgICAgaWYgKHR5cGVvZiBwYXJhbU91dG5hbWUgPT09ICdmdW5jdGlvbicpIHtcblx0ICAgICAgICBwYXJhbU91dG5hbWUocGFyYW1WYWwpO1xuXHQgICAgICB9XG5cdCAgICAgIGVsc2Uge1xuXHQgICAgICAgIHNlbGZbcGFyYW1PdXRuYW1lXSA9IHBhcmFtVmFsO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgICBlbHNlIHtcblx0ICAgICAgc2VsZltwYXJhbU5hbWVdID0gcGFyYW1WYWw7XG5cdCAgICB9XG5cdCAgfVxuXHQgIGlmKHR5cGVvZiBzZWxmLmRhdHVtQ29kZSA9PT0gJ3N0cmluZycgJiYgc2VsZi5kYXR1bUNvZGUgIT09IFwiV0dTODRcIil7XG5cdCAgICBzZWxmLmRhdHVtQ29kZSA9IHNlbGYuZGF0dW1Db2RlLnRvTG93ZXJDYXNlKCk7XG5cdCAgfVxuXHQgIHJldHVybiBzZWxmO1xuXHR9O1xuXG5cdHZhciBORVVUUkFMID0gMTtcblx0dmFyIEtFWVdPUkQgPSAyO1xuXHR2YXIgTlVNQkVSID0gMztcblx0dmFyIFFVT1RFRCA9IDQ7XG5cdHZhciBBRlRFUlFVT1RFID0gNTtcblx0dmFyIEVOREVEID0gLTE7XG5cdHZhciB3aGl0ZXNwYWNlID0gL1xccy87XG5cdHZhciBsYXRpbiA9IC9bQS1aYS16XS87XG5cdHZhciBrZXl3b3JkID0gL1tBLVphLXo4NF0vO1xuXHR2YXIgZW5kVGhpbmdzID0gL1ssXFxdXS87XG5cdHZhciBkaWdldHMgPSAvW1xcZFxcLkVcXC1cXCtdLztcblx0Ly8gY29uc3QgaWdub3JlZENoYXIgPSAvW1xcc19cXC1cXC9cXChcXCldL2c7XG5cdGZ1bmN0aW9uIFBhcnNlcih0ZXh0KSB7XG5cdCAgaWYgKHR5cGVvZiB0ZXh0ICE9PSAnc3RyaW5nJykge1xuXHQgICAgdGhyb3cgbmV3IEVycm9yKCdub3QgYSBzdHJpbmcnKTtcblx0ICB9XG5cdCAgdGhpcy50ZXh0ID0gdGV4dC50cmltKCk7XG5cdCAgdGhpcy5sZXZlbCA9IDA7XG5cdCAgdGhpcy5wbGFjZSA9IDA7XG5cdCAgdGhpcy5yb290ID0gbnVsbDtcblx0ICB0aGlzLnN0YWNrID0gW107XG5cdCAgdGhpcy5jdXJyZW50T2JqZWN0ID0gbnVsbDtcblx0ICB0aGlzLnN0YXRlID0gTkVVVFJBTDtcblx0fVxuXHRQYXJzZXIucHJvdG90eXBlLnJlYWRDaGFyaWN0ZXIgPSBmdW5jdGlvbigpIHtcblx0ICB2YXIgY2hhciA9IHRoaXMudGV4dFt0aGlzLnBsYWNlKytdO1xuXHQgIGlmICh0aGlzLnN0YXRlICE9PSBRVU9URUQpIHtcblx0ICAgIHdoaWxlICh3aGl0ZXNwYWNlLnRlc3QoY2hhcikpIHtcblx0ICAgICAgaWYgKHRoaXMucGxhY2UgPj0gdGhpcy50ZXh0Lmxlbmd0aCkge1xuXHQgICAgICAgIHJldHVybjtcblx0ICAgICAgfVxuXHQgICAgICBjaGFyID0gdGhpcy50ZXh0W3RoaXMucGxhY2UrK107XG5cdCAgICB9XG5cdCAgfVxuXHQgIHN3aXRjaCAodGhpcy5zdGF0ZSkge1xuXHQgICAgY2FzZSBORVVUUkFMOlxuXHQgICAgICByZXR1cm4gdGhpcy5uZXV0cmFsKGNoYXIpO1xuXHQgICAgY2FzZSBLRVlXT1JEOlxuXHQgICAgICByZXR1cm4gdGhpcy5rZXl3b3JkKGNoYXIpXG5cdCAgICBjYXNlIFFVT1RFRDpcblx0ICAgICAgcmV0dXJuIHRoaXMucXVvdGVkKGNoYXIpO1xuXHQgICAgY2FzZSBBRlRFUlFVT1RFOlxuXHQgICAgICByZXR1cm4gdGhpcy5hZnRlcnF1b3RlKGNoYXIpO1xuXHQgICAgY2FzZSBOVU1CRVI6XG5cdCAgICAgIHJldHVybiB0aGlzLm51bWJlcihjaGFyKTtcblx0ICAgIGNhc2UgRU5ERUQ6XG5cdCAgICAgIHJldHVybjtcblx0ICB9XG5cdH07XG5cdFBhcnNlci5wcm90b3R5cGUuYWZ0ZXJxdW90ZSA9IGZ1bmN0aW9uKGNoYXIpIHtcblx0ICBpZiAoY2hhciA9PT0gJ1wiJykge1xuXHQgICAgdGhpcy53b3JkICs9ICdcIic7XG5cdCAgICB0aGlzLnN0YXRlID0gUVVPVEVEO1xuXHQgICAgcmV0dXJuO1xuXHQgIH1cblx0ICBpZiAoZW5kVGhpbmdzLnRlc3QoY2hhcikpIHtcblx0ICAgIHRoaXMud29yZCA9IHRoaXMud29yZC50cmltKCk7XG5cdCAgICB0aGlzLmFmdGVySXRlbShjaGFyKTtcblx0ICAgIHJldHVybjtcblx0ICB9XG5cdCAgdGhyb3cgbmV3IEVycm9yKCdoYXZuXFwndCBoYW5kbGVkIFwiJyArY2hhciArICdcIiBpbiBhZnRlcnF1b3RlIHlldCwgaW5kZXggJyArIHRoaXMucGxhY2UpO1xuXHR9O1xuXHRQYXJzZXIucHJvdG90eXBlLmFmdGVySXRlbSA9IGZ1bmN0aW9uKGNoYXIpIHtcblx0ICBpZiAoY2hhciA9PT0gJywnKSB7XG5cdCAgICBpZiAodGhpcy53b3JkICE9PSBudWxsKSB7XG5cdCAgICAgIHRoaXMuY3VycmVudE9iamVjdC5wdXNoKHRoaXMud29yZCk7XG5cdCAgICB9XG5cdCAgICB0aGlzLndvcmQgPSBudWxsO1xuXHQgICAgdGhpcy5zdGF0ZSA9IE5FVVRSQUw7XG5cdCAgICByZXR1cm47XG5cdCAgfVxuXHQgIGlmIChjaGFyID09PSAnXScpIHtcblx0ICAgIHRoaXMubGV2ZWwtLTtcblx0ICAgIGlmICh0aGlzLndvcmQgIT09IG51bGwpIHtcblx0ICAgICAgdGhpcy5jdXJyZW50T2JqZWN0LnB1c2godGhpcy53b3JkKTtcblx0ICAgICAgdGhpcy53b3JkID0gbnVsbDtcblx0ICAgIH1cblx0ICAgIHRoaXMuc3RhdGUgPSBORVVUUkFMO1xuXHQgICAgdGhpcy5jdXJyZW50T2JqZWN0ID0gdGhpcy5zdGFjay5wb3AoKTtcblx0ICAgIGlmICghdGhpcy5jdXJyZW50T2JqZWN0KSB7XG5cdCAgICAgIHRoaXMuc3RhdGUgPSBFTkRFRDtcblx0ICAgIH1cblxuXHQgICAgcmV0dXJuO1xuXHQgIH1cblx0fTtcblx0UGFyc2VyLnByb3RvdHlwZS5udW1iZXIgPSBmdW5jdGlvbihjaGFyKSB7XG5cdCAgaWYgKGRpZ2V0cy50ZXN0KGNoYXIpKSB7XG5cdCAgICB0aGlzLndvcmQgKz0gY2hhcjtcblx0ICAgIHJldHVybjtcblx0ICB9XG5cdCAgaWYgKGVuZFRoaW5ncy50ZXN0KGNoYXIpKSB7XG5cdCAgICB0aGlzLndvcmQgPSBwYXJzZUZsb2F0KHRoaXMud29yZCk7XG5cdCAgICB0aGlzLmFmdGVySXRlbShjaGFyKTtcblx0ICAgIHJldHVybjtcblx0ICB9XG5cdCAgdGhyb3cgbmV3IEVycm9yKCdoYXZuXFwndCBoYW5kbGVkIFwiJyArY2hhciArICdcIiBpbiBudW1iZXIgeWV0LCBpbmRleCAnICsgdGhpcy5wbGFjZSk7XG5cdH07XG5cdFBhcnNlci5wcm90b3R5cGUucXVvdGVkID0gZnVuY3Rpb24oY2hhcikge1xuXHQgIGlmIChjaGFyID09PSAnXCInKSB7XG5cdCAgICB0aGlzLnN0YXRlID0gQUZURVJRVU9URTtcblx0ICAgIHJldHVybjtcblx0ICB9XG5cdCAgdGhpcy53b3JkICs9IGNoYXI7XG5cdCAgcmV0dXJuO1xuXHR9O1xuXHRQYXJzZXIucHJvdG90eXBlLmtleXdvcmQgPSBmdW5jdGlvbihjaGFyKSB7XG5cdCAgaWYgKGtleXdvcmQudGVzdChjaGFyKSkge1xuXHQgICAgdGhpcy53b3JkICs9IGNoYXI7XG5cdCAgICByZXR1cm47XG5cdCAgfVxuXHQgIGlmIChjaGFyID09PSAnWycpIHtcblx0ICAgIHZhciBuZXdPYmplY3RzID0gW107XG5cdCAgICBuZXdPYmplY3RzLnB1c2godGhpcy53b3JkKTtcblx0ICAgIHRoaXMubGV2ZWwrKztcblx0ICAgIGlmICh0aGlzLnJvb3QgPT09IG51bGwpIHtcblx0ICAgICAgdGhpcy5yb290ID0gbmV3T2JqZWN0cztcblx0ICAgIH0gZWxzZSB7XG5cdCAgICAgIHRoaXMuY3VycmVudE9iamVjdC5wdXNoKG5ld09iamVjdHMpO1xuXHQgICAgfVxuXHQgICAgdGhpcy5zdGFjay5wdXNoKHRoaXMuY3VycmVudE9iamVjdCk7XG5cdCAgICB0aGlzLmN1cnJlbnRPYmplY3QgPSBuZXdPYmplY3RzO1xuXHQgICAgdGhpcy5zdGF0ZSA9IE5FVVRSQUw7XG5cdCAgICByZXR1cm47XG5cdCAgfVxuXHQgIGlmIChlbmRUaGluZ3MudGVzdChjaGFyKSkge1xuXHQgICAgdGhpcy5hZnRlckl0ZW0oY2hhcik7XG5cdCAgICByZXR1cm47XG5cdCAgfVxuXHQgIHRocm93IG5ldyBFcnJvcignaGF2blxcJ3QgaGFuZGxlZCBcIicgK2NoYXIgKyAnXCIgaW4ga2V5d29yZCB5ZXQsIGluZGV4ICcgKyB0aGlzLnBsYWNlKTtcblx0fTtcblx0UGFyc2VyLnByb3RvdHlwZS5uZXV0cmFsID0gZnVuY3Rpb24oY2hhcikge1xuXHQgIGlmIChsYXRpbi50ZXN0KGNoYXIpKSB7XG5cdCAgICB0aGlzLndvcmQgPSBjaGFyO1xuXHQgICAgdGhpcy5zdGF0ZSA9IEtFWVdPUkQ7XG5cdCAgICByZXR1cm47XG5cdCAgfVxuXHQgIGlmIChjaGFyID09PSAnXCInKSB7XG5cdCAgICB0aGlzLndvcmQgPSAnJztcblx0ICAgIHRoaXMuc3RhdGUgPSBRVU9URUQ7XG5cdCAgICByZXR1cm47XG5cdCAgfVxuXHQgIGlmIChkaWdldHMudGVzdChjaGFyKSkge1xuXHQgICAgdGhpcy53b3JkID0gY2hhcjtcblx0ICAgIHRoaXMuc3RhdGUgPSBOVU1CRVI7XG5cdCAgICByZXR1cm47XG5cdCAgfVxuXHQgIGlmIChlbmRUaGluZ3MudGVzdChjaGFyKSkge1xuXHQgICAgdGhpcy5hZnRlckl0ZW0oY2hhcik7XG5cdCAgICByZXR1cm47XG5cdCAgfVxuXHQgIHRocm93IG5ldyBFcnJvcignaGF2blxcJ3QgaGFuZGxlZCBcIicgK2NoYXIgKyAnXCIgaW4gbmV1dHJhbCB5ZXQsIGluZGV4ICcgKyB0aGlzLnBsYWNlKTtcblx0fTtcblx0UGFyc2VyLnByb3RvdHlwZS5vdXRwdXQgPSBmdW5jdGlvbigpIHtcblx0ICB3aGlsZSAodGhpcy5wbGFjZSA8IHRoaXMudGV4dC5sZW5ndGgpIHtcblx0ICAgIHRoaXMucmVhZENoYXJpY3RlcigpO1xuXHQgIH1cblx0ICBpZiAodGhpcy5zdGF0ZSA9PT0gRU5ERUQpIHtcblx0ICAgIHJldHVybiB0aGlzLnJvb3Q7XG5cdCAgfVxuXHQgIHRocm93IG5ldyBFcnJvcigndW5hYmxlIHRvIHBhcnNlIHN0cmluZyBcIicgK3RoaXMudGV4dCArICdcIi4gU3RhdGUgaXMgJyArIHRoaXMuc3RhdGUpO1xuXHR9O1xuXG5cdGZ1bmN0aW9uIHBhcnNlU3RyaW5nKHR4dCkge1xuXHQgIHZhciBwYXJzZXIgPSBuZXcgUGFyc2VyKHR4dCk7XG5cdCAgcmV0dXJuIHBhcnNlci5vdXRwdXQoKTtcblx0fVxuXG5cdGZ1bmN0aW9uIG1hcGl0KG9iaiwga2V5LCB2YWx1ZSkge1xuXHQgIGlmIChBcnJheS5pc0FycmF5KGtleSkpIHtcblx0ICAgIHZhbHVlLnVuc2hpZnQoa2V5KTtcblx0ICAgIGtleSA9IG51bGw7XG5cdCAgfVxuXHQgIHZhciB0aGluZyA9IGtleSA/IHt9IDogb2JqO1xuXG5cdCAgdmFyIG91dCA9IHZhbHVlLnJlZHVjZShmdW5jdGlvbihuZXdPYmosIGl0ZW0pIHtcblx0ICAgIHNFeHByKGl0ZW0sIG5ld09iaik7XG5cdCAgICByZXR1cm4gbmV3T2JqXG5cdCAgfSwgdGhpbmcpO1xuXHQgIGlmIChrZXkpIHtcblx0ICAgIG9ialtrZXldID0gb3V0O1xuXHQgIH1cblx0fVxuXG5cdGZ1bmN0aW9uIHNFeHByKHYsIG9iaikge1xuXHQgIGlmICghQXJyYXkuaXNBcnJheSh2KSkge1xuXHQgICAgb2JqW3ZdID0gdHJ1ZTtcblx0ICAgIHJldHVybjtcblx0ICB9XG5cdCAgdmFyIGtleSA9IHYuc2hpZnQoKTtcblx0ICBpZiAoa2V5ID09PSAnUEFSQU1FVEVSJykge1xuXHQgICAga2V5ID0gdi5zaGlmdCgpO1xuXHQgIH1cblx0ICBpZiAodi5sZW5ndGggPT09IDEpIHtcblx0ICAgIGlmIChBcnJheS5pc0FycmF5KHZbMF0pKSB7XG5cdCAgICAgIG9ialtrZXldID0ge307XG5cdCAgICAgIHNFeHByKHZbMF0sIG9ialtrZXldKTtcblx0ICAgICAgcmV0dXJuO1xuXHQgICAgfVxuXHQgICAgb2JqW2tleV0gPSB2WzBdO1xuXHQgICAgcmV0dXJuO1xuXHQgIH1cblx0ICBpZiAoIXYubGVuZ3RoKSB7XG5cdCAgICBvYmpba2V5XSA9IHRydWU7XG5cdCAgICByZXR1cm47XG5cdCAgfVxuXHQgIGlmIChrZXkgPT09ICdUT1dHUzg0Jykge1xuXHQgICAgb2JqW2tleV0gPSB2O1xuXHQgICAgcmV0dXJuO1xuXHQgIH1cblx0ICBpZiAoIUFycmF5LmlzQXJyYXkoa2V5KSkge1xuXHQgICAgb2JqW2tleV0gPSB7fTtcblx0ICB9XG5cblx0ICB2YXIgaTtcblx0ICBzd2l0Y2ggKGtleSkge1xuXHQgICAgY2FzZSAnVU5JVCc6XG5cdCAgICBjYXNlICdQUklNRU0nOlxuXHQgICAgY2FzZSAnVkVSVF9EQVRVTSc6XG5cdCAgICAgIG9ialtrZXldID0ge1xuXHQgICAgICAgIG5hbWU6IHZbMF0udG9Mb3dlckNhc2UoKSxcblx0ICAgICAgICBjb252ZXJ0OiB2WzFdXG5cdCAgICAgIH07XG5cdCAgICAgIGlmICh2Lmxlbmd0aCA9PT0gMykge1xuXHQgICAgICAgIHNFeHByKHZbMl0sIG9ialtrZXldKTtcblx0ICAgICAgfVxuXHQgICAgICByZXR1cm47XG5cdCAgICBjYXNlICdTUEhFUk9JRCc6XG5cdCAgICBjYXNlICdFTExJUFNPSUQnOlxuXHQgICAgICBvYmpba2V5XSA9IHtcblx0ICAgICAgICBuYW1lOiB2WzBdLFxuXHQgICAgICAgIGE6IHZbMV0sXG5cdCAgICAgICAgcmY6IHZbMl1cblx0ICAgICAgfTtcblx0ICAgICAgaWYgKHYubGVuZ3RoID09PSA0KSB7XG5cdCAgICAgICAgc0V4cHIodlszXSwgb2JqW2tleV0pO1xuXHQgICAgICB9XG5cdCAgICAgIHJldHVybjtcblx0ICAgIGNhc2UgJ1BST0pFQ1RFRENSUyc6XG5cdCAgICBjYXNlICdQUk9KQ1JTJzpcblx0ICAgIGNhc2UgJ0dFT0dDUyc6XG5cdCAgICBjYXNlICdHRU9DQ1MnOlxuXHQgICAgY2FzZSAnUFJPSkNTJzpcblx0ICAgIGNhc2UgJ0xPQ0FMX0NTJzpcblx0ICAgIGNhc2UgJ0dFT0RDUlMnOlxuXHQgICAgY2FzZSAnR0VPREVUSUNDUlMnOlxuXHQgICAgY2FzZSAnR0VPREVUSUNEQVRVTSc6XG5cdCAgICBjYXNlICdFREFUVU0nOlxuXHQgICAgY2FzZSAnRU5HSU5FRVJJTkdEQVRVTSc6XG5cdCAgICBjYXNlICdWRVJUX0NTJzpcblx0ICAgIGNhc2UgJ1ZFUlRDUlMnOlxuXHQgICAgY2FzZSAnVkVSVElDQUxDUlMnOlxuXHQgICAgY2FzZSAnQ09NUERfQ1MnOlxuXHQgICAgY2FzZSAnQ09NUE9VTkRDUlMnOlxuXHQgICAgY2FzZSAnRU5HSU5FRVJJTkdDUlMnOlxuXHQgICAgY2FzZSAnRU5HQ1JTJzpcblx0ICAgIGNhc2UgJ0ZJVFRFRF9DUyc6XG5cdCAgICBjYXNlICdMT0NBTF9EQVRVTSc6XG5cdCAgICBjYXNlICdEQVRVTSc6XG5cdCAgICAgIHZbMF0gPSBbJ25hbWUnLCB2WzBdXTtcblx0ICAgICAgbWFwaXQob2JqLCBrZXksIHYpO1xuXHQgICAgICByZXR1cm47XG5cdCAgICBkZWZhdWx0OlxuXHQgICAgICBpID0gLTE7XG5cdCAgICAgIHdoaWxlICgrK2kgPCB2Lmxlbmd0aCkge1xuXHQgICAgICAgIGlmICghQXJyYXkuaXNBcnJheSh2W2ldKSkge1xuXHQgICAgICAgICAgcmV0dXJuIHNFeHByKHYsIG9ialtrZXldKTtcblx0ICAgICAgICB9XG5cdCAgICAgIH1cblx0ICAgICAgcmV0dXJuIG1hcGl0KG9iaiwga2V5LCB2KTtcblx0ICB9XG5cdH1cblxuXHR2YXIgRDJSJDEgPSAwLjAxNzQ1MzI5MjUxOTk0MzI5NTc3O1xuXHRmdW5jdGlvbiByZW5hbWUob2JqLCBwYXJhbXMpIHtcblx0ICB2YXIgb3V0TmFtZSA9IHBhcmFtc1swXTtcblx0ICB2YXIgaW5OYW1lID0gcGFyYW1zWzFdO1xuXHQgIGlmICghKG91dE5hbWUgaW4gb2JqKSAmJiAoaW5OYW1lIGluIG9iaikpIHtcblx0ICAgIG9ialtvdXROYW1lXSA9IG9ialtpbk5hbWVdO1xuXHQgICAgaWYgKHBhcmFtcy5sZW5ndGggPT09IDMpIHtcblx0ICAgICAgb2JqW291dE5hbWVdID0gcGFyYW1zWzJdKG9ialtvdXROYW1lXSk7XG5cdCAgICB9XG5cdCAgfVxuXHR9XG5cblx0ZnVuY3Rpb24gZDJyKGlucHV0KSB7XG5cdCAgcmV0dXJuIGlucHV0ICogRDJSJDE7XG5cdH1cblxuXHRmdW5jdGlvbiBjbGVhbldLVCh3a3QpIHtcblx0ICBpZiAod2t0LnR5cGUgPT09ICdHRU9HQ1MnKSB7XG5cdCAgICB3a3QucHJvak5hbWUgPSAnbG9uZ2xhdCc7XG5cdCAgfSBlbHNlIGlmICh3a3QudHlwZSA9PT0gJ0xPQ0FMX0NTJykge1xuXHQgICAgd2t0LnByb2pOYW1lID0gJ2lkZW50aXR5Jztcblx0ICAgIHdrdC5sb2NhbCA9IHRydWU7XG5cdCAgfSBlbHNlIHtcblx0ICAgIGlmICh0eXBlb2Ygd2t0LlBST0pFQ1RJT04gPT09ICdvYmplY3QnKSB7XG5cdCAgICAgIHdrdC5wcm9qTmFtZSA9IE9iamVjdC5rZXlzKHdrdC5QUk9KRUNUSU9OKVswXTtcblx0ICAgIH0gZWxzZSB7XG5cdCAgICAgIHdrdC5wcm9qTmFtZSA9IHdrdC5QUk9KRUNUSU9OO1xuXHQgICAgfVxuXHQgIH1cblx0ICBpZiAod2t0LlVOSVQpIHtcblx0ICAgIHdrdC51bml0cyA9IHdrdC5VTklULm5hbWUudG9Mb3dlckNhc2UoKTtcblx0ICAgIGlmICh3a3QudW5pdHMgPT09ICdtZXRyZScpIHtcblx0ICAgICAgd2t0LnVuaXRzID0gJ21ldGVyJztcblx0ICAgIH1cblx0ICAgIGlmICh3a3QuVU5JVC5jb252ZXJ0KSB7XG5cdCAgICAgIGlmICh3a3QudHlwZSA9PT0gJ0dFT0dDUycpIHtcblx0ICAgICAgICBpZiAod2t0LkRBVFVNICYmIHdrdC5EQVRVTS5TUEhFUk9JRCkge1xuXHQgICAgICAgICAgd2t0LnRvX21ldGVyID0gd2t0LlVOSVQuY29udmVydCp3a3QuREFUVU0uU1BIRVJPSUQuYTtcblx0ICAgICAgICB9XG5cdCAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgd2t0LnRvX21ldGVyID0gd2t0LlVOSVQuY29udmVydCwgMTA7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICB9XG5cdCAgdmFyIGdlb2djcyA9IHdrdC5HRU9HQ1M7XG5cdCAgaWYgKHdrdC50eXBlID09PSAnR0VPR0NTJykge1xuXHQgICAgZ2VvZ2NzID0gd2t0O1xuXHQgIH1cblx0ICBpZiAoZ2VvZ2NzKSB7XG5cdCAgICAvL2lmKHdrdC5HRU9HQ1MuUFJJTUVNJiZ3a3QuR0VPR0NTLlBSSU1FTS5jb252ZXJ0KXtcblx0ICAgIC8vICB3a3QuZnJvbV9ncmVlbndpY2g9d2t0LkdFT0dDUy5QUklNRU0uY29udmVydCpEMlI7XG5cdCAgICAvL31cblx0ICAgIGlmIChnZW9nY3MuREFUVU0pIHtcblx0ICAgICAgd2t0LmRhdHVtQ29kZSA9IGdlb2djcy5EQVRVTS5uYW1lLnRvTG93ZXJDYXNlKCk7XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICB3a3QuZGF0dW1Db2RlID0gZ2VvZ2NzLm5hbWUudG9Mb3dlckNhc2UoKTtcblx0ICAgIH1cblx0ICAgIGlmICh3a3QuZGF0dW1Db2RlLnNsaWNlKDAsIDIpID09PSAnZF8nKSB7XG5cdCAgICAgIHdrdC5kYXR1bUNvZGUgPSB3a3QuZGF0dW1Db2RlLnNsaWNlKDIpO1xuXHQgICAgfVxuXHQgICAgaWYgKHdrdC5kYXR1bUNvZGUgPT09ICduZXdfemVhbGFuZF9nZW9kZXRpY19kYXR1bV8xOTQ5JyB8fCB3a3QuZGF0dW1Db2RlID09PSAnbmV3X3plYWxhbmRfMTk0OScpIHtcblx0ICAgICAgd2t0LmRhdHVtQ29kZSA9ICduemdkNDknO1xuXHQgICAgfVxuXHQgICAgaWYgKHdrdC5kYXR1bUNvZGUgPT09ICd3Z3NfMTk4NCcpIHtcblx0ICAgICAgaWYgKHdrdC5QUk9KRUNUSU9OID09PSAnTWVyY2F0b3JfQXV4aWxpYXJ5X1NwaGVyZScpIHtcblx0ICAgICAgICB3a3Quc3BoZXJlID0gdHJ1ZTtcblx0ICAgICAgfVxuXHQgICAgICB3a3QuZGF0dW1Db2RlID0gJ3dnczg0Jztcblx0ICAgIH1cblx0ICAgIGlmICh3a3QuZGF0dW1Db2RlLnNsaWNlKC02KSA9PT0gJ19mZXJybycpIHtcblx0ICAgICAgd2t0LmRhdHVtQ29kZSA9IHdrdC5kYXR1bUNvZGUuc2xpY2UoMCwgLSA2KTtcblx0ICAgIH1cblx0ICAgIGlmICh3a3QuZGF0dW1Db2RlLnNsaWNlKC04KSA9PT0gJ19qYWthcnRhJykge1xuXHQgICAgICB3a3QuZGF0dW1Db2RlID0gd2t0LmRhdHVtQ29kZS5zbGljZSgwLCAtIDgpO1xuXHQgICAgfVxuXHQgICAgaWYgKH53a3QuZGF0dW1Db2RlLmluZGV4T2YoJ2JlbGdlJykpIHtcblx0ICAgICAgd2t0LmRhdHVtQ29kZSA9ICdybmI3Mic7XG5cdCAgICB9XG5cdCAgICBpZiAoZ2VvZ2NzLkRBVFVNICYmIGdlb2djcy5EQVRVTS5TUEhFUk9JRCkge1xuXHQgICAgICB3a3QuZWxscHMgPSBnZW9nY3MuREFUVU0uU1BIRVJPSUQubmFtZS5yZXBsYWNlKCdfMTknLCAnJykucmVwbGFjZSgvW0NjXWxhcmtlXFxfMTgvLCAnY2xyaycpO1xuXHQgICAgICBpZiAod2t0LmVsbHBzLnRvTG93ZXJDYXNlKCkuc2xpY2UoMCwgMTMpID09PSAnaW50ZXJuYXRpb25hbCcpIHtcblx0ICAgICAgICB3a3QuZWxscHMgPSAnaW50bCc7XG5cdCAgICAgIH1cblxuXHQgICAgICB3a3QuYSA9IGdlb2djcy5EQVRVTS5TUEhFUk9JRC5hO1xuXHQgICAgICB3a3QucmYgPSBwYXJzZUZsb2F0KGdlb2djcy5EQVRVTS5TUEhFUk9JRC5yZiwgMTApO1xuXHQgICAgfVxuXHQgICAgaWYgKH53a3QuZGF0dW1Db2RlLmluZGV4T2YoJ29zZ2JfMTkzNicpKSB7XG5cdCAgICAgIHdrdC5kYXR1bUNvZGUgPSAnb3NnYjM2Jztcblx0ICAgIH1cblx0ICB9XG5cdCAgaWYgKHdrdC5iICYmICFpc0Zpbml0ZSh3a3QuYikpIHtcblx0ICAgIHdrdC5iID0gd2t0LmE7XG5cdCAgfVxuXG5cdCAgZnVuY3Rpb24gdG9NZXRlcihpbnB1dCkge1xuXHQgICAgdmFyIHJhdGlvID0gd2t0LnRvX21ldGVyIHx8IDE7XG5cdCAgICByZXR1cm4gaW5wdXQgKiByYXRpbztcblx0ICB9XG5cdCAgdmFyIHJlbmFtZXIgPSBmdW5jdGlvbihhKSB7XG5cdCAgICByZXR1cm4gcmVuYW1lKHdrdCwgYSk7XG5cdCAgfTtcblx0ICB2YXIgbGlzdCA9IFtcblx0ICAgIFsnc3RhbmRhcmRfcGFyYWxsZWxfMScsICdTdGFuZGFyZF9QYXJhbGxlbF8xJ10sXG5cdCAgICBbJ3N0YW5kYXJkX3BhcmFsbGVsXzInLCAnU3RhbmRhcmRfUGFyYWxsZWxfMiddLFxuXHQgICAgWydmYWxzZV9lYXN0aW5nJywgJ0ZhbHNlX0Vhc3RpbmcnXSxcblx0ICAgIFsnZmFsc2Vfbm9ydGhpbmcnLCAnRmFsc2VfTm9ydGhpbmcnXSxcblx0ICAgIFsnY2VudHJhbF9tZXJpZGlhbicsICdDZW50cmFsX01lcmlkaWFuJ10sXG5cdCAgICBbJ2xhdGl0dWRlX29mX29yaWdpbicsICdMYXRpdHVkZV9PZl9PcmlnaW4nXSxcblx0ICAgIFsnbGF0aXR1ZGVfb2Zfb3JpZ2luJywgJ0NlbnRyYWxfUGFyYWxsZWwnXSxcblx0ICAgIFsnc2NhbGVfZmFjdG9yJywgJ1NjYWxlX0ZhY3RvciddLFxuXHQgICAgWydrMCcsICdzY2FsZV9mYWN0b3InXSxcblx0ICAgIFsnbGF0aXR1ZGVfb2ZfY2VudGVyJywgJ0xhdGl0dWRlX29mX2NlbnRlciddLFxuXHQgICAgWydsYXQwJywgJ2xhdGl0dWRlX29mX2NlbnRlcicsIGQycl0sXG5cdCAgICBbJ2xvbmdpdHVkZV9vZl9jZW50ZXInLCAnTG9uZ2l0dWRlX09mX0NlbnRlciddLFxuXHQgICAgWydsb25nYycsICdsb25naXR1ZGVfb2ZfY2VudGVyJywgZDJyXSxcblx0ICAgIFsneDAnLCAnZmFsc2VfZWFzdGluZycsIHRvTWV0ZXJdLFxuXHQgICAgWyd5MCcsICdmYWxzZV9ub3J0aGluZycsIHRvTWV0ZXJdLFxuXHQgICAgWydsb25nMCcsICdjZW50cmFsX21lcmlkaWFuJywgZDJyXSxcblx0ICAgIFsnbGF0MCcsICdsYXRpdHVkZV9vZl9vcmlnaW4nLCBkMnJdLFxuXHQgICAgWydsYXQwJywgJ3N0YW5kYXJkX3BhcmFsbGVsXzEnLCBkMnJdLFxuXHQgICAgWydsYXQxJywgJ3N0YW5kYXJkX3BhcmFsbGVsXzEnLCBkMnJdLFxuXHQgICAgWydsYXQyJywgJ3N0YW5kYXJkX3BhcmFsbGVsXzInLCBkMnJdLFxuXHQgICAgWydhbHBoYScsICdhemltdXRoJywgZDJyXSxcblx0ICAgIFsnc3JzQ29kZScsICduYW1lJ11cblx0ICBdO1xuXHQgIGxpc3QuZm9yRWFjaChyZW5hbWVyKTtcblx0ICBpZiAoIXdrdC5sb25nMCAmJiB3a3QubG9uZ2MgJiYgKHdrdC5wcm9qTmFtZSA9PT0gJ0FsYmVyc19Db25pY19FcXVhbF9BcmVhJyB8fCB3a3QucHJvak5hbWUgPT09ICdMYW1iZXJ0X0F6aW11dGhhbF9FcXVhbF9BcmVhJykpIHtcblx0ICAgIHdrdC5sb25nMCA9IHdrdC5sb25nYztcblx0ICB9XG5cdCAgaWYgKCF3a3QubGF0X3RzICYmIHdrdC5sYXQxICYmICh3a3QucHJvak5hbWUgPT09ICdTdGVyZW9ncmFwaGljX1NvdXRoX1BvbGUnIHx8IHdrdC5wcm9qTmFtZSA9PT0gJ1BvbGFyIFN0ZXJlb2dyYXBoaWMgKHZhcmlhbnQgQiknKSkge1xuXHQgICAgd2t0LmxhdDAgPSBkMnIod2t0LmxhdDEgPiAwID8gOTAgOiAtOTApO1xuXHQgICAgd2t0LmxhdF90cyA9IHdrdC5sYXQxO1xuXHQgIH1cblx0fVxuXHR2YXIgd2t0ID0gZnVuY3Rpb24od2t0KSB7XG5cdCAgdmFyIGxpc3AgPSBwYXJzZVN0cmluZyh3a3QpO1xuXHQgIHZhciB0eXBlID0gbGlzcC5zaGlmdCgpO1xuXHQgIHZhciBuYW1lID0gbGlzcC5zaGlmdCgpO1xuXHQgIGxpc3AudW5zaGlmdChbJ25hbWUnLCBuYW1lXSk7XG5cdCAgbGlzcC51bnNoaWZ0KFsndHlwZScsIHR5cGVdKTtcblx0ICB2YXIgb2JqID0ge307XG5cdCAgc0V4cHIobGlzcCwgb2JqKTtcblx0ICBjbGVhbldLVChvYmopO1xuXHQgIHJldHVybiBvYmo7XG5cdH07XG5cblx0ZnVuY3Rpb24gZGVmcyhuYW1lKSB7XG5cdCAgLypnbG9iYWwgY29uc29sZSovXG5cdCAgdmFyIHRoYXQgPSB0aGlzO1xuXHQgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAyKSB7XG5cdCAgICB2YXIgZGVmID0gYXJndW1lbnRzWzFdO1xuXHQgICAgaWYgKHR5cGVvZiBkZWYgPT09ICdzdHJpbmcnKSB7XG5cdCAgICAgIGlmIChkZWYuY2hhckF0KDApID09PSAnKycpIHtcblx0ICAgICAgICBkZWZzW25hbWVdID0gcGFyc2VQcm9qKGFyZ3VtZW50c1sxXSk7XG5cdCAgICAgIH1cblx0ICAgICAgZWxzZSB7XG5cdCAgICAgICAgZGVmc1tuYW1lXSA9IHdrdChhcmd1bWVudHNbMV0pO1xuXHQgICAgICB9XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICBkZWZzW25hbWVdID0gZGVmO1xuXHQgICAgfVxuXHQgIH1cblx0ICBlbHNlIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAxKSB7XG5cdCAgICBpZiAoQXJyYXkuaXNBcnJheShuYW1lKSkge1xuXHQgICAgICByZXR1cm4gbmFtZS5tYXAoZnVuY3Rpb24odikge1xuXHQgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHYpKSB7XG5cdCAgICAgICAgICBkZWZzLmFwcGx5KHRoYXQsIHYpO1xuXHQgICAgICAgIH1cblx0ICAgICAgICBlbHNlIHtcblx0ICAgICAgICAgIGRlZnModik7XG5cdCAgICAgICAgfVxuXHQgICAgICB9KTtcblx0ICAgIH1cblx0ICAgIGVsc2UgaWYgKHR5cGVvZiBuYW1lID09PSAnc3RyaW5nJykge1xuXHQgICAgICBpZiAobmFtZSBpbiBkZWZzKSB7XG5cdCAgICAgICAgcmV0dXJuIGRlZnNbbmFtZV07XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICAgIGVsc2UgaWYgKCdFUFNHJyBpbiBuYW1lKSB7XG5cdCAgICAgIGRlZnNbJ0VQU0c6JyArIG5hbWUuRVBTR10gPSBuYW1lO1xuXHQgICAgfVxuXHQgICAgZWxzZSBpZiAoJ0VTUkknIGluIG5hbWUpIHtcblx0ICAgICAgZGVmc1snRVNSSTonICsgbmFtZS5FU1JJXSA9IG5hbWU7XG5cdCAgICB9XG5cdCAgICBlbHNlIGlmICgnSUFVMjAwMCcgaW4gbmFtZSkge1xuXHQgICAgICBkZWZzWydJQVUyMDAwOicgKyBuYW1lLklBVTIwMDBdID0gbmFtZTtcblx0ICAgIH1cblx0ICAgIGVsc2Uge1xuXHQgICAgICBjb25zb2xlLmxvZyhuYW1lKTtcblx0ICAgIH1cblx0ICAgIHJldHVybjtcblx0ICB9XG5cblxuXHR9XG5cdGdsb2JhbHMoZGVmcyk7XG5cblx0ZnVuY3Rpb24gdGVzdE9iaihjb2RlKXtcblx0ICByZXR1cm4gdHlwZW9mIGNvZGUgPT09ICdzdHJpbmcnO1xuXHR9XG5cdGZ1bmN0aW9uIHRlc3REZWYoY29kZSl7XG5cdCAgcmV0dXJuIGNvZGUgaW4gZGVmcztcblx0fVxuXHQgdmFyIGNvZGVXb3JkcyA9IFsnUFJPSkVDVEVEQ1JTJywgJ1BST0pDUlMnLCAnR0VPR0NTJywnR0VPQ0NTJywnUFJPSkNTJywnTE9DQUxfQ1MnLCAnR0VPRENSUycsICdHRU9ERVRJQ0NSUycsICdHRU9ERVRJQ0RBVFVNJywgJ0VOR0NSUycsICdFTkdJTkVFUklOR0NSUyddOyBcblx0ZnVuY3Rpb24gdGVzdFdLVChjb2RlKXtcblx0ICByZXR1cm4gY29kZVdvcmRzLnNvbWUoZnVuY3Rpb24gKHdvcmQpIHtcblx0ICAgIHJldHVybiBjb2RlLmluZGV4T2Yod29yZCkgPiAtMTtcblx0ICB9KTtcblx0fVxuXHRmdW5jdGlvbiB0ZXN0UHJvaihjb2RlKXtcblx0ICByZXR1cm4gY29kZVswXSA9PT0gJysnO1xuXHR9XG5cdGZ1bmN0aW9uIHBhcnNlKGNvZGUpe1xuXHQgIGlmICh0ZXN0T2JqKGNvZGUpKSB7XG5cdCAgICAvL2NoZWNrIHRvIHNlZSBpZiB0aGlzIGlzIGEgV0tUIHN0cmluZ1xuXHQgICAgaWYgKHRlc3REZWYoY29kZSkpIHtcblx0ICAgICAgcmV0dXJuIGRlZnNbY29kZV07XG5cdCAgICB9XG5cdCAgICBpZiAodGVzdFdLVChjb2RlKSkge1xuXHQgICAgICByZXR1cm4gd2t0KGNvZGUpO1xuXHQgICAgfVxuXHQgICAgaWYgKHRlc3RQcm9qKGNvZGUpKSB7XG5cdCAgICAgIHJldHVybiBwYXJzZVByb2ooY29kZSk7XG5cdCAgICB9XG5cdCAgfWVsc2V7XG5cdCAgICByZXR1cm4gY29kZTtcblx0ICB9XG5cdH1cblxuXHR2YXIgZXh0ZW5kID0gZnVuY3Rpb24oZGVzdGluYXRpb24sIHNvdXJjZSkge1xuXHQgIGRlc3RpbmF0aW9uID0gZGVzdGluYXRpb24gfHwge307XG5cdCAgdmFyIHZhbHVlLCBwcm9wZXJ0eTtcblx0ICBpZiAoIXNvdXJjZSkge1xuXHQgICAgcmV0dXJuIGRlc3RpbmF0aW9uO1xuXHQgIH1cblx0ICBmb3IgKHByb3BlcnR5IGluIHNvdXJjZSkge1xuXHQgICAgdmFsdWUgPSBzb3VyY2VbcHJvcGVydHldO1xuXHQgICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHtcblx0ICAgICAgZGVzdGluYXRpb25bcHJvcGVydHldID0gdmFsdWU7XG5cdCAgICB9XG5cdCAgfVxuXHQgIHJldHVybiBkZXN0aW5hdGlvbjtcblx0fTtcblxuXHR2YXIgbXNmbnogPSBmdW5jdGlvbihlY2NlbnQsIHNpbnBoaSwgY29zcGhpKSB7XG5cdCAgdmFyIGNvbiA9IGVjY2VudCAqIHNpbnBoaTtcblx0ICByZXR1cm4gY29zcGhpIC8gKE1hdGguc3FydCgxIC0gY29uICogY29uKSk7XG5cdH07XG5cblx0dmFyIHNpZ24gPSBmdW5jdGlvbih4KSB7XG5cdCAgcmV0dXJuIHg8MCA/IC0xIDogMTtcblx0fTtcblxuXHR2YXIgYWRqdXN0X2xvbiA9IGZ1bmN0aW9uKHgpIHtcblx0ICByZXR1cm4gKE1hdGguYWJzKHgpIDw9IFNQSSkgPyB4IDogKHggLSAoc2lnbih4KSAqIFRXT19QSSkpO1xuXHR9O1xuXG5cdHZhciB0c2ZueiA9IGZ1bmN0aW9uKGVjY2VudCwgcGhpLCBzaW5waGkpIHtcblx0ICB2YXIgY29uID0gZWNjZW50ICogc2lucGhpO1xuXHQgIHZhciBjb20gPSAwLjUgKiBlY2NlbnQ7XG5cdCAgY29uID0gTWF0aC5wb3coKCgxIC0gY29uKSAvICgxICsgY29uKSksIGNvbSk7XG5cdCAgcmV0dXJuIChNYXRoLnRhbigwLjUgKiAoSEFMRl9QSSAtIHBoaSkpIC8gY29uKTtcblx0fTtcblxuXHR2YXIgcGhpMnogPSBmdW5jdGlvbihlY2NlbnQsIHRzKSB7XG5cdCAgdmFyIGVjY250aCA9IDAuNSAqIGVjY2VudDtcblx0ICB2YXIgY29uLCBkcGhpO1xuXHQgIHZhciBwaGkgPSBIQUxGX1BJIC0gMiAqIE1hdGguYXRhbih0cyk7XG5cdCAgZm9yICh2YXIgaSA9IDA7IGkgPD0gMTU7IGkrKykge1xuXHQgICAgY29uID0gZWNjZW50ICogTWF0aC5zaW4ocGhpKTtcblx0ICAgIGRwaGkgPSBIQUxGX1BJIC0gMiAqIE1hdGguYXRhbih0cyAqIChNYXRoLnBvdygoKDEgLSBjb24pIC8gKDEgKyBjb24pKSwgZWNjbnRoKSkpIC0gcGhpO1xuXHQgICAgcGhpICs9IGRwaGk7XG5cdCAgICBpZiAoTWF0aC5hYnMoZHBoaSkgPD0gMC4wMDAwMDAwMDAxKSB7XG5cdCAgICAgIHJldHVybiBwaGk7XG5cdCAgICB9XG5cdCAgfVxuXHQgIC8vY29uc29sZS5sb2coXCJwaGkyeiBoYXMgTm9Db252ZXJnZW5jZVwiKTtcblx0ICByZXR1cm4gLTk5OTk7XG5cdH07XG5cblx0ZnVuY3Rpb24gaW5pdCgpIHtcblx0ICB2YXIgY29uID0gdGhpcy5iIC8gdGhpcy5hO1xuXHQgIHRoaXMuZXMgPSAxIC0gY29uICogY29uO1xuXHQgIGlmKCEoJ3gwJyBpbiB0aGlzKSl7XG5cdCAgICB0aGlzLngwID0gMDtcblx0ICB9XG5cdCAgaWYoISgneTAnIGluIHRoaXMpKXtcblx0ICAgIHRoaXMueTAgPSAwO1xuXHQgIH1cblx0ICB0aGlzLmUgPSBNYXRoLnNxcnQodGhpcy5lcyk7XG5cdCAgaWYgKHRoaXMubGF0X3RzKSB7XG5cdCAgICBpZiAodGhpcy5zcGhlcmUpIHtcblx0ICAgICAgdGhpcy5rMCA9IE1hdGguY29zKHRoaXMubGF0X3RzKTtcblx0ICAgIH1cblx0ICAgIGVsc2Uge1xuXHQgICAgICB0aGlzLmswID0gbXNmbnoodGhpcy5lLCBNYXRoLnNpbih0aGlzLmxhdF90cyksIE1hdGguY29zKHRoaXMubGF0X3RzKSk7XG5cdCAgICB9XG5cdCAgfVxuXHQgIGVsc2Uge1xuXHQgICAgaWYgKCF0aGlzLmswKSB7XG5cdCAgICAgIGlmICh0aGlzLmspIHtcblx0ICAgICAgICB0aGlzLmswID0gdGhpcy5rO1xuXHQgICAgICB9XG5cdCAgICAgIGVsc2Uge1xuXHQgICAgICAgIHRoaXMuazAgPSAxO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgfVxuXHR9XG5cblx0LyogTWVyY2F0b3IgZm9yd2FyZCBlcXVhdGlvbnMtLW1hcHBpbmcgbGF0LGxvbmcgdG8geCx5XG5cdCAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG5cdGZ1bmN0aW9uIGZvcndhcmQocCkge1xuXHQgIHZhciBsb24gPSBwLng7XG5cdCAgdmFyIGxhdCA9IHAueTtcblx0ICAvLyBjb252ZXJ0IHRvIHJhZGlhbnNcblx0ICBpZiAobGF0ICogUjJEID4gOTAgJiYgbGF0ICogUjJEIDwgLTkwICYmIGxvbiAqIFIyRCA+IDE4MCAmJiBsb24gKiBSMkQgPCAtMTgwKSB7XG5cdCAgICByZXR1cm4gbnVsbDtcblx0ICB9XG5cblx0ICB2YXIgeCwgeTtcblx0ICBpZiAoTWF0aC5hYnMoTWF0aC5hYnMobGF0KSAtIEhBTEZfUEkpIDw9IEVQU0xOKSB7XG5cdCAgICByZXR1cm4gbnVsbDtcblx0ICB9XG5cdCAgZWxzZSB7XG5cdCAgICBpZiAodGhpcy5zcGhlcmUpIHtcblx0ICAgICAgeCA9IHRoaXMueDAgKyB0aGlzLmEgKiB0aGlzLmswICogYWRqdXN0X2xvbihsb24gLSB0aGlzLmxvbmcwKTtcblx0ICAgICAgeSA9IHRoaXMueTAgKyB0aGlzLmEgKiB0aGlzLmswICogTWF0aC5sb2coTWF0aC50YW4oRk9SVFBJICsgMC41ICogbGF0KSk7XG5cdCAgICB9XG5cdCAgICBlbHNlIHtcblx0ICAgICAgdmFyIHNpbnBoaSA9IE1hdGguc2luKGxhdCk7XG5cdCAgICAgIHZhciB0cyA9IHRzZm56KHRoaXMuZSwgbGF0LCBzaW5waGkpO1xuXHQgICAgICB4ID0gdGhpcy54MCArIHRoaXMuYSAqIHRoaXMuazAgKiBhZGp1c3RfbG9uKGxvbiAtIHRoaXMubG9uZzApO1xuXHQgICAgICB5ID0gdGhpcy55MCAtIHRoaXMuYSAqIHRoaXMuazAgKiBNYXRoLmxvZyh0cyk7XG5cdCAgICB9XG5cdCAgICBwLnggPSB4O1xuXHQgICAgcC55ID0geTtcblx0ICAgIHJldHVybiBwO1xuXHQgIH1cblx0fVxuXG5cdC8qIE1lcmNhdG9yIGludmVyc2UgZXF1YXRpb25zLS1tYXBwaW5nIHgseSB0byBsYXQvbG9uZ1xuXHQgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblx0ZnVuY3Rpb24gaW52ZXJzZShwKSB7XG5cblx0ICB2YXIgeCA9IHAueCAtIHRoaXMueDA7XG5cdCAgdmFyIHkgPSBwLnkgLSB0aGlzLnkwO1xuXHQgIHZhciBsb24sIGxhdDtcblxuXHQgIGlmICh0aGlzLnNwaGVyZSkge1xuXHQgICAgbGF0ID0gSEFMRl9QSSAtIDIgKiBNYXRoLmF0YW4oTWF0aC5leHAoLXkgLyAodGhpcy5hICogdGhpcy5rMCkpKTtcblx0ICB9XG5cdCAgZWxzZSB7XG5cdCAgICB2YXIgdHMgPSBNYXRoLmV4cCgteSAvICh0aGlzLmEgKiB0aGlzLmswKSk7XG5cdCAgICBsYXQgPSBwaGkyeih0aGlzLmUsIHRzKTtcblx0ICAgIGlmIChsYXQgPT09IC05OTk5KSB7XG5cdCAgICAgIHJldHVybiBudWxsO1xuXHQgICAgfVxuXHQgIH1cblx0ICBsb24gPSBhZGp1c3RfbG9uKHRoaXMubG9uZzAgKyB4IC8gKHRoaXMuYSAqIHRoaXMuazApKTtcblxuXHQgIHAueCA9IGxvbjtcblx0ICBwLnkgPSBsYXQ7XG5cdCAgcmV0dXJuIHA7XG5cdH1cblxuXHR2YXIgbmFtZXMkMSA9IFtcIk1lcmNhdG9yXCIsIFwiUG9wdWxhciBWaXN1YWxpc2F0aW9uIFBzZXVkbyBNZXJjYXRvclwiLCBcIk1lcmNhdG9yXzFTUFwiLCBcIk1lcmNhdG9yX0F1eGlsaWFyeV9TcGhlcmVcIiwgXCJtZXJjXCJdO1xuXHR2YXIgbWVyYyA9IHtcblx0ICBpbml0OiBpbml0LFxuXHQgIGZvcndhcmQ6IGZvcndhcmQsXG5cdCAgaW52ZXJzZTogaW52ZXJzZSxcblx0ICBuYW1lczogbmFtZXMkMVxuXHR9O1xuXG5cdGZ1bmN0aW9uIGluaXQkMSgpIHtcblx0ICAvL25vLW9wIGZvciBsb25nbGF0XG5cdH1cblxuXHRmdW5jdGlvbiBpZGVudGl0eShwdCkge1xuXHQgIHJldHVybiBwdDtcblx0fVxuXHR2YXIgbmFtZXMkMiA9IFtcImxvbmdsYXRcIiwgXCJpZGVudGl0eVwiXTtcblx0dmFyIGxvbmdsYXQgPSB7XG5cdCAgaW5pdDogaW5pdCQxLFxuXHQgIGZvcndhcmQ6IGlkZW50aXR5LFxuXHQgIGludmVyc2U6IGlkZW50aXR5LFxuXHQgIG5hbWVzOiBuYW1lcyQyXG5cdH07XG5cblx0dmFyIHByb2pzID0gW21lcmMsIGxvbmdsYXRdO1xuXHR2YXIgbmFtZXMkJDEgPSB7fTtcblx0dmFyIHByb2pTdG9yZSA9IFtdO1xuXG5cdGZ1bmN0aW9uIGFkZChwcm9qLCBpKSB7XG5cdCAgdmFyIGxlbiA9IHByb2pTdG9yZS5sZW5ndGg7XG5cdCAgaWYgKCFwcm9qLm5hbWVzKSB7XG5cdCAgICBjb25zb2xlLmxvZyhpKTtcblx0ICAgIHJldHVybiB0cnVlO1xuXHQgIH1cblx0ICBwcm9qU3RvcmVbbGVuXSA9IHByb2o7XG5cdCAgcHJvai5uYW1lcy5mb3JFYWNoKGZ1bmN0aW9uKG4pIHtcblx0ICAgIG5hbWVzJCQxW24udG9Mb3dlckNhc2UoKV0gPSBsZW47XG5cdCAgfSk7XG5cdCAgcmV0dXJuIHRoaXM7XG5cdH1cblxuXHRmdW5jdGlvbiBnZXQobmFtZSkge1xuXHQgIGlmICghbmFtZSkge1xuXHQgICAgcmV0dXJuIGZhbHNlO1xuXHQgIH1cblx0ICB2YXIgbiA9IG5hbWUudG9Mb3dlckNhc2UoKTtcblx0ICBpZiAodHlwZW9mIG5hbWVzJCQxW25dICE9PSAndW5kZWZpbmVkJyAmJiBwcm9qU3RvcmVbbmFtZXMkJDFbbl1dKSB7XG5cdCAgICByZXR1cm4gcHJvalN0b3JlW25hbWVzJCQxW25dXTtcblx0ICB9XG5cdH1cblxuXHRmdW5jdGlvbiBzdGFydCgpIHtcblx0ICBwcm9qcy5mb3JFYWNoKGFkZCk7XG5cdH1cblx0dmFyIHByb2plY3Rpb25zID0ge1xuXHQgIHN0YXJ0OiBzdGFydCxcblx0ICBhZGQ6IGFkZCxcblx0ICBnZXQ6IGdldFxuXHR9O1xuXG5cdHZhciBleHBvcnRzJDIgPSB7fTtcblx0ZXhwb3J0cyQyLk1FUklUID0ge1xuXHQgIGE6IDYzNzgxMzcuMCxcblx0ICByZjogMjk4LjI1Nyxcblx0ICBlbGxpcHNlTmFtZTogXCJNRVJJVCAxOTgzXCJcblx0fTtcblxuXHRleHBvcnRzJDIuU0dTODUgPSB7XG5cdCAgYTogNjM3ODEzNi4wLFxuXHQgIHJmOiAyOTguMjU3LFxuXHQgIGVsbGlwc2VOYW1lOiBcIlNvdmlldCBHZW9kZXRpYyBTeXN0ZW0gODVcIlxuXHR9O1xuXG5cdGV4cG9ydHMkMi5HUlM4MCA9IHtcblx0ICBhOiA2Mzc4MTM3LjAsXG5cdCAgcmY6IDI5OC4yNTcyMjIxMDEsXG5cdCAgZWxsaXBzZU5hbWU6IFwiR1JTIDE5ODAoSVVHRywgMTk4MClcIlxuXHR9O1xuXG5cdGV4cG9ydHMkMi5JQVU3NiA9IHtcblx0ICBhOiA2Mzc4MTQwLjAsXG5cdCAgcmY6IDI5OC4yNTcsXG5cdCAgZWxsaXBzZU5hbWU6IFwiSUFVIDE5NzZcIlxuXHR9O1xuXG5cdGV4cG9ydHMkMi5haXJ5ID0ge1xuXHQgIGE6IDYzNzc1NjMuMzk2LFxuXHQgIGI6IDYzNTYyNTYuOTEwLFxuXHQgIGVsbGlwc2VOYW1lOiBcIkFpcnkgMTgzMFwiXG5cdH07XG5cblx0ZXhwb3J0cyQyLkFQTDQgPSB7XG5cdCAgYTogNjM3ODEzNyxcblx0ICByZjogMjk4LjI1LFxuXHQgIGVsbGlwc2VOYW1lOiBcIkFwcGwuIFBoeXNpY3MuIDE5NjVcIlxuXHR9O1xuXG5cdGV4cG9ydHMkMi5OV0w5RCA9IHtcblx0ICBhOiA2Mzc4MTQ1LjAsXG5cdCAgcmY6IDI5OC4yNSxcblx0ICBlbGxpcHNlTmFtZTogXCJOYXZhbCBXZWFwb25zIExhYi4sIDE5NjVcIlxuXHR9O1xuXG5cdGV4cG9ydHMkMi5tb2RfYWlyeSA9IHtcblx0ICBhOiA2Mzc3MzQwLjE4OSxcblx0ICBiOiA2MzU2MDM0LjQ0Nixcblx0ICBlbGxpcHNlTmFtZTogXCJNb2RpZmllZCBBaXJ5XCJcblx0fTtcblxuXHRleHBvcnRzJDIuYW5kcmFlID0ge1xuXHQgIGE6IDYzNzcxMDQuNDMsXG5cdCAgcmY6IDMwMC4wLFxuXHQgIGVsbGlwc2VOYW1lOiBcIkFuZHJhZSAxODc2IChEZW4uLCBJY2xuZC4pXCJcblx0fTtcblxuXHRleHBvcnRzJDIuYXVzdF9TQSA9IHtcblx0ICBhOiA2Mzc4MTYwLjAsXG5cdCAgcmY6IDI5OC4yNSxcblx0ICBlbGxpcHNlTmFtZTogXCJBdXN0cmFsaWFuIE5hdGwgJiBTLiBBbWVyLiAxOTY5XCJcblx0fTtcblxuXHRleHBvcnRzJDIuR1JTNjcgPSB7XG5cdCAgYTogNjM3ODE2MC4wLFxuXHQgIHJmOiAyOTguMjQ3MTY3NDI3MCxcblx0ICBlbGxpcHNlTmFtZTogXCJHUlMgNjcoSVVHRyAxOTY3KVwiXG5cdH07XG5cblx0ZXhwb3J0cyQyLmJlc3NlbCA9IHtcblx0ICBhOiA2Mzc3Mzk3LjE1NSxcblx0ICByZjogMjk5LjE1MjgxMjgsXG5cdCAgZWxsaXBzZU5hbWU6IFwiQmVzc2VsIDE4NDFcIlxuXHR9O1xuXG5cdGV4cG9ydHMkMi5iZXNzX25hbSA9IHtcblx0ICBhOiA2Mzc3NDgzLjg2NSxcblx0ICByZjogMjk5LjE1MjgxMjgsXG5cdCAgZWxsaXBzZU5hbWU6IFwiQmVzc2VsIDE4NDEgKE5hbWliaWEpXCJcblx0fTtcblxuXHRleHBvcnRzJDIuY2xyazY2ID0ge1xuXHQgIGE6IDYzNzgyMDYuNCxcblx0ICBiOiA2MzU2NTgzLjgsXG5cdCAgZWxsaXBzZU5hbWU6IFwiQ2xhcmtlIDE4NjZcIlxuXHR9O1xuXG5cdGV4cG9ydHMkMi5jbHJrODAgPSB7XG5cdCAgYTogNjM3ODI0OS4xNDUsXG5cdCAgcmY6IDI5My40NjYzLFxuXHQgIGVsbGlwc2VOYW1lOiBcIkNsYXJrZSAxODgwIG1vZC5cIlxuXHR9O1xuXG5cdGV4cG9ydHMkMi5jbHJrNTggPSB7XG5cdCAgYTogNjM3ODI5My42NDUyMDg3NTksXG5cdCAgcmY6IDI5NC4yNjA2NzYzNjkyNjU0LFxuXHQgIGVsbGlwc2VOYW1lOiBcIkNsYXJrZSAxODU4XCJcblx0fTtcblxuXHRleHBvcnRzJDIuQ1BNID0ge1xuXHQgIGE6IDYzNzU3MzguNyxcblx0ICByZjogMzM0LjI5LFxuXHQgIGVsbGlwc2VOYW1lOiBcIkNvbW0uIGRlcyBQb2lkcyBldCBNZXN1cmVzIDE3OTlcIlxuXHR9O1xuXG5cdGV4cG9ydHMkMi5kZWxtYnIgPSB7XG5cdCAgYTogNjM3NjQyOC4wLFxuXHQgIHJmOiAzMTEuNSxcblx0ICBlbGxpcHNlTmFtZTogXCJEZWxhbWJyZSAxODEwIChCZWxnaXVtKVwiXG5cdH07XG5cblx0ZXhwb3J0cyQyLmVuZ2VsaXMgPSB7XG5cdCAgYTogNjM3ODEzNi4wNSxcblx0ICByZjogMjk4LjI1NjYsXG5cdCAgZWxsaXBzZU5hbWU6IFwiRW5nZWxpcyAxOTg1XCJcblx0fTtcblxuXHRleHBvcnRzJDIuZXZyc3QzMCA9IHtcblx0ICBhOiA2Mzc3Mjc2LjM0NSxcblx0ICByZjogMzAwLjgwMTcsXG5cdCAgZWxsaXBzZU5hbWU6IFwiRXZlcmVzdCAxODMwXCJcblx0fTtcblxuXHRleHBvcnRzJDIuZXZyc3Q0OCA9IHtcblx0ICBhOiA2Mzc3MzA0LjA2Myxcblx0ICByZjogMzAwLjgwMTcsXG5cdCAgZWxsaXBzZU5hbWU6IFwiRXZlcmVzdCAxOTQ4XCJcblx0fTtcblxuXHRleHBvcnRzJDIuZXZyc3Q1NiA9IHtcblx0ICBhOiA2Mzc3MzAxLjI0Myxcblx0ICByZjogMzAwLjgwMTcsXG5cdCAgZWxsaXBzZU5hbWU6IFwiRXZlcmVzdCAxOTU2XCJcblx0fTtcblxuXHRleHBvcnRzJDIuZXZyc3Q2OSA9IHtcblx0ICBhOiA2Mzc3Mjk1LjY2NCxcblx0ICByZjogMzAwLjgwMTcsXG5cdCAgZWxsaXBzZU5hbWU6IFwiRXZlcmVzdCAxOTY5XCJcblx0fTtcblxuXHRleHBvcnRzJDIuZXZyc3RTUyA9IHtcblx0ICBhOiA2Mzc3Mjk4LjU1Nixcblx0ICByZjogMzAwLjgwMTcsXG5cdCAgZWxsaXBzZU5hbWU6IFwiRXZlcmVzdCAoU2FiYWggJiBTYXJhd2FrKVwiXG5cdH07XG5cblx0ZXhwb3J0cyQyLmZzY2hyNjAgPSB7XG5cdCAgYTogNjM3ODE2Ni4wLFxuXHQgIHJmOiAyOTguMyxcblx0ICBlbGxpcHNlTmFtZTogXCJGaXNjaGVyIChNZXJjdXJ5IERhdHVtKSAxOTYwXCJcblx0fTtcblxuXHRleHBvcnRzJDIuZnNjaHI2MG0gPSB7XG5cdCAgYTogNjM3ODE1NS4wLFxuXHQgIHJmOiAyOTguMyxcblx0ICBlbGxpcHNlTmFtZTogXCJGaXNjaGVyIDE5NjBcIlxuXHR9O1xuXG5cdGV4cG9ydHMkMi5mc2NocjY4ID0ge1xuXHQgIGE6IDYzNzgxNTAuMCxcblx0ICByZjogMjk4LjMsXG5cdCAgZWxsaXBzZU5hbWU6IFwiRmlzY2hlciAxOTY4XCJcblx0fTtcblxuXHRleHBvcnRzJDIuaGVsbWVydCA9IHtcblx0ICBhOiA2Mzc4MjAwLjAsXG5cdCAgcmY6IDI5OC4zLFxuXHQgIGVsbGlwc2VOYW1lOiBcIkhlbG1lcnQgMTkwNlwiXG5cdH07XG5cblx0ZXhwb3J0cyQyLmhvdWdoID0ge1xuXHQgIGE6IDYzNzgyNzAuMCxcblx0ICByZjogMjk3LjAsXG5cdCAgZWxsaXBzZU5hbWU6IFwiSG91Z2hcIlxuXHR9O1xuXG5cdGV4cG9ydHMkMi5pbnRsID0ge1xuXHQgIGE6IDYzNzgzODguMCxcblx0ICByZjogMjk3LjAsXG5cdCAgZWxsaXBzZU5hbWU6IFwiSW50ZXJuYXRpb25hbCAxOTA5IChIYXlmb3JkKVwiXG5cdH07XG5cblx0ZXhwb3J0cyQyLmthdWxhID0ge1xuXHQgIGE6IDYzNzgxNjMuMCxcblx0ICByZjogMjk4LjI0LFxuXHQgIGVsbGlwc2VOYW1lOiBcIkthdWxhIDE5NjFcIlxuXHR9O1xuXG5cdGV4cG9ydHMkMi5sZXJjaCA9IHtcblx0ICBhOiA2Mzc4MTM5LjAsXG5cdCAgcmY6IDI5OC4yNTcsXG5cdCAgZWxsaXBzZU5hbWU6IFwiTGVyY2ggMTk3OVwiXG5cdH07XG5cblx0ZXhwb3J0cyQyLm1wcnRzID0ge1xuXHQgIGE6IDYzOTczMDAuMCxcblx0ICByZjogMTkxLjAsXG5cdCAgZWxsaXBzZU5hbWU6IFwiTWF1cGVydGl1cyAxNzM4XCJcblx0fTtcblxuXHRleHBvcnRzJDIubmV3X2ludGwgPSB7XG5cdCAgYTogNjM3ODE1Ny41LFxuXHQgIGI6IDYzNTY3NzIuMixcblx0ICBlbGxpcHNlTmFtZTogXCJOZXcgSW50ZXJuYXRpb25hbCAxOTY3XCJcblx0fTtcblxuXHRleHBvcnRzJDIucGxlc3NpcyA9IHtcblx0ICBhOiA2Mzc2NTIzLjAsXG5cdCAgcmY6IDYzNTU4NjMuMCxcblx0ICBlbGxpcHNlTmFtZTogXCJQbGVzc2lzIDE4MTcgKEZyYW5jZSlcIlxuXHR9O1xuXG5cdGV4cG9ydHMkMi5rcmFzcyA9IHtcblx0ICBhOiA2Mzc4MjQ1LjAsXG5cdCAgcmY6IDI5OC4zLFxuXHQgIGVsbGlwc2VOYW1lOiBcIktyYXNzb3Zza3ksIDE5NDJcIlxuXHR9O1xuXG5cdGV4cG9ydHMkMi5TRWFzaWEgPSB7XG5cdCAgYTogNjM3ODE1NS4wLFxuXHQgIGI6IDYzNTY3NzMuMzIwNSxcblx0ICBlbGxpcHNlTmFtZTogXCJTb3V0aGVhc3QgQXNpYVwiXG5cdH07XG5cblx0ZXhwb3J0cyQyLndhbGJlY2sgPSB7XG5cdCAgYTogNjM3Njg5Ni4wLFxuXHQgIGI6IDYzNTU4MzQuODQ2Nyxcblx0ICBlbGxpcHNlTmFtZTogXCJXYWxiZWNrXCJcblx0fTtcblxuXHRleHBvcnRzJDIuV0dTNjAgPSB7XG5cdCAgYTogNjM3ODE2NS4wLFxuXHQgIHJmOiAyOTguMyxcblx0ICBlbGxpcHNlTmFtZTogXCJXR1MgNjBcIlxuXHR9O1xuXG5cdGV4cG9ydHMkMi5XR1M2NiA9IHtcblx0ICBhOiA2Mzc4MTQ1LjAsXG5cdCAgcmY6IDI5OC4yNSxcblx0ICBlbGxpcHNlTmFtZTogXCJXR1MgNjZcIlxuXHR9O1xuXG5cdGV4cG9ydHMkMi5XR1M3ID0ge1xuXHQgIGE6IDYzNzgxMzUuMCxcblx0ICByZjogMjk4LjI2LFxuXHQgIGVsbGlwc2VOYW1lOiBcIldHUyA3MlwiXG5cdH07XG5cblx0dmFyIFdHUzg0ID0gZXhwb3J0cyQyLldHUzg0ID0ge1xuXHQgIGE6IDYzNzgxMzcuMCxcblx0ICByZjogMjk4LjI1NzIyMzU2Myxcblx0ICBlbGxpcHNlTmFtZTogXCJXR1MgODRcIlxuXHR9O1xuXG5cdGV4cG9ydHMkMi5zcGhlcmUgPSB7XG5cdCAgYTogNjM3MDk5Ny4wLFxuXHQgIGI6IDYzNzA5OTcuMCxcblx0ICBlbGxpcHNlTmFtZTogXCJOb3JtYWwgU3BoZXJlIChyPTYzNzA5OTcpXCJcblx0fTtcblxuXHRmdW5jdGlvbiBlY2NlbnRyaWNpdHkoYSwgYiwgcmYsIFJfQSkge1xuXHQgIHZhciBhMiA9IGEgKiBhOyAvLyB1c2VkIGluIGdlb2NlbnRyaWNcblx0ICB2YXIgYjIgPSBiICogYjsgLy8gdXNlZCBpbiBnZW9jZW50cmljXG5cdCAgdmFyIGVzID0gKGEyIC0gYjIpIC8gYTI7IC8vIGUgXiAyXG5cdCAgdmFyIGUgPSAwO1xuXHQgIGlmIChSX0EpIHtcblx0ICAgIGEgKj0gMSAtIGVzICogKFNJWFRIICsgZXMgKiAoUkE0ICsgZXMgKiBSQTYpKTtcblx0ICAgIGEyID0gYSAqIGE7XG5cdCAgICBlcyA9IDA7XG5cdCAgfSBlbHNlIHtcblx0ICAgIGUgPSBNYXRoLnNxcnQoZXMpOyAvLyBlY2NlbnRyaWNpdHlcblx0ICB9XG5cdCAgdmFyIGVwMiA9IChhMiAtIGIyKSAvIGIyOyAvLyB1c2VkIGluIGdlb2NlbnRyaWNcblx0ICByZXR1cm4ge1xuXHQgICAgZXM6IGVzLFxuXHQgICAgZTogZSxcblx0ICAgIGVwMjogZXAyXG5cdCAgfTtcblx0fVxuXHRmdW5jdGlvbiBzcGhlcmUoYSwgYiwgcmYsIGVsbHBzLCBzcGhlcmUpIHtcblx0ICBpZiAoIWEpIHsgLy8gZG8gd2UgaGF2ZSBhbiBlbGxpcHNvaWQ/XG5cdCAgICB2YXIgZWxsaXBzZSA9IG1hdGNoKGV4cG9ydHMkMiwgZWxscHMpO1xuXHQgICAgaWYgKCFlbGxpcHNlKSB7XG5cdCAgICAgIGVsbGlwc2UgPSBXR1M4NDtcblx0ICAgIH1cblx0ICAgIGEgPSBlbGxpcHNlLmE7XG5cdCAgICBiID0gZWxsaXBzZS5iO1xuXHQgICAgcmYgPSBlbGxpcHNlLnJmO1xuXHQgIH1cblxuXHQgIGlmIChyZiAmJiAhYikge1xuXHQgICAgYiA9ICgxLjAgLSAxLjAgLyByZikgKiBhO1xuXHQgIH1cblx0ICBpZiAocmYgPT09IDAgfHwgTWF0aC5hYnMoYSAtIGIpIDwgRVBTTE4pIHtcblx0ICAgIHNwaGVyZSA9IHRydWU7XG5cdCAgICBiID0gYTtcblx0ICB9XG5cdCAgcmV0dXJuIHtcblx0ICAgIGE6IGEsXG5cdCAgICBiOiBiLFxuXHQgICAgcmY6IHJmLFxuXHQgICAgc3BoZXJlOiBzcGhlcmVcblx0ICB9O1xuXHR9XG5cblx0dmFyIGV4cG9ydHMkMyA9IHt9O1xuXHRleHBvcnRzJDMud2dzODQgPSB7XG5cdCAgdG93Z3M4NDogXCIwLDAsMFwiLFxuXHQgIGVsbGlwc2U6IFwiV0dTODRcIixcblx0ICBkYXR1bU5hbWU6IFwiV0dTODRcIlxuXHR9O1xuXG5cdGV4cG9ydHMkMy5jaDE5MDMgPSB7XG5cdCAgdG93Z3M4NDogXCI2NzQuMzc0LDE1LjA1Niw0MDUuMzQ2XCIsXG5cdCAgZWxsaXBzZTogXCJiZXNzZWxcIixcblx0ICBkYXR1bU5hbWU6IFwic3dpc3NcIlxuXHR9O1xuXG5cdGV4cG9ydHMkMy5nZ3JzODcgPSB7XG5cdCAgdG93Z3M4NDogXCItMTk5Ljg3LDc0Ljc5LDI0Ni42MlwiLFxuXHQgIGVsbGlwc2U6IFwiR1JTODBcIixcblx0ICBkYXR1bU5hbWU6IFwiR3JlZWtfR2VvZGV0aWNfUmVmZXJlbmNlX1N5c3RlbV8xOTg3XCJcblx0fTtcblxuXHRleHBvcnRzJDMubmFkODMgPSB7XG5cdCAgdG93Z3M4NDogXCIwLDAsMFwiLFxuXHQgIGVsbGlwc2U6IFwiR1JTODBcIixcblx0ICBkYXR1bU5hbWU6IFwiTm9ydGhfQW1lcmljYW5fRGF0dW1fMTk4M1wiXG5cdH07XG5cblx0ZXhwb3J0cyQzLm5hZDI3ID0ge1xuXHQgIG5hZGdyaWRzOiBcIkBjb251cyxAYWxhc2thLEBudHYyXzAuZ3NiLEBudHYxX2Nhbi5kYXRcIixcblx0ICBlbGxpcHNlOiBcImNscms2NlwiLFxuXHQgIGRhdHVtTmFtZTogXCJOb3J0aF9BbWVyaWNhbl9EYXR1bV8xOTI3XCJcblx0fTtcblxuXHRleHBvcnRzJDMucG90c2RhbSA9IHtcblx0ICB0b3dnczg0OiBcIjYwNi4wLDIzLjAsNDEzLjBcIixcblx0ICBlbGxpcHNlOiBcImJlc3NlbFwiLFxuXHQgIGRhdHVtTmFtZTogXCJQb3RzZGFtIFJhdWVuYmVyZyAxOTUwIERIRE5cIlxuXHR9O1xuXG5cdGV4cG9ydHMkMy5jYXJ0aGFnZSA9IHtcblx0ICB0b3dnczg0OiBcIi0yNjMuMCw2LjAsNDMxLjBcIixcblx0ICBlbGxpcHNlOiBcImNsYXJrODBcIixcblx0ICBkYXR1bU5hbWU6IFwiQ2FydGhhZ2UgMTkzNCBUdW5pc2lhXCJcblx0fTtcblxuXHRleHBvcnRzJDMuaGVybWFubnNrb2dlbCA9IHtcblx0ICB0b3dnczg0OiBcIjY1My4wLC0yMTIuMCw0NDkuMFwiLFxuXHQgIGVsbGlwc2U6IFwiYmVzc2VsXCIsXG5cdCAgZGF0dW1OYW1lOiBcIkhlcm1hbm5za29nZWxcIlxuXHR9O1xuXG5cdGV4cG9ydHMkMy5pcmU2NSA9IHtcblx0ICB0b3dnczg0OiBcIjQ4Mi41MzAsLTEzMC41OTYsNTY0LjU1NywtMS4wNDIsLTAuMjE0LC0wLjYzMSw4LjE1XCIsXG5cdCAgZWxsaXBzZTogXCJtb2RfYWlyeVwiLFxuXHQgIGRhdHVtTmFtZTogXCJJcmVsYW5kIDE5NjVcIlxuXHR9O1xuXG5cdGV4cG9ydHMkMy5yYXNzYWRpcmFuID0ge1xuXHQgIHRvd2dzODQ6IFwiLTEzMy42MywtMTU3LjUsLTE1OC42MlwiLFxuXHQgIGVsbGlwc2U6IFwiaW50bFwiLFxuXHQgIGRhdHVtTmFtZTogXCJSYXNzYWRpcmFuXCJcblx0fTtcblxuXHRleHBvcnRzJDMubnpnZDQ5ID0ge1xuXHQgIHRvd2dzODQ6IFwiNTkuNDcsLTUuMDQsMTg3LjQ0LDAuNDcsLTAuMSwxLjAyNCwtNC41OTkzXCIsXG5cdCAgZWxsaXBzZTogXCJpbnRsXCIsXG5cdCAgZGF0dW1OYW1lOiBcIk5ldyBaZWFsYW5kIEdlb2RldGljIERhdHVtIDE5NDlcIlxuXHR9O1xuXG5cdGV4cG9ydHMkMy5vc2diMzYgPSB7XG5cdCAgdG93Z3M4NDogXCI0NDYuNDQ4LC0xMjUuMTU3LDU0Mi4wNjAsMC4xNTAyLDAuMjQ3MCwwLjg0MjEsLTIwLjQ4OTRcIixcblx0ICBlbGxpcHNlOiBcImFpcnlcIixcblx0ICBkYXR1bU5hbWU6IFwiQWlyeSAxODMwXCJcblx0fTtcblxuXHRleHBvcnRzJDMuc19qdHNrID0ge1xuXHQgIHRvd2dzODQ6IFwiNTg5LDc2LDQ4MFwiLFxuXHQgIGVsbGlwc2U6ICdiZXNzZWwnLFxuXHQgIGRhdHVtTmFtZTogJ1MtSlRTSyAoRmVycm8pJ1xuXHR9O1xuXG5cdGV4cG9ydHMkMy5iZWR1YXJhbSA9IHtcblx0ICB0b3dnczg0OiAnLTEwNiwtODcsMTg4Jyxcblx0ICBlbGxpcHNlOiAnY2xyazgwJyxcblx0ICBkYXR1bU5hbWU6ICdCZWR1YXJhbSdcblx0fTtcblxuXHRleHBvcnRzJDMuZ3VudW5nX3NlZ2FyYSA9IHtcblx0ICB0b3dnczg0OiAnLTQwMyw2ODQsNDEnLFxuXHQgIGVsbGlwc2U6ICdiZXNzZWwnLFxuXHQgIGRhdHVtTmFtZTogJ0d1bnVuZyBTZWdhcmEgSmFrYXJ0YSdcblx0fTtcblxuXHRleHBvcnRzJDMucm5iNzIgPSB7XG5cdCAgdG93Z3M4NDogXCIxMDYuODY5LC01Mi4yOTc4LDEwMy43MjQsLTAuMzM2NTcsMC40NTY5NTUsLTEuODQyMTgsMVwiLFxuXHQgIGVsbGlwc2U6IFwiaW50bFwiLFxuXHQgIGRhdHVtTmFtZTogXCJSZXNlYXUgTmF0aW9uYWwgQmVsZ2UgMTk3MlwiXG5cdH07XG5cblx0ZnVuY3Rpb24gZGF0dW0oZGF0dW1Db2RlLCBkYXR1bV9wYXJhbXMsIGEsIGIsIGVzLCBlcDIpIHtcblx0ICB2YXIgb3V0ID0ge307XG5cblx0ICBpZiAoZGF0dW1Db2RlID09PSB1bmRlZmluZWQgfHwgZGF0dW1Db2RlID09PSAnbm9uZScpIHtcblx0ICAgIG91dC5kYXR1bV90eXBlID0gUEpEX05PREFUVU07XG5cdCAgfSBlbHNlIHtcblx0ICAgIG91dC5kYXR1bV90eXBlID0gUEpEX1dHUzg0O1xuXHQgIH1cblxuXHQgIGlmIChkYXR1bV9wYXJhbXMpIHtcblx0ICAgIG91dC5kYXR1bV9wYXJhbXMgPSBkYXR1bV9wYXJhbXMubWFwKHBhcnNlRmxvYXQpO1xuXHQgICAgaWYgKG91dC5kYXR1bV9wYXJhbXNbMF0gIT09IDAgfHwgb3V0LmRhdHVtX3BhcmFtc1sxXSAhPT0gMCB8fCBvdXQuZGF0dW1fcGFyYW1zWzJdICE9PSAwKSB7XG5cdCAgICAgIG91dC5kYXR1bV90eXBlID0gUEpEXzNQQVJBTTtcblx0ICAgIH1cblx0ICAgIGlmIChvdXQuZGF0dW1fcGFyYW1zLmxlbmd0aCA+IDMpIHtcblx0ICAgICAgaWYgKG91dC5kYXR1bV9wYXJhbXNbM10gIT09IDAgfHwgb3V0LmRhdHVtX3BhcmFtc1s0XSAhPT0gMCB8fCBvdXQuZGF0dW1fcGFyYW1zWzVdICE9PSAwIHx8IG91dC5kYXR1bV9wYXJhbXNbNl0gIT09IDApIHtcblx0ICAgICAgICBvdXQuZGF0dW1fdHlwZSA9IFBKRF83UEFSQU07XG5cdCAgICAgICAgb3V0LmRhdHVtX3BhcmFtc1szXSAqPSBTRUNfVE9fUkFEO1xuXHQgICAgICAgIG91dC5kYXR1bV9wYXJhbXNbNF0gKj0gU0VDX1RPX1JBRDtcblx0ICAgICAgICBvdXQuZGF0dW1fcGFyYW1zWzVdICo9IFNFQ19UT19SQUQ7XG5cdCAgICAgICAgb3V0LmRhdHVtX3BhcmFtc1s2XSA9IChvdXQuZGF0dW1fcGFyYW1zWzZdIC8gMTAwMDAwMC4wKSArIDEuMDtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgIH1cblxuXHQgIG91dC5hID0gYTsgLy9kYXR1bSBvYmplY3QgYWxzbyB1c2VzIHRoZXNlIHZhbHVlc1xuXHQgIG91dC5iID0gYjtcblx0ICBvdXQuZXMgPSBlcztcblx0ICBvdXQuZXAyID0gZXAyO1xuXHQgIHJldHVybiBvdXQ7XG5cdH1cblxuXHRmdW5jdGlvbiBQcm9qZWN0aW9uJDEoc3JzQ29kZSxjYWxsYmFjaykge1xuXHQgIGlmICghKHRoaXMgaW5zdGFuY2VvZiBQcm9qZWN0aW9uJDEpKSB7XG5cdCAgICByZXR1cm4gbmV3IFByb2plY3Rpb24kMShzcnNDb2RlKTtcblx0ICB9XG5cdCAgY2FsbGJhY2sgPSBjYWxsYmFjayB8fCBmdW5jdGlvbihlcnJvcil7XG5cdCAgICBpZihlcnJvcil7XG5cdCAgICAgIHRocm93IGVycm9yO1xuXHQgICAgfVxuXHQgIH07XG5cdCAgdmFyIGpzb24gPSBwYXJzZShzcnNDb2RlKTtcblx0ICBpZih0eXBlb2YganNvbiAhPT0gJ29iamVjdCcpe1xuXHQgICAgY2FsbGJhY2soc3JzQ29kZSk7XG5cdCAgICByZXR1cm47XG5cdCAgfVxuXHQgIHZhciBvdXJQcm9qID0gUHJvamVjdGlvbiQxLnByb2plY3Rpb25zLmdldChqc29uLnByb2pOYW1lKTtcblx0ICBpZighb3VyUHJvail7XG5cdCAgICBjYWxsYmFjayhzcnNDb2RlKTtcblx0ICAgIHJldHVybjtcblx0ICB9XG5cdCAgaWYgKGpzb24uZGF0dW1Db2RlICYmIGpzb24uZGF0dW1Db2RlICE9PSAnbm9uZScpIHtcblx0ICAgIHZhciBkYXR1bURlZiA9IG1hdGNoKGV4cG9ydHMkMywganNvbi5kYXR1bUNvZGUpO1xuXHQgICAgaWYgKGRhdHVtRGVmKSB7XG5cdCAgICAgIGpzb24uZGF0dW1fcGFyYW1zID0gZGF0dW1EZWYudG93Z3M4NCA/IGRhdHVtRGVmLnRvd2dzODQuc3BsaXQoJywnKSA6IG51bGw7XG5cdCAgICAgIGpzb24uZWxscHMgPSBkYXR1bURlZi5lbGxpcHNlO1xuXHQgICAgICBqc29uLmRhdHVtTmFtZSA9IGRhdHVtRGVmLmRhdHVtTmFtZSA/IGRhdHVtRGVmLmRhdHVtTmFtZSA6IGpzb24uZGF0dW1Db2RlO1xuXHQgICAgfVxuXHQgIH1cblx0ICBqc29uLmswID0ganNvbi5rMCB8fCAxLjA7XG5cdCAganNvbi5heGlzID0ganNvbi5heGlzIHx8ICdlbnUnO1xuXHQgIGpzb24uZWxscHMgPSBqc29uLmVsbHBzIHx8ICd3Z3M4NCc7XG5cdCAgdmFyIHNwaGVyZV8gPSBzcGhlcmUoanNvbi5hLCBqc29uLmIsIGpzb24ucmYsIGpzb24uZWxscHMsIGpzb24uc3BoZXJlKTtcblx0ICB2YXIgZWNjID0gZWNjZW50cmljaXR5KHNwaGVyZV8uYSwgc3BoZXJlXy5iLCBzcGhlcmVfLnJmLCBqc29uLlJfQSk7XG5cdCAgdmFyIGRhdHVtT2JqID0ganNvbi5kYXR1bSB8fCBkYXR1bShqc29uLmRhdHVtQ29kZSwganNvbi5kYXR1bV9wYXJhbXMsIHNwaGVyZV8uYSwgc3BoZXJlXy5iLCBlY2MuZXMsIGVjYy5lcDIpO1xuXG5cdCAgZXh0ZW5kKHRoaXMsIGpzb24pOyAvLyB0cmFuc2ZlciBldmVyeXRoaW5nIG92ZXIgZnJvbSB0aGUgcHJvamVjdGlvbiBiZWNhdXNlIHdlIGRvbid0IGtub3cgd2hhdCB3ZSdsbCBuZWVkXG5cdCAgZXh0ZW5kKHRoaXMsIG91clByb2opOyAvLyB0cmFuc2ZlciBhbGwgdGhlIG1ldGhvZHMgZnJvbSB0aGUgcHJvamVjdGlvblxuXG5cdCAgLy8gY29weSB0aGUgNCB0aGluZ3Mgb3ZlciB3ZSBjYWx1bGF0ZWQgaW4gZGVyaXZlQ29uc3RhbnRzLnNwaGVyZVxuXHQgIHRoaXMuYSA9IHNwaGVyZV8uYTtcblx0ICB0aGlzLmIgPSBzcGhlcmVfLmI7XG5cdCAgdGhpcy5yZiA9IHNwaGVyZV8ucmY7XG5cdCAgdGhpcy5zcGhlcmUgPSBzcGhlcmVfLnNwaGVyZTtcblxuXHQgIC8vIGNvcHkgdGhlIDMgdGhpbmdzIHdlIGNhbGN1bGF0ZWQgaW4gZGVyaXZlQ29uc3RhbnRzLmVjY2VudHJpY2l0eVxuXHQgIHRoaXMuZXMgPSBlY2MuZXM7XG5cdCAgdGhpcy5lID0gZWNjLmU7XG5cdCAgdGhpcy5lcDIgPSBlY2MuZXAyO1xuXG5cdCAgLy8gYWRkIGluIHRoZSBkYXR1bSBvYmplY3Rcblx0ICB0aGlzLmRhdHVtID0gZGF0dW1PYmo7XG5cblx0ICAvLyBpbml0IHRoZSBwcm9qZWN0aW9uXG5cdCAgdGhpcy5pbml0KCk7XG5cblx0ICAvLyBsZWdlY3kgY2FsbGJhY2sgZnJvbSBiYWNrIGluIHRoZSBkYXkgd2hlbiBpdCB3ZW50IHRvIHNwYXRpYWxyZWZlcmVuY2Uub3JnXG5cdCAgY2FsbGJhY2sobnVsbCwgdGhpcyk7XG5cblx0fVxuXHRQcm9qZWN0aW9uJDEucHJvamVjdGlvbnMgPSBwcm9qZWN0aW9ucztcblx0UHJvamVjdGlvbiQxLnByb2plY3Rpb25zLnN0YXJ0KCk7XG5cblx0ZnVuY3Rpb24gY29tcGFyZURhdHVtcyhzb3VyY2UsIGRlc3QpIHtcblx0ICBpZiAoc291cmNlLmRhdHVtX3R5cGUgIT09IGRlc3QuZGF0dW1fdHlwZSkge1xuXHQgICAgcmV0dXJuIGZhbHNlOyAvLyBmYWxzZSwgZGF0dW1zIGFyZSBub3QgZXF1YWxcblx0ICB9IGVsc2UgaWYgKHNvdXJjZS5hICE9PSBkZXN0LmEgfHwgTWF0aC5hYnMoc291cmNlLmVzIC0gZGVzdC5lcykgPiAwLjAwMDAwMDAwMDA1MCkge1xuXHQgICAgLy8gdGhlIHRvbGVyYW5jZSBmb3IgZXMgaXMgdG8gZW5zdXJlIHRoYXQgR1JTODAgYW5kIFdHUzg0XG5cdCAgICAvLyBhcmUgY29uc2lkZXJlZCBpZGVudGljYWxcblx0ICAgIHJldHVybiBmYWxzZTtcblx0ICB9IGVsc2UgaWYgKHNvdXJjZS5kYXR1bV90eXBlID09PSBQSkRfM1BBUkFNKSB7XG5cdCAgICByZXR1cm4gKHNvdXJjZS5kYXR1bV9wYXJhbXNbMF0gPT09IGRlc3QuZGF0dW1fcGFyYW1zWzBdICYmIHNvdXJjZS5kYXR1bV9wYXJhbXNbMV0gPT09IGRlc3QuZGF0dW1fcGFyYW1zWzFdICYmIHNvdXJjZS5kYXR1bV9wYXJhbXNbMl0gPT09IGRlc3QuZGF0dW1fcGFyYW1zWzJdKTtcblx0ICB9IGVsc2UgaWYgKHNvdXJjZS5kYXR1bV90eXBlID09PSBQSkRfN1BBUkFNKSB7XG5cdCAgICByZXR1cm4gKHNvdXJjZS5kYXR1bV9wYXJhbXNbMF0gPT09IGRlc3QuZGF0dW1fcGFyYW1zWzBdICYmIHNvdXJjZS5kYXR1bV9wYXJhbXNbMV0gPT09IGRlc3QuZGF0dW1fcGFyYW1zWzFdICYmIHNvdXJjZS5kYXR1bV9wYXJhbXNbMl0gPT09IGRlc3QuZGF0dW1fcGFyYW1zWzJdICYmIHNvdXJjZS5kYXR1bV9wYXJhbXNbM10gPT09IGRlc3QuZGF0dW1fcGFyYW1zWzNdICYmIHNvdXJjZS5kYXR1bV9wYXJhbXNbNF0gPT09IGRlc3QuZGF0dW1fcGFyYW1zWzRdICYmIHNvdXJjZS5kYXR1bV9wYXJhbXNbNV0gPT09IGRlc3QuZGF0dW1fcGFyYW1zWzVdICYmIHNvdXJjZS5kYXR1bV9wYXJhbXNbNl0gPT09IGRlc3QuZGF0dW1fcGFyYW1zWzZdKTtcblx0ICB9IGVsc2Uge1xuXHQgICAgcmV0dXJuIHRydWU7IC8vIGRhdHVtcyBhcmUgZXF1YWxcblx0ICB9XG5cdH0gLy8gY3NfY29tcGFyZV9kYXR1bXMoKVxuXG5cdC8qXG5cdCAqIFRoZSBmdW5jdGlvbiBDb252ZXJ0X0dlb2RldGljX1RvX0dlb2NlbnRyaWMgY29udmVydHMgZ2VvZGV0aWMgY29vcmRpbmF0ZXNcblx0ICogKGxhdGl0dWRlLCBsb25naXR1ZGUsIGFuZCBoZWlnaHQpIHRvIGdlb2NlbnRyaWMgY29vcmRpbmF0ZXMgKFgsIFksIFopLFxuXHQgKiBhY2NvcmRpbmcgdG8gdGhlIGN1cnJlbnQgZWxsaXBzb2lkIHBhcmFtZXRlcnMuXG5cdCAqXG5cdCAqICAgIExhdGl0dWRlICA6IEdlb2RldGljIGxhdGl0dWRlIGluIHJhZGlhbnMgICAgICAgICAgICAgICAgICAgICAoaW5wdXQpXG5cdCAqICAgIExvbmdpdHVkZSA6IEdlb2RldGljIGxvbmdpdHVkZSBpbiByYWRpYW5zICAgICAgICAgICAgICAgICAgICAoaW5wdXQpXG5cdCAqICAgIEhlaWdodCAgICA6IEdlb2RldGljIGhlaWdodCwgaW4gbWV0ZXJzICAgICAgICAgICAgICAgICAgICAgICAoaW5wdXQpXG5cdCAqICAgIFggICAgICAgICA6IENhbGN1bGF0ZWQgR2VvY2VudHJpYyBYIGNvb3JkaW5hdGUsIGluIG1ldGVycyAgICAob3V0cHV0KVxuXHQgKiAgICBZICAgICAgICAgOiBDYWxjdWxhdGVkIEdlb2NlbnRyaWMgWSBjb29yZGluYXRlLCBpbiBtZXRlcnMgICAgKG91dHB1dClcblx0ICogICAgWiAgICAgICAgIDogQ2FsY3VsYXRlZCBHZW9jZW50cmljIFogY29vcmRpbmF0ZSwgaW4gbWV0ZXJzICAgIChvdXRwdXQpXG5cdCAqXG5cdCAqL1xuXHRmdW5jdGlvbiBnZW9kZXRpY1RvR2VvY2VudHJpYyhwLCBlcywgYSkge1xuXHQgIHZhciBMb25naXR1ZGUgPSBwLng7XG5cdCAgdmFyIExhdGl0dWRlID0gcC55O1xuXHQgIHZhciBIZWlnaHQgPSBwLnogPyBwLnogOiAwOyAvL1ogdmFsdWUgbm90IGFsd2F5cyBzdXBwbGllZFxuXG5cdCAgdmFyIFJuOyAvKiAgRWFydGggcmFkaXVzIGF0IGxvY2F0aW9uICAqL1xuXHQgIHZhciBTaW5fTGF0OyAvKiAgTWF0aC5zaW4oTGF0aXR1ZGUpICAqL1xuXHQgIHZhciBTaW4yX0xhdDsgLyogIFNxdWFyZSBvZiBNYXRoLnNpbihMYXRpdHVkZSkgICovXG5cdCAgdmFyIENvc19MYXQ7IC8qICBNYXRoLmNvcyhMYXRpdHVkZSkgICovXG5cblx0ICAvKlxuXHQgICAqKiBEb24ndCBibG93IHVwIGlmIExhdGl0dWRlIGlzIGp1c3QgYSBsaXR0bGUgb3V0IG9mIHRoZSB2YWx1ZVxuXHQgICAqKiByYW5nZSBhcyBpdCBtYXkganVzdCBiZSBhIHJvdW5kaW5nIGlzc3VlLiAgQWxzbyByZW1vdmVkIGxvbmdpdHVkZVxuXHQgICAqKiB0ZXN0LCBpdCBzaG91bGQgYmUgd3JhcHBlZCBieSBNYXRoLmNvcygpIGFuZCBNYXRoLnNpbigpLiAgTkZXIGZvciBQUk9KLjQsIFNlcC8yMDAxLlxuXHQgICAqL1xuXHQgIGlmIChMYXRpdHVkZSA8IC1IQUxGX1BJICYmIExhdGl0dWRlID4gLTEuMDAxICogSEFMRl9QSSkge1xuXHQgICAgTGF0aXR1ZGUgPSAtSEFMRl9QSTtcblx0ICB9IGVsc2UgaWYgKExhdGl0dWRlID4gSEFMRl9QSSAmJiBMYXRpdHVkZSA8IDEuMDAxICogSEFMRl9QSSkge1xuXHQgICAgTGF0aXR1ZGUgPSBIQUxGX1BJO1xuXHQgIH0gZWxzZSBpZiAoKExhdGl0dWRlIDwgLUhBTEZfUEkpIHx8IChMYXRpdHVkZSA+IEhBTEZfUEkpKSB7XG5cdCAgICAvKiBMYXRpdHVkZSBvdXQgb2YgcmFuZ2UgKi9cblx0ICAgIC8vLi5yZXBvcnRFcnJvcignZ2VvY2VudDpsYXQgb3V0IG9mIHJhbmdlOicgKyBMYXRpdHVkZSk7XG5cdCAgICByZXR1cm4gbnVsbDtcblx0ICB9XG5cblx0ICBpZiAoTG9uZ2l0dWRlID4gTWF0aC5QSSkge1xuXHQgICAgTG9uZ2l0dWRlIC09ICgyICogTWF0aC5QSSk7XG5cdCAgfVxuXHQgIFNpbl9MYXQgPSBNYXRoLnNpbihMYXRpdHVkZSk7XG5cdCAgQ29zX0xhdCA9IE1hdGguY29zKExhdGl0dWRlKTtcblx0ICBTaW4yX0xhdCA9IFNpbl9MYXQgKiBTaW5fTGF0O1xuXHQgIFJuID0gYSAvIChNYXRoLnNxcnQoMS4wZTAgLSBlcyAqIFNpbjJfTGF0KSk7XG5cdCAgcmV0dXJuIHtcblx0ICAgIHg6IChSbiArIEhlaWdodCkgKiBDb3NfTGF0ICogTWF0aC5jb3MoTG9uZ2l0dWRlKSxcblx0ICAgIHk6IChSbiArIEhlaWdodCkgKiBDb3NfTGF0ICogTWF0aC5zaW4oTG9uZ2l0dWRlKSxcblx0ICAgIHo6ICgoUm4gKiAoMSAtIGVzKSkgKyBIZWlnaHQpICogU2luX0xhdFxuXHQgIH07XG5cdH0gLy8gY3NfZ2VvZGV0aWNfdG9fZ2VvY2VudHJpYygpXG5cblx0ZnVuY3Rpb24gZ2VvY2VudHJpY1RvR2VvZGV0aWMocCwgZXMsIGEsIGIpIHtcblx0ICAvKiBsb2NhbCBkZWZpbnRpb25zIGFuZCB2YXJpYWJsZXMgKi9cblx0ICAvKiBlbmQtY3JpdGVyaXVtIG9mIGxvb3AsIGFjY3VyYWN5IG9mIHNpbihMYXRpdHVkZSkgKi9cblx0ICB2YXIgZ2VuYXUgPSAxZS0xMjtcblx0ICB2YXIgZ2VuYXUyID0gKGdlbmF1ICogZ2VuYXUpO1xuXHQgIHZhciBtYXhpdGVyID0gMzA7XG5cblx0ICB2YXIgUDsgLyogZGlzdGFuY2UgYmV0d2VlbiBzZW1pLW1pbm9yIGF4aXMgYW5kIGxvY2F0aW9uICovXG5cdCAgdmFyIFJSOyAvKiBkaXN0YW5jZSBiZXR3ZWVuIGNlbnRlciBhbmQgbG9jYXRpb24gKi9cblx0ICB2YXIgQ1Q7IC8qIHNpbiBvZiBnZW9jZW50cmljIGxhdGl0dWRlICovXG5cdCAgdmFyIFNUOyAvKiBjb3Mgb2YgZ2VvY2VudHJpYyBsYXRpdHVkZSAqL1xuXHQgIHZhciBSWDtcblx0ICB2YXIgUks7XG5cdCAgdmFyIFJOOyAvKiBFYXJ0aCByYWRpdXMgYXQgbG9jYXRpb24gKi9cblx0ICB2YXIgQ1BISTA7IC8qIGNvcyBvZiBzdGFydCBvciBvbGQgZ2VvZGV0aWMgbGF0aXR1ZGUgaW4gaXRlcmF0aW9ucyAqL1xuXHQgIHZhciBTUEhJMDsgLyogc2luIG9mIHN0YXJ0IG9yIG9sZCBnZW9kZXRpYyBsYXRpdHVkZSBpbiBpdGVyYXRpb25zICovXG5cdCAgdmFyIENQSEk7IC8qIGNvcyBvZiBzZWFyY2hlZCBnZW9kZXRpYyBsYXRpdHVkZSAqL1xuXHQgIHZhciBTUEhJOyAvKiBzaW4gb2Ygc2VhcmNoZWQgZ2VvZGV0aWMgbGF0aXR1ZGUgKi9cblx0ICB2YXIgU0RQSEk7IC8qIGVuZC1jcml0ZXJpdW06IGFkZGl0aW9uLXRoZW9yZW0gb2Ygc2luKExhdGl0dWRlKGl0ZXIpLUxhdGl0dWRlKGl0ZXItMSkpICovXG5cdCAgdmFyIGl0ZXI7IC8qICMgb2YgY29udGlub3VzIGl0ZXJhdGlvbiwgbWF4LiAzMCBpcyBhbHdheXMgZW5vdWdoIChzLmEuKSAqL1xuXG5cdCAgdmFyIFggPSBwLng7XG5cdCAgdmFyIFkgPSBwLnk7XG5cdCAgdmFyIFogPSBwLnogPyBwLnogOiAwLjA7IC8vWiB2YWx1ZSBub3QgYWx3YXlzIHN1cHBsaWVkXG5cdCAgdmFyIExvbmdpdHVkZTtcblx0ICB2YXIgTGF0aXR1ZGU7XG5cdCAgdmFyIEhlaWdodDtcblxuXHQgIFAgPSBNYXRoLnNxcnQoWCAqIFggKyBZICogWSk7XG5cdCAgUlIgPSBNYXRoLnNxcnQoWCAqIFggKyBZICogWSArIFogKiBaKTtcblxuXHQgIC8qICAgICAgc3BlY2lhbCBjYXNlcyBmb3IgbGF0aXR1ZGUgYW5kIGxvbmdpdHVkZSAqL1xuXHQgIGlmIChQIC8gYSA8IGdlbmF1KSB7XG5cblx0ICAgIC8qICBzcGVjaWFsIGNhc2UsIGlmIFA9MC4gKFg9MC4sIFk9MC4pICovXG5cdCAgICBMb25naXR1ZGUgPSAwLjA7XG5cblx0ICAgIC8qICBpZiAoWCxZLFopPSgwLiwwLiwwLikgdGhlbiBIZWlnaHQgYmVjb21lcyBzZW1pLW1pbm9yIGF4aXNcblx0ICAgICAqICBvZiBlbGxpcHNvaWQgKD1jZW50ZXIgb2YgbWFzcyksIExhdGl0dWRlIGJlY29tZXMgUEkvMiAqL1xuXHQgICAgaWYgKFJSIC8gYSA8IGdlbmF1KSB7XG5cdCAgICAgIExhdGl0dWRlID0gSEFMRl9QSTtcblx0ICAgICAgSGVpZ2h0ID0gLWI7XG5cdCAgICAgIHJldHVybiB7XG5cdCAgICAgICAgeDogcC54LFxuXHQgICAgICAgIHk6IHAueSxcblx0ICAgICAgICB6OiBwLnpcblx0ICAgICAgfTtcblx0ICAgIH1cblx0ICB9IGVsc2Uge1xuXHQgICAgLyogIGVsbGlwc29pZGFsIChnZW9kZXRpYykgbG9uZ2l0dWRlXG5cdCAgICAgKiAgaW50ZXJ2YWw6IC1QSSA8IExvbmdpdHVkZSA8PSArUEkgKi9cblx0ICAgIExvbmdpdHVkZSA9IE1hdGguYXRhbjIoWSwgWCk7XG5cdCAgfVxuXG5cdCAgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblx0ICAgKiBGb2xsb3dpbmcgaXRlcmF0aXZlIGFsZ29yaXRobSB3YXMgZGV2ZWxvcHBlZCBieVxuXHQgICAqIFwiSW5zdGl0dXQgZm9yIEVyZG1lc3N1bmdcIiwgVW5pdmVyc2l0eSBvZiBIYW5ub3ZlciwgSnVseSAxOTg4LlxuXHQgICAqIEludGVybmV0OiB3d3cuaWZlLnVuaS1oYW5ub3Zlci5kZVxuXHQgICAqIEl0ZXJhdGl2ZSBjb21wdXRhdGlvbiBvZiBDUEhJLFNQSEkgYW5kIEhlaWdodC5cblx0ICAgKiBJdGVyYXRpb24gb2YgQ1BISSBhbmQgU1BISSB0byAxMCoqLTEyIHJhZGlhbiByZXNwLlxuXHQgICAqIDIqMTAqKi03IGFyY3NlYy5cblx0ICAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXHQgICAqL1xuXHQgIENUID0gWiAvIFJSO1xuXHQgIFNUID0gUCAvIFJSO1xuXHQgIFJYID0gMS4wIC8gTWF0aC5zcXJ0KDEuMCAtIGVzICogKDIuMCAtIGVzKSAqIFNUICogU1QpO1xuXHQgIENQSEkwID0gU1QgKiAoMS4wIC0gZXMpICogUlg7XG5cdCAgU1BISTAgPSBDVCAqIFJYO1xuXHQgIGl0ZXIgPSAwO1xuXG5cdCAgLyogbG9vcCB0byBmaW5kIHNpbihMYXRpdHVkZSkgcmVzcC4gTGF0aXR1ZGVcblx0ICAgKiB1bnRpbCB8c2luKExhdGl0dWRlKGl0ZXIpLUxhdGl0dWRlKGl0ZXItMSkpfCA8IGdlbmF1ICovXG5cdCAgZG8ge1xuXHQgICAgaXRlcisrO1xuXHQgICAgUk4gPSBhIC8gTWF0aC5zcXJ0KDEuMCAtIGVzICogU1BISTAgKiBTUEhJMCk7XG5cblx0ICAgIC8qICBlbGxpcHNvaWRhbCAoZ2VvZGV0aWMpIGhlaWdodCAqL1xuXHQgICAgSGVpZ2h0ID0gUCAqIENQSEkwICsgWiAqIFNQSEkwIC0gUk4gKiAoMS4wIC0gZXMgKiBTUEhJMCAqIFNQSEkwKTtcblxuXHQgICAgUksgPSBlcyAqIFJOIC8gKFJOICsgSGVpZ2h0KTtcblx0ICAgIFJYID0gMS4wIC8gTWF0aC5zcXJ0KDEuMCAtIFJLICogKDIuMCAtIFJLKSAqIFNUICogU1QpO1xuXHQgICAgQ1BISSA9IFNUICogKDEuMCAtIFJLKSAqIFJYO1xuXHQgICAgU1BISSA9IENUICogUlg7XG5cdCAgICBTRFBISSA9IFNQSEkgKiBDUEhJMCAtIENQSEkgKiBTUEhJMDtcblx0ICAgIENQSEkwID0gQ1BISTtcblx0ICAgIFNQSEkwID0gU1BISTtcblx0ICB9XG5cdCAgd2hpbGUgKFNEUEhJICogU0RQSEkgPiBnZW5hdTIgJiYgaXRlciA8IG1heGl0ZXIpO1xuXG5cdCAgLyogICAgICBlbGxpcHNvaWRhbCAoZ2VvZGV0aWMpIGxhdGl0dWRlICovXG5cdCAgTGF0aXR1ZGUgPSBNYXRoLmF0YW4oU1BISSAvIE1hdGguYWJzKENQSEkpKTtcblx0ICByZXR1cm4ge1xuXHQgICAgeDogTG9uZ2l0dWRlLFxuXHQgICAgeTogTGF0aXR1ZGUsXG5cdCAgICB6OiBIZWlnaHRcblx0ICB9O1xuXHR9IC8vIGNzX2dlb2NlbnRyaWNfdG9fZ2VvZGV0aWMoKVxuXG5cdC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXHQvLyBwal9nZW9jZW50aWNfdG9fd2dzODQoIHAgKVxuXHQvLyAgcCA9IHBvaW50IHRvIHRyYW5zZm9ybSBpbiBnZW9jZW50cmljIGNvb3JkaW5hdGVzICh4LHkseilcblxuXG5cdC8qKiBwb2ludCBvYmplY3QsIG5vdGhpbmcgZmFuY3ksIGp1c3QgYWxsb3dzIHZhbHVlcyB0byBiZVxuXHQgICAgcGFzc2VkIGJhY2sgYW5kIGZvcnRoIGJ5IHJlZmVyZW5jZSByYXRoZXIgdGhhbiBieSB2YWx1ZS5cblx0ICAgIE90aGVyIHBvaW50IGNsYXNzZXMgbWF5IGJlIHVzZWQgYXMgbG9uZyBhcyB0aGV5IGhhdmVcblx0ICAgIHggYW5kIHkgcHJvcGVydGllcywgd2hpY2ggd2lsbCBnZXQgbW9kaWZpZWQgaW4gdGhlIHRyYW5zZm9ybSBtZXRob2QuXG5cdCovXG5cdGZ1bmN0aW9uIGdlb2NlbnRyaWNUb1dnczg0KHAsIGRhdHVtX3R5cGUsIGRhdHVtX3BhcmFtcykge1xuXG5cdCAgaWYgKGRhdHVtX3R5cGUgPT09IFBKRF8zUEFSQU0pIHtcblx0ICAgIC8vIGlmKCB4W2lvXSA9PT0gSFVHRV9WQUwgKVxuXHQgICAgLy8gICAgY29udGludWU7XG5cdCAgICByZXR1cm4ge1xuXHQgICAgICB4OiBwLnggKyBkYXR1bV9wYXJhbXNbMF0sXG5cdCAgICAgIHk6IHAueSArIGRhdHVtX3BhcmFtc1sxXSxcblx0ICAgICAgejogcC56ICsgZGF0dW1fcGFyYW1zWzJdLFxuXHQgICAgfTtcblx0ICB9IGVsc2UgaWYgKGRhdHVtX3R5cGUgPT09IFBKRF83UEFSQU0pIHtcblx0ICAgIHZhciBEeF9CRiA9IGRhdHVtX3BhcmFtc1swXTtcblx0ICAgIHZhciBEeV9CRiA9IGRhdHVtX3BhcmFtc1sxXTtcblx0ICAgIHZhciBEel9CRiA9IGRhdHVtX3BhcmFtc1syXTtcblx0ICAgIHZhciBSeF9CRiA9IGRhdHVtX3BhcmFtc1szXTtcblx0ICAgIHZhciBSeV9CRiA9IGRhdHVtX3BhcmFtc1s0XTtcblx0ICAgIHZhciBSel9CRiA9IGRhdHVtX3BhcmFtc1s1XTtcblx0ICAgIHZhciBNX0JGID0gZGF0dW1fcGFyYW1zWzZdO1xuXHQgICAgLy8gaWYoIHhbaW9dID09PSBIVUdFX1ZBTCApXG5cdCAgICAvLyAgICBjb250aW51ZTtcblx0ICAgIHJldHVybiB7XG5cdCAgICAgIHg6IE1fQkYgKiAocC54IC0gUnpfQkYgKiBwLnkgKyBSeV9CRiAqIHAueikgKyBEeF9CRixcblx0ICAgICAgeTogTV9CRiAqIChSel9CRiAqIHAueCArIHAueSAtIFJ4X0JGICogcC56KSArIER5X0JGLFxuXHQgICAgICB6OiBNX0JGICogKC1SeV9CRiAqIHAueCArIFJ4X0JGICogcC55ICsgcC56KSArIER6X0JGXG5cdCAgICB9O1xuXHQgIH1cblx0fSAvLyBjc19nZW9jZW50cmljX3RvX3dnczg0XG5cblx0LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cdC8vIHBqX2dlb2NlbnRpY19mcm9tX3dnczg0KClcblx0Ly8gIGNvb3JkaW5hdGUgc3lzdGVtIGRlZmluaXRpb24sXG5cdC8vICBwb2ludCB0byB0cmFuc2Zvcm0gaW4gZ2VvY2VudHJpYyBjb29yZGluYXRlcyAoeCx5LHopXG5cdGZ1bmN0aW9uIGdlb2NlbnRyaWNGcm9tV2dzODQocCwgZGF0dW1fdHlwZSwgZGF0dW1fcGFyYW1zKSB7XG5cblx0ICBpZiAoZGF0dW1fdHlwZSA9PT0gUEpEXzNQQVJBTSkge1xuXHQgICAgLy9pZiggeFtpb10gPT09IEhVR0VfVkFMIClcblx0ICAgIC8vICAgIGNvbnRpbnVlO1xuXHQgICAgcmV0dXJuIHtcblx0ICAgICAgeDogcC54IC0gZGF0dW1fcGFyYW1zWzBdLFxuXHQgICAgICB5OiBwLnkgLSBkYXR1bV9wYXJhbXNbMV0sXG5cdCAgICAgIHo6IHAueiAtIGRhdHVtX3BhcmFtc1syXSxcblx0ICAgIH07XG5cblx0ICB9IGVsc2UgaWYgKGRhdHVtX3R5cGUgPT09IFBKRF83UEFSQU0pIHtcblx0ICAgIHZhciBEeF9CRiA9IGRhdHVtX3BhcmFtc1swXTtcblx0ICAgIHZhciBEeV9CRiA9IGRhdHVtX3BhcmFtc1sxXTtcblx0ICAgIHZhciBEel9CRiA9IGRhdHVtX3BhcmFtc1syXTtcblx0ICAgIHZhciBSeF9CRiA9IGRhdHVtX3BhcmFtc1szXTtcblx0ICAgIHZhciBSeV9CRiA9IGRhdHVtX3BhcmFtc1s0XTtcblx0ICAgIHZhciBSel9CRiA9IGRhdHVtX3BhcmFtc1s1XTtcblx0ICAgIHZhciBNX0JGID0gZGF0dW1fcGFyYW1zWzZdO1xuXHQgICAgdmFyIHhfdG1wID0gKHAueCAtIER4X0JGKSAvIE1fQkY7XG5cdCAgICB2YXIgeV90bXAgPSAocC55IC0gRHlfQkYpIC8gTV9CRjtcblx0ICAgIHZhciB6X3RtcCA9IChwLnogLSBEel9CRikgLyBNX0JGO1xuXHQgICAgLy9pZiggeFtpb10gPT09IEhVR0VfVkFMIClcblx0ICAgIC8vICAgIGNvbnRpbnVlO1xuXG5cdCAgICByZXR1cm4ge1xuXHQgICAgICB4OiB4X3RtcCArIFJ6X0JGICogeV90bXAgLSBSeV9CRiAqIHpfdG1wLFxuXHQgICAgICB5OiAtUnpfQkYgKiB4X3RtcCArIHlfdG1wICsgUnhfQkYgKiB6X3RtcCxcblx0ICAgICAgejogUnlfQkYgKiB4X3RtcCAtIFJ4X0JGICogeV90bXAgKyB6X3RtcFxuXHQgICAgfTtcblx0ICB9IC8vY3NfZ2VvY2VudHJpY19mcm9tX3dnczg0KClcblx0fVxuXG5cdGZ1bmN0aW9uIGNoZWNrUGFyYW1zKHR5cGUpIHtcblx0ICByZXR1cm4gKHR5cGUgPT09IFBKRF8zUEFSQU0gfHwgdHlwZSA9PT0gUEpEXzdQQVJBTSk7XG5cdH1cblxuXHR2YXIgZGF0dW1fdHJhbnNmb3JtID0gZnVuY3Rpb24oc291cmNlLCBkZXN0LCBwb2ludCkge1xuXHQgIC8vIFNob3J0IGN1dCBpZiB0aGUgZGF0dW1zIGFyZSBpZGVudGljYWwuXG5cdCAgaWYgKGNvbXBhcmVEYXR1bXMoc291cmNlLCBkZXN0KSkge1xuXHQgICAgcmV0dXJuIHBvaW50OyAvLyBpbiB0aGlzIGNhc2UsIHplcm8gaXMgc3VjZXNzLFxuXHQgICAgLy8gd2hlcmVhcyBjc19jb21wYXJlX2RhdHVtcyByZXR1cm5zIDEgdG8gaW5kaWNhdGUgVFJVRVxuXHQgICAgLy8gY29uZnVzaW5nLCBzaG91bGQgZml4IHRoaXNcblx0ICB9XG5cblx0ICAvLyBFeHBsaWNpdGx5IHNraXAgZGF0dW0gdHJhbnNmb3JtIGJ5IHNldHRpbmcgJ2RhdHVtPW5vbmUnIGFzIHBhcmFtZXRlciBmb3IgZWl0aGVyIHNvdXJjZSBvciBkZXN0XG5cdCAgaWYgKHNvdXJjZS5kYXR1bV90eXBlID09PSBQSkRfTk9EQVRVTSB8fCBkZXN0LmRhdHVtX3R5cGUgPT09IFBKRF9OT0RBVFVNKSB7XG5cdCAgICByZXR1cm4gcG9pbnQ7XG5cdCAgfVxuXG5cdCAgLy8gSWYgdGhpcyBkYXR1bSByZXF1aXJlcyBncmlkIHNoaWZ0cywgdGhlbiBhcHBseSBpdCB0byBnZW9kZXRpYyBjb29yZGluYXRlcy5cblxuXHQgIC8vIERvIHdlIG5lZWQgdG8gZ28gdGhyb3VnaCBnZW9jZW50cmljIGNvb3JkaW5hdGVzP1xuXHQgIGlmIChzb3VyY2UuZXMgPT09IGRlc3QuZXMgJiYgc291cmNlLmEgPT09IGRlc3QuYSAmJiAhY2hlY2tQYXJhbXMoc291cmNlLmRhdHVtX3R5cGUpICYmICAhY2hlY2tQYXJhbXMoZGVzdC5kYXR1bV90eXBlKSkge1xuXHQgICAgcmV0dXJuIHBvaW50O1xuXHQgIH1cblxuXHQgIC8vIENvbnZlcnQgdG8gZ2VvY2VudHJpYyBjb29yZGluYXRlcy5cblx0ICBwb2ludCA9IGdlb2RldGljVG9HZW9jZW50cmljKHBvaW50LCBzb3VyY2UuZXMsIHNvdXJjZS5hKTtcblx0ICAvLyBDb252ZXJ0IGJldHdlZW4gZGF0dW1zXG5cdCAgaWYgKGNoZWNrUGFyYW1zKHNvdXJjZS5kYXR1bV90eXBlKSkge1xuXHQgICAgcG9pbnQgPSBnZW9jZW50cmljVG9XZ3M4NChwb2ludCwgc291cmNlLmRhdHVtX3R5cGUsIHNvdXJjZS5kYXR1bV9wYXJhbXMpO1xuXHQgIH1cblx0ICBpZiAoY2hlY2tQYXJhbXMoZGVzdC5kYXR1bV90eXBlKSkge1xuXHQgICAgcG9pbnQgPSBnZW9jZW50cmljRnJvbVdnczg0KHBvaW50LCBkZXN0LmRhdHVtX3R5cGUsIGRlc3QuZGF0dW1fcGFyYW1zKTtcblx0ICB9XG5cdCAgcmV0dXJuIGdlb2NlbnRyaWNUb0dlb2RldGljKHBvaW50LCBkZXN0LmVzLCBkZXN0LmEsIGRlc3QuYik7XG5cblx0fTtcblxuXHR2YXIgYWRqdXN0X2F4aXMgPSBmdW5jdGlvbihjcnMsIGRlbm9ybSwgcG9pbnQpIHtcblx0ICB2YXIgeGluID0gcG9pbnQueCxcblx0ICAgIHlpbiA9IHBvaW50LnksXG5cdCAgICB6aW4gPSBwb2ludC56IHx8IDAuMDtcblx0ICB2YXIgdiwgdCwgaTtcblx0ICB2YXIgb3V0ID0ge307XG5cdCAgZm9yIChpID0gMDsgaSA8IDM7IGkrKykge1xuXHQgICAgaWYgKGRlbm9ybSAmJiBpID09PSAyICYmIHBvaW50LnogPT09IHVuZGVmaW5lZCkge1xuXHQgICAgICBjb250aW51ZTtcblx0ICAgIH1cblx0ICAgIGlmIChpID09PSAwKSB7XG5cdCAgICAgIHYgPSB4aW47XG5cdCAgICAgIHQgPSAneCc7XG5cdCAgICB9XG5cdCAgICBlbHNlIGlmIChpID09PSAxKSB7XG5cdCAgICAgIHYgPSB5aW47XG5cdCAgICAgIHQgPSAneSc7XG5cdCAgICB9XG5cdCAgICBlbHNlIHtcblx0ICAgICAgdiA9IHppbjtcblx0ICAgICAgdCA9ICd6Jztcblx0ICAgIH1cblx0ICAgIHN3aXRjaCAoY3JzLmF4aXNbaV0pIHtcblx0ICAgIGNhc2UgJ2UnOlxuXHQgICAgICBvdXRbdF0gPSB2O1xuXHQgICAgICBicmVhaztcblx0ICAgIGNhc2UgJ3cnOlxuXHQgICAgICBvdXRbdF0gPSAtdjtcblx0ICAgICAgYnJlYWs7XG5cdCAgICBjYXNlICduJzpcblx0ICAgICAgb3V0W3RdID0gdjtcblx0ICAgICAgYnJlYWs7XG5cdCAgICBjYXNlICdzJzpcblx0ICAgICAgb3V0W3RdID0gLXY7XG5cdCAgICAgIGJyZWFrO1xuXHQgICAgY2FzZSAndSc6XG5cdCAgICAgIGlmIChwb2ludFt0XSAhPT0gdW5kZWZpbmVkKSB7XG5cdCAgICAgICAgb3V0LnogPSB2O1xuXHQgICAgICB9XG5cdCAgICAgIGJyZWFrO1xuXHQgICAgY2FzZSAnZCc6XG5cdCAgICAgIGlmIChwb2ludFt0XSAhPT0gdW5kZWZpbmVkKSB7XG5cdCAgICAgICAgb3V0LnogPSAtdjtcblx0ICAgICAgfVxuXHQgICAgICBicmVhaztcblx0ICAgIGRlZmF1bHQ6XG5cdCAgICAgIC8vY29uc29sZS5sb2coXCJFUlJPUjogdW5rbm93IGF4aXMgKFwiK2Nycy5heGlzW2ldK1wiKSAtIGNoZWNrIGRlZmluaXRpb24gb2YgXCIrY3JzLnByb2pOYW1lKTtcblx0ICAgICAgcmV0dXJuIG51bGw7XG5cdCAgICB9XG5cdCAgfVxuXHQgIHJldHVybiBvdXQ7XG5cdH07XG5cblx0dmFyIHRvUG9pbnQgPSBmdW5jdGlvbiAoYXJyYXkpe1xuXHQgIHZhciBvdXQgPSB7XG5cdCAgICB4OiBhcnJheVswXSxcblx0ICAgIHk6IGFycmF5WzFdXG5cdCAgfTtcblx0ICBpZiAoYXJyYXkubGVuZ3RoPjIpIHtcblx0ICAgIG91dC56ID0gYXJyYXlbMl07XG5cdCAgfVxuXHQgIGlmIChhcnJheS5sZW5ndGg+Mykge1xuXHQgICAgb3V0Lm0gPSBhcnJheVszXTtcblx0ICB9XG5cdCAgcmV0dXJuIG91dDtcblx0fTtcblxuXHRmdW5jdGlvbiBjaGVja05vdFdHUyhzb3VyY2UsIGRlc3QpIHtcblx0ICByZXR1cm4gKChzb3VyY2UuZGF0dW0uZGF0dW1fdHlwZSA9PT0gUEpEXzNQQVJBTSB8fCBzb3VyY2UuZGF0dW0uZGF0dW1fdHlwZSA9PT0gUEpEXzdQQVJBTSkgJiYgZGVzdC5kYXR1bUNvZGUgIT09ICdXR1M4NCcpIHx8ICgoZGVzdC5kYXR1bS5kYXR1bV90eXBlID09PSBQSkRfM1BBUkFNIHx8IGRlc3QuZGF0dW0uZGF0dW1fdHlwZSA9PT0gUEpEXzdQQVJBTSkgJiYgc291cmNlLmRhdHVtQ29kZSAhPT0gJ1dHUzg0Jyk7XG5cdH1cblxuXHRmdW5jdGlvbiB0cmFuc2Zvcm0oc291cmNlLCBkZXN0LCBwb2ludCkge1xuXHQgIHZhciB3Z3M4NDtcblx0ICBpZiAoQXJyYXkuaXNBcnJheShwb2ludCkpIHtcblx0ICAgIHBvaW50ID0gdG9Qb2ludChwb2ludCk7XG5cdCAgfVxuXG5cdCAgLy8gV29ya2Fyb3VuZCBmb3IgZGF0dW0gc2hpZnRzIHRvd2dzODQsIGlmIGVpdGhlciBzb3VyY2Ugb3IgZGVzdGluYXRpb24gcHJvamVjdGlvbiBpcyBub3Qgd2dzODRcblx0ICBpZiAoc291cmNlLmRhdHVtICYmIGRlc3QuZGF0dW0gJiYgY2hlY2tOb3RXR1Moc291cmNlLCBkZXN0KSkge1xuXHQgICAgd2dzODQgPSBuZXcgUHJvamVjdGlvbiQxKCdXR1M4NCcpO1xuXHQgICAgcG9pbnQgPSB0cmFuc2Zvcm0oc291cmNlLCB3Z3M4NCwgcG9pbnQpO1xuXHQgICAgc291cmNlID0gd2dzODQ7XG5cdCAgfVxuXHQgIC8vIERHUiwgMjAxMC8xMS8xMlxuXHQgIGlmIChzb3VyY2UuYXhpcyAhPT0gJ2VudScpIHtcblx0ICAgIHBvaW50ID0gYWRqdXN0X2F4aXMoc291cmNlLCBmYWxzZSwgcG9pbnQpO1xuXHQgIH1cblx0ICAvLyBUcmFuc2Zvcm0gc291cmNlIHBvaW50cyB0byBsb25nL2xhdCwgaWYgdGhleSBhcmVuJ3QgYWxyZWFkeS5cblx0ICBpZiAoc291cmNlLnByb2pOYW1lID09PSAnbG9uZ2xhdCcpIHtcblx0ICAgIHBvaW50ID0ge1xuXHQgICAgICB4OiBwb2ludC54ICogRDJSLFxuXHQgICAgICB5OiBwb2ludC55ICogRDJSXG5cdCAgICB9O1xuXHQgIH1cblx0ICBlbHNlIHtcblx0ICAgIGlmIChzb3VyY2UudG9fbWV0ZXIpIHtcblx0ICAgICAgcG9pbnQgPSB7XG5cdCAgICAgICAgeDogcG9pbnQueCAqIHNvdXJjZS50b19tZXRlcixcblx0ICAgICAgICB5OiBwb2ludC55ICogc291cmNlLnRvX21ldGVyXG5cdCAgICAgIH07XG5cdCAgICB9XG5cdCAgICBwb2ludCA9IHNvdXJjZS5pbnZlcnNlKHBvaW50KTsgLy8gQ29udmVydCBDYXJ0ZXNpYW4gdG8gbG9uZ2xhdFxuXHQgIH1cblx0ICAvLyBBZGp1c3QgZm9yIHRoZSBwcmltZSBtZXJpZGlhbiBpZiBuZWNlc3Nhcnlcblx0ICBpZiAoc291cmNlLmZyb21fZ3JlZW53aWNoKSB7XG5cdCAgICBwb2ludC54ICs9IHNvdXJjZS5mcm9tX2dyZWVud2ljaDtcblx0ICB9XG5cblx0ICAvLyBDb252ZXJ0IGRhdHVtcyBpZiBuZWVkZWQsIGFuZCBpZiBwb3NzaWJsZS5cblx0ICBwb2ludCA9IGRhdHVtX3RyYW5zZm9ybShzb3VyY2UuZGF0dW0sIGRlc3QuZGF0dW0sIHBvaW50KTtcblxuXHQgIC8vIEFkanVzdCBmb3IgdGhlIHByaW1lIG1lcmlkaWFuIGlmIG5lY2Vzc2FyeVxuXHQgIGlmIChkZXN0LmZyb21fZ3JlZW53aWNoKSB7XG5cdCAgICBwb2ludCA9IHtcblx0ICAgICAgeDogcG9pbnQueCAtIGRlc3QuZnJvbV9ncmVlbndpY2gsXG5cdCAgICAgIHk6IHBvaW50Lnlcblx0ICAgIH07XG5cdCAgfVxuXG5cdCAgaWYgKGRlc3QucHJvak5hbWUgPT09ICdsb25nbGF0Jykge1xuXHQgICAgLy8gY29udmVydCByYWRpYW5zIHRvIGRlY2ltYWwgZGVncmVlc1xuXHQgICAgcG9pbnQgPSB7XG5cdCAgICAgIHg6IHBvaW50LnggKiBSMkQsXG5cdCAgICAgIHk6IHBvaW50LnkgKiBSMkRcblx0ICAgIH07XG5cdCAgfSBlbHNlIHsgLy8gZWxzZSBwcm9qZWN0XG5cdCAgICBwb2ludCA9IGRlc3QuZm9yd2FyZChwb2ludCk7XG5cdCAgICBpZiAoZGVzdC50b19tZXRlcikge1xuXHQgICAgICBwb2ludCA9IHtcblx0ICAgICAgICB4OiBwb2ludC54IC8gZGVzdC50b19tZXRlcixcblx0ICAgICAgICB5OiBwb2ludC55IC8gZGVzdC50b19tZXRlclxuXHQgICAgICB9O1xuXHQgICAgfVxuXHQgIH1cblxuXHQgIC8vIERHUiwgMjAxMC8xMS8xMlxuXHQgIGlmIChkZXN0LmF4aXMgIT09ICdlbnUnKSB7XG5cdCAgICByZXR1cm4gYWRqdXN0X2F4aXMoZGVzdCwgdHJ1ZSwgcG9pbnQpO1xuXHQgIH1cblxuXHQgIHJldHVybiBwb2ludDtcblx0fVxuXG5cdHZhciB3Z3M4NCA9IFByb2plY3Rpb24kMSgnV0dTODQnKTtcblxuXHRmdW5jdGlvbiB0cmFuc2Zvcm1lcihmcm9tLCB0bywgY29vcmRzKSB7XG5cdCAgdmFyIHRyYW5zZm9ybWVkQXJyYXk7XG5cdCAgaWYgKEFycmF5LmlzQXJyYXkoY29vcmRzKSkge1xuXHQgICAgdHJhbnNmb3JtZWRBcnJheSA9IHRyYW5zZm9ybShmcm9tLCB0bywgY29vcmRzKTtcblx0ICAgIGlmIChjb29yZHMubGVuZ3RoID09PSAzKSB7XG5cdCAgICAgIHJldHVybiBbdHJhbnNmb3JtZWRBcnJheS54LCB0cmFuc2Zvcm1lZEFycmF5LnksIHRyYW5zZm9ybWVkQXJyYXkuel07XG5cdCAgICB9XG5cdCAgICBlbHNlIHtcblx0ICAgICAgcmV0dXJuIFt0cmFuc2Zvcm1lZEFycmF5LngsIHRyYW5zZm9ybWVkQXJyYXkueV07XG5cdCAgICB9XG5cdCAgfVxuXHQgIGVsc2Uge1xuXHQgICAgcmV0dXJuIHRyYW5zZm9ybShmcm9tLCB0bywgY29vcmRzKTtcblx0ICB9XG5cdH1cblxuXHRmdW5jdGlvbiBjaGVja1Byb2ooaXRlbSkge1xuXHQgIGlmIChpdGVtIGluc3RhbmNlb2YgUHJvamVjdGlvbiQxKSB7XG5cdCAgICByZXR1cm4gaXRlbTtcblx0ICB9XG5cdCAgaWYgKGl0ZW0ub1Byb2opIHtcblx0ICAgIHJldHVybiBpdGVtLm9Qcm9qO1xuXHQgIH1cblx0ICByZXR1cm4gUHJvamVjdGlvbiQxKGl0ZW0pO1xuXHR9XG5cdGZ1bmN0aW9uIHByb2o0JDEoZnJvbVByb2osIHRvUHJvaiwgY29vcmQpIHtcblx0ICBmcm9tUHJvaiA9IGNoZWNrUHJvaihmcm9tUHJvaik7XG5cdCAgdmFyIHNpbmdsZSA9IGZhbHNlO1xuXHQgIHZhciBvYmo7XG5cdCAgaWYgKHR5cGVvZiB0b1Byb2ogPT09ICd1bmRlZmluZWQnKSB7XG5cdCAgICB0b1Byb2ogPSBmcm9tUHJvajtcblx0ICAgIGZyb21Qcm9qID0gd2dzODQ7XG5cdCAgICBzaW5nbGUgPSB0cnVlO1xuXHQgIH1cblx0ICBlbHNlIGlmICh0eXBlb2YgdG9Qcm9qLnggIT09ICd1bmRlZmluZWQnIHx8IEFycmF5LmlzQXJyYXkodG9Qcm9qKSkge1xuXHQgICAgY29vcmQgPSB0b1Byb2o7XG5cdCAgICB0b1Byb2ogPSBmcm9tUHJvajtcblx0ICAgIGZyb21Qcm9qID0gd2dzODQ7XG5cdCAgICBzaW5nbGUgPSB0cnVlO1xuXHQgIH1cblx0ICB0b1Byb2ogPSBjaGVja1Byb2oodG9Qcm9qKTtcblx0ICBpZiAoY29vcmQpIHtcblx0ICAgIHJldHVybiB0cmFuc2Zvcm1lcihmcm9tUHJvaiwgdG9Qcm9qLCBjb29yZCk7XG5cdCAgfVxuXHQgIGVsc2Uge1xuXHQgICAgb2JqID0ge1xuXHQgICAgICBmb3J3YXJkOiBmdW5jdGlvbihjb29yZHMpIHtcblx0ICAgICAgICByZXR1cm4gdHJhbnNmb3JtZXIoZnJvbVByb2osIHRvUHJvaiwgY29vcmRzKTtcblx0ICAgICAgfSxcblx0ICAgICAgaW52ZXJzZTogZnVuY3Rpb24oY29vcmRzKSB7XG5cdCAgICAgICAgcmV0dXJuIHRyYW5zZm9ybWVyKHRvUHJvaiwgZnJvbVByb2osIGNvb3Jkcyk7XG5cdCAgICAgIH1cblx0ICAgIH07XG5cdCAgICBpZiAoc2luZ2xlKSB7XG5cdCAgICAgIG9iai5vUHJvaiA9IHRvUHJvajtcblx0ICAgIH1cblx0ICAgIHJldHVybiBvYmo7XG5cdCAgfVxuXHR9XG5cblx0LyoqXG5cdCAqIFVUTSB6b25lcyBhcmUgZ3JvdXBlZCwgYW5kIGFzc2lnbmVkIHRvIG9uZSBvZiBhIGdyb3VwIG9mIDZcblx0ICogc2V0cy5cblx0ICpcblx0ICoge2ludH0gQHByaXZhdGVcblx0ICovXG5cdHZhciBOVU1fMTAwS19TRVRTID0gNjtcblxuXHQvKipcblx0ICogVGhlIGNvbHVtbiBsZXR0ZXJzIChmb3IgZWFzdGluZykgb2YgdGhlIGxvd2VyIGxlZnQgdmFsdWUsIHBlclxuXHQgKiBzZXQuXG5cdCAqXG5cdCAqIHtzdHJpbmd9IEBwcml2YXRlXG5cdCAqL1xuXHR2YXIgU0VUX09SSUdJTl9DT0xVTU5fTEVUVEVSUyA9ICdBSlNBSlMnO1xuXG5cdC8qKlxuXHQgKiBUaGUgcm93IGxldHRlcnMgKGZvciBub3J0aGluZykgb2YgdGhlIGxvd2VyIGxlZnQgdmFsdWUsIHBlclxuXHQgKiBzZXQuXG5cdCAqXG5cdCAqIHtzdHJpbmd9IEBwcml2YXRlXG5cdCAqL1xuXHR2YXIgU0VUX09SSUdJTl9ST1dfTEVUVEVSUyA9ICdBRkFGQUYnO1xuXG5cdHZhciBBID0gNjU7IC8vIEFcblx0dmFyIEkgPSA3MzsgLy8gSVxuXHR2YXIgTyA9IDc5OyAvLyBPXG5cdHZhciBWID0gODY7IC8vIFZcblx0dmFyIFogPSA5MDsgLy8gWlxuXHR2YXIgbWdycyA9IHtcblx0ICBmb3J3YXJkOiBmb3J3YXJkJDEsXG5cdCAgaW52ZXJzZTogaW52ZXJzZSQxLFxuXHQgIHRvUG9pbnQ6IHRvUG9pbnQkMVxuXHR9O1xuXHQvKipcblx0ICogQ29udmVyc2lvbiBvZiBsYXQvbG9uIHRvIE1HUlMuXG5cdCAqXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBsbCBPYmplY3QgbGl0ZXJhbCB3aXRoIGxhdCBhbmQgbG9uIHByb3BlcnRpZXMgb24gYVxuXHQgKiAgICAgV0dTODQgZWxsaXBzb2lkLlxuXHQgKiBAcGFyYW0ge2ludH0gYWNjdXJhY3kgQWNjdXJhY3kgaW4gZGlnaXRzICg1IGZvciAxIG0sIDQgZm9yIDEwIG0sIDMgZm9yXG5cdCAqICAgICAgMTAwIG0sIDIgZm9yIDEwMDAgbSBvciAxIGZvciAxMDAwMCBtKS4gT3B0aW9uYWwsIGRlZmF1bHQgaXMgNS5cblx0ICogQHJldHVybiB7c3RyaW5nfSB0aGUgTUdSUyBzdHJpbmcgZm9yIHRoZSBnaXZlbiBsb2NhdGlvbiBhbmQgYWNjdXJhY3kuXG5cdCAqL1xuXHRmdW5jdGlvbiBmb3J3YXJkJDEobGwsIGFjY3VyYWN5KSB7XG5cdCAgYWNjdXJhY3kgPSBhY2N1cmFjeSB8fCA1OyAvLyBkZWZhdWx0IGFjY3VyYWN5IDFtXG5cdCAgcmV0dXJuIGVuY29kZShMTHRvVVRNKHtcblx0ICAgIGxhdDogbGxbMV0sXG5cdCAgICBsb246IGxsWzBdXG5cdCAgfSksIGFjY3VyYWN5KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDb252ZXJzaW9uIG9mIE1HUlMgdG8gbGF0L2xvbi5cblx0ICpcblx0ICogQHBhcmFtIHtzdHJpbmd9IG1ncnMgTUdSUyBzdHJpbmcuXG5cdCAqIEByZXR1cm4ge2FycmF5fSBBbiBhcnJheSB3aXRoIGxlZnQgKGxvbmdpdHVkZSksIGJvdHRvbSAobGF0aXR1ZGUpLCByaWdodFxuXHQgKiAgICAgKGxvbmdpdHVkZSkgYW5kIHRvcCAobGF0aXR1ZGUpIHZhbHVlcyBpbiBXR1M4NCwgcmVwcmVzZW50aW5nIHRoZVxuXHQgKiAgICAgYm91bmRpbmcgYm94IGZvciB0aGUgcHJvdmlkZWQgTUdSUyByZWZlcmVuY2UuXG5cdCAqL1xuXHRmdW5jdGlvbiBpbnZlcnNlJDEobWdycykge1xuXHQgIHZhciBiYm94ID0gVVRNdG9MTChkZWNvZGUobWdycy50b1VwcGVyQ2FzZSgpKSk7XG5cdCAgaWYgKGJib3gubGF0ICYmIGJib3gubG9uKSB7XG5cdCAgICByZXR1cm4gW2Jib3gubG9uLCBiYm94LmxhdCwgYmJveC5sb24sIGJib3gubGF0XTtcblx0ICB9XG5cdCAgcmV0dXJuIFtiYm94LmxlZnQsIGJib3guYm90dG9tLCBiYm94LnJpZ2h0LCBiYm94LnRvcF07XG5cdH1cblxuXHRmdW5jdGlvbiB0b1BvaW50JDEobWdycykge1xuXHQgIHZhciBiYm94ID0gVVRNdG9MTChkZWNvZGUobWdycy50b1VwcGVyQ2FzZSgpKSk7XG5cdCAgaWYgKGJib3gubGF0ICYmIGJib3gubG9uKSB7XG5cdCAgICByZXR1cm4gW2Jib3gubG9uLCBiYm94LmxhdF07XG5cdCAgfVxuXHQgIHJldHVybiBbKGJib3gubGVmdCArIGJib3gucmlnaHQpIC8gMiwgKGJib3gudG9wICsgYmJveC5ib3R0b20pIC8gMl07XG5cdH1cblx0LyoqXG5cdCAqIENvbnZlcnNpb24gZnJvbSBkZWdyZWVzIHRvIHJhZGlhbnMuXG5cdCAqXG5cdCAqIEBwcml2YXRlXG5cdCAqIEBwYXJhbSB7bnVtYmVyfSBkZWcgdGhlIGFuZ2xlIGluIGRlZ3JlZXMuXG5cdCAqIEByZXR1cm4ge251bWJlcn0gdGhlIGFuZ2xlIGluIHJhZGlhbnMuXG5cdCAqL1xuXHRmdW5jdGlvbiBkZWdUb1JhZChkZWcpIHtcblx0ICByZXR1cm4gKGRlZyAqIChNYXRoLlBJIC8gMTgwLjApKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDb252ZXJzaW9uIGZyb20gcmFkaWFucyB0byBkZWdyZWVzLlxuXHQgKlxuXHQgKiBAcHJpdmF0ZVxuXHQgKiBAcGFyYW0ge251bWJlcn0gcmFkIHRoZSBhbmdsZSBpbiByYWRpYW5zLlxuXHQgKiBAcmV0dXJuIHtudW1iZXJ9IHRoZSBhbmdsZSBpbiBkZWdyZWVzLlxuXHQgKi9cblx0ZnVuY3Rpb24gcmFkVG9EZWcocmFkKSB7XG5cdCAgcmV0dXJuICgxODAuMCAqIChyYWQgLyBNYXRoLlBJKSk7XG5cdH1cblxuXHQvKipcblx0ICogQ29udmVydHMgYSBzZXQgb2YgTG9uZ2l0dWRlIGFuZCBMYXRpdHVkZSBjby1vcmRpbmF0ZXMgdG8gVVRNXG5cdCAqIHVzaW5nIHRoZSBXR1M4NCBlbGxpcHNvaWQuXG5cdCAqXG5cdCAqIEBwcml2YXRlXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBsbCBPYmplY3QgbGl0ZXJhbCB3aXRoIGxhdCBhbmQgbG9uIHByb3BlcnRpZXNcblx0ICogICAgIHJlcHJlc2VudGluZyB0aGUgV0dTODQgY29vcmRpbmF0ZSB0byBiZSBjb252ZXJ0ZWQuXG5cdCAqIEByZXR1cm4ge29iamVjdH0gT2JqZWN0IGxpdGVyYWwgY29udGFpbmluZyB0aGUgVVRNIHZhbHVlIHdpdGggZWFzdGluZyxcblx0ICogICAgIG5vcnRoaW5nLCB6b25lTnVtYmVyIGFuZCB6b25lTGV0dGVyIHByb3BlcnRpZXMsIGFuZCBhbiBvcHRpb25hbFxuXHQgKiAgICAgYWNjdXJhY3kgcHJvcGVydHkgaW4gZGlnaXRzLiBSZXR1cm5zIG51bGwgaWYgdGhlIGNvbnZlcnNpb24gZmFpbGVkLlxuXHQgKi9cblx0ZnVuY3Rpb24gTEx0b1VUTShsbCkge1xuXHQgIHZhciBMYXQgPSBsbC5sYXQ7XG5cdCAgdmFyIExvbmcgPSBsbC5sb247XG5cdCAgdmFyIGEgPSA2Mzc4MTM3LjA7IC8vZWxsaXAucmFkaXVzO1xuXHQgIHZhciBlY2NTcXVhcmVkID0gMC4wMDY2OTQzODsgLy9lbGxpcC5lY2NzcTtcblx0ICB2YXIgazAgPSAwLjk5OTY7XG5cdCAgdmFyIExvbmdPcmlnaW47XG5cdCAgdmFyIGVjY1ByaW1lU3F1YXJlZDtcblx0ICB2YXIgTiwgVCwgQywgQSwgTTtcblx0ICB2YXIgTGF0UmFkID0gZGVnVG9SYWQoTGF0KTtcblx0ICB2YXIgTG9uZ1JhZCA9IGRlZ1RvUmFkKExvbmcpO1xuXHQgIHZhciBMb25nT3JpZ2luUmFkO1xuXHQgIHZhciBab25lTnVtYmVyO1xuXHQgIC8vIChpbnQpXG5cdCAgWm9uZU51bWJlciA9IE1hdGguZmxvb3IoKExvbmcgKyAxODApIC8gNikgKyAxO1xuXG5cdCAgLy9NYWtlIHN1cmUgdGhlIGxvbmdpdHVkZSAxODAuMDAgaXMgaW4gWm9uZSA2MFxuXHQgIGlmIChMb25nID09PSAxODApIHtcblx0ICAgIFpvbmVOdW1iZXIgPSA2MDtcblx0ICB9XG5cblx0ICAvLyBTcGVjaWFsIHpvbmUgZm9yIE5vcndheVxuXHQgIGlmIChMYXQgPj0gNTYuMCAmJiBMYXQgPCA2NC4wICYmIExvbmcgPj0gMy4wICYmIExvbmcgPCAxMi4wKSB7XG5cdCAgICBab25lTnVtYmVyID0gMzI7XG5cdCAgfVxuXG5cdCAgLy8gU3BlY2lhbCB6b25lcyBmb3IgU3ZhbGJhcmRcblx0ICBpZiAoTGF0ID49IDcyLjAgJiYgTGF0IDwgODQuMCkge1xuXHQgICAgaWYgKExvbmcgPj0gMC4wICYmIExvbmcgPCA5LjApIHtcblx0ICAgICAgWm9uZU51bWJlciA9IDMxO1xuXHQgICAgfVxuXHQgICAgZWxzZSBpZiAoTG9uZyA+PSA5LjAgJiYgTG9uZyA8IDIxLjApIHtcblx0ICAgICAgWm9uZU51bWJlciA9IDMzO1xuXHQgICAgfVxuXHQgICAgZWxzZSBpZiAoTG9uZyA+PSAyMS4wICYmIExvbmcgPCAzMy4wKSB7XG5cdCAgICAgIFpvbmVOdW1iZXIgPSAzNTtcblx0ICAgIH1cblx0ICAgIGVsc2UgaWYgKExvbmcgPj0gMzMuMCAmJiBMb25nIDwgNDIuMCkge1xuXHQgICAgICBab25lTnVtYmVyID0gMzc7XG5cdCAgICB9XG5cdCAgfVxuXG5cdCAgTG9uZ09yaWdpbiA9IChab25lTnVtYmVyIC0gMSkgKiA2IC0gMTgwICsgMzsgLy8rMyBwdXRzIG9yaWdpblxuXHQgIC8vIGluIG1pZGRsZSBvZlxuXHQgIC8vIHpvbmVcblx0ICBMb25nT3JpZ2luUmFkID0gZGVnVG9SYWQoTG9uZ09yaWdpbik7XG5cblx0ICBlY2NQcmltZVNxdWFyZWQgPSAoZWNjU3F1YXJlZCkgLyAoMSAtIGVjY1NxdWFyZWQpO1xuXG5cdCAgTiA9IGEgLyBNYXRoLnNxcnQoMSAtIGVjY1NxdWFyZWQgKiBNYXRoLnNpbihMYXRSYWQpICogTWF0aC5zaW4oTGF0UmFkKSk7XG5cdCAgVCA9IE1hdGgudGFuKExhdFJhZCkgKiBNYXRoLnRhbihMYXRSYWQpO1xuXHQgIEMgPSBlY2NQcmltZVNxdWFyZWQgKiBNYXRoLmNvcyhMYXRSYWQpICogTWF0aC5jb3MoTGF0UmFkKTtcblx0ICBBID0gTWF0aC5jb3MoTGF0UmFkKSAqIChMb25nUmFkIC0gTG9uZ09yaWdpblJhZCk7XG5cblx0ICBNID0gYSAqICgoMSAtIGVjY1NxdWFyZWQgLyA0IC0gMyAqIGVjY1NxdWFyZWQgKiBlY2NTcXVhcmVkIC8gNjQgLSA1ICogZWNjU3F1YXJlZCAqIGVjY1NxdWFyZWQgKiBlY2NTcXVhcmVkIC8gMjU2KSAqIExhdFJhZCAtICgzICogZWNjU3F1YXJlZCAvIDggKyAzICogZWNjU3F1YXJlZCAqIGVjY1NxdWFyZWQgLyAzMiArIDQ1ICogZWNjU3F1YXJlZCAqIGVjY1NxdWFyZWQgKiBlY2NTcXVhcmVkIC8gMTAyNCkgKiBNYXRoLnNpbigyICogTGF0UmFkKSArICgxNSAqIGVjY1NxdWFyZWQgKiBlY2NTcXVhcmVkIC8gMjU2ICsgNDUgKiBlY2NTcXVhcmVkICogZWNjU3F1YXJlZCAqIGVjY1NxdWFyZWQgLyAxMDI0KSAqIE1hdGguc2luKDQgKiBMYXRSYWQpIC0gKDM1ICogZWNjU3F1YXJlZCAqIGVjY1NxdWFyZWQgKiBlY2NTcXVhcmVkIC8gMzA3MikgKiBNYXRoLnNpbig2ICogTGF0UmFkKSk7XG5cblx0ICB2YXIgVVRNRWFzdGluZyA9IChrMCAqIE4gKiAoQSArICgxIC0gVCArIEMpICogQSAqIEEgKiBBIC8gNi4wICsgKDUgLSAxOCAqIFQgKyBUICogVCArIDcyICogQyAtIDU4ICogZWNjUHJpbWVTcXVhcmVkKSAqIEEgKiBBICogQSAqIEEgKiBBIC8gMTIwLjApICsgNTAwMDAwLjApO1xuXG5cdCAgdmFyIFVUTU5vcnRoaW5nID0gKGswICogKE0gKyBOICogTWF0aC50YW4oTGF0UmFkKSAqIChBICogQSAvIDIgKyAoNSAtIFQgKyA5ICogQyArIDQgKiBDICogQykgKiBBICogQSAqIEEgKiBBIC8gMjQuMCArICg2MSAtIDU4ICogVCArIFQgKiBUICsgNjAwICogQyAtIDMzMCAqIGVjY1ByaW1lU3F1YXJlZCkgKiBBICogQSAqIEEgKiBBICogQSAqIEEgLyA3MjAuMCkpKTtcblx0ICBpZiAoTGF0IDwgMC4wKSB7XG5cdCAgICBVVE1Ob3J0aGluZyArPSAxMDAwMDAwMC4wOyAvLzEwMDAwMDAwIG1ldGVyIG9mZnNldCBmb3Jcblx0ICAgIC8vIHNvdXRoZXJuIGhlbWlzcGhlcmVcblx0ICB9XG5cblx0ICByZXR1cm4ge1xuXHQgICAgbm9ydGhpbmc6IE1hdGgucm91bmQoVVRNTm9ydGhpbmcpLFxuXHQgICAgZWFzdGluZzogTWF0aC5yb3VuZChVVE1FYXN0aW5nKSxcblx0ICAgIHpvbmVOdW1iZXI6IFpvbmVOdW1iZXIsXG5cdCAgICB6b25lTGV0dGVyOiBnZXRMZXR0ZXJEZXNpZ25hdG9yKExhdClcblx0ICB9O1xuXHR9XG5cblx0LyoqXG5cdCAqIENvbnZlcnRzIFVUTSBjb29yZHMgdG8gbGF0L2xvbmcsIHVzaW5nIHRoZSBXR1M4NCBlbGxpcHNvaWQuIFRoaXMgaXMgYSBjb252ZW5pZW5jZVxuXHQgKiBjbGFzcyB3aGVyZSB0aGUgWm9uZSBjYW4gYmUgc3BlY2lmaWVkIGFzIGEgc2luZ2xlIHN0cmluZyBlZy5cIjYwTlwiIHdoaWNoXG5cdCAqIGlzIHRoZW4gYnJva2VuIGRvd24gaW50byB0aGUgWm9uZU51bWJlciBhbmQgWm9uZUxldHRlci5cblx0ICpcblx0ICogQHByaXZhdGVcblx0ICogQHBhcmFtIHtvYmplY3R9IHV0bSBBbiBvYmplY3QgbGl0ZXJhbCB3aXRoIG5vcnRoaW5nLCBlYXN0aW5nLCB6b25lTnVtYmVyXG5cdCAqICAgICBhbmQgem9uZUxldHRlciBwcm9wZXJ0aWVzLiBJZiBhbiBvcHRpb25hbCBhY2N1cmFjeSBwcm9wZXJ0eSBpc1xuXHQgKiAgICAgcHJvdmlkZWQgKGluIG1ldGVycyksIGEgYm91bmRpbmcgYm94IHdpbGwgYmUgcmV0dXJuZWQgaW5zdGVhZCBvZlxuXHQgKiAgICAgbGF0aXR1ZGUgYW5kIGxvbmdpdHVkZS5cblx0ICogQHJldHVybiB7b2JqZWN0fSBBbiBvYmplY3QgbGl0ZXJhbCBjb250YWluaW5nIGVpdGhlciBsYXQgYW5kIGxvbiB2YWx1ZXNcblx0ICogICAgIChpZiBubyBhY2N1cmFjeSB3YXMgcHJvdmlkZWQpLCBvciB0b3AsIHJpZ2h0LCBib3R0b20gYW5kIGxlZnQgdmFsdWVzXG5cdCAqICAgICBmb3IgdGhlIGJvdW5kaW5nIGJveCBjYWxjdWxhdGVkIGFjY29yZGluZyB0byB0aGUgcHJvdmlkZWQgYWNjdXJhY3kuXG5cdCAqICAgICBSZXR1cm5zIG51bGwgaWYgdGhlIGNvbnZlcnNpb24gZmFpbGVkLlxuXHQgKi9cblx0ZnVuY3Rpb24gVVRNdG9MTCh1dG0pIHtcblxuXHQgIHZhciBVVE1Ob3J0aGluZyA9IHV0bS5ub3J0aGluZztcblx0ICB2YXIgVVRNRWFzdGluZyA9IHV0bS5lYXN0aW5nO1xuXHQgIHZhciB6b25lTGV0dGVyID0gdXRtLnpvbmVMZXR0ZXI7XG5cdCAgdmFyIHpvbmVOdW1iZXIgPSB1dG0uem9uZU51bWJlcjtcblx0ICAvLyBjaGVjayB0aGUgWm9uZU51bW1iZXIgaXMgdmFsaWRcblx0ICBpZiAoem9uZU51bWJlciA8IDAgfHwgem9uZU51bWJlciA+IDYwKSB7XG5cdCAgICByZXR1cm4gbnVsbDtcblx0ICB9XG5cblx0ICB2YXIgazAgPSAwLjk5OTY7XG5cdCAgdmFyIGEgPSA2Mzc4MTM3LjA7IC8vZWxsaXAucmFkaXVzO1xuXHQgIHZhciBlY2NTcXVhcmVkID0gMC4wMDY2OTQzODsgLy9lbGxpcC5lY2NzcTtcblx0ICB2YXIgZWNjUHJpbWVTcXVhcmVkO1xuXHQgIHZhciBlMSA9ICgxIC0gTWF0aC5zcXJ0KDEgLSBlY2NTcXVhcmVkKSkgLyAoMSArIE1hdGguc3FydCgxIC0gZWNjU3F1YXJlZCkpO1xuXHQgIHZhciBOMSwgVDEsIEMxLCBSMSwgRCwgTTtcblx0ICB2YXIgTG9uZ09yaWdpbjtcblx0ICB2YXIgbXUsIHBoaTFSYWQ7XG5cblx0ICAvLyByZW1vdmUgNTAwLDAwMCBtZXRlciBvZmZzZXQgZm9yIGxvbmdpdHVkZVxuXHQgIHZhciB4ID0gVVRNRWFzdGluZyAtIDUwMDAwMC4wO1xuXHQgIHZhciB5ID0gVVRNTm9ydGhpbmc7XG5cblx0ICAvLyBXZSBtdXN0IGtub3cgc29tZWhvdyBpZiB3ZSBhcmUgaW4gdGhlIE5vcnRoZXJuIG9yIFNvdXRoZXJuXG5cdCAgLy8gaGVtaXNwaGVyZSwgdGhpcyBpcyB0aGUgb25seSB0aW1lIHdlIHVzZSB0aGUgbGV0dGVyIFNvIGV2ZW5cblx0ICAvLyBpZiB0aGUgWm9uZSBsZXR0ZXIgaXNuJ3QgZXhhY3RseSBjb3JyZWN0IGl0IHNob3VsZCBpbmRpY2F0ZVxuXHQgIC8vIHRoZSBoZW1pc3BoZXJlIGNvcnJlY3RseVxuXHQgIGlmICh6b25lTGV0dGVyIDwgJ04nKSB7XG5cdCAgICB5IC09IDEwMDAwMDAwLjA7IC8vIHJlbW92ZSAxMCwwMDAsMDAwIG1ldGVyIG9mZnNldCB1c2VkXG5cdCAgICAvLyBmb3Igc291dGhlcm4gaGVtaXNwaGVyZVxuXHQgIH1cblxuXHQgIC8vIFRoZXJlIGFyZSA2MCB6b25lcyB3aXRoIHpvbmUgMSBiZWluZyBhdCBXZXN0IC0xODAgdG8gLTE3NFxuXHQgIExvbmdPcmlnaW4gPSAoem9uZU51bWJlciAtIDEpICogNiAtIDE4MCArIDM7IC8vICszIHB1dHMgb3JpZ2luXG5cdCAgLy8gaW4gbWlkZGxlIG9mXG5cdCAgLy8gem9uZVxuXG5cdCAgZWNjUHJpbWVTcXVhcmVkID0gKGVjY1NxdWFyZWQpIC8gKDEgLSBlY2NTcXVhcmVkKTtcblxuXHQgIE0gPSB5IC8gazA7XG5cdCAgbXUgPSBNIC8gKGEgKiAoMSAtIGVjY1NxdWFyZWQgLyA0IC0gMyAqIGVjY1NxdWFyZWQgKiBlY2NTcXVhcmVkIC8gNjQgLSA1ICogZWNjU3F1YXJlZCAqIGVjY1NxdWFyZWQgKiBlY2NTcXVhcmVkIC8gMjU2KSk7XG5cblx0ICBwaGkxUmFkID0gbXUgKyAoMyAqIGUxIC8gMiAtIDI3ICogZTEgKiBlMSAqIGUxIC8gMzIpICogTWF0aC5zaW4oMiAqIG11KSArICgyMSAqIGUxICogZTEgLyAxNiAtIDU1ICogZTEgKiBlMSAqIGUxICogZTEgLyAzMikgKiBNYXRoLnNpbig0ICogbXUpICsgKDE1MSAqIGUxICogZTEgKiBlMSAvIDk2KSAqIE1hdGguc2luKDYgKiBtdSk7XG5cdCAgLy8gZG91YmxlIHBoaTEgPSBQcm9qTWF0aC5yYWRUb0RlZyhwaGkxUmFkKTtcblxuXHQgIE4xID0gYSAvIE1hdGguc3FydCgxIC0gZWNjU3F1YXJlZCAqIE1hdGguc2luKHBoaTFSYWQpICogTWF0aC5zaW4ocGhpMVJhZCkpO1xuXHQgIFQxID0gTWF0aC50YW4ocGhpMVJhZCkgKiBNYXRoLnRhbihwaGkxUmFkKTtcblx0ICBDMSA9IGVjY1ByaW1lU3F1YXJlZCAqIE1hdGguY29zKHBoaTFSYWQpICogTWF0aC5jb3MocGhpMVJhZCk7XG5cdCAgUjEgPSBhICogKDEgLSBlY2NTcXVhcmVkKSAvIE1hdGgucG93KDEgLSBlY2NTcXVhcmVkICogTWF0aC5zaW4ocGhpMVJhZCkgKiBNYXRoLnNpbihwaGkxUmFkKSwgMS41KTtcblx0ICBEID0geCAvIChOMSAqIGswKTtcblxuXHQgIHZhciBsYXQgPSBwaGkxUmFkIC0gKE4xICogTWF0aC50YW4ocGhpMVJhZCkgLyBSMSkgKiAoRCAqIEQgLyAyIC0gKDUgKyAzICogVDEgKyAxMCAqIEMxIC0gNCAqIEMxICogQzEgLSA5ICogZWNjUHJpbWVTcXVhcmVkKSAqIEQgKiBEICogRCAqIEQgLyAyNCArICg2MSArIDkwICogVDEgKyAyOTggKiBDMSArIDQ1ICogVDEgKiBUMSAtIDI1MiAqIGVjY1ByaW1lU3F1YXJlZCAtIDMgKiBDMSAqIEMxKSAqIEQgKiBEICogRCAqIEQgKiBEICogRCAvIDcyMCk7XG5cdCAgbGF0ID0gcmFkVG9EZWcobGF0KTtcblxuXHQgIHZhciBsb24gPSAoRCAtICgxICsgMiAqIFQxICsgQzEpICogRCAqIEQgKiBEIC8gNiArICg1IC0gMiAqIEMxICsgMjggKiBUMSAtIDMgKiBDMSAqIEMxICsgOCAqIGVjY1ByaW1lU3F1YXJlZCArIDI0ICogVDEgKiBUMSkgKiBEICogRCAqIEQgKiBEICogRCAvIDEyMCkgLyBNYXRoLmNvcyhwaGkxUmFkKTtcblx0ICBsb24gPSBMb25nT3JpZ2luICsgcmFkVG9EZWcobG9uKTtcblxuXHQgIHZhciByZXN1bHQ7XG5cdCAgaWYgKHV0bS5hY2N1cmFjeSkge1xuXHQgICAgdmFyIHRvcFJpZ2h0ID0gVVRNdG9MTCh7XG5cdCAgICAgIG5vcnRoaW5nOiB1dG0ubm9ydGhpbmcgKyB1dG0uYWNjdXJhY3ksXG5cdCAgICAgIGVhc3Rpbmc6IHV0bS5lYXN0aW5nICsgdXRtLmFjY3VyYWN5LFxuXHQgICAgICB6b25lTGV0dGVyOiB1dG0uem9uZUxldHRlcixcblx0ICAgICAgem9uZU51bWJlcjogdXRtLnpvbmVOdW1iZXJcblx0ICAgIH0pO1xuXHQgICAgcmVzdWx0ID0ge1xuXHQgICAgICB0b3A6IHRvcFJpZ2h0LmxhdCxcblx0ICAgICAgcmlnaHQ6IHRvcFJpZ2h0Lmxvbixcblx0ICAgICAgYm90dG9tOiBsYXQsXG5cdCAgICAgIGxlZnQ6IGxvblxuXHQgICAgfTtcblx0ICB9XG5cdCAgZWxzZSB7XG5cdCAgICByZXN1bHQgPSB7XG5cdCAgICAgIGxhdDogbGF0LFxuXHQgICAgICBsb246IGxvblxuXHQgICAgfTtcblx0ICB9XG5cdCAgcmV0dXJuIHJlc3VsdDtcblx0fVxuXG5cdC8qKlxuXHQgKiBDYWxjdWxhdGVzIHRoZSBNR1JTIGxldHRlciBkZXNpZ25hdG9yIGZvciB0aGUgZ2l2ZW4gbGF0aXR1ZGUuXG5cdCAqXG5cdCAqIEBwcml2YXRlXG5cdCAqIEBwYXJhbSB7bnVtYmVyfSBsYXQgVGhlIGxhdGl0dWRlIGluIFdHUzg0IHRvIGdldCB0aGUgbGV0dGVyIGRlc2lnbmF0b3Jcblx0ICogICAgIGZvci5cblx0ICogQHJldHVybiB7Y2hhcn0gVGhlIGxldHRlciBkZXNpZ25hdG9yLlxuXHQgKi9cblx0ZnVuY3Rpb24gZ2V0TGV0dGVyRGVzaWduYXRvcihsYXQpIHtcblx0ICAvL1RoaXMgaXMgaGVyZSBhcyBhbiBlcnJvciBmbGFnIHRvIHNob3cgdGhhdCB0aGUgTGF0aXR1ZGUgaXNcblx0ICAvL291dHNpZGUgTUdSUyBsaW1pdHNcblx0ICB2YXIgTGV0dGVyRGVzaWduYXRvciA9ICdaJztcblxuXHQgIGlmICgoODQgPj0gbGF0KSAmJiAobGF0ID49IDcyKSkge1xuXHQgICAgTGV0dGVyRGVzaWduYXRvciA9ICdYJztcblx0ICB9XG5cdCAgZWxzZSBpZiAoKDcyID4gbGF0KSAmJiAobGF0ID49IDY0KSkge1xuXHQgICAgTGV0dGVyRGVzaWduYXRvciA9ICdXJztcblx0ICB9XG5cdCAgZWxzZSBpZiAoKDY0ID4gbGF0KSAmJiAobGF0ID49IDU2KSkge1xuXHQgICAgTGV0dGVyRGVzaWduYXRvciA9ICdWJztcblx0ICB9XG5cdCAgZWxzZSBpZiAoKDU2ID4gbGF0KSAmJiAobGF0ID49IDQ4KSkge1xuXHQgICAgTGV0dGVyRGVzaWduYXRvciA9ICdVJztcblx0ICB9XG5cdCAgZWxzZSBpZiAoKDQ4ID4gbGF0KSAmJiAobGF0ID49IDQwKSkge1xuXHQgICAgTGV0dGVyRGVzaWduYXRvciA9ICdUJztcblx0ICB9XG5cdCAgZWxzZSBpZiAoKDQwID4gbGF0KSAmJiAobGF0ID49IDMyKSkge1xuXHQgICAgTGV0dGVyRGVzaWduYXRvciA9ICdTJztcblx0ICB9XG5cdCAgZWxzZSBpZiAoKDMyID4gbGF0KSAmJiAobGF0ID49IDI0KSkge1xuXHQgICAgTGV0dGVyRGVzaWduYXRvciA9ICdSJztcblx0ICB9XG5cdCAgZWxzZSBpZiAoKDI0ID4gbGF0KSAmJiAobGF0ID49IDE2KSkge1xuXHQgICAgTGV0dGVyRGVzaWduYXRvciA9ICdRJztcblx0ICB9XG5cdCAgZWxzZSBpZiAoKDE2ID4gbGF0KSAmJiAobGF0ID49IDgpKSB7XG5cdCAgICBMZXR0ZXJEZXNpZ25hdG9yID0gJ1AnO1xuXHQgIH1cblx0ICBlbHNlIGlmICgoOCA+IGxhdCkgJiYgKGxhdCA+PSAwKSkge1xuXHQgICAgTGV0dGVyRGVzaWduYXRvciA9ICdOJztcblx0ICB9XG5cdCAgZWxzZSBpZiAoKDAgPiBsYXQpICYmIChsYXQgPj0gLTgpKSB7XG5cdCAgICBMZXR0ZXJEZXNpZ25hdG9yID0gJ00nO1xuXHQgIH1cblx0ICBlbHNlIGlmICgoLTggPiBsYXQpICYmIChsYXQgPj0gLTE2KSkge1xuXHQgICAgTGV0dGVyRGVzaWduYXRvciA9ICdMJztcblx0ICB9XG5cdCAgZWxzZSBpZiAoKC0xNiA+IGxhdCkgJiYgKGxhdCA+PSAtMjQpKSB7XG5cdCAgICBMZXR0ZXJEZXNpZ25hdG9yID0gJ0snO1xuXHQgIH1cblx0ICBlbHNlIGlmICgoLTI0ID4gbGF0KSAmJiAobGF0ID49IC0zMikpIHtcblx0ICAgIExldHRlckRlc2lnbmF0b3IgPSAnSic7XG5cdCAgfVxuXHQgIGVsc2UgaWYgKCgtMzIgPiBsYXQpICYmIChsYXQgPj0gLTQwKSkge1xuXHQgICAgTGV0dGVyRGVzaWduYXRvciA9ICdIJztcblx0ICB9XG5cdCAgZWxzZSBpZiAoKC00MCA+IGxhdCkgJiYgKGxhdCA+PSAtNDgpKSB7XG5cdCAgICBMZXR0ZXJEZXNpZ25hdG9yID0gJ0cnO1xuXHQgIH1cblx0ICBlbHNlIGlmICgoLTQ4ID4gbGF0KSAmJiAobGF0ID49IC01NikpIHtcblx0ICAgIExldHRlckRlc2lnbmF0b3IgPSAnRic7XG5cdCAgfVxuXHQgIGVsc2UgaWYgKCgtNTYgPiBsYXQpICYmIChsYXQgPj0gLTY0KSkge1xuXHQgICAgTGV0dGVyRGVzaWduYXRvciA9ICdFJztcblx0ICB9XG5cdCAgZWxzZSBpZiAoKC02NCA+IGxhdCkgJiYgKGxhdCA+PSAtNzIpKSB7XG5cdCAgICBMZXR0ZXJEZXNpZ25hdG9yID0gJ0QnO1xuXHQgIH1cblx0ICBlbHNlIGlmICgoLTcyID4gbGF0KSAmJiAobGF0ID49IC04MCkpIHtcblx0ICAgIExldHRlckRlc2lnbmF0b3IgPSAnQyc7XG5cdCAgfVxuXHQgIHJldHVybiBMZXR0ZXJEZXNpZ25hdG9yO1xuXHR9XG5cblx0LyoqXG5cdCAqIEVuY29kZXMgYSBVVE0gbG9jYXRpb24gYXMgTUdSUyBzdHJpbmcuXG5cdCAqXG5cdCAqIEBwcml2YXRlXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSB1dG0gQW4gb2JqZWN0IGxpdGVyYWwgd2l0aCBlYXN0aW5nLCBub3J0aGluZyxcblx0ICogICAgIHpvbmVMZXR0ZXIsIHpvbmVOdW1iZXJcblx0ICogQHBhcmFtIHtudW1iZXJ9IGFjY3VyYWN5IEFjY3VyYWN5IGluIGRpZ2l0cyAoMS01KS5cblx0ICogQHJldHVybiB7c3RyaW5nfSBNR1JTIHN0cmluZyBmb3IgdGhlIGdpdmVuIFVUTSBsb2NhdGlvbi5cblx0ICovXG5cdGZ1bmN0aW9uIGVuY29kZSh1dG0sIGFjY3VyYWN5KSB7XG5cdCAgLy8gcHJlcGVuZCB3aXRoIGxlYWRpbmcgemVyb2VzXG5cdCAgdmFyIHNlYXN0aW5nID0gXCIwMDAwMFwiICsgdXRtLmVhc3RpbmcsXG5cdCAgICBzbm9ydGhpbmcgPSBcIjAwMDAwXCIgKyB1dG0ubm9ydGhpbmc7XG5cblx0ICByZXR1cm4gdXRtLnpvbmVOdW1iZXIgKyB1dG0uem9uZUxldHRlciArIGdldDEwMGtJRCh1dG0uZWFzdGluZywgdXRtLm5vcnRoaW5nLCB1dG0uem9uZU51bWJlcikgKyBzZWFzdGluZy5zdWJzdHIoc2Vhc3RpbmcubGVuZ3RoIC0gNSwgYWNjdXJhY3kpICsgc25vcnRoaW5nLnN1YnN0cihzbm9ydGhpbmcubGVuZ3RoIC0gNSwgYWNjdXJhY3kpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldCB0aGUgdHdvIGxldHRlciAxMDBrIGRlc2lnbmF0b3IgZm9yIGEgZ2l2ZW4gVVRNIGVhc3RpbmcsXG5cdCAqIG5vcnRoaW5nIGFuZCB6b25lIG51bWJlciB2YWx1ZS5cblx0ICpcblx0ICogQHByaXZhdGVcblx0ICogQHBhcmFtIHtudW1iZXJ9IGVhc3Rpbmdcblx0ICogQHBhcmFtIHtudW1iZXJ9IG5vcnRoaW5nXG5cdCAqIEBwYXJhbSB7bnVtYmVyfSB6b25lTnVtYmVyXG5cdCAqIEByZXR1cm4gdGhlIHR3byBsZXR0ZXIgMTAwayBkZXNpZ25hdG9yIGZvciB0aGUgZ2l2ZW4gVVRNIGxvY2F0aW9uLlxuXHQgKi9cblx0ZnVuY3Rpb24gZ2V0MTAwa0lEKGVhc3RpbmcsIG5vcnRoaW5nLCB6b25lTnVtYmVyKSB7XG5cdCAgdmFyIHNldFBhcm0gPSBnZXQxMDBrU2V0Rm9yWm9uZSh6b25lTnVtYmVyKTtcblx0ICB2YXIgc2V0Q29sdW1uID0gTWF0aC5mbG9vcihlYXN0aW5nIC8gMTAwMDAwKTtcblx0ICB2YXIgc2V0Um93ID0gTWF0aC5mbG9vcihub3J0aGluZyAvIDEwMDAwMCkgJSAyMDtcblx0ICByZXR1cm4gZ2V0TGV0dGVyMTAwa0lEKHNldENvbHVtbiwgc2V0Um93LCBzZXRQYXJtKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHaXZlbiBhIFVUTSB6b25lIG51bWJlciwgZmlndXJlIG91dCB0aGUgTUdSUyAxMDBLIHNldCBpdCBpcyBpbi5cblx0ICpcblx0ICogQHByaXZhdGVcblx0ICogQHBhcmFtIHtudW1iZXJ9IGkgQW4gVVRNIHpvbmUgbnVtYmVyLlxuXHQgKiBAcmV0dXJuIHtudW1iZXJ9IHRoZSAxMDBrIHNldCB0aGUgVVRNIHpvbmUgaXMgaW4uXG5cdCAqL1xuXHRmdW5jdGlvbiBnZXQxMDBrU2V0Rm9yWm9uZShpKSB7XG5cdCAgdmFyIHNldFBhcm0gPSBpICUgTlVNXzEwMEtfU0VUUztcblx0ICBpZiAoc2V0UGFybSA9PT0gMCkge1xuXHQgICAgc2V0UGFybSA9IE5VTV8xMDBLX1NFVFM7XG5cdCAgfVxuXG5cdCAgcmV0dXJuIHNldFBhcm07XG5cdH1cblxuXHQvKipcblx0ICogR2V0IHRoZSB0d28tbGV0dGVyIE1HUlMgMTAwayBkZXNpZ25hdG9yIGdpdmVuIGluZm9ybWF0aW9uXG5cdCAqIHRyYW5zbGF0ZWQgZnJvbSB0aGUgVVRNIG5vcnRoaW5nLCBlYXN0aW5nIGFuZCB6b25lIG51bWJlci5cblx0ICpcblx0ICogQHByaXZhdGVcblx0ICogQHBhcmFtIHtudW1iZXJ9IGNvbHVtbiB0aGUgY29sdW1uIGluZGV4IGFzIGl0IHJlbGF0ZXMgdG8gdGhlIE1HUlNcblx0ICogICAgICAgIDEwMGsgc2V0IHNwcmVhZHNoZWV0LCBjcmVhdGVkIGZyb20gdGhlIFVUTSBlYXN0aW5nLlxuXHQgKiAgICAgICAgVmFsdWVzIGFyZSAxLTguXG5cdCAqIEBwYXJhbSB7bnVtYmVyfSByb3cgdGhlIHJvdyBpbmRleCBhcyBpdCByZWxhdGVzIHRvIHRoZSBNR1JTIDEwMGsgc2V0XG5cdCAqICAgICAgICBzcHJlYWRzaGVldCwgY3JlYXRlZCBmcm9tIHRoZSBVVE0gbm9ydGhpbmcgdmFsdWUuIFZhbHVlc1xuXHQgKiAgICAgICAgYXJlIGZyb20gMC0xOS5cblx0ICogQHBhcmFtIHtudW1iZXJ9IHBhcm0gdGhlIHNldCBibG9jaywgYXMgaXQgcmVsYXRlcyB0byB0aGUgTUdSUyAxMDBrIHNldFxuXHQgKiAgICAgICAgc3ByZWFkc2hlZXQsIGNyZWF0ZWQgZnJvbSB0aGUgVVRNIHpvbmUuIFZhbHVlcyBhcmUgZnJvbVxuXHQgKiAgICAgICAgMS02MC5cblx0ICogQHJldHVybiB0d28gbGV0dGVyIE1HUlMgMTAwayBjb2RlLlxuXHQgKi9cblx0ZnVuY3Rpb24gZ2V0TGV0dGVyMTAwa0lEKGNvbHVtbiwgcm93LCBwYXJtKSB7XG5cdCAgLy8gY29sT3JpZ2luIGFuZCByb3dPcmlnaW4gYXJlIHRoZSBsZXR0ZXJzIGF0IHRoZSBvcmlnaW4gb2YgdGhlIHNldFxuXHQgIHZhciBpbmRleCA9IHBhcm0gLSAxO1xuXHQgIHZhciBjb2xPcmlnaW4gPSBTRVRfT1JJR0lOX0NPTFVNTl9MRVRURVJTLmNoYXJDb2RlQXQoaW5kZXgpO1xuXHQgIHZhciByb3dPcmlnaW4gPSBTRVRfT1JJR0lOX1JPV19MRVRURVJTLmNoYXJDb2RlQXQoaW5kZXgpO1xuXG5cdCAgLy8gY29sSW50IGFuZCByb3dJbnQgYXJlIHRoZSBsZXR0ZXJzIHRvIGJ1aWxkIHRvIHJldHVyblxuXHQgIHZhciBjb2xJbnQgPSBjb2xPcmlnaW4gKyBjb2x1bW4gLSAxO1xuXHQgIHZhciByb3dJbnQgPSByb3dPcmlnaW4gKyByb3c7XG5cdCAgdmFyIHJvbGxvdmVyID0gZmFsc2U7XG5cblx0ICBpZiAoY29sSW50ID4gWikge1xuXHQgICAgY29sSW50ID0gY29sSW50IC0gWiArIEEgLSAxO1xuXHQgICAgcm9sbG92ZXIgPSB0cnVlO1xuXHQgIH1cblxuXHQgIGlmIChjb2xJbnQgPT09IEkgfHwgKGNvbE9yaWdpbiA8IEkgJiYgY29sSW50ID4gSSkgfHwgKChjb2xJbnQgPiBJIHx8IGNvbE9yaWdpbiA8IEkpICYmIHJvbGxvdmVyKSkge1xuXHQgICAgY29sSW50Kys7XG5cdCAgfVxuXG5cdCAgaWYgKGNvbEludCA9PT0gTyB8fCAoY29sT3JpZ2luIDwgTyAmJiBjb2xJbnQgPiBPKSB8fCAoKGNvbEludCA+IE8gfHwgY29sT3JpZ2luIDwgTykgJiYgcm9sbG92ZXIpKSB7XG5cdCAgICBjb2xJbnQrKztcblxuXHQgICAgaWYgKGNvbEludCA9PT0gSSkge1xuXHQgICAgICBjb2xJbnQrKztcblx0ICAgIH1cblx0ICB9XG5cblx0ICBpZiAoY29sSW50ID4gWikge1xuXHQgICAgY29sSW50ID0gY29sSW50IC0gWiArIEEgLSAxO1xuXHQgIH1cblxuXHQgIGlmIChyb3dJbnQgPiBWKSB7XG5cdCAgICByb3dJbnQgPSByb3dJbnQgLSBWICsgQSAtIDE7XG5cdCAgICByb2xsb3ZlciA9IHRydWU7XG5cdCAgfVxuXHQgIGVsc2Uge1xuXHQgICAgcm9sbG92ZXIgPSBmYWxzZTtcblx0ICB9XG5cblx0ICBpZiAoKChyb3dJbnQgPT09IEkpIHx8ICgocm93T3JpZ2luIDwgSSkgJiYgKHJvd0ludCA+IEkpKSkgfHwgKCgocm93SW50ID4gSSkgfHwgKHJvd09yaWdpbiA8IEkpKSAmJiByb2xsb3ZlcikpIHtcblx0ICAgIHJvd0ludCsrO1xuXHQgIH1cblxuXHQgIGlmICgoKHJvd0ludCA9PT0gTykgfHwgKChyb3dPcmlnaW4gPCBPKSAmJiAocm93SW50ID4gTykpKSB8fCAoKChyb3dJbnQgPiBPKSB8fCAocm93T3JpZ2luIDwgTykpICYmIHJvbGxvdmVyKSkge1xuXHQgICAgcm93SW50Kys7XG5cblx0ICAgIGlmIChyb3dJbnQgPT09IEkpIHtcblx0ICAgICAgcm93SW50Kys7XG5cdCAgICB9XG5cdCAgfVxuXG5cdCAgaWYgKHJvd0ludCA+IFYpIHtcblx0ICAgIHJvd0ludCA9IHJvd0ludCAtIFYgKyBBIC0gMTtcblx0ICB9XG5cblx0ICB2YXIgdHdvTGV0dGVyID0gU3RyaW5nLmZyb21DaGFyQ29kZShjb2xJbnQpICsgU3RyaW5nLmZyb21DaGFyQ29kZShyb3dJbnQpO1xuXHQgIHJldHVybiB0d29MZXR0ZXI7XG5cdH1cblxuXHQvKipcblx0ICogRGVjb2RlIHRoZSBVVE0gcGFyYW1ldGVycyBmcm9tIGEgTUdSUyBzdHJpbmcuXG5cdCAqXG5cdCAqIEBwcml2YXRlXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBtZ3JzU3RyaW5nIGFuIFVQUEVSQ0FTRSBjb29yZGluYXRlIHN0cmluZyBpcyBleHBlY3RlZC5cblx0ICogQHJldHVybiB7b2JqZWN0fSBBbiBvYmplY3QgbGl0ZXJhbCB3aXRoIGVhc3RpbmcsIG5vcnRoaW5nLCB6b25lTGV0dGVyLFxuXHQgKiAgICAgem9uZU51bWJlciBhbmQgYWNjdXJhY3kgKGluIG1ldGVycykgcHJvcGVydGllcy5cblx0ICovXG5cdGZ1bmN0aW9uIGRlY29kZShtZ3JzU3RyaW5nKSB7XG5cblx0ICBpZiAobWdyc1N0cmluZyAmJiBtZ3JzU3RyaW5nLmxlbmd0aCA9PT0gMCkge1xuXHQgICAgdGhyb3cgKFwiTUdSU1BvaW50IGNvdmVydGluZyBmcm9tIG5vdGhpbmdcIik7XG5cdCAgfVxuXG5cdCAgdmFyIGxlbmd0aCA9IG1ncnNTdHJpbmcubGVuZ3RoO1xuXG5cdCAgdmFyIGh1bksgPSBudWxsO1xuXHQgIHZhciBzYiA9IFwiXCI7XG5cdCAgdmFyIHRlc3RDaGFyO1xuXHQgIHZhciBpID0gMDtcblxuXHQgIC8vIGdldCBab25lIG51bWJlclxuXHQgIHdoaWxlICghKC9bQS1aXS8pLnRlc3QodGVzdENoYXIgPSBtZ3JzU3RyaW5nLmNoYXJBdChpKSkpIHtcblx0ICAgIGlmIChpID49IDIpIHtcblx0ICAgICAgdGhyb3cgKFwiTUdSU1BvaW50IGJhZCBjb252ZXJzaW9uIGZyb206IFwiICsgbWdyc1N0cmluZyk7XG5cdCAgICB9XG5cdCAgICBzYiArPSB0ZXN0Q2hhcjtcblx0ICAgIGkrKztcblx0ICB9XG5cblx0ICB2YXIgem9uZU51bWJlciA9IHBhcnNlSW50KHNiLCAxMCk7XG5cblx0ICBpZiAoaSA9PT0gMCB8fCBpICsgMyA+IGxlbmd0aCkge1xuXHQgICAgLy8gQSBnb29kIE1HUlMgc3RyaW5nIGhhcyB0byBiZSA0LTUgZGlnaXRzIGxvbmcsXG5cdCAgICAvLyAjI0FBQS8jQUFBIGF0IGxlYXN0LlxuXHQgICAgdGhyb3cgKFwiTUdSU1BvaW50IGJhZCBjb252ZXJzaW9uIGZyb206IFwiICsgbWdyc1N0cmluZyk7XG5cdCAgfVxuXG5cdCAgdmFyIHpvbmVMZXR0ZXIgPSBtZ3JzU3RyaW5nLmNoYXJBdChpKyspO1xuXG5cdCAgLy8gU2hvdWxkIHdlIGNoZWNrIHRoZSB6b25lIGxldHRlciBoZXJlPyBXaHkgbm90LlxuXHQgIGlmICh6b25lTGV0dGVyIDw9ICdBJyB8fCB6b25lTGV0dGVyID09PSAnQicgfHwgem9uZUxldHRlciA9PT0gJ1knIHx8IHpvbmVMZXR0ZXIgPj0gJ1onIHx8IHpvbmVMZXR0ZXIgPT09ICdJJyB8fCB6b25lTGV0dGVyID09PSAnTycpIHtcblx0ICAgIHRocm93IChcIk1HUlNQb2ludCB6b25lIGxldHRlciBcIiArIHpvbmVMZXR0ZXIgKyBcIiBub3QgaGFuZGxlZDogXCIgKyBtZ3JzU3RyaW5nKTtcblx0ICB9XG5cblx0ICBodW5LID0gbWdyc1N0cmluZy5zdWJzdHJpbmcoaSwgaSArPSAyKTtcblxuXHQgIHZhciBzZXQgPSBnZXQxMDBrU2V0Rm9yWm9uZSh6b25lTnVtYmVyKTtcblxuXHQgIHZhciBlYXN0MTAwayA9IGdldEVhc3RpbmdGcm9tQ2hhcihodW5LLmNoYXJBdCgwKSwgc2V0KTtcblx0ICB2YXIgbm9ydGgxMDBrID0gZ2V0Tm9ydGhpbmdGcm9tQ2hhcihodW5LLmNoYXJBdCgxKSwgc2V0KTtcblxuXHQgIC8vIFdlIGhhdmUgYSBidWcgd2hlcmUgdGhlIG5vcnRoaW5nIG1heSBiZSAyMDAwMDAwIHRvbyBsb3cuXG5cdCAgLy8gSG93XG5cdCAgLy8gZG8gd2Uga25vdyB3aGVuIHRvIHJvbGwgb3Zlcj9cblxuXHQgIHdoaWxlIChub3J0aDEwMGsgPCBnZXRNaW5Ob3J0aGluZyh6b25lTGV0dGVyKSkge1xuXHQgICAgbm9ydGgxMDBrICs9IDIwMDAwMDA7XG5cdCAgfVxuXG5cdCAgLy8gY2FsY3VsYXRlIHRoZSBjaGFyIGluZGV4IGZvciBlYXN0aW5nL25vcnRoaW5nIHNlcGFyYXRvclxuXHQgIHZhciByZW1haW5kZXIgPSBsZW5ndGggLSBpO1xuXG5cdCAgaWYgKHJlbWFpbmRlciAlIDIgIT09IDApIHtcblx0ICAgIHRocm93IChcIk1HUlNQb2ludCBoYXMgdG8gaGF2ZSBhbiBldmVuIG51bWJlciBcXG5vZiBkaWdpdHMgYWZ0ZXIgdGhlIHpvbmUgbGV0dGVyIGFuZCB0d28gMTAwa20gbGV0dGVycyAtIGZyb250IFxcbmhhbGYgZm9yIGVhc3RpbmcgbWV0ZXJzLCBzZWNvbmQgaGFsZiBmb3IgXFxubm9ydGhpbmcgbWV0ZXJzXCIgKyBtZ3JzU3RyaW5nKTtcblx0ICB9XG5cblx0ICB2YXIgc2VwID0gcmVtYWluZGVyIC8gMjtcblxuXHQgIHZhciBzZXBFYXN0aW5nID0gMC4wO1xuXHQgIHZhciBzZXBOb3J0aGluZyA9IDAuMDtcblx0ICB2YXIgYWNjdXJhY3lCb251cywgc2VwRWFzdGluZ1N0cmluZywgc2VwTm9ydGhpbmdTdHJpbmcsIGVhc3RpbmcsIG5vcnRoaW5nO1xuXHQgIGlmIChzZXAgPiAwKSB7XG5cdCAgICBhY2N1cmFjeUJvbnVzID0gMTAwMDAwLjAgLyBNYXRoLnBvdygxMCwgc2VwKTtcblx0ICAgIHNlcEVhc3RpbmdTdHJpbmcgPSBtZ3JzU3RyaW5nLnN1YnN0cmluZyhpLCBpICsgc2VwKTtcblx0ICAgIHNlcEVhc3RpbmcgPSBwYXJzZUZsb2F0KHNlcEVhc3RpbmdTdHJpbmcpICogYWNjdXJhY3lCb251cztcblx0ICAgIHNlcE5vcnRoaW5nU3RyaW5nID0gbWdyc1N0cmluZy5zdWJzdHJpbmcoaSArIHNlcCk7XG5cdCAgICBzZXBOb3J0aGluZyA9IHBhcnNlRmxvYXQoc2VwTm9ydGhpbmdTdHJpbmcpICogYWNjdXJhY3lCb251cztcblx0ICB9XG5cblx0ICBlYXN0aW5nID0gc2VwRWFzdGluZyArIGVhc3QxMDBrO1xuXHQgIG5vcnRoaW5nID0gc2VwTm9ydGhpbmcgKyBub3J0aDEwMGs7XG5cblx0ICByZXR1cm4ge1xuXHQgICAgZWFzdGluZzogZWFzdGluZyxcblx0ICAgIG5vcnRoaW5nOiBub3J0aGluZyxcblx0ICAgIHpvbmVMZXR0ZXI6IHpvbmVMZXR0ZXIsXG5cdCAgICB6b25lTnVtYmVyOiB6b25lTnVtYmVyLFxuXHQgICAgYWNjdXJhY3k6IGFjY3VyYWN5Qm9udXNcblx0ICB9O1xuXHR9XG5cblx0LyoqXG5cdCAqIEdpdmVuIHRoZSBmaXJzdCBsZXR0ZXIgZnJvbSBhIHR3by1sZXR0ZXIgTUdSUyAxMDBrIHpvbmUsIGFuZCBnaXZlbiB0aGVcblx0ICogTUdSUyB0YWJsZSBzZXQgZm9yIHRoZSB6b25lIG51bWJlciwgZmlndXJlIG91dCB0aGUgZWFzdGluZyB2YWx1ZSB0aGF0XG5cdCAqIHNob3VsZCBiZSBhZGRlZCB0byB0aGUgb3RoZXIsIHNlY29uZGFyeSBlYXN0aW5nIHZhbHVlLlxuXHQgKlxuXHQgKiBAcHJpdmF0ZVxuXHQgKiBAcGFyYW0ge2NoYXJ9IGUgVGhlIGZpcnN0IGxldHRlciBmcm9tIGEgdHdvLWxldHRlciBNR1JTIDEwMMK0ayB6b25lLlxuXHQgKiBAcGFyYW0ge251bWJlcn0gc2V0IFRoZSBNR1JTIHRhYmxlIHNldCBmb3IgdGhlIHpvbmUgbnVtYmVyLlxuXHQgKiBAcmV0dXJuIHtudW1iZXJ9IFRoZSBlYXN0aW5nIHZhbHVlIGZvciB0aGUgZ2l2ZW4gbGV0dGVyIGFuZCBzZXQuXG5cdCAqL1xuXHRmdW5jdGlvbiBnZXRFYXN0aW5nRnJvbUNoYXIoZSwgc2V0KSB7XG5cdCAgLy8gY29sT3JpZ2luIGlzIHRoZSBsZXR0ZXIgYXQgdGhlIG9yaWdpbiBvZiB0aGUgc2V0IGZvciB0aGVcblx0ICAvLyBjb2x1bW5cblx0ICB2YXIgY3VyQ29sID0gU0VUX09SSUdJTl9DT0xVTU5fTEVUVEVSUy5jaGFyQ29kZUF0KHNldCAtIDEpO1xuXHQgIHZhciBlYXN0aW5nVmFsdWUgPSAxMDAwMDAuMDtcblx0ICB2YXIgcmV3aW5kTWFya2VyID0gZmFsc2U7XG5cblx0ICB3aGlsZSAoY3VyQ29sICE9PSBlLmNoYXJDb2RlQXQoMCkpIHtcblx0ICAgIGN1ckNvbCsrO1xuXHQgICAgaWYgKGN1ckNvbCA9PT0gSSkge1xuXHQgICAgICBjdXJDb2wrKztcblx0ICAgIH1cblx0ICAgIGlmIChjdXJDb2wgPT09IE8pIHtcblx0ICAgICAgY3VyQ29sKys7XG5cdCAgICB9XG5cdCAgICBpZiAoY3VyQ29sID4gWikge1xuXHQgICAgICBpZiAocmV3aW5kTWFya2VyKSB7XG5cdCAgICAgICAgdGhyb3cgKFwiQmFkIGNoYXJhY3RlcjogXCIgKyBlKTtcblx0ICAgICAgfVxuXHQgICAgICBjdXJDb2wgPSBBO1xuXHQgICAgICByZXdpbmRNYXJrZXIgPSB0cnVlO1xuXHQgICAgfVxuXHQgICAgZWFzdGluZ1ZhbHVlICs9IDEwMDAwMC4wO1xuXHQgIH1cblxuXHQgIHJldHVybiBlYXN0aW5nVmFsdWU7XG5cdH1cblxuXHQvKipcblx0ICogR2l2ZW4gdGhlIHNlY29uZCBsZXR0ZXIgZnJvbSBhIHR3by1sZXR0ZXIgTUdSUyAxMDBrIHpvbmUsIGFuZCBnaXZlbiB0aGVcblx0ICogTUdSUyB0YWJsZSBzZXQgZm9yIHRoZSB6b25lIG51bWJlciwgZmlndXJlIG91dCB0aGUgbm9ydGhpbmcgdmFsdWUgdGhhdFxuXHQgKiBzaG91bGQgYmUgYWRkZWQgdG8gdGhlIG90aGVyLCBzZWNvbmRhcnkgbm9ydGhpbmcgdmFsdWUuIFlvdSBoYXZlIHRvXG5cdCAqIHJlbWVtYmVyIHRoYXQgTm9ydGhpbmdzIGFyZSBkZXRlcm1pbmVkIGZyb20gdGhlIGVxdWF0b3IsIGFuZCB0aGUgdmVydGljYWxcblx0ICogY3ljbGUgb2YgbGV0dGVycyBtZWFuIGEgMjAwMDAwMCBhZGRpdGlvbmFsIG5vcnRoaW5nIG1ldGVycy4gVGhpcyBoYXBwZW5zXG5cdCAqIGFwcHJveC4gZXZlcnkgMTggZGVncmVlcyBvZiBsYXRpdHVkZS4gVGhpcyBtZXRob2QgZG9lcyAqTk9UKiBjb3VudCBhbnlcblx0ICogYWRkaXRpb25hbCBub3J0aGluZ3MuIFlvdSBoYXZlIHRvIGZpZ3VyZSBvdXQgaG93IG1hbnkgMjAwMDAwMCBtZXRlcnMgbmVlZFxuXHQgKiB0byBiZSBhZGRlZCBmb3IgdGhlIHpvbmUgbGV0dGVyIG9mIHRoZSBNR1JTIGNvb3JkaW5hdGUuXG5cdCAqXG5cdCAqIEBwcml2YXRlXG5cdCAqIEBwYXJhbSB7Y2hhcn0gbiBTZWNvbmQgbGV0dGVyIG9mIHRoZSBNR1JTIDEwMGsgem9uZVxuXHQgKiBAcGFyYW0ge251bWJlcn0gc2V0IFRoZSBNR1JTIHRhYmxlIHNldCBudW1iZXIsIHdoaWNoIGlzIGRlcGVuZGVudCBvbiB0aGVcblx0ICogICAgIFVUTSB6b25lIG51bWJlci5cblx0ICogQHJldHVybiB7bnVtYmVyfSBUaGUgbm9ydGhpbmcgdmFsdWUgZm9yIHRoZSBnaXZlbiBsZXR0ZXIgYW5kIHNldC5cblx0ICovXG5cdGZ1bmN0aW9uIGdldE5vcnRoaW5nRnJvbUNoYXIobiwgc2V0KSB7XG5cblx0ICBpZiAobiA+ICdWJykge1xuXHQgICAgdGhyb3cgKFwiTUdSU1BvaW50IGdpdmVuIGludmFsaWQgTm9ydGhpbmcgXCIgKyBuKTtcblx0ICB9XG5cblx0ICAvLyByb3dPcmlnaW4gaXMgdGhlIGxldHRlciBhdCB0aGUgb3JpZ2luIG9mIHRoZSBzZXQgZm9yIHRoZVxuXHQgIC8vIGNvbHVtblxuXHQgIHZhciBjdXJSb3cgPSBTRVRfT1JJR0lOX1JPV19MRVRURVJTLmNoYXJDb2RlQXQoc2V0IC0gMSk7XG5cdCAgdmFyIG5vcnRoaW5nVmFsdWUgPSAwLjA7XG5cdCAgdmFyIHJld2luZE1hcmtlciA9IGZhbHNlO1xuXG5cdCAgd2hpbGUgKGN1clJvdyAhPT0gbi5jaGFyQ29kZUF0KDApKSB7XG5cdCAgICBjdXJSb3crKztcblx0ICAgIGlmIChjdXJSb3cgPT09IEkpIHtcblx0ICAgICAgY3VyUm93Kys7XG5cdCAgICB9XG5cdCAgICBpZiAoY3VyUm93ID09PSBPKSB7XG5cdCAgICAgIGN1clJvdysrO1xuXHQgICAgfVxuXHQgICAgLy8gZml4aW5nIGEgYnVnIG1ha2luZyB3aG9sZSBhcHBsaWNhdGlvbiBoYW5nIGluIHRoaXMgbG9vcFxuXHQgICAgLy8gd2hlbiAnbicgaXMgYSB3cm9uZyBjaGFyYWN0ZXJcblx0ICAgIGlmIChjdXJSb3cgPiBWKSB7XG5cdCAgICAgIGlmIChyZXdpbmRNYXJrZXIpIHsgLy8gbWFraW5nIHN1cmUgdGhhdCB0aGlzIGxvb3AgZW5kc1xuXHQgICAgICAgIHRocm93IChcIkJhZCBjaGFyYWN0ZXI6IFwiICsgbik7XG5cdCAgICAgIH1cblx0ICAgICAgY3VyUm93ID0gQTtcblx0ICAgICAgcmV3aW5kTWFya2VyID0gdHJ1ZTtcblx0ICAgIH1cblx0ICAgIG5vcnRoaW5nVmFsdWUgKz0gMTAwMDAwLjA7XG5cdCAgfVxuXG5cdCAgcmV0dXJuIG5vcnRoaW5nVmFsdWU7XG5cdH1cblxuXHQvKipcblx0ICogVGhlIGZ1bmN0aW9uIGdldE1pbk5vcnRoaW5nIHJldHVybnMgdGhlIG1pbmltdW0gbm9ydGhpbmcgdmFsdWUgb2YgYSBNR1JTXG5cdCAqIHpvbmUuXG5cdCAqXG5cdCAqIFBvcnRlZCBmcm9tIEdlb3RyYW5zJyBjIExhdHRpdHVkZV9CYW5kX1ZhbHVlIHN0cnVjdHVyZSB0YWJsZS5cblx0ICpcblx0ICogQHByaXZhdGVcblx0ICogQHBhcmFtIHtjaGFyfSB6b25lTGV0dGVyIFRoZSBNR1JTIHpvbmUgdG8gZ2V0IHRoZSBtaW4gbm9ydGhpbmcgZm9yLlxuXHQgKiBAcmV0dXJuIHtudW1iZXJ9XG5cdCAqL1xuXHRmdW5jdGlvbiBnZXRNaW5Ob3J0aGluZyh6b25lTGV0dGVyKSB7XG5cdCAgdmFyIG5vcnRoaW5nO1xuXHQgIHN3aXRjaCAoem9uZUxldHRlcikge1xuXHQgIGNhc2UgJ0MnOlxuXHQgICAgbm9ydGhpbmcgPSAxMTAwMDAwLjA7XG5cdCAgICBicmVhaztcblx0ICBjYXNlICdEJzpcblx0ICAgIG5vcnRoaW5nID0gMjAwMDAwMC4wO1xuXHQgICAgYnJlYWs7XG5cdCAgY2FzZSAnRSc6XG5cdCAgICBub3J0aGluZyA9IDI4MDAwMDAuMDtcblx0ICAgIGJyZWFrO1xuXHQgIGNhc2UgJ0YnOlxuXHQgICAgbm9ydGhpbmcgPSAzNzAwMDAwLjA7XG5cdCAgICBicmVhaztcblx0ICBjYXNlICdHJzpcblx0ICAgIG5vcnRoaW5nID0gNDYwMDAwMC4wO1xuXHQgICAgYnJlYWs7XG5cdCAgY2FzZSAnSCc6XG5cdCAgICBub3J0aGluZyA9IDU1MDAwMDAuMDtcblx0ICAgIGJyZWFrO1xuXHQgIGNhc2UgJ0onOlxuXHQgICAgbm9ydGhpbmcgPSA2NDAwMDAwLjA7XG5cdCAgICBicmVhaztcblx0ICBjYXNlICdLJzpcblx0ICAgIG5vcnRoaW5nID0gNzMwMDAwMC4wO1xuXHQgICAgYnJlYWs7XG5cdCAgY2FzZSAnTCc6XG5cdCAgICBub3J0aGluZyA9IDgyMDAwMDAuMDtcblx0ICAgIGJyZWFrO1xuXHQgIGNhc2UgJ00nOlxuXHQgICAgbm9ydGhpbmcgPSA5MTAwMDAwLjA7XG5cdCAgICBicmVhaztcblx0ICBjYXNlICdOJzpcblx0ICAgIG5vcnRoaW5nID0gMC4wO1xuXHQgICAgYnJlYWs7XG5cdCAgY2FzZSAnUCc6XG5cdCAgICBub3J0aGluZyA9IDgwMDAwMC4wO1xuXHQgICAgYnJlYWs7XG5cdCAgY2FzZSAnUSc6XG5cdCAgICBub3J0aGluZyA9IDE3MDAwMDAuMDtcblx0ICAgIGJyZWFrO1xuXHQgIGNhc2UgJ1InOlxuXHQgICAgbm9ydGhpbmcgPSAyNjAwMDAwLjA7XG5cdCAgICBicmVhaztcblx0ICBjYXNlICdTJzpcblx0ICAgIG5vcnRoaW5nID0gMzUwMDAwMC4wO1xuXHQgICAgYnJlYWs7XG5cdCAgY2FzZSAnVCc6XG5cdCAgICBub3J0aGluZyA9IDQ0MDAwMDAuMDtcblx0ICAgIGJyZWFrO1xuXHQgIGNhc2UgJ1UnOlxuXHQgICAgbm9ydGhpbmcgPSA1MzAwMDAwLjA7XG5cdCAgICBicmVhaztcblx0ICBjYXNlICdWJzpcblx0ICAgIG5vcnRoaW5nID0gNjIwMDAwMC4wO1xuXHQgICAgYnJlYWs7XG5cdCAgY2FzZSAnVyc6XG5cdCAgICBub3J0aGluZyA9IDcwMDAwMDAuMDtcblx0ICAgIGJyZWFrO1xuXHQgIGNhc2UgJ1gnOlxuXHQgICAgbm9ydGhpbmcgPSA3OTAwMDAwLjA7XG5cdCAgICBicmVhaztcblx0ICBkZWZhdWx0OlxuXHQgICAgbm9ydGhpbmcgPSAtMS4wO1xuXHQgIH1cblx0ICBpZiAobm9ydGhpbmcgPj0gMC4wKSB7XG5cdCAgICByZXR1cm4gbm9ydGhpbmc7XG5cdCAgfVxuXHQgIGVsc2Uge1xuXHQgICAgdGhyb3cgKFwiSW52YWxpZCB6b25lIGxldHRlcjogXCIgKyB6b25lTGV0dGVyKTtcblx0ICB9XG5cblx0fVxuXG5cdGZ1bmN0aW9uIFBvaW50KHgsIHksIHopIHtcblx0ICBpZiAoISh0aGlzIGluc3RhbmNlb2YgUG9pbnQpKSB7XG5cdCAgICByZXR1cm4gbmV3IFBvaW50KHgsIHksIHopO1xuXHQgIH1cblx0ICBpZiAoQXJyYXkuaXNBcnJheSh4KSkge1xuXHQgICAgdGhpcy54ID0geFswXTtcblx0ICAgIHRoaXMueSA9IHhbMV07XG5cdCAgICB0aGlzLnogPSB4WzJdIHx8IDAuMDtcblx0ICB9IGVsc2UgaWYodHlwZW9mIHggPT09ICdvYmplY3QnKSB7XG5cdCAgICB0aGlzLnggPSB4Lng7XG5cdCAgICB0aGlzLnkgPSB4Lnk7XG5cdCAgICB0aGlzLnogPSB4LnogfHwgMC4wO1xuXHQgIH0gZWxzZSBpZiAodHlwZW9mIHggPT09ICdzdHJpbmcnICYmIHR5cGVvZiB5ID09PSAndW5kZWZpbmVkJykge1xuXHQgICAgdmFyIGNvb3JkcyA9IHguc3BsaXQoJywnKTtcblx0ICAgIHRoaXMueCA9IHBhcnNlRmxvYXQoY29vcmRzWzBdLCAxMCk7XG5cdCAgICB0aGlzLnkgPSBwYXJzZUZsb2F0KGNvb3Jkc1sxXSwgMTApO1xuXHQgICAgdGhpcy56ID0gcGFyc2VGbG9hdChjb29yZHNbMl0sIDEwKSB8fCAwLjA7XG5cdCAgfSBlbHNlIHtcblx0ICAgIHRoaXMueCA9IHg7XG5cdCAgICB0aGlzLnkgPSB5O1xuXHQgICAgdGhpcy56ID0geiB8fCAwLjA7XG5cdCAgfVxuXHQgIGNvbnNvbGUud2FybigncHJvajQuUG9pbnQgd2lsbCBiZSByZW1vdmVkIGluIHZlcnNpb24gMywgdXNlIHByb2o0LnRvUG9pbnQnKTtcblx0fVxuXG5cdFBvaW50LmZyb21NR1JTID0gZnVuY3Rpb24obWdyc1N0cikge1xuXHQgIHJldHVybiBuZXcgUG9pbnQodG9Qb2ludCQxKG1ncnNTdHIpKTtcblx0fTtcblx0UG9pbnQucHJvdG90eXBlLnRvTUdSUyA9IGZ1bmN0aW9uKGFjY3VyYWN5KSB7XG5cdCAgcmV0dXJuIGZvcndhcmQkMShbdGhpcy54LCB0aGlzLnldLCBhY2N1cmFjeSk7XG5cdH07XG5cblx0dmFyIHZlcnNpb24gPSBcIjIuNC4zXCI7XG5cblx0dmFyIEMwMCA9IDE7XG5cdHZhciBDMDIgPSAwLjI1O1xuXHR2YXIgQzA0ID0gMC4wNDY4NzU7XG5cdHZhciBDMDYgPSAwLjAxOTUzMTI1O1xuXHR2YXIgQzA4ID0gMC4wMTA2ODExNTIzNDM3NTtcblx0dmFyIEMyMiA9IDAuNzU7XG5cdHZhciBDNDQgPSAwLjQ2ODc1O1xuXHR2YXIgQzQ2ID0gMC4wMTMwMjA4MzMzMzMzMzMzMzMzMztcblx0dmFyIEM0OCA9IDAuMDA3MTIwNzY4MjI5MTY2NjY2NjY7XG5cdHZhciBDNjYgPSAwLjM2NDU4MzMzMzMzMzMzMzMzMzMzO1xuXHR2YXIgQzY4ID0gMC4wMDU2OTY2MTQ1ODMzMzMzMzMzMztcblx0dmFyIEM4OCA9IDAuMzA3NjE3MTg3NTtcblxuXHR2YXIgcGpfZW5mbiA9IGZ1bmN0aW9uKGVzKSB7XG5cdCAgdmFyIGVuID0gW107XG5cdCAgZW5bMF0gPSBDMDAgLSBlcyAqIChDMDIgKyBlcyAqIChDMDQgKyBlcyAqIChDMDYgKyBlcyAqIEMwOCkpKTtcblx0ICBlblsxXSA9IGVzICogKEMyMiAtIGVzICogKEMwNCArIGVzICogKEMwNiArIGVzICogQzA4KSkpO1xuXHQgIHZhciB0ID0gZXMgKiBlcztcblx0ICBlblsyXSA9IHQgKiAoQzQ0IC0gZXMgKiAoQzQ2ICsgZXMgKiBDNDgpKTtcblx0ICB0ICo9IGVzO1xuXHQgIGVuWzNdID0gdCAqIChDNjYgLSBlcyAqIEM2OCk7XG5cdCAgZW5bNF0gPSB0ICogZXMgKiBDODg7XG5cdCAgcmV0dXJuIGVuO1xuXHR9O1xuXG5cdHZhciBwal9tbGZuID0gZnVuY3Rpb24ocGhpLCBzcGhpLCBjcGhpLCBlbikge1xuXHQgIGNwaGkgKj0gc3BoaTtcblx0ICBzcGhpICo9IHNwaGk7XG5cdCAgcmV0dXJuIChlblswXSAqIHBoaSAtIGNwaGkgKiAoZW5bMV0gKyBzcGhpICogKGVuWzJdICsgc3BoaSAqIChlblszXSArIHNwaGkgKiBlbls0XSkpKSk7XG5cdH07XG5cblx0dmFyIE1BWF9JVEVSID0gMjA7XG5cblx0dmFyIHBqX2ludl9tbGZuID0gZnVuY3Rpb24oYXJnLCBlcywgZW4pIHtcblx0ICB2YXIgayA9IDEgLyAoMSAtIGVzKTtcblx0ICB2YXIgcGhpID0gYXJnO1xuXHQgIGZvciAodmFyIGkgPSBNQVhfSVRFUjsgaTsgLS1pKSB7IC8qIHJhcmVseSBnb2VzIG92ZXIgMiBpdGVyYXRpb25zICovXG5cdCAgICB2YXIgcyA9IE1hdGguc2luKHBoaSk7XG5cdCAgICB2YXIgdCA9IDEgLSBlcyAqIHMgKiBzO1xuXHQgICAgLy90ID0gdGhpcy5wal9tbGZuKHBoaSwgcywgTWF0aC5jb3MocGhpKSwgZW4pIC0gYXJnO1xuXHQgICAgLy9waGkgLT0gdCAqICh0ICogTWF0aC5zcXJ0KHQpKSAqIGs7XG5cdCAgICB0ID0gKHBqX21sZm4ocGhpLCBzLCBNYXRoLmNvcyhwaGkpLCBlbikgLSBhcmcpICogKHQgKiBNYXRoLnNxcnQodCkpICogaztcblx0ICAgIHBoaSAtPSB0O1xuXHQgICAgaWYgKE1hdGguYWJzKHQpIDwgRVBTTE4pIHtcblx0ICAgICAgcmV0dXJuIHBoaTtcblx0ICAgIH1cblx0ICB9XG5cdCAgLy8uLnJlcG9ydEVycm9yKFwiY2Fzczpwal9pbnZfbWxmbjogQ29udmVyZ2VuY2UgZXJyb3JcIik7XG5cdCAgcmV0dXJuIHBoaTtcblx0fTtcblxuXHQvLyBIZWF2aWx5IGJhc2VkIG9uIHRoaXMgdG1lcmMgcHJvamVjdGlvbiBpbXBsZW1lbnRhdGlvblxuXHQvLyBodHRwczovL2dpdGh1Yi5jb20vbWJsb2NoL21hcHNoYXBlci1wcm9qL2Jsb2IvbWFzdGVyL3NyYy9wcm9qZWN0aW9ucy90bWVyYy5qc1xuXG5cdGZ1bmN0aW9uIGluaXQkMigpIHtcblx0ICB0aGlzLngwID0gdGhpcy54MCAhPT0gdW5kZWZpbmVkID8gdGhpcy54MCA6IDA7XG5cdCAgdGhpcy55MCA9IHRoaXMueTAgIT09IHVuZGVmaW5lZCA/IHRoaXMueTAgOiAwO1xuXHQgIHRoaXMubG9uZzAgPSB0aGlzLmxvbmcwICE9PSB1bmRlZmluZWQgPyB0aGlzLmxvbmcwIDogMDtcblx0ICB0aGlzLmxhdDAgPSB0aGlzLmxhdDAgIT09IHVuZGVmaW5lZCA/IHRoaXMubGF0MCA6IDA7XG5cblx0ICBpZiAodGhpcy5lcykge1xuXHQgICAgdGhpcy5lbiA9IHBqX2VuZm4odGhpcy5lcyk7XG5cdCAgICB0aGlzLm1sMCA9IHBqX21sZm4odGhpcy5sYXQwLCBNYXRoLnNpbih0aGlzLmxhdDApLCBNYXRoLmNvcyh0aGlzLmxhdDApLCB0aGlzLmVuKTtcblx0ICB9XG5cdH1cblxuXHQvKipcblx0ICAgIFRyYW5zdmVyc2UgTWVyY2F0b3IgRm9yd2FyZCAgLSBsb25nL2xhdCB0byB4L3lcblx0ICAgIGxvbmcvbGF0IGluIHJhZGlhbnNcblx0ICAqL1xuXHRmdW5jdGlvbiBmb3J3YXJkJDIocCkge1xuXHQgIHZhciBsb24gPSBwLng7XG5cdCAgdmFyIGxhdCA9IHAueTtcblxuXHQgIHZhciBkZWx0YV9sb24gPSBhZGp1c3RfbG9uKGxvbiAtIHRoaXMubG9uZzApO1xuXHQgIHZhciBjb247XG5cdCAgdmFyIHgsIHk7XG5cdCAgdmFyIHNpbl9waGkgPSBNYXRoLnNpbihsYXQpO1xuXHQgIHZhciBjb3NfcGhpID0gTWF0aC5jb3MobGF0KTtcblxuXHQgIGlmICghdGhpcy5lcykge1xuXHQgICAgdmFyIGIgPSBjb3NfcGhpICogTWF0aC5zaW4oZGVsdGFfbG9uKTtcblxuXHQgICAgaWYgKChNYXRoLmFicyhNYXRoLmFicyhiKSAtIDEpKSA8IEVQU0xOKSB7XG5cdCAgICAgIHJldHVybiAoOTMpO1xuXHQgICAgfVxuXHQgICAgZWxzZSB7XG5cdCAgICAgIHggPSAwLjUgKiB0aGlzLmEgKiB0aGlzLmswICogTWF0aC5sb2coKDEgKyBiKSAvICgxIC0gYikpICsgdGhpcy54MDtcblx0ICAgICAgeSA9IGNvc19waGkgKiBNYXRoLmNvcyhkZWx0YV9sb24pIC8gTWF0aC5zcXJ0KDEgLSBNYXRoLnBvdyhiLCAyKSk7XG5cdCAgICAgIGIgPSBNYXRoLmFicyh5KTtcblxuXHQgICAgICBpZiAoYiA+PSAxKSB7XG5cdCAgICAgICAgaWYgKChiIC0gMSkgPiBFUFNMTikge1xuXHQgICAgICAgICAgcmV0dXJuICg5Myk7XG5cdCAgICAgICAgfVxuXHQgICAgICAgIGVsc2Uge1xuXHQgICAgICAgICAgeSA9IDA7XG5cdCAgICAgICAgfVxuXHQgICAgICB9XG5cdCAgICAgIGVsc2Uge1xuXHQgICAgICAgIHkgPSBNYXRoLmFjb3MoeSk7XG5cdCAgICAgIH1cblxuXHQgICAgICBpZiAobGF0IDwgMCkge1xuXHQgICAgICAgIHkgPSAteTtcblx0ICAgICAgfVxuXG5cdCAgICAgIHkgPSB0aGlzLmEgKiB0aGlzLmswICogKHkgLSB0aGlzLmxhdDApICsgdGhpcy55MDtcblx0ICAgIH1cblx0ICB9XG5cdCAgZWxzZSB7XG5cdCAgICB2YXIgYWwgPSBjb3NfcGhpICogZGVsdGFfbG9uO1xuXHQgICAgdmFyIGFscyA9IE1hdGgucG93KGFsLCAyKTtcblx0ICAgIHZhciBjID0gdGhpcy5lcDIgKiBNYXRoLnBvdyhjb3NfcGhpLCAyKTtcblx0ICAgIHZhciBjcyA9IE1hdGgucG93KGMsIDIpO1xuXHQgICAgdmFyIHRxID0gTWF0aC5hYnMoY29zX3BoaSkgPiBFUFNMTiA/IE1hdGgudGFuKGxhdCkgOiAwO1xuXHQgICAgdmFyIHQgPSBNYXRoLnBvdyh0cSwgMik7XG5cdCAgICB2YXIgdHMgPSBNYXRoLnBvdyh0LCAyKTtcblx0ICAgIGNvbiA9IDEgLSB0aGlzLmVzICogTWF0aC5wb3coc2luX3BoaSwgMik7XG5cdCAgICBhbCA9IGFsIC8gTWF0aC5zcXJ0KGNvbik7XG5cdCAgICB2YXIgbWwgPSBwal9tbGZuKGxhdCwgc2luX3BoaSwgY29zX3BoaSwgdGhpcy5lbik7XG5cblx0ICAgIHggPSB0aGlzLmEgKiAodGhpcy5rMCAqIGFsICogKDEgK1xuXHQgICAgICBhbHMgLyA2ICogKDEgLSB0ICsgYyArXG5cdCAgICAgIGFscyAvIDIwICogKDUgLSAxOCAqIHQgKyB0cyArIDE0ICogYyAtIDU4ICogdCAqIGMgK1xuXHQgICAgICBhbHMgLyA0MiAqICg2MSArIDE3OSAqIHRzIC0gdHMgKiB0IC0gNDc5ICogdCkpKSkpICtcblx0ICAgICAgdGhpcy54MDtcblxuXHQgICAgeSA9IHRoaXMuYSAqICh0aGlzLmswICogKG1sIC0gdGhpcy5tbDAgK1xuXHQgICAgICBzaW5fcGhpICogZGVsdGFfbG9uICogYWwgLyAyICogKDEgK1xuXHQgICAgICBhbHMgLyAxMiAqICg1IC0gdCArIDkgKiBjICsgNCAqIGNzICtcblx0ICAgICAgYWxzIC8gMzAgKiAoNjEgKyB0cyAtIDU4ICogdCArIDI3MCAqIGMgLSAzMzAgKiB0ICogYyArXG5cdCAgICAgIGFscyAvIDU2ICogKDEzODUgKyA1NDMgKiB0cyAtIHRzICogdCAtIDMxMTEgKiB0KSkpKSkpICtcblx0ICAgICAgdGhpcy55MDtcblx0ICB9XG5cblx0ICBwLnggPSB4O1xuXHQgIHAueSA9IHk7XG5cblx0ICByZXR1cm4gcDtcblx0fVxuXG5cdC8qKlxuXHQgICAgVHJhbnN2ZXJzZSBNZXJjYXRvciBJbnZlcnNlICAtICB4L3kgdG8gbG9uZy9sYXRcblx0ICAqL1xuXHRmdW5jdGlvbiBpbnZlcnNlJDIocCkge1xuXHQgIHZhciBjb24sIHBoaTtcblx0ICB2YXIgbGF0LCBsb247XG5cdCAgdmFyIHggPSAocC54IC0gdGhpcy54MCkgKiAoMSAvIHRoaXMuYSk7XG5cdCAgdmFyIHkgPSAocC55IC0gdGhpcy55MCkgKiAoMSAvIHRoaXMuYSk7XG5cblx0ICBpZiAoIXRoaXMuZXMpIHtcblx0ICAgIHZhciBmID0gTWF0aC5leHAoeCAvIHRoaXMuazApO1xuXHQgICAgdmFyIGcgPSAwLjUgKiAoZiAtIDEgLyBmKTtcblx0ICAgIHZhciB0ZW1wID0gdGhpcy5sYXQwICsgeSAvIHRoaXMuazA7XG5cdCAgICB2YXIgaCA9IE1hdGguY29zKHRlbXApO1xuXHQgICAgY29uID0gTWF0aC5zcXJ0KCgxIC0gTWF0aC5wb3coaCwgMikpIC8gKDEgKyBNYXRoLnBvdyhnLCAyKSkpO1xuXHQgICAgbGF0ID0gTWF0aC5hc2luKGNvbik7XG5cblx0ICAgIGlmICh5IDwgMCkge1xuXHQgICAgICBsYXQgPSAtbGF0O1xuXHQgICAgfVxuXG5cdCAgICBpZiAoKGcgPT09IDApICYmIChoID09PSAwKSkge1xuXHQgICAgICBsb24gPSAwO1xuXHQgICAgfVxuXHQgICAgZWxzZSB7XG5cdCAgICAgIGxvbiA9IGFkanVzdF9sb24oTWF0aC5hdGFuMihnLCBoKSArIHRoaXMubG9uZzApO1xuXHQgICAgfVxuXHQgIH1cblx0ICBlbHNlIHsgLy8gZWxsaXBzb2lkYWwgZm9ybVxuXHQgICAgY29uID0gdGhpcy5tbDAgKyB5IC8gdGhpcy5rMDtcblx0ICAgIHBoaSA9IHBqX2ludl9tbGZuKGNvbiwgdGhpcy5lcywgdGhpcy5lbik7XG5cblx0ICAgIGlmIChNYXRoLmFicyhwaGkpIDwgSEFMRl9QSSkge1xuXHQgICAgICB2YXIgc2luX3BoaSA9IE1hdGguc2luKHBoaSk7XG5cdCAgICAgIHZhciBjb3NfcGhpID0gTWF0aC5jb3MocGhpKTtcblx0ICAgICAgdmFyIHRhbl9waGkgPSBNYXRoLmFicyhjb3NfcGhpKSA+IEVQU0xOID8gTWF0aC50YW4ocGhpKSA6IDA7XG5cdCAgICAgIHZhciBjID0gdGhpcy5lcDIgKiBNYXRoLnBvdyhjb3NfcGhpLCAyKTtcblx0ICAgICAgdmFyIGNzID0gTWF0aC5wb3coYywgMik7XG5cdCAgICAgIHZhciB0ID0gTWF0aC5wb3codGFuX3BoaSwgMik7XG5cdCAgICAgIHZhciB0cyA9IE1hdGgucG93KHQsIDIpO1xuXHQgICAgICBjb24gPSAxIC0gdGhpcy5lcyAqIE1hdGgucG93KHNpbl9waGksIDIpO1xuXHQgICAgICB2YXIgZCA9IHggKiBNYXRoLnNxcnQoY29uKSAvIHRoaXMuazA7XG5cdCAgICAgIHZhciBkcyA9IE1hdGgucG93KGQsIDIpO1xuXHQgICAgICBjb24gPSBjb24gKiB0YW5fcGhpO1xuXG5cdCAgICAgIGxhdCA9IHBoaSAtIChjb24gKiBkcyAvICgxIC0gdGhpcy5lcykpICogMC41ICogKDEgLVxuXHQgICAgICAgIGRzIC8gMTIgKiAoNSArIDMgKiB0IC0gOSAqIGMgKiB0ICsgYyAtIDQgKiBjcyAtXG5cdCAgICAgICAgZHMgLyAzMCAqICg2MSArIDkwICogdCAtIDI1MiAqIGMgKiB0ICsgNDUgKiB0cyArIDQ2ICogYyAtXG5cdCAgICAgICAgZHMgLyA1NiAqICgxMzg1ICsgMzYzMyAqIHQgKyA0MDk1ICogdHMgKyAxNTc0ICogdHMgKiB0KSkpKTtcblxuXHQgICAgICBsb24gPSBhZGp1c3RfbG9uKHRoaXMubG9uZzAgKyAoZCAqICgxIC1cblx0ICAgICAgICBkcyAvIDYgKiAoMSArIDIgKiB0ICsgYyAtXG5cdCAgICAgICAgZHMgLyAyMCAqICg1ICsgMjggKiB0ICsgMjQgKiB0cyArIDggKiBjICogdCArIDYgKiBjIC1cblx0ICAgICAgICBkcyAvIDQyICogKDYxICsgNjYyICogdCArIDEzMjAgKiB0cyArIDcyMCAqIHRzICogdCkpKSkgLyBjb3NfcGhpKSk7XG5cdCAgICB9XG5cdCAgICBlbHNlIHtcblx0ICAgICAgbGF0ID0gSEFMRl9QSSAqIHNpZ24oeSk7XG5cdCAgICAgIGxvbiA9IDA7XG5cdCAgICB9XG5cdCAgfVxuXG5cdCAgcC54ID0gbG9uO1xuXHQgIHAueSA9IGxhdDtcblxuXHQgIHJldHVybiBwO1xuXHR9XG5cblx0dmFyIG5hbWVzJDMgPSBbXCJUcmFuc3ZlcnNlX01lcmNhdG9yXCIsIFwiVHJhbnN2ZXJzZSBNZXJjYXRvclwiLCBcInRtZXJjXCJdO1xuXHR2YXIgdG1lcmMgPSB7XG5cdCAgaW5pdDogaW5pdCQyLFxuXHQgIGZvcndhcmQ6IGZvcndhcmQkMixcblx0ICBpbnZlcnNlOiBpbnZlcnNlJDIsXG5cdCAgbmFtZXM6IG5hbWVzJDNcblx0fTtcblxuXHR2YXIgc2luaCA9IGZ1bmN0aW9uKHgpIHtcblx0ICB2YXIgciA9IE1hdGguZXhwKHgpO1xuXHQgIHIgPSAociAtIDEgLyByKSAvIDI7XG5cdCAgcmV0dXJuIHI7XG5cdH07XG5cblx0dmFyIGh5cG90ID0gZnVuY3Rpb24oeCwgeSkge1xuXHQgIHggPSBNYXRoLmFicyh4KTtcblx0ICB5ID0gTWF0aC5hYnMoeSk7XG5cdCAgdmFyIGEgPSBNYXRoLm1heCh4LCB5KTtcblx0ICB2YXIgYiA9IE1hdGgubWluKHgsIHkpIC8gKGEgPyBhIDogMSk7XG5cblx0ICByZXR1cm4gYSAqIE1hdGguc3FydCgxICsgTWF0aC5wb3coYiwgMikpO1xuXHR9O1xuXG5cdHZhciBsb2cxcHkgPSBmdW5jdGlvbih4KSB7XG5cdCAgdmFyIHkgPSAxICsgeDtcblx0ICB2YXIgeiA9IHkgLSAxO1xuXG5cdCAgcmV0dXJuIHogPT09IDAgPyB4IDogeCAqIE1hdGgubG9nKHkpIC8gejtcblx0fTtcblxuXHR2YXIgYXNpbmh5ID0gZnVuY3Rpb24oeCkge1xuXHQgIHZhciB5ID0gTWF0aC5hYnMoeCk7XG5cdCAgeSA9IGxvZzFweSh5ICogKDEgKyB5IC8gKGh5cG90KDEsIHkpICsgMSkpKTtcblxuXHQgIHJldHVybiB4IDwgMCA/IC15IDogeTtcblx0fTtcblxuXHR2YXIgZ2F0ZyA9IGZ1bmN0aW9uKHBwLCBCKSB7XG5cdCAgdmFyIGNvc18yQiA9IDIgKiBNYXRoLmNvcygyICogQik7XG5cdCAgdmFyIGkgPSBwcC5sZW5ndGggLSAxO1xuXHQgIHZhciBoMSA9IHBwW2ldO1xuXHQgIHZhciBoMiA9IDA7XG5cdCAgdmFyIGg7XG5cblx0ICB3aGlsZSAoLS1pID49IDApIHtcblx0ICAgIGggPSAtaDIgKyBjb3NfMkIgKiBoMSArIHBwW2ldO1xuXHQgICAgaDIgPSBoMTtcblx0ICAgIGgxID0gaDtcblx0ICB9XG5cblx0ICByZXR1cm4gKEIgKyBoICogTWF0aC5zaW4oMiAqIEIpKTtcblx0fTtcblxuXHR2YXIgY2xlbnMgPSBmdW5jdGlvbihwcCwgYXJnX3IpIHtcblx0ICB2YXIgciA9IDIgKiBNYXRoLmNvcyhhcmdfcik7XG5cdCAgdmFyIGkgPSBwcC5sZW5ndGggLSAxO1xuXHQgIHZhciBocjEgPSBwcFtpXTtcblx0ICB2YXIgaHIyID0gMDtcblx0ICB2YXIgaHI7XG5cblx0ICB3aGlsZSAoLS1pID49IDApIHtcblx0ICAgIGhyID0gLWhyMiArIHIgKiBocjEgKyBwcFtpXTtcblx0ICAgIGhyMiA9IGhyMTtcblx0ICAgIGhyMSA9IGhyO1xuXHQgIH1cblxuXHQgIHJldHVybiBNYXRoLnNpbihhcmdfcikgKiBocjtcblx0fTtcblxuXHR2YXIgY29zaCA9IGZ1bmN0aW9uKHgpIHtcblx0ICB2YXIgciA9IE1hdGguZXhwKHgpO1xuXHQgIHIgPSAociArIDEgLyByKSAvIDI7XG5cdCAgcmV0dXJuIHI7XG5cdH07XG5cblx0dmFyIGNsZW5zX2NtcGx4ID0gZnVuY3Rpb24ocHAsIGFyZ19yLCBhcmdfaSkge1xuXHQgIHZhciBzaW5fYXJnX3IgPSBNYXRoLnNpbihhcmdfcik7XG5cdCAgdmFyIGNvc19hcmdfciA9IE1hdGguY29zKGFyZ19yKTtcblx0ICB2YXIgc2luaF9hcmdfaSA9IHNpbmgoYXJnX2kpO1xuXHQgIHZhciBjb3NoX2FyZ19pID0gY29zaChhcmdfaSk7XG5cdCAgdmFyIHIgPSAyICogY29zX2FyZ19yICogY29zaF9hcmdfaTtcblx0ICB2YXIgaSA9IC0yICogc2luX2FyZ19yICogc2luaF9hcmdfaTtcblx0ICB2YXIgaiA9IHBwLmxlbmd0aCAtIDE7XG5cdCAgdmFyIGhyID0gcHBbal07XG5cdCAgdmFyIGhpMSA9IDA7XG5cdCAgdmFyIGhyMSA9IDA7XG5cdCAgdmFyIGhpID0gMDtcblx0ICB2YXIgaHIyO1xuXHQgIHZhciBoaTI7XG5cblx0ICB3aGlsZSAoLS1qID49IDApIHtcblx0ICAgIGhyMiA9IGhyMTtcblx0ICAgIGhpMiA9IGhpMTtcblx0ICAgIGhyMSA9IGhyO1xuXHQgICAgaGkxID0gaGk7XG5cdCAgICBociA9IC1ocjIgKyByICogaHIxIC0gaSAqIGhpMSArIHBwW2pdO1xuXHQgICAgaGkgPSAtaGkyICsgaSAqIGhyMSArIHIgKiBoaTE7XG5cdCAgfVxuXG5cdCAgciA9IHNpbl9hcmdfciAqIGNvc2hfYXJnX2k7XG5cdCAgaSA9IGNvc19hcmdfciAqIHNpbmhfYXJnX2k7XG5cblx0ICByZXR1cm4gW3IgKiBociAtIGkgKiBoaSwgciAqIGhpICsgaSAqIGhyXTtcblx0fTtcblxuXHQvLyBIZWF2aWx5IGJhc2VkIG9uIHRoaXMgZXRtZXJjIHByb2plY3Rpb24gaW1wbGVtZW50YXRpb25cblx0Ly8gaHR0cHM6Ly9naXRodWIuY29tL21ibG9jaC9tYXBzaGFwZXItcHJvai9ibG9iL21hc3Rlci9zcmMvcHJvamVjdGlvbnMvZXRtZXJjLmpzXG5cblx0ZnVuY3Rpb24gaW5pdCQzKCkge1xuXHQgIGlmICh0aGlzLmVzID09PSB1bmRlZmluZWQgfHwgdGhpcy5lcyA8PSAwKSB7XG5cdCAgICB0aHJvdyBuZXcgRXJyb3IoJ2luY29ycmVjdCBlbGxpcHRpY2FsIHVzYWdlJyk7XG5cdCAgfVxuXG5cdCAgdGhpcy54MCA9IHRoaXMueDAgIT09IHVuZGVmaW5lZCA/IHRoaXMueDAgOiAwO1xuXHQgIHRoaXMueTAgPSB0aGlzLnkwICE9PSB1bmRlZmluZWQgPyB0aGlzLnkwIDogMDtcblx0ICB0aGlzLmxvbmcwID0gdGhpcy5sb25nMCAhPT0gdW5kZWZpbmVkID8gdGhpcy5sb25nMCA6IDA7XG5cdCAgdGhpcy5sYXQwID0gdGhpcy5sYXQwICE9PSB1bmRlZmluZWQgPyB0aGlzLmxhdDAgOiAwO1xuXG5cdCAgdGhpcy5jZ2IgPSBbXTtcblx0ICB0aGlzLmNiZyA9IFtdO1xuXHQgIHRoaXMudXRnID0gW107XG5cdCAgdGhpcy5ndHUgPSBbXTtcblxuXHQgIHZhciBmID0gdGhpcy5lcyAvICgxICsgTWF0aC5zcXJ0KDEgLSB0aGlzLmVzKSk7XG5cdCAgdmFyIG4gPSBmIC8gKDIgLSBmKTtcblx0ICB2YXIgbnAgPSBuO1xuXG5cdCAgdGhpcy5jZ2JbMF0gPSBuICogKDIgKyBuICogKC0yIC8gMyArIG4gKiAoLTIgKyBuICogKDExNiAvIDQ1ICsgbiAqICgyNiAvIDQ1ICsgbiAqICgtMjg1NCAvIDY3NSApKSkpKSk7XG5cdCAgdGhpcy5jYmdbMF0gPSBuICogKC0yICsgbiAqICggMiAvIDMgKyBuICogKCA0IC8gMyArIG4gKiAoLTgyIC8gNDUgKyBuICogKDMyIC8gNDUgKyBuICogKDQ2NDIgLyA0NzI1KSkpKSkpO1xuXG5cdCAgbnAgPSBucCAqIG47XG5cdCAgdGhpcy5jZ2JbMV0gPSBucCAqICg3IC8gMyArIG4gKiAoLTggLyA1ICsgbiAqICgtMjI3IC8gNDUgKyBuICogKDI3MDQgLyAzMTUgKyBuICogKDIzMjMgLyA5NDUpKSkpKTtcblx0ICB0aGlzLmNiZ1sxXSA9IG5wICogKDUgLyAzICsgbiAqICgtMTYgLyAxNSArIG4gKiAoIC0xMyAvIDkgKyBuICogKDkwNCAvIDMxNSArIG4gKiAoLTE1MjIgLyA5NDUpKSkpKTtcblxuXHQgIG5wID0gbnAgKiBuO1xuXHQgIHRoaXMuY2diWzJdID0gbnAgKiAoNTYgLyAxNSArIG4gKiAoLTEzNiAvIDM1ICsgbiAqICgtMTI2MiAvIDEwNSArIG4gKiAoNzM4MTQgLyAyODM1KSkpKTtcblx0ICB0aGlzLmNiZ1syXSA9IG5wICogKC0yNiAvIDE1ICsgbiAqICgzNCAvIDIxICsgbiAqICg4IC8gNSArIG4gKiAoLTEyNjg2IC8gMjgzNSkpKSk7XG5cblx0ICBucCA9IG5wICogbjtcblx0ICB0aGlzLmNnYlszXSA9IG5wICogKDQyNzkgLyA2MzAgKyBuICogKC0zMzIgLyAzNSArIG4gKiAoLTM5OTU3MiAvIDE0MTc1KSkpO1xuXHQgIHRoaXMuY2JnWzNdID0gbnAgKiAoMTIzNyAvIDYzMCArIG4gKiAoLTEyIC8gNSArIG4gKiAoIC0yNDgzMiAvIDE0MTc1KSkpO1xuXG5cdCAgbnAgPSBucCAqIG47XG5cdCAgdGhpcy5jZ2JbNF0gPSBucCAqICg0MTc0IC8gMzE1ICsgbiAqICgtMTQ0ODM4IC8gNjIzNykpO1xuXHQgIHRoaXMuY2JnWzRdID0gbnAgKiAoLTczNCAvIDMxNSArIG4gKiAoMTA5NTk4IC8gMzExODUpKTtcblxuXHQgIG5wID0gbnAgKiBuO1xuXHQgIHRoaXMuY2diWzVdID0gbnAgKiAoNjAxNjc2IC8gMjIyNzUpO1xuXHQgIHRoaXMuY2JnWzVdID0gbnAgKiAoNDQ0MzM3IC8gMTU1OTI1KTtcblxuXHQgIG5wID0gTWF0aC5wb3cobiwgMik7XG5cdCAgdGhpcy5RbiA9IHRoaXMuazAgLyAoMSArIG4pICogKDEgKyBucCAqICgxIC8gNCArIG5wICogKDEgLyA2NCArIG5wIC8gMjU2KSkpO1xuXG5cdCAgdGhpcy51dGdbMF0gPSBuICogKC0wLjUgKyBuICogKCAyIC8gMyArIG4gKiAoLTM3IC8gOTYgKyBuICogKCAxIC8gMzYwICsgbiAqICg4MSAvIDUxMiArIG4gKiAoLTk2MTk5IC8gNjA0ODAwKSkpKSkpO1xuXHQgIHRoaXMuZ3R1WzBdID0gbiAqICgwLjUgKyBuICogKC0yIC8gMyArIG4gKiAoNSAvIDE2ICsgbiAqICg0MSAvIDE4MCArIG4gKiAoLTEyNyAvIDI4OCArIG4gKiAoNzg5MSAvIDM3ODAwKSkpKSkpO1xuXG5cdCAgdGhpcy51dGdbMV0gPSBucCAqICgtMSAvIDQ4ICsgbiAqICgtMSAvIDE1ICsgbiAqICg0MzcgLyAxNDQwICsgbiAqICgtNDYgLyAxMDUgKyBuICogKDExMTg3MTEgLyAzODcwNzIwKSkpKSk7XG5cdCAgdGhpcy5ndHVbMV0gPSBucCAqICgxMyAvIDQ4ICsgbiAqICgtMyAvIDUgKyBuICogKDU1NyAvIDE0NDAgKyBuICogKDI4MSAvIDYzMCArIG4gKiAoLTE5ODM0MzMgLyAxOTM1MzYwKSkpKSk7XG5cblx0ICBucCA9IG5wICogbjtcblx0ICB0aGlzLnV0Z1syXSA9IG5wICogKC0xNyAvIDQ4MCArIG4gKiAoMzcgLyA4NDAgKyBuICogKDIwOSAvIDQ0ODAgKyBuICogKC01NTY5IC8gOTA3MjAgKSkpKTtcblx0ICB0aGlzLmd0dVsyXSA9IG5wICogKDYxIC8gMjQwICsgbiAqICgtMTAzIC8gMTQwICsgbiAqICgxNTA2MSAvIDI2ODgwICsgbiAqICgxNjc2MDMgLyAxODE0NDApKSkpO1xuXG5cdCAgbnAgPSBucCAqIG47XG5cdCAgdGhpcy51dGdbM10gPSBucCAqICgtNDM5NyAvIDE2MTI4MCArIG4gKiAoMTEgLyA1MDQgKyBuICogKDgzMDI1MSAvIDcyNTc2MDApKSk7XG5cdCAgdGhpcy5ndHVbM10gPSBucCAqICg0OTU2MSAvIDE2MTI4MCArIG4gKiAoLTE3OSAvIDE2OCArIG4gKiAoNjYwMTY2MSAvIDcyNTc2MDApKSk7XG5cblx0ICBucCA9IG5wICogbjtcblx0ICB0aGlzLnV0Z1s0XSA9IG5wICogKC00NTgzIC8gMTYxMjgwICsgbiAqICgxMDg4NDcgLyAzOTkxNjgwKSk7XG5cdCAgdGhpcy5ndHVbNF0gPSBucCAqICgzNDcyOSAvIDgwNjQwICsgbiAqICgtMzQxODg4OSAvIDE5OTU4NDApKTtcblxuXHQgIG5wID0gbnAgKiBuO1xuXHQgIHRoaXMudXRnWzVdID0gbnAgKiAoLTIwNjQ4NjkzIC8gNjM4NjY4ODAwKTtcblx0ICB0aGlzLmd0dVs1XSA9IG5wICogKDIxMjM3ODk0MSAvIDMxOTMzNDQwMCk7XG5cblx0ICB2YXIgWiA9IGdhdGcodGhpcy5jYmcsIHRoaXMubGF0MCk7XG5cdCAgdGhpcy5aYiA9IC10aGlzLlFuICogKFogKyBjbGVucyh0aGlzLmd0dSwgMiAqIFopKTtcblx0fVxuXG5cdGZ1bmN0aW9uIGZvcndhcmQkMyhwKSB7XG5cdCAgdmFyIENlID0gYWRqdXN0X2xvbihwLnggLSB0aGlzLmxvbmcwKTtcblx0ICB2YXIgQ24gPSBwLnk7XG5cblx0ICBDbiA9IGdhdGcodGhpcy5jYmcsIENuKTtcblx0ICB2YXIgc2luX0NuID0gTWF0aC5zaW4oQ24pO1xuXHQgIHZhciBjb3NfQ24gPSBNYXRoLmNvcyhDbik7XG5cdCAgdmFyIHNpbl9DZSA9IE1hdGguc2luKENlKTtcblx0ICB2YXIgY29zX0NlID0gTWF0aC5jb3MoQ2UpO1xuXG5cdCAgQ24gPSBNYXRoLmF0YW4yKHNpbl9DbiwgY29zX0NlICogY29zX0NuKTtcblx0ICBDZSA9IE1hdGguYXRhbjIoc2luX0NlICogY29zX0NuLCBoeXBvdChzaW5fQ24sIGNvc19DbiAqIGNvc19DZSkpO1xuXHQgIENlID0gYXNpbmh5KE1hdGgudGFuKENlKSk7XG5cblx0ICB2YXIgdG1wID0gY2xlbnNfY21wbHgodGhpcy5ndHUsIDIgKiBDbiwgMiAqIENlKTtcblxuXHQgIENuID0gQ24gKyB0bXBbMF07XG5cdCAgQ2UgPSBDZSArIHRtcFsxXTtcblxuXHQgIHZhciB4O1xuXHQgIHZhciB5O1xuXG5cdCAgaWYgKE1hdGguYWJzKENlKSA8PSAyLjYyMzM5NTE2Mjc3OCkge1xuXHQgICAgeCA9IHRoaXMuYSAqICh0aGlzLlFuICogQ2UpICsgdGhpcy54MDtcblx0ICAgIHkgPSB0aGlzLmEgKiAodGhpcy5RbiAqIENuICsgdGhpcy5aYikgKyB0aGlzLnkwO1xuXHQgIH1cblx0ICBlbHNlIHtcblx0ICAgIHggPSBJbmZpbml0eTtcblx0ICAgIHkgPSBJbmZpbml0eTtcblx0ICB9XG5cblx0ICBwLnggPSB4O1xuXHQgIHAueSA9IHk7XG5cblx0ICByZXR1cm4gcDtcblx0fVxuXG5cdGZ1bmN0aW9uIGludmVyc2UkMyhwKSB7XG5cdCAgdmFyIENlID0gKHAueCAtIHRoaXMueDApICogKDEgLyB0aGlzLmEpO1xuXHQgIHZhciBDbiA9IChwLnkgLSB0aGlzLnkwKSAqICgxIC8gdGhpcy5hKTtcblxuXHQgIENuID0gKENuIC0gdGhpcy5aYikgLyB0aGlzLlFuO1xuXHQgIENlID0gQ2UgLyB0aGlzLlFuO1xuXG5cdCAgdmFyIGxvbjtcblx0ICB2YXIgbGF0O1xuXG5cdCAgaWYgKE1hdGguYWJzKENlKSA8PSAyLjYyMzM5NTE2Mjc3OCkge1xuXHQgICAgdmFyIHRtcCA9IGNsZW5zX2NtcGx4KHRoaXMudXRnLCAyICogQ24sIDIgKiBDZSk7XG5cblx0ICAgIENuID0gQ24gKyB0bXBbMF07XG5cdCAgICBDZSA9IENlICsgdG1wWzFdO1xuXHQgICAgQ2UgPSBNYXRoLmF0YW4oc2luaChDZSkpO1xuXG5cdCAgICB2YXIgc2luX0NuID0gTWF0aC5zaW4oQ24pO1xuXHQgICAgdmFyIGNvc19DbiA9IE1hdGguY29zKENuKTtcblx0ICAgIHZhciBzaW5fQ2UgPSBNYXRoLnNpbihDZSk7XG5cdCAgICB2YXIgY29zX0NlID0gTWF0aC5jb3MoQ2UpO1xuXG5cdCAgICBDbiA9IE1hdGguYXRhbjIoc2luX0NuICogY29zX0NlLCBoeXBvdChzaW5fQ2UsIGNvc19DZSAqIGNvc19DbikpO1xuXHQgICAgQ2UgPSBNYXRoLmF0YW4yKHNpbl9DZSwgY29zX0NlICogY29zX0NuKTtcblxuXHQgICAgbG9uID0gYWRqdXN0X2xvbihDZSArIHRoaXMubG9uZzApO1xuXHQgICAgbGF0ID0gZ2F0Zyh0aGlzLmNnYiwgQ24pO1xuXHQgIH1cblx0ICBlbHNlIHtcblx0ICAgIGxvbiA9IEluZmluaXR5O1xuXHQgICAgbGF0ID0gSW5maW5pdHk7XG5cdCAgfVxuXG5cdCAgcC54ID0gbG9uO1xuXHQgIHAueSA9IGxhdDtcblxuXHQgIHJldHVybiBwO1xuXHR9XG5cblx0dmFyIG5hbWVzJDQgPSBbXCJFeHRlbmRlZF9UcmFuc3ZlcnNlX01lcmNhdG9yXCIsIFwiRXh0ZW5kZWQgVHJhbnN2ZXJzZSBNZXJjYXRvclwiLCBcImV0bWVyY1wiXTtcblx0dmFyIGV0bWVyYyA9IHtcblx0ICBpbml0OiBpbml0JDMsXG5cdCAgZm9yd2FyZDogZm9yd2FyZCQzLFxuXHQgIGludmVyc2U6IGludmVyc2UkMyxcblx0ICBuYW1lczogbmFtZXMkNFxuXHR9O1xuXG5cdHZhciBhZGp1c3Rfem9uZSA9IGZ1bmN0aW9uKHpvbmUsIGxvbikge1xuXHQgIGlmICh6b25lID09PSB1bmRlZmluZWQpIHtcblx0ICAgIHpvbmUgPSBNYXRoLmZsb29yKChhZGp1c3RfbG9uKGxvbikgKyBNYXRoLlBJKSAqIDMwIC8gTWF0aC5QSSkgKyAxO1xuXG5cdCAgICBpZiAoem9uZSA8IDApIHtcblx0ICAgICAgcmV0dXJuIDA7XG5cdCAgICB9IGVsc2UgaWYgKHpvbmUgPiA2MCkge1xuXHQgICAgICByZXR1cm4gNjA7XG5cdCAgICB9XG5cdCAgfVxuXHQgIHJldHVybiB6b25lO1xuXHR9O1xuXG5cdHZhciBkZXBlbmRzT24gPSAnZXRtZXJjJztcblx0ZnVuY3Rpb24gaW5pdCQ0KCkge1xuXHQgIHZhciB6b25lID0gYWRqdXN0X3pvbmUodGhpcy56b25lLCB0aGlzLmxvbmcwKTtcblx0ICBpZiAoem9uZSA9PT0gdW5kZWZpbmVkKSB7XG5cdCAgICB0aHJvdyBuZXcgRXJyb3IoJ3Vua25vd24gdXRtIHpvbmUnKTtcblx0ICB9XG5cdCAgdGhpcy5sYXQwID0gMDtcblx0ICB0aGlzLmxvbmcwID0gICgoNiAqIE1hdGguYWJzKHpvbmUpKSAtIDE4MykgKiBEMlI7XG5cdCAgdGhpcy54MCA9IDUwMDAwMDtcblx0ICB0aGlzLnkwID0gdGhpcy51dG1Tb3V0aCA/IDEwMDAwMDAwIDogMDtcblx0ICB0aGlzLmswID0gMC45OTk2O1xuXG5cdCAgZXRtZXJjLmluaXQuYXBwbHkodGhpcyk7XG5cdCAgdGhpcy5mb3J3YXJkID0gZXRtZXJjLmZvcndhcmQ7XG5cdCAgdGhpcy5pbnZlcnNlID0gZXRtZXJjLmludmVyc2U7XG5cdH1cblxuXHR2YXIgbmFtZXMkNSA9IFtcIlVuaXZlcnNhbCBUcmFuc3ZlcnNlIE1lcmNhdG9yIFN5c3RlbVwiLCBcInV0bVwiXTtcblx0dmFyIHV0bSA9IHtcblx0ICBpbml0OiBpbml0JDQsXG5cdCAgbmFtZXM6IG5hbWVzJDUsXG5cdCAgZGVwZW5kc09uOiBkZXBlbmRzT25cblx0fTtcblxuXHR2YXIgc3JhdCA9IGZ1bmN0aW9uKGVzaW5wLCBleHApIHtcblx0ICByZXR1cm4gKE1hdGgucG93KCgxIC0gZXNpbnApIC8gKDEgKyBlc2lucCksIGV4cCkpO1xuXHR9O1xuXG5cdHZhciBNQVhfSVRFUiQxID0gMjA7XG5cdGZ1bmN0aW9uIGluaXQkNigpIHtcblx0ICB2YXIgc3BoaSA9IE1hdGguc2luKHRoaXMubGF0MCk7XG5cdCAgdmFyIGNwaGkgPSBNYXRoLmNvcyh0aGlzLmxhdDApO1xuXHQgIGNwaGkgKj0gY3BoaTtcblx0ICB0aGlzLnJjID0gTWF0aC5zcXJ0KDEgLSB0aGlzLmVzKSAvICgxIC0gdGhpcy5lcyAqIHNwaGkgKiBzcGhpKTtcblx0ICB0aGlzLkMgPSBNYXRoLnNxcnQoMSArIHRoaXMuZXMgKiBjcGhpICogY3BoaSAvICgxIC0gdGhpcy5lcykpO1xuXHQgIHRoaXMucGhpYzAgPSBNYXRoLmFzaW4oc3BoaSAvIHRoaXMuQyk7XG5cdCAgdGhpcy5yYXRleHAgPSAwLjUgKiB0aGlzLkMgKiB0aGlzLmU7XG5cdCAgdGhpcy5LID0gTWF0aC50YW4oMC41ICogdGhpcy5waGljMCArIEZPUlRQSSkgLyAoTWF0aC5wb3coTWF0aC50YW4oMC41ICogdGhpcy5sYXQwICsgRk9SVFBJKSwgdGhpcy5DKSAqIHNyYXQodGhpcy5lICogc3BoaSwgdGhpcy5yYXRleHApKTtcblx0fVxuXG5cdGZ1bmN0aW9uIGZvcndhcmQkNShwKSB7XG5cdCAgdmFyIGxvbiA9IHAueDtcblx0ICB2YXIgbGF0ID0gcC55O1xuXG5cdCAgcC55ID0gMiAqIE1hdGguYXRhbih0aGlzLksgKiBNYXRoLnBvdyhNYXRoLnRhbigwLjUgKiBsYXQgKyBGT1JUUEkpLCB0aGlzLkMpICogc3JhdCh0aGlzLmUgKiBNYXRoLnNpbihsYXQpLCB0aGlzLnJhdGV4cCkpIC0gSEFMRl9QSTtcblx0ICBwLnggPSB0aGlzLkMgKiBsb247XG5cdCAgcmV0dXJuIHA7XG5cdH1cblxuXHRmdW5jdGlvbiBpbnZlcnNlJDUocCkge1xuXHQgIHZhciBERUxfVE9MID0gMWUtMTQ7XG5cdCAgdmFyIGxvbiA9IHAueCAvIHRoaXMuQztcblx0ICB2YXIgbGF0ID0gcC55O1xuXHQgIHZhciBudW0gPSBNYXRoLnBvdyhNYXRoLnRhbigwLjUgKiBsYXQgKyBGT1JUUEkpIC8gdGhpcy5LLCAxIC8gdGhpcy5DKTtcblx0ICBmb3IgKHZhciBpID0gTUFYX0lURVIkMTsgaSA+IDA7IC0taSkge1xuXHQgICAgbGF0ID0gMiAqIE1hdGguYXRhbihudW0gKiBzcmF0KHRoaXMuZSAqIE1hdGguc2luKHAueSksIC0gMC41ICogdGhpcy5lKSkgLSBIQUxGX1BJO1xuXHQgICAgaWYgKE1hdGguYWJzKGxhdCAtIHAueSkgPCBERUxfVE9MKSB7XG5cdCAgICAgIGJyZWFrO1xuXHQgICAgfVxuXHQgICAgcC55ID0gbGF0O1xuXHQgIH1cblx0ICAvKiBjb252ZXJnZW5jZSBmYWlsZWQgKi9cblx0ICBpZiAoIWkpIHtcblx0ICAgIHJldHVybiBudWxsO1xuXHQgIH1cblx0ICBwLnggPSBsb247XG5cdCAgcC55ID0gbGF0O1xuXHQgIHJldHVybiBwO1xuXHR9XG5cblx0dmFyIG5hbWVzJDcgPSBbXCJnYXVzc1wiXTtcblx0dmFyIGdhdXNzID0ge1xuXHQgIGluaXQ6IGluaXQkNixcblx0ICBmb3J3YXJkOiBmb3J3YXJkJDUsXG5cdCAgaW52ZXJzZTogaW52ZXJzZSQ1LFxuXHQgIG5hbWVzOiBuYW1lcyQ3XG5cdH07XG5cblx0ZnVuY3Rpb24gaW5pdCQ1KCkge1xuXHQgIGdhdXNzLmluaXQuYXBwbHkodGhpcyk7XG5cdCAgaWYgKCF0aGlzLnJjKSB7XG5cdCAgICByZXR1cm47XG5cdCAgfVxuXHQgIHRoaXMuc2luYzAgPSBNYXRoLnNpbih0aGlzLnBoaWMwKTtcblx0ICB0aGlzLmNvc2MwID0gTWF0aC5jb3ModGhpcy5waGljMCk7XG5cdCAgdGhpcy5SMiA9IDIgKiB0aGlzLnJjO1xuXHQgIGlmICghdGhpcy50aXRsZSkge1xuXHQgICAgdGhpcy50aXRsZSA9IFwiT2JsaXF1ZSBTdGVyZW9ncmFwaGljIEFsdGVybmF0aXZlXCI7XG5cdCAgfVxuXHR9XG5cblx0ZnVuY3Rpb24gZm9yd2FyZCQ0KHApIHtcblx0ICB2YXIgc2luYywgY29zYywgY29zbCwgaztcblx0ICBwLnggPSBhZGp1c3RfbG9uKHAueCAtIHRoaXMubG9uZzApO1xuXHQgIGdhdXNzLmZvcndhcmQuYXBwbHkodGhpcywgW3BdKTtcblx0ICBzaW5jID0gTWF0aC5zaW4ocC55KTtcblx0ICBjb3NjID0gTWF0aC5jb3MocC55KTtcblx0ICBjb3NsID0gTWF0aC5jb3MocC54KTtcblx0ICBrID0gdGhpcy5rMCAqIHRoaXMuUjIgLyAoMSArIHRoaXMuc2luYzAgKiBzaW5jICsgdGhpcy5jb3NjMCAqIGNvc2MgKiBjb3NsKTtcblx0ICBwLnggPSBrICogY29zYyAqIE1hdGguc2luKHAueCk7XG5cdCAgcC55ID0gayAqICh0aGlzLmNvc2MwICogc2luYyAtIHRoaXMuc2luYzAgKiBjb3NjICogY29zbCk7XG5cdCAgcC54ID0gdGhpcy5hICogcC54ICsgdGhpcy54MDtcblx0ICBwLnkgPSB0aGlzLmEgKiBwLnkgKyB0aGlzLnkwO1xuXHQgIHJldHVybiBwO1xuXHR9XG5cblx0ZnVuY3Rpb24gaW52ZXJzZSQ0KHApIHtcblx0ICB2YXIgc2luYywgY29zYywgbG9uLCBsYXQsIHJobztcblx0ICBwLnggPSAocC54IC0gdGhpcy54MCkgLyB0aGlzLmE7XG5cdCAgcC55ID0gKHAueSAtIHRoaXMueTApIC8gdGhpcy5hO1xuXG5cdCAgcC54IC89IHRoaXMuazA7XG5cdCAgcC55IC89IHRoaXMuazA7XG5cdCAgaWYgKChyaG8gPSBNYXRoLnNxcnQocC54ICogcC54ICsgcC55ICogcC55KSkpIHtcblx0ICAgIHZhciBjID0gMiAqIE1hdGguYXRhbjIocmhvLCB0aGlzLlIyKTtcblx0ICAgIHNpbmMgPSBNYXRoLnNpbihjKTtcblx0ICAgIGNvc2MgPSBNYXRoLmNvcyhjKTtcblx0ICAgIGxhdCA9IE1hdGguYXNpbihjb3NjICogdGhpcy5zaW5jMCArIHAueSAqIHNpbmMgKiB0aGlzLmNvc2MwIC8gcmhvKTtcblx0ICAgIGxvbiA9IE1hdGguYXRhbjIocC54ICogc2luYywgcmhvICogdGhpcy5jb3NjMCAqIGNvc2MgLSBwLnkgKiB0aGlzLnNpbmMwICogc2luYyk7XG5cdCAgfVxuXHQgIGVsc2Uge1xuXHQgICAgbGF0ID0gdGhpcy5waGljMDtcblx0ICAgIGxvbiA9IDA7XG5cdCAgfVxuXG5cdCAgcC54ID0gbG9uO1xuXHQgIHAueSA9IGxhdDtcblx0ICBnYXVzcy5pbnZlcnNlLmFwcGx5KHRoaXMsIFtwXSk7XG5cdCAgcC54ID0gYWRqdXN0X2xvbihwLnggKyB0aGlzLmxvbmcwKTtcblx0ICByZXR1cm4gcDtcblx0fVxuXG5cdHZhciBuYW1lcyQ2ID0gW1wiU3RlcmVvZ3JhcGhpY19Ob3J0aF9Qb2xlXCIsIFwiT2JsaXF1ZV9TdGVyZW9ncmFwaGljXCIsIFwiUG9sYXJfU3RlcmVvZ3JhcGhpY1wiLCBcInN0ZXJlYVwiLFwiT2JsaXF1ZSBTdGVyZW9ncmFwaGljIEFsdGVybmF0aXZlXCJdO1xuXHR2YXIgc3RlcmVhID0ge1xuXHQgIGluaXQ6IGluaXQkNSxcblx0ICBmb3J3YXJkOiBmb3J3YXJkJDQsXG5cdCAgaW52ZXJzZTogaW52ZXJzZSQ0LFxuXHQgIG5hbWVzOiBuYW1lcyQ2XG5cdH07XG5cblx0ZnVuY3Rpb24gc3Nmbl8ocGhpdCwgc2lucGhpLCBlY2Nlbikge1xuXHQgIHNpbnBoaSAqPSBlY2Nlbjtcblx0ICByZXR1cm4gKE1hdGgudGFuKDAuNSAqIChIQUxGX1BJICsgcGhpdCkpICogTWF0aC5wb3coKDEgLSBzaW5waGkpIC8gKDEgKyBzaW5waGkpLCAwLjUgKiBlY2NlbikpO1xuXHR9XG5cblx0ZnVuY3Rpb24gaW5pdCQ3KCkge1xuXHQgIHRoaXMuY29zbGF0MCA9IE1hdGguY29zKHRoaXMubGF0MCk7XG5cdCAgdGhpcy5zaW5sYXQwID0gTWF0aC5zaW4odGhpcy5sYXQwKTtcblx0ICBpZiAodGhpcy5zcGhlcmUpIHtcblx0ICAgIGlmICh0aGlzLmswID09PSAxICYmICFpc05hTih0aGlzLmxhdF90cykgJiYgTWF0aC5hYnModGhpcy5jb3NsYXQwKSA8PSBFUFNMTikge1xuXHQgICAgICB0aGlzLmswID0gMC41ICogKDEgKyBzaWduKHRoaXMubGF0MCkgKiBNYXRoLnNpbih0aGlzLmxhdF90cykpO1xuXHQgICAgfVxuXHQgIH1cblx0ICBlbHNlIHtcblx0ICAgIGlmIChNYXRoLmFicyh0aGlzLmNvc2xhdDApIDw9IEVQU0xOKSB7XG5cdCAgICAgIGlmICh0aGlzLmxhdDAgPiAwKSB7XG5cdCAgICAgICAgLy9Ob3J0aCBwb2xlXG5cdCAgICAgICAgLy90cmFjZSgnc3RlcmU6bm9ydGggcG9sZScpO1xuXHQgICAgICAgIHRoaXMuY29uID0gMTtcblx0ICAgICAgfVxuXHQgICAgICBlbHNlIHtcblx0ICAgICAgICAvL1NvdXRoIHBvbGVcblx0ICAgICAgICAvL3RyYWNlKCdzdGVyZTpzb3V0aCBwb2xlJyk7XG5cdCAgICAgICAgdGhpcy5jb24gPSAtMTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgICAgdGhpcy5jb25zID0gTWF0aC5zcXJ0KE1hdGgucG93KDEgKyB0aGlzLmUsIDEgKyB0aGlzLmUpICogTWF0aC5wb3coMSAtIHRoaXMuZSwgMSAtIHRoaXMuZSkpO1xuXHQgICAgaWYgKHRoaXMuazAgPT09IDEgJiYgIWlzTmFOKHRoaXMubGF0X3RzKSAmJiBNYXRoLmFicyh0aGlzLmNvc2xhdDApIDw9IEVQU0xOKSB7XG5cdCAgICAgIHRoaXMuazAgPSAwLjUgKiB0aGlzLmNvbnMgKiBtc2Zueih0aGlzLmUsIE1hdGguc2luKHRoaXMubGF0X3RzKSwgTWF0aC5jb3ModGhpcy5sYXRfdHMpKSAvIHRzZm56KHRoaXMuZSwgdGhpcy5jb24gKiB0aGlzLmxhdF90cywgdGhpcy5jb24gKiBNYXRoLnNpbih0aGlzLmxhdF90cykpO1xuXHQgICAgfVxuXHQgICAgdGhpcy5tczEgPSBtc2Zueih0aGlzLmUsIHRoaXMuc2lubGF0MCwgdGhpcy5jb3NsYXQwKTtcblx0ICAgIHRoaXMuWDAgPSAyICogTWF0aC5hdGFuKHRoaXMuc3Nmbl8odGhpcy5sYXQwLCB0aGlzLnNpbmxhdDAsIHRoaXMuZSkpIC0gSEFMRl9QSTtcblx0ICAgIHRoaXMuY29zWDAgPSBNYXRoLmNvcyh0aGlzLlgwKTtcblx0ICAgIHRoaXMuc2luWDAgPSBNYXRoLnNpbih0aGlzLlgwKTtcblx0ICB9XG5cdH1cblxuXHQvLyBTdGVyZW9ncmFwaGljIGZvcndhcmQgZXF1YXRpb25zLS1tYXBwaW5nIGxhdCxsb25nIHRvIHgseVxuXHRmdW5jdGlvbiBmb3J3YXJkJDYocCkge1xuXHQgIHZhciBsb24gPSBwLng7XG5cdCAgdmFyIGxhdCA9IHAueTtcblx0ICB2YXIgc2lubGF0ID0gTWF0aC5zaW4obGF0KTtcblx0ICB2YXIgY29zbGF0ID0gTWF0aC5jb3MobGF0KTtcblx0ICB2YXIgQSwgWCwgc2luWCwgY29zWCwgdHMsIHJoO1xuXHQgIHZhciBkbG9uID0gYWRqdXN0X2xvbihsb24gLSB0aGlzLmxvbmcwKTtcblxuXHQgIGlmIChNYXRoLmFicyhNYXRoLmFicyhsb24gLSB0aGlzLmxvbmcwKSAtIE1hdGguUEkpIDw9IEVQU0xOICYmIE1hdGguYWJzKGxhdCArIHRoaXMubGF0MCkgPD0gRVBTTE4pIHtcblx0ICAgIC8vY2FzZSBvZiB0aGUgb3JpZ2luZSBwb2ludFxuXHQgICAgLy90cmFjZSgnc3RlcmU6dGhpcyBpcyB0aGUgb3JpZ2luIHBvaW50Jyk7XG5cdCAgICBwLnggPSBOYU47XG5cdCAgICBwLnkgPSBOYU47XG5cdCAgICByZXR1cm4gcDtcblx0ICB9XG5cdCAgaWYgKHRoaXMuc3BoZXJlKSB7XG5cdCAgICAvL3RyYWNlKCdzdGVyZTpzcGhlcmUgY2FzZScpO1xuXHQgICAgQSA9IDIgKiB0aGlzLmswIC8gKDEgKyB0aGlzLnNpbmxhdDAgKiBzaW5sYXQgKyB0aGlzLmNvc2xhdDAgKiBjb3NsYXQgKiBNYXRoLmNvcyhkbG9uKSk7XG5cdCAgICBwLnggPSB0aGlzLmEgKiBBICogY29zbGF0ICogTWF0aC5zaW4oZGxvbikgKyB0aGlzLngwO1xuXHQgICAgcC55ID0gdGhpcy5hICogQSAqICh0aGlzLmNvc2xhdDAgKiBzaW5sYXQgLSB0aGlzLnNpbmxhdDAgKiBjb3NsYXQgKiBNYXRoLmNvcyhkbG9uKSkgKyB0aGlzLnkwO1xuXHQgICAgcmV0dXJuIHA7XG5cdCAgfVxuXHQgIGVsc2Uge1xuXHQgICAgWCA9IDIgKiBNYXRoLmF0YW4odGhpcy5zc2ZuXyhsYXQsIHNpbmxhdCwgdGhpcy5lKSkgLSBIQUxGX1BJO1xuXHQgICAgY29zWCA9IE1hdGguY29zKFgpO1xuXHQgICAgc2luWCA9IE1hdGguc2luKFgpO1xuXHQgICAgaWYgKE1hdGguYWJzKHRoaXMuY29zbGF0MCkgPD0gRVBTTE4pIHtcblx0ICAgICAgdHMgPSB0c2Zueih0aGlzLmUsIGxhdCAqIHRoaXMuY29uLCB0aGlzLmNvbiAqIHNpbmxhdCk7XG5cdCAgICAgIHJoID0gMiAqIHRoaXMuYSAqIHRoaXMuazAgKiB0cyAvIHRoaXMuY29ucztcblx0ICAgICAgcC54ID0gdGhpcy54MCArIHJoICogTWF0aC5zaW4obG9uIC0gdGhpcy5sb25nMCk7XG5cdCAgICAgIHAueSA9IHRoaXMueTAgLSB0aGlzLmNvbiAqIHJoICogTWF0aC5jb3MobG9uIC0gdGhpcy5sb25nMCk7XG5cdCAgICAgIC8vdHJhY2UocC50b1N0cmluZygpKTtcblx0ICAgICAgcmV0dXJuIHA7XG5cdCAgICB9XG5cdCAgICBlbHNlIGlmIChNYXRoLmFicyh0aGlzLnNpbmxhdDApIDwgRVBTTE4pIHtcblx0ICAgICAgLy9FcVxuXHQgICAgICAvL3RyYWNlKCdzdGVyZTplcXVhdGV1cicpO1xuXHQgICAgICBBID0gMiAqIHRoaXMuYSAqIHRoaXMuazAgLyAoMSArIGNvc1ggKiBNYXRoLmNvcyhkbG9uKSk7XG5cdCAgICAgIHAueSA9IEEgKiBzaW5YO1xuXHQgICAgfVxuXHQgICAgZWxzZSB7XG5cdCAgICAgIC8vb3RoZXIgY2FzZVxuXHQgICAgICAvL3RyYWNlKCdzdGVyZTpub3JtYWwgY2FzZScpO1xuXHQgICAgICBBID0gMiAqIHRoaXMuYSAqIHRoaXMuazAgKiB0aGlzLm1zMSAvICh0aGlzLmNvc1gwICogKDEgKyB0aGlzLnNpblgwICogc2luWCArIHRoaXMuY29zWDAgKiBjb3NYICogTWF0aC5jb3MoZGxvbikpKTtcblx0ICAgICAgcC55ID0gQSAqICh0aGlzLmNvc1gwICogc2luWCAtIHRoaXMuc2luWDAgKiBjb3NYICogTWF0aC5jb3MoZGxvbikpICsgdGhpcy55MDtcblx0ICAgIH1cblx0ICAgIHAueCA9IEEgKiBjb3NYICogTWF0aC5zaW4oZGxvbikgKyB0aGlzLngwO1xuXHQgIH1cblx0ICAvL3RyYWNlKHAudG9TdHJpbmcoKSk7XG5cdCAgcmV0dXJuIHA7XG5cdH1cblxuXHQvLyogU3RlcmVvZ3JhcGhpYyBpbnZlcnNlIGVxdWF0aW9ucy0tbWFwcGluZyB4LHkgdG8gbGF0L2xvbmdcblx0ZnVuY3Rpb24gaW52ZXJzZSQ2KHApIHtcblx0ICBwLnggLT0gdGhpcy54MDtcblx0ICBwLnkgLT0gdGhpcy55MDtcblx0ICB2YXIgbG9uLCBsYXQsIHRzLCBjZSwgQ2hpO1xuXHQgIHZhciByaCA9IE1hdGguc3FydChwLnggKiBwLnggKyBwLnkgKiBwLnkpO1xuXHQgIGlmICh0aGlzLnNwaGVyZSkge1xuXHQgICAgdmFyIGMgPSAyICogTWF0aC5hdGFuKHJoIC8gKDAuNSAqIHRoaXMuYSAqIHRoaXMuazApKTtcblx0ICAgIGxvbiA9IHRoaXMubG9uZzA7XG5cdCAgICBsYXQgPSB0aGlzLmxhdDA7XG5cdCAgICBpZiAocmggPD0gRVBTTE4pIHtcblx0ICAgICAgcC54ID0gbG9uO1xuXHQgICAgICBwLnkgPSBsYXQ7XG5cdCAgICAgIHJldHVybiBwO1xuXHQgICAgfVxuXHQgICAgbGF0ID0gTWF0aC5hc2luKE1hdGguY29zKGMpICogdGhpcy5zaW5sYXQwICsgcC55ICogTWF0aC5zaW4oYykgKiB0aGlzLmNvc2xhdDAgLyByaCk7XG5cdCAgICBpZiAoTWF0aC5hYnModGhpcy5jb3NsYXQwKSA8IEVQU0xOKSB7XG5cdCAgICAgIGlmICh0aGlzLmxhdDAgPiAwKSB7XG5cdCAgICAgICAgbG9uID0gYWRqdXN0X2xvbih0aGlzLmxvbmcwICsgTWF0aC5hdGFuMihwLngsIC0gMSAqIHAueSkpO1xuXHQgICAgICB9XG5cdCAgICAgIGVsc2Uge1xuXHQgICAgICAgIGxvbiA9IGFkanVzdF9sb24odGhpcy5sb25nMCArIE1hdGguYXRhbjIocC54LCBwLnkpKTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgICAgZWxzZSB7XG5cdCAgICAgIGxvbiA9IGFkanVzdF9sb24odGhpcy5sb25nMCArIE1hdGguYXRhbjIocC54ICogTWF0aC5zaW4oYyksIHJoICogdGhpcy5jb3NsYXQwICogTWF0aC5jb3MoYykgLSBwLnkgKiB0aGlzLnNpbmxhdDAgKiBNYXRoLnNpbihjKSkpO1xuXHQgICAgfVxuXHQgICAgcC54ID0gbG9uO1xuXHQgICAgcC55ID0gbGF0O1xuXHQgICAgcmV0dXJuIHA7XG5cdCAgfVxuXHQgIGVsc2Uge1xuXHQgICAgaWYgKE1hdGguYWJzKHRoaXMuY29zbGF0MCkgPD0gRVBTTE4pIHtcblx0ICAgICAgaWYgKHJoIDw9IEVQU0xOKSB7XG5cdCAgICAgICAgbGF0ID0gdGhpcy5sYXQwO1xuXHQgICAgICAgIGxvbiA9IHRoaXMubG9uZzA7XG5cdCAgICAgICAgcC54ID0gbG9uO1xuXHQgICAgICAgIHAueSA9IGxhdDtcblx0ICAgICAgICAvL3RyYWNlKHAudG9TdHJpbmcoKSk7XG5cdCAgICAgICAgcmV0dXJuIHA7XG5cdCAgICAgIH1cblx0ICAgICAgcC54ICo9IHRoaXMuY29uO1xuXHQgICAgICBwLnkgKj0gdGhpcy5jb247XG5cdCAgICAgIHRzID0gcmggKiB0aGlzLmNvbnMgLyAoMiAqIHRoaXMuYSAqIHRoaXMuazApO1xuXHQgICAgICBsYXQgPSB0aGlzLmNvbiAqIHBoaTJ6KHRoaXMuZSwgdHMpO1xuXHQgICAgICBsb24gPSB0aGlzLmNvbiAqIGFkanVzdF9sb24odGhpcy5jb24gKiB0aGlzLmxvbmcwICsgTWF0aC5hdGFuMihwLngsIC0gMSAqIHAueSkpO1xuXHQgICAgfVxuXHQgICAgZWxzZSB7XG5cdCAgICAgIGNlID0gMiAqIE1hdGguYXRhbihyaCAqIHRoaXMuY29zWDAgLyAoMiAqIHRoaXMuYSAqIHRoaXMuazAgKiB0aGlzLm1zMSkpO1xuXHQgICAgICBsb24gPSB0aGlzLmxvbmcwO1xuXHQgICAgICBpZiAocmggPD0gRVBTTE4pIHtcblx0ICAgICAgICBDaGkgPSB0aGlzLlgwO1xuXHQgICAgICB9XG5cdCAgICAgIGVsc2Uge1xuXHQgICAgICAgIENoaSA9IE1hdGguYXNpbihNYXRoLmNvcyhjZSkgKiB0aGlzLnNpblgwICsgcC55ICogTWF0aC5zaW4oY2UpICogdGhpcy5jb3NYMCAvIHJoKTtcblx0ICAgICAgICBsb24gPSBhZGp1c3RfbG9uKHRoaXMubG9uZzAgKyBNYXRoLmF0YW4yKHAueCAqIE1hdGguc2luKGNlKSwgcmggKiB0aGlzLmNvc1gwICogTWF0aC5jb3MoY2UpIC0gcC55ICogdGhpcy5zaW5YMCAqIE1hdGguc2luKGNlKSkpO1xuXHQgICAgICB9XG5cdCAgICAgIGxhdCA9IC0xICogcGhpMnoodGhpcy5lLCBNYXRoLnRhbigwLjUgKiAoSEFMRl9QSSArIENoaSkpKTtcblx0ICAgIH1cblx0ICB9XG5cdCAgcC54ID0gbG9uO1xuXHQgIHAueSA9IGxhdDtcblxuXHQgIC8vdHJhY2UocC50b1N0cmluZygpKTtcblx0ICByZXR1cm4gcDtcblxuXHR9XG5cblx0dmFyIG5hbWVzJDggPSBbXCJzdGVyZVwiLCBcIlN0ZXJlb2dyYXBoaWNfU291dGhfUG9sZVwiLCBcIlBvbGFyIFN0ZXJlb2dyYXBoaWMgKHZhcmlhbnQgQilcIl07XG5cdHZhciBzdGVyZSA9IHtcblx0ICBpbml0OiBpbml0JDcsXG5cdCAgZm9yd2FyZDogZm9yd2FyZCQ2LFxuXHQgIGludmVyc2U6IGludmVyc2UkNixcblx0ICBuYW1lczogbmFtZXMkOCxcblx0ICBzc2ZuXzogc3Nmbl9cblx0fTtcblxuXHQvKlxuXHQgIHJlZmVyZW5jZXM6XG5cdCAgICBGb3JtdWxlcyBldCBjb25zdGFudGVzIHBvdXIgbGUgQ2FsY3VsIHBvdXIgbGFcblx0ICAgIHByb2plY3Rpb24gY3lsaW5kcmlxdWUgY29uZm9ybWUgw6AgYXhlIG9ibGlxdWUgZXQgcG91ciBsYSB0cmFuc2Zvcm1hdGlvbiBlbnRyZVxuXHQgICAgZGVzIHN5c3TDqG1lcyBkZSByw6lmw6lyZW5jZS5cblx0ICAgIGh0dHA6Ly93d3cuc3dpc3N0b3BvLmFkbWluLmNoL2ludGVybmV0L3N3aXNzdG9wby9mci9ob21lL3RvcGljcy9zdXJ2ZXkvc3lzL3JlZnN5cy9zd2l0emVybGFuZC5wYXJzeXNyZWxhdGVkMS4zMTIxNi5kb3dubG9hZExpc3QuNzcwMDQuRG93bmxvYWRGaWxlLnRtcC9zd2lzc3Byb2plY3Rpb25mci5wZGZcblx0ICAqL1xuXG5cdGZ1bmN0aW9uIGluaXQkOCgpIHtcblx0ICB2YXIgcGh5MCA9IHRoaXMubGF0MDtcblx0ICB0aGlzLmxhbWJkYTAgPSB0aGlzLmxvbmcwO1xuXHQgIHZhciBzaW5QaHkwID0gTWF0aC5zaW4ocGh5MCk7XG5cdCAgdmFyIHNlbWlNYWpvckF4aXMgPSB0aGlzLmE7XG5cdCAgdmFyIGludkYgPSB0aGlzLnJmO1xuXHQgIHZhciBmbGF0dGVuaW5nID0gMSAvIGludkY7XG5cdCAgdmFyIGUyID0gMiAqIGZsYXR0ZW5pbmcgLSBNYXRoLnBvdyhmbGF0dGVuaW5nLCAyKTtcblx0ICB2YXIgZSA9IHRoaXMuZSA9IE1hdGguc3FydChlMik7XG5cdCAgdGhpcy5SID0gdGhpcy5rMCAqIHNlbWlNYWpvckF4aXMgKiBNYXRoLnNxcnQoMSAtIGUyKSAvICgxIC0gZTIgKiBNYXRoLnBvdyhzaW5QaHkwLCAyKSk7XG5cdCAgdGhpcy5hbHBoYSA9IE1hdGguc3FydCgxICsgZTIgLyAoMSAtIGUyKSAqIE1hdGgucG93KE1hdGguY29zKHBoeTApLCA0KSk7XG5cdCAgdGhpcy5iMCA9IE1hdGguYXNpbihzaW5QaHkwIC8gdGhpcy5hbHBoYSk7XG5cdCAgdmFyIGsxID0gTWF0aC5sb2coTWF0aC50YW4oTWF0aC5QSSAvIDQgKyB0aGlzLmIwIC8gMikpO1xuXHQgIHZhciBrMiA9IE1hdGgubG9nKE1hdGgudGFuKE1hdGguUEkgLyA0ICsgcGh5MCAvIDIpKTtcblx0ICB2YXIgazMgPSBNYXRoLmxvZygoMSArIGUgKiBzaW5QaHkwKSAvICgxIC0gZSAqIHNpblBoeTApKTtcblx0ICB0aGlzLksgPSBrMSAtIHRoaXMuYWxwaGEgKiBrMiArIHRoaXMuYWxwaGEgKiBlIC8gMiAqIGszO1xuXHR9XG5cblx0ZnVuY3Rpb24gZm9yd2FyZCQ3KHApIHtcblx0ICB2YXIgU2ExID0gTWF0aC5sb2coTWF0aC50YW4oTWF0aC5QSSAvIDQgLSBwLnkgLyAyKSk7XG5cdCAgdmFyIFNhMiA9IHRoaXMuZSAvIDIgKiBNYXRoLmxvZygoMSArIHRoaXMuZSAqIE1hdGguc2luKHAueSkpIC8gKDEgLSB0aGlzLmUgKiBNYXRoLnNpbihwLnkpKSk7XG5cdCAgdmFyIFMgPSAtdGhpcy5hbHBoYSAqIChTYTEgKyBTYTIpICsgdGhpcy5LO1xuXG5cdCAgLy8gc3BoZXJpYyBsYXRpdHVkZVxuXHQgIHZhciBiID0gMiAqIChNYXRoLmF0YW4oTWF0aC5leHAoUykpIC0gTWF0aC5QSSAvIDQpO1xuXG5cdCAgLy8gc3BoZXJpYyBsb25naXR1ZGVcblx0ICB2YXIgSSA9IHRoaXMuYWxwaGEgKiAocC54IC0gdGhpcy5sYW1iZGEwKTtcblxuXHQgIC8vIHBzb2V1ZG8gZXF1YXRvcmlhbCByb3RhdGlvblxuXHQgIHZhciByb3RJID0gTWF0aC5hdGFuKE1hdGguc2luKEkpIC8gKE1hdGguc2luKHRoaXMuYjApICogTWF0aC50YW4oYikgKyBNYXRoLmNvcyh0aGlzLmIwKSAqIE1hdGguY29zKEkpKSk7XG5cblx0ICB2YXIgcm90QiA9IE1hdGguYXNpbihNYXRoLmNvcyh0aGlzLmIwKSAqIE1hdGguc2luKGIpIC0gTWF0aC5zaW4odGhpcy5iMCkgKiBNYXRoLmNvcyhiKSAqIE1hdGguY29zKEkpKTtcblxuXHQgIHAueSA9IHRoaXMuUiAvIDIgKiBNYXRoLmxvZygoMSArIE1hdGguc2luKHJvdEIpKSAvICgxIC0gTWF0aC5zaW4ocm90QikpKSArIHRoaXMueTA7XG5cdCAgcC54ID0gdGhpcy5SICogcm90SSArIHRoaXMueDA7XG5cdCAgcmV0dXJuIHA7XG5cdH1cblxuXHRmdW5jdGlvbiBpbnZlcnNlJDcocCkge1xuXHQgIHZhciBZID0gcC54IC0gdGhpcy54MDtcblx0ICB2YXIgWCA9IHAueSAtIHRoaXMueTA7XG5cblx0ICB2YXIgcm90SSA9IFkgLyB0aGlzLlI7XG5cdCAgdmFyIHJvdEIgPSAyICogKE1hdGguYXRhbihNYXRoLmV4cChYIC8gdGhpcy5SKSkgLSBNYXRoLlBJIC8gNCk7XG5cblx0ICB2YXIgYiA9IE1hdGguYXNpbihNYXRoLmNvcyh0aGlzLmIwKSAqIE1hdGguc2luKHJvdEIpICsgTWF0aC5zaW4odGhpcy5iMCkgKiBNYXRoLmNvcyhyb3RCKSAqIE1hdGguY29zKHJvdEkpKTtcblx0ICB2YXIgSSA9IE1hdGguYXRhbihNYXRoLnNpbihyb3RJKSAvIChNYXRoLmNvcyh0aGlzLmIwKSAqIE1hdGguY29zKHJvdEkpIC0gTWF0aC5zaW4odGhpcy5iMCkgKiBNYXRoLnRhbihyb3RCKSkpO1xuXG5cdCAgdmFyIGxhbWJkYSA9IHRoaXMubGFtYmRhMCArIEkgLyB0aGlzLmFscGhhO1xuXG5cdCAgdmFyIFMgPSAwO1xuXHQgIHZhciBwaHkgPSBiO1xuXHQgIHZhciBwcmV2UGh5ID0gLTEwMDA7XG5cdCAgdmFyIGl0ZXJhdGlvbiA9IDA7XG5cdCAgd2hpbGUgKE1hdGguYWJzKHBoeSAtIHByZXZQaHkpID4gMC4wMDAwMDAxKSB7XG5cdCAgICBpZiAoKytpdGVyYXRpb24gPiAyMCkge1xuXHQgICAgICAvLy4uLnJlcG9ydEVycm9yKFwib21lcmNGd2RJbmZpbml0eVwiKTtcblx0ICAgICAgcmV0dXJuO1xuXHQgICAgfVxuXHQgICAgLy9TID0gTWF0aC5sb2coTWF0aC50YW4oTWF0aC5QSSAvIDQgKyBwaHkgLyAyKSk7XG5cdCAgICBTID0gMSAvIHRoaXMuYWxwaGEgKiAoTWF0aC5sb2coTWF0aC50YW4oTWF0aC5QSSAvIDQgKyBiIC8gMikpIC0gdGhpcy5LKSArIHRoaXMuZSAqIE1hdGgubG9nKE1hdGgudGFuKE1hdGguUEkgLyA0ICsgTWF0aC5hc2luKHRoaXMuZSAqIE1hdGguc2luKHBoeSkpIC8gMikpO1xuXHQgICAgcHJldlBoeSA9IHBoeTtcblx0ICAgIHBoeSA9IDIgKiBNYXRoLmF0YW4oTWF0aC5leHAoUykpIC0gTWF0aC5QSSAvIDI7XG5cdCAgfVxuXG5cdCAgcC54ID0gbGFtYmRhO1xuXHQgIHAueSA9IHBoeTtcblx0ICByZXR1cm4gcDtcblx0fVxuXG5cdHZhciBuYW1lcyQ5ID0gW1wic29tZXJjXCJdO1xuXHR2YXIgc29tZXJjID0ge1xuXHQgIGluaXQ6IGluaXQkOCxcblx0ICBmb3J3YXJkOiBmb3J3YXJkJDcsXG5cdCAgaW52ZXJzZTogaW52ZXJzZSQ3LFxuXHQgIG5hbWVzOiBuYW1lcyQ5XG5cdH07XG5cblx0LyogSW5pdGlhbGl6ZSB0aGUgT2JsaXF1ZSBNZXJjYXRvciAgcHJvamVjdGlvblxuXHQgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblx0ZnVuY3Rpb24gaW5pdCQ5KCkge1xuXHQgIHRoaXMubm9fb2ZmID0gdGhpcy5ub19vZmYgfHwgZmFsc2U7XG5cdCAgdGhpcy5ub19yb3QgPSB0aGlzLm5vX3JvdCB8fCBmYWxzZTtcblxuXHQgIGlmIChpc05hTih0aGlzLmswKSkge1xuXHQgICAgdGhpcy5rMCA9IDE7XG5cdCAgfVxuXHQgIHZhciBzaW5sYXQgPSBNYXRoLnNpbih0aGlzLmxhdDApO1xuXHQgIHZhciBjb3NsYXQgPSBNYXRoLmNvcyh0aGlzLmxhdDApO1xuXHQgIHZhciBjb24gPSB0aGlzLmUgKiBzaW5sYXQ7XG5cblx0ICB0aGlzLmJsID0gTWF0aC5zcXJ0KDEgKyB0aGlzLmVzIC8gKDEgLSB0aGlzLmVzKSAqIE1hdGgucG93KGNvc2xhdCwgNCkpO1xuXHQgIHRoaXMuYWwgPSB0aGlzLmEgKiB0aGlzLmJsICogdGhpcy5rMCAqIE1hdGguc3FydCgxIC0gdGhpcy5lcykgLyAoMSAtIGNvbiAqIGNvbik7XG5cdCAgdmFyIHQwID0gdHNmbnoodGhpcy5lLCB0aGlzLmxhdDAsIHNpbmxhdCk7XG5cdCAgdmFyIGRsID0gdGhpcy5ibCAvIGNvc2xhdCAqIE1hdGguc3FydCgoMSAtIHRoaXMuZXMpIC8gKDEgLSBjb24gKiBjb24pKTtcblx0ICBpZiAoZGwgKiBkbCA8IDEpIHtcblx0ICAgIGRsID0gMTtcblx0ICB9XG5cdCAgdmFyIGZsO1xuXHQgIHZhciBnbDtcblx0ICBpZiAoIWlzTmFOKHRoaXMubG9uZ2MpKSB7XG5cdCAgICAvL0NlbnRyYWwgcG9pbnQgYW5kIGF6aW11dGggbWV0aG9kXG5cblx0ICAgIGlmICh0aGlzLmxhdDAgPj0gMCkge1xuXHQgICAgICBmbCA9IGRsICsgTWF0aC5zcXJ0KGRsICogZGwgLSAxKTtcblx0ICAgIH1cblx0ICAgIGVsc2Uge1xuXHQgICAgICBmbCA9IGRsIC0gTWF0aC5zcXJ0KGRsICogZGwgLSAxKTtcblx0ICAgIH1cblx0ICAgIHRoaXMuZWwgPSBmbCAqIE1hdGgucG93KHQwLCB0aGlzLmJsKTtcblx0ICAgIGdsID0gMC41ICogKGZsIC0gMSAvIGZsKTtcblx0ICAgIHRoaXMuZ2FtbWEwID0gTWF0aC5hc2luKE1hdGguc2luKHRoaXMuYWxwaGEpIC8gZGwpO1xuXHQgICAgdGhpcy5sb25nMCA9IHRoaXMubG9uZ2MgLSBNYXRoLmFzaW4oZ2wgKiBNYXRoLnRhbih0aGlzLmdhbW1hMCkpIC8gdGhpcy5ibDtcblxuXHQgIH1cblx0ICBlbHNlIHtcblx0ICAgIC8vMiBwb2ludHMgbWV0aG9kXG5cdCAgICB2YXIgdDEgPSB0c2Zueih0aGlzLmUsIHRoaXMubGF0MSwgTWF0aC5zaW4odGhpcy5sYXQxKSk7XG5cdCAgICB2YXIgdDIgPSB0c2Zueih0aGlzLmUsIHRoaXMubGF0MiwgTWF0aC5zaW4odGhpcy5sYXQyKSk7XG5cdCAgICBpZiAodGhpcy5sYXQwID49IDApIHtcblx0ICAgICAgdGhpcy5lbCA9IChkbCArIE1hdGguc3FydChkbCAqIGRsIC0gMSkpICogTWF0aC5wb3codDAsIHRoaXMuYmwpO1xuXHQgICAgfVxuXHQgICAgZWxzZSB7XG5cdCAgICAgIHRoaXMuZWwgPSAoZGwgLSBNYXRoLnNxcnQoZGwgKiBkbCAtIDEpKSAqIE1hdGgucG93KHQwLCB0aGlzLmJsKTtcblx0ICAgIH1cblx0ICAgIHZhciBobCA9IE1hdGgucG93KHQxLCB0aGlzLmJsKTtcblx0ICAgIHZhciBsbCA9IE1hdGgucG93KHQyLCB0aGlzLmJsKTtcblx0ICAgIGZsID0gdGhpcy5lbCAvIGhsO1xuXHQgICAgZ2wgPSAwLjUgKiAoZmwgLSAxIC8gZmwpO1xuXHQgICAgdmFyIGpsID0gKHRoaXMuZWwgKiB0aGlzLmVsIC0gbGwgKiBobCkgLyAodGhpcy5lbCAqIHRoaXMuZWwgKyBsbCAqIGhsKTtcblx0ICAgIHZhciBwbCA9IChsbCAtIGhsKSAvIChsbCArIGhsKTtcblx0ICAgIHZhciBkbG9uMTIgPSBhZGp1c3RfbG9uKHRoaXMubG9uZzEgLSB0aGlzLmxvbmcyKTtcblx0ICAgIHRoaXMubG9uZzAgPSAwLjUgKiAodGhpcy5sb25nMSArIHRoaXMubG9uZzIpIC0gTWF0aC5hdGFuKGpsICogTWF0aC50YW4oMC41ICogdGhpcy5ibCAqIChkbG9uMTIpKSAvIHBsKSAvIHRoaXMuYmw7XG5cdCAgICB0aGlzLmxvbmcwID0gYWRqdXN0X2xvbih0aGlzLmxvbmcwKTtcblx0ICAgIHZhciBkbG9uMTAgPSBhZGp1c3RfbG9uKHRoaXMubG9uZzEgLSB0aGlzLmxvbmcwKTtcblx0ICAgIHRoaXMuZ2FtbWEwID0gTWF0aC5hdGFuKE1hdGguc2luKHRoaXMuYmwgKiAoZGxvbjEwKSkgLyBnbCk7XG5cdCAgICB0aGlzLmFscGhhID0gTWF0aC5hc2luKGRsICogTWF0aC5zaW4odGhpcy5nYW1tYTApKTtcblx0ICB9XG5cblx0ICBpZiAodGhpcy5ub19vZmYpIHtcblx0ICAgIHRoaXMudWMgPSAwO1xuXHQgIH1cblx0ICBlbHNlIHtcblx0ICAgIGlmICh0aGlzLmxhdDAgPj0gMCkge1xuXHQgICAgICB0aGlzLnVjID0gdGhpcy5hbCAvIHRoaXMuYmwgKiBNYXRoLmF0YW4yKE1hdGguc3FydChkbCAqIGRsIC0gMSksIE1hdGguY29zKHRoaXMuYWxwaGEpKTtcblx0ICAgIH1cblx0ICAgIGVsc2Uge1xuXHQgICAgICB0aGlzLnVjID0gLTEgKiB0aGlzLmFsIC8gdGhpcy5ibCAqIE1hdGguYXRhbjIoTWF0aC5zcXJ0KGRsICogZGwgLSAxKSwgTWF0aC5jb3ModGhpcy5hbHBoYSkpO1xuXHQgICAgfVxuXHQgIH1cblxuXHR9XG5cblx0LyogT2JsaXF1ZSBNZXJjYXRvciBmb3J3YXJkIGVxdWF0aW9ucy0tbWFwcGluZyBsYXQsbG9uZyB0byB4LHlcblx0ICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXHRmdW5jdGlvbiBmb3J3YXJkJDgocCkge1xuXHQgIHZhciBsb24gPSBwLng7XG5cdCAgdmFyIGxhdCA9IHAueTtcblx0ICB2YXIgZGxvbiA9IGFkanVzdF9sb24obG9uIC0gdGhpcy5sb25nMCk7XG5cdCAgdmFyIHVzLCB2cztcblx0ICB2YXIgY29uO1xuXHQgIGlmIChNYXRoLmFicyhNYXRoLmFicyhsYXQpIC0gSEFMRl9QSSkgPD0gRVBTTE4pIHtcblx0ICAgIGlmIChsYXQgPiAwKSB7XG5cdCAgICAgIGNvbiA9IC0xO1xuXHQgICAgfVxuXHQgICAgZWxzZSB7XG5cdCAgICAgIGNvbiA9IDE7XG5cdCAgICB9XG5cdCAgICB2cyA9IHRoaXMuYWwgLyB0aGlzLmJsICogTWF0aC5sb2coTWF0aC50YW4oRk9SVFBJICsgY29uICogdGhpcy5nYW1tYTAgKiAwLjUpKTtcblx0ICAgIHVzID0gLTEgKiBjb24gKiBIQUxGX1BJICogdGhpcy5hbCAvIHRoaXMuYmw7XG5cdCAgfVxuXHQgIGVsc2Uge1xuXHQgICAgdmFyIHQgPSB0c2Zueih0aGlzLmUsIGxhdCwgTWF0aC5zaW4obGF0KSk7XG5cdCAgICB2YXIgcWwgPSB0aGlzLmVsIC8gTWF0aC5wb3codCwgdGhpcy5ibCk7XG5cdCAgICB2YXIgc2wgPSAwLjUgKiAocWwgLSAxIC8gcWwpO1xuXHQgICAgdmFyIHRsID0gMC41ICogKHFsICsgMSAvIHFsKTtcblx0ICAgIHZhciB2bCA9IE1hdGguc2luKHRoaXMuYmwgKiAoZGxvbikpO1xuXHQgICAgdmFyIHVsID0gKHNsICogTWF0aC5zaW4odGhpcy5nYW1tYTApIC0gdmwgKiBNYXRoLmNvcyh0aGlzLmdhbW1hMCkpIC8gdGw7XG5cdCAgICBpZiAoTWF0aC5hYnMoTWF0aC5hYnModWwpIC0gMSkgPD0gRVBTTE4pIHtcblx0ICAgICAgdnMgPSBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFk7XG5cdCAgICB9XG5cdCAgICBlbHNlIHtcblx0ICAgICAgdnMgPSAwLjUgKiB0aGlzLmFsICogTWF0aC5sb2coKDEgLSB1bCkgLyAoMSArIHVsKSkgLyB0aGlzLmJsO1xuXHQgICAgfVxuXHQgICAgaWYgKE1hdGguYWJzKE1hdGguY29zKHRoaXMuYmwgKiAoZGxvbikpKSA8PSBFUFNMTikge1xuXHQgICAgICB1cyA9IHRoaXMuYWwgKiB0aGlzLmJsICogKGRsb24pO1xuXHQgICAgfVxuXHQgICAgZWxzZSB7XG5cdCAgICAgIHVzID0gdGhpcy5hbCAqIE1hdGguYXRhbjIoc2wgKiBNYXRoLmNvcyh0aGlzLmdhbW1hMCkgKyB2bCAqIE1hdGguc2luKHRoaXMuZ2FtbWEwKSwgTWF0aC5jb3ModGhpcy5ibCAqIGRsb24pKSAvIHRoaXMuYmw7XG5cdCAgICB9XG5cdCAgfVxuXG5cdCAgaWYgKHRoaXMubm9fcm90KSB7XG5cdCAgICBwLnggPSB0aGlzLngwICsgdXM7XG5cdCAgICBwLnkgPSB0aGlzLnkwICsgdnM7XG5cdCAgfVxuXHQgIGVsc2Uge1xuXG5cdCAgICB1cyAtPSB0aGlzLnVjO1xuXHQgICAgcC54ID0gdGhpcy54MCArIHZzICogTWF0aC5jb3ModGhpcy5hbHBoYSkgKyB1cyAqIE1hdGguc2luKHRoaXMuYWxwaGEpO1xuXHQgICAgcC55ID0gdGhpcy55MCArIHVzICogTWF0aC5jb3ModGhpcy5hbHBoYSkgLSB2cyAqIE1hdGguc2luKHRoaXMuYWxwaGEpO1xuXHQgIH1cblx0ICByZXR1cm4gcDtcblx0fVxuXG5cdGZ1bmN0aW9uIGludmVyc2UkOChwKSB7XG5cdCAgdmFyIHVzLCB2cztcblx0ICBpZiAodGhpcy5ub19yb3QpIHtcblx0ICAgIHZzID0gcC55IC0gdGhpcy55MDtcblx0ICAgIHVzID0gcC54IC0gdGhpcy54MDtcblx0ICB9XG5cdCAgZWxzZSB7XG5cdCAgICB2cyA9IChwLnggLSB0aGlzLngwKSAqIE1hdGguY29zKHRoaXMuYWxwaGEpIC0gKHAueSAtIHRoaXMueTApICogTWF0aC5zaW4odGhpcy5hbHBoYSk7XG5cdCAgICB1cyA9IChwLnkgLSB0aGlzLnkwKSAqIE1hdGguY29zKHRoaXMuYWxwaGEpICsgKHAueCAtIHRoaXMueDApICogTWF0aC5zaW4odGhpcy5hbHBoYSk7XG5cdCAgICB1cyArPSB0aGlzLnVjO1xuXHQgIH1cblx0ICB2YXIgcXAgPSBNYXRoLmV4cCgtMSAqIHRoaXMuYmwgKiB2cyAvIHRoaXMuYWwpO1xuXHQgIHZhciBzcCA9IDAuNSAqIChxcCAtIDEgLyBxcCk7XG5cdCAgdmFyIHRwID0gMC41ICogKHFwICsgMSAvIHFwKTtcblx0ICB2YXIgdnAgPSBNYXRoLnNpbih0aGlzLmJsICogdXMgLyB0aGlzLmFsKTtcblx0ICB2YXIgdXAgPSAodnAgKiBNYXRoLmNvcyh0aGlzLmdhbW1hMCkgKyBzcCAqIE1hdGguc2luKHRoaXMuZ2FtbWEwKSkgLyB0cDtcblx0ICB2YXIgdHMgPSBNYXRoLnBvdyh0aGlzLmVsIC8gTWF0aC5zcXJ0KCgxICsgdXApIC8gKDEgLSB1cCkpLCAxIC8gdGhpcy5ibCk7XG5cdCAgaWYgKE1hdGguYWJzKHVwIC0gMSkgPCBFUFNMTikge1xuXHQgICAgcC54ID0gdGhpcy5sb25nMDtcblx0ICAgIHAueSA9IEhBTEZfUEk7XG5cdCAgfVxuXHQgIGVsc2UgaWYgKE1hdGguYWJzKHVwICsgMSkgPCBFUFNMTikge1xuXHQgICAgcC54ID0gdGhpcy5sb25nMDtcblx0ICAgIHAueSA9IC0xICogSEFMRl9QSTtcblx0ICB9XG5cdCAgZWxzZSB7XG5cdCAgICBwLnkgPSBwaGkyeih0aGlzLmUsIHRzKTtcblx0ICAgIHAueCA9IGFkanVzdF9sb24odGhpcy5sb25nMCAtIE1hdGguYXRhbjIoc3AgKiBNYXRoLmNvcyh0aGlzLmdhbW1hMCkgLSB2cCAqIE1hdGguc2luKHRoaXMuZ2FtbWEwKSwgTWF0aC5jb3ModGhpcy5ibCAqIHVzIC8gdGhpcy5hbCkpIC8gdGhpcy5ibCk7XG5cdCAgfVxuXHQgIHJldHVybiBwO1xuXHR9XG5cblx0dmFyIG5hbWVzJDEwID0gW1wiSG90aW5lX09ibGlxdWVfTWVyY2F0b3JcIiwgXCJIb3RpbmUgT2JsaXF1ZSBNZXJjYXRvclwiLCBcIkhvdGluZV9PYmxpcXVlX01lcmNhdG9yX0F6aW11dGhfTmF0dXJhbF9PcmlnaW5cIiwgXCJIb3RpbmVfT2JsaXF1ZV9NZXJjYXRvcl9BemltdXRoX0NlbnRlclwiLCBcIm9tZXJjXCJdO1xuXHR2YXIgb21lcmMgPSB7XG5cdCAgaW5pdDogaW5pdCQ5LFxuXHQgIGZvcndhcmQ6IGZvcndhcmQkOCxcblx0ICBpbnZlcnNlOiBpbnZlcnNlJDgsXG5cdCAgbmFtZXM6IG5hbWVzJDEwXG5cdH07XG5cblx0ZnVuY3Rpb24gaW5pdCQxMCgpIHtcblxuXHQgIC8vIGFycmF5IG9mOiAgcl9tYWoscl9taW4sbGF0MSxsYXQyLGNfbG9uLGNfbGF0LGZhbHNlX2Vhc3QsZmFsc2Vfbm9ydGhcblx0ICAvL2RvdWJsZSBjX2xhdDsgICAgICAgICAgICAgICAgICAgLyogY2VudGVyIGxhdGl0dWRlICAgICAgICAgICAgICAgICAgICAgICovXG5cdCAgLy9kb3VibGUgY19sb247ICAgICAgICAgICAgICAgICAgIC8qIGNlbnRlciBsb25naXR1ZGUgICAgICAgICAgICAgICAgICAgICAqL1xuXHQgIC8vZG91YmxlIGxhdDE7ICAgICAgICAgICAgICAgICAgICAvKiBmaXJzdCBzdGFuZGFyZCBwYXJhbGxlbCAgICAgICAgICAgICAgKi9cblx0ICAvL2RvdWJsZSBsYXQyOyAgICAgICAgICAgICAgICAgICAgLyogc2Vjb25kIHN0YW5kYXJkIHBhcmFsbGVsICAgICAgICAgICAgICovXG5cdCAgLy9kb3VibGUgcl9tYWo7ICAgICAgICAgICAgICAgICAgIC8qIG1ham9yIGF4aXMgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuXHQgIC8vZG91YmxlIHJfbWluOyAgICAgICAgICAgICAgICAgICAvKiBtaW5vciBheGlzICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cblx0ICAvL2RvdWJsZSBmYWxzZV9lYXN0OyAgICAgICAgICAgICAgLyogeCBvZmZzZXQgaW4gbWV0ZXJzICAgICAgICAgICAgICAgICAgICovXG5cdCAgLy9kb3VibGUgZmFsc2Vfbm9ydGg7ICAgICAgICAgICAgIC8qIHkgb2Zmc2V0IGluIG1ldGVycyAgICAgICAgICAgICAgICAgICAqL1xuXG5cdCAgaWYgKCF0aGlzLmxhdDIpIHtcblx0ICAgIHRoaXMubGF0MiA9IHRoaXMubGF0MTtcblx0ICB9IC8vaWYgbGF0MiBpcyBub3QgZGVmaW5lZFxuXHQgIGlmICghdGhpcy5rMCkge1xuXHQgICAgdGhpcy5rMCA9IDE7XG5cdCAgfVxuXHQgIHRoaXMueDAgPSB0aGlzLngwIHx8IDA7XG5cdCAgdGhpcy55MCA9IHRoaXMueTAgfHwgMDtcblx0ICAvLyBTdGFuZGFyZCBQYXJhbGxlbHMgY2Fubm90IGJlIGVxdWFsIGFuZCBvbiBvcHBvc2l0ZSBzaWRlcyBvZiB0aGUgZXF1YXRvclxuXHQgIGlmIChNYXRoLmFicyh0aGlzLmxhdDEgKyB0aGlzLmxhdDIpIDwgRVBTTE4pIHtcblx0ICAgIHJldHVybjtcblx0ICB9XG5cblx0ICB2YXIgdGVtcCA9IHRoaXMuYiAvIHRoaXMuYTtcblx0ICB0aGlzLmUgPSBNYXRoLnNxcnQoMSAtIHRlbXAgKiB0ZW1wKTtcblxuXHQgIHZhciBzaW4xID0gTWF0aC5zaW4odGhpcy5sYXQxKTtcblx0ICB2YXIgY29zMSA9IE1hdGguY29zKHRoaXMubGF0MSk7XG5cdCAgdmFyIG1zMSA9IG1zZm56KHRoaXMuZSwgc2luMSwgY29zMSk7XG5cdCAgdmFyIHRzMSA9IHRzZm56KHRoaXMuZSwgdGhpcy5sYXQxLCBzaW4xKTtcblxuXHQgIHZhciBzaW4yID0gTWF0aC5zaW4odGhpcy5sYXQyKTtcblx0ICB2YXIgY29zMiA9IE1hdGguY29zKHRoaXMubGF0Mik7XG5cdCAgdmFyIG1zMiA9IG1zZm56KHRoaXMuZSwgc2luMiwgY29zMik7XG5cdCAgdmFyIHRzMiA9IHRzZm56KHRoaXMuZSwgdGhpcy5sYXQyLCBzaW4yKTtcblxuXHQgIHZhciB0czAgPSB0c2Zueih0aGlzLmUsIHRoaXMubGF0MCwgTWF0aC5zaW4odGhpcy5sYXQwKSk7XG5cblx0ICBpZiAoTWF0aC5hYnModGhpcy5sYXQxIC0gdGhpcy5sYXQyKSA+IEVQU0xOKSB7XG5cdCAgICB0aGlzLm5zID0gTWF0aC5sb2cobXMxIC8gbXMyKSAvIE1hdGgubG9nKHRzMSAvIHRzMik7XG5cdCAgfVxuXHQgIGVsc2Uge1xuXHQgICAgdGhpcy5ucyA9IHNpbjE7XG5cdCAgfVxuXHQgIGlmIChpc05hTih0aGlzLm5zKSkge1xuXHQgICAgdGhpcy5ucyA9IHNpbjE7XG5cdCAgfVxuXHQgIHRoaXMuZjAgPSBtczEgLyAodGhpcy5ucyAqIE1hdGgucG93KHRzMSwgdGhpcy5ucykpO1xuXHQgIHRoaXMucmggPSB0aGlzLmEgKiB0aGlzLmYwICogTWF0aC5wb3codHMwLCB0aGlzLm5zKTtcblx0ICBpZiAoIXRoaXMudGl0bGUpIHtcblx0ICAgIHRoaXMudGl0bGUgPSBcIkxhbWJlcnQgQ29uZm9ybWFsIENvbmljXCI7XG5cdCAgfVxuXHR9XG5cblx0Ly8gTGFtYmVydCBDb25mb3JtYWwgY29uaWMgZm9yd2FyZCBlcXVhdGlvbnMtLW1hcHBpbmcgbGF0LGxvbmcgdG8geCx5XG5cdC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cdGZ1bmN0aW9uIGZvcndhcmQkOShwKSB7XG5cblx0ICB2YXIgbG9uID0gcC54O1xuXHQgIHZhciBsYXQgPSBwLnk7XG5cblx0ICAvLyBzaW5ndWxhciBjYXNlcyA6XG5cdCAgaWYgKE1hdGguYWJzKDIgKiBNYXRoLmFicyhsYXQpIC0gTWF0aC5QSSkgPD0gRVBTTE4pIHtcblx0ICAgIGxhdCA9IHNpZ24obGF0KSAqIChIQUxGX1BJIC0gMiAqIEVQU0xOKTtcblx0ICB9XG5cblx0ICB2YXIgY29uID0gTWF0aC5hYnMoTWF0aC5hYnMobGF0KSAtIEhBTEZfUEkpO1xuXHQgIHZhciB0cywgcmgxO1xuXHQgIGlmIChjb24gPiBFUFNMTikge1xuXHQgICAgdHMgPSB0c2Zueih0aGlzLmUsIGxhdCwgTWF0aC5zaW4obGF0KSk7XG5cdCAgICByaDEgPSB0aGlzLmEgKiB0aGlzLmYwICogTWF0aC5wb3codHMsIHRoaXMubnMpO1xuXHQgIH1cblx0ICBlbHNlIHtcblx0ICAgIGNvbiA9IGxhdCAqIHRoaXMubnM7XG5cdCAgICBpZiAoY29uIDw9IDApIHtcblx0ICAgICAgcmV0dXJuIG51bGw7XG5cdCAgICB9XG5cdCAgICByaDEgPSAwO1xuXHQgIH1cblx0ICB2YXIgdGhldGEgPSB0aGlzLm5zICogYWRqdXN0X2xvbihsb24gLSB0aGlzLmxvbmcwKTtcblx0ICBwLnggPSB0aGlzLmswICogKHJoMSAqIE1hdGguc2luKHRoZXRhKSkgKyB0aGlzLngwO1xuXHQgIHAueSA9IHRoaXMuazAgKiAodGhpcy5yaCAtIHJoMSAqIE1hdGguY29zKHRoZXRhKSkgKyB0aGlzLnkwO1xuXG5cdCAgcmV0dXJuIHA7XG5cdH1cblxuXHQvLyBMYW1iZXJ0IENvbmZvcm1hbCBDb25pYyBpbnZlcnNlIGVxdWF0aW9ucy0tbWFwcGluZyB4LHkgdG8gbGF0L2xvbmdcblx0Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblx0ZnVuY3Rpb24gaW52ZXJzZSQ5KHApIHtcblxuXHQgIHZhciByaDEsIGNvbiwgdHM7XG5cdCAgdmFyIGxhdCwgbG9uO1xuXHQgIHZhciB4ID0gKHAueCAtIHRoaXMueDApIC8gdGhpcy5rMDtcblx0ICB2YXIgeSA9ICh0aGlzLnJoIC0gKHAueSAtIHRoaXMueTApIC8gdGhpcy5rMCk7XG5cdCAgaWYgKHRoaXMubnMgPiAwKSB7XG5cdCAgICByaDEgPSBNYXRoLnNxcnQoeCAqIHggKyB5ICogeSk7XG5cdCAgICBjb24gPSAxO1xuXHQgIH1cblx0ICBlbHNlIHtcblx0ICAgIHJoMSA9IC1NYXRoLnNxcnQoeCAqIHggKyB5ICogeSk7XG5cdCAgICBjb24gPSAtMTtcblx0ICB9XG5cdCAgdmFyIHRoZXRhID0gMDtcblx0ICBpZiAocmgxICE9PSAwKSB7XG5cdCAgICB0aGV0YSA9IE1hdGguYXRhbjIoKGNvbiAqIHgpLCAoY29uICogeSkpO1xuXHQgIH1cblx0ICBpZiAoKHJoMSAhPT0gMCkgfHwgKHRoaXMubnMgPiAwKSkge1xuXHQgICAgY29uID0gMSAvIHRoaXMubnM7XG5cdCAgICB0cyA9IE1hdGgucG93KChyaDEgLyAodGhpcy5hICogdGhpcy5mMCkpLCBjb24pO1xuXHQgICAgbGF0ID0gcGhpMnoodGhpcy5lLCB0cyk7XG5cdCAgICBpZiAobGF0ID09PSAtOTk5OSkge1xuXHQgICAgICByZXR1cm4gbnVsbDtcblx0ICAgIH1cblx0ICB9XG5cdCAgZWxzZSB7XG5cdCAgICBsYXQgPSAtSEFMRl9QSTtcblx0ICB9XG5cdCAgbG9uID0gYWRqdXN0X2xvbih0aGV0YSAvIHRoaXMubnMgKyB0aGlzLmxvbmcwKTtcblxuXHQgIHAueCA9IGxvbjtcblx0ICBwLnkgPSBsYXQ7XG5cdCAgcmV0dXJuIHA7XG5cdH1cblxuXHR2YXIgbmFtZXMkMTEgPSBbXCJMYW1iZXJ0IFRhbmdlbnRpYWwgQ29uZm9ybWFsIENvbmljIFByb2plY3Rpb25cIiwgXCJMYW1iZXJ0X0NvbmZvcm1hbF9Db25pY1wiLCBcIkxhbWJlcnRfQ29uZm9ybWFsX0NvbmljXzJTUFwiLCBcImxjY1wiXTtcblx0dmFyIGxjYyA9IHtcblx0ICBpbml0OiBpbml0JDEwLFxuXHQgIGZvcndhcmQ6IGZvcndhcmQkOSxcblx0ICBpbnZlcnNlOiBpbnZlcnNlJDksXG5cdCAgbmFtZXM6IG5hbWVzJDExXG5cdH07XG5cblx0ZnVuY3Rpb24gaW5pdCQxMSgpIHtcblx0ICB0aGlzLmEgPSA2Mzc3Mzk3LjE1NTtcblx0ICB0aGlzLmVzID0gMC4wMDY2NzQzNzIyMzA2MTQ7XG5cdCAgdGhpcy5lID0gTWF0aC5zcXJ0KHRoaXMuZXMpO1xuXHQgIGlmICghdGhpcy5sYXQwKSB7XG5cdCAgICB0aGlzLmxhdDAgPSAwLjg2MzkzNzk3OTczNzE5Mztcblx0ICB9XG5cdCAgaWYgKCF0aGlzLmxvbmcwKSB7XG5cdCAgICB0aGlzLmxvbmcwID0gMC43NDE3NjQ5MzIwOTc1OTAxIC0gMC4zMDgzNDE1MDExODU2NjU7XG5cdCAgfVxuXHQgIC8qIGlmIHNjYWxlIG5vdCBzZXQgZGVmYXVsdCB0byAwLjk5OTkgKi9cblx0ICBpZiAoIXRoaXMuazApIHtcblx0ICAgIHRoaXMuazAgPSAwLjk5OTk7XG5cdCAgfVxuXHQgIHRoaXMuczQ1ID0gMC43ODUzOTgxNjMzOTc0NDg7IC8qIDQ1ICovXG5cdCAgdGhpcy5zOTAgPSAyICogdGhpcy5zNDU7XG5cdCAgdGhpcy5maTAgPSB0aGlzLmxhdDA7XG5cdCAgdGhpcy5lMiA9IHRoaXMuZXM7XG5cdCAgdGhpcy5lID0gTWF0aC5zcXJ0KHRoaXMuZTIpO1xuXHQgIHRoaXMuYWxmYSA9IE1hdGguc3FydCgxICsgKHRoaXMuZTIgKiBNYXRoLnBvdyhNYXRoLmNvcyh0aGlzLmZpMCksIDQpKSAvICgxIC0gdGhpcy5lMikpO1xuXHQgIHRoaXMudXEgPSAxLjA0MjE2ODU2MzgwNDc0O1xuXHQgIHRoaXMudTAgPSBNYXRoLmFzaW4oTWF0aC5zaW4odGhpcy5maTApIC8gdGhpcy5hbGZhKTtcblx0ICB0aGlzLmcgPSBNYXRoLnBvdygoMSArIHRoaXMuZSAqIE1hdGguc2luKHRoaXMuZmkwKSkgLyAoMSAtIHRoaXMuZSAqIE1hdGguc2luKHRoaXMuZmkwKSksIHRoaXMuYWxmYSAqIHRoaXMuZSAvIDIpO1xuXHQgIHRoaXMuayA9IE1hdGgudGFuKHRoaXMudTAgLyAyICsgdGhpcy5zNDUpIC8gTWF0aC5wb3coTWF0aC50YW4odGhpcy5maTAgLyAyICsgdGhpcy5zNDUpLCB0aGlzLmFsZmEpICogdGhpcy5nO1xuXHQgIHRoaXMuazEgPSB0aGlzLmswO1xuXHQgIHRoaXMubjAgPSB0aGlzLmEgKiBNYXRoLnNxcnQoMSAtIHRoaXMuZTIpIC8gKDEgLSB0aGlzLmUyICogTWF0aC5wb3coTWF0aC5zaW4odGhpcy5maTApLCAyKSk7XG5cdCAgdGhpcy5zMCA9IDEuMzcwMDgzNDYyODE1NTU7XG5cdCAgdGhpcy5uID0gTWF0aC5zaW4odGhpcy5zMCk7XG5cdCAgdGhpcy5ybzAgPSB0aGlzLmsxICogdGhpcy5uMCAvIE1hdGgudGFuKHRoaXMuczApO1xuXHQgIHRoaXMuYWQgPSB0aGlzLnM5MCAtIHRoaXMudXE7XG5cdH1cblxuXHQvKiBlbGxpcHNvaWQgKi9cblx0LyogY2FsY3VsYXRlIHh5IGZyb20gbGF0L2xvbiAqL1xuXHQvKiBDb25zdGFudHMsIGlkZW50aWNhbCB0byBpbnZlcnNlIHRyYW5zZm9ybSBmdW5jdGlvbiAqL1xuXHRmdW5jdGlvbiBmb3J3YXJkJDEwKHApIHtcblx0ICB2YXIgZ2ZpLCB1LCBkZWx0YXYsIHMsIGQsIGVwcywgcm87XG5cdCAgdmFyIGxvbiA9IHAueDtcblx0ICB2YXIgbGF0ID0gcC55O1xuXHQgIHZhciBkZWx0YV9sb24gPSBhZGp1c3RfbG9uKGxvbiAtIHRoaXMubG9uZzApO1xuXHQgIC8qIFRyYW5zZm9ybWF0aW9uICovXG5cdCAgZ2ZpID0gTWF0aC5wb3coKCgxICsgdGhpcy5lICogTWF0aC5zaW4obGF0KSkgLyAoMSAtIHRoaXMuZSAqIE1hdGguc2luKGxhdCkpKSwgKHRoaXMuYWxmYSAqIHRoaXMuZSAvIDIpKTtcblx0ICB1ID0gMiAqIChNYXRoLmF0YW4odGhpcy5rICogTWF0aC5wb3coTWF0aC50YW4obGF0IC8gMiArIHRoaXMuczQ1KSwgdGhpcy5hbGZhKSAvIGdmaSkgLSB0aGlzLnM0NSk7XG5cdCAgZGVsdGF2ID0gLWRlbHRhX2xvbiAqIHRoaXMuYWxmYTtcblx0ICBzID0gTWF0aC5hc2luKE1hdGguY29zKHRoaXMuYWQpICogTWF0aC5zaW4odSkgKyBNYXRoLnNpbih0aGlzLmFkKSAqIE1hdGguY29zKHUpICogTWF0aC5jb3MoZGVsdGF2KSk7XG5cdCAgZCA9IE1hdGguYXNpbihNYXRoLmNvcyh1KSAqIE1hdGguc2luKGRlbHRhdikgLyBNYXRoLmNvcyhzKSk7XG5cdCAgZXBzID0gdGhpcy5uICogZDtcblx0ICBybyA9IHRoaXMucm8wICogTWF0aC5wb3coTWF0aC50YW4odGhpcy5zMCAvIDIgKyB0aGlzLnM0NSksIHRoaXMubikgLyBNYXRoLnBvdyhNYXRoLnRhbihzIC8gMiArIHRoaXMuczQ1KSwgdGhpcy5uKTtcblx0ICBwLnkgPSBybyAqIE1hdGguY29zKGVwcykgLyAxO1xuXHQgIHAueCA9IHJvICogTWF0aC5zaW4oZXBzKSAvIDE7XG5cblx0ICBpZiAoIXRoaXMuY3plY2gpIHtcblx0ICAgIHAueSAqPSAtMTtcblx0ICAgIHAueCAqPSAtMTtcblx0ICB9XG5cdCAgcmV0dXJuIChwKTtcblx0fVxuXG5cdC8qIGNhbGN1bGF0ZSBsYXQvbG9uIGZyb20geHkgKi9cblx0ZnVuY3Rpb24gaW52ZXJzZSQxMChwKSB7XG5cdCAgdmFyIHUsIGRlbHRhdiwgcywgZCwgZXBzLCBybywgZmkxO1xuXHQgIHZhciBvaztcblxuXHQgIC8qIFRyYW5zZm9ybWF0aW9uICovXG5cdCAgLyogcmV2ZXJ0IHksIHgqL1xuXHQgIHZhciB0bXAgPSBwLng7XG5cdCAgcC54ID0gcC55O1xuXHQgIHAueSA9IHRtcDtcblx0ICBpZiAoIXRoaXMuY3plY2gpIHtcblx0ICAgIHAueSAqPSAtMTtcblx0ICAgIHAueCAqPSAtMTtcblx0ICB9XG5cdCAgcm8gPSBNYXRoLnNxcnQocC54ICogcC54ICsgcC55ICogcC55KTtcblx0ICBlcHMgPSBNYXRoLmF0YW4yKHAueSwgcC54KTtcblx0ICBkID0gZXBzIC8gTWF0aC5zaW4odGhpcy5zMCk7XG5cdCAgcyA9IDIgKiAoTWF0aC5hdGFuKE1hdGgucG93KHRoaXMucm8wIC8gcm8sIDEgLyB0aGlzLm4pICogTWF0aC50YW4odGhpcy5zMCAvIDIgKyB0aGlzLnM0NSkpIC0gdGhpcy5zNDUpO1xuXHQgIHUgPSBNYXRoLmFzaW4oTWF0aC5jb3ModGhpcy5hZCkgKiBNYXRoLnNpbihzKSAtIE1hdGguc2luKHRoaXMuYWQpICogTWF0aC5jb3MocykgKiBNYXRoLmNvcyhkKSk7XG5cdCAgZGVsdGF2ID0gTWF0aC5hc2luKE1hdGguY29zKHMpICogTWF0aC5zaW4oZCkgLyBNYXRoLmNvcyh1KSk7XG5cdCAgcC54ID0gdGhpcy5sb25nMCAtIGRlbHRhdiAvIHRoaXMuYWxmYTtcblx0ICBmaTEgPSB1O1xuXHQgIG9rID0gMDtcblx0ICB2YXIgaXRlciA9IDA7XG5cdCAgZG8ge1xuXHQgICAgcC55ID0gMiAqIChNYXRoLmF0YW4oTWF0aC5wb3codGhpcy5rLCAtIDEgLyB0aGlzLmFsZmEpICogTWF0aC5wb3coTWF0aC50YW4odSAvIDIgKyB0aGlzLnM0NSksIDEgLyB0aGlzLmFsZmEpICogTWF0aC5wb3coKDEgKyB0aGlzLmUgKiBNYXRoLnNpbihmaTEpKSAvICgxIC0gdGhpcy5lICogTWF0aC5zaW4oZmkxKSksIHRoaXMuZSAvIDIpKSAtIHRoaXMuczQ1KTtcblx0ICAgIGlmIChNYXRoLmFicyhmaTEgLSBwLnkpIDwgMC4wMDAwMDAwMDAxKSB7XG5cdCAgICAgIG9rID0gMTtcblx0ICAgIH1cblx0ICAgIGZpMSA9IHAueTtcblx0ICAgIGl0ZXIgKz0gMTtcblx0ICB9IHdoaWxlIChvayA9PT0gMCAmJiBpdGVyIDwgMTUpO1xuXHQgIGlmIChpdGVyID49IDE1KSB7XG5cdCAgICByZXR1cm4gbnVsbDtcblx0ICB9XG5cblx0ICByZXR1cm4gKHApO1xuXHR9XG5cblx0dmFyIG5hbWVzJDEyID0gW1wiS3JvdmFrXCIsIFwia3JvdmFrXCJdO1xuXHR2YXIga3JvdmFrID0ge1xuXHQgIGluaXQ6IGluaXQkMTEsXG5cdCAgZm9yd2FyZDogZm9yd2FyZCQxMCxcblx0ICBpbnZlcnNlOiBpbnZlcnNlJDEwLFxuXHQgIG5hbWVzOiBuYW1lcyQxMlxuXHR9O1xuXG5cdHZhciBtbGZuID0gZnVuY3Rpb24oZTAsIGUxLCBlMiwgZTMsIHBoaSkge1xuXHQgIHJldHVybiAoZTAgKiBwaGkgLSBlMSAqIE1hdGguc2luKDIgKiBwaGkpICsgZTIgKiBNYXRoLnNpbig0ICogcGhpKSAtIGUzICogTWF0aC5zaW4oNiAqIHBoaSkpO1xuXHR9O1xuXG5cdHZhciBlMGZuID0gZnVuY3Rpb24oeCkge1xuXHQgIHJldHVybiAoMSAtIDAuMjUgKiB4ICogKDEgKyB4IC8gMTYgKiAoMyArIDEuMjUgKiB4KSkpO1xuXHR9O1xuXG5cdHZhciBlMWZuID0gZnVuY3Rpb24oeCkge1xuXHQgIHJldHVybiAoMC4zNzUgKiB4ICogKDEgKyAwLjI1ICogeCAqICgxICsgMC40Njg3NSAqIHgpKSk7XG5cdH07XG5cblx0dmFyIGUyZm4gPSBmdW5jdGlvbih4KSB7XG5cdCAgcmV0dXJuICgwLjA1ODU5Mzc1ICogeCAqIHggKiAoMSArIDAuNzUgKiB4KSk7XG5cdH07XG5cblx0dmFyIGUzZm4gPSBmdW5jdGlvbih4KSB7XG5cdCAgcmV0dXJuICh4ICogeCAqIHggKiAoMzUgLyAzMDcyKSk7XG5cdH07XG5cblx0dmFyIGdOID0gZnVuY3Rpb24oYSwgZSwgc2lucGhpKSB7XG5cdCAgdmFyIHRlbXAgPSBlICogc2lucGhpO1xuXHQgIHJldHVybiBhIC8gTWF0aC5zcXJ0KDEgLSB0ZW1wICogdGVtcCk7XG5cdH07XG5cblx0dmFyIGFkanVzdF9sYXQgPSBmdW5jdGlvbih4KSB7XG5cdCAgcmV0dXJuIChNYXRoLmFicyh4KSA8IEhBTEZfUEkpID8geCA6ICh4IC0gKHNpZ24oeCkgKiBNYXRoLlBJKSk7XG5cdH07XG5cblx0dmFyIGltbGZuID0gZnVuY3Rpb24obWwsIGUwLCBlMSwgZTIsIGUzKSB7XG5cdCAgdmFyIHBoaTtcblx0ICB2YXIgZHBoaTtcblxuXHQgIHBoaSA9IG1sIC8gZTA7XG5cdCAgZm9yICh2YXIgaSA9IDA7IGkgPCAxNTsgaSsrKSB7XG5cdCAgICBkcGhpID0gKG1sIC0gKGUwICogcGhpIC0gZTEgKiBNYXRoLnNpbigyICogcGhpKSArIGUyICogTWF0aC5zaW4oNCAqIHBoaSkgLSBlMyAqIE1hdGguc2luKDYgKiBwaGkpKSkgLyAoZTAgLSAyICogZTEgKiBNYXRoLmNvcygyICogcGhpKSArIDQgKiBlMiAqIE1hdGguY29zKDQgKiBwaGkpIC0gNiAqIGUzICogTWF0aC5jb3MoNiAqIHBoaSkpO1xuXHQgICAgcGhpICs9IGRwaGk7XG5cdCAgICBpZiAoTWF0aC5hYnMoZHBoaSkgPD0gMC4wMDAwMDAwMDAxKSB7XG5cdCAgICAgIHJldHVybiBwaGk7XG5cdCAgICB9XG5cdCAgfVxuXG5cdCAgLy8uLnJlcG9ydEVycm9yKFwiSU1MRk4tQ09OVjpMYXRpdHVkZSBmYWlsZWQgdG8gY29udmVyZ2UgYWZ0ZXIgMTUgaXRlcmF0aW9uc1wiKTtcblx0ICByZXR1cm4gTmFOO1xuXHR9O1xuXG5cdGZ1bmN0aW9uIGluaXQkMTIoKSB7XG5cdCAgaWYgKCF0aGlzLnNwaGVyZSkge1xuXHQgICAgdGhpcy5lMCA9IGUwZm4odGhpcy5lcyk7XG5cdCAgICB0aGlzLmUxID0gZTFmbih0aGlzLmVzKTtcblx0ICAgIHRoaXMuZTIgPSBlMmZuKHRoaXMuZXMpO1xuXHQgICAgdGhpcy5lMyA9IGUzZm4odGhpcy5lcyk7XG5cdCAgICB0aGlzLm1sMCA9IHRoaXMuYSAqIG1sZm4odGhpcy5lMCwgdGhpcy5lMSwgdGhpcy5lMiwgdGhpcy5lMywgdGhpcy5sYXQwKTtcblx0ICB9XG5cdH1cblxuXHQvKiBDYXNzaW5pIGZvcndhcmQgZXF1YXRpb25zLS1tYXBwaW5nIGxhdCxsb25nIHRvIHgseVxuXHQgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblx0ZnVuY3Rpb24gZm9yd2FyZCQxMShwKSB7XG5cblx0ICAvKiBGb3J3YXJkIGVxdWF0aW9uc1xuXHQgICAgICAtLS0tLS0tLS0tLS0tLS0tLSovXG5cdCAgdmFyIHgsIHk7XG5cdCAgdmFyIGxhbSA9IHAueDtcblx0ICB2YXIgcGhpID0gcC55O1xuXHQgIGxhbSA9IGFkanVzdF9sb24obGFtIC0gdGhpcy5sb25nMCk7XG5cblx0ICBpZiAodGhpcy5zcGhlcmUpIHtcblx0ICAgIHggPSB0aGlzLmEgKiBNYXRoLmFzaW4oTWF0aC5jb3MocGhpKSAqIE1hdGguc2luKGxhbSkpO1xuXHQgICAgeSA9IHRoaXMuYSAqIChNYXRoLmF0YW4yKE1hdGgudGFuKHBoaSksIE1hdGguY29zKGxhbSkpIC0gdGhpcy5sYXQwKTtcblx0ICB9XG5cdCAgZWxzZSB7XG5cdCAgICAvL2VsbGlwc29pZFxuXHQgICAgdmFyIHNpbnBoaSA9IE1hdGguc2luKHBoaSk7XG5cdCAgICB2YXIgY29zcGhpID0gTWF0aC5jb3MocGhpKTtcblx0ICAgIHZhciBubCA9IGdOKHRoaXMuYSwgdGhpcy5lLCBzaW5waGkpO1xuXHQgICAgdmFyIHRsID0gTWF0aC50YW4ocGhpKSAqIE1hdGgudGFuKHBoaSk7XG5cdCAgICB2YXIgYWwgPSBsYW0gKiBNYXRoLmNvcyhwaGkpO1xuXHQgICAgdmFyIGFzcSA9IGFsICogYWw7XG5cdCAgICB2YXIgY2wgPSB0aGlzLmVzICogY29zcGhpICogY29zcGhpIC8gKDEgLSB0aGlzLmVzKTtcblx0ICAgIHZhciBtbCA9IHRoaXMuYSAqIG1sZm4odGhpcy5lMCwgdGhpcy5lMSwgdGhpcy5lMiwgdGhpcy5lMywgcGhpKTtcblxuXHQgICAgeCA9IG5sICogYWwgKiAoMSAtIGFzcSAqIHRsICogKDEgLyA2IC0gKDggLSB0bCArIDggKiBjbCkgKiBhc3EgLyAxMjApKTtcblx0ICAgIHkgPSBtbCAtIHRoaXMubWwwICsgbmwgKiBzaW5waGkgLyBjb3NwaGkgKiBhc3EgKiAoMC41ICsgKDUgLSB0bCArIDYgKiBjbCkgKiBhc3EgLyAyNCk7XG5cblxuXHQgIH1cblxuXHQgIHAueCA9IHggKyB0aGlzLngwO1xuXHQgIHAueSA9IHkgKyB0aGlzLnkwO1xuXHQgIHJldHVybiBwO1xuXHR9XG5cblx0LyogSW52ZXJzZSBlcXVhdGlvbnNcblx0ICAtLS0tLS0tLS0tLS0tLS0tLSovXG5cdGZ1bmN0aW9uIGludmVyc2UkMTEocCkge1xuXHQgIHAueCAtPSB0aGlzLngwO1xuXHQgIHAueSAtPSB0aGlzLnkwO1xuXHQgIHZhciB4ID0gcC54IC8gdGhpcy5hO1xuXHQgIHZhciB5ID0gcC55IC8gdGhpcy5hO1xuXHQgIHZhciBwaGksIGxhbTtcblxuXHQgIGlmICh0aGlzLnNwaGVyZSkge1xuXHQgICAgdmFyIGRkID0geSArIHRoaXMubGF0MDtcblx0ICAgIHBoaSA9IE1hdGguYXNpbihNYXRoLnNpbihkZCkgKiBNYXRoLmNvcyh4KSk7XG5cdCAgICBsYW0gPSBNYXRoLmF0YW4yKE1hdGgudGFuKHgpLCBNYXRoLmNvcyhkZCkpO1xuXHQgIH1cblx0ICBlbHNlIHtcblx0ICAgIC8qIGVsbGlwc29pZCAqL1xuXHQgICAgdmFyIG1sMSA9IHRoaXMubWwwIC8gdGhpcy5hICsgeTtcblx0ICAgIHZhciBwaGkxID0gaW1sZm4obWwxLCB0aGlzLmUwLCB0aGlzLmUxLCB0aGlzLmUyLCB0aGlzLmUzKTtcblx0ICAgIGlmIChNYXRoLmFicyhNYXRoLmFicyhwaGkxKSAtIEhBTEZfUEkpIDw9IEVQU0xOKSB7XG5cdCAgICAgIHAueCA9IHRoaXMubG9uZzA7XG5cdCAgICAgIHAueSA9IEhBTEZfUEk7XG5cdCAgICAgIGlmICh5IDwgMCkge1xuXHQgICAgICAgIHAueSAqPSAtMTtcblx0ICAgICAgfVxuXHQgICAgICByZXR1cm4gcDtcblx0ICAgIH1cblx0ICAgIHZhciBubDEgPSBnTih0aGlzLmEsIHRoaXMuZSwgTWF0aC5zaW4ocGhpMSkpO1xuXG5cdCAgICB2YXIgcmwxID0gbmwxICogbmwxICogbmwxIC8gdGhpcy5hIC8gdGhpcy5hICogKDEgLSB0aGlzLmVzKTtcblx0ICAgIHZhciB0bDEgPSBNYXRoLnBvdyhNYXRoLnRhbihwaGkxKSwgMik7XG5cdCAgICB2YXIgZGwgPSB4ICogdGhpcy5hIC8gbmwxO1xuXHQgICAgdmFyIGRzcSA9IGRsICogZGw7XG5cdCAgICBwaGkgPSBwaGkxIC0gbmwxICogTWF0aC50YW4ocGhpMSkgLyBybDEgKiBkbCAqIGRsICogKDAuNSAtICgxICsgMyAqIHRsMSkgKiBkbCAqIGRsIC8gMjQpO1xuXHQgICAgbGFtID0gZGwgKiAoMSAtIGRzcSAqICh0bDEgLyAzICsgKDEgKyAzICogdGwxKSAqIHRsMSAqIGRzcSAvIDE1KSkgLyBNYXRoLmNvcyhwaGkxKTtcblxuXHQgIH1cblxuXHQgIHAueCA9IGFkanVzdF9sb24obGFtICsgdGhpcy5sb25nMCk7XG5cdCAgcC55ID0gYWRqdXN0X2xhdChwaGkpO1xuXHQgIHJldHVybiBwO1xuXG5cdH1cblxuXHR2YXIgbmFtZXMkMTMgPSBbXCJDYXNzaW5pXCIsIFwiQ2Fzc2luaV9Tb2xkbmVyXCIsIFwiY2Fzc1wiXTtcblx0dmFyIGNhc3MgPSB7XG5cdCAgaW5pdDogaW5pdCQxMixcblx0ICBmb3J3YXJkOiBmb3J3YXJkJDExLFxuXHQgIGludmVyc2U6IGludmVyc2UkMTEsXG5cdCAgbmFtZXM6IG5hbWVzJDEzXG5cdH07XG5cblx0dmFyIHFzZm56ID0gZnVuY3Rpb24oZWNjZW50LCBzaW5waGkpIHtcblx0ICB2YXIgY29uO1xuXHQgIGlmIChlY2NlbnQgPiAxLjBlLTcpIHtcblx0ICAgIGNvbiA9IGVjY2VudCAqIHNpbnBoaTtcblx0ICAgIHJldHVybiAoKDEgLSBlY2NlbnQgKiBlY2NlbnQpICogKHNpbnBoaSAvICgxIC0gY29uICogY29uKSAtICgwLjUgLyBlY2NlbnQpICogTWF0aC5sb2coKDEgLSBjb24pIC8gKDEgKyBjb24pKSkpO1xuXHQgIH1cblx0ICBlbHNlIHtcblx0ICAgIHJldHVybiAoMiAqIHNpbnBoaSk7XG5cdCAgfVxuXHR9O1xuXG5cdC8qXG5cdCAgcmVmZXJlbmNlXG5cdCAgICBcIk5ldyBFcXVhbC1BcmVhIE1hcCBQcm9qZWN0aW9ucyBmb3IgTm9uY2lyY3VsYXIgUmVnaW9uc1wiLCBKb2huIFAuIFNueWRlcixcblx0ICAgIFRoZSBBbWVyaWNhbiBDYXJ0b2dyYXBoZXIsIFZvbCAxNSwgTm8uIDQsIE9jdG9iZXIgMTk4OCwgcHAuIDM0MS0zNTUuXG5cdCAgKi9cblxuXHR2YXIgU19QT0xFID0gMTtcblxuXHR2YXIgTl9QT0xFID0gMjtcblx0dmFyIEVRVUlUID0gMztcblx0dmFyIE9CTElRID0gNDtcblxuXHQvKiBJbml0aWFsaXplIHRoZSBMYW1iZXJ0IEF6aW11dGhhbCBFcXVhbCBBcmVhIHByb2plY3Rpb25cblx0ICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXHRmdW5jdGlvbiBpbml0JDEzKCkge1xuXHQgIHZhciB0ID0gTWF0aC5hYnModGhpcy5sYXQwKTtcblx0ICBpZiAoTWF0aC5hYnModCAtIEhBTEZfUEkpIDwgRVBTTE4pIHtcblx0ICAgIHRoaXMubW9kZSA9IHRoaXMubGF0MCA8IDAgPyB0aGlzLlNfUE9MRSA6IHRoaXMuTl9QT0xFO1xuXHQgIH1cblx0ICBlbHNlIGlmIChNYXRoLmFicyh0KSA8IEVQU0xOKSB7XG5cdCAgICB0aGlzLm1vZGUgPSB0aGlzLkVRVUlUO1xuXHQgIH1cblx0ICBlbHNlIHtcblx0ICAgIHRoaXMubW9kZSA9IHRoaXMuT0JMSVE7XG5cdCAgfVxuXHQgIGlmICh0aGlzLmVzID4gMCkge1xuXHQgICAgdmFyIHNpbnBoaTtcblxuXHQgICAgdGhpcy5xcCA9IHFzZm56KHRoaXMuZSwgMSk7XG5cdCAgICB0aGlzLm1tZiA9IDAuNSAvICgxIC0gdGhpcy5lcyk7XG5cdCAgICB0aGlzLmFwYSA9IGF1dGhzZXQodGhpcy5lcyk7XG5cdCAgICBzd2l0Y2ggKHRoaXMubW9kZSkge1xuXHQgICAgY2FzZSB0aGlzLk5fUE9MRTpcblx0ICAgICAgdGhpcy5kZCA9IDE7XG5cdCAgICAgIGJyZWFrO1xuXHQgICAgY2FzZSB0aGlzLlNfUE9MRTpcblx0ICAgICAgdGhpcy5kZCA9IDE7XG5cdCAgICAgIGJyZWFrO1xuXHQgICAgY2FzZSB0aGlzLkVRVUlUOlxuXHQgICAgICB0aGlzLnJxID0gTWF0aC5zcXJ0KDAuNSAqIHRoaXMucXApO1xuXHQgICAgICB0aGlzLmRkID0gMSAvIHRoaXMucnE7XG5cdCAgICAgIHRoaXMueG1mID0gMTtcblx0ICAgICAgdGhpcy55bWYgPSAwLjUgKiB0aGlzLnFwO1xuXHQgICAgICBicmVhaztcblx0ICAgIGNhc2UgdGhpcy5PQkxJUTpcblx0ICAgICAgdGhpcy5ycSA9IE1hdGguc3FydCgwLjUgKiB0aGlzLnFwKTtcblx0ICAgICAgc2lucGhpID0gTWF0aC5zaW4odGhpcy5sYXQwKTtcblx0ICAgICAgdGhpcy5zaW5iMSA9IHFzZm56KHRoaXMuZSwgc2lucGhpKSAvIHRoaXMucXA7XG5cdCAgICAgIHRoaXMuY29zYjEgPSBNYXRoLnNxcnQoMSAtIHRoaXMuc2luYjEgKiB0aGlzLnNpbmIxKTtcblx0ICAgICAgdGhpcy5kZCA9IE1hdGguY29zKHRoaXMubGF0MCkgLyAoTWF0aC5zcXJ0KDEgLSB0aGlzLmVzICogc2lucGhpICogc2lucGhpKSAqIHRoaXMucnEgKiB0aGlzLmNvc2IxKTtcblx0ICAgICAgdGhpcy55bWYgPSAodGhpcy54bWYgPSB0aGlzLnJxKSAvIHRoaXMuZGQ7XG5cdCAgICAgIHRoaXMueG1mICo9IHRoaXMuZGQ7XG5cdCAgICAgIGJyZWFrO1xuXHQgICAgfVxuXHQgIH1cblx0ICBlbHNlIHtcblx0ICAgIGlmICh0aGlzLm1vZGUgPT09IHRoaXMuT0JMSVEpIHtcblx0ICAgICAgdGhpcy5zaW5waDAgPSBNYXRoLnNpbih0aGlzLmxhdDApO1xuXHQgICAgICB0aGlzLmNvc3BoMCA9IE1hdGguY29zKHRoaXMubGF0MCk7XG5cdCAgICB9XG5cdCAgfVxuXHR9XG5cblx0LyogTGFtYmVydCBBemltdXRoYWwgRXF1YWwgQXJlYSBmb3J3YXJkIGVxdWF0aW9ucy0tbWFwcGluZyBsYXQsbG9uZyB0byB4LHlcblx0ICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cdGZ1bmN0aW9uIGZvcndhcmQkMTIocCkge1xuXG5cdCAgLyogRm9yd2FyZCBlcXVhdGlvbnNcblx0ICAgICAgLS0tLS0tLS0tLS0tLS0tLS0qL1xuXHQgIHZhciB4LCB5LCBjb3NsYW0sIHNpbmxhbSwgc2lucGhpLCBxLCBzaW5iLCBjb3NiLCBiLCBjb3NwaGk7XG5cdCAgdmFyIGxhbSA9IHAueDtcblx0ICB2YXIgcGhpID0gcC55O1xuXG5cdCAgbGFtID0gYWRqdXN0X2xvbihsYW0gLSB0aGlzLmxvbmcwKTtcblx0ICBpZiAodGhpcy5zcGhlcmUpIHtcblx0ICAgIHNpbnBoaSA9IE1hdGguc2luKHBoaSk7XG5cdCAgICBjb3NwaGkgPSBNYXRoLmNvcyhwaGkpO1xuXHQgICAgY29zbGFtID0gTWF0aC5jb3MobGFtKTtcblx0ICAgIGlmICh0aGlzLm1vZGUgPT09IHRoaXMuT0JMSVEgfHwgdGhpcy5tb2RlID09PSB0aGlzLkVRVUlUKSB7XG5cdCAgICAgIHkgPSAodGhpcy5tb2RlID09PSB0aGlzLkVRVUlUKSA/IDEgKyBjb3NwaGkgKiBjb3NsYW0gOiAxICsgdGhpcy5zaW5waDAgKiBzaW5waGkgKyB0aGlzLmNvc3BoMCAqIGNvc3BoaSAqIGNvc2xhbTtcblx0ICAgICAgaWYgKHkgPD0gRVBTTE4pIHtcblx0ICAgICAgICByZXR1cm4gbnVsbDtcblx0ICAgICAgfVxuXHQgICAgICB5ID0gTWF0aC5zcXJ0KDIgLyB5KTtcblx0ICAgICAgeCA9IHkgKiBjb3NwaGkgKiBNYXRoLnNpbihsYW0pO1xuXHQgICAgICB5ICo9ICh0aGlzLm1vZGUgPT09IHRoaXMuRVFVSVQpID8gc2lucGhpIDogdGhpcy5jb3NwaDAgKiBzaW5waGkgLSB0aGlzLnNpbnBoMCAqIGNvc3BoaSAqIGNvc2xhbTtcblx0ICAgIH1cblx0ICAgIGVsc2UgaWYgKHRoaXMubW9kZSA9PT0gdGhpcy5OX1BPTEUgfHwgdGhpcy5tb2RlID09PSB0aGlzLlNfUE9MRSkge1xuXHQgICAgICBpZiAodGhpcy5tb2RlID09PSB0aGlzLk5fUE9MRSkge1xuXHQgICAgICAgIGNvc2xhbSA9IC1jb3NsYW07XG5cdCAgICAgIH1cblx0ICAgICAgaWYgKE1hdGguYWJzKHBoaSArIHRoaXMucGhpMCkgPCBFUFNMTikge1xuXHQgICAgICAgIHJldHVybiBudWxsO1xuXHQgICAgICB9XG5cdCAgICAgIHkgPSBGT1JUUEkgLSBwaGkgKiAwLjU7XG5cdCAgICAgIHkgPSAyICogKCh0aGlzLm1vZGUgPT09IHRoaXMuU19QT0xFKSA/IE1hdGguY29zKHkpIDogTWF0aC5zaW4oeSkpO1xuXHQgICAgICB4ID0geSAqIE1hdGguc2luKGxhbSk7XG5cdCAgICAgIHkgKj0gY29zbGFtO1xuXHQgICAgfVxuXHQgIH1cblx0ICBlbHNlIHtcblx0ICAgIHNpbmIgPSAwO1xuXHQgICAgY29zYiA9IDA7XG5cdCAgICBiID0gMDtcblx0ICAgIGNvc2xhbSA9IE1hdGguY29zKGxhbSk7XG5cdCAgICBzaW5sYW0gPSBNYXRoLnNpbihsYW0pO1xuXHQgICAgc2lucGhpID0gTWF0aC5zaW4ocGhpKTtcblx0ICAgIHEgPSBxc2Zueih0aGlzLmUsIHNpbnBoaSk7XG5cdCAgICBpZiAodGhpcy5tb2RlID09PSB0aGlzLk9CTElRIHx8IHRoaXMubW9kZSA9PT0gdGhpcy5FUVVJVCkge1xuXHQgICAgICBzaW5iID0gcSAvIHRoaXMucXA7XG5cdCAgICAgIGNvc2IgPSBNYXRoLnNxcnQoMSAtIHNpbmIgKiBzaW5iKTtcblx0ICAgIH1cblx0ICAgIHN3aXRjaCAodGhpcy5tb2RlKSB7XG5cdCAgICBjYXNlIHRoaXMuT0JMSVE6XG5cdCAgICAgIGIgPSAxICsgdGhpcy5zaW5iMSAqIHNpbmIgKyB0aGlzLmNvc2IxICogY29zYiAqIGNvc2xhbTtcblx0ICAgICAgYnJlYWs7XG5cdCAgICBjYXNlIHRoaXMuRVFVSVQ6XG5cdCAgICAgIGIgPSAxICsgY29zYiAqIGNvc2xhbTtcblx0ICAgICAgYnJlYWs7XG5cdCAgICBjYXNlIHRoaXMuTl9QT0xFOlxuXHQgICAgICBiID0gSEFMRl9QSSArIHBoaTtcblx0ICAgICAgcSA9IHRoaXMucXAgLSBxO1xuXHQgICAgICBicmVhaztcblx0ICAgIGNhc2UgdGhpcy5TX1BPTEU6XG5cdCAgICAgIGIgPSBwaGkgLSBIQUxGX1BJO1xuXHQgICAgICBxID0gdGhpcy5xcCArIHE7XG5cdCAgICAgIGJyZWFrO1xuXHQgICAgfVxuXHQgICAgaWYgKE1hdGguYWJzKGIpIDwgRVBTTE4pIHtcblx0ICAgICAgcmV0dXJuIG51bGw7XG5cdCAgICB9XG5cdCAgICBzd2l0Y2ggKHRoaXMubW9kZSkge1xuXHQgICAgY2FzZSB0aGlzLk9CTElROlxuXHQgICAgY2FzZSB0aGlzLkVRVUlUOlxuXHQgICAgICBiID0gTWF0aC5zcXJ0KDIgLyBiKTtcblx0ICAgICAgaWYgKHRoaXMubW9kZSA9PT0gdGhpcy5PQkxJUSkge1xuXHQgICAgICAgIHkgPSB0aGlzLnltZiAqIGIgKiAodGhpcy5jb3NiMSAqIHNpbmIgLSB0aGlzLnNpbmIxICogY29zYiAqIGNvc2xhbSk7XG5cdCAgICAgIH1cblx0ICAgICAgZWxzZSB7XG5cdCAgICAgICAgeSA9IChiID0gTWF0aC5zcXJ0KDIgLyAoMSArIGNvc2IgKiBjb3NsYW0pKSkgKiBzaW5iICogdGhpcy55bWY7XG5cdCAgICAgIH1cblx0ICAgICAgeCA9IHRoaXMueG1mICogYiAqIGNvc2IgKiBzaW5sYW07XG5cdCAgICAgIGJyZWFrO1xuXHQgICAgY2FzZSB0aGlzLk5fUE9MRTpcblx0ICAgIGNhc2UgdGhpcy5TX1BPTEU6XG5cdCAgICAgIGlmIChxID49IDApIHtcblx0ICAgICAgICB4ID0gKGIgPSBNYXRoLnNxcnQocSkpICogc2lubGFtO1xuXHQgICAgICAgIHkgPSBjb3NsYW0gKiAoKHRoaXMubW9kZSA9PT0gdGhpcy5TX1BPTEUpID8gYiA6IC1iKTtcblx0ICAgICAgfVxuXHQgICAgICBlbHNlIHtcblx0ICAgICAgICB4ID0geSA9IDA7XG5cdCAgICAgIH1cblx0ICAgICAgYnJlYWs7XG5cdCAgICB9XG5cdCAgfVxuXG5cdCAgcC54ID0gdGhpcy5hICogeCArIHRoaXMueDA7XG5cdCAgcC55ID0gdGhpcy5hICogeSArIHRoaXMueTA7XG5cdCAgcmV0dXJuIHA7XG5cdH1cblxuXHQvKiBJbnZlcnNlIGVxdWF0aW9uc1xuXHQgIC0tLS0tLS0tLS0tLS0tLS0tKi9cblx0ZnVuY3Rpb24gaW52ZXJzZSQxMihwKSB7XG5cdCAgcC54IC09IHRoaXMueDA7XG5cdCAgcC55IC09IHRoaXMueTA7XG5cdCAgdmFyIHggPSBwLnggLyB0aGlzLmE7XG5cdCAgdmFyIHkgPSBwLnkgLyB0aGlzLmE7XG5cdCAgdmFyIGxhbSwgcGhpLCBjQ2UsIHNDZSwgcSwgcmhvLCBhYjtcblx0ICBpZiAodGhpcy5zcGhlcmUpIHtcblx0ICAgIHZhciBjb3N6ID0gMCxcblx0ICAgICAgcmgsIHNpbnogPSAwO1xuXG5cdCAgICByaCA9IE1hdGguc3FydCh4ICogeCArIHkgKiB5KTtcblx0ICAgIHBoaSA9IHJoICogMC41O1xuXHQgICAgaWYgKHBoaSA+IDEpIHtcblx0ICAgICAgcmV0dXJuIG51bGw7XG5cdCAgICB9XG5cdCAgICBwaGkgPSAyICogTWF0aC5hc2luKHBoaSk7XG5cdCAgICBpZiAodGhpcy5tb2RlID09PSB0aGlzLk9CTElRIHx8IHRoaXMubW9kZSA9PT0gdGhpcy5FUVVJVCkge1xuXHQgICAgICBzaW56ID0gTWF0aC5zaW4ocGhpKTtcblx0ICAgICAgY29zeiA9IE1hdGguY29zKHBoaSk7XG5cdCAgICB9XG5cdCAgICBzd2l0Y2ggKHRoaXMubW9kZSkge1xuXHQgICAgY2FzZSB0aGlzLkVRVUlUOlxuXHQgICAgICBwaGkgPSAoTWF0aC5hYnMocmgpIDw9IEVQU0xOKSA/IDAgOiBNYXRoLmFzaW4oeSAqIHNpbnogLyByaCk7XG5cdCAgICAgIHggKj0gc2luejtcblx0ICAgICAgeSA9IGNvc3ogKiByaDtcblx0ICAgICAgYnJlYWs7XG5cdCAgICBjYXNlIHRoaXMuT0JMSVE6XG5cdCAgICAgIHBoaSA9IChNYXRoLmFicyhyaCkgPD0gRVBTTE4pID8gdGhpcy5waGkwIDogTWF0aC5hc2luKGNvc3ogKiB0aGlzLnNpbnBoMCArIHkgKiBzaW56ICogdGhpcy5jb3NwaDAgLyByaCk7XG5cdCAgICAgIHggKj0gc2lueiAqIHRoaXMuY29zcGgwO1xuXHQgICAgICB5ID0gKGNvc3ogLSBNYXRoLnNpbihwaGkpICogdGhpcy5zaW5waDApICogcmg7XG5cdCAgICAgIGJyZWFrO1xuXHQgICAgY2FzZSB0aGlzLk5fUE9MRTpcblx0ICAgICAgeSA9IC15O1xuXHQgICAgICBwaGkgPSBIQUxGX1BJIC0gcGhpO1xuXHQgICAgICBicmVhaztcblx0ICAgIGNhc2UgdGhpcy5TX1BPTEU6XG5cdCAgICAgIHBoaSAtPSBIQUxGX1BJO1xuXHQgICAgICBicmVhaztcblx0ICAgIH1cblx0ICAgIGxhbSA9ICh5ID09PSAwICYmICh0aGlzLm1vZGUgPT09IHRoaXMuRVFVSVQgfHwgdGhpcy5tb2RlID09PSB0aGlzLk9CTElRKSkgPyAwIDogTWF0aC5hdGFuMih4LCB5KTtcblx0ICB9XG5cdCAgZWxzZSB7XG5cdCAgICBhYiA9IDA7XG5cdCAgICBpZiAodGhpcy5tb2RlID09PSB0aGlzLk9CTElRIHx8IHRoaXMubW9kZSA9PT0gdGhpcy5FUVVJVCkge1xuXHQgICAgICB4IC89IHRoaXMuZGQ7XG5cdCAgICAgIHkgKj0gdGhpcy5kZDtcblx0ICAgICAgcmhvID0gTWF0aC5zcXJ0KHggKiB4ICsgeSAqIHkpO1xuXHQgICAgICBpZiAocmhvIDwgRVBTTE4pIHtcblx0ICAgICAgICBwLnggPSAwO1xuXHQgICAgICAgIHAueSA9IHRoaXMucGhpMDtcblx0ICAgICAgICByZXR1cm4gcDtcblx0ICAgICAgfVxuXHQgICAgICBzQ2UgPSAyICogTWF0aC5hc2luKDAuNSAqIHJobyAvIHRoaXMucnEpO1xuXHQgICAgICBjQ2UgPSBNYXRoLmNvcyhzQ2UpO1xuXHQgICAgICB4ICo9IChzQ2UgPSBNYXRoLnNpbihzQ2UpKTtcblx0ICAgICAgaWYgKHRoaXMubW9kZSA9PT0gdGhpcy5PQkxJUSkge1xuXHQgICAgICAgIGFiID0gY0NlICogdGhpcy5zaW5iMSArIHkgKiBzQ2UgKiB0aGlzLmNvc2IxIC8gcmhvO1xuXHQgICAgICAgIHEgPSB0aGlzLnFwICogYWI7XG5cdCAgICAgICAgeSA9IHJobyAqIHRoaXMuY29zYjEgKiBjQ2UgLSB5ICogdGhpcy5zaW5iMSAqIHNDZTtcblx0ICAgICAgfVxuXHQgICAgICBlbHNlIHtcblx0ICAgICAgICBhYiA9IHkgKiBzQ2UgLyByaG87XG5cdCAgICAgICAgcSA9IHRoaXMucXAgKiBhYjtcblx0ICAgICAgICB5ID0gcmhvICogY0NlO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgICBlbHNlIGlmICh0aGlzLm1vZGUgPT09IHRoaXMuTl9QT0xFIHx8IHRoaXMubW9kZSA9PT0gdGhpcy5TX1BPTEUpIHtcblx0ICAgICAgaWYgKHRoaXMubW9kZSA9PT0gdGhpcy5OX1BPTEUpIHtcblx0ICAgICAgICB5ID0gLXk7XG5cdCAgICAgIH1cblx0ICAgICAgcSA9ICh4ICogeCArIHkgKiB5KTtcblx0ICAgICAgaWYgKCFxKSB7XG5cdCAgICAgICAgcC54ID0gMDtcblx0ICAgICAgICBwLnkgPSB0aGlzLnBoaTA7XG5cdCAgICAgICAgcmV0dXJuIHA7XG5cdCAgICAgIH1cblx0ICAgICAgYWIgPSAxIC0gcSAvIHRoaXMucXA7XG5cdCAgICAgIGlmICh0aGlzLm1vZGUgPT09IHRoaXMuU19QT0xFKSB7XG5cdCAgICAgICAgYWIgPSAtYWI7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICAgIGxhbSA9IE1hdGguYXRhbjIoeCwgeSk7XG5cdCAgICBwaGkgPSBhdXRobGF0KE1hdGguYXNpbihhYiksIHRoaXMuYXBhKTtcblx0ICB9XG5cblx0ICBwLnggPSBhZGp1c3RfbG9uKHRoaXMubG9uZzAgKyBsYW0pO1xuXHQgIHAueSA9IHBoaTtcblx0ICByZXR1cm4gcDtcblx0fVxuXG5cdC8qIGRldGVybWluZSBsYXRpdHVkZSBmcm9tIGF1dGhhbGljIGxhdGl0dWRlICovXG5cdHZhciBQMDAgPSAwLjMzMzMzMzMzMzMzMzMzMzMzMzMzO1xuXG5cdHZhciBQMDEgPSAwLjE3MjIyMjIyMjIyMjIyMjIyMjIyO1xuXHR2YXIgUDAyID0gMC4xMDI1NzkzNjUwNzkzNjUwNzkzNjtcblx0dmFyIFAxMCA9IDAuMDYzODg4ODg4ODg4ODg4ODg4ODg7XG5cdHZhciBQMTEgPSAwLjA2NjQwMjExNjQwMjExNjQwMjExO1xuXHR2YXIgUDIwID0gMC4wMTY0MTUwMTI5NDIxOTE1NDQ0MztcblxuXHRmdW5jdGlvbiBhdXRoc2V0KGVzKSB7XG5cdCAgdmFyIHQ7XG5cdCAgdmFyIEFQQSA9IFtdO1xuXHQgIEFQQVswXSA9IGVzICogUDAwO1xuXHQgIHQgPSBlcyAqIGVzO1xuXHQgIEFQQVswXSArPSB0ICogUDAxO1xuXHQgIEFQQVsxXSA9IHQgKiBQMTA7XG5cdCAgdCAqPSBlcztcblx0ICBBUEFbMF0gKz0gdCAqIFAwMjtcblx0ICBBUEFbMV0gKz0gdCAqIFAxMTtcblx0ICBBUEFbMl0gPSB0ICogUDIwO1xuXHQgIHJldHVybiBBUEE7XG5cdH1cblxuXHRmdW5jdGlvbiBhdXRobGF0KGJldGEsIEFQQSkge1xuXHQgIHZhciB0ID0gYmV0YSArIGJldGE7XG5cdCAgcmV0dXJuIChiZXRhICsgQVBBWzBdICogTWF0aC5zaW4odCkgKyBBUEFbMV0gKiBNYXRoLnNpbih0ICsgdCkgKyBBUEFbMl0gKiBNYXRoLnNpbih0ICsgdCArIHQpKTtcblx0fVxuXG5cdHZhciBuYW1lcyQxNCA9IFtcIkxhbWJlcnQgQXppbXV0aGFsIEVxdWFsIEFyZWFcIiwgXCJMYW1iZXJ0X0F6aW11dGhhbF9FcXVhbF9BcmVhXCIsIFwibGFlYVwiXTtcblx0dmFyIGxhZWEgPSB7XG5cdCAgaW5pdDogaW5pdCQxMyxcblx0ICBmb3J3YXJkOiBmb3J3YXJkJDEyLFxuXHQgIGludmVyc2U6IGludmVyc2UkMTIsXG5cdCAgbmFtZXM6IG5hbWVzJDE0LFxuXHQgIFNfUE9MRTogU19QT0xFLFxuXHQgIE5fUE9MRTogTl9QT0xFLFxuXHQgIEVRVUlUOiBFUVVJVCxcblx0ICBPQkxJUTogT0JMSVFcblx0fTtcblxuXHR2YXIgYXNpbnogPSBmdW5jdGlvbih4KSB7XG5cdCAgaWYgKE1hdGguYWJzKHgpID4gMSkge1xuXHQgICAgeCA9ICh4ID4gMSkgPyAxIDogLTE7XG5cdCAgfVxuXHQgIHJldHVybiBNYXRoLmFzaW4oeCk7XG5cdH07XG5cblx0ZnVuY3Rpb24gaW5pdCQxNCgpIHtcblxuXHQgIGlmIChNYXRoLmFicyh0aGlzLmxhdDEgKyB0aGlzLmxhdDIpIDwgRVBTTE4pIHtcblx0ICAgIHJldHVybjtcblx0ICB9XG5cdCAgdGhpcy50ZW1wID0gdGhpcy5iIC8gdGhpcy5hO1xuXHQgIHRoaXMuZXMgPSAxIC0gTWF0aC5wb3codGhpcy50ZW1wLCAyKTtcblx0ICB0aGlzLmUzID0gTWF0aC5zcXJ0KHRoaXMuZXMpO1xuXG5cdCAgdGhpcy5zaW5fcG8gPSBNYXRoLnNpbih0aGlzLmxhdDEpO1xuXHQgIHRoaXMuY29zX3BvID0gTWF0aC5jb3ModGhpcy5sYXQxKTtcblx0ICB0aGlzLnQxID0gdGhpcy5zaW5fcG87XG5cdCAgdGhpcy5jb24gPSB0aGlzLnNpbl9wbztcblx0ICB0aGlzLm1zMSA9IG1zZm56KHRoaXMuZTMsIHRoaXMuc2luX3BvLCB0aGlzLmNvc19wbyk7XG5cdCAgdGhpcy5xczEgPSBxc2Zueih0aGlzLmUzLCB0aGlzLnNpbl9wbywgdGhpcy5jb3NfcG8pO1xuXG5cdCAgdGhpcy5zaW5fcG8gPSBNYXRoLnNpbih0aGlzLmxhdDIpO1xuXHQgIHRoaXMuY29zX3BvID0gTWF0aC5jb3ModGhpcy5sYXQyKTtcblx0ICB0aGlzLnQyID0gdGhpcy5zaW5fcG87XG5cdCAgdGhpcy5tczIgPSBtc2Zueih0aGlzLmUzLCB0aGlzLnNpbl9wbywgdGhpcy5jb3NfcG8pO1xuXHQgIHRoaXMucXMyID0gcXNmbnoodGhpcy5lMywgdGhpcy5zaW5fcG8sIHRoaXMuY29zX3BvKTtcblxuXHQgIHRoaXMuc2luX3BvID0gTWF0aC5zaW4odGhpcy5sYXQwKTtcblx0ICB0aGlzLmNvc19wbyA9IE1hdGguY29zKHRoaXMubGF0MCk7XG5cdCAgdGhpcy50MyA9IHRoaXMuc2luX3BvO1xuXHQgIHRoaXMucXMwID0gcXNmbnoodGhpcy5lMywgdGhpcy5zaW5fcG8sIHRoaXMuY29zX3BvKTtcblxuXHQgIGlmIChNYXRoLmFicyh0aGlzLmxhdDEgLSB0aGlzLmxhdDIpID4gRVBTTE4pIHtcblx0ICAgIHRoaXMubnMwID0gKHRoaXMubXMxICogdGhpcy5tczEgLSB0aGlzLm1zMiAqIHRoaXMubXMyKSAvICh0aGlzLnFzMiAtIHRoaXMucXMxKTtcblx0ICB9XG5cdCAgZWxzZSB7XG5cdCAgICB0aGlzLm5zMCA9IHRoaXMuY29uO1xuXHQgIH1cblx0ICB0aGlzLmMgPSB0aGlzLm1zMSAqIHRoaXMubXMxICsgdGhpcy5uczAgKiB0aGlzLnFzMTtcblx0ICB0aGlzLnJoID0gdGhpcy5hICogTWF0aC5zcXJ0KHRoaXMuYyAtIHRoaXMubnMwICogdGhpcy5xczApIC8gdGhpcy5uczA7XG5cdH1cblxuXHQvKiBBbGJlcnMgQ29uaWNhbCBFcXVhbCBBcmVhIGZvcndhcmQgZXF1YXRpb25zLS1tYXBwaW5nIGxhdCxsb25nIHRvIHgseVxuXHQgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXHRmdW5jdGlvbiBmb3J3YXJkJDEzKHApIHtcblxuXHQgIHZhciBsb24gPSBwLng7XG5cdCAgdmFyIGxhdCA9IHAueTtcblxuXHQgIHRoaXMuc2luX3BoaSA9IE1hdGguc2luKGxhdCk7XG5cdCAgdGhpcy5jb3NfcGhpID0gTWF0aC5jb3MobGF0KTtcblxuXHQgIHZhciBxcyA9IHFzZm56KHRoaXMuZTMsIHRoaXMuc2luX3BoaSwgdGhpcy5jb3NfcGhpKTtcblx0ICB2YXIgcmgxID0gdGhpcy5hICogTWF0aC5zcXJ0KHRoaXMuYyAtIHRoaXMubnMwICogcXMpIC8gdGhpcy5uczA7XG5cdCAgdmFyIHRoZXRhID0gdGhpcy5uczAgKiBhZGp1c3RfbG9uKGxvbiAtIHRoaXMubG9uZzApO1xuXHQgIHZhciB4ID0gcmgxICogTWF0aC5zaW4odGhldGEpICsgdGhpcy54MDtcblx0ICB2YXIgeSA9IHRoaXMucmggLSByaDEgKiBNYXRoLmNvcyh0aGV0YSkgKyB0aGlzLnkwO1xuXG5cdCAgcC54ID0geDtcblx0ICBwLnkgPSB5O1xuXHQgIHJldHVybiBwO1xuXHR9XG5cblx0ZnVuY3Rpb24gaW52ZXJzZSQxMyhwKSB7XG5cdCAgdmFyIHJoMSwgcXMsIGNvbiwgdGhldGEsIGxvbiwgbGF0O1xuXG5cdCAgcC54IC09IHRoaXMueDA7XG5cdCAgcC55ID0gdGhpcy5yaCAtIHAueSArIHRoaXMueTA7XG5cdCAgaWYgKHRoaXMubnMwID49IDApIHtcblx0ICAgIHJoMSA9IE1hdGguc3FydChwLnggKiBwLnggKyBwLnkgKiBwLnkpO1xuXHQgICAgY29uID0gMTtcblx0ICB9XG5cdCAgZWxzZSB7XG5cdCAgICByaDEgPSAtTWF0aC5zcXJ0KHAueCAqIHAueCArIHAueSAqIHAueSk7XG5cdCAgICBjb24gPSAtMTtcblx0ICB9XG5cdCAgdGhldGEgPSAwO1xuXHQgIGlmIChyaDEgIT09IDApIHtcblx0ICAgIHRoZXRhID0gTWF0aC5hdGFuMihjb24gKiBwLngsIGNvbiAqIHAueSk7XG5cdCAgfVxuXHQgIGNvbiA9IHJoMSAqIHRoaXMubnMwIC8gdGhpcy5hO1xuXHQgIGlmICh0aGlzLnNwaGVyZSkge1xuXHQgICAgbGF0ID0gTWF0aC5hc2luKCh0aGlzLmMgLSBjb24gKiBjb24pIC8gKDIgKiB0aGlzLm5zMCkpO1xuXHQgIH1cblx0ICBlbHNlIHtcblx0ICAgIHFzID0gKHRoaXMuYyAtIGNvbiAqIGNvbikgLyB0aGlzLm5zMDtcblx0ICAgIGxhdCA9IHRoaXMucGhpMXoodGhpcy5lMywgcXMpO1xuXHQgIH1cblxuXHQgIGxvbiA9IGFkanVzdF9sb24odGhldGEgLyB0aGlzLm5zMCArIHRoaXMubG9uZzApO1xuXHQgIHAueCA9IGxvbjtcblx0ICBwLnkgPSBsYXQ7XG5cdCAgcmV0dXJuIHA7XG5cdH1cblxuXHQvKiBGdW5jdGlvbiB0byBjb21wdXRlIHBoaTEsIHRoZSBsYXRpdHVkZSBmb3IgdGhlIGludmVyc2Ugb2YgdGhlXG5cdCAgIEFsYmVycyBDb25pY2FsIEVxdWFsLUFyZWEgcHJvamVjdGlvbi5cblx0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cdGZ1bmN0aW9uIHBoaTF6KGVjY2VudCwgcXMpIHtcblx0ICB2YXIgc2lucGhpLCBjb3NwaGksIGNvbiwgY29tLCBkcGhpO1xuXHQgIHZhciBwaGkgPSBhc2lueigwLjUgKiBxcyk7XG5cdCAgaWYgKGVjY2VudCA8IEVQU0xOKSB7XG5cdCAgICByZXR1cm4gcGhpO1xuXHQgIH1cblxuXHQgIHZhciBlY2NudHMgPSBlY2NlbnQgKiBlY2NlbnQ7XG5cdCAgZm9yICh2YXIgaSA9IDE7IGkgPD0gMjU7IGkrKykge1xuXHQgICAgc2lucGhpID0gTWF0aC5zaW4ocGhpKTtcblx0ICAgIGNvc3BoaSA9IE1hdGguY29zKHBoaSk7XG5cdCAgICBjb24gPSBlY2NlbnQgKiBzaW5waGk7XG5cdCAgICBjb20gPSAxIC0gY29uICogY29uO1xuXHQgICAgZHBoaSA9IDAuNSAqIGNvbSAqIGNvbSAvIGNvc3BoaSAqIChxcyAvICgxIC0gZWNjbnRzKSAtIHNpbnBoaSAvIGNvbSArIDAuNSAvIGVjY2VudCAqIE1hdGgubG9nKCgxIC0gY29uKSAvICgxICsgY29uKSkpO1xuXHQgICAgcGhpID0gcGhpICsgZHBoaTtcblx0ICAgIGlmIChNYXRoLmFicyhkcGhpKSA8PSAxZS03KSB7XG5cdCAgICAgIHJldHVybiBwaGk7XG5cdCAgICB9XG5cdCAgfVxuXHQgIHJldHVybiBudWxsO1xuXHR9XG5cblx0dmFyIG5hbWVzJDE1ID0gW1wiQWxiZXJzX0NvbmljX0VxdWFsX0FyZWFcIiwgXCJBbGJlcnNcIiwgXCJhZWFcIl07XG5cdHZhciBhZWEgPSB7XG5cdCAgaW5pdDogaW5pdCQxNCxcblx0ICBmb3J3YXJkOiBmb3J3YXJkJDEzLFxuXHQgIGludmVyc2U6IGludmVyc2UkMTMsXG5cdCAgbmFtZXM6IG5hbWVzJDE1LFxuXHQgIHBoaTF6OiBwaGkxelxuXHR9O1xuXG5cdC8qXG5cdCAgcmVmZXJlbmNlOlxuXHQgICAgV29sZnJhbSBNYXRod29ybGQgXCJHbm9tb25pYyBQcm9qZWN0aW9uXCJcblx0ICAgIGh0dHA6Ly9tYXRod29ybGQud29sZnJhbS5jb20vR25vbW9uaWNQcm9qZWN0aW9uLmh0bWxcblx0ICAgIEFjY2Vzc2VkOiAxMnRoIE5vdmVtYmVyIDIwMDlcblx0ICAqL1xuXHRmdW5jdGlvbiBpbml0JDE1KCkge1xuXG5cdCAgLyogUGxhY2UgcGFyYW1ldGVycyBpbiBzdGF0aWMgc3RvcmFnZSBmb3IgY29tbW9uIHVzZVxuXHQgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblx0ICB0aGlzLnNpbl9wMTQgPSBNYXRoLnNpbih0aGlzLmxhdDApO1xuXHQgIHRoaXMuY29zX3AxNCA9IE1hdGguY29zKHRoaXMubGF0MCk7XG5cdCAgLy8gQXBwcm94aW1hdGlvbiBmb3IgcHJvamVjdGluZyBwb2ludHMgdG8gdGhlIGhvcml6b24gKGluZmluaXR5KVxuXHQgIHRoaXMuaW5maW5pdHlfZGlzdCA9IDEwMDAgKiB0aGlzLmE7XG5cdCAgdGhpcy5yYyA9IDE7XG5cdH1cblxuXHQvKiBHbm9tb25pYyBmb3J3YXJkIGVxdWF0aW9ucy0tbWFwcGluZyBsYXQsbG9uZyB0byB4LHlcblx0ICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cdGZ1bmN0aW9uIGZvcndhcmQkMTQocCkge1xuXHQgIHZhciBzaW5waGksIGNvc3BoaTsgLyogc2luIGFuZCBjb3MgdmFsdWUgICAgICAgICovXG5cdCAgdmFyIGRsb247IC8qIGRlbHRhIGxvbmdpdHVkZSB2YWx1ZSAgICAgICovXG5cdCAgdmFyIGNvc2xvbjsgLyogY29zIG9mIGxvbmdpdHVkZSAgICAgICAgKi9cblx0ICB2YXIga3NwOyAvKiBzY2FsZSBmYWN0b3IgICAgICAgICAgKi9cblx0ICB2YXIgZztcblx0ICB2YXIgeCwgeTtcblx0ICB2YXIgbG9uID0gcC54O1xuXHQgIHZhciBsYXQgPSBwLnk7XG5cdCAgLyogRm9yd2FyZCBlcXVhdGlvbnNcblx0ICAgICAgLS0tLS0tLS0tLS0tLS0tLS0qL1xuXHQgIGRsb24gPSBhZGp1c3RfbG9uKGxvbiAtIHRoaXMubG9uZzApO1xuXG5cdCAgc2lucGhpID0gTWF0aC5zaW4obGF0KTtcblx0ICBjb3NwaGkgPSBNYXRoLmNvcyhsYXQpO1xuXG5cdCAgY29zbG9uID0gTWF0aC5jb3MoZGxvbik7XG5cdCAgZyA9IHRoaXMuc2luX3AxNCAqIHNpbnBoaSArIHRoaXMuY29zX3AxNCAqIGNvc3BoaSAqIGNvc2xvbjtcblx0ICBrc3AgPSAxO1xuXHQgIGlmICgoZyA+IDApIHx8IChNYXRoLmFicyhnKSA8PSBFUFNMTikpIHtcblx0ICAgIHggPSB0aGlzLngwICsgdGhpcy5hICoga3NwICogY29zcGhpICogTWF0aC5zaW4oZGxvbikgLyBnO1xuXHQgICAgeSA9IHRoaXMueTAgKyB0aGlzLmEgKiBrc3AgKiAodGhpcy5jb3NfcDE0ICogc2lucGhpIC0gdGhpcy5zaW5fcDE0ICogY29zcGhpICogY29zbG9uKSAvIGc7XG5cdCAgfVxuXHQgIGVsc2Uge1xuXG5cdCAgICAvLyBQb2ludCBpcyBpbiB0aGUgb3Bwb3NpbmcgaGVtaXNwaGVyZSBhbmQgaXMgdW5wcm9qZWN0YWJsZVxuXHQgICAgLy8gV2Ugc3RpbGwgbmVlZCB0byByZXR1cm4gYSByZWFzb25hYmxlIHBvaW50LCBzbyB3ZSBwcm9qZWN0XG5cdCAgICAvLyB0byBpbmZpbml0eSwgb24gYSBiZWFyaW5nXG5cdCAgICAvLyBlcXVpdmFsZW50IHRvIHRoZSBub3J0aGVybiBoZW1pc3BoZXJlIGVxdWl2YWxlbnRcblx0ICAgIC8vIFRoaXMgaXMgYSByZWFzb25hYmxlIGFwcHJveGltYXRpb24gZm9yIHNob3J0IHNoYXBlcyBhbmQgbGluZXMgdGhhdFxuXHQgICAgLy8gc3RyYWRkbGUgdGhlIGhvcml6b24uXG5cblx0ICAgIHggPSB0aGlzLngwICsgdGhpcy5pbmZpbml0eV9kaXN0ICogY29zcGhpICogTWF0aC5zaW4oZGxvbik7XG5cdCAgICB5ID0gdGhpcy55MCArIHRoaXMuaW5maW5pdHlfZGlzdCAqICh0aGlzLmNvc19wMTQgKiBzaW5waGkgLSB0aGlzLnNpbl9wMTQgKiBjb3NwaGkgKiBjb3Nsb24pO1xuXG5cdCAgfVxuXHQgIHAueCA9IHg7XG5cdCAgcC55ID0geTtcblx0ICByZXR1cm4gcDtcblx0fVxuXG5cdGZ1bmN0aW9uIGludmVyc2UkMTQocCkge1xuXHQgIHZhciByaDsgLyogUmhvICovXG5cdCAgdmFyIHNpbmMsIGNvc2M7XG5cdCAgdmFyIGM7XG5cdCAgdmFyIGxvbiwgbGF0O1xuXG5cdCAgLyogSW52ZXJzZSBlcXVhdGlvbnNcblx0ICAgICAgLS0tLS0tLS0tLS0tLS0tLS0qL1xuXHQgIHAueCA9IChwLnggLSB0aGlzLngwKSAvIHRoaXMuYTtcblx0ICBwLnkgPSAocC55IC0gdGhpcy55MCkgLyB0aGlzLmE7XG5cblx0ICBwLnggLz0gdGhpcy5rMDtcblx0ICBwLnkgLz0gdGhpcy5rMDtcblxuXHQgIGlmICgocmggPSBNYXRoLnNxcnQocC54ICogcC54ICsgcC55ICogcC55KSkpIHtcblx0ICAgIGMgPSBNYXRoLmF0YW4yKHJoLCB0aGlzLnJjKTtcblx0ICAgIHNpbmMgPSBNYXRoLnNpbihjKTtcblx0ICAgIGNvc2MgPSBNYXRoLmNvcyhjKTtcblxuXHQgICAgbGF0ID0gYXNpbnooY29zYyAqIHRoaXMuc2luX3AxNCArIChwLnkgKiBzaW5jICogdGhpcy5jb3NfcDE0KSAvIHJoKTtcblx0ICAgIGxvbiA9IE1hdGguYXRhbjIocC54ICogc2luYywgcmggKiB0aGlzLmNvc19wMTQgKiBjb3NjIC0gcC55ICogdGhpcy5zaW5fcDE0ICogc2luYyk7XG5cdCAgICBsb24gPSBhZGp1c3RfbG9uKHRoaXMubG9uZzAgKyBsb24pO1xuXHQgIH1cblx0ICBlbHNlIHtcblx0ICAgIGxhdCA9IHRoaXMucGhpYzA7XG5cdCAgICBsb24gPSAwO1xuXHQgIH1cblxuXHQgIHAueCA9IGxvbjtcblx0ICBwLnkgPSBsYXQ7XG5cdCAgcmV0dXJuIHA7XG5cdH1cblxuXHR2YXIgbmFtZXMkMTYgPSBbXCJnbm9tXCJdO1xuXHR2YXIgZ25vbSA9IHtcblx0ICBpbml0OiBpbml0JDE1LFxuXHQgIGZvcndhcmQ6IGZvcndhcmQkMTQsXG5cdCAgaW52ZXJzZTogaW52ZXJzZSQxNCxcblx0ICBuYW1lczogbmFtZXMkMTZcblx0fTtcblxuXHR2YXIgaXFzZm56ID0gZnVuY3Rpb24oZWNjZW50LCBxKSB7XG5cdCAgdmFyIHRlbXAgPSAxIC0gKDEgLSBlY2NlbnQgKiBlY2NlbnQpIC8gKDIgKiBlY2NlbnQpICogTWF0aC5sb2coKDEgLSBlY2NlbnQpIC8gKDEgKyBlY2NlbnQpKTtcblx0ICBpZiAoTWF0aC5hYnMoTWF0aC5hYnMocSkgLSB0ZW1wKSA8IDEuMEUtNikge1xuXHQgICAgaWYgKHEgPCAwKSB7XG5cdCAgICAgIHJldHVybiAoLTEgKiBIQUxGX1BJKTtcblx0ICAgIH1cblx0ICAgIGVsc2Uge1xuXHQgICAgICByZXR1cm4gSEFMRl9QSTtcblx0ICAgIH1cblx0ICB9XG5cdCAgLy92YXIgcGhpID0gMC41KiBxLygxLWVjY2VudCplY2NlbnQpO1xuXHQgIHZhciBwaGkgPSBNYXRoLmFzaW4oMC41ICogcSk7XG5cdCAgdmFyIGRwaGk7XG5cdCAgdmFyIHNpbl9waGk7XG5cdCAgdmFyIGNvc19waGk7XG5cdCAgdmFyIGNvbjtcblx0ICBmb3IgKHZhciBpID0gMDsgaSA8IDMwOyBpKyspIHtcblx0ICAgIHNpbl9waGkgPSBNYXRoLnNpbihwaGkpO1xuXHQgICAgY29zX3BoaSA9IE1hdGguY29zKHBoaSk7XG5cdCAgICBjb24gPSBlY2NlbnQgKiBzaW5fcGhpO1xuXHQgICAgZHBoaSA9IE1hdGgucG93KDEgLSBjb24gKiBjb24sIDIpIC8gKDIgKiBjb3NfcGhpKSAqIChxIC8gKDEgLSBlY2NlbnQgKiBlY2NlbnQpIC0gc2luX3BoaSAvICgxIC0gY29uICogY29uKSArIDAuNSAvIGVjY2VudCAqIE1hdGgubG9nKCgxIC0gY29uKSAvICgxICsgY29uKSkpO1xuXHQgICAgcGhpICs9IGRwaGk7XG5cdCAgICBpZiAoTWF0aC5hYnMoZHBoaSkgPD0gMC4wMDAwMDAwMDAxKSB7XG5cdCAgICAgIHJldHVybiBwaGk7XG5cdCAgICB9XG5cdCAgfVxuXG5cdCAgLy9jb25zb2xlLmxvZyhcIklRU0ZOLUNPTlY6TGF0aXR1ZGUgZmFpbGVkIHRvIGNvbnZlcmdlIGFmdGVyIDMwIGl0ZXJhdGlvbnNcIik7XG5cdCAgcmV0dXJuIE5hTjtcblx0fTtcblxuXHQvKlxuXHQgIHJlZmVyZW5jZTpcblx0ICAgIFwiQ2FydG9ncmFwaGljIFByb2plY3Rpb24gUHJvY2VkdXJlcyBmb3IgdGhlIFVOSVggRW52aXJvbm1lbnQtXG5cdCAgICBBIFVzZXIncyBNYW51YWxcIiBieSBHZXJhbGQgSS4gRXZlbmRlbixcblx0ICAgIFVTR1MgT3BlbiBGaWxlIFJlcG9ydCA5MC0yODRhbmQgUmVsZWFzZSA0IEludGVyaW0gUmVwb3J0cyAoMjAwMylcblx0Ki9cblx0ZnVuY3Rpb24gaW5pdCQxNigpIHtcblx0ICAvL25vLW9wXG5cdCAgaWYgKCF0aGlzLnNwaGVyZSkge1xuXHQgICAgdGhpcy5rMCA9IG1zZm56KHRoaXMuZSwgTWF0aC5zaW4odGhpcy5sYXRfdHMpLCBNYXRoLmNvcyh0aGlzLmxhdF90cykpO1xuXHQgIH1cblx0fVxuXG5cdC8qIEN5bGluZHJpY2FsIEVxdWFsIEFyZWEgZm9yd2FyZCBlcXVhdGlvbnMtLW1hcHBpbmcgbGF0LGxvbmcgdG8geCx5XG5cdCAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXHRmdW5jdGlvbiBmb3J3YXJkJDE1KHApIHtcblx0ICB2YXIgbG9uID0gcC54O1xuXHQgIHZhciBsYXQgPSBwLnk7XG5cdCAgdmFyIHgsIHk7XG5cdCAgLyogRm9yd2FyZCBlcXVhdGlvbnNcblx0ICAgICAgLS0tLS0tLS0tLS0tLS0tLS0qL1xuXHQgIHZhciBkbG9uID0gYWRqdXN0X2xvbihsb24gLSB0aGlzLmxvbmcwKTtcblx0ICBpZiAodGhpcy5zcGhlcmUpIHtcblx0ICAgIHggPSB0aGlzLngwICsgdGhpcy5hICogZGxvbiAqIE1hdGguY29zKHRoaXMubGF0X3RzKTtcblx0ICAgIHkgPSB0aGlzLnkwICsgdGhpcy5hICogTWF0aC5zaW4obGF0KSAvIE1hdGguY29zKHRoaXMubGF0X3RzKTtcblx0ICB9XG5cdCAgZWxzZSB7XG5cdCAgICB2YXIgcXMgPSBxc2Zueih0aGlzLmUsIE1hdGguc2luKGxhdCkpO1xuXHQgICAgeCA9IHRoaXMueDAgKyB0aGlzLmEgKiB0aGlzLmswICogZGxvbjtcblx0ICAgIHkgPSB0aGlzLnkwICsgdGhpcy5hICogcXMgKiAwLjUgLyB0aGlzLmswO1xuXHQgIH1cblxuXHQgIHAueCA9IHg7XG5cdCAgcC55ID0geTtcblx0ICByZXR1cm4gcDtcblx0fVxuXG5cdC8qIEN5bGluZHJpY2FsIEVxdWFsIEFyZWEgaW52ZXJzZSBlcXVhdGlvbnMtLW1hcHBpbmcgeCx5IHRvIGxhdC9sb25nXG5cdCAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXHRmdW5jdGlvbiBpbnZlcnNlJDE1KHApIHtcblx0ICBwLnggLT0gdGhpcy54MDtcblx0ICBwLnkgLT0gdGhpcy55MDtcblx0ICB2YXIgbG9uLCBsYXQ7XG5cblx0ICBpZiAodGhpcy5zcGhlcmUpIHtcblx0ICAgIGxvbiA9IGFkanVzdF9sb24odGhpcy5sb25nMCArIChwLnggLyB0aGlzLmEpIC8gTWF0aC5jb3ModGhpcy5sYXRfdHMpKTtcblx0ICAgIGxhdCA9IE1hdGguYXNpbigocC55IC8gdGhpcy5hKSAqIE1hdGguY29zKHRoaXMubGF0X3RzKSk7XG5cdCAgfVxuXHQgIGVsc2Uge1xuXHQgICAgbGF0ID0gaXFzZm56KHRoaXMuZSwgMiAqIHAueSAqIHRoaXMuazAgLyB0aGlzLmEpO1xuXHQgICAgbG9uID0gYWRqdXN0X2xvbih0aGlzLmxvbmcwICsgcC54IC8gKHRoaXMuYSAqIHRoaXMuazApKTtcblx0ICB9XG5cblx0ICBwLnggPSBsb247XG5cdCAgcC55ID0gbGF0O1xuXHQgIHJldHVybiBwO1xuXHR9XG5cblx0dmFyIG5hbWVzJDE3ID0gW1wiY2VhXCJdO1xuXHR2YXIgY2VhID0ge1xuXHQgIGluaXQ6IGluaXQkMTYsXG5cdCAgZm9yd2FyZDogZm9yd2FyZCQxNSxcblx0ICBpbnZlcnNlOiBpbnZlcnNlJDE1LFxuXHQgIG5hbWVzOiBuYW1lcyQxN1xuXHR9O1xuXG5cdGZ1bmN0aW9uIGluaXQkMTcoKSB7XG5cblx0ICB0aGlzLngwID0gdGhpcy54MCB8fCAwO1xuXHQgIHRoaXMueTAgPSB0aGlzLnkwIHx8IDA7XG5cdCAgdGhpcy5sYXQwID0gdGhpcy5sYXQwIHx8IDA7XG5cdCAgdGhpcy5sb25nMCA9IHRoaXMubG9uZzAgfHwgMDtcblx0ICB0aGlzLmxhdF90cyA9IHRoaXMubGF0X3RzIHx8IDA7XG5cdCAgdGhpcy50aXRsZSA9IHRoaXMudGl0bGUgfHwgXCJFcXVpZGlzdGFudCBDeWxpbmRyaWNhbCAoUGxhdGUgQ2FycmUpXCI7XG5cblx0ICB0aGlzLnJjID0gTWF0aC5jb3ModGhpcy5sYXRfdHMpO1xuXHR9XG5cblx0Ly8gZm9yd2FyZCBlcXVhdGlvbnMtLW1hcHBpbmcgbGF0LGxvbmcgdG8geCx5XG5cdC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cdGZ1bmN0aW9uIGZvcndhcmQkMTYocCkge1xuXG5cdCAgdmFyIGxvbiA9IHAueDtcblx0ICB2YXIgbGF0ID0gcC55O1xuXG5cdCAgdmFyIGRsb24gPSBhZGp1c3RfbG9uKGxvbiAtIHRoaXMubG9uZzApO1xuXHQgIHZhciBkbGF0ID0gYWRqdXN0X2xhdChsYXQgLSB0aGlzLmxhdDApO1xuXHQgIHAueCA9IHRoaXMueDAgKyAodGhpcy5hICogZGxvbiAqIHRoaXMucmMpO1xuXHQgIHAueSA9IHRoaXMueTAgKyAodGhpcy5hICogZGxhdCk7XG5cdCAgcmV0dXJuIHA7XG5cdH1cblxuXHQvLyBpbnZlcnNlIGVxdWF0aW9ucy0tbWFwcGluZyB4LHkgdG8gbGF0L2xvbmdcblx0Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblx0ZnVuY3Rpb24gaW52ZXJzZSQxNihwKSB7XG5cblx0ICB2YXIgeCA9IHAueDtcblx0ICB2YXIgeSA9IHAueTtcblxuXHQgIHAueCA9IGFkanVzdF9sb24odGhpcy5sb25nMCArICgoeCAtIHRoaXMueDApIC8gKHRoaXMuYSAqIHRoaXMucmMpKSk7XG5cdCAgcC55ID0gYWRqdXN0X2xhdCh0aGlzLmxhdDAgKyAoKHkgLSB0aGlzLnkwKSAvICh0aGlzLmEpKSk7XG5cdCAgcmV0dXJuIHA7XG5cdH1cblxuXHR2YXIgbmFtZXMkMTggPSBbXCJFcXVpcmVjdGFuZ3VsYXJcIiwgXCJFcXVpZGlzdGFudF9DeWxpbmRyaWNhbFwiLCBcImVxY1wiXTtcblx0dmFyIGVxYyA9IHtcblx0ICBpbml0OiBpbml0JDE3LFxuXHQgIGZvcndhcmQ6IGZvcndhcmQkMTYsXG5cdCAgaW52ZXJzZTogaW52ZXJzZSQxNixcblx0ICBuYW1lczogbmFtZXMkMThcblx0fTtcblxuXHR2YXIgTUFYX0lURVIkMiA9IDIwO1xuXG5cdGZ1bmN0aW9uIGluaXQkMTgoKSB7XG5cdCAgLyogUGxhY2UgcGFyYW1ldGVycyBpbiBzdGF0aWMgc3RvcmFnZSBmb3IgY29tbW9uIHVzZVxuXHQgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblx0ICB0aGlzLnRlbXAgPSB0aGlzLmIgLyB0aGlzLmE7XG5cdCAgdGhpcy5lcyA9IDEgLSBNYXRoLnBvdyh0aGlzLnRlbXAsIDIpOyAvLyBkZXZhaXQgZXRyZSBkYW5zIHRtZXJjLmpzIG1haXMgbiB5IGVzdCBwYXMgZG9uYyBqZSBjb21tZW50ZSBzaW5vbiByZXRvdXIgZGUgdmFsZXVycyBudWxsZXNcblx0ICB0aGlzLmUgPSBNYXRoLnNxcnQodGhpcy5lcyk7XG5cdCAgdGhpcy5lMCA9IGUwZm4odGhpcy5lcyk7XG5cdCAgdGhpcy5lMSA9IGUxZm4odGhpcy5lcyk7XG5cdCAgdGhpcy5lMiA9IGUyZm4odGhpcy5lcyk7XG5cdCAgdGhpcy5lMyA9IGUzZm4odGhpcy5lcyk7XG5cdCAgdGhpcy5tbDAgPSB0aGlzLmEgKiBtbGZuKHRoaXMuZTAsIHRoaXMuZTEsIHRoaXMuZTIsIHRoaXMuZTMsIHRoaXMubGF0MCk7IC8vc2kgcXVlIGRlcyB6ZXJvcyBsZSBjYWxjdWwgbmUgc2UgZmFpdCBwYXNcblx0fVxuXG5cdC8qIFBvbHljb25pYyBmb3J3YXJkIGVxdWF0aW9ucy0tbWFwcGluZyBsYXQsbG9uZyB0byB4LHlcblx0ICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cdGZ1bmN0aW9uIGZvcndhcmQkMTcocCkge1xuXHQgIHZhciBsb24gPSBwLng7XG5cdCAgdmFyIGxhdCA9IHAueTtcblx0ICB2YXIgeCwgeSwgZWw7XG5cdCAgdmFyIGRsb24gPSBhZGp1c3RfbG9uKGxvbiAtIHRoaXMubG9uZzApO1xuXHQgIGVsID0gZGxvbiAqIE1hdGguc2luKGxhdCk7XG5cdCAgaWYgKHRoaXMuc3BoZXJlKSB7XG5cdCAgICBpZiAoTWF0aC5hYnMobGF0KSA8PSBFUFNMTikge1xuXHQgICAgICB4ID0gdGhpcy5hICogZGxvbjtcblx0ICAgICAgeSA9IC0xICogdGhpcy5hICogdGhpcy5sYXQwO1xuXHQgICAgfVxuXHQgICAgZWxzZSB7XG5cdCAgICAgIHggPSB0aGlzLmEgKiBNYXRoLnNpbihlbCkgLyBNYXRoLnRhbihsYXQpO1xuXHQgICAgICB5ID0gdGhpcy5hICogKGFkanVzdF9sYXQobGF0IC0gdGhpcy5sYXQwKSArICgxIC0gTWF0aC5jb3MoZWwpKSAvIE1hdGgudGFuKGxhdCkpO1xuXHQgICAgfVxuXHQgIH1cblx0ICBlbHNlIHtcblx0ICAgIGlmIChNYXRoLmFicyhsYXQpIDw9IEVQU0xOKSB7XG5cdCAgICAgIHggPSB0aGlzLmEgKiBkbG9uO1xuXHQgICAgICB5ID0gLTEgKiB0aGlzLm1sMDtcblx0ICAgIH1cblx0ICAgIGVsc2Uge1xuXHQgICAgICB2YXIgbmwgPSBnTih0aGlzLmEsIHRoaXMuZSwgTWF0aC5zaW4obGF0KSkgLyBNYXRoLnRhbihsYXQpO1xuXHQgICAgICB4ID0gbmwgKiBNYXRoLnNpbihlbCk7XG5cdCAgICAgIHkgPSB0aGlzLmEgKiBtbGZuKHRoaXMuZTAsIHRoaXMuZTEsIHRoaXMuZTIsIHRoaXMuZTMsIGxhdCkgLSB0aGlzLm1sMCArIG5sICogKDEgLSBNYXRoLmNvcyhlbCkpO1xuXHQgICAgfVxuXG5cdCAgfVxuXHQgIHAueCA9IHggKyB0aGlzLngwO1xuXHQgIHAueSA9IHkgKyB0aGlzLnkwO1xuXHQgIHJldHVybiBwO1xuXHR9XG5cblx0LyogSW52ZXJzZSBlcXVhdGlvbnNcblx0ICAtLS0tLS0tLS0tLS0tLS0tLSovXG5cdGZ1bmN0aW9uIGludmVyc2UkMTcocCkge1xuXHQgIHZhciBsb24sIGxhdCwgeCwgeSwgaTtcblx0ICB2YXIgYWwsIGJsO1xuXHQgIHZhciBwaGksIGRwaGk7XG5cdCAgeCA9IHAueCAtIHRoaXMueDA7XG5cdCAgeSA9IHAueSAtIHRoaXMueTA7XG5cblx0ICBpZiAodGhpcy5zcGhlcmUpIHtcblx0ICAgIGlmIChNYXRoLmFicyh5ICsgdGhpcy5hICogdGhpcy5sYXQwKSA8PSBFUFNMTikge1xuXHQgICAgICBsb24gPSBhZGp1c3RfbG9uKHggLyB0aGlzLmEgKyB0aGlzLmxvbmcwKTtcblx0ICAgICAgbGF0ID0gMDtcblx0ICAgIH1cblx0ICAgIGVsc2Uge1xuXHQgICAgICBhbCA9IHRoaXMubGF0MCArIHkgLyB0aGlzLmE7XG5cdCAgICAgIGJsID0geCAqIHggLyB0aGlzLmEgLyB0aGlzLmEgKyBhbCAqIGFsO1xuXHQgICAgICBwaGkgPSBhbDtcblx0ICAgICAgdmFyIHRhbnBoaTtcblx0ICAgICAgZm9yIChpID0gTUFYX0lURVIkMjsgaTsgLS1pKSB7XG5cdCAgICAgICAgdGFucGhpID0gTWF0aC50YW4ocGhpKTtcblx0ICAgICAgICBkcGhpID0gLTEgKiAoYWwgKiAocGhpICogdGFucGhpICsgMSkgLSBwaGkgLSAwLjUgKiAocGhpICogcGhpICsgYmwpICogdGFucGhpKSAvICgocGhpIC0gYWwpIC8gdGFucGhpIC0gMSk7XG5cdCAgICAgICAgcGhpICs9IGRwaGk7XG5cdCAgICAgICAgaWYgKE1hdGguYWJzKGRwaGkpIDw9IEVQU0xOKSB7XG5cdCAgICAgICAgICBsYXQgPSBwaGk7XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cdCAgICAgIH1cblx0ICAgICAgbG9uID0gYWRqdXN0X2xvbih0aGlzLmxvbmcwICsgKE1hdGguYXNpbih4ICogTWF0aC50YW4ocGhpKSAvIHRoaXMuYSkpIC8gTWF0aC5zaW4obGF0KSk7XG5cdCAgICB9XG5cdCAgfVxuXHQgIGVsc2Uge1xuXHQgICAgaWYgKE1hdGguYWJzKHkgKyB0aGlzLm1sMCkgPD0gRVBTTE4pIHtcblx0ICAgICAgbGF0ID0gMDtcblx0ICAgICAgbG9uID0gYWRqdXN0X2xvbih0aGlzLmxvbmcwICsgeCAvIHRoaXMuYSk7XG5cdCAgICB9XG5cdCAgICBlbHNlIHtcblxuXHQgICAgICBhbCA9ICh0aGlzLm1sMCArIHkpIC8gdGhpcy5hO1xuXHQgICAgICBibCA9IHggKiB4IC8gdGhpcy5hIC8gdGhpcy5hICsgYWwgKiBhbDtcblx0ICAgICAgcGhpID0gYWw7XG5cdCAgICAgIHZhciBjbCwgbWxuLCBtbG5wLCBtYTtcblx0ICAgICAgdmFyIGNvbjtcblx0ICAgICAgZm9yIChpID0gTUFYX0lURVIkMjsgaTsgLS1pKSB7XG5cdCAgICAgICAgY29uID0gdGhpcy5lICogTWF0aC5zaW4ocGhpKTtcblx0ICAgICAgICBjbCA9IE1hdGguc3FydCgxIC0gY29uICogY29uKSAqIE1hdGgudGFuKHBoaSk7XG5cdCAgICAgICAgbWxuID0gdGhpcy5hICogbWxmbih0aGlzLmUwLCB0aGlzLmUxLCB0aGlzLmUyLCB0aGlzLmUzLCBwaGkpO1xuXHQgICAgICAgIG1sbnAgPSB0aGlzLmUwIC0gMiAqIHRoaXMuZTEgKiBNYXRoLmNvcygyICogcGhpKSArIDQgKiB0aGlzLmUyICogTWF0aC5jb3MoNCAqIHBoaSkgLSA2ICogdGhpcy5lMyAqIE1hdGguY29zKDYgKiBwaGkpO1xuXHQgICAgICAgIG1hID0gbWxuIC8gdGhpcy5hO1xuXHQgICAgICAgIGRwaGkgPSAoYWwgKiAoY2wgKiBtYSArIDEpIC0gbWEgLSAwLjUgKiBjbCAqIChtYSAqIG1hICsgYmwpKSAvICh0aGlzLmVzICogTWF0aC5zaW4oMiAqIHBoaSkgKiAobWEgKiBtYSArIGJsIC0gMiAqIGFsICogbWEpIC8gKDQgKiBjbCkgKyAoYWwgLSBtYSkgKiAoY2wgKiBtbG5wIC0gMiAvIE1hdGguc2luKDIgKiBwaGkpKSAtIG1sbnApO1xuXHQgICAgICAgIHBoaSAtPSBkcGhpO1xuXHQgICAgICAgIGlmIChNYXRoLmFicyhkcGhpKSA8PSBFUFNMTikge1xuXHQgICAgICAgICAgbGF0ID0gcGhpO1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXHQgICAgICB9XG5cblx0ICAgICAgLy9sYXQ9cGhpNHoodGhpcy5lLHRoaXMuZTAsdGhpcy5lMSx0aGlzLmUyLHRoaXMuZTMsYWwsYmwsMCwwKTtcblx0ICAgICAgY2wgPSBNYXRoLnNxcnQoMSAtIHRoaXMuZXMgKiBNYXRoLnBvdyhNYXRoLnNpbihsYXQpLCAyKSkgKiBNYXRoLnRhbihsYXQpO1xuXHQgICAgICBsb24gPSBhZGp1c3RfbG9uKHRoaXMubG9uZzAgKyBNYXRoLmFzaW4oeCAqIGNsIC8gdGhpcy5hKSAvIE1hdGguc2luKGxhdCkpO1xuXHQgICAgfVxuXHQgIH1cblxuXHQgIHAueCA9IGxvbjtcblx0ICBwLnkgPSBsYXQ7XG5cdCAgcmV0dXJuIHA7XG5cdH1cblxuXHR2YXIgbmFtZXMkMTkgPSBbXCJQb2x5Y29uaWNcIiwgXCJwb2x5XCJdO1xuXHR2YXIgcG9seSA9IHtcblx0ICBpbml0OiBpbml0JDE4LFxuXHQgIGZvcndhcmQ6IGZvcndhcmQkMTcsXG5cdCAgaW52ZXJzZTogaW52ZXJzZSQxNyxcblx0ICBuYW1lczogbmFtZXMkMTlcblx0fTtcblxuXHQvKlxuXHQgIHJlZmVyZW5jZVxuXHQgICAgRGVwYXJ0bWVudCBvZiBMYW5kIGFuZCBTdXJ2ZXkgVGVjaG5pY2FsIENpcmN1bGFyIDE5NzMvMzJcblx0ICAgICAgaHR0cDovL3d3dy5saW56LmdvdnQubnovZG9jcy9taXNjZWxsYW5lb3VzL256LW1hcC1kZWZpbml0aW9uLnBkZlxuXHQgICAgT1NHIFRlY2huaWNhbCBSZXBvcnQgNC4xXG5cdCAgICAgIGh0dHA6Ly93d3cubGluei5nb3Z0Lm56L2RvY3MvbWlzY2VsbGFuZW91cy9uem1nLnBkZlxuXHQgICovXG5cblx0LyoqXG5cdCAqIGl0ZXJhdGlvbnM6IE51bWJlciBvZiBpdGVyYXRpb25zIHRvIHJlZmluZSBpbnZlcnNlIHRyYW5zZm9ybS5cblx0ICogICAgIDAgLT4ga20gYWNjdXJhY3lcblx0ICogICAgIDEgLT4gbSBhY2N1cmFjeSAtLSBzdWl0YWJsZSBmb3IgbW9zdCBtYXBwaW5nIGFwcGxpY2F0aW9uc1xuXHQgKiAgICAgMiAtPiBtbSBhY2N1cmFjeVxuXHQgKi9cblxuXG5cdGZ1bmN0aW9uIGluaXQkMTkoKSB7XG5cdCAgdGhpcy5BID0gW107XG5cdCAgdGhpcy5BWzFdID0gMC42Mzk5MTc1MDczO1xuXHQgIHRoaXMuQVsyXSA9IC0wLjEzNTg3OTc2MTM7XG5cdCAgdGhpcy5BWzNdID0gMC4wNjMyOTQ0MDk7XG5cdCAgdGhpcy5BWzRdID0gLTAuMDI1MjY4NTM7XG5cdCAgdGhpcy5BWzVdID0gMC4wMTE3ODc5O1xuXHQgIHRoaXMuQVs2XSA9IC0wLjAwNTUxNjE7XG5cdCAgdGhpcy5BWzddID0gMC4wMDI2OTA2O1xuXHQgIHRoaXMuQVs4XSA9IC0wLjAwMTMzMztcblx0ICB0aGlzLkFbOV0gPSAwLjAwMDY3O1xuXHQgIHRoaXMuQVsxMF0gPSAtMC4wMDAzNDtcblxuXHQgIHRoaXMuQl9yZSA9IFtdO1xuXHQgIHRoaXMuQl9pbSA9IFtdO1xuXHQgIHRoaXMuQl9yZVsxXSA9IDAuNzU1Nzg1MzIyODtcblx0ICB0aGlzLkJfaW1bMV0gPSAwO1xuXHQgIHRoaXMuQl9yZVsyXSA9IDAuMjQ5MjA0NjQ2O1xuXHQgIHRoaXMuQl9pbVsyXSA9IDAuMDAzMzcxNTA3O1xuXHQgIHRoaXMuQl9yZVszXSA9IC0wLjAwMTU0MTczOTtcblx0ICB0aGlzLkJfaW1bM10gPSAwLjA0MTA1ODU2MDtcblx0ICB0aGlzLkJfcmVbNF0gPSAtMC4xMDE2MjkwNztcblx0ICB0aGlzLkJfaW1bNF0gPSAwLjAxNzI3NjA5O1xuXHQgIHRoaXMuQl9yZVs1XSA9IC0wLjI2NjIzNDg5O1xuXHQgIHRoaXMuQl9pbVs1XSA9IC0wLjM2MjQ5MjE4O1xuXHQgIHRoaXMuQl9yZVs2XSA9IC0wLjY4NzA5ODM7XG5cdCAgdGhpcy5CX2ltWzZdID0gLTEuMTY1MTk2NztcblxuXHQgIHRoaXMuQ19yZSA9IFtdO1xuXHQgIHRoaXMuQ19pbSA9IFtdO1xuXHQgIHRoaXMuQ19yZVsxXSA9IDEuMzIzMTI3MDQzOTtcblx0ICB0aGlzLkNfaW1bMV0gPSAwO1xuXHQgIHRoaXMuQ19yZVsyXSA9IC0wLjU3NzI0NTc4OTtcblx0ICB0aGlzLkNfaW1bMl0gPSAtMC4wMDc4MDk1OTg7XG5cdCAgdGhpcy5DX3JlWzNdID0gMC41MDgzMDc1MTM7XG5cdCAgdGhpcy5DX2ltWzNdID0gLTAuMTEyMjA4OTUyO1xuXHQgIHRoaXMuQ19yZVs0XSA9IC0wLjE1MDk0NzYyO1xuXHQgIHRoaXMuQ19pbVs0XSA9IDAuMTgyMDA2MDI7XG5cdCAgdGhpcy5DX3JlWzVdID0gMS4wMTQxODE3OTtcblx0ICB0aGlzLkNfaW1bNV0gPSAxLjY0NDk3Njk2O1xuXHQgIHRoaXMuQ19yZVs2XSA9IDEuOTY2MDU0OTtcblx0ICB0aGlzLkNfaW1bNl0gPSAyLjUxMjc2NDU7XG5cblx0ICB0aGlzLkQgPSBbXTtcblx0ICB0aGlzLkRbMV0gPSAxLjU2MjcwMTQyNDM7XG5cdCAgdGhpcy5EWzJdID0gMC41MTg1NDA2Mzk4O1xuXHQgIHRoaXMuRFszXSA9IC0wLjAzMzMzMDk4O1xuXHQgIHRoaXMuRFs0XSA9IC0wLjEwNTI5MDY7XG5cdCAgdGhpcy5EWzVdID0gLTAuMDM2ODU5NDtcblx0ICB0aGlzLkRbNl0gPSAwLjAwNzMxNztcblx0ICB0aGlzLkRbN10gPSAwLjAxMjIwO1xuXHQgIHRoaXMuRFs4XSA9IDAuMDAzOTQ7XG5cdCAgdGhpcy5EWzldID0gLTAuMDAxMztcblx0fVxuXG5cdC8qKlxuXHQgICAgTmV3IFplYWxhbmQgTWFwIEdyaWQgRm9yd2FyZCAgLSBsb25nL2xhdCB0byB4L3lcblx0ICAgIGxvbmcvbGF0IGluIHJhZGlhbnNcblx0ICAqL1xuXHRmdW5jdGlvbiBmb3J3YXJkJDE4KHApIHtcblx0ICB2YXIgbjtcblx0ICB2YXIgbG9uID0gcC54O1xuXHQgIHZhciBsYXQgPSBwLnk7XG5cblx0ICB2YXIgZGVsdGFfbGF0ID0gbGF0IC0gdGhpcy5sYXQwO1xuXHQgIHZhciBkZWx0YV9sb24gPSBsb24gLSB0aGlzLmxvbmcwO1xuXG5cdCAgLy8gMS4gQ2FsY3VsYXRlIGRfcGhpIGFuZCBkX3BzaSAgICAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFuZCBkX2xhbWJkYVxuXHQgIC8vIEZvciB0aGlzIGFsZ29yaXRobSwgZGVsdGFfbGF0aXR1ZGUgaXMgaW4gc2Vjb25kcyBvZiBhcmMgeCAxMC01LCBzbyB3ZSBuZWVkIHRvIHNjYWxlIHRvIHRob3NlIHVuaXRzLiBMb25naXR1ZGUgaXMgcmFkaWFucy5cblx0ICB2YXIgZF9waGkgPSBkZWx0YV9sYXQgLyBTRUNfVE9fUkFEICogMUUtNTtcblx0ICB2YXIgZF9sYW1iZGEgPSBkZWx0YV9sb247XG5cdCAgdmFyIGRfcGhpX24gPSAxOyAvLyBkX3BoaV4wXG5cblx0ICB2YXIgZF9wc2kgPSAwO1xuXHQgIGZvciAobiA9IDE7IG4gPD0gMTA7IG4rKykge1xuXHQgICAgZF9waGlfbiA9IGRfcGhpX24gKiBkX3BoaTtcblx0ICAgIGRfcHNpID0gZF9wc2kgKyB0aGlzLkFbbl0gKiBkX3BoaV9uO1xuXHQgIH1cblxuXHQgIC8vIDIuIENhbGN1bGF0ZSB0aGV0YVxuXHQgIHZhciB0aF9yZSA9IGRfcHNpO1xuXHQgIHZhciB0aF9pbSA9IGRfbGFtYmRhO1xuXG5cdCAgLy8gMy4gQ2FsY3VsYXRlIHpcblx0ICB2YXIgdGhfbl9yZSA9IDE7XG5cdCAgdmFyIHRoX25faW0gPSAwOyAvLyB0aGV0YV4wXG5cdCAgdmFyIHRoX25fcmUxO1xuXHQgIHZhciB0aF9uX2ltMTtcblxuXHQgIHZhciB6X3JlID0gMDtcblx0ICB2YXIgel9pbSA9IDA7XG5cdCAgZm9yIChuID0gMTsgbiA8PSA2OyBuKyspIHtcblx0ICAgIHRoX25fcmUxID0gdGhfbl9yZSAqIHRoX3JlIC0gdGhfbl9pbSAqIHRoX2ltO1xuXHQgICAgdGhfbl9pbTEgPSB0aF9uX2ltICogdGhfcmUgKyB0aF9uX3JlICogdGhfaW07XG5cdCAgICB0aF9uX3JlID0gdGhfbl9yZTE7XG5cdCAgICB0aF9uX2ltID0gdGhfbl9pbTE7XG5cdCAgICB6X3JlID0gel9yZSArIHRoaXMuQl9yZVtuXSAqIHRoX25fcmUgLSB0aGlzLkJfaW1bbl0gKiB0aF9uX2ltO1xuXHQgICAgel9pbSA9IHpfaW0gKyB0aGlzLkJfaW1bbl0gKiB0aF9uX3JlICsgdGhpcy5CX3JlW25dICogdGhfbl9pbTtcblx0ICB9XG5cblx0ICAvLyA0LiBDYWxjdWxhdGUgZWFzdGluZyBhbmQgbm9ydGhpbmdcblx0ICBwLnggPSAoel9pbSAqIHRoaXMuYSkgKyB0aGlzLngwO1xuXHQgIHAueSA9ICh6X3JlICogdGhpcy5hKSArIHRoaXMueTA7XG5cblx0ICByZXR1cm4gcDtcblx0fVxuXG5cdC8qKlxuXHQgICAgTmV3IFplYWxhbmQgTWFwIEdyaWQgSW52ZXJzZSAgLSAgeC95IHRvIGxvbmcvbGF0XG5cdCAgKi9cblx0ZnVuY3Rpb24gaW52ZXJzZSQxOChwKSB7XG5cdCAgdmFyIG47XG5cdCAgdmFyIHggPSBwLng7XG5cdCAgdmFyIHkgPSBwLnk7XG5cblx0ICB2YXIgZGVsdGFfeCA9IHggLSB0aGlzLngwO1xuXHQgIHZhciBkZWx0YV95ID0geSAtIHRoaXMueTA7XG5cblx0ICAvLyAxLiBDYWxjdWxhdGUgelxuXHQgIHZhciB6X3JlID0gZGVsdGFfeSAvIHRoaXMuYTtcblx0ICB2YXIgel9pbSA9IGRlbHRhX3ggLyB0aGlzLmE7XG5cblx0ICAvLyAyYS4gQ2FsY3VsYXRlIHRoZXRhIC0gZmlyc3QgYXBwcm94aW1hdGlvbiBnaXZlcyBrbSBhY2N1cmFjeVxuXHQgIHZhciB6X25fcmUgPSAxO1xuXHQgIHZhciB6X25faW0gPSAwOyAvLyB6XjBcblx0ICB2YXIgel9uX3JlMTtcblx0ICB2YXIgel9uX2ltMTtcblxuXHQgIHZhciB0aF9yZSA9IDA7XG5cdCAgdmFyIHRoX2ltID0gMDtcblx0ICBmb3IgKG4gPSAxOyBuIDw9IDY7IG4rKykge1xuXHQgICAgel9uX3JlMSA9IHpfbl9yZSAqIHpfcmUgLSB6X25faW0gKiB6X2ltO1xuXHQgICAgel9uX2ltMSA9IHpfbl9pbSAqIHpfcmUgKyB6X25fcmUgKiB6X2ltO1xuXHQgICAgel9uX3JlID0gel9uX3JlMTtcblx0ICAgIHpfbl9pbSA9IHpfbl9pbTE7XG5cdCAgICB0aF9yZSA9IHRoX3JlICsgdGhpcy5DX3JlW25dICogel9uX3JlIC0gdGhpcy5DX2ltW25dICogel9uX2ltO1xuXHQgICAgdGhfaW0gPSB0aF9pbSArIHRoaXMuQ19pbVtuXSAqIHpfbl9yZSArIHRoaXMuQ19yZVtuXSAqIHpfbl9pbTtcblx0ICB9XG5cblx0ICAvLyAyYi4gSXRlcmF0ZSB0byByZWZpbmUgdGhlIGFjY3VyYWN5IG9mIHRoZSBjYWxjdWxhdGlvblxuXHQgIC8vICAgICAgICAwIGl0ZXJhdGlvbnMgZ2l2ZXMga20gYWNjdXJhY3lcblx0ICAvLyAgICAgICAgMSBpdGVyYXRpb24gZ2l2ZXMgbSBhY2N1cmFjeSAtLSBnb29kIGVub3VnaCBmb3IgbW9zdCBtYXBwaW5nIGFwcGxpY2F0aW9uc1xuXHQgIC8vICAgICAgICAyIGl0ZXJhdGlvbnMgYml2ZXMgbW0gYWNjdXJhY3lcblx0ICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuaXRlcmF0aW9uczsgaSsrKSB7XG5cdCAgICB2YXIgdGhfbl9yZSA9IHRoX3JlO1xuXHQgICAgdmFyIHRoX25faW0gPSB0aF9pbTtcblx0ICAgIHZhciB0aF9uX3JlMTtcblx0ICAgIHZhciB0aF9uX2ltMTtcblxuXHQgICAgdmFyIG51bV9yZSA9IHpfcmU7XG5cdCAgICB2YXIgbnVtX2ltID0gel9pbTtcblx0ICAgIGZvciAobiA9IDI7IG4gPD0gNjsgbisrKSB7XG5cdCAgICAgIHRoX25fcmUxID0gdGhfbl9yZSAqIHRoX3JlIC0gdGhfbl9pbSAqIHRoX2ltO1xuXHQgICAgICB0aF9uX2ltMSA9IHRoX25faW0gKiB0aF9yZSArIHRoX25fcmUgKiB0aF9pbTtcblx0ICAgICAgdGhfbl9yZSA9IHRoX25fcmUxO1xuXHQgICAgICB0aF9uX2ltID0gdGhfbl9pbTE7XG5cdCAgICAgIG51bV9yZSA9IG51bV9yZSArIChuIC0gMSkgKiAodGhpcy5CX3JlW25dICogdGhfbl9yZSAtIHRoaXMuQl9pbVtuXSAqIHRoX25faW0pO1xuXHQgICAgICBudW1faW0gPSBudW1faW0gKyAobiAtIDEpICogKHRoaXMuQl9pbVtuXSAqIHRoX25fcmUgKyB0aGlzLkJfcmVbbl0gKiB0aF9uX2ltKTtcblx0ICAgIH1cblxuXHQgICAgdGhfbl9yZSA9IDE7XG5cdCAgICB0aF9uX2ltID0gMDtcblx0ICAgIHZhciBkZW5fcmUgPSB0aGlzLkJfcmVbMV07XG5cdCAgICB2YXIgZGVuX2ltID0gdGhpcy5CX2ltWzFdO1xuXHQgICAgZm9yIChuID0gMjsgbiA8PSA2OyBuKyspIHtcblx0ICAgICAgdGhfbl9yZTEgPSB0aF9uX3JlICogdGhfcmUgLSB0aF9uX2ltICogdGhfaW07XG5cdCAgICAgIHRoX25faW0xID0gdGhfbl9pbSAqIHRoX3JlICsgdGhfbl9yZSAqIHRoX2ltO1xuXHQgICAgICB0aF9uX3JlID0gdGhfbl9yZTE7XG5cdCAgICAgIHRoX25faW0gPSB0aF9uX2ltMTtcblx0ICAgICAgZGVuX3JlID0gZGVuX3JlICsgbiAqICh0aGlzLkJfcmVbbl0gKiB0aF9uX3JlIC0gdGhpcy5CX2ltW25dICogdGhfbl9pbSk7XG5cdCAgICAgIGRlbl9pbSA9IGRlbl9pbSArIG4gKiAodGhpcy5CX2ltW25dICogdGhfbl9yZSArIHRoaXMuQl9yZVtuXSAqIHRoX25faW0pO1xuXHQgICAgfVxuXG5cdCAgICAvLyBDb21wbGV4IGRpdmlzaW9uXG5cdCAgICB2YXIgZGVuMiA9IGRlbl9yZSAqIGRlbl9yZSArIGRlbl9pbSAqIGRlbl9pbTtcblx0ICAgIHRoX3JlID0gKG51bV9yZSAqIGRlbl9yZSArIG51bV9pbSAqIGRlbl9pbSkgLyBkZW4yO1xuXHQgICAgdGhfaW0gPSAobnVtX2ltICogZGVuX3JlIC0gbnVtX3JlICogZGVuX2ltKSAvIGRlbjI7XG5cdCAgfVxuXG5cdCAgLy8gMy4gQ2FsY3VsYXRlIGRfcGhpICAgICAgICAgICAgICAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbmQgZF9sYW1iZGFcblx0ICB2YXIgZF9wc2kgPSB0aF9yZTtcblx0ICB2YXIgZF9sYW1iZGEgPSB0aF9pbTtcblx0ICB2YXIgZF9wc2lfbiA9IDE7IC8vIGRfcHNpXjBcblxuXHQgIHZhciBkX3BoaSA9IDA7XG5cdCAgZm9yIChuID0gMTsgbiA8PSA5OyBuKyspIHtcblx0ICAgIGRfcHNpX24gPSBkX3BzaV9uICogZF9wc2k7XG5cdCAgICBkX3BoaSA9IGRfcGhpICsgdGhpcy5EW25dICogZF9wc2lfbjtcblx0ICB9XG5cblx0ICAvLyA0LiBDYWxjdWxhdGUgbGF0aXR1ZGUgYW5kIGxvbmdpdHVkZVxuXHQgIC8vIGRfcGhpIGlzIGNhbGN1YXRlZCBpbiBzZWNvbmQgb2YgYXJjICogMTBeLTUsIHNvIHdlIG5lZWQgdG8gc2NhbGUgYmFjayB0byByYWRpYW5zLiBkX2xhbWJkYSBpcyBpbiByYWRpYW5zLlxuXHQgIHZhciBsYXQgPSB0aGlzLmxhdDAgKyAoZF9waGkgKiBTRUNfVE9fUkFEICogMUU1KTtcblx0ICB2YXIgbG9uID0gdGhpcy5sb25nMCArIGRfbGFtYmRhO1xuXG5cdCAgcC54ID0gbG9uO1xuXHQgIHAueSA9IGxhdDtcblxuXHQgIHJldHVybiBwO1xuXHR9XG5cblx0dmFyIG5hbWVzJDIwID0gW1wiTmV3X1plYWxhbmRfTWFwX0dyaWRcIiwgXCJuem1nXCJdO1xuXHR2YXIgbnptZyA9IHtcblx0ICBpbml0OiBpbml0JDE5LFxuXHQgIGZvcndhcmQ6IGZvcndhcmQkMTgsXG5cdCAgaW52ZXJzZTogaW52ZXJzZSQxOCxcblx0ICBuYW1lczogbmFtZXMkMjBcblx0fTtcblxuXHQvKlxuXHQgIHJlZmVyZW5jZVxuXHQgICAgXCJOZXcgRXF1YWwtQXJlYSBNYXAgUHJvamVjdGlvbnMgZm9yIE5vbmNpcmN1bGFyIFJlZ2lvbnNcIiwgSm9obiBQLiBTbnlkZXIsXG5cdCAgICBUaGUgQW1lcmljYW4gQ2FydG9ncmFwaGVyLCBWb2wgMTUsIE5vLiA0LCBPY3RvYmVyIDE5ODgsIHBwLiAzNDEtMzU1LlxuXHQgICovXG5cblxuXHQvKiBJbml0aWFsaXplIHRoZSBNaWxsZXIgQ3lsaW5kcmljYWwgcHJvamVjdGlvblxuXHQgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXHRmdW5jdGlvbiBpbml0JDIwKCkge1xuXHQgIC8vbm8tb3Bcblx0fVxuXG5cdC8qIE1pbGxlciBDeWxpbmRyaWNhbCBmb3J3YXJkIGVxdWF0aW9ucy0tbWFwcGluZyBsYXQsbG9uZyB0byB4LHlcblx0ICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cdGZ1bmN0aW9uIGZvcndhcmQkMTkocCkge1xuXHQgIHZhciBsb24gPSBwLng7XG5cdCAgdmFyIGxhdCA9IHAueTtcblx0ICAvKiBGb3J3YXJkIGVxdWF0aW9uc1xuXHQgICAgICAtLS0tLS0tLS0tLS0tLS0tLSovXG5cdCAgdmFyIGRsb24gPSBhZGp1c3RfbG9uKGxvbiAtIHRoaXMubG9uZzApO1xuXHQgIHZhciB4ID0gdGhpcy54MCArIHRoaXMuYSAqIGRsb247XG5cdCAgdmFyIHkgPSB0aGlzLnkwICsgdGhpcy5hICogTWF0aC5sb2coTWF0aC50YW4oKE1hdGguUEkgLyA0KSArIChsYXQgLyAyLjUpKSkgKiAxLjI1O1xuXG5cdCAgcC54ID0geDtcblx0ICBwLnkgPSB5O1xuXHQgIHJldHVybiBwO1xuXHR9XG5cblx0LyogTWlsbGVyIEN5bGluZHJpY2FsIGludmVyc2UgZXF1YXRpb25zLS1tYXBwaW5nIHgseSB0byBsYXQvbG9uZ1xuXHQgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblx0ZnVuY3Rpb24gaW52ZXJzZSQxOShwKSB7XG5cdCAgcC54IC09IHRoaXMueDA7XG5cdCAgcC55IC09IHRoaXMueTA7XG5cblx0ICB2YXIgbG9uID0gYWRqdXN0X2xvbih0aGlzLmxvbmcwICsgcC54IC8gdGhpcy5hKTtcblx0ICB2YXIgbGF0ID0gMi41ICogKE1hdGguYXRhbihNYXRoLmV4cCgwLjggKiBwLnkgLyB0aGlzLmEpKSAtIE1hdGguUEkgLyA0KTtcblxuXHQgIHAueCA9IGxvbjtcblx0ICBwLnkgPSBsYXQ7XG5cdCAgcmV0dXJuIHA7XG5cdH1cblxuXHR2YXIgbmFtZXMkMjEgPSBbXCJNaWxsZXJfQ3lsaW5kcmljYWxcIiwgXCJtaWxsXCJdO1xuXHR2YXIgbWlsbCA9IHtcblx0ICBpbml0OiBpbml0JDIwLFxuXHQgIGZvcndhcmQ6IGZvcndhcmQkMTksXG5cdCAgaW52ZXJzZTogaW52ZXJzZSQxOSxcblx0ICBuYW1lczogbmFtZXMkMjFcblx0fTtcblxuXHR2YXIgTUFYX0lURVIkMyA9IDIwO1xuXHRmdW5jdGlvbiBpbml0JDIxKCkge1xuXHQgIC8qIFBsYWNlIHBhcmFtZXRlcnMgaW4gc3RhdGljIHN0b3JhZ2UgZm9yIGNvbW1vbiB1c2Vcblx0ICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG5cblx0ICBpZiAoIXRoaXMuc3BoZXJlKSB7XG5cdCAgICB0aGlzLmVuID0gcGpfZW5mbih0aGlzLmVzKTtcblx0ICB9XG5cdCAgZWxzZSB7XG5cdCAgICB0aGlzLm4gPSAxO1xuXHQgICAgdGhpcy5tID0gMDtcblx0ICAgIHRoaXMuZXMgPSAwO1xuXHQgICAgdGhpcy5DX3kgPSBNYXRoLnNxcnQoKHRoaXMubSArIDEpIC8gdGhpcy5uKTtcblx0ICAgIHRoaXMuQ194ID0gdGhpcy5DX3kgLyAodGhpcy5tICsgMSk7XG5cdCAgfVxuXG5cdH1cblxuXHQvKiBTaW51c29pZGFsIGZvcndhcmQgZXF1YXRpb25zLS1tYXBwaW5nIGxhdCxsb25nIHRvIHgseVxuXHQgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblx0ZnVuY3Rpb24gZm9yd2FyZCQyMChwKSB7XG5cdCAgdmFyIHgsIHk7XG5cdCAgdmFyIGxvbiA9IHAueDtcblx0ICB2YXIgbGF0ID0gcC55O1xuXHQgIC8qIEZvcndhcmQgZXF1YXRpb25zXG5cdCAgICAtLS0tLS0tLS0tLS0tLS0tLSovXG5cdCAgbG9uID0gYWRqdXN0X2xvbihsb24gLSB0aGlzLmxvbmcwKTtcblxuXHQgIGlmICh0aGlzLnNwaGVyZSkge1xuXHQgICAgaWYgKCF0aGlzLm0pIHtcblx0ICAgICAgbGF0ID0gdGhpcy5uICE9PSAxID8gTWF0aC5hc2luKHRoaXMubiAqIE1hdGguc2luKGxhdCkpIDogbGF0O1xuXHQgICAgfVxuXHQgICAgZWxzZSB7XG5cdCAgICAgIHZhciBrID0gdGhpcy5uICogTWF0aC5zaW4obGF0KTtcblx0ICAgICAgZm9yICh2YXIgaSA9IE1BWF9JVEVSJDM7IGk7IC0taSkge1xuXHQgICAgICAgIHZhciBWID0gKHRoaXMubSAqIGxhdCArIE1hdGguc2luKGxhdCkgLSBrKSAvICh0aGlzLm0gKyBNYXRoLmNvcyhsYXQpKTtcblx0ICAgICAgICBsYXQgLT0gVjtcblx0ICAgICAgICBpZiAoTWF0aC5hYnMoVikgPCBFUFNMTikge1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgICB4ID0gdGhpcy5hICogdGhpcy5DX3ggKiBsb24gKiAodGhpcy5tICsgTWF0aC5jb3MobGF0KSk7XG5cdCAgICB5ID0gdGhpcy5hICogdGhpcy5DX3kgKiBsYXQ7XG5cblx0ICB9XG5cdCAgZWxzZSB7XG5cblx0ICAgIHZhciBzID0gTWF0aC5zaW4obGF0KTtcblx0ICAgIHZhciBjID0gTWF0aC5jb3MobGF0KTtcblx0ICAgIHkgPSB0aGlzLmEgKiBwal9tbGZuKGxhdCwgcywgYywgdGhpcy5lbik7XG5cdCAgICB4ID0gdGhpcy5hICogbG9uICogYyAvIE1hdGguc3FydCgxIC0gdGhpcy5lcyAqIHMgKiBzKTtcblx0ICB9XG5cblx0ICBwLnggPSB4O1xuXHQgIHAueSA9IHk7XG5cdCAgcmV0dXJuIHA7XG5cdH1cblxuXHRmdW5jdGlvbiBpbnZlcnNlJDIwKHApIHtcblx0ICB2YXIgbGF0LCB0ZW1wLCBsb24sIHM7XG5cblx0ICBwLnggLT0gdGhpcy54MDtcblx0ICBsb24gPSBwLnggLyB0aGlzLmE7XG5cdCAgcC55IC09IHRoaXMueTA7XG5cdCAgbGF0ID0gcC55IC8gdGhpcy5hO1xuXG5cdCAgaWYgKHRoaXMuc3BoZXJlKSB7XG5cdCAgICBsYXQgLz0gdGhpcy5DX3k7XG5cdCAgICBsb24gPSBsb24gLyAodGhpcy5DX3ggKiAodGhpcy5tICsgTWF0aC5jb3MobGF0KSkpO1xuXHQgICAgaWYgKHRoaXMubSkge1xuXHQgICAgICBsYXQgPSBhc2lueigodGhpcy5tICogbGF0ICsgTWF0aC5zaW4obGF0KSkgLyB0aGlzLm4pO1xuXHQgICAgfVxuXHQgICAgZWxzZSBpZiAodGhpcy5uICE9PSAxKSB7XG5cdCAgICAgIGxhdCA9IGFzaW56KE1hdGguc2luKGxhdCkgLyB0aGlzLm4pO1xuXHQgICAgfVxuXHQgICAgbG9uID0gYWRqdXN0X2xvbihsb24gKyB0aGlzLmxvbmcwKTtcblx0ICAgIGxhdCA9IGFkanVzdF9sYXQobGF0KTtcblx0ICB9XG5cdCAgZWxzZSB7XG5cdCAgICBsYXQgPSBwal9pbnZfbWxmbihwLnkgLyB0aGlzLmEsIHRoaXMuZXMsIHRoaXMuZW4pO1xuXHQgICAgcyA9IE1hdGguYWJzKGxhdCk7XG5cdCAgICBpZiAocyA8IEhBTEZfUEkpIHtcblx0ICAgICAgcyA9IE1hdGguc2luKGxhdCk7XG5cdCAgICAgIHRlbXAgPSB0aGlzLmxvbmcwICsgcC54ICogTWF0aC5zcXJ0KDEgLSB0aGlzLmVzICogcyAqIHMpIC8gKHRoaXMuYSAqIE1hdGguY29zKGxhdCkpO1xuXHQgICAgICAvL3RlbXAgPSB0aGlzLmxvbmcwICsgcC54IC8gKHRoaXMuYSAqIE1hdGguY29zKGxhdCkpO1xuXHQgICAgICBsb24gPSBhZGp1c3RfbG9uKHRlbXApO1xuXHQgICAgfVxuXHQgICAgZWxzZSBpZiAoKHMgLSBFUFNMTikgPCBIQUxGX1BJKSB7XG5cdCAgICAgIGxvbiA9IHRoaXMubG9uZzA7XG5cdCAgICB9XG5cdCAgfVxuXHQgIHAueCA9IGxvbjtcblx0ICBwLnkgPSBsYXQ7XG5cdCAgcmV0dXJuIHA7XG5cdH1cblxuXHR2YXIgbmFtZXMkMjIgPSBbXCJTaW51c29pZGFsXCIsIFwic2ludVwiXTtcblx0dmFyIHNpbnUgPSB7XG5cdCAgaW5pdDogaW5pdCQyMSxcblx0ICBmb3J3YXJkOiBmb3J3YXJkJDIwLFxuXHQgIGludmVyc2U6IGludmVyc2UkMjAsXG5cdCAgbmFtZXM6IG5hbWVzJDIyXG5cdH07XG5cblx0ZnVuY3Rpb24gaW5pdCQyMigpIHt9XG5cdC8qIE1vbGx3ZWlkZSBmb3J3YXJkIGVxdWF0aW9ucy0tbWFwcGluZyBsYXQsbG9uZyB0byB4LHlcblx0ICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXHRmdW5jdGlvbiBmb3J3YXJkJDIxKHApIHtcblxuXHQgIC8qIEZvcndhcmQgZXF1YXRpb25zXG5cdCAgICAgIC0tLS0tLS0tLS0tLS0tLS0tKi9cblx0ICB2YXIgbG9uID0gcC54O1xuXHQgIHZhciBsYXQgPSBwLnk7XG5cblx0ICB2YXIgZGVsdGFfbG9uID0gYWRqdXN0X2xvbihsb24gLSB0aGlzLmxvbmcwKTtcblx0ICB2YXIgdGhldGEgPSBsYXQ7XG5cdCAgdmFyIGNvbiA9IE1hdGguUEkgKiBNYXRoLnNpbihsYXQpO1xuXG5cdCAgLyogSXRlcmF0ZSB1c2luZyB0aGUgTmV3dG9uLVJhcGhzb24gbWV0aG9kIHRvIGZpbmQgdGhldGFcblx0ICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXHQgIGZvciAodmFyIGkgPSAwOyB0cnVlOyBpKyspIHtcblx0ICAgIHZhciBkZWx0YV90aGV0YSA9IC0odGhldGEgKyBNYXRoLnNpbih0aGV0YSkgLSBjb24pIC8gKDEgKyBNYXRoLmNvcyh0aGV0YSkpO1xuXHQgICAgdGhldGEgKz0gZGVsdGFfdGhldGE7XG5cdCAgICBpZiAoTWF0aC5hYnMoZGVsdGFfdGhldGEpIDwgRVBTTE4pIHtcblx0ICAgICAgYnJlYWs7XG5cdCAgICB9XG5cdCAgfVxuXHQgIHRoZXRhIC89IDI7XG5cblx0ICAvKiBJZiB0aGUgbGF0aXR1ZGUgaXMgOTAgZGVnLCBmb3JjZSB0aGUgeCBjb29yZGluYXRlIHRvIGJlIFwiMCArIGZhbHNlIGVhc3RpbmdcIlxuXHQgICAgICAgdGhpcyBpcyBkb25lIGhlcmUgYmVjYXVzZSBvZiBwcmVjaXNpb24gcHJvYmxlbXMgd2l0aCBcImNvcyh0aGV0YSlcIlxuXHQgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXHQgIGlmIChNYXRoLlBJIC8gMiAtIE1hdGguYWJzKGxhdCkgPCBFUFNMTikge1xuXHQgICAgZGVsdGFfbG9uID0gMDtcblx0ICB9XG5cdCAgdmFyIHggPSAwLjkwMDMxNjMxNjE1OCAqIHRoaXMuYSAqIGRlbHRhX2xvbiAqIE1hdGguY29zKHRoZXRhKSArIHRoaXMueDA7XG5cdCAgdmFyIHkgPSAxLjQxNDIxMzU2MjM3MzEgKiB0aGlzLmEgKiBNYXRoLnNpbih0aGV0YSkgKyB0aGlzLnkwO1xuXG5cdCAgcC54ID0geDtcblx0ICBwLnkgPSB5O1xuXHQgIHJldHVybiBwO1xuXHR9XG5cblx0ZnVuY3Rpb24gaW52ZXJzZSQyMShwKSB7XG5cdCAgdmFyIHRoZXRhO1xuXHQgIHZhciBhcmc7XG5cblx0ICAvKiBJbnZlcnNlIGVxdWF0aW9uc1xuXHQgICAgICAtLS0tLS0tLS0tLS0tLS0tLSovXG5cdCAgcC54IC09IHRoaXMueDA7XG5cdCAgcC55IC09IHRoaXMueTA7XG5cdCAgYXJnID0gcC55IC8gKDEuNDE0MjEzNTYyMzczMSAqIHRoaXMuYSk7XG5cblx0ICAvKiBCZWNhdXNlIG9mIGRpdmlzaW9uIGJ5IHplcm8gcHJvYmxlbXMsICdhcmcnIGNhbiBub3QgYmUgMS4gIFRoZXJlZm9yZVxuXHQgICAgICAgYSBudW1iZXIgdmVyeSBjbG9zZSB0byBvbmUgaXMgdXNlZCBpbnN0ZWFkLlxuXHQgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cdCAgaWYgKE1hdGguYWJzKGFyZykgPiAwLjk5OTk5OTk5OTk5OSkge1xuXHQgICAgYXJnID0gMC45OTk5OTk5OTk5OTk7XG5cdCAgfVxuXHQgIHRoZXRhID0gTWF0aC5hc2luKGFyZyk7XG5cdCAgdmFyIGxvbiA9IGFkanVzdF9sb24odGhpcy5sb25nMCArIChwLnggLyAoMC45MDAzMTYzMTYxNTggKiB0aGlzLmEgKiBNYXRoLmNvcyh0aGV0YSkpKSk7XG5cdCAgaWYgKGxvbiA8ICgtTWF0aC5QSSkpIHtcblx0ICAgIGxvbiA9IC1NYXRoLlBJO1xuXHQgIH1cblx0ICBpZiAobG9uID4gTWF0aC5QSSkge1xuXHQgICAgbG9uID0gTWF0aC5QSTtcblx0ICB9XG5cdCAgYXJnID0gKDIgKiB0aGV0YSArIE1hdGguc2luKDIgKiB0aGV0YSkpIC8gTWF0aC5QSTtcblx0ICBpZiAoTWF0aC5hYnMoYXJnKSA+IDEpIHtcblx0ICAgIGFyZyA9IDE7XG5cdCAgfVxuXHQgIHZhciBsYXQgPSBNYXRoLmFzaW4oYXJnKTtcblxuXHQgIHAueCA9IGxvbjtcblx0ICBwLnkgPSBsYXQ7XG5cdCAgcmV0dXJuIHA7XG5cdH1cblxuXHR2YXIgbmFtZXMkMjMgPSBbXCJNb2xsd2VpZGVcIiwgXCJtb2xsXCJdO1xuXHR2YXIgbW9sbCA9IHtcblx0ICBpbml0OiBpbml0JDIyLFxuXHQgIGZvcndhcmQ6IGZvcndhcmQkMjEsXG5cdCAgaW52ZXJzZTogaW52ZXJzZSQyMSxcblx0ICBuYW1lczogbmFtZXMkMjNcblx0fTtcblxuXHRmdW5jdGlvbiBpbml0JDIzKCkge1xuXG5cdCAgLyogUGxhY2UgcGFyYW1ldGVycyBpbiBzdGF0aWMgc3RvcmFnZSBmb3IgY29tbW9uIHVzZVxuXHQgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblx0ICAvLyBTdGFuZGFyZCBQYXJhbGxlbHMgY2Fubm90IGJlIGVxdWFsIGFuZCBvbiBvcHBvc2l0ZSBzaWRlcyBvZiB0aGUgZXF1YXRvclxuXHQgIGlmIChNYXRoLmFicyh0aGlzLmxhdDEgKyB0aGlzLmxhdDIpIDwgRVBTTE4pIHtcblx0ICAgIHJldHVybjtcblx0ICB9XG5cdCAgdGhpcy5sYXQyID0gdGhpcy5sYXQyIHx8IHRoaXMubGF0MTtcblx0ICB0aGlzLnRlbXAgPSB0aGlzLmIgLyB0aGlzLmE7XG5cdCAgdGhpcy5lcyA9IDEgLSBNYXRoLnBvdyh0aGlzLnRlbXAsIDIpO1xuXHQgIHRoaXMuZSA9IE1hdGguc3FydCh0aGlzLmVzKTtcblx0ICB0aGlzLmUwID0gZTBmbih0aGlzLmVzKTtcblx0ICB0aGlzLmUxID0gZTFmbih0aGlzLmVzKTtcblx0ICB0aGlzLmUyID0gZTJmbih0aGlzLmVzKTtcblx0ICB0aGlzLmUzID0gZTNmbih0aGlzLmVzKTtcblxuXHQgIHRoaXMuc2lucGhpID0gTWF0aC5zaW4odGhpcy5sYXQxKTtcblx0ICB0aGlzLmNvc3BoaSA9IE1hdGguY29zKHRoaXMubGF0MSk7XG5cblx0ICB0aGlzLm1zMSA9IG1zZm56KHRoaXMuZSwgdGhpcy5zaW5waGksIHRoaXMuY29zcGhpKTtcblx0ICB0aGlzLm1sMSA9IG1sZm4odGhpcy5lMCwgdGhpcy5lMSwgdGhpcy5lMiwgdGhpcy5lMywgdGhpcy5sYXQxKTtcblxuXHQgIGlmIChNYXRoLmFicyh0aGlzLmxhdDEgLSB0aGlzLmxhdDIpIDwgRVBTTE4pIHtcblx0ICAgIHRoaXMubnMgPSB0aGlzLnNpbnBoaTtcblx0ICB9XG5cdCAgZWxzZSB7XG5cdCAgICB0aGlzLnNpbnBoaSA9IE1hdGguc2luKHRoaXMubGF0Mik7XG5cdCAgICB0aGlzLmNvc3BoaSA9IE1hdGguY29zKHRoaXMubGF0Mik7XG5cdCAgICB0aGlzLm1zMiA9IG1zZm56KHRoaXMuZSwgdGhpcy5zaW5waGksIHRoaXMuY29zcGhpKTtcblx0ICAgIHRoaXMubWwyID0gbWxmbih0aGlzLmUwLCB0aGlzLmUxLCB0aGlzLmUyLCB0aGlzLmUzLCB0aGlzLmxhdDIpO1xuXHQgICAgdGhpcy5ucyA9ICh0aGlzLm1zMSAtIHRoaXMubXMyKSAvICh0aGlzLm1sMiAtIHRoaXMubWwxKTtcblx0ICB9XG5cdCAgdGhpcy5nID0gdGhpcy5tbDEgKyB0aGlzLm1zMSAvIHRoaXMubnM7XG5cdCAgdGhpcy5tbDAgPSBtbGZuKHRoaXMuZTAsIHRoaXMuZTEsIHRoaXMuZTIsIHRoaXMuZTMsIHRoaXMubGF0MCk7XG5cdCAgdGhpcy5yaCA9IHRoaXMuYSAqICh0aGlzLmcgLSB0aGlzLm1sMCk7XG5cdH1cblxuXHQvKiBFcXVpZGlzdGFudCBDb25pYyBmb3J3YXJkIGVxdWF0aW9ucy0tbWFwcGluZyBsYXQsbG9uZyB0byB4LHlcblx0ICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cdGZ1bmN0aW9uIGZvcndhcmQkMjIocCkge1xuXHQgIHZhciBsb24gPSBwLng7XG5cdCAgdmFyIGxhdCA9IHAueTtcblx0ICB2YXIgcmgxO1xuXG5cdCAgLyogRm9yd2FyZCBlcXVhdGlvbnNcblx0ICAgICAgLS0tLS0tLS0tLS0tLS0tLS0qL1xuXHQgIGlmICh0aGlzLnNwaGVyZSkge1xuXHQgICAgcmgxID0gdGhpcy5hICogKHRoaXMuZyAtIGxhdCk7XG5cdCAgfVxuXHQgIGVsc2Uge1xuXHQgICAgdmFyIG1sID0gbWxmbih0aGlzLmUwLCB0aGlzLmUxLCB0aGlzLmUyLCB0aGlzLmUzLCBsYXQpO1xuXHQgICAgcmgxID0gdGhpcy5hICogKHRoaXMuZyAtIG1sKTtcblx0ICB9XG5cdCAgdmFyIHRoZXRhID0gdGhpcy5ucyAqIGFkanVzdF9sb24obG9uIC0gdGhpcy5sb25nMCk7XG5cdCAgdmFyIHggPSB0aGlzLngwICsgcmgxICogTWF0aC5zaW4odGhldGEpO1xuXHQgIHZhciB5ID0gdGhpcy55MCArIHRoaXMucmggLSByaDEgKiBNYXRoLmNvcyh0aGV0YSk7XG5cdCAgcC54ID0geDtcblx0ICBwLnkgPSB5O1xuXHQgIHJldHVybiBwO1xuXHR9XG5cblx0LyogSW52ZXJzZSBlcXVhdGlvbnNcblx0ICAtLS0tLS0tLS0tLS0tLS0tLSovXG5cdGZ1bmN0aW9uIGludmVyc2UkMjIocCkge1xuXHQgIHAueCAtPSB0aGlzLngwO1xuXHQgIHAueSA9IHRoaXMucmggLSBwLnkgKyB0aGlzLnkwO1xuXHQgIHZhciBjb24sIHJoMSwgbGF0LCBsb247XG5cdCAgaWYgKHRoaXMubnMgPj0gMCkge1xuXHQgICAgcmgxID0gTWF0aC5zcXJ0KHAueCAqIHAueCArIHAueSAqIHAueSk7XG5cdCAgICBjb24gPSAxO1xuXHQgIH1cblx0ICBlbHNlIHtcblx0ICAgIHJoMSA9IC1NYXRoLnNxcnQocC54ICogcC54ICsgcC55ICogcC55KTtcblx0ICAgIGNvbiA9IC0xO1xuXHQgIH1cblx0ICB2YXIgdGhldGEgPSAwO1xuXHQgIGlmIChyaDEgIT09IDApIHtcblx0ICAgIHRoZXRhID0gTWF0aC5hdGFuMihjb24gKiBwLngsIGNvbiAqIHAueSk7XG5cdCAgfVxuXG5cdCAgaWYgKHRoaXMuc3BoZXJlKSB7XG5cdCAgICBsb24gPSBhZGp1c3RfbG9uKHRoaXMubG9uZzAgKyB0aGV0YSAvIHRoaXMubnMpO1xuXHQgICAgbGF0ID0gYWRqdXN0X2xhdCh0aGlzLmcgLSByaDEgLyB0aGlzLmEpO1xuXHQgICAgcC54ID0gbG9uO1xuXHQgICAgcC55ID0gbGF0O1xuXHQgICAgcmV0dXJuIHA7XG5cdCAgfVxuXHQgIGVsc2Uge1xuXHQgICAgdmFyIG1sID0gdGhpcy5nIC0gcmgxIC8gdGhpcy5hO1xuXHQgICAgbGF0ID0gaW1sZm4obWwsIHRoaXMuZTAsIHRoaXMuZTEsIHRoaXMuZTIsIHRoaXMuZTMpO1xuXHQgICAgbG9uID0gYWRqdXN0X2xvbih0aGlzLmxvbmcwICsgdGhldGEgLyB0aGlzLm5zKTtcblx0ICAgIHAueCA9IGxvbjtcblx0ICAgIHAueSA9IGxhdDtcblx0ICAgIHJldHVybiBwO1xuXHQgIH1cblxuXHR9XG5cblx0dmFyIG5hbWVzJDI0ID0gW1wiRXF1aWRpc3RhbnRfQ29uaWNcIiwgXCJlcWRjXCJdO1xuXHR2YXIgZXFkYyA9IHtcblx0ICBpbml0OiBpbml0JDIzLFxuXHQgIGZvcndhcmQ6IGZvcndhcmQkMjIsXG5cdCAgaW52ZXJzZTogaW52ZXJzZSQyMixcblx0ICBuYW1lczogbmFtZXMkMjRcblx0fTtcblxuXHQvKiBJbml0aWFsaXplIHRoZSBWYW4gRGVyIEdyaW50ZW4gcHJvamVjdGlvblxuXHQgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXHRmdW5jdGlvbiBpbml0JDI0KCkge1xuXHQgIC8vdGhpcy5SID0gNjM3MDk5NzsgLy9SYWRpdXMgb2YgZWFydGhcblx0ICB0aGlzLlIgPSB0aGlzLmE7XG5cdH1cblxuXHRmdW5jdGlvbiBmb3J3YXJkJDIzKHApIHtcblxuXHQgIHZhciBsb24gPSBwLng7XG5cdCAgdmFyIGxhdCA9IHAueTtcblxuXHQgIC8qIEZvcndhcmQgZXF1YXRpb25zXG5cdCAgICAtLS0tLS0tLS0tLS0tLS0tLSovXG5cdCAgdmFyIGRsb24gPSBhZGp1c3RfbG9uKGxvbiAtIHRoaXMubG9uZzApO1xuXHQgIHZhciB4LCB5O1xuXG5cdCAgaWYgKE1hdGguYWJzKGxhdCkgPD0gRVBTTE4pIHtcblx0ICAgIHggPSB0aGlzLngwICsgdGhpcy5SICogZGxvbjtcblx0ICAgIHkgPSB0aGlzLnkwO1xuXHQgIH1cblx0ICB2YXIgdGhldGEgPSBhc2lueigyICogTWF0aC5hYnMobGF0IC8gTWF0aC5QSSkpO1xuXHQgIGlmICgoTWF0aC5hYnMoZGxvbikgPD0gRVBTTE4pIHx8IChNYXRoLmFicyhNYXRoLmFicyhsYXQpIC0gSEFMRl9QSSkgPD0gRVBTTE4pKSB7XG5cdCAgICB4ID0gdGhpcy54MDtcblx0ICAgIGlmIChsYXQgPj0gMCkge1xuXHQgICAgICB5ID0gdGhpcy55MCArIE1hdGguUEkgKiB0aGlzLlIgKiBNYXRoLnRhbigwLjUgKiB0aGV0YSk7XG5cdCAgICB9XG5cdCAgICBlbHNlIHtcblx0ICAgICAgeSA9IHRoaXMueTAgKyBNYXRoLlBJICogdGhpcy5SICogLU1hdGgudGFuKDAuNSAqIHRoZXRhKTtcblx0ICAgIH1cblx0ICAgIC8vICByZXR1cm4oT0spO1xuXHQgIH1cblx0ICB2YXIgYWwgPSAwLjUgKiBNYXRoLmFicygoTWF0aC5QSSAvIGRsb24pIC0gKGRsb24gLyBNYXRoLlBJKSk7XG5cdCAgdmFyIGFzcSA9IGFsICogYWw7XG5cdCAgdmFyIHNpbnRoID0gTWF0aC5zaW4odGhldGEpO1xuXHQgIHZhciBjb3N0aCA9IE1hdGguY29zKHRoZXRhKTtcblxuXHQgIHZhciBnID0gY29zdGggLyAoc2ludGggKyBjb3N0aCAtIDEpO1xuXHQgIHZhciBnc3EgPSBnICogZztcblx0ICB2YXIgbSA9IGcgKiAoMiAvIHNpbnRoIC0gMSk7XG5cdCAgdmFyIG1zcSA9IG0gKiBtO1xuXHQgIHZhciBjb24gPSBNYXRoLlBJICogdGhpcy5SICogKGFsICogKGcgLSBtc3EpICsgTWF0aC5zcXJ0KGFzcSAqIChnIC0gbXNxKSAqIChnIC0gbXNxKSAtIChtc3EgKyBhc3EpICogKGdzcSAtIG1zcSkpKSAvIChtc3EgKyBhc3EpO1xuXHQgIGlmIChkbG9uIDwgMCkge1xuXHQgICAgY29uID0gLWNvbjtcblx0ICB9XG5cdCAgeCA9IHRoaXMueDAgKyBjb247XG5cdCAgLy9jb24gPSBNYXRoLmFicyhjb24gLyAoTWF0aC5QSSAqIHRoaXMuUikpO1xuXHQgIHZhciBxID0gYXNxICsgZztcblx0ICBjb24gPSBNYXRoLlBJICogdGhpcy5SICogKG0gKiBxIC0gYWwgKiBNYXRoLnNxcnQoKG1zcSArIGFzcSkgKiAoYXNxICsgMSkgLSBxICogcSkpIC8gKG1zcSArIGFzcSk7XG5cdCAgaWYgKGxhdCA+PSAwKSB7XG5cdCAgICAvL3kgPSB0aGlzLnkwICsgTWF0aC5QSSAqIHRoaXMuUiAqIE1hdGguc3FydCgxIC0gY29uICogY29uIC0gMiAqIGFsICogY29uKTtcblx0ICAgIHkgPSB0aGlzLnkwICsgY29uO1xuXHQgIH1cblx0ICBlbHNlIHtcblx0ICAgIC8veSA9IHRoaXMueTAgLSBNYXRoLlBJICogdGhpcy5SICogTWF0aC5zcXJ0KDEgLSBjb24gKiBjb24gLSAyICogYWwgKiBjb24pO1xuXHQgICAgeSA9IHRoaXMueTAgLSBjb247XG5cdCAgfVxuXHQgIHAueCA9IHg7XG5cdCAgcC55ID0geTtcblx0ICByZXR1cm4gcDtcblx0fVxuXG5cdC8qIFZhbiBEZXIgR3JpbnRlbiBpbnZlcnNlIGVxdWF0aW9ucy0tbWFwcGluZyB4LHkgdG8gbGF0L2xvbmdcblx0ICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXHRmdW5jdGlvbiBpbnZlcnNlJDIzKHApIHtcblx0ICB2YXIgbG9uLCBsYXQ7XG5cdCAgdmFyIHh4LCB5eSwgeHlzLCBjMSwgYzIsIGMzO1xuXHQgIHZhciBhMTtcblx0ICB2YXIgbTE7XG5cdCAgdmFyIGNvbjtcblx0ICB2YXIgdGgxO1xuXHQgIHZhciBkO1xuXG5cdCAgLyogaW52ZXJzZSBlcXVhdGlvbnNcblx0ICAgIC0tLS0tLS0tLS0tLS0tLS0tKi9cblx0ICBwLnggLT0gdGhpcy54MDtcblx0ICBwLnkgLT0gdGhpcy55MDtcblx0ICBjb24gPSBNYXRoLlBJICogdGhpcy5SO1xuXHQgIHh4ID0gcC54IC8gY29uO1xuXHQgIHl5ID0gcC55IC8gY29uO1xuXHQgIHh5cyA9IHh4ICogeHggKyB5eSAqIHl5O1xuXHQgIGMxID0gLU1hdGguYWJzKHl5KSAqICgxICsgeHlzKTtcblx0ICBjMiA9IGMxIC0gMiAqIHl5ICogeXkgKyB4eCAqIHh4O1xuXHQgIGMzID0gLTIgKiBjMSArIDEgKyAyICogeXkgKiB5eSArIHh5cyAqIHh5cztcblx0ICBkID0geXkgKiB5eSAvIGMzICsgKDIgKiBjMiAqIGMyICogYzIgLyBjMyAvIGMzIC8gYzMgLSA5ICogYzEgKiBjMiAvIGMzIC8gYzMpIC8gMjc7XG5cdCAgYTEgPSAoYzEgLSBjMiAqIGMyIC8gMyAvIGMzKSAvIGMzO1xuXHQgIG0xID0gMiAqIE1hdGguc3FydCgtYTEgLyAzKTtcblx0ICBjb24gPSAoKDMgKiBkKSAvIGExKSAvIG0xO1xuXHQgIGlmIChNYXRoLmFicyhjb24pID4gMSkge1xuXHQgICAgaWYgKGNvbiA+PSAwKSB7XG5cdCAgICAgIGNvbiA9IDE7XG5cdCAgICB9XG5cdCAgICBlbHNlIHtcblx0ICAgICAgY29uID0gLTE7XG5cdCAgICB9XG5cdCAgfVxuXHQgIHRoMSA9IE1hdGguYWNvcyhjb24pIC8gMztcblx0ICBpZiAocC55ID49IDApIHtcblx0ICAgIGxhdCA9ICgtbTEgKiBNYXRoLmNvcyh0aDEgKyBNYXRoLlBJIC8gMykgLSBjMiAvIDMgLyBjMykgKiBNYXRoLlBJO1xuXHQgIH1cblx0ICBlbHNlIHtcblx0ICAgIGxhdCA9IC0oLW0xICogTWF0aC5jb3ModGgxICsgTWF0aC5QSSAvIDMpIC0gYzIgLyAzIC8gYzMpICogTWF0aC5QSTtcblx0ICB9XG5cblx0ICBpZiAoTWF0aC5hYnMoeHgpIDwgRVBTTE4pIHtcblx0ICAgIGxvbiA9IHRoaXMubG9uZzA7XG5cdCAgfVxuXHQgIGVsc2Uge1xuXHQgICAgbG9uID0gYWRqdXN0X2xvbih0aGlzLmxvbmcwICsgTWF0aC5QSSAqICh4eXMgLSAxICsgTWF0aC5zcXJ0KDEgKyAyICogKHh4ICogeHggLSB5eSAqIHl5KSArIHh5cyAqIHh5cykpIC8gMiAvIHh4KTtcblx0ICB9XG5cblx0ICBwLnggPSBsb247XG5cdCAgcC55ID0gbGF0O1xuXHQgIHJldHVybiBwO1xuXHR9XG5cblx0dmFyIG5hbWVzJDI1ID0gW1wiVmFuX2Rlcl9HcmludGVuX0lcIiwgXCJWYW5EZXJHcmludGVuXCIsIFwidmFuZGdcIl07XG5cdHZhciB2YW5kZyA9IHtcblx0ICBpbml0OiBpbml0JDI0LFxuXHQgIGZvcndhcmQ6IGZvcndhcmQkMjMsXG5cdCAgaW52ZXJzZTogaW52ZXJzZSQyMyxcblx0ICBuYW1lczogbmFtZXMkMjVcblx0fTtcblxuXHRmdW5jdGlvbiBpbml0JDI1KCkge1xuXHQgIHRoaXMuc2luX3AxMiA9IE1hdGguc2luKHRoaXMubGF0MCk7XG5cdCAgdGhpcy5jb3NfcDEyID0gTWF0aC5jb3ModGhpcy5sYXQwKTtcblx0fVxuXG5cdGZ1bmN0aW9uIGZvcndhcmQkMjQocCkge1xuXHQgIHZhciBsb24gPSBwLng7XG5cdCAgdmFyIGxhdCA9IHAueTtcblx0ICB2YXIgc2lucGhpID0gTWF0aC5zaW4ocC55KTtcblx0ICB2YXIgY29zcGhpID0gTWF0aC5jb3MocC55KTtcblx0ICB2YXIgZGxvbiA9IGFkanVzdF9sb24obG9uIC0gdGhpcy5sb25nMCk7XG5cdCAgdmFyIGUwLCBlMSwgZTIsIGUzLCBNbHAsIE1sLCB0YW5waGksIE5sMSwgTmwsIHBzaSwgQXosIEcsIEgsIEdILCBIcywgYywga3AsIGNvc19jLCBzLCBzMiwgczMsIHM0LCBzNTtcblx0ICBpZiAodGhpcy5zcGhlcmUpIHtcblx0ICAgIGlmIChNYXRoLmFicyh0aGlzLnNpbl9wMTIgLSAxKSA8PSBFUFNMTikge1xuXHQgICAgICAvL05vcnRoIFBvbGUgY2FzZVxuXHQgICAgICBwLnggPSB0aGlzLngwICsgdGhpcy5hICogKEhBTEZfUEkgLSBsYXQpICogTWF0aC5zaW4oZGxvbik7XG5cdCAgICAgIHAueSA9IHRoaXMueTAgLSB0aGlzLmEgKiAoSEFMRl9QSSAtIGxhdCkgKiBNYXRoLmNvcyhkbG9uKTtcblx0ICAgICAgcmV0dXJuIHA7XG5cdCAgICB9XG5cdCAgICBlbHNlIGlmIChNYXRoLmFicyh0aGlzLnNpbl9wMTIgKyAxKSA8PSBFUFNMTikge1xuXHQgICAgICAvL1NvdXRoIFBvbGUgY2FzZVxuXHQgICAgICBwLnggPSB0aGlzLngwICsgdGhpcy5hICogKEhBTEZfUEkgKyBsYXQpICogTWF0aC5zaW4oZGxvbik7XG5cdCAgICAgIHAueSA9IHRoaXMueTAgKyB0aGlzLmEgKiAoSEFMRl9QSSArIGxhdCkgKiBNYXRoLmNvcyhkbG9uKTtcblx0ICAgICAgcmV0dXJuIHA7XG5cdCAgICB9XG5cdCAgICBlbHNlIHtcblx0ICAgICAgLy9kZWZhdWx0IGNhc2Vcblx0ICAgICAgY29zX2MgPSB0aGlzLnNpbl9wMTIgKiBzaW5waGkgKyB0aGlzLmNvc19wMTIgKiBjb3NwaGkgKiBNYXRoLmNvcyhkbG9uKTtcblx0ICAgICAgYyA9IE1hdGguYWNvcyhjb3NfYyk7XG5cdCAgICAgIGtwID0gYyAvIE1hdGguc2luKGMpO1xuXHQgICAgICBwLnggPSB0aGlzLngwICsgdGhpcy5hICoga3AgKiBjb3NwaGkgKiBNYXRoLnNpbihkbG9uKTtcblx0ICAgICAgcC55ID0gdGhpcy55MCArIHRoaXMuYSAqIGtwICogKHRoaXMuY29zX3AxMiAqIHNpbnBoaSAtIHRoaXMuc2luX3AxMiAqIGNvc3BoaSAqIE1hdGguY29zKGRsb24pKTtcblx0ICAgICAgcmV0dXJuIHA7XG5cdCAgICB9XG5cdCAgfVxuXHQgIGVsc2Uge1xuXHQgICAgZTAgPSBlMGZuKHRoaXMuZXMpO1xuXHQgICAgZTEgPSBlMWZuKHRoaXMuZXMpO1xuXHQgICAgZTIgPSBlMmZuKHRoaXMuZXMpO1xuXHQgICAgZTMgPSBlM2ZuKHRoaXMuZXMpO1xuXHQgICAgaWYgKE1hdGguYWJzKHRoaXMuc2luX3AxMiAtIDEpIDw9IEVQU0xOKSB7XG5cdCAgICAgIC8vTm9ydGggUG9sZSBjYXNlXG5cdCAgICAgIE1scCA9IHRoaXMuYSAqIG1sZm4oZTAsIGUxLCBlMiwgZTMsIEhBTEZfUEkpO1xuXHQgICAgICBNbCA9IHRoaXMuYSAqIG1sZm4oZTAsIGUxLCBlMiwgZTMsIGxhdCk7XG5cdCAgICAgIHAueCA9IHRoaXMueDAgKyAoTWxwIC0gTWwpICogTWF0aC5zaW4oZGxvbik7XG5cdCAgICAgIHAueSA9IHRoaXMueTAgLSAoTWxwIC0gTWwpICogTWF0aC5jb3MoZGxvbik7XG5cdCAgICAgIHJldHVybiBwO1xuXHQgICAgfVxuXHQgICAgZWxzZSBpZiAoTWF0aC5hYnModGhpcy5zaW5fcDEyICsgMSkgPD0gRVBTTE4pIHtcblx0ICAgICAgLy9Tb3V0aCBQb2xlIGNhc2Vcblx0ICAgICAgTWxwID0gdGhpcy5hICogbWxmbihlMCwgZTEsIGUyLCBlMywgSEFMRl9QSSk7XG5cdCAgICAgIE1sID0gdGhpcy5hICogbWxmbihlMCwgZTEsIGUyLCBlMywgbGF0KTtcblx0ICAgICAgcC54ID0gdGhpcy54MCArIChNbHAgKyBNbCkgKiBNYXRoLnNpbihkbG9uKTtcblx0ICAgICAgcC55ID0gdGhpcy55MCArIChNbHAgKyBNbCkgKiBNYXRoLmNvcyhkbG9uKTtcblx0ICAgICAgcmV0dXJuIHA7XG5cdCAgICB9XG5cdCAgICBlbHNlIHtcblx0ICAgICAgLy9EZWZhdWx0IGNhc2Vcblx0ICAgICAgdGFucGhpID0gc2lucGhpIC8gY29zcGhpO1xuXHQgICAgICBObDEgPSBnTih0aGlzLmEsIHRoaXMuZSwgdGhpcy5zaW5fcDEyKTtcblx0ICAgICAgTmwgPSBnTih0aGlzLmEsIHRoaXMuZSwgc2lucGhpKTtcblx0ICAgICAgcHNpID0gTWF0aC5hdGFuKCgxIC0gdGhpcy5lcykgKiB0YW5waGkgKyB0aGlzLmVzICogTmwxICogdGhpcy5zaW5fcDEyIC8gKE5sICogY29zcGhpKSk7XG5cdCAgICAgIEF6ID0gTWF0aC5hdGFuMihNYXRoLnNpbihkbG9uKSwgdGhpcy5jb3NfcDEyICogTWF0aC50YW4ocHNpKSAtIHRoaXMuc2luX3AxMiAqIE1hdGguY29zKGRsb24pKTtcblx0ICAgICAgaWYgKEF6ID09PSAwKSB7XG5cdCAgICAgICAgcyA9IE1hdGguYXNpbih0aGlzLmNvc19wMTIgKiBNYXRoLnNpbihwc2kpIC0gdGhpcy5zaW5fcDEyICogTWF0aC5jb3MocHNpKSk7XG5cdCAgICAgIH1cblx0ICAgICAgZWxzZSBpZiAoTWF0aC5hYnMoTWF0aC5hYnMoQXopIC0gTWF0aC5QSSkgPD0gRVBTTE4pIHtcblx0ICAgICAgICBzID0gLU1hdGguYXNpbih0aGlzLmNvc19wMTIgKiBNYXRoLnNpbihwc2kpIC0gdGhpcy5zaW5fcDEyICogTWF0aC5jb3MocHNpKSk7XG5cdCAgICAgIH1cblx0ICAgICAgZWxzZSB7XG5cdCAgICAgICAgcyA9IE1hdGguYXNpbihNYXRoLnNpbihkbG9uKSAqIE1hdGguY29zKHBzaSkgLyBNYXRoLnNpbihBeikpO1xuXHQgICAgICB9XG5cdCAgICAgIEcgPSB0aGlzLmUgKiB0aGlzLnNpbl9wMTIgLyBNYXRoLnNxcnQoMSAtIHRoaXMuZXMpO1xuXHQgICAgICBIID0gdGhpcy5lICogdGhpcy5jb3NfcDEyICogTWF0aC5jb3MoQXopIC8gTWF0aC5zcXJ0KDEgLSB0aGlzLmVzKTtcblx0ICAgICAgR0ggPSBHICogSDtcblx0ICAgICAgSHMgPSBIICogSDtcblx0ICAgICAgczIgPSBzICogcztcblx0ICAgICAgczMgPSBzMiAqIHM7XG5cdCAgICAgIHM0ID0gczMgKiBzO1xuXHQgICAgICBzNSA9IHM0ICogcztcblx0ICAgICAgYyA9IE5sMSAqIHMgKiAoMSAtIHMyICogSHMgKiAoMSAtIEhzKSAvIDYgKyBzMyAvIDggKiBHSCAqICgxIC0gMiAqIEhzKSArIHM0IC8gMTIwICogKEhzICogKDQgLSA3ICogSHMpIC0gMyAqIEcgKiBHICogKDEgLSA3ICogSHMpKSAtIHM1IC8gNDggKiBHSCk7XG5cdCAgICAgIHAueCA9IHRoaXMueDAgKyBjICogTWF0aC5zaW4oQXopO1xuXHQgICAgICBwLnkgPSB0aGlzLnkwICsgYyAqIE1hdGguY29zKEF6KTtcblx0ICAgICAgcmV0dXJuIHA7XG5cdCAgICB9XG5cdCAgfVxuXG5cblx0fVxuXG5cdGZ1bmN0aW9uIGludmVyc2UkMjQocCkge1xuXHQgIHAueCAtPSB0aGlzLngwO1xuXHQgIHAueSAtPSB0aGlzLnkwO1xuXHQgIHZhciByaCwgeiwgc2lueiwgY29zeiwgbG9uLCBsYXQsIGNvbiwgZTAsIGUxLCBlMiwgZTMsIE1scCwgTSwgTjEsIHBzaSwgQXosIGNvc0F6LCB0bXAsIEEsIEIsIEQsIEVlLCBGO1xuXHQgIGlmICh0aGlzLnNwaGVyZSkge1xuXHQgICAgcmggPSBNYXRoLnNxcnQocC54ICogcC54ICsgcC55ICogcC55KTtcblx0ICAgIGlmIChyaCA+ICgyICogSEFMRl9QSSAqIHRoaXMuYSkpIHtcblx0ICAgICAgcmV0dXJuO1xuXHQgICAgfVxuXHQgICAgeiA9IHJoIC8gdGhpcy5hO1xuXG5cdCAgICBzaW56ID0gTWF0aC5zaW4oeik7XG5cdCAgICBjb3N6ID0gTWF0aC5jb3Moeik7XG5cblx0ICAgIGxvbiA9IHRoaXMubG9uZzA7XG5cdCAgICBpZiAoTWF0aC5hYnMocmgpIDw9IEVQU0xOKSB7XG5cdCAgICAgIGxhdCA9IHRoaXMubGF0MDtcblx0ICAgIH1cblx0ICAgIGVsc2Uge1xuXHQgICAgICBsYXQgPSBhc2lueihjb3N6ICogdGhpcy5zaW5fcDEyICsgKHAueSAqIHNpbnogKiB0aGlzLmNvc19wMTIpIC8gcmgpO1xuXHQgICAgICBjb24gPSBNYXRoLmFicyh0aGlzLmxhdDApIC0gSEFMRl9QSTtcblx0ICAgICAgaWYgKE1hdGguYWJzKGNvbikgPD0gRVBTTE4pIHtcblx0ICAgICAgICBpZiAodGhpcy5sYXQwID49IDApIHtcblx0ICAgICAgICAgIGxvbiA9IGFkanVzdF9sb24odGhpcy5sb25nMCArIE1hdGguYXRhbjIocC54LCAtIHAueSkpO1xuXHQgICAgICAgIH1cblx0ICAgICAgICBlbHNlIHtcblx0ICAgICAgICAgIGxvbiA9IGFkanVzdF9sb24odGhpcy5sb25nMCAtIE1hdGguYXRhbjIoLXAueCwgcC55KSk7XG5cdCAgICAgICAgfVxuXHQgICAgICB9XG5cdCAgICAgIGVsc2Uge1xuXHQgICAgICAgIC8qY29uID0gY29zeiAtIHRoaXMuc2luX3AxMiAqIE1hdGguc2luKGxhdCk7XG5cdCAgICAgICAgaWYgKChNYXRoLmFicyhjb24pIDwgRVBTTE4pICYmIChNYXRoLmFicyhwLngpIDwgRVBTTE4pKSB7XG5cdCAgICAgICAgICAvL25vLW9wLCBqdXN0IGtlZXAgdGhlIGxvbiB2YWx1ZSBhcyBpc1xuXHQgICAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgICB2YXIgdGVtcCA9IE1hdGguYXRhbjIoKHAueCAqIHNpbnogKiB0aGlzLmNvc19wMTIpLCAoY29uICogcmgpKTtcblx0ICAgICAgICAgIGxvbiA9IGFkanVzdF9sb24odGhpcy5sb25nMCArIE1hdGguYXRhbjIoKHAueCAqIHNpbnogKiB0aGlzLmNvc19wMTIpLCAoY29uICogcmgpKSk7XG5cdCAgICAgICAgfSovXG5cdCAgICAgICAgbG9uID0gYWRqdXN0X2xvbih0aGlzLmxvbmcwICsgTWF0aC5hdGFuMihwLnggKiBzaW56LCByaCAqIHRoaXMuY29zX3AxMiAqIGNvc3ogLSBwLnkgKiB0aGlzLnNpbl9wMTIgKiBzaW56KSk7XG5cdCAgICAgIH1cblx0ICAgIH1cblxuXHQgICAgcC54ID0gbG9uO1xuXHQgICAgcC55ID0gbGF0O1xuXHQgICAgcmV0dXJuIHA7XG5cdCAgfVxuXHQgIGVsc2Uge1xuXHQgICAgZTAgPSBlMGZuKHRoaXMuZXMpO1xuXHQgICAgZTEgPSBlMWZuKHRoaXMuZXMpO1xuXHQgICAgZTIgPSBlMmZuKHRoaXMuZXMpO1xuXHQgICAgZTMgPSBlM2ZuKHRoaXMuZXMpO1xuXHQgICAgaWYgKE1hdGguYWJzKHRoaXMuc2luX3AxMiAtIDEpIDw9IEVQU0xOKSB7XG5cdCAgICAgIC8vTm9ydGggcG9sZSBjYXNlXG5cdCAgICAgIE1scCA9IHRoaXMuYSAqIG1sZm4oZTAsIGUxLCBlMiwgZTMsIEhBTEZfUEkpO1xuXHQgICAgICByaCA9IE1hdGguc3FydChwLnggKiBwLnggKyBwLnkgKiBwLnkpO1xuXHQgICAgICBNID0gTWxwIC0gcmg7XG5cdCAgICAgIGxhdCA9IGltbGZuKE0gLyB0aGlzLmEsIGUwLCBlMSwgZTIsIGUzKTtcblx0ICAgICAgbG9uID0gYWRqdXN0X2xvbih0aGlzLmxvbmcwICsgTWF0aC5hdGFuMihwLngsIC0gMSAqIHAueSkpO1xuXHQgICAgICBwLnggPSBsb247XG5cdCAgICAgIHAueSA9IGxhdDtcblx0ICAgICAgcmV0dXJuIHA7XG5cdCAgICB9XG5cdCAgICBlbHNlIGlmIChNYXRoLmFicyh0aGlzLnNpbl9wMTIgKyAxKSA8PSBFUFNMTikge1xuXHQgICAgICAvL1NvdXRoIHBvbGUgY2FzZVxuXHQgICAgICBNbHAgPSB0aGlzLmEgKiBtbGZuKGUwLCBlMSwgZTIsIGUzLCBIQUxGX1BJKTtcblx0ICAgICAgcmggPSBNYXRoLnNxcnQocC54ICogcC54ICsgcC55ICogcC55KTtcblx0ICAgICAgTSA9IHJoIC0gTWxwO1xuXG5cdCAgICAgIGxhdCA9IGltbGZuKE0gLyB0aGlzLmEsIGUwLCBlMSwgZTIsIGUzKTtcblx0ICAgICAgbG9uID0gYWRqdXN0X2xvbih0aGlzLmxvbmcwICsgTWF0aC5hdGFuMihwLngsIHAueSkpO1xuXHQgICAgICBwLnggPSBsb247XG5cdCAgICAgIHAueSA9IGxhdDtcblx0ICAgICAgcmV0dXJuIHA7XG5cdCAgICB9XG5cdCAgICBlbHNlIHtcblx0ICAgICAgLy9kZWZhdWx0IGNhc2Vcblx0ICAgICAgcmggPSBNYXRoLnNxcnQocC54ICogcC54ICsgcC55ICogcC55KTtcblx0ICAgICAgQXogPSBNYXRoLmF0YW4yKHAueCwgcC55KTtcblx0ICAgICAgTjEgPSBnTih0aGlzLmEsIHRoaXMuZSwgdGhpcy5zaW5fcDEyKTtcblx0ICAgICAgY29zQXogPSBNYXRoLmNvcyhBeik7XG5cdCAgICAgIHRtcCA9IHRoaXMuZSAqIHRoaXMuY29zX3AxMiAqIGNvc0F6O1xuXHQgICAgICBBID0gLXRtcCAqIHRtcCAvICgxIC0gdGhpcy5lcyk7XG5cdCAgICAgIEIgPSAzICogdGhpcy5lcyAqICgxIC0gQSkgKiB0aGlzLnNpbl9wMTIgKiB0aGlzLmNvc19wMTIgKiBjb3NBeiAvICgxIC0gdGhpcy5lcyk7XG5cdCAgICAgIEQgPSByaCAvIE4xO1xuXHQgICAgICBFZSA9IEQgLSBBICogKDEgKyBBKSAqIE1hdGgucG93KEQsIDMpIC8gNiAtIEIgKiAoMSArIDMgKiBBKSAqIE1hdGgucG93KEQsIDQpIC8gMjQ7XG5cdCAgICAgIEYgPSAxIC0gQSAqIEVlICogRWUgLyAyIC0gRCAqIEVlICogRWUgKiBFZSAvIDY7XG5cdCAgICAgIHBzaSA9IE1hdGguYXNpbih0aGlzLnNpbl9wMTIgKiBNYXRoLmNvcyhFZSkgKyB0aGlzLmNvc19wMTIgKiBNYXRoLnNpbihFZSkgKiBjb3NBeik7XG5cdCAgICAgIGxvbiA9IGFkanVzdF9sb24odGhpcy5sb25nMCArIE1hdGguYXNpbihNYXRoLnNpbihBeikgKiBNYXRoLnNpbihFZSkgLyBNYXRoLmNvcyhwc2kpKSk7XG5cdCAgICAgIGxhdCA9IE1hdGguYXRhbigoMSAtIHRoaXMuZXMgKiBGICogdGhpcy5zaW5fcDEyIC8gTWF0aC5zaW4ocHNpKSkgKiBNYXRoLnRhbihwc2kpIC8gKDEgLSB0aGlzLmVzKSk7XG5cdCAgICAgIHAueCA9IGxvbjtcblx0ICAgICAgcC55ID0gbGF0O1xuXHQgICAgICByZXR1cm4gcDtcblx0ICAgIH1cblx0ICB9XG5cblx0fVxuXG5cdHZhciBuYW1lcyQyNiA9IFtcIkF6aW11dGhhbF9FcXVpZGlzdGFudFwiLCBcImFlcWRcIl07XG5cdHZhciBhZXFkID0ge1xuXHQgIGluaXQ6IGluaXQkMjUsXG5cdCAgZm9yd2FyZDogZm9yd2FyZCQyNCxcblx0ICBpbnZlcnNlOiBpbnZlcnNlJDI0LFxuXHQgIG5hbWVzOiBuYW1lcyQyNlxuXHR9O1xuXG5cdGZ1bmN0aW9uIGluaXQkMjYoKSB7XG5cdCAgLy9kb3VibGUgdGVtcDsgICAgICAvKiB0ZW1wb3JhcnkgdmFyaWFibGUgICAgKi9cblxuXHQgIC8qIFBsYWNlIHBhcmFtZXRlcnMgaW4gc3RhdGljIHN0b3JhZ2UgZm9yIGNvbW1vbiB1c2Vcblx0ICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cdCAgdGhpcy5zaW5fcDE0ID0gTWF0aC5zaW4odGhpcy5sYXQwKTtcblx0ICB0aGlzLmNvc19wMTQgPSBNYXRoLmNvcyh0aGlzLmxhdDApO1xuXHR9XG5cblx0LyogT3J0aG9ncmFwaGljIGZvcndhcmQgZXF1YXRpb25zLS1tYXBwaW5nIGxhdCxsb25nIHRvIHgseVxuXHQgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblx0ZnVuY3Rpb24gZm9yd2FyZCQyNShwKSB7XG5cdCAgdmFyIHNpbnBoaSwgY29zcGhpOyAvKiBzaW4gYW5kIGNvcyB2YWx1ZSAgICAgICAgKi9cblx0ICB2YXIgZGxvbjsgLyogZGVsdGEgbG9uZ2l0dWRlIHZhbHVlICAgICAgKi9cblx0ICB2YXIgY29zbG9uOyAvKiBjb3Mgb2YgbG9uZ2l0dWRlICAgICAgICAqL1xuXHQgIHZhciBrc3A7IC8qIHNjYWxlIGZhY3RvciAgICAgICAgICAqL1xuXHQgIHZhciBnLCB4LCB5O1xuXHQgIHZhciBsb24gPSBwLng7XG5cdCAgdmFyIGxhdCA9IHAueTtcblx0ICAvKiBGb3J3YXJkIGVxdWF0aW9uc1xuXHQgICAgICAtLS0tLS0tLS0tLS0tLS0tLSovXG5cdCAgZGxvbiA9IGFkanVzdF9sb24obG9uIC0gdGhpcy5sb25nMCk7XG5cblx0ICBzaW5waGkgPSBNYXRoLnNpbihsYXQpO1xuXHQgIGNvc3BoaSA9IE1hdGguY29zKGxhdCk7XG5cblx0ICBjb3Nsb24gPSBNYXRoLmNvcyhkbG9uKTtcblx0ICBnID0gdGhpcy5zaW5fcDE0ICogc2lucGhpICsgdGhpcy5jb3NfcDE0ICogY29zcGhpICogY29zbG9uO1xuXHQgIGtzcCA9IDE7XG5cdCAgaWYgKChnID4gMCkgfHwgKE1hdGguYWJzKGcpIDw9IEVQU0xOKSkge1xuXHQgICAgeCA9IHRoaXMuYSAqIGtzcCAqIGNvc3BoaSAqIE1hdGguc2luKGRsb24pO1xuXHQgICAgeSA9IHRoaXMueTAgKyB0aGlzLmEgKiBrc3AgKiAodGhpcy5jb3NfcDE0ICogc2lucGhpIC0gdGhpcy5zaW5fcDE0ICogY29zcGhpICogY29zbG9uKTtcblx0ICB9XG5cdCAgcC54ID0geDtcblx0ICBwLnkgPSB5O1xuXHQgIHJldHVybiBwO1xuXHR9XG5cblx0ZnVuY3Rpb24gaW52ZXJzZSQyNShwKSB7XG5cdCAgdmFyIHJoOyAvKiBoZWlnaHQgYWJvdmUgZWxsaXBzb2lkICAgICAgKi9cblx0ICB2YXIgejsgLyogYW5nbGUgICAgICAgICAgKi9cblx0ICB2YXIgc2lueiwgY29zejsgLyogc2luIG9mIHogYW5kIGNvcyBvZiB6ICAgICAgKi9cblx0ICB2YXIgY29uO1xuXHQgIHZhciBsb24sIGxhdDtcblx0ICAvKiBJbnZlcnNlIGVxdWF0aW9uc1xuXHQgICAgICAtLS0tLS0tLS0tLS0tLS0tLSovXG5cdCAgcC54IC09IHRoaXMueDA7XG5cdCAgcC55IC09IHRoaXMueTA7XG5cdCAgcmggPSBNYXRoLnNxcnQocC54ICogcC54ICsgcC55ICogcC55KTtcblx0ICB6ID0gYXNpbnoocmggLyB0aGlzLmEpO1xuXG5cdCAgc2lueiA9IE1hdGguc2luKHopO1xuXHQgIGNvc3ogPSBNYXRoLmNvcyh6KTtcblxuXHQgIGxvbiA9IHRoaXMubG9uZzA7XG5cdCAgaWYgKE1hdGguYWJzKHJoKSA8PSBFUFNMTikge1xuXHQgICAgbGF0ID0gdGhpcy5sYXQwO1xuXHQgICAgcC54ID0gbG9uO1xuXHQgICAgcC55ID0gbGF0O1xuXHQgICAgcmV0dXJuIHA7XG5cdCAgfVxuXHQgIGxhdCA9IGFzaW56KGNvc3ogKiB0aGlzLnNpbl9wMTQgKyAocC55ICogc2lueiAqIHRoaXMuY29zX3AxNCkgLyByaCk7XG5cdCAgY29uID0gTWF0aC5hYnModGhpcy5sYXQwKSAtIEhBTEZfUEk7XG5cdCAgaWYgKE1hdGguYWJzKGNvbikgPD0gRVBTTE4pIHtcblx0ICAgIGlmICh0aGlzLmxhdDAgPj0gMCkge1xuXHQgICAgICBsb24gPSBhZGp1c3RfbG9uKHRoaXMubG9uZzAgKyBNYXRoLmF0YW4yKHAueCwgLSBwLnkpKTtcblx0ICAgIH1cblx0ICAgIGVsc2Uge1xuXHQgICAgICBsb24gPSBhZGp1c3RfbG9uKHRoaXMubG9uZzAgLSBNYXRoLmF0YW4yKC1wLngsIHAueSkpO1xuXHQgICAgfVxuXHQgICAgcC54ID0gbG9uO1xuXHQgICAgcC55ID0gbGF0O1xuXHQgICAgcmV0dXJuIHA7XG5cdCAgfVxuXHQgIGxvbiA9IGFkanVzdF9sb24odGhpcy5sb25nMCArIE1hdGguYXRhbjIoKHAueCAqIHNpbnopLCByaCAqIHRoaXMuY29zX3AxNCAqIGNvc3ogLSBwLnkgKiB0aGlzLnNpbl9wMTQgKiBzaW56KSk7XG5cdCAgcC54ID0gbG9uO1xuXHQgIHAueSA9IGxhdDtcblx0ICByZXR1cm4gcDtcblx0fVxuXG5cdHZhciBuYW1lcyQyNyA9IFtcIm9ydGhvXCJdO1xuXHR2YXIgb3J0aG8gPSB7XG5cdCAgaW5pdDogaW5pdCQyNixcblx0ICBmb3J3YXJkOiBmb3J3YXJkJDI1LFxuXHQgIGludmVyc2U6IGludmVyc2UkMjUsXG5cdCAgbmFtZXM6IG5hbWVzJDI3XG5cdH07XG5cblx0dmFyIGluY2x1ZGVkUHJvamVjdGlvbnMgPSBmdW5jdGlvbihwcm9qNCl7XG5cdCAgcHJvajQuUHJvai5wcm9qZWN0aW9ucy5hZGQodG1lcmMpO1xuXHQgIHByb2o0LlByb2oucHJvamVjdGlvbnMuYWRkKGV0bWVyYyk7XG5cdCAgcHJvajQuUHJvai5wcm9qZWN0aW9ucy5hZGQodXRtKTtcblx0ICBwcm9qNC5Qcm9qLnByb2plY3Rpb25zLmFkZChzdGVyZWEpO1xuXHQgIHByb2o0LlByb2oucHJvamVjdGlvbnMuYWRkKHN0ZXJlKTtcblx0ICBwcm9qNC5Qcm9qLnByb2plY3Rpb25zLmFkZChzb21lcmMpO1xuXHQgIHByb2o0LlByb2oucHJvamVjdGlvbnMuYWRkKG9tZXJjKTtcblx0ICBwcm9qNC5Qcm9qLnByb2plY3Rpb25zLmFkZChsY2MpO1xuXHQgIHByb2o0LlByb2oucHJvamVjdGlvbnMuYWRkKGtyb3Zhayk7XG5cdCAgcHJvajQuUHJvai5wcm9qZWN0aW9ucy5hZGQoY2Fzcyk7XG5cdCAgcHJvajQuUHJvai5wcm9qZWN0aW9ucy5hZGQobGFlYSk7XG5cdCAgcHJvajQuUHJvai5wcm9qZWN0aW9ucy5hZGQoYWVhKTtcblx0ICBwcm9qNC5Qcm9qLnByb2plY3Rpb25zLmFkZChnbm9tKTtcblx0ICBwcm9qNC5Qcm9qLnByb2plY3Rpb25zLmFkZChjZWEpO1xuXHQgIHByb2o0LlByb2oucHJvamVjdGlvbnMuYWRkKGVxYyk7XG5cdCAgcHJvajQuUHJvai5wcm9qZWN0aW9ucy5hZGQocG9seSk7XG5cdCAgcHJvajQuUHJvai5wcm9qZWN0aW9ucy5hZGQobnptZyk7XG5cdCAgcHJvajQuUHJvai5wcm9qZWN0aW9ucy5hZGQobWlsbCk7XG5cdCAgcHJvajQuUHJvai5wcm9qZWN0aW9ucy5hZGQoc2ludSk7XG5cdCAgcHJvajQuUHJvai5wcm9qZWN0aW9ucy5hZGQobW9sbCk7XG5cdCAgcHJvajQuUHJvai5wcm9qZWN0aW9ucy5hZGQoZXFkYyk7XG5cdCAgcHJvajQuUHJvai5wcm9qZWN0aW9ucy5hZGQodmFuZGcpO1xuXHQgIHByb2o0LlByb2oucHJvamVjdGlvbnMuYWRkKGFlcWQpO1xuXHQgIHByb2o0LlByb2oucHJvamVjdGlvbnMuYWRkKG9ydGhvKTtcblx0fTtcblxuXHRwcm9qNCQxLmRlZmF1bHREYXR1bSA9ICdXR1M4NCc7IC8vZGVmYXVsdCBkYXR1bVxuXHRwcm9qNCQxLlByb2ogPSBQcm9qZWN0aW9uJDE7XG5cdHByb2o0JDEuV0dTODQgPSBuZXcgcHJvajQkMS5Qcm9qKCdXR1M4NCcpO1xuXHRwcm9qNCQxLlBvaW50ID0gUG9pbnQ7XG5cdHByb2o0JDEudG9Qb2ludCA9IHRvUG9pbnQ7XG5cdHByb2o0JDEuZGVmcyA9IGRlZnM7XG5cdHByb2o0JDEudHJhbnNmb3JtID0gdHJhbnNmb3JtO1xuXHRwcm9qNCQxLm1ncnMgPSBtZ3JzO1xuXHRwcm9qNCQxLnZlcnNpb24gPSB2ZXJzaW9uO1xuXHRpbmNsdWRlZFByb2plY3Rpb25zKHByb2o0JDEpO1xuXG5cdHJldHVybiBwcm9qNCQxO1xuXG59KSkpO1xuIiwiZXhwb3J0cy5wdWJsaWNFbmNyeXB0ID0gcmVxdWlyZSgnLi9wdWJsaWNFbmNyeXB0Jyk7XG5leHBvcnRzLnByaXZhdGVEZWNyeXB0ID0gcmVxdWlyZSgnLi9wcml2YXRlRGVjcnlwdCcpO1xuXG5leHBvcnRzLnByaXZhdGVFbmNyeXB0ID0gZnVuY3Rpb24gcHJpdmF0ZUVuY3J5cHQoa2V5LCBidWYpIHtcbiAgcmV0dXJuIGV4cG9ydHMucHVibGljRW5jcnlwdChrZXksIGJ1ZiwgdHJ1ZSk7XG59O1xuXG5leHBvcnRzLnB1YmxpY0RlY3J5cHQgPSBmdW5jdGlvbiBwdWJsaWNEZWNyeXB0KGtleSwgYnVmKSB7XG4gIHJldHVybiBleHBvcnRzLnByaXZhdGVEZWNyeXB0KGtleSwgYnVmLCB0cnVlKTtcbn07IiwidmFyIGNyZWF0ZUhhc2ggPSByZXF1aXJlKCdjcmVhdGUtaGFzaCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoc2VlZCwgbGVuKSB7XG4gIHZhciB0ID0gbmV3IEJ1ZmZlcignJyk7XG4gIHZhciAgaSA9IDAsIGM7XG4gIHdoaWxlICh0Lmxlbmd0aCA8IGxlbikge1xuICAgIGMgPSBpMm9wcyhpKyspO1xuICAgIHQgPSBCdWZmZXIuY29uY2F0KFt0LCBjcmVhdGVIYXNoKCdzaGExJykudXBkYXRlKHNlZWQpLnVwZGF0ZShjKS5kaWdlc3QoKV0pO1xuICB9XG4gIHJldHVybiB0LnNsaWNlKDAsIGxlbik7XG59O1xuXG5mdW5jdGlvbiBpMm9wcyhjKSB7XG4gIHZhciBvdXQgPSBuZXcgQnVmZmVyKDQpO1xuICBvdXQud3JpdGVVSW50MzJCRShjLDApO1xuICByZXR1cm4gb3V0O1xufSIsInZhciBwYXJzZUtleXMgPSByZXF1aXJlKCdwYXJzZS1hc24xJyk7XG52YXIgbWdmID0gcmVxdWlyZSgnLi9tZ2YnKTtcbnZhciB4b3IgPSByZXF1aXJlKCcuL3hvcicpO1xudmFyIGJuID0gcmVxdWlyZSgnYm4uanMnKTtcbnZhciBjcnQgPSByZXF1aXJlKCdicm93c2VyaWZ5LXJzYScpO1xudmFyIGNyZWF0ZUhhc2ggPSByZXF1aXJlKCdjcmVhdGUtaGFzaCcpO1xudmFyIHdpdGhQdWJsaWMgPSByZXF1aXJlKCcuL3dpdGhQdWJsaWMnKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gcHJpdmF0ZURlY3J5cHQocHJpdmF0ZV9rZXksIGVuYywgcmV2ZXJzZSkge1xuICB2YXIgcGFkZGluZztcbiAgaWYgKHByaXZhdGVfa2V5LnBhZGRpbmcpIHtcbiAgICBwYWRkaW5nID0gcHJpdmF0ZV9rZXkucGFkZGluZztcbiAgfSBlbHNlIGlmIChyZXZlcnNlKSB7XG4gICAgcGFkZGluZyA9IDE7XG4gIH0gZWxzZSB7XG4gICAgcGFkZGluZyA9IDQ7XG4gIH1cbiAgXG4gIHZhciBrZXkgPSBwYXJzZUtleXMocHJpdmF0ZV9rZXkpO1xuICB2YXIgayA9IGtleS5tb2R1bHVzLmJ5dGVMZW5ndGgoKTtcbiAgaWYgKGVuYy5sZW5ndGggPiBrIHx8IG5ldyBibihlbmMpLmNtcChrZXkubW9kdWx1cykgPj0gMCkge1xuICAgIHRocm93IG5ldyBFcnJvcignZGVjcnlwdGlvbiBlcnJvcicpO1xuICB9XG4gIHZhciBtc2c7XG4gIGlmIChyZXZlcnNlKSB7XG4gICAgbXNnID0gd2l0aFB1YmxpYyhuZXcgYm4oZW5jKSwga2V5KTtcbiAgfSBlbHNlIHtcbiAgICBtc2cgPSBjcnQoZW5jLCBrZXkpO1xuICB9XG4gIHZhciB6QnVmZmVyID0gbmV3IEJ1ZmZlcihrIC0gbXNnLmxlbmd0aCk7XG4gIHpCdWZmZXIuZmlsbCgwKTtcbiAgbXNnID0gQnVmZmVyLmNvbmNhdChbekJ1ZmZlciwgbXNnXSwgayk7XG4gIGlmIChwYWRkaW5nID09PSA0KSB7XG4gICAgcmV0dXJuIG9hZXAoa2V5LCBtc2cpO1xuICB9IGVsc2UgaWYgKHBhZGRpbmcgPT09IDEpIHtcbiAgICByZXR1cm4gcGtjczEoa2V5LCBtc2csIHJldmVyc2UpO1xuICB9IGVsc2UgaWYgKHBhZGRpbmcgPT09IDMpIHtcbiAgICByZXR1cm4gbXNnO1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcigndW5rbm93biBwYWRkaW5nJyk7XG4gIH1cbn07XG5cbmZ1bmN0aW9uIG9hZXAoa2V5LCBtc2cpe1xuICB2YXIgbiA9IGtleS5tb2R1bHVzO1xuICB2YXIgayA9IGtleS5tb2R1bHVzLmJ5dGVMZW5ndGgoKTtcbiAgdmFyIG1MZW4gPSBtc2cubGVuZ3RoO1xuICB2YXIgaUhhc2ggPSBjcmVhdGVIYXNoKCdzaGExJykudXBkYXRlKG5ldyBCdWZmZXIoJycpKS5kaWdlc3QoKTtcbiAgdmFyIGhMZW4gPSBpSGFzaC5sZW5ndGg7XG4gIHZhciBoTGVuMiA9IDIgKiBoTGVuO1xuICBpZiAobXNnWzBdICE9PSAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdkZWNyeXB0aW9uIGVycm9yJyk7XG4gIH1cbiAgdmFyIG1hc2tlZFNlZWQgPSBtc2cuc2xpY2UoMSwgaExlbiArIDEpO1xuICB2YXIgbWFza2VkRGIgPSAgbXNnLnNsaWNlKGhMZW4gKyAxKTtcbiAgdmFyIHNlZWQgPSB4b3IobWFza2VkU2VlZCwgbWdmKG1hc2tlZERiLCBoTGVuKSk7XG4gIHZhciBkYiA9IHhvcihtYXNrZWREYiwgbWdmKHNlZWQsIGsgLSBoTGVuIC0gMSkpO1xuICBpZiAoY29tcGFyZShpSGFzaCwgZGIuc2xpY2UoMCwgaExlbikpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdkZWNyeXB0aW9uIGVycm9yJyk7XG4gIH1cbiAgdmFyIGkgPSBoTGVuO1xuICB3aGlsZSAoZGJbaV0gPT09IDApIHtcbiAgICBpKys7XG4gIH1cbiAgaWYgKGRiW2krK10gIT09IDEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2RlY3J5cHRpb24gZXJyb3InKTtcbiAgfVxuICByZXR1cm4gZGIuc2xpY2UoaSk7XG59XG5cbmZ1bmN0aW9uIHBrY3MxKGtleSwgbXNnLCByZXZlcnNlKXtcbiAgdmFyIHAxID0gbXNnLnNsaWNlKDAsIDIpO1xuICB2YXIgaSA9IDI7XG4gIHZhciBzdGF0dXMgPSAwO1xuICB3aGlsZSAobXNnW2krK10gIT09IDApIHtcbiAgICBpZiAoaSA+PSBtc2cubGVuZ3RoKSB7XG4gICAgICBzdGF0dXMrKztcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICB2YXIgcHMgPSBtc2cuc2xpY2UoMiwgaSAtIDEpO1xuICB2YXIgcDIgPSBtc2cuc2xpY2UoaSAtIDEsIGkpO1xuXG4gIGlmICgocDEudG9TdHJpbmcoJ2hleCcpICE9PSAnMDAwMicgJiYgIXJldmVyc2UpIHx8IChwMS50b1N0cmluZygnaGV4JykgIT09ICcwMDAxJyAmJiByZXZlcnNlKSl7XG4gICAgc3RhdHVzKys7XG4gIH1cbiAgaWYgKHBzLmxlbmd0aCA8IDgpIHtcbiAgICBzdGF0dXMrKztcbiAgfVxuICBpZiAoc3RhdHVzKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdkZWNyeXB0aW9uIGVycm9yJyk7XG4gIH1cbiAgcmV0dXJuICBtc2cuc2xpY2UoaSk7XG59XG5mdW5jdGlvbiBjb21wYXJlKGEsIGIpe1xuICBhID0gbmV3IEJ1ZmZlcihhKTtcbiAgYiA9IG5ldyBCdWZmZXIoYik7XG4gIHZhciBkaWYgPSAwO1xuICB2YXIgbGVuID0gYS5sZW5ndGg7XG4gIGlmIChhLmxlbmd0aCAhPT0gYi5sZW5ndGgpIHtcbiAgICBkaWYrKztcbiAgICBsZW4gPSBNYXRoLm1pbihhLmxlbmd0aCwgYi5sZW5ndGgpO1xuICB9XG4gIHZhciBpID0gLTE7XG4gIHdoaWxlICgrK2kgPCBsZW4pIHtcbiAgICBkaWYgKz0gKGFbaV0gXiBiW2ldKTtcbiAgfVxuICByZXR1cm4gZGlmO1xufSIsInZhciBwYXJzZUtleXMgPSByZXF1aXJlKCdwYXJzZS1hc24xJyk7XG52YXIgcmFuZG9tQnl0ZXMgPSByZXF1aXJlKCdyYW5kb21ieXRlcycpO1xudmFyIGNyZWF0ZUhhc2ggPSByZXF1aXJlKCdjcmVhdGUtaGFzaCcpO1xudmFyIG1nZiA9IHJlcXVpcmUoJy4vbWdmJyk7XG52YXIgeG9yID0gcmVxdWlyZSgnLi94b3InKTtcbnZhciBibiA9IHJlcXVpcmUoJ2JuLmpzJyk7XG52YXIgd2l0aFB1YmxpYyA9IHJlcXVpcmUoJy4vd2l0aFB1YmxpYycpO1xudmFyIGNydCA9IHJlcXVpcmUoJ2Jyb3dzZXJpZnktcnNhJyk7XG5cbnZhciBjb25zdGFudHMgPSB7XG4gIFJTQV9QS0NTMV9PQUVQX1BBRERJTkc6IDQsXG4gIFJTQV9QS0NTMV9QQURESU46IDEsXG4gIFJTQV9OT19QQURESU5HOiAzXG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHB1YmxpY0VuY3J5cHQocHVibGljX2tleSwgbXNnLCByZXZlcnNlKSB7XG4gIHZhciBwYWRkaW5nO1xuICBpZiAocHVibGljX2tleS5wYWRkaW5nKSB7XG4gICAgcGFkZGluZyA9IHB1YmxpY19rZXkucGFkZGluZztcbiAgfSBlbHNlIGlmIChyZXZlcnNlKSB7XG4gICAgcGFkZGluZyA9IDE7XG4gIH0gZWxzZSB7XG4gICAgcGFkZGluZyA9IDQ7XG4gIH1cbiAgdmFyIGtleSA9IHBhcnNlS2V5cyhwdWJsaWNfa2V5KTtcbiAgdmFyIHBhZGRlZE1zZztcbiAgaWYgKHBhZGRpbmcgPT09IDQpIHtcbiAgICBwYWRkZWRNc2cgPSBvYWVwKGtleSwgbXNnKTtcbiAgfSBlbHNlIGlmIChwYWRkaW5nID09PSAxKSB7XG4gICAgcGFkZGVkTXNnID0gcGtjczEoa2V5LCBtc2csIHJldmVyc2UpO1xuICB9IGVsc2UgaWYgKHBhZGRpbmcgPT09IDMpIHtcbiAgICBwYWRkZWRNc2cgPSBuZXcgYm4obXNnKTtcbiAgICBpZiAocGFkZGVkTXNnLmNtcChrZXkubW9kdWx1cykgPj0gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdkYXRhIHRvbyBsb25nIGZvciBtb2R1bHVzJyk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcigndW5rbm93biBwYWRkaW5nJyk7XG4gIH1cbiAgaWYgKHJldmVyc2UpIHtcbiAgICByZXR1cm4gY3J0KHBhZGRlZE1zZywga2V5KTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gd2l0aFB1YmxpYyhwYWRkZWRNc2csIGtleSk7XG4gIH1cbn07XG5cbmZ1bmN0aW9uIG9hZXAoa2V5LCBtc2cpe1xuICB2YXIgayA9IGtleS5tb2R1bHVzLmJ5dGVMZW5ndGgoKTtcbiAgdmFyIG1MZW4gPSBtc2cubGVuZ3RoO1xuICB2YXIgaUhhc2ggPSBjcmVhdGVIYXNoKCdzaGExJykudXBkYXRlKG5ldyBCdWZmZXIoJycpKS5kaWdlc3QoKTtcbiAgdmFyIGhMZW4gPSBpSGFzaC5sZW5ndGg7XG4gIHZhciBoTGVuMiA9IDIgKiBoTGVuO1xuICBpZiAobUxlbiA+IGsgLSBoTGVuMiAtIDIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ21lc3NhZ2UgdG9vIGxvbmcnKTtcbiAgfVxuICB2YXIgcHMgPSBuZXcgQnVmZmVyKGsgLSBtTGVuIC0gaExlbjIgLSAyKTtcbiAgcHMuZmlsbCgwKTtcbiAgdmFyIGRibGVuID0gayAtIGhMZW4gLSAxO1xuICB2YXIgc2VlZCA9IHJhbmRvbUJ5dGVzKGhMZW4pO1xuICB2YXIgbWFza2VkRGIgPSB4b3IoQnVmZmVyLmNvbmNhdChbaUhhc2gsIHBzLCBuZXcgQnVmZmVyKFsxXSksIG1zZ10sIGRibGVuKSwgbWdmKHNlZWQsIGRibGVuKSk7XG4gIHZhciBtYXNrZWRTZWVkID0geG9yKHNlZWQsIG1nZihtYXNrZWREYiwgaExlbikpO1xuICByZXR1cm4gbmV3IGJuKEJ1ZmZlci5jb25jYXQoW25ldyBCdWZmZXIoWzBdKSwgbWFza2VkU2VlZCwgbWFza2VkRGJdLCBrKSk7XG59XG5mdW5jdGlvbiBwa2NzMShrZXksIG1zZywgcmV2ZXJzZSl7XG4gIHZhciBtTGVuID0gbXNnLmxlbmd0aDtcbiAgdmFyIGsgPSBrZXkubW9kdWx1cy5ieXRlTGVuZ3RoKCk7XG4gIGlmIChtTGVuID4gayAtIDExKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdtZXNzYWdlIHRvbyBsb25nJyk7XG4gIH1cbiAgdmFyIHBzO1xuICBpZiAocmV2ZXJzZSkge1xuICAgIHBzID0gbmV3IEJ1ZmZlcihrIC0gbUxlbiAtIDMpO1xuICAgIHBzLmZpbGwoMHhmZik7XG4gIH0gZWxzZSB7XG4gICAgcHMgPSBub25aZXJvKGsgLSBtTGVuIC0gMyk7XG4gIH1cbiAgcmV0dXJuIG5ldyBibihCdWZmZXIuY29uY2F0KFtuZXcgQnVmZmVyKFswLCByZXZlcnNlPzE6Ml0pLCBwcywgbmV3IEJ1ZmZlcihbMF0pLCBtc2ddLCBrKSk7XG59XG5mdW5jdGlvbiBub25aZXJvKGxlbiwgY3J5cHRvKSB7XG4gIHZhciBvdXQgPSBuZXcgQnVmZmVyKGxlbik7XG4gIHZhciBpID0gMDtcbiAgdmFyIGNhY2hlID0gcmFuZG9tQnl0ZXMobGVuKjIpO1xuICB2YXIgY3VyID0gMDtcbiAgdmFyIG51bTtcbiAgd2hpbGUgKGkgPCBsZW4pIHtcbiAgICBpZiAoY3VyID09PSBjYWNoZS5sZW5ndGgpIHtcbiAgICAgIGNhY2hlID0gcmFuZG9tQnl0ZXMobGVuKjIpO1xuICAgICAgY3VyID0gMDtcbiAgICB9XG4gICAgbnVtID0gY2FjaGVbY3VyKytdO1xuICAgIGlmIChudW0pIHtcbiAgICAgIG91dFtpKytdID0gbnVtO1xuICAgIH1cbiAgfVxuICByZXR1cm4gb3V0O1xufSIsInZhciBibiA9IHJlcXVpcmUoJ2JuLmpzJyk7XG5mdW5jdGlvbiB3aXRoUHVibGljKHBhZGRlZE1zZywga2V5KSB7XG4gIHJldHVybiBuZXcgQnVmZmVyKHBhZGRlZE1zZ1xuICAgIC50b1JlZChibi5tb250KGtleS5tb2R1bHVzKSlcbiAgICAucmVkUG93KG5ldyBibihrZXkucHVibGljRXhwb25lbnQpKVxuICAgIC5mcm9tUmVkKClcbiAgICAudG9BcnJheSgpKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB3aXRoUHVibGljOyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24geG9yKGEsIGIpIHtcbiAgdmFyIGxlbiA9IGEubGVuZ3RoO1xuICB2YXIgaSA9IC0xO1xuICB3aGlsZSAoKytpIDwgbGVuKSB7XG4gICAgYVtpXSBePSBiW2ldO1xuICB9XG4gIHJldHVybiBhXG59OyIsIi8vIFB1cmUgSW1hZ2UgdXNlcyBleGlzdGluZyBsaWJyYXJpZXMgZm9yIGZvbnQgcGFyc2luZywganBlZy9wbmcgZW5jb2RlL2RlY29kZVxuLy8gYW5kIGJvcnJvd2VkIGNvZGUgZm9yIHRyYW5zZm9ybSBtYW5hZ2VtZW50IGFuZCB1bnNpZ25lZCBpbnRlZ2VyIG1hbmlwdWxhdGlvblxuXG4vLzIwMTQtMTEtMTQgIGxpbmUgY291bnQ6IDQxOCwgNDExLCA0MDcsIDM3NiwgMzc5LCAzNjdcbi8vMjAxNC0xMS0xNSAgbGluZSBjb3VudDogNDAxLCAzOTksIDM4NiwgMzY5LCAzNDksXG5cblxudmFyIG9wZW50eXBlID0gcmVxdWlyZSgnb3BlbnR5cGUuanMnKTtcbnZhciBmcyA9IHJlcXVpcmUoJ2ZzJyk7XG52YXIgUE5HID0gcmVxdWlyZSgncG5nanMnKS5QTkc7XG52YXIgSlBFRyA9IHJlcXVpcmUoJ2pwZWctanMnKTtcbnZhciB0cmFucyA9IHJlcXVpcmUoJy4vdHJhbnNmb3JtJyk7XG52YXIgdWludDMyID0gcmVxdWlyZSgnLi91aW50MzInKTtcblxudmFyIE5BTUVEX0NPTE9SUyA9IHtcbiAgICAnd2hpdGUnOjB4RkZGRkZGZmYsICdibGFjayc6MHgwMDAwMDBmZiwgICdyZWQnOjB4RkYwMDAwZmYsICAnZ3JlZW4nOjB4MDBGRjAwZmYsICdibHVlJzoweDAwMDBGRmZmLFxufVxudmFyIERFRkFVTFRfRk9OVF9GQU1JTFkgPSAnc291cmNlJztcblxuZnVuY3Rpb24gQml0bWFwNEJCUCh3LGgsb3B0aW9ucykge1xuICAgIHRoaXMud2lkdGggPSBNYXRoLmZsb29yKHcpO1xuICAgIHRoaXMuaGVpZ2h0ID0gTWF0aC5mbG9vcihoKTtcbiAgICB2YXIgZmlsbHZhbCA9IDB4MDAwMDAwRkY7XG4gICAgaWYob3B0aW9ucyAmJiAodHlwZW9mIG9wdGlvbnMuZmlsbHZhbCkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBmaWxsdmFsID0gb3B0aW9ucy5maWxsdmFsO1xuICAgIH1cbiAgICB0aGlzLl9idWZmZXIgPSBuZXcgQnVmZmVyKHRoaXMud2lkdGgqdGhpcy5oZWlnaHQqNCk7XG4gICAgdGhpcy5kYXRhID0gdGhpcy5fYnVmZmVyO1xuICAgIGZvcih2YXIgaT0wOyBpPHRoaXMud2lkdGg7IGkrKykge1xuICAgICAgICBmb3IodmFyIGo9MDsgajx0aGlzLmhlaWdodDsgaisrKSB7XG4gICAgICAgICAgICB0aGlzLl9idWZmZXIud3JpdGVVSW50MzJCRShmaWxsdmFsLCAoaip0aGlzLndpZHRoK2kpKjQpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHRoaXMuX2luZGV4ID0gZnVuY3Rpb24oeCx5KSB7XG4gICAgICAgIHJldHVybiAodGhpcy53aWR0aCAqIE1hdGguZmxvb3IoeSkgKyBNYXRoLmZsb29yKHgpKSo0O1xuICAgIH1cblxuICAgIHRoaXMuZ2V0Q29udGV4dCA9IGZ1bmN0aW9uKHR5cGUpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBCaXRtYXA0QkJQQ29udGV4dCh0aGlzKTtcbiAgICB9XG4gICAgdGhpcy5zZXRQaXhlbFJHQkEgPSBmdW5jdGlvbih4LHkscmdiYSkge1xuICAgICAgICB4ID0gTWF0aC5mbG9vcih4KTtcbiAgICAgICAgeSA9IE1hdGguZmxvb3IoeSk7XG4gICAgICAgIGlmKHggPCAwKSByZXR1cm47XG4gICAgICAgIGlmKHkgPCAwKSByZXR1cm47XG4gICAgICAgIGlmKHggPj0gdGhpcy53aWR0aCkgcmV0dXJuO1xuICAgICAgICBpZih5ID49IHRoaXMud2lkdGgpIHJldHVybjtcbiAgICAgICAgdmFyIGkgPSAodGhpcy53aWR0aCAqIHkgKyB4KSo0O1xuICAgICAgICB2YXIgYnl0ZXMgPSB1aW50MzIuZ2V0Qnl0ZXNCaWdFbmRpYW4ocmdiYSk7XG4gICAgICAgIHRoaXMuZGF0YVtpKzBdID0gYnl0ZXNbMF07XG4gICAgICAgIHRoaXMuZGF0YVtpKzFdID0gYnl0ZXNbMV07XG4gICAgICAgIHRoaXMuZGF0YVtpKzJdID0gYnl0ZXNbMl07XG4gICAgICAgIHRoaXMuZGF0YVtpKzNdID0gYnl0ZXNbM107XG4gICAgfVxuICAgIHRoaXMuc2V0UGl4ZWxSR0JBX2kgPSBmdW5jdGlvbih4LHkscixnLGIsYSkge1xuICAgICAgICB4ID0gTWF0aC5mbG9vcih4KTtcbiAgICAgICAgeSA9IE1hdGguZmxvb3IoeSk7XG4gICAgICAgIGlmKHggPCAwKSByZXR1cm47XG4gICAgICAgIGlmKHkgPCAwKSByZXR1cm47XG4gICAgICAgIGlmKHggPj0gdGhpcy53aWR0aCkgcmV0dXJuO1xuICAgICAgICBpZih5ID49IHRoaXMud2lkdGgpIHJldHVybjtcbiAgICAgICAgdmFyIGkgPSAodGhpcy53aWR0aCAqIHkgKyB4KSo0O1xuICAgICAgICB0aGlzLmRhdGFbaSswXSA9IHI7XG4gICAgICAgIHRoaXMuZGF0YVtpKzFdID0gZztcbiAgICAgICAgdGhpcy5kYXRhW2krMl0gPSBiO1xuICAgICAgICB0aGlzLmRhdGFbaSszXSA9IGE7XG4gICAgfVxuICAgIHRoaXMuZ2V0UGl4ZWxSR0JBID0gZnVuY3Rpb24oeCx5KSB7XG4gICAgICAgIHggPSBNYXRoLmZsb29yKHgpO1xuICAgICAgICB5ID0gTWF0aC5mbG9vcih5KTtcbiAgICAgICAgaWYoeDwwKSByZXR1cm4gMDtcbiAgICAgICAgaWYoeTwwKSByZXR1cm4gMDtcbiAgICAgICAgaWYoeCA+PSB0aGlzLndpZHRoKSByZXR1cm4gMDtcbiAgICAgICAgaWYoeSA+PSB0aGlzLndpZHRoKSByZXR1cm4gMDtcbiAgICAgICAgdmFyIGkgPSAodGhpcy53aWR0aCAqIHkgKyB4KSAqIDQ7XG4gICAgICAgIHJldHVybiB1aW50MzIuZnJvbUJ5dGVzQmlnRW5kaWFuKFxuICAgICAgICAgICAgdGhpcy5kYXRhW2krMF0sXG4gICAgICAgICAgICB0aGlzLmRhdGFbaSsxXSxcbiAgICAgICAgICAgIHRoaXMuZGF0YVtpKzJdLFxuICAgICAgICAgICAgdGhpcy5kYXRhW2krM10pO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gQml0bWFwNEJCUENvbnRleHQoYml0bWFwKSB7XG4gICAgLy93ZSBnZXQgbW9yZSB0aGFuIGEgZmFjdG9yIDJ4IHNwZWVkdXAgYnkgdXNpbmcgY2FjaGluZ1xuICAgIHRoaXMuVVNFX0ZPTlRfR0xZUEhfQ0FDSElORyA9IHRydWU7XG5cbiAgICB0aGlzLl9iaXRtYXAgPSBiaXRtYXA7XG4gICAgdGhpcy50cmFuc2Zvcm0gPSBuZXcgdHJhbnMuVHJhbnNmb3JtKCk7XG4gICAgdGhpcy5tb2RlID0gXCJPVkVSXCI7XG4gICAgdGhpcy5fc2V0dGluZ3MgPSB7XG4gICAgICAgIGZvbnQ6IHtcbiAgICAgICAgICAgIGZhbWlseTonc2VyaWYnLFxuICAgICAgICAgICAgc2l6ZTogMTQsXG4gICAgICAgIH1cbiAgICB9XG5cblxuICAgIC8vID09PSBDYW52YXMgY29udGV4dCA9PT09PT09PT09PT09PT09PT09XG4gICAgdGhpcy5zYXZlID0gZnVuY3Rpb24oKSB7ICAgICAgICAgICB0aGlzLnRyYW5zZm9ybS5zYXZlKCk7ICAgICAgICAgICB9XG4gICAgdGhpcy5yZXN0b3JlID0gZnVuY3Rpb24oKSB7ICAgICAgICB0aGlzLnRyYW5zZm9ybS5yZXN0b3JlKCk7ICAgICAgICB9XG4gICAgdGhpcy50cmFuc2xhdGUgPSBmdW5jdGlvbih4LHkpIHsgICB0aGlzLnRyYW5zZm9ybS50cmFuc2xhdGUoeCx5KTsgICB9XG5cblxuICAgIC8vID09PT09PT09PT0gIFBpeGVsIEFjY2VzcyA9PT09PT09PT09PT09XG5cbiAgICB0aGlzLl9pbmRleCA9IGZ1bmN0aW9uKHgseSkge1xuICAgICAgICB2YXIgcHQgPSB0aGlzLnRyYW5zZm9ybS50cmFuc2Zvcm1Qb2ludCh4LHkpO1xuICAgICAgICByZXR1cm4gKHRoaXMuX2JpdG1hcC53aWR0aCAqIE1hdGguZmxvb3IocHQueSkgKyBNYXRoLmZsb29yKHB0LngpKSo0O1xuICAgIH1cblxuICAgIHRoaXMuZ2V0UGl4ZWxpMzIgPSBmdW5jdGlvbih4LHkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2JpdG1hcC5fYnVmZmVyLnJlYWRVSW50MzJCRSh0aGlzLl9pbmRleCh4LHkpKTtcbiAgICB9XG4gICAgdGhpcy5zZXRQaXhlbGkzMiA9IGZ1bmN0aW9uKHgseSwgaW50KSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9iaXRtYXAuX2J1ZmZlci53cml0ZVVJbnQzMkJFKGludCx0aGlzLl9pbmRleCh4LHkpKTtcbiAgICB9XG5cbiAgICAvLyA9PT09PT09PT09PT09PT0gIHN0eWxlIHN0YXRlXG5cbiAgICB0aGlzLl9maWxsQ29sb3IgPSAweEZGRkZGRkZGOyAgIC8vIHRoZSByZWFsIGludCBob2xkaW5nIHRoZSBSR0JBIHZhbHVlXG4gICAgdGhpcy5fZmlsbFN0eWxlX3RleHQgPSBcImJsYWNrXCI7IC8vIHRoZSB0ZXh0IHZlcnNpb24gc2V0IGJ5IHVzaW5nIHRoZSBmaWxsU3R5bGUgc2V0dGVyLlxuICAgIHRoaXMuX3N0cm9rZUNvbG9yID0gMHgwMDAwMDBGRjtcbiAgICB0aGlzLl9zdHJva2VTdHlsZV90ZXh0ID0gXCJibGFja1wiO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCAnZmlsbFN0eWxlJywge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpcy5fZmlsbFN0eWxlX3RleHQ7IH0sXG4gICAgICAgIHNldDogZnVuY3Rpb24odmFsKSB7XG4gICAgICAgICAgICB0aGlzLl9maWxsQ29sb3IgPSBjb2xvclN0cmluZ1RvVWludDMyKHZhbCk7XG4gICAgICAgICAgICB0aGlzLl9maWxsU3R5bGVfdGV4dCA9IHZhbDtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCAnc3Ryb2tlU3R5bGUnLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzLl9zdHJva2VTdHlsZV90ZXh0OyB9LFxuICAgICAgICBzZXQ6IGZ1bmN0aW9uKHZhbCkge1xuICAgICAgICAgICAgdGhpcy5fc3Ryb2tlQ29sb3IgPSBjb2xvclN0cmluZ1RvVWludDMyKHZhbCk7XG4gICAgICAgICAgICB0aGlzLl9zdHJva2VTdHlsZV90ZXh0ID0gdmFsO1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyA9PT09PT09PT09PT09PT09PSBkcmF3aW5nIGNvbW1hbmRzXG4gICAgLy9zZXRzIGEgcGl4ZWwgd2l0aCBwcm9wZXIgYWxwaGEgY29tcG9zaXRpbmdcbiAgICB0aGlzLmNvbXBvc2l0ZVBpeGVsICA9IGZ1bmN0aW9uKHgseSwgbmV3X2ludCkge1xuICAgICAgICBpZih4PDApIHJldHVybjtcbiAgICAgICAgaWYoeTwwKSByZXR1cm47XG4gICAgICAgIGlmKHggPj0gdGhpcy5fYml0bWFwLndpZHRoKSByZXR1cm47XG4gICAgICAgIGlmKHkgPj0gdGhpcy5fYml0bWFwLmhlaWdodCkgcmV0dXJuO1xuICAgICAgICB2YXIgbiA9IHRoaXMuX2luZGV4KE1hdGguZmxvb3IoeCksTWF0aC5mbG9vcih5KSk7XG4gICAgICAgIHZhciBvbGRfaW50ID0gdGhpcy5fYml0bWFwLl9idWZmZXIucmVhZFVJbnQzMkJFKG4pO1xuICAgICAgICB2YXIgZmluYWxfaW50ID0gZXhwb3J0cy5jb21wb3NpdGVQaXhlbChuZXdfaW50LG9sZF9pbnQsdGhpcy5tb2RlKTtcbiAgICAgICAgdGhpcy5fYml0bWFwLl9idWZmZXIud3JpdGVVSW50MzJCRShmaW5hbF9pbnQsbik7XG4gICAgfVxuXG4gICAgdGhpcy5kcmF3SW1hZ2UyID0gZnVuY3Rpb24oaW1nMixcbiAgICAgICAgc3gsc3ksc3csc2gsXG4gICAgICAgIGR4LGR5LGR3LGRoKSB7XG4gICAgICAgIC8vY29uc29sZS5sb2coJ2RyYXcgaW1hZ2UyIGludm9rZWQnLHN4LHN5LHN3LHNoLCBkeCxkeSxkdyxkaCk7XG4gICAgICAgIC8vY29uc29sZS5sb2coXCJ0aGlzIGltYWdlID0gXCIsIHRoaXMuX2JpdG1hcC53aWR0aCwgdGhpcy5fYml0bWFwLmhlaWdodCk7XG4gICAgICAgIHZhciBpMncgPSBpbWcyLndpZHRoO1xuICAgICAgICB2YXIgaTJoID0gaW1nMi5oZWlnaHQ7XG4gICAgICAgIHZhciBpMXcgPSB0aGlzLl9iaXRtYXAud2lkdGg7XG4gICAgICAgIHZhciBpMWggPSB0aGlzLl9iaXRtYXAuaGVpZ2h0O1xuICAgICAgICBmb3IodmFyIGo9MDsgajxzaDsgaisrKSB7XG4gICAgICAgICAgICBmb3IodmFyIGk9MDsgaTxzdzsgaSsrKSB7XG4gICAgICAgICAgICAgICAgdmFyIG5zID0gKChzeStqKSppMncgKyAoc3graSkpKjQ7XG4gICAgICAgICAgICAgICAgdmFyIG5kID0gKChkeStqKSppMXcgKyAoZHgraSkpKjQ7XG4gICAgICAgICAgICAgICAgdmFyIG92YWwgPSB0aGlzLl9iaXRtYXAuX2J1ZmZlci5yZWFkVUludDMyQkUobmQpO1xuICAgICAgICAgICAgICAgIHZhciBudmFsID0gaW1nMi5fYnVmZmVyLnJlYWRVSW50MzJCRShucyk7XG4gICAgICAgICAgICAgICAgdmFyIGZ2YWwgPSBleHBvcnRzLmNvbXBvc2l0ZVBpeGVsKG52YWwsb3ZhbCwgdGhpcy5tb2RlKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9iaXRtYXAuX2J1ZmZlci53cml0ZVVJbnQzMkJFKGZ2YWwsbmQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICB9XG4gICAgdGhpcy5kcmF3SW1hZ2UgPSBmdW5jdGlvbihiaXRtYXAsIHN4LHN5LHN3LHNoLCBkeCwgZHksIGR3LCBkaCkge1xuICAgICAgICBmb3IodmFyIGk9ZHg7IGk8ZHgrZHc7IGkrKykge1xuICAgICAgICAgICAgZm9yKHZhciBqPWR5OyBqPGR5K2RoOyBqKyspIHtcbiAgICAgICAgICAgICAgICB2YXIgdHggPSAoaS1keCkvKGR4K2R3KTtcbiAgICAgICAgICAgICAgICB2YXIgc3N4ID0gTWF0aC5mbG9vcih0eCAqIGJpdG1hcC53aWR0aCk7XG4gICAgICAgICAgICAgICAgdmFyIHR5ID0gKGotZHkpLyhkeStkaCk7XG4gICAgICAgICAgICAgICAgdmFyIHNzeSA9IE1hdGguZmxvb3IodHkgKiBiaXRtYXAuaGVpZ2h0KTtcbiAgICAgICAgICAgICAgICB2YXIgcmdiYSA9IGJpdG1hcC5nZXRQaXhlbFJHQkEoc3N4LHNzeSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fYml0bWFwLnNldFBpeGVsUkdCQShpLCBqLCByZ2JhKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuXG4gICAgdGhpcy5iZWdpblBhdGggPSBmdW5jdGlvbigpIHtcbiAgICAgICAgdGhpcy5wYXRoID0gW107XG4gICAgfVxuXG4gICAgdGhpcy5tb3ZlVG8gPSBmdW5jdGlvbih4LHkpIHtcbiAgICAgICAgdGhpcy5wYXRoc3RhcnQgPSBtYWtlUG9pbnQoeCx5KTtcbiAgICAgICAgdGhpcy5wYXRoLnB1c2goWydtJyx4LHldKTtcbiAgICB9XG4gICAgdGhpcy5jbG9zZVBhdGggPSBmdW5jdGlvbigpIHtcbiAgICAgICAgdGhpcy5saW5lVG8odGhpcy5wYXRoc3RhcnQueCx0aGlzLnBhdGhzdGFydC55KTtcbiAgICB9XG4gICAgdGhpcy5saW5lVG8gPSBmdW5jdGlvbih4LHkpIHtcbiAgICAgICAgdGhpcy5wYXRoLnB1c2goWydsJyx4LHldKTtcbiAgICB9XG4gICAgdGhpcy5xdWFkcmF0aWNDdXJ2ZVRvID0gZnVuY3Rpb24oY3AxeCwgY3AxeSwgeCwgeSkge1xuICAgICAgICB0aGlzLnBhdGgucHVzaChbJ3EnLCBjcDF4LCBjcDF5LCB4LCB5XSk7XG4gICAgfVxuICAgIHRoaXMuYmV6aWVyQ3VydmVUbyA9IGZ1bmN0aW9uKGNwMXgsIGNwMXksIGNwMngsIGNwMnksIHgsIHkpIHtcbiAgICAgICAgdGhpcy5wYXRoLnB1c2goWydiJywgY3AxeCwgY3AxeSwgY3AyeCwgY3AyeSwgeCwgeV0pO1xuICAgIH1cbiAgICB0aGlzLmFyYyA9IGZ1bmN0aW9uKHgseSwgcmFkLCBzdGFydCwgZW5kLCBjbG9ja3dpc2UpIHtcbiAgICAgICAgZnVuY3Rpb24gYWRkQ2lyY2xlUG9pbnQoY3R4LHR5cGUsYSkge1xuICAgICAgICAgICAgY3R4LnBhdGgucHVzaChbdHlwZSx4K01hdGguc2luKGEpKnJhZCx5K01hdGguY29zKGEpKnJhZF0pO1xuICAgICAgICB9XG4gICAgICAgIGFkZENpcmNsZVBvaW50KHRoaXMsJ20nLHN0YXJ0KTtcbiAgICAgICAgZm9yKHZhciBhPXN0YXJ0OyBhPD1lbmQ7IGErPU1hdGguUEkvMTYpICBhZGRDaXJjbGVQb2ludCh0aGlzLCdsJyxhKTtcbiAgICAgICAgYWRkQ2lyY2xlUG9pbnQodGhpcywnbCcsZW5kKTtcbiAgICB9XG5cbiAgICB0aGlzLmZpbGwgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgLy9nZXQganVzdCB0aGUgY29sb3IgcGFydFxuICAgICAgICB2YXIgcmdiID0gdWludDMyLmFuZCh0aGlzLl9maWxsQ29sb3IsMHhGRkZGRkYwMCk7XG4gICAgICAgIHZhciBsaW5lcyA9IHBhdGhUb0xpbmVzKHRoaXMucGF0aCk7XG4gICAgICAgIHZhciBib3VuZHMgPSBjYWxjTWluaW11bUJvdW5kcyhsaW5lcyk7XG4gICAgICAgIHZhciBzdGFydFkgPSBNYXRoLm1pbihib3VuZHMueTItMSwgYml0bWFwLmhlaWdodCk7XG4gICAgICAgIHZhciBlbmRZID0gTWF0aC5tYXgoYm91bmRzLnksIDApO1xuXG4gICAgICAgIGZvcih2YXIgaj1zdGFydFk7IGo+PWVuZFk7IGotLSkge1xuICAgICAgICAgICAgdmFyIGludHMgPSBjYWxjU29ydGVkSW50ZXJzZWN0aW9ucyhsaW5lcyxqKTtcbiAgICAgICAgICAgIC8vZmlsbCBiZXR3ZWVuIGVhY2ggcGFpciBvZiBpbnRlcnNlY3Rpb25zXG4gICAgICAgICAgICBmb3IodmFyIGk9MDsgaTxpbnRzLmxlbmd0aDsgaSs9Mikge1xuICAgICAgICAgICAgICAgIHZhciBmc3RhcnRmID0gZnJhY3QoaW50c1tpXSk7XG4gICAgICAgICAgICAgICAgdmFyIGZlbmRmICAgPSBmcmFjdChpbnRzW2krMV0pO1xuICAgICAgICAgICAgICAgIHZhciBzdGFydCA9IE1hdGguZmxvb3IoaW50c1tpXSk7XG4gICAgICAgICAgICAgICAgdmFyIGVuZCAgID0gTWF0aC5mbG9vcihpbnRzW2krMV0pO1xuICAgICAgICAgICAgICAgIGZvcih2YXIgaWk9c3RhcnQ7IGlpPD1lbmQ7IGlpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgaWYoaWkgPT0gc3RhcnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vZmlyc3RcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpbnQgPSB1aW50MzIub3IocmdiLCgxLWZzdGFydGYpKjI1NSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbXBvc2l0ZVBpeGVsKGlpLGosIGludCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZihpaSA9PSBlbmQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vbGFzdFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGludCA9IHVpbnQzMi5vcihyZ2IsZmVuZGYqMjU1KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29tcG9zaXRlUGl4ZWwoaWksaiwgaW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCJmaWxsaW5nXCIsaWksaik7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29tcG9zaXRlUGl4ZWwoaWksaiwgdGhpcy5fZmlsbENvbG9yKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5zdHJva2UgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIGxpbmVzID0gcGF0aFRvTGluZXModGhpcy5wYXRoKTtcbiAgICAgICAgdmFyIGN0eCA9IHRoaXM7XG4gICAgICAgIGxpbmVzLmZvckVhY2goZnVuY3Rpb24obGluZSl7XG4gICAgICAgICAgICBkcmF3TGluZShjdHgsIGxpbmUsIGN0eC5fc3Ryb2tlQ29sb3IsIGN0eC5saW5lV2lkdGgpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtYWtlUmVjdFBhdGgoY3R4LHgseSx3LGgpIHtcbiAgICAgICAgY3R4LmJlZ2luUGF0aCgpO1xuICAgICAgICBjdHgubW92ZVRvKHgseSk7XG4gICAgICAgIGN0eC5saW5lVG8oeCt3LHkpO1xuICAgICAgICBjdHgubGluZVRvKHgrdyx5K2gpO1xuICAgICAgICBjdHgubGluZVRvKHgseStoKTtcbiAgICAgICAgY3R4LmNsb3NlUGF0aCgpO1xuICAgIH1cblxuICAgIHRoaXMuZmlsbFJlY3QgICA9IGZ1bmN0aW9uKHgseSx3LGgpIHsgIG1ha2VSZWN0UGF0aCh0aGlzLHgseSx3LGgpOyAgIHRoaXMuZmlsbCgpOyAgICB9XG5cbiAgICB0aGlzLnN0cm9rZVJlY3QgPSBmdW5jdGlvbih4LHksdyxoKSB7ICBtYWtlUmVjdFBhdGgodGhpcyx4LHksdyxoKTsgICB0aGlzLnN0cm9rZSgpOyAgfVxuXG4gICAgdGhpcy5jbGVhclJlY3QgID0gZnVuY3Rpb24oeCx5LHcsaCkge1xuICAgICAgZm9yKHZhciBpPXg7IGk8eCt3OyBpKyspIHtcbiAgICAgICAgZm9yKHZhciBqPXk7IGo8eStoOyBqKyspIHtcbiAgICAgICAgICB0aGlzLnNldFBpeGVsaTMyKGksaiwweDAwMDAwMDAwKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuXG5cbiAgICAvLyA9PT09PT09PT09PT09PT09ICBGb250cyBhbmQgVGV4dCBEcmF3aW5nXG5cbiAgICB0aGlzLnNldEZvbnQgPSBmdW5jdGlvbihmYW1pbHksIHNpemUpIHtcbiAgICAgICAgdGhpcy5fc2V0dGluZ3MuZm9udC5mYW1pbHkgPSBmYW1pbHk7XG4gICAgICAgIGlmKCFfZm9udHNbZmFtaWx5XSkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coXCJXQVJOSU5HLiBNSVNTSU5HIEZPTlQgRkFNSUxZXCIsZmFtaWx5KTtcbiAgICAgICAgICAgIHRoaXMuX3NldHRpbmdzLmZvbnQuZmFtaWx5ID0gREVGQVVMVF9GT05UX0ZBTUlMWTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9zZXR0aW5ncy5mb250LnNpemUgPSBzaXplO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gcmVuZGVyR2x5cGhUb0JpdG1hcChmb250LCBjaCwgc2l6ZSkge1xuICAgICAgICB2YXIgeXNpemUgPSAoZm9udC5mb250LmFzY2VuZGVyIC0gZm9udC5mb250LmRlc2NlbmRlcikvZm9udC5mb250LnVuaXRzUGVyRW0qc2l6ZTtcbiAgICAgICAgdmFyIGdseXBoID0gZm9udC5mb250LmNoYXJUb0dseXBoKGNoKTtcbiAgICAgICAgdmFyIHlzaXplID0gKGdseXBoLnlNYXgtZ2x5cGgueU1pbikvZm9udC5mb250LnVuaXRzUGVyRW0qc2l6ZTtcbiAgICAgICAgdmFyIHhzaXplID0gKGdseXBoLnhNYXgtZ2x5cGgueE1pbikvZm9udC5mb250LnVuaXRzUGVyRW0qc2l6ZSArIDM7XG5cbiAgICAgICAgdmFyIHBhdGggPSBmb250LmZvbnQuZ2V0UGF0aChjaCwgMCwgZ2x5cGgueU1heC9mb250LmZvbnQudW5pdHNQZXJFbSpzaXplLCBzaXplKTtcbiAgICAgICAgdmFyIGJpdG1hcCA9IGV4cG9ydHMubWFrZShcbiAgICAgICAgICAgICAgICBNYXRoLmNlaWwoeHNpemUpLFxuICAgICAgICAgICAgICAgIE1hdGguY2VpbCh5c2l6ZSksIHsgZmlsbHZhbDogdWludDMyLnRvVWludDMyKDB4MDAwMDAwMDApIH0pO1xuICAgICAgICB2YXIgY3R4ID0gYml0bWFwLmdldENvbnRleHQoJzJkJyk7XG4gICAgICAgIGN0eC5maWxsU3R5bGUgPSAnIzAwMDAwMCc7XG4gICAgICAgIGN0eC5tb2RlID0gXCJSRVBMQUNFXCI7XG5cbiAgICAgICAgY3R4LmJlZ2luUGF0aCgpO1xuICAgICAgICB2YXIgZmlsbCA9IHRydWU7XG4gICAgICAgIHBhdGguY29tbWFuZHMuZm9yRWFjaChmdW5jdGlvbihjbWQpIHtcbiAgICAgICAgICAgIHN3aXRjaChjbWQudHlwZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ00nOiBjdHgubW92ZVRvKGNtZC54LGNtZC55KTsgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnUSc6IGN0eC5xdWFkcmF0aWNDdXJ2ZVRvKGNtZC54MSxjbWQueTEsY21kLngsY21kLnkpOyBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdMJzogY3R4LmxpbmVUbyhjbWQueCxjbWQueSk7IGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ1onOiBjdHguY2xvc2VQYXRoKCk7IGZpbGw/Y3R4LmZpbGwoKTpjdHguc3Ryb2tlKCk7IGN0eC5iZWdpblBhdGgoKTsgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBjdHgubW9kZSA9IFwiT1ZFUlwiO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcGF0aDogcGF0aCxcbiAgICAgICAgICAgIGJpdG1hcDogYml0bWFwLFxuICAgICAgICAgICAgZ2x5cGg6IGdseXBoLFxuICAgICAgICAgICAgYWR2YW5jZTogZ2x5cGguYWR2YW5jZVdpZHRoL2ZvbnQuZm9udC51bml0c1BlckVtKnNpemUsXG4gICAgICAgICAgICBhc2NlbnQ6IGdseXBoLnlNYXgvZm9udC5mb250LnVuaXRzUGVyRW0qc2l6ZSxcbiAgICAgICAgICAgIGRlc2NlbnQ6IGdseXBoLnlNaW4vZm9udC5mb250LnVuaXRzUGVyRW0qc2l6ZSxcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuY29weUltYWdlID0gZnVuY3Rpb24oaW1nMiwgZngsZnksIGNvbG9yKSB7XG4gICAgICAgIHZhciBjcmdiID0gdWludDMyLmdldEJ5dGVzQmlnRW5kaWFuKGNvbG9yKTtcbiAgICAgICAgdmFyIHggPSBNYXRoLmZsb29yKGZ4KTtcbiAgICAgICAgdmFyIHkgPSBNYXRoLmZsb29yKGZ5KTtcbiAgICAgICAgdmFyIGkydyA9IGltZzIud2lkdGg7XG4gICAgICAgIHZhciBpMmggPSBpbWcyLmhlaWdodDtcbiAgICAgICAgdmFyIGkxdyA9IHRoaXMuX2JpdG1hcC53aWR0aDtcbiAgICAgICAgdmFyIGkxaCA9IHRoaXMuX2JpdG1hcC5oZWlnaHQ7XG4gICAgICAgIGZvcih2YXIgaj0wOyBqPGkyaDsgaisrKSB7XG4gICAgICAgICAgICBmb3IodmFyIGk9MDsgaTxpMnc7IGkrKykge1xuICAgICAgICAgICAgICAgIGlmKHgraSA+PSBpMXcpIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGlmKHgraSA8IDApIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGlmKHkraiA+PSBpMWgpIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGlmKHkraiA8IDApIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIHZhciBucyA9IChqKmkydyArIGkpKjQ7XG4gICAgICAgICAgICAgICAgdmFyIGFscGhhID0gaW1nMi5fYnVmZmVyW25zKzNdO1xuICAgICAgICAgICAgICAgIC8vc2tpcCBmdWxseSB0cmFuc3BhcmVudCBwaXhlbHNcbiAgICAgICAgICAgICAgICBpZihhbHBoYSA9PSAwKSBjb250aW51ZTtcblxuICAgICAgICAgICAgICAgIHZhciBuZCA9ICgoait5KSppMXcgKyAoeCtpKSkqNDtcbiAgICAgICAgICAgICAgICB2YXIgb3ZhbCA9IHRoaXMuX2JpdG1hcC5fYnVmZmVyLnJlYWRVSW50MzJCRShuZCk7XG4gICAgICAgICAgICAgICAgdmFyIG52YWwyID0gdWludDMyLmZyb21CeXRlc0JpZ0VuZGlhbihjcmdiWzBdLGNyZ2JbMV0sY3JnYlsyXSxhbHBoYSk7XG4gICAgICAgICAgICAgICAgdmFyIGZ2YWwgPSBleHBvcnRzLmNvbXBvc2l0ZVBpeGVsKG52YWwyLG92YWwsIHRoaXMubW9kZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fYml0bWFwLl9idWZmZXIud3JpdGVVSW50MzJCRShmdmFsLG5kKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIHByb2Nlc3NUZXh0UGF0aChjdHgsdGV4dCx4LHksIGZpbGwpIHtcbiAgICAgICAgdmFyIGZvbnQgPSBfZm9udHNbY3R4Ll9zZXR0aW5ncy5mb250LmZhbWlseV07XG4gICAgICAgIHZhciBzaXplID0gY3R4Ll9zZXR0aW5ncy5mb250LnNpemU7XG4gICAgICAgIGlmKGN0eC5VU0VfRk9OVF9HTFlQSF9DQUNISU5HKSB7XG4gICAgICAgICAgICB2YXIgb2ZmID0gMDtcbiAgICAgICAgICAgIGZvcih2YXIgaT0wOyBpPHRleHQubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICB2YXIgY2ggPSB0ZXh0W2ldO1xuICAgICAgICAgICAgICAgIGlmKCFjYWNoZS5jb250YWlucyhmb250LHNpemUsY2gpKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBnbHlwaCA9IHJlbmRlckdseXBoVG9CaXRtYXAoZm9udCxjaCxzaXplKTtcbiAgICAgICAgICAgICAgICAgICAgY2FjaGUuaW5zZXJ0KGZvbnQsc2l6ZSxjaCxnbHlwaCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhciBnbHlwaCA9IGNhY2hlLmdldChmb250LHNpemUsY2gpO1xuICAgICAgICAgICAgICAgIHZhciBmeCA9IHgrb2ZmO1xuICAgICAgICAgICAgICAgIHZhciBmeSA9IHktZ2x5cGguYXNjZW50O1xuICAgICAgICAgICAgICAgIHZhciBmcHQgPSBjdHgudHJhbnNmb3JtLnRyYW5zZm9ybVBvaW50KGZ4LGZ5KTtcbiAgICAgICAgICAgICAgICBjdHguY29weUltYWdlKGdseXBoLmJpdG1hcCwgTWF0aC5mbG9vcihmcHQueCksIE1hdGguZmxvb3IoZnB0LnkpLCBjdHguX2ZpbGxDb2xvcik7XG4gICAgICAgICAgICAgICAgb2ZmICs9IGdseXBoLmFkdmFuY2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2YXIgcGF0aCA9IGZvbnQuZm9udC5nZXRQYXRoKHRleHQsIHgsIHksIGN0eC5fc2V0dGluZ3MuZm9udC5zaXplKTtcbiAgICAgICAgICAgIGN0eC5iZWdpblBhdGgoKTtcbiAgICAgICAgICAgIHBhdGguY29tbWFuZHMuZm9yRWFjaChmdW5jdGlvbihjbWQpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2goY21kLnR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnTSc6IGN0eC5tb3ZlVG8oY21kLngsY21kLnkpOyBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnUSc6IGN0eC5xdWFkcmF0aWNDdXJ2ZVRvKGNtZC54MSxjbWQueTEsY21kLngsY21kLnkpOyBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnTCc6IGN0eC5saW5lVG8oY21kLngsY21kLnkpOyBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnWic6IGN0eC5jbG9zZVBhdGgoKTsgZmlsbD9jdHguZmlsbCgpOmN0eC5zdHJva2UoKTsgY3R4LmJlZ2luUGF0aCgpOyBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmZpbGxUZXh0ICAgPSBmdW5jdGlvbih0ZXh0LCB4LCB5KSB7ICBwcm9jZXNzVGV4dFBhdGgodGhpcywgdGV4dCwgeCx5LCB0cnVlKTsgIH1cbiAgICB0aGlzLnN0cm9rZVRleHQgPSBmdW5jdGlvbih0ZXh0LCB4LCB5KSB7ICBwcm9jZXNzVGV4dFBhdGgodGhpcywgdGV4dCwgeCx5LCBmYWxzZSk7IH1cblxuICAgIHRoaXMubWVhc3VyZVRleHQgPSBmdW5jdGlvbih0ZXh0KSB7XG4gICAgICAgIHZhciBmb250ID0gX2ZvbnRzW3RoaXMuX3NldHRpbmdzLmZvbnQuZmFtaWx5XTtcbiAgICAgICAgaWYoIWZvbnQpIGNvbnNvbGUubG9nKFwiV0FSTklORy4gQ2FuJ3QgZmluZCBmb250IGZhbWlseSBcIiwgdGhpcy5fc2V0dGluZ3MuZm9udC5mYW1pbHkpO1xuICAgICAgICB2YXIgZnNpemUgPSB0aGlzLl9zZXR0aW5ncy5mb250LnNpemU7XG4gICAgICAgIHZhciBnbHlwaHMgPSBmb250LmZvbnQuc3RyaW5nVG9HbHlwaHModGV4dCk7XG4gICAgICAgIHZhciBhZHZhbmNlID0gMDtcbiAgICAgICAgZ2x5cGhzLmZvckVhY2goZnVuY3Rpb24oZykgeyBhZHZhbmNlICs9IGcuYWR2YW5jZVdpZHRoOyB9KTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgd2lkdGg6IGFkdmFuY2UvZm9udC5mb250LnVuaXRzUGVyRW0qZnNpemUsXG4gICAgICAgICAgICBlbUhlaWdodEFzY2VudDogZm9udC5mb250LmFzY2VuZGVyL2ZvbnQuZm9udC51bml0c1BlckVtKmZzaXplLFxuICAgICAgICAgICAgZW1IZWlnaHREZXNjZW50OiBmb250LmZvbnQuZGVzY2VuZGVyL2ZvbnQuZm9udC51bml0c1BlckVtKmZzaXplLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHRoaXMuZ2V0SW1hZ2VEYXRhID0gZnVuY3Rpb24oeCwgeSwgd2lkaCwgaGVpZ2h0KSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBkYXRhOiBuZXcgVWludDhBcnJheSh0aGlzLl9iaXRtYXAuX2J1ZmZlcilcbiAgICAgIH07XG4gICAgfTtcbn1cblxuZXhwb3J0cy5tYWtlID0gZnVuY3Rpb24odyxoLG9wdGlvbnMpIHtcbiAgICByZXR1cm4gbmV3IEJpdG1hcDRCQlAodyxoLG9wdGlvbnMpO1xufVxuXG5leHBvcnRzLmVuY29kZVBORyA9IGZ1bmN0aW9uKGJpdG1hcCwgb3V0c3RyZWFtLCBjYikge1xuICAgIHZhciBwbmcgPSBuZXcgUE5HKHtcbiAgICAgICAgd2lkdGg6Yml0bWFwLndpZHRoLFxuICAgICAgICBoZWlnaHQ6Yml0bWFwLmhlaWdodCxcbiAgICB9KTtcblxuICAgIGZvcih2YXIgaT0wOyBpPGJpdG1hcC53aWR0aDsgaSsrKSB7XG4gICAgICAgIGZvcih2YXIgaj0wOyBqPGJpdG1hcC5oZWlnaHQ7IGorKykge1xuICAgICAgICAgICAgZm9yKHZhciBrPTA7IGs8NDsgaysrKSB7XG4gICAgICAgICAgICAgICAgdmFyIG4gPSAoaipiaXRtYXAud2lkdGgraSkqNCArIGs7XG4gICAgICAgICAgICAgICAgcG5nLmRhdGFbbl0gPSBiaXRtYXAuX2J1ZmZlcltuXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHBuZy5wYWNrKCkucGlwZShvdXRzdHJlYW0pLm9uKCdmaW5pc2gnLCBjYik7XG59XG5cbmV4cG9ydHMuZW5jb2RlUE5HU3luYyA9IGZ1bmN0aW9uKGJpdG1hcCkge1xuICAgIHZhciBwbmcgPSBuZXcgUE5HKHtcbiAgICAgICAgd2lkdGg6IGJpdG1hcC53aWR0aCxcbiAgICAgICAgaGVpZ2h0OiBiaXRtYXAuaGVpZ2h0LFxuICAgIH0pO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBiaXRtYXAud2lkdGg7IGkrKykge1xuICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGJpdG1hcC5oZWlnaHQ7IGorKykge1xuICAgICAgICAgICAgZm9yICh2YXIgayA9IDA7IGsgPCA0OyBrKyspIHtcbiAgICAgICAgICAgICAgICB2YXIgbiA9IChqICogYml0bWFwLndpZHRoICsgaSkgKiA0ICsgaztcbiAgICAgICAgICAgICAgICBwbmcuZGF0YVtuXSA9IGJpdG1hcC5fYnVmZmVyW25dO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIFBORy5zeW5jLndyaXRlKHBuZyk7XG59XG5cbmV4cG9ydHMuZW5jb2RlSlBFRyA9IGZ1bmN0aW9uKGJpdG1hcCwgb3V0c3RyZWFtLCBjYikge1xuICAgIHZhciBkYXRhID0ge1xuICAgICAgICBkYXRhOmJpdG1hcC5fYnVmZmVyLFxuICAgICAgICB3aWR0aDpiaXRtYXAud2lkdGgsXG4gICAgICAgIGhlaWdodDpiaXRtYXAuaGVpZ2h0LFxuICAgIH1cbiAgICBvdXRzdHJlYW0ud3JpdGUoSlBFRy5lbmNvZGUoZGF0YSwgNTApLmRhdGEsZnVuY3Rpb24oKXtcbiAgICAgICAgaWYoY2IpY2IoKTtcbiAgICB9KTtcbn1cblxuZXhwb3J0cy5kZWNvZGVKUEVHID0gZnVuY3Rpb24oZGF0YSkge1xuICAgIHZhciByYXdJbWFnZURhdGEgPSBKUEVHLmRlY29kZShkYXRhKTtcbiAgICB2YXIgYml0bWFwID0gbmV3IEJpdG1hcDRCQlAocmF3SW1hZ2VEYXRhLndpZHRoLCByYXdJbWFnZURhdGEuaGVpZ2h0KTtcbiAgICBmb3IodmFyIGk9MDsgaTxyYXdJbWFnZURhdGEud2lkdGg7IGkrKykge1xuICAgICAgICBmb3IodmFyIGo9MDsgajxyYXdJbWFnZURhdGEuaGVpZ2h0OyBqKyspIHtcbiAgICAgICAgICAgIHZhciBuID0gKGoqcmF3SW1hZ2VEYXRhLndpZHRoICsgaSkqNDtcbiAgICAgICAgICAgIGJpdG1hcC5zZXRQaXhlbFJHQkFfaShpLGosXG4gICAgICAgICAgICAgICAgcmF3SW1hZ2VEYXRhLmRhdGFbbiswXSxcbiAgICAgICAgICAgICAgICByYXdJbWFnZURhdGEuZGF0YVtuKzFdLFxuICAgICAgICAgICAgICAgIHJhd0ltYWdlRGF0YS5kYXRhW24rMl0sXG4gICAgICAgICAgICAgICAgcmF3SW1hZ2VEYXRhLmRhdGFbbiszXVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gYml0bWFwO1xufVxuXG5leHBvcnRzLmRlY29kZVBORyA9IGZ1bmN0aW9uKGluc3RyZWFtLCBjYikge1xuICAgIGluc3RyZWFtLnBpcGUobmV3IFBORygpKVxuICAgIC5vbihcInBhcnNlZFwiLCBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIGJpdG1hcCA9ICBuZXcgQml0bWFwNEJCUCh0aGlzLndpZHRoLHRoaXMuaGVpZ2h0KTtcbiAgICAgICAgZm9yKHZhciBpPTA7IGk8Yml0bWFwLl9idWZmZXIubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGJpdG1hcC5fYnVmZmVyW2ldID0gdGhpcy5kYXRhW2ldO1xuICAgICAgICB9O1xuICAgICAgICBpZihjYikgY2IoYml0bWFwKTtcbiAgICB9KTtcbn1cblxuXG52YXIgX2ZvbnRzID0geyB9XG5cbmV4cG9ydHMucmVnaXN0ZXJGb250ID0gZnVuY3Rpb24oYmluYXJ5LCBmYW1pbHksIHdlaWdodCwgc3R5bGUsIHZhcmlhbnQpIHtcbiAgICBfZm9udHNbZmFtaWx5XSA9IHtcbiAgICAgICAgYmluYXJ5OiBiaW5hcnksXG4gICAgICAgIGZhbWlseTogZmFtaWx5LFxuICAgICAgICB3ZWlnaHQ6IHdlaWdodCxcbiAgICAgICAgc3R5bGU6IHN0eWxlLFxuICAgICAgICB2YXJpYW50OiB2YXJpYW50LFxuICAgICAgICBsb2FkZWQ6IGZhbHNlLFxuICAgICAgICBmb250OiBudWxsLFxuICAgICAgICBsb2FkOiBmdW5jdGlvbihjYikge1xuICAgICAgICAgICAgY29uc29sZS5sb2coXCJQdXJlSW1hZ2UgbG9hZGluZ1wiLCBmYW1pbHksd2VpZ2h0LHN0eWxlLHZhcmlhbnQpO1xuICAgICAgICAgICAgaWYodGhpcy5sb2FkZWQpIHtcbiAgICAgICAgICAgICAgICBpZihjYiljYigpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBzZWxmID0gdGhpcztcbiAgICAgICAgICAgIG9wZW50eXBlLmxvYWQoYmluYXJ5LCBmdW5jdGlvbiAoZXJyLCBmb250KSB7XG4gICAgICAgICAgICAgICAgaWYgKGVycikgdGhyb3cgbmV3IEVycm9yKCdDb3VsZCBub3QgbG9hZCBmb250OiAnICsgZXJyKTtcbiAgICAgICAgICAgICAgICBzZWxmLmxvYWRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgc2VsZi5mb250ID0gZm9udDtcbiAgICAgICAgICAgICAgICBpZihjYiljYigpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIGxvYWRTeW5jOiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHRoaXMuZm9udCA9IG9wZW50eXBlLmxvYWRTeW5jKGJpbmFyeSk7XG4gICAgICAgICAgICB0aGlzLmxvYWRlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHJldHVybiBfZm9udHNbZmFtaWx5XTtcbn1cbmV4cG9ydHMucmVnaXN0ZXJGb250U3luYyA9IGZ1bmN0aW9uKGJpbmFyeSwgZmFtaWx5LCB3ZWlnaHQsIHN0eWxlLCB2YXJpYW50KSB7XG4gICAgX2ZvbnRzW2ZhbWlseV0gPSB7XG4gICAgICAgIGJpbmFyeTogYmluYXJ5LFxuICAgICAgICBmYW1pbHk6IGZhbWlseSxcbiAgICAgICAgd2VpZ2h0OiB3ZWlnaHQsXG4gICAgICAgIHN0eWxlOiBzdHlsZSxcbiAgICAgICAgdmFyaWFudDogdmFyaWFudCxcbiAgICAgICAgbG9hZGVkOiB0cnVlLFxuICAgICAgICBmb250OiBvcGVudHlwZS5sb2FkU3luYyhiaW5hcnkpLFxuICAgIH07XG4gICAgcmV0dXJuIF9mb250c1tmYW1pbHldO1xufVxuZXhwb3J0cy5kZWJ1Z19saXN0X29mX2ZvbnRzID0gX2ZvbnRzO1xuXG5cblxuLy8gPT09PT09PT09PT09PT09IFV0aWxpdHkgZnVuY3Rpb25zXG5cbmZ1bmN0aW9uIGNvbG9yU3RyaW5nVG9VaW50MzIoc3RyKSB7XG4gICAgaWYoIXN0cikgcmV0dXJuIDB4MDAwMDAwO1xuICAgIC8vaGV4IHZhbHVlcyBhbHdheXMgZ2V0IDI1NSBmb3IgdGhlIGFscGhhIGNoYW5uZWxcbiAgICBpZihzdHIuaW5kZXhPZignIycpPT0wKSB7XG4gICAgICAgIHZhciBpbnQgPSB1aW50MzIudG9VaW50MzIocGFyc2VJbnQoc3RyLnN1YnN0cmluZygxKSwxNikpO1xuICAgICAgICBpbnQgPSB1aW50MzIuc2hpZnRMZWZ0KGludCw4KTtcbiAgICAgICAgaW50ID0gdWludDMyLm9yKGludCwweGZmKTtcbiAgICAgICAgcmV0dXJuIGludDtcbiAgICB9XG4gICAgaWYoc3RyLmluZGV4T2YoJ3JnYmEnKT09MCkge1xuICAgICAgICB2YXIgcGFydHMgPSBzdHIudHJpbSgpLnN1YnN0cmluZyg0KS5yZXBsYWNlKCcoJywnJykucmVwbGFjZSgnKScsJycpLnNwbGl0KCcsJyk7XG4gICAgICAgIHJldHVybiB1aW50MzIuZnJvbUJ5dGVzQmlnRW5kaWFuKFxuICAgICAgICAgICAgcGFyc2VJbnQocGFydHNbMF0pLFxuICAgICAgICAgICAgcGFyc2VJbnQocGFydHNbMV0pLFxuICAgICAgICAgICAgcGFyc2VJbnQocGFydHNbMl0pLFxuICAgICAgICAgICAgTWF0aC5mbG9vcihwYXJzZUZsb2F0KHBhcnRzWzNdKSoyNTUpKTtcbiAgICB9XG4gICAgaWYoc3RyLmluZGV4T2YoJ3JnYicpPT0wKSB7XG4gICAgICAgIHZhciBwYXJ0cyA9IHN0ci50cmltKCkuc3Vic3RyaW5nKDMpLnJlcGxhY2UoJygnLCcnKS5yZXBsYWNlKCcpJywnJykuc3BsaXQoJywnKTtcbiAgICAgICAgcmV0dXJuIHVpbnQzMi5mcm9tQnl0ZXNCaWdFbmRpYW4ocGFyc2VJbnQocGFydHNbMF0pLCBwYXJzZUludChwYXJ0c1sxXSksIHBhcnNlSW50KHBhcnRzWzJdKSwgMjU1KTtcbiAgICB9XG4gICAgaWYoTkFNRURfQ09MT1JTW3N0cl0pIHtcbiAgICAgICAgcmV0dXJuIE5BTUVEX0NPTE9SU1tzdHJdO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJ1bmtub3duIHN0eWxlIGZvcm1hdDogXCIgKyBzdHIgKTtcbn1cblxuZnVuY3Rpb24gbWFrZVBvaW50ICh4LHkpICAgICAgIHsgIHJldHVybiB7eDp4LCB5Onl9IH1cbmZ1bmN0aW9uIG1ha2VMaW5lICAoc3RhcnQsZW5kKSB7ICByZXR1cm4ge3N0YXJ0OnN0YXJ0LCBlbmQ6ZW5kfSB9XG5mdW5jdGlvbiBmcmFjdCh2KSB7ICByZXR1cm4gdi1NYXRoLmZsb29yKHYpOyAgIH1cbmZ1bmN0aW9uIGxlcnAoYSxiLHQpIHsgIHJldHVybiBhICsgKGItYSkqdDsgfVxuXG5mdW5jdGlvbiBjYWxjUXVhZHJhdGljQXRUKHAsIHQpIHtcbiAgICB2YXIgeCA9ICgxLXQpKigxLXQpKnBbMF0ueCArIDIqKDEtdCkqdCpwWzFdLnggKyB0KnQqcFsyXS54O1xuICAgIHZhciB5ID0gKDEtdCkqKDEtdCkqcFswXS55ICsgMiooMS10KSp0KnBbMV0ueSArIHQqdCpwWzJdLnk7XG4gICAgcmV0dXJuIHt4OngseTp5fTtcbn1cblxuZnVuY3Rpb24gY2FsY0JlemllckF0VChwLCB0KSB7XG4gICAgdmFyIHggPSAoMS10KSooMS10KSooMS10KSpwWzBdLnggKyAzKigxLXQpKigxLXQpKnQqcFsxXS54ICsgMyooMS10KSp0KnQqcFsyXS54ICsgdCp0KnQqcFszXS54O1xuICAgIHZhciB5ID0gKDEtdCkqKDEtdCkqKDEtdCkqcFswXS55ICsgMyooMS10KSooMS10KSp0KnBbMV0ueSArIDMqKDEtdCkqdCp0KnBbMl0ueSArIHQqdCp0KnBbM10ueTtcbiAgICByZXR1cm4ge3g6eCx5Onl9O1xufVxuXG5mdW5jdGlvbiBwYXRoVG9MaW5lcyhwYXRoKSB7XG4gICAgdmFyIGxpbmVzID0gW107XG4gICAgdmFyIGN1cnIgPSBudWxsO1xuICAgIHBhdGguZm9yRWFjaChmdW5jdGlvbihjbWQpIHtcbiAgICAgICAgaWYoY21kWzBdID09ICdtJykge1xuICAgICAgICAgICAgY3VyciA9IG1ha2VQb2ludChjbWRbMV0sY21kWzJdKTtcbiAgICAgICAgfVxuICAgICAgICBpZihjbWRbMF0gPT0gJ2wnKSB7XG4gICAgICAgICAgICB2YXIgcHQgPSBtYWtlUG9pbnQoY21kWzFdLGNtZFsyXSk7XG4gICAgICAgICAgICBsaW5lcy5wdXNoKG1ha2VMaW5lKGN1cnIscHQpKTtcbiAgICAgICAgICAgIGN1cnIgPSBwdDtcbiAgICAgICAgfVxuICAgICAgICBpZihjbWRbMF0gPT0gJ3EnKSB7XG4gICAgICAgICAgICB2YXIgcHRzID0gW2N1cnIsIG1ha2VQb2ludChjbWRbMV0sY21kWzJdKSwgbWFrZVBvaW50KGNtZFszXSxjbWRbNF0pXTtcbiAgICAgICAgICAgIGZvcih2YXIgdD0wOyB0PDE7IHQrPTAuMSkge1xuICAgICAgICAgICAgICAgIHZhciBwdCA9IGNhbGNRdWFkcmF0aWNBdFQocHRzLHQpO1xuICAgICAgICAgICAgICAgIGxpbmVzLnB1c2gobWFrZUxpbmUoY3VycixwdCkpO1xuICAgICAgICAgICAgICAgIGN1cnIgPSBwdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZihjbWRbMF0gPT0gJ2InKSB7XG4gICAgICAgICAgICB2YXIgcHRzID0gW2N1cnIsIG1ha2VQb2ludChjbWRbMV0sY21kWzJdKSwgbWFrZVBvaW50KGNtZFszXSxjbWRbNF0pLCBtYWtlUG9pbnQoY21kWzVdLGNtZFs2XSldO1xuICAgICAgICAgICAgZm9yKHZhciB0PTA7IHQ8MTsgdCs9MC4xKSB7XG4gICAgICAgICAgICAgICAgdmFyIHB0ID0gY2FsY0JlemllckF0VChwdHMsdCk7XG4gICAgICAgICAgICAgICAgbGluZXMucHVzaChtYWtlTGluZShjdXJyLHB0KSk7XG4gICAgICAgICAgICAgICAgY3VyciA9IHB0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGxpbmVzO1xufVxuXG5cbmZ1bmN0aW9uIGNhbGNNaW5pbXVtQm91bmRzKGxpbmVzKSB7XG4gICAgdmFyIGJvdW5kcyA9IHsgIHg6ICBOdW1iZXIuTUFYX1ZBTFVFLCB5OiAgTnVtYmVyLk1BWF9WQUxVRSwgIHgyOiBOdW1iZXIuTUlOX1ZBTFVFLCB5MjogTnVtYmVyLk1JTl9WQUxVRSB9XG4gICAgZnVuY3Rpb24gY2hlY2tQb2ludChwdCkge1xuICAgICAgICBib3VuZHMueCAgPSBNYXRoLm1pbihib3VuZHMueCxwdC54KTtcbiAgICAgICAgYm91bmRzLnkgID0gTWF0aC5taW4oYm91bmRzLnkscHQueSk7XG4gICAgICAgIGJvdW5kcy54MiA9IE1hdGgubWF4KGJvdW5kcy54MixwdC54KTtcbiAgICAgICAgYm91bmRzLnkyID0gTWF0aC5tYXgoYm91bmRzLnkyLHB0LnkpO1xuICAgIH1cbiAgICBsaW5lcy5mb3JFYWNoKGZ1bmN0aW9uKGxpbmUpIHtcbiAgICAgICAgY2hlY2tQb2ludChsaW5lLnN0YXJ0KTtcbiAgICAgICAgY2hlY2tQb2ludChsaW5lLmVuZCk7XG4gICAgfSlcbiAgICByZXR1cm4gYm91bmRzO1xufVxuXG4vL2FkYXB0ZWQgZnJvbSBodHRwOi8vYWxpZW5yeWRlcmZsZXguY29tL3BvbHlnb25cbmZ1bmN0aW9uIGNhbGNTb3J0ZWRJbnRlcnNlY3Rpb25zKGxpbmVzLHkpIHtcbiAgICB2YXIgeGxpc3QgPSBbXTtcbiAgICBmb3IodmFyIGk9MDsgaTxsaW5lcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgQSA9IGxpbmVzW2ldLnN0YXJ0O1xuICAgICAgICB2YXIgQiA9IGxpbmVzW2ldLmVuZDtcbiAgICAgICAgaWYoQS55PHkgJiYgQi55Pj15IHx8IEIueTx5ICYmIEEueT49eSkge1xuICAgICAgICAgICAgdmFyIHh2YWwgPSBBLnggKyAoeS1BLnkpIC8gKEIueS1BLnkpICogKEIueC1BLngpO1xuICAgICAgICAgICAgeGxpc3QucHVzaCh4dmFsKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4geGxpc3Quc29ydChmdW5jdGlvbihhLGIpIHsgIHJldHVybiBhLWI7IH0pO1xufVxuXG4vLyBhbnRpYWxpYXNlZCBCcmVzZW5oYW0ncyBsaW5lIHdpdGggd2lkdGhcbi8vIGh0dHA6Ly9tZW1iZXJzLmNoZWxsby5hdC9+ZWFzeWZpbHRlci9icmVzZW5oYW0uaHRtbFxuZnVuY3Rpb24gZHJhd0xpbmUoaW1hZ2UsIGxpbmUsIGNvbG9yLCB3aWR0aCkge1xuICB2YXIgeDAgPSBNYXRoLmZsb29yKGxpbmUuc3RhcnQueCk7XG4gIHZhciB5MCA9IE1hdGguZmxvb3IobGluZS5zdGFydC55KTtcbiAgdmFyIHgxID0gTWF0aC5mbG9vcihsaW5lLmVuZC54KTtcbiAgdmFyIHkxID0gTWF0aC5mbG9vcihsaW5lLmVuZC55KTtcbiAgdmFyIGR4ID0gTWF0aC5hYnMoeDEgLSB4MCksIHN4ID0geDAgPCB4MSA/IDEgOiAtMTtcbiAgdmFyIGR5ID0gTWF0aC5hYnMoeTEgLSB5MCksIHN5ID0geTAgPCB5MSA/IDEgOiAtMTtcblxuICAgdmFyIGVyciA9IGR4LWR5LCBlMiwgeDIsIHkyO1xuICAgdmFyIGVkID0gZHgrZHkgPT0gMCA/IDEgOiBNYXRoLnNxcnQoZHgqZHgrZHkqZHkpO1xuICB2YXIgcmdiID0gdWludDMyLmFuZChjb2xvciwweEZGRkZGRjAwKTtcbiAgIGZvciAod2lkdGggPSAod2lkdGgrMSkvMjsgOyApIHtcbiAgICAgdmFyIGFscGhhID0gfn5NYXRoLm1heCgwLDI1NSooTWF0aC5hYnMoZXJyLWR4K2R5KS9lZC13aWR0aCsxKSk7XG4gICAgIHZhciBwaXhlbENvbG9yID0gdWludDMyLm9yKHJnYiwyNTUtYWxwaGEpO1xuICAgICAgaW1hZ2UuY29tcG9zaXRlUGl4ZWwoeDAseTAscGl4ZWxDb2xvcik7XG4gICAgICBlMiA9IGVycjsgeDIgPSB4MDtcbiAgICAgIGlmICgyKmUyID49IC1keCkge1xuICAgICAgICAgZm9yIChlMiArPSBkeSwgeTIgPSB5MDsgZTIgPCBlZCp3aWR0aCAmJiAoeTEgIT0geTIgfHwgZHggPiBkeSk7IGUyICs9IGR4KSB7XG4gICAgICAgICAgIHZhciBhbHBoYSA9IH5+TWF0aC5tYXgoMCwyNTUqKE1hdGguYWJzKGUyKS9lZC13aWR0aCsxKSk7XG4gICAgICAgICAgIHZhciBwaXhlbENvbG9yID0gdWludDMyLm9yKHJnYiwyNTUtYWxwaGEpO1xuICAgICAgICAgICAgaW1hZ2UuY29tcG9zaXRlUGl4ZWwoeDAsIHkyICs9IHN5LCBwaXhlbENvbG9yKTtcbiAgICAgICAgICB9XG4gICAgICAgICBpZiAoeDAgPT0geDEpIGJyZWFrO1xuICAgICAgICAgZTIgPSBlcnI7IGVyciAtPSBkeTsgeDAgKz0gc3g7XG4gICAgICB9XG4gICAgICBpZiAoMiplMiA8PSBkeSkge1xuICAgICAgICAgZm9yIChlMiA9IGR4LWUyOyBlMiA8IGVkKndpZHRoICYmICh4MSAhPSB4MiB8fCBkeCA8IGR5KTsgZTIgKz0gZHkpIHtcbiAgICAgICAgIHZhciBhbHBoYSA9IH5+TWF0aC5tYXgoMCwyNTUqKE1hdGguYWJzKGUyKS9lZC13aWR0aCsxKSk7XG4gICAgICAgICB2YXIgcGl4ZWxDb2xvciA9IHVpbnQzMi5vcihyZ2IsMjU1LWFscGhhKTtcbiAgICAgICAgICAgIGltYWdlLmNvbXBvc2l0ZVBpeGVsKHgyICs9IHN4LCB5MCwgcGl4ZWxDb2xvcik7XG4gICAgICAgICAgfVxuICAgICAgICAgaWYgKHkwID09IHkxKSBicmVhaztcbiAgICAgICAgIGVyciArPSBkeDsgeTAgKz0gc3k7XG4gICAgICB9XG4gICB9XG59XG5cbi8vY29tcG9zaXRlIHBpeGVsIGRvdWJsZXMgdGhlIHRpbWUuIG5lZWQgdG8gaW1wbGVtZW50IHJlcGxhY2Ugd2l0aCBhIGJldHRlciB0aGluZ1xuZXhwb3J0cy5jb21wb3NpdGVQaXhlbCAgPSBmdW5jdGlvbihzcmMsZHN0LG9tb2RlKSB7XG4gICAgaWYob21vZGUgPT0gJ1JFUExBQ0UnKSB7XG4gICAgICAgIHJldHVybiBzcmM7XG4gICAgfVxuICAgIHZhciBzcmNfcmdiYSA9IHVpbnQzMi5nZXRCeXRlc0JpZ0VuZGlhbihzcmMpO1xuICAgIHZhciBkc3RfcmdiYSA9IHVpbnQzMi5nZXRCeXRlc0JpZ0VuZGlhbihkc3QpO1xuXG4gICAgdmFyIHNyY19hbHBoYSA9IHNyY19yZ2JhWzNdLzI1NTtcbiAgICB2YXIgZHN0X2FscGhhID0gZHN0X3JnYmFbM10vMjU1O1xuICAgIHZhciBmaW5hbF9hID0gMjU1KihzcmNfYWxwaGEgKyBkc3RfYWxwaGEgKiAoMS1zcmNfYWxwaGEpKTtcblxuICAgIHZhciBmaW5hbF9yZ2JhID0gW1xuICAgICAgICBsZXJwKGRzdF9yZ2JhWzBdLHNyY19yZ2JhWzBdLHNyY19hbHBoYSksXG4gICAgICAgIGxlcnAoZHN0X3JnYmFbMV0sc3JjX3JnYmFbMV0sc3JjX2FscGhhKSxcbiAgICAgICAgbGVycChkc3RfcmdiYVsyXSxzcmNfcmdiYVsyXSxzcmNfYWxwaGEpLFxuICAgICAgICBmaW5hbF9hLFxuICAgIF07XG4gICAgcmV0dXJuIHVpbnQzMi5mcm9tQnl0ZXNCaWdFbmRpYW4oZmluYWxfcmdiYVswXSwgZmluYWxfcmdiYVsxXSwgZmluYWxfcmdiYVsyXSwgZmluYWxfcmdiYVszXSk7XG59XG5cblxudmFyIGNhY2hlID0ge1xuICAgIGdseXBoczp7fSxcbiAgICBtYWtlS2V5OiBmdW5jdGlvbihmb250LHNpemUsY2gpIHtcbiAgICAgICAgdmFyIGtleSA9IGZvbnQuZmFtaWx5ICsgXCJfXCIrc2l6ZSsgXCJfXCIrY2g7XG4gICAgICAgIHJldHVybiBrZXk7XG4gICAgfSxcbiAgICBjb250YWluczogZnVuY3Rpb24oZm9udCwgc2l6ZSwgY2gpIHtcbiAgICAgICAgcmV0dXJuICh0eXBlb2YgdGhpcy5nbHlwaHNbdGhpcy5tYWtlS2V5KGZvbnQsc2l6ZSxjaCldKSAhPT0gJ3VuZGVmaW5lZCc7XG4gICAgfSxcbiAgICBpbnNlcnQ6IGZ1bmN0aW9uKGZvbnQsIHNpemUsIGNoLGJpdG1hcCkge1xuICAgICAgICB0aGlzLmdseXBoc1t0aGlzLm1ha2VLZXkoZm9udCxzaXplLGNoKV0gPSBiaXRtYXA7XG4gICAgfSxcbiAgICBnZXQ6IGZ1bmN0aW9uKGZvbnQsIHNpemUsIGNoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdseXBoc1t0aGlzLm1ha2VLZXkoZm9udCxzaXplLGNoKV07XG4gICAgfVxufVxuIiwiLy90cmFuc2Zvcm0gY29kZSBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9rY21vb3QvdHJhbnNmb3JtLXRyYWNrZXIvYmxvYi9tYXN0ZXIvdHJhbnNmb3JtLXRyYWNrZXIuanNcblxuXG4vKlxuICogVHJhbnNmb3JtIHRyYWNrZXJcbiAqXG4gKiBAYXV0aG9yIEtldmluIE1vb3QgPGtldmluLm1vb3RAZ21haWwuY29tPlxuICogQmFzZWQgb24gYSBjbGFzcyBjcmVhdGVkIGJ5IFNpbW9uIFNhcnJpcyAtIHd3dy5zaW1vbnNhcnJpcy5jb20gLSBzYXJyaXNAYWNtLm9yZ1xuICovXG5cblwidXNlIHN0cmljdFwiO1xuXG5mdW5jdGlvbiBUcmFuc2Zvcm0oY29udGV4dCkge1xuICAgIHRoaXMuY29udGV4dCA9IGNvbnRleHQ7XG4gICAgdGhpcy5tYXRyaXggPSBbMSwwLDAsMSwwLDBdOyAvL2luaXRpYWxpemUgd2l0aCB0aGUgaWRlbnRpdHkgbWF0cml4XG4gICAgdGhpcy5zdGFjayA9IFtdO1xuXG4gICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAvLyBDb25zdHJ1Y3RvciwgZ2V0dGVyL3NldHRlclxuICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgICB0aGlzLnNldENvbnRleHQgPSBmdW5jdGlvbihjb250ZXh0KSB7XG4gICAgICAgIHRoaXMuY29udGV4dCA9IGNvbnRleHQ7XG4gICAgfTtcblxuICAgIHRoaXMuZ2V0TWF0cml4ID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1hdHJpeDtcbiAgICB9O1xuXG4gICAgdGhpcy5zZXRNYXRyaXggPSBmdW5jdGlvbihtKSB7XG4gICAgICAgIHRoaXMubWF0cml4ID0gW21bMF0sbVsxXSxtWzJdLG1bM10sbVs0XSxtWzVdXTtcbiAgICAgICAgdGhpcy5zZXRUcmFuc2Zvcm0oKTtcbiAgICB9O1xuXG4gICAgdGhpcy5jbG9uZU1hdHJpeCA9IGZ1bmN0aW9uKG0pIHtcbiAgICAgICAgcmV0dXJuIFttWzBdLG1bMV0sbVsyXSxtWzNdLG1bNF0sbVs1XV07XG4gICAgfTtcblxuICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgLy8gU3RhY2tcbiAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gICAgdGhpcy5zYXZlID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBtYXRyaXggPSB0aGlzLmNsb25lTWF0cml4KHRoaXMuZ2V0TWF0cml4KCkpO1xuICAgICAgICB0aGlzLnN0YWNrLnB1c2gobWF0cml4KTtcblxuICAgICAgICBpZiAodGhpcy5jb250ZXh0KSB0aGlzLmNvbnRleHQuc2F2ZSgpO1xuICAgIH07XG5cbiAgICB0aGlzLnJlc3RvcmUgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgaWYgKHRoaXMuc3RhY2subGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdmFyIG1hdHJpeCA9IHRoaXMuc3RhY2sucG9wKCk7XG4gICAgICAgICAgICB0aGlzLnNldE1hdHJpeChtYXRyaXgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuY29udGV4dCkgdGhpcy5jb250ZXh0LnJlc3RvcmUoKTtcbiAgICB9O1xuXG4gICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAvLyBNYXRyaXhcbiAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gICAgdGhpcy5zZXRUcmFuc2Zvcm0gPSBmdW5jdGlvbigpIHtcbiAgICAgICAgaWYgKHRoaXMuY29udGV4dCkge1xuICAgICAgICAgICAgdGhpcy5jb250ZXh0LnNldFRyYW5zZm9ybShcbiAgICAgICAgICAgICAgICB0aGlzLm1hdHJpeFswXSxcbiAgICAgICAgICAgICAgICB0aGlzLm1hdHJpeFsxXSxcbiAgICAgICAgICAgICAgICB0aGlzLm1hdHJpeFsyXSxcbiAgICAgICAgICAgICAgICB0aGlzLm1hdHJpeFszXSxcbiAgICAgICAgICAgICAgICB0aGlzLm1hdHJpeFs0XSxcbiAgICAgICAgICAgICAgICB0aGlzLm1hdHJpeFs1XVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICB0aGlzLnRyYW5zbGF0ZSA9IGZ1bmN0aW9uKHgsIHkpIHtcbiAgICAgICAgdGhpcy5tYXRyaXhbNF0gKz0gdGhpcy5tYXRyaXhbMF0gKiB4ICsgdGhpcy5tYXRyaXhbMl0gKiB5O1xuICAgICAgICB0aGlzLm1hdHJpeFs1XSArPSB0aGlzLm1hdHJpeFsxXSAqIHggKyB0aGlzLm1hdHJpeFszXSAqIHk7XG5cbiAgICAgICAgdGhpcy5zZXRUcmFuc2Zvcm0oKTtcbiAgICB9O1xuXG4gICAgdGhpcy5yb3RhdGUgPSBmdW5jdGlvbihyYWQpIHtcbiAgICAgICAgdmFyIGMgPSBNYXRoLmNvcyhyYWQpO1xuICAgICAgICB2YXIgcyA9IE1hdGguc2luKHJhZCk7XG4gICAgICAgIHZhciBtMTEgPSB0aGlzLm1hdHJpeFswXSAqIGMgKyB0aGlzLm1hdHJpeFsyXSAqIHM7XG4gICAgICAgIHZhciBtMTIgPSB0aGlzLm1hdHJpeFsxXSAqIGMgKyB0aGlzLm1hdHJpeFszXSAqIHM7XG4gICAgICAgIHZhciBtMjEgPSB0aGlzLm1hdHJpeFswXSAqIC1zICsgdGhpcy5tYXRyaXhbMl0gKiBjO1xuICAgICAgICB2YXIgbTIyID0gdGhpcy5tYXRyaXhbMV0gKiAtcyArIHRoaXMubWF0cml4WzNdICogYztcbiAgICAgICAgdGhpcy5tYXRyaXhbMF0gPSBtMTE7XG4gICAgICAgIHRoaXMubWF0cml4WzFdID0gbTEyO1xuICAgICAgICB0aGlzLm1hdHJpeFsyXSA9IG0yMTtcbiAgICAgICAgdGhpcy5tYXRyaXhbM10gPSBtMjI7XG5cbiAgICAgICAgdGhpcy5zZXRUcmFuc2Zvcm0oKTtcbiAgICB9O1xuXG4gICAgdGhpcy5zY2FsZSA9IGZ1bmN0aW9uKHN4LCBzeSkge1xuICAgICAgICB0aGlzLm1hdHJpeFswXSAqPSBzeDtcbiAgICAgICAgdGhpcy5tYXRyaXhbMV0gKj0gc3g7XG4gICAgICAgIHRoaXMubWF0cml4WzJdICo9IHN5O1xuICAgICAgICB0aGlzLm1hdHJpeFszXSAqPSBzeTtcblxuICAgICAgICB0aGlzLnNldFRyYW5zZm9ybSgpO1xuICAgIH07XG5cbiAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIC8vIE1hdHJpeCBleHRlbnNpb25zXG4gICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAgIHRoaXMucm90YXRlRGVncmVlcyA9IGZ1bmN0aW9uKGRlZykge1xuICAgICAgICB2YXIgcmFkID0gZGVnICogTWF0aC5QSSAvIDE4MDtcbiAgICAgICAgdGhpcy5yb3RhdGUocmFkKTtcbiAgICB9O1xuXG4gICAgdGhpcy5yb3RhdGVBYm91dCA9IGZ1bmN0aW9uKHJhZCwgeCwgeSkge1xuICAgICAgICB0aGlzLnRyYW5zbGF0ZSh4LCB5KTtcbiAgICAgICAgdGhpcy5yb3RhdGUocmFkKTtcbiAgICAgICAgdGhpcy50cmFuc2xhdGUoLXgsIC15KTtcbiAgICAgICAgdGhpcy5zZXRUcmFuc2Zvcm0oKTtcbiAgICB9XG5cbiAgICB0aGlzLnJvdGF0ZURlZ3JlZXNBYm91dCA9IGZ1bmN0aW9uKGRlZywgeCwgeSkge1xuICAgICAgICB0aGlzLnRyYW5zbGF0ZSh4LCB5KTtcbiAgICAgICAgdGhpcy5yb3RhdGVEZWdyZWVzKGRlZyk7XG4gICAgICAgIHRoaXMudHJhbnNsYXRlKC14LCAteSk7XG4gICAgICAgIHRoaXMuc2V0VHJhbnNmb3JtKCk7XG4gICAgfVxuXG4gICAgdGhpcy5pZGVudGl0eSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICB0aGlzLm0gPSBbMSwwLDAsMSwwLDBdO1xuICAgICAgICB0aGlzLnNldFRyYW5zZm9ybSgpO1xuICAgIH07XG5cbiAgICB0aGlzLm11bHRpcGx5ID0gZnVuY3Rpb24obWF0cml4KSB7XG4gICAgICAgIHZhciBtMTEgPSB0aGlzLm1hdHJpeFswXSAqIG1hdHJpeC5tWzBdICsgdGhpcy5tYXRyaXhbMl0gKiBtYXRyaXgubVsxXTtcbiAgICAgICAgdmFyIG0xMiA9IHRoaXMubWF0cml4WzFdICogbWF0cml4Lm1bMF0gKyB0aGlzLm1hdHJpeFszXSAqIG1hdHJpeC5tWzFdO1xuXG4gICAgICAgIHZhciBtMjEgPSB0aGlzLm1hdHJpeFswXSAqIG1hdHJpeC5tWzJdICsgdGhpcy5tYXRyaXhbMl0gKiBtYXRyaXgubVszXTtcbiAgICAgICAgdmFyIG0yMiA9IHRoaXMubWF0cml4WzFdICogbWF0cml4Lm1bMl0gKyB0aGlzLm1hdHJpeFszXSAqIG1hdHJpeC5tWzNdO1xuXG4gICAgICAgIHZhciBkeCA9IHRoaXMubWF0cml4WzBdICogbWF0cml4Lm1bNF0gKyB0aGlzLm1hdHJpeFsyXSAqIG1hdHJpeC5tWzVdICsgdGhpcy5tYXRyaXhbNF07XG4gICAgICAgIHZhciBkeSA9IHRoaXMubWF0cml4WzFdICogbWF0cml4Lm1bNF0gKyB0aGlzLm1hdHJpeFszXSAqIG1hdHJpeC5tWzVdICsgdGhpcy5tYXRyaXhbNV07XG5cbiAgICAgICAgdGhpcy5tYXRyaXhbMF0gPSBtMTE7XG4gICAgICAgIHRoaXMubWF0cml4WzFdID0gbTEyO1xuICAgICAgICB0aGlzLm1hdHJpeFsyXSA9IG0yMTtcbiAgICAgICAgdGhpcy5tYXRyaXhbM10gPSBtMjI7XG4gICAgICAgIHRoaXMubWF0cml4WzRdID0gZHg7XG4gICAgICAgIHRoaXMubWF0cml4WzVdID0gZHk7XG4gICAgICAgIHRoaXMuc2V0VHJhbnNmb3JtKCk7XG4gICAgfTtcblxuICAgIHRoaXMuaW52ZXJ0ID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBkID0gMSAvICh0aGlzLm1hdHJpeFswXSAqIHRoaXMubWF0cml4WzNdIC0gdGhpcy5tYXRyaXhbMV0gKiB0aGlzLm1hdHJpeFsyXSk7XG4gICAgICAgIHZhciBtMCA9IHRoaXMubWF0cml4WzNdICogZDtcbiAgICAgICAgdmFyIG0xID0gLXRoaXMubWF0cml4WzFdICogZDtcbiAgICAgICAgdmFyIG0yID0gLXRoaXMubWF0cml4WzJdICogZDtcbiAgICAgICAgdmFyIG0zID0gdGhpcy5tYXRyaXhbMF0gKiBkO1xuICAgICAgICB2YXIgbTQgPSBkICogKHRoaXMubWF0cml4WzJdICogdGhpcy5tYXRyaXhbNV0gLSB0aGlzLm1hdHJpeFszXSAqIHRoaXMubWF0cml4WzRdKTtcbiAgICAgICAgdmFyIG01ID0gZCAqICh0aGlzLm1hdHJpeFsxXSAqIHRoaXMubWF0cml4WzRdIC0gdGhpcy5tYXRyaXhbMF0gKiB0aGlzLm1hdHJpeFs1XSk7XG4gICAgICAgIHRoaXMubWF0cml4WzBdID0gbTA7XG4gICAgICAgIHRoaXMubWF0cml4WzFdID0gbTE7XG4gICAgICAgIHRoaXMubWF0cml4WzJdID0gbTI7XG4gICAgICAgIHRoaXMubWF0cml4WzNdID0gbTM7XG4gICAgICAgIHRoaXMubWF0cml4WzRdID0gbTQ7XG4gICAgICAgIHRoaXMubWF0cml4WzVdID0gbTU7XG4gICAgICAgIHRoaXMuc2V0VHJhbnNmb3JtKCk7XG4gICAgfTtcblxuICAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAgIC8vIEhlbHBlcnNcbiAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gICAgdGhpcy50cmFuc2Zvcm1Qb2ludCA9IGZ1bmN0aW9uKHgsIHkpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHg6IHggKiB0aGlzLm1hdHJpeFswXSArIHkgKiB0aGlzLm1hdHJpeFsyXSArIHRoaXMubWF0cml4WzRdLFxuICAgICAgICAgICAgeTogeCAqIHRoaXMubWF0cml4WzFdICsgeSAqIHRoaXMubWF0cml4WzNdICsgdGhpcy5tYXRyaXhbNV1cbiAgICAgICAgfTtcbiAgICB9O1xufVxuXG5leHBvcnRzLlRyYW5zZm9ybSA9IFRyYW5zZm9ybTtcbiIsIlxuLy9mcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9meGEvdWludDMyLmpzXG5cbi8qIGpzaGludCBiaXR3aXNlOiBmYWxzZSAqL1xuXG4vKipcbiAqIEBsaWNlbnNlIChjKSBGcmFueiBYIEFudGVzYmVyZ2VyIDIwMTNcbiAqL1xuKGZ1bmN0aW9uIChleHBvcnRlcikge1xuICAgICd1c2Ugc3RyaWN0JztcblxuICAgIHZhciBQT1dfMl8zMiA9IDB4MDEwMDAwMDAwMDtcbiAgICB2YXIgUE9XXzJfNTIgPSAweDEwMDAwMDAwMDAwMDAwO1xuXG4gICAgLy9cbiAgICAvLyAgQ3JlYXRpbmcgYW5kIEV4dHJhY3RpbmdcbiAgICAvL1xuXG4gICAgLyoqXG4gICAgICogIENyZWF0ZXMgYW4gdWludDMyIGZyb20gdGhlIGdpdmVuIGJ5dGVzIGluIGJpZyBlbmRpYW4gb3JkZXIuXG4gICAgICogIEBwYXJhbSB7TnVtYmVyfSBoaWdoQnl0ZSB0aGUgaGlnaCBieXRlXG4gICAgICogIEBwYXJhbSB7TnVtYmVyfSBzZWNvbmRIaWdoQnl0ZSB0aGUgMm5kIGhpZ2ggYnl0ZVxuICAgICAqICBAcGFyYW0ge051bWJlcn0gdGhpcmRIaWdoQnl0ZSB0aGUgM3JkIGhpZ2ggYnl0ZVxuICAgICAqICBAcGFyYW0ge051bWJlcn0gbG93Qnl0ZSB0aGUgbG93IGJ5dGVcbiAgICAgKiAgQHJldHVybnMgaGlnaEJ5dGUgY29uY2F0IHNlY29uZEhpZ2hCeXRlIGNvbmNhdCB0aGlyZEhpZ2hCeXRlIGNvbmNhdCBsb3dCeXRlXG4gICAgICovXG4gICAgZXhwb3J0ZXIuZnJvbUJ5dGVzQmlnRW5kaWFuID0gZnVuY3Rpb24gKGhpZ2hCeXRlLCBzZWNvbmRIaWdoQnl0ZSwgdGhpcmRIaWdoQnl0ZSwgbG93Qnl0ZSkge1xuICAgICAgICByZXR1cm4gKChoaWdoQnl0ZSA8PCAyNCkgfCAoc2Vjb25kSGlnaEJ5dGUgPDwgMTYpIHwgKHRoaXJkSGlnaEJ5dGUgPDwgOCkgfCBsb3dCeXRlKSA+Pj4gMDtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogIFJldHVybnMgdGhlIGJ5dGUuXG4gICAgICogIGUuZy4gd2hlbiBieXRlTm8gaXMgMCwgdGhlIGhpZ2ggYnl0ZSBpcyByZXR1cm5lZCwgd2hlbiBieXRlTm8gPSAzIHRoZSBsb3cgYnl0ZSBpcyByZXR1cm5lZC5cbiAgICAgKiAgQHBhcmFtIHtOdW1iZXJ9IHVpbnQzMnZhbHVlIHRoZSBzb3VyY2UgdG8gYmUgZXh0cmFjdGVkXG4gICAgICogIEBwYXJhbSB7TnVtYmVyfSBieXRlTm8gMC0zIHRoZSBieXRlIG51bWJlciwgMCBpcyB0aGUgaGlnaCBieXRlLCAzIHRoZSBsb3cgYnl0ZVxuICAgICAqICBAcmV0dXJucyB7TnVtYmVyfSB0aGUgMC0yNTUgYnl0ZSBhY2NvcmRpbmcgYnl0ZU5vXG4gICAgICovXG4gICAgZXhwb3J0ZXIuZ2V0Qnl0ZUJpZ0VuZGlhbiA9IGZ1bmN0aW9uICh1aW50MzJ2YWx1ZSwgYnl0ZU5vKSB7XG4gICAgICAgIHJldHVybiAodWludDMydmFsdWUgPj4+ICg4ICogKDMgLSBieXRlTm8pKSkgJiAweGZmO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiAgUmV0dXJucyB0aGUgYnl0ZXMgYXMgYXJyYXkuXG4gICAgICogIEBwYXJhbSB7TnVtYmVyfSB1aW50MzJ2YWx1ZSB0aGUgc291cmNlIHRvIGJlIGV4dHJhY3RlZFxuICAgICAqICBAcmV0dXJucyB7QXJyYXl9IHRoZSBhcnJheSBbaGlnaEJ5dGUsIDJuZEhpZ2hCeXRlLCAzcmRIaWdoQnl0ZSwgbG93Qnl0ZV1cbiAgICAgKi9cbiAgICBleHBvcnRlci5nZXRCeXRlc0JpZ0VuZGlhbiA9IGZ1bmN0aW9uICh1aW50MzJ2YWx1ZSkge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgZXhwb3J0ZXIuZ2V0Qnl0ZUJpZ0VuZGlhbih1aW50MzJ2YWx1ZSwgMCksXG4gICAgICAgICAgICBleHBvcnRlci5nZXRCeXRlQmlnRW5kaWFuKHVpbnQzMnZhbHVlLCAxKSxcbiAgICAgICAgICAgIGV4cG9ydGVyLmdldEJ5dGVCaWdFbmRpYW4odWludDMydmFsdWUsIDIpLFxuICAgICAgICAgICAgZXhwb3J0ZXIuZ2V0Qnl0ZUJpZ0VuZGlhbih1aW50MzJ2YWx1ZSwgMylcbiAgICAgICAgXTtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogIENvbnZlcnRzIGEgZ2l2ZW4gdWluMzIgdG8gYSBoZXggc3RyaW5nIGluY2x1ZGluZyBsZWFkaW5nIHplcm9zLlxuICAgICAqICBAcGFyYW0ge051bWJlcn0gdWludDMydmFsdWUgdGhlIHVpbnQzMiB0byBiZSBzdHJpbmdpZmllZFxuICAgICAqICBAcGFyYW0ge051bWJlcn0gb3B0aW9uYWxNaW5MZW5ndGggdGhlIG9wdGlvbmFsIChkZWZhdWx0IDgpXG4gICAgICovXG4gICAgZXhwb3J0ZXIudG9IZXggPSBmdW5jdGlvbiAodWludDMydmFsdWUsIG9wdGlvbmFsTWluTGVuZ3RoKSB7XG4gICAgICAgIG9wdGlvbmFsTWluTGVuZ3RoID0gb3B0aW9uYWxNaW5MZW5ndGggfHwgODtcbiAgICAgICAgdmFyIHJlc3VsdCA9IHVpbnQzMnZhbHVlLnRvU3RyaW5nKDE2KTtcbiAgICAgICAgaWYgKHJlc3VsdC5sZW5ndGggPCBvcHRpb25hbE1pbkxlbmd0aCkge1xuICAgICAgICAgICAgcmVzdWx0ID0gbmV3IEFycmF5KG9wdGlvbmFsTWluTGVuZ3RoIC0gcmVzdWx0Lmxlbmd0aCArIDEpLmpvaW4oJzAnKSArIHJlc3VsdDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiAgQ29udmVydHMgYSBudW1iZXIgdG8gYW4gdWludDMyLlxuICAgICAqICBAcGFyYW0ge051bWJlcn0gbnVtYmVyIHRoZSBudW1iZXIgdG8gYmUgY29udmVydGVkLlxuICAgICAqICBAcmV0dXJuIHtOdW1iZXJ9IGFuIHVpbnQzMiB2YWx1ZVxuICAgICAqL1xuICAgIGV4cG9ydGVyLnRvVWludDMyID0gZnVuY3Rpb24gKG51bWJlcikge1xuICAgICAgICAvLyB0aGUgc2hpZnQgb3BlcmF0b3IgZm9yY2VzIGpzIHRvIHBlcmZvcm0gdGhlIGludGVybmFsIFRvVWludDMyIChzZWUgZWNtYXNjcmlwdCBzcGVjIDkuNilcbiAgICAgICAgcmV0dXJuIG51bWJlciA+Pj4gMDtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogIFJldHVybnMgdGhlIHBhcnQgYWJvdmUgdGhlIHVpbnQzMiBib3JkZXIuXG4gICAgICogIERlcGVuZGluZyB0byB0aGUgamF2YXNjcmlwdCBlbmdpbmUsIHRoYXQgYXJlIHRoZSA1NC0zMiA9IDIyIGhpZ2ggYml0c1xuICAgICAqICBAcGFyYW0ge051bWJlcn0gbnVtYmVyIHRoZSBudW1iZXIgdG8gZXh0cmFjdCB0aGUgaGlnaCBwYXJ0XG4gICAgICogIEByZXR1cm4ge051bWJlcn0gdGhlIGhpZ2ggcGFydCBvZiB0aGUgbnVtYmVyXG4gICAgICovXG4gICAgZXhwb3J0ZXIuaGlnaFBhcnQgPSBmdW5jdGlvbiAobnVtYmVyKSB7XG4gICAgICAgIHJldHVybiBleHBvcnRlci50b1VpbnQzMihudW1iZXIgLyBQT1dfMl8zMik7XG4gICAgfTtcblxuICAgIC8vXG4gICAgLy8gIEJpdHdpc2UgTG9naWNhbCBPcGVyYXRvcnNcbiAgICAvL1xuXG4gICAgLyoqXG4gICAgICogIFJldHVybnMgYSBiaXR3aXNlIE9SIG9wZXJhdGlvbiBvbiB0d28gb3IgbW9yZSB2YWx1ZXMuXG4gICAgICogIEBwYXJhbSB7TnVtYmVyfSB1aW50MzJ2YWwwIGZpcnN0IHVpbnQzMiB2YWx1ZVxuICAgICAqICBAcGFyYW0ge051bWJlcn0gYXJndiBvbmUgb3IgbW9yZSB1aW50MzIgdmFsdWVzXG4gICAgICogIEByZXR1cm4ge051bWJlcn0gdGhlIGJpdHdpc2UgT1IgdWludDMyIHZhbHVlXG4gICAgICovXG4gICAgZXhwb3J0ZXIub3IgPSBmdW5jdGlvbiAodWludDMydmFsMCwgYXJndikge1xuICAgICAgICB2YXIgcmVzdWx0ID0gdWludDMydmFsMDtcbiAgICAgICAgZm9yICh2YXIgaW5kZXggPSAxOyBpbmRleCA8IGFyZ3VtZW50cy5sZW5ndGg7IGluZGV4ICs9IDEpIHtcbiAgICAgICAgICAgIHJlc3VsdCA9IChyZXN1bHQgfCBhcmd1bWVudHNbaW5kZXhdKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0ID4+PiAwO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiAgUmV0dXJucyBhIGJpdHdpc2UgQU5EIG9wZXJhdGlvbiBvbiB0d28gb3IgbW9yZSB2YWx1ZXMuXG4gICAgICogIEBwYXJhbSB7TnVtYmVyfSB1aW50MzJ2YWwwIGZpcnN0IHVpbnQzMiB2YWx1ZVxuICAgICAqICBAcGFyYW0ge051bWJlcn0gYXJndiBvbmUgb3IgbW9yZSB1aW50MzIgdmFsdWVzXG4gICAgICogIEByZXR1cm4ge051bWJlcn0gdGhlIGJpdHdpc2UgQU5EIHVpbnQzMiB2YWx1ZVxuICAgICAqL1xuICAgIGV4cG9ydGVyLmFuZCA9IGZ1bmN0aW9uICh1aW50MzJ2YWwwLCBhcmd2KSB7XG4gICAgICAgIHZhciByZXN1bHQgPSB1aW50MzJ2YWwwO1xuICAgICAgICBmb3IgKHZhciBpbmRleCA9IDE7IGluZGV4IDwgYXJndW1lbnRzLmxlbmd0aDsgaW5kZXggKz0gMSkge1xuICAgICAgICAgICAgcmVzdWx0ID0gKHJlc3VsdCAmIGFyZ3VtZW50c1tpbmRleF0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQgPj4+IDA7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqICBSZXR1cm5zIGEgYml0d2lzZSBYT1Igb3BlcmF0aW9uIG9uIHR3byBvciBtb3JlIHZhbHVlcy5cbiAgICAgKiAgQHBhcmFtIHtOdW1iZXJ9IHVpbnQzMnZhbDAgZmlyc3QgdWludDMyIHZhbHVlXG4gICAgICogIEBwYXJhbSB7TnVtYmVyfSBhcmd2IG9uZSBvciBtb3JlIHVpbnQzMiB2YWx1ZXNcbiAgICAgKiAgQHJldHVybiB7TnVtYmVyfSB0aGUgYml0d2lzZSBYT1IgdWludDMyIHZhbHVlXG4gICAgICovXG4gICAgZXhwb3J0ZXIueG9yID0gZnVuY3Rpb24gKHVpbnQzMnZhbDAsIGFyZ3YpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IHVpbnQzMnZhbDA7XG4gICAgICAgIGZvciAodmFyIGluZGV4ID0gMTsgaW5kZXggPCBhcmd1bWVudHMubGVuZ3RoOyBpbmRleCArPSAxKSB7XG4gICAgICAgICAgICByZXN1bHQgPSAocmVzdWx0IF4gYXJndW1lbnRzW2luZGV4XSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdCA+Pj4gMDtcbiAgICB9O1xuXG4gICAgZXhwb3J0ZXIubm90ID0gZnVuY3Rpb24gKHVpbnQzMnZhbCkge1xuICAgICAgICByZXR1cm4gKH51aW50MzJ2YWwpID4+PiAwO1xuICAgIH07XG5cbiAgICAvL1xuICAgIC8vIFNoaWZ0aW5nIGFuZCBSb3RhdGluZ1xuICAgIC8vXG5cbiAgICAvKipcbiAgICAgKiAgUmV0dXJucyB0aGUgdWludDMyIHJlcHJlc2VudGF0aW9uIG9mIGEgPDwgb3BlcmF0aW9uLlxuICAgICAqICBAcGFyYW0ge051bWJlcn0gdWludDMydmFsIHRoZSB3b3JkIHRvIGJlIHNoaWZ0ZWRcbiAgICAgKiAgQHBhcmFtIHtOdW1iZXJ9IG51bUJpdHMgdGhlIG51bWJlciBvZiBiaXRzIHRvIGJlIHNoaWZ0ZWQgKDAtMzEpXG4gICAgICogIEByZXR1cm5zIHtOdW1iZXJ9IHRoZSB1aW50MzIgdmFsdWUgb2YgdGhlIHNoaWZ0ZWQgd29yZFxuICAgICAqL1xuICAgIGV4cG9ydGVyLnNoaWZ0TGVmdCA9IGZ1bmN0aW9uICh1aW50MzJ2YWwsIG51bUJpdHMpIHtcbiAgICAgICAgcmV0dXJuICh1aW50MzJ2YWwgPDwgbnVtQml0cykgPj4+IDA7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqICBSZXR1cm5zIHRoZSB1aW50MzIgcmVwcmVzZW50YXRpb24gb2YgYSA+Pj4gb3BlcmF0aW9uLlxuICAgICAqICBAcGFyYW0ge051bWJlcn0gdWludDMydmFsIHRoZSB3b3JkIHRvIGJlIHNoaWZ0ZWRcbiAgICAgKiAgQHBhcmFtIHtOdW1iZXJ9IG51bUJpdHMgdGhlIG51bWJlciBvZiBiaXRzIHRvIGJlIHNoaWZ0ZWQgKDAtMzEpXG4gICAgICogIEByZXR1cm5zIHtOdW1iZXJ9IHRoZSB1aW50MzIgdmFsdWUgb2YgdGhlIHNoaWZ0ZWQgd29yZFxuICAgICAqL1xuICAgIGV4cG9ydGVyLnNoaWZ0UmlnaHQgPSBmdW5jdGlvbiAodWludDMydmFsLCBudW1CaXRzKSB7XG4gICAgICAgIHJldHVybiB1aW50MzJ2YWwgPj4+IG51bUJpdHM7XG4gICAgfTtcblxuICAgIGV4cG9ydGVyLnJvdGF0ZUxlZnQgPSBmdW5jdGlvbiAodWludDMydmFsLCBudW1CaXRzKSB7XG4gICAgICAgIHJldHVybiAoKCh1aW50MzJ2YWwgPDwgbnVtQml0cykgPj4+IDApIHwgKHVpbnQzMnZhbCA+Pj4gKDMyIC0gbnVtQml0cykpKSA+Pj4gMDtcbiAgICB9O1xuXG4gICAgZXhwb3J0ZXIucm90YXRlUmlnaHQgPSBmdW5jdGlvbiAodWludDMydmFsLCBudW1CaXRzKSB7XG4gICAgICAgIHJldHVybiAoKCh1aW50MzJ2YWwpID4+PiAobnVtQml0cykpIHwgKCh1aW50MzJ2YWwpIDw8ICgzMiAtIG51bUJpdHMpKSA+Pj4gMCkgPj4+IDA7XG4gICAgfTtcblxuICAgIC8vXG4gICAgLy8gTG9naWNhbCBHYXRlc1xuICAgIC8vXG5cbiAgICAvKipcbiAgICAgKiAgQml0d2lzZSBjaG9vc2UgYml0cyBmcm9tIHkgb3IgeiwgYXMgYSBiaXR3aXNlIHggPyB5IDogelxuICAgICAqL1xuICAgIGV4cG9ydGVyLmNob29zZSA9IGZ1bmN0aW9uICh4LCB5LCB6KSB7XG4gICAgICAgIHJldHVybiAoKHggJiAoeSBeIHopKSBeIHopID4+PiAwO1xuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBNYWpvcml0eSBnYXRlIGZvciB0aHJlZSBwYXJhbWV0ZXJzLiBUYWtlcyBiaXR3aXNlIHRoZSBtYWpvcml0eSBvZiB4LCB5IGFuZCB6LFxuICAgICAqIEBzZWUgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWFqb3JpdHlfZnVuY3Rpb25cbiAgICAgKi9cbiAgICBleHBvcnRlci5tYWpvcml0eSA9IGZ1bmN0aW9uICh4LCB5LCB6KSB7XG4gICAgICAgIHJldHVybiAoKHggJiAoeSB8IHopKSB8ICh5ICYgeikpID4+PiAwO1xuICAgIH07XG5cbiAgICAvL1xuICAgIC8vICBBcml0aG1ldGljXG4gICAgLy9cblxuICAgIC8qKlxuICAgICAqICBBZGRzIHRoZSBnaXZlbiB2YWx1ZXMgbW9kdWx1cyAyXjMyLlxuICAgICAqICBAcmV0dXJucyB0aGUgc3VtIG9mIHRoZSBnaXZlbiB2YWx1ZXMgbW9kdWx1cyAyXjMyXG4gICAgICovXG4gICAgZXhwb3J0ZXIuYWRkTW9kMzIgPSBmdW5jdGlvbiAodWludDMydmFsMC8qLCBvcHRpb25hbFZhbHVlcyovKSB7XG4gICAgICAgIHZhciByZXN1bHQgPSB1aW50MzJ2YWwwO1xuICAgICAgICBmb3IgKHZhciBpbmRleCA9IDE7IGluZGV4IDwgYXJndW1lbnRzLmxlbmd0aDsgaW5kZXggKz0gMSkge1xuICAgICAgICAgICAgcmVzdWx0ICs9IGFyZ3VtZW50c1tpbmRleF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdCA+Pj4gMDtcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogIFJldHVybnMgdGhlIGxvZyBiYXNlIDIgb2YgdGhlIGdpdmVuIHZhbHVlLiBUaGF0IGlzIHRoZSBudW1iZXIgb2YgdGhlIGhpZ2hlc3Qgc2V0IGJpdC5cbiAgICAgKiAgQHBhcmFtIHtOdW1iZXJ9IHVpbnQzMnZhbCB0aGUgdmFsdWUsIHRoZSBsb2cyIGlzIGNhbGN1bGF0ZWQgb2ZcbiAgICAgKiAgQHJldHVybiB7TnVtYmVyfSB0aGUgbG9nYXJpdGhtIGJhc2UgMiwgYW4gaW50ZWdlciBiZXR3ZWVuIDAgYW5kIDMxXG4gICAgICovXG4gICAgZXhwb3J0ZXIubG9nMiA9IGZ1bmN0aW9uICh1aW50MzJ2YWwpIHtcbiAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IoTWF0aC5sb2codWludDMydmFsKSAvIE1hdGguTE4yKTtcbiAgICB9O1xuXG4vKlxuICAgIC8vIHRoaXMgaW1wbGVtZW50YXRpb24gZG9lcyB0aGUgc2FtZSwgbG9va3MgbXVjaCBmdW5uaWVyLCBidXQgdGFrZXMgMiB0aW1lcyBsb25nZXIgKGFjY29yZGluZyB0byBqc3BlcmYpIC4uLlxuICAgIHZhciBsb2cyX3UgPSBuZXcgVWludDMyQXJyYXkoMik7XG4gICAgdmFyIGxvZzJfZCA9IG5ldyBGbG9hdDY0QXJyYXkobG9nMl91LmJ1ZmZlcik7XG5cbiAgICBleHBvcnRlci5sb2cyID0gZnVuY3Rpb24gKHVpbnQzMnZhbCkge1xuICAgICAgICAvLyBQb3J0ZWQgZnJvbSBodHRwOi8vZ3JhcGhpY3Muc3RhbmZvcmQuZWR1L35zZWFuZGVyL2JpdGhhY2tzLmh0bWwjSW50ZWdlckxvZ0lFRUU2NEZsb2F0IHRvIGphdmFzY3JpcHRcbiAgICAgICAgLy8gKHB1YmxpYyBkb21haW4pXG4gICAgICAgIGlmICh1aW50MzJ2YWwgPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiAtSW5maW5pdHk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gZmlsbCBpbiB0aGUgbG93IHBhcnRcbiAgICAgICAgbG9nMl91WzBdID0gdWludDMydmFsO1xuICAgICAgICAvLyBzZXQgdGhlIG1hbnRpc3NhIHRvIDJeNTJcbiAgICAgICAgbG9nMl91WzFdID0gMHg0MzMwMDAwMDtcbiAgICAgICAgLy8gc3VidHJhY3QgMl41MlxuICAgICAgICBsb2cyX2RbMF0gLT0gMHgxMDAwMDAwMDAwMDAwMDtcbiAgICAgICAgcmV0dXJuIChsb2cyX3VbMV0gPj4+IDIwKSAtIDB4M0ZGO1xuICAgIH07XG4qL1xuXG4gICAgLyoqXG4gICAgICogIFJldHVybnMgdGhlIHRoZSBsb3cgYW5kIHRoZSBoaWdoIHVpbnQzMiBvZiB0aGUgbXVsdGlwbGljYXRpb24uXG4gICAgICogIEBwYXJhbSB7TnVtYmVyfSBmYWN0b3IxIGFuIHVpbnQzMlxuICAgICAqICBAcGFyYW0ge051bWJlcn0gZmFjdG9yMiBhbiB1aW50MzJcbiAgICAgKiAgQHBhcmFtIHtVaW50MzJBcnJheVsyXX0gcmVzdWx0VWludDMyQXJyYXkyIHRoZSBBcnJheSwgd2hlcmUgdGhlIHJlc3VsdCB3aWxsIGJlIHdyaXR0ZW4gdG9cbiAgICAgKiAgQHJldHVybnMgdW5kZWZpbmVkXG4gICAgICovXG4gICAgZXhwb3J0ZXIubXVsdCA9IGZ1bmN0aW9uIChmYWN0b3IxLCBmYWN0b3IyLCByZXN1bHRVaW50MzJBcnJheTIpIHtcbiAgICAgICAgdmFyIGhpZ2gxNiA9ICAoKGZhY3RvcjEgJiAweGZmZmYwMDAwKSA+Pj4gMCkgKiBmYWN0b3IyO1xuICAgICAgICB2YXIgbG93MTYgPSAoZmFjdG9yMSAmIDB4MDAwMGZmZmYpICogZmFjdG9yMjtcbiAgICAgICAgLy8gdGhlIGFkZGl0aW9uIGlzIGRhbmdlcm91cywgYmVjYXVzZSB0aGUgcmVzdWx0IHdpbGwgYmUgcm91bmRlZCwgc28gdGhlIHJlc3VsdCBkZXBlbmRzIG9uIHRoZSBsb3dlc3QgYml0cywgd2hpY2ggd2lsbCBiZSBjdXQgYXdheSFcbiAgICAgICAgdmFyIGNhcnJ5ID0gKChleHBvcnRlci50b1VpbnQzMihoaWdoMTYpICsgZXhwb3J0ZXIudG9VaW50MzIobG93MTYpKSA+PSBQT1dfMl8zMikgPyAxIDogMDtcbiAgICAgICAgcmVzdWx0VWludDMyQXJyYXkyWzBdID0gKGV4cG9ydGVyLmhpZ2hQYXJ0KGhpZ2gxNikgKyBleHBvcnRlci5oaWdoUGFydChsb3cxNikgKyBjYXJyeSkgPj4+IDA7XG4gICAgICAgIHJlc3VsdFVpbnQzMkFycmF5MlsxXSA9ICgoaGlnaDE2ID4+PiAwKSArIChsb3cxNiA+Pj4gMCkpOy8vID4+PiAwO1xuICAgIH07XG5cbn0pICgodHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcpID8gbW9kdWxlLmV4cG9ydHMgPSB7fSA6IHdpbmRvdy51aW50MzIgPSB7fSk7XG4iLCIvLyB2aW06dHM9NDpzdHM9NDpzdz00OlxuLyohXG4gKlxuICogQ29weXJpZ2h0IDIwMDktMjAxNyBLcmlzIEtvd2FsIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgTUlUXG4gKiBsaWNlbnNlIGZvdW5kIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9rcmlza293YWwvcS9ibG9iL3YxL0xJQ0VOU0VcbiAqXG4gKiBXaXRoIHBhcnRzIGJ5IFR5bGVyIENsb3NlXG4gKiBDb3B5cmlnaHQgMjAwNy0yMDA5IFR5bGVyIENsb3NlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgTUlUIFggbGljZW5zZSBmb3VuZFxuICogYXQgaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9taXQtbGljZW5zZS5odG1sXG4gKiBGb3JrZWQgYXQgcmVmX3NlbmQuanMgdmVyc2lvbjogMjAwOS0wNS0xMVxuICpcbiAqIFdpdGggcGFydHMgYnkgTWFyayBNaWxsZXJcbiAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICpcbiAqL1xuXG4oZnVuY3Rpb24gKGRlZmluaXRpb24pIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcblxuICAgIC8vIFRoaXMgZmlsZSB3aWxsIGZ1bmN0aW9uIHByb3Blcmx5IGFzIGEgPHNjcmlwdD4gdGFnLCBvciBhIG1vZHVsZVxuICAgIC8vIHVzaW5nIENvbW1vbkpTIGFuZCBOb2RlSlMgb3IgUmVxdWlyZUpTIG1vZHVsZSBmb3JtYXRzLiAgSW5cbiAgICAvLyBDb21tb24vTm9kZS9SZXF1aXJlSlMsIHRoZSBtb2R1bGUgZXhwb3J0cyB0aGUgUSBBUEkgYW5kIHdoZW5cbiAgICAvLyBleGVjdXRlZCBhcyBhIHNpbXBsZSA8c2NyaXB0PiwgaXQgY3JlYXRlcyBhIFEgZ2xvYmFsIGluc3RlYWQuXG5cbiAgICAvLyBNb250YWdlIFJlcXVpcmVcbiAgICBpZiAodHlwZW9mIGJvb3RzdHJhcCA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIGJvb3RzdHJhcChcInByb21pc2VcIiwgZGVmaW5pdGlvbik7XG5cbiAgICAvLyBDb21tb25KU1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGV4cG9ydHMgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIG1vZHVsZSA9PT0gXCJvYmplY3RcIikge1xuICAgICAgICBtb2R1bGUuZXhwb3J0cyA9IGRlZmluaXRpb24oKTtcblxuICAgIC8vIFJlcXVpcmVKU1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGRlZmluZSA9PT0gXCJmdW5jdGlvblwiICYmIGRlZmluZS5hbWQpIHtcbiAgICAgICAgZGVmaW5lKGRlZmluaXRpb24pO1xuXG4gICAgLy8gU0VTIChTZWN1cmUgRWNtYVNjcmlwdClcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBzZXMgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgaWYgKCFzZXMub2soKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc2VzLm1ha2VRID0gZGVmaW5pdGlvbjtcbiAgICAgICAgfVxuXG4gICAgLy8gPHNjcmlwdD5cbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIgfHwgdHlwZW9mIHNlbGYgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgLy8gUHJlZmVyIHdpbmRvdyBvdmVyIHNlbGYgZm9yIGFkZC1vbiBzY3JpcHRzLiBVc2Ugc2VsZiBmb3JcbiAgICAgICAgLy8gbm9uLXdpbmRvd2VkIGNvbnRleHRzLlxuICAgICAgICB2YXIgZ2xvYmFsID0gdHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIiA/IHdpbmRvdyA6IHNlbGY7XG5cbiAgICAgICAgLy8gR2V0IHRoZSBgd2luZG93YCBvYmplY3QsIHNhdmUgdGhlIHByZXZpb3VzIFEgZ2xvYmFsXG4gICAgICAgIC8vIGFuZCBpbml0aWFsaXplIFEgYXMgYSBnbG9iYWwuXG4gICAgICAgIHZhciBwcmV2aW91c1EgPSBnbG9iYWwuUTtcbiAgICAgICAgZ2xvYmFsLlEgPSBkZWZpbml0aW9uKCk7XG5cbiAgICAgICAgLy8gQWRkIGEgbm9Db25mbGljdCBmdW5jdGlvbiBzbyBRIGNhbiBiZSByZW1vdmVkIGZyb20gdGhlXG4gICAgICAgIC8vIGdsb2JhbCBuYW1lc3BhY2UuXG4gICAgICAgIGdsb2JhbC5RLm5vQ29uZmxpY3QgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBnbG9iYWwuUSA9IHByZXZpb3VzUTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9O1xuXG4gICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVGhpcyBlbnZpcm9ubWVudCB3YXMgbm90IGFudGljaXBhdGVkIGJ5IFEuIFBsZWFzZSBmaWxlIGEgYnVnLlwiKTtcbiAgICB9XG5cbn0pKGZ1bmN0aW9uICgpIHtcblwidXNlIHN0cmljdFwiO1xuXG52YXIgaGFzU3RhY2tzID0gZmFsc2U7XG50cnkge1xuICAgIHRocm93IG5ldyBFcnJvcigpO1xufSBjYXRjaCAoZSkge1xuICAgIGhhc1N0YWNrcyA9ICEhZS5zdGFjaztcbn1cblxuLy8gQWxsIGNvZGUgYWZ0ZXIgdGhpcyBwb2ludCB3aWxsIGJlIGZpbHRlcmVkIGZyb20gc3RhY2sgdHJhY2VzIHJlcG9ydGVkXG4vLyBieSBRLlxudmFyIHFTdGFydGluZ0xpbmUgPSBjYXB0dXJlTGluZSgpO1xudmFyIHFGaWxlTmFtZTtcblxuLy8gc2hpbXNcblxuLy8gdXNlZCBmb3IgZmFsbGJhY2sgaW4gXCJhbGxSZXNvbHZlZFwiXG52YXIgbm9vcCA9IGZ1bmN0aW9uICgpIHt9O1xuXG4vLyBVc2UgdGhlIGZhc3Rlc3QgcG9zc2libGUgbWVhbnMgdG8gZXhlY3V0ZSBhIHRhc2sgaW4gYSBmdXR1cmUgdHVyblxuLy8gb2YgdGhlIGV2ZW50IGxvb3AuXG52YXIgbmV4dFRpY2sgPShmdW5jdGlvbiAoKSB7XG4gICAgLy8gbGlua2VkIGxpc3Qgb2YgdGFza3MgKHNpbmdsZSwgd2l0aCBoZWFkIG5vZGUpXG4gICAgdmFyIGhlYWQgPSB7dGFzazogdm9pZCAwLCBuZXh0OiBudWxsfTtcbiAgICB2YXIgdGFpbCA9IGhlYWQ7XG4gICAgdmFyIGZsdXNoaW5nID0gZmFsc2U7XG4gICAgdmFyIHJlcXVlc3RUaWNrID0gdm9pZCAwO1xuICAgIHZhciBpc05vZGVKUyA9IGZhbHNlO1xuICAgIC8vIHF1ZXVlIGZvciBsYXRlIHRhc2tzLCB1c2VkIGJ5IHVuaGFuZGxlZCByZWplY3Rpb24gdHJhY2tpbmdcbiAgICB2YXIgbGF0ZXJRdWV1ZSA9IFtdO1xuXG4gICAgZnVuY3Rpb24gZmx1c2goKSB7XG4gICAgICAgIC8qIGpzaGludCBsb29wZnVuYzogdHJ1ZSAqL1xuICAgICAgICB2YXIgdGFzaywgZG9tYWluO1xuXG4gICAgICAgIHdoaWxlIChoZWFkLm5leHQpIHtcbiAgICAgICAgICAgIGhlYWQgPSBoZWFkLm5leHQ7XG4gICAgICAgICAgICB0YXNrID0gaGVhZC50YXNrO1xuICAgICAgICAgICAgaGVhZC50YXNrID0gdm9pZCAwO1xuICAgICAgICAgICAgZG9tYWluID0gaGVhZC5kb21haW47XG5cbiAgICAgICAgICAgIGlmIChkb21haW4pIHtcbiAgICAgICAgICAgICAgICBoZWFkLmRvbWFpbiA9IHZvaWQgMDtcbiAgICAgICAgICAgICAgICBkb21haW4uZW50ZXIoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJ1blNpbmdsZSh0YXNrLCBkb21haW4pO1xuXG4gICAgICAgIH1cbiAgICAgICAgd2hpbGUgKGxhdGVyUXVldWUubGVuZ3RoKSB7XG4gICAgICAgICAgICB0YXNrID0gbGF0ZXJRdWV1ZS5wb3AoKTtcbiAgICAgICAgICAgIHJ1blNpbmdsZSh0YXNrKTtcbiAgICAgICAgfVxuICAgICAgICBmbHVzaGluZyA9IGZhbHNlO1xuICAgIH1cbiAgICAvLyBydW5zIGEgc2luZ2xlIGZ1bmN0aW9uIGluIHRoZSBhc3luYyBxdWV1ZVxuICAgIGZ1bmN0aW9uIHJ1blNpbmdsZSh0YXNrLCBkb21haW4pIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRhc2soKTtcblxuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICBpZiAoaXNOb2RlSlMpIHtcbiAgICAgICAgICAgICAgICAvLyBJbiBub2RlLCB1bmNhdWdodCBleGNlcHRpb25zIGFyZSBjb25zaWRlcmVkIGZhdGFsIGVycm9ycy5cbiAgICAgICAgICAgICAgICAvLyBSZS10aHJvdyB0aGVtIHN5bmNocm9ub3VzbHkgdG8gaW50ZXJydXB0IGZsdXNoaW5nIVxuXG4gICAgICAgICAgICAgICAgLy8gRW5zdXJlIGNvbnRpbnVhdGlvbiBpZiB0aGUgdW5jYXVnaHQgZXhjZXB0aW9uIGlzIHN1cHByZXNzZWRcbiAgICAgICAgICAgICAgICAvLyBsaXN0ZW5pbmcgXCJ1bmNhdWdodEV4Y2VwdGlvblwiIGV2ZW50cyAoYXMgZG9tYWlucyBkb2VzKS5cbiAgICAgICAgICAgICAgICAvLyBDb250aW51ZSBpbiBuZXh0IGV2ZW50IHRvIGF2b2lkIHRpY2sgcmVjdXJzaW9uLlxuICAgICAgICAgICAgICAgIGlmIChkb21haW4pIHtcbiAgICAgICAgICAgICAgICAgICAgZG9tYWluLmV4aXQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dChmbHVzaCwgMCk7XG4gICAgICAgICAgICAgICAgaWYgKGRvbWFpbikge1xuICAgICAgICAgICAgICAgICAgICBkb21haW4uZW50ZXIoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aHJvdyBlO1xuXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIEluIGJyb3dzZXJzLCB1bmNhdWdodCBleGNlcHRpb25zIGFyZSBub3QgZmF0YWwuXG4gICAgICAgICAgICAgICAgLy8gUmUtdGhyb3cgdGhlbSBhc3luY2hyb25vdXNseSB0byBhdm9pZCBzbG93LWRvd25zLlxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICAgICAgICAgIH0sIDApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGRvbWFpbikge1xuICAgICAgICAgICAgZG9tYWluLmV4aXQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5leHRUaWNrID0gZnVuY3Rpb24gKHRhc2spIHtcbiAgICAgICAgdGFpbCA9IHRhaWwubmV4dCA9IHtcbiAgICAgICAgICAgIHRhc2s6IHRhc2ssXG4gICAgICAgICAgICBkb21haW46IGlzTm9kZUpTICYmIHByb2Nlc3MuZG9tYWluLFxuICAgICAgICAgICAgbmV4dDogbnVsbFxuICAgICAgICB9O1xuXG4gICAgICAgIGlmICghZmx1c2hpbmcpIHtcbiAgICAgICAgICAgIGZsdXNoaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgIHJlcXVlc3RUaWNrKCk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgaWYgKHR5cGVvZiBwcm9jZXNzID09PSBcIm9iamVjdFwiICYmXG4gICAgICAgIHByb2Nlc3MudG9TdHJpbmcoKSA9PT0gXCJbb2JqZWN0IHByb2Nlc3NdXCIgJiYgcHJvY2Vzcy5uZXh0VGljaykge1xuICAgICAgICAvLyBFbnN1cmUgUSBpcyBpbiBhIHJlYWwgTm9kZSBlbnZpcm9ubWVudCwgd2l0aCBhIGBwcm9jZXNzLm5leHRUaWNrYC5cbiAgICAgICAgLy8gVG8gc2VlIHRocm91Z2ggZmFrZSBOb2RlIGVudmlyb25tZW50czpcbiAgICAgICAgLy8gKiBNb2NoYSB0ZXN0IHJ1bm5lciAtIGV4cG9zZXMgYSBgcHJvY2Vzc2AgZ2xvYmFsIHdpdGhvdXQgYSBgbmV4dFRpY2tgXG4gICAgICAgIC8vICogQnJvd3NlcmlmeSAtIGV4cG9zZXMgYSBgcHJvY2Vzcy5uZXhUaWNrYCBmdW5jdGlvbiB0aGF0IHVzZXNcbiAgICAgICAgLy8gICBgc2V0VGltZW91dGAuIEluIHRoaXMgY2FzZSBgc2V0SW1tZWRpYXRlYCBpcyBwcmVmZXJyZWQgYmVjYXVzZVxuICAgICAgICAvLyAgICBpdCBpcyBmYXN0ZXIuIEJyb3dzZXJpZnkncyBgcHJvY2Vzcy50b1N0cmluZygpYCB5aWVsZHNcbiAgICAgICAgLy8gICBcIltvYmplY3QgT2JqZWN0XVwiLCB3aGlsZSBpbiBhIHJlYWwgTm9kZSBlbnZpcm9ubWVudFxuICAgICAgICAvLyAgIGBwcm9jZXNzLnRvU3RyaW5nKClgIHlpZWxkcyBcIltvYmplY3QgcHJvY2Vzc11cIi5cbiAgICAgICAgaXNOb2RlSlMgPSB0cnVlO1xuXG4gICAgICAgIHJlcXVlc3RUaWNrID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcHJvY2Vzcy5uZXh0VGljayhmbHVzaCk7XG4gICAgICAgIH07XG5cbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBzZXRJbW1lZGlhdGUgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAvLyBJbiBJRTEwLCBOb2RlLmpzIDAuOSssIG9yIGh0dHBzOi8vZ2l0aHViLmNvbS9Ob2JsZUpTL3NldEltbWVkaWF0ZVxuICAgICAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgcmVxdWVzdFRpY2sgPSBzZXRJbW1lZGlhdGUuYmluZCh3aW5kb3csIGZsdXNoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlcXVlc3RUaWNrID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHNldEltbWVkaWF0ZShmbHVzaCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBNZXNzYWdlQ2hhbm5lbCAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAvLyBtb2Rlcm4gYnJvd3NlcnNcbiAgICAgICAgLy8gaHR0cDovL3d3dy5ub25ibG9ja2luZy5pby8yMDExLzA2L3dpbmRvd25leHR0aWNrLmh0bWxcbiAgICAgICAgdmFyIGNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWwoKTtcbiAgICAgICAgLy8gQXQgbGVhc3QgU2FmYXJpIFZlcnNpb24gNi4wLjUgKDg1MzYuMzAuMSkgaW50ZXJtaXR0ZW50bHkgY2Fubm90IGNyZWF0ZVxuICAgICAgICAvLyB3b3JraW5nIG1lc3NhZ2UgcG9ydHMgdGhlIGZpcnN0IHRpbWUgYSBwYWdlIGxvYWRzLlxuICAgICAgICBjaGFubmVsLnBvcnQxLm9ubWVzc2FnZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJlcXVlc3RUaWNrID0gcmVxdWVzdFBvcnRUaWNrO1xuICAgICAgICAgICAgY2hhbm5lbC5wb3J0MS5vbm1lc3NhZ2UgPSBmbHVzaDtcbiAgICAgICAgICAgIGZsdXNoKCk7XG4gICAgICAgIH07XG4gICAgICAgIHZhciByZXF1ZXN0UG9ydFRpY2sgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAvLyBPcGVyYSByZXF1aXJlcyB1cyB0byBwcm92aWRlIGEgbWVzc2FnZSBwYXlsb2FkLCByZWdhcmRsZXNzIG9mXG4gICAgICAgICAgICAvLyB3aGV0aGVyIHdlIHVzZSBpdC5cbiAgICAgICAgICAgIGNoYW5uZWwucG9ydDIucG9zdE1lc3NhZ2UoMCk7XG4gICAgICAgIH07XG4gICAgICAgIHJlcXVlc3RUaWNrID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc2V0VGltZW91dChmbHVzaCwgMCk7XG4gICAgICAgICAgICByZXF1ZXN0UG9ydFRpY2soKTtcbiAgICAgICAgfTtcblxuICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIG9sZCBicm93c2Vyc1xuICAgICAgICByZXF1ZXN0VGljayA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoZmx1c2gsIDApO1xuICAgICAgICB9O1xuICAgIH1cbiAgICAvLyBydW5zIGEgdGFzayBhZnRlciBhbGwgb3RoZXIgdGFza3MgaGF2ZSBiZWVuIHJ1blxuICAgIC8vIHRoaXMgaXMgdXNlZnVsIGZvciB1bmhhbmRsZWQgcmVqZWN0aW9uIHRyYWNraW5nIHRoYXQgbmVlZHMgdG8gaGFwcGVuXG4gICAgLy8gYWZ0ZXIgYWxsIGB0aGVuYGQgdGFza3MgaGF2ZSBiZWVuIHJ1bi5cbiAgICBuZXh0VGljay5ydW5BZnRlciA9IGZ1bmN0aW9uICh0YXNrKSB7XG4gICAgICAgIGxhdGVyUXVldWUucHVzaCh0YXNrKTtcbiAgICAgICAgaWYgKCFmbHVzaGluZykge1xuICAgICAgICAgICAgZmx1c2hpbmcgPSB0cnVlO1xuICAgICAgICAgICAgcmVxdWVzdFRpY2soKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgcmV0dXJuIG5leHRUaWNrO1xufSkoKTtcblxuLy8gQXR0ZW1wdCB0byBtYWtlIGdlbmVyaWNzIHNhZmUgaW4gdGhlIGZhY2Ugb2YgZG93bnN0cmVhbVxuLy8gbW9kaWZpY2F0aW9ucy5cbi8vIFRoZXJlIGlzIG5vIHNpdHVhdGlvbiB3aGVyZSB0aGlzIGlzIG5lY2Vzc2FyeS5cbi8vIElmIHlvdSBuZWVkIGEgc2VjdXJpdHkgZ3VhcmFudGVlLCB0aGVzZSBwcmltb3JkaWFscyBuZWVkIHRvIGJlXG4vLyBkZWVwbHkgZnJvemVuIGFueXdheSwgYW5kIGlmIHlvdSBkb27igJl0IG5lZWQgYSBzZWN1cml0eSBndWFyYW50ZWUsXG4vLyB0aGlzIGlzIGp1c3QgcGxhaW4gcGFyYW5vaWQuXG4vLyBIb3dldmVyLCB0aGlzICoqbWlnaHQqKiBoYXZlIHRoZSBuaWNlIHNpZGUtZWZmZWN0IG9mIHJlZHVjaW5nIHRoZSBzaXplIG9mXG4vLyB0aGUgbWluaWZpZWQgY29kZSBieSByZWR1Y2luZyB4LmNhbGwoKSB0byBtZXJlbHkgeCgpXG4vLyBTZWUgTWFyayBNaWxsZXLigJlzIGV4cGxhbmF0aW9uIG9mIHdoYXQgdGhpcyBkb2VzLlxuLy8gaHR0cDovL3dpa2kuZWNtYXNjcmlwdC5vcmcvZG9rdS5waHA/aWQ9Y29udmVudGlvbnM6c2FmZV9tZXRhX3Byb2dyYW1taW5nXG52YXIgY2FsbCA9IEZ1bmN0aW9uLmNhbGw7XG5mdW5jdGlvbiB1bmN1cnJ5VGhpcyhmKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIGNhbGwuYXBwbHkoZiwgYXJndW1lbnRzKTtcbiAgICB9O1xufVxuLy8gVGhpcyBpcyBlcXVpdmFsZW50LCBidXQgc2xvd2VyOlxuLy8gdW5jdXJyeVRoaXMgPSBGdW5jdGlvbl9iaW5kLmJpbmQoRnVuY3Rpb25fYmluZC5jYWxsKTtcbi8vIGh0dHA6Ly9qc3BlcmYuY29tL3VuY3Vycnl0aGlzXG5cbnZhciBhcnJheV9zbGljZSA9IHVuY3VycnlUaGlzKEFycmF5LnByb3RvdHlwZS5zbGljZSk7XG5cbnZhciBhcnJheV9yZWR1Y2UgPSB1bmN1cnJ5VGhpcyhcbiAgICBBcnJheS5wcm90b3R5cGUucmVkdWNlIHx8IGZ1bmN0aW9uIChjYWxsYmFjaywgYmFzaXMpIHtcbiAgICAgICAgdmFyIGluZGV4ID0gMCxcbiAgICAgICAgICAgIGxlbmd0aCA9IHRoaXMubGVuZ3RoO1xuICAgICAgICAvLyBjb25jZXJuaW5nIHRoZSBpbml0aWFsIHZhbHVlLCBpZiBvbmUgaXMgbm90IHByb3ZpZGVkXG4gICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICAvLyBzZWVrIHRvIHRoZSBmaXJzdCB2YWx1ZSBpbiB0aGUgYXJyYXksIGFjY291bnRpbmdcbiAgICAgICAgICAgIC8vIGZvciB0aGUgcG9zc2liaWxpdHkgdGhhdCBpcyBpcyBhIHNwYXJzZSBhcnJheVxuICAgICAgICAgICAgZG8ge1xuICAgICAgICAgICAgICAgIGlmIChpbmRleCBpbiB0aGlzKSB7XG4gICAgICAgICAgICAgICAgICAgIGJhc2lzID0gdGhpc1tpbmRleCsrXTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICgrK2luZGV4ID49IGxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSB3aGlsZSAoMSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gcmVkdWNlXG4gICAgICAgIGZvciAoOyBpbmRleCA8IGxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICAgICAgLy8gYWNjb3VudCBmb3IgdGhlIHBvc3NpYmlsaXR5IHRoYXQgdGhlIGFycmF5IGlzIHNwYXJzZVxuICAgICAgICAgICAgaWYgKGluZGV4IGluIHRoaXMpIHtcbiAgICAgICAgICAgICAgICBiYXNpcyA9IGNhbGxiYWNrKGJhc2lzLCB0aGlzW2luZGV4XSwgaW5kZXgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBiYXNpcztcbiAgICB9XG4pO1xuXG52YXIgYXJyYXlfaW5kZXhPZiA9IHVuY3VycnlUaGlzKFxuICAgIEFycmF5LnByb3RvdHlwZS5pbmRleE9mIHx8IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAvLyBub3QgYSB2ZXJ5IGdvb2Qgc2hpbSwgYnV0IGdvb2QgZW5vdWdoIGZvciBvdXIgb25lIHVzZSBvZiBpdFxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmICh0aGlzW2ldID09PSB2YWx1ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiAtMTtcbiAgICB9XG4pO1xuXG52YXIgYXJyYXlfbWFwID0gdW5jdXJyeVRoaXMoXG4gICAgQXJyYXkucHJvdG90eXBlLm1hcCB8fCBmdW5jdGlvbiAoY2FsbGJhY2ssIHRoaXNwKSB7XG4gICAgICAgIHZhciBzZWxmID0gdGhpcztcbiAgICAgICAgdmFyIGNvbGxlY3QgPSBbXTtcbiAgICAgICAgYXJyYXlfcmVkdWNlKHNlbGYsIGZ1bmN0aW9uICh1bmRlZmluZWQsIHZhbHVlLCBpbmRleCkge1xuICAgICAgICAgICAgY29sbGVjdC5wdXNoKGNhbGxiYWNrLmNhbGwodGhpc3AsIHZhbHVlLCBpbmRleCwgc2VsZikpO1xuICAgICAgICB9LCB2b2lkIDApO1xuICAgICAgICByZXR1cm4gY29sbGVjdDtcbiAgICB9XG4pO1xuXG52YXIgb2JqZWN0X2NyZWF0ZSA9IE9iamVjdC5jcmVhdGUgfHwgZnVuY3Rpb24gKHByb3RvdHlwZSkge1xuICAgIGZ1bmN0aW9uIFR5cGUoKSB7IH1cbiAgICBUeXBlLnByb3RvdHlwZSA9IHByb3RvdHlwZTtcbiAgICByZXR1cm4gbmV3IFR5cGUoKTtcbn07XG5cbnZhciBvYmplY3RfZGVmaW5lUHJvcGVydHkgPSBPYmplY3QuZGVmaW5lUHJvcGVydHkgfHwgZnVuY3Rpb24gKG9iaiwgcHJvcCwgZGVzY3JpcHRvcikge1xuICAgIG9ialtwcm9wXSA9IGRlc2NyaXB0b3IudmFsdWU7XG4gICAgcmV0dXJuIG9iajtcbn07XG5cbnZhciBvYmplY3RfaGFzT3duUHJvcGVydHkgPSB1bmN1cnJ5VGhpcyhPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5KTtcblxudmFyIG9iamVjdF9rZXlzID0gT2JqZWN0LmtleXMgfHwgZnVuY3Rpb24gKG9iamVjdCkge1xuICAgIHZhciBrZXlzID0gW107XG4gICAgZm9yICh2YXIga2V5IGluIG9iamVjdCkge1xuICAgICAgICBpZiAob2JqZWN0X2hhc093blByb3BlcnR5KG9iamVjdCwga2V5KSkge1xuICAgICAgICAgICAga2V5cy5wdXNoKGtleSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGtleXM7XG59O1xuXG52YXIgb2JqZWN0X3RvU3RyaW5nID0gdW5jdXJyeVRoaXMoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyk7XG5cbmZ1bmN0aW9uIGlzT2JqZWN0KHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlID09PSBPYmplY3QodmFsdWUpO1xufVxuXG4vLyBnZW5lcmF0b3IgcmVsYXRlZCBzaGltc1xuXG4vLyBGSVhNRTogUmVtb3ZlIHRoaXMgZnVuY3Rpb24gb25jZSBFUzYgZ2VuZXJhdG9ycyBhcmUgaW4gU3BpZGVyTW9ua2V5LlxuZnVuY3Rpb24gaXNTdG9wSXRlcmF0aW9uKGV4Y2VwdGlvbikge1xuICAgIHJldHVybiAoXG4gICAgICAgIG9iamVjdF90b1N0cmluZyhleGNlcHRpb24pID09PSBcIltvYmplY3QgU3RvcEl0ZXJhdGlvbl1cIiB8fFxuICAgICAgICBleGNlcHRpb24gaW5zdGFuY2VvZiBRUmV0dXJuVmFsdWVcbiAgICApO1xufVxuXG4vLyBGSVhNRTogUmVtb3ZlIHRoaXMgaGVscGVyIGFuZCBRLnJldHVybiBvbmNlIEVTNiBnZW5lcmF0b3JzIGFyZSBpblxuLy8gU3BpZGVyTW9ua2V5LlxudmFyIFFSZXR1cm5WYWx1ZTtcbmlmICh0eXBlb2YgUmV0dXJuVmFsdWUgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICBRUmV0dXJuVmFsdWUgPSBSZXR1cm5WYWx1ZTtcbn0gZWxzZSB7XG4gICAgUVJldHVyblZhbHVlID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICB9O1xufVxuXG4vLyBsb25nIHN0YWNrIHRyYWNlc1xuXG52YXIgU1RBQ0tfSlVNUF9TRVBBUkFUT1IgPSBcIkZyb20gcHJldmlvdXMgZXZlbnQ6XCI7XG5cbmZ1bmN0aW9uIG1ha2VTdGFja1RyYWNlTG9uZyhlcnJvciwgcHJvbWlzZSkge1xuICAgIC8vIElmIHBvc3NpYmxlLCB0cmFuc2Zvcm0gdGhlIGVycm9yIHN0YWNrIHRyYWNlIGJ5IHJlbW92aW5nIE5vZGUgYW5kIFFcbiAgICAvLyBjcnVmdCwgdGhlbiBjb25jYXRlbmF0aW5nIHdpdGggdGhlIHN0YWNrIHRyYWNlIG9mIGBwcm9taXNlYC4gU2VlICM1Ny5cbiAgICBpZiAoaGFzU3RhY2tzICYmXG4gICAgICAgIHByb21pc2Uuc3RhY2sgJiZcbiAgICAgICAgdHlwZW9mIGVycm9yID09PSBcIm9iamVjdFwiICYmXG4gICAgICAgIGVycm9yICE9PSBudWxsICYmXG4gICAgICAgIGVycm9yLnN0YWNrXG4gICAgKSB7XG4gICAgICAgIHZhciBzdGFja3MgPSBbXTtcbiAgICAgICAgZm9yICh2YXIgcCA9IHByb21pc2U7ICEhcDsgcCA9IHAuc291cmNlKSB7XG4gICAgICAgICAgICBpZiAocC5zdGFjayAmJiAoIWVycm9yLl9fbWluaW11bVN0YWNrQ291bnRlcl9fIHx8IGVycm9yLl9fbWluaW11bVN0YWNrQ291bnRlcl9fID4gcC5zdGFja0NvdW50ZXIpKSB7XG4gICAgICAgICAgICAgICAgb2JqZWN0X2RlZmluZVByb3BlcnR5KGVycm9yLCBcIl9fbWluaW11bVN0YWNrQ291bnRlcl9fXCIsIHt2YWx1ZTogcC5zdGFja0NvdW50ZXIsIGNvbmZpZ3VyYWJsZTogdHJ1ZX0pO1xuICAgICAgICAgICAgICAgIHN0YWNrcy51bnNoaWZ0KHAuc3RhY2spO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHN0YWNrcy51bnNoaWZ0KGVycm9yLnN0YWNrKTtcblxuICAgICAgICB2YXIgY29uY2F0ZWRTdGFja3MgPSBzdGFja3Muam9pbihcIlxcblwiICsgU1RBQ0tfSlVNUF9TRVBBUkFUT1IgKyBcIlxcblwiKTtcbiAgICAgICAgdmFyIHN0YWNrID0gZmlsdGVyU3RhY2tTdHJpbmcoY29uY2F0ZWRTdGFja3MpO1xuICAgICAgICBvYmplY3RfZGVmaW5lUHJvcGVydHkoZXJyb3IsIFwic3RhY2tcIiwge3ZhbHVlOiBzdGFjaywgY29uZmlndXJhYmxlOiB0cnVlfSk7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBmaWx0ZXJTdGFja1N0cmluZyhzdGFja1N0cmluZykge1xuICAgIHZhciBsaW5lcyA9IHN0YWNrU3RyaW5nLnNwbGl0KFwiXFxuXCIpO1xuICAgIHZhciBkZXNpcmVkTGluZXMgPSBbXTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxpbmVzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgIHZhciBsaW5lID0gbGluZXNbaV07XG5cbiAgICAgICAgaWYgKCFpc0ludGVybmFsRnJhbWUobGluZSkgJiYgIWlzTm9kZUZyYW1lKGxpbmUpICYmIGxpbmUpIHtcbiAgICAgICAgICAgIGRlc2lyZWRMaW5lcy5wdXNoKGxpbmUpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBkZXNpcmVkTGluZXMuam9pbihcIlxcblwiKTtcbn1cblxuZnVuY3Rpb24gaXNOb2RlRnJhbWUoc3RhY2tMaW5lKSB7XG4gICAgcmV0dXJuIHN0YWNrTGluZS5pbmRleE9mKFwiKG1vZHVsZS5qczpcIikgIT09IC0xIHx8XG4gICAgICAgICAgIHN0YWNrTGluZS5pbmRleE9mKFwiKG5vZGUuanM6XCIpICE9PSAtMTtcbn1cblxuZnVuY3Rpb24gZ2V0RmlsZU5hbWVBbmRMaW5lTnVtYmVyKHN0YWNrTGluZSkge1xuICAgIC8vIE5hbWVkIGZ1bmN0aW9uczogXCJhdCBmdW5jdGlvbk5hbWUgKGZpbGVuYW1lOmxpbmVOdW1iZXI6Y29sdW1uTnVtYmVyKVwiXG4gICAgLy8gSW4gSUUxMCBmdW5jdGlvbiBuYW1lIGNhbiBoYXZlIHNwYWNlcyAoXCJBbm9ueW1vdXMgZnVuY3Rpb25cIikgT19vXG4gICAgdmFyIGF0dGVtcHQxID0gL2F0IC4rIFxcKCguKyk6KFxcZCspOig/OlxcZCspXFwpJC8uZXhlYyhzdGFja0xpbmUpO1xuICAgIGlmIChhdHRlbXB0MSkge1xuICAgICAgICByZXR1cm4gW2F0dGVtcHQxWzFdLCBOdW1iZXIoYXR0ZW1wdDFbMl0pXTtcbiAgICB9XG5cbiAgICAvLyBBbm9ueW1vdXMgZnVuY3Rpb25zOiBcImF0IGZpbGVuYW1lOmxpbmVOdW1iZXI6Y29sdW1uTnVtYmVyXCJcbiAgICB2YXIgYXR0ZW1wdDIgPSAvYXQgKFteIF0rKTooXFxkKyk6KD86XFxkKykkLy5leGVjKHN0YWNrTGluZSk7XG4gICAgaWYgKGF0dGVtcHQyKSB7XG4gICAgICAgIHJldHVybiBbYXR0ZW1wdDJbMV0sIE51bWJlcihhdHRlbXB0MlsyXSldO1xuICAgIH1cblxuICAgIC8vIEZpcmVmb3ggc3R5bGU6IFwiZnVuY3Rpb25AZmlsZW5hbWU6bGluZU51bWJlciBvciBAZmlsZW5hbWU6bGluZU51bWJlclwiXG4gICAgdmFyIGF0dGVtcHQzID0gLy4qQCguKyk6KFxcZCspJC8uZXhlYyhzdGFja0xpbmUpO1xuICAgIGlmIChhdHRlbXB0Mykge1xuICAgICAgICByZXR1cm4gW2F0dGVtcHQzWzFdLCBOdW1iZXIoYXR0ZW1wdDNbMl0pXTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGlzSW50ZXJuYWxGcmFtZShzdGFja0xpbmUpIHtcbiAgICB2YXIgZmlsZU5hbWVBbmRMaW5lTnVtYmVyID0gZ2V0RmlsZU5hbWVBbmRMaW5lTnVtYmVyKHN0YWNrTGluZSk7XG5cbiAgICBpZiAoIWZpbGVOYW1lQW5kTGluZU51bWJlcikge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgdmFyIGZpbGVOYW1lID0gZmlsZU5hbWVBbmRMaW5lTnVtYmVyWzBdO1xuICAgIHZhciBsaW5lTnVtYmVyID0gZmlsZU5hbWVBbmRMaW5lTnVtYmVyWzFdO1xuXG4gICAgcmV0dXJuIGZpbGVOYW1lID09PSBxRmlsZU5hbWUgJiZcbiAgICAgICAgbGluZU51bWJlciA+PSBxU3RhcnRpbmdMaW5lICYmXG4gICAgICAgIGxpbmVOdW1iZXIgPD0gcUVuZGluZ0xpbmU7XG59XG5cbi8vIGRpc2NvdmVyIG93biBmaWxlIG5hbWUgYW5kIGxpbmUgbnVtYmVyIHJhbmdlIGZvciBmaWx0ZXJpbmcgc3RhY2tcbi8vIHRyYWNlc1xuZnVuY3Rpb24gY2FwdHVyZUxpbmUoKSB7XG4gICAgaWYgKCFoYXNTdGFja3MpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcigpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgdmFyIGxpbmVzID0gZS5zdGFjay5zcGxpdChcIlxcblwiKTtcbiAgICAgICAgdmFyIGZpcnN0TGluZSA9IGxpbmVzWzBdLmluZGV4T2YoXCJAXCIpID4gMCA/IGxpbmVzWzFdIDogbGluZXNbMl07XG4gICAgICAgIHZhciBmaWxlTmFtZUFuZExpbmVOdW1iZXIgPSBnZXRGaWxlTmFtZUFuZExpbmVOdW1iZXIoZmlyc3RMaW5lKTtcbiAgICAgICAgaWYgKCFmaWxlTmFtZUFuZExpbmVOdW1iZXIpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHFGaWxlTmFtZSA9IGZpbGVOYW1lQW5kTGluZU51bWJlclswXTtcbiAgICAgICAgcmV0dXJuIGZpbGVOYW1lQW5kTGluZU51bWJlclsxXTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGRlcHJlY2F0ZShjYWxsYmFjaywgbmFtZSwgYWx0ZXJuYXRpdmUpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAodHlwZW9mIGNvbnNvbGUgIT09IFwidW5kZWZpbmVkXCIgJiZcbiAgICAgICAgICAgIHR5cGVvZiBjb25zb2xlLndhcm4gPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKG5hbWUgKyBcIiBpcyBkZXByZWNhdGVkLCB1c2UgXCIgKyBhbHRlcm5hdGl2ZSArXG4gICAgICAgICAgICAgICAgICAgICAgICAgXCIgaW5zdGVhZC5cIiwgbmV3IEVycm9yKFwiXCIpLnN0YWNrKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY2FsbGJhY2suYXBwbHkoY2FsbGJhY2ssIGFyZ3VtZW50cyk7XG4gICAgfTtcbn1cblxuLy8gZW5kIG9mIHNoaW1zXG4vLyBiZWdpbm5pbmcgb2YgcmVhbCB3b3JrXG5cbi8qKlxuICogQ29uc3RydWN0cyBhIHByb21pc2UgZm9yIGFuIGltbWVkaWF0ZSByZWZlcmVuY2UsIHBhc3NlcyBwcm9taXNlcyB0aHJvdWdoLCBvclxuICogY29lcmNlcyBwcm9taXNlcyBmcm9tIGRpZmZlcmVudCBzeXN0ZW1zLlxuICogQHBhcmFtIHZhbHVlIGltbWVkaWF0ZSByZWZlcmVuY2Ugb3IgcHJvbWlzZVxuICovXG5mdW5jdGlvbiBRKHZhbHVlKSB7XG4gICAgLy8gSWYgdGhlIG9iamVjdCBpcyBhbHJlYWR5IGEgUHJvbWlzZSwgcmV0dXJuIGl0IGRpcmVjdGx5LiAgVGhpcyBlbmFibGVzXG4gICAgLy8gdGhlIHJlc29sdmUgZnVuY3Rpb24gdG8gYm90aCBiZSB1c2VkIHRvIGNyZWF0ZWQgcmVmZXJlbmNlcyBmcm9tIG9iamVjdHMsXG4gICAgLy8gYnV0IHRvIHRvbGVyYWJseSBjb2VyY2Ugbm9uLXByb21pc2VzIHRvIHByb21pc2VzLlxuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIC8vIGFzc2ltaWxhdGUgdGhlbmFibGVzXG4gICAgaWYgKGlzUHJvbWlzZUFsaWtlKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gY29lcmNlKHZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZnVsZmlsbCh2YWx1ZSk7XG4gICAgfVxufVxuUS5yZXNvbHZlID0gUTtcblxuLyoqXG4gKiBQZXJmb3JtcyBhIHRhc2sgaW4gYSBmdXR1cmUgdHVybiBvZiB0aGUgZXZlbnQgbG9vcC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHRhc2tcbiAqL1xuUS5uZXh0VGljayA9IG5leHRUaWNrO1xuXG4vKipcbiAqIENvbnRyb2xzIHdoZXRoZXIgb3Igbm90IGxvbmcgc3RhY2sgdHJhY2VzIHdpbGwgYmUgb25cbiAqL1xuUS5sb25nU3RhY2tTdXBwb3J0ID0gZmFsc2U7XG5cbi8qKlxuICogVGhlIGNvdW50ZXIgaXMgdXNlZCB0byBkZXRlcm1pbmUgdGhlIHN0b3BwaW5nIHBvaW50IGZvciBidWlsZGluZ1xuICogbG9uZyBzdGFjayB0cmFjZXMuIEluIG1ha2VTdGFja1RyYWNlTG9uZyB3ZSB3YWxrIGJhY2t3YXJkcyB0aHJvdWdoXG4gKiB0aGUgbGlua2VkIGxpc3Qgb2YgcHJvbWlzZXMsIG9ubHkgc3RhY2tzIHdoaWNoIHdlcmUgY3JlYXRlZCBiZWZvcmVcbiAqIHRoZSByZWplY3Rpb24gYXJlIGNvbmNhdGVuYXRlZC5cbiAqL1xudmFyIGxvbmdTdGFja0NvdW50ZXIgPSAxO1xuXG4vLyBlbmFibGUgbG9uZyBzdGFja3MgaWYgUV9ERUJVRyBpcyBzZXRcbmlmICh0eXBlb2YgcHJvY2VzcyA9PT0gXCJvYmplY3RcIiAmJiBwcm9jZXNzICYmIHByb2Nlc3MuZW52ICYmIHByb2Nlc3MuZW52LlFfREVCVUcpIHtcbiAgICBRLmxvbmdTdGFja1N1cHBvcnQgPSB0cnVlO1xufVxuXG4vKipcbiAqIENvbnN0cnVjdHMgYSB7cHJvbWlzZSwgcmVzb2x2ZSwgcmVqZWN0fSBvYmplY3QuXG4gKlxuICogYHJlc29sdmVgIGlzIGEgY2FsbGJhY2sgdG8gaW52b2tlIHdpdGggYSBtb3JlIHJlc29sdmVkIHZhbHVlIGZvciB0aGVcbiAqIHByb21pc2UuIFRvIGZ1bGZpbGwgdGhlIHByb21pc2UsIGludm9rZSBgcmVzb2x2ZWAgd2l0aCBhbnkgdmFsdWUgdGhhdCBpc1xuICogbm90IGEgdGhlbmFibGUuIFRvIHJlamVjdCB0aGUgcHJvbWlzZSwgaW52b2tlIGByZXNvbHZlYCB3aXRoIGEgcmVqZWN0ZWRcbiAqIHRoZW5hYmxlLCBvciBpbnZva2UgYHJlamVjdGAgd2l0aCB0aGUgcmVhc29uIGRpcmVjdGx5LiBUbyByZXNvbHZlIHRoZVxuICogcHJvbWlzZSB0byBhbm90aGVyIHRoZW5hYmxlLCB0aHVzIHB1dHRpbmcgaXQgaW4gdGhlIHNhbWUgc3RhdGUsIGludm9rZVxuICogYHJlc29sdmVgIHdpdGggdGhhdCBvdGhlciB0aGVuYWJsZS5cbiAqL1xuUS5kZWZlciA9IGRlZmVyO1xuZnVuY3Rpb24gZGVmZXIoKSB7XG4gICAgLy8gaWYgXCJtZXNzYWdlc1wiIGlzIGFuIFwiQXJyYXlcIiwgdGhhdCBpbmRpY2F0ZXMgdGhhdCB0aGUgcHJvbWlzZSBoYXMgbm90IHlldFxuICAgIC8vIGJlZW4gcmVzb2x2ZWQuICBJZiBpdCBpcyBcInVuZGVmaW5lZFwiLCBpdCBoYXMgYmVlbiByZXNvbHZlZC4gIEVhY2hcbiAgICAvLyBlbGVtZW50IG9mIHRoZSBtZXNzYWdlcyBhcnJheSBpcyBpdHNlbGYgYW4gYXJyYXkgb2YgY29tcGxldGUgYXJndW1lbnRzIHRvXG4gICAgLy8gZm9yd2FyZCB0byB0aGUgcmVzb2x2ZWQgcHJvbWlzZS4gIFdlIGNvZXJjZSB0aGUgcmVzb2x1dGlvbiB2YWx1ZSB0byBhXG4gICAgLy8gcHJvbWlzZSB1c2luZyB0aGUgYHJlc29sdmVgIGZ1bmN0aW9uIGJlY2F1c2UgaXQgaGFuZGxlcyBib3RoIGZ1bGx5XG4gICAgLy8gbm9uLXRoZW5hYmxlIHZhbHVlcyBhbmQgb3RoZXIgdGhlbmFibGVzIGdyYWNlZnVsbHkuXG4gICAgdmFyIG1lc3NhZ2VzID0gW10sIHByb2dyZXNzTGlzdGVuZXJzID0gW10sIHJlc29sdmVkUHJvbWlzZTtcblxuICAgIHZhciBkZWZlcnJlZCA9IG9iamVjdF9jcmVhdGUoZGVmZXIucHJvdG90eXBlKTtcbiAgICB2YXIgcHJvbWlzZSA9IG9iamVjdF9jcmVhdGUoUHJvbWlzZS5wcm90b3R5cGUpO1xuXG4gICAgcHJvbWlzZS5wcm9taXNlRGlzcGF0Y2ggPSBmdW5jdGlvbiAocmVzb2x2ZSwgb3AsIG9wZXJhbmRzKSB7XG4gICAgICAgIHZhciBhcmdzID0gYXJyYXlfc2xpY2UoYXJndW1lbnRzKTtcbiAgICAgICAgaWYgKG1lc3NhZ2VzKSB7XG4gICAgICAgICAgICBtZXNzYWdlcy5wdXNoKGFyZ3MpO1xuICAgICAgICAgICAgaWYgKG9wID09PSBcIndoZW5cIiAmJiBvcGVyYW5kc1sxXSkgeyAvLyBwcm9ncmVzcyBvcGVyYW5kXG4gICAgICAgICAgICAgICAgcHJvZ3Jlc3NMaXN0ZW5lcnMucHVzaChvcGVyYW5kc1sxXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBRLm5leHRUaWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXNvbHZlZFByb21pc2UucHJvbWlzZURpc3BhdGNoLmFwcGx5KHJlc29sdmVkUHJvbWlzZSwgYXJncyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICAvLyBYWFggZGVwcmVjYXRlZFxuICAgIHByb21pc2UudmFsdWVPZiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKG1lc3NhZ2VzKSB7XG4gICAgICAgICAgICByZXR1cm4gcHJvbWlzZTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgbmVhcmVyVmFsdWUgPSBuZWFyZXIocmVzb2x2ZWRQcm9taXNlKTtcbiAgICAgICAgaWYgKGlzUHJvbWlzZShuZWFyZXJWYWx1ZSkpIHtcbiAgICAgICAgICAgIHJlc29sdmVkUHJvbWlzZSA9IG5lYXJlclZhbHVlOyAvLyBzaG9ydGVuIGNoYWluXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5lYXJlclZhbHVlO1xuICAgIH07XG5cbiAgICBwcm9taXNlLmluc3BlY3QgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICghcmVzb2x2ZWRQcm9taXNlKSB7XG4gICAgICAgICAgICByZXR1cm4geyBzdGF0ZTogXCJwZW5kaW5nXCIgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzb2x2ZWRQcm9taXNlLmluc3BlY3QoKTtcbiAgICB9O1xuXG4gICAgaWYgKFEubG9uZ1N0YWNrU3VwcG9ydCAmJiBoYXNTdGFja3MpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAvLyBOT1RFOiBkb24ndCB0cnkgdG8gdXNlIGBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZWAgb3IgdHJhbnNmZXIgdGhlXG4gICAgICAgICAgICAvLyBhY2Nlc3NvciBhcm91bmQ7IHRoYXQgY2F1c2VzIG1lbW9yeSBsZWFrcyBhcyBwZXIgR0gtMTExLiBKdXN0XG4gICAgICAgICAgICAvLyByZWlmeSB0aGUgc3RhY2sgdHJhY2UgYXMgYSBzdHJpbmcgQVNBUC5cbiAgICAgICAgICAgIC8vXG4gICAgICAgICAgICAvLyBBdCB0aGUgc2FtZSB0aW1lLCBjdXQgb2ZmIHRoZSBmaXJzdCBsaW5lOyBpdCdzIGFsd2F5cyBqdXN0XG4gICAgICAgICAgICAvLyBcIltvYmplY3QgUHJvbWlzZV1cXG5cIiwgYXMgcGVyIHRoZSBgdG9TdHJpbmdgLlxuICAgICAgICAgICAgcHJvbWlzZS5zdGFjayA9IGUuc3RhY2suc3Vic3RyaW5nKGUuc3RhY2suaW5kZXhPZihcIlxcblwiKSArIDEpO1xuICAgICAgICAgICAgcHJvbWlzZS5zdGFja0NvdW50ZXIgPSBsb25nU3RhY2tDb3VudGVyKys7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBOT1RFOiB3ZSBkbyB0aGUgY2hlY2tzIGZvciBgcmVzb2x2ZWRQcm9taXNlYCBpbiBlYWNoIG1ldGhvZCwgaW5zdGVhZCBvZlxuICAgIC8vIGNvbnNvbGlkYXRpbmcgdGhlbSBpbnRvIGBiZWNvbWVgLCBzaW5jZSBvdGhlcndpc2Ugd2UnZCBjcmVhdGUgbmV3XG4gICAgLy8gcHJvbWlzZXMgd2l0aCB0aGUgbGluZXMgYGJlY29tZSh3aGF0ZXZlcih2YWx1ZSkpYC4gU2VlIGUuZy4gR0gtMjUyLlxuXG4gICAgZnVuY3Rpb24gYmVjb21lKG5ld1Byb21pc2UpIHtcbiAgICAgICAgcmVzb2x2ZWRQcm9taXNlID0gbmV3UHJvbWlzZTtcblxuICAgICAgICBpZiAoUS5sb25nU3RhY2tTdXBwb3J0ICYmIGhhc1N0YWNrcykge1xuICAgICAgICAgICAgLy8gT25seSBob2xkIGEgcmVmZXJlbmNlIHRvIHRoZSBuZXcgcHJvbWlzZSBpZiBsb25nIHN0YWNrc1xuICAgICAgICAgICAgLy8gYXJlIGVuYWJsZWQgdG8gcmVkdWNlIG1lbW9yeSB1c2FnZVxuICAgICAgICAgICAgcHJvbWlzZS5zb3VyY2UgPSBuZXdQcm9taXNlO1xuICAgICAgICB9XG5cbiAgICAgICAgYXJyYXlfcmVkdWNlKG1lc3NhZ2VzLCBmdW5jdGlvbiAodW5kZWZpbmVkLCBtZXNzYWdlKSB7XG4gICAgICAgICAgICBRLm5leHRUaWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBuZXdQcm9taXNlLnByb21pc2VEaXNwYXRjaC5hcHBseShuZXdQcm9taXNlLCBtZXNzYWdlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LCB2b2lkIDApO1xuXG4gICAgICAgIG1lc3NhZ2VzID0gdm9pZCAwO1xuICAgICAgICBwcm9ncmVzc0xpc3RlbmVycyA9IHZvaWQgMDtcbiAgICB9XG5cbiAgICBkZWZlcnJlZC5wcm9taXNlID0gcHJvbWlzZTtcbiAgICBkZWZlcnJlZC5yZXNvbHZlID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgIGlmIChyZXNvbHZlZFByb21pc2UpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGJlY29tZShRKHZhbHVlKSk7XG4gICAgfTtcblxuICAgIGRlZmVycmVkLmZ1bGZpbGwgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgaWYgKHJlc29sdmVkUHJvbWlzZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgYmVjb21lKGZ1bGZpbGwodmFsdWUpKTtcbiAgICB9O1xuICAgIGRlZmVycmVkLnJlamVjdCA9IGZ1bmN0aW9uIChyZWFzb24pIHtcbiAgICAgICAgaWYgKHJlc29sdmVkUHJvbWlzZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgYmVjb21lKHJlamVjdChyZWFzb24pKTtcbiAgICB9O1xuICAgIGRlZmVycmVkLm5vdGlmeSA9IGZ1bmN0aW9uIChwcm9ncmVzcykge1xuICAgICAgICBpZiAocmVzb2x2ZWRQcm9taXNlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBhcnJheV9yZWR1Y2UocHJvZ3Jlc3NMaXN0ZW5lcnMsIGZ1bmN0aW9uICh1bmRlZmluZWQsIHByb2dyZXNzTGlzdGVuZXIpIHtcbiAgICAgICAgICAgIFEubmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHByb2dyZXNzTGlzdGVuZXIocHJvZ3Jlc3MpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sIHZvaWQgMCk7XG4gICAgfTtcblxuICAgIHJldHVybiBkZWZlcnJlZDtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgTm9kZS1zdHlsZSBjYWxsYmFjayB0aGF0IHdpbGwgcmVzb2x2ZSBvciByZWplY3QgdGhlIGRlZmVycmVkXG4gKiBwcm9taXNlLlxuICogQHJldHVybnMgYSBub2RlYmFja1xuICovXG5kZWZlci5wcm90b3R5cGUubWFrZU5vZGVSZXNvbHZlciA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChlcnJvciwgdmFsdWUpIHtcbiAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgICBzZWxmLnJlamVjdChlcnJvcik7XG4gICAgICAgIH0gZWxzZSBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDIpIHtcbiAgICAgICAgICAgIHNlbGYucmVzb2x2ZShhcnJheV9zbGljZShhcmd1bWVudHMsIDEpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNlbGYucmVzb2x2ZSh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICB9O1xufTtcblxuLyoqXG4gKiBAcGFyYW0gcmVzb2x2ZXIge0Z1bmN0aW9ufSBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBub3RoaW5nIGFuZCBhY2NlcHRzXG4gKiB0aGUgcmVzb2x2ZSwgcmVqZWN0LCBhbmQgbm90aWZ5IGZ1bmN0aW9ucyBmb3IgYSBkZWZlcnJlZC5cbiAqIEByZXR1cm5zIGEgcHJvbWlzZSB0aGF0IG1heSBiZSByZXNvbHZlZCB3aXRoIHRoZSBnaXZlbiByZXNvbHZlIGFuZCByZWplY3RcbiAqIGZ1bmN0aW9ucywgb3IgcmVqZWN0ZWQgYnkgYSB0aHJvd24gZXhjZXB0aW9uIGluIHJlc29sdmVyXG4gKi9cblEuUHJvbWlzZSA9IHByb21pc2U7IC8vIEVTNlxuUS5wcm9taXNlID0gcHJvbWlzZTtcbmZ1bmN0aW9uIHByb21pc2UocmVzb2x2ZXIpIHtcbiAgICBpZiAodHlwZW9mIHJlc29sdmVyICE9PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcInJlc29sdmVyIG11c3QgYmUgYSBmdW5jdGlvbi5cIik7XG4gICAgfVxuICAgIHZhciBkZWZlcnJlZCA9IGRlZmVyKCk7XG4gICAgdHJ5IHtcbiAgICAgICAgcmVzb2x2ZXIoZGVmZXJyZWQucmVzb2x2ZSwgZGVmZXJyZWQucmVqZWN0LCBkZWZlcnJlZC5ub3RpZnkpO1xuICAgIH0gY2F0Y2ggKHJlYXNvbikge1xuICAgICAgICBkZWZlcnJlZC5yZWplY3QocmVhc29uKTtcbiAgICB9XG4gICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2U7XG59XG5cbnByb21pc2UucmFjZSA9IHJhY2U7IC8vIEVTNlxucHJvbWlzZS5hbGwgPSBhbGw7IC8vIEVTNlxucHJvbWlzZS5yZWplY3QgPSByZWplY3Q7IC8vIEVTNlxucHJvbWlzZS5yZXNvbHZlID0gUTsgLy8gRVM2XG5cbi8vIFhYWCBleHBlcmltZW50YWwuICBUaGlzIG1ldGhvZCBpcyBhIHdheSB0byBkZW5vdGUgdGhhdCBhIGxvY2FsIHZhbHVlIGlzXG4vLyBzZXJpYWxpemFibGUgYW5kIHNob3VsZCBiZSBpbW1lZGlhdGVseSBkaXNwYXRjaGVkIHRvIGEgcmVtb3RlIHVwb24gcmVxdWVzdCxcbi8vIGluc3RlYWQgb2YgcGFzc2luZyBhIHJlZmVyZW5jZS5cblEucGFzc0J5Q29weSA9IGZ1bmN0aW9uIChvYmplY3QpIHtcbiAgICAvL2ZyZWV6ZShvYmplY3QpO1xuICAgIC8vcGFzc0J5Q29waWVzLnNldChvYmplY3QsIHRydWUpO1xuICAgIHJldHVybiBvYmplY3Q7XG59O1xuXG5Qcm9taXNlLnByb3RvdHlwZS5wYXNzQnlDb3B5ID0gZnVuY3Rpb24gKCkge1xuICAgIC8vZnJlZXplKG9iamVjdCk7XG4gICAgLy9wYXNzQnlDb3BpZXMuc2V0KG9iamVjdCwgdHJ1ZSk7XG4gICAgcmV0dXJuIHRoaXM7XG59O1xuXG4vKipcbiAqIElmIHR3byBwcm9taXNlcyBldmVudHVhbGx5IGZ1bGZpbGwgdG8gdGhlIHNhbWUgdmFsdWUsIHByb21pc2VzIHRoYXQgdmFsdWUsXG4gKiBidXQgb3RoZXJ3aXNlIHJlamVjdHMuXG4gKiBAcGFyYW0geCB7QW55Kn1cbiAqIEBwYXJhbSB5IHtBbnkqfVxuICogQHJldHVybnMge0FueSp9IGEgcHJvbWlzZSBmb3IgeCBhbmQgeSBpZiB0aGV5IGFyZSB0aGUgc2FtZSwgYnV0IGEgcmVqZWN0aW9uXG4gKiBvdGhlcndpc2UuXG4gKlxuICovXG5RLmpvaW4gPSBmdW5jdGlvbiAoeCwgeSkge1xuICAgIHJldHVybiBRKHgpLmpvaW4oeSk7XG59O1xuXG5Qcm9taXNlLnByb3RvdHlwZS5qb2luID0gZnVuY3Rpb24gKHRoYXQpIHtcbiAgICByZXR1cm4gUShbdGhpcywgdGhhdF0pLnNwcmVhZChmdW5jdGlvbiAoeCwgeSkge1xuICAgICAgICBpZiAoeCA9PT0geSkge1xuICAgICAgICAgICAgLy8gVE9ETzogXCI9PT1cIiBzaG91bGQgYmUgT2JqZWN0LmlzIG9yIGVxdWl2XG4gICAgICAgICAgICByZXR1cm4geDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlEgY2FuJ3Qgam9pbjogbm90IHRoZSBzYW1lOiBcIiArIHggKyBcIiBcIiArIHkpO1xuICAgICAgICB9XG4gICAgfSk7XG59O1xuXG4vKipcbiAqIFJldHVybnMgYSBwcm9taXNlIGZvciB0aGUgZmlyc3Qgb2YgYW4gYXJyYXkgb2YgcHJvbWlzZXMgdG8gYmVjb21lIHNldHRsZWQuXG4gKiBAcGFyYW0gYW5zd2VycyB7QXJyYXlbQW55Kl19IHByb21pc2VzIHRvIHJhY2VcbiAqIEByZXR1cm5zIHtBbnkqfSB0aGUgZmlyc3QgcHJvbWlzZSB0byBiZSBzZXR0bGVkXG4gKi9cblEucmFjZSA9IHJhY2U7XG5mdW5jdGlvbiByYWNlKGFuc3dlclBzKSB7XG4gICAgcmV0dXJuIHByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICAvLyBTd2l0Y2ggdG8gdGhpcyBvbmNlIHdlIGNhbiBhc3N1bWUgYXQgbGVhc3QgRVM1XG4gICAgICAgIC8vIGFuc3dlclBzLmZvckVhY2goZnVuY3Rpb24gKGFuc3dlclApIHtcbiAgICAgICAgLy8gICAgIFEoYW5zd2VyUCkudGhlbihyZXNvbHZlLCByZWplY3QpO1xuICAgICAgICAvLyB9KTtcbiAgICAgICAgLy8gVXNlIHRoaXMgaW4gdGhlIG1lYW50aW1lXG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBsZW4gPSBhbnN3ZXJQcy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAgICAgICAgUShhbnN3ZXJQc1tpXSkudGhlbihyZXNvbHZlLCByZWplY3QpO1xuICAgICAgICB9XG4gICAgfSk7XG59XG5cblByb21pc2UucHJvdG90eXBlLnJhY2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMudGhlbihRLnJhY2UpO1xufTtcblxuLyoqXG4gKiBDb25zdHJ1Y3RzIGEgUHJvbWlzZSB3aXRoIGEgcHJvbWlzZSBkZXNjcmlwdG9yIG9iamVjdCBhbmQgb3B0aW9uYWwgZmFsbGJhY2tcbiAqIGZ1bmN0aW9uLiAgVGhlIGRlc2NyaXB0b3IgY29udGFpbnMgbWV0aG9kcyBsaWtlIHdoZW4ocmVqZWN0ZWQpLCBnZXQobmFtZSksXG4gKiBzZXQobmFtZSwgdmFsdWUpLCBwb3N0KG5hbWUsIGFyZ3MpLCBhbmQgZGVsZXRlKG5hbWUpLCB3aGljaCBhbGxcbiAqIHJldHVybiBlaXRoZXIgYSB2YWx1ZSwgYSBwcm9taXNlIGZvciBhIHZhbHVlLCBvciBhIHJlamVjdGlvbi4gIFRoZSBmYWxsYmFja1xuICogYWNjZXB0cyB0aGUgb3BlcmF0aW9uIG5hbWUsIGEgcmVzb2x2ZXIsIGFuZCBhbnkgZnVydGhlciBhcmd1bWVudHMgdGhhdCB3b3VsZFxuICogaGF2ZSBiZWVuIGZvcndhcmRlZCB0byB0aGUgYXBwcm9wcmlhdGUgbWV0aG9kIGFib3ZlIGhhZCBhIG1ldGhvZCBiZWVuXG4gKiBwcm92aWRlZCB3aXRoIHRoZSBwcm9wZXIgbmFtZS4gIFRoZSBBUEkgbWFrZXMgbm8gZ3VhcmFudGVlcyBhYm91dCB0aGUgbmF0dXJlXG4gKiBvZiB0aGUgcmV0dXJuZWQgb2JqZWN0LCBhcGFydCBmcm9tIHRoYXQgaXQgaXMgdXNhYmxlIHdoZXJlZXZlciBwcm9taXNlcyBhcmVcbiAqIGJvdWdodCBhbmQgc29sZC5cbiAqL1xuUS5tYWtlUHJvbWlzZSA9IFByb21pc2U7XG5mdW5jdGlvbiBQcm9taXNlKGRlc2NyaXB0b3IsIGZhbGxiYWNrLCBpbnNwZWN0KSB7XG4gICAgaWYgKGZhbGxiYWNrID09PSB2b2lkIDApIHtcbiAgICAgICAgZmFsbGJhY2sgPSBmdW5jdGlvbiAob3ApIHtcbiAgICAgICAgICAgIHJldHVybiByZWplY3QobmV3IEVycm9yKFxuICAgICAgICAgICAgICAgIFwiUHJvbWlzZSBkb2VzIG5vdCBzdXBwb3J0IG9wZXJhdGlvbjogXCIgKyBvcFxuICAgICAgICAgICAgKSk7XG4gICAgICAgIH07XG4gICAgfVxuICAgIGlmIChpbnNwZWN0ID09PSB2b2lkIDApIHtcbiAgICAgICAgaW5zcGVjdCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB7c3RhdGU6IFwidW5rbm93blwifTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICB2YXIgcHJvbWlzZSA9IG9iamVjdF9jcmVhdGUoUHJvbWlzZS5wcm90b3R5cGUpO1xuXG4gICAgcHJvbWlzZS5wcm9taXNlRGlzcGF0Y2ggPSBmdW5jdGlvbiAocmVzb2x2ZSwgb3AsIGFyZ3MpIHtcbiAgICAgICAgdmFyIHJlc3VsdDtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmIChkZXNjcmlwdG9yW29wXSkge1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGRlc2NyaXB0b3Jbb3BdLmFwcGx5KHByb21pc2UsIGFyZ3MpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBmYWxsYmFjay5jYWxsKHByb21pc2UsIG9wLCBhcmdzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZXhjZXB0aW9uKSB7XG4gICAgICAgICAgICByZXN1bHQgPSByZWplY3QoZXhjZXB0aW9uKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocmVzb2x2ZSkge1xuICAgICAgICAgICAgcmVzb2x2ZShyZXN1bHQpO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIHByb21pc2UuaW5zcGVjdCA9IGluc3BlY3Q7XG5cbiAgICAvLyBYWFggZGVwcmVjYXRlZCBgdmFsdWVPZmAgYW5kIGBleGNlcHRpb25gIHN1cHBvcnRcbiAgICBpZiAoaW5zcGVjdCkge1xuICAgICAgICB2YXIgaW5zcGVjdGVkID0gaW5zcGVjdCgpO1xuICAgICAgICBpZiAoaW5zcGVjdGVkLnN0YXRlID09PSBcInJlamVjdGVkXCIpIHtcbiAgICAgICAgICAgIHByb21pc2UuZXhjZXB0aW9uID0gaW5zcGVjdGVkLnJlYXNvbjtcbiAgICAgICAgfVxuXG4gICAgICAgIHByb21pc2UudmFsdWVPZiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBpbnNwZWN0ZWQgPSBpbnNwZWN0KCk7XG4gICAgICAgICAgICBpZiAoaW5zcGVjdGVkLnN0YXRlID09PSBcInBlbmRpbmdcIiB8fFxuICAgICAgICAgICAgICAgIGluc3BlY3RlZC5zdGF0ZSA9PT0gXCJyZWplY3RlZFwiKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHByb21pc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gaW5zcGVjdGVkLnZhbHVlO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiBwcm9taXNlO1xufVxuXG5Qcm9taXNlLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gXCJbb2JqZWN0IFByb21pc2VdXCI7XG59O1xuXG5Qcm9taXNlLnByb3RvdHlwZS50aGVuID0gZnVuY3Rpb24gKGZ1bGZpbGxlZCwgcmVqZWN0ZWQsIHByb2dyZXNzZWQpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIGRlZmVycmVkID0gZGVmZXIoKTtcbiAgICB2YXIgZG9uZSA9IGZhbHNlOyAgIC8vIGVuc3VyZSB0aGUgdW50cnVzdGVkIHByb21pc2UgbWFrZXMgYXQgbW9zdCBhXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBzaW5nbGUgY2FsbCB0byBvbmUgb2YgdGhlIGNhbGxiYWNrc1xuXG4gICAgZnVuY3Rpb24gX2Z1bGZpbGxlZCh2YWx1ZSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuIHR5cGVvZiBmdWxmaWxsZWQgPT09IFwiZnVuY3Rpb25cIiA/IGZ1bGZpbGxlZCh2YWx1ZSkgOiB2YWx1ZTtcbiAgICAgICAgfSBjYXRjaCAoZXhjZXB0aW9uKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVqZWN0KGV4Y2VwdGlvbik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBfcmVqZWN0ZWQoZXhjZXB0aW9uKSB7XG4gICAgICAgIGlmICh0eXBlb2YgcmVqZWN0ZWQgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgbWFrZVN0YWNrVHJhY2VMb25nKGV4Y2VwdGlvbiwgc2VsZik7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHJldHVybiByZWplY3RlZChleGNlcHRpb24pO1xuICAgICAgICAgICAgfSBjYXRjaCAobmV3RXhjZXB0aW9uKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlamVjdChuZXdFeGNlcHRpb24pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZWplY3QoZXhjZXB0aW9uKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBfcHJvZ3Jlc3NlZCh2YWx1ZSkge1xuICAgICAgICByZXR1cm4gdHlwZW9mIHByb2dyZXNzZWQgPT09IFwiZnVuY3Rpb25cIiA/IHByb2dyZXNzZWQodmFsdWUpIDogdmFsdWU7XG4gICAgfVxuXG4gICAgUS5uZXh0VGljayhmdW5jdGlvbiAoKSB7XG4gICAgICAgIHNlbGYucHJvbWlzZURpc3BhdGNoKGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgaWYgKGRvbmUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkb25lID0gdHJ1ZTtcblxuICAgICAgICAgICAgZGVmZXJyZWQucmVzb2x2ZShfZnVsZmlsbGVkKHZhbHVlKSk7XG4gICAgICAgIH0sIFwid2hlblwiLCBbZnVuY3Rpb24gKGV4Y2VwdGlvbikge1xuICAgICAgICAgICAgaWYgKGRvbmUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkb25lID0gdHJ1ZTtcblxuICAgICAgICAgICAgZGVmZXJyZWQucmVzb2x2ZShfcmVqZWN0ZWQoZXhjZXB0aW9uKSk7XG4gICAgICAgIH1dKTtcbiAgICB9KTtcblxuICAgIC8vIFByb2dyZXNzIHByb3BhZ2F0b3IgbmVlZCB0byBiZSBhdHRhY2hlZCBpbiB0aGUgY3VycmVudCB0aWNrLlxuICAgIHNlbGYucHJvbWlzZURpc3BhdGNoKHZvaWQgMCwgXCJ3aGVuXCIsIFt2b2lkIDAsIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICB2YXIgbmV3VmFsdWU7XG4gICAgICAgIHZhciB0aHJldyA9IGZhbHNlO1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgbmV3VmFsdWUgPSBfcHJvZ3Jlc3NlZCh2YWx1ZSk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHRocmV3ID0gdHJ1ZTtcbiAgICAgICAgICAgIGlmIChRLm9uZXJyb3IpIHtcbiAgICAgICAgICAgICAgICBRLm9uZXJyb3IoZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRocmV3KSB7XG4gICAgICAgICAgICBkZWZlcnJlZC5ub3RpZnkobmV3VmFsdWUpO1xuICAgICAgICB9XG4gICAgfV0pO1xuXG4gICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2U7XG59O1xuXG5RLnRhcCA9IGZ1bmN0aW9uIChwcm9taXNlLCBjYWxsYmFjaykge1xuICAgIHJldHVybiBRKHByb21pc2UpLnRhcChjYWxsYmFjayk7XG59O1xuXG4vKipcbiAqIFdvcmtzIGFsbW9zdCBsaWtlIFwiZmluYWxseVwiLCBidXQgbm90IGNhbGxlZCBmb3IgcmVqZWN0aW9ucy5cbiAqIE9yaWdpbmFsIHJlc29sdXRpb24gdmFsdWUgaXMgcGFzc2VkIHRocm91Z2ggY2FsbGJhY2sgdW5hZmZlY3RlZC5cbiAqIENhbGxiYWNrIG1heSByZXR1cm4gYSBwcm9taXNlIHRoYXQgd2lsbCBiZSBhd2FpdGVkIGZvci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGNhbGxiYWNrXG4gKiBAcmV0dXJucyB7US5Qcm9taXNlfVxuICogQGV4YW1wbGVcbiAqIGRvU29tZXRoaW5nKClcbiAqICAgLnRoZW4oLi4uKVxuICogICAudGFwKGNvbnNvbGUubG9nKVxuICogICAudGhlbiguLi4pO1xuICovXG5Qcm9taXNlLnByb3RvdHlwZS50YXAgPSBmdW5jdGlvbiAoY2FsbGJhY2spIHtcbiAgICBjYWxsYmFjayA9IFEoY2FsbGJhY2spO1xuXG4gICAgcmV0dXJuIHRoaXMudGhlbihmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIGNhbGxiYWNrLmZjYWxsKHZhbHVlKS50aGVuUmVzb2x2ZSh2YWx1ZSk7XG4gICAgfSk7XG59O1xuXG4vKipcbiAqIFJlZ2lzdGVycyBhbiBvYnNlcnZlciBvbiBhIHByb21pc2UuXG4gKlxuICogR3VhcmFudGVlczpcbiAqXG4gKiAxLiB0aGF0IGZ1bGZpbGxlZCBhbmQgcmVqZWN0ZWQgd2lsbCBiZSBjYWxsZWQgb25seSBvbmNlLlxuICogMi4gdGhhdCBlaXRoZXIgdGhlIGZ1bGZpbGxlZCBjYWxsYmFjayBvciB0aGUgcmVqZWN0ZWQgY2FsbGJhY2sgd2lsbCBiZVxuICogICAgY2FsbGVkLCBidXQgbm90IGJvdGguXG4gKiAzLiB0aGF0IGZ1bGZpbGxlZCBhbmQgcmVqZWN0ZWQgd2lsbCBub3QgYmUgY2FsbGVkIGluIHRoaXMgdHVybi5cbiAqXG4gKiBAcGFyYW0gdmFsdWUgICAgICBwcm9taXNlIG9yIGltbWVkaWF0ZSByZWZlcmVuY2UgdG8gb2JzZXJ2ZVxuICogQHBhcmFtIGZ1bGZpbGxlZCAgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIHdpdGggdGhlIGZ1bGZpbGxlZCB2YWx1ZVxuICogQHBhcmFtIHJlamVjdGVkICAgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIHdpdGggdGhlIHJlamVjdGlvbiBleGNlcHRpb25cbiAqIEBwYXJhbSBwcm9ncmVzc2VkIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCBvbiBhbnkgcHJvZ3Jlc3Mgbm90aWZpY2F0aW9uc1xuICogQHJldHVybiBwcm9taXNlIGZvciB0aGUgcmV0dXJuIHZhbHVlIGZyb20gdGhlIGludm9rZWQgY2FsbGJhY2tcbiAqL1xuUS53aGVuID0gd2hlbjtcbmZ1bmN0aW9uIHdoZW4odmFsdWUsIGZ1bGZpbGxlZCwgcmVqZWN0ZWQsIHByb2dyZXNzZWQpIHtcbiAgICByZXR1cm4gUSh2YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkLCBwcm9ncmVzc2VkKTtcbn1cblxuUHJvbWlzZS5wcm90b3R5cGUudGhlblJlc29sdmUgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICByZXR1cm4gdGhpcy50aGVuKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHZhbHVlOyB9KTtcbn07XG5cblEudGhlblJlc29sdmUgPSBmdW5jdGlvbiAocHJvbWlzZSwgdmFsdWUpIHtcbiAgICByZXR1cm4gUShwcm9taXNlKS50aGVuUmVzb2x2ZSh2YWx1ZSk7XG59O1xuXG5Qcm9taXNlLnByb3RvdHlwZS50aGVuUmVqZWN0ID0gZnVuY3Rpb24gKHJlYXNvbikge1xuICAgIHJldHVybiB0aGlzLnRoZW4oZnVuY3Rpb24gKCkgeyB0aHJvdyByZWFzb247IH0pO1xufTtcblxuUS50aGVuUmVqZWN0ID0gZnVuY3Rpb24gKHByb21pc2UsIHJlYXNvbikge1xuICAgIHJldHVybiBRKHByb21pc2UpLnRoZW5SZWplY3QocmVhc29uKTtcbn07XG5cbi8qKlxuICogSWYgYW4gb2JqZWN0IGlzIG5vdCBhIHByb21pc2UsIGl0IGlzIGFzIFwibmVhclwiIGFzIHBvc3NpYmxlLlxuICogSWYgYSBwcm9taXNlIGlzIHJlamVjdGVkLCBpdCBpcyBhcyBcIm5lYXJcIiBhcyBwb3NzaWJsZSB0b28uXG4gKiBJZiBpdOKAmXMgYSBmdWxmaWxsZWQgcHJvbWlzZSwgdGhlIGZ1bGZpbGxtZW50IHZhbHVlIGlzIG5lYXJlci5cbiAqIElmIGl04oCZcyBhIGRlZmVycmVkIHByb21pc2UgYW5kIHRoZSBkZWZlcnJlZCBoYXMgYmVlbiByZXNvbHZlZCwgdGhlXG4gKiByZXNvbHV0aW9uIGlzIFwibmVhcmVyXCIuXG4gKiBAcGFyYW0gb2JqZWN0XG4gKiBAcmV0dXJucyBtb3N0IHJlc29sdmVkIChuZWFyZXN0KSBmb3JtIG9mIHRoZSBvYmplY3RcbiAqL1xuXG4vLyBYWFggc2hvdWxkIHdlIHJlLWRvIHRoaXM/XG5RLm5lYXJlciA9IG5lYXJlcjtcbmZ1bmN0aW9uIG5lYXJlcih2YWx1ZSkge1xuICAgIGlmIChpc1Byb21pc2UodmFsdWUpKSB7XG4gICAgICAgIHZhciBpbnNwZWN0ZWQgPSB2YWx1ZS5pbnNwZWN0KCk7XG4gICAgICAgIGlmIChpbnNwZWN0ZWQuc3RhdGUgPT09IFwiZnVsZmlsbGVkXCIpIHtcbiAgICAgICAgICAgIHJldHVybiBpbnNwZWN0ZWQudmFsdWU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlO1xufVxuXG4vKipcbiAqIEByZXR1cm5zIHdoZXRoZXIgdGhlIGdpdmVuIG9iamVjdCBpcyBhIHByb21pc2UuXG4gKiBPdGhlcndpc2UgaXQgaXMgYSBmdWxmaWxsZWQgdmFsdWUuXG4gKi9cblEuaXNQcm9taXNlID0gaXNQcm9taXNlO1xuZnVuY3Rpb24gaXNQcm9taXNlKG9iamVjdCkge1xuICAgIHJldHVybiBvYmplY3QgaW5zdGFuY2VvZiBQcm9taXNlO1xufVxuXG5RLmlzUHJvbWlzZUFsaWtlID0gaXNQcm9taXNlQWxpa2U7XG5mdW5jdGlvbiBpc1Byb21pc2VBbGlrZShvYmplY3QpIHtcbiAgICByZXR1cm4gaXNPYmplY3Qob2JqZWN0KSAmJiB0eXBlb2Ygb2JqZWN0LnRoZW4gPT09IFwiZnVuY3Rpb25cIjtcbn1cblxuLyoqXG4gKiBAcmV0dXJucyB3aGV0aGVyIHRoZSBnaXZlbiBvYmplY3QgaXMgYSBwZW5kaW5nIHByb21pc2UsIG1lYW5pbmcgbm90XG4gKiBmdWxmaWxsZWQgb3IgcmVqZWN0ZWQuXG4gKi9cblEuaXNQZW5kaW5nID0gaXNQZW5kaW5nO1xuZnVuY3Rpb24gaXNQZW5kaW5nKG9iamVjdCkge1xuICAgIHJldHVybiBpc1Byb21pc2Uob2JqZWN0KSAmJiBvYmplY3QuaW5zcGVjdCgpLnN0YXRlID09PSBcInBlbmRpbmdcIjtcbn1cblxuUHJvbWlzZS5wcm90b3R5cGUuaXNQZW5kaW5nID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLmluc3BlY3QoKS5zdGF0ZSA9PT0gXCJwZW5kaW5nXCI7XG59O1xuXG4vKipcbiAqIEByZXR1cm5zIHdoZXRoZXIgdGhlIGdpdmVuIG9iamVjdCBpcyBhIHZhbHVlIG9yIGZ1bGZpbGxlZFxuICogcHJvbWlzZS5cbiAqL1xuUS5pc0Z1bGZpbGxlZCA9IGlzRnVsZmlsbGVkO1xuZnVuY3Rpb24gaXNGdWxmaWxsZWQob2JqZWN0KSB7XG4gICAgcmV0dXJuICFpc1Byb21pc2Uob2JqZWN0KSB8fCBvYmplY3QuaW5zcGVjdCgpLnN0YXRlID09PSBcImZ1bGZpbGxlZFwiO1xufVxuXG5Qcm9taXNlLnByb3RvdHlwZS5pc0Z1bGZpbGxlZCA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5pbnNwZWN0KCkuc3RhdGUgPT09IFwiZnVsZmlsbGVkXCI7XG59O1xuXG4vKipcbiAqIEByZXR1cm5zIHdoZXRoZXIgdGhlIGdpdmVuIG9iamVjdCBpcyBhIHJlamVjdGVkIHByb21pc2UuXG4gKi9cblEuaXNSZWplY3RlZCA9IGlzUmVqZWN0ZWQ7XG5mdW5jdGlvbiBpc1JlamVjdGVkKG9iamVjdCkge1xuICAgIHJldHVybiBpc1Byb21pc2Uob2JqZWN0KSAmJiBvYmplY3QuaW5zcGVjdCgpLnN0YXRlID09PSBcInJlamVjdGVkXCI7XG59XG5cblByb21pc2UucHJvdG90eXBlLmlzUmVqZWN0ZWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMuaW5zcGVjdCgpLnN0YXRlID09PSBcInJlamVjdGVkXCI7XG59O1xuXG4vLy8vIEJFR0lOIFVOSEFORExFRCBSRUpFQ1RJT04gVFJBQ0tJTkdcblxuLy8gVGhpcyBwcm9taXNlIGxpYnJhcnkgY29uc3VtZXMgZXhjZXB0aW9ucyB0aHJvd24gaW4gaGFuZGxlcnMgc28gdGhleSBjYW4gYmVcbi8vIGhhbmRsZWQgYnkgYSBzdWJzZXF1ZW50IHByb21pc2UuICBUaGUgZXhjZXB0aW9ucyBnZXQgYWRkZWQgdG8gdGhpcyBhcnJheSB3aGVuXG4vLyB0aGV5IGFyZSBjcmVhdGVkLCBhbmQgcmVtb3ZlZCB3aGVuIHRoZXkgYXJlIGhhbmRsZWQuICBOb3RlIHRoYXQgaW4gRVM2IG9yXG4vLyBzaGltbWVkIGVudmlyb25tZW50cywgdGhpcyB3b3VsZCBuYXR1cmFsbHkgYmUgYSBgU2V0YC5cbnZhciB1bmhhbmRsZWRSZWFzb25zID0gW107XG52YXIgdW5oYW5kbGVkUmVqZWN0aW9ucyA9IFtdO1xudmFyIHJlcG9ydGVkVW5oYW5kbGVkUmVqZWN0aW9ucyA9IFtdO1xudmFyIHRyYWNrVW5oYW5kbGVkUmVqZWN0aW9ucyA9IHRydWU7XG5cbmZ1bmN0aW9uIHJlc2V0VW5oYW5kbGVkUmVqZWN0aW9ucygpIHtcbiAgICB1bmhhbmRsZWRSZWFzb25zLmxlbmd0aCA9IDA7XG4gICAgdW5oYW5kbGVkUmVqZWN0aW9ucy5sZW5ndGggPSAwO1xuXG4gICAgaWYgKCF0cmFja1VuaGFuZGxlZFJlamVjdGlvbnMpIHtcbiAgICAgICAgdHJhY2tVbmhhbmRsZWRSZWplY3Rpb25zID0gdHJ1ZTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIHRyYWNrUmVqZWN0aW9uKHByb21pc2UsIHJlYXNvbikge1xuICAgIGlmICghdHJhY2tVbmhhbmRsZWRSZWplY3Rpb25zKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBwcm9jZXNzID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiBwcm9jZXNzLmVtaXQgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICBRLm5leHRUaWNrLnJ1bkFmdGVyKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChhcnJheV9pbmRleE9mKHVuaGFuZGxlZFJlamVjdGlvbnMsIHByb21pc2UpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgIHByb2Nlc3MuZW1pdChcInVuaGFuZGxlZFJlamVjdGlvblwiLCByZWFzb24sIHByb21pc2UpO1xuICAgICAgICAgICAgICAgIHJlcG9ydGVkVW5oYW5kbGVkUmVqZWN0aW9ucy5wdXNoKHByb21pc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICB1bmhhbmRsZWRSZWplY3Rpb25zLnB1c2gocHJvbWlzZSk7XG4gICAgaWYgKHJlYXNvbiAmJiB0eXBlb2YgcmVhc29uLnN0YWNrICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgIHVuaGFuZGxlZFJlYXNvbnMucHVzaChyZWFzb24uc3RhY2spO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHVuaGFuZGxlZFJlYXNvbnMucHVzaChcIihubyBzdGFjaykgXCIgKyByZWFzb24pO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gdW50cmFja1JlamVjdGlvbihwcm9taXNlKSB7XG4gICAgaWYgKCF0cmFja1VuaGFuZGxlZFJlamVjdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciBhdCA9IGFycmF5X2luZGV4T2YodW5oYW5kbGVkUmVqZWN0aW9ucywgcHJvbWlzZSk7XG4gICAgaWYgKGF0ICE9PSAtMSkge1xuICAgICAgICBpZiAodHlwZW9mIHByb2Nlc3MgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIHByb2Nlc3MuZW1pdCA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICBRLm5leHRUaWNrLnJ1bkFmdGVyKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB2YXIgYXRSZXBvcnQgPSBhcnJheV9pbmRleE9mKHJlcG9ydGVkVW5oYW5kbGVkUmVqZWN0aW9ucywgcHJvbWlzZSk7XG4gICAgICAgICAgICAgICAgaWYgKGF0UmVwb3J0ICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICBwcm9jZXNzLmVtaXQoXCJyZWplY3Rpb25IYW5kbGVkXCIsIHVuaGFuZGxlZFJlYXNvbnNbYXRdLCBwcm9taXNlKTtcbiAgICAgICAgICAgICAgICAgICAgcmVwb3J0ZWRVbmhhbmRsZWRSZWplY3Rpb25zLnNwbGljZShhdFJlcG9ydCwgMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdW5oYW5kbGVkUmVqZWN0aW9ucy5zcGxpY2UoYXQsIDEpO1xuICAgICAgICB1bmhhbmRsZWRSZWFzb25zLnNwbGljZShhdCwgMSk7XG4gICAgfVxufVxuXG5RLnJlc2V0VW5oYW5kbGVkUmVqZWN0aW9ucyA9IHJlc2V0VW5oYW5kbGVkUmVqZWN0aW9ucztcblxuUS5nZXRVbmhhbmRsZWRSZWFzb25zID0gZnVuY3Rpb24gKCkge1xuICAgIC8vIE1ha2UgYSBjb3B5IHNvIHRoYXQgY29uc3VtZXJzIGNhbid0IGludGVyZmVyZSB3aXRoIG91ciBpbnRlcm5hbCBzdGF0ZS5cbiAgICByZXR1cm4gdW5oYW5kbGVkUmVhc29ucy5zbGljZSgpO1xufTtcblxuUS5zdG9wVW5oYW5kbGVkUmVqZWN0aW9uVHJhY2tpbmcgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmVzZXRVbmhhbmRsZWRSZWplY3Rpb25zKCk7XG4gICAgdHJhY2tVbmhhbmRsZWRSZWplY3Rpb25zID0gZmFsc2U7XG59O1xuXG5yZXNldFVuaGFuZGxlZFJlamVjdGlvbnMoKTtcblxuLy8vLyBFTkQgVU5IQU5ETEVEIFJFSkVDVElPTiBUUkFDS0lOR1xuXG4vKipcbiAqIENvbnN0cnVjdHMgYSByZWplY3RlZCBwcm9taXNlLlxuICogQHBhcmFtIHJlYXNvbiB2YWx1ZSBkZXNjcmliaW5nIHRoZSBmYWlsdXJlXG4gKi9cblEucmVqZWN0ID0gcmVqZWN0O1xuZnVuY3Rpb24gcmVqZWN0KHJlYXNvbikge1xuICAgIHZhciByZWplY3Rpb24gPSBQcm9taXNlKHtcbiAgICAgICAgXCJ3aGVuXCI6IGZ1bmN0aW9uIChyZWplY3RlZCkge1xuICAgICAgICAgICAgLy8gbm90ZSB0aGF0IHRoZSBlcnJvciBoYXMgYmVlbiBoYW5kbGVkXG4gICAgICAgICAgICBpZiAocmVqZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICB1bnRyYWNrUmVqZWN0aW9uKHRoaXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHJlamVjdGVkID8gcmVqZWN0ZWQocmVhc29uKSA6IHRoaXM7XG4gICAgICAgIH1cbiAgICB9LCBmdW5jdGlvbiBmYWxsYmFjaygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfSwgZnVuY3Rpb24gaW5zcGVjdCgpIHtcbiAgICAgICAgcmV0dXJuIHsgc3RhdGU6IFwicmVqZWN0ZWRcIiwgcmVhc29uOiByZWFzb24gfTtcbiAgICB9KTtcblxuICAgIC8vIE5vdGUgdGhhdCB0aGUgcmVhc29uIGhhcyBub3QgYmVlbiBoYW5kbGVkLlxuICAgIHRyYWNrUmVqZWN0aW9uKHJlamVjdGlvbiwgcmVhc29uKTtcblxuICAgIHJldHVybiByZWplY3Rpb247XG59XG5cbi8qKlxuICogQ29uc3RydWN0cyBhIGZ1bGZpbGxlZCBwcm9taXNlIGZvciBhbiBpbW1lZGlhdGUgcmVmZXJlbmNlLlxuICogQHBhcmFtIHZhbHVlIGltbWVkaWF0ZSByZWZlcmVuY2VcbiAqL1xuUS5mdWxmaWxsID0gZnVsZmlsbDtcbmZ1bmN0aW9uIGZ1bGZpbGwodmFsdWUpIHtcbiAgICByZXR1cm4gUHJvbWlzZSh7XG4gICAgICAgIFwid2hlblwiOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH0sXG4gICAgICAgIFwiZ2V0XCI6IGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWVbbmFtZV07XG4gICAgICAgIH0sXG4gICAgICAgIFwic2V0XCI6IGZ1bmN0aW9uIChuYW1lLCByaHMpIHtcbiAgICAgICAgICAgIHZhbHVlW25hbWVdID0gcmhzO1xuICAgICAgICB9LFxuICAgICAgICBcImRlbGV0ZVwiOiBmdW5jdGlvbiAobmFtZSkge1xuICAgICAgICAgICAgZGVsZXRlIHZhbHVlW25hbWVdO1xuICAgICAgICB9LFxuICAgICAgICBcInBvc3RcIjogZnVuY3Rpb24gKG5hbWUsIGFyZ3MpIHtcbiAgICAgICAgICAgIC8vIE1hcmsgTWlsbGVyIHByb3Bvc2VzIHRoYXQgcG9zdCB3aXRoIG5vIG5hbWUgc2hvdWxkIGFwcGx5IGFcbiAgICAgICAgICAgIC8vIHByb21pc2VkIGZ1bmN0aW9uLlxuICAgICAgICAgICAgaWYgKG5hbWUgPT09IG51bGwgfHwgbmFtZSA9PT0gdm9pZCAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlLmFwcGx5KHZvaWQgMCwgYXJncyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZVtuYW1lXS5hcHBseSh2YWx1ZSwgYXJncyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFwiYXBwbHlcIjogZnVuY3Rpb24gKHRoaXNwLCBhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWUuYXBwbHkodGhpc3AsIGFyZ3MpO1xuICAgICAgICB9LFxuICAgICAgICBcImtleXNcIjogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIG9iamVjdF9rZXlzKHZhbHVlKTtcbiAgICAgICAgfVxuICAgIH0sIHZvaWQgMCwgZnVuY3Rpb24gaW5zcGVjdCgpIHtcbiAgICAgICAgcmV0dXJuIHsgc3RhdGU6IFwiZnVsZmlsbGVkXCIsIHZhbHVlOiB2YWx1ZSB9O1xuICAgIH0pO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIHRoZW5hYmxlcyB0byBRIHByb21pc2VzLlxuICogQHBhcmFtIHByb21pc2UgdGhlbmFibGUgcHJvbWlzZVxuICogQHJldHVybnMgYSBRIHByb21pc2VcbiAqL1xuZnVuY3Rpb24gY29lcmNlKHByb21pc2UpIHtcbiAgICB2YXIgZGVmZXJyZWQgPSBkZWZlcigpO1xuICAgIFEubmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcHJvbWlzZS50aGVuKGRlZmVycmVkLnJlc29sdmUsIGRlZmVycmVkLnJlamVjdCwgZGVmZXJyZWQubm90aWZ5KTtcbiAgICAgICAgfSBjYXRjaCAoZXhjZXB0aW9uKSB7XG4gICAgICAgICAgICBkZWZlcnJlZC5yZWplY3QoZXhjZXB0aW9uKTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlO1xufVxuXG4vKipcbiAqIEFubm90YXRlcyBhbiBvYmplY3Qgc3VjaCB0aGF0IGl0IHdpbGwgbmV2ZXIgYmVcbiAqIHRyYW5zZmVycmVkIGF3YXkgZnJvbSB0aGlzIHByb2Nlc3Mgb3ZlciBhbnkgcHJvbWlzZVxuICogY29tbXVuaWNhdGlvbiBjaGFubmVsLlxuICogQHBhcmFtIG9iamVjdFxuICogQHJldHVybnMgcHJvbWlzZSBhIHdyYXBwaW5nIG9mIHRoYXQgb2JqZWN0IHRoYXRcbiAqIGFkZGl0aW9uYWxseSByZXNwb25kcyB0byB0aGUgXCJpc0RlZlwiIG1lc3NhZ2VcbiAqIHdpdGhvdXQgYSByZWplY3Rpb24uXG4gKi9cblEubWFzdGVyID0gbWFzdGVyO1xuZnVuY3Rpb24gbWFzdGVyKG9iamVjdCkge1xuICAgIHJldHVybiBQcm9taXNlKHtcbiAgICAgICAgXCJpc0RlZlwiOiBmdW5jdGlvbiAoKSB7fVxuICAgIH0sIGZ1bmN0aW9uIGZhbGxiYWNrKG9wLCBhcmdzKSB7XG4gICAgICAgIHJldHVybiBkaXNwYXRjaChvYmplY3QsIG9wLCBhcmdzKTtcbiAgICB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBRKG9iamVjdCkuaW5zcGVjdCgpO1xuICAgIH0pO1xufVxuXG4vKipcbiAqIFNwcmVhZHMgdGhlIHZhbHVlcyBvZiBhIHByb21pc2VkIGFycmF5IG9mIGFyZ3VtZW50cyBpbnRvIHRoZVxuICogZnVsZmlsbG1lbnQgY2FsbGJhY2suXG4gKiBAcGFyYW0gZnVsZmlsbGVkIGNhbGxiYWNrIHRoYXQgcmVjZWl2ZXMgdmFyaWFkaWMgYXJndW1lbnRzIGZyb20gdGhlXG4gKiBwcm9taXNlZCBhcnJheVxuICogQHBhcmFtIHJlamVjdGVkIGNhbGxiYWNrIHRoYXQgcmVjZWl2ZXMgdGhlIGV4Y2VwdGlvbiBpZiB0aGUgcHJvbWlzZVxuICogaXMgcmVqZWN0ZWQuXG4gKiBAcmV0dXJucyBhIHByb21pc2UgZm9yIHRoZSByZXR1cm4gdmFsdWUgb3IgdGhyb3duIGV4Y2VwdGlvbiBvZlxuICogZWl0aGVyIGNhbGxiYWNrLlxuICovXG5RLnNwcmVhZCA9IHNwcmVhZDtcbmZ1bmN0aW9uIHNwcmVhZCh2YWx1ZSwgZnVsZmlsbGVkLCByZWplY3RlZCkge1xuICAgIHJldHVybiBRKHZhbHVlKS5zcHJlYWQoZnVsZmlsbGVkLCByZWplY3RlZCk7XG59XG5cblByb21pc2UucHJvdG90eXBlLnNwcmVhZCA9IGZ1bmN0aW9uIChmdWxmaWxsZWQsIHJlamVjdGVkKSB7XG4gICAgcmV0dXJuIHRoaXMuYWxsKCkudGhlbihmdW5jdGlvbiAoYXJyYXkpIHtcbiAgICAgICAgcmV0dXJuIGZ1bGZpbGxlZC5hcHBseSh2b2lkIDAsIGFycmF5KTtcbiAgICB9LCByZWplY3RlZCk7XG59O1xuXG4vKipcbiAqIFRoZSBhc3luYyBmdW5jdGlvbiBpcyBhIGRlY29yYXRvciBmb3IgZ2VuZXJhdG9yIGZ1bmN0aW9ucywgdHVybmluZ1xuICogdGhlbSBpbnRvIGFzeW5jaHJvbm91cyBnZW5lcmF0b3JzLiAgQWx0aG91Z2ggZ2VuZXJhdG9ycyBhcmUgb25seSBwYXJ0XG4gKiBvZiB0aGUgbmV3ZXN0IEVDTUFTY3JpcHQgNiBkcmFmdHMsIHRoaXMgY29kZSBkb2VzIG5vdCBjYXVzZSBzeW50YXhcbiAqIGVycm9ycyBpbiBvbGRlciBlbmdpbmVzLiAgVGhpcyBjb2RlIHNob3VsZCBjb250aW51ZSB0byB3b3JrIGFuZCB3aWxsXG4gKiBpbiBmYWN0IGltcHJvdmUgb3ZlciB0aW1lIGFzIHRoZSBsYW5ndWFnZSBpbXByb3Zlcy5cbiAqXG4gKiBFUzYgZ2VuZXJhdG9ycyBhcmUgY3VycmVudGx5IHBhcnQgb2YgVjggdmVyc2lvbiAzLjE5IHdpdGggdGhlXG4gKiAtLWhhcm1vbnktZ2VuZXJhdG9ycyBydW50aW1lIGZsYWcgZW5hYmxlZC4gIFNwaWRlck1vbmtleSBoYXMgaGFkIHRoZW1cbiAqIGZvciBsb25nZXIsIGJ1dCB1bmRlciBhbiBvbGRlciBQeXRob24taW5zcGlyZWQgZm9ybS4gIFRoaXMgZnVuY3Rpb25cbiAqIHdvcmtzIG9uIGJvdGgga2luZHMgb2YgZ2VuZXJhdG9ycy5cbiAqXG4gKiBEZWNvcmF0ZXMgYSBnZW5lcmF0b3IgZnVuY3Rpb24gc3VjaCB0aGF0OlxuICogIC0gaXQgbWF5IHlpZWxkIHByb21pc2VzXG4gKiAgLSBleGVjdXRpb24gd2lsbCBjb250aW51ZSB3aGVuIHRoYXQgcHJvbWlzZSBpcyBmdWxmaWxsZWRcbiAqICAtIHRoZSB2YWx1ZSBvZiB0aGUgeWllbGQgZXhwcmVzc2lvbiB3aWxsIGJlIHRoZSBmdWxmaWxsZWQgdmFsdWVcbiAqICAtIGl0IHJldHVybnMgYSBwcm9taXNlIGZvciB0aGUgcmV0dXJuIHZhbHVlICh3aGVuIHRoZSBnZW5lcmF0b3JcbiAqICAgIHN0b3BzIGl0ZXJhdGluZylcbiAqICAtIHRoZSBkZWNvcmF0ZWQgZnVuY3Rpb24gcmV0dXJucyBhIHByb21pc2UgZm9yIHRoZSByZXR1cm4gdmFsdWVcbiAqICAgIG9mIHRoZSBnZW5lcmF0b3Igb3IgdGhlIGZpcnN0IHJlamVjdGVkIHByb21pc2UgYW1vbmcgdGhvc2VcbiAqICAgIHlpZWxkZWQuXG4gKiAgLSBpZiBhbiBlcnJvciBpcyB0aHJvd24gaW4gdGhlIGdlbmVyYXRvciwgaXQgcHJvcGFnYXRlcyB0aHJvdWdoXG4gKiAgICBldmVyeSBmb2xsb3dpbmcgeWllbGQgdW50aWwgaXQgaXMgY2F1Z2h0LCBvciB1bnRpbCBpdCBlc2NhcGVzXG4gKiAgICB0aGUgZ2VuZXJhdG9yIGZ1bmN0aW9uIGFsdG9nZXRoZXIsIGFuZCBpcyB0cmFuc2xhdGVkIGludG8gYVxuICogICAgcmVqZWN0aW9uIGZvciB0aGUgcHJvbWlzZSByZXR1cm5lZCBieSB0aGUgZGVjb3JhdGVkIGdlbmVyYXRvci5cbiAqL1xuUS5hc3luYyA9IGFzeW5jO1xuZnVuY3Rpb24gYXN5bmMobWFrZUdlbmVyYXRvcikge1xuICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIC8vIHdoZW4gdmVyYiBpcyBcInNlbmRcIiwgYXJnIGlzIGEgdmFsdWVcbiAgICAgICAgLy8gd2hlbiB2ZXJiIGlzIFwidGhyb3dcIiwgYXJnIGlzIGFuIGV4Y2VwdGlvblxuICAgICAgICBmdW5jdGlvbiBjb250aW51ZXIodmVyYiwgYXJnKSB7XG4gICAgICAgICAgICB2YXIgcmVzdWx0O1xuXG4gICAgICAgICAgICAvLyBVbnRpbCBWOCAzLjE5IC8gQ2hyb21pdW0gMjkgaXMgcmVsZWFzZWQsIFNwaWRlck1vbmtleSBpcyB0aGUgb25seVxuICAgICAgICAgICAgLy8gZW5naW5lIHRoYXQgaGFzIGEgZGVwbG95ZWQgYmFzZSBvZiBicm93c2VycyB0aGF0IHN1cHBvcnQgZ2VuZXJhdG9ycy5cbiAgICAgICAgICAgIC8vIEhvd2V2ZXIsIFNNJ3MgZ2VuZXJhdG9ycyB1c2UgdGhlIFB5dGhvbi1pbnNwaXJlZCBzZW1hbnRpY3Mgb2ZcbiAgICAgICAgICAgIC8vIG91dGRhdGVkIEVTNiBkcmFmdHMuICBXZSB3b3VsZCBsaWtlIHRvIHN1cHBvcnQgRVM2LCBidXQgd2UnZCBhbHNvXG4gICAgICAgICAgICAvLyBsaWtlIHRvIG1ha2UgaXQgcG9zc2libGUgdG8gdXNlIGdlbmVyYXRvcnMgaW4gZGVwbG95ZWQgYnJvd3NlcnMsIHNvXG4gICAgICAgICAgICAvLyB3ZSBhbHNvIHN1cHBvcnQgUHl0aG9uLXN0eWxlIGdlbmVyYXRvcnMuICBBdCBzb21lIHBvaW50IHdlIGNhbiByZW1vdmVcbiAgICAgICAgICAgIC8vIHRoaXMgYmxvY2suXG5cbiAgICAgICAgICAgIGlmICh0eXBlb2YgU3RvcEl0ZXJhdGlvbiA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgICAgIC8vIEVTNiBHZW5lcmF0b3JzXG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gZ2VuZXJhdG9yW3ZlcmJdKGFyZyk7XG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZXhjZXB0aW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZWplY3QoZXhjZXB0aW9uKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5kb25lKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBRKHJlc3VsdC52YWx1ZSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHdoZW4ocmVzdWx0LnZhbHVlLCBjYWxsYmFjaywgZXJyYmFjayk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBTcGlkZXJNb25rZXkgR2VuZXJhdG9yc1xuICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBjYXNlIHdoZW4gU00gZG9lcyBFUzYgZ2VuZXJhdG9ycy5cbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBnZW5lcmF0b3JbdmVyYl0oYXJnKTtcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChleGNlcHRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzU3RvcEl0ZXJhdGlvbihleGNlcHRpb24pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gUShleGNlcHRpb24udmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlamVjdChleGNlcHRpb24pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiB3aGVuKHJlc3VsdCwgY2FsbGJhY2ssIGVycmJhY2spO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHZhciBnZW5lcmF0b3IgPSBtYWtlR2VuZXJhdG9yLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICAgIHZhciBjYWxsYmFjayA9IGNvbnRpbnVlci5iaW5kKGNvbnRpbnVlciwgXCJuZXh0XCIpO1xuICAgICAgICB2YXIgZXJyYmFjayA9IGNvbnRpbnVlci5iaW5kKGNvbnRpbnVlciwgXCJ0aHJvd1wiKTtcbiAgICAgICAgcmV0dXJuIGNhbGxiYWNrKCk7XG4gICAgfTtcbn1cblxuLyoqXG4gKiBUaGUgc3Bhd24gZnVuY3Rpb24gaXMgYSBzbWFsbCB3cmFwcGVyIGFyb3VuZCBhc3luYyB0aGF0IGltbWVkaWF0ZWx5XG4gKiBjYWxscyB0aGUgZ2VuZXJhdG9yIGFuZCBhbHNvIGVuZHMgdGhlIHByb21pc2UgY2hhaW4sIHNvIHRoYXQgYW55XG4gKiB1bmhhbmRsZWQgZXJyb3JzIGFyZSB0aHJvd24gaW5zdGVhZCBvZiBmb3J3YXJkZWQgdG8gdGhlIGVycm9yXG4gKiBoYW5kbGVyLiBUaGlzIGlzIHVzZWZ1bCBiZWNhdXNlIGl0J3MgZXh0cmVtZWx5IGNvbW1vbiB0byBydW5cbiAqIGdlbmVyYXRvcnMgYXQgdGhlIHRvcC1sZXZlbCB0byB3b3JrIHdpdGggbGlicmFyaWVzLlxuICovXG5RLnNwYXduID0gc3Bhd247XG5mdW5jdGlvbiBzcGF3bihtYWtlR2VuZXJhdG9yKSB7XG4gICAgUS5kb25lKFEuYXN5bmMobWFrZUdlbmVyYXRvcikoKSk7XG59XG5cbi8vIEZJWE1FOiBSZW1vdmUgdGhpcyBpbnRlcmZhY2Ugb25jZSBFUzYgZ2VuZXJhdG9ycyBhcmUgaW4gU3BpZGVyTW9ua2V5LlxuLyoqXG4gKiBUaHJvd3MgYSBSZXR1cm5WYWx1ZSBleGNlcHRpb24gdG8gc3RvcCBhbiBhc3luY2hyb25vdXMgZ2VuZXJhdG9yLlxuICpcbiAqIFRoaXMgaW50ZXJmYWNlIGlzIGEgc3RvcC1nYXAgbWVhc3VyZSB0byBzdXBwb3J0IGdlbmVyYXRvciByZXR1cm5cbiAqIHZhbHVlcyBpbiBvbGRlciBGaXJlZm94L1NwaWRlck1vbmtleS4gIEluIGJyb3dzZXJzIHRoYXQgc3VwcG9ydCBFUzZcbiAqIGdlbmVyYXRvcnMgbGlrZSBDaHJvbWl1bSAyOSwganVzdCB1c2UgXCJyZXR1cm5cIiBpbiB5b3VyIGdlbmVyYXRvclxuICogZnVuY3Rpb25zLlxuICpcbiAqIEBwYXJhbSB2YWx1ZSB0aGUgcmV0dXJuIHZhbHVlIGZvciB0aGUgc3Vycm91bmRpbmcgZ2VuZXJhdG9yXG4gKiBAdGhyb3dzIFJldHVyblZhbHVlIGV4Y2VwdGlvbiB3aXRoIHRoZSB2YWx1ZS5cbiAqIEBleGFtcGxlXG4gKiAvLyBFUzYgc3R5bGVcbiAqIFEuYXN5bmMoZnVuY3Rpb24qICgpIHtcbiAqICAgICAgdmFyIGZvbyA9IHlpZWxkIGdldEZvb1Byb21pc2UoKTtcbiAqICAgICAgdmFyIGJhciA9IHlpZWxkIGdldEJhclByb21pc2UoKTtcbiAqICAgICAgcmV0dXJuIGZvbyArIGJhcjtcbiAqIH0pXG4gKiAvLyBPbGRlciBTcGlkZXJNb25rZXkgc3R5bGVcbiAqIFEuYXN5bmMoZnVuY3Rpb24gKCkge1xuICogICAgICB2YXIgZm9vID0geWllbGQgZ2V0Rm9vUHJvbWlzZSgpO1xuICogICAgICB2YXIgYmFyID0geWllbGQgZ2V0QmFyUHJvbWlzZSgpO1xuICogICAgICBRLnJldHVybihmb28gKyBiYXIpO1xuICogfSlcbiAqL1xuUVtcInJldHVyblwiXSA9IF9yZXR1cm47XG5mdW5jdGlvbiBfcmV0dXJuKHZhbHVlKSB7XG4gICAgdGhyb3cgbmV3IFFSZXR1cm5WYWx1ZSh2YWx1ZSk7XG59XG5cbi8qKlxuICogVGhlIHByb21pc2VkIGZ1bmN0aW9uIGRlY29yYXRvciBlbnN1cmVzIHRoYXQgYW55IHByb21pc2UgYXJndW1lbnRzXG4gKiBhcmUgc2V0dGxlZCBhbmQgcGFzc2VkIGFzIHZhbHVlcyAoYHRoaXNgIGlzIGFsc28gc2V0dGxlZCBhbmQgcGFzc2VkXG4gKiBhcyBhIHZhbHVlKS4gIEl0IHdpbGwgYWxzbyBlbnN1cmUgdGhhdCB0aGUgcmVzdWx0IG9mIGEgZnVuY3Rpb24gaXNcbiAqIGFsd2F5cyBhIHByb21pc2UuXG4gKlxuICogQGV4YW1wbGVcbiAqIHZhciBhZGQgPSBRLnByb21pc2VkKGZ1bmN0aW9uIChhLCBiKSB7XG4gKiAgICAgcmV0dXJuIGEgKyBiO1xuICogfSk7XG4gKiBhZGQoUShhKSwgUShCKSk7XG4gKlxuICogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2sgVGhlIGZ1bmN0aW9uIHRvIGRlY29yYXRlXG4gKiBAcmV0dXJucyB7ZnVuY3Rpb259IGEgZnVuY3Rpb24gdGhhdCBoYXMgYmVlbiBkZWNvcmF0ZWQuXG4gKi9cblEucHJvbWlzZWQgPSBwcm9taXNlZDtcbmZ1bmN0aW9uIHByb21pc2VkKGNhbGxiYWNrKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHNwcmVhZChbdGhpcywgYWxsKGFyZ3VtZW50cyldLCBmdW5jdGlvbiAoc2VsZiwgYXJncykge1xuICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrLmFwcGx5KHNlbGYsIGFyZ3MpO1xuICAgICAgICB9KTtcbiAgICB9O1xufVxuXG4vKipcbiAqIHNlbmRzIGEgbWVzc2FnZSB0byBhIHZhbHVlIGluIGEgZnV0dXJlIHR1cm5cbiAqIEBwYXJhbSBvYmplY3QqIHRoZSByZWNpcGllbnRcbiAqIEBwYXJhbSBvcCB0aGUgbmFtZSBvZiB0aGUgbWVzc2FnZSBvcGVyYXRpb24sIGUuZy4sIFwid2hlblwiLFxuICogQHBhcmFtIGFyZ3MgZnVydGhlciBhcmd1bWVudHMgdG8gYmUgZm9yd2FyZGVkIHRvIHRoZSBvcGVyYXRpb25cbiAqIEByZXR1cm5zIHJlc3VsdCB7UHJvbWlzZX0gYSBwcm9taXNlIGZvciB0aGUgcmVzdWx0IG9mIHRoZSBvcGVyYXRpb25cbiAqL1xuUS5kaXNwYXRjaCA9IGRpc3BhdGNoO1xuZnVuY3Rpb24gZGlzcGF0Y2gob2JqZWN0LCBvcCwgYXJncykge1xuICAgIHJldHVybiBRKG9iamVjdCkuZGlzcGF0Y2gob3AsIGFyZ3MpO1xufVxuXG5Qcm9taXNlLnByb3RvdHlwZS5kaXNwYXRjaCA9IGZ1bmN0aW9uIChvcCwgYXJncykge1xuICAgIHZhciBzZWxmID0gdGhpcztcbiAgICB2YXIgZGVmZXJyZWQgPSBkZWZlcigpO1xuICAgIFEubmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgICAgICBzZWxmLnByb21pc2VEaXNwYXRjaChkZWZlcnJlZC5yZXNvbHZlLCBvcCwgYXJncyk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2U7XG59O1xuXG4vKipcbiAqIEdldHMgdGhlIHZhbHVlIG9mIGEgcHJvcGVydHkgaW4gYSBmdXR1cmUgdHVybi5cbiAqIEBwYXJhbSBvYmplY3QgICAgcHJvbWlzZSBvciBpbW1lZGlhdGUgcmVmZXJlbmNlIGZvciB0YXJnZXQgb2JqZWN0XG4gKiBAcGFyYW0gbmFtZSAgICAgIG5hbWUgb2YgcHJvcGVydHkgdG8gZ2V0XG4gKiBAcmV0dXJuIHByb21pc2UgZm9yIHRoZSBwcm9wZXJ0eSB2YWx1ZVxuICovXG5RLmdldCA9IGZ1bmN0aW9uIChvYmplY3QsIGtleSkge1xuICAgIHJldHVybiBRKG9iamVjdCkuZGlzcGF0Y2goXCJnZXRcIiwgW2tleV0pO1xufTtcblxuUHJvbWlzZS5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24gKGtleSkge1xuICAgIHJldHVybiB0aGlzLmRpc3BhdGNoKFwiZ2V0XCIsIFtrZXldKTtcbn07XG5cbi8qKlxuICogU2V0cyB0aGUgdmFsdWUgb2YgYSBwcm9wZXJ0eSBpbiBhIGZ1dHVyZSB0dXJuLlxuICogQHBhcmFtIG9iamVjdCAgICBwcm9taXNlIG9yIGltbWVkaWF0ZSByZWZlcmVuY2UgZm9yIG9iamVjdCBvYmplY3RcbiAqIEBwYXJhbSBuYW1lICAgICAgbmFtZSBvZiBwcm9wZXJ0eSB0byBzZXRcbiAqIEBwYXJhbSB2YWx1ZSAgICAgbmV3IHZhbHVlIG9mIHByb3BlcnR5XG4gKiBAcmV0dXJuIHByb21pc2UgZm9yIHRoZSByZXR1cm4gdmFsdWVcbiAqL1xuUS5zZXQgPSBmdW5jdGlvbiAob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gICAgcmV0dXJuIFEob2JqZWN0KS5kaXNwYXRjaChcInNldFwiLCBba2V5LCB2YWx1ZV0pO1xufTtcblxuUHJvbWlzZS5wcm90b3R5cGUuc2V0ID0gZnVuY3Rpb24gKGtleSwgdmFsdWUpIHtcbiAgICByZXR1cm4gdGhpcy5kaXNwYXRjaChcInNldFwiLCBba2V5LCB2YWx1ZV0pO1xufTtcblxuLyoqXG4gKiBEZWxldGVzIGEgcHJvcGVydHkgaW4gYSBmdXR1cmUgdHVybi5cbiAqIEBwYXJhbSBvYmplY3QgICAgcHJvbWlzZSBvciBpbW1lZGlhdGUgcmVmZXJlbmNlIGZvciB0YXJnZXQgb2JqZWN0XG4gKiBAcGFyYW0gbmFtZSAgICAgIG5hbWUgb2YgcHJvcGVydHkgdG8gZGVsZXRlXG4gKiBAcmV0dXJuIHByb21pc2UgZm9yIHRoZSByZXR1cm4gdmFsdWVcbiAqL1xuUS5kZWwgPSAvLyBYWFggbGVnYWN5XG5RW1wiZGVsZXRlXCJdID0gZnVuY3Rpb24gKG9iamVjdCwga2V5KSB7XG4gICAgcmV0dXJuIFEob2JqZWN0KS5kaXNwYXRjaChcImRlbGV0ZVwiLCBba2V5XSk7XG59O1xuXG5Qcm9taXNlLnByb3RvdHlwZS5kZWwgPSAvLyBYWFggbGVnYWN5XG5Qcm9taXNlLnByb3RvdHlwZVtcImRlbGV0ZVwiXSA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgICByZXR1cm4gdGhpcy5kaXNwYXRjaChcImRlbGV0ZVwiLCBba2V5XSk7XG59O1xuXG4vKipcbiAqIEludm9rZXMgYSBtZXRob2QgaW4gYSBmdXR1cmUgdHVybi5cbiAqIEBwYXJhbSBvYmplY3QgICAgcHJvbWlzZSBvciBpbW1lZGlhdGUgcmVmZXJlbmNlIGZvciB0YXJnZXQgb2JqZWN0XG4gKiBAcGFyYW0gbmFtZSAgICAgIG5hbWUgb2YgbWV0aG9kIHRvIGludm9rZVxuICogQHBhcmFtIHZhbHVlICAgICBhIHZhbHVlIHRvIHBvc3QsIHR5cGljYWxseSBhbiBhcnJheSBvZlxuICogICAgICAgICAgICAgICAgICBpbnZvY2F0aW9uIGFyZ3VtZW50cyBmb3IgcHJvbWlzZXMgdGhhdFxuICogICAgICAgICAgICAgICAgICBhcmUgdWx0aW1hdGVseSBiYWNrZWQgd2l0aCBgcmVzb2x2ZWAgdmFsdWVzLFxuICogICAgICAgICAgICAgICAgICBhcyBvcHBvc2VkIHRvIHRob3NlIGJhY2tlZCB3aXRoIFVSTHNcbiAqICAgICAgICAgICAgICAgICAgd2hlcmVpbiB0aGUgcG9zdGVkIHZhbHVlIGNhbiBiZSBhbnlcbiAqICAgICAgICAgICAgICAgICAgSlNPTiBzZXJpYWxpemFibGUgb2JqZWN0LlxuICogQHJldHVybiBwcm9taXNlIGZvciB0aGUgcmV0dXJuIHZhbHVlXG4gKi9cbi8vIGJvdW5kIGxvY2FsbHkgYmVjYXVzZSBpdCBpcyB1c2VkIGJ5IG90aGVyIG1ldGhvZHNcblEubWFwcGx5ID0gLy8gWFhYIEFzIHByb3Bvc2VkIGJ5IFwiUmVkc2FuZHJvXCJcblEucG9zdCA9IGZ1bmN0aW9uIChvYmplY3QsIG5hbWUsIGFyZ3MpIHtcbiAgICByZXR1cm4gUShvYmplY3QpLmRpc3BhdGNoKFwicG9zdFwiLCBbbmFtZSwgYXJnc10pO1xufTtcblxuUHJvbWlzZS5wcm90b3R5cGUubWFwcGx5ID0gLy8gWFhYIEFzIHByb3Bvc2VkIGJ5IFwiUmVkc2FuZHJvXCJcblByb21pc2UucHJvdG90eXBlLnBvc3QgPSBmdW5jdGlvbiAobmFtZSwgYXJncykge1xuICAgIHJldHVybiB0aGlzLmRpc3BhdGNoKFwicG9zdFwiLCBbbmFtZSwgYXJnc10pO1xufTtcblxuLyoqXG4gKiBJbnZva2VzIGEgbWV0aG9kIGluIGEgZnV0dXJlIHR1cm4uXG4gKiBAcGFyYW0gb2JqZWN0ICAgIHByb21pc2Ugb3IgaW1tZWRpYXRlIHJlZmVyZW5jZSBmb3IgdGFyZ2V0IG9iamVjdFxuICogQHBhcmFtIG5hbWUgICAgICBuYW1lIG9mIG1ldGhvZCB0byBpbnZva2VcbiAqIEBwYXJhbSAuLi5hcmdzICAgYXJyYXkgb2YgaW52b2NhdGlvbiBhcmd1bWVudHNcbiAqIEByZXR1cm4gcHJvbWlzZSBmb3IgdGhlIHJldHVybiB2YWx1ZVxuICovXG5RLnNlbmQgPSAvLyBYWFggTWFyayBNaWxsZXIncyBwcm9wb3NlZCBwYXJsYW5jZVxuUS5tY2FsbCA9IC8vIFhYWCBBcyBwcm9wb3NlZCBieSBcIlJlZHNhbmRyb1wiXG5RLmludm9rZSA9IGZ1bmN0aW9uIChvYmplY3QsIG5hbWUgLyouLi5hcmdzKi8pIHtcbiAgICByZXR1cm4gUShvYmplY3QpLmRpc3BhdGNoKFwicG9zdFwiLCBbbmFtZSwgYXJyYXlfc2xpY2UoYXJndW1lbnRzLCAyKV0pO1xufTtcblxuUHJvbWlzZS5wcm90b3R5cGUuc2VuZCA9IC8vIFhYWCBNYXJrIE1pbGxlcidzIHByb3Bvc2VkIHBhcmxhbmNlXG5Qcm9taXNlLnByb3RvdHlwZS5tY2FsbCA9IC8vIFhYWCBBcyBwcm9wb3NlZCBieSBcIlJlZHNhbmRyb1wiXG5Qcm9taXNlLnByb3RvdHlwZS5pbnZva2UgPSBmdW5jdGlvbiAobmFtZSAvKi4uLmFyZ3MqLykge1xuICAgIHJldHVybiB0aGlzLmRpc3BhdGNoKFwicG9zdFwiLCBbbmFtZSwgYXJyYXlfc2xpY2UoYXJndW1lbnRzLCAxKV0pO1xufTtcblxuLyoqXG4gKiBBcHBsaWVzIHRoZSBwcm9taXNlZCBmdW5jdGlvbiBpbiBhIGZ1dHVyZSB0dXJuLlxuICogQHBhcmFtIG9iamVjdCAgICBwcm9taXNlIG9yIGltbWVkaWF0ZSByZWZlcmVuY2UgZm9yIHRhcmdldCBmdW5jdGlvblxuICogQHBhcmFtIGFyZ3MgICAgICBhcnJheSBvZiBhcHBsaWNhdGlvbiBhcmd1bWVudHNcbiAqL1xuUS5mYXBwbHkgPSBmdW5jdGlvbiAob2JqZWN0LCBhcmdzKSB7XG4gICAgcmV0dXJuIFEob2JqZWN0KS5kaXNwYXRjaChcImFwcGx5XCIsIFt2b2lkIDAsIGFyZ3NdKTtcbn07XG5cblByb21pc2UucHJvdG90eXBlLmZhcHBseSA9IGZ1bmN0aW9uIChhcmdzKSB7XG4gICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2goXCJhcHBseVwiLCBbdm9pZCAwLCBhcmdzXSk7XG59O1xuXG4vKipcbiAqIENhbGxzIHRoZSBwcm9taXNlZCBmdW5jdGlvbiBpbiBhIGZ1dHVyZSB0dXJuLlxuICogQHBhcmFtIG9iamVjdCAgICBwcm9taXNlIG9yIGltbWVkaWF0ZSByZWZlcmVuY2UgZm9yIHRhcmdldCBmdW5jdGlvblxuICogQHBhcmFtIC4uLmFyZ3MgICBhcnJheSBvZiBhcHBsaWNhdGlvbiBhcmd1bWVudHNcbiAqL1xuUVtcInRyeVwiXSA9XG5RLmZjYWxsID0gZnVuY3Rpb24gKG9iamVjdCAvKiAuLi5hcmdzKi8pIHtcbiAgICByZXR1cm4gUShvYmplY3QpLmRpc3BhdGNoKFwiYXBwbHlcIiwgW3ZvaWQgMCwgYXJyYXlfc2xpY2UoYXJndW1lbnRzLCAxKV0pO1xufTtcblxuUHJvbWlzZS5wcm90b3R5cGUuZmNhbGwgPSBmdW5jdGlvbiAoLyouLi5hcmdzKi8pIHtcbiAgICByZXR1cm4gdGhpcy5kaXNwYXRjaChcImFwcGx5XCIsIFt2b2lkIDAsIGFycmF5X3NsaWNlKGFyZ3VtZW50cyldKTtcbn07XG5cbi8qKlxuICogQmluZHMgdGhlIHByb21pc2VkIGZ1bmN0aW9uLCB0cmFuc2Zvcm1pbmcgcmV0dXJuIHZhbHVlcyBpbnRvIGEgZnVsZmlsbGVkXG4gKiBwcm9taXNlIGFuZCB0aHJvd24gZXJyb3JzIGludG8gYSByZWplY3RlZCBvbmUuXG4gKiBAcGFyYW0gb2JqZWN0ICAgIHByb21pc2Ugb3IgaW1tZWRpYXRlIHJlZmVyZW5jZSBmb3IgdGFyZ2V0IGZ1bmN0aW9uXG4gKiBAcGFyYW0gLi4uYXJncyAgIGFycmF5IG9mIGFwcGxpY2F0aW9uIGFyZ3VtZW50c1xuICovXG5RLmZiaW5kID0gZnVuY3Rpb24gKG9iamVjdCAvKi4uLmFyZ3MqLykge1xuICAgIHZhciBwcm9taXNlID0gUShvYmplY3QpO1xuICAgIHZhciBhcmdzID0gYXJyYXlfc2xpY2UoYXJndW1lbnRzLCAxKTtcbiAgICByZXR1cm4gZnVuY3Rpb24gZmJvdW5kKCkge1xuICAgICAgICByZXR1cm4gcHJvbWlzZS5kaXNwYXRjaChcImFwcGx5XCIsIFtcbiAgICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgICBhcmdzLmNvbmNhdChhcnJheV9zbGljZShhcmd1bWVudHMpKVxuICAgICAgICBdKTtcbiAgICB9O1xufTtcblByb21pc2UucHJvdG90eXBlLmZiaW5kID0gZnVuY3Rpb24gKC8qLi4uYXJncyovKSB7XG4gICAgdmFyIHByb21pc2UgPSB0aGlzO1xuICAgIHZhciBhcmdzID0gYXJyYXlfc2xpY2UoYXJndW1lbnRzKTtcbiAgICByZXR1cm4gZnVuY3Rpb24gZmJvdW5kKCkge1xuICAgICAgICByZXR1cm4gcHJvbWlzZS5kaXNwYXRjaChcImFwcGx5XCIsIFtcbiAgICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgICBhcmdzLmNvbmNhdChhcnJheV9zbGljZShhcmd1bWVudHMpKVxuICAgICAgICBdKTtcbiAgICB9O1xufTtcblxuLyoqXG4gKiBSZXF1ZXN0cyB0aGUgbmFtZXMgb2YgdGhlIG93bmVkIHByb3BlcnRpZXMgb2YgYSBwcm9taXNlZFxuICogb2JqZWN0IGluIGEgZnV0dXJlIHR1cm4uXG4gKiBAcGFyYW0gb2JqZWN0ICAgIHByb21pc2Ugb3IgaW1tZWRpYXRlIHJlZmVyZW5jZSBmb3IgdGFyZ2V0IG9iamVjdFxuICogQHJldHVybiBwcm9taXNlIGZvciB0aGUga2V5cyBvZiB0aGUgZXZlbnR1YWxseSBzZXR0bGVkIG9iamVjdFxuICovXG5RLmtleXMgPSBmdW5jdGlvbiAob2JqZWN0KSB7XG4gICAgcmV0dXJuIFEob2JqZWN0KS5kaXNwYXRjaChcImtleXNcIiwgW10pO1xufTtcblxuUHJvbWlzZS5wcm90b3R5cGUua2V5cyA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5kaXNwYXRjaChcImtleXNcIiwgW10pO1xufTtcblxuLyoqXG4gKiBUdXJucyBhbiBhcnJheSBvZiBwcm9taXNlcyBpbnRvIGEgcHJvbWlzZSBmb3IgYW4gYXJyYXkuICBJZiBhbnkgb2ZcbiAqIHRoZSBwcm9taXNlcyBnZXRzIHJlamVjdGVkLCB0aGUgd2hvbGUgYXJyYXkgaXMgcmVqZWN0ZWQgaW1tZWRpYXRlbHkuXG4gKiBAcGFyYW0ge0FycmF5Kn0gYW4gYXJyYXkgKG9yIHByb21pc2UgZm9yIGFuIGFycmF5KSBvZiB2YWx1ZXMgKG9yXG4gKiBwcm9taXNlcyBmb3IgdmFsdWVzKVxuICogQHJldHVybnMgYSBwcm9taXNlIGZvciBhbiBhcnJheSBvZiB0aGUgY29ycmVzcG9uZGluZyB2YWx1ZXNcbiAqL1xuLy8gQnkgTWFyayBNaWxsZXJcbi8vIGh0dHA6Ly93aWtpLmVjbWFzY3JpcHQub3JnL2Rva3UucGhwP2lkPXN0cmF3bWFuOmNvbmN1cnJlbmN5JnJldj0xMzA4Nzc2NTIxI2FsbGZ1bGZpbGxlZFxuUS5hbGwgPSBhbGw7XG5mdW5jdGlvbiBhbGwocHJvbWlzZXMpIHtcbiAgICByZXR1cm4gd2hlbihwcm9taXNlcywgZnVuY3Rpb24gKHByb21pc2VzKSB7XG4gICAgICAgIHZhciBwZW5kaW5nQ291bnQgPSAwO1xuICAgICAgICB2YXIgZGVmZXJyZWQgPSBkZWZlcigpO1xuICAgICAgICBhcnJheV9yZWR1Y2UocHJvbWlzZXMsIGZ1bmN0aW9uICh1bmRlZmluZWQsIHByb21pc2UsIGluZGV4KSB7XG4gICAgICAgICAgICB2YXIgc25hcHNob3Q7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgaXNQcm9taXNlKHByb21pc2UpICYmXG4gICAgICAgICAgICAgICAgKHNuYXBzaG90ID0gcHJvbWlzZS5pbnNwZWN0KCkpLnN0YXRlID09PSBcImZ1bGZpbGxlZFwiXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBwcm9taXNlc1tpbmRleF0gPSBzbmFwc2hvdC52YWx1ZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgKytwZW5kaW5nQ291bnQ7XG4gICAgICAgICAgICAgICAgd2hlbihcbiAgICAgICAgICAgICAgICAgICAgcHJvbWlzZSxcbiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9taXNlc1tpbmRleF0gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgtLXBlbmRpbmdDb3VudCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlc29sdmUocHJvbWlzZXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5yZWplY3QsXG4gICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIChwcm9ncmVzcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJyZWQubm90aWZ5KHsgaW5kZXg6IGluZGV4LCB2YWx1ZTogcHJvZ3Jlc3MgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LCB2b2lkIDApO1xuICAgICAgICBpZiAocGVuZGluZ0NvdW50ID09PSAwKSB7XG4gICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKHByb21pc2VzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZTtcbiAgICB9KTtcbn1cblxuUHJvbWlzZS5wcm90b3R5cGUuYWxsID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBhbGwodGhpcyk7XG59O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIGZpcnN0IHJlc29sdmVkIHByb21pc2Ugb2YgYW4gYXJyYXkuIFByaW9yIHJlamVjdGVkIHByb21pc2VzIGFyZVxuICogaWdub3JlZC4gIFJlamVjdHMgb25seSBpZiBhbGwgcHJvbWlzZXMgYXJlIHJlamVjdGVkLlxuICogQHBhcmFtIHtBcnJheSp9IGFuIGFycmF5IGNvbnRhaW5pbmcgdmFsdWVzIG9yIHByb21pc2VzIGZvciB2YWx1ZXNcbiAqIEByZXR1cm5zIGEgcHJvbWlzZSBmdWxmaWxsZWQgd2l0aCB0aGUgdmFsdWUgb2YgdGhlIGZpcnN0IHJlc29sdmVkIHByb21pc2UsXG4gKiBvciBhIHJlamVjdGVkIHByb21pc2UgaWYgYWxsIHByb21pc2VzIGFyZSByZWplY3RlZC5cbiAqL1xuUS5hbnkgPSBhbnk7XG5cbmZ1bmN0aW9uIGFueShwcm9taXNlcykge1xuICAgIGlmIChwcm9taXNlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIFEucmVzb2x2ZSgpO1xuICAgIH1cblxuICAgIHZhciBkZWZlcnJlZCA9IFEuZGVmZXIoKTtcbiAgICB2YXIgcGVuZGluZ0NvdW50ID0gMDtcbiAgICBhcnJheV9yZWR1Y2UocHJvbWlzZXMsIGZ1bmN0aW9uIChwcmV2LCBjdXJyZW50LCBpbmRleCkge1xuICAgICAgICB2YXIgcHJvbWlzZSA9IHByb21pc2VzW2luZGV4XTtcblxuICAgICAgICBwZW5kaW5nQ291bnQrKztcblxuICAgICAgICB3aGVuKHByb21pc2UsIG9uRnVsZmlsbGVkLCBvblJlamVjdGVkLCBvblByb2dyZXNzKTtcbiAgICAgICAgZnVuY3Rpb24gb25GdWxmaWxsZWQocmVzdWx0KSB7XG4gICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKHJlc3VsdCk7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gb25SZWplY3RlZChlcnIpIHtcbiAgICAgICAgICAgIHBlbmRpbmdDb3VudC0tO1xuICAgICAgICAgICAgaWYgKHBlbmRpbmdDb3VudCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIGVyci5tZXNzYWdlID0gKFwiUSBjYW4ndCBnZXQgZnVsZmlsbG1lbnQgdmFsdWUgZnJvbSBhbnkgcHJvbWlzZSwgYWxsIFwiICtcbiAgICAgICAgICAgICAgICAgICAgXCJwcm9taXNlcyB3ZXJlIHJlamVjdGVkLiBMYXN0IGVycm9yIG1lc3NhZ2U6IFwiICsgZXJyLm1lc3NhZ2UpO1xuICAgICAgICAgICAgICAgIGRlZmVycmVkLnJlamVjdChlcnIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIG9uUHJvZ3Jlc3MocHJvZ3Jlc3MpIHtcbiAgICAgICAgICAgIGRlZmVycmVkLm5vdGlmeSh7XG4gICAgICAgICAgICAgICAgaW5kZXg6IGluZGV4LFxuICAgICAgICAgICAgICAgIHZhbHVlOiBwcm9ncmVzc1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9LCB1bmRlZmluZWQpO1xuXG4gICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2U7XG59XG5cblByb21pc2UucHJvdG90eXBlLmFueSA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gYW55KHRoaXMpO1xufTtcblxuLyoqXG4gKiBXYWl0cyBmb3IgYWxsIHByb21pc2VzIHRvIGJlIHNldHRsZWQsIGVpdGhlciBmdWxmaWxsZWQgb3JcbiAqIHJlamVjdGVkLiAgVGhpcyBpcyBkaXN0aW5jdCBmcm9tIGBhbGxgIHNpbmNlIHRoYXQgd291bGQgc3RvcFxuICogd2FpdGluZyBhdCB0aGUgZmlyc3QgcmVqZWN0aW9uLiAgVGhlIHByb21pc2UgcmV0dXJuZWQgYnlcbiAqIGBhbGxSZXNvbHZlZGAgd2lsbCBuZXZlciBiZSByZWplY3RlZC5cbiAqIEBwYXJhbSBwcm9taXNlcyBhIHByb21pc2UgZm9yIGFuIGFycmF5IChvciBhbiBhcnJheSkgb2YgcHJvbWlzZXNcbiAqIChvciB2YWx1ZXMpXG4gKiBAcmV0dXJuIGEgcHJvbWlzZSBmb3IgYW4gYXJyYXkgb2YgcHJvbWlzZXNcbiAqL1xuUS5hbGxSZXNvbHZlZCA9IGRlcHJlY2F0ZShhbGxSZXNvbHZlZCwgXCJhbGxSZXNvbHZlZFwiLCBcImFsbFNldHRsZWRcIik7XG5mdW5jdGlvbiBhbGxSZXNvbHZlZChwcm9taXNlcykge1xuICAgIHJldHVybiB3aGVuKHByb21pc2VzLCBmdW5jdGlvbiAocHJvbWlzZXMpIHtcbiAgICAgICAgcHJvbWlzZXMgPSBhcnJheV9tYXAocHJvbWlzZXMsIFEpO1xuICAgICAgICByZXR1cm4gd2hlbihhbGwoYXJyYXlfbWFwKHByb21pc2VzLCBmdW5jdGlvbiAocHJvbWlzZSkge1xuICAgICAgICAgICAgcmV0dXJuIHdoZW4ocHJvbWlzZSwgbm9vcCwgbm9vcCk7XG4gICAgICAgIH0pKSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHByb21pc2VzO1xuICAgICAgICB9KTtcbiAgICB9KTtcbn1cblxuUHJvbWlzZS5wcm90b3R5cGUuYWxsUmVzb2x2ZWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGFsbFJlc29sdmVkKHRoaXMpO1xufTtcblxuLyoqXG4gKiBAc2VlIFByb21pc2UjYWxsU2V0dGxlZFxuICovXG5RLmFsbFNldHRsZWQgPSBhbGxTZXR0bGVkO1xuZnVuY3Rpb24gYWxsU2V0dGxlZChwcm9taXNlcykge1xuICAgIHJldHVybiBRKHByb21pc2VzKS5hbGxTZXR0bGVkKCk7XG59XG5cbi8qKlxuICogVHVybnMgYW4gYXJyYXkgb2YgcHJvbWlzZXMgaW50byBhIHByb21pc2UgZm9yIGFuIGFycmF5IG9mIHRoZWlyIHN0YXRlcyAoYXNcbiAqIHJldHVybmVkIGJ5IGBpbnNwZWN0YCkgd2hlbiB0aGV5IGhhdmUgYWxsIHNldHRsZWQuXG4gKiBAcGFyYW0ge0FycmF5W0FueSpdfSB2YWx1ZXMgYW4gYXJyYXkgKG9yIHByb21pc2UgZm9yIGFuIGFycmF5KSBvZiB2YWx1ZXMgKG9yXG4gKiBwcm9taXNlcyBmb3IgdmFsdWVzKVxuICogQHJldHVybnMge0FycmF5W1N0YXRlXX0gYW4gYXJyYXkgb2Ygc3RhdGVzIGZvciB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMuXG4gKi9cblByb21pc2UucHJvdG90eXBlLmFsbFNldHRsZWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMudGhlbihmdW5jdGlvbiAocHJvbWlzZXMpIHtcbiAgICAgICAgcmV0dXJuIGFsbChhcnJheV9tYXAocHJvbWlzZXMsIGZ1bmN0aW9uIChwcm9taXNlKSB7XG4gICAgICAgICAgICBwcm9taXNlID0gUShwcm9taXNlKTtcbiAgICAgICAgICAgIGZ1bmN0aW9uIHJlZ2FyZGxlc3MoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHByb21pc2UuaW5zcGVjdCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHByb21pc2UudGhlbihyZWdhcmRsZXNzLCByZWdhcmRsZXNzKTtcbiAgICAgICAgfSkpO1xuICAgIH0pO1xufTtcblxuLyoqXG4gKiBDYXB0dXJlcyB0aGUgZmFpbHVyZSBvZiBhIHByb21pc2UsIGdpdmluZyBhbiBvcG9ydHVuaXR5IHRvIHJlY292ZXJcbiAqIHdpdGggYSBjYWxsYmFjay4gIElmIHRoZSBnaXZlbiBwcm9taXNlIGlzIGZ1bGZpbGxlZCwgdGhlIHJldHVybmVkXG4gKiBwcm9taXNlIGlzIGZ1bGZpbGxlZC5cbiAqIEBwYXJhbSB7QW55Kn0gcHJvbWlzZSBmb3Igc29tZXRoaW5nXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjYWxsYmFjayB0byBmdWxmaWxsIHRoZSByZXR1cm5lZCBwcm9taXNlIGlmIHRoZVxuICogZ2l2ZW4gcHJvbWlzZSBpcyByZWplY3RlZFxuICogQHJldHVybnMgYSBwcm9taXNlIGZvciB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBjYWxsYmFja1xuICovXG5RLmZhaWwgPSAvLyBYWFggbGVnYWN5XG5RW1wiY2F0Y2hcIl0gPSBmdW5jdGlvbiAob2JqZWN0LCByZWplY3RlZCkge1xuICAgIHJldHVybiBRKG9iamVjdCkudGhlbih2b2lkIDAsIHJlamVjdGVkKTtcbn07XG5cblByb21pc2UucHJvdG90eXBlLmZhaWwgPSAvLyBYWFggbGVnYWN5XG5Qcm9taXNlLnByb3RvdHlwZVtcImNhdGNoXCJdID0gZnVuY3Rpb24gKHJlamVjdGVkKSB7XG4gICAgcmV0dXJuIHRoaXMudGhlbih2b2lkIDAsIHJlamVjdGVkKTtcbn07XG5cbi8qKlxuICogQXR0YWNoZXMgYSBsaXN0ZW5lciB0aGF0IGNhbiByZXNwb25kIHRvIHByb2dyZXNzIG5vdGlmaWNhdGlvbnMgZnJvbSBhXG4gKiBwcm9taXNlJ3Mgb3JpZ2luYXRpbmcgZGVmZXJyZWQuIFRoaXMgbGlzdGVuZXIgcmVjZWl2ZXMgdGhlIGV4YWN0IGFyZ3VtZW50c1xuICogcGFzc2VkIHRvIGBgZGVmZXJyZWQubm90aWZ5YGAuXG4gKiBAcGFyYW0ge0FueSp9IHByb21pc2UgZm9yIHNvbWV0aGluZ1xuICogQHBhcmFtIHtGdW5jdGlvbn0gY2FsbGJhY2sgdG8gcmVjZWl2ZSBhbnkgcHJvZ3Jlc3Mgbm90aWZpY2F0aW9uc1xuICogQHJldHVybnMgdGhlIGdpdmVuIHByb21pc2UsIHVuY2hhbmdlZFxuICovXG5RLnByb2dyZXNzID0gcHJvZ3Jlc3M7XG5mdW5jdGlvbiBwcm9ncmVzcyhvYmplY3QsIHByb2dyZXNzZWQpIHtcbiAgICByZXR1cm4gUShvYmplY3QpLnRoZW4odm9pZCAwLCB2b2lkIDAsIHByb2dyZXNzZWQpO1xufVxuXG5Qcm9taXNlLnByb3RvdHlwZS5wcm9ncmVzcyA9IGZ1bmN0aW9uIChwcm9ncmVzc2VkKSB7XG4gICAgcmV0dXJuIHRoaXMudGhlbih2b2lkIDAsIHZvaWQgMCwgcHJvZ3Jlc3NlZCk7XG59O1xuXG4vKipcbiAqIFByb3ZpZGVzIGFuIG9wcG9ydHVuaXR5IHRvIG9ic2VydmUgdGhlIHNldHRsaW5nIG9mIGEgcHJvbWlzZSxcbiAqIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB0aGUgcHJvbWlzZSBpcyBmdWxmaWxsZWQgb3IgcmVqZWN0ZWQuICBGb3J3YXJkc1xuICogdGhlIHJlc29sdXRpb24gdG8gdGhlIHJldHVybmVkIHByb21pc2Ugd2hlbiB0aGUgY2FsbGJhY2sgaXMgZG9uZS5cbiAqIFRoZSBjYWxsYmFjayBjYW4gcmV0dXJuIGEgcHJvbWlzZSB0byBkZWZlciBjb21wbGV0aW9uLlxuICogQHBhcmFtIHtBbnkqfSBwcm9taXNlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjYWxsYmFjayB0byBvYnNlcnZlIHRoZSByZXNvbHV0aW9uIG9mIHRoZSBnaXZlblxuICogcHJvbWlzZSwgdGFrZXMgbm8gYXJndW1lbnRzLlxuICogQHJldHVybnMgYSBwcm9taXNlIGZvciB0aGUgcmVzb2x1dGlvbiBvZiB0aGUgZ2l2ZW4gcHJvbWlzZSB3aGVuXG4gKiBgYGZpbmBgIGlzIGRvbmUuXG4gKi9cblEuZmluID0gLy8gWFhYIGxlZ2FjeVxuUVtcImZpbmFsbHlcIl0gPSBmdW5jdGlvbiAob2JqZWN0LCBjYWxsYmFjaykge1xuICAgIHJldHVybiBRKG9iamVjdClbXCJmaW5hbGx5XCJdKGNhbGxiYWNrKTtcbn07XG5cblByb21pc2UucHJvdG90eXBlLmZpbiA9IC8vIFhYWCBsZWdhY3lcblByb21pc2UucHJvdG90eXBlW1wiZmluYWxseVwiXSA9IGZ1bmN0aW9uIChjYWxsYmFjaykge1xuICAgIGlmICghY2FsbGJhY2sgfHwgdHlwZW9mIGNhbGxiYWNrLmFwcGx5ICE9PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiUSBjYW4ndCBhcHBseSBmaW5hbGx5IGNhbGxiYWNrXCIpO1xuICAgIH1cbiAgICBjYWxsYmFjayA9IFEoY2FsbGJhY2spO1xuICAgIHJldHVybiB0aGlzLnRoZW4oZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgIHJldHVybiBjYWxsYmFjay5mY2FsbCgpLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICB9KTtcbiAgICB9LCBmdW5jdGlvbiAocmVhc29uKSB7XG4gICAgICAgIC8vIFRPRE8gYXR0ZW1wdCB0byByZWN5Y2xlIHRoZSByZWplY3Rpb24gd2l0aCBcInRoaXNcIi5cbiAgICAgICAgcmV0dXJuIGNhbGxiYWNrLmZjYWxsKCkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB0aHJvdyByZWFzb247XG4gICAgICAgIH0pO1xuICAgIH0pO1xufTtcblxuLyoqXG4gKiBUZXJtaW5hdGVzIGEgY2hhaW4gb2YgcHJvbWlzZXMsIGZvcmNpbmcgcmVqZWN0aW9ucyB0byBiZVxuICogdGhyb3duIGFzIGV4Y2VwdGlvbnMuXG4gKiBAcGFyYW0ge0FueSp9IHByb21pc2UgYXQgdGhlIGVuZCBvZiBhIGNoYWluIG9mIHByb21pc2VzXG4gKiBAcmV0dXJucyBub3RoaW5nXG4gKi9cblEuZG9uZSA9IGZ1bmN0aW9uIChvYmplY3QsIGZ1bGZpbGxlZCwgcmVqZWN0ZWQsIHByb2dyZXNzKSB7XG4gICAgcmV0dXJuIFEob2JqZWN0KS5kb25lKGZ1bGZpbGxlZCwgcmVqZWN0ZWQsIHByb2dyZXNzKTtcbn07XG5cblByb21pc2UucHJvdG90eXBlLmRvbmUgPSBmdW5jdGlvbiAoZnVsZmlsbGVkLCByZWplY3RlZCwgcHJvZ3Jlc3MpIHtcbiAgICB2YXIgb25VbmhhbmRsZWRFcnJvciA9IGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAvLyBmb3J3YXJkIHRvIGEgZnV0dXJlIHR1cm4gc28gdGhhdCBgYHdoZW5gYFxuICAgICAgICAvLyBkb2VzIG5vdCBjYXRjaCBpdCBhbmQgdHVybiBpdCBpbnRvIGEgcmVqZWN0aW9uLlxuICAgICAgICBRLm5leHRUaWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIG1ha2VTdGFja1RyYWNlTG9uZyhlcnJvciwgcHJvbWlzZSk7XG4gICAgICAgICAgICBpZiAoUS5vbmVycm9yKSB7XG4gICAgICAgICAgICAgICAgUS5vbmVycm9yKGVycm9yKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH07XG5cbiAgICAvLyBBdm9pZCB1bm5lY2Vzc2FyeSBgbmV4dFRpY2tgaW5nIHZpYSBhbiB1bm5lY2Vzc2FyeSBgd2hlbmAuXG4gICAgdmFyIHByb21pc2UgPSBmdWxmaWxsZWQgfHwgcmVqZWN0ZWQgfHwgcHJvZ3Jlc3MgP1xuICAgICAgICB0aGlzLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCwgcHJvZ3Jlc3MpIDpcbiAgICAgICAgdGhpcztcblxuICAgIGlmICh0eXBlb2YgcHJvY2VzcyA9PT0gXCJvYmplY3RcIiAmJiBwcm9jZXNzICYmIHByb2Nlc3MuZG9tYWluKSB7XG4gICAgICAgIG9uVW5oYW5kbGVkRXJyb3IgPSBwcm9jZXNzLmRvbWFpbi5iaW5kKG9uVW5oYW5kbGVkRXJyb3IpO1xuICAgIH1cblxuICAgIHByb21pc2UudGhlbih2b2lkIDAsIG9uVW5oYW5kbGVkRXJyb3IpO1xufTtcblxuLyoqXG4gKiBDYXVzZXMgYSBwcm9taXNlIHRvIGJlIHJlamVjdGVkIGlmIGl0IGRvZXMgbm90IGdldCBmdWxmaWxsZWQgYmVmb3JlXG4gKiBzb21lIG1pbGxpc2Vjb25kcyB0aW1lIG91dC5cbiAqIEBwYXJhbSB7QW55Kn0gcHJvbWlzZVxuICogQHBhcmFtIHtOdW1iZXJ9IG1pbGxpc2Vjb25kcyB0aW1lb3V0XG4gKiBAcGFyYW0ge0FueSp9IGN1c3RvbSBlcnJvciBtZXNzYWdlIG9yIEVycm9yIG9iamVjdCAob3B0aW9uYWwpXG4gKiBAcmV0dXJucyBhIHByb21pc2UgZm9yIHRoZSByZXNvbHV0aW9uIG9mIHRoZSBnaXZlbiBwcm9taXNlIGlmIGl0IGlzXG4gKiBmdWxmaWxsZWQgYmVmb3JlIHRoZSB0aW1lb3V0LCBvdGhlcndpc2UgcmVqZWN0ZWQuXG4gKi9cblEudGltZW91dCA9IGZ1bmN0aW9uIChvYmplY3QsIG1zLCBlcnJvcikge1xuICAgIHJldHVybiBRKG9iamVjdCkudGltZW91dChtcywgZXJyb3IpO1xufTtcblxuUHJvbWlzZS5wcm90b3R5cGUudGltZW91dCA9IGZ1bmN0aW9uIChtcywgZXJyb3IpIHtcbiAgICB2YXIgZGVmZXJyZWQgPSBkZWZlcigpO1xuICAgIHZhciB0aW1lb3V0SWQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKCFlcnJvciB8fCBcInN0cmluZ1wiID09PSB0eXBlb2YgZXJyb3IpIHtcbiAgICAgICAgICAgIGVycm9yID0gbmV3IEVycm9yKGVycm9yIHx8IFwiVGltZWQgb3V0IGFmdGVyIFwiICsgbXMgKyBcIiBtc1wiKTtcbiAgICAgICAgICAgIGVycm9yLmNvZGUgPSBcIkVUSU1FRE9VVFwiO1xuICAgICAgICB9XG4gICAgICAgIGRlZmVycmVkLnJlamVjdChlcnJvcik7XG4gICAgfSwgbXMpO1xuXG4gICAgdGhpcy50aGVuKGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dElkKTtcbiAgICAgICAgZGVmZXJyZWQucmVzb2x2ZSh2YWx1ZSk7XG4gICAgfSwgZnVuY3Rpb24gKGV4Y2VwdGlvbikge1xuICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dElkKTtcbiAgICAgICAgZGVmZXJyZWQucmVqZWN0KGV4Y2VwdGlvbik7XG4gICAgfSwgZGVmZXJyZWQubm90aWZ5KTtcblxuICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlO1xufTtcblxuLyoqXG4gKiBSZXR1cm5zIGEgcHJvbWlzZSBmb3IgdGhlIGdpdmVuIHZhbHVlIChvciBwcm9taXNlZCB2YWx1ZSksIHNvbWVcbiAqIG1pbGxpc2Vjb25kcyBhZnRlciBpdCByZXNvbHZlZC4gUGFzc2VzIHJlamVjdGlvbnMgaW1tZWRpYXRlbHkuXG4gKiBAcGFyYW0ge0FueSp9IHByb21pc2VcbiAqIEBwYXJhbSB7TnVtYmVyfSBtaWxsaXNlY29uZHNcbiAqIEByZXR1cm5zIGEgcHJvbWlzZSBmb3IgdGhlIHJlc29sdXRpb24gb2YgdGhlIGdpdmVuIHByb21pc2UgYWZ0ZXIgbWlsbGlzZWNvbmRzXG4gKiB0aW1lIGhhcyBlbGFwc2VkIHNpbmNlIHRoZSByZXNvbHV0aW9uIG9mIHRoZSBnaXZlbiBwcm9taXNlLlxuICogSWYgdGhlIGdpdmVuIHByb21pc2UgcmVqZWN0cywgdGhhdCBpcyBwYXNzZWQgaW1tZWRpYXRlbHkuXG4gKi9cblEuZGVsYXkgPSBmdW5jdGlvbiAob2JqZWN0LCB0aW1lb3V0KSB7XG4gICAgaWYgKHRpbWVvdXQgPT09IHZvaWQgMCkge1xuICAgICAgICB0aW1lb3V0ID0gb2JqZWN0O1xuICAgICAgICBvYmplY3QgPSB2b2lkIDA7XG4gICAgfVxuICAgIHJldHVybiBRKG9iamVjdCkuZGVsYXkodGltZW91dCk7XG59O1xuXG5Qcm9taXNlLnByb3RvdHlwZS5kZWxheSA9IGZ1bmN0aW9uICh0aW1lb3V0KSB7XG4gICAgcmV0dXJuIHRoaXMudGhlbihmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgdmFyIGRlZmVycmVkID0gZGVmZXIoKTtcbiAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBkZWZlcnJlZC5yZXNvbHZlKHZhbHVlKTtcbiAgICAgICAgfSwgdGltZW91dCk7XG4gICAgICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlO1xuICAgIH0pO1xufTtcblxuLyoqXG4gKiBQYXNzZXMgYSBjb250aW51YXRpb24gdG8gYSBOb2RlIGZ1bmN0aW9uLCB3aGljaCBpcyBjYWxsZWQgd2l0aCB0aGUgZ2l2ZW5cbiAqIGFyZ3VtZW50cyBwcm92aWRlZCBhcyBhbiBhcnJheSwgYW5kIHJldHVybnMgYSBwcm9taXNlLlxuICpcbiAqICAgICAgUS5uZmFwcGx5KEZTLnJlYWRGaWxlLCBbX19maWxlbmFtZV0pXG4gKiAgICAgIC50aGVuKGZ1bmN0aW9uIChjb250ZW50KSB7XG4gKiAgICAgIH0pXG4gKlxuICovXG5RLm5mYXBwbHkgPSBmdW5jdGlvbiAoY2FsbGJhY2ssIGFyZ3MpIHtcbiAgICByZXR1cm4gUShjYWxsYmFjaykubmZhcHBseShhcmdzKTtcbn07XG5cblByb21pc2UucHJvdG90eXBlLm5mYXBwbHkgPSBmdW5jdGlvbiAoYXJncykge1xuICAgIHZhciBkZWZlcnJlZCA9IGRlZmVyKCk7XG4gICAgdmFyIG5vZGVBcmdzID0gYXJyYXlfc2xpY2UoYXJncyk7XG4gICAgbm9kZUFyZ3MucHVzaChkZWZlcnJlZC5tYWtlTm9kZVJlc29sdmVyKCkpO1xuICAgIHRoaXMuZmFwcGx5KG5vZGVBcmdzKS5mYWlsKGRlZmVycmVkLnJlamVjdCk7XG4gICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2U7XG59O1xuXG4vKipcbiAqIFBhc3NlcyBhIGNvbnRpbnVhdGlvbiB0byBhIE5vZGUgZnVuY3Rpb24sIHdoaWNoIGlzIGNhbGxlZCB3aXRoIHRoZSBnaXZlblxuICogYXJndW1lbnRzIHByb3ZpZGVkIGluZGl2aWR1YWxseSwgYW5kIHJldHVybnMgYSBwcm9taXNlLlxuICogQGV4YW1wbGVcbiAqIFEubmZjYWxsKEZTLnJlYWRGaWxlLCBfX2ZpbGVuYW1lKVxuICogLnRoZW4oZnVuY3Rpb24gKGNvbnRlbnQpIHtcbiAqIH0pXG4gKlxuICovXG5RLm5mY2FsbCA9IGZ1bmN0aW9uIChjYWxsYmFjayAvKi4uLmFyZ3MqLykge1xuICAgIHZhciBhcmdzID0gYXJyYXlfc2xpY2UoYXJndW1lbnRzLCAxKTtcbiAgICByZXR1cm4gUShjYWxsYmFjaykubmZhcHBseShhcmdzKTtcbn07XG5cblByb21pc2UucHJvdG90eXBlLm5mY2FsbCA9IGZ1bmN0aW9uICgvKi4uLmFyZ3MqLykge1xuICAgIHZhciBub2RlQXJncyA9IGFycmF5X3NsaWNlKGFyZ3VtZW50cyk7XG4gICAgdmFyIGRlZmVycmVkID0gZGVmZXIoKTtcbiAgICBub2RlQXJncy5wdXNoKGRlZmVycmVkLm1ha2VOb2RlUmVzb2x2ZXIoKSk7XG4gICAgdGhpcy5mYXBwbHkobm9kZUFyZ3MpLmZhaWwoZGVmZXJyZWQucmVqZWN0KTtcbiAgICByZXR1cm4gZGVmZXJyZWQucHJvbWlzZTtcbn07XG5cbi8qKlxuICogV3JhcHMgYSBOb2RlSlMgY29udGludWF0aW9uIHBhc3NpbmcgZnVuY3Rpb24gYW5kIHJldHVybnMgYW4gZXF1aXZhbGVudFxuICogdmVyc2lvbiB0aGF0IHJldHVybnMgYSBwcm9taXNlLlxuICogQGV4YW1wbGVcbiAqIFEubmZiaW5kKEZTLnJlYWRGaWxlLCBfX2ZpbGVuYW1lKShcInV0Zi04XCIpXG4gKiAudGhlbihjb25zb2xlLmxvZylcbiAqIC5kb25lKClcbiAqL1xuUS5uZmJpbmQgPVxuUS5kZW5vZGVpZnkgPSBmdW5jdGlvbiAoY2FsbGJhY2sgLyouLi5hcmdzKi8pIHtcbiAgICBpZiAoY2FsbGJhY2sgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJRIGNhbid0IHdyYXAgYW4gdW5kZWZpbmVkIGZ1bmN0aW9uXCIpO1xuICAgIH1cbiAgICB2YXIgYmFzZUFyZ3MgPSBhcnJheV9zbGljZShhcmd1bWVudHMsIDEpO1xuICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBub2RlQXJncyA9IGJhc2VBcmdzLmNvbmNhdChhcnJheV9zbGljZShhcmd1bWVudHMpKTtcbiAgICAgICAgdmFyIGRlZmVycmVkID0gZGVmZXIoKTtcbiAgICAgICAgbm9kZUFyZ3MucHVzaChkZWZlcnJlZC5tYWtlTm9kZVJlc29sdmVyKCkpO1xuICAgICAgICBRKGNhbGxiYWNrKS5mYXBwbHkobm9kZUFyZ3MpLmZhaWwoZGVmZXJyZWQucmVqZWN0KTtcbiAgICAgICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2U7XG4gICAgfTtcbn07XG5cblByb21pc2UucHJvdG90eXBlLm5mYmluZCA9XG5Qcm9taXNlLnByb3RvdHlwZS5kZW5vZGVpZnkgPSBmdW5jdGlvbiAoLyouLi5hcmdzKi8pIHtcbiAgICB2YXIgYXJncyA9IGFycmF5X3NsaWNlKGFyZ3VtZW50cyk7XG4gICAgYXJncy51bnNoaWZ0KHRoaXMpO1xuICAgIHJldHVybiBRLmRlbm9kZWlmeS5hcHBseSh2b2lkIDAsIGFyZ3MpO1xufTtcblxuUS5uYmluZCA9IGZ1bmN0aW9uIChjYWxsYmFjaywgdGhpc3AgLyouLi5hcmdzKi8pIHtcbiAgICB2YXIgYmFzZUFyZ3MgPSBhcnJheV9zbGljZShhcmd1bWVudHMsIDIpO1xuICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBub2RlQXJncyA9IGJhc2VBcmdzLmNvbmNhdChhcnJheV9zbGljZShhcmd1bWVudHMpKTtcbiAgICAgICAgdmFyIGRlZmVycmVkID0gZGVmZXIoKTtcbiAgICAgICAgbm9kZUFyZ3MucHVzaChkZWZlcnJlZC5tYWtlTm9kZVJlc29sdmVyKCkpO1xuICAgICAgICBmdW5jdGlvbiBib3VuZCgpIHtcbiAgICAgICAgICAgIHJldHVybiBjYWxsYmFjay5hcHBseSh0aGlzcCwgYXJndW1lbnRzKTtcbiAgICAgICAgfVxuICAgICAgICBRKGJvdW5kKS5mYXBwbHkobm9kZUFyZ3MpLmZhaWwoZGVmZXJyZWQucmVqZWN0KTtcbiAgICAgICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2U7XG4gICAgfTtcbn07XG5cblByb21pc2UucHJvdG90eXBlLm5iaW5kID0gZnVuY3Rpb24gKC8qdGhpc3AsIC4uLmFyZ3MqLykge1xuICAgIHZhciBhcmdzID0gYXJyYXlfc2xpY2UoYXJndW1lbnRzLCAwKTtcbiAgICBhcmdzLnVuc2hpZnQodGhpcyk7XG4gICAgcmV0dXJuIFEubmJpbmQuYXBwbHkodm9pZCAwLCBhcmdzKTtcbn07XG5cbi8qKlxuICogQ2FsbHMgYSBtZXRob2Qgb2YgYSBOb2RlLXN0eWxlIG9iamVjdCB0aGF0IGFjY2VwdHMgYSBOb2RlLXN0eWxlXG4gKiBjYWxsYmFjayB3aXRoIGEgZ2l2ZW4gYXJyYXkgb2YgYXJndW1lbnRzLCBwbHVzIGEgcHJvdmlkZWQgY2FsbGJhY2suXG4gKiBAcGFyYW0gb2JqZWN0IGFuIG9iamVjdCB0aGF0IGhhcyB0aGUgbmFtZWQgbWV0aG9kXG4gKiBAcGFyYW0ge1N0cmluZ30gbmFtZSBuYW1lIG9mIHRoZSBtZXRob2Qgb2Ygb2JqZWN0XG4gKiBAcGFyYW0ge0FycmF5fSBhcmdzIGFyZ3VtZW50cyB0byBwYXNzIHRvIHRoZSBtZXRob2Q7IHRoZSBjYWxsYmFja1xuICogd2lsbCBiZSBwcm92aWRlZCBieSBRIGFuZCBhcHBlbmRlZCB0byB0aGVzZSBhcmd1bWVudHMuXG4gKiBAcmV0dXJucyBhIHByb21pc2UgZm9yIHRoZSB2YWx1ZSBvciBlcnJvclxuICovXG5RLm5tYXBwbHkgPSAvLyBYWFggQXMgcHJvcG9zZWQgYnkgXCJSZWRzYW5kcm9cIlxuUS5ucG9zdCA9IGZ1bmN0aW9uIChvYmplY3QsIG5hbWUsIGFyZ3MpIHtcbiAgICByZXR1cm4gUShvYmplY3QpLm5wb3N0KG5hbWUsIGFyZ3MpO1xufTtcblxuUHJvbWlzZS5wcm90b3R5cGUubm1hcHBseSA9IC8vIFhYWCBBcyBwcm9wb3NlZCBieSBcIlJlZHNhbmRyb1wiXG5Qcm9taXNlLnByb3RvdHlwZS5ucG9zdCA9IGZ1bmN0aW9uIChuYW1lLCBhcmdzKSB7XG4gICAgdmFyIG5vZGVBcmdzID0gYXJyYXlfc2xpY2UoYXJncyB8fCBbXSk7XG4gICAgdmFyIGRlZmVycmVkID0gZGVmZXIoKTtcbiAgICBub2RlQXJncy5wdXNoKGRlZmVycmVkLm1ha2VOb2RlUmVzb2x2ZXIoKSk7XG4gICAgdGhpcy5kaXNwYXRjaChcInBvc3RcIiwgW25hbWUsIG5vZGVBcmdzXSkuZmFpbChkZWZlcnJlZC5yZWplY3QpO1xuICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlO1xufTtcblxuLyoqXG4gKiBDYWxscyBhIG1ldGhvZCBvZiBhIE5vZGUtc3R5bGUgb2JqZWN0IHRoYXQgYWNjZXB0cyBhIE5vZGUtc3R5bGVcbiAqIGNhbGxiYWNrLCBmb3J3YXJkaW5nIHRoZSBnaXZlbiB2YXJpYWRpYyBhcmd1bWVudHMsIHBsdXMgYSBwcm92aWRlZFxuICogY2FsbGJhY2sgYXJndW1lbnQuXG4gKiBAcGFyYW0gb2JqZWN0IGFuIG9iamVjdCB0aGF0IGhhcyB0aGUgbmFtZWQgbWV0aG9kXG4gKiBAcGFyYW0ge1N0cmluZ30gbmFtZSBuYW1lIG9mIHRoZSBtZXRob2Qgb2Ygb2JqZWN0XG4gKiBAcGFyYW0gLi4uYXJncyBhcmd1bWVudHMgdG8gcGFzcyB0byB0aGUgbWV0aG9kOyB0aGUgY2FsbGJhY2sgd2lsbFxuICogYmUgcHJvdmlkZWQgYnkgUSBhbmQgYXBwZW5kZWQgdG8gdGhlc2UgYXJndW1lbnRzLlxuICogQHJldHVybnMgYSBwcm9taXNlIGZvciB0aGUgdmFsdWUgb3IgZXJyb3JcbiAqL1xuUS5uc2VuZCA9IC8vIFhYWCBCYXNlZCBvbiBNYXJrIE1pbGxlcidzIHByb3Bvc2VkIFwic2VuZFwiXG5RLm5tY2FsbCA9IC8vIFhYWCBCYXNlZCBvbiBcIlJlZHNhbmRybydzXCIgcHJvcG9zYWxcblEubmludm9rZSA9IGZ1bmN0aW9uIChvYmplY3QsIG5hbWUgLyouLi5hcmdzKi8pIHtcbiAgICB2YXIgbm9kZUFyZ3MgPSBhcnJheV9zbGljZShhcmd1bWVudHMsIDIpO1xuICAgIHZhciBkZWZlcnJlZCA9IGRlZmVyKCk7XG4gICAgbm9kZUFyZ3MucHVzaChkZWZlcnJlZC5tYWtlTm9kZVJlc29sdmVyKCkpO1xuICAgIFEob2JqZWN0KS5kaXNwYXRjaChcInBvc3RcIiwgW25hbWUsIG5vZGVBcmdzXSkuZmFpbChkZWZlcnJlZC5yZWplY3QpO1xuICAgIHJldHVybiBkZWZlcnJlZC5wcm9taXNlO1xufTtcblxuUHJvbWlzZS5wcm90b3R5cGUubnNlbmQgPSAvLyBYWFggQmFzZWQgb24gTWFyayBNaWxsZXIncyBwcm9wb3NlZCBcInNlbmRcIlxuUHJvbWlzZS5wcm90b3R5cGUubm1jYWxsID0gLy8gWFhYIEJhc2VkIG9uIFwiUmVkc2FuZHJvJ3NcIiBwcm9wb3NhbFxuUHJvbWlzZS5wcm90b3R5cGUubmludm9rZSA9IGZ1bmN0aW9uIChuYW1lIC8qLi4uYXJncyovKSB7XG4gICAgdmFyIG5vZGVBcmdzID0gYXJyYXlfc2xpY2UoYXJndW1lbnRzLCAxKTtcbiAgICB2YXIgZGVmZXJyZWQgPSBkZWZlcigpO1xuICAgIG5vZGVBcmdzLnB1c2goZGVmZXJyZWQubWFrZU5vZGVSZXNvbHZlcigpKTtcbiAgICB0aGlzLmRpc3BhdGNoKFwicG9zdFwiLCBbbmFtZSwgbm9kZUFyZ3NdKS5mYWlsKGRlZmVycmVkLnJlamVjdCk7XG4gICAgcmV0dXJuIGRlZmVycmVkLnByb21pc2U7XG59O1xuXG4vKipcbiAqIElmIGEgZnVuY3Rpb24gd291bGQgbGlrZSB0byBzdXBwb3J0IGJvdGggTm9kZSBjb250aW51YXRpb24tcGFzc2luZy1zdHlsZSBhbmRcbiAqIHByb21pc2UtcmV0dXJuaW5nLXN0eWxlLCBpdCBjYW4gZW5kIGl0cyBpbnRlcm5hbCBwcm9taXNlIGNoYWluIHdpdGhcbiAqIGBub2RlaWZ5KG5vZGViYWNrKWAsIGZvcndhcmRpbmcgdGhlIG9wdGlvbmFsIG5vZGViYWNrIGFyZ3VtZW50LiAgSWYgdGhlIHVzZXJcbiAqIGVsZWN0cyB0byB1c2UgYSBub2RlYmFjaywgdGhlIHJlc3VsdCB3aWxsIGJlIHNlbnQgdGhlcmUuICBJZiB0aGV5IGRvIG5vdFxuICogcGFzcyBhIG5vZGViYWNrLCB0aGV5IHdpbGwgcmVjZWl2ZSB0aGUgcmVzdWx0IHByb21pc2UuXG4gKiBAcGFyYW0gb2JqZWN0IGEgcmVzdWx0IChvciBhIHByb21pc2UgZm9yIGEgcmVzdWx0KVxuICogQHBhcmFtIHtGdW5jdGlvbn0gbm9kZWJhY2sgYSBOb2RlLmpzLXN0eWxlIGNhbGxiYWNrXG4gKiBAcmV0dXJucyBlaXRoZXIgdGhlIHByb21pc2Ugb3Igbm90aGluZ1xuICovXG5RLm5vZGVpZnkgPSBub2RlaWZ5O1xuZnVuY3Rpb24gbm9kZWlmeShvYmplY3QsIG5vZGViYWNrKSB7XG4gICAgcmV0dXJuIFEob2JqZWN0KS5ub2RlaWZ5KG5vZGViYWNrKTtcbn1cblxuUHJvbWlzZS5wcm90b3R5cGUubm9kZWlmeSA9IGZ1bmN0aW9uIChub2RlYmFjaykge1xuICAgIGlmIChub2RlYmFjaykge1xuICAgICAgICB0aGlzLnRoZW4oZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICBRLm5leHRUaWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBub2RlYmFjayhudWxsLCB2YWx1ZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSwgZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgICBRLm5leHRUaWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBub2RlYmFjayhlcnJvcik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxufTtcblxuUS5ub0NvbmZsaWN0ID0gZnVuY3Rpb24oKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiUS5ub0NvbmZsaWN0IG9ubHkgd29ya3Mgd2hlbiBRIGlzIHVzZWQgYXMgYSBnbG9iYWxcIik7XG59O1xuXG4vLyBBbGwgY29kZSBiZWZvcmUgdGhpcyBwb2ludCB3aWxsIGJlIGZpbHRlcmVkIGZyb20gc3RhY2sgdHJhY2VzLlxudmFyIHFFbmRpbmdMaW5lID0gY2FwdHVyZUxpbmUoKTtcblxucmV0dXJuIFE7XG5cbn0pO1xuIiwiJ3VzZSBzdHJpY3QnXG5cbmZ1bmN0aW9uIG9sZEJyb3dzZXIgKCkge1xuICB0aHJvdyBuZXcgRXJyb3IoJ3NlY3VyZSByYW5kb20gbnVtYmVyIGdlbmVyYXRpb24gbm90IHN1cHBvcnRlZCBieSB0aGlzIGJyb3dzZXJcXG51c2UgY2hyb21lLCBGaXJlRm94IG9yIEludGVybmV0IEV4cGxvcmVyIDExJylcbn1cblxudmFyIGNyeXB0byA9IGdsb2JhbC5jcnlwdG8gfHwgZ2xvYmFsLm1zQ3J5cHRvXG5cbmlmIChjcnlwdG8gJiYgY3J5cHRvLmdldFJhbmRvbVZhbHVlcykge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJhbmRvbUJ5dGVzXG59IGVsc2Uge1xuICBtb2R1bGUuZXhwb3J0cyA9IG9sZEJyb3dzZXJcbn1cblxuZnVuY3Rpb24gcmFuZG9tQnl0ZXMgKHNpemUsIGNiKSB7XG4gIC8vIHBoYW50b21qcyBuZWVkcyB0byB0aHJvd1xuICBpZiAoc2l6ZSA+IDY1NTM2KSB0aHJvdyBuZXcgRXJyb3IoJ3JlcXVlc3RlZCB0b28gbWFueSByYW5kb20gYnl0ZXMnKVxuICAvLyBpbiBjYXNlIGJyb3dzZXJpZnkgIGlzbid0IHVzaW5nIHRoZSBVaW50OEFycmF5IHZlcnNpb25cbiAgdmFyIHJhd0J5dGVzID0gbmV3IGdsb2JhbC5VaW50OEFycmF5KHNpemUpXG5cbiAgLy8gVGhpcyB3aWxsIG5vdCB3b3JrIGluIG9sZGVyIGJyb3dzZXJzLlxuICAvLyBTZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL3dpbmRvdy5jcnlwdG8uZ2V0UmFuZG9tVmFsdWVzXG4gIGlmIChzaXplID4gMCkgeyAgLy8gZ2V0UmFuZG9tVmFsdWVzIGZhaWxzIG9uIElFIGlmIHNpemUgPT0gMFxuICAgIGNyeXB0by5nZXRSYW5kb21WYWx1ZXMocmF3Qnl0ZXMpXG4gIH1cbiAgLy8gcGhhbnRvbWpzIGRvZXNuJ3QgbGlrZSBhIGJ1ZmZlciBiZWluZyBwYXNzZWQgaGVyZVxuICB2YXIgYnl0ZXMgPSBuZXcgQnVmZmVyKHJhd0J5dGVzLmJ1ZmZlcilcblxuICBpZiAodHlwZW9mIGNiID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIHByb2Nlc3MubmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgICAgY2IobnVsbCwgYnl0ZXMpXG4gICAgfSlcbiAgfVxuXG4gIHJldHVybiBieXRlc1xufVxuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2xpYi9fc3RyZWFtX2R1cGxleC5qcycpO1xuIiwiLy8gYSBkdXBsZXggc3RyZWFtIGlzIGp1c3QgYSBzdHJlYW0gdGhhdCBpcyBib3RoIHJlYWRhYmxlIGFuZCB3cml0YWJsZS5cbi8vIFNpbmNlIEpTIGRvZXNuJ3QgaGF2ZSBtdWx0aXBsZSBwcm90b3R5cGFsIGluaGVyaXRhbmNlLCB0aGlzIGNsYXNzXG4vLyBwcm90b3R5cGFsbHkgaW5oZXJpdHMgZnJvbSBSZWFkYWJsZSwgYW5kIHRoZW4gcGFyYXNpdGljYWxseSBmcm9tXG4vLyBXcml0YWJsZS5cblxuJ3VzZSBzdHJpY3QnO1xuXG4vKjxyZXBsYWNlbWVudD4qL1xuXG52YXIgb2JqZWN0S2V5cyA9IE9iamVjdC5rZXlzIHx8IGZ1bmN0aW9uIChvYmopIHtcbiAgdmFyIGtleXMgPSBbXTtcbiAgZm9yICh2YXIga2V5IGluIG9iaikge1xuICAgIGtleXMucHVzaChrZXkpO1xuICB9cmV0dXJuIGtleXM7XG59O1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbm1vZHVsZS5leHBvcnRzID0gRHVwbGV4O1xuXG4vKjxyZXBsYWNlbWVudD4qL1xudmFyIHByb2Nlc3NOZXh0VGljayA9IHJlcXVpcmUoJ3Byb2Nlc3MtbmV4dGljay1hcmdzJyk7XG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxuLyo8cmVwbGFjZW1lbnQ+Ki9cbnZhciB1dGlsID0gcmVxdWlyZSgnY29yZS11dGlsLWlzJyk7XG51dGlsLmluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG52YXIgUmVhZGFibGUgPSByZXF1aXJlKCcuL19zdHJlYW1fcmVhZGFibGUnKTtcbnZhciBXcml0YWJsZSA9IHJlcXVpcmUoJy4vX3N0cmVhbV93cml0YWJsZScpO1xuXG51dGlsLmluaGVyaXRzKER1cGxleCwgUmVhZGFibGUpO1xuXG52YXIga2V5cyA9IG9iamVjdEtleXMoV3JpdGFibGUucHJvdG90eXBlKTtcbmZvciAodmFyIHYgPSAwOyB2IDwga2V5cy5sZW5ndGg7IHYrKykge1xuICB2YXIgbWV0aG9kID0ga2V5c1t2XTtcbiAgaWYgKCFEdXBsZXgucHJvdG90eXBlW21ldGhvZF0pIER1cGxleC5wcm90b3R5cGVbbWV0aG9kXSA9IFdyaXRhYmxlLnByb3RvdHlwZVttZXRob2RdO1xufVxuXG5mdW5jdGlvbiBEdXBsZXgob3B0aW9ucykge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgRHVwbGV4KSkgcmV0dXJuIG5ldyBEdXBsZXgob3B0aW9ucyk7XG5cbiAgUmVhZGFibGUuY2FsbCh0aGlzLCBvcHRpb25zKTtcbiAgV3JpdGFibGUuY2FsbCh0aGlzLCBvcHRpb25zKTtcblxuICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLnJlYWRhYmxlID09PSBmYWxzZSkgdGhpcy5yZWFkYWJsZSA9IGZhbHNlO1xuXG4gIGlmIChvcHRpb25zICYmIG9wdGlvbnMud3JpdGFibGUgPT09IGZhbHNlKSB0aGlzLndyaXRhYmxlID0gZmFsc2U7XG5cbiAgdGhpcy5hbGxvd0hhbGZPcGVuID0gdHJ1ZTtcbiAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5hbGxvd0hhbGZPcGVuID09PSBmYWxzZSkgdGhpcy5hbGxvd0hhbGZPcGVuID0gZmFsc2U7XG5cbiAgdGhpcy5vbmNlKCdlbmQnLCBvbmVuZCk7XG59XG5cbi8vIHRoZSBuby1oYWxmLW9wZW4gZW5mb3JjZXJcbmZ1bmN0aW9uIG9uZW5kKCkge1xuICAvLyBpZiB3ZSBhbGxvdyBoYWxmLW9wZW4gc3RhdGUsIG9yIGlmIHRoZSB3cml0YWJsZSBzaWRlIGVuZGVkLFxuICAvLyB0aGVuIHdlJ3JlIG9rLlxuICBpZiAodGhpcy5hbGxvd0hhbGZPcGVuIHx8IHRoaXMuX3dyaXRhYmxlU3RhdGUuZW5kZWQpIHJldHVybjtcblxuICAvLyBubyBtb3JlIGRhdGEgY2FuIGJlIHdyaXR0ZW4uXG4gIC8vIEJ1dCBhbGxvdyBtb3JlIHdyaXRlcyB0byBoYXBwZW4gaW4gdGhpcyB0aWNrLlxuICBwcm9jZXNzTmV4dFRpY2sob25FbmROVCwgdGhpcyk7XG59XG5cbmZ1bmN0aW9uIG9uRW5kTlQoc2VsZikge1xuICBzZWxmLmVuZCgpO1xufVxuXG5mdW5jdGlvbiBmb3JFYWNoKHhzLCBmKSB7XG4gIGZvciAodmFyIGkgPSAwLCBsID0geHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgZih4c1tpXSwgaSk7XG4gIH1cbn0iLCIvLyBhIHBhc3N0aHJvdWdoIHN0cmVhbS5cbi8vIGJhc2ljYWxseSBqdXN0IHRoZSBtb3N0IG1pbmltYWwgc29ydCBvZiBUcmFuc2Zvcm0gc3RyZWFtLlxuLy8gRXZlcnkgd3JpdHRlbiBjaHVuayBnZXRzIG91dHB1dCBhcy1pcy5cblxuJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFBhc3NUaHJvdWdoO1xuXG52YXIgVHJhbnNmb3JtID0gcmVxdWlyZSgnLi9fc3RyZWFtX3RyYW5zZm9ybScpO1xuXG4vKjxyZXBsYWNlbWVudD4qL1xudmFyIHV0aWwgPSByZXF1aXJlKCdjb3JlLXV0aWwtaXMnKTtcbnV0aWwuaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpO1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbnV0aWwuaW5oZXJpdHMoUGFzc1Rocm91Z2gsIFRyYW5zZm9ybSk7XG5cbmZ1bmN0aW9uIFBhc3NUaHJvdWdoKG9wdGlvbnMpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFBhc3NUaHJvdWdoKSkgcmV0dXJuIG5ldyBQYXNzVGhyb3VnaChvcHRpb25zKTtcblxuICBUcmFuc2Zvcm0uY2FsbCh0aGlzLCBvcHRpb25zKTtcbn1cblxuUGFzc1Rocm91Z2gucHJvdG90eXBlLl90cmFuc2Zvcm0gPSBmdW5jdGlvbiAoY2h1bmssIGVuY29kaW5nLCBjYikge1xuICBjYihudWxsLCBjaHVuayk7XG59OyIsIid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFkYWJsZTtcblxuLyo8cmVwbGFjZW1lbnQ+Ki9cbnZhciBwcm9jZXNzTmV4dFRpY2sgPSByZXF1aXJlKCdwcm9jZXNzLW5leHRpY2stYXJncycpO1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbi8qPHJlcGxhY2VtZW50PiovXG52YXIgaXNBcnJheSA9IHJlcXVpcmUoJ2lzYXJyYXknKTtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG4vKjxyZXBsYWNlbWVudD4qL1xudmFyIER1cGxleDtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG5SZWFkYWJsZS5SZWFkYWJsZVN0YXRlID0gUmVhZGFibGVTdGF0ZTtcblxuLyo8cmVwbGFjZW1lbnQ+Ki9cbnZhciBFRSA9IHJlcXVpcmUoJ2V2ZW50cycpLkV2ZW50RW1pdHRlcjtcblxudmFyIEVFbGlzdGVuZXJDb3VudCA9IGZ1bmN0aW9uIChlbWl0dGVyLCB0eXBlKSB7XG4gIHJldHVybiBlbWl0dGVyLmxpc3RlbmVycyh0eXBlKS5sZW5ndGg7XG59O1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbi8qPHJlcGxhY2VtZW50PiovXG52YXIgU3RyZWFtID0gcmVxdWlyZSgnLi9pbnRlcm5hbC9zdHJlYW1zL3N0cmVhbScpO1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbnZhciBCdWZmZXIgPSByZXF1aXJlKCdidWZmZXInKS5CdWZmZXI7XG4vKjxyZXBsYWNlbWVudD4qL1xudmFyIGJ1ZmZlclNoaW0gPSByZXF1aXJlKCdidWZmZXItc2hpbXMnKTtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG4vKjxyZXBsYWNlbWVudD4qL1xudmFyIHV0aWwgPSByZXF1aXJlKCdjb3JlLXV0aWwtaXMnKTtcbnV0aWwuaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpO1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbi8qPHJlcGxhY2VtZW50PiovXG52YXIgZGVidWdVdGlsID0gcmVxdWlyZSgndXRpbCcpO1xudmFyIGRlYnVnID0gdm9pZCAwO1xuaWYgKGRlYnVnVXRpbCAmJiBkZWJ1Z1V0aWwuZGVidWdsb2cpIHtcbiAgZGVidWcgPSBkZWJ1Z1V0aWwuZGVidWdsb2coJ3N0cmVhbScpO1xufSBlbHNlIHtcbiAgZGVidWcgPSBmdW5jdGlvbiAoKSB7fTtcbn1cbi8qPC9yZXBsYWNlbWVudD4qL1xuXG52YXIgQnVmZmVyTGlzdCA9IHJlcXVpcmUoJy4vaW50ZXJuYWwvc3RyZWFtcy9CdWZmZXJMaXN0Jyk7XG52YXIgU3RyaW5nRGVjb2RlcjtcblxudXRpbC5pbmhlcml0cyhSZWFkYWJsZSwgU3RyZWFtKTtcblxudmFyIGtQcm94eUV2ZW50cyA9IFsnZXJyb3InLCAnY2xvc2UnLCAnZGVzdHJveScsICdwYXVzZScsICdyZXN1bWUnXTtcblxuZnVuY3Rpb24gcHJlcGVuZExpc3RlbmVyKGVtaXR0ZXIsIGV2ZW50LCBmbikge1xuICAvLyBTYWRseSB0aGlzIGlzIG5vdCBjYWNoZWFibGUgYXMgc29tZSBsaWJyYXJpZXMgYnVuZGxlIHRoZWlyIG93blxuICAvLyBldmVudCBlbWl0dGVyIGltcGxlbWVudGF0aW9uIHdpdGggdGhlbS5cbiAgaWYgKHR5cGVvZiBlbWl0dGVyLnByZXBlbmRMaXN0ZW5lciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBlbWl0dGVyLnByZXBlbmRMaXN0ZW5lcihldmVudCwgZm4pO1xuICB9IGVsc2Uge1xuICAgIC8vIFRoaXMgaXMgYSBoYWNrIHRvIG1ha2Ugc3VyZSB0aGF0IG91ciBlcnJvciBoYW5kbGVyIGlzIGF0dGFjaGVkIGJlZm9yZSBhbnlcbiAgICAvLyB1c2VybGFuZCBvbmVzLiAgTkVWRVIgRE8gVEhJUy4gVGhpcyBpcyBoZXJlIG9ubHkgYmVjYXVzZSB0aGlzIGNvZGUgbmVlZHNcbiAgICAvLyB0byBjb250aW51ZSB0byB3b3JrIHdpdGggb2xkZXIgdmVyc2lvbnMgb2YgTm9kZS5qcyB0aGF0IGRvIG5vdCBpbmNsdWRlXG4gICAgLy8gdGhlIHByZXBlbmRMaXN0ZW5lcigpIG1ldGhvZC4gVGhlIGdvYWwgaXMgdG8gZXZlbnR1YWxseSByZW1vdmUgdGhpcyBoYWNrLlxuICAgIGlmICghZW1pdHRlci5fZXZlbnRzIHx8ICFlbWl0dGVyLl9ldmVudHNbZXZlbnRdKSBlbWl0dGVyLm9uKGV2ZW50LCBmbik7ZWxzZSBpZiAoaXNBcnJheShlbWl0dGVyLl9ldmVudHNbZXZlbnRdKSkgZW1pdHRlci5fZXZlbnRzW2V2ZW50XS51bnNoaWZ0KGZuKTtlbHNlIGVtaXR0ZXIuX2V2ZW50c1tldmVudF0gPSBbZm4sIGVtaXR0ZXIuX2V2ZW50c1tldmVudF1dO1xuICB9XG59XG5cbmZ1bmN0aW9uIFJlYWRhYmxlU3RhdGUob3B0aW9ucywgc3RyZWFtKSB7XG4gIER1cGxleCA9IER1cGxleCB8fCByZXF1aXJlKCcuL19zdHJlYW1fZHVwbGV4Jyk7XG5cbiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG5cbiAgLy8gb2JqZWN0IHN0cmVhbSBmbGFnLiBVc2VkIHRvIG1ha2UgcmVhZChuKSBpZ25vcmUgbiBhbmQgdG9cbiAgLy8gbWFrZSBhbGwgdGhlIGJ1ZmZlciBtZXJnaW5nIGFuZCBsZW5ndGggY2hlY2tzIGdvIGF3YXlcbiAgdGhpcy5vYmplY3RNb2RlID0gISFvcHRpb25zLm9iamVjdE1vZGU7XG5cbiAgaWYgKHN0cmVhbSBpbnN0YW5jZW9mIER1cGxleCkgdGhpcy5vYmplY3RNb2RlID0gdGhpcy5vYmplY3RNb2RlIHx8ICEhb3B0aW9ucy5yZWFkYWJsZU9iamVjdE1vZGU7XG5cbiAgLy8gdGhlIHBvaW50IGF0IHdoaWNoIGl0IHN0b3BzIGNhbGxpbmcgX3JlYWQoKSB0byBmaWxsIHRoZSBidWZmZXJcbiAgLy8gTm90ZTogMCBpcyBhIHZhbGlkIHZhbHVlLCBtZWFucyBcImRvbid0IGNhbGwgX3JlYWQgcHJlZW1wdGl2ZWx5IGV2ZXJcIlxuICB2YXIgaHdtID0gb3B0aW9ucy5oaWdoV2F0ZXJNYXJrO1xuICB2YXIgZGVmYXVsdEh3bSA9IHRoaXMub2JqZWN0TW9kZSA/IDE2IDogMTYgKiAxMDI0O1xuICB0aGlzLmhpZ2hXYXRlck1hcmsgPSBod20gfHwgaHdtID09PSAwID8gaHdtIDogZGVmYXVsdEh3bTtcblxuICAvLyBjYXN0IHRvIGludHMuXG4gIHRoaXMuaGlnaFdhdGVyTWFyayA9IH5+dGhpcy5oaWdoV2F0ZXJNYXJrO1xuXG4gIC8vIEEgbGlua2VkIGxpc3QgaXMgdXNlZCB0byBzdG9yZSBkYXRhIGNodW5rcyBpbnN0ZWFkIG9mIGFuIGFycmF5IGJlY2F1c2UgdGhlXG4gIC8vIGxpbmtlZCBsaXN0IGNhbiByZW1vdmUgZWxlbWVudHMgZnJvbSB0aGUgYmVnaW5uaW5nIGZhc3RlciB0aGFuXG4gIC8vIGFycmF5LnNoaWZ0KClcbiAgdGhpcy5idWZmZXIgPSBuZXcgQnVmZmVyTGlzdCgpO1xuICB0aGlzLmxlbmd0aCA9IDA7XG4gIHRoaXMucGlwZXMgPSBudWxsO1xuICB0aGlzLnBpcGVzQ291bnQgPSAwO1xuICB0aGlzLmZsb3dpbmcgPSBudWxsO1xuICB0aGlzLmVuZGVkID0gZmFsc2U7XG4gIHRoaXMuZW5kRW1pdHRlZCA9IGZhbHNlO1xuICB0aGlzLnJlYWRpbmcgPSBmYWxzZTtcblxuICAvLyBhIGZsYWcgdG8gYmUgYWJsZSB0byB0ZWxsIGlmIHRoZSBvbndyaXRlIGNiIGlzIGNhbGxlZCBpbW1lZGlhdGVseSxcbiAgLy8gb3Igb24gYSBsYXRlciB0aWNrLiAgV2Ugc2V0IHRoaXMgdG8gdHJ1ZSBhdCBmaXJzdCwgYmVjYXVzZSBhbnlcbiAgLy8gYWN0aW9ucyB0aGF0IHNob3VsZG4ndCBoYXBwZW4gdW50aWwgXCJsYXRlclwiIHNob3VsZCBnZW5lcmFsbHkgYWxzb1xuICAvLyBub3QgaGFwcGVuIGJlZm9yZSB0aGUgZmlyc3Qgd3JpdGUgY2FsbC5cbiAgdGhpcy5zeW5jID0gdHJ1ZTtcblxuICAvLyB3aGVuZXZlciB3ZSByZXR1cm4gbnVsbCwgdGhlbiB3ZSBzZXQgYSBmbGFnIHRvIHNheVxuICAvLyB0aGF0IHdlJ3JlIGF3YWl0aW5nIGEgJ3JlYWRhYmxlJyBldmVudCBlbWlzc2lvbi5cbiAgdGhpcy5uZWVkUmVhZGFibGUgPSBmYWxzZTtcbiAgdGhpcy5lbWl0dGVkUmVhZGFibGUgPSBmYWxzZTtcbiAgdGhpcy5yZWFkYWJsZUxpc3RlbmluZyA9IGZhbHNlO1xuICB0aGlzLnJlc3VtZVNjaGVkdWxlZCA9IGZhbHNlO1xuXG4gIC8vIENyeXB0byBpcyBraW5kIG9mIG9sZCBhbmQgY3J1c3R5LiAgSGlzdG9yaWNhbGx5LCBpdHMgZGVmYXVsdCBzdHJpbmdcbiAgLy8gZW5jb2RpbmcgaXMgJ2JpbmFyeScgc28gd2UgaGF2ZSB0byBtYWtlIHRoaXMgY29uZmlndXJhYmxlLlxuICAvLyBFdmVyeXRoaW5nIGVsc2UgaW4gdGhlIHVuaXZlcnNlIHVzZXMgJ3V0ZjgnLCB0aG91Z2guXG4gIHRoaXMuZGVmYXVsdEVuY29kaW5nID0gb3B0aW9ucy5kZWZhdWx0RW5jb2RpbmcgfHwgJ3V0ZjgnO1xuXG4gIC8vIHdoZW4gcGlwaW5nLCB3ZSBvbmx5IGNhcmUgYWJvdXQgJ3JlYWRhYmxlJyBldmVudHMgdGhhdCBoYXBwZW5cbiAgLy8gYWZ0ZXIgcmVhZCgpaW5nIGFsbCB0aGUgYnl0ZXMgYW5kIG5vdCBnZXR0aW5nIGFueSBwdXNoYmFjay5cbiAgdGhpcy5yYW5PdXQgPSBmYWxzZTtcblxuICAvLyB0aGUgbnVtYmVyIG9mIHdyaXRlcnMgdGhhdCBhcmUgYXdhaXRpbmcgYSBkcmFpbiBldmVudCBpbiAucGlwZSgpc1xuICB0aGlzLmF3YWl0RHJhaW4gPSAwO1xuXG4gIC8vIGlmIHRydWUsIGEgbWF5YmVSZWFkTW9yZSBoYXMgYmVlbiBzY2hlZHVsZWRcbiAgdGhpcy5yZWFkaW5nTW9yZSA9IGZhbHNlO1xuXG4gIHRoaXMuZGVjb2RlciA9IG51bGw7XG4gIHRoaXMuZW5jb2RpbmcgPSBudWxsO1xuICBpZiAob3B0aW9ucy5lbmNvZGluZykge1xuICAgIGlmICghU3RyaW5nRGVjb2RlcikgU3RyaW5nRGVjb2RlciA9IHJlcXVpcmUoJ3N0cmluZ19kZWNvZGVyLycpLlN0cmluZ0RlY29kZXI7XG4gICAgdGhpcy5kZWNvZGVyID0gbmV3IFN0cmluZ0RlY29kZXIob3B0aW9ucy5lbmNvZGluZyk7XG4gICAgdGhpcy5lbmNvZGluZyA9IG9wdGlvbnMuZW5jb2Rpbmc7XG4gIH1cbn1cblxuZnVuY3Rpb24gUmVhZGFibGUob3B0aW9ucykge1xuICBEdXBsZXggPSBEdXBsZXggfHwgcmVxdWlyZSgnLi9fc3RyZWFtX2R1cGxleCcpO1xuXG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBSZWFkYWJsZSkpIHJldHVybiBuZXcgUmVhZGFibGUob3B0aW9ucyk7XG5cbiAgdGhpcy5fcmVhZGFibGVTdGF0ZSA9IG5ldyBSZWFkYWJsZVN0YXRlKG9wdGlvbnMsIHRoaXMpO1xuXG4gIC8vIGxlZ2FjeVxuICB0aGlzLnJlYWRhYmxlID0gdHJ1ZTtcblxuICBpZiAob3B0aW9ucyAmJiB0eXBlb2Ygb3B0aW9ucy5yZWFkID09PSAnZnVuY3Rpb24nKSB0aGlzLl9yZWFkID0gb3B0aW9ucy5yZWFkO1xuXG4gIFN0cmVhbS5jYWxsKHRoaXMpO1xufVxuXG4vLyBNYW51YWxseSBzaG92ZSBzb21ldGhpbmcgaW50byB0aGUgcmVhZCgpIGJ1ZmZlci5cbi8vIFRoaXMgcmV0dXJucyB0cnVlIGlmIHRoZSBoaWdoV2F0ZXJNYXJrIGhhcyBub3QgYmVlbiBoaXQgeWV0LFxuLy8gc2ltaWxhciB0byBob3cgV3JpdGFibGUud3JpdGUoKSByZXR1cm5zIHRydWUgaWYgeW91IHNob3VsZFxuLy8gd3JpdGUoKSBzb21lIG1vcmUuXG5SZWFkYWJsZS5wcm90b3R5cGUucHVzaCA9IGZ1bmN0aW9uIChjaHVuaywgZW5jb2RpbmcpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fcmVhZGFibGVTdGF0ZTtcblxuICBpZiAoIXN0YXRlLm9iamVjdE1vZGUgJiYgdHlwZW9mIGNodW5rID09PSAnc3RyaW5nJykge1xuICAgIGVuY29kaW5nID0gZW5jb2RpbmcgfHwgc3RhdGUuZGVmYXVsdEVuY29kaW5nO1xuICAgIGlmIChlbmNvZGluZyAhPT0gc3RhdGUuZW5jb2RpbmcpIHtcbiAgICAgIGNodW5rID0gYnVmZmVyU2hpbS5mcm9tKGNodW5rLCBlbmNvZGluZyk7XG4gICAgICBlbmNvZGluZyA9ICcnO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZWFkYWJsZUFkZENodW5rKHRoaXMsIHN0YXRlLCBjaHVuaywgZW5jb2RpbmcsIGZhbHNlKTtcbn07XG5cbi8vIFVuc2hpZnQgc2hvdWxkICphbHdheXMqIGJlIHNvbWV0aGluZyBkaXJlY3RseSBvdXQgb2YgcmVhZCgpXG5SZWFkYWJsZS5wcm90b3R5cGUudW5zaGlmdCA9IGZ1bmN0aW9uIChjaHVuaykge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9yZWFkYWJsZVN0YXRlO1xuICByZXR1cm4gcmVhZGFibGVBZGRDaHVuayh0aGlzLCBzdGF0ZSwgY2h1bmssICcnLCB0cnVlKTtcbn07XG5cblJlYWRhYmxlLnByb3RvdHlwZS5pc1BhdXNlZCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMuX3JlYWRhYmxlU3RhdGUuZmxvd2luZyA9PT0gZmFsc2U7XG59O1xuXG5mdW5jdGlvbiByZWFkYWJsZUFkZENodW5rKHN0cmVhbSwgc3RhdGUsIGNodW5rLCBlbmNvZGluZywgYWRkVG9Gcm9udCkge1xuICB2YXIgZXIgPSBjaHVua0ludmFsaWQoc3RhdGUsIGNodW5rKTtcbiAgaWYgKGVyKSB7XG4gICAgc3RyZWFtLmVtaXQoJ2Vycm9yJywgZXIpO1xuICB9IGVsc2UgaWYgKGNodW5rID09PSBudWxsKSB7XG4gICAgc3RhdGUucmVhZGluZyA9IGZhbHNlO1xuICAgIG9uRW9mQ2h1bmsoc3RyZWFtLCBzdGF0ZSk7XG4gIH0gZWxzZSBpZiAoc3RhdGUub2JqZWN0TW9kZSB8fCBjaHVuayAmJiBjaHVuay5sZW5ndGggPiAwKSB7XG4gICAgaWYgKHN0YXRlLmVuZGVkICYmICFhZGRUb0Zyb250KSB7XG4gICAgICB2YXIgZSA9IG5ldyBFcnJvcignc3RyZWFtLnB1c2goKSBhZnRlciBFT0YnKTtcbiAgICAgIHN0cmVhbS5lbWl0KCdlcnJvcicsIGUpO1xuICAgIH0gZWxzZSBpZiAoc3RhdGUuZW5kRW1pdHRlZCAmJiBhZGRUb0Zyb250KSB7XG4gICAgICB2YXIgX2UgPSBuZXcgRXJyb3IoJ3N0cmVhbS51bnNoaWZ0KCkgYWZ0ZXIgZW5kIGV2ZW50Jyk7XG4gICAgICBzdHJlYW0uZW1pdCgnZXJyb3InLCBfZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBza2lwQWRkO1xuICAgICAgaWYgKHN0YXRlLmRlY29kZXIgJiYgIWFkZFRvRnJvbnQgJiYgIWVuY29kaW5nKSB7XG4gICAgICAgIGNodW5rID0gc3RhdGUuZGVjb2Rlci53cml0ZShjaHVuayk7XG4gICAgICAgIHNraXBBZGQgPSAhc3RhdGUub2JqZWN0TW9kZSAmJiBjaHVuay5sZW5ndGggPT09IDA7XG4gICAgICB9XG5cbiAgICAgIGlmICghYWRkVG9Gcm9udCkgc3RhdGUucmVhZGluZyA9IGZhbHNlO1xuXG4gICAgICAvLyBEb24ndCBhZGQgdG8gdGhlIGJ1ZmZlciBpZiB3ZSd2ZSBkZWNvZGVkIHRvIGFuIGVtcHR5IHN0cmluZyBjaHVuayBhbmRcbiAgICAgIC8vIHdlJ3JlIG5vdCBpbiBvYmplY3QgbW9kZVxuICAgICAgaWYgKCFza2lwQWRkKSB7XG4gICAgICAgIC8vIGlmIHdlIHdhbnQgdGhlIGRhdGEgbm93LCBqdXN0IGVtaXQgaXQuXG4gICAgICAgIGlmIChzdGF0ZS5mbG93aW5nICYmIHN0YXRlLmxlbmd0aCA9PT0gMCAmJiAhc3RhdGUuc3luYykge1xuICAgICAgICAgIHN0cmVhbS5lbWl0KCdkYXRhJywgY2h1bmspO1xuICAgICAgICAgIHN0cmVhbS5yZWFkKDApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIHVwZGF0ZSB0aGUgYnVmZmVyIGluZm8uXG4gICAgICAgICAgc3RhdGUubGVuZ3RoICs9IHN0YXRlLm9iamVjdE1vZGUgPyAxIDogY2h1bmsubGVuZ3RoO1xuICAgICAgICAgIGlmIChhZGRUb0Zyb250KSBzdGF0ZS5idWZmZXIudW5zaGlmdChjaHVuayk7ZWxzZSBzdGF0ZS5idWZmZXIucHVzaChjaHVuayk7XG5cbiAgICAgICAgICBpZiAoc3RhdGUubmVlZFJlYWRhYmxlKSBlbWl0UmVhZGFibGUoc3RyZWFtKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBtYXliZVJlYWRNb3JlKHN0cmVhbSwgc3RhdGUpO1xuICAgIH1cbiAgfSBlbHNlIGlmICghYWRkVG9Gcm9udCkge1xuICAgIHN0YXRlLnJlYWRpbmcgPSBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiBuZWVkTW9yZURhdGEoc3RhdGUpO1xufVxuXG4vLyBpZiBpdCdzIHBhc3QgdGhlIGhpZ2ggd2F0ZXIgbWFyaywgd2UgY2FuIHB1c2ggaW4gc29tZSBtb3JlLlxuLy8gQWxzbywgaWYgd2UgaGF2ZSBubyBkYXRhIHlldCwgd2UgY2FuIHN0YW5kIHNvbWVcbi8vIG1vcmUgYnl0ZXMuICBUaGlzIGlzIHRvIHdvcmsgYXJvdW5kIGNhc2VzIHdoZXJlIGh3bT0wLFxuLy8gc3VjaCBhcyB0aGUgcmVwbC4gIEFsc28sIGlmIHRoZSBwdXNoKCkgdHJpZ2dlcmVkIGFcbi8vIHJlYWRhYmxlIGV2ZW50LCBhbmQgdGhlIHVzZXIgY2FsbGVkIHJlYWQobGFyZ2VOdW1iZXIpIHN1Y2ggdGhhdFxuLy8gbmVlZFJlYWRhYmxlIHdhcyBzZXQsIHRoZW4gd2Ugb3VnaHQgdG8gcHVzaCBtb3JlLCBzbyB0aGF0IGFub3RoZXJcbi8vICdyZWFkYWJsZScgZXZlbnQgd2lsbCBiZSB0cmlnZ2VyZWQuXG5mdW5jdGlvbiBuZWVkTW9yZURhdGEoc3RhdGUpIHtcbiAgcmV0dXJuICFzdGF0ZS5lbmRlZCAmJiAoc3RhdGUubmVlZFJlYWRhYmxlIHx8IHN0YXRlLmxlbmd0aCA8IHN0YXRlLmhpZ2hXYXRlck1hcmsgfHwgc3RhdGUubGVuZ3RoID09PSAwKTtcbn1cblxuLy8gYmFja3dhcmRzIGNvbXBhdGliaWxpdHkuXG5SZWFkYWJsZS5wcm90b3R5cGUuc2V0RW5jb2RpbmcgPSBmdW5jdGlvbiAoZW5jKSB7XG4gIGlmICghU3RyaW5nRGVjb2RlcikgU3RyaW5nRGVjb2RlciA9IHJlcXVpcmUoJ3N0cmluZ19kZWNvZGVyLycpLlN0cmluZ0RlY29kZXI7XG4gIHRoaXMuX3JlYWRhYmxlU3RhdGUuZGVjb2RlciA9IG5ldyBTdHJpbmdEZWNvZGVyKGVuYyk7XG4gIHRoaXMuX3JlYWRhYmxlU3RhdGUuZW5jb2RpbmcgPSBlbmM7XG4gIHJldHVybiB0aGlzO1xufTtcblxuLy8gRG9uJ3QgcmFpc2UgdGhlIGh3bSA+IDhNQlxudmFyIE1BWF9IV00gPSAweDgwMDAwMDtcbmZ1bmN0aW9uIGNvbXB1dGVOZXdIaWdoV2F0ZXJNYXJrKG4pIHtcbiAgaWYgKG4gPj0gTUFYX0hXTSkge1xuICAgIG4gPSBNQVhfSFdNO1xuICB9IGVsc2Uge1xuICAgIC8vIEdldCB0aGUgbmV4dCBoaWdoZXN0IHBvd2VyIG9mIDIgdG8gcHJldmVudCBpbmNyZWFzaW5nIGh3bSBleGNlc3NpdmVseSBpblxuICAgIC8vIHRpbnkgYW1vdW50c1xuICAgIG4tLTtcbiAgICBuIHw9IG4gPj4+IDE7XG4gICAgbiB8PSBuID4+PiAyO1xuICAgIG4gfD0gbiA+Pj4gNDtcbiAgICBuIHw9IG4gPj4+IDg7XG4gICAgbiB8PSBuID4+PiAxNjtcbiAgICBuKys7XG4gIH1cbiAgcmV0dXJuIG47XG59XG5cbi8vIFRoaXMgZnVuY3Rpb24gaXMgZGVzaWduZWQgdG8gYmUgaW5saW5hYmxlLCBzbyBwbGVhc2UgdGFrZSBjYXJlIHdoZW4gbWFraW5nXG4vLyBjaGFuZ2VzIHRvIHRoZSBmdW5jdGlvbiBib2R5LlxuZnVuY3Rpb24gaG93TXVjaFRvUmVhZChuLCBzdGF0ZSkge1xuICBpZiAobiA8PSAwIHx8IHN0YXRlLmxlbmd0aCA9PT0gMCAmJiBzdGF0ZS5lbmRlZCkgcmV0dXJuIDA7XG4gIGlmIChzdGF0ZS5vYmplY3RNb2RlKSByZXR1cm4gMTtcbiAgaWYgKG4gIT09IG4pIHtcbiAgICAvLyBPbmx5IGZsb3cgb25lIGJ1ZmZlciBhdCBhIHRpbWVcbiAgICBpZiAoc3RhdGUuZmxvd2luZyAmJiBzdGF0ZS5sZW5ndGgpIHJldHVybiBzdGF0ZS5idWZmZXIuaGVhZC5kYXRhLmxlbmd0aDtlbHNlIHJldHVybiBzdGF0ZS5sZW5ndGg7XG4gIH1cbiAgLy8gSWYgd2UncmUgYXNraW5nIGZvciBtb3JlIHRoYW4gdGhlIGN1cnJlbnQgaHdtLCB0aGVuIHJhaXNlIHRoZSBod20uXG4gIGlmIChuID4gc3RhdGUuaGlnaFdhdGVyTWFyaykgc3RhdGUuaGlnaFdhdGVyTWFyayA9IGNvbXB1dGVOZXdIaWdoV2F0ZXJNYXJrKG4pO1xuICBpZiAobiA8PSBzdGF0ZS5sZW5ndGgpIHJldHVybiBuO1xuICAvLyBEb24ndCBoYXZlIGVub3VnaFxuICBpZiAoIXN0YXRlLmVuZGVkKSB7XG4gICAgc3RhdGUubmVlZFJlYWRhYmxlID0gdHJ1ZTtcbiAgICByZXR1cm4gMDtcbiAgfVxuICByZXR1cm4gc3RhdGUubGVuZ3RoO1xufVxuXG4vLyB5b3UgY2FuIG92ZXJyaWRlIGVpdGhlciB0aGlzIG1ldGhvZCwgb3IgdGhlIGFzeW5jIF9yZWFkKG4pIGJlbG93LlxuUmVhZGFibGUucHJvdG90eXBlLnJlYWQgPSBmdW5jdGlvbiAobikge1xuICBkZWJ1ZygncmVhZCcsIG4pO1xuICBuID0gcGFyc2VJbnQobiwgMTApO1xuICB2YXIgc3RhdGUgPSB0aGlzLl9yZWFkYWJsZVN0YXRlO1xuICB2YXIgbk9yaWcgPSBuO1xuXG4gIGlmIChuICE9PSAwKSBzdGF0ZS5lbWl0dGVkUmVhZGFibGUgPSBmYWxzZTtcblxuICAvLyBpZiB3ZSdyZSBkb2luZyByZWFkKDApIHRvIHRyaWdnZXIgYSByZWFkYWJsZSBldmVudCwgYnV0IHdlXG4gIC8vIGFscmVhZHkgaGF2ZSBhIGJ1bmNoIG9mIGRhdGEgaW4gdGhlIGJ1ZmZlciwgdGhlbiBqdXN0IHRyaWdnZXJcbiAgLy8gdGhlICdyZWFkYWJsZScgZXZlbnQgYW5kIG1vdmUgb24uXG4gIGlmIChuID09PSAwICYmIHN0YXRlLm5lZWRSZWFkYWJsZSAmJiAoc3RhdGUubGVuZ3RoID49IHN0YXRlLmhpZ2hXYXRlck1hcmsgfHwgc3RhdGUuZW5kZWQpKSB7XG4gICAgZGVidWcoJ3JlYWQ6IGVtaXRSZWFkYWJsZScsIHN0YXRlLmxlbmd0aCwgc3RhdGUuZW5kZWQpO1xuICAgIGlmIChzdGF0ZS5sZW5ndGggPT09IDAgJiYgc3RhdGUuZW5kZWQpIGVuZFJlYWRhYmxlKHRoaXMpO2Vsc2UgZW1pdFJlYWRhYmxlKHRoaXMpO1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgbiA9IGhvd011Y2hUb1JlYWQobiwgc3RhdGUpO1xuXG4gIC8vIGlmIHdlJ3ZlIGVuZGVkLCBhbmQgd2UncmUgbm93IGNsZWFyLCB0aGVuIGZpbmlzaCBpdCB1cC5cbiAgaWYgKG4gPT09IDAgJiYgc3RhdGUuZW5kZWQpIHtcbiAgICBpZiAoc3RhdGUubGVuZ3RoID09PSAwKSBlbmRSZWFkYWJsZSh0aGlzKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8vIEFsbCB0aGUgYWN0dWFsIGNodW5rIGdlbmVyYXRpb24gbG9naWMgbmVlZHMgdG8gYmVcbiAgLy8gKmJlbG93KiB0aGUgY2FsbCB0byBfcmVhZC4gIFRoZSByZWFzb24gaXMgdGhhdCBpbiBjZXJ0YWluXG4gIC8vIHN5bnRoZXRpYyBzdHJlYW0gY2FzZXMsIHN1Y2ggYXMgcGFzc3Rocm91Z2ggc3RyZWFtcywgX3JlYWRcbiAgLy8gbWF5IGJlIGEgY29tcGxldGVseSBzeW5jaHJvbm91cyBvcGVyYXRpb24gd2hpY2ggbWF5IGNoYW5nZVxuICAvLyB0aGUgc3RhdGUgb2YgdGhlIHJlYWQgYnVmZmVyLCBwcm92aWRpbmcgZW5vdWdoIGRhdGEgd2hlblxuICAvLyBiZWZvcmUgdGhlcmUgd2FzICpub3QqIGVub3VnaC5cbiAgLy9cbiAgLy8gU28sIHRoZSBzdGVwcyBhcmU6XG4gIC8vIDEuIEZpZ3VyZSBvdXQgd2hhdCB0aGUgc3RhdGUgb2YgdGhpbmdzIHdpbGwgYmUgYWZ0ZXIgd2UgZG9cbiAgLy8gYSByZWFkIGZyb20gdGhlIGJ1ZmZlci5cbiAgLy9cbiAgLy8gMi4gSWYgdGhhdCByZXN1bHRpbmcgc3RhdGUgd2lsbCB0cmlnZ2VyIGEgX3JlYWQsIHRoZW4gY2FsbCBfcmVhZC5cbiAgLy8gTm90ZSB0aGF0IHRoaXMgbWF5IGJlIGFzeW5jaHJvbm91cywgb3Igc3luY2hyb25vdXMuICBZZXMsIGl0IGlzXG4gIC8vIGRlZXBseSB1Z2x5IHRvIHdyaXRlIEFQSXMgdGhpcyB3YXksIGJ1dCB0aGF0IHN0aWxsIGRvZXNuJ3QgbWVhblxuICAvLyB0aGF0IHRoZSBSZWFkYWJsZSBjbGFzcyBzaG91bGQgYmVoYXZlIGltcHJvcGVybHksIGFzIHN0cmVhbXMgYXJlXG4gIC8vIGRlc2lnbmVkIHRvIGJlIHN5bmMvYXN5bmMgYWdub3N0aWMuXG4gIC8vIFRha2Ugbm90ZSBpZiB0aGUgX3JlYWQgY2FsbCBpcyBzeW5jIG9yIGFzeW5jIChpZSwgaWYgdGhlIHJlYWQgY2FsbFxuICAvLyBoYXMgcmV0dXJuZWQgeWV0KSwgc28gdGhhdCB3ZSBrbm93IHdoZXRoZXIgb3Igbm90IGl0J3Mgc2FmZSB0byBlbWl0XG4gIC8vICdyZWFkYWJsZScgZXRjLlxuICAvL1xuICAvLyAzLiBBY3R1YWxseSBwdWxsIHRoZSByZXF1ZXN0ZWQgY2h1bmtzIG91dCBvZiB0aGUgYnVmZmVyIGFuZCByZXR1cm4uXG5cbiAgLy8gaWYgd2UgbmVlZCBhIHJlYWRhYmxlIGV2ZW50LCB0aGVuIHdlIG5lZWQgdG8gZG8gc29tZSByZWFkaW5nLlxuICB2YXIgZG9SZWFkID0gc3RhdGUubmVlZFJlYWRhYmxlO1xuICBkZWJ1ZygnbmVlZCByZWFkYWJsZScsIGRvUmVhZCk7XG5cbiAgLy8gaWYgd2UgY3VycmVudGx5IGhhdmUgbGVzcyB0aGFuIHRoZSBoaWdoV2F0ZXJNYXJrLCB0aGVuIGFsc28gcmVhZCBzb21lXG4gIGlmIChzdGF0ZS5sZW5ndGggPT09IDAgfHwgc3RhdGUubGVuZ3RoIC0gbiA8IHN0YXRlLmhpZ2hXYXRlck1hcmspIHtcbiAgICBkb1JlYWQgPSB0cnVlO1xuICAgIGRlYnVnKCdsZW5ndGggbGVzcyB0aGFuIHdhdGVybWFyaycsIGRvUmVhZCk7XG4gIH1cblxuICAvLyBob3dldmVyLCBpZiB3ZSd2ZSBlbmRlZCwgdGhlbiB0aGVyZSdzIG5vIHBvaW50LCBhbmQgaWYgd2UncmUgYWxyZWFkeVxuICAvLyByZWFkaW5nLCB0aGVuIGl0J3MgdW5uZWNlc3NhcnkuXG4gIGlmIChzdGF0ZS5lbmRlZCB8fCBzdGF0ZS5yZWFkaW5nKSB7XG4gICAgZG9SZWFkID0gZmFsc2U7XG4gICAgZGVidWcoJ3JlYWRpbmcgb3IgZW5kZWQnLCBkb1JlYWQpO1xuICB9IGVsc2UgaWYgKGRvUmVhZCkge1xuICAgIGRlYnVnKCdkbyByZWFkJyk7XG4gICAgc3RhdGUucmVhZGluZyA9IHRydWU7XG4gICAgc3RhdGUuc3luYyA9IHRydWU7XG4gICAgLy8gaWYgdGhlIGxlbmd0aCBpcyBjdXJyZW50bHkgemVybywgdGhlbiB3ZSAqbmVlZCogYSByZWFkYWJsZSBldmVudC5cbiAgICBpZiAoc3RhdGUubGVuZ3RoID09PSAwKSBzdGF0ZS5uZWVkUmVhZGFibGUgPSB0cnVlO1xuICAgIC8vIGNhbGwgaW50ZXJuYWwgcmVhZCBtZXRob2RcbiAgICB0aGlzLl9yZWFkKHN0YXRlLmhpZ2hXYXRlck1hcmspO1xuICAgIHN0YXRlLnN5bmMgPSBmYWxzZTtcbiAgICAvLyBJZiBfcmVhZCBwdXNoZWQgZGF0YSBzeW5jaHJvbm91c2x5LCB0aGVuIGByZWFkaW5nYCB3aWxsIGJlIGZhbHNlLFxuICAgIC8vIGFuZCB3ZSBuZWVkIHRvIHJlLWV2YWx1YXRlIGhvdyBtdWNoIGRhdGEgd2UgY2FuIHJldHVybiB0byB0aGUgdXNlci5cbiAgICBpZiAoIXN0YXRlLnJlYWRpbmcpIG4gPSBob3dNdWNoVG9SZWFkKG5PcmlnLCBzdGF0ZSk7XG4gIH1cblxuICB2YXIgcmV0O1xuICBpZiAobiA+IDApIHJldCA9IGZyb21MaXN0KG4sIHN0YXRlKTtlbHNlIHJldCA9IG51bGw7XG5cbiAgaWYgKHJldCA9PT0gbnVsbCkge1xuICAgIHN0YXRlLm5lZWRSZWFkYWJsZSA9IHRydWU7XG4gICAgbiA9IDA7XG4gIH0gZWxzZSB7XG4gICAgc3RhdGUubGVuZ3RoIC09IG47XG4gIH1cblxuICBpZiAoc3RhdGUubGVuZ3RoID09PSAwKSB7XG4gICAgLy8gSWYgd2UgaGF2ZSBub3RoaW5nIGluIHRoZSBidWZmZXIsIHRoZW4gd2Ugd2FudCB0byBrbm93XG4gICAgLy8gYXMgc29vbiBhcyB3ZSAqZG8qIGdldCBzb21ldGhpbmcgaW50byB0aGUgYnVmZmVyLlxuICAgIGlmICghc3RhdGUuZW5kZWQpIHN0YXRlLm5lZWRSZWFkYWJsZSA9IHRydWU7XG5cbiAgICAvLyBJZiB3ZSB0cmllZCB0byByZWFkKCkgcGFzdCB0aGUgRU9GLCB0aGVuIGVtaXQgZW5kIG9uIHRoZSBuZXh0IHRpY2suXG4gICAgaWYgKG5PcmlnICE9PSBuICYmIHN0YXRlLmVuZGVkKSBlbmRSZWFkYWJsZSh0aGlzKTtcbiAgfVxuXG4gIGlmIChyZXQgIT09IG51bGwpIHRoaXMuZW1pdCgnZGF0YScsIHJldCk7XG5cbiAgcmV0dXJuIHJldDtcbn07XG5cbmZ1bmN0aW9uIGNodW5rSW52YWxpZChzdGF0ZSwgY2h1bmspIHtcbiAgdmFyIGVyID0gbnVsbDtcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoY2h1bmspICYmIHR5cGVvZiBjaHVuayAhPT0gJ3N0cmluZycgJiYgY2h1bmsgIT09IG51bGwgJiYgY2h1bmsgIT09IHVuZGVmaW5lZCAmJiAhc3RhdGUub2JqZWN0TW9kZSkge1xuICAgIGVyID0gbmV3IFR5cGVFcnJvcignSW52YWxpZCBub24tc3RyaW5nL2J1ZmZlciBjaHVuaycpO1xuICB9XG4gIHJldHVybiBlcjtcbn1cblxuZnVuY3Rpb24gb25Fb2ZDaHVuayhzdHJlYW0sIHN0YXRlKSB7XG4gIGlmIChzdGF0ZS5lbmRlZCkgcmV0dXJuO1xuICBpZiAoc3RhdGUuZGVjb2Rlcikge1xuICAgIHZhciBjaHVuayA9IHN0YXRlLmRlY29kZXIuZW5kKCk7XG4gICAgaWYgKGNodW5rICYmIGNodW5rLmxlbmd0aCkge1xuICAgICAgc3RhdGUuYnVmZmVyLnB1c2goY2h1bmspO1xuICAgICAgc3RhdGUubGVuZ3RoICs9IHN0YXRlLm9iamVjdE1vZGUgPyAxIDogY2h1bmsubGVuZ3RoO1xuICAgIH1cbiAgfVxuICBzdGF0ZS5lbmRlZCA9IHRydWU7XG5cbiAgLy8gZW1pdCAncmVhZGFibGUnIG5vdyB0byBtYWtlIHN1cmUgaXQgZ2V0cyBwaWNrZWQgdXAuXG4gIGVtaXRSZWFkYWJsZShzdHJlYW0pO1xufVxuXG4vLyBEb24ndCBlbWl0IHJlYWRhYmxlIHJpZ2h0IGF3YXkgaW4gc3luYyBtb2RlLCBiZWNhdXNlIHRoaXMgY2FuIHRyaWdnZXJcbi8vIGFub3RoZXIgcmVhZCgpIGNhbGwgPT4gc3RhY2sgb3ZlcmZsb3cuICBUaGlzIHdheSwgaXQgbWlnaHQgdHJpZ2dlclxuLy8gYSBuZXh0VGljayByZWN1cnNpb24gd2FybmluZywgYnV0IHRoYXQncyBub3Qgc28gYmFkLlxuZnVuY3Rpb24gZW1pdFJlYWRhYmxlKHN0cmVhbSkge1xuICB2YXIgc3RhdGUgPSBzdHJlYW0uX3JlYWRhYmxlU3RhdGU7XG4gIHN0YXRlLm5lZWRSZWFkYWJsZSA9IGZhbHNlO1xuICBpZiAoIXN0YXRlLmVtaXR0ZWRSZWFkYWJsZSkge1xuICAgIGRlYnVnKCdlbWl0UmVhZGFibGUnLCBzdGF0ZS5mbG93aW5nKTtcbiAgICBzdGF0ZS5lbWl0dGVkUmVhZGFibGUgPSB0cnVlO1xuICAgIGlmIChzdGF0ZS5zeW5jKSBwcm9jZXNzTmV4dFRpY2soZW1pdFJlYWRhYmxlXywgc3RyZWFtKTtlbHNlIGVtaXRSZWFkYWJsZV8oc3RyZWFtKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBlbWl0UmVhZGFibGVfKHN0cmVhbSkge1xuICBkZWJ1ZygnZW1pdCByZWFkYWJsZScpO1xuICBzdHJlYW0uZW1pdCgncmVhZGFibGUnKTtcbiAgZmxvdyhzdHJlYW0pO1xufVxuXG4vLyBhdCB0aGlzIHBvaW50LCB0aGUgdXNlciBoYXMgcHJlc3VtYWJseSBzZWVuIHRoZSAncmVhZGFibGUnIGV2ZW50LFxuLy8gYW5kIGNhbGxlZCByZWFkKCkgdG8gY29uc3VtZSBzb21lIGRhdGEuICB0aGF0IG1heSBoYXZlIHRyaWdnZXJlZFxuLy8gaW4gdHVybiBhbm90aGVyIF9yZWFkKG4pIGNhbGwsIGluIHdoaWNoIGNhc2UgcmVhZGluZyA9IHRydWUgaWZcbi8vIGl0J3MgaW4gcHJvZ3Jlc3MuXG4vLyBIb3dldmVyLCBpZiB3ZSdyZSBub3QgZW5kZWQsIG9yIHJlYWRpbmcsIGFuZCB0aGUgbGVuZ3RoIDwgaHdtLFxuLy8gdGhlbiBnbyBhaGVhZCBhbmQgdHJ5IHRvIHJlYWQgc29tZSBtb3JlIHByZWVtcHRpdmVseS5cbmZ1bmN0aW9uIG1heWJlUmVhZE1vcmUoc3RyZWFtLCBzdGF0ZSkge1xuICBpZiAoIXN0YXRlLnJlYWRpbmdNb3JlKSB7XG4gICAgc3RhdGUucmVhZGluZ01vcmUgPSB0cnVlO1xuICAgIHByb2Nlc3NOZXh0VGljayhtYXliZVJlYWRNb3JlXywgc3RyZWFtLCBzdGF0ZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gbWF5YmVSZWFkTW9yZV8oc3RyZWFtLCBzdGF0ZSkge1xuICB2YXIgbGVuID0gc3RhdGUubGVuZ3RoO1xuICB3aGlsZSAoIXN0YXRlLnJlYWRpbmcgJiYgIXN0YXRlLmZsb3dpbmcgJiYgIXN0YXRlLmVuZGVkICYmIHN0YXRlLmxlbmd0aCA8IHN0YXRlLmhpZ2hXYXRlck1hcmspIHtcbiAgICBkZWJ1ZygnbWF5YmVSZWFkTW9yZSByZWFkIDAnKTtcbiAgICBzdHJlYW0ucmVhZCgwKTtcbiAgICBpZiAobGVuID09PSBzdGF0ZS5sZW5ndGgpXG4gICAgICAvLyBkaWRuJ3QgZ2V0IGFueSBkYXRhLCBzdG9wIHNwaW5uaW5nLlxuICAgICAgYnJlYWs7ZWxzZSBsZW4gPSBzdGF0ZS5sZW5ndGg7XG4gIH1cbiAgc3RhdGUucmVhZGluZ01vcmUgPSBmYWxzZTtcbn1cblxuLy8gYWJzdHJhY3QgbWV0aG9kLiAgdG8gYmUgb3ZlcnJpZGRlbiBpbiBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiBjbGFzc2VzLlxuLy8gY2FsbCBjYihlciwgZGF0YSkgd2hlcmUgZGF0YSBpcyA8PSBuIGluIGxlbmd0aC5cbi8vIGZvciB2aXJ0dWFsIChub24tc3RyaW5nLCBub24tYnVmZmVyKSBzdHJlYW1zLCBcImxlbmd0aFwiIGlzIHNvbWV3aGF0XG4vLyBhcmJpdHJhcnksIGFuZCBwZXJoYXBzIG5vdCB2ZXJ5IG1lYW5pbmdmdWwuXG5SZWFkYWJsZS5wcm90b3R5cGUuX3JlYWQgPSBmdW5jdGlvbiAobikge1xuICB0aGlzLmVtaXQoJ2Vycm9yJywgbmV3IEVycm9yKCdfcmVhZCgpIGlzIG5vdCBpbXBsZW1lbnRlZCcpKTtcbn07XG5cblJlYWRhYmxlLnByb3RvdHlwZS5waXBlID0gZnVuY3Rpb24gKGRlc3QsIHBpcGVPcHRzKSB7XG4gIHZhciBzcmMgPSB0aGlzO1xuICB2YXIgc3RhdGUgPSB0aGlzLl9yZWFkYWJsZVN0YXRlO1xuXG4gIHN3aXRjaCAoc3RhdGUucGlwZXNDb3VudCkge1xuICAgIGNhc2UgMDpcbiAgICAgIHN0YXRlLnBpcGVzID0gZGVzdDtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMTpcbiAgICAgIHN0YXRlLnBpcGVzID0gW3N0YXRlLnBpcGVzLCBkZXN0XTtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBzdGF0ZS5waXBlcy5wdXNoKGRlc3QpO1xuICAgICAgYnJlYWs7XG4gIH1cbiAgc3RhdGUucGlwZXNDb3VudCArPSAxO1xuICBkZWJ1ZygncGlwZSBjb3VudD0lZCBvcHRzPSVqJywgc3RhdGUucGlwZXNDb3VudCwgcGlwZU9wdHMpO1xuXG4gIHZhciBkb0VuZCA9ICghcGlwZU9wdHMgfHwgcGlwZU9wdHMuZW5kICE9PSBmYWxzZSkgJiYgZGVzdCAhPT0gcHJvY2Vzcy5zdGRvdXQgJiYgZGVzdCAhPT0gcHJvY2Vzcy5zdGRlcnI7XG5cbiAgdmFyIGVuZEZuID0gZG9FbmQgPyBvbmVuZCA6IGNsZWFudXA7XG4gIGlmIChzdGF0ZS5lbmRFbWl0dGVkKSBwcm9jZXNzTmV4dFRpY2soZW5kRm4pO2Vsc2Ugc3JjLm9uY2UoJ2VuZCcsIGVuZEZuKTtcblxuICBkZXN0Lm9uKCd1bnBpcGUnLCBvbnVucGlwZSk7XG4gIGZ1bmN0aW9uIG9udW5waXBlKHJlYWRhYmxlKSB7XG4gICAgZGVidWcoJ29udW5waXBlJyk7XG4gICAgaWYgKHJlYWRhYmxlID09PSBzcmMpIHtcbiAgICAgIGNsZWFudXAoKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBvbmVuZCgpIHtcbiAgICBkZWJ1Zygnb25lbmQnKTtcbiAgICBkZXN0LmVuZCgpO1xuICB9XG5cbiAgLy8gd2hlbiB0aGUgZGVzdCBkcmFpbnMsIGl0IHJlZHVjZXMgdGhlIGF3YWl0RHJhaW4gY291bnRlclxuICAvLyBvbiB0aGUgc291cmNlLiAgVGhpcyB3b3VsZCBiZSBtb3JlIGVsZWdhbnQgd2l0aCBhIC5vbmNlKClcbiAgLy8gaGFuZGxlciBpbiBmbG93KCksIGJ1dCBhZGRpbmcgYW5kIHJlbW92aW5nIHJlcGVhdGVkbHkgaXNcbiAgLy8gdG9vIHNsb3cuXG4gIHZhciBvbmRyYWluID0gcGlwZU9uRHJhaW4oc3JjKTtcbiAgZGVzdC5vbignZHJhaW4nLCBvbmRyYWluKTtcblxuICB2YXIgY2xlYW5lZFVwID0gZmFsc2U7XG4gIGZ1bmN0aW9uIGNsZWFudXAoKSB7XG4gICAgZGVidWcoJ2NsZWFudXAnKTtcbiAgICAvLyBjbGVhbnVwIGV2ZW50IGhhbmRsZXJzIG9uY2UgdGhlIHBpcGUgaXMgYnJva2VuXG4gICAgZGVzdC5yZW1vdmVMaXN0ZW5lcignY2xvc2UnLCBvbmNsb3NlKTtcbiAgICBkZXN0LnJlbW92ZUxpc3RlbmVyKCdmaW5pc2gnLCBvbmZpbmlzaCk7XG4gICAgZGVzdC5yZW1vdmVMaXN0ZW5lcignZHJhaW4nLCBvbmRyYWluKTtcbiAgICBkZXN0LnJlbW92ZUxpc3RlbmVyKCdlcnJvcicsIG9uZXJyb3IpO1xuICAgIGRlc3QucmVtb3ZlTGlzdGVuZXIoJ3VucGlwZScsIG9udW5waXBlKTtcbiAgICBzcmMucmVtb3ZlTGlzdGVuZXIoJ2VuZCcsIG9uZW5kKTtcbiAgICBzcmMucmVtb3ZlTGlzdGVuZXIoJ2VuZCcsIGNsZWFudXApO1xuICAgIHNyYy5yZW1vdmVMaXN0ZW5lcignZGF0YScsIG9uZGF0YSk7XG5cbiAgICBjbGVhbmVkVXAgPSB0cnVlO1xuXG4gICAgLy8gaWYgdGhlIHJlYWRlciBpcyB3YWl0aW5nIGZvciBhIGRyYWluIGV2ZW50IGZyb20gdGhpc1xuICAgIC8vIHNwZWNpZmljIHdyaXRlciwgdGhlbiBpdCB3b3VsZCBjYXVzZSBpdCB0byBuZXZlciBzdGFydFxuICAgIC8vIGZsb3dpbmcgYWdhaW4uXG4gICAgLy8gU28sIGlmIHRoaXMgaXMgYXdhaXRpbmcgYSBkcmFpbiwgdGhlbiB3ZSBqdXN0IGNhbGwgaXQgbm93LlxuICAgIC8vIElmIHdlIGRvbid0IGtub3csIHRoZW4gYXNzdW1lIHRoYXQgd2UgYXJlIHdhaXRpbmcgZm9yIG9uZS5cbiAgICBpZiAoc3RhdGUuYXdhaXREcmFpbiAmJiAoIWRlc3QuX3dyaXRhYmxlU3RhdGUgfHwgZGVzdC5fd3JpdGFibGVTdGF0ZS5uZWVkRHJhaW4pKSBvbmRyYWluKCk7XG4gIH1cblxuICAvLyBJZiB0aGUgdXNlciBwdXNoZXMgbW9yZSBkYXRhIHdoaWxlIHdlJ3JlIHdyaXRpbmcgdG8gZGVzdCB0aGVuIHdlJ2xsIGVuZCB1cFxuICAvLyBpbiBvbmRhdGEgYWdhaW4uIEhvd2V2ZXIsIHdlIG9ubHkgd2FudCB0byBpbmNyZWFzZSBhd2FpdERyYWluIG9uY2UgYmVjYXVzZVxuICAvLyBkZXN0IHdpbGwgb25seSBlbWl0IG9uZSAnZHJhaW4nIGV2ZW50IGZvciB0aGUgbXVsdGlwbGUgd3JpdGVzLlxuICAvLyA9PiBJbnRyb2R1Y2UgYSBndWFyZCBvbiBpbmNyZWFzaW5nIGF3YWl0RHJhaW4uXG4gIHZhciBpbmNyZWFzZWRBd2FpdERyYWluID0gZmFsc2U7XG4gIHNyYy5vbignZGF0YScsIG9uZGF0YSk7XG4gIGZ1bmN0aW9uIG9uZGF0YShjaHVuaykge1xuICAgIGRlYnVnKCdvbmRhdGEnKTtcbiAgICBpbmNyZWFzZWRBd2FpdERyYWluID0gZmFsc2U7XG4gICAgdmFyIHJldCA9IGRlc3Qud3JpdGUoY2h1bmspO1xuICAgIGlmIChmYWxzZSA9PT0gcmV0ICYmICFpbmNyZWFzZWRBd2FpdERyYWluKSB7XG4gICAgICAvLyBJZiB0aGUgdXNlciB1bnBpcGVkIGR1cmluZyBgZGVzdC53cml0ZSgpYCwgaXQgaXMgcG9zc2libGVcbiAgICAgIC8vIHRvIGdldCBzdHVjayBpbiBhIHBlcm1hbmVudGx5IHBhdXNlZCBzdGF0ZSBpZiB0aGF0IHdyaXRlXG4gICAgICAvLyBhbHNvIHJldHVybmVkIGZhbHNlLlxuICAgICAgLy8gPT4gQ2hlY2sgd2hldGhlciBgZGVzdGAgaXMgc3RpbGwgYSBwaXBpbmcgZGVzdGluYXRpb24uXG4gICAgICBpZiAoKHN0YXRlLnBpcGVzQ291bnQgPT09IDEgJiYgc3RhdGUucGlwZXMgPT09IGRlc3QgfHwgc3RhdGUucGlwZXNDb3VudCA+IDEgJiYgaW5kZXhPZihzdGF0ZS5waXBlcywgZGVzdCkgIT09IC0xKSAmJiAhY2xlYW5lZFVwKSB7XG4gICAgICAgIGRlYnVnKCdmYWxzZSB3cml0ZSByZXNwb25zZSwgcGF1c2UnLCBzcmMuX3JlYWRhYmxlU3RhdGUuYXdhaXREcmFpbik7XG4gICAgICAgIHNyYy5fcmVhZGFibGVTdGF0ZS5hd2FpdERyYWluKys7XG4gICAgICAgIGluY3JlYXNlZEF3YWl0RHJhaW4gPSB0cnVlO1xuICAgICAgfVxuICAgICAgc3JjLnBhdXNlKCk7XG4gICAgfVxuICB9XG5cbiAgLy8gaWYgdGhlIGRlc3QgaGFzIGFuIGVycm9yLCB0aGVuIHN0b3AgcGlwaW5nIGludG8gaXQuXG4gIC8vIGhvd2V2ZXIsIGRvbid0IHN1cHByZXNzIHRoZSB0aHJvd2luZyBiZWhhdmlvciBmb3IgdGhpcy5cbiAgZnVuY3Rpb24gb25lcnJvcihlcikge1xuICAgIGRlYnVnKCdvbmVycm9yJywgZXIpO1xuICAgIHVucGlwZSgpO1xuICAgIGRlc3QucmVtb3ZlTGlzdGVuZXIoJ2Vycm9yJywgb25lcnJvcik7XG4gICAgaWYgKEVFbGlzdGVuZXJDb3VudChkZXN0LCAnZXJyb3InKSA9PT0gMCkgZGVzdC5lbWl0KCdlcnJvcicsIGVyKTtcbiAgfVxuXG4gIC8vIE1ha2Ugc3VyZSBvdXIgZXJyb3IgaGFuZGxlciBpcyBhdHRhY2hlZCBiZWZvcmUgdXNlcmxhbmQgb25lcy5cbiAgcHJlcGVuZExpc3RlbmVyKGRlc3QsICdlcnJvcicsIG9uZXJyb3IpO1xuXG4gIC8vIEJvdGggY2xvc2UgYW5kIGZpbmlzaCBzaG91bGQgdHJpZ2dlciB1bnBpcGUsIGJ1dCBvbmx5IG9uY2UuXG4gIGZ1bmN0aW9uIG9uY2xvc2UoKSB7XG4gICAgZGVzdC5yZW1vdmVMaXN0ZW5lcignZmluaXNoJywgb25maW5pc2gpO1xuICAgIHVucGlwZSgpO1xuICB9XG4gIGRlc3Qub25jZSgnY2xvc2UnLCBvbmNsb3NlKTtcbiAgZnVuY3Rpb24gb25maW5pc2goKSB7XG4gICAgZGVidWcoJ29uZmluaXNoJyk7XG4gICAgZGVzdC5yZW1vdmVMaXN0ZW5lcignY2xvc2UnLCBvbmNsb3NlKTtcbiAgICB1bnBpcGUoKTtcbiAgfVxuICBkZXN0Lm9uY2UoJ2ZpbmlzaCcsIG9uZmluaXNoKTtcblxuICBmdW5jdGlvbiB1bnBpcGUoKSB7XG4gICAgZGVidWcoJ3VucGlwZScpO1xuICAgIHNyYy51bnBpcGUoZGVzdCk7XG4gIH1cblxuICAvLyB0ZWxsIHRoZSBkZXN0IHRoYXQgaXQncyBiZWluZyBwaXBlZCB0b1xuICBkZXN0LmVtaXQoJ3BpcGUnLCBzcmMpO1xuXG4gIC8vIHN0YXJ0IHRoZSBmbG93IGlmIGl0IGhhc24ndCBiZWVuIHN0YXJ0ZWQgYWxyZWFkeS5cbiAgaWYgKCFzdGF0ZS5mbG93aW5nKSB7XG4gICAgZGVidWcoJ3BpcGUgcmVzdW1lJyk7XG4gICAgc3JjLnJlc3VtZSgpO1xuICB9XG5cbiAgcmV0dXJuIGRlc3Q7XG59O1xuXG5mdW5jdGlvbiBwaXBlT25EcmFpbihzcmMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc3RhdGUgPSBzcmMuX3JlYWRhYmxlU3RhdGU7XG4gICAgZGVidWcoJ3BpcGVPbkRyYWluJywgc3RhdGUuYXdhaXREcmFpbik7XG4gICAgaWYgKHN0YXRlLmF3YWl0RHJhaW4pIHN0YXRlLmF3YWl0RHJhaW4tLTtcbiAgICBpZiAoc3RhdGUuYXdhaXREcmFpbiA9PT0gMCAmJiBFRWxpc3RlbmVyQ291bnQoc3JjLCAnZGF0YScpKSB7XG4gICAgICBzdGF0ZS5mbG93aW5nID0gdHJ1ZTtcbiAgICAgIGZsb3coc3JjKTtcbiAgICB9XG4gIH07XG59XG5cblJlYWRhYmxlLnByb3RvdHlwZS51bnBpcGUgPSBmdW5jdGlvbiAoZGVzdCkge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9yZWFkYWJsZVN0YXRlO1xuXG4gIC8vIGlmIHdlJ3JlIG5vdCBwaXBpbmcgYW55d2hlcmUsIHRoZW4gZG8gbm90aGluZy5cbiAgaWYgKHN0YXRlLnBpcGVzQ291bnQgPT09IDApIHJldHVybiB0aGlzO1xuXG4gIC8vIGp1c3Qgb25lIGRlc3RpbmF0aW9uLiAgbW9zdCBjb21tb24gY2FzZS5cbiAgaWYgKHN0YXRlLnBpcGVzQ291bnQgPT09IDEpIHtcbiAgICAvLyBwYXNzZWQgaW4gb25lLCBidXQgaXQncyBub3QgdGhlIHJpZ2h0IG9uZS5cbiAgICBpZiAoZGVzdCAmJiBkZXN0ICE9PSBzdGF0ZS5waXBlcykgcmV0dXJuIHRoaXM7XG5cbiAgICBpZiAoIWRlc3QpIGRlc3QgPSBzdGF0ZS5waXBlcztcblxuICAgIC8vIGdvdCBhIG1hdGNoLlxuICAgIHN0YXRlLnBpcGVzID0gbnVsbDtcbiAgICBzdGF0ZS5waXBlc0NvdW50ID0gMDtcbiAgICBzdGF0ZS5mbG93aW5nID0gZmFsc2U7XG4gICAgaWYgKGRlc3QpIGRlc3QuZW1pdCgndW5waXBlJywgdGhpcyk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvLyBzbG93IGNhc2UuIG11bHRpcGxlIHBpcGUgZGVzdGluYXRpb25zLlxuXG4gIGlmICghZGVzdCkge1xuICAgIC8vIHJlbW92ZSBhbGwuXG4gICAgdmFyIGRlc3RzID0gc3RhdGUucGlwZXM7XG4gICAgdmFyIGxlbiA9IHN0YXRlLnBpcGVzQ291bnQ7XG4gICAgc3RhdGUucGlwZXMgPSBudWxsO1xuICAgIHN0YXRlLnBpcGVzQ291bnQgPSAwO1xuICAgIHN0YXRlLmZsb3dpbmcgPSBmYWxzZTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIGRlc3RzW2ldLmVtaXQoJ3VucGlwZScsIHRoaXMpO1xuICAgIH1yZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8vIHRyeSB0byBmaW5kIHRoZSByaWdodCBvbmUuXG4gIHZhciBpbmRleCA9IGluZGV4T2Yoc3RhdGUucGlwZXMsIGRlc3QpO1xuICBpZiAoaW5kZXggPT09IC0xKSByZXR1cm4gdGhpcztcblxuICBzdGF0ZS5waXBlcy5zcGxpY2UoaW5kZXgsIDEpO1xuICBzdGF0ZS5waXBlc0NvdW50IC09IDE7XG4gIGlmIChzdGF0ZS5waXBlc0NvdW50ID09PSAxKSBzdGF0ZS5waXBlcyA9IHN0YXRlLnBpcGVzWzBdO1xuXG4gIGRlc3QuZW1pdCgndW5waXBlJywgdGhpcyk7XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vLyBzZXQgdXAgZGF0YSBldmVudHMgaWYgdGhleSBhcmUgYXNrZWQgZm9yXG4vLyBFbnN1cmUgcmVhZGFibGUgbGlzdGVuZXJzIGV2ZW50dWFsbHkgZ2V0IHNvbWV0aGluZ1xuUmVhZGFibGUucHJvdG90eXBlLm9uID0gZnVuY3Rpb24gKGV2LCBmbikge1xuICB2YXIgcmVzID0gU3RyZWFtLnByb3RvdHlwZS5vbi5jYWxsKHRoaXMsIGV2LCBmbik7XG5cbiAgaWYgKGV2ID09PSAnZGF0YScpIHtcbiAgICAvLyBTdGFydCBmbG93aW5nIG9uIG5leHQgdGljayBpZiBzdHJlYW0gaXNuJ3QgZXhwbGljaXRseSBwYXVzZWRcbiAgICBpZiAodGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nICE9PSBmYWxzZSkgdGhpcy5yZXN1bWUoKTtcbiAgfSBlbHNlIGlmIChldiA9PT0gJ3JlYWRhYmxlJykge1xuICAgIHZhciBzdGF0ZSA9IHRoaXMuX3JlYWRhYmxlU3RhdGU7XG4gICAgaWYgKCFzdGF0ZS5lbmRFbWl0dGVkICYmICFzdGF0ZS5yZWFkYWJsZUxpc3RlbmluZykge1xuICAgICAgc3RhdGUucmVhZGFibGVMaXN0ZW5pbmcgPSBzdGF0ZS5uZWVkUmVhZGFibGUgPSB0cnVlO1xuICAgICAgc3RhdGUuZW1pdHRlZFJlYWRhYmxlID0gZmFsc2U7XG4gICAgICBpZiAoIXN0YXRlLnJlYWRpbmcpIHtcbiAgICAgICAgcHJvY2Vzc05leHRUaWNrKG5SZWFkaW5nTmV4dFRpY2ssIHRoaXMpO1xuICAgICAgfSBlbHNlIGlmIChzdGF0ZS5sZW5ndGgpIHtcbiAgICAgICAgZW1pdFJlYWRhYmxlKHRoaXMsIHN0YXRlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVzO1xufTtcblJlYWRhYmxlLnByb3RvdHlwZS5hZGRMaXN0ZW5lciA9IFJlYWRhYmxlLnByb3RvdHlwZS5vbjtcblxuZnVuY3Rpb24gblJlYWRpbmdOZXh0VGljayhzZWxmKSB7XG4gIGRlYnVnKCdyZWFkYWJsZSBuZXh0dGljayByZWFkIDAnKTtcbiAgc2VsZi5yZWFkKDApO1xufVxuXG4vLyBwYXVzZSgpIGFuZCByZXN1bWUoKSBhcmUgcmVtbmFudHMgb2YgdGhlIGxlZ2FjeSByZWFkYWJsZSBzdHJlYW0gQVBJXG4vLyBJZiB0aGUgdXNlciB1c2VzIHRoZW0sIHRoZW4gc3dpdGNoIGludG8gb2xkIG1vZGUuXG5SZWFkYWJsZS5wcm90b3R5cGUucmVzdW1lID0gZnVuY3Rpb24gKCkge1xuICB2YXIgc3RhdGUgPSB0aGlzLl9yZWFkYWJsZVN0YXRlO1xuICBpZiAoIXN0YXRlLmZsb3dpbmcpIHtcbiAgICBkZWJ1ZygncmVzdW1lJyk7XG4gICAgc3RhdGUuZmxvd2luZyA9IHRydWU7XG4gICAgcmVzdW1lKHRoaXMsIHN0YXRlKTtcbiAgfVxuICByZXR1cm4gdGhpcztcbn07XG5cbmZ1bmN0aW9uIHJlc3VtZShzdHJlYW0sIHN0YXRlKSB7XG4gIGlmICghc3RhdGUucmVzdW1lU2NoZWR1bGVkKSB7XG4gICAgc3RhdGUucmVzdW1lU2NoZWR1bGVkID0gdHJ1ZTtcbiAgICBwcm9jZXNzTmV4dFRpY2socmVzdW1lXywgc3RyZWFtLCBzdGF0ZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gcmVzdW1lXyhzdHJlYW0sIHN0YXRlKSB7XG4gIGlmICghc3RhdGUucmVhZGluZykge1xuICAgIGRlYnVnKCdyZXN1bWUgcmVhZCAwJyk7XG4gICAgc3RyZWFtLnJlYWQoMCk7XG4gIH1cblxuICBzdGF0ZS5yZXN1bWVTY2hlZHVsZWQgPSBmYWxzZTtcbiAgc3RhdGUuYXdhaXREcmFpbiA9IDA7XG4gIHN0cmVhbS5lbWl0KCdyZXN1bWUnKTtcbiAgZmxvdyhzdHJlYW0pO1xuICBpZiAoc3RhdGUuZmxvd2luZyAmJiAhc3RhdGUucmVhZGluZykgc3RyZWFtLnJlYWQoMCk7XG59XG5cblJlYWRhYmxlLnByb3RvdHlwZS5wYXVzZSA9IGZ1bmN0aW9uICgpIHtcbiAgZGVidWcoJ2NhbGwgcGF1c2UgZmxvd2luZz0laicsIHRoaXMuX3JlYWRhYmxlU3RhdGUuZmxvd2luZyk7XG4gIGlmIChmYWxzZSAhPT0gdGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nKSB7XG4gICAgZGVidWcoJ3BhdXNlJyk7XG4gICAgdGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nID0gZmFsc2U7XG4gICAgdGhpcy5lbWl0KCdwYXVzZScpO1xuICB9XG4gIHJldHVybiB0aGlzO1xufTtcblxuZnVuY3Rpb24gZmxvdyhzdHJlYW0pIHtcbiAgdmFyIHN0YXRlID0gc3RyZWFtLl9yZWFkYWJsZVN0YXRlO1xuICBkZWJ1ZygnZmxvdycsIHN0YXRlLmZsb3dpbmcpO1xuICB3aGlsZSAoc3RhdGUuZmxvd2luZyAmJiBzdHJlYW0ucmVhZCgpICE9PSBudWxsKSB7fVxufVxuXG4vLyB3cmFwIGFuIG9sZC1zdHlsZSBzdHJlYW0gYXMgdGhlIGFzeW5jIGRhdGEgc291cmNlLlxuLy8gVGhpcyBpcyAqbm90KiBwYXJ0IG9mIHRoZSByZWFkYWJsZSBzdHJlYW0gaW50ZXJmYWNlLlxuLy8gSXQgaXMgYW4gdWdseSB1bmZvcnR1bmF0ZSBtZXNzIG9mIGhpc3RvcnkuXG5SZWFkYWJsZS5wcm90b3R5cGUud3JhcCA9IGZ1bmN0aW9uIChzdHJlYW0pIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fcmVhZGFibGVTdGF0ZTtcbiAgdmFyIHBhdXNlZCA9IGZhbHNlO1xuXG4gIHZhciBzZWxmID0gdGhpcztcbiAgc3RyZWFtLm9uKCdlbmQnLCBmdW5jdGlvbiAoKSB7XG4gICAgZGVidWcoJ3dyYXBwZWQgZW5kJyk7XG4gICAgaWYgKHN0YXRlLmRlY29kZXIgJiYgIXN0YXRlLmVuZGVkKSB7XG4gICAgICB2YXIgY2h1bmsgPSBzdGF0ZS5kZWNvZGVyLmVuZCgpO1xuICAgICAgaWYgKGNodW5rICYmIGNodW5rLmxlbmd0aCkgc2VsZi5wdXNoKGNodW5rKTtcbiAgICB9XG5cbiAgICBzZWxmLnB1c2gobnVsbCk7XG4gIH0pO1xuXG4gIHN0cmVhbS5vbignZGF0YScsIGZ1bmN0aW9uIChjaHVuaykge1xuICAgIGRlYnVnKCd3cmFwcGVkIGRhdGEnKTtcbiAgICBpZiAoc3RhdGUuZGVjb2RlcikgY2h1bmsgPSBzdGF0ZS5kZWNvZGVyLndyaXRlKGNodW5rKTtcblxuICAgIC8vIGRvbid0IHNraXAgb3ZlciBmYWxzeSB2YWx1ZXMgaW4gb2JqZWN0TW9kZVxuICAgIGlmIChzdGF0ZS5vYmplY3RNb2RlICYmIChjaHVuayA9PT0gbnVsbCB8fCBjaHVuayA9PT0gdW5kZWZpbmVkKSkgcmV0dXJuO2Vsc2UgaWYgKCFzdGF0ZS5vYmplY3RNb2RlICYmICghY2h1bmsgfHwgIWNodW5rLmxlbmd0aCkpIHJldHVybjtcblxuICAgIHZhciByZXQgPSBzZWxmLnB1c2goY2h1bmspO1xuICAgIGlmICghcmV0KSB7XG4gICAgICBwYXVzZWQgPSB0cnVlO1xuICAgICAgc3RyZWFtLnBhdXNlKCk7XG4gICAgfVxuICB9KTtcblxuICAvLyBwcm94eSBhbGwgdGhlIG90aGVyIG1ldGhvZHMuXG4gIC8vIGltcG9ydGFudCB3aGVuIHdyYXBwaW5nIGZpbHRlcnMgYW5kIGR1cGxleGVzLlxuICBmb3IgKHZhciBpIGluIHN0cmVhbSkge1xuICAgIGlmICh0aGlzW2ldID09PSB1bmRlZmluZWQgJiYgdHlwZW9mIHN0cmVhbVtpXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhpc1tpXSA9IGZ1bmN0aW9uIChtZXRob2QpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4gc3RyZWFtW21ldGhvZF0uYXBwbHkoc3RyZWFtLCBhcmd1bWVudHMpO1xuICAgICAgICB9O1xuICAgICAgfShpKTtcbiAgICB9XG4gIH1cblxuICAvLyBwcm94eSBjZXJ0YWluIGltcG9ydGFudCBldmVudHMuXG4gIGZvciAodmFyIG4gPSAwOyBuIDwga1Byb3h5RXZlbnRzLmxlbmd0aDsgbisrKSB7XG4gICAgc3RyZWFtLm9uKGtQcm94eUV2ZW50c1tuXSwgc2VsZi5lbWl0LmJpbmQoc2VsZiwga1Byb3h5RXZlbnRzW25dKSk7XG4gIH1cblxuICAvLyB3aGVuIHdlIHRyeSB0byBjb25zdW1lIHNvbWUgbW9yZSBieXRlcywgc2ltcGx5IHVucGF1c2UgdGhlXG4gIC8vIHVuZGVybHlpbmcgc3RyZWFtLlxuICBzZWxmLl9yZWFkID0gZnVuY3Rpb24gKG4pIHtcbiAgICBkZWJ1Zygnd3JhcHBlZCBfcmVhZCcsIG4pO1xuICAgIGlmIChwYXVzZWQpIHtcbiAgICAgIHBhdXNlZCA9IGZhbHNlO1xuICAgICAgc3RyZWFtLnJlc3VtZSgpO1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4gc2VsZjtcbn07XG5cbi8vIGV4cG9zZWQgZm9yIHRlc3RpbmcgcHVycG9zZXMgb25seS5cblJlYWRhYmxlLl9mcm9tTGlzdCA9IGZyb21MaXN0O1xuXG4vLyBQbHVjayBvZmYgbiBieXRlcyBmcm9tIGFuIGFycmF5IG9mIGJ1ZmZlcnMuXG4vLyBMZW5ndGggaXMgdGhlIGNvbWJpbmVkIGxlbmd0aHMgb2YgYWxsIHRoZSBidWZmZXJzIGluIHRoZSBsaXN0LlxuLy8gVGhpcyBmdW5jdGlvbiBpcyBkZXNpZ25lZCB0byBiZSBpbmxpbmFibGUsIHNvIHBsZWFzZSB0YWtlIGNhcmUgd2hlbiBtYWtpbmdcbi8vIGNoYW5nZXMgdG8gdGhlIGZ1bmN0aW9uIGJvZHkuXG5mdW5jdGlvbiBmcm9tTGlzdChuLCBzdGF0ZSkge1xuICAvLyBub3RoaW5nIGJ1ZmZlcmVkXG4gIGlmIChzdGF0ZS5sZW5ndGggPT09IDApIHJldHVybiBudWxsO1xuXG4gIHZhciByZXQ7XG4gIGlmIChzdGF0ZS5vYmplY3RNb2RlKSByZXQgPSBzdGF0ZS5idWZmZXIuc2hpZnQoKTtlbHNlIGlmICghbiB8fCBuID49IHN0YXRlLmxlbmd0aCkge1xuICAgIC8vIHJlYWQgaXQgYWxsLCB0cnVuY2F0ZSB0aGUgbGlzdFxuICAgIGlmIChzdGF0ZS5kZWNvZGVyKSByZXQgPSBzdGF0ZS5idWZmZXIuam9pbignJyk7ZWxzZSBpZiAoc3RhdGUuYnVmZmVyLmxlbmd0aCA9PT0gMSkgcmV0ID0gc3RhdGUuYnVmZmVyLmhlYWQuZGF0YTtlbHNlIHJldCA9IHN0YXRlLmJ1ZmZlci5jb25jYXQoc3RhdGUubGVuZ3RoKTtcbiAgICBzdGF0ZS5idWZmZXIuY2xlYXIoKTtcbiAgfSBlbHNlIHtcbiAgICAvLyByZWFkIHBhcnQgb2YgbGlzdFxuICAgIHJldCA9IGZyb21MaXN0UGFydGlhbChuLCBzdGF0ZS5idWZmZXIsIHN0YXRlLmRlY29kZXIpO1xuICB9XG5cbiAgcmV0dXJuIHJldDtcbn1cblxuLy8gRXh0cmFjdHMgb25seSBlbm91Z2ggYnVmZmVyZWQgZGF0YSB0byBzYXRpc2Z5IHRoZSBhbW91bnQgcmVxdWVzdGVkLlxuLy8gVGhpcyBmdW5jdGlvbiBpcyBkZXNpZ25lZCB0byBiZSBpbmxpbmFibGUsIHNvIHBsZWFzZSB0YWtlIGNhcmUgd2hlbiBtYWtpbmdcbi8vIGNoYW5nZXMgdG8gdGhlIGZ1bmN0aW9uIGJvZHkuXG5mdW5jdGlvbiBmcm9tTGlzdFBhcnRpYWwobiwgbGlzdCwgaGFzU3RyaW5ncykge1xuICB2YXIgcmV0O1xuICBpZiAobiA8IGxpc3QuaGVhZC5kYXRhLmxlbmd0aCkge1xuICAgIC8vIHNsaWNlIGlzIHRoZSBzYW1lIGZvciBidWZmZXJzIGFuZCBzdHJpbmdzXG4gICAgcmV0ID0gbGlzdC5oZWFkLmRhdGEuc2xpY2UoMCwgbik7XG4gICAgbGlzdC5oZWFkLmRhdGEgPSBsaXN0LmhlYWQuZGF0YS5zbGljZShuKTtcbiAgfSBlbHNlIGlmIChuID09PSBsaXN0LmhlYWQuZGF0YS5sZW5ndGgpIHtcbiAgICAvLyBmaXJzdCBjaHVuayBpcyBhIHBlcmZlY3QgbWF0Y2hcbiAgICByZXQgPSBsaXN0LnNoaWZ0KCk7XG4gIH0gZWxzZSB7XG4gICAgLy8gcmVzdWx0IHNwYW5zIG1vcmUgdGhhbiBvbmUgYnVmZmVyXG4gICAgcmV0ID0gaGFzU3RyaW5ncyA/IGNvcHlGcm9tQnVmZmVyU3RyaW5nKG4sIGxpc3QpIDogY29weUZyb21CdWZmZXIobiwgbGlzdCk7XG4gIH1cbiAgcmV0dXJuIHJldDtcbn1cblxuLy8gQ29waWVzIGEgc3BlY2lmaWVkIGFtb3VudCBvZiBjaGFyYWN0ZXJzIGZyb20gdGhlIGxpc3Qgb2YgYnVmZmVyZWQgZGF0YVxuLy8gY2h1bmtzLlxuLy8gVGhpcyBmdW5jdGlvbiBpcyBkZXNpZ25lZCB0byBiZSBpbmxpbmFibGUsIHNvIHBsZWFzZSB0YWtlIGNhcmUgd2hlbiBtYWtpbmdcbi8vIGNoYW5nZXMgdG8gdGhlIGZ1bmN0aW9uIGJvZHkuXG5mdW5jdGlvbiBjb3B5RnJvbUJ1ZmZlclN0cmluZyhuLCBsaXN0KSB7XG4gIHZhciBwID0gbGlzdC5oZWFkO1xuICB2YXIgYyA9IDE7XG4gIHZhciByZXQgPSBwLmRhdGE7XG4gIG4gLT0gcmV0Lmxlbmd0aDtcbiAgd2hpbGUgKHAgPSBwLm5leHQpIHtcbiAgICB2YXIgc3RyID0gcC5kYXRhO1xuICAgIHZhciBuYiA9IG4gPiBzdHIubGVuZ3RoID8gc3RyLmxlbmd0aCA6IG47XG4gICAgaWYgKG5iID09PSBzdHIubGVuZ3RoKSByZXQgKz0gc3RyO2Vsc2UgcmV0ICs9IHN0ci5zbGljZSgwLCBuKTtcbiAgICBuIC09IG5iO1xuICAgIGlmIChuID09PSAwKSB7XG4gICAgICBpZiAobmIgPT09IHN0ci5sZW5ndGgpIHtcbiAgICAgICAgKytjO1xuICAgICAgICBpZiAocC5uZXh0KSBsaXN0LmhlYWQgPSBwLm5leHQ7ZWxzZSBsaXN0LmhlYWQgPSBsaXN0LnRhaWwgPSBudWxsO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGlzdC5oZWFkID0gcDtcbiAgICAgICAgcC5kYXRhID0gc3RyLnNsaWNlKG5iKTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICArK2M7XG4gIH1cbiAgbGlzdC5sZW5ndGggLT0gYztcbiAgcmV0dXJuIHJldDtcbn1cblxuLy8gQ29waWVzIGEgc3BlY2lmaWVkIGFtb3VudCBvZiBieXRlcyBmcm9tIHRoZSBsaXN0IG9mIGJ1ZmZlcmVkIGRhdGEgY2h1bmtzLlxuLy8gVGhpcyBmdW5jdGlvbiBpcyBkZXNpZ25lZCB0byBiZSBpbmxpbmFibGUsIHNvIHBsZWFzZSB0YWtlIGNhcmUgd2hlbiBtYWtpbmdcbi8vIGNoYW5nZXMgdG8gdGhlIGZ1bmN0aW9uIGJvZHkuXG5mdW5jdGlvbiBjb3B5RnJvbUJ1ZmZlcihuLCBsaXN0KSB7XG4gIHZhciByZXQgPSBidWZmZXJTaGltLmFsbG9jVW5zYWZlKG4pO1xuICB2YXIgcCA9IGxpc3QuaGVhZDtcbiAgdmFyIGMgPSAxO1xuICBwLmRhdGEuY29weShyZXQpO1xuICBuIC09IHAuZGF0YS5sZW5ndGg7XG4gIHdoaWxlIChwID0gcC5uZXh0KSB7XG4gICAgdmFyIGJ1ZiA9IHAuZGF0YTtcbiAgICB2YXIgbmIgPSBuID4gYnVmLmxlbmd0aCA/IGJ1Zi5sZW5ndGggOiBuO1xuICAgIGJ1Zi5jb3B5KHJldCwgcmV0Lmxlbmd0aCAtIG4sIDAsIG5iKTtcbiAgICBuIC09IG5iO1xuICAgIGlmIChuID09PSAwKSB7XG4gICAgICBpZiAobmIgPT09IGJ1Zi5sZW5ndGgpIHtcbiAgICAgICAgKytjO1xuICAgICAgICBpZiAocC5uZXh0KSBsaXN0LmhlYWQgPSBwLm5leHQ7ZWxzZSBsaXN0LmhlYWQgPSBsaXN0LnRhaWwgPSBudWxsO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGlzdC5oZWFkID0gcDtcbiAgICAgICAgcC5kYXRhID0gYnVmLnNsaWNlKG5iKTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICArK2M7XG4gIH1cbiAgbGlzdC5sZW5ndGggLT0gYztcbiAgcmV0dXJuIHJldDtcbn1cblxuZnVuY3Rpb24gZW5kUmVhZGFibGUoc3RyZWFtKSB7XG4gIHZhciBzdGF0ZSA9IHN0cmVhbS5fcmVhZGFibGVTdGF0ZTtcblxuICAvLyBJZiB3ZSBnZXQgaGVyZSBiZWZvcmUgY29uc3VtaW5nIGFsbCB0aGUgYnl0ZXMsIHRoZW4gdGhhdCBpcyBhXG4gIC8vIGJ1ZyBpbiBub2RlLiAgU2hvdWxkIG5ldmVyIGhhcHBlbi5cbiAgaWYgKHN0YXRlLmxlbmd0aCA+IDApIHRocm93IG5ldyBFcnJvcignXCJlbmRSZWFkYWJsZSgpXCIgY2FsbGVkIG9uIG5vbi1lbXB0eSBzdHJlYW0nKTtcblxuICBpZiAoIXN0YXRlLmVuZEVtaXR0ZWQpIHtcbiAgICBzdGF0ZS5lbmRlZCA9IHRydWU7XG4gICAgcHJvY2Vzc05leHRUaWNrKGVuZFJlYWRhYmxlTlQsIHN0YXRlLCBzdHJlYW0pO1xuICB9XG59XG5cbmZ1bmN0aW9uIGVuZFJlYWRhYmxlTlQoc3RhdGUsIHN0cmVhbSkge1xuICAvLyBDaGVjayB0aGF0IHdlIGRpZG4ndCBnZXQgb25lIGxhc3QgdW5zaGlmdC5cbiAgaWYgKCFzdGF0ZS5lbmRFbWl0dGVkICYmIHN0YXRlLmxlbmd0aCA9PT0gMCkge1xuICAgIHN0YXRlLmVuZEVtaXR0ZWQgPSB0cnVlO1xuICAgIHN0cmVhbS5yZWFkYWJsZSA9IGZhbHNlO1xuICAgIHN0cmVhbS5lbWl0KCdlbmQnKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBmb3JFYWNoKHhzLCBmKSB7XG4gIGZvciAodmFyIGkgPSAwLCBsID0geHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgZih4c1tpXSwgaSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gaW5kZXhPZih4cywgeCkge1xuICBmb3IgKHZhciBpID0gMCwgbCA9IHhzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIGlmICh4c1tpXSA9PT0geCkgcmV0dXJuIGk7XG4gIH1cbiAgcmV0dXJuIC0xO1xufSIsIi8vIGEgdHJhbnNmb3JtIHN0cmVhbSBpcyBhIHJlYWRhYmxlL3dyaXRhYmxlIHN0cmVhbSB3aGVyZSB5b3UgZG9cbi8vIHNvbWV0aGluZyB3aXRoIHRoZSBkYXRhLiAgU29tZXRpbWVzIGl0J3MgY2FsbGVkIGEgXCJmaWx0ZXJcIixcbi8vIGJ1dCB0aGF0J3Mgbm90IGEgZ3JlYXQgbmFtZSBmb3IgaXQsIHNpbmNlIHRoYXQgaW1wbGllcyBhIHRoaW5nIHdoZXJlXG4vLyBzb21lIGJpdHMgcGFzcyB0aHJvdWdoLCBhbmQgb3RoZXJzIGFyZSBzaW1wbHkgaWdub3JlZC4gIChUaGF0IHdvdWxkXG4vLyBiZSBhIHZhbGlkIGV4YW1wbGUgb2YgYSB0cmFuc2Zvcm0sIG9mIGNvdXJzZS4pXG4vL1xuLy8gV2hpbGUgdGhlIG91dHB1dCBpcyBjYXVzYWxseSByZWxhdGVkIHRvIHRoZSBpbnB1dCwgaXQncyBub3QgYVxuLy8gbmVjZXNzYXJpbHkgc3ltbWV0cmljIG9yIHN5bmNocm9ub3VzIHRyYW5zZm9ybWF0aW9uLiAgRm9yIGV4YW1wbGUsXG4vLyBhIHpsaWIgc3RyZWFtIG1pZ2h0IHRha2UgbXVsdGlwbGUgcGxhaW4tdGV4dCB3cml0ZXMoKSwgYW5kIHRoZW5cbi8vIGVtaXQgYSBzaW5nbGUgY29tcHJlc3NlZCBjaHVuayBzb21lIHRpbWUgaW4gdGhlIGZ1dHVyZS5cbi8vXG4vLyBIZXJlJ3MgaG93IHRoaXMgd29ya3M6XG4vL1xuLy8gVGhlIFRyYW5zZm9ybSBzdHJlYW0gaGFzIGFsbCB0aGUgYXNwZWN0cyBvZiB0aGUgcmVhZGFibGUgYW5kIHdyaXRhYmxlXG4vLyBzdHJlYW0gY2xhc3Nlcy4gIFdoZW4geW91IHdyaXRlKGNodW5rKSwgdGhhdCBjYWxscyBfd3JpdGUoY2h1bmssY2IpXG4vLyBpbnRlcm5hbGx5LCBhbmQgcmV0dXJucyBmYWxzZSBpZiB0aGVyZSdzIGEgbG90IG9mIHBlbmRpbmcgd3JpdGVzXG4vLyBidWZmZXJlZCB1cC4gIFdoZW4geW91IGNhbGwgcmVhZCgpLCB0aGF0IGNhbGxzIF9yZWFkKG4pIHVudGlsXG4vLyB0aGVyZSdzIGVub3VnaCBwZW5kaW5nIHJlYWRhYmxlIGRhdGEgYnVmZmVyZWQgdXAuXG4vL1xuLy8gSW4gYSB0cmFuc2Zvcm0gc3RyZWFtLCB0aGUgd3JpdHRlbiBkYXRhIGlzIHBsYWNlZCBpbiBhIGJ1ZmZlci4gIFdoZW5cbi8vIF9yZWFkKG4pIGlzIGNhbGxlZCwgaXQgdHJhbnNmb3JtcyB0aGUgcXVldWVkIHVwIGRhdGEsIGNhbGxpbmcgdGhlXG4vLyBidWZmZXJlZCBfd3JpdGUgY2IncyBhcyBpdCBjb25zdW1lcyBjaHVua3MuICBJZiBjb25zdW1pbmcgYSBzaW5nbGVcbi8vIHdyaXR0ZW4gY2h1bmsgd291bGQgcmVzdWx0IGluIG11bHRpcGxlIG91dHB1dCBjaHVua3MsIHRoZW4gdGhlIGZpcnN0XG4vLyBvdXRwdXR0ZWQgYml0IGNhbGxzIHRoZSByZWFkY2IsIGFuZCBzdWJzZXF1ZW50IGNodW5rcyBqdXN0IGdvIGludG9cbi8vIHRoZSByZWFkIGJ1ZmZlciwgYW5kIHdpbGwgY2F1c2UgaXQgdG8gZW1pdCAncmVhZGFibGUnIGlmIG5lY2Vzc2FyeS5cbi8vXG4vLyBUaGlzIHdheSwgYmFjay1wcmVzc3VyZSBpcyBhY3R1YWxseSBkZXRlcm1pbmVkIGJ5IHRoZSByZWFkaW5nIHNpZGUsXG4vLyBzaW5jZSBfcmVhZCBoYXMgdG8gYmUgY2FsbGVkIHRvIHN0YXJ0IHByb2Nlc3NpbmcgYSBuZXcgY2h1bmsuICBIb3dldmVyLFxuLy8gYSBwYXRob2xvZ2ljYWwgaW5mbGF0ZSB0eXBlIG9mIHRyYW5zZm9ybSBjYW4gY2F1c2UgZXhjZXNzaXZlIGJ1ZmZlcmluZ1xuLy8gaGVyZS4gIEZvciBleGFtcGxlLCBpbWFnaW5lIGEgc3RyZWFtIHdoZXJlIGV2ZXJ5IGJ5dGUgb2YgaW5wdXQgaXNcbi8vIGludGVycHJldGVkIGFzIGFuIGludGVnZXIgZnJvbSAwLTI1NSwgYW5kIHRoZW4gcmVzdWx0cyBpbiB0aGF0IG1hbnlcbi8vIGJ5dGVzIG9mIG91dHB1dC4gIFdyaXRpbmcgdGhlIDQgYnl0ZXMge2ZmLGZmLGZmLGZmfSB3b3VsZCByZXN1bHQgaW5cbi8vIDFrYiBvZiBkYXRhIGJlaW5nIG91dHB1dC4gIEluIHRoaXMgY2FzZSwgeW91IGNvdWxkIHdyaXRlIGEgdmVyeSBzbWFsbFxuLy8gYW1vdW50IG9mIGlucHV0LCBhbmQgZW5kIHVwIHdpdGggYSB2ZXJ5IGxhcmdlIGFtb3VudCBvZiBvdXRwdXQuICBJblxuLy8gc3VjaCBhIHBhdGhvbG9naWNhbCBpbmZsYXRpbmcgbWVjaGFuaXNtLCB0aGVyZSdkIGJlIG5vIHdheSB0byB0ZWxsXG4vLyB0aGUgc3lzdGVtIHRvIHN0b3AgZG9pbmcgdGhlIHRyYW5zZm9ybS4gIEEgc2luZ2xlIDRNQiB3cml0ZSBjb3VsZFxuLy8gY2F1c2UgdGhlIHN5c3RlbSB0byBydW4gb3V0IG9mIG1lbW9yeS5cbi8vXG4vLyBIb3dldmVyLCBldmVuIGluIHN1Y2ggYSBwYXRob2xvZ2ljYWwgY2FzZSwgb25seSBhIHNpbmdsZSB3cml0dGVuIGNodW5rXG4vLyB3b3VsZCBiZSBjb25zdW1lZCwgYW5kIHRoZW4gdGhlIHJlc3Qgd291bGQgd2FpdCAodW4tdHJhbnNmb3JtZWQpIHVudGlsXG4vLyB0aGUgcmVzdWx0cyBvZiB0aGUgcHJldmlvdXMgdHJhbnNmb3JtZWQgY2h1bmsgd2VyZSBjb25zdW1lZC5cblxuJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFRyYW5zZm9ybTtcblxudmFyIER1cGxleCA9IHJlcXVpcmUoJy4vX3N0cmVhbV9kdXBsZXgnKTtcblxuLyo8cmVwbGFjZW1lbnQ+Ki9cbnZhciB1dGlsID0gcmVxdWlyZSgnY29yZS11dGlsLWlzJyk7XG51dGlsLmluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG51dGlsLmluaGVyaXRzKFRyYW5zZm9ybSwgRHVwbGV4KTtcblxuZnVuY3Rpb24gVHJhbnNmb3JtU3RhdGUoc3RyZWFtKSB7XG4gIHRoaXMuYWZ0ZXJUcmFuc2Zvcm0gPSBmdW5jdGlvbiAoZXIsIGRhdGEpIHtcbiAgICByZXR1cm4gYWZ0ZXJUcmFuc2Zvcm0oc3RyZWFtLCBlciwgZGF0YSk7XG4gIH07XG5cbiAgdGhpcy5uZWVkVHJhbnNmb3JtID0gZmFsc2U7XG4gIHRoaXMudHJhbnNmb3JtaW5nID0gZmFsc2U7XG4gIHRoaXMud3JpdGVjYiA9IG51bGw7XG4gIHRoaXMud3JpdGVjaHVuayA9IG51bGw7XG4gIHRoaXMud3JpdGVlbmNvZGluZyA9IG51bGw7XG59XG5cbmZ1bmN0aW9uIGFmdGVyVHJhbnNmb3JtKHN0cmVhbSwgZXIsIGRhdGEpIHtcbiAgdmFyIHRzID0gc3RyZWFtLl90cmFuc2Zvcm1TdGF0ZTtcbiAgdHMudHJhbnNmb3JtaW5nID0gZmFsc2U7XG5cbiAgdmFyIGNiID0gdHMud3JpdGVjYjtcblxuICBpZiAoIWNiKSByZXR1cm4gc3RyZWFtLmVtaXQoJ2Vycm9yJywgbmV3IEVycm9yKCdubyB3cml0ZWNiIGluIFRyYW5zZm9ybSBjbGFzcycpKTtcblxuICB0cy53cml0ZWNodW5rID0gbnVsbDtcbiAgdHMud3JpdGVjYiA9IG51bGw7XG5cbiAgaWYgKGRhdGEgIT09IG51bGwgJiYgZGF0YSAhPT0gdW5kZWZpbmVkKSBzdHJlYW0ucHVzaChkYXRhKTtcblxuICBjYihlcik7XG5cbiAgdmFyIHJzID0gc3RyZWFtLl9yZWFkYWJsZVN0YXRlO1xuICBycy5yZWFkaW5nID0gZmFsc2U7XG4gIGlmIChycy5uZWVkUmVhZGFibGUgfHwgcnMubGVuZ3RoIDwgcnMuaGlnaFdhdGVyTWFyaykge1xuICAgIHN0cmVhbS5fcmVhZChycy5oaWdoV2F0ZXJNYXJrKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBUcmFuc2Zvcm0ob3B0aW9ucykge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgVHJhbnNmb3JtKSkgcmV0dXJuIG5ldyBUcmFuc2Zvcm0ob3B0aW9ucyk7XG5cbiAgRHVwbGV4LmNhbGwodGhpcywgb3B0aW9ucyk7XG5cbiAgdGhpcy5fdHJhbnNmb3JtU3RhdGUgPSBuZXcgVHJhbnNmb3JtU3RhdGUodGhpcyk7XG5cbiAgdmFyIHN0cmVhbSA9IHRoaXM7XG5cbiAgLy8gc3RhcnQgb3V0IGFza2luZyBmb3IgYSByZWFkYWJsZSBldmVudCBvbmNlIGRhdGEgaXMgdHJhbnNmb3JtZWQuXG4gIHRoaXMuX3JlYWRhYmxlU3RhdGUubmVlZFJlYWRhYmxlID0gdHJ1ZTtcblxuICAvLyB3ZSBoYXZlIGltcGxlbWVudGVkIHRoZSBfcmVhZCBtZXRob2QsIGFuZCBkb25lIHRoZSBvdGhlciB0aGluZ3NcbiAgLy8gdGhhdCBSZWFkYWJsZSB3YW50cyBiZWZvcmUgdGhlIGZpcnN0IF9yZWFkIGNhbGwsIHNvIHVuc2V0IHRoZVxuICAvLyBzeW5jIGd1YXJkIGZsYWcuXG4gIHRoaXMuX3JlYWRhYmxlU3RhdGUuc3luYyA9IGZhbHNlO1xuXG4gIGlmIChvcHRpb25zKSB7XG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLnRyYW5zZm9ybSA9PT0gJ2Z1bmN0aW9uJykgdGhpcy5fdHJhbnNmb3JtID0gb3B0aW9ucy50cmFuc2Zvcm07XG5cbiAgICBpZiAodHlwZW9mIG9wdGlvbnMuZmx1c2ggPT09ICdmdW5jdGlvbicpIHRoaXMuX2ZsdXNoID0gb3B0aW9ucy5mbHVzaDtcbiAgfVxuXG4gIC8vIFdoZW4gdGhlIHdyaXRhYmxlIHNpZGUgZmluaXNoZXMsIHRoZW4gZmx1c2ggb3V0IGFueXRoaW5nIHJlbWFpbmluZy5cbiAgdGhpcy5vbmNlKCdwcmVmaW5pc2gnLCBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHR5cGVvZiB0aGlzLl9mbHVzaCA9PT0gJ2Z1bmN0aW9uJykgdGhpcy5fZmx1c2goZnVuY3Rpb24gKGVyLCBkYXRhKSB7XG4gICAgICBkb25lKHN0cmVhbSwgZXIsIGRhdGEpO1xuICAgIH0pO2Vsc2UgZG9uZShzdHJlYW0pO1xuICB9KTtcbn1cblxuVHJhbnNmb3JtLnByb3RvdHlwZS5wdXNoID0gZnVuY3Rpb24gKGNodW5rLCBlbmNvZGluZykge1xuICB0aGlzLl90cmFuc2Zvcm1TdGF0ZS5uZWVkVHJhbnNmb3JtID0gZmFsc2U7XG4gIHJldHVybiBEdXBsZXgucHJvdG90eXBlLnB1c2guY2FsbCh0aGlzLCBjaHVuaywgZW5jb2RpbmcpO1xufTtcblxuLy8gVGhpcyBpcyB0aGUgcGFydCB3aGVyZSB5b3UgZG8gc3R1ZmYhXG4vLyBvdmVycmlkZSB0aGlzIGZ1bmN0aW9uIGluIGltcGxlbWVudGF0aW9uIGNsYXNzZXMuXG4vLyAnY2h1bmsnIGlzIGFuIGlucHV0IGNodW5rLlxuLy9cbi8vIENhbGwgYHB1c2gobmV3Q2h1bmspYCB0byBwYXNzIGFsb25nIHRyYW5zZm9ybWVkIG91dHB1dFxuLy8gdG8gdGhlIHJlYWRhYmxlIHNpZGUuICBZb3UgbWF5IGNhbGwgJ3B1c2gnIHplcm8gb3IgbW9yZSB0aW1lcy5cbi8vXG4vLyBDYWxsIGBjYihlcnIpYCB3aGVuIHlvdSBhcmUgZG9uZSB3aXRoIHRoaXMgY2h1bmsuICBJZiB5b3UgcGFzc1xuLy8gYW4gZXJyb3IsIHRoZW4gdGhhdCdsbCBwdXQgdGhlIGh1cnQgb24gdGhlIHdob2xlIG9wZXJhdGlvbi4gIElmIHlvdVxuLy8gbmV2ZXIgY2FsbCBjYigpLCB0aGVuIHlvdSdsbCBuZXZlciBnZXQgYW5vdGhlciBjaHVuay5cblRyYW5zZm9ybS5wcm90b3R5cGUuX3RyYW5zZm9ybSA9IGZ1bmN0aW9uIChjaHVuaywgZW5jb2RpbmcsIGNiKSB7XG4gIHRocm93IG5ldyBFcnJvcignX3RyYW5zZm9ybSgpIGlzIG5vdCBpbXBsZW1lbnRlZCcpO1xufTtcblxuVHJhbnNmb3JtLnByb3RvdHlwZS5fd3JpdGUgPSBmdW5jdGlvbiAoY2h1bmssIGVuY29kaW5nLCBjYikge1xuICB2YXIgdHMgPSB0aGlzLl90cmFuc2Zvcm1TdGF0ZTtcbiAgdHMud3JpdGVjYiA9IGNiO1xuICB0cy53cml0ZWNodW5rID0gY2h1bms7XG4gIHRzLndyaXRlZW5jb2RpbmcgPSBlbmNvZGluZztcbiAgaWYgKCF0cy50cmFuc2Zvcm1pbmcpIHtcbiAgICB2YXIgcnMgPSB0aGlzLl9yZWFkYWJsZVN0YXRlO1xuICAgIGlmICh0cy5uZWVkVHJhbnNmb3JtIHx8IHJzLm5lZWRSZWFkYWJsZSB8fCBycy5sZW5ndGggPCBycy5oaWdoV2F0ZXJNYXJrKSB0aGlzLl9yZWFkKHJzLmhpZ2hXYXRlck1hcmspO1xuICB9XG59O1xuXG4vLyBEb2Vzbid0IG1hdHRlciB3aGF0IHRoZSBhcmdzIGFyZSBoZXJlLlxuLy8gX3RyYW5zZm9ybSBkb2VzIGFsbCB0aGUgd29yay5cbi8vIFRoYXQgd2UgZ290IGhlcmUgbWVhbnMgdGhhdCB0aGUgcmVhZGFibGUgc2lkZSB3YW50cyBtb3JlIGRhdGEuXG5UcmFuc2Zvcm0ucHJvdG90eXBlLl9yZWFkID0gZnVuY3Rpb24gKG4pIHtcbiAgdmFyIHRzID0gdGhpcy5fdHJhbnNmb3JtU3RhdGU7XG5cbiAgaWYgKHRzLndyaXRlY2h1bmsgIT09IG51bGwgJiYgdHMud3JpdGVjYiAmJiAhdHMudHJhbnNmb3JtaW5nKSB7XG4gICAgdHMudHJhbnNmb3JtaW5nID0gdHJ1ZTtcbiAgICB0aGlzLl90cmFuc2Zvcm0odHMud3JpdGVjaHVuaywgdHMud3JpdGVlbmNvZGluZywgdHMuYWZ0ZXJUcmFuc2Zvcm0pO1xuICB9IGVsc2Uge1xuICAgIC8vIG1hcmsgdGhhdCB3ZSBuZWVkIGEgdHJhbnNmb3JtLCBzbyB0aGF0IGFueSBkYXRhIHRoYXQgY29tZXMgaW5cbiAgICAvLyB3aWxsIGdldCBwcm9jZXNzZWQsIG5vdyB0aGF0IHdlJ3ZlIGFza2VkIGZvciBpdC5cbiAgICB0cy5uZWVkVHJhbnNmb3JtID0gdHJ1ZTtcbiAgfVxufTtcblxuZnVuY3Rpb24gZG9uZShzdHJlYW0sIGVyLCBkYXRhKSB7XG4gIGlmIChlcikgcmV0dXJuIHN0cmVhbS5lbWl0KCdlcnJvcicsIGVyKTtcblxuICBpZiAoZGF0YSAhPT0gbnVsbCAmJiBkYXRhICE9PSB1bmRlZmluZWQpIHN0cmVhbS5wdXNoKGRhdGEpO1xuXG4gIC8vIGlmIHRoZXJlJ3Mgbm90aGluZyBpbiB0aGUgd3JpdGUgYnVmZmVyLCB0aGVuIHRoYXQgbWVhbnNcbiAgLy8gdGhhdCBub3RoaW5nIG1vcmUgd2lsbCBldmVyIGJlIHByb3ZpZGVkXG4gIHZhciB3cyA9IHN0cmVhbS5fd3JpdGFibGVTdGF0ZTtcbiAgdmFyIHRzID0gc3RyZWFtLl90cmFuc2Zvcm1TdGF0ZTtcblxuICBpZiAod3MubGVuZ3RoKSB0aHJvdyBuZXcgRXJyb3IoJ0NhbGxpbmcgdHJhbnNmb3JtIGRvbmUgd2hlbiB3cy5sZW5ndGggIT0gMCcpO1xuXG4gIGlmICh0cy50cmFuc2Zvcm1pbmcpIHRocm93IG5ldyBFcnJvcignQ2FsbGluZyB0cmFuc2Zvcm0gZG9uZSB3aGVuIHN0aWxsIHRyYW5zZm9ybWluZycpO1xuXG4gIHJldHVybiBzdHJlYW0ucHVzaChudWxsKTtcbn0iLCIvLyBBIGJpdCBzaW1wbGVyIHRoYW4gcmVhZGFibGUgc3RyZWFtcy5cbi8vIEltcGxlbWVudCBhbiBhc3luYyAuX3dyaXRlKGNodW5rLCBlbmNvZGluZywgY2IpLCBhbmQgaXQnbGwgaGFuZGxlIGFsbFxuLy8gdGhlIGRyYWluIGV2ZW50IGVtaXNzaW9uIGFuZCBidWZmZXJpbmcuXG5cbid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSBXcml0YWJsZTtcblxuLyo8cmVwbGFjZW1lbnQ+Ki9cbnZhciBwcm9jZXNzTmV4dFRpY2sgPSByZXF1aXJlKCdwcm9jZXNzLW5leHRpY2stYXJncycpO1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbi8qPHJlcGxhY2VtZW50PiovXG52YXIgYXN5bmNXcml0ZSA9ICFwcm9jZXNzLmJyb3dzZXIgJiYgWyd2MC4xMCcsICd2MC45LiddLmluZGV4T2YocHJvY2Vzcy52ZXJzaW9uLnNsaWNlKDAsIDUpKSA+IC0xID8gc2V0SW1tZWRpYXRlIDogcHJvY2Vzc05leHRUaWNrO1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbi8qPHJlcGxhY2VtZW50PiovXG52YXIgRHVwbGV4O1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbldyaXRhYmxlLldyaXRhYmxlU3RhdGUgPSBXcml0YWJsZVN0YXRlO1xuXG4vKjxyZXBsYWNlbWVudD4qL1xudmFyIHV0aWwgPSByZXF1aXJlKCdjb3JlLXV0aWwtaXMnKTtcbnV0aWwuaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpO1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbi8qPHJlcGxhY2VtZW50PiovXG52YXIgaW50ZXJuYWxVdGlsID0ge1xuICBkZXByZWNhdGU6IHJlcXVpcmUoJ3V0aWwtZGVwcmVjYXRlJylcbn07XG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxuLyo8cmVwbGFjZW1lbnQ+Ki9cbnZhciBTdHJlYW0gPSByZXF1aXJlKCcuL2ludGVybmFsL3N0cmVhbXMvc3RyZWFtJyk7XG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxudmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ2J1ZmZlcicpLkJ1ZmZlcjtcbi8qPHJlcGxhY2VtZW50PiovXG52YXIgYnVmZmVyU2hpbSA9IHJlcXVpcmUoJ2J1ZmZlci1zaGltcycpO1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbnV0aWwuaW5oZXJpdHMoV3JpdGFibGUsIFN0cmVhbSk7XG5cbmZ1bmN0aW9uIG5vcCgpIHt9XG5cbmZ1bmN0aW9uIFdyaXRlUmVxKGNodW5rLCBlbmNvZGluZywgY2IpIHtcbiAgdGhpcy5jaHVuayA9IGNodW5rO1xuICB0aGlzLmVuY29kaW5nID0gZW5jb2Rpbmc7XG4gIHRoaXMuY2FsbGJhY2sgPSBjYjtcbiAgdGhpcy5uZXh0ID0gbnVsbDtcbn1cblxuZnVuY3Rpb24gV3JpdGFibGVTdGF0ZShvcHRpb25zLCBzdHJlYW0pIHtcbiAgRHVwbGV4ID0gRHVwbGV4IHx8IHJlcXVpcmUoJy4vX3N0cmVhbV9kdXBsZXgnKTtcblxuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcblxuICAvLyBvYmplY3Qgc3RyZWFtIGZsYWcgdG8gaW5kaWNhdGUgd2hldGhlciBvciBub3QgdGhpcyBzdHJlYW1cbiAgLy8gY29udGFpbnMgYnVmZmVycyBvciBvYmplY3RzLlxuICB0aGlzLm9iamVjdE1vZGUgPSAhIW9wdGlvbnMub2JqZWN0TW9kZTtcblxuICBpZiAoc3RyZWFtIGluc3RhbmNlb2YgRHVwbGV4KSB0aGlzLm9iamVjdE1vZGUgPSB0aGlzLm9iamVjdE1vZGUgfHwgISFvcHRpb25zLndyaXRhYmxlT2JqZWN0TW9kZTtcblxuICAvLyB0aGUgcG9pbnQgYXQgd2hpY2ggd3JpdGUoKSBzdGFydHMgcmV0dXJuaW5nIGZhbHNlXG4gIC8vIE5vdGU6IDAgaXMgYSB2YWxpZCB2YWx1ZSwgbWVhbnMgdGhhdCB3ZSBhbHdheXMgcmV0dXJuIGZhbHNlIGlmXG4gIC8vIHRoZSBlbnRpcmUgYnVmZmVyIGlzIG5vdCBmbHVzaGVkIGltbWVkaWF0ZWx5IG9uIHdyaXRlKClcbiAgdmFyIGh3bSA9IG9wdGlvbnMuaGlnaFdhdGVyTWFyaztcbiAgdmFyIGRlZmF1bHRId20gPSB0aGlzLm9iamVjdE1vZGUgPyAxNiA6IDE2ICogMTAyNDtcbiAgdGhpcy5oaWdoV2F0ZXJNYXJrID0gaHdtIHx8IGh3bSA9PT0gMCA/IGh3bSA6IGRlZmF1bHRId207XG5cbiAgLy8gY2FzdCB0byBpbnRzLlxuICB0aGlzLmhpZ2hXYXRlck1hcmsgPSB+fnRoaXMuaGlnaFdhdGVyTWFyaztcblxuICAvLyBkcmFpbiBldmVudCBmbGFnLlxuICB0aGlzLm5lZWREcmFpbiA9IGZhbHNlO1xuICAvLyBhdCB0aGUgc3RhcnQgb2YgY2FsbGluZyBlbmQoKVxuICB0aGlzLmVuZGluZyA9IGZhbHNlO1xuICAvLyB3aGVuIGVuZCgpIGhhcyBiZWVuIGNhbGxlZCwgYW5kIHJldHVybmVkXG4gIHRoaXMuZW5kZWQgPSBmYWxzZTtcbiAgLy8gd2hlbiAnZmluaXNoJyBpcyBlbWl0dGVkXG4gIHRoaXMuZmluaXNoZWQgPSBmYWxzZTtcblxuICAvLyBzaG91bGQgd2UgZGVjb2RlIHN0cmluZ3MgaW50byBidWZmZXJzIGJlZm9yZSBwYXNzaW5nIHRvIF93cml0ZT9cbiAgLy8gdGhpcyBpcyBoZXJlIHNvIHRoYXQgc29tZSBub2RlLWNvcmUgc3RyZWFtcyBjYW4gb3B0aW1pemUgc3RyaW5nXG4gIC8vIGhhbmRsaW5nIGF0IGEgbG93ZXIgbGV2ZWwuXG4gIHZhciBub0RlY29kZSA9IG9wdGlvbnMuZGVjb2RlU3RyaW5ncyA9PT0gZmFsc2U7XG4gIHRoaXMuZGVjb2RlU3RyaW5ncyA9ICFub0RlY29kZTtcblxuICAvLyBDcnlwdG8gaXMga2luZCBvZiBvbGQgYW5kIGNydXN0eS4gIEhpc3RvcmljYWxseSwgaXRzIGRlZmF1bHQgc3RyaW5nXG4gIC8vIGVuY29kaW5nIGlzICdiaW5hcnknIHNvIHdlIGhhdmUgdG8gbWFrZSB0aGlzIGNvbmZpZ3VyYWJsZS5cbiAgLy8gRXZlcnl0aGluZyBlbHNlIGluIHRoZSB1bml2ZXJzZSB1c2VzICd1dGY4JywgdGhvdWdoLlxuICB0aGlzLmRlZmF1bHRFbmNvZGluZyA9IG9wdGlvbnMuZGVmYXVsdEVuY29kaW5nIHx8ICd1dGY4JztcblxuICAvLyBub3QgYW4gYWN0dWFsIGJ1ZmZlciB3ZSBrZWVwIHRyYWNrIG9mLCBidXQgYSBtZWFzdXJlbWVudFxuICAvLyBvZiBob3cgbXVjaCB3ZSdyZSB3YWl0aW5nIHRvIGdldCBwdXNoZWQgdG8gc29tZSB1bmRlcmx5aW5nXG4gIC8vIHNvY2tldCBvciBmaWxlLlxuICB0aGlzLmxlbmd0aCA9IDA7XG5cbiAgLy8gYSBmbGFnIHRvIHNlZSB3aGVuIHdlJ3JlIGluIHRoZSBtaWRkbGUgb2YgYSB3cml0ZS5cbiAgdGhpcy53cml0aW5nID0gZmFsc2U7XG5cbiAgLy8gd2hlbiB0cnVlIGFsbCB3cml0ZXMgd2lsbCBiZSBidWZmZXJlZCB1bnRpbCAudW5jb3JrKCkgY2FsbFxuICB0aGlzLmNvcmtlZCA9IDA7XG5cbiAgLy8gYSBmbGFnIHRvIGJlIGFibGUgdG8gdGVsbCBpZiB0aGUgb253cml0ZSBjYiBpcyBjYWxsZWQgaW1tZWRpYXRlbHksXG4gIC8vIG9yIG9uIGEgbGF0ZXIgdGljay4gIFdlIHNldCB0aGlzIHRvIHRydWUgYXQgZmlyc3QsIGJlY2F1c2UgYW55XG4gIC8vIGFjdGlvbnMgdGhhdCBzaG91bGRuJ3QgaGFwcGVuIHVudGlsIFwibGF0ZXJcIiBzaG91bGQgZ2VuZXJhbGx5IGFsc29cbiAgLy8gbm90IGhhcHBlbiBiZWZvcmUgdGhlIGZpcnN0IHdyaXRlIGNhbGwuXG4gIHRoaXMuc3luYyA9IHRydWU7XG5cbiAgLy8gYSBmbGFnIHRvIGtub3cgaWYgd2UncmUgcHJvY2Vzc2luZyBwcmV2aW91c2x5IGJ1ZmZlcmVkIGl0ZW1zLCB3aGljaFxuICAvLyBtYXkgY2FsbCB0aGUgX3dyaXRlKCkgY2FsbGJhY2sgaW4gdGhlIHNhbWUgdGljaywgc28gdGhhdCB3ZSBkb24ndFxuICAvLyBlbmQgdXAgaW4gYW4gb3ZlcmxhcHBlZCBvbndyaXRlIHNpdHVhdGlvbi5cbiAgdGhpcy5idWZmZXJQcm9jZXNzaW5nID0gZmFsc2U7XG5cbiAgLy8gdGhlIGNhbGxiYWNrIHRoYXQncyBwYXNzZWQgdG8gX3dyaXRlKGNodW5rLGNiKVxuICB0aGlzLm9ud3JpdGUgPSBmdW5jdGlvbiAoZXIpIHtcbiAgICBvbndyaXRlKHN0cmVhbSwgZXIpO1xuICB9O1xuXG4gIC8vIHRoZSBjYWxsYmFjayB0aGF0IHRoZSB1c2VyIHN1cHBsaWVzIHRvIHdyaXRlKGNodW5rLGVuY29kaW5nLGNiKVxuICB0aGlzLndyaXRlY2IgPSBudWxsO1xuXG4gIC8vIHRoZSBhbW91bnQgdGhhdCBpcyBiZWluZyB3cml0dGVuIHdoZW4gX3dyaXRlIGlzIGNhbGxlZC5cbiAgdGhpcy53cml0ZWxlbiA9IDA7XG5cbiAgdGhpcy5idWZmZXJlZFJlcXVlc3QgPSBudWxsO1xuICB0aGlzLmxhc3RCdWZmZXJlZFJlcXVlc3QgPSBudWxsO1xuXG4gIC8vIG51bWJlciBvZiBwZW5kaW5nIHVzZXItc3VwcGxpZWQgd3JpdGUgY2FsbGJhY2tzXG4gIC8vIHRoaXMgbXVzdCBiZSAwIGJlZm9yZSAnZmluaXNoJyBjYW4gYmUgZW1pdHRlZFxuICB0aGlzLnBlbmRpbmdjYiA9IDA7XG5cbiAgLy8gZW1pdCBwcmVmaW5pc2ggaWYgdGhlIG9ubHkgdGhpbmcgd2UncmUgd2FpdGluZyBmb3IgaXMgX3dyaXRlIGNic1xuICAvLyBUaGlzIGlzIHJlbGV2YW50IGZvciBzeW5jaHJvbm91cyBUcmFuc2Zvcm0gc3RyZWFtc1xuICB0aGlzLnByZWZpbmlzaGVkID0gZmFsc2U7XG5cbiAgLy8gVHJ1ZSBpZiB0aGUgZXJyb3Igd2FzIGFscmVhZHkgZW1pdHRlZCBhbmQgc2hvdWxkIG5vdCBiZSB0aHJvd24gYWdhaW5cbiAgdGhpcy5lcnJvckVtaXR0ZWQgPSBmYWxzZTtcblxuICAvLyBjb3VudCBidWZmZXJlZCByZXF1ZXN0c1xuICB0aGlzLmJ1ZmZlcmVkUmVxdWVzdENvdW50ID0gMDtcblxuICAvLyBhbGxvY2F0ZSB0aGUgZmlyc3QgQ29ya2VkUmVxdWVzdCwgdGhlcmUgaXMgYWx3YXlzXG4gIC8vIG9uZSBhbGxvY2F0ZWQgYW5kIGZyZWUgdG8gdXNlLCBhbmQgd2UgbWFpbnRhaW4gYXQgbW9zdCB0d29cbiAgdGhpcy5jb3JrZWRSZXF1ZXN0c0ZyZWUgPSBuZXcgQ29ya2VkUmVxdWVzdCh0aGlzKTtcbn1cblxuV3JpdGFibGVTdGF0ZS5wcm90b3R5cGUuZ2V0QnVmZmVyID0gZnVuY3Rpb24gZ2V0QnVmZmVyKCkge1xuICB2YXIgY3VycmVudCA9IHRoaXMuYnVmZmVyZWRSZXF1ZXN0O1xuICB2YXIgb3V0ID0gW107XG4gIHdoaWxlIChjdXJyZW50KSB7XG4gICAgb3V0LnB1c2goY3VycmVudCk7XG4gICAgY3VycmVudCA9IGN1cnJlbnQubmV4dDtcbiAgfVxuICByZXR1cm4gb3V0O1xufTtcblxuKGZ1bmN0aW9uICgpIHtcbiAgdHJ5IHtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoV3JpdGFibGVTdGF0ZS5wcm90b3R5cGUsICdidWZmZXInLCB7XG4gICAgICBnZXQ6IGludGVybmFsVXRpbC5kZXByZWNhdGUoZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRCdWZmZXIoKTtcbiAgICAgIH0sICdfd3JpdGFibGVTdGF0ZS5idWZmZXIgaXMgZGVwcmVjYXRlZC4gVXNlIF93cml0YWJsZVN0YXRlLmdldEJ1ZmZlciAnICsgJ2luc3RlYWQuJylcbiAgICB9KTtcbiAgfSBjYXRjaCAoXykge31cbn0pKCk7XG5cbi8vIFRlc3QgX3dyaXRhYmxlU3RhdGUgZm9yIGluaGVyaXRhbmNlIHRvIGFjY291bnQgZm9yIER1cGxleCBzdHJlYW1zLFxuLy8gd2hvc2UgcHJvdG90eXBlIGNoYWluIG9ubHkgcG9pbnRzIHRvIFJlYWRhYmxlLlxudmFyIHJlYWxIYXNJbnN0YW5jZTtcbmlmICh0eXBlb2YgU3ltYm9sID09PSAnZnVuY3Rpb24nICYmIFN5bWJvbC5oYXNJbnN0YW5jZSAmJiB0eXBlb2YgRnVuY3Rpb24ucHJvdG90eXBlW1N5bWJvbC5oYXNJbnN0YW5jZV0gPT09ICdmdW5jdGlvbicpIHtcbiAgcmVhbEhhc0luc3RhbmNlID0gRnVuY3Rpb24ucHJvdG90eXBlW1N5bWJvbC5oYXNJbnN0YW5jZV07XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShXcml0YWJsZSwgU3ltYm9sLmhhc0luc3RhbmNlLCB7XG4gICAgdmFsdWU6IGZ1bmN0aW9uIChvYmplY3QpIHtcbiAgICAgIGlmIChyZWFsSGFzSW5zdGFuY2UuY2FsbCh0aGlzLCBvYmplY3QpKSByZXR1cm4gdHJ1ZTtcblxuICAgICAgcmV0dXJuIG9iamVjdCAmJiBvYmplY3QuX3dyaXRhYmxlU3RhdGUgaW5zdGFuY2VvZiBXcml0YWJsZVN0YXRlO1xuICAgIH1cbiAgfSk7XG59IGVsc2Uge1xuICByZWFsSGFzSW5zdGFuY2UgPSBmdW5jdGlvbiAob2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdCBpbnN0YW5jZW9mIHRoaXM7XG4gIH07XG59XG5cbmZ1bmN0aW9uIFdyaXRhYmxlKG9wdGlvbnMpIHtcbiAgRHVwbGV4ID0gRHVwbGV4IHx8IHJlcXVpcmUoJy4vX3N0cmVhbV9kdXBsZXgnKTtcblxuICAvLyBXcml0YWJsZSBjdG9yIGlzIGFwcGxpZWQgdG8gRHVwbGV4ZXMsIHRvby5cbiAgLy8gYHJlYWxIYXNJbnN0YW5jZWAgaXMgbmVjZXNzYXJ5IGJlY2F1c2UgdXNpbmcgcGxhaW4gYGluc3RhbmNlb2ZgXG4gIC8vIHdvdWxkIHJldHVybiBmYWxzZSwgYXMgbm8gYF93cml0YWJsZVN0YXRlYCBwcm9wZXJ0eSBpcyBhdHRhY2hlZC5cblxuICAvLyBUcnlpbmcgdG8gdXNlIHRoZSBjdXN0b20gYGluc3RhbmNlb2ZgIGZvciBXcml0YWJsZSBoZXJlIHdpbGwgYWxzbyBicmVhayB0aGVcbiAgLy8gTm9kZS5qcyBMYXp5VHJhbnNmb3JtIGltcGxlbWVudGF0aW9uLCB3aGljaCBoYXMgYSBub24tdHJpdmlhbCBnZXR0ZXIgZm9yXG4gIC8vIGBfd3JpdGFibGVTdGF0ZWAgdGhhdCB3b3VsZCBsZWFkIHRvIGluZmluaXRlIHJlY3Vyc2lvbi5cbiAgaWYgKCFyZWFsSGFzSW5zdGFuY2UuY2FsbChXcml0YWJsZSwgdGhpcykgJiYgISh0aGlzIGluc3RhbmNlb2YgRHVwbGV4KSkge1xuICAgIHJldHVybiBuZXcgV3JpdGFibGUob3B0aW9ucyk7XG4gIH1cblxuICB0aGlzLl93cml0YWJsZVN0YXRlID0gbmV3IFdyaXRhYmxlU3RhdGUob3B0aW9ucywgdGhpcyk7XG5cbiAgLy8gbGVnYWN5LlxuICB0aGlzLndyaXRhYmxlID0gdHJ1ZTtcblxuICBpZiAob3B0aW9ucykge1xuICAgIGlmICh0eXBlb2Ygb3B0aW9ucy53cml0ZSA9PT0gJ2Z1bmN0aW9uJykgdGhpcy5fd3JpdGUgPSBvcHRpb25zLndyaXRlO1xuXG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLndyaXRldiA9PT0gJ2Z1bmN0aW9uJykgdGhpcy5fd3JpdGV2ID0gb3B0aW9ucy53cml0ZXY7XG4gIH1cblxuICBTdHJlYW0uY2FsbCh0aGlzKTtcbn1cblxuLy8gT3RoZXJ3aXNlIHBlb3BsZSBjYW4gcGlwZSBXcml0YWJsZSBzdHJlYW1zLCB3aGljaCBpcyBqdXN0IHdyb25nLlxuV3JpdGFibGUucHJvdG90eXBlLnBpcGUgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuZW1pdCgnZXJyb3InLCBuZXcgRXJyb3IoJ0Nhbm5vdCBwaXBlLCBub3QgcmVhZGFibGUnKSk7XG59O1xuXG5mdW5jdGlvbiB3cml0ZUFmdGVyRW5kKHN0cmVhbSwgY2IpIHtcbiAgdmFyIGVyID0gbmV3IEVycm9yKCd3cml0ZSBhZnRlciBlbmQnKTtcbiAgLy8gVE9ETzogZGVmZXIgZXJyb3IgZXZlbnRzIGNvbnNpc3RlbnRseSBldmVyeXdoZXJlLCBub3QganVzdCB0aGUgY2JcbiAgc3RyZWFtLmVtaXQoJ2Vycm9yJywgZXIpO1xuICBwcm9jZXNzTmV4dFRpY2soY2IsIGVyKTtcbn1cblxuLy8gQ2hlY2tzIHRoYXQgYSB1c2VyLXN1cHBsaWVkIGNodW5rIGlzIHZhbGlkLCBlc3BlY2lhbGx5IGZvciB0aGUgcGFydGljdWxhclxuLy8gbW9kZSB0aGUgc3RyZWFtIGlzIGluLiBDdXJyZW50bHkgdGhpcyBtZWFucyB0aGF0IGBudWxsYCBpcyBuZXZlciBhY2NlcHRlZFxuLy8gYW5kIHVuZGVmaW5lZC9ub24tc3RyaW5nIHZhbHVlcyBhcmUgb25seSBhbGxvd2VkIGluIG9iamVjdCBtb2RlLlxuZnVuY3Rpb24gdmFsaWRDaHVuayhzdHJlYW0sIHN0YXRlLCBjaHVuaywgY2IpIHtcbiAgdmFyIHZhbGlkID0gdHJ1ZTtcbiAgdmFyIGVyID0gZmFsc2U7XG5cbiAgaWYgKGNodW5rID09PSBudWxsKSB7XG4gICAgZXIgPSBuZXcgVHlwZUVycm9yKCdNYXkgbm90IHdyaXRlIG51bGwgdmFsdWVzIHRvIHN0cmVhbScpO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBjaHVuayAhPT0gJ3N0cmluZycgJiYgY2h1bmsgIT09IHVuZGVmaW5lZCAmJiAhc3RhdGUub2JqZWN0TW9kZSkge1xuICAgIGVyID0gbmV3IFR5cGVFcnJvcignSW52YWxpZCBub24tc3RyaW5nL2J1ZmZlciBjaHVuaycpO1xuICB9XG4gIGlmIChlcikge1xuICAgIHN0cmVhbS5lbWl0KCdlcnJvcicsIGVyKTtcbiAgICBwcm9jZXNzTmV4dFRpY2soY2IsIGVyKTtcbiAgICB2YWxpZCA9IGZhbHNlO1xuICB9XG4gIHJldHVybiB2YWxpZDtcbn1cblxuV3JpdGFibGUucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24gKGNodW5rLCBlbmNvZGluZywgY2IpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fd3JpdGFibGVTdGF0ZTtcbiAgdmFyIHJldCA9IGZhbHNlO1xuICB2YXIgaXNCdWYgPSBCdWZmZXIuaXNCdWZmZXIoY2h1bmspO1xuXG4gIGlmICh0eXBlb2YgZW5jb2RpbmcgPT09ICdmdW5jdGlvbicpIHtcbiAgICBjYiA9IGVuY29kaW5nO1xuICAgIGVuY29kaW5nID0gbnVsbDtcbiAgfVxuXG4gIGlmIChpc0J1ZikgZW5jb2RpbmcgPSAnYnVmZmVyJztlbHNlIGlmICghZW5jb2RpbmcpIGVuY29kaW5nID0gc3RhdGUuZGVmYXVsdEVuY29kaW5nO1xuXG4gIGlmICh0eXBlb2YgY2IgIT09ICdmdW5jdGlvbicpIGNiID0gbm9wO1xuXG4gIGlmIChzdGF0ZS5lbmRlZCkgd3JpdGVBZnRlckVuZCh0aGlzLCBjYik7ZWxzZSBpZiAoaXNCdWYgfHwgdmFsaWRDaHVuayh0aGlzLCBzdGF0ZSwgY2h1bmssIGNiKSkge1xuICAgIHN0YXRlLnBlbmRpbmdjYisrO1xuICAgIHJldCA9IHdyaXRlT3JCdWZmZXIodGhpcywgc3RhdGUsIGlzQnVmLCBjaHVuaywgZW5jb2RpbmcsIGNiKTtcbiAgfVxuXG4gIHJldHVybiByZXQ7XG59O1xuXG5Xcml0YWJsZS5wcm90b3R5cGUuY29yayA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fd3JpdGFibGVTdGF0ZTtcblxuICBzdGF0ZS5jb3JrZWQrKztcbn07XG5cbldyaXRhYmxlLnByb3RvdHlwZS51bmNvcmsgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX3dyaXRhYmxlU3RhdGU7XG5cbiAgaWYgKHN0YXRlLmNvcmtlZCkge1xuICAgIHN0YXRlLmNvcmtlZC0tO1xuXG4gICAgaWYgKCFzdGF0ZS53cml0aW5nICYmICFzdGF0ZS5jb3JrZWQgJiYgIXN0YXRlLmZpbmlzaGVkICYmICFzdGF0ZS5idWZmZXJQcm9jZXNzaW5nICYmIHN0YXRlLmJ1ZmZlcmVkUmVxdWVzdCkgY2xlYXJCdWZmZXIodGhpcywgc3RhdGUpO1xuICB9XG59O1xuXG5Xcml0YWJsZS5wcm90b3R5cGUuc2V0RGVmYXVsdEVuY29kaW5nID0gZnVuY3Rpb24gc2V0RGVmYXVsdEVuY29kaW5nKGVuY29kaW5nKSB7XG4gIC8vIG5vZGU6OlBhcnNlRW5jb2RpbmcoKSByZXF1aXJlcyBsb3dlciBjYXNlLlxuICBpZiAodHlwZW9mIGVuY29kaW5nID09PSAnc3RyaW5nJykgZW5jb2RpbmcgPSBlbmNvZGluZy50b0xvd2VyQ2FzZSgpO1xuICBpZiAoIShbJ2hleCcsICd1dGY4JywgJ3V0Zi04JywgJ2FzY2lpJywgJ2JpbmFyeScsICdiYXNlNjQnLCAndWNzMicsICd1Y3MtMicsICd1dGYxNmxlJywgJ3V0Zi0xNmxlJywgJ3JhdyddLmluZGV4T2YoKGVuY29kaW5nICsgJycpLnRvTG93ZXJDYXNlKCkpID4gLTEpKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdVbmtub3duIGVuY29kaW5nOiAnICsgZW5jb2RpbmcpO1xuICB0aGlzLl93cml0YWJsZVN0YXRlLmRlZmF1bHRFbmNvZGluZyA9IGVuY29kaW5nO1xuICByZXR1cm4gdGhpcztcbn07XG5cbmZ1bmN0aW9uIGRlY29kZUNodW5rKHN0YXRlLCBjaHVuaywgZW5jb2RpbmcpIHtcbiAgaWYgKCFzdGF0ZS5vYmplY3RNb2RlICYmIHN0YXRlLmRlY29kZVN0cmluZ3MgIT09IGZhbHNlICYmIHR5cGVvZiBjaHVuayA9PT0gJ3N0cmluZycpIHtcbiAgICBjaHVuayA9IGJ1ZmZlclNoaW0uZnJvbShjaHVuaywgZW5jb2RpbmcpO1xuICB9XG4gIHJldHVybiBjaHVuaztcbn1cblxuLy8gaWYgd2UncmUgYWxyZWFkeSB3cml0aW5nIHNvbWV0aGluZywgdGhlbiBqdXN0IHB1dCB0aGlzXG4vLyBpbiB0aGUgcXVldWUsIGFuZCB3YWl0IG91ciB0dXJuLiAgT3RoZXJ3aXNlLCBjYWxsIF93cml0ZVxuLy8gSWYgd2UgcmV0dXJuIGZhbHNlLCB0aGVuIHdlIG5lZWQgYSBkcmFpbiBldmVudCwgc28gc2V0IHRoYXQgZmxhZy5cbmZ1bmN0aW9uIHdyaXRlT3JCdWZmZXIoc3RyZWFtLCBzdGF0ZSwgaXNCdWYsIGNodW5rLCBlbmNvZGluZywgY2IpIHtcbiAgaWYgKCFpc0J1Zikge1xuICAgIGNodW5rID0gZGVjb2RlQ2h1bmsoc3RhdGUsIGNodW5rLCBlbmNvZGluZyk7XG4gICAgaWYgKEJ1ZmZlci5pc0J1ZmZlcihjaHVuaykpIGVuY29kaW5nID0gJ2J1ZmZlcic7XG4gIH1cbiAgdmFyIGxlbiA9IHN0YXRlLm9iamVjdE1vZGUgPyAxIDogY2h1bmsubGVuZ3RoO1xuXG4gIHN0YXRlLmxlbmd0aCArPSBsZW47XG5cbiAgdmFyIHJldCA9IHN0YXRlLmxlbmd0aCA8IHN0YXRlLmhpZ2hXYXRlck1hcms7XG4gIC8vIHdlIG11c3QgZW5zdXJlIHRoYXQgcHJldmlvdXMgbmVlZERyYWluIHdpbGwgbm90IGJlIHJlc2V0IHRvIGZhbHNlLlxuICBpZiAoIXJldCkgc3RhdGUubmVlZERyYWluID0gdHJ1ZTtcblxuICBpZiAoc3RhdGUud3JpdGluZyB8fCBzdGF0ZS5jb3JrZWQpIHtcbiAgICB2YXIgbGFzdCA9IHN0YXRlLmxhc3RCdWZmZXJlZFJlcXVlc3Q7XG4gICAgc3RhdGUubGFzdEJ1ZmZlcmVkUmVxdWVzdCA9IG5ldyBXcml0ZVJlcShjaHVuaywgZW5jb2RpbmcsIGNiKTtcbiAgICBpZiAobGFzdCkge1xuICAgICAgbGFzdC5uZXh0ID0gc3RhdGUubGFzdEJ1ZmZlcmVkUmVxdWVzdDtcbiAgICB9IGVsc2Uge1xuICAgICAgc3RhdGUuYnVmZmVyZWRSZXF1ZXN0ID0gc3RhdGUubGFzdEJ1ZmZlcmVkUmVxdWVzdDtcbiAgICB9XG4gICAgc3RhdGUuYnVmZmVyZWRSZXF1ZXN0Q291bnQgKz0gMTtcbiAgfSBlbHNlIHtcbiAgICBkb1dyaXRlKHN0cmVhbSwgc3RhdGUsIGZhbHNlLCBsZW4sIGNodW5rLCBlbmNvZGluZywgY2IpO1xuICB9XG5cbiAgcmV0dXJuIHJldDtcbn1cblxuZnVuY3Rpb24gZG9Xcml0ZShzdHJlYW0sIHN0YXRlLCB3cml0ZXYsIGxlbiwgY2h1bmssIGVuY29kaW5nLCBjYikge1xuICBzdGF0ZS53cml0ZWxlbiA9IGxlbjtcbiAgc3RhdGUud3JpdGVjYiA9IGNiO1xuICBzdGF0ZS53cml0aW5nID0gdHJ1ZTtcbiAgc3RhdGUuc3luYyA9IHRydWU7XG4gIGlmICh3cml0ZXYpIHN0cmVhbS5fd3JpdGV2KGNodW5rLCBzdGF0ZS5vbndyaXRlKTtlbHNlIHN0cmVhbS5fd3JpdGUoY2h1bmssIGVuY29kaW5nLCBzdGF0ZS5vbndyaXRlKTtcbiAgc3RhdGUuc3luYyA9IGZhbHNlO1xufVxuXG5mdW5jdGlvbiBvbndyaXRlRXJyb3Ioc3RyZWFtLCBzdGF0ZSwgc3luYywgZXIsIGNiKSB7XG4gIC0tc3RhdGUucGVuZGluZ2NiO1xuICBpZiAoc3luYykgcHJvY2Vzc05leHRUaWNrKGNiLCBlcik7ZWxzZSBjYihlcik7XG5cbiAgc3RyZWFtLl93cml0YWJsZVN0YXRlLmVycm9yRW1pdHRlZCA9IHRydWU7XG4gIHN0cmVhbS5lbWl0KCdlcnJvcicsIGVyKTtcbn1cblxuZnVuY3Rpb24gb253cml0ZVN0YXRlVXBkYXRlKHN0YXRlKSB7XG4gIHN0YXRlLndyaXRpbmcgPSBmYWxzZTtcbiAgc3RhdGUud3JpdGVjYiA9IG51bGw7XG4gIHN0YXRlLmxlbmd0aCAtPSBzdGF0ZS53cml0ZWxlbjtcbiAgc3RhdGUud3JpdGVsZW4gPSAwO1xufVxuXG5mdW5jdGlvbiBvbndyaXRlKHN0cmVhbSwgZXIpIHtcbiAgdmFyIHN0YXRlID0gc3RyZWFtLl93cml0YWJsZVN0YXRlO1xuICB2YXIgc3luYyA9IHN0YXRlLnN5bmM7XG4gIHZhciBjYiA9IHN0YXRlLndyaXRlY2I7XG5cbiAgb253cml0ZVN0YXRlVXBkYXRlKHN0YXRlKTtcblxuICBpZiAoZXIpIG9ud3JpdGVFcnJvcihzdHJlYW0sIHN0YXRlLCBzeW5jLCBlciwgY2IpO2Vsc2Uge1xuICAgIC8vIENoZWNrIGlmIHdlJ3JlIGFjdHVhbGx5IHJlYWR5IHRvIGZpbmlzaCwgYnV0IGRvbid0IGVtaXQgeWV0XG4gICAgdmFyIGZpbmlzaGVkID0gbmVlZEZpbmlzaChzdGF0ZSk7XG5cbiAgICBpZiAoIWZpbmlzaGVkICYmICFzdGF0ZS5jb3JrZWQgJiYgIXN0YXRlLmJ1ZmZlclByb2Nlc3NpbmcgJiYgc3RhdGUuYnVmZmVyZWRSZXF1ZXN0KSB7XG4gICAgICBjbGVhckJ1ZmZlcihzdHJlYW0sIHN0YXRlKTtcbiAgICB9XG5cbiAgICBpZiAoc3luYykge1xuICAgICAgLyo8cmVwbGFjZW1lbnQ+Ki9cbiAgICAgIGFzeW5jV3JpdGUoYWZ0ZXJXcml0ZSwgc3RyZWFtLCBzdGF0ZSwgZmluaXNoZWQsIGNiKTtcbiAgICAgIC8qPC9yZXBsYWNlbWVudD4qL1xuICAgIH0gZWxzZSB7XG4gICAgICBhZnRlcldyaXRlKHN0cmVhbSwgc3RhdGUsIGZpbmlzaGVkLCBjYik7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGFmdGVyV3JpdGUoc3RyZWFtLCBzdGF0ZSwgZmluaXNoZWQsIGNiKSB7XG4gIGlmICghZmluaXNoZWQpIG9ud3JpdGVEcmFpbihzdHJlYW0sIHN0YXRlKTtcbiAgc3RhdGUucGVuZGluZ2NiLS07XG4gIGNiKCk7XG4gIGZpbmlzaE1heWJlKHN0cmVhbSwgc3RhdGUpO1xufVxuXG4vLyBNdXN0IGZvcmNlIGNhbGxiYWNrIHRvIGJlIGNhbGxlZCBvbiBuZXh0VGljaywgc28gdGhhdCB3ZSBkb24ndFxuLy8gZW1pdCAnZHJhaW4nIGJlZm9yZSB0aGUgd3JpdGUoKSBjb25zdW1lciBnZXRzIHRoZSAnZmFsc2UnIHJldHVyblxuLy8gdmFsdWUsIGFuZCBoYXMgYSBjaGFuY2UgdG8gYXR0YWNoIGEgJ2RyYWluJyBsaXN0ZW5lci5cbmZ1bmN0aW9uIG9ud3JpdGVEcmFpbihzdHJlYW0sIHN0YXRlKSB7XG4gIGlmIChzdGF0ZS5sZW5ndGggPT09IDAgJiYgc3RhdGUubmVlZERyYWluKSB7XG4gICAgc3RhdGUubmVlZERyYWluID0gZmFsc2U7XG4gICAgc3RyZWFtLmVtaXQoJ2RyYWluJyk7XG4gIH1cbn1cblxuLy8gaWYgdGhlcmUncyBzb21ldGhpbmcgaW4gdGhlIGJ1ZmZlciB3YWl0aW5nLCB0aGVuIHByb2Nlc3MgaXRcbmZ1bmN0aW9uIGNsZWFyQnVmZmVyKHN0cmVhbSwgc3RhdGUpIHtcbiAgc3RhdGUuYnVmZmVyUHJvY2Vzc2luZyA9IHRydWU7XG4gIHZhciBlbnRyeSA9IHN0YXRlLmJ1ZmZlcmVkUmVxdWVzdDtcblxuICBpZiAoc3RyZWFtLl93cml0ZXYgJiYgZW50cnkgJiYgZW50cnkubmV4dCkge1xuICAgIC8vIEZhc3QgY2FzZSwgd3JpdGUgZXZlcnl0aGluZyB1c2luZyBfd3JpdGV2KClcbiAgICB2YXIgbCA9IHN0YXRlLmJ1ZmZlcmVkUmVxdWVzdENvdW50O1xuICAgIHZhciBidWZmZXIgPSBuZXcgQXJyYXkobCk7XG4gICAgdmFyIGhvbGRlciA9IHN0YXRlLmNvcmtlZFJlcXVlc3RzRnJlZTtcbiAgICBob2xkZXIuZW50cnkgPSBlbnRyeTtcblxuICAgIHZhciBjb3VudCA9IDA7XG4gICAgd2hpbGUgKGVudHJ5KSB7XG4gICAgICBidWZmZXJbY291bnRdID0gZW50cnk7XG4gICAgICBlbnRyeSA9IGVudHJ5Lm5leHQ7XG4gICAgICBjb3VudCArPSAxO1xuICAgIH1cblxuICAgIGRvV3JpdGUoc3RyZWFtLCBzdGF0ZSwgdHJ1ZSwgc3RhdGUubGVuZ3RoLCBidWZmZXIsICcnLCBob2xkZXIuZmluaXNoKTtcblxuICAgIC8vIGRvV3JpdGUgaXMgYWxtb3N0IGFsd2F5cyBhc3luYywgZGVmZXIgdGhlc2UgdG8gc2F2ZSBhIGJpdCBvZiB0aW1lXG4gICAgLy8gYXMgdGhlIGhvdCBwYXRoIGVuZHMgd2l0aCBkb1dyaXRlXG4gICAgc3RhdGUucGVuZGluZ2NiKys7XG4gICAgc3RhdGUubGFzdEJ1ZmZlcmVkUmVxdWVzdCA9IG51bGw7XG4gICAgaWYgKGhvbGRlci5uZXh0KSB7XG4gICAgICBzdGF0ZS5jb3JrZWRSZXF1ZXN0c0ZyZWUgPSBob2xkZXIubmV4dDtcbiAgICAgIGhvbGRlci5uZXh0ID0gbnVsbDtcbiAgICB9IGVsc2Uge1xuICAgICAgc3RhdGUuY29ya2VkUmVxdWVzdHNGcmVlID0gbmV3IENvcmtlZFJlcXVlc3Qoc3RhdGUpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICAvLyBTbG93IGNhc2UsIHdyaXRlIGNodW5rcyBvbmUtYnktb25lXG4gICAgd2hpbGUgKGVudHJ5KSB7XG4gICAgICB2YXIgY2h1bmsgPSBlbnRyeS5jaHVuaztcbiAgICAgIHZhciBlbmNvZGluZyA9IGVudHJ5LmVuY29kaW5nO1xuICAgICAgdmFyIGNiID0gZW50cnkuY2FsbGJhY2s7XG4gICAgICB2YXIgbGVuID0gc3RhdGUub2JqZWN0TW9kZSA/IDEgOiBjaHVuay5sZW5ndGg7XG5cbiAgICAgIGRvV3JpdGUoc3RyZWFtLCBzdGF0ZSwgZmFsc2UsIGxlbiwgY2h1bmssIGVuY29kaW5nLCBjYik7XG4gICAgICBlbnRyeSA9IGVudHJ5Lm5leHQ7XG4gICAgICAvLyBpZiB3ZSBkaWRuJ3QgY2FsbCB0aGUgb253cml0ZSBpbW1lZGlhdGVseSwgdGhlblxuICAgICAgLy8gaXQgbWVhbnMgdGhhdCB3ZSBuZWVkIHRvIHdhaXQgdW50aWwgaXQgZG9lcy5cbiAgICAgIC8vIGFsc28sIHRoYXQgbWVhbnMgdGhhdCB0aGUgY2h1bmsgYW5kIGNiIGFyZSBjdXJyZW50bHlcbiAgICAgIC8vIGJlaW5nIHByb2Nlc3NlZCwgc28gbW92ZSB0aGUgYnVmZmVyIGNvdW50ZXIgcGFzdCB0aGVtLlxuICAgICAgaWYgKHN0YXRlLndyaXRpbmcpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGVudHJ5ID09PSBudWxsKSBzdGF0ZS5sYXN0QnVmZmVyZWRSZXF1ZXN0ID0gbnVsbDtcbiAgfVxuXG4gIHN0YXRlLmJ1ZmZlcmVkUmVxdWVzdENvdW50ID0gMDtcbiAgc3RhdGUuYnVmZmVyZWRSZXF1ZXN0ID0gZW50cnk7XG4gIHN0YXRlLmJ1ZmZlclByb2Nlc3NpbmcgPSBmYWxzZTtcbn1cblxuV3JpdGFibGUucHJvdG90eXBlLl93cml0ZSA9IGZ1bmN0aW9uIChjaHVuaywgZW5jb2RpbmcsIGNiKSB7XG4gIGNiKG5ldyBFcnJvcignX3dyaXRlKCkgaXMgbm90IGltcGxlbWVudGVkJykpO1xufTtcblxuV3JpdGFibGUucHJvdG90eXBlLl93cml0ZXYgPSBudWxsO1xuXG5Xcml0YWJsZS5wcm90b3R5cGUuZW5kID0gZnVuY3Rpb24gKGNodW5rLCBlbmNvZGluZywgY2IpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fd3JpdGFibGVTdGF0ZTtcblxuICBpZiAodHlwZW9mIGNodW5rID09PSAnZnVuY3Rpb24nKSB7XG4gICAgY2IgPSBjaHVuaztcbiAgICBjaHVuayA9IG51bGw7XG4gICAgZW5jb2RpbmcgPSBudWxsO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBlbmNvZGluZyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGNiID0gZW5jb2Rpbmc7XG4gICAgZW5jb2RpbmcgPSBudWxsO1xuICB9XG5cbiAgaWYgKGNodW5rICE9PSBudWxsICYmIGNodW5rICE9PSB1bmRlZmluZWQpIHRoaXMud3JpdGUoY2h1bmssIGVuY29kaW5nKTtcblxuICAvLyAuZW5kKCkgZnVsbHkgdW5jb3Jrc1xuICBpZiAoc3RhdGUuY29ya2VkKSB7XG4gICAgc3RhdGUuY29ya2VkID0gMTtcbiAgICB0aGlzLnVuY29yaygpO1xuICB9XG5cbiAgLy8gaWdub3JlIHVubmVjZXNzYXJ5IGVuZCgpIGNhbGxzLlxuICBpZiAoIXN0YXRlLmVuZGluZyAmJiAhc3RhdGUuZmluaXNoZWQpIGVuZFdyaXRhYmxlKHRoaXMsIHN0YXRlLCBjYik7XG59O1xuXG5mdW5jdGlvbiBuZWVkRmluaXNoKHN0YXRlKSB7XG4gIHJldHVybiBzdGF0ZS5lbmRpbmcgJiYgc3RhdGUubGVuZ3RoID09PSAwICYmIHN0YXRlLmJ1ZmZlcmVkUmVxdWVzdCA9PT0gbnVsbCAmJiAhc3RhdGUuZmluaXNoZWQgJiYgIXN0YXRlLndyaXRpbmc7XG59XG5cbmZ1bmN0aW9uIHByZWZpbmlzaChzdHJlYW0sIHN0YXRlKSB7XG4gIGlmICghc3RhdGUucHJlZmluaXNoZWQpIHtcbiAgICBzdGF0ZS5wcmVmaW5pc2hlZCA9IHRydWU7XG4gICAgc3RyZWFtLmVtaXQoJ3ByZWZpbmlzaCcpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGZpbmlzaE1heWJlKHN0cmVhbSwgc3RhdGUpIHtcbiAgdmFyIG5lZWQgPSBuZWVkRmluaXNoKHN0YXRlKTtcbiAgaWYgKG5lZWQpIHtcbiAgICBpZiAoc3RhdGUucGVuZGluZ2NiID09PSAwKSB7XG4gICAgICBwcmVmaW5pc2goc3RyZWFtLCBzdGF0ZSk7XG4gICAgICBzdGF0ZS5maW5pc2hlZCA9IHRydWU7XG4gICAgICBzdHJlYW0uZW1pdCgnZmluaXNoJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHByZWZpbmlzaChzdHJlYW0sIHN0YXRlKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG5lZWQ7XG59XG5cbmZ1bmN0aW9uIGVuZFdyaXRhYmxlKHN0cmVhbSwgc3RhdGUsIGNiKSB7XG4gIHN0YXRlLmVuZGluZyA9IHRydWU7XG4gIGZpbmlzaE1heWJlKHN0cmVhbSwgc3RhdGUpO1xuICBpZiAoY2IpIHtcbiAgICBpZiAoc3RhdGUuZmluaXNoZWQpIHByb2Nlc3NOZXh0VGljayhjYik7ZWxzZSBzdHJlYW0ub25jZSgnZmluaXNoJywgY2IpO1xuICB9XG4gIHN0YXRlLmVuZGVkID0gdHJ1ZTtcbiAgc3RyZWFtLndyaXRhYmxlID0gZmFsc2U7XG59XG5cbi8vIEl0IHNlZW1zIGEgbGlua2VkIGxpc3QgYnV0IGl0IGlzIG5vdFxuLy8gdGhlcmUgd2lsbCBiZSBvbmx5IDIgb2YgdGhlc2UgZm9yIGVhY2ggc3RyZWFtXG5mdW5jdGlvbiBDb3JrZWRSZXF1ZXN0KHN0YXRlKSB7XG4gIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgdGhpcy5uZXh0ID0gbnVsbDtcbiAgdGhpcy5lbnRyeSA9IG51bGw7XG4gIHRoaXMuZmluaXNoID0gZnVuY3Rpb24gKGVycikge1xuICAgIHZhciBlbnRyeSA9IF90aGlzLmVudHJ5O1xuICAgIF90aGlzLmVudHJ5ID0gbnVsbDtcbiAgICB3aGlsZSAoZW50cnkpIHtcbiAgICAgIHZhciBjYiA9IGVudHJ5LmNhbGxiYWNrO1xuICAgICAgc3RhdGUucGVuZGluZ2NiLS07XG4gICAgICBjYihlcnIpO1xuICAgICAgZW50cnkgPSBlbnRyeS5uZXh0O1xuICAgIH1cbiAgICBpZiAoc3RhdGUuY29ya2VkUmVxdWVzdHNGcmVlKSB7XG4gICAgICBzdGF0ZS5jb3JrZWRSZXF1ZXN0c0ZyZWUubmV4dCA9IF90aGlzO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdGF0ZS5jb3JrZWRSZXF1ZXN0c0ZyZWUgPSBfdGhpcztcbiAgICB9XG4gIH07XG59IiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgQnVmZmVyID0gcmVxdWlyZSgnYnVmZmVyJykuQnVmZmVyO1xuLyo8cmVwbGFjZW1lbnQ+Ki9cbnZhciBidWZmZXJTaGltID0gcmVxdWlyZSgnYnVmZmVyLXNoaW1zJyk7XG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxubW9kdWxlLmV4cG9ydHMgPSBCdWZmZXJMaXN0O1xuXG5mdW5jdGlvbiBCdWZmZXJMaXN0KCkge1xuICB0aGlzLmhlYWQgPSBudWxsO1xuICB0aGlzLnRhaWwgPSBudWxsO1xuICB0aGlzLmxlbmd0aCA9IDA7XG59XG5cbkJ1ZmZlckxpc3QucHJvdG90eXBlLnB1c2ggPSBmdW5jdGlvbiAodikge1xuICB2YXIgZW50cnkgPSB7IGRhdGE6IHYsIG5leHQ6IG51bGwgfTtcbiAgaWYgKHRoaXMubGVuZ3RoID4gMCkgdGhpcy50YWlsLm5leHQgPSBlbnRyeTtlbHNlIHRoaXMuaGVhZCA9IGVudHJ5O1xuICB0aGlzLnRhaWwgPSBlbnRyeTtcbiAgKyt0aGlzLmxlbmd0aDtcbn07XG5cbkJ1ZmZlckxpc3QucHJvdG90eXBlLnVuc2hpZnQgPSBmdW5jdGlvbiAodikge1xuICB2YXIgZW50cnkgPSB7IGRhdGE6IHYsIG5leHQ6IHRoaXMuaGVhZCB9O1xuICBpZiAodGhpcy5sZW5ndGggPT09IDApIHRoaXMudGFpbCA9IGVudHJ5O1xuICB0aGlzLmhlYWQgPSBlbnRyeTtcbiAgKyt0aGlzLmxlbmd0aDtcbn07XG5cbkJ1ZmZlckxpc3QucHJvdG90eXBlLnNoaWZ0ID0gZnVuY3Rpb24gKCkge1xuICBpZiAodGhpcy5sZW5ndGggPT09IDApIHJldHVybjtcbiAgdmFyIHJldCA9IHRoaXMuaGVhZC5kYXRhO1xuICBpZiAodGhpcy5sZW5ndGggPT09IDEpIHRoaXMuaGVhZCA9IHRoaXMudGFpbCA9IG51bGw7ZWxzZSB0aGlzLmhlYWQgPSB0aGlzLmhlYWQubmV4dDtcbiAgLS10aGlzLmxlbmd0aDtcbiAgcmV0dXJuIHJldDtcbn07XG5cbkJ1ZmZlckxpc3QucHJvdG90eXBlLmNsZWFyID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLmhlYWQgPSB0aGlzLnRhaWwgPSBudWxsO1xuICB0aGlzLmxlbmd0aCA9IDA7XG59O1xuXG5CdWZmZXJMaXN0LnByb3RvdHlwZS5qb2luID0gZnVuY3Rpb24gKHMpIHtcbiAgaWYgKHRoaXMubGVuZ3RoID09PSAwKSByZXR1cm4gJyc7XG4gIHZhciBwID0gdGhpcy5oZWFkO1xuICB2YXIgcmV0ID0gJycgKyBwLmRhdGE7XG4gIHdoaWxlIChwID0gcC5uZXh0KSB7XG4gICAgcmV0ICs9IHMgKyBwLmRhdGE7XG4gIH1yZXR1cm4gcmV0O1xufTtcblxuQnVmZmVyTGlzdC5wcm90b3R5cGUuY29uY2F0ID0gZnVuY3Rpb24gKG4pIHtcbiAgaWYgKHRoaXMubGVuZ3RoID09PSAwKSByZXR1cm4gYnVmZmVyU2hpbS5hbGxvYygwKTtcbiAgaWYgKHRoaXMubGVuZ3RoID09PSAxKSByZXR1cm4gdGhpcy5oZWFkLmRhdGE7XG4gIHZhciByZXQgPSBidWZmZXJTaGltLmFsbG9jVW5zYWZlKG4gPj4+IDApO1xuICB2YXIgcCA9IHRoaXMuaGVhZDtcbiAgdmFyIGkgPSAwO1xuICB3aGlsZSAocCkge1xuICAgIHAuZGF0YS5jb3B5KHJldCwgaSk7XG4gICAgaSArPSBwLmRhdGEubGVuZ3RoO1xuICAgIHAgPSBwLm5leHQ7XG4gIH1cbiAgcmV0dXJuIHJldDtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCdldmVudHMnKS5FdmVudEVtaXR0ZXI7XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vcmVhZGFibGUnKS5QYXNzVGhyb3VnaFxuIiwiZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9saWIvX3N0cmVhbV9yZWFkYWJsZS5qcycpO1xuZXhwb3J0cy5TdHJlYW0gPSBleHBvcnRzO1xuZXhwb3J0cy5SZWFkYWJsZSA9IGV4cG9ydHM7XG5leHBvcnRzLldyaXRhYmxlID0gcmVxdWlyZSgnLi9saWIvX3N0cmVhbV93cml0YWJsZS5qcycpO1xuZXhwb3J0cy5EdXBsZXggPSByZXF1aXJlKCcuL2xpYi9fc3RyZWFtX2R1cGxleC5qcycpO1xuZXhwb3J0cy5UcmFuc2Zvcm0gPSByZXF1aXJlKCcuL2xpYi9fc3RyZWFtX3RyYW5zZm9ybS5qcycpO1xuZXhwb3J0cy5QYXNzVGhyb3VnaCA9IHJlcXVpcmUoJy4vbGliL19zdHJlYW1fcGFzc3Rocm91Z2guanMnKTtcbiIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9yZWFkYWJsZScpLlRyYW5zZm9ybVxuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2xpYi9fc3RyZWFtX3dyaXRhYmxlLmpzJyk7XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxNCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBodHRwczovL3Jhdy5naXRodWIuY29tL2ZhY2Vib29rL3JlZ2VuZXJhdG9yL21hc3Rlci9MSUNFTlNFIGZpbGUuIEFuXG4gKiBhZGRpdGlvbmFsIGdyYW50IG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW5cbiAqIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqL1xuXG4hKGZ1bmN0aW9uKGdsb2JhbCkge1xuICBcInVzZSBzdHJpY3RcIjtcblxuICB2YXIgT3AgPSBPYmplY3QucHJvdG90eXBlO1xuICB2YXIgaGFzT3duID0gT3AuaGFzT3duUHJvcGVydHk7XG4gIHZhciB1bmRlZmluZWQ7IC8vIE1vcmUgY29tcHJlc3NpYmxlIHRoYW4gdm9pZCAwLlxuICB2YXIgJFN5bWJvbCA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiA/IFN5bWJvbCA6IHt9O1xuICB2YXIgaXRlcmF0b3JTeW1ib2wgPSAkU3ltYm9sLml0ZXJhdG9yIHx8IFwiQEBpdGVyYXRvclwiO1xuICB2YXIgdG9TdHJpbmdUYWdTeW1ib2wgPSAkU3ltYm9sLnRvU3RyaW5nVGFnIHx8IFwiQEB0b1N0cmluZ1RhZ1wiO1xuXG4gIHZhciBpbk1vZHVsZSA9IHR5cGVvZiBtb2R1bGUgPT09IFwib2JqZWN0XCI7XG4gIHZhciBydW50aW1lID0gZ2xvYmFsLnJlZ2VuZXJhdG9yUnVudGltZTtcbiAgaWYgKHJ1bnRpbWUpIHtcbiAgICBpZiAoaW5Nb2R1bGUpIHtcbiAgICAgIC8vIElmIHJlZ2VuZXJhdG9yUnVudGltZSBpcyBkZWZpbmVkIGdsb2JhbGx5IGFuZCB3ZSdyZSBpbiBhIG1vZHVsZSxcbiAgICAgIC8vIG1ha2UgdGhlIGV4cG9ydHMgb2JqZWN0IGlkZW50aWNhbCB0byByZWdlbmVyYXRvclJ1bnRpbWUuXG4gICAgICBtb2R1bGUuZXhwb3J0cyA9IHJ1bnRpbWU7XG4gICAgfVxuICAgIC8vIERvbid0IGJvdGhlciBldmFsdWF0aW5nIHRoZSByZXN0IG9mIHRoaXMgZmlsZSBpZiB0aGUgcnVudGltZSB3YXNcbiAgICAvLyBhbHJlYWR5IGRlZmluZWQgZ2xvYmFsbHkuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLy8gRGVmaW5lIHRoZSBydW50aW1lIGdsb2JhbGx5IChhcyBleHBlY3RlZCBieSBnZW5lcmF0ZWQgY29kZSkgYXMgZWl0aGVyXG4gIC8vIG1vZHVsZS5leHBvcnRzIChpZiB3ZSdyZSBpbiBhIG1vZHVsZSkgb3IgYSBuZXcsIGVtcHR5IG9iamVjdC5cbiAgcnVudGltZSA9IGdsb2JhbC5yZWdlbmVyYXRvclJ1bnRpbWUgPSBpbk1vZHVsZSA/IG1vZHVsZS5leHBvcnRzIDoge307XG5cbiAgZnVuY3Rpb24gd3JhcChpbm5lckZuLCBvdXRlckZuLCBzZWxmLCB0cnlMb2NzTGlzdCkge1xuICAgIC8vIElmIG91dGVyRm4gcHJvdmlkZWQgYW5kIG91dGVyRm4ucHJvdG90eXBlIGlzIGEgR2VuZXJhdG9yLCB0aGVuIG91dGVyRm4ucHJvdG90eXBlIGluc3RhbmNlb2YgR2VuZXJhdG9yLlxuICAgIHZhciBwcm90b0dlbmVyYXRvciA9IG91dGVyRm4gJiYgb3V0ZXJGbi5wcm90b3R5cGUgaW5zdGFuY2VvZiBHZW5lcmF0b3IgPyBvdXRlckZuIDogR2VuZXJhdG9yO1xuICAgIHZhciBnZW5lcmF0b3IgPSBPYmplY3QuY3JlYXRlKHByb3RvR2VuZXJhdG9yLnByb3RvdHlwZSk7XG4gICAgdmFyIGNvbnRleHQgPSBuZXcgQ29udGV4dCh0cnlMb2NzTGlzdCB8fCBbXSk7XG5cbiAgICAvLyBUaGUgLl9pbnZva2UgbWV0aG9kIHVuaWZpZXMgdGhlIGltcGxlbWVudGF0aW9ucyBvZiB0aGUgLm5leHQsXG4gICAgLy8gLnRocm93LCBhbmQgLnJldHVybiBtZXRob2RzLlxuICAgIGdlbmVyYXRvci5faW52b2tlID0gbWFrZUludm9rZU1ldGhvZChpbm5lckZuLCBzZWxmLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBnZW5lcmF0b3I7XG4gIH1cbiAgcnVudGltZS53cmFwID0gd3JhcDtcblxuICAvLyBUcnkvY2F0Y2ggaGVscGVyIHRvIG1pbmltaXplIGRlb3B0aW1pemF0aW9ucy4gUmV0dXJucyBhIGNvbXBsZXRpb25cbiAgLy8gcmVjb3JkIGxpa2UgY29udGV4dC50cnlFbnRyaWVzW2ldLmNvbXBsZXRpb24uIFRoaXMgaW50ZXJmYWNlIGNvdWxkXG4gIC8vIGhhdmUgYmVlbiAoYW5kIHdhcyBwcmV2aW91c2x5KSBkZXNpZ25lZCB0byB0YWtlIGEgY2xvc3VyZSB0byBiZVxuICAvLyBpbnZva2VkIHdpdGhvdXQgYXJndW1lbnRzLCBidXQgaW4gYWxsIHRoZSBjYXNlcyB3ZSBjYXJlIGFib3V0IHdlXG4gIC8vIGFscmVhZHkgaGF2ZSBhbiBleGlzdGluZyBtZXRob2Qgd2Ugd2FudCB0byBjYWxsLCBzbyB0aGVyZSdzIG5vIG5lZWRcbiAgLy8gdG8gY3JlYXRlIGEgbmV3IGZ1bmN0aW9uIG9iamVjdC4gV2UgY2FuIGV2ZW4gZ2V0IGF3YXkgd2l0aCBhc3N1bWluZ1xuICAvLyB0aGUgbWV0aG9kIHRha2VzIGV4YWN0bHkgb25lIGFyZ3VtZW50LCBzaW5jZSB0aGF0IGhhcHBlbnMgdG8gYmUgdHJ1ZVxuICAvLyBpbiBldmVyeSBjYXNlLCBzbyB3ZSBkb24ndCBoYXZlIHRvIHRvdWNoIHRoZSBhcmd1bWVudHMgb2JqZWN0LiBUaGVcbiAgLy8gb25seSBhZGRpdGlvbmFsIGFsbG9jYXRpb24gcmVxdWlyZWQgaXMgdGhlIGNvbXBsZXRpb24gcmVjb3JkLCB3aGljaFxuICAvLyBoYXMgYSBzdGFibGUgc2hhcGUgYW5kIHNvIGhvcGVmdWxseSBzaG91bGQgYmUgY2hlYXAgdG8gYWxsb2NhdGUuXG4gIGZ1bmN0aW9uIHRyeUNhdGNoKGZuLCBvYmosIGFyZykge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4geyB0eXBlOiBcIm5vcm1hbFwiLCBhcmc6IGZuLmNhbGwob2JqLCBhcmcpIH07XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICByZXR1cm4geyB0eXBlOiBcInRocm93XCIsIGFyZzogZXJyIH07XG4gICAgfVxuICB9XG5cbiAgdmFyIEdlblN0YXRlU3VzcGVuZGVkU3RhcnQgPSBcInN1c3BlbmRlZFN0YXJ0XCI7XG4gIHZhciBHZW5TdGF0ZVN1c3BlbmRlZFlpZWxkID0gXCJzdXNwZW5kZWRZaWVsZFwiO1xuICB2YXIgR2VuU3RhdGVFeGVjdXRpbmcgPSBcImV4ZWN1dGluZ1wiO1xuICB2YXIgR2VuU3RhdGVDb21wbGV0ZWQgPSBcImNvbXBsZXRlZFwiO1xuXG4gIC8vIFJldHVybmluZyB0aGlzIG9iamVjdCBmcm9tIHRoZSBpbm5lckZuIGhhcyB0aGUgc2FtZSBlZmZlY3QgYXNcbiAgLy8gYnJlYWtpbmcgb3V0IG9mIHRoZSBkaXNwYXRjaCBzd2l0Y2ggc3RhdGVtZW50LlxuICB2YXIgQ29udGludWVTZW50aW5lbCA9IHt9O1xuXG4gIC8vIER1bW15IGNvbnN0cnVjdG9yIGZ1bmN0aW9ucyB0aGF0IHdlIHVzZSBhcyB0aGUgLmNvbnN0cnVjdG9yIGFuZFxuICAvLyAuY29uc3RydWN0b3IucHJvdG90eXBlIHByb3BlcnRpZXMgZm9yIGZ1bmN0aW9ucyB0aGF0IHJldHVybiBHZW5lcmF0b3JcbiAgLy8gb2JqZWN0cy4gRm9yIGZ1bGwgc3BlYyBjb21wbGlhbmNlLCB5b3UgbWF5IHdpc2ggdG8gY29uZmlndXJlIHlvdXJcbiAgLy8gbWluaWZpZXIgbm90IHRvIG1hbmdsZSB0aGUgbmFtZXMgb2YgdGhlc2UgdHdvIGZ1bmN0aW9ucy5cbiAgZnVuY3Rpb24gR2VuZXJhdG9yKCkge31cbiAgZnVuY3Rpb24gR2VuZXJhdG9yRnVuY3Rpb24oKSB7fVxuICBmdW5jdGlvbiBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSgpIHt9XG5cbiAgLy8gVGhpcyBpcyBhIHBvbHlmaWxsIGZvciAlSXRlcmF0b3JQcm90b3R5cGUlIGZvciBlbnZpcm9ubWVudHMgdGhhdFxuICAvLyBkb24ndCBuYXRpdmVseSBzdXBwb3J0IGl0LlxuICB2YXIgSXRlcmF0b3JQcm90b3R5cGUgPSB7fTtcbiAgSXRlcmF0b3JQcm90b3R5cGVbaXRlcmF0b3JTeW1ib2xdID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIHZhciBnZXRQcm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZjtcbiAgdmFyIE5hdGl2ZUl0ZXJhdG9yUHJvdG90eXBlID0gZ2V0UHJvdG8gJiYgZ2V0UHJvdG8oZ2V0UHJvdG8odmFsdWVzKFtdKSkpO1xuICBpZiAoTmF0aXZlSXRlcmF0b3JQcm90b3R5cGUgJiZcbiAgICAgIE5hdGl2ZUl0ZXJhdG9yUHJvdG90eXBlICE9PSBPcCAmJlxuICAgICAgaGFzT3duLmNhbGwoTmF0aXZlSXRlcmF0b3JQcm90b3R5cGUsIGl0ZXJhdG9yU3ltYm9sKSkge1xuICAgIC8vIFRoaXMgZW52aXJvbm1lbnQgaGFzIGEgbmF0aXZlICVJdGVyYXRvclByb3RvdHlwZSU7IHVzZSBpdCBpbnN0ZWFkXG4gICAgLy8gb2YgdGhlIHBvbHlmaWxsLlxuICAgIEl0ZXJhdG9yUHJvdG90eXBlID0gTmF0aXZlSXRlcmF0b3JQcm90b3R5cGU7XG4gIH1cblxuICB2YXIgR3AgPSBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5wcm90b3R5cGUgPVxuICAgIEdlbmVyYXRvci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEl0ZXJhdG9yUHJvdG90eXBlKTtcbiAgR2VuZXJhdG9yRnVuY3Rpb24ucHJvdG90eXBlID0gR3AuY29uc3RydWN0b3IgPSBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTtcbiAgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUuY29uc3RydWN0b3IgPSBHZW5lcmF0b3JGdW5jdGlvbjtcbiAgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGVbdG9TdHJpbmdUYWdTeW1ib2xdID1cbiAgICBHZW5lcmF0b3JGdW5jdGlvbi5kaXNwbGF5TmFtZSA9IFwiR2VuZXJhdG9yRnVuY3Rpb25cIjtcblxuICAvLyBIZWxwZXIgZm9yIGRlZmluaW5nIHRoZSAubmV4dCwgLnRocm93LCBhbmQgLnJldHVybiBtZXRob2RzIG9mIHRoZVxuICAvLyBJdGVyYXRvciBpbnRlcmZhY2UgaW4gdGVybXMgb2YgYSBzaW5nbGUgLl9pbnZva2UgbWV0aG9kLlxuICBmdW5jdGlvbiBkZWZpbmVJdGVyYXRvck1ldGhvZHMocHJvdG90eXBlKSB7XG4gICAgW1wibmV4dFwiLCBcInRocm93XCIsIFwicmV0dXJuXCJdLmZvckVhY2goZnVuY3Rpb24obWV0aG9kKSB7XG4gICAgICBwcm90b3R5cGVbbWV0aG9kXSA9IGZ1bmN0aW9uKGFyZykge1xuICAgICAgICByZXR1cm4gdGhpcy5faW52b2tlKG1ldGhvZCwgYXJnKTtcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICBydW50aW1lLmlzR2VuZXJhdG9yRnVuY3Rpb24gPSBmdW5jdGlvbihnZW5GdW4pIHtcbiAgICB2YXIgY3RvciA9IHR5cGVvZiBnZW5GdW4gPT09IFwiZnVuY3Rpb25cIiAmJiBnZW5GdW4uY29uc3RydWN0b3I7XG4gICAgcmV0dXJuIGN0b3JcbiAgICAgID8gY3RvciA9PT0gR2VuZXJhdG9yRnVuY3Rpb24gfHxcbiAgICAgICAgLy8gRm9yIHRoZSBuYXRpdmUgR2VuZXJhdG9yRnVuY3Rpb24gY29uc3RydWN0b3IsIHRoZSBiZXN0IHdlIGNhblxuICAgICAgICAvLyBkbyBpcyB0byBjaGVjayBpdHMgLm5hbWUgcHJvcGVydHkuXG4gICAgICAgIChjdG9yLmRpc3BsYXlOYW1lIHx8IGN0b3IubmFtZSkgPT09IFwiR2VuZXJhdG9yRnVuY3Rpb25cIlxuICAgICAgOiBmYWxzZTtcbiAgfTtcblxuICBydW50aW1lLm1hcmsgPSBmdW5jdGlvbihnZW5GdW4pIHtcbiAgICBpZiAoT2JqZWN0LnNldFByb3RvdHlwZU9mKSB7XG4gICAgICBPYmplY3Quc2V0UHJvdG90eXBlT2YoZ2VuRnVuLCBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGdlbkZ1bi5fX3Byb3RvX18gPSBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZTtcbiAgICAgIGlmICghKHRvU3RyaW5nVGFnU3ltYm9sIGluIGdlbkZ1bikpIHtcbiAgICAgICAgZ2VuRnVuW3RvU3RyaW5nVGFnU3ltYm9sXSA9IFwiR2VuZXJhdG9yRnVuY3Rpb25cIjtcbiAgICAgIH1cbiAgICB9XG4gICAgZ2VuRnVuLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoR3ApO1xuICAgIHJldHVybiBnZW5GdW47XG4gIH07XG5cbiAgLy8gV2l0aGluIHRoZSBib2R5IG9mIGFueSBhc3luYyBmdW5jdGlvbiwgYGF3YWl0IHhgIGlzIHRyYW5zZm9ybWVkIHRvXG4gIC8vIGB5aWVsZCByZWdlbmVyYXRvclJ1bnRpbWUuYXdyYXAoeClgLCBzbyB0aGF0IHRoZSBydW50aW1lIGNhbiB0ZXN0XG4gIC8vIGBoYXNPd24uY2FsbCh2YWx1ZSwgXCJfX2F3YWl0XCIpYCB0byBkZXRlcm1pbmUgaWYgdGhlIHlpZWxkZWQgdmFsdWUgaXNcbiAgLy8gbWVhbnQgdG8gYmUgYXdhaXRlZC5cbiAgcnVudGltZS5hd3JhcCA9IGZ1bmN0aW9uKGFyZykge1xuICAgIHJldHVybiB7IF9fYXdhaXQ6IGFyZyB9O1xuICB9O1xuXG4gIGZ1bmN0aW9uIEFzeW5jSXRlcmF0b3IoZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gaW52b2tlKG1ldGhvZCwgYXJnLCByZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIHZhciByZWNvcmQgPSB0cnlDYXRjaChnZW5lcmF0b3JbbWV0aG9kXSwgZ2VuZXJhdG9yLCBhcmcpO1xuICAgICAgaWYgKHJlY29yZC50eXBlID09PSBcInRocm93XCIpIHtcbiAgICAgICAgcmVqZWN0KHJlY29yZC5hcmcpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IHJlY29yZC5hcmc7XG4gICAgICAgIHZhciB2YWx1ZSA9IHJlc3VsdC52YWx1ZTtcbiAgICAgICAgaWYgKHZhbHVlICYmXG4gICAgICAgICAgICB0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIgJiZcbiAgICAgICAgICAgIGhhc093bi5jYWxsKHZhbHVlLCBcIl9fYXdhaXRcIikpIHtcbiAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHZhbHVlLl9fYXdhaXQpLnRoZW4oZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgICAgICAgIGludm9rZShcIm5leHRcIiwgdmFsdWUsIHJlc29sdmUsIHJlamVjdCk7XG4gICAgICAgICAgfSwgZnVuY3Rpb24oZXJyKSB7XG4gICAgICAgICAgICBpbnZva2UoXCJ0aHJvd1wiLCBlcnIsIHJlc29sdmUsIHJlamVjdCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHZhbHVlKS50aGVuKGZ1bmN0aW9uKHVud3JhcHBlZCkge1xuICAgICAgICAgIC8vIFdoZW4gYSB5aWVsZGVkIFByb21pc2UgaXMgcmVzb2x2ZWQsIGl0cyBmaW5hbCB2YWx1ZSBiZWNvbWVzXG4gICAgICAgICAgLy8gdGhlIC52YWx1ZSBvZiB0aGUgUHJvbWlzZTx7dmFsdWUsZG9uZX0+IHJlc3VsdCBmb3IgdGhlXG4gICAgICAgICAgLy8gY3VycmVudCBpdGVyYXRpb24uIElmIHRoZSBQcm9taXNlIGlzIHJlamVjdGVkLCBob3dldmVyLCB0aGVcbiAgICAgICAgICAvLyByZXN1bHQgZm9yIHRoaXMgaXRlcmF0aW9uIHdpbGwgYmUgcmVqZWN0ZWQgd2l0aCB0aGUgc2FtZVxuICAgICAgICAgIC8vIHJlYXNvbi4gTm90ZSB0aGF0IHJlamVjdGlvbnMgb2YgeWllbGRlZCBQcm9taXNlcyBhcmUgbm90XG4gICAgICAgICAgLy8gdGhyb3duIGJhY2sgaW50byB0aGUgZ2VuZXJhdG9yIGZ1bmN0aW9uLCBhcyBpcyB0aGUgY2FzZVxuICAgICAgICAgIC8vIHdoZW4gYW4gYXdhaXRlZCBQcm9taXNlIGlzIHJlamVjdGVkLiBUaGlzIGRpZmZlcmVuY2UgaW5cbiAgICAgICAgICAvLyBiZWhhdmlvciBiZXR3ZWVuIHlpZWxkIGFuZCBhd2FpdCBpcyBpbXBvcnRhbnQsIGJlY2F1c2UgaXRcbiAgICAgICAgICAvLyBhbGxvd3MgdGhlIGNvbnN1bWVyIHRvIGRlY2lkZSB3aGF0IHRvIGRvIHdpdGggdGhlIHlpZWxkZWRcbiAgICAgICAgICAvLyByZWplY3Rpb24gKHN3YWxsb3cgaXQgYW5kIGNvbnRpbnVlLCBtYW51YWxseSAudGhyb3cgaXQgYmFja1xuICAgICAgICAgIC8vIGludG8gdGhlIGdlbmVyYXRvciwgYWJhbmRvbiBpdGVyYXRpb24sIHdoYXRldmVyKS4gV2l0aFxuICAgICAgICAgIC8vIGF3YWl0LCBieSBjb250cmFzdCwgdGhlcmUgaXMgbm8gb3Bwb3J0dW5pdHkgdG8gZXhhbWluZSB0aGVcbiAgICAgICAgICAvLyByZWplY3Rpb24gcmVhc29uIG91dHNpZGUgdGhlIGdlbmVyYXRvciBmdW5jdGlvbiwgc28gdGhlXG4gICAgICAgICAgLy8gb25seSBvcHRpb24gaXMgdG8gdGhyb3cgaXQgZnJvbSB0aGUgYXdhaXQgZXhwcmVzc2lvbiwgYW5kXG4gICAgICAgICAgLy8gbGV0IHRoZSBnZW5lcmF0b3IgZnVuY3Rpb24gaGFuZGxlIHRoZSBleGNlcHRpb24uXG4gICAgICAgICAgcmVzdWx0LnZhbHVlID0gdW53cmFwcGVkO1xuICAgICAgICAgIHJlc29sdmUocmVzdWx0KTtcbiAgICAgICAgfSwgcmVqZWN0KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIHByb2Nlc3MgPT09IFwib2JqZWN0XCIgJiYgcHJvY2Vzcy5kb21haW4pIHtcbiAgICAgIGludm9rZSA9IHByb2Nlc3MuZG9tYWluLmJpbmQoaW52b2tlKTtcbiAgICB9XG5cbiAgICB2YXIgcHJldmlvdXNQcm9taXNlO1xuXG4gICAgZnVuY3Rpb24gZW5xdWV1ZShtZXRob2QsIGFyZykge1xuICAgICAgZnVuY3Rpb24gY2FsbEludm9rZVdpdGhNZXRob2RBbmRBcmcoKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgICBpbnZva2UobWV0aG9kLCBhcmcsIHJlc29sdmUsIHJlamVjdCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcHJldmlvdXNQcm9taXNlID1cbiAgICAgICAgLy8gSWYgZW5xdWV1ZSBoYXMgYmVlbiBjYWxsZWQgYmVmb3JlLCB0aGVuIHdlIHdhbnQgdG8gd2FpdCB1bnRpbFxuICAgICAgICAvLyBhbGwgcHJldmlvdXMgUHJvbWlzZXMgaGF2ZSBiZWVuIHJlc29sdmVkIGJlZm9yZSBjYWxsaW5nIGludm9rZSxcbiAgICAgICAgLy8gc28gdGhhdCByZXN1bHRzIGFyZSBhbHdheXMgZGVsaXZlcmVkIGluIHRoZSBjb3JyZWN0IG9yZGVyLiBJZlxuICAgICAgICAvLyBlbnF1ZXVlIGhhcyBub3QgYmVlbiBjYWxsZWQgYmVmb3JlLCB0aGVuIGl0IGlzIGltcG9ydGFudCB0b1xuICAgICAgICAvLyBjYWxsIGludm9rZSBpbW1lZGlhdGVseSwgd2l0aG91dCB3YWl0aW5nIG9uIGEgY2FsbGJhY2sgdG8gZmlyZSxcbiAgICAgICAgLy8gc28gdGhhdCB0aGUgYXN5bmMgZ2VuZXJhdG9yIGZ1bmN0aW9uIGhhcyB0aGUgb3Bwb3J0dW5pdHkgdG8gZG9cbiAgICAgICAgLy8gYW55IG5lY2Vzc2FyeSBzZXR1cCBpbiBhIHByZWRpY3RhYmxlIHdheS4gVGhpcyBwcmVkaWN0YWJpbGl0eVxuICAgICAgICAvLyBpcyB3aHkgdGhlIFByb21pc2UgY29uc3RydWN0b3Igc3luY2hyb25vdXNseSBpbnZva2VzIGl0c1xuICAgICAgICAvLyBleGVjdXRvciBjYWxsYmFjaywgYW5kIHdoeSBhc3luYyBmdW5jdGlvbnMgc3luY2hyb25vdXNseVxuICAgICAgICAvLyBleGVjdXRlIGNvZGUgYmVmb3JlIHRoZSBmaXJzdCBhd2FpdC4gU2luY2Ugd2UgaW1wbGVtZW50IHNpbXBsZVxuICAgICAgICAvLyBhc3luYyBmdW5jdGlvbnMgaW4gdGVybXMgb2YgYXN5bmMgZ2VuZXJhdG9ycywgaXQgaXMgZXNwZWNpYWxseVxuICAgICAgICAvLyBpbXBvcnRhbnQgdG8gZ2V0IHRoaXMgcmlnaHQsIGV2ZW4gdGhvdWdoIGl0IHJlcXVpcmVzIGNhcmUuXG4gICAgICAgIHByZXZpb3VzUHJvbWlzZSA/IHByZXZpb3VzUHJvbWlzZS50aGVuKFxuICAgICAgICAgIGNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnLFxuICAgICAgICAgIC8vIEF2b2lkIHByb3BhZ2F0aW5nIGZhaWx1cmVzIHRvIFByb21pc2VzIHJldHVybmVkIGJ5IGxhdGVyXG4gICAgICAgICAgLy8gaW52b2NhdGlvbnMgb2YgdGhlIGl0ZXJhdG9yLlxuICAgICAgICAgIGNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnXG4gICAgICAgICkgOiBjYWxsSW52b2tlV2l0aE1ldGhvZEFuZEFyZygpO1xuICAgIH1cblxuICAgIC8vIERlZmluZSB0aGUgdW5pZmllZCBoZWxwZXIgbWV0aG9kIHRoYXQgaXMgdXNlZCB0byBpbXBsZW1lbnQgLm5leHQsXG4gICAgLy8gLnRocm93LCBhbmQgLnJldHVybiAoc2VlIGRlZmluZUl0ZXJhdG9yTWV0aG9kcykuXG4gICAgdGhpcy5faW52b2tlID0gZW5xdWV1ZTtcbiAgfVxuXG4gIGRlZmluZUl0ZXJhdG9yTWV0aG9kcyhBc3luY0l0ZXJhdG9yLnByb3RvdHlwZSk7XG4gIHJ1bnRpbWUuQXN5bmNJdGVyYXRvciA9IEFzeW5jSXRlcmF0b3I7XG5cbiAgLy8gTm90ZSB0aGF0IHNpbXBsZSBhc3luYyBmdW5jdGlvbnMgYXJlIGltcGxlbWVudGVkIG9uIHRvcCBvZlxuICAvLyBBc3luY0l0ZXJhdG9yIG9iamVjdHM7IHRoZXkganVzdCByZXR1cm4gYSBQcm9taXNlIGZvciB0aGUgdmFsdWUgb2ZcbiAgLy8gdGhlIGZpbmFsIHJlc3VsdCBwcm9kdWNlZCBieSB0aGUgaXRlcmF0b3IuXG4gIHJ1bnRpbWUuYXN5bmMgPSBmdW5jdGlvbihpbm5lckZuLCBvdXRlckZuLCBzZWxmLCB0cnlMb2NzTGlzdCkge1xuICAgIHZhciBpdGVyID0gbmV3IEFzeW5jSXRlcmF0b3IoXG4gICAgICB3cmFwKGlubmVyRm4sIG91dGVyRm4sIHNlbGYsIHRyeUxvY3NMaXN0KVxuICAgICk7XG5cbiAgICByZXR1cm4gcnVudGltZS5pc0dlbmVyYXRvckZ1bmN0aW9uKG91dGVyRm4pXG4gICAgICA/IGl0ZXIgLy8gSWYgb3V0ZXJGbiBpcyBhIGdlbmVyYXRvciwgcmV0dXJuIHRoZSBmdWxsIGl0ZXJhdG9yLlxuICAgICAgOiBpdGVyLm5leHQoKS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkge1xuICAgICAgICAgIHJldHVybiByZXN1bHQuZG9uZSA/IHJlc3VsdC52YWx1ZSA6IGl0ZXIubmV4dCgpO1xuICAgICAgICB9KTtcbiAgfTtcblxuICBmdW5jdGlvbiBtYWtlSW52b2tlTWV0aG9kKGlubmVyRm4sIHNlbGYsIGNvbnRleHQpIHtcbiAgICB2YXIgc3RhdGUgPSBHZW5TdGF0ZVN1c3BlbmRlZFN0YXJ0O1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uIGludm9rZShtZXRob2QsIGFyZykge1xuICAgICAgaWYgKHN0YXRlID09PSBHZW5TdGF0ZUV4ZWN1dGluZykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBydW5uaW5nXCIpO1xuICAgICAgfVxuXG4gICAgICBpZiAoc3RhdGUgPT09IEdlblN0YXRlQ29tcGxldGVkKSB7XG4gICAgICAgIGlmIChtZXRob2QgPT09IFwidGhyb3dcIikge1xuICAgICAgICAgIHRocm93IGFyZztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEJlIGZvcmdpdmluZywgcGVyIDI1LjMuMy4zLjMgb2YgdGhlIHNwZWM6XG4gICAgICAgIC8vIGh0dHBzOi8vcGVvcGxlLm1vemlsbGEub3JnL35qb3JlbmRvcmZmL2VzNi1kcmFmdC5odG1sI3NlYy1nZW5lcmF0b3JyZXN1bWVcbiAgICAgICAgcmV0dXJuIGRvbmVSZXN1bHQoKTtcbiAgICAgIH1cblxuICAgICAgY29udGV4dC5tZXRob2QgPSBtZXRob2Q7XG4gICAgICBjb250ZXh0LmFyZyA9IGFyZztcblxuICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgdmFyIGRlbGVnYXRlID0gY29udGV4dC5kZWxlZ2F0ZTtcbiAgICAgICAgaWYgKGRlbGVnYXRlKSB7XG4gICAgICAgICAgdmFyIGRlbGVnYXRlUmVzdWx0ID0gbWF5YmVJbnZva2VEZWxlZ2F0ZShkZWxlZ2F0ZSwgY29udGV4dCk7XG4gICAgICAgICAgaWYgKGRlbGVnYXRlUmVzdWx0KSB7XG4gICAgICAgICAgICBpZiAoZGVsZWdhdGVSZXN1bHQgPT09IENvbnRpbnVlU2VudGluZWwpIGNvbnRpbnVlO1xuICAgICAgICAgICAgcmV0dXJuIGRlbGVnYXRlUmVzdWx0O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb250ZXh0Lm1ldGhvZCA9PT0gXCJuZXh0XCIpIHtcbiAgICAgICAgICAvLyBTZXR0aW5nIGNvbnRleHQuX3NlbnQgZm9yIGxlZ2FjeSBzdXBwb3J0IG9mIEJhYmVsJ3NcbiAgICAgICAgICAvLyBmdW5jdGlvbi5zZW50IGltcGxlbWVudGF0aW9uLlxuICAgICAgICAgIGNvbnRleHQuc2VudCA9IGNvbnRleHQuX3NlbnQgPSBjb250ZXh0LmFyZztcblxuICAgICAgICB9IGVsc2UgaWYgKGNvbnRleHQubWV0aG9kID09PSBcInRocm93XCIpIHtcbiAgICAgICAgICBpZiAoc3RhdGUgPT09IEdlblN0YXRlU3VzcGVuZGVkU3RhcnQpIHtcbiAgICAgICAgICAgIHN0YXRlID0gR2VuU3RhdGVDb21wbGV0ZWQ7XG4gICAgICAgICAgICB0aHJvdyBjb250ZXh0LmFyZztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb250ZXh0LmRpc3BhdGNoRXhjZXB0aW9uKGNvbnRleHQuYXJnKTtcblxuICAgICAgICB9IGVsc2UgaWYgKGNvbnRleHQubWV0aG9kID09PSBcInJldHVyblwiKSB7XG4gICAgICAgICAgY29udGV4dC5hYnJ1cHQoXCJyZXR1cm5cIiwgY29udGV4dC5hcmcpO1xuICAgICAgICB9XG5cbiAgICAgICAgc3RhdGUgPSBHZW5TdGF0ZUV4ZWN1dGluZztcblxuICAgICAgICB2YXIgcmVjb3JkID0gdHJ5Q2F0Y2goaW5uZXJGbiwgc2VsZiwgY29udGV4dCk7XG4gICAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gXCJub3JtYWxcIikge1xuICAgICAgICAgIC8vIElmIGFuIGV4Y2VwdGlvbiBpcyB0aHJvd24gZnJvbSBpbm5lckZuLCB3ZSBsZWF2ZSBzdGF0ZSA9PT1cbiAgICAgICAgICAvLyBHZW5TdGF0ZUV4ZWN1dGluZyBhbmQgbG9vcCBiYWNrIGZvciBhbm90aGVyIGludm9jYXRpb24uXG4gICAgICAgICAgc3RhdGUgPSBjb250ZXh0LmRvbmVcbiAgICAgICAgICAgID8gR2VuU3RhdGVDb21wbGV0ZWRcbiAgICAgICAgICAgIDogR2VuU3RhdGVTdXNwZW5kZWRZaWVsZDtcblxuICAgICAgICAgIGlmIChyZWNvcmQuYXJnID09PSBDb250aW51ZVNlbnRpbmVsKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdmFsdWU6IHJlY29yZC5hcmcsXG4gICAgICAgICAgICBkb25lOiBjb250ZXh0LmRvbmVcbiAgICAgICAgICB9O1xuXG4gICAgICAgIH0gZWxzZSBpZiAocmVjb3JkLnR5cGUgPT09IFwidGhyb3dcIikge1xuICAgICAgICAgIHN0YXRlID0gR2VuU3RhdGVDb21wbGV0ZWQ7XG4gICAgICAgICAgLy8gRGlzcGF0Y2ggdGhlIGV4Y2VwdGlvbiBieSBsb29waW5nIGJhY2sgYXJvdW5kIHRvIHRoZVxuICAgICAgICAgIC8vIGNvbnRleHQuZGlzcGF0Y2hFeGNlcHRpb24oY29udGV4dC5hcmcpIGNhbGwgYWJvdmUuXG4gICAgICAgICAgY29udGV4dC5tZXRob2QgPSBcInRocm93XCI7XG4gICAgICAgICAgY29udGV4dC5hcmcgPSByZWNvcmQuYXJnO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIC8vIENhbGwgZGVsZWdhdGUuaXRlcmF0b3JbY29udGV4dC5tZXRob2RdKGNvbnRleHQuYXJnKSBhbmQgaGFuZGxlIHRoZVxuICAvLyByZXN1bHQsIGVpdGhlciBieSByZXR1cm5pbmcgYSB7IHZhbHVlLCBkb25lIH0gcmVzdWx0IGZyb20gdGhlXG4gIC8vIGRlbGVnYXRlIGl0ZXJhdG9yLCBvciBieSBtb2RpZnlpbmcgY29udGV4dC5tZXRob2QgYW5kIGNvbnRleHQuYXJnLFxuICAvLyBzZXR0aW5nIGNvbnRleHQuZGVsZWdhdGUgdG8gbnVsbCwgYW5kIHJldHVybmluZyB0aGUgQ29udGludWVTZW50aW5lbC5cbiAgZnVuY3Rpb24gbWF5YmVJbnZva2VEZWxlZ2F0ZShkZWxlZ2F0ZSwgY29udGV4dCkge1xuICAgIHZhciBtZXRob2QgPSBkZWxlZ2F0ZS5pdGVyYXRvcltjb250ZXh0Lm1ldGhvZF07XG4gICAgaWYgKG1ldGhvZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyBBIC50aHJvdyBvciAucmV0dXJuIHdoZW4gdGhlIGRlbGVnYXRlIGl0ZXJhdG9yIGhhcyBubyAudGhyb3dcbiAgICAgIC8vIG1ldGhvZCBhbHdheXMgdGVybWluYXRlcyB0aGUgeWllbGQqIGxvb3AuXG4gICAgICBjb250ZXh0LmRlbGVnYXRlID0gbnVsbDtcblxuICAgICAgaWYgKGNvbnRleHQubWV0aG9kID09PSBcInRocm93XCIpIHtcbiAgICAgICAgaWYgKGRlbGVnYXRlLml0ZXJhdG9yLnJldHVybikge1xuICAgICAgICAgIC8vIElmIHRoZSBkZWxlZ2F0ZSBpdGVyYXRvciBoYXMgYSByZXR1cm4gbWV0aG9kLCBnaXZlIGl0IGFcbiAgICAgICAgICAvLyBjaGFuY2UgdG8gY2xlYW4gdXAuXG4gICAgICAgICAgY29udGV4dC5tZXRob2QgPSBcInJldHVyblwiO1xuICAgICAgICAgIGNvbnRleHQuYXJnID0gdW5kZWZpbmVkO1xuICAgICAgICAgIG1heWJlSW52b2tlRGVsZWdhdGUoZGVsZWdhdGUsIGNvbnRleHQpO1xuXG4gICAgICAgICAgaWYgKGNvbnRleHQubWV0aG9kID09PSBcInRocm93XCIpIHtcbiAgICAgICAgICAgIC8vIElmIG1heWJlSW52b2tlRGVsZWdhdGUoY29udGV4dCkgY2hhbmdlZCBjb250ZXh0Lm1ldGhvZCBmcm9tXG4gICAgICAgICAgICAvLyBcInJldHVyblwiIHRvIFwidGhyb3dcIiwgbGV0IHRoYXQgb3ZlcnJpZGUgdGhlIFR5cGVFcnJvciBiZWxvdy5cbiAgICAgICAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnRleHQubWV0aG9kID0gXCJ0aHJvd1wiO1xuICAgICAgICBjb250ZXh0LmFyZyA9IG5ldyBUeXBlRXJyb3IoXG4gICAgICAgICAgXCJUaGUgaXRlcmF0b3IgZG9lcyBub3QgcHJvdmlkZSBhICd0aHJvdycgbWV0aG9kXCIpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgICB9XG5cbiAgICB2YXIgcmVjb3JkID0gdHJ5Q2F0Y2gobWV0aG9kLCBkZWxlZ2F0ZS5pdGVyYXRvciwgY29udGV4dC5hcmcpO1xuXG4gICAgaWYgKHJlY29yZC50eXBlID09PSBcInRocm93XCIpIHtcbiAgICAgIGNvbnRleHQubWV0aG9kID0gXCJ0aHJvd1wiO1xuICAgICAgY29udGV4dC5hcmcgPSByZWNvcmQuYXJnO1xuICAgICAgY29udGV4dC5kZWxlZ2F0ZSA9IG51bGw7XG4gICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgICB9XG5cbiAgICB2YXIgaW5mbyA9IHJlY29yZC5hcmc7XG5cbiAgICBpZiAoISBpbmZvKSB7XG4gICAgICBjb250ZXh0Lm1ldGhvZCA9IFwidGhyb3dcIjtcbiAgICAgIGNvbnRleHQuYXJnID0gbmV3IFR5cGVFcnJvcihcIml0ZXJhdG9yIHJlc3VsdCBpcyBub3QgYW4gb2JqZWN0XCIpO1xuICAgICAgY29udGV4dC5kZWxlZ2F0ZSA9IG51bGw7XG4gICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgICB9XG5cbiAgICBpZiAoaW5mby5kb25lKSB7XG4gICAgICAvLyBBc3NpZ24gdGhlIHJlc3VsdCBvZiB0aGUgZmluaXNoZWQgZGVsZWdhdGUgdG8gdGhlIHRlbXBvcmFyeVxuICAgICAgLy8gdmFyaWFibGUgc3BlY2lmaWVkIGJ5IGRlbGVnYXRlLnJlc3VsdE5hbWUgKHNlZSBkZWxlZ2F0ZVlpZWxkKS5cbiAgICAgIGNvbnRleHRbZGVsZWdhdGUucmVzdWx0TmFtZV0gPSBpbmZvLnZhbHVlO1xuXG4gICAgICAvLyBSZXN1bWUgZXhlY3V0aW9uIGF0IHRoZSBkZXNpcmVkIGxvY2F0aW9uIChzZWUgZGVsZWdhdGVZaWVsZCkuXG4gICAgICBjb250ZXh0Lm5leHQgPSBkZWxlZ2F0ZS5uZXh0TG9jO1xuXG4gICAgICAvLyBJZiBjb250ZXh0Lm1ldGhvZCB3YXMgXCJ0aHJvd1wiIGJ1dCB0aGUgZGVsZWdhdGUgaGFuZGxlZCB0aGVcbiAgICAgIC8vIGV4Y2VwdGlvbiwgbGV0IHRoZSBvdXRlciBnZW5lcmF0b3IgcHJvY2VlZCBub3JtYWxseS4gSWZcbiAgICAgIC8vIGNvbnRleHQubWV0aG9kIHdhcyBcIm5leHRcIiwgZm9yZ2V0IGNvbnRleHQuYXJnIHNpbmNlIGl0IGhhcyBiZWVuXG4gICAgICAvLyBcImNvbnN1bWVkXCIgYnkgdGhlIGRlbGVnYXRlIGl0ZXJhdG9yLiBJZiBjb250ZXh0Lm1ldGhvZCB3YXNcbiAgICAgIC8vIFwicmV0dXJuXCIsIGFsbG93IHRoZSBvcmlnaW5hbCAucmV0dXJuIGNhbGwgdG8gY29udGludWUgaW4gdGhlXG4gICAgICAvLyBvdXRlciBnZW5lcmF0b3IuXG4gICAgICBpZiAoY29udGV4dC5tZXRob2QgIT09IFwicmV0dXJuXCIpIHtcbiAgICAgICAgY29udGV4dC5tZXRob2QgPSBcIm5leHRcIjtcbiAgICAgICAgY29udGV4dC5hcmcgPSB1bmRlZmluZWQ7XG4gICAgICB9XG5cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gUmUteWllbGQgdGhlIHJlc3VsdCByZXR1cm5lZCBieSB0aGUgZGVsZWdhdGUgbWV0aG9kLlxuICAgICAgcmV0dXJuIGluZm87XG4gICAgfVxuXG4gICAgLy8gVGhlIGRlbGVnYXRlIGl0ZXJhdG9yIGlzIGZpbmlzaGVkLCBzbyBmb3JnZXQgaXQgYW5kIGNvbnRpbnVlIHdpdGhcbiAgICAvLyB0aGUgb3V0ZXIgZ2VuZXJhdG9yLlxuICAgIGNvbnRleHQuZGVsZWdhdGUgPSBudWxsO1xuICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICB9XG5cbiAgLy8gRGVmaW5lIEdlbmVyYXRvci5wcm90b3R5cGUue25leHQsdGhyb3cscmV0dXJufSBpbiB0ZXJtcyBvZiB0aGVcbiAgLy8gdW5pZmllZCAuX2ludm9rZSBoZWxwZXIgbWV0aG9kLlxuICBkZWZpbmVJdGVyYXRvck1ldGhvZHMoR3ApO1xuXG4gIEdwW3RvU3RyaW5nVGFnU3ltYm9sXSA9IFwiR2VuZXJhdG9yXCI7XG5cbiAgR3AudG9TdHJpbmcgPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gXCJbb2JqZWN0IEdlbmVyYXRvcl1cIjtcbiAgfTtcblxuICBmdW5jdGlvbiBwdXNoVHJ5RW50cnkobG9jcykge1xuICAgIHZhciBlbnRyeSA9IHsgdHJ5TG9jOiBsb2NzWzBdIH07XG5cbiAgICBpZiAoMSBpbiBsb2NzKSB7XG4gICAgICBlbnRyeS5jYXRjaExvYyA9IGxvY3NbMV07XG4gICAgfVxuXG4gICAgaWYgKDIgaW4gbG9jcykge1xuICAgICAgZW50cnkuZmluYWxseUxvYyA9IGxvY3NbMl07XG4gICAgICBlbnRyeS5hZnRlckxvYyA9IGxvY3NbM107XG4gICAgfVxuXG4gICAgdGhpcy50cnlFbnRyaWVzLnB1c2goZW50cnkpO1xuICB9XG5cbiAgZnVuY3Rpb24gcmVzZXRUcnlFbnRyeShlbnRyeSkge1xuICAgIHZhciByZWNvcmQgPSBlbnRyeS5jb21wbGV0aW9uIHx8IHt9O1xuICAgIHJlY29yZC50eXBlID0gXCJub3JtYWxcIjtcbiAgICBkZWxldGUgcmVjb3JkLmFyZztcbiAgICBlbnRyeS5jb21wbGV0aW9uID0gcmVjb3JkO1xuICB9XG5cbiAgZnVuY3Rpb24gQ29udGV4dCh0cnlMb2NzTGlzdCkge1xuICAgIC8vIFRoZSByb290IGVudHJ5IG9iamVjdCAoZWZmZWN0aXZlbHkgYSB0cnkgc3RhdGVtZW50IHdpdGhvdXQgYSBjYXRjaFxuICAgIC8vIG9yIGEgZmluYWxseSBibG9jaykgZ2l2ZXMgdXMgYSBwbGFjZSB0byBzdG9yZSB2YWx1ZXMgdGhyb3duIGZyb21cbiAgICAvLyBsb2NhdGlvbnMgd2hlcmUgdGhlcmUgaXMgbm8gZW5jbG9zaW5nIHRyeSBzdGF0ZW1lbnQuXG4gICAgdGhpcy50cnlFbnRyaWVzID0gW3sgdHJ5TG9jOiBcInJvb3RcIiB9XTtcbiAgICB0cnlMb2NzTGlzdC5mb3JFYWNoKHB1c2hUcnlFbnRyeSwgdGhpcyk7XG4gICAgdGhpcy5yZXNldCh0cnVlKTtcbiAgfVxuXG4gIHJ1bnRpbWUua2V5cyA9IGZ1bmN0aW9uKG9iamVjdCkge1xuICAgIHZhciBrZXlzID0gW107XG4gICAgZm9yICh2YXIga2V5IGluIG9iamVjdCkge1xuICAgICAga2V5cy5wdXNoKGtleSk7XG4gICAgfVxuICAgIGtleXMucmV2ZXJzZSgpO1xuXG4gICAgLy8gUmF0aGVyIHRoYW4gcmV0dXJuaW5nIGFuIG9iamVjdCB3aXRoIGEgbmV4dCBtZXRob2QsIHdlIGtlZXBcbiAgICAvLyB0aGluZ3Mgc2ltcGxlIGFuZCByZXR1cm4gdGhlIG5leHQgZnVuY3Rpb24gaXRzZWxmLlxuICAgIHJldHVybiBmdW5jdGlvbiBuZXh0KCkge1xuICAgICAgd2hpbGUgKGtleXMubGVuZ3RoKSB7XG4gICAgICAgIHZhciBrZXkgPSBrZXlzLnBvcCgpO1xuICAgICAgICBpZiAoa2V5IGluIG9iamVjdCkge1xuICAgICAgICAgIG5leHQudmFsdWUgPSBrZXk7XG4gICAgICAgICAgbmV4dC5kb25lID0gZmFsc2U7XG4gICAgICAgICAgcmV0dXJuIG5leHQ7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gVG8gYXZvaWQgY3JlYXRpbmcgYW4gYWRkaXRpb25hbCBvYmplY3QsIHdlIGp1c3QgaGFuZyB0aGUgLnZhbHVlXG4gICAgICAvLyBhbmQgLmRvbmUgcHJvcGVydGllcyBvZmYgdGhlIG5leHQgZnVuY3Rpb24gb2JqZWN0IGl0c2VsZi4gVGhpc1xuICAgICAgLy8gYWxzbyBlbnN1cmVzIHRoYXQgdGhlIG1pbmlmaWVyIHdpbGwgbm90IGFub255bWl6ZSB0aGUgZnVuY3Rpb24uXG4gICAgICBuZXh0LmRvbmUgPSB0cnVlO1xuICAgICAgcmV0dXJuIG5leHQ7XG4gICAgfTtcbiAgfTtcblxuICBmdW5jdGlvbiB2YWx1ZXMoaXRlcmFibGUpIHtcbiAgICBpZiAoaXRlcmFibGUpIHtcbiAgICAgIHZhciBpdGVyYXRvck1ldGhvZCA9IGl0ZXJhYmxlW2l0ZXJhdG9yU3ltYm9sXTtcbiAgICAgIGlmIChpdGVyYXRvck1ldGhvZCkge1xuICAgICAgICByZXR1cm4gaXRlcmF0b3JNZXRob2QuY2FsbChpdGVyYWJsZSk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlb2YgaXRlcmFibGUubmV4dCA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIHJldHVybiBpdGVyYWJsZTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFpc05hTihpdGVyYWJsZS5sZW5ndGgpKSB7XG4gICAgICAgIHZhciBpID0gLTEsIG5leHQgPSBmdW5jdGlvbiBuZXh0KCkge1xuICAgICAgICAgIHdoaWxlICgrK2kgPCBpdGVyYWJsZS5sZW5ndGgpIHtcbiAgICAgICAgICAgIGlmIChoYXNPd24uY2FsbChpdGVyYWJsZSwgaSkpIHtcbiAgICAgICAgICAgICAgbmV4dC52YWx1ZSA9IGl0ZXJhYmxlW2ldO1xuICAgICAgICAgICAgICBuZXh0LmRvbmUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgcmV0dXJuIG5leHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbmV4dC52YWx1ZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICBuZXh0LmRvbmUgPSB0cnVlO1xuXG4gICAgICAgICAgcmV0dXJuIG5leHQ7XG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIG5leHQubmV4dCA9IG5leHQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gUmV0dXJuIGFuIGl0ZXJhdG9yIHdpdGggbm8gdmFsdWVzLlxuICAgIHJldHVybiB7IG5leHQ6IGRvbmVSZXN1bHQgfTtcbiAgfVxuICBydW50aW1lLnZhbHVlcyA9IHZhbHVlcztcblxuICBmdW5jdGlvbiBkb25lUmVzdWx0KCkge1xuICAgIHJldHVybiB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfTtcbiAgfVxuXG4gIENvbnRleHQucHJvdG90eXBlID0ge1xuICAgIGNvbnN0cnVjdG9yOiBDb250ZXh0LFxuXG4gICAgcmVzZXQ6IGZ1bmN0aW9uKHNraXBUZW1wUmVzZXQpIHtcbiAgICAgIHRoaXMucHJldiA9IDA7XG4gICAgICB0aGlzLm5leHQgPSAwO1xuICAgICAgLy8gUmVzZXR0aW5nIGNvbnRleHQuX3NlbnQgZm9yIGxlZ2FjeSBzdXBwb3J0IG9mIEJhYmVsJ3NcbiAgICAgIC8vIGZ1bmN0aW9uLnNlbnQgaW1wbGVtZW50YXRpb24uXG4gICAgICB0aGlzLnNlbnQgPSB0aGlzLl9zZW50ID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5kb25lID0gZmFsc2U7XG4gICAgICB0aGlzLmRlbGVnYXRlID0gbnVsbDtcblxuICAgICAgdGhpcy5tZXRob2QgPSBcIm5leHRcIjtcbiAgICAgIHRoaXMuYXJnID0gdW5kZWZpbmVkO1xuXG4gICAgICB0aGlzLnRyeUVudHJpZXMuZm9yRWFjaChyZXNldFRyeUVudHJ5KTtcblxuICAgICAgaWYgKCFza2lwVGVtcFJlc2V0KSB7XG4gICAgICAgIGZvciAodmFyIG5hbWUgaW4gdGhpcykge1xuICAgICAgICAgIC8vIE5vdCBzdXJlIGFib3V0IHRoZSBvcHRpbWFsIG9yZGVyIG9mIHRoZXNlIGNvbmRpdGlvbnM6XG4gICAgICAgICAgaWYgKG5hbWUuY2hhckF0KDApID09PSBcInRcIiAmJlxuICAgICAgICAgICAgICBoYXNPd24uY2FsbCh0aGlzLCBuYW1lKSAmJlxuICAgICAgICAgICAgICAhaXNOYU4oK25hbWUuc2xpY2UoMSkpKSB7XG4gICAgICAgICAgICB0aGlzW25hbWVdID0gdW5kZWZpbmVkO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG5cbiAgICBzdG9wOiBmdW5jdGlvbigpIHtcbiAgICAgIHRoaXMuZG9uZSA9IHRydWU7XG5cbiAgICAgIHZhciByb290RW50cnkgPSB0aGlzLnRyeUVudHJpZXNbMF07XG4gICAgICB2YXIgcm9vdFJlY29yZCA9IHJvb3RFbnRyeS5jb21wbGV0aW9uO1xuICAgICAgaWYgKHJvb3RSZWNvcmQudHlwZSA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgIHRocm93IHJvb3RSZWNvcmQuYXJnO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5ydmFsO1xuICAgIH0sXG5cbiAgICBkaXNwYXRjaEV4Y2VwdGlvbjogZnVuY3Rpb24oZXhjZXB0aW9uKSB7XG4gICAgICBpZiAodGhpcy5kb25lKSB7XG4gICAgICAgIHRocm93IGV4Y2VwdGlvbjtcbiAgICAgIH1cblxuICAgICAgdmFyIGNvbnRleHQgPSB0aGlzO1xuICAgICAgZnVuY3Rpb24gaGFuZGxlKGxvYywgY2F1Z2h0KSB7XG4gICAgICAgIHJlY29yZC50eXBlID0gXCJ0aHJvd1wiO1xuICAgICAgICByZWNvcmQuYXJnID0gZXhjZXB0aW9uO1xuICAgICAgICBjb250ZXh0Lm5leHQgPSBsb2M7XG5cbiAgICAgICAgaWYgKGNhdWdodCkge1xuICAgICAgICAgIC8vIElmIHRoZSBkaXNwYXRjaGVkIGV4Y2VwdGlvbiB3YXMgY2F1Z2h0IGJ5IGEgY2F0Y2ggYmxvY2ssXG4gICAgICAgICAgLy8gdGhlbiBsZXQgdGhhdCBjYXRjaCBibG9jayBoYW5kbGUgdGhlIGV4Y2VwdGlvbiBub3JtYWxseS5cbiAgICAgICAgICBjb250ZXh0Lm1ldGhvZCA9IFwibmV4dFwiO1xuICAgICAgICAgIGNvbnRleHQuYXJnID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuICEhIGNhdWdodDtcbiAgICAgIH1cblxuICAgICAgZm9yICh2YXIgaSA9IHRoaXMudHJ5RW50cmllcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgICB2YXIgZW50cnkgPSB0aGlzLnRyeUVudHJpZXNbaV07XG4gICAgICAgIHZhciByZWNvcmQgPSBlbnRyeS5jb21wbGV0aW9uO1xuXG4gICAgICAgIGlmIChlbnRyeS50cnlMb2MgPT09IFwicm9vdFwiKSB7XG4gICAgICAgICAgLy8gRXhjZXB0aW9uIHRocm93biBvdXRzaWRlIG9mIGFueSB0cnkgYmxvY2sgdGhhdCBjb3VsZCBoYW5kbGVcbiAgICAgICAgICAvLyBpdCwgc28gc2V0IHRoZSBjb21wbGV0aW9uIHZhbHVlIG9mIHRoZSBlbnRpcmUgZnVuY3Rpb24gdG9cbiAgICAgICAgICAvLyB0aHJvdyB0aGUgZXhjZXB0aW9uLlxuICAgICAgICAgIHJldHVybiBoYW5kbGUoXCJlbmRcIik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZW50cnkudHJ5TG9jIDw9IHRoaXMucHJldikge1xuICAgICAgICAgIHZhciBoYXNDYXRjaCA9IGhhc093bi5jYWxsKGVudHJ5LCBcImNhdGNoTG9jXCIpO1xuICAgICAgICAgIHZhciBoYXNGaW5hbGx5ID0gaGFzT3duLmNhbGwoZW50cnksIFwiZmluYWxseUxvY1wiKTtcblxuICAgICAgICAgIGlmIChoYXNDYXRjaCAmJiBoYXNGaW5hbGx5KSB7XG4gICAgICAgICAgICBpZiAodGhpcy5wcmV2IDwgZW50cnkuY2F0Y2hMb2MpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGhhbmRsZShlbnRyeS5jYXRjaExvYywgdHJ1ZSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMucHJldiA8IGVudHJ5LmZpbmFsbHlMb2MpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGhhbmRsZShlbnRyeS5maW5hbGx5TG9jKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgIH0gZWxzZSBpZiAoaGFzQ2F0Y2gpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnByZXYgPCBlbnRyeS5jYXRjaExvYykge1xuICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlKGVudHJ5LmNhdGNoTG9jLCB0cnVlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgIH0gZWxzZSBpZiAoaGFzRmluYWxseSkge1xuICAgICAgICAgICAgaWYgKHRoaXMucHJldiA8IGVudHJ5LmZpbmFsbHlMb2MpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGhhbmRsZShlbnRyeS5maW5hbGx5TG9jKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJ0cnkgc3RhdGVtZW50IHdpdGhvdXQgY2F0Y2ggb3IgZmluYWxseVwiKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuXG4gICAgYWJydXB0OiBmdW5jdGlvbih0eXBlLCBhcmcpIHtcbiAgICAgIGZvciAodmFyIGkgPSB0aGlzLnRyeUVudHJpZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgICAgdmFyIGVudHJ5ID0gdGhpcy50cnlFbnRyaWVzW2ldO1xuICAgICAgICBpZiAoZW50cnkudHJ5TG9jIDw9IHRoaXMucHJldiAmJlxuICAgICAgICAgICAgaGFzT3duLmNhbGwoZW50cnksIFwiZmluYWxseUxvY1wiKSAmJlxuICAgICAgICAgICAgdGhpcy5wcmV2IDwgZW50cnkuZmluYWxseUxvYykge1xuICAgICAgICAgIHZhciBmaW5hbGx5RW50cnkgPSBlbnRyeTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoZmluYWxseUVudHJ5ICYmXG4gICAgICAgICAgKHR5cGUgPT09IFwiYnJlYWtcIiB8fFxuICAgICAgICAgICB0eXBlID09PSBcImNvbnRpbnVlXCIpICYmXG4gICAgICAgICAgZmluYWxseUVudHJ5LnRyeUxvYyA8PSBhcmcgJiZcbiAgICAgICAgICBhcmcgPD0gZmluYWxseUVudHJ5LmZpbmFsbHlMb2MpIHtcbiAgICAgICAgLy8gSWdub3JlIHRoZSBmaW5hbGx5IGVudHJ5IGlmIGNvbnRyb2wgaXMgbm90IGp1bXBpbmcgdG8gYVxuICAgICAgICAvLyBsb2NhdGlvbiBvdXRzaWRlIHRoZSB0cnkvY2F0Y2ggYmxvY2suXG4gICAgICAgIGZpbmFsbHlFbnRyeSA9IG51bGw7XG4gICAgICB9XG5cbiAgICAgIHZhciByZWNvcmQgPSBmaW5hbGx5RW50cnkgPyBmaW5hbGx5RW50cnkuY29tcGxldGlvbiA6IHt9O1xuICAgICAgcmVjb3JkLnR5cGUgPSB0eXBlO1xuICAgICAgcmVjb3JkLmFyZyA9IGFyZztcblxuICAgICAgaWYgKGZpbmFsbHlFbnRyeSkge1xuICAgICAgICB0aGlzLm1ldGhvZCA9IFwibmV4dFwiO1xuICAgICAgICB0aGlzLm5leHQgPSBmaW5hbGx5RW50cnkuZmluYWxseUxvYztcbiAgICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzLmNvbXBsZXRlKHJlY29yZCk7XG4gICAgfSxcblxuICAgIGNvbXBsZXRlOiBmdW5jdGlvbihyZWNvcmQsIGFmdGVyTG9jKSB7XG4gICAgICBpZiAocmVjb3JkLnR5cGUgPT09IFwidGhyb3dcIikge1xuICAgICAgICB0aHJvdyByZWNvcmQuYXJnO1xuICAgICAgfVxuXG4gICAgICBpZiAocmVjb3JkLnR5cGUgPT09IFwiYnJlYWtcIiB8fFxuICAgICAgICAgIHJlY29yZC50eXBlID09PSBcImNvbnRpbnVlXCIpIHtcbiAgICAgICAgdGhpcy5uZXh0ID0gcmVjb3JkLmFyZztcbiAgICAgIH0gZWxzZSBpZiAocmVjb3JkLnR5cGUgPT09IFwicmV0dXJuXCIpIHtcbiAgICAgICAgdGhpcy5ydmFsID0gdGhpcy5hcmcgPSByZWNvcmQuYXJnO1xuICAgICAgICB0aGlzLm1ldGhvZCA9IFwicmV0dXJuXCI7XG4gICAgICAgIHRoaXMubmV4dCA9IFwiZW5kXCI7XG4gICAgICB9IGVsc2UgaWYgKHJlY29yZC50eXBlID09PSBcIm5vcm1hbFwiICYmIGFmdGVyTG9jKSB7XG4gICAgICAgIHRoaXMubmV4dCA9IGFmdGVyTG9jO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgICB9LFxuXG4gICAgZmluaXNoOiBmdW5jdGlvbihmaW5hbGx5TG9jKSB7XG4gICAgICBmb3IgKHZhciBpID0gdGhpcy50cnlFbnRyaWVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICAgIHZhciBlbnRyeSA9IHRoaXMudHJ5RW50cmllc1tpXTtcbiAgICAgICAgaWYgKGVudHJ5LmZpbmFsbHlMb2MgPT09IGZpbmFsbHlMb2MpIHtcbiAgICAgICAgICB0aGlzLmNvbXBsZXRlKGVudHJ5LmNvbXBsZXRpb24sIGVudHJ5LmFmdGVyTG9jKTtcbiAgICAgICAgICByZXNldFRyeUVudHJ5KGVudHJ5KTtcbiAgICAgICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG5cbiAgICBcImNhdGNoXCI6IGZ1bmN0aW9uKHRyeUxvYykge1xuICAgICAgZm9yICh2YXIgaSA9IHRoaXMudHJ5RW50cmllcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgICB2YXIgZW50cnkgPSB0aGlzLnRyeUVudHJpZXNbaV07XG4gICAgICAgIGlmIChlbnRyeS50cnlMb2MgPT09IHRyeUxvYykge1xuICAgICAgICAgIHZhciByZWNvcmQgPSBlbnRyeS5jb21wbGV0aW9uO1xuICAgICAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgICAgICB2YXIgdGhyb3duID0gcmVjb3JkLmFyZztcbiAgICAgICAgICAgIHJlc2V0VHJ5RW50cnkoZW50cnkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdGhyb3duO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIFRoZSBjb250ZXh0LmNhdGNoIG1ldGhvZCBtdXN0IG9ubHkgYmUgY2FsbGVkIHdpdGggYSBsb2NhdGlvblxuICAgICAgLy8gYXJndW1lbnQgdGhhdCBjb3JyZXNwb25kcyB0byBhIGtub3duIGNhdGNoIGJsb2NrLlxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaWxsZWdhbCBjYXRjaCBhdHRlbXB0XCIpO1xuICAgIH0sXG5cbiAgICBkZWxlZ2F0ZVlpZWxkOiBmdW5jdGlvbihpdGVyYWJsZSwgcmVzdWx0TmFtZSwgbmV4dExvYykge1xuICAgICAgdGhpcy5kZWxlZ2F0ZSA9IHtcbiAgICAgICAgaXRlcmF0b3I6IHZhbHVlcyhpdGVyYWJsZSksXG4gICAgICAgIHJlc3VsdE5hbWU6IHJlc3VsdE5hbWUsXG4gICAgICAgIG5leHRMb2M6IG5leHRMb2NcbiAgICAgIH07XG5cbiAgICAgIGlmICh0aGlzLm1ldGhvZCA9PT0gXCJuZXh0XCIpIHtcbiAgICAgICAgLy8gRGVsaWJlcmF0ZWx5IGZvcmdldCB0aGUgbGFzdCBzZW50IHZhbHVlIHNvIHRoYXQgd2UgZG9uJ3RcbiAgICAgICAgLy8gYWNjaWRlbnRhbGx5IHBhc3MgaXQgb24gdG8gdGhlIGRlbGVnYXRlLlxuICAgICAgICB0aGlzLmFyZyA9IHVuZGVmaW5lZDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgfVxuICB9O1xufSkoXG4gIC8vIEFtb25nIHRoZSB2YXJpb3VzIHRyaWNrcyBmb3Igb2J0YWluaW5nIGEgcmVmZXJlbmNlIHRvIHRoZSBnbG9iYWxcbiAgLy8gb2JqZWN0LCB0aGlzIHNlZW1zIHRvIGJlIHRoZSBtb3N0IHJlbGlhYmxlIHRlY2huaXF1ZSB0aGF0IGRvZXMgbm90XG4gIC8vIHVzZSBpbmRpcmVjdCBldmFsICh3aGljaCB2aW9sYXRlcyBDb250ZW50IFNlY3VyaXR5IFBvbGljeSkuXG4gIHR5cGVvZiBnbG9iYWwgPT09IFwib2JqZWN0XCIgPyBnbG9iYWwgOlxuICB0eXBlb2Ygd2luZG93ID09PSBcIm9iamVjdFwiID8gd2luZG93IDpcbiAgdHlwZW9mIHNlbGYgPT09IFwib2JqZWN0XCIgPyBzZWxmIDogdGhpc1xuKTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIHByb2o0ID0gcmVxdWlyZSgncHJvajQnKTtcbi8vIENoZWNrcyBpZiBgbGlzdGAgbG9va3MgbGlrZSBhIGBbeCwgeV1gLlxuZnVuY3Rpb24gaXNYWShsaXN0KSB7XG4gIHJldHVybiBsaXN0Lmxlbmd0aCA+PSAyICYmXG4gICAgdHlwZW9mIGxpc3RbMF0gPT09ICdudW1iZXInICYmXG4gICAgdHlwZW9mIGxpc3RbMV0gPT09ICdudW1iZXInO1xufVxuXG5mdW5jdGlvbiB0cmF2ZXJzZUNvb3Jkcyhjb29yZGluYXRlcywgY2FsbGJhY2spIHtcbiAgaWYgKGlzWFkoY29vcmRpbmF0ZXMpKSByZXR1cm4gY2FsbGJhY2soY29vcmRpbmF0ZXMpO1xuICByZXR1cm4gY29vcmRpbmF0ZXMubWFwKGZ1bmN0aW9uKGNvb3JkKXtyZXR1cm4gdHJhdmVyc2VDb29yZHMoY29vcmQsIGNhbGxiYWNrKTt9KTtcbn1cblxuLy8gU2ltcGxpc3RpYyBzaGFsbG93IGNsb25lIHRoYXQgd2lsbCB3b3JrIGZvciBhIG5vcm1hbCBHZW9KU09OIG9iamVjdC5cbmZ1bmN0aW9uIGNsb25lKG9iaikge1xuICBpZiAobnVsbCA9PSBvYmogfHwgJ29iamVjdCcgIT09IHR5cGVvZiBvYmopIHJldHVybiBvYmo7XG4gIHZhciBjb3B5ID0gb2JqLmNvbnN0cnVjdG9yKCk7XG4gIGZvciAodmFyIGF0dHIgaW4gb2JqKSB7XG4gICAgaWYgKG9iai5oYXNPd25Qcm9wZXJ0eShhdHRyKSkgY29weVthdHRyXSA9IG9ialthdHRyXTtcbiAgfVxuICByZXR1cm4gY29weTtcbn1cblxuZnVuY3Rpb24gdHJhdmVyc2VHZW9Kc29uKGdlb2pzb24sIGxlYWZDYWxsYmFjaywgbm9kZUNhbGxiYWNrKSB7XG4gIGlmIChnZW9qc29uID09IG51bGwpIHJldHVybiBnZW9qc29uO1xuXG4gIHZhciByID0gY2xvbmUoZ2VvanNvbik7XG5cbiAgaWYgKGdlb2pzb24udHlwZSA9PT0gJ0ZlYXR1cmUnKSB7XG4gICAgci5nZW9tZXRyeSA9IHRyYXZlcnNlR2VvSnNvbihnZW9qc29uLmdlb21ldHJ5LCBsZWFmQ2FsbGJhY2ssIG5vZGVDYWxsYmFjayk7XG4gIH0gZWxzZSBpZiAoZ2VvanNvbi50eXBlID09PSAnRmVhdHVyZUNvbGxlY3Rpb24nKSB7XG4gICAgci5mZWF0dXJlcyA9IHIuZmVhdHVyZXMubWFwKGZ1bmN0aW9uKGdqKSB7IHJldHVybiB0cmF2ZXJzZUdlb0pzb24oZ2osIGxlYWZDYWxsYmFjaywgbm9kZUNhbGxiYWNrKTsgfSk7XG4gIH0gZWxzZSBpZiAoZ2VvanNvbi50eXBlID09PSAnR2VvbWV0cnlDb2xsZWN0aW9uJykge1xuICAgIHIuZ2VvbWV0cmllcyA9IHIuZ2VvbWV0cmllcy5tYXAoZnVuY3Rpb24oZ2opIHsgcmV0dXJuIHRyYXZlcnNlR2VvSnNvbihnaiwgbGVhZkNhbGxiYWNrLCBub2RlQ2FsbGJhY2spOyB9KTtcbiAgfSBlbHNlIHtcbiAgICBpZiAobGVhZkNhbGxiYWNrKSBsZWFmQ2FsbGJhY2socik7XG4gIH1cblxuICBpZiAobm9kZUNhbGxiYWNrKSBub2RlQ2FsbGJhY2socik7XG5cbiAgcmV0dXJuIHI7XG59XG5cbmZ1bmN0aW9uIGRldGVjdENycyhnZW9qc29uLCBwcm9qcykge1xuICB2YXIgY3JzSW5mbyA9IGdlb2pzb24uY3JzLFxuICAgICAgY3JzO1xuXG4gIGlmIChjcnNJbmZvID09PSB1bmRlZmluZWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1VuYWJsZSB0byBkZXRlY3QgQ1JTLCBHZW9KU09OIGhhcyBubyBcImNyc1wiIHByb3BlcnR5LicpO1xuICB9XG5cbiAgaWYgKGNyc0luZm8udHlwZSA9PT0gJ25hbWUnKSB7XG4gICAgY3JzID0gcHJvanNbY3JzSW5mby5wcm9wZXJ0aWVzLm5hbWVdO1xuICB9IGVsc2UgaWYgKGNyc0luZm8udHlwZSA9PT0gJ0VQU0cnKSB7XG4gICAgY3JzID0gcHJvanNbJ0VQU0c6JyArIGNyc0luZm8ucHJvcGVydGllcy5jb2RlXTtcbiAgfVxuXG4gIGlmICghY3JzKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdDUlMgZGVmaW5lZCBpbiBjcnMgc2VjdGlvbiBjb3VsZCBub3QgYmUgaWRlbnRpZmllZDogJyArIEpTT04uc3RyaW5naWZ5KGNyc0luZm8pKTtcbiAgfVxuXG4gIHJldHVybiBjcnM7XG59XG5cbmZ1bmN0aW9uIGRldGVybWluZUNycyhjcnMsIHByb2pzKSB7XG4gIGlmICh0eXBlb2YgY3JzID09PSAnc3RyaW5nJyB8fCBjcnMgaW5zdGFuY2VvZiBTdHJpbmcpIHtcbiAgICByZXR1cm4gcHJvanNbY3JzXSB8fCBwcm9qNC5Qcm9qKGNycyk7XG4gIH1cblxuICByZXR1cm4gY3JzO1xufVxuXG5mdW5jdGlvbiByZXByb2plY3QoZ2VvanNvbiwgZnJvbSwgdG8sIHByb2pzKSB7XG4gIHByb2pzID0gcHJvanMgfHwge307XG4gIGlmICghZnJvbSkge1xuICAgIGZyb20gPSBkZXRlY3RDcnMoZ2VvanNvbiwgcHJvanMpO1xuICB9IGVsc2Uge1xuICAgIGZyb20gPSBkZXRlcm1pbmVDcnMoZnJvbSwgcHJvanMpO1xuICB9XG5cbiAgdG8gPSBkZXRlcm1pbmVDcnModG8sIHByb2pzKTtcbiAgdmFyIHRyYW5zZm9ybSA9IHByb2o0KGZyb20sIHRvKTtcblxuICByZXR1cm4gdHJhdmVyc2VHZW9Kc29uKGdlb2pzb24sIGZ1bmN0aW9uKGdqKSB7XG4gICAgLy8gTm8gZWFzeSB3YXkgdG8gcHV0IGNvcnJlY3QgQ1JTIGluZm8gaW50byB0aGUgR2VvSlNPTixcbiAgICAvLyBhbmQgZGVmaW5pdGVseSB3cm9uZyB0byBrZWVwIHRoZSBvbGQsIHNvIGRlbGV0ZSBpdC5cbiAgICBpZiAoZ2ouY3JzKSB7XG4gICAgICBkZWxldGUgZ2ouY3JzO1xuICAgIH1cbiAgICBnai5jb29yZGluYXRlcyA9IHRyYXZlcnNlQ29vcmRzKGdqLmNvb3JkaW5hdGVzLCBmdW5jdGlvbih4eSkge1xuICAgICAgcmV0dXJuIHRyYW5zZm9ybS5mb3J3YXJkKHh5KTtcbiAgICB9KTtcbiAgfSwgZnVuY3Rpb24oZ2opIHtcbiAgICBpZiAoZ2ouYmJveCkge1xuICAgICAgLy8gQSBiYm94IGNhbid0IGVhc2lseSBiZSByZXByb2plY3RlZCwganVzdCByZXByb2plY3RpbmdcbiAgICAgIC8vIHRoZSBtaW4vbWF4IGNvb3JkcyBkZWZpbml0ZWx5IHdpbGwgbm90IHdvcmsgc2luY2VcbiAgICAgIC8vIHRoZSB0cmFuc2Zvcm0gaXMgbm90IGxpbmVhciAoaW4gdGhlIGdlbmVyYWwgY2FzZSkuXG4gICAgICAvLyBXb3JrYXJvdW5kIGlzIHRvIGp1c3QgcmUtY29tcHV0ZSB0aGUgYmJveCBhZnRlciB0aGVcbiAgICAgIC8vIHRyYW5zZm9ybS5cbiAgICAgIGdqLmJib3ggPSAoZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBtaW4gPSBbTnVtYmVyLk1BWF9WQUxVRSwgTnVtYmVyLk1BWF9WQUxVRV0sXG4gICAgICAgICAgICBtYXggPSBbLU51bWJlci5NQVhfVkFMVUUsIC1OdW1iZXIuTUFYX1ZBTFVFXTtcbiAgICAgICAgdHJhdmVyc2VHZW9Kc29uKGdqLCBmdW5jdGlvbihfZ2opIHtcbiAgICAgICAgICB0cmF2ZXJzZUNvb3JkcyhfZ2ouY29vcmRpbmF0ZXMsIGZ1bmN0aW9uKHh5KSB7XG4gICAgICAgICAgICBtaW5bMF0gPSBNYXRoLm1pbihtaW5bMF0sIHh5WzBdKTtcbiAgICAgICAgICAgIG1pblsxXSA9IE1hdGgubWluKG1pblsxXSwgeHlbMV0pO1xuICAgICAgICAgICAgbWF4WzBdID0gTWF0aC5tYXgobWF4WzBdLCB4eVswXSk7XG4gICAgICAgICAgICBtYXhbMV0gPSBNYXRoLm1heChtYXhbMV0sIHh5WzFdKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBbbWluWzBdLCBtaW5bMV0sIG1heFswXSwgbWF4WzFdXTtcbiAgICAgIH0pKCk7XG4gICAgfVxuICB9KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgZGV0ZWN0Q3JzOiBkZXRlY3RDcnMsXG5cbiAgICByZXByb2plY3Q6IHJlcHJvamVjdCxcblxuICAgIHJldmVyc2U6IGZ1bmN0aW9uKGdlb2pzb24pIHtcbiAgICAgIHJldHVybiB0cmF2ZXJzZUdlb0pzb24oZ2VvanNvbiwgZnVuY3Rpb24oZ2opIHtcbiAgICAgICAgZ2ouY29vcmRpbmF0ZXMgPSB0cmF2ZXJzZUNvb3Jkcyhnai5jb29yZGluYXRlcywgZnVuY3Rpb24oeHkpIHtcbiAgICAgICAgICByZXR1cm4gWyB4eVsxXSwgeHlbMF0gXTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgdG9XZ3M4NDogZnVuY3Rpb24oZ2VvanNvbiwgZnJvbSwgcHJvanMpIHtcbiAgICAgIHJldHVybiByZXByb2plY3QoZ2VvanNvbiwgZnJvbSwgcHJvajQuV0dTODQsIHByb2pzKTtcbiAgICB9XG4gIH07XG4iLCIvKlxuQ3J5cHRvSlMgdjMuMS4yXG5jb2RlLmdvb2dsZS5jb20vcC9jcnlwdG8tanNcbihjKSAyMDA5LTIwMTMgYnkgSmVmZiBNb3R0LiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuY29kZS5nb29nbGUuY29tL3AvY3J5cHRvLWpzL3dpa2kvTGljZW5zZVxuKi9cbi8qKiBAcHJlc2VydmVcbihjKSAyMDEyIGJ5IEPDqWRyaWMgTWVzbmlsLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXG5SZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6XG5cbiAgICAtIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci5cbiAgICAtIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi5cblxuVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyBcIkFTIElTXCIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxuKi9cblxuLy8gY29uc3RhbnRzIHRhYmxlXG52YXIgemwgPSBbXG4gIDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsXG4gIDcsIDQsIDEzLCAxLCAxMCwgNiwgMTUsIDMsIDEyLCAwLCA5LCA1LCAyLCAxNCwgMTEsIDgsXG4gIDMsIDEwLCAxNCwgNCwgOSwgMTUsIDgsIDEsIDIsIDcsIDAsIDYsIDEzLCAxMSwgNSwgMTIsXG4gIDEsIDksIDExLCAxMCwgMCwgOCwgMTIsIDQsIDEzLCAzLCA3LCAxNSwgMTQsIDUsIDYsIDIsXG4gIDQsIDAsIDUsIDksIDcsIDEyLCAyLCAxMCwgMTQsIDEsIDMsIDgsIDExLCA2LCAxNSwgMTNcbl1cblxudmFyIHpyID0gW1xuICA1LCAxNCwgNywgMCwgOSwgMiwgMTEsIDQsIDEzLCA2LCAxNSwgOCwgMSwgMTAsIDMsIDEyLFxuICA2LCAxMSwgMywgNywgMCwgMTMsIDUsIDEwLCAxNCwgMTUsIDgsIDEyLCA0LCA5LCAxLCAyLFxuICAxNSwgNSwgMSwgMywgNywgMTQsIDYsIDksIDExLCA4LCAxMiwgMiwgMTAsIDAsIDQsIDEzLFxuICA4LCA2LCA0LCAxLCAzLCAxMSwgMTUsIDAsIDUsIDEyLCAyLCAxMywgOSwgNywgMTAsIDE0LFxuICAxMiwgMTUsIDEwLCA0LCAxLCA1LCA4LCA3LCA2LCAyLCAxMywgMTQsIDAsIDMsIDksIDExXG5dXG5cbnZhciBzbCA9IFtcbiAgMTEsIDE0LCAxNSwgMTIsIDUsIDgsIDcsIDksIDExLCAxMywgMTQsIDE1LCA2LCA3LCA5LCA4LFxuICA3LCA2LCA4LCAxMywgMTEsIDksIDcsIDE1LCA3LCAxMiwgMTUsIDksIDExLCA3LCAxMywgMTIsXG4gIDExLCAxMywgNiwgNywgMTQsIDksIDEzLCAxNSwgMTQsIDgsIDEzLCA2LCA1LCAxMiwgNywgNSxcbiAgMTEsIDEyLCAxNCwgMTUsIDE0LCAxNSwgOSwgOCwgOSwgMTQsIDUsIDYsIDgsIDYsIDUsIDEyLFxuICA5LCAxNSwgNSwgMTEsIDYsIDgsIDEzLCAxMiwgNSwgMTIsIDEzLCAxNCwgMTEsIDgsIDUsIDZcbl1cblxudmFyIHNyID0gW1xuICA4LCA5LCA5LCAxMSwgMTMsIDE1LCAxNSwgNSwgNywgNywgOCwgMTEsIDE0LCAxNCwgMTIsIDYsXG4gIDksIDEzLCAxNSwgNywgMTIsIDgsIDksIDExLCA3LCA3LCAxMiwgNywgNiwgMTUsIDEzLCAxMSxcbiAgOSwgNywgMTUsIDExLCA4LCA2LCA2LCAxNCwgMTIsIDEzLCA1LCAxNCwgMTMsIDEzLCA3LCA1LFxuICAxNSwgNSwgOCwgMTEsIDE0LCAxNCwgNiwgMTQsIDYsIDksIDEyLCA5LCAxMiwgNSwgMTUsIDgsXG4gIDgsIDUsIDEyLCA5LCAxMiwgNSwgMTQsIDYsIDgsIDEzLCA2LCA1LCAxNSwgMTMsIDExLCAxMVxuXVxuXG52YXIgaGwgPSBbMHgwMDAwMDAwMCwgMHg1QTgyNzk5OSwgMHg2RUQ5RUJBMSwgMHg4RjFCQkNEQywgMHhBOTUzRkQ0RV1cbnZhciBociA9IFsweDUwQTI4QkU2LCAweDVDNEREMTI0LCAweDZENzAzRUYzLCAweDdBNkQ3NkU5LCAweDAwMDAwMDAwXVxuXG5mdW5jdGlvbiBieXRlc1RvV29yZHMgKGJ5dGVzKSB7XG4gIHZhciB3b3JkcyA9IFtdXG4gIGZvciAodmFyIGkgPSAwLCBiID0gMDsgaSA8IGJ5dGVzLmxlbmd0aDsgaSsrLCBiICs9IDgpIHtcbiAgICB3b3Jkc1tiID4+PiA1XSB8PSBieXRlc1tpXSA8PCAoMjQgLSBiICUgMzIpXG4gIH1cbiAgcmV0dXJuIHdvcmRzXG59XG5cbmZ1bmN0aW9uIHdvcmRzVG9CeXRlcyAod29yZHMpIHtcbiAgdmFyIGJ5dGVzID0gW11cbiAgZm9yICh2YXIgYiA9IDA7IGIgPCB3b3Jkcy5sZW5ndGggKiAzMjsgYiArPSA4KSB7XG4gICAgYnl0ZXMucHVzaCgod29yZHNbYiA+Pj4gNV0gPj4+ICgyNCAtIGIgJSAzMikpICYgMHhGRilcbiAgfVxuICByZXR1cm4gYnl0ZXNcbn1cblxuZnVuY3Rpb24gcHJvY2Vzc0Jsb2NrIChILCBNLCBvZmZzZXQpIHtcbiAgLy8gc3dhcCBlbmRpYW5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCAxNjsgaSsrKSB7XG4gICAgdmFyIG9mZnNldF9pID0gb2Zmc2V0ICsgaVxuICAgIHZhciBNX29mZnNldF9pID0gTVtvZmZzZXRfaV1cblxuICAgIC8vIFN3YXBcbiAgICBNW29mZnNldF9pXSA9IChcbiAgICAgICgoKE1fb2Zmc2V0X2kgPDwgOCkgfCAoTV9vZmZzZXRfaSA+Pj4gMjQpKSAmIDB4MDBmZjAwZmYpIHxcbiAgICAgICgoKE1fb2Zmc2V0X2kgPDwgMjQpIHwgKE1fb2Zmc2V0X2kgPj4+IDgpKSAmIDB4ZmYwMGZmMDApXG4gICAgKVxuICB9XG5cbiAgLy8gV29ya2luZyB2YXJpYWJsZXNcbiAgdmFyIGFsLCBibCwgY2wsIGRsLCBlbFxuICB2YXIgYXIsIGJyLCBjciwgZHIsIGVyXG5cbiAgYXIgPSBhbCA9IEhbMF1cbiAgYnIgPSBibCA9IEhbMV1cbiAgY3IgPSBjbCA9IEhbMl1cbiAgZHIgPSBkbCA9IEhbM11cbiAgZXIgPSBlbCA9IEhbNF1cblxuICAvLyBjb21wdXRhdGlvblxuICB2YXIgdFxuICBmb3IgKGkgPSAwOyBpIDwgODA7IGkgKz0gMSkge1xuICAgIHQgPSAoYWwgKyBNW29mZnNldCArIHpsW2ldXSkgfCAwXG4gICAgaWYgKGkgPCAxNikge1xuICAgICAgdCArPSBmMShibCwgY2wsIGRsKSArIGhsWzBdXG4gICAgfSBlbHNlIGlmIChpIDwgMzIpIHtcbiAgICAgIHQgKz0gZjIoYmwsIGNsLCBkbCkgKyBobFsxXVxuICAgIH0gZWxzZSBpZiAoaSA8IDQ4KSB7XG4gICAgICB0ICs9IGYzKGJsLCBjbCwgZGwpICsgaGxbMl1cbiAgICB9IGVsc2UgaWYgKGkgPCA2NCkge1xuICAgICAgdCArPSBmNChibCwgY2wsIGRsKSArIGhsWzNdXG4gICAgfSBlbHNlIHsvLyBpZiAoaTw4MCkge1xuICAgICAgdCArPSBmNShibCwgY2wsIGRsKSArIGhsWzRdXG4gICAgfVxuICAgIHQgPSB0IHwgMFxuICAgIHQgPSByb3RsKHQsIHNsW2ldKVxuICAgIHQgPSAodCArIGVsKSB8IDBcbiAgICBhbCA9IGVsXG4gICAgZWwgPSBkbFxuICAgIGRsID0gcm90bChjbCwgMTApXG4gICAgY2wgPSBibFxuICAgIGJsID0gdFxuXG4gICAgdCA9IChhciArIE1bb2Zmc2V0ICsgenJbaV1dKSB8IDBcbiAgICBpZiAoaSA8IDE2KSB7XG4gICAgICB0ICs9IGY1KGJyLCBjciwgZHIpICsgaHJbMF1cbiAgICB9IGVsc2UgaWYgKGkgPCAzMikge1xuICAgICAgdCArPSBmNChiciwgY3IsIGRyKSArIGhyWzFdXG4gICAgfSBlbHNlIGlmIChpIDwgNDgpIHtcbiAgICAgIHQgKz0gZjMoYnIsIGNyLCBkcikgKyBoclsyXVxuICAgIH0gZWxzZSBpZiAoaSA8IDY0KSB7XG4gICAgICB0ICs9IGYyKGJyLCBjciwgZHIpICsgaHJbM11cbiAgICB9IGVsc2Ugey8vIGlmIChpPDgwKSB7XG4gICAgICB0ICs9IGYxKGJyLCBjciwgZHIpICsgaHJbNF1cbiAgICB9XG5cbiAgICB0ID0gdCB8IDBcbiAgICB0ID0gcm90bCh0LCBzcltpXSlcbiAgICB0ID0gKHQgKyBlcikgfCAwXG4gICAgYXIgPSBlclxuICAgIGVyID0gZHJcbiAgICBkciA9IHJvdGwoY3IsIDEwKVxuICAgIGNyID0gYnJcbiAgICBiciA9IHRcbiAgfVxuXG4gIC8vIGludGVybWVkaWF0ZSBoYXNoIHZhbHVlXG4gIHQgPSAoSFsxXSArIGNsICsgZHIpIHwgMFxuICBIWzFdID0gKEhbMl0gKyBkbCArIGVyKSB8IDBcbiAgSFsyXSA9IChIWzNdICsgZWwgKyBhcikgfCAwXG4gIEhbM10gPSAoSFs0XSArIGFsICsgYnIpIHwgMFxuICBIWzRdID0gKEhbMF0gKyBibCArIGNyKSB8IDBcbiAgSFswXSA9IHRcbn1cblxuZnVuY3Rpb24gZjEgKHgsIHksIHopIHtcbiAgcmV0dXJuICgoeCkgXiAoeSkgXiAoeikpXG59XG5cbmZ1bmN0aW9uIGYyICh4LCB5LCB6KSB7XG4gIHJldHVybiAoKCh4KSAmICh5KSkgfCAoKH54KSAmICh6KSkpXG59XG5cbmZ1bmN0aW9uIGYzICh4LCB5LCB6KSB7XG4gIHJldHVybiAoKCh4KSB8ICh+KHkpKSkgXiAoeikpXG59XG5cbmZ1bmN0aW9uIGY0ICh4LCB5LCB6KSB7XG4gIHJldHVybiAoKCh4KSAmICh6KSkgfCAoKHkpICYgKH4oeikpKSlcbn1cblxuZnVuY3Rpb24gZjUgKHgsIHksIHopIHtcbiAgcmV0dXJuICgoeCkgXiAoKHkpIHwgKH4oeikpKSlcbn1cblxuZnVuY3Rpb24gcm90bCAoeCwgbikge1xuICByZXR1cm4gKHggPDwgbikgfCAoeCA+Pj4gKDMyIC0gbikpXG59XG5cbmZ1bmN0aW9uIHJpcGVtZDE2MCAobWVzc2FnZSkge1xuICB2YXIgSCA9IFsweDY3NDUyMzAxLCAweEVGQ0RBQjg5LCAweDk4QkFEQ0ZFLCAweDEwMzI1NDc2LCAweEMzRDJFMUYwXVxuXG4gIGlmICh0eXBlb2YgbWVzc2FnZSA9PT0gJ3N0cmluZycpIHtcbiAgICBtZXNzYWdlID0gbmV3IEJ1ZmZlcihtZXNzYWdlLCAndXRmOCcpXG4gIH1cblxuICB2YXIgbSA9IGJ5dGVzVG9Xb3JkcyhtZXNzYWdlKVxuXG4gIHZhciBuQml0c0xlZnQgPSBtZXNzYWdlLmxlbmd0aCAqIDhcbiAgdmFyIG5CaXRzVG90YWwgPSBtZXNzYWdlLmxlbmd0aCAqIDhcblxuICAvLyBBZGQgcGFkZGluZ1xuICBtW25CaXRzTGVmdCA+Pj4gNV0gfD0gMHg4MCA8PCAoMjQgLSBuQml0c0xlZnQgJSAzMilcbiAgbVsoKChuQml0c0xlZnQgKyA2NCkgPj4+IDkpIDw8IDQpICsgMTRdID0gKFxuICAgICgoKG5CaXRzVG90YWwgPDwgOCkgfCAobkJpdHNUb3RhbCA+Pj4gMjQpKSAmIDB4MDBmZjAwZmYpIHxcbiAgICAoKChuQml0c1RvdGFsIDw8IDI0KSB8IChuQml0c1RvdGFsID4+PiA4KSkgJiAweGZmMDBmZjAwKVxuICApXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBtLmxlbmd0aDsgaSArPSAxNikge1xuICAgIHByb2Nlc3NCbG9jayhILCBtLCBpKVxuICB9XG5cbiAgLy8gc3dhcCBlbmRpYW5cbiAgZm9yIChpID0gMDsgaSA8IDU7IGkrKykge1xuICAgIC8vIHNob3J0Y3V0XG4gICAgdmFyIEhfaSA9IEhbaV1cblxuICAgIC8vIFN3YXBcbiAgICBIW2ldID0gKCgoSF9pIDw8IDgpIHwgKEhfaSA+Pj4gMjQpKSAmIDB4MDBmZjAwZmYpIHxcbiAgICAgICgoKEhfaSA8PCAyNCkgfCAoSF9pID4+PiA4KSkgJiAweGZmMDBmZjAwKVxuICB9XG5cbiAgdmFyIGRpZ2VzdGJ5dGVzID0gd29yZHNUb0J5dGVzKEgpXG4gIHJldHVybiBuZXcgQnVmZmVyKGRpZ2VzdGJ5dGVzKVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHJpcGVtZDE2MFxuIiwiLy8gcHJvdG90eXBlIGNsYXNzIGZvciBoYXNoIGZ1bmN0aW9uc1xuZnVuY3Rpb24gSGFzaCAoYmxvY2tTaXplLCBmaW5hbFNpemUpIHtcbiAgdGhpcy5fYmxvY2sgPSBuZXcgQnVmZmVyKGJsb2NrU2l6ZSlcbiAgdGhpcy5fZmluYWxTaXplID0gZmluYWxTaXplXG4gIHRoaXMuX2Jsb2NrU2l6ZSA9IGJsb2NrU2l6ZVxuICB0aGlzLl9sZW4gPSAwXG4gIHRoaXMuX3MgPSAwXG59XG5cbkhhc2gucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uIChkYXRhLCBlbmMpIHtcbiAgaWYgKHR5cGVvZiBkYXRhID09PSAnc3RyaW5nJykge1xuICAgIGVuYyA9IGVuYyB8fCAndXRmOCdcbiAgICBkYXRhID0gbmV3IEJ1ZmZlcihkYXRhLCBlbmMpXG4gIH1cblxuICB2YXIgbCA9IHRoaXMuX2xlbiArPSBkYXRhLmxlbmd0aFxuICB2YXIgcyA9IHRoaXMuX3MgfHwgMFxuICB2YXIgZiA9IDBcbiAgdmFyIGJ1ZmZlciA9IHRoaXMuX2Jsb2NrXG5cbiAgd2hpbGUgKHMgPCBsKSB7XG4gICAgdmFyIHQgPSBNYXRoLm1pbihkYXRhLmxlbmd0aCwgZiArIHRoaXMuX2Jsb2NrU2l6ZSAtIChzICUgdGhpcy5fYmxvY2tTaXplKSlcbiAgICB2YXIgY2ggPSAodCAtIGYpXG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoOyBpKyspIHtcbiAgICAgIGJ1ZmZlclsocyAlIHRoaXMuX2Jsb2NrU2l6ZSkgKyBpXSA9IGRhdGFbaSArIGZdXG4gICAgfVxuXG4gICAgcyArPSBjaFxuICAgIGYgKz0gY2hcblxuICAgIGlmICgocyAlIHRoaXMuX2Jsb2NrU2l6ZSkgPT09IDApIHtcbiAgICAgIHRoaXMuX3VwZGF0ZShidWZmZXIpXG4gICAgfVxuICB9XG4gIHRoaXMuX3MgPSBzXG5cbiAgcmV0dXJuIHRoaXNcbn1cblxuSGFzaC5wcm90b3R5cGUuZGlnZXN0ID0gZnVuY3Rpb24gKGVuYykge1xuICAvLyBTdXBwb3NlIHRoZSBsZW5ndGggb2YgdGhlIG1lc3NhZ2UgTSwgaW4gYml0cywgaXMgbFxuICB2YXIgbCA9IHRoaXMuX2xlbiAqIDhcblxuICAvLyBBcHBlbmQgdGhlIGJpdCAxIHRvIHRoZSBlbmQgb2YgdGhlIG1lc3NhZ2VcbiAgdGhpcy5fYmxvY2tbdGhpcy5fbGVuICUgdGhpcy5fYmxvY2tTaXplXSA9IDB4ODBcblxuICAvLyBhbmQgdGhlbiBrIHplcm8gYml0cywgd2hlcmUgayBpcyB0aGUgc21hbGxlc3Qgbm9uLW5lZ2F0aXZlIHNvbHV0aW9uIHRvIHRoZSBlcXVhdGlvbiAobCArIDEgKyBrKSA9PT0gZmluYWxTaXplIG1vZCBibG9ja1NpemVcbiAgdGhpcy5fYmxvY2suZmlsbCgwLCB0aGlzLl9sZW4gJSB0aGlzLl9ibG9ja1NpemUgKyAxKVxuXG4gIGlmIChsICUgKHRoaXMuX2Jsb2NrU2l6ZSAqIDgpID49IHRoaXMuX2ZpbmFsU2l6ZSAqIDgpIHtcbiAgICB0aGlzLl91cGRhdGUodGhpcy5fYmxvY2spXG4gICAgdGhpcy5fYmxvY2suZmlsbCgwKVxuICB9XG5cbiAgLy8gdG8gdGhpcyBhcHBlbmQgdGhlIGJsb2NrIHdoaWNoIGlzIGVxdWFsIHRvIHRoZSBudW1iZXIgbCB3cml0dGVuIGluIGJpbmFyeVxuICAvLyBUT0RPOiBoYW5kbGUgY2FzZSB3aGVyZSBsIGlzID4gTWF0aC5wb3coMiwgMjkpXG4gIHRoaXMuX2Jsb2NrLndyaXRlSW50MzJCRShsLCB0aGlzLl9ibG9ja1NpemUgLSA0KVxuXG4gIHZhciBoYXNoID0gdGhpcy5fdXBkYXRlKHRoaXMuX2Jsb2NrKSB8fCB0aGlzLl9oYXNoKClcblxuICByZXR1cm4gZW5jID8gaGFzaC50b1N0cmluZyhlbmMpIDogaGFzaFxufVxuXG5IYXNoLnByb3RvdHlwZS5fdXBkYXRlID0gZnVuY3Rpb24gKCkge1xuICB0aHJvdyBuZXcgRXJyb3IoJ191cGRhdGUgbXVzdCBiZSBpbXBsZW1lbnRlZCBieSBzdWJjbGFzcycpXG59XG5cbm1vZHVsZS5leHBvcnRzID0gSGFzaFxuIiwidmFyIGV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIFNIQSAoYWxnb3JpdGhtKSB7XG4gIGFsZ29yaXRobSA9IGFsZ29yaXRobS50b0xvd2VyQ2FzZSgpXG5cbiAgdmFyIEFsZ29yaXRobSA9IGV4cG9ydHNbYWxnb3JpdGhtXVxuICBpZiAoIUFsZ29yaXRobSkgdGhyb3cgbmV3IEVycm9yKGFsZ29yaXRobSArICcgaXMgbm90IHN1cHBvcnRlZCAod2UgYWNjZXB0IHB1bGwgcmVxdWVzdHMpJylcblxuICByZXR1cm4gbmV3IEFsZ29yaXRobSgpXG59XG5cbmV4cG9ydHMuc2hhID0gcmVxdWlyZSgnLi9zaGEnKVxuZXhwb3J0cy5zaGExID0gcmVxdWlyZSgnLi9zaGExJylcbmV4cG9ydHMuc2hhMjI0ID0gcmVxdWlyZSgnLi9zaGEyMjQnKVxuZXhwb3J0cy5zaGEyNTYgPSByZXF1aXJlKCcuL3NoYTI1NicpXG5leHBvcnRzLnNoYTM4NCA9IHJlcXVpcmUoJy4vc2hhMzg0JylcbmV4cG9ydHMuc2hhNTEyID0gcmVxdWlyZSgnLi9zaGE1MTInKVxuIiwiLypcbiAqIEEgSmF2YVNjcmlwdCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgU2VjdXJlIEhhc2ggQWxnb3JpdGhtLCBTSEEtMCwgYXMgZGVmaW5lZFxuICogaW4gRklQUyBQVUIgMTgwLTFcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgZGVyaXZlZCBmcm9tIHNoYTEuanMgb2YgdGhlIHNhbWUgcmVwb3NpdG9yeS5cbiAqIFRoZSBkaWZmZXJlbmNlIGJldHdlZW4gU0hBLTAgYW5kIFNIQS0xIGlzIGp1c3QgYSBiaXR3aXNlIHJvdGF0ZSBsZWZ0XG4gKiBvcGVyYXRpb24gd2FzIGFkZGVkLlxuICovXG5cbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJylcbnZhciBIYXNoID0gcmVxdWlyZSgnLi9oYXNoJylcblxudmFyIEsgPSBbXG4gIDB4NWE4Mjc5OTksIDB4NmVkOWViYTEsIDB4OGYxYmJjZGMgfCAwLCAweGNhNjJjMWQ2IHwgMFxuXVxuXG52YXIgVyA9IG5ldyBBcnJheSg4MClcblxuZnVuY3Rpb24gU2hhICgpIHtcbiAgdGhpcy5pbml0KClcbiAgdGhpcy5fdyA9IFdcblxuICBIYXNoLmNhbGwodGhpcywgNjQsIDU2KVxufVxuXG5pbmhlcml0cyhTaGEsIEhhc2gpXG5cblNoYS5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5fYSA9IDB4Njc0NTIzMDFcbiAgdGhpcy5fYiA9IDB4ZWZjZGFiODlcbiAgdGhpcy5fYyA9IDB4OThiYWRjZmVcbiAgdGhpcy5fZCA9IDB4MTAzMjU0NzZcbiAgdGhpcy5fZSA9IDB4YzNkMmUxZjBcblxuICByZXR1cm4gdGhpc1xufVxuXG5mdW5jdGlvbiByb3RsNSAobnVtKSB7XG4gIHJldHVybiAobnVtIDw8IDUpIHwgKG51bSA+Pj4gMjcpXG59XG5cbmZ1bmN0aW9uIHJvdGwzMCAobnVtKSB7XG4gIHJldHVybiAobnVtIDw8IDMwKSB8IChudW0gPj4+IDIpXG59XG5cbmZ1bmN0aW9uIGZ0IChzLCBiLCBjLCBkKSB7XG4gIGlmIChzID09PSAwKSByZXR1cm4gKGIgJiBjKSB8ICgofmIpICYgZClcbiAgaWYgKHMgPT09IDIpIHJldHVybiAoYiAmIGMpIHwgKGIgJiBkKSB8IChjICYgZClcbiAgcmV0dXJuIGIgXiBjIF4gZFxufVxuXG5TaGEucHJvdG90eXBlLl91cGRhdGUgPSBmdW5jdGlvbiAoTSkge1xuICB2YXIgVyA9IHRoaXMuX3dcblxuICB2YXIgYSA9IHRoaXMuX2EgfCAwXG4gIHZhciBiID0gdGhpcy5fYiB8IDBcbiAgdmFyIGMgPSB0aGlzLl9jIHwgMFxuICB2YXIgZCA9IHRoaXMuX2QgfCAwXG4gIHZhciBlID0gdGhpcy5fZSB8IDBcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IDE2OyArK2kpIFdbaV0gPSBNLnJlYWRJbnQzMkJFKGkgKiA0KVxuICBmb3IgKDsgaSA8IDgwOyArK2kpIFdbaV0gPSBXW2kgLSAzXSBeIFdbaSAtIDhdIF4gV1tpIC0gMTRdIF4gV1tpIC0gMTZdXG5cbiAgZm9yICh2YXIgaiA9IDA7IGogPCA4MDsgKytqKSB7XG4gICAgdmFyIHMgPSB+fihqIC8gMjApXG4gICAgdmFyIHQgPSAocm90bDUoYSkgKyBmdChzLCBiLCBjLCBkKSArIGUgKyBXW2pdICsgS1tzXSkgfCAwXG5cbiAgICBlID0gZFxuICAgIGQgPSBjXG4gICAgYyA9IHJvdGwzMChiKVxuICAgIGIgPSBhXG4gICAgYSA9IHRcbiAgfVxuXG4gIHRoaXMuX2EgPSAoYSArIHRoaXMuX2EpIHwgMFxuICB0aGlzLl9iID0gKGIgKyB0aGlzLl9iKSB8IDBcbiAgdGhpcy5fYyA9IChjICsgdGhpcy5fYykgfCAwXG4gIHRoaXMuX2QgPSAoZCArIHRoaXMuX2QpIHwgMFxuICB0aGlzLl9lID0gKGUgKyB0aGlzLl9lKSB8IDBcbn1cblxuU2hhLnByb3RvdHlwZS5faGFzaCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIEggPSBuZXcgQnVmZmVyKDIwKVxuXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2EgfCAwLCAwKVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9iIHwgMCwgNClcbiAgSC53cml0ZUludDMyQkUodGhpcy5fYyB8IDAsIDgpXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2QgfCAwLCAxMilcbiAgSC53cml0ZUludDMyQkUodGhpcy5fZSB8IDAsIDE2KVxuXG4gIHJldHVybiBIXG59XG5cbm1vZHVsZS5leHBvcnRzID0gU2hhXG4iLCIvKlxuICogQSBKYXZhU2NyaXB0IGltcGxlbWVudGF0aW9uIG9mIHRoZSBTZWN1cmUgSGFzaCBBbGdvcml0aG0sIFNIQS0xLCBhcyBkZWZpbmVkXG4gKiBpbiBGSVBTIFBVQiAxODAtMVxuICogVmVyc2lvbiAyLjFhIENvcHlyaWdodCBQYXVsIEpvaG5zdG9uIDIwMDAgLSAyMDAyLlxuICogT3RoZXIgY29udHJpYnV0b3JzOiBHcmVnIEhvbHQsIEFuZHJldyBLZXBlcnQsIFlkbmFyLCBMb3N0aW5ldFxuICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEJTRCBMaWNlbnNlXG4gKiBTZWUgaHR0cDovL3BhamhvbWUub3JnLnVrL2NyeXB0L21kNSBmb3IgZGV0YWlscy5cbiAqL1xuXG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpXG52YXIgSGFzaCA9IHJlcXVpcmUoJy4vaGFzaCcpXG5cbnZhciBLID0gW1xuICAweDVhODI3OTk5LCAweDZlZDllYmExLCAweDhmMWJiY2RjIHwgMCwgMHhjYTYyYzFkNiB8IDBcbl1cblxudmFyIFcgPSBuZXcgQXJyYXkoODApXG5cbmZ1bmN0aW9uIFNoYTEgKCkge1xuICB0aGlzLmluaXQoKVxuICB0aGlzLl93ID0gV1xuXG4gIEhhc2guY2FsbCh0aGlzLCA2NCwgNTYpXG59XG5cbmluaGVyaXRzKFNoYTEsIEhhc2gpXG5cblNoYTEucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuX2EgPSAweDY3NDUyMzAxXG4gIHRoaXMuX2IgPSAweGVmY2RhYjg5XG4gIHRoaXMuX2MgPSAweDk4YmFkY2ZlXG4gIHRoaXMuX2QgPSAweDEwMzI1NDc2XG4gIHRoaXMuX2UgPSAweGMzZDJlMWYwXG5cbiAgcmV0dXJuIHRoaXNcbn1cblxuZnVuY3Rpb24gcm90bDEgKG51bSkge1xuICByZXR1cm4gKG51bSA8PCAxKSB8IChudW0gPj4+IDMxKVxufVxuXG5mdW5jdGlvbiByb3RsNSAobnVtKSB7XG4gIHJldHVybiAobnVtIDw8IDUpIHwgKG51bSA+Pj4gMjcpXG59XG5cbmZ1bmN0aW9uIHJvdGwzMCAobnVtKSB7XG4gIHJldHVybiAobnVtIDw8IDMwKSB8IChudW0gPj4+IDIpXG59XG5cbmZ1bmN0aW9uIGZ0IChzLCBiLCBjLCBkKSB7XG4gIGlmIChzID09PSAwKSByZXR1cm4gKGIgJiBjKSB8ICgofmIpICYgZClcbiAgaWYgKHMgPT09IDIpIHJldHVybiAoYiAmIGMpIHwgKGIgJiBkKSB8IChjICYgZClcbiAgcmV0dXJuIGIgXiBjIF4gZFxufVxuXG5TaGExLnByb3RvdHlwZS5fdXBkYXRlID0gZnVuY3Rpb24gKE0pIHtcbiAgdmFyIFcgPSB0aGlzLl93XG5cbiAgdmFyIGEgPSB0aGlzLl9hIHwgMFxuICB2YXIgYiA9IHRoaXMuX2IgfCAwXG4gIHZhciBjID0gdGhpcy5fYyB8IDBcbiAgdmFyIGQgPSB0aGlzLl9kIHwgMFxuICB2YXIgZSA9IHRoaXMuX2UgfCAwXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCAxNjsgKytpKSBXW2ldID0gTS5yZWFkSW50MzJCRShpICogNClcbiAgZm9yICg7IGkgPCA4MDsgKytpKSBXW2ldID0gcm90bDEoV1tpIC0gM10gXiBXW2kgLSA4XSBeIFdbaSAtIDE0XSBeIFdbaSAtIDE2XSlcblxuICBmb3IgKHZhciBqID0gMDsgaiA8IDgwOyArK2opIHtcbiAgICB2YXIgcyA9IH5+KGogLyAyMClcbiAgICB2YXIgdCA9IChyb3RsNShhKSArIGZ0KHMsIGIsIGMsIGQpICsgZSArIFdbal0gKyBLW3NdKSB8IDBcblxuICAgIGUgPSBkXG4gICAgZCA9IGNcbiAgICBjID0gcm90bDMwKGIpXG4gICAgYiA9IGFcbiAgICBhID0gdFxuICB9XG5cbiAgdGhpcy5fYSA9IChhICsgdGhpcy5fYSkgfCAwXG4gIHRoaXMuX2IgPSAoYiArIHRoaXMuX2IpIHwgMFxuICB0aGlzLl9jID0gKGMgKyB0aGlzLl9jKSB8IDBcbiAgdGhpcy5fZCA9IChkICsgdGhpcy5fZCkgfCAwXG4gIHRoaXMuX2UgPSAoZSArIHRoaXMuX2UpIHwgMFxufVxuXG5TaGExLnByb3RvdHlwZS5faGFzaCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIEggPSBuZXcgQnVmZmVyKDIwKVxuXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2EgfCAwLCAwKVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9iIHwgMCwgNClcbiAgSC53cml0ZUludDMyQkUodGhpcy5fYyB8IDAsIDgpXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2QgfCAwLCAxMilcbiAgSC53cml0ZUludDMyQkUodGhpcy5fZSB8IDAsIDE2KVxuXG4gIHJldHVybiBIXG59XG5cbm1vZHVsZS5leHBvcnRzID0gU2hhMVxuIiwiLyoqXG4gKiBBIEphdmFTY3JpcHQgaW1wbGVtZW50YXRpb24gb2YgdGhlIFNlY3VyZSBIYXNoIEFsZ29yaXRobSwgU0hBLTI1NiwgYXMgZGVmaW5lZFxuICogaW4gRklQUyAxODAtMlxuICogVmVyc2lvbiAyLjItYmV0YSBDb3B5cmlnaHQgQW5nZWwgTWFyaW4sIFBhdWwgSm9obnN0b24gMjAwMCAtIDIwMDkuXG4gKiBPdGhlciBjb250cmlidXRvcnM6IEdyZWcgSG9sdCwgQW5kcmV3IEtlcGVydCwgWWRuYXIsIExvc3RpbmV0XG4gKlxuICovXG5cbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJylcbnZhciBTaGEyNTYgPSByZXF1aXJlKCcuL3NoYTI1NicpXG52YXIgSGFzaCA9IHJlcXVpcmUoJy4vaGFzaCcpXG5cbnZhciBXID0gbmV3IEFycmF5KDY0KVxuXG5mdW5jdGlvbiBTaGEyMjQgKCkge1xuICB0aGlzLmluaXQoKVxuXG4gIHRoaXMuX3cgPSBXIC8vIG5ldyBBcnJheSg2NClcblxuICBIYXNoLmNhbGwodGhpcywgNjQsIDU2KVxufVxuXG5pbmhlcml0cyhTaGEyMjQsIFNoYTI1NilcblxuU2hhMjI0LnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLl9hID0gMHhjMTA1OWVkOFxuICB0aGlzLl9iID0gMHgzNjdjZDUwN1xuICB0aGlzLl9jID0gMHgzMDcwZGQxN1xuICB0aGlzLl9kID0gMHhmNzBlNTkzOVxuICB0aGlzLl9lID0gMHhmZmMwMGIzMVxuICB0aGlzLl9mID0gMHg2ODU4MTUxMVxuICB0aGlzLl9nID0gMHg2NGY5OGZhN1xuICB0aGlzLl9oID0gMHhiZWZhNGZhNFxuXG4gIHJldHVybiB0aGlzXG59XG5cblNoYTIyNC5wcm90b3R5cGUuX2hhc2ggPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBIID0gbmV3IEJ1ZmZlcigyOClcblxuICBILndyaXRlSW50MzJCRSh0aGlzLl9hLCAwKVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9iLCA0KVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9jLCA4KVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9kLCAxMilcbiAgSC53cml0ZUludDMyQkUodGhpcy5fZSwgMTYpXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2YsIDIwKVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9nLCAyNClcblxuICByZXR1cm4gSFxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFNoYTIyNFxuIiwiLyoqXG4gKiBBIEphdmFTY3JpcHQgaW1wbGVtZW50YXRpb24gb2YgdGhlIFNlY3VyZSBIYXNoIEFsZ29yaXRobSwgU0hBLTI1NiwgYXMgZGVmaW5lZFxuICogaW4gRklQUyAxODAtMlxuICogVmVyc2lvbiAyLjItYmV0YSBDb3B5cmlnaHQgQW5nZWwgTWFyaW4sIFBhdWwgSm9obnN0b24gMjAwMCAtIDIwMDkuXG4gKiBPdGhlciBjb250cmlidXRvcnM6IEdyZWcgSG9sdCwgQW5kcmV3IEtlcGVydCwgWWRuYXIsIExvc3RpbmV0XG4gKlxuICovXG5cbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJylcbnZhciBIYXNoID0gcmVxdWlyZSgnLi9oYXNoJylcblxudmFyIEsgPSBbXG4gIDB4NDI4QTJGOTgsIDB4NzEzNzQ0OTEsIDB4QjVDMEZCQ0YsIDB4RTlCNURCQTUsXG4gIDB4Mzk1NkMyNUIsIDB4NTlGMTExRjEsIDB4OTIzRjgyQTQsIDB4QUIxQzVFRDUsXG4gIDB4RDgwN0FBOTgsIDB4MTI4MzVCMDEsIDB4MjQzMTg1QkUsIDB4NTUwQzdEQzMsXG4gIDB4NzJCRTVENzQsIDB4ODBERUIxRkUsIDB4OUJEQzA2QTcsIDB4QzE5QkYxNzQsXG4gIDB4RTQ5QjY5QzEsIDB4RUZCRTQ3ODYsIDB4MEZDMTlEQzYsIDB4MjQwQ0ExQ0MsXG4gIDB4MkRFOTJDNkYsIDB4NEE3NDg0QUEsIDB4NUNCMEE5REMsIDB4NzZGOTg4REEsXG4gIDB4OTgzRTUxNTIsIDB4QTgzMUM2NkQsIDB4QjAwMzI3QzgsIDB4QkY1OTdGQzcsXG4gIDB4QzZFMDBCRjMsIDB4RDVBNzkxNDcsIDB4MDZDQTYzNTEsIDB4MTQyOTI5NjcsXG4gIDB4MjdCNzBBODUsIDB4MkUxQjIxMzgsIDB4NEQyQzZERkMsIDB4NTMzODBEMTMsXG4gIDB4NjUwQTczNTQsIDB4NzY2QTBBQkIsIDB4ODFDMkM5MkUsIDB4OTI3MjJDODUsXG4gIDB4QTJCRkU4QTEsIDB4QTgxQTY2NEIsIDB4QzI0QjhCNzAsIDB4Qzc2QzUxQTMsXG4gIDB4RDE5MkU4MTksIDB4RDY5OTA2MjQsIDB4RjQwRTM1ODUsIDB4MTA2QUEwNzAsXG4gIDB4MTlBNEMxMTYsIDB4MUUzNzZDMDgsIDB4Mjc0ODc3NEMsIDB4MzRCMEJDQjUsXG4gIDB4MzkxQzBDQjMsIDB4NEVEOEFBNEEsIDB4NUI5Q0NBNEYsIDB4NjgyRTZGRjMsXG4gIDB4NzQ4RjgyRUUsIDB4NzhBNTYzNkYsIDB4ODRDODc4MTQsIDB4OENDNzAyMDgsXG4gIDB4OTBCRUZGRkEsIDB4QTQ1MDZDRUIsIDB4QkVGOUEzRjcsIDB4QzY3MTc4RjJcbl1cblxudmFyIFcgPSBuZXcgQXJyYXkoNjQpXG5cbmZ1bmN0aW9uIFNoYTI1NiAoKSB7XG4gIHRoaXMuaW5pdCgpXG5cbiAgdGhpcy5fdyA9IFcgLy8gbmV3IEFycmF5KDY0KVxuXG4gIEhhc2guY2FsbCh0aGlzLCA2NCwgNTYpXG59XG5cbmluaGVyaXRzKFNoYTI1NiwgSGFzaClcblxuU2hhMjU2LnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLl9hID0gMHg2YTA5ZTY2N1xuICB0aGlzLl9iID0gMHhiYjY3YWU4NVxuICB0aGlzLl9jID0gMHgzYzZlZjM3MlxuICB0aGlzLl9kID0gMHhhNTRmZjUzYVxuICB0aGlzLl9lID0gMHg1MTBlNTI3ZlxuICB0aGlzLl9mID0gMHg5YjA1Njg4Y1xuICB0aGlzLl9nID0gMHgxZjgzZDlhYlxuICB0aGlzLl9oID0gMHg1YmUwY2QxOVxuXG4gIHJldHVybiB0aGlzXG59XG5cbmZ1bmN0aW9uIGNoICh4LCB5LCB6KSB7XG4gIHJldHVybiB6IF4gKHggJiAoeSBeIHopKVxufVxuXG5mdW5jdGlvbiBtYWogKHgsIHksIHopIHtcbiAgcmV0dXJuICh4ICYgeSkgfCAoeiAmICh4IHwgeSkpXG59XG5cbmZ1bmN0aW9uIHNpZ21hMCAoeCkge1xuICByZXR1cm4gKHggPj4+IDIgfCB4IDw8IDMwKSBeICh4ID4+PiAxMyB8IHggPDwgMTkpIF4gKHggPj4+IDIyIHwgeCA8PCAxMClcbn1cblxuZnVuY3Rpb24gc2lnbWExICh4KSB7XG4gIHJldHVybiAoeCA+Pj4gNiB8IHggPDwgMjYpIF4gKHggPj4+IDExIHwgeCA8PCAyMSkgXiAoeCA+Pj4gMjUgfCB4IDw8IDcpXG59XG5cbmZ1bmN0aW9uIGdhbW1hMCAoeCkge1xuICByZXR1cm4gKHggPj4+IDcgfCB4IDw8IDI1KSBeICh4ID4+PiAxOCB8IHggPDwgMTQpIF4gKHggPj4+IDMpXG59XG5cbmZ1bmN0aW9uIGdhbW1hMSAoeCkge1xuICByZXR1cm4gKHggPj4+IDE3IHwgeCA8PCAxNSkgXiAoeCA+Pj4gMTkgfCB4IDw8IDEzKSBeICh4ID4+PiAxMClcbn1cblxuU2hhMjU2LnByb3RvdHlwZS5fdXBkYXRlID0gZnVuY3Rpb24gKE0pIHtcbiAgdmFyIFcgPSB0aGlzLl93XG5cbiAgdmFyIGEgPSB0aGlzLl9hIHwgMFxuICB2YXIgYiA9IHRoaXMuX2IgfCAwXG4gIHZhciBjID0gdGhpcy5fYyB8IDBcbiAgdmFyIGQgPSB0aGlzLl9kIHwgMFxuICB2YXIgZSA9IHRoaXMuX2UgfCAwXG4gIHZhciBmID0gdGhpcy5fZiB8IDBcbiAgdmFyIGcgPSB0aGlzLl9nIHwgMFxuICB2YXIgaCA9IHRoaXMuX2ggfCAwXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCAxNjsgKytpKSBXW2ldID0gTS5yZWFkSW50MzJCRShpICogNClcbiAgZm9yICg7IGkgPCA2NDsgKytpKSBXW2ldID0gKGdhbW1hMShXW2kgLSAyXSkgKyBXW2kgLSA3XSArIGdhbW1hMChXW2kgLSAxNV0pICsgV1tpIC0gMTZdKSB8IDBcblxuICBmb3IgKHZhciBqID0gMDsgaiA8IDY0OyArK2opIHtcbiAgICB2YXIgVDEgPSAoaCArIHNpZ21hMShlKSArIGNoKGUsIGYsIGcpICsgS1tqXSArIFdbal0pIHwgMFxuICAgIHZhciBUMiA9IChzaWdtYTAoYSkgKyBtYWooYSwgYiwgYykpIHwgMFxuXG4gICAgaCA9IGdcbiAgICBnID0gZlxuICAgIGYgPSBlXG4gICAgZSA9IChkICsgVDEpIHwgMFxuICAgIGQgPSBjXG4gICAgYyA9IGJcbiAgICBiID0gYVxuICAgIGEgPSAoVDEgKyBUMikgfCAwXG4gIH1cblxuICB0aGlzLl9hID0gKGEgKyB0aGlzLl9hKSB8IDBcbiAgdGhpcy5fYiA9IChiICsgdGhpcy5fYikgfCAwXG4gIHRoaXMuX2MgPSAoYyArIHRoaXMuX2MpIHwgMFxuICB0aGlzLl9kID0gKGQgKyB0aGlzLl9kKSB8IDBcbiAgdGhpcy5fZSA9IChlICsgdGhpcy5fZSkgfCAwXG4gIHRoaXMuX2YgPSAoZiArIHRoaXMuX2YpIHwgMFxuICB0aGlzLl9nID0gKGcgKyB0aGlzLl9nKSB8IDBcbiAgdGhpcy5faCA9IChoICsgdGhpcy5faCkgfCAwXG59XG5cblNoYTI1Ni5wcm90b3R5cGUuX2hhc2ggPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBIID0gbmV3IEJ1ZmZlcigzMilcblxuICBILndyaXRlSW50MzJCRSh0aGlzLl9hLCAwKVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9iLCA0KVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9jLCA4KVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9kLCAxMilcbiAgSC53cml0ZUludDMyQkUodGhpcy5fZSwgMTYpXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2YsIDIwKVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9nLCAyNClcbiAgSC53cml0ZUludDMyQkUodGhpcy5faCwgMjgpXG5cbiAgcmV0dXJuIEhcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBTaGEyNTZcbiIsInZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJylcbnZhciBTSEE1MTIgPSByZXF1aXJlKCcuL3NoYTUxMicpXG52YXIgSGFzaCA9IHJlcXVpcmUoJy4vaGFzaCcpXG5cbnZhciBXID0gbmV3IEFycmF5KDE2MClcblxuZnVuY3Rpb24gU2hhMzg0ICgpIHtcbiAgdGhpcy5pbml0KClcbiAgdGhpcy5fdyA9IFdcblxuICBIYXNoLmNhbGwodGhpcywgMTI4LCAxMTIpXG59XG5cbmluaGVyaXRzKFNoYTM4NCwgU0hBNTEyKVxuXG5TaGEzODQucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuX2FoID0gMHhjYmJiOWQ1ZFxuICB0aGlzLl9iaCA9IDB4NjI5YTI5MmFcbiAgdGhpcy5fY2ggPSAweDkxNTkwMTVhXG4gIHRoaXMuX2RoID0gMHgxNTJmZWNkOFxuICB0aGlzLl9laCA9IDB4NjczMzI2NjdcbiAgdGhpcy5fZmggPSAweDhlYjQ0YTg3XG4gIHRoaXMuX2doID0gMHhkYjBjMmUwZFxuICB0aGlzLl9oaCA9IDB4NDdiNTQ4MWRcblxuICB0aGlzLl9hbCA9IDB4YzEwNTllZDhcbiAgdGhpcy5fYmwgPSAweDM2N2NkNTA3XG4gIHRoaXMuX2NsID0gMHgzMDcwZGQxN1xuICB0aGlzLl9kbCA9IDB4ZjcwZTU5MzlcbiAgdGhpcy5fZWwgPSAweGZmYzAwYjMxXG4gIHRoaXMuX2ZsID0gMHg2ODU4MTUxMVxuICB0aGlzLl9nbCA9IDB4NjRmOThmYTdcbiAgdGhpcy5faGwgPSAweGJlZmE0ZmE0XG5cbiAgcmV0dXJuIHRoaXNcbn1cblxuU2hhMzg0LnByb3RvdHlwZS5faGFzaCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIEggPSBuZXcgQnVmZmVyKDQ4KVxuXG4gIGZ1bmN0aW9uIHdyaXRlSW50NjRCRSAoaCwgbCwgb2Zmc2V0KSB7XG4gICAgSC53cml0ZUludDMyQkUoaCwgb2Zmc2V0KVxuICAgIEgud3JpdGVJbnQzMkJFKGwsIG9mZnNldCArIDQpXG4gIH1cblxuICB3cml0ZUludDY0QkUodGhpcy5fYWgsIHRoaXMuX2FsLCAwKVxuICB3cml0ZUludDY0QkUodGhpcy5fYmgsIHRoaXMuX2JsLCA4KVxuICB3cml0ZUludDY0QkUodGhpcy5fY2gsIHRoaXMuX2NsLCAxNilcbiAgd3JpdGVJbnQ2NEJFKHRoaXMuX2RoLCB0aGlzLl9kbCwgMjQpXG4gIHdyaXRlSW50NjRCRSh0aGlzLl9laCwgdGhpcy5fZWwsIDMyKVxuICB3cml0ZUludDY0QkUodGhpcy5fZmgsIHRoaXMuX2ZsLCA0MClcblxuICByZXR1cm4gSFxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFNoYTM4NFxuIiwidmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKVxudmFyIEhhc2ggPSByZXF1aXJlKCcuL2hhc2gnKVxuXG52YXIgSyA9IFtcbiAgMHg0MjhhMmY5OCwgMHhkNzI4YWUyMiwgMHg3MTM3NDQ5MSwgMHgyM2VmNjVjZCxcbiAgMHhiNWMwZmJjZiwgMHhlYzRkM2IyZiwgMHhlOWI1ZGJhNSwgMHg4MTg5ZGJiYyxcbiAgMHgzOTU2YzI1YiwgMHhmMzQ4YjUzOCwgMHg1OWYxMTFmMSwgMHhiNjA1ZDAxOSxcbiAgMHg5MjNmODJhNCwgMHhhZjE5NGY5YiwgMHhhYjFjNWVkNSwgMHhkYTZkODExOCxcbiAgMHhkODA3YWE5OCwgMHhhMzAzMDI0MiwgMHgxMjgzNWIwMSwgMHg0NTcwNmZiZSxcbiAgMHgyNDMxODViZSwgMHg0ZWU0YjI4YywgMHg1NTBjN2RjMywgMHhkNWZmYjRlMixcbiAgMHg3MmJlNWQ3NCwgMHhmMjdiODk2ZiwgMHg4MGRlYjFmZSwgMHgzYjE2OTZiMSxcbiAgMHg5YmRjMDZhNywgMHgyNWM3MTIzNSwgMHhjMTliZjE3NCwgMHhjZjY5MjY5NCxcbiAgMHhlNDliNjljMSwgMHg5ZWYxNGFkMiwgMHhlZmJlNDc4NiwgMHgzODRmMjVlMyxcbiAgMHgwZmMxOWRjNiwgMHg4YjhjZDViNSwgMHgyNDBjYTFjYywgMHg3N2FjOWM2NSxcbiAgMHgyZGU5MmM2ZiwgMHg1OTJiMDI3NSwgMHg0YTc0ODRhYSwgMHg2ZWE2ZTQ4MyxcbiAgMHg1Y2IwYTlkYywgMHhiZDQxZmJkNCwgMHg3NmY5ODhkYSwgMHg4MzExNTNiNSxcbiAgMHg5ODNlNTE1MiwgMHhlZTY2ZGZhYiwgMHhhODMxYzY2ZCwgMHgyZGI0MzIxMCxcbiAgMHhiMDAzMjdjOCwgMHg5OGZiMjEzZiwgMHhiZjU5N2ZjNywgMHhiZWVmMGVlNCxcbiAgMHhjNmUwMGJmMywgMHgzZGE4OGZjMiwgMHhkNWE3OTE0NywgMHg5MzBhYTcyNSxcbiAgMHgwNmNhNjM1MSwgMHhlMDAzODI2ZiwgMHgxNDI5Mjk2NywgMHgwYTBlNmU3MCxcbiAgMHgyN2I3MGE4NSwgMHg0NmQyMmZmYywgMHgyZTFiMjEzOCwgMHg1YzI2YzkyNixcbiAgMHg0ZDJjNmRmYywgMHg1YWM0MmFlZCwgMHg1MzM4MGQxMywgMHg5ZDk1YjNkZixcbiAgMHg2NTBhNzM1NCwgMHg4YmFmNjNkZSwgMHg3NjZhMGFiYiwgMHgzYzc3YjJhOCxcbiAgMHg4MWMyYzkyZSwgMHg0N2VkYWVlNiwgMHg5MjcyMmM4NSwgMHgxNDgyMzUzYixcbiAgMHhhMmJmZThhMSwgMHg0Y2YxMDM2NCwgMHhhODFhNjY0YiwgMHhiYzQyMzAwMSxcbiAgMHhjMjRiOGI3MCwgMHhkMGY4OTc5MSwgMHhjNzZjNTFhMywgMHgwNjU0YmUzMCxcbiAgMHhkMTkyZTgxOSwgMHhkNmVmNTIxOCwgMHhkNjk5MDYyNCwgMHg1NTY1YTkxMCxcbiAgMHhmNDBlMzU4NSwgMHg1NzcxMjAyYSwgMHgxMDZhYTA3MCwgMHgzMmJiZDFiOCxcbiAgMHgxOWE0YzExNiwgMHhiOGQyZDBjOCwgMHgxZTM3NmMwOCwgMHg1MTQxYWI1MyxcbiAgMHgyNzQ4Nzc0YywgMHhkZjhlZWI5OSwgMHgzNGIwYmNiNSwgMHhlMTliNDhhOCxcbiAgMHgzOTFjMGNiMywgMHhjNWM5NWE2MywgMHg0ZWQ4YWE0YSwgMHhlMzQxOGFjYixcbiAgMHg1YjljY2E0ZiwgMHg3NzYzZTM3MywgMHg2ODJlNmZmMywgMHhkNmIyYjhhMyxcbiAgMHg3NDhmODJlZSwgMHg1ZGVmYjJmYywgMHg3OGE1NjM2ZiwgMHg0MzE3MmY2MCxcbiAgMHg4NGM4NzgxNCwgMHhhMWYwYWI3MiwgMHg4Y2M3MDIwOCwgMHgxYTY0MzllYyxcbiAgMHg5MGJlZmZmYSwgMHgyMzYzMWUyOCwgMHhhNDUwNmNlYiwgMHhkZTgyYmRlOSxcbiAgMHhiZWY5YTNmNywgMHhiMmM2NzkxNSwgMHhjNjcxNzhmMiwgMHhlMzcyNTMyYixcbiAgMHhjYTI3M2VjZSwgMHhlYTI2NjE5YywgMHhkMTg2YjhjNywgMHgyMWMwYzIwNyxcbiAgMHhlYWRhN2RkNiwgMHhjZGUwZWIxZSwgMHhmNTdkNGY3ZiwgMHhlZTZlZDE3OCxcbiAgMHgwNmYwNjdhYSwgMHg3MjE3NmZiYSwgMHgwYTYzN2RjNSwgMHhhMmM4OThhNixcbiAgMHgxMTNmOTgwNCwgMHhiZWY5MGRhZSwgMHgxYjcxMGIzNSwgMHgxMzFjNDcxYixcbiAgMHgyOGRiNzdmNSwgMHgyMzA0N2Q4NCwgMHgzMmNhYWI3YiwgMHg0MGM3MjQ5MyxcbiAgMHgzYzllYmUwYSwgMHgxNWM5YmViYywgMHg0MzFkNjdjNCwgMHg5YzEwMGQ0YyxcbiAgMHg0Y2M1ZDRiZSwgMHhjYjNlNDJiNiwgMHg1OTdmMjk5YywgMHhmYzY1N2UyYSxcbiAgMHg1ZmNiNmZhYiwgMHgzYWQ2ZmFlYywgMHg2YzQ0MTk4YywgMHg0YTQ3NTgxN1xuXVxuXG52YXIgVyA9IG5ldyBBcnJheSgxNjApXG5cbmZ1bmN0aW9uIFNoYTUxMiAoKSB7XG4gIHRoaXMuaW5pdCgpXG4gIHRoaXMuX3cgPSBXXG5cbiAgSGFzaC5jYWxsKHRoaXMsIDEyOCwgMTEyKVxufVxuXG5pbmhlcml0cyhTaGE1MTIsIEhhc2gpXG5cblNoYTUxMi5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5fYWggPSAweDZhMDllNjY3XG4gIHRoaXMuX2JoID0gMHhiYjY3YWU4NVxuICB0aGlzLl9jaCA9IDB4M2M2ZWYzNzJcbiAgdGhpcy5fZGggPSAweGE1NGZmNTNhXG4gIHRoaXMuX2VoID0gMHg1MTBlNTI3ZlxuICB0aGlzLl9maCA9IDB4OWIwNTY4OGNcbiAgdGhpcy5fZ2ggPSAweDFmODNkOWFiXG4gIHRoaXMuX2hoID0gMHg1YmUwY2QxOVxuXG4gIHRoaXMuX2FsID0gMHhmM2JjYzkwOFxuICB0aGlzLl9ibCA9IDB4ODRjYWE3M2JcbiAgdGhpcy5fY2wgPSAweGZlOTRmODJiXG4gIHRoaXMuX2RsID0gMHg1ZjFkMzZmMVxuICB0aGlzLl9lbCA9IDB4YWRlNjgyZDFcbiAgdGhpcy5fZmwgPSAweDJiM2U2YzFmXG4gIHRoaXMuX2dsID0gMHhmYjQxYmQ2YlxuICB0aGlzLl9obCA9IDB4MTM3ZTIxNzlcblxuICByZXR1cm4gdGhpc1xufVxuXG5mdW5jdGlvbiBDaCAoeCwgeSwgeikge1xuICByZXR1cm4geiBeICh4ICYgKHkgXiB6KSlcbn1cblxuZnVuY3Rpb24gbWFqICh4LCB5LCB6KSB7XG4gIHJldHVybiAoeCAmIHkpIHwgKHogJiAoeCB8IHkpKVxufVxuXG5mdW5jdGlvbiBzaWdtYTAgKHgsIHhsKSB7XG4gIHJldHVybiAoeCA+Pj4gMjggfCB4bCA8PCA0KSBeICh4bCA+Pj4gMiB8IHggPDwgMzApIF4gKHhsID4+PiA3IHwgeCA8PCAyNSlcbn1cblxuZnVuY3Rpb24gc2lnbWExICh4LCB4bCkge1xuICByZXR1cm4gKHggPj4+IDE0IHwgeGwgPDwgMTgpIF4gKHggPj4+IDE4IHwgeGwgPDwgMTQpIF4gKHhsID4+PiA5IHwgeCA8PCAyMylcbn1cblxuZnVuY3Rpb24gR2FtbWEwICh4LCB4bCkge1xuICByZXR1cm4gKHggPj4+IDEgfCB4bCA8PCAzMSkgXiAoeCA+Pj4gOCB8IHhsIDw8IDI0KSBeICh4ID4+PiA3KVxufVxuXG5mdW5jdGlvbiBHYW1tYTBsICh4LCB4bCkge1xuICByZXR1cm4gKHggPj4+IDEgfCB4bCA8PCAzMSkgXiAoeCA+Pj4gOCB8IHhsIDw8IDI0KSBeICh4ID4+PiA3IHwgeGwgPDwgMjUpXG59XG5cbmZ1bmN0aW9uIEdhbW1hMSAoeCwgeGwpIHtcbiAgcmV0dXJuICh4ID4+PiAxOSB8IHhsIDw8IDEzKSBeICh4bCA+Pj4gMjkgfCB4IDw8IDMpIF4gKHggPj4+IDYpXG59XG5cbmZ1bmN0aW9uIEdhbW1hMWwgKHgsIHhsKSB7XG4gIHJldHVybiAoeCA+Pj4gMTkgfCB4bCA8PCAxMykgXiAoeGwgPj4+IDI5IHwgeCA8PCAzKSBeICh4ID4+PiA2IHwgeGwgPDwgMjYpXG59XG5cbmZ1bmN0aW9uIGdldENhcnJ5IChhLCBiKSB7XG4gIHJldHVybiAoYSA+Pj4gMCkgPCAoYiA+Pj4gMCkgPyAxIDogMFxufVxuXG5TaGE1MTIucHJvdG90eXBlLl91cGRhdGUgPSBmdW5jdGlvbiAoTSkge1xuICB2YXIgVyA9IHRoaXMuX3dcblxuICB2YXIgYWggPSB0aGlzLl9haCB8IDBcbiAgdmFyIGJoID0gdGhpcy5fYmggfCAwXG4gIHZhciBjaCA9IHRoaXMuX2NoIHwgMFxuICB2YXIgZGggPSB0aGlzLl9kaCB8IDBcbiAgdmFyIGVoID0gdGhpcy5fZWggfCAwXG4gIHZhciBmaCA9IHRoaXMuX2ZoIHwgMFxuICB2YXIgZ2ggPSB0aGlzLl9naCB8IDBcbiAgdmFyIGhoID0gdGhpcy5faGggfCAwXG5cbiAgdmFyIGFsID0gdGhpcy5fYWwgfCAwXG4gIHZhciBibCA9IHRoaXMuX2JsIHwgMFxuICB2YXIgY2wgPSB0aGlzLl9jbCB8IDBcbiAgdmFyIGRsID0gdGhpcy5fZGwgfCAwXG4gIHZhciBlbCA9IHRoaXMuX2VsIHwgMFxuICB2YXIgZmwgPSB0aGlzLl9mbCB8IDBcbiAgdmFyIGdsID0gdGhpcy5fZ2wgfCAwXG4gIHZhciBobCA9IHRoaXMuX2hsIHwgMFxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgMzI7IGkgKz0gMikge1xuICAgIFdbaV0gPSBNLnJlYWRJbnQzMkJFKGkgKiA0KVxuICAgIFdbaSArIDFdID0gTS5yZWFkSW50MzJCRShpICogNCArIDQpXG4gIH1cbiAgZm9yICg7IGkgPCAxNjA7IGkgKz0gMikge1xuICAgIHZhciB4aCA9IFdbaSAtIDE1ICogMl1cbiAgICB2YXIgeGwgPSBXW2kgLSAxNSAqIDIgKyAxXVxuICAgIHZhciBnYW1tYTAgPSBHYW1tYTAoeGgsIHhsKVxuICAgIHZhciBnYW1tYTBsID0gR2FtbWEwbCh4bCwgeGgpXG5cbiAgICB4aCA9IFdbaSAtIDIgKiAyXVxuICAgIHhsID0gV1tpIC0gMiAqIDIgKyAxXVxuICAgIHZhciBnYW1tYTEgPSBHYW1tYTEoeGgsIHhsKVxuICAgIHZhciBnYW1tYTFsID0gR2FtbWExbCh4bCwgeGgpXG5cbiAgICAvLyBXW2ldID0gZ2FtbWEwICsgV1tpIC0gN10gKyBnYW1tYTEgKyBXW2kgLSAxNl1cbiAgICB2YXIgV2k3aCA9IFdbaSAtIDcgKiAyXVxuICAgIHZhciBXaTdsID0gV1tpIC0gNyAqIDIgKyAxXVxuXG4gICAgdmFyIFdpMTZoID0gV1tpIC0gMTYgKiAyXVxuICAgIHZhciBXaTE2bCA9IFdbaSAtIDE2ICogMiArIDFdXG5cbiAgICB2YXIgV2lsID0gKGdhbW1hMGwgKyBXaTdsKSB8IDBcbiAgICB2YXIgV2loID0gKGdhbW1hMCArIFdpN2ggKyBnZXRDYXJyeShXaWwsIGdhbW1hMGwpKSB8IDBcbiAgICBXaWwgPSAoV2lsICsgZ2FtbWExbCkgfCAwXG4gICAgV2loID0gKFdpaCArIGdhbW1hMSArIGdldENhcnJ5KFdpbCwgZ2FtbWExbCkpIHwgMFxuICAgIFdpbCA9IChXaWwgKyBXaTE2bCkgfCAwXG4gICAgV2loID0gKFdpaCArIFdpMTZoICsgZ2V0Q2FycnkoV2lsLCBXaTE2bCkpIHwgMFxuXG4gICAgV1tpXSA9IFdpaFxuICAgIFdbaSArIDFdID0gV2lsXG4gIH1cblxuICBmb3IgKHZhciBqID0gMDsgaiA8IDE2MDsgaiArPSAyKSB7XG4gICAgV2loID0gV1tqXVxuICAgIFdpbCA9IFdbaiArIDFdXG5cbiAgICB2YXIgbWFqaCA9IG1haihhaCwgYmgsIGNoKVxuICAgIHZhciBtYWpsID0gbWFqKGFsLCBibCwgY2wpXG5cbiAgICB2YXIgc2lnbWEwaCA9IHNpZ21hMChhaCwgYWwpXG4gICAgdmFyIHNpZ21hMGwgPSBzaWdtYTAoYWwsIGFoKVxuICAgIHZhciBzaWdtYTFoID0gc2lnbWExKGVoLCBlbClcbiAgICB2YXIgc2lnbWExbCA9IHNpZ21hMShlbCwgZWgpXG5cbiAgICAvLyB0MSA9IGggKyBzaWdtYTEgKyBjaCArIEtbal0gKyBXW2pdXG4gICAgdmFyIEtpaCA9IEtbal1cbiAgICB2YXIgS2lsID0gS1tqICsgMV1cblxuICAgIHZhciBjaGggPSBDaChlaCwgZmgsIGdoKVxuICAgIHZhciBjaGwgPSBDaChlbCwgZmwsIGdsKVxuXG4gICAgdmFyIHQxbCA9IChobCArIHNpZ21hMWwpIHwgMFxuICAgIHZhciB0MWggPSAoaGggKyBzaWdtYTFoICsgZ2V0Q2FycnkodDFsLCBobCkpIHwgMFxuICAgIHQxbCA9ICh0MWwgKyBjaGwpIHwgMFxuICAgIHQxaCA9ICh0MWggKyBjaGggKyBnZXRDYXJyeSh0MWwsIGNobCkpIHwgMFxuICAgIHQxbCA9ICh0MWwgKyBLaWwpIHwgMFxuICAgIHQxaCA9ICh0MWggKyBLaWggKyBnZXRDYXJyeSh0MWwsIEtpbCkpIHwgMFxuICAgIHQxbCA9ICh0MWwgKyBXaWwpIHwgMFxuICAgIHQxaCA9ICh0MWggKyBXaWggKyBnZXRDYXJyeSh0MWwsIFdpbCkpIHwgMFxuXG4gICAgLy8gdDIgPSBzaWdtYTAgKyBtYWpcbiAgICB2YXIgdDJsID0gKHNpZ21hMGwgKyBtYWpsKSB8IDBcbiAgICB2YXIgdDJoID0gKHNpZ21hMGggKyBtYWpoICsgZ2V0Q2FycnkodDJsLCBzaWdtYTBsKSkgfCAwXG5cbiAgICBoaCA9IGdoXG4gICAgaGwgPSBnbFxuICAgIGdoID0gZmhcbiAgICBnbCA9IGZsXG4gICAgZmggPSBlaFxuICAgIGZsID0gZWxcbiAgICBlbCA9IChkbCArIHQxbCkgfCAwXG4gICAgZWggPSAoZGggKyB0MWggKyBnZXRDYXJyeShlbCwgZGwpKSB8IDBcbiAgICBkaCA9IGNoXG4gICAgZGwgPSBjbFxuICAgIGNoID0gYmhcbiAgICBjbCA9IGJsXG4gICAgYmggPSBhaFxuICAgIGJsID0gYWxcbiAgICBhbCA9ICh0MWwgKyB0MmwpIHwgMFxuICAgIGFoID0gKHQxaCArIHQyaCArIGdldENhcnJ5KGFsLCB0MWwpKSB8IDBcbiAgfVxuXG4gIHRoaXMuX2FsID0gKHRoaXMuX2FsICsgYWwpIHwgMFxuICB0aGlzLl9ibCA9ICh0aGlzLl9ibCArIGJsKSB8IDBcbiAgdGhpcy5fY2wgPSAodGhpcy5fY2wgKyBjbCkgfCAwXG4gIHRoaXMuX2RsID0gKHRoaXMuX2RsICsgZGwpIHwgMFxuICB0aGlzLl9lbCA9ICh0aGlzLl9lbCArIGVsKSB8IDBcbiAgdGhpcy5fZmwgPSAodGhpcy5fZmwgKyBmbCkgfCAwXG4gIHRoaXMuX2dsID0gKHRoaXMuX2dsICsgZ2wpIHwgMFxuICB0aGlzLl9obCA9ICh0aGlzLl9obCArIGhsKSB8IDBcblxuICB0aGlzLl9haCA9ICh0aGlzLl9haCArIGFoICsgZ2V0Q2FycnkodGhpcy5fYWwsIGFsKSkgfCAwXG4gIHRoaXMuX2JoID0gKHRoaXMuX2JoICsgYmggKyBnZXRDYXJyeSh0aGlzLl9ibCwgYmwpKSB8IDBcbiAgdGhpcy5fY2ggPSAodGhpcy5fY2ggKyBjaCArIGdldENhcnJ5KHRoaXMuX2NsLCBjbCkpIHwgMFxuICB0aGlzLl9kaCA9ICh0aGlzLl9kaCArIGRoICsgZ2V0Q2FycnkodGhpcy5fZGwsIGRsKSkgfCAwXG4gIHRoaXMuX2VoID0gKHRoaXMuX2VoICsgZWggKyBnZXRDYXJyeSh0aGlzLl9lbCwgZWwpKSB8IDBcbiAgdGhpcy5fZmggPSAodGhpcy5fZmggKyBmaCArIGdldENhcnJ5KHRoaXMuX2ZsLCBmbCkpIHwgMFxuICB0aGlzLl9naCA9ICh0aGlzLl9naCArIGdoICsgZ2V0Q2FycnkodGhpcy5fZ2wsIGdsKSkgfCAwXG4gIHRoaXMuX2hoID0gKHRoaXMuX2hoICsgaGggKyBnZXRDYXJyeSh0aGlzLl9obCwgaGwpKSB8IDBcbn1cblxuU2hhNTEyLnByb3RvdHlwZS5faGFzaCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIEggPSBuZXcgQnVmZmVyKDY0KVxuXG4gIGZ1bmN0aW9uIHdyaXRlSW50NjRCRSAoaCwgbCwgb2Zmc2V0KSB7XG4gICAgSC53cml0ZUludDMyQkUoaCwgb2Zmc2V0KVxuICAgIEgud3JpdGVJbnQzMkJFKGwsIG9mZnNldCArIDQpXG4gIH1cblxuICB3cml0ZUludDY0QkUodGhpcy5fYWgsIHRoaXMuX2FsLCAwKVxuICB3cml0ZUludDY0QkUodGhpcy5fYmgsIHRoaXMuX2JsLCA4KVxuICB3cml0ZUludDY0QkUodGhpcy5fY2gsIHRoaXMuX2NsLCAxNilcbiAgd3JpdGVJbnQ2NEJFKHRoaXMuX2RoLCB0aGlzLl9kbCwgMjQpXG4gIHdyaXRlSW50NjRCRSh0aGlzLl9laCwgdGhpcy5fZWwsIDMyKVxuICB3cml0ZUludDY0QkUodGhpcy5fZmgsIHRoaXMuX2ZsLCA0MClcbiAgd3JpdGVJbnQ2NEJFKHRoaXMuX2doLCB0aGlzLl9nbCwgNDgpXG4gIHdyaXRlSW50NjRCRSh0aGlzLl9oaCwgdGhpcy5faGwsIDU2KVxuXG4gIHJldHVybiBIXG59XG5cbm1vZHVsZS5leHBvcnRzID0gU2hhNTEyXG4iLCIvLyBUaGlzIHByZXZlbnRzIHBvbGx1dGlvbiBvZiB0aGUgZ2xvYmFsIG5hbWVzcGFjZVxudmFyIFNRTCA9IChmdW5jdGlvbiAoKSB7XG52YXIgZjtmfHwoZj1ldmFsKFwiKGZ1bmN0aW9uKCkgeyB0cnkgeyByZXR1cm4gTW9kdWxlIHx8IHt9IH0gY2F0Y2goZSkgeyByZXR1cm4ge30gfSB9KSgpXCIpKTt2YXIgYmE9e30sY2E7Zm9yKGNhIGluIGYpZi5oYXNPd25Qcm9wZXJ0eShjYSkmJihiYVtjYV09ZltjYV0pO3ZhciBkYT1cIm9iamVjdFwiPT09dHlwZW9mIHdpbmRvdyxlYT1cImZ1bmN0aW9uXCI9PT10eXBlb2YgaW1wb3J0U2NyaXB0cyxmYT1cIm9iamVjdFwiPT09dHlwZW9mIHByb2Nlc3MmJlwiZnVuY3Rpb25cIj09PXR5cGVvZiByZXF1aXJlJiYhZGEmJiFlYSxnYT0hZGEmJiFmYSYmIWVhO1xuaWYoZmEpe2YucHJpbnR8fChmLnByaW50PWZ1bmN0aW9uKGEpe3Byb2Nlc3Muc3Rkb3V0LndyaXRlKGErXCJcXG5cIil9KTtmLnByaW50RXJyfHwoZi5wcmludEVycj1mdW5jdGlvbihhKXtwcm9jZXNzLnN0ZGVyci53cml0ZShhK1wiXFxuXCIpfSk7dmFyIGhhPXJlcXVpcmUoXCJmc1wiKSxqYT1yZXF1aXJlKFwicGF0aFwiKTtmLnJlYWQ9ZnVuY3Rpb24oYSxiKXthPWphLm5vcm1hbGl6ZShhKTt2YXIgYz1oYS5yZWFkRmlsZVN5bmMoYSk7Y3x8YT09amEucmVzb2x2ZShhKXx8KGE9cGF0aC5qb2luKF9fZGlybmFtZSxcIi4uXCIsXCJzcmNcIixhKSxjPWhhLnJlYWRGaWxlU3luYyhhKSk7YyYmIWImJihjPWMudG9TdHJpbmcoKSk7cmV0dXJuIGN9O2YucmVhZEJpbmFyeT1mdW5jdGlvbihhKXthPWYucmVhZChhLCEwKTthLmJ1ZmZlcnx8KGE9bmV3IFVpbnQ4QXJyYXkoYSkpO2Fzc2VydChhLmJ1ZmZlcik7cmV0dXJuIGF9O2YubG9hZD1mdW5jdGlvbihhKXtrYShyZWFkKGEpKX07Zi50aGlzUHJvZ3JhbXx8KGYudGhpc1Byb2dyYW09XG4xPHByb2Nlc3MuYXJndi5sZW5ndGg/cHJvY2Vzcy5hcmd2WzFdLnJlcGxhY2UoL1xcXFwvZyxcIi9cIik6XCJ1bmtub3duLXByb2dyYW1cIik7Zi5hcmd1bWVudHM9cHJvY2Vzcy5hcmd2LnNsaWNlKDIpO1widW5kZWZpbmVkXCIhPT10eXBlb2YgbW9kdWxlJiYobW9kdWxlLmV4cG9ydHM9Zik7cHJvY2Vzcy5vbihcInVuY2F1Z2h0RXhjZXB0aW9uXCIsZnVuY3Rpb24oYSl7aWYoIShhIGluc3RhbmNlb2YgbGEpKXRocm93IGE7fSk7Zi5pbnNwZWN0PWZ1bmN0aW9uKCl7cmV0dXJuXCJbRW1zY3JpcHRlbiBNb2R1bGUgb2JqZWN0XVwifX1lbHNlIGlmKGdhKWYucHJpbnR8fChmLnByaW50PXByaW50KSxcInVuZGVmaW5lZFwiIT10eXBlb2YgcHJpbnRFcnImJihmLnByaW50RXJyPXByaW50RXJyKSxmLnJlYWQ9XCJ1bmRlZmluZWRcIiE9dHlwZW9mIHJlYWQ/cmVhZDpmdW5jdGlvbigpe3Rocm93XCJubyByZWFkKCkgYXZhaWxhYmxlIChqc2M/KVwiO30sZi5yZWFkQmluYXJ5PWZ1bmN0aW9uKGEpe2lmKFwiZnVuY3Rpb25cIj09PVxudHlwZW9mIHJlYWRidWZmZXIpcmV0dXJuIG5ldyBVaW50OEFycmF5KHJlYWRidWZmZXIoYSkpO2E9cmVhZChhLFwiYmluYXJ5XCIpO2Fzc2VydChcIm9iamVjdFwiPT09dHlwZW9mIGEpO3JldHVybiBhfSxcInVuZGVmaW5lZFwiIT10eXBlb2Ygc2NyaXB0QXJncz9mLmFyZ3VtZW50cz1zY3JpcHRBcmdzOlwidW5kZWZpbmVkXCIhPXR5cGVvZiBhcmd1bWVudHMmJihmLmFyZ3VtZW50cz1hcmd1bWVudHMpLGV2YWwoXCJpZiAodHlwZW9mIGdjID09PSAnZnVuY3Rpb24nICYmIGdjLnRvU3RyaW5nKCkuaW5kZXhPZignW25hdGl2ZSBjb2RlXScpID4gMCkgdmFyIGdjID0gdW5kZWZpbmVkXCIpO2Vsc2UgaWYoZGF8fGVhKWYucmVhZD1mdW5jdGlvbihhKXt2YXIgYj1uZXcgWE1MSHR0cFJlcXVlc3Q7Yi5vcGVuKFwiR0VUXCIsYSwhMSk7Yi5zZW5kKG51bGwpO3JldHVybiBiLnJlc3BvbnNlVGV4dH0sXCJ1bmRlZmluZWRcIiE9dHlwZW9mIGFyZ3VtZW50cyYmKGYuYXJndW1lbnRzPWFyZ3VtZW50cyksXCJ1bmRlZmluZWRcIiE9PVxudHlwZW9mIGNvbnNvbGU/KGYucHJpbnR8fChmLnByaW50PWZ1bmN0aW9uKGEpe2NvbnNvbGUubG9nKGEpfSksZi5wcmludEVycnx8KGYucHJpbnRFcnI9ZnVuY3Rpb24oYSl7Y29uc29sZS5sb2coYSl9KSk6Zi5wcmludHx8KGYucHJpbnQ9ZnVuY3Rpb24oKXt9KSxlYSYmKGYubG9hZD1pbXBvcnRTY3JpcHRzKSxcInVuZGVmaW5lZFwiPT09dHlwZW9mIGYuc2V0V2luZG93VGl0bGUmJihmLnNldFdpbmRvd1RpdGxlPWZ1bmN0aW9uKGEpe2RvY3VtZW50LnRpdGxlPWF9KTtlbHNlIHRocm93XCJVbmtub3duIHJ1bnRpbWUgZW52aXJvbm1lbnQuIFdoZXJlIGFyZSB3ZT9cIjtmdW5jdGlvbiBrYShhKXtldmFsLmNhbGwobnVsbCxhKX0hZi5sb2FkJiZmLnJlYWQmJihmLmxvYWQ9ZnVuY3Rpb24oYSl7a2EoZi5yZWFkKGEpKX0pO2YucHJpbnR8fChmLnByaW50PWZ1bmN0aW9uKCl7fSk7Zi5wcmludEVycnx8KGYucHJpbnRFcnI9Zi5wcmludCk7Zi5hcmd1bWVudHN8fChmLmFyZ3VtZW50cz1bXSk7XG5mLnRoaXNQcm9ncmFtfHwoZi50aGlzUHJvZ3JhbT1cIi4vdGhpcy5wcm9ncmFtXCIpO2YucHJpbnQ9Zi5wcmludDtmLmZhPWYucHJpbnRFcnI7Zi5wcmVSdW49W107Zi5wb3N0UnVuPVtdO2ZvcihjYSBpbiBiYSliYS5oYXNPd25Qcm9wZXJ0eShjYSkmJihmW2NhXT1iYVtjYV0pO1xudmFyIGw9e1FiOmZ1bmN0aW9uKGEpe21hPWF9LEFiOmZ1bmN0aW9uKCl7cmV0dXJuIG1hfSxxYTpmdW5jdGlvbigpe3JldHVybiBrfSxnYTpmdW5jdGlvbihhKXtrPWF9LFhhOmZ1bmN0aW9uKGEpe3N3aXRjaChhKXtjYXNlIFwiaTFcIjpjYXNlIFwiaThcIjpyZXR1cm4gMTtjYXNlIFwiaTE2XCI6cmV0dXJuIDI7Y2FzZSBcImkzMlwiOnJldHVybiA0O2Nhc2UgXCJpNjRcIjpyZXR1cm4gODtjYXNlIFwiZmxvYXRcIjpyZXR1cm4gNDtjYXNlIFwiZG91YmxlXCI6cmV0dXJuIDg7ZGVmYXVsdDpyZXR1cm5cIipcIj09PWFbYS5sZW5ndGgtMV0/bC5NOlwiaVwiPT09YVswXT8oYT1wYXJzZUludChhLnN1YnN0cigxKSksYXNzZXJ0KDA9PT1hJTgpLGEvOCk6MH19LHhiOmZ1bmN0aW9uKGEpe3JldHVybiBNYXRoLm1heChsLlhhKGEpLGwuTSl9LG9lOjE2LEtlOmZ1bmN0aW9uKGEsYil7XCJkb3VibGVcIj09PWJ8fFwiaTY0XCI9PT1iP2EmNyYmKGFzc2VydCg0PT09KGEmNykpLGErPTQpOmFzc2VydCgwPT09KGEmMykpO3JldHVybiBhfSxcbnllOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gY3x8XCJpNjRcIiE9YSYmXCJkb3VibGVcIiE9YT9hP01hdGgubWluKGJ8fChhP2wueGIoYSk6MCksbC5NKTpNYXRoLm1pbihiLDgpOjh9LFQ6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBjJiZjLmxlbmd0aD8oYy5zcGxpY2V8fChjPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGMpKSxjLnNwbGljZSgwLDAsYiksZltcImR5bkNhbGxfXCIrYV0uYXBwbHkobnVsbCxjKSk6ZltcImR5bkNhbGxfXCIrYV0uY2FsbChudWxsLGIpfSxBOltudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxcbm51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGxdLExhOmZ1bmN0aW9uKGEpe2Zvcih2YXIgYj0wO2I8bC5BLmxlbmd0aDtiKyspaWYoIWwuQVtiXSlyZXR1cm4gbC5BW2JdPWEsMiooMStiKTt0aHJvd1wiRmluaXNoZWQgdXAgYWxsIHJlc2VydmVkIGZ1bmN0aW9uIHBvaW50ZXJzLiBVc2UgYSBoaWdoZXIgdmFsdWUgZm9yIFJFU0VSVkVEX0ZVTkNUSU9OX1BPSU5URVJTLlwiO30sTWI6ZnVuY3Rpb24oYSl7bC5BWyhhLTIpLzJdPW51bGx9LFg6ZnVuY3Rpb24oYSl7bC5YLkZhfHwobC5YLkZhPXt9KTtsLlguRmFbYV18fChsLlguRmFbYV09MSxmLmZhKGEpKX0seWE6e30sQmU6ZnVuY3Rpb24oYSxiKXthc3NlcnQoYik7bC55YVtiXXx8KGwueWFbYl09e30pO3ZhciBjPWwueWFbYl07Y1thXXx8KGNbYV09ZnVuY3Rpb24oKXtyZXR1cm4gbC5UKGIsYSxhcmd1bWVudHMpfSk7cmV0dXJuIGNbYV19LHplOmZ1bmN0aW9uKCl7dGhyb3dcIllvdSBtdXN0IGJ1aWxkIHdpdGggLXMgUkVUQUlOX0NPTVBJTEVSX1NFVFRJTkdTPTEgZm9yIFJ1bnRpbWUuZ2V0Q29tcGlsZXJTZXR0aW5nIG9yIGVtc2NyaXB0ZW5fZ2V0X2NvbXBpbGVyX3NldHRpbmcgdG8gd29ya1wiO1xufSxSOmZ1bmN0aW9uKGEpe3ZhciBiPWs7az1rK2F8MDtrPWsrMTUmLTE2O3JldHVybiBifSxiYjpmdW5jdGlvbihhKXt2YXIgYj1uYTtuYT1uYSthfDA7bmE9bmErMTUmLTE2O3JldHVybiBifSxiYTpmdW5jdGlvbihhKXt2YXIgYj1uO249bithfDA7bj1uKzE1Ji0xNjtyZXR1cm4gbj49cCYmIW9hKCk/KG49YiwwKTpifSx0YTpmdW5jdGlvbihhLGIpe3JldHVybiBNYXRoLmNlaWwoYS8oYj9iOjE2KSkqKGI/YjoxNil9LEhlOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gYz8rKGE+Pj4wKSs0Mjk0OTY3Mjk2KisoYj4+PjApOisoYT4+PjApKzQyOTQ5NjcyOTYqKyhifDApfSxhYTo4LE06NCxyZTowfTtmLlJ1bnRpbWU9bDtsLmFkZEZ1bmN0aW9uPWwuTGE7bC5yZW1vdmVGdW5jdGlvbj1sLk1iO3ZhciBwYT0hMSxxYSxyYSxtYTtmdW5jdGlvbiBhc3NlcnQoYSxiKXthfHxxKFwiQXNzZXJ0aW9uIGZhaWxlZDogXCIrYil9XG5mdW5jdGlvbiBzYShhKXt2YXIgYj1mW1wiX1wiK2FdO2lmKCFiKXRyeXtiPWV2YWwoXCJfXCIrYSl9Y2F0Y2goYyl7fWFzc2VydChiLFwiQ2Fubm90IGNhbGwgdW5rbm93biBmdW5jdGlvbiBcIithK1wiIChwZXJoYXBzIExMVk0gb3B0aW1pemF0aW9ucyBvciBjbG9zdXJlIHJlbW92ZWQgaXQ/KVwiKTtyZXR1cm4gYn12YXIgdGEsdWE7XG4oZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGEpe2E9YS50b1N0cmluZygpLm1hdGNoKGQpLnNsaWNlKDEpO3JldHVybnthcmd1bWVudHM6YVswXSxib2R5OmFbMV0scmV0dXJuVmFsdWU6YVsyXX19dmFyIGI9e3N0YWNrU2F2ZTpmdW5jdGlvbigpe2wucWEoKX0sc3RhY2tSZXN0b3JlOmZ1bmN0aW9uKCl7bC5nYSgpfSxhcnJheVRvQzpmdW5jdGlvbihhKXt2YXIgYj1sLlIoYS5sZW5ndGgpO3dhKGEsYik7cmV0dXJuIGJ9LHN0cmluZ1RvQzpmdW5jdGlvbihhKXt2YXIgYj0wO251bGwhPT1hJiZ2b2lkIDAhPT1hJiYwIT09YSYmKGI9bC5SKChhLmxlbmd0aDw8MikrMSkseGEoYSxiKSk7cmV0dXJuIGJ9fSxjPXtzdHJpbmc6Yi5zdHJpbmdUb0MsYXJyYXk6Yi5hcnJheVRvQ307dWE9ZnVuY3Rpb24oYSxiLGQsZSxnKXthPXNhKGEpO3ZhciB2PVtdLEk9MDtpZihlKWZvcih2YXIgSj0wO0o8ZS5sZW5ndGg7SisrKXt2YXIgYWE9Y1tkW0pdXTthYT8oMD09PUkmJihJPWwucWEoKSksdltKXT1hYShlW0pdKSk6XG52W0pdPWVbSl19ZD1hLmFwcGx5KG51bGwsdik7XCJzdHJpbmdcIj09PWImJihkPXUoZCkpO2lmKDAhPT1JKXtpZihnJiZnLmFzeW5jKXt5YS5zZS5wdXNoKGZ1bmN0aW9uKCl7bC5nYShJKX0pO3JldHVybn1sLmdhKEkpfXJldHVybiBkfTt2YXIgZD0vXmZ1bmN0aW9uXFxzKlxcKChbXildKilcXClcXHMqe1xccyooW14qXSo/KVtcXHM7XSooPzpyZXR1cm5cXHMqKC4qPylbO1xcc10qKT99JC8sZT17fSxnO2ZvcihnIGluIGIpYi5oYXNPd25Qcm9wZXJ0eShnKSYmKGVbZ109YShiW2ddKSk7dGE9ZnVuY3Rpb24oYixjLGQpe2Q9ZHx8W107dmFyIGc9c2EoYik7Yj1kLmV2ZXJ5KGZ1bmN0aW9uKGEpe3JldHVyblwibnVtYmVyXCI9PT1hfSk7dmFyIHg9XCJzdHJpbmdcIiE9PWM7aWYoeCYmYilyZXR1cm4gZzt2YXIgdj1kLm1hcChmdW5jdGlvbihhLGIpe3JldHVyblwiJFwiK2J9KTtjPVwiKGZ1bmN0aW9uKFwiK3Yuam9pbihcIixcIikrXCIpIHtcIjt2YXIgST1kLmxlbmd0aDtpZighYil7Yys9XCJ2YXIgc3RhY2sgPSBcIitlLnN0YWNrU2F2ZS5ib2R5K1xuXCI7XCI7Zm9yKHZhciBKPTA7SjxJO0orKyl7dmFyIGFhPXZbSl0sdmE9ZFtKXTtcIm51bWJlclwiIT09dmEmJih2YT1lW3ZhK1wiVG9DXCJdLGMrPVwidmFyIFwiK3ZhLmFyZ3VtZW50cytcIiA9IFwiK2FhK1wiO1wiLGMrPXZhLmJvZHkrXCI7XCIsYys9YWErXCI9XCIrdmEucmV0dXJuVmFsdWUrXCI7XCIpfX1kPWEoZnVuY3Rpb24oKXtyZXR1cm4gZ30pLnJldHVyblZhbHVlO2MrPVwidmFyIHJldCA9IFwiK2QrXCIoXCIrdi5qb2luKFwiLFwiKStcIik7XCI7eHx8KGQ9YShmdW5jdGlvbigpe3JldHVybiB1fSkucmV0dXJuVmFsdWUsYys9XCJyZXQgPSBcIitkK1wiKHJldCk7XCIpO2J8fChjKz1lLnN0YWNrUmVzdG9yZS5ib2R5LnJlcGxhY2UoXCIoKVwiLFwiKHN0YWNrKVwiKStcIjtcIik7cmV0dXJuIGV2YWwoYytcInJldHVybiByZXR9KVwiKX19KSgpO2YuY2NhbGw9dWE7Zi5jd3JhcD10YTtcbmZ1bmN0aW9uIHphKGEsYixjKXtjPWN8fFwiaThcIjtcIipcIj09PWMuY2hhckF0KGMubGVuZ3RoLTEpJiYoYz1cImkzMlwiKTtzd2l0Y2goYyl7Y2FzZSBcImkxXCI6d1thPj4wXT1iO2JyZWFrO2Nhc2UgXCJpOFwiOndbYT4+MF09YjticmVhaztjYXNlIFwiaTE2XCI6QWFbYT4+MV09YjticmVhaztjYXNlIFwiaTMyXCI6eVthPj4yXT1iO2JyZWFrO2Nhc2UgXCJpNjRcIjpyYT1bYj4+PjAsKHFhPWIsMTw9K0JhKHFhKT8wPHFhPyhDYSgrRGEocWEvNDI5NDk2NzI5NiksNDI5NDk2NzI5NSl8MCk+Pj4wOn5+K0VhKChxYS0rKH5+cWE+Pj4wKSkvNDI5NDk2NzI5Nik+Pj4wOjApXTt5W2E+PjJdPXJhWzBdO3lbYSs0Pj4yXT1yYVsxXTticmVhaztjYXNlIFwiZmxvYXRcIjpGYVthPj4yXT1iO2JyZWFrO2Nhc2UgXCJkb3VibGVcIjpHYVthPj4zXT1iO2JyZWFrO2RlZmF1bHQ6cShcImludmFsaWQgdHlwZSBmb3Igc2V0VmFsdWU6IFwiK2MpfX1mLnNldFZhbHVlPXphO1xuZnVuY3Rpb24gSGEoYSxiKXtiPWJ8fFwiaThcIjtcIipcIj09PWIuY2hhckF0KGIubGVuZ3RoLTEpJiYoYj1cImkzMlwiKTtzd2l0Y2goYil7Y2FzZSBcImkxXCI6cmV0dXJuIHdbYT4+MF07Y2FzZSBcImk4XCI6cmV0dXJuIHdbYT4+MF07Y2FzZSBcImkxNlwiOnJldHVybiBBYVthPj4xXTtjYXNlIFwiaTMyXCI6cmV0dXJuIHlbYT4+Ml07Y2FzZSBcImk2NFwiOnJldHVybiB5W2E+PjJdO2Nhc2UgXCJmbG9hdFwiOnJldHVybiBGYVthPj4yXTtjYXNlIFwiZG91YmxlXCI6cmV0dXJuIEdhW2E+PjNdO2RlZmF1bHQ6cShcImludmFsaWQgdHlwZSBmb3Igc2V0VmFsdWU6IFwiK2IpfXJldHVybiBudWxsfWYuZ2V0VmFsdWU9SGE7Zi5BTExPQ19OT1JNQUw9MDtmLkFMTE9DX1NUQUNLPTE7Zi5BTExPQ19TVEFUSUM9MjtmLkFMTE9DX0RZTkFNSUM9MztmLkFMTE9DX05PTkU9NDtcbmZ1bmN0aW9uIHooYSxiLGMsZCl7dmFyIGUsZztcIm51bWJlclwiPT09dHlwZW9mIGE/KGU9ITAsZz1hKTooZT0hMSxnPWEubGVuZ3RoKTt2YXIgaD1cInN0cmluZ1wiPT09dHlwZW9mIGI/YjpudWxsO2M9ND09Yz9kOltJYSxsLlIsbC5iYixsLmJhXVt2b2lkIDA9PT1jPzI6Y10oTWF0aC5tYXgoZyxoPzE6Yi5sZW5ndGgpKTtpZihlKXtkPWM7YXNzZXJ0KDA9PShjJjMpKTtmb3IoYT1jKyhnJi00KTtkPGE7ZCs9NCl5W2Q+PjJdPTA7Zm9yKGE9YytnO2Q8YTspd1tkKys+PjBdPTA7cmV0dXJuIGN9aWYoXCJpOFwiPT09aClyZXR1cm4gYS5zdWJhcnJheXx8YS5zbGljZT9BLnNldChhLGMpOkEuc2V0KG5ldyBVaW50OEFycmF5KGEpLGMpLGM7ZD0wO2Zvcih2YXIgbSx0O2Q8Zzspe3ZhciByPWFbZF07XCJmdW5jdGlvblwiPT09dHlwZW9mIHImJihyPWwuQ2UocikpO2U9aHx8YltkXTswPT09ZT9kKys6KFwiaTY0XCI9PWUmJihlPVwiaTMyXCIpLHphKGMrZCxyLGUpLHQhPT1lJiYobT1sLlhhKGUpLHQ9ZSksZCs9XG5tKX1yZXR1cm4gY31mLmFsbG9jYXRlPXo7Zi5nZXRNZW1vcnk9ZnVuY3Rpb24oYSl7cmV0dXJuIEphP1widW5kZWZpbmVkXCIhPT10eXBlb2YgS2EmJiFLYS5WYXx8IUxhP2wuYmEoYSk6SWEoYSk6bC5iYihhKX07ZnVuY3Rpb24gdShhLGIpe2lmKDA9PT1ifHwhYSlyZXR1cm5cIlwiO2Zvcih2YXIgYz0wLGQsZT0wOzspe2Q9QVthK2U+PjBdO2N8PWQ7aWYoMD09ZCYmIWIpYnJlYWs7ZSsrO2lmKGImJmU9PWIpYnJlYWt9Ynx8KGI9ZSk7ZD1cIlwiO2lmKDEyOD5jKXtmb3IoOzA8YjspYz1TdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KFN0cmluZyxBLnN1YmFycmF5KGEsYStNYXRoLm1pbihiLDEwMjQpKSksZD1kP2QrYzpjLGErPTEwMjQsYi09MTAyNDtyZXR1cm4gZH1yZXR1cm4gZi5VVEY4VG9TdHJpbmcoYSl9Zi5Qb2ludGVyX3N0cmluZ2lmeT11O2YuQXNjaWlUb1N0cmluZz1mdW5jdGlvbihhKXtmb3IodmFyIGI9XCJcIjs7KXt2YXIgYz13W2ErKz4+MF07aWYoIWMpcmV0dXJuIGI7Yis9U3RyaW5nLmZyb21DaGFyQ29kZShjKX19O1xuZi5zdHJpbmdUb0FzY2lpPWZ1bmN0aW9uKGEsYil7cmV0dXJuIE1hKGEsYiwhMSl9O1xuZnVuY3Rpb24gTmEoYSxiKXtmb3IodmFyIGMsZCxlLGcsaCxtLHQ9XCJcIjs7KXtjPWFbYisrXTtpZighYylyZXR1cm4gdDtjJjEyOD8oZD1hW2IrK10mNjMsMTkyPT0oYyYyMjQpP3QrPVN0cmluZy5mcm9tQ2hhckNvZGUoKGMmMzEpPDw2fGQpOihlPWFbYisrXSY2MywyMjQ9PShjJjI0MCk/Yz0oYyYxNSk8PDEyfGQ8PDZ8ZTooZz1hW2IrK10mNjMsMjQwPT0oYyYyNDgpP2M9KGMmNyk8PDE4fGQ8PDEyfGU8PDZ8ZzooaD1hW2IrK10mNjMsMjQ4PT0oYyYyNTIpP2M9KGMmMyk8PDI0fGQ8PDE4fGU8PDEyfGc8PDZ8aDoobT1hW2IrK10mNjMsYz0oYyYxKTw8MzB8ZDw8MjR8ZTw8MTh8Zzw8MTJ8aDw8NnxtKSkpLDY1NTM2PmM/dCs9U3RyaW5nLmZyb21DaGFyQ29kZShjKTooYy09NjU1MzYsdCs9U3RyaW5nLmZyb21DaGFyQ29kZSg1NTI5NnxjPj4xMCw1NjMyMHxjJjEwMjMpKSkpOnQrPVN0cmluZy5mcm9tQ2hhckNvZGUoYyl9fWYuVVRGOEFycmF5VG9TdHJpbmc9TmE7XG5mLlVURjhUb1N0cmluZz1mdW5jdGlvbihhKXtyZXR1cm4gTmEoQSxhKX07XG5mdW5jdGlvbiBPYShhLGIsYyxkKXtpZighKDA8ZCkpcmV0dXJuIDA7dmFyIGU9YztkPWMrZC0xO2Zvcih2YXIgZz0wO2c8YS5sZW5ndGg7KytnKXt2YXIgaD1hLmNoYXJDb2RlQXQoZyk7NTUyOTY8PWgmJjU3MzQzPj1oJiYoaD02NTUzNisoKGgmMTAyMyk8PDEwKXxhLmNoYXJDb2RlQXQoKytnKSYxMDIzKTtpZigxMjc+PWgpe2lmKGM+PWQpYnJlYWs7YltjKytdPWh9ZWxzZXtpZigyMDQ3Pj1oKXtpZihjKzE+PWQpYnJlYWs7YltjKytdPTE5MnxoPj42fWVsc2V7aWYoNjU1MzU+PWgpe2lmKGMrMj49ZClicmVhaztiW2MrK109MjI0fGg+PjEyfWVsc2V7aWYoMjA5NzE1MT49aCl7aWYoYyszPj1kKWJyZWFrO2JbYysrXT0yNDB8aD4+MTh9ZWxzZXtpZig2NzEwODg2Mz49aCl7aWYoYys0Pj1kKWJyZWFrO2JbYysrXT0yNDh8aD4+MjR9ZWxzZXtpZihjKzU+PWQpYnJlYWs7YltjKytdPTI1MnxoPj4zMDtiW2MrK109MTI4fGg+PjI0JjYzfWJbYysrXT0xMjh8aD4+MTgmNjN9YltjKytdPTEyOHxcbmg+PjEyJjYzfWJbYysrXT0xMjh8aD4+NiY2M31iW2MrK109MTI4fGgmNjN9fWJbY109MDtyZXR1cm4gYy1lfWYuc3RyaW5nVG9VVEY4QXJyYXk9T2E7Zi5zdHJpbmdUb1VURjg9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBPYShhLEEsYixjKX07ZnVuY3Rpb24gUGEoYSl7Zm9yKHZhciBiPTAsYz0wO2M8YS5sZW5ndGg7KytjKXt2YXIgZD1hLmNoYXJDb2RlQXQoYyk7NTUyOTY8PWQmJjU3MzQzPj1kJiYoZD02NTUzNisoKGQmMTAyMyk8PDEwKXxhLmNoYXJDb2RlQXQoKytjKSYxMDIzKTsxMjc+PWQ/KytiOmI9MjA0Nz49ZD9iKzI6NjU1MzU+PWQ/YiszOjIwOTcxNTE+PWQ/Yis0OjY3MTA4ODYzPj1kP2IrNTpiKzZ9cmV0dXJuIGJ9Zi5sZW5ndGhCeXRlc1VURjg9UGE7Zi5VVEYxNlRvU3RyaW5nPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYj0wLGM9XCJcIjs7KXt2YXIgZD1BYVthKzIqYj4+MV07aWYoMD09ZClyZXR1cm4gYzsrK2I7Yys9U3RyaW5nLmZyb21DaGFyQ29kZShkKX19O1xuZi5zdHJpbmdUb1VURjE2PWZ1bmN0aW9uKGEsYixjKXt2b2lkIDA9PT1jJiYoYz0yMTQ3NDgzNjQ3KTtpZigyPmMpcmV0dXJuIDA7Yy09Mjt2YXIgZD1iO2M9YzwyKmEubGVuZ3RoP2MvMjphLmxlbmd0aDtmb3IodmFyIGU9MDtlPGM7KytlKUFhW2I+PjFdPWEuY2hhckNvZGVBdChlKSxiKz0yO0FhW2I+PjFdPTA7cmV0dXJuIGItZH07Zi5sZW5ndGhCeXRlc1VURjE2PWZ1bmN0aW9uKGEpe3JldHVybiAyKmEubGVuZ3RofTtmLlVURjMyVG9TdHJpbmc9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPTAsYz1cIlwiOzspe3ZhciBkPXlbYSs0KmI+PjJdO2lmKDA9PWQpcmV0dXJuIGM7KytiOzY1NTM2PD1kPyhkPWQtNjU1MzYsYys9U3RyaW5nLmZyb21DaGFyQ29kZSg1NTI5NnxkPj4xMCw1NjMyMHxkJjEwMjMpKTpjKz1TdHJpbmcuZnJvbUNoYXJDb2RlKGQpfX07XG5mLnN0cmluZ1RvVVRGMzI9ZnVuY3Rpb24oYSxiLGMpe3ZvaWQgMD09PWMmJihjPTIxNDc0ODM2NDcpO2lmKDQ+YylyZXR1cm4gMDt2YXIgZD1iO2M9ZCtjLTQ7Zm9yKHZhciBlPTA7ZTxhLmxlbmd0aDsrK2Upe3ZhciBnPWEuY2hhckNvZGVBdChlKTtpZig1NTI5Njw9ZyYmNTczNDM+PWcpdmFyIGg9YS5jaGFyQ29kZUF0KCsrZSksZz02NTUzNisoKGcmMTAyMyk8PDEwKXxoJjEwMjM7eVtiPj4yXT1nO2IrPTQ7aWYoYis0PmMpYnJlYWt9eVtiPj4yXT0wO3JldHVybiBiLWR9O2YubGVuZ3RoQnl0ZXNVVEYzMj1mdW5jdGlvbihhKXtmb3IodmFyIGI9MCxjPTA7YzxhLmxlbmd0aDsrK2Mpe3ZhciBkPWEuY2hhckNvZGVBdChjKTs1NTI5Njw9ZCYmNTczNDM+PWQmJisrYztiKz00fXJldHVybiBifTtcbmZ1bmN0aW9uIFFhKGEpe2Z1bmN0aW9uIGIoYyxkLGUpe2Q9ZHx8SW5maW5pdHk7dmFyIGc9XCJcIixoPVtdLHY7aWYoXCJOXCI9PT1hW21dKXttKys7XCJLXCI9PT1hW21dJiZtKys7Zm9yKHY9W107XCJFXCIhPT1hW21dOylpZihcIlNcIj09PWFbbV0pe20rKzt2YXIgSD1hLmluZGV4T2YoXCJfXCIsbSk7di5wdXNoKHJbYS5zdWJzdHJpbmcobSxIKXx8MF18fFwiP1wiKTttPUgrMX1lbHNlIGlmKFwiQ1wiPT09YVttXSl2LnB1c2godlt2Lmxlbmd0aC0xXSksbSs9MjtlbHNle3ZhciBIPXBhcnNlSW50KGEuc3Vic3RyKG0pKSxpYT1ILnRvU3RyaW5nKCkubGVuZ3RoO2lmKCFIfHwhaWEpe20tLTticmVha312YXIgb2M9YS5zdWJzdHIobStpYSxIKTt2LnB1c2gob2MpO3IucHVzaChvYyk7bSs9aWErSH1tKys7dj12LmpvaW4oXCI6OlwiKTtkLS07aWYoMD09PWQpcmV0dXJuIGM/W3ZdOnZ9ZWxzZSBpZigoXCJLXCI9PT1hW21dfHx4JiZcIkxcIj09PWFbbV0pJiZtKyssSD1wYXJzZUludChhLnN1YnN0cihtKSkpaWE9SC50b1N0cmluZygpLmxlbmd0aCxcbnY9YS5zdWJzdHIobStpYSxIKSxtKz1pYStIO3g9ITE7XCJJXCI9PT1hW21dPyhtKyssSD1iKCEwKSxpYT1iKCEwLDEsITApLGcrPWlhWzBdK1wiIFwiK3YrXCI8XCIrSC5qb2luKFwiLCBcIikrXCI+XCIpOmc9djthOmZvcig7bTxhLmxlbmd0aCYmMDxkLS07KWlmKHY9YVttKytdLHYgaW4gdCloLnB1c2godFt2XSk7ZWxzZSBzd2l0Y2godil7Y2FzZSBcIlBcIjpoLnB1c2goYighMCwxLCEwKVswXStcIipcIik7YnJlYWs7Y2FzZSBcIlJcIjpoLnB1c2goYighMCwxLCEwKVswXStcIiZcIik7YnJlYWs7Y2FzZSBcIkxcIjptKys7SD1hLmluZGV4T2YoXCJFXCIsbSktbTtoLnB1c2goYS5zdWJzdHIobSxIKSk7bSs9SCsyO2JyZWFrO2Nhc2UgXCJBXCI6SD1wYXJzZUludChhLnN1YnN0cihtKSk7bSs9SC50b1N0cmluZygpLmxlbmd0aDtpZihcIl9cIiE9PWFbbV0pdGhyb3dcIj9cIjttKys7aC5wdXNoKGIoITAsMSwhMClbMF0rXCIgW1wiK0grXCJdXCIpO2JyZWFrO2Nhc2UgXCJFXCI6YnJlYWsgYTtkZWZhdWx0OmcrPVwiP1wiK3Y7YnJlYWsgYX1lfHxcbjEhPT1oLmxlbmd0aHx8XCJ2b2lkXCIhPT1oWzBdfHwoaD1bXSk7cmV0dXJuIGM/KGcmJmgucHVzaChnK1wiP1wiKSxoKTpnKyhcIihcIitoLmpvaW4oXCIsIFwiKStcIilcIil9dmFyIGM9ISFmLl9fX2N4YV9kZW1hbmdsZTtpZihjKXRyeXt2YXIgZD1JYShhLmxlbmd0aCk7eGEoYS5zdWJzdHIoMSksZCk7dmFyIGU9SWEoNCksZz1mLl9fX2N4YV9kZW1hbmdsZShkLDAsMCxlKTtpZigwPT09SGEoZSxcImkzMlwiKSYmZylyZXR1cm4gdShnKX1jYXRjaChoKXt9ZmluYWxseXtkJiZSYShkKSxlJiZSYShlKSxnJiZSYShnKX12YXIgbT0zLHQ9e3Y6XCJ2b2lkXCIsYjpcImJvb2xcIixjOlwiY2hhclwiLHM6XCJzaG9ydFwiLGk6XCJpbnRcIixsOlwibG9uZ1wiLGY6XCJmbG9hdFwiLGQ6XCJkb3VibGVcIix3Olwid2NoYXJfdFwiLGE6XCJzaWduZWQgY2hhclwiLGg6XCJ1bnNpZ25lZCBjaGFyXCIsdDpcInVuc2lnbmVkIHNob3J0XCIsajpcInVuc2lnbmVkIGludFwiLG06XCJ1bnNpZ25lZCBsb25nXCIseDpcImxvbmcgbG9uZ1wiLHk6XCJ1bnNpZ25lZCBsb25nIGxvbmdcIixcbno6XCIuLi5cIn0scj1bXSx4PSEwLGQ9YTt0cnl7aWYoXCJPYmplY3QuX21haW5cIj09YXx8XCJfbWFpblwiPT1hKXJldHVyblwibWFpbigpXCI7XCJudW1iZXJcIj09PXR5cGVvZiBhJiYoYT11KGEpKTtpZihcIl9cIiE9PWFbMF18fFwiX1wiIT09YVsxXXx8XCJaXCIhPT1hWzJdKXJldHVybiBhO3N3aXRjaChhWzNdKXtjYXNlIFwiblwiOnJldHVyblwib3BlcmF0b3IgbmV3KClcIjtjYXNlIFwiZFwiOnJldHVyblwib3BlcmF0b3IgZGVsZXRlKClcIn1kPWIoKX1jYXRjaCh2KXtkKz1cIj9cIn0wPD1kLmluZGV4T2YoXCI/XCIpJiYhYyYmbC5YKFwid2FybmluZzogYSBwcm9ibGVtIG9jY3VycmVkIGluIGJ1aWx0aW4gQysrIG5hbWUgZGVtYW5nbGluZzsgYnVpbGQgd2l0aCAgLXMgREVNQU5HTEVfU1VQUE9SVD0xICB0byBsaW5rIGluIGxpYmN4eGFiaSBkZW1hbmdsaW5nXCIpO3JldHVybiBkfVxuZnVuY3Rpb24gU2EoKXtyZXR1cm4gVGEoKS5yZXBsYWNlKC9fX1pbXFx3XFxkX10rL2csZnVuY3Rpb24oYSl7dmFyIGI9UWEoYSk7cmV0dXJuIGE9PT1iP2E6YStcIiBbXCIrYitcIl1cIn0pfWZ1bmN0aW9uIFRhKCl7dmFyIGE9RXJyb3IoKTtpZighYS5zdGFjayl7dHJ5e3Rocm93IEVycm9yKDApO31jYXRjaChiKXthPWJ9aWYoIWEuc3RhY2spcmV0dXJuXCIobm8gc3RhY2sgdHJhY2UgYXZhaWxhYmxlKVwifXJldHVybiBhLnN0YWNrLnRvU3RyaW5nKCl9Zi5zdGFja1RyYWNlPWZ1bmN0aW9uKCl7cmV0dXJuIFNhKCl9O2Z1bmN0aW9uIFVhKGEpezA8YSU0MDk2JiYoYSs9NDA5Ni1hJTQwOTYpO3JldHVybiBhfXZhciB3LEEsQWEsVmEseSxXYSxGYSxHYSxYYT0wLG5hPTAsSmE9ITEsWWE9MCxrPTAsWmE9MCwkYT0wLG49MDtcbmZ1bmN0aW9uIG9hKCl7dmFyIGE9TWF0aC5wb3coMiwzMSk7aWYobj49YSlyZXR1cm4hMTtmb3IoO3A8PW47KWlmKHA8YS8yKXA9VWEoMipwKTtlbHNle3ZhciBiPXA7cD1VYSgoMypwK2EpLzQpO2lmKHA8PWIpcmV0dXJuITF9cD1NYXRoLm1heChwLDE2Nzc3MjE2KTtpZihwPj1hKXJldHVybiExO3RyeXtpZihBcnJheUJ1ZmZlci5CKWJ1ZmZlcj1BcnJheUJ1ZmZlci5CKGJ1ZmZlcixwKTtlbHNle3ZhciBjPXc7YnVmZmVyPW5ldyBBcnJheUJ1ZmZlcihwKX19Y2F0Y2goZCl7cmV0dXJuITF9aWYoIWFiKGJ1ZmZlcikpcmV0dXJuITE7Zi5idWZmZXI9YnVmZmVyO2YuSEVBUDg9dz1uZXcgSW50OEFycmF5KGJ1ZmZlcik7Zi5IRUFQMTY9QWE9bmV3IEludDE2QXJyYXkoYnVmZmVyKTtmLkhFQVAzMj15PW5ldyBJbnQzMkFycmF5KGJ1ZmZlcik7Zi5IRUFQVTg9QT1uZXcgVWludDhBcnJheShidWZmZXIpO2YuSEVBUFUxNj1WYT1uZXcgVWludDE2QXJyYXkoYnVmZmVyKTtmLkhFQVBVMzI9V2E9XG5uZXcgVWludDMyQXJyYXkoYnVmZmVyKTtmLkhFQVBGMzI9RmE9bmV3IEZsb2F0MzJBcnJheShidWZmZXIpO2YuSEVBUEY2ND1HYT1uZXcgRmxvYXQ2NEFycmF5KGJ1ZmZlcik7QXJyYXlCdWZmZXIuQnx8dy5zZXQoYyk7cmV0dXJuITB9dmFyIGJiO3RyeXtiYj1GdW5jdGlvbi5wcm90b3R5cGUuY2FsbC5iaW5kKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoQXJyYXlCdWZmZXIucHJvdG90eXBlLFwiYnl0ZUxlbmd0aFwiKS5nZXQpLGJiKG5ldyBBcnJheUJ1ZmZlcig0KSl9Y2F0Y2goY2Ipe2JiPWZ1bmN0aW9uKGEpe3JldHVybiBhLmJ5dGVMZW5ndGh9fWZvcih2YXIgZGI9Zi5UT1RBTF9TVEFDS3x8NTI0Mjg4MCxwPWYuVE9UQUxfTUVNT1JZfHwxNjc3NzIxNixDPTY1NTM2O0M8cHx8QzwyKmRiOylDPTE2Nzc3MjE2PkM/MipDOkMrMTY3NzcyMTY7Qz1NYXRoLm1heChDLDE2Nzc3MjE2KTtDIT09cCYmKHA9Qyk7XG5hc3NlcnQoXCJ1bmRlZmluZWRcIiE9PXR5cGVvZiBJbnQzMkFycmF5JiZcInVuZGVmaW5lZFwiIT09dHlwZW9mIEZsb2F0NjRBcnJheSYmISEobmV3IEludDMyQXJyYXkoMSkpLnN1YmFycmF5JiYhIShuZXcgSW50MzJBcnJheSgxKSkuc2V0LFwiSlMgZW5naW5lIGRvZXMgbm90IHByb3ZpZGUgZnVsbCB0eXBlZCBhcnJheSBzdXBwb3J0XCIpO3ZhciBidWZmZXI7YnVmZmVyPW5ldyBBcnJheUJ1ZmZlcihwKTt3PW5ldyBJbnQ4QXJyYXkoYnVmZmVyKTtBYT1uZXcgSW50MTZBcnJheShidWZmZXIpO3k9bmV3IEludDMyQXJyYXkoYnVmZmVyKTtBPW5ldyBVaW50OEFycmF5KGJ1ZmZlcik7VmE9bmV3IFVpbnQxNkFycmF5KGJ1ZmZlcik7V2E9bmV3IFVpbnQzMkFycmF5KGJ1ZmZlcik7RmE9bmV3IEZsb2F0MzJBcnJheShidWZmZXIpO0dhPW5ldyBGbG9hdDY0QXJyYXkoYnVmZmVyKTt5WzBdPTI1NTthc3NlcnQoMjU1PT09QVswXSYmMD09PUFbM10sXCJUeXBlZCBhcnJheXMgMiBtdXN0IGJlIHJ1biBvbiBhIGxpdHRsZS1lbmRpYW4gc3lzdGVtXCIpO1xuZi5IRUFQPXZvaWQgMDtmLmJ1ZmZlcj1idWZmZXI7Zi5IRUFQOD13O2YuSEVBUDE2PUFhO2YuSEVBUDMyPXk7Zi5IRUFQVTg9QTtmLkhFQVBVMTY9VmE7Zi5IRUFQVTMyPVdhO2YuSEVBUEYzMj1GYTtmLkhFQVBGNjQ9R2E7ZnVuY3Rpb24gZWIoYSl7Zm9yKDswPGEubGVuZ3RoOyl7dmFyIGI9YS5zaGlmdCgpO2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIGIpYigpO2Vsc2V7dmFyIGM9Yi52YjtcIm51bWJlclwiPT09dHlwZW9mIGM/dm9pZCAwPT09Yi5sYT9sLlQoXCJ2XCIsYyk6bC5UKFwidmlcIixjLFtiLmxhXSk6Yyh2b2lkIDA9PT1iLmxhP251bGw6Yi5sYSl9fX12YXIgZmI9W10sZ2I9W10saGI9W10saWI9W10samI9W10sTGE9ITE7ZnVuY3Rpb24ga2IoYSl7ZmIudW5zaGlmdChhKX1mLmFkZE9uUHJlUnVuPWtiO2YuYWRkT25Jbml0PWZ1bmN0aW9uKGEpe2diLnVuc2hpZnQoYSl9O2YuYWRkT25QcmVNYWluPWZ1bmN0aW9uKGEpe2hiLnVuc2hpZnQoYSl9O2YuYWRkT25FeGl0PWZ1bmN0aW9uKGEpe2liLnVuc2hpZnQoYSl9O1xuZnVuY3Rpb24gbGIoYSl7amIudW5zaGlmdChhKX1mLmFkZE9uUG9zdFJ1bj1sYjtmdW5jdGlvbiBEKGEsYixjKXtjPUFycmF5KDA8Yz9jOlBhKGEpKzEpO2E9T2EoYSxjLDAsYy5sZW5ndGgpO2ImJihjLmxlbmd0aD1hKTtyZXR1cm4gY31mLmludEFycmF5RnJvbVN0cmluZz1EO2YuaW50QXJyYXlUb1N0cmluZz1mdW5jdGlvbihhKXtmb3IodmFyIGI9W10sYz0wO2M8YS5sZW5ndGg7YysrKXt2YXIgZD1hW2NdOzI1NTxkJiYoZCY9MjU1KTtiLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShkKSl9cmV0dXJuIGIuam9pbihcIlwiKX07ZnVuY3Rpb24geGEoYSxiLGMpe2E9RChhLGMpO2ZvcihjPTA7YzxhLmxlbmd0aDspd1tiK2M+PjBdPWFbY10sYys9MX1mLndyaXRlU3RyaW5nVG9NZW1vcnk9eGE7ZnVuY3Rpb24gd2EoYSxiKXtmb3IodmFyIGM9MDtjPGEubGVuZ3RoO2MrKyl3W2IrKz4+MF09YVtjXX1mLndyaXRlQXJyYXlUb01lbW9yeT13YTtcbmZ1bmN0aW9uIE1hKGEsYixjKXtmb3IodmFyIGQ9MDtkPGEubGVuZ3RoOysrZCl3W2IrKz4+MF09YS5jaGFyQ29kZUF0KGQpO2N8fCh3W2I+PjBdPTApfWYud3JpdGVBc2NpaVRvTWVtb3J5PU1hO01hdGguaW11bCYmLTU9PT1NYXRoLmltdWwoNDI5NDk2NzI5NSw1KXx8KE1hdGguaW11bD1mdW5jdGlvbihhLGIpe3ZhciBjPWEmNjU1MzUsZD1iJjY1NTM1O3JldHVybiBjKmQrKChhPj4+MTYpKmQrYyooYj4+PjE2KTw8MTYpfDB9KTtNYXRoLkRlPU1hdGguaW11bDtNYXRoLmNsejMyfHwoTWF0aC5jbHozMj1mdW5jdGlvbihhKXthPWE+Pj4wO2Zvcih2YXIgYj0wOzMyPmI7YisrKWlmKGEmMTw8MzEtYilyZXR1cm4gYjtyZXR1cm4gMzJ9KTtNYXRoLnVlPU1hdGguY2x6MzI7XG52YXIgQmE9TWF0aC5hYnMsbWI9TWF0aC5jb3MsbmI9TWF0aC5zaW4sb2I9TWF0aC50YW4scGI9TWF0aC5hY29zLHFiPU1hdGguYXNpbixyYj1NYXRoLmF0YW4sc2I9TWF0aC5hdGFuMix0Yj1NYXRoLmV4cCx1Yj1NYXRoLmxvZyx2Yj1NYXRoLnNxcnQsRWE9TWF0aC5jZWlsLERhPU1hdGguZmxvb3Isd2I9TWF0aC5wb3csQ2E9TWF0aC5taW4seGI9MCx5Yj1udWxsLHpiPW51bGw7ZnVuY3Rpb24gQWIoKXt4YisrO2YubW9uaXRvclJ1bkRlcGVuZGVuY2llcyYmZi5tb25pdG9yUnVuRGVwZW5kZW5jaWVzKHhiKX1mLmFkZFJ1bkRlcGVuZGVuY3k9QWI7ZnVuY3Rpb24gQmIoKXt4Yi0tO2YubW9uaXRvclJ1bkRlcGVuZGVuY2llcyYmZi5tb25pdG9yUnVuRGVwZW5kZW5jaWVzKHhiKTtpZigwPT14YiYmKG51bGwhPT15YiYmKGNsZWFySW50ZXJ2YWwoeWIpLHliPW51bGwpLHpiKSl7dmFyIGE9emI7emI9bnVsbDthKCl9fWYucmVtb3ZlUnVuRGVwZW5kZW5jeT1CYjtcbmYucHJlbG9hZGVkSW1hZ2VzPXt9O2YucHJlbG9hZGVkQXVkaW9zPXt9O1hhPTg7bmE9WGErNDg2ODg7Z2IucHVzaCgpO1xueihbMSwwLDAsMCwxLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDI1NCwyNTUsMjU1LDEyNywwLDAsMCwwLDEyOCwwLDAsMCwyNDQsMSwwLDAsMCwwLDEsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDEwMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMjUwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsXG4wLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDI1NCwyNTUsMjU1LDEyNywwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDUwLDY0LDAsMCwxLDAsMSwwLDEzMCwwLDAsMCw1NSw2NCwwLDAsMSwwLDEsMCwxMzEsMCwwLDAsNjAsNjQsMCwwLDEsMCwxLDAsMTMyLDAsMCwwLDY1LDY0LDAsMCwyLDAsMSwwLDEzMywwLDAsMCw3MCw2NCwwLDAsMiwwLDEsMCwxMzMsMCwwLDAsNzYsNjQsMCwwLDEsMCwxLDAsMTM0LDAsMCwwLDgyLDY0LDAsMCwxLDAsMSwwLDEzNSwwLDAsMCw4OCw2NCwwLDAsMSwwLDEsMCwxMzYsMCwwLDAsOTQsNjQsMCwwLDIsMCwxLDAsMTM3LDAsMCwwLDEwNSw2NCwwLDAsMSwwLDEsMCxcbjEzOCwwLDAsMCwxMTMsNjQsMCwwLDEsMCwxLDAsMTM5LDAsMCwwLDEyMSw2NCwwLDAsMSwwLDEsMCwxNDAsMCwwLDAsMTI1LDY0LDAsMCwxLDAsMSwwLDE0MSwwLDAsMCwxMjksNjQsMCwwLDEsMCwxLDAsMTQyLDAsMCwwLDEzMyw2NCwwLDAsMSwwLDEsMCwxNDMsMCwwLDAsMTM3LDY0LDAsMCwxLDAsMSwwLDE0NCwwLDAsMCwxNDIsNjQsMCwwLDEsMCwxLDAsMTQ1LDAsMCwwLDE0Nyw2NCwwLDAsMSwwLDEsMCwxNDYsMCwwLDAsMTUyLDY0LDAsMCwxLDAsMSwwLDE0NywwLDAsMCwxNTcsNjQsMCwwLDEsMCwxLDAsMTQ4LDAsMCwwLDE0Myw5OCwwLDAsMSwwLDEsMCwxNDksMCwwLDAsMTYxLDY0LDAsMCwxLDAsMSwwLDE1MCwwLDAsMCwxNjcsNjQsMCwwLDIsMCwxLDAsMTUxLDAsMCwwLDE3Myw2NCwwLDAsMSwwLDEsMCwxNTIsMCwwLDAsMTc4LDY0LDAsMCwxLDAsMSwwLDE1MywwLDAsMCwxODMsNjQsMCwwLDEsMCwxLDAsMTU0LDAsMCwwLDE5MCw2NCwwLDAsMSwwLDEsMCwxNTUsMCwwLFxuMCwxOTUsNjQsMCwwLDEsMCwxLDAsMTU2LDAsMCwwLDIwMSw2NCwwLDAsMCwwLDEsMSwxNTcsMCwwLDAsMjA0LDY0LDAsMCwyLDAsMSwwLDE1OCwwLDAsMCwyMTQsNjQsMCwwLDIsMCwxLDAsMTU5LDAsMCwwLDIxNCw2NCwwLDAsMywwLDEsMCwxNTksMCwwLDAsMjI0LDY0LDAsMCwyLDAsMSwwLDE2MCwwLDAsMCwyMzIsNjQsMCwwLDIsMCwxLDAsMTYxLDAsMCwwLDI0MSw2NCwwLDAsMSwwLDEsMCwxNjIsMCwwLDAsMjQ5LDY0LDAsMCwxLDAsMSwwLDE2MywwLDAsMCwwLDY1LDAsMCwyLDAsMSwwLDE2NCwwLDAsMCw1LDY1LDAsMCwyLDAsMSwwLDE2NSwwLDAsMCwxMCw2NSwwLDAsMiwwLDEsMCwxNjYsMCwwLDAsMTUsNjUsMCwwLDIsMCwxLDAsMTY3LDAsMCwwLDI1LDY1LDAsMCwxLDAsMCwwLDE2OCwwLDAsMCwxMzAsMCwwLDAsMzEsNjUsMCwwLDEsMCwwLDAsMTY4LDAsMCwwLDEzMSwwLDAsMCwyMjEsMTAxLDAsMCwxLDAsMCwwLDE2OSwwLDAsMCwxMzIsMCwwLDAsNDAsNjUsMCwwLDEsXG4wLDAsMCwxNjksMCwwLDAsMTMzLDAsMCwwLDQ3LDY1LDAsMCwxLDAsMCwwLDE2OSwwLDAsMCwxMzQsMCwwLDAsNjIsNjUsMCwwLDEsMCwwLDAsMTY5LDAsMCwwLDEzNSwwLDAsMCwwLDAsMCwwLDEyOCw0OCwwLDAsMTI4LDMyLDE0LDAsMTI4LDMyLDIwMCwzLDAsMCwwLDAsMTI4LDI1NSwyNTUsMjU1LDAsMjQ4LDI1NSwyNTUsMCwwLDI1NSwyNTUsMSwwLDAsMCwwLDAsMCwwLDQ1LDE3OCwwLDAsNjYsMTc4LDAsMCw3OCwxNzgsMCwwLDkwLDE3OCwwLDAsMTE0LDE3OCwwLDAsMTI1LDE3OCwwLDAsMTQ1LDE3OCwwLDAsMTU5LDE3OCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsXG4wLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMywwLDAsMCw0NCwwLDAsMCwwLDIsMCwwLDAsMCwwLDAsMjEsMTcyLDAsMCwyMDQsMjQsMCwwLDEzMCwwLDAsMCwxMzAsMCwwLDAsMTMwLDAsMCwwLDEzMSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDEzMSwwLDAsMCwxMzAsMCwwLDAsMTMxLDAsMCwwLDEzMiwwLDAsMCwxMzIsMCwwLDAsMTMzLDAsMCwwLDEzMywwLDAsMCwxMzQsMCwwLDAsMywwLDAsMCw0NCwwLDAsMCwwLDIsMCwwLDAsMCwwLDAsMjYsMTcyLDAsMCwyMDgsMjQsMCwwLDEzMCwwLDAsMCwxMzAsMCwwLDAsMTMwLDAsMCwwLDEzMSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDEzMSwwLDAsMCwxMzAsXG4wLDAsMCwxMzEsMCwwLDAsMTMyLDAsMCwwLDEzMiwwLDAsMCwxMzMsMCwwLDAsMTMzLDAsMCwwLDEzNCwwLDAsMCwzLDAsMCwwLDQ0LDAsMCwwLDAsMiwwLDAsMCwwLDAsMCwzNiwxNzIsMCwwLDIxMiwyNCwwLDAsMTMwLDAsMCwwLDEzMCwwLDAsMCwxMzAsMCwwLDAsMTMxLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMTMxLDAsMCwwLDEzMCwwLDAsMCwxMzEsMCwwLDAsMTMyLDAsMCwwLDEzMiwwLDAsMCwxMzMsMCwwLDAsMTMzLDAsMCwwLDEzNCwwLDAsMCwzLDAsMCwwLDQ0LDAsMCwwLDAsMiwwLDAsMCwwLDAsMCw0OSwxNzIsMCwwLDIwNCwyNCwwLDAsMTMwLDAsMCwwLDEzMCwwLDAsMCwxMzAsMCwwLDAsMTMxLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMTMxLDAsMCwwLDEzMCwwLDAsMCwxMzEsMCwwLDAsMTMyLDAsMCwwLDEzMiwwLDAsMCwxMzMsMCwwLDAsMTMzLDAsMCwwLDEzNCwwLDAsMCwwLDAsMCw2NCwwLDAsMCwwLDAsMCxcbjAsMCwyMzQsMywwLDAsMCwwLDgsMCwyMzUsMywwLDAsMCwwLDAsMSwyMzYsMywwLDAsMCwwLDAsNjQsMjM3LDMsMCwwLDAsMCw2NCwwLDAsMjAyLDE1NCw1OSwwLDIwMiwxNTQsNTksMjA4LDcsMCwwLDIzMiwzLDAsMCwyNDQsMSwwLDAsMTY4LDk3LDAsMCwxMjcsMCwwLDAsMTAsMCwwLDAsODAsMTk1LDAsMCwyMzEsMywwLDAsMjMyLDMsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwxMzAsMCwwLDAsMTMxLDAsMCwwLDEzNSwwLDAsMCwxMzAsMCwwLDAsMTMxLDAsMCwwLDEzNiwwLDAsMCwxMzIsMCwwLDAsMTMxLFxuMCwwLDAsMTMzLDAsMCwwLDEzNCwwLDAsMCwxMzQsMCwwLDAsMTM3LDAsMCwwLDEzMiwwLDAsMCwxMzUsMCwwLDAsMTM2LDAsMCwwLDEzNywwLDAsMCwxMzgsMCwwLDAsMTMyLDAsMCwwLDEzOCwwLDAsMCwxMzksMCwwLDAsMTQwLDAsMCwwLDE0MSwwLDAsMCwwLDAsMCwwLDEzMiwwLDAsMCwxMzIsMCwwLDAsMTQyLDAsMCwwLDEzOSwwLDAsMCwxMzksMCwwLDAsMTQzLDAsMCwwLDE0MCwwLDAsMCwxMzMsMCwwLDAsMTQxLDAsMCwwLDE0MiwwLDAsMCwxMzUsMCwwLDAsMTQ0LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMTQwLDgxLDAsMCwxODQsODEsMCwwLDI1Miw4MSwwLDAsMjQsODIsMCwwLDUzLDgyLDAsMCw4MCw4MiwwLDAsMTA4LDgyLDAsMCwxMzMsODIsMCwwLDE1Nyw4MiwwLDAsMjIyLDgyLDAsMCwyNSw4MywwLDAsOTMsODMsMCwwLDE0MSw4MywwLDAsMjUzLDgzLDAsXG4wLDEzMiw4NCwwLDAsMTg0LDg0LDAsMCwyNTAsODQsMCwwLDM3LDg1LDAsMCw5Niw4NSwwLDAsMTM1LDg1LDAsMCwxNzksODUsMCwwLDIyMCw4NSwwLDAsMTEsODYsMCwwLDUzLDg2LDAsMCwyMjYsNzEsMCwwLDIyNiw3MSwwLDAsOTEsODYsMCwwLDE0Niw4NiwwLDAsMjA3LDg2LDAsMCw3MCw4NywwLDAsMTczLDg3LDAsMCwyMjgsODcsMCwwLDMwLDg4LDAsMCwxMzcsODgsMCwwLDIxNiw4OCwwLDAsMjUsODksMCwwLDg1LDg5LDAsMCwxMzMsODksMCwwLDIzOSw4OSwwLDAsNTYsOTAsMCwwLDYsODAsMCwwLDE3MCwwLDAsMCwxNCw4MCwwLDAsMTcxLDAsMCwwLDMyLDgwLDAsMCwxNzIsMCwwLDAsMjIsODAsMCwwLDE3MywwLDAsMCwwLDkzLDAsMCwyLDAsNCwwLDMsOTMsMCwwLDMsMSwzLDAsNyw5MywwLDAsMywxLDIsMCwxMSw5MywwLDAsNCwwLDEsMCwyMiw4MCwwLDAsOSwwLDAsMCwyMzYsOTYsMCwwLDYsMCwwLDAsOTksOTQsMCwwLDgsMCwwLDAsMTA4LDk0LDAsMCwxMCwwLDAsMCxcbjI0Myw5NiwwLDAsNSwwLDAsMCwzNyw5NCwwLDAsNywwLDAsMCwyNDksOTYsMCwwLDEwLDAsMCwwLDQsOTcsMCwwLDEwLDAsMCwwLDAsMCwwLDAsMTM2LDAsMCwwLDE0MywwLDAsMCwxMzMsMCwwLDAsMTQ0LDAsMCwwLDEzMywwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMTM3LDAsMCwwLDE0NSwwLDAsMCwxMzQsMCwwLDAsMTQ2LDAsMCwwLDEzNCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMTM1LDAsMCwwLDEzNSwwLDAsMCwxNDUsMCwwLDAsMTQ3LDAsMCwwLDE0NywwLDAsMCwxNDYsMCwwLDAsMTQ4LDAsMCwwLDEzNCwwLDAsMCwxNDksMCwwLDAsMTUwLDAsMCwwLDEzOCwwLDAsMCwxNDcsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDEzOSwwLDAsMCwxNTEsMCwwLDAsMTM1LDAsMCwwLDE1MiwwLDAsMCwxMzYsMCwwLDAsMCwwLDAsMCwyNTUsMjU1LDI1NSwyNTUsMjU1LFxuMjU1LDAsMjUyLDEsMCwwLDI0OCwxLDAsMCwyNDgsNDgsMCwwLDAsNywyMzIsMCwwLDYsMTA4LDEsMCw0NywyMzYsMSwwLDcsMTcyLDIsMCwxLDIwOCwyLDAsMywyMTYsMiwwLDEsMjM2LDIsMCwxLDI1MiwyLDAsMSw5MiwzLDAsMSwyMjAsMywwLDQsOCwxMSwwLDE0LDcyLDExLDAsNywxNDgsMTEsMCwxLDE4MCwxMSwwLDEyOSwxODgsMTEsMCwxLDIxMiwxMywwLDEsMjQ4LDEzLDAsMiwxNiwxNCwwLDEsMjgsMTQsMCwxLDIxNiwxNSwwLDgsOCwxOCwwLDYsMTA0LDIxLDAsMiwzNiwyMiwwLDEsNjAsMjIsMCw1NSw2OCwyMiwwLDIsMjA0LDIzLDAsNSwwLDI0LDAsMjIsMjQsMjQsMCwyLDEyMCwyNCwwLDIxLDQ0LDI1LDAsNCwxNjgsMjUsMCwxLDE5MiwyNSwwLDEsODAsMjcsMCwxNSw4OCwyNywwLDcsMTU2LDI3LDAsMiwyNDQsMjcsMCwxNCwwLDI4LDAsMSw2MCwyOCwwLDEsNjgsMjgsMCwyNywxOTIsMjgsMCwxMSwxNTIsMzAsMCw5LDE3MiwzMSwwLDQsMjE2LDMxLDAsNCw4OCwzMiwwLFxuOSwxMDgsMzIsMCwzLDE0OCwzMiwwLDUsMTY0LDMyLDAsMTUsMTkyLDMyLDAsMywxMDAsMzMsMCwxLDEyMCwzMywwLDI3LDE0NCwzNSwwLDQsMCwzNiwwLDMsMjMyLDM2LDAsMTgsMjQ4LDM2LDAsNyw2OCwzNywwLDQsMTM2LDM3LDAsMSwxOTIsMzcsMCwzLDQsMzgsMCwxLDI0MCwzOCwwLDcsMjQ4LDM4LDAsMiwyOCwzOSwwLDMsNDQsMzksMCwxLDkyLDM5LDAsMiwxMzYsMzksMCwyLDIwMCwzOSwwLDIsMjMyLDM5LDAsMyw0LDQwLDAsMSwyNDAsNDAsMCw1LDI0OCw0MCwwLDIsMjgsNDEsMCwzLDQ0LDQxLDAsMSw2OCw0MSwwLDIsMTkyLDQxLDAsMSwyMTIsNDEsMCwzLDQsNDIsMCwxLDI0MCw0MiwwLDgsMjQ4LDQyLDAsMywyOCw0MywwLDMsNDQsNDMsMCwyLDEzNiw0MywwLDIsMTkyLDQzLDAsMyw0LDQ0LDAsMSwyNDAsNDQsMCw3LDI0OCw0NCwwLDIsMjgsNDUsMCwzLDQ0LDQ1LDAsMiw4OCw0NSwwLDIsMTM2LDQ1LDAsMSwxOTIsNDUsMCwxLDgsNDYsMCw1LDI0OCw0NiwwLDMsMjQsXG40NywwLDQsNDAsNDcsMCwxLDkyLDQ3LDAsOCwyMDQsNDcsMCwzLDQsNDgsMCw3LDI0OCw0OCwwLDMsMjQsNDksMCw0LDQwLDQ5LDAsMiw4NCw0OSwwLDIsMTM2LDQ5LDAsMSwyNTIsNDksMCwyLDgsNTAsMCwxLDI0MCw1MCwwLDcsMjQ4LDUwLDAsMywyNCw1MSwwLDQsNDAsNTEsMCwyLDg0LDUxLDAsMiwxMzYsNTEsMCwyLDgsNTIsMCw3LDI0OCw1MiwwLDMsMjQsNTMsMCw0LDQwLDUzLDAsMSw5Miw1MywwLDIsMTM2LDUzLDAsMSwyMjgsNTMsMCwyLDgsNTQsMCwxLDQwLDU1LDAsNiw2MCw1NSwwLDEsODgsNTUsMCw4LDk2LDU1LDAsMywyMDAsNTUsMCwxLDE5Niw1NiwwLDcsMjA4LDU2LDAsMSwyNTIsNTYsMCw5LDI4LDU3LDAsMiwxMDQsNTcsMCwxLDE5Niw1OCwwLDYsMjA4LDU4LDAsMiwyMzYsNTgsMCw2LDMyLDU5LDAsMzEsNCw2MCwwLDEyLDIwOCw2MCwwLDIzLDE5Niw2MSwwLDExLDUyLDYyLDAsMzYsMTAwLDYyLDAsMTUsMjQ4LDYyLDAsMTMsNTYsNjMsMCwyMCwxNzIsNjQsMCxcbjYsNDAsNjUsMCw0LDg4LDY1LDAsMywxMjAsNjUsMCwzLDEzNiw2NSwwLDcsMTU2LDY1LDAsNCwxOTYsNjUsMCwxMiw4LDY2LDAsMSw2MCw2NiwwLDYsMTA0LDY2LDAsMSwyMzYsNjcsMCwxMiwxMTYsNzcsMCwxMCw2NCw3OCwwLDEsMCw4MCwwLDIsMTgwLDg5LDAsMSwwLDkwLDAsMiwxMDgsOTAsMCwzLDE3Miw5MSwwLDMsNzIsOTIsMCw1LDIwMCw5MiwwLDIsNzIsOTMsMCwyLDIwMCw5MywwLDM1LDIwOCw5NCwwLDQsOTYsOTUsMCwxLDExNiw5NSwwLDE1LDAsOTYsMCwxLDE2NCw5OCwwLDEyLDEyOCwxMDAsMCwxMiwxOTIsMTAwLDAsMSwwLDEwMSwwLDIsMTYsMTAxLDAsMTcsMTkyLDEwMiwwLDIsMzIsMTAzLDAsMzQsMTIwLDEwMywwLDUsOTIsMTA0LDAsMiwxMjAsMTA0LDAsMTAsODQsMTA1LDAsMjksMTI4LDEwNSwwLDEsMjUyLDEwNSwwLDcsMTI4LDEwNiwwLDYsMTYwLDEwNiwwLDUsMCwxMDgsMCwxNywyMDgsMTA4LDAsMzUsMTA0LDEwOSwwLDMsMCwxMTAsMCwxMywxMzIsMTEwLFxuMCwxNCwxNTIsMTExLDAsNCwyNDAsMTExLDAsMjAsMTQ0LDExMiwwLDUsMjM2LDExMiwwLDIsMjQ4LDExMywwLDgsMCwxMTUsMCwyNSw2NCwxMTUsMCwxLDE4MCwxMTUsMCwzLDIwMCwxMTUsMCwzOSwwLDExOSwwLDQsMjQwLDExOSwwLDEsMjQ0LDEyNiwwLDMsMjUyLDEyNiwwLDMsNTIsMTI3LDAsMywxMTYsMTI3LDAsMywxODAsMTI3LDAsMiwyNDQsMTI3LDAsMTAxLDAsMTI4LDAsNiwxNjgsMTI5LDAsNSwyMzIsMTI5LDAsNSw0MCwxMzAsMCwyNiwxMjgsMTMwLDAsMzMsNjQsMTMxLDAsMiwwLDEzMiwwLDQsMTIsMTMyLDAsMiwzMiwxMzIsMCwxLDgwLDEzMiwwLDMsODgsMTMyLDAsNiwxMjAsMTMyLDAsMSwxNDgsMTMyLDAsMSwxNTYsMTMyLDAsMSwxNjQsMTMyLDAsMSwxODQsMTMyLDAsMiwyMzIsMTMyLDAsNSwwLDEzMywwLDQsNDAsMTMzLDAsMSw2MCwxMzMsMCwxMDAsNjYsMTM0LDAsMzksMCwxNDQsMCwxMSwwLDE0NSwwLDc4LDExMiwxNDYsMCwwLDIsMTQ4LDAsMTE3LDQsMTU2LFxuMCwxODUsODMsMTU4LDAsMTAsNjQsMTczLDAsNiwxNDgsMTc5LDAsMywxODgsMTc5LDAsNCwyMjgsMTc5LDAsMiwyNDgsMTc5LDAsMSwxOTIsMTgxLDAsMSwyNTIsMTgxLDAsNzksMTI4LDE4MywwLDEyLDE5MiwxODQsMCwyNiwwLDE4NiwwLDg5LDEwOCwxODYsMCwyMTQsMCwxODgsMCwxMiwxOTIsMTkxLDAsNSwwLDE5MiwwLDI1LDMyLDE5MiwwLDcsMTY4LDE5MiwwLDIsMjE2LDE5MiwwLDMsMjQ0LDE5MiwwLDQsMTAwLDE5NCwwLDEsMTI4LDE5NCwwLDEsMjM2LDE5NSwwLDIsNjQsMTk4LDAsMTAsODgsMTk4LDAsMzYsMCwxOTksMCwzMSwwLDIwMCwwLDMwLDE2OCwyMDAsMCwxLDY0LDIwMSwwLDMyLDEyOCwyMDEsMCwzOSw0MCwyMDIsMCw2MywwLDIwMywwLDAsMSwyMDQsMCw2NCwwLDU1LDEsNTUsNjQsMTQ2LDIsMiwyNDgsMTQ3LDIsMyw1MiwxNTIsMiwxNiwxODgsMTUzLDIsMSwxMjQsMTU0LDIsOCwxOTIsMTU1LDIsMjMsMCwxNTYsMiwyLDEyOCwxNTYsMiwyLDM2LDE1OCwyLDEsXG44LDE2MCwyLDEsMjQsMTYwLDIsMSw0NCwxNjAsMiw5LDE0MCwxNjAsMiw0LDIxNiwxNjAsMiw0LDIwOCwxNjEsMiwyLDAsMTYyLDIsMTcsMjA4LDE2MiwyLDIsNTYsMTYzLDIsMTgsMTI4LDE2MywyLDMsMjI0LDE2MywyLDEwLDE1MiwxNjQsMiwxMywyOCwxNjUsMiwxLDEyNCwxNjUsMiw0LDAsMTY2LDIsMjcsMjA0LDE2NiwyLDIsMTIwLDE2NywyLDE0LDE2NCwxNjgsMiwxLDEyLDE2OSwyLDIsNDgsMTY5LDIsNCwxMTIsMTY5LDIsMywyMjAsMTY5LDIsMSwyMzYsMTY5LDIsMSwxOTIsMTcwLDIsMywyMDAsMTcwLDIsMiwyMjAsMTcwLDIsMiwyNDgsMTcwLDIsMSw0LDE3MSwyLDIsMTIwLDE3MSwyLDcsMTcyLDE3MSwyLDIsMjEyLDE3MSwyLDExLDE0MCwxNzUsMiwxLDAsOTYsMywyLDI1MiwxMDksMywyLDI1MiwxMTEsMywxLDI1MiwxMjcsMywxLDEyMCwyMzYsMywxLDE2NCwyMzYsMywxNiwyMDAsMjM4LDMsMiwyNDgsMjQ0LDMsMiwyNDAsMjQ3LDMsMjYsMCwyNDgsMyw3LDEyOCwyNDgsXG4zLDM1LDE5MiwyNDgsMywxOSw4MCwyNDksMyw0LDE2MCwyNDksMywxLDI1MiwyNTEsMywxNSw0LDI1MiwzLDcsMTA0LDI1MiwzLDYsMjM2LDI1MiwzLDExLDEwOCwyNTMsMyw3LDEyOCwyNTUsMyw3LDE2MCwyNTUsMyw1LDIyOCwyNTUsMywzLDAsNCw0LDksMjIwLDQsNCwxNywyMjgsNSw0LDEyLDY0LDYsNCw0Niw2NCw3LDQsMSwxMjQsMTQsNCwxLDY0LDE1LDQsMSw5MiwzMyw0LDEsMTI0LDM2LDQsMSwyNTIsMzYsNCwzLDQsNDAsNCwyLDIwLDQwLDQsNCw0OCw0MCw0LDMsMjI0LDQwLDQsMSwyNTIsNDAsNCw5LDY0LDQxLDQsMSwyNTIsNDEsNCw3LDIyOCw0NCw0LDMsMCw2NCw0LDIyLDIyNCw2NCw0LDMsMCw2Niw0LDE4LDE5Miw2Niw0LDMsMCw2OCw0LDE0LDE1Niw2OCw0LDQsMCw2OSw0LDMsMCw3MCw0LDE0LDIwNCw3MCw0LDQsMjAsNzEsNCwxMywxNzIsOTAsNCw0LDE5MiwxNDUsNCw0Niw2OCwxODksNSw0LDYwLDE5MCw1LDI0NiwwLDY0LDcsMzksMCw2OCw3LDE4MSwxNjQsNjgsXG43LDcwLDAsNzIsNyw4NywwLDc2LDcsMSw0LDkxLDcsMSwxMDgsOTEsNywxLDIzNiw5MSw3LDEsODQsOTIsNywxLDIxMiw5Miw3LDEsNjAsOTMsNywxLDE4OCw5Myw3LDEsMzYsOTQsNywxLDE2NCw5NCw3LDEsMTIsOTUsNywyLDE5MiwxODcsNyw0NCwwLDE5Miw3LDEwMCwxOTIsMTkyLDcsMTUsMTI4LDE5NCw3LDE0LDE5NiwxOTQsNywxNSw0LDE5NSw3LDE1LDY4LDE5NSw3LDMxLDY0LDE5Niw3LDYwLDE5MiwxOTYsNyw0MywxOTIsMTk3LDcsMjksMTUyLDE5OSw3LDQzLDY0LDIwMCw3LDksMCwyMDEsNywyLDY0LDIwMSw3LDMzLDAsMjA0LDcsNiwxOTIsMjA0LDcsNzAsMjIwLDIwNCw3LDIwLDAsMjA2LDcsMzcsMTI4LDIwNiw3LDUsMjQsMjA3LDcsMTcsMTI4LDIwNyw3LDYzLDAsMjA4LDcsMSwwLDIwOSw3LDE4Miw4LDIwOSw3LDQsMjI4LDIxMSw3LDYyLDAsMjEyLDcsNCwwLDIxMyw3LDI0LDY0LDIxMyw3LDcwLDIzNiwyMTUsNywxMSwyMCwyMTcsNyw3MCwwLDIxOCw3LDExNiwwLDIyMCxcbjcsMSw0LDAsNTYsOTYsMTI4LDAsNTYsMjQwLDAsNCw1NiwwLDAsMCwwLDEsMCwwLDAsMTUzLDAsMCwwLDEzNSwwLDAsMCwxMzYsMCwwLDAsMTQwLDAsMCwwLDE0OCwwLDAsMCwxNDksMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNTQsMTAyLDAsMCwwLDAsMiwwLDYxLDEwMiwwLDAsMCwwLDQsMCwwLDAsMCwwLDAsMCwwLDAsMzcsMTAyLDAsMCwxLDAsMCwwLDQwLDEwMiwwLDAsMiwwLDAsMCw0MywxMDIsMCwwLDYsMCwwLDAsNDcsMTAyLDAsMCwxMjgsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsMCwwLDAsMCwxNTQsMCwwLDAsMTM2LDAsMCwwLDE0MSwwLDAsMCwxMzAsMCwwLDAsMTU1LDAsMCwwLDE0MiwwLDAsMCwxNzQsMCwwLDAsMTMwLDAsMCwwLDEzMSwwLDAsMCwxMzcsMCwwLDAsMTM4LDAsMCwwLDE1NiwwLDAsMCwxMzksMCwwLDAsMTUwLFxuMCwwLDAsMTU3LDAsMCwwLDE1OCwwLDAsMCwxNTksMCwwLDAsMTQwLDAsMCwwLDAsMCwwLDAsOSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMTQ1LDEzMywwLDAsMSwwLDAsMCwyMjYsNzcsMCwwLDEsMCwwLDAsMiwwLDEsMCwwLDAsMCwwLDAsMCwwLDAsMTc1LDAsMCwwLDAsMCwwLDAsMTg1LDEyMCwwLDAsMCwwLDAsMCwyLDAsMSwwLDAsMCwwLDAsMCwwLDAsMCwxNzYsMCwwLDAsMCwwLDAsMCwxNzUsMTIwLDAsMCwwLDAsMCwwLDEsMCwxLDAsMCwwLDAsMCwwLDAsMCwwLDE3NywwLDAsMCwwLDAsMCwwLDE1NSwxMjAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDE5NSw3OCwwLDAsMjQ4LDEyMCwwLDAsNSwxMjEsMCwwLDAsMCwwLDAsMTgsMTIxLDAsMCwwLDAsMCwwLDEsMCwxLDAsMCwwLDAsMCwwLDAsMCwwLDE3OCwwLDAsMCwwLDAsMCwwLDg1LDEyMiwwLDAsMCwwLDAsMCwzLDAsMSwwLDAsMCwwLFxuMCwwLDAsMCwwLDE3OSwwLDAsMCwwLDAsMCwwLDIxMCwxMjIsMCwwLDAsMCwwLDAsMjMsMTMwLDAsMCwwLDAsMCwwLDgsMCwwLDAsMjQ3LDEyNSwwLDAsMSwxLDAsMCwwLDAsMCwwLDM4LDEzMCwwLDAsMiwwLDAsMCwwLDAsMTYsMCw1NCwxMzAsMCwwLDMsMCwwLDAsMCwwLDAsMCwxMTQsMTI1LDAsMCw0LDEsMCwwLDAsMCwwLDAsMjMsMTI2LDAsMCw1LDAsMCwwLDAsMCwwLDAsNjcsMTMwLDAsMCw2LDAsMCwwLDAsMCwwLDAsODcsMTMwLDAsMCwyLDAsMCwwLDAsMCwwLDMyLDEwMywxMzAsMCwwLDIsMCwwLDAsMTYsMCwwLDAsMTI0LDEzMCwwLDAsNywwLDAsMCwwLDAsMCwwLDEzOSwxMzAsMCwwLDgsMCwwLDAsMCwwLDAsMCwxNTUsMTMwLDAsMCwyLDAsMCwwLDEyOCwwLDAsMCwxNjksMTMwLDAsMCwwLDIsMCwwLDE1LDAsMCwwLDE4MiwxMzAsMCwwLDEwLDEsMCwwLDAsMCwwLDAsMTk2LDEzMCwwLDAsMTEsMSwwLDAsMCwwLDAsMCwyMTUsMTMwLDAsMCwyLDAsMCwwLDAsMCwwLDIsMjM0LFxuMTMwLDAsMCwyLDAsMCwwLDAsMSwwLDAsMTI2LDEyNywwLDAsMTIsMCwwLDAsMCwwLDAsMCwxLDEzMSwwLDAsMTMsMSwwLDAsMCwwLDAsMCwxOSwxMzEsMCwwLDE0LDEsMCwwLDAsMCwwLDAsMzYsMTMxLDAsMCwyLDAsMCwwLDAsMCw4LDAsNDksMTMxLDAsMCwwLDIsMCwwLDAsMCwwLDAsNjQsMTMxLDAsMCwyLDAsMCwwLDQsMCwwLDAsODIsMTMxLDAsMCwyLDAsMCwwLDgsMCwwLDAsOTIsMTMxLDAsMCwyLDAsMCwwLDAsMzIsMCwwLDExNywxMzEsMCwwLDE1LDEsMCwwLDAsMCwwLDAsMTM2LDEzMSwwLDAsMTYsMSwwLDAsMCwwLDAsMCwxNDcsMTMxLDAsMCwxNywxLDAsMCwwLDAsMCwwLDE1OCwxMzEsMCwwLDE2LDEsMCwwLDEsMCwwLDAsMjIxLDEyNiwwLDAsMTgsMSwwLDAsMCwwLDAsMCwyMTUsMTI1LDAsMCwxOSwxLDAsMCwwLDAsMCwwLDIyOCwxMjUsMCwwLDIwLDAsMCwwLDAsMCwwLDAsMTcwLDEzMSwwLDAsMiwwLDAsMCwwLDEyOCwwLDAsMjAyLDEyNSwwLDAsMjIsMCwwLDAsMCwwLFxuMCwwLDE4OSwxMzEsMCwwLDIzLDEsMCwwLDAsMCwwLDAsMzUsMTI2LDAsMCwyNCwwLDAsMCwwLDAsMCwwLDIwNCwxMzEsMCwwLDIzLDEsMCwwLDAsMCwwLDAsMTYxLDEyNSwwLDAsMjUsMCwwLDAsMCwwLDAsMCwyMTUsMTMxLDAsMCwyLDAsMCwwLDAsMCwwLDQsMjI2LDEzMSwwLDAsMTgsMSwwLDAsMCwwLDAsMCwyMzgsMTMxLDAsMCwyLDAsMCwwLDAsNjQsMCwwLDI1NSwxMzEsMCwwLDIsMCwwLDAsMCwwLDQsMCwxOCwxMzIsMCwwLDIsMCwwLDAsMCwwLDIsMCw0NCwxMzIsMCwwLDAsMCwwLDAsMSwwLDAsMCwxNzEsMTI1LDAsMCwyNiwwLDAsMCwwLDAsMCwwLDU5LDEzMiwwLDAsMiwwLDAsMCw2NCwwLDAsMCw3OCwxMzIsMCwwLDI3LDAsMCwwLDAsMCwwLDAsMjQ0LDEyNywwLDAsMjgsMCwwLDAsMCwwLDAsMCw5MiwxMzIsMCwwLDI5LDEsMCwwLDAsMCwwLDAsMTAyLDEyNiwwLDAsMzAsMSwwLDAsMCwwLDAsMCw5OCwxMzIsMCwwLDMxLDEsMCwwLDAsMCwwLDAsNDUsMTI2LDAsMCwzMiwwLFxuMCwwLDAsMCwwLDAsNTYsMTI2LDAsMCwzMywwLDAsMCwwLDAsMCwwLDQsMTI4LDAsMCwzNCwwLDAsMCwwLDAsMCwwLDEwOSwxMzIsMCwwLDAsMCwwLDAsNiwwLDAsMCwyMTcsMTI3LDAsMCwzNSwwLDAsMCwwLDAsMCwwLDEyMiwxMzIsMCwwLDM2LDEsMCwwLDAsMCwwLDAsMTM3LDEzMiwwLDAsMiwwLDAsMCwwLDgsMSwwLDEyMSwxMjksMCwwLDc2LDEyOSwwLDAsMTUzLDEyOSwwLDAsMTU4LDEyOSwwLDAsMTY2LDEyOSwwLDAsOTAsMTI5LDAsMCwyMjUsMTI4LDAsMCwxMzQsMTI5LDAsMCwxNDAsMTI5LDAsMCwxNDYsMTI5LDAsMCwxMTUsMTI5LDAsMCwxMjEsMTI5LDAsMCw3NiwxMjksMCwwLDksOTQsMCwwLDEyNSwxMjksMCwwLDEzMCwxMjksMCwwLDM4LDEyOSwwLDAsNzYsMTI5LDAsMCw5MywxMjksMCwwLDEwMCwxMjksMCwwLDEwNywxMjksMCwwLDg2LDEyOSwwLDAsODgsMTI5LDAsMCw5MCwxMjksMCwwLDM4LDEyOSwwLDAsNzYsMTI5LDAsMCw4MSwxMjksMCwwLDM4LDEyOSwwLDAsXG43NiwxMjksMCwwLDM1LDEyOSwwLDAsMzgsMTI5LDAsMCwyMjUsMTI4LDAsMCw0MiwxMjksMCwwLDQ3LDEyOSwwLDAsNTAsMTI5LDAsMCw2MCwxMjksMCwwLDcwLDEyOSwwLDAsMjI1LDEyOCwwLDAsMTY5LDk2LDAsMCwyMzEsMTI4LDAsMCwyMzgsMTI4LDAsMCwzMCwxMjgsMCwwLDEsMCwwLDAsMzUsMTI4LDAsMCwxLDAsMCwwLDQxLDEyOCwwLDAsMiwwLDAsMCw1MCwxMjgsMCwwLDMsMCwwLDAsNTksMTI4LDAsMCwyLDAsMCwwLDY3LDEyOCwwLDAsMywwLDAsMCw3NSwxMjgsMCwwLDAsMCwwLDAsODIsMTI4LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwxMiwxMjgsMCwwLDE0Myw5OCwwLDAsMTcsMTI4LDAsMCwwLDEzMCwwLDAsNywxMzAsMCwwLDE1LDEzMCwwLDAsMjA4LDEyNywwLDAsNDcsMTAyLDAsMCwxOSwxMzAsMCwwLDcwLDEyOSwwLDAsNjQsMCwwLDAsOTcsMTI4LDAsMCw2NiwwLDAsMCw5MiwxMjgsMCwwLDY1LDAsMCwwLDI1LDEzNiwwLDAsNjcsMCwwLDAsMjQ4LDExNixcbjAsMCwzLDAsMCwwLDI0NCwxMTYsMCwwLDMsMCwwLDAsMjI2LDcxLDAsMCwxOSwxNDYsMCwwLDI1LDE0NiwwLDAsMzAsMTQ2LDAsMCwzNSwxNDYsMCwwLDE1MSwxNDYsMCwwLDE1NywxNDYsMCwwLDE2NSwxNDYsMCwwLDIxNiwxNTQsMCwwLDIyMSwxNTQsMCwwLDIyOCwxNTQsMCwwLDIzMSwxNTQsMCwwLDIzNCwxNTQsMCwwLDIzNywxNTQsMCwwLDI0MCwxNTQsMCwwLDI0MywxNTQsMCwwLDI1MSwxNTQsMCwwLDI0Myw5NiwwLDAsNDIsMTI5LDAsMCw0LDE1NSwwLDAsMTQ4LDE2MywwLDAsMTU3LDE2MywwLDAsMTY0LDE2MywwLDAsMTcwLDE2MywwLDAsMjUzLDE2MywwLDAsNywxNjQsMCwwLDE4LDE2NCwwLDAsMzAsMTY0LDAsMCw0MSwxNjQsMCwwLDUyLDE2NCwwLDAsNjMsMTY0LDAsMCw2OCwxNjQsMCwwLDczLDE2NCwwLDAsODQsMTY0LDAsMCw5NiwxNjQsMCwwLDEwMywxNjQsMCwwLDExMSwxNjQsMCwwLDExOSwxNjQsMCwwLDEyNCwxNjQsMCwwLDEzMCwxNjQsMCwwLDE0NCwxNjQsMCxcbjAsMTUwLDE2NCwwLDAsMTYwLDE2NCwwLDAsMTY1LDE2NCwwLDAsMTY5LDE2NCwwLDAsMTc0LDE2NCwwLDAsMTc3LDE2NCwwLDAsMTgzLDE2NCwwLDAsMTkwLDE2NCwwLDAsMTk3LDE2NCwwLDAsMjA0LDE2NCwwLDAsMjExLDE2NCwwLDAsMjE0LDE2NCwwLDAsMjE4LDE2NCwwLDAsMjI5LDE2NCwwLDAsMjM4LDE2NCwwLDAsMjQ0LDE2NCwwLDAsMjU0LDE2NCwwLDAsOCwxNjUsMCwwLDE1LDE2NSwwLDAsMjMsMTY1LDAsMCwyNiwxNjUsMCwwLDI5LDE2NSwwLDAsMzIsMTY1LDAsMCwzNSwxNjUsMCwwLDM4LDE2NSwwLDAsNDEsMTY1LDAsMCw1MSwxNjUsMCwwLDU4LDE2NSwwLDAsNjQsMTY1LDAsMCw3NCwxNjUsMCwwLDg1LDE2NSwwLDAsODksMTY1LDAsMCw5OCwxNjUsMCwwLDEwNywxNjUsMCwwLDExNCwxNjUsMCwwLDEyNCwxNjUsMCwwLDEzMSwxNjUsMCwwLDEzNiwxNjUsMCwwLDE0MywxNjUsMCwwLDE1NCwxNjUsMCwwLDE1OSwxNjUsMCwwLDE2NiwxNjUsMCwwLDE3MiwxNjUsMCwwLFxuMTc4LDE2NSwwLDAsMTg0LDE2NSwwLDAsMTkwLDE2NSwwLDAsMjAxLDE2NSwwLDAsMjEyLDE2NSwwLDAsMjIwLDE2NSwwLDAsMjI5LDE2NSwwLDAsMjM1LDE2NSwwLDAsMjQ1LDE2NSwwLDAsMiwxNjYsMCwwLDEzLDE2NiwwLDAsMTksMTY2LDAsMCwyNCwxNjYsMCwwLDMxLDE2NiwwLDAsNDQsMTY2LDAsMCw1NSwxNjYsMCwwLDYwLDE2NiwwLDAsNjgsMTY2LDAsMCw3NCwxNjYsMCwwLDgxLDE2NiwwLDAsODYsMTY2LDAsMCw5NSwxNjYsMCwwLDEwMCwxNjYsMCwwLDEwOSwxNjYsMCwwLDExNCwxNjYsMCwwLDExOSwxNjYsMCwwLDEyNSwxNjYsMCwwLDEzMywxNjYsMCwwLDE0MywxNjYsMCwwLDE1MSwxNjYsMCwwLDE2MSwxNjYsMCwwLDE3MCwxNjYsMCwwLDE3NywxNjYsMCwwLDE5MCwxNjYsMCwwLDE5NSwxNjYsMCwwLDIwNywxNjYsMCwwLDIxNSwxNjYsMCwwLDIyMiwxNjYsMCwwLDIzMCwxNjYsMCwwLDIzOSwxNjYsMCwwLDI1MCwxNjYsMCwwLDAsMTY3LDAsMCwxMSwxNjcsMCwwLDIxLFxuMTY3LDAsMCwzMSwxNjcsMCwwLDQwLDE2NywwLDAsNTAsMTY3LDAsMCw2NCwxNjcsMCwwLDc4LDE2NywwLDAsODksMTY3LDAsMCwxMDIsMTY3LDAsMCwxMTMsMTY3LDAsMCwxMTksMTY3LDAsMCwxMzEsMTY3LDAsMCwxNDAsMTY3LDAsMCwxNDksMTY3LDAsMCwxNTYsMTY3LDAsMCwxNjYsMTY3LDAsMCwxNzMsMTY3LDAsMCwxODQsMTY3LDAsMCwxOTgsMTY3LDAsMCwyMDksMTY3LDAsMCwyMTYsMTY3LDAsMCwyMjQsMTY3LDAsMCwyMzAsMTY3LDAsMCwyMzgsMTY3LDAsMCwyNTEsMTY3LDAsMCw1LDE2OCwwLDAsMTUsMTY4LDAsMCwyMCwxNjgsMCwwLDI5LDE2OCwwLDAsMzcsMTY4LDAsMCw0MywxNjgsMCwwLDQ4LDE2OCwwLDAsNjAsMTY4LDAsMCw3MiwxNjgsMCwwLDg0LDE2OCwwLDAsOTYsMTY4LDAsMCwxMDksMTY4LDAsMCwxMTksMTY4LDAsMCwxMjksMTY4LDAsMCwxNDEsMTY4LDAsMCwxNTMsMTY4LDAsMCwxNjMsMTY4LDAsMCwxNjksMTY4LDAsMCwxNzksMTY4LDAsMCwxODYsMTY4LFxuMCwwLDE5OCwxNjgsMCwwLDIwNywxNjgsMCwwLDIxNSwxNjgsMCwwLDIyNCwxNjgsMCwwLDIzMSwxNjgsMCwwLDI0MSwxNjgsMCwwLDI0OCwxNjgsMCwwLDAsMTY5LDAsMCw5LDE2OSwwLDAsMTUsMTY5LDAsMCwyMywxNjksMCwwLDMxLDE2OSwwLDAsNDEsMTY5LDAsMCw1MCwxNjksMCwwLDYxLDE2OSwwLDAsNjYsMTY5LDAsMCwxNTAsMTY5LDAsMCwxNjMsMTY5LDAsMCwwLDAsMCwwLDE5OSwxNjksMCwwLDIyNCwxNjksMCwwLDI1NSwxNjksMCwwLDE4LDE3MCwwLDAsMTg0LDk3LDAsMCw0MywxNzAsMCwwLDgwLDE3MCwwLDAsOTIsMTcwLDAsMCwxMDcsMTcwLDAsMCwxNDAsMTcwLDAsMCwxNTgsMTcwLDAsMCwxODMsMTcwLDAsMCwyMTIsMTcwLDAsMCwyMjksMTcwLDAsMCw3MywxNTcsMCwwLDI1MCw3MCwwLDAsMjUyLDE3MCwwLDAsMTQsMTcxLDAsMCwzMiwxNzEsMCwwLDcxLDE3MSwwLDAsMTAyLDE3MSwwLDAsMTIzLDE3MSwwLDAsMTU1LDE3MSwwLDAsMTg5LDE3MSwwLDAsMTUxLDAsXG4wLDAsMTUyLDAsMCwwLDE1MywwLDAsMCwxLDAsMCwwLDE2MCwwLDAsMCwxMzcsMCwwLDAsMTM4LDAsMCwwLDE0MywwLDAsMCwxNTQsMCwwLDAsMTU1LDAsMCwwLDE1NiwwLDAsMCwxNTcsMCwwLDAsMTU4LDAsMCwwLDE0NCwwLDAsMCwxNjEsMCwwLDAsMTYyLDAsMCwwLDAsMCwwLDAsMTM2LDAsMCwwLDE0MSwwLDAsMCwxNTksMCwwLDAsMTM5LDAsMCwwLDEzNywwLDAsMCw5NiwxNzIsMCwwLDE0NSwwLDAsMCwwLDAsMCwwLDU5LDE3MiwwLDAsMTYzLDAsMCwwLDAsMCwwLDAsMjI2LDEwMSwwLDAsMTYwLDAsMCwwLDAsMCwwLDAsMTAxLDE3MiwwLDAsMTYxLDAsMCwwLDAsMCwwLDAsMTA4LDE3MiwwLDAsMTYyLDAsMCwwLDAsMCwwLDAsMTEzLDE3MiwwLDAsMTYzLDAsMCwwLDAsMCwwLDAsMTE5LDE3MiwwLDAsMTY0LDAsMCwwLDAsMCwwLDAsMTI5LDE3MiwwLDAsMTQ2LDAsMCwwLDAsMCwwLDAsMTM1LDE3MiwwLDAsMTQ3LDAsMCwwLDAsMCwwLDAsMTQwLDE3MiwwLDAsMCwwLDAsMCwwLDAsXG4wLDAsMTQ2LDE3MiwwLDAsMCwwLDAsMCwwLDAsMCwwLDE1NCwxNzIsMCwwLDE0OCwwLDAsMCwwLDAsMCwwLDE2MCwxNzIsMCwwLDAsMCwwLDAsMCwwLDAsMCwxNjcsMTcyLDAsMCwwLDAsMCwwLDAsMCwwLDAsMTc2LDE3MiwwLDAsMTY1LDAsMCwwLDAsMCwwLDAsMTgzLDE3MiwwLDAsMCwwLDAsMCwwLDAsMCwwLDE5MywxNzIsMCwwLDE2NCwwLDAsMCwwLDAsMCwwLDIwMCwxNzIsMCwwLDE2NiwwLDAsMCwwLDAsMCwwLDIxNCwxNzIsMCwwLDE2NywwLDAsMCwwLDAsMCwwLDIyMCwxNzIsMCwwLDE2NSwwLDAsMCwwLDAsMCwwLDIyNiwxNzIsMCwwLDE0OSwwLDAsMCwwLDAsMCwwLDIzMywxNzIsMCwwLDEzMCwwLDAsMCwwLDAsMCwwLDI0MSwxNzIsMCwwLDEzNywwLDAsMCwwLDAsMCwwLDI0NiwxNzIsMCwwLDE2OCwwLDAsMCwwLDAsMCwwLDI1MywxNzIsMCwwLDAsMCwwLDAsMCwwLDAsMCw0LDE3MywwLDAsMTMxLDAsMCwwLDAsMCwwLDAsMTYsMTczLDAsMCwxNTAsMCwwLDAsMCwwLDAsMCxcbjI1LDE3MywwLDAsMTY5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDEyMiwxNzMsMCwwLDEzMSwxNzMsMCwwLDE0MCwxNzMsMCwwLDE0NSwxNzMsMCwwLDMsMCwwLDAsMTY2LDAsMCwwLDEzNywwLDAsMCwxMzgsMCwwLDAsMTQzLDAsMCwwLDE1NCwwLDAsMCwxNTUsMCwwLDAsMTcwLDAsMCwwLDE3MSwwLDAsMCwxNzIsMCwwLDAsMTQ0LDAsMCwwLDE2MSwwLDAsMCwxNjIsMCwwLDAsMCwwLDAsMCwxMzYsMCwwLDAsMTQxLDAsMCwwLDE1OSwwLDAsMCwxMzksMCwwLDAsMTM3LDAsMCwwLDAsMCwwLDAsMywwLDAsMCwxNjcsMCwwLDAsMTM3LDAsMCwwLDEzOCwwLDAsMCwxNDMsMCwwLDAsMTU0LDAsMCwwLDE1NSwwLDAsMCwxNzMsMCwwLDAsMTc0LDAsMCwwLDE3NSwwLDAsMCwxNDQsMCwwLDAsMTYxLDAsMCwwLDE2MiwwLDAsMCwxNDAsMCwwLDAsMTM2LDAsMCwwLDE0MSwwLDAsMCwxNTksMCwwLDAsMTM5LDAsMCwwLDEzNywwLDAsMCwwLDAsMCwwLDEsMCwxLDMyLDAsMCwwLDAsMCxcbjAsMCwwLDE4MCwwLDAsMCwwLDAsMCwwLDE3LDE3NSwwLDAsMCwwLDAsMCwxLDAsMSwzMiwwLDAsMCwwLDAsMCwwLDAsMTgxLDAsMCwwLDAsMCwwLDAsNDMsMTc1LDAsMCwwLDAsMCwwLDEsMCwxLDEyLDAsMCwwLDAsMCwwLDAsMCwxODIsMCwwLDAsMCwwLDAsMCw2OCwxNzUsMCwwLDAsMCwwLDAsMiwwLDEsMTIsMCwwLDAsMCwwLDAsMCwwLDE4MiwwLDAsMCwwLDAsMCwwLDc3LDE3NSwwLDAsMCwwLDAsMCwxLDAsMSwxMiwwLDAsMCwwLDAsMCwwLDAsMTgyLDAsMCwwLDAsMCwwLDAsODgsMTc1LDAsMCwwLDAsMCwwLDEsMCwxLDgsMSwwLDAsMCwwLDAsMCwwLDE4MywwLDAsMCwwLDAsMCwwLDk1LDE3NSwwLDAsMCwwLDAsMCwyLDAsMSw4LDEsMCwwLDAsMCwwLDAsMCwxODMsMCwwLDAsMCwwLDAsMCw5NSwxNzUsMCwwLDAsMCwwLDAsMSwwLDEsOCwyLDAsMCwwLDAsMCwwLDAsMTgzLDAsMCwwLDAsMCwwLDAsMTAxLDE3NSwwLDAsMCwwLDAsMCwyLDAsMSw4LDIsMCwwLDAsMCwwLDAsMCwxODMsXG4wLDAsMCwwLDAsMCwwLDEwMSwxNzUsMCwwLDAsMCwwLDAsMSwwLDEsOCwzLDAsMCwwLDAsMCwwLDAsMTgzLDAsMCwwLDAsMCwwLDAsMTA3LDE3NSwwLDAsMCwwLDAsMCwyLDAsMSw4LDMsMCwwLDAsMCwwLDAsMCwxODMsMCwwLDAsMCwwLDAsMCwxMDcsMTc1LDAsMCwwLDAsMCwwLDI1NSwwLDMzLDgsMCwwLDAsMCwwLDAsMCwwLDE4NCwwLDAsMCwwLDAsMCwwLDEyNCwxMzksMCwwLDAsMCwwLDAsMCwwLDMzLDgsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwxMjQsMTM5LDAsMCwwLDAsMCwwLDEsMCwzMywxNiwwLDAsMCwwLDAsMCwwLDAsMTg1LDAsMCwwLDE0MiwwLDAsMCwxMjQsMTM5LDAsMCwwLDAsMCwwLDI1NSwwLDMzLDgsMSwwLDAsMCwwLDAsMCwwLDE4NCwwLDAsMCwwLDAsMCwwLDEyOCwxMzksMCwwLDAsMCwwLDAsMCwwLDMzLDgsMSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwxMjgsMTM5LDAsMCwwLDAsMCwwLDEsMCwzMywxNiwxLDAsMCwwLDAsMCwwLDAsXG4xODUsMCwwLDAsMTQyLDAsMCwwLDEyOCwxMzksMCwwLDAsMCwwLDAsMSwwLDEyOSw4LDAsMCwwLDAsMCwwLDAsMCwxODYsMCwwLDAsMCwwLDAsMCwxMTIsMTc1LDAsMCwwLDAsMCwwLDEsMCw2NSw4LDAsMCwwLDAsMCwwLDAsMCwxODcsMCwwLDAsMCwwLDAsMCwxMTksMTc1LDAsMCwwLDAsMCwwLDIsMCwxLDgsMCwwLDAsMCwwLDAsMCwwLDE4OCwwLDAsMCwwLDAsMCwwLDEyNiwxNzUsMCwwLDAsMCwwLDAsMjU1LDAsMSw4LDAsMCwwLDAsMCwwLDAsMCwxODksMCwwLDAsMCwwLDAsMCwxMzIsMTc1LDAsMCwwLDAsMCwwLDEsMCwxLDgsMCwwLDAsMCwwLDAsMCwwLDE5MCwwLDAsMCwwLDAsMCwwLDEzOSwxNzUsMCwwLDAsMCwwLDAsMjU1LDAsMSw4LDAsMCwwLDAsMCwwLDAsMCwxOTEsMCwwLDAsMCwwLDAsMCwxNDcsMTc1LDAsMCwwLDAsMCwwLDEsMCwxLDgsMCwwLDAsMCwwLDAsMCwwLDE5MiwwLDAsMCwwLDAsMCwwLDE1MiwxNzUsMCwwLDAsMCwwLDAsMSwwLDEsOCwwLDAsMCwwLDAsMCxcbjAsMCwxOTMsMCwwLDAsMCwwLDAsMCwxNTYsMTc1LDAsMCwwLDAsMCwwLDIsMCwxLDgsMCwwLDAsMCwwLDAsMCwwLDE5MywwLDAsMCwwLDAsMCwwLDE1NiwxNzUsMCwwLDAsMCwwLDAsMSwwLDEsOCwwLDAsMCwwLDAsMCwwLDAsMTk0LDAsMCwwLDAsMCwwLDAsMTYyLDE3NSwwLDAsMCwwLDAsMCwxLDAsMSw4LDAsMCwwLDAsMCwwLDAsMCwxOTUsMCwwLDAsMCwwLDAsMCwxNjgsMTc1LDAsMCwwLDAsMCwwLDEsMCwxLDgsMCwwLDAsMCwwLDAsMCwwLDE5NiwwLDAsMCwwLDAsMCwwLDE3NCwxNzUsMCwwLDAsMCwwLDAsMiwwLDEsMTAsMCwwLDAsMCwwLDAsMCwwLDE4MiwwLDAsMCwwLDAsMCwwLDE3OCwxNzUsMCwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsMCwwLDAsMCwwLDAsMTk3LDAsMCwwLDAsMCwwLDAsMTg1LDE3NSwwLDAsMCwwLDAsMCwxLDAsMSwwLDAsMCwwLDAsMCwwLDAsMCwxOTgsMCwwLDAsMCwwLDAsMCwxOTIsMTc1LDAsMCwwLDAsMCwwLDIsMCwzMyw4LDAsMCwwLDAsMCwwLDAsMCxcbjE5OSwwLDAsMCwwLDAsMCwwLDIwMywxNzUsMCwwLDAsMCwwLDAsMCwwLDEsMzIsMCwwLDAsMCwwLDAsMCwwLDE4MiwwLDAsMCwwLDAsMCwwLDIxMCwxNzUsMCwwLDAsMCwwLDAsMCwwLDEsMzIsMCwwLDAsMCwwLDAsMCwwLDIwMCwwLDAsMCwwLDAsMCwwLDIyNSwxNzUsMCwwLDAsMCwwLDAsMiwwLDEsOCwwLDAsMCwwLDAsMCwwLDAsMjAxLDAsMCwwLDAsMCwwLDAsMjQyLDE3NSwwLDAsMCwwLDAsMCwxLDAsMSw4LDAsMCwwLDAsMCwwLDAsMCwyMDIsMCwwLDAsMCwwLDAsMCwyNTMsMTc1LDAsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDAsMCwwLDAsMCwwLDIwMywwLDAsMCwwLDAsMCwwLDMsMTc2LDAsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDAsMCwwLDAsMCwwLDIwNCwwLDAsMCwwLDAsMCwwLDIxLDE3NiwwLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwwLDAsMCwwLDAsMCwyMDUsMCwwLDAsMCwwLDAsMCwyOSwxNzYsMCwwLDAsMCwwLDAsMywwLDEsOCwwLDAsMCwwLDAsMCwwLDAsMjA2LDAsMCxcbjAsMCwwLDAsMCw0MywxNzYsMCwwLDAsMCwwLDAsMSwwLDEsOCwwLDAsMCwwLDAsMCwwLDAsMjA3LDAsMCwwLDAsMCwwLDAsNTEsMTc2LDAsMCwwLDAsMCwwLDIsMCwxLDgsMCwwLDAsMCwwLDAsMCwwLDIwOCwwLDAsMCwwLDAsMCwwLDYwLDE3NiwwLDAsMCwwLDAsMCwzLDAsMSw4LDAsMCwwLDAsMCwwLDAsMCwyMDgsMCwwLDAsMCwwLDAsMCw2MCwxNzYsMCwwLDAsMCwwLDAsMSwwLDEsMCwwLDAsMCwwLDAsMCwwLDAsMjA5LDAsMCwwLDE0MywwLDAsMCw2NywxNzYsMCwwLDAsMCwwLDAsMSwwLDEsMCwwLDAsMCwwLDAsMCwwLDAsMjA5LDAsMCwwLDE0NCwwLDAsMCw3MSwxNzYsMCwwLDAsMCwwLDAsMSwwLDEsMCwwLDAsMCwwLDAsMCwwLDAsMjA5LDAsMCwwLDE0NSwwLDAsMCw3NywxNzYsMCwwLDAsMCwwLDAsMCwwLDEsMSwwLDAsMCwwLDAsMCwwLDAsMjEwLDAsMCwwLDE0NiwwLDAsMCw4MSwxNzYsMCwwLDAsMCwwLDAsMSwwLDEsMCwwLDAsMCwwLDAsMCwwLDAsMjEwLDAsMCwwLDE0NixcbjAsMCwwLDgxLDE3NiwwLDAsMCwwLDAsMCwxLDAsMSwwLDAsMCwwLDAsMCwwLDAsMCwyMTEsMCwwLDAsMTQ3LDAsMCwwLDg3LDE3NiwwLDAsMCwwLDAsMCwyLDAsMSwwLDAsMCwwLDAsMCwwLDAsMCwyMTEsMCwwLDAsMTQ3LDAsMCwwLDg3LDE3NiwwLDAsMCwwLDAsMCwyLDAsMTMsOCwyMTgsNzEsMCwwLDAsMCwwLDAsMjEyLDAsMCwwLDAsMCwwLDAsOTcsMTI4LDAsMCwwLDAsMCwwLDIsMCw1LDgsMjIyLDcxLDAsMCwwLDAsMCwwLDIxMiwwLDAsMCwwLDAsMCwwLDkyLDEyOCwwLDAsMCwwLDAsMCwzLDAsNSw4LDIyMiw3MSwwLDAsMCwwLDAsMCwyMTIsMCwwLDAsMCwwLDAsMCw5MiwxMjgsMCwwLDAsMCwwLDAsMSwwLDEsOCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDEwMCwxNzYsMCwwLDAsMCwwLDAsMCwwLDEsOCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDEwMCwxNzYsMCwwLDAsMCwwLDAsMjU1LDAsMSwxMCwwLDAsMCwwLDAsMCwwLDAsMTgyLDAsMCwwLFxuMCwwLDAsMCwxMDAsMTc2LDAsMCwwLDAsMCwwLDEwMSwxMzgsMCwwLDI1NSwwLDEsMzIsMCwwLDAsMCwwLDAsMCwwLDIxMywwLDAsMCwwLDAsMCwwLDE2NSwxNzYsMCwwLDAsMCwwLDAsMjU1LDAsMSwzMiwwLDAsMCwwLDAsMCwwLDAsMjE0LDAsMCwwLDAsMCwwLDAsMTc1LDE3NiwwLDAsMCwwLDAsMCwyNTUsMCwxLDMyLDAsMCwwLDAsMCwwLDAsMCwyMTUsMCwwLDAsMCwwLDAsMCwxODAsMTc2LDAsMCwwLDAsMCwwLDI1NSwwLDEsMzIsMCwwLDAsMCwwLDAsMCwwLDIxNiwwLDAsMCwwLDAsMCwwLDE4NSwxNzYsMCwwLDAsMCwwLDAsMjU1LDAsMSwzMiwwLDAsMCwwLDAsMCwwLDAsMjE3LDAsMCwwLDAsMCwwLDAsMTk0LDE3NiwwLDAsMCwwLDAsMCwwLDAsMSwzMiwwLDAsMCwwLDAsMCwwLDAsMjE4LDAsMCwwLDAsMCwwLDAsMjAzLDE3NiwwLDAsMCwwLDAsMCwwLDAsMSwzMiwwLDAsMCwwLDAsMCwwLDAsMjE5LDAsMCwwLDAsMCwwLDAsMjE2LDE3NiwwLDAsMCwwLDAsMCwwLDAsMSwzMiwwLFxuMCwwLDAsMCwwLDAsMCwyMjAsMCwwLDAsMCwwLDAsMCwyMzQsMTc2LDAsMCwwLDAsMCwwLDIsMCwxLDgsMCwwLDAsMCwwLDAsMCwwLDIyMSwwLDAsMCwwLDAsMCwwLDIwOSwxNzcsMCwwLDAsMCwwLDAsMiwwLDEsOCwwLDAsMCwwLDAsMCwwLDAsMjIyLDAsMCwwLDAsMCwwLDAsMjI5LDE3NywwLDAsMCwwLDAsMCwzLDAsMSw4LDAsMCwwLDAsMCwwLDAsMCwyMjMsMCwwLDAsMCwwLDAsMCwyNTEsMTc3LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwyMTIsMzQsMCwwLDAsMCwwLDAsNSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMTY4LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwxNTEsMCwwLDAsMTUyLDAsMCwwLDM5LDE4NiwwLDAsMCw0LDAsMCwwLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLFxuMCwxMCwyNTUsMjU1LDI1NSwyNTUsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsXG4wLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsXG4wLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwyLDAsMiwwLDgsMCw5LDAsMTQsMCwxNiwwLDIwLDAsMjMsMCwyNSwwLDI1LDAsMjksMCwzMywwLDM2LDAsNDEsMCw0NiwwLDQ4LDAsNTMsMCw1NCwwLDU5LDAsNjIsMCw2NSwwLDY3LDAsNjksMCw3OCwwLDgxLDAsODYsMCw5MSwwLDk1LDAsOTYsMCwxMDEsMCwxMDUsMCwxMDksMCwxMTcsMCwxMjIsMCwxMjgsMCwxMzYsMCwxNDIsMCwxNTIsMCwxNTksMCwxNjIsMCwxNjIsMCwxNjUsMCwxNjcsMCwxNjcsMCwxNzEsMCwxNzYsMCwxNzksMCwxODQsMCwxODQsMCwxODgsMCwxOTIsMCwxOTksMCwyMDQsMCwyMDksMCwyMTIsMCwyMTgsMCwyMjEsMCwyMjUsMCwyMzQsMCwyNDAsMCwyNDAsMCwyNDAsMCwyNDMsMCwyNDYsMCwyNTAsMCwyNTEsMCwyNTUsMCw1LDEsOSwxLDE2LDEsMjIsMSwzNCwxLDQwLDEsNDksMSw1MSwxLDU3LDEsNjIsMSw2NCwxLDcxLFxuMSw3NiwxLDgxLDEsODcsMSw5MywxLDk4LDEsMTAyLDEsMTA1LDEsMTExLDEsMTE1LDEsMTIyLDEsMTI0LDEsMTMxLDEsMTMzLDEsMTM1LDEsMTQ0LDEsMTQ4LDEsMTU0LDEsMTYwLDEsMTY4LDEsMTczLDEsMTczLDEsMTg5LDEsMTk2LDEsMjAzLDEsMjA0LDEsMjExLDEsMjE1LDEsMjE5LDEsMjIzLDEsMjI3LDEsMjMwLDEsMjMyLDEsMjM0LDEsMjQwLDEsMjQ0LDEsMjUyLDEsMSwyLDksMiwxMiwyLDE3LDIsMjIsMiwyOCwyLDMyLDIsMzcsMiwzMywwLDMyLDAsMzAsMCwyOCwwLDI2LDAsMCwwLDIsMCwzLDAsNSwwLDYsMCw3LDAsOCwwLDksMCw2NSwwLDE0LDI2LDE4MSwwLDY0LDEsMTkyLDAsMTQsMjMsMjE2LDAsMTQsNywwLDEsMSw0OCw1MCwxLDEsNiw1NywxLDEsMTYsNzQsMSwxLDQ2LDEyMCwxLDExNiwxLDEyMSwxLDEsNiwxMjcsMSwxMDQsMSwxMjksMSw1MCwxLDEzMCwxLDEsNCwxMzQsMSw0NCwxLDEzNSwxLDAsMSwxMzcsMSw0MiwyLDEzOSwxLDAsMSwxNDIsMSwzMiwxLDE0MyxcbjEsMzgsMSwxNDQsMSw0MCwxLDE0NSwxLDAsMSwxNDcsMSw0MiwxLDE0OCwxLDQ2LDEsMTUwLDEsNTIsMSwxNTEsMSw0OCwxLDE1MiwxLDAsMSwxNTYsMSw1MiwxLDE1NywxLDU0LDEsMTU5LDEsNTYsMSwxNjAsMSwxLDYsMTY2LDEsNjAsMSwxNjcsMSwwLDEsMTY5LDEsNjAsMSwxNzIsMSwwLDEsMTc0LDEsNjAsMSwxNzUsMSwwLDEsMTc3LDEsNTgsMiwxNzksMSwxLDQsMTgzLDEsNjIsMSwxODQsMSwwLDEsMTg4LDEsMCwxLDE5NiwxLDIsMSwxOTcsMSwwLDEsMTk5LDEsMiwxLDIwMCwxLDAsMSwyMDIsMSwyLDEsMjAzLDEsMSwxOCwyMjIsMSwxLDE4LDI0MSwxLDIsMSwyNDIsMSwxLDQsMjQ2LDEsMTIyLDEsMjQ3LDEsMTM0LDEsMjQ4LDEsMSw0MCwzMiwyLDExMCwxLDM0LDIsMSwxOCw1OCwyLDcwLDEsNTksMiwwLDEsNjEsMiwxMDgsMSw2MiwyLDY4LDEsNjUsMiwwLDEsNjcsMiwxMDYsMSw2OCwyLDI4LDEsNjksMiwzMCwxLDcwLDIsMSwxMCw2OSwzLDM2LDEsMTEyLDMsMSw0LDExOCxcbjMsMCwxLDEzNCwzLDE4LDEsMTM2LDMsMTYsMywxNDAsMywyNiwxLDE0MiwzLDI0LDIsMTQ1LDMsMTQsMTcsMTYzLDMsMTQsOSwxOTQsMywwLDEsMjA3LDMsNCwxLDIwOCwzLDE0MCwxLDIwOSwzLDE0MiwxLDIxMywzLDE0NiwxLDIxNCwzLDE0NCwxLDIxNiwzLDEsMjQsMjQwLDMsMTM2LDEsMjQxLDMsMTM4LDEsMjQ0LDMsMTMwLDEsMjQ1LDMsMTI4LDEsMjQ3LDMsMCwxLDI0OSwzLDE1MiwxLDI1MCwzLDAsMSwyNTMsMywxMTAsMywwLDQsMzQsMTYsMTYsNCwxNCwzMiw5Niw0LDEsMzQsMTM4LDQsMSw1NCwxOTIsNCw2LDEsMTkzLDQsMSwxNCwyMDgsNCwxLDg4LDQ5LDUsMjIsMzgsMTYwLDE2LDY2LDM4LDE5OSwxNiw2NiwxLDIwNSwxNiw2NiwxLDAsMzAsMSwxNTAsMTU1LDMwLDEzMiwxLDE1OCwzMCw5NiwxLDE2MCwzMCwxLDk2LDgsMzEsMTUwLDgsMjQsMzEsMTUwLDYsNDAsMzEsMTUwLDgsNTYsMzEsMTUwLDgsNzIsMzEsMTUwLDYsODksMzEsMTUxLDgsMTA0LDMxLDE1MCw4LDEzNixcbjMxLDE1MCw4LDE1MiwzMSwxNTAsOCwxNjgsMzFdLFwiaThcIiw0LGwuYWEpO1xueihbMTUwLDgsMTg0LDMxLDE1MCwyLDE4NiwzMSwxMjYsMiwxODgsMzEsMTQ4LDEsMTkwLDMxLDEwMCwxLDIwMCwzMSwxMjQsNCwyMDQsMzEsMTQ4LDEsMjE2LDMxLDE1MCwyLDIxOCwzMSwxMjAsMiwyMzIsMzEsMTUwLDIsMjM0LDMxLDExOCwyLDIzNiwzMSwxNTIsMSwyNDgsMzEsMTEyLDIsMjUwLDMxLDExNCwyLDI1MiwzMSwxNDgsMSwzOCwzMyw5OCwxLDQyLDMzLDkyLDEsNDMsMzMsOTQsMSw1MCwzMywxMiwxLDk2LDMzLDgsMTYsMTMxLDMzLDAsMSwxODIsMzYsMTAsMjYsMCw0NCwyMiw0Nyw5Niw0NCwwLDEsOTgsNDQsODgsMSw5OSw0NCwxMDIsMSwxMDAsNDQsOTAsMSwxMDMsNDQsMSw2LDEwOSw0NCw4NCwxLDExMCw0NCw4NiwxLDExMSw0NCw4MCwxLDExMiw0NCw4MiwxLDExNCw0NCwwLDEsMTE3LDQ0LDAsMSwxMjYsNDQsNzgsMiwxMjgsNDQsMSwxMDAsMjM1LDQ0LDEsNCwyNDIsNDQsMCwxLDY0LDE2NiwxLDQ2LDEyOCwxNjYsMSwyNCwzNCwxNjcsMSwxNCw1MCwxNjcsMSw2MixcbjEyMSwxNjcsMSw0LDEyNSwxNjcsNzYsMSwxMjYsMTY3LDEsMTAsMTM5LDE2NywwLDEsMTQxLDE2Nyw3NCwxLDE0NCwxNjcsMSw0LDE2MCwxNjcsMSwxMCwxNzAsMTY3LDcyLDEsMzMsMjU1LDE0LDI2LDEsMCwyLDAsOCwwLDE1LDAsMTYsMCwyNiwwLDI4LDAsMzIsMCwzNywwLDM4LDAsNDAsMCw0OCwwLDYzLDAsNjQsMCw2OSwwLDcxLDAsNzksMCw4MCwwLDExNiwwLDIwMiwwLDIwMywwLDIwNSwwLDIwNiwwLDIwNywwLDIwOSwwLDIxMCwwLDIxMSwwLDIxMywwLDIxNCwwLDIxNywwLDIxOCwwLDIxOSwwLDcsMyw5NiwyOCw0MCw0Miw0Myw0MiwxODgsOTAsMjE2LDkwLDI1MiwxMTcsMTkzLDIxMywyMjUsMjEzLDIyNiwyMTMsMjI4LDIxMywzLDIxNCw5LDIxNCwyNSwyMTQsNjUsMjIzLDE4NiwyMjMsNjUsMjI2LDE2MywyMjYsMjUxLDIyNywyNiwyNDEsMjQ0LDI1NCw2MSwyNTUsOTMsMjU1LDEyNiwyNTUsMTI4LDI1NSwxMzAsMjU1LDEzNSwyNTUsMTQ0LDI1NSwxNTYsMjU1LDE1OSwyNTUsXG4xNzAsMjU1LDE4MiwyNTUsMTkyLDI1NSwxOTYsMjU1LDE5OCwyNTUsMjAwLDI1NSwyMDIsMjU1LDIwOCwyNTUsMjI2LDI1NSwyMzEsMjU1LDIzNCwyNTUsMjQxLDI1NSwyNDcsMjU1LDI0OCwyNTUsMjQ5LDI1NSwwLDAsNSw3LDU2LDcsNjcsNyw5OSw3LDEzNiw3LDE0OCw3LDIwMyw3LDIzMiw3LDI0OCw3LDEyLDgsNjIsOCwxMjAsOCwxNTgsOCwyMTYsOCwyMzgsOCw0MCw5LDc5LDksMTY4LDksMTg0LDksMjEyLDksMzYsMTAsMTA4LDEwLDE3MiwxMCwyMjIsMTAsMjYsMTEsNzgsMTEsMTM4LDExLDE2OCwxMSwxODQsMTEsMjEyLDExLDgsMTMsMTI4LDEzLDExMiwxNCwxMjgsMTQsMTQ0LDE0LDE2MCwxNCw1NiwxNSw3MiwxNSw4OCwxNSwxMjgsMTUsMTY4LDE1LDIwMCwxNSwxMCwxNiw0MiwxNiw3NCwxNiwxMDYsMTYsMTM4LDE2LDE3MCwxNiwyMDAsMTYsMjE2LDE2LDI0OCwxNiw1NiwxNyw3MiwxNywxMjAsMTcsMTUyLDE3LDQsMjQsNTQsMjQsMTIwLDI0LDEzNiwyNCwyMTYsMjQsMjksXG4yNSwxMDUsMjUsMTI5LDI1LDgsMjQwLDI4LDI0MCw5NCwyNDAsMTUyLDI0MCwyMDIsMjQwLDI0OCwyNDAsOCwyNDEsMzAsMjQxLDg4LDI0MSwxMDQsMjQxLDE0MCwyNDEsMTg0LDI0MSwyMTgsMjQxLDI1MiwyNDEsNDYsMjQyLDE3MCwyNDIsMjAyLDI0MiwyNDgsMjQyLDEwLDI0Myw5NCwyNDMsMTU2LDI0MywyMzQsMjQzLDE0LDI0NCw3MiwyNDQsOTAsMjQ0LDEyMCwyNDQsMTQwLDI0NCwxNzYsMjQ0LDE4NCwyNDQsMTkyLDI0NCwyMDAsMjQ0LDEwLDI0NSwyMDQsMjQ1LDc0LDI0NiwxMDYsMjQ2LDQyLDI0NywxNTgsMjQ3LDIyNywyNTUsNTQsMiwxMywyLDkzLDIsMjA3LDI1NSw1MSwxLDIzNSwxLDIxLDIsMTU2LDIsMTc5LDEsODksMiwxMzIsMiwxNDgsMCwyMzUsMiwxOCwzLDI3LDMsMTYzLDEsMjAsMyw1OSwzLDIyLDMsMTk4LDEsNjQsMywxMjEsMywyMzksMSw1NiwzLDIyMiwyLDc2LDAsNzYsMCw3NiwwLDc2LDAsNzYsMCw3NiwwLDc2LDAsNzYsMCw3NiwwLDc2LDAsNzYsMCw3NixcbjAsNzYsMCw3NiwwLDc2LDAsNzYsMCw3NiwwLDc2LDAsNzYsMCw3NiwwLDc2LDAsNzYsMCw3NiwwLDc2LDAsNzYsMCw3NiwwLDc2LDAsNzYsMCw3NiwwLDc2LDAsNzYsMCw3NiwwLDE1LDMsMTMwLDMsMTM3LDMsMTM5LDMsMTQzLDMsMTUzLDMsMTY1LDMsMTY4LDMsMTcyLDMsMTc1LDMsMTc5LDMsMTgyLDMsMTg0LDMsMTg3LDMsMTkwLDMsMTk0LDMsMTk3LDMsMjAxLDMsMjA2LDMsMjA5LDMsMjEyLDMsMjE2LDMsMjIwLDMsMjIzLDMsMjI1LDMsMjI4LDMsMjMxLDMsMjM0LDMsMjM4LDMsMjQyLDMsMjUwLDMsMjUzLDMsMCw0LDQsNCw4LDQsMTAsNCwxMiw0LDE2LDQsMjIsNCwyNyw0LDM0LDQsMzgsNCw0MCw0LDQ0LDQsNDYsNCw0OSw0LDc2LDAsNzYsMCw3NiwwLDc2LDAsNzYsMCw3NiwwLDc2LDAsNzYsMCw3NiwwLDg3LDMsMzYsMCwxMSwyLDIzNSwwLDE2MCwxLDksMyw3NiwwLDIyLDEsNzYsMCw3NiwwLDc2LDAsNzYsMCwxODgsMiwxODgsMiwxODgsMiwxNTAsMCwyMjAsMCwxNDcsMCxcbjIxNywwLDIyMSwwLDUwLDEsNTAsMSw5OSwyLDUsMCwyMywyLDQ0LDIsMTA4LDIsMjA4LDIsMTA0LDMsMTI5LDMsMTE2LDAsOTYsMyw5MywxLDExLDQsMTMsNCwxNDgsMSwyMyw0LDIyNCwzLDEyNywyNTUsMjYsNCwyMzYsMSw2MiwwLDIxMCwyLDExMSwzLDQ4LDQsNjUsNCw0MCwzLDQyLDQsNzAsNCw3MSw0LDcyLDQsNzMsNCw3NCw0LDgsMywzMCw0LDQ1LDIsNTcsMCwxMTIsMCwxMzEsMCwxNjcsMCwxODIsMCwyNTAsMCwxNiwxLDM1LDEsNzUsMSwxMDgsMSwxODIsMSwyNDEsMSw1LDIsNzksMiwxNDEsMiwxNzgsMiwyMjcsMiw3LDMsMzAsMywxMjQsMywxNDAsMywxNTYsMywxNjIsMywyNDcsMywzOSw0LDQ1LDQsOTksMSwxNiwzLDMxLDMsMjEzLDMsNzcsNCwxNTgsMywxMjcsNCwxMzcsNCwxMzgsNCwxNzcsMywxNDAsNCwxNDIsNCwxMDQsNCwxNDQsNCwxNDcsNCwxNDgsNCwyNTAsMCwxNDksNCwxNTAsNCwxNTEsNCwxNTQsNCwxNTYsNCwxNTcsNCw2NCw0LDc4LDQsOTUsNCwxMDAsNCxcbjEwMiw0LDE1OCwzLDEwNyw0LDExNSw0LDE2NCw0LDExNiw0LDEwNSw0LDEwNiw0LDc5LDQsMTIwLDQsODMsNCwxNTUsNCwxMzIsNCwxNDMsNCwxNTgsNCwxMTAsNCw5OCw0LDE1OSw0LDE2MCw0LDEyNiw0LDEyOSw0LDE3Myw0LDg3LDQsMTc4LDQsMTc5LDQsOTksNCwxMDEsNCwxODEsNCwxMjMsNCwxNjEsNCwxNDUsNCwxNjIsNCwxNjYsNCwxNjcsNCwxNjgsNCwxODksNCwxOTMsNCwxNjksNCwxMzMsNCwxNzIsNCwxNzQsNCwxNzAsNCwxOTYsNCwxOTQsNCwxMjEsNCwxMzAsNCwyMDUsNCwyMDcsNCwyMDksNCwxOTIsNCwyMTMsNCwyMTYsNCwyMTcsNCwyMjAsNCwxOTgsNCwyMDMsNCwyMDYsNCwyMDgsNCwxOTksNCwyMTEsNCwyMTIsNCwyMjEsNCwyMjUsNCwyMDIsNCwyMjYsNCwyMzAsNCwxNzUsNCwxNzcsNCwxODAsNCwxODMsNCwxODUsNCwxODcsNCwxOTAsNCwxODgsNCwyMzEsNCwxODQsNCwyMzUsNCwxOTEsNCwyMzIsNCwxNzYsNCwxODIsNCwyMzYsNCwyMjMsNCwyMzcsNCwyMzksXG40LDIzOCw0LDI0Miw0LDI1NCw0LDIsNSwxMiw1LDE0LDUsMTcsNSwxOCw1LDE5LDUsMjAsNSwxOTcsNCwyMDAsNCwyMDQsNCw4LDUsMTEsNSwyNTIsNCwyNTMsNCwxNSw1LDY5LDEsNjQsMyw5NSwxLDU3LDMsNSwwLDIwMywwLDIwMywwLDUxLDMsOTksMCwxMDAsMCw5MCwwLDc0LDMsNzQsMyw4NiwzLDg5LDMsNzgsMyw3OCwzLDk3LDAsOTcsMCw5OCwwLDk4LDAsOTgsMCw5OCwwLDQ1LDEsOTYsMCw5NiwwLDk2LDAsOTYsMCw5NSwwLDk1LDAsOTQsMCw5NCwwLDk0LDAsOTMsMCw5NSwxLDY5LDEsMjA5LDMsMjA5LDMsNTYsMyw1NiwzLDU4LDMsMTc5LDMsOTgsMSw5OSwwLDEwMCwwLDkwLDAsNzQsMyw3NCwzLDg2LDMsODksMyw3OCwzLDc4LDMsOTcsMCw5NywwLDk4LDAsOTgsMCw5OCwwLDk4LDAsODIsMSw5NiwwLDk2LDAsOTYsMCw5NiwwLDk1LDAsOTUsMCw5NCwwLDk0LDAsOTQsMCw5MywwLDk1LDEsOTUsMCw5NSwwLDk0LDAsOTQsMCw5NCwwLDkzLDAsOTUsMSwyMywzLDIwOSwzLDIwOSxcbjMsNjksMSw5NCwwLDk0LDAsOTQsMCw5MywwLDk1LDEsMjQsMyw3NSwwLDk5LDAsMTAwLDAsOTAsMCw3NCwzLDc0LDMsODYsMyw4OSwzLDc4LDMsNzgsMyw5NywwLDk3LDAsOTgsMCw5OCwwLDk4LDAsOTgsMCwxOTQsMSw5NiwwLDk2LDAsOTYsMCw5NiwwLDk1LDAsOTUsMCw5NCwwLDk0LDAsOTQsMCw5MywwLDk1LDEsNTMsNSwxNTUsMCwxNTUsMCwyLDAsNjksMSwxOSwxLDE0NiwwLDEzMiwwLDUyLDAsNTIsMCw5MywwLDk1LDEsOTksMCwxMDAsMCw5MCwwLDc0LDMsNzQsMyw4NiwzLDg5LDMsNzgsMyw3OCwzLDk3LDAsOTcsMCw5OCwwLDk4LDAsOTgsMCw5OCwwLDEwMSwwLDk2LDAsOTYsMCw5NiwwLDk2LDAsOTUsMCw5NSwwLDk0LDAsOTQsMCw5NCwwLDkzLDAsOTUsMSwxOTAsMywxOTAsMyw2OSwxLDEyLDEsMTcyLDEsMTU3LDEsMTU1LDEsNjEsMCwyNDAsMiwyNDAsMiw5OSwwLDEwMCwwLDkwLDAsNzQsMyw3NCwzLDg2LDMsODksMyw3OCwzLDc4LDMsOTcsMCw5NywwLDk4LDAsOTgsMCxcbjk4LDAsOTgsMCw2MCwwLDk2LDAsOTYsMCw5NiwwLDk2LDAsOTUsMCw5NSwwLDk0LDAsOTQsMCw5NCwwLDkzLDAsOTUsMSw2OSwxLDE0LDEsNzMsMSwxNywxLDIxLDEsMTkxLDMsMTkyLDMsMjUwLDAsOTksMCwxMDAsMCw5MCwwLDc0LDMsNzQsMyw4NiwzLDg5LDMsNzgsMyw3OCwzLDk3LDAsOTcsMCw5OCwwLDk4LDAsOTgsMCw5OCwwLDQ1LDEsOTYsMCw5NiwwLDk2LDAsOTYsMCw5NSwwLDk1LDAsOTQsMCw5NCwwLDk0LDAsOTMsMCw5NSwxLDY5LDEsMTcwLDMsNDYsNSwxODYsMiwxOTQsMiw0Niw1LDI0MiwwLDE1NiwxLDk5LDAsMTAwLDAsOTAsMCw3NCwzLDc0LDMsODYsMyw4OSwzLDc4LDMsNzgsMyw5NywwLDk3LDAsOTgsMCw5OCwwLDk4LDAsOTgsMCw5MSwxLDk2LDAsOTYsMCw5NiwwLDk2LDAsOTUsMCw5NSwwLDk0LDAsOTQsMCw5NCwwLDkzLDAsOTUsMSw2OSwxLDE3MCwzLDQ3LDUsMTI4LDEsMTg3LDIsNDcsNSwxMjUsMSwxMjMsMSw5OSwwLDEwMCwwLDkwLDAsNzQsMyw3NCwzLFxuODYsMyw4OSwzLDc4LDMsNzgsMyw5NywwLDk3LDAsOTgsMCw5OCwwLDk4LDAsOTgsMCwxODksMiw5NiwwLDk2LDAsOTYsMCw5NiwwLDk1LDAsOTUsMCw5NCwwLDk0LDAsOTQsMCw5MywwLDk1LDEsNjksMSw5MiwwLDg5LDAsMTc4LDAsNjUsMywxNjgsMywxMTcsMSwxODgsMiw5OSwwLDEwMCwwLDkwLDAsNzQsMyw3NCwzLDg2LDMsODksMyw3OCwzLDc4LDMsOTcsMCw5NywwLDk4LDAsOTgsMCw5OCwwLDk4LDAsMTE5LDEsOTYsMCw5NiwwLDk2LDAsOTYsMCw5NSwwLDk1LDAsOTQsMCw5NCwwLDk0LDAsOTMsMCw5NSwxLDY5LDEsMjUyLDQsMTc5LDMsOTgsMSw1MCwzLDE2OCwzLDIyNywyLDIyNywyLDk5LDAsMTAwLDAsOTAsMCw3NCwzLDc0LDMsODYsMyw4OSwzLDc4LDMsNzgsMyw5NywwLDk3LDAsOTgsMCw5OCwwLDk4LDAsOTgsMCwyMzAsMCw5NiwwLDk2LDAsOTYsMCw5NiwwLDk1LDAsOTUsMCw5NCwwLDk0LDAsOTQsMCw5MywwLDk1LDEsNjksMSwyMDEsMywyMjcsMCw5MiwwLDg5LDAsXG4xNzgsMCwxMTcsMSw0NCwxLDk5LDAsMTAwLDAsOTAsMCw3NCwzLDc0LDMsODYsMyw4OSwzLDc4LDMsNzgsMyw5NywwLDk3LDAsOTgsMCw5OCwwLDk4LDAsOTgsMCwxNTMsMyw5NiwwLDk2LDAsOTYsMCw5NiwwLDk1LDAsOTUsMCw5NCwwLDk0LDAsOTQsMCw5MywwLDk1LDEsNjksMSwxOTMsMSwxOTEsMSwxOTEsMSwxOTEsMSwxNDcsMCwyMjUsMiwyMjUsMiw5OSwwLDEwMCwwLDkwLDAsNzQsMyw3NCwzLDg2LDMsODksMyw3OCwzLDc4LDMsOTcsMCw5NywwLDk4LDAsOTgsMCw5OCwwLDk4LDAsNDAsMSw5NiwwLDk2LDAsOTYsMCw5NiwwLDk1LDAsOTUsMCw5NCwwLDk0LDAsOTQsMCw5MywwLDk1LDEsNjksMSwxNjMsMSwyMzEsMCwxOTAsMywxOTAsMywxNTgsMCwyNSwwLDE2NiwxLDk5LDAsMTAwLDAsOTAsMCw3NCwzLDc0LDMsODYsMyw4OSwzLDc4LDMsNzgsMyw5NywwLDk3LDAsOTgsMCw5OCwwLDk4LDAsOTgsMCwxOTQsMSw5NiwwLDk2LDAsOTYsMCw5NiwwLDk1LDAsOTUsMCw5NCwwLDk0LFxuMCw5NCwwLDkzLDAsOTUsMSwxODcsMSwyMjQsMCwyMjQsMCwxNjQsMSwxOTAsMywxOTAsMywxOTQsMyw2OSwxLDUyLDAsNTIsMCwxOTEsMywxOTIsMywxNzYsMCwxNTksMSw3OCwwLDk5LDAsMTAwLDAsOTAsMCw3NCwzLDc0LDMsODYsMyw4OSwzLDc4LDMsNzgsMyw5NywwLDk3LDAsOTgsMCw5OCwwLDk4LDAsOTgsMCwxMjMsMSw5NiwwLDk2LDAsOTYsMCw5NiwwLDk1LDAsOTUsMCw5NCwwLDk0LDAsOTQsMCw5MywwLDk1LDEsNjksMSwxNzIsMSwxNjIsMSw0MiwxLDE5MSwzLDE5MiwzLDE5NCwzLDgxLDAsOTksMCw4OCwwLDkwLDAsNzQsMyw3NCwzLDg2LDMsODksMyw3OCwzLDc4LDMsOTcsMCw5NywwLDk4LDAsOTgsMCw5OCwwLDk4LDAsMjA1LDIsOTYsMCw5NiwwLDk2LDAsOTYsMCw5NSwwLDk1LDAsOTQsMCw5NCwwLDk0LDAsOTMsMCw5NSwxLDY5LDEsNzUsMyw3NSwzLDg3LDMsOTAsMywyMjgsMyw2MiwxLDg3LDEsMTIzLDEsMTAwLDAsOTAsMCw3NCwzLDc0LDMsODYsMyw4OSwzLDc4LFxuMyw3OCwzLDk3LDAsOTcsMCw5OCwwLDk4LDAsOTgsMCw5OCwwLDE5NCwxLDk2LDAsOTYsMCw5NiwwLDk2LDAsOTUsMCw5NSwwLDk0LDAsOTQsMCw5NCwwLDkzLDAsOTUsMSw2OSwxLDk0LDEsOTQsMSw5NCwxLDQsMSwxMjEsMSw4NCwxLDE2MSwzLDUyLDAsNTIsMCw5MCwwLDc0LDMsNzQsMyw4NiwzLDg5LDMsNzgsMyw3OCwzLDk3LDAsOTcsMCw5OCwwLDk4LDAsOTgsMCw5OCwwLDEwNSwxLDk2LDAsOTYsMCw5NiwwLDk2LDAsOTUsMCw5NSwwLDk0LDAsOTQsMCw5NCwwLDkzLDAsOTUsMSw4NiwwLDE4OSwxLDc5LDMsMywwLDE3OSw0LDEwNSwxLDEwNCwxLDEyMiwxLDg4LDEsNDUsMywxOTAsMywxOTAsMywyMCw1LDg2LDAsMTg5LDEsMjE3LDIsMywwLDIxMiwwLDE2OSwwLDMxLDEsMTQ5LDEsMjYsMSwxNDgsMSwxOTksMCwyMzIsMCwxOTQsMSw0NCwxLDI0OCwyLDgzLDAsODQsMCwyNCwxLDI0NSwwLDYsMSwxMDksMSwyNTEsMCw4NSwwLDk2LDEsOTYsMSw5MiwwLDg5LDAsMTc4LDAsODMsXG4wLDg0LDAsMjQyLDAsMTU2LDEsNTIsMCw1MiwwLDE5MiwxLDg1LDAsOTYsMSw5NiwxLDI0NiwwLDE5MSwzLDE5MiwzLDE5NCwwLDE5OSwxLDE1OCwyLDE0NiwxLDE0MywxLDE0MiwxLDE5MiwxLDI0MywwLDIyMSwwLDExNCwwLDE3OCwxLDgsMywxMDUsMSwxOTQsMSwxNDEsMSwxMiwxLDIzNSwyLDIyNCwwLDIyNCwwLDEzMiwwLDEzMiwwLDE5OCwwLDY0LDMsMTc4LDEsMTk2LDEsMTk1LDEsMTcyLDEsMTcxLDEsNTEsMywxNTksMSwyMjIsMiwyMDEsMiwxMzIsMCw1MiwwLDUyLDAsNjQsMywxMiwxLDE5NiwxLDE5NSwxLDIyMiwyLDE5NCwwLDUxLDMsMTA3LDEsMTQ2LDEsMTQzLDEsMTQyLDEsMTk0LDEsMjQ3LDQsMjQ3LDQsMjMsMCwxOTAsMywxOTAsMyw4NiwwLDE4OSwxLDE0MSwxLDMsMCwyMjgsMCwxNzMsMSwxMjcsMyw1NiwzLDU2LDMsNTgsMyw1OSwzLDE5LDAsMjAzLDAsMjA4LDIsNTIsMCw1MiwwLDE3MiwxLDE1MiwxLDE4MywxLDI0OSwwLDU2LDMsNTYsMyw1OCwzLDU5LDMsMTksXG4wLDIyOSwwLDE0NywxLDE1MywwLDgzLDAsODQsMCwyNDksMiwxNzcsMCwyNDEsMCwxOTQsMSwyMDksMiw4NSwwLDk2LDEsOTYsMSwxMjAsMCwxNTcsMCwxOTEsMywxOTIsMyw1OCwwLDIwOSwzLDE1MywxLDk5LDEsNzQsMSwxOTIsMSwxMiwxLDE3MiwxLDE3NCwxLDY0LDEsMjIsMywzMiwwLDMyLDAsODYsMCwxODksMSw4LDMsMywwLDg1LDEsOTgsMCw5OCwwLDk4LDAsOTgsMCwxNzgsMSw5NiwwLDk2LDAsOTYsMCw5NiwwLDk1LDAsOTUsMCw5NCwwLDk0LDAsOTQsMCw5MywwLDk1LDEsNjQsMywxMjAsMCwxOTYsMSwxOTUsMSw0NSwzLDExOSwzLDUxLDMsODMsMCw4NCwwLDIwOSwzLDQ1LDMsMTMyLDAsMTU0LDEsMTUyLDMsODUsMCw5NiwxLDk2LDEsMTMyLDAsMTUxLDEsMjEsMywxOTAsMywxOTAsMyw5MiwwLDg5LDAsMTc4LDAsMTQ5LDMsMTkyLDEsNiwxLDExNCwxLDUsMSw4MiwwLDE0NiwzLDgwLDAsNiwxLDExNCwxLDUsMSw4LDMsNTYsMyw1NiwzLDU4LDMsNTksMywxOSwwLDE2NixcbjMsMTc4LDEsOTYsMCw5NiwwLDk2LDAsOTYsMCw5NSwwLDk1LDAsOTQsMCw5NCwwLDk0LDAsOTMsMCw5NSwxLDY0LDMsNzQsMCwxOTYsMSwxOTUsMSwxOTAsMywxOTAsMyw1MSwzLDE5MSwzLDE5MiwzLDEyMCwwLDkyLDAsODksMCwxNzgsMCwxNzcsMywyLDAsMTUwLDMsMTk3LDMsMTIsMSwxLDAsMjA4LDMsNzYsMCwxODksMSwyNTAsMiwzLDAsMTk2LDIsMTMzLDMsMTMzLDMsMTMxLDEsMTkwLDMsMTkwLDMsMjQ1LDIsMTUxLDMsMTE1LDEsMjI4LDIsMTAsMywyNDQsMiwxLDEsNTYsMyw1NiwzLDU4LDMsNTksMywxOSwwLDE2MSwxLDIyOSwyLDE5NCwxLDI0LDAsMTkxLDMsMTkyLDMsODMsMCw4NCwwLDExMywxLDE5MCwzLDE5MCwzLDE3NywwLDIyNiwwLDg1LDAsOTYsMSw5NiwxLDExNywzLDU5LDEsNTgsMSw1NywxLDIxNSwwLDU1LDEsMTAsMCwxMCwwLDE3MSwyLDE5MiwxLDkzLDEsOTIsMSwxOTEsMywxOTIsMywxNDEsMyw5LDMsMTU3LDAsMTIwLDAsMTkwLDMsMTkwLDMsODEsMSw4LFxuMywxNjAsMSwxOTksMiw1NCwxLDE5NCwxLDE3OCwxLDE5NCwxLDY1LDEsMTk0LDEsMjMsMywxMDMsMCwyMDAsMCwxNzUsMCwxOTQsMSwxOTEsMywxOTIsMywxNDAsMyw2NCwzLDI0LDMsMTk2LDEsMTk1LDEsOSwwLDksMCw1MSwzLDEwLDAsMTAsMCw1MiwwLDUyLDAsNTEsMCw1MSwwLDE4MCwwLDIwNCwyLDI0OCwwLDEwLDAsMTAsMCwxNzEsMCwxNzAsMCwxNjcsMCw4MywxLDE5MSwzLDE5MiwzLDI0NywwLDIxNiwzLDE5MCwyLDE5MCwyLDE5NCwxLDIwMywyLDIzMywwLDE3NCwyLDIxNCwzLDEyMSwzLDIxNSwzLDE4MiwwLDE0NiwzLDU2LDMsNTYsMyw1OCwzLDU5LDMsMTksMCwxODMsMCwwLDEsMTY3LDEsMTMyLDAsMTgxLDAsMTM4LDEsMTAsMCwxMCwwLDEyMSwzLDEyMywzLDIzNywyLDE5MCwzLDE5MCwzLDE0OSwzLDEyLDEsMjE3LDMsMTk4LDAsMjE3LDMsOTMsMSw5MiwxLDE2OSwxLDE1OSwxLDQzLDEsNDksMyw2NCwzLDcwLDEsNTcsMywxMjAsMCw3NiwxLDEzMywwLDUxLDMsMTIsXG4xLDk4LDAsOTgsMCw5OCwwLDk4LDAsOTEsMCw5NiwwLDk2LDAsOTYsMCw5NiwwLDk1LDAsOTUsMCw5NCwwLDk0LDAsOTQsMCw5MywwLDk1LDEsMTU3LDAsNDIsMywxMTUsMSwxMjYsMSwxMDMsMSwxOTEsMywxOTIsMywxMDIsMSwxMiwxLDE5NCwxLDE1MCwzLDExMiwxLDY4LDEsNTYsMyw1NiwzLDU4LDMsMTk0LDEsMTk3LDIsMTk0LDEsOCwxLDEyNCwxLDEyMSwzLDE5NCwxLDEwOSwzLDIzNCwyLDI1MywwLDE1MSwzLDI1NSwwLDE3NywxLDM2LDAsMzYsMCwyMzQsMCwxOTQsMSwyMzQsMCwxMjAsMCwxMywxLDM3LDAsMzcsMCwxMiwwLDEyLDAsNzgsMSwxNiwxLDI3LDAsMjcsMCwxOTQsMSw3NCwxLDExOCwwLDE5NCwxLDE2MiwwLDIzMCwyLDI0LDEsMTk0LDEsMzgsMCwzOCwwLDE5NCwxLDIxNywzLDEwMCwxLDIxNywzLDE5NCwxLDE5NywyLDE4Niw0LDE5NCwxLDEzMiwwLDE5NCwxLDM5LDAsMzksMCwxOTQsMSw0MCwwLDQwLDAsMTk0LDEsMTA2LDEsNDEsMCw0MSwwLDE5NCwxLDQyLDAsXG40MiwwLDE5NCwxLDI1NCwwLDI4LDAsMjgsMCwxOTQsMSwyOSwwLDI5LDAsMzEsMCwzMSwwLDE5NCwxLDQzLDAsNDMsMCwxOTQsMSw0NCwwLDQ0LDAsMTk0LDEsMjAyLDIsNDUsMCw0NSwwLDE5NCwxLDExLDAsMTEsMCwyNTUsMiwxOTQsMSw0NiwwLDQ2LDAsMTk0LDEsMTIsMSwxOTQsMSwxMDUsMCwxMDUsMCwxOTQsMSw0NywwLDQ3LDAsMTk0LDEsNDgsMCw0OCwwLDE5NCwxLDIzNywwLDMzLDAsMzMsMCwxOTQsMSwxNzIsMCw0OSwwLDQ5LDAsMTk0LDEsNTAsMCw1MCwwLDM0LDAsMzQsMCwxOCwxLDEyMiwwLDEyMiwwLDE5NCwxLDEyMywwLDEyMywwLDE5NCwxLDEyNCwwLDEyNCwwLDE5NCwxLDEzMCwzLDU2LDAsNTYsMCwxOTQsMSwxMjksMywzNSwwLDM1LDAsMTk0LDEsMTEsMSwxOTQsMSw0OSwzLDE5NCwxLDQ5LDMsMTA2LDAsMTA2LDAsMTk0LDEsNTMsMCw1MywwLDEyOSwxLDEwNywwLDEwNywwLDE5NCwxLDQ5LDMsMTA4LDAsMTA4LDAsNDksMywxOTQsMSwxMDQsMCwxMDQsMCwxMjEsXG4wLDEyMSwwLDExOSwwLDExOSwwLDE5NCwxLDExNywwLDExMiwwLDExMiwwLDE5NCwxLDIwLDEsMTk0LDEsMjI1LDAsMTExLDAsMTExLDAsMTk0LDEsMjE4LDIsMTk0LDEsMTA5LDAsMTA5LDAsMTk0LDEsMTYxLDIsMTYyLDIsMTYzLDIsMTQ0LDMsMTEwLDAsMTEwLDAsNjEsMSwyMzAsMyw1NSwwLDU1LDAsNTcsMCw1NywwLDE4MCwyLDc1LDEsNTQsMCw1NCwwLDI2LDAsMjYsMCwxODQsMiwzMCwwLDMwLDAsNjEsMSwxNjksMywxOTcsMCwxOTYsMCwxOTUsMCw3OSwxLDI1LDEsODAsMSwxOTAsMSw3NSwxLDIzMywyLDE3NywyLDE4MCwxLDE4NCwxLDE4OCwxLDEyMCwwLDcyLDAsMTMwLDEsMjIzLDAsMTc1LDAsODksMSwyNDUsMiwxNjUsMywyMCwwLDMwLDEsNjMsMSwyNDQsMiw0NywzLDExNiwxLDExOCwxLDIwMiwwLDIwMiwwLDIwMiwwLDcsMSwxMzksMSwyOSwxLDc0LDAsMjA4LDAsMjEsMCwxODQsMiwyMDcsMiwyMDYsMiwxMTYsMywxMjAsMCwxMjAsMCwxMjAsMCwxMjAsMCwxMjAsMCxcbjI0MiwyLDIyLDEsNjAsMyw3NywwLDc0LDAsMjE0LDIsMjE1LDIsMTcsMywxNSwzLDExMiwzLDIwMiwwLDIzMSwzLDIwOCwwLDEyNiwzLDEyNSwzLDEyNiwzLDEyNSwzLDE4MiwyLDQ4LDMsMjUxLDIsMTE2LDAsNiwzLDEwLDUsMTc1LDEsMTc2LDEsNDYsMSwyMzEsMywxMzQsMSw0NywxLDU1LDMsMTg1LDIsMTc5LDIsMTY4LDIsMTU5LDAsMzMsMSwxNjcsMiwxMTYsMywxNjksMiwxODQsMywzNSwxLDIxOCwwLDM3LDEsNywwLDYwLDEsNjAsMywxNzMsMCwzNywzLDMsMSwxMDgsMSwyNTIsMCwxNDMsMywxMjAsMSwyMDEsMiwzOSwxLDE3OSwxLDUyLDEsMTY4LDAsMTg3LDMsMjI1LDMsMTM1LDAsMTQ0LDEsMjIyLDMsMjgsMSwxMTQsMywxMTMsMywyMDUsMCwxNjAsMywxNTgsMyw1OSwwLDc3LDEsNjIsMCwxNDQsMCwxNTYsMCwxMzAsMCw3MiwwLDM0LDMsMTEwLDEsMTExLDEsMTM3LDEsMTM3LDAsMTg1LDAsMTg5LDAsMTYwLDAsMTM5LDAsMTI3LDEsNjcsMCwxMjgsMywxNDAsMCwxNDEsMCxcbjE0MiwwLDE0OCwwLDEzMywxLDQ0LDMsNywzLDEwLDEsMjE5LDAsMTkwLDAsMTU0LDAsMTM1LDEsMTQ1LDMsMTA4LDMsMTUsMSwxNTAsMSwxOTEsMCw2NiwxLDE3MCwyLDIyMSwyLDE5MiwwLDg2LDEsMjIwLDIsMjEyLDIsMjE5LDIsMTk5LDIsMjExLDIsMTY1LDEsMTkzLDIsNzEsMCw2NywxLDYsMCwyMDQsMCwzLDMsMzIsMSw3OSwwLDQxLDEsOTAsMSw0LDMsMTkyLDIsMzQsMSwyNywxLDE5MSwyLDIsMywzNiwxLDM4LDEsMTk5LDMsMjM5LDAsMSwzLDEwMiwwLDk0LDMsMTgyLDEsMTcwLDEsMjQwLDAsMTY4LDEsMTg2LDEsNzMsMCwyMTMsMCwxNzYsMiwyMzgsMCwyMiwwLDE5NywxLDE4NSwzLDIxNCwwLDIxNywwLDIxNiwwLDE5OCwxLDE2NSwyLDE2NCwyLDE1OSwyLDI0MSwyLDEyNSwwLDExNSwwLDIzNSwwLDEyNiwwLDE1NywyLDk3LDEsMTY2LDAsMTI3LDAsMjQ0LDAsMTc5LDAsMTAxLDEsNTAsMSw0OCwxLDQ5LDEsNTEsMSwxMTMsMCwxMjQsMyw3MSwxLDEyMiwzLDQzLDMsNzIsMSxcbjEzNCwwLDEyOCwwLDEzNiwwLDEzOCwwLDIzMSwyLDIsMSwxMzksMywxODQsMCwxNDMsMCwxMjksMCwxNDIsMywxODYsMCw2MywwLDY0LDAsMTQ1LDAsMTg3LDAsMTM4LDMsNjUsMCw4LDAsNjYsMCwxMywwLDE4OCwwLDIwMiwwLDEzMSwzLDksMSwxNDksMCwyMTksMywxMzIsMSwxNTAsMCwxNzMsMiwxNjEsMCwxMzYsMSwyOSwxLDE5MywwLDIzLDEsMTQwLDEsMTUxLDAsMTQ1LDEsNjgsMCwxNCwwLDE1LDAsMjEwLDIsNjksMCwyMzYsMCw2MywzLDEzMSwwLDYyLDMsOTIsMyw3MCwwLDIzOSwyLDE2LDAsMTU4LDEsMjQzLDIsNCwwLDE3NCwwLDIyMCwwLDIyMiwwLDE2LDMsMjAxLDAsMTUyLDAsMTEsMyw3NywwLDc0LDAsMTcsMCwxOCwwLDEwNywzLDkzLDMsOTEsMywxNDgsMyw5NiwzLDE0NywzLDIwNywwLDIwNiwwLDE3NCwzLDE2MywwLDE4MSwxLDE4MCwzLDE3NSwzLDE2NCwwLDIwOSwwLDIzNCwzLDE4NSwxLDk1LDMsMTY1LDAsMjEwLDAsNjEsMywxODMsMiw4NywwLDU2LDEsMjExLFxuMCwxMiw1LDExLDUsNTMsMSwxNiwxNiwyLDE2LDQwLDAsODcsMiwxMzYsMywxMDAsMiwyNDgsMiwyNDgsMiwyNDgsMiwyNDgsMiwyMTMsMiwyMzcsMjU1LDE2LDAsMTYsMCwxMDAsMCwyNDgsMiwyNDgsMiwyNDgsMiwyNDgsMiwyNDgsMiwyNDgsMiwyNDgsMiwxMDgsMywxMDgsMyw2MSwyLDMwLDIsMjA3LDIsODgsMiw2MSwwLDEzNywwLDE3MiwwLDIwNywwLDI0MiwwLDIxLDEsNTYsMSw5MSwxLDEyNiwxLDE2MSwxLDIwMywxLDIwMywxLDIwMywxLDIwMywxLDIwMywxLDIwMywxLDIwMywxLDIwMywxLDIwMywxLDIwMywxLDIwMywxLDIwMywxLDIwMywxLDIwMywxLDIwMywxLDIwMywxLDIwMywxLDIzOCwxLDIwMywxLDE3LDIsNTIsMiw1MiwyLDE5MywyLDI0OCwyLDI0OCwyLDI0OCwyLDI0OCwyLDI0OCwyLDI0OCwyLDI0OCwyLDI0OCwyLDI0OCwyLDI0OCwyLDI0OCwyLDI0OCwyLDI0OCwyLDI0OCwyLDI0OCwyLDI0OCwyLDI0OCwyLDI0OCwyLDI0OCwyLDI0OCwyLDI0OCwyLDI0OCwyLFxuMjQ4LDIsMjQ4LDIsMjQ4LDIsMjQ4LDIsMjQ4LDIsMjQ4LDIsMjQ4LDIsMjQ4LDIsMjQ4LDIsODgsMywyNDgsMiwyNDgsMiwyNDgsMiwyNDgsMiwyNDgsMiwyNDgsMiwyNDgsMiwyNDgsMiwyNDgsMiwyNDgsMiwyNDgsMiwyNDgsMiwyNDgsMiwyMTksMywyMzQsMiwyMzQsMiwyMzQsMiwyMzQsMiwyMzQsMiwzMywzLDIzLDAsMzIsMCwxODEsMywxOTMsMywyMTEsMywxOTYsMywxOTYsMywxODEsMyw3MywwLDExMywwLDIwNSwyNTUsMzEsNiwzMSw2LDMxLDYsMjQsMiwyNCwyLDI0LDIsOTksMCw5OSwwLDQ1LDMsNDUsMywxNTUsMiwyMDUsMCwyNDAsMCwxODEsMywxODEsMywxODEsMywxODEsMywxODEsMywxODEsMywxODEsMywxODEsMywxODEsMywxODEsMywxODEsMywxODEsMywxODEsMywxODEsMywxODEsMywxODEsMywxODEsMywxODEsMywxODEsMywxODEsMyw3NiwxLDI0MywzLDE2NiwxLDE2NiwxLDExMywwLDMwLDAsMzAsMCwzMCwwLDMwLDAsMzAsMCwzMCwwLDMxLDYsMzEsNiwzMSxcbjYsMTU0LDMsMTYyLDI1NSwxNjIsMjU1LDEyOCwxLDEwMSwyLDYwLDMsMTY0LDEsMjUzLDIsMzYsMyw4MywzLDE4MSwzLDE4MSwzLDE4MSwzLDE4MSwzLDE4MSwzLDE4MSwzLDE4MSwzLDE4MSwzLDE4MSwzLDE4MSwzLDE4MSwzLDE4MSwzLDE4MSwzLDE4MSwzLDE4MSwzLDE4MSwzLDE2MCwyLDE2MCwyLDE2MCwyLDE4MSwzLDE4MSwzLDE0NSwyLDE4MSwzLDE4MSwzLDE4MSwzLDIzOCwyNTUsMTgxLDMsMTgxLDMsMjI2LDMsMTgxLDMsMTgxLDMsMTgxLDMsMTgxLDMsMTgxLDMsMTgxLDMsMTgxLDMsMTgxLDMsMTgxLDMsMTgxLDMsNCwzLDk0LDQsMjAwLDIsMjAwLDIsMjAwLDIsNDIsMyw0NSwwLDEsMywxOTUsNCwxMDksNCwxNjIsMSwxNjIsMSw1NywyLDEwOSw0LDU3LDIsNjIsMyw5NSwyLDE1MSwyLDExNCwzLDE2MiwxLDE4MSwyLDExNCwzLDExNCwzLDgwLDMsMTI4LDQsNDEsNCw2LDUsMjE0LDQsMjE0LDQsNyw1LDcsNSwyMTQsNCw2NCw1LDYxLDUsMjE1LDQsNzMsNSw3Myw1LDczLFxuNSw3Myw1LDIxNCw0LDc1LDUsMjE1LDQsNjQsNSw2MSw1LDYxLDUsMjE1LDQsMjE0LDQsNzUsNSwyMTksNCwzMiw1LDIxNCw0LDIxNCw0LDc1LDUsOTAsNSwyMTQsNCw3NSw1LDIxNCw0LDc1LDUsOTAsNSwxMCw1LDEwLDUsMTAsNSw0Nyw1LDkwLDUsMTAsNSwyMSw1LDEwLDUsNDcsNSwxMCw1LDEwLDUsNCw1LDI0LDUsNCw1LDI0LDUsNCw1LDI0LDUsNCw1LDI0LDUsMjE0LDQsMTExLDUsMjE0LDQsMCw1LDkwLDUsODYsNSw4Niw1LDkwLDUsMjIsNSwyOCw1LDMwLDUsMjksNSwyMTUsNCwxMzQsNSwxMzYsNSwxNTEsNSwxNTEsNSwxNjAsNSwxNjAsNSwxNjAsNSwxNjAsNSwzMSw2LDMxLDYsMzEsNiwzMSw2LDMxLDYsMzEsNiwzMSw2LDMxLDYsNywyLDIxMCwzLDE4Niw0LDIwMSw0LDEwNCwwLDExNyw0LDE2NSw0LDIyMiw0LDIyNCw0LDIyNyw0LDIyOCw0LDIyOSw0LDIzMyw0LDIzNCw0LDI0OSw0LDIzNSwzLDE2Myw0LDEzLDUsMTQ2LDQsMjQ4LDQsMjU1LDQsMjEwLDQsMSw1LDE1Miw0LFxuMTUzLDQsOSw1LDIxOCw0LDE3MSw0LDE3Myw1LDE3NSw1LDE1Nyw1LDM5LDUsMTY3LDUsODksNSwxNzIsNSwxNjYsNSwxNjgsNSw3Miw1LDY1LDUsODQsNSw3NCw1LDE3OCw1LDc2LDUsMTgzLDUsMTk5LDUsNzksNSw3Nyw1LDE2OSw1LDE3MCw1LDE3NCw1LDE3Niw1LDkyLDUsMTQ4LDUsMTQxLDUsODcsNSwyMDksNSwyMDcsNSwxOTIsNSwxMDgsNSw3OCw1LDEzNyw1LDE5MCw1LDEzOSw1LDEzMyw1LDE0OSw1LDExNSw1LDIwMCw1LDIwMyw1LDIwNiw1LDExNCw1LDEyMiw1LDIwOCw1LDE1MCw1LDIxMCw1LDIxMSw1LDIwNSw1LDIxMiw1LDE1Miw1LDE3Nyw1LDIxNCw1LDE1OCw1LDE3MSw1LDIxNSw1LDIxNyw1LDIxOCw1LDIxNiw1LDEyNyw1LDIyMiw1LDIyMyw1LDIyNSw1LDIxOSw1LDEyNiw1LDIyNiw1LDIyNyw1LDE5NSw1LDE4OCw1LDIzMSw1LDEzMCw1LDIyOSw1LDE5Myw1LDIzMCw1LDE5NCw1LDIzNiw1LDIyOSw1LDIzNyw1LDIzOCw1LDIzOSw1LDI0MCw1LDI0MSw1LDI0Myw1LFxuMjUyLDUsMjQ0LDUsMjQ2LDUsMjQ1LDUsMjQ3LDUsMjQ4LDUsMjUwLDUsMjUxLDUsMjQ3LDUsMjUzLDUsMjU1LDUsMCw2LDEsNiwzLDYsMTU2LDUsMTYxLDUsMTYyLDUsMTYzLDUsNyw2LDExLDYsMTMsNiwxLDUsMjQ3LDQsMjQ3LDQsMjQ3LDQsMTc5LDQsMTc5LDQsMTc5LDQsMTc5LDQsMjQ3LDQsNzIsNCwxMDEsNCwxMDEsNCwyMzEsNCw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSwxNzgsNCw1Miw1LDUyLDUsNTIsNSw1Miw1LDI0Nyw0LDc2LDQsMTA3LDQsNTIsNSw1Miw1LDUyLDUsNTIsNSwxODAsNCwxODEsNCw1Miw1LDUyLDUsNTIsNSwyMzAsNCwyMzIsNCwxMTcsNCwxMTYsNCwxMTUsNCwxMTQsNCwyMTMsNCw4OCw0LDExMiw0LDEwNSw0LDEwOSw0LDE4MCw0LDE3NCw0LDE3NSw0LDE3Myw0LDE3Nyw0LDE4MSw0LDUyLDUsMTA4LDQsMTQzLDQsMTU4LDQsMTQyLDQsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsXG41Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDE1Miw0LDE1Nyw0LDE2NCw0LDE1Niw0LDE1Myw0LDE0NSw0LDE0NCw0LDE0Niw0LDE0Nyw0LDUyLDUsMjUxLDMsNDMsNCw1Miw1LDUyLDUsNTIsNSwxNDgsNCw1Miw1LDE0OSw0LDE2MSw0LDE2MCw0LDE1OSw0LDIzOCw0LDksNSw4LDUsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsMSw1LDI0Nyw0LDEsNCwxLDQsNTIsNSwyNDcsNCwyNDcsNCwyNDcsNCwyNDcsNCwyNDcsNCwyNDcsNCwyNDMsXG40LDc2LDQsNjcsNCw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsMjM1LDQsMjMzLDQsNTIsNSwxOTQsNCw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsNzIsNCw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSwzLDUsNTIsNSwyMDgsNCw3Miw0LDcyLDQsNzIsNCw3NCw0LDU2LDQsNjYsNCwyMzYsMywxMTEsNCw5MCw0LDkwLDQsNDEsNSwxMTEsNCw0MSw1LDE4LDQsMjMsNSwxNSw0LDEwMSw0LDkwLDQsMTc2LDQsMTAxLDQsMTAxLDQsNzMsNCw2Niw0LDUyLDUsNDQsNSw4MSw0LDgxLDQsNDMsNSw0Myw1LDgxLDQsMTIyLDQsNDYsNCwxMTEsNCw1Miw0LDUyLDQsNTIsNCw1Miw0LDgxLDQsMjQ4LDMsMTExLDQsMTIyLDQsNDYsNCw0Niw0LDExMSxcbjQsODEsNCwyNDgsMywyMTIsNCwzOCw1LDgxLDQsODEsNCwyNDgsMywxODcsNCw4MSw0LDI0OCwzLDgxLDQsMjQ4LDMsMTg3LDQsNDQsNCw0NCw0LDQ0LDQsMzMsNCwxODcsNCw0NCw0LDE4LDQsNDQsNCwzMyw0LDQ0LDQsNDQsNCw5NCw0LDg5LDQsOTQsNCw4OSw0LDk0LDQsODksNCw5NCw0LDg5LDQsODEsNCwxODIsNCw4MSw0LDUyLDUsMTg3LDQsMTkxLDQsMTkxLDQsMTg3LDQsMTA2LDQsOTUsNCwxMDQsNCwxMDIsNCwxMTEsNCwyNTQsMywzNiw0LDYsNSw2LDUsMiw1LDIsNSwyLDUsMiw1LDQ5LDUsNDksNSwyNDMsNCwxOCw1LDE4LDUsMjAsNCwyMCw0LDE4LDUsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsMTMsNSw1Miw1LDE5Niw0LDUyLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDEyOCw0LDUyLDUsMjMyLDMsMjQwLDQsNTIsNSw1Miw1LDIzOSw0LDUyLDUsNTIsXG41LDUyLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDQwLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsMjExLDQsMjEwLDQsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDU4LDQsNTIsNSw1Miw1LDUyLDUsMjcsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDEwMyw0LDUyLDUsOTYsNCw1Miw1LDUyLDUsMzEsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDI0OSw0LDUyLDUsNTIsNSw1Miw1LDI0OCw0LDUyLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSwxMzAsNCw1Miw1LDEyOSw0LDEzMyw0LDUyLDUsMjQyLDMsNTIsNSwxNiwwLDIsMiwxMiwwLDE0LFxuMCwyNCwwLDMxLDAsNTksMCwxNSwzOSw5Nyw5OSwxMTEsMTE1LDAsOTcsMTE1LDEwNSwxMTAsMCw5NywxMTYsOTcsMTEwLDAsOTcsMTE2LDExMCw1MCwwLDk3LDExNiw5NywxMTAsNTAsMCw5Nyw5OSwxMTEsMTE1LDEwNCwwLDk3LDExNSwxMDUsMTEwLDEwNCwwLDk3LDExNiw5NywxMTAsMTA0LDAsMTAwLDEwNSwxMDIsMTAyLDEwMSwxMTQsMTAxLDExMCw5OSwxMDEsMCwxMDAsMTAxLDEwMywxMTQsMTAxLDEwMSwxMTUsMCwxMTQsOTcsMTAwLDEwNSw5NywxMTAsMTE1LDAsOTksMTExLDExNSwwLDExNSwxMDUsMTEwLDAsMTE2LDk3LDExMCwwLDk5LDExMSwxMTYsMCw5OSwxMTEsMTE1LDEwNCwwLDExNSwxMDUsMTEwLDEwNCwwLDExNiw5NywxMTAsMTA0LDAsOTksMTExLDExNiwxMDQsMCwxMDEsMTIwLDExMiwwLDEwOCwxMTEsMTAzLDQ5LDQ4LDAsMTEyLDExMSwxMTksMTAxLDExNCwwLDExNSwxMDUsMTAzLDExMCwwLDExNSwxMTMsMTE0LDExNiwwLDExNSwxMTMsMTE3LDk3LDExNCwxMDEsXG4wLDk5LDEwMSwxMDUsMTA4LDAsMTAyLDEwOCwxMTEsMTExLDExNCwwLDExMiwxMDUsMCwxMTQsMTAxLDExMiwxMDgsMTA1LDk5LDk3LDExNiwxMDEsMCw5OSwxMDQsOTcsMTE0LDEwNSwxMTAsMTAwLDEwMSwxMjAsMCwxMDgsMTAxLDEwMiwxMTYsMTE1LDExNiwxMTQsMCwxMTQsMTA1LDEwMywxMDQsMTE2LDExNSwxMTYsMTE0LDAsMTE0LDEwMSwxMTgsMTAxLDExNCwxMTUsMTAxLDAsMTEyLDExNCwxMTEsMTEyLDEwMSwxMTQsMCwxMTIsOTcsMTAwLDEwOCwwLDExMiw5NywxMDAsMTE0LDAsMTEyLDk3LDEwMCw5OSwwLDExNSwxMTYsMTE0LDEwMiwxMDUsMTA4LDExNiwxMDEsMTE0LDAsMTE1LDExNiwxMDAsMTAxLDExOCwwLDExOCw5NywxMTQsMTA1LDk3LDExMCw5OSwxMDEsMCwxMDksMTAxLDEwMCwxMDUsOTcsMTEwLDAsMTA4LDExMSwxMTksMTAxLDExNCw5NSwxMTMsMTE3LDk3LDExNCwxMTYsMTA1LDEwOCwxMDEsMCwxMTcsMTEyLDExMiwxMDEsMTE0LDk1LDExMywxMTcsOTcsMTE0LFxuMTE2LDEwNSwxMDgsMTAxLDAsMTAyLDExMSwxMTQsMzIsMTEwLDExMSwxMDAsMTAxLDAsOTcsMTE0LDEwMyw5OSw2MSw2MSw0OSwwLDk5LDQ3LDEwMSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDQ1LDEwMiwxMTcsMTEwLDk5LDExNiwxMDUsMTExLDExMCwxMTUsNDYsOTksMCw5Nyw5OSwxMTEsMTE1LDcwLDExNywxMTAsOTksMCw5NywxMTUsMTA1LDExMCw3MCwxMTcsMTEwLDk5LDAsOTcsMTE2LDk3LDExMCw3MCwxMTcsMTEwLDk5LDAsOTcsMTE0LDEwMyw5OSw2MSw2MSw1MCwwLDk3LDExNiwxMTAsNTAsNzAsMTE3LDExMCw5OSwwLDk3LDk5LDExMSwxMTUsMTA0LDcwLDExNywxMTAsOTksMCw5NywxMTUsMTA1LDExMCwxMDQsNzAsMTE3LDExMCw5OSwwLDk3LDExNiw5NywxMTAsMTA0LDcwLDExNywxMTAsOTksMCwxMDAsMTA1LDEwMiwxMDIsMTAxLDExNCwxMDEsMTEwLDk5LDEwMSw3MCwxMTcsMTEwLDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLFxuMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwxLDIsMywwLDEsMiwwLDAsMiwyLDQsNSw1LDAsMSwyLDYsMiwzLDAsMSwwLDIsMCwyLDAsMCwwLDAsMCwwLDAsMSwyLDMsMCwxLDIsMCwwLDIsMiw0LDUsNSwwLDEsMiw2LDIsMywwLDEsMCwyLDAsMiwwLDAsMCwwLDAsNjMsNDgsNDgsNDgsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNCw0LDQsNCw0LFxuNCw0LDQsNCw0LDQsNCw0LDQsNCw0LDQsNCw0LDQsNCw0LDQsNCw0LDQsNCw0LDQsNCw0LDQsNCw0LDQsNCw0LDQsNCw0LDQsNCw0LDQsNCw0LDQsNCw0LDQsNCw0LDQsNCw0LDQsNCw0LDQsNCw0LDQsNCw0LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDMsMywzLDMsMywzLDMsMyw0LDQsNCw0LDQsNCw0LDQsMTE0LDk3LDEwMCw1MCwxMDAsMTAxLDEwMyw3MCwxMTcsMTEwLDk5LDAsMTAwLDEwMSwxMDMsNTAsMTE0LDk3LDEwMCw3MCwxMTcsMTEwLDk5LDAsOTksMTExLDExNSw3MCwxMTcsMTEwLDk5LDAsMTE1LDEwNSwxMTAsNzAsMTE3LDExMCw5OSwwLDExNiw5NywxMTAsNzAsMTE3LDExMCw5OSwwLDk5LDExMSwxMTYsNzAsMTE3LDExMCw5OSwwLDk5LDExMSwxMTUsMTA0LDcwLDExNywxMTAsOTksMCwxMTUsMTA1LDExMCwxMDQsNzAsMTE3LDExMCw5OSwwLFxuMTE2LDk3LDExMCwxMDQsNzAsMTE3LDExMCw5OSwwLDk5LDExMSwxMTYsMTA0LDcwLDExNywxMTAsOTksMCwxMDEsMTIwLDExMiw3MCwxMTcsMTEwLDk5LDAsMTA4LDExMSwxMDMsNzAsMTE3LDExMCw5OSwwLDEwOCwxMTEsMTAzLDQ5LDQ4LDcwLDExNywxMTAsOTksMCwxMTIsMTExLDExOSwxMDEsMTE0LDcwLDExNywxMTAsOTksMCwxMTUsMTA1LDEwMywxMTAsNzAsMTE3LDExMCw5OSwwLDExNSwxMTMsMTE0LDExNiw3MCwxMTcsMTEwLDk5LDAsMTE1LDExMywxMTcsOTcsMTE0LDEwMSw3MCwxMTcsMTEwLDk5LDAsOTksMTAxLDEwNSwxMDgsNzAsMTE3LDExMCw5OSwwLDEwMiwxMDgsMTExLDExMSwxMTQsNzAsMTE3LDExMCw5OSwwLDEwMCwxMTEsMTA5LDk3LDEwNSwxMTAsMzIsMTAxLDExNCwxMTQsMTExLDExNCwwLDk3LDExNCwxMDMsOTksNjEsNjEsNTEsMzIsMTI0LDEyNCw5NywxMTQsMTAzLDk5LDYxLDYxLDUwLDAsOTksMTA0LDk3LDExNCwxMDUsMTEwLDEwMCwxMDEsMTIwLDcwLFxuMTE3LDExMCw5OSwwLDEwOCwxMDEsMTAyLDExNiw3MCwxMTcsMTEwLDk5LDAsMTE0LDEwNSwxMDMsMTA0LDExNiw3MCwxMTcsMTEwLDk5LDAsNDksNjEsNjEsOTcsMTE0LDEwMyw5OSwwLDExNCwxMDEsMTE4LDEwMSwxMTQsMTE1LDEwMSw3MCwxMTcsMTEwLDk5LDAsMTEyLDExNCwxMTEsMTEyLDEwMSwxMTQsNzAsMTE3LDExMCw5OSwwLDExMiw5NywxMDAsMTA4LDcwLDExNywxMTAsOTksMCwxMjIsNjAsNjEsMTIyLDg0LDEwMSwxMTQsMTA5LDAsMTE1LDExMywxMDgsMTA1LDExNiwxMDEsNTEsODUsMTE2LDEwMiw1Niw2NywxMDQsOTcsMTE0LDc2LDEwMSwxMTAsMCwxMTIsOTcsMTAwLDExNCw3MCwxMTcsMTEwLDk5LDAsMTEyLDk3LDEwMCw5OSw3MCwxMTcsMTEwLDk5LDAsMTE1LDExNiwxMTQsMTAyLDEwNSwxMDgsMTE2LDEwMSwxMTQsNzAsMTE3LDExMCw5OSwwLDExOCw5NywxMTQsMTA1LDk3LDExMCw5OSwxMDEsODMsMTE2LDEwMSwxMTIsMCwxMDksMTExLDEwMCwxMDEsODMsMTE2LFxuMTAxLDExMiwwLDUxLDQ2LDQ5LDUzLDQ2LDQ5LDAsODMsODEsNzYsNzMsODQsNjksOTUsMCwwLDEsMiwzLDQsNSw2LDcsOCw5LDEwLDExLDEyLDEzLDE0LDE1LDE2LDE3LDE4LDE5LDIwLDIxLDIyLDIzLDI0LDI1LDI2LDI3LDI4LDI5LDMwLDMxLDMyLDMzLDM0LDM1LDM2LDM3LDM4LDM5LDQwLDQxLDQyLDQzLDQ0LDQ1LDQ2LDQ3LDQ4LDQ5LDUwLDUxLDUyLDUzLDU0LDU1LDU2LDU3LDU4LDU5LDYwLDYxLDYyLDYzLDY0LDk3LDk4LDk5LDEwMCwxMDEsMTAyLDEwMywxMDQsMTA1LDEwNiwxMDcsMTA4LDEwOSwxMTAsMTExLDExMiwxMTMsMTE0LDExNSwxMTYsMTE3LDExOCwxMTksMTIwLDEyMSwxMjIsOTEsOTIsOTMsOTQsOTUsOTYsOTcsOTgsOTksMTAwLDEwMSwxMDIsMTAzLDEwNCwxMDUsMTA2LDEwNywxMDgsMTA5LDExMCwxMTEsMTEyLDExMywxMTQsMTE1LDExNiwxMTcsMTE4LDExOSwxMjAsMTIxLDEyMiwxMjMsMTI0LDEyNSwxMjYsMTI3LDEyOCwxMjksMTMwLDEzMSwxMzIsMTMzLFxuMTM0LDEzNSwxMzYsMTM3LDEzOCwxMzksMTQwLDE0MSwxNDIsMTQzLDE0NCwxNDUsMTQ2LDE0NywxNDgsMTQ5LDE1MCwxNTEsMTUyLDE1MywxNTQsMTU1LDE1NiwxNTcsMTU4LDE1OSwxNjAsMTYxLDE2MiwxNjMsMTY0LDE2NSwxNjYsMTY3LDE2OCwxNjksMTcwLDE3MSwxNzIsMTczLDE3NCwxNzUsMTc2LDE3NywxNzgsMTc5LDE4MCwxODEsMTgyLDE4MywxODQsMTg1LDE4NiwxODcsMTg4LDE4OSwxOTAsMTkxLDE5MiwxOTMsMTk0LDE5NSwxOTYsMTk3LDE5OCwxOTksMjAwLDIwMSwyMDIsMjAzLDIwNCwyMDUsMjA2LDIwNywyMDgsMjA5LDIxMCwyMTEsMjEyLDIxMywyMTQsMjE1LDIxNiwyMTcsMjE4LDIxOSwyMjAsMjIxLDIyMiwyMjMsMjI0LDIyNSwyMjYsMjI3LDIyOCwyMjksMjMwLDIzMSwyMzIsMjMzLDIzNCwyMzUsMjM2LDIzNywyMzgsMjM5LDI0MCwyNDEsMjQyLDI0MywyNDQsMjQ1LDI0NiwyNDcsMjQ4LDI0OSwyNTAsMjUxLDI1MiwyNTMsMjU0LDI1NSwwLDEsMSwwLDAsMCwwLFxuMSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLFxuMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDQsNSwzLDUsMSw1LDEsNSwyLDUsMiw1LDEsNSwxLDUsNCw1LDMsNSwxLDUsMSw1LDIsNSwyLDUsMSw1LDEsNSwxMTUsMTE2LDExNCwxMDUsMTEwLDEwMywzMiwxMTEsMTE0LDMyLDk4LDEwOCwxMTEsOTgsMzIsMTE2LDExMSwxMTEsMzIsOTgsMTA1LDEwMywwLDk5LDk3LDExMCwxMTAsMTExLDExNiwzMiwxMTEsMTEyLDEwMSwxMTAsMzIsMTE4LDEwNSwxMTQsMTE2LDExNyw5NywxMDgsMzIsMTE2LDk3LDk4LDEwOCwxMDEsNTgsMzIsMzcsMTE1LDAsOTksOTcsMTEwLDExMCwxMTEsMTE2LDMyLDExMSwxMTIsMTAxLDExMCwzMiwxMTYsOTcsOTgsMTA4LDEwMSwzMiwxMTksMTA1LDExNiwxMDQsMTExLDExNywxMTYsMzIsMTE0LDExMSwxMTksMTA1LDEwMCw1OCwzMiwzNywxMTUsMCw5OSw5NywxMTAsMTEwLDExMSwxMTYsMzIsMTExLDExMiwxMDEsMTEwLDMyLDExOCwxMDUsMTAxLDExOSw1OCwzMiwzNywxMTUsMCwxMTAsMTExLDMyLDExNSwxMTcsXG45OSwxMDQsMzIsOTksMTExLDEwOCwxMTcsMTA5LDExMCw1OCwzMiwzNCwzNywxMTUsMzQsMCwxMDIsMTExLDExNCwxMDEsMTA1LDEwMywxMTAsMzIsMTA3LDEwMSwxMjEsMCwxMDUsMTEwLDEwMCwxMDEsMTIwLDEwMSwxMDAsMCw5OSw5NywxMTAsMTEwLDExMSwxMTYsMzIsMTExLDExMiwxMDEsMTEwLDMyLDM3LDExNSwzMiw5OSwxMTEsMTA4LDExNywxMDksMTEwLDMyLDEwMiwxMTEsMTE0LDMyLDExOSwxMTQsMTA1LDExNiwxMDUsMTEwLDEwMywwLDE1MSwwLDAsMCwxMDQsMCwwLDAsODIsMSwxLDAsMzMsMCw3LDEsOTYsMCwwLDEsODcsMSwwLDAsMTMsMCwyLDAsMTExLDAsMCwwLDc1LDAsMCwwLDM3LDExNSwwLDQyLDYzLDkxLDAsMzcsOTUsMCwxLDAsMCwwLDAsMCwwLDAsMCwwLDAsMSwxLDEsMSwxLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDEsMCwxMjgsMCw2NCwwLDAsMTI4LDAsMCwwLDAsMCwwLDAsMCwxMiwxMiwxMiwxMiwxMiwxMiwxMiwxMiwxMiwxMixcbjAsMCwwLDAsMCwwLDAsMTAsMTAsMTAsMTAsMTAsMTAsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDEyOCwwLDAsMCw2NCwxMjgsNDIsNDIsNDIsNDIsNDIsNDIsMzQsMzQsMzQsMzQsMzQsMzQsMzQsMzQsMzQsMzQsMzQsMzQsMzQsMzQsMzQsMzQsMzQsMzQsMzQsMzQsMCwwLDAsMCwwLDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LFxuNjQsNjQsNjQsNjQsNjQsNjQsNjQsNjQsNjQsNjQsNjQsNjQsNjQsNjQsNjQsNjQsNjQsNjQsNjQsNjQsMSw0LDMsMiw1LDExNiwxMTQsMTA1LDEwMywxMDMsMTAxLDExNCwwLDExNiwxMDEsMTA5LDExMiwwLDUwLDQ4LDQ5LDU0LDQ1LDQ5LDQ5LDQ1LDQ4LDUyLDMyLDQ5LDUwLDU4LDQ4LDU2LDU4LDUyLDU3LDMyLDQ5LDQ5LDUxLDU0LDU2LDU0LDUxLDk5LDU1LDU0LDUzLDU1LDU0LDQ5LDQ5LDQ4LDEwMSw1NSw0OSw0OCwxMDAsMTAwLDUzLDEwMCw1NCw1Nyw5Nyw5OCw1NCw5OCwxMDIsNTEsNTIsNTUsOTksNTQsNTMsMTAxLDUxLDU0LDAsMTE3LDExMCwxMDcsMTEwLDExMSwxMTksMTEwLDMyLDEwMCw5NywxMTYsOTcsOTgsOTcsMTE1LDEwMSw1OCwzMiwzNywxMTUsMCw3Myw3OCw4NCw2OSw3MSw2OSw4MiwwLDU3LDUwLDUwLDUxLDUxLDU1LDUwLDQ4LDUxLDU0LDU2LDUzLDUyLDU1LDU1LDUzLDU2LDQ4LDAsMiwyLDMsNSwzLDQsNSw0LDAsMSwyLDQsOSwxMiwxNSwyMCwxMTEsMTEwLFxuMTExLDEwMiwxMDIsOTcsMTA4LDExNSwxMDEsMTIxLDEwMSwxMTUsMTE2LDExNCwxMTcsMTAxLDEyMCwxMTYsMTE0LDk3LDEwMiwxMTcsMTA4LDEwOCwwLDEsMCwwLDAsMSwxLDMsMiw3NiwxMDUsMTE3LDc0LDAsNDUsMCwwLDgyLDAsNzcsMCwwLDQyLDEyLDc4LDE1LDAsMTE2LDg1LDU0LDExMiwwLDE5LDAsMCwxMjEsMCwxMTksMTE1LDAsMjIsOTMsMCw5LDAsMCw3MCw3MSwwLDY5LDYsMCw0OCw5MCwxMDIsMCwxMTgsMTAxLDAsMCw0NCwwLDEwMywyNCwwLDE3LDAsMTIyLDUzLDIzLDAsNSwxMTAsMjUsOTYsMCwwLDEyNCwxMDYsNjAsMTIzLDU3LDI4LDU1LDAsOTEsMCwxMDAsMjYsMCw5OSwwLDAsMCw5NSw5Miw5Nyw4OCwxMDksMTQsMzksMTA4LDAsODEsMCwxOCw4OSwxMTEsMzIsMCwxMjAsODAsMTEzLDYyLDQ2LDg0LDAsMCw5NCw0MCw1OSwxMTQsMCwzNiwwLDAsMjksMCw4Niw2Myw2NCwwLDIwLDYxLDAsNTYsNyw3LDUsNCw2LDQsNSwzLDYsNywzLDYsNiw3LDcsMyw4LDIsNiw1LFxuNCw0LDMsMTAsNCw2LDExLDYsMiw3LDUsNSw5LDYsOSw5LDcsMTAsMTAsNCw2LDIsMyw5LDQsMiw2LDUsNyw0LDUsNyw2LDYsNSw2LDUsNSw5LDcsNywzLDIsNCw0LDcsMyw2LDQsNyw2LDEyLDYsOSw0LDYsNSw0LDcsNiw1LDYsNyw1LDQsNSw2LDUsNywzLDcsMTMsMiwyLDQsNiw2LDgsNSwxNywxMiw3LDgsOCwyLDQsNCw0LDQsNCwyLDIsNiw1LDgsNSw4LDMsNSw1LDYsNCw5LDMsODIsNjksNzMsNzgsNjgsNjksODgsNjksNjgsNjksODMsNjcsNjUsODAsNjksNjUsNjcsNzIsNjksNjcsNzUsNjksODksNjYsNjksNzAsNzksODIsNjksNzMsNzEsNzgsNzksODIsNjksNzEsNjksODgsODAsNzYsNjUsNzMsNzgsODMsODQsNjksNjUsNjgsNjgsNjUsODQsNjUsNjYsNjUsODMsNjksNzYsNjksNjcsODQsNjUsNjYsNzYsNjksNzAsODQsNzIsNjksNzgsNjgsNjksNzAsNjksODIsODIsNjUsNjYsNzYsNjksNzYsODMsNjksODgsNjcsNjksODAsODQsODIsNjUsNzgsODMsNjUsNjcsODQsNzMsXG43OSw3OCw2NSw4NCw4NSw4Miw2NSw3Niw4NCw2OSw4Miw2NSw3Myw4Myw2OSw4OCw2Nyw3Niw4NSw4Myw3Myw4Niw2OSw4OCw3Myw4Myw4NCw4Myw2NSw4Niw2OSw4MCw3OSw3Myw3OCw4NCw2OSw4Miw4Myw2OSw2Nyw4NCw4Miw3Myw3MSw3MSw2OSw4Miw2OSw3MCw2OSw4Miw2OSw3OCw2Nyw2OSw4Myw2Nyw3OSw3OCw4Myw4NCw4Miw2NSw3Myw3OCw4NCw3OSw3MCw3MCw4Myw2OSw4NCw2OSw3Nyw4MCw3OSw4Miw2NSw4Miw4OSw4NSw3OCw3Myw4MSw4NSw2OSw4Miw4OSw4Nyw3Myw4NCw3Miw3OSw4NSw4NCw2OSw4Miw2OSw3Niw2OSw2NSw4Myw2OSw2NSw4NCw4NCw2NSw2Nyw3Miw2NSw4Niw3Myw3OCw3MSw4Miw3OSw4NSw4MCw2OCw2NSw4NCw2OSw2Niw2OSw3MSw3Myw3OCw3OCw2OSw4Miw2OSw2Nyw4NSw4Miw4Myw3Myw4Niw2OSw2Niw2OSw4NCw4Nyw2OSw2OSw3OCw3OSw4NCw3OCw4NSw3Niw3Niw3Myw3NSw2OSw2Nyw2NSw4Myw2Nyw2NSw2OCw2OSw3Niw2OSw4NCw2OSw2NyxcbjY1LDgzLDY5LDY3LDc5LDc2LDc2LDY1LDg0LDY5LDY3LDgyLDY5LDY1LDg0LDY5LDY3LDg1LDgyLDgyLDY5LDc4LDg0LDk1LDY4LDY1LDg0LDY5LDY4LDY5LDg0LDY1LDY3LDcyLDczLDc3LDc3LDY5LDY4LDczLDY1LDg0LDY5LDc0LDc5LDczLDc4LDgzLDY5LDgyLDg0LDc3LDY1LDg0LDY3LDcyLDgwLDc2LDY1LDc4LDY1LDc2LDg5LDkwLDY5LDgwLDgyLDY1LDcxLDc3LDY1LDY2LDc5LDgyLDg0LDg2LDY1LDc2LDg1LDY5LDgzLDg2LDczLDgyLDg0LDg1LDY1LDc2LDczLDc3LDczLDg0LDg3LDcyLDY5LDc4LDg3LDcyLDY5LDgyLDY5LDc4LDY1LDc3LDY5LDY1LDcwLDg0LDY5LDgyLDY5LDgwLDc2LDY1LDY3LDY5LDY1LDc4LDY4LDY5LDcwLDY1LDg1LDc2LDg0LDY1LDg1LDg0LDc5LDczLDc4LDY3LDgyLDY5LDc3LDY5LDc4LDg0LDY3LDY1LDgzLDg0LDY3LDc5LDc2LDg1LDc3LDc4LDY3LDc5LDc3LDc3LDczLDg0LDY3LDc5LDc4LDcwLDc2LDczLDY3LDg0LDY3LDgyLDc5LDgzLDgzLFxuNjcsODUsODIsODIsNjksNzgsODQsOTUsODQsNzMsNzcsNjksODMsODQsNjUsNzcsODAsODIsNzMsNzcsNjUsODIsODksNjgsNjksNzAsNjksODIsODIsNjksNjgsNzMsODMsODQsNzMsNzgsNjcsODQsNjgsODIsNzksODAsNzAsNjUsNzMsNzYsNzAsODIsNzksNzcsNzAsODUsNzYsNzYsNzEsNzYsNzksNjYsODksNzMsNzAsNzMsODMsNzgsODUsNzYsNzYsNzksODIsNjgsNjksODIsNjksODMsODQsODIsNzMsNjcsODQsODIsNzMsNzEsNzIsODQsODIsNzksNzYsNzYsNjYsNjUsNjcsNzUsODIsNzksODcsODUsNzgsNzMsNzksNzgsODUsODMsNzMsNzgsNzEsODYsNjUsNjcsODUsODUsNzcsODYsNzMsNjksODcsNzMsNzgsNzMsODQsNzMsNjUsNzYsNzYsODksOTMsNTYsMTQwLDcwLDQyLDcyLDEwNCw3OSw2MywxMTMsNzQsNzUsMzEsMiw3NywxNDIsNjksMjQsMTE5LDE2LDk4LDEzOCwxMSwxMTIsMTM5LDExNyw2LDU4LDEwNyw5OCwxNDEsODMsOSwyMCwxMywxMTgsODgsMTA1LDk5LDEzMSxcbjgxLDgwLDExMSwyMSwyMSwyNywxMDMsMywyNSw5Miw5OCwxNCw2MiwxMjgsMTI3LDExMCw1LDk4LDg0LDMyLDM1LDE5LDc4LDEwMSwzMSw2NSw2MSwxMDksMTM2LDUzLDE3LDk1LDcxLDgsMTI0LDEwOCwzMCw0LDYwLDgyLDU3LDEyMCw5MSwxMjksMTM3LDEzMCw5NCw1OSw4NSwyOCwxMDAsMTA2LDE1LDMzLDY2LDY3LDEwLDY4LDk4LDk1LDk1LDEwMiw3LDEyMSwyOSwxMTQsNzMsMTIzLDk4LDMxLDY0LDE4LDM0LDEyNiw4Niw5OCwxMiw4NywxMTUsMTI1LDg5LDkwLDc2LDExNiwwLDAsMCwwLDQsMCwwLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwwLDAsMCwxMywwLDAsMCwwLDAsNywwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwzMywwLDIxLDAsMCwwLDAsMCw1MCwwLDQzLDMsNDcsMCwwLDAsMCwzMCwwLDU4LDAsMzgsMCwwLDAsMSw2NiwwLDAsNjcsMCw0MSwwLDAsMCwwLDAsMCw0OSw2NSwwLDAsMCwwLDMxLDUyLDE2LDM0LDEwLDAsMCwwLDAsMCwwLDAsMTEsNzIsNzksMCw4LFxuMCwxMDQsOTgsMCwxMDcsMCw4NywwLDc1LDUxLDAsMjcsMzcsNzMsODMsMCwzNSw2OCwwLDAsOTUsODIsNzksODcsNzMsNjgsOTUsMCw4Miw3OSw4Nyw3Myw2OCwwLDc5LDczLDY4LDAsMTE1LDExMywxMDgsMTA1LDExNiwxMDEsOTUsMTE2LDEwMSwxMDksMTEyLDk1LDEwOSw5NywxMTUsMTE2LDEwMSwxMTQsMCwxMTUsMTEzLDEwOCwxMDUsMTE2LDEwMSw5NSwxMDksOTcsMTE1LDExNiwxMDEsMTE0LDAsNDksMCw2Nyw4Miw2OSw2NSw4NCw2OSwzMiw4NCw2NSw2Niw3Niw2OSwzMiwxMjAsNDAsMTE2LDEyMSwxMTIsMTAxLDMyLDExNiwxMDEsMTIwLDExNiw0NCwxMTAsOTcsMTA5LDEwMSwzMiwxMTYsMTAxLDEyMCwxMTYsNDQsMTE2LDk4LDEwOCw5NSwxMTAsOTcsMTA5LDEwMSwzMiwxMTYsMTAxLDEyMCwxMTYsNDQsMTE0LDExMSwxMTEsMTE2LDExMiw5NywxMDMsMTAxLDMyLDEwNSwxMTAsMTE2LDEwMSwxMDMsMTAxLDExNCw0NCwxMTUsMTEzLDEwOCwzMiwxMTYsMTAxLDEyMCwxMTYsXG40MSwwLDk3LDExNiwxMTYsOTcsOTksMTA0LDEwMSwxMDAsMzIsMTAwLDk3LDExNiw5Nyw5OCw5NywxMTUsMTAxLDExNSwzMiwxMDksMTE3LDExNSwxMTYsMzIsMTE3LDExNSwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDk3LDEwOSwxMDEsMzIsMTE2LDEwMSwxMjAsMTE2LDMyLDEwMSwxMTAsOTksMTExLDEwMCwxMDUsMTEwLDEwMywzMiw5NywxMTUsMzIsMTA5LDk3LDEwNSwxMTAsMzIsMTAwLDk3LDExNiw5Nyw5OCw5NywxMTUsMTAxLDAsMTE3LDExMCwxMTUsMTE3LDExMiwxMTIsMTExLDExNCwxMTYsMTAxLDEwMCwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTAyLDExMSwxMTQsMTA5LDk3LDExNiwwLDgzLDY5LDc2LDY5LDY3LDg0LDMyLDExMCw5NywxMDksMTAxLDQ0LDMyLDExNCwxMTEsMTExLDExNiwxMTIsOTcsMTAzLDEwMSw0NCwzMiwxMTUsMTEzLDEwOCwzMiw3MCw4Miw3OSw3NywzMiwzNCwzNywxMTksMzQsNDYsMzcsMTE1LDMyLDc5LDgyLDY4LDY5LDgyLDMyLDY2LDg5LDMyLFxuMTE0LDExMSwxMTksMTA1LDEwMCwwLDExNSwxMTMsMTA4LDEwNSwxMTYsMTAxLDk1LDExNSwxMTYsOTcsMTE2LDQ5LDAsODMsNjksNzYsNjksNjcsODQsMzIsMTE2LDk4LDEwOCw0NCwxMDUsMTAwLDEyMCw0NCwxMTUsMTE2LDk3LDExNiwzMiw3MCw4Miw3OSw3NywzMiwzNyw4MSw0NiwxMTUsMTEzLDEwOCwxMDUsMTE2LDEwMSw5NSwxMTUsMTE2LDk3LDExNiw0OSwwLDExNywxMTAsMTExLDExNCwxMDAsMTAxLDExNCwxMDEsMTAwLDQyLDAsMTE1LDEyMiw2MSw5MSw0OCw0NSw1Nyw5Myw0MiwwLDExMCwxMTEsMTE1LDEwNywxMDUsMTEyLDExNSw5OSw5NywxMTAsNDIsMCw5OSwxMTQsMTAxLDk3LDExNiwxMDEsMzIsMCwxMDUsMTEwLDExOCw5NywxMDgsMTA1LDEwMCwzMiwxMTQsMTExLDExMSwxMTYsMTEyLDk3LDEwMywxMDEsMCw2MywwLDEwOSw5NywxMDgsMTAyLDExMSwxMTQsMTA5LDEwMSwxMDAsMzIsMTAwLDk3LDExNiw5Nyw5OCw5NywxMTUsMTAxLDMyLDExNSw5OSwxMDQsMTAxLFxuMTA5LDk3LDMyLDQwLDM3LDExNSw0MSwwLDM3LDEyMiwzMiw0NSwzMiwzNywxMTUsMCwxMDAsOTcsMTE2LDk3LDk4LDk3LDExNSwxMDEsMzIsOTksMTExLDExNCwxMTQsMTE3LDExMiwxMTYsMTA1LDExMSwxMTAsMCwzNywxMTUsMzIsOTcsMTE2LDMyLDEwOCwxMDUsMTEwLDEwMSwzMiwzNywxMDAsMzIsMTExLDEwMiwzMiw5MSwzNyw0Niw0OSw0OCwxMTUsOTMsMCwxMTcsMTEwLDk3LDk4LDEwOCwxMDEsMzIsMTE2LDExMSwzMiwxMDAsMTAxLDEwOCwxMDEsMTE2LDEwMSw0NywxMDksMTExLDEwMCwxMDUsMTAyLDEyMSwzMiw5OSwxMTEsMTA4LDEwOCw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTE1LDEwMSwxMTMsMTE3LDEwMSwxMTAsOTksMTAxLDMyLDEwMCwxMTcsMTAxLDMyLDExNiwxMTEsMzIsOTcsOTksMTE2LDEwNSwxMTgsMTAxLDMyLDExNSwxMTYsOTcsMTE2LDEwMSwxMDksMTAxLDExMCwxMTYsMTE1LDAsNzgsNzksNjcsNjUsODMsNjksMCw4Miw4NCw4Miw3Myw3NywwLDEwOSw5NyxcbjEwNSwxMTAsMCwxMTUsMTA1LDEwOSwxMTIsMTA4LDEwMSwwLDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDAsMTE3LDExMCwxMDUsOTksMTExLDEwMCwxMDEsNTQsNDksMCwxMDIsMTE2LDExNSw1MSw5NSwxMTYsMTExLDEwNywxMDEsMTEwLDEwNSwxMjIsMTAxLDExNCwwLDExNSwxMTBdLFwiaThcIiw0LGwuYWErMTAyNDApO1xueihbMTA1LDExMiwxMTIsMTAxLDExNiwwLDExMSwxMDIsMTAyLDExNSwxMDEsMTE2LDExNSwwLDEwOSw5NywxMTYsOTksMTA0LDEwNSwxMTAsMTAyLDExMSwwLDExMSwxMTIsMTE2LDEwNSwxMDksMTA1LDEyMiwxMDEsMCwxMDIsMTE2LDExNSw1MSwwLDEwMiwxMTYsMTE1LDUyLDAsMTAyLDExNiwxMTUsNTEsMTE2LDExMSwxMDcsMTAxLDExMCwxMDUsMTIyLDEwMSwwLDY3LDgyLDY5LDY1LDg0LDY5LDMyLDg0LDY1LDY2LDc2LDY5LDMyLDEyMCw0MCwxMDUsMTEwLDExMiwxMTcsMTE2LDQ0LDMyLDExNiwxMTEsMTA3LDEwMSwxMTAsNDQsMzIsMTE1LDExNiw5NywxMTQsMTE2LDQ0LDMyLDEwMSwxMTAsMTAwLDQ0LDMyLDExMiwxMTEsMTE1LDEwNSwxMTYsMTA1LDExMSwxMTAsNDEsMCwxMTcsMTEwLDEwNywxMTAsMTExLDExOSwxMTAsMzIsMTE2LDExMSwxMDcsMTAxLDExMCwxMDUsMTIyLDEwMSwxMTQsNTgsMzIsMzcsMTE1LDAsNjUsNzYsODQsNjksODIsMzIsODQsNjUsNjYsNzYsNjksXG4zMiwzNyw4MSw0NiwzOSwzNywxMTMsOTUsOTksMTExLDExMCwxMTYsMTAxLDExMCwxMTYsMzksMzIsMzIsODIsNjksNzgsNjUsNzcsNjksMzIsODQsNzksMzIsMzksMzcsMTEzLDk1LDk5LDExMSwxMTAsMTE2LDEwMSwxMTAsMTE2LDM5LDU5LDAsNjUsNzYsODQsNjksODIsMzIsODQsNjUsNjYsNzYsNjksMzIsMzcsODEsNDYsMzksMzcsMTEzLDk1LDEwMCwxMTEsOTksMTE1LDEwNSwxMjIsMTAxLDM5LDMyLDMyLDgyLDY5LDc4LDY1LDc3LDY5LDMyLDg0LDc5LDMyLDM5LDM3LDExMyw5NSwxMDAsMTExLDk5LDExNSwxMDUsMTIyLDEwMSwzOSw1OSwwLDY1LDc2LDg0LDY5LDgyLDMyLDg0LDY1LDY2LDc2LDY5LDMyLDM3LDgxLDQ2LDM5LDM3LDExMyw5NSwxMTUsMTE2LDk3LDExNiwzOSwzMiwzMiw4Miw2OSw3OCw2NSw3Nyw2OSwzMiw4NCw3OSwzMiwzOSwzNywxMTMsOTUsMTE1LDExNiw5NywxMTYsMzksNTksMCw2NSw3Niw4NCw2OSw4MiwzMiw4NCw2NSw2Niw3Niw2OSwzMiwzNyw4MSxcbjQ2LDM5LDM3LDExMyw5NSwxMTUsMTAxLDEwMywxMDksMTAxLDExMCwxMTYsMTE1LDM5LDMyLDgyLDY5LDc4LDY1LDc3LDY5LDMyLDg0LDc5LDMyLDM5LDM3LDExMyw5NSwxMTUsMTAxLDEwMywxMDksMTAxLDExMCwxMTYsMTE1LDM5LDU5LDAsNjUsNzYsODQsNjksODIsMzIsODQsNjUsNjYsNzYsNjksMzIsMzcsODEsNDYsMzksMzcsMTEzLDk1LDExNSwxMDEsMTAzLDEwMCwxMDUsMTE0LDM5LDMyLDMyLDMyLDgyLDY5LDc4LDY1LDc3LDY5LDMyLDg0LDc5LDMyLDM5LDM3LDExMyw5NSwxMTUsMTAxLDEwMywxMDAsMTA1LDExNCwzOSw1OSwwLDY4LDY5LDc2LDY5LDg0LDY5LDMyLDcwLDgyLDc5LDc3LDMyLDM3LDgxLDQ2LDM5LDM3LDExMyw5NSw5OSwxMTEsMTEwLDExNiwxMDEsMTEwLDExNiwzOSwzMiw4Nyw3Miw2OSw4Miw2OSwzMiwxMTQsMTExLDExOSwxMDUsMTAwLDMyLDYxLDMyLDYzLDAsODMsNjksNzYsNjksNjcsODQsMzIsNzgsNzksODQsMzIsNjksODgsNzMsODMsODQsODMsNDAsXG44Myw2OSw3Niw2OSw2Nyw4NCwzMiwxMDAsMTExLDk5LDEwNSwxMDAsMzIsNzAsODIsNzksNzcsMzIsMzcsODEsNDYsMzksMzcsMTEzLDk1LDk5LDExMSwxMTAsMTE2LDEwMSwxMTAsMTE2LDM5LDMyLDg3LDcyLDY5LDgyLDY5LDMyLDExNCwxMTEsMTE5LDEwNSwxMDAsMzMsNjEsNjMsNDEsMCw2OCw2OSw3Niw2OSw4NCw2OSwzMiw3MCw4Miw3OSw3NywzMiwzNyw4MSw0NiwzOSwzNywxMTMsOTUsOTksMTExLDExMCwxMTYsMTAxLDExMCwxMTYsMzksMCw2OCw2OSw3Niw2OSw4NCw2OSwzMiw3MCw4Miw3OSw3NywzMiwzNyw4MSw0NiwzOSwzNywxMTMsOTUsMTE1LDEwMSwxMDMsMTA5LDEwMSwxMTAsMTE2LDExNSwzOSwwLDY4LDY5LDc2LDY5LDg0LDY5LDMyLDcwLDgyLDc5LDc3LDMyLDM3LDgxLDQ2LDM5LDM3LDExMyw5NSwxMTUsMTAxLDEwMywxMDAsMTA1LDExNCwzOSwwLDY4LDY5LDc2LDY5LDg0LDY5LDMyLDcwLDgyLDc5LDc3LDMyLDM3LDgxLDQ2LDM5LDM3LDExMyw5NSwxMDAsMTExLFxuOTksMTE1LDEwNSwxMjIsMTAxLDM5LDAsNjgsNjksNzYsNjksODQsNjksMzIsNzAsODIsNzksNzcsMzIsMzcsODEsNDYsMzksMzcsMTEzLDk1LDExNSwxMTYsOTcsMTE2LDM5LDAsODMsNjksNzYsNjksNjcsODQsMzIsMzcsMTE1LDMyLDg3LDcyLDY5LDgyLDY5LDMyLDExNCwxMTEsMTE5LDEwNSwxMDAsNjEsNjMsMCw4Myw2OSw3Niw2OSw2Nyw4NCwzMiw0MCw4Myw2OSw3Niw2OSw2Nyw4NCwzMiwxMDksOTcsMTIwLDQwLDEwNSwxMDAsMTIwLDQxLDMyLDcwLDgyLDc5LDc3LDMyLDM3LDgxLDQ2LDM5LDM3LDExMyw5NSwxMTUsMTAxLDEwMywxMDAsMTA1LDExNCwzOSwzMiw4Nyw3Miw2OSw4Miw2OSwzMiwxMDgsMTAxLDExOCwxMDEsMTA4LDMyLDYxLDMyLDYzLDQxLDMyLDQzLDMyLDQ5LDAsODIsNjksODAsNzYsNjUsNjcsNjksMzIsNzMsNzgsODQsNzksMzIsMzcsODEsNDYsMzksMzcsMTEzLDk1LDExNSwxMDEsMTAzLDEwOSwxMDEsMTEwLDExNiwxMTUsMzksNDAsOTgsMTA4LDExMSw5OSxcbjEwNywxMDUsMTAwLDQ0LDMyLDk4LDEwOCwxMTEsOTksMTA3LDQxLDMyLDg2LDY1LDc2LDg1LDY5LDgzLDQwLDYzLDQ0LDMyLDYzLDQxLDAsODMsNjksNzYsNjksNjcsODQsMzIsOTksMTExLDk3LDEwOCwxMDEsMTE1LDk5LDEwMSw0MCw0MCw4Myw2OSw3Niw2OSw2Nyw4NCwzMiwxMDksOTcsMTIwLDQwLDk4LDEwOCwxMTEsOTksMTA3LDEwNSwxMDAsNDEsMzIsNzAsODIsNzksNzcsMzIsMzcsODEsNDYsMzksMzcsMTEzLDk1LDExNSwxMDEsMTAzLDEwOSwxMDEsMTEwLDExNiwxMTUsMzksNDEsMzIsNDMsMzIsNDksNDQsMzIsNDksNDEsMCw4Miw2OSw4MCw3Niw2NSw2Nyw2OSwzMiw3Myw3OCw4NCw3OSwzMiwzNyw4MSw0NiwzOSwzNywxMTMsOTUsMTE1LDEwMSwxMDMsMTAwLDEwNSwxMTQsMzksMzIsODYsNjUsNzYsODUsNjksODMsNDAsNjMsNDQsNjMsNDQsNjMsNDQsNjMsNDQsNjMsNDQsNjMsNDEsMCw4Myw2OSw3Niw2OSw2Nyw4NCwzMiwxMDUsMTAwLDEyMCw0NCwzMiwxMTUsMTE2LFxuOTcsMTE0LDExNiw5NSw5OCwxMDgsMTExLDk5LDEwNyw0NCwzMiwxMDgsMTAxLDk3LDExOCwxMDEsMTE1LDk1LDEwMSwxMTAsMTAwLDk1LDk4LDEwOCwxMTEsOTksMTA3LDQ0LDMyLDEwMSwxMTAsMTAwLDk1LDk4LDEwOCwxMTEsOTksMTA3LDQ0LDMyLDExNCwxMTEsMTExLDExNiwzMiw3MCw4Miw3OSw3NywzMiwzNyw4MSw0NiwzOSwzNywxMTMsOTUsMTE1LDEwMSwxMDMsMTAwLDEwNSwxMTQsMzksMzIsODcsNzIsNjksODIsNjksMzIsMTA4LDEwMSwxMTgsMTAxLDEwOCwzMiw2MSwzMiw2MywzMiw3OSw4Miw2OCw2OSw4MiwzMiw2Niw4OSwzMiwxMDUsMTAwLDEyMCwzMiw2NSw4Myw2NywwLDgzLDY5LDc2LDY5LDY3LDg0LDMyLDEwNSwxMDAsMTIwLDQ0LDMyLDExNSwxMTYsOTcsMTE0LDExNiw5NSw5OCwxMDgsMTExLDk5LDEwNyw0NCwzMiwxMDgsMTAxLDk3LDExOCwxMDEsMTE1LDk1LDEwMSwxMTAsMTAwLDk1LDk4LDEwOCwxMTEsOTksMTA3LDQ0LDMyLDEwMSwxMTAsMTAwLDk1LDk4LFxuMTA4LDExMSw5OSwxMDcsNDQsMzIsMTE0LDExMSwxMTEsMTE2LDMyLDcwLDgyLDc5LDc3LDMyLDM3LDgxLDQ2LDM5LDM3LDExMyw5NSwxMTUsMTAxLDEwMywxMDAsMTA1LDExNCwzOSwzMiw4Nyw3Miw2OSw4Miw2OSwzMiwxMDgsMTAxLDExOCwxMDEsMTA4LDMyLDY2LDY5LDg0LDg3LDY5LDY5LDc4LDMyLDYzLDMyLDY1LDc4LDY4LDMyLDYzLDc5LDgyLDY4LDY5LDgyLDMyLDY2LDg5LDMyLDEwOCwxMDEsMTE4LDEwMSwxMDgsMzIsNjgsNjksODMsNjcsNDQsMzIsMTA1LDEwMCwxMjAsMzIsNjUsODMsNjcsMCw4Myw2OSw3Niw2OSw2Nyw4NCwzMiw5OSwxMTEsMTE3LDExMCwxMTYsNDAsNDIsNDEsMzIsNzAsODIsNzksNzcsMzIsMzcsODEsNDYsMzksMzcsMTEzLDk1LDExNSwxMDEsMTAzLDEwMCwxMDUsMTE0LDM5LDMyLDg3LDcyLDY5LDgyLDY5LDMyLDEwOCwxMDEsMTE4LDEwMSwxMDgsMzIsNjEsMzIsNjMsMCw4Myw2OSw3Niw2OSw2Nyw4NCwzMiwxMDksOTcsMTIwLDQwLDEwOCwxMDEsXG4xMTgsMTAxLDEwOCw0MSwzMiw3MCw4Miw3OSw3NywzMiwzNyw4MSw0NiwzOSwzNywxMTMsOTUsMTE1LDEwMSwxMDMsMTAwLDEwNSwxMTQsMzksMzIsODcsNzIsNjksODIsNjksMzIsMTA4LDEwMSwxMTgsMTAxLDEwOCwzMiw2Niw2OSw4NCw4Nyw2OSw2OSw3OCwzMiw2MywzMiw2NSw3OCw2OCwzMiw2MywwLDY4LDY5LDc2LDY5LDg0LDY5LDMyLDcwLDgyLDc5LDc3LDMyLDM3LDgxLDQ2LDM5LDM3LDExMyw5NSwxMTUsMTAxLDEwMywxMDAsMTA1LDExNCwzOSwzMiw4Nyw3Miw2OSw4Miw2OSwzMiwxMDgsMTAxLDExOCwxMDEsMTA4LDMyLDYxLDMyLDYzLDAsNjgsNjksNzYsNjksODQsNjksMzIsNzAsODIsNzksNzcsMzIsMzcsODEsNDYsMzksMzcsMTEzLDk1LDExNSwxMDEsMTAzLDEwOSwxMDEsMTEwLDExNiwxMTUsMzksMzIsODcsNzIsNjksODIsNjksMzIsOTgsMTA4LDExMSw5OSwxMDcsMTA1LDEwMCwzMiw2Niw2OSw4NCw4Nyw2OSw2OSw3OCwzMiw2MywzMiw2NSw3OCw2OCwzMiw2MyxcbjAsNzMsNzgsODMsNjksODIsODQsMzIsNzMsNzgsODQsNzksMzIsMzcsODEsNDYsMzksMzcsMTEzLDk1LDk5LDExMSwxMTAsMTE2LDEwMSwxMTAsMTE2LDM5LDMyLDg2LDY1LDc2LDg1LDY5LDgzLDQwLDM3LDExNSw0MSwwLDY4LDY5LDc2LDY5LDg0LDY5LDMyLDcwLDgyLDc5LDc3LDMyLDM3LDgxLDQ2LDM5LDM3LDExMyw5NSwxMDAsMTExLDk5LDExNSwxMDUsMTIyLDEwMSwzOSwzMiw4Nyw3Miw2OSw4Miw2OSwzMiwxMDAsMTExLDk5LDEwNSwxMDAsMzIsNjEsMzIsNjMsMCw4Miw2OSw4MCw3Niw2NSw2Nyw2OSwzMiw3Myw3OCw4NCw3OSwzMiwzNyw4MSw0NiwzOSwzNywxMTMsOTUsMTAwLDExMSw5OSwxMTUsMTA1LDEyMiwxMDEsMzksMzIsODYsNjUsNzYsODUsNjksODMsNDAsNjMsNDQsNjMsNDEsMCw4Myw2OSw3Niw2OSw2Nyw4NCwzMiwxMTUsMTA1LDEyMiwxMDEsMzIsNzAsODIsNzksNzcsMzIsMzcsODEsNDYsMzksMzcsMTEzLDk1LDEwMCwxMTEsOTksMTE1LDEwNSwxMjIsMTAxLFxuMzksMzIsODcsNzIsNjksODIsNjksMzIsMTAwLDExMSw5OSwxMDUsMTAwLDYxLDYzLDAsODMsNjksNzYsNjksNjcsODQsMzIsMTE4LDk3LDEwOCwxMTcsMTAxLDMyLDcwLDgyLDc5LDc3LDMyLDM3LDgxLDQ2LDM5LDM3LDExMyw5NSwxMTUsMTE2LDk3LDExNiwzOSwzMiw4Nyw3Miw2OSw4Miw2OSwzMiwxMDUsMTAwLDYxLDYzLDAsODIsNjksODAsNzYsNjUsNjcsNjksMzIsNzMsNzgsODQsNzksMzIsMzcsODEsNDYsMzksMzcsMTEzLDk1LDExNSwxMTYsOTcsMTE2LDM5LDMyLDg2LDY1LDc2LDg1LDY5LDgzLDQwLDYzLDQ0LDYzLDQxLDAsNjgsNjksNzYsNjksODQsNjksMzIsNzAsODIsNzksNzcsMzIsMzcsODEsNDYsMzksMzcsMTEzLDk1LDExNSwxMDEsMTAzLDEwMCwxMDUsMTE0LDM5LDMyLDg3LDcyLDY5LDgyLDY5LDMyLDEwOCwxMDEsMTE4LDEwMSwxMDgsMzIsNjYsNjksODQsODcsNjksNjksNzgsMzIsNjMsMzIsNjUsNzgsNjgsMzIsNjMsMCw4Myw2OSw3Niw2OSw2Nyw4NCwzMiw2MyxcbjMyLDg1LDc4LDczLDc5LDc4LDMyLDgzLDY5LDc2LDY5LDY3LDg0LDMyLDEwOCwxMDEsMTE4LDEwMSwxMDgsMzIsNDcsMzIsNDAsNDksNDgsNTAsNTIsMzIsNDIsMzIsNjMsNDEsMzIsNzAsODIsNzksNzcsMzIsMzcsODEsNDYsMzksMzcsMTEzLDk1LDExNSwxMDEsMTAzLDEwMCwxMDUsMTE0LDM5LDAsODMsNjksNzYsNjksNjcsODQsMzIsMTA4LDEwMSwxMTgsMTAxLDEwOCw0NCwzMiw5OSwxMTEsMTE3LDExMCwxMTYsNDAsNDIsNDEsMzIsNjUsODMsMzIsOTksMTEwLDExNiwzMiw3MCw4Miw3OSw3NywzMiwzNyw4MSw0NiwzOSwzNywxMTMsOTUsMTE1LDEwMSwxMDMsMTAwLDEwNSwxMTQsMzksMzIsMzIsMzIsNzEsODIsNzksODUsODAsMzIsNjYsODksMzIsMTA4LDEwMSwxMTgsMTAxLDEwOCwzMiw3Miw2NSw4Niw3Myw3OCw3MSwzMiw5OSwxMTAsMTE2LDYyLDYxLDYzLDMyLDMyLDc5LDgyLDY4LDY5LDgyLDMyLDY2LDg5LDMyLDQwLDEwOCwxMDEsMTE4LDEwMSwxMDgsMzIsMzcsMzcsMzIsXG40OSw0OCw1MCw1Miw0MSwzMiw2NSw4Myw2NywzMiw3Niw3Myw3Nyw3Myw4NCwzMiw0OSwwLDgzLDY5LDc2LDY5LDY3LDg0LDMyLDUwLDMyLDQyLDMyLDExNiwxMTEsMTE2LDk3LDEwOCw0MCw0OSwzMiw0MywzMiwxMDgsMTAxLDk3LDExOCwxMDEsMTE1LDk1LDEwMSwxMTAsMTAwLDk1LDk4LDEwOCwxMTEsOTksMTA3LDMyLDQ1LDMyLDExNSwxMTYsOTcsMTE0LDExNiw5NSw5OCwxMDgsMTExLDk5LDEwNyw0MSwzMiwzMiwzMiw3MCw4Miw3OSw3NywzMiwzNyw4MSw0NiwzOSwzNywxMTMsOTUsMTE1LDEwMSwxMDMsMTAwLDEwNSwxMTQsMzksMzIsODcsNzIsNjksODIsNjksMzIsMTA4LDEwMSwxMTgsMTAxLDEwOCwzMiw2MSwzMiw2MywzMiw2NSw3OCw2OCwzMiwxMDUsMTAwLDEyMCwzMiw2MCwzMiw2MywwLDY4LDY5LDc2LDY5LDg0LDY5LDMyLDcwLDgyLDc5LDc3LDMyLDM3LDgxLDQ2LDM5LDM3LDExMyw5NSwxMTUsMTAxLDEwMywxMDAsMTA1LDExNCwzOSwzMiw4Nyw3Miw2OSw4Miw2OSxcbjMyLDEwOCwxMDEsMTE4LDEwMSwxMDgsMzIsNjEsMzIsNjMsMzIsNjUsNzgsNjgsMzIsMTA1LDEwMCwxMjAsMzIsNjEsMzIsNjMsMCw4NSw4MCw2OCw2NSw4NCw2OSwzMiwzNyw4MSw0NiwzOSwzNywxMTMsOTUsMTE1LDEwMSwxMDMsMTAwLDEwNSwxMTQsMzksMzIsODMsNjksODQsMzIsMTA1LDEwMCwxMjAsMzIsNjEsMzIsNjMsMzIsODcsNzIsNjksODIsNjksMzIsMTA4LDEwMSwxMTgsMTAxLDEwOCw2MSw2MywzMiw2NSw3OCw2OCwzMiwxMDUsMTAwLDEyMCw2MSw2MywwLDgzLDY5LDc2LDY5LDY3LDg0LDMyLDEwNSwxMDAsMTIwLDQ0LDMyLDExNSwxMTYsOTcsMTE0LDExNiw5NSw5OCwxMDgsMTExLDk5LDEwNyw0NCwzMiwxMDgsMTAxLDk3LDExOCwxMDEsMTE1LDk1LDEwMSwxMTAsMTAwLDk1LDk4LDEwOCwxMTEsOTksMTA3LDQ0LDMyLDEwMSwxMTAsMTAwLDk1LDk4LDEwOCwxMTEsOTksMTA3LDQ0LDMyLDExNCwxMTEsMTExLDExNiwzMiw3MCw4Miw3OSw3NywzMiwzNyw4MSw0NiwzOSxcbjM3LDExMyw5NSwxMTUsMTAxLDEwMywxMDAsMTA1LDExNCwzOSwzMiw4Nyw3Miw2OSw4Miw2OSwzMiwxMDgsMTAxLDExOCwxMDEsMTA4LDMyLDYxLDMyLDYzLDMyLDY1LDc4LDY4LDMyLDEwNSwxMDAsMTIwLDMyLDYxLDMyLDYzLDAsODUsODAsNjgsNjUsODQsNjksMzIsMzcsODEsNDYsMzksMzcsMTEzLDk1LDExNSwxMDEsMTAzLDEwMCwxMDUsMTE0LDM5LDMyLDgzLDY5LDg0LDMyLDExNSwxMTYsOTcsMTE0LDExNiw5NSw5OCwxMDgsMTExLDk5LDEwNywzMiw2MSwzMiw2Myw0NCwzMiwxMTQsMTExLDExMSwxMTYsMzIsNjEsMzIsNjMsODcsNzIsNjksODIsNjksMzIsMTA4LDEwMSwxMTgsMTAxLDEwOCwzMiw2MSwzMiw2MywzMiw2NSw3OCw2OCwzMiwxMDUsMTAwLDEyMCwzMiw2MSwzMiw2MywwLDgzLDY5LDc2LDY5LDY3LDg0LDMyLDQ5LDMyLDcwLDgyLDc5LDc3LDMyLDM3LDgxLDQ2LDM5LDM3LDExMyw5NSwxMTUsMTAxLDEwMywxMDksMTAxLDExMCwxMTYsMTE1LDM5LDMyLDg3LDcyLFxuNjksODIsNjksMzIsOTgsMTA4LDExMSw5OSwxMDcsMTA1LDEwMCw2MSw2MywzMiw2NSw3OCw2OCwzMiw5OCwxMDgsMTExLDk5LDEwNywzMiw3Myw4MywzMiw3OCw4NSw3Niw3NiwwLDgzLDY5LDc2LDY5LDY3LDg0LDMyLDEwNSwxMDAsMTIwLDMyLDcwLDgyLDc5LDc3LDMyLDM3LDgxLDQ2LDM5LDM3LDExMyw5NSwxMTUsMTAxLDEwMywxMDAsMTA1LDExNCwzOSwzMiw4Nyw3Miw2OSw4Miw2OSwzMiwxMDgsMTAxLDExOCwxMDEsMTA4LDYxLDYzLDMyLDc5LDgyLDY4LDY5LDgyLDMyLDY2LDg5LDMyLDQ5LDMyLDY1LDgzLDY3LDAsODMsNjksNzYsNjksNjcsODQsMzIsMTA5LDk3LDEyMCw0MCwzMiwxMDgsMTAxLDExOCwxMDEsMTA4LDMyLDM3LDM3LDMyLDQ5LDQ4LDUwLDUyLDMyLDQxLDMyLDcwLDgyLDc5LDc3LDMyLDM3LDgxLDQ2LDM5LDM3LDExMyw5NSwxMTUsMTAxLDEwMywxMDAsMTA1LDExNCwzOSwwLDgzLDY5LDc2LDY5LDY3LDg0LDMyLDEwOCwxMDEsMTE4LDEwMSwxMDgsNDQsMzIsXG4xMDUsMTAwLDEyMCw0NCwzMiwxMDEsMTEwLDEwMCw5NSw5OCwxMDgsMTExLDk5LDEwNywzMiw3MCw4Miw3OSw3NywzMiwzNyw4MSw0NiwzOSwzNywxMTMsOTUsMTE1LDEwMSwxMDMsMTAwLDEwNSwxMTQsMzksMzIsODcsNzIsNjksODIsNjksMzIsMTA4LDEwMSwxMTgsMTAxLDEwOCwzMiw2Niw2OSw4NCw4Nyw2OSw2OSw3OCwzMiw2MywzMiw2NSw3OCw2OCwzMiw2MywzMiw3OSw4Miw2OCw2OSw4MiwzMiw2Niw4OSwzMiwxMDgsMTAxLDExOCwxMDEsMTA4LDMyLDY4LDY5LDgzLDY3LDQ0LDMyLDEwNSwxMDAsMTIwLDMyLDY1LDgzLDY3LDAsODUsODAsNjgsNjUsODQsNjksMzIsNzksODIsMzIsNzAsNjUsNzMsNzYsMzIsMzcsODEsNDYsMzksMzcsMTEzLDk1LDExNSwxMDEsMTAzLDEwMCwxMDUsMTE0LDM5LDMyLDgzLDY5LDg0LDMyLDEwOCwxMDEsMTE4LDEwMSwxMDgsNjEsNDUsNDksNDQsMTA1LDEwMCwxMjAsNjEsNjMsMzIsODcsNzIsNjksODIsNjksMzIsMTA4LDEwMSwxMTgsMTAxLDEwOCxcbjYxLDYzLDMyLDY1LDc4LDY4LDMyLDEwNSwxMDAsMTIwLDYxLDYzLDAsODUsODAsNjgsNjUsODQsNjksMzIsNzksODIsMzIsNzAsNjUsNzMsNzYsMzIsMzcsODEsNDYsMzksMzcsMTEzLDk1LDExNSwxMDEsMTAzLDEwMCwxMDUsMTE0LDM5LDMyLDgzLDY5LDg0LDMyLDEwOCwxMDEsMTE4LDEwMSwxMDgsNjEsNjMsMzIsODcsNzIsNjksODIsNjksMzIsMTA4LDEwMSwxMTgsMTAxLDEwOCw2MSw0NSw0OSwwLDM3LDEwOCwxMDgsMTAwLDMyLDM3LDEwOCwxMDgsMTAwLDAsMzcsMTE1LDk1LDExNSwxMDEsMTAzLDEwOSwxMDEsMTEwLDExNiwxMTUsMCw5OCwxMDgsMTExLDk5LDEwNywwLDgzLDY5LDc2LDY5LDY3LDg0LDMyLDQ5LDMyLDcwLDgyLDc5LDc3LDMyLDM3LDgxLDQ2LDExNSwxMTMsMTA4LDEwNSwxMTYsMTAxLDk1LDEwOSw5NywxMTUsMTE2LDEwMSwxMTQsMzIsODcsNzIsNjksODIsNjksMzIsMTE2LDk4LDEwOCw5NSwxMTAsOTcsMTA5LDEwMSw2MSwzOSwzNywxMTMsOTUsMTE1LDExNixcbjk3LDExNiwzOSwwLDExMiw5OSwxMjAsMCw4Myw2OSw3Niw2OSw2Nyw4NCwzMiwzNywxMTUsMzIsODcsNzIsNjksODIsNjksMzIsMTE0LDExMSwxMTksMTA1LDEwMCwzMiw2MSwzMiw2MywwLDExNywxMTAsMTE0LDEwMSw5OSwxMTEsMTAzLDExMCwxMDUsMTIyLDEwMSwxMDAsMzIsMTA5LDk3LDExNiw5OSwxMDQsMTA1LDExMCwxMDIsMTExLDMyLDExNCwxMDEsMTEzLDExNywxMDEsMTE1LDExNiw1OCwzMiwzNyw5OSwwLDEwNSwxMDgsMTA4LDEwMSwxMDMsOTcsMTA4LDMyLDEwMiwxMDUsMTE0LDExNSwxMTYsMzIsOTcsMTE0LDEwMywxMTcsMTA5LDEwMSwxMTAsMTE2LDMyLDExNiwxMTEsMzIsMzcsMTE1LDAsNzMsMTEwLDEwMCwxMDEsMTIwLDMyLDExMSwxMTIsMTE2LDEwNSwxMDksMTA1LDEyMiwxMDEsMTAwLDAsNzMsMTEwLDEwMCwxMDEsMTIwLDMyLDk3LDEwOCwxMTQsMTAxLDk3LDEwMCwxMjEsMzIsMTExLDExMiwxMTYsMTA1LDEwOSw5NywxMDgsMCw4Myw2NSw4Niw2OSw4MCw3OSxcbjczLDc4LDg0LDMyLDEwMiwxMTYsMTE1LDUxLDAsODIsNjksNzYsNjksNjUsODMsNjksMzIsMTAyLDExNiwxMTUsNTEsMCw4Miw3OSw3Niw3Niw2Niw2NSw2Nyw3NSwzMiw4NCw3OSwzMiwxMDIsMTE2LDExNSw1MSwwLDM3LDEwMCwzMiwzNywxMDAsMzIsMzcsMTAwLDMyLDM3LDEwMCwzMiwwLDYwLDk4LDYyLDAsNjAsNDcsOTgsNjIsMCw2MCw5OCw2Miw0Niw0Niw0Niw2MCw0Nyw5OCw2MiwwLDExOSwxMTQsMTExLDExMCwxMDMsMzIsMTEwLDExNywxMDksOTgsMTAxLDExNCwzMiwxMTEsMTAyLDMyLDk3LDExNCwxMDMsMTE3LDEwOSwxMDEsMTEwLDExNiwxMTUsMzIsMTE2LDExMSwzMiwxMDIsMTE3LDExMCw5OSwxMTYsMTA1LDExMSwxMTAsMzIsMTE1LDExMCwxMDUsMTEyLDExMiwxMDEsMTE2LDQwLDQxLDAsMTE0LDEwMSw5OCwxMTcsMTA1LDEwOCwxMDAsMCwxMDUsMTEwLDExNiwxMDEsMTAzLDExNCwxMDUsMTE2LDEyMSw0NSw5OSwxMDQsMTAxLDk5LDEwNywwLDEwOSwxMDEsMTE0LFxuMTAzLDEwMSw2MSwwLDk3LDExNywxMTYsMTExLDEwOSwxMDEsMTE0LDEwMywxMDEsNjEsMCw2Nyw4Miw2OSw2NSw4NCw2OSwzMiw4NCw2NSw2Niw3Niw2OSwzMiw3Myw3MCwzMiw3OCw3OSw4NCwzMiw2OSw4OCw3Myw4Myw4NCw4MywzMiwzNyw4MSw0NiwzOSwzNywxMTMsOTUsMTE1LDExNiw5NywxMTYsMzksNDAsMTA1LDEwMCwzMiw3Myw3OCw4NCw2OSw3MSw2OSw4MiwzMiw4MCw4Miw3Myw3Nyw2NSw4Miw4OSwzMiw3NSw2OSw4OSw0NCwzMiwxMTgsOTcsMTA4LDExNywxMDEsMzIsNjYsNzYsNzksNjYsNDEsNTksMCw4Myw2OSw3Niw2OSw2Nyw4NCwzMiwzNywxMTUsMCw2OCw2OSw4Myw2NywwLDY1LDgzLDY3LDAsODMsNjksNzYsNjksNjcsODQsMzIsMzcsMTE1LDMyLDg3LDcyLDY5LDgyLDY5LDMyLDExNCwxMTEsMTE5LDEwNSwxMDAsMzIsNjYsNjksODQsODcsNjksNjksNzgsMzIsMzcsMTA4LDEwOCwxMDAsMzIsNjUsNzgsNjgsMzIsMzcsMTA4LDEwOCwxMDAsMzIsNzksODIsNjgsXG42OSw4MiwzMiw2Niw4OSwzMiwxMTQsMTExLDExOSwxMDUsMTAwLDMyLDM3LDExNSwwLDgzLDY5LDc2LDY5LDY3LDg0LDMyLDM3LDExNSwzMiw3OSw4Miw2OCw2OSw4MiwzMiw2Niw4OSwzMiwxMTQsMTExLDExOSwxMDUsMTAwLDMyLDM3LDExNSwwLDcwLDg0LDgzLDMyLDEwMSwxMjAsMTEyLDExNCwxMDEsMTE1LDExNSwxMDUsMTExLDExMCwzMiwxMTYsMTE0LDEwMSwxMDEsMzIsMTA1LDExNSwzMiwxMTYsMTExLDExMSwzMiwxMDgsOTcsMTE0LDEwMywxMDEsMzIsNDAsMTA5LDk3LDEyMCwxMDUsMTA5LDExNywxMDksMzIsMTAwLDEwMSwxMTIsMTE2LDEwNCwzMiwzNywxMDAsNDEsMCwxMDksOTcsMTA4LDEwMiwxMTEsMTE0LDEwOSwxMDEsMTAwLDMyLDc3LDY1LDg0LDY3LDcyLDMyLDEwMSwxMjAsMTEyLDExNCwxMDEsMTE1LDExNSwxMDUsMTExLDExMCw1OCwzMiw5MSwzNywxMTUsOTMsMCw3OSw4MiwwLDY1LDc4LDY4LDAsNzgsNzksODQsMCw3OCw2OSw2NSw4MiwwLDY4LDgyLDc5LDgwLFxuMzIsODQsNjUsNjYsNzYsNjksMzIsNzMsNzAsMzIsNjksODgsNzMsODMsODQsODMsMzIsMzcsODEsNDYsMzksMzcsMTEzLDk1LDk5LDExMSwxMTAsMTE2LDEwMSwxMTAsMTE2LDM5LDAsNjgsODIsNzksODAsMzIsODQsNjUsNjYsNzYsNjksMzIsNzMsNzAsMzIsNjksODgsNzMsODMsODQsODMsMzIsMzcsODEsNDYsMzksMzcsMTEzLDk1LDExNSwxMDEsMTAzLDEwOSwxMDEsMTEwLDExNiwxMTUsMzksMCw2OCw4Miw3OSw4MCwzMiw4NCw2NSw2Niw3Niw2OSwzMiw3Myw3MCwzMiw2OSw4OCw3Myw4Myw4NCw4MywzMiwzNyw4MSw0NiwzOSwzNywxMTMsOTUsMTE1LDEwMSwxMDMsMTAwLDEwNSwxMTQsMzksMCw2OCw4Miw3OSw4MCwzMiw4NCw2NSw2Niw3Niw2OSwzMiw3Myw3MCwzMiw2OSw4OCw3Myw4Myw4NCw4MywzMiwzNyw4MSw0NiwzOSwzNywxMTMsOTUsMTAwLDExMSw5OSwxMTUsMTA1LDEyMiwxMDEsMzksMCw2OCw4Miw3OSw4MCwzMiw4NCw2NSw2Niw3Niw2OSwzMiw3Myw3MCwzMiw2OSxcbjg4LDczLDgzLDg0LDgzLDMyLDM3LDgxLDQ2LDM5LDM3LDExMyw5NSwxMTUsMTE2LDk3LDExNiwzOSwwLDExNiwxMTEsMTA3LDEwMSwxMTAsMTA1LDEyMiwxMDEsMCwxMTcsMTEwLDExNCwxMDEsOTksMTExLDEwMywxMTAsMTA1LDEyMiwxMDEsMTAwLDMyLDExMiw5NywxMTQsOTcsMTA5LDEwMSwxMTYsMTAxLDExNCw1OCwzMiwzNywxMTUsMCwxMTcsMTEwLDExNCwxMDEsOTksMTExLDEwMywxMTAsMTA1LDEyMiwxMDEsMTAwLDMyLDEwOSw5NywxMTYsOTksMTA0LDEwNSwxMTAsMTAyLDExMSw1OCwzMiwzNywxMTUsMCw5NywxMTUsOTksMCwxMDAsMTAxLDExNSw5OSwwLDExNywxMTAsMTE0LDEwMSw5OSwxMTEsMTAzLDExMCwxMDUsMTIyLDEwMSwxMDAsMzIsMTExLDExNCwxMDAsMTAxLDExNCw1OCwzMiwzNywxMTUsMCw5OSwxMTEsMTEwLDExNiwxMDEsMTEwLDExNiwwLDEwMSwxMTQsMTE0LDExMSwxMTQsMzIsMTEyLDk3LDExNCwxMTUsMTA1LDExMCwxMDMsMzIsMTEyLDExNCwxMDEsMTAyLFxuMTA1LDEyMCwzMiwxMTIsOTcsMTE0LDk3LDEwOSwxMDEsMTE2LDEwMSwxMTQsNTgsMzIsMzcsMTE1LDAsMTEwLDExMSwzMiwxMTUsMTE3LDk5LDEwNCwzMiw5OSwxMTEsMTA4LDExNywxMDksMTEwLDU4LDMyLDM3LDExNSwwLDk5LDExMSwxMDksMTEyLDExNCwxMDEsMTE1LDExNSwwLDExNywxMTAsOTksMTExLDEwOSwxMTIsMTE0LDEwMSwxMTUsMTE1LDAsMTA5LDEwNSwxMTUsMTE1LDEwNSwxMTAsMTAzLDMyLDM3LDExNSwzMiwxMTIsOTcsMTE0LDk3LDEwOSwxMDEsMTE2LDEwMSwxMTQsMzIsMTA1LDExMCwzMiwxMDIsMTE2LDExNSw1MiwzMiw5OSwxMTEsMTEwLDExNSwxMTYsMTE0LDExNyw5OSwxMTYsMTExLDExNCwwLDk1LDk1LDEwOCw5NywxMTAsMTAzLDEwNSwxMDAsMCwzNyw4MSw0NCwzMiwwLDM3LDEyMiwzNyw4MSw0NCwzMiwwLDY3LDgyLDY5LDY1LDg0LDY5LDMyLDg0LDY1LDY2LDc2LDY5LDMyLDEyMCw0MCwzNywxMTUsMzIsMzcsODEsMzIsNzIsNzMsNjgsNjgsNjksNzgsXG40NCwzMiwxMDAsMTExLDk5LDEwNSwxMDAsMzIsNzIsNzMsNjgsNjgsNjksNzgsNDQsMzIsMzcsODEsMzIsNzIsNzMsNjgsNjgsNjksNzgsNDEsMCw4MCw4Miw2NSw3MSw3Nyw2NSwzMiwzNyw4MSw0NiwxMTIsOTcsMTAzLDEwMSw5NSwxMTUsMTA1LDEyMiwxMDEsMCwxMDAsMTExLDk5LDEwNSwxMDAsMzIsNzMsNzgsODQsNjksNzEsNjksODIsMzIsODAsODIsNzMsNzcsNjUsODIsODksMzIsNzUsNjksODksMCwzNywxMjIsNDQsMzIsMzksOTksMzcsMTAwLDM3LDExMywzOSwwLDM3LDEyMiw0NCwzMiwxMDgsOTcsMTEwLDEwMywxMDUsMTAwLDAsNjcsODIsNjksNjUsODQsNjksMzIsODQsNjUsNjYsNzYsNjksMzIsMzcsODEsNDYsMzksMzcsMTEzLDk1LDk5LDExMSwxMTAsMTE2LDEwMSwxMTAsMTE2LDM5LDQwLDM3LDExNSw0MSwwLDY3LDgyLDY5LDY1LDg0LDY5LDMyLDg0LDY1LDY2LDc2LDY5LDMyLDM3LDgxLDQ2LDM5LDM3LDExMyw5NSwxMTUsMTAxLDEwMywxMDksMTAxLDExMCwxMTYsXG4xMTUsMzksNDAsOTgsMTA4LDExMSw5OSwxMDcsMTA1LDEwMCwzMiw3Myw3OCw4NCw2OSw3MSw2OSw4MiwzMiw4MCw4Miw3Myw3Nyw2NSw4Miw4OSwzMiw3NSw2OSw4OSw0NCwzMiw5OCwxMDgsMTExLDk5LDEwNywzMiw2Niw3Niw3OSw2Niw0MSw1OSwwLDY3LDgyLDY5LDY1LDg0LDY5LDMyLDg0LDY1LDY2LDc2LDY5LDMyLDM3LDgxLDQ2LDM5LDM3LDExMyw5NSwxMTUsMTAxLDEwMywxMDAsMTA1LDExNCwzOSw0MCwxMDgsMTAxLDExOCwxMDEsMTA4LDMyLDczLDc4LDg0LDY5LDcxLDY5LDgyLDQ0LDEwNSwxMDAsMTIwLDMyLDczLDc4LDg0LDY5LDcxLDY5LDgyLDQ0LDExNSwxMTYsOTcsMTE0LDExNiw5NSw5OCwxMDgsMTExLDk5LDEwNywzMiw3Myw3OCw4NCw2OSw3MSw2OSw4Miw0NCwxMDgsMTAxLDk3LDExOCwxMDEsMTE1LDk1LDEwMSwxMTAsMTAwLDk1LDk4LDEwOCwxMTEsOTksMTA3LDMyLDczLDc4LDg0LDY5LDcxLDY5LDgyLDQ0LDEwMSwxMTAsMTAwLDk1LDk4LDEwOCwxMTEsOTksXG4xMDcsMzIsNzMsNzgsODQsNjksNzEsNjksODIsNDQsMTE0LDExMSwxMTEsMTE2LDMyLDY2LDc2LDc5LDY2LDQ0LDgwLDgyLDczLDc3LDY1LDgyLDg5LDMyLDc1LDY5LDg5LDQwLDEwOCwxMDEsMTE4LDEwMSwxMDgsNDQsMzIsMTA1LDEwMCwxMjAsNDEsNDEsNTksMCw2Nyw4Miw2OSw2NSw4NCw2OSwzMiw4NCw2NSw2Niw3Niw2OSwzMiwzNyw4MSw0NiwzOSwzNywxMTMsOTUsMTAwLDExMSw5OSwxMTUsMTA1LDEyMiwxMDEsMzksNDAsMTAwLDExMSw5OSwxMDUsMTAwLDMyLDczLDc4LDg0LDY5LDcxLDY5LDgyLDMyLDgwLDgyLDczLDc3LDY1LDgyLDg5LDMyLDc1LDY5LDg5LDQ0LDMyLDExNSwxMDUsMTIyLDEwMSwzMiw2Niw3Niw3OSw2Niw0MSw1OSwwLDQ0LDM3LDExNSw0MCw2Myw0MSwwLDQ0LDMyLDYzLDAsMzcsMTE1LDM3LDExNSwwLDEwMCwxMTEsOTksMTA1LDEwMCwwLDQ0LDM3LDExNSw0MCwxMjAsNDYsMzksOTksMzcsMTAwLDM3LDExMywzOSw0MSwwLDQ0LDMyLDEyMCw0NiwzNyxcbjgxLDAsMTA4LDk3LDExMCwxMDMsMTA1LDEwMCwwLDExNCwxMTEsMTE5LDEwNSwxMDAsMCw0NCwzMiwxMjAsNDYsMzksMzcsMTEzLDM5LDAsOTUsOTksMTExLDExMCwxMTYsMTAxLDExMCwxMTYsMCwzMiw3MCw4Miw3OSw3NywzMiwzOSwzNywxMTMsMzksNDYsMzksMzcsMTEzLDM3LDExNSwzOSwzMiw2NSw4MywzMiwxMjAsMCw4Myw2OSw3Niw2OSw2Nyw4NCwzMiw0MiwzMiw3MCw4Miw3OSw3NywzMiwzNyw4MSw0NiwzNyw4MSwwLDExMiwxMTQsMTAxLDEwMiwxMDUsMTIwLDAsMTExLDExNCwxMDAsMTAxLDExNCwwLDEwOCw5NywxMTAsMTAzLDExNyw5NywxMDMsMTAxLDEwNSwxMDAsMCwxMTAsMTExLDExNiwxMDUsMTEwLDEwMCwxMDEsMTIwLDEwMSwxMDAsMCwxMTcsMTEwLDEwNywxMTAsMTExLDExOSwxMTAsMzIsMTE2LDExMSwxMDcsMTAxLDExMCwxMDUsMTIyLDEwMSwxMTQsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCxcbjAsMCwwLDAsMCwwLDEsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDEsMSwxLDEsMSwxLDEsMSwxLDEsMCwwLDAsMCwwLDAsMCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMCwwLDAsMCwxLDAsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDAsMCwwLDAsMCw5NywxMTQsMTAzLDExNywxMDksMTAxLDExMCwxMTYsMzIsMTE2LDEyMSwxMTIsMTAxLDMyLDEwOSwxMDUsMTE1LDEwOSw5NywxMTYsOTksMTA0LDAsMTExLDExNywxMTYsMzIsMTExLDEwMiwzMiwxMDksMTAxLDEwOSwxMTEsMTE0LDEyMSwwLDEwMiwxMTYsMTE1LDUxLDExNiwxMTEsMTA3LDEwMSwxMTAsMTA1LDEyMiwxMDEsMzIsMTAwLDEwNSwxMTUsOTcsOTgsMTA4LDEwMSwxMDAsMCwxLDEsMSwxLDEsMSwxLDEsMSwxLDAsMCwwLDAsMCwwLDAsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLFxuMCwwLDAsMCwxLDAsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDAsMCwwLDAsMCwxMTUsMTAxLDExNSwxMTUsMCwxMTUsMTE1LDAsMTE1LDEwMSwxMDUsMCwxMDUsMCwxMDAsMTAxLDEwMSwwLDEwMSwxMDEsMCwxMDMsMTEwLDEwNSwwLDEwMCwxMDEsMCwxMTYsOTcsMCw5NywxMTYsMTAxLDAsMTA4LDk4LDAsOTgsMTA4LDEwMSwwLDEyMiwxMDUsMCwxMDUsMTIyLDEwMSwwLDEwOCw5NywxMTAsMTExLDEwNSwxMTYsOTcsMCwxMDgsOTcsMTEwLDExMSwxMDUsMTE2LDAsMTE2LDEwNSwxMTEsMTEwLDAsMTA1LDk5LDExMCwxMDEsMCwxMDEsMTEwLDk5LDEwMSwwLDEwNSw5OSwxMTAsOTcsMCw5NywxMTAsOTksMTAxLDAsMTE0LDEwMSwxMjIsMTA1LDAsMTA1LDEwMywxMTEsMTA4LDAsMTA4LDExMSwxMDMsMCwxMDUsMTA4LDk4LDAsMTA1LDEwOCwxMDgsOTcsMCw5NywxMDgsMCwxMDUsMTA4LDExNiwxMTAsMTAxLDAsMTAxLDExMCwxMTYsMCwxMDUsXG4xMDgsMTAxLDAsMTAxLDAsMTA1LDEwOCwxMTUsMTE3LDExMSwwLDExMSwxMTcsMTE1LDAsMTEwLDExMSwxMDUsMTE2LDk3LDEyMiwxMDUsMCwxMTAsMTExLDEwNSwxMTYsOTcsMCwxMTQsMTExLDExNiw5NywwLDEwOSwxMTUsMTA1LDEwOCw5NywwLDExNSwxMTUsMTAxLDExMCwxMDEsMTE4LDEwNSwwLDEwNSwxMTgsMTAxLDAsMTE1LDExNSwxMDEsMTEwLDEwOCwxMTcsMTAyLDAsMTAyLDExNywxMDgsMCwxMTUsMTE1LDEwMSwxMTAsMTE1LDExNywxMTEsMCwxMDUsMTE2LDEwNSwxMDgsOTcsMCwxMDUsMTE2LDEwNSwxMTgsMTA1LDAsMTA1LDExNiwxMDUsMTA4LDEwNSw5OCwwLDEwMSwxMTYsOTcsOTksMTA1LDAsMTA1LDk5LDAsMTAxLDExOCwxMDUsMTE2LDk3LDAsMTAxLDEyMiwxMDUsMTA4LDk3LDAsMTA1LDExNiwxMDUsOTksMTA1LDAsMTA4LDk3LDk5LDEwNSwwLDEwOCwxMTcsMTAyLDAsMTE1LDExNSwxMDEsMTEwLDAsMTE2LDExMCwxMDEsMTA5LDEwMSwwLDExNiwxMTAsMTAxLDEwOSxcbjAsMTE2LDExMCwxMDEsMCwxMTAsMTExLDEwNSwwLDEwMSwxMTYsOTcsMCwxMDUsMTE2LDEwNSwwLDAsMSwxLDEsMCwxLDEsMSwwLDEsMSwxLDEsMSwwLDEsMSwxLDEsMSwwLDEsMSwxLDIsMSwxMDIsMTE2LDExNSw1Miw5NywxMTcsMTIwLDAsNDIsMCw2Nyw4Miw2OSw2NSw4NCw2OSwzMiw4NCw2NSw2Niw3Niw2OSwzMiwxMjAsNDAsMTE2LDEwMSwxMTQsMTA5LDQ0LDMyLDk5LDExMSwxMDgsNDQsMzIsMTAwLDExMSw5OSwxMTcsMTA5LDEwMSwxMTAsMTE2LDExNSw0NCwzMiwxMTEsOTksOTksMTE3LDExNCwxMTQsMTAxLDExMCw5OSwxMDEsMTE1LDQ0LDMyLDEwOCw5NywxMTAsMTAzLDExNyw5NywxMDMsMTAxLDEwNSwxMDAsMzIsNzIsNzMsNjgsNjgsNjksNzgsNDEsMCwxMDUsMTEwLDExOCw5NywxMDgsMTA1LDEwMCwzMiw5NywxMTQsMTAzLDExNywxMDksMTAxLDExMCwxMTYsMTE1LDMyLDExNiwxMTEsMzIsMTAyLDExNiwxMTUsNTIsOTcsMTE3LDEyMCwzMiw5OSwxMTEsMTEwLDExNSxcbjExNiwxMTQsMTE3LDk5LDExNiwxMTEsMTE0LDAsMCwxLDIsMyw0LDUsNiw3LDgsOSwxMCwxMSwxMiwxMywxNCwxNSwxNiwxNywxOCwxOSwyMCwyMSwyMiwyMywyNCwyNSwyNiwyNywyOCwyOSwzMCwzMSwwLDEsMiwzLDQsNSw2LDcsOCw5LDEwLDExLDEyLDEzLDE0LDE1LDAsMSwyLDMsNCw1LDYsNywwLDEsMiwzLDAsMSwwLDAsMCw5Nyw5OSwxMDEsMTA1LDExMCwxMTEsMTE3LDEyMSwxMjEsOTcsOTksMTAwLDEwMSwxMDEsMTAzLDEwNCwxMDUsMTA2LDEwNywxMDgsMTEwLDExMSwxMTQsMTE1LDExNiwxMTcsMTE3LDExOSwxMjEsMTIyLDExMSwxMTcsOTcsMTA1LDExMSwxMTcsMTAzLDEwNywxMTEsMTA2LDEwMywxMTAsOTcsMTAxLDEwNSwxMTEsMTE0LDExNywxMTUsMTE2LDEwNCw5NywxMDEsMTExLDEyMSwwLDAsMCwwLDAsMCwwLDAsOTcsOTgsMTAwLDEwMCwxMDEsMTAyLDEwMywxMDQsMTA0LDEwNSwxMDcsMTA4LDEwOCwxMDksMTEwLDExMiwxMTQsMTE0LDExNSwxMTYsMTE3LDExOCxcbjExOSwxMTksMTIwLDEyMSwxMjIsMTA0LDExNiwxMTksMTIxLDk3LDEwMSwxMDUsMTExLDExNywxMjEsMTE0LDEwMSwxMDksMTExLDExOCwxMDEsOTUsMTAwLDEwNSw5Nyw5OSwxMTQsMTA1LDExNiwxMDUsOTksMTE1LDYxLDQ5LDAsMTE0LDEwMSwxMDksMTExLDExOCwxMDEsOTUsMTAwLDEwNSw5Nyw5OSwxMTQsMTA1LDExNiwxMDUsOTksMTE1LDYxLDQ4LDAsMTE2LDExMSwxMDcsMTAxLDExMCw5OSwxMDQsOTcsMTE0LDExNSw2MSwwLDExNSwxMDEsMTEyLDk3LDExNCw5NywxMTYsMTExLDExNCwxMTUsNjEsMCw5NywxMTcsMTE2LDExMSwxMDksOTcsMTE2LDEwNSw5OSwzMiwxMDEsMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCwzMiwxMDgsMTExLDk3LDEwMCwxMDUsMTEwLDEwMywzMiwxMDIsOTcsMTA1LDEwOCwxMDEsMTAwLDU4LDMyLDM3LDExNSwwLDc3LDY1LDg0LDY3LDcyLDAsNTgsMTA5LDEwMSwxMDksMTExLDExNCwxMjEsNTgsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLFxuMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMTE0LDEwMSw5OSwxMTEsMTE4LDEwMSwxMTQsMTAxLDEwMCwzMiwzNywxMDAsMzIsMTEyLDk3LDEwMywxMDEsMTE1LDMyLDEwMiwxMTQsMTExLDEwOSwzMiwzNywxMTUsMCwyMTcsMjEzLDUsMjQ5LDMyLDE2MSw5OSwyMTUsOTksOTcsMTEwLDExMCwxMTEsMTE2LDMyLDEwOCwxMDUsMTA5LDEwNSwxMTYsMzIsODcsNjUsNzYsMzIsMTE1LDEwNSwxMjIsMTAxLDU4LDMyLDM3LDExNSwwLDk5LDk3LDExMCwxMTAsMTExLDExNiwzMiwxMTEsMTEyLDEwMSwxMTAsMzIsMTAyLDEwNSwxMDgsMTAxLDAsMTE0LDEwMSw5OSwxMTEsMTE4LDEwMSwxMTQsMTAxLDEwMCwzMiwzNywxMDAsMzIsMTAyLDExNCw5NywxMDksMTAxLDExNSwzMiwxMDIsMTE0LDExMSwxMDksMzIsODcsNjUsNzYsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDM3LDExNSwwLDQ1LDEwNiwxMTEsMTE3LDExNCwxMTAsOTcsMTA4LDAsMCw0NSwxMTksOTcsMTA4LDAsMCwxMTAsXG4xMTEsMTA4LDExMSw5OSwxMDcsMCwxMDUsMTA5LDEwOSwxMTcsMTE2LDk3LDk4LDEwOCwxMDEsMCwwLDEwMiwxMDUsMTA4LDEwMSw1OCwwLDEwOCwxMTEsOTksOTcsMTA4LDEwNCwxMTEsMTE1LDExNiwwLDEwNSwxMTAsMTE4LDk3LDEwOCwxMDUsMTAwLDMyLDExNywxMTQsMTA1LDMyLDk3LDExNywxMTYsMTA0LDExMSwxMTQsMTA1LDExNiwxMjEsNTgsMzIsMzcsNDYsNDIsMTE1LDAsMTE4LDEwMiwxMTUsMCw5OSw5Nyw5OSwxMDQsMTAxLDAsMTA5LDExMSwxMDAsMTAxLDAsOTcsOTksOTksMTAxLDExNSwxMTUsMCwxMTAsMTExLDMyLDExNSwxMTcsOTksMTA0LDMyLDM3LDExNSwzMiwxMDksMTExLDEwMCwxMDEsNTgsMzIsMzcsMTE1LDAsMzcsMTE1LDMyLDEwOSwxMTEsMTAwLDEwMSwzMiwxMTAsMTExLDExNiwzMiw5NywxMDgsMTA4LDExMSwxMTksMTAxLDEwMCw1OCwzMiwzNywxMTUsMCwxMTAsMTExLDMyLDExNSwxMTcsOTksMTA0LDMyLDExOCwxMDIsMTE1LDU4LDMyLDM3LDExNSxcbjAsMTE0LDExMSwwLDExNCwxMTksMCwxMTQsMTE5LDk5LDAsMTA5LDEwMSwxMDksMTExLDExNCwxMjEsMCwxMTUsMTA0LDk3LDExNCwxMDEsMTAwLDAsMTEyLDExNCwxMDUsMTE4LDk3LDExNiwxMDEsMCwxMTcsMTEwLDk3LDk4LDEwOCwxMDEsMzIsMTE2LDExMSwzMiwxMTcsMTE1LDEwMSwzMiwxMDIsMTE3LDExMCw5OSwxMTYsMTA1LDExMSwxMTAsMzIsMzcsMTE1LDMyLDEwNSwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTE0LDEwMSwxMTMsMTE3LDEwMSwxMTUsMTE2LDEwMSwxMDAsMzIsOTksMTExLDExMCwxMTYsMTAxLDEyMCwxMTYsMCwxMTcsMTEwLDk3LDk4LDEwOCwxMDEsMzIsMTE2LDExMSwzMiwxMDAsMTAxLDEwOCwxMDEsMTE2LDEwMSw0NywxMDksMTExLDEwMCwxMDUsMTAyLDEyMSwzMiwxMTcsMTE1LDEwMSwxMTQsNDUsMTAyLDExNywxMTAsOTksMTE2LDEwNSwxMTEsMTEwLDMyLDEwMCwxMTcsMTAxLDMyLDExNiwxMTEsMzIsOTcsOTksMTE2LDEwNSwxMTgsMTAxLDMyLDExNSxcbjExNiw5NywxMTYsMTAxLDEwOSwxMDEsMTEwLDExNiwxMTUsMCwxMTcsMTEwLDk3LDk4LDEwOCwxMDEsMzIsMTE2LDExMSwzMiw5OSwxMDgsMTExLDExNSwxMDEsMzIsMTAwLDExNywxMDEsMzIsMTE2LDExMSwzMiwxMTcsMTEwLDEwMiwxMDUsMTEwLDk3LDEwOCwxMDUsMTIyLDEwMSwxMDAsMzIsMTE1LDExNiw5NywxMTYsMTAxLDEwOSwxMDEsMTEwLDExNiwxMTUsMzIsMTExLDExNCwzMiwxMTcsMTEwLDEwMiwxMDUsMTEwLDEwNSwxMTUsMTA0LDEwMSwxMDAsMzIsOTgsOTcsOTksMTA3LDExNywxMTIsMTE1LDAsMTAyLDk3LDEwNSwxMDgsMTAxLDEwMCwzMiwxMDksMTAxLDEwOSwxMTEsMTE0LDEyMSwzMiwxMTQsMTAxLDExNSwxMDUsMTIyLDEwMSwzMiwzNywxMTcsMzIsMTE2LDExMSwzMiwzNywxMTcsMzIsOTgsMTIxLDExNiwxMDEsMTE1LDAsMTAyLDk3LDEwNSwxMDgsMTAxLDEwMCwzMiwxMTYsMTExLDMyLDk3LDEwOCwxMDgsMTExLDk5LDk3LDExNiwxMDEsMzIsMzcsMTE3LDMyLFxuOTgsMTIxLDExNiwxMDEsMTE1LDMyLDExMSwxMDIsMzIsMTA5LDEwMSwxMDksMTExLDExNCwxMjEsMCwxMTcsMTEwLDExNCwxMDEsOTksMTExLDEwMywxMTAsMTA1LDEyMiwxMDEsMTAwLDMyLDExNiwxMTEsMTA3LDEwMSwxMTAsNTgsMzIsMzQsMzcsODQsMzQsMCwxMTAsMTAxLDk3LDExNCwzMiwzNCwzNyw4NCwzNCw1OCwzMiwxMTUsMTIxLDExMCwxMTYsOTcsMTIwLDMyLDEwMSwxMTQsMTE0LDExMSwxMTQsMCwxNDcsMSwxNDcsMywxNDgsMSwxNDksMywxNTAsMCwxNTAsMSwxNTAsMSwxNTAsMSwxNDksMiwxNDksMiwxNDksMiwxNDksMiwxNDksMywxNDksNSwxNTQsNiwxNTYsMSwxNTgsMCwxNTgsMywxNTcsMSwxNTcsMCwxNTUsNSwxNTUsMiwxNjIsMCwxNjIsMiwxNjQsMiwxNjYsMCwxNjYsNCwxNjYsNiwxNjcsMiwxNzEsMiwxNzEsMiwxNzEsNCwxNzEsMywxNzEsMywxNzEsMiwxNzEsMywxNzEsNSwxNzEsMiwxNzEsNCwxNzEsNCwxNzEsMSwxNzEsMiwxNzYsMCwxNzYsMSwxNzgsXG4wLDE3OCwyLDE4MCwyLDE4MCwzLDE4MCwzLDE4MCwzLDE4MSwyLDE4MSwyLDE4MSwxLDE4MSwxLDE4MSwyLDE3OSwzLDE3OSwyLDE4MiwwLDE4MiwyLDE4MiwyLDE2MSwwLDE4NCwxLDE4NSwyLDE4NSw3LDE4NSw1LDE4NSw1LDE4NSwxMCwxODgsMCwxNzQsMCwxNzQsMywxODksMCwxODksMiwxOTAsMSwxOTAsMSwxNDksNCwxOTIsMiwxOTIsMCwxNDksOSwxNDksNCwxNDksMSwxNjMsMiwxOTQsMywxOTcsMSwxOTcsMiwxOTcsMSwxOTUsOSwyMDYsNCwyMDYsNSwxOTgsMSwxOTgsMSwxOTgsMCwyMDksMCwxOTksMywxOTksMiwxOTksNCwyMTAsMiwyMTAsMCwyMDAsMCwyMDAsMiwyMTIsMiwyMTIsMCwyMTEsNywyMTEsOSwyMTEsNywyMTEsNywxNTksMCwxNTksMiwxOTMsMiwyMTMsMSwyMTMsMiwyMTMsMywyMTMsNCwyMTUsMiwyMTUsMCwyMTQsMCwyMTQsMywyMTQsMiwyMTYsNCwyMTYsMCwyMDQsMCwyMDQsMywxODYsNCwxODYsMiwxNzUsMSwxNzUsMSwxNzUsMCwyMDIsMCwyMDIsMyxcbjIwMywwLDIwMywyLDIwNSwwLDIwNSwyLDIwNSw0LDIwNSw0LDE0OSw2LDIwMSwwLDIwMSwyLDE0OSw4LDIxOCw1LDIxOCw3LDIxOCwzLDIxOCw1LDE0OSw2LDE0OSw3LDIxOSwyLDIxOSwxLDIyMCwwLDIyMCwzLDIxNywzLDIxNywxLDE3MywzLDE3MiwxLDE3MywxLDE3MywxLDE3MywzLDE3Myw1LDE3MiwxLDE3MiwxLDE3MiwxLDE3MywxLDE3MywzLDE3Myw2LDE3Myw1LDE3Myw0LDE3MiwxLDE3Myw1LDE3MywzLDE3MywzLDE3MywzLDE3MywzLDE3MywzLDE3MywzLDE3MywzLDE3MywzLDIyMSwxLDIyMSwyLDE3MywzLDE3Myw1LDE3MywyLDE3MywzLDE3MywzLDE3Myw0LDE3MywyLDE3MywyLDE3MywyLDE3MywyLDIyMiwxLDIyMiwyLDE3Myw1LDIyMywxLDIyMywyLDE3Myw1LDE3MywzLDE3Myw1LDE3Myw1LDE3Myw0LDE3Myw1LDIyNiw1LDIyNiw0LDIyNywyLDIyNywwLDIyNSwxLDIyNSwwLDIwOCwwLDIwNywzLDIwNywxLDIyNCwwLDIyNCwzLDE0OSwxMiwyMjgsMSwyMjgsMCwxNzcsXG4wLDE3NywzLDE4Nyw1LDE4NywzLDIyOSwwLDIyOSwyLDE0OSw0LDE0OSwxLDE0OSwyLDE0OSwzLDE0OSw1LDE0OSw2LDE0OSw1LDE0OSw2LDE2OSwyLDE3MCwyLDE0OSw1LDIzMSwxMSwyMzMsMSwyMzMsMSwyMzMsMiwyMzMsMCwyMzQsMSwyMzQsMSwyMzQsMywyMzYsMCwyMzYsMiwyMzIsMywyMzIsMiwyMzgsMywyMzksMywyMzksMiwyMzcsNywyMzcsNSwyMzcsNSwyMzcsMSwxNzMsNCwxNzMsNiwxOTEsMSwxOTEsMSwxOTEsMSwxNDksNCwxNDksNiwxNDksMywyNDEsMCwyNDEsMiwxNDksMSwxNDksMywxNDksMSwxNDksMywxNDksNiwxNDksNywyNDIsMSwxNDksMSwxNDksNCwyNDQsOCwyNDYsMCwyNDcsMSwyNDcsMywyNDgsMSwxOTYsMCwxOTYsMiwxOTYsMywyNTAsNiwyNTAsOCwxNDQsMSwxNDUsMiwxNDUsMSwxNDYsMSwxNDYsMywxNDcsMCwxNTEsMCwxNTEsMSwxNTEsMiwxNTMsMSwxNTMsMCwxNDksMiwxNjAsNCwxNjAsMiwxNTIsMSwxNTIsMSwxNTIsMSwxNjYsMSwxNjcsMSxcbjE2OCwxLDE2OCwxLDE2NSwyLDE2NSwwLDE3MSwyLDE2MSwyLDE4MywzLDE4MywxLDE4NCwwLDE4OCwxLDE5MCwxLDE5NCwxLDE5NSwxLDIwOSwyLDIxMCwxLDE3MywxLDIwOCwxLDIzMCwxLDIzMCwxLDIzMCwxLDIzMCwxLDIzMCwxLDE2OSwxLDIzNSwwLDIzNSwzLDIzOCwxLDIzOSwwLDI0MCwxLDI0MCwwLDI0MywwLDI0MywxLDI0NSwxLDI0NSwzLDI0NiwyLDI0OSwwLDI0OSw0LDI0OSwyLDExNywxMTAsMTA3LDExMCwxMTEsMTE5LDExMCwzMiwxMTYsOTcsOTgsMTA4LDEwMSwzMiwxMTEsMTEyLDExNiwxMDUsMTExLDExMCw1OCwzMiwzNyw0Niw0MiwxMTUsMCwxMTUsMTAxLDExNiwzMiwxMDgsMTA1LDExNSwxMTYsMCwxMTYsMTExLDExMSwzMiwxMDksOTcsMTEwLDEyMSwzMiw5NywxMTQsMTAzLDExNywxMDksMTAxLDExMCwxMTYsMTE1LDMyLDExMSwxMTAsMzIsMTAyLDExNywxMTAsOTksMTE2LDEwNSwxMTEsMTEwLDMyLDM3LDg0LDAsMTEzLDExNyw5NywxMDgsMTA1LDEwMiwxMDUsXG4xMDEsMTAwLDMyLDExNiw5Nyw5OCwxMDgsMTAxLDMyLDExMCw5NywxMDksMTAxLDExNSwzMiw5NywxMTQsMTAxLDMyLDExMCwxMTEsMTE2LDMyLDk3LDEwOCwxMDgsMTExLDExOSwxMDEsMTAwLDMyLDExMSwxMTAsMzIsNzMsNzgsODMsNjksODIsODQsNDQsMzIsODUsODAsNjgsNjUsODQsNjksNDQsMzIsOTcsMTEwLDEwMCwzMiw2OCw2OSw3Niw2OSw4NCw2OSwzMiwxMTUsMTE2LDk3LDExNiwxMDEsMTA5LDEwMSwxMTAsMTE2LDExNSwzMiwxMTksMTA1LDExNiwxMDQsMTA1LDExMCwzMiwxMTYsMTE0LDEwNSwxMDMsMTAzLDEwMSwxMTQsMTE1LDAsMTE2LDEwNCwxMDEsMzIsNzMsNzgsNjgsNjksODgsNjksNjgsMzIsNjYsODksMzIsOTksMTA4LDk3LDExNywxMTUsMTAxLDMyLDEwNSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsOTcsMTA4LDEwOCwxMTEsMTE5LDEwMSwxMDAsMzIsMTExLDExMCwzMiw4NSw4MCw2OCw2NSw4NCw2OSwzMiwxMTEsMTE0LDMyLDY4LDY5LDc2LDY5LDg0LDY5LDMyLFxuMTE1LDExNiw5NywxMTYsMTAxLDEwOSwxMDEsMTEwLDExNiwxMTUsMzIsMTE5LDEwNSwxMTYsMTA0LDEwNSwxMTAsMzIsMTE2LDExNCwxMDUsMTAzLDEwMywxMDEsMTE0LDExNSwwLDExNiwxMDQsMTAxLDMyLDc4LDc5LDg0LDMyLDczLDc4LDY4LDY5LDg4LDY5LDY4LDMyLDk5LDEwOCw5NywxMTcsMTE1LDEwMSwzMiwxMDUsMTE1LDMyLDExMCwxMTEsMTE2LDMyLDk3LDEwOCwxMDgsMTExLDExOSwxMDEsMTAwLDMyLDExMSwxMTAsMzIsODUsODAsNjgsNjUsODQsNjksMzIsMTExLDExNCwzMiw2OCw2OSw3Niw2OSw4NCw2OSwzMiwxMTUsMTE2LDk3LDExNiwxMDEsMTA5LDEwMSwxMTAsMTE2LDExNSwzMiwxMTksMTA1LDExNiwxMDQsMTA1LDExMCwzMiwxMTYsMTE0LDEwNSwxMDMsMTAzLDEwMSwxMTQsMTE1LDAsMTAwLDExNywxMTIsMTA4LDEwNSw5OSw5NywxMTYsMTAxLDMyLDg3LDczLDg0LDcyLDMyLDExNiw5Nyw5OCwxMDgsMTAxLDMyLDExMCw5NywxMDksMTAxLDU4LDMyLDM3LDExNSxcbjAsMTEwLDExMSwxMTYsMzIsOTcsMTE3LDExNiwxMDQsMTExLDExNCwxMDUsMTIyLDEwMSwxMDAsMCw5NywxMTcsMTE2LDEwNCwxMTEsMTE0LDEwNSwxMjIsMTAxLDExNCwzMiwxMDksOTcsMTA4LDEwMiwxMTcsMTEwLDk5LDExNiwxMDUsMTExLDExMCwwLDY3LDgyLDY5LDY1LDg0LDY5LDMyLDg2LDczLDgyLDg0LDg1LDY1LDc2LDMyLDg0LDY1LDY2LDc2LDY5LDMyLDM3LDg0LDAsODUsODAsNjgsNjUsODQsNjksMzIsMzcsODEsNDYsMzcsMTE1LDMyLDgzLDY5LDg0LDMyLDExNiwxMjEsMTEyLDEwMSw2MSwzOSwxMTYsOTcsOTgsMTA4LDEwMSwzOSw0NCwzMiwxMTAsOTcsMTA5LDEwMSw2MSwzNyw4MSw0NCwzMiwxMTYsOTgsMTA4LDk1LDExMCw5NywxMDksMTAxLDYxLDM3LDgxLDQ0LDMyLDExNCwxMTEsMTExLDExNiwxMTIsOTcsMTAzLDEwMSw2MSw0OCw0NCwzMiwxMTUsMTEzLDEwOCw2MSwzNyw4MSwzMiw4Nyw3Miw2OSw4Miw2OSwzMiwxMTQsMTExLDExOSwxMDUsMTAwLDYxLDM1LFxuMzcsMTAwLDAsMTEwLDk3LDEwOSwxMDEsNjEsMzksMzcsMTEzLDM5LDMyLDY1LDc4LDY4LDMyLDExNiwxMjEsMTEyLDEwMSw2MSwzOSwxMTYsOTcsOTgsMTA4LDEwMSwzOSwwLDExOCwxMDUsMTE0LDExNiwxMTcsOTcsMTA4LDMyLDExNiw5Nyw5OCwxMDgsMTAxLDExNSwzMiwxMDksOTcsMTIxLDMyLDExMCwxMTEsMTE2LDMyLDk4LDEwMSwzMiw5NywxMDgsMTE2LDEwMSwxMTQsMTAxLDEwMCwwLDY3LDk3LDExMCwxMTAsMTExLDExNiwzMiw5NywxMDAsMTAwLDMyLDk3LDMyLDk5LDExMSwxMDgsMTE3LDEwOSwxMTAsMzIsMTE2LDExMSwzMiw5NywzMiwxMTgsMTA1LDEwMSwxMTksMCwxMTUsMTEzLDEwOCwxMDUsMTE2LDEwMSw5NSw5NywxMDgsMTE2LDEwMSwxMTQsMTE2LDk3LDk4LDk1LDM3LDExNSwwLDExNywxMTAsOTcsOTgsMTA4LDEwMSwzMiwxMTYsMTExLDMyLDExMSwxMTIsMTAxLDExMCwzMiw5NywzMiwxMTYsMTAxLDEwOSwxMTIsMTExLDExNCw5NywxMTQsMTIxLDMyLDEwMCw5NyxcbjExNiw5Nyw5OCw5NywxMTUsMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMDIsMTExLDExNCwzMiwxMTUsMTE2LDExMSwxMTQsMTA1LDExMCwxMDMsMzIsMTE2LDEwMSwxMDksMTEyLDExMSwxMTQsOTcsMTE0LDEyMSwzMiwxMTYsOTcsOTgsMTA4LDEwMSwxMTUsMCwxMTUsMTEzLDEwOCwxMDUsMTE2LDEwMSw5NSwwLDExNiw5Nyw5OCwxMDgsMTAxLDMyLDM3LDExNSwzMiwxMDksOTcsMTIxLDMyLDExMCwxMTEsMTE2LDMyLDk4LDEwMSwzMiw5NywxMDgsMTE2LDEwMSwxMTQsMTAxLDEwMCwwLDY3LDk3LDExMCwxMTAsMTExLDExNiwzMiw5NywxMDAsMTAwLDMyLDk3LDMyLDgwLDgyLDczLDc3LDY1LDgyLDg5LDMyLDc1LDY5LDg5LDMyLDk5LDExMSwxMDgsMTE3LDEwOSwxMTAsMCw2Nyw5NywxMTAsMTEwLDExMSwxMTYsMzIsOTcsMTAwLDEwMCwzMiw5NywzMiw4NSw3OCw3Myw4MSw4NSw2OSwzMiw5OSwxMTEsMTA4LDExNywxMDksMTEwLDAsNjcsOTcsMTEwLDExMCwxMTEsMTE2LDMyLFxuOTcsMTAwLDEwMCwzMiw5NywzMiw4Miw2OSw3MCw2OSw4Miw2OSw3OCw2Nyw2OSw4MywzMiw5OSwxMTEsMTA4LDExNywxMDksMTEwLDMyLDExOSwxMDUsMTE2LDEwNCwzMiwxMTAsMTExLDExMCw0NSw3OCw4NSw3Niw3NiwzMiwxMDAsMTAxLDEwMiw5NywxMTcsMTA4LDExNiwzMiwxMTgsOTcsMTA4LDExNywxMDEsMCw2Nyw5NywxMTAsMTEwLDExMSwxMTYsMzIsOTcsMTAwLDEwMCwzMiw5NywzMiw3OCw3OSw4NCwzMiw3OCw4NSw3Niw3NiwzMiw5OSwxMTEsMTA4LDExNywxMDksMTEwLDMyLDExOSwxMDUsMTE2LDEwNCwzMiwxMDAsMTAxLDEwMiw5NywxMTcsMTA4LDExNiwzMiwxMTgsOTcsMTA4LDExNywxMDEsMzIsNzgsODUsNzYsNzYsMCw2Nyw5NywxMTAsMTEwLDExMSwxMTYsMzIsOTcsMTAwLDEwMCwzMiw5NywzMiw5OSwxMTEsMTA4LDExNywxMDksMTEwLDMyLDExOSwxMDUsMTE2LDEwNCwzMiwxMTAsMTExLDExMCw0NSw5OSwxMTEsMTEwLDExNSwxMTYsOTcsMTEwLDExNiwzMiwxMDAsXG4xMDEsMTAyLDk3LDExNywxMDgsMTE2LDAsODUsODAsNjgsNjUsODQsNjksMzIsMzQsMzcsMTE5LDM0LDQ2LDM3LDExNSwzMiw4Myw2OSw4NCwzMiwxMTUsMTEzLDEwOCwzMiw2MSwzMiwxMTUsMTE3LDk4LDExNSwxMTYsMTE0LDQwLDExNSwxMTMsMTA4LDQ0LDQ5LDQ0LDM3LDEwMCw0MSwzMiwxMjQsMTI0LDMyLDM5LDQ0LDMyLDM5LDMyLDEyNCwxMjQsMzIsMzcsODEsMzIsMTI0LDEyNCwzMiwxMTUsMTE3LDk4LDExNSwxMTYsMTE0LDQwLDExNSwxMTMsMTA4LDQ0LDM3LDEwMCw0MSwzMiw4Nyw3Miw2OSw4Miw2OSwzMiwxMTYsMTIxLDExMiwxMDEsMzIsNjEsMzIsMzksMTE2LDk3LDk4LDEwOCwxMDEsMzksMzIsNjUsNzgsNjgsMzIsMTEwLDk3LDEwOSwxMDEsMzIsNjEsMzIsMzcsODEsMCwxMTYsOTgsMTA4LDk1LDExMCw5NywxMDksMTAxLDYxLDM3LDgxLDAsMTE2LDEyMSwxMTIsMTAxLDYxLDM5LDExNiwxMTQsMTA1LDEwMywxMDMsMTAxLDExNCwzOSwzMiw2NSw3OCw2OCwzMiw0MCxcbjM3LDExNSw0MSwwLDExMCw5NywxMDksMTAxLDYxLDM3LDgxLDAsMzcsMTE1LDMyLDc5LDgyLDMyLDExMCw5NywxMDksMTAxLDYxLDM3LDgxLDAsNDUsMCwzNywxMDgsMTA4LDEwMCwwLDM3LDMzLDQ2LDQ5LDUzLDEwMywwLDExNiwxMDQsMTAxLDExNCwxMDEsMzIsMTA1LDExNSwzMiw5NywxMDgsMTE0LDEwMSw5NywxMDAsMTIxLDMyLDk3LDExMCwxMTEsMTE2LDEwNCwxMDEsMTE0LDMyLDExNiw5Nyw5OCwxMDgsMTAxLDMyLDExMSwxMTQsMzIsMTA1LDExMCwxMDAsMTAxLDEyMCwzMiwxMTksMTA1LDExNiwxMDQsMzIsMTE2LDEwNCwxMDUsMTE1LDMyLDExMCw5NywxMDksMTAxLDU4LDMyLDM3LDExNSwwLDExOCwxMDUsMTAxLDExOSwzMiwzNywxMTUsMzIsMTA5LDk3LDEyMSwzMiwxMTAsMTExLDExNiwzMiw5OCwxMDEsMzIsOTcsMTA4LDExNiwxMDEsMTE0LDEwMSwxMDAsMCw4NSw4MCw2OCw2NSw4NCw2OSwzMiwzNCwzNywxMTksMzQsNDYsMzcsMTE1LDMyLDgzLDY5LDg0LDMyLDExNSxcbjExMywxMDgsMzIsNjEsMzIsMTE1LDExMywxMDgsMTA1LDExNiwxMDEsOTUsMTE0LDEwMSwxMTAsOTcsMTA5LDEwMSw5NSwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDQwLDExNSwxMTMsMTA4LDQ0LDMyLDM3LDgxLDQ0LDMyLDM3LDgxLDQxLDMyLDg3LDcyLDY5LDgyLDY5LDMyLDM3LDExNSw1OSwwLDg1LDgwLDY4LDY1LDg0LDY5LDMyLDM3LDgxLDQ2LDM3LDExNSwzMiw4Myw2OSw4NCwzMiwxMTUsMTEzLDEwOCwzMiw2MSwzMiw2Nyw2NSw4Myw2OSwzMiw4Nyw3Miw2OSw3OCwzMiwxMTYsMTIxLDExMiwxMDEsMzIsNjEsMzIsMzksMTE2LDExNCwxMDUsMTAzLDEwMywxMDEsMTE0LDM5LDMyLDg0LDcyLDY5LDc4LDMyLDExNSwxMTMsMTA4LDEwNSwxMTYsMTAxLDk1LDExNCwxMDEsMTEwLDk3LDEwOSwxMDEsOTUsMTE2LDExNCwxMDUsMTAzLDEwMywxMDEsMTE0LDQwLDExNSwxMTMsMTA4LDQ0LDMyLDM3LDgxLDQxLDY5LDc2LDgzLDY5LDMyLDExNSwxMTMsMTA4LDEwNSwxMTYsMTAxLDk1LFxuMTE0LDEwMSwxMTAsOTcsMTA5LDEwMSw5NSwxMTYsOTcsOTgsMTA4LDEwMSw0MCwxMTUsMTEzLDEwOCw0NCwzMiwzNyw4MSw0MSwzMiw2OSw3OCw2OCw0NCwzMiwxMTYsOTgsMTA4LDk1LDExMCw5NywxMDksMTAxLDMyLDYxLDMyLDM3LDgxLDQ0LDMyLDExMCw5NywxMDksMTAxLDMyLDYxLDMyLDY3LDY1LDgzLDY5LDMyLDg3LDcyLDY5LDc4LDMyLDExNiwxMjEsMTEyLDEwMSw2MSwzOSwxMTYsOTcsOTgsMTA4LDEwMSwzOSwzMiw4NCw3Miw2OSw3OCwzMiwzNyw4MSwzMiw4Nyw3Miw2OSw3OCwzMiwxMTAsOTcsMTA5LDEwMSwzMiw3Niw3Myw3NSw2OSwzMiwzOSwxMTUsMTEzLDEwOCwxMDUsMTE2LDEwMSw5NSw5NywxMTcsMTE2LDExMSwxMDUsMTEwLDEwMCwxMDEsMTIwLDM3LDM3LDM5LDMyLDY1LDc4LDY4LDMyLDExNiwxMjEsMTEyLDEwMSw2MSwzOSwxMDUsMTEwLDEwMCwxMDEsMTIwLDM5LDMyLDg0LDcyLDY5LDc4LDMyLDM5LDExNSwxMTMsMTA4LDEwNSwxMTYsMTAxLDk1LDk3LDExNyxcbjExNiwxMTEsMTA1LDExMCwxMDAsMTAxLDEyMCw5NSwzOSwzMiwxMjQsMTI0LDMyLDM3LDgxLDMyLDEyNCwxMjQsMzIsMTE1LDExNyw5OCwxMTUsMTE2LDExNCw0MCwxMTAsOTcsMTA5LDEwMSw0NCwzNywxMDAsNDMsNDksNTYsNDEsMzIsNjksNzYsODMsNjksMzIsMTEwLDk3LDEwOSwxMDEsMzIsNjksNzgsNjgsMzIsODcsNzIsNjksODIsNjksMzIsMTE2LDk4LDEwOCw5NSwxMTAsOTcsMTA5LDEwMSw2MSwzNyw4MSwzMiw2Nyw3OSw3Niw3Niw2NSw4NCw2OSwzMiwxMTAsMTExLDk5LDk3LDExNSwxMDEsMzIsNjUsNzgsNjgsMzIsNDAsMTE2LDEyMSwxMTIsMTAxLDYxLDM5LDExNiw5Nyw5OCwxMDgsMTAxLDM5LDMyLDc5LDgyLDMyLDExNiwxMjEsMTEyLDEwMSw2MSwzOSwxMDUsMTEwLDEwMCwxMDEsMTIwLDM5LDMyLDc5LDgyLDMyLDExNiwxMjEsMTEyLDEwMSw2MSwzOSwxMTYsMTE0LDEwNSwxMDMsMTAzLDEwMSwxMTQsMzksNDEsNTksMCwxMTUsMTEzLDEwOCwxMDUsMTE2LDEwMSw5NSxcbjExNSwxMDEsMTEzLDExNywxMDEsMTEwLDk5LDEwMSwwLDg1LDgwLDY4LDY1LDg0LDY5LDMyLDM0LDM3LDExOSwzNCw0NiwxMTUsMTEzLDEwOCwxMDUsMTE2LDEwMSw5NSwxMTUsMTAxLDExMywxMTcsMTAxLDExMCw5OSwxMDEsMzIsMTE1LDEwMSwxMTYsMzIsMTEwLDk3LDEwOSwxMDEsMzIsNjEsMzIsMzcsODEsMzIsODcsNzIsNjksODIsNjksMzIsMTEwLDk3LDEwOSwxMDEsMzIsNjEsMzIsMzcsODEsMCw4NSw4MCw2OCw2NSw4NCw2OSwzMiwxMTUsMTEzLDEwOCwxMDUsMTE2LDEwMSw5NSwxMTYsMTAxLDEwOSwxMTIsOTUsMTA5LDk3LDExNSwxMTYsMTAxLDExNCwzMiw4Myw2OSw4NCwzMiwxMTUsMTEzLDEwOCwzMiw2MSwzMiwxMTUsMTEzLDEwOCwxMDUsMTE2LDEwMSw5NSwxMTQsMTAxLDExMCw5NywxMDksMTAxLDk1LDExNiwxMTQsMTA1LDEwMywxMDMsMTAxLDExNCw0MCwxMTUsMTEzLDEwOCw0NCwzMiwzNyw4MSw0MSw0NCwzMiwxMTYsOTgsMTA4LDk1LDExMCw5NywxMDksMTAxLFxuMzIsNjEsMzIsMzcsODEsMzIsODcsNzIsNjksODIsNjksMzIsMzcsMTE1LDU5LDAsMTE4LDEwNSwxMDEsMTE5LDMyLDM3LDExNSwzMiwxMDUsMTE1LDMyLDk5LDEwNSwxMTQsOTksMTE3LDEwOCw5NywxMTQsMTA4LDEyMSwzMiwxMDAsMTAxLDEwMiwxMDUsMTEwLDEwMSwxMDAsMCwxMTAsMTExLDMyLDExNSwxMTcsOTksMTA0LDMyLDk5LDExMSwxMDgsMTA4LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMTUsMTAxLDExMywxMTcsMTAxLDExMCw5OSwxMDEsNTgsMzIsMzcsMTE1LDAsMywyLDEsMzcsNDYsNDIsMTIyLDU4LDM3LDExNywwLDk3LDMyLDcxLDgyLDc5LDg1LDgwLDMyLDY2LDg5LDMyLDk5LDEwOCw5NywxMTcsMTE1LDEwMSwzMiwxMDUsMTE1LDMyLDExNCwxMDEsMTEzLDExNywxMDUsMTE0LDEwMSwxMDAsMzIsOTgsMTAxLDEwMiwxMTEsMTE0LDEwMSwzMiw3Miw2NSw4Niw3Myw3OCw3MSwwLDc5LDgyLDY4LDY5LDgyLDAsNzEsODIsNzksODUsODAsMCw5NywxMDMsMTAzLDExNCwxMDEsXG4xMDMsOTcsMTE2LDEwMSwzMiwxMDIsMTE3LDExMCw5OSwxMTYsMTA1LDExMSwxMTAsMTE1LDMyLDk3LDExNCwxMDEsMzIsMTEwLDExMSwxMTYsMzIsOTcsMTA4LDEwOCwxMTEsMTE5LDEwMSwxMDAsMzIsMTA1LDExMCwzMiwxMTYsMTA0LDEwMSwzMiw3MSw4Miw3OSw4NSw4MCwzMiw2Niw4OSwzMiw5OSwxMDgsOTcsMTE3LDExNSwxMDEsMCwxMTYsMTExLDExMSwzMiwxMDksOTcsMTEwLDEyMSwzMiwxMTYsMTAxLDExNCwxMDksMTE1LDMyLDEwNSwxMTAsMzIsNzksODIsNjgsNjksODIsMzIsNjYsODksMzIsOTksMTA4LDk3LDExNywxMTUsMTAxLDAsMzcsMTE0LDMyLDc5LDgyLDY4LDY5LDgyLDMyLDY2LDg5LDMyLDExNiwxMDEsMTE0LDEwOSwzMiwxMDAsMTExLDEwMSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsMTA5LDk3LDExNiw5OSwxMDQsMzIsOTcsMTEwLDEyMSwzMiw5OSwxMTEsMTA4LDExNywxMDksMTEwLDMyLDEwNSwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTE0LDEwMSwxMTUsMTE3LFxuMTA4LDExNiwzMiwxMTUsMTAxLDExNiwwLDM3LDExNCwzMiwzNywxMTUsMzIsNjYsODksMzIsMTE2LDEwMSwxMTQsMTA5LDMyLDExMSwxMTcsMTE2LDMyLDExMSwxMDIsMzIsMTE0LDk3LDExMCwxMDMsMTAxLDMyLDQ1LDMyLDExNSwxMDQsMTExLDExNywxMDgsMTAwLDMyLDk4LDEwMSwzMiw5OCwxMDEsMTE2LDExOSwxMDEsMTAxLDExMCwzMiw0OSwzMiw5NywxMTAsMTAwLDMyLDM3LDEwMCwwLDk3LDEwOCwxMDgsMzIsODYsNjUsNzYsODUsNjksODMsMzIsMTA5LDExNywxMTUsMTE2LDMyLDEwNCw5NywxMTgsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDExNSw5NywxMDksMTAxLDMyLDExMCwxMTcsMTA5LDk4LDEwMSwxMTQsMzIsMTExLDEwMiwzMiwxMTYsMTAxLDExNCwxMDksMTE1LDAsODMsNjksNzYsNjksNjcsODQsMTE1LDMyLDExNiwxMTEsMzIsMTE2LDEwNCwxMDEsMzIsMTA4LDEwMSwxMDIsMTE2LDMyLDk3LDExMCwxMDAsMzIsMTE0LDEwNSwxMDMsMTA0LDExNiwzMiwxMTEsMTAyLFxuMzIsMzcsMTE1LDMyLDEwMCwxMTEsMzIsMTEwLDExMSwxMTYsMzIsMTA0LDk3LDExOCwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDk3LDEwOSwxMDEsMzIsMTEwLDExNywxMDksOTgsMTAxLDExNCwzMiwxMTEsMTAyLDMyLDExNCwxMDEsMTE1LDExNywxMDgsMTE2LDMyLDk5LDExMSwxMDgsMTE3LDEwOSwxMTAsMTE1LDAsODUsNzgsNzMsNzksNzgsMzIsNjUsNzYsNzYsMCw3Myw3OCw4NCw2OSw4Miw4Myw2OSw2Nyw4NCwwLDY5LDg4LDY3LDY5LDgwLDg0LDAsODUsNzgsNzMsNzksNzgsMCwxMTYsMTExLDExMSwzMiwxMDksOTcsMTEwLDEyMSwzMiwxMTYsMTAxLDExNCwxMDksMTE1LDMyLDEwNSwxMTAsMzIsMzcsMTE1LDMyLDY2LDg5LDMyLDk5LDEwOCw5NywxMTcsMTE1LDEwMSwwLDY5LDEyMCwxMTIsMTE0LDEwMSwxMTUsMTE1LDEwNSwxMTEsMTEwLDMyLDExNiwxMTQsMTAxLDEwMSwzMiwxMDUsMTE1LDMyLDExNiwxMTEsMTExLDMyLDEwOCw5NywxMTQsMTAzLDEwMSwzMiw0MCwxMDksXG45NywxMjAsMTA1LDEwOSwxMTcsMTA5LDMyLDEwMCwxMDEsMTEyLDExNiwxMDQsMzIsMzcsMTAwLDQxLDAsMTE2LDEwNCwxMDEsMzIsMzQsNDYsMzQsMzIsMTExLDExMiwxMDEsMTE0LDk3LDExNiwxMTEsMTE0LDAsMTE1LDEwMSw5OSwxMTEsMTEwLDEwMCwzMiw5NywxMTQsMTAzLDExNywxMDksMTAxLDExMCwxMTYsMzIsMTE2LDExMSwzMiwxMDgsMTA1LDEwNywxMDEsMTA4LDEwNSwxMDQsMTExLDExMSwxMDAsNDAsNDEsMzIsMTA5LDExNywxMTUsMTE2LDMyLDk4LDEwMSwzMiw5NywzMiw5OSwxMTEsMTEwLDExNSwxMTYsOTcsMTEwLDExNiwzMiw5OCwxMDEsMTE2LDExOSwxMDEsMTAxLDExMCwzMiw0OCw0Niw0OCwzMiw5NywxMTAsMTAwLDMyLDQ5LDQ2LDQ4LDAsMTEwLDExMSwxMTYsMzIsOTcsMTE3LDExNiwxMDQsMTExLDExNCwxMDUsMTIyLDEwMSwxMDAsMzIsMTE2LDExMSwzMiwxMTcsMTE1LDEwMSwzMiwxMDIsMTE3LDExMCw5OSwxMTYsMTA1LDExMSwxMTAsNTgsMzIsMzcsMTE1LFxuMCwxMTAsMTExLDExMCw0NSwxMDAsMTAxLDExNiwxMDEsMTE0LDEwOSwxMDUsMTEwLDEwNSwxMTUsMTE2LDEwNSw5OSwzMiwxMDIsMTE3LDExMCw5OSwxMTYsMTA1LDExMSwxMTAsMTE1LDAsMTA5LDEwNSwxMTUsMTE3LDExNSwxMDEsMzIsMTExLDEwMiwzMiw5NywxMDMsMTAzLDExNCwxMDEsMTAzLDk3LDExNiwxMDEsMzIsMTAyLDExNywxMTAsOTksMTE2LDEwNSwxMTEsMTEwLDMyLDM3LDQ2LDQyLDExNSw0MCw0MSwwLDExMCwxMTEsMzIsMTE1LDExNyw5OSwxMDQsMzIsMTAyLDExNywxMTAsOTksMTE2LDEwNSwxMTEsMTEwLDU4LDMyLDM3LDQ2LDQyLDExNSwwLDExOSwxMTQsMTExLDExMCwxMDMsMzIsMTEwLDExNywxMDksOTgsMTAxLDExNCwzMiwxMTEsMTAyLDMyLDk3LDExNCwxMDMsMTE3LDEwOSwxMDEsMTEwLDExNiwxMTUsMzIsMTE2LDExMSwzMiwxMDIsMTE3LDExMCw5OSwxMTYsMTA1LDExMSwxMTAsMzIsMzcsNDYsNDIsMTE1LDQwLDQxLDAsMTE1LDExNyw5OCwxMTMsMTE3LFxuMTAxLDExNCwxMDUsMTAxLDExNSwwLDExMiw5NywxMTQsOTcsMTA5LDEwMSwxMTYsMTAxLDExNCwxMTUsMCwxMTQsMTExLDExOSwzMiwxMTgsOTcsMTA4LDExNywxMDEsMzIsMTA5LDEwNSwxMTUsMTE3LDExNSwxMDEsMTAwLDAsMTEyLDk3LDExNCwxMTYsMTA1LDk3LDEwOCwzMiwxMDUsMTEwLDEwMCwxMDEsMTIwLDMyLDg3LDcyLDY5LDgyLDY5LDMyLDk5LDEwOCw5NywxMTcsMTE1LDEwMSwxMTUsMCwxMDUsMTEwLDEwMCwxMDEsMTIwLDMyLDEwMSwxMjAsMTEyLDExNCwxMDEsMTE1LDExNSwxMDUsMTExLDExMCwxMTUsMCw2Nyw3Miw2OSw2Nyw3NSwzMiw5OSwxMTEsMTEwLDExNSwxMTYsMTE0LDk3LDEwNSwxMTAsMTE2LDExNSwwLDM3LDExNSwzMiwxMTIsMTE0LDExMSwxMDQsMTA1LDk4LDEwNSwxMTYsMTAxLDEwMCwzMiwxMDUsMTEwLDMyLDM3LDExNSwwLDExMCwxMDEsMTE5LDAsMTExLDEwOCwxMDAsMCwxMDksMTA1LDExNSwxMTcsMTE1LDEwMSwzMiwxMTEsMTAyLDMyLDk3LDEwOCxcbjEwNSw5NywxMTUsMTAxLDEwMCwzMiw5NywxMDMsMTAzLDExNCwxMDEsMTAzLDk3LDExNiwxMDEsMzIsMzcsMTE1LDAsMTEwLDExMSwzMiwxMTUsMTE3LDk5LDEwNCwzMiw5OSwxMTEsMTA4LDExNywxMDksMTEwLDAsOTcsMTA5LDk4LDEwNSwxMDMsMTE3LDExMSwxMTcsMTE1LDMyLDk5LDExMSwxMDgsMTE3LDEwOSwxMTAsMzIsMTEwLDk3LDEwOSwxMDEsMCwzNywxMTUsNTgsMzIsMzcsMTE1LDQ2LDM3LDExNSw0NiwzNywxMTUsMCwzNywxMTUsNTgsMzIsMzcsMTE1LDQ2LDM3LDExNSwwLDM3LDExNSw1OCwzMiwzNywxMTUsMCw5Nyw5OSw5OSwxMDEsMTE1LDExNSwzMiwxMTYsMTExLDMyLDM3LDExNSw0NiwzNywxMTUsNDYsMzcsMTE1LDMyLDEwNSwxMTUsMzIsMTEyLDExNCwxMTEsMTA0LDEwNSw5OCwxMDUsMTE2LDEwMSwxMDAsMCw5Nyw5OSw5OSwxMDEsMTE1LDExNSwzMiwxMTYsMTExLDMyLDM3LDExNSw0NiwzNywxMTUsMzIsMTA1LDExNSwzMiwxMTIsMTE0LDExMSwxMDQsMTA1LFxuOTgsMTA1LDExNiwxMDEsMTAwLDAsMTE1LDExMywxMDgsMTA1LDExNiwxMDEsOTUsMTE1LDExMyw5NSwzNywxMTIsMCwxMTYsMTExLDExMSwzMiwxMDksOTcsMTEwLDEyMSwzMiwxMTQsMTAxLDEwMiwxMDEsMTE0LDEwMSwxMTAsOTksMTAxLDExNSwzMiwxMTYsMTExLDMyLDM0LDM3LDExNSwzNCw1OCwzMiwxMDksOTcsMTIwLDMyLDU0LDUzLDUzLDUxLDUzLDAsMzcsMTE1LDQ2LDM3LDExNSwwLDM3LDExNSw0NiwzNywxMTUsNDYsMzcsMTE1LDAsMTEwLDExMSwzMiwxMTUsMTE3LDk5LDEwNCwzMiwxMTYsOTcsOTgsMTA4LDEwMSw1OCwzMiwzNywxMTUsMCwxMTAsMTExLDMyLDExNiw5Nyw5OCwxMDgsMTAxLDExNSwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSwxMDEsMTAwLDAsMTE2LDExMSwxMTEsMzIsMTA5LDk3LDExMCwxMjEsMzIsOTksMTExLDEwOCwxMTcsMTA5LDExMCwxMTUsMzIsMTA1LDExMCwzMiwxMTQsMTAxLDExNSwxMTcsMTA4LDExNiwzMiwxMTUsMTAxLDExNiwwLFxuOTcsMzIsNzgsNjUsODQsODUsODIsNjUsNzYsMzIsMTA2LDExMSwxMDUsMTEwLDMyLDEwOSw5NywxMjEsMzIsMTEwLDExMSwxMTYsMzIsMTA0LDk3LDExOCwxMDEsMzIsOTcsMTEwLDMyLDc5LDc4LDMyLDExMSwxMTQsMzIsODUsODMsNzMsNzgsNzEsMzIsOTksMTA4LDk3LDExNywxMTUsMTAxLDAsOTksOTcsMTEwLDExMCwxMTEsMTE2LDMyLDEwNCw5NywxMTgsMTAxLDMyLDk4LDExMSwxMTYsMTA0LDMyLDc5LDc4LDMyLDk3LDExMCwxMDAsMzIsODUsODMsNzMsNzgsNzEsMzIsOTksMTA4LDk3LDExNywxMTUsMTAxLDExNSwzMiwxMDUsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDExNSw5NywxMDksMTAxLDMyLDEwNiwxMTEsMTA1LDExMCwwLDk5LDk3LDExMCwxMTAsMTExLDExNiwzMiwxMDYsMTExLDEwNSwxMTAsMzIsMTE3LDExNSwxMDUsMTEwLDEwMywzMiw5OSwxMTEsMTA4LDExNywxMDksMTEwLDMyLDM3LDExNSwzMiw0NSwzMiw5OSwxMTEsMTA4LDExNywxMDksMTEwLDMyLDExMCwxMTEsXG4xMTYsMzIsMTEyLDExNCwxMDEsMTE1LDEwMSwxMTAsMTE2LDMyLDEwNSwxMTAsMzIsOTgsMTExLDExNiwxMDQsMzIsMTE2LDk3LDk4LDEwOCwxMDEsMTE1LDAsMTEwLDExMSwzMiwxMTUsMTE3LDk5LDEwNCwzMiwxMDUsMTEwLDEwMCwxMDEsMTIwLDU4LDMyLDM3LDExNSwwLDM5LDM3LDExNSwzOSwzMiwxMDUsMTE1LDMyLDExMCwxMTEsMTE2LDMyLDk3LDMyLDEwMiwxMTcsMTEwLDk5LDExNiwxMDUsMTExLDExMCwwLDEwOSwxMTcsMTA4LDExNiwxMDUsMTEyLDEwOCwxMDEsMzIsMTE0LDEwMSwxMDIsMTAxLDExNCwxMDEsMTEwLDk5LDEwMSwxMTUsMzIsMTE2LDExMSwzMiwxMTQsMTAxLDk5LDExNywxMTQsMTE1LDEwNSwxMTgsMTAxLDMyLDExNiw5Nyw5OCwxMDgsMTAxLDU4LDMyLDM3LDExNSwwLDk5LDEwNSwxMTQsOTksMTE3LDEwOCw5NywxMTQsMzIsMTE0LDEwMSwxMDIsMTAxLDExNCwxMDEsMTEwLDk5LDEwMSw1OCwzMiwzNywxMTUsMCwxMTYsOTcsOTgsMTA4LDEwMSwzMiwzNyxcbjExNSwzMiwxMDQsOTcsMTE1LDMyLDM3LDEwMCwzMiwxMTgsOTcsMTA4LDExNywxMDEsMTE1LDMyLDEwMiwxMTEsMTE0LDMyLDM3LDEwMCwzMiw5OSwxMTEsMTA4LDExNywxMDksMTEwLDExNSwwLDEwOSwxMTcsMTA4LDExNiwxMDUsMTEyLDEwOCwxMDEsMzIsMTE0LDEwMSw5OSwxMTcsMTE0LDExNSwxMDUsMTE4LDEwMSwzMiwxMTQsMTAxLDEwMiwxMDEsMTE0LDEwMSwxMTAsOTksMTAxLDExNSw1OCwzMiwzNywxMTUsMCwxMTQsMTAxLDk5LDExNywxMTQsMTE1LDEwNSwxMTgsMTAxLDMyLDExNCwxMDEsMTAyLDEwMSwxMTQsMTAxLDExMCw5OSwxMDEsMzIsMTA1LDExMCwzMiw5NywzMiwxMTUsMTE3LDk4LDExMywxMTcsMTAxLDExNCwxMjEsNTgsMzIsMzcsMTE1LDAsMTEwLDExMSwzMiwxMTUsMTE3LDk5LDEwNCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw1OCwzMiwzNywxMTUsMCwxMTgsMTE2LDk3LDk4LDEwOCwxMDEsMzIsOTksMTExLDExMCwxMTUsMTE2LDExNCwxMTcsOTksMTE2LFxuMTExLDExNCwzMiw5OSw5NywxMDgsMTA4LDEwMSwxMDAsMzIsMTE0LDEwMSw5OSwxMTcsMTE0LDExNSwxMDUsMTE4LDEwMSwxMDgsMTIxLDU4LDMyLDM3LDExNSwwLDExOCwxMTYsOTcsOTgsMTA4LDEwMSwzMiw5OSwxMTEsMTEwLDExNSwxMTYsMTE0LDExNyw5OSwxMTYsMTExLDExNCwzMiwxMDIsOTcsMTA1LDEwOCwxMDEsMTAwLDU4LDMyLDM3LDExNSwwLDExOCwxMTYsOTcsOTgsMTA4LDEwMV0sXCJpOFwiLDQsbC5hYSsyMDQ4MCk7XG56KFszMiw5OSwxMTEsMTEwLDExNSwxMTYsMTE0LDExNyw5OSwxMTYsMTExLDExNCwzMiwxMDAsMTA1LDEwMCwzMiwxMTAsMTExLDExNiwzMiwxMDAsMTAxLDk5LDEwOCw5NywxMTQsMTAxLDMyLDExNSw5OSwxMDQsMTAxLDEwOSw5Nyw1OCwzMiwzNywxMTUsMCwxMDQsMTA1LDEwMCwxMDAsMTAxLDExMCwwLDExMSw5OCwxMDYsMTAxLDk5LDExNiwzMiwxMTAsOTcsMTA5LDEwMSwzMiwxMTQsMTAxLDExNSwxMDEsMTE0LDExOCwxMDEsMTAwLDMyLDEwMiwxMTEsMTE0LDMyLDEwNSwxMTAsMTE2LDEwMSwxMTQsMTEwLDk3LDEwOCwzMiwxMTcsMTE1LDEwMSw1OCwzMiwzNywxMTUsMCw5OSwxMTEsMTE0LDExNCwxMTcsMTEyLDExNiwzMiwxMDAsOTcsMTE2LDk3LDk4LDk3LDExNSwxMDEsMCwxMTcsMTEwLDEwNywxMTAsMTExLDExOSwxMTAsMzIsMTAwLDk3LDExNiw5Nyw5OCw5NywxMTUsMTAxLDMyLDM3LDg0LDAsMTA1LDEwMCwxMjAsMCwxMTYsOTgsMTA4LDAsMTE1LDExMywxMDgsMTA1LDExNixcbjEwMSw5NSwzNywwLDY2LDY2LDY2LDAsMTE1LDExNiw5NywxMTYsOTUsMTAzLDEwMSwxMTYsMCwzNywxMDgsMTA4LDExNywwLDMyLDM3LDEwOCwxMDgsMTE3LDAsMTE1LDExNiw5NywxMTYsOTUsMTEyLDExNywxMTUsMTA0LDAsMTE1LDExNiw5NywxMTYsOTUsMTA1LDExMCwxMDUsMTE2LDAsNjcsODIsNjksNjUsODQsNjksMzIsODQsNjUsNjYsNzYsNjksMzIsMzcsODEsNDYsMzcsMTE1LDQwLDM3LDExNSw0MSwwLDY4LDY5LDc2LDY5LDg0LDY5LDMyLDcwLDgyLDc5LDc3LDMyLDM3LDgxLDQ2LDM3LDExNSwzMiw4Nyw3Miw2OSw4Miw2OSwzMiwzNywxMTUsNjEsMzcsODEsMCwxMTYsOTgsMTA4LDQ0LDEwNSwxMDAsMTIwLDQ0LDExNSwxMTYsOTcsMTE2LDAsMTE1LDExMywxMDgsMTA1LDExNiwxMDEsOTUsMTE1LDExNiw5NywxMTYsNTEsMCwxMTUsMTEzLDEwOCwxMDUsMTE2LDEwMSw5NSwxMTUsMTE2LDk3LDExNiw1MiwwLDExNywxMTAsOTcsOTgsMTA4LDEwMSwzMiwxMTYsMTExLDMyLFxuMTA1LDEwMCwxMDEsMTEwLDExNiwxMDUsMTAyLDEyMSwzMiwxMTYsMTA0LDEwMSwzMiwxMTEsOTgsMTA2LDEwMSw5OSwxMTYsMzIsMTE2LDExMSwzMiw5OCwxMDEsMzIsMTE0LDEwMSwxMDUsMTEwLDEwMCwxMDEsMTIwLDEwMSwxMDAsMCwxMDUsMTEwLDEwMCwxMDEsMTIwLDMyLDM5LDM3LDExMywzOSwwLDQ0LDMyLDAsMTA5LDEwNSwxMTUsMTE3LDExNSwxMDEsMzIsMTExLDEwMiwzMiw5NywxMDMsMTAzLDExNCwxMDEsMTAzLDk3LDExNiwxMDEsNTgsMzIsMzcsMTE1LDQwLDQxLDAsMTE3LDExMCwxMDcsMTEwLDExMSwxMTksMTEwLDMyLDEwMiwxMTcsMTEwLDk5LDExNiwxMDUsMTExLDExMCw1OCwzMiwzNywxMTUsNDAsNDEsMCw4Miw2NSw3Myw4Myw2OSw0MCw0MSwzMiwxMDksOTcsMTIxLDMyLDExMSwxMTAsMTA4LDEyMSwzMiw5OCwxMDEsMzIsMTE3LDExNSwxMDEsMTAwLDMyLDExOSwxMDUsMTE2LDEwNCwxMDUsMTEwLDMyLDk3LDMyLDExNiwxMTQsMTA1LDEwMywxMDMsMTAxLDExNCxcbjQ1LDExMiwxMTQsMTExLDEwMywxMTQsOTcsMTA5LDAsODUsODMsNzMsNzgsNzEsMzIsNzMsNzgsNjgsNjksODgsMzIsMzcsMTE1LDMyLDcwLDc5LDgyLDMyLDczLDc4LDQ1LDc5LDgwLDY5LDgyLDY1LDg0LDc5LDgyLDAsNjcsNzksODIsODIsNjksNzYsNjUsODQsNjksNjgsMzIsMCw3Niw3Myw4Myw4NCwwLDgzLDY3LDY1LDc2LDY1LDgyLDAsNjksODgsNjksNjcsODUsODQsNjksMzIsMzcsMTE1LDM3LDExNSwzMiw4Myw4NSw2Niw4MSw4NSw2OSw4Miw4OSwzMiwzNywxMDAsMCwxMTUsMTE3LDk4LDQ1LDExNSwxMDEsMTA4LDEwMSw5OSwxMTYsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMTE1LDMyLDM3LDEwMCwzMiw5OSwxMTEsMTA4LDExNywxMDksMTEwLDExNSwzMiw0NSwzMiwxMDEsMTIwLDExMiwxMDEsOTksMTE2LDEwMSwxMDAsMzIsMzcsMTAwLDAsNDgsMTIwLDAsMTA0LDEwMSwxMjAsMzIsMTA4LDEwNSwxMTYsMTAxLDExNCw5NywxMDgsMzIsMTE2LDExMSwxMTEsMzIsOTgsXG4xMDUsMTAzLDU4LDMyLDM3LDExNSwwLDExNSwxMTMsMTA4LDEwNSwxMTYsMTAxLDk1LDEwMCwxMDEsMTE2LDk3LDk5LDEwNCwwLDExMCwxMTEsMzIsMTE1LDExNyw5OSwxMDQsMzIsMTAwLDk3LDExNiw5Nyw5OCw5NywxMTUsMTAxLDU4LDMyLDM3LDExNSwwLDk5LDk3LDExMCwxMTAsMTExLDExNiwzMiwxMDAsMTAxLDExNiw5Nyw5OSwxMDQsMzIsMTAwLDk3LDExNiw5Nyw5OCw5NywxMTUsMTAxLDMyLDM3LDExNSwwLDk5LDk3LDExMCwxMTAsMTExLDExNiwzMiw2OCw2OSw4NCw2NSw2Nyw3MiwzMiwxMDAsOTcsMTE2LDk3LDk4LDk3LDExNSwxMDEsMzIsMTE5LDEwNSwxMTYsMTA0LDEwNSwxMTAsMzIsMTE2LDExNCw5NywxMTAsMTE1LDk3LDk5LDExNiwxMDUsMTExLDExMCwwLDEwMCw5NywxMTYsOTcsOTgsOTcsMTE1LDEwMSwzMiwzNywxMTUsMzIsMTA1LDExNSwzMiwxMDgsMTExLDk5LDEwNywxMDEsMTAwLDAsMTE1LDExMywxMDgsMTA1LDExNiwxMDEsOTUsOTcsMTE2LDExNiw5Nyxcbjk5LDEwNCwwLDExNiwxMTEsMTExLDMyLDEwOSw5NywxMTAsMTIxLDMyLDk3LDExNiwxMTYsOTcsOTksMTA0LDEwMSwxMDAsMzIsMTAwLDk3LDExNiw5Nyw5OCw5NywxMTUsMTAxLDExNSwzMiw0NSwzMiwxMDksOTcsMTIwLDMyLDM3LDEwMCwwLDk5LDk3LDExMCwxMTAsMTExLDExNiwzMiw2NSw4NCw4NCw2NSw2Nyw3MiwzMiwxMDAsOTcsMTE2LDk3LDk4LDk3LDExNSwxMDEsMzIsMTE5LDEwNSwxMTYsMTA0LDEwNSwxMTAsMzIsMTE2LDExNCw5NywxMTAsMTE1LDk3LDk5LDExNiwxMDUsMTExLDExMCwwLDEwMCw5NywxMTYsOTcsOTgsOTcsMTE1LDEwMSwzMiwzNywxMTUsMzIsMTA1LDExNSwzMiw5NywxMDgsMTE0LDEwMSw5NywxMDAsMTIxLDMyLDEwNSwxMTAsMzIsMTE3LDExNSwxMDEsMCwxMDAsOTcsMTE2LDk3LDk4LDk3LDExNSwxMDEsMzIsMTA1LDExNSwzMiw5NywxMDgsMTE0LDEwMSw5NywxMDAsMTIxLDMyLDk3LDExNiwxMTYsOTcsOTksMTA0LDEwMSwxMDAsMCwxMTcsMTEwLFxuOTcsOTgsMTA4LDEwMSwzMiwxMTYsMTExLDMyLDExMSwxMTIsMTAxLDExMCwzMiwxMDAsOTcsMTE2LDk3LDk4LDk3LDExNSwxMDEsNTgsMzIsMzcsMTE1LDAsMTEwLDExMSwzMiwxMTUsMTE3LDk5LDEwNCwzMiwxMTYsMTE0LDEwNSwxMDMsMTAzLDEwMSwxMTQsNTgsMzIsMzcsODMsMCw2OCw2OSw3Niw2OSw4NCw2OSwzMiw3MCw4Miw3OSw3NywzMiwzNyw4MSw0NiwzNywxMTUsMzIsODcsNzIsNjksODIsNjksMzIsMTEwLDk3LDEwOSwxMDEsNjEsMzcsODEsMzIsNjUsNzgsNjgsMzIsMTE2LDEyMSwxMTIsMTAxLDYxLDM5LDExNiwxMTQsMTA1LDEwMywxMDMsMTAxLDExNCwzOSwwLDExNiwxMDEsMTA5LDExMiwxMTEsMTE0LDk3LDExNCwxMjEsMzIsMTE2LDExNCwxMDUsMTAzLDEwMywxMDEsMTE0LDMyLDEwOSw5NywxMjEsMzIsMTEwLDExMSwxMTYsMzIsMTA0LDk3LDExOCwxMDEsMzIsMTEzLDExNyw5NywxMDgsMTA1LDEwMiwxMDUsMTAxLDEwMCwzMiwxMTAsOTcsMTA5LDEwMSwwLDk5LFxuOTcsMTEwLDExMCwxMTEsMTE2LDMyLDk5LDExNCwxMDEsOTcsMTE2LDEwMSwzMiwxMTYsMTE0LDEwNSwxMDMsMTAzLDEwMSwxMTQsMTE1LDMyLDExMSwxMTAsMzIsMTE4LDEwNSwxMTQsMTE2LDExNyw5NywxMDgsMzIsMTE2LDk3LDk4LDEwOCwxMDEsMTE1LDAsMTE2LDExNCwxMDUsMTAzLDEwMywxMDEsMTE0LDMyLDM3LDg0LDMyLDk3LDEwOCwxMTQsMTAxLDk3LDEwMCwxMjEsMzIsMTAxLDEyMCwxMDUsMTE1LDExNiwxMTUsMCw5OSw5NywxMTAsMTEwLDExMSwxMTYsMzIsOTksMTE0LDEwMSw5NywxMTYsMTAxLDMyLDExNiwxMTQsMTA1LDEwMywxMDMsMTAxLDExNCwzMiwxMTEsMTEwLDMyLDExNSwxMjEsMTE1LDExNiwxMDEsMTA5LDMyLDExNiw5Nyw5OCwxMDgsMTAxLDAsNjYsNjksNzAsNzksODIsNjksMCw2NSw3MCw4NCw2OSw4MiwwLDk5LDk3LDExMCwxMTAsMTExLDExNiwzMiw5OSwxMTQsMTAxLDk3LDExNiwxMDEsMzIsMzcsMTE1LDMyLDExNiwxMTQsMTA1LDEwMywxMDMsMTAxLFxuMTE0LDMyLDExMSwxMTAsMzIsMTE4LDEwNSwxMDEsMTE5LDU4LDMyLDM3LDgzLDAsOTksOTcsMTEwLDExMCwxMTEsMTE2LDMyLDk5LDExNCwxMDEsOTcsMTE2LDEwMSwzMiw3Myw3OCw4Myw4NCw2OSw2NSw2OCwzMiw3OSw3MCwzMiwxMTYsMTE0LDEwNSwxMDMsMTAzLDEwMSwxMTQsMzIsMTExLDExMCwzMiwxMTYsOTcsOTgsMTA4LDEwMSw1OCwzMiwzNyw4MywwLDM3LDExNSwzMiwzNyw4NCwzMiw5OSw5NywxMTAsMTEwLDExMSwxMTYsMzIsMTE0LDEwMSwxMDIsMTAxLDExNCwxMDEsMTEwLDk5LDEwMSwzMiwxMTEsOTgsMTA2LDEwMSw5OSwxMTYsMTE1LDMyLDEwNSwxMTAsMzIsMTAwLDk3LDExNiw5Nyw5OCw5NywxMTUsMTAxLDMyLDM3LDExNSwwLDM3LDExNSwzMiw5OSw5NywxMTAsMTEwLDExMSwxMTYsMzIsMTE3LDExNSwxMDEsMzIsMTE4LDk3LDExNCwxMDUsOTcsOTgsMTA4LDEwMSwxMTUsMCw3Myw3OCw4Myw2OSw4Miw4NCwzMiw3Myw3OCw4NCw3OSwzMiwzNyw4MSw0NiwzNywxMTUsXG4zMiw4Niw2NSw3Niw4NSw2OSw4Myw0MCwzOSwxMTYsMTE0LDEwNSwxMDMsMTAzLDEwMSwxMTQsMzksNDQsMzcsODEsNDQsMzcsODEsNDQsNDgsNDQsMzksNjcsODIsNjksNjUsODQsNjksMzIsODQsODIsNzMsNzEsNzEsNjksODIsMzIsMzcsMTEzLDM5LDQxLDAsMTE2LDEyMSwxMTIsMTAxLDYxLDM5LDExNiwxMTQsMTA1LDEwMywxMDMsMTAxLDExNCwzOSwzMiw2NSw3OCw2OCwzMiwxMTAsOTcsMTA5LDEwMSw2MSwzOSwzNywxMTMsMzksMCw0NSwzNyw4NCwwLDExNCwxMDEsMTE1LDExNywxMDgsMTE2LDAsOTksOTcsOTksMTA0LDEwMSw5NSwxMTUsMTA1LDEyMiwxMDEsMCwyLDAsMCwwLDEwMSwwLDEsMyw2NiwxLDgsMCw3NiwwLDIsMCw0OCwxLDIsMSw2NiwxLDgsMCw3NiwwLDEsMCwxNjEsMCwwLDAsODcsMSwxLDAsMTEyLDk3LDEwMywxMDEsOTUsMTE1LDEwNSwxMjIsMTAxLDAsMTE1LDEwMSw5OSwxMTcsMTE0LDEwMSw5NSwxMDAsMTAxLDEwOCwxMDEsMTE2LDEwMSwwLDExMCwxMTEsXG4xMTQsMTA5LDk3LDEwOCwwLDEwMSwxMjAsOTksMTA4LDExNywxMTUsMTA1LDExOCwxMDEsMCwxMDgsMTExLDk5LDEwNywxMDUsMTEwLDEwMyw5NSwxMDksMTExLDEwMCwxMDEsMCwxMDYsMTExLDExNywxMTQsMTEwLDk3LDEwOCw5NSwxMDksMTExLDEwMCwxMDEsMCwxMDYsMTExLDExNywxMTQsMTEwLDk3LDEwOCw5NSwxMTUsMTA1LDEyMiwxMDEsOTUsMTA4LDEwNSwxMDksMTA1LDExNiwwLDk3LDExNywxMTYsMTExLDk1LDExOCw5Nyw5OSwxMTcsMTE3LDEwOSwwLDIsMCwxLDAsMTAxLDAsMSw0LDIxLDEsMCwwLDc1LDAsMiwwLDEwMiwwLDcsMCw5OSw5Nyw5OSwxMDQsMTAxLDk1LDExNSwxMTIsMTA1LDEwOCwxMDgsMCwxMDksMTA5LDk3LDExMiw5NSwxMTUsMTA1LDEyMiwxMDEsMCwxMTYsMTAxLDEwOSwxMTIsOTUsMTE1LDExNiwxMTEsMTE0LDEwMSwwLDExNiwxMDEsMTA5LDExMiw5NSwxMTUsMTE2LDExMSwxMTQsMTAxLDk1LDEwMCwxMDUsMTE0LDEwMSw5OSwxMTYsMTExLDExNCxcbjEyMSwwLDExMCwxMTEsMTE2LDMyLDk3LDMyLDExOSwxMTQsMTA1LDExNiw5Nyw5OCwxMDgsMTAxLDMyLDEwMCwxMDUsMTE0LDEwMSw5OSwxMTYsMTExLDExNCwxMjEsMCwxMTUsMTIxLDExMCw5OSwxMDQsMTE0LDExMSwxMTAsMTExLDExNywxMTUsMCw4Myw5NywxMDIsMTAxLDExNiwxMjEsMzIsMTA4LDEwMSwxMTgsMTAxLDEwOCwzMiwxMDksOTcsMTIxLDMyLDExMCwxMTEsMTE2LDMyLDk4LDEwMSwzMiw5OSwxMDQsOTcsMTEwLDEwMywxMDEsMTAwLDMyLDEwNSwxMTAsMTE1LDEwNSwxMDAsMTAxLDMyLDk3LDMyLDExNiwxMTQsOTcsMTEwLDExNSw5Nyw5OSwxMTYsMTA1LDExMSwxMTAsMCwxMDUsMTE1LDExNSwxMDUsMTE1LDEwNSwwLDExNSwxMTUsMTA1LDEwNSwwLDExNSwxMDUsMTA1LDAsMTA1LDEwNSwxMTUsMCwxMDUsMTE1LDEwNSwwLDEwNSwxMTUsMTA1LDExNSwxMDUsMCwxMDUsMTE1LDExNSwwLDEwNSwxMTUsMCwxMDUsMTA1LDExNSwxMTUsMTE1LDExNSwxMTUsMTE1LDAsNzgsXG43OSw3OCw2OSwwLDExNSwxMDUsMCwxMDUsMTEwLDExNiwxMDEsMTAzLDExNCwxMDUsMTE2LDEyMSw5NSw5OSwxMDQsMTAxLDk5LDEwNywwLDQyLDQyLDQyLDMyLDEwNSwxMTAsMzIsMTAwLDk3LDExNiw5Nyw5OCw5NywxMTUsMTAxLDMyLDM3LDExNSwzMiw0Miw0Miw0MiwxMCwwLDc4LDg1LDc2LDc2LDMyLDExOCw5NywxMDgsMTE3LDEwMSwzMiwxMDUsMTEwLDMyLDM3LDExNSw0NiwzNywxMTUsMCwxMTQsMTExLDExOSwzMiwwLDMyLDEwOSwxMDUsMTE1LDExNSwxMDUsMTEwLDEwMywzMiwxMDIsMTE0LDExMSwxMDksMzIsMTA1LDExMCwxMDAsMTAxLDEyMCwzMiwwLDExMCwxMTEsMTEwLDQ1LDExNywxMTAsMTA1LDExMywxMTcsMTAxLDMyLDEwMSwxMTAsMTE2LDExNCwxMjEsMzIsMTA1LDExMCwzMiwxMDUsMTEwLDEwMCwxMDEsMTIwLDMyLDAsMTE5LDExNCwxMTEsMTEwLDEwMywzMiwzNSwzMiwxMTEsMTAyLDMyLDEwMSwxMTAsMTE2LDExNCwxMDUsMTAxLDExNSwzMiwxMDUsMTEwLDMyLFxuMTA1LDExMCwxMDAsMTAxLDEyMCwzMiwwLDkxLDEsMCwwLDIxLDEsNCwwLDk3LDAsMywwLDg3LDMsMSwwLDExMSwxMDcsMCwxMDEsMTEwLDk5LDExMSwxMDAsMTA1LDExMCwxMDMsMCwxMTcsMTEwLDExNSwxMTcsMTEyLDExMiwxMTEsMTE0LDExNiwxMDEsMTAwLDMyLDEwMSwxMTAsOTksMTExLDEwMCwxMDUsMTEwLDEwMyw1OCwzMiwzNywxMTUsMCwyLDAsMSwwLDEwMiwwLDAsMCwyLDAsMCwwLDEwMSwwLDEsMCw4NywxLDEsMCw5OSwxMTEsMTA5LDExMiwxMDUsMTA4LDEwMSw5NSwxMTEsMTEyLDExNiwxMDUsMTExLDExMCwwLDEwMiwxMTcsMTA4LDEwOCwwLDExNCwxMDEsMTE1LDExNiw5NywxMTQsMTE2LDAsMTE2LDExNCwxMTcsMTEwLDk5LDk3LDExNiwxMDEsMCwxMTksOTcsMTA4LDk1LDk3LDExNywxMTYsMTExLDk5LDEwNCwxMDEsOTksMTA3LDExMiwxMTEsMTA1LDExMCwxMTYsMCwxMTYsMTA1LDEwOSwxMDEsMTExLDExNywxMTYsMCwxMTUsMTExLDEwMiwxMTYsOTUsMTA0LDEwMSxcbjk3LDExMiw5NSwxMDgsMTA1LDEwOSwxMDUsMTE2LDAsMTE2LDEwNCwxMTQsMTAxLDk3LDEwMCwxMTUsMCw5OCwxMTcsMTE1LDEyMSwwLDk5LDEwNCwxMDEsOTksMTA3LDExMiwxMTEsMTA1LDExMCwxMTYsMTAxLDEwMCwwLDg1LDg0LDcwLDU2LDAsODUsODQsNzAsNDUsNTYsMCw4NSw4NCw3MCw0NSw0OSw1NCwxMDgsMTAxLDAsODUsODQsNzAsNDUsNDksNTQsOTgsMTAxLDAsODUsODQsNzAsNDksNTQsMTA4LDEwMSwwLDg1LDg0LDcwLDQ5LDU0LDk4LDEwMSwwLDg1LDg0LDcwLDQ1LDQ5LDU0LDAsODUsODQsNzAsNDksNTQsMCwzNyw5NSwwLDAsMTA4LDEwNSwxMDcsMTAxLDAsMTAzLDEwOCwxMTEsOTgsMCw3Niw3Myw3NSw2OSwzMiwxMTEsMTE0LDMyLDcxLDc2LDc5LDY2LDMyLDExMiw5NywxMTYsMTE2LDEwMSwxMTQsMTEwLDMyLDExNiwxMTEsMTExLDMyLDk5LDExMSwxMDksMTEyLDEwOCwxMDEsMTIwLDAsNjksODMsNjcsNjUsODAsNjksMzIsMTAxLDEyMCwxMTIsMTE0LDEwMSwxMTUsXG4xMTUsMTA1LDExMSwxMTAsMzIsMTA5LDExNywxMTUsMTE2LDMyLDk4LDEwMSwzMiw5NywzMiwxMTUsMTA1LDExMCwxMDMsMTA4LDEwMSwzMiw5OSwxMDQsOTcsMTE0LDk3LDk5LDExNiwxMDEsMTE0LDAsMTAyLDExMSwxMTQsMTAxLDEwNSwxMDMsMTEwLDMyLDEwNywxMDEsMTIxLDMyLDEwOSwxMDUsMTE1LDEwOSw5NywxMTYsOTksMTA0LDMyLDQ1LDMyLDM0LDM3LDExOSwzNCwzMiwxMTQsMTAxLDEwMiwxMDEsMTE0LDEwMSwxMTAsOTksMTA1LDExMCwxMDMsMzIsMzQsMzcsMTE5LDM0LDAsMTE2LDk3LDk4LDEwOCwxMDEsMCwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDAsMTAyLDEwNywxMDUsMTAwLDAsODMsNjksODQsMzIsNzgsODUsNzYsNzYsMCw4Myw2OSw4NCwzMiw2OCw2OSw3MCw2NSw4NSw3Niw4NCwwLDY3LDY1LDgzLDY3LDY1LDY4LDY5LDAsODIsNjksODMsODQsODIsNzMsNjcsODQsMCw3OCw3OSwzMiw2NSw2Nyw4NCw3Myw3OSw3OCwwLDEwNSwxMDAsMCwxMTUsMTAxLDExMyxcbjAsMTAyLDExNCwxMTEsMTA5LDAsMTE2LDExMSwwLDExMSwxMTAsOTUsMTE3LDExMiwxMDAsOTcsMTE2LDEwMSwwLDExMSwxMTAsOTUsMTAwLDEwMSwxMDgsMTAxLDExNiwxMDEsMCwxMDksOTcsMTE2LDk5LDEwNCwwLDExMCw5NywxMDksMTAxLDAsMTAyLDEwNSwxMDgsMTAxLDAsOTksMCwxMTcsMCwxMTIsMTA3LDAsMTE3LDExMCwxMDUsMTEzLDExNywxMDEsMCwxMTEsMTE0LDEwNSwxMDMsMTA1LDExMCwwLDExMiw5NywxMTQsMTE2LDEwNSw5NywxMDgsMCwxMTUsMTAxLDExMywxMTAsMTExLDAsOTksMTA1LDEwMCwwLDk5LDExMSwxMDgsMTA4LDAsMTA3LDEwMSwxMjEsMCwxMDUsMTEwLDEwMCwxMDEsMTIwLDAsMTE5LDEwNSwxMDAsMTE2LDEwNCwwLDEwNCwxMDEsMTA1LDEwMywxMDQsMTE2LDAsMTE2LDEyMSwxMTIsMTAxLDAsMTEwLDExMSwxMTYsMTEwLDExNywxMDgsMTA4LDAsMTAwLDEwMiwxMDgsMTE2LDk1LDExOCw5NywxMDgsMTE3LDEwMSwwLDExNiwxMDEsMTA5LDExMiwxMTEsXG4xMTQsOTcsMTE0LDEyMSwzMiwxMTUsMTE2LDExMSwxMTQsOTcsMTAzLDEwMSwzMiw5OSw5NywxMTAsMTEwLDExMSwxMTYsMzIsOTgsMTAxLDMyLDk5LDEwNCw5NywxMTAsMTAzLDEwMSwxMDAsMzIsMTAyLDExNCwxMTEsMTA5LDMyLDExOSwxMDUsMTE2LDEwNCwxMDUsMTEwLDMyLDk3LDMyLDExNiwxMTQsOTcsMTEwLDExNSw5Nyw5OSwxMTYsMTA1LDExMSwxMTAsMCwxMTAsMTExLDExMCwxMDEsMCwxMDUsMTEwLDk5LDExNCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDEwOCwwLDEwMCwxMDEsMTA4LDEwMSwxMTYsMTAxLDAsMTEyLDEwMSwxMTQsMTE1LDEwNSwxMTUsMTE2LDAsMTExLDEwMiwxMDIsMCwxMTksOTcsMTA4LDAsOTcsMTEyLDExMiwxMDgsMTA1LDk5LDk3LDExNiwxMDUsMTExLDExMCw5NSwxMDUsMTAwLDAsOTcsMTE3LDExNiwxMTEsMTA5LDk3LDExNiwxMDUsOTksOTUsMTA1LDExMCwxMDAsMTAxLDEyMCwwLDk4LDExNywxMTUsMTIxLDk1LDExNiwxMDUsMTA5LDEwMSwxMTEsXG4xMTcsMTE2LDAsOTksOTcsMTE1LDEwMSw5NSwxMTUsMTAxLDExMCwxMTUsMTA1LDExNiwxMDUsMTE4LDEwMSw5NSwxMDgsMTA1LDEwNywxMDEsMCw5OSwxMDEsMTA4LDEwOCw5NSwxMTUsMTA1LDEyMiwxMDEsOTUsOTksMTA0LDEwMSw5OSwxMDcsMCw5OSwxMDQsMTAxLDk5LDEwNywxMTIsMTExLDEwNSwxMTAsMTE2LDk1LDEwMiwxMTcsMTA4LDEwOCwxMDIsMTE1LDEyMSwxMTAsOTksMCw5OSwxMTEsMTA4LDEwOCw5NywxMTYsMTA1LDExMSwxMTAsOTUsMTA4LDEwNSwxMTUsMTE2LDAsOTksMTExLDEwOSwxMTIsMTA1LDEwOCwxMDEsOTUsMTExLDExMiwxMTYsMTA1LDExMSwxMTAsMTE1LDAsOTksMTExLDExNywxMTAsMTE2LDk1LDk5LDEwNCw5NywxMTAsMTAzLDEwMSwxMTUsMCwxMDAsOTcsMTE2LDk3LDk1LDExOCwxMDEsMTE0LDExNSwxMDUsMTExLDExMCwwLDEwMCw5NywxMTYsOTcsOTgsOTcsMTE1LDEwMSw5NSwxMDgsMTA1LDExNSwxMTYsMCwxMDAsMTAxLDEwMiw5NywxMTcsMTA4LFxuMTE2LDk1LDk5LDk3LDk5LDEwNCwxMDEsOTUsMTE1LDEwNSwxMjIsMTAxLDAsMTAwLDEwMSwxMDIsMTAxLDExNCw5NSwxMDIsMTExLDExNCwxMDEsMTA1LDEwMywxMTAsOTUsMTA3LDEwMSwxMjEsMTE1LDAsMTAxLDEwOSwxMTIsMTE2LDEyMSw5NSwxMTQsMTAxLDExNSwxMTcsMTA4LDExNiw5NSw5OSw5NywxMDgsMTA4LDk4LDk3LDk5LDEwNywxMTUsMCwxMDIsMTExLDExNCwxMDEsMTA1LDEwMywxMTAsOTUsMTA3LDEwMSwxMjEsOTUsOTksMTA0LDEwMSw5OSwxMDcsMCwxMDIsMTExLDExNCwxMDEsMTA1LDEwMywxMTAsOTUsMTA3LDEwMSwxMjEsOTUsMTA4LDEwNSwxMTUsMTE2LDAsMTAyLDExMSwxMTQsMTAxLDEwNSwxMDMsMTEwLDk1LDEwNywxMDEsMTIxLDExNSwwLDEwMiwxMTQsMTAxLDEwMSwxMDgsMTA1LDExNSwxMTYsOTUsOTksMTExLDExNywxMTAsMTE2LDAsMTAyLDExNywxMDgsMTA4LDk1LDk5LDExMSwxMDgsMTE3LDEwOSwxMTAsOTUsMTEwLDk3LDEwOSwxMDEsMTE1LDAsXG4xMDIsMTE3LDEwOCwxMDgsMTAyLDExNSwxMjEsMTEwLDk5LDAsMTA1LDEwMywxMTAsMTExLDExNCwxMDEsOTUsOTksMTA0LDEwMSw5OSwxMDcsOTUsOTksMTExLDExMCwxMTUsMTE2LDExNCw5NywxMDUsMTEwLDExNiwxMTUsMCwxMDUsMTEwLDk5LDExNCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDEwOCw5NSwxMTgsOTcsOTksMTE3LDExNywxMDksMCwxMDUsMTEwLDEwMCwxMDEsMTIwLDk1LDEwNSwxMTAsMTAyLDExMSwwLDEwNSwxMTAsMTAwLDEwMSwxMjAsOTUsMTA4LDEwNSwxMTUsMTE2LDAsMTA1LDExMCwxMDAsMTAxLDEyMCw5NSwxMjAsMTA1LDExMCwxMDIsMTExLDAsMTA4LDEwMSwxMDMsOTcsOTksMTIxLDk1LDEwMiwxMDUsMTA4LDEwMSw5NSwxMDIsMTExLDExNCwxMDksOTcsMTE2LDAsMTA5LDk3LDEyMCw5NSwxMTIsOTcsMTAzLDEwMSw5NSw5OSwxMTEsMTE3LDExMCwxMTYsMCwxMTIsOTcsMTAzLDEwMSw5NSw5OSwxMTEsMTE3LDExMCwxMTYsMCwxMTMsMTE3LDEwMSwxMTQsXG4xMjEsOTUsMTExLDExMCwxMDgsMTIxLDAsMTEzLDExNywxMDUsOTksMTA3LDk1LDk5LDEwNCwxMDEsOTksMTA3LDAsMTE0LDEwMSw5NywxMDAsOTUsMTE3LDExMCw5OSwxMTEsMTA5LDEwOSwxMDUsMTE2LDExNiwxMDEsMTAwLDAsMTE0LDEwMSw5OSwxMTcsMTE0LDExNSwxMDUsMTE4LDEwMSw5NSwxMTYsMTE0LDEwNSwxMDMsMTAzLDEwMSwxMTQsMTE1LDAsMTE0LDEwMSwxMTgsMTAxLDExNCwxMTUsMTAxLDk1LDExNywxMTAsMTExLDExNCwxMDAsMTAxLDExNCwxMDEsMTAwLDk1LDExNSwxMDEsMTA4LDEwMSw5OSwxMTYsMTE1LDAsMTE1LDk5LDEwNCwxMDEsMTA5LDk3LDk1LDExOCwxMDEsMTE0LDExNSwxMDUsMTExLDExMCwwLDExNSwxMDQsMTExLDExNCwxMTYsOTUsOTksMTExLDEwOCwxMTcsMTA5LDExMCw5NSwxMTAsOTcsMTA5LDEwMSwxMTUsMCwxMTUsMTA0LDExNCwxMDUsMTEwLDEwNyw5NSwxMDksMTAxLDEwOSwxMTEsMTE0LDEyMSwwLDExNSwxMTYsOTcsMTE2LDExNSwwLDExNixcbjk3LDk4LDEwOCwxMDEsOTUsMTA1LDExMCwxMDIsMTExLDAsMTE3LDExNSwxMDEsMTE0LDk1LDExOCwxMDEsMTE0LDExNSwxMDUsMTExLDExMCwwLDExOSw5NywxMDgsOTUsOTksMTA0LDEwMSw5OSwxMDcsMTEyLDExMSwxMDUsMTEwLDExNiwwLDExOSwxMTQsMTA1LDExNiw5Nyw5OCwxMDgsMTAxLDk1LDExNSw5OSwxMDQsMTAxLDEwOSw5NywwLDExMCwxMTEsMzIsMTE1LDExNyw5OSwxMDQsMzIsMTA1LDExMCwxMDAsMTAxLDEyMCw1OCwzMiwzNyw4MywwLDEwNSwxMTAsMTAwLDEwMSwxMjAsMzIsOTcsMTE1LDExNSwxMTEsOTksMTA1LDk3LDExNiwxMDEsMTAwLDMyLDExOSwxMDUsMTE2LDEwNCwzMiw4NSw3OCw3Myw4MSw4NSw2OSwzMiwxMTEsMTE0LDMyLDgwLDgyLDczLDc3LDY1LDgyLDg5LDMyLDc1LDY5LDg5LDMyLDk5LDExMSwxMTAsMTE1LDExNiwxMTQsOTcsMTA1LDExMCwxMTYsMzIsOTksOTcsMTEwLDExMCwxMTEsMTE2LDMyLDk4LDEwMSwzMiwxMDAsMTE0LDExMSwxMTIsMTEyLFxuMTAxLDEwMCwwLDY4LDY5LDc2LDY5LDg0LDY5LDMyLDcwLDgyLDc5LDc3LDMyLDM3LDgxLDQ2LDM3LDExNSwzMiw4Nyw3Miw2OSw4Miw2OSwzMiwxMTAsOTcsMTA5LDEwMSw2MSwzNyw4MSwzMiw2NSw3OCw2OCwzMiwxMTYsMTIxLDExMiwxMDEsNjEsMzksMTA1LDExMCwxMDAsMTAxLDEyMCwzOSwwLDg1LDgwLDY4LDY1LDg0LDY5LDMyLDM3LDgxLDQ2LDM3LDExNSwzMiw4Myw2OSw4NCwzMiwxMTQsMTExLDExMSwxMTYsMTEyLDk3LDEwMywxMDEsNjEsMzcsMTAwLDMyLDg3LDcyLDY5LDgyLDY5LDMyLDM1LDM3LDEwMCwzMiw2NSw3OCw2OCwzMiwxMTQsMTExLDExMSwxMTYsMTEyLDk3LDEwMywxMDEsNjEsMzUsMzcsMTAwLDAsMTE1LDExMywxMDgsMTA1LDExNiwxMDEsOTUsMTE1LDExNiw5NywxMTYsMzcsMTAwLDAsMTE1LDEyMSwxMTAsMTE2LDk3LDEyMCwzMiwxMDEsMTE0LDExNCwxMTEsMTE0LDMyLDk3LDEwMiwxMTYsMTAxLDExNCwzMiw5OSwxMTEsMTA4LDExNywxMDksMTEwLDMyLFxuMTEwLDk3LDEwOSwxMDEsMzIsMzQsMzcsNDYsNDIsMTE1LDM0LDAsNDgsMCwxMTgsOTcsMTE0LDEwNSw5Nyw5OCwxMDgsMTAxLDMyLDExMCwxMTcsMTA5LDk4LDEwMSwxMTQsMzIsMTA5LDExNywxMTUsMTE2LDMyLDk4LDEwMSwzMiw5OCwxMDEsMTE2LDExOSwxMDEsMTAxLDExMCwzMiw2Myw0OSwzMiw5NywxMTAsMTAwLDMyLDYzLDM3LDEwMCwwLDExNiwxMTEsMTExLDMyLDEwOSw5NywxMTAsMTIxLDMyLDgzLDgxLDc2LDMyLDExOCw5NywxMTQsMTA1LDk3LDk4LDEwOCwxMDEsMTE1LDAsMTE2LDk3LDk4LDEwOCwxMDEsMzIsMzcsODMsMzIsMTA0LDk3LDExNSwzMiwxMTAsMTExLDMyLDk5LDExMSwxMDgsMTE3LDEwOSwxMTAsMzIsMTEwLDk3LDEwOSwxMDEsMTAwLDMyLDM3LDExNSwwLDExNiw5Nyw5OCwxMDgsMTAxLDMyLDM3LDgzLDMyLDEwNCw5NywxMTUsMzIsMzcsMTAwLDMyLDk5LDExMSwxMDgsMTE3LDEwOSwxMTAsMTE1LDMyLDk4LDExNywxMTYsMzIsMzcsMTAwLDMyLDExOCw5NyxcbjEwOCwxMTcsMTAxLDExNSwzMiwxMTksMTAxLDExNCwxMDEsMzIsMTE1LDExNywxMTIsMTEyLDEwOCwxMDUsMTAxLDEwMCwwLDM3LDEwMCwzMiwxMTgsOTcsMTA4LDExNywxMDEsMTE1LDMyLDEwMiwxMTEsMTE0LDMyLDM3LDEwMCwzMiw5OSwxMTEsMTA4LDExNywxMDksMTEwLDExNSwwLDExNCwxMTEsMTE5LDExNSwzMiwxMDUsMTEwLDExNSwxMDEsMTE0LDExNiwxMDEsMTAwLDAsMzUsMCwyLDAsMTE0LDAsMCwwLDk5LDAsMiwwLDExNSwwLDAsMCwxMTEsMCwwLDAsOTcsMTE2LDMyLDEwOSwxMTEsMTE1LDExNiwzMiwzNywxMDAsMzIsMTE2LDk3LDk4LDEwOCwxMDEsMTE1LDMyLDEwNSwxMTAsMzIsOTcsMzIsMTA2LDExMSwxMDUsMTEwLDAsMjYsMjQsMjMsMjUsMCwwLDU3LDUzLDI2LDIzLDI1LDI0LDYxLDU5LDU4LDYwLDcsNiw1Nyw1Myw4Myw2OSw2NSw4Miw2Nyw3MiwwLDgzLDY3LDY1LDc4LDAsMzIsODMsODUsNjYsODEsODUsNjksODIsODksMzIsMzcsMTAwLDAsMzIsODQsNjUsNjYsXG43Niw2OSwzMiwzNywxMTUsMCwzMiw2NSw4MywzMiwzNywxMTUsMCw4MCw4Miw3Myw3Nyw2NSw4Miw4OSwzMiw3NSw2OSw4OSwwLDY1LDg1LDg0LDc5LDc3LDY1LDg0LDczLDY3LDMyLDgwLDY1LDgyLDg0LDczLDY1LDc2LDMyLDY3LDc5LDg2LDY5LDgyLDczLDc4LDcxLDMyLDczLDc4LDY4LDY5LDg4LDAsNjUsODUsODQsNzksNzcsNjUsODQsNzMsNjcsMzIsNjcsNzksODYsNjksODIsNzMsNzgsNzEsMzIsNzMsNzgsNjgsNjksODgsMCw2Nyw3OSw4Niw2OSw4Miw3Myw3OCw3MSwzMiw3Myw3OCw2OCw2OSw4OCwzMiwzNywxMTUsMCw3Myw3OCw2OCw2OSw4OCwzMiwzNywxMTUsMCwzMiw4NSw4Myw3Myw3OCw3MSwzMiwwLDYxLDAsNjIsNjMsMzIsNjUsNzgsNjgsMzIsMTE0LDExMSwxMTksMTA1LDEwMCw2MCwwLDYyLDAsNjAsMCwzMiw4NSw4Myw3Myw3OCw3MSwzMiw3Myw3OCw4NCw2OSw3MSw2OSw4MiwzMiw4MCw4Miw3Myw3Nyw2NSw4Miw4OSwzMiw3NSw2OSw4OSwzMiw0MCwxMTQsMTExLFxuMTE5LDEwNSwxMDAsMzcsMTE1LDYzLDQxLDAsMzIsODYsNzMsODIsODQsODUsNjUsNzYsMzIsODQsNjUsNjYsNzYsNjksMzIsNzMsNzgsNjgsNjksODgsMzIsMzcsMTAwLDU4LDM3LDExNSwwLDMyLDQwLDAsMzIsNjUsNzgsNjgsMzIsMCwzNywxMTUsNjEsNjMsMCw2NSw3OCw4OSw0MCwzNywxMTUsNDEsMCw0MSwwLDQwLDAsNDQsMCw2MCwxMDEsMTIwLDExMiwxMTQsNjIsMCw5NywxMTcsMTE2LDExMSwxMDksOTcsMTE2LDEwNSw5OSwzMiwxMDUsMTEwLDEwMCwxMDEsMTIwLDMyLDExMSwxMTAsMzIsMzcsMTE1LDQwLDM3LDExNSw0MSwwLDk3LDExNywxMTYsMTExLDQ1LDEwNSwxMTAsMTAwLDEwMSwxMjAsMCwxMTAsMTExLDMyLDExMywxMTcsMTAxLDExNCwxMjEsMzIsMTE1LDExMSwxMDgsMTE3LDExNiwxMDUsMTExLDExMCwwLDEwLDEwLDksOSw4LDgsNyw3LDcsNiw2LDYsNSw1LDUsNCw0LDQsNCwzLDMsMywzLDMsMywyLDIsMiwyLDIsMiwyLDM3LDExNSw0NiwxMjAsNjYsMTAxLDExNSxcbjExNiw3MywxMTAsMTAwLDEwMSwxMjAsMzIsMTA5LDk3LDEwOCwxMDIsMTE3LDExMCw5OSwxMTYsMTA1LDExMSwxMTAsMCw0MSwzOSw2Niw3Myw3OCw2NSw4Miw4OSwwLDExNCwxMDEsMTAzLDEwMSwxMjAsMTEyLDAsMTE2LDExMSwxMTEsMzIsMTA5LDk3LDExMCwxMjEsMzIsOTcsMTE0LDEwMywxMTcsMTA5LDEwMSwxMTAsMTE2LDExNSwzMiwxMTEsMTEwLDMyLDM3LDExNSw0MCw0MSwzMiw0NSwzMiwxMDksOTcsMTIwLDMyLDM3LDEwMCwwLDQ1LDQ1LDMyLDg0LDgyLDczLDcxLDcxLDY5LDgyLDMyLDM3LDExNSwwLDAsMCwwLDEsMSwxLDEsMSwwLDE2LDAsMSwwLDEsMSwxLDMsMywxLDE4LDEsMywzLDksOSw5LDksMzgsMzgsOSw5LDksOSw5LDMsMywxMSwxMSwxMSwxMSwxMSwxMSwxLDM4LDM4LDM4LDM4LDM4LDM4LDM4LDM4LDM4LDM4LDEsMTgsMSwxLDEsMSwxLDEsMSwzNSwxMSwxLDEsMywzLDMsMSwxLDEsMiwyLDgsMCwxNiwxNiwxNiwxNiwwLDE2LDE2LDAsMCwxNiwxNiwwLDAsMCxcbjAsMiwyLDIsMCwwLDAsMTYsMCwwLDE2LDE2LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwxNiwxNiwwLDAsMCwwLDAsMCwwLDAsMTYsMCw0LDQsMCwwLDE2LDE2LDAsMTYsMCwxNiwxNiwwLDAsMCwwLDAsMCw2LDE2LDAsNCwyNiwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMTYsMTYsMCwwLDAsMCwxLDIsMyw0LDYsOCw4LDAsMCwwLDAsMCwwLDEsMSwyLDIsMywzLDQsNCw1LDUsNiw2LDcsNyw4LDgsOSw5LDEwLDEwLDExLDExLDEyLDEyLDEzLDEzLDE0LDE0LDE1LDE1LDE2LDE2LDE3LDE3LDE4LDE4LDE5LDE5LDIwLDIwLDIxLDIxLDIyLDIyLDIzLDIzLDI0LDI0LDI1LDI1LDI2LDI2LDI3LDI3LDI4LDI4LDI5LDI5LDMwLDMwLDMxLDMxLDMyLDMyLDMzLDMzLDM0LDM0LDM1LDM1LDM2LDM2LDM3LDM3LDM4LDM4LDM5LDM5LDQwLDQwLDQxLDQxLDQyLDQyLDQzLDQzLDQ0LDQ0LDQ1LDQ1LDQ2LDQ2LDQ3LDQ3LDQ4LDQ4LDQ5LDQ5LDUwLDUwLDUxLDUxLDUyLDUyLDUzLDUzLDU0LDU0LDU1LDU1LFxuNTYsNTYsNTcsNTcsNzAsNzksODIsNjksNzMsNzEsNzgsMzIsNzUsNjksODksMzIsOTksMTExLDExMCwxMTUsMTE2LDExNCw5NywxMDUsMTEwLDExNiwzMiwxMDIsOTcsMTA1LDEwOCwxMDEsMTAwLDAsMzcsMTE1LDQ2LDExNCwxMTEsMTE5LDEwNSwxMDAsMCwxMTYsOTcsOTgsMTA4LDEwMSwzMiwzNywxMTUsMzIsMTA5LDk3LDEyMSwzMiwxMTAsMTExLDExNiwzMiw5OCwxMDEsMzIsMTA5LDExMSwxMDAsMTA1LDEwMiwxMDUsMTAxLDEwMCwwLDk5LDk3LDExMCwxMTAsMTExLDExNiwzMiwxMDksMTExLDEwMCwxMDUsMTAyLDEyMSwzMiwzNywxMTUsMzIsOTgsMTAxLDk5LDk3LDExNywxMTUsMTAxLDMyLDEwNSwxMTYsMzIsMTA1LDExNSwzMiw5NywzMiwxMTgsMTA1LDEwMSwxMTksMCwzNywxMDAsMzIsOTksMTExLDEwOCwxMTcsMTA5LDExMCwxMTUsMzIsOTcsMTE1LDExNSwxMDUsMTAzLDExMCwxMDEsMTAwLDMyLDM3LDEwMCwzMiwxMTgsOTcsMTA4LDExNywxMDEsMTE1LDAsMTE0LDExMSxcbjExOSwxMTUsMzIsMTE3LDExMiwxMDAsOTcsMTE2LDEwMSwxMDAsMCwxMTYsMTExLDExMSwzMiwxMDksOTcsMTEwLDEyMSwzMiw5OSwxMTEsMTA4LDExNywxMDksMTEwLDExNSwzMiwxMDUsMTEwLDMyLDM3LDExNSwwLDExNCwxMTEsMTE5LDExNSwzMiwxMDAsMTAxLDEwOCwxMDEsMTE2LDEwMSwxMDAsMCwwLDcsNCw2LDQsNDAsMTAsNSwzMiwxNCw1LDQ4LDE5LDQsNTYsMjMsNSwxLDI4LDUsMywxMTAsOTcsMTE2LDExNywxMTQsOTcsMTA4LDEwMSwxMDIsMTE2LDExMSwxMTcsMTE2LDEwMSwxMTQsMTA1LDEwMywxMDQsMTE2LDEwMiwxMTcsMTA4LDEwOCwxMDUsMTEwLDExMCwxMDEsMTE0LDk5LDExNCwxMTEsMTE1LDExNSwwLDMyLDAsMTE3LDExMCwxMDcsMTEwLDExMSwxMTksMTEwLDMyLDExMSwxMTQsMzIsMTE3LDExMCwxMTUsMTE3LDExMiwxMTIsMTExLDExNCwxMTYsMTAxLDEwMCwzMiwxMDYsMTExLDEwNSwxMTAsMzIsMTE2LDEyMSwxMTIsMTAxLDU4LDMyLDM3LDg0LDMyLDM3LFxuODQsMzcsMTE1LDM3LDg0LDAsODIsNzMsNzEsNzIsODQsMzIsOTcsMTEwLDEwMCwzMiw3MCw4NSw3Niw3NiwzMiw3OSw4NSw4NCw2OSw4MiwzMiw3NCw3OSw3Myw3OCwxMTUsMzIsOTcsMTE0LDEwMSwzMiwxMTAsMTExLDExNiwzMiw5OSwxMTcsMTE0LDExNCwxMDEsMTEwLDExNiwxMDgsMTIxLDMyLDExNSwxMTcsMTEyLDExMiwxMTEsMTE0LDExNiwxMDEsMTAwLDAsNzksNzgsMCw4NSw4Myw3Myw3OCw3MSwwLDk3LDMyLDc0LDc5LDczLDc4LDMyLDk5LDEwOCw5NywxMTcsMTE1LDEwMSwzMiwxMDUsMTE1LDMyLDExNCwxMDEsMTEzLDExNywxMDUsMTE0LDEwMSwxMDAsMzIsOTgsMTAxLDEwMiwxMTEsMTE0LDEwMSwzMiwzNywxMTUsMCwxMTYsMTExLDExMSwzMiwxMDksOTcsMTEwLDEyMSwzMiwxMTYsMTAxLDExNCwxMDksMTE1LDMyLDEwNSwxMTAsMzIsOTksMTExLDEwOSwxMTIsMTExLDExNywxMTAsMTAwLDMyLDgzLDY5LDc2LDY5LDY3LDg0LDAsMTAxLDEyMCwxMTIsMTAxLDk5LDExNixcbjEwMSwxMDAsMzIsMzcsMTAwLDMyLDk5LDExMSwxMDgsMTE3LDEwOSwxMTAsMTE1LDMyLDEwMiwxMTEsMTE0LDMyLDM5LDM3LDExNSwzOSwzMiw5OCwxMTcsMTE2LDMyLDEwMywxMTEsMTE2LDMyLDM3LDEwMCwwLDY4LDczLDgzLDg0LDczLDc4LDY3LDg0LDAsNzEsODIsNzksODUsODAsMzIsNjYsODksMCw4Miw3Myw3MSw3Miw4NCwzMiw4MCw2NSw4Miw4NCwzMiw3OSw3MCwzMiw3OSw4Miw2OCw2OSw4MiwzMiw2Niw4OSwwLDc5LDgyLDY4LDY5LDgyLDMyLDY2LDg5LDAsOTksMTExLDEwOCwxMTcsMTA5LDExMCwzNywxMDAsMCwxMDksMTA1LDExMCwwLDEwOSw5NywxMjAsMCwzMiw4NSw4Myw3Myw3OCw3MSwzMiw2Nyw3OSw4Niw2OSw4Miw3Myw3OCw3MSwzMiw3Myw3OCw2OCw2OSw4OCwzMiwwLDgzLDY3LDY1LDc4LDMyLDg0LDY1LDY2LDc2LDY5LDMyLDM3LDExNSwzNywxMTUsMzcsMTE1LDAsNjgsNzMsODMsODQsNzMsNzgsNjcsODQsMzIsOTcsMTAzLDEwMywxMTQsMTAxLDEwMyw5NyxcbjExNiwxMDEsMTE1LDMyLDEwOSwxMTcsMTE1LDExNiwzMiwxMDQsOTcsMTE4LDEwMSwzMiwxMDEsMTIwLDk3LDk5LDExNiwxMDgsMTIxLDMyLDExMSwxMTAsMTAxLDMyLDk3LDExNCwxMDMsMTE3LDEwOSwxMDEsMTEwLDExNiwwLDg1LDgzLDY5LDMyLDg0LDY5LDc3LDgwLDMyLDY2LDQ1LDg0LDgyLDY5LDY5LDMyLDcwLDc5LDgyLDMyLDM3LDExNSwwLDc5LDgyLDY4LDY5LDgyLDMyLDY2LDg5LDMyLDk5LDEwOCw5NywxMTcsMTE1LDEwMSwzMiwxMTUsMTA0LDExMSwxMTcsMTA4LDEwMCwzMiw5OSwxMTEsMTA5LDEwMSwzMiw5NywxMDIsMTE2LDEwMSwxMTQsMzIsMzcsMTE1LDMyLDExMCwxMTEsMTE2LDMyLDk4LDEwMSwxMDIsMTExLDExNCwxMDEsMCw3Niw3Myw3Nyw3Myw4NCwzMiw5OSwxMDgsOTcsMTE3LDExNSwxMDEsMzIsMTE1LDEwNCwxMTEsMTE3LDEwOCwxMDAsMzIsOTksMTExLDEwOSwxMDEsMzIsOTcsMTAyLDExNiwxMDEsMTE0LDMyLDM3LDExNSwzMiwxMTAsMTExLDExNiwzMixcbjk4LDEwMSwxMDIsMTExLDExNCwxMDEsMCw4NSw4Myw3Myw3OCw3MSwzMiw4NCw2OSw3Nyw4MCwzMiw2Niw0NSw4NCw4Miw2OSw2OSwzMiwwLDY3LDc5LDc3LDgwLDc5LDg1LDc4LDY4LDMyLDgzLDg1LDY2LDgxLDg1LDY5LDgyLDczLDY5LDgzLDMyLDM3LDEwMCwzMiw2NSw3OCw2OCwzMiwzNywxMDAsMzIsMzcsMTE1LDQwLDM3LDExNSw0MSwwLDExNCwxMDEsOTksMTE3LDExNCwxMTUsMTA1LDExOCwxMDEsMzIsOTcsMTAzLDEwMywxMTQsMTAxLDEwMyw5NywxMTYsMTAxLDMyLDExMywxMTcsMTAxLDExNCwxMDUsMTAxLDExNSwzMiwxMTAsMTExLDExNiwzMiwxMTUsMTE3LDExMiwxMTIsMTExLDExNCwxMTYsMTAxLDEwMCwwLDExMiw5NywxMTQsOTcsMTA5LDEwMSwxMTYsMTAxLDExNCwxMTUsMzIsOTcsMTE0LDEwMSwzMiwxMTAsMTExLDExNiwzMiw5NywxMDgsMTA4LDExMSwxMTksMTAxLDEwMCwzMiwxMDUsMTEwLDMyLDExOCwxMDUsMTAxLDExOSwxMTUsMCwxMTgsMTA1LDEwMSwxMTksXG4wLDExNSwxMTMsMTA4LDEwNSwxMTYsMTAxLDk1LDExNSwxMTYsOTcsMTE2LDAsMTE2LDk3LDk4LDEwOCwxMDEsMzIsMzcsMTE1LDMyLDEwOSw5NywxMjEsMzIsMTEwLDExMSwxMTYsMzIsOTgsMTAxLDMyLDEwMCwxMTQsMTExLDExMiwxMTIsMTAxLDEwMCwwLDExNywxMTUsMTAxLDMyLDY4LDgyLDc5LDgwLDMyLDg0LDY1LDY2LDc2LDY5LDMyLDExNiwxMTEsMzIsMTAwLDEwMSwxMDgsMTAxLDExNiwxMDEsMzIsMTE2LDk3LDk4LDEwOCwxMDEsMzIsMzcsMTE1LDAsMTE3LDExNSwxMDEsMzIsNjgsODIsNzksODAsMzIsODYsNzMsNjksODcsMzIsMTE2LDExMSwzMiwxMDAsMTAxLDEwOCwxMDEsMTE2LDEwMSwzMiwxMTgsMTA1LDEwMSwxMTksMzIsMzcsMTE1LDAsNjgsNjksNzYsNjksODQsNjksMzIsNzAsODIsNzksNzcsMzIsMzcsODEsNDYsMTE1LDExMywxMDgsMTA1LDExNiwxMDEsOTUsMTE1LDEwMSwxMTMsMTE3LDEwMSwxMTAsOTksMTAxLDMyLDg3LDcyLDY5LDgyLDY5LDMyLDExMCxcbjk3LDEwOSwxMDEsNjEsMzcsODEsMCw2OCw2OSw3Niw2OSw4NCw2OSwzMiw3MCw4Miw3OSw3NywzMiwzNyw4MSw0NiwzNywxMTUsMzIsODcsNzIsNjksODIsNjksMzIsMTE2LDk4LDEwOCw5NSwxMTAsOTcsMTA5LDEwMSw2MSwzNyw4MSwzMiw5NywxMTAsMTAwLDMyLDExNiwxMjEsMTEyLDEwMSwzMyw2MSwzOSwxMTYsMTE0LDEwNSwxMDMsMTAzLDEwMSwxMTQsMzksMCwxMDIsMTExLDExNCwxMDEsMTA1LDEwMywxMTAsMzIsMTA3LDEwMSwxMjEsMzIsMTExLDExMCwzMiwzNywxMTUsMzIsMTE1LDEwNCwxMTEsMTE3LDEwOCwxMDAsMzIsMTE0LDEwMSwxMDIsMTAxLDExNCwxMDEsMTEwLDk5LDEwMSwzMiwxMTEsMTEwLDEwOCwxMjEsMzIsMTExLDExMCwxMDEsMzIsOTksMTExLDEwOCwxMTcsMTA5LDExMCwzMiwxMTEsMTAyLDMyLDExNiw5Nyw5OCwxMDgsMTAxLDMyLDM3LDg0LDAsMTEwLDExNywxMDksOTgsMTAxLDExNCwzMiwxMTEsMTAyLDMyLDk5LDExMSwxMDgsMTE3LDEwOSwxMTAsMTE1LFxuMzIsMTA1LDExMCwzMiwxMDIsMTExLDExNCwxMDEsMTA1LDEwMywxMTAsMzIsMTA3LDEwMSwxMjEsMzIsMTAwLDExMSwxMDEsMTE1LDMyLDExMCwxMTEsMTE2LDMyLDEwOSw5NywxMTYsOTksMTA0LDMyLDExNiwxMDQsMTAxLDMyLDExMCwxMTcsMTA5LDk4LDEwMSwxMTQsMzIsMTExLDEwMiwzMiw5OSwxMTEsMTA4LDExNywxMDksMTEwLDExNSwzMiwxMDUsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDExNCwxMDEsMTAyLDEwMSwxMTQsMTAxLDExMCw5OSwxMDEsMTAwLDMyLDExNiw5Nyw5OCwxMDgsMTAxLDAsMTE3LDExMCwxMDcsMTEwLDExMSwxMTksMTEwLDMyLDk5LDExMSwxMDgsMTE3LDEwOSwxMTAsMzIsMzQsMzcsMTE1LDM0LDMyLDEwNSwxMTAsMzIsMTAyLDExMSwxMTQsMTAxLDEwNSwxMDMsMTEwLDMyLDEwNywxMDEsMTIxLDMyLDEwMCwxMDEsMTAyLDEwNSwxMTAsMTA1LDExNiwxMDUsMTExLDExMCwwLDk5LDk3LDExMCwxMTAsMTExLDExNiwzMiw5OSwxMTQsMTAxLDk3LDExNiwxMDEsXG4zMiw5NywzMiw4NCw2OSw3Nyw4MCwzMiwxMDUsMTEwLDEwMCwxMDEsMTIwLDMyLDExMSwxMTAsMzIsMTEwLDExMSwxMTAsNDUsODQsNjksNzcsODAsMzIsMTE2LDk3LDk4LDEwOCwxMDEsMzIsMzQsMzcsMTE1LDM0LDAsOTcsMTA4LDExNiwxMDEsMTE0LDExNiw5Nyw5OCw5NSwwLDExNiw5Nyw5OCwxMDgsMTAxLDMyLDM3LDExNSwzMiwxMDksOTcsMTIxLDMyLDExMCwxMTEsMTE2LDMyLDk4LDEwMSwzMiwxMDUsMTEwLDEwMCwxMDEsMTIwLDEwMSwxMDAsMCwxMTgsMTA1LDEwMSwxMTksMTE1LDMyLDEwOSw5NywxMjEsMzIsMTEwLDExMSwxMTYsMzIsOTgsMTAxLDMyLDEwNSwxMTAsMTAwLDEwMSwxMjAsMTAxLDEwMCwwLDExOCwxMDUsMTE0LDExNiwxMTcsOTcsMTA4LDMyLDExNiw5Nyw5OCwxMDgsMTAxLDExNSwzMiwxMDksOTcsMTIxLDMyLDExMCwxMTEsMTE2LDMyLDk4LDEwMSwzMiwxMDUsMTEwLDEwMCwxMDEsMTIwLDEwMSwxMDAsMCwxMTYsMTA0LDEwMSwxMTQsMTAxLDMyLDEwNSxcbjExNSwzMiw5NywxMDgsMTE0LDEwMSw5NywxMDAsMTIxLDMyLDk3LDMyLDExNiw5Nyw5OCwxMDgsMTAxLDMyLDExMCw5NywxMDksMTAxLDEwMCwzMiwzNywxMTUsMCwxMDUsMTEwLDEwMCwxMDEsMTIwLDMyLDM3LDExNSwzMiw5NywxMDgsMTE0LDEwMSw5NywxMDAsMTIxLDMyLDEwMSwxMjAsMTA1LDExNSwxMTYsMTE1LDAsMTE1LDExMywxMDgsMTA1LDExNiwxMDEsOTUsOTcsMTE3LDExNiwxMTEsMTA1LDExMCwxMDAsMTAxLDEyMCw5NSwzNywxMTUsOTUsMzcsMTAwLDAsMTAxLDEyMCwxMTIsMTE0LDEwMSwxMTUsMTE1LDEwNSwxMTEsMTEwLDExNSwzMiwxMTIsMTE0LDExMSwxMDQsMTA1LDk4LDEwNSwxMTYsMTAxLDEwMCwzMiwxMDUsMTEwLDMyLDgwLDgyLDczLDc3LDY1LDgyLDg5LDMyLDc1LDY5LDg5LDMyLDk3LDExMCwxMDAsMzIsODUsNzgsNzMsODEsODUsNjksMzIsOTksMTExLDExMCwxMTUsMTE2LDExNCw5NywxMDUsMTEwLDExNiwxMTUsMCw5OSwxMTEsMTEwLDEwMiwxMDgsMTA1LFxuOTksMTE2LDEwNSwxMTAsMTAzLDMyLDc5LDc4LDMyLDY3LDc5LDc4LDcwLDc2LDczLDY3LDg0LDMyLDk5LDEwOCw5NywxMTcsMTE1LDEwMSwxMTUsMzIsMTE1LDExMiwxMDEsOTksMTA1LDEwMiwxMDUsMTAxLDEwMCwwLDMyLDg1LDc4LDczLDgxLDg1LDY5LDAsNjcsODIsNjksNjUsODQsNjksMzcsMTE1LDMyLDczLDc4LDY4LDY5LDg4LDMyLDM3LDQ2LDQyLDExNSwwLDczLDc4LDgzLDY5LDgyLDg0LDMyLDczLDc4LDg0LDc5LDMyLDM3LDgxLDQ2LDM3LDExNSwzMiw4Niw2NSw3Niw4NSw2OSw4Myw0MCwzOSwxMDUsMTEwLDEwMCwxMDEsMTIwLDM5LDQ0LDM3LDgxLDQ0LDM3LDgxLDQ0LDM1LDM3LDEwMCw0NCwzNyw4MSw0MSw1OSwwLDExMCw5NywxMDksMTAxLDYxLDM5LDM3LDExMywzOSwzMiw2NSw3OCw2OCwzMiwxMTYsMTIxLDExMiwxMDEsNjEsMzksMTA1LDExMCwxMDAsMTAxLDEyMCwzOSwwLDExNiw5Nyw5OCwxMDgsMTAxLDMyLDM0LDM3LDExNSwzNCwzMiwxMDQsOTcsMTE1LDMyLFxuMTA5LDExMSwxMTQsMTAxLDMyLDExNiwxMDQsOTcsMTEwLDMyLDExMSwxMTAsMTAxLDMyLDExMiwxMTQsMTA1LDEwOSw5NywxMTQsMTIxLDMyLDEwNywxMDEsMTIxLDAsNjUsODUsODQsNzksNzMsNzgsNjcsODIsNjksNzcsNjksNzgsODQsMzIsMTA1LDExNSwzMiwxMTEsMTEwLDEwOCwxMjEsMzIsOTcsMTA4LDEwOCwxMTEsMTE5LDEwMSwxMDAsMzIsMTExLDExMCwzMiw5NywxMTAsMzIsNzMsNzgsODQsNjksNzEsNjksODIsMzIsODAsODIsNzMsNzcsNjUsODIsODksMzIsNzUsNjksODksMCwxMDAsMTAxLDEwMiw5NywxMTcsMTA4LDExNiwzMiwxMTgsOTcsMTA4LDExNywxMDEsMzIsMTExLDEwMiwzMiw5OSwxMTEsMTA4LDExNywxMDksMTEwLDMyLDkxLDM3LDExNSw5MywzMiwxMDUsMTE1LDMyLDExMCwxMTEsMTE2LDMyLDk5LDExMSwxMTAsMTE1LDExNiw5NywxMTAsMTE2LDAsMTE2LDExMSwxMTEsMzIsMTA5LDk3LDExMCwxMjEsMzIsOTksMTExLDEwOCwxMTcsMTA5LDExMCwxMTUsXG4zMiwxMTEsMTEwLDMyLDM3LDExNSwwLDEwMCwxMTcsMTEyLDEwOCwxMDUsOTksOTcsMTE2LDEwMSwzMiw5OSwxMTEsMTA4LDExNywxMDksMTEwLDMyLDExMCw5NywxMDksMTAxLDU4LDMyLDM3LDExNSwwLDY1LDg1LDg0LDc5LDczLDc4LDY3LDgyLDY5LDc3LDY5LDc4LDg0LDMyLDExMCwxMTEsMTE2LDMyLDk3LDEwOCwxMDgsMTExLDExOSwxMDEsMTAwLDMyLDExMSwxMTAsMzIsODcsNzMsODQsNzIsNzksODUsODQsMzIsODIsNzksODcsNzMsNjgsMzIsMTE2LDk3LDk4LDEwOCwxMDEsMTE1LDAsODAsODIsNzMsNzcsNjUsODIsODksMzIsNzUsNjksODksMzIsMTA5LDEwNSwxMTUsMTE1LDEwNSwxMTAsMTAzLDMyLDExMSwxMTAsMzIsMTE2LDk3LDk4LDEwOCwxMDEsMzIsMzcsMTE1LDAsODQsNjUsNjYsNzYsNjksMCw4Niw3Myw2OSw4NywwLDY3LDgyLDY5LDY1LDg0LDY5LDMyLDM3LDExNSwzMiwzNyw0Niw0MiwxMTUsMCw4NSw4MCw2OCw2NSw4NCw2OSwzMiwzNyw4MSw0NiwzNywxMTUsXG4zMiw4Myw2OSw4NCwzMiwxMTYsMTIxLDExMiwxMDEsNjEsMzksMzcsMTE1LDM5LDQ0LDMyLDExMCw5NywxMDksMTAxLDYxLDM3LDgxLDQ0LDMyLDExNiw5OCwxMDgsOTUsMTEwLDk3LDEwOSwxMDEsNjEsMzcsODEsNDQsMzIsMTE0LDExMSwxMTEsMTE2LDExMiw5NywxMDMsMTAxLDYxLDM1LDM3LDEwMCw0NCwzMiwxMTUsMTEzLDEwOCw2MSwzNyw4MSwzMiw4Nyw3Miw2OSw4Miw2OSwzMiwxMTQsMTExLDExOSwxMDUsMTAwLDYxLDM1LDM3LDEwMCwwLDY3LDgyLDY5LDY1LDg0LDY5LDMyLDg0LDY1LDY2LDc2LDY5LDMyLDM3LDgxLDQ2LDExNSwxMTMsMTA4LDEwNSwxMTYsMTAxLDk1LDExNSwxMDEsMTEzLDExNywxMDEsMTEwLDk5LDEwMSw0MCwxMTAsOTcsMTA5LDEwMSw0NCwxMTUsMTAxLDExMyw0MSwwLDExNiw5OCwxMDgsOTUsMTEwLDk3LDEwOSwxMDEsNjEsMzksMzcsMTEzLDM5LDMyLDY1LDc4LDY4LDMyLDExNiwxMjEsMTEyLDEwMSwzMyw2MSwzOSwxMTYsMTE0LDEwNSwxMDMsMTAzLFxuMTAxLDExNCwzOSwwLDEwLDMyLDMyLDAsNDQsMTAsMzIsMzIsMCwxMCw0MSwwLDY3LDgyLDY5LDY1LDg0LDY5LDMyLDg0LDY1LDY2LDc2LDY5LDMyLDAsMzIsODQsNjksODgsODQsMCwzMiw3OCw4NSw3NywwLDMyLDczLDc4LDg0LDAsMzIsODIsNjksNjUsNzYsMCwxMTYsMTAxLDEwOSwxMTIsMTExLDExNCw5NywxMTQsMTIxLDMyLDExNiw5Nyw5OCwxMDgsMTAxLDMyLDExMCw5NywxMDksMTAxLDMyLDEwOSwxMTcsMTE1LDExNiwzMiw5OCwxMDEsMzIsMTE3LDExMCwxMTMsMTE3LDk3LDEwOCwxMDUsMTAyLDEwNSwxMDEsMTAwLDAsMiw0LDgsNiwxMTYsOTcsOTgsMTA4LDEwMSwzMiwzNyw4NCwzMiw5NywxMDgsMTE0LDEwMSw5NywxMDAsMTIxLDMyLDEwMSwxMjAsMTA1LDExNSwxMTYsMTE1LDAsMTE2LDEwNCwxMDEsMTE0LDEwMSwzMiwxMDUsMTE1LDMyLDk3LDEwOCwxMTQsMTAxLDk3LDEwMCwxMjEsMzIsOTcsMTEwLDMyLDEwNSwxMTAsMTAwLDEwMSwxMjAsMzIsMTEwLDk3LDEwOSwxMDEsXG4xMDAsMzIsMzcsMTE1LDAsNiwwLDAsMCwwLDAsNjYsNjksNzEsNzMsNzgsMCw4Miw2OSw3Niw2OSw2NSw4Myw2OSwwLDgyLDc5LDc2LDc2LDY2LDY1LDY3LDc1LDAsNjcsNzksNzcsNzcsNzMsODQsMCw3OSwwLDAsMCw1NywwLDksMCw5NiwwLDAsMCwzNiwwLDcsMCwxMjMsMCwwLDAsOTYsMCwxLDAsMTMsMCw5LDAsNywwLDIsMCw3NiwwLDAsMCwxMTEsMCwwLDAsMTEyLDk3LDExNCwxMTUsMTAxLDExNCwzMiwxMTUsMTE2LDk3LDk5LDEwNywzMiwxMTEsMTE4LDEwMSwxMTQsMTAyLDEwOCwxMTEsMTE5LDAsMTksOTUsNTMsOTcsMjIsMjQsMjQsMTAxLDI3LDI4LDI5LDMwLDMxLDMyLDMzLDM0LDM1LDM2LDM3LDM4LDM5LDQwLDQxLDE1Miw0Myw0NCw0NSw0Niw0Nyw0OCw0OSw1MCw1MSw1Miw1MywxOSw1NSw1NSwxMzIsMTMzLDEzNCwxLDIsMjcsMjgsMjksMzAsMzEsMzIsMzMsMzQsMzUsMzYsMzcsMzgsMzksNDAsNDEsMTg3LDQzLDQ0LDQ1LDQ2LDQ3LDQ4LDQ5LDUwLDUxLDUyLDUzLDQ3LFxuNDgsNDksNTAsNTEsNTIsNTMsNjEsOTcsOTcsMTksNDksNTAsNTEsNTIsNTMsNzAsMjYsMjcsMjgsMjksMzAsMzEsMzIsMzMsMzQsMzUsMzYsMzcsMzgsMzksNDAsNDEsMTUyLDQzLDQ0LDQ1LDQ2LDQ3LDQ4LDQ5LDUwLDUxLDUyLDUzLDE0NCwxNDUsMTQ2LDE0NywxOSwxNiwyMiw5MiwxNzIsMTczLDUyLDUzLDI3LDI4LDI5LDMwLDMxLDMyLDMzLDM0LDM1LDM2LDM3LDM4LDM5LDQwLDQxLDgxLDQzLDQ0LDQ1LDQ2LDQ3LDQ4LDQ5LDUwLDUxLDUyLDUzLDU1LDU2LDE5LDE1MiwyMDcsMjA4LDExNSwyNCwxMTcsMTE4LDI3LDI4LDI5LDMwLDMxLDMyLDMzLDM0LDM1LDM2LDM3LDM4LDM5LDQwLDQxLDc5LDQzLDQ0LDQ1LDQ2LDQ3LDQ4LDQ5LDUwLDUxLDUyLDUzLDE5LDg4LDE1Nyw5MCwyMyw5Nyw5OCwxOTMsMjcsMjgsMjksMzAsMzEsMzIsMzMsMzQsMzUsMzYsMzcsMzgsMzksNDAsNDEsMTUyLDQzLDQ0LDQ1LDQ2LDQ3LDQ4LDQ5LDUwLDUxLDUyLDUzLDE5LDIyLDIzLDE3MiwyMywyNiwxMTksXG4xMjAsMjcsMjgsMjksMzAsMzEsMzIsMzMsMzQsMzUsMzYsMzcsMzgsMzksNDAsNDEsMTg3LDQzLDQ0LDQ1LDQ2LDQ3LDQ4LDQ5LDUwLDUxLDUyLDUzLDE5LDIyLDIzLDIyOCwyMywyNiwyMzEsMTUyLDI3LDI4LDI5LDMwLDMxLDMyLDMzLDM0LDM1LDM2LDM3LDM4LDM5LDQwLDQxLDE3Miw0Myw0NCw0NSw0Niw0Nyw0OCw0OSw1MCw1MSw1Miw1MywxOSwyMjEsMjIyLDIyMywyMyw5NiwxNTIsMTcyLDI3LDI4LDI5LDMwLDMxLDMyLDMzLDM0LDM1LDM2LDM3LDM4LDM5LDQwLDQxLDE1Miw0Myw0NCw0NSw0Niw0Nyw0OCw0OSw1MCw1MSw1Miw1MywxOSwwLDEsMiwyMyw5NiwxOTAsMTkxLDI3LDI4LDI5LDMwLDMxLDMyLDMzLDM0LDM1LDM2LDM3LDM4LDM5LDQwLDQxLDIzOCw0Myw0NCw0NSw0Niw0Nyw0OCw0OSw1MCw1MSw1Miw1MywxOSwxODUsMjE4LDIyMSwyMjIsMjIzLDE1MiwxNTIsMjcsMjgsMjksMzAsMzEsMzIsMzMsMzQsMzUsMzYsMzcsMzgsMzksNDAsNDEsMjQxLDQzLDQ0LDQ1LDQ2LFxuNDcsNDgsNDksNTAsNTEsNTIsNTMsMTksMTUyLDE2OCwxNjksMTcwLDIyLDE5MCwxOTEsMjcsMjgsMjksMzAsMzEsMzIsMzMsMzQsMzUsMzYsMzcsMzgsMzksNDAsNDEsMTUyLDQzLDQ0LDQ1LDQ2LDQ3LDQ4LDQ5LDUwLDUxLDUyLDUzLDE5LDE5LDIxOCw1NSw1NiwyNCwyMiwxNTIsMjcsMjgsMjksMzAsMzEsMzIsMzMsMzQsMzUsMzYsMzcsMzgsMzksNDAsNDEsMTUyLDQzLDQ0LDQ1LDQ2LDQ3LDQ4LDQ5LDUwLDUxLDUyLDUzLDI1MCwxOTQsMTk1LDU2LDU1LDU2LDU1LDE5LDE3MiwxNzMsOTcsOTgsMTUyLDIwNiwxMzgsMjcsMjgsMjksMzAsMzEsMzIsMzMsMzQsMzUsMzYsMzcsMzgsMzksNDAsNDEsMTUyLDQzLDQ0LDQ1LDQ2LDQ3LDQ4LDQ5LDUwLDUxLDUyLDUzLDE5LDIwNywyMDgsMTUyLDk3LDk4LDk3LDEzOCwyNywyOCwyOSwzMCwzMSwzMiwzMywzNCwzNSwzNiwzNywzOCwzOSw0MCw0MSwxODEsNDMsNDQsNDUsNDYsNDcsNDgsNDksNTAsNTEsNTIsNTMsMTksMzAsMzEsMzIsMzMsXG4yNDcsMjQ4LDE5LDE1MiwyOCwyOSwzMCwzMSwzMiwzMywzNCwzNSwzNiwzNywzOCwzOSw0MCw0MSwxNTIsNDMsNDQsNDUsNDYsNDcsNDgsNDksNTAsNTEsNTIsNTMsMTksMTY4LDE2OSwxNzAsMjM4LDE5LDUzLDE1MiwxNzIsMTczLDI5LDMwLDMxLDMyLDMzLDM0LDM1LDM2LDM3LDM4LDM5LDQwLDQxLDE1Miw0Myw0NCw0NSw0Niw0Nyw0OCw0OSw1MCw1MSw1Miw1MywxOSwyMCwxMDEsMjIsMjMsMTY5LDE3MCw1NiwyMDcsODUsNTUsNTYsMjMsMTksMjAsMjYsMjIsOTksMTAwLDEwMSwxMDIsMTAzLDEwNCwxMDUsMjM4LDE1MiwxNTIsMjEwLDQ3LDQ4LDExMiwxNTIsMTA4LDEwOSwxMTAsNTQsNTUsNTYsMjIxLDIyMiwyMjMsNDcsNDgsMTE5LDEyMCwxNzIsMTczLDY2LDU0LDU1LDU2LDE1Miw5Nyw5OCw5OSwxNDgsMTQ5LDEwMiwxMDMsMTA0LDY2LDE1NCwyMywxNTYsODMsMjYsMjMwLDE1MiwxMTMsMTUyLDE2MywxOTQsMTk1LDkyLDkyLDMwLDk1LDgzLDk3LDk4LDIwNywyMDgsMTAxLDIwNixcbjE3OSwxODAsOTIsMTcyLDE3Myw5NSwxNTIsOTcsOTgsMTg4LDk5LDEwMSwyMTksMTAyLDEwMywxMDQsMTUyLDExOSwxMjAsMTk2LDU1LDU2LDE5LDIwLDExMywyMiwxOTMsMTYzLDExLDEzMiwxMzMsMTM0LDEzNSwxMzYsMjQsNjUsMTcyLDE3MywyMDcsMjA4LDI1MCwxNTIsMTMyLDEzMywxMzQsMTM1LDEzNiwxOTMsNzgsODQsNDcsNDgsNDksOTgsMTk5LDE1Miw4Niw1NCw1NSw1NiwxOTYsMTUyLDk3LDk4LDIwOSw1NSwxNjMsMjQ0LDEwNyw2NiwxNTIsMjA3LDIwOCwxNjQsMTc1LDE3MiwxNzMsMTksMjAsMTI0LDIyLDExMSwzOCwzOSw0MCw0MSw4Myw0Myw0NCw0NSw0Niw0Nyw0OCw0OSw1MCw1MSw1Miw1Myw5NSwxOTYsOTcsOTgsODUsMTUyLDEwMSw0Nyw0OCw5Nyw4NSw5MiwyMDcsMTkzLDU0LDU1LDU2LDkyLDQ5LDE3NSw1NSw1NiwyMjEsMjIyLDIyMywxMiw2NiwxMDgsMTA5LDExMCwxMzcsMTYzLDEzOSwxMDgsMTA5LDExMCwyNiwxMzIsMTMzLDEzNCwxMzUsMTM2LDE1Miw4MyxcbjQzLDQ0LDQ1LDQ2LDQ3LDQ4LDQ5LDUwLDUxLDUyLDUzLDk1LDI2LDk3LDk4LDU1LDU2LDEwMSw5Nyw5OCwxOTYsMjIxLDIyMiwyMjMsMTQ2LDE0Nyw1NywxNzEsMTUyLDIyLDI2LDE5LDIwLDQ5LDIyLDE3OSwxMDgsMTA5LDExMCw1NSw1NiwxMTYsNzMsMjE5LDc1LDEyNCwxMjEsMTUyLDEzMiwxMzMsMTM0LDEzNSwxMzYsMTYzLDg1LDE1MiwyMzIsOTcsOTgsNDcsNDgsMjM3LDU1LDU2LDk4LDUsNTQsNTUsNTYsMTkzLDEwLDExLDEyLDEzLDE0LDE3MiwxNzMsMTcsNjYsNDcsNDgsOTcsOTgsMTUyLDEyNCwxNTIsMTk2LDU1LDU2LDE4NiwxMjQsMTUyLDEwNiwxNjAsMTUyLDgzLDE1MiwxNjQsMTUyLDYxLDIyLDIxMSwyMTIsMTUyLDk3LDk4LDE1Miw5NSw3MCw5Nyw5OCwxNzIsMTczLDEwMSwxNzIsMTczLDE3MiwxNzMsMTcyLDE3Myw2MCwxODEsNjIsMTcyLDE3Myw0Nyw0OCwxMjMsMTg2LDk3LDk4LDcxLDEwMCw1NSw1NiwxNTIsMTgxLDE4NiwyMSwxMDcsMTUyLDEwOSw4MiwxNjMsMTMyLFxuMTMzLDEzNCwxMzUsMTM2LDg5LDE2LDIwNyw5Miw5MywxOSwxNzIsMTczLDE2OSwxNzAsMTk1LDU1LDU2LDEyLDE1MiwxMzIsMzAsMTM0LDQ3LDQ4LDE4NiwyMDYsMjI1LDE1Miw5NSwxMTQsOTcsMTk2LDI0NSwyNDYsMTAxLDE1MiwzOCwzOSw0MCw0MSw0Miw0Myw0NCw0NSw0Niw0Nyw0OCw0OSw1MCw1MSw1Miw1MywxNTIsMTYzLDIxOSwxNTIsMTQxLDk3LDk4LDE5MywxNTIsMTUyLDU3LDkxLDE2NCwxMzIsMTMzLDEzNCwxNTIsNTUsMTUyLDE1MiwyMzcsMjMwLDE1MiwxMDMsMTkzLDg4LDczLDkwLDc1LDE3MiwxNzMsMTgzLDE1MiwxODUsMTk2LDE1MiwxNzIsMTczLDE3MiwxNzMsMjE3LDE1MiwxNzIsMTczLDE1MiwxMDcsMjIsMTUyLDI0LDE5MywxMTIsMTUyLDE3MiwxNzMsMTUyLDEzMiwyNDIsMTM0LDE1Miw5NywxNDAsMTUyLDkyLDE1MiwxNzIsMTczLDE1MiwxNzIsMTczLDE1MiwxMDAsMTcyLDE3MywxNTIsMTcyLDE3MywxNTIsMTQwLDE3MiwxNzMsMTUyLDE3MiwxNzMsMTcyLFxuMTczLDE1MiwxNzIsMTczLDE1MiwxNzIsMTczLDE1MiwxNTIsMTcyLDE3MywxNTIsMTcyLDE3MywyMTMsMTUyLDE3MiwxNzMsMTUyLDE1MiwxNTIsMTcyLDE3MywxNTIsMTcyLDE3MywxNTIsMTcyLDE3MywxNTIsMjEwLDE3MiwxNzMsMTUyLDI2LDE3MiwxNzMsMTUyLDE3MiwxNzMsMTcyLDE3MywxNTIsMTcyLDE3MywxNTIsMTcyLDE3MywxNTIsMTcyLDE3MywxNTIsNTksMTcyLDE3MywxNTIsNjMsMTcyLDE3MywxNTIsMTkzLDE1MiwxNTIsMTUyLDE1MiwxNzIsMTczLDE1MiwxNzIsMTczLDc3LDE3MiwxNzMsMTUyLDE1MiwxNzIsMTczLDE1MiwxNTIsMTcyLDE3MywxNzIsMTczLDE3MiwxNzMsMTUyLDIyLDE3MiwxNzMsMTUyLDE1MiwxNTIsMjIsMTcyLDE3MywxNTIsMTUyLDE1MiwxNzIsMTczLDE1Miw3LDgsOSwxNjMsMTcyLDE3MywyMiwyMywxNzIsMTczLDE3MiwxNzMsMTY2LDE2NywxNzIsMTczLDE3MiwxNzMsNTUsMTcyLDE3MywyMiwyMywxMDgsMTA5LDExMCwyMTcsMTUyLDIxNyxcbjE2NiwxNjcsMTYzLDE2MywxNjMsMTYzLDE2MywxOTYsMTMwLDIxNywyMTEsMjEyLDIxNywxMTYsMjMsMjIsMTAxLDI2LDEyMSwyMywyMywyMywyNiwyNiwyNiwyMywyMywxMTIsMjYsMjYsMzcsOTcsMTAwLDEwMSw1NSwxOTYsMTk2LDE5NiwxOTYsMTk2LDIzLDIzLDU1LDI2LDI2LDcsOCwyMywxNTIsMjMsMjYsOTYsMjYsMTMyLDEzMiwxMzQsMTM0LDIzLDE1MiwxNTIsMjYsMTUyLDEyMiwxNTIsMTkxLDE1Miw5NiwyMzQsMTUyLDE1MiwxNTIsMTUyLDE1MiwxOTcsMjEwLDE1Miw5NywxNTIsMTUyLDIxMCwyMzMsMjEwLDE5OCwxNTAsOTcsMTg0LDIwMSwyMzksMjE0LDIxNCwyMDEsMjM5LDE4MCwyMTQsMjI3LDIwMCwxOTgsMTU1LDY3LDI0MywxNzYsNjksMTc1LDE3NSwxNzUsMTIyLDE1OSwxNTksMjQwLDE1OSwyNDAsMjIsMjIwLDI3LDEzMCwyMDEsMTgsMTU5LDE4LDE4OSwxNTgsMTU4LDIyMCwxOTIsMTU5LDEzNywyMzYsMTkyLDE5MiwxOTIsMTg5LDc0LDE4OSwxNTksMjM1LDE1OSxcbjE1OCwyMiwxNzcsMjAxLDIwMSwxNTksMTA3LDE1OCwxNzcsMTU5LDE3NCwxNTgsNzYsMTc0LDE4MiwxNzQsMTA2LDE4MiwxMjUsMTc0LDEwNywxNzcsMjIsMTU5LDIxNiwyMTUsMTM3LDE1OSw1MywyMTYsMTc2LDIxNSwxNzQsMTc0LDIxNiwyMTUsMjE1LDE3NCwyMjksMjE2LDEyOSwyMjQsMTc3LDEyNiwyMjksMTI3LDE3NywxMjgsMjUsMTYyLDIyNiwyNiwxNjEsMTMsMTUzLDYsMTUzLDE1MSwxNTEsMTUxLDE1MSwyMDUsMTY1LDE3OCwxNzgsMTY1LDQsMywyMiwxNjUsMTQyLDE1LDk0LDIwMiwyMDQsMjAzLDIwMSwxNiwyMywyNDksMjMsMTIwLDI0OSwyNDYsMTExLDEzMSwxMjMsMjAsMTYsMSwxMjUsMTIzLDExMSw1Niw2NCwzNywzNywxMzEsMTIyLDEsMzcsNSwzNywyMiwxMDcsMjYsODAsMTQwLDgwLDg3LDcyLDEwNywyMCwyNCwxOSwxMTIsMTA1LDIzLDc5LDIyLDc5LDIyLDIyLDIyLDU4LDIyLDc5LDIzLDY4LDIzLDIzLDI2LDExNiwyMiwyNiwyMywyMiwxMjIsMjMsMjMsNTYsNjQsXG4yMiwxMjQsMjYsMjYsNjQsNjQsMjMsMjMsMjMsMjMsMTEsMjMsMjIsMjYsMjMsMjIsMjQsMSwyMywyMiwyNiwyNTEsMjQsMjMsMjIsMTIyLDIzLDIzLDIyLDE1LDEyMiwxMjIsMTIyLDIzLDAsMCw1NSw1NSw1NSw1NSwwLDU1LDU1LDU1LDAsNTUsNTUsNTUsNTUsMCwwLDAsNTUsMCwwLDU1LDAsMCwwLDU1LDAsMCwwLDAsNTUsNTUsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw1NSw1NSw1NSw1NSw1NSw1NSw1NSw1NSw1NSw1NSw1NSw1NSw1NSw1NSw1NSw1NSw1NSw1NSw1NSw1NSw1NSw1NSw1NSw1NSw1NSw1NSw1NSw1NSw1NSw1NSw1NSw1NSw1NSw1NSw1NSw1NSw1NSw1NSw1NSwyNywyNywyNywyNywyNywyNywyNywyNywyNyw3LDcsMjcsNyw3LDI3LDI3LDI3LDI3LDI3LDI3LDI3LDI3LDI3LDI3LDI3LDI3LDI3LDI3LDI3LDI3LDI3LDI3LDcsMTUsOCw1LDQsMjIsMjQsOCwxNywxOCwyMSwyMCwyMywxMSwyNiwxNiwzLDMsMywzLDMsMyxcbjMsMywzLDMsNSwxOSwxMiwxNCwxMyw2LDUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDAsMSwxLDksMjcsMjcsMjcsMSw4LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwwLDEsMSwyNywxMCwyNywyNSwyNywyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMTA1LDExMCwxMTgsOTcsMTA4LDEwNSwxMDAsMCw2NSw4MCw3MywzMiw5OSw5NywxMDgsMTA4LDMyLDExOSwxMDUsMTE2LDEwNCwzMiwzNywxMTUsMzIsXG4xMDAsOTcsMTE2LDk3LDk4LDk3LDExNSwxMDEsMzIsOTksMTExLDExMCwxMTAsMTAxLDk5LDExNiwxMDUsMTExLDExMCwzMiwxMTIsMTExLDEwNSwxMTAsMTE2LDEwMSwxMTQsMCwxMDAsOTcsMTE2LDk3LDk4LDk3LDExNSwxMDEsMzIsMTE1LDk5LDEwNCwxMDEsMTA5LDk3LDMyLDEwNSwxMTUsMzIsMTA4LDExMSw5OSwxMDcsMTAxLDEwMCw1OCwzMiwzNywxMTUsMCwxMTUsMTE2LDk3LDExNiwxMDEsMTA5LDEwMSwxMTAsMTE2LDMyLDExNiwxMTEsMTExLDMyLDEwOCwxMTEsMTEwLDEwMywwLDk3LDEwMCwxMDAsMTE0LDAsMTExLDExMiw5OSwxMTEsMTAwLDEwMSwwLDExMiw0OSwwLDExMiw1MCwwLDExMiw1MSwwLDExMiw1MiwwLDExMiw1MywwLDk5LDExMSwxMDksMTA5LDEwMSwxMTAsMTE2LDAsMTE1LDEwMSwxMDgsMTAxLDk5LDExNiwxMDUsMTAwLDAsMTAwLDEwMSwxMTYsOTcsMTA1LDEwOCwwLDc4LDg1LDc2LDc2LDAsMTE3LDExMCwxMTEsMTEyLDEwMSwxMTAsMTAxLDEwMCwwLDExNCxcbjEwMSw5NywxMDgsMCwxMDUsMTEwLDExNiwxMDEsMTAzLDEwMSwxMTQsMCwxMTAsMTE3LDEwOCwxMDgsMCw5OSw5NywxMTAsMTEwLDExMSwxMTYsMzIsMTExLDExMiwxMDEsMTEwLDMyLDExOCw5NywxMDgsMTE3LDEwMSwzMiwxMTEsMTAyLDMyLDExNiwxMjEsMTEyLDEwMSwzMiwzNywxMTUsMCwxMTAsMTExLDMyLDExNSwxMTcsOTksMTA0LDMyLDExNCwxMTEsMTE5LDEwNSwxMDAsNTgsMzIsMzcsMTA4LDEwOCwxMDAsMCwxMTAsMTExLDMyLDExNSwxMTcsOTksMTA0LDMyLDExOCwxMDUsMTAxLDExOSwwLDExMCwxMTEsMzIsMTE1LDExNyw5OSwxMDQsMzIsMTE2LDk3LDk4LDEwOCwxMDEsMCw0NSw0NSwzMiwwLDM5LDM3LDQ2LDQyLDExMywzOSwwLDEyMiwxMDEsMTE0LDExMSw5OCwxMDgsMTExLDk4LDQwLDM3LDEwMCw0MSwwLDEyMCwzOSwwLDM3LDQ4LDUwLDEyMCwwLDM5LDAsOTgsMTA1LDExMCwxMDAsMzIsMTExLDExMCwzMiw5NywzMiw5OCwxMTcsMTE1LDEyMSwzMiwxMTIsMTE0LFxuMTAxLDExMiw5NywxMTQsMTAxLDEwMCwzMiwxMTUsMTE2LDk3LDExNiwxMDEsMTA5LDEwMSwxMTAsMTE2LDU4LDMyLDkxLDM3LDExNSw5MywwLDM3LDExNSwzMiw5OSwxMTEsMTEwLDExNSwxMTYsMTE0LDk3LDEwNSwxMTAsMTE2LDMyLDEwMiw5NywxMDUsMTA4LDEwMSwxMDAsMCwzNywxMjIsNTgsMzIsMzcsMTE1LDAsOTcsOTgsMTExLDExNCwxMTYsMzIsOTcsMTE2LDMyLDM3LDEwMCwzMiwxMDUsMTEwLDMyLDkxLDM3LDExNSw5Myw1OCwzMiwzNywxMTUsMCwwLDAsMCwwLDEsMiwwLDIsMiwwLDEsMiwxLDEsMSwyLDEsMiwwLDAsMCwwLDAsMCwwLDAsOTksOTcsMTEwLDExMCwxMTEsMTE2LDMyLDExMSwxMTIsMTAxLDExMCwzMiwxMTUsOTcsMTE4LDEwMSwxMTIsMTExLDEwNSwxMTAsMTE2LDMyLDQ1LDMyLDgzLDgxLDc2LDMyLDExNSwxMTYsOTcsMTE2LDEwMSwxMDksMTAxLDExMCwxMTYsMTE1LDMyLDEwNSwxMTAsMzIsMTEyLDExNCwxMTEsMTAzLDExNCwxMDEsMTE1LDExNSwwLDExMCxcbjExMSwzMiwxMTUsMTE3LDk5LDEwNCwzMiwxMTUsOTcsMTE4LDEwMSwxMTIsMTExLDEwNSwxMTAsMTE2LDU4LDMyLDM3LDExNSwwLDk5LDk3LDExMCwxMTAsMTExLDExNiwzMiwxMTQsMTAxLDEwOCwxMDEsOTcsMTE1LDEwMSwzMiwxMTUsOTcsMTE4LDEwMSwxMTIsMTExLDEwNSwxMTAsMTE2LDMyLDQ1LDMyLDgzLDgxLDc2LDMyLDExNSwxMTYsOTcsMTE2LDEwMSwxMDksMTAxLDExMCwxMTYsMTE1LDMyLDEwNSwxMTAsMzIsMTEyLDExNCwxMTEsMTAzLDExNCwxMDEsMTE1LDExNSwwLDk5LDk3LDExMCwxMTAsMTExLDExNiwzMiw5OSwxMTEsMTA5LDEwOSwxMDUsMTE2LDMyLDExNiwxMTQsOTcsMTEwLDExNSw5Nyw5OSwxMTYsMTA1LDExMSwxMTAsMzIsNDUsMzIsODMsODEsNzYsMzIsMTE1LDExNiw5NywxMTYsMTAxLDEwOSwxMDEsMTEwLDExNiwxMTUsMzIsMTA1LDExMCwzMiwxMTIsMTE0LDExMSwxMDMsMTE0LDEwMSwxMTUsMTE1LDAsOTksOTcsMTEwLDExMCwxMTEsMTE2LDMyLDExNCxcbjExMSwxMDgsMTA4LDk4LDk3LDk5LDEwNywzMiw0NSwzMiwxMTAsMTExLDMyLDExNiwxMTQsOTcsMTEwLDExNSw5Nyw5OSwxMTYsMTA1LDExMSwxMTAsMzIsMTA1LDExNSwzMiw5Nyw5OSwxMTYsMTA1LDExOCwxMDEsMCw5OSw5NywxMTAsMTEwLDExMSwxMTYsMzIsOTksMTExLDEwOSwxMDksMTA1LDExNiwzMiw0NSwzMiwxMTAsMTExLDMyLDExNiwxMTQsOTcsMTEwLDExNSw5Nyw5OSwxMTYsMTA1LDExMSwxMTAsMzIsMTA1LDExNSwzMiw5Nyw5OSwxMTYsMTA1LDExOCwxMDEsMCw5OSw5NywxMTAsMTEwLDExMSwxMTYsMzIsMTE1LDExNiw5NywxMTQsMTE2LDMyLDk3LDMyLDExNiwxMTQsOTcsMTEwLDExNSw5Nyw5OSwxMTYsMTA1LDExMSwxMTAsMzIsMTE5LDEwNSwxMTYsMTA0LDEwNSwxMTAsMzIsOTcsMzIsMTE2LDExNCw5NywxMTAsMTE1LDk3LDk5LDExNiwxMDUsMTExLDExMCwwLDEwMCw5NywxMTYsOTcsOTgsOTcsMTE1LDEwMSwzMiwxMTUsOTksMTA0LDEwMSwxMDksOTcsMzIsMTA0LFxuOTcsMTE1LDMyLDk5LDEwNCw5NywxMTAsMTAzLDEwMSwxMDAsMCw4Myw2OSw3Niw2OSw2Nyw4NCwzMiwxMTAsOTcsMTA5LDEwMSw0NCwzMiwxMTQsMTExLDExMSwxMTYsMTEyLDk3LDEwMywxMDEsNDQsMzIsMTE1LDExMywxMDgsMzIsNzAsODIsNzksNzcsMzIsMzksMzcsMTEzLDM5LDQ2LDM3LDExNSwzMiw4Nyw3Miw2OSw4Miw2OSwzMiwzNywxMTUsMzIsNzksODIsNjgsNjksODIsMzIsNjYsODksMzIsMTE0LDExMSwxMTksMTA1LDEwMCwwLDExNiwxMTEsMTExLDMyLDEwOSw5NywxMTAsMTIxLDMyLDEwOCwxMDEsMTE4LDEwMSwxMDgsMTE1LDMyLDExMSwxMDIsMzIsMTE2LDExNCwxMDUsMTAzLDEwMywxMDEsMTE0LDMyLDExNCwxMDEsOTksMTE3LDExNCwxMTUsMTA1LDExMSwxMTAsMCwxMDUsMTEwLDExNiwxMTEsMCwxMTEsMTE3LDExNiwzMiwxMTEsMTAyLDAsOTksOTcsMTEwLDExMCwxMTEsMTE2LDMyLDk5LDEwNCw5NywxMTAsMTAzLDEwMSwzMiwzNywxMTUsMzIsMTE5LDk3LDEwOCxcbjMyLDEwOSwxMTEsMTAwLDEwMSwzMiwxMDIsMTE0LDExMSwxMDksMzIsMTE5LDEwNSwxMTYsMTA0LDEwNSwxMTAsMzIsOTcsMzIsMTE2LDExNCw5NywxMTAsMTE1LDk3LDk5LDExNiwxMDUsMTExLDExMCwwLDEwMCw5NywxMTYsOTcsOTgsOTcsMTE1LDEwMSwzMiwxMTYsOTcsOTgsMTA4LDEwMSwzMiwxMDUsMTE1LDMyLDEwOCwxMTEsOTksMTA3LDEwMSwxMDAsNTgsMzIsMzcsMTE1LDAsMTE1LDExNiw5NywxMTYsMTAxLDEwOSwxMDEsMTEwLDExNiwzMiw5Nyw5OCwxMTEsMTE0LDExNiwxMTUsMzIsOTcsMTE2LDMyLDM3LDEwMCw1OCwzMiw5MSwzNywxMTUsOTMsMzIsMzcsMTE1LDAsOTksOTcsMTEwLDExMCwxMTEsMTE2LDMyLDg2LDY1LDY3LDg1LDg1LDc3LDMyLDEwMiwxMTQsMTExLDEwOSwzMiwxMTksMTA1LDExNiwxMDQsMTA1LDExMCwzMiw5NywzMiwxMTYsMTE0LDk3LDExMCwxMTUsOTcsOTksMTE2LDEwNSwxMTEsMTEwLDAsOTksOTcsMTEwLDExMCwxMTEsMTE2LDMyLDg2LDY1LFxuNjcsODUsODUsNzcsMzIsNDUsMzIsODMsODEsNzYsMzIsMTE1LDExNiw5NywxMTYsMTAxLDEwOSwxMDEsMTEwLDExNiwxMTUsMzIsMTA1LDExMCwzMiwxMTIsMTE0LDExMSwxMDMsMTE0LDEwMSwxMTUsMTE1LDAsNjUsODQsODQsNjUsNjcsNzIsMzksMzksNjUsODMsMzIsMTE4LDk3LDk5LDExNywxMTcsMTA5LDk1LDEwMCw5OCwwLDgzLDY5LDc2LDY5LDY3LDg0LDMyLDExNSwxMTMsMTA4LDMyLDcwLDgyLDc5LDc3LDMyLDM0LDM3LDExOSwzNCw0NiwxMTUsMTEzLDEwOCwxMDUsMTE2LDEwMSw5NSwxMDksOTcsMTE1LDExNiwxMDEsMTE0LDMyLDg3LDcyLDY5LDgyLDY5LDMyLDExNiwxMjEsMTEyLDEwMSw2MSwzOSwxMTYsOTcsOTgsMTA4LDEwMSwzOSw2NSw3OCw2OCwzMiwxMTAsOTcsMTA5LDEwMSw2MCw2MiwzOSwxMTUsMTEzLDEwOCwxMDUsMTE2LDEwMSw5NSwxMTUsMTAxLDExMywxMTcsMTAxLDExMCw5OSwxMDEsMzksMzIsNjUsNzgsNjgsMzIsOTksMTExLDk3LDEwOCwxMDEsMTE1LFxuOTksMTAxLDQwLDExNCwxMTEsMTExLDExNiwxMTIsOTcsMTAzLDEwMSw0NCw0OSw0MSw2Miw0OCwwLDgzLDY5LDc2LDY5LDY3LDg0LDMyLDExNSwxMTMsMTA4LDMyLDcwLDgyLDc5LDc3LDMyLDM0LDM3LDExOSwzNCw0NiwxMTUsMTEzLDEwOCwxMDUsMTE2LDEwMSw5NSwxMDksOTcsMTE1LDExNiwxMDEsMTE0LDMyLDg3LDcyLDY5LDgyLDY5LDMyLDExNiwxMjEsMTEyLDEwMSw2MSwzOSwxMDUsMTEwLDEwMCwxMDEsMTIwLDM5LDMyLDY1LDc4LDY4LDMyLDEwOCwxMDEsMTEwLDEwMywxMTYsMTA0LDQwLDExNSwxMTMsMTA4LDQxLDYyLDQ5LDQ4LDAsODMsNjksNzYsNjksNjcsODQsMzksNzMsNzgsODMsNjksODIsODQsMzIsNzMsNzgsODQsNzksMzIsMTE4LDk3LDk5LDExNywxMTcsMTA5LDk1LDEwMCw5OCw0NiwzOSwxMjQsMTI0LDExMywxMTcsMTExLDExNiwxMDEsNDAsMTEwLDk3LDEwOSwxMDEsNDEsMTI0LDEyNCwzOSwzMiw4Myw2OSw3Niw2OSw2Nyw4NCw0Miw3MCw4Miw3OSw3NywzNCxcbjM3LDExOSwzNCw0NiwzOSwxMjQsMTI0LDExMywxMTcsMTExLDExNiwxMDEsNDAsMTEwLDk3LDEwOSwxMDEsNDEsNzAsODIsNzksNzcsMzIsMTE4LDk3LDk5LDExNywxMTcsMTA5LDk1LDEwMCw5OCw0NiwxMTUsMTEzLDEwOCwxMDUsMTE2LDEwMSw5NSwxMDksOTcsMTE1LDExNiwxMDEsMTE0LDMyLDg3LDcyLDY5LDgyLDY5LDMyLDExNiwxMjEsMTEyLDEwMSw2MSwzOSwxMTYsOTcsOTgsMTA4LDEwMSwzOSw2NSw3OCw2OCwzMiw5OSwxMTEsOTcsMTA4LDEwMSwxMTUsOTksMTAxLDQwLDExNCwxMTEsMTExLDExNiwxMTIsOTcsMTAzLDEwMSw0NCw0OSw0MSw2Miw0OCwwLDczLDc4LDgzLDY5LDgyLDg0LDMyLDczLDc4LDg0LDc5LDMyLDExOF0sXCJpOFwiLDQsbC5hYSszMDcyMCk7XG56KFs5Nyw5OSwxMTcsMTE3LDEwOSw5NSwxMDAsOTgsNDYsMTE1LDExMywxMDgsMTA1LDExNiwxMDEsOTUsMTA5LDk3LDExNSwxMTYsMTAxLDExNCwzMiw4Myw2OSw3Niw2OSw2Nyw4NCw0Miw3MCw4Miw3OSw3NywzMiwzNCwzNywxMTksMzQsNDYsMTE1LDExMywxMDgsMTA1LDExNiwxMDEsOTUsMTA5LDk3LDExNSwxMTYsMTAxLDExNCwzMiw4Nyw3Miw2OSw4Miw2OSwzMiwxMTYsMTIxLDExMiwxMDEsMzIsNzMsNzgsNDAsMzksMTE4LDEwNSwxMDEsMTE5LDM5LDQ0LDM5LDExNiwxMTQsMTA1LDEwMywxMDMsMTAxLDExNCwzOSw0MSwzMiw3OSw4Miw0MCwxMTYsMTIxLDExMiwxMDEsNjEsMzksMTE2LDk3LDk4LDEwOCwxMDEsMzksNjUsNzgsNjgsMzIsMTE0LDExMSwxMTEsMTE2LDExMiw5NywxMDMsMTAxLDYxLDQ4LDQxLDAsMSwxLDMsMCw1LDAsNiwwLDgsMCw3Nyw5NywxMDUsMTEwLDMyLDEwMiwxMTQsMTAxLDEwMSwxMDgsMTA1LDExNSwxMTYsNTgsMzIsMCw4MCw5NywxMDMsMTAxLDMyLFxuMzcsMTAwLDMyLDEwNSwxMTUsMzIsMTEwLDEwMSwxMTgsMTAxLDExNCwzMiwxMTcsMTE1LDEwMSwxMDAsMCw4MCwxMTEsMTA1LDExMCwxMTYsMTAxLDExNCwzMiwxMDksOTcsMTEyLDMyLDExMiw5NywxMDMsMTAxLDMyLDM3LDEwMCwzMiwxMDUsMTE1LDMyLDExNCwxMDEsMTAyLDEwMSwxMTQsMTAxLDExMCw5OSwxMDEsMTAwLDAsMTAsMCw4MCw5NywxMDMsMTAxLDMyLDM3LDEwMCw1OCwzMiwwLDExNywxMTAsOTcsOTgsMTA4LDEwMSwzMiwxMTYsMTExLDMyLDEwMywxMDEsMTE2LDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMDMsMTAxLDQ2LDMyLDEwMSwxMTQsMTE0LDExMSwxMTQsMzIsOTksMTExLDEwMCwxMDEsNjEsMzcsMTAwLDAsOTgsMTE2LDExNCwxMDEsMTAxLDczLDExMCwxMDUsMTE2LDgwLDk3LDEwMywxMDEsNDAsNDEsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMTE1LDMyLDEwMSwxMTQsMTE0LDExMSwxMTQsMzIsOTksMTExLDEwMCwxMDEsMzIsMzcsMTAwLDAsNzksXG4xMTAsMzIsMTE2LDExNCwxMDEsMTAxLDMyLDExMiw5NywxMDMsMTAxLDMyLDM3LDEwMCwzMiw5OSwxMDEsMTA4LDEwOCwzMiwzNywxMDAsNTgsMzIsMCw3OSwxMTAsMzIsMTEyLDk3LDEwMywxMDEsMzIsMzcsMTAwLDMyLDk3LDExNiwzMiwxMTQsMTA1LDEwMywxMDQsMTE2LDMyLDk5LDEwNCwxMDUsMTA4LDEwMCw1OCwzMiwwLDc5LDEwMiwxMDIsMTE1LDEwMSwxMTYsMzIsMzcsMTAwLDMyLDExMSwxMTcsMTE2LDMyLDExMSwxMDIsMzIsMTE0LDk3LDExMCwxMDMsMTAxLDMyLDM3LDEwMCw0Niw0NiwzNywxMDAsMCw2OSwxMjAsMTE2LDEwMSwxMTAsMTAwLDExNSwzMiwxMTEsMTAyLDEwMiwzMiwxMDEsMTEwLDEwMCwzMiwxMTEsMTAyLDMyLDExMiw5NywxMDMsMTAxLDAsODIsMTExLDExOSwxMDUsMTAwLDMyLDM3LDEwOCwxMDgsMTAwLDMyLDExMSwxMTcsMTE2LDMyLDExMSwxMDIsMzIsMTExLDExNCwxMDAsMTAxLDExNCwwLDY3LDEwNCwxMDUsMTA4LDEwMCwzMiwxMTIsOTcsMTAzLDEwMSxcbjMyLDEwMCwxMDEsMTEyLDExNiwxMDQsMzIsMTAwLDEwNSwxMDIsMTAyLDEwMSwxMTQsMTE1LDAsNzcsMTE3LDEwOCwxMTYsMTA1LDExMiwxMDgsMTAxLDMyLDExNywxMTUsMTAxLDExNSwzMiwxMDIsMTExLDExNCwzMiw5OCwxMjEsMTE2LDEwMSwzMiwzNywxMTcsMzIsMTExLDEwMiwzMiwxMTIsOTcsMTAzLDEwMSwzMiwzNywxMDAsMCw3MCwxMTQsOTcsMTAzLDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwzMiwzNywxMDAsMzIsOTgsMTIxLDExNiwxMDEsMTE1LDMyLDExNCwxMDEsMTEyLDExMSwxMTQsMTE2LDEwMSwxMDAsMzIsOTcsMTE1LDMyLDM3LDEwMCwzMiwxMTEsMTEwLDMyLDExMiw5NywxMDMsMTAxLDMyLDM3LDEwMCwwLDEwNSwxMTAsMTE4LDk3LDEwOCwxMDUsMTAwLDMyLDExMiw5NywxMDMsMTAxLDMyLDExMCwxMTcsMTA5LDk4LDEwMSwxMTQsMzIsMzcsMTAwLDAsNTAsMTEwLDEwMCwzMiwxMTQsMTAxLDEwMiwxMDEsMTE0LDEwMSwxMTAsXG45OSwxMDEsMzIsMTE2LDExMSwzMiwxMTIsOTcsMTAzLDEwMSwzMiwzNywxMDAsMCw3MCw5NywxMDUsMTA4LDEwMSwxMDAsMzIsMTE2LDExMSwzMiwxMTQsMTAxLDk3LDEwMCwzMiwxMTIsMTE2LDExNCwxMDksOTcsMTEyLDMyLDEwNywxMDEsMTIxLDYxLDM3LDEwMCwwLDY2LDk3LDEwMCwzMiwxMTIsMTE2LDExNCwzMiwxMDksOTcsMTEyLDMyLDEwMSwxMTAsMTE2LDExNCwxMjEsMzIsMTA3LDEwMSwxMjEsNjEsMzcsMTAwLDMyLDEwMSwxMjAsMTEyLDEwMSw5OSwxMTYsMTAxLDEwMCw2MSw0MCwzNywxMDAsNDQsMzcsMTAwLDQxLDMyLDEwMywxMTEsMTE2LDYxLDQwLDM3LDEwMCw0NCwzNywxMDAsNDEsMCwzNywxMDAsMzIsMTExLDEwMiwzMiwzNywxMDAsMzIsMTEyLDk3LDEwMywxMDEsMTE1LDMyLDEwOSwxMDUsMTE1LDExNSwxMDUsMTEwLDEwMywzMiwxMDIsMTE0LDExMSwxMDksMzIsMTExLDExOCwxMDEsMTE0LDEwMiwxMDgsMTExLDExOSwzMiwxMDgsMTA1LDExNSwxMTYsMzIsMTE1LFxuMTE2LDk3LDExNCwxMTYsMTA1LDExMCwxMDMsMzIsOTcsMTE2LDMyLDM3LDEwMCwwLDEwMiw5NywxMDUsMTA4LDEwMSwxMDAsMzIsMTE2LDExMSwzMiwxMDMsMTAxLDExNiwzMiwxMTIsOTcsMTAzLDEwMSwzMiwzNywxMDAsMCwxMDIsMTE0LDEwMSwxMDEsMTA4LDEwNSwxMTUsMTE2LDMyLDEwOCwxMDEsOTcsMTAyLDMyLDk5LDExMSwxMTcsMTEwLDExNiwzMiwxMTYsMTExLDExMSwzMiw5OCwxMDUsMTAzLDMyLDExMSwxMTAsMzIsMTEyLDk3LDEwMywxMDEsMzIsMzcsMTAwLDAsMTAyLDExNCwxMDEsMTAxLDQ1LDExMiw5NywxMDMsMTAxLDMyLDk5LDExMSwxMTcsMTEwLDExNiwzMiwxMDUsMTEwLDMyLDEwNCwxMDEsOTcsMTAwLDEwMSwxMTQsMzIsMTA1LDExNSwzMiwxMTYsMTExLDExMSwzMiwxMTUsMTA5LDk3LDEwOCwxMDgsMCwwLDEsMiwzLDQsNiw4LDgzLDgxLDc2LDEwNSwxMTYsMTAxLDMyLDEwMiwxMTEsMTE0LDEwOSw5NywxMTYsMzIsNTEsMCwxLDEsMCwxLDAsMCwzNywxMTUsXG40NSwxMDksMTA2LDg4LDg4LDg4LDg4LDg4LDg4LDU3LDg4LDg4LDEyMiwwLDc3LDc0LDMyLDEwMCwxMDEsMTA4LDEwMSwxMTYsMTAxLDU4LDMyLDM3LDExNSwwLDc3LDc0LDMyLDk5LDExMSwxMDgsMTA4LDEwNSwxMDAsMTAxLDU4LDMyLDM3LDExNSwwLDQ1LDEwOSwxMDYsMzcsNDgsNTQsODgsNTcsMzcsNDgsNTAsODgsMCw3OCw3OSw4NCwzMiw3OCw4NSw3Niw3NiwwLDg1LDc4LDczLDgxLDg1LDY5LDAsNjcsNzIsNjksNjcsNzUsMCw3MCw3OSw4Miw2OSw3Myw3MSw3OCwzMiw3NSw2OSw4OSwwLDM3LDQ2LDUwLDEyMCwwLDEwNyw0MCwzNywxMDAsMCw2NiwwLDQ0LDM3LDExNSwzNywxMTUsMCw0MCwzNyw0Niw1MCw0OCwxMTUsNDEsMCwzNywxMTUsNDAsMzcsMTAwLDQxLDAsMzcsMTAwLDAsMzcsNDYsNDksNTQsMTAzLDAsNDAsOTgsMTA4LDExMSw5OCw0MSwwLDExOCwxMTYsOTcsOTgsNTgsMzcsMTEyLDAsNDQsMzcsMTAwLDAsOTMsMCwxMTIsMTE0LDExMSwxMDMsMTE0LDk3LDEwOSxcbjAsODMsOTcsMTE4LDEwMSwxMTIsMTExLDEwNSwxMTAsMTE2LDAsNjUsMTE3LDExNiwxMTEsNjcsMTExLDEwOSwxMDksMTA1LDExNiwwLDg0LDExNCw5NywxMTAsMTE1LDk3LDk5LDExNiwxMDUsMTExLDExMCwwLDgzLDExMSwxMTQsMTE2LDEwMSwxMTQsNzgsMTAxLDEyMCwxMTYsMCw4MCwxMTQsMTAxLDExOCw3MywxMDIsNzksMTEyLDEwMSwxMTAsMCw3OCwxMDEsMTIwLDExNiw3MywxMDIsNzksMTEyLDEwMSwxMTAsMCw4MCwxMTQsMTAxLDExOCwwLDc4LDEwMSwxMjAsMTE2LDAsNjcsMTA0LDEwMSw5OSwxMDcsMTEyLDExMSwxMDUsMTEwLDExNiwwLDc0LDExMSwxMTcsMTE0LDExMCw5NywxMDgsNzcsMTExLDEwMCwxMDEsMCw4Niw5Nyw5OSwxMTcsMTE3LDEwOSwwLDg2LDcwLDEwNSwxMDgsMTE2LDEwMSwxMTQsMCw4Niw4NSwxMTIsMTAwLDk3LDExNiwxMDEsMCw3MSwxMTEsMTE2LDExMSwwLDcxLDExMSwxMTUsMTE3LDk4LDAsNzMsMTEwLDEwNSwxMTYsNjcsMTExLDExNCwxMTEsMTE3LFxuMTE2LDEwNSwxMTAsMTAxLDAsODksMTA1LDEwMSwxMDgsMTAwLDAsNzcsMTE3LDExNSwxMTYsNjYsMTAxLDczLDExMCwxMTYsMCw3NCwxMTcsMTA5LDExMiwwLDc4LDExMSwxMTYsMCw3OSwxMTAsOTksMTAxLDAsNzMsMTAyLDAsNzMsMTAyLDc4LDExMSwxMTYsMCw4MywxMDEsMTAxLDEwNyw3Niw4NCwwLDgzLDEwMSwxMDEsMTA3LDc2LDY5LDAsODMsMTAxLDEwMSwxMDcsNzEsNjksMCw4MywxMDEsMTAxLDEwNyw3MSw4NCwwLDc5LDExNCwwLDY1LDExMCwxMDAsMCw3OCwxMTEsNjcsMTExLDExMCwxMDIsMTA4LDEwNSw5OSwxMTYsMCw3OCwxMTEsMTE2LDcwLDExMSwxMTcsMTEwLDEwMCwwLDcwLDExMSwxMTcsMTEwLDEwMCwwLDgzLDEwMSwxMDEsMTA3LDgyLDExMSwxMTksMTA1LDEwMCwwLDc4LDExMSwxMTYsNjksMTIwLDEwNSwxMTUsMTE2LDExNSwwLDczLDExNSw3OCwxMTcsMTA4LDEwOCwwLDc4LDExMSwxMTYsNzgsMTE3LDEwOCwxMDgsMCw3OCwxMDEsMCw2OSwxMTMsMCw3MSwxMTYsXG4wLDc2LDEwMSwwLDc2LDExNiwwLDcxLDEwMSwwLDY5LDEwOCwxMTUsMTAxLDc4LDExMSwxMTYsNjksMTEzLDAsNjYsMTA1LDExNiw2NSwxMTAsMTAwLDAsNjYsMTA1LDExNiw3OSwxMTQsMCw4MywxMDQsMTA1LDEwMiwxMTYsNzYsMTAxLDEwMiwxMTYsMCw4MywxMDQsMTA1LDEwMiwxMTYsODIsMTA1LDEwMywxMDQsMTE2LDAsNjUsMTAwLDEwMCwwLDgzLDExNyw5OCwxMTYsMTE0LDk3LDk5LDExNiwwLDc3LDExNywxMDgsMTE2LDEwNSwxMTIsMTA4LDEyMSwwLDY4LDEwNSwxMTgsMTA1LDEwMCwxMDEsMCw4MiwxMDEsMTA5LDk3LDEwNSwxMTAsMTAwLDEwMSwxMTQsMCw2NywxMTEsMTEwLDk5LDk3LDExNiwwLDc2LDk3LDExNSwxMTYsMCw2NiwxMDUsMTE2LDc4LDExMSwxMTYsMCw4MywxMTEsMTE0LDExNiwxMDEsMTE0LDgzLDExMSwxMTQsMTE2LDAsODMsMTExLDExNCwxMTYsMCw4MiwxMDEsMTE5LDEwNSwxMTAsMTAwLDAsNzMsMTAwLDEyMCw3Niw2OSwwLDczLDEwMCwxMjAsNzEsODQsXG4wLDczLDEwMCwxMjAsNzYsODQsMCw3MywxMDAsMTIwLDcxLDY5LDAsODIsMTExLDExOSw4MywxMDEsMTE2LDgyLDEwMSw5NywxMDAsMCw4MiwxMTEsMTE5LDgzLDEwMSwxMTYsODQsMTAxLDExNSwxMTYsMCw4MCwxMTQsMTExLDEwMywxMTQsOTcsMTA5LDAsNzAsMTA3LDczLDEwMiw5MCwxMDEsMTE0LDExMSwwLDczLDEwMiw4MCwxMTEsMTE1LDAsNzMsMTAyLDc4LDExMSwxMTYsOTAsMTAxLDExNCwxMTEsMCw2OCwxMDEsOTksMTE0LDc0LDExNywxMDksMTEyLDkwLDEwMSwxMTQsMTExLDAsNzMsMTEwLDk5LDExNCw4Niw5Nyw5OSwxMTcsMTE3LDEwOSwwLDg2LDc4LDEwMSwxMjAsMTE2LDAsNzMsMTEwLDEwNSwxMTYsMCw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDAsNjksMTEwLDEwMCw2NywxMTEsMTE0LDExMSwxMTcsMTE2LDEwNSwxMTAsMTAxLDAsNzIsOTcsMTA4LDExNiw3MywxMDIsNzgsMTE3LDEwOCwxMDgsMCw3Miw5NywxMDgsMTE2LDAsNzMsMTEwLDExNiwxMDEsMTAzLDEwMSxcbjExNCwwLDczLDExMCwxMTYsNTQsNTIsMCw4MywxMTYsMTE0LDEwNSwxMTAsMTAzLDAsNzgsMTE3LDEwOCwxMDgsMCw4MywxMTEsMTAyLDExNiw3OCwxMTcsMTA4LDEwOCwwLDY2LDEwOCwxMTEsOTgsMCw4Niw5NywxMTQsMTA1LDk3LDk4LDEwOCwxMDEsMCw3NywxMTEsMTE4LDEwMSwwLDY3LDExMSwxMTIsMTIxLDAsODMsNjcsMTExLDExMiwxMjEsMCw3MywxMTAsMTE2LDY3LDExMSwxMTIsMTIxLDAsODIsMTAxLDExNSwxMTcsMTA4LDExNiw4MiwxMTEsMTE5LDAsNjcsMTExLDEwOCwxMDgsODMsMTAxLDExMywwLDcwLDExNywxMTAsOTksMTE2LDEwNSwxMTEsMTEwLDQ4LDAsNzAsMTE3LDExMCw5OSwxMTYsMTA1LDExMSwxMTAsMCw2NSwxMDAsMTAwLDczLDEwOSwxMDksMCw4MiwxMDEsOTcsMTA4LDY1LDEwMiwxMDIsMTA1LDExMCwxMDUsMTE2LDEyMSwwLDY3LDk3LDExNSwxMTYsMCw4MCwxMDEsMTE0LDEwOSwxMTcsMTE2LDk3LDExNiwxMDUsMTExLDExMCwwLDY3LDExMSwxMDksMTEyLFxuOTcsMTE0LDEwMSwwLDY3LDExMSwxMDgsMTE3LDEwOSwxMTAsMCw4MywxMTYsMTE0LDEwNSwxMTAsMTAzLDU2LDAsNjUsMTAyLDEwMiwxMDUsMTEwLDEwNSwxMTYsMTIxLDAsNzcsOTcsMTA3LDEwMSw4MiwxMDEsOTksMTExLDExNCwxMDAsMCw2NywxMTEsMTE3LDExMCwxMTYsMCw4MiwxMDEsOTcsMTAwLDY3LDExMSwxMTEsMTA3LDEwNSwxMDEsMCw4MywxMDEsMTE2LDY3LDExMSwxMTEsMTA3LDEwNSwxMDEsMCw4MiwxMDEsMTExLDExMiwxMDEsMTEwLDczLDEwMCwxMjAsMCw3OSwxMTIsMTAxLDExMCw4MiwxMDEsOTcsMTAwLDAsNzksMTEyLDEwMSwxMTAsODcsMTE0LDEwNSwxMTYsMTAxLDAsNzksMTEyLDEwMSwxMTAsNjUsMTE3LDExNiwxMTEsMTA1LDExMCwxMDAsMTAxLDEyMCwwLDc5LDExMiwxMDEsMTEwLDY5LDExMiwxMDQsMTAxLDEwOSwxMDEsMTE0LDk3LDEwOCwwLDgzLDExMSwxMTQsMTE2LDEwMSwxMTQsNzksMTEyLDEwMSwxMTAsMCw4MywxMDEsMTEzLDExNywxMDEsMTEwLFxuOTksMTAxLDg0LDEwMSwxMTUsMTE2LDAsNzksMTEyLDEwMSwxMTAsODAsMTE1LDEwMSwxMTcsMTAwLDExMSwwLDY3LDEwOCwxMTEsMTE1LDEwMSwwLDY3LDExMSwxMDgsMTE3LDEwOSwxMTAsMTE1LDg1LDExNSwxMDEsMTAwLDAsODMsMTAxLDExMywxMTcsMTAxLDExMCw5OSwxMDEsMCw3OCwxMDEsMTE5LDgyLDExMSwxMTksMTA1LDEwMCwwLDczLDExMCwxMTUsMTAxLDExNCwxMTYsMCw3MywxMTAsMTE1LDEwMSwxMTQsMTE2LDczLDExMCwxMTYsMCw2OCwxMDEsMTA4LDEwMSwxMTYsMTAxLDAsODIsMTAxLDExNSwxMDEsMTE2LDY3LDExMSwxMTcsMTEwLDExNiwwLDgzLDExMSwxMTQsMTE2LDEwMSwxMTQsNjcsMTExLDEwOSwxMTIsOTcsMTE0LDEwMSwwLDgzLDExMSwxMTQsMTE2LDEwMSwxMTQsNjgsOTcsMTE2LDk3LDAsODIsMTExLDExOSw3NSwxMDEsMTIxLDAsODIsMTExLDExOSw2OCw5NywxMTYsOTcsMCw4MiwxMTEsMTE5LDEwNSwxMDAsMCw3OCwxMTcsMTA4LDEwOCw4MiwxMTEsXG4xMTksMCw4MywxMTEsMTE0LDExNiwxMDEsMTE0LDczLDExMCwxMTUsMTAxLDExNCwxMTYsMCw3MywxMDAsMTIwLDczLDExMCwxMTUsMTAxLDExNCwxMTYsMCw3MywxMDAsMTIwLDY4LDEwMSwxMDgsMTAxLDExNiwxMDEsMCw4MywxMDEsMTAxLDEwNywwLDczLDEwMCwxMjAsODIsMTExLDExOSwxMDUsMTAwLDAsNjgsMTAxLDExNSwxMTYsMTE0LDExMSwxMjEsMCw2NywxMDgsMTAxLDk3LDExNCwwLDgyLDEwMSw5NywxMDgsMCw4MiwxMDEsMTE1LDEwMSwxMTYsODMsMTExLDExNCwxMTYsMTAxLDExNCwwLDY3LDExNCwxMDEsOTcsMTE2LDEwMSw3MywxMTAsMTAwLDEwMSwxMjAsMCw2NywxMTQsMTAxLDk3LDExNiwxMDEsODQsOTcsOTgsMTA4LDEwMSwwLDgwLDk3LDExNCwxMTUsMTAxLDgzLDk5LDEwNCwxMDEsMTA5LDk3LDAsNzYsMTExLDk3LDEwMCw2NSwxMTAsOTcsMTA4LDEyMSwxMTUsMTA1LDExNSwwLDY4LDExNCwxMTEsMTEyLDg0LDk3LDk4LDEwOCwxMDEsMCw2OCwxMTQsMTExLDExMixcbjczLDExMCwxMDAsMTAxLDEyMCwwLDY4LDExNCwxMTEsMTEyLDg0LDExNCwxMDUsMTAzLDEwMywxMDEsMTE0LDAsNzMsMTEwLDExNiwxMDEsMTAzLDExNCwxMDUsMTE2LDEyMSw2NywxMDcsMCw4MiwxMTEsMTE5LDgzLDEwMSwxMTYsNjUsMTAwLDEwMCwwLDgwLDk3LDExNCw5NywxMDksMCw3MCwxMDcsNjcsMTExLDExNywxMTAsMTE2LDEwMSwxMTQsMCw3NywxMDEsMTA5LDc3LDk3LDEyMCwwLDc5LDEwMiwxMDIsMTE1LDEwMSwxMTYsNzYsMTA1LDEwOSwxMDUsMTE2LDAsNjUsMTAzLDEwMyw4MywxMTYsMTAxLDExMiw0OCwwLDY1LDEwMywxMDMsODMsMTE2LDEwMSwxMTIsMCw2NSwxMDMsMTAzLDcwLDEwNSwxMTAsOTcsMTA4LDAsNjksMTIwLDExMiwxMDUsMTE0LDEwMSwwLDg0LDk3LDk4LDEwOCwxMDEsNzYsMTExLDk5LDEwNywwLDg2LDY2LDEwMSwxMDMsMTA1LDExMCwwLDg2LDY3LDExNCwxMDEsOTcsMTE2LDEwMSwwLDg2LDY4LDEwMSwxMTUsMTE2LDExNCwxMTEsMTIxLDAsODYsNzksXG4xMTIsMTAxLDExMCwwLDg2LDY3LDExMSwxMDgsMTE3LDEwOSwxMTAsMCw4Niw4MiwxMDEsMTEwLDk3LDEwOSwxMDEsMCw4MCw5NywxMDMsMTAxLDk5LDExMSwxMTcsMTEwLDExNiwwLDc3LDk3LDEyMCw4MCwxMDMsOTksMTEwLDExNiwwLDY3LDExNywxMTQsMTE1LDExMSwxMTQsNzIsMTA1LDExMCwxMTYsMCw3OCwxMTEsMTExLDExMiwwLDY5LDEyMCwxMTIsMTA4LDk3LDEwNSwxMTAsMCw2NSw4MCw3MywzMiw5OSw5NywxMDgsMTA4LDEwMSwxMDAsMzIsMTE5LDEwNSwxMTYsMTA0LDMyLDc4LDg1LDc2LDc2LDMyLDExMiwxMTQsMTAxLDExMiw5NywxMTQsMTAxLDEwMCwzMiwxMTUsMTE2LDk3LDExNiwxMDEsMTA5LDEwMSwxMTAsMTE2LDAsMTE3LDExMCwxMDcsMTEwLDExMSwxMTksMTEwLDMyLDEwMSwxMTQsMTE0LDExMSwxMTQsMCw5Nyw5OCwxMTEsMTE0LDExNiwzMiwxMDAsMTE3LDEwMSwzMiwxMTYsMTExLDMyLDgyLDc5LDc2LDc2LDY2LDY1LDY3LDc1LDAsMTEwLDExMSwxMTYsMzIsXG45NywxMTAsMzIsMTAxLDExNCwxMTQsMTExLDExNCwwLDgzLDgxLDc2LDMyLDEwOCwxMTEsMTAzLDEwNSw5OSwzMiwxMDEsMTE0LDExNCwxMTEsMTE0LDMyLDExMSwxMTQsMzIsMTA5LDEwNSwxMTUsMTE1LDEwNSwxMTAsMTAzLDMyLDEwMCw5NywxMTYsOTcsOTgsOTcsMTE1LDEwMSwwLDk3LDk5LDk5LDEwMSwxMTUsMTE1LDMyLDExMiwxMDEsMTE0LDEwOSwxMDUsMTE1LDExNSwxMDUsMTExLDExMCwzMiwxMDAsMTAxLDExMCwxMDUsMTAxLDEwMCwwLDk5LDk3LDEwOCwxMDgsOTgsOTcsOTksMTA3LDMyLDExNCwxMDEsMTEzLDExNywxMDEsMTE1LDExNiwxMDEsMTAwLDMyLDExMywxMTcsMTAxLDExNCwxMjEsMzIsOTcsOTgsMTExLDExNCwxMTYsMCwxMDAsOTcsMTE2LDk3LDk4LDk3LDExNSwxMDEsMzIsMTA1LDExNSwzMiwxMDgsMTExLDk5LDEwNywxMDEsMTAwLDAsMTAwLDk3LDExNiw5Nyw5OCw5NywxMTUsMTAxLDMyLDExNiw5Nyw5OCwxMDgsMTAxLDMyLDEwNSwxMTUsMzIsMTA4LDExMSxcbjk5LDEwNywxMDEsMTAwLDAsOTcsMTE2LDExNiwxMDEsMTA5LDExMiwxMTYsMzIsMTE2LDExMSwzMiwxMTksMTE0LDEwNSwxMTYsMTAxLDMyLDk3LDMyLDExNCwxMDEsOTcsMTAwLDExMSwxMTAsMTA4LDEyMSwzMiwxMDAsOTcsMTE2LDk3LDk4LDk3LDExNSwxMDEsMCwxMDUsMTEwLDExNiwxMDEsMTE0LDExNCwxMTcsMTEyLDExNiwxMDEsMTAwLDAsMTAwLDEwNSwxMTUsMTA3LDMyLDczLDQ3LDc5LDMyLDEwMSwxMTQsMTE0LDExMSwxMTQsMCwxMDAsOTcsMTE2LDk3LDk4LDk3LDExNSwxMDEsMzIsMTAwLDEwNSwxMTUsMTA3LDMyLDEwNSwxMDksOTcsMTAzLDEwMSwzMiwxMDUsMTE1LDMyLDEwOSw5NywxMDgsMTAyLDExMSwxMTQsMTA5LDEwMSwxMDAsMCwxMTcsMTEwLDEwNywxMTAsMTExLDExOSwxMTAsMzIsMTExLDExMiwxMDEsMTE0LDk3LDExNiwxMDUsMTExLDExMCwwLDEwMCw5NywxMTYsOTcsOTgsOTcsMTE1LDEwMSwzMiwxMTEsMTE0LDMyLDEwMCwxMDUsMTE1LDEwNywzMiwxMDUsXG4xMTUsMzIsMTAyLDExNywxMDgsMTA4LDAsMTE3LDExMCw5Nyw5OCwxMDgsMTAxLDMyLDExNiwxMTEsMzIsMTExLDExMiwxMDEsMTEwLDMyLDEwMCw5NywxMTYsOTcsOTgsOTcsMTE1LDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsMCwxMDgsMTExLDk5LDEwNywxMDUsMTEwLDEwMywzMiwxMTIsMTE0LDExMSwxMTYsMTExLDk5LDExMSwxMDgsMCwxMTYsOTcsOTgsMTA4LDEwMSwzMiw5OSwxMTEsMTEwLDExNiw5NywxMDUsMTEwLDExNSwzMiwxMTAsMTExLDMyLDEwMCw5NywxMTYsOTcsMCw5OSwxMTEsMTEwLDExNSwxMTYsMTE0LDk3LDEwNSwxMTAsMTE2LDMyLDEwMiw5NywxMDUsMTA4LDEwMSwxMDAsMCwxMDAsOTcsMTE2LDk3LDExNiwxMjEsMTEyLDEwMSwzMiwxMDksMTA1LDExNSwxMDksOTcsMTE2LDk5LDEwNCwwLDEwOCwxMDUsOTgsMTE0LDk3LDExNCwxMjEsMzIsMTE0LDExMSwxMTcsMTE2LDEwNSwxMTAsMTAxLDMyLDk5LDk3LDEwOCwxMDgsMTAxLDEwMCwzMiwxMTEsMTE3LDExNixcbjMyLDExMSwxMDIsMzIsMTE1LDEwMSwxMTMsMTE3LDEwMSwxMTAsOTksMTAxLDAsMTA4LDk3LDExNCwxMDMsMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMTUsMTE3LDExMiwxMTIsMTExLDExNCwxMTYsMzIsMTA1LDExNSwzMiwxMDAsMTA1LDExNSw5Nyw5OCwxMDgsMTAxLDEwMCwwLDk3LDExNywxMTYsMTA0LDExMSwxMTQsMTA1LDEyMiw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTAwLDEwMSwxMTAsMTA1LDEwMSwxMDAsMCw5NywxMTcsMTIwLDEwNSwxMDgsMTA1LDk3LDExNCwxMjEsMzIsMTAwLDk3LDExNiw5Nyw5OCw5NywxMTUsMTAxLDMyLDEwMiwxMTEsMTE0LDEwOSw5NywxMTYsMzIsMTAxLDExNCwxMTQsMTExLDExNCwwLDk4LDEwNSwxMTAsMTAwLDMyLDExMSwxMTQsMzIsOTksMTExLDEwOCwxMTcsMTA5LDExMCwzMiwxMDUsMTEwLDEwMCwxMDEsMTIwLDMyLDExMSwxMTcsMTE2LDMyLDExMSwxMDIsMzIsMTE0LDk3LDExMCwxMDMsMTAxLDAsMTAyLDEwNSwxMDgsMTAxLDMyLFxuMTA1LDExNSwzMiwxMDEsMTEwLDk5LDExNCwxMjEsMTEyLDExNiwxMDEsMTAwLDMyLDExMSwxMTQsMzIsMTA1LDExNSwzMiwxMTAsMTExLDExNiwzMiw5NywzMiwxMDAsOTcsMTE2LDk3LDk4LDk3LDExNSwxMDEsMCw2NSw4MCw3MywzMiw5OSw5NywxMDgsMTA4LDEwMSwxMDAsMzIsMTE5LDEwNSwxMTYsMTA0LDMyLDEwMiwxMDUsMTEwLDk3LDEwOCwxMDUsMTIyLDEwMSwxMDAsMzIsMTEyLDExNCwxMDEsMTEyLDk3LDExNCwxMDEsMTAwLDMyLDExNSwxMTYsOTcsMTE2LDEwMSwxMDksMTAxLDExMCwxMTYsMCw2NCwzMiwzMiwwLDExNywxMTAsMTA1LDEyMCwwLDExNywxMTAsMTA1LDEyMCw0NSwxMTAsMTExLDExMCwxMDEsMCwxMTcsMTEwLDEwNSwxMjAsNDUsMTAwLDExMSwxMTYsMTAyLDEwNSwxMDgsMTAxLDAsMTE3LDExMCwxMDUsMTIwLDQ1LDEwMSwxMjAsOTksMTA4LDAsOTksMTA4LDExMSwxMTUsMTAxLDAsMTExLDExNSw5NSwxMTcsMTEwLDEwNSwxMjAsNDYsOTksNTgsMzcsMTAwLFxuNTgsMzIsNDAsMzcsMTAwLDQxLDMyLDM3LDExNSw0MCwzNywxMTUsNDEsMzIsNDUsMzIsMzcsMTE1LDAsMTExLDExMiwxMDEsMTEwLDAsMTAzLDEwMSwxMTYsOTksMTE5LDEwMCwwLDExNSwxMTYsOTcsMTE2LDAsMTAyLDExNSwxMTYsOTcsMTE2LDAsMTAyLDExNiwxMTQsMTE3LDExMCw5OSw5NywxMTYsMTAxLDAsMTAyLDk5LDExMCwxMTYsMTA4LDAsMTE0LDEwMSw5NywxMDAsMCwxMTIsMTE0LDEwMSw5NywxMDAsMCwxMTIsMTE0LDEwMSw5NywxMDAsNTQsNTIsMCwxMTksMTE0LDEwNSwxMTYsMTAxLDAsMTEyLDExOSwxMTQsMTA1LDExNiwxMDEsMCwxMTIsMTE5LDExNCwxMDUsMTE2LDEwMSw1NCw1MiwwLDEwMiw5OSwxMDQsMTA5LDExMSwxMDAsMCwxMDIsOTcsMTA4LDEwOCwxMTEsOTksOTcsMTE2LDEwMSwwLDExNywxMTAsMTA4LDEwNSwxMTAsMTA3LDAsMTExLDExMiwxMDEsMTEwLDY4LDEwNSwxMTQsMTAxLDk5LDExNiwxMTEsMTE0LDEyMSwwLDEwOSwxMDcsMTAwLDEwNSwxMTQsXG4wLDExNCwxMDksMTAwLDEwNSwxMTQsMCwxMDIsOTksMTA0LDExMSwxMTksMTEwLDAsMTAzLDEwMSwxMTYsMTAxLDExNywxMDUsMTAwLDAsMTA5LDEwOSw5NywxMTIsMCwxMDksMTE3LDExMCwxMDksOTcsMTEyLDAsMTA5LDExNCwxMDEsMTA5LDk3LDExMiwwLDEwMywxMDEsMTE2LDExMiw5NywxMDMsMTAxLDExNSwxMDUsMTIyLDEwMSwwLDExNCwxMDEsOTcsMTAwLDEwOCwxMDUsMTEwLDEwNywwLDEwOCwxMTUsMTE2LDk3LDExNiwwLDk3LDExNiwxMTYsMTAxLDEwOSwxMTIsMTE2LDMyLDExNiwxMTEsMzIsMTExLDExMiwxMDEsMTEwLDMyLDM0LDM3LDExNSwzNCwzMiw5NywxMTUsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDEwMCwxMDEsMTE1LDk5LDExNCwxMDUsMTEyLDExNiwxMTEsMTE0LDMyLDM3LDEwMCwwLDQ3LDEwMCwxMDEsMTE4LDQ3LDExMCwxMTcsMTA4LDEwOCwwLDM3LDExNSw0NywxMDEsMTE2LDEwNSwxMDgsMTEzLDExNSw5NSwzNywxMDgsMTA4LDEyMCwzNyw5OSwwLDgzLDgxLFxuNzYsNzMsODQsNjksOTUsODQsNzcsODAsNjgsNzMsODIsMCw4NCw3Nyw4MCw2OCw3Myw4MiwwLDQ3LDExOCw5NywxMTQsNDcsMTE2LDEwOSwxMTIsMCw0NywxMTcsMTE1LDExNCw0NywxMTYsMTA5LDExMiwwLDQ3LDExNiwxMDksMTEyLDAsNDYsMCwxMDIsMTE3LDEwOCwxMDgsOTUsMTAyLDExNSwxMjEsMTEwLDk5LDAsNDcsMTAwLDEwMSwxMTgsNDcsMTE3LDExNCw5NywxMTAsMTAwLDExMSwxMDksMCwxMDIsMTE1LDEyMSwxMTAsOTksMCwxMTIsMTE1LDExMSwxMTksMCwzNywxMTUsNDYsMTA4LDExMSw5OSwxMDcsMCw5OSw5NywxMTAsMTEwLDExMSwxMTYsMzIsMTAyLDExNSwxMTYsOTcsMTE2LDMyLDEwMCw5OCwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMzcsMTE1LDAsMTAyLDEwNSwxMDgsMTAxLDMyLDExNywxMTAsMTA4LDEwNSwxMTAsMTA3LDEwMSwxMDAsMzIsMTE5LDEwNCwxMDUsMTA4LDEwMSwzMiwxMTEsMTEyLDEwMSwxMTAsNTgsMzIsMzcsMTE1LDAsMTA5LDExNywxMDgsMTE2LFxuMTA1LDExMiwxMDgsMTAxLDMyLDEwOCwxMDUsMTEwLDEwNywxMTUsMzIsMTE2LDExMSwzMiwxMDIsMTA1LDEwOCwxMDEsNTgsMzIsMzcsMTE1LDAsMTAyLDEwNSwxMDgsMTAxLDMyLDExNCwxMDEsMTEwLDk3LDEwOSwxMDEsMTAwLDMyLDExOSwxMDQsMTA1LDEwOCwxMDEsMzIsMTExLDExMiwxMDEsMTEwLDU4LDMyLDM3LDExNSwwLDM3LDExNSw0NSwxMTUsMTA0LDEwOSwwLDExNCwxMDEsOTcsMTAwLDExMSwxMTAsMTA4LDEyMSw5NSwxMTUsMTA0LDEwOSwwLDEwOSwxMTEsMTAwLDEwMSwxMTEsMTAyLDAsMzcsMCwxMDAsMTAsMSwwLDAsMCwxMTUsMCw0LDUsMCwwLDEwMywwLDEsMywzMCwwLDEyMiwwLDQsNiwwLDAsMTEzLDAsNCw5LDAsMCw4MSwwLDQsMTAsMCwwLDExOSwwLDQsMTQsMCwwLDk5LDAsMCw4LDAsMCwxMTEsOCwwLDAsMCwyLDExNywxMCwwLDAsMCwwLDEyMCwxNiwwLDAsMTYsMSw4OCwxNiwwLDAsMCw0LDEwMiwwLDEsMSwwLDAsMTAxLDAsMSwyLDMwLDAsNjksMCwxLDIsXG4xNCwwLDcxLDAsMSwzLDE0LDAsMTA1LDEwLDEsMCwwLDAsMTEwLDAsMCw0LDAsMCwzNywwLDAsNywwLDAsMTEyLDE2LDAsMTMsMCwxLDg0LDAsMiwxMSwwLDAsODMsMCwyLDEyLDAsMCwxMTQsMTAsMywxNSwwLDAsMTE2LDEwNCwxMTUsMTE2LDExMCwxMDAsMTE0LDEwMCwwLDQ4LDQ5LDUwLDUxLDUyLDUzLDU0LDU1LDU2LDU3LDY1LDY2LDY3LDY4LDY5LDcwLDQ4LDQ5LDUwLDUxLDUyLDUzLDU0LDU1LDU2LDU3LDk3LDk4LDk5LDEwMCwxMDEsMTAyLDAsNDUsMTIwLDQ4LDAsODgsNDgsMCw3OCw5Nyw3OCwwLDczLDExMCwxMDIsMCw0MCw3OCw4NSw3Niw3Niw0MSwwLDExNSwxMTMsMTA4LDEwNSwxMTYsMTAxLDk1LDk5LDExMSwxMDksMTEyLDEwNSwxMDgsMTAxLDExMSwxMTIsMTE2LDEwNSwxMTEsMTEwLDk1LDExNywxMTUsMTAxLDEwMCwwLDExNSwxMTMsMTA4LDEwNSwxMTYsMTAxLDk1LDk5LDExMSwxMDksMTEyLDEwNSwxMDgsMTAxLDExMSwxMTIsMTE2LDEwNSwxMTEsMTEwLDk1LDEwMyxcbjEwMSwxMTYsMCwxMTcsMTEwLDEwOCwxMDUsMTA3LDEwMSwxMDgsMTIxLDAsMTA4LDEwNSwxMDcsMTAxLDEwOCwxMDUsMTA0LDExMSwxMTEsMTAwLDAsMTA4LDEwNSwxMDcsMTAxLDEwOCwxMjEsMCwxMDgsMTE2LDExNCwxMDUsMTA5LDAsMTE0LDExNiwxMTQsMTA1LDEwOSwwLDExNiwxMTQsMTA1LDEwOSwwLDExNiwxMjEsMTEyLDEwMSwxMTEsMTAyLDAsMTA4LDEwMSwxMTAsMTAzLDExNiwxMDQsMCwxMDUsMTEwLDExNSwxMTYsMTE0LDAsMTEyLDExNCwxMDUsMTEwLDExNiwxMDIsMCwxMTcsMTEwLDEwNSw5OSwxMTEsMTAwLDEwMSwwLDk5LDEwNCw5NywxMTQsMCw5Nyw5OCwxMTUsMCwxMTQsMTExLDExNywxMTAsMTAwLDAsMTE3LDExMiwxMTIsMTAxLDExNCwwLDEwOCwxMTEsMTE5LDEwMSwxMTQsMCwxMDQsMTAxLDEyMCwwLDEwNSwxMDIsMTEwLDExNywxMDgsMTA4LDAsMTE0LDk3LDExMCwxMDAsMTExLDEwOSwwLDExNCw5NywxMTAsMTAwLDExMSwxMDksOTgsMTA4LDExMSw5OCwwLFxuMTEwLDExNywxMDgsMTA4LDEwNSwxMDIsMCwxMTUsMTEzLDEwOCwxMDUsMTE2LDEwMSw5NSwxMTgsMTAxLDExNCwxMTUsMTA1LDExMSwxMTAsMCwxMTUsMTEzLDEwOCwxMDUsMTE2LDEwMSw5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLDk1LDEwNSwxMDAsMCwxMTUsMTEzLDEwOCwxMDUsMTE2LDEwMSw5NSwxMDgsMTExLDEwMywwLDExMywxMTcsMTExLDExNiwxMDEsMCwxMDgsOTcsMTE1LDExNiw5NSwxMDUsMTEwLDExNSwxMDEsMTE0LDExNiw5NSwxMTQsMTExLDExOSwxMDUsMTAwLDAsOTksMTA0LDk3LDExMCwxMDMsMTAxLDExNSwwLDExNiwxMTEsMTE2LDk3LDEwOCw5NSw5OSwxMDQsOTcsMTEwLDEwMywxMDEsMTE1LDAsMTE0LDEwMSwxMTIsMTA4LDk3LDk5LDEwMSwwLDEyMiwxMDEsMTE0LDExMSw5OCwxMDgsMTExLDk4LDAsMTE1LDExNyw5OCwxMTUsMTE2LDExNCwwLDExNSwxMTcsMTA5LDAsMTE2LDExMSwxMTYsOTcsMTA4LDAsOTcsMTE4LDEwMywwLDk5LDExMSwxMTcsMTEwLFxuMTE2LDAsMTAzLDExNCwxMTEsMTE3LDExMiw5NSw5OSwxMTEsMTEwLDk5LDk3LDExNiwwLDk5LDExMSw5NywxMDgsMTAxLDExNSw5OSwxMDEsMCwxMDUsMTEwLDExNiwxMDEsMTAzLDEwMSwxMTQsMzIsMTExLDExOCwxMDEsMTE0LDEwMiwxMDgsMTExLDExOSwwLDM3LDMzLDQ2LDUwLDQ4LDEwMSwwLDQ4LDQ5LDUwLDUxLDUyLDUzLDU0LDU1LDU2LDU3LDY1LDY2LDY3LDY4LDY5LDcwLDM3LDQ2LDQyLDEwMiwwLDExNiwxMDEsMTIwLDExNiwwLDk4LDEwOCwxMTEsOTgsMCwxLDEwNiwxMTcsMTA4LDEwNSw5NywxMTAsMTAwLDk3LDEyMSwwLDEwMCw5NywxMTYsMTAxLDAsMTE2LDEwNSwxMDksMTAxLDAsMTAwLDk3LDExNiwxMDEsMTE2LDEwNSwxMDksMTAxLDAsMTE1LDExNiwxMTQsMTAyLDExNiwxMDUsMTA5LDEwMSwwLDk5LDExNywxMTQsMTE0LDEwMSwxMTAsMTE2LDk1LDExNiwxMDUsMTA5LDEwMSwwLDk5LDExNywxMTQsMTE0LDEwMSwxMTAsMTE2LDk1LDExNiwxMDUsMTA5LDEwMSwxMTUsXG4xMTYsOTcsMTA5LDExMiwwLDk5LDExNywxMTQsMTE0LDEwMSwxMTAsMTE2LDk1LDEwMCw5NywxMTYsMTAxLDAsMzcsNDgsNTAsMTAwLDAsMzcsNDgsNTQsNDYsNTEsMTAyLDAsMzcsNDgsNTEsMTAwLDAsMzcsNDgsNTIsMTAwLDAsMTA4LDExMSw5OSw5NywxMDgsMTE2LDEwNSwxMDksMTAxLDAsMTE3LDExMCwxMDUsMTIwLDEwMSwxMTIsMTExLDk5LDEwNCwwLDExNywxMTYsOTksMCwxMTksMTAxLDEwMSwxMDcsMTAwLDk3LDEyMSwzMiwwLDExNSwxMTYsOTcsMTE0LDExNiwzMiwxMTEsMTAyLDMyLDAsMTA5LDExMSwxMTAsMTE2LDEwNCwwLDEyMSwxMDEsOTcsMTE0LDAsMTAwLDk3LDEyMSwwLDEwNCwxMTEsMTE3LDExNCwwLDEwOSwxMDUsMTEwLDExNywxMTYsMTAxLDAsMTE1LDEwMSw5OSwxMTEsMTEwLDEwMCwwLDUwLDQ4LDk5LDU4LDUwLDQ4LDEwMSwwLDUwLDQ4LDEwMSwwLDUwLDQ4LDk4LDU4LDUwLDQ4LDEwMSwwLDEwOCwxMTEsOTksOTcsMTA4LDMyLDExNiwxMDUsMTA5LDEwMSxcbjMyLDExNywxMTAsOTcsMTE4LDk3LDEwNSwxMDgsOTcsOTgsMTA4LDEwMSwwLDExMCwxMTEsMTE5LDAsNTIsNDgsMTAyLDQ1LDUwLDQ5LDk3LDQ1LDUwLDQ5LDEwMCwwLDM3LDQ4LDUyLDEwMCw0NSwzNyw0OCw1MCwxMDAsNDUsMzcsNDgsNTAsMTAwLDMyLDM3LDQ4LDUwLDEwMCw1OCwzNyw0OCw1MCwxMDAsNTgsMzcsNDgsNTAsMTAwLDAsMzcsNDgsNTAsMTAwLDU4LDM3LDQ4LDUwLDEwMCw1OCwzNyw0OCw1MCwxMDAsMCwzNyw0OCw1MiwxMDAsNDUsMzcsNDgsNTAsMTAwLDQ1LDM3LDQ4LDUwLDEwMCwwLDExNSwxMTMsMTA4LDEwNSwxMTYsMTAxLDk1LDExNCwxMDEsMTEwLDk3LDEwOSwxMDEsOTUsMTE2LDk3LDk4LDEwOCwxMDEsMCwxMTUsMTEzLDEwOCwxMDUsMTE2LDEwMSw5NSwxMTQsMTAxLDExMCw5NywxMDksMTAxLDk1LDExNiwxMTQsMTA1LDEwMywxMDMsMTAxLDExNCwwLDExNSwxMTMsMTA4LDEwNSwxMTYsMTAxLDk1LDExNCwxMDEsMTEwLDk3LDEwOSwxMDEsOTUsMTEyLDk3LFxuMTE0LDEwMSwxMTAsMTE2LDAsMzcsMTE1LDM3LDQ2LDQyLDExNSwzNCwzNywxMTksMzQsMCwzNyw0Niw0MiwxMTUsMzQsMzcsMTE5LDM0LDM3LDExNSwwLDEwOSwxMDUsMTE1LDExNywxMTUsMTAxLDAsNjcsNzksNzcsODAsNzMsNzYsNjksODIsNjEsOTksMTA4LDk3LDExMCwxMDMsNDUsNTEsNDYsNTUsNDYsNDgsMCw2OCw3Myw4Myw2NSw2Niw3Niw2OSw5NSw3Niw3MCw4MywwLDY5LDc4LDY1LDY2LDc2LDY5LDk1LDcwLDg0LDgzLDUxLDAsNjksNzgsNjUsNjYsNzYsNjksOTUsNzAsODQsODMsNTEsOTUsODAsNjUsODIsNjksNzgsODQsNzIsNjksODMsNzMsODMsMCw3Myw3OCw4NCw1NCw1Miw5NSw4NCw4OSw4MCw2OSwwLDc5LDc3LDczLDg0LDk1LDc2LDc5LDY1LDY4LDk1LDY5LDg4LDg0LDY5LDc4LDgzLDczLDc5LDc4LDAsODMsODksODMsODQsNjksNzcsOTUsNzcsNjUsNzYsNzYsNzksNjcsMCw4NCw3Miw4Miw2OSw2NSw2OCw4Myw2NSw3MCw2OSw2MSw0OCwwLDg0LDMzLDM0LDI1LFxuMTMsMSwyLDMsMTcsNzUsMjgsMTIsMTYsNCwxMSwyOSwxOCwzMCwzOSwxMDQsMTEwLDExMSwxMTIsMTEzLDk4LDMyLDUsNiwxNSwxOSwyMCwyMSwyNiw4LDIyLDcsNDAsMzYsMjMsMjQsOSwxMCwxNCwyNywzMSwzNywzNSwxMzEsMTMwLDEyNSwzOCw0Miw0Myw2MCw2MSw2Miw2Myw2Nyw3MSw3NCw3Nyw4OCw4OSw5MCw5MSw5Miw5Myw5NCw5NSw5Niw5Nyw5OSwxMDAsMTAxLDEwMiwxMDMsMTA1LDEwNiwxMDcsMTA4LDExNCwxMTUsMTE2LDEyMSwxMjIsMTIzLDEyNCwwLDczLDEwOCwxMDgsMTAxLDEwMyw5NywxMDgsMzIsOTgsMTIxLDExNiwxMDEsMzIsMTE1LDEwMSwxMTMsMTE3LDEwMSwxMTAsOTksMTAxLDAsNjgsMTExLDEwOSw5NywxMDUsMTEwLDMyLDEwMSwxMTQsMTE0LDExMSwxMTQsMCw4MiwxMDEsMTE1LDExNywxMDgsMTE2LDMyLDExMCwxMTEsMTE2LDMyLDExNCwxMDEsMTEyLDExNCwxMDEsMTE1LDEwMSwxMTAsMTE2LDk3LDk4LDEwOCwxMDEsMCw3OCwxMTEsMTE2LDMyLDk3LFxuMzIsMTE2LDExNiwxMjEsMCw4MCwxMDEsMTE0LDEwOSwxMDUsMTE1LDExNSwxMDUsMTExLDExMCwzMiwxMDAsMTAxLDExMCwxMDUsMTAxLDEwMCwwLDc5LDExMiwxMDEsMTE0LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMTAsMTExLDExNiwzMiwxMTIsMTAxLDExNCwxMDksMTA1LDExNiwxMTYsMTAxLDEwMCwwLDc4LDExMSwzMiwxMTUsMTE3LDk5LDEwNCwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTExLDExNCwzMiwxMDAsMTA1LDExNCwxMDEsOTksMTE2LDExMSwxMTQsMTIxLDAsNzgsMTExLDMyLDExNSwxMTcsOTksMTA0LDMyLDExMiwxMTQsMTExLDk5LDEwMSwxMTUsMTE1LDAsNzAsMTA1LDEwOCwxMDEsMzIsMTAxLDEyMCwxMDUsMTE1LDExNiwxMTUsMCw4Niw5NywxMDgsMTE3LDEwMSwzMiwxMTYsMTExLDExMSwzMiwxMDgsOTcsMTE0LDEwMywxMDEsMzIsMTAyLDExMSwxMTQsMzIsMTAwLDk3LDExNiw5NywzMiwxMTYsMTIxLDExMiwxMDEsMCw3OCwxMTEsMzIsMTE1LDExMiw5Nyw5OSxcbjEwMSwzMiwxMDgsMTAxLDEwMiwxMTYsMzIsMTExLDExMCwzMiwxMDAsMTAxLDExOCwxMDUsOTksMTAxLDAsNzksMTE3LDExNiwzMiwxMTEsMTAyLDMyLDEwOSwxMDEsMTA5LDExMSwxMTQsMTIxLDAsODIsMTAxLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMzIsOTgsMTE3LDExNSwxMjEsMCw3MywxMTAsMTE2LDEwMSwxMTQsMTE0LDExNywxMTIsMTE2LDEwMSwxMDAsMzIsMTE1LDEyMSwxMTUsMTE2LDEwMSwxMDksMzIsOTksOTcsMTA4LDEwOCwwLDgyLDEwMSwxMTUsMTExLDExNywxMTQsOTksMTAxLDMyLDExNiwxMDEsMTA5LDExMiwxMTEsMTE0LDk3LDExNCwxMDUsMTA4LDEyMSwzMiwxMTcsMTEwLDk3LDExOCw5NywxMDUsMTA4LDk3LDk4LDEwOCwxMDEsMCw3MywxMTAsMTE4LDk3LDEwOCwxMDUsMTAwLDMyLDExNSwxMDEsMTAxLDEwNywwLDY3LDExNCwxMTEsMTE1LDExNSw0NSwxMDAsMTAxLDExOCwxMDUsOTksMTAxLDMyLDEwOCwxMDUsMTEwLDEwNywwLDgyLDEwMSw5NywxMDAsNDUsXG4xMTEsMTEwLDEwOCwxMjEsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDExNSwxMjEsMTE1LDExNiwxMDEsMTA5LDAsNjgsMTA1LDExNCwxMDEsOTksMTE2LDExMSwxMTQsMTIxLDMyLDExMCwxMTEsMTE2LDMyLDEwMSwxMDksMTEyLDExNiwxMjEsMCw2NywxMTEsMTEwLDExMCwxMDEsOTksMTE2LDEwNSwxMTEsMTEwLDMyLDExNCwxMDEsMTE1LDEwMSwxMTYsMzIsOTgsMTIxLDMyLDExMiwxMDEsMTAxLDExNCwwLDc5LDExMiwxMDEsMTE0LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMTYsMTA1LDEwOSwxMDEsMTAwLDMyLDExMSwxMTcsMTE2LDAsNjcsMTExLDExMCwxMTAsMTAxLDk5LDExNiwxMDUsMTExLDExMCwzMiwxMTQsMTAxLDEwMiwxMTcsMTE1LDEwMSwxMDAsMCw3MiwxMTEsMTE1LDExNiwzMiwxMDUsMTE1LDMyLDEwMCwxMTEsMTE5LDExMCwwLDcyLDExMSwxMTUsMTE2LDMyLDEwNSwxMTUsMzIsMTE3LDExMCwxMTQsMTAxLDk3LDk5LDEwNCw5Nyw5OCwxMDgsMTAxLDAsNjUsMTAwLDEwMCxcbjExNCwxMDEsMTE1LDExNSwzMiwxMDUsMTEwLDMyLDExNywxMTUsMTAxLDAsNjYsMTE0LDExMSwxMDcsMTAxLDExMCwzMiwxMTIsMTA1LDExMiwxMDEsMCw3Myw0Nyw3OSwzMiwxMDEsMTE0LDExNCwxMTEsMTE0LDAsNzgsMTExLDMyLDExNSwxMTcsOTksMTA0LDMyLDEwMCwxMDEsMTE4LDEwNSw5OSwxMDEsMzIsMTExLDExNCwzMiw5NywxMDAsMTAwLDExNCwxMDEsMTE1LDExNSwwLDY2LDEwOCwxMTEsOTksMTA3LDMyLDEwMCwxMDEsMTE4LDEwNSw5OSwxMDEsMzIsMTE0LDEwMSwxMTMsMTE3LDEwNSwxMTQsMTAxLDEwMCwwLDc4LDExMSwzMiwxMTUsMTE3LDk5LDEwNCwzMiwxMDAsMTAxLDExOCwxMDUsOTksMTAxLDAsNzgsMTExLDExNiwzMiw5NywzMiwxMDAsMTA1LDExNCwxMDEsOTksMTE2LDExMSwxMTQsMTIxLDAsNzMsMTE1LDMyLDk3LDMyLDEwMCwxMDUsMTE0LDEwMSw5OSwxMTYsMTExLDExNCwxMjEsMCw4NCwxMDEsMTIwLDExNiwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsOTgsMTE3LFxuMTE1LDEyMSwwLDY5LDEyMCwxMDEsOTksMzIsMTAyLDExMSwxMTQsMTA5LDk3LDExNiwzMiwxMDEsMTE0LDExNCwxMTEsMTE0LDAsNzMsMTEwLDExOCw5NywxMDgsMTA1LDEwMCwzMiw5NywxMTQsMTAzLDExNywxMDksMTAxLDExMCwxMTYsMCw2NSwxMTQsMTAzLDExNywxMDksMTAxLDExMCwxMTYsMzIsMTA4LDEwNSwxMTUsMTE2LDMyLDExNiwxMTEsMTExLDMyLDEwOCwxMTEsMTEwLDEwMywwLDgzLDEyMSwxMDksOTgsMTExLDEwOCwxMDUsOTksMzIsMTA4LDEwNSwxMTAsMTA3LDMyLDEwOCwxMTEsMTExLDExMiwwLDcwLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDMyLDExNiwxMTEsMTExLDMyLDEwOCwxMTEsMTEwLDEwMywwLDg0LDExMSwxMTEsMzIsMTA5LDk3LDExMCwxMjEsMzIsMTExLDExMiwxMDEsMTEwLDMyLDEwMiwxMDUsMTA4LDEwMSwxMTUsMzIsMTA1LDExMCwzMiwxMTUsMTIxLDExNSwxMTYsMTAxLDEwOSwwLDc4LDExMSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTAwLFxuMTAxLDExNSw5OSwxMTQsMTA1LDExMiwxMTYsMTExLDExNCwxMTUsMzIsOTcsMTE4LDk3LDEwNSwxMDgsOTcsOTgsMTA4LDEwMSwwLDY2LDk3LDEwMCwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTAwLDEwMSwxMTUsOTksMTE0LDEwNSwxMTIsMTE2LDExMSwxMTQsMCw3OCwxMTEsMzIsOTksMTA0LDEwNSwxMDgsMTAwLDMyLDExMiwxMTQsMTExLDk5LDEwMSwxMTUsMTE1LDAsNjYsOTcsMTAwLDMyLDk3LDEwMCwxMDAsMTE0LDEwMSwxMTUsMTE1LDAsNzAsMTA1LDEwOCwxMDEsMzIsMTE2LDExMSwxMTEsMzIsMTA4LDk3LDExNCwxMDMsMTAxLDAsODQsMTExLDExMSwzMiwxMDksOTcsMTEwLDEyMSwzMiwxMDgsMTA1LDExMCwxMDcsMTE1LDAsNzgsMTExLDMyLDEwOCwxMTEsOTksMTA3LDExNSwzMiw5NywxMTgsOTcsMTA1LDEwOCw5Nyw5OCwxMDgsMTAxLDAsODIsMTAxLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMzIsMTAwLDEwMSw5NywxMDAsMTA4LDExMSw5OSwxMDcsMzIsMTE5LDExMSwxMTcsXG4xMDgsMTAwLDMyLDExMSw5OSw5OSwxMTcsMTE0LDAsODMsMTE2LDk3LDExNiwxMDEsMzIsMTEwLDExMSwxMTYsMzIsMTE0LDEwMSw5OSwxMTEsMTE4LDEwMSwxMTQsOTcsOTgsMTA4LDEwMSwwLDgwLDExNCwxMDEsMTE4LDEwNSwxMTEsMTE3LDExNSwzMiwxMTEsMTE5LDExMCwxMDEsMTE0LDMyLDEwMCwxMDUsMTAxLDEwMCwwLDc5LDExMiwxMDEsMTE0LDk3LDExNiwxMDUsMTExLDExMCwzMiw5OSw5NywxMTAsOTksMTAxLDEwOCwxMDEsMTAwLDAsNzAsMTE3LDExMCw5OSwxMTYsMTA1LDExMSwxMTAsMzIsMTEwLDExMSwxMTYsMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsMTAxLDEwMCwwLDc4LDExMSwzMiwxMDksMTAxLDExNSwxMTUsOTcsMTAzLDEwMSwzMiwxMTEsMTAyLDMyLDEwMCwxMDEsMTE1LDEwNSwxMTQsMTAxLDEwMCwzMiwxMTYsMTIxLDExMiwxMDEsMCw3MywxMDAsMTAxLDExMCwxMTYsMTA1LDEwMiwxMDUsMTAxLDExNCwzMiwxMTQsMTAxLDEwOSxcbjExMSwxMTgsMTAxLDEwMCwwLDY4LDEwMSwxMTgsMTA1LDk5LDEwMSwzMiwxMTAsMTExLDExNiwzMiw5NywzMiwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDAsNzgsMTExLDMyLDEwMCw5NywxMTYsOTcsMzIsOTcsMTE4LDk3LDEwNSwxMDgsOTcsOTgsMTA4LDEwMSwwLDY4LDEwMSwxMTgsMTA1LDk5LDEwMSwzMiwxMTYsMTA1LDEwOSwxMDEsMTExLDExNywxMTYsMCw3OSwxMTcsMTE2LDMyLDExMSwxMDIsMzIsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSwxMTUsMzIsMTE0LDEwMSwxMTUsMTExLDExNywxMTQsOTksMTAxLDExNSwwLDc2LDEwNSwxMTAsMTA3LDMyLDEwNCw5NywxMTUsMzIsOTgsMTAxLDEwMSwxMTAsMzIsMTE1LDEwMSwxMTgsMTAxLDExNCwxMDEsMTAwLDAsODAsMTE0LDExMSwxMTYsMTExLDk5LDExMSwxMDgsMzIsMTAxLDExNCwxMTQsMTExLDExNCwwLDY2LDk3LDEwMCwzMiwxMDksMTAxLDExNSwxMTUsOTcsMTAzLDEwMSwwLDcwLDEwNSwxMDgsMTAxLDMyLDEwMCwxMDEsMTE1LFxuOTksMTE0LDEwNSwxMTIsMTE2LDExMSwxMTQsMzIsMTA1LDExMCwzMiw5OCw5NywxMDAsMzIsMTE1LDExNiw5NywxMTYsMTAxLDAsNzgsMTExLDExNiwzMiw5NywzMiwxMTUsMTExLDk5LDEwNywxMDEsMTE2LDAsNjgsMTAxLDExNSwxMTYsMTA1LDExMCw5NywxMTYsMTA1LDExMSwxMTAsMzIsOTcsMTAwLDEwMCwxMTQsMTAxLDExNSwxMTUsMzIsMTE0LDEwMSwxMTMsMTE3LDEwNSwxMTQsMTAxLDEwMCwwLDc3LDEwMSwxMTUsMTE1LDk3LDEwMywxMDEsMzIsMTE2LDExMSwxMTEsMzIsMTA4LDk3LDExNCwxMDMsMTAxLDAsODAsMTE0LDExMSwxMTYsMTExLDk5LDExMSwxMDgsMzIsMTE5LDExNCwxMTEsMTEwLDEwMywzMiwxMTYsMTIxLDExMiwxMDEsMzIsMTAyLDExMSwxMTQsMzIsMTE1LDExMSw5OSwxMDcsMTAxLDExNiwwLDgwLDExNCwxMTEsMTE2LDExMSw5OSwxMTEsMTA4LDMyLDExMCwxMTEsMTE2LDMyLDk3LDExOCw5NywxMDUsMTA4LDk3LDk4LDEwOCwxMDEsMCw4MCwxMTQsMTExLFxuMTE2LDExMSw5OSwxMTEsMTA4LDMyLDExMCwxMTEsMTE2LDMyLDExNSwxMTcsMTEyLDExMiwxMTEsMTE0LDExNiwxMDEsMTAwLDAsODMsMTExLDk5LDEwNywxMDEsMTE2LDMyLDExNiwxMjEsMTEyLDEwMSwzMiwxMTAsMTExLDExNiwzMiwxMTUsMTE3LDExMiwxMTIsMTExLDExNCwxMTYsMTAxLDEwMCwwLDc4LDExMSwxMTYsMzIsMTE1LDExNywxMTIsMTEyLDExMSwxMTQsMTE2LDEwMSwxMDAsMCw4MCwxMTQsMTExLDExNiwxMTEsOTksMTExLDEwOCwzMiwxMDIsOTcsMTA5LDEwNSwxMDgsMTIxLDMyLDExMCwxMTEsMTE2LDMyLDExNSwxMTcsMTEyLDExMiwxMTEsMTE0LDExNiwxMDEsMTAwLDAsNjUsMTAwLDEwMCwxMTQsMTAxLDExNSwxMTUsMzIsMTAyLDk3LDEwOSwxMDUsMTA4LDEyMSwzMiwxMTAsMTExLDExNiwzMiwxMTUsMTE3LDExMiwxMTIsMTExLDExNCwxMTYsMTAxLDEwMCwzMiw5OCwxMjEsMzIsMTEyLDExNCwxMTEsMTE2LDExMSw5OSwxMTEsMTA4LDAsNjUsMTAwLDEwMCwxMTQsXG4xMDEsMTE1LDExNSwzMiwxMTAsMTExLDExNiwzMiw5NywxMTgsOTcsMTA1LDEwOCw5Nyw5OCwxMDgsMTAxLDAsNzgsMTAxLDExNiwxMTksMTExLDExNCwxMDcsMzIsMTA1LDExNSwzMiwxMDAsMTExLDExOSwxMTAsMCw3OCwxMDEsMTE2LDExOSwxMTEsMTE0LDEwNywzMiwxMTcsMTEwLDExNCwxMDEsOTcsOTksMTA0LDk3LDk4LDEwOCwxMDEsMCw2NywxMTEsMTEwLDExMCwxMDEsOTksMTE2LDEwNSwxMTEsMTEwLDMyLDExNCwxMDEsMTE1LDEwMSwxMTYsMzIsOTgsMTIxLDMyLDExMCwxMDEsMTE2LDExOSwxMTEsMTE0LDEwNywwLDY3LDExMSwxMTAsMTEwLDEwMSw5OSwxMTYsMTA1LDExMSwxMTAsMzIsOTcsOTgsMTExLDExNCwxMTYsMTAxLDEwMCwwLDc4LDExMSwzMiw5OCwxMTcsMTAyLDEwMiwxMDEsMTE0LDMyLDExNSwxMTIsOTcsOTksMTAxLDMyLDk3LDExOCw5NywxMDUsMTA4LDk3LDk4LDEwOCwxMDEsMCw4MywxMTEsOTksMTA3LDEwMSwxMTYsMzIsMTA1LDExNSwzMiw5OSwxMTEsXG4xMTAsMTEwLDEwMSw5OSwxMTYsMTAxLDEwMCwwLDgzLDExMSw5OSwxMDcsMTAxLDExNiwzMiwxMTAsMTExLDExNiwzMiw5OSwxMTEsMTEwLDExMCwxMDEsOTksMTE2LDEwMSwxMDAsMCw2Nyw5NywxMTAsMTEwLDExMSwxMTYsMzIsMTE1LDEwMSwxMTAsMTAwLDMyLDk3LDEwMiwxMTYsMTAxLDExNCwzMiwxMTUsMTExLDk5LDEwNywxMDEsMTE2LDMyLDExNSwxMDQsMTE3LDExNiwxMDAsMTExLDExOSwxMTAsMCw3OSwxMTIsMTAxLDExNCw5NywxMTYsMTA1LDExMSwxMTAsMzIsOTcsMTA4LDExNCwxMDEsOTcsMTAwLDEyMSwzMiwxMDUsMTEwLDMyLDExMiwxMTQsMTExLDEwMywxMTQsMTAxLDExNSwxMTUsMCw3OSwxMTIsMTAxLDExNCw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTA1LDExMCwzMiwxMTIsMTE0LDExMSwxMDMsMTE0LDEwMSwxMTUsMTE1LDAsODMsMTE2LDk3LDEwOCwxMDEsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDEwNCw5NywxMTAsMTAwLDEwOCwxMDEsMCw4MiwxMDEsMTA5LDExMSxcbjExNiwxMDEsMzIsNzMsNDcsNzksMzIsMTAxLDExNCwxMTQsMTExLDExNCwwLDgxLDExNywxMTEsMTE2LDk3LDMyLDEwMSwxMjAsOTksMTAxLDEwMSwxMDAsMTAxLDEwMCwwLDc4LDExMSwzMiwxMDksMTAxLDEwMCwxMDUsMTE3LDEwOSwzMiwxMDIsMTExLDExNywxMTAsMTAwLDAsODcsMTE0LDExMSwxMTAsMTAzLDMyLDEwOSwxMDEsMTAwLDEwNSwxMTcsMTA5LDMyLDExNiwxMjEsMTEyLDEwMSwwLDc4LDExMSwzMiwxMDEsMTE0LDExNCwxMTEsMTE0LDMyLDEwNSwxMTAsMTAyLDExMSwxMTQsMTA5LDk3LDExNiwxMDUsMTExLDExMCwwLDAsNDcsMTEyLDExNCwxMTEsOTksNDcsMTE1LDEwMSwxMDgsMTAyLDQ3LDEwMiwxMDAsNDddLFwiaThcIiw0LGwuYWErNDA5NjApO3ZhciBDYj1sLnRhKHooMTIsXCJpOFwiLDIpLDgpO2Fzc2VydCgwPT1DYiU4KTtmLl9pNjRTdWJ0cmFjdD1EYjtmLl9pNjRBZGQ9RWI7XG52YXIgRT17SDoxLEo6MixLZDozLEdjOjQsTzo1LEthOjYsJGI6NyxkZDo4LEw6OSxuYzoxMCxHYToxMSxVZDoxMSxJYToxMixZOjEzLHpjOjE0LHJkOjE1LFo6MTYsSGE6MTcsVmQ6MTgsaGE6MTksaWE6MjAsUzoyMSxwOjIyLFpjOjIzLGViOjI0LCQ6MjUsUmQ6MjYsQWM6MjcsbmQ6MjgsamE6MjksSGQ6MzAsU2M6MzEsQmQ6MzIsd2M6MzMsZmI6MzQsamQ6NDIsRGM6NDMsb2M6NDQsSmM6NDUsS2M6NDYsTGM6NDcsUmM6NDgsU2Q6NDksYmQ6NTAsSWM6NTEsdGM6MzUsZWQ6MzcsZmM6NTIsaWM6NTMsV2Q6NTQsJGM6NTUsamM6NTYsa2M6NTcsdWM6MzUsbGM6NTkscGQ6NjAsY2Q6NjEsT2Q6NjIsb2Q6NjMsa2Q6NjQsbGQ6NjUsR2Q6NjYsZ2Q6NjcsY2M6NjgsTGQ6NjkscGM6NzAsQ2Q6NzEsVWM6NzIseGM6NzMsaGM6NzQsd2Q6NzYsZ2M6NzcsRmQ6NzgsTWM6NzksTmM6ODAsUWM6ODEsUGM6ODIsT2M6ODMscWQ6MzgsSmE6MzksVmM6MzYsc2E6NDAseGQ6OTUsQWQ6OTYsc2M6MTA0LGFkOjEwNSxcbmRjOjk3LEVkOjkxLHVkOjg4LG1kOjkyLElkOjEwOCxyYzoxMTEsYWM6OTgscWM6MTAzLFljOjEwMSxXYzoxMDAsUGQ6MTEwLEJjOjExMixDYzoxMTMsRmM6MTE1LGVjOjExNCx2Yzo4OSxUYzo5MCxEZDo5MyxKZDo5NCxiYzo5OSxYYzoxMDIsSGM6MTA2LHNkOjEwNyxRZDoxMDksVGQ6ODcseWM6MTIyLE1kOjExNix2ZDo5NSxoZDoxMjMsRWM6ODQseWQ6NzUsbWM6MTI1LHRkOjEzMSx6ZDoxMzAsTmQ6ODZ9LEZiPXswOlwiU3VjY2Vzc1wiLDE6XCJOb3Qgc3VwZXItdXNlclwiLDI6XCJObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5XCIsMzpcIk5vIHN1Y2ggcHJvY2Vzc1wiLDQ6XCJJbnRlcnJ1cHRlZCBzeXN0ZW0gY2FsbFwiLDU6XCJJL08gZXJyb3JcIiw2OlwiTm8gc3VjaCBkZXZpY2Ugb3IgYWRkcmVzc1wiLDc6XCJBcmcgbGlzdCB0b28gbG9uZ1wiLDg6XCJFeGVjIGZvcm1hdCBlcnJvclwiLDk6XCJCYWQgZmlsZSBudW1iZXJcIiwxMDpcIk5vIGNoaWxkcmVuXCIsMTE6XCJObyBtb3JlIHByb2Nlc3Nlc1wiLDEyOlwiTm90IGVub3VnaCBjb3JlXCIsXG4xMzpcIlBlcm1pc3Npb24gZGVuaWVkXCIsMTQ6XCJCYWQgYWRkcmVzc1wiLDE1OlwiQmxvY2sgZGV2aWNlIHJlcXVpcmVkXCIsMTY6XCJNb3VudCBkZXZpY2UgYnVzeVwiLDE3OlwiRmlsZSBleGlzdHNcIiwxODpcIkNyb3NzLWRldmljZSBsaW5rXCIsMTk6XCJObyBzdWNoIGRldmljZVwiLDIwOlwiTm90IGEgZGlyZWN0b3J5XCIsMjE6XCJJcyBhIGRpcmVjdG9yeVwiLDIyOlwiSW52YWxpZCBhcmd1bWVudFwiLDIzOlwiVG9vIG1hbnkgb3BlbiBmaWxlcyBpbiBzeXN0ZW1cIiwyNDpcIlRvbyBtYW55IG9wZW4gZmlsZXNcIiwyNTpcIk5vdCBhIHR5cGV3cml0ZXJcIiwyNjpcIlRleHQgZmlsZSBidXN5XCIsMjc6XCJGaWxlIHRvbyBsYXJnZVwiLDI4OlwiTm8gc3BhY2UgbGVmdCBvbiBkZXZpY2VcIiwyOTpcIklsbGVnYWwgc2Vla1wiLDMwOlwiUmVhZCBvbmx5IGZpbGUgc3lzdGVtXCIsMzE6XCJUb28gbWFueSBsaW5rc1wiLDMyOlwiQnJva2VuIHBpcGVcIiwzMzpcIk1hdGggYXJnIG91dCBvZiBkb21haW4gb2YgZnVuY1wiLDM0OlwiTWF0aCByZXN1bHQgbm90IHJlcHJlc2VudGFibGVcIixcbjM1OlwiRmlsZSBsb2NraW5nIGRlYWRsb2NrIGVycm9yXCIsMzY6XCJGaWxlIG9yIHBhdGggbmFtZSB0b28gbG9uZ1wiLDM3OlwiTm8gcmVjb3JkIGxvY2tzIGF2YWlsYWJsZVwiLDM4OlwiRnVuY3Rpb24gbm90IGltcGxlbWVudGVkXCIsMzk6XCJEaXJlY3Rvcnkgbm90IGVtcHR5XCIsNDA6XCJUb28gbWFueSBzeW1ib2xpYyBsaW5rc1wiLDQyOlwiTm8gbWVzc2FnZSBvZiBkZXNpcmVkIHR5cGVcIiw0MzpcIklkZW50aWZpZXIgcmVtb3ZlZFwiLDQ0OlwiQ2hhbm5lbCBudW1iZXIgb3V0IG9mIHJhbmdlXCIsNDU6XCJMZXZlbCAyIG5vdCBzeW5jaHJvbml6ZWRcIiw0NjpcIkxldmVsIDMgaGFsdGVkXCIsNDc6XCJMZXZlbCAzIHJlc2V0XCIsNDg6XCJMaW5rIG51bWJlciBvdXQgb2YgcmFuZ2VcIiw0OTpcIlByb3RvY29sIGRyaXZlciBub3QgYXR0YWNoZWRcIiw1MDpcIk5vIENTSSBzdHJ1Y3R1cmUgYXZhaWxhYmxlXCIsNTE6XCJMZXZlbCAyIGhhbHRlZFwiLDUyOlwiSW52YWxpZCBleGNoYW5nZVwiLDUzOlwiSW52YWxpZCByZXF1ZXN0IGRlc2NyaXB0b3JcIixcbjU0OlwiRXhjaGFuZ2UgZnVsbFwiLDU1OlwiTm8gYW5vZGVcIiw1NjpcIkludmFsaWQgcmVxdWVzdCBjb2RlXCIsNTc6XCJJbnZhbGlkIHNsb3RcIiw1OTpcIkJhZCBmb250IGZpbGUgZm10XCIsNjA6XCJEZXZpY2Ugbm90IGEgc3RyZWFtXCIsNjE6XCJObyBkYXRhIChmb3Igbm8gZGVsYXkgaW8pXCIsNjI6XCJUaW1lciBleHBpcmVkXCIsNjM6XCJPdXQgb2Ygc3RyZWFtcyByZXNvdXJjZXNcIiw2NDpcIk1hY2hpbmUgaXMgbm90IG9uIHRoZSBuZXR3b3JrXCIsNjU6XCJQYWNrYWdlIG5vdCBpbnN0YWxsZWRcIiw2NjpcIlRoZSBvYmplY3QgaXMgcmVtb3RlXCIsNjc6XCJUaGUgbGluayBoYXMgYmVlbiBzZXZlcmVkXCIsNjg6XCJBZHZlcnRpc2UgZXJyb3JcIiw2OTpcIlNybW91bnQgZXJyb3JcIiw3MDpcIkNvbW11bmljYXRpb24gZXJyb3Igb24gc2VuZFwiLDcxOlwiUHJvdG9jb2wgZXJyb3JcIiw3MjpcIk11bHRpaG9wIGF0dGVtcHRlZFwiLDczOlwiQ3Jvc3MgbW91bnQgcG9pbnQgKG5vdCByZWFsbHkgZXJyb3IpXCIsNzQ6XCJUcnlpbmcgdG8gcmVhZCB1bnJlYWRhYmxlIG1lc3NhZ2VcIixcbjc1OlwiVmFsdWUgdG9vIGxhcmdlIGZvciBkZWZpbmVkIGRhdGEgdHlwZVwiLDc2OlwiR2l2ZW4gbG9nLiBuYW1lIG5vdCB1bmlxdWVcIiw3NzpcImYuZC4gaW52YWxpZCBmb3IgdGhpcyBvcGVyYXRpb25cIiw3ODpcIlJlbW90ZSBhZGRyZXNzIGNoYW5nZWRcIiw3OTpcIkNhbiAgIGFjY2VzcyBhIG5lZWRlZCBzaGFyZWQgbGliXCIsODA6XCJBY2Nlc3NpbmcgYSBjb3JydXB0ZWQgc2hhcmVkIGxpYlwiLDgxOlwiLmxpYiBzZWN0aW9uIGluIGEub3V0IGNvcnJ1cHRlZFwiLDgyOlwiQXR0ZW1wdGluZyB0byBsaW5rIGluIHRvbyBtYW55IGxpYnNcIiw4MzpcIkF0dGVtcHRpbmcgdG8gZXhlYyBhIHNoYXJlZCBsaWJyYXJ5XCIsODQ6XCJJbGxlZ2FsIGJ5dGUgc2VxdWVuY2VcIiw4NjpcIlN0cmVhbXMgcGlwZSBlcnJvclwiLDg3OlwiVG9vIG1hbnkgdXNlcnNcIiw4ODpcIlNvY2tldCBvcGVyYXRpb24gb24gbm9uLXNvY2tldFwiLDg5OlwiRGVzdGluYXRpb24gYWRkcmVzcyByZXF1aXJlZFwiLDkwOlwiTWVzc2FnZSB0b28gbG9uZ1wiLDkxOlwiUHJvdG9jb2wgd3JvbmcgdHlwZSBmb3Igc29ja2V0XCIsXG45MjpcIlByb3RvY29sIG5vdCBhdmFpbGFibGVcIiw5MzpcIlVua25vd24gcHJvdG9jb2xcIiw5NDpcIlNvY2tldCB0eXBlIG5vdCBzdXBwb3J0ZWRcIiw5NTpcIk5vdCBzdXBwb3J0ZWRcIiw5NjpcIlByb3RvY29sIGZhbWlseSBub3Qgc3VwcG9ydGVkXCIsOTc6XCJBZGRyZXNzIGZhbWlseSBub3Qgc3VwcG9ydGVkIGJ5IHByb3RvY29sIGZhbWlseVwiLDk4OlwiQWRkcmVzcyBhbHJlYWR5IGluIHVzZVwiLDk5OlwiQWRkcmVzcyBub3QgYXZhaWxhYmxlXCIsMTAwOlwiTmV0d29yayBpbnRlcmZhY2UgaXMgbm90IGNvbmZpZ3VyZWRcIiwxMDE6XCJOZXR3b3JrIGlzIHVucmVhY2hhYmxlXCIsMTAyOlwiQ29ubmVjdGlvbiByZXNldCBieSBuZXR3b3JrXCIsMTAzOlwiQ29ubmVjdGlvbiBhYm9ydGVkXCIsMTA0OlwiQ29ubmVjdGlvbiByZXNldCBieSBwZWVyXCIsMTA1OlwiTm8gYnVmZmVyIHNwYWNlIGF2YWlsYWJsZVwiLDEwNjpcIlNvY2tldCBpcyBhbHJlYWR5IGNvbm5lY3RlZFwiLDEwNzpcIlNvY2tldCBpcyBub3QgY29ubmVjdGVkXCIsMTA4OlwiQ2FuJ3Qgc2VuZCBhZnRlciBzb2NrZXQgc2h1dGRvd25cIixcbjEwOTpcIlRvbyBtYW55IHJlZmVyZW5jZXNcIiwxMTA6XCJDb25uZWN0aW9uIHRpbWVkIG91dFwiLDExMTpcIkNvbm5lY3Rpb24gcmVmdXNlZFwiLDExMjpcIkhvc3QgaXMgZG93blwiLDExMzpcIkhvc3QgaXMgdW5yZWFjaGFibGVcIiwxMTQ6XCJTb2NrZXQgYWxyZWFkeSBjb25uZWN0ZWRcIiwxMTU6XCJDb25uZWN0aW9uIGFscmVhZHkgaW4gcHJvZ3Jlc3NcIiwxMTY6XCJTdGFsZSBmaWxlIGhhbmRsZVwiLDEyMjpcIlF1b3RhIGV4Y2VlZGVkXCIsMTIzOlwiTm8gbWVkaXVtIChpbiB0YXBlIGRyaXZlKVwiLDEyNTpcIk9wZXJhdGlvbiBjYW5jZWxlZFwiLDEzMDpcIlByZXZpb3VzIG93bmVyIGRpZWRcIiwxMzE6XCJTdGF0ZSBub3QgcmVjb3ZlcmFibGVcIn07ZnVuY3Rpb24gR2IoYSl7Zi5fX19lcnJub19sb2NhdGlvbiYmKHlbZi5fX19lcnJub19sb2NhdGlvbigpPj4yXT1hKTtyZXR1cm4gYX1cbmZ1bmN0aW9uIEhiKGEsYil7Zm9yKHZhciBjPTAsZD1hLmxlbmd0aC0xOzA8PWQ7ZC0tKXt2YXIgZT1hW2RdO1wiLlwiPT09ZT9hLnNwbGljZShkLDEpOlwiLi5cIj09PWU/KGEuc3BsaWNlKGQsMSksYysrKTpjJiYoYS5zcGxpY2UoZCwxKSxjLS0pfWlmKGIpZm9yKDtjLS07YylhLnVuc2hpZnQoXCIuLlwiKTtyZXR1cm4gYX1mdW5jdGlvbiBJYihhKXt2YXIgYj1cIi9cIj09PWEuY2hhckF0KDApLGM9XCIvXCI9PT1hLnN1YnN0cigtMSk7KGE9SGIoYS5zcGxpdChcIi9cIikuZmlsdGVyKGZ1bmN0aW9uKGEpe3JldHVybiEhYX0pLCFiKS5qb2luKFwiL1wiKSl8fGJ8fChhPVwiLlwiKTthJiZjJiYoYSs9XCIvXCIpO3JldHVybihiP1wiL1wiOlwiXCIpK2F9XG5mdW5jdGlvbiBKYihhKXt2YXIgYj0vXihcXC8/fCkoW1xcc1xcU10qPykoKD86XFwuezEsMn18W15cXC9dKz98KShcXC5bXi5cXC9dKnwpKSg/OltcXC9dKikkLy5leGVjKGEpLnNsaWNlKDEpO2E9YlswXTtiPWJbMV07aWYoIWEmJiFiKXJldHVyblwiLlwiO2ImJihiPWIuc3Vic3RyKDAsYi5sZW5ndGgtMSkpO3JldHVybiBhK2J9ZnVuY3Rpb24gS2IoYSl7aWYoXCIvXCI9PT1hKXJldHVyblwiL1wiO3ZhciBiPWEubGFzdEluZGV4T2YoXCIvXCIpO3JldHVybi0xPT09Yj9hOmEuc3Vic3RyKGIrMSl9ZnVuY3Rpb24gTGIoKXt2YXIgYT1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMCk7cmV0dXJuIEliKGEuam9pbihcIi9cIikpfWZ1bmN0aW9uIEYoYSxiKXtyZXR1cm4gSWIoYStcIi9cIitiKX1cbmZ1bmN0aW9uIE1iKCl7Zm9yKHZhciBhPVwiXCIsYj0hMSxjPWFyZ3VtZW50cy5sZW5ndGgtMTstMTw9YyYmIWI7Yy0tKXtiPTA8PWM/YXJndW1lbnRzW2NdOlwiL1wiO2lmKFwic3RyaW5nXCIhPT10eXBlb2YgYil0aHJvdyBuZXcgVHlwZUVycm9yKFwiQXJndW1lbnRzIHRvIHBhdGgucmVzb2x2ZSBtdXN0IGJlIHN0cmluZ3NcIik7aWYoIWIpcmV0dXJuXCJcIjthPWIrXCIvXCIrYTtiPVwiL1wiPT09Yi5jaGFyQXQoMCl9YT1IYihhLnNwbGl0KFwiL1wiKS5maWx0ZXIoZnVuY3Rpb24oYSl7cmV0dXJuISFhfSksIWIpLmpvaW4oXCIvXCIpO3JldHVybihiP1wiL1wiOlwiXCIpK2F8fFwiLlwifXZhciBOYj1bXTtmdW5jdGlvbiBPYihhLGIpe05iW2FdPXtpbnB1dDpbXSxvdXRwdXQ6W10sVzpifTtQYihhLFFiKX1cbnZhciBRYj17b3BlbjpmdW5jdGlvbihhKXt2YXIgYj1OYlthLmcucmRldl07aWYoIWIpdGhyb3cgbmV3IEcoRS5oYSk7YS50dHk9YjthLnNlZWthYmxlPSExfSxjbG9zZTpmdW5jdGlvbihhKXthLnR0eS5XLmZsdXNoKGEudHR5KX0sZmx1c2g6ZnVuY3Rpb24oYSl7YS50dHkuVy5mbHVzaChhLnR0eSl9LHJlYWQ6ZnVuY3Rpb24oYSxiLGMsZCl7aWYoIWEudHR5fHwhYS50dHkuVy5ZYSl0aHJvdyBuZXcgRyhFLkthKTtmb3IodmFyIGU9MCxnPTA7ZzxkO2crKyl7dmFyIGg7dHJ5e2g9YS50dHkuVy5ZYShhLnR0eSl9Y2F0Y2gobSl7dGhyb3cgbmV3IEcoRS5PKTt9aWYodm9pZCAwPT09aCYmMD09PWUpdGhyb3cgbmV3IEcoRS5HYSk7aWYobnVsbD09PWh8fHZvaWQgMD09PWgpYnJlYWs7ZSsrO2JbYytnXT1ofWUmJihhLmcudGltZXN0YW1wPURhdGUubm93KCkpO3JldHVybiBlfSx3cml0ZTpmdW5jdGlvbihhLGIsYyxkKXtpZighYS50dHl8fCFhLnR0eS5XLkNhKXRocm93IG5ldyBHKEUuS2EpO1xuZm9yKHZhciBlPTA7ZTxkO2UrKyl0cnl7YS50dHkuVy5DYShhLnR0eSxiW2MrZV0pfWNhdGNoKGcpe3Rocm93IG5ldyBHKEUuTyk7fWQmJihhLmcudGltZXN0YW1wPURhdGUubm93KCkpO3JldHVybiBlfX0sUmI9e1lhOmZ1bmN0aW9uKGEpe2lmKCFhLmlucHV0Lmxlbmd0aCl7dmFyIGI9bnVsbDtpZihmYSl7dmFyIGM9bmV3IEJ1ZmZlcigyNTYpLGQ9MCxlPXByb2Nlc3Muc3RkaW4uZmQsZz0hMTt0cnl7ZT1mcy5vcGVuU3luYyhcIi9kZXYvc3RkaW5cIixcInJcIiksZz0hMH1jYXRjaChoKXt9ZD1mcy5yZWFkU3luYyhlLGMsMCwyNTYsbnVsbCk7ZyYmZnMuY2xvc2VTeW5jKGUpOzA8ZD9iPWMuc2xpY2UoMCxkKS50b1N0cmluZyhcInV0Zi04XCIpOmI9bnVsbH1lbHNlXCJ1bmRlZmluZWRcIiE9dHlwZW9mIHdpbmRvdyYmXCJmdW5jdGlvblwiPT10eXBlb2Ygd2luZG93LnByb21wdD8oYj13aW5kb3cucHJvbXB0KFwiSW5wdXQ6IFwiKSxudWxsIT09YiYmKGIrPVwiXFxuXCIpKTpcImZ1bmN0aW9uXCI9PXR5cGVvZiByZWFkbGluZSYmXG4oYj1yZWFkbGluZSgpLG51bGwhPT1iJiYoYis9XCJcXG5cIikpO2lmKCFiKXJldHVybiBudWxsO2EuaW5wdXQ9RChiLCEwKX1yZXR1cm4gYS5pbnB1dC5zaGlmdCgpfSxDYTpmdW5jdGlvbihhLGIpe251bGw9PT1ifHwxMD09PWI/KGYucHJpbnQoTmEoYS5vdXRwdXQsMCkpLGEub3V0cHV0PVtdKTowIT1iJiZhLm91dHB1dC5wdXNoKGIpfSxmbHVzaDpmdW5jdGlvbihhKXthLm91dHB1dCYmMDxhLm91dHB1dC5sZW5ndGgmJihmLnByaW50KE5hKGEub3V0cHV0LDApKSxhLm91dHB1dD1bXSl9fSxTYj17Q2E6ZnVuY3Rpb24oYSxiKXtudWxsPT09Ynx8MTA9PT1iPyhmLnByaW50RXJyKE5hKGEub3V0cHV0LDApKSxhLm91dHB1dD1bXSk6MCE9YiYmYS5vdXRwdXQucHVzaChiKX0sZmx1c2g6ZnVuY3Rpb24oYSl7YS5vdXRwdXQmJjA8YS5vdXRwdXQubGVuZ3RoJiYoZi5wcmludEVycihOYShhLm91dHB1dCwwKSksYS5vdXRwdXQ9W10pfX0sSz17STpudWxsLEQ6ZnVuY3Rpb24oKXtyZXR1cm4gSy5jcmVhdGVOb2RlKG51bGwsXG5cIi9cIiwxNjg5NSwwKX0sY3JlYXRlTm9kZTpmdW5jdGlvbihhLGIsYyxkKXtpZigyNDU3Nj09PShjJjYxNDQwKXx8NDA5Nj09PShjJjYxNDQwKSl0aHJvdyBuZXcgRyhFLkgpO0suSXx8KEsuST17ZGlyOntnOntHOksuay5HLEM6Sy5rLkMsbG9va3VwOksuay5sb29rdXAsZGE6Sy5rLmRhLHJlbmFtZTpLLmsucmVuYW1lLHVubGluazpLLmsudW5saW5rLHJtZGlyOksuay5ybWRpcixyZWFkZGlyOksuay5yZWFkZGlyLHN5bWxpbms6Sy5rLnN5bWxpbmt9LHN0cmVhbTp7TjpLLm4uTn19LGZpbGU6e2c6e0c6Sy5rLkcsQzpLLmsuQ30sc3RyZWFtOntOOksubi5OLHJlYWQ6Sy5uLnJlYWQsd3JpdGU6Sy5uLndyaXRlLE1hOksubi5NYSxvYTpLLm4ub2EscGE6Sy5uLnBhfX0sbGluazp7Zzp7RzpLLmsuRyxDOksuay5DLHJlYWRsaW5rOksuay5yZWFkbGlua30sc3RyZWFtOnt9fSxRYTp7Zzp7RzpLLmsuRyxDOksuay5DfSxzdHJlYW06VGJ9fSk7Yz1VYihhLGIsYyxkKTtMKGMubW9kZSk/KGMuaz1cbksuSS5kaXIuZyxjLm49Sy5JLmRpci5zdHJlYW0sYy5lPXt9KTozMjc2OD09PShjLm1vZGUmNjE0NDApPyhjLms9Sy5JLmZpbGUuZyxjLm49Sy5JLmZpbGUuc3RyZWFtLGMucT0wLGMuZT1udWxsKTo0MDk2MD09PShjLm1vZGUmNjE0NDApPyhjLms9Sy5JLmxpbmsuZyxjLm49Sy5JLmxpbmsuc3RyZWFtKTo4MTkyPT09KGMubW9kZSY2MTQ0MCkmJihjLms9Sy5JLlFhLmcsYy5uPUsuSS5RYS5zdHJlYW0pO2MudGltZXN0YW1wPURhdGUubm93KCk7YSYmKGEuZVtiXT1jKTtyZXR1cm4gY30sd2I6ZnVuY3Rpb24oYSl7aWYoYS5lJiZhLmUuc3ViYXJyYXkpe2Zvcih2YXIgYj1bXSxjPTA7YzxhLnE7KytjKWIucHVzaChhLmVbY10pO3JldHVybiBifXJldHVybiBhLmV9LEFlOmZ1bmN0aW9uKGEpe3JldHVybiBhLmU/YS5lLnN1YmFycmF5P2EuZS5zdWJhcnJheSgwLGEucSk6bmV3IFVpbnQ4QXJyYXkoYS5lKTpuZXcgVWludDhBcnJheX0sU2E6ZnVuY3Rpb24oYSxiKXthLmUmJmEuZS5zdWJhcnJheSYmXG5iPmEuZS5sZW5ndGgmJihhLmU9Sy53YihhKSxhLnE9YS5lLmxlbmd0aCk7aWYoIWEuZXx8YS5lLnN1YmFycmF5KXt2YXIgYz1hLmU/YS5lLmJ1ZmZlci5ieXRlTGVuZ3RoOjA7Yz49Ynx8KGI9TWF0aC5tYXgoYixjKigxMDQ4NTc2PmM/MjoxLjEyNSl8MCksMCE9YyYmKGI9TWF0aC5tYXgoYiwyNTYpKSxjPWEuZSxhLmU9bmV3IFVpbnQ4QXJyYXkoYiksMDxhLnEmJmEuZS5zZXQoYy5zdWJhcnJheSgwLGEucSksMCkpfWVsc2UgZm9yKCFhLmUmJjA8YiYmKGEuZT1bXSk7YS5lLmxlbmd0aDxiOylhLmUucHVzaCgwKX0sTmI6ZnVuY3Rpb24oYSxiKXtpZihhLnEhPWIpaWYoMD09YilhLmU9bnVsbCxhLnE9MDtlbHNle2lmKCFhLmV8fGEuZS5zdWJhcnJheSl7dmFyIGM9YS5lO2EuZT1uZXcgVWludDhBcnJheShuZXcgQXJyYXlCdWZmZXIoYikpO2MmJmEuZS5zZXQoYy5zdWJhcnJheSgwLE1hdGgubWluKGIsYS5xKSkpfWVsc2UgaWYoYS5lfHwoYS5lPVtdKSxhLmUubGVuZ3RoPmIpYS5lLmxlbmd0aD1cbmI7ZWxzZSBmb3IoO2EuZS5sZW5ndGg8YjspYS5lLnB1c2goMCk7YS5xPWJ9fSxrOntHOmZ1bmN0aW9uKGEpe3ZhciBiPXt9O2IuZGV2PTgxOTI9PT0oYS5tb2RlJjYxNDQwKT9hLmlkOjE7Yi5pbm89YS5pZDtiLm1vZGU9YS5tb2RlO2Iubmxpbms9MTtiLnVpZD0wO2IuZ2lkPTA7Yi5yZGV2PWEucmRldjtMKGEubW9kZSk/Yi5zaXplPTQwOTY6MzI3Njg9PT0oYS5tb2RlJjYxNDQwKT9iLnNpemU9YS5xOjQwOTYwPT09KGEubW9kZSY2MTQ0MCk/Yi5zaXplPWEubGluay5sZW5ndGg6Yi5zaXplPTA7Yi5hdGltZT1uZXcgRGF0ZShhLnRpbWVzdGFtcCk7Yi5tdGltZT1uZXcgRGF0ZShhLnRpbWVzdGFtcCk7Yi5jdGltZT1uZXcgRGF0ZShhLnRpbWVzdGFtcCk7Yi5QPTQwOTY7Yi5ibG9ja3M9TWF0aC5jZWlsKGIuc2l6ZS9iLlApO3JldHVybiBifSxDOmZ1bmN0aW9uKGEsYil7dm9pZCAwIT09Yi5tb2RlJiYoYS5tb2RlPWIubW9kZSk7dm9pZCAwIT09Yi50aW1lc3RhbXAmJihhLnRpbWVzdGFtcD1cbmIudGltZXN0YW1wKTt2b2lkIDAhPT1iLnNpemUmJksuTmIoYSxiLnNpemUpfSxsb29rdXA6ZnVuY3Rpb24oKXt0aHJvdyBWYltFLkpdO30sZGE6ZnVuY3Rpb24oYSxiLGMsZCl7cmV0dXJuIEsuY3JlYXRlTm9kZShhLGIsYyxkKX0scmVuYW1lOmZ1bmN0aW9uKGEsYixjKXtpZihMKGEubW9kZSkpe3ZhciBkO3RyeXtkPVdiKGIsYyl9Y2F0Y2goZSl7fWlmKGQpZm9yKHZhciBnIGluIGQuZSl0aHJvdyBuZXcgRyhFLkphKTt9ZGVsZXRlIGEucGFyZW50LmVbYS5uYW1lXTthLm5hbWU9YztiLmVbY109YTthLnBhcmVudD1ifSx1bmxpbms6ZnVuY3Rpb24oYSxiKXtkZWxldGUgYS5lW2JdfSxybWRpcjpmdW5jdGlvbihhLGIpe3ZhciBjPVdiKGEsYiksZDtmb3IoZCBpbiBjLmUpdGhyb3cgbmV3IEcoRS5KYSk7ZGVsZXRlIGEuZVtiXX0scmVhZGRpcjpmdW5jdGlvbihhKXt2YXIgYj1bXCIuXCIsXCIuLlwiXSxjO2ZvcihjIGluIGEuZSlhLmUuaGFzT3duUHJvcGVydHkoYykmJmIucHVzaChjKTtyZXR1cm4gYn0sXG5zeW1saW5rOmZ1bmN0aW9uKGEsYixjKXthPUsuY3JlYXRlTm9kZShhLGIsNDE0NzEsMCk7YS5saW5rPWM7cmV0dXJuIGF9LHJlYWRsaW5rOmZ1bmN0aW9uKGEpe2lmKDQwOTYwIT09KGEubW9kZSY2MTQ0MCkpdGhyb3cgbmV3IEcoRS5wKTtyZXR1cm4gYS5saW5rfX0sbjp7cmVhZDpmdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBnPWEuZy5lO2lmKGU+PWEuZy5xKXJldHVybiAwO2E9TWF0aC5taW4oYS5nLnEtZSxkKTthc3NlcnQoMDw9YSk7aWYoODxhJiZnLnN1YmFycmF5KWIuc2V0KGcuc3ViYXJyYXkoZSxlK2EpLGMpO2Vsc2UgZm9yKGQ9MDtkPGE7ZCsrKWJbYytkXT1nW2UrZF07cmV0dXJuIGF9LHdyaXRlOmZ1bmN0aW9uKGEsYixjLGQsZSxnKXtpZighZClyZXR1cm4gMDthPWEuZzthLnRpbWVzdGFtcD1EYXRlLm5vdygpO2lmKGIuc3ViYXJyYXkmJighYS5lfHxhLmUuc3ViYXJyYXkpKXtpZihnKXJldHVybiBhLmU9Yi5zdWJhcnJheShjLGMrZCksYS5xPWQ7aWYoMD09PWEucSYmMD09PVxuZSlyZXR1cm4gYS5lPW5ldyBVaW50OEFycmF5KGIuc3ViYXJyYXkoYyxjK2QpKSxhLnE9ZDtpZihlK2Q8PWEucSlyZXR1cm4gYS5lLnNldChiLnN1YmFycmF5KGMsYytkKSxlKSxkfUsuU2EoYSxlK2QpO2lmKGEuZS5zdWJhcnJheSYmYi5zdWJhcnJheSlhLmUuc2V0KGIuc3ViYXJyYXkoYyxjK2QpLGUpO2Vsc2UgZm9yKGc9MDtnPGQ7ZysrKWEuZVtlK2ddPWJbYytnXTthLnE9TWF0aC5tYXgoYS5xLGUrZCk7cmV0dXJuIGR9LE46ZnVuY3Rpb24oYSxiLGMpezE9PT1jP2IrPWEucG9zaXRpb246Mj09PWMmJjMyNzY4PT09KGEuZy5tb2RlJjYxNDQwKSYmKGIrPWEuZy5xKTtpZigwPmIpdGhyb3cgbmV3IEcoRS5wKTtyZXR1cm4gYn0sTWE6ZnVuY3Rpb24oYSxiLGMpe0suU2EoYS5nLGIrYyk7YS5nLnE9TWF0aC5tYXgoYS5nLnEsYitjKX0sb2E6ZnVuY3Rpb24oYSxiLGMsZCxlLGcsaCl7aWYoMzI3NjghPT0oYS5nLm1vZGUmNjE0NDApKXRocm93IG5ldyBHKEUuaGEpO2M9YS5nLmU7aWYoaCZcbjJ8fGMuYnVmZmVyIT09YiYmYy5idWZmZXIhPT1iLmJ1ZmZlcil7aWYoMDxlfHxlK2Q8YS5nLnEpYy5zdWJhcnJheT9jPWMuc3ViYXJyYXkoZSxlK2QpOmM9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYyxlLGUrZCk7YT0hMDtkPUlhKGQpO2lmKCFkKXRocm93IG5ldyBHKEUuSWEpO2Iuc2V0KGMsZCl9ZWxzZSBhPSExLGQ9Yy5ieXRlT2Zmc2V0O3JldHVybntLYjpkLHVhOmF9fSxwYTpmdW5jdGlvbihhLGIsYyxkLGUpe2lmKDMyNzY4IT09KGEuZy5tb2RlJjYxNDQwKSl0aHJvdyBuZXcgRyhFLmhhKTtpZihlJjIpcmV0dXJuIDA7Sy5uLndyaXRlKGEsYiwwLGQsYywhMSk7cmV0dXJuIDB9fX0sTT17bmE6ITEsUmI6ZnVuY3Rpb24oKXtNLm5hPSEhcHJvY2Vzcy5wbGF0Zm9ybS5tYXRjaCgvXndpbi8pfSxEOmZ1bmN0aW9uKGEpe2Fzc2VydChmYSk7cmV0dXJuIE0uY3JlYXRlTm9kZShudWxsLFwiL1wiLE0uV2EoYS5CYS5yb290KSwwKX0sY3JlYXRlTm9kZTpmdW5jdGlvbihhLGIsYyl7aWYoIUwoYykmJlxuMzI3NjghPT0oYyY2MTQ0MCkmJjQwOTYwIT09KGMmNjE0NDApKXRocm93IG5ldyBHKEUucCk7YT1VYihhLGIsYyk7YS5rPU0uazthLm49TS5uO3JldHVybiBhfSxXYTpmdW5jdGlvbihhKXt2YXIgYjt0cnl7Yj1mcy5sc3RhdFN5bmMoYSksTS5uYSYmKGIubW9kZT1iLm1vZGV8KGIubW9kZSYxNDYpPj4xKX1jYXRjaChjKXtpZighYy5jb2RlKXRocm93IGM7dGhyb3cgbmV3IEcoRVtjLmNvZGVdKTt9cmV0dXJuIGIubW9kZX0sRjpmdW5jdGlvbihhKXtmb3IodmFyIGI9W107YS5wYXJlbnQhPT1hOyliLnB1c2goYS5uYW1lKSxhPWEucGFyZW50O2IucHVzaChhLkQuQmEucm9vdCk7Yi5yZXZlcnNlKCk7cmV0dXJuIExiLmFwcGx5KG51bGwsYil9LFRhOnswOlwiclwiLDE6XCJyK1wiLDI6XCJyK1wiLDY0OlwiclwiLDY1OlwicitcIiw2NjpcInIrXCIsMTI5OlwicngrXCIsMTkzOlwicngrXCIsNTE0OlwidytcIiw1Nzc6XCJ3XCIsNTc4OlwidytcIiw3MDU6XCJ3eFwiLDcwNjpcInd4K1wiLDEwMjQ6XCJhXCIsMTAyNTpcImFcIiwxMDI2OlwiYStcIixcbjEwODk6XCJhXCIsMTA5MDpcImErXCIsMTE1MzpcImF4XCIsMTE1NDpcImF4K1wiLDEyMTc6XCJheFwiLDEyMTg6XCJheCtcIiw0MDk2OlwicnNcIiw0MDk4OlwicnMrXCJ9LHViOmZ1bmN0aW9uKGEpe2EmPS0zMjc2OTtpZihhIGluIE0uVGEpcmV0dXJuIE0uVGFbYV07dGhyb3cgbmV3IEcoRS5wKTt9LGs6e0c6ZnVuY3Rpb24oYSl7YT1NLkYoYSk7dmFyIGI7dHJ5e2I9ZnMubHN0YXRTeW5jKGEpfWNhdGNoKGMpe2lmKCFjLmNvZGUpdGhyb3cgYzt0aHJvdyBuZXcgRyhFW2MuY29kZV0pO31NLm5hJiYhYi5QJiYoYi5QPTQwOTYpO00ubmEmJiFiLmJsb2NrcyYmKGIuYmxvY2tzPShiLnNpemUrYi5QLTEpL2IuUHwwKTtyZXR1cm57ZGV2OmIuZGV2LGlubzpiLmlubyxtb2RlOmIubW9kZSxubGluazpiLm5saW5rLHVpZDpiLnVpZCxnaWQ6Yi5naWQscmRldjpiLnJkZXYsc2l6ZTpiLnNpemUsYXRpbWU6Yi5hdGltZSxtdGltZTpiLm10aW1lLGN0aW1lOmIuY3RpbWUsUDpiLlAsYmxvY2tzOmIuYmxvY2tzfX0sQzpmdW5jdGlvbihhLFxuYil7dmFyIGM9TS5GKGEpO3RyeXt2b2lkIDAhPT1iLm1vZGUmJihmcy5jaG1vZFN5bmMoYyxiLm1vZGUpLGEubW9kZT1iLm1vZGUpLHZvaWQgMCE9PWIuc2l6ZSYmZnMudHJ1bmNhdGVTeW5jKGMsYi5zaXplKX1jYXRjaChkKXtpZighZC5jb2RlKXRocm93IGQ7dGhyb3cgbmV3IEcoRVtkLmNvZGVdKTt9fSxsb29rdXA6ZnVuY3Rpb24oYSxiKXt2YXIgYz1GKE0uRihhKSxiKSxjPU0uV2EoYyk7cmV0dXJuIE0uY3JlYXRlTm9kZShhLGIsYyl9LGRhOmZ1bmN0aW9uKGEsYixjLGQpe2E9TS5jcmVhdGVOb2RlKGEsYixjLGQpO2I9TS5GKGEpO3RyeXtMKGEubW9kZSk/ZnMubWtkaXJTeW5jKGIsYS5tb2RlKTpmcy53cml0ZUZpbGVTeW5jKGIsXCJcIix7bW9kZTphLm1vZGV9KX1jYXRjaChlKXtpZighZS5jb2RlKXRocm93IGU7dGhyb3cgbmV3IEcoRVtlLmNvZGVdKTt9cmV0dXJuIGF9LHJlbmFtZTpmdW5jdGlvbihhLGIsYyl7YT1NLkYoYSk7Yj1GKE0uRihiKSxjKTt0cnl7ZnMucmVuYW1lU3luYyhhLFxuYil9Y2F0Y2goZCl7aWYoIWQuY29kZSl0aHJvdyBkO3Rocm93IG5ldyBHKEVbZC5jb2RlXSk7fX0sdW5saW5rOmZ1bmN0aW9uKGEsYil7dmFyIGM9RihNLkYoYSksYik7dHJ5e2ZzLnVubGlua1N5bmMoYyl9Y2F0Y2goZCl7aWYoIWQuY29kZSl0aHJvdyBkO3Rocm93IG5ldyBHKEVbZC5jb2RlXSk7fX0scm1kaXI6ZnVuY3Rpb24oYSxiKXt2YXIgYz1GKE0uRihhKSxiKTt0cnl7ZnMucm1kaXJTeW5jKGMpfWNhdGNoKGQpe2lmKCFkLmNvZGUpdGhyb3cgZDt0aHJvdyBuZXcgRyhFW2QuY29kZV0pO319LHJlYWRkaXI6ZnVuY3Rpb24oYSl7YT1NLkYoYSk7dHJ5e3JldHVybiBmcy5yZWFkZGlyU3luYyhhKX1jYXRjaChiKXtpZighYi5jb2RlKXRocm93IGI7dGhyb3cgbmV3IEcoRVtiLmNvZGVdKTt9fSxzeW1saW5rOmZ1bmN0aW9uKGEsYixjKXthPUYoTS5GKGEpLGIpO3RyeXtmcy5zeW1saW5rU3luYyhjLGEpfWNhdGNoKGQpe2lmKCFkLmNvZGUpdGhyb3cgZDt0aHJvdyBuZXcgRyhFW2QuY29kZV0pO1xufX0scmVhZGxpbms6ZnVuY3Rpb24oYSl7dmFyIGI9TS5GKGEpO3RyeXtyZXR1cm4gYj1mcy5yZWFkbGlua1N5bmMoYiksYj1YYi5yZWxhdGl2ZShYYi5yZXNvbHZlKGEuRC5CYS5yb290KSxiKX1jYXRjaChjKXtpZighYy5jb2RlKXRocm93IGM7dGhyb3cgbmV3IEcoRVtjLmNvZGVdKTt9fX0sbjp7b3BlbjpmdW5jdGlvbihhKXt2YXIgYj1NLkYoYS5nKTt0cnl7MzI3Njg9PT0oYS5nLm1vZGUmNjE0NDApJiYoYS5lYT1mcy5vcGVuU3luYyhiLE0udWIoYS5mbGFncykpKX1jYXRjaChjKXtpZighYy5jb2RlKXRocm93IGM7dGhyb3cgbmV3IEcoRVtjLmNvZGVdKTt9fSxjbG9zZTpmdW5jdGlvbihhKXt0cnl7MzI3Njg9PT0oYS5nLm1vZGUmNjE0NDApJiZhLmVhJiZmcy5jbG9zZVN5bmMoYS5lYSl9Y2F0Y2goYil7aWYoIWIuY29kZSl0aHJvdyBiO3Rocm93IG5ldyBHKEVbYi5jb2RlXSk7fX0scmVhZDpmdW5jdGlvbihhLGIsYyxkLGUpe2lmKDA9PT1kKXJldHVybiAwO3ZhciBnPW5ldyBCdWZmZXIoZCksXG5oO3RyeXtoPWZzLnJlYWRTeW5jKGEuZWEsZywwLGQsZSl9Y2F0Y2gobSl7dGhyb3cgbmV3IEcoRVttLmNvZGVdKTt9aWYoMDxoKWZvcihhPTA7YTxoO2ErKyliW2MrYV09Z1thXTtyZXR1cm4gaH0sd3JpdGU6ZnVuY3Rpb24oYSxiLGMsZCxlKXtiPW5ldyBCdWZmZXIoYi5zdWJhcnJheShjLGMrZCkpO3ZhciBnO3RyeXtnPWZzLndyaXRlU3luYyhhLmVhLGIsMCxkLGUpfWNhdGNoKGgpe3Rocm93IG5ldyBHKEVbaC5jb2RlXSk7fXJldHVybiBnfSxOOmZ1bmN0aW9uKGEsYixjKXtpZigxPT09YyliKz1hLnBvc2l0aW9uO2Vsc2UgaWYoMj09PWMmJjMyNzY4PT09KGEuZy5tb2RlJjYxNDQwKSl0cnl7Yis9ZnMuZnN0YXRTeW5jKGEuZWEpLnNpemV9Y2F0Y2goZCl7dGhyb3cgbmV3IEcoRVtkLmNvZGVdKTt9aWYoMD5iKXRocm93IG5ldyBHKEUucCk7cmV0dXJuIGJ9fX07eigxLFwiaTMyKlwiLDIpO3ooMSxcImkzMipcIiwyKTt6KDEsXCJpMzIqXCIsMik7XG52YXIgWWI9bnVsbCxaYj1bbnVsbF0sTj1bXSwkYj0xLGFjPW51bGwsYmM9ITAsTz17fSxHPW51bGwsVmI9e307XG5mdW5jdGlvbiBQKGEsYil7YT1NYihcIi9cIixhKTtiPWJ8fHt9O2lmKCFhKXJldHVybntwYXRoOlwiXCIsZzpudWxsfTt2YXIgYz17VWE6ITAsRGE6MH0sZDtmb3IoZCBpbiBjKXZvaWQgMD09PWJbZF0mJihiW2RdPWNbZF0pO2lmKDg8Yi5EYSl0aHJvdyBuZXcgRyhFLnNhKTt2YXIgYz1IYihhLnNwbGl0KFwiL1wiKS5maWx0ZXIoZnVuY3Rpb24oYSl7cmV0dXJuISFhfSksITEpLGU9WWI7ZD1cIi9cIjtmb3IodmFyIGc9MDtnPGMubGVuZ3RoO2crKyl7dmFyIGg9Zz09PWMubGVuZ3RoLTE7aWYoaCYmYi5wYXJlbnQpYnJlYWs7ZT1XYihlLGNbZ10pO2Q9RihkLGNbZ10pO2UuVSYmKCFofHxoJiZiLlVhKSYmKGU9ZS5VLnJvb3QpO2lmKCFofHxiLlEpZm9yKGg9MDs0MDk2MD09PShlLm1vZGUmNjE0NDApOylpZihlPWNjKGQpLGQ9TWIoSmIoZCksZSksZT1QKGQse0RhOmIuRGF9KS5nLDQwPGgrKyl0aHJvdyBuZXcgRyhFLnNhKTt9cmV0dXJue3BhdGg6ZCxnOmV9fVxuZnVuY3Rpb24gUShhKXtmb3IodmFyIGI7Oyl7aWYoYT09PWEucGFyZW50KXJldHVybiBhPWEuRC4kYSxiP1wiL1wiIT09YVthLmxlbmd0aC0xXT9hK1wiL1wiK2I6YStiOmE7Yj1iP2EubmFtZStcIi9cIitiOmEubmFtZTthPWEucGFyZW50fX1mdW5jdGlvbiBkYyhhLGIpe2Zvcih2YXIgYz0wLGQ9MDtkPGIubGVuZ3RoO2QrKyljPShjPDw1KS1jK2IuY2hhckNvZGVBdChkKXwwO3JldHVybihhK2M+Pj4wKSVhYy5sZW5ndGh9ZnVuY3Rpb24gZWMoYSl7dmFyIGI9ZGMoYS5wYXJlbnQuaWQsYS5uYW1lKTthLlY9YWNbYl07YWNbYl09YX1mdW5jdGlvbiBmYyhhKXt2YXIgYj1kYyhhLnBhcmVudC5pZCxhLm5hbWUpO2lmKGFjW2JdPT09YSlhY1tiXT1hLlY7ZWxzZSBmb3IoYj1hY1tiXTtiOyl7aWYoYi5WPT09YSl7Yi5WPWEuVjticmVha31iPWIuVn19XG5mdW5jdGlvbiBXYihhLGIpe3ZhciBjO2lmKGM9KGM9Z2MoYSxcInhcIikpP2M6YS5rLmxvb2t1cD8wOkUuWSl0aHJvdyBuZXcgRyhjLGEpO2ZvcihjPWFjW2RjKGEuaWQsYildO2M7Yz1jLlYpe3ZhciBkPWMubmFtZTtpZihjLnBhcmVudC5pZD09PWEuaWQmJmQ9PT1iKXJldHVybiBjfXJldHVybiBhLmsubG9va3VwKGEsYil9XG5mdW5jdGlvbiBVYihhLGIsYyxkKXtoY3x8KGhjPWZ1bmN0aW9uKGEsYixjLGQpe2F8fChhPXRoaXMpO3RoaXMucGFyZW50PWE7dGhpcy5EPWEuRDt0aGlzLlU9bnVsbDt0aGlzLmlkPSRiKys7dGhpcy5uYW1lPWI7dGhpcy5tb2RlPWM7dGhpcy5rPXt9O3RoaXMubj17fTt0aGlzLnJkZXY9ZH0saGMucHJvdG90eXBlPXt9LE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGhjLnByb3RvdHlwZSx7cmVhZDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDM2NT09PSh0aGlzLm1vZGUmMzY1KX0sc2V0OmZ1bmN0aW9uKGEpe2E/dGhpcy5tb2RlfD0zNjU6dGhpcy5tb2RlJj0tMzY2fX0sd3JpdGU6e2dldDpmdW5jdGlvbigpe3JldHVybiAxNDY9PT0odGhpcy5tb2RlJjE0Nil9LHNldDpmdW5jdGlvbihhKXthP3RoaXMubW9kZXw9MTQ2OnRoaXMubW9kZSY9LTE0N319LEZiOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gTCh0aGlzLm1vZGUpfX0sRWI6e2dldDpmdW5jdGlvbigpe3JldHVybiA4MTkyPT09KHRoaXMubW9kZSZcbjYxNDQwKX19fSkpO2E9bmV3IGhjKGEsYixjLGQpO2VjKGEpO3JldHVybiBhfWZ1bmN0aW9uIEwoYSl7cmV0dXJuIDE2Mzg0PT09KGEmNjE0NDApfXZhciBpYz17cjowLHJzOjEwNTI2NzIsXCJyK1wiOjIsdzo1Nzcsd3g6NzA1LHh3OjcwNSxcIncrXCI6NTc4LFwid3grXCI6NzA2LFwieHcrXCI6NzA2LGE6MTA4OSxheDoxMjE3LHhhOjEyMTcsXCJhK1wiOjEwOTAsXCJheCtcIjoxMjE4LFwieGErXCI6MTIxOH07ZnVuY3Rpb24gZ2MoYSxiKXtpZihiYylyZXR1cm4gMDtpZigtMT09PWIuaW5kZXhPZihcInJcIil8fGEubW9kZSYyOTIpe2lmKC0xIT09Yi5pbmRleE9mKFwid1wiKSYmIShhLm1vZGUmMTQ2KXx8LTEhPT1iLmluZGV4T2YoXCJ4XCIpJiYhKGEubW9kZSY3MykpcmV0dXJuIEUuWX1lbHNlIHJldHVybiBFLlk7cmV0dXJuIDB9ZnVuY3Rpb24gamMoYSxiKXt0cnl7cmV0dXJuIFdiKGEsYiksRS5IYX1jYXRjaChjKXt9cmV0dXJuIGdjKGEsXCJ3eFwiKX1cbmZ1bmN0aW9uIGtjKGEsYixjKXt2YXIgZDt0cnl7ZD1XYihhLGIpfWNhdGNoKGUpe3JldHVybiBlLm99aWYoYT1nYyhhLFwid3hcIikpcmV0dXJuIGE7aWYoYyl7aWYoIUwoZC5tb2RlKSlyZXR1cm4gRS5pYTtpZihkPT09ZC5wYXJlbnR8fFwiL1wiPT09UShkKSlyZXR1cm4gRS5afWVsc2UgaWYoTChkLm1vZGUpKXJldHVybiBFLlM7cmV0dXJuIDB9ZnVuY3Rpb24gbGMoYSl7dmFyIGI7Yj00MDk2O2ZvcihhPWF8fDA7YTw9YjthKyspaWYoIU5bYV0pcmV0dXJuIGE7dGhyb3cgbmV3IEcoRS5lYik7fVxuZnVuY3Rpb24gbWMoYSxiKXtuY3x8KG5jPWZ1bmN0aW9uKCl7fSxuYy5wcm90b3R5cGU9e30sT2JqZWN0LmRlZmluZVByb3BlcnRpZXMobmMucHJvdG90eXBlLHtvYmplY3Q6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmd9LHNldDpmdW5jdGlvbihhKXt0aGlzLmc9YX19LEZlOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gMSE9PSh0aGlzLmZsYWdzJjIwOTcxNTUpfX0sR2U6e2dldDpmdW5jdGlvbigpe3JldHVybiAwIT09KHRoaXMuZmxhZ3MmMjA5NzE1NSl9fSxFZTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZmxhZ3MmMTAyNH19fSkpO3ZhciBjPW5ldyBuYyxkO2ZvcihkIGluIGEpY1tkXT1hW2RdO2E9YztjPWxjKGIpO2EuZmQ9YztyZXR1cm4gTltjXT1hfXZhciBUYj17b3BlbjpmdW5jdGlvbihhKXthLm49WmJbYS5nLnJkZXZdLm47YS5uLm9wZW4mJmEubi5vcGVuKGEpfSxOOmZ1bmN0aW9uKCl7dGhyb3cgbmV3IEcoRS5qYSk7fX07XG5mdW5jdGlvbiBQYihhLGIpe1piW2FdPXtuOmJ9fWZ1bmN0aW9uIHBjKGEsYil7dmFyIGM9XCIvXCI9PT1iLGQ9IWIsZTtpZihjJiZZYil0aHJvdyBuZXcgRyhFLlopO2lmKCFjJiYhZCl7ZT1QKGIse1VhOiExfSk7Yj1lLnBhdGg7ZT1lLmc7aWYoZS5VKXRocm93IG5ldyBHKEUuWik7aWYoIUwoZS5tb2RlKSl0aHJvdyBuZXcgRyhFLmlhKTt9dmFyIGQ9e3R5cGU6YSxCYTp7fSwkYTpiLEpiOltdfSxnPWEuRChkKTtnLkQ9ZDtkLnJvb3Q9ZztjP1liPWc6ZSYmKGUuVT1kLGUuRCYmZS5ELkpiLnB1c2goZCkpfWZ1bmN0aW9uIHFjKGEsYixjKXt2YXIgZD1QKGEse3BhcmVudDohMH0pLmc7YT1LYihhKTtpZighYXx8XCIuXCI9PT1hfHxcIi4uXCI9PT1hKXRocm93IG5ldyBHKEUucCk7dmFyIGU9amMoZCxhKTtpZihlKXRocm93IG5ldyBHKGUpO2lmKCFkLmsuZGEpdGhyb3cgbmV3IEcoRS5IKTtyZXR1cm4gZC5rLmRhKGQsYSxiLGMpfVxuZnVuY3Rpb24gcmMoYSxiKXtiPSh2b2lkIDAhPT1iP2I6NDM4KSY0MDk1O2J8PTMyNzY4O3JldHVybiBxYyhhLGIsMCl9ZnVuY3Rpb24gUihhLGIpe2I9KHZvaWQgMCE9PWI/Yjo1MTEpJjEwMjM7Ynw9MTYzODQ7cmV0dXJuIHFjKGEsYiwwKX1mdW5jdGlvbiBzYyhhLGIsYyl7XCJ1bmRlZmluZWRcIj09PXR5cGVvZiBjJiYoYz1iLGI9NDM4KTtyZXR1cm4gcWMoYSxifDgxOTIsYyl9ZnVuY3Rpb24gdGMoYSxiKXtpZighTWIoYSkpdGhyb3cgbmV3IEcoRS5KKTt2YXIgYz1QKGIse3BhcmVudDohMH0pLmc7aWYoIWMpdGhyb3cgbmV3IEcoRS5KKTt2YXIgZD1LYihiKSxlPWpjKGMsZCk7aWYoZSl0aHJvdyBuZXcgRyhlKTtpZighYy5rLnN5bWxpbmspdGhyb3cgbmV3IEcoRS5IKTtyZXR1cm4gYy5rLnN5bWxpbmsoYyxkLGEpfVxuZnVuY3Rpb24gdWMoYSl7dmFyIGI9UChhLHtwYXJlbnQ6ITB9KS5nLGM9S2IoYSksZD1XYihiLGMpLGU9a2MoYixjLCExKTtpZihlKXRocm93IGU9PT1FLlMmJihlPUUuSCksbmV3IEcoZSk7aWYoIWIuay51bmxpbmspdGhyb3cgbmV3IEcoRS5IKTtpZihkLlUpdGhyb3cgbmV3IEcoRS5aKTt0cnl7Ty53aWxsRGVsZXRlUGF0aCYmTy53aWxsRGVsZXRlUGF0aChhKX1jYXRjaChnKXtjb25zb2xlLmxvZyhcIkZTLnRyYWNraW5nRGVsZWdhdGVbJ3dpbGxEZWxldGVQYXRoJ10oJ1wiK2ErXCInKSB0aHJldyBhbiBleGNlcHRpb246IFwiK2cubWVzc2FnZSl9Yi5rLnVubGluayhiLGMpO2ZjKGQpO3RyeXtpZihPLm9uRGVsZXRlUGF0aClPLm9uRGVsZXRlUGF0aChhKX1jYXRjaChoKXtjb25zb2xlLmxvZyhcIkZTLnRyYWNraW5nRGVsZWdhdGVbJ29uRGVsZXRlUGF0aCddKCdcIithK1wiJykgdGhyZXcgYW4gZXhjZXB0aW9uOiBcIitoLm1lc3NhZ2UpfX1cbmZ1bmN0aW9uIGNjKGEpe2E9UChhKS5nO2lmKCFhKXRocm93IG5ldyBHKEUuSik7aWYoIWEuay5yZWFkbGluayl0aHJvdyBuZXcgRyhFLnApO3JldHVybiBNYihRKGEucGFyZW50KSxhLmsucmVhZGxpbmsoYSkpfWZ1bmN0aW9uIHZjKGEsYil7dmFyIGM9UChhLHtROiFifSkuZztpZighYyl0aHJvdyBuZXcgRyhFLkopO2lmKCFjLmsuRyl0aHJvdyBuZXcgRyhFLkgpO3JldHVybiBjLmsuRyhjKX1mdW5jdGlvbiB3YyhhKXtyZXR1cm4gdmMoYSwhMCl9ZnVuY3Rpb24geGMoYSxiKXt2YXIgYztcInN0cmluZ1wiPT09dHlwZW9mIGE/Yz1QKGEse1E6ITB9KS5nOmM9YTtpZighYy5rLkMpdGhyb3cgbmV3IEcoRS5IKTtjLmsuQyhjLHttb2RlOmImNDA5NXxjLm1vZGUmLTQwOTYsdGltZXN0YW1wOkRhdGUubm93KCl9KX1cbmZ1bmN0aW9uIHljKGEpe3ZhciBiO1wic3RyaW5nXCI9PT10eXBlb2YgYT9iPVAoYSx7UTohMH0pLmc6Yj1hO2lmKCFiLmsuQyl0aHJvdyBuZXcgRyhFLkgpO2Iuay5DKGIse3RpbWVzdGFtcDpEYXRlLm5vdygpfSl9ZnVuY3Rpb24gemMoYSxiKXtpZigwPmIpdGhyb3cgbmV3IEcoRS5wKTt2YXIgYztcInN0cmluZ1wiPT09dHlwZW9mIGE/Yz1QKGEse1E6ITB9KS5nOmM9YTtpZighYy5rLkMpdGhyb3cgbmV3IEcoRS5IKTtpZihMKGMubW9kZSkpdGhyb3cgbmV3IEcoRS5TKTtpZigzMjc2OCE9PShjLm1vZGUmNjE0NDApKXRocm93IG5ldyBHKEUucCk7dmFyIGQ9Z2MoYyxcIndcIik7aWYoZCl0aHJvdyBuZXcgRyhkKTtjLmsuQyhjLHtzaXplOmIsdGltZXN0YW1wOkRhdGUubm93KCl9KX1cbmZ1bmN0aW9uIEFjKGEsYixjLGQpe2lmKFwiXCI9PT1hKXRocm93IG5ldyBHKEUuSik7aWYoXCJzdHJpbmdcIj09PXR5cGVvZiBiKXt2YXIgZT1pY1tiXTtpZihcInVuZGVmaW5lZFwiPT09dHlwZW9mIGUpdGhyb3cgRXJyb3IoXCJVbmtub3duIGZpbGUgb3BlbiBtb2RlOiBcIitiKTtiPWV9Yz1iJjY0PyhcInVuZGVmaW5lZFwiPT09dHlwZW9mIGM/NDM4OmMpJjQwOTV8MzI3Njg6MDt2YXIgZztpZihcIm9iamVjdFwiPT09dHlwZW9mIGEpZz1hO2Vsc2V7YT1JYihhKTt0cnl7Zz1QKGEse1E6IShiJjEzMTA3Mil9KS5nfWNhdGNoKGgpe319ZT0hMTtpZihiJjY0KWlmKGcpe2lmKGImMTI4KXRocm93IG5ldyBHKEUuSGEpO31lbHNlIGc9cWMoYSxjLDApLGU9ITA7aWYoIWcpdGhyb3cgbmV3IEcoRS5KKTs4MTkyPT09KGcubW9kZSY2MTQ0MCkmJihiJj0tNTEzKTtpZihiJjY1NTM2JiYhTChnLm1vZGUpKXRocm93IG5ldyBHKEUuaWEpO2lmKCFlJiYoZz80MDk2MD09PShnLm1vZGUmNjE0NDApP2M9RS5zYTpMKGcubW9kZSkmJlxuKDAhPT0oYiYyMDk3MTU1KXx8YiY1MTIpP2M9RS5TOihjPVtcInJcIixcIndcIixcInJ3XCJdW2ImM10sYiY1MTImJihjKz1cIndcIiksYz1nYyhnLGMpKTpjPUUuSixjKSl0aHJvdyBuZXcgRyhjKTtiJjUxMiYmemMoZywwKTtiJj0tNjQxO2Q9bWMoe2c6ZyxwYXRoOlEoZyksZmxhZ3M6YixzZWVrYWJsZTohMCxwb3NpdGlvbjowLG46Zy5uLFNiOltdLGVycm9yOiExfSxkKTtkLm4ub3BlbiYmZC5uLm9wZW4oZCk7IWYubG9nUmVhZEZpbGVzfHxiJjF8fChCY3x8KEJjPXt9KSxhIGluIEJjfHwoQmNbYV09MSxmLnByaW50RXJyKFwicmVhZCBmaWxlOiBcIithKSkpO3RyeXtPLm9uT3BlbkZpbGUmJihnPTAsMSE9PShiJjIwOTcxNTUpJiYoZ3w9MSksMCE9PShiJjIwOTcxNTUpJiYoZ3w9MiksTy5vbk9wZW5GaWxlKGEsZykpfWNhdGNoKG0pe2NvbnNvbGUubG9nKFwiRlMudHJhY2tpbmdEZWxlZ2F0ZVsnb25PcGVuRmlsZSddKCdcIithK1wiJywgZmxhZ3MpIHRocmV3IGFuIGV4Y2VwdGlvbjogXCIrbS5tZXNzYWdlKX1yZXR1cm4gZH1cbmZ1bmN0aW9uIENjKGEpe2EuemEmJihhLnphPW51bGwpO3RyeXthLm4uY2xvc2UmJmEubi5jbG9zZShhKX1jYXRjaChiKXt0aHJvdyBiO31maW5hbGx5e05bYS5mZF09bnVsbH19ZnVuY3Rpb24gRGMoYSxiLGMpe2lmKCFhLnNlZWthYmxlfHwhYS5uLk4pdGhyb3cgbmV3IEcoRS5qYSk7YS5wb3NpdGlvbj1hLm4uTihhLGIsYyk7YS5TYj1bXX1mdW5jdGlvbiBFYyhhLGIsYyxkLGUpe2lmKDA+ZHx8MD5lKXRocm93IG5ldyBHKEUucCk7aWYoMT09PShhLmZsYWdzJjIwOTcxNTUpKXRocm93IG5ldyBHKEUuTCk7aWYoTChhLmcubW9kZSkpdGhyb3cgbmV3IEcoRS5TKTtpZighYS5uLnJlYWQpdGhyb3cgbmV3IEcoRS5wKTt2YXIgZz0hMDtpZihcInVuZGVmaW5lZFwiPT09dHlwZW9mIGUpZT1hLnBvc2l0aW9uLGc9ITE7ZWxzZSBpZighYS5zZWVrYWJsZSl0aHJvdyBuZXcgRyhFLmphKTtiPWEubi5yZWFkKGEsYixjLGQsZSk7Z3x8KGEucG9zaXRpb24rPWIpO3JldHVybiBifVxuZnVuY3Rpb24gRmMoYSxiLGMsZCxlLGcpe2lmKDA+ZHx8MD5lKXRocm93IG5ldyBHKEUucCk7aWYoMD09PShhLmZsYWdzJjIwOTcxNTUpKXRocm93IG5ldyBHKEUuTCk7aWYoTChhLmcubW9kZSkpdGhyb3cgbmV3IEcoRS5TKTtpZighYS5uLndyaXRlKXRocm93IG5ldyBHKEUucCk7YS5mbGFncyYxMDI0JiZEYyhhLDAsMik7dmFyIGg9ITA7aWYoXCJ1bmRlZmluZWRcIj09PXR5cGVvZiBlKWU9YS5wb3NpdGlvbixoPSExO2Vsc2UgaWYoIWEuc2Vla2FibGUpdGhyb3cgbmV3IEcoRS5qYSk7Yj1hLm4ud3JpdGUoYSxiLGMsZCxlLGcpO2h8fChhLnBvc2l0aW9uKz1iKTt0cnl7aWYoYS5wYXRoJiZPLm9uV3JpdGVUb0ZpbGUpTy5vbldyaXRlVG9GaWxlKGEucGF0aCl9Y2F0Y2gobSl7Y29uc29sZS5sb2coXCJGUy50cmFja2luZ0RlbGVnYXRlWydvbldyaXRlVG9GaWxlJ10oJ1wiK3BhdGgrXCInKSB0aHJldyBhbiBleGNlcHRpb246IFwiK20ubWVzc2FnZSl9cmV0dXJuIGJ9XG5mdW5jdGlvbiBHYygpe0d8fChHPWZ1bmN0aW9uKGEsYil7dGhpcy5nPWI7dGhpcy5QYj1mdW5jdGlvbihhKXt0aGlzLm89YTtmb3IodmFyIGIgaW4gRSlpZihFW2JdPT09YSl7dGhpcy5jb2RlPWI7YnJlYWt9fTt0aGlzLlBiKGEpO3RoaXMubWVzc2FnZT1GYlthXX0sRy5wcm90b3R5cGU9RXJyb3IoKSxHLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1HLFtFLkpdLmZvckVhY2goZnVuY3Rpb24oYSl7VmJbYV09bmV3IEcoYSk7VmJbYV0uc3RhY2s9XCI8Z2VuZXJpYyBlcnJvciwgbm8gc3RhY2s+XCJ9KSl9dmFyIEhjO2Z1bmN0aW9uIEljKGEsYil7dmFyIGM9MDthJiYoY3w9MzY1KTtiJiYoY3w9MTQ2KTtyZXR1cm4gY31mdW5jdGlvbiBKYyhhLGIsYyxkKXthPUYoXCJzdHJpbmdcIj09PXR5cGVvZiBhP2E6UShhKSxiKTtyZXR1cm4gcmMoYSxJYyhjLGQpKX1cbmZ1bmN0aW9uIEtjKGEsYixjLGQsZSxnKXthPWI/RihcInN0cmluZ1wiPT09dHlwZW9mIGE/YTpRKGEpLGIpOmE7ZD1JYyhkLGUpO2U9cmMoYSxkKTtpZihjKXtpZihcInN0cmluZ1wiPT09dHlwZW9mIGMpe2E9QXJyYXkoYy5sZW5ndGgpO2I9MDtmb3IodmFyIGg9Yy5sZW5ndGg7YjxoOysrYilhW2JdPWMuY2hhckNvZGVBdChiKTtjPWF9eGMoZSxkfDE0Nik7YT1BYyhlLFwid1wiKTtGYyhhLGMsMCxjLmxlbmd0aCwwLGcpO0NjKGEpO3hjKGUsZCl9cmV0dXJuIGV9XG5mdW5jdGlvbiBMYyhhLGIsYyxkKXthPUYoXCJzdHJpbmdcIj09PXR5cGVvZiBhP2E6UShhKSxiKTtiPUljKCEhYywhIWQpO0xjLlphfHwoTGMuWmE9NjQpO3ZhciBlPUxjLlphKys8PDh8MDtQYihlLHtvcGVuOmZ1bmN0aW9uKGEpe2Euc2Vla2FibGU9ITF9LGNsb3NlOmZ1bmN0aW9uKCl7ZCYmZC5idWZmZXImJmQuYnVmZmVyLmxlbmd0aCYmZCgxMCl9LHJlYWQ6ZnVuY3Rpb24oYSxiLGQsZSl7Zm9yKHZhciByPTAseD0wO3g8ZTt4Kyspe3ZhciB2O3RyeXt2PWMoKX1jYXRjaChJKXt0aHJvdyBuZXcgRyhFLk8pO31pZih2b2lkIDA9PT12JiYwPT09cil0aHJvdyBuZXcgRyhFLkdhKTtpZihudWxsPT09dnx8dm9pZCAwPT09dilicmVhaztyKys7YltkK3hdPXZ9ciYmKGEuZy50aW1lc3RhbXA9RGF0ZS5ub3coKSk7cmV0dXJuIHJ9LHdyaXRlOmZ1bmN0aW9uKGEsYixjLGUpe2Zvcih2YXIgcj0wO3I8ZTtyKyspdHJ5e2QoYltjK3JdKX1jYXRjaCh4KXt0aHJvdyBuZXcgRyhFLk8pO31lJiYoYS5nLnRpbWVzdGFtcD1cbkRhdGUubm93KCkpO3JldHVybiByfX0pO3JldHVybiBzYyhhLGIsZSl9XG5mdW5jdGlvbiBNYyhhKXtpZihhLkVifHxhLkZifHxhLmxpbmt8fGEuZSlyZXR1cm4hMDt2YXIgYj0hMDtpZihcInVuZGVmaW5lZFwiIT09dHlwZW9mIFhNTEh0dHBSZXF1ZXN0KXRocm93IEVycm9yKFwiTGF6eSBsb2FkaW5nIHNob3VsZCBoYXZlIGJlZW4gcGVyZm9ybWVkIChjb250ZW50cyBzZXQpIGluIGNyZWF0ZUxhenlGaWxlLCBidXQgaXQgd2FzIG5vdC4gTGF6eSBsb2FkaW5nIG9ubHkgd29ya3MgaW4gd2ViIHdvcmtlcnMuIFVzZSAtLWVtYmVkLWZpbGUgb3IgLS1wcmVsb2FkLWZpbGUgaW4gZW1jYyBvbiB0aGUgbWFpbiB0aHJlYWQuXCIpO2lmKGYucmVhZCl0cnl7YS5lPUQoZi5yZWFkKGEudXJsKSwhMCksYS5xPWEuZS5sZW5ndGh9Y2F0Y2goYyl7Yj0hMX1lbHNlIHRocm93IEVycm9yKFwiQ2Fubm90IGxvYWQgd2l0aG91dCByZWFkKCkgb3IgWE1MSHR0cFJlcXVlc3QuXCIpO2J8fEdiKEUuTyk7cmV0dXJuIGJ9dmFyIFM9e30saGMsbmMsQmMsTmM9e307XG5mdW5jdGlvbiBPYyhhLGIsYyl7dHJ5e3ZhciBkPWEoYil9Y2F0Y2goZSl7aWYoZSYmZS5nJiZJYihiKSE9PUliKFEoZS5nKSkpcmV0dXJuLUUuaWE7dGhyb3cgZTt9eVtjPj4yXT1kLmRldjt5W2MrND4+Ml09MDt5W2MrOD4+Ml09ZC5pbm87eVtjKzEyPj4yXT1kLm1vZGU7eVtjKzE2Pj4yXT1kLm5saW5rO3lbYysyMD4+Ml09ZC51aWQ7eVtjKzI0Pj4yXT1kLmdpZDt5W2MrMjg+PjJdPWQucmRldjt5W2MrMzI+PjJdPTA7eVtjKzM2Pj4yXT1kLnNpemU7eVtjKzQwPj4yXT00MDk2O3lbYys0ND4+Ml09ZC5ibG9ja3M7eVtjKzQ4Pj4yXT1kLmF0aW1lLmdldFRpbWUoKS8xRTN8MDt5W2MrNTI+PjJdPTA7eVtjKzU2Pj4yXT1kLm10aW1lLmdldFRpbWUoKS8xRTN8MDt5W2MrNjA+PjJdPTA7eVtjKzY0Pj4yXT1kLmN0aW1lLmdldFRpbWUoKS8xRTN8MDt5W2MrNjg+PjJdPTA7eVtjKzcyPj4yXT1kLmlubztyZXR1cm4gMH12YXIgVD0wO1xuZnVuY3Rpb24gVSgpe1QrPTQ7cmV0dXJuIHlbVC00Pj4yXX1mdW5jdGlvbiBWKCl7cmV0dXJuIHUoVSgpKX1mdW5jdGlvbiBQYygpe3ZhciBhO2E9VSgpO2E9TlthXTtpZighYSl0aHJvdyBuZXcgRyhFLkwpO3JldHVybiBhfXZhciB5YT12b2lkIDA7ZnVuY3Rpb24gUWMoYSl7YT1hLzFFMztpZigoZGF8fGVhKSYmc2VsZi5wZXJmb3JtYW5jZSYmc2VsZi5wZXJmb3JtYW5jZS5ub3cpZm9yKHZhciBiPXNlbGYucGVyZm9ybWFuY2Uubm93KCk7c2VsZi5wZXJmb3JtYW5jZS5ub3coKS1iPGE7KTtlbHNlIGZvcihiPURhdGUubm93KCk7RGF0ZS5ub3coKS1iPGE7KTtyZXR1cm4gMH1mLl91c2xlZXA9UWM7dmFyIFJjPXooNDQsXCJpOFwiLDIpO3ooRChcIkdNVFwiKSxcImk4XCIsMik7dmFyIFNjPXooOCxcImkzMipcIiwyKSxUYz16KDEsXCJpMzIqXCIsMiksVWM9eigxLFwiaTMyKlwiLDIpO1xuZnVuY3Rpb24gVmMoKXtmdW5jdGlvbiBhKGEpe3JldHVybihhPWEudG9UaW1lU3RyaW5nKCkubWF0Y2goL1xcKChbQS1aYS16IF0rKVxcKSQvKSk/YVsxXTpcIkdNVFwifWlmKCFWYy5CKXtWYy5CPSEwO3lbVWM+PjJdPTYwKi0obmV3IERhdGUpLmdldFRpbWV6b25lT2Zmc2V0KCk7dmFyIGI9bmV3IERhdGUoMkUzLDAsMSksYz1uZXcgRGF0ZSgyRTMsNiwxKTt5W1RjPj4yXT1OdW1iZXIoYi5nZXRUaW1lem9uZU9mZnNldCgpIT1jLmdldFRpbWV6b25lT2Zmc2V0KCkpO3ZhciBkPWEoYiksZT1hKGMpLGQ9eihEKGQpLFwiaThcIiwwKSxlPXooRChlKSxcImk4XCIsMCk7Yy5nZXRUaW1lem9uZU9mZnNldCgpPGIuZ2V0VGltZXpvbmVPZmZzZXQoKT8oeVtTYz4+Ml09ZCx5W1NjKzQ+PjJdPWUpOih5W1NjPj4yXT1lLHlbU2MrND4+Ml09ZCl9fVxuZnVuY3Rpb24gV2MoYSxiKXtWYygpO3ZhciBjPW5ldyBEYXRlKDFFMyp5W2E+PjJdKTt5W2I+PjJdPWMuZ2V0U2Vjb25kcygpO3lbYis0Pj4yXT1jLmdldE1pbnV0ZXMoKTt5W2IrOD4+Ml09Yy5nZXRIb3VycygpO3lbYisxMj4+Ml09Yy5nZXREYXRlKCk7eVtiKzE2Pj4yXT1jLmdldE1vbnRoKCk7eVtiKzIwPj4yXT1jLmdldEZ1bGxZZWFyKCktMTkwMDt5W2IrMjQ+PjJdPWMuZ2V0RGF5KCk7dmFyIGQ9bmV3IERhdGUoYy5nZXRGdWxsWWVhcigpLDAsMSk7eVtiKzI4Pj4yXT0oYy5nZXRUaW1lKCktZC5nZXRUaW1lKCkpLzg2NEU1fDA7eVtiKzM2Pj4yXT0tKDYwKmMuZ2V0VGltZXpvbmVPZmZzZXQoKSk7Yz1jLmdldFRpbWV6b25lT2Zmc2V0KCk9PU1hdGgubWluKGQuZ2V0VGltZXpvbmVPZmZzZXQoKSwobmV3IERhdGUoMkUzLDYsMSkpLmdldFRpbWV6b25lT2Zmc2V0KCkpfDA7eVtiKzMyPj4yXT1jO3lbYis0MD4+Ml09eVtTYysoYz9sLk06MCk+PjJdO3JldHVybiBifVxuZi5fYml0c2hpZnQ2NExzaHI9WGM7ZnVuY3Rpb24gWWMoYSxiKXtpYi5wdXNoKGZ1bmN0aW9uKCl7bC5UKFwidmlcIixhLFtiXSl9KTtZYy5sZXZlbD1pYi5sZW5ndGh9dmFyIFpjPXooMSxcImkzMipcIiwyKTtcbmZ1bmN0aW9uICRjKGEpe3ZhciBiLGM7JGMuQj8oYz15W1pjPj4yXSxiPXlbYz4+Ml0pOigkYy5CPSEwLFcuVVNFUj1XLkxPR05BTUU9XCJ3ZWJfdXNlclwiLFcuUEFUSD1cIi9cIixXLlBXRD1cIi9cIixXLkhPTUU9XCIvaG9tZS93ZWJfdXNlclwiLFcuTEFORz1cIkNcIixXLl89Zi50aGlzUHJvZ3JhbSxiPXooMTAyNCxcImk4XCIsMiksYz16KDI1NixcImk4KlwiLDIpLHlbYz4+Ml09Yix5W1pjPj4yXT1jKTt2YXIgZD1bXSxlPTAsZztmb3IoZyBpbiBhKWlmKFwic3RyaW5nXCI9PT10eXBlb2YgYVtnXSl7dmFyIGg9ZytcIj1cIithW2ddO2QucHVzaChoKTtlKz1oLmxlbmd0aH1pZigxMDI0PGUpdGhyb3cgRXJyb3IoXCJFbnZpcm9ubWVudCBzaXplIGV4Y2VlZGVkIFRPVEFMX0VOVl9TSVpFIVwiKTtmb3IoYT0wO2E8ZC5sZW5ndGg7YSsrKWg9ZFthXSxNYShoLGIpLHlbYys0KmE+PjJdPWIsYis9aC5sZW5ndGgrMTt5W2MrNCpkLmxlbmd0aD4+Ml09MH12YXIgVz17fTtcbmZ1bmN0aW9uIGFkKGEpe2lmKDA9PT1hKXJldHVybiAwO2E9dShhKTtpZighVy5oYXNPd25Qcm9wZXJ0eShhKSlyZXR1cm4gMDthZC5CJiZSYShhZC5CKTthZC5CPXooRChXW2FdKSxcImk4XCIsMCk7cmV0dXJuIGFkLkJ9Zi5fbWVtY3B5PWJkO2Z1bmN0aW9uIEthKGEpe0thLlZhfHwobj1VYShuKSxLYS5WYT0hMCxhc3NlcnQobC5iYSksS2EuR2I9bC5iYSxsLmJhPWZ1bmN0aW9uKCl7cShcImNhbm5vdCBkeW5hbWljYWxseSBhbGxvY2F0ZSwgc2JyayBub3cgaGFzIGNvbnRyb2xcIil9KTt2YXIgYj1uO3JldHVybiAwPT1hfHxLYS5HYihhKT9iOjQyOTQ5NjcyOTV9Zi5fbWVtbW92ZT1jZDtmdW5jdGlvbiBkZChhLGIpe1Q9YjtyZXR1cm4gMH1mLl9tZW1zZXQ9ZWQ7Zi5fYml0c2hpZnQ2NFNobD1mZDt2YXIgZ2Q9RGE7XG5mdW5jdGlvbiBoZChhLGIpe2lkPWE7amQ9YjtpZigha2QpcmV0dXJuIDE7aWYoMD09YSlsZD1mdW5jdGlvbigpe3NldFRpbWVvdXQobWQsYil9LG5kPVwidGltZW91dFwiO2Vsc2UgaWYoMT09YSlsZD1mdW5jdGlvbigpe29kKG1kKX0sbmQ9XCJyQUZcIjtlbHNlIGlmKDI9PWEpe2lmKCF3aW5kb3cuc2V0SW1tZWRpYXRlKXt2YXIgYz1bXTt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIixmdW5jdGlvbihhKXthLnNvdXJjZT09PXdpbmRvdyYmXCJfX2VtY2NcIj09PWEuZGF0YSYmKGEuc3RvcFByb3BhZ2F0aW9uKCksYy5zaGlmdCgpKCkpfSwhMCk7d2luZG93LnNldEltbWVkaWF0ZT1mdW5jdGlvbihhKXtjLnB1c2goYSk7d2luZG93LnBvc3RNZXNzYWdlKFwiX19lbWNjXCIsXCIqXCIpfX1sZD1mdW5jdGlvbigpe3dpbmRvdy5zZXRJbW1lZGlhdGUobWQpfTtuZD1cImltbWVkaWF0ZVwifXJldHVybiAwfVxuZnVuY3Rpb24gcGQoYSxiLGMsZCxlKXtmLm5vRXhpdFJ1bnRpbWU9ITA7YXNzZXJ0KCFrZCxcImVtc2NyaXB0ZW5fc2V0X21haW5fbG9vcDogdGhlcmUgY2FuIG9ubHkgYmUgb25lIG1haW4gbG9vcCBmdW5jdGlvbiBhdCBvbmNlOiBjYWxsIGVtc2NyaXB0ZW5fY2FuY2VsX21haW5fbG9vcCB0byBjYW5jZWwgdGhlIHByZXZpb3VzIG9uZSBiZWZvcmUgc2V0dGluZyBhIG5ldyBvbmUgd2l0aCBkaWZmZXJlbnQgcGFyYW1ldGVycy5cIik7a2Q9YTtxZD1kO3ZhciBnPXJkO21kPWZ1bmN0aW9uKCl7aWYoIXBhKWlmKDA8c2QubGVuZ3RoKXt2YXIgYj1EYXRlLm5vdygpLGM9c2Quc2hpZnQoKTtjLnZiKGMubGEpO2lmKHRkKXt2YXIgZT10ZCxyPTA9PWUlMT9lLTE6TWF0aC5mbG9vcihlKTt0ZD1jLnZlP3I6KDgqZSsocisuNSkpLzl9Y29uc29sZS5sb2coJ21haW4gbG9vcCBibG9ja2VyIFwiJytjLm5hbWUrJ1wiIHRvb2sgJysoRGF0ZS5ub3coKS1iKStcIiBtc1wiKTt1ZCgpO3NldFRpbWVvdXQobWQsXG4wKX1lbHNlIGc8cmR8fCh2ZD12ZCsxfDAsMT09aWQmJjE8amQmJjAhPXZkJWpkP2xkKCk6KFwidGltZW91dFwiPT09bmQmJmYud2EmJihmLmZhKFwiTG9va3MgbGlrZSB5b3UgYXJlIHJlbmRlcmluZyB3aXRob3V0IHVzaW5nIHJlcXVlc3RBbmltYXRpb25GcmFtZSBmb3IgdGhlIG1haW4gbG9vcC4gWW91IHNob3VsZCB1c2UgMCBmb3IgdGhlIGZyYW1lIHJhdGUgaW4gZW1zY3JpcHRlbl9zZXRfbWFpbl9sb29wIGluIG9yZGVyIHRvIHVzZSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUsIGFzIHRoYXQgY2FuIGdyZWF0bHkgaW1wcm92ZSB5b3VyIGZyYW1lIHJhdGVzIVwiKSxuZD1cIlwiKSx3ZChmdW5jdGlvbigpe1widW5kZWZpbmVkXCIhPT10eXBlb2YgZD9sLlQoXCJ2aVwiLGEsW2RdKTpsLlQoXCJ2XCIsYSl9KSxnPHJkfHwoXCJvYmplY3RcIj09PXR5cGVvZiBTREwmJlNETC5hdWRpbyYmU0RMLmF1ZGlvLkxiJiZTREwuYXVkaW8uTGIoKSxsZCgpKSkpfTtlfHwoYiYmMDxiP2hkKDAsMUUzL2IpOmhkKDEsMSksbGQoKSk7XG5pZihjKXRocm93XCJTaW11bGF0ZUluZmluaXRlTG9vcFwiO312YXIgbGQ9bnVsbCxuZD1cIlwiLHJkPTAsa2Q9bnVsbCxxZD0wLGlkPTAsamQ9MCx2ZD0wLHNkPVtdO2Z1bmN0aW9uIHVkKCl7aWYoZi5zZXRTdGF0dXMpe3ZhciBhPWYuc3RhdHVzTWVzc2FnZXx8XCJQbGVhc2Ugd2FpdC4uLlwiLGI9dGQsYz14ZC54ZTtiP2I8Yz9mLnNldFN0YXR1cyhhK1wiIChcIisoYy1iKStcIi9cIitjK1wiKVwiKTpmLnNldFN0YXR1cyhhKTpmLnNldFN0YXR1cyhcIlwiKX19ZnVuY3Rpb24gd2QoYSl7aWYoIShwYXx8Zi5wcmVNYWluTG9vcCYmITE9PT1mLnByZU1haW5Mb29wKCkpKXt0cnl7YSgpfWNhdGNoKGIpe2lmKGIgaW5zdGFuY2VvZiBsYSlyZXR1cm47YiYmXCJvYmplY3RcIj09PXR5cGVvZiBiJiZiLnN0YWNrJiZmLmZhKFwiZXhjZXB0aW9uIHRocm93bjogXCIrW2IsYi5zdGFja10pO3Rocm93IGI7fWYucG9zdE1haW5Mb29wJiZmLnBvc3RNYWluTG9vcCgpfX12YXIgeGQ9e30sbWQsdGQseWQ9ITEsemQ9ITEsQWQ9W107XG5mdW5jdGlvbiBCZCgpe2Z1bmN0aW9uIGEoKXt6ZD1kb2N1bWVudC5wb2ludGVyTG9ja0VsZW1lbnQ9PT1jfHxkb2N1bWVudC5tb3pQb2ludGVyTG9ja0VsZW1lbnQ9PT1jfHxkb2N1bWVudC53ZWJraXRQb2ludGVyTG9ja0VsZW1lbnQ9PT1jfHxkb2N1bWVudC5tc1BvaW50ZXJMb2NrRWxlbWVudD09PWN9Zi5wcmVsb2FkUGx1Z2luc3x8KGYucHJlbG9hZFBsdWdpbnM9W10pO2lmKCFDZCl7Q2Q9ITA7dHJ5e0RkPSEwfWNhdGNoKGIpe0RkPSExLGNvbnNvbGUubG9nKFwid2FybmluZzogbm8gYmxvYiBjb25zdHJ1Y3RvciwgY2Fubm90IGNyZWF0ZSBibG9icyB3aXRoIG1pbWV0eXBlc1wiKX1FZD1cInVuZGVmaW5lZFwiIT10eXBlb2YgTW96QmxvYkJ1aWxkZXI/TW96QmxvYkJ1aWxkZXI6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIFdlYktpdEJsb2JCdWlsZGVyP1dlYktpdEJsb2JCdWlsZGVyOkRkP251bGw6Y29uc29sZS5sb2coXCJ3YXJuaW5nOiBubyBCbG9iQnVpbGRlclwiKTtGZD1cInVuZGVmaW5lZFwiIT1cbnR5cGVvZiB3aW5kb3c/d2luZG93LlVSTD93aW5kb3cuVVJMOndpbmRvdy53ZWJraXRVUkw6dm9pZCAwO2YuYWJ8fFwidW5kZWZpbmVkXCIhPT10eXBlb2YgRmR8fChjb25zb2xlLmxvZyhcIndhcm5pbmc6IEJyb3dzZXIgZG9lcyBub3Qgc3VwcG9ydCBjcmVhdGluZyBvYmplY3QgVVJMcy4gQnVpbHQtaW4gYnJvd3NlciBpbWFnZSBkZWNvZGluZyB3aWxsIG5vdCBiZSBhdmFpbGFibGUuXCIpLGYuYWI9ITApO2YucHJlbG9hZFBsdWdpbnMucHVzaCh7Y2FuSGFuZGxlOmZ1bmN0aW9uKGEpe3JldHVybiFmLmFiJiYvXFwuKGpwZ3xqcGVnfHBuZ3xibXApJC9pLnRlc3QoYSl9LGhhbmRsZTpmdW5jdGlvbihhLGIsYyxoKXt2YXIgbT1udWxsO2lmKERkKXRyeXttPW5ldyBCbG9iKFthXSx7dHlwZTpHZChiKX0pLG0uc2l6ZSE9PWEubGVuZ3RoJiYobT1uZXcgQmxvYihbKG5ldyBVaW50OEFycmF5KGEpKS5idWZmZXJdLHt0eXBlOkdkKGIpfSkpfWNhdGNoKHQpe2wuWChcIkJsb2IgY29uc3RydWN0b3IgcHJlc2VudCBidXQgZmFpbHM6IFwiK1xudCtcIjsgZmFsbGluZyBiYWNrIHRvIGJsb2IgYnVpbGRlclwiKX1tfHwobT1uZXcgRWQsbS5hcHBlbmQoKG5ldyBVaW50OEFycmF5KGEpKS5idWZmZXIpLG09bS5nZXRCbG9iKCkpO3ZhciByPUZkLmNyZWF0ZU9iamVjdFVSTChtKSx4PW5ldyBJbWFnZTt4Lm9ubG9hZD1mdW5jdGlvbigpe2Fzc2VydCh4LmNvbXBsZXRlLFwiSW1hZ2UgXCIrYitcIiBjb3VsZCBub3QgYmUgZGVjb2RlZFwiKTt2YXIgaD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiY2FudmFzXCIpO2gud2lkdGg9eC53aWR0aDtoLmhlaWdodD14LmhlaWdodDtoLmdldENvbnRleHQoXCIyZFwiKS5kcmF3SW1hZ2UoeCwwLDApO2YucHJlbG9hZGVkSW1hZ2VzW2JdPWg7RmQucmV2b2tlT2JqZWN0VVJMKHIpO2MmJmMoYSl9O3gub25lcnJvcj1mdW5jdGlvbigpe2NvbnNvbGUubG9nKFwiSW1hZ2UgXCIrcitcIiBjb3VsZCBub3QgYmUgZGVjb2RlZFwiKTtoJiZoKCl9O3guc3JjPXJ9fSk7Zi5wcmVsb2FkUGx1Z2lucy5wdXNoKHtjYW5IYW5kbGU6ZnVuY3Rpb24oYSl7cmV0dXJuIWYuSmUmJlxuYS5zdWJzdHIoLTQpaW57XCIub2dnXCI6MSxcIi53YXZcIjoxLFwiLm1wM1wiOjF9fSxoYW5kbGU6ZnVuY3Rpb24oYSxiLGMsaCl7ZnVuY3Rpb24gbShoKXtyfHwocj0hMCxmLnByZWxvYWRlZEF1ZGlvc1tiXT1oLGMmJmMoYSkpfWZ1bmN0aW9uIHQoKXtyfHwocj0hMCxmLnByZWxvYWRlZEF1ZGlvc1tiXT1uZXcgQXVkaW8saCYmaCgpKX12YXIgcj0hMTtpZihEZCl7dHJ5e3ZhciB4PW5ldyBCbG9iKFthXSx7dHlwZTpHZChiKX0pfWNhdGNoKHYpe3JldHVybiB0KCl9dmFyIHg9RmQuY3JlYXRlT2JqZWN0VVJMKHgpLEk9bmV3IEF1ZGlvO0kuYWRkRXZlbnRMaXN0ZW5lcihcImNhbnBsYXl0aHJvdWdoXCIsZnVuY3Rpb24oKXttKEkpfSwhMSk7SS5vbmVycm9yPWZ1bmN0aW9uKCl7aWYoIXIpe2NvbnNvbGUubG9nKFwid2FybmluZzogYnJvd3NlciBjb3VsZCBub3QgZnVsbHkgZGVjb2RlIGF1ZGlvIFwiK2IrXCIsIHRyeWluZyBzbG93ZXIgYmFzZTY0IGFwcHJvYWNoXCIpO2Zvcih2YXIgYz1cIlwiLGc9MCxoPTAsXG54PTA7eDxhLmxlbmd0aDt4KyspZm9yKGc9Zzw8OHxhW3hdLGgrPTg7Njw9aDspdmFyIHY9Zz4+aC02JjYzLGg9aC02LGM9YytcIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky9cIlt2XTsyPT1oPyhjKz1cIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky9cIlsoZyYzKTw8NF0sYys9XCI9PVwiKTo0PT1oJiYoYys9XCJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvXCJbKGcmMTUpPDwyXSxjKz1cIj1cIik7SS5zcmM9XCJkYXRhOmF1ZGlvL3gtXCIrYi5zdWJzdHIoLTMpK1wiO2Jhc2U2NCxcIitjO20oSSl9fTtJLnNyYz14O0hkKGZ1bmN0aW9uKCl7bShJKX0pfWVsc2UgcmV0dXJuIHQoKX19KTt2YXIgYz1mLmNhbnZhcztjJiYoYy5FYT1jLnJlcXVlc3RQb2ludGVyTG9ja3x8Yy5tb3pSZXF1ZXN0UG9pbnRlckxvY2t8fFxuYy53ZWJraXRSZXF1ZXN0UG9pbnRlckxvY2t8fGMubXNSZXF1ZXN0UG9pbnRlckxvY2t8fGZ1bmN0aW9uKCl7fSxjLlJhPWRvY3VtZW50LmV4aXRQb2ludGVyTG9ja3x8ZG9jdW1lbnQubW96RXhpdFBvaW50ZXJMb2NrfHxkb2N1bWVudC53ZWJraXRFeGl0UG9pbnRlckxvY2t8fGRvY3VtZW50Lm1zRXhpdFBvaW50ZXJMb2NrfHxmdW5jdGlvbigpe30sYy5SYT1jLlJhLmJpbmQoZG9jdW1lbnQpLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJwb2ludGVybG9ja2NoYW5nZVwiLGEsITEpLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJtb3pwb2ludGVybG9ja2NoYW5nZVwiLGEsITEpLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJ3ZWJraXRwb2ludGVybG9ja2NoYW5nZVwiLGEsITEpLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJtc3BvaW50ZXJsb2NrY2hhbmdlXCIsYSwhMSksZi5lbGVtZW50UG9pbnRlckxvY2smJmMuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsZnVuY3Rpb24oYSl7IXpkJiZcbmMuRWEmJihjLkVhKCksYS5wcmV2ZW50RGVmYXVsdCgpKX0sITEpKX19ZnVuY3Rpb24gSWQoYSxiLGMsZCl7aWYoYiYmZi53YSYmYT09Zi5jYW52YXMpcmV0dXJuIGYud2E7dmFyIGUsZztpZihiKXtnPXthbnRpYWxpYXM6ITEsYWxwaGE6ITF9O2lmKGQpZm9yKHZhciBoIGluIGQpZ1toXT1kW2hdO2lmKGc9R0wuY3JlYXRlQ29udGV4dChhLGcpKWU9R0wuZ2V0Q29udGV4dChnKS5aZDthLnN0eWxlLmJhY2tncm91bmRDb2xvcj1cImJsYWNrXCJ9ZWxzZSBlPWEuZ2V0Q29udGV4dChcIjJkXCIpO2lmKCFlKXJldHVybiBudWxsO2MmJihifHxhc3NlcnQoXCJ1bmRlZmluZWRcIj09PXR5cGVvZiBHTGN0eCxcImNhbm5vdCBzZXQgaW4gbW9kdWxlIGlmIEdMY3R4IGlzIHVzZWQsIGJ1dCB3ZSBhcmUgYSBub24tR0wgY29udGV4dCB0aGF0IHdvdWxkIHJlcGxhY2UgaXRcIiksZi53YT1lLGImJkdMLkllKGcpLGYuTGU9YixBZC5mb3JFYWNoKGZ1bmN0aW9uKGEpe2EoKX0pLEJkKCkpO3JldHVybiBlfVxudmFyIEpkPSExLEtkPXZvaWQgMCxMZD12b2lkIDA7XG5mdW5jdGlvbiBNZChhLGIsYyl7ZnVuY3Rpb24gZCgpe3lkPSExO3ZhciBhPWUucGFyZW50Tm9kZTsoZG9jdW1lbnQud2Via2l0RnVsbFNjcmVlbkVsZW1lbnR8fGRvY3VtZW50LndlYmtpdEZ1bGxzY3JlZW5FbGVtZW50fHxkb2N1bWVudC5tb3pGdWxsU2NyZWVuRWxlbWVudHx8ZG9jdW1lbnQubW96RnVsbHNjcmVlbkVsZW1lbnR8fGRvY3VtZW50LmZ1bGxTY3JlZW5FbGVtZW50fHxkb2N1bWVudC5mdWxsc2NyZWVuRWxlbWVudHx8ZG9jdW1lbnQubXNGdWxsU2NyZWVuRWxlbWVudHx8ZG9jdW1lbnQubXNGdWxsc2NyZWVuRWxlbWVudHx8ZG9jdW1lbnQud2Via2l0Q3VycmVudEZ1bGxTY3JlZW5FbGVtZW50KT09PWE/KGUuUGE9ZG9jdW1lbnQuY2FuY2VsRnVsbFNjcmVlbnx8ZG9jdW1lbnQubW96Q2FuY2VsRnVsbFNjcmVlbnx8ZG9jdW1lbnQud2Via2l0Q2FuY2VsRnVsbFNjcmVlbnx8ZG9jdW1lbnQubXNFeGl0RnVsbHNjcmVlbnx8ZG9jdW1lbnQuZXhpdEZ1bGxzY3JlZW58fGZ1bmN0aW9uKCl7fSxcbmUuUGE9ZS5QYS5iaW5kKGRvY3VtZW50KSxLZCYmZS5FYSgpLHlkPSEwLExkJiZOZCgpKTooYS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShlLGEpLGEucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChhKSxMZCYmT2QoKSk7aWYoZi5vbkZ1bGxTY3JlZW4pZi5vbkZ1bGxTY3JlZW4oeWQpO1BkKGUpfUtkPWE7TGQ9YjtRZD1jO1widW5kZWZpbmVkXCI9PT10eXBlb2YgS2QmJihLZD0hMCk7XCJ1bmRlZmluZWRcIj09PXR5cGVvZiBMZCYmKExkPSExKTtcInVuZGVmaW5lZFwiPT09dHlwZW9mIFFkJiYoUWQ9bnVsbCk7dmFyIGU9Zi5jYW52YXM7SmR8fChKZD0hMCxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwiZnVsbHNjcmVlbmNoYW5nZVwiLGQsITEpLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJtb3pmdWxsc2NyZWVuY2hhbmdlXCIsZCwhMSksZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcIndlYmtpdGZ1bGxzY3JlZW5jaGFuZ2VcIixkLCExKSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwiTVNGdWxsc2NyZWVuQ2hhbmdlXCIsXG5kLCExKSk7dmFyIGc9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtlLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGcsZSk7Zy5hcHBlbmRDaGlsZChlKTtnLkI9Zy5yZXF1ZXN0RnVsbFNjcmVlbnx8Zy5tb3pSZXF1ZXN0RnVsbFNjcmVlbnx8Zy5tc1JlcXVlc3RGdWxsc2NyZWVufHwoZy53ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbj9mdW5jdGlvbigpe2cud2Via2l0UmVxdWVzdEZ1bGxTY3JlZW4oRWxlbWVudC5BTExPV19LRVlCT0FSRF9JTlBVVCl9Om51bGwpO2M/Zy5CKHtNZTpjfSk6Zy5CKCl9dmFyIFJkPTA7ZnVuY3Rpb24gU2QoYSl7dmFyIGI9RGF0ZS5ub3coKTtpZigwPT09UmQpUmQ9YisxRTMvNjA7ZWxzZSBmb3IoO2IrMj49UmQ7KVJkKz0xRTMvNjA7Yj1NYXRoLm1heChSZC1iLDApO3NldFRpbWVvdXQoYSxiKX1cbmZ1bmN0aW9uIG9kKGEpe1widW5kZWZpbmVkXCI9PT10eXBlb2Ygd2luZG93P1NkKGEpOih3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lfHwod2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZT13aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lfHx3aW5kb3cubW96UmVxdWVzdEFuaW1hdGlvbkZyYW1lfHx3aW5kb3cud2Via2l0UmVxdWVzdEFuaW1hdGlvbkZyYW1lfHx3aW5kb3cubXNSZXF1ZXN0QW5pbWF0aW9uRnJhbWV8fHdpbmRvdy5vUmVxdWVzdEFuaW1hdGlvbkZyYW1lfHxTZCksd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZShhKSl9ZnVuY3Rpb24gSGQoYSl7Zi5ub0V4aXRSdW50aW1lPSEwO3NldFRpbWVvdXQoZnVuY3Rpb24oKXtwYXx8YSgpfSwxRTQpfVxuZnVuY3Rpb24gR2QoYSl7cmV0dXJue2pwZzpcImltYWdlL2pwZWdcIixqcGVnOlwiaW1hZ2UvanBlZ1wiLHBuZzpcImltYWdlL3BuZ1wiLGJtcDpcImltYWdlL2JtcFwiLG9nZzpcImF1ZGlvL29nZ1wiLHdhdjpcImF1ZGlvL3dhdlwiLG1wMzpcImF1ZGlvL21wZWdcIn1bYS5zdWJzdHIoYS5sYXN0SW5kZXhPZihcIi5cIikrMSldfWZ1bmN0aW9uIFRkKGEsYixjKXt2YXIgZD1uZXcgWE1MSHR0cFJlcXVlc3Q7ZC5vcGVuKFwiR0VUXCIsYSwhMCk7ZC5yZXNwb25zZVR5cGU9XCJhcnJheWJ1ZmZlclwiO2Qub25sb2FkPWZ1bmN0aW9uKCl7MjAwPT1kLnN0YXR1c3x8MD09ZC5zdGF0dXMmJmQucmVzcG9uc2U/YihkLnJlc3BvbnNlKTpjKCl9O2Qub25lcnJvcj1jO2Quc2VuZChudWxsKX1cbmZ1bmN0aW9uIFVkKGEsYixjKXtUZChhLGZ1bmN0aW9uKGMpe2Fzc2VydChjLCdMb2FkaW5nIGRhdGEgZmlsZSBcIicrYSsnXCIgZmFpbGVkIChubyBhcnJheUJ1ZmZlcikuJyk7YihuZXcgVWludDhBcnJheShjKSk7QmIoKX0sZnVuY3Rpb24oKXtpZihjKWMoKTtlbHNlIHRocm93J0xvYWRpbmcgZGF0YSBmaWxlIFwiJythKydcIiBmYWlsZWQuJzt9KTtBYigpfXZhciBWZD1bXTtmdW5jdGlvbiBXZCgpe3ZhciBhPWYuY2FudmFzO1ZkLmZvckVhY2goZnVuY3Rpb24oYil7YihhLndpZHRoLGEuaGVpZ2h0KX0pfWZ1bmN0aW9uIE5kKCl7aWYoXCJ1bmRlZmluZWRcIiE9dHlwZW9mIFNETCl7dmFyIGE9V2FbU0RMLnNjcmVlbiswKmwuTT4+Ml07eVtTREwuc2NyZWVuKzAqbC5NPj4yXT1hfDgzODg2MDh9V2QoKX1cbmZ1bmN0aW9uIE9kKCl7aWYoXCJ1bmRlZmluZWRcIiE9dHlwZW9mIFNETCl7dmFyIGE9V2FbU0RMLnNjcmVlbiswKmwuTT4+Ml07eVtTREwuc2NyZWVuKzAqbC5NPj4yXT1hJi04Mzg4NjA5fVdkKCl9XG5mdW5jdGlvbiBQZChhLGIsYyl7YiYmYz8oYS5UYj1iLGEuQ2I9Yyk6KGI9YS5UYixjPWEuQ2IpO3ZhciBkPWIsZT1jO2YuZm9yY2VkQXNwZWN0UmF0aW8mJjA8Zi5mb3JjZWRBc3BlY3RSYXRpbyYmKGQvZTxmLmZvcmNlZEFzcGVjdFJhdGlvP2Q9TWF0aC5yb3VuZChlKmYuZm9yY2VkQXNwZWN0UmF0aW8pOmU9TWF0aC5yb3VuZChkL2YuZm9yY2VkQXNwZWN0UmF0aW8pKTtpZigoZG9jdW1lbnQud2Via2l0RnVsbFNjcmVlbkVsZW1lbnR8fGRvY3VtZW50LndlYmtpdEZ1bGxzY3JlZW5FbGVtZW50fHxkb2N1bWVudC5tb3pGdWxsU2NyZWVuRWxlbWVudHx8ZG9jdW1lbnQubW96RnVsbHNjcmVlbkVsZW1lbnR8fGRvY3VtZW50LmZ1bGxTY3JlZW5FbGVtZW50fHxkb2N1bWVudC5mdWxsc2NyZWVuRWxlbWVudHx8ZG9jdW1lbnQubXNGdWxsU2NyZWVuRWxlbWVudHx8ZG9jdW1lbnQubXNGdWxsc2NyZWVuRWxlbWVudHx8ZG9jdW1lbnQud2Via2l0Q3VycmVudEZ1bGxTY3JlZW5FbGVtZW50KT09PVxuYS5wYXJlbnROb2RlJiZcInVuZGVmaW5lZFwiIT10eXBlb2Ygc2NyZWVuKXZhciBnPU1hdGgubWluKHNjcmVlbi53aWR0aC9kLHNjcmVlbi5oZWlnaHQvZSksZD1NYXRoLnJvdW5kKGQqZyksZT1NYXRoLnJvdW5kKGUqZyk7TGQ/KGEud2lkdGghPWQmJihhLndpZHRoPWQpLGEuaGVpZ2h0IT1lJiYoYS5oZWlnaHQ9ZSksXCJ1bmRlZmluZWRcIiE9dHlwZW9mIGEuc3R5bGUmJihhLnN0eWxlLnJlbW92ZVByb3BlcnR5KFwid2lkdGhcIiksYS5zdHlsZS5yZW1vdmVQcm9wZXJ0eShcImhlaWdodFwiKSkpOihhLndpZHRoIT1iJiYoYS53aWR0aD1iKSxhLmhlaWdodCE9YyYmKGEuaGVpZ2h0PWMpLFwidW5kZWZpbmVkXCIhPXR5cGVvZiBhLnN0eWxlJiYoZCE9Ynx8ZSE9Yz8oYS5zdHlsZS5zZXRQcm9wZXJ0eShcIndpZHRoXCIsZCtcInB4XCIsXCJpbXBvcnRhbnRcIiksYS5zdHlsZS5zZXRQcm9wZXJ0eShcImhlaWdodFwiLGUrXCJweFwiLFwiaW1wb3J0YW50XCIpKTooYS5zdHlsZS5yZW1vdmVQcm9wZXJ0eShcIndpZHRoXCIpLGEuc3R5bGUucmVtb3ZlUHJvcGVydHkoXCJoZWlnaHRcIikpKSl9XG52YXIgQ2QsRGQsRWQsRmQsUWQsWGQ9RWE7R2MoKTthYz1BcnJheSg0MDk2KTtwYyhLLFwiL1wiKTtSKFwiL3RtcFwiKTtSKFwiL2hvbWVcIik7UihcIi9ob21lL3dlYl91c2VyXCIpO1xuKGZ1bmN0aW9uKCl7UihcIi9kZXZcIik7UGIoMjU5LHtyZWFkOmZ1bmN0aW9uKCl7cmV0dXJuIDB9LHdyaXRlOmZ1bmN0aW9uKGEsYixlLGcpe3JldHVybiBnfX0pO3NjKFwiL2Rldi9udWxsXCIsMjU5KTtPYigxMjgwLFJiKTtPYigxNTM2LFNiKTtzYyhcIi9kZXYvdHR5XCIsMTI4MCk7c2MoXCIvZGV2L3R0eTFcIiwxNTM2KTt2YXIgYTtpZihcInVuZGVmaW5lZFwiIT09dHlwZW9mIGNyeXB0byl7dmFyIGI9bmV3IFVpbnQ4QXJyYXkoMSk7YT1mdW5jdGlvbigpe2NyeXB0by5nZXRSYW5kb21WYWx1ZXMoYik7cmV0dXJuIGJbMF19fWVsc2UgYT1mYT9mdW5jdGlvbigpe3JldHVybiByZXF1aXJlKFwiY3J5cHRvXCIpLnJhbmRvbUJ5dGVzKDEpWzBdfTpmdW5jdGlvbigpe3JldHVybiAyNTYqTWF0aC5yYW5kb20oKXwwfTtMYyhcIi9kZXZcIixcInJhbmRvbVwiLGEpO0xjKFwiL2RldlwiLFwidXJhbmRvbVwiLGEpO1IoXCIvZGV2L3NobVwiKTtSKFwiL2Rldi9zaG0vdG1wXCIpfSkoKTtSKFwiL3Byb2NcIik7UihcIi9wcm9jL3NlbGZcIik7XG5SKFwiL3Byb2Mvc2VsZi9mZFwiKTtwYyh7RDpmdW5jdGlvbigpe3ZhciBhPVViKFwiL3Byb2Mvc2VsZlwiLFwiZmRcIiwxNjg5NSw3Myk7YS5rPXtsb29rdXA6ZnVuY3Rpb24oYSxjKXt2YXIgZD1OWytjXTtpZighZCl0aHJvdyBuZXcgRyhFLkwpO3ZhciBlPXtwYXJlbnQ6bnVsbCxEOnskYTpcImZha2VcIn0sazp7cmVhZGxpbms6ZnVuY3Rpb24oKXtyZXR1cm4gZC5wYXRofX19O3JldHVybiBlLnBhcmVudD1lfX07cmV0dXJuIGF9fSxcIi9wcm9jL3NlbGYvZmRcIik7XG5nYi51bnNoaWZ0KGZ1bmN0aW9uKCl7aWYoIWYubm9GU0luaXQmJiFIYyl7YXNzZXJ0KCFIYyxcIkZTLmluaXQgd2FzIHByZXZpb3VzbHkgY2FsbGVkLiBJZiB5b3Ugd2FudCB0byBpbml0aWFsaXplIGxhdGVyIHdpdGggY3VzdG9tIHBhcmFtZXRlcnMsIHJlbW92ZSBhbnkgZWFybGllciBjYWxscyAobm90ZSB0aGF0IG9uZSBpcyBhdXRvbWF0aWNhbGx5IGFkZGVkIHRvIHRoZSBnZW5lcmF0ZWQgY29kZSlcIik7SGM9ITA7R2MoKTtmLnN0ZGluPWYuc3RkaW47Zi5zdGRvdXQ9Zi5zdGRvdXQ7Zi5zdGRlcnI9Zi5zdGRlcnI7Zi5zdGRpbj9MYyhcIi9kZXZcIixcInN0ZGluXCIsZi5zdGRpbik6dGMoXCIvZGV2L3R0eVwiLFwiL2Rldi9zdGRpblwiKTtmLnN0ZG91dD9MYyhcIi9kZXZcIixcInN0ZG91dFwiLG51bGwsZi5zdGRvdXQpOnRjKFwiL2Rldi90dHlcIixcIi9kZXYvc3Rkb3V0XCIpO2Yuc3RkZXJyP0xjKFwiL2RldlwiLFwic3RkZXJyXCIsbnVsbCxmLnN0ZGVycik6dGMoXCIvZGV2L3R0eTFcIixcIi9kZXYvc3RkZXJyXCIpO1xudmFyIGE9QWMoXCIvZGV2L3N0ZGluXCIsXCJyXCIpO2Fzc2VydCgwPT09YS5mZCxcImludmFsaWQgaGFuZGxlIGZvciBzdGRpbiAoXCIrYS5mZCtcIilcIik7YT1BYyhcIi9kZXYvc3Rkb3V0XCIsXCJ3XCIpO2Fzc2VydCgxPT09YS5mZCxcImludmFsaWQgaGFuZGxlIGZvciBzdGRvdXQgKFwiK2EuZmQrXCIpXCIpO2E9QWMoXCIvZGV2L3N0ZGVyclwiLFwid1wiKTthc3NlcnQoMj09PWEuZmQsXCJpbnZhbGlkIGhhbmRsZSBmb3Igc3RkZXJyIChcIithLmZkK1wiKVwiKX19KTtoYi5wdXNoKGZ1bmN0aW9uKCl7YmM9ITF9KTtpYi5wdXNoKGZ1bmN0aW9uKCl7SGM9ITE7dmFyIGE9Zi5fZmZsdXNoO2EmJmEoMCk7Zm9yKGE9MDthPE4ubGVuZ3RoO2ErKyl7dmFyIGI9TlthXTtiJiZDYyhiKX19KTtmLkZTX2NyZWF0ZUZvbGRlcj1mdW5jdGlvbihhLGIsYyxkKXthPUYoXCJzdHJpbmdcIj09PXR5cGVvZiBhP2E6UShhKSxiKTtyZXR1cm4gUihhLEljKGMsZCkpfTtcbmYuRlNfY3JlYXRlUGF0aD1mdW5jdGlvbihhLGIpe2E9XCJzdHJpbmdcIj09PXR5cGVvZiBhP2E6UShhKTtmb3IodmFyIGM9Yi5zcGxpdChcIi9cIikucmV2ZXJzZSgpO2MubGVuZ3RoOyl7dmFyIGQ9Yy5wb3AoKTtpZihkKXt2YXIgZT1GKGEsZCk7dHJ5e1IoZSl9Y2F0Y2goZyl7fWE9ZX19cmV0dXJuIGV9O2YuRlNfY3JlYXRlRGF0YUZpbGU9S2M7XG5mLkZTX2NyZWF0ZVByZWxvYWRlZEZpbGU9ZnVuY3Rpb24oYSxiLGMsZCxlLGcsaCxtLHQscil7ZnVuY3Rpb24geChjKXtmdW5jdGlvbiB4KGMpe3ImJnIoKTttfHxLYyhhLGIsYyxkLGUsdCk7ZyYmZygpO0JiKCl9dmFyIGFhPSExO2YucHJlbG9hZFBsdWdpbnMuZm9yRWFjaChmdW5jdGlvbihhKXshYWEmJmEuY2FuSGFuZGxlKHYpJiYoYS5oYW5kbGUoYyx2LHgsZnVuY3Rpb24oKXtoJiZoKCk7QmIoKX0pLGFhPSEwKX0pO2FhfHx4KGMpfUJkKCk7dmFyIHY9Yj9NYihGKGEsYikpOmE7QWIoKTtcInN0cmluZ1wiPT10eXBlb2YgYz9VZChjLGZ1bmN0aW9uKGEpe3goYSl9LGgpOngoYyl9O1xuZi5GU19jcmVhdGVMYXp5RmlsZT1mdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBnLGg7ZnVuY3Rpb24gbSgpe3RoaXMuQWE9ITE7dGhpcy5tYT1bXX1tLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oYSl7aWYoIShhPnRoaXMubGVuZ3RoLTF8fDA+YSkpe3ZhciBiPWEldGhpcy5jaHVua1NpemU7cmV0dXJuIHRoaXMuQmIoYS90aGlzLmNodW5rU2l6ZXwwKVtiXX19O20ucHJvdG90eXBlLk9iPWZ1bmN0aW9uKGEpe3RoaXMuQmI9YX07bS5wcm90b3R5cGUuT2E9ZnVuY3Rpb24oKXt2YXIgYT1uZXcgWE1MSHR0cFJlcXVlc3Q7YS5vcGVuKFwiSEVBRFwiLGMsITEpO2Euc2VuZChudWxsKTtpZighKDIwMDw9YS5zdGF0dXMmJjMwMD5hLnN0YXR1c3x8MzA0PT09YS5zdGF0dXMpKXRocm93IEVycm9yKFwiQ291bGRuJ3QgbG9hZCBcIitjK1wiLiBTdGF0dXM6IFwiK2Euc3RhdHVzKTt2YXIgYj1OdW1iZXIoYS5nZXRSZXNwb25zZUhlYWRlcihcIkNvbnRlbnQtbGVuZ3RoXCIpKSxkLGU9MTA0ODU3NjsoZD1hLmdldFJlc3BvbnNlSGVhZGVyKFwiQWNjZXB0LVJhbmdlc1wiKSkmJlxuXCJieXRlc1wiPT09ZHx8KGU9Yik7dmFyIGc9dGhpcztnLk9iKGZ1bmN0aW9uKGEpe3ZhciBkPWEqZSxoPShhKzEpKmUtMSxoPU1hdGgubWluKGgsYi0xKTtpZihcInVuZGVmaW5lZFwiPT09dHlwZW9mIGcubWFbYV0pe3ZhciBtPWcubWE7aWYoZD5oKXRocm93IEVycm9yKFwiaW52YWxpZCByYW5nZSAoXCIrZCtcIiwgXCIraCtcIikgb3Igbm8gYnl0ZXMgcmVxdWVzdGVkIVwiKTtpZihoPmItMSl0aHJvdyBFcnJvcihcIm9ubHkgXCIrYitcIiBieXRlcyBhdmFpbGFibGUhIHByb2dyYW1tZXIgZXJyb3IhXCIpO3ZhciByPW5ldyBYTUxIdHRwUmVxdWVzdDtyLm9wZW4oXCJHRVRcIixjLCExKTtiIT09ZSYmci5zZXRSZXF1ZXN0SGVhZGVyKFwiUmFuZ2VcIixcImJ5dGVzPVwiK2QrXCItXCIraCk7XCJ1bmRlZmluZWRcIiE9dHlwZW9mIFVpbnQ4QXJyYXkmJihyLnJlc3BvbnNlVHlwZT1cImFycmF5YnVmZmVyXCIpO3Iub3ZlcnJpZGVNaW1lVHlwZSYmci5vdmVycmlkZU1pbWVUeXBlKFwidGV4dC9wbGFpbjsgY2hhcnNldD14LXVzZXItZGVmaW5lZFwiKTtcbnIuc2VuZChudWxsKTtpZighKDIwMDw9ci5zdGF0dXMmJjMwMD5yLnN0YXR1c3x8MzA0PT09ci5zdGF0dXMpKXRocm93IEVycm9yKFwiQ291bGRuJ3QgbG9hZCBcIitjK1wiLiBTdGF0dXM6IFwiK3Iuc3RhdHVzKTtkPXZvaWQgMCE9PXIucmVzcG9uc2U/bmV3IFVpbnQ4QXJyYXkoci5yZXNwb25zZXx8W10pOkQoci5yZXNwb25zZVRleHR8fFwiXCIsITApO21bYV09ZH1pZihcInVuZGVmaW5lZFwiPT09dHlwZW9mIGcubWFbYV0pdGhyb3cgRXJyb3IoXCJkb1hIUiBmYWlsZWQhXCIpO3JldHVybiBnLm1hW2FdfSk7dGhpcy5sYj1iO3RoaXMua2I9ZTt0aGlzLkFhPSEwfTtpZihcInVuZGVmaW5lZFwiIT09dHlwZW9mIFhNTEh0dHBSZXF1ZXN0KXtpZighZWEpdGhyb3dcIkNhbm5vdCBkbyBzeW5jaHJvbm91cyBiaW5hcnkgWEhScyBvdXRzaWRlIHdlYndvcmtlcnMgaW4gbW9kZXJuIGJyb3dzZXJzLiBVc2UgLS1lbWJlZC1maWxlIG9yIC0tcHJlbG9hZC1maWxlIGluIGVtY2NcIjtnPW5ldyBtO09iamVjdC5kZWZpbmVQcm9wZXJ0eShnLFxuXCJsZW5ndGhcIix7Z2V0OmZ1bmN0aW9uKCl7dGhpcy5BYXx8dGhpcy5PYSgpO3JldHVybiB0aGlzLmxifX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShnLFwiY2h1bmtTaXplXCIse2dldDpmdW5jdGlvbigpe3RoaXMuQWF8fHRoaXMuT2EoKTtyZXR1cm4gdGhpcy5rYn19KTtoPXZvaWQgMH1lbHNlIGg9YyxnPXZvaWQgMDt2YXIgdD1KYyhhLGIsZCxlKTtnP3QuZT1nOmgmJih0LmU9bnVsbCx0LnVybD1oKTtPYmplY3QuZGVmaW5lUHJvcGVydHkodCxcInVzZWRCeXRlc1wiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lLmxlbmd0aH19KTt2YXIgcj17fTtPYmplY3Qua2V5cyh0Lm4pLmZvckVhY2goZnVuY3Rpb24oYSl7dmFyIGI9dC5uW2FdO3JbYV09ZnVuY3Rpb24oKXtpZighTWModCkpdGhyb3cgbmV3IEcoRS5PKTtyZXR1cm4gYi5hcHBseShudWxsLGFyZ3VtZW50cyl9fSk7ci5yZWFkPWZ1bmN0aW9uKGEsYixjLGQsZSl7aWYoIU1jKHQpKXRocm93IG5ldyBHKEUuTyk7YT1hLmcuZTtpZihlPj1cbmEubGVuZ3RoKXJldHVybiAwO2Q9TWF0aC5taW4oYS5sZW5ndGgtZSxkKTthc3NlcnQoMDw9ZCk7aWYoYS5zbGljZSlmb3IodmFyIGc9MDtnPGQ7ZysrKWJbYytnXT1hW2UrZ107ZWxzZSBmb3IoZz0wO2c8ZDtnKyspYltjK2ddPWEuZ2V0KGUrZyk7cmV0dXJuIGR9O3Qubj1yO3JldHVybiB0fTtmLkZTX2NyZWF0ZUxpbms9ZnVuY3Rpb24oYSxiLGMpe2E9RihcInN0cmluZ1wiPT09dHlwZW9mIGE/YTpRKGEpLGIpO3JldHVybiB0YyhjLGEpfTtmLkZTX2NyZWF0ZURldmljZT1MYztmLkZTX3VubGluaz11YztnYi51bnNoaWZ0KGZ1bmN0aW9uKCl7fSk7aWIucHVzaChmdW5jdGlvbigpe30pO2lmKGZhKXt2YXIgZnM9cmVxdWlyZShcImZzXCIpLFhiPXJlcXVpcmUoXCJwYXRoXCIpO00uUmIoKX0kYyhXKTtmLnJlcXVlc3RGdWxsU2NyZWVuPWZ1bmN0aW9uKGEsYixjKXtNZChhLGIsYyl9O2YucmVxdWVzdEFuaW1hdGlvbkZyYW1lPWZ1bmN0aW9uKGEpe29kKGEpfTtcbmYuc2V0Q2FudmFzU2l6ZT1mdW5jdGlvbihhLGIsYyl7UGQoZi5jYW52YXMsYSxiKTtjfHxXZCgpfTtmLnBhdXNlTWFpbkxvb3A9ZnVuY3Rpb24oKXtsZD1udWxsO3JkKyt9O2YucmVzdW1lTWFpbkxvb3A9ZnVuY3Rpb24oKXtyZCsrO3ZhciBhPWlkLGI9amQsYz1rZDtrZD1udWxsO3BkKGMsMCwhMSxxZCwhMCk7aGQoYSxiKTtsZCgpfTtmLmdldFVzZXJNZWRpYT1mdW5jdGlvbigpe3dpbmRvdy5CfHwod2luZG93LkI9bmF2aWdhdG9yLmdldFVzZXJNZWRpYXx8bmF2aWdhdG9yLm1vekdldFVzZXJNZWRpYSk7d2luZG93LkIodm9pZCAwKX07Zi5jcmVhdGVDb250ZXh0PWZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiBJZChhLGIsYyxkKX07WWE9az1sLnRhKG5hKTtKYT0hMDtaYT1ZYStkYjskYT1uPWwudGEoWmEpO2Fzc2VydCgkYTxwLFwiVE9UQUxfTUVNT1JZIG5vdCBiaWcgZW5vdWdoIGZvciBzdGFja1wiKTtcbnZhciBZZD16KFs4LDAsMSwwLDIsMCwxLDAsMywwLDEsMCwyLDAsMSwwLDQsMCwxLDAsMiwwLDEsMCwzLDAsMSwwLDIsMCwxLDAsNSwwLDEsMCwyLDAsMSwwLDMsMCwxLDAsMiwwLDEsMCw0LDAsMSwwLDIsMCwxLDAsMywwLDEsMCwyLDAsMSwwLDYsMCwxLDAsMiwwLDEsMCwzLDAsMSwwLDIsMCwxLDAsNCwwLDEsMCwyLDAsMSwwLDMsMCwxLDAsMiwwLDEsMCw1LDAsMSwwLDIsMCwxLDAsMywwLDEsMCwyLDAsMSwwLDQsMCwxLDAsMiwwLDEsMCwzLDAsMSwwLDIsMCwxLDAsNywwLDEsMCwyLDAsMSwwLDMsMCwxLDAsMiwwLDEsMCw0LDAsMSwwLDIsMCwxLDAsMywwLDEsMCwyLDAsMSwwLDUsMCwxLDAsMiwwLDEsMCwzLDAsMSwwLDIsMCwxLDAsNCwwLDEsMCwyLDAsMSwwLDMsMCwxLDAsMiwwLDEsMCw2LDAsMSwwLDIsMCwxLDAsMywwLDEsMCwyLDAsMSwwLDQsMCwxLDAsMiwwLDEsMCwzLDAsMSwwLDIsMCwxLDAsNSwwLDEsMCwyLDAsMSwwLDMsMCwxLDAsMiwwLDEsMCw0LDAsMSwwLDIsMCxcbjEsMCwzLDAsMSwwLDIsMCwxLDBdLFwiaThcIiwzKTtmLm1iPXtNYXRoOk1hdGgsSW50OEFycmF5OkludDhBcnJheSxJbnQxNkFycmF5OkludDE2QXJyYXksSW50MzJBcnJheTpJbnQzMkFycmF5LFVpbnQ4QXJyYXk6VWludDhBcnJheSxVaW50MTZBcnJheTpVaW50MTZBcnJheSxVaW50MzJBcnJheTpVaW50MzJBcnJheSxGbG9hdDMyQXJyYXk6RmxvYXQzMkFycmF5LEZsb2F0NjRBcnJheTpGbG9hdDY0QXJyYXksTmFOOk5hTixJbmZpbml0eTpJbmZpbml0eSxieXRlTGVuZ3RoOmJifTtcbmYubmI9e2Fib3J0OnEsYXNzZXJ0OmFzc2VydCxpbnZva2VfaWlpaTpmdW5jdGlvbihhLGIsYyxkKXt0cnl7cmV0dXJuIGYuZHluQ2FsbF9paWlpKGEsYixjLGQpfWNhdGNoKGUpe2lmKFwibnVtYmVyXCIhPT10eXBlb2YgZSYmXCJsb25nam1wXCIhPT1lKXRocm93IGU7WC5zZXRUaHJldygxLDApfX0sanNDYWxsX2lpaWk6ZnVuY3Rpb24oYSxiLGMsZCl7cmV0dXJuIGwuQVthXShiLGMsZCl9LGludm9rZV9pOmZ1bmN0aW9uKGEpe3RyeXtyZXR1cm4gZi5keW5DYWxsX2koYSl9Y2F0Y2goYil7aWYoXCJudW1iZXJcIiE9PXR5cGVvZiBiJiZcImxvbmdqbXBcIiE9PWIpdGhyb3cgYjtYLnNldFRocmV3KDEsMCl9fSxqc0NhbGxfaTpmdW5jdGlvbihhKXtyZXR1cm4gbC5BW2FdKCl9LGludm9rZV92aTpmdW5jdGlvbihhLGIpe3RyeXtmLmR5bkNhbGxfdmkoYSxiKX1jYXRjaChjKXtpZihcIm51bWJlclwiIT09dHlwZW9mIGMmJlwibG9uZ2ptcFwiIT09Yyl0aHJvdyBjO1guc2V0VGhyZXcoMSwwKX19LGpzQ2FsbF92aTpmdW5jdGlvbihhLFxuYil7bC5BW2FdKGIpfSxpbnZva2VfdmlpOmZ1bmN0aW9uKGEsYixjKXt0cnl7Zi5keW5DYWxsX3ZpaShhLGIsYyl9Y2F0Y2goZCl7aWYoXCJudW1iZXJcIiE9PXR5cGVvZiBkJiZcImxvbmdqbXBcIiE9PWQpdGhyb3cgZDtYLnNldFRocmV3KDEsMCl9fSxqc0NhbGxfdmlpOmZ1bmN0aW9uKGEsYixjKXtsLkFbYV0oYixjKX0saW52b2tlX2lpaWlpaWk6ZnVuY3Rpb24oYSxiLGMsZCxlLGcsaCl7dHJ5e3JldHVybiBmLmR5bkNhbGxfaWlpaWlpaShhLGIsYyxkLGUsZyxoKX1jYXRjaChtKXtpZihcIm51bWJlclwiIT09dHlwZW9mIG0mJlwibG9uZ2ptcFwiIT09bSl0aHJvdyBtO1guc2V0VGhyZXcoMSwwKX19LGpzQ2FsbF9paWlpaWlpOmZ1bmN0aW9uKGEsYixjLGQsZSxnLGgpe3JldHVybiBsLkFbYV0oYixjLGQsZSxnLGgpfSxpbnZva2VfaWk6ZnVuY3Rpb24oYSxiKXt0cnl7cmV0dXJuIGYuZHluQ2FsbF9paShhLGIpfWNhdGNoKGMpe2lmKFwibnVtYmVyXCIhPT10eXBlb2YgYyYmXCJsb25nam1wXCIhPT1jKXRocm93IGM7XG5YLnNldFRocmV3KDEsMCl9fSxqc0NhbGxfaWk6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbC5BW2FdKGIpfSxpbnZva2VfdmlpaTpmdW5jdGlvbihhLGIsYyxkKXt0cnl7Zi5keW5DYWxsX3ZpaWkoYSxiLGMsZCl9Y2F0Y2goZSl7aWYoXCJudW1iZXJcIiE9PXR5cGVvZiBlJiZcImxvbmdqbXBcIiE9PWUpdGhyb3cgZTtYLnNldFRocmV3KDEsMCl9fSxqc0NhbGxfdmlpaTpmdW5jdGlvbihhLGIsYyxkKXtsLkFbYV0oYixjLGQpfSxpbnZva2VfdjpmdW5jdGlvbihhKXt0cnl7Zi5keW5DYWxsX3YoYSl9Y2F0Y2goYil7aWYoXCJudW1iZXJcIiE9PXR5cGVvZiBiJiZcImxvbmdqbXBcIiE9PWIpdGhyb3cgYjtYLnNldFRocmV3KDEsMCl9fSxqc0NhbGxfdjpmdW5jdGlvbihhKXtsLkFbYV0oKX0saW52b2tlX2lpaWlpOmZ1bmN0aW9uKGEsYixjLGQsZSl7dHJ5e3JldHVybiBmLmR5bkNhbGxfaWlpaWkoYSxiLGMsZCxlKX1jYXRjaChnKXtpZihcIm51bWJlclwiIT09dHlwZW9mIGcmJlwibG9uZ2ptcFwiIT09Zyl0aHJvdyBnO1xuWC5zZXRUaHJldygxLDApfX0sanNDYWxsX2lpaWlpOmZ1bmN0aW9uKGEsYixjLGQsZSl7cmV0dXJuIGwuQVthXShiLGMsZCxlKX0saW52b2tlX3ZpaWlpaWk6ZnVuY3Rpb24oYSxiLGMsZCxlLGcsaCl7dHJ5e2YuZHluQ2FsbF92aWlpaWlpKGEsYixjLGQsZSxnLGgpfWNhdGNoKG0pe2lmKFwibnVtYmVyXCIhPT10eXBlb2YgbSYmXCJsb25nam1wXCIhPT1tKXRocm93IG07WC5zZXRUaHJldygxLDApfX0sanNDYWxsX3ZpaWlpaWk6ZnVuY3Rpb24oYSxiLGMsZCxlLGcsaCl7bC5BW2FdKGIsYyxkLGUsZyxoKX0saW52b2tlX2lpaTpmdW5jdGlvbihhLGIsYyl7dHJ5e3JldHVybiBmLmR5bkNhbGxfaWlpKGEsYixjKX1jYXRjaChkKXtpZihcIm51bWJlclwiIT09dHlwZW9mIGQmJlwibG9uZ2ptcFwiIT09ZCl0aHJvdyBkO1guc2V0VGhyZXcoMSwwKX19LGpzQ2FsbF9paWk6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBsLkFbYV0oYixjKX0saW52b2tlX2lpaWlpaTpmdW5jdGlvbihhLGIsYyxkLGUsZyl7dHJ5e3JldHVybiBmLmR5bkNhbGxfaWlpaWlpKGEsXG5iLGMsZCxlLGcpfWNhdGNoKGgpe2lmKFwibnVtYmVyXCIhPT10eXBlb2YgaCYmXCJsb25nam1wXCIhPT1oKXRocm93IGg7WC5zZXRUaHJldygxLDApfX0sanNDYWxsX2lpaWlpaTpmdW5jdGlvbihhLGIsYyxkLGUsZyl7cmV0dXJuIGwuQVthXShiLGMsZCxlLGcpfSxpbnZva2VfdmlpaWk6ZnVuY3Rpb24oYSxiLGMsZCxlKXt0cnl7Zi5keW5DYWxsX3ZpaWlpKGEsYixjLGQsZSl9Y2F0Y2goZyl7aWYoXCJudW1iZXJcIiE9PXR5cGVvZiBnJiZcImxvbmdqbXBcIiE9PWcpdGhyb3cgZztYLnNldFRocmV3KDEsMCl9fSxqc0NhbGxfdmlpaWk6ZnVuY3Rpb24oYSxiLGMsZCxlKXtsLkFbYV0oYixjLGQsZSl9LF9wdGhyZWFkX2NsZWFudXBfcG9wOmZ1bmN0aW9uKCl7YXNzZXJ0KFljLmxldmVsPT1pYi5sZW5ndGgsXCJjYW5ub3QgcG9wIGlmIHNvbWV0aGluZyBlbHNlIGFkZGVkIG1lYW53aGlsZSFcIik7aWIucG9wKCk7WWMubGV2ZWw9aWIubGVuZ3RofSxfX19zeXNjYWxsODU6ZnVuY3Rpb24oYSxiKXtUPWI7XG50cnl7dmFyIGM9VigpLGQ9VSgpLGU7dmFyIGc9VSgpO2lmKDA+PWcpZT0tRS5wO2Vsc2V7dmFyIGg9Y2MoYyksaD1oLnNsaWNlKDAsTWF0aC5tYXgoMCxnKSk7eGEoaCxkLCEwKTtlPWgubGVuZ3RofXJldHVybiBlfWNhdGNoKG0pe3JldHVyblwidW5kZWZpbmVkXCIhPT10eXBlb2YgUyYmbSBpbnN0YW5jZW9mIEd8fHEobSksLW0ub319LF9zaW46bmIsX2V4cDp0YixfdXRpbWVzOmZ1bmN0aW9uKGEsYil7dmFyIGM7Yj8oYz0xRTMqeVtiKzg+PjJdLGMrPXlbYisxMj4+Ml0vMUUzKTpjPURhdGUubm93KCk7YT11KGEpO3RyeXt2YXIgZD1jLGU9UChhLHtROiEwfSkuZztlLmsuQyhlLHt0aW1lc3RhbXA6TWF0aC5tYXgoZCxjKX0pO3JldHVybiAwfWNhdGNoKGcpe2lmKCEoZyBpbnN0YW5jZW9mIEcpKXRocm93IGcrXCIgOiBcIitTYSgpO0diKGcubyk7cmV0dXJuLTF9fSxfbGx2bV9wb3dfZjY0OndiLF9hY29zOnBiLF9fX3N5c2NhbGw1NDpmdW5jdGlvbihhLGIpe1Q9Yjt0cnl7dmFyIGM9UGMoKSxcbmQ9VSgpO3N3aXRjaChkKXtjYXNlIDIxNTA1OnJldHVybiBjLnR0eT8wOi1FLiQ7Y2FzZSAyMTUwNjpyZXR1cm4gYy50dHk/MDotRS4kO2Nhc2UgMjE1MTk6aWYoIWMudHR5KXJldHVybi1FLiQ7dmFyIGU9VSgpO3JldHVybiB5W2U+PjJdPTA7Y2FzZSAyMTUyMDpyZXR1cm4gYy50dHk/LUUucDotRS4kO2Nhc2UgMjE1MzE6ZT1VKCk7aWYoIWMubi5EYil0aHJvdyBuZXcgRyhFLiQpO3JldHVybiBjLm4uRGIoYyxkLGUpO2RlZmF1bHQ6cShcImJhZCBpb2N0bCBzeXNjYWxsIFwiK2QpfX1jYXRjaChnKXtyZXR1cm5cInVuZGVmaW5lZFwiIT09dHlwZW9mIFMmJmcgaW5zdGFuY2VvZiBHfHxxKGcpLC1nLm99fSxfcHRocmVhZF9jbGVhbnVwX3B1c2g6WWMsX2Fib3J0OmZ1bmN0aW9uKCl7Zi5hYm9ydCgpfSxfX19zeXNjYWxsNDA6ZnVuY3Rpb24oYSxiKXtUPWI7dHJ5e3ZhciBjPVYoKSxkPVAoYyx7cGFyZW50OiEwfSkuZyxlPUtiKGMpLGc9V2IoZCxlKSxoPWtjKGQsZSwhMCk7aWYoaCl0aHJvdyBuZXcgRyhoKTtcbmlmKCFkLmsucm1kaXIpdGhyb3cgbmV3IEcoRS5IKTtpZihnLlUpdGhyb3cgbmV3IEcoRS5aKTt0cnl7Ty53aWxsRGVsZXRlUGF0aCYmTy53aWxsRGVsZXRlUGF0aChjKX1jYXRjaChtKXtjb25zb2xlLmxvZyhcIkZTLnRyYWNraW5nRGVsZWdhdGVbJ3dpbGxEZWxldGVQYXRoJ10oJ1wiK2MrXCInKSB0aHJldyBhbiBleGNlcHRpb246IFwiK20ubWVzc2FnZSl9ZC5rLnJtZGlyKGQsZSk7ZmMoZyk7dHJ5e2lmKE8ub25EZWxldGVQYXRoKU8ub25EZWxldGVQYXRoKGMpfWNhdGNoKHQpe2NvbnNvbGUubG9nKFwiRlMudHJhY2tpbmdEZWxlZ2F0ZVsnb25EZWxldGVQYXRoJ10oJ1wiK2MrXCInKSB0aHJldyBhbiBleGNlcHRpb246IFwiK3QubWVzc2FnZSl9cmV0dXJuIDB9Y2F0Y2gocil7cmV0dXJuXCJ1bmRlZmluZWRcIiE9PXR5cGVvZiBTJiZyIGluc3RhbmNlb2YgR3x8cShyKSwtci5vfX0sX19fc3lzY2FsbDExODpmdW5jdGlvbihhLGIpe1Q9Yjt0cnl7cmV0dXJuIFBjKCksMH1jYXRjaChjKXtyZXR1cm5cInVuZGVmaW5lZFwiIT09XG50eXBlb2YgUyYmYyBpbnN0YW5jZW9mIEd8fHEoYyksLWMub319LF9fX3NldEVyck5vOkdiLF9fX3N5c2NhbGwyMDpmdW5jdGlvbihhLGIpe1Q9YjtyZXR1cm4gNDJ9LF9fX3N5c2NhbGwxODM6ZnVuY3Rpb24oYSxiKXtUPWI7dHJ5e3ZhciBjPVUoKSxkPVUoKTtpZigwPT09ZClyZXR1cm4tRS5wO2lmKDI+ZClyZXR1cm4tRS5mYjtNYShcIi9cIixjKTtyZXR1cm4gY31jYXRjaChlKXtyZXR1cm5cInVuZGVmaW5lZFwiIT09dHlwZW9mIFMmJmUgaW5zdGFuY2VvZiBHfHxxKGUpLC1lLm99fSxfX19hc3NlcnRfZmFpbDpmdW5jdGlvbihhLGIsYyxkKXtwYT0hMDt0aHJvd1wiQXNzZXJ0aW9uIGZhaWxlZDogXCIrdShhKStcIiwgYXQ6IFwiK1tiP3UoYik6XCJ1bmtub3duIGZpbGVuYW1lXCIsYyxkP3UoZCk6XCJ1bmtub3duIGZ1bmN0aW9uXCJdK1wiIGF0IFwiK1NhKCk7fSxfdXNsZWVwOlFjLF9hc2luOnFiLF9fX2J1aWxkRW52aXJvbm1lbnQ6JGMsX19fc3lzY2FsbDIwMjpkZCxfX19zeXNjYWxsOTE6ZnVuY3Rpb24oYSxcbmIpe1Q9Yjt0cnl7dmFyIGM9VSgpLGQ9VSgpLGU9TmNbY107aWYoIWUpcmV0dXJuIDA7aWYoZD09PWUuSGIpe3ZhciBnPU5bZS5mZF0saD1lLmZsYWdzLG09bmV3IFVpbnQ4QXJyYXkoQS5zdWJhcnJheShjLGMrZCkpO2cmJmcubi5wYSYmZy5uLnBhKGcsbSwwLGQsaCk7TmNbY109bnVsbDtlLnVhJiZSYShlLkliKX1yZXR1cm4gMH1jYXRjaCh0KXtyZXR1cm5cInVuZGVmaW5lZFwiIT09dHlwZW9mIFMmJnQgaW5zdGFuY2VvZiBHfHxxKHQpLC10Lm99fSxfY29zOm1iLF9fX3N5c2NhbGwzOTpmdW5jdGlvbihhLGIpe1Q9Yjt0cnl7dmFyIGM9VigpLGQ9VSgpLGM9SWIoYyk7XCIvXCI9PT1jW2MubGVuZ3RoLTFdJiYoYz1jLnN1YnN0cigwLGMubGVuZ3RoLTEpKTtSKGMsZCk7cmV0dXJuIDB9Y2F0Y2goZSl7cmV0dXJuXCJ1bmRlZmluZWRcIiE9PXR5cGVvZiBTJiZlIGluc3RhbmNlb2YgR3x8cShlKSwtZS5vfX0sX2xvY2FsdGltZV9yOldjLF90enNldDpWYyxfZW1zY3JpcHRlbl9zZXRfbWFpbl9sb29wX3RpbWluZzpoZCxcbl9zYnJrOkthLF9fX3N5c2NhbGwxOTI6ZnVuY3Rpb24oYSxiKXtUPWI7dHJ5e3ZhciBjPVUoKSxkPVUoKSxlPVUoKSxnPVUoKSxoPVUoKSxtPVUoKSxtPW08PDEyLHQscj0hMTtpZigtMT09PWgpe3Q9SWEoZCk7aWYoIXQpcmV0dXJuLUUuSWE7ZWQodCwwLGQpO3I9ITB9ZWxzZXt2YXIgeD1OW2hdO2lmKCF4KXJldHVybi1FLkw7dmFyIHYsST1BO2lmKDE9PT0oeC5mbGFncyYyMDk3MTU1KSl0aHJvdyBuZXcgRyhFLlkpO2lmKCF4Lm4ub2EpdGhyb3cgbmV3IEcoRS5oYSk7dj14Lm4ub2EoeCxJLGMsZCxtLGUsZyk7dD12LktiO3I9di51YX1OY1t0XT17SWI6dCxIYjpkLHVhOnIsZmQ6aCxmbGFnczpnfTtyZXR1cm4gdH1jYXRjaChKKXtyZXR1cm5cInVuZGVmaW5lZFwiIT09dHlwZW9mIFMmJkogaW5zdGFuY2VvZiBHfHxxKEopLC1KLm99fSxfX19zeXNjYWxsMTk3OmZ1bmN0aW9uKGEsYil7VD1iO3RyeXt2YXIgYz1QYygpLGQ9VSgpO3JldHVybiBPYyh2YyxjLnBhdGgsZCl9Y2F0Y2goZSl7cmV0dXJuXCJ1bmRlZmluZWRcIiE9PVxudHlwZW9mIFMmJmUgaW5zdGFuY2VvZiBHfHxxKGUpLC1lLm99fSxfX19zeXNjYWxsMTk2OmZ1bmN0aW9uKGEsYil7VD1iO3RyeXt2YXIgYz1WKCksZD1VKCk7cmV0dXJuIE9jKHdjLGMsZCl9Y2F0Y2goZSl7cmV0dXJuXCJ1bmRlZmluZWRcIiE9PXR5cGVvZiBTJiZlIGluc3RhbmNlb2YgR3x8cShlKSwtZS5vfX0sX19fc3lzY2FsbDE5NTpmdW5jdGlvbihhLGIpe1Q9Yjt0cnl7dmFyIGM9VigpLGQ9VSgpO3JldHVybiBPYyh2YyxjLGQpfWNhdGNoKGUpe3JldHVyblwidW5kZWZpbmVkXCIhPT10eXBlb2YgUyYmZSBpbnN0YW5jZW9mIEd8fHEoZSksLWUub319LF9fX3N5c2NhbGwxOTQ6ZnVuY3Rpb24oYSxiKXtUPWI7dHJ5e3ZhciBjPVUoKTthc3NlcnQoMD09PVUoKSk7dmFyIGQ9VSgpLGU9VSgpOzA8PWQ/YXNzZXJ0KDA9PT1lKTphc3NlcnQoLTE9PT1lKTt2YXIgZz1OW2NdO2lmKCFnKXRocm93IG5ldyBHKEUuTCk7aWYoMD09PShnLmZsYWdzJjIwOTcxNTUpKXRocm93IG5ldyBHKEUucCk7emMoZy5nLFxuZCk7cmV0dXJuIDB9Y2F0Y2goaCl7cmV0dXJuXCJ1bmRlZmluZWRcIiE9PXR5cGVvZiBTJiZoIGluc3RhbmNlb2YgR3x8cShoKSwtaC5vfX0sX19fc3lzY2FsbDIxMjpmdW5jdGlvbihhLGIpe1Q9Yjt0cnl7dmFyIGM9VigpO1UoKTtVKCk7eWMoYyk7cmV0dXJuIDB9Y2F0Y2goZCl7cmV0dXJuXCJ1bmRlZmluZWRcIiE9PXR5cGVvZiBTJiZkIGluc3RhbmNlb2YgR3x8cShkKSwtZC5vfX0sX3N5c2NvbmY6ZnVuY3Rpb24oYSl7c3dpdGNoKGEpe2Nhc2UgMzA6cmV0dXJuIDQwOTY7Y2FzZSA4NTpyZXR1cm4gQy80MDk2O2Nhc2UgMTMyOmNhc2UgMTMzOmNhc2UgMTI6Y2FzZSAxMzc6Y2FzZSAxMzg6Y2FzZSAxNTpjYXNlIDIzNTpjYXNlIDE2OmNhc2UgMTc6Y2FzZSAxODpjYXNlIDE5OmNhc2UgMjA6Y2FzZSAxNDk6Y2FzZSAxMzpjYXNlIDEwOmNhc2UgMjM2OmNhc2UgMTUzOmNhc2UgOTpjYXNlIDIxOmNhc2UgMjI6Y2FzZSAxNTk6Y2FzZSAxNTQ6Y2FzZSAxNDpjYXNlIDc3OmNhc2UgNzg6Y2FzZSAxMzk6Y2FzZSA4MDpjYXNlIDgxOmNhc2UgODI6Y2FzZSA2ODpjYXNlIDY3OmNhc2UgMTY0OmNhc2UgMTE6Y2FzZSAyOTpjYXNlIDQ3OmNhc2UgNDg6Y2FzZSA5NTpjYXNlIDUyOmNhc2UgNTE6Y2FzZSA0NjpyZXR1cm4gMjAwODA5O1xuY2FzZSA3OTpyZXR1cm4gMDtjYXNlIDI3OmNhc2UgMjQ2OmNhc2UgMTI3OmNhc2UgMTI4OmNhc2UgMjM6Y2FzZSAyNDpjYXNlIDE2MDpjYXNlIDE2MTpjYXNlIDE4MTpjYXNlIDE4MjpjYXNlIDI0MjpjYXNlIDE4MzpjYXNlIDE4NDpjYXNlIDI0MzpjYXNlIDI0NDpjYXNlIDI0NTpjYXNlIDE2NTpjYXNlIDE3ODpjYXNlIDE3OTpjYXNlIDQ5OmNhc2UgNTA6Y2FzZSAxNjg6Y2FzZSAxNjk6Y2FzZSAxNzU6Y2FzZSAxNzA6Y2FzZSAxNzE6Y2FzZSAxNzI6Y2FzZSA5NzpjYXNlIDc2OmNhc2UgMzI6Y2FzZSAxNzM6Y2FzZSAzNTpyZXR1cm4tMTtjYXNlIDE3NjpjYXNlIDE3NzpjYXNlIDc6Y2FzZSAxNTU6Y2FzZSA4OmNhc2UgMTU3OmNhc2UgMTI1OmNhc2UgMTI2OmNhc2UgOTI6Y2FzZSA5MzpjYXNlIDEyOTpjYXNlIDEzMDpjYXNlIDEzMTpjYXNlIDk0OmNhc2UgOTE6cmV0dXJuIDE7Y2FzZSA3NDpjYXNlIDYwOmNhc2UgNjk6Y2FzZSA3MDpjYXNlIDQ6cmV0dXJuIDEwMjQ7Y2FzZSAzMTpjYXNlIDQyOmNhc2UgNzI6cmV0dXJuIDMyO1xuY2FzZSA4NzpjYXNlIDI2OmNhc2UgMzM6cmV0dXJuIDIxNDc0ODM2NDc7Y2FzZSAzNDpjYXNlIDE6cmV0dXJuIDQ3ODM5O2Nhc2UgMzg6Y2FzZSAzNjpyZXR1cm4gOTk7Y2FzZSA0MzpjYXNlIDM3OnJldHVybiAyMDQ4O2Nhc2UgMDpyZXR1cm4gMjA5NzE1MjtjYXNlIDM6cmV0dXJuIDY1NTM2O2Nhc2UgMjg6cmV0dXJuIDMyNzY4O2Nhc2UgNDQ6cmV0dXJuIDMyNzY3O2Nhc2UgNzU6cmV0dXJuIDE2Mzg0O2Nhc2UgMzk6cmV0dXJuIDFFMztjYXNlIDg5OnJldHVybiA3MDA7Y2FzZSA3MTpyZXR1cm4gMjU2O2Nhc2UgNDA6cmV0dXJuIDI1NTtjYXNlIDI6cmV0dXJuIDEwMDtjYXNlIDE4MDpyZXR1cm4gNjQ7Y2FzZSAyNTpyZXR1cm4gMjA7Y2FzZSA1OnJldHVybiAxNjtjYXNlIDY6cmV0dXJuIDY7Y2FzZSA3MzpyZXR1cm4gNDtjYXNlIDg0OnJldHVyblwib2JqZWN0XCI9PT10eXBlb2YgbmF2aWdhdG9yP25hdmlnYXRvci5oYXJkd2FyZUNvbmN1cnJlbmN5fHwxOjF9R2IoRS5wKTtyZXR1cm4tMX0sXG5fX19zeXNjYWxsOTQ6ZnVuY3Rpb24oYSxiKXtUPWI7dHJ5e3ZhciBjPVUoKSxkPVUoKSxlPU5bY107aWYoIWUpdGhyb3cgbmV3IEcoRS5MKTt4YyhlLmcsZCk7cmV0dXJuIDB9Y2F0Y2goZyl7cmV0dXJuXCJ1bmRlZmluZWRcIiE9PXR5cGVvZiBTJiZnIGluc3RhbmNlb2YgR3x8cShnKSwtZy5vfX0sX25hbm9zbGVlcDpmdW5jdGlvbihhLGIpe3ZhciBjPXlbYT4+Ml0sZD15W2ErND4+Ml07MCE9PWImJih5W2I+PjJdPTAseVtiKzQ+PjJdPTApO3JldHVybiBRYygxRTYqYytkLzFFMyl9LF9lbXNjcmlwdGVuX21lbWNweV9iaWc6ZnVuY3Rpb24oYSxiLGMpe0Euc2V0KEEuc3ViYXJyYXkoYixiK2MpLGEpO3JldHVybiBhfSxfX19zeXNjYWxsMjIxOmZ1bmN0aW9uKGEsYil7VD1iO3RyeXt2YXIgYz1QYygpO3N3aXRjaChVKCkpe2Nhc2UgMDp2YXIgZD1VKCk7cmV0dXJuIDA+ZD8tRS5wOkFjKGMucGF0aCxjLmZsYWdzLDAsZCkuZmQ7Y2FzZSAxOmNhc2UgMjpyZXR1cm4gMDtjYXNlIDM6cmV0dXJuIGMuZmxhZ3M7XG5jYXNlIDQ6cmV0dXJuIGQ9VSgpLGMuZmxhZ3N8PWQsMDtjYXNlIDEyOmNhc2UgMTI6cmV0dXJuIGQ9VSgpLEFhW2QrMD4+MV09MiwwO2Nhc2UgMTM6Y2FzZSAxNDpjYXNlIDEzOmNhc2UgMTQ6cmV0dXJuIDA7Y2FzZSAxNjpjYXNlIDg6cmV0dXJuLUUucDtjYXNlIDk6cmV0dXJuIEdiKEUucCksLTE7ZGVmYXVsdDpyZXR1cm4tRS5wfX1jYXRjaChlKXtyZXR1cm5cInVuZGVmaW5lZFwiIT09dHlwZW9mIFMmJmUgaW5zdGFuY2VvZiBHfHxxKGUpLC1lLm99fSxfZmxvb3I6Z2QsX2F0YW46cmIsX19fc3lzY2FsbDIwMTpmdW5jdGlvbigpe3JldHVybiBkZC5hcHBseShudWxsLGFyZ3VtZW50cyl9LF9wdGhyZWFkX3NlbGY6ZnVuY3Rpb24oKXtyZXR1cm4gMH0sX2dldGVudjphZCxfX19zeXNjYWxsMzM6ZnVuY3Rpb24oYSxiKXtUPWI7dHJ5e3ZhciBjPVYoKSxkO3ZhciBlPVUoKTtpZihlJi04KWQ9LUUucDtlbHNle3ZhciBnO2c9UChjLHtROiEwfSkuZztjPVwiXCI7ZSY0JiYoYys9XCJyXCIpO2UmMiYmXG4oYys9XCJ3XCIpO2UmMSYmKGMrPVwieFwiKTtkPWMmJmdjKGcsYyk/LUUuWTowfXJldHVybiBkfWNhdGNoKGgpe3JldHVyblwidW5kZWZpbmVkXCIhPT10eXBlb2YgUyYmaCBpbnN0YW5jZW9mIEd8fHEoaCksLWgub319LF9sb2c6dWIsX19fdW5sb2NrOmZ1bmN0aW9uKCl7fSxfX19zeXNjYWxsMTQwOmZ1bmN0aW9uKGEsYil7VD1iO3RyeXt2YXIgYz1QYygpLGQ9VSgpLGU9VSgpLGc9VSgpLGg9VSgpO2Fzc2VydCgwPT09ZCk7RGMoYyxlLGgpO3lbZz4+Ml09Yy5wb3NpdGlvbjtjLnphJiYwPT09ZSYmMD09PWgmJihjLnphPW51bGwpO3JldHVybiAwfWNhdGNoKG0pe3JldHVyblwidW5kZWZpbmVkXCIhPT10eXBlb2YgUyYmbSBpbnN0YW5jZW9mIEd8fHEobSksLW0ub319LF9fX3N5c2NhbGwxNTpmdW5jdGlvbihhLGIpe1Q9Yjt0cnl7dmFyIGM9VigpLGQ9VSgpO3hjKGMsZCk7cmV0dXJuIDB9Y2F0Y2goZSl7cmV0dXJuXCJ1bmRlZmluZWRcIiE9PXR5cGVvZiBTJiZlIGluc3RhbmNlb2YgR3x8cShlKSwtZS5vfX0sXG5fZW1zY3JpcHRlbl9zZXRfbWFpbl9sb29wOnBkLF9fX3N5c2NhbGwxMDpmdW5jdGlvbihhLGIpe1Q9Yjt0cnl7dmFyIGM9VigpO3VjKGMpO3JldHVybiAwfWNhdGNoKGQpe3JldHVyblwidW5kZWZpbmVkXCIhPT10eXBlb2YgUyYmZCBpbnN0YW5jZW9mIEd8fHEoZCksLWQub319LF90YW46b2IsX19fc3lzY2FsbDM6ZnVuY3Rpb24oYSxiKXtUPWI7dHJ5e3ZhciBjPVBjKCksZD1VKCksZT1VKCk7cmV0dXJuIEVjKGMsdyxkLGUpfWNhdGNoKGcpe3JldHVyblwidW5kZWZpbmVkXCIhPT10eXBlb2YgUyYmZyBpbnN0YW5jZW9mIEd8fHEoZyksLWcub319LF9fX2xvY2s6ZnVuY3Rpb24oKXt9LF9fX3N5c2NhbGw2OmZ1bmN0aW9uKGEsYil7VD1iO3RyeXt2YXIgYz1QYygpO0NjKGMpO3JldHVybiAwfWNhdGNoKGQpe3JldHVyblwidW5kZWZpbmVkXCIhPT10eXBlb2YgUyYmZCBpbnN0YW5jZW9mIEd8fHEoZCksLWQub319LF9fX3N5c2NhbGw1OmZ1bmN0aW9uKGEsYil7VD1iO3RyeXt2YXIgYz1WKCksZD1cblUoKSxlPVUoKTtyZXR1cm4gQWMoYyxkLGUpLmZkfWNhdGNoKGcpe3JldHVyblwidW5kZWZpbmVkXCIhPT10eXBlb2YgUyYmZyBpbnN0YW5jZW9mIEd8fHEoZyksLWcub319LF9fX3N5c2NhbGw0OmZ1bmN0aW9uKGEsYil7VD1iO3RyeXt2YXIgYz1QYygpLGQ9VSgpLGU9VSgpO3JldHVybiBGYyhjLHcsZCxlKX1jYXRjaChnKXtyZXR1cm5cInVuZGVmaW5lZFwiIT09dHlwZW9mIFMmJmcgaW5zdGFuY2VvZiBHfHxxKGcpLC1nLm99fSxfdGltZTpmdW5jdGlvbihhKXt2YXIgYj1EYXRlLm5vdygpLzFFM3wwO2EmJih5W2E+PjJdPWIpO3JldHVybiBifSxfYXRhbjI6c2IsX2dldHRpbWVvZmRheTpmdW5jdGlvbihhKXt2YXIgYj1EYXRlLm5vdygpO3lbYT4+Ml09Yi8xRTN8MDt5W2ErND4+Ml09YiUxRTMqMUUzfDA7cmV0dXJuIDB9LF9jZWlsOlhkLF9zcXJ0OnZiLF9sb2NhbHRpbWU6ZnVuY3Rpb24oYSl7cmV0dXJuIFdjKGEsUmMpfSxfX19zeXNjYWxsMjA3OmZ1bmN0aW9uKGEsYil7VD1iO3RyeXt2YXIgYz1cblUoKTtVKCk7VSgpO3ZhciBkPU5bY107aWYoIWQpdGhyb3cgbmV3IEcoRS5MKTt5YyhkLmcpO3JldHVybiAwfWNhdGNoKGUpe3JldHVyblwidW5kZWZpbmVkXCIhPT10eXBlb2YgUyYmZSBpbnN0YW5jZW9mIEd8fHEoZSksLWUub319LF9fX3N5c2NhbGwxNDY6ZnVuY3Rpb24oYSxiKXtUPWI7dHJ5e3ZhciBjPVBjKCksZD1VKCksZTthOntmb3IodmFyIGc9VSgpLGg9MCxtPTA7bTxnO20rKyl7dmFyIHQ9RmMoYyx3LHlbZCs4Km0+PjJdLHlbZCsoOCptKzQpPj4yXSx2b2lkIDApO2lmKDA+dCl7ZT0tMTticmVhayBhfWgrPXR9ZT1ofXJldHVybiBlfWNhdGNoKHIpe3JldHVyblwidW5kZWZpbmVkXCIhPT10eXBlb2YgUyYmciBpbnN0YW5jZW9mIEd8fHEociksLXIub319LFNUQUNLVE9QOmssU1RBQ0tfTUFYOlphLHRlbXBEb3VibGVQdHI6Q2IsQUJPUlQ6cGEsY3R0el9pODpZZH07Ly8gRU1TQ1JJUFRFTl9TVEFSVF9BU01cblxudmFyIFg9KGZ1bmN0aW9uKGdsb2JhbCxlbnYsYnVmZmVyKSB7XG5cInVzZSBhc21cIjt2YXIgYT1nbG9iYWwuSW50OEFycmF5O3ZhciBiPWdsb2JhbC5JbnQxNkFycmF5O3ZhciBjPWdsb2JhbC5JbnQzMkFycmF5O3ZhciBkPWdsb2JhbC5VaW50OEFycmF5O3ZhciBlPWdsb2JhbC5VaW50MTZBcnJheTt2YXIgZj1nbG9iYWwuVWludDMyQXJyYXk7dmFyIGc9Z2xvYmFsLkZsb2F0MzJBcnJheTt2YXIgaD1nbG9iYWwuRmxvYXQ2NEFycmF5O3ZhciBpPW5ldyBhKGJ1ZmZlcik7dmFyIGo9bmV3IGIoYnVmZmVyKTt2YXIgaz1uZXcgYyhidWZmZXIpO3ZhciBsPW5ldyBkKGJ1ZmZlcik7dmFyIG09bmV3IGUoYnVmZmVyKTt2YXIgbj1uZXcgZihidWZmZXIpO3ZhciBvPW5ldyBnKGJ1ZmZlcik7dmFyIHA9bmV3IGgoYnVmZmVyKTt2YXIgcT1nbG9iYWwuYnl0ZUxlbmd0aDt2YXIgcj1lbnYuU1RBQ0tUT1B8MDt2YXIgcz1lbnYuU1RBQ0tfTUFYfDA7dmFyIHQ9ZW52LnRlbXBEb3VibGVQdHJ8MDt2YXIgdT1lbnYuQUJPUlR8MDt2YXIgdj1lbnYuY3R0el9pOHwwO3ZhciB3PTA7dmFyIHg9MDt2YXIgeT0wO3ZhciB6PTA7dmFyIEE9Z2xvYmFsLk5hTixCPWdsb2JhbC5JbmZpbml0eTt2YXIgQz0wLEQ9MCxFPTAsRj0wLEc9MC4wLEg9MCxJPTAsSj0wLEs9MC4wO3ZhciBMPTA7dmFyIE09MDt2YXIgTj0wO3ZhciBPPTA7dmFyIFA9MDt2YXIgUT0wO3ZhciBSPTA7dmFyIFM9MDt2YXIgVD0wO3ZhciBVPTA7dmFyIFY9Z2xvYmFsLk1hdGguZmxvb3I7dmFyIFc9Z2xvYmFsLk1hdGguYWJzO3ZhciBYPWdsb2JhbC5NYXRoLnNxcnQ7dmFyIFk9Z2xvYmFsLk1hdGgucG93O3ZhciBaPWdsb2JhbC5NYXRoLmNvczt2YXIgXz1nbG9iYWwuTWF0aC5zaW47dmFyICQ9Z2xvYmFsLk1hdGgudGFuO3ZhciBhYT1nbG9iYWwuTWF0aC5hY29zO3ZhciBiYT1nbG9iYWwuTWF0aC5hc2luO3ZhciBjYT1nbG9iYWwuTWF0aC5hdGFuO3ZhciBkYT1nbG9iYWwuTWF0aC5hdGFuMjt2YXIgZWE9Z2xvYmFsLk1hdGguZXhwO3ZhciBmYT1nbG9iYWwuTWF0aC5sb2c7dmFyIGdhPWdsb2JhbC5NYXRoLmNlaWw7dmFyIGhhPWdsb2JhbC5NYXRoLmltdWw7dmFyIGlhPWdsb2JhbC5NYXRoLm1pbjt2YXIgamE9Z2xvYmFsLk1hdGguY2x6MzI7dmFyIGthPWVudi5hYm9ydDt2YXIgbGE9ZW52LmFzc2VydDt2YXIgbWE9ZW52Lmludm9rZV9paWlpO3ZhciBuYT1lbnYuanNDYWxsX2lpaWk7dmFyIG9hPWVudi5pbnZva2VfaTt2YXIgcGE9ZW52LmpzQ2FsbF9pO3ZhciBxYT1lbnYuaW52b2tlX3ZpO3ZhciByYT1lbnYuanNDYWxsX3ZpO3ZhciBzYT1lbnYuaW52b2tlX3ZpaTt2YXIgdGE9ZW52LmpzQ2FsbF92aWk7dmFyIHVhPWVudi5pbnZva2VfaWlpaWlpaTt2YXIgdmE9ZW52LmpzQ2FsbF9paWlpaWlpO3ZhciB3YT1lbnYuaW52b2tlX2lpO3ZhciB4YT1lbnYuanNDYWxsX2lpO3ZhciB5YT1lbnYuaW52b2tlX3ZpaWk7dmFyIHphPWVudi5qc0NhbGxfdmlpaTt2YXIgQWE9ZW52Lmludm9rZV92O3ZhciBCYT1lbnYuanNDYWxsX3Y7dmFyIENhPWVudi5pbnZva2VfaWlpaWk7dmFyIERhPWVudi5qc0NhbGxfaWlpaWk7dmFyIEVhPWVudi5pbnZva2VfdmlpaWlpaTt2YXIgRmE9ZW52LmpzQ2FsbF92aWlpaWlpO3ZhciBHYT1lbnYuaW52b2tlX2lpaTt2YXIgSGE9ZW52LmpzQ2FsbF9paWk7dmFyIElhPWVudi5pbnZva2VfaWlpaWlpO3ZhciBKYT1lbnYuanNDYWxsX2lpaWlpaTt2YXIgS2E9ZW52Lmludm9rZV92aWlpaTt2YXIgTGE9ZW52LmpzQ2FsbF92aWlpaTt2YXIgTWE9ZW52Ll9wdGhyZWFkX2NsZWFudXBfcG9wO3ZhciBOYT1lbnYuX19fc3lzY2FsbDg1O3ZhciBPYT1lbnYuX3Npbjt2YXIgUGE9ZW52Ll9leHA7dmFyIFFhPWVudi5fdXRpbWVzO3ZhciBSYT1lbnYuX2xsdm1fcG93X2Y2NDt2YXIgU2E9ZW52Ll9hY29zO3ZhciBUYT1lbnYuX19fc3lzY2FsbDU0O3ZhciBVYT1lbnYuX3B0aHJlYWRfY2xlYW51cF9wdXNoO3ZhciBWYT1lbnYuX2Fib3J0O3ZhciBXYT1lbnYuX19fc3lzY2FsbDQwO3ZhciBYYT1lbnYuX19fc3lzY2FsbDExODt2YXIgWWE9ZW52Ll9fX3NldEVyck5vO3ZhciBaYT1lbnYuX19fc3lzY2FsbDIwO3ZhciBfYT1lbnYuX19fc3lzY2FsbDE4Mzt2YXIgJGE9ZW52Ll9fX2Fzc2VydF9mYWlsO3ZhciBhYj1lbnYuX3VzbGVlcDt2YXIgYmI9ZW52Ll9hc2luO3ZhciBjYj1lbnYuX19fYnVpbGRFbnZpcm9ubWVudDt2YXIgZGI9ZW52Ll9fX3N5c2NhbGwyMDI7dmFyIGViPWVudi5fX19zeXNjYWxsOTE7dmFyIGZiPWVudi5fY29zO3ZhciBnYj1lbnYuX19fc3lzY2FsbDM5O3ZhciBoYj1lbnYuX2xvY2FsdGltZV9yO3ZhciBpYj1lbnYuX3R6c2V0O3ZhciBqYj1lbnYuX2Vtc2NyaXB0ZW5fc2V0X21haW5fbG9vcF90aW1pbmc7dmFyIGtiPWVudi5fc2Jyazt2YXIgbGI9ZW52Ll9fX3N5c2NhbGwxOTI7dmFyIG1iPWVudi5fX19zeXNjYWxsMTk3O3ZhciBuYj1lbnYuX19fc3lzY2FsbDE5Njt2YXIgb2I9ZW52Ll9fX3N5c2NhbGwxOTU7dmFyIHBiPWVudi5fX19zeXNjYWxsMTk0O3ZhciBxYj1lbnYuX19fc3lzY2FsbDIxMjt2YXIgcmI9ZW52Ll9zeXNjb25mO3ZhciBzYj1lbnYuX19fc3lzY2FsbDk0O3ZhciB0Yj1lbnYuX25hbm9zbGVlcDt2YXIgdWI9ZW52Ll9lbXNjcmlwdGVuX21lbWNweV9iaWc7dmFyIHZiPWVudi5fX19zeXNjYWxsMjIxO3ZhciB3Yj1lbnYuX2Zsb29yO3ZhciB4Yj1lbnYuX2F0YW47dmFyIHliPWVudi5fX19zeXNjYWxsMjAxO3ZhciB6Yj1lbnYuX3B0aHJlYWRfc2VsZjt2YXIgQWI9ZW52Ll9nZXRlbnY7dmFyIEJiPWVudi5fX19zeXNjYWxsMzM7dmFyIENiPWVudi5fbG9nO3ZhciBEYj1lbnYuX19fdW5sb2NrO3ZhciBFYj1lbnYuX19fc3lzY2FsbDE0MDt2YXIgRmI9ZW52Ll9fX3N5c2NhbGwxNTt2YXIgR2I9ZW52Ll9lbXNjcmlwdGVuX3NldF9tYWluX2xvb3A7dmFyIEhiPWVudi5fX19zeXNjYWxsMTA7dmFyIEliPWVudi5fdGFuO3ZhciBKYj1lbnYuX19fc3lzY2FsbDM7dmFyIEtiPWVudi5fX19sb2NrO3ZhciBMYj1lbnYuX19fc3lzY2FsbDY7dmFyIE1iPWVudi5fX19zeXNjYWxsNTt2YXIgTmI9ZW52Ll9fX3N5c2NhbGw0O3ZhciBPYj1lbnYuX3RpbWU7dmFyIFBiPWVudi5fYXRhbjI7dmFyIFFiPWVudi5fZ2V0dGltZW9mZGF5O3ZhciBSYj1lbnYuX2NlaWw7dmFyIFNiPWVudi5fc3FydDt2YXIgVGI9ZW52Ll9sb2NhbHRpbWU7dmFyIFViPWVudi5fX19zeXNjYWxsMjA3O3ZhciBWYj1lbnYuX19fc3lzY2FsbDE0Njt2YXIgV2I9MC4wO2Z1bmN0aW9uIFhiKG5ld0J1ZmZlcil7aWYocShuZXdCdWZmZXIpJjE2Nzc3MjE1fHxxKG5ld0J1ZmZlcik8PTE2Nzc3MjE1fHxxKG5ld0J1ZmZlcik+MjE0NzQ4MzY0OClyZXR1cm4gZmFsc2U7aT1uZXcgYShuZXdCdWZmZXIpO2o9bmV3IGIobmV3QnVmZmVyKTtrPW5ldyBjKG5ld0J1ZmZlcik7bD1uZXcgZChuZXdCdWZmZXIpO209bmV3IGUobmV3QnVmZmVyKTtuPW5ldyBmKG5ld0J1ZmZlcik7bz1uZXcgZyhuZXdCdWZmZXIpO3A9bmV3IGgobmV3QnVmZmVyKTtidWZmZXI9bmV3QnVmZmVyO3JldHVybiB0cnVlfVxuLy8gRU1TQ1JJUFRFTl9TVEFSVF9GVU5DU1xuZnVuY3Rpb24gdHooYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLG09MCxuPTAsbz0wLHA9MCxxPTA7cT1yO3I9cis0OHwwO2g9cSs0NHwwO2M9cSs0MHwwO2o9cSszNnwwO2Y9cSszMnwwO249cSsyOHwwO2c9cSsyNHwwO209cSsyMHwwO2Q9cSsxNnwwO289cSsxMnwwO3A9cSs4fDA7ZT1xO2tbYz4+Ml09YTtrW2o+PjJdPWI7aWYoIShrWyhrW2o+PjJdfDApKzQ4Pj4yXXwwKSl7a1toPj4yXT0wO3A9a1toPj4yXXwwO3I9cTtyZXR1cm4gcHwwfWlmKCEoa1soa1tqPj4yXXwwKSs0ND4+Ml18MCkpe2tbaD4+Ml09MDtwPWtbaD4+Ml18MDtyPXE7cmV0dXJuIHB8MH1rW2c+PjJdPWtbaj4+Ml07d2hpbGUoMSl7aWYoIShrW2c+PjJdfDApKWJyZWFrO2lmKChsWyhrW2c+PjJdfDApKzQ+PjBdfDB8MCkhPTExNj8obFsoa1tnPj4yXXwwKSs0Pj4wXXwwfDApIT0xMTk6MClicmVhaztrW2c+PjJdPWtbKGtbZz4+Ml18MCkrNDg+PjJdfWlmKCEoa1tnPj4yXXwwKSl7a1toPj4yXT0wO3A9a1toPj4yXXwwO3I9cTtyZXR1cm4gcHwwfWtbZD4+Ml09a1soa1soa1tqPj4yXXwwKSs0ND4+Ml18MCkrND4+Ml07a1tmPj4yXT0oa1trWyhrW2o+PjJdfDApKzQ0Pj4yXT4+Ml18MCktMTt3aGlsZSgxKXtpZigoa1tmPj4yXXwwKTwwKWJyZWFrO2lmKGtbKGtbKGtbZD4+Ml18MCkrKChrW2Y+PjJdfDApKjIwfDApPj4yXXwwKSs0Pj4yXSYyNTYpYnJlYWs7a1tmPj4yXT0oa1tmPj4yXXwwKSstMX1pZigoa1tmPj4yXXwwKTwwKXtrW2g+PjJdPTA7cD1rW2g+PjJdfDA7cj1xO3JldHVybiBwfDB9a1twPj4yXT1rW2tbYz4+Ml0+PjJdO2tbbT4+Ml09a1trW3A+PjJdPj4yXTtnPUNoKGtbbT4+Ml18MCw2OCwwKXwwO2tbbj4+Ml09ZztpZighKGtbbj4+Ml18MCkpe2tbaD4+Ml09MjtwPWtbaD4+Ml18MDtyPXE7cmV0dXJuIHB8MH07a1tlPj4yXT0wO2tbZSs0Pj4yXT0wO2c9JHYoa1twPj4yXXwwLDAsMCwwLGUsa1tuPj4yXXwwLDAsMCl8MDtrW28+PjJdPWc7aWYoIShrW28+PjJdfDApKXtrW2g+PjJdPTI7cD1rW2g+PjJdfDA7cj1xO3JldHVybiBwfDB9ZWxzZXtjPWtbbj4+Ml18MDtkPWtbaj4+Ml18MDtlPWMrNjh8MDtkb3trW2M+PjJdPWtbZD4+Ml07Yz1jKzR8MDtkPWQrNHwwfXdoaWxlKChjfDApPChlfDApKTtrWyhrW2o+PjJdfDApKzI4Pj4yXT1rW28+PjJdO3A9a1twPj4yXXwwO3A9YncocCwwLGV3KGtbbT4+Ml18MCwxNjAsMCl8MCl8MDtrW2tbaj4+Ml0+PjJdPXA7aVsoa1tqPj4yXXwwKSs0Pj4wXT0xMTk7a1soa1tqPj4yXXwwKSszMj4+Ml09MDtrWyhrW24+PjJdfDApKzM2Pj4yXT0wO2tbKGtbbj4+Ml18MCkrNDA+PjJdPTA7a1soa1tuPj4yXXwwKSs0ND4+Ml09MDtrWyhrW2o+PjJdfDApKzQ4Pj4yXT0wO2tbKGtbaj4+Ml18MCkrNTI+PjJdPTA7a1soa1tqPj4yXXwwKSs2ND4+Ml09MDtwPShrW2o+PjJdfDApKzh8MDtrW3A+PjJdPWtbcD4+Ml0mLTI1NztwPShrW2o+PjJdfDApKzh8MDtrW3A+PjJdPWtbcD4+Ml18NjU1MzY7a1soa1soa1tuPj4yXXwwKSs0OD4+Ml18MCkrNTI+PjJdPWtbbj4+Ml07a1soa1tuPj4yXXwwKSs1Nj4+Ml09MDtrWyhrW24+PjJdfDApKzYwPj4yXT0wO2tbaD4+Ml09MDtwPWtbaD4+Ml18MDtyPXE7cmV0dXJuIHB8MH1yZXR1cm4gMH1mdW5jdGlvbiB1eihhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wLGg9MCxuPTAsbz0wLHA9MCxxPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTAsRT0wLEY9MCxHPTAsSD0wLEk9MCxKPTAsSz0wLEw9MCxNPTAsTj0wLE89MCxQPTAsUT0wLFI9MCxTPTAsVD0wLFU9MCxWPTAsVz0wLFg9MCxZPTA7WT1yO3I9cisyMDh8MDtRPVkrNTZ8MDtQPVkrNDh8MDtPPVkrNDB8MDtOPVkrMjR8MDtSPVkrMTZ8MDtvPVkrOHwwO2c9WTtwPVkrMTk2fDA7Yz1ZKzE5MnwwO3E9WSsxODh8MDtGPVkrMTg0fDA7dT1ZKzE4MHwwO3c9WSsxNzZ8MDt4PVkrMTcyfDA7Sj1ZKzE2OHwwO0E9WSsxNjR8MDtDPVkrMTYwfDA7dD1ZKzE1NnwwO3o9WSsxNTJ8MDtHPVkrMTQ4fDA7Qj1ZKzE0NHwwO2Y9WSsyMDJ8MDtuPVkrMTQwfDA7ZT1ZKzEzNnwwO2Q9WSsyMDB8MDtzPVkrMTMyfDA7RT1ZKzEyOHwwO2g9WSsxMjR8MDt5PVkrMTIwfDA7TT1ZKzExNnwwO1Y9WSsxMTJ8MDtJPVkrMTA4fDA7SD1ZKzEwNHwwO1c9WSsxMDB8MDtVPVkrOTZ8MDt2PVkrOTJ8MDtUPVkrODh8MDtTPVkrODR8MDtYPVkrODB8MDtMPVkrNzJ8MDtEPVkrNjR8MDtLPVkrNjB8MDtrW2M+PjJdPWE7a1txPj4yXT1iO2tbRj4+Ml09a1trW2M+PjJdPj4yXTtrW3Q+PjJdPWtba1tGPj4yXT4+Ml07altmPj4xXT1rWyhrW3E+PjJdfDApKzg+PjJdO2E9KGtbcT4+Ml18MCkrOHwwO2tbYT4+Ml09a1thPj4yXXw2NDtpZihpWyhrW3Q+PjJdfDApKzY5Pj4wXXwwKXtrW3A+PjJdPTI7WD1rW3A+PjJdfDA7cj1ZO3JldHVybiBYfDB9aWYoKGtbKGtbcT4+Ml18MCkrMjg+PjJdfDApIT0wPyhtW2Y+PjFdJjY0fDApPT0wOjApe2tbSj4+Ml09a1soa1txPj4yXXwwKSsyOD4+Ml07a1tBPj4yXT1rW2tbcT4+Ml0+PjJdO2lmKChrWyhrW2M+PjJdfDApKzEyPj4yXXwwKT09MTMyKXthPWtbRj4+Ml18MDtmPSh3eihrW3E+PjJdfDApfDApKzY0fDA7bHcoYSxrW2Y+PjJdfDAsMCl9ankoa1tGPj4yXXwwLGtbSj4+Ml18MCk7a1t1Pj4yXT0wO2tbQz4+Ml09KGtbSj4+Ml18MCkrODthOndoaWxlKDEpe2lmKChrW3U+PjJdfDApPj0oa1trW0o+PjJdPj4yXXwwKSl7ZD0zODticmVha31pZighKChsWyhrW0M+PjJdfDApKzM2KzE+PjBdfDApPj4+NSYxKSl7aWYoeHooa1tjPj4yXXwwLGtbQz4+Ml18MCl8MCl7ZD0xMjticmVha31kbyBpZighKGtbKGtbQz4+Ml18MCkrMTY+PjJdfDApKXtpZighKGtbKGtbQz4+Ml18MCkrOD4+Ml18MCkpe2tbZT4+Ml09a1soa1tDPj4yXXwwKSsyMD4+Ml07aWYoQ3koa1tjPj4yXXwwLGtbZT4+Ml18MCl8MCl7ZD0xNjticmVhayBhfWY9Q2goa1t0Pj4yXXwwLDcyLDApfDA7a1tuPj4yXT1mO2tbKGtbQz4+Ml18MCkrMTY+PjJdPWY7aWYoIShrW24+PjJdfDApKXtkPTE4O2JyZWFrIGF9alsoa1tuPj4yXXwwKSszNj4+MV09MTtmPWtbdD4+Ml18MDtrW2c+PjJdPWtbbj4+Ml07Zj1RaChmLDMwMTA5LGcpfDA7a1trW24+PjJdPj4yXT1mO3doaWxlKDEpe2lmKCEoa1soa1tlPj4yXXwwKSs0OD4+Ml18MCkpYnJlYWs7a1tlPj4yXT1rWyhrW2U+PjJdfDApKzQ4Pj4yXX1seShrW0Y+PjJdfDAsa1trW2U+PjJdPj4yXXwwLChrW24+PjJdfDApKzM0fDAsKGtbbj4+Ml18MCkrNHwwKXwwO2pbKGtbbj4+Ml18MCkrMzI+PjFdPS0xO2pbKGtbbj4+Ml18MCkrMzg+PjFdPTIwMDtmPShrW24+PjJdfDApKzQyfDA7aVtmPj4wXT1sW2Y+PjBdfDI7YnJlYWt9Zj16eChrW0Y+PjJdfDAsMCxrW0M+PjJdfDApfDA7a1tuPj4yXT1mO2tbKGtbQz4+Ml18MCkrMTY+PjJdPWY7aWYoIShrW24+PjJdfDApKXtkPTI0O2JyZWFrIGF9aWYoKG1bKGtbbj4+Ml18MCkrMzY+PjFdfDApPT02NTUzNSl7ZD0yNjticmVhayBhfWY9KGtbbj4+Ml18MCkrMzZ8MDtqW2Y+PjFdPShqW2Y+PjFdfDApKzE8PDE2Pj4xNjtpZigobFsoa1tuPj4yXXwwKSs0Mj4+MF0mMTZ8MCk9PTA/KHl6KGtbRj4+Ml18MCxrW0M+PjJdfDApfDApIT0wOjApe2Q9Mjk7YnJlYWsgYX1pZigobFsoa1tuPj4yXXwwKSs0Mj4+MF0mMTZ8MCk9PTA/KGtbKGtbbj4+Ml18MCkrMTI+PjJdfDApPT0wOjApYnJlYWs7aWYoYnkoa1tGPj4yXXwwLGtbbj4+Ml18MCl8MCl7ZD0zMzticmVhayBhfWY9aXkoa1t0Pj4yXXwwLGtbKGtbbj4+Ml18MCkrMTI+PjJdfDAsMCl8MDtrWyhrW0M+PjJdfDApKzIwPj4yXT1mO2pbZD4+MV09alsoa1tuPj4yXXwwKSszND4+MV18MDtqWyhrW24+PjJdfDApKzM0Pj4xXT0tMTtDeShrW2M+PjJdfDAsa1soa1tDPj4yXXwwKSsyMD4+Ml18MCl8MDtqWyhrW24+PjJdfDApKzM0Pj4xXT1qW2Q+PjFdfDB9d2hpbGUoMCk7aWYoenooa1tGPj4yXXwwLGtbQz4+Ml18MCl8MCl7ZD0zNjticmVha319a1t1Pj4yXT0oa1t1Pj4yXXwwKSsxO2tbQz4+Ml09KGtbQz4+Ml18MCkrNzJ9aWYoKGR8MCk9PTEyKXtrW3A+PjJdPTI7WD1rW3A+PjJdfDA7cj1ZO3JldHVybiBYfDB9ZWxzZSBpZigoZHwwKT09MTYpe2tbcD4+Ml09MjtYPWtbcD4+Ml18MDtyPVk7cmV0dXJuIFh8MH1lbHNlIGlmKChkfDApPT0xOCl7a1twPj4yXT0yO1g9a1twPj4yXXwwO3I9WTtyZXR1cm4gWHwwfWVsc2UgaWYoKGR8MCk9PTI0KXtrW3A+PjJdPTI7WD1rW3A+PjJdfDA7cj1ZO3JldHVybiBYfDB9ZWxzZSBpZigoZHwwKT09MjYpe1g9a1tGPj4yXXwwO2tbbz4+Ml09a1trW24+PjJdPj4yXTtPaChYLDMwMTIyLG8pO2tbKGtbQz4+Ml18MCkrMTY+PjJdPTA7a1twPj4yXT0yO1g9a1twPj4yXXwwO3I9WTtyZXR1cm4gWHwwfWVsc2UgaWYoKGR8MCk9PTI5KXtrW3A+PjJdPTI7WD1rW3A+PjJdfDA7cj1ZO3JldHVybiBYfDB9ZWxzZSBpZigoZHwwKT09MzMpe2tbcD4+Ml09MjtYPWtbcD4+Ml18MDtyPVk7cmV0dXJuIFh8MH1lbHNlIGlmKChkfDApPT0zNil7a1twPj4yXT0yO1g9a1twPj4yXXwwO3I9WTtyZXR1cm4gWHwwfWVsc2UgaWYoKGR8MCk9PTM4KXtpZigobFsoa1t0Pj4yXXwwKSs2OT4+MF18MCk9PTA/KEF6KGtbRj4+Ml18MCxrW3E+PjJdfDApfDApPT0wOjApe2tbeD4+Ml09MDt3aGlsZSgxKXtpZigoa1t4Pj4yXXwwKT49KGtba1tBPj4yXT4+Ml18MCkpYnJlYWs7a1t6Pj4yXT1rWyhrWyhrW0E+PjJdfDApKzQ+PjJdfDApKygoa1t4Pj4yXXwwKSoyMHwwKT4+Ml07aWYoKGxba1t6Pj4yXT4+MF18MCk9PTE2MClicmVhaztpZigobFtrW3o+PjJdPj4wXXwwKT09MTIyPyhsW2tbKGtbej4+Ml18MCkrMTY+PjJdPj4wXXwwKT09MTYwOjApYnJlYWs7a1t4Pj4yXT0oa1t4Pj4yXXwwKSsxfWlmKChrW3g+PjJdfDApPChrW2tbQT4+Ml0+PjJdfDApKXtrW3M+PjJdPWtbKGtbQT4+Ml18MCkrND4+Ml07a1tFPj4yXT0wO2tbaD4+Ml09a1soa1trW0Y+PjJdPj4yXXwwKSsyND4+Ml07aWYoa1toPj4yXSY0KWM9KGtbaD4+Ml0mNjR8MCk9PTA7ZWxzZSBjPTA7a1t5Pj4yXT1jJjE7a1t4Pj4yXT0wO3doaWxlKDEpe2lmKChrW3g+PjJdfDApPj0oa1trW0E+PjJdPj4yXXwwKSlicmVhaztrW3o+PjJdPWtbKGtbcz4+Ml18MCkrKChrW3g+PjJdfDApKjIwfDApPj4yXTtrW0c+PjJdPWtbKGtbej4+Ml18MCkrMTY+PjJdO2RvIGlmKChsW2tbej4+Ml0+PjBdfDApIT0xNjApe2lmKChsW2tbej4+Ml0+PjBdfDApPT0xMjI/KGxba1tHPj4yXT4+MF18MCk9PTE2MDowKXtkPTU4O2JyZWFrfW89Yncoa1tGPj4yXXwwLGtbRT4+Ml18MCxrWyhrW3M+PjJdfDApKygoa1t4Pj4yXXwwKSoyMHwwKT4+Ml18MCl8MDtrW0U+PjJdPW87aWYoa1tFPj4yXXwwKXtrWyhrWyhrW0U+PjJdfDApKzQ+PjJdfDApKygoKGtba1tFPj4yXT4+Ml18MCktMXwwKSoyMHwwKSs0Pj4yXT1rWyhrW3M+PjJdfDApKygoa1t4Pj4yXXwwKSoyMHwwKSs0Pj4yXTtrWyhrWyhrW0U+PjJdfDApKzQ+PjJdfDApKygoKGtba1tFPj4yXT4+Ml18MCktMXwwKSoyMHwwKSs4Pj4yXT1rWyhrW3M+PjJdfDApKygoa1t4Pj4yXXwwKSoyMHwwKSs4Pj4yXTtrWyhrW3M+PjJdfDApKygoa1t4Pj4yXXwwKSoyMHwwKSs0Pj4yXT0wO2tbKGtbcz4+Ml18MCkrKChrW3g+PjJdfDApKjIwfDApKzg+PjJdPTB9a1soa1tzPj4yXXwwKSsoKGtbeD4+Ml18MCkqMjB8MCk+PjJdPTB9ZWxzZSBkPTU4O3doaWxlKDApO2RvIGlmKChkfDApPT01OCl7ZD0wO2tbTT4+Ml09MDtrW1Y+PjJdPTA7aWYoKGxba1t6Pj4yXT4+MF18MCk9PTEyMilrW1Y+PjJdPWtbKGtbKGtbej4+Ml18MCkrMTI+PjJdfDApKzg+PjJdO2tbdT4+Ml09MDtrW0M+PjJdPShrW0o+PjJdfDApKzg7d2hpbGUoMSl7aWYoKGtbdT4+Ml18MCk+PShrW2tbSj4+Ml0+PjJdfDApKWJyZWFrO2tbST4+Ml09a1soa1tDPj4yXXwwKSsxNj4+Ml07a1tIPj4yXT1rWyhrW0M+PjJdfDApKzIwPj4yXTtrW1c+PjJdPWtbKGtbQz4+Ml18MCkrMTI+PjJdO2tbVT4+Ml09MDtpZighKGtbVz4+Ml18MCkpa1tXPj4yXT1rW2tbST4+Ml0+PjJdO2lmKGlbKGtbdD4+Ml18MCkrNjk+PjBdfDApYnJlYWs7aWYoKGtbSD4+Ml18MCkhPTA/KGtbKGtbSD4+Ml18MCkrOD4+Ml0mMjA0OHwwKSE9MDowKWQ9NzI7ZWxzZSBkPTY3O2RvIGlmKChkfDApPT02Nyl7ZD0wO2tbSD4+Ml09MDtpZigoa1tWPj4yXXwwKSE9MD8oc2coa1tWPj4yXXwwLGtbVz4+Ml18MCl8MCkhPTA6MClicmVhaztvPVBoKGtbdD4+Ml18MCxrWyhrW0k+PjJdfDApKzY0Pj4yXXwwKXwwO2tbdj4+Ml09bztpZigoa1t2Pj4yXXwwKT49MCljPWtbKGtbKGtbdD4+Ml18MCkrMTY+PjJdfDApKyhrW3Y+PjJdPDw0KT4+Ml18MDtlbHNlIGM9MjU0NTE7a1tVPj4yXT1jO2Q9NzJ9d2hpbGUoMCk7YjpkbyBpZigoZHwwKT09NzIpe2Q9MDtrW3c+PjJdPTA7d2hpbGUoMSl7aWYoKGtbdz4+Ml18MCk+PShqWyhrW0k+PjJdfDApKzM0Pj4xXXwwKSlicmVhayBiO2tbVD4+Ml09a1soa1soa1tJPj4yXXwwKSs0Pj4yXXwwKSsoa1t3Pj4yXTw8NCk+PjJdO2lmKCEoKGtbVj4+Ml18MCkhPTAmKGtbSD4+Ml18MCkhPTA/KHB6KGtbKGtbKGtba1tIPj4yXT4+Ml18MCkrND4+Ml18MCkrKChrW3c+PjJdfDApKjIwfDApKzg+PjJdfDAsMCxrW1Y+PjJdfDAsMCl8MCk9PTA6MCkpZD03NjtkbyBpZigoZHwwKT09NzYpe2Q9MDtpZigoa1soa1txPj4yXXwwKSs4Pj4yXSYxMzEwNzJ8MCk9PTA/KGxbKGtbKGtbST4+Ml18MCkrND4+Ml18MCkrKGtbdz4+Ml08PDQpKzE1Pj4wXSYyfDApIT0wOjApYnJlYWs7a1tNPj4yXT0xO2lmKChrW3U+PjJdfDApPjAmKGtbVj4+Ml18MCk9PTApe2lmKChsWyhrW0M+PjJdfDApKzM2Pj4wXSY0fDApIT0wPyhCeihrW0o+PjJdfDAsa1t1Pj4yXXwwLGtbVD4+Ml18MCwwLDApfDApIT0wOjApYnJlYWs7aWYoKEN6KGtbKGtbQz4+Ml18MCkrNTI+PjJdfDAsa1tUPj4yXXwwKXwwKT49MClicmVha31vPWV3KGtbdD4+Ml18MCw1NSxrW1Q+PjJdfDApfDA7a1tHPj4yXT1vO2tbUz4+Ml09a1tUPj4yXTtrW1g+PjJdPTA7ZG8gaWYoa1t5Pj4yXXwwKWQ9ODQ7ZWxzZXtpZigoa1trW0o+PjJdPj4yXXwwKT4xKXtkPTg0O2JyZWFrfWtbQj4+Ml09a1tHPj4yXX13aGlsZSgwKTtkbyBpZigoZHwwKT09ODQpe2Q9MDtvPWV3KGtbdD4+Ml18MCw1NSxrW1c+PjJdfDApfDA7a1tEPj4yXT1vO289T3Yoa1tGPj4yXXwwLDEyMixrW0Q+PjJdfDAsa1tHPj4yXXwwLDApfDA7a1tCPj4yXT1vO2lmKGtbVT4+Ml18MCl7bz1ldyhrW3Q+PjJdfDAsNTUsa1tVPj4yXXwwKXwwO2tbRD4+Ml09bztvPU92KGtbRj4+Ml18MCwxMjIsa1tEPj4yXXwwLGtbQj4+Ml18MCwwKXwwO2tbQj4+Ml09b31pZighKGtbeT4+Ml18MCkpYnJlYWs7bz1rW3Q+PjJdfDA7bj1rW1Q+PjJdfDA7a1tSPj4yXT1rW1c+PjJdO2tbUis0Pj4yXT1uO289UWgobywzMDE2MSxSKXwwO2tbUz4+Ml09bztrW1g+PjJdPWtbUz4+Ml19d2hpbGUoMCk7bz1idyhrW0Y+PjJdfDAsa1tFPj4yXXwwLGtbQj4+Ml18MCl8MDtrW0U+PjJdPW87ZnooTCxrW1M+PjJdfDApO2N3KGtbRj4+Ml18MCxrW0U+PjJdfDAsTCwwKTtkbyBpZihrW0U+PjJdfDApe2lmKCEoa1soa1txPj4yXXwwKSs4Pj4yXSYyMDQ4KSlicmVhaztrW0s+PjJdPShrWyhrW0U+PjJdfDApKzQ+PjJdfDApKygoKGtba1tFPj4yXT4+Ml18MCktMXwwKSoyMHwwKTtjPWtbdD4+Ml18MDtpZihrW0g+PjJdfDApe289QWgoYyxrWyhrWyhrW2tbSD4+Ml0+PjJdfDApKzQ+PjJdfDApKygoa1t3Pj4yXXwwKSoyMHwwKSs4Pj4yXXwwKXwwO2tbKGtbSz4+Ml18MCkrOD4+Ml09b31lbHNle249a1tXPj4yXXwwO289a1tTPj4yXXwwO2tbTj4+Ml09a1tVPj4yXTtrW04rND4+Ml09bjtrW04rOD4+Ml09bztvPVFoKGMsMzAxNjcsTil8MDtrWyhrW0s+PjJdfDApKzg+PjJdPW99bz0oa1tLPj4yXXwwKSsxM3wwO2lbbz4+MF09aVtvPj4wXSYtM3wyfXdoaWxlKDApO2JnKGtbdD4+Ml18MCxrW1g+PjJdfDApfXdoaWxlKDApO2tbdz4+Ml09KGtbdz4+Ml18MCkrMX19d2hpbGUoMCk7a1t1Pj4yXT0oa1t1Pj4yXXwwKSsxO2tbQz4+Ml09KGtbQz4+Ml18MCkrNzJ9aWYoIShrW00+PjJdfDApKXtjPWtbRj4+Ml18MDtpZihrW1Y+PjJdfDApe2tbTz4+Ml09a1tWPj4yXTtPaChjLDMwMTc2LE8pO2JyZWFrfWVsc2V7T2goYywzMDE5NCxQKTticmVha319fXdoaWxlKDApO2tbeD4+Ml09KGtbeD4+Ml18MCkrMX1vdihrW3Q+PjJdfDAsa1tBPj4yXXwwKTtrW2tbcT4+Ml0+PjJdPWtbRT4+Ml19aWYoKGtba1txPj4yXT4+Ml18MCkhPTA/KGtba1trW3E+PjJdPj4yXT4+Ml18MCk+KGtbKGtbdD4+Ml18MCkrOTYrOD4+Ml18MCk6MCl7T2goa1tGPj4yXXwwLDMwMjE0LFEpO2tbcD4+Ml09MjtYPWtbcD4+Ml18MDtyPVk7cmV0dXJuIFh8MH1rW3A+PjJdPTA7WD1rW3A+PjJdfDA7cj1ZO3JldHVybiBYfDB9a1twPj4yXT0yO1g9a1twPj4yXXwwO3I9WTtyZXR1cm4gWHwwfX1rW3A+PjJdPTE7WD1rW3A+PjJdfDA7cj1ZO3JldHVybiBYfDB9ZnVuY3Rpb24gdnooYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MDtlPXI7cj1yKzE2fDA7Zz1lKzEyfDA7Zj1lKzh8MDtjPWUrNHwwO2Q9ZTtrW2c+PjJdPWE7a1tmPj4yXT1iO2tbYz4+Ml09a1trW2c+PjJdPj4yXTthPSh3eihrW2Y+PjJdfDApfDApKzY0fDA7a1tkPj4yXT1rW2E+PjJdO2lmKCEoa1tkPj4yXXwwKSl7cj1lO3JldHVybn1rWyhrW2M+PjJdfDApKzQ3Mj4+Ml09a1soa1tkPj4yXXwwKSs0Pj4yXTtyPWU7cmV0dXJufWZ1bmN0aW9uIHd6KGEpe2E9YXwwO3ZhciBiPTAsYz0wO2M9cjtyPXIrMTZ8MDtiPWM7a1tiPj4yXT1hO3doaWxlKDEpe2E9a1tiPj4yXXwwO2lmKCEoa1soa1tiPj4yXXwwKSs1Mj4+Ml18MCkpYnJlYWs7a1tiPj4yXT1rW2ErNTI+PjJdfXI9YztyZXR1cm4gYXwwfWZ1bmN0aW9uIHh6KGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wLG49MCxvPTAscD0wLHE9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTA7Qj1yO3I9cis5NnwwO3U9QisxNnwwO249Qis4fDA7ZD1CO3Y9Qis4OHwwO3c9Qis4NHwwO2U9Qis4MHwwO3k9Qis3NnwwO2M9Qis3MnwwO3g9Qis2OHwwO289Qis2NHwwO3Q9Qis2MHwwO3E9Qis1NnwwO0E9Qis1MnwwO3M9Qis0OHwwO3A9Qis0NHwwO3o9Qis0MHwwO2Y9QiszNnwwO2g9QiszMnwwO2c9QisyOHwwO2tbdz4+Ml09YTtrW2U+PjJdPWI7a1t5Pj4yXT1rW2tbdz4+Ml0+PjJdO2tbYz4+Ml09a1trW3k+PjJdPj4yXTthPVB6KGtbKGtbeT4+Ml18MCkrNDcyPj4yXXwwLGtbZT4+Ml18MCxvKXwwO2tbeD4+Ml09YTtpZihrW3g+PjJdfDApe2I9a1t5Pj4yXXwwO2lmKGtbKGtbeD4+Ml18MCkrMTI+PjJdfDApe0E9a1soa1t4Pj4yXXwwKSsxMj4+Ml18MDtrW2Q+PjJdPWtba1t4Pj4yXT4+Ml07T2goYixBLGQpO2tbdj4+Ml09MTtBPWtbdj4+Ml18MDtyPUI7cmV0dXJuIEF8MH1pZih5eihiLGtbZT4+Ml18MCl8MCl7a1t2Pj4yXT0xO0E9a1t2Pj4yXXwwO3I9QjtyZXR1cm4gQXwwfWQ9Q2goa1tjPj4yXXwwLDcyLDApfDA7a1t0Pj4yXT1kO2tbKGtbZT4+Ml18MCkrMTY+PjJdPWQ7aWYoIShrW3Q+PjJdfDApKXtrW3Y+PjJdPTI7QT1rW3Y+PjJdfDA7cj1CO3JldHVybiBBfDB9alsoa1t0Pj4yXXwwKSszNj4+MV09MTtkPUFoKGtbYz4+Ml18MCxrW2tbeD4+Ml0+PjJdfDApfDA7a1trW3Q+PjJdPj4yXT1kO2pbKGtbdD4+Ml18MCkrMzI+PjFdPS0xO2pbKGtbdD4+Ml18MCkrMzg+PjFdPTIwMDtkPShrW3Q+PjJdfDApKzQyfDA7aVtkPj4wXT1sW2Q+PjBdfDY2O2Q9aXkoa1tjPj4yXXwwLGtbKGtbeD4+Ml18MCkrOD4+Ml18MCwwKXwwO2tbKGtbZT4+Ml18MCkrMjA+PjJdPWQ7aWYoaVsoa1tjPj4yXXwwKSs2OT4+MF18MCl7a1t2Pj4yXT03O0E9a1t2Pj4yXXwwO3I9QjtyZXR1cm4gQXwwfWtbQT4+Ml09a1soa1tlPj4yXXwwKSsyMD4+Ml07aWYoKGxbKGtbQT4+Ml18MCkrND4+MF18MCk9PTExNiliPTE7ZWxzZSBiPShsWyhrW0E+PjJdfDApKzQ+PjBdfDApPT0xMTU7a1twPj4yXT1iJjE7YTpkbyBpZihrW3A+PjJdfDApe2tbaD4+Ml09a1soa1soa1tlPj4yXXwwKSsyMD4+Ml18MCkrMjg+PjJdO2tbZj4+Ml09MDt3aGlsZSgxKXtpZigoa1tmPj4yXXwwKT49KGtba1toPj4yXT4+Ml18MCkpYnJlYWsgYTtrW2c+PjJdPShrW2g+PjJdfDApKzgrKChrW2Y+PjJdfDApKjcyfDApO2lmKCgoa1soa1tnPj4yXXwwKSs0Pj4yXXwwKT09MD8oa1soa1tnPj4yXXwwKSs4Pj4yXXwwKSE9MDowKT8wPT0oc2coa1soa1tnPj4yXXwwKSs4Pj4yXXwwLGtba1t4Pj4yXT4+Ml18MCl8MCk6MCl7a1soa1tnPj4yXXwwKSsxNj4+Ml09a1t0Pj4yXTtlPShrW2c+PjJdfDApKzM2KzF8MDtpW2U+PjBdPWlbZT4+MF0mLTMzfDMyO2U9KGtbdD4+Ml18MCkrMzZ8MDtqW2U+PjFdPShqW2U+PjFdfDApKzE8PDE2Pj4xNjtlPShrW0E+PjJdfDApKzh8MDtrW2U+PjJdPWtbZT4+Ml18ODE5Mn1rW2Y+PjJdPShrW2Y+PjJdfDApKzF9fXdoaWxlKDApO2lmKChtWyhrW3Q+PjJdfDApKzM2Pj4xXXwwKT4yKXtBPWtbeT4+Ml18MDtrW24+PjJdPWtba1t4Pj4yXT4+Ml07T2goQSwzMDQ1NSxuKTtrW3Y+PjJdPTE7QT1rW3Y+PjJdfDA7cj1CO3JldHVybiBBfDB9a1soa1t4Pj4yXXwwKSsxMj4+Ml09MzA0OTg7a1t6Pj4yXT1rWyhrW3k+PjJdfDApKzQ3Mj4+Ml07a1soa1t5Pj4yXXwwKSs0NzI+PjJdPWtbbz4+Ml07Yj1rW0E+PjJdfDA7aWYoa1twPj4yXXwwKWI9a1tiKzQ4Pj4yXXwwO0N5KGtbdz4+Ml18MCxiKXwwO2tbKGtbeT4+Ml18MCkrNDcyPj4yXT1rW28+PjJdO2tbcz4+Ml09a1tBPj4yXTt3aGlsZSgxKXtiPWtbcz4+Ml18MDtpZighKGtbKGtbcz4+Ml18MCkrNDg+PjJdfDApKWJyZWFrO2tbcz4+Ml09a1tiKzQ4Pj4yXX1rW3E+PjJdPWtbYj4+Ml07aWYoa1soa1t4Pj4yXXwwKSs0Pj4yXXwwKXtpZigoa1txPj4yXXwwKSE9MD8oa1trW3E+PjJdPj4yXXwwKSE9KGtba1soa1t4Pj4yXXwwKSs0Pj4yXT4+Ml18MCk6MCl7QT1rW3k+PjJdfDA7dD1rW2tbcT4+Ml0+PjJdfDA7dz1rW2tbKGtbeD4+Ml18MCkrND4+Ml0+PjJdfDA7a1t1Pj4yXT1rW2tbeD4+Ml0+PjJdO2tbdSs0Pj4yXT10O2tbdSs4Pj4yXT13O09oKEEsMzA1MjEsdSk7a1soa1t5Pj4yXXwwKSs0NzI+PjJdPWtbej4+Ml07a1t2Pj4yXT0xO0E9a1t2Pj4yXXwwO3I9QjtyZXR1cm4gQXwwfWtbcT4+Ml09a1soa1t4Pj4yXXwwKSs0Pj4yXX1seShrW3k+PjJdfDAsa1txPj4yXXwwLChrW3Q+PjJdfDApKzM0fDAsKGtbdD4+Ml18MCkrNHwwKXwwO2lmKGtbcD4+Ml18MCl7Yj0oa1t4Pj4yXXwwKSsxMnwwO2lmKGtbKGtbQT4+Ml18MCkrOD4+Ml0mODE5MilrW2I+PjJdPTMwNTU5O2Vsc2Uga1tiPj4yXT0zMDU5MztDeShrW3c+PjJdfDAsa1tBPj4yXXwwKXwwfWtbKGtbeD4+Ml18MCkrMTI+PjJdPTA7a1soa1t5Pj4yXXwwKSs0NzI+PjJdPWtbej4+Ml19a1t2Pj4yXT0wO0E9a1t2Pj4yXXwwO3I9QjtyZXR1cm4gQXwwfWZ1bmN0aW9uIHl6KGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTA7Zz1yO3I9cisxNnwwO2Y9ZztjPWcrMTJ8MDtkPWcrOHwwO2U9Zys0fDA7a1tkPj4yXT1hO2tbZT4+Ml09YjtpZigobFsoa1tlPj4yXXwwKSszNisxPj4wXXwwKT4+PjImMSl7YT1rW2Q+PjJdfDA7a1tmPj4yXT1rWyhrW2U+PjJdfDApKzg+PjJdO09oKGEsMzA0MzIsZik7a1tjPj4yXT0xO2Y9a1tjPj4yXXwwO3I9ZztyZXR1cm4gZnwwfWVsc2V7a1tjPj4yXT0wO2Y9a1tjPj4yXXwwO3I9ZztyZXR1cm4gZnwwfXJldHVybiAwfWZ1bmN0aW9uIHp6KGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxtPTA7bT1yO3I9ciszMnwwO2g9bTtjPW0rMjh8MDtkPW0rMjR8MDtlPW0rMjB8MDtnPW0rMTZ8MDtqPW0rMTJ8MDtmPW0rOHwwO2tbZD4+Ml09YTtrW2U+PjJdPWI7ZG8gaWYoKGtbKGtbZT4+Ml18MCkrMTY+PjJdfDApIT0wPygobFsoa1tlPj4yXXwwKSszNisxPj4wXXwwKT4+PjEmMXwwKSE9MDowKXtrW2c+PjJdPWtbKGtbZT4+Ml18MCkrMTY+PjJdO2tbaj4+Ml09a1soa1tlPj4yXXwwKSs2ND4+Ml07a1tmPj4yXT1rWyhrW2c+PjJdfDApKzg+PjJdO3doaWxlKDEpe2lmKCEoa1tmPj4yXXwwKSlicmVhaztpZighKHNnKGtba1tmPj4yXT4+Ml18MCxrW2o+PjJdfDApfDApKWJyZWFrO2tbZj4+Ml09a1soa1tmPj4yXXwwKSsyMD4+Ml19aWYoa1tmPj4yXXwwKXtrWyhrW2U+PjJdfDApKzY4Pj4yXT1rW2Y+PjJdO2JyZWFrfWc9a1tkPj4yXXwwO2tbaD4+Ml09a1tqPj4yXTtrW2grND4+Ml09MDtPaChnLDMwNDE0LGgpO2lbKGtbZD4+Ml18MCkrMTc+PjBdPTE7a1tjPj4yXT0xO2o9a1tjPj4yXXwwO3I9bTtyZXR1cm4ganwwfXdoaWxlKDApO2tbYz4+Ml09MDtqPWtbYz4+Ml18MDtyPW07cmV0dXJuIGp8MH1mdW5jdGlvbiBBeihhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wLGg9MCxpPTAsbT0wLG49MCxvPTAscD0wLHE9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wO0M9cjtyPXIrOTZ8MDtBPUMrMTZ8MDt6PUMrOHwwO3k9Qzt3PUMrOTJ8MDt4PUMrODh8MDtjPUMrODR8MDt1PUMrODB8MDtkPUMrNzZ8MDtuPUMrNzJ8MDtvPUMrNjh8MDtzPUMrNjR8MDtwPUMrNjB8MDt0PUMrNTZ8MDttPUMrNTJ8MDt2PUMrNDh8MDtlPUMrNDR8MDtnPUMrNDB8MDtxPUMrMzZ8MDtCPUMrMzJ8MDtmPUMrMjh8MDtoPUMrMjR8MDtpPUMrMjB8MDtrW3g+PjJdPWE7a1tjPj4yXT1iO2tbdT4+Ml09a1soa1tjPj4yXXwwKSsyOD4+Ml07a1tvPj4yXT0oa1t1Pj4yXXwwKSs4O2tbcz4+Ml09KGtbbz4+Ml18MCkrNzI7a1tkPj4yXT0wO2E6d2hpbGUoMSl7aWYoKGtbZD4+Ml18MCk+PSgoa1trW3U+PjJdPj4yXXwwKS0xfDApKXtjPTI4O2JyZWFrfWtbcD4+Ml09a1soa1tvPj4yXXwwKSsxNj4+Ml07a1t0Pj4yXT1rWyhrW3M+PjJdfDApKzE2Pj4yXTtiOmRvIGlmKCEoKGtbcD4+Ml18MCk9PTB8KGtbdD4+Ml18MCk9PTApKXtrW20+PjJdPShsWyhrW3M+PjJdfDApKzM2Pj4wXSYzMnwwKSE9MCYxO2M6ZG8gaWYobFsoa1tzPj4yXXwwKSszNj4+MF0mNCl7aWYoa1soa1tzPj4yXXwwKSs0OD4+Ml18MCl7Yz03O2JyZWFrIGF9aWYoa1soa1tzPj4yXXwwKSs1Mj4+Ml18MCl7Yz03O2JyZWFrIGF9a1tuPj4yXT0wO3doaWxlKDEpe2lmKChrW24+PjJdfDApPj0oalsoa1t0Pj4yXXwwKSszND4+MV18MCkpYnJlYWsgYztrW3Y+PjJdPWtbKGtbKGtbdD4+Ml18MCkrND4+Ml18MCkrKGtbbj4+Ml08PDQpPj4yXTtpZihCeihrW3U+PjJdfDAsKGtbZD4+Ml18MCkrMXwwLGtbdj4+Ml18MCxlLGcpfDApRXooa1t4Pj4yXXwwLGtbdT4+Ml18MCxrW2U+PjJdfDAsa1tnPj4yXXwwLChrW2Q+PjJdfDApKzF8MCxrW24+PjJdfDAsa1ttPj4yXXwwLChrW2M+PjJdfDApKzMyfDApO2tbbj4+Ml09KGtbbj4+Ml18MCkrMX19d2hpbGUoMCk7aWYoKGtbKGtbcz4+Ml18MCkrNDg+PjJdfDApIT0wPyhrWyhrW3M+PjJdfDApKzUyPj4yXXwwKSE9MDowKXtjPTE1O2JyZWFrIGF9aWYoa1soa1tzPj4yXXwwKSs0OD4+Ml18MCl7aWYoa1ttPj4yXXwwKUZ6KGtbKGtbcz4+Ml18MCkrNDg+PjJdfDAsa1soa1tzPj4yXXwwKSs0ND4+Ml18MCk7YT1HeihrW2tbeD4+Ml0+PjJdfDAsa1soa1tjPj4yXXwwKSszMj4+Ml18MCxrWyhrW3M+PjJdfDApKzQ4Pj4yXXwwKXwwO2tbKGtbYz4+Ml18MCkrMzI+PjJdPWE7a1soa1tzPj4yXXwwKSs0OD4+Ml09MH1pZihrWyhrW3M+PjJdfDApKzUyPj4yXXwwKXtrW3E+PjJdPWtbKGtbcz4+Ml18MCkrNTI+PjJdO2tbbj4+Ml09MDt3aGlsZSgxKXtpZigoa1tuPj4yXXwwKT49KGtbKGtbcT4+Ml18MCkrND4+Ml18MCkpYnJlYWsgYjtrW0I+PjJdPWtbKGtba1txPj4yXT4+Ml18MCkrKGtbbj4+Ml08PDMpPj4yXTthPUR6KGtbdD4+Ml18MCxrW0I+PjJdfDApfDA7a1tpPj4yXT1hO2lmKChrW2k+PjJdfDApPDApe2M9MjU7YnJlYWsgYX1pZighKEJ6KGtbdT4+Ml18MCwoa1tkPj4yXXwwKSsxfDAsa1tCPj4yXXwwLGYsaCl8MCkpe2M9MjU7YnJlYWsgYX1FeihrW3g+PjJdfDAsa1t1Pj4yXXwwLGtbZj4+Ml18MCxrW2g+PjJdfDAsKGtbZD4+Ml18MCkrMXwwLGtbaT4+Ml18MCxrW20+PjJdfDAsKGtbYz4+Ml18MCkrMzJ8MCk7a1tuPj4yXT0oa1tuPj4yXXwwKSsxfX19d2hpbGUoMCk7a1tkPj4yXT0oa1tkPj4yXXwwKSsxO2tbcz4+Ml09KGtbcz4+Ml18MCkrNzI7a1tvPj4yXT0oa1tvPj4yXXwwKSs3Mn1pZigoY3wwKT09Nyl7Qj1rW3g+PjJdfDA7a1t5Pj4yXT0wO09oKEIsMzAyNDUseSk7a1t3Pj4yXT0xO0I9a1t3Pj4yXXwwO3I9QztyZXR1cm4gQnwwfWVsc2UgaWYoKGN8MCk9PTE1KXtPaChrW3g+PjJdfDAsMzAyOTUseik7a1t3Pj4yXT0xO0I9a1t3Pj4yXXwwO3I9QztyZXR1cm4gQnwwfWVsc2UgaWYoKGN8MCk9PTI1KXt6PWtbeD4+Ml18MDtrW0E+PjJdPWtbQj4+Ml07T2goeiwzMDM1MCxBKTtrW3c+PjJdPTE7Qj1rW3c+PjJdfDA7cj1DO3JldHVybiBCfDB9ZWxzZSBpZigoY3wwKT09Mjgpe2tbdz4+Ml09MDtCPWtbdz4+Ml18MDtyPUM7cmV0dXJuIEJ8MH1yZXR1cm4gMH1mdW5jdGlvbiBCeihhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxpPTAsaj0wLGw9MCxtPTAsbj0wLG89MCxwPTA7cD1yO3I9ciszMnwwO2Y9cCsyOHwwO2c9cCsyNHwwO2g9cCsyMHwwO2k9cCsxNnwwO2o9cCsxMnwwO2w9cCs4fDA7bT1wKzR8MDtuPXA7a1tnPj4yXT1hO2tbaD4+Ml09YjtrW2k+PjJdPWM7a1tqPj4yXT1kO2tbbD4+Ml09ZTtrW20+PjJdPTA7d2hpbGUoMSl7aWYoKGtbbT4+Ml18MCk+PShrW2g+PjJdfDApKXtvPTg7YnJlYWt9Yz1EeihrWyhrW2c+PjJdfDApKzgrKChrW20+PjJdfDApKjcyfDApKzE2Pj4yXXwwLGtbaT4+Ml18MCl8MDtrW24+PjJdPWM7aWYoKGtbbj4+Ml18MCk+PTApYnJlYWs7a1ttPj4yXT0oa1ttPj4yXXwwKSsxfWlmKChvfDApPT04KXtrW2Y+PjJdPTA7bz1rW2Y+PjJdfDA7cj1wO3JldHVybiBvfDB9aWYoa1tqPj4yXXwwKXtrW2tbaj4+Ml0+PjJdPWtbbT4+Ml07a1trW2w+PjJdPj4yXT1rW24+PjJdfWtbZj4+Ml09MTtvPWtbZj4+Ml18MDtyPXA7cmV0dXJuIG98MH1mdW5jdGlvbiBDeihhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wO2c9cjtyPXIrMTZ8MDtmPWcrMTJ8MDtjPWcrOHwwO2Q9Zys0fDA7ZT1nO2tbYz4+Ml09YTtrW2Q+PjJdPWI7aWYoIShrW2M+PjJdfDApKXtrW2Y+PjJdPS0xO2Y9a1tmPj4yXXwwO3I9ZztyZXR1cm4gZnwwfWtbZT4+Ml09MDt3aGlsZSgxKXtpZigoa1tlPj4yXXwwKT49KGtbKGtbYz4+Ml18MCkrND4+Ml18MCkpe2E9ODticmVha31hPShzZyhrWyhrW2tbYz4+Ml0+PjJdfDApKyhrW2U+PjJdPDwzKT4+Ml18MCxrW2Q+PjJdfDApfDApPT0wO2I9a1tlPj4yXXwwO2lmKGEpe2E9NjticmVha31rW2U+PjJdPWIrMX1pZigoYXwwKT09Nil7a1tmPj4yXT1iO2Y9a1tmPj4yXXwwO3I9ZztyZXR1cm4gZnwwfWVsc2UgaWYoKGF8MCk9PTgpe2tbZj4+Ml09LTE7Zj1rW2Y+PjJdfDA7cj1nO3JldHVybiBmfDB9cmV0dXJuIDB9ZnVuY3Rpb24gRHooYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MDtnPXI7cj1yKzE2fDA7Zj1nKzEyfDA7Yz1nKzh8MDtkPWcrNHwwO2U9ZztrW2M+PjJdPWE7a1tkPj4yXT1iO2tbZT4+Ml09MDt3aGlsZSgxKXtpZigoa1tlPj4yXXwwKT49KGpbKGtbYz4+Ml18MCkrMzQ+PjFdfDApKXthPTY7YnJlYWt9YT0oc2coa1soa1soa1tjPj4yXXwwKSs0Pj4yXXwwKSsoa1tlPj4yXTw8NCk+PjJdfDAsa1tkPj4yXXwwKXwwKT09MDtiPWtbZT4+Ml18MDtpZihhKXthPTQ7YnJlYWt9a1tlPj4yXT1iKzF9aWYoKGF8MCk9PTQpe2tbZj4+Ml09YjtmPWtbZj4+Ml18MDtyPWc7cmV0dXJuIGZ8MH1lbHNlIGlmKChhfDApPT02KXtrW2Y+PjJdPS0xO2Y9a1tmPj4yXXwwO3I9ZztyZXR1cm4gZnwwfXJldHVybiAwfWZ1bmN0aW9uIEV6KGEsYixjLGQsZSxmLGcsaCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7dmFyIGk9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MDtvPXI7cj1yKzQ4fDA7cz1vKzQ0fDA7dj1vKzQwfDA7eD1vKzM2fDA7dz1vKzMyfDA7dT1vKzI4fDA7dD1vKzI0fDA7cD1vKzIwfDA7aT1vKzE2fDA7bD1vKzEyfDA7cT1vKzh8MDttPW8rNHwwO249bztrW3M+PjJdPWE7a1t2Pj4yXT1iO2tbeD4+Ml09YztrW3c+PjJdPWQ7a1t1Pj4yXT1lO2tbdD4+Ml09ZjtrW3A+PjJdPWc7a1tpPj4yXT1oO2tbbD4+Ml09a1trW3M+PjJdPj4yXTtoPU96KGtbbD4+Ml18MCxrW3Y+PjJdfDAsa1t4Pj4yXXwwLGtbdz4+Ml18MCl8MDtrW3E+PjJdPWg7aD1PeihrW2w+PjJdfDAsa1t2Pj4yXXwwLGtbdT4+Ml18MCxrW3Q+PjJdfDApfDA7a1ttPj4yXT1oO2g9T3Yoa1tzPj4yXXwwLDM3LGtbcT4+Ml18MCxrW20+PjJdfDAsMCl8MDtrW24+PjJdPWg7aWYoISgoa1tuPj4yXXwwKSE9MCYoa1twPj4yXXwwKSE9MCkpe3Y9a1tsPj4yXXwwO3g9a1tpPj4yXXwwO3g9a1t4Pj4yXXwwO3c9a1tuPj4yXXwwO3c9R3oodix4LHcpfDA7eD1rW2k+PjJdfDA7a1t4Pj4yXT13O3I9bztyZXR1cm59dj0oa1tuPj4yXXwwKSs0fDA7a1t2Pj4yXT1rW3Y+PjJdfDE7alsoa1tuPj4yXXwwKSszNj4+MV09a1soa1ttPj4yXXwwKSsyOD4+Ml07dj1rW2w+PjJdfDA7eD1rW2k+PjJdfDA7eD1rW3g+PjJdfDA7dz1rW24+PjJdfDA7dz1Heih2LHgsdyl8MDt4PWtbaT4+Ml18MDtrW3g+PjJdPXc7cj1vO3JldHVybn1mdW5jdGlvbiBGeihhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTA7Zj1yO3I9cisxNnwwO2M9Zis4fDA7ZD1mKzR8MDtlPWY7a1tjPj4yXT1hO2tbZD4+Ml09Yjt3aGlsZSgxKXtpZighKGtbYz4+Ml18MCkpYnJlYWs7YT0oa1tjPj4yXXwwKSs0fDA7a1thPj4yXT1rW2E+PjJdfDE7alsoa1tjPj4yXXwwKSszNj4+MV09a1tkPj4yXTthOmRvIGlmKChsW2tbYz4+Ml0+PjBdfDB8MCk9PTE1MT8oa1soa1tjPj4yXXwwKSsyMD4+Ml18MCkhPTA6MCl7a1tlPj4yXT0wO3doaWxlKDEpe2lmKChrW2U+PjJdfDApPj0oa1trWyhrW2M+PjJdfDApKzIwPj4yXT4+Ml18MCkpYnJlYWsgYTtGeihrWyhrWyhrWyhrW2M+PjJdfDApKzIwPj4yXXwwKSs0Pj4yXXwwKSsoKGtbZT4+Ml18MCkqMjB8MCk+PjJdfDAsa1tkPj4yXXwwKTtrW2U+PjJdPShrW2U+PjJdfDApKzF9fXdoaWxlKDApO0Z6KGtbKGtbYz4+Ml18MCkrMTI+PjJdfDAsa1tkPj4yXXwwKTtrW2M+PjJdPWtbKGtbYz4+Ml18MCkrMTY+PjJdfXI9ZjtyZXR1cm59ZnVuY3Rpb24gR3ooYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGk9MDtpPXI7cj1yKzMyfDA7ZD1pKzE2fDA7ZT1pKzEyfDA7Zj1pKzh8MDtnPWkrNHwwO2g9aTtrW2U+PjJdPWE7a1tmPj4yXT1iO2tbZz4+Ml09YzthPWtbZz4+Ml18MDtpZighKGtbZj4+Ml18MCkpe2tbZD4+Ml09YTtoPWtbZD4+Ml18MDtyPWk7cmV0dXJuIGh8MH1iPWtbZj4+Ml18MDtpZighYSl7a1tkPj4yXT1iO2g9a1tkPj4yXXwwO3I9aTtyZXR1cm4gaHwwfWlmKChIeihiKXwwKT09MD8oSHooa1tnPj4yXXwwKXwwKT09MDowKXtjPXR3KGtbZT4+Ml18MCwyOCwwLDApfDA7a1toPj4yXT1jO0l6KGtbZT4+Ml18MCxrW2g+PjJdfDAsa1tmPj4yXXwwLGtbZz4+Ml18MCk7a1tkPj4yXT1rW2g+PjJdO2g9a1tkPj4yXXwwO3I9aTtyZXR1cm4gaHwwfXN2KGtbZT4+Ml18MCxrW2Y+PjJdfDApO3N2KGtbZT4+Ml18MCxrW2c+PjJdfDApO2g9dHcoa1tlPj4yXXwwLDEzNCw0Mjc2LDApfDA7a1tkPj4yXT1oO2g9a1tkPj4yXXwwO3I9aTtyZXR1cm4gaHwwfWZ1bmN0aW9uIEh6KGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MCxlPTA7ZT1yO3I9cisxNnwwO2I9ZSs4fDA7Yz1lKzR8MDtkPWU7a1tjPj4yXT1hO2tbZD4+Ml09MDtkbyBpZighKGtbKGtbYz4+Ml18MCkrND4+Ml0mMSkpaWYoUHkoa1tjPj4yXXwwLGQpfDApe2tbYj4+Ml09KGtbZD4+Ml18MCk9PTAmMTticmVha31lbHNle2tbYj4+Ml09MDticmVha31lbHNlIGtbYj4+Ml09MDt3aGlsZSgwKTtyPWU7cmV0dXJuIGtbYj4+Ml18MH1mdW5jdGlvbiBJeihhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGk9MDtpPXI7cj1yKzE2fDA7ZT1pKzEyfDA7Zj1pKzh8MDtnPWkrNHwwO2g9aTtrW2U+PjJdPWE7a1tmPj4yXT1iO2tbZz4+Ml09YztrW2g+PjJdPWQ7aWYoIShrW2Y+PjJdfDApKXtzdihrW2U+PjJdfDAsa1tnPj4yXXwwKTtzdihrW2U+PjJdfDAsa1toPj4yXXwwKTtyPWk7cmV0dXJufWlmKGtbaD4+Ml18MCl7a1soa1tmPj4yXXwwKSsxNj4+Ml09a1toPj4yXTtiPShrW2Y+PjJdfDApKzR8MDtrW2I+PjJdPWtbYj4+Ml18MjA5NzQwOCZrWyhrW2g+PjJdfDApKzQ+PjJdfWlmKGtbZz4+Ml18MCl7a1soa1tmPj4yXXwwKSsxMj4+Ml09a1tnPj4yXTtiPShrW2Y+PjJdfDApKzR8MDtrW2I+PjJdPWtbYj4+Ml18MjA5NzQwOCZrWyhrW2c+PjJdfDApKzQ+PjJdfUp6KGtbZj4+Ml18MCk7cj1pO3JldHVybn1mdW5jdGlvbiBKeihhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTAsZT0wO2Q9cjtyPXIrMTZ8MDtiPWQrNHwwO2M9ZDtrW2I+PjJdPWE7a1tjPj4yXT0wO0t6KGtbKGtbYj4+Ml18MCkrMTI+PjJdfDAsYyk7S3ooa1soa1tiPj4yXXwwKSsxNj4+Ml18MCxjKTthPShrW2I+PjJdfDApKzIwfDA7aWYoIShrWyhrW2I+PjJdfDApKzQ+PjJdJjIwNDgpKXtpZihrW2E+PjJdfDApe016KGtbKGtbYj4+Ml18MCkrMjA+PjJdfDAsYyk7ZT0yMDk3NDA4JihOeihrWyhrW2I+PjJdfDApKzIwPj4yXXwwKXwwKTthPShrW2I+PjJdfDApKzR8MDtrW2E+PjJdPWtbYT4+Ml18ZX19ZWxzZSBMeihrW2E+PjJdfDAsYyk7a1soa1tiPj4yXXwwKSsyND4+Ml09KGtbYz4+Ml18MCkrMTtyPWQ7cmV0dXJufWZ1bmN0aW9uIEt6KGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wO2U9cjtyPXIrMTZ8MDtjPWUrNHwwO2Q9ZTtrW2M+PjJdPWE7a1tkPj4yXT1iO2lmKCEoa1tjPj4yXXwwKSl7cj1lO3JldHVybn1pZigoa1soa1tjPj4yXXwwKSsyND4+Ml18MCk8PShrW2tbZD4+Ml0+PjJdfDApKXtyPWU7cmV0dXJufWtba1tkPj4yXT4+Ml09a1soa1tjPj4yXXwwKSsyND4+Ml07cj1lO3JldHVybn1mdW5jdGlvbiBMeihhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MDtlPXI7cj1yKzE2fDA7Yz1lKzR8MDtkPWU7a1tjPj4yXT1hO2tbZD4+Ml09YjtpZighKGtbYz4+Ml18MCkpe3I9ZTtyZXR1cm59S3ooa1soa1tjPj4yXXwwKSszMj4+Ml18MCxrW2Q+PjJdfDApO0t6KGtbKGtbYz4+Ml18MCkrNDA+PjJdfDAsa1tkPj4yXXwwKTtLeihrWyhrW2M+PjJdfDApKzU2Pj4yXXwwLGtbZD4+Ml18MCk7S3ooa1soa1tjPj4yXXwwKSs2MD4+Ml18MCxrW2Q+PjJdfDApO016KGtba1tjPj4yXT4+Ml18MCxrW2Q+PjJdfDApO016KGtbKGtbYz4+Ml18MCkrMzY+PjJdfDAsa1tkPj4yXXwwKTtNeihrWyhrW2M+PjJdfDApKzQ0Pj4yXXwwLGtbZD4+Ml18MCk7THooa1soa1tjPj4yXXwwKSs0OD4+Ml18MCxrW2Q+PjJdfDApO3I9ZTtyZXR1cm59ZnVuY3Rpb24gTXooYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wO2Y9cjtyPXIrMTZ8MDtjPWYrOHwwO2Q9Zis0fDA7ZT1mO2tbYz4+Ml09YTtrW2Q+PjJdPWI7aWYoIShrW2M+PjJdfDApKXtyPWY7cmV0dXJufWtbZT4+Ml09MDt3aGlsZSgxKXtpZigoa1tlPj4yXXwwKT49KGtba1tjPj4yXT4+Ml18MCkpYnJlYWs7S3ooa1soa1soa1tjPj4yXXwwKSs0Pj4yXXwwKSsoKGtbZT4+Ml18MCkqMjB8MCk+PjJdfDAsa1tkPj4yXXwwKTtrW2U+PjJdPShrW2U+PjJdfDApKzF9cj1mO3JldHVybn1mdW5jdGlvbiBOeihhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTAsZT0wLGY9MDtmPXI7cj1yKzE2fDA7Yj1mKzEyfDA7Yz1mKzh8MDtkPWYrNHwwO2U9ZjtrW2I+PjJdPWE7a1tkPj4yXT0wO2lmKCEoa1tiPj4yXXwwKSl7YT1rW2Q+PjJdfDA7cj1mO3JldHVybiBhfDB9a1tjPj4yXT0wO3doaWxlKDEpe2lmKChrW2M+PjJdfDApPj0oa1trW2I+PjJdPj4yXXwwKSlicmVhaztrW2U+PjJdPWtbKGtbKGtbYj4+Ml18MCkrND4+Ml18MCkrKChrW2M+PjJdfDApKjIwfDApPj4yXTtrW2Q+PjJdPWtbZD4+Ml18a1soa1tlPj4yXXwwKSs0Pj4yXTtrW2M+PjJdPShrW2M+PjJdfDApKzF9YT1rW2Q+PjJdfDA7cj1mO3JldHVybiBhfDB9ZnVuY3Rpb24gT3ooYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxpPTAsbD0wLG09MDtsPXI7cj1yKzMyfDA7bT1sKzIwfDA7ZT1sKzE2fDA7Zj1sKzEyfDA7Zz1sKzh8MDtoPWwrNHwwO2k9bDtrW20+PjJdPWE7a1tlPj4yXT1iO2tbZj4+Ml09YztrW2c+PjJdPWQ7Yj10dyhrW20+PjJdfDAsMTUyLDAsMCl8MDtrW2g+PjJdPWI7aWYoIShrW2g+PjJdfDApKXttPWtbaD4+Ml18MDtyPWw7cmV0dXJuIG18MH1rW2k+PjJdPShrW2U+PjJdfDApKzgrKChrW2Y+PjJdfDApKjcyfDApO2tbKGtbaD4+Ml18MCkrNDQ+PjJdPWtbKGtbaT4+Ml18MCkrMTY+PjJdO2tbKGtbaD4+Ml18MCkrMjg+PjJdPWtbKGtbaT4+Ml18MCkrNDQ+PjJdO2lmKChqWyhrWyhrW2g+PjJdfDApKzQ0Pj4yXXwwKSszMj4+MV18MCk9PShrW2c+PjJdfDApKWpbKGtbaD4+Ml18MCkrMzI+PjFdPS0xO2Vsc2V7alsoa1toPj4yXXwwKSszMj4+MV09a1tnPj4yXTtjPWVTKDEsMCwoKGtbZz4+Ml18MCk+PTY0PzYzOmtbZz4+Ml18MCl8MCl8MDttPShrW2k+PjJdfDApKzU2fDA7aT1tO2I9a1tpKzQ+PjJdfEw7a1ttPj4yXT1rW2k+PjJdfGM7a1ttKzQ+PjJdPWJ9bT0oa1toPj4yXXwwKSs0fDA7a1ttPj4yXT1rW20+PjJdfDQ7bT1rW2g+PjJdfDA7cj1sO3JldHVybiBtfDB9ZnVuY3Rpb24gUHooYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGk9MCxqPTAsbD0wO2w9cjtyPXIrMzJ8MDtkPWwrMjR8MDtlPWwrMjB8MDtmPWwrMTZ8MDtnPWwrMTJ8MDtqPWwrOHwwO2k9bCs0fDA7aD1sO2tbZT4+Ml09YTtrW2Y+PjJdPWI7a1tnPj4yXT1jO2E6ZG8gaWYoKGtbKGtbZj4+Ml18MCkrND4+Ml18MCk9PTA/KGM9a1soa1tmPj4yXXwwKSs4Pj4yXXwwLGtbaj4+Ml09YywoY3wwKSE9MCk6MCl7a1tpPj4yXT1rW2U+PjJdO2I6d2hpbGUoMSl7aWYoIShrW2k+PjJdfDApKWJyZWFrIGE7a1toPj4yXT0wO3doaWxlKDEpe2lmKChrW2g+PjJdfDApPj0oa1trW2k+PjJdPj4yXXwwKSlicmVhaztpZighKHNnKGtbaj4+Ml18MCxrWyhrW2k+PjJdfDApKzgrKGtbaD4+Ml08PDQpPj4yXXwwKXwwKSlicmVhayBiO2tbaD4+Ml09KGtbaD4+Ml18MCkrMX1rW2k+PjJdPWtbKGtbaT4+Ml18MCkrND4+Ml19a1trW2c+PjJdPj4yXT1rW2k+PjJdO2tbZD4+Ml09KGtbaT4+Ml18MCkrOCsoa1toPj4yXTw8NCk7aj1rW2Q+PjJdfDA7cj1sO3JldHVybiBqfDB9d2hpbGUoMCk7a1tkPj4yXT0wO2o9a1tkPj4yXXwwO3I9bDtyZXR1cm4ganwwfWZ1bmN0aW9uIFF6KGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxpPTAsbT0wLG49MCxvPTAscD0wLHE9MDtxPXI7cj1yKzQ4fDA7ZD1xKzM2fDA7ZT1xKzMyfDA7Zj1xKzI4fDA7Zz1xKzI0fDA7bT1xKzIwfDA7aD1xKzE2fDA7aT1xKzEyfDA7bj1xKzh8MDtvPXErNHwwO3A9cTtrW2U+PjJdPWE7a1tmPj4yXT1iO2tbZz4+Ml09YztpZighKGtbZj4+Ml18MCkpe2tbZD4+Ml09MDtwPWtbZD4+Ml18MDtyPXE7cmV0dXJuIHB8MH1pZigoa1trW2Y+PjJdPj4yXXwwKT4wKWE9KChrW2tbZj4+Ml0+PjJdfDApLTF8MCkqNzJ8MDtlbHNlIGE9MDtrW2k+PjJdPTgwK2E7aT1rW2k+PjJdfDA7aT1keChrW2U+PjJdfDAsaSwoKGl8MCk8MCk8PDMxPj4zMSl8MDtrW20+PjJdPWk7aWYoIShrW20+PjJdfDApKXtrW2Q+PjJdPTA7cD1rW2Q+PjJdfDA7cj1xO3JldHVybiBwfDB9aT1rW2tbZj4+Ml0+PjJdfDA7a1soa1ttPj4yXXwwKSs0Pj4yXT1pO2tba1ttPj4yXT4+Ml09aTtrW2g+PjJdPTA7d2hpbGUoMSl7aWYoKGtbaD4+Ml18MCk+PShrW2tbZj4+Ml0+PjJdfDApKWJyZWFrO2tbbj4+Ml09KGtbbT4+Ml18MCkrOCsoKGtbaD4+Ml18MCkqNzJ8MCk7a1tvPj4yXT0oa1tmPj4yXXwwKSs4Kygoa1toPj4yXXwwKSo3MnwwKTtrW2tbbj4+Ml0+PjJdPWtba1tvPj4yXT4+Ml07aT1BaChrW2U+PjJdfDAsa1soa1tvPj4yXXwwKSs0Pj4yXXwwKXwwO2tbKGtbbj4+Ml18MCkrND4+Ml09aTtpPUFoKGtbZT4+Ml18MCxrWyhrW28+PjJdfDApKzg+PjJdfDApfDA7a1soa1tuPj4yXXwwKSs4Pj4yXT1pO2k9QWgoa1tlPj4yXXwwLGtbKGtbbz4+Ml18MCkrMTI+PjJdfDApfDA7a1soa1tuPj4yXXwwKSsxMj4+Ml09aTtrWyhrW24+PjJdfDApKzM2Pj4yXT1rWyhrW28+PjJdfDApKzM2Pj4yXTtrWyhrW24+PjJdfDApKzQ0Pj4yXT1rWyhrW28+PjJdfDApKzQ0Pj4yXTtrWyhrW24+PjJdfDApKzI0Pj4yXT1rWyhrW28+PjJdfDApKzI0Pj4yXTtrWyhrW24+PjJdfDApKzI4Pj4yXT1rWyhrW28+PjJdfDApKzI4Pj4yXTtpZigobFsoa1tuPj4yXXwwKSszNisxPj4wXXwwKT4+PjEmMSl7aT1BaChrW2U+PjJdfDAsa1soa1tvPj4yXXwwKSs2ND4+Ml18MCl8MDtrWyhrW24+PjJdfDApKzY0Pj4yXT1pfWtbKGtbbj4+Ml18MCkrNjg+PjJdPWtbKGtbbz4+Ml18MCkrNjg+PjJdO2lmKChsWyhrW24+PjJdfDApKzM2KzE+PjBdfDApPj4+MiYxKXtpPV95KGtbZT4+Ml18MCxrWyhrW28+PjJdfDApKzY0Pj4yXXwwLGtbZz4+Ml18MCl8MDtrWyhrW24+PjJdfDApKzY0Pj4yXT1pfWk9a1soa1tvPj4yXXwwKSsxNj4+Ml18MDtrWyhrW24+PjJdfDApKzE2Pj4yXT1pO2tbcD4+Ml09aTtpZihrW3A+PjJdfDApe2k9KGtbcD4+Ml18MCkrMzZ8MDtqW2k+PjFdPShqW2k+PjFdfDApKzE8PDE2Pj4xNn1jPWl5KGtbZT4+Ml18MCxrWyhrW28+PjJdfDApKzIwPj4yXXwwLGtbZz4+Ml18MCl8MDtrWyhrW24+PjJdfDApKzIwPj4yXT1jO2M9U3koa1tlPj4yXXwwLGtbKGtbbz4+Ml18MCkrNDg+PjJdfDAsa1tnPj4yXXwwKXwwO2tbKGtbbj4+Ml18MCkrNDg+PjJdPWM7Yz1TeihrW2U+PjJdfDAsa1soa1tvPj4yXXwwKSs1Mj4+Ml18MCl8MDtrWyhrW24+PjJdfDApKzUyPj4yXT1jO2M9KGtbbz4+Ml18MCkrNTZ8MDtiPWtbYys0Pj4yXXwwO2k9KGtbbj4+Ml18MCkrNTZ8MDtrW2k+PjJdPWtbYz4+Ml07a1tpKzQ+PjJdPWI7a1toPj4yXT0oa1toPj4yXXwwKSsxfWtbZD4+Ml09a1ttPj4yXTtwPWtbZD4+Ml18MDtyPXE7cmV0dXJuIHB8MH1mdW5jdGlvbiBSeihhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wLGg9MDtoPXI7cj1yKzMyfDA7Yz1oKzE2fDA7ZD1oKzEyfDA7Zz1oKzh8MDtmPWgrNHwwO2U9aDtrW2M+PjJdPWE7a1tkPj4yXT1iO2tbZz4+Ml09MDtpZighKGtbZD4+Ml18MCkpe2c9a1tnPj4yXXwwO3I9aDtyZXR1cm4gZ3wwfWtbZj4+Ml09MjQrKChrW2tbZD4+Ml0+PjJdfDApLTE8PDQpO2I9a1tmPj4yXXwwO2I9Q2goa1tjPj4yXXwwLGIsKChifDApPDApPDwzMT4+MzEpfDA7a1tnPj4yXT1iO2lmKCEoa1tnPj4yXXwwKSl7Zz1rW2c+PjJdfDA7cj1oO3JldHVybiBnfDB9a1trW2c+PjJdPj4yXT1rW2tbZD4+Ml0+PjJdO2tbZT4+Ml09MDt3aGlsZSgxKXtpZigoa1tlPj4yXXwwKT49KGtba1tkPj4yXT4+Ml18MCkpYnJlYWs7Yj1peShrW2M+PjJdfDAsa1soa1tkPj4yXXwwKSs4KyhrW2U+PjJdPDw0KSs4Pj4yXXwwLDApfDA7a1soa1tnPj4yXXwwKSs4KyhrW2U+PjJdPDw0KSs4Pj4yXT1iO2I9X3koa1tjPj4yXXwwLGtbKGtbZD4+Ml18MCkrOCsoa1tlPj4yXTw8NCkrND4+Ml18MCwwKXwwO2tbKGtbZz4+Ml18MCkrOCsoa1tlPj4yXTw8NCkrND4+Ml09YjtiPUFoKGtbYz4+Ml18MCxrWyhrW2Q+PjJdfDApKzgrKGtbZT4+Ml08PDQpPj4yXXwwKXwwO2tbKGtbZz4+Ml18MCkrOCsoa1tlPj4yXTw8NCk+PjJdPWI7a1tlPj4yXT0oa1tlPj4yXXwwKSsxfWc9a1tnPj4yXXwwO3I9aDtyZXR1cm4gZ3wwfWZ1bmN0aW9uIFN6KGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wLGk9MCxqPTA7aj1yO3I9ciszMnwwO2M9aisyNHwwO2Q9aisyMHwwO2U9aisxNnwwO2c9aisxMnwwO2Y9ais4fDA7aD1qKzR8MDtpPWo7a1tkPj4yXT1hO2tbZT4+Ml09YjtpZighKGtbZT4+Ml18MCkpe2tbYz4+Ml09MDtpPWtbYz4+Ml18MDtyPWo7cmV0dXJuIGl8MH1iPWR4KGtbZD4+Ml18MCw4LDApfDA7a1tnPj4yXT1iO2lmKCEoa1tnPj4yXXwwKSl7a1tjPj4yXT0wO2k9a1tjPj4yXXwwO3I9ajtyZXR1cm4gaXwwfWtbKGtbZz4+Ml18MCkrND4+Ml09a1soa1tlPj4yXXwwKSs0Pj4yXTtiPWR4KGtbZD4+Ml18MCxrWyhrW2U+PjJdfDApKzQ+PjJdPDwzLDApfDA7a1trW2c+PjJdPj4yXT1iO2lmKCEoa1trW2c+PjJdPj4yXXwwKSl7Ymcoa1tkPj4yXXwwLGtbZz4+Ml18MCk7a1tjPj4yXT0wO2k9a1tjPj4yXXwwO3I9ajtyZXR1cm4gaXwwfWtbZj4+Ml09MDt3aGlsZSgxKXtpZigoa1tmPj4yXXwwKT49KGtbKGtbZT4+Ml18MCkrND4+Ml18MCkpYnJlYWs7a1toPj4yXT0oa1trW2c+PjJdPj4yXXwwKSsoa1tmPj4yXTw8Myk7a1tpPj4yXT0oa1trW2U+PjJdPj4yXXwwKSsoa1tmPj4yXTw8Myk7Yj1BaChrW2Q+PjJdfDAsa1trW2k+PjJdPj4yXXwwKXwwO2tba1toPj4yXT4+Ml09YjtrWyhrW2g+PjJdfDApKzQ+PjJdPWtbKGtbaT4+Ml18MCkrND4+Ml07a1tmPj4yXT0oa1tmPj4yXXwwKSsxfWtbYz4+Ml09a1tnPj4yXTtpPWtbYz4+Ml18MDtyPWo7cmV0dXJuIGl8MH1mdW5jdGlvbiBUeihhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxtPTAsbj0wLG89MCxwPTAscT0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wLEU9MCxGPTAsRz0wLEg9MCxJPTAsSj0wLEs9MCxMPTAsTT0wLE49MDtOPXI7cj1yKzE0NHwwO0I9TiszMnwwO0s9TisyNHwwO0o9TisxNnwwO2g9Tis4fDA7Zz1OO0U9TisxMzJ8MDtGPU4rMTI4fDA7bj1OKzEyNHwwO289TisxMjB8MDtwPU4rMTE2fDA7Rz1OKzExMnwwO0E9Tis5NnwwO0g9Tis5MnwwO0k9Tis4OHwwO3E9Tis4NHwwO3c9Tis4MHwwO0w9Tis3NnwwO009Tis3MnwwO3U9Tis2OHwwO2Y9Tis2NHwwO0M9Tis2MHwwO3Q9Tis1NnwwO3o9TisxMzZ8MDtEPU4rNTJ8MDt5PU4rNDh8MDtzPU4rNDR8MDt2PU4rNDB8MDt4PU4rMzZ8MDtrW0Y+PjJdPWE7a1tuPj4yXT1iO2tbbz4+Ml09YztrW3A+PjJdPWQ7a1tHPj4yXT1lO2tbcT4+Ml09a1soa1tuPj4yXXwwKSs1Mj4+Ml07a1t3Pj4yXT1rWyhrW24+PjJdfDApKzQ4Pj4yXTtrW0w+PjJdPTA7a1tmPj4yXT1rWyhrW0Y+PjJdfDApKzMzNj4+Ml07d2hpbGUoMSl7aWYoIShrW2Y+PjJdfDApKWJyZWFrO2lmKChrWyhrW2Y+PjJdfDApKzQ+PjJdfDApPT0oa1tuPj4yXXwwKSl7bT00O2JyZWFrfWtbZj4+Ml09a1soa1tmPj4yXXwwKSs4Pj4yXX1pZigobXwwKT09NCl7TT1rW0Y+PjJdfDA7a1tnPj4yXT1rW2tbbj4+Ml0+PjJdO009UWgoTSwzMDY1MCxnKXwwO2tba1tHPj4yXT4+Ml09TTtrW0U+PjJdPTY7TT1rW0U+PjJdfDA7cj1OO3JldHVybiBNfDB9bT1rW0Y+PjJdfDA7a1toPj4yXT1rW2tbbj4+Ml0+PjJdO209UWgobSwxODM5MSxoKXwwO2tbTT4+Ml09bTtpZighKGtbTT4+Ml18MCkpe2tbRT4+Ml09NztNPWtbRT4+Ml18MDtyPU47cmV0dXJuIE18MH1hPUNoKGtbRj4+Ml18MCwyOCwwKXwwO2tbSD4+Ml09YTthPWtbRj4+Ml18MDtpZighKGtbSD4+Ml18MCkpe2JnKGEsa1tNPj4yXXwwKTtrW0U+PjJdPTc7TT1rW0U+PjJdfDA7cj1OO3JldHVybiBNfDB9a1trW0g+PjJdPj4yXT1hO2tbKGtbSD4+Ml18MCkrND4+Ml09a1tvPj4yXTttPVBoKGtbRj4+Ml18MCxrWyhrW24+PjJdfDApKzY0Pj4yXXwwKXwwO2tbdT4+Ml09bTtrWyhrWyhrW24+PjJdfDApKzUyPj4yXXwwKSs0Pj4yXT1rWyhrWyhrW0Y+PjJdfDApKzE2Pj4yXXwwKSsoa1t1Pj4yXTw8NCk+PjJdO2tbQSs0Pj4yXT1rW24+PjJdO2tbQT4+Ml09a1tIPj4yXTtrW0ErOD4+Ml09a1soa1tGPj4yXXwwKSszMzY+PjJdO2tbQSsxMj4+Ml09MDtrWyhrW0Y+PjJdfDApKzMzNj4+Ml09QTt3PWFjW2tbcD4+Ml0mMjU1XShrW0Y+PjJdfDAsa1soa1tvPj4yXXwwKSs4Pj4yXXwwLGtbdz4+Ml18MCxrW3E+PjJdfDAsKGtbSD4+Ml18MCkrOHwwLEwpfDA7a1tJPj4yXT13O2tbKGtbRj4+Ml18MCkrMzM2Pj4yXT1rW0ErOD4+Ml07aWYoKGtbST4+Ml18MCk9PTcpd2goa1tGPj4yXXwwKTthOmRvIGlmKCEoa1tJPj4yXXwwKSl7aWYoa1soa1tIPj4yXXwwKSs4Pj4yXXwwKXtMPWtbKGtbSD4+Ml18MCkrOD4+Ml18MDtrW0w+PjJdPTA7a1tMKzQ+PjJdPTA7a1tMKzg+PjJdPTA7a1trWyhrW0g+PjJdfDApKzg+PjJdPj4yXT1rW2tbbz4+Ml0+PjJdO2tbKGtbSD4+Ml18MCkrMTI+PjJdPTE7aWYoIShrW0ErMTI+PjJdfDApKXtrW0M+PjJdPTMwNzIyO0s9a1tGPj4yXXwwO0w9a1tDPj4yXXwwO2tbQj4+Ml09a1trW24+PjJdPj4yXTtMPVFoKEssTCxCKXwwO2tba1tHPj4yXT4+Ml09TDtDdShrW0g+PjJdfDApO2tbST4+Ml09MTticmVha31pW3o+PjBdPTA7a1soa1tIPj4yXXwwKSsyND4+Ml09a1soa1tuPj4yXXwwKSs1Nj4+Ml07a1soa1tuPj4yXXwwKSs1Nj4+Ml09a1tIPj4yXTtrW3Q+PjJdPTA7d2hpbGUoMSl7aWYoKGtbdD4+Ml18MCk+PShqWyhrW24+PjJdfDApKzM0Pj4xXXwwKSlicmVhayBhO0w9RmkoKGtbKGtbbj4+Ml18MCkrND4+Ml18MCkrKGtbdD4+Ml08PDQpfDAsMTg0MDIpfDA7a1tEPj4yXT1MO2tbcz4+Ml09MDtMPVRmKGtbRD4+Ml18MCl8MDtrW3k+PjJdPUw7a1tzPj4yXT0wO2I6d2hpbGUoMSl7aWYoKGtbcz4+Ml18MCk+PShrW3k+PjJdfDApKWJyZWFrO2RvIGlmKCEoSmQoMzA3NjgsKGtbRD4+Ml18MCkrKGtbcz4+Ml18MCl8MCw2KXwwKSl7aWYoKGtbcz4+Ml18MCkhPTA/KGlbKGtbRD4+Ml18MCkrKChrW3M+PjJdfDApLTEpPj4wXXwwKSE9MzI6MClicmVhaztpZighKGlbKGtbRD4+Ml18MCkrKChrW3M+PjJdfDApKzYpPj4wXXwwKSlicmVhayBiO2lmKChpWyhrW0Q+PjJdfDApKygoa1tzPj4yXXwwKSs2KT4+MF18MCk9PTMyKWJyZWFrIGJ9d2hpbGUoMCk7a1tzPj4yXT0oa1tzPj4yXXwwKSsxfWlmKChrW3M+PjJdfDApPChrW3k+PjJdfDApKXtrW3g+PjJdPTYrKChpWyhrW0Q+PjJdfDApKygoa1tzPj4yXXwwKSs2KT4+MF18MCkhPTA/MTowKTtrW3Y+PjJdPWtbcz4+Ml07d2hpbGUoMSl7aWYoKChrW3Y+PjJdfDApKyhrW3g+PjJdfDApfDApPihrW3k+PjJdfDApKWJyZWFrO2lbKGtbRD4+Ml18MCkrKGtbdj4+Ml18MCk+PjBdPWlbKGtbRD4+Ml18MCkrKChrW3Y+PjJdfDApKyhrW3g+PjJdfDApKT4+MF18MDtrW3Y+PjJdPShrW3Y+PjJdfDApKzF9aWYoKGtbcz4+Ml18MCk+MD8oaVsoa1tEPj4yXXwwKSsoa1tzPj4yXXwwKT4+MF18MCk9PTA6MClpWyhrW0Q+PjJdfDApKygoa1tzPj4yXXwwKS0xKT4+MF09MDtMPShrWyhrW24+PjJdfDApKzQ+PjJdfDApKyhrW3Q+PjJdPDw0KSsxNXwwO2lbTD4+MF09bFtMPj4wXXwyO2lbej4+MF09LTEyOH1lbHNle0w9KGtbbj4+Ml18MCkrNDJ8MDtpW0w+PjBdPWxbTD4+MF18bFt6Pj4wXX1rW3Q+PjJdPShrW3Q+PjJdfDApKzF9fX1lbHNle2E9a1tGPj4yXXwwO2lmKCEoa1tMPj4yXXwwKSl7a1tKPj4yXT1rW00+PjJdO0w9UWgoYSwzMDY5MixKKXwwO2tba1tHPj4yXT4+Ml09TH1lbHNle2tbSz4+Ml09a1tMPj4yXTtLPVFoKGEsMTgzOTEsSyl8MDtrW2tbRz4+Ml0+PjJdPUs7VWQoa1tMPj4yXXwwKX1iZyhrW0Y+PjJdfDAsa1tIPj4yXXwwKX13aGlsZSgwKTtiZyhrW0Y+PjJdfDAsa1tNPj4yXXwwKTtrW0U+PjJdPWtbST4+Ml07TT1rW0U+PjJdfDA7cj1OO3JldHVybiBNfDB9ZnVuY3Rpb24gVXooYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wLGU9MDtlPXI7cj1yKzE2fDA7Yj1lKzh8MDtkPWUrNHwwO2M9ZTtrW2I+PjJdPWE7a1tkPj4yXT0wO2tbYz4+Ml09a1trW2I+PjJdPj4yXTtpZighKGlbKGtbYz4+Ml18MCkrMTQ4KzU+PjBdfDApKXthPUNpKGtbYz4+Ml18MCwoa1tiPj4yXXwwKSs0fDApfDA7a1tkPj4yXT1hfWlmKCEoa1tkPj4yXXwwKSl7ZD1rW2Q+PjJdfDA7cj1lO3JldHVybiBkfDB9a1soa1tiPj4yXXwwKSsxMj4+Ml09a1tkPj4yXTthPShrW2I+PjJdfDApKzM2fDA7a1thPj4yXT0oa1thPj4yXXwwKSsxO2Q9a1tkPj4yXXwwO3I9ZTtyZXR1cm4gZHwwfWZ1bmN0aW9uIFZ6KGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wLGk9MCxqPTAsbD0wLG09MDtqPXI7cj1yKzQ4fDA7Yz1qKzMyfDA7ZD1qKzI4fDA7bT1qKzI0fDA7bD1qKzIwfDA7aD1qKzE2fDA7Zj1qKzEyfDA7ZT1qKzh8MDtnPWorNHwwO2k9ajtrW2M+PjJdPWE7a1tkPj4yXT1iO2tbbT4+Ml09a1trW2M+PjJdPj4yXTtrW2w+PjJdPWtbKGtbKGtbbT4+Ml18MCkrMTY+PjJdfDApKyhrW2Q+PjJdPDw0KSsxMj4+Ml07Qngoa1tjPj4yXXwwLDAsa1tkPj4yXXwwKTtrW2Y+PjJdPWtbKGtbYz4+Ml18MCkrNDA+PjJdO2E9KGtbYz4+Ml18MCkrNDB8MDtrW2E+PjJdPShrW2E+PjJdfDApKzM7Wnooa1tjPj4yXXwwLGtbZD4+Ml18MCxrW2Y+PjJdfDAsMCwwKTtrW2U+PjJdPShrWyhrW2M+PjJdfDApKzQ0Pj4yXXwwKSsxO2tbZz4+Ml09a1soa1tjPj4yXXwwKSs0MD4+Ml07a1toPj4yXT1rWyhrW2w+PjJdfDApKzgrOD4+Ml07d2hpbGUoMSl7aWYoIShrW2g+PjJdfDApKWJyZWFrO2tbaT4+Ml09a1soa1toPj4yXXwwKSs4Pj4yXTtfeihrW2M+PjJdfDAsa1tpPj4yXXwwLDAsa1tmPj4yXXwwLGtbZT4+Ml18MCxrW2c+PjJdfDApO2tbaD4+Ml09a1trW2g+PjJdPj4yXX0keihrW2M+PjJdfDAsa1tkPj4yXXwwKTtyPWo7cmV0dXJufWZ1bmN0aW9uIFd6KGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTA7ZD1yO3I9cisxNnwwO2Y9ZCsxMnwwO2c9ZCs4fDA7Yz1kKzR8MDtlPWQ7a1tmPj4yXT1hO2tbZz4+Ml09YjtiPWJ4KGtbZj4+Ml18MCxrW2c+PjJdfDApfDA7a1tlPj4yXT1iO2I9eGkoa1tmPj4yXXwwLGtbZT4+Ml18MCl8MDtrW2M+PjJdPWI7Ymcoa1tmPj4yXXwwLGtbZT4+Ml18MCk7cj1kO3JldHVybiBrW2M+PjJdfDB9ZnVuY3Rpb24gWHooYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGk9MDtpPXI7cj1yKzMyfDA7ZD1pKzE2fDA7ZT1pKzEyfDA7Zj1pKzh8MDtnPWkrNHwwO2g9aTtrW2Q+PjJdPWE7a1tlPj4yXT1iO2tbZj4+Ml09YztjPVBoKGtba1tkPj4yXT4+Ml18MCxrWyhrW2U+PjJdfDApKzY0Pj4yXXwwKXwwO2tbZz4+Ml09YztCeChrW2Q+PjJdfDAsMCxrW2c+PjJdfDApO2tbaD4+Ml09a1soa1tkPj4yXXwwKSs0MD4+Ml07Yz0oa1tkPj4yXXwwKSs0MHwwO2tbYz4+Ml09KGtbYz4+Ml18MCkrMztjPWtbZD4+Ml18MDthPWtbZz4+Ml18MDtiPWtbaD4+Ml18MDtpZihrW2Y+PjJdfDApWnooYyxhLGIsa1trW2Y+PjJdPj4yXXwwLDMwODU0KTtlbHNlIFp6KGMsYSxiLGtba1tlPj4yXT4+Ml18MCwzMDg1OCk7X3ooa1tkPj4yXXwwLGtbZT4+Ml18MCxrW2Y+PjJdfDAsa1toPj4yXXwwLChrWyhrW2Q+PjJdfDApKzQ0Pj4yXXwwKSsxfDAsa1soa1tkPj4yXXwwKSs0MD4+Ml18MCk7JHooa1tkPj4yXXwwLGtbZz4+Ml18MCk7cj1pO3JldHVybn1mdW5jdGlvbiBZeihhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MCxtPTAsbj0wLG89MCxwPTAscT0wO3E9cjtyPXIrNDh8MDtwPXErOHwwO289cTtlPXErMzZ8MDtmPXErMzJ8MDtnPXErMjh8MDtoPXErMjR8MDtqPXErMjB8MDtuPXErMTZ8MDttPXErMTJ8MDtrW2Y+PjJdPWE7a1tnPj4yXT1iO2tbaD4+Ml09YztrW2o+PjJdPWQ7a1ttPj4yXT1rW2tbZj4+Ml0+PjJdO2I9KGtbbT4+Ml18MCkrMTQ4fDA7aWYoKGtbKGtbaD4+Ml18MCkrND4+Ml18MCk+Pj4wPjApe2lmKGlbYis1Pj4wXXwwKXtPaChrW2Y+PjJdfDAsMzA4MTcsbyk7a1tlPj4yXT0tMTtwPWtbZT4+Ml18MDtyPXE7cmV0dXJuIHB8MH1rW2tbaj4+Ml0+PjJdPWtbaD4+Ml07bz1XeihrW20+PjJdfDAsa1tnPj4yXXwwKXwwO2tbbj4+Ml09bztpZigoa1tuPj4yXXwwKTwwKXtvPWtbZj4+Ml18MDtrW3A+PjJdPWtbZz4+Ml07T2gobywzMDgzNCxwKTtrW2U+PjJdPS0xO3A9a1tlPj4yXXwwO3I9cTtyZXR1cm4gcHwwfX1lbHNle2tbbj4+Ml09bFtiKzQ+PjBdO2tba1tqPj4yXT4+Ml09a1tnPj4yXX1rW2U+PjJdPWtbbj4+Ml07cD1rW2U+PjJdfDA7cj1xO3JldHVybiBwfDB9ZnVuY3Rpb24gWnooYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wO3g9cjtyPXIrOTZ8MDt2PXgrMTZ8MDt1PXg7Zj14Kzg0fDA7Zz14KzgwfDA7aD14Kzc2fDA7aj14KzcyfDA7bD14KzY4fDA7cD14KzY0fDA7bz14KzYwfDA7cT14KzU2fDA7dD14KzUyfDA7bj14KzQwfDA7bT14Kzg4fDA7dz14KzM2fDA7cz14KzMyfDA7a1tmPj4yXT1hO2tbZz4+Ml09YjtrW2g+PjJdPWM7a1tqPj4yXT1kO2tbbD4+Ml09ZTtrW28+PjJdPWtba1tmPj4yXT4+Ml07ZT1ueChrW2Y+PjJdfDApfDA7a1t0Pj4yXT1lO2lmKCEoa1t0Pj4yXXwwKSl7cj14O3JldHVybn1rW3E+PjJdPShrWyhrW28+PjJdfDApKzE2Pj4yXXwwKSsoa1tnPj4yXTw8NCk7a1twPj4yXT0wO3doaWxlKDEpe2lmKChrW3A+PjJdfDApPj0zKWJyZWFrO2tbdz4+Ml09a1s0Mzk2KyhrW3A+PjJdPDwzKT4+Ml07ZT1EaShrW28+PjJdfDAsa1t3Pj4yXXwwLGtba1txPj4yXT4+Ml18MCl8MDtrW3M+PjJdPWU7ZG8gaWYoIWUpe2lmKGtbNDM5Nisoa1twPj4yXTw8MykrND4+Ml18MCl7ZT1rW2Y+PjJdfDA7YT1rW3c+PjJdfDA7ZD1rWzQzOTYrKGtbcD4+Ml08PDMpKzQ+PjJdfDA7a1t1Pj4yXT1rW2tbcT4+Ml0+PjJdO2tbdSs0Pj4yXT1hO2tbdSs4Pj4yXT1kO214KGUsMzA5MTUsdSk7a1tuKyhrW3A+PjJdPDwyKT4+Ml09a1soa1tmPj4yXXwwKSsxMDQ+PjJdO2lbbSsoa1twPj4yXXwwKT4+MF09MTZ9fWVsc2V7a1tuKyhrW3A+PjJdPDwyKT4+Ml09a1soa1tzPj4yXXwwKSsyOD4+Ml07aVttKyhrW3A+PjJdfDApPj4wXT0wO2JBKGtbZj4+Ml18MCxrW2c+PjJdfDAsa1tuKyhrW3A+PjJdPDwyKT4+Ml18MCwxLGtbdz4+Ml18MCk7aWYoa1tqPj4yXXwwKXtlPWtbZj4+Ml18MDtjPWtbdz4+Ml18MDthPWtbbD4+Ml18MDtkPWtbaj4+Ml18MDtrW3Y+PjJdPWtba1txPj4yXT4+Ml07a1t2KzQ+PjJdPWM7a1t2Kzg+PjJdPWE7a1t2KzEyPj4yXT1kO214KGUsMzA5Mzgsdik7YnJlYWt9ZWxzZXtzeChrW3Q+PjJdfDAsMTMxLGtbbisoa1twPj4yXTw8Mik+PjJdfDAsa1tnPj4yXXwwKXwwO2JyZWFrfX13aGlsZSgwKTtrW3A+PjJdPShrW3A+PjJdfDApKzF9a1twPj4yXT0wO3doaWxlKDEpe2lmKCEoa1s0Mzk2KyhrW3A+PjJdPDwzKSs0Pj4yXXwwKSlicmVhaztTaChrW3Q+PjJdfDAsMTA1LChrW2g+PjJdfDApKyhrW3A+PjJdfDApfDAsa1tuKyhrW3A+PjJdPDwyKT4+Ml18MCxrW2c+PjJdfDAsMyl8MDtUaChrW3Q+PjJdfDAsaVttKyhrW3A+PjJdfDApPj4wXXwwKTtrW3A+PjJdPShrW3A+PjJdfDApKzF9cj14O3JldHVybn1mdW5jdGlvbiBfeihhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLG49MCxvPTAscD0wLHE9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MCxFPTAsRj0wLEc9MCxIPTAsST0wLEo9MCxLPTAsTD0wLE09MCxOPTAsTz0wLFA9MCxRPTAsUj0wO1I9cjtyPXIrMTI4fDA7aj1SKzExNnwwO249UisxMTJ8MDtvPVIrMTA4fDA7cD1SKzEwNHwwO2c9UisxMDB8MDtoPVIrOTZ8MDt1PVIrOTJ8MDtGPVIrODh8MDt5PVIrODR8MDt6PVIrODB8MDtPPVIrNzZ8MDt3PVIrNzJ8MDtBPVIrNjh8MDt4PVIrNjR8MDtEPVIrMTIwfDA7ST1SKzYwfDA7TD1SKzU2fDA7Rz1SKzUyfDA7Tj1SKzQ4fDA7TT1SKzQ0fDA7SD1SKzQwfDA7Sz1SKzM2fDA7Sj1SKzMyfDA7Qj1SKzI4fDA7dD1SKzI0fDA7cz1SKzIwfDA7UD1SKzE2fDA7Qz1SKzEyfDA7dj1SKzh8MDtxPVIrNHwwO0U9UjtrW2o+PjJdPWE7a1tuPj4yXT1iO2tbbz4+Ml09YztrW3A+PjJdPWQ7a1tnPj4yXT1lO2tbaD4+Ml09ZjtrW3U+PjJdPWtba1tqPj4yXT4+Ml07a1tBPj4yXT0tMTtpW0Q+PjBdPTE7Yj1rW2c+PjJdfDA7a1tnPj4yXT1iKzE7a1tJPj4yXT1iO2I9a1tnPj4yXXwwO2tbZz4+Ml09YisxO2tbTD4+Ml09YjtiPWtbZz4+Ml18MDtrW2c+PjJdPWIrMTtrW0c+PjJdPWI7Yj1rW2c+PjJdfDA7a1tnPj4yXT1iKzE7a1tOPj4yXT1iO2I9a1tnPj4yXXwwO2tbZz4+Ml09YisxO2tbTT4+Ml09YjtiPWtbZz4+Ml18MDtrW2c+PjJdPWIrMTtrW0g+PjJdPWI7Yj1rW2c+PjJdfDA7a1tnPj4yXT1iKzE7a1tLPj4yXT1iO2tbSj4+Ml09a1tnPj4yXTtpZigoa1soa1tqPj4yXXwwKSs0ND4+Ml18MCk+KGtbZz4+Ml18MCkpZz1rWyhrW2o+PjJdfDApKzQ0Pj4yXXwwO2Vsc2UgZz1rW2c+PjJdfDA7a1soa1tqPj4yXXwwKSs0ND4+Ml09ZztiPW54KGtbaj4+Ml18MCl8MDtrW08+PjJdPWI7aWYoKGtbTz4+Ml18MCk9PTB8KGtbbj4+Ml18MCk9PTApe3I9UjtyZXR1cm59aWYoIShrWyhrW24+PjJdfDApKzI4Pj4yXXwwKSl7cj1SO3JldHVybn1pZighKGpmKDMwODYyLGtba1tuPj4yXT4+Ml18MCwwKXwwKSl7cj1SO3JldHVybn1iPVBoKGtbdT4+Ml18MCxrWyhrW24+PjJdfDApKzY0Pj4yXXwwKXwwO2tbeD4+Ml09YjtpZihreChrW2o+PjJdfDAsMjgsa1trW24+PjJdPj4yXXwwLDAsa1soa1soa1t1Pj4yXXwwKSsxNj4+Ml18MCkrKGtbeD4+Ml08PDQpPj4yXXwwKXwwKXtyPVI7cmV0dXJufWJBKGtbaj4+Ml18MCxrW3g+PjJdfDAsa1soa1tuPj4yXXwwKSsyOD4+Ml18MCwwLGtba1tuPj4yXT4+Ml18MCk7Yj1rW2g+PjJdfDA7a1toPj4yXT1iKzE7a1t6Pj4yXT1iO2I9a1toPj4yXXwwO2tbaD4+Ml09YisxO2tbeT4+Ml09YjtpZigoa1soa1tqPj4yXXwwKSs0MD4+Ml18MCk+KGtbaD4+Ml18MCkpZz1rWyhrW2o+PjJdfDApKzQwPj4yXXwwO2Vsc2UgZz1rW2g+PjJdfDA7a1soa1tqPj4yXXwwKSs0MD4+Ml09ZztjQShrW2o+PjJdfDAsa1t6Pj4yXXwwLGtbeD4+Ml18MCxrW24+PjJdfDAsMTA0KTtyeChrW08+PjJdfDAsa1tNPj4yXXwwLGtba1tuPj4yXT4+Ml18MCl8MDtrW0Y+PjJdPWtbKGtbbj4+Ml18MCkrOD4+Ml07d2hpbGUoMSl7Zz1rW28+PjJdfDA7aWYoIShrW0Y+PjJdfDApKWJyZWFrO2lmKCEoKGd8MCkhPTA/KGtbbz4+Ml18MCkhPShrW0Y+PjJdfDApOjApKVE9MTU7ZG8gaWYoKFF8MCk9PTE1KXtRPTA7aWYoIShrWyhrW0Y+PjJdfDApKzM2Pj4yXXwwKSlpW0Q+PjBdPTA7aWYoKChsWyhrW24+PjJdfDApKzQyPj4wXXwwKSYzMnwwKSE9MD8oaVsoa1tGPj4yXXwwKSs1NT4+MF0mM3wwKT09MjowKXtrW0I+PjJdPW1bKGtbRj4+Ml18MCkrNTA+PjFdO2tbUD4+Ml09a1trW24+PjJdPj4yXTtrW0M+PjJdPShrW0I+PjJdfDApLTF9ZWxzZXtrW0I+PjJdPW1bKGtbRj4+Ml18MCkrNTI+PjFdO2tbUD4+Ml09a1trW0Y+PjJdPj4yXTtpZigobFsoa1tGPj4yXXwwKSs1NT4+MF18MCk+Pj4zJjEpZz1tWyhrW0Y+PjJdfDApKzUwPj4xXXwwO2Vsc2UgZz1rW0I+PjJdfDA7a1tDPj4yXT1nLTF9cngoa1tPPj4yXXwwLGtbSD4+Ml18MCxrW1A+PjJdfDApfDA7aWYoKGtbKGtbaj4+Ml18MCkrNDQ+PjJdfDApPigoa1tKPj4yXXwwKSsoa1tDPj4yXXwwKXwwKSlnPWtbKGtbaj4+Ml18MCkrNDQ+PjJdfDA7ZWxzZSBnPShrW0o+PjJdfDApKyhrW0M+PjJdfDApfDA7a1soa1tqPj4yXXwwKSs0ND4+Ml09Zzt0eChrW08+PjJdfDAsMTA0LGtbeT4+Ml18MCxrWyhrW0Y+PjJdfDApKzQ0Pj4yXXwwLGtbeD4+Ml18MCl8MDtkQShrW2o+PjJdfDAsa1tGPj4yXXwwKTtzeChrW08+PjJdfDAsNzYsa1tCPj4yXXwwLChrW0w+PjJdfDApKzF8MCl8MDtzeChrW08+PjJdfDAsNzYsbVsoa1tGPj4yXXwwKSs1MD4+MV18MCwoa1tMPj4yXXwwKSsyfDApfDA7d3goa1tPPj4yXXwwLDg5LDAsKGtbTD4+Ml18MCkrMXwwLGtbTD4+Ml18MCw0MjkyLC01KXwwO1RoKGtbTz4+Ml18MCwyKTtoPWFBKGtbTz4+Ml18MCw1NyxrW3k+PjJdfDApfDA7a1t0Pj4yXT1oO3N4KGtbTz4+Ml18MCw3NiwwLGtbRz4+Ml18MCl8MDtoPUd4KGtbTz4+Ml18MCl8MDtrW3M+PjJdPWg7aWYoKGtbQz4+Ml18MCk+MCl7aD1lQShrW08+PjJdfDApfDA7a1t2Pj4yXT1oO2g9ZHgoa1t1Pj4yXXwwLGtbQz4+Ml08PDIsMCl8MDtrW3E+PjJdPWg7aWYoIShrW3E+PjJdfDApKWJyZWFrO3B4KGtbTz4+Ml18MCwxMyl8MDtoPUd4KGtbTz4+Ml18MCl8MDtrW3M+PjJdPWg7aWYoKChrW0M+PjJdfDApPT0xPyhtWyhrW0Y+PjJdfDApKzUwPj4xXXwwfDApPT0xOjApPyhsWyhrW0Y+PjJdfDApKzU0Pj4wXXwwfDApIT0wOjApc3goa1tPPj4yXXwwLDM1LGtbSj4+Ml18MCxrW3Y+PjJdfDApfDA7a1t3Pj4yXT0wO3doaWxlKDEpe2lmKChrW3c+PjJdfDApPj0oa1tDPj4yXXwwKSlicmVhaztoPWZBKGtbaj4+Ml18MCxrWyhrWyhrW0Y+PjJdfDApKzMyPj4yXXwwKSsoa1t3Pj4yXTw8Mik+PjJdfDApfDA7a1tFPj4yXT1oO3N4KGtbTz4+Ml18MCw3NixrW3c+PjJdfDAsa1tHPj4yXXwwKXwwO3R4KGtbTz4+Ml18MCw5NixrW3k+PjJdfDAsa1t3Pj4yXXwwLGtbTj4+Ml18MCl8MDtoPXd4KGtbTz4+Ml18MCwzNixrW04+PjJdfDAsMCwoa1tKPj4yXXwwKSsoa1t3Pj4yXXwwKXwwLGtbRT4+Ml18MCwtNCl8MDtrWyhrW3E+PjJdfDApKyhrW3c+PjJdPDwyKT4+Ml09aDtUaChrW08+PjJdfDAsLTEyOCk7a1t3Pj4yXT0oa1t3Pj4yXXwwKSsxfXN4KGtbTz4+Ml18MCw3NixrW0M+PjJdfDAsa1tHPj4yXXwwKXwwO2dBKGtbTz4+Ml18MCxrW3Y+PjJdfDApfDA7aEEoa1tPPj4yXXwwLChrW3M+PjJdfDApLTF8MCk7a1t3Pj4yXT0wO3doaWxlKDEpe2c9a1tPPj4yXXwwO2lmKChrW3c+PjJdfDApPj0oa1tDPj4yXXwwKSlicmVhaztoQShnLGtbKGtbcT4+Ml18MCkrKGtbdz4+Ml08PDIpPj4yXXwwKTt0eChrW08+PjJdfDAsOTYsa1t5Pj4yXXwwLGtbdz4+Ml18MCwoa1tKPj4yXXwwKSsoa1t3Pj4yXXwwKXwwKXwwO2tbdz4+Ml09KGtbdz4+Ml18MCkrMX1pQShnLGtbdj4+Ml18MCk7Ymcoa1t1Pj4yXXwwLGtbcT4+Ml18MCl9d3goa1tPPj4yXXwwLDg5LDEsa1tMPj4yXXwwLGtbTj4+Ml18MCw0MzIwLC01KXwwO1RoKGtbTz4+Ml18MCwyKTtzeChrW08+PjJdfDAsNyxrW3k+PjJdfDAsa1tzPj4yXXwwKXwwO2pBKGtbTz4+Ml18MCxrW0w+PjJdfDAsMCxrW0s+PjJdfDApO3d4KGtbTz4+Ml18MCw5OSxrW00+PjJdfDAsMyxrW04+PjJdfDAsMzA4NzEsMCl8MDtzeChrW08+PjJdfDAsMTE0LGtbcD4+Ml18MCxrW0k+PjJdfDApfDA7dHgoa1tPPj4yXXwwLDExNSxrW3A+PjJdfDAsa1tOPj4yXXwwLGtbST4+Ml18MCl8MDtUaChrW08+PjJdfDAsOCk7aEEoa1tPPj4yXXwwLGtbdD4+Ml18MCl9d2hpbGUoMCk7a1tGPj4yXT1rWyhrW0Y+PjJdfDApKzIwPj4yXX1pZihnKXtyPVI7cmV0dXJufWlmKCEobFtEPj4wXXwwKSl7cj1SO3JldHVybn1zeChrW08+PjJdfDAsMTAwLGtbej4+Ml18MCxrW0s+PjJdfDApfDA7UT1hQShrW08+PjJdfDAsMjIsa1tLPj4yXXwwKXwwO2tbQT4+Ml09UTtzeChrW08+PjJdfDAsNzksMCxrW0g+PjJdfDApfDA7d3goa1tPPj4yXXwwLDk5LGtbTT4+Ml18MCwzLGtbTj4+Ml18MCwzMDg3MSwwKXwwO3N4KGtbTz4+Ml18MCwxMTQsa1twPj4yXXwwLGtbST4+Ml18MCl8MDt0eChrW08+PjJdfDAsMTE1LGtbcD4+Ml18MCxrW04+PjJdfDAsa1tJPj4yXXwwKXwwO1RoKGtbTz4+Ml18MCw4KTtoQShrW08+PjJdfDAsa1tBPj4yXXwwKTtyPVI7cmV0dXJufWZ1bmN0aW9uICR6KGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MDtlPXI7cj1yKzE2fDA7Zj1lKzh8MDtjPWUrNHwwO2Q9ZTtrW2Y+PjJdPWE7a1tjPj4yXT1iO2E9bngoa1tmPj4yXXwwKXwwO2tbZD4+Ml09YTtpZighKGtbZD4+Ml18MCkpe3I9ZTtyZXR1cm59YUEoa1tkPj4yXXwwLDEzNyxrW2M+PjJdfDApfDA7cj1lO3JldHVybn1mdW5jdGlvbiBhQShhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MDtkPXI7cj1yKzE2fDA7Zz1kKzh8MDtmPWQrNHwwO2U9ZDtrW2c+PjJdPWE7a1tmPj4yXT1iO2tbZT4+Ml09YztjPXR4KGtbZz4+Ml18MCxrW2Y+PjJdfDAsa1tlPj4yXXwwLDAsMCl8MDtyPWQ7cmV0dXJuIGN8MH1mdW5jdGlvbiBiQShhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsbT0wLG49MCxvPTAscD0wLHE9MCxzPTAsdD0wO3M9cjtyPXIrNDh8MDt0PXMrMjh8MDtqPXMrMjR8MDttPXMrMjB8MDtuPXMrMzJ8MDtvPXMrMTZ8MDtwPXMrMTJ8MDtmPXMrOHwwO2c9cys0fDA7cT1zO2tbdD4+Ml09YTtrW2o+PjJdPWI7a1ttPj4yXT1jO2lbbj4+MF09ZDtrW28+PjJdPWU7Yj1rW3Q+PjJdfDA7aWYoa1soa1t0Pj4yXXwwKSsxMjQ+PjJdfDApYj1rW2IrMTI0Pj4yXXwwO2tbcD4+Ml09YjtrW2Y+PjJdPTA7d2hpbGUoMSl7aWYoKGtbZj4+Ml18MCk+PShrWyhrW3A+PjJdfDApKzExMj4+Ml18MCkpYnJlYWs7a1txPj4yXT0oa1soa1twPj4yXXwwKSsxMTY+PjJdfDApKyhrW2Y+PjJdPDw0KTtpZigoa1trW3E+PjJdPj4yXXwwKT09KGtbaj4+Ml18MCk/KGtbKGtbcT4+Ml18MCkrND4+Ml18MCk9PShrW20+PjJdfDApOjApe2g9NzticmVha31rW2Y+PjJdPShrW2Y+PjJdfDApKzF9aWYoKGh8MCk9PTcpe2lmKGxbKGtbcT4+Ml18MCkrOD4+MF18MCliPTE7ZWxzZSBiPShsW24+PjBdfDB8MCkhPTA7aVsoa1txPj4yXXwwKSs4Pj4wXT1iJjE7cj1zO3JldHVybn1rW2c+PjJdPShrWyhrW3A+PjJdfDApKzExMj4+Ml18MCkrMTw8NDtiPWtbZz4+Ml18MDtiPVp4KGtba1twPj4yXT4+Ml18MCxrWyhrW3A+PjJdfDApKzExNj4+Ml18MCxiLCgoYnwwKTwwKTw8MzE+PjMxKXwwO2tbKGtbcD4+Ml18MCkrMTE2Pj4yXT1iO2I9KGtbcD4+Ml18MCkrMTEyfDA7aWYoa1soa1twPj4yXXwwKSsxMTY+PjJdfDApe3Q9a1tiPj4yXXwwO2tbYj4+Ml09dCsxO2tbcT4+Ml09KGtbKGtbcD4+Ml18MCkrMTE2Pj4yXXwwKSsodDw8NCk7a1trW3E+PjJdPj4yXT1rW2o+PjJdO2tbKGtbcT4+Ml18MCkrND4+Ml09a1ttPj4yXTtpWyhrW3E+PjJdfDApKzg+PjBdPWlbbj4+MF18MDtrWyhrW3E+PjJdfDApKzEyPj4yXT1rW28+PjJdO3I9cztyZXR1cm59ZWxzZXtrW2I+PjJdPTA7d2goa1trW3A+PjJdPj4yXXwwKTtyPXM7cmV0dXJufX1mdW5jdGlvbiBjQShhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxpPTAsbT0wLG49MCxvPTAscD0wO3A9cjtyPXIrMzJ8MDtmPXArMjR8MDtnPXArMjB8MDtoPXArMTZ8MDtpPXArMTJ8MDttPXArOHwwO289cCs0fDA7bj1wO2tbZj4+Ml09YTtrW2c+PjJdPWI7a1toPj4yXT1jO2tbaT4+Ml09ZDtrW20+PjJdPWU7ZD1ueChrW2Y+PjJdfDApfDA7a1tvPj4yXT1kO2JBKGtbZj4+Ml18MCxrW2g+PjJdfDAsa1soa1tpPj4yXXwwKSsyOD4+Ml18MCwoKGtbbT4+Ml18MCk9PTEwNT8xOjApJjI1NSxrW2tbaT4+Ml0+PjJdfDApO2lmKCEobFsoa1tpPj4yXXwwKSs0Mj4+MF0mMzIpKXtTaChrW28+PjJdfDAsa1ttPj4yXXwwLGtbZz4+Ml18MCxrWyhrW2k+PjJdfDApKzI4Pj4yXXwwLGtbaD4+Ml18MCxqWyhrW2k+PjJdfDApKzM0Pj4xXXwwKXwwO3I9cDtyZXR1cm59ZWxzZXtkPVRqKGtbaT4+Ml18MCl8MDtrW24+PjJdPWQ7dHgoa1tvPj4yXXwwLGtbbT4+Ml18MCxrW2c+PjJdfDAsa1soa1tuPj4yXXwwKSs0ND4+Ml18MCxrW2g+PjJdfDApfDA7ZEEoa1tmPj4yXXwwLGtbbj4+Ml18MCk7cj1wO3JldHVybn19ZnVuY3Rpb24gZEEoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wO2M9cjtyPXIrMTZ8MDtlPWMrOHwwO2Q9Yys0fDA7Zj1jO2tbZT4+Ml09YTtrW2Q+PjJdPWI7a1tmPj4yXT1rWyhrW2U+PjJdfDApKzg+PjJdO2E9a1tmPj4yXXwwO1doKGEsLTEsckEoa1tlPj4yXXwwLGtbZD4+Ml18MCl8MCwtNik7cj1jO3JldHVybn1mdW5jdGlvbiBlQShhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTAsZT0wO2Q9cjtyPXIrMTZ8MDtlPWQrOHwwO2M9ZCs0fDA7Yj1kO2tbZT4+Ml09YTtrW2M+PjJdPWtbKGtbZT4+Ml18MCkrMTI+PjJdO2U9KGtbYz4+Ml18MCkrNzJ8MDthPWtbZT4+Ml18MDtrW2U+PjJdPWErMTtrW2I+PjJdPWE7aWYoIShrW2I+PjJdJihrW2I+PjJdfDApLTEpKXtlPVp4KGtba1tjPj4yXT4+Ml18MCxrWyhrW2M+PjJdfDApKzc2Pj4yXXwwLChrW2I+PjJdPDwxKSsxPDwyLDApfDA7a1soa1tjPj4yXXwwKSs3Nj4+Ml09ZX1pZighKGtbKGtbYz4+Ml18MCkrNzY+PjJdfDApKXtlPWtbYj4+Ml18MDtlPS0xLWV8MDtyPWQ7cmV0dXJuIGV8MH1rWyhrWyhrW2M+PjJdfDApKzc2Pj4yXXwwKSsoa1tiPj4yXTw8Mik+PjJdPS0xO2U9a1tiPj4yXXwwO2U9LTEtZXwwO3I9ZDtyZXR1cm4gZXwwfWZ1bmN0aW9uIGZBKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MDtnPXI7cj1yKzMyfDA7Yz1nKzEyfDA7ZD1nKzh8MDtqPWcrNHwwO2U9ZysxN3wwO2g9ZysxNnwwO2Y9ZztrW2M+PjJdPWE7a1tkPj4yXT1iO2tbaj4+Ml09a1trW2M+PjJdPj4yXTtpW2U+PjBdPWlbKGtbaj4+Ml18MCkrNjY+PjBdfDA7aVtoPj4wXT1pWyhrW2o+PjJdfDApKzE0OCs1Pj4wXXwwO2I9YWsoa1tqPj4yXXwwLGlbZT4+MF18MCxrW2Q+PjJdfDAsbFtoPj4wXXwwKXwwO2tbZj4+Ml09YjtpZihpW2g+PjBdfDApe2o9a1tmPj4yXXwwO3I9ZztyZXR1cm4ganwwfWlmKChrW2Y+PjJdfDApIT0wPyhrWyhrW2Y+PjJdfDApKzEyPj4yXXwwKSE9MDowKXtqPWtbZj4+Ml18MDtyPWc7cmV0dXJuIGp8MH1qPXF5KGtbYz4+Ml18MCxpW2U+PjBdfDAsa1tmPj4yXXwwLGtbZD4+Ml18MCl8MDtrW2Y+PjJdPWo7aj1rW2Y+PjJdfDA7cj1nO3JldHVybiBqfDB9ZnVuY3Rpb24gZ0EoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTA7Yz1yO3I9cisxNnwwO2U9Yys0fDA7ZD1jO2tbZT4+Ml09YTtrW2Q+PjJdPWI7YT10eChrW2U+PjJdfDAsMTMsMCxrW2Q+PjJdfDAsMCl8MDtyPWM7cmV0dXJuIGF8MH1mdW5jdGlvbiBoQShhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MDtjPXI7cj1yKzE2fDA7ZD1jKzR8MDtlPWM7a1tkPj4yXT1hO2tbZT4+Ml09YjtuQShrW2Q+PjJdfDAsa1tlPj4yXXwwLGtbKGtbZD4+Ml18MCkrMTM2Pj4yXXwwKTtyPWM7cmV0dXJufWZ1bmN0aW9uIGlBKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTA7Zj1yO3I9cisxNnwwO2M9ZisxMnwwO2c9Zis4fDA7ZT1mKzR8MDtkPWY7a1tjPj4yXT1hO2tbZz4+Ml09YjtrW2U+PjJdPWtbKGtbYz4+Ml18MCkrMTI+PjJdO2tbZD4+Ml09LTEtKGtbZz4+Ml18MCk7aWYoIShrWyhrW2U+PjJdfDApKzc2Pj4yXXwwKSl7cj1mO3JldHVybn1rWyhrWyhrW2U+PjJdfDApKzc2Pj4yXXwwKSsoa1tkPj4yXTw8Mik+PjJdPWtbKGtbYz4+Ml18MCkrMTM2Pj4yXTtyPWY7cmV0dXJufWZ1bmN0aW9uIGpBKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTA7ZT1yO3I9cisxNnwwO2Y9ZSsxMnwwO2g9ZSs4fDA7Zz1lO2tbZj4+Ml09YTtrW2g+PjJdPWI7a1tlKzQ+PjJdPWM7a1tnPj4yXT1kO3d4KGtbZj4+Ml18MCw4OSwwLGtbaD4+Ml18MCxrW2c+PjJdfDAsNDM0OCwtNSl8MDtUaChrW2Y+PjJdfDAsMSk7cj1lO3JldHVybn1mdW5jdGlvbiBrQShhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaT0wLGo9MCxsPTAsbT0wLG49MCxvPTA7bj1yO3I9cis2NHwwO2o9bisyNHwwO2k9bisxNnwwO2Q9bis1NnwwO289bis0OHwwO2g9bis0NHwwO2w9bis0MHwwO2U9biszNnwwO209biszMnwwO2c9bis4fDA7Zj1uO2tbZD4+Ml09YTtrW24rNTI+PjJdPWI7a1tvPj4yXT1jO2E9aWUoa1trW28+PjJdPj4yXXwwKXwwO2tbaD4+Ml09YTthPSgoa1soa1toPj4yXXwwKSsxMj4+Ml18MCkrMXwwKSoyNXwwO2E9dWcoYSwoKGF8MCk8MCk8PDMxPj4zMSl8MDtrW20+PjJdPWE7aWYoIShrW20+PjJdfDApKXtDZShrW2Q+PjJdfDApO3I9bjtyZXR1cm59bz1rW20+PjJdfDA7YT1pO2tbYT4+Ml09a1trW2g+PjJdPj4yXTtrW2ErND4+Ml09MDtfZCgyNCxvLDMwODg0LGkpfDA7bz1rW20+PjJdfDA7bz1vKyhUZihrW20+PjJdfDApfDApfDA7a1tsPj4yXT1vO2tbZT4+Ml09MDt3aGlsZSgxKXtpZigoa1tlPj4yXXwwKT49KGtbKGtbaD4+Ml18MCkrMTI+PjJdfDApKWJyZWFrO289ZztrW28+PjJdPShrWyhrWyhrW2g+PjJdfDApKzIwKzQ+PjJdfDApKyhrW2U+PjJdPDwyKT4+Ml18MCkrMTtrW28rND4+Ml09MDtvPWc7bz0kUihrW2tbaD4+Ml0+PjJdfDAsMCxrW28+PjJdfDAsa1tvKzQ+PjJdfDApfDA7bz1fUihvfDAsTHwwLDEsMCl8MDtjPWc7Yz1sUyhvfDAsTHwwLGtbYz4+Ml18MCxrW2MrND4+Ml18MCl8MDtvPWY7a1tvPj4yXT1jO2tbbys0Pj4yXT1MO289a1tsPj4yXXwwO2M9ZjthPWtbYys0Pj4yXXwwO2k9ajtrW2k+PjJdPWtbYz4+Ml07a1tpKzQ+PjJdPWE7X2QoMjQsbywzMDg4OSxqKXwwO289VGYoa1tsPj4yXXwwKXwwO2tbbD4+Ml09KGtbbD4+Ml18MCkrbztrW2U+PjJdPShrW2U+PjJdfDApKzF9d2Uoa1tkPj4yXXwwLGtbbT4+Ml18MCwtMSwxNDgpO3I9bjtyZXR1cm59ZnVuY3Rpb24gbEEoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wO2c9cjtyPXIrMzJ8MDtoPWcrMTJ8MDtkPWcrOHwwO2Y9Zys0fDA7ZT1nO2tbZysyMD4+Ml09YTtrW2crMTY+PjJdPWI7a1toPj4yXT1jO2E9aWUoa1trW2g+PjJdPj4yXXwwKXwwO2tbZj4+Ml09YTthPW1lKGtbKGtbaD4+Ml18MCkrND4+Ml18MCl8MDtrW2U+PjJdPWE7aWYoIShrW2tbZj4+Ml0+PjJdfDApKXtrW2Q+PjJdPTA7d2hpbGUoMSl7aWYoKGtbZD4+Ml18MCk+PShrWyhrW2Y+PjJdfDApKzg+PjJdfDApKWJyZWFrO2tbKGtbKGtbZj4+Ml18MCkrMjA+PjJdfDApKyhrW2Q+PjJdPDwyKT4+Ml09MTtrW2Q+PjJdPShrW2Q+PjJdfDApKzF9aD1rW2Y+PjJdfDA7Zj1rW2g+PjJdfDA7Zj1mKzF8MDtrW2g+PjJdPWY7cj1nO3JldHVybn1tQShrW2Y+PjJdfDAsa1tlPj4yXXwwKTtrW2Q+PjJdPTA7d2hpbGUoMSl7aWYoKGtbZD4+Ml18MCk+PShrW2U+PjJdfDApKWJyZWFrO2g9KGtbKGtbZj4+Ml18MCkrMjA+PjJdfDApKyhrW2Q+PjJdPDwyKXwwO2tbaD4+Ml09KGtbaD4+Ml18MCkrMTtrW2Q+PjJdPShrW2Q+PjJdfDApKzF9a1tkPj4yXT1rW2U+PjJdO3doaWxlKDEpe2lmKChrW2Q+PjJdfDApPj0oa1soa1tmPj4yXXwwKSs4Pj4yXXwwKSlicmVhaztoPShrWyhrW2Y+PjJdfDApKzIwKzQ+PjJdfDApKyhrW2Q+PjJdPDwyKXwwO2tbaD4+Ml09KGtbaD4+Ml18MCkrMTtrWyhrWyhrW2Y+PjJdfDApKzIwPj4yXXwwKSsoa1tkPj4yXTw8Mik+PjJdPTE7a1tkPj4yXT0oa1tkPj4yXXwwKSsxfWg9a1tmPj4yXXwwO2Y9a1toPj4yXXwwO2Y9ZisxfDA7a1toPj4yXT1mO3I9ZztyZXR1cm59ZnVuY3Rpb24gbUEoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wO2M9cjtyPXIrMTZ8MDtrW2MrND4+Ml09YTtrW2M+PjJdPWI7cj1jO3JldHVybn1mdW5jdGlvbiBuQShhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MDtkPXI7cj1yKzE2fDA7Zj1kKzh8MDtlPWQrNHwwO2c9ZDtrW2Y+PjJdPWE7a1tlPj4yXT1iO2tbZz4+Ml09YzthPWtbZz4+Ml18MDtjPShvQShrW2Y+PjJdfDAsa1tlPj4yXXwwKXwwKSs4fDA7a1tjPj4yXT1hO3I9ZDtyZXR1cm59ZnVuY3Rpb24gb0EoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wO2Y9cjtyPXIrMTZ8MDtjPWYrOHwwO2Q9Zis0fDA7ZT1mO2tbZD4+Ml09YTtrW2U+PjJdPWI7aWYoKGtbZT4+Ml18MCk8MClrW2U+PjJdPShrWyhrW2Q+PjJdfDApKzEzNj4+Ml18MCktMTtpZihpWyhrW2tbZD4+Ml0+PjJdfDApKzY5Pj4wXXwwKXtrW2M+PjJdPTQzNzY7YT1rW2M+PjJdfDA7cj1mO3JldHVybiBhfDB9ZWxzZXtrW2M+PjJdPShrWyhrW2Q+PjJdfDApKzg4Pj4yXXwwKSsoKGtbZT4+Ml18MCkqMjB8MCk7YT1rW2M+PjJdfDA7cj1mO3JldHVybiBhfDB9cmV0dXJuIDB9ZnVuY3Rpb24gcEEoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGk9MCxqPTAsbD0wLG09MDtqPXI7cj1yKzQ4fDA7ZD1qKzMyfDA7bT1qKzI0fDA7aT1qKzIwfDA7Zj1qKzE2fDA7aD1qKzEyfDA7Zz1qKzh8MDtsPWorNHwwO2U9ajtrW2Q+PjJdPWE7a1tqKzI4Pj4yXT1iO2tbbT4+Ml09YzthPW1lKGtba1ttPj4yXT4+Ml18MCl8MDtrW2Y+PjJdPWE7a1tnPj4yXT0oa1tmPj4yXXwwKSsxJi0yO2E9bWUoa1soa1ttPj4yXXwwKSs0Pj4yXXwwKXwwO2tbaD4+Ml09YTtrW2w+PjJdPTU2KyhrW2c+PjJdPDwyKSsoa1tnPj4yXTw8Mik7YT1GZShrW2Q+PjJdfDApfDA7a1tlPj4yXT1hO2E9a1tsPj4yXXwwO2E9Q2goa1tlPj4yXXwwLGEsKChhfDApPDApPDwzMT4+MzEpfDA7a1tpPj4yXT1hO2lmKCEoa1tpPj4yXXwwKSl7Q2Uoa1tkPj4yXXwwKTtyPWo7cmV0dXJufWVsc2V7a1soa1tpPj4yXXwwKSs1Mj4+Ml09a1tlPj4yXTtrW2tbaT4+Ml0+PjJdPTA7a1soa1tpPj4yXXwwKSs4Pj4yXT1rW2Y+PjJdO2tbKGtbaT4+Ml18MCkrMTI+PjJdPWtbaD4+Ml07a1soa1tpPj4yXXwwKSsyMCs0Pj4yXT0oa1tpPj4yXXwwKSs1NjtrWyhrW2k+PjJdfDApKzIwPj4yXT0oa1soa1tpPj4yXXwwKSsyMCs0Pj4yXXwwKSsoa1tnPj4yXTw8Mik7cGUoa1tkPj4yXXwwLGtbaT4+Ml18MCw1NiwxNTMpO3I9ajtyZXR1cm59fWZ1bmN0aW9uIHFBKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MDtiPXI7cj1yKzE2fDA7ZD1iKzR8MDtjPWI7a1tkPj4yXT1hO2tbYz4+Ml09a1tkPj4yXTtiZyhrWyhrW2M+PjJdfDApKzUyPj4yXXwwLGtbYz4+Ml18MCk7cj1iO3JldHVybn1mdW5jdGlvbiByQShhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsbj0wLG89MDtvPXI7cj1yKzMyfDA7ZD1vKzI4fDA7ZT1vKzI0fDA7Zj1vKzIwfDA7Zz1vKzE2fDA7aD1vKzEyfDA7Yz1vKzh8MDtqPW8rNHwwO249bztrW2U+PjJdPWE7a1tmPj4yXT1iO2tbaD4+Ml09bVsoa1tmPj4yXXwwKSs1Mj4+MV07a1tjPj4yXT1tWyhrW2Y+PjJdfDApKzUwPj4xXTtpZihrWyhrW2U+PjJdfDApKzM2Pj4yXXwwKXtrW2Q+PjJdPTA7bj1rW2Q+PjJdfDA7cj1vO3JldHVybiBufDB9Yj1rW2tbZT4+Ml0+PjJdfDA7aWYoKGxbKGtbZj4+Ml18MCkrNTU+PjBdfDApPj4+MyYxKXtjPXNBKGIsa1tjPj4yXXwwLChrW2g+PjJdfDApLShrW2M+PjJdfDApfDApfDA7a1tqPj4yXT1jfWVsc2V7Yz1zQShiLGtbaD4+Ml18MCwwKXwwO2tbaj4+Ml09Y31pZihrW2o+PjJdfDApe2tbZz4+Ml09MDt3aGlsZSgxKXtpZigoa1tnPj4yXXwwKT49KGtbaD4+Ml18MCkpYnJlYWs7a1tuPj4yXT1rWyhrWyhrW2Y+PjJdfDApKzMyPj4yXXwwKSsoa1tnPj4yXTw8Mik+PjJdO2lmKChrW24+PjJdfDApPT0zNDgzNCliPTA7ZWxzZSBiPWZBKGtbZT4+Ml18MCxrW24+PjJdfDApfDA7a1soa1tqPj4yXXwwKSsyMCsoa1tnPj4yXTw8Mik+PjJdPWI7aVsoa1soa1tqPj4yXXwwKSsxNj4+Ml18MCkrKGtbZz4+Ml18MCk+PjBdPWlbKGtbKGtbZj4+Ml18MCkrMjg+PjJdfDApKyhrW2c+PjJdfDApPj4wXXwwO2tbZz4+Ml09KGtbZz4+Ml18MCkrMX1pZihrWyhrW2U+PjJdfDApKzM2Pj4yXXwwKXt0QShrW2o+PjJdfDApO2tbaj4+Ml09MH19a1tkPj4yXT1rW2o+PjJdO249a1tkPj4yXXwwO3I9bztyZXR1cm4gbnwwfWZ1bmN0aW9uIHNBKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxsPTA7bD1yO3I9ciszMnwwO2Q9bCsxNnwwO2U9bCsxMnwwO2Y9bCs4fDA7Zz1sKzR8MDtoPWw7a1tkPj4yXT1hO2tbZT4+Ml09YjtrW2Y+PjJdPWM7a1tnPj4yXT0oKGtbZT4+Ml18MCkrKGtbZj4+Ml18MCl8MCkqNTthPWR4KGtbZD4+Ml18MCwyNCsoa1tnPj4yXXwwKXwwLDApfDA7a1toPj4yXT1hO2lmKGtbaD4+Ml18MCl7a1soa1toPj4yXXwwKSsxNj4+Ml09KGtbaD4+Ml18MCkrMjArKChrW2U+PjJdfDApKyhrW2Y+PjJdfDApPDwyKTtqWyhrW2g+PjJdfDApKzY+PjFdPWtbZT4+Ml07alsoa1toPj4yXXwwKSs4Pj4xXT1rW2Y+PjJdO2lbKGtbaD4+Ml18MCkrND4+MF09aVsoa1tkPj4yXXwwKSs2Nj4+MF18MDtrWyhrW2g+PjJdfDApKzEyPj4yXT1rW2Q+PjJdO2tba1toPj4yXT4+Ml09MTtkUygoa1toPj4yXXwwKSsyNHwwLDAsa1tnPj4yXXwwKXwwO2g9a1toPj4yXXwwO3I9bDtyZXR1cm4gaHwwfWVsc2V7d2goa1tkPj4yXXwwKTtoPWtbaD4+Ml18MDtyPWw7cmV0dXJuIGh8MH1yZXR1cm4gMH1mdW5jdGlvbiB0QShhKXthPWF8MDt2YXIgYj0wLGM9MDtjPXI7cj1yKzE2fDA7Yj1jO2tbYj4+Ml09YTtpZighKGtbYj4+Ml18MCkpe3I9YztyZXR1cm59YT1rW2I+PjJdfDA7a1thPj4yXT0oa1thPj4yXXwwKSstMTtpZihrW2tbYj4+Ml0+PjJdfDApe3I9YztyZXR1cm59Ymcoa1soa1tiPj4yXXwwKSsxMj4+Ml18MCxrW2I+PjJdfDApO3I9YztyZXR1cm59ZnVuY3Rpb24gdUEoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTAsaT0wLGo9MDtqPXI7cj1yKzMyfDA7Yz1qKzI0fDA7ZD1qKzIwfDA7aD1qKzE2fDA7Zj1qKzEyfDA7ZT1qKzh8MDtnPWorNHwwO2k9ajtrW2M+PjJdPWE7a1tkPj4yXT1iO2tbZT4+Ml09a1trW2M+PjJdPj4yXTtrW2Y+PjJdPTA7a1toPj4yXT1rWyhrW2U+PjJdfDApKzE2Pj4yXTt3aGlsZSgxKXtpZigoa1tmPj4yXXwwKT49KGtbKGtbZT4+Ml18MCkrMjA+PjJdfDApKWJyZWFrO2tbZz4+Ml09a1soa1soa1toPj4yXXwwKSsxMj4+Ml18MCkrOCs4Pj4yXTt3aGlsZSgxKXtpZighKGtbZz4+Ml18MCkpYnJlYWs7a1tpPj4yXT1rWyhrW2c+PjJdfDApKzg+PjJdO3ZBKGtbYz4+Ml18MCxrW2k+PjJdfDAsa1tkPj4yXXwwKTtrW2c+PjJdPWtba1tnPj4yXT4+Ml19a1tmPj4yXT0oa1tmPj4yXXwwKSsxO2tbaD4+Ml09KGtbaD4+Ml18MCkrMTZ9cj1qO3JldHVybn1mdW5jdGlvbiB2QShhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaT0wO2k9cjtyPXIrMzJ8MDtkPWkrMTZ8MDtlPWkrMTJ8MDtmPWkrOHwwO2g9aSs0fDA7Zz1pO2tbZD4+Ml09YTtrW2U+PjJdPWI7a1tmPj4yXT1jO2tbaD4+Ml09a1soa1tlPj4yXXwwKSs4Pj4yXTt3aGlsZSgxKXtpZighKGtbaD4+Ml18MCkpYnJlYWs7aWYoISgoa1tmPj4yXXwwKSE9MD8oUkIoa1tmPj4yXXwwLGtbaD4+Ml18MCl8MCk9PTA6MCkpe2M9UGgoa1trW2Q+PjJdPj4yXXwwLGtbKGtbZT4+Ml18MCkrNjQ+PjJdfDApfDA7a1tnPj4yXT1jO0J4KGtbZD4+Ml18MCwwLGtbZz4+Ml18MCk7d0Eoa1tkPj4yXXwwLGtbaD4+Ml18MCwtMSl9a1toPj4yXT1rWyhrW2g+PjJdfDApKzIwPj4yXX1yPWk7cmV0dXJufWZ1bmN0aW9uIHdBKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxpPTAsaj0wLG49MCxvPTAscD0wLHE9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTA7eD1yO3I9cis4MHwwO2o9eCs2NHwwO249eCs2MHwwO2Q9eCs1NnwwO2g9eCs1MnwwO3Q9eCs0OHwwO3E9eCs0NHwwO3M9eCs0MHwwO289eCszNnwwO3A9eCszMnwwO2k9eCsyOHwwO2Y9eCsyNHwwO3c9eCsyMHwwO2c9eCsxNnwwO3Y9eCsxMnwwO3k9eCs4fDA7ZT14KzR8MDt1PXg7a1tqPj4yXT1hO2tbbj4+Ml09YjtrW2Q+PjJdPWM7a1toPj4yXT1rWyhrW24+PjJdfDApKzEyPj4yXTthPShrW2o+PjJdfDApKzQwfDA7Yj1rW2E+PjJdfDA7a1thPj4yXT1iKzE7a1t0Pj4yXT1iO2I9KGtbaj4+Ml18MCkrNDB8MDthPWtbYj4+Ml18MDtrW2I+PjJdPWErMTtrW3E+PjJdPWE7a1t5Pj4yXT1rW2tbaj4+Ml0+PjJdO2E9UGgoa1t5Pj4yXXwwLGtbKGtbbj4+Ml18MCkrMjQ+PjJdfDApfDA7a1tlPj4yXT1hO2lmKGt4KGtbaj4+Ml18MCwyNyxrW2tbbj4+Ml0+PjJdfDAsMCxrWyhrWyhrW3k+PjJdfDApKzE2Pj4yXXwwKSsoa1tlPj4yXTw8NCk+PjJdfDApfDApe3I9eDtyZXR1cm59YkEoa1tqPj4yXXwwLGtbZT4+Ml18MCxrWyhrW2g+PjJdfDApKzI4Pj4yXXwwLDEsa1trW2g+PjJdPj4yXXwwKTt5PW54KGtbaj4+Ml18MCl8MDtrW3c+PjJdPXk7aWYoIShrW3c+PjJdfDApKXtyPXg7cmV0dXJufWlmKChrW2Q+PjJdfDApPj0wKWtbaT4+Ml09a1tkPj4yXTtlbHNlIGtbaT4+Ml09a1soa1tuPj4yXXwwKSs0ND4+Ml07YT1yQShrW2o+PjJdfDAsa1tuPj4yXXwwKXwwO2tbZz4+Ml09YTthPShrW2o+PjJdfDApKzQwfDA7Yj1rW2E+PjJdfDA7a1thPj4yXT1iKzE7a1tzPj4yXT1iO2I9a1t3Pj4yXXwwO2E9a1tzPj4yXXwwO3k9bVsoa1tuPj4yXXwwKSs1MD4+MV18MDt3eChiLDEwOCxhLDAseSx4QShrW2c+PjJdfDApfDAsLTYpfDA7Y0Eoa1tqPj4yXXwwLGtbdD4+Ml18MCxrW2U+PjJdfDAsa1toPj4yXXwwLDEwNCk7eT1zeChrW3c+PjJdfDAsNTcsa1t0Pj4yXXwwLDApfDA7a1tvPj4yXT15O3k9Rngoa1tqPj4yXXwwKXwwO2tbdj4+Ml09eTt5QShrW2o+PjJdfDAsa1tuPj4yXXwwLGtbdD4+Ml18MCxrW3Y+PjJdfDAsMCxmLDAsMCl8MDtzeChrW3c+PjJdfDAsMTI1LGtbcz4+Ml18MCxrW3Y+PjJdfDApfDA7ekEoa1tqPj4yXXwwLGtbZj4+Ml18MCk7c3goa1t3Pj4yXXwwLDcsa1t0Pj4yXXwwLChrW28+PjJdfDApKzF8MCl8MDtoQShrW3c+PjJdfDAsa1tvPj4yXXwwKTtpZigoa1tkPj4yXXwwKTwwKXN4KGtbdz4+Ml18MCwxMzEsa1tpPj4yXXwwLGtbZT4+Ml18MCl8MDt3eChrW3c+PjJdfDAsMTA1LGtbcT4+Ml18MCxrW2k+PjJdfDAsa1tlPj4yXXwwLGtbZz4+Ml18MCwtNil8MDtUaChrW3c+PjJdfDAsKDF8KChrW2Q+PjJdfDApPj0wPzE2OjApKSYyNTUpO3k9c3goa1t3Pj4yXXwwLDU1LGtbcz4+Ml18MCwwKXwwO2tbbz4+Ml09eTt5PShsWyhrW24+PjJdfDApKzU0Pj4wXXwwfDApIT0wO2Q9R3goa1t3Pj4yXXwwKXwwO2lmKHkpe2tbdT4+Ml09ZCszO2dBKGtbdz4+Ml18MCxrW3U+PjJdfDApfDA7eT1HeChrW3c+PjJdfDApfDA7a1twPj4yXT15O1NoKGtbdz4+Ml18MCwxMTksa1tzPj4yXXwwLGtbdT4+Ml18MCxrW3Y+PjJdfDAsbVsoa1tuPj4yXXwwKSs1MD4+MV18MCl8MDtBQShrW2o+PjJdfDAsMixrW24+PjJdfDApfWVsc2Uga1twPj4yXT1kO3R4KGtbdz4+Ml18MCwxMjAsa1tzPj4yXXwwLGtbdj4+Ml18MCxrW3E+PjJdfDApfDA7dHgoa1t3Pj4yXXwwLDUzLGtbcT4+Ml18MCwwLC0xKXwwO3R4KGtbdz4+Ml18MCwxMjYsa1txPj4yXXwwLGtbdj4+Ml18MCwwKXwwO1RoKGtbdz4+Ml18MCwxNik7SHgoa1tqPj4yXXwwLGtbdj4+Ml18MCk7c3goa1t3Pj4yXXwwLDMsa1tzPj4yXXwwLGtbcD4+Ml18MCl8MDtoQShrW3c+PjJdfDAsa1tvPj4yXXwwKTthQShrW3c+PjJdfDAsMTExLGtbdD4+Ml18MCl8MDthQShrW3c+PjJdfDAsMTExLGtbcT4+Ml18MCl8MDthQShrW3c+PjJdfDAsMTExLGtbcz4+Ml18MCl8MDtyPXg7cmV0dXJufWZ1bmN0aW9uIHhBKGEpe2E9YXwwO3ZhciBiPTAsYz0wO2M9cjtyPXIrMTZ8MDtiPWM7a1tiPj4yXT1hO2lmKGtbYj4+Ml18MCl7YT1rW2I+PjJdfDA7a1thPj4yXT0oa1thPj4yXXwwKSsxfXI9YztyZXR1cm4ga1tiPj4yXXwwfWZ1bmN0aW9uIHlBKGEsYixjLGQsZSxmLGcsaCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7dmFyIGk9MCxtPTAsbj0wLG89MCxwPTAscT0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MDt5PXI7cj1yKzQ4fDA7bj15KzQ0fDA7bz15KzQwfDA7cD15KzM2fDA7cT15KzMyfDA7aT15KzI4fDA7bT15KzI0fDA7cz15KzIwfDA7dD15KzE2fDA7eD15KzEyfDA7dT15Kzh8MDt3PXkrNHwwO3Y9eTtrW24+PjJdPWE7a1tvPj4yXT1iO2tbcD4+Ml09YztrW3E+PjJdPWQ7a1tpPj4yXT1lO2tbbT4+Ml09ZjtrW3M+PjJdPWc7a1t0Pj4yXT1oO2tbeD4+Ml09a1soa1tuPj4yXXwwKSs4Pj4yXTtkbyBpZihrW20+PjJdfDApaWYoa1soa1tvPj4yXXwwKSszNj4+Ml18MCl7aD1lQShrW3g+PjJdfDApfDA7a1trW20+PjJdPj4yXT1oO2tbKGtbbj4+Ml18MCkrNjA+PjJdPWtbcD4+Ml07S0Eoa1tuPj4yXXwwKTtMQShrW24+PjJdfDAsa1soa1tvPj4yXXwwKSszNj4+Ml18MCxrW2tbbT4+Ml0+PjJdfDAsMTYpO2JyZWFrfWVsc2V7a1trW20+PjJdPj4yXT0wO2JyZWFrfXdoaWxlKDApO2lmKChrW2k+PjJdfDApIT0wPygobFsoa1tvPj4yXXwwKSs1NT4+MF18MCk+Pj4zJjF8MCkhPTA6MClpPWpbKGtbbz4+Ml18MCkrNTA+PjFdfDA7ZWxzZSBpPWpbKGtbbz4+Ml18MCkrNTI+PjFdfDA7a1t2Pj4yXT1pJjY1NTM1O2g9TUEoa1tuPj4yXXwwLGtbdj4+Ml18MCl8MDtrW3c+PjJdPWg7ZG8gaWYoa1tzPj4yXXwwKXtpZigoa1t3Pj4yXXwwKT09KGtbdD4+Ml18MCk/KGtbKGtbcz4+Ml18MCkrMzY+PjJdfDApPT0wOjApYnJlYWs7a1tzPj4yXT0wfXdoaWxlKDApO2tbdT4+Ml09MDt3aGlsZSgxKXtpZigoa1t1Pj4yXXwwKT49KGtbdj4+Ml18MCkpYnJlYWs7aWYoISgoKGtbcz4+Ml18MCkhPTA/KGpbKGtbKGtbcz4+Ml18MCkrND4+Ml18MCkrKGtbdT4+Ml08PDEpPj4xXXwwKT09KGpbKGtbKGtbbz4+Ml18MCkrND4+Ml18MCkrKGtbdT4+Ml08PDEpPj4xXXwwKTowKT8oalsoa1soa1tzPj4yXXwwKSs0Pj4yXXwwKSsoa1t1Pj4yXTw8MSk+PjFdfDApIT0tMjowKSl7TkEoa1tuPj4yXXwwLGtbbz4+Ml18MCxrW3A+PjJdfDAsa1t1Pj4yXXwwLChrW3c+PjJdfDApKyhrW3U+PjJdfDApfDApO09BKGtbeD4+Ml18MCw5Mil8MH1rW3U+PjJdPShrW3U+PjJdfDApKzF9aWYoIShrW3E+PjJdfDApKXt0PWtbbj4+Ml18MDt1PWtbdz4+Ml18MDt4PWtbdj4+Ml18MDtQQSh0LHUseCk7eD1rW3c+PjJdfDA7cj15O3JldHVybiB4fDB9dHgoa1t4Pj4yXXwwLDk5LGtbdz4+Ml18MCxrW3Y+PjJdfDAsa1txPj4yXXwwKXwwO3Q9a1tuPj4yXXwwO3U9a1t3Pj4yXXwwO3g9a1t2Pj4yXXwwO1BBKHQsdSx4KTt4PWtbdz4+Ml18MDtyPXk7cmV0dXJuIHh8MH1mdW5jdGlvbiB6QShhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MDtlPXI7cj1yKzE2fDA7Yz1lKzR8MDtkPWU7a1tjPj4yXT1hO2tbZD4+Ml09YjtpZighKGtbZD4+Ml18MCkpe3I9ZTtyZXR1cm59aUEoa1soa1tjPj4yXXwwKSs4Pj4yXXwwLGtbZD4+Ml18MCk7SUEoa1tjPj4yXXwwKTtyPWU7cmV0dXJufWZ1bmN0aW9uIEFBKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxsPTAsbj0wLG89MCxwPTAscT0wLHM9MDtzPXI7cj1yKzgwfDA7bz1zKzh8MDtuPXM7ZD1zKzY4fDA7ZT1zKzY0fDA7Zj1zKzYwfDA7cT1zKzU2fDA7aD1zKzUyfDA7Zz1zKzI0fDA7bD1zKzIwfDA7cD1zKzE2fDA7a1tkPj4yXT1hO2tbZT4+Ml09YjtrW2Y+PjJdPWM7a1tsPj4yXT1rWyhrW2Y+PjJdfDApKzEyPj4yXTtuZyhnLGtba1tkPj4yXT4+Ml18MCwwLDAsMjAwKTtpZihrWyhrW2Y+PjJdfDApKzQwPj4yXXwwKXtrW24+PjJdPWtba1tmPj4yXT4+Ml07QkEoZywzMTA1MyxuKTtuPXBnKGcpfDA7a1txPj4yXT1uO249a1tkPj4yXXwwO289a1tmPj4yXXwwO289bys1NXwwO289aVtvPj4wXXwwO289byYzO289byYyNTU7bz0ob3wwKT09MjtvPW8/MTU1NToyMDY3O3A9a1tlPj4yXXwwO3E9a1txPj4yXXwwO0RBKG4sbyxwLHEsLTEsMik7cj1zO3JldHVybn1rW2g+PjJdPTA7d2hpbGUoMSl7aWYoKGtbaD4+Ml18MCk+PShtWyhrW2Y+PjJdfDApKzUwPj4xXXwwKSlicmVhaztrW3A+PjJdPWtbKGtbKGtbbD4+Ml18MCkrND4+Ml18MCkrKGpbKGtbKGtbZj4+Ml18MCkrND4+Ml18MCkrKGtbaD4+Ml08PDEpPj4xXTw8NCk+PjJdO2lmKGtbaD4+Ml18MClDQShnLDMxMDY0LDIpO249a1twPj4yXXwwO2tbbz4+Ml09a1trW2w+PjJdPj4yXTtrW28rND4+Ml09bjtCQShnLDMwMTYxLG8pO2tbaD4+Ml09KGtbaD4+Ml18MCkrMX1uPXBnKGcpfDA7a1txPj4yXT1uO249a1tkPj4yXXwwO289a1tmPj4yXXwwO289bys1NXwwO289aVtvPj4wXXwwO289byYzO289byYyNTU7bz0ob3wwKT09MjtvPW8/MTU1NToyMDY3O3A9a1tlPj4yXXwwO3E9a1txPj4yXXwwO0RBKG4sbyxwLHEsLTEsMik7cj1zO3JldHVybn1mdW5jdGlvbiBCQShhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MDtkPXI7cj1yKzMyfDA7Zz1kKzIwfDA7Zj1kKzE2fDA7ZT1kO2tbZz4+Ml09YTtrW2Y+PjJdPWI7a1tlPj4yXT1jO29nKGtbZz4+Ml18MCxrW2Y+PjJdfDAsZSk7cj1kO3JldHVybn1mdW5jdGlvbiBDQShhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MDtnPXI7cj1yKzE2fDA7ZD1nKzh8MDtlPWcrNHwwO2Y9ZztrW2Q+PjJdPWE7a1tlPj4yXT1iO2tbZj4+Ml09YztpZigoKGtbKGtbZD4+Ml18MCkrMTI+PjJdfDApKyhrW2Y+PjJdfDApfDApPj4+MD49KGtbKGtbZD4+Ml18MCkrMTY+PjJdfDApPj4+MCl7RUEoa1tkPj4yXXwwLGtbZT4+Ml18MCxrW2Y+PjJdfDApO3I9ZztyZXR1cm59ZWxzZXtiPShrW2Q+PjJdfDApKzEyfDA7a1tiPj4yXT0oa1tiPj4yXXwwKSsoa1tmPj4yXXwwKTtiUygoa1soa1tkPj4yXXwwKSs4Pj4yXXwwKSsoKGtbKGtbZD4+Ml18MCkrMTI+PjJdfDApLShrW2Y+PjJdfDApKXwwLGtbZT4+Ml18MCxrW2Y+PjJdfDApfDA7cj1nO3JldHVybn19ZnVuY3Rpb24gREEoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxsPTAsbT0wLG49MCxvPTAscD0wO3A9cjtyPXIrMzJ8MDtnPXArMTZ8MDtoPXArMTJ8MDtqPXArOHwwO2w9cCs0fDA7bT1wKzIxfDA7bj1wKzIwfDA7bz1wO2tbZz4+Ml09YTtrW2g+PjJdPWI7a1tqPj4yXT1jO2tbbD4+Ml09ZDtpW20+PjBdPWU7aVtuPj4wXT1mO2E9bngoa1tnPj4yXXwwKXwwO2tbbz4+Ml09YTtpZigoa1tqPj4yXXwwKT09MilkeShrW2c+PjJdfDApO3d4KGtbbz4+Ml18MCw3NSxrW2g+PjJdfDAsa1tqPj4yXXwwLDAsa1tsPj4yXXwwLGlbbT4+MF18MCl8MDtUaChrW28+PjJdfDAsaVtuPj4wXXwwKTtyPXA7cmV0dXJufWZ1bmN0aW9uIEVBKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wO2c9cjtyPXIrMTZ8MDtkPWcrOHwwO2U9Zys0fDA7Zj1nO2tbZD4+Ml09YTtrW2U+PjJdPWI7a1tmPj4yXT1jO2I9RkEoa1tkPj4yXXwwLGtbZj4+Ml18MCl8MDtrW2Y+PjJdPWI7aWYoKGtbZj4+Ml18MCk8PTApe3I9ZztyZXR1cm59YlMoKGtbKGtbZD4+Ml18MCkrOD4+Ml18MCkrKGtbKGtbZD4+Ml18MCkrMTI+PjJdfDApfDAsa1tlPj4yXXwwLGtbZj4+Ml18MCl8MDtiPShrW2Q+PjJdfDApKzEyfDA7a1tiPj4yXT0oa1tiPj4yXXwwKSsoa1tmPj4yXXwwKTtyPWc7cmV0dXJufWZ1bmN0aW9uIEZBKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MDtqPXI7cj1yKzMyfDA7ZT1qKzI0fDA7Zj1qKzIwfDA7Zz1qKzE2fDA7aD1qKzEyfDA7ZD1qKzh8MDtjPWo7a1tmPj4yXT1hO2tbZz4+Ml09YjtpZihpWyhrW2Y+PjJdfDApKzI0Pj4wXXwwKXtrW2U+PjJdPTA7aD1rW2U+PjJdfDA7cj1qO3JldHVybiBofDB9Yj1rW2Y+PjJdfDA7aWYoIShrWyhrW2Y+PjJdfDApKzIwPj4yXXwwKSl7a1tnPj4yXT0oa1tiKzE2Pj4yXXwwKS0oa1soa1tmPj4yXXwwKSsxMj4+Ml18MCktMTtHQShrW2Y+PjJdfDAsMik7a1tlPj4yXT1rW2c+PjJdO2g9a1tlPj4yXXwwO3I9ajtyZXR1cm4gaHwwfWlmKGxbYisyNT4+MF0mNCliPWtbKGtbZj4+Ml18MCkrOD4+Ml18MDtlbHNlIGI9MDtrW2Q+PjJdPWI7Yj1jO2tbYj4+Ml09a1soa1tmPj4yXXwwKSsxMj4+Ml07a1tiKzQ+PjJdPTA7Yj0oa1tnPj4yXXwwKSsxfDA7YT1jO2I9JFIoa1thPj4yXXwwLGtbYSs0Pj4yXXwwLGJ8MCwoKGJ8MCk8MCk8PDMxPj4zMXwwKXwwO2E9YztrW2E+PjJdPWI7a1thKzQ+PjJdPUw7YT1jO2E9JFIoa1thPj4yXXwwLGtbYSs0Pj4yXXwwLGtbKGtbZj4+Ml18MCkrMTI+PjJdfDAsMCl8MDtiPUw7aWYoKGJ8MCk8MHwoKGJ8MCk9PTA/YT4+PjA8PShrWyhrW2Y+PjJdfDApKzIwPj4yXXwwKT4+PjA6MCkpe2I9YztiPSRSKGtbYj4+Ml18MCxrW2IrND4+Ml18MCxrWyhrW2Y+PjJdfDApKzEyPj4yXXwwLDApfDA7YT1jO2tbYT4+Ml09YjtrW2ErND4+Ml09TH1hPWM7Yj1rW2ErND4+Ml18MDtpZigoYnwwKT4wfCgoYnwwKT09MD8oa1thPj4yXXwwKT4+PjA+KGtbKGtbZj4+Ml18MCkrMjA+PjJdfDApPj4+MDowKSl7SEEoa1tmPj4yXXwwKTtHQShrW2Y+PjJdfDAsMik7a1tlPj4yXT0wO2g9a1tlPj4yXXwwO3I9ajtyZXR1cm4gaHwwfWtbKGtbZj4+Ml18MCkrMTY+PjJdPWtbYz4+Ml07aWYoa1trW2Y+PjJdPj4yXXwwKXtkPWN4KGtba1tmPj4yXT4+Ml18MCxrW2Q+PjJdfDAsa1soa1tmPj4yXXwwKSsxNj4+Ml18MCwwKXwwO2tbaD4+Ml09ZH1lbHNle2Q9V2Qoa1tkPj4yXXwwLGtbKGtbZj4+Ml18MCkrMTY+PjJdfDAsMCl8MDtrW2g+PjJdPWR9Yj1rW2Y+PjJdfDA7aWYoIShrW2g+PjJdfDApKXtIQShiKTtHQShrW2Y+PjJdfDAsMSk7a1tlPj4yXT0wO2g9a1tlPj4yXXwwO3I9ajtyZXR1cm4gaHwwfWlmKChsW2IrMjU+PjBdJjR8MCk9PTA/KGtbKGtbZj4+Ml18MCkrMTI+PjJdfDApPj4+MD4wOjApYlMoa1toPj4yXXwwLGtbKGtbZj4+Ml18MCkrOD4+Ml18MCxrWyhrW2Y+PjJdfDApKzEyPj4yXXwwKXwwO2tbKGtbZj4+Ml18MCkrOD4+Ml09a1toPj4yXTtoPXV1KGtba1tmPj4yXT4+Ml18MCxrW2g+PjJdfDApfDA7a1soa1tmPj4yXXwwKSsxNj4+Ml09aDtoPShrW2Y+PjJdfDApKzI1fDA7aVtoPj4wXT1sW2g+PjBdfDQ7a1tlPj4yXT1rW2c+PjJdO2g9a1tlPj4yXXwwO3I9ajtyZXR1cm4gaHwwfWZ1bmN0aW9uIEdBKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wO2M9cjtyPXIrMTZ8MDtkPWM7ZT1jKzR8MDtrW2Q+PjJdPWE7aVtlPj4wXT1iO2lbKGtbZD4+Ml18MCkrMjQ+PjBdPWlbZT4+MF18MDtrWyhrW2Q+PjJdfDApKzE2Pj4yXT0wO3I9YztyZXR1cm59ZnVuY3Rpb24gSEEoYSl7YT1hfDA7dmFyIGI9MCxjPTA7Yz1yO3I9cisxNnwwO2I9YztrW2I+PjJdPWE7aWYoISgobFsoa1tiPj4yXXwwKSsyNT4+MF18MCkmNCkpe2E9a1tiPj4yXXwwO2E9YSs4fDA7a1thPj4yXT0wO3I9YztyZXR1cm59Ymcoa1trW2I+PjJdPj4yXXwwLGtbKGtbYj4+Ml18MCkrOD4+Ml18MCk7YT0oa1tiPj4yXXwwKSsyNXwwO2lbYT4+MF09KGxbYT4+MF18MCkmLTU7YT1rW2I+PjJdfDA7YT1hKzh8MDtrW2E+PjJdPTA7cj1jO3JldHVybn1mdW5jdGlvbiBJQShhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTA7ZD1yO3I9cisxNnwwO2I9ZCs0fDA7Yz1kO2tbYj4+Ml09YTtrW2M+PjJdPTA7YT0oa1tiPj4yXXwwKSs2NHwwO2tbYT4+Ml09KGtbYT4+Ml18MCkrLTE7d2hpbGUoMSl7aWYoKGtbYz4+Ml18MCk+PShsWyhrW2I+PjJdfDApKzI1Pj4wXXwwfDApKWJyZWFrO2lmKChrWyhrW2I+PjJdfDApKzE1MisoKGtbYz4+Ml18MCkqMjB8MCkrOD4+Ml18MCk+KGtbKGtbYj4+Ml18MCkrNjQ+PjJdfDApKXtKQShrW2I+PjJdfDAsa1tjPj4yXXwwKTtjb250aW51ZX1lbHNle2tbYz4+Ml09KGtbYz4+Ml18MCkrMTtjb250aW51ZX19cj1kO3JldHVybn1mdW5jdGlvbiBKQShhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTA7ZT1yO3I9cisxNnwwO2M9ZSs0fDA7ZD1lO2tbYz4+Ml09YTtrW2Q+PjJdPWI7aWYoKGlbKGtbYz4+Ml18MCkrMTUyKygoa1tkPj4yXXwwKSoyMHwwKSs2Pj4wXXwwKSE9MD8obFsoa1tjPj4yXXwwKSsxOT4+MF18MCk8ODowKXtiPWtbKGtbYz4+Ml18MCkrMTUyKygoa1tkPj4yXXwwKSoyMHwwKSsxMj4+Ml18MDtmPShrW2M+PjJdfDApKzE5fDA7YT1pW2Y+PjBdfDA7aVtmPj4wXT1hKzE8PDI0Pj4yNDtrWyhrW2M+PjJdfDApKzM1MisoKGEmMjU1KTw8Mik+PjJdPWJ9Zj0oa1tjPj4yXXwwKSsyNXwwO2lbZj4+MF09KGlbZj4+MF18MCkrLTE8PDI0Pj4yNDtpZigoa1tkPj4yXXwwKT49KGxbKGtbYz4+Ml18MCkrMjU+PjBdfDApKXtyPWU7cmV0dXJufWY9KGtbYz4+Ml18MCkrMTUyKygoa1tkPj4yXXwwKSoyMHwwKXwwO2E9KGtbYz4+Ml18MCkrMTUyKygobFsoa1tjPj4yXXwwKSsyNT4+MF18MCkqMjB8MCl8MDtrW2Y+PjJdPWtbYT4+Ml07a1tmKzQ+PjJdPWtbYSs0Pj4yXTtrW2YrOD4+Ml09a1thKzg+PjJdO2tbZisxMj4+Ml09a1thKzEyPj4yXTtrW2YrMTY+PjJdPWtbYSsxNj4+Ml07cj1lO3JldHVybn1mdW5jdGlvbiBLQShhKXthPWF8MDt2YXIgYj0wLGM9MDtiPXI7cj1yKzE2fDA7Yz1iO2tbYz4+Ml09YTthPShrW2M+PjJdfDApKzY0fDA7a1thPj4yXT0oa1thPj4yXXwwKSsxO3I9YjtyZXR1cm59ZnVuY3Rpb24gTEEoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxpPTAsaj0wLG09MDtqPXI7cj1yKzMyfDA7ZT1qKzIwfDA7bT1qKzE2fDA7Zj1qKzEyfDA7Zz1qKzh8MDtoPWorNHwwO2k9ajtrW2U+PjJdPWE7a1ttPj4yXT1iO2tbZj4+Ml09YztrW2c+PjJdPWQ7a1toPj4yXT1rW2tbZT4+Ml0+PjJdO2E9U3koa1toPj4yXXwwLGtbbT4+Ml18MCwwKXwwO2tbaT4+Ml09YTtpZihsWyhrW2g+PjJdfDApKzY5Pj4wXXwwKXthPWtbaD4+Ml18MDttPWtbaT4+Ml18MDtzdihhLG0pO3I9ajtyZXR1cm59c0Ioa1tlPj4yXXwwLGtbaT4+Ml18MCxrW2Y+PjJdfDAsa1tnPj4yXXwwKTthPWtbaD4+Ml18MDttPWtbaT4+Ml18MDtzdihhLG0pO3I9ajtyZXR1cm59ZnVuY3Rpb24gTUEoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTA7aD1yO3I9ciszMnwwO2M9aCsxNnwwO2Q9aCsxMnwwO2U9aCs4fDA7Zj1oKzR8MDtnPWg7a1tkPj4yXT1hO2tbZT4+Ml09YjtiPWtbZD4+Ml18MDtpZigoa1tlPj4yXXwwKT09MSl7Zz1GeChiKXwwO2tbYz4+Ml09ZztnPWtbYz4+Ml18MDtyPWg7cmV0dXJuIGd8MH1rW2Y+PjJdPWtbYiszMj4+Ml07a1tnPj4yXT1rWyhrW2Q+PjJdfDApKzI4Pj4yXTtpZigoa1tlPj4yXXwwKTw9KGtbZz4+Ml18MCkpe2c9KGtbZD4+Ml18MCkrMzJ8MDtrW2c+PjJdPShrW2c+PjJdfDApKyhrW2U+PjJdfDApO2c9KGtbZD4+Ml18MCkrMjh8MDtrW2c+PjJdPShrW2c+PjJdfDApLShrW2U+PjJdfDApfWVsc2V7a1tmPj4yXT0oa1soa1tkPj4yXXwwKSs0ND4+Ml18MCkrMTtnPShrW2Q+PjJdfDApKzQ0fDA7a1tnPj4yXT0oa1tnPj4yXXwwKSsoa1tlPj4yXXwwKX1rW2M+PjJdPWtbZj4+Ml07Zz1rW2M+PjJdfDA7cj1oO3JldHVybiBnfDB9ZnVuY3Rpb24gTkEoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaT0wLGw9MCxtPTAsbj0wO249cjtyPXIrMzJ8MDtmPW4rMTZ8MDtnPW4rMTJ8MDtoPW4rOHwwO2k9bis0fDA7bD1uO209bisyMHwwO2tbZj4+Ml09YTtrW2c+PjJdPWI7a1toPj4yXT1jO2tbaT4+Ml09ZDtrW2w+PjJdPWU7alttPj4xXT1qWyhrWyhrW2c+PjJdfDApKzQ+PjJdfDApKyhrW2k+PjJdPDwxKT4+MV18MDtpZigoalttPj4xXXwwKT09LTIpe2tbKGtbZj4+Ml18MCkrNjA+PjJdPWtbaD4+Ml07V0Eoa1tmPj4yXXwwLGtbKGtbKGtbKGtbZz4+Ml18MCkrNDA+PjJdfDApKzQ+PjJdfDApKygoa1tpPj4yXXwwKSoyMHwwKT4+Ml18MCxrW2w+PjJdfDApO3I9bjtyZXR1cm59ZWxzZXtYQShrWyhrW2Y+PjJdfDApKzg+PjJdfDAsa1soa1tnPj4yXXwwKSsxMj4+Ml18MCxrW2g+PjJdfDAsalttPj4xXXwwLGtbbD4+Ml18MCk7cj1uO3JldHVybn19ZnVuY3Rpb24gT0EoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wO2U9cjtyPXIrMTZ8MDtjPWUrNHwwO2Q9ZTtmPWUrOHwwO2tbZD4+Ml09YTtpW2Y+PjBdPWI7aWYoKGtbKGtbZD4+Ml18MCkrMTM2Pj4yXXwwKT4wPyhsWyhrWyhrW2Q+PjJdfDApKzg4Pj4yXXwwKSsoKChrWyhrW2Q+PjJdfDApKzEzNj4+Ml18MCktMXwwKSoyMHwwKT4+MF18MHwwKT09KGxbZj4+MF18MHwwKTowKXtmPVJBKGtbZD4+Ml18MCwoa1soa1tkPj4yXXwwKSsxMzY+PjJdfDApLTF8MCl8MDtrW2M+PjJdPWY7Zj1rW2M+PjJdfDA7cj1lO3JldHVybiBmfDB9a1tjPj4yXT0wO2Y9a1tjPj4yXXwwO3I9ZTtyZXR1cm4gZnwwfWZ1bmN0aW9uIFBBKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wO2c9cjtyPXIrMTZ8MDtkPWcrOHwwO2U9Zys0fDA7Zj1nO2tbZD4+Ml09YTtrW2U+PjJdPWI7a1tmPj4yXT1jO2I9a1tkPj4yXXwwO2M9a1tlPj4yXXwwO2lmKChrW2Y+PjJdfDApPT0xKXtIeChiLGMpO3I9ZztyZXR1cm59UUEoYixjLGtbZj4+Ml18MCk7aWYoKGtbZj4+Ml18MCk8PShrWyhrW2Q+PjJdfDApKzI4Pj4yXXwwKSl7cj1nO3JldHVybn1rWyhrW2Q+PjJdfDApKzI4Pj4yXT1rW2Y+PjJdO2tbKGtbZD4+Ml18MCkrMzI+PjJdPWtbZT4+Ml07cj1nO3JldHVybn1mdW5jdGlvbiBRQShhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaT0wO2k9cjtyPXIrMzJ8MDtkPWkrMTZ8MDtlPWkrMTJ8MDtmPWkrOHwwO2c9aSs0fDA7aD1pO2tbZD4+Ml09YTtrW2U+PjJdPWI7a1tmPj4yXT1jO2tbZz4+Ml09MDt3aGlsZSgxKXtpZigoa1tnPj4yXXwwKT49KGxbKGtbZD4+Ml18MCkrMjU+PjBdfDB8MCkpYnJlYWs7a1toPj4yXT0oa1tkPj4yXXwwKSsxNTIrKChrW2c+PjJdfDApKjIwfDApO2lmKChrWyhrW2g+PjJdfDApKzEyPj4yXXwwKT49KGtbZT4+Ml18MCk/KGtbKGtbaD4+Ml18MCkrMTI+PjJdfDApPCgoa1tlPj4yXXwwKSsoa1tmPj4yXXwwKXwwKTowKXtKQShrW2Q+PjJdfDAsa1tnPj4yXXwwKTtjb250aW51ZX1rW2c+PjJdPShrW2c+PjJdfDApKzF9cj1pO3JldHVybn1mdW5jdGlvbiBSQShhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wO2c9cjtyPXIrMTZ8MDtjPWcrMTJ8MDtkPWcrOHwwO2U9Zys0fDA7Zj1nO2tbZD4+Ml09YTtrW2U+PjJdPWI7aWYoaVsoa1trW2Q+PjJdPj4yXXwwKSs2OT4+MF18MCl7a1tjPj4yXT0wO2Y9a1tjPj4yXXwwO3I9ZztyZXR1cm4gZnwwfWVsc2V7a1tmPj4yXT0oa1soa1tkPj4yXXwwKSs4OD4+Ml18MCkrKChrW2U+PjJdfDApKjIwfDApO1NBKGtba1tkPj4yXT4+Ml18MCxpWyhrW2Y+PjJdfDApKzE+PjBdfDAsa1soa1tmPj4yXXwwKSsxNj4+Ml18MCk7aVsoa1tmPj4yXXwwKSsxPj4wXT0wO2tbKGtbZj4+Ml18MCkrMTY+PjJdPTA7aVtrW2Y+PjJdPj4wXT0tOTU7a1tjPj4yXT0xO2Y9a1tjPj4yXXwwO3I9ZztyZXR1cm4gZnwwfXJldHVybiAwfWZ1bmN0aW9uIFNBKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wO2Y9cjtyPXIrMTZ8MDtkPWYrOHwwO2c9Zis0fDA7ZT1mO2tbZD4+Ml09YTtrW2c+PjJdPWI7a1tlPj4yXT1jO2E6ZG8gc3dpdGNoKGtbZz4+Ml18MCl7Y2FzZSAtMjE6e1RBKGtbZD4+Ml18MCxrW2U+PjJdfDApO2JyZWFrfWNhc2UgLTE1OmNhc2UgLTE6Y2FzZSAtMTM6Y2FzZSAtMTI6e2JnKGtbZD4+Ml18MCxrW2U+PjJdfDApO2JyZWFrfWNhc2UgLTY6e2lmKCEoa1soa1tkPj4yXXwwKSs0NTY+PjJdfDApKXRBKGtbZT4+Ml18MCk7YnJlYWt9Y2FzZSAtMTE6e2lmKCEoa1soa1tkPj4yXXwwKSs0NTY+PjJdfDApKVVkKGtbZT4+Ml18MCk7YnJlYWt9Y2FzZSAtNTp7VUEoa1tkPj4yXXwwLGtbZT4+Ml18MCk7YnJlYWt9Y2FzZSAtODppZighKGtbKGtbZD4+Ml18MCkrNDU2Pj4yXXwwKSl7bWgoa1tlPj4yXXwwKTticmVhayBhfWVsc2V7VkEoa1tkPj4yXXwwLGtbZT4+Ml18MCk7YnJlYWsgYX1jYXNlIC0xMDp7aWYoIShrWyhrW2Q+PjJdfDApKzQ1Nj4+Ml18MCkpQ3Uoa1tlPj4yXXwwKTticmVha31kZWZhdWx0Ont9fXdoaWxlKDApO3I9ZjtyZXR1cm59ZnVuY3Rpb24gVEEoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTA7Yz1yO3I9cisxNnwwO2U9Yys0fDA7ZD1jO2tbZT4+Ml09YTtrW2Q+PjJdPWI7VUEoa1tlPj4yXXwwLGtbKGtbZD4+Ml18MCkrND4+Ml18MCk7Ymcoa1tlPj4yXXwwLGtbZD4+Ml18MCk7cj1jO3JldHVybn1mdW5jdGlvbiBVQShhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MDtlPXI7cj1yKzE2fDA7Yz1lKzR8MDtkPWU7a1tjPj4yXT1hO2tbZD4+Ml09YjtpZighKChtWyhrW2Q+PjJdfDApKzI+PjFdfDApJjE2KSl7cj1lO3JldHVybn1iZyhrW2M+PjJdfDAsa1tkPj4yXXwwKTtyPWU7cmV0dXJufWZ1bmN0aW9uIFZBKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wO2U9cjtyPXIrMTZ8MDtjPWUrNHwwO2Q9ZTtrW2M+PjJdPWE7a1tkPj4yXT1iO2lmKGtbKGtbZD4+Ml18MCkrMjQ+PjJdfDApYmcoa1tjPj4yXXwwLGtbKGtbZD4+Ml18MCkrMjA+PjJdfDApO2JnKGtbYz4+Ml18MCxrW2Q+PjJdfDApO3I9ZTtyZXR1cm59ZnVuY3Rpb24gV0EoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wO2g9cjtyPXIrMTZ8MDtkPWgrMTJ8MDtlPWgrOHwwO2Y9aCs0fDA7Zz1oO2tbZD4+Ml09YTtrW2U+PjJdPWI7a1tmPj4yXT1jO2tbZz4+Ml09a1trW2Q+PjJdPj4yXTtjPVN5KGtbZz4+Ml18MCxrW2U+PjJdfDAsMCl8MDtrW2U+PjJdPWM7aWYoaVsoa1tnPj4yXXwwKSs2OT4+MF18MCl7YT1rW2c+PjJdfDA7Yz1rW2U+PjJdfDA7c3YoYSxjKTtyPWg7cmV0dXJufSRBKGtbZD4+Ml18MCxrW2U+PjJdfDAsa1tmPj4yXXwwKTthPWtbZz4+Ml18MDtjPWtbZT4+Ml18MDtzdihhLGMpO3I9aDtyZXR1cm59ZnVuY3Rpb24gWEEoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaT0wLG09MCxuPTAsbz0wLHA9MDtwPXI7cj1yKzMyfDA7Zj1wKzI0fDA7Zz1wKzIwfDA7aD1wKzE2fDA7aT1wKzEyfDA7bT1wKzh8MDtuPXArNHwwO289cDtrW2Y+PjJdPWE7a1tnPj4yXT1iO2tbaD4+Ml09YztrW2k+PjJdPWQ7a1ttPj4yXT1lO2lmKChrW2k+PjJdfDApPj0wPyhrW2k+PjJdfDApIT0oalsoa1tnPj4yXXwwKSszMj4+MV18MCk6MCl7a1tuPj4yXT0obFsoa1tnPj4yXXwwKSs0Mj4+MF0mMTZ8MCkhPTA/MTU2Ojk2O2tbbz4+Ml09a1tpPj4yXTtpZigobFsoa1tnPj4yXXwwKSs0Mj4+MF0mMzJ8MCkhPTA/KGxbKGtbZz4+Ml18MCkrNDI+PjBdJjE2fDApPT0wOjApe2E9VGooa1tnPj4yXXwwKXwwO2E9KFlBKGEsa1tpPj4yXSY2NTUzNSl8MCk8PDE2Pj4xNjtrW28+PjJdPWF9dHgoa1tmPj4yXXwwLGtbbj4+Ml18MCxrW2g+PjJdfDAsa1tvPj4yXXwwLGtbbT4+Ml18MCl8MH1lbHNlIHN4KGtbZj4+Ml18MCwxMjMsa1toPj4yXXwwLGtbbT4+Ml18MCl8MDtpZigoa1tpPj4yXXwwKTwwKXtyPXA7cmV0dXJufVpBKGtbZj4+Ml18MCxrW2c+PjJdfDAsa1tpPj4yXXwwLGtbbT4+Ml18MCk7cj1wO3JldHVybn1mdW5jdGlvbiBZQShhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wO2c9cjtyPXIrMTZ8MDtmPWcrMTB8MDtjPWcrNHwwO2Q9Zys4fDA7ZT1nO2tbYz4+Ml09YTtqW2Q+PjFdPWI7a1tlPj4yXT0wO3doaWxlKDEpe2lmKChrW2U+PjJdfDApPj0obVsoa1tjPj4yXXwwKSs1Mj4+MV18MCkpe2I9NjticmVha31hPWtbZT4+Ml18MDtpZigoaltkPj4xXXwwKT09KGpbKGtbKGtbYz4+Ml18MCkrND4+Ml18MCkrKGtbZT4+Ml08PDEpPj4xXXwwKSl7Yj00O2JyZWFrfWtbZT4+Ml09YSsxfWlmKChifDApPT00KXtqW2Y+PjFdPWE7Zj1qW2Y+PjFdfDA7cj1nO3JldHVybiBmfDB9ZWxzZSBpZigoYnwwKT09Nil7altmPj4xXT0tMTtmPWpbZj4+MV18MDtyPWc7cmV0dXJuIGZ8MH1yZXR1cm4gMH1mdW5jdGlvbiBaQShhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MCxsPTAsbT0wLG49MDtuPXI7cj1yKzMyfDA7ZT1uKzIwfDA7Zj1uKzE2fDA7Zz1uKzEyfDA7aD1uKzh8MDttPW4rNHwwO2o9bisyNHwwO2w9bjtrW2U+PjJdPWE7a1tmPj4yXT1iO2tbZz4+Ml09YztrW2g+PjJdPWQ7aWYoa1soa1tmPj4yXXwwKSsxMj4+Ml18MCl7cj1uO3JldHVybn1rW20+PjJdPTA7YT0oX0Eoa1tlPj4yXXwwKXwwKSs2NnwwO2lbaj4+MF09aVthPj4wXXwwO2tbbD4+Ml09KGtbKGtbZj4+Ml18MCkrND4+Ml18MCkrKGtbZz4+Ml08PDQpO2E9X0Eoa1tlPj4yXXwwKXwwO0V4KGEsa1soa1tsPj4yXXwwKSs0Pj4yXXwwLGlbaj4+MF18MCxpWyhrW2w+PjJdfDApKzEzPj4wXXwwLG0pfDA7aWYoa1ttPj4yXXwwKVdoKGtbZT4+Ml18MCwtMSxrW20+PjJdfDAsLTgpO2lmKChpWyhrWyhrW2Y+PjJdfDApKzQ+PjJdfDApKyhrW2c+PjJdPDw0KSsxMz4+MF18MCkhPTY5KXtyPW47cmV0dXJufWFBKGtbZT4+Ml18MCw5MixrW2g+PjJdfDApfDA7cj1uO3JldHVybn1mdW5jdGlvbiBfQShhKXthPWF8MDt2YXIgYj0wLGM9MDtjPXI7cj1yKzE2fDA7Yj1jO2tbYj4+Ml09YTtyPWM7cmV0dXJuIGtba1tiPj4yXT4+Ml18MH1mdW5jdGlvbiAkQShhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTA7aD1yO3I9cisxNnwwO2Q9aCsxMnwwO2U9aCs4fDA7Zj1oKzR8MDtnPWg7a1tkPj4yXT1hO2tbZT4+Ml09YjtrW2Y+PjJdPWM7aWYoKGtbZT4+Ml18MCkhPTA/KGxba1tlPj4yXT4+MF18MHwwKT09MTU3OjApe3N4KGtbKGtbZD4+Ml18MCkrOD4+Ml18MCw4NCxrWyhrW2U+PjJdfDApKzI4Pj4yXXwwLGtbZj4+Ml18MCl8MDtyPWg7cmV0dXJufWM9YUIoa1tkPj4yXXwwLGtbZT4+Ml18MCxrW2Y+PjJdfDApfDA7a1tnPj4yXT1jO2lmKChrW2c+PjJdfDApPT0oa1tmPj4yXXwwKSl7cj1oO3JldHVybn1pZighKGtbKGtbZD4+Ml18MCkrOD4+Ml18MCkpe3I9aDtyZXR1cm59c3goa1soa1tkPj4yXXwwKSs4Pj4yXXwwLDg1LGtbZz4+Ml18MCxrW2Y+PjJdfDApfDA7cj1oO3JldHVybn1mdW5jdGlvbiBhQihhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsbj0wLG89MCxwPTAscT0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wLEU9MCxGPTAsRz0wLEg9MCxJPTAsSj0wLEs9MCxMPTAsTT0wLE49MCxPPTAsUD0wLFE9MCxSPTAsUz0wLFQ9MCxVPTAsVj0wLFc9MCxYPTAsWT0wLFo9MCxfPTAsJD0wLGFhPTAsYmE9MCxjYT0wLGRhPTAsZWE9MCxmYT0wLGdhPTAsaWE9MCxqYT0wO2phPXI7cj1yKzMyMHwwO3g9amErMjR8MDt3PWphKzE2fDA7Rj1qYSs4fDA7dj1qYTtmYT1qYSszMDR8MDtnYT1qYSszMDB8MDtPPWphKzI5NnwwO2lhPWphKzI5MnwwO2RhPWphKzI4OHwwO0I9amErMjg0fDA7YWE9amErMjgwfDA7YmE9amErMjc2fDA7Y2E9amErMjcyfDA7Uj1qYSsyNjh8MDtFPWphKzI2NHwwO1M9amErMjE2fDA7Qz1qYSsyMDh8MDtwPWphKzIwNHwwO3E9amErMjAwfDA7Zz1qYSsxOTZ8MDtoPWphKzE5MnwwO3k9amErMTg4fDA7ej1qYSsxODR8MDtEPWphKzE4MHwwO3Q9amErMTc2fDA7ZD1qYSsxNzJ8MDtzPWphKzE2OHwwO1E9amErMTY0fDA7UD1qYSsxNjB8MDtOPWphKzE1NnwwO0c9amErMTUyfDA7SD1qYSsxNDh8MDtMPWphKzE0NHwwO0k9amErMTQwfDA7QT1qYSszMDl8MDtNPWphKzEzNnwwO0o9amErMTMyfDA7Sz1qYSszMDh8MDtuPWphKzEyOHwwO2U9amErMTI0fDA7Zj1qYSsxMjB8MDt1PWphKzExNnwwO289amErMTEyfDA7VT1qYSsxMDh8MDtYPWphKzEwNHwwO1c9amErMTAwfDA7Vj1qYSs5NnwwO1o9amErOTJ8MDtUPWphKzg4fDA7WT1qYSs0MHwwOyQ9amErMzJ8MDtfPWphKzI4fDA7a1tnYT4+Ml09YTtrW08+PjJdPWI7a1tpYT4+Ml09YztrW2RhPj4yXT1rWyhrW2dhPj4yXXwwKSs4Pj4yXTtrW2FhPj4yXT1rW2lhPj4yXTtrW2JhPj4yXT0wO2tbY2E+PjJdPTA7a1tDPj4yXT0wO2lmKCEoa1tkYT4+Ml18MCkpe2tbZmE+PjJdPTA7aWE9a1tmYT4+Ml18MDtyPWphO3JldHVybiBpYXwwfWlmKCEoa1tPPj4yXXwwKSlrW0I+PjJdPTEwMTtlbHNlIGtbQj4+Ml09bFtrW08+PjJdPj4wXTthOmRvIHN3aXRjaChrW0I+PjJdfDApe2Nhc2UgMTU0OntrW3A+PjJdPWtbKGtbTz4+Ml18MCkrNDA+PjJdO2tbcT4+Ml09KGtbKGtbcD4+Ml18MCkrMjg+PjJdfDApKygoalsoa1tPPj4yXXwwKSszND4+MV18MCkqMjR8MCk7aWYoIShpW2tbcD4+Ml0+PjBdfDApKXtrW2ZhPj4yXT1rWyhrW3E+PjJdfDApKzE2Pj4yXTtpYT1rW2ZhPj4yXXwwO3I9amE7cmV0dXJuIGlhfDB9aWYoaVsoa1twPj4yXXwwKSsxPj4wXXwwKXt0eChrW2RhPj4yXXwwLDk2LGtbKGtbcD4+Ml18MCkrOD4+Ml18MCxrWyhrW3E+PjJdfDApKzEyPj4yXXwwLGtbaWE+PjJdfDApfDA7a1tmYT4+Ml09a1tpYT4+Ml07aWE9a1tmYT4+Ml18MDtyPWphO3JldHVybiBpYXwwfWVsc2UgZWE9MTE7YnJlYWt9Y2FzZSAxNTI6e2VhPTExO2JyZWFrfWNhc2UgMTM0OntjQihrW2dhPj4yXXwwLGtbTz4+Ml18MCwwLGtbaWE+PjJdfDApO2tbZmE+PjJdPWtbaWE+PjJdO2lhPWtbZmE+PjJdfDA7cj1qYTtyZXR1cm4gaWF8MH1jYXNlIDEzMjp7ZEIoa1tkYT4+Ml18MCxrWyhrW08+PjJdfDApKzg+PjJdfDAsMCxrW2lhPj4yXXwwKTtrW2ZhPj4yXT1rW2lhPj4yXTtpYT1rW2ZhPj4yXXwwO3I9amE7cmV0dXJuIGlhfDB9Y2FzZSA5Nzp7cngoa1tkYT4+Ml18MCxrW2lhPj4yXXwwLGtbKGtbTz4+Ml18MCkrOD4+Ml18MCl8MDtrW2ZhPj4yXT1rW2lhPj4yXTtpYT1rW2ZhPj4yXXwwO3I9amE7cmV0dXJuIGlhfDB9Y2FzZSAxMDE6e3N4KGtbZGE+PjJdfDAsNzksMCxrW2lhPj4yXXwwKXwwO2tbZmE+PjJdPWtbaWE+PjJdO2lhPWtbZmE+PjJdfDA7cj1qYTtyZXR1cm4gaWF8MH1jYXNlIDEzMzp7a1t5Pj4yXT0oa1soa1tPPj4yXXwwKSs4Pj4yXXwwKSsyO2dhPShUZihrW3k+PjJdfDApfDApLTF8MDtrW2g+PjJdPWdhO2dhPVN4KF9BKGtbZGE+PjJdfDApfDAsa1t5Pj4yXXwwLGtbaD4+Ml18MCl8MDtrW3o+PjJdPWdhO3d4KGtbZGE+PjJdfDAsODEsKGtbaD4+Ml18MCkvMnwwLGtbaWE+PjJdfDAsMCxrW3o+PjJdfDAsLTEpfDA7a1tmYT4+Ml09a1tpYT4+Ml07aWE9a1tmYT4+Ml18MDtyPWphO3JldHVybiBpYXwwfWNhc2UgMTM1OntzeChrW2RhPj4yXXwwLDgyLGpbKGtbTz4+Ml18MCkrMzI+PjFdfDAsa1tpYT4+Ml18MCl8MDtpZihpWyhrWyhrW08+PjJdfDApKzg+PjJdfDApKzE+PjBdfDApV2goa1tkYT4+Ml18MCwtMSxrWyhrWyhrW2dhPj4yXXwwKSs0Mjg+PjJdfDApKygoalsoa1tPPj4yXXwwKSszMj4+MV18MCktMTw8Mik+PjJdfDAsLTIpO2tbZmE+PjJdPWtbaWE+PjJdO2lhPWtbZmE+PjJdfDA7cj1qYTtyZXR1cm4gaWF8MH1jYXNlIDE1Nzp7a1tmYT4+Ml09a1soa1tPPj4yXXwwKSsyOD4+Ml07aWE9a1tmYT4+Ml18MDtyPWphO3JldHVybiBpYXwwfWNhc2UgNjY6e2VhPWFCKGtbZ2E+PjJdfDAsa1soa1tPPj4yXXwwKSsxMj4+Ml18MCxrW2lhPj4yXXwwKXwwO2tbYWE+PjJdPWVhO2lmKChrW2FhPj4yXXwwKSE9KGtbaWE+PjJdfDApKXtzeChrW2RhPj4yXXwwLDg1LGtbYWE+PjJdfDAsa1tpYT4+Ml18MCl8MDtrW2FhPj4yXT1rW2lhPj4yXX1zeChrW2RhPj4yXXwwLDkzLGtbaWE+PjJdfDAsKE54KGtbKGtbTz4+Ml18MCkrOD4+Ml18MCwwKXwwKTw8MjQ+PjI0KXwwO2VCKGtbZ2E+PjJdfDAsa1thYT4+Ml18MCwxKTtrW2ZhPj4yXT1rW2FhPj4yXTtpYT1rW2ZhPj4yXXwwO3I9amE7cmV0dXJuIGlhfDB9Y2FzZSAxNDg6Y2FzZSAyOTp7a1tCPj4yXT0oa1tCPj4yXXwwKT09Mjk/Mzc6MzY7a1tDPj4yXT0xMjg7ZWE9Mjk7YnJlYWt9Y2FzZSAzNzpjYXNlIDM2OmNhc2UgNDE6Y2FzZSAzODpjYXNlIDM5OmNhc2UgNDA6e2VhPTI5O2JyZWFrfWNhc2UgNTI6Y2FzZSA0NjpjYXNlIDQ1OmNhc2UgNTA6Y2FzZSA0NDpjYXNlIDQzOmNhc2UgNTE6Y2FzZSA0ODpjYXNlIDQ5OmNhc2UgNDc6Y2FzZSAyNzpjYXNlIDI4OnskPWhCKGtbZ2E+PjJdfDAsa1soa1tPPj4yXXwwKSsxMj4+Ml18MCxiYSl8MDtrW1I+PjJdPSQ7JD1oQihrW2dhPj4yXXwwLGtbKGtbTz4+Ml18MCkrMTY+PjJdfDAsY2EpfDA7a1tFPj4yXT0kO3R4KGtbZGE+PjJdfDAsa1tCPj4yXXwwLGtbRT4+Ml18MCxrW1I+PjJdfDAsa1tpYT4+Ml18MCl8MDticmVha31jYXNlIDE1NTp7a1t0Pj4yXT1rWyhrW08+PjJdfDApKzEyPj4yXTtpZigobFtrW3Q+PjJdPj4wXXwwKT09MTM0KXtjQihrW2dhPj4yXXwwLGtbdD4+Ml18MCwxLGtbaWE+PjJdfDApO2tbZmE+PjJdPWtbaWE+PjJdO2lhPWtbZmE+PjJdfDA7cj1qYTtyZXR1cm4gaWF8MH1pZigobFtrW3Q+PjJdPj4wXXwwKSE9MTMyKXtpW1M+PjBdPS0xMjI7a1tTKzQ+PjJdPTE3NDA4O2tbUys4Pj4yXT0wOyQ9aEIoa1tnYT4+Ml18MCxTLGJhKXwwO2tbUj4+Ml09JDskPWhCKGtbZ2E+PjJdfDAsa1soa1tPPj4yXXwwKSsxMj4+Ml18MCxjYSl8MDtrW0U+PjJdPSQ7dHgoa1tkYT4+Ml18MCw0OCxrW0U+PjJdfDAsa1tSPj4yXXwwLGtbaWE+PjJdfDApfDA7YnJlYWsgYX1kQihrW2RhPj4yXXwwLGtbKGtbdD4+Ml18MCkrOD4+Ml18MCwxLGtbaWE+PjJdfDApO2tbZmE+PjJdPWtbaWE+PjJdO2lhPWtbZmE+PjJdfDA7cj1qYTtyZXR1cm4gaWF8MH1jYXNlIDE5OmNhc2UgNTQ6e2lhPWhCKGtbZ2E+PjJdfDAsa1soa1tPPj4yXXwwKSsxMj4+Ml18MCxiYSl8MDtrW1I+PjJdPWlhO3N4KGtbZGE+PjJdfDAsa1tCPj4yXXwwLGtbUj4+Ml18MCxrW2FhPj4yXXwwKXwwO2JyZWFrfWNhc2UgMzU6Y2FzZSAzNDp7c3goa1tkYT4+Ml18MCw3NiwxLGtbaWE+PjJdfDApfDA7JD1oQihrW2dhPj4yXXwwLGtbKGtbTz4+Ml18MCkrMTI+PjJdfDAsYmEpfDA7a1tSPj4yXT0kOyQ9YUEoa1tkYT4+Ml18MCxrW0I+PjJdfDAsa1tSPj4yXXwwKXwwO2tbZD4+Ml09JDtzeChrW2RhPj4yXXwwLDc2LDAsa1tpYT4+Ml18MCl8MDtoQShrW2RhPj4yXXwwLGtbZD4+Ml18MCk7YnJlYWt9Y2FzZSAxNTM6e2tbcz4+Ml09a1soa1tPPj4yXXwwKSs0MD4+Ml07aWYoIShrW3M+PjJdfDApKXtpYT1rW2dhPj4yXXwwO2tbdj4+Ml09a1soa1tPPj4yXXwwKSs4Pj4yXTtPaChpYSwzMTA2Nyx2KTticmVhayBhfWtbZmE+PjJdPWtbKGtbKGtbcz4+Ml18MCkrNDA+PjJdfDApKyhqWyhrW08+PjJdfDApKzM0Pj4xXTw8NCkrOD4+Ml07aWE9a1tmYT4+Ml18MDtyPWphO3JldHVybiBpYXwwfWNhc2UgMTUxOntrW0g+PjJdPTA7a1tJPj4yXT1rW2tbZ2E+PjJdPj4yXTtpW0E+PjBdPWlbKGtbST4+Ml18MCkrNjY+PjBdfDA7a1tNPj4yXT0wO2lmKGtbKGtbTz4+Ml18MCkrND4+Ml0mMTYzODQpa1tRPj4yXT0wO2Vsc2Uga1tRPj4yXT1rWyhrW08+PjJdfDApKzIwPj4yXTtpZihrW1E+PjJdfDApZD1rW2tbUT4+Ml0+PjJdfDA7ZWxzZSBkPTA7a1tQPj4yXT1kO2tbRz4+Ml09a1soa1tPPj4yXXwwKSs4Pj4yXTskPXVpKGtbST4+Ml18MCxrW0c+PjJdfDAsa1tQPj4yXXwwLGlbQT4+MF18MCwwKXwwO2tbTj4+Ml09JDtpZigoa1tOPj4yXXwwKSE9MD8oa1soa1tOPj4yXXwwKSsxNj4+Ml18MCk9PTA6MCl7aWYobVsoa1tOPj4yXXwwKSsyPj4xXSY1MTIpeyQ9ZUEoa1tkYT4+Ml18MCl8MDtrW0o+PjJdPSQ7JEEoa1tnYT4+Ml18MCxrW2tbKGtbUT4+Ml18MCkrND4+Ml0+PjJdfDAsa1tpYT4+Ml18MCk7a1tMPj4yXT0xO3doaWxlKDEpe2Q9a1tkYT4+Ml18MDtpZigoa1tMPj4yXXwwKT49KGtbUD4+Ml18MCkpYnJlYWs7c3goZCwzNSxrW2lhPj4yXXwwLGtbSj4+Ml18MCl8MDtRQShrW2dhPj4yXXwwLGtbaWE+PjJdfDAsMSk7S0Eoa1tnYT4+Ml18MCk7JEEoa1tnYT4+Ml18MCxrWyhrWyhrW1E+PjJdfDApKzQ+PjJdfDApKygoa1tMPj4yXXwwKSoyMHwwKT4+Ml18MCxrW2lhPj4yXXwwKTtJQShrW2dhPj4yXXwwKTtrW0w+PjJdPShrW0w+PjJdfDApKzF9aUEoZCxrW0o+PjJdfDApO2JyZWFrIGF9aWYobVsoa1tOPj4yXXwwKSsyPj4xXSYxMDI0KXtpYT1hQihrW2dhPj4yXXwwLGtba1soa1tRPj4yXXwwKSs0Pj4yXT4+Ml18MCxrW2lhPj4yXXwwKXwwO2tbZmE+PjJdPWlhO2lhPWtbZmE+PjJdfDA7cj1qYTtyZXR1cm4gaWF8MH1rW0w+PjJdPTA7d2hpbGUoMSl7aWYoKGtbTD4+Ml18MCk+PShrW1A+PjJdfDApKWJyZWFrO2lmKChrW0w+PjJdfDApPDMyPyhqQihrWyhrWyhrW1E+PjJdfDApKzQ+PjJdfDApKygoa1tMPj4yXXwwKSoyMHwwKT4+Ml18MCl8MCkhPTA6MClrW0g+PjJdPWtbSD4+Ml18MTw8a1tMPj4yXTtpZighKChrW00+PjJdfDApIT0wPzE6KG1bKGtbTj4+Ml18MCkrMj4+MV0mMzJ8MCk9PTApKXtjYT1weShrW2dhPj4yXXwwLGtbKGtbKGtbUT4+Ml18MCkrND4+Ml18MCkrKChrW0w+PjJdfDApKjIwfDApPj4yXXwwKXwwO2tbTT4+Ml09Y2F9a1tMPj4yXT0oa1tMPj4yXXwwKSsxfWlmKGtbUT4+Ml18MCl7ZD1rW2dhPj4yXXwwO2lmKGtbSD4+Ml18MCl7a1tSPj4yXT0oa1tkKzQ0Pj4yXXwwKSsxO2NhPShrW2dhPj4yXXwwKSs0NHwwO2tbY2E+PjJdPShrW2NhPj4yXXwwKSsoa1tQPj4yXXwwKX1lbHNle2NhPU1BKGQsa1tQPj4yXXwwKXwwO2tbUj4+Ml09Y2F9ZG8gaWYobVsoa1tOPj4yXXwwKSsyPj4xXSYxOTIpe2lbSz4+MF09aVtrW2tbKGtbUT4+Ml18MCkrND4+Ml0+PjJdPj4wXXwwO2lmKChsW0s+PjBdfDApIT0xNTI/KGxbSz4+MF18MCkhPTE1NDowKWJyZWFrO2lbKGtba1soa1tRPj4yXXwwKSs0Pj4yXT4+Ml18MCkrMzg+PjBdPW1bKGtbTj4+Ml18MCkrMj4+MV0mMTkyfXdoaWxlKDApO0tBKGtbZ2E+PjJdfDApO2tCKGtbZ2E+PjJdfDAsa1tRPj4yXXwwLGtbUj4+Ml18MCwwLDMpfDA7SUEoa1tnYT4+Ml18MCl9ZWxzZSBrW1I+PjJdPTA7aWYoKGtbUD4+Ml18MCk+PTI/KGtbKGtbTz4+Ml18MCkrND4+Ml0mMTI4fDApIT0wOjApe2NhPWxCKGtbST4+Ml18MCxrW04+PjJdfDAsa1tQPj4yXXwwLGtbKGtbKGtbUT4+Ml18MCkrND4+Ml18MCkrMjA+PjJdfDApfDA7a1tOPj4yXT1jYX1lbHNlIGVhPTc5O2lmKChlYXwwKT09Nzk/KGtbUD4+Ml18MCk+MDowKXtlYT1sQihrW0k+PjJdfDAsa1tOPj4yXXwwLGtbUD4+Ml18MCxrW2tbKGtbUT4+Ml18MCkrND4+Ml0+PjJdfDApfDA7a1tOPj4yXT1lYX1pZihtWyhrW04+PjJdfDApKzI+PjFdJjMyKXtpZighKGtbTT4+Ml18MCkpa1tNPj4yXT1rWyhrW0k+PjJdfDApKzg+PjJdO3d4KGtbZGE+PjJdfDAsODgsMCwwLDAsa1tNPj4yXXwwLC00KXwwfXd4KGtbZGE+PjJdfDAsODksa1tIPj4yXXwwLGtbUj4+Ml18MCxrW2lhPj4yXXwwLGtbTj4+Ml18MCwtNSl8MDtUaChrW2RhPj4yXXwwLGtbUD4+Ml0mMjU1KTtpZigoa1tQPj4yXXwwKSE9MCYoa1tIPj4yXXwwKT09MClQQShrW2dhPj4yXXwwLGtbUj4+Ml18MCxrW1A+PjJdfDApO2tbZmE+PjJdPWtbaWE+PjJdO2lhPWtbZmE+PjJdfDA7cj1qYTtyZXR1cm4gaWF8MH1pYT1rW2dhPj4yXXwwO2tbRj4+Ml09a1tHPj4yXTtPaChpYSwzMTA5MyxGKTticmVha31jYXNlIDExOTpjYXNlIDIwOntpZigoa1tCPj4yXXwwKT09MTE5PyhpYT1rW2tba1soa1tPPj4yXXwwKSsyMD4+Ml0+PjJdPj4yXXwwLGtbbj4+Ml09aWEsKGlhfDApIT0xKTowKXttQihrW2dhPj4yXXwwLGtbbj4+Ml18MCwxKTticmVhayBhfWlhPW5CKGtbZ2E+PjJdfDAsa1tPPj4yXXwwLDAsMCl8MDtrW2ZhPj4yXT1pYTtpYT1rW2ZhPj4yXXwwO3I9amE7cmV0dXJuIGlhfDB9Y2FzZSAxNTk6e2lmKCEoa1soa1soa1tPPj4yXXwwKSsxMj4+Ml18MCkrMjg+PjJdfDApKXtpYT1uQihrW2dhPj4yXXwwLGtbKGtbTz4+Ml18MCkrMTI+PjJdfDAsMCwwKXwwO2tbKGtbKGtbTz4+Ml18MCkrMTI+PjJdfDApKzI4Pj4yXT1pYX1rW2ZhPj4yXT0oa1soa1soa1tPPj4yXXwwKSsxMj4+Ml18MCkrMjg+PjJdfDApKyhqWyhrW08+PjJdfDApKzMyPj4xXXwwKTtpYT1rW2ZhPj4yXXwwO3I9amE7cmV0dXJuIGlhfDB9Y2FzZSAzMzp7ZWE9ZUEoa1tkYT4+Ml18MCl8MDtrW2U+PjJdPWVhO2VhPWVBKGtbZGE+PjJdfDApfDA7a1tmPj4yXT1lYTtzeChrW2RhPj4yXXwwLDc5LDAsa1tpYT4+Ml18MCl8MDtvQihrW2dhPj4yXXwwLGtbTz4+Ml18MCxrW2U+PjJdfDAsa1tmPj4yXXwwKTtzeChrW2RhPj4yXXwwLDc2LDEsa1tpYT4+Ml18MCl8MDtpQShrW2RhPj4yXXwwLGtbZT4+Ml18MCk7c3goa1tkYT4+Ml18MCw5MSxrW2lhPj4yXXwwLDApfDA7aUEoa1tkYT4+Ml18MCxrW2Y+PjJdfDApO2tbZmE+PjJdPWtbaWE+PjJdO2lhPWtbZmE+PjJdfDA7cj1qYTtyZXR1cm4gaWF8MH1jYXNlIDMyOntwQihrW2dhPj4yXXwwLGtbTz4+Ml18MCxrW2lhPj4yXXwwLDAsMCk7a1tmYT4+Ml09a1tpYT4+Ml07aWE9a1tmYT4+Ml18MDtyPWphO3JldHVybiBpYXwwfWNhc2UgMTU2OmNhc2UgNTM6Y2FzZSAxNjE6e2lhPWFCKGtbZ2E+PjJdfDAsa1soa1tPPj4yXXwwKSsxMj4+Ml18MCxrW2lhPj4yXXwwKXwwO2tbZmE+PjJdPWlhO2lhPWtbZmE+PjJdfDA7cj1qYTtyZXR1cm4gaWF8MH1jYXNlIDg4OntrW3U+PjJdPWtbKGtbTz4+Ml18MCkrNDQ+PjJdOyQ9KGhhKGtbKGtbTz4+Ml18MCkrMjg+PjJdfDAsKGpbKGtbdT4+Ml18MCkrMzQ+PjFdfDApKzF8MCl8MCkrMXwwO2tbbz4+Ml09JCsoalsoa1tPPj4yXXwwKSszMj4+MV18MCk7c3goa1tkYT4+Ml18MCwxNDMsa1tvPj4yXXwwLGtbaWE+PjJdfDApfDA7aWYoKGpbKGtbTz4+Ml18MCkrMzI+PjFdfDApPj0wPyhpWyhrWyhrW3U+PjJdfDApKzQ+PjJdfDApKyhqWyhrW08+PjJdfDApKzMyPj4xXTw8NCkrMTM+PjBdfDApPT02OTowKWFBKGtbZGE+PjJdfDAsOTIsa1tpYT4+Ml18MCl8MDticmVha31jYXNlIDE1ODp7T2goa1tnYT4+Ml18MCwyOTgzOCx3KTticmVha31jYXNlIDgzOntpZighKGtbKGtbZ2E+PjJdfDApKzEyOD4+Ml18MCkpe09oKGtbZ2E+PjJdfDAsMzExMTYseCk7a1tmYT4+Ml09MDtpYT1rW2ZhPj4yXXwwO3I9amE7cmV0dXJuIGlhfDB9aWYoKGlbKGtbTz4+Ml18MCkrMT4+MF18MCk9PTIpZHkoa1tnYT4+Ml18MCk7aWYoKGlbKGtbTz4+Ml18MCkrMT4+MF18MCk9PTQpe3d4KGtbZGE+PjJdfDAsNzUsMCw0LDAsa1soa1tPPj4yXXwwKSs4Pj4yXXwwLDApfDA7YnJlYWsgYX1lbHNle0RBKGtbZ2E+PjJdfDAsMTgxMSxpWyhrW08+PjJdfDApKzE+PjBdfDAsa1soa1tPPj4yXXwwKSs4Pj4yXXwwLDAsMCk7YnJlYWsgYX19ZGVmYXVsdDp7a1tfPj4yXT0wO2tbWj4+Ml09a1soa1tPPj4yXXwwKSsyMD4+Ml07a1tUPj4yXT1rWyhrW1o+PjJdfDApKzQ+PjJdO2tbVz4+Ml09a1trW1o+PjJdPj4yXTtSPWVBKGtbZGE+PjJdfDApfDA7a1tVPj4yXT1SO1I9a1soa1tPPj4yXXwwKSsxMj4+Ml18MDtrWyQ+PjJdPVI7aWYoUil7ZD1TO2U9a1skPj4yXXwwO2Y9ZCs0OHwwO2Rve2tbZD4+Ml09a1tlPj4yXTtkPWQrNHwwO2U9ZSs0fDB9d2hpbGUoKGR8MCk8KGZ8MCkpO3JCKFMscUIoa1tnYT4+Ml18MCxTLGJhKXwwKTtkPVk7Zj1kKzQ4fDA7ZG97a1tkPj4yXT0wO2Q9ZCs0fDB9d2hpbGUoKGR8MCk8KGZ8MCkpO2lbWT4+MF09Mzc7a1tZKzEyPj4yXT1TO2tbXz4+Ml09WTtrW2JhPj4yXT0wfWtbVj4+Ml09MDt3aGlsZSgxKXtpZigoa1tWPj4yXXwwKT49KChrW1c+PjJdfDApLTF8MCkpYnJlYWs7S0Eoa1tnYT4+Ml18MCk7ZD1rWyhrW1Q+PjJdfDApKygoa1tWPj4yXXwwKSoyMHwwKT4+Ml18MDtpZihrWyQ+PjJdfDApa1tZKzE2Pj4yXT1kO2Vsc2Uga1tfPj4yXT1kO1M9ZUEoa1tkYT4+Ml18MCl8MDtrW1g+PjJdPVM7c0Ioa1tnYT4+Ml18MCxrW18+PjJdfDAsa1tYPj4yXXwwLDE2KTskQShrW2dhPj4yXXwwLGtbKGtbVD4+Ml18MCkrKCgoa1tWPj4yXXwwKSsxfDApKjIwfDApPj4yXXwwLGtbaWE+PjJdfDApO2dBKGtbZGE+PjJdfDAsa1tVPj4yXXwwKXwwO0lBKGtbZ2E+PjJdfDApO2lBKGtbZGE+PjJdfDAsa1tYPj4yXXwwKTtrW1Y+PjJdPShrW1Y+PjJdfDApKzJ9aWYoa1tXPj4yXSYxKXtLQShrW2dhPj4yXXwwKTskQShrW2dhPj4yXXwwLGtbKGtbKGtbWj4+Ml18MCkrND4+Ml18MCkrKCgoa1tXPj4yXXwwKS0xfDApKjIwfDApPj4yXXwwLGtbaWE+PjJdfDApO0lBKGtbZ2E+PjJdfDApfWVsc2Ugc3goa1tkYT4+Ml18MCw3OSwwLGtbaWE+PjJdfDApfDA7aUEoa1tkYT4+Ml18MCxrW1U+PjJdfDApfX13aGlsZSgwKTtkbyBpZigoZWF8MCk9PTExKXtrW2c+PjJdPWtbKGtbTz4+Ml18MCkrMjg+PjJdO2RvIGlmKChrW2c+PjJdfDApPDApe2lmKChrWyhrW2dhPj4yXXwwKSs1Nj4+Ml18MCk8PTApe2tbZz4+Ml09a1soa1tnYT4+Ml18MCkrNjA+PjJdO2JyZWFrfWtbZmE+PjJdPShqWyhrW08+PjJdfDApKzMyPj4xXXwwKSsoa1soa1tnYT4+Ml18MCkrNTY+PjJdfDApO2lhPWtbZmE+PjJdfDA7cj1qYTtyZXR1cm4gaWF8MH13aGlsZSgwKTtpYT1iQihrW2dhPj4yXXwwLGtbKGtbTz4+Ml18MCkrNDQ+PjJdfDAsalsoa1tPPj4yXXwwKSszMj4+MV18MCxrW2c+PjJdfDAsa1tpYT4+Ml18MCxpWyhrW08+PjJdfDApKzM4Pj4wXXwwKXwwO2tbZmE+PjJdPWlhO2lhPWtbZmE+PjJdfDA7cj1qYTtyZXR1cm4gaWF8MH1lbHNlIGlmKChlYXwwKT09Mjkpe2tbRD4+Ml09a1soa1tPPj4yXXwwKSsxMj4+Ml07ZWE9KGZCKGtbRD4+Ml18MCl8MCkhPTA7ZD1rW2dhPj4yXXwwO2lmKGVhKXtnQihkLGtbTz4+Ml18MCxrW2lhPj4yXXwwLGtbQj4+Ml0mMjU1LGtbQz4+Ml0mMjU1KTticmVha31lbHNle2lhPWhCKGQsa1tEPj4yXXwwLGJhKXwwO2tbUj4+Ml09aWE7aWE9aEIoa1tnYT4+Ml18MCxrWyhrW08+PjJdfDApKzE2Pj4yXXwwLGNhKXwwO2tbRT4+Ml09aWE7aUIoa1tnYT4+Ml18MCxrW0Q+PjJdfDAsa1soa1tPPj4yXXwwKSsxNj4+Ml18MCxrW0I+PjJdfDAsa1tSPj4yXXwwLGtbRT4+Ml18MCxrW2FhPj4yXXwwLDMyfGtbQz4+Ml0pfDA7YnJlYWt9fXdoaWxlKDApO0h4KGtbZ2E+PjJdfDAsa1tiYT4+Ml18MCk7SHgoa1tnYT4+Ml18MCxrW2NhPj4yXXwwKTtrW2ZhPj4yXT1rW2FhPj4yXTtpYT1rW2ZhPj4yXXwwO3I9amE7cmV0dXJuIGlhfDB9ZnVuY3Rpb24gYkIoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscz0wLHQ9MCx1PTAsdj0wLHc9MDt3PXI7cj1yKzQ4fDA7Zz13KzMyfDA7aD13KzI4fDA7bT13KzI0fDA7bj13KzIwfDA7bz13KzE2fDA7cD13KzEyfDA7cT13KzM2fDA7dT13Kzh8MDtzPXcrNHwwO3Q9dztrW2g+PjJdPWE7a1ttPj4yXT1iO2tbbj4+Ml09YztrW28+PjJdPWQ7a1twPj4yXT1lO2lbcT4+MF09ZjtrW3U+PjJdPWtbKGtbaD4+Ml18MCkrOD4+Ml07a1tzPj4yXT0wO2tbdD4+Ml09KGtbaD4+Ml18MCkrMTUyO3doaWxlKDEpe2lmKChrW3M+PjJdfDApPj0obFsoa1toPj4yXXwwKSsyNT4+MF18MCkpYnJlYWs7aWYoKGtba1t0Pj4yXT4+Ml18MCk9PShrW28+PjJdfDApPyhqWyhrW3Q+PjJdfDApKzQ+PjFdfDApPT0oa1tuPj4yXXwwKTowKXt2PTU7YnJlYWt9a1tzPj4yXT0oa1tzPj4yXXwwKSsxO2tbdD4+Ml09KGtbdD4+Ml18MCkrMjB9aWYoKHZ8MCk9PTUpe3U9KGtbaD4+Ml18MCkrNjh8MDt2PWtbdT4+Ml18MDtrW3U+PjJdPXYrMTtrWyhrW3Q+PjJdfDApKzE2Pj4yXT12O1BCKGtbaD4+Ml18MCxrWyhrW3Q+PjJdfDApKzEyPj4yXXwwKTtrW2c+PjJdPWtbKGtbdD4+Ml18MCkrMTI+PjJdO3Y9a1tnPj4yXXwwO3I9dztyZXR1cm4gdnwwfVhBKGtbdT4+Ml18MCxrW20+PjJdfDAsa1tvPj4yXXwwLGtbbj4+Ml18MCxrW3A+PjJdfDApO2lmKGlbcT4+MF18MClUaChrW3U+PjJdfDAsaVtxPj4wXXwwKTtlbHNlIFFCKGtbaD4+Ml18MCxrW28+PjJdfDAsa1tuPj4yXXwwLGtbcD4+Ml18MCk7a1tnPj4yXT1rW3A+PjJdO3Y9a1tnPj4yXXwwO3I9dztyZXR1cm4gdnwwfWZ1bmN0aW9uIGNCKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaT0wLGo9MCxsPTAsbT0wLG49MCxvPTAscD0wO289cjtyPXIrNDh8MDttPW8rOHwwO2U9bys0MHwwO3A9byszNnwwO2Y9byszMnwwO2c9bysyOHwwO2o9bysyNHwwO2k9bysyMHwwO2g9bysxNnwwO2w9bztuPW8rMTJ8MDtrW2U+PjJdPWE7a1twPj4yXT1iO2tbZj4+Ml09YztrW2c+PjJdPWQ7a1tqPj4yXT1rWyhrW2U+PjJdfDApKzg+PjJdO2Q9KGtbcD4+Ml18MCkrOHwwO2lmKGtbKGtbcD4+Ml18MCkrND4+Ml0mMTAyNCl7a1tpPj4yXT1rW2Q+PjJdO2lmKGtbZj4+Ml18MClrW2k+PjJdPTAtKGtbaT4+Ml18MCk7c3goa1tqPj4yXXwwLDc2LGtbaT4+Ml18MCxrW2c+PjJdfDApfDA7cj1vO3JldHVybn1rW24+PjJdPWtbZD4+Ml07cD1SaShrW24+PjJdfDAsbCl8MDtrW2g+PjJdPXA7aWYoKGtbaD4+Ml18MCkhPTA/ISgoa1toPj4yXXwwKT09MiYoa1tmPj4yXXwwKSE9MCk6MClpZighKEpkKGtbbj4+Ml18MCwzMTI5MCwyKXwwKSl7cD1rW2U+PjJdfDA7a1ttPj4yXT1rW24+PjJdO09oKHAsMzEyOTMsbSk7cj1vO3JldHVybn1lbHNle2RCKGtbaj4+Ml18MCxrW24+PjJdfDAsa1tmPj4yXXwwLGtbZz4+Ml18MCk7cj1vO3JldHVybn1pZihrW2Y+PjJdfDApe249KGtbaD4+Ml18MCk9PTI7bT1sO209X1IoMCwwLGtbbT4+Ml18MCxrW20rND4+Ml18MCl8MDtwPWw7a1twPj4yXT1uPzA6bTtrW3ArND4+Ml09bj8tMjE0NzQ4MzY0ODpMfU9CKGtbaj4+Ml18MCw3NywwLGtbZz4+Ml18MCwwLGwsLTEzKXwwO3I9bztyZXR1cm59ZnVuY3Rpb24gZEIoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxpPTAsaj0wO2o9cjtyPXIrMzJ8MDtlPWorMjB8MDtmPWorMTZ8MDtnPWorMTJ8MDtoPWorOHwwO2k9ajtrW2U+PjJdPWE7a1tmPj4yXT1iO2tbZz4+Ml09YztrW2g+PjJdPWQ7aWYoIShrW2Y+PjJdfDApKXtyPWo7cmV0dXJufWI9a1tmPj4yXXwwO296KGIsaSxUZihrW2Y+PjJdfDApfDAsMSl8MDtpZihrW2c+PjJdfDApcFtpPj4zXT0tK3BbaT4+M107T0Ioa1tlPj4yXXwwLDEzMiwwLGtbaD4+Ml18MCwwLGksLTEyKXwwO3I9ajtyZXR1cm59ZnVuY3Rpb24gZUIoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTA7ZD1yO3I9cisxNnwwO2c9ZCs4fDA7Zj1kKzR8MDtlPWQ7a1tnPj4yXT1hO2tbZj4+Ml09YjtrW2U+PjJdPWM7UUEoa1tnPj4yXXwwLGtbZj4+Ml18MCxrW2U+PjJdfDApO3I9ZDtyZXR1cm59ZnVuY3Rpb24gZkIoYSl7YT1hfDA7dmFyIGI9MCxjPTA7Yj1yO3I9cisxNnwwO2M9YjtrW2M+PjJdPWE7YT0obXooa1tjPj4yXXwwKXwwKT4xJjE7cj1iO3JldHVybiBhfDB9ZnVuY3Rpb24gZ0IoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLG09MCxuPTAsbz0wLHA9MCxxPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTA7Qz1yO3I9cis4MHwwO2Y9Qys2NHwwO0Q9Qys2MHwwO2c9Qys1NnwwO2g9Qys3MHwwO2o9Qys2OXwwO0I9Qys1MnwwO3M9Qys0OHwwO3U9Qys0NHwwO289Qys0MHwwO249QyszNnwwO3o9QyszMnwwO0E9QysyOHwwO3A9Qys2OHwwO209QysyNHwwO3g9QysyMHwwO3k9QysxNnwwO3E9QysxMnwwO3Q9Qys4fDA7dj1DKzR8MDt3PUM7a1tmPj4yXT1hO2tbRD4+Ml09YjtrW2c+PjJdPWM7aVtoPj4wXT1kO2lbaj4+MF09ZTtrW0I+PjJdPWtbKGtbZj4+Ml18MCkrOD4+Ml07a1tzPj4yXT1rWyhrW0Q+PjJdfDApKzEyPj4yXTtrW3U+PjJdPWtbKGtbRD4+Ml18MCkrMTY+PjJdO2E9bXooa1tzPj4yXXwwKXwwO2tbbz4+Ml09YTtrW3o+PjJdPTA7a1tBPj4yXT0wO2lbcD4+MF09aVtoPj4wXXwwO2E9ZUEoa1tCPj4yXXwwKXwwO2tbbT4+Ml09YTtpW2o+PjBdPWxbaj4+MF18MHwzMjtpZigobFtwPj4wXXwwfDApPT0zOSlpW3A+PjBdPTQwO2lmKChsW3A+PjBdfDB8MCk9PTQxKWlbcD4+MF09Mzg7RD1NQihrW2Y+PjJdfDAsa1tzPj4yXXwwKXwwO2tbej4+Ml09RDtEPU1CKGtbZj4+Ml18MCxrW3U+PjJdfDApfDA7a1tBPj4yXT1EO2tbbj4+Ml09MDt3aGlsZSgxKXtrW3g+PjJdPTA7a1t5Pj4yXT0wO2lmKChrW24+PjJdfDApPjApS0Eoa1tmPj4yXXwwKTtEPU5CKGtbZj4+Ml18MCxrW3M+PjJdfDAsa1tuPj4yXXwwLGtbej4+Ml18MCxxLHgpfDA7a1t2Pj4yXT1EO0Q9TkIoa1tmPj4yXXwwLGtbdT4+Ml18MCxrW24+PjJdfDAsa1tBPj4yXXwwLHQseSl8MDtrW3c+PjJdPUQ7aUIoa1tmPj4yXXwwLGtbcT4+Ml18MCxrW3Q+PjJdfDAsbFtwPj4wXXwwLGtbdj4+Ml18MCxrW3c+PjJdfDAsa1tnPj4yXXwwLGxbaj4+MF18MCl8MDtIeChrW2Y+PjJdfDAsa1t4Pj4yXXwwKTtIeChrW2Y+PjJdfDAsa1t5Pj4yXXwwKTtpZigoa1tuPj4yXXwwKT4wKUlBKGtbZj4+Ml18MCk7aWYoKGtbbj4+Ml18MCk9PSgoa1tvPj4yXXwwKS0xfDApKWJyZWFrO2RvIGlmKChsW3A+PjBdfDB8MCkhPTM3KXtjPWtbQj4+Ml18MDtpZigobFtwPj4wXXwwfDApPT0zNil7c3goYywyMSxrW2c+PjJdfDAsa1ttPj4yXXwwKXwwO2lbaj4+MF09bFtqPj4wXXwwfDg7YnJlYWt9c3goYyw0MiwwLGtbbT4+Ml18MCl8MDtpZigoa1tuPj4yXXwwKT09KChrW28+PjJdfDApLTJ8MCkpaVtwPj4wXT1pW2g+PjBdfDB9ZWxzZXtzeChrW0I+PjJdfDAsMjIsa1tnPj4yXXwwLGtbbT4+Ml18MCl8MDtpW2o+PjBdPWxbaj4+MF18MHw4fXdoaWxlKDApO2tbbj4+Ml09KGtbbj4+Ml18MCkrMX1pQShrW0I+PjJdfDAsa1ttPj4yXXwwKTtyPUM7cmV0dXJufWZ1bmN0aW9uIGhCKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxpPTAsaj0wLG09MCxuPTAsbz0wLHA9MDtwPXI7cj1yKzQ4fDA7ZD1wKzMyfDA7ZT1wKzI4fDA7Zj1wKzI0fDA7Zz1wKzIwfDA7bj1wKzE2fDA7aT1wKzEyfDA7aD1wKzh8MDtqPXArNHwwO209cDtrW2U+PjJdPWE7a1tmPj4yXT1iO2tbZz4+Ml09YztjPXV5KGtbZj4+Ml18MCl8MDtrW2Y+PjJdPWM7aWYoKChsWyhrW2U+PjJdfDApKzIzPj4wXXwwfDApIT0wPyhsW2tbZj4+Ml0+PjBdfDB8MCkhPTE1NzowKT8oTEIoa1tmPj4yXXwwKXwwKSE9MDowKXtrW2k+PjJdPWtbKGtbZT4+Ml18MCkrODA+PjJdO2tba1tnPj4yXT4+Ml09MDthOmRvIGlmKGtbaT4+Ml18MCl7a1tqPj4yXT1rWyhrW2k+PjJdfDApKzQ+PjJdO2tbaD4+Ml09a1trW2k+PjJdPj4yXTt3aGlsZSgxKXtpZigoa1toPj4yXXwwKTw9MClicmVhayBhO2lmKCgobFsoa1tqPj4yXXwwKSsxMz4+MF18MCk+Pj4yJjF8MCkhPTA/KFV5KGtba1tqPj4yXT4+Ml18MCxrW2Y+PjJdfDAsLTEpfDApPT0wOjApYnJlYWs7a1tqPj4yXT0oa1tqPj4yXXwwKSsyMDtrW2g+PjJdPShrW2g+PjJdfDApKy0xfWtbZD4+Ml09a1soa1tqPj4yXXwwKSsxNj4+Ml07bz1rW2Q+PjJdfDA7cj1wO3JldHVybiBvfDB9d2hpbGUoMCk7Yz0oa1tlPj4yXXwwKSs0NHwwO209KGtbYz4+Ml18MCkrMXwwO2tbYz4+Ml09bTtrW24+PjJdPW07R0Ioa1tlPj4yXXwwLGtbZj4+Ml18MCxrW24+PjJdfDAsMSl9ZWxzZSBvPTEyO2RvIGlmKChvfDApPT0xMil7bz1GeChrW2U+PjJdfDApfDA7a1ttPj4yXT1vO289YUIoa1tlPj4yXXwwLGtbZj4+Ml18MCxrW20+PjJdfDApfDA7a1tuPj4yXT1vO2lmKChrW24+PjJdfDApPT0oa1ttPj4yXXwwKSl7a1trW2c+PjJdPj4yXT1rW20+PjJdO2JyZWFrfWVsc2V7SHgoa1tlPj4yXXwwLGtbbT4+Ml18MCk7a1trW2c+PjJdPj4yXT0wO2JyZWFrfX13aGlsZSgwKTtrW2Q+PjJdPWtbbj4+Ml07bz1rW2Q+PjJdfDA7cj1wO3JldHVybiBvfDB9ZnVuY3Rpb24gaUIoYSxiLGMsZCxlLGYsZyxoKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDt2YXIgaT0wLGo9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxzPTAsdD0wLHU9MCx2PTA7aj1yO3I9cis0OHwwO209ais0MHwwO3Y9aiszNnwwO3U9aiszMnwwO3M9aisyOHwwO289aisyNHwwO3E9aisyMHwwO3A9aisxNnwwO3Q9aisxMnwwO2w9ais4fDA7aT1qKzR8MDtuPWo7a1ttPj4yXT1hO2tbdj4+Ml09YjtrW3U+PjJdPWM7a1tzPj4yXT1kO2tbbz4+Ml09ZTtrW3E+PjJdPWY7a1twPj4yXT1nO2tbdD4+Ml09aDtjPUNCKGtbbT4+Ml18MCxrW3Y+PjJdfDAsa1t1Pj4yXXwwKXwwO2tbbj4+Ml09YztjPShLQihrW3Y+PjJdfDAsa1t1Pj4yXXwwLGtbdD4+Ml18MCl8MCkmMjU1O2tbbD4+Ml09YztjPXd4KGtbKGtbbT4+Ml18MCkrOD4+Ml18MCxrW3M+PjJdfDAsa1txPj4yXXwwLGtbcD4+Ml18MCxrW28+PjJdfDAsa1tuPj4yXXwwLC00KXwwO2tbaT4+Ml09YztUaChrWyhrW20+PjJdfDApKzg+PjJdfDAsa1tsPj4yXSYyNTUpO3I9ajtyZXR1cm4ga1tpPj4yXXwwfWZ1bmN0aW9uIGpCKGEpe2E9YXwwO3ZhciBiPTAsYz0wO2I9cjtyPXIrMTZ8MDtjPWI7a1tjPj4yXT1hO2E9SEIoa1tjPj4yXXwwLDEsMCl8MDtyPWI7cmV0dXJuIGF8MH1mdW5jdGlvbiBrQihhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsbj0wLG89MCxwPTAscT0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTA7ej1yO3I9cis2NHwwO2Y9eis0NHwwO2c9eis0MHwwO2g9eiszNnwwO2o9eiszMnwwO249eis0OXwwO3Y9eisyOHwwO3A9eisyNHwwO3M9eisyMHwwO3Q9eisxNnwwO289eis0OHwwO3g9eisxMnwwO3U9eis4fDA7cT16KzR8MDt3PXo7a1tmPj4yXT1hO2tbZz4+Ml09YjtrW2g+PjJdPWM7a1tqPj4yXT1kO2lbbj4+MF09ZTtpW28+PjBdPShsW24+PjBdJjF8MCkhPTA/ODQ6ODU7a1t4Pj4yXT1rWyhrW2Y+PjJdfDApKzg+PjJdO2tbdD4+Ml09a1trW2c+PjJdPj4yXTtpZighKGlbKGtbZj4+Ml18MCkrMjM+PjBdfDApKWlbbj4+MF09bFtuPj4wXSYtMztrW3Y+PjJdPWtbKGtbZz4+Ml18MCkrND4+Ml07a1twPj4yXT0wO3doaWxlKDEpe2lmKChrW3A+PjJdfDApPj0oa1t0Pj4yXXwwKSlicmVhaztrW3U+PjJdPWtba1t2Pj4yXT4+Ml07aWYoKGxbbj4+MF0mNHwwKSE9MD8oYz1tWyhrWyhrW2c+PjJdfDApKzQ+PjJdfDApKygoa1twPj4yXXwwKSoyMHwwKSsxNj4+MV18MCxrW3M+PjJdPWMsKGN8MCk+MCk6MClzeChrW3g+PjJdfDAsbFtvPj4wXXwwLChrW3M+PjJdfDApKyhrW2o+PjJdfDApLTF8MCwoa1toPj4yXXwwKSsoa1twPj4yXXwwKXwwKXwwO2Vsc2UgeT04O2RvIGlmKCh5fDApPT04KXt5PTA7aWYoKGxbbj4+MF0mMnwwKSE9MD8oakIoa1t1Pj4yXXwwKXwwKSE9MDowKXtHQihrW2Y+PjJdfDAsa1t1Pj4yXXwwLChrW2g+PjJdfDApKyhrW3A+PjJdfDApfDAsMCk7YnJlYWt9Yz1hQihrW2Y+PjJdfDAsa1t1Pj4yXXwwLChrW2g+PjJdfDApKyhrW3A+PjJdfDApfDApfDA7a1txPj4yXT1jO2lmKChrW3E+PjJdfDApIT0oKGtbaD4+Ml18MCkrKGtbcD4+Ml18MCl8MCkpe2lmKCgoKGxbbz4+MF18MCk9PTg0PyhjPW9BKGtbeD4+Ml18MCwtMSl8MCxrW3c+PjJdPWMsKGxbYz4+MF18MCk9PTg0KTowKT8oKGtbKGtbdz4+Ml18MCkrND4+Ml18MCkrKGtbKGtbdz4+Ml18MCkrMTI+PjJdfDApKzF8MCk9PShrW3E+PjJdfDApOjApPygoa1soa1t3Pj4yXXwwKSs4Pj4yXXwwKSsoa1soa1t3Pj4yXXwwKSsxMj4+Ml18MCkrMXwwKT09KChrW2g+PjJdfDApKyhrW3A+PjJdfDApfDApOjApe2M9KGtbdz4+Ml18MCkrMTJ8MDtrW2M+PjJdPShrW2M+PjJdfDApKzE7YnJlYWt9c3goa1t4Pj4yXXwwLGxbbz4+MF18MCxrW3E+PjJdfDAsKGtbaD4+Ml18MCkrKGtbcD4+Ml18MCl8MCl8MH19d2hpbGUoMCk7a1twPj4yXT0oa1twPj4yXXwwKSsxO2tbdj4+Ml09KGtbdj4+Ml18MCkrMjB9cj16O3JldHVybiBrW3Q+PjJdfDB9ZnVuY3Rpb24gbEIoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxuPTAsbz0wLHA9MCxxPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wO3k9cjtyPXIrNjR8MDtlPXkrNTJ8MDtmPXkrNDh8MDtnPXkrNDR8MDtoPXkrNDB8MDtuPXkrMzZ8MDtzPXkrMzJ8MDt0PXkrMjh8MDtwPXkrMjR8MDt2PXkrMjB8MDtvPXkrMTZ8MDtxPXkrMTJ8MDt1PXkrOHwwO3g9eSs0fDA7dz15O2tbZj4+Ml09YTtrW2c+PjJdPWI7a1toPj4yXT1jO2tbbj4+Ml09ZDtrW3Y+PjJdPTA7a1tvPj4yXT0wO2tbdT4+Ml09MDtpZighKGtbbj4+Ml18MCkpe2tbZT4+Ml09a1tnPj4yXTt4PWtbZT4+Ml18MDtyPXk7cmV0dXJuIHh8MH1pZigobFtrW24+PjJdPj4wXXwwKSE9MTUyKXtrW2U+PjJdPWtbZz4+Ml07eD1rW2U+PjJdfDA7cj15O3JldHVybiB4fDB9a1tzPj4yXT1rWyhrW24+PjJdfDApKzQ0Pj4yXTtpZighKGtbcz4+Ml18MCkpe2tbZT4+Ml09a1tnPj4yXTt4PWtbZT4+Ml18MDtyPXk7cmV0dXJuIHh8MH1pZighKGxbKGtbcz4+Ml18MCkrNDI+PjBdJjE2KSl7a1tlPj4yXT1rW2c+PjJdO3g9a1tlPj4yXXwwO3I9eTtyZXR1cm4geHwwfXM9KGN5KGtbZj4+Ml18MCxrW3M+PjJdfDApfDApKzh8MDtrW3Q+PjJdPWtbcz4+Ml07a1twPj4yXT1rW2tbdD4+Ml0+PjJdO2lmKCEoa1soa1twPj4yXXwwKSs3Mj4+Ml18MCkpe2tbZT4+Ml09a1tnPj4yXTt4PWtbZT4+Ml18MDtyPXk7cmV0dXJuIHh8MH1zPUFoKGtbZj4+Ml18MCxrWyhrW2c+PjJdfDApKzIwPj4yXXwwKXwwO2tbeD4+Ml09cztpZihrW3g+PjJdfDApe2tbdz4+Ml09a1t4Pj4yXTt3aGlsZSgxKXtpZighKGlba1t3Pj4yXT4+MF18MCkpYnJlYWs7aVtrW3c+PjJdPj4wXT1pWzE3NjEzKyhsW2tbdz4+Ml0+PjBdfDApPj4wXXwwO2tbdz4+Ml09KGtbdz4+Ml18MCkrMX13PWhjW2tbKGtbcD4+Ml18MCkrNzI+PjJdJjI1NV0oa1t0Pj4yXXwwLGtbaD4+Ml18MCxrW3g+PjJdfDAsdixvKXwwO2tbdT4+Ml09dztiZyhrW2Y+PjJdfDAsa1t4Pj4yXXwwKX1pZighKGtbdT4+Ml18MCkpe2tbZT4+Ml09a1tnPj4yXTt4PWtbZT4+Ml18MDtyPXk7cmV0dXJuIHh8MH14PWtbZj4+Ml18MDt4PUNoKHgsMjgrKFRmKGtbKGtbZz4+Ml18MCkrMjA+PjJdfDApfDApKzF8MCwwKXwwO2tbcT4+Ml09eDtpZighKGtbcT4+Ml18MCkpe2tbZT4+Ml09a1tnPj4yXTt4PWtbZT4+Ml18MDtyPXk7cmV0dXJuIHh8MH1lbHNle3c9a1txPj4yXXwwO3g9a1tnPj4yXXwwO2tbdz4+Ml09a1t4Pj4yXTtrW3crND4+Ml09a1t4KzQ+PjJdO2tbdys4Pj4yXT1rW3grOD4+Ml07a1t3KzEyPj4yXT1rW3grMTI+PjJdO2tbdysxNj4+Ml09a1t4KzE2Pj4yXTtrW3crMjA+PjJdPWtbeCsyMD4+Ml07a1t3KzI0Pj4yXT1rW3grMjQ+PjJdO2tbKGtbcT4+Ml18MCkrMjA+PjJdPShrW3E+PjJdfDApKzI4O3c9KGtbcT4+Ml18MCkrMjh8MDt4PWtbKGtbZz4+Ml18MCkrMjA+PjJdfDA7YlMod3wwLHh8MCwoVGYoa1soa1tnPj4yXXwwKSsyMD4+Ml18MCl8MCkrMXwwKXwwO2tbKGtbcT4+Ml18MCkrMTI+PjJdPWtbdj4+Ml07a1soa1txPj4yXXwwKSs0Pj4yXT1rW28+PjJdO3g9KGtbcT4+Ml18MCkrMnwwO2pbeD4+MV09bVt4Pj4xXXwxNjtrW2U+PjJdPWtbcT4+Ml07eD1rW2U+PjJdfDA7cj15O3JldHVybiB4fDB9cmV0dXJuIDB9ZnVuY3Rpb24gbUIoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGk9MDtkPXI7cj1yKzMyfDA7ZT1kO2k9ZCsyMHwwO2Y9ZCsxNnwwO2c9ZCsxMnwwO2g9ZCs4fDA7a1tpPj4yXT1hO2tbZj4+Ml09YjtrW2c+PjJdPWM7a1toPj4yXT0zMTI0NjtjPWtbaT4+Ml18MDthPWtbaD4+Ml18MDtiPWtbZz4+Ml18MDtrW2U+PjJdPWtbZj4+Ml07a1tlKzQ+PjJdPWI7T2goYyxhLGUpO3I9ZDtyZXR1cm59ZnVuY3Rpb24gbkIoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTAsbT0wLG49MCxvPTAscD0wLHE9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MCxFPTAsRj0wLEc9MCxIPTAsST0wLEo9MCxLPTAsTD0wLE09MCxOPTAsTz0wO089cjtyPXIrMTc2fDA7ZT1PO0g9TysxNjh8MDtJPU8rMTY0fDA7Sj1PKzE2MHwwO0s9TysxNTZ8MDt2PU8rMTUyfDA7TD1PKzE0OHwwO009TysxNDR8MDtOPU8rMTQwfDA7Zj1PKzEzNnwwO3c9TysxMzJ8MDtzPU8rMTI4fDA7Qz1PKzEyNHwwO289TysxMjB8MDt1PU8rMTE2fDA7cT1PKzExMnwwO209Tys4OHwwO249Tys4MHwwO3A9Tys3NnwwO3g9TysxNzJ8MDt5PU8rNzJ8MDt0PU8rNjh8MDtCPU8rNjR8MDtEPU8rNjB8MDtFPU8rNTZ8MDtGPU8rNTJ8MDtBPU8rNDh8MDt6PU8rNDR8MDtqPU8rNDB8MDtnPU8rMTZ8MDtoPU8rMTJ8MDtrW0k+PjJdPWE7a1tKPj4yXT1iO2tbSz4+Ml09YztrW3Y+PjJdPWQ7a1tMPj4yXT0tMTtrW00+PjJdPTA7Yz1ueChrW0k+PjJdfDApfDA7a1tOPj4yXT1jO2lmKCEoa1tOPj4yXXwwKSl7a1tIPj4yXT0wO049a1tIPj4yXXwwO3I9TztyZXR1cm4gTnwwfUtBKGtbST4+Ml18MCk7aWYoIShrWyhrW0o+PjJdfDApKzQ+PjJdJjMyKSl7Yz1weChrW04+PjJdfDAsMjApfDA7a1tMPj4yXT1jfWlmKChsWyhrW0k+PjJdfDApKzQwOT4+MF18MCk9PTIpe2M9a1trW0k+PjJdPj4yXXwwO2I9KGxba1tKPj4yXT4+MF18MCk9PTMzPzMxMjA5OjMxMjE0O2E9a1soa1tJPj4yXXwwKSs0MjQ+PjJdfDA7a1tlPj4yXT0oa1tMPj4yXXwwKT49MD8xODQwMjozMTE5NztrW2UrND4+Ml09YjtrW2UrOD4+Ml09YTtlPVFoKGMsMzEyMjEsZSl8MDtrW2Y+PjJdPWU7d3goa1tOPj4yXXwwLDE2MixrWyhrW0k+PjJdfDApKzQyMD4+Ml18MCwwLDAsa1tmPj4yXXwwLC0xKXwwfWQ9a1tKPj4yXXwwO2RvIGlmKChsW2tbSj4+Ml0+PjBdfDApPT0zMyl7a1tzPj4yXT1rW2QrMTI+PjJdO2tbQz4+Ml09MDtoPW16KGtbcz4+Ml18MCl8MDtrW28+PjJdPWg7aD0oa1tJPj4yXXwwKSs0MHwwO2o9a1toPj4yXXwwO2tbaD4+Ml09aisxO2tbKGtbSj4+Ml18MCkrMjg+PjJdPWo7aj1zeChrW04+PjJdfDAsMTA3LGtbKGtbSj4+Ml18MCkrMjg+PjJdfDAsKGtbdj4+Ml18MCkhPTA/MDprW28+PjJdfDApfDA7a1t3Pj4yXT1qO2lmKGtbdj4+Ml18MClkPTA7ZWxzZSBkPXNBKGtba1tJPj4yXT4+Ml18MCxrW28+PjJdfDAsMSl8MDtrW0M+PjJdPWQ7ZD0oa1tKPj4yXXwwKSsyMHwwO2E6ZG8gaWYoa1soa1tKPj4yXXwwKSs0Pj4yXSYyMDQ4KXtrW3U+PjJdPWtbZD4+Ml07a1txPj4yXT1rW2tbdT4+Ml0+PjJdO2lmKChrW2tbcT4+Ml0+PjJdfDApPT0oa1tvPj4yXXwwKSl7RkIobSwxMSxrWyhrW0o+PjJdfDApKzI4Pj4yXXwwKTtHPXdCKGtbST4+Ml18MCxrW0o+PjJdfDApfDA7a1ttKzQ+PjJdPUc7a1soa1t1Pj4yXXwwKSsxMj4+Ml09MDtHPShadihrW0k+PjJdfDAsa1t1Pj4yXXwwLG0pfDApIT0wO2JnKGtba1tJPj4yXT4+Ml18MCxrW20rND4+Ml18MCk7aWYoRyl7dEEoa1tDPj4yXXwwKTtrW0g+PjJdPTA7Tj1rW0g+PjJdfDA7cj1PO3JldHVybiBOfDB9a1tuPj4yXT0wO3doaWxlKDEpe2lmKChrW24+PjJdfDApPj0oa1tvPj4yXXwwKSlicmVhayBhO0c9ekIoa1tzPj4yXXwwLGtbbj4+Ml18MCl8MDtrW3A+PjJdPUc7Rz1DQihrW0k+PjJdfDAsa1twPj4yXXwwLGtbKGtbKGtbcT4+Ml18MCkrND4+Ml18MCkrKChrW24+PjJdfDApKjIwfDApPj4yXXwwKXwwO2tbKGtbQz4+Ml18MCkrMjArKGtbbj4+Ml08PDIpPj4yXT1HO2tbbj4+Ml09KGtbbj4+Ml18MCkrMX19fWVsc2UgaWYoa1tkPj4yXXwwKXtrW3Q+PjJdPWtbKGtbSj4+Ml18MCkrMjA+PjJdO3U9b3koa1tzPj4yXXwwKXwwO2lbeD4+MF09dTtpW3g+PjBdPShpW3g+PjBdfDApIT0wP3U6NjU7aWYoa1tDPj4yXXwwKXt1PXB5KGtbST4+Ml18MCxrWyhrW0o+PjJdfDApKzEyPj4yXXwwKXwwO2tbKGtbQz4+Ml18MCkrMjA+PjJdPXV9dT1GeChrW0k+PjJdfDApfDA7a1tEPj4yXT11O3U9Rngoa1tJPj4yXXwwKXwwO2tbRT4+Ml09dTtpZihrW3Y+PjJdfDApc3goa1tOPj4yXXwwLDc5LDAsa1tFPj4yXXwwKXwwO2tbeT4+Ml09a1trW3Q+PjJdPj4yXTtrW0I+PjJdPWtbKGtbdD4+Ml18MCkrND4+Ml07d2hpbGUoMSl7aWYoKGtbeT4+Ml18MCk8PTApYnJlYWs7a1tBPj4yXT1rW2tbQj4+Ml0+PjJdO2lmKChrW0w+PjJdfDApPj0wPyhqQihrW0E+PjJdfDApfDApPT0wOjApe1JBKGtbTj4+Ml18MCxrW0w+PjJdfDApfDA7a1tMPj4yXT0tMX1pZigoa1t2Pj4yXXwwKSE9MD8oUHkoa1tBPj4yXXwwLHopfDApIT0wOjApdHgoa1tOPj4yXXwwLDExNixrWyhrW0o+PjJdfDApKzI4Pj4yXXwwLGtbRT4+Ml18MCxrW3o+PjJdfDApfDA7ZWxzZSBHPTMwO2RvIGlmKChHfDApPT0zMCl7Rz0wO2Q9YUIoa1tJPj4yXXwwLGtbQT4+Ml18MCxrW0Q+PjJdfDApfDA7a1tGPj4yXT1kO2Q9a1tOPj4yXXwwO2I9a1tGPj4yXXwwO2lmKGtbdj4+Ml18MCl7c3goZCwxNyxiLChHeChrW04+PjJdfDApfDApKzJ8MCl8MDt0eChrW04+PjJdfDAsMTE1LGtbKGtbSj4+Ml18MCkrMjg+PjJdfDAsa1tFPj4yXXwwLGtbRj4+Ml18MCl8MDticmVha31lbHNle3d4KGQsOTksYiwxLGtbRT4+Ml18MCx4LDEpfDA7ZUIoa1tJPj4yXXwwLGtbRj4+Ml18MCwxKTtzeChrW04+PjJdfDAsMTI2LGtbKGtbSj4+Ml18MCkrMjg+PjJdfDAsa1tFPj4yXXwwKXwwO2JyZWFrfX13aGlsZSgwKTtrW3k+PjJdPShrW3k+PjJdfDApKy0xO2tbQj4+Ml09KGtbQj4+Ml18MCkrMjB9SHgoa1tJPj4yXXwwLGtbRD4+Ml18MCk7SHgoa1tJPj4yXXwwLGtbRT4+Ml18MCl9d2hpbGUoMCk7aWYoa1tDPj4yXXwwKVdoKGtbTj4+Ml18MCxrW3c+PjJdfDAsa1tDPj4yXXwwLC02KX1lbHNle2tbaj4+Ml09a1tkKzIwPj4yXTtpZigobFtrW0o+PjJdPj4wXXwwKT09MTE5KWQ9a1trW2tbaj4+Ml0+PjJdPj4yXXwwO2Vsc2UgZD0xO2tbaD4+Ml09ZDtGQihnLDAsKGtbKGtbST4+Ml18MCkrNDQ+PjJdfDApKzF8MCk7Rz0oa1tJPj4yXXwwKSs0NHwwO2tbRz4+Ml09KGtbRz4+Ml18MCkrKGtbaD4+Ml18MCk7aWYoKGxba1tKPj4yXT4+MF18MCk9PTExOSl7aVtnPj4wXT0xMDtrW2crMTI+PjJdPWtbZys4Pj4yXTtrW2crMTY+PjJdPWtbaD4+Ml07dHgoa1tOPj4yXXwwLDc5LDAsa1tnKzg+PjJdfDAsKGtbZys4Pj4yXXwwKSsoa1toPj4yXXwwKS0xfDApfDB9ZWxzZXtpW2c+PjBdPTM7c3goa1tOPj4yXXwwLDc2LDAsa1tnKzg+PjJdfDApfDB9c3Yoa1trW0k+PjJdPj4yXXwwLGtbKGtbaj4+Ml18MCkrNTY+PjJdfDApO0c9dHcoa1trW0k+PjJdPj4yXXwwLDEzNCw0Mjg0LDApfDA7a1soa1tqPj4yXXwwKSs1Nj4+Ml09RztrWyhrW2o+PjJdfDApKzEyPj4yXT0wO0c9KGtbaj4+Ml18MCkrOHwwO2tbRz4+Ml09a1tHPj4yXSYtMTAyNTtpZighKFp2KGtbST4+Ml18MCxrW2o+PjJdfDAsZyl8MCkpe2tbTT4+Ml09a1tnKzg+PjJdO2JyZWFrfWtbSD4+Ml09MDtOPWtbSD4+Ml18MDtyPU87cmV0dXJuIE58MH13aGlsZSgwKTtpZihrW0s+PjJdfDApREIoa1tOPj4yXXwwLGtbKGtbSj4+Ml18MCkrMjg+PjJdfDAsa1tLPj4yXXwwKTtpZigoa1tMPj4yXXwwKT49MCloQShrW04+PjJdfDAsa1tMPj4yXXwwKTtJQShrW0k+PjJdfDApO2tbSD4+Ml09a1tNPj4yXTtOPWtbSD4+Ml18MDtyPU87cmV0dXJuIE58MH1mdW5jdGlvbiBvQihhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MCxFPTAsRj0wLEc9MCxIPTAsST0wLEo9MCxLPTAsTD0wO0w9cjtyPXIrMTI4fDA7cT1MKzEyMHwwO3M9TCsxMTZ8MDt0PUwrMTEyfDA7dT1MKzEwOHwwO0k9TCsxMDR8MDtwPUwrMTAwfDA7Rz1MKzk2fDA7SD1MKzkyfDA7Sj1MKzg4fDA7eD1MKzg0fDA7Sz1MKzgwfDA7Qj1MKzc2fDA7RT1MKzY4fDA7QT1MKzY0fDA7ZT1MKzYwfDA7ej1MKzU2fDA7dz1MKzUyfDA7eT1MKzQ4fDA7dj1MKzQ0fDA7bD1MKzQwfDA7aj1MKzM2fDA7Zz1MKzMyfDA7bT1MKzI4fDA7bz1MKzI0fDA7bj1MKzIwfDA7Zj1MKzE2fDA7aD1MKzEyfDA7Qz1MKzh8MDtEPUwrNHwwO0Y9TDtrW3E+PjJdPWE7a1tzPj4yXT1iO2tbdD4+Ml09YztrW3U+PjJdPWQ7a1tJPj4yXT0wO2tbeD4+Ml09MDtrW0s+PjJdPTA7a1t6Pj4yXT0wO2tbRT4+Ml09a1soa1tzPj4yXXwwKSsxMj4+Ml07aWYodkIoa1txPj4yXXwwLGtbcz4+Ml18MCl8MCl7cj1MO3JldHVybn1hPXdCKGtbcT4+Ml18MCxrW3M+PjJdfDApfDA7a1tLPj4yXT1hO2E9bXooa1soa1tzPj4yXXwwKSsxMj4+Ml18MCl8MDtrW0I+PjJdPWE7YT1DaChrW2tbcT4+Ml0+PjJdfDAsKChrW0I+PjJdfDApKjV8MCkrMXwwLDApfDA7a1t4Pj4yXT1hO2lmKCEoaVsoa1trW3E+PjJdPj4yXXwwKSs2OT4+MF18MCkpe2tbSj4+Ml09a1soa1txPj4yXXwwKSs4Pj4yXTthPXhCKGtbcT4+Ml18MCxrW3M+PjJdfDAsMywoa1t0Pj4yXXwwKT09KGtbdT4+Ml18MCk/MDpJLGtbeD4+Ml18MCl8MDtrW3A+PjJdPWE7S0Eoa1txPj4yXXwwKTthPXFCKGtbcT4+Ml18MCxrW0U+PjJdfDAsTCs3MnwwKXwwO2tbSD4+Ml09YTtrW0E+PjJdPTA7d2hpbGUoMSl7aWYoKGtbQT4+Ml18MCk+PShrW0I+PjJdfDApKWJyZWFrO2lmKChrWyhrW3g+PjJdfDApKyhrW0E+PjJdPDwyKT4+Ml18MCkhPShrW0E+PjJdfDApKWJyZWFrO2tbQT4+Ml09KGtbQT4+Ml18MCkrMX1hOmRvIGlmKChrW0E+PjJdfDApPT0oa1tCPj4yXXwwKSlrW0c+PjJdPWtbSD4+Ml07ZWxzZXthPU1BKGtbcT4+Ml18MCxrW0I+PjJdfDApfDA7a1tHPj4yXT1hO2tbQT4+Ml09MDt3aGlsZSgxKXtpZigoa1tBPj4yXXwwKT49KGtbQj4+Ml18MCkpYnJlYWsgYTt0eChrW0o+PjJdfDAsODQsKGtbSD4+Ml18MCkrKGtbQT4+Ml18MCl8MCwoa1tHPj4yXXwwKSsoa1soa1t4Pj4yXXwwKSsoa1tBPj4yXTw8Mik+PjJdfDApfDAsMCl8MDtrW0E+PjJdPShrW0E+PjJdfDApKzF9fXdoaWxlKDApO2I6ZG8gaWYoKGtbcD4+Ml18MCk9PTUpe2tbbD4+Ml09a1soa1tzPj4yXXwwKSsyMD4+Ml07ST1weShrW3E+PjJdfDAsa1soa1tzPj4yXXwwKSsxMj4+Ml18MCl8MDtrW2o+PjJdPUk7ST1lQShrW0o+PjJdfDApfDA7a1tnPj4yXT1JO2tbbj4+Ml09MDtpZigoa1t1Pj4yXXwwKSE9KGtbdD4+Ml18MCkpe0k9Rngoa1txPj4yXXwwKXwwO2tbbj4+Ml09STt0eChrW0o+PjJdfDAsNDMsa1tHPj4yXXwwLGtbRz4+Ml18MCxrW24+PjJdfDApfDB9a1tmPj4yXT0wO3doaWxlKDEpe2lmKChrW2Y+PjJdfDApPj0oa1trW2w+PjJdPj4yXXwwKSlicmVhaztJPWhCKGtbcT4+Ml18MCxrWyhrWyhrW2w+PjJdfDApKzQ+PjJdfDApKygoa1tmPj4yXXwwKSoyMHwwKT4+Ml18MCxvKXwwO2tbbT4+Ml09STtpZigoa1tuPj4yXXwwKSE9MD8oeUIoa1soa1soa1tsPj4yXXwwKSs0Pj4yXXwwKSsoKGtbZj4+Ml18MCkqMjB8MCk+PjJdfDApfDApIT0wOjApdHgoa1tKPj4yXXwwLDQzLGtbbj4+Ml18MCxrW20+PjJdfDAsa1tuPj4yXXwwKXwwO2lmKChrW2Y+PjJdfDApPj0oKGtba1tsPj4yXT4+Ml18MCktMXwwKT8oa1t1Pj4yXXwwKT09KGtbdD4+Ml18MCk6MCl7d3goa1tKPj4yXXwwLDM2LGtbRz4+Ml18MCxrW3Q+PjJdfDAsa1ttPj4yXXwwLGtbaj4+Ml18MCwtNCl8MDtUaChrW0o+PjJdfDAsKGlba1tLPj4yXT4+MF18MTYpJjI1NSl9ZWxzZXt3eChrW0o+PjJdfDAsMzcsa1tHPj4yXXwwLGtbZz4+Ml18MCxrW20+PjJdfDAsa1tqPj4yXXwwLC00KXwwO1RoKGtbSj4+Ml18MCxpW2tbSz4+Ml0+PjBdfDApfUh4KGtbcT4+Ml18MCxrW28+PjJdfDApO2tbZj4+Ml09KGtbZj4+Ml18MCkrMX1pZihrW24+PjJdfDApe3N4KGtbSj4+Ml18MCwzNCxrW24+PjJdfDAsa1t1Pj4yXXwwKXwwO2dBKGtbSj4+Ml18MCxrW3Q+PjJdfDApfDB9aUEoa1tKPj4yXXwwLGtbZz4+Ml18MCk7SHgoa1txPj4yXXwwLGtbbj4+Ml18MCl9ZWxzZXtpZigoa1t1Pj4yXXwwKT09KGtbdD4+Ml18MCkpa1tlPj4yXT1rW3Q+PjJdO2Vsc2V7bz1lQShrW0o+PjJdfDApfDA7a1t6Pj4yXT1vO2tbZT4+Ml09b31rW0E+PjJdPTA7d2hpbGUoMSl7aWYoKGtbQT4+Ml18MCk+PShrW0I+PjJdfDApKWJyZWFrO289ekIoa1soa1tzPj4yXXwwKSsxMj4+Ml18MCxrW0E+PjJdfDApfDA7a1toPj4yXT1vO2lmKHlCKGtbaD4+Ml18MCl8MClzeChrW0o+PjJdfDAsMzQsKGtbRz4+Ml18MCkrKGtbQT4+Ml18MCl8MCxrW2U+PjJdfDApfDA7a1tBPj4yXT0oa1tBPj4yXXwwKSsxfWM9a1tKPj4yXXwwO2RvIGlmKChrW3A+PjJdfDApIT0xKXt3eChjLDk4LGtbRz4+Ml18MCxrW0I+PjJdfDAsMCxrW0s+PjJdfDAsa1tCPj4yXXwwKXwwO2M9a1tKPj4yXXwwO2Q9a1soa1tzPj4yXXwwKSsyOD4+Ml18MDtpZigoa1t0Pj4yXXwwKT09KGtbdT4+Ml18MCkpe1NoKGMsMzAsZCxrW3Q+PjJdfDAsa1tHPj4yXXwwLGtbQj4+Ml18MCl8MDticmVhayBifWVsc2V7cD1TaChjLDMxLGQsMCxrW0c+PjJdfDAsa1tCPj4yXXwwKXwwO2tbdz4+Ml09cDticmVha319ZWxzZXt0eChjLDMyLGtbKGtbcz4+Ml18MCkrMjg+PjJdfDAsa1t0Pj4yXXwwLGtbRz4+Ml18MCl8MDtwPXB4KGtbSj4+Ml18MCwxMyl8MDtrW3c+PjJdPXB9d2hpbGUoMCk7aWYoKGtbST4+Ml18MCkhPTAmKGtbQj4+Ml18MCk9PTEpc3goa1tKPj4yXXwwLDM1LGtbST4+Ml18MCxrW3Q+PjJdfDApfDA7aWYoKGtbdD4+Ml18MCk9PShrW3U+PjJdfDApKWdBKGtbSj4+Ml18MCxrW3Q+PjJdfDApfDA7aWYoa1t6Pj4yXXwwKWlBKGtbSj4+Ml18MCxrW3o+PjJdfDApO0k9c3goa1tKPj4yXXwwLDU3LGtbKGtbcz4+Ml18MCkrMjg+PjJdfDAsa1t0Pj4yXXwwKXwwO2tbdj4+Ml09STtpZigoa1tCPj4yXXwwKT4xKXtJPWVBKGtbSj4+Ml18MCl8MDtrW3k+PjJdPUl9ZWxzZSBrW3k+PjJdPWtbdD4+Ml07a1tBPj4yXT0wO3doaWxlKDEpe2lmKChrW0E+PjJdfDApPj0oa1tCPj4yXXwwKSlicmVhaztJPUZ4KGtbcT4+Ml18MCl8MDtrW0Y+PjJdPUk7ST16QihrW0U+PjJdfDAsa1tBPj4yXXwwKXwwO2tbQz4+Ml09STtJPXB5KGtbcT4+Ml18MCxrW0M+PjJdfDApfDA7a1tEPj4yXT1JO3R4KGtbSj4+Ml18MCw5NixrWyhrW3M+PjJdfDApKzI4Pj4yXXwwLGtbQT4+Ml18MCxrW0Y+PjJdfDApfDA7d3goa1tKPj4yXXwwLDM2LChrW0c+PjJdfDApKyhrW0E+PjJdfDApfDAsa1t5Pj4yXXwwLGtbRj4+Ml18MCxrW0Q+PjJdfDAsLTQpfDA7SHgoa1txPj4yXXwwLGtbRj4+Ml18MCk7a1tBPj4yXT0oa1tBPj4yXXwwKSsxfXN4KGtbSj4+Ml18MCwxMywwLGtbdT4+Ml18MCl8MDtpZigoa1tCPj4yXXwwKT4xKXtpQShrW0o+PjJdfDAsa1t5Pj4yXXwwKTtzeChrW0o+PjJdfDAsNyxrWyhrW3M+PjJdfDApKzI4Pj4yXXwwLChrW3Y+PjJdfDApKzF8MCl8MDtzeChrW0o+PjJdfDAsMTMsMCxrW3Q+PjJdfDApfDB9aEEoa1tKPj4yXXwwLGtbdz4+Ml18MCl9d2hpbGUoMCk7aWYoKGtbRz4+Ml18MCkhPShrW0g+PjJdfDApKUh4KGtbcT4+Ml18MCxrW0c+PjJdfDApO0lBKGtbcT4+Ml18MCl9Ymcoa1trW3E+PjJdPj4yXXwwLGtbeD4+Ml18MCk7Ymcoa1trW3E+PjJdPj4yXXwwLGtbSz4+Ml18MCk7cj1MO3JldHVybn1mdW5jdGlvbiBwQihhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscz0wO3M9cjtyPXIrMjI0fDA7Zj1zKzIxNnwwO2c9cysyMTJ8MDtoPXMrMjA4fDA7aj1zKzIwNHwwO2w9cysyMDB8MDtvPXMrMTUyfDA7bT1zKzEwNHwwO249cys1NnwwO3A9cys4fDA7cT1zO2tbZj4+Ml09YTtrW2c+PjJdPWI7a1toPj4yXT1jO2tbaj4+Ml09ZDtrW2w+PjJdPWU7a1txPj4yXT0wO2M9bTtiPWMrNDh8MDtkb3trW2M+PjJdPTA7Yz1jKzR8MH13aGlsZSgoY3wwKTwoYnwwKSk7Yz1uO2I9Yys0OHwwO2Rve2tbYz4+Ml09MDtjPWMrNHwwfXdoaWxlKChjfDApPChifDApKTtjPW87Yj1jKzQ4fDA7ZG97a1tjPj4yXT0wO2M9Yys0fDB9d2hpbGUoKGN8MCk8KGJ8MCkpO2M9cDtlPWtbKGtbZz4+Ml18MCkrMTI+PjJdfDA7Yj1jKzQ4fDA7ZG97a1tjPj4yXT1rW2U+PjJdO2M9Yys0fDA7ZT1lKzR8MH13aGlsZSgoY3wwKTwoYnwwKSk7aVtvPj4wXT0yODtrW28rMTI+PjJdPW07a1tvKzE2Pj4yXT1uO2lbbT4+MF09NDE7a1ttKzEyPj4yXT1wO2tbbSsxNj4+Ml09a1trWyhrWyhrW2c+PjJdfDApKzIwPj4yXXwwKSs0Pj4yXT4+Ml07aVtuPj4wXT0zOTtrW24rMTI+PjJdPXA7a1tuKzE2Pj4yXT1rWyhrWyhrWyhrW2c+PjJdfDApKzIwPj4yXXwwKSs0Pj4yXXwwKSsyMD4+Ml07ckIocCxxQihrW2Y+PjJdfDAscCxxKXwwKTtpZihrW2o+PjJdfDApe2ljW2tbaj4+Ml0mMjU1XShrW2Y+PjJdfDAsbyxrW2g+PjJdfDAsa1tsPj4yXXwwKTtwPWtbZj4+Ml18MDtxPWtbcT4+Ml18MDtIeChwLHEpO3I9cztyZXR1cm59ZWxzZXtwPXArNHwwO2tbcD4+Ml09a1twPj4yXXwxO2FCKGtbZj4+Ml18MCxvLGtbaD4+Ml18MCl8MDtwPWtbZj4+Ml18MDtxPWtbcT4+Ml18MDtIeChwLHEpO3I9cztyZXR1cm59fWZ1bmN0aW9uIHFCKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxpPTAsaj0wO2o9cjtyPXIrMzJ8MDtlPWorMjB8MDtmPWorMTZ8MDtkPWorMTJ8MDtoPWorOHwwO2k9ais0fDA7Zz1qO2tbZT4+Ml09YTtrW2Y+PjJdPWI7a1tkPj4yXT1jO2M9bXooa1tmPj4yXXwwKXwwO2tbaT4+Ml09YztpZigoa1tpPj4yXXwwKT09MSl7aT1oQihrW2U+PjJdfDAsa1tmPj4yXXwwLGtbZD4+Ml18MCl8MDtrW2g+PjJdPWk7aT1rW2g+PjJdfDA7cj1qO3JldHVybiBpfDB9a1trW2Q+PjJdPj4yXT0wO2Q9a1tlPj4yXXwwO2lmKChsW2tbZj4+Ml0+PjBdfDB8MCk9PTExOSl7aT1uQihkLGtbZj4+Ml18MCwwLDApfDA7a1toPj4yXT1pO2k9a1toPj4yXXwwO3I9ajtyZXR1cm4gaXwwfWtbaD4+Ml09KGtbZCs0ND4+Ml18MCkrMTtjPShrW2U+PjJdfDApKzQ0fDA7a1tjPj4yXT0oa1tjPj4yXXwwKSsoa1tpPj4yXXwwKTtrW2c+PjJdPTA7d2hpbGUoMSl7aWYoKGtbZz4+Ml18MCk+PShrW2k+PjJdfDApKWJyZWFrOyRBKGtbZT4+Ml18MCxrWyhrWyhrWyhrW2Y+PjJdfDApKzIwPj4yXXwwKSs0Pj4yXXwwKSsoKGtbZz4+Ml18MCkqMjB8MCk+PjJdfDAsKGtbZz4+Ml18MCkrKGtbaD4+Ml18MCl8MCk7a1tnPj4yXT0oa1tnPj4yXXwwKSsxfWk9a1toPj4yXXwwO3I9ajtyZXR1cm4gaXwwfWZ1bmN0aW9uIHJCKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wO2M9cjtyPXIrMTZ8MDtkPWMrNHwwO2U9YztrW2Q+PjJdPWE7a1tlPj4yXT1iO2lbKGtbZD4+Ml18MCkrMzg+PjBdPWlba1tkPj4yXT4+MF18MDtpW2tbZD4+Ml0+PjBdPS05OTtrWyhrW2Q+PjJdfDApKzI4Pj4yXT1rW2U+PjJdO2E9KGtbZD4+Ml18MCkrNHwwO2tbYT4+Ml09a1thPj4yXSYtNDA5NztyPWM7cmV0dXJufWZ1bmN0aW9uIHNCKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaT0wLGo9MCxtPTAsbj0wLG89MCxwPTAscT0wLHM9MCx0PTAsdT0wO3U9cjtyPXIrNDh8MDtlPXUrNDR8MDtmPXUrNDB8MDtnPXUrMzZ8MDtoPXUrMzJ8MDtzPXUrMjh8MDttPXUrMjR8MDtwPXUrMjB8MDtxPXUrMTZ8MDtuPXUrMTJ8MDtvPXUrOHwwO2k9dSs0fDA7aj11O2tbZT4+Ml09YTtrW2Y+PjJdPWI7a1tnPj4yXT1jO2tbaD4+Ml09ZDtrW3M+PjJdPWtbKGtbZT4+Ml18MCkrOD4+Ml07a1ttPj4yXT0wO2tbcD4+Ml09MDtrW3E+PjJdPTA7aWYoKGtbcz4+Ml18MCk9PTB8KGtbZj4+Ml18MCk9PTApe3I9dTtyZXR1cm59a1ttPj4yXT0oKGxba1tmPj4yXT4+MF18MCkrMF4xKS0wO2E6ZG8gc3dpdGNoKGxba1tmPj4yXT4+MF18MHwwKXtjYXNlIDI4OntzQihrW2U+PjJdfDAsa1soa1tmPj4yXXwwKSsxMj4+Ml18MCxrW2c+PjJdfDAsa1toPj4yXXwwKTtLQShrW2U+PjJdfDApO3NCKGtbZT4+Ml18MCxrWyhrW2Y+PjJdfDApKzE2Pj4yXXwwLGtbZz4+Ml18MCxrW2g+PjJdfDApO0lBKGtbZT4+Ml18MCk7YnJlYWt9Y2FzZSAyNzp7bz1lQShrW3M+PjJdfDApfDA7a1tpPj4yXT1vO3RCKGtbZT4+Ml18MCxrWyhrW2Y+PjJdfDApKzEyPj4yXXwwLGtbaT4+Ml18MCxrW2g+PjJdXjE2KTtLQShrW2U+PjJdfDApO3NCKGtbZT4+Ml18MCxrWyhrW2Y+PjJdfDApKzE2Pj4yXXwwLGtbZz4+Ml18MCxrW2g+PjJdfDApO2lBKGtbcz4+Ml18MCxrW2k+PjJdfDApO0lBKGtbZT4+Ml18MCk7YnJlYWt9Y2FzZSAxOTp7dEIoa1tlPj4yXXwwLGtbKGtbZj4+Ml18MCkrMTI+PjJdfDAsa1tnPj4yXXwwLGtbaD4+Ml18MCk7YnJlYWt9Y2FzZSAxNDg6Y2FzZSAyOTp7a1ttPj4yXT0obFtrW2Y+PjJdPj4wXXwwfDApPT0yOT8zNjozNztrW2g+PjJdPTEyODt0PTc7YnJlYWt9Y2FzZSAzNzpjYXNlIDM2OmNhc2UgNDE6Y2FzZSAzODpjYXNlIDM5OmNhc2UgNDA6e3Q9NzticmVha31jYXNlIDM1OmNhc2UgMzQ6e289aEIoa1tlPj4yXXwwLGtbKGtbZj4+Ml18MCkrMTI+PjJdfDAscCl8MDtrW24+PjJdPW87c3goa1tzPj4yXXwwLGtbbT4+Ml18MCxrW24+PjJdfDAsa1tnPj4yXXwwKXwwO2JyZWFrfWNhc2UgMzI6e3BCKGtbZT4+Ml18MCxrW2Y+PjJdfDAsa1tnPj4yXXwwLDEzMyxrW2g+PjJdfDApO2JyZWFrfWNhc2UgMzM6aWYoa1toPj4yXXwwKXtvQihrW2U+PjJdfDAsa1tmPj4yXXwwLGtbZz4+Ml18MCxrW2c+PjJdfDApO2JyZWFrIGF9ZWxzZXtvPWVBKGtbcz4+Ml18MCl8MDtrW2o+PjJdPW87b0Ioa1tlPj4yXXwwLGtbZj4+Ml18MCxrW2c+PjJdfDAsa1tqPj4yXXwwKTtpQShrW3M+PjJdfDAsa1tqPj4yXXwwKTticmVhayBhfWRlZmF1bHQ6dD0xNH13aGlsZSgwKTtpZigodHwwKT09NylpZihmQihrWyhrW2Y+PjJdfDApKzEyPj4yXXwwKXwwKXQ9MTQ7ZWxzZXtzPWhCKGtbZT4+Ml18MCxrWyhrW2Y+PjJdfDApKzEyPj4yXXwwLHApfDA7a1tuPj4yXT1zO3M9aEIoa1tlPj4yXXwwLGtbKGtbZj4+Ml18MCkrMTY+PjJdfDAscSl8MDtrW28+PjJdPXM7aUIoa1tlPj4yXXwwLGtbKGtbZj4+Ml18MCkrMTI+PjJdfDAsa1soa1tmPj4yXXwwKSsxNj4+Ml18MCxrW20+PjJdfDAsa1tuPj4yXXwwLGtbbz4+Ml18MCxrW2c+PjJdfDAsa1toPj4yXXwwKXwwfWRvIGlmKCh0fDApPT0xNCl7aWYoSHooa1tmPj4yXXwwKXwwKXtnQShrW3M+PjJdfDAsa1tnPj4yXXwwKXwwO2JyZWFrfWlmKCEodUIoa1tmPj4yXXwwKXwwKSl7dD1oQihrW2U+PjJdfDAsa1tmPj4yXXwwLHApfDA7a1tuPj4yXT10O3R4KGtbcz4+Ml18MCwyMixrW24+PjJdfDAsa1tnPj4yXXwwLChrW2g+PjJdfDApIT0wJjEpfDB9fXdoaWxlKDApO0h4KGtbZT4+Ml18MCxrW3A+PjJdfDApO0h4KGtbZT4+Ml18MCxrW3E+PjJdfDApO3I9dTtyZXR1cm59ZnVuY3Rpb24gdEIoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxpPTAsaj0wLG09MCxuPTAsbz0wLHA9MCxxPTAscz0wLHQ9MCx1PTAsdj0wO3Y9cjtyPXIrNjR8MDtlPXYrNDh8MDtmPXYrNDR8MDtnPXYrNDB8MDtoPXYrMzZ8MDt0PXYrMzJ8MDtuPXYrMjh8MDtxPXYrMjR8MDtzPXYrMjB8MDtvPXYrMTZ8MDtwPXYrMTJ8MDtpPXYrOHwwO2o9dis0fDA7bT12O2tbZT4+Ml09YTtrW2Y+PjJdPWI7a1tnPj4yXT1jO2tbaD4+Ml09ZDtrW3Q+PjJdPWtbKGtbZT4+Ml18MCkrOD4+Ml07a1tuPj4yXT0wO2tbcT4+Ml09MDtrW3M+PjJdPTA7aWYoKGtbdD4+Ml18MCk9PTB8KGtbZj4+Ml18MCk9PTApe3I9djtyZXR1cm59a1tuPj4yXT1sW2tbZj4+Ml0+PjBdO3N3aXRjaChrW24+PjJdfDApe2Nhc2UgMjg6e3A9ZUEoa1t0Pj4yXXwwKXwwO2tbaT4+Ml09cDtzQihrW2U+PjJdfDAsa1soa1tmPj4yXXwwKSsxMj4+Ml18MCxrW2k+PjJdfDAsa1toPj4yXV4xNik7S0Eoa1tlPj4yXXwwKTt0QihrW2U+PjJdfDAsa1soa1tmPj4yXXwwKSsxNj4+Ml18MCxrW2c+PjJdfDAsa1toPj4yXXwwKTtpQShrW3Q+PjJdfDAsa1tpPj4yXXwwKTtJQShrW2U+PjJdfDApO2JyZWFrfWNhc2UgMjc6e3RCKGtbZT4+Ml18MCxrWyhrW2Y+PjJdfDApKzEyPj4yXXwwLGtbZz4+Ml18MCxrW2g+PjJdfDApO0tBKGtbZT4+Ml18MCk7dEIoa1tlPj4yXXwwLGtbKGtbZj4+Ml18MCkrMTY+PjJdfDAsa1tnPj4yXXwwLGtbaD4+Ml18MCk7SUEoa1tlPj4yXXwwKTticmVha31jYXNlIDE5OntzQihrW2U+PjJdfDAsa1soa1tmPj4yXXwwKSsxMj4+Ml18MCxrW2c+PjJdfDAsa1toPj4yXXwwKTticmVha31jYXNlIDE0ODpjYXNlIDI5OntrW24+PjJdPShrW24+PjJdfDApPT0yOT8zNzozNjtrW2g+PjJdPTEyODt1PTc7YnJlYWt9Y2FzZSAzNzpjYXNlIDM2OmNhc2UgNDE6Y2FzZSAzODpjYXNlIDM5OmNhc2UgNDA6e3U9NzticmVha31jYXNlIDM1OmNhc2UgMzQ6e3A9aEIoa1tlPj4yXXwwLGtbKGtbZj4+Ml18MCkrMTI+PjJdfDAscSl8MDtrW28+PjJdPXA7c3goa1t0Pj4yXXwwLGtbbj4+Ml18MCxrW28+PjJdfDAsa1tnPj4yXXwwKXwwO2JyZWFrfWNhc2UgMzI6e3BCKGtbZT4+Ml18MCxrW2Y+PjJdfDAsa1tnPj4yXXwwLDEzNCxrW2g+PjJdfDApO2JyZWFrfWNhc2UgMzM6e3A9ZUEoa1t0Pj4yXXwwKXwwO2tbaj4+Ml09cDtrW20+PjJdPShrW2g+PjJdfDApIT0wP2tbZz4+Ml18MDprW2o+PjJdfDA7b0Ioa1tlPj4yXXwwLGtbZj4+Ml18MCxrW2o+PjJdfDAsa1ttPj4yXXwwKTtnQShrW3Q+PjJdfDAsa1tnPj4yXXwwKXwwO2lBKGtbdD4+Ml18MCxrW2o+PjJdfDApO2JyZWFrfWRlZmF1bHQ6dT0xMn1pZigodXwwKT09NylpZihmQihrWyhrW2Y+PjJdfDApKzEyPj4yXXwwKXwwKXU9MTI7ZWxzZXt0PWhCKGtbZT4+Ml18MCxrWyhrW2Y+PjJdfDApKzEyPj4yXXwwLHEpfDA7a1tvPj4yXT10O3Q9aEIoa1tlPj4yXXwwLGtbKGtbZj4+Ml18MCkrMTY+PjJdfDAscyl8MDtrW3A+PjJdPXQ7aUIoa1tlPj4yXXwwLGtbKGtbZj4+Ml18MCkrMTI+PjJdfDAsa1soa1tmPj4yXXwwKSsxNj4+Ml18MCxrW24+PjJdfDAsa1tvPj4yXXwwLGtbcD4+Ml18MCxrW2c+PjJdfDAsa1toPj4yXXwwKXwwfWRvIGlmKCh1fDApPT0xMil7aWYodUIoa1tmPj4yXXwwKXwwKXtnQShrW3Q+PjJdfDAsa1tnPj4yXXwwKXwwO2JyZWFrfWlmKCEoSHooa1tmPj4yXXwwKXwwKSl7dT1oQihrW2U+PjJdfDAsa1tmPj4yXXwwLHEpfDA7a1tvPj4yXT11O3R4KGtbdD4+Ml18MCwyMSxrW28+PjJdfDAsa1tnPj4yXXwwLChrW2g+PjJdfDApIT0wJjEpfDB9fXdoaWxlKDApO0h4KGtbZT4+Ml18MCxrW3E+PjJdfDApO0h4KGtbZT4+Ml18MCxrW3M+PjJdfDApO3I9djtyZXR1cm59ZnVuY3Rpb24gdUIoYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wLGU9MDtlPXI7cj1yKzE2fDA7Yj1lKzh8MDtjPWUrNHwwO2Q9ZTtrW2M+PjJdPWE7a1tkPj4yXT0wO2RvIGlmKCEoa1soa1tjPj4yXXwwKSs0Pj4yXSYxKSlpZihQeShrW2M+PjJdfDAsZCl8MCl7a1tiPj4yXT0oa1tkPj4yXXwwKSE9MCYxO2JyZWFrfWVsc2V7a1tiPj4yXT0wO2JyZWFrfWVsc2Uga1tiPj4yXT0wO3doaWxlKDApO3I9ZTtyZXR1cm4ga1tiPj4yXXwwfWZ1bmN0aW9uIHZCKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wO2g9cjtyPXIrMzJ8MDtnPWg7ZD1oKzE2fDA7Yz1oKzEyfDA7ZT1oKzh8MDtmPWgrNHwwO2tbYz4+Ml09YTtrW2U+PjJdPWI7Yj1teihrWyhrW2U+PjJdfDApKzEyPj4yXXwwKXwwO2tbZj4+Ml09YjtiPWtbZj4+Ml18MDtpZihrWyhrW2U+PjJdfDApKzQ+PjJdJjIwNDgpe2lmKChifDApIT0oa1trW2tbKGtbZT4+Ml18MCkrMjA+PjJdPj4yXT4+Ml18MCkpe21CKGtbYz4+Ml18MCxrW2tba1soa1tlPj4yXXwwKSsyMD4+Ml0+PjJdPj4yXXwwLGtbZj4+Ml18MCk7a1tkPj4yXT0xO2c9a1tkPj4yXXwwO3I9aDtyZXR1cm4gZ3wwfX1lbHNlIGlmKChifDApIT0xKXtiPWtbYz4+Ml18MDtpZihrWyhrWyhrW2U+PjJdfDApKzEyPj4yXXwwKSs0Pj4yXSYyMDQ4KW1CKGIsa1tmPj4yXXwwLDEpO2Vsc2UgT2goYiwyOTgzOCxnKTtrW2Q+PjJdPTE7Zz1rW2Q+PjJdfDA7cj1oO3JldHVybiBnfDB9a1tkPj4yXT0wO2c9a1tkPj4yXXwwO3I9aDtyZXR1cm4gZ3wwfWZ1bmN0aW9uIHdCKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxsPTAsbT0wLG49MDtuPXI7cj1yKzQ4fDA7ZD1uKzI4fDA7Yz1uKzI0fDA7aj1uKzIwfDA7Zz1uKzE2fDA7bD1uKzEyfDA7bT1uKzh8MDtmPW4rNHwwO2g9bjtlPW4rMzJ8MDtrW2Q+PjJdPWE7a1tjPj4yXT1iO2tbaj4+Ml09a1soa1tjPj4yXXwwKSsxMj4+Ml07YT1teihrW2o+PjJdfDApfDA7a1tnPj4yXT1hO2lmKGtbKGtbYz4+Ml18MCkrND4+Ml0mMjA0OCljPWtbKGtbYz4+Ml18MCkrMjA+PjJdfDA7ZWxzZSBjPTA7a1tsPj4yXT1jO2E9KGtbZz4+Ml18MCkrMXwwO2Q9Q2goa1trW2Q+PjJdPj4yXXwwLGEsKChhfDApPDApPDwzMT4+MzEpfDA7a1ttPj4yXT1kO2lmKCEoa1ttPj4yXXwwKSl7bT1rW20+PjJdfDA7cj1uO3JldHVybiBtfDB9a1tmPj4yXT0wO3doaWxlKDEpe2lmKChrW2Y+PjJdfDApPj0oa1tnPj4yXXwwKSlicmVhaztkPXpCKGtbaj4+Ml18MCxrW2Y+PjJdfDApfDA7a1toPj4yXT1kO2Q9b3koa1toPj4yXXwwKXwwO2lbZT4+MF09ZDtpZihrW2w+PjJdfDApe2Q9QkIoa1soa1soa1trW2w+PjJdPj4yXXwwKSs0Pj4yXXwwKSsoKGtbZj4+Ml18MCkqMjB8MCk+PjJdfDAsaVtlPj4wXXwwKXwwO2lbKGtbbT4+Ml18MCkrKGtbZj4+Ml18MCk+PjBdPWR9ZWxzZSBpWyhrW20+PjJdfDApKyhrW2Y+PjJdfDApPj4wXT1pW2U+PjBdfDA7a1tmPj4yXT0oa1tmPj4yXXwwKSsxfWlbKGtbbT4+Ml18MCkrKGtbZz4+Ml18MCk+PjBdPTA7bT1rW20+PjJdfDA7cj1uO3JldHVybiBtfDB9ZnVuY3Rpb24geEIoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsbj0wLG89MCxwPTAscT0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wLEU9MCxGPTAsRz0wLEg9MCxJPTAsSj0wLEs9MCxNPTAsTj0wLE89MCxQPTAsUT0wLFI9MCxTPTAsVD0wLFU9MCxWPTAsVz0wLFg9MDtYPXI7cj1yKzE2MHwwO1c9WCsxNnwwO2Y9WCsxNDB8MDtnPVgrMTM2fDA7aD1YKzEzMnwwO249WCsxMjh8MDtvPVgrMTI0fDA7Sj1YKzEyMHwwO3U9WCsxMTZ8MDtDPVgrMTEyfDA7Rz1YKzEwOHwwO1Y9WCsxMDR8MDt2PVgrMTAwfDA7Sz1YKzk2fDA7dD1YKzkyfDA7Uz1YKzg4fDA7Qj1YKzE0NHwwO009WCs4NHwwO0k9WCs4MHwwO3k9WCs3NnwwO049WCs3MnwwO3A9WCs2OHwwO3c9WCs2NHwwO089WCs2MHwwO0E9WCs1NnwwO0Q9WCsxNDd8MDtxPVgrMTQ2fDA7cz1YKzh8MDtGPVg7UD1YKzUyfDA7Uj1YKzQ4fDA7UT1YKzQ0fDA7RT1YKzQwfDA7ej1YKzM2fDA7VT1YKzMyfDA7VD1YKzI4fDA7eD1YKzI0fDA7SD1YKzIwfDA7a1tmPj4yXT1hO2tbZz4+Ml09YjtrW2g+PjJdPWM7a1tuPj4yXT1kO2tbbz4+Ml09ZTtrW3U+PjJdPTA7Yj0oa1tmPj4yXXwwKSs0MHwwO2Q9a1tiPj4yXXwwO2tbYj4+Ml09ZCsxO2tbQz4+Ml09ZDtkPW54KGtbZj4+Ml18MCl8MDtrW1Y+PjJdPWQ7a1tHPj4yXT0oa1toPj4yXSY0fDApIT0wJjE7aWYoKGtbbj4+Ml18MCkhPTA/KGtbKGtbZz4+Ml18MCkrND4+Ml0mMjA0OHwwKSE9MDowKXtrW0s+PjJdPWtba1soa1tnPj4yXXwwKSsyMD4+Ml0+PjJdO2tbdj4+Ml09MDt3aGlsZSgxKXtpZigoa1t2Pj4yXXwwKT49KGtba1tLPj4yXT4+Ml18MCkpYnJlYWs7aWYoeUIoa1soa1soa1tLPj4yXXwwKSs0Pj4yXXwwKSsoKGtbdj4+Ml18MCkqMjB8MCk+PjJdfDApfDApYnJlYWs7a1t2Pj4yXT0oa1t2Pj4yXXwwKSsxfWlmKChrW3Y+PjJdfDApPT0oa1trW0s+PjJdPj4yXXwwKSlrW24+PjJdPTB9YTpkbyBpZigoa1soa1tmPj4yXXwwKSszNj4+Ml18MCk9PTA/KGQ9QUIoa1tnPj4yXXwwKXwwLGtbSj4+Ml09ZCwoZHwwKSE9MCk6MCl7a1t0Pj4yXT1rW2tbZj4+Ml0+PjJdO2tbTT4+Ml09a1trW0o+PjJdPj4yXTtrW0k+PjJdPWtba1tNPj4yXT4+Ml07a1tTPj4yXT1rWyhrWyhrW0o+PjJdfDApKzI4Pj4yXXwwKSs4KzE2Pj4yXTtkPShQaChrW3Q+PjJdfDAsa1soa1tTPj4yXXwwKSs2ND4+Ml18MCl8MCkmNjU1MzU7altCPj4xXT1kO0N4KGtbZj4+Ml18MCxqW0I+PjFdfDApO2JBKGtbZj4+Ml18MCxqW0I+PjFdfDAsa1soa1tTPj4yXXwwKSsyOD4+Ml18MCwwLGtba1tTPj4yXT4+Ml18MCk7aWYoKGtbST4+Ml18MCk9PTE/KGpbKGtba1soa1tNPj4yXXwwKSs0Pj4yXT4+Ml18MCkrMzI+PjFdfDApPDA6MCl7Vz1weChrW1Y+PjJdfDAsMjApfDA7a1t5Pj4yXT1XO2NBKGtbZj4+Ml18MCxrW0M+PjJdfDAsaltCPj4xXXwwLGtbUz4+Ml18MCwxMDQpO2tbdT4+Ml09MTtoQShrW1Y+PjJdfDAsa1t5Pj4yXXwwKTticmVha31rW3A+PjJdPTE7a1t3Pj4yXT0wO3doaWxlKDEpe2lmKCEoKGtbdz4+Ml18MCk8KGtbST4+Ml18MCk/KGtbcD4+Ml18MCkhPTA6MCkpYnJlYWs7ZD16QihrWyhrW2c+PjJdfDApKzEyPj4yXXwwLGtbdz4+Ml18MCl8MDtrW08+PjJdPWQ7a1tBPj4yXT1qWyhrWyhrWyhrW00+PjJdfDApKzQ+PjJdfDApKygoa1t3Pj4yXXwwKSoyMHwwKT4+Ml18MCkrMzI+PjFdO2Q9dnkoa1tTPj4yXXwwLGtbQT4+Ml18MCl8MDtpW0Q+PjBdPWQ7ZD1CQihrW08+PjJdfDAsaVtEPj4wXXwwKXwwO2lbcT4+MF09ZDtpZigoKGlbcT4+MF18MCkrLTY1fDApPj4+MD49MilrW3A+PjJdPShpW0Q+PjBdfDApPj02NyYxO2tbdz4+Ml09KGtbdz4+Ml18MCkrMX1pZihrW3A+PjJdfDApe2tbTj4+Ml09a1soa1tTPj4yXXwwKSs4Pj4yXTt3aGlsZSgxKXtpZighKChrW04+PjJdfDApIT0wPyhrW3U+PjJdfDApPT0wOjApKWJyZWFrIGE7ZG8gaWYoKG1bKGtbTj4+Ml18MCkrNTI+PjFdfDApPj0oa1tJPj4yXXwwKT8obVsoa1tOPj4yXXwwKSs1Mj4+MV18MCk8NjM6MCl7aWYoa1tHPj4yXXwwKXtpZigobVsoa1tOPj4yXXwwKSs1MD4+MV18MCk+KGtbST4+Ml18MCkpYnJlYWs7aWYoKG1bKGtbTj4+Ml18MCkrNTI+PjFdfDApPihrW0k+PjJdfDApPyhsWyhrW04+PjJdfDApKzU0Pj4wXXwwKT09MDowKWJyZWFrfWQ9cztrW2Q+PjJdPTA7a1tkKzQ+PjJdPTA7a1t3Pj4yXT0wO3doaWxlKDEpe2lmKChrW3c+PjJdfDApPj0oa1tJPj4yXXwwKSlicmVhaztkPXpCKGtbKGtbZz4+Ml18MCkrMTI+PjJdfDAsa1t3Pj4yXXwwKXwwO2tbUD4+Ml09ZDtrW1I+PjJdPWtbKGtbKGtbTT4+Ml18MCkrND4+Ml18MCkrKChrW3c+PjJdfDApKjIwfDApPj4yXTtkPUNCKGtbZj4+Ml18MCxrW1A+PjJdfDAsa1tSPj4yXXwwKXwwO2tbUT4+Ml09ZDtrW0U+PjJdPTA7d2hpbGUoMSl7aWYoKGtbRT4+Ml18MCk+PShrW0k+PjJdfDApKWJyZWFrO2lmKChqWyhrWyhrW04+PjJdfDApKzQ+PjJdfDApKyhrW0U+PjJdPDwxKT4+MV18MCk9PShqWyhrW1I+PjJdfDApKzMyPj4xXXwwKSl7aWYoIShrW1E+PjJdfDApKWJyZWFrO2lmKCEoc2coa1trW1E+PjJdPj4yXXwwLGtbKGtbKGtbTj4+Ml18MCkrMzI+PjJdfDApKyhrW0U+PjJdPDwyKT4+Ml18MCl8MCkpYnJlYWt9a1tFPj4yXT0oa1tFPj4yXXwwKSsxfWlmKChrW0U+PjJdfDApPT0oa1tJPj4yXXwwKSlicmVhaztkPWVTKDEsMCxrW0U+PjJdfDApfDA7Yj1GO2tbYj4+Ml09ZDtrW2IrND4+Ml09TDtiPUY7ZD1zO2lmKChrW2I+PjJdJmtbZD4+Ml18MCkhPTA/MTooa1tiKzQ+PjJdJmtbZCs0Pj4yXXwwKSE9MClicmVhaztTPUY7YT1zO2I9a1thKzQ+PjJdfGtbUys0Pj4yXTtkPXM7a1tkPj4yXT1rW2E+PjJdfGtbUz4+Ml07a1tkKzQ+PjJdPWI7aWYoa1tvPj4yXXwwKWtbKGtbbz4+Ml18MCkrKGtbdz4+Ml08PDIpPj4yXT1rW0U+PjJdO2tbdz4+Ml09KGtbdz4+Ml18MCkrMX1kPXM7Uz1rW2Q+PjJdfDA7ZD1rW2QrND4+Ml18MDtiPWVTKDEsMCxrW0k+PjJdfDApfDA7Yj1fUihifDAsTHwwLDEsMCl8MDtpZigoU3wwKT09KGJ8MCkmKGR8MCk9PShMfDApKXtiPXB4KGtbVj4+Ml18MCwyMCl8MDtrW3o+PjJdPWI7Yj1rW1Y+PjJdfDA7ZD1rW3Q+PjJdfDA7a1tXPj4yXT1rW2tbTj4+Ml0+PjJdO3d4KGIsMTYyLDAsMCwwLFFoKGQsMzExNjYsVyl8MCwtMSl8MDt0eChrW1Y+PjJdfDAsMTA0LGtbQz4+Ml18MCxrWyhrW04+PjJdfDApKzQ0Pj4yXXwwLGpbQj4+MV18MCl8MDtkQShrW2Y+PjJdfDAsa1tOPj4yXXwwKTtrW3U+PjJdPTMrKGxba1soa1tOPj4yXXwwKSsyOD4+Ml0+PjBdfDApO2lmKChrW24+PjJdfDApIT0wPyhiPShrW2Y+PjJdfDApKzQ0fDAsZD0oa1tiPj4yXXwwKSsxfDAsa1tiPj4yXT1kLGtba1tuPj4yXT4+Ml09ZCwoa1tJPj4yXXwwKT09MSk6MClEQihrW1Y+PjJdfDAsa1tDPj4yXXwwLGtba1tuPj4yXT4+Ml18MCk7aEEoa1tWPj4yXXwwLGtbej4+Ml18MCl9fXdoaWxlKDApO2tbTj4+Ml09a1soa1tOPj4yXXwwKSsyMD4+Ml19fX13aGlsZSgwKTtkbyBpZigoKGtbdT4+Ml18MCk9PTA/KGtbaD4+Ml0mMXwwKSE9MDowKT8oa1soa1tnPj4yXXwwKSs0Pj4yXSYyMDQ4fDApPT0wOjApe2lmKChFQihrW2c+PjJdfDApfDApIT0wPyhrW2tbKGtbZz4+Ml18MCkrMjA+PjJdPj4yXXwwKT4yOjApYnJlYWs7a1t1Pj4yXT01fXdoaWxlKDApO2lmKCEoa1t1Pj4yXXwwKSl7a1tVPj4yXT1rWyhrW2Y+PjJdfDApKzEzNj4+Ml07a1tUPj4yXT0wO2tbdT4+Ml09MjtpZihrW2g+PjJdJjQpe2tbKGtbZj4+Ml18MCkrMTM2Pj4yXT0wO2lmKChqWyhrWyhrW2c+PjJdfDApKzEyPj4yXXwwKSszMj4+MV18MCk8MD8oa1soa1tnPj4yXXwwKSs0Pj4yXSYyMDQ4fDApPT0wOjApa1t1Pj4yXT0xfWVsc2UgaWYoa1tuPj4yXXwwKXtWPShrW2Y+PjJdfDApKzQ0fDA7Vz0oa1tWPj4yXXwwKSsxfDA7a1tWPj4yXT1XO2tbVD4+Ml09VztrW2tbbj4+Ml0+PjJdPVd9bkIoa1tmPj4yXXwwLGtbZz4+Ml18MCxrW1Q+PjJdfDAsKGtbdT4+Ml18MCk9PTEmMSl8MDtrWyhrW2Y+PjJdfDApKzEzNj4+Ml09a1tVPj4yXX1lbHNlIGtbKGtbZz4+Ml18MCkrMjg+PjJdPWtbQz4+Ml07aWYoISgoa1tvPj4yXXwwKSE9MCYoa1t1Pj4yXXwwKSE9MyYoa1t1Pj4yXXwwKSE9NCkpe1c9a1t1Pj4yXXwwO3I9WDtyZXR1cm4gV3wwfVc9bXooa1soa1tnPj4yXXwwKSsxMj4+Ml18MCl8MDtrW0g+PjJdPVc7a1t4Pj4yXT0wO3doaWxlKDEpe2lmKChrW3g+PjJdfDApPj0oa1tIPj4yXXwwKSlicmVhaztrWyhrW28+PjJdfDApKyhrW3g+PjJdPDwyKT4+Ml09a1t4Pj4yXTtrW3g+PjJdPShrW3g+PjJdfDApKzF9Vz1rW3U+PjJdfDA7cj1YO3JldHVybiBXfDB9ZnVuY3Rpb24geUIoYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wLGU9MCxmPTA7Zj1yO3I9cisxNnwwO2U9Zis0fDA7Yz1mO2Q9Zis4fDA7a1tjPj4yXT1hO3doaWxlKDEpe2lmKChsW2tbYz4+Ml0+PjBdfDApPT0xNTYpYj0xO2Vsc2UgYj0obFtrW2M+PjJdPj4wXXwwKT09MTU1O2E9a1tjPj4yXXwwO2lmKCFiKWJyZWFrO2tbYz4+Ml09a1thKzEyPj4yXX1pW2Q+PjBdPWlbYT4+MF18MDtpZigobFtkPj4wXXwwKT09MTU3KWlbZD4+MF09aVsoa1tjPj4yXXwwKSszOD4+MF18MDtzd2l0Y2gobFtkPj4wXXwwKXtjYXNlIDEzMzpjYXNlIDEzMjpjYXNlIDk3OmNhc2UgMTM0OntrW2U+PjJdPTA7ZT1rW2U+PjJdfDA7cj1mO3JldHVybiBlfDB9Y2FzZSAxNTI6e2lmKCEoa1soa1tjPj4yXXwwKSs0Pj4yXSYxMDQ4NTc2KSlpZigoalsoa1tjPj4yXXwwKSszMj4+MV18MCk+PTApYT0obFsoa1soa1soa1tjPj4yXXwwKSs0ND4+Ml18MCkrND4+Ml18MCkrKGpbKGtbYz4+Ml18MCkrMzI+PjFdPDw0KSsxMj4+MF18MCk9PTA7ZWxzZSBhPTA7ZWxzZSBhPTE7a1tlPj4yXT1hJjE7ZT1rW2U+PjJdfDA7cj1mO3JldHVybiBlfDB9ZGVmYXVsdDp7a1tlPj4yXT0xO2U9a1tlPj4yXXwwO3I9ZjtyZXR1cm4gZXwwfX1yZXR1cm4gMH1mdW5jdGlvbiB6QihhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTA7Zj1yO3I9cisxNnwwO2M9Zis4fDA7ZD1mKzR8MDtlPWY7a1tkPj4yXT1hO2tbZT4+Ml09YjthPShmQihrW2Q+PjJdfDApfDApIT0wO2I9a1tkPj4yXXwwO2lmKCFhKXtrW2M+PjJdPWI7ZT1rW2M+PjJdfDA7cj1mO3JldHVybiBlfDB9aWYoKGxbYj4+MF18MHwwKSE9MTE5PyhsWyhrW2Q+PjJdfDApKzM4Pj4wXXwwfDApIT0xMTk6MCl7a1tjPj4yXT1rWyhrWyhrWyhrW2Q+PjJdfDApKzIwPj4yXXwwKSs0Pj4yXXwwKSsoKGtbZT4+Ml18MCkqMjB8MCk+PjJdO2U9a1tjPj4yXXwwO3I9ZjtyZXR1cm4gZXwwfWtbYz4+Ml09a1soa1soa1trWyhrW2Q+PjJdfDApKzIwPj4yXT4+Ml18MCkrND4+Ml18MCkrKChrW2U+PjJdfDApKjIwfDApPj4yXTtlPWtbYz4+Ml18MDtyPWY7cmV0dXJuIGV8MH1mdW5jdGlvbiBBQihhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wLGk9MCxqPTA7aj1yO3I9ciszMnwwO2g9aisyOHwwO2I9aisyNHwwO2k9aisyMHwwO2Y9aisxNnwwO2Q9aisxMnwwO2c9ais4fDA7Yz1qKzR8MDtlPWo7a1tiPj4yXT1hO2RvIGlmKGtbKGtbYj4+Ml18MCkrND4+Ml0mMjA0OCl7aWYoa1soa1tiPj4yXXwwKSs0Pj4yXSYzMil7a1toPj4yXT0wO2JyZWFrfWtbaT4+Ml09a1soa1tiPj4yXXwwKSsyMD4+Ml07aWYoa1soa1tpPj4yXXwwKSs0OD4+Ml18MCl7a1toPj4yXT0wO2JyZWFrfWlmKGtbKGtbaT4+Ml18MCkrOD4+Ml0mOSl7a1toPj4yXT0wO2JyZWFrfWlmKGtbKGtbaT4+Ml18MCkrNTY+PjJdfDApe2tbaD4+Ml09MDticmVha31pZihrWyhrW2k+PjJdfDApKzMyPj4yXXwwKXtrW2g+PjJdPTA7YnJlYWt9a1tmPj4yXT1rWyhrW2k+PjJdfDApKzI4Pj4yXTtpZigoa1trW2Y+PjJdPj4yXXwwKSE9MSl7a1toPj4yXT0wO2JyZWFrfWlmKGtbKGtbZj4+Ml18MCkrOCsyMD4+Ml18MCl7a1toPj4yXT0wO2JyZWFrfWtbZz4+Ml09a1soa1tmPj4yXXwwKSs4KzE2Pj4yXTtpZigobFsoa1tnPj4yXXwwKSs0Mj4+MF18MCkmMTYpe2tbaD4+Ml09MDticmVha31rW2Q+PjJdPWtba1tpPj4yXT4+Ml07a1tjPj4yXT0wO3doaWxlKDEpe2lmKChrW2M+PjJdfDApPj0oa1trW2Q+PjJdPj4yXXwwKSl7Yj0yNDticmVha31rW2U+PjJdPWtbKGtbKGtbZD4+Ml18MCkrND4+Ml18MCkrKChrW2M+PjJdfDApKjIwfDApPj4yXTtpZigobFtrW2U+PjJdPj4wXXwwfDApIT0xNTIpe2I9MjI7YnJlYWt9a1tjPj4yXT0oa1tjPj4yXXwwKSsxfWlmKChifDApPT0yMil7a1toPj4yXT0wO2JyZWFrfWVsc2UgaWYoKGJ8MCk9PTI0KXtrW2g+PjJdPWtbaT4+Ml07YnJlYWt9fWVsc2Uga1toPj4yXT0wO3doaWxlKDApO3I9ajtyZXR1cm4ga1toPj4yXXwwfWZ1bmN0aW9uIEJCKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTA7Zj1yO3I9cisxNnwwO2M9Zis2fDA7Zz1mO2Q9Zis1fDA7ZT1mKzR8MDtrW2c+PjJdPWE7aVtkPj4wXT1iO2E9b3koa1tnPj4yXXwwKXwwO2lbZT4+MF09YTtpZigoaVtlPj4wXXwwKSE9MD8oaVtkPj4wXXwwKSE9MDowKXtpZigoaVtlPj4wXXwwKTw2Nz8oaVtkPj4wXXwwKTw2NzowKXtpW2M+PjBdPTY1O2c9aVtjPj4wXXwwO3I9ZjtyZXR1cm4gZ3wwfWlbYz4+MF09Njc7Zz1pW2M+PjBdfDA7cj1mO3JldHVybiBnfDB9aWYoKGlbZT4+MF18MCkhPTB8KGlbZD4+MF18MCkhPTApe2lbYz4+MF09KGlbZT4+MF18MCkrKGlbZD4+MF18MCk7Zz1pW2M+PjBdfDA7cj1mO3JldHVybiBnfDB9ZWxzZXtpW2M+PjBdPTY1O2c9aVtjPj4wXXwwO3I9ZjtyZXR1cm4gZ3wwfXJldHVybiAwfWZ1bmN0aW9uIENCKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MDtoPXI7cj1yKzE2fDA7ZD1oKzEyfDA7ZT1oKzh8MDtmPWgrNHwwO2c9aDtrW2Q+PjJdPWE7a1tlPj4yXT1iO2tbZj4+Ml09YztpZihrWyhrW2U+PjJdfDApKzQ+PjJdJjI1Nil7Yz1weShrW2Q+PjJdfDAsa1tlPj4yXXwwKXwwO2tbZz4+Ml09YztjPWtbZz4+Ml18MDtyPWg7cmV0dXJuIGN8MH1pZigoa1tmPj4yXXwwKSE9MD8oa1soa1tmPj4yXXwwKSs0Pj4yXSYyNTZ8MCkhPTA6MCl7Yz1weShrW2Q+PjJdfDAsa1tmPj4yXXwwKXwwO2tbZz4+Ml09YztjPWtbZz4+Ml18MDtyPWg7cmV0dXJuIGN8MH1jPXB5KGtbZD4+Ml18MCxrW2U+PjJdfDApfDA7a1tnPj4yXT1jO2lmKGtbZz4+Ml18MCl7Yz1rW2c+PjJdfDA7cj1oO3JldHVybiBjfDB9Yz1weShrW2Q+PjJdfDAsa1tmPj4yXXwwKXwwO2tbZz4+Ml09YztjPWtbZz4+Ml18MDtyPWg7cmV0dXJuIGN8MH1mdW5jdGlvbiBEQihhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTA7ZD1yO3I9cisxNnwwO2Y9ZCsxMnwwO2g9ZCs4fDA7Zz1kKzR8MDtlPWQ7a1tmPj4yXT1hO2tbaD4+Ml09YjtrW2c+PjJdPWM7c3goa1tmPj4yXXwwLDc2LDAsa1tnPj4yXXwwKXwwO2E9YUEoa1tmPj4yXXwwLDU3LGtbaD4+Ml18MCl8MDtrW2U+PjJdPWE7dHgoa1tmPj4yXXwwLDk2LGtbaD4+Ml18MCwwLGtbZz4+Ml18MCl8MDtUaChrW2Y+PjJdfDAsLTEyOCk7aEEoa1tmPj4yXXwwLGtbZT4+Ml18MCk7cj1kO3JldHVybn1mdW5jdGlvbiBFQihhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTAsZT0wO2M9cjtyPXIrMTZ8MDtkPWMrOHwwO2U9Yys0fDA7Yj1jO2tbZD4+Ml09YTtrW2U+PjJdPWtbKGtbZD4+Ml18MCkrMTI+PjJdO2tbKGtbZD4+Ml18MCkrMTI+PjJdPTA7YT1qQihrW2Q+PjJdfDApfDA7a1tiPj4yXT1hO2tbKGtbZD4+Ml18MCkrMTI+PjJdPWtbZT4+Ml07cj1jO3JldHVybiBrW2I+PjJdfDB9ZnVuY3Rpb24gRkIoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTA7ZD1yO3I9cisxNnwwO2U9ZCs4fDA7Zz1kKzR8MDtmPWQ7a1tlPj4yXT1hO2tbZz4+Ml09YjtrW2Y+PjJdPWM7aVtrW2U+PjJdPj4wXT1rW2c+PjJdO2tbKGtbZT4+Ml18MCkrOD4+Ml09a1tmPj4yXTtrWyhrW2U+PjJdfDApKzQ+PjJdPTA7a1soa1tlPj4yXXwwKSsxMj4+Ml09MDtrWyhrW2U+PjJdfDApKzE2Pj4yXT0wO3I9ZDtyZXR1cm59ZnVuY3Rpb24gR0IoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTAsbT0wLG49MDttPXI7cj1yKzMyfDA7ZT1tKzE2fDA7bj1tKzEyfDA7Zj1tKzh8MDtnPW0rMjB8MDtoPW0rNHwwO2o9bTtrW2U+PjJdPWE7a1tuPj4yXT1iO2tbZj4+Ml09YztpW2c+PjBdPWQ7a1toPj4yXT1rWyhrW2U+PjJdfDApKzgwPj4yXTtkPVN5KGtba1tlPj4yXT4+Ml18MCxrW24+PjJdfDAsMCl8MDtrW24+PjJdPWQ7ZD1idyhrW2U+PjJdfDAsa1toPj4yXXwwLGtbbj4+Ml18MCl8MDtrW2g+PjJdPWQ7aWYoIShrW2g+PjJdfDApKXtkPWtbaD4+Ml18MDtuPWtbZT4+Ml18MDtuPW4rODB8MDtrW24+PjJdPWQ7cj1tO3JldHVybn1rW2o+PjJdPShrWyhrW2g+PjJdfDApKzQ+PjJdfDApKygoKGtba1toPj4yXT4+Ml18MCktMXwwKSoyMHwwKTtrWyhrW2o+PjJdfDApKzE2Pj4yXT1rW2Y+PjJdO2Q9KGtbaj4+Ml18MCkrMTN8MDtpW2Q+PjBdPWlbZD4+MF0mLTV8KChsW2c+PjBdfDApJjEpPDwyJjI1NTtkPWtbaD4+Ml18MDtuPWtbZT4+Ml18MDtuPW4rODB8MDtrW24+PjJdPWQ7cj1tO3JldHVybn1mdW5jdGlvbiBIQihhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTA7ZT1yO3I9cis0OHwwO2Y9ZSszNnwwO2g9ZSszMnwwO2c9ZSsyOHwwO2Q9ZTtrW2Y+PjJdPWE7a1toPj4yXT1iO2tbZz4+Ml09YztrW2Q+PjJdPTA7a1tkKzQ+PjJdPTA7a1tkKzg+PjJdPTA7a1tkKzEyPj4yXT0wO2tbZCsxNj4+Ml09MDtrW2QrMjA+PjJdPTA7a1tkKzI0Pj4yXT0wO2lbZCsyMD4+MF09a1toPj4yXTtrW2QrND4+Ml09MTk3O2tbZCs4Pj4yXT0xOTg7a1tkKzI0Pj4yXT1rW2c+PjJdO0d5KGQsa1tmPj4yXXwwKXwwO3I9ZTtyZXR1cm4gbFtkKzIwPj4wXXwwfDB9ZnVuY3Rpb24gSUIoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MDtnPXI7cj1yKzE2fDA7Yz1nKzh8MDtkPWcrNHwwO2U9ZztrW2Q+PjJdPWE7a1tlPj4yXT1iO2lmKChsWyhrW2Q+PjJdfDApKzIwPj4wXXwwfDApPT0yPyhrWyhrW2U+PjJdfDApKzQ+PjJdJjF8MCkhPTA6MCl7aVsoa1tkPj4yXXwwKSsyMD4+MF09MDtrW2M+PjJdPTJ9ZWxzZSBmPTQ7YTpkbyBpZigoZnwwKT09NCl7YjpkbyBzd2l0Y2gobFtrW2U+PjJdPj4wXXwwfDApe2Nhc2UgMTUxOntpZigobFsoa1tkPj4yXXwwKSsyMD4+MF18MHwwKTw0PyhrWyhrW2U+PjJdfDApKzQ+PjJdJjUyNDI4OHwwKT09MDowKXtpWyhrW2Q+PjJdfDApKzIwPj4wXT0wO2tbYz4+Ml09MjticmVhayBhfWtbYz4+Ml09MDticmVhayBhfWNhc2UgMTU0OmNhc2UgMTUzOmNhc2UgMTUyOmNhc2UgNTU6e2lmKChsWyhrW2Q+PjJdfDApKzIwPj4wXXwwfDApPT0zPyhrWyhrW2U+PjJdfDApKzI4Pj4yXXwwKT09KGtbKGtbZD4+Ml18MCkrMjQ+PjJdfDApOjApe2tbYz4+Ml09MDticmVhayBhfWlbKGtbZD4+Ml18MCkrMjA+PjBdPTA7a1tjPj4yXT0yO2JyZWFrIGF9Y2FzZSAxMzU6e2lmKChsWyhrW2Q+PjJdfDApKzIwPj4wXXwwfDApPT01KXtpW2tbZT4+Ml0+PjBdPTEwMTticmVhayBifWlmKChsWyhrW2Q+PjJdfDApKzIwPj4wXXwwfDApPT00KXtpWyhrW2Q+PjJdfDApKzIwPj4wXT0wO2tbYz4+Ml09MjticmVhayBhfWJyZWFrfWRlZmF1bHQ6e319d2hpbGUoMCk7a1tjPj4yXT0wfXdoaWxlKDApO3I9ZztyZXR1cm4ga1tjPj4yXXwwfWZ1bmN0aW9uIEpCKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTA7Yz1yO3I9cisxNnwwO2Q9Yys0fDA7a1tkPj4yXT1hO2tbYz4+Ml09YjtpWyhrW2Q+PjJdfDApKzIwPj4wXT0wO3I9YztyZXR1cm4gMn1mdW5jdGlvbiBLQihhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTA7ZT1yO3I9cisxNnwwO2c9ZSs4fDA7aD1lKzR8MDtmPWU7ZD1lKzEyfDA7a1tnPj4yXT1hO2tbaD4+Ml09YjtrW2Y+PjJdPWM7Yj1veShrW2g+PjJdfDApfDA7aVtkPj4wXT1iO2I9KEJCKGtbZz4+Ml18MCxpW2Q+PjBdfDApfDApJjI1NTtpW2Q+PjBdPWJ8a1tmPj4yXSYyNTU7cj1lO3JldHVybiBpW2Q+PjBdfDB9ZnVuY3Rpb24gTEIoYSl7YT1hfDA7dmFyIGI9MCxjPTA7Yj1yO3I9cisxNnwwO2M9YjtrW2M+PjJdPWE7YT1IQihrW2M+PjJdfDAsMiwwKXwwO3I9YjtyZXR1cm4gYXwwfWZ1bmN0aW9uIE1CKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MDtmPXI7cj1yKzE2fDA7Yz1mKzh8MDtkPWYrNHwwO2U9ZjtrW2M+PjJdPWE7a1tkPj4yXT1iO2tbZT4+Ml09MDtpZigobFtrW2Q+PjJdPj4wXXwwfDApIT0xMTkpe2U9a1tlPj4yXXwwO3I9ZjtyZXR1cm4gZXwwfWE9bkIoa1tjPj4yXXwwLGtbZD4+Ml18MCwwLDApfDA7a1tlPj4yXT1hO2U9a1tlPj4yXXwwO3I9ZjtyZXR1cm4gZXwwfWZ1bmN0aW9uIE5CKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsbT0wLG49MCxvPTAscD0wLHE9MCxzPTA7cz1yO3I9ciszMnwwO2g9cysyNHwwO2o9cysyMHwwO2c9cysxNnwwO209cysxMnwwO249cys4fDA7bz1zKzR8MDtwPXM7cT1zKzI4fDA7a1tqPj4yXT1hO2tbZz4+Ml09YjtrW20+PjJdPWM7a1tuPj4yXT1kO2tbbz4+Ml09ZTtrW3A+PjJdPWY7aVtxPj4wXT1pW2tbZz4+Ml0+PjBdfDA7aWYoKGxbcT4+MF18MHwwKT09MTU3KXtxPXpCKGtbZz4+Ml18MCxrW20+PjJdfDApfDA7a1trW28+PjJdPj4yXT1xO2tbaD4+Ml09KGtbKGtbZz4+Ml18MCkrMjg+PjJdfDApKyhrW20+PjJdfDApO3E9a1toPj4yXXwwO3I9cztyZXR1cm4gcXwwfWE9a1ttPj4yXXwwO2M9KGtbZz4+Ml18MCkrMjB8MDtpZigobFtxPj4wXXwwfDApPT0xMTkpe2tba1tvPj4yXT4+Ml09a1soa1soa1trW2M+PjJdPj4yXXwwKSs0Pj4yXXwwKSsoYSoyMHwwKT4+Ml07a1toPj4yXT0oa1tuPj4yXXwwKSsoa1ttPj4yXXwwKTtxPWtbaD4+Ml18MDtyPXM7cmV0dXJuIHF8MH1lbHNle2tba1tvPj4yXT4+Ml09a1soa1soa1tjPj4yXXwwKSs0Pj4yXXwwKSsoYSoyMHwwKT4+Ml07cT1oQihrW2o+PjJdfDAsa1trW28+PjJdPj4yXXwwLGtbcD4+Ml18MCl8MDtrW2g+PjJdPXE7cT1rW2g+PjJdfDA7cj1zO3JldHVybiBxfDB9cmV0dXJuIDB9ZnVuY3Rpb24gT0IoYSxiLGMsZCxlLGYsZyl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7dmFyIGg9MCxqPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscz0wO3M9cjtyPXIrMzJ8MDtoPXMrMjh8MDtqPXMrMjR8MDtsPXMrMjB8MDttPXMrMTZ8MDtuPXMrMTJ8MDtvPXMrOHwwO3A9cys0fDA7cT1zO2tbaD4+Ml09YTtrW2o+PjJdPWI7a1tsPj4yXT1jO2tbbT4+Ml09ZDtrW24+PjJdPWU7a1tvPj4yXT1mO2tbcD4+Ml09ZztmPWR4KF9BKGtbaD4+Ml18MCl8MCw4LDApfDA7a1txPj4yXT1mO2lmKGtbcT4+Ml18MCl7Zj1rW3E+PjJdfDA7Zz1rW28+PjJdfDA7aVtmPj4wXT1pW2c+PjBdfDA7aVtmKzE+PjBdPWlbZysxPj4wXXwwO2lbZisyPj4wXT1pW2crMj4+MF18MDtpW2YrMz4+MF09aVtnKzM+PjBdfDA7aVtmKzQ+PjBdPWlbZys0Pj4wXXwwO2lbZis1Pj4wXT1pW2crNT4+MF18MDtpW2YrNj4+MF09aVtnKzY+PjBdfDA7aVtmKzc+PjBdPWlbZys3Pj4wXXwwfWY9d3goa1toPj4yXXwwLGtbaj4+Ml18MCxrW2w+PjJdfDAsa1ttPj4yXXwwLGtbbj4+Ml18MCxrW3E+PjJdfDAsa1twPj4yXXwwKXwwO3I9cztyZXR1cm4gZnwwfWZ1bmN0aW9uIFBCKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTA7Zz1yO3I9cisxNnwwO2M9ZysxMnwwO2Q9Zys4fDA7ZT1nKzR8MDtmPWc7a1tjPj4yXT1hO2tbZD4+Ml09YjtrW2U+PjJdPTA7a1tmPj4yXT0oa1tjPj4yXXwwKSsxNTI7d2hpbGUoMSl7aWYoKGtbZT4+Ml18MCk+PShsWyhrW2M+PjJdfDApKzI1Pj4wXXwwfDApKWJyZWFrO2lmKChrWyhrW2Y+PjJdfDApKzEyPj4yXXwwKT09KGtbZD4+Ml18MCkpaVsoa1tmPj4yXXwwKSs2Pj4wXT0wO2tbZT4+Ml09KGtbZT4+Ml18MCkrMTtrW2Y+PjJdPShrW2Y+PjJdfDApKzIwfXI9ZztyZXR1cm59ZnVuY3Rpb24gUUIoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxuPTAsbz0wLHA9MCxxPTAscz0wO3M9cjtyPXIrMzJ8MDtlPXMrMjh8MDtmPXMrMjR8MDtnPXMrMjB8MDtoPXMrMTZ8MDtuPXMrMTJ8MDtwPXMrOHwwO289cys0fDA7cT1zO2tbZT4+Ml09YTtrW2Y+PjJdPWI7a1tnPj4yXT1jO2tbaD4+Ml09ZDtpZigobVsoa1trW2U+PjJdPj4yXXwwKSs2ND4+MV18MCkmMil7cj1zO3JldHVybn1pZigobFsoa1tlPj4yXXwwKSsyNT4+MF18MHwwKT49MTApe2tbcD4+Ml09MjE0NzQ4MzY0NztrW28+PjJdPS0xO2tbbj4+Ml09MDtrW3E+PjJdPShrW2U+PjJdfDApKzE1Mjt3aGlsZSgxKXtpZigoa1tuPj4yXXwwKT49MTApYnJlYWs7aWYoKGtbKGtbcT4+Ml18MCkrMTY+PjJdfDApPChrW3A+PjJdfDApKXtrW28+PjJdPWtbbj4+Ml07a1twPj4yXT1rWyhrW3E+PjJdfDApKzE2Pj4yXX1rW24+PjJdPShrW24+PjJdfDApKzE7a1txPj4yXT0oa1txPj4yXXwwKSsyMH1rW3E+PjJdPShrW2U+PjJdfDApKzE1MisoKGtbbz4+Ml18MCkqMjB8MCl9ZWxzZXtwPShrW2U+PjJdfDApKzI1fDA7YT1pW3A+PjBdfDA7aVtwPj4wXT1hKzE8PDI0Pj4yNDtrW3E+PjJdPShrW2U+PjJdfDApKzE1MisoKGEmMjU1KSoyMHwwKX1rWyhrW3E+PjJdfDApKzg+PjJdPWtbKGtbZT4+Ml18MCkrNjQ+PjJdO2tba1txPj4yXT4+Ml09a1tmPj4yXTtqWyhrW3E+PjJdfDApKzQ+PjFdPWtbZz4+Ml07a1soa1txPj4yXXwwKSsxMj4+Ml09a1toPj4yXTtpWyhrW3E+PjJdfDApKzY+PjBdPTA7cD0oa1tlPj4yXXwwKSs2OHwwO2E9a1twPj4yXXwwO2tbcD4+Ml09YSsxO2tbKGtbcT4+Ml18MCkrMTY+PjJdPWE7cj1zO3JldHVybn1mdW5jdGlvbiBSQihhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wLGg9MDtoPXI7cj1yKzMyfDA7Zz1oKzE2fDA7Yz1oKzEyfDA7ZD1oKzh8MDtlPWgrNHwwO2Y9aDtrW2M+PjJdPWE7a1tkPj4yXT1iO2tbZT4+Ml09MDt3aGlsZSgxKXtpZigoa1tlPj4yXXwwKT49KG1bKGtbZD4+Ml18MCkrNTI+PjFdfDApKXtjPTc7YnJlYWt9a1tmPj4yXT1rWyhrWyhrW2Q+PjJdfDApKzMyPj4yXXwwKSsoa1tlPj4yXTw8Mik+PjJdO2lmKChqWyhrWyhrW2Q+PjJdfDApKzQ+PjJdfDApKyhrW2U+PjJdPDwxKT4+MV18MCk+PTA/MD09KHNnKGtbZj4+Ml18MCxrW2M+PjJdfDApfDApOjApe2M9NTticmVha31rW2U+PjJdPShrW2U+PjJdfDApKzF9aWYoKGN8MCk9PTUpe2tbZz4+Ml09MTtnPWtbZz4+Ml18MDtyPWg7cmV0dXJuIGd8MH1lbHNlIGlmKChjfDApPT03KXtrW2c+PjJdPTA7Zz1rW2c+PjJdfDA7cj1oO3JldHVybiBnfDB9cmV0dXJuIDB9ZnVuY3Rpb24gU0IoYSxiLGMsZCxlLGYsZyl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7dmFyIGg9MCxqPTAsbT0wLG49MCxvPTAscD0wLHE9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTA7eT1yO3I9cis4MHwwO2g9eSs3NnwwO2o9eSs3MnwwO209eSs2OHwwO249eSs2NHwwO289eSs2MHwwO3A9eSs1NnwwO3E9eSs1MnwwO3Q9eSs0OHwwO3Y9eSsxNnwwO3c9eSsxMnwwO3M9eSs4fDA7dT15KzR8MDt4PXk7a1toPj4yXT1hO2tbaj4+Ml09YjtrW20+PjJdPWM7a1tuPj4yXT1kO2tbbz4+Ml09ZTtrW3A+PjJdPWY7a1txPj4yXT1nO2tbcz4+Ml09a1trW2g+PjJdPj4yXTtrW3Y+PjJdPTA7a1t2KzQ+PjJdPTA7a1t2Kzg+PjJdPTA7a1t2KzEyPj4yXT0wO2tbdisxNj4+Ml09MDtrW3YrMjA+PjJdPTA7a1t2KzI0Pj4yXT0wO2tbdisyOD4+Ml09MDtrW3Y+PjJdPWtbaD4+Ml07Yj1UQih2LGtbbz4+Ml18MCl8MDtrW3Q+PjJdPWI7ZG8gaWYoKDA9PShifDApPyhiPVRCKHYsa1twPj4yXXwwKXwwLGtbdD4+Ml09YiwwPT0oYnwwKSk6MCk/KGI9VEIodixrW3E+PjJdfDApfDAsa1t0Pj4yXT1iLDA9PShifDApKTowKXtpZihrW24+PjJdfDApe2lmKChsW2tbbj4+Ml0+PjBdfDApPT05NylrW3g+PjJdPWtbKGtbbj4+Ml18MCkrOD4+Ml07ZWxzZSBrW3g+PjJdPTA7eD1reChrW2g+PjJdfDAsa1tqPj4yXXwwLGtbeD4+Ml18MCwwLDApfDA7a1t0Pj4yXT14O2lmKGtbdD4+Ml18MClicmVha314PW54KGtbaD4+Ml18MCl8MDtrW3c+PjJdPXg7eD1NQShrW2g+PjJdfDAsNCl8MDtrW3U+PjJdPXg7JEEoa1toPj4yXXwwLGtbbz4+Ml18MCxrW3U+PjJdfDApOyRBKGtbaD4+Ml18MCxrW3A+PjJdfDAsKGtbdT4+Ml18MCkrMXwwKTskQShrW2g+PjJdfDAsa1txPj4yXXwwLChrW3U+PjJdfDApKzJ8MCk7aWYoa1t3Pj4yXXwwKXt3eChrW3c+PjJdfDAsODksMCwoa1t1Pj4yXXwwKSszLShpW2tbbT4+Ml0+PjBdfDApfDAsKGtbdT4+Ml18MCkrM3wwLGtbbT4+Ml18MCwtNSl8MDtUaChrW3c+PjJdfDAsaVtrW20+PjJdPj4wXXwwKTthQShrW3c+PjJdfDAsMTUwLChrW2o+PjJdfDApPT0yNCYxKXwwfX13aGlsZSgwKTtzdihrW3M+PjJdfDAsa1tvPj4yXXwwKTtzdihrW3M+PjJdfDAsa1twPj4yXXwwKTtzdihrW3M+PjJdfDAsa1txPj4yXXwwKTtyPXk7cmV0dXJufWZ1bmN0aW9uIFRCKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MDtmPXI7cj1yKzE2fDA7Yz1mKzh8MDtkPWYrNHwwO2U9ZjtrW2M+PjJdPWE7a1tkPj4yXT1iO2tbZT4+Ml09MDtkbyBpZihrW2Q+PjJdfDApaWYoKGxba1tkPj4yXT4+MF18MHwwKSE9NTUpe2E9S3koa1tjPj4yXXwwLGtbZD4+Ml18MCl8MDtrW2U+PjJdPWE7YnJlYWt9ZWxzZXtpW2tbZD4+Ml0+PjBdPTk3O2JyZWFrfXdoaWxlKDApO3I9ZjtyZXR1cm4ga1tlPj4yXXwwfWZ1bmN0aW9uIFVCKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTA7cD1yO3I9cisxOTJ8MDttPXArMjR8MDtsPXArMTZ8MDtqPXArOHwwO2g9cDtkPXArNTJ8MDtxPXArNDR8MDtvPXArNDB8MDtlPXArMzZ8MDtmPXArMzJ8MDtnPXArMjh8MDtuPXArNTZ8MDtrW2Q+PjJdPWE7a1twKzQ4Pj4yXT1iO2tbcT4+Ml09YzthPWplKGtba1txPj4yXT4+Ml18MCl8MDtrW28+PjJdPWE7YT1GZShrW2Q+PjJdfDApfDA7a1tlPj4yXT1hO2tbZz4+Ml09MDtpZighKGtbbz4+Ml18MCkpa1tvPj4yXT0xODQwMjtrW2Y+PjJdPTA7d2hpbGUoMSl7aWYoKGtbZj4+Ml18MCk+PShrWyhrW2U+PjJdfDApKzIwPj4yXXwwKSlicmVhaztrW2c+PjJdPShrWyhrW2U+PjJdfDApKzE2Pj4yXXwwKSsoa1tmPj4yXTw8NCk7aWYoKGtbKGtbZz4+Ml18MCkrND4+Ml18MCkhPTA/KHNnKGtba1tnPj4yXT4+Ml18MCxrW28+PjJdfDApfDApPT0wOjApYnJlYWs7a1tmPj4yXT0oa1tmPj4yXXwwKSsxfWRvIGlmKChrW2Y+PjJdfDApPj0oa1soa1tlPj4yXXwwKSsyMD4+Ml18MCkpe2tbaD4+Ml09a1tvPj4yXTtfZCgxMjgsbiwzMTMzMSxoKXwwfWVsc2V7aWYoKGtbZj4+Ml18MCk8Mil7a1tqPj4yXT1rW28+PjJdO19kKDEyOCxuLDMxMzUyLGopfDA7YnJlYWt9aWYoIShpWyhrW2U+PjJdfDApKzY3Pj4wXXwwKSl7X2QoMTI4LG4sMzEzNzgsbCl8MDticmVha31pZigoeWcoa1soa1tnPj4yXXwwKSs0Pj4yXXwwKXwwKT09MD8oQXUoa1soa1tnPj4yXXwwKSs0Pj4yXXwwKXwwKT09MDowKXtWQihrWyhrW2c+PjJdfDApKzQ+PjJdfDApfDA7a1soa1tnPj4yXXwwKSs0Pj4yXT0wO2tbKGtbZz4+Ml18MCkrMTI+PjJdPTA7V0Ioa1tlPj4yXXwwKTtyPXA7cmV0dXJufWtbbT4+Ml09a1tvPj4yXTtfZCgxMjgsbiwzMTQyMCxtKXwwfXdoaWxlKDApO3NlKGtbZD4+Ml18MCxuLC0xKTtyPXA7cmV0dXJufWZ1bmN0aW9uIFZCKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MCxlPTAsZj0wO2Y9cjtyPXIrMTZ8MDtiPWYrMTJ8MDtjPWYrOHwwO2Q9Zis0fDA7ZT1mO2tbYj4+Ml09YTtrW2M+PjJdPWtbKGtbYj4+Ml18MCkrND4+Ml07d2coa1tiPj4yXXwwKTtrW2Q+PjJdPWtbKGtbYz4+Ml18MCkrOD4+Ml07d2hpbGUoMSl7aWYoIShrW2Q+PjJdfDApKWJyZWFrO2tbZT4+Ml09a1tkPj4yXTtrW2Q+PjJdPWtbKGtbZD4+Ml18MCkrOD4+Ml07aWYoKGtba1tlPj4yXT4+Ml18MCkhPShrW2I+PjJdfDApKWNvbnRpbnVlO1hCKGtbZT4+Ml18MCl8MH1aZyhrW2I+PjJdfDAsMCwwKXwwO2lmKCEoKGlbKGtbYj4+Ml18MCkrOT4+MF18MCkhPTA/KFlCKGtbYz4+Ml18MCl8MCk9PTA6MCkpe3JyKGtba1tjPj4yXT4+Ml18MCl8MDtpZigoa1soa1tjPj4yXXwwKSs1Mj4+Ml18MCkhPTA/KGtbKGtbYz4+Ml18MCkrNDg+PjJdfDApIT0wOjApX2Jba1soa1tjPj4yXXwwKSs1Mj4+Ml0mMjU1XShrWyhrW2M+PjJdfDApKzQ4Pj4yXXwwKTtiZygwLGtbKGtbYz4+Ml18MCkrNDg+PjJdfDApO2NqKGtbYz4+Ml18MCk7VWQoa1tjPj4yXXwwKX1pZihrWyhrW2I+PjJdfDApKzI4Pj4yXXwwKWtbKGtbKGtbYj4+Ml18MCkrMjg+PjJdfDApKzI0Pj4yXT1rWyhrW2I+PjJdfDApKzI0Pj4yXTtpZighKGtbKGtbYj4+Ml18MCkrMjQ+PjJdfDApKXtlPWtbYj4+Ml18MDtVZChlKTtyPWY7cmV0dXJuIDB9a1soa1soa1tiPj4yXXwwKSsyND4+Ml18MCkrMjg+PjJdPWtbKGtbYj4+Ml18MCkrMjg+PjJdO2U9a1tiPj4yXXwwO1VkKGUpO3I9ZjtyZXR1cm4gMH1mdW5jdGlvbiBXQihhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTAsZT0wLGY9MCxnPTA7Zj1yO3I9cisxNnwwO2I9ZisxMnwwO2M9Zis4fDA7ZD1mKzR8MDtlPWY7a1tiPj4yXT1hO2tbZD4+Ml09MjtrW2M+PjJdPTI7d2hpbGUoMSl7aWYoKGtbYz4+Ml18MCk+PShrWyhrW2I+PjJdfDApKzIwPj4yXXwwKSlicmVhaztrW2U+PjJdPShrWyhrW2I+PjJdfDApKzE2Pj4yXXwwKSsoa1tjPj4yXTw8NCk7aWYoIShrWyhrW2U+PjJdfDApKzQ+PjJdfDApKXtiZyhrW2I+PjJdfDAsa1trW2U+PjJdPj4yXXwwKTtrW2tbZT4+Ml0+PjJdPTB9ZWxzZXtpZigoa1tkPj4yXXwwKTwoa1tjPj4yXXwwKSl7YT0oa1soa1tiPj4yXXwwKSsxNj4+Ml18MCkrKGtbZD4+Ml08PDQpfDA7Zz0oa1soa1tiPj4yXXwwKSsxNj4+Ml18MCkrKGtbYz4+Ml08PDQpfDA7a1thPj4yXT1rW2c+PjJdO2tbYSs0Pj4yXT1rW2crND4+Ml07a1thKzg+PjJdPWtbZys4Pj4yXTtrW2ErMTI+PjJdPWtbZysxMj4+Ml19a1tkPj4yXT0oa1tkPj4yXXwwKSsxfWtbYz4+Ml09KGtbYz4+Ml18MCkrMX1rWyhrW2I+PjJdfDApKzIwPj4yXT1rW2Q+PjJdO2lmKChrWyhrW2I+PjJdfDApKzIwPj4yXXwwKT4yKXtyPWY7cmV0dXJufWlmKChrWyhrW2I+PjJdfDApKzE2Pj4yXXwwKT09KChrW2I+PjJdfDApKzM5MnwwKSl7cj1mO3JldHVybn1nPShrW2I+PjJdfDApKzM5MnwwO2U9a1soa1tiPj4yXXwwKSsxNj4+Ml18MDtrW2c+PjJdPWtbZT4+Ml07a1tnKzQ+PjJdPWtbZSs0Pj4yXTtrW2crOD4+Ml09a1tlKzg+PjJdO2tbZysxMj4+Ml09a1tlKzEyPj4yXTtrW2crMTY+PjJdPWtbZSsxNj4+Ml07a1tnKzIwPj4yXT1rW2UrMjA+PjJdO2tbZysyND4+Ml09a1tlKzI0Pj4yXTtrW2crMjg+PjJdPWtbZSsyOD4+Ml07Ymcoa1tiPj4yXXwwLGtbKGtbYj4+Ml18MCkrMTY+PjJdfDApO2tbKGtbYj4+Ml18MCkrMTY+PjJdPShrW2I+PjJdfDApKzM5MjtyPWY7cmV0dXJufWZ1bmN0aW9uIFhCKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MCxlPTAsZj0wLGc9MDtnPXI7cj1yKzMyfDA7Yj1nKzE2fDA7ZT1nKzEyfDA7Yz1nKzh8MDtkPWcrNHwwO2Y9ZztrW2I+PjJdPWE7a1tlPj4yXT1rW2tbYj4+Ml0+PjJdO2lmKCEoa1tlPj4yXXwwKSl7cj1nO3JldHVybiAwfWtbZD4+Ml09a1soa1tiPj4yXXwwKSs0Pj4yXTt3ZyhrW2U+PjJdfDApO1pCKGtbYj4+Ml18MCk7YTpkbyBpZigoa1soa1tkPj4yXXwwKSs4Pj4yXXwwKT09KGtbYj4+Ml18MCkpa1soa1tkPj4yXXwwKSs4Pj4yXT1rWyhrW2I+PjJdfDApKzg+PjJdO2Vsc2V7a1tmPj4yXT1rWyhrW2Q+PjJdfDApKzg+PjJdO3doaWxlKDEpe2lmKChrWyhrW2Y+PjJdfDApKzg+PjJdfDApPT0oa1tiPj4yXXwwKSlicmVhaztrW2Y+PjJdPWtbKGtbZj4+Ml18MCkrOD4+Ml07aWYoIShrW2Y+PjJdfDApKWJyZWFrIGF9a1soa1tmPj4yXXwwKSs4Pj4yXT1rWyhrW2I+PjJdfDApKzg+PjJdfXdoaWxlKDApO2tbYz4+Ml09MDt3aGlsZSgxKXtpZigoa1tjPj4yXXwwKT4oaVsoa1tiPj4yXXwwKSs2OD4+MF18MCkpYnJlYWs7X0Ioa1soa1tiPj4yXXwwKSsxMjArKGtbYz4+Ml08PDIpPj4yXXwwKTtrW2M+PjJdPShrW2M+PjJdfDApKzF9JEIoa1tkPj4yXXwwKTtVZChrWyhrW2I+PjJdfDApKzEyPj4yXXwwKTtyPWc7cmV0dXJuIDB9ZnVuY3Rpb24gWUIoYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wLGU9MCxmPTA7Zj1yO3I9cisxNnwwO2M9Zis4fDA7ZD1mKzR8MDtlPWY7a1tjPj4yXT1hO2tbZT4+Ml09MDtiPShrW2M+PjJdfDApKzY0fDA7a1tiPj4yXT0oa1tiPj4yXXwwKSstMTtpZigoa1soa1tjPj4yXXwwKSs2ND4+Ml18MCk+MCl7ZT1rW2U+PjJdfDA7cj1mO3JldHVybiBlfDB9aWYoKGtbMTAwNl18MCkhPShrW2M+PjJdfDApKXtrW2Q+PjJdPWtbMTAwNl07d2hpbGUoMSl7aWYoa1tkPj4yXXwwKWI9KGtbKGtbZD4+Ml18MCkrNjg+PjJdfDApIT0oa1tjPj4yXXwwKTtlbHNlIGI9MDthPWtbZD4+Ml18MDtpZighYilicmVhaztrW2Q+PjJdPWtbYSs2OD4+Ml19aWYoYSlrWyhrW2Q+PjJdfDApKzY4Pj4yXT1rWyhrW2M+PjJdfDApKzY4Pj4yXX1lbHNlIGtbMTAwNl09a1soa1tjPj4yXXwwKSs2OD4+Ml07a1tlPj4yXT0xO2U9a1tlPj4yXXwwO3I9ZjtyZXR1cm4gZXwwfWZ1bmN0aW9uIFpCKGEpe2E9YXwwO3ZhciBiPTAsYz0wO2I9cjtyPXIrMTZ8MDtjPWI7a1tjPj4yXT1hO1VkKGtbKGtbYz4+Ml18MCkrNDg+PjJdfDApO2tbKGtbYz4+Ml18MCkrNDg+PjJdPTA7aVsoa1tjPj4yXXwwKSs2Nj4+MF09MDtyPWI7cmV0dXJufWZ1bmN0aW9uIF9CKGEpe2E9YXwwO3ZhciBiPTAsYz0wO2M9cjtyPXIrMTZ8MDtiPWM7a1tiPj4yXT1hO2lmKCEoa1tiPj4yXXwwKSl7cj1jO3JldHVybn1hQyhrW2I+PjJdfDApO3I9YztyZXR1cm59ZnVuY3Rpb24gJEIoYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wO2Q9cjtyPXIrMTZ8MDtiPWQrNHwwO2M9ZDtrW2I+PjJdPWE7aWYobFsoa1tiPj4yXXwwKSsyMD4+MF18MCl7cj1kO3JldHVybn1pZighKGtbKGtbYj4+Ml18MCkrMTI+PjJdfDApKXtyPWQ7cmV0dXJufWtbYz4+Ml09a1soa1tiPj4yXXwwKSsxMj4+Ml07a1soa1tiPj4yXXwwKSsxMj4+Ml09MDthQyhrW2M+PjJdfDApO3I9ZDtyZXR1cm59ZnVuY3Rpb24gYUMoYSl7YT1hfDA7dmFyIGI9MCxjPTA7Yj1yO3I9cisxNnwwO2M9YjtrW2M+PjJdPWE7VHMoa1soa1tjPj4yXXwwKSs3Mj4+Ml18MCk7cj1iO3JldHVybn1mdW5jdGlvbiBiQyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLG09MCxuPTAsbz0wLHA9MCxxPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTAsRT0wLEY9MDtFPXI7cj1yKzEyOHwwO3c9RSs0OHwwO3Y9RSs0MHwwO3k9RSszMnwwO3g9RSsyNHwwO2c9RSsxNnwwO2Y9RSs4fDA7ZT1FO209RSsxMTZ8MDtGPUUrMTA4fDA7ZD1FKzEwNHwwO3U9RSsxMDB8MDtvPUUrOTZ8MDtDPUUrOTJ8MDtCPUUrODh8MDtEPUUrODR8MDt6PUUrODB8MDtwPUUrNzZ8MDtuPUUrNzJ8MDtBPUUrNjh8MDt0PUUrNjR8MDtoPUUrNjB8MDtzPUUrNTZ8MDtxPUUrNTJ8MDtrW20+PjJdPWE7a1tFKzExMj4+Ml09YjtrW0Y+PjJdPWM7a1t1Pj4yXT0wO2E9RmUoa1ttPj4yXXwwKXwwO2tbbz4+Ml09YTtrW0Q+PjJdPTA7a1t6Pj4yXT0wO2tbQT4+Ml09MDthPWplKGtba1tGPj4yXT4+Ml18MCl8MDtrW0I+PjJdPWE7YT1qZShrWyhrW0Y+PjJdfDApKzQ+PjJdfDApfDA7a1tDPj4yXT1hO2lmKCEoa1tCPj4yXXwwKSlrW0I+PjJdPTE4NDAyO2lmKCEoa1tDPj4yXXwwKSlrW0M+PjJdPTE4NDAyO2I9a1tvPj4yXXwwO2RvIGlmKChrWyhrW28+PjJdfDApKzIwPj4yXXwwKTwoKGtbKGtbbz4+Ml18MCkrOTYrMjg+PjJdfDApKzJ8MCkpe2lmKCEoaVtiKzY3Pj4wXXwwKSl7Rj1RaChrW28+PjJdfDAsMzE0OTMsZil8MDtrW0E+PjJdPUY7YnJlYWt9a1tkPj4yXT0wO3doaWxlKDEpe2lmKChrW2Q+PjJdfDApPj0oa1soa1tvPj4yXXwwKSsyMD4+Ml18MCkpYnJlYWs7a1toPj4yXT1rWyhrWyhrW28+PjJdfDApKzE2Pj4yXXwwKSsoa1tkPj4yXTw8NCk+PjJdO2lmKCEoc2coa1toPj4yXXwwLGtbQz4+Ml18MCl8MCkpe2o9MTI7YnJlYWt9a1tkPj4yXT0oa1tkPj4yXXwwKSsxfWlmKChqfDApPT0xMil7Rj1rW28+PjJdfDA7a1tnPj4yXT1rW0M+PjJdO0Y9UWgoRiwzMTUzNSxnKXwwO2tbQT4+Ml09RjticmVha31iPWtbbz4+Ml18MDtkbyBpZigoa1soa1tvPj4yXXwwKSsxNj4+Ml18MCk9PSgoa1tvPj4yXXwwKSszOTJ8MCkpe0Y9ZHgoYiw0OCwwKXwwO2tbbj4+Ml09RjtpZighKGtbbj4+Ml18MCkpe3I9RTtyZXR1cm59ZWxzZXtGPWtbbj4+Ml18MDtqPWtbKGtbbz4+Ml18MCkrMTY+PjJdfDA7a1tGPj4yXT1rW2o+PjJdO2tbRis0Pj4yXT1rW2orND4+Ml07a1tGKzg+PjJdPWtbais4Pj4yXTtrW0YrMTI+PjJdPWtbaisxMj4+Ml07a1tGKzE2Pj4yXT1rW2orMTY+PjJdO2tbRisyMD4+Ml09a1tqKzIwPj4yXTtrW0YrMjQ+PjJdPWtbaisyND4+Ml07a1tGKzI4Pj4yXT1rW2orMjg+PjJdO2JyZWFrfX1lbHNle0Y9Y3goYixrWyhrW28+PjJdfDApKzE2Pj4yXXwwLChrWyhrW28+PjJdfDApKzIwPj4yXXwwKSsxPDw0LDApfDA7a1tuPj4yXT1GO2lmKCEoa1tuPj4yXXwwKSl7cj1FO3JldHVybn19d2hpbGUoMCk7a1soa1tvPj4yXXwwKSsxNj4+Ml09a1tuPj4yXTtrW24+PjJdPShrWyhrW28+PjJdfDApKzE2Pj4yXXwwKSsoa1soa1tvPj4yXXwwKSsyMD4+Ml08PDQpO0Y9a1tuPj4yXXwwO2tbRj4+Ml09MDtrW0YrND4+Ml09MDtrW0YrOD4+Ml09MDtrW0YrMTI+PjJdPTA7a1twPj4yXT1rWyhrW28+PjJdfDApKzQ4Pj4yXTtGPWtrKGtbKGtba1tvPj4yXT4+Ml18MCkrMTY+PjJdfDAsa1tCPj4yXXwwLHAsdCxELHopfDA7a1t1Pj4yXT1GO2lmKGtbdT4+Ml18MCl7aWYoKGtbdT4+Ml18MCk9PTcpd2goa1tvPj4yXXwwKTtzZShrW20+PjJdfDAsa1t6Pj4yXXwwLC0xKTtVZChrW3o+PjJdfDApO3I9RTtyZXR1cm59a1twPj4yXT1rW3A+PjJdfDI1NjtGPWxrKGtbdD4+Ml18MCxrW0Q+PjJdfDAsa1tvPj4yXXwwLChrW24+PjJdfDApKzR8MCwwLGtbcD4+Ml18MCl8MDtrW3U+PjJdPUY7VWQoa1tEPj4yXXwwKTtGPShrW28+PjJdfDApKzIwfDA7a1tGPj4yXT0oa1tGPj4yXXwwKSsxO2lmKChrW3U+PjJdfDApIT0xOSl7aWYoIShrW3U+PjJdfDApKXtGPW1rKGtbbz4+Ml18MCxrWyhrW24+PjJdfDApKzQ+PjJdfDApfDA7a1soa1tuPj4yXXwwKSsxMj4+Ml09RjtpZihrWyhrW24+PjJdfDApKzEyPj4yXXwwKXtpZigobFsoa1soa1tuPj4yXXwwKSsxMj4+Ml18MCkrNzY+PjBdfDApIT0wPyhsWyhrWyhrW24+PjJdfDApKzEyPj4yXXwwKSs3Nz4+MF18MCkhPShsWyhrW28+PjJdfDApKzY2Pj4wXXwwKTowKXtGPVFoKGtbbz4+Ml18MCwyMDAxNix5KXwwO2tbQT4+Ml09RjtrW3U+PjJdPTF9fWVsc2Uga1t1Pj4yXT03O3dnKGtbKGtbbj4+Ml18MCkrND4+Ml18MCk7Rj1aZihrWyhrW24+PjJdfDApKzQ+PjJdfDApfDA7a1tzPj4yXT1GO2NDKGtbcz4+Ml18MCxsWyhrW28+PjJdfDApKzcxPj4wXXwwKXwwO0Y9a1soa1tuPj4yXXwwKSs0Pj4yXXwwO2RDKEYsZEMoa1soa1soa1tvPj4yXXwwKSsxNj4+Ml18MCkrND4+Ml18MCwtMSl8MCl8MDtlQyhrWyhrW24+PjJdfDApKzQ+PjJdfDAsM3xrWyhrW28+PjJdfDApKzI0Pj4yXSY1Nil8MH19ZWxzZXtrW3U+PjJdPTE7Rj1RaChrW28+PjJdfDAsMzE1NjUseCl8MDtrW0E+PjJdPUZ9aVsoa1tuPj4yXXwwKSs4Pj4wXT0zO0Y9QWgoa1tvPj4yXXwwLGtbQz4+Ml18MCl8MDtrW2tbbj4+Ml0+PjJdPUY7aWYoKGtbdT4+Ml18MCk9PTA/KGtba1tuPj4yXT4+Ml18MCk9PTA6MClrW3U+PjJdPTc7aWYoIShrW3U+PjJdfDApKXtZZihrW28+PjJdfDApO0Y9Q2koa1tvPj4yXXwwLEEpfDA7a1t1Pj4yXT1GfWlmKCEoa1t1Pj4yXXwwKSl7cj1FO3JldHVybn1rW3E+PjJdPShrWyhrW28+PjJdfDApKzIwPj4yXXwwKS0xO2lmKGtbKGtbKGtbbz4+Ml18MCkrMTY+PjJdfDApKyhrW3E+PjJdPDw0KSs0Pj4yXXwwKXtWQihrWyhrWyhrW28+PjJdfDApKzE2Pj4yXXwwKSsoa1txPj4yXTw8NCkrND4+Ml18MCl8MDtrWyhrWyhrW28+PjJdfDApKzE2Pj4yXXwwKSsoa1txPj4yXTw8NCkrND4+Ml09MDtrWyhrWyhrW28+PjJdfDApKzE2Pj4yXXwwKSsoa1txPj4yXTw8NCkrMTI+PjJdPTB9TWcoa1tvPj4yXXwwKTtrWyhrW28+PjJdfDApKzIwPj4yXT1rW3E+PjJdO2lmKChrW3U+PjJdfDApPT03fChrW3U+PjJdfDApPT0zMDgyKXt3aChrW28+PjJdfDApO2JnKGtbbz4+Ml18MCxrW0E+PjJdfDApO0Y9UWgoa1tvPj4yXXwwLDI1MDE2LHYpfDA7a1tBPj4yXT1GO2JyZWFrfWlmKCEoa1tBPj4yXXwwKSl7Rj1rW28+PjJdfDA7a1t3Pj4yXT1rW0I+PjJdO0Y9UWgoRiwzMTU5NCx3KXwwO2tbQT4+Ml09Rn19ZWxzZXtrW2U+PjJdPWtbKGtbbz4+Ml18MCkrOTYrMjg+PjJdO0Y9UWgoYiwzMTQ1NixlKXwwO2tbQT4+Ml09Rn13aGlsZSgwKTtpZihrW0E+PjJdfDApe3NlKGtbbT4+Ml18MCxrW0E+PjJdfDAsLTEpO2JnKGtbbz4+Ml18MCxrW0E+PjJdfDApfWlmKCEoa1t1Pj4yXXwwKSl7cj1FO3JldHVybn1BZShrW20+PjJdfDAsa1t1Pj4yXXwwKTtyPUU7cmV0dXJufWZ1bmN0aW9uIGNDKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wO2U9cjtyPXIrMTZ8MDtjPWUrNHwwO2Q9ZTtrW2M+PjJdPWE7a1tkPj4yXT1iO2lmKCgoa1tkPj4yXXwwKT49MD8oaVsoa1tjPj4yXXwwKSsxMz4+MF18MCk9PTA6MCk/KGdDKGtbKGtbYz4+Ml18MCkrMjE2Pj4yXXwwKXwwKT09MDowKWlbKGtbYz4+Ml18MCkrND4+MF09a1tkPj4yXTtyPWU7cmV0dXJuIGxbKGtbYz4+Ml18MCkrND4+MF18MH1mdW5jdGlvbiBkQyhhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wO2c9cjtyPXIrMTZ8MDtjPWcrMTJ8MDtkPWcrOHwwO2U9Zys0fDA7Zj1nO2tbZD4+Ml09YTtrW2U+PjJdPWI7aWYoIShrW2Q+PjJdfDApKXtrW2M+PjJdPTA7YT1rW2M+PjJdfDA7cj1nO3JldHVybiBhfDB9d2coa1tkPj4yXXwwKTtpZigoa1tlPj4yXXwwKT49MD8oYT0oa1soa1tkPj4yXXwwKSs0Pj4yXXwwKSsyMnwwLGpbYT4+MV09KG1bYT4+MV18MCkmLTUsKGtbZT4+Ml18MCkhPTApOjApe2E9KGtbKGtbZD4+Ml18MCkrND4+Ml18MCkrMjJ8MDtqW2E+PjFdPW1bYT4+MV18MHw0fWtbZj4+Ml09KChtWyhrWyhrW2Q+PjJdfDApKzQ+PjJdfDApKzIyPj4xXXwwKSY0fDApIT0wJjE7a1tjPj4yXT1rW2Y+PjJdO2E9a1tjPj4yXXwwO3I9ZztyZXR1cm4gYXwwfWZ1bmN0aW9uIGVDKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MDtjPXI7cj1yKzE2fDA7Zj1jKzh8MDtkPWMrNHwwO2U9YztrW2Y+PjJdPWE7a1tkPj4yXT1iO2tbZT4+Ml09a1soa1tmPj4yXXwwKSs0Pj4yXTt3ZyhrW2Y+PjJdfDApO2ZDKGtba1tlPj4yXT4+Ml18MCxrW2Q+PjJdfDApO3I9YztyZXR1cm4gMH1mdW5jdGlvbiBmQyhhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTA7Zj1yO3I9cisxNnwwO2Q9Zis4fDA7ZT1mKzR8MDtjPWY7a1tkPj4yXT1hO2tbZT4+Ml09YjtrW2M+PjJdPWtbZT4+Ml0mNztpZihpWyhrW2Q+PjJdfDApKzEzPj4wXXwwKXtpWyhrW2Q+PjJdfDApKzc+PjBdPTE7aVsoa1tkPj4yXXwwKSs4Pj4wXT0wO2lbKGtbZD4+Ml18MCkrOT4+MF09MH1lbHNle2lbKGtbZD4+Ml18MCkrNz4+MF09KGtbYz4+Ml18MCk9PTE/MTowO2lbKGtbZD4+Ml18MCkrOD4+MF09KGtbYz4+Ml18MCk+Pj4wPj0zPzE6MDtpWyhrW2Q+PjJdfDApKzk+PjBdPShrW2M+PjJdfDApPT00PzE6MH1kbyBpZighKGlbKGtbZD4+Ml18MCkrNz4+MF18MCkpe2lmKGtbZT4+Ml0mOCl7aVsoa1tkPj4yXXwwKSsxMj4+MF09MztpWyhrW2Q+PjJdfDApKzEwPj4wXT0zO2JyZWFrfWI9KGtbZT4+Ml0mMTZ8MCkhPTA7aVsoa1tkPj4yXXwwKSsxMj4+MF09MjtjPShrW2Q+PjJdfDApKzEwfDA7aWYoYil7aVtjPj4wXT0zO2JyZWFrfWVsc2V7aVtjPj4wXT0yO2JyZWFrfX1lbHNle2lbKGtbZD4+Ml18MCkrMTI+PjBdPTA7aVsoa1tkPj4yXXwwKSsxMD4+MF09MH13aGlsZSgwKTtpWyhrW2Q+PjJdfDApKzExPj4wXT1pWyhrW2Q+PjJdfDApKzEyPj4wXXwwO2lmKGlbKGtbZD4+Ml18MCkrOD4+MF18MCl7Yj0oa1tkPj4yXXwwKSsxMXwwO2lbYj4+MF09bFtiPj4wXXwzMn1jPShrW2Q+PjJdfDApKzIxfDA7YT1sW2M+PjBdfDA7aWYoa1tlPj4yXSYzMil7aVtjPj4wXT1hJi0yO3I9ZjtyZXR1cm59ZWxzZXtpW2M+PjBdPWF8MTtyPWY7cmV0dXJufX1mdW5jdGlvbiBnQyhhKXthPWF8MDt2YXIgYj0wLGM9MDtjPXI7cj1yKzE2fDA7Yj1jO2tbYj4+Ml09YTtpZighKGtbYj4+Ml18MCkpe2E9MDthPWEmMTtyPWM7cmV0dXJuIGF8MH1hPShsWyhrW2I+PjJdfDApKzQzPj4wXXwwfDApPT0yO2E9YSYxO3I9YztyZXR1cm4gYXwwfWZ1bmN0aW9uIGhDKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wO2g9cjtyPXIrMzJ8MDtjPWgrMTZ8MDtkPWgrMTJ8MDtlPWgrOHwwO2Y9aCs0fDA7Zz1oO2tbYz4+Ml09YTtrW2Q+PjJdPWI7a1tlPj4yXT1rW2tbYz4+Ml0+PjJdO2tbZj4+Ml09MDt3aGlsZSgxKXtpZigoa1tmPj4yXXwwKT49KGtbKGtbZT4+Ml18MCkrMjA+PjJdfDApKWJyZWFrO2tbZz4+Ml09KGtbKGtbZT4+Ml18MCkrMTY+PjJdfDApKyhrW2Y+PjJdPDw0KTtkbyBpZihrWyhrW2c+PjJdfDApKzQ+PjJdfDApe2lmKChrW2Q+PjJdfDApIT0wPzAhPShzZyhrW2Q+PjJdfDAsa1trW2c+PjJdPj4yXXwwKXwwKTowKWJyZWFrO0N4KGtbYz4+Ml18MCxrW2Y+PjJdfDApfXdoaWxlKDApO2tbZj4+Ml09KGtbZj4+Ml18MCkrMX1yPWg7cmV0dXJufWZ1bmN0aW9uIGlDKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wLGk9MCxqPTAsbD0wLG09MCxuPTA7bj1yO3I9cis0OHwwO2o9bjtjPW4rNDR8MDtkPW4rNDB8MDtoPW4rMzZ8MDtpPW4rMzJ8MDtmPW4rMjh8MDtnPW4rMjR8MDtlPW4rMjB8MDtsPW4rMTZ8MDttPW4rMTJ8MDtrW2M+PjJdPWE7a1tkPj4yXT1iO2tbZj4+Ml09a1trW2M+PjJdPj4yXTtiPVBoKGtba1tjPj4yXT4+Ml18MCxrWyhrW2Q+PjJdfDApKzIwPj4yXXwwKXwwO2tbZz4+Ml09YjtiPWpDKGtbZD4+Ml18MCl8MDtrW2g+PjJdPWI7a1tlPj4yXT0xNjtrW2w+PjJdPWtbKGtbKGtbZj4+Ml18MCkrMTY+PjJdfDApKyhrW2c+PjJdPDw0KT4+Ml07a1ttPj4yXT0oa1tnPj4yXXwwKT09MT8xOTkwNToxOTkyNDtpZigoa1tnPj4yXXwwKT09MSlrW2U+PjJdPTE0O2lmKGt4KGtbYz4+Ml18MCxrW2U+PjJdfDAsa1trW2Q+PjJdPj4yXXwwLGtba1toPj4yXT4+Ml18MCxrW2w+PjJdfDApfDApe3I9bjtyZXR1cm59aWYoa3goa1tjPj4yXXwwLDksa1ttPj4yXXwwLDAsa1tsPj4yXXwwKXwwKXtyPW47cmV0dXJufW09bngoa1tjPj4yXXwwKXwwO2tbaT4+Ml09bTtpZighbSl7cj1uO3JldHVybn1tPWtbYz4+Ml18MDtiPShrW2c+PjJdfDApPT0xPzE5OTA1OjE5OTI0O2w9a1trW2Q+PjJdPj4yXXwwO2tbaj4+Ml09a1soa1soa1tmPj4yXXwwKSsxNj4+Ml18MCkrKGtbZz4+Ml08PDQpPj4yXTtrW2orND4+Ml09YjtrW2orOD4+Ml09bDtteChtLDMxNjQyLGopO294KGtbYz4+Ml18MCxrW2c+PjJdfDApO3d4KGtbaT4+Ml18MCwxNDAsa1tnPj4yXXwwLDAsMCxrW2tbZD4+Ml0+PjJdfDAsMCl8MDtyPW47cmV0dXJufWZ1bmN0aW9uIGpDKGEpe2E9YXwwO3ZhciBiPTAsYz0wO2I9cjtyPXIrMTZ8MDtjPWI7a1tjPj4yXT1hO2E9Q2ooKGtbKGtbYz4+Ml18MCkrMjQ+PjJdfDApKzh8MCxrWyhrW2M+PjJdfDApKzQ+PjJdfDApfDA7cj1iO3JldHVybiBhfDB9ZnVuY3Rpb24ga0MoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MDtoPXI7cj1yKzMyfDA7aj1oKzEyfDA7ZD1oKzE2fDA7ZT1oKzh8MDtmPWgrNHwwO2c9aDtrW2o+PjJdPWE7aVtkPj4wXT1iO2tbZT4+Ml09YztjPUNoKGtbaj4+Ml18MCwzNisoa1soa1tlPj4yXXwwKSs0Pj4yXXwwKSsxfDAsMCl8MDtrW2Y+PjJdPWM7aWYoIShrW2Y+PjJdfDApKXtqPWtbZj4+Ml18MDtyPWg7cmV0dXJuIGp8MH1rW2c+PjJdPShrW2Y+PjJdfDApKzM2O2JTKGtbZz4+Ml18MCxrW2tbZT4+Ml0+PjJdfDAsa1soa1tlPj4yXXwwKSs0Pj4yXXwwKXwwO2h4KGtbZz4+Ml18MCk7a1soa1tmPj4yXXwwKSsxMj4+Ml09a1tnPj4yXTtpW2tbZj4+Ml0+PjBdPWlbZD4+MF18MDtqPWtbZj4+Ml18MDtyPWg7cmV0dXJuIGp8MH1mdW5jdGlvbiBsQyhhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wO2Y9cjtyPXIrMTZ8MDtjPWYrMTJ8MDtnPWYrOHwwO2Q9Zis0fDA7ZT1mO2tbYz4+Ml09YTtrW2c+PjJdPWI7a1tkPj4yXT0oa1tnPj4yXXwwKSs4O2I9engoa1tjPj4yXXwwLDAsa1tkPj4yXXwwKXwwO2tbZT4+Ml09YjskZihrW2tbYz4+Ml0+PjJdfDAsa1soa1tkPj4yXXwwKSsxNj4+Ml18MCk7a1soa1tkPj4yXXwwKSsxNj4+Ml09a1tlPj4yXTtpZihrW2U+PjJdfDApe2c9KGtbZT4+Ml18MCkrMzZ8MDtqW2c+PjFdPShqW2c+PjFdfDApKzE8PDE2Pj4xNn1pZighKHp6KGtbYz4+Ml18MCxrW2Q+PjJdfDApfDApKXtnPWtbZT4+Ml18MDtyPWY7cmV0dXJuIGd8MH1rW2U+PjJdPTA7Zz1rW2U+PjJdfDA7cj1mO3JldHVybiBnfDB9ZnVuY3Rpb24gbUMoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaT0wLGo9MCxsPTAsbT0wO2Y9cjtyPXIrMzJ8MDtnPWYrMjB8MDttPWYrMTZ8MDtoPWYrMTJ8MDtqPWYrOHwwO2k9Zis0fDA7bD1mO2tbZz4+Ml09YTtrW20+PjJdPWI7a1toPj4yXT1jO2tbaj4+Ml09ZDtrW2k+PjJdPWU7a1tsPj4yXT1rW2tbbT4+Ml0+PjJdO2tba1tnPj4yXT4+Ml09a1ttPj4yXTtrWyhrW2c+PjJdfDApKzEyPj4yXT1rWyhrWyhrW2w+PjJdfDApKzE2Pj4yXXwwKSsoa1toPj4yXTw8NCk+PjJdO2tbKGtbZz4+Ml18MCkrND4+Ml09a1soa1soa1tsPj4yXXwwKSsxNj4+Ml18MCkrKGtbaD4+Ml08PDQpKzEyPj4yXTtrWyhrW2c+PjJdfDApKzE2Pj4yXT1rW2o+PjJdO2tbKGtbZz4+Ml18MCkrMjA+PjJdPWtbaT4+Ml07a1soa1tnPj4yXXwwKSs4Pj4yXT0oa1toPj4yXXwwKT09MSYxO3I9ZjtyZXR1cm59ZnVuY3Rpb24gbkMoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTAsaT0wLGo9MDtqPXI7cj1yKzQ4fDA7aT1qO2Y9aiszMnwwO2c9aisyOHwwO2M9aisyNHwwO2Q9aisyMHwwO2U9aisxNnwwO2g9aisxMnwwO2tbZz4+Ml09YTtrW2M+PjJdPWI7aWYoIShrW2M+PjJdfDApKXtrW2Y+PjJdPTA7aT1rW2Y+PjJdfDA7cj1qO3JldHVybiBpfDB9a1tlPj4yXT1rWyhrW2c+PjJdfDApKzEyPj4yXTtrW2Q+PjJdPTA7a1toPj4yXT0oa1tjPj4yXXwwKSs4O3doaWxlKDEpe2lmKChrW2Q+PjJdfDApPj0oa1trW2M+PjJdPj4yXXwwKSl7Yz0xNTticmVha31pZighKGtbKGtbZz4+Ml18MCkrOD4+Ml18MCkpe2lmKChrWyhrW2g+PjJdfDApKzQ+PjJdfDApIT0wPyhzZyhrWyhrW2g+PjJdfDApKzQ+PjJdfDAsa1tlPj4yXXwwKXwwKSE9MDowKXtjPTg7YnJlYWt9Ymcoa1trW2tbZz4+Ml0+PjJdPj4yXXwwLGtbKGtbaD4+Ml18MCkrND4+Ml18MCk7a1soa1toPj4yXXwwKSs0Pj4yXT0wO2tba1toPj4yXT4+Ml09a1soa1tnPj4yXXwwKSs0Pj4yXX1pZihvQyhrW2c+PjJdfDAsa1soa1toPj4yXXwwKSsyMD4+Ml18MCl8MCl7Yz0xMTticmVha31pZihwQyhrW2c+PjJdfDAsa1soa1toPj4yXXwwKSs0OD4+Ml18MCl8MCl7Yz0xMzticmVha31rW2Q+PjJdPShrW2Q+PjJdfDApKzE7a1toPj4yXT0oa1toPj4yXXwwKSs3Mn1pZigoY3wwKT09OCl7ZT1rW2tbZz4+Ml0+PjJdfDA7Yj1rWyhrW2c+PjJdfDApKzIwPj4yXXwwO2g9a1soa1toPj4yXXwwKSs0Pj4yXXwwO2tbaT4+Ml09a1soa1tnPj4yXXwwKSsxNj4+Ml07a1tpKzQ+PjJdPWI7a1tpKzg+PjJdPWg7T2goZSwzMTk0MCxpKTtrW2Y+PjJdPTE7aT1rW2Y+PjJdfDA7cj1qO3JldHVybiBpfDB9ZWxzZSBpZigoY3wwKT09MTEpe2tbZj4+Ml09MTtpPWtbZj4+Ml18MDtyPWo7cmV0dXJuIGl8MH1lbHNlIGlmKChjfDApPT0xMyl7a1tmPj4yXT0xO2k9a1tmPj4yXXwwO3I9ajtyZXR1cm4gaXwwfWVsc2UgaWYoKGN8MCk9PTE1KXtrW2Y+PjJdPTA7aT1rW2Y+PjJdfDA7cj1qO3JldHVybiBpfDB9cmV0dXJuIDB9ZnVuY3Rpb24gb0MoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wO2Y9cjtyPXIrMTZ8MDtlPWYrOHwwO2M9Zis0fDA7ZD1mO2tbYz4+Ml09YTtrW2Q+PjJdPWI7d2hpbGUoMSl7aWYoIShrW2Q+PjJdfDApKXtjPTIwO2JyZWFrfWlmKHFDKGtbYz4+Ml18MCxrW2tbZD4+Ml0+PjJdfDApfDApe2M9NDticmVha31pZihuQyhrW2M+PjJdfDAsa1soa1tkPj4yXXwwKSsyOD4+Ml18MCl8MCl7Yz02O2JyZWFrfWlmKHBDKGtbYz4+Ml18MCxrWyhrW2Q+PjJdfDApKzMyPj4yXXwwKXwwKXtjPTg7YnJlYWt9aWYocUMoa1tjPj4yXXwwLGtbKGtbZD4+Ml18MCkrMzY+PjJdfDApfDApe2M9MTA7YnJlYWt9aWYocEMoa1tjPj4yXXwwLGtbKGtbZD4+Ml18MCkrNDA+PjJdfDApfDApe2M9MTI7YnJlYWt9aWYocUMoa1tjPj4yXXwwLGtbKGtbZD4+Ml18MCkrNDQ+PjJdfDApfDApe2M9MTQ7YnJlYWt9aWYocEMoa1tjPj4yXXwwLGtbKGtbZD4+Ml18MCkrNTY+PjJdfDApfDApe2M9MTY7YnJlYWt9aWYocEMoa1tjPj4yXXwwLGtbKGtbZD4+Ml18MCkrNjA+PjJdfDApfDApe2M9MTg7YnJlYWt9a1tkPj4yXT1rWyhrW2Q+PjJdfDApKzQ4Pj4yXX1pZigoY3wwKT09NClrW2U+PjJdPTE7ZWxzZSBpZigoY3wwKT09NilrW2U+PjJdPTE7ZWxzZSBpZigoY3wwKT09OClrW2U+PjJdPTE7ZWxzZSBpZigoY3wwKT09MTApa1tlPj4yXT0xO2Vsc2UgaWYoKGN8MCk9PTEyKWtbZT4+Ml09MTtlbHNlIGlmKChjfDApPT0xNClrW2U+PjJdPTE7ZWxzZSBpZigoY3wwKT09MTYpa1tlPj4yXT0xO2Vsc2UgaWYoKGN8MCk9PTE4KWtbZT4+Ml09MTtlbHNlIGlmKChjfDApPT0yMClrW2U+PjJdPTA7cj1mO3JldHVybiBrW2U+PjJdfDB9ZnVuY3Rpb24gcEMoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MDtnPXI7cj1yKzE2fDA7Zj1nO2Q9ZysxMnwwO2U9Zys4fDA7Yz1nKzR8MDtrW2U+PjJdPWE7a1tjPj4yXT1iO3doaWxlKDEpe2lmKCEoa1tjPj4yXXwwKSl7Yj0xNjticmVha31pZigobFtrW2M+PjJdPj4wXXwwKT09MTM1KXtpZighKGlbKGtba1trW2U+PjJdPj4yXT4+Ml18MCkrMTQ4KzU+PjBdfDApKXtiPTY7YnJlYWt9aVtrW2M+PjJdPj4wXT0xMDF9aWYoa1soa1tjPj4yXXwwKSs0Pj4yXSY4NDA0OTkyKXtiPTE2O2JyZWFrfWI9a1tlPj4yXXwwO2E9KGtbYz4+Ml18MCkrMjB8MDtpZihrWyhrW2M+PjJdfDApKzQ+PjJdJjIwNDgpe2lmKG9DKGIsa1thPj4yXXwwKXwwKXtiPTEwO2JyZWFrfX1lbHNlIGlmKHFDKGIsa1thPj4yXXwwKXwwKXtiPTEyO2JyZWFrfWlmKHBDKGtbZT4+Ml18MCxrWyhrW2M+PjJdfDApKzE2Pj4yXXwwKXwwKXtiPTE0O2JyZWFrfWtbYz4+Ml09a1soa1tjPj4yXXwwKSsxMj4+Ml19aWYoKGJ8MCk9PTYpe2M9a1trW2U+PjJdPj4yXXwwO2tbZj4+Ml09a1soa1tlPj4yXXwwKSsxNj4+Ml07T2goYywzMTk4NixmKTtrW2Q+PjJdPTE7Zj1rW2Q+PjJdfDA7cj1nO3JldHVybiBmfDB9ZWxzZSBpZigoYnwwKT09MTApe2tbZD4+Ml09MTtmPWtbZD4+Ml18MDtyPWc7cmV0dXJuIGZ8MH1lbHNlIGlmKChifDApPT0xMil7a1tkPj4yXT0xO2Y9a1tkPj4yXXwwO3I9ZztyZXR1cm4gZnwwfWVsc2UgaWYoKGJ8MCk9PTE0KXtrW2Q+PjJdPTE7Zj1rW2Q+PjJdfDA7cj1nO3JldHVybiBmfDB9ZWxzZSBpZigoYnwwKT09MTYpe2tbZD4+Ml09MDtmPWtbZD4+Ml18MDtyPWc7cmV0dXJuIGZ8MH1yZXR1cm4gMH1mdW5jdGlvbiBxQyhhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wLGg9MDtoPXI7cj1yKzMyfDA7Zz1oKzE2fDA7Yz1oKzEyfDA7ZD1oKzh8MDtlPWgrNHwwO2Y9aDtrW2M+PjJdPWE7a1tkPj4yXT1iO2lmKCEoa1tkPj4yXXwwKSl7a1tnPj4yXT0wO2c9a1tnPj4yXXwwO3I9aDtyZXR1cm4gZ3wwfWtbZT4+Ml09MDtrW2Y+PjJdPWtbKGtbZD4+Ml18MCkrND4+Ml07d2hpbGUoMSl7aWYoKGtbZT4+Ml18MCk+PShrW2tbZD4+Ml0+PjJdfDApKXtjPTg7YnJlYWt9aWYocEMoa1tjPj4yXXwwLGtba1tmPj4yXT4+Ml18MCl8MCl7Yz02O2JyZWFrfWtbZT4+Ml09KGtbZT4+Ml18MCkrMTtrW2Y+PjJdPShrW2Y+PjJdfDApKzIwfWlmKChjfDApPT02KXtrW2c+PjJdPTE7Zz1rW2c+PjJdfDA7cj1oO3JldHVybiBnfDB9ZWxzZSBpZigoY3wwKT09OCl7a1tnPj4yXT0wO2c9a1tnPj4yXXwwO3I9aDtyZXR1cm4gZ3wwfXJldHVybiAwfWZ1bmN0aW9uIHJDKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MDtmPXI7cj1yKzE2fDA7ZT1mKzh8MDtjPWYrNHwwO2Q9ZjtrW2M+PjJdPWE7a1tkPj4yXT1iO3doaWxlKDEpe2lmKCEoa1tkPj4yXXwwKSl7Yz0xMDticmVha31pZihvQyhrW2M+PjJdfDAsa1soa1tkPj4yXXwwKSs4Pj4yXXwwKXwwKXtjPTQ7YnJlYWt9aWYocEMoa1tjPj4yXXwwLGtbKGtbZD4+Ml18MCkrMTY+PjJdfDApfDApe2M9NjticmVha31pZihxQyhrW2M+PjJdfDAsa1soa1tkPj4yXXwwKSsyMD4+Ml18MCl8MCl7Yz04O2JyZWFrfWtbZD4+Ml09a1soa1tkPj4yXXwwKSsyOD4+Ml19aWYoKGN8MCk9PTQpa1tlPj4yXT0xO2Vsc2UgaWYoKGN8MCk9PTYpa1tlPj4yXT0xO2Vsc2UgaWYoKGN8MCk9PTgpa1tlPj4yXT0xO2Vsc2UgaWYoKGN8MCk9PTEwKWtbZT4+Ml09MDtyPWY7cmV0dXJuIGtbZT4+Ml18MH1mdW5jdGlvbiBzQyhhKXthPWF8MDt2YXIgYj0wLGM9MDtiPXI7cj1yKzE2fDA7Yz1iO2tbYz4+Ml09YTthPShrW2M+PjJdfDApKzE0NHwwO2pbYT4+MV09althPj4xXSYtMzN8MzI7cj1iO3JldHVybn1mdW5jdGlvbiB0QyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MDtnPXI7cj1yKzE2fDA7ZD1nKzh8MDtlPWcrNHwwO2Y9ZztrW2Q+PjJdPWE7a1tlPj4yXT1iO2tbZj4+Ml09YztpZighKGtbZj4+Ml18MCkpe3I9ZztyZXR1cm59cngoa1tkPj4yXXwwLDEsa1tmPj4yXXwwKXwwO3VDKGtbZD4+Ml18MCxrW2U+PjJdfDApO3N4KGtbZD4+Ml18MCw4NywxLDEpfDA7cj1nO3JldHVybn1mdW5jdGlvbiB1QyhhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MDtjPXI7cj1yKzE2fDA7ZT1jKzR8MDtkPWM7a1tlPj4yXT1hO2tbZD4+Ml09YjtJQyhrW2U+PjJdfDAsMSxkKTtyPWM7cmV0dXJufWZ1bmN0aW9uIHZDKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTA7ZT1yO3I9cisxNnwwO2Y9ZSsxMnwwO2c9ZSs4fDA7aD1lO2tbZj4+Ml09YTtrW2c+PjJdPWI7Yj1oO2tbYj4+Ml09YztrW2IrND4+Ml09ZDtPQihrW2Y+PjJdfDAsNzcsMCwxLDAsaCwtMTMpfDA7dUMoa1tmPj4yXXwwLGtbZz4+Ml18MCk7c3goa1tmPj4yXXwwLDg3LDEsMSl8MDtyPWU7cmV0dXJufWZ1bmN0aW9uIHdDKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTA7ZT1yO3I9ciszMnwwO2M9ZSsxNnwwO2c9ZSsxMnwwO2Q9ZSs0fDA7Zj1lO2tbYz4+Ml09YTtrW2c+PjJdPWI7a1tmPj4yXT1rW2tbYz4+Ml0+PjJdO1lDKGtbKGtbYz4+Ml18MCkrMTAwPj4yXXwwLChtWyhrW2M+PjJdfDApKzE0MD4+MV18MCk8PDEpO2JnKGtbZj4+Ml18MCxrWyhrW2M+PjJdfDApKzEwMD4+Ml18MCk7a1tkPj4yXT1rW2c+PjJdPDwxO2pbKGtbYz4+Ml18MCkrMTQwPj4xXT1rW2c+PjJdO2E9ZHgoa1tmPj4yXXwwLChrW2Q+PjJdfDApKjQwfDAsMCl8MDtrW2UrOD4+Ml09YTtrWyhrW2M+PjJdfDApKzEwMD4+Ml09YTtpZighKGtbKGtbYz4+Ml18MCkrMTAwPj4yXXwwKSl7cj1lO3JldHVybn1aQyhrWyhrW2M+PjJdfDApKzEwMD4+Ml18MCxrW2Q+PjJdfDAsa1trW2M+PjJdPj4yXXwwLDEpO3I9ZTtyZXR1cm59ZnVuY3Rpb24geEMoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGw9MCxuPTAsbz0wLHA9MCxxPTA7cT1yO3I9ciszMnwwO2Y9cSsyOHwwO2c9cSsyNHwwO2g9cSsyMHwwO2o9cSsxNnwwO2w9cSsxMnwwO249cSs4fDA7cD1xKzR8MDtvPXE7a1tnPj4yXT1hO2tbaD4+Ml09YjtrW2o+PjJdPWM7a1tsPj4yXT1kO2tbbj4+Ml09ZTtpZihpWyhrW2tbZz4+Ml0+PjJdfDApKzY5Pj4wXXwwKXtrW2Y+PjJdPTc7ZD1rW2Y+PjJdfDA7cj1xO3JldHVybiBkfDB9ZWxzZXtkPShrW2g+PjJdfDApKyhoYShrW2o+PjJdfDAsbVsoa1tnPj4yXXwwKSsxNDA+PjFdfDApfDApfDA7a1tvPj4yXT0oa1soa1tnPj4yXXwwKSsxMDA+PjJdfDApKyhkKjQwfDApO2Q9cWgoa1tvPj4yXXwwLGtbbD4+Ml18MCwtMSwxLGtbbj4+Ml18MCl8MDtrW3A+PjJdPWQ7a1tmPj4yXT1rW3A+PjJdO2Q9a1tmPj4yXXwwO3I9cTtyZXR1cm4gZHwwfXJldHVybiAwfWZ1bmN0aW9uIHlDKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MCxlPTA7ZT1yO3I9cisxNnwwO2I9ZSs0fDA7Yz1lO2tbYz4+Ml09YTtkbyBpZihrW2M+PjJdfDApe2lmKCEoc2coa1tjPj4yXXwwLDMyMTkyKXwwKSl7a1tiPj4yXT0xO2JyZWFrfWlmKCEoc2coa1tjPj4yXXwwLDMyMTg1KXwwKSlrW2I+PjJdPTA7ZWxzZSBkPTZ9ZWxzZSBkPTY7d2hpbGUoMCk7aWYoKGR8MCk9PTYpa1tiPj4yXT0tMTtyPWU7cmV0dXJuIGtbYj4+Ml18MH1mdW5jdGlvbiB6QyhhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTA7ZD1yO3I9cisxNnwwO2I9ZCs0fDA7Yz1kO2tbYz4+Ml09YTtpZigoa1tjPj4yXXwwKT09NilrW2I+PjJdPTA7ZWxzZSBrW2I+PjJdPWtbNTQyMCsoa1tjPj4yXTw8Mik+PjJdO3I9ZDtyZXR1cm4ga1tiPj4yXXwwfWZ1bmN0aW9uIEFDKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTA7Zj1yO3I9cisxNnwwO2Q9Zis4fDA7ZT1mO2tbZD4+Ml09YTthPWU7a1thPj4yXT1iO2tbYSs0Pj4yXT1jO2E9ZTtjPWtbYSs0Pj4yXXwwO2lmKChjfDApPi0xfChjfDApPT0tMSYoa1thPj4yXXwwKT4+PjA+PTQyOTQ5NjcyOTUpe2I9ZTtjPWtbYis0Pj4yXXwwO2E9KGtbZD4+Ml18MCkrMTY4fDA7a1thPj4yXT1rW2I+PjJdO2tbYSs0Pj4yXT1jO2E9ZTtYQyhrWyhrW2Q+PjJdfDApKzIxNj4+Ml18MCxrW2E+PjJdfDAsa1thKzQ+PjJdfDApfWE9KGtbZD4+Ml18MCkrMTY4fDA7TD1rW2ErND4+Ml18MDtyPWY7cmV0dXJuIGtbYT4+Ml18MH1mdW5jdGlvbiBCQyhhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTA7ZD1yO3I9cisxNnwwO2I9ZCs0fDA7Yz1kO2tbYj4+Ml09YTt3ZyhrW2I+PjJdfDApO2lmKCEoaVsoa1soa1tiPj4yXXwwKSs0Pj4yXXwwKSsxNz4+MF18MCkpe2E9MDtrW2M+PjJdPWE7Yz1rW2M+PjJdfDA7cj1kO3JldHVybiBjfDB9YT0oaVsoa1soa1tiPj4yXXwwKSs0Pj4yXXwwKSsxOD4+MF18MCkhPTBeMT8xOjI7a1tjPj4yXT1hO2M9a1tjPj4yXXwwO3I9ZDtyZXR1cm4gY3wwfWZ1bmN0aW9uIENDKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MCxlPTA7ZT1yO3I9cisxNnwwO2I9ZSs4fDA7Yz1lKzR8MDtkPWU7a1tjPj4yXT1hO2RvIGlmKHNnKGtbYz4+Ml18MCwzMzI2Myl8MCl7aWYoIShzZyhrW2M+PjJdfDAsMzI3MDcpfDApKXtrW2I+PjJdPTE7YnJlYWt9aWYoIShzZyhrW2M+PjJdfDAsMzMyNjgpfDApKXtrW2I+PjJdPTI7YnJlYWt9ZWxzZXthPVppKGtbYz4+Ml18MCl8MDtrW2Q+PjJdPWE7a1tiPj4yXT0oKGtbZD4+Ml18MCk+PTAmKGtbZD4+Ml18MCk8PTI/a1tkPj4yXXwwOjApJjI1NTticmVha319ZWxzZSBrW2I+PjJdPTA7d2hpbGUoMCk7cj1lO3JldHVybiBrW2I+PjJdfDB9ZnVuY3Rpb24gREMoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTA7Zj1yO3I9ciszMnwwO2c9ZisxMnwwO2g9Zis4fDA7ZD1mKzR8MDtlPWY7Yz1mKzE2fDA7a1tnPj4yXT1hO2tbaD4+Ml09YjtrW2Q+PjJdPWtbKGtbZz4+Ml18MCkrND4+Ml07a1tlPj4yXT0wO2lbYz4+MF09a1toPj4yXTt3ZyhrW2c+PjJdfDApO2lmKCgobVsoa1tkPj4yXXwwKSsyMj4+MV18MCkmMnwwKSE9MD8oKChsW2M+PjBdfDB8MCkhPTA/MTowKXwwKSE9KGxbKGtbZD4+Ml18MCkrMTc+PjBdfDB8MCk6MCl7a1tlPj4yXT04O2g9a1tlPj4yXXwwO3I9ZjtyZXR1cm4gaHwwfWlbKGtbZD4+Ml18MCkrMTc+PjBdPShsW2M+PjBdfDB8MCkhPTA/MTowO2lbKGtbZD4+Ml18MCkrMTg+PjBdPShsW2M+PjBdfDB8MCk9PTI/MTowO2g9a1tlPj4yXXwwO3I9ZjtyZXR1cm4gaHwwfWZ1bmN0aW9uIEVDKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTA7ZD1yO3I9cisxNnwwO2c9ZCsxMnwwO2U9ZCs4fDA7Zj1kKzR8MDtjPWQ7a1tnPj4yXT1hO2tbZT4+Ml09YjtrW2Y+PjJdPWtbKGtbZz4+Ml18MCkrND4+Ml07d2coa1tnPj4yXXwwKTthPVZDKGtba1tmPj4yXT4+Ml18MCxrW2U+PjJdfDApfDA7a1tjPj4yXT1hO3I9ZDtyZXR1cm4ga1tjPj4yXXwwfWZ1bmN0aW9uIEZDKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MCxlPTA7ZT1yO3I9cisxNnwwO2I9ZSs4fDA7ZD1lKzR8MDtjPWU7a1tiPj4yXT1hO2lmKCEoaVsoa1tiPj4yXXwwKSs2Nz4+MF18MCkpe3I9ZTtyZXR1cm59a1tkPj4yXT1rWyhrW2I+PjJdfDApKzE2Pj4yXTtrW2M+PjJdPWtbKGtbYj4+Ml18MCkrMjA+PjJdO3doaWxlKDEpe2E9a1tjPj4yXXwwO2tbYz4+Ml09YSstMTtpZigoYXwwKTw9MClicmVhaztpZihrWyhrW2Q+PjJdfDApKzQ+PjJdfDApZUMoa1soa1tkPj4yXXwwKSs0Pj4yXXwwLGxbKGtbZD4+Ml18MCkrOD4+MF18a1soa1tiPj4yXXwwKSsyND4+Ml0mNTYpfDA7a1tkPj4yXT0oa1tkPj4yXXwwKSsxNn1yPWU7cmV0dXJufWZ1bmN0aW9uIEdDKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wO2c9cjtyPXIrMzJ8MDtjPWcrMTZ8MDtkPWcrMTJ8MDtoPWcrOHwwO2Y9Zys0fDA7ZT1nO2tbZD4+Ml09YTtrW2g+PjJdPWI7Yj1VQyhrW2g+PjJdfDApfDA7a1tmPj4yXT1iO2tbZT4+Ml09a1trW2Q+PjJdPj4yXTtpZigobFsoa1tlPj4yXXwwKSs2OD4+MF18MHwwKT09KGtbZj4+Ml18MCkpe2tbYz4+Ml09MDtoPWtbYz4+Ml18MDtyPWc7cmV0dXJuIGh8MH1pZihIQyhrW2Q+PjJdfDApfDApe2tbYz4+Ml09MTtoPWtbYz4+Ml18MDtyPWc7cmV0dXJuIGh8MH1lbHNle2lbKGtbZT4+Ml18MCkrNjg+PjBdPWtbZj4+Ml07a1tjPj4yXT0wO2g9a1tjPj4yXXwwO3I9ZztyZXR1cm4gaHwwfXJldHVybiAwfWZ1bmN0aW9uIEhDKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MCxlPTAsZj0wO2Y9cjtyPXIrMTZ8MDtlPWY7Yj1mKzEyfDA7Yz1mKzh8MDtkPWYrNHwwO2tbYz4+Ml09YTtrW2Q+PjJdPWtba1tjPj4yXT4+Ml07ZG8gaWYoa1soa1soa1tkPj4yXXwwKSsxNj4+Ml18MCkrMTYrND4+Ml18MCl7aWYoKGlbKGtbZD4+Ml18MCkrNjc+PjBdfDApIT0wPyh5ZyhrWyhrWyhrW2Q+PjJdfDApKzE2Pj4yXXwwKSsxNis0Pj4yXXwwKXwwKT09MDowKXtWQihrWyhrWyhrW2Q+PjJdfDApKzE2Pj4yXXwwKSsxNis0Pj4yXXwwKXwwO2tbKGtbKGtbZD4+Ml18MCkrMTY+PjJdfDApKzE2KzQ+PjJdPTA7TWcoa1tkPj4yXXwwKTticmVha31PaChrW2M+PjJdfDAsMzMyMDEsZSk7a1tiPj4yXT0xO2U9a1tiPj4yXXwwO3I9ZjtyZXR1cm4gZXwwfXdoaWxlKDApO2tbYj4+Ml09MDtlPWtbYj4+Ml18MDtyPWY7cmV0dXJuIGV8MH1mdW5jdGlvbiBJQyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTA7aD1yO3I9cisxNnwwO2Q9aCsxMnwwO2U9aCs4fDA7Zj1oKzR8MDtnPWg7a1tkPj4yXT1hO2tbZT4+Ml09YjtrW2Y+PjJdPWM7d0Moa1tkPj4yXXwwLGtbZT4+Ml18MCk7a1tnPj4yXT0wO3doaWxlKDEpe2lmKChrW2c+PjJdfDApPj0oa1tlPj4yXXwwKSlicmVhazt4QyhrW2Q+PjJdfDAsa1tnPj4yXXwwLDAsa1soa1tmPj4yXXwwKSsoa1tnPj4yXTw8Mik+PjJdfDAsMCl8MDtrW2c+PjJdPShrW2c+PjJdfDApKzF9cj1oO3JldHVybn1mdW5jdGlvbiBKQyhhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MCxsPTAsbT0wLG49MDtuPXI7cj1yKzQ4fDA7ZT1uKzMyfDA7Zj1uKzI4fDA7Zz1uKzI0fDA7aD1uKzh8MDtsPW4rNHwwO2o9biszNnwwO209bjtrW2U+PjJdPWE7a1tmPj4yXT1iO2tbZz4+Ml09YztrW2g+PjJdPWQ7a1tsPj4yXT0wO3doaWxlKDEpe2M9aVsoa1tnPj4yXXwwKSsoa1tsPj4yXXwwKT4+MF18MDtpW2o+PjBdPWM7aWYoIShjPDwyND4+MjQpKWJyZWFrO2lmKChpW2o+PjBdfDApPT0xMTUpe2Q9KGtbaD4+Ml18MCkrKDQtMSkmfig0LTEpO2E9a1tkPj4yXXwwO2tbaD4+Ml09ZCs0O2tbbT4+Ml09YTthPWtbZT4+Ml18MDtkPShrW20+PjJdfDApPT0wPzc5Ojk3O2M9a1tmPj4yXXwwO2tbZj4+Ml09YysxO3d4KGEsZCwwLGMsMCxrW20+PjJdfDAsMCl8MH1lbHNle2E9a1tlPj4yXXwwO2M9KGtbaD4+Ml18MCkrKDQtMSkmfig0LTEpO2Q9a1tjPj4yXXwwO2tbaD4+Ml09Yys0O2M9a1tmPj4yXXwwO2tbZj4+Ml09YysxO3N4KGEsNzYsZCxjKXwwfWtbbD4+Ml09KGtbbD4+Ml18MCkrMX1yPW47cmV0dXJufWZ1bmN0aW9uIEtDKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MDtjPXI7cj1yKzE2fDA7ZD1jKzR8MDtiPWM7aVtkPj4wXT1hO3N3aXRjaChsW2Q+PjBdfDB8MCl7Y2FzZSA3OntrW2I+PjJdPTMzMDExO2JyZWFrfWNhc2UgODp7a1tiPj4yXT0zMzAyMDticmVha31jYXNlIDk6e2tbYj4+Ml09MzMwMzI7YnJlYWt9Y2FzZSA2OntrW2I+PjJdPTMzMDQwO2JyZWFrfWRlZmF1bHQ6a1tiPj4yXT0zMzA0OX1yPWM7cmV0dXJuIGtbYj4+Ml18MH1mdW5jdGlvbiBMQyhhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxuPTAsbz0wLHA9MCxxPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTA7RD1yO3I9cis4MHwwO3k9RDtmPUQrNjR8MDtnPUQrNjB8MDtoPUQrNTZ8MDtuPUQrNTJ8MDtvPUQrNDh8MDtwPUQrNDR8MDt4PUQrNDB8MDtxPUQrMzZ8MDt3PUQrMzJ8MDtCPUQrMjh8MDtzPUQrMjR8MDt0PUQrMjB8MDt2PUQrMTZ8MDt1PUQrNjh8MDt6PUQrMTJ8MDtBPUQrOHwwO2tbZz4+Ml09YTtrW2g+PjJdPWI7a1tuPj4yXT1jO2tbbz4+Ml09ZDtrW3A+PjJdPWU7a1t4Pj4yXT0wO2tbcT4+Ml09MDtrW3c+PjJdPWtbKGtbbj4+Ml18MCkrMjA+PjJdO2tbQj4+Ml09a1soa1tuPj4yXXwwKSszNis0Pj4yXTtkbyBpZigoa1t3Pj4yXXwwKT09MSl7aWYoKGpbKGtbaD4+Ml18MCkrMzI+PjFdfDApPj0wKXtpZighKGtbQj4+Ml18MCkpe2tbZj4+Ml09MDtDPWtbZj4+Ml18MDtyPUQ7cmV0dXJuIEN8MH1pZighKHNnKGtbKGtbKGtbaD4+Ml18MCkrND4+Ml18MCkrKGpbKGtbaD4+Ml18MCkrMzI+PjFdPDw0KT4+Ml18MCxrW0I+PjJdfDApfDApKXtrW2Y+PjJdPTA7Qz1rW2Y+PjJdfDA7cj1EO3JldHVybiBDfDB9fX1lbHNlIGlmKGtbcD4+Ml18MCl7ZD1keChrW2tbZz4+Ml0+PjJdfDAsa1t3Pj4yXTw8MiwwKXwwO2tbcT4+Ml09ZDtpZihrW3E+PjJdfDApe2tba1twPj4yXT4+Ml09a1txPj4yXTticmVha31rW2Y+PjJdPTE7Qz1rW2Y+PjJdfDA7cj1EO3JldHVybiBDfDB9d2hpbGUoMCk7a1t4Pj4yXT1rWyhrW2g+PjJdfDApKzg+PjJdO2E6d2hpbGUoMSl7aWYoIShrW3g+PjJdfDApKWJyZWFrO2RvIGlmKChtWyhrW3g+PjJdfDApKzUwPj4xXXwwKT09KGtbdz4+Ml18MCk/KGxbKGtbeD4+Ml18MCkrNTQ+PjBdfDApIT0wOjApe2lmKCEoa1tCPj4yXXwwKSlpZigoaVsoa1t4Pj4yXXwwKSs1NT4+MF0mM3wwKT09Mil7Qz0xNzticmVhayBhfWVsc2UgYnJlYWs7a1t0Pj4yXT0wO3doaWxlKDEpe2lmKChrW3Q+PjJdfDApPj0oa1t3Pj4yXXwwKSlicmVhaztqW3U+PjFdPWpbKGtbKGtbeD4+Ml18MCkrND4+Ml18MCkrKGtbdD4+Ml08PDEpPj4xXXwwO2lmKChqW3U+PjFdfDApPDApYnJlYWs7ZD1rWyhrWyhrW2g+PjJdfDApKzQ+PjJdfDApKyhqW3U+PjFdPDw0KSs4Pj4yXXwwO2tbej4+Ml09ZDtrW3o+PjJdPShrW3o+PjJdfDApIT0wP2Q6MzQ4MzQ7aWYoc2coa1soa1soa1t4Pj4yXXwwKSszMj4+Ml18MCkrKGtbdD4+Ml08PDIpPj4yXXwwLGtbej4+Ml18MCl8MClicmVhaztrW0E+PjJdPWtbKGtbKGtbaD4+Ml18MCkrND4+Ml18MCkrKGpbdT4+MV08PDQpPj4yXTtrW3Y+PjJdPTA7d2hpbGUoMSl7aWYoKGtbdj4+Ml18MCk+PShrW3c+PjJdfDApKWJyZWFrO2lmKCEoc2coa1soa1tuPj4yXXwwKSszNisoa1t2Pj4yXTw8MykrND4+Ml18MCxrW0E+PjJdfDApfDApKXtDPTI4O2JyZWFrfWtbdj4+Ml09KGtbdj4+Ml18MCkrMX1pZigoQ3wwKT09Mjg/KEM9MCwoa1txPj4yXXwwKSE9MCk6MClrWyhrW3E+PjJdfDApKyhrW3Q+PjJdPDwyKT4+Ml09a1soa1tuPj4yXXwwKSszNisoa1t2Pj4yXTw8Myk+PjJdO2lmKChrW3Y+PjJdfDApPT0oa1t3Pj4yXXwwKSlicmVhaztrW3Q+PjJdPShrW3Q+PjJdfDApKzF9aWYoKGtbdD4+Ml18MCk9PShrW3c+PjJdfDApKWJyZWFrIGF9d2hpbGUoMCk7a1t4Pj4yXT1rWyhrW3g+PjJdfDApKzIwPj4yXX1iOmRvIGlmKChDfDApPT0xNz8oa1txPj4yXXwwKSE9MDowKXtrW3M+PjJdPTA7d2hpbGUoMSl7aWYoKGtbcz4+Ml18MCk+PShrW3c+PjJdfDApKWJyZWFrIGI7a1soa1txPj4yXXwwKSsoa1tzPj4yXTw8Mik+PjJdPWtbKGtbbj4+Ml18MCkrMzYrKGtbcz4+Ml08PDMpPj4yXTtrW3M+PjJdPShrW3M+PjJdfDApKzF9fXdoaWxlKDApO2lmKGtbeD4+Ml18MCl7a1trW28+PjJdPj4yXT1rW3g+PjJdO2tbZj4+Ml09MDtDPWtbZj4+Ml18MDtyPUQ7cmV0dXJuIEN8MH1pZighKGlbKGtbZz4+Ml18MCkrMTUwPj4wXXwwKSl7Qz1rW2c+PjJdfDA7Qj1rWyhrW24+PjJdfDApKzg+PjJdfDA7a1t5Pj4yXT1rW2tba1tuPj4yXT4+Ml0+PjJdO2tbeSs0Pj4yXT1CO09oKEMsMzI5NDgseSl9Ymcoa1trW2c+PjJdPj4yXXwwLGtbcT4+Ml18MCk7a1tmPj4yXT0xO0M9a1tmPj4yXXwwO3I9RDtyZXR1cm4gQ3wwfWZ1bmN0aW9uIE1DKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wLGw9MCxuPTA7bj1yO3I9ciszMnwwO2Q9bisxNnwwO2M9bisxMnwwO2U9bis4fDA7Zz1uKzR8MDtoPW47bD1uKzIwfDA7Zj1uKzIyfDA7a1tjPj4yXT1hO2tbZT4+Ml09YjtpZighKGtbKGtbZT4+Ml18MCkrMTY+PjJdfDApKXtrW2g+PjJdPWtbKGtbZT4+Ml18MCkrMTI+PjJdO2I9KG1bKGtbZT4+Ml18MCkrNTI+PjFdfDApKzF8MDtiPU1oKDAsYiwoKGJ8MCk8MCk8PDMxPj4zMSl8MDtrWyhrW2U+PjJdfDApKzE2Pj4yXT1iO2lmKCEoa1soa1tlPj4yXXwwKSsxNj4+Ml18MCkpe3doKGtbYz4+Ml18MCk7a1tkPj4yXT0wO2w9a1tkPj4yXXwwO3I9bjtyZXR1cm4gbHwwfWtbZz4+Ml09MDt3aGlsZSgxKXtjPWtbZz4+Ml18MDthPWtbZT4+Ml18MDtpZigoa1tnPj4yXXwwKT49KG1bKGtbZT4+Ml18MCkrNTI+PjFdfDApKWJyZWFrO2pbbD4+MV09alsoa1thKzQ+PjJdfDApKyhjPDwxKT4+MV18MDtjPWpbbD4+MV18MDtkbyBpZigoaltsPj4xXXwwKTwwKXthPWtbZz4+Ml18MDtiPWtbZT4+Ml18MDtpZigoY3wwKT09LTEpe2lbKGtbYisxNj4+Ml18MCkrYT4+MF09Njg7YnJlYWt9ZWxzZXtiPW95KGtbKGtbKGtbYis0MD4+Ml18MCkrND4+Ml18MCkrKGEqMjB8MCk+PjJdfDApfDA7aVtmPj4wXT1iO2lbZj4+MF09KGlbZj4+MF18MCk9PTA/NjU6YjtpWyhrWyhrW2U+PjJdfDApKzE2Pj4yXXwwKSsoa1tnPj4yXXwwKT4+MF09aVtmPj4wXXwwO2JyZWFrfX1lbHNlIGlbKGtbKGtbZT4+Ml18MCkrMTY+PjJdfDApKyhrW2c+PjJdfDApPj4wXT1pWyhrWyhrW2g+PjJdfDApKzQ+PjJdfDApKyhjPDw0KSsxMz4+MF18MDt3aGlsZSgwKTtrW2c+PjJdPShrW2c+PjJdfDApKzF9aVsoa1thKzE2Pj4yXXwwKStjPj4wXT0wfWtbZD4+Ml09a1soa1tlPj4yXXwwKSsxNj4+Ml07bD1rW2Q+PjJdfDA7cj1uO3JldHVybiBsfDB9ZnVuY3Rpb24gTkMoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wO2Y9cjtyPXIrMTZ8MDtjPWYrOHwwO2Q9Zis0fDA7ZT1mO2tbYz4+Ml09YTtrW2Q+PjJdPWI7aWYoa1tkPj4yXXwwKWtbZT4+Ml09MzI4NTY7ZWxzZSBrW2U+PjJdPTE4Mzk4O3RpKGtbYz4+Ml18MCwzMjg2MCwyLDEsa1tlPj4yXXwwLDIxMiwwLDAsMCl8MDt0aShrW2M+PjJdfDAsMzI4NjAsMywxLGtbZT4+Ml18MCwyMTIsMCwwLDApfDA7dGkoa1tjPj4yXXwwLDMyODY1LDIsMSwxODM5NCwyMTIsMCwwLDApfDA7U0Moa1tjPj4yXXwwLDMyODY1LDEyKTtTQyhrW2M+PjJdfDAsMzI4NjAsKChrW2Q+PjJdfDApIT0wPzEyOjQpJjI1NSk7cj1mO3JldHVybn1mdW5jdGlvbiBPQyhhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTAsZT0wLGY9MDtkPXI7cj1yKzE2fDA7Yj1kKzR8MDtjPWQ7a1tiPj4yXT1hO2tbYz4+Ml09MDt3aGlsZSgxKXtpZigoa1tjPj4yXXwwKT49KGxbKGtbYj4+Ml18MCkrMjU+PjBdfDB8MCkpYnJlYWs7aWYoKGxbKGtbYj4+Ml18MCkrMTUyKygoa1tjPj4yXXwwKSoyMHwwKSs2Pj4wXXwwfDApIT0wPyhsWyhrW2I+PjJdfDApKzE5Pj4wXXwwfDApPDg6MCl7ZT1rWyhrW2I+PjJdfDApKzE1MisoKGtbYz4+Ml18MCkqMjB8MCkrMTI+PjJdfDA7Zj0oa1tiPj4yXXwwKSsxOXwwO2E9aVtmPj4wXXwwO2lbZj4+MF09YSsxPDwyND4+MjQ7a1soa1tiPj4yXXwwKSszNTIrKChhJjI1NSk8PDIpPj4yXT1lfWtbYz4+Ml09KGtbYz4+Ml18MCkrMX1pWyhrW2I+PjJdfDApKzI1Pj4wXT0wO3I9ZDtyZXR1cm59ZnVuY3Rpb24gUEMoYSxiLGMsZCxlLGYsZyxoKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDt2YXIgaj0wLG09MCxuPTAsbz0wLHA9MCxxPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MDtDPXI7cj1yKzY0fDA7bz1DKzUyfDA7cD1DKzQ4fDA7cT1DKzQ0fDA7cz1DKzQwfDA7dD1DKzU2fDA7dT1DKzM2fDA7dj1DKzMyfDA7dz1DKzI4fDA7aj1DKzI0fDA7eD1DKzIwfDA7eT1DKzE2fDA7bT1DKzEyfDA7QT1DKzh8MDtCPUMrNHwwO3o9QztrW3A+PjJdPWE7a1txPj4yXT1iO2tbcz4+Ml09YztpW3Q+PjBdPWQ7a1t1Pj4yXT1lO2tbdj4+Ml09ZjtrW3c+PjJdPWc7a1tqPj4yXT1oO2lmKChsWyhrW3E+PjJdfDApKzQyPj4wXXwwKSYxNil7a1tvPj4yXT0wO0I9a1tvPj4yXXwwO3I9QztyZXR1cm4gQnwwfWg9UGgoa1trW3A+PjJdPj4yXXwwLGtbKGtbcT4+Ml18MCkrNjQ+PjJdfDApfDA7a1t5Pj4yXT1oO2g9bngoa1twPj4yXXwwKXwwO2tbQj4+Ml09aDtpZigoa1t1Pj4yXXwwKTwwKWtbdT4+Ml09a1soa1twPj4yXXwwKSs0MD4+Ml07aD1rW3U+PjJdfDA7a1t1Pj4yXT1oKzE7a1ttPj4yXT1oO2lmKGtbdz4+Ml18MClrW2tbdz4+Ml0+PjJdPWtbbT4+Ml07ZG8gaWYoISgobFsoa1txPj4yXXwwKSs0Mj4+MF18MCkmMzIpKXtpZigoa1t2Pj4yXXwwKSE9MD8obFtrW3Y+PjJdPj4wXXwwfDApPT0wOjApe249MTE7YnJlYWt9Y0Eoa1twPj4yXXwwLGtbbT4+Ml18MCxrW3k+PjJdfDAsa1txPj4yXXwwLGtbcz4+Ml18MCl9ZWxzZSBuPTExO3doaWxlKDApO2lmKChufDApPT0xMSliQShrW3A+PjJdfDAsa1t5Pj4yXXwwLGtbKGtbcT4+Ml18MCkrMjg+PjJdfDAsKGtbcz4+Ml18MCk9PTEwNSYyNTUsa1trW3E+PjJdPj4yXXwwKTtpZihrW2o+PjJdfDApa1trW2o+PjJdPj4yXT1rW3U+PjJdO2tbeD4+Ml09MDtrW0E+PjJdPWtbKGtbcT4+Ml18MCkrOD4+Ml07d2hpbGUoMSl7aj1rW3U+PjJdfDA7aWYoIShrW0E+PjJdfDApKWJyZWFrO2tbdT4+Ml09aisxO2tbej4+Ml09ajtpZigoaVsoa1tBPj4yXXwwKSs1NT4+MF0mM3wwKT09Mj8oKGxbKGtbcT4+Ml18MCkrNDI+PjBdfDApJjMyfDApIT0wOjApe2lmKGtbdz4+Ml18MClrW2tbdz4+Ml0+PjJdPWtbej4+Ml07aVt0Pj4wXT0wfWlmKCEoKGtbdj4+Ml18MCkhPTA/KGxbKGtbdj4+Ml18MCkrKChrW3g+PjJdfDApKzEpPj4wXXwwfDApPT0wOjApKXt0eChrW0I+PjJdfDAsa1tzPj4yXXwwLGtbej4+Ml18MCxrWyhrW0E+PjJdfDApKzQ0Pj4yXXwwLGtbeT4+Ml18MCl8MDtkQShrW3A+PjJdfDAsa1tBPj4yXXwwKTtUaChrW0I+PjJdfDAsaVt0Pj4wXXwwKX1rW0E+PjJdPWtbKGtbQT4+Ml18MCkrMjA+PjJdO2tbeD4+Ml09KGtbeD4+Ml18MCkrMX1pZigoanwwKT4oa1soa1twPj4yXXwwKSs0MD4+Ml18MCkpa1soa1twPj4yXXwwKSs0MD4+Ml09a1t1Pj4yXTtrW28+PjJdPWtbeD4+Ml07Qj1rW28+PjJdfDA7cj1DO3JldHVybiBCfDB9ZnVuY3Rpb24gUUMoYSl7YT1hfDA7dmFyIGI9MCxjPTA7Yj1yO3I9cisxNnwwO2M9YjtrW2M+PjJdPWE7YT0oa1tjPj4yXXwwKSsxNDR8MDtqW2E+PjFdPWpbYT4+MV0mLTMzO3I9YjtyZXR1cm59ZnVuY3Rpb24gUkMoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGk9MCxqPTAsbT0wLG49MCxvPTAscD0wO249cjtyPXIrNDh8MDtkPW4rMzZ8MDtlPW4rMzJ8MDtmPW4rMjh8MDtpPW4rMjR8MDtqPW4rMjB8MDtnPW4rMTZ8MDtwPW4rMTJ8MDtvPW4rOHwwO2g9bis0fDA7bT1uO2tbZD4+Ml09YTtrW2U+PjJdPWI7a1tmPj4yXT1jO2E9RmUoa1tkPj4yXXwwKXwwO2tbbz4+Ml09YTthPUVlKGtbZD4+Ml18MCl8MDtrW2g+PjJdPWE7YT1qZShrW2tbZj4+Ml0+PjJdfDApfDA7a1tqPj4yXT1hO2E9amUoa1soa1tmPj4yXXwwKSs0Pj4yXXwwKXwwO2tbaT4+Ml09YTthPWtlKGtba1tmPj4yXT4+Ml18MCl8MDtrW3A+PjJdPWE7aWYoKGtbcD4+Ml18MCk+KGtbKGtbbz4+Ml18MCkrOTYrMzI+PjJdfDApKXtzZShrW2Q+PjJdfDAsMzI4NzAsLTEpO3I9bjtyZXR1cm59ZG8gaWYoKGtbZT4+Ml18MCk9PTMpe3A9amUoa1soa1tmPj4yXXwwKSs4Pj4yXXwwKXwwO2tbbT4+Ml09cDtpZighKGtbbT4+Ml18MCkpe3I9bjtyZXR1cm59aWYoKGV5KGtbbT4+Ml18MCwtMSl8MCk9PTEpe3A9VEMobSl8MDtrW2c+PjJdPXA7YnJlYWt9c2Uoa1tkPj4yXXwwLDMyOTAzLC0xKTtyPW47cmV0dXJufWVsc2Uga1tnPj4yXT1sWyhrW2g+PjJdfDApKzI+PjBdO3doaWxlKDApO2lmKCEoKGtbaT4+Ml18MCkhPTAmKGtbaj4+Ml18MCkhPTApKXtyPW47cmV0dXJufXA9a1tkPj4yXXwwO3RlKHAsYmkoa1tqPj4yXXwwLGtbaT4+Ml18MCxrW2g+PjJdfDAsa1tnPj4yXXwwKXwwKTtyPW47cmV0dXJufWZ1bmN0aW9uIFNDKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MDtmPXI7cj1yKzE2fDA7aD1mKzh8MDtnPWYrNHwwO2Q9ZisxMnwwO2U9ZjtrW2g+PjJdPWE7a1tnPj4yXT1iO2lbZD4+MF09YztiPXVpKGtbaD4+Ml18MCxrW2c+PjJdfDAsMiwxLDApfDA7a1tlPj4yXT1iO2lmKCEoa1tlPj4yXXwwKSl7cj1mO3JldHVybn1oPShrW2U+PjJdfDApKzJ8MDtqW2g+PjFdPW1baD4+MV18MHwobFtkPj4wXXwwKTtyPWY7cmV0dXJufWZ1bmN0aW9uIFRDKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MCxlPTAsZj0wO2Q9cjtyPXIrMTZ8MDtiPWQrNHwwO2M9ZDtrW2I+PjJdPWE7ZT1rW2I+PjJdfDA7YT1rW2U+PjJdfDA7a1tlPj4yXT1hKzE7a1tjPj4yXT1sW2E+PjBdO2lmKChrW2M+PjJdfDApPj4+MDwxOTIpe2U9a1tjPj4yXXwwO3I9ZDtyZXR1cm4gZXwwfWtbYz4+Ml09bFsyNTU2MysoKGtbYz4+Ml18MCktMTkyKT4+MF07d2hpbGUoMSl7YT1rW2M+PjJdfDA7aWYoKChsW2tba1tiPj4yXT4+Ml0+PjBdfDApJjE5MnwwKSE9MTI4KWJyZWFrO2Y9a1tiPj4yXXwwO2U9a1tmPj4yXXwwO2tbZj4+Ml09ZSsxO2tbYz4+Ml09KGE8PDYpKyg2MyYobFtlPj4wXXwwKSl9aWYoKGE+Pj4wPj0xMjg/KGtbYz4+Ml0mLTIwNDh8MCkhPTU1Mjk2OjApPyhrW2M+PjJdJi0yfDApIT02NTUzNDowKXtmPWtbYz4+Ml18MDtyPWQ7cmV0dXJuIGZ8MH1rW2M+PjJdPTY1NTMzO2Y9a1tjPj4yXXwwO3I9ZDtyZXR1cm4gZnwwfWZ1bmN0aW9uIFVDKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MCxlPTA7ZT1yO3I9cisxNnwwO2I9ZSs0fDA7Yz1lO2tbYz4+Ml09YTtpZigoaVtrW2M+PjJdPj4wXXwwKT49NDg/KGlba1tjPj4yXT4+MF18MCk8PTUwOjApa1tiPj4yXT0oaVtrW2M+PjJdPj4wXXwwKS00ODtlbHNlIGQ9NDtkbyBpZigoZHwwKT09NCl7aWYoIShzZyhrW2M+PjJdfDAsMzMxMDUpfDApKXtrW2I+PjJdPTE7YnJlYWt9aWYoIShzZyhrW2M+PjJdfDAsMjYxNTkpfDApKXtrW2I+PjJdPTI7YnJlYWt9ZWxzZXtrW2I+PjJdPTA7YnJlYWt9fXdoaWxlKDApO3I9ZTtyZXR1cm4ga1tiPj4yXXwwfWZ1bmN0aW9uIFZDKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wO2M9cjtyPXIrMTZ8MDtlPWMrNHwwO2Q9YztrW2U+PjJdPWE7a1tkPj4yXT1iO2E9V0Moa1soa1tlPj4yXXwwKSsyMTI+PjJdfDAsa1tkPj4yXXwwKXwwO3I9YztyZXR1cm4gYXwwfWZ1bmN0aW9uIFdDKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MDtmPXI7cj1yKzE2fDA7Yz1mKzh8MDtkPWYrNHwwO2U9ZjtrW2M+PjJdPWE7a1tkPj4yXT1iO2lmKGtbZD4+Ml18MCl7aWYoKGtbZD4+Ml18MCk8MCl7Yj1rW2Q+PjJdfDA7Yj1rUygtMTAyNCwtMSxifDAsKChifDApPDApPDwzMT4+MzF8MCl8MDthPShrWyhrW2M+PjJdfDApKzI0Pj4yXXwwKSsoa1soa1tjPj4yXXwwKSsyOD4+Ml18MCl8MDthPWlTKGJ8MCxMfDAsYXwwLCgoYXwwKTwwKTw8MzE+PjMxfDApfDA7a1tkPj4yXT1hfWtbKGtbYz4+Ml18MCkrMjA+PjJdPWtbZD4+Ml19YT1taihrW2M+PjJdfDApfDA7a1tlPj4yXT1hO2lmKChrW2U+PjJdfDApPj0oa1soa1tjPj4yXXwwKSsyMD4+Ml18MCkpe2U9a1tlPj4yXXwwO3I9ZjtyZXR1cm4gZXwwfWtbZT4+Ml09a1soa1tjPj4yXXwwKSsyMD4+Ml07ZT1rW2U+PjJdfDA7cj1mO3JldHVybiBlfDB9ZnVuY3Rpb24gWEMoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MDtmPXI7cj1yKzE2fDA7ZD1mKzh8MDtlPWY7a1tkPj4yXT1hO2E9ZTtrW2E+PjJdPWI7a1thKzQ+PjJdPWM7aWYoIShrW2Q+PjJdfDApKXtyPWY7cmV0dXJufWM9ZTtlPWtbYys0Pj4yXXwwO2E9KGtbZD4+Ml18MCkrMTZ8MDtrW2E+PjJdPWtbYz4+Ml07a1thKzQ+PjJdPWU7cj1mO3JldHVybn1mdW5jdGlvbiBZQyhhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wO2c9cjtyPXIrMTZ8MDtkPWcrMTJ8MDtjPWcrOHwwO2Y9Zys0fDA7ZT1nO2tbZD4+Ml09YTtrW2M+PjJdPWI7aWYoISgoa1tkPj4yXXwwKSE9MCYoa1tjPj4yXXwwKSE9MCkpe3I9ZztyZXR1cm59a1tmPj4yXT0oa1tkPj4yXXwwKSsoKGtbYz4+Ml18MCkqNDB8MCk7a1tlPj4yXT1rWyhrW2Q+PjJdfDApKzMyPj4yXTtpZihrWyhrW2U+PjJdfDApKzQ1Nj4+Ml18MCl7ZG97aWYoa1soa1tkPj4yXXwwKSsyND4+Ml18MCliZyhrW2U+PjJdfDAsa1soa1tkPj4yXXwwKSsyMD4+Ml18MCk7YT0oa1tkPj4yXXwwKSs0MHwwO2tbZD4+Ml09YX13aGlsZShhPj4+MDwoa1tmPj4yXXwwKT4+PjApO3I9ZztyZXR1cm59ZG97Yz1rW2Q+PjJdfDA7aWYoISgobVsoa1tkPj4yXXwwKSs4Pj4xXXwwKSY5MzEyKSl7aWYoa1tjKzI0Pj4yXXwwKXtiZyhrW2U+PjJdfDAsa1soa1tkPj4yXXwwKSsyMD4+Ml18MCk7a1soa1tkPj4yXXwwKSsyND4+Ml09MH19ZWxzZSBmaChjKTtqWyhrW2Q+PjJdfDApKzg+PjFdPTEyODthPShrW2Q+PjJdfDApKzQwfDA7a1tkPj4yXT1hfXdoaWxlKGE+Pj4wPChrW2Y+PjJdfDApPj4+MCk7cj1nO3JldHVybn1mdW5jdGlvbiBaQyhhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGk9MDtpPXI7cj1yKzE2fDA7ZT1pKzh8MDtmPWkrNHwwO2c9aTtoPWkrMTJ8MDtrW2U+PjJdPWE7a1tmPj4yXT1iO2tbZz4+Ml09YztqW2g+PjFdPWQ7d2hpbGUoMSl7YT1rW2Y+PjJdfDA7a1tmPj4yXT1hKy0xO2lmKChhfDApPD0wKWJyZWFrO2tbKGtbZT4+Ml18MCkrMzI+PjJdPWtbZz4+Ml07alsoa1tlPj4yXXwwKSs4Pj4xXT1qW2g+PjFdfDA7a1soa1tlPj4yXXwwKSsyND4+Ml09MDtrW2U+PjJdPShrW2U+PjJdfDApKzQwfXI9aTtyZXR1cm59ZnVuY3Rpb24gX0MoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxpPTAsaj0wLGw9MCxtPTAsbj0wLG89MDtuPXI7cj1yKzgwfDA7aj1uKzh8MDtpPW47ZT1uKzQ0fDA7bz1uKzQwfDA7Zj1uKzM2fDA7Zz1uKzMyfDA7aD1uKzI4fDA7bD1uKzI0fDA7bT1uKzQ4fDA7a1tlPj4yXT1hO2tbbz4+Ml09YjtrW2Y+PjJdPWM7a1tnPj4yXT1kO2tbbD4+Ml09a1soa1soa1trW2U+PjJdPj4yXXwwKSsxNj4+Ml18MCkrKGtbbz4+Ml08PDQpPj4yXTtrW2g+PjJdPTE7d2hpbGUoMSl7aWYoKGtbaD4+Ml18MCk+NClicmVhaztrW2k+PjJdPWtbaD4+Ml07X2QoMjQsbSwzNDE0MSxpKXwwO2lmKERpKGtba1tlPj4yXT4+Ml18MCxtLGtbbD4+Ml18MCl8MCl7bz1rW2U+PjJdfDA7ZD1rW2Y+PjJdfDA7Yz1rW2c+PjJdfDA7a1tqPj4yXT1rW2w+PjJdO2tbais0Pj4yXT1tO2tbais4Pj4yXT1kO2tbaisxMj4+Ml09YztteChvLDMwOTM4LGopfWtbaD4+Ml09KGtbaD4+Ml18MCkrMX1yPW47cmV0dXJufWZ1bmN0aW9uICRDKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxpPTAsaj0wO2Q9cjtyPXIrNDh8MDtnPWQ7Zj1kKzM2fDA7aD1kKzMyfDA7aj1kKzI4fDA7aT1kKzI0fDA7ZT1kKzIwfDA7a1tmPj4yXT1hO2tbaD4+Ml09YjtrW2o+PjJdPWM7YT1ueChrW2Y+PjJdfDApfDA7a1tpPj4yXT1hO2E9Rngoa1tmPj4yXXwwKXwwO2tbZT4+Ml09YTt0eChrW2k+PjJdfDAsMTMwLGtbaD4+Ml18MCxrW2U+PjJdfDAsa1tqPj4yXXwwKXwwO2R5KGtbZj4+Ml18MCk7YT1rW2Y+PjJdfDA7aT0oa1tqPj4yXXwwKT09MT8xOTkwNToxOTkyNDtoPWtbaD4+Ml18MDtjPWtbZT4+Ml18MDtiPWtbZT4+Ml18MDtrW2c+PjJdPWtbKGtbKGtba1tmPj4yXT4+Ml18MCkrMTY+PjJdfDApKyhrW2o+PjJdPDw0KT4+Ml07a1tnKzQ+PjJdPWk7a1tnKzg+PjJdPWg7a1tnKzEyPj4yXT1jO2tbZysxNj4+Ml09YjtteChhLDM0MDg1LGcpO0h4KGtbZj4+Ml18MCxrW2U+PjJdfDApO3I9ZDtyZXR1cm59ZnVuY3Rpb24gYUQoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaT0wLGo9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MDtxPXI7cj1yKzQ4fDA7Zj1xKzM2fDA7Zz1xKzMyfDA7aD1xKzI4fDA7aT1xKzI0fDA7aj1xKzIwfDA7bD1xKzE2fDA7cD1xKzEyfDA7bT1xKzh8MDtvPXErNHwwO249cTtrW2c+PjJdPWE7a1toPj4yXT1iO2tbaT4+Ml09YztrW2o+PjJdPWQ7a1tsPj4yXT1lO2tbbT4+Ml09a1trW2o+PjJdPj4yXTtkbyBpZighKGtbbT4+Ml0mKGtbbT4+Ml18MCktMSkpe2tbbz4+Ml09KGtbbT4+Ml18MCk9PTA/MTprW20+PjJdPDwxO2M9aGEoa1tvPj4yXXwwLGtbaT4+Ml18MCl8MDtjPWN4KGtbZz4+Ml18MCxrW2g+PjJdfDAsYywoKGN8MCk8MCk8PDMxPj4zMSl8MDtrW24+PjJdPWM7aWYoa1tuPj4yXXwwKXtrW2g+PjJdPWtbbj4+Ml07YnJlYWt9a1trW2w+PjJdPj4yXT0tMTtrW2Y+PjJdPWtbaD4+Ml07cD1rW2Y+PjJdfDA7cj1xO3JldHVybiBwfDB9d2hpbGUoMCk7a1twPj4yXT1rW2g+PjJdO2M9aGEoa1ttPj4yXXwwLGtbaT4+Ml18MCl8MDtkUygoa1twPj4yXXwwKStjfDAsMCxrW2k+PjJdfDApfDA7a1trW2w+PjJdPj4yXT1rW20+PjJdO3A9a1tqPj4yXXwwO2tbcD4+Ml09KGtbcD4+Ml18MCkrMTtrW2Y+PjJdPWtbaD4+Ml07cD1rW2Y+PjJdfDA7cj1xO3JldHVybiBwfDB9ZnVuY3Rpb24gYkQoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaT0wLGo9MCxtPTAsbj0wLG89MCxwPTA7cD1yO3I9ciszMnwwO2Y9cCsyOHwwO2c9cCsyNHwwO2g9cCsyMHwwO2k9cCsxNnwwO2o9cCsxMnwwO209cCs4fDA7bz1wKzR8MDtuPXA7a1tmPj4yXT1hO2tbZz4+Ml09YjtrW2g+PjJdPWM7a1tpPj4yXT1kO2tbaj4+Ml09ZTtrW20+PjJdPTA7a1tvPj4yXT0wO2lmKGtbKGtba1tmPj4yXT4+Ml18MCkrMjQ+PjJdJjE2Nzc3MjE2KXtiPUp4KGtbZj4+Ml18MCxrW2c+PjJdfDApfDA7a1tvPj4yXT1ifWtbbj4+Ml09a1tvPj4yXTt3aGlsZSgxKXtpZighKGtbbj4+Ml18MCkpYnJlYWs7aWYoKGxbKGtbbj4+Ml18MCkrOD4+MF18MHwwKT09KGtbaD4+Ml18MCk/KEZHKGtbKGtbbj4+Ml18MCkrMTY+PjJdfDAsa1tpPj4yXXwwKXwwKSE9MDowKWtbbT4+Ml09a1ttPj4yXXwobFsoa1tuPj4yXXwwKSs5Pj4wXXwwKTtrW24+PjJdPWtbKGtbbj4+Ml18MCkrMzI+PjJdfWlmKCEoa1tqPj4yXXwwKSl7YT1rW20+PjJdfDA7YT0oYXwwKSE9MDtiPWtbbz4+Ml18MDtiPWE/YjowO3I9cDtyZXR1cm4gYnwwfWtba1tqPj4yXT4+Ml09a1ttPj4yXTthPWtbbT4+Ml18MDthPShhfDApIT0wO2I9a1tvPj4yXXwwO2I9YT9iOjA7cj1wO3JldHVybiBifDB9ZnVuY3Rpb24gY0QoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGk9MCxqPTAsbT0wO209cjtyPXIrMzJ8MDtpPW0rOHwwO2g9bTtkPW0rMjR8MDtlPW0rMjB8MDtmPW0rMTZ8MDtnPW0rMTJ8MDtrW2U+PjJdPWE7a1tmPj4yXT1iO2tbZz4+Ml09YztpZighKCgobFsoa1tmPj4yXXwwKSs0Mj4+MF18MCkmMTZ8MCkhPTA/KGM9KGN5KGtba1tlPj4yXT4+Ml18MCxrW2Y+PjJdfDApfDApKzR8MCwoa1soa1trW2M+PjJdPj4yXXwwKSs1Mj4+Ml18MCk9PTApOjApKWo9MztkbyBpZigoanwwKT09Myl7aWYoKCgobFsoa1tmPj4yXXwwKSs0Mj4+MF18MCkmMXwwKSE9MD8oa1soa1trW2U+PjJdPj4yXXwwKSsyND4+Ml0mMjA0OHwwKT09MDowKT8obFsoa1tlPj4yXXwwKSsxOD4+MF18MHwwKT09MDowKWJyZWFrO2lmKChrW2c+PjJdfDApPT0wPyhrWyhrW2Y+PjJdfDApKzEyPj4yXXwwKSE9MDowKXtqPWtbZT4+Ml18MDtrW2k+PjJdPWtba1tmPj4yXT4+Ml07T2goaiwzNTI1NyxpKTtrW2Q+PjJdPTE7aj1rW2Q+PjJdfDA7cj1tO3JldHVybiBqfDB9a1tkPj4yXT0wO2o9a1tkPj4yXXwwO3I9bTtyZXR1cm4ganwwfXdoaWxlKDApO2o9a1tlPj4yXXwwO2tbaD4+Ml09a1trW2Y+PjJdPj4yXTtPaChqLDM1MjI4LGgpO2tbZD4+Ml09MTtqPWtbZD4+Ml18MDtyPW07cmV0dXJuIGp8MH1mdW5jdGlvbiBkRChhKXthPWF8MDt2YXIgYj0wLGM9MDtiPXI7cj1yKzE2fDA7Yz1iO2tbYz4+Ml09YTthPShrW2M+PjJdfDApKzE0NHwwO2pbYT4+MV09althPj4xXSYtMTd8MTY7cj1iO3JldHVybn1mdW5jdGlvbiBlRChhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxuPTAsbz0wLHA9MCxxPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTAsRT0wLEY9MCxHPTAsSD0wLEk9MCxKPTAsSz0wLEw9MCxNPTAsTj0wLE89MDtPPXI7cj1yKzEyOHwwO3U9TysxMDh8MDt2PU8rMTA0fDA7dz1PKzEwMHwwO2Y9Tys5NnwwO3E9Tys5MnwwO3g9Tys4OHwwO3o9Tys4NHwwO2g9Tys4MHwwO0k9Tys3NnwwO0o9Tys3MnwwO0g9Tys2OHwwO249Tys2NHwwO0M9Tys2MHwwO0Q9Tys1NnwwO0Y9Tys1MnwwO0U9Tys0OHwwO3k9Tys0NHwwO3M9Tys0MHwwO0E9TyszNnwwO0I9TyszMnwwO009TysyOHwwO3Q9TysyNHwwO3A9TysyMHwwO0s9TysxNnwwO0w9TysxMnwwO2c9Tys4fDA7bz1PKzR8MDtHPU8rMTEyfDA7Tj1PO2tbdj4+Ml09YTtrW3c+PjJdPWI7a1tmPj4yXT1jO2tbcT4+Ml09ZDtrW3g+PjJdPWU7a1t6Pj4yXT1rW2tbdj4+Ml0+PjJdO2tbQT4+Ml09MDtrW0I+PjJdPTA7a1twPj4yXT0wO2lmKCEoa1tmPj4yXXwwKSl7a1t1Pj4yXT0wO049a1t1Pj4yXXwwO3I9TztyZXR1cm4gTnwwfWlmKChrWyhrW3Y+PjJdfDApKzQ3Mj4+Ml18MCk9PTA/KGtbKGtbZj4+Ml18MCkrNjQ+PjJdfDApPT0wOjApe2lmKEp4KGtbdj4+Ml18MCxrW3c+PjJdfDApfDApe2tbdT4+Ml09MDtOPWtbdT4+Ml18MDtyPU87cmV0dXJuIE58MH1pZihsWyhrW3c+PjJdfDApKzQyPj4wXSYxNil7a1t1Pj4yXT0wO049a1t1Pj4yXXwwO3I9TztyZXR1cm4gTnwwfWlmKChrW3E+PjJdfDApPT0xMCl7aWYoKGpbKGtbdz4+Ml18MCkrMzI+PjFdfDApPj0wKWtbcT4+Ml09bFsoa1t3Pj4yXXwwKSs0Mz4+MF07aWYoKGtbcT4+Ml18MCk9PTEwKWtbcT4+Ml09Mn1pZigoa1trWyhrW2Y+PjJdfDApKzI4Pj4yXT4+Ml18MCkhPTEpe2tbdT4+Ml09MDtOPWtbdT4+Ml18MDtyPU87cmV0dXJuIE58MH1pZihrWyhrWyhrW2Y+PjJdfDApKzI4Pj4yXXwwKSs4KzIwPj4yXXwwKXtrW3U+PjJdPTA7Tj1rW3U+PjJdfDA7cj1PO3JldHVybiBOfDB9aWYoa1soa1tmPj4yXXwwKSszMj4+Ml18MCl7a1t1Pj4yXT0wO049a1t1Pj4yXXwwO3I9TztyZXR1cm4gTnwwfWlmKGtbKGtbZj4+Ml18MCkrNDQ+PjJdfDApe2tbdT4+Ml09MDtOPWtbdT4+Ml18MDtyPU87cmV0dXJuIE58MH1pZihrWyhrW2Y+PjJdfDApKzM2Pj4yXXwwKXtrW3U+PjJdPTA7Tj1rW3U+PjJdfDA7cj1PO3JldHVybiBOfDB9aWYoa1soa1tmPj4yXXwwKSs1Nj4+Ml18MCl7a1t1Pj4yXT0wO049a1t1Pj4yXXwwO3I9TztyZXR1cm4gTnwwfWlmKGtbKGtbZj4+Ml18MCkrNDg+PjJdfDApe2tbdT4+Ml09MDtOPWtbdT4+Ml18MDtyPU87cmV0dXJuIE58MH1pZihrWyhrW2Y+PjJdfDApKzg+PjJdJjEpe2tbdT4+Ml09MDtOPWtbdT4+Ml18MDtyPU87cmV0dXJuIE58MH1rW2g+PjJdPWtba1tmPj4yXT4+Ml07aWYoKGtba1toPj4yXT4+Ml18MCkhPTEpe2tbdT4+Ml09MDtOPWtbdT4+Ml18MDtyPU87cmV0dXJuIE58MH1pZigobFtrW2tbKGtbaD4+Ml18MCkrND4+Ml0+PjJdPj4wXXwwKSE9MTYwKXtrW3U+PjJdPTA7Tj1rW3U+PjJdfDA7cj1PO3JldHVybiBOfDB9a1tuPj4yXT0oa1soa1tmPj4yXXwwKSsyOD4+Ml18MCkrODtjPXp4KGtbdj4+Ml18MCwwLGtbbj4+Ml18MCl8MDtrW0k+PjJdPWM7aWYoIShrW0k+PjJdfDApKXtrW3U+PjJdPTA7Tj1rW3U+PjJdfDA7cj1PO3JldHVybiBOfDB9aWYoKGtbST4+Ml18MCk9PShrW3c+PjJdfDApKXtrW3U+PjJdPTA7Tj1rW3U+PjJdfDA7cj1PO3JldHVybiBOfDB9aWYoKChsWyhrW3c+PjJdfDApKzQyPj4wXSYzMnwwKT09MHwwKSE9KChsWyhrW0k+PjJdfDApKzQyPj4wXSYzMnwwKT09MHwwKSl7a1t1Pj4yXT0wO049a1t1Pj4yXXwwO3I9TztyZXR1cm4gTnwwfWlmKGxbKGtbST4+Ml18MCkrNDI+PjBdJjE2KXtrW3U+PjJdPTA7Tj1rW3U+PjJdfDA7cj1PO3JldHVybiBOfDB9aWYoa1soa1tJPj4yXXwwKSsxMj4+Ml18MCl7a1t1Pj4yXT0wO049a1t1Pj4yXXwwO3I9TztyZXR1cm4gTnwwfWlmKChqWyhrW3c+PjJdfDApKzM0Pj4xXXwwKSE9KGpbKGtbST4+Ml18MCkrMzQ+PjFdfDApKXtrW3U+PjJdPTA7Tj1rW3U+PjJdfDA7cj1PO3JldHVybiBOfDB9aWYoKGpbKGtbdz4+Ml18MCkrMzI+PjFdfDApIT0oalsoa1tJPj4yXXwwKSszMj4+MV18MCkpe2tbdT4+Ml09MDtOPWtbdT4+Ml18MDtyPU87cmV0dXJuIE58MH1rW0M+PjJdPTA7YTp3aGlsZSgxKXtpZigoa1tDPj4yXXwwKT49KGpbKGtbdz4+Ml18MCkrMzQ+PjFdfDApKXtmPTY0O2JyZWFrfWtbZz4+Ml09KGtbKGtbdz4+Ml18MCkrND4+Ml18MCkrKGtbQz4+Ml08PDQpO2tbbz4+Ml09KGtbKGtbST4+Ml18MCkrND4+Ml18MCkrKGtbQz4+Ml08PDQpO2lmKChpWyhrW2c+PjJdfDApKzEzPj4wXXwwKSE9KGlbKGtbbz4+Ml18MCkrMTM+PjBdfDApKXtmPTUyO2JyZWFrfWlmKGJlKGtbKGtbZz4+Ml18MCkrOD4+Ml18MCxrWyhrW28+PjJdfDApKzg+PjJdfDApfDApe2Y9NTQ7YnJlYWt9aWYoKGxbKGtbZz4+Ml18MCkrMTI+PjBdfDApIT0wPyhpWyhrW28+PjJdfDApKzEyPj4wXXwwKT09MDowKXtmPTU3O2JyZWFrfWRvIGlmKChrW0M+PjJdfDApPjApe2lmKCgoa1soa1tnPj4yXXwwKSs0Pj4yXXwwKT09MHwwKSE9KChrWyhrW28+PjJdfDApKzQ+PjJdfDApPT0wfDApKXtmPTYyO2JyZWFrIGF9aWYoIShrWyhrW2c+PjJdfDApKzQ+PjJdfDApKWJyZWFrO2lmKHJSKGtbKGtbKGtbZz4+Ml18MCkrND4+Ml18MCkrOD4+Ml18MCxrWyhrWyhrW28+PjJdfDApKzQ+PjJdfDApKzg+PjJdfDApfDApe2Y9NjI7YnJlYWsgYX19d2hpbGUoMCk7a1tDPj4yXT0oa1tDPj4yXXwwKSsxfWlmKChmfDApPT01Mil7a1t1Pj4yXT0wO049a1t1Pj4yXXwwO3I9TztyZXR1cm4gTnwwfWVsc2UgaWYoKGZ8MCk9PTU0KXtrW3U+PjJdPTA7Tj1rW3U+PjJdfDA7cj1PO3JldHVybiBOfDB9ZWxzZSBpZigoZnwwKT09NTcpe2tbdT4+Ml09MDtOPWtbdT4+Ml18MDtyPU87cmV0dXJuIE58MH1lbHNlIGlmKChmfDApPT02Mil7a1t1Pj4yXT0wO049a1t1Pj4yXXwwO3I9TztyZXR1cm4gTnwwfWVsc2UgaWYoKGZ8MCk9PTY0KXtrW0g+PjJdPWtbKGtbdz4+Ml18MCkrOD4+Ml07d2hpbGUoMSl7aWYoIShrW0g+PjJdfDApKWJyZWFrO2lmKGxbKGtbSD4+Ml18MCkrNTQ+PjBdfDApa1twPj4yXT0xO2tbSj4+Ml09a1soa1tJPj4yXXwwKSs4Pj4yXTt3aGlsZSgxKXtpZighKGtbSj4+Ml18MCkpYnJlYWs7aWYoSEcoa1tIPj4yXXwwLGtbSj4+Ml18MCl8MClicmVhaztrW0o+PjJdPWtbKGtbSj4+Ml18MCkrMjA+PjJdfWlmKCEoa1tKPj4yXXwwKSl7Zj03MzticmVha31rW0g+PjJdPWtbKGtbSD4+Ml18MCkrMjA+PjJdfWlmKChmfDApPT03Myl7a1t1Pj4yXT0wO049a1t1Pj4yXXwwO3I9TztyZXR1cm4gTnwwfWRvIGlmKGtbKGtbdz4+Ml18MCkrMjQ+PjJdfDApe2lmKCEoVnkoa1soa1tJPj4yXXwwKSsyND4+Ml18MCxrWyhrW3c+PjJdfDApKzI0Pj4yXXwwLC0xKXwwKSlicmVhaztrW3U+PjJdPTA7Tj1rW3U+PjJdfDA7cj1PO3JldHVybiBOfDB9d2hpbGUoMCk7ZG8gaWYoa1soa1t6Pj4yXXwwKSsyND4+Ml0mNTI0Mjg4KXtpZighKGtbKGtbdz4+Ml18MCkrMTY+PjJdfDApKWJyZWFrO2tbdT4+Ml09MDtOPWtbdT4+Ml18MDtyPU87cmV0dXJuIE58MH13aGlsZSgwKTtpZihrWyhrW3o+PjJdfDApKzI0Pj4yXSYxMjgpe2tbdT4+Ml09MDtOPWtbdT4+Ml18MDtyPU87cmV0dXJuIE58MH1vPVBoKGtbej4+Ml18MCxrWyhrW0k+PjJdfDApKzY0Pj4yXXwwKXwwO2tbRD4+Ml09bztvPW54KGtbdj4+Ml18MCl8MDtrW00+PjJdPW87Q3goa1t2Pj4yXXwwLGtbRD4+Ml18MCk7bz0oa1t2Pj4yXXwwKSs0MHwwO2M9a1tvPj4yXXwwO2tbbz4+Ml09YysxO2tbRj4+Ml09YztjPShrW3Y+PjJdfDApKzQwfDA7bz1rW2M+PjJdfDA7a1tjPj4yXT1vKzE7a1tFPj4yXT1vO289ZkQoa1t2Pj4yXXwwLGtbeD4+Ml18MCxrW3c+PjJdfDApfDA7a1t0Pj4yXT1vO289Rngoa1t2Pj4yXXwwKXwwO2tbSz4+Ml09bztvPUZ4KGtbdj4+Ml18MCl8MDtrW0w+PjJdPW87Y0Eoa1t2Pj4yXXwwLGtbRT4+Ml18MCxrW3g+PjJdfDAsa1t3Pj4yXXwwLDEwNSk7ZG8gaWYoIShrWyhrW3o+PjJdfDApKzI0Pj4yXSYyNjg0MzU0NTYpKXtpZigoalsoa1t3Pj4yXXwwKSszMj4+MV18MCk8MCl7aWYoISgoa1twPj4yXXwwKSE9MD8xOihrWyhrW3c+PjJdfDApKzg+PjJdfDApIT0wKSlmPTg3fWVsc2UgaWYoIShrW3A+PjJdfDApKWY9ODc7aWYoKGZ8MCk9PTg3PyEoKGtbcT4+Ml18MCkhPTImKGtbcT4+Ml18MCkhPTEpOjApYnJlYWs7cD1zeChrW00+PjJdfDAsNTcsa1tFPj4yXXwwLDApfDA7a1t5Pj4yXT1wO3A9cHgoa1tNPj4yXXwwLDEzKXwwO2tbQT4+Ml09cDtoQShrW00+PjJdfDAsa1t5Pj4yXXwwKX13aGlsZSgwKTtmPWtbdj4+Ml18MDtpZighKGxbKGtbST4+Ml18MCkrNDI+PjBdJjMyKSl7Y0EoZixrW0Y+PjJdfDAsa1tEPj4yXXwwLGtbST4+Ml18MCwxMDQpO3A9c3goa1tNPj4yXXwwLDU3LGtbRj4+Ml18MCwwKXwwO2tbQj4+Ml09cDtkbyBpZigoalsoa1t3Pj4yXXwwKSszMj4+MV18MCk8MCl7Zj1rW00+PjJdfDA7aWYoIShrWyhrW3c+PjJdfDApKzg+PjJdfDApKXt0PXN4KGYsMTE0LGtbRT4+Ml18MCxrW0w+PjJdfDApfDA7a1t5Pj4yXT10O2JyZWFrfWVsc2V7dD1zeChmLDEyMyxrW0Y+PjJdfDAsa1tMPj4yXXwwKXwwO2tbeT4+Ml09dDticmVha319ZWxzZXtwPXN4KGtbTT4+Ml18MCwxMjMsa1tGPj4yXXwwLGtbTD4+Ml18MCl8MDtrW3k+PjJdPXA7cD10eChrW00+PjJdfDAsMzMsa1tFPj4yXXwwLDAsa1tMPj4yXXwwKXwwO2tbcz4+Ml09cDt1RihrW3Y+PjJdfDAsa1txPj4yXXwwLGtbdz4+Ml18MCk7aEEoa1tNPj4yXXwwLGtbcz4+Ml18MCk7bEQoa1t2Pj4yXXwwLGtbdD4+Ml18MCxrW0w+PjJdfDApfXdoaWxlKDApO3N4KGtbTT4+Ml18MCwxMjIsa1tGPj4yXXwwLGtbSz4+Ml18MCl8MDt3eChrW00+PjJdfDAsMTE1LGtbRT4+Ml18MCxrW0s+PjJdfDAsa1tMPj4yXXwwLGtbdz4+Ml18MCwtMjApfDA7VGgoa1tNPj4yXXwwLDExKTtzeChrW00+PjJdfDAsNyxrW0Y+PjJdfDAsa1t5Pj4yXXwwKXwwO3N4KGtbTT4+Ml18MCwxMTEsa1tGPj4yXXwwLDApfDA7c3goa1tNPj4yXXwwLDExMSxrW0U+PjJdfDAsMCl8MH1lbHNle2JBKGYsa1t4Pj4yXXwwLGtbKGtbdz4+Ml18MCkrMjg+PjJdfDAsMSxrW2tbdz4+Ml0+PjJdfDApO2JBKGtbdj4+Ml18MCxrW0Q+PjJdfDAsa1soa1tJPj4yXXwwKSsyOD4+Ml18MCwwLGtba1tJPj4yXT4+Ml18MCl9a1tIPj4yXT1rWyhrW3c+PjJdfDApKzg+PjJdO3doaWxlKDEpe2lmKCEoa1tIPj4yXXwwKSlicmVhaztpW0c+PjBdPTA7a1tKPj4yXT1rWyhrW0k+PjJdfDApKzg+PjJdO3doaWxlKDEpe2lmKCEoa1tKPj4yXXwwKSlicmVhaztpZihIRyhrW0g+PjJdfDAsa1tKPj4yXXwwKXwwKWJyZWFrO2tbSj4+Ml09a1soa1tKPj4yXXwwKSsyMD4+Ml19dHgoa1tNPj4yXXwwLDEwNCxrW0Y+PjJdfDAsa1soa1tKPj4yXXwwKSs0ND4+Ml18MCxrW0Q+PjJdfDApfDA7ZEEoa1t2Pj4yXXwwLGtbSj4+Ml18MCk7dHgoa1tNPj4yXXwwLDEwNSxrW0U+PjJdfDAsa1soa1tIPj4yXXwwKSs0ND4+Ml18MCxrW3g+PjJdfDApfDA7ZEEoa1t2Pj4yXXwwLGtbSD4+Ml18MCk7VGgoa1tNPj4yXXwwLDEpO3c9c3goa1tNPj4yXXwwLDU3LGtbRj4+Ml18MCwwKXwwO2tbeT4+Ml09dztzeChrW00+PjJdfDAsMTIxLGtbRj4+Ml18MCxrW0s+PjJdfDApfDA7ZG8gaWYoa1soa1t6Pj4yXXwwKSsyND4+Ml0mMjY4NDM1NDU2KXtrW0M+PjJdPTA7d2hpbGUoMSl7aWYoKGtbQz4+Ml18MCk+PShtWyhrW0o+PjJdfDApKzUyPj4xXXwwKSlicmVhaztrW04+PjJdPWtbKGtbKGtbSj4+Ml18MCkrMzI+PjJdfDApKyhrW0M+PjJdPDwyKT4+Ml07aWYoYmUoMzQ4MzQsa1tOPj4yXXwwKXwwKWJyZWFrO2tbQz4+Ml09KGtbQz4+Ml18MCkrMX1pZigoa1tDPj4yXXwwKSE9KG1bKGtbSj4+Ml18MCkrNTI+PjFdfDApKWJyZWFrO2lbRz4+MF09MTY7dHgoa1tNPj4yXXwwLDUzLGtbRT4+Ml18MCwwLC0xKXwwfXdoaWxlKDApO2RvIGlmKGxbKGtbST4+Ml18MCkrNDI+PjBdJjMyKXtpZigoaVsoa1tIPj4yXXwwKSs1NT4+MF0mM3wwKSE9MilicmVhaztpW0c+PjBdPWxbRz4+MF18MX13aGlsZSgwKTt0eChrW00+PjJdfDAsMTI2LGtbRT4+Ml18MCxrW0s+PjJdfDAsMSl8MDtUaChrW00+PjJdfDAsaVtHPj4wXXwwKTtzeChrW00+PjJdfDAsNyxrW0Y+PjJdfDAsKGtbeT4+Ml18MCkrMXwwKXwwO2hBKGtbTT4+Ml18MCxrW3k+PjJdfDApO3N4KGtbTT4+Ml18MCwxMTEsa1tGPj4yXXwwLDApfDA7c3goa1tNPj4yXXwwLDExMSxrW0U+PjJdfDAsMCl8MDtrW0g+PjJdPWtbKGtbSD4+Ml18MCkrMjA+PjJdfWlmKGtbQj4+Ml18MCloQShrW00+PjJdfDAsa1tCPj4yXXwwKTtIeChrW3Y+PjJdfDAsa1tMPj4yXXwwKTtIeChrW3Y+PjJdfDAsa1tLPj4yXXwwKTtpZihrW0E+PjJdfDApe3JEKGtbdj4+Ml18MCk7c3goa1tNPj4yXXwwLDc1LDAsMCl8MDtoQShrW00+PjJdfDAsa1tBPj4yXXwwKTtzeChrW00+PjJdfDAsMTExLGtbRT4+Ml18MCwwKXwwO2tbdT4+Ml09MDtOPWtbdT4+Ml18MDtyPU87cmV0dXJuIE58MH1lbHNle2tbdT4+Ml09MTtOPWtbdT4+Ml18MDtyPU87cmV0dXJuIE58MH19fWtbdT4+Ml09MDtOPWtbdT4+Ml18MDtyPU87cmV0dXJuIE58MH1mdW5jdGlvbiBmRChhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaT0wLGo9MCxtPTA7bT1yO3I9ciszMnwwO2Q9bSsyNHwwO2U9bSsyMHwwO2Y9bSsxNnwwO2c9bSsxMnwwO2g9bSs4fDA7aj1tKzR8MDtpPW07a1tlPj4yXT1hO2tbZj4+Ml09YjtrW2c+PjJdPWM7a1toPj4yXT0wO2lmKCgobFsoa1tnPj4yXXwwKSs0Mj4+MF18MCkmOHwwKSE9MD8oa1soa1trW2U+PjJdPj4yXXwwKSsyND4+Ml0mMjY4NDM1NDU2fDApPT0wOjApe2I9a1tlPj4yXXwwO2lmKGtbKGtbZT4+Ml18MCkrMTI0Pj4yXXwwKWI9a1tiKzEyND4+Ml18MDtrW2o+PjJdPWI7a1tpPj4yXT1rWyhrW2o+PjJdfDApKzEyMD4+Ml07d2hpbGUoMSl7aWYoa1tpPj4yXXwwKWE9KGtbKGtbaT4+Ml18MCkrND4+Ml18MCkhPShrW2c+PjJdfDApO2Vsc2UgYT0wO2I9a1tpPj4yXXwwO2lmKCFhKWJyZWFrO2tbaT4+Ml09a1tiPj4yXX1kbyBpZighYil7ZT1keChrW2tbZT4+Ml0+PjJdfDAsMTYsMCl8MDtrW2k+PjJdPWU7aWYoa1tpPj4yXXwwKXtrW2tbaT4+Ml0+PjJdPWtbKGtbaj4+Ml18MCkrMTIwPj4yXTtrWyhrW2o+PjJdfDApKzEyMD4+Ml09a1tpPj4yXTtrWyhrW2k+PjJdfDApKzQ+PjJdPWtbZz4+Ml07a1soa1tpPj4yXXwwKSs4Pj4yXT1rW2Y+PjJdO2Y9KGtbaj4+Ml18MCkrNDR8MDtrW2Y+PjJdPShrW2Y+PjJdfDApKzE7Zj0oa1tqPj4yXXwwKSs0NHwwO2c9KGtbZj4+Ml18MCkrMXwwO2tbZj4+Ml09ZztrWyhrW2k+PjJdfDApKzEyPj4yXT1nO2o9KGtbaj4+Ml18MCkrNDR8MDtrW2o+PjJdPShrW2o+PjJdfDApKzE7YnJlYWt9a1tkPj4yXT0wO2o9a1tkPj4yXXwwO3I9bTtyZXR1cm4ganwwfXdoaWxlKDApO2tbaD4+Ml09a1soa1tpPj4yXXwwKSsxMj4+Ml19a1tkPj4yXT1rW2g+PjJdO2o9a1tkPj4yXXwwO3I9bTtyZXR1cm4ganwwfWZ1bmN0aW9uIGdEKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wO2M9cjtyPXIrMTZ8MDtkPWMrNHwwO2U9YztrW2Q+PjJdPWE7a1tlPj4yXT1iO2FBKGtbZD4+Ml18MCw3MyxrW2U+PjJdfDApfDA7aVsoa1soa1tkPj4yXXwwKSsxMj4+Ml18MCkrMTk+PjBdPTA7a1soa1soa1tkPj4yXXwwKSsxMj4+Ml18MCkrMjg+PjJdPTA7cj1jO3JldHVybn1mdW5jdGlvbiBoRChhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaT0wLGo9MCxtPTAsbj0wLG89MCxwPTAscT0wO3E9cjtyPXIrNDh8MDtwPXErNDB8MDtkPXErMzZ8MDtlPXErMzJ8MDtmPXErMjh8MDtvPXErMjR8MDtnPXErMjB8MDtoPXErMTZ8MDttPXErMTJ8MDtqPXErOHwwO2k9cSs0fDA7bj1xO2tbZD4+Ml09YTtrW2U+PjJdPWI7a1tmPj4yXT1jO2M9bngoa1tkPj4yXXwwKXwwO2tbbz4+Ml09YztjPUd4KGtbbz4+Ml18MCl8MDtrW2g+PjJdPWM7aWYoKGxbKGtbZj4+Ml18MCkrNDI+PjBdfDApJjE2KWQ9Y3koa1trW2Q+PjJdPj4yXXwwLGtbZj4+Ml18MCl8MDtlbHNlIGQ9MDtrW20+PjJdPWQ7a1tnPj4yXT0xO2E6d2hpbGUoMSl7aWYoKGtbZz4+Ml18MCk+PShrW2g+PjJdfDApKXtkPTE4O2JyZWFrfWM9b0Eoa1tvPj4yXXwwLGtbZz4+Ml18MCl8MDtrW2o+PjJdPWM7YjpkbyBpZigobFtrW2o+PjJdPj4wXXwwfDApPT0xMDQ/KGtbKGtbaj4+Ml18MCkrMTI+PjJdfDApPT0oa1tlPj4yXXwwKTowKXtrW24+PjJdPWtbKGtbaj4+Ml18MCkrOD4+Ml07aWYoKGtbbj4+Ml18MCk9PShrWyhrW2Y+PjJdfDApKzI4Pj4yXXwwKSl7ZD04O2JyZWFrIGF9a1tpPj4yXT1rWyhrW2Y+PjJdfDApKzg+PjJdO3doaWxlKDEpe2lmKCEoa1tpPj4yXXwwKSlicmVhayBiO2lmKChrW24+PjJdfDApPT0oa1soa1tpPj4yXXwwKSs0ND4+Ml18MCkpe2Q9MTI7YnJlYWsgYX1rW2k+PjJdPWtbKGtbaT4+Ml18MCkrMjA+PjJdfX13aGlsZSgwKTtpZigobFtrW2o+PjJdPj4wXXwwfDApPT0xNTU/KGtbKGtbaj4+Ml18MCkrMTY+PjJdfDApPT0oa1ttPj4yXXwwKTowKXtkPTE2O2JyZWFrfWtbZz4+Ml09KGtbZz4+Ml18MCkrMX1pZigoZHwwKT09OCl7a1twPj4yXT0xO3A9a1twPj4yXXwwO3I9cTtyZXR1cm4gcHwwfWVsc2UgaWYoKGR8MCk9PTEyKXtrW3A+PjJdPTE7cD1rW3A+PjJdfDA7cj1xO3JldHVybiBwfDB9ZWxzZSBpZigoZHwwKT09MTYpe2tbcD4+Ml09MTtwPWtbcD4+Ml18MDtyPXE7cmV0dXJuIHB8MH1lbHNlIGlmKChkfDApPT0xOCl7a1twPj4yXT0wO3A9a1twPj4yXXwwO3I9cTtyZXR1cm4gcHwwfXJldHVybiAwfWZ1bmN0aW9uIGlEKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxpPTA7ZD1yO3I9ciszMnwwO2k9ZCsxNnwwO2Y9ZCsxMnwwO2c9ZCs4fDA7aD1kKzR8MDtlPWQ7a1tpPj4yXT1hO2tbZj4+Ml09YjtrW2c+PjJdPWM7a1toPj4yXT1rWyhrW2k+PjJdfDApKzg+PjJdOyRBKGtbaT4+Ml18MCxrW2Y+PjJdfDAsa1tnPj4yXXwwKTthPShrW2k+PjJdfDApKzQ0fDA7Yz0oa1thPj4yXXwwKSsxfDA7a1thPj4yXT1jO2tbZT4+Ml09YztzeChrW2g+PjJdfDAsODQsa1tnPj4yXXwwLGtbZT4+Ml18MCl8MDtyQihrW2Y+PjJdfDAsa1tlPj4yXXwwKTtyPWQ7cmV0dXJufWZ1bmN0aW9uIGpEKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxsPTAsbT0wO209cjtyPXIrMzJ8MDtkPW0rMjB8MDtlPW0rMTZ8MDtnPW0rMTJ8MDtoPW0rOHwwO2w9bSs0fDA7Zj1tO2tbZD4+Ml09YTtrW2U+PjJdPWI7a1tnPj4yXT1jO2tbbD4+Ml09a1soa1tlPj4yXXwwKSsyMD4+Ml07aWYoIShrW2w+PjJdfDApKXthPV9BKGtbZD4+Ml18MCl8MDtrW2Y+PjJdPWE7YT0oalsoa1tlPj4yXXwwKSszND4+MV18MCkrMXwwO2E9TWgoMCxhLCgoYXwwKTwwKTw8MzE+PjMxKXwwO2tbbD4+Ml09YTtpZighKGtbbD4+Ml18MCkpe3doKGtbZj4+Ml18MCk7cj1tO3JldHVybn1rW2g+PjJdPTA7d2hpbGUoMSl7aWYoKGtbaD4+Ml18MCk+PShqWyhrW2U+PjJdfDApKzM0Pj4xXXwwKSlicmVhaztpWyhrW2w+PjJdfDApKyhrW2g+PjJdfDApPj4wXT1pWyhrWyhrW2U+PjJdfDApKzQ+PjJdfDApKyhrW2g+PjJdPDw0KSsxMz4+MF18MDtrW2g+PjJdPShrW2g+PjJdfDApKzF9ZG97YT1rW2g+PjJdfDA7a1toPj4yXT1hKy0xO2lbKGtbbD4+Ml18MCkrYT4+MF09MDtpZigoa1toPj4yXXwwKTwwKWJyZWFrfXdoaWxlKChpWyhrW2w+PjJdfDApKyhrW2g+PjJdfDApPj4wXXwwKT09NjUpO2tbKGtbZT4+Ml18MCkrMjA+PjJdPWtbbD4+Ml19YT1UZihrW2w+PjJdfDApfDA7a1toPj4yXT1hO2lmKCEoa1toPj4yXXwwKSl7cj1tO3JldHVybn1kPWtbZD4+Ml18MDtpZihrW2c+PjJdfDApe3d4KGQsOTgsa1tnPj4yXXwwLGtbaD4+Ml18MCwwLGtbbD4+Ml18MCxrW2g+PjJdfDApfDA7cj1tO3JldHVybn1lbHNle1doKGQsLTEsa1tsPj4yXXwwLGtbaD4+Ml18MCk7cj1tO3JldHVybn19ZnVuY3Rpb24ga0QoYSxiLGMsZCxlLGYsZyxoLGkpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2k9aXwwO3ZhciBqPTAsbT0wLG49MCxvPTAscD0wLHE9MCxzPTAsdD0wLHU9MCx2PTAsdz0wO3Y9cjtyPXIrNDh8MDtqPXYrMzZ8MDt3PXYrMzJ8MDttPXYrMjh8MDtuPXYrMjR8MDtvPXYrMjB8MDtwPXYrMTZ8MDtxPXYrMTJ8MDtzPXYrOHwwO3Q9dis0fDA7dT12O2tbaj4+Ml09YTtrW3c+PjJdPWI7a1ttPj4yXT1jO2tbbj4+Ml09ZDtrW28+PjJdPWU7a1twPj4yXT1mO2tbcT4+Ml09ZztrW3M+PjJdPWg7a1t0Pj4yXT1pO2tbdT4+Ml09a1t3Pj4yXTt3aGlsZSgxKXtpZighKGtbdT4+Ml18MCkpYnJlYWs7aWYoKChsWyhrW3U+PjJdfDApKzg+PjBdfDB8MCk9PShrW20+PjJdfDApPyhsWyhrW3U+PjJdfDApKzk+PjBdfDB8MCk9PShrW28+PjJdfDApOjApPyhGRyhrWyhrW3U+PjJdfDApKzE2Pj4yXXwwLGtbbj4+Ml18MCl8MCkhPTA6MClERihrW2o+PjJdfDAsa1t1Pj4yXXwwLGtbcD4+Ml18MCxrW3E+PjJdfDAsa1tzPj4yXXwwLGtbdD4+Ml18MCk7a1t1Pj4yXT1rWyhrW3U+PjJdfDApKzMyPj4yXX1yPXY7cmV0dXJufWZ1bmN0aW9uIGxEKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wO2c9cjtyPXIrMTZ8MDtkPWcrOHwwO2U9Zys0fDA7Zj1nO2tbZD4+Ml09YTtrW2U+PjJdPWI7a1tmPj4yXT1jO2lmKChrW2U+PjJdfDApPD0wKXtyPWc7cmV0dXJufXN4KGtbKGtbZD4+Ml18MCkrOD4+Ml18MCwxNDUsa1tlPj4yXXwwLGtbZj4+Ml18MCl8MDtyPWc7cmV0dXJufWZ1bmN0aW9uIG1EKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wO2c9cjtyPXIrMTZ8MDtkPWcrOHwwO2U9Zys0fDA7Zj1nO2tbZD4+Ml09YTtrW2U+PjJdPWI7a1tmPj4yXT1jO2lmKChsWyhrW2Q+PjJdfDApKzIzPj4wXXwwfDApIT0wPyhqQihrW2U+PjJdfDApfDApIT0wOjApe0dCKGtbZD4+Ml18MCxrW2U+PjJdfDAsa1tmPj4yXXwwLDApO3I9ZztyZXR1cm59JEEoa1tkPj4yXXwwLGtbZT4+Ml18MCxrW2Y+PjJdfDApO3I9ZztyZXR1cm59ZnVuY3Rpb24gbkQoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTAsaT0wLGo9MDtpPXI7cj1yKzMyfDA7aj1pKzIwfDA7Yz1pKzE2fDA7Zz1pKzEyfDA7ZT1pKzh8MDtmPWkrNHwwO2Q9aTtrW2o+PjJdPWE7a1tjPj4yXT1iO2E9a1tqPj4yXXwwO2lmKGtbKGtbaj4+Ml18MCkrMTI0Pj4yXXwwKWE9a1thKzEyND4+Ml18MDtrW2c+PjJdPWE7a1tlPj4yXT0wO3doaWxlKDEpe2lmKChrW2U+PjJdfDApPj0oa1soa1tnPj4yXXwwKSs0MTI+PjJdfDApKWJyZWFrO2lmKChrW2M+PjJdfDApPT0oa1soa1soa1tnPj4yXXwwKSs0NjA+PjJdfDApKyhrW2U+PjJdPDwyKT4+Ml18MCkpe2g9MTA7YnJlYWt9a1tlPj4yXT0oa1tlPj4yXXwwKSsxfWlmKChofDApPT0xMCl7cj1pO3JldHVybn1rW2Y+PjJdPShrWyhrW2c+PjJdfDApKzQxMj4+Ml18MCkrMTw8MjtqPWtbZj4+Ml18MDtqPVdkKGtbKGtbZz4+Ml18MCkrNDYwPj4yXXwwLGosKChqfDApPDApPDwzMT4+MzEpfDA7a1tkPj4yXT1qO2lmKGtbZD4+Ml18MCl7a1soa1tnPj4yXXwwKSs0NjA+PjJdPWtbZD4+Ml07aD1rW2M+PjJdfDA7Zj0oa1tnPj4yXXwwKSs0MTJ8MDtqPWtbZj4+Ml18MDtrW2Y+PjJdPWorMTtrWyhrWyhrW2c+PjJdfDApKzQ2MD4+Ml18MCkrKGo8PDIpPj4yXT1oO3I9aTtyZXR1cm59ZWxzZXt3aChrW2tbZz4+Ml0+PjJdfDApO3I9aTtyZXR1cm59fWZ1bmN0aW9uIG9EKGEsYixjLGQsZSxmLGcsaCxuLG8scCxxKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtuPW58MDtvPW98MDtwPXB8MDtxPXF8MDt2YXIgcz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTAsRT0wLEY9MCxHPTAsSD0wLEk9MCxKPTAsSz0wLEw9MCxNPTAsTj0wLE89MCxQPTAsUT0wLFI9MCxTPTAsVD0wLFU9MCxWPTAsVz0wLFg9MCxZPTAsWj0wLF89MCwkPTAsYWE9MCxiYT0wLGNhPTAsZGE9MCxlYT0wLGZhPTAsZ2E9MCxoYT0wLGlhPTAsamE9MCxrYT0wLGxhPTAsbWE9MCxuYT0wO25hPXI7cj1yKzE5MnwwO0E9bmE7RT1uYSsxNzZ8MDtGPW5hKzE3MnwwO0g9bmErMTY4fDA7ST1uYSsxNjR8MDtKPW5hKzE2MHwwO0s9bmErMTU2fDA7TD1uYSsxNTJ8MDtNPW5hKzE4M3wwO049bmErMTgyfDA7Tz1uYSsxNDh8MDtHPW5hKzE0NHwwO3M9bmErMTQwfDA7a2E9bmErMTM2fDA7Y2E9bmErMTMyfDA7ZGE9bmErMTI4fDA7Uz1uYSsxMjR8MDtUPW5hKzEyMHwwO1o9bmErMTE2fDA7dz1uYSsxMTJ8MDskPW5hKzEwOHwwO3Q9bmErMTA0fDA7amE9bmErMTAwfDA7Xz1uYSs5NnwwO1g9bmErOTJ8MDtXPW5hKzg4fDA7WT1uYSsxODF8MDtSPW5hKzE4MHwwO2lhPW5hKzg0fDA7Qj1uYSs4MHwwO3g9bmErNzZ8MDt2PW5hKzcyfDA7eT1uYSs2OHwwO0M9bmErNjR8MDt1PW5hKzYwfDA7ej1uYSs1NnwwO2dhPW5hKzUyfDA7aGE9bmErNDh8MDtWPW5hKzQ0fDA7UT1uYSs0MHwwO1U9bmErMzZ8MDtsYT1uYSszMnwwO21hPW5hKzI4fDA7UD1uYSsyNHwwO2FhPW5hKzIwfDA7ZmE9bmErMTZ8MDtiYT1uYSsxMnwwO2VhPW5hKzh8MDtrW0U+PjJdPWE7a1tGPj4yXT1iO2tbSD4+Ml09YztrW0k+PjJdPWQ7a1tKPj4yXT1lO2tbSz4+Ml09ZjtrW0w+PjJdPWc7aVtNPj4wXT1oO2lbTj4+MF09bjtrW08+PjJdPW87a1tHPj4yXT1wO2tbcz4+Ml09cTtrW2RhPj4yXT0wO2tbamE+PjJdPTA7a1tYPj4yXT0wO2tbVz4+Ml09MDtpW1I+PjBdPTA7a1tpYT4+Ml09LTE7aVtZPj4wXT0oa1tMPj4yXXwwKSE9MDtrW1M+PjJdPWtba1tFPj4yXT4+Ml07Zz1ueChrW0U+PjJdfDApfDA7a1trYT4+Ml09ZztrW3c+PjJdPWpbKGtbRj4+Ml18MCkrMzQ+PjFdO2lmKCEobFsoa1tGPj4yXXwwKSs0Mj4+MF0mMzIpKXtrW2RhPj4yXT0wO2tbXz4+Ml09MX1lbHNle2c9VGooa1tGPj4yXXwwKXwwO2tbZGE+PjJdPWc7a1tfPj4yXT1tWyhrW2RhPj4yXXwwKSs1MD4+MV19a1tUPj4yXT0wO3doaWxlKDEpe2lmKChrW1Q+PjJdfDApPj0oa1t3Pj4yXXwwKSlicmVhazthOmRvIGlmKChrW1Q+PjJdfDApIT0oalsoa1tGPj4yXXwwKSszMj4+MV18MCkpe2lmKChrW3M+PjJdfDApIT0wPyhrWyhrW3M+PjJdfDApKyhrW1Q+PjJdPDwyKT4+Ml18MCk8MDowKWJyZWFrO2tbJD4+Ml09bFsoa1soa1tGPj4yXXwwKSs0Pj4yXXwwKSsoa1tUPj4yXTw8NCkrMTI+PjBdO2lmKGtbJD4+Ml18MCl7aWYoKGxbTj4+MF18MCk9PTEwKXtpZigoa1skPj4yXXwwKT09MTApa1skPj4yXT0yfWVsc2Uga1skPj4yXT1sW04+PjBdO2lmKChrWyQ+PjJdfDApPT01PyhrWyhrWyhrW0Y+PjJdfDApKzQ+PjJdfDApKyhrW1Q+PjJdPDw0KSs0Pj4yXXwwKT09MDowKWtbJD4+Ml09Mjtzd2l0Y2goa1skPj4yXXwwKXtjYXNlIDI6e2R5KGtbRT4+Ml18MCk7YnJlYWt9Y2FzZSAzOmNhc2UgMTpicmVhaztjYXNlIDQ6e3N4KGtba2E+PjJdfDAsMzQsKGtbSz4+Ml18MCkrMSsoa1tUPj4yXXwwKXwwLGtbTz4+Ml18MCl8MDticmVhayBhfWRlZmF1bHQ6e2c9YUEoa1trYT4+Ml18MCwzNSwoa1tLPj4yXXwwKSsxKyhrW1Q+PjJdfDApfDApfDA7a1t0Pj4yXT1nOyRBKGtbRT4+Ml18MCxrWyhrWyhrW0Y+PjJdfDApKzQ+PjJdfDApKyhrW1Q+PjJdPDw0KSs0Pj4yXXwwLChrW0s+PjJdfDApKzErKGtbVD4+Ml18MCl8MCk7aEEoa1trYT4+Ml18MCxrW3Q+PjJdfDApO2JyZWFrIGF9fWc9a1tTPj4yXXwwO2Y9a1soa1soa1tGPj4yXXwwKSs0Pj4yXXwwKSsoa1tUPj4yXTw8NCk+PjJdfDA7a1tBPj4yXT1rW2tbRj4+Ml0+PjJdO2tbQSs0Pj4yXT1mO2c9UWgoZywzMDE2MSxBKXwwO2tbQj4+Ml09Zzt3eChrW2thPj4yXXwwLDc0LDEyOTksa1skPj4yXXwwLChrW0s+PjJdfDApKzErKGtbVD4+Ml18MCl8MCxrW0I+PjJdfDAsLTEpfDA7VGgoa1trYT4+Ml18MCwxKX19d2hpbGUoMCk7a1tUPj4yXT0oa1tUPj4yXXwwKSsxfWI6ZG8gaWYoKGtbKGtbRj4+Ml18MCkrMjQ+PjJdfDApIT0wPyhrWyhrW1M+PjJdfDApKzI0Pj4yXSY4MTkyfDApPT0wOjApe2tbeD4+Ml09a1soa1tGPj4yXXwwKSsyND4+Ml07a1soa1tFPj4yXXwwKSs1Nj4+Ml09KGtbSz4+Ml18MCkrMTtrWyQ+PjJdPShsW04+PjBdfDApIT0xMD9sW04+PjBdfDA6MjtrW1Q+PjJdPTA7d2hpbGUoMSl7aWYoKGtbVD4+Ml18MCk+PShrW2tbeD4+Ml0+PjJdfDApKWJyZWFrIGI7a1t5Pj4yXT1rWyhrWyhrW3g+PjJdfDApKzQ+PjJdfDApKygoa1tUPj4yXXwwKSoyMHwwKT4+Ml07aWYoISgoa1tzPj4yXXwwKSE9MD8odEYoa1t5Pj4yXXwwLGtbcz4+Ml18MCxsW00+PjBdfDApfDApIT0wOjApKXtCPWVBKGtba2E+PjJdfDApfDA7a1t2Pj4yXT1CO3RCKGtbRT4+Ml18MCxrW3k+PjJdfDAsa1t2Pj4yXXwwLDE2KTtpZigoa1skPj4yXXwwKT09NClnQShrW2thPj4yXXwwLGtbTz4+Ml18MCl8MDtlbHNle2tbQz4+Ml09a1soa1soa1t4Pj4yXXwwKSs0Pj4yXXwwKSsoKGtbVD4+Ml18MCkqMjB8MCkrND4+Ml07aWYoIShrW0M+PjJdfDApKWtbQz4+Ml09a1trW0Y+PjJdPj4yXTtpZigoa1skPj4yXXwwKT09NSlrWyQ+PjJdPTI7REEoa1tFPj4yXXwwLDI3NSxrWyQ+PjJdfDAsa1tDPj4yXXwwLDAsMyl9aUEoa1trYT4+Ml18MCxrW3Y+PjJdfDApfWtbVD4+Ml09KGtbVD4+Ml18MCkrMX19d2hpbGUoMCk7aWYoKGxbTT4+MF18MCkhPTAmKGtbZGE+PjJdfDApPT0wKXtDPWVBKGtba2E+PjJdfDApfDA7a1t1Pj4yXT1DO2tbJD4+Ml09bFsoa1tGPj4yXXwwKSs0Mz4+MF07aWYoKGxbTj4+MF18MCk9PTEwKXtpZigoa1skPj4yXXwwKT09MTApa1skPj4yXT0yfWVsc2Uga1skPj4yXT1sW04+PjBdO2lmKGlbWT4+MF18MCl7dHgoa1trYT4+Ml18MCwzNyxrW0s+PjJdfDAsa1t1Pj4yXXwwLGtbTD4+Ml18MCl8MDtUaChrW2thPj4yXXwwLC0xMTIpfWM6ZG8gaWYoKGtbJD4+Ml18MCk9PTU/KGxbTj4+MF18MCkhPTU6MCl7a1tjYT4+Ml09a1soa1tGPj4yXXwwKSs4Pj4yXTt3aGlsZSgxKXtpZighKGtbY2E+PjJdfDApKWJyZWFrIGM7aWYoKGxbKGtbY2E+PjJdfDApKzU0Pj4wXXwwKT09NClicmVhaztpZigobFsoa1tjYT4+Ml18MCkrNTQ+PjBdfDApPT0zKWJyZWFrO2tbY2E+PjJdPWtbKGtbY2E+PjJdfDApKzIwPj4yXX1DPXB4KGtba2E+PjJdfDAsMTMpfDA7a1tYPj4yXT1DfXdoaWxlKDApO3R4KGtba2E+PjJdfDAsMzMsa1tJPj4yXXwwLGtbdT4+Ml18MCxrW0s+PjJdfDApfDA7c3dpdGNoKGtbJD4+Ml18MCl7Y2FzZSAzOmNhc2UgMjpjYXNlIDE6e0Q9NTU7YnJlYWt9Y2FzZSA1OntrW3o+PjJdPTA7aWYoa1soa1tTPj4yXXwwKSsyND4+Ml0mMjYyMTQ0KXtDPWJEKGtbRT4+Ml18MCxrW0Y+PjJdfDAsMTA5LDAsMCl8MDtrW3o+PjJdPUN9aWYoKGtbej4+Ml18MCk9PTA/KHZGKGtbRT4+Ml18MCxrW0Y+PjJdfDAsMCwwKXwwKT09MDowKXtpZihrWyhrW0Y+PjJdfDApKzg+PjJdfDApe3dGKGtbRT4+Ml18MCk7eUYoa1tFPj4yXXwwLGtbRj4+Ml18MCxrW0k+PjJdfDAsa1tKPj4yXXwwLDAsLTEpfX1lbHNle3dGKGtbRT4+Ml18MCk7eEYoa1tFPj4yXXwwLGtbRj4+Ml18MCxrW3o+PjJdfDAsa1tJPj4yXXwwLGtbSj4+Ml18MCxrW0s+PjJdfDAsMSwwLDUsMSwtMSl9a1tqYT4+Ml09MTticmVha31jYXNlIDQ6e2dBKGtba2E+PjJdfDAsa1tPPj4yXXwwKXwwO2JyZWFrfWRlZmF1bHQ6e2tbJD4+Ml09MjtEPTU1fX1pZigoRHwwKT09NTUpdUYoa1tFPj4yXXwwLGtbJD4+Ml18MCxrW0Y+PjJdfDApO2lBKGtba2E+PjJdfDAsa1t1Pj4yXXwwKTtpZihrW1g+PjJdfDApe0Q9cHgoa1trYT4+Ml18MCwxMyl8MDtrW1c+PjJdPUQ7aEEoa1trYT4+Ml18MCxrW1g+PjJdfDApfX1rW1o+PjJdPTA7a1tjYT4+Ml09a1soa1tGPj4yXXwwKSs4Pj4yXTt3aGlsZSgxKXtpZighKGtbY2E+PjJdfDApKWJyZWFrO2RvIGlmKGtbKGtbSD4+Ml18MCkrKGtbWj4+Ml08PDIpPj4yXXwwKXtpZighKGxbUj4+MF18MCkpe2pEKGtba2E+PjJdfDAsa1tGPj4yXXwwLChrW0s+PjJdfDApKzF8MCk7aVtSPj4wXT0xfWtbVj4+Ml09KGtbSj4+Ml18MCkrKGtbWj4+Ml18MCk7RD1lQShrW2thPj4yXXwwKXwwO2tbUT4+Ml09RDtpZihrWyhrW2NhPj4yXXwwKSszNj4+Ml18MCl7c3goa1trYT4+Ml18MCw3OSwwLGtbKGtbSD4+Ml18MCkrKGtbWj4+Ml08PDIpPj4yXXwwKXwwO2tbKGtbRT4+Ml18MCkrNTY+PjJdPShrW0s+PjJdfDApKzE7TEEoa1tFPj4yXXwwLGtbKGtbY2E+PjJdfDApKzM2Pj4yXXwwLGtbUT4+Ml18MCwxNik7a1soa1tFPj4yXXwwKSs1Nj4+Ml09MH1EPU1BKGtbRT4+Ml18MCxtWyhrW2NhPj4yXXwwKSs1Mj4+MV18MCl8MDtrW2dhPj4yXT1EO2tbVD4+Ml09MDt3aGlsZSgxKXtpZigoa1tUPj4yXXwwKT49KG1bKGtbY2E+PjJdfDApKzUyPj4xXXwwKSlicmVhaztrW1U+PjJdPWpbKGtbKGtbY2E+PjJdfDApKzQ+PjJdfDApKyhrW1Q+PjJdPDwxKT4+MV07ZG8gaWYoKGtbVT4+Ml18MCk9PS0yKXtrWyhrW0U+PjJdfDApKzU2Pj4yXT0oa1tLPj4yXXwwKSsxO1dBKGtbRT4+Ml18MCxrWyhrWyhrWyhrW2NhPj4yXXwwKSs0MD4+Ml18MCkrND4+Ml18MCkrKChrW1Q+PjJdfDApKjIwfDApPj4yXXwwLChrW2dhPj4yXXwwKSsoa1tUPj4yXXwwKXwwKTtrWyhrW0U+PjJdfDApKzU2Pj4yXT0wfWVsc2V7aWYoKGtbVT4+Ml18MCkhPS0xPyhrW1U+PjJdfDApIT0oalsoa1tGPj4yXXwwKSszMj4+MV18MCk6MClrW2xhPj4yXT0oa1tVPj4yXXwwKSsoa1tLPj4yXXwwKSsxO2Vsc2V7aWYoKGtbaWE+PjJdfDApPT0oKGtbZ2E+PjJdfDApKyhrW1Q+PjJdfDApfDApKWJyZWFrO2tbbGE+PjJdPWtbSz4+Ml07aWYoa1soa1tjYT4+Ml18MCkrMzY+PjJdfDApcz0tMTtlbHNlIHM9KGtbZ2E+PjJdfDApKyhrW1Q+PjJdfDApfDA7a1tpYT4+Ml09c31zeChrW2thPj4yXXwwLChrW1U+PjJdfDApPDA/ODY6ODUsa1tsYT4+Ml18MCwoa1tnYT4+Ml18MCkrKGtbVD4+Ml18MCl8MCl8MH13aGlsZSgwKTtrW1Q+PjJdPShrW1Q+PjJdfDApKzF9dHgoa1trYT4+Ml18MCw5OSxrW2dhPj4yXXwwLG1bKGtbY2E+PjJdfDApKzUyPj4xXXwwLGtbKGtbSD4+Ml18MCkrKGtbWj4+Ml08PDIpPj4yXXwwKXwwO2VCKGtbRT4+Ml18MCxrW2dhPj4yXXwwLG1bKGtbY2E+PjJdfDApKzUyPj4xXXwwKTtpZigoKGxbWT4+MF18MCkhPTA/KGtbZGE+PjJdfDApPT0oa1tjYT4+Ml18MCk6MCk/KGxbTT4+MF18MCk9PTA6MCl7aUEoa1trYT4+Ml18MCxrW1E+PjJdfDApO2JyZWFrfWtbJD4+Ml09bFsoa1tjYT4+Ml18MCkrNTQ+PjBdO2lmKCEoa1skPj4yXXwwKSl7UEEoa1tFPj4yXXwwLGtbZ2E+PjJdfDAsbVsoa1tjYT4+Ml18MCkrNTI+PjFdfDApO2lBKGtba2E+PjJdfDAsa1tRPj4yXXwwKTticmVha31pZigobFtOPj4wXXwwKT09MTApe2lmKChrWyQ+PjJdfDApPT0xMClrWyQ+PjJdPTJ9ZWxzZSBrWyQ+PjJdPWxbTj4+MF07U2goa1trYT4+Ml18MCwyOSxrW1Y+PjJdfDAsa1tRPj4yXXwwLGtbZ2E+PjJdfDAsbVsoa1tjYT4+Ml18MCkrNTA+PjFdfDApfDA7aWYoKGtbY2E+PjJdfDApPT0oa1tkYT4+Ml18MCkpcz1rW2dhPj4yXXwwO2Vsc2Ugcz1NQShrW0U+PjJdfDAsa1tfPj4yXXwwKXwwO2tbaGE+PjJdPXM7ZDpkbyBpZigobFtZPj4wXXwwKSE9MHwoa1skPj4yXXwwKT09NSl7aWYoIShsWyhrW0Y+PjJdfDApKzQyPj4wXSYzMikpe3N4KGtba2E+PjJdfDAsMTI5LGtbVj4+Ml18MCxrW2hhPj4yXXwwKXwwO2lmKCEoaVtZPj4wXXwwKSlicmVhazt0eChrW2thPj4yXXwwLDM3LGtbaGE+PjJdfDAsa1tRPj4yXXwwLGtbTD4+Ml18MCl8MDtUaChrW2thPj4yXXwwLC0xMTIpO2JyZWFrfWU6ZG8gaWYoKGtbY2E+PjJdfDApIT0oa1tkYT4+Ml18MCkpe2tbVD4+Ml09MDt3aGlsZSgxKXtpZigoa1tUPj4yXXwwKT49KG1bKGtbZGE+PjJdfDApKzUwPj4xXXwwKSlicmVhayBlO0Q9KFlBKGtbY2E+PjJdfDAsalsoa1soa1tkYT4+Ml18MCkrND4+Ml18MCkrKGtbVD4+Ml08PDEpPj4xXXwwKXwwKTw8MTY+PjE2O2tbbWE+PjJdPUQ7dHgoa1trYT4+Ml18MCw5NixrW1Y+PjJdfDAsa1ttYT4+Ml18MCwoa1toYT4+Ml18MCkrKGtbVD4+Ml18MCl8MCl8MDtrW1Q+PjJdPShrW1Q+PjJdfDApKzF9fXdoaWxlKDApO2lmKGlbWT4+MF18MCl7RD1HeChrW2thPj4yXXwwKXwwO2tbUD4+Ml09RCsobVsoa1tkYT4+Ml18MCkrNTA+PjFdfDApO2tbYWE+PjJdPTM2O2tbZmE+PjJdPShpWyhrW2NhPj4yXXwwKSs1NT4+MF0mM3wwKT09Mj9rW2dhPj4yXXwwOmtbaGE+PjJdfDA7a1tUPj4yXT0wO3doaWxlKDEpe2lmKChrW1Q+PjJdfDApPj0obVsoa1tkYT4+Ml18MCkrNTA+PjFdfDApKWJyZWFrIGQ7RD1mQShrW0U+PjJdfDAsa1soa1soa1tkYT4+Ml18MCkrMzI+PjJdfDApKyhrW1Q+PjJdPDwyKT4+Ml18MCl8MDtrW2JhPj4yXT1EO2tbbWE+PjJdPWpbKGtbKGtbZGE+PjJdfDApKzQ+PjJdfDApKyhrW1Q+PjJdPDwxKT4+MV07aWYoKGtbVD4+Ml18MCk9PSgobVsoa1tkYT4+Ml18MCkrNTA+PjFdfDApLTF8MCkpe2tbUD4+Ml09a1tRPj4yXTtrW2FhPj4yXT0zN313eChrW2thPj4yXXwwLGtbYWE+PjJdfDAsKGtbTD4+Ml18MCkrMSsoa1ttYT4+Ml18MCl8MCxrW1A+PjJdfDAsKGtbZmE+PjJdfDApKyhrW1Q+PjJdfDApfDAsa1tiYT4+Ml18MCwtNCl8MDtUaChrW2thPj4yXXwwLC0xMTIpO2tbVD4+Ml09KGtbVD4+Ml18MCkrMX19fXdoaWxlKDApO3N3aXRjaChrWyQ+PjJdfDApe2Nhc2UgMzpjYXNlIDI6Y2FzZSAxOntBQShrW0U+PjJdfDAsa1skPj4yXXwwLGtbY2E+PjJdfDApO2JyZWFrfWNhc2UgNDp7Z0Eoa1trYT4+Ml18MCxrW08+PjJdfDApfDA7YnJlYWt9ZGVmYXVsdDp7a1tlYT4+Ml09MDt3RihrW0U+PjJdfDApO2lmKGtbKGtbUz4+Ml18MCkrMjQ+PjJdJjI2MjE0NCl7RD1iRChrW0U+PjJdfDAsa1tGPj4yXXwwLDEwOSwwLDApfDA7a1tlYT4+Ml09RH14RihrW0U+PjJdfDAsa1tGPj4yXXwwLGtbZWE+PjJdfDAsa1tJPj4yXXwwLGtbSj4+Ml18MCxrW2hhPj4yXXwwLGtbXz4+Ml0mNjU1MzUsMCw1LCgoa1tjYT4+Ml18MCk9PShrW2RhPj4yXXwwKT8xOjApJjI1NSwtMSk7a1tqYT4+Ml09MX19aUEoa1trYT4+Ml18MCxrW1E+PjJdfDApO1BBKGtbRT4+Ml18MCxrW2dhPj4yXXwwLG1bKGtbY2E+PjJdfDApKzUyPj4xXXwwKTtpZigoa1toYT4+Ml18MCkhPShrW2dhPj4yXXwwKSlQQShrW0U+PjJdfDAsa1toYT4+Ml18MCxrW18+PjJdfDApfXdoaWxlKDApO2tbY2E+PjJdPWtbKGtbY2E+PjJdfDApKzIwPj4yXTtrW1o+PjJdPShrW1o+PjJdfDApKzF9aWYoIShrW1g+PjJdfDApKXtsYT1rW2phPj4yXXwwO21hPWtbRz4+Ml18MDtrW21hPj4yXT1sYTtyPW5hO3JldHVybn1nQShrW2thPj4yXXwwLChrW1g+PjJdfDApKzF8MCl8MDtoQShrW2thPj4yXXwwLGtbVz4+Ml18MCk7bGE9a1tqYT4+Ml18MDttYT1rW0c+PjJdfDA7a1ttYT4+Ml09bGE7cj1uYTtyZXR1cm59ZnVuY3Rpb24gcEQoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTAsRT0wLEY9MCxHPTAsSD0wLEk9MCxKPTAsSz0wLEw9MCxNPTAsTj0wLE89MDtPPXI7cj1yKzExMnwwO2c9TysxMDh8MDtoPU8rMTA0fDA7bT1PKzEwMHwwO249Tys5NnwwO289Tys5MnwwO3A9Tys4OHwwO3Y9Tys4NHwwO0Q9Tys4MHwwO3o9Tys3NnwwO009Tys3MnwwO0M9Tys2OHwwO0k9Tys2NHwwO0U9Tys2MHwwO3Q9Tys1NnwwO3E9Tys1MnwwO3k9Tys0OHwwO3g9Tys0NHwwO3U9Tys0MHwwO0s9TyszNnwwO0E9TyszMnwwO0I9TysyOHwwO0o9TysyNHwwO0w9TysyMHwwO0Y9TysxNnwwO0g9TysxMnwwO3M9Tys4fDA7Rz1PKzR8MDt3PU87a1tnPj4yXT1hO2tbaD4+Ml09YjtrW20+PjJdPWM7a1tuPj4yXT1kO2tbbz4+Ml09ZTtrW3A+PjJdPWY7a1t2Pj4yXT1rW2tbZz4+Ml0+PjJdO2tbQz4+Ml09bFsoa1tnPj4yXXwwKSsxNTA+PjBdO2lmKCEoa1soa1t2Pj4yXXwwKSsyND4+Ml0mNTI0Mjg4KSl7cj1PO3JldHVybn1jPVBoKGtbdj4+Ml18MCxrWyhrW2g+PjJdfDApKzY0Pj4yXXwwKXwwO2tbej4+Ml09YztrW00+PjJdPWtbKGtbKGtbdj4+Ml18MCkrMTY+PjJdfDApKyhrW3o+PjJdPDw0KT4+Ml07a1tEPj4yXT1rWyhrW2g+PjJdfDApKzE2Pj4yXTthOndoaWxlKDEpe2lmKCEoa1tEPj4yXXwwKSl7Tj0zOTticmVha31rW0U+PjJdPTA7a1t0Pj4yXT0wO2tbdT4+Ml09MDtpZighKCgoa1tvPj4yXXwwKSE9MD8oYmUoa1trW2g+PjJdPj4yXXwwLGtbKGtbRD4+Ml18MCkrOD4+Ml18MCl8MCkhPTA6MCk/KHREKGtbaD4+Ml18MCxrW0Q+PjJdfDAsa1tvPj4yXXwwLGtbcD4+Ml18MCl8MCk9PTA6MCkpTj03O2RvIGlmKChOfDApPT03KXtOPTA7aWYoaVsoa1tnPj4yXXwwKSsxNTA+PjBdfDApe2M9RGkoa1t2Pj4yXXwwLGtbKGtbRD4+Ml18MCkrOD4+Ml18MCxrW00+PjJdfDApfDA7a1tJPj4yXT1jfWVsc2V7Yz1OaChrW2c+PjJdfDAsMCxrWyhrW0Q+PjJdfDApKzg+PjJdfDAsa1tNPj4yXXwwKXwwO2tbST4+Ml09Y31pZigoa1tJPj4yXXwwKSE9MD8oTEMoa1tnPj4yXXwwLGtbST4+Ml18MCxrW0Q+PjJdfDAsRSx0KXwwKT09MDowKXtpZihrW3Q+PjJdfDApa1txPj4yXT1rW3Q+PjJdO2Vsc2V7a1t5Pj4yXT1rWyhrW0Q+PjJdfDApKzM2Pj4yXTtrW3E+PjJdPXl9a1t4Pj4yXT0wO3doaWxlKDEpe2lmKChrW3g+PjJdfDApPj0oa1soa1tEPj4yXXwwKSsyMD4+Ml18MCkpYnJlYWs7aWYoKGtbKGtbcT4+Ml18MCkrKGtbeD4+Ml08PDIpPj4yXXwwKT09KGpbKGtbaD4+Ml18MCkrMzI+PjFdfDApKWtbKGtbcT4+Ml18MCkrKGtbeD4+Ml08PDIpPj4yXT0tMTtpZihrWyhrW3Y+PjJdfDApKzI5Nj4+Ml18MCl7aWYoa1tFPj4yXXwwKWU9alsoa1soa1tFPj4yXXwwKSs0Pj4yXXwwKSsoa1t4Pj4yXTw8MSk+PjFdfDA7ZWxzZSBlPWpbKGtbST4+Ml18MCkrMzI+PjFdfDA7a1tMPj4yXT1rWyhrWyhrW0k+PjJdfDApKzQ+PjJdfDApKyhlPDwxNj4+MTY8PDQpPj4yXTtjPXN6KGtbZz4+Ml18MCxrW2tbST4+Ml0+PjJdfDAsa1tMPj4yXXwwLGtbej4+Ml18MCl8MDtrW0o+PjJdPWM7a1t1Pj4yXT0oa1tKPj4yXXwwKT09MiYxfWtbeD4+Ml09KGtbeD4+Ml18MCkrMX1iQShrW2c+PjJdfDAsa1t6Pj4yXXwwLGtbKGtbST4+Ml18MCkrMjg+PjJdfDAsMCxrW2tbST4+Ml0+PjJdfDApO2M9KGtbZz4+Ml18MCkrNDB8MDtrW2M+PjJdPShrW2M+PjJdfDApKzE7aWYoa1ttPj4yXXwwKXVEKGtbZz4+Ml18MCxrW3o+PjJdfDAsa1tJPj4yXXwwLGtbRT4+Ml18MCxrW0Q+PjJdfDAsa1txPj4yXXwwLGtbbT4+Ml18MCwtMSxrW3U+PjJdfDApO2lmKChrW24+PjJdfDApIT0wPyh2RChrW2c+PjJdfDAsa1tEPj4yXXwwKXwwKT09MDowKXVEKGtbZz4+Ml18MCxrW3o+PjJdfDAsa1tJPj4yXXwwLGtbRT4+Ml18MCxrW0Q+PjJdfDAsa1txPj4yXXwwLGtbbj4+Ml18MCwxLGtbdT4+Ml18MCk7Ymcoa1t2Pj4yXXwwLGtbdD4+Ml18MCk7YnJlYWt9aWYoIShrW0M+PjJdfDApKXtOPTU5O2JyZWFrIGF9aWYobFsoa1t2Pj4yXXwwKSs2OT4+MF18MCl7Tj01OTticmVhayBhfWlmKCEoa1tJPj4yXXwwKSl7Yz1ueChrW2c+PjJdfDApfDA7a1tLPj4yXT1jO2M9R3goa1tLPj4yXXwwKXwwO2tbQT4+Ml09Yysoa1soa1tEPj4yXXwwKSsyMD4+Ml18MCkrMTtrW3g+PjJdPTA7d2hpbGUoMSl7aWYoKGtbeD4+Ml18MCk+PShrWyhrW0Q+PjJdfDApKzIwPj4yXXwwKSlicmVhaztrW0I+PjJdPShrWyhrW0Q+PjJdfDApKzM2KyhrW3g+PjJdPDwzKT4+Ml18MCkrKGtbbT4+Ml18MCkrMTtzeChrW0s+PjJdfDAsMzQsa1tCPj4yXXwwLGtbQT4+Ml18MCl8MDtrW3g+PjJdPShrW3g+PjJdfDApKzF9c3goa1tLPj4yXXwwLDE0NCxsWyhrW0Q+PjJdfDApKzI0Pj4wXXwwLC0xKXwwfX13aGlsZSgwKTtrW0Q+PjJdPWtbKGtbRD4+Ml18MCkrND4+Ml19aWYoKE58MCk9PTM5KXtNPWd5KGtbaD4+Ml18MCl8MDtrW0Q+PjJdPU07Yjp3aGlsZSgxKXtpZighKGtbRD4+Ml18MCkpe049NTk7YnJlYWt9a1tGPj4yXT0wO2tbcz4+Ml09MDtpZighKChrW28+PjJdfDApIT0wPyh3RChrW2g+PjJdfDAsa1tEPj4yXXwwLGtbbz4+Ml18MCxrW3A+PjJdfDApfDApPT0wOjApKU49NDM7ZG8gaWYoKE58MCk9PTQzKXtOPTA7aWYoKCgoaVsoa1tEPj4yXXwwKSsyND4+MF18MCk9PTA/KGtbKGtbdj4+Ml18MCkrMjQ+PjJdJjMzNTU0NDMyfDApPT0wOjApPyhrWyhrW2c+PjJdfDApKzEyND4+Ml18MCk9PTA6MCk/KGlbKGtbZz4+Ml18MCkrMjA+PjBdfDApPT0wOjApYnJlYWs7aWYoTEMoa1tnPj4yXXwwLGtbaD4+Ml18MCxrW0Q+PjJdfDAsRixzKXwwKXtpZighKGtbQz4+Ml18MCkpe049NTk7YnJlYWsgYn1pZihsWyhrW3Y+PjJdfDApKzY5Pj4wXXwwKXtOPTU5O2JyZWFrIGJ9ZWxzZSBicmVha31NPWl3KGtbdj4+Ml18MCwwLDAsMCl8MDtrW0g+PjJdPU07aWYoa1tIPj4yXXwwKXtrW0c+PjJdPShrW0g+PjJdfDApKzg7a1soa1tHPj4yXXwwKSsxNj4+Ml09a1trW0Q+PjJdPj4yXTtrWyhrW0c+PjJdfDApKzg+PjJdPWtba1trW0Q+PjJdPj4yXT4+Ml07TD0oa1soa1tHPj4yXXwwKSsxNj4+Ml18MCkrMzZ8MDtqW0w+PjFdPShqW0w+PjFdfDApKzE8PDE2Pj4xNjtMPShrW2c+PjJdfDApKzQwfDA7TT1rW0w+PjJdfDA7a1tMPj4yXT1NKzE7a1soa1tHPj4yXXwwKSs0ND4+Ml09TTtpZihrW24+PjJdfDApeEQoa1tnPj4yXXwwLGtbSD4+Ml18MCxrW2g+PjJdfDAsa1tGPj4yXXwwLGtbRD4+Ml18MCxrW3M+PjJdfDAsa1tuPj4yXXwwLC0xKTtpZigoa1ttPj4yXXwwKSE9MD8oa1t3Pj4yXT1sWyhrW0Q+PjJdfDApKzI1Kygoa1tvPj4yXXwwKSE9MCYxKT4+MF0seEQoa1tnPj4yXXwwLGtbSD4+Ml18MCxrW2g+PjJdfDAsa1tGPj4yXXwwLGtbRD4+Ml18MCxrW3M+PjJdfDAsa1ttPj4yXXwwLDEpLCgoa1t3Pj4yXXwwKSE9OT8oaVsoa1tEPj4yXXwwKSsyND4+MF18MCk9PTA6MCkmKGtbdz4+Ml18MCkhPTcpOjApZHkoa1tnPj4yXXwwKTtrWyhrW0c+PjJdfDApKzg+PjJdPTA7cnYoa1t2Pj4yXXwwLGtbSD4+Ml18MCl9Ymcoa1t2Pj4yXXwwLGtbcz4+Ml18MCl9d2hpbGUoMCk7a1tEPj4yXT1rWyhrW0Q+PjJdfDApKzEyPj4yXX1pZigoTnwwKT09NTkpe3I9TztyZXR1cm59fWVsc2UgaWYoKE58MCk9PTU5KXtyPU87cmV0dXJufX1mdW5jdGlvbiBxRChhLGIsYyxkLGUsZixnLGgsbSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7bT1tfDA7dmFyIG49MCxvPTAscD0wLHE9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MCxFPTA7RT1yO3I9cis2NHwwO249RSs1MnwwO289RSs0OHwwO3A9RSs0NHwwO3E9RSs0MHwwO3M9RSszNnwwO3Q9RSszMnwwO3U9RSsyOHwwO3Y9RSsyNHwwO3c9RSsyMHwwO0Q9RSsxNnwwO3o9RSsxMnwwO0E9RSs1N3wwO0I9RSs4fDA7Qz1FKzR8MDt5PUU7eD1FKzU2fDA7a1tuPj4yXT1hO2tbbz4+Ml09YjtrW3A+PjJdPWM7a1txPj4yXT1kO2tbcz4+Ml09ZTtrW3Q+PjJdPWY7a1t1Pj4yXT1nO2tbdj4+Ml09aDtrW3c+PjJdPW07aVt4Pj4wXT0wO209bngoa1tuPj4yXXwwKXwwO2tbRD4+Ml09bTtrW3k+PjJdPTA7a1t6Pj4yXT1rWyhrW28+PjJdfDApKzg+PjJdO3doaWxlKDEpe2lmKCEoa1t6Pj4yXXwwKSlicmVhaztpZihrWyhrW3Q+PjJdfDApKyhrW3k+PjJdPDwyKT4+Ml18MCl7aVt4Pj4wXT0xO2lmKGtbKGtbej4+Ml18MCkrMzY+PjJdfDApe2U9a1tEPj4yXXwwO209a1soa1t0Pj4yXXwwKSsoa1t5Pj4yXTw8Mik+PjJdfDA7c3goZSwzNCxtLChHeChrW0Q+PjJdfDApfDApKzJ8MCl8MH1zeChrW0Q+PjJdfDAsMTI2LChrW3E+PjJdfDApKyhrW3k+PjJdfDApfDAsa1soa1t0Pj4yXXwwKSsoa1t5Pj4yXTw8Mik+PjJdfDApfDA7aVtBPj4wXT0wO2lbQT4+MF09KGtbdz4+Ml18MCkhPTA/MTY6MDtpZigoaVsoa1t6Pj4yXXwwKSs1NT4+MF0mM3wwKT09Mj8obFsoa1tvPj4yXXwwKSs0Mj4+MF0mMzJ8MCkhPTA6MClpW0E+PjBdPWxbQT4+MF18MTtUaChrW0Q+PjJdfDAsaVtBPj4wXXwwKX1rW3o+PjJdPWtbKGtbej4+Ml18MCkrMjA+PjJdO2tbeT4+Ml09KGtbeT4+Ml18MCkrMX1pZihsWyhrW28+PjJdfDApKzQyPj4wXSYzMil7cj1FO3JldHVybn1rW0I+PjJdPShrW3M+PjJdfDApKzE7bT1GeChrW24+PjJdfDApfDA7a1tDPj4yXT1tO3R4KGtbRD4+Ml18MCw5OSxrW0I+PjJdfDAsalsoa1tvPj4yXXwwKSszND4+MV18MCxrW0M+PjJdfDApfDA7aWYoIShpW3g+PjBdfDApKWpEKGtbRD4+Ml18MCxrW28+PjJdfDAsMCk7ZUIoa1tuPj4yXXwwLGtbQj4+Ml18MCxqWyhrW28+PjJdfDApKzM0Pj4xXXwwKTtpZihpWyhrW24+PjJdfDApKzE4Pj4wXXwwKWlbQT4+MF09MDtlbHNle2lbQT4+MF09MTtpW0E+PjBdPWxbQT4+MF18KChrW3U+PjJdfDApIT0wPzQ6Mil9aWYoa1t2Pj4yXXwwKWlbQT4+MF09bFtBPj4wXXw4O2lmKGtbdz4+Ml18MClpW0E+PjBdPWxbQT4+MF18MTY7dHgoa1tEPj4yXXwwLDExNSxrW3A+PjJdfDAsa1tDPj4yXXwwLGtbcz4+Ml18MCl8MDtpZighKGlbKGtbbj4+Ml18MCkrMTg+PjBdfDApKVdoKGtbRD4+Ml18MCwtMSxrW28+PjJdfDAsLTIwKTtUaChrW0Q+PjJdfDAsaVtBPj4wXXwwKTtyPUU7cmV0dXJufWZ1bmN0aW9uIHJEKGEpe2E9YXwwO3ZhciBiPTAsYz0wO2M9cjtyPXIrMTZ8MDtiPWM7a1tiPj4yXT1hO2lmKCEoa1soa1tiPj4yXXwwKSsxMjA+PjJdfDApKXtyPWM7cmV0dXJufXNEKGtbYj4+Ml18MCk7cj1jO3JldHVybn1mdW5jdGlvbiBzRChhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxsPTA7bD1yO3I9ciszMnwwO2I9bCsyOHwwO2c9bCsyNHwwO2o9bCsyMHwwO2Q9bCsxNnwwO2M9bCsxMnwwO2g9bCs4fDA7ZT1sKzR8MDtmPWw7a1tiPj4yXT1hO2tbaj4+Ml09a1soa1tiPj4yXXwwKSs4Pj4yXTtrW2Q+PjJdPWtba1tiPj4yXT4+Ml07a1tnPj4yXT1rWyhrW2I+PjJdfDApKzEyMD4+Ml07d2hpbGUoMSl7aWYoIShrW2c+PjJdfDApKXtiPTU7YnJlYWt9a1toPj4yXT0oa1soa1tkPj4yXXwwKSsxNj4+Ml18MCkrKGtbKGtbZz4+Ml18MCkrOD4+Ml08PDQpO2tbZj4+Ml09a1soa1tnPj4yXXwwKSsxMj4+Ml07YT1GeChrW2I+PjJdfDApfDA7a1tlPj4yXT1hO2NBKGtbYj4+Ml18MCwwLGtbKGtbZz4+Ml18MCkrOD4+Ml18MCxrWyhrWyhrW2g+PjJdfDApKzEyPj4yXXwwKSs3Mj4+Ml18MCwxMDUpO2E9VWgoa1tqPj4yXXwwLDUsMzQzODQsMCl8MDtrW2M+PjJdPWE7aWYoIShrW2M+PjJdfDApKXtiPTU7YnJlYWt9a1soa1tjPj4yXXwwKSs0Pj4yXT0oa1tmPj4yXXwwKSsxO2tbKGtbYz4+Ml18MCkrMjArOD4+Ml09KGtbZj4+Ml18MCkrMTtrWyhrW2M+PjJdfDApKzQwKzQ+PjJdPShrW2Y+PjJdfDApLTE7a1soa1tjPj4yXXwwKSs0MCsxMj4+Ml09a1tlPj4yXTtrWyhrW2M+PjJdfDApKzYwKzg+PjJdPWtbZT4+Ml07a1soa1tjPj4yXXwwKSs2MCsxMj4+Ml09KGtbZj4+Ml18MCkrMTtpWyhrW2M+PjJdfDApKzYwKzM+PjBdPTg7SHgoa1tiPj4yXXwwLGtbZT4+Ml18MCk7a1tnPj4yXT1rW2tbZz4+Ml0+PjJdfWlmKChifDApPT01KXtyPWw7cmV0dXJufX1mdW5jdGlvbiB0RChhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGk9MCxsPTAsbT0wLG49MDtuPXI7cj1yKzMyfDA7bT1uKzI0fDA7ZT1uKzIwfDA7Zj1uKzE2fDA7Zz1uKzEyfDA7aD1uKzh8MDtpPW4rNHwwO2w9bjtrW2U+PjJdPWE7a1tmPj4yXT1iO2tbZz4+Ml09YztrW2g+PjJdPWQ7a1tpPj4yXT0wO3doaWxlKDEpe2lmKChrW2k+PjJdfDApPj0oa1soa1tmPj4yXXwwKSsyMD4+Ml18MCkpe2U9ODticmVha31rW2w+PjJdPWtbKGtbZj4+Ml18MCkrMzYrKGtbaT4+Ml08PDMpPj4yXTtpZigoa1soa1tnPj4yXXwwKSsoa1tsPj4yXTw8Mik+PjJdfDApPj0wKXtlPTQ7YnJlYWt9aWYoKGtbaD4+Ml18MCkhPTA/KGtbbD4+Ml18MCk9PShqWyhrW2U+PjJdfDApKzMyPj4xXXwwKTowKXtlPTY7YnJlYWt9a1tpPj4yXT0oa1tpPj4yXXwwKSsxfWlmKChlfDApPT00KXtrW20+PjJdPTE7bT1rW20+PjJdfDA7cj1uO3JldHVybiBtfDB9ZWxzZSBpZigoZXwwKT09Nil7a1ttPj4yXT0xO209a1ttPj4yXXwwO3I9bjtyZXR1cm4gbXwwfWVsc2UgaWYoKGV8MCk9PTgpe2tbbT4+Ml09MDttPWtbbT4+Ml18MDtyPW47cmV0dXJuIG18MH1yZXR1cm4gMH1cbmZ1bmN0aW9uIGpjKGEpe2E9YXwwO3ZhciBiPTA7Yj1yO3I9cithfDA7cj1yKzE1Ji0xNjtyZXR1cm4gYnwwfWZ1bmN0aW9uIGtjKCl7cmV0dXJuIHJ8MH1mdW5jdGlvbiBsYyhhKXthPWF8MDtyPWF9ZnVuY3Rpb24gbWMoYSxiKXthPWF8MDtiPWJ8MDtyPWE7cz1ifWZ1bmN0aW9uIG5jKGEsYil7YT1hfDA7Yj1ifDA7aWYoIXcpe3c9YTt4PWJ9fWZ1bmN0aW9uIG9jKGEpe2E9YXwwO2lbdD4+MF09aVthPj4wXTtpW3QrMT4+MF09aVthKzE+PjBdO2lbdCsyPj4wXT1pW2ErMj4+MF07aVt0KzM+PjBdPWlbYSszPj4wXX1mdW5jdGlvbiBwYyhhKXthPWF8MDtpW3Q+PjBdPWlbYT4+MF07aVt0KzE+PjBdPWlbYSsxPj4wXTtpW3QrMj4+MF09aVthKzI+PjBdO2lbdCszPj4wXT1pW2ErMz4+MF07aVt0KzQ+PjBdPWlbYSs0Pj4wXTtpW3QrNT4+MF09aVthKzU+PjBdO2lbdCs2Pj4wXT1pW2ErNj4+MF07aVt0Kzc+PjBdPWlbYSs3Pj4wXX1mdW5jdGlvbiBxYyhhKXthPWF8MDtMPWF9ZnVuY3Rpb24gcmMoKXtyZXR1cm4gTHwwfWZ1bmN0aW9uIHNjKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MCxlPTAsZj0wO2Y9cjtyPXIrMTZ8MDtiPWYrMTJ8MDtjPWYrOHwwO2Q9Zis0fDA7ZT1mO2tbYj4+Ml09YTtrW2M+PjJdPTA7d2hpbGUoMSl7aWYoKGtbYz4+Ml18MCk+Pj4wPj00MClicmVhaztrW2Q+PjJdPTA7c3dpdGNoKGxbMzYwKygoa1tjPj4yXXwwKSoxMnwwKSs1Pj4wXXwwKXtjYXNlIDE6e2tbZD4+Ml09a1tiPj4yXTticmVha31jYXNlIDI6e2tbZD4+Ml09LTE7YnJlYWt9ZGVmYXVsdDp7fX1HZihrW2I+PjJdfDAsa1szNjArKChrW2M+PjJdfDApKjEyfDApPj4yXXwwLGlbMzYwKygoa1tjPj4yXXwwKSoxMnwwKSs0Pj4wXXwwLGxbMzYwKygoa1tjPj4yXXwwKSoxMnwwKSs2Pj4wXXwwLGtbZD4+Ml18MCxrWzM2MCsoKGtbYz4+Ml18MCkqMTJ8MCkrOD4+Ml18MCwwLDApfDA7a1tjPj4yXT0oa1tjPj4yXXwwKSsxfWtbYz4+Ml09MDt3aGlsZSgxKXtpZigoa1tjPj4yXXwwKT4+PjA+PTYpYnJlYWs7a1tlPj4yXT0wO3N3aXRjaChsWzg0MCsoa1tjPj4yXTw8NCkrNT4+MF18MCl7Y2FzZSAxOntrW2U+PjJdPWtbYj4+Ml07YnJlYWt9Y2FzZSAyOntrW2U+PjJdPS0xO2JyZWFrfWRlZmF1bHQ6e319R2Yoa1tiPj4yXXwwLGtbODQwKyhrW2M+PjJdPDw0KT4+Ml18MCxpWzg0MCsoa1tjPj4yXTw8NCkrND4+MF18MCwxLGtbZT4+Ml18MCwwLGtbODQwKyhrW2M+PjJdPDw0KSs4Pj4yXXwwLGtbODQwKyhrW2M+PjJdPDw0KSsxMj4+Ml18MCl8MDtrW2M+PjJdPShrW2M+PjJdfDApKzF9cj1mO3JldHVybiAwfWZ1bmN0aW9uIHRjKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxpPTAsaj0wLjA7aD1yO3I9ciszMnwwO2Q9aCsyNHwwO2k9aCsyMHwwO2U9aCsxNnwwO2Y9aCs4fDA7Zz1oO2tbZD4+Ml09YTtrW2k+PjJdPWI7a1tlPj4yXT1jO3BbZj4+M109MC4wO2lmKChrW2k+PjJdfDApIT0xKSRhKDE2NzI2LDE2NzM0LDM3OCwxNjc1OCk7aWYoKG9lKGtba1tlPj4yXT4+Ml18MCl8MCk9PTUpe3ZlKGtbZD4+Ml18MCk7cj1oO3JldHVybn1qPStsZShrW2tbZT4+Ml0+PjJdfDApO3BbZj4+M109ajtpPUxRKCl8MDtrW2k+PjJdPTA7aj0rYWEoKygrcFtmPj4zXSkpO3BbZz4+M109ajtpPUxRKCl8MDtkPWtbZD4+Ml18MDtpZighKGtbaT4+Ml18MCkpe3JlKGQsK3BbZz4+M10pO3I9aDtyZXR1cm59ZWxzZXtnPUxRKCl8MDtnPU1RKGtbZz4+Ml18MCl8MDtpPUxRKCl8MDtzZShkLGcsa1tpPj4yXXwwKTtyPWg7cmV0dXJufX1mdW5jdGlvbiB1YyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaT0wLGo9MC4wO2g9cjtyPXIrMzJ8MDtkPWgrMjR8MDtpPWgrMjB8MDtlPWgrMTZ8MDtmPWgrOHwwO2c9aDtrW2Q+PjJdPWE7a1tpPj4yXT1iO2tbZT4+Ml09YztwW2Y+PjNdPTAuMDtpZigoa1tpPj4yXXwwKSE9MSkkYSgxNjcyNiwxNjczNCwzNzksMTY3NjcpO2lmKChvZShrW2tbZT4+Ml0+PjJdfDApfDApPT01KXt2ZShrW2Q+PjJdfDApO3I9aDtyZXR1cm59aj0rbGUoa1trW2U+PjJdPj4yXXwwKTtwW2Y+PjNdPWo7aT1MUSgpfDA7a1tpPj4yXT0wO2o9K2JhKCsoK3BbZj4+M10pKTtwW2c+PjNdPWo7aT1MUSgpfDA7ZD1rW2Q+PjJdfDA7aWYoIShrW2k+PjJdfDApKXtyZShkLCtwW2c+PjNdKTtyPWg7cmV0dXJufWVsc2V7Zz1MUSgpfDA7Zz1NUShrW2c+PjJdfDApfDA7aT1MUSgpfDA7c2UoZCxnLGtbaT4+Ml18MCk7cj1oO3JldHVybn19ZnVuY3Rpb24gdmMoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGk9MCxqPTAuMDtoPXI7cj1yKzMyfDA7ZD1oKzI0fDA7aT1oKzIwfDA7ZT1oKzE2fDA7Zj1oKzh8MDtnPWg7a1tkPj4yXT1hO2tbaT4+Ml09YjtrW2U+PjJdPWM7cFtmPj4zXT0wLjA7aWYoKGtbaT4+Ml18MCkhPTEpJGEoMTY3MjYsMTY3MzQsMzgwLDE2Nzc2KTtpZigob2Uoa1trW2U+PjJdPj4yXXwwKXwwKT09NSl7dmUoa1tkPj4yXXwwKTtyPWg7cmV0dXJufWo9K2xlKGtba1tlPj4yXT4+Ml18MCk7cFtmPj4zXT1qO2k9TFEoKXwwO2tbaT4+Ml09MDtqPStjYSgrKCtwW2Y+PjNdKSk7cFtnPj4zXT1qO2k9TFEoKXwwO2Q9a1tkPj4yXXwwO2lmKCEoa1tpPj4yXXwwKSl7cmUoZCwrcFtnPj4zXSk7cj1oO3JldHVybn1lbHNle2c9TFEoKXwwO2c9TVEoa1tnPj4yXXwwKXwwO2k9TFEoKXwwO3NlKGQsZyxrW2k+PjJdfDApO3I9aDtyZXR1cm59fWZ1bmN0aW9uIHdjKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxpPTAsaj0wLjA7aD1yO3I9ciszMnwwO2Q9aCsyNHwwO2k9aCsyMHwwO2U9aCsxNnwwO2Y9aCs4fDA7Zz1oO2tbZD4+Ml09YTtrW2k+PjJdPWI7a1tlPj4yXT1jO3BbZj4+M109MC4wO3BbZz4+M109MC4wO2lmKChrW2k+PjJdfDApIT0yKSRhKDE2Nzg1LDE2NzM0LDU3MCwxNjc5Myk7aWYoKG9lKGtba1tlPj4yXT4+Ml18MCl8MCkhPTU/KG9lKGtbKGtbZT4+Ml18MCkrND4+Ml18MCl8MCkhPTU6MCl7aj0rbGUoa1trW2U+PjJdPj4yXXwwKTtwW2Y+PjNdPWo7aj0rbGUoa1soa1tlPj4yXXwwKSs0Pj4yXXwwKTtwW2c+PjNdPWo7cmUoa1tkPj4yXXwwLCtkYSgrKCtwW2Y+PjNdKSwrKCtwW2c+PjNdKSkpO3I9aDtyZXR1cm59dmUoa1tkPj4yXXwwKTtyPWg7cmV0dXJufWZ1bmN0aW9uIHhjKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxpPTAsaj0wLjA7aD1yO3I9ciszMnwwO2Q9aCsyNHwwO2k9aCsyMHwwO2U9aCsxNnwwO2Y9aCs4fDA7Zz1oO2tbZD4+Ml09YTtrW2k+PjJdPWI7a1tlPj4yXT1jO3BbZj4+M109MC4wO2lmKChrW2k+PjJdfDApIT0xKSRhKDE2NzI2LDE2NzM0LDM5NCwxNjgwMik7aWYoKG9lKGtba1tlPj4yXT4+Ml18MCl8MCk9PTUpe3ZlKGtbZD4+Ml18MCk7cj1oO3JldHVybn1qPStsZShrW2tbZT4+Ml0+PjJdfDApO3BbZj4+M109ajtpPUxRKCl8MDtrW2k+PjJdPTA7aj0rU1EoK3BbZj4+M10pO3BbZz4+M109ajtpPUxRKCl8MDtkPWtbZD4+Ml18MDtpZighKGtbaT4+Ml18MCkpe3JlKGQsK3BbZz4+M10pO3I9aDtyZXR1cm59ZWxzZXtnPUxRKCl8MDtnPU1RKGtbZz4+Ml18MCl8MDtpPUxRKCl8MDtzZShkLGcsa1tpPj4yXXwwKTtyPWg7cmV0dXJufX1mdW5jdGlvbiB5YyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaT0wLGo9MC4wO2g9cjtyPXIrMzJ8MDtkPWgrMjR8MDtpPWgrMjB8MDtlPWgrMTZ8MDtmPWgrOHwwO2c9aDtrW2Q+PjJdPWE7a1tpPj4yXT1iO2tbZT4+Ml09YztwW2Y+PjNdPTAuMDtpZigoa1tpPj4yXXwwKSE9MSkkYSgxNjcyNiwxNjczNCw0MDIsMTY4MTIpO2lmKChvZShrW2tbZT4+Ml0+PjJdfDApfDApPT01KXt2ZShrW2Q+PjJdfDApO3I9aDtyZXR1cm59aj0rbGUoa1trW2U+PjJdPj4yXXwwKTtwW2Y+PjNdPWo7aT1MUSgpfDA7a1tpPj4yXT0wO2o9K1RRKCtwW2Y+PjNdKTtwW2c+PjNdPWo7aT1MUSgpfDA7ZD1rW2Q+PjJdfDA7aWYoIShrW2k+PjJdfDApKXtyZShkLCtwW2c+PjNdKTtyPWg7cmV0dXJufWVsc2V7Zz1MUSgpfDA7Zz1NUShrW2c+PjJdfDApfDA7aT1MUSgpfDA7c2UoZCxnLGtbaT4+Ml18MCk7cj1oO3JldHVybn19ZnVuY3Rpb24gemMoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGk9MCxqPTAuMDtoPXI7cj1yKzMyfDA7ZD1oKzI0fDA7aT1oKzIwfDA7ZT1oKzE2fDA7Zj1oKzh8MDtnPWg7a1tkPj4yXT1hO2tbaT4+Ml09YjtrW2U+PjJdPWM7cFtmPj4zXT0wLjA7aWYoKGtbaT4+Ml18MCkhPTEpJGEoMTY3MjYsMTY3MzQsNDEwLDE2ODIyKTtpZigob2Uoa1trW2U+PjJdPj4yXXwwKXwwKT09NSl7dmUoa1tkPj4yXXwwKTtyPWg7cmV0dXJufWo9K2xlKGtba1tlPj4yXT4+Ml18MCk7cFtmPj4zXT1qO2k9TFEoKXwwO2tbaT4+Ml09MDtqPStVUSgrcFtmPj4zXSk7cFtnPj4zXT1qO2k9TFEoKXwwO2Q9a1tkPj4yXXwwO2lmKCEoa1tpPj4yXXwwKSl7cmUoZCwrcFtnPj4zXSk7cj1oO3JldHVybn1lbHNle2c9TFEoKXwwO2c9TVEoa1tnPj4yXXwwKXwwO2k9TFEoKXwwO3NlKGQsZyxrW2k+PjJdfDApO3I9aDtyZXR1cm59fWZ1bmN0aW9uIEFjKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsbD0wLG09MCxuPTAsbz0wO249cjtyPXIrNjR8MDtkPW4rMzJ8MDtvPW4rMjh8MDtlPW4rMjR8MDtsPW4rMjB8MDttPW4rMTZ8MDtnPW4rMTJ8MDtmPW4rOHwwO2g9bis0fDA7aj1uO2tbZD4+Ml09YTtrW28+PjJdPWI7a1tlPj4yXT1jO2tbbD4+Ml09bis0ODtrW20+PjJdPW4rNDA7a1tnPj4yXT0wO2tbZj4+Ml09MDtpZigoa1tvPj4yXXwwKSE9MikkYSgxNjc4NSwxNjczNCwxNjgwLDE2ODMyKTtpZigob2Uoa1trW2U+PjJdPj4yXXwwKXwwKSE9NT8ob2Uoa1soa1tlPj4yXXwwKSs0Pj4yXXwwKXwwKSE9NTowKXtvPWplKGtba1tlPj4yXT4+Ml18MCl8MDtrW2g+PjJdPW87bz1qZShrWyhrW2U+PjJdfDApKzQ+PjJdfDApfDA7a1tqPj4yXT1vO3dkKGtbaD4+Ml18MCxrW2w+PjJdfDApO3dkKGtbaj4+Ml18MCxrW20+PjJdfDApO2tbZj4+Ml09MDt3aGlsZSgxKXtpZigoa1tmPj4yXXwwKT49NClicmVhaztvPXhkKGtbbD4+Ml18MCl8MDtpZigob3wwKT09KHhkKGtbbT4+Ml18MCl8MCkpa1tnPj4yXT0oa1tnPj4yXXwwKSsxO2Rve289KGtbbD4+Ml18MCkrMXwwO2tbbD4+Ml09b313aGlsZSgoMTkyJmlbbz4+MF18MCk9PTEyOCk7ZG97bz0oa1ttPj4yXXwwKSsxfDA7a1ttPj4yXT1vfXdoaWxlKCgxOTImaVtvPj4wXXwwKT09MTI4KTtrW2Y+PjJdPShrW2Y+PjJdfDApKzF9dGUoa1tkPj4yXXwwLGtbZz4+Ml18MCk7cj1uO3JldHVybn12ZShrW2Q+PjJdfDApO3I9bjtyZXR1cm59ZnVuY3Rpb24gQmMoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGk9MCxqPTAuMDtoPXI7cj1yKzMyfDA7ZD1oKzI0fDA7aT1oKzIwfDA7ZT1oKzE2fDA7Zj1oKzh8MDtnPWg7a1tkPj4yXT1hO2tbaT4+Ml09YjtrW2U+PjJdPWM7cFtmPj4zXT0wLjA7aWYoKGtbaT4+Ml18MCkhPTEpJGEoMTY3MjYsMTY3MzQsNDk4LDE3MjM2KTtpZigob2Uoa1trW2U+PjJdPj4yXXwwKXwwKT09NSl7dmUoa1tkPj4yXXwwKTtyPWg7cmV0dXJufWo9K2xlKGtba1tlPj4yXT4+Ml18MCk7cFtmPj4zXT1qO2k9TFEoKXwwO2tbaT4+Ml09MDtqPSt5ZCgrcFtmPj4zXSk7cFtnPj4zXT1qO2k9TFEoKXwwO2Q9a1tkPj4yXXwwO2lmKCEoa1tpPj4yXXwwKSl7cmUoZCwrcFtnPj4zXSk7cj1oO3JldHVybn1lbHNle2c9TFEoKXwwO2c9TVEoa1tnPj4yXXwwKXwwO2k9TFEoKXwwO3NlKGQsZyxrW2k+PjJdfDApO3I9aDtyZXR1cm59fWZ1bmN0aW9uIENjKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxpPTAsaj0wLjA7aD1yO3I9ciszMnwwO2Q9aCsyNHwwO2k9aCsyMHwwO2U9aCsxNnwwO2Y9aCs4fDA7Zz1oO2tbZD4+Ml09YTtrW2k+PjJdPWI7a1tlPj4yXT1jO3BbZj4+M109MC4wO2lmKChrW2k+PjJdfDApIT0xKSRhKDE2NzI2LDE2NzM0LDQ5OSwxNzI0OCk7aWYoKG9lKGtba1tlPj4yXT4+Ml18MCl8MCk9PTUpe3ZlKGtbZD4+Ml18MCk7cj1oO3JldHVybn1qPStsZShrW2tbZT4+Ml0+PjJdfDApO3BbZj4+M109ajtpPUxRKCl8MDtrW2k+PjJdPTA7aj0remQoK3BbZj4+M10pO3BbZz4+M109ajtpPUxRKCl8MDtkPWtbZD4+Ml18MDtpZighKGtbaT4+Ml18MCkpe3JlKGQsK3BbZz4+M10pO3I9aDtyZXR1cm59ZWxzZXtnPUxRKCl8MDtnPU1RKGtbZz4+Ml18MCl8MDtpPUxRKCl8MDtzZShkLGcsa1tpPj4yXXwwKTtyPWg7cmV0dXJufX1mdW5jdGlvbiBEYyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaT0wLGo9MC4wO2g9cjtyPXIrMzJ8MDtkPWgrMjR8MDtpPWgrMjB8MDtlPWgrMTZ8MDtmPWgrOHwwO2c9aDtrW2Q+PjJdPWE7a1tpPj4yXT1iO2tbZT4+Ml09YztwW2Y+PjNdPTAuMDtpZigoa1tpPj4yXXwwKSE9MSkkYSgxNjcyNiwxNjczNCw0MjAsMTcyNjApO2lmKChvZShrW2tbZT4+Ml0+PjJdfDApfDApPT01KXt2ZShrW2Q+PjJdfDApO3I9aDtyZXR1cm59aj0rbGUoa1trW2U+PjJdPj4yXXwwKTtwW2Y+PjNdPWo7aT1MUSgpfDA7a1tpPj4yXT0wO2o9K1ooKygrcFtmPj4zXSkpO3BbZz4+M109ajtpPUxRKCl8MDtkPWtbZD4+Ml18MDtpZighKGtbaT4+Ml18MCkpe3JlKGQsK3BbZz4+M10pO3I9aDtyZXR1cm59ZWxzZXtnPUxRKCl8MDtnPU1RKGtbZz4+Ml18MCl8MDtpPUxRKCl8MDtzZShkLGcsa1tpPj4yXXwwKTtyPWg7cmV0dXJufX1mdW5jdGlvbiBFYyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaT0wLGo9MC4wO2g9cjtyPXIrMzJ8MDtkPWgrMjR8MDtpPWgrMjB8MDtlPWgrMTZ8MDtmPWgrOHwwO2c9aDtrW2Q+PjJdPWE7a1tpPj4yXT1iO2tbZT4+Ml09YztwW2Y+PjNdPTAuMDtpZigoa1tpPj4yXXwwKSE9MSkkYSgxNjcyNiwxNjczNCw0MTksMTcyNjgpO2lmKChvZShrW2tbZT4+Ml0+PjJdfDApfDApPT01KXt2ZShrW2Q+PjJdfDApO3I9aDtyZXR1cm59aj0rbGUoa1trW2U+PjJdPj4yXXwwKTtwW2Y+PjNdPWo7aT1MUSgpfDA7a1tpPj4yXT0wO2o9K18oKygrcFtmPj4zXSkpO3BbZz4+M109ajtpPUxRKCl8MDtkPWtbZD4+Ml18MDtpZighKGtbaT4+Ml18MCkpe3JlKGQsK3BbZz4+M10pO3I9aDtyZXR1cm59ZWxzZXtnPUxRKCl8MDtnPU1RKGtbZz4+Ml18MCl8MDtpPUxRKCl8MDtzZShkLGcsa1tpPj4yXXwwKTtyPWg7cmV0dXJufX1mdW5jdGlvbiBGYyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaT0wLGo9MC4wO2g9cjtyPXIrMzJ8MDtkPWgrMjR8MDtpPWgrMjB8MDtlPWgrMTZ8MDtmPWgrOHwwO2c9aDtrW2Q+PjJdPWE7a1tpPj4yXT1iO2tbZT4+Ml09YztwW2Y+PjNdPTAuMDtpZigoa1tpPj4yXXwwKSE9MSkkYSgxNjcyNiwxNjczNCw0MjEsMTcyNzYpO2lmKChvZShrW2tbZT4+Ml0+PjJdfDApfDApPT01KXt2ZShrW2Q+PjJdfDApO3I9aDtyZXR1cm59aj0rbGUoa1trW2U+PjJdPj4yXXwwKTtwW2Y+PjNdPWo7aT1MUSgpfDA7a1tpPj4yXT0wO2o9KyQoKygrcFtmPj4zXSkpO3BbZz4+M109ajtpPUxRKCl8MDtkPWtbZD4+Ml18MDtpZighKGtbaT4+Ml18MCkpe3JlKGQsK3BbZz4+M10pO3I9aDtyZXR1cm59ZWxzZXtnPUxRKCl8MDtnPU1RKGtbZz4+Ml18MCl8MDtpPUxRKCl8MDtzZShkLGcsa1tpPj4yXXwwKTtyPWg7cmV0dXJufX1mdW5jdGlvbiBHYyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaT0wLGo9MC4wO2g9cjtyPXIrMzJ8MDtkPWgrMjR8MDtpPWgrMjB8MDtlPWgrMTZ8MDtmPWgrOHwwO2c9aDtrW2Q+PjJdPWE7a1tpPj4yXT1iO2tbZT4+Ml09YztwW2Y+PjNdPTAuMDtpZigoa1tpPj4yXXwwKSE9MSkkYSgxNjcyNiwxNjczNCw0MjIsMTcyODQpO2lmKChvZShrW2tbZT4+Ml0+PjJdfDApfDApPT01KXt2ZShrW2Q+PjJdfDApO3I9aDtyZXR1cm59aj0rbGUoa1trW2U+PjJdPj4yXXwwKTtwW2Y+PjNdPWo7aT1MUSgpfDA7a1tpPj4yXT0wO2o9K0FkKCtwW2Y+PjNdKTtwW2c+PjNdPWo7aT1MUSgpfDA7ZD1rW2Q+PjJdfDA7aWYoIShrW2k+PjJdfDApKXtyZShkLCtwW2c+PjNdKTtyPWg7cmV0dXJufWVsc2V7Zz1MUSgpfDA7Zz1NUShrW2c+PjJdfDApfDA7aT1MUSgpfDA7c2UoZCxnLGtbaT4+Ml18MCk7cj1oO3JldHVybn19ZnVuY3Rpb24gSGMoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGk9MCxqPTAuMDtoPXI7cj1yKzMyfDA7ZD1oKzI0fDA7aT1oKzIwfDA7ZT1oKzE2fDA7Zj1oKzh8MDtnPWg7a1tkPj4yXT1hO2tbaT4+Ml09YjtrW2U+PjJdPWM7cFtmPj4zXT0wLjA7aWYoKGtbaT4+Ml18MCkhPTEpJGEoMTY3MjYsMTY3MzQsNDQ2LDE3MjkyKTtpZigob2Uoa1trW2U+PjJdPj4yXXwwKXwwKT09NSl7dmUoa1tkPj4yXXwwKTtyPWg7cmV0dXJufWo9K2xlKGtba1tlPj4yXT4+Ml18MCk7cFtmPj4zXT1qO2k9TFEoKXwwO2tbaT4+Ml09MDtqPStWUSgrcFtmPj4zXSk7cFtnPj4zXT1qO2k9TFEoKXwwO2Q9a1tkPj4yXXwwO2lmKCEoa1tpPj4yXXwwKSl7cmUoZCwrcFtnPj4zXSk7cj1oO3JldHVybn1lbHNle2c9TFEoKXwwO2c9TVEoa1tnPj4yXXwwKXwwO2k9TFEoKXwwO3NlKGQsZyxrW2k+PjJdfDApO3I9aDtyZXR1cm59fWZ1bmN0aW9uIEljKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxpPTAsaj0wLjA7aD1yO3I9ciszMnwwO2Q9aCsyNHwwO2k9aCsyMHwwO2U9aCsxNnwwO2Y9aCs4fDA7Zz1oO2tbZD4+Ml09YTtrW2k+PjJdPWI7a1tlPj4yXT1jO3BbZj4+M109MC4wO2lmKChrW2k+PjJdfDApIT0xKSRhKDE2NzI2LDE2NzM0LDQzOCwxNzMwMSk7aWYoKG9lKGtba1tlPj4yXT4+Ml18MCl8MCk9PTUpe3ZlKGtbZD4+Ml18MCk7cj1oO3JldHVybn1qPStsZShrW2tbZT4+Ml0+PjJdfDApO3BbZj4+M109ajtpPUxRKCl8MDtrW2k+PjJdPTA7aj0rWlEoK3BbZj4+M10pO3BbZz4+M109ajtpPUxRKCl8MDtkPWtbZD4+Ml18MDtpZighKGtbaT4+Ml18MCkpe3JlKGQsK3BbZz4+M10pO3I9aDtyZXR1cm59ZWxzZXtnPUxRKCl8MDtnPU1RKGtbZz4+Ml18MCl8MDtpPUxRKCl8MDtzZShkLGcsa1tpPj4yXXwwKTtyPWg7cmV0dXJufX1mdW5jdGlvbiBKYyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaT0wLGo9MC4wO2g9cjtyPXIrMzJ8MDtkPWgrMjR8MDtpPWgrMjB8MDtlPWgrMTZ8MDtmPWgrOHwwO2c9aDtrW2Q+PjJdPWE7a1tpPj4yXT1iO2tbZT4+Ml09YztwW2Y+PjNdPTAuMDtpZigoa1tpPj4yXXwwKSE9MSkkYSgxNjcyNiwxNjczNCw0NTQsMTczMTApO2lmKChvZShrW2tbZT4+Ml0+PjJdfDApfDApPT01KXt2ZShrW2Q+PjJdfDApO3I9aDtyZXR1cm59aj0rbGUoa1trW2U+PjJdPj4yXXwwKTtwW2Y+PjNdPWo7aT1MUSgpfDA7a1tpPj4yXT0wO2o9K19RKCtwW2Y+PjNdKTtwW2c+PjNdPWo7aT1MUSgpfDA7ZD1rW2Q+PjJdfDA7aWYoIShrW2k+PjJdfDApKXtyZShkLCtwW2c+PjNdKTtyPWg7cmV0dXJufWVsc2V7Zz1MUSgpfDA7Zz1NUShrW2c+PjJdfDApfDA7aT1MUSgpfDA7c2UoZCxnLGtbaT4+Ml18MCk7cj1oO3JldHVybn19ZnVuY3Rpb24gS2MoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGk9MCxqPTAuMDtoPXI7cj1yKzMyfDA7ZD1oKzI0fDA7aT1oKzIwfDA7ZT1oKzE2fDA7Zj1oKzh8MDtnPWg7a1tkPj4yXT1hO2tbaT4+Ml09YjtrW2U+PjJdPWM7cFtmPj4zXT0wLjA7aWYoKGtbaT4+Ml18MCkhPTEpJGEoMTY3MjYsMTY3MzQsNDU2LDE3MzE5KTtpZigob2Uoa1trW2U+PjJdPj4yXXwwKXwwKT09NSl7dmUoa1tkPj4yXXwwKTtyPWg7cmV0dXJufWo9K2xlKGtba1tlPj4yXT4+Ml18MCk7cFtmPj4zXT1qO2k9TFEoKXwwO2tbaT4+Ml09MDtqPStCZCgrcFtmPj4zXSk7cFtnPj4zXT1qO2k9TFEoKXwwO2Q9a1tkPj4yXXwwO2lmKCEoa1tpPj4yXXwwKSl7cmUoZCwrcFtnPj4zXSk7cj1oO3JldHVybn1lbHNle2c9TFEoKXwwO2c9TVEoa1tnPj4yXXwwKXwwO2k9TFEoKXwwO3NlKGQsZyxrW2k+PjJdfDApO3I9aDtyZXR1cm59fWZ1bmN0aW9uIExjKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxpPTAsaj0wLjA7aD1yO3I9ciszMnwwO2Q9aCsyNHwwO2k9aCsyMHwwO2U9aCsxNnwwO2Y9aCs4fDA7Zz1oO2tbZD4+Ml09YTtrW2k+PjJdPWI7a1tlPj4yXT1jO3BbZj4+M109MC4wO2lmKChrW2k+PjJdfDApIT0xKSRhKDE2NzI2LDE2NzM0LDQ3NCwxNzMyOCk7aWYoKG9lKGtba1tlPj4yXT4+Ml18MCl8MCk9PTUpe3ZlKGtbZD4+Ml18MCk7cj1oO3JldHVybn1qPStsZShrW2tbZT4+Ml0+PjJdfDApO3BbZj4+M109ajtpPUxRKCl8MDtrW2k+PjJdPTA7aj0rZWEoKygrcFtmPj4zXSkpO3BbZz4+M109ajtpPUxRKCl8MDtkPWtbZD4+Ml18MDtpZighKGtbaT4+Ml18MCkpe3JlKGQsK3BbZz4+M10pO3I9aDtyZXR1cm59ZWxzZXtnPUxRKCl8MDtnPU1RKGtbZz4+Ml18MCl8MDtpPUxRKCl8MDtzZShkLGcsa1tpPj4yXXwwKTtyPWg7cmV0dXJufX1mdW5jdGlvbiBNYyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaT0wLGo9MC4wO2g9cjtyPXIrMzJ8MDtkPWgrMjR8MDtpPWgrMjB8MDtlPWgrMTZ8MDtmPWgrOHwwO2c9aDtrW2Q+PjJdPWE7a1tpPj4yXT1iO2tbZT4+Ml09YztwW2Y+PjNdPTAuMDtpZigoa1tpPj4yXXwwKSE9MSkkYSgxNjcyNiwxNjczNCw0NzIsMTczMzYpO2lmKChvZShrW2tbZT4+Ml0+PjJdfDApfDApPT01KXt2ZShrW2Q+PjJdfDApO3I9aDtyZXR1cm59aj0rbGUoa1trW2U+PjJdPj4yXXwwKTtwW2Y+PjNdPWo7aT1MUSgpfDA7a1tpPj4yXT0wO2o9K2ZhKCsoK3BbZj4+M10pKTtwW2c+PjNdPWo7aT1MUSgpfDA7ZD1rW2Q+PjJdfDA7aWYoIShrW2k+PjJdfDApKXtyZShkLCtwW2c+PjNdKTtyPWg7cmV0dXJufWVsc2V7Zz1MUSgpfDA7Zz1NUShrW2c+PjJdfDApfDA7aT1MUSgpfDA7c2UoZCxnLGtbaT4+Ml18MCk7cj1oO3JldHVybn19ZnVuY3Rpb24gTmMoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGk9MCxqPTAuMDtoPXI7cj1yKzMyfDA7ZD1oKzI0fDA7aT1oKzIwfDA7ZT1oKzE2fDA7Zj1oKzh8MDtnPWg7a1tkPj4yXT1hO2tbaT4+Ml09YjtrW2U+PjJdPWM7cFtmPj4zXT0wLjA7aWYoKGtbaT4+Ml18MCkhPTEpJGEoMTY3MjYsMTY3MzQsNDczLDE3MzQ0KTtpZigob2Uoa1trW2U+PjJdPj4yXXwwKXwwKT09NSl7dmUoa1tkPj4yXXwwKTtyPWg7cmV0dXJufWo9K2xlKGtba1tlPj4yXT4+Ml18MCk7cFtmPj4zXT1qO2k9TFEoKXwwO2tbaT4+Ml09MDtqPStYUSgrcFtmPj4zXSk7cFtnPj4zXT1qO2k9TFEoKXwwO2Q9a1tkPj4yXXwwO2lmKCEoa1tpPj4yXXwwKSl7cmUoZCwrcFtnPj4zXSk7cj1oO3JldHVybn1lbHNle2c9TFEoKXwwO2c9TVEoa1tnPj4yXXwwKXwwO2k9TFEoKXwwO3NlKGQsZyxrW2k+PjJdfDApO3I9aDtyZXR1cm59fWZ1bmN0aW9uIE9jKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxpPTAsaj0wLGw9MC4wO2k9cjtyPXIrNDh8MDtkPWkrMzJ8MDtqPWkrMjh8MDtlPWkrMjR8MDtmPWkrMTZ8MDtnPWkrOHwwO2g9aTtrW2Q+PjJdPWE7a1tqPj4yXT1iO2tbZT4+Ml09YztwW2Y+PjNdPTAuMDtwW2c+PjNdPTAuMDtpZigoa1tqPj4yXXwwKSE9MikkYSgxNjc4NSwxNjczNCw1NDYsMTczNTQpO2lmKChvZShrW2tbZT4+Ml0+PjJdfDApfDApIT01PyhvZShrWyhrW2U+PjJdfDApKzQ+PjJdfDApfDApIT01OjApe2w9K2xlKGtba1tlPj4yXT4+Ml18MCk7cFtmPj4zXT1sO2w9K2xlKGtbKGtbZT4+Ml18MCkrND4+Ml18MCk7cFtnPj4zXT1sO2o9TFEoKXwwO2tbaj4+Ml09MDtsPStZKCsoK3BbZj4+M10pLCsoK3BbZz4+M10pKTtwW2g+PjNdPWw7aj1MUSgpfDA7ZD1rW2Q+PjJdfDA7aWYoIShrW2o+PjJdfDApKXtyZShkLCtwW2g+PjNdKTtyPWk7cmV0dXJufWVsc2V7aD1MUSgpfDA7aD1NUShrW2g+PjJdfDApfDA7aj1MUSgpfDA7c2UoZCxoLGtbaj4+Ml18MCk7cj1pO3JldHVybn19dmUoa1tkPj4yXXwwKTtyPWk7cmV0dXJufWZ1bmN0aW9uIFBjKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxpPTAsaj0wLjA7aD1yO3I9ciszMnwwO2c9aCsyNHwwO2k9aCsyMHwwO2Q9aCsxNnwwO2Y9aCs4fDA7ZT1oO2tbZz4+Ml09YTtrW2k+PjJdPWI7a1tkPj4yXT1jO3BbZj4+M109MC4wO2E9ZTtrW2E+PjJdPTA7a1thKzQ+PjJdPTA7aWYoKGtbaT4+Ml18MCkhPTEpJGEoMTY3MjYsMTY3MzQsNTkwLDE3MzY0KTtzd2l0Y2gob2Uoa1trW2Q+PjJdPj4yXXwwKXwwKXtjYXNlIDE6e2Y9bmUoa1trW2Q+PjJdPj4yXXwwKXwwO2k9ZTtrW2k+PjJdPWY7a1tpKzQ+PjJdPUw7aT1lO2Y9a1tpKzQ+PjJdfDA7aWYoKGZ8MCk+MHwoZnwwKT09MCYoa1tpPj4yXXwwKT4+PjA+MClkPTE7ZWxzZSBkPShrW2UrND4+Ml18MCk8MD8tMTowO2k9ZTtrW2k+PjJdPWQ7a1tpKzQ+PjJdPSgoZHwwKTwwKTw8MzE+PjMxO2k9ZTt1ZShrW2c+PjJdfDAsa1tpPj4yXXwwLGtbaSs0Pj4yXXwwKTtyPWg7cmV0dXJufWNhc2UgNTp7dmUoa1tnPj4yXXwwKTtyPWg7cmV0dXJufWRlZmF1bHQ6e2o9K2xlKGtba1tkPj4yXT4+Ml18MCk7cFtmPj4zXT1qO2lmKCtwW2Y+PjNdPjAuMClkPTE7ZWxzZSBkPStwW2Y+PjNdPDAuMD8tMTowO3BbZj4+M109KyhkfDApO3JlKGtbZz4+Ml18MCwrcFtmPj4zXSk7cj1oO3JldHVybn19fWZ1bmN0aW9uIFFjKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxpPTAsaj0wLjA7aD1yO3I9ciszMnwwO2Q9aCsyNHwwO2k9aCsyMHwwO2U9aCsxNnwwO2Y9aCs4fDA7Zz1oO2tbZD4+Ml09YTtrW2k+PjJdPWI7a1tlPj4yXT1jO3BbZj4+M109MC4wO2lmKChrW2k+PjJdfDApIT0xKSRhKDE2NzI2LDE2NzM0LDM3NSwxNzM3Myk7aWYoKG9lKGtba1tlPj4yXT4+Ml18MCl8MCk9PTUpe3ZlKGtbZD4+Ml18MCk7cj1oO3JldHVybn1qPStsZShrW2tbZT4+Ml0+PjJdfDApO3BbZj4+M109ajtpPUxRKCl8MDtrW2k+PjJdPTA7aj0rWCgrKCtwW2Y+PjNdKSk7cFtnPj4zXT1qO2k9TFEoKXwwO2Q9a1tkPj4yXXwwO2lmKCEoa1tpPj4yXXwwKSl7cmUoZCwrcFtnPj4zXSk7cj1oO3JldHVybn1lbHNle2c9TFEoKXwwO2c9TVEoa1tnPj4yXXwwKXwwO2k9TFEoKXwwO3NlKGQsZyxrW2k+PjJdfDApO3I9aDtyZXR1cm59fWZ1bmN0aW9uIFJjKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxpPTAsaj0wLjA7aD1yO3I9ciszMnwwO2Q9aCsyNHwwO2k9aCsyMHwwO2U9aCsxNnwwO2Y9aCs4fDA7Zz1oO2tbZD4+Ml09YTtrW2k+PjJdPWI7a1tlPj4yXT1jO2E9ZjtrW2E+PjJdPTA7a1thKzQ+PjJdPTA7cFtnPj4zXT0wLjA7aWYoKGtbaT4+Ml18MCkhPTEpJGEoMTY3MjYsMTY3MzQsNTE0LDE3MzgyKTtzd2l0Y2gob2Uoa1trW2U+PjJdPj4yXXwwKXwwKXtjYXNlIDE6e2c9bmUoa1trW2U+PjJdPj4yXXwwKXwwO2E9ZjtrW2E+PjJdPWc7a1thKzQ+PjJdPUw7YT1rW2Q+PjJdfDA7Zz1mO2k9Zjt1ZShhLGtTKGtbZz4+Ml18MCxrW2crND4+Ml18MCxrW2k+PjJdfDAsa1tpKzQ+PjJdfDApfDAsTCk7cj1oO3JldHVybn1jYXNlIDU6e3ZlKGtbZD4+Ml18MCk7cj1oO3JldHVybn1kZWZhdWx0OntqPStsZShrW2tbZT4+Ml0+PjJdfDApO3BbZz4+M109ajtyZShrW2Q+PjJdfDAsK3BbZz4+M10qK3BbZz4+M10pO3I9aDtyZXR1cm59fX1mdW5jdGlvbiBTYyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaT0wLGo9MC4wO2g9cjtyPXIrNDh8MDtkPWgrMzJ8MDtpPWgrMjh8MDtlPWgrMjR8MDtnPWgrMTZ8MDtmPWg7a1tkPj4yXT1hO2tbaT4+Ml09YjtrW2U+PjJdPWM7cFtnPj4zXT0wLjA7YT1oKzh8MDtrW2E+PjJdPTA7a1thKzQ+PjJdPTA7aWYoKGtbaT4+Ml18MCkhPTEpJGEoMTY3MjYsMTY3MzQsNjIwLDE3MzkzKTtzd2l0Y2gob2Uoa1trW2U+PjJdPj4yXXwwKXwwKXtjYXNlIDE6e2c9bmUoa1trW2U+PjJdPj4yXXwwKXwwO2k9ZjtrW2k+PjJdPWc7a1tpKzQ+PjJdPUw7aT1mO3VlKGtbZD4+Ml18MCxrW2k+PjJdfDAsa1tpKzQ+PjJdfDApO3I9aDtyZXR1cm59Y2FzZSA1Ont2ZShrW2Q+PjJdfDApO3I9aDtyZXR1cm59ZGVmYXVsdDp7aj0rbGUoa1trW2U+PjJdPj4yXXwwKTtwW2c+PjNdPWo7aj0rZ2EoKygrcFtnPj4zXSkpO3VlKGtbZD4+Ml18MCx+fmo+Pj4wLCtXKGopPj0xLjA/KGo+MC4wP35+K2lhKCtWKGovNDI5NDk2NzI5Ni4wKSw0Mjk0OTY3Mjk1LjApPj4+MDp+fitnYSgoai0rKH5+aj4+PjApKS80Mjk0OTY3Mjk2LjApPj4+MCk6MCk7cj1oO3JldHVybn19fWZ1bmN0aW9uIFRjKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxpPTAsaj0wLjA7aD1yO3I9cis0OHwwO2Q9aCszMnwwO2k9aCsyOHwwO2U9aCsyNHwwO2c9aCsxNnwwO2Y9aDtrW2Q+PjJdPWE7a1tpPj4yXT1iO2tbZT4+Ml09YztwW2c+PjNdPTAuMDthPWgrOHwwO2tbYT4+Ml09MDtrW2ErND4+Ml09MDtpZigoa1tpPj4yXXwwKSE9MSkkYSgxNjcyNiwxNjczNCw2NDUsMTc0MDIpO3N3aXRjaChvZShrW2tbZT4+Ml0+PjJdfDApfDApe2Nhc2UgMTp7Zz1uZShrW2tbZT4+Ml0+PjJdfDApfDA7aT1mO2tbaT4+Ml09ZztrW2krND4+Ml09TDtpPWY7dWUoa1tkPj4yXXwwLGtbaT4+Ml18MCxrW2krND4+Ml18MCk7cj1oO3JldHVybn1jYXNlIDU6e3ZlKGtbZD4+Ml18MCk7cj1oO3JldHVybn1kZWZhdWx0OntqPStsZShrW2tbZT4+Ml0+PjJdfDApO3BbZz4+M109ajtqPStWKCsoK3BbZz4+M10pKTt1ZShrW2Q+PjJdfDAsfn5qPj4+MCwrVyhqKT49MS4wPyhqPjAuMD9+fitpYSgrVihqLzQyOTQ5NjcyOTYuMCksNDI5NDk2NzI5NS4wKT4+PjA6fn4rZ2EoKGotKyh+fmo+Pj4wKSkvNDI5NDk2NzI5Ni4wKT4+PjApOjApO3I9aDtyZXR1cm59fX1mdW5jdGlvbiBVYyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTA7ZD1yO3I9cisxNnwwO2U9ZCs4fDA7a1tlPj4yXT1hO2tbZCs0Pj4yXT1iO2tbZD4+Ml09YztyZShrW2U+PjJdfDAsMy4xNDE1OTI2NTM1ODk3OTMpO3I9ZDtyZXR1cm59ZnVuY3Rpb24gVmMoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGk9MCxqPTAsbD0wLG09MCxuPTA7bT1yO3I9cis2NHwwO2Q9bSs0OHwwO249bSs0NHwwO2U9bSs0MHwwO2o9bSszNnwwO2w9bSszMnwwO2c9bSsyNHwwO2g9bSsxNnwwO2k9bSs4fDA7Zj1tO2tbZD4+Ml09YTtrW24+PjJdPWI7a1tlPj4yXT1jO2E9ZjtrW2E+PjJdPTA7a1thKzQ+PjJdPTA7aWYoKGtbbj4+Ml18MCkhPTIpe3I9bTtyZXR1cm59aWYoNT09KG9lKGtba1tlPj4yXT4+Ml18MCl8MCkpe3I9bTtyZXR1cm59YT1uZShrWyhrW2U+PjJdfDApKzQ+PjJdfDApfDA7bj1nO2tbbj4+Ml09YTtrW24rND4+Ml09TDtpZigoa1tnKzQ+PjJdfDApPDApe3NlKGtbZD4+Ml18MCwxNzQxMiwtMSk7cj1tO3JldHVybn1hPWtlKGtba1tlPj4yXT4+Ml18MCl8MDtuPWg7a1tuPj4yXT1hO2tbbis0Pj4yXT0oKGF8MCk8MCk8PDMxPj4zMTtuPWg7YT1nO2E9a1Moa1tuPj4yXXwwLGtbbis0Pj4yXXwwLGtbYT4+Ml18MCxrW2ErND4+Ml18MCl8MDtuPWk7a1tuPj4yXT1hO2tbbis0Pj4yXT1MO249aTtuPSRSKGtbbj4+Ml18MCxrW24rND4+Ml18MCwxLDApfDA7bj1TZChuKXwwO2tbaj4+Ml09bjtuPWg7bj0kUihrW24+PjJdfDAsa1tuKzQ+PjJdfDAsMSwwKXwwO249U2Qobil8MDtrW2w+PjJdPW47aWYoKGtbaj4+Ml18MCkhPTAmKGtbbD4+Ml18MCkhPTApe249a1tsPj4yXXwwO3NSKG4samUoa1trW2U+PjJdPj4yXXwwKXwwKXwwO249ZjtrW24+PjJdPTA7a1tuKzQ+PjJdPTA7d2hpbGUoMSl7aT1mO2M9a1tpKzQ+PjJdfDA7bj1nO2E9a1tuKzQ+PjJdfDA7aWYoISgoY3wwKTwoYXwwKXwoKGN8MCk9PShhfDApPyhrW2k+PjJdfDApPj4+MDwoa1tuPj4yXXwwKT4+PjA6MCkpKWJyZWFrO249a1tqPj4yXXwwO2E9ZjtpPWg7aT1rUyhrW2E+PjJdfDAsa1thKzQ+PjJdfDAsa1tpPj4yXXwwLGtbaSs0Pj4yXXwwKXwwO3NSKG4raXwwLGtbbD4+Ml18MCl8MDtpPWY7aT0kUihrW2k+PjJdfDAsa1tpKzQ+PjJdfDAsMSwwKXwwO249ZjtrW24+PjJdPWk7a1tuKzQ+PjJdPUx9d2Uoa1tkPj4yXXwwLGtbaj4+Ml18MCwtMSwtMSk7VWQoa1tqPj4yXXwwKTtVZChrW2w+PjJdfDApO3I9bTtyZXR1cm59Q2Uoa1tkPj4yXXwwKTtpZihrW2o+PjJdfDApVWQoa1tqPj4yXXwwKTtpZighKGtbbD4+Ml18MCkpe3I9bTtyZXR1cm59VWQoa1tsPj4yXXwwKTtyPW07cmV0dXJufWZ1bmN0aW9uIFdjKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxpPTAsaj0wLGw9MDtsPXI7cj1yKzMyfDA7ZD1sKzI0fDA7ZT1sKzIwfDA7Zj1sKzE2fDA7aT1sKzEyfDA7aj1sKzh8MDtoPWwrNHwwO2c9bDtrW2Q+PjJdPWE7a1tlPj4yXT1iO2tbZj4+Ml09YztrW2g+PjJdPTA7a1tnPj4yXT0wO2lmKCEoKGtbZT4+Ml18MCk9PTN8KGtbZT4+Ml18MCk9PTIpKSRhKDE3NDI1LDE2NzM0LDEwMzgsMTc0NDMpO2lmKDUhPShvZShrW2tbZj4+Ml0+PjJdfDApfDApPzUhPShvZShrWyhrW2Y+PjJdfDApKzQ+PjJdfDApfDApOjApe2E9amUoa1trW2Y+PjJdPj4yXXwwKXwwO2tbaT4+Ml09YTtpZighKGtbaT4+Ml18MCkpe3I9bDtyZXR1cm59YT1qZShrWyhrW2Y+PjJdfDApKzQ+PjJdfDApfDA7a1tqPj4yXT1hO2lmKChrW2U+PjJdfDApPT0zKXthPShtZShrWyhrW2Y+PjJdfDApKzg+PjJdfDApfDApLTF8MDtrW2g+PjJdPWE7a1toPj4yXT0oa1toPj4yXXwwKTwwPzA6YX1lbHNlIGtbaD4+Ml09MDtqPUNkKGtbaT4+Ml18MCxrW2o+PjJdfDAsa1toPj4yXXwwLDApfDA7a1tnPj4yXT1qO3RlKGtbZD4+Ml18MCwoa1tnPj4yXXwwKSsxfDApO3I9bDtyZXR1cm59dmUoa1tkPj4yXXwwKTtyPWw7cmV0dXJufWZ1bmN0aW9uIFhjKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsbT0wLG49MCxvPTAscD0wO289cjtyPXIrNDh8MDtkPW8rMzJ8MDtwPW8rMjh8MDtlPW8rMjR8MDtmPW8rMjB8MDtnPW8rMTZ8MDtoPW8rMTJ8MDttPW8rOHwwO249bys0fDA7aj1vO2tbZD4+Ml09YTtrW3A+PjJdPWI7a1tlPj4yXT1jO2tbZj4+Ml09MDtrW2c+PjJdPTA7a1toPj4yXT0wO2lmKChrW3A+PjJdfDApIT0yKSRhKDE2Nzg1LDE2NzM0LDEwNzMsMTc0NTcpO2lmKDUhPShvZShrW2tbZT4+Ml0+PjJdfDApfDApPzUhPShvZShrWyhrW2U+PjJdfDApKzQ+PjJdfDApfDApOjApe3A9amUoa1trW2U+PjJdPj4yXXwwKXwwO2tbbT4+Ml09cDtwPW1lKGtbKGtbZT4+Ml18MCkrND4+Ml18MCl8MDtrW2g+PjJdPXA7a1tuPj4yXT1rW20+PjJdO2E6d2hpbGUoMSl7aWYoISh4ZChrW24+PjJdfDApfDApKWJyZWFrO3A9a1tmPj4yXXwwO2tbZj4+Ml09cCsxO2lmKChwfDApPj0oa1toPj4yXXwwKSlicmVhazt3aGlsZSgxKXtwPShrW24+PjJdfDApKzF8MDtrW24+PjJdPXA7aWYoKDE5MiYobFtwPj4wXXwwKXwwKSE9MTI4KWNvbnRpbnVlIGF9fWtbZz4+Ml09KGtbbj4+Ml18MCktKGtbbT4+Ml18MCk7cD1TZCgoa1tuPj4yXXwwKS0oa1ttPj4yXXwwKSsxfDApfDA7a1tqPj4yXT1wO2lmKGtbaj4+Ml18MCl7d1Ioa1tqPj4yXXwwLGtbbT4+Ml18MCwoa1tuPj4yXXwwKS0oa1ttPj4yXXwwKXwwKXwwO2lbKGtbaj4+Ml18MCkrKGtbZz4+Ml18MCk+PjBdPTA7d2Uoa1tkPj4yXXwwLGtbaj4+Ml18MCwtMSwtMSk7VWQoa1tqPj4yXXwwKTtyPW87cmV0dXJufWVsc2V7Q2Uoa1tkPj4yXXwwKTtyPW87cmV0dXJufX12ZShrW2Q+PjJdfDApO3I9bztyZXR1cm59ZnVuY3Rpb24gWWMoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxsPTAsbT0wLG49MCxvPTAscD0wO289cjtyPXIrNDh8MDtkPW8rMzZ8MDtwPW8rMzJ8MDtlPW8rMjh8MDtoPW8rMjR8MDtmPW8rMjB8MDtnPW8rMTZ8MDtsPW8rMTJ8MDtuPW8rOHwwO209bys0fDA7aj1vO2tbZD4+Ml09YTtrW3A+PjJdPWI7a1tlPj4yXT1jO2tbaD4+Ml09MDtrW2Y+PjJdPTA7a1tnPj4yXT0wO2lmKChrW3A+PjJdfDApIT0yKSRhKDE2Nzg1LDE2NzM0LDExMTMsMTc0NjYpO2lmKDUhPShvZShrW2tbZT4+Ml0+PjJdfDApfDApPzUhPShvZShrWyhrW2U+PjJdfDApKzQ+PjJdfDApfDApOjApe3A9amUoa1trW2U+PjJdPj4yXXwwKXwwO2tbbD4+Ml09cDtwPW1lKGtbKGtbZT4+Ml18MCkrND4+Ml18MCl8MDtrW2g+PjJdPXA7a1tuPj4yXT1rW2w+PjJdO3doaWxlKDEpe2lmKCEoeGQoa1tuPj4yXXwwKXwwKSlicmVhaztkb3twPShrW24+PjJdfDApKzF8MDtrW24+PjJdPXB9d2hpbGUoKDE5MiZpW3A+PjBdfDApPT0xMjgpO2tbZj4+Ml09KGtbZj4+Ml18MCkrMX1rW20+PjJdPWtbbj4+Ml07a1tuPj4yXT1rW2w+PjJdO3A9KGtbZj4+Ml18MCktKGtbaD4+Ml18MCl8MDtrW2c+PjJdPXA7a1tnPj4yXT0oa1tnPj4yXXwwKTwwPzA6cDthOndoaWxlKDEpe3A9a1tnPj4yXXwwO2tbZz4+Ml09cCstMTtpZigocHwwKTw9MClicmVhazt3aGlsZSgxKXtwPShrW24+PjJdfDApKzF8MDtrW24+PjJdPXA7aWYoKDE5MiZpW3A+PjBdfDApIT0xMjgpY29udGludWUgYX19cD1TZCgoa1ttPj4yXXwwKS0oa1tuPj4yXXwwKSsxfDApfDA7a1tqPj4yXT1wO2lmKGtbaj4+Ml18MCl7c1Ioa1tqPj4yXXwwLGtbbj4+Ml18MCl8MDt3ZShrW2Q+PjJdfDAsa1tqPj4yXXwwLC0xLC0xKTtVZChrW2o+PjJdfDApO3I9bztyZXR1cm59ZWxzZXtDZShrW2Q+PjJdfDApO3I9bztyZXR1cm59fXZlKGtbZD4+Ml18MCk7cj1vO3JldHVybn1mdW5jdGlvbiBaYyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLGw9MCxtPTAsbj0wLG89MDtuPXI7cj1yKzQ4fDA7ZD1uKzMyfDA7bz1uKzI4fDA7ZT1uKzI0fDA7bD1uKzIwfDA7bT1uKzE2fDA7aD1uKzEyfDA7aj1uKzh8MDtnPW4rNHwwO2Y9bjtrW2Q+PjJdPWE7a1tvPj4yXT1iO2tbZT4+Ml09YztrW2c+PjJdPTA7a1tmPj4yXT0wO2lmKDEhPShrW28+PjJdfDApKSRhKDE3NDc2LDE2NzM0LDEzMjMsMTc0ODQpO2lmKDU9PShvZShrW2tbZT4+Ml0+PjJdfDApfDApKXt2ZShrW2Q+PjJdfDApO3I9bjtyZXR1cm59bz1qZShrW2tbZT4+Ml0+PjJdfDApfDA7a1tsPj4yXT1vO289dVIoa1tsPj4yXXwwKXwwO2tbZz4+Ml09bztvPVNkKChrW2c+PjJdfDApKzF8MCl8MDtrW2g+PjJdPW87aWYoIShrW2g+PjJdfDApKXtDZShrW2Q+PjJdfDApO3I9bjtyZXR1cm59a1tqPj4yXT0oa1toPj4yXXwwKSsoa1tnPj4yXXwwKTtvPWtbaj4+Ml18MDtrW2o+PjJdPW8rLTE7aVtvPj4wXT0wO2tbbT4+Ml09a1tsPj4yXTthOndoaWxlKDEpe2lmKCEoeGQoa1ttPj4yXXwwKXwwKSlicmVhaztrW2w+PjJdPWtbbT4+Ml07ZG97bz0oa1ttPj4yXXwwKSsxfDA7a1ttPj4yXT1vfXdoaWxlKCgxOTImaVtvPj4wXXwwKT09MTI4KTtrW2Y+PjJdPTE7d2hpbGUoMSl7aWYoKChrW20+PjJdfDApKygwLShrW2Y+PjJdfDApKXwwKT4+PjA8KGtbbD4+Ml18MCk+Pj4wKWNvbnRpbnVlIGE7Zz1pWyhrW20+PjJdfDApKygwLShrW2Y+PjJdfDApKT4+MF18MDtvPWtbaj4+Ml18MDtrW2o+PjJdPW8rLTE7aVtvPj4wXT1nO2tbZj4+Ml09KGtbZj4+Ml18MCkrMX19d2Uoa1tkPj4yXXwwLGtbaD4+Ml18MCwtMSwtMSk7VWQoa1toPj4yXXwwKTtyPW47cmV0dXJufWZ1bmN0aW9uIF9jKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsbD0wLG09MCxuPTA7bT1yO3I9ciszMnwwO2U9bSsyNHwwO249bSsyMHwwO2Q9bSsxNnwwO2g9bSsxMnwwO2o9bSs4fDA7bD1tKzR8MDtnPW0rMjh8MDtmPW07a1tlPj4yXT1hO2tbbj4+Ml09YjtrW2Q+PjJdPWM7a1tmPj4yXT0xO2lmKChrW24+PjJdfDApIT0xKSRhKDE2NzI2LDE2NzM0LDcyNCwxNzQ5Nik7aWYoNT09KG9lKGtba1tkPj4yXT4+Ml18MCl8MCkpe3ZlKGtbZT4+Ml18MCk7cj1tO3JldHVybn1uPWplKGtba1tkPj4yXT4+Ml18MCl8MDtrW2g+PjJdPW47bj1EZChrW2g+PjJdfDApfDA7a1tqPj4yXT1uO2lmKCEoa1tqPj4yXXwwKSl7Q2Uoa1tlPj4yXXwwKTtyPW07cmV0dXJufWtbbD4+Ml09a1tqPj4yXTt3aGlsZSgxKXtuPWtbaD4+Ml18MDtrW2g+PjJdPW4rMTtuPWlbbj4+MF18MDtpW2c+PjBdPW47aWYoIShuPDwyND4+MjQpKWJyZWFrO2lmKEdRKGlbZz4+MF18MCl8MClrW2Y+PjJdPTE7ZWxzZXtkPWlbZz4+MF18MDtpZigoa1tmPj4yXXwwKT09MSl7bj0oS1EoZCl8MCkmMjU1O2lbZz4+MF09bn1lbHNle249KEpRKGQpfDApJjI1NTtpW2c+PjBdPW59a1tmPj4yXT0wfWE9aVtnPj4wXXwwO249a1tsPj4yXXwwO2tbbD4+Ml09bisxO2lbbj4+MF09YX1pW2tbbD4+Ml0+PjBdPTA7d2Uoa1tlPj4yXXwwLGtbaj4+Ml18MCwtMSwtMSk7VWQoa1tqPj4yXXwwKTtyPW07cmV0dXJufWZ1bmN0aW9uICRjKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsbD0wLG09MCxuPTAsbz0wO249cjtyPXIrNDh8MDtsPW4rNDB8MDtvPW4rMzZ8MDtkPW4rMzJ8MDtmPW4rOHwwO2g9bjtlPW4rMjh8MDtnPW4rMjR8MDttPW4rMjB8MDtqPW4rMTZ8MDtrW2w+PjJdPWE7a1tvPj4yXT1iO2tbZD4+Ml09YztrW2U+PjJdPTA7aWYoKGtbbz4+Ml18MCkhPTIpJGEoMTY3ODUsMTY3MzQsNzcxLDE3NTA3KTtpZigob2Uoa1trW2Q+PjJdPj4yXXwwKXwwKT09NSl7dmUoa1tsPj4yXXwwKTtyPW47cmV0dXJufWE9amUoa1trW2Q+PjJdPj4yXXwwKXwwO2tbZz4+Ml09YTthPW5lKGtbKGtbZD4+Ml18MCkrND4+Ml18MCl8MDtvPWY7a1tvPj4yXT1hO2tbbys0Pj4yXT1MO2lmKChrW2YrND4+Ml18MCk8MCl7c2Uoa1tsPj4yXXwwLDE3NDEyLC0xKTtyPW47cmV0dXJufWI9RWQoa1tnPj4yXXwwLC0xKXwwO2E9aDtrW2E+PjJdPWI7a1thKzQ+PjJdPSgoYnwwKTwwKTw8MzE+PjMxO2E9aDtiPWtbYSs0Pj4yXXwwO289ZjtjPWtbbys0Pj4yXXwwO2Q9a1tnPj4yXXwwO2RvIGlmKChifDApPihjfDApfCgoYnwwKT09KGN8MCk/KGtbYT4+Ml18MCk+Pj4wPj0oa1tvPj4yXXwwKT4+PjA6MCkpe2Q9RGQoZCl8MDtrW20+PjJdPWQ7ZD1rW2w+PjJdfDA7aWYoa1ttPj4yXXwwKXt3ZShkLGtbbT4+Ml18MCwtMSwtMSk7YnJlYWt9Q2UoZCk7cj1uO3JldHVybn1lbHNle289dVIoZCl8MDthPWY7YT0kUihvfDAsMCxrW2E+PjJdfDAsa1thKzQ+PjJdfDApfDA7bz1oO289X1IoYXwwLEx8MCxrW28+PjJdfDAsa1tvKzQ+PjJdfDApfDA7bz0kUihvfDAsTHwwLDEsMCl8MDtvPVNkKG8pfDA7a1ttPj4yXT1vO2lmKCEoa1ttPj4yXXwwKSl7Q2Uoa1tsPj4yXXwwKTtyPW47cmV0dXJufWtbaj4+Ml09a1ttPj4yXTtrW2U+PjJdPTE7d2hpbGUoMSl7Yj1rW2U+PjJdfDA7YT1oO2E9JFIoYnwwLCgoYnwwKTwwKTw8MzE+PjMxfDAsa1thPj4yXXwwLGtbYSs0Pj4yXXwwKXwwO2I9TDtvPWY7Yz1rW28rND4+Ml18MDtkPWtbaj4+Ml18MDtpZighKChifDApPChjfDApfCgoYnwwKT09KGN8MCk/YT4+PjA8PShrW28+PjJdfDApPj4+MDowKSkpYnJlYWs7a1tqPj4yXT1kKzE7aVtkPj4wXT0zMjtrW2U+PjJdPShrW2U+PjJdfDApKzF9c1IoZCxrW2c+PjJdfDApfDB9d2hpbGUoMCk7d2Uoa1tsPj4yXXwwLGtbbT4+Ml18MCwtMSwtMSk7VWQoa1ttPj4yXXwwKTtyPW47cmV0dXJufWZ1bmN0aW9uIGFkKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsbD0wLG09MCxuPTAsbz0wLHA9MDtvPXI7cj1yKzY0fDA7bT1vKzQ4fDA7cD1vKzQ0fDA7ZD1vKzQwfDA7aD1vKzE2fDA7aj1vKzh8MDtmPW87Zz1vKzM2fDA7ZT1vKzMyfDA7bj1vKzI4fDA7bD1vKzI0fDA7a1ttPj4yXT1hO2tbcD4+Ml09YjtrW2Q+PjJdPWM7a1tnPj4yXT0wO2lmKChrW3A+PjJdfDApIT0yKSRhKDE2Nzg1LDE2NzM0LDgyNSwxNzU0NCk7aWYoKG9lKGtba1tkPj4yXT4+Ml18MCl8MCk9PTUpe3ZlKGtbbT4+Ml18MCk7cj1vO3JldHVybn1hPWplKGtba1tkPj4yXT4+Ml18MCl8MDtrW2U+PjJdPWE7YT1uZShrWyhrW2Q+PjJdfDApKzQ+PjJdfDApfDA7cD1oO2tbcD4+Ml09YTtrW3ArND4+Ml09TDtpZigoa1toKzQ+PjJdfDApPDApe3NlKGtbbT4+Ml18MCwxNzQxMiwtMSk7cj1vO3JldHVybn1iPUVkKGtbZT4+Ml18MCwtMSl8MDthPWo7a1thPj4yXT1iO2tbYSs0Pj4yXT0oKGJ8MCk8MCk8PDMxPj4zMTthPWo7Yj1rW2ErND4+Ml18MDtwPWg7Yz1rW3ArND4+Ml18MDtkPWtbZT4+Ml18MDtkbyBpZigoYnwwKT4oY3wwKXwoKGJ8MCk9PShjfDApPyhrW2E+PjJdfDApPj4+MD49KGtbcD4+Ml18MCk+Pj4wOjApKXtkPURkKGQpfDA7a1tuPj4yXT1kO2Q9a1ttPj4yXXwwO2lmKGtbbj4+Ml18MCl7d2UoZCxrW24+PjJdfDAsLTEsLTEpO2JyZWFrfUNlKGQpO3I9bztyZXR1cm59ZWxzZXthPXVSKGQpfDA7cD1mO2tbcD4+Ml09YTtrW3ArND4+Ml09MDtwPWY7YT1oO2E9JFIoa1twPj4yXXwwLGtbcCs0Pj4yXXwwLGtbYT4+Ml18MCxrW2ErND4+Ml18MCl8MDtwPWo7cD1fUihhfDAsTHwwLGtbcD4+Ml18MCxrW3ArND4+Ml18MCl8MDtwPSRSKHB8MCxMfDAsMSwwKXwwO3A9U2QocCl8MDtrW24+PjJdPXA7aWYoIShrW24+PjJdfDApKXtDZShrW20+PjJdfDApO3I9bztyZXR1cm59cD1zUihrW24+PjJdfDAsa1tlPj4yXXwwKXwwO2tbbD4+Ml09cCsoa1tmPj4yXXwwKTtrW2c+PjJdPTE7d2hpbGUoMSl7YT1rW2c+PjJdfDA7Zj1qO2Y9JFIoYXwwLCgoYXwwKTwwKTw8MzE+PjMxfDAsa1tmPj4yXXwwLGtbZis0Pj4yXXwwKXwwO2E9TDtwPWg7ZT1rW3ArND4+Ml18MDtkPWtbbD4+Ml18MDtpZighKChhfDApPChlfDApfCgoYXwwKT09KGV8MCk/Zj4+PjA8PShrW3A+PjJdfDApPj4+MDowKSkpYnJlYWs7a1tsPj4yXT1kKzE7aVtkPj4wXT0zMjtrW2c+PjJdPShrW2c+PjJdfDApKzF9aVtkPj4wXT0wfXdoaWxlKDApO3dlKGtbbT4+Ml18MCxrW24+PjJdfDAsLTEsLTEpO1VkKGtbbj4+Ml18MCk7cj1vO3JldHVybn1mdW5jdGlvbiBiZChhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLGw9MCxtPTAsbj0wLG89MCxwPTA7bz1yO3I9cis2NHwwO209bys0OHwwO3A9bys0NHwwO2Q9bys0MHwwO2g9bysxNnwwO2o9bys4fDA7Zj1vO2c9byszNnwwO2U9byszMnwwO249bysyOHwwO2w9bysyNHwwO2tbbT4+Ml09YTtrW3A+PjJdPWI7a1tkPj4yXT1jO2tbZz4+Ml09MDtpZigoa1twPj4yXXwwKSE9MikkYSgxNjc4NSwxNjczNCw4ODAsMTc1NTMpO2lmKChvZShrW2tbZD4+Ml0+PjJdfDApfDApPT01KXt2ZShrW20+PjJdfDApO3I9bztyZXR1cm59YT1qZShrW2tbZD4+Ml0+PjJdfDApfDA7a1tlPj4yXT1hO2E9bmUoa1soa1tkPj4yXXwwKSs0Pj4yXXwwKXwwO3A9aDtrW3A+PjJdPWE7a1twKzQ+PjJdPUw7aWYoKGtbaCs0Pj4yXXwwKTwwKXtzZShrW20+PjJdfDAsMTc0MTIsLTEpO3I9bztyZXR1cm59Yj1FZChrW2U+PjJdfDAsLTEpfDA7YT1qO2tbYT4+Ml09YjtrW2ErND4+Ml09KChifDApPDApPDwzMT4+MzE7YT1qO2I9a1thKzQ+PjJdfDA7cD1oO2M9a1twKzQ+PjJdfDA7ZD1rW2U+PjJdfDA7ZG8gaWYoKGJ8MCk+KGN8MCl8KChifDApPT0oY3wwKT8oa1thPj4yXXwwKT4+PjA+PShrW3A+PjJdfDApPj4+MDowKSl7ZD1EZChkKXwwO2tbbj4+Ml09ZDtkPWtbbT4+Ml18MDtpZihrW24+PjJdfDApe3dlKGQsa1tuPj4yXXwwLC0xLC0xKTticmVha31DZShkKTtyPW87cmV0dXJufWVsc2V7YT11UihkKXwwO3A9ZjtrW3A+PjJdPWE7a1twKzQ+PjJdPTA7cD1mO2E9aDthPSRSKGtbcD4+Ml18MCxrW3ArND4+Ml18MCxrW2E+PjJdfDAsa1thKzQ+PjJdfDApfDA7cD1qO3A9X1IoYXwwLEx8MCxrW3A+PjJdfDAsa1twKzQ+PjJdfDApfDA7cD0kUihwfDAsTHwwLDEsMCl8MDtwPVNkKHApfDA7a1tuPj4yXT1wO2lmKCEoa1tuPj4yXXwwKSl7Q2Uoa1ttPj4yXXwwKTtyPW87cmV0dXJufWtbbD4+Ml09a1tuPj4yXTtrW2c+PjJdPTE7d2hpbGUoMSl7Yj1rW2c+PjJdPDwxO2E9ajthPSRSKGJ8MCwoKGJ8MCk8MCk8PDMxPj4zMXwwLGtbYT4+Ml18MCxrW2ErND4+Ml18MCl8MDtiPUw7cD1oO2M9a1twKzQ+PjJdfDA7ZD1rW2w+PjJdfDA7aWYoISgoYnwwKTwoY3wwKXwoKGJ8MCk9PShjfDApP2E+Pj4wPD0oa1twPj4yXXwwKT4+PjA6MCkpKWJyZWFrO2tbbD4+Ml09ZCsxO2lbZD4+MF09MzI7a1tnPj4yXT0oa1tnPj4yXXwwKSsxfXNSKGQsa1tlPj4yXXwwKXwwO2tbbD4+Ml09KGtbbD4+Ml18MCkrKGtbZj4+Ml18MCk7d2hpbGUoMSl7YT1rW2c+PjJdfDA7Zj1qO2Y9JFIoYXwwLCgoYXwwKTwwKTw8MzE+PjMxfDAsa1tmPj4yXXwwLGtbZis0Pj4yXXwwKXwwO2E9TDtwPWg7ZT1rW3ArND4+Ml18MDtkPWtbbD4+Ml18MDtpZighKChhfDApPChlfDApfCgoYXwwKT09KGV8MCk/Zj4+PjA8PShrW3A+PjJdfDApPj4+MDowKSkpYnJlYWs7a1tsPj4yXT1kKzE7aVtkPj4wXT0zMjtrW2c+PjJdPShrW2c+PjJdfDApKzF9aVtkPj4wXT0wfXdoaWxlKDApO3dlKGtbbT4+Ml18MCxrW24+PjJdfDAsLTEsLTEpO1VkKGtbbj4+Ml18MCk7cj1vO3JldHVybn1mdW5jdGlvbiBjZChhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHM9MDtxPXI7cj1yKzQ4fDA7ZD1xKzQ0fDA7cz1xKzQwfDA7ZT1xKzM2fDA7bT1xKzMyfDA7bj1xKzI4fDA7aD1xKzI0fDA7aj1xKzIwfDA7bD1xKzE2fDA7bz1xKzEyfDA7cD1xKzh8MDtmPXErNHwwO2c9cTtrW2Q+PjJdPWE7a1tzPj4yXT1iO2tbZT4+Ml09YztrW2Y+PjJdPTA7a1tnPj4yXT0wO2lmKChrW3M+PjJdfDApIT0yKSRhKDE2Nzg1LDE2NzM0LDkzOSwxNzU2Mik7aWYoKG9lKGtba1tlPj4yXT4+Ml18MCl8MCkhPTU/KG9lKGtbKGtbZT4+Ml18MCkrND4+Ml18MCl8MCkhPTU6MCl7cz1qZShrW2tbZT4+Ml0+PjJdfDApfDA7a1ttPj4yXT1zO3M9amUoa1soa1tlPj4yXXwwKSs0Pj4yXXwwKXwwO2tbbj4+Ml09cztzPVNkKCh1UihrW20+PjJdfDApfDApKzF8MCl8MDtrW28+PjJdPXM7aWYoIShrW28+PjJdfDApKXtDZShrW2Q+PjJdfDApO3I9cTtyZXR1cm59a1twPj4yXT1rW28+PjJdO2tbaD4+Ml09a1ttPj4yXTthOndoaWxlKDEpe3M9eGQoa1toPj4yXXwwKXwwO2tbZj4+Ml09cztpZighcylicmVhaztrW2o+PjJdPWtbbj4+Ml07Yjp3aGlsZSgxKXtzPXhkKGtbaj4+Ml18MCl8MDtrW2c+PjJdPXM7aWYoIXMpYnJlYWs7aWYoKGtbZz4+Ml18MCk9PShrW2Y+PjJdfDApKWJyZWFrO3doaWxlKDEpe3M9KGtbaj4+Ml18MCkrMXwwO2tbaj4+Ml09cztpZigoMTkyJmlbcz4+MF18MCkhPTEyOCljb250aW51ZSBifX1pZihrW2c+PjJdfDApe2tbbD4+Ml09a1tqPj4yXTtkb3tzPShrW2w+PjJdfDApKzF8MDtrW2w+PjJdPXN9d2hpbGUoKDE5MiZpW3M+PjBdfDApPT0xMjgpO3dSKGtbcD4+Ml18MCxrW2o+PjJdfDAsKGtbbD4+Ml18MCktKGtbaj4+Ml18MCl8MCl8MDtrW3A+PjJdPShrW3A+PjJdfDApKygoa1tsPj4yXXwwKS0oa1tqPj4yXXwwKSl9d2hpbGUoMSl7cz0oa1toPj4yXXwwKSsxfDA7a1toPj4yXT1zO2lmKCgxOTImaVtzPj4wXXwwKSE9MTI4KWNvbnRpbnVlIGF9fWlba1twPj4yXT4+MF09MDt3ZShrW2Q+PjJdfDAsa1tvPj4yXXwwLC0xLC0xKTtVZChrW28+PjJdfDApO3I9cTtyZXR1cm59dmUoa1tkPj4yXXwwKTtyPXE7cmV0dXJufWZ1bmN0aW9uIGRkKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxpPTAsaj0wLGw9MC4wO2k9cjtyPXIrMzJ8MDtkPWkrMjh8MDtqPWkrMjR8MDtlPWkrMjB8MDtnPWkrMTZ8MDtmPWkrOHwwO2g9aTtrW2Q+PjJdPWE7a1tqPj4yXT1iO2tbZT4+Ml09YztpZigoa1tqPj4yXXwwKSE9MSkkYSgxNjcyNiwxNjczNCwxMzk1LDE3NTc2KTtqPUdlKGtbZD4+Ml18MCwyNCl8MDtrW2c+PjJdPWo7aWYoNT09KGJmKGtba1tlPj4yXT4+Ml18MCl8MCkpe3I9aTtyZXR1cm59YT0oa1tnPj4yXXwwKSsxNnwwO2o9YTtqPSRSKGtbaj4+Ml18MCxrW2orND4+Ml18MCwxLDApfDA7a1thPj4yXT1qO2tbYSs0Pj4yXT1MO2w9K2xlKGtba1tlPj4yXT4+Ml18MCk7cFtoPj4zXT1sO3BbZj4+M109K3BbaD4+M10tK3Bba1tnPj4yXT4+M107YT0oa1tnPj4yXXwwKSsxNnwwO2o9a1tnPj4yXXwwO3Bbaj4+M109K3Bbaj4+M10rICtwW2Y+PjNdLygrKChrW2E+PjJdfDApPj4+MCkrNDI5NDk2NzI5Ni4wKisoa1thKzQ+PjJdfDApKTtqPShrW2c+PjJdfDApKzh8MDtwW2o+PjNdPStwW2o+PjNdKyArcFtmPj4zXSooK3BbaD4+M10tK3Bba1tnPj4yXT4+M10pO3I9aTtyZXR1cm59ZnVuY3Rpb24gZWQoYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wLGU9MCxmPTAuMDtkPXI7cj1yKzE2fDA7Yj1kKzR8MDtjPWQ7a1tiPj4yXT1hO2E9R2Uoa1tiPj4yXXwwLDApfDA7a1tjPj4yXT1hO2lmKChrW2M+PjJdfDApIT0wPyhhPShrW2M+PjJdfDApKzE2fDAsZT1rW2ErND4+Ml18MCwoZXwwKT4wfChlfDApPT0wJihrW2E+PjJdfDApPj4+MD4xKTowKXthPWtbYj4+Ml18MDtmPStwWyhrW2M+PjJdfDApKzg+PjNdO2U9KGtbYz4+Ml18MCkrMTZ8MDtlPV9SKGtbZT4+Ml18MCxrW2UrND4+Ml18MCwxLDApfDA7cmUoYSwrWCgrKGYvKCsoZT4+PjApKzQyOTQ5NjcyOTYuMCorKEx8MCkpKSkpO3I9ZDtyZXR1cm59cmUoa1tiPj4yXXwwLDAuMCk7cj1kO3JldHVybn1mdW5jdGlvbiBmZChhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTAsZT0wLGY9MC4wO2Q9cjtyPXIrMTZ8MDtiPWQrNHwwO2M9ZDtrW2I+PjJdPWE7YT1HZShrW2I+PjJdfDAsMCl8MDtrW2M+PjJdPWE7aWYoKGtbYz4+Ml18MCkhPTA/KGE9KGtbYz4+Ml18MCkrMTZ8MCxlPWtbYSs0Pj4yXXwwLChlfDApPjB8KGV8MCk9PTAmKGtbYT4+Ml18MCk+Pj4wPjEpOjApe2E9a1tiPj4yXXwwO2Y9K3BbKGtbYz4+Ml18MCkrOD4+M107ZT0oa1tjPj4yXXwwKSsxNnwwO2U9X1Ioa1tlPj4yXXwwLGtbZSs0Pj4yXXwwLDEsMCl8MDtyZShhLGYvKCsoZT4+PjApKzQyOTQ5NjcyOTYuMCorKEx8MCkpKTtyPWQ7cmV0dXJufXJlKGtbYj4+Ml18MCwwLjApO3I9ZDtyZXR1cm59ZnVuY3Rpb24gZ2QoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGk9MCxqPTAsbD0wLG09MCxuPTAsbz0wLHE9MCxzPTAuMDtvPXI7cj1yKzgwfDA7ZD1vKzY0fDA7cT1vKzYwfDA7ZT1vKzU2fDA7bD1vKzUyfDA7bj1vKzh8MDttPW87aj1vKzQ4fDA7aT1vKzQ0fDA7aD1vKzQwfDA7Zj1vKzI4fDA7Zz1vKzE2fDA7a1tkPj4yXT1hO2tbcT4+Ml09YjtrW2U+PjJdPWM7YT1uO2tbYT4+Ml09MDtrW2ErND4+Ml09MDtwW20+PjNdPTAuMDtpZigoa1txPj4yXXwwKSE9MSkkYSgxNjcyNiwxNjczNCwxNDE4LDE3NTg5KTtxPWJmKGtba1tlPj4yXT4+Ml18MCl8MDtrW2g+PjJdPXE7aWYoKGtbaD4+Ml18MCk9PTUpe3I9bztyZXR1cm59cT1HZShrW2Q+PjJdfDAsNjQpfDA7a1tsPj4yXT1xO2RvIGlmKCEoa1soa1tsPj4yXXwwKSs1Nj4+Ml18MCkpe2Q9VlIoMSwxMil8MDtrWyhrW2w+PjJdfDApKzU2Pj4yXT1kO2Q9a1tsPj4yXXwwO2lmKChrW2g+PjJdfDApPT0xKXtxPWtbZCs1Nj4+Ml18MDtsZChmLDE3Nik7a1txPj4yXT1rW2Y+PjJdO2tbcSs0Pj4yXT1rW2YrND4+Ml07a1txKzg+PjJdPWtbZis4Pj4yXTtxPShrW2w+PjJdfDApKzQ4fDA7a1txPj4yXT0wO2tbcSs0Pj4yXT0wO2JyZWFrfWVsc2V7cT1kKzQ4fDA7a1txPj4yXT0xO2tbcSs0Pj4yXT0wO3E9a1soa1tsPj4yXXwwKSs1Nj4+Ml18MDtsZChnLDE3Nyk7a1txPj4yXT1rW2c+PjJdO2tbcSs0Pj4yXT1rW2crND4+Ml07a1txKzg+PjJdPWtbZys4Pj4yXTticmVha319d2hpbGUoMCk7cT0oa1tsPj4yXXwwKSsxNnwwO2Q9cTtkPSRSKGtbZD4+Ml18MCxrW2QrND4+Ml18MCwxLDApfDA7a1txPj4yXT1kO2tbcSs0Pj4yXT1MO3E9KGtbbD4+Ml18MCkrNDh8MDtkPWtba1tlPj4yXT4+Ml18MDtpZigwPT0oa1txPj4yXXwwKT8wPT0oa1txKzQ+PjJdfDApOjApe3E9bmUoZCl8MDttPW47a1ttPj4yXT1xO2tbbSs0Pj4yXT1MO209VlIoMSw4KXwwO2tbaj4+Ml09bTttPW47bj1rW20rND4+Ml18MDtxPWtbaj4+Ml18MDtrW3E+PjJdPWtbbT4+Ml07a1txKzQ+PjJdPW47cGQoa1soa1tsPj4yXXwwKSs1Nj4+Ml18MCxrW2o+PjJdfDApO3I9bztyZXR1cm59ZWxzZXtzPStsZShkKTtwW20+PjNdPXM7cT1WUigxLDgpfDA7a1tpPj4yXT1xO3Bba1tpPj4yXT4+M109K3BbbT4+M107cGQoa1soa1tsPj4yXXwwKSs1Nj4+Ml18MCxrW2k+PjJdfDApO3I9bztyZXR1cm59fWZ1bmN0aW9uIGhkKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MCxlPTA7ZD1yO3I9cisxNnwwO2I9ZCs0fDA7Yz1kO2tbYj4+Ml09YTthPUdlKGtbYj4+Ml18MCwwKXwwO2tbYz4+Ml09YTtpZighKGtbYz4+Ml18MCkpe3I9ZDtyZXR1cm59aWYoIShrWyhrW2M+PjJdfDApKzU2Pj4yXXwwKSl7cj1kO3JldHVybn1yZChrWyhrW2M+PjJdfDApKzU2Pj4yXXwwLDEzMSxrW2M+PjJdfDApO3RkKGtbKGtbYz4+Ml18MCkrNTY+PjJdfDApO1VSKGtbKGtbYz4+Ml18MCkrNTY+PjJdfDApO2E9KGtbYz4+Ml18MCkrNDB8MDtpZighKDE9PShrW2E+PjJdfDApPzA9PShrW2ErND4+Ml18MCk6MCkpe3I9ZDtyZXR1cm59ZT0oa1tjPj4yXXwwKSs0OHwwO2E9a1tiPj4yXXwwO2I9a1tjPj4yXXwwO2lmKDA9PShrW2U+PjJdfDApPzA9PShrW2UrND4+Ml18MCk6MCl7ZT1iO3VlKGEsa1tlPj4yXXwwLGtbZSs0Pj4yXXwwKTtyPWQ7cmV0dXJufWVsc2V7cmUoYSwrcFtiKzg+PjNdKTtyPWQ7cmV0dXJufX1mdW5jdGlvbiBpZChhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTA7ZD1yO3I9cisxNnwwO2I9ZCs0fDA7Yz1kO2tbYj4+Ml09YTthPUdlKGtbYj4+Ml18MCwwKXwwO2tbYz4+Ml09YTtpZighKGtbYz4+Ml18MCkpe3I9ZDtyZXR1cm59YT0oa1tjPj4yXXwwKSsxNnwwO3BbKGtbYz4+Ml18MCkrMjQ+PjNdPSgrKChrW2E+PjJdfDApPj4+MCkrNDI5NDk2NzI5Ni4wKisoa1thKzQ+PjJdfDApKS8yLjA7R2Qoa1tiPj4yXXwwKTtyPWQ7cmV0dXJufWZ1bmN0aW9uIGpkKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MDtkPXI7cj1yKzE2fDA7Yj1kKzR8MDtjPWQ7a1tiPj4yXT1hO2E9R2Uoa1tiPj4yXXwwLDApfDA7a1tjPj4yXT1hO2lmKCEoa1tjPj4yXXwwKSl7cj1kO3JldHVybn1hPShrW2M+PjJdfDApKzE2fDA7cFsoa1tjPj4yXXwwKSsyND4+M109KCsoKGtbYT4+Ml18MCk+Pj4wKSs0Mjk0OTY3Mjk2LjAqKyhrW2ErND4+Ml18MCkpLzQuMDtHZChrW2I+PjJdfDApO3I9ZDtyZXR1cm59ZnVuY3Rpb24ga2QoYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wO2Q9cjtyPXIrMTZ8MDtiPWQrNHwwO2M9ZDtrW2I+PjJdPWE7YT1HZShrW2I+PjJdfDAsMCl8MDtrW2M+PjJdPWE7aWYoIShrW2M+PjJdfDApKXtyPWQ7cmV0dXJufWE9KGtbYz4+Ml18MCkrMTZ8MDthPWtTKGtbYT4+Ml18MCxrW2ErND4+Ml18MCwzLDApfDA7cFsoa1tjPj4yXXwwKSsyND4+M109KCsoYT4+PjApKzQyOTQ5NjcyOTYuMCorKEx8MCkpLzQuMDtHZChrW2I+PjJdfDApO3I9ZDtyZXR1cm59ZnVuY3Rpb24gbGQoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTA7Yz1yO3I9cisxNnwwO2U9YysxMnwwO2Q9YztrW2U+PjJdPWI7a1tkKzQ+PjJdPWtbZT4+Ml07a1tkPj4yXT0wO2tbYT4+Ml09a1tkPj4yXTtrW2ErND4+Ml09a1tkKzQ+PjJdO2tbYSs4Pj4yXT1rW2QrOD4+Ml07cj1jO3JldHVybn1mdW5jdGlvbiBtZChhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MDtlPXI7cj1yKzE2fDA7Zz1lKzEyfDA7Zj1lKzh8MDtkPWU7a1tnPj4yXT1hO2tbZj4+Ml09YjtrW2UrND4+Ml09YztiPVZSKGtbZz4+Ml18MCxrW2Y+PjJdfDApfDA7a1tkPj4yXT1iO3I9ZTtyZXR1cm4ga1tkPj4yXXwwfWZ1bmN0aW9uIG5kKGEpe2E9YXwwO3ZhciBiPTAsYz0wO2I9cjtyPXIrMTZ8MDtjPWI7a1tjPj4yXT1hO1VSKGtbYz4+Ml18MCk7cj1iO3JldHVybn1mdW5jdGlvbiBvZChhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaT0wO2k9cjtyPXIrMzJ8MDtkPWkrMTZ8MDtmPWkrMTJ8MDtnPWkrOHwwO2g9aSs0fDA7ZT1pO2tbZD4+Ml09YTtrW2Y+PjJdPWI7a1tnPj4yXT1jO2lmKCEoa1trW2Q+PjJdPj4yXXwwKSl7aD1tZCgxLDI0LDE2NzE3KXwwO2tbZT4+Ml09aDtrWyhrW2U+PjJdfDApKzg+PjJdPWtbZz4+Ml07aD0oa1tlPj4yXXwwKSsxNnwwO2tbaD4+Ml09MTtrW2grND4+Ml09MDtrW2tbZD4+Ml0+PjJdPWtbZT4+Ml07cj1pO3JldHVybn1lPWdjW2tbZj4+Ml0mMjU1XShrWyhrW2tbZD4+Ml0+PjJdfDApKzg+PjJdfDAsa1tnPj4yXXwwKXwwO2tbaD4+Ml09ZTtpZighKGtbaD4+Ml18MCkpe2g9KGtba1tkPj4yXT4+Ml18MCkrMTZ8MDtmPWg7Zj0kUihrW2Y+PjJdfDAsa1tmKzQ+PjJdfDAsMSwwKXwwO2tbaD4+Ml09ZjtrW2grND4+Ml09TDtuZChrW2c+PjJdfDApO3I9aTtyZXR1cm59ZD1rW2tbZD4+Ml0+PjJdfDA7aWYoKGtbaD4+Ml18MCk+MCl7b2QoZCxrW2Y+PjJdfDAsa1tnPj4yXXwwKTtyPWk7cmV0dXJufWVsc2V7b2QoZCs0fDAsa1tmPj4yXXwwLGtbZz4+Ml18MCk7cj1pO3JldHVybn19ZnVuY3Rpb24gcGQoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTA7Yz1yO3I9cisxNnwwO2U9Yys0fDA7ZD1jO2tbZT4+Ml09YTtrW2Q+PjJdPWI7b2Qoa1tlPj4yXXwwLGtbKGtbZT4+Ml18MCkrND4+Ml18MCxrW2Q+PjJdfDApO3I9YztyZXR1cm59ZnVuY3Rpb24gcWQoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTA7Zz1yO3I9cisxNnwwO2Q9Zys4fDA7ZT1nKzR8MDtmPWc7a1tkPj4yXT1hO2tbZT4+Ml09YjtrW2Y+PjJdPWM7aWYoIShrW2Q+PjJdfDApKXtyPWc7cmV0dXJufWlmKGtba1tkPj4yXT4+Ml18MClxZChrW2tbZD4+Ml0+PjJdfDAsa1tlPj4yXXwwLGtbZj4+Ml18MCk7Yz0oa1tkPj4yXXwwKSsxNnwwO2ljW2tbZT4+Ml0mMjU1XShrWyhrW2Q+PjJdfDApKzg+PjJdfDAsa1tjPj4yXXwwLGtbYys0Pj4yXXwwLGtbZj4+Ml18MCk7aWYoIShrWyhrW2Q+PjJdfDApKzQ+PjJdfDApKXtyPWc7cmV0dXJufXFkKGtbKGtbZD4+Ml18MCkrND4+Ml18MCxrW2U+PjJdfDAsa1tmPj4yXXwwKTtyPWc7cmV0dXJufWZ1bmN0aW9uIHJkKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wO2Q9cjtyPXIrMTZ8MDtnPWQrOHwwO2Y9ZCs0fDA7ZT1kO2tbZz4+Ml09YTtrW2Y+PjJdPWI7a1tlPj4yXT1jO3FkKGtba1tnPj4yXT4+Ml18MCxrW2Y+PjJdfDAsa1tlPj4yXXwwKTtyPWQ7cmV0dXJufWZ1bmN0aW9uIHNkKGEpe2E9YXwwO3ZhciBiPTAsYz0wO2M9cjtyPXIrMTZ8MDtiPWM7a1tiPj4yXT1hO2lmKCEoa1tiPj4yXXwwKSl7cj1jO3JldHVybn1uZChrWyhrW2I+PjJdfDApKzg+PjJdfDApO2lmKGtba1tiPj4yXT4+Ml18MClzZChrW2tbYj4+Ml0+PjJdfDApO2lmKGtbKGtbYj4+Ml18MCkrND4+Ml18MClzZChrWyhrW2I+PjJdfDApKzQ+PjJdfDApO25kKGtbYj4+Ml18MCk7cj1jO3JldHVybn1mdW5jdGlvbiB0ZChhKXthPWF8MDt2YXIgYj0wLGM9MDtiPXI7cj1yKzE2fDA7Yz1iO2tbYz4+Ml09YTtzZChrW2tbYz4+Ml0+PjJdfDApO3I9YjtyZXR1cm59ZnVuY3Rpb24gdWQoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTA7Zj1yO3I9ciszMnwwO2M9ZisyNHwwO2g9ZisyMHwwO2c9ZisxNnwwO2Q9Zis4fDA7ZT1mO2tbaD4+Ml09YTtrW2c+PjJdPWI7aD1rW2g+PjJdfDA7YT1rW2grND4+Ml18MDtiPWQ7a1tiPj4yXT1rW2g+PjJdO2tbYis0Pj4yXT1hO2c9a1tnPj4yXXwwO2I9a1tnKzQ+PjJdfDA7YT1lO2tbYT4+Ml09a1tnPj4yXTtrW2ErND4+Ml09YjthPWQ7Yj1lO2lmKChrW2E+PjJdfDApPT0oa1tiPj4yXXwwKT8oa1thKzQ+PjJdfDApPT0oa1tiKzQ+PjJdfDApOjApe2tbYz4+Ml09MDtoPWtbYz4+Ml18MDtyPWY7cmV0dXJuIGh8MH1nPWQ7Yj1rW2crND4+Ml18MDtoPWU7ZT1rW2grND4+Ml18MDtpZigoYnwwKTwoZXwwKXwoKGJ8MCk9PShlfDApPyhrW2c+PjJdfDApPj4+MDwoa1toPj4yXXwwKT4+PjA6MCkpe2tbYz4+Ml09LTE7aD1rW2M+PjJdfDA7cj1mO3JldHVybiBofDB9ZWxzZXtrW2M+PjJdPTE7aD1rW2M+PjJdfDA7cj1mO3JldHVybiBofDB9cmV0dXJuIDB9ZnVuY3Rpb24gdmQoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTA7Zj1yO3I9ciszMnwwO2M9ZisyNHwwO2g9ZisyMHwwO2c9ZisxNnwwO2Q9Zis4fDA7ZT1mO2tbaD4+Ml09YTtrW2c+PjJdPWI7cFtkPj4zXT0rcFtrW2g+PjJdPj4zXTtwW2U+PjNdPStwW2tbZz4+Ml0+PjNdO2RvIGlmKCEoK3BbZD4+M109PStwW2U+PjNdKSlpZigrcFtkPj4zXTwrcFtlPj4zXSl7a1tjPj4yXT0tMTticmVha31lbHNle2tbYz4+Ml09MTticmVha31lbHNlIGtbYz4+Ml09MDt3aGlsZSgwKTtyPWY7cmV0dXJuIGtbYz4+Ml18MH1mdW5jdGlvbiB3ZChhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wLGg9MDtoPXI7cj1yKzMyfDA7Yz1oKzE2fDA7Zj1oKzEyfDA7ZT1oKzh8MDtnPWgrNHwwO2Q9aDtrW2M+PjJdPWE7a1tmPj4yXT1iO2tbZT4+Ml09MDt3aGlsZSgxKXtpZighKGxbKGtbYz4+Ml18MCkrKGtbZT4+Ml18MCk+PjBdfDApKWJyZWFrO2lmKCEoKEZRKGxbKGtbYz4+Ml18MCkrKGtbZT4+Ml18MCk+PjBdfDApfDApIT0wXjEpKWJyZWFrO2tbZT4+Ml09KGtbZT4+Ml18MCkrMX1pZighKGlbKGtbYz4+Ml18MCkrKGtbZT4+Ml18MCk+PjBdfDApKXtzUihrW2Y+PjJdfDAsMTY5NzUpfDA7cj1oO3JldHVybn1iPShLUShsWyhrW2M+PjJdfDApKyhrW2U+PjJdfDApPj4wXXwwKXwwKSYyNTU7aVtrW2Y+PjJdPj4wXT1iO2tbZz4+Ml09MTt3aGlsZSgxKXtpZigoa1tnPj4yXXwwKT49NClicmVhaztpZighKGxbKGtbYz4+Ml18MCkrKGtbZT4+Ml18MCk+PjBdfDApKWJyZWFrO2tbZD4+Ml09bFsxNjg0NysobFsoa1tjPj4yXXwwKSsoa1tlPj4yXXwwKT4+MF0mMTI3KT4+MF07aWYoKGtbZD4+Ml18MCk+MCl7YT0oa1tkPj4yXXwwKSs0OCYyNTU7Yj1rW2c+PjJdfDA7a1tnPj4yXT1iKzE7aVsoa1tmPj4yXXwwKStiPj4wXT1hfWtbZT4+Ml09KGtbZT4+Ml18MCkrMX13aGlsZSgxKXtjPWtbZz4+Ml18MDtpZigoa1tnPj4yXXwwKT49NClicmVhaztrW2c+PjJdPWMrMTtpWyhrW2Y+PjJdfDApK2M+PjBdPTQ4fWlbKGtbZj4+Ml18MCkrYz4+MF09MDtyPWg7cmV0dXJufWZ1bmN0aW9uIHhkKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MCxlPTAsZj0wO2Y9cjtyPXIrMTZ8MDtiPWYrOHwwO2M9Zis0fDA7ZD1mO2tbYj4+Ml09YTthPWtbYj4+Ml18MDtrW2I+PjJdPWErMTtrW2M+PjJdPWxbYT4+MF07a1tkPj4yXT1sWzE2OTgwKyhrW2M+PjJdfDApPj4wXTtzd2l0Y2goa1tkPj4yXXwwKXtjYXNlIDQ6e2tbYz4+Ml09NjU1MzM7ZT1rW2M+PjJdfDA7cj1mO3JldHVybiBlfDB9Y2FzZSAzOnthPWtbYz4+Ml08PDY7ZT1rW2I+PjJdfDA7a1tiPj4yXT1lKzE7a1tjPj4yXT1hKyhsW2U+PjBdfDApO2U9NDticmVha31jYXNlIDI6e2U9NDticmVha31jYXNlIDE6YnJlYWs7ZGVmYXVsdDp7ZT1rW2M+PjJdfDA7cj1mO3JldHVybiBlfDB9fWlmKChlfDApPT00KXthPWtbYz4+Ml08PDY7ZT1rW2I+PjJdfDA7a1tiPj4yXT1lKzE7a1tjPj4yXT1hKyhsW2U+PjBdfDApfWE9a1tjPj4yXTw8NjtlPWtbYj4+Ml18MDtrW2I+PjJdPWUrMTtrW2M+PjJdPWErKGxbZT4+MF18MCk7a1tjPj4yXT0oa1tjPj4yXXwwKS0oa1s5MzYrKGtbZD4+Ml08PDIpPj4yXXwwKTtpZigoKGtbOTUyKyhrW2Q+PjJdPDwyKT4+Ml0ma1tjPj4yXXwwKSE9MD8oa1tjPj4yXSYtMjA0OHwwKSE9NTUyOTY6MCk/KGtbYz4+Ml0mLTJ8MCkhPTY1NTM0OjApe2U9a1tjPj4yXXwwO3I9ZjtyZXR1cm4gZXwwfWtbYz4+Ml09NjU1MzM7ZT1rW2M+PjJdfDA7cj1mO3JldHVybiBlfDB9ZnVuY3Rpb24geWQoYSl7YT0rYTt2YXIgYj0wLGM9MDtjPXI7cj1yKzE2fDA7Yj1jO3BbYj4+M109YTtyPWM7cmV0dXJuICsoK3BbYj4+M10qMTgwLjAvMy4xNDE1OTI2NTM1ODk3OTMpfWZ1bmN0aW9uIHpkKGEpe2E9K2E7dmFyIGI9MCxjPTA7Yz1yO3I9cisxNnwwO2I9YztwW2I+PjNdPWE7cj1jO3JldHVybiArKCtwW2I+PjNdKjMuMTQxNTkyNjUzNTg5NzkzLzE4MC4wKX1mdW5jdGlvbiBBZChhKXthPSthO3ZhciBiPTAsYz0wO2I9cjtyPXIrMTZ8MDtjPWI7cFtjPj4zXT1hO2E9MS4wLyskKCsoK3BbYz4+M10pKTtyPWI7cmV0dXJuICthfWZ1bmN0aW9uIEJkKGEpe2E9K2E7dmFyIGI9MCxjPTA7Yj1yO3I9cisxNnwwO2M9YjtwW2M+PjNdPWE7YT0xLjAvK19RKCtwW2M+PjNdKTtyPWI7cmV0dXJuICthfWZ1bmN0aW9uIENkKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHM9MCx0PTA7dD1yO3I9cis0OHwwO2U9dCs0MHwwO2Y9dCszNnwwO2c9dCszMnwwO2g9dCsyOHwwO2o9dCsyNHwwO2w9dCsyMHwwO289dCsxNnwwO3A9dCsxMnwwO3E9dCs4fDA7bT10KzR8MDtuPXQ7a1tmPj4yXT1hO2tbZz4+Ml09YjtrW2g+PjJdPWM7a1tqPj4yXT1kO2tbbD4+Ml09MDtrW28+PjJdPS0xO2lmKCEoaVtrW2Y+PjJdPj4wXXwwKSl7a1tlPj4yXT0tMTtzPWtbZT4+Ml18MDtyPXQ7cmV0dXJuIHN8MH1hOndoaWxlKDEpe2lmKCEoeGQoa1tnPj4yXXwwKXwwKSlicmVhaztiPWtbbD4+Ml18MDtrW2w+PjJdPWIrMTtpZigoYnwwKT49KGtbaD4+Ml18MCkpYnJlYWs7d2hpbGUoMSl7Yj0oa1tnPj4yXXwwKSsxfDA7a1tnPj4yXT1iO2lmKCgxOTImaVtiPj4wXXwwKSE9MTI4KWNvbnRpbnVlIGF9fWtbbD4+Ml09MDt3aGlsZSgxKXtpZighKHhkKGtbZz4+Ml18MCl8MCkpYnJlYWs7a1twPj4yXT1rW2Y+PjJdO2tbcT4+Ml09a1tnPj4yXTtkb3tiPXhkKGtbcD4+Ml18MCl8MDtrW20+PjJdPWI7Yj14ZChrW3E+PjJdfDApfDA7a1tuPj4yXT1iO2Rve2I9KGtbcD4+Ml18MCkrMXwwO2tbcD4+Ml09Yn13aGlsZSgoMTkyJmlbYj4+MF18MCk9PTEyOCk7ZG97Yj0oa1txPj4yXXwwKSsxfDA7a1txPj4yXT1ifXdoaWxlKCgxOTImaVtiPj4wXXwwKT09MTI4KX13aGlsZSgoKGtbbT4+Ml18MCkhPTA/KGtbbT4+Ml18MCk9PShrW24+PjJdfDApOjApJihrW24+PjJdfDApIT0wKTtpZighKGtbbT4+Ml18MCkpe3M9MTQ7YnJlYWt9ZG97Yj0oa1tnPj4yXXwwKSsxfDA7a1tnPj4yXT1ifXdoaWxlKCgxOTImaVtiPj4wXXwwKT09MTI4KTtrW2w+PjJdPShrW2w+PjJdfDApKzF9aWYoKHN8MCk9PTE0KWtbbz4+Ml09a1tsPj4yXTtpZihrW2o+PjJdfDApa1trW2o+PjJdPj4yXT1rW2c+PjJdO3M9a1tvPj4yXXwwO2tbZT4+Ml09KGtbbz4+Ml18MCk+PTA/cysoa1toPj4yXXwwKXwwOnM7cz1rW2U+PjJdfDA7cj10O3JldHVybiBzfDB9ZnVuY3Rpb24gRGQoYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wO2I9cjtyPXIrMTZ8MDtjPWIrNHwwO2Q9YjtrW2M+PjJdPWE7YT1TZCgodVIoa1tjPj4yXXwwKXwwKSsxfDApfDA7a1tkPj4yXT1hO2E9c1Ioa1tkPj4yXXwwLGtbYz4+Ml18MCl8MDtyPWI7cmV0dXJuIGF8MH1mdW5jdGlvbiBFZChhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wO2c9cjtyPXIrMTZ8MDtjPWcrMTJ8MDtkPWcrOHwwO2Y9Zys0fDA7ZT1nO2tbYz4+Ml09YTtrW2Q+PjJdPWI7a1tmPj4yXT0wO2lmKChrW2Q+PjJdfDApPj0wKWtbZT4+Ml09KGtbYz4+Ml18MCkrKGtbZD4+Ml18MCk7ZWxzZSBrW2U+PjJdPS0xO2lmKChrW2M+PjJdfDApPj4+MD4oa1tlPj4yXXwwKT4+PjApJGEoMTc1MTYsMTY3MzQsMzE2LDE3NTI1KTt3aGlsZSgxKXtpZighKGlba1tjPj4yXT4+MF18MCkpe2M9MTA7YnJlYWt9aWYoKGtbYz4+Ml18MCk+Pj4wPj0oa1tlPj4yXXwwKT4+PjApe2M9MTA7YnJlYWt9a1tjPj4yXT0oa1tjPj4yXXwwKSsoKGxbMTY5ODArKGxba1tjPj4yXT4+MF18MCk+PjBdfDApKzEpO2tbZj4+Ml09KGtbZj4+Ml18MCkrMX1pZigoY3wwKT09MTApe3I9ZztyZXR1cm4ga1tmPj4yXXwwfXJldHVybiAwfWZ1bmN0aW9uIEZkKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaT0wLGo9MCxsPTA7aT1yO3I9cis0OHwwO2o9aSszMnwwO2c9aSsxNnwwO2w9aSsyOHwwO2Y9aSs4fDA7ZT1pO2g9aSsyNHwwO2tbaj4+Ml09YTthPWc7a1thPj4yXT1iO2tbYSs0Pj4yXT1jO2tbbD4+Ml09ZDtrW2g+PjJdPWtbbD4+Ml07ZD0oa1toPj4yXXwwKSs0OHwwO2I9a1tqPj4yXXwwO2lmKDA9PShrW2Q+PjJdfDApPzA9PShrW2QrND4+Ml18MCk6MCl7bD1rW2I+PjJdfDA7aj1mO2tbaj4+Ml09bDtrW2orND4+Ml09KChsfDApPDApPDwzMT4+MzE7aj0oa1toPj4yXXwwKSszMnwwO2w9ZztiPWtbaD4+Ml18MDtpZigoa1tqPj4yXXwwKT09KGtbbD4+Ml18MCk/KGtbais0Pj4yXXwwKT09KGtbbCs0Pj4yXXwwKTowKXtsPWIrNDB8MDtqPWw7aj0kUihrW2o+PjJdfDAsa1tqKzQ+PjJdfDAsMSwwKXwwO2tbbD4+Ml09ajtrW2wrND4+Ml09TDtyPWk7cmV0dXJufWo9YiszMnwwO2Q9a1tqKzQ+PjJdfDA7bD1nO2U9a1tsKzQ+PjJdfDA7aWYoISgoZHwwKTwoZXwwKXwoKGR8MCk9PShlfDApPyhrW2o+PjJdfDApPj4+MDwoa1tsPj4yXXwwKT4+PjA6MCkpKXtyPWk7cmV0dXJufWw9a1tmKzQ+PjJdfDA7aj1rW2g+PjJdfDA7a1tqPj4yXT1rW2Y+PjJdO2tbais0Pj4yXT1sO2o9a1tnKzQ+PjJdfDA7bD0oa1toPj4yXXwwKSszMnwwO2tbbD4+Ml09a1tnPj4yXTtrW2wrND4+Ml09ajtsPShrW2g+PjJdfDApKzQwfDA7a1tsPj4yXT0xO2tbbCs0Pj4yXT0wO3I9aTtyZXR1cm59ZWxzZXtwW2U+PjNdPStwW2I+PjNdO2o9KGtbaD4+Ml18MCkrMzJ8MDtsPWc7Yj1rW2g+PjJdfDA7aWYoKGtbaj4+Ml18MCk9PShrW2w+PjJdfDApPyhrW2orND4+Ml18MCk9PShrW2wrND4+Ml18MCk6MCl7bD1iKzQwfDA7aj1sO2o9JFIoa1tqPj4yXXwwLGtbais0Pj4yXXwwLDEsMCl8MDtrW2w+PjJdPWo7a1tsKzQ+PjJdPUw7cj1pO3JldHVybn1qPWIrMzJ8MDtkPWtbais0Pj4yXXwwO2w9ZztmPWtbbCs0Pj4yXXwwO2lmKCEoKGR8MCk8KGZ8MCl8KChkfDApPT0oZnwwKT8oa1tqPj4yXXwwKT4+PjA8KGtbbD4+Ml18MCk+Pj4wOjApKSl7cj1pO3JldHVybn1wWyhrW2g+PjJdfDApKzg+PjNdPStwW2U+PjNdO2o9a1tnKzQ+PjJdfDA7bD0oa1toPj4yXXwwKSszMnwwO2tbbD4+Ml09a1tnPj4yXTtrW2wrND4+Ml09ajtsPShrW2g+PjJdfDApKzQwfDA7a1tsPj4yXT0xO2tbbCs0Pj4yXT0wO3I9aTtyZXR1cm59fWZ1bmN0aW9uIEdkKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MCxlPTAsZj0wO2U9cjtyPXIrMTZ8MDtiPWUrNHwwO2Q9ZTtrW2I+PjJdPWE7Yz1HZShrW2I+PjJdfDAsMCl8MDtrW2Q+PjJdPWM7aWYoIShrW2Q+PjJdfDApKXtyPWU7cmV0dXJufWlmKCEoa1soa1tkPj4yXXwwKSs1Nj4+Ml18MCkpe3I9ZTtyZXR1cm59a1soa1tkPj4yXXwwKSs2MD4+Ml09MDtyZChrWyhrW2Q+PjJdfDApKzU2Pj4yXXwwLDEzMixrW2Q+PjJdfDApO3RkKGtbKGtbZD4+Ml18MCkrNTY+PjJdfDApO1VSKGtbKGtbZD4+Ml18MCkrNTY+PjJdfDApO2M9KGtbZD4+Ml18MCkrNDh8MDtpZighKDA9PShrW2M+PjJdfDApPzA9PShrW2MrND4+Ml18MCk6MCkpe2M9KGtbZD4+Ml18MCkrNDB8MDtyZShrW2I+PjJdfDAsK3BbKGtbZD4+Ml18MCkrOD4+M10vKCsoKGtbYz4+Ml18MCk+Pj4wKSs0Mjk0OTY3Mjk2LjAqKyhrW2MrND4+Ml18MCkpKTtyPWU7cmV0dXJufWY9KGtbZD4+Ml18MCkrNDB8MDtiPWtbYj4+Ml18MDtjPWtbZD4+Ml18MDthPWtbYz4+Ml18MDtjPWtbYys0Pj4yXXwwO2lmKDE9PShrW2Y+PjJdfDApPzA9PShrW2YrND4+Ml18MCk6MCl7dWUoYixhLGMpO3I9ZTtyZXR1cm59ZWxzZXtmPShrW2Q+PjJdfDApKzQwfDA7cmUoYiwoKyhhPj4+MCkrNDI5NDk2NzI5Ni4wKisoY3wwKSkqMS4wLygrKChrW2Y+PjJdfDApPj4+MCkrNDI5NDk2NzI5Ni4wKisoa1tmKzQ+PjJdfDApKSk7cj1lO3JldHVybn19ZnVuY3Rpb24gSGQoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxpPTAsaj0wLGw9MCxtPTAsbj0wLG89MCxxPTA7bz1yO3I9cis2NHwwO2c9bys1NnwwO2o9byszMnwwO3E9bys1MnwwO209bysyNHwwO2w9bysxNnwwO2U9bys4fDA7aD1vO2Y9bys0OHwwO2k9bys0NHwwO249bys0MHwwO2tbZz4+Ml09YTthPWo7a1thPj4yXT1iO2tbYSs0Pj4yXT1jO2tbcT4+Ml09ZDtrW24+PjJdPWtbcT4+Ml07aWYoKGtbKGtbbj4+Ml18MCkrNjA+PjJdfDApPjApe3I9bztyZXR1cm59cFtlPj4zXT0rcFsoa1tuPj4yXXwwKSsyND4+M107cT0oa1tuPj4yXXwwKSsxNnwwO3BbaD4+M109Kygoa1txPj4yXXwwKT4+PjApKzQyOTQ5NjcyOTYuMCorKGtbcSs0Pj4yXXwwKS0rcFsoa1tuPj4yXXwwKSsyND4+M107cT0oa1tuPj4yXXwwKSszMnwwO2Q9ajtkPSRSKGtbcT4+Ml18MCxrW3ErND4+Ml18MCxrW2Q+PjJdfDAsa1tkKzQ+PjJdfDApfDA7a1tmPj4yXT1kO2Q9KGtbbj4+Ml18MCkrMTZ8MDtxPShrW24+PjJdfDApKzMyfDA7cT1fUihrW2Q+PjJdfDAsa1tkKzQ+PjJdfDAsa1txPj4yXXwwLGtbcSs0Pj4yXXwwKXwwO2tbaT4+Ml09cTtkbyBpZigrKGtbZj4+Ml18MCk+PStwW2U+PjNdKXtiPWtbbj4+Ml18MDtpZighKCsoa1tpPj4yXXwwKT49K3BbaD4+M10pKXtrW2IrNjA+PjJdPTE7YnJlYWt9cT1iKzQwfDA7Yj1xO2I9JFIoa1tiPj4yXXwwLGtbYis0Pj4yXXwwLDEsMCl8MDtrW3E+PjJdPWI7a1txKzQ+PjJdPUw7cT0oa1tuPj4yXXwwKSs0OHwwO2I9a1tnPj4yXXwwO2lmKDA9PShrW3E+PjJdfDApPzA9PShrW3ErND4+Ml18MCk6MCl7bD1rW2I+PjJdfDA7cT1tO2tbcT4+Ml09bDtrW3ErND4+Ml09KChsfDApPDApPDwzMT4+MzE7cT1rW24+PjJdfDA7bD1xO209JFIoa1tsPj4yXXwwLGtbbCs0Pj4yXXwwLGtbbT4+Ml18MCxrW20rND4+Ml18MCl8MDtrW3E+PjJdPW07a1txKzQ+PjJdPUw7YnJlYWt9ZWxzZXtwW2w+PjNdPStwW2I+PjNdO3E9KGtbbj4+Ml18MCkrOHwwO3BbcT4+M109K3BbcT4+M10rICtwW2w+PjNdO2JyZWFrfX13aGlsZSgwKTttPWo7cT0oa1tuPj4yXXwwKSszMnwwO249cTtuPSRSKGtbbj4+Ml18MCxrW24rND4+Ml18MCxrW20+PjJdfDAsa1ttKzQ+PjJdfDApfDA7a1txPj4yXT1uO2tbcSs0Pj4yXT1MO3I9bztyZXR1cm59ZnVuY3Rpb24gSWQoYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wLGU9MCxmPTA7Zj1yO3I9cisxNnwwO2U9ZisxMnwwO2I9Zis4fDA7Yz1mKzR8MDtkPWY7a1tiPj4yXT1hO2lmKCEoSmQoa1tiPj4yXXwwLDE3NjA1LDcpfDApKWtbYj4+Ml09KGtbYj4+Ml18MCkrNzthPVRmKGtbYj4+Ml18MCl8MDtrW2Q+PjJdPWE7a1tjPj4yXT0wO3doaWxlKDEpe2lmKChrW2M+PjJdfDApPj04KXtiPTk7YnJlYWt9aWYoKEpkKGtbYj4+Ml18MCxrWzk3Nisoa1tjPj4yXTw8Mik+PjJdfDAsa1tkPj4yXXwwKXwwKT09MD8oVWYoaVsoa1s5NzYrKGtbYz4+Ml08PDIpPj4yXXwwKSsoa1tkPj4yXXwwKT4+MF18MCl8MCk9PTA6MCl7Yj03O2JyZWFrfWtbYz4+Ml09KGtbYz4+Ml18MCkrMX1pZigoYnwwKT09Nyl7a1tlPj4yXT0xO2U9a1tlPj4yXXwwO3I9ZjtyZXR1cm4gZXwwfWVsc2UgaWYoKGJ8MCk9PTkpe2tbZT4+Ml09MDtlPWtbZT4+Ml18MDtyPWY7cmV0dXJuIGV8MH1yZXR1cm4gMH1mdW5jdGlvbiBKZChhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaT0wLGo9MDtqPXI7cj1yKzMyfDA7aT1qKzIwfDA7ZD1qKzE2fDA7ZT1qKzEyfDA7Zj1qKzh8MDtnPWorNHwwO2g9ajtrW2Q+PjJdPWE7a1tlPj4yXT1iO2tbZj4+Ml09YztjPWtbZT4+Ml18MDtpZighKGtbZD4+Ml18MCkpe2tbaT4+Ml09KGN8MCkhPTA/LTE6MDtpPWtbaT4+Ml18MDtyPWo7cmV0dXJuIGl8MH1pZighYyl7a1tpPj4yXT0xO2k9a1tpPj4yXXwwO3I9ajtyZXR1cm4gaXwwfWtbZz4+Ml09a1tkPj4yXTtrW2g+PjJdPWtbZT4+Ml07d2hpbGUoMSl7ZT1rW2Y+PjJdfDA7a1tmPj4yXT1lKy0xO2lmKChlfDApPD0wKWJyZWFrO2lmKCEobFtrW2c+PjJdPj4wXXwwKSlicmVhaztpZigobFsxNzYxMysobFtrW2c+PjJdPj4wXXwwKT4+MF18MHwwKSE9KGxbMTc2MTMrKGxba1toPj4yXT4+MF18MCk+PjBdfDB8MCkpYnJlYWs7a1tnPj4yXT0oa1tnPj4yXXwwKSsxO2tbaD4+Ml09KGtbaD4+Ml18MCkrMX1pZigoa1tmPj4yXXwwKTwwKWM9MDtlbHNlIGM9KGxbMTc2MTMrKGxba1tnPj4yXT4+MF18MCk+PjBdfDApLShsWzE3NjEzKyhsW2tbaD4+Ml0+PjBdfDApPj4wXXwwKXwwO2tbaT4+Ml09YztpPWtbaT4+Ml18MDtyPWo7cmV0dXJuIGl8MH1mdW5jdGlvbiBLZChhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTA7ZD1yO3I9cisxNnwwO2I9ZCs0fDA7Yz1kO2tbYz4+Ml09YTtpZigoa1tjPj4yXXwwKT49MCYoa1tjPj4yXXwwKTw4KXtrW2I+PjJdPWtbOTc2KyhrW2M+PjJdPDwyKT4+Ml07YT1rW2I+PjJdfDA7cj1kO3JldHVybiBhfDB9ZWxzZXtrW2I+PjJdPTA7YT1rW2I+PjJdfDA7cj1kO3JldHVybiBhfDB9cmV0dXJuIDB9ZnVuY3Rpb24gTGQoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTAsbD0wO2w9cjtyPXIrMzJ8MDtlPWwrMjB8MDtmPWwrMTZ8MDtnPWwrMTJ8MDtoPWwrOHwwO2o9bCs0fDA7a1tmPj4yXT1hO2tbZz4+Ml09YjtrW2g+PjJdPWM7a1tqPj4yXT1kO2lmKChrW2Y+PjJdfDApPDB8KGtbZj4+Ml18MCk+PTEwKXtqPVZmKDE4MzY1KXwwO2tbZT4+Ml09ajtqPWtbZT4+Ml18MDtyPWw7cmV0dXJuIGp8MH1pZihpWzE3ODY5KyhrW2Y+PjJdfDApPj4wXXwwKWE9V2YoKXwwO2Vsc2UgYT1YZigpfDA7a1tsPj4yXT1hO2c9a1tnPj4yXXwwO2tbZz4+Ml09a1sxMDA4KyhrW2Y+PjJdPDwyKT4+Ml07a1tnKzQ+PjJdPTA7aD1rW2g+PjJdfDA7a1toPj4yXT1rWzEwNDgrKGtbZj4+Ml08PDIpPj4yXTtrW2grND4+Ml09MDtpZihrW2o+PjJdfDApa1sxMDQ4KyhrW2Y+PjJdPDwyKT4+Ml09a1sxMDA4KyhrW2Y+PjJdPDwyKT4+Ml07a1tlPj4yXT0wO2o9a1tlPj4yXXwwO3I9bDtyZXR1cm4ganwwfWZ1bmN0aW9uIE1kKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MCxlPTAsZj0wO2U9cjtyPXIrMTZ8MDtiPWUrMTJ8MDtjPWUrOHwwO2Q9ZSs0fDA7Zj1lO2tbYz4+Ml09YTtrW2Q+PjJdPTA7YT1OZCgpfDA7a1tmPj4yXT1hO2lmKGtbZj4+Ml18MCl7a1tiPj4yXT0wO2Y9a1tiPj4yXXwwO3I9ZTtyZXR1cm4gZnwwfWtbZD4+Ml09a1syNzJdO3doaWxlKDEpe2lmKChrW2Q+PjJdfDApPT0wfChrW2M+PjJdfDApPT0wKWJyZWFrO2lmKCEoclIoa1tjPj4yXXwwLGtbKGtbZD4+Ml18MCkrMTY+PjJdfDApfDApKWJyZWFrO2tbZD4+Ml09a1soa1tkPj4yXXwwKSsxMj4+Ml19a1tiPj4yXT1rW2Q+PjJdO2Y9a1tiPj4yXXwwO3I9ZTtyZXR1cm4gZnwwfWZ1bmN0aW9uIE5kKCl7dmFyIGE9MCxiPTAsYz0wLGQ9MCxlPTA7ZD1yO3I9cisxNnwwO2E9ZCs0fDA7Yj1kO2lmKGtbNTldfDApe2tbYT4+Ml09MDtlPWtbYT4+Ml18MDtyPWQ7cmV0dXJuIGV8MH1rW2I+PjJdPTA7aWYoa1tiPj4yXXwwKXtrW2E+PjJdPWtbYj4+Ml07ZT1rW2E+PjJdfDA7cj1kO3JldHVybiBlfDB9a1s2MV09MTtpZighKGtbNjJdfDApKXtlPWNnKCl8MDtrW2I+PjJdPWV9aWYoKChrW2I+PjJdfDApPT0wPyhrWzYyXT0xLChrWzY1XXwwKT09MCk6MCk/KGtbNjVdPTgsISgoa1szXXwwKT09MHwoa1s2NV18MCkhPTApKTowKWtbYj4+Ml09NztpZighKGtbYj4+Ml18MCkpa1s2NF09KGtbNjRdfDApKzE7aWYoa1tiPj4yXXwwKXtrW2E+PjJdPWtbYj4+Ml07ZT1rW2E+PjJdfDA7cj1kO3JldHVybiBlfDB9aWYoKGtbNTldfDApPT0wJihrWzYwXXwwKT09MCl7a1s2MF09MTtjPTEwOTI7ZT1jKzkyfDA7ZG97a1tjPj4yXT0wO2M9Yys0fDB9d2hpbGUoKGN8MCk8KGV8MCkpO2RnKCk7aWYoIShrWzYzXXwwKSl7ZT1lZygpfDA7a1tiPj4yXT1lfWlmKCEoa1tiPj4yXXwwKSl7a1s2M109MTtlPWZnKCl8MDtrW2I+PjJdPWV9aWYoIShrW2I+PjJdfDApKXtnZyhrWzUzXXwwLGtbNTRdfDAsa1s1NV18MCk7a1s1OV09MX1rWzYwXT0wfWtbNjRdPShrWzY0XXwwKSstMTtpZigoa1s2NF18MCk8PTApa1s2NV09MDtrW2E+PjJdPWtbYj4+Ml07ZT1rW2E+PjJdfDA7cj1kO3JldHVybiBlfDB9ZnVuY3Rpb24gT2QoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MDtnPXI7cj1yKzE2fDA7ZD1nKzEyfDA7ZT1nKzh8MDtmPWcrNHwwO2M9ZztrW2U+PjJdPWE7a1tmPj4yXT1iO2E9TmQoKXwwO2tbYz4+Ml09YTtpZihrW2M+PjJdfDApe2tbZD4+Ml09a1tjPj4yXTtmPWtbZD4+Ml18MDtyPWc7cmV0dXJuIGZ8MH1oZyhrW2U+PjJdfDApO2I9a1syNzJdfDA7aWYoKGtbZj4+Ml18MCkhPTB8KGtbMjcyXXwwKT09MCl7a1soa1tlPj4yXXwwKSsxMj4+Ml09YjtrWzI3Ml09a1tlPj4yXX1lbHNle2tbKGtbZT4+Ml18MCkrMTI+PjJdPWtbYisxMj4+Ml07a1soa1syNzJdfDApKzEyPj4yXT1rW2U+PjJdfWtbZD4+Ml09MDtmPWtbZD4+Ml18MDtyPWc7cmV0dXJuIGZ8MH1mdW5jdGlvbiBQZChhKXthPWF8MDt2YXIgYj0wO2I9cjtyPXIrMTZ8MDtrW2I+PjJdPWE7cj1iO3JldHVybiAwfWZ1bmN0aW9uIFFkKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wLGk9MCxqPTA7aD1yO3I9cis0OHwwO2Q9aCszMnwwO2U9aCsyNHwwO2c9aCsxNnwwO2Y9aCs4fDA7Yz1oO2k9aCs0MHwwO2o9ZTtrW2o+PjJdPWE7a1tqKzQ+PjJdPWI7Yj1OZCgpfDA7a1tpPj4yXT1iO2lmKGtbaT4+Ml18MCl7aT1kO2tbaT4+Ml09LTE7a1tpKzQ+PjJdPS0xO2k9ZDtqPWk7aj1rW2o+PjJdfDA7aT1pKzR8MDtpPWtbaT4+Ml18MDtMPWk7cj1oO3JldHVybiBqfDB9Yj0yOTY7aT1rW2IrND4+Ml18MDtqPWc7a1tqPj4yXT1rW2I+PjJdO2tbais0Pj4yXT1pO2lmKChrW2UrND4+Ml18MCk8MCl7aj1rW2crND4+Ml18MDtpPWQ7a1tpPj4yXT1rW2c+PjJdO2tbaSs0Pj4yXT1qO2k9ZDtqPWk7aj1rW2o+PjJdfDA7aT1pKzR8MDtpPWtbaT4+Ml18MDtMPWk7cj1oO3JldHVybiBqfDB9Yj1lO2o9a1tiKzQ+PjJdfDA7aT0yOTY7a1tpPj4yXT1rW2I+PjJdO2tbaSs0Pj4yXT1qO2k9aWcoMCl8MDtqPWM7a1tqPj4yXT1pO2tbais0Pj4yXT1MO2o9ZTtpPWtbais0Pj4yXXwwO2lmKChpfDApPjB8KGl8MCk9PTAmKGtbaj4+Ml18MCk+Pj4wPjApe2o9ZTtiPWtbais0Pj4yXXwwO2E9YztpPWtbYSs0Pj4yXXwwO2E9KGJ8MCk8KGl8MCl8KChifDApPT0oaXwwKT8oa1tqPj4yXXwwKT4+PjA8PShrW2E+PjJdfDApPj4+MDowKX1lbHNlIGE9MDtrWzc5XT1hJjE7aj1SZCgpfDA7aT1lO2k9X1IoanwwLEx8MCxrW2k+PjJdfDAsa1tpKzQ+PjJdfDApfDA7aj1mO2tbaj4+Ml09aTtrW2orND4+Ml09TDtqPWY7aT1rW2orND4+Ml18MDtpZigoaXwwKT4wfChpfDApPT0wJihrW2o+PjJdfDApPj4+MD4wKVBkKGtbZj4+Ml0mMjE0NzQ4MzY0Nyl8MDtqPWtbZys0Pj4yXXwwO2k9ZDtrW2k+PjJdPWtbZz4+Ml07a1tpKzQ+PjJdPWo7aT1kO2o9aTtqPWtbaj4+Ml18MDtpPWkrNHwwO2k9a1tpPj4yXXwwO0w9aTtyPWg7cmV0dXJuIGp8MH1mdW5jdGlvbiBSZCgpe3ZhciBhPTAsYj0wO2I9cjtyPXIrMTZ8MDthPWIrOHwwO0xkKDAsYSxiLDApfDA7TD1rW2ErND4+Ml18MDtyPWI7cmV0dXJuIGtbYT4+Ml18MH1mdW5jdGlvbiBTZChhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTA7ZD1yO3I9cisxNnwwO2M9ZCs0fDA7Yj1kO2tbYj4+Ml09YTtpZihOZCgpfDApe2tbYz4+Ml09MDtjPWtbYz4+Ml18MDtyPWQ7cmV0dXJuIGN8MH1pZigoa1tiPj4yXXwwKTw9MCliPTA7ZWxzZXtiPWtbYj4+Ml18MDtiPWpnKGIsKChifDApPDApPDwzMT4+MzEpfDB9a1tjPj4yXT1iO2M9a1tjPj4yXXwwO3I9ZDtyZXR1cm4gY3wwfWZ1bmN0aW9uIFRkKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MDtlPXI7cj1yKzE2fDA7Yz1lKzh8MDtkPWU7Zj1kO2tbZj4+Ml09YTtrW2YrND4+Ml09YjtpZihOZCgpfDApe2tbYz4+Ml09MDtmPWtbYz4+Ml18MDtyPWU7cmV0dXJuIGZ8MH1lbHNle2Y9ZDtmPWpnKGtbZj4+Ml18MCxrW2YrND4+Ml18MCl8MDtrW2M+PjJdPWY7Zj1rW2M+PjJdfDA7cj1lO3JldHVybiBmfDB9cmV0dXJuIDB9ZnVuY3Rpb24gVWQoYSl7YT1hfDA7dmFyIGI9MCxjPTA7Yz1yO3I9cisxNnwwO2I9YztrW2I+PjJdPWE7aWYoIShrW2I+PjJdfDApKXtyPWM7cmV0dXJufWlmKGtbMl18MCl7bGcoMCxrZyhrW2I+PjJdfDApfDApO2xnKDksMSk7X2Jba1s1Mj4+Ml0mMjU1XShrW2I+PjJdfDApO3I9YztyZXR1cm59ZWxzZXtfYltrWzUyPj4yXSYyNTVdKGtbYj4+Ml18MCk7cj1jO3JldHVybn19ZnVuY3Rpb24gVmQoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wO2Y9cjtyPXIrMTZ8MDtjPWYrOHwwO2Q9Zis0fDA7ZT1mO2tbZD4+Ml09YTtrW2U+PjJdPWI7aWYoTmQoKXwwKXtrW2M+PjJdPTA7YT1rW2M+PjJdfDA7cj1mO3JldHVybiBhfDB9aWYoKGtbZT4+Ml18MCk8MClrW2U+PjJdPTA7YT1rW2U+PjJdfDA7YT1tZyhrW2Q+PjJdfDAsYSwoKGF8MCk8MCk8PDMxPj4zMSl8MDtrW2M+PjJdPWE7YT1rW2M+PjJdfDA7cj1mO3JldHVybiBhfDB9ZnVuY3Rpb24gV2QoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTA7Zz1yO3I9cisxNnwwO2Q9ZysxMnwwO2U9Zys4fDA7Zj1nO2tbZT4+Ml09YTthPWY7a1thPj4yXT1iO2tbYSs0Pj4yXT1jO2lmKE5kKCl8MCl7a1tkPj4yXT0wO2E9a1tkPj4yXXwwO3I9ZztyZXR1cm4gYXwwfWVsc2V7YT1mO2E9bWcoa1tlPj4yXXwwLGtbYT4+Ml18MCxrW2ErND4+Ml18MCl8MDtrW2Q+PjJdPWE7YT1rW2Q+PjJdfDA7cj1nO3JldHVybiBhfDB9cmV0dXJuIDB9ZnVuY3Rpb24gWGQoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTA7aD1yO3I9cisxMjh8MDtjPWgrNDB8MDtkPWgrMzZ8MDtlPWgrMzJ8MDtnPWgrMjh8MDtmPWg7a1tkPj4yXT1hO2tbZT4+Ml09YjtpZihOZCgpfDApe2tbYz4+Ml09MDthPWtbYz4+Ml18MDtyPWg7cmV0dXJuIGF8MH1lbHNle25nKGYsMCxoKzQ0fDAsNzAsMWU5KTtvZyhmLGtbZD4+Ml18MCxrW2U+PjJdfDApO2E9cGcoZil8MDtrW2c+PjJdPWE7a1tjPj4yXT1rW2c+PjJdO2E9a1tjPj4yXXwwO3I9aDtyZXR1cm4gYXwwfXJldHVybiAwfWZ1bmN0aW9uIFlkKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTA7Zz1yO3I9ciszMnwwO2M9ZysyOHwwO2Q9ZysyNHwwO2U9Zys4fDA7Zj1nO2tbZD4+Ml09YTtpZihOZCgpfDApe2tbYz4+Ml09MDthPWtbYz4+Ml18MDtyPWc7cmV0dXJuIGF8MH1lbHNle2tbZT4+Ml09YjthPVhkKGtbZD4+Ml18MCxlKXwwO2tbZj4+Ml09YTtrW2M+PjJdPWtbZj4+Ml07YT1rW2M+PjJdfDA7cj1nO3JldHVybiBhfDB9cmV0dXJuIDB9ZnVuY3Rpb24gWmQoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxpPTAsaj0wLGw9MDtqPXI7cj1yKzQ4fDA7ZT1qKzQ0fDA7Zj1qKzQwfDA7bD1qKzM2fDA7Zz1qKzMyfDA7aD1qKzI4fDA7aT1qO2tbZj4+Ml09YTtrW2w+PjJdPWI7a1tnPj4yXT1jO2tbaD4+Ml09ZDtkPWtbbD4+Ml18MDtpZigoa1tmPj4yXXwwKTw9MCl7a1tlPj4yXT1kO2w9a1tlPj4yXXwwO3I9ajtyZXR1cm4gbHwwfWVsc2V7bmcoaSwwLGQsa1tmPj4yXXwwLDApO29nKGksa1tnPj4yXXwwLGtbaD4+Ml18MCk7bD1wZyhpKXwwO2tbZT4+Ml09bDtsPWtbZT4+Ml18MDtyPWo7cmV0dXJuIGx8MH1yZXR1cm4gMH1mdW5jdGlvbiBfZChhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGk9MCxqPTA7Zj1yO3I9ciszMnwwO2o9ZisyOHwwO2k9ZisyNHwwO2g9ZisyMHwwO2U9ZisxNnwwO2c9ZjtrW2o+PjJdPWE7a1tpPj4yXT1iO2tbaD4+Ml09YztrW2c+PjJdPWQ7Yz1aZChrW2o+PjJdfDAsa1tpPj4yXXwwLGtbaD4+Ml18MCxnKXwwO2tbZT4+Ml09YztyPWY7cmV0dXJuIGtbZT4+Ml18MH1mdW5jdGlvbiAkZChhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MDtnPXI7cj1yKzMyfDA7ZD1nKzIwfDA7ZT1nKzE2fDA7Zj1nO2tbZD4+Ml09YTtrW2U+PjJdPWI7aWYoIShrWzY2XXwwKSl7cj1nO3JldHVybn1rW2Y+PjJdPWM7cWcoa1tkPj4yXXwwLGtbZT4+Ml18MCxmKTtyPWc7cmV0dXJufWZ1bmN0aW9uIGFlKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MDtqPXI7cj1yKzI4OHwwO2M9aisxMnwwO2Q9ais4fDA7Zz1qKzI3MnwwO2g9ais0fDA7ZT1qO2Y9aisxNnwwO2tbYz4+Ml09YTtrW2Q+PjJdPWI7a1toPj4yXT1rW2Q+PjJdO2lmKE5kKCl8MCl7cj1qO3JldHVybn1pZigoa1tjPj4yXXwwKTw9MHwoa1tkPj4yXXwwKT09MCl7aVsxNzg3OV09MDtyPWo7cmV0dXJufWlmKCEoaVsxNzg3OV18MCkpe2lbMTc4ODFdPTA7aVsxNzg4MF09MDtyZyhNZCgwKXwwLDI1NixmKXwwO2tbZT4+Ml09MDt3aGlsZSgxKXtpZigoa1tlPj4yXXwwKT49MjU2KWJyZWFrO2lbMTc4ODIrKGtbZT4+Ml18MCk+PjBdPWtbZT4+Ml07a1tlPj4yXT0oa1tlPj4yXXwwKSsxfWtbZT4+Ml09MDt3aGlsZSgxKXtpZigoa1tlPj4yXXwwKT49MjU2KWJyZWFrO2lbMTc4ODFdPShsWzE3ODgxXXwwKSsoKGxbMTc4ODIrKGtbZT4+Ml18MCk+PjBdfDApKyhpW2YrKGtbZT4+Ml18MCk+PjBdfDApKTtpW2c+PjBdPWlbMTc4ODIrKGxbMTc4ODFdfDApPj4wXXwwO2lbMTc4ODIrKGxbMTc4ODFdfDApPj4wXT1pWzE3ODgyKyhrW2U+PjJdfDApPj4wXXwwO2lbMTc4ODIrKGtbZT4+Ml18MCk+PjBdPWlbZz4+MF18MDtrW2U+PjJdPShrW2U+PjJdfDApKzF9aVsxNzg3OV09MX1kb3tpWzE3ODgwXT0oaVsxNzg4MF18MCkrMTw8MjQ+PjI0O2lbZz4+MF09aVsxNzg4MisobFsxNzg4MF18MCk+PjBdfDA7aVsxNzg4MV09KGxbMTc4ODFdfDApKyhsW2c+PjBdfDApO2lbMTc4ODIrKGxbMTc4ODBdfDApPj4wXT1pWzE3ODgyKyhsWzE3ODgxXXwwKT4+MF18MDtpWzE3ODgyKyhsWzE3ODgxXXwwKT4+MF09aVtnPj4wXXwwO2lbZz4+MF09KGxbZz4+MF18MCkrKGxbMTc4ODIrKGxbMTc4ODBdfDApPj4wXXwwKTtmPWlbMTc4ODIrKGxbZz4+MF18MCk+PjBdfDA7Yj1rW2g+PjJdfDA7a1toPj4yXT1iKzE7aVtiPj4wXT1mO2I9KGtbYz4+Ml18MCkrLTF8MDtrW2M+PjJdPWJ9d2hpbGUoKGJ8MCkhPTApO3I9ajtyZXR1cm59ZnVuY3Rpb24gYmUoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wO2Y9cjtyPXIrMTZ8MDtjPWYrOHwwO2Q9Zis0fDA7ZT1mO2tbZD4+Ml09YTtrW2U+PjJdPWI7YT1rW2U+PjJdfDA7ZG8gaWYoa1tkPj4yXXwwKWlmKCFhKXtrW2M+PjJdPTE7YnJlYWt9ZWxzZXtlPXNnKGtbZD4+Ml18MCxrW2U+PjJdfDApfDA7a1tjPj4yXT1lO2JyZWFrfWVsc2Uga1tjPj4yXT0oYXwwKSE9MD8tMTowO3doaWxlKDApO3I9ZjtyZXR1cm4ga1tjPj4yXXwwfWZ1bmN0aW9uIGNlKCl7dmFyIGE9MCxiPTA7Yj1yO3I9cisxNnwwO2E9YjtrW2E+PjJdPTA7d2hpbGUoMSl7aWYoKGtbYT4+Ml18MCk+Pj4wPj00KWJyZWFrO09kKDExODQrKChrW2E+PjJdfDApKjg4fDApfDAsKGtbYT4+Ml18MCk9PTAmMSl8MDtrW2E+PjJdPShrW2E+PjJdfDApKzF9cj1iO3JldHVybiAwfWZ1bmN0aW9uIGRlKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wLGk9MCxqPTAsbT0wLG49MCxvPTAscD0wLHE9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MCxFPTA7RT1yO3I9cisxMTJ8MDtxPUUrMTA4fDA7Yz1FKzEwNHwwO0M9RSsxMDB8MDtkPUUrOTZ8MDtCPUUrOTJ8MDtvPUUrODh8MDt6PUUrODR8MDt4PUUrODB8MDtnPUUrNzZ8MDtqPUUrNzJ8MDtzPUUrNjh8MDtmPUUrNjR8MDtuPUUrNjB8MDtoPUUrNTZ8MDtwPUUrNTJ8MDt2PUUrMTZ8MDt5PUUrNDh8MDtlPUUrNDR8MDtpPUUrNDB8MDt1PUUrOHwwO3Q9RTttPUUrMzZ8MDtBPUUrMzJ8MDt3PUUrMjh8MDtEPUUrMjR8MDtrW3E+PjJdPWE7a1tjPj4yXT1iO2tbQj4+Ml09MDtrW28+PjJdPTA7d2coa1soa1txPj4yXXwwKSsyND4+Ml18MCk7a1tDPj4yXT1rWyhrW3E+PjJdfDApKzI4Pj4yXTtpZih4ZyhrW0M+PjJdfDApfDApe0Q9a1tDPj4yXXwwO3I9RTtyZXR1cm4gRHwwfWE9WmYoa1soa1txPj4yXXwwKSsyND4+Ml18MCl8MDtrW3o+PjJdPWE7YT1aZihrWyhrW3E+PjJdfDApKzQ+PjJdfDApfDA7a1t4Pj4yXT1hO2tbaj4+Ml09LTE7a1tzPj4yXT0wO2lmKChrW2tbcT4+Ml0+PjJdfDApIT0wPyhsWyhrWyhrWyhrW3E+PjJdfDApKzI0Pj4yXXwwKSs0Pj4yXXwwKSsyMD4+MF18MHwwKT09MjowKWtbQz4+Ml09NTtlbHNlIGtbQz4+Ml09MDtpZigoa1tDPj4yXXwwKT09MD8wPT0oeWcoa1soa1txPj4yXXwwKSsyND4+Ml18MCl8MCk6MCl7YT16ZyhrWyhrW3E+PjJdfDApKzI0Pj4yXXwwLDApfDA7a1tDPj4yXT1hO2tbcz4+Ml09MX1pZigoKGtbQz4+Ml18MCk9PTA/KGtbKGtbcT4+Ml18MCkrMTI+PjJdfDApPT0wOjApPyhBZyhrW3E+PjJdfDApfDApPT03OjApa1tDPj4yXT03O2lmKCgwPT0oa1tDPj4yXXwwKT8oa1soa1txPj4yXXwwKSsxMj4+Ml18MCk9PTA6MCk/KGE9emcoa1soa1txPj4yXXwwKSs0Pj4yXXwwLDIpfDAsa1tDPj4yXT1hLDA9PShhfDApKTowKXtrWyhrW3E+PjJdfDApKzEyPj4yXT0xO0JnKGtbKGtbcT4+Ml18MCkrND4+Ml18MCwxLChrW3E+PjJdfDApKzh8MCl9YT1DZyhrWyhrW3E+PjJdfDApKzI0Pj4yXXwwKXwwO2tbQj4+Ml09YTthPUNnKGtbKGtbcT4+Ml18MCkrND4+Ml18MCl8MDtrW28+PjJdPWE7YT1EZyhaZihrWyhrW3E+PjJdfDApKzQ+PjJdfDApfDApfDA7a1tkPj4yXT1hO2lmKDA9PShrW0M+PjJdfDApJihrW2Q+PjJdfDApPT01PyhrW0I+PjJdfDApIT0oa1tvPj4yXXwwKTowKWtbQz4+Ml09ODthPUVnKGtbKGtbcT4+Ml18MCkrMjQ+PjJdfDApfDA7a1tqPj4yXT1hO2tbZz4+Ml09MDt3aGlsZSgxKXtpZigoa1tjPj4yXXwwKT49MD8oa1tnPj4yXXwwKT49KGtbYz4+Ml18MCk6MClicmVhaztpZigoa1soa1txPj4yXXwwKSsxNj4+Ml18MCk+Pj4wPihrW2o+PjJdfDApPj4+MClicmVhaztpZighKChrW0M+PjJdfDApIT0wXjEpKWJyZWFrO2tbZj4+Ml09a1soa1txPj4yXXwwKSsxNj4+Ml07aWYoKGtbZj4+Ml18MCkhPSgoKChrWzM4NF18MCk+Pj4wKS8oKGtbKGtbKGtbKGtbcT4+Ml18MCkrMjQ+PjJdfDApKzQ+PjJdfDApKzMyPj4yXXwwKT4+PjApfDApKzF8MCk/KGE9Rmcoa1t6Pj4yXXwwLGtbZj4+Ml18MCxuLDIpfDAsa1tDPj4yXT1hLChrW0M+PjJdfDApPT0wKTowKXtiPWtbcT4+Ml18MDthPWtbZj4+Ml18MDthPUhnKGIsYSxHZyhrW24+PjJdfDApfDAsMCl8MDtrW0M+PjJdPWE7SWcoa1tuPj4yXXwwKX1hPShrW3E+PjJdfDApKzE2fDA7a1thPj4yXT0oa1thPj4yXXwwKSsxO2tbZz4+Ml09KGtbZz4+Ml18MCkrMX1kbyBpZighKGtbQz4+Ml18MCkpe2tbKGtbcT4+Ml18MCkrMzY+PjJdPWtbaj4+Ml07a1soa1txPj4yXXwwKSszMj4+Ml09KGtbaj4+Ml18MCkrMS0oa1soa1txPj4yXXwwKSsxNj4+Ml18MCk7aWYoKGtbKGtbcT4+Ml18MCkrMTY+PjJdfDApPj4+MD4oa1tqPj4yXXwwKT4+PjApe2tbQz4+Ml09MTAxO2JyZWFrfWlmKCEoa1soa1txPj4yXXwwKSs0MD4+Ml18MCkpSmcoa1txPj4yXXwwKX13aGlsZSgwKTtpZigoa1tDPj4yXXwwKT09MTAxKXtpZighKGtbaj4+Ml18MCkpe249S2coa1soa1txPj4yXXwwKSs0Pj4yXXwwKXwwO2tbQz4+Ml09bjtrW2o+PjJdPTF9aWYoKGtbQz4+Ml18MCk9PTB8KGtbQz4+Ml18MCk9PTEwMSl7bj1MZyhrWyhrW3E+PjJdfDApKzQ+PjJdfDAsMSwoa1soa1txPj4yXXwwKSs4Pj4yXXwwKSsxfDApfDA7a1tDPj4yXT1ufWlmKCEoa1tDPj4yXXwwKSl7aWYoa1trW3E+PjJdPj4yXXwwKU1nKGtba1txPj4yXT4+Ml18MCk7aWYoKGtbZD4+Ml18MCk9PTUpe249Tmcoa1soa1txPj4yXXwwKSs0Pj4yXXwwLDIpfDA7a1tDPj4yXT1ufX1pZighKGtbQz4+Ml18MCkpe2lmKChrW0I+PjJdfDApPChrW28+PjJdfDApKXtrW3A+PjJdPShrW28+PjJdfDApLyhrW0I+PjJdfDApfDA7a1toPj4yXT0oKGtbaj4+Ml18MCkrKGtbcD4+Ml18MCktMXwwKS8oa1twPj4yXXwwKXwwO2lmKChrW2g+PjJdfDApPT0oKCgoa1szODRdfDApPj4+MCkvKChrWyhrWyhrWyhrW3E+PjJdfDApKzQ+PjJdfDApKzQ+PjJdfDApKzMyPj4yXXwwKT4+PjApfDApKzF8MCkpa1toPj4yXT0oa1toPj4yXXwwKSstMX1lbHNle3A9aGEoa1tqPj4yXXwwLChrW0I+PjJdfDApLyhrW28+PjJdfDApfDApfDA7a1toPj4yXT1wfWlmKChrW0I+PjJdfDApPChrW28+PjJdfDApKXtwPWtbQj4+Ml18MDtuPWtbaj4+Ml18MDtuPWtTKHB8MCwoKHB8MCk8MCk8PDMxPj4zMXwwLG58MCwoKG58MCk8MCk8PDMxPj4zMXwwKXwwO3A9djtrW3A+PjJdPW47a1twKzQ+PjJdPUw7cD1PZyhrW3g+PjJdfDApfDA7a1t5Pj4yXT1wO1BnKGtbeD4+Ml18MCxpKTtrW2U+PjJdPWtbaD4+Ml07d2hpbGUoMSl7aWYoa1tDPj4yXXwwKWJyZWFrO2lmKChrW2U+PjJdfDApPj4+MD4oa1tpPj4yXXwwKT4+PjApYnJlYWs7ZG8gaWYoKGtbZT4+Ml18MCkhPSgoKChrWzM4NF18MCk+Pj4wKS8oKGtbKGtbKGtbKGtbcT4+Ml18MCkrND4+Ml18MCkrND4+Ml18MCkrMzI+PjJdfDApPj4+MCl8MCkrMXwwKSl7cD1GZyhrW3g+PjJdfDAsa1tlPj4yXXwwLG0sMCl8MDtrW0M+PjJdPXA7aWYoa1tDPj4yXXwwKWJyZWFrO3A9UWcoa1ttPj4yXXwwKXwwO2tbQz4+Ml09cDtJZyhrW20+PjJdfDApfXdoaWxlKDApO2tbZT4+Ml09KGtbZT4+Ml18MCkrMX1pZighKGtbQz4+Ml18MCkpe3A9Umcoa1t4Pj4yXXwwLDAsMSl8MDtrW0M+PjJdPXB9bj0oa1szODRdfDApKyhrW28+PjJdfDApfDA7YT0oKG58MCk8MCk8PDMxPj4zMTtwPXY7bT1rW3ArND4+Ml18MDtpZigoYXwwKTwobXwwKXwoKGF8MCk9PShtfDApP24+Pj4wPChrW3A+PjJdfDApPj4+MDowKSl7ZD0oa1szODRdfDApKyhrW28+PjJdfDApfDA7Yz1kO2Q9KChkfDApPDApPDwzMT4+MzF9ZWxzZXtkPXY7Yz1rW2Q+PjJdfDA7ZD1rW2QrND4+Ml18MH1vPXQ7a1tvPj4yXT1jO2tbbys0Pj4yXT1kO289KGtbMzg0XXwwKSsoa1tCPj4yXXwwKXwwO3A9dTtrW3A+PjJdPW87a1twKzQ+PjJdPSgob3wwKTwwKTw8MzE+PjMxO3doaWxlKDEpe2lmKGtbQz4+Ml18MClicmVhaztvPXU7bT1rW28rND4+Ml18MDtwPXQ7bj1rW3ArND4+Ml18MDtpZighKChtfDApPChufDApfCgobXwwKT09KG58MCk/KGtbbz4+Ml18MCk+Pj4wPChrW3A+PjJdfDApPj4+MDowKSkpYnJlYWs7a1tBPj4yXT0wO289dTtwPWtbQj4+Ml18MDtwPWlTKGtbbz4+Ml18MCxrW28rND4+Ml18MCxwfDAsKChwfDApPDApPDwzMT4+MzF8MCl8MDtwPSRSKHB8MCxMfDAsMSwwKXwwO2tbdz4+Ml09cDtwPUZnKGtbej4+Ml18MCxrW3c+PjJdfDAsQSwwKXwwO2tbQz4+Ml09cDtpZighKGtbQz4+Ml18MCkpe3A9R2coa1tBPj4yXXwwKXwwO2tbRD4+Ml09cDtwPXU7cD1TZyhrW3k+PjJdfDAsa1tEPj4yXXwwLGtbQj4+Ml18MCxrW3A+PjJdfDAsa1twKzQ+PjJdfDApfDA7a1tDPj4yXT1wfUlnKGtbQT4+Ml18MCk7bz1rW0I+PjJdfDA7cD11O289JFIoa1twPj4yXXwwLGtbcCs0Pj4yXXwwLG98MCwoKG98MCk8MCk8PDMxPj4zMXwwKXwwO3A9dTtrW3A+PjJdPW87a1twKzQ+PjJdPUx9aWYoIShrW0M+PjJdfDApKXtEPXY7RD1UZyhrW3k+PjJdfDAsa1tEPj4yXXwwLGtbRCs0Pj4yXXwwKXwwO2tbQz4+Ml09RH1pZighKGtbQz4+Ml18MCkpe0Q9VWcoa1t4Pj4yXXwwLDApfDA7a1tDPj4yXT1EfX1lbHNle1ZnKGtbeD4+Ml18MCxrW2g+PjJdfDApO0Q9Umcoa1t4Pj4yXXwwLDAsMCl8MDtrW0M+PjJdPUR9aWYoIShrW0M+PjJdfDApKXtEPVdnKGtbKGtbcT4+Ml18MCkrND4+Ml18MCwwKXwwO2tbQz4+Ml09RDtrW0M+PjJdPTA9PShEfDApPzEwMTpEfX19aWYoa1tzPj4yXXwwKXtYZyhrWyhrW3E+PjJdfDApKzI0Pj4yXXwwLDApfDA7V2coa1soa1txPj4yXXwwKSsyND4+Ml18MCwwKXwwfWlmKChrW0M+PjJdfDApPT0zMDgyKWtbQz4+Ml09NztrWyhrW3E+PjJdfDApKzI4Pj4yXT1rW0M+PjJdO0Q9a1tDPj4yXXwwO3I9RTtyZXR1cm4gRHwwfWZ1bmN0aW9uIGVlKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MCxlPTAsZj0wLGc9MDtnPXI7cj1yKzMyfDA7Yz1nKzE2fDA7ZD1nKzEyfDA7Yj1nKzh8MDtlPWcrNHwwO2Y9ZztrW2Q+PjJdPWE7aWYoIShrW2Q+PjJdfDApKXtrW2M+PjJdPTA7Zj1rW2M+PjJdfDA7cj1nO3JldHVybiBmfDB9a1tlPj4yXT1rWyhrW2Q+PjJdfDApKzIwPj4yXTt3ZyhrWyhrW2Q+PjJdfDApKzI0Pj4yXXwwKTtpZihrW2tbZD4+Ml0+PjJdfDApe2E9KGtbKGtbZD4+Ml18MCkrMjQ+PjJdfDApKzE2fDA7a1thPj4yXT0oa1thPj4yXXwwKSstMX1pZihrWyhrW2Q+PjJdfDApKzQwPj4yXXwwKXthPVlnKFpmKGtbKGtbZD4+Ml18MCkrMjQ+PjJdfDApfDApfDA7a1tiPj4yXT1hO3doaWxlKDEpe2lmKChrW2tbYj4+Ml0+PjJdfDApPT0oa1tkPj4yXXwwKSlicmVhaztrW2I+PjJdPShrW2tbYj4+Ml0+PjJdfDApKzQ0fWtba1tiPj4yXT4+Ml09a1soa1tkPj4yXXwwKSs0ND4+Ml19Wmcoa1soa1tkPj4yXXwwKSs0Pj4yXXwwLDAsMCl8MDtpZigoa1soa1tkPj4yXXwwKSsyOD4+Ml18MCk9PTEwMSlhPTA7ZWxzZSBhPWtbKGtbZD4+Ml18MCkrMjg+PjJdfDA7a1tmPj4yXT1hO2lmKGtba1tkPj4yXT4+Ml18MCl7dmcoa1trW2Q+PjJdPj4yXXwwLGtbZj4+Ml18MCk7X2coa1trW2Q+PjJdPj4yXXwwKX1pZihrW2tbZD4+Ml0+PjJdfDApVWQoa1tkPj4yXXwwKTtfZyhrW2U+PjJdfDApO2tbYz4+Ml09a1tmPj4yXTtmPWtbYz4+Ml18MDtyPWc7cmV0dXJuIGZ8MH1mdW5jdGlvbiBmZShhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTAsZT0wLGY9MCxnPTA7Zz1yO3I9ciszMnwwO2I9ZysxNnwwO2M9ZysxMnwwO2U9Zys4fDA7Zj1nKzR8MDtkPWc7a1tjPj4yXT1hO2lmKCEoa1tjPj4yXXwwKSlrW2U+PjJdPTA7ZWxzZXtrW2Y+PjJdPWtbYz4+Ml07a1tkPj4yXT1rW2tbZj4+Ml0+PjJdO2lmKCRnKGtbZj4+Ml18MCl8MCl7Zj1WZig3NTIyMyl8MDtrW2I+PjJdPWY7Zj1rW2I+PjJdfDA7cj1nO3JldHVybiBmfDB9YT0oa1tmPj4yXXwwKSsxMjh8MDtjPWtbYSs0Pj4yXXwwO2lmKChjfDApPjB8KGN8MCk9PTAmKGtbYT4+Ml18MCk+Pj4wPjApYWgoa1tkPj4yXXwwLGtbZj4+Ml18MCk7Zj1iaChrW2Y+PjJdfDApfDA7a1tlPj4yXT1mO2Y9Y2goa1tkPj4yXXwwLGtbZT4+Ml18MCl8MDtrW2U+PjJdPWY7X2coa1tkPj4yXXwwKX1rW2I+PjJdPWtbZT4+Ml07Zj1rW2I+PjJdfDA7cj1nO3JldHVybiBmfDB9ZnVuY3Rpb24gZ2UoYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wLGU9MCxmPTA7Zj1yO3I9cisxNnwwO2I9ZisxMnwwO2Q9Zis4fDA7ZT1mKzR8MDtjPWY7a1tiPj4yXT1hO2lmKCEoa1tiPj4yXXwwKSl7a1tkPj4yXT0wO2U9a1tkPj4yXXwwO3I9ZjtyZXR1cm4gZXwwfWtbZT4+Ml09a1tiPj4yXTtrW2M+PjJdPWtba1tlPj4yXT4+Ml07YT0oa1tlPj4yXXwwKSsxMjh8MDtiPWtbYSs0Pj4yXXwwO2lmKChifDApPjB8KGJ8MCk9PTAmKGtbYT4+Ml18MCk+Pj4wPjApYWgoa1tjPj4yXXwwLGtbZT4+Ml18MCk7YT1kaChrW2U+PjJdfDApfDA7a1tkPj4yXT1hO2VoKGtbZT4+Ml18MCk7ZT1jaChrW2M+PjJdfDAsa1tkPj4yXXwwKXwwO2tbZD4+Ml09ZTtlPWtbZD4+Ml18MDtyPWY7cmV0dXJuIGV8MH1mdW5jdGlvbiBoZShhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTAsZT0wLGY9MDtlPXI7cj1yKzE2fDA7Zj1lKzEyfDA7Yj1lKzh8MDtkPWUrNHwwO2M9ZTtrW2Y+PjJdPWE7a1tkPj4yXT0wO2tbYz4+Ml09a1tmPj4yXTtrW2I+PjJdPTA7d2hpbGUoMSl7aWYoKGtbYj4+Ml18MCk+PShqWyhrW2M+PjJdfDApKzE2Pj4xXXwwKSlicmVhaztmaCgoa1soa1tjPj4yXXwwKSsxMTY+PjJdfDApKygoa1tiPj4yXXwwKSo0MHwwKXwwKTtqWyhrWyhrW2M+PjJdfDApKzExNj4+Ml18MCkrKChrW2I+PjJdfDApKjQwfDApKzg+PjFdPTE7a1tiPj4yXT0oa1tiPj4yXXwwKSsxfWlmKCEoKG1bKGtbYz4+Ml18MCkrMTQ0Pj4xXXwwKT4+PjkmMSkpe2Y9a1tkPj4yXXwwO3I9ZTtyZXR1cm4gZnwwfWlmKCEoa1soa1tjPj4yXXwwKSsxOTY+PjJdfDApKXtmPWtbZD4+Ml18MDtyPWU7cmV0dXJuIGZ8MH1mPShrW2M+PjJdfDApKzE0NHwwO2pbZj4+MV09altmPj4xXSYtMnwxO2Y9a1tkPj4yXXwwO3I9ZTtyZXR1cm4gZnwwfWZ1bmN0aW9uIGllKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MCxlPTA7ZT1yO3I9cisxNnwwO2Q9ZSs4fDA7Yj1lKzR8MDtjPWU7a1tiPj4yXT1hO2tbYz4+Ml09a1tiPj4yXTtpZighKChtWyhrW2M+PjJdfDApKzg+PjFdfDApJjE4KSl7Yz1qZShrW2I+PjJdfDApfDA7a1tkPj4yXT1jO2Q9a1tkPj4yXXwwO3I9ZTtyZXR1cm4gZHwwfWlmKChtWyhrW2M+PjJdfDApKzg+PjFdfDApJjE2Mzg0KWI9Z2goa1tjPj4yXXwwKXwwO2Vsc2UgYj0wO2lmKGIpe2tbZD4+Ml09MDtkPWtbZD4+Ml18MDtyPWU7cmV0dXJuIGR8MH1hPShrW2M+PjJdfDApKzh8MDtqW2E+PjFdPW1bYT4+MV18MHwxNjtpZihrWyhrW2M+PjJdfDApKzEyPj4yXXwwKWI9a1soa1tjPj4yXXwwKSsxNj4+Ml18MDtlbHNlIGI9MDtrW2Q+PjJdPWI7ZD1rW2Q+PjJdfDA7cj1lO3JldHVybiBkfDB9ZnVuY3Rpb24gamUoYSl7YT1hfDA7dmFyIGI9MCxjPTA7Yj1yO3I9cisxNnwwO2M9YjtrW2M+PjJdPWE7YT1oaChrW2M+PjJdfDAsMSl8MDtyPWI7cmV0dXJuIGF8MH1mdW5jdGlvbiBrZShhKXthPWF8MDt2YXIgYj0wLGM9MDtiPXI7cj1yKzE2fDA7Yz1iO2tbYz4+Ml09YTthPWloKGtbYz4+Ml18MCwxKXwwO3I9YjtyZXR1cm4gYXwwfWZ1bmN0aW9uIGxlKGEpe2E9YXwwO3ZhciBiPTAuMCxjPTAsZD0wO2M9cjtyPXIrMTZ8MDtkPWM7a1tkPj4yXT1hO2I9K2poKGtbZD4+Ml18MCk7cj1jO3JldHVybiArYn1mdW5jdGlvbiBtZShhKXthPWF8MDt2YXIgYj0wLGM9MDtiPXI7cj1yKzE2fDA7Yz1iO2tbYz4+Ml09YTthPWtoKGtbYz4+Ml18MCl8MDtyPWI7cmV0dXJuIGF8MH1mdW5jdGlvbiBuZShhKXthPWF8MDt2YXIgYj0wLGM9MDtiPXI7cj1yKzE2fDA7Yz1iO2tbYz4+Ml09YTthPWtoKGtbYz4+Ml18MCl8MDtyPWI7cmV0dXJuIGF8MH1mdW5jdGlvbiBvZShhKXthPWF8MDt2YXIgYj0wLGM9MDtjPXI7cj1yKzE2fDA7Yj1jO2tbYj4+Ml09YTtyPWM7cmV0dXJuIGxbMTgxMzgrKChtWyhrW2I+PjJdfDApKzg+PjFdfDApJjMxKT4+MF18MHwwfWZ1bmN0aW9uIHBlKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaT0wO2U9cjtyPXIrMTZ8MDtpPWUrMTJ8MDtoPWUrOHwwO2c9ZSs0fDA7Zj1lO2tbaT4+Ml09YTtrW2g+PjJdPWI7a1tnPj4yXT1jO2tbZj4+Ml09ZDtuaChrW2k+PjJdfDAsa1toPj4yXXwwLGtbZz4+Ml18MCwwLGtbZj4+Ml18MCk7cj1lO3JldHVybn1mdW5jdGlvbiBxZShhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxpPTAsaj0wO2o9cjtyPXIrMzJ8MDtmPWorMTZ8MDtnPWorMTJ8MDtoPWo7aT1qKzh8MDtrW2Y+PjJdPWE7a1tnPj4yXT1iO2I9aDtrW2I+PjJdPWM7a1tiKzQ+PjJdPWQ7a1tpPj4yXT1lO2I9aDtlPWtbYis0Pj4yXXwwO2lmKGU+Pj4wPjB8KGV8MCk9PTAmKGtbYj4+Ml18MCk+Pj4wPjIxNDc0ODM2NDcpe29oKGtbZz4+Ml18MCxrW2k+PjJdfDAsa1tmPj4yXXwwKXwwO3I9ajtyZXR1cm59ZWxzZXtuaChrW2Y+PjJdfDAsa1tnPj4yXXwwLGtbaD4+Ml18MCwwLGtbaT4+Ml18MCk7cj1qO3JldHVybn19ZnVuY3Rpb24gcmUoYSxiKXthPWF8MDtiPStiO3ZhciBjPTAsZD0wLGU9MDtjPXI7cj1yKzE2fDA7ZT1jKzh8MDtkPWM7a1tlPj4yXT1hO3BbZD4+M109YjtwaChrW2tbZT4+Ml0+PjJdfDAsK3BbZD4+M10pO3I9YztyZXR1cm59ZnVuY3Rpb24gc2UoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTA7ZD1yO3I9cisxNnwwO2c9ZCs4fDA7Zj1kKzR8MDtlPWQ7a1tnPj4yXT1hO2tbZj4+Ml09YjtrW2U+PjJdPWM7a1soa1tnPj4yXXwwKSsyMD4+Ml09MTtpWyhrW2c+PjJdfDApKzI1Pj4wXT0xO3FoKGtba1tnPj4yXT4+Ml18MCxrW2Y+PjJdfDAsa1tlPj4yXXwwLDEsLTEpfDA7cj1kO3JldHVybn1mdW5jdGlvbiB0ZShhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MDtjPXI7cj1yKzE2fDA7ZD1jKzR8MDtlPWM7a1tkPj4yXT1hO2tbZT4+Ml09YjthPWtbZT4+Ml18MDtyaChrW2tbZD4+Ml0+PjJdfDAsYSwoKGF8MCk8MCk8PDMxPj4zMSk7cj1jO3JldHVybn1mdW5jdGlvbiB1ZShhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wO2Q9cjtyPXIrMTZ8MDtlPWQrOHwwO2Y9ZDtrW2U+PjJdPWE7YT1mO2tbYT4+Ml09YjtrW2ErND4+Ml09YzthPWY7cmgoa1trW2U+PjJdPj4yXXwwLGtbYT4+Ml18MCxrW2ErND4+Ml18MCk7cj1kO3JldHVybn1mdW5jdGlvbiB2ZShhKXthPWF8MDt2YXIgYj0wLGM9MDtiPXI7cj1yKzE2fDA7Yz1iO2tbYz4+Ml09YTtzaChrW2tbYz4+Ml0+PjJdfDApO3I9YjtyZXR1cm59ZnVuY3Rpb24gd2UoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxpPTA7ZT1yO3I9cisxNnwwO2k9ZSsxMnwwO2g9ZSs4fDA7Zz1lKzR8MDtmPWU7a1tpPj4yXT1hO2tbaD4+Ml09YjtrW2c+PjJdPWM7a1tmPj4yXT1kO25oKGtbaT4+Ml18MCxrW2g+PjJdfDAsa1tnPj4yXXwwLDEsa1tmPj4yXXwwKTtyPWU7cmV0dXJufWZ1bmN0aW9uIHhlKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsbT0wLG49MCxvPTA7bz1yO3I9ciszMnwwO2c9bysxNnwwO2g9bysxMnwwO2o9bzttPW8rOHwwO249bysyMHwwO2tbZz4+Ml09YTtrW2g+PjJdPWI7Yj1qO2tbYj4+Ml09YztrW2IrND4+Ml09ZDtrW20+PjJdPWU7aVtuPj4wXT1mO2lmKChsW24+PjBdfDApPT00KWlbbj4+MF09KGlbOTY4XXwwKT09MD8zOjI7Yj1qO2U9a1tiKzQ+PjJdfDA7aWYoZT4+PjA+MHwoZXwwKT09MCYoa1tiPj4yXXwwKT4+PjA+MjE0NzQ4MzY0Nyl7b2goa1toPj4yXXwwLGtbbT4+Ml18MCxrW2c+PjJdfDApfDA7cj1vO3JldHVybn1lbHNle25oKGtbZz4+Ml18MCxrW2g+PjJdfDAsa1tqPj4yXXwwLGlbbj4+MF18MCxrW20+PjJdfDApO3I9bztyZXR1cm59fWZ1bmN0aW9uIHllKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wO2M9cjtyPXIrMTZ8MDtlPWMrNHwwO2Q9YztrW2U+PjJdPWE7a1tkPj4yXT1iO3RoKGtba1tlPj4yXT4+Ml18MCxrW2Q+PjJdfDApfDA7cj1jO3JldHVybn1mdW5jdGlvbiB6ZShhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaT0wO2c9cjtyPXIrMzJ8MDtkPWcrMTZ8MDtlPWcrMTJ8MDtmPWc7aT1nKzh8MDtrW2U+PjJdPWE7aD1mO2tbaD4+Ml09YjtrW2grND4+Ml09YztrW2k+PjJdPWtba1tlPj4yXT4+Ml07Yz1mO2g9a1tjKzQ+PjJdfDA7YT1rWyhrWyhrW2k+PjJdfDApKzMyPj4yXXwwKSs5Nj4+Ml18MDtiPSgoYXwwKTwwKTw8MzE+PjMxO2lmKGg+Pj4wPmI+Pj4wfCgoaHwwKT09KGJ8MCk/KGtbYz4+Ml18MCk+Pj4wPmE+Pj4wOjApKXtrW2Q+PjJdPTE4O2k9a1tkPj4yXXwwO3I9ZztyZXR1cm4gaXwwfWVsc2V7dWgoa1trW2U+PjJdPj4yXXwwLGtbZj4+Ml18MCk7a1tkPj4yXT0wO2k9a1tkPj4yXXwwO3I9ZztyZXR1cm4gaXwwfXJldHVybiAwfWZ1bmN0aW9uIEFlKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wO2U9cjtyPXIrMTZ8MDtjPWUrNHwwO2Q9ZTtrW2M+PjJdPWE7a1tkPj4yXT1iO2tbKGtbYz4+Ml18MCkrMjA+PjJdPWtbZD4+Ml07aVsoa1tjPj4yXXwwKSsyNT4+MF09MTtpZighKChtWyhrW2tbYz4+Ml0+PjJdfDApKzg+PjFdfDApJjEpKXtyPWU7cmV0dXJufWE9a1trW2M+PjJdPj4yXXwwO3FoKGEsdmgoa1tkPj4yXXwwKXwwLC0xLDEsMCl8MDtyPWU7cmV0dXJufWZ1bmN0aW9uIEJlKGEpe2E9YXwwO3ZhciBiPTAsYz0wO2I9cjtyPXIrMTZ8MDtjPWI7a1tjPj4yXT1hO2tbKGtbYz4+Ml18MCkrMjA+PjJdPTE4O2lbKGtbYz4+Ml18MCkrMjU+PjBdPTE7cWgoa1trW2M+PjJdPj4yXXwwLDE4MTcwLC0xLDEsMCl8MDtyPWI7cmV0dXJufWZ1bmN0aW9uIENlKGEpe2E9YXwwO3ZhciBiPTAsYz0wO2I9cjtyPXIrMTZ8MDtjPWI7a1tjPj4yXT1hO3NoKGtba1tjPj4yXT4+Ml18MCk7a1soa1tjPj4yXXwwKSsyMD4+Ml09NztpWyhrW2M+PjJdfDApKzI1Pj4wXT0xO3doKGtbKGtba1tjPj4yXT4+Ml18MCkrMzI+PjJdfDApO3I9YjtyZXR1cm59ZnVuY3Rpb24gRGUoYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wLGU9MCxmPTAsZz0wLGg9MCxsPTAsbT0wLG49MDtuPXI7cj1yKzQ4fDA7Yj1uKzMyfDA7Yz1uKzI4fDA7Zj1uKzI0fDA7Zz1uKzIwfDA7bD1uKzE2fDA7ZD1uKzEyfDA7ZT1uKzh8MDtoPW4rNHwwO209bjtrW2M+PjJdPWE7a1tmPj4yXT0wO2tbZz4+Ml09MDtrW2w+PjJdPWtbYz4+Ml07a1tkPj4yXT0wO2lmKHhoKGtbbD4+Ml18MCl8MCl7bT1WZig3NTc3NSl8MDtrW2I+PjJdPW07bT1rW2I+PjJdfDA7cj1uO3JldHVybiBtfDB9a1tlPj4yXT1rW2tbbD4+Ml0+PjJdO2E9KGtbbD4+Ml18MCkrMTQ0fDA7althPj4xXT1qW2E+PjFdJi0zO3doaWxlKDEpe2E9eWgoa1tsPj4yXXwwKXwwO2tbZj4+Ml09YTtpZigoYXwwKSE9MTcpYnJlYWs7YT1rW2Q+PjJdfDA7a1tkPj4yXT1hKzE7aWYoKGF8MCk+PTUwKWJyZWFrO2tbaD4+Ml09a1soa1tsPj4yXXwwKSszNj4+Ml07YT16aChrW2w+PjJdfDApfDA7a1tmPj4yXT1hO2tbZz4+Ml09YTtpZihrW2Y+PjJdfDApYnJlYWs7Z2Uoa1tjPj4yXXwwKXwwO2lmKChrW2g+PjJdfDApPDApY29udGludWU7YT0oa1tsPj4yXXwwKSsxNDR8MDtqW2E+PjFdPWpbYT4+MV0mLTN8Mn1kbyBpZihrW2c+PjJdfDApe2g9amUoa1soa1tlPj4yXXwwKSsyNDQ+PjJdfDApfDA7a1ttPj4yXT1oO2JnKGtbZT4+Ml18MCxrWyhrW2w+PjJdfDApKzEwOD4+Ml18MCk7aWYoaVsoa1tlPj4yXXwwKSs2OT4+MF18MCl7a1soa1tsPj4yXXwwKSsxMDg+PjJdPTA7a1tmPj4yXT03O2tbKGtbbD4+Ml18MCkrNDA+PjJdPTc7YnJlYWt9ZWxzZXttPUFoKGtbZT4+Ml18MCxrW20+PjJdfDApfDA7a1soa1tsPj4yXXwwKSsxMDg+PjJdPW07a1soa1tsPj4yXXwwKSs0MD4+Ml09a1tnPj4yXTticmVha319d2hpbGUoMCk7bT1jaChrW2U+PjJdfDAsa1tmPj4yXXwwKXwwO2tbZj4+Ml09bTtrW2I+PjJdPWtbZj4+Ml07bT1rW2I+PjJdfDA7cj1uO3JldHVybiBtfDB9ZnVuY3Rpb24gRWUoYSl7YT1hfDA7dmFyIGI9MCxjPTA7Yz1yO3I9cisxNnwwO2I9YztrW2I+PjJdPWE7cj1jO3JldHVybiBrWyhrWyhrW2I+PjJdfDApKzQ+PjJdfDApKzQ+PjJdfDB9ZnVuY3Rpb24gRmUoYSl7YT1hfDA7dmFyIGI9MCxjPTA7Yz1yO3I9cisxNnwwO2I9YztrW2I+PjJdPWE7cj1jO3JldHVybiBrWyhrW2tbYj4+Ml0+PjJdfDApKzMyPj4yXXwwfWZ1bmN0aW9uIEdlKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MDtlPXI7cj1yKzE2fDA7Yz1lKzh8MDtmPWUrNHwwO2Q9ZTtrW2Y+PjJdPWE7a1tkPj4yXT1iO2I9a1tmPj4yXXwwO2lmKCEoKG1bKGtbKGtbZj4+Ml18MCkrOD4+Ml18MCkrOD4+MV18MCkmODE5Mikpe2Y9QmgoYixrW2Q+PjJdfDApfDA7a1tjPj4yXT1mO2Y9a1tjPj4yXXwwO3I9ZTtyZXR1cm4gZnwwfWVsc2V7a1tjPj4yXT1rWyhrW2IrOD4+Ml18MCkrMTY+PjJdO2Y9a1tjPj4yXXwwO3I9ZTtyZXR1cm4gZnwwfXJldHVybiAwfWZ1bmN0aW9uIEhlKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MDtjPXI7cj1yKzE2fDA7ZD1jKzR8MDtiPWM7a1tkPj4yXT1hO2tbYj4+Ml09a1tkPj4yXTtpZighKGtbYj4+Ml18MCkpe2Q9MDtyPWM7cmV0dXJuIGR8MH1kPW1bKGtbYj4+Ml18MCkrMTQwPj4xXXwwO3I9YztyZXR1cm4gZHwwfWZ1bmN0aW9uIEllKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MCxlPTA7ZD1yO3I9cisxNnwwO2I9ZCs4fDA7ZT1kKzR8MDtjPWQ7a1tlPj4yXT1hO2tbYz4+Ml09a1tlPj4yXTtpZigoa1tjPj4yXXwwKSE9MD8oa1soa1tjPj4yXXwwKSsxMDQ+PjJdfDApIT0wOjApe2tbYj4+Ml09bVsoa1tjPj4yXXwwKSsxNDA+PjFdO2U9a1tiPj4yXXwwO3I9ZDtyZXR1cm4gZXwwfWtbYj4+Ml09MDtlPWtbYj4+Ml18MDtyPWQ7cmV0dXJuIGV8MH1mdW5jdGlvbiBKZShhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTA7ZD1yO3I9cisxNnwwO2U9ZCs4fDA7Zj1kKzR8MDtjPWQ7a1tlPj4yXT1hO2tbZj4+Ml09YjthPWllKERoKGtbZT4+Ml18MCxrW2Y+PjJdfDApfDApfDA7a1tjPj4yXT1hO0VoKGtbZT4+Ml18MCk7cj1kO3JldHVybiBrW2M+PjJdfDB9ZnVuY3Rpb24gS2UoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wO2Q9cjtyPXIrMTZ8MDtlPWQrOHwwO2Y9ZCs0fDA7Yz1kO2tbZT4+Ml09YTtrW2Y+PjJdPWI7YT1rZShEaChrW2U+PjJdfDAsa1tmPj4yXXwwKXwwKXwwO2tbYz4+Ml09YTtFaChrW2U+PjJdfDApO3I9ZDtyZXR1cm4ga1tjPj4yXXwwfWZ1bmN0aW9uIExlKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MC4wLGc9MDtkPXI7cj1yKzE2fDA7ZT1kKzEyfDA7Zz1kKzh8MDtjPWQ7a1tlPj4yXT1hO2tbZz4+Ml09YjtmPStsZShEaChrW2U+PjJdfDAsa1tnPj4yXXwwKXwwKTtwW2M+PjNdPWY7RWgoa1tlPj4yXXwwKTtyPWQ7cmV0dXJuICsoK3BbYz4+M10pfWZ1bmN0aW9uIE1lKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MDtkPXI7cj1yKzE2fDA7ZT1kKzh8MDtmPWQrNHwwO2M9ZDtrW2U+PjJdPWE7a1tmPj4yXT1iO2E9bWUoRGgoa1tlPj4yXXwwLGtbZj4+Ml18MCl8MCl8MDtrW2M+PjJdPWE7RWgoa1tlPj4yXXwwKTtyPWQ7cmV0dXJuIGtbYz4+Ml18MH1mdW5jdGlvbiBOZShhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTA7Yz1yO3I9cisxNnwwO2U9YysxMnwwO2Y9Yys4fDA7ZD1jO2tbZT4+Ml09YTtrW2Y+PjJdPWI7Yj1uZShEaChrW2U+PjJdfDAsa1tmPj4yXXwwKXwwKXwwO2E9ZDtrW2E+PjJdPWI7a1thKzQ+PjJdPUw7RWgoa1tlPj4yXXwwKTthPWQ7TD1rW2ErND4+Ml18MDtyPWM7cmV0dXJuIGtbYT4+Ml18MH1mdW5jdGlvbiBPZShhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTA7ZD1yO3I9cisxNnwwO2U9ZCs4fDA7Zj1kKzR8MDtjPWQ7a1tlPj4yXT1hO2tbZj4+Ml09YjthPWplKERoKGtbZT4+Ml18MCxrW2Y+PjJdfDApfDApfDA7a1tjPj4yXT1hO0VoKGtbZT4+Ml18MCk7cj1kO3JldHVybiBrW2M+PjJdfDB9ZnVuY3Rpb24gUGUoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wO2U9cjtyPXIrMTZ8MDtjPWUrOHwwO2Y9ZSs0fDA7ZD1lO2tbYz4+Ml09YTtrW2Y+PjJdPWI7YT1EaChrW2M+PjJdfDAsa1tmPj4yXXwwKXwwO2tbZD4+Ml09YTtpZighKChtWyhrW2Q+PjJdfDApKzg+PjFdfDApJjIwNDgpKXtmPWtbYz4+Ml18MDtFaChmKTtmPWtbZD4+Ml18MDtyPWU7cmV0dXJuIGZ8MH1mPShrW2Q+PjJdfDApKzh8MDtqW2Y+PjFdPShtW2Y+PjFdfDApJi0yMDQ5O2Y9KGtbZD4+Ml18MCkrOHwwO2pbZj4+MV09bVtmPj4xXXwwfDQwOTY7Zj1rW2M+PjJdfDA7RWgoZik7Zj1rW2Q+PjJdfDA7cj1lO3JldHVybiBmfDB9ZnVuY3Rpb24gUWUoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wO2Q9cjtyPXIrMTZ8MDtlPWQrOHwwO2Y9ZCs0fDA7Yz1kO2tbZT4+Ml09YTtrW2Y+PjJdPWI7YT1vZShEaChrW2U+PjJdfDAsa1tmPj4yXXwwKXwwKXwwO2tbYz4+Ml09YTtFaChrW2U+PjJdfDApO3I9ZDtyZXR1cm4ga1tjPj4yXXwwfWZ1bmN0aW9uIFJlKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wO2M9cjtyPXIrMTZ8MDtlPWMrNHwwO2Q9YztrW2U+PjJdPWE7a1tkPj4yXT1iO2E9Rmgoa1tlPj4yXXwwLGtbZD4+Ml18MCwxNjksMCl8MDtyPWM7cmV0dXJuIGF8MH1mdW5jdGlvbiBTZShhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxpPTAsaj0wLGw9MDtmPXI7cj1yKzMyfDA7bD1mKzE2fDA7aj1mKzEyfDA7aT1mKzh8MDtoPWYrNHwwO2c9ZjtrW2w+PjJdPWE7a1tqPj4yXT1iO2tbaT4+Ml09YztrW2g+PjJdPWQ7a1tnPj4yXT1lO2M9R2goa1tsPj4yXXwwLGtbaj4+Ml18MCxrW2k+PjJdfDAsa1toPj4yXXwwLGtbZz4+Ml18MCwwKXwwO3I9ZjtyZXR1cm4gY3wwfWZ1bmN0aW9uIFRlKGEsYixjKXthPWF8MDtiPWJ8MDtjPStjO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGk9MDtoPXI7cj1yKzMyfDA7aT1oKzIwfDA7ZD1oKzE2fDA7ZT1oO2c9aCsxMnwwO2Y9aCs4fDA7a1tpPj4yXT1hO2tbZD4+Ml09YjtwW2U+PjNdPWM7a1tmPj4yXT1rW2k+PjJdO2E9SGgoa1tmPj4yXXwwLGtbZD4+Ml18MCl8MDtrW2c+PjJdPWE7aWYoa1tnPj4yXXwwKXtpPWtbZz4+Ml18MDtyPWg7cmV0dXJuIGl8MH1waCgoa1soa1tmPj4yXXwwKSsxMTY+PjJdfDApKygoKGtbZD4+Ml18MCktMXwwKSo0MHwwKXwwLCtwW2U+PjNdKTtpPWtbZz4+Ml18MDtyPWg7cmV0dXJuIGl8MH1mdW5jdGlvbiBVZShhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MDtkPXI7cj1yKzE2fDA7Zj1kKzh8MDtlPWQrNHwwO2c9ZDtrW2Y+PjJdPWE7a1tlPj4yXT1iO2tbZz4+Ml09YzthPWtbZz4+Ml18MDthPVZlKGtbZj4+Ml18MCxrW2U+PjJdfDAsYSwoKGF8MCk8MCk8PDMxPj4zMSl8MDtyPWQ7cmV0dXJuIGF8MH1mdW5jdGlvbiBWZShhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGk9MCxqPTA7aT1yO3I9ciszMnwwO2o9aSsyMHwwO2U9aSsxNnwwO2Y9aTtoPWkrMTJ8MDtnPWkrOHwwO2tbaj4+Ml09YTtrW2U+PjJdPWI7YT1mO2tbYT4+Ml09YztrW2ErND4+Ml09ZDtrW2c+PjJdPWtbaj4+Ml07YT1IaChrW2c+PjJdfDAsa1tlPj4yXXwwKXwwO2tbaD4+Ml09YTtpZihrW2g+PjJdfDApe2o9a1toPj4yXXwwO3I9aTtyZXR1cm4ganwwfWo9ZjtyaCgoa1soa1tnPj4yXXwwKSsxMTY+PjJdfDApKygoKGtbZT4+Ml18MCktMXwwKSo0MHwwKXwwLGtbaj4+Ml18MCxrW2orND4+Ml18MCk7aj1rW2g+PjJdfDA7cj1pO3JldHVybiBqfDB9ZnVuY3Rpb24gV2UoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MDtkPXI7cj1yKzE2fDA7Zz1kKzEyfDA7ZT1kKzh8MDtjPWQrNHwwO2Y9ZDtrW2c+PjJdPWE7a1tlPj4yXT1iO2tbZj4+Ml09a1tnPj4yXTthPUhoKGtbZj4+Ml18MCxrW2U+PjJdfDApfDA7a1tjPj4yXT1hO3I9ZDtyZXR1cm4ga1tjPj4yXXwwfWZ1bmN0aW9uIFhlKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGk9MCxqPTAsbD0wO2Y9cjtyPXIrMzJ8MDtsPWYrMTZ8MDtqPWYrMTJ8MDtpPWYrOHwwO2g9Zis0fDA7Zz1mO2tbbD4+Ml09YTtrW2o+PjJdPWI7a1tpPj4yXT1jO2tbaD4+Ml09ZDtrW2c+PjJdPWU7Yz1HaChrW2w+PjJdfDAsa1tqPj4yXXwwLGtbaT4+Ml18MCxrW2g+PjJdfDAsa1tnPj4yXXwwLDEpfDA7cj1mO3JldHVybiBjfDB9ZnVuY3Rpb24gWWUoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wO2g9cjtyPXIrMTZ8MDtkPWgrMTJ8MDtlPWgrOHwwO2Y9aCs0fDA7Zz1oO2tbZD4+Ml09YTtrW2U+PjJdPWI7a1tmPj4yXT1jO3N3aXRjaChvZShrW2Y+PjJdfDApfDApe2Nhc2UgMTp7Zj1rW2Y+PjJdfDA7Zj1WZShrW2Q+PjJdfDAsa1tlPj4yXXwwLGtbZj4+Ml18MCxrW2YrND4+Ml18MCl8MDtrW2c+PjJdPWY7Zz1rW2c+PjJdfDA7cj1oO3JldHVybiBnfDB9Y2FzZSAyOntmPVRlKGtbZD4+Ml18MCxrW2U+PjJdfDAsK3Bba1tmPj4yXT4+M10pfDA7a1tnPj4yXT1mO2c9a1tnPj4yXXwwO3I9aDtyZXR1cm4gZ3wwfWNhc2UgNDp7YT1rW2Q+PjJdfDA7ZD1rW2U+PjJdfDA7Yj1rW2Y+PjJdfDA7aWYoKG1bKGtbZj4+Ml18MCkrOD4+MV18MCkmMTYzODQpe2Y9WmUoYSxkLGtbYj4+Ml18MCl8MDtrW2c+PjJdPWY7Zz1rW2c+PjJdfDA7cj1oO3JldHVybiBnfDB9ZWxzZXtmPVNlKGEsZCxrW2IrMTY+PjJdfDAsa1soa1tmPj4yXXwwKSsxMj4+Ml18MCwtMSl8MDtrW2c+PjJdPWY7Zz1rW2c+PjJdfDA7cj1oO3JldHVybiBnfDB9fWNhc2UgMzp7Zj1HaChrW2Q+PjJdfDAsa1tlPj4yXXwwLGtbKGtbZj4+Ml18MCkrMTY+PjJdfDAsa1soa1tmPj4yXXwwKSsxMj4+Ml18MCwtMSxpWyhrW2Y+PjJdfDApKzEwPj4wXXwwKXwwO2tbZz4+Ml09ZjtnPWtbZz4+Ml18MDtyPWg7cmV0dXJuIGd8MH1kZWZhdWx0OntmPVdlKGtbZD4+Ml18MCxrW2U+PjJdfDApfDA7a1tnPj4yXT1mO2c9a1tnPj4yXXwwO3I9aDtyZXR1cm4gZ3wwfX1yZXR1cm4gMH1mdW5jdGlvbiBaZShhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaT0wO2g9cjtyPXIrMzJ8MDtpPWgrMTZ8MDtkPWgrMTJ8MDtlPWgrOHwwO2c9aCs0fDA7Zj1oO2tbaT4+Ml09YTtrW2Q+PjJdPWI7a1tlPj4yXT1jO2tbZj4+Ml09a1tpPj4yXTthPUhoKGtbZj4+Ml18MCxrW2Q+PjJdfDApfDA7a1tnPj4yXT1hO2lmKGtbZz4+Ml18MCl7aT1rW2c+PjJdfDA7cj1oO3JldHVybiBpfDB9dWgoKGtbKGtbZj4+Ml18MCkrMTE2Pj4yXXwwKSsoKChrW2Q+PjJdfDApLTF8MCkqNDB8MCl8MCxrW2U+PjJdfDApO2k9a1tnPj4yXXwwO3I9aDtyZXR1cm4gaXwwfWZ1bmN0aW9uIF9lKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MDtjPXI7cj1yKzE2fDA7ZD1jKzR8MDtiPWM7a1tkPj4yXT1hO2tbYj4+Ml09a1tkPj4yXTtpZighKGtbYj4+Ml18MCkpe2Q9MDtyPWM7cmV0dXJuIGR8MH1kPWpbKGtbYj4+Ml18MCkrMTY+PjFdfDA7cj1jO3JldHVybiBkfDB9ZnVuY3Rpb24gJGUoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTA7Yz1yO3I9cisxNnwwO2U9Yys0fDA7ZD1jO2tbZT4+Ml09YTtrW2Q+PjJdPWI7YT1rW2U+PjJdfDA7Yj1rW2Q+PjJdfDA7Yj1JaChhLGIsVGYoa1tkPj4yXXwwKXwwKXwwO3I9YztyZXR1cm4gYnwwfWZ1bmN0aW9uIGFmKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MDtjPXI7cj1yKzE2fDA7ZD1jKzR8MDtiPWM7a1tkPj4yXT1hO2tbYj4+Ml09a1tkPj4yXTtpZighKGtbYj4+Ml18MCkpe2Q9MDtyPWM7cmV0dXJuIGR8MH1kPWtbKGtbYj4+Ml18MCkrMTc2Pj4yXXwwO3I9YztyZXR1cm4gZHwwfWZ1bmN0aW9uIGJmKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MCxlPTA7ZT1yO3I9cisxNnwwO2I9ZSs4fDA7Yz1lKzR8MDtkPWU7a1tiPj4yXT1hO2E9b2Uoa1tiPj4yXXwwKXwwO2tbYz4+Ml09YTtpZigoa1tjPj4yXXwwKSE9Myl7YT1rW2M+PjJdfDA7cj1lO3JldHVybiBhfDB9a1tkPj4yXT1rW2I+PjJdO0xoKGtbZD4+Ml18MCwwKTthPW9lKGtbYj4+Ml18MCl8MDtrW2M+PjJdPWE7YT1rW2M+PjJdfDA7cj1lO3JldHVybiBhfDB9ZnVuY3Rpb24gY2YoYSxiLGMsZCxlLGYsZyxoKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDt2YXIgbj0wLG89MCxwPTAscT0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wLEU9MCxGPTAsRz0wLEg9MCxJPTAsSj0wLEs9MCxMPTAsTT0wLE49MCxPPTAsUD0wLFE9MDtRPXI7cj1yKzE0NHwwO009USs0OHwwO0w9USs0MHwwO049USszMnwwO0U9USsyNHwwO0Q9USsxNnwwO0M9USs4fDA7Rj1RKzEzMnwwO249USsxMjh8MDtvPVErMTI0fDA7Rz1RKzEyMHwwO3A9UTtxPVErMTE2fDA7SD1RKzExMnwwO3g9USsxMDh8MDt0PVErMTA0fDA7Sz1RKzEwMHwwO089USs5NnwwO0E9USs5MnwwO0o9USs4OHwwO0k9USs4NHwwO1A9USs4MHwwO3o9USs3NnwwO3k9USs3MnwwO3Y9USs2OHwwO3c9USs2NHwwO0I9USs2MHwwO3U9USs1NnwwO3M9USs1MnwwO2tbRj4+Ml09YTtrW24+PjJdPWI7a1tvPj4yXT1jO2tbRz4+Ml09ZDtjPXA7a1tjPj4yXT1lO2tbYys0Pj4yXT1mO2tbcT4+Ml09ZztrW0g+PjJdPWg7a1t4Pj4yXT0wO2tbSz4+Ml09MDtrW08+PjJdPTA7a1tKPj4yXT0wO2tbST4+Ml09MDtrW2tbSD4+Ml0+PjJdPTA7a1txPj4yXT0oKGtbcT4+Ml18MCkhPTBeMV4xKSYxO2M9Q2goa1tGPj4yXXwwLDM2LDApfDA7a1tJPj4yXT1jO2E6ZG8gaWYoKGtbST4+Ml18MCkhPTA/KGM9TWgoa1tGPj4yXXwwLDQ4MCwwKXwwLGtbSj4+Ml09Yywoa1tKPj4yXXwwKSE9MCk6MCl7d2hpbGUoMSl7ZFMoa1tKPj4yXXwwLDAsNDgwKXwwO2tba1tKPj4yXT4+Ml09a1tGPj4yXTtiZyhrW0Y+PjJdfDAsa1tPPj4yXXwwKTtrW08+PjJdPTA7WWYoa1tGPj4yXXwwKTtjPU5oKGtbSj4+Ml18MCwwLGtbbz4+Ml18MCxrW24+PjJdfDApfDA7a1tBPj4yXT1jO2lmKChrW0E+PjJdfDApIT0wPyhsWyhrW0E+PjJdfDApKzQyPj4wXSYxNnwwKSE9MDowKXtrW0E+PjJdPTA7Yz1rW0o+PjJdfDA7a1tDPj4yXT1rW28+PjJdO09oKGMsMTgxOTMsQyl9aWYoKGtbQT4+Ml18MCkhPTA/KGxbKGtbQT4+Ml18MCkrNDI+PjBdJjMyfDApIT0wOjApe2tbQT4+Ml09MDtjPWtbSj4+Ml18MDtrW0Q+PjJdPWtbbz4+Ml07T2goYywxODIyMyxEKX1pZigoa1tBPj4yXXwwKSE9MD8oa1soa1tBPj4yXXwwKSsxMj4+Ml18MCkhPTA6MCl7a1tBPj4yXT0wO2M9a1tKPj4yXXwwO2tbRT4+Ml09a1tvPj4yXTtPaChjLDE4MjU5LEUpfWlmKCEoa1tBPj4yXXwwKSl7ZT0xMzticmVha31rWyhrW0k+PjJdfDApKzMyPj4yXT1rW0E+PjJdO2M9UGgoa1tGPj4yXXwwLGtbKGtbQT4+Ml18MCkrNjQ+PjJdfDApfDA7a1soa1tJPj4yXXwwKSsyOD4+Ml09a1soa1soa1tGPj4yXXwwKSsxNj4+Ml18MCkrKGM8PDQpPj4yXTtrW3Q+PjJdPTA7d2hpbGUoMSl7aWYoKGtbdD4+Ml18MCk+PShqWyhrW0E+PjJdfDApKzM0Pj4xXXwwKSlicmVhaztpZighKHNnKGtbKGtbKGtbQT4+Ml18MCkrND4+Ml18MCkrKGtbdD4+Ml08PDQpPj4yXXwwLGtbRz4+Ml18MCl8MCkpYnJlYWs7a1t0Pj4yXT0oa1t0Pj4yXXwwKSsxfWlmKChrW3Q+PjJdfDApPT0oalsoa1tBPj4yXXwwKSszND4+MV18MCkpe2U9MjE7YnJlYWt9aWYoa1txPj4yXXwwKXtrW1A+PjJdPTA7YjpkbyBpZihrWyhrW0Y+PjJdfDApKzI0Pj4yXSY1MjQyODgpe2tbeT4+Ml09a1soa1tBPj4yXXwwKSsxNj4+Ml07d2hpbGUoMSl7aWYoIShrW3k+PjJdfDApKWJyZWFrIGI7a1t2Pj4yXT0wO3doaWxlKDEpe2lmKChrW3Y+PjJdfDApPj0oa1soa1t5Pj4yXXwwKSsyMD4+Ml18MCkpYnJlYWs7aWYoKGtbKGtbeT4+Ml18MCkrMzYrKGtbdj4+Ml08PDMpPj4yXXwwKT09KGtbdD4+Ml18MCkpa1tQPj4yXT0xODMwMTtrW3Y+PjJdPShrW3Y+PjJdfDApKzF9a1t5Pj4yXT1rWyhrW3k+PjJdfDApKzQ+PjJdfX13aGlsZSgwKTtrW3o+PjJdPWtbKGtbQT4+Ml18MCkrOD4+Ml07d2hpbGUoMSl7aWYoIShrW3o+PjJdfDApKWJyZWFrO2tbdz4+Ml09MDt3aGlsZSgxKXtpZigoa1t3Pj4yXXwwKT49KG1bKGtbej4+Ml18MCkrNTA+PjFdfDApKWJyZWFrO2lmKCEoKGpbKGtbKGtbej4+Ml18MCkrND4+Ml18MCkrKGtbdz4+Ml08PDEpPj4xXXwwKSE9KGtbdD4+Ml18MCk/KGpbKGtbKGtbej4+Ml18MCkrND4+Ml18MCkrKGtbdz4+Ml08PDEpPj4xXXwwKSE9LTI6MCkpa1tQPj4yXT0xODMxMztrW3c+PjJdPShrW3c+PjJdfDApKzF9a1t6Pj4yXT1rWyhrW3o+PjJdfDApKzIwPj4yXX1pZihrW1A+PjJdfDApe2U9NDI7YnJlYWt9fWM9Umgoa1tKPj4yXXwwKXwwO2tbKGtbST4+Ml18MCkrMjA+PjJdPWM7aWYoa1soa1tJPj4yXXwwKSsyMD4+Ml18MCl7a1tCPj4yXT1rWyhrW0k+PjJdfDApKzIwPj4yXTtjPVBoKGtbRj4+Ml18MCxrWyhrW0E+PjJdfDApKzY0Pj4yXXwwKXwwO2tbdT4+Ml09YztTaChrW0I+PjJdfDAsMixrW3U+PjJdfDAsa1txPj4yXXwwLGtba1soa1tBPj4yXXwwKSs2ND4+Ml0+PjJdfDAsa1soa1soa1tBPj4yXXwwKSs2ND4+Ml18MCkrND4+Ml18MCl8MDtUaChrW0I+PjJdfDAsMSk7Yz1VaChrW0I+PjJdfDAsOSwxODM1NSwwKXwwO2tbcz4+Ml09YztWaChrW0I+PjJdfDAsa1t1Pj4yXXwwKTtpZighKGxbKGtbRj4+Ml18MCkrNjk+PjBdfDApKXtrWyhrW3M+PjJdfDApKzQ+PjJdPWtbdT4+Ml07a1soa1tzPj4yXXwwKSs4Pj4yXT1rWyhrW0E+PjJdfDApKzI4Pj4yXTtrWyhrW3M+PjJdfDApKzEyPj4yXT1rW3E+PjJdO1doKGtbQj4+Ml18MCwxLGtba1tBPj4yXT4+Ml18MCwwKX1pZighKGxbKGtbRj4+Ml18MCkrNjk+PjBdfDApKXtpZihrW3E+PjJdfDApaVsoa1tzPj4yXXwwKSsyMD4+MF09MTA1O2tbKGtbcz4+Ml18MCkrMjArOD4+Ml09a1soa1tBPj4yXXwwKSsyOD4+Ml07a1soa1tzPj4yXXwwKSsyMCsxMj4+Ml09a1t1Pj4yXTtpWyhrW3M+PjJdfDApKzIwKzE+PjBdPS0xNDtrWyhrW3M+PjJdfDApKzIwKzE2Pj4yXT0oalsoa1tBPj4yXXwwKSszND4+MV18MCkrMTtrWyhrW3M+PjJdfDApKzgwKzg+PjJdPWpbKGtbQT4+Ml18MCkrMzQ+PjFdO2pbKGtbSj4+Ml18MCkrNDAwPj4xXT0xO2tbKGtbSj4+Ml18MCkrNDQ+PjJdPTE7a1soa1tKPj4yXXwwKSs0MD4+Ml09MTtYaChrW0I+PjJdfDAsa1tKPj4yXXwwKX19a1trW0k+PjJdPj4yXT1rW3E+PjJdO2tbKGtbST4+Ml18MCkrMTI+PjJdPWtbdD4+Ml07a1soa1tJPj4yXXwwKSsyND4+Ml09a1tGPj4yXTtpZihpWyhrW0Y+PjJdfDApKzY5Pj4wXXwwKWJyZWFrIGE7Yz1wO1ZlKGtbKGtbST4+Ml18MCkrMjA+PjJdfDAsMSxrW2M+PjJdfDAsa1tjKzQ+PjJdfDApfDA7Yz1wO2M9WWgoa1tJPj4yXXwwLGtbYz4+Ml18MCxrW2MrND4+Ml18MCxPKXwwO2tbSz4+Ml09YztjPShrW3g+PjJdfDApKzF8MDtrW3g+PjJdPWM7aWYoISgoY3wwKTw1MD8oa1tLPj4yXXwwKT09MTc6MCkpYnJlYWsgYX1pZigoZXwwKT09MTMpe2lmKGtbKGtbSj4+Ml18MCkrND4+Ml18MCl7Ymcoa1tGPj4yXXwwLGtbTz4+Ml18MCk7a1tPPj4yXT1rWyhrW0o+PjJdfDApKzQ+PjJdO2tbKGtbSj4+Ml18MCkrND4+Ml09MH1rW0s+PjJdPTE7YnJlYWt9ZWxzZSBpZigoZXwwKT09MjEpe2JnKGtbRj4+Ml18MCxrW08+PjJdfDApO1A9a1tGPj4yXXwwO2tbTj4+Ml09a1tHPj4yXTtQPVFoKFAsMTgyODAsTil8MDtrW08+PjJdPVA7a1tLPj4yXT0xO2JyZWFrfWVsc2UgaWYoKGV8MCk9PTQyKXtiZyhrW0Y+PjJdfDAsa1tPPj4yXXwwKTtOPWtbRj4+Ml18MDtrW0w+PjJdPWtbUD4+Ml07UD1RaChOLDE4MzIxLEwpfDA7a1tPPj4yXT1QO2tbSz4+Ml09MTticmVha319d2hpbGUoMCk7aWYoKGtbSz4+Ml18MCk9PTA/KGxbKGtbRj4+Ml18MCkrNjk+PjBdfDApPT0wOjApe2tba1tIPj4yXT4+Ml09a1tJPj4yXTtMPWtbRj4+Ml18MDtQPWtbSz4+Ml18MDtOPWtbTz4+Ml18MDtOPShOfDApIT0wO049Tj8xODM5MTowO0k9a1tPPj4yXXwwO2tbTT4+Ml09STt0ZyhMLFAsTixNKTtOPWtbRj4+Ml18MDtQPWtbTz4+Ml18MDtiZyhOLFApO1A9a1tKPj4yXXwwO1poKFApO1A9a1tGPj4yXXwwO089a1tKPj4yXXwwO2JnKFAsTyk7Tz1rW0Y+PjJdfDA7UD1rW0s+PjJdfDA7UD1jaChPLFApfDA7a1tLPj4yXT1QO1A9a1tLPj4yXXwwO3I9UTtyZXR1cm4gUHwwfWlmKChrW0k+PjJdfDApIT0wPyhrWyhrW0k+PjJdfDApKzIwPj4yXXwwKSE9MDowKWJoKGtbKGtbST4+Ml18MCkrMjA+PjJdfDApfDA7Ymcoa1tGPj4yXXwwLGtbST4+Ml18MCk7TD1rW0Y+PjJdfDA7UD1rW0s+PjJdfDA7Tj1rW08+PjJdfDA7Tj0oTnwwKSE9MDtOPU4/MTgzOTE6MDtJPWtbTz4+Ml18MDtrW00+PjJdPUk7dGcoTCxQLE4sTSk7Tj1rW0Y+PjJdfDA7UD1rW08+PjJdfDA7YmcoTixQKTtQPWtbSj4+Ml18MDtaaChQKTtQPWtbRj4+Ml18MDtPPWtbSj4+Ml18MDtiZyhQLE8pO089a1tGPj4yXXwwO1A9a1tLPj4yXXwwO1A9Y2goTyxQKXwwO2tbSz4+Ml09UDtQPWtbSz4+Ml18MDtyPVE7cmV0dXJuIFB8MH1mdW5jdGlvbiBkZihhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTAsZT0wLGY9MDtlPXI7cj1yKzE2fDA7Zj1lKzEyfDA7Yz1lKzh8MDtkPWUrNHwwO2I9ZTtrW2Y+PjJdPWE7a1tjPj4yXT1rW2Y+PjJdO2lmKGtbYz4+Ml18MCl7a1tiPj4yXT1rWyhrW2M+PjJdfDApKzI0Pj4yXTtmPWZlKGtbKGtbYz4+Ml18MCkrMjA+PjJdfDApfDA7a1tkPj4yXT1mO2JnKGtbYj4+Ml18MCxrW2M+PjJdfDApO2Y9a1tkPj4yXXwwO3I9ZTtyZXR1cm4gZnwwfWVsc2V7a1tkPj4yXT0wO2Y9a1tkPj4yXXwwO3I9ZTtyZXR1cm4gZnwwfXJldHVybiAwfWZ1bmN0aW9uIGVmKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaT0wO2U9cjtyPXIrMTZ8MDtpPWUrMTJ8MDtoPWUrOHwwO2c9ZSs0fDA7Zj1lO2tbaT4+Ml09YTtrW2g+PjJdPWI7a1tnPj4yXT1jO2tbZj4+Ml09ZDtiPSRoKGtbaT4+Ml18MCxrW2g+PjJdfDAsa1tnPj4yXXwwLGtbZj4+Ml18MCwxMzgpfDA7cj1lO3JldHVybiBifDB9ZnVuY3Rpb24gZmYoYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wO2M9cjtyPXIrMTZ8MDtkPWMrNHwwO2I9YztrW2Q+PjJdPWE7a1tiPj4yXT1rW2Q+PjJdO2lmKCEoa1tiPj4yXXwwKSl7ZD0wO3I9YztyZXR1cm4gZHwwfWlmKCEoa1soa1tiPj4yXXwwKSsyMD4+Ml18MCkpe2Q9MDtyPWM7cmV0dXJuIGR8MH1kPWtbKGtbYj4+Ml18MCkrND4+Ml18MDtyPWM7cmV0dXJuIGR8MH1mdW5jdGlvbiBnZihhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaT0wLGo9MCxsPTAsbT0wO2w9cjtyPXIrNDh8MDtpPWwrOHwwO2Q9bCszMnwwO209bCsyOHwwO2U9bDtoPWwrMjR8MDtnPWwrMjB8MDtmPWwrMTZ8MDtqPWwrMTJ8MDtrW20+PjJdPWE7YT1lO2tbYT4+Ml09YjtrW2ErND4+Ml09YztrW2c+PjJdPWtbbT4+Ml07aWYoIShrW2c+PjJdfDApKXttPVZmKDg0ODE0KXwwO2tbZD4+Ml09bTttPWtbZD4+Ml18MDtyPWw7cmV0dXJuIG18MH1rW2Y+PjJdPWtbKGtbZz4+Ml18MCkrMjQ+PjJdO2lmKGtbKGtbZz4+Ml18MCkrMjA+PjJdfDApe209ZTttPVloKGtbZz4+Ml18MCxrW20+PjJdfDAsa1ttKzQ+PjJdfDAsail8MDtrW2g+PjJdPW07aWYoa1toPj4yXXwwKXtnPWtbZj4+Ml18MDthPWtbaD4+Ml18MDttPShrW2o+PjJdfDApIT0wPzE4MzkxOjA7a1tpPj4yXT1rW2o+PjJdO3RnKGcsYSxtLGkpO2JnKGtbZj4+Ml18MCxrW2o+PjJdfDApfX1lbHNlIGtbaD4+Ml09NDttPWNoKGtbZj4+Ml18MCxrW2g+PjJdfDApfDA7a1toPj4yXT1tO2tbZD4+Ml09a1toPj4yXTttPWtbZD4+Ml18MDtyPWw7cmV0dXJuIG18MH1mdW5jdGlvbiBoZihhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MDtjPXI7cj1yKzE2fDA7ZT1jKzR8MDtkPWM7a1tlPj4yXT1hO2tbZD4+Ml09YjtiPShiaShrW2U+PjJdfDAsa1tkPj4yXXwwLDE4Mzk0LDkxKXwwKT09MCYxO3I9YztyZXR1cm4gYnwwfWZ1bmN0aW9uIGpmKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wO2Q9cjtyPXIrMTZ8MDtnPWQrOHwwO2Y9ZCs0fDA7ZT1kO2tbZz4+Ml09YTtrW2Y+PjJdPWI7a1tlPj4yXT1jO2I9KGJpKGtbZz4+Ml18MCxrW2Y+PjJdfDAsMTgzOTgsa1tlPj4yXXwwKXwwKT09MCYxO3I9ZDtyZXR1cm4gYnwwfWZ1bmN0aW9uIGtmKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxtPTAsbj0wLG89MCxwPTAscT0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTA7ej1yO3I9cis2NHwwO2Y9eis1NnwwO2c9eis1MnwwO2g9eis0OHwwO2o9eis0NHwwO209eis0MHwwO249eiszNnwwO3c9eiszMnwwO3g9eisyOHwwO3Y9eisyNHwwO289eisyMHwwO3E9eisxNnwwO3Q9eisxMnwwO3A9eis4fDA7cz16KzR8MDt1PXo7a1tnPj4yXT1hO2tbaD4+Ml09YjtrW2o+PjJdPWM7a1ttPj4yXT1kO2tbbj4+Ml09ZTtrW3c+PjJdPTA7a1t2Pj4yXT0wO2tbbz4+Ml09MDtpZighKGNpKGtbZz4+Ml18MCl8MCkpe3k9VmYoMTA5NTk3KXwwO2tbZj4+Ml09eTt5PWtbZj4+Ml18MDtyPXo7cmV0dXJuIHl8MH1pZighKGtbaD4+Ml18MCkpa1toPj4yXT0xODQwMjt2ZyhrW2c+PjJdfDAsMCk7YTp3aGlsZSgxKXtpZihrW3c+PjJdfDApYnJlYWs7aWYoIShpW2tbaD4+Ml0+PjBdfDApKWJyZWFrO2tbcD4+Ml09MDtrW3Y+PjJdPTA7Yj1sZihrW2c+PjJdfDAsa1toPj4yXXwwLC0xLHYseCl8MDtrW3c+PjJdPWI7aWYoa1t3Pj4yXXwwKWNvbnRpbnVlO2lmKCEoa1t2Pj4yXXwwKSl7a1toPj4yXT1rW3g+PjJdO2NvbnRpbnVlfWtbcT4+Ml09MDtiPUhlKGtbdj4+Ml18MCl8MDtrW3Q+PjJdPWI7ZG97Yj1EZShrW3Y+PjJdfDApfDA7a1t3Pj4yXT1iO2RvIGlmKGtbaj4+Ml18MCl7aWYoMTAwIT0oa1t3Pj4yXXwwKSl7aWYoMTAxIT0oa1t3Pj4yXXwwKXwoa1txPj4yXXwwKSE9MClicmVhaztpZighKGtbKGtbZz4+Ml18MCkrMjQ+PjJdJjI1NikpYnJlYWt9aWYoIShrW3E+PjJdfDApKXtiPUNoKGtbZz4+Ml18MCwoa1t0Pj4yXTw8MTw8MikrMXwwLDApfDA7a1tvPj4yXT1iO2lmKCEoa1tvPj4yXXwwKSlicmVhayBhO2tbcz4+Ml09MDt3aGlsZSgxKXtpZigoa1tzPj4yXXwwKT49KGtbdD4+Ml18MCkpYnJlYWs7Yj1SZShrW3Y+PjJdfDAsa1tzPj4yXXwwKXwwO2tbKGtbbz4+Ml18MCkrKGtbcz4+Ml08PDIpPj4yXT1iO2tbcz4+Ml09KGtbcz4+Ml18MCkrMX1rW3E+PjJdPTF9YjpkbyBpZigoa1t3Pj4yXXwwKT09MTAwKXtrW3A+PjJdPShrW28+PjJdfDApKyhrW3Q+PjJdPDwyKTtrW3M+PjJdPTA7d2hpbGUoMSl7aWYoKGtbcz4+Ml18MCk+PShrW3Q+PjJdfDApKWJyZWFrIGI7Yj1PZShrW3Y+PjJdfDAsa1tzPj4yXXwwKXwwO2tbKGtbcD4+Ml18MCkrKGtbcz4+Ml08PDIpPj4yXT1iO2lmKChrWyhrW3A+PjJdfDApKyhrW3M+PjJdPDwyKT4+Ml18MCk9PTA/KFFlKGtbdj4+Ml18MCxrW3M+PjJdfDApfDApIT01OjApe3k9Mjc7YnJlYWsgYX1rW3M+PjJdPShrW3M+PjJdfDApKzF9fXdoaWxlKDApO2lmKGVjW2tbaj4+Ml0mMjU1XShrW20+PjJdfDAsa1t0Pj4yXXwwLGtbcD4+Ml18MCxrW28+PjJdfDApfDApe3k9MzA7YnJlYWsgYX19d2hpbGUoMCl9d2hpbGUoKGtbdz4+Ml18MCk9PTEwMCk7Yj1iaChrW3Y+PjJdfDApfDA7a1t3Pj4yXT1iO2tbdj4+Ml09MDtrW2g+PjJdPWtbeD4+Ml07d2hpbGUoMSl7aWYoIShsWzE4NDAzKyhsW2tbaD4+Ml0+PjBdfDApPj4wXSYxKSlicmVhaztrW2g+PjJdPShrW2g+PjJdfDApKzF9Ymcoa1tnPj4yXXwwLGtbbz4+Ml18MCk7a1tvPj4yXT0wfWlmKCh5fDApPT0yNyl3aChrW2c+PjJdfDApO2Vsc2UgaWYoKHl8MCk9PTMwKXtrW3c+PjJdPTQ7Ymgoa1t2Pj4yXXwwKXwwO2tbdj4+Ml09MDt2ZyhrW2c+PjJdfDAsNCl9aWYoa1t2Pj4yXXwwKWJoKGtbdj4+Ml18MCl8MDtiZyhrW2c+PjJdfDAsa1tvPj4yXXwwKTt5PWNoKGtbZz4+Ml18MCxrW3c+PjJdfDApfDA7a1t3Pj4yXT15O2RvIGlmKChrW3c+PjJdfDApIT0wJihrW24+PjJdfDApIT0wKXt5PTErKFRmKG1mKGtbZz4+Ml18MCl8MCl8MCl8MDtrW3U+PjJdPXk7eT1rW3U+PjJdfDA7eT1qZyh5LCgoeXwwKTwwKTw8MzE+PjMxKXwwO2tba1tuPj4yXT4+Ml09eTtpZihrW2tbbj4+Ml0+PjJdfDApe2I9a1trW24+PjJdPj4yXXwwO3k9bWYoa1tnPj4yXXwwKXwwO2JTKGJ8MCx5fDAsa1t1Pj4yXXwwKXwwO2JyZWFrfWVsc2V7a1t3Pj4yXT03O3ZnKGtbZz4+Ml18MCw3KTticmVha319ZWxzZSBpZihrW24+PjJdfDApa1trW24+PjJdPj4yXT0wO3doaWxlKDApO2tbZj4+Ml09a1t3Pj4yXTt5PWtbZj4+Ml18MDtyPXo7cmV0dXJuIHl8MH1mdW5jdGlvbiBsZihhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxpPTAsaj0wLGw9MCxtPTA7Zz1yO3I9ciszMnwwO209ZysyMHwwO2w9ZysxNnwwO2o9ZysxMnwwO2k9Zys4fDA7aD1nKzR8MDtmPWc7a1ttPj4yXT1hO2tbbD4+Ml09YjtrW2o+PjJdPWM7a1tpPj4yXT1kO2tbaD4+Ml09ZTtiPWRpKGtbbT4+Ml18MCxrW2w+PjJdfDAsa1tqPj4yXXwwLDEsMCxrW2k+PjJdfDAsa1toPj4yXXwwKXwwO2tbZj4+Ml09YjtyPWc7cmV0dXJuIGtbZj4+Ml18MH1mdW5jdGlvbiBtZihhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTAsZT0wO2U9cjtyPXIrMTZ8MDtiPWUrOHwwO2M9ZSs0fDA7ZD1lO2tbYz4+Ml09YTtpZighKGtbYz4+Ml18MCkpe2Q9dmgoNyl8MDtrW2I+PjJdPWQ7ZD1rW2I+PjJdfDA7cj1lO3JldHVybiBkfDB9aWYoIShlaShrW2M+PjJdfDApfDApKXtkPXZoKFZmKDE0MDA0Nil8MCl8MDtrW2I+PjJdPWQ7ZD1rW2I+PjJdfDA7cj1lO3JldHVybiBkfDB9aWYoIShpWyhrW2M+PjJdfDApKzY5Pj4wXXwwKSl7YT1qZShrWyhrW2M+PjJdfDApKzI0ND4+Ml18MCl8MDtrW2Q+PjJdPWE7aWYoIShrW2Q+PjJdfDApKXthPXZoKGtbKGtbYz4+Ml18MCkrNTI+PjJdfDApfDA7a1tkPj4yXT1hfX1lbHNle2E9dmgoNyl8MDtrW2Q+PjJdPWF9a1tiPj4yXT1rW2Q+PjJdO2Q9a1tiPj4yXXwwO3I9ZTtyZXR1cm4gZHwwfWZ1bmN0aW9uIG5mKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGk9MCxqPTAsbD0wLG09MDtnPXI7cj1yKzMyfDA7bT1nKzIwfDA7bD1nKzE2fDA7aj1nKzEyfDA7aT1nKzh8MDtoPWcrNHwwO2Y9ZztrW20+PjJdPWE7a1tsPj4yXT1iO2tbaj4+Ml09YztrW2k+PjJdPWQ7a1toPj4yXT1lO2I9ZGkoa1ttPj4yXXwwLGtbbD4+Ml18MCxrW2o+PjJdfDAsMCwwLGtbaT4+Ml18MCxrW2g+PjJdfDApfDA7a1tmPj4yXT1iO3I9ZztyZXR1cm4ga1tmPj4yXXwwfWZ1bmN0aW9uIG9mKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaT0wO2U9cjtyPXIrMTZ8MDtpPWUrMTJ8MDtoPWUrOHwwO2c9ZSs0fDA7Zj1lO2tbaT4+Ml09YTtrW2g+PjJdPWI7a1tnPj4yXT1jO2tbZj4+Ml09ZDtiPWZpKGtbaT4+Ml18MCxrW2g+PjJdfDAsa1tnPj4yXXwwLGtbZj4+Ml18MCwwKXwwO3I9ZTtyZXR1cm4gYnwwfWZ1bmN0aW9uIHBmKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGk9MCxqPTAsbD0wO2Y9cjtyPXIrMzJ8MDtsPWYrMTZ8MDtqPWYrMTJ8MDtpPWYrOHwwO2g9Zis0fDA7Zz1mO2tbbD4+Ml09YTtrW2o+PjJdPWI7a1tpPj4yXT1jO2tbaD4+Ml09ZDtrW2c+PjJdPWU7Yj1maShrW2w+PjJdfDAsa1tqPj4yXXwwLGtbaT4+Ml18MCxrW2g+PjJdfDAsa1tnPj4yXXwwKXwwO3I9ZjtyZXR1cm4gYnwwfWZ1bmN0aW9uIHFmKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscz0wO3M9cjtyPXIrNDh8MDtwPXM7Yz1zKzQwfDA7ZD1zKzM2fDA7ZT1zKzMyfDA7Zj1zKzI4fDA7bT1zKzI0fDA7bz1zKzIwfDA7bj1zKzE2fDA7cT1zKzEyfDA7aD1zKzh8MDtnPXMrNHwwO2tbZD4+Ml09YTtrW2U+PjJdPWI7a1tvPj4yXT0wO2tbcT4+Ml09MDtrW2Y+PjJdPWtbKGtbZD4+Ml18MCkrMzM2Pj4yXTtpZigoa1tmPj4yXXwwKSE9MD8oa1soa1tmPj4yXXwwKSsxMj4+Ml18MCk9PTA6MCl7a1tuPj4yXT1rWyhrW2Y+PjJdfDApKzQ+PjJdO2I9Q2goa1tkPj4yXXwwLDQ4MCwwKXwwO2tbbT4+Ml09YjtpZighKGtbbT4+Ml18MCkpa1tvPj4yXT03O2Vsc2V7aVsoa1ttPj4yXXwwKSs0MTA+PjBdPTE7a1trW20+PjJdPj4yXT1rW2Q+PjJdO2tbKGtbbT4+Ml18MCkrMTM2Pj4yXT0xO2lmKCgoKDA9PShnaShrW20+PjJdfDAsa1tlPj4yXXwwLHEpfDApPyhrWyhrW20+PjJdfDApKzQ0MD4+Ml18MCkhPTA6MCk/KGlbKGtbZD4+Ml18MCkrNjk+PjBdfDApPT0wOjApPyhrWyhrWyhrW20+PjJdfDApKzQ0MD4+Ml18MCkrMTI+PjJdfDApPT0wOjApPyhsWyhrWyhrW20+PjJdfDApKzQ0MD4+Ml18MCkrNDI+PjBdJjE2fDApPT0wOjApe2lmKCEoa1soa1tuPj4yXXwwKSs0Pj4yXXwwKSl7a1toPj4yXT1rWyhrW20+PjJdfDApKzQ0MD4+Ml07a1soa1tuPj4yXXwwKSs0Pj4yXT1rWyhrW2g+PjJdfDApKzQ+PjJdO2pbKGtbbj4+Ml18MCkrMzQ+PjFdPWpbKGtbaD4+Ml18MCkrMzQ+PjFdfDA7cT0oa1tuPj4yXXwwKSs0MnwwO2lbcT4+MF09bFtxPj4wXXxsWyhrW2g+PjJdfDApKzQyPj4wXSY5NjtqWyhrW2g+PjJdfDApKzM0Pj4xXT0wO2tbKGtbaD4+Ml18MCkrND4+Ml09MDtpZigobFsoa1toPj4yXXwwKSs0Mj4+MF0mMzJ8MCkhPTA/KGtbKGtba1soa1trW2Y+PjJdPj4yXXwwKSs0Pj4yXT4+Ml18MCkrNTI+PjJdfDApIT0wOjApa1tvPj4yXT0xO2tbZz4+Ml09a1soa1toPj4yXXwwKSs4Pj4yXTtpZihrW2c+PjJdfDApe2tbKGtbbj4+Ml18MCkrOD4+Ml09a1tnPj4yXTtrWyhrW2g+PjJdfDApKzg+PjJdPTA7a1soa1tnPj4yXXwwKSsxMj4+Ml09a1tuPj4yXX19a1soa1tmPj4yXXwwKSsxMj4+Ml09MX1lbHNle249a1tkPj4yXXwwO2I9KGtbcT4+Ml18MCkhPTA/MTgzOTE6MDtrW3A+PjJdPWtbcT4+Ml07dGcobiwxLGIscCk7Ymcoa1tkPj4yXXwwLGtbcT4+Ml18MCk7a1tvPj4yXT0xfWlbKGtbbT4+Ml18MCkrNDEwPj4wXT0wO2lmKGtbKGtbbT4+Ml18MCkrOD4+Ml18MCliaChrWyhrW20+PjJdfDApKzg+PjJdfDApfDA7JGYoa1tkPj4yXXwwLGtbKGtbbT4+Ml18MCkrNDQwPj4yXXwwKTtaaChrW20+PjJdfDApO2JnKGtbZD4+Ml18MCxrW20+PjJdfDApfXE9Y2goa1tkPj4yXXwwLGtbbz4+Ml18MCl8MDtrW28+PjJdPXE7a1tjPj4yXT1rW28+PjJdO3E9a1tjPj4yXXwwO3I9cztyZXR1cm4gcXwwfXZnKGtbZD4+Ml18MCwyMSk7cT1WZigxMjMyNzgpfDA7a1tjPj4yXT1xO3E9a1tjPj4yXXwwO3I9cztyZXR1cm4gcXwwfWZ1bmN0aW9uIHJmKGEpe2E9YXwwO3ZhciBiPTAsYz0wO2M9cjtyPXIrMTZ8MDtiPWM7a1tiPj4yXT1hO3I9YztyZXR1cm4gbFsxODY1OSsoKGxbKGtbYj4+Ml18MCkrNzQ+PjBdfDApLTEpPj4wXXwwfDB9ZnVuY3Rpb24gc2YoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MDtoPXI7cj1yKzMyfDA7ZD1oKzI4fDA7aj1oKzI0fDA7ZT1oKzh8MDtnPWgrNHwwO2Y9aDtrW2Q+PjJdPWE7a1tqPj4yXT1iO2tbZz4+Ml09MDtrW2U+PjJdPWM7ZG8gaWYoKGtbaj4+Ml18MCk9PTEpe2tbZj4+Ml09a1soa1tkPj4yXXwwKSszMzY+PjJdO2lmKGtbZj4+Ml18MCl7Yz0oa1tlPj4yXXwwKSsoNC0xKSZ+KDQtMSk7aj1rW2M+PjJdfDA7a1tlPj4yXT1jKzQ7aVsoa1trW2Y+PjJdPj4yXXwwKSsxNj4+MF09ajticmVha31lbHNle2o9VmYoMTIzNzQ5KXwwO2tbZz4+Ml09ajticmVha319ZWxzZXtqPVZmKDEyMzc1Nyl8MDtrW2c+PjJdPWp9d2hpbGUoMCk7aWYoIShrW2c+PjJdfDApKXtqPWtbZz4+Ml18MDtyPWg7cmV0dXJuIGp8MH12ZyhrW2Q+PjJdfDAsa1tnPj4yXXwwKTtqPWtbZz4+Ml18MDtyPWg7cmV0dXJuIGp8MH1mdW5jdGlvbiB0Zigpe3JldHVybiAxNzU5OH1mdW5jdGlvbiB1Zigpe3JldHVybiAxODY3N31mdW5jdGlvbiB2Zigpe3JldHVybiAzMDE1MDAxfWZ1bmN0aW9uIHdmKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wLGk9MDtpPXI7cj1yKzQ4fDA7Zz1pKzQ0fDA7Yz1pKzQwfDA7ZD1pKzI0fDA7aD1pKzE2fDA7Zj1pKzh8MDtlPWk7a1tjPj4yXT1hO2tbaD4+Ml09MDtpZihrWzU5XXwwKXtoPVZmKDEzODE5MCl8MDtrW2c+PjJdPWg7aD1rW2c+PjJdfDA7cj1pO3JldHVybiBofDB9a1tkPj4yXT1iO2RvIHN3aXRjaChrW2M+PjJdfDApe2Nhc2UgNDp7Zj0oa1tkPj4yXXwwKSsoNC0xKSZ+KDQtMSk7Yj1rW2Y+PjJdfDA7a1tkPj4yXT1mKzQ7a1sxMl09a1tiPj4yXTtrWzEzXT1rW2IrND4+Ml07a1sxNF09a1tiKzg+PjJdO2tbMTVdPWtbYisxMj4+Ml07a1sxNl09a1tiKzE2Pj4yXTtrWzE3XT1rW2IrMjA+PjJdO2tbMThdPWtbYisyND4+Ml07a1sxOV09a1tiKzI4Pj4yXTticmVha31jYXNlIDU6e2lmKCEoa1sxMl18MCkpamkoKTtmPShrW2Q+PjJdfDApKyg0LTEpJn4oNC0xKTtiPWtbZj4+Ml18MDtrW2Q+PjJdPWYrNDtrW2I+PjJdPWtbMTJdO2tbYis0Pj4yXT1rWzEzXTtrW2IrOD4+Ml09a1sxNF07a1tiKzEyPj4yXT1rWzE1XTtrW2IrMTY+PjJdPWtbMTZdO2tbYisyMD4+Ml09a1sxN107a1tiKzI0Pj4yXT1rWzE4XTtrW2IrMjg+PjJdPWtbMTldO2JyZWFrfWNhc2UgOTp7Zj0oa1tkPj4yXXwwKSsoNC0xKSZ+KDQtMSk7Yj1rW2Y+PjJdfDA7a1tkPj4yXT1mKzQ7a1syXT1iO2JyZWFrfWNhc2UgNjp7Zj0oa1tkPj4yXXwwKSsoNC0xKSZ+KDQtMSk7Yj1rW2Y+PjJdfDA7a1tkPj4yXT1mKzQ7a1s1MF09YjtiPShrW2Q+PjJdfDApKyg0LTEpJn4oNC0xKTtmPWtbYj4+Ml18MDtrW2Q+PjJdPWIrNDtrWzUxXT1mO2Y9KGtbZD4+Ml18MCkrKDQtMSkmfig0LTEpO2I9a1tmPj4yXXwwO2tbZD4+Ml09Zis0O2tbNTJdPWI7YnJlYWt9Y2FzZSA3OntmPShrW2Q+PjJdfDApKyg0LTEpJn4oNC0xKTtiPWtbZj4+Ml18MDtrW2Q+PjJdPWYrNDtrWzUzXT1iO2I9KGtbZD4+Ml18MCkrKDQtMSkmfig0LTEpO2Y9a1tiPj4yXXwwO2tbZD4+Ml09Yis0O2tbNTRdPWY7Zj0oa1tkPj4yXXwwKSsoNC0xKSZ+KDQtMSk7Yj1rW2Y+PjJdfDA7a1tkPj4yXT1mKzQ7a1s1NV09YjticmVha31jYXNlIDI0OntmPShraSgpfDApKyhsaSgpfDApKyhtaSgpfDApfDA7YT0oa1tkPj4yXXwwKSsoNC0xKSZ+KDQtMSk7Yj1rW2E+PjJdfDA7a1tkPj4yXT1hKzQ7a1tiPj4yXT1mO2JyZWFrfWNhc2UgMTQ6YnJlYWs7Y2FzZSAxNTp7a1toPj4yXT0xO2JyZWFrfWNhc2UgMTg6e2M9KGtbZD4+Ml18MCkrKDQtMSkmfig0LTEpO2U9a1tjPj4yXXwwO2tbZD4+Ml09Yys0O2M9MTE2O2Q9ZTtlPWMrNTJ8MDtkb3trW2M+PjJdPWtbZD4+Ml07Yz1jKzR8MDtkPWQrNHwwfXdoaWxlKChjfDApPChlfDApKTticmVha31jYXNlIDE5OntpZighKGtbMzFdfDApKW5pKCk7ZT0oa1tkPj4yXXwwKSsoNC0xKSZ+KDQtMSk7Yz1rW2U+PjJdfDA7a1tkPj4yXT1lKzQ7ZD0xMTY7ZT1jKzUyfDA7ZG97a1tjPj4yXT1rW2Q+PjJdO2M9Yys0fDA7ZD1kKzR8MH13aGlsZSgoY3wwKTwoZXwwKSk7YnJlYWt9Y2FzZSAxMzp7Yj0oa1tkPj4yXXwwKSsoNC0xKSZ+KDQtMSk7Zj1rW2I+PjJdfDA7a1tkPj4yXT1iKzQ7a1s5XT1mO2Y9KGtbZD4+Ml18MCkrKDQtMSkmfig0LTEpO2I9a1tmPj4yXXwwO2tbZD4+Ml09Zis0O2tbMTBdPWI7YnJlYWt9Y2FzZSAxNjp7Yj0oa1tkPj4yXXwwKSsoNC0xKSZ+KDQtMSk7Zj1rW2I+PjJdfDA7a1tkPj4yXT1iKzQ7a1s2Nl09ZjtmPShrW2Q+PjJdfDApKyg0LTEpJn4oNC0xKTtiPWtbZj4+Ml18MDtrW2Q+PjJdPWYrNDtrWzY3XT1iO2JyZWFrfWNhc2UgMTc6e2Y9KGtbZD4+Ml18MCkrKDQtMSkmfig0LTEpO2I9a1tmPj4yXXwwO2tbZD4+Ml09Zis0O2tbNV09YjticmVha31jYXNlIDIwOntmPShrW2Q+PjJdfDApKyg0LTEpJn4oNC0xKTtiPWtbZj4+Ml18MDtrW2Q+PjJdPWYrNDtrWzZdPWI7YnJlYWt9Y2FzZSAyMjp7Yj0oa1tkPj4yXXwwKSsoOC0xKSZ+KDgtMSk7YT1iO2M9a1thPj4yXXwwO2E9a1thKzQ+PjJdfDA7a1tkPj4yXT1iKzg7Yj1mO2tbYj4+Ml09YztrW2IrND4+Ml09YTtiPShrW2Q+PjJdfDApKyg4LTEpJn4oOC0xKTthPWI7Yz1rW2E+PjJdfDA7YT1rW2ErND4+Ml18MDtrW2Q+PjJdPWIrODtkPWU7a1tkPj4yXT1jO2tbZCs0Pj4yXT1hO2Q9ZTtiPWtbZCs0Pj4yXXwwO2Q9KGtbZSs0Pj4yXXwwKTwwfCgoYnwwKT4wfChifDApPT0wJihrW2Q+PjJdfDApPj4+MD4wKTtiPWU7a1tiPj4yXT1kPzA6YztrW2IrND4+Ml09ZD8wOmE7aWYoKGtbZis0Pj4yXXwwKTwwKXtiPWY7a1tiPj4yXT0wO2tbYis0Pj4yXT0wfWE9ZjtjPWtbYSs0Pj4yXXwwO2I9ZTtkPWtbYis0Pj4yXXwwO2lmKChjfDApPihkfDApfCgoY3wwKT09KGR8MCk/KGtbYT4+Ml18MCk+Pj4wPihrW2I+PjJdfDApPj4+MDowKSl7ZD1lO2E9a1tkKzQ+PjJdfDA7Yj1mO2tbYj4+Ml09a1tkPj4yXTtrW2IrND4+Ml09YX1iPWtbZSs0Pj4yXXwwO2E9MTkyO2tbYT4+Ml09a1tlPj4yXTtrW2ErND4+Ml09YjthPWY7Zj1rW2ErND4+Ml18MDtiPTE4NDtrW2I+PjJdPWtbYT4+Ml07a1tiKzQ+PjJdPWY7YnJlYWt9Y2FzZSAyNTp7Zj0oa1tkPj4yXXwwKSsoNC0xKSZ+KDQtMSk7Yj1rW2Y+PjJdfDA7a1tkPj4yXT1mKzQ7a1s1OF09YjticmVha31jYXNlIDI2OntmPShrW2Q+PjJdfDApKyg0LTEpJn4oNC0xKTtiPWtbZj4+Ml18MDtrW2Q+PjJdPWYrNDtrWzExXT1iO2JyZWFrfWRlZmF1bHQ6a1toPj4yXT0xfXdoaWxlKDApO2tbZz4+Ml09a1toPj4yXTtoPWtbZz4+Ml18MDtyPWk7cmV0dXJuIGh8MH1mdW5jdGlvbiB4ZihhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTAsZT0wLGY9MDtmPXI7cj1yKzE2fDA7Yj1mKzEyfDA7Yz1mKzh8MDtkPWYrNHwwO2U9ZjtrW2I+PjJdPWE7WWYoa1tiPj4yXXwwKTtrW2M+PjJdPTA7d2hpbGUoMSl7aWYoKGtbYz4+Ml18MCk+PShrWyhrW2I+PjJdfDApKzIwPj4yXXwwKSlicmVhaztrW2Q+PjJdPWtbKGtbKGtbYj4+Ml18MCkrMTY+PjJdfDApKyhrW2M+PjJdPDw0KSs0Pj4yXTtpZihrW2Q+PjJdfDApe2E9WmYoa1tkPj4yXXwwKXwwO2tbZT4+Ml09YTtvaShrW2U+PjJdfDApfWtbYz4+Ml09KGtbYz4+Ml18MCkrMX1yPWY7cmV0dXJuIDB9ZnVuY3Rpb24geWYoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGk9MCxqPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTA7cT1yO3I9cis2NHwwO2Q9cSs1MnwwO2U9cSs0OHwwO2Y9cSszMnwwO249cSsyOHwwO2w9cSsyNHwwO289cSsyMHwwO2c9cSsxNnwwO2g9cSsxMnwwO2o9cSs4fDA7bT1xKzR8MDtpPXE7a1tkPj4yXT1hO2tbZT4+Ml09YjtrW2Y+PjJdPWM7c3dpdGNoKGtbZT4+Ml18MCl7Y2FzZSAxZTM6e2M9KGtbZj4+Ml18MCkrKDQtMSkmfig0LTEpO3A9a1tjPj4yXXwwO2tbZj4+Ml09Yys0O2tba1soa1tkPj4yXXwwKSsxNj4+Ml0+PjJdPXA7a1tuPj4yXT0wO3A9a1tuPj4yXXwwO3I9cTtyZXR1cm4gcHwwfWNhc2UgMTAwMTp7Yz0oa1tmPj4yXXwwKSsoNC0xKSZ+KDQtMSk7cD1rW2M+PjJdfDA7a1tmPj4yXT1jKzQ7a1tsPj4yXT1wO3A9KGtbZj4+Ml18MCkrKDQtMSkmfig0LTEpO2M9a1twPj4yXXwwO2tbZj4+Ml09cCs0O2tbbz4+Ml09YztjPShrW2Y+PjJdfDApKyg0LTEpJn4oNC0xKTtwPWtbYz4+Ml18MDtrW2Y+PjJdPWMrNDtrW2c+PjJdPXA7cD1xaShrW2Q+PjJdfDAsa1tsPj4yXXwwLGtbbz4+Ml18MCxrW2c+PjJdfDApfDA7a1tuPj4yXT1wO3A9a1tuPj4yXXwwO3I9cTtyZXR1cm4gcHwwfWRlZmF1bHQ6e2tbbj4+Ml09MTtrW2g+PjJdPTA7d2hpbGUoMSl7aWYoKGtbaD4+Ml18MCk+Pj4wPj00KXtwPTE3O2JyZWFrfWlmKChrWzE1NDgrKGtbaD4+Ml08PDMpPj4yXXwwKT09KGtbZT4+Ml18MCkpYnJlYWs7a1toPj4yXT0oa1toPj4yXXwwKSsxfWlmKChwfDApPT0xNyl7cD1rW24+PjJdfDA7cj1xO3JldHVybiBwfDB9cD0oa1tmPj4yXXwwKSsoNC0xKSZ+KDQtMSk7Yz1rW3A+PjJdfDA7a1tmPj4yXT1wKzQ7a1tqPj4yXT1jO2M9KGtbZj4+Ml18MCkrKDQtMSkmfig0LTEpO3A9a1tjPj4yXXwwO2tbZj4+Ml09Yys0O2tbbT4+Ml09cDtrW2k+PjJdPWtbKGtbZD4+Ml18MCkrMjQ+PjJdO2lmKChrW2o+PjJdfDApPD0wKXtpZighKGtbaj4+Ml18MCkpe3A9KGtbZD4+Ml18MCkrMjR8MDtrW3A+PjJdPWtbcD4+Ml0mfmtbMTU0OCsoa1toPj4yXTw8MykrND4+Ml19fWVsc2V7cD0oa1tkPj4yXXwwKSsyNHwwO2tbcD4+Ml09a1twPj4yXXxrWzE1NDgrKGtbaD4+Ml08PDMpKzQ+PjJdfWlmKChrW2k+PjJdfDApIT0oa1soa1tkPj4yXXwwKSsyND4+Ml18MCkpYWkoa1tkPj4yXXwwKTtpZihrW20+PjJdfDApa1trW20+PjJdPj4yXT0oa1soa1tkPj4yXXwwKSsyND4+Ml0ma1sxNTQ4KyhrW2g+PjJdPDwzKSs0Pj4yXXwwKSE9MCYxO2tbbj4+Ml09MDtwPWtbbj4+Ml18MDtyPXE7cmV0dXJuIHB8MH19cmV0dXJuIDB9ZnVuY3Rpb24gemYoYSl7YT1hfDA7dmFyIGI9MCxjPTA7Yj1yO3I9cisxNnwwO2M9YjtrW2M+PjJdPWE7YT0oa1tjPj4yXXwwKSszMnwwO0w9a1thKzQ+PjJdfDA7cj1iO3JldHVybiBrW2E+PjJdfDB9ZnVuY3Rpb24gQWYoYSl7YT1hfDA7dmFyIGI9MCxjPTA7Yz1yO3I9cisxNnwwO2I9YztrW2I+PjJdPWE7cj1jO3JldHVybiBrWyhrW2I+PjJdfDApKzg4Pj4yXXwwfWZ1bmN0aW9uIEJmKGEpe2E9YXwwO3ZhciBiPTAsYz0wO2M9cjtyPXIrMTZ8MDtiPWM7a1tiPj4yXT1hO3I9YztyZXR1cm4ga1soa1tiPj4yXXwwKSs5Mj4+Ml18MH1mdW5jdGlvbiBDZihhKXthPWF8MDt2YXIgYj0wLGM9MDtiPXI7cj1yKzE2fDA7Yz1iO2tbYz4+Ml09YTthPXJpKGtbYz4+Ml18MCwwKXwwO3I9YjtyZXR1cm4gYXwwfWZ1bmN0aW9uIERmKGEpe2E9YXwwO3ZhciBiPTAsYz0wO2I9cjtyPXIrMTZ8MDtjPWI7a1tjPj4yXT1hO2E9cmkoa1tjPj4yXXwwLDEpfDA7cj1iO3JldHVybiBhfDB9ZnVuY3Rpb24gRWYoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTA7ZD1yO3I9cisxNnwwO2U9ZCs4fDA7Zz1kKzR8MDtmPWQ7a1tlPj4yXT1hO2tbZz4+Ml09YjtrW2Y+PjJdPWM7a1soa1tlPj4yXXwwKSszODA+PjJdPWtbZz4+Ml07a1soa1tlPj4yXXwwKSszODArND4+Ml09a1tmPj4yXTtrWyhrW2U+PjJdfDApKzM4MCs4Pj4yXT0wO2tbKGtbZT4+Ml18MCkrNDI4Pj4yXT0wO3I9ZDtyZXR1cm4gMH1mdW5jdGlvbiBGZihhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MDtlPXI7cj1yKzE2fDA7Yz1lKzR8MDtkPWU7a1tjPj4yXT1hO2tbZD4+Ml09YjthPWtbYz4+Ml18MDtpZigoa1tkPj4yXXwwKT4wKXtFZihhLDE3OCxrW2M+PjJdfDApfDA7a1soa1tjPj4yXXwwKSs0Mjg+PjJdPWtbZD4+Ml07cj1lO3JldHVybiAwfWVsc2V7RWYoYSwwLDApfDA7cj1lO3JldHVybiAwfXJldHVybiAwfWZ1bmN0aW9uIEdmKGEsYixjLGQsZSxmLGcsaCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7dmFyIGk9MCxqPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscz0wO2k9cjtyPXIrMzJ8MDtzPWkrMjh8MDtxPWkrMjR8MDtwPWkrMjB8MDtvPWkrMTZ8MDtuPWkrMTJ8MDttPWkrOHwwO2w9aSs0fDA7aj1pO2tbcz4+Ml09YTtrW3E+PjJdPWI7a1twPj4yXT1jO2tbbz4+Ml09ZDtrW24+PjJdPWU7a1ttPj4yXT1mO2tbbD4+Ml09ZztrW2o+PjJdPWg7Yj1IZihrW3M+PjJdfDAsa1txPj4yXXwwLGtbcD4+Ml18MCxrW28+PjJdfDAsa1tuPj4yXXwwLGtbbT4+Ml18MCxrW2w+PjJdfDAsa1tqPj4yXXwwLDApfDA7cj1pO3JldHVybiBifDB9ZnVuY3Rpb24gSGYoYSxiLGMsZCxlLGYsZyxoLGkpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2k9aXwwO3ZhciBqPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTA7eD1yO3I9cis0OHwwO2o9eCs0MHwwO2w9eCszNnwwO209eCszMnwwO249eCsyOHwwO289eCsyNHwwO3A9eCsyMHwwO3E9eCsxNnwwO3M9eCsxMnwwO3Q9eCs4fDA7dj14KzR8MDt1PXg7a1tqPj4yXT1hO2tbbD4+Ml09YjtrW20+PjJdPWM7a1tuPj4yXT1kO2tbbz4+Ml09ZTtrW3A+PjJdPWY7a1txPj4yXT1nO2tbcz4+Ml09aDtrW3Q+PjJdPWk7a1t2Pj4yXT0xO2tbdT4+Ml09MDtkbyBpZihrW3Q+PjJdfDApe2E9Q2goa1tqPj4yXXwwLDEyLDApfDA7a1t1Pj4yXT1hO2E9a1t0Pj4yXXwwO2lmKGtbdT4+Ml18MCl7a1soa1t1Pj4yXXwwKSs0Pj4yXT1hO2tbKGtbdT4+Ml18MCkrOD4+Ml09a1tvPj4yXTt3PTU7YnJlYWt9ZWxzZXtfYlthJjI1NV0oa1tvPj4yXXwwKTticmVha319ZWxzZSB3PTU7d2hpbGUoMCk7aWYoKCh3fDApPT01Pyh3PXRpKGtbaj4+Ml18MCxrW2w+PjJdfDAsa1ttPj4yXXwwLGtbbj4+Ml18MCxrW28+PjJdfDAsa1twPj4yXXwwLGtbcT4+Ml18MCxrW3M+PjJdfDAsa1t1Pj4yXXwwKXwwLGtbdj4+Ml09dywoa1t1Pj4yXXwwKSE9MCk6MCk/KGtba1t1Pj4yXT4+Ml18MCk9PTA6MCl7X2Jba1t0Pj4yXSYyNTVdKGtbbz4+Ml18MCk7Ymcoa1tqPj4yXXwwLGtbdT4+Ml18MCl9dz1jaChrW2o+PjJdfDAsa1t2Pj4yXXwwKXwwO2tbdj4+Ml09dztyPXg7cmV0dXJuIGtbdj4+Ml18MH1mdW5jdGlvbiBJZihhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTA7aD1yO3I9cisxNnwwO2Q9aCsxMnwwO2U9aCs4fDA7Zj1oKzR8MDtnPWg7a1tkPj4yXT1hO2tbZT4+Ml09YjtrW2Y+PjJdPWM7a1tnPj4yXT0wO2lmKCEodWkoa1tkPj4yXXwwLGtbZT4+Ml18MCxrW2Y+PjJdfDAsMSwwKXwwKSl7Yj10aShrW2Q+PjJdfDAsa1tlPj4yXXwwLGtbZj4+Ml18MCwxLDAsMjI0LDAsMCwwKXwwO2tbZz4+Ml09Yn1iPWNoKGtbZD4+Ml18MCxrW2c+PjJdfDApfDA7a1tnPj4yXT1iO3I9aDtyZXR1cm4ga1tnPj4yXXwwfWZ1bmN0aW9uIEpmKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wO2Q9cjtyPXIrMTZ8MDtlPWQrNHwwO2M9ZDtrW2U+PjJdPWE7a1tjPj4yXT1iO2E9a1tlPj4yXXwwO2lmKChrW2M+PjJdfDApPjApe0tmKGEsMTM5LGtbYz4+Ml18MCl8MDtyPWQ7cmV0dXJuIDB9ZWxzZXtLZihhLDAsMCl8MDtyPWQ7cmV0dXJuIDB9cmV0dXJuIDB9ZnVuY3Rpb24gS2YoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wO2U9cjtyPXIrMTZ8MDtmPWUrMTJ8MDtoPWUrOHwwO2c9ZSs0fDA7ZD1lO2tbZj4+Ml09YTtrW2g+PjJdPWI7a1tnPj4yXT1jO2tbZD4+Ml09a1soa1tmPj4yXXwwKSsyMjg+PjJdO2tbKGtbZj4+Ml18MCkrMjI0Pj4yXT1rW2g+PjJdO2tbKGtbZj4+Ml18MCkrMjI4Pj4yXT1rW2c+PjJdO3I9ZTtyZXR1cm4ga1tkPj4yXXwwfWZ1bmN0aW9uIExmKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MDtxPXI7cj1yKzQ4fDA7cD1xO2Y9cSszMnwwO2c9cSsyOHwwO2g9cSsyNHwwO2o9cSsyMHwwO2w9cSsxNnwwO209cSsxMnwwO289cSs4fDA7bj1xKzR8MDtrW2c+PjJdPWE7a1toPj4yXT1iO2tbaj4+Ml09YztrW2w+PjJdPWQ7a1ttPj4yXT1lO2tbbj4+Ml09MTA7aWYoa1tsPj4yXXwwKWtba1tsPj4yXT4+Ml09LTE7aWYoa1ttPj4yXXwwKWtba1ttPj4yXT4+Ml09LTE7aWYoKGtbaj4+Ml18MCk8MHwoa1tqPj4yXXwwKT4zKXtrW2Y+PjJdPTIxO2I9a1tmPj4yXXwwO3I9cTtyZXR1cm4gYnwwfWlmKChrW2g+PjJdfDApIT0wPyhpW2tbaD4+Ml0+PjBdfDApIT0wOjApe2I9eGkoa1tnPj4yXXwwLGtbaD4+Ml18MCl8MDtrW24+PjJdPWJ9aWYoKGtbbj4+Ml18MCk8MCl7a1tvPj4yXT0xO2I9a1tnPj4yXXwwO2tbcD4+Ml09a1toPj4yXTt0ZyhiLDEsMTg3MzgscCl9ZWxzZXtrWyhrW2c+PjJdfDApKzM4MCs4Pj4yXT0wO2I9eWkoa1tnPj4yXXwwLGtbbj4+Ml18MCxrW2o+PjJdfDAsa1tsPj4yXXwwLGtbbT4+Ml18MCl8MDtrW28+PjJdPWI7dmcoa1tnPj4yXXwwLGtbbz4+Ml18MCl9Yj1jaChrW2c+PjJdfDAsa1tvPj4yXXwwKXwwO2tbbz4+Ml09YjtrW2Y+PjJdPWtbbz4+Ml07Yj1rW2Y+PjJdfDA7cj1xO3JldHVybiBifDB9ZnVuY3Rpb24gTWYoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTA7Yz1yO3I9cisxNnwwO2U9Yys0fDA7ZD1jO2tbZT4+Ml09YTtrW2Q+PjJdPWI7Yj1MZihrW2U+PjJdfDAsa1tkPj4yXXwwLDAsMCwwKXwwO3I9YztyZXR1cm4gYnwwfWZ1bmN0aW9uIE5mKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MDtkPXI7cj1yKzE2fDA7Yj1kKzR8MDtjPWQ7a1tjPj4yXT1hO2lmKChrW2M+PjJdfDApIT0wPyhlaShrW2M+PjJdfDApfDApPT0wOjApe2E9VmYoMTQwMTE1KXwwO2tbYj4+Ml09YTthPWtbYj4+Ml18MDtyPWQ7cmV0dXJuIGF8MH1pZigoa1tjPj4yXXwwKSE9MD8obFsoa1tjPj4yXXwwKSs2OT4+MF18MHwwKT09MDowKXtrW2I+PjJdPWtbKGtbYz4+Ml18MCkrNTI+PjJdJmtbKGtbYz4+Ml18MCkrNTY+PjJdO2E9a1tiPj4yXXwwO3I9ZDtyZXR1cm4gYXwwfWtbYj4+Ml09NzthPWtbYj4+Ml18MDtyPWQ7cmV0dXJuIGF8MH1mdW5jdGlvbiBPZihhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaT0wO2k9cjtyPXIrMzJ8MDtkPWkrMTZ8MDtlPWkrMTJ8MDtmPWkrOHwwO2c9aSs0fDA7aD1pO2tbZT4+Ml09YTtrW2Y+PjJdPWI7a1tnPj4yXT1jO2lmKChrW2Y+PjJdfDApPDB8KGtbZj4+Ml18MCk+PTEyKXtrW2Q+PjJdPS0xO2g9a1tkPj4yXXwwO3I9aTtyZXR1cm4gaHwwfWtbaD4+Ml09a1soa1tlPj4yXXwwKSs5Nisoa1tmPj4yXTw8Mik+PjJdO2lmKChrW2c+PjJdfDApPj0wKXtpZigoa1tnPj4yXXwwKT4oa1sxNTgwKyhrW2Y+PjJdPDwyKT4+Ml18MCkpa1tnPj4yXT1rWzE1ODArKGtbZj4+Ml08PDIpPj4yXTtrWyhrW2U+PjJdfDApKzk2KyhrW2Y+PjJdPDwyKT4+Ml09a1tnPj4yXX1rW2Q+PjJdPWtbaD4+Ml07aD1rW2Q+PjJdfDA7cj1pO3JldHVybiBofDB9ZnVuY3Rpb24gUGYoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTA7Yz1yO3I9cisxNnwwO2U9Yys0fDA7ZD1jO2tbZT4+Ml09YTtrW2Q+PjJdPWI7YT1BaShrW2U+PjJdfDAsa1tkPj4yXXwwLDYsMCl8MDtyPWM7cmV0dXJuIGF8MH1mdW5jdGlvbiBRZihhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGk9MCxqPTAsbD0wLG09MCxuPTA7bD1yO3I9ciszMnwwO249bCsyOHwwO209bCsyNHwwO2U9bCsyMHwwO2Y9bCsxNnwwO2o9bCsxMnwwO2g9bCs4fDA7aT1sKzR8MDtnPWw7a1tuPj4yXT1hO2tbbT4+Ml09YjtrW2U+PjJdPWM7a1tmPj4yXT1kO2tbaj4+Ml09MTtiPUhpKGtbbj4+Ml18MCxrW20+PjJdfDApfDA7a1toPj4yXT1iO2lmKCEoa1toPj4yXXwwKSl7bj1rW2o+PjJdfDA7cj1sO3JldHVybiBufDB9d2coa1toPj4yXXwwKTtuPVpmKGtbaD4+Ml18MCl8MDtrW2k+PjJdPW47bj1PZyhrW2k+PjJdfDApfDA7a1tnPj4yXT1uO2lmKChrW2U+PjJdfDApPT03KXtrW2tbZj4+Ml0+PjJdPWtbZz4+Ml07a1tqPj4yXT0wO249a1tqPj4yXXwwO3I9bDtyZXR1cm4gbnwwfWlmKChrW2U+PjJdfDApPT0yNyl7bj1JaShrW2k+PjJdfDApfDA7a1trW2Y+PjJdPj4yXT1uO2tbaj4+Ml09MDtuPWtbaj4+Ml18MDtyPWw7cmV0dXJuIG58MH1pZigoa1tlPj4yXXwwKT09Mjgpe249Smkoa1tpPj4yXXwwKXwwO2tba1tmPj4yXT4+Ml09bjtrW2o+PjJdPTA7bj1rW2o+PjJdfDA7cj1sO3JldHVybiBufDB9aWYoa1trW2c+PjJdPj4yXXwwKXtuPUtpKGtbZz4+Ml18MCxrW2U+PjJdfDAsa1tmPj4yXXwwKXwwO2tbaj4+Ml09bjtuPWtbaj4+Ml18MDtyPWw7cmV0dXJuIG58MH1lbHNle2tbaj4+Ml09MTI7bj1rW2o+PjJdfDA7cj1sO3JldHVybiBufDB9cmV0dXJuIDB9ZnVuY3Rpb24gUmYoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MDtnPXI7cj1yKzE2fDA7Zj1nKzEyfDA7Yz1nKzh8MDtkPWcrNHwwO2U9ZztrW2M+PjJdPWE7a1tkPj4yXT1iO2lmKChrW2M+PjJdfDApPT0wfChrW2Q+PjJdfDApPT0wKXtrW2Y+PjJdPTA7Zj1rW2Y+PjJdfDA7cj1nO3JldHVybiBmfDB9Yj0oVGYoa1tjPj4yXXwwKXwwKSsxfDA7a1tjPj4yXT0oa1tjPj4yXXwwKStiO3doaWxlKDEpe2lmKCEoaVtrW2M+PjJdPj4wXXwwKSl7YT04O2JyZWFrfWI9clIoa1tjPj4yXXwwLGtbZD4+Ml18MCl8MDtrW2U+PjJdPWI7Yj0oVGYoa1tjPj4yXXwwKXwwKSsxfDA7a1tjPj4yXT0oa1tjPj4yXXwwKStiO2I9a1tjPj4yXXwwO2lmKCEoa1tlPj4yXXwwKSl7YT02O2JyZWFrfWI9KFRmKGIpfDApKzF8MDtrW2M+PjJdPShrW2M+PjJdfDApK2J9aWYoKGF8MCk9PTYpe2tbZj4+Ml09YjtmPWtbZj4+Ml18MDtyPWc7cmV0dXJuIGZ8MH1lbHNlIGlmKChhfDApPT04KXtrW2Y+PjJdPTA7Zj1rW2Y+PjJdfDA7cj1nO3JldHVybiBmfDB9cmV0dXJuIDB9ZnVuY3Rpb24gU2YoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wO2Y9cjtyPXIrMTZ8MDtoPWYrMTJ8MDtnPWYrOHwwO2Q9Zis0fDA7ZT1mO2tbaD4+Ml09YTtrW2c+PjJdPWI7a1tkPj4yXT1jO2I9UmYoa1toPj4yXXwwLGtbZz4+Ml18MCl8MDtrW2U+PjJdPWI7a1tkPj4yXT0oa1tkPj4yXXwwKSE9MCYxO2lmKGtbZT4+Ml18MCl7aD0oUWkoa1tlPj4yXXwwLGtbZD4+Ml0mMjU1KXwwKSYyNTU7cj1mO3JldHVybiBofDB9ZWxzZXtoPWtbZD4+Ml18MDtyPWY7cmV0dXJuIGh8MH1yZXR1cm4gMH1mdW5jdGlvbiBUZihhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTA7ZD1yO3I9cisxNnwwO2I9ZCs0fDA7Yz1kO2tbYz4+Ml09YTtpZighKGtbYz4+Ml18MCkpa1tiPj4yXT0wO2Vsc2V7YT0xMDczNzQxODIzJih1UihrW2M+PjJdfDApfDApO2tbYj4+Ml09YX1yPWQ7cmV0dXJuIGtbYj4+Ml18MH1mdW5jdGlvbiBVZihhKXthPWF8MDt2YXIgYj0wLGM9MDtjPXI7cj1yKzE2fDA7Yj1jO2lbYj4+MF09YTtyPWM7cmV0dXJuICgobFsxODQwMysobFtiPj4wXXwwKT4+MF18MCkmNzB8MCkhPTB8MH1mdW5jdGlvbiBWZihhKXthPWF8MDt2YXIgYj0wLGM9MDtiPXI7cj1yKzE2fDA7Yz1iO2tbYz4+Ml09YTthPSRqKDIxLGtbYz4+Ml18MCw0NTYwNil8MDtyPWI7cmV0dXJuIGF8MH1mdW5jdGlvbiBXZigpe3JldHVybiBrWzQyOF18MH1mdW5jdGlvbiBYZigpe3JldHVybiBrWzcyXXwwfWZ1bmN0aW9uIFlmKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MCxlPTA7ZT1yO3I9cisxNnwwO2I9ZSs4fDA7Yz1lKzR8MDtkPWU7a1tiPj4yXT1hO2tbYz4+Ml09MDt3aGlsZSgxKXtpZigoa1tjPj4yXXwwKT49KGtbKGtbYj4+Ml18MCkrMjA+PjJdfDApKWJyZWFrO2tbZD4+Ml09a1soa1soa1tiPj4yXXwwKSsxNj4+Ml18MCkrKGtbYz4+Ml08PDQpKzQ+PjJdO2lmKGtbZD4+Ml18MClrWyhrWyhrW2Q+PjJdfDApKzQ+PjJdfDApKzQ+PjJdPWtba1tkPj4yXT4+Ml07a1tjPj4yXT0oa1tjPj4yXXwwKSsxfXI9ZTtyZXR1cm59ZnVuY3Rpb24gWmYoYSl7YT1hfDA7dmFyIGI9MCxjPTA7Yz1yO3I9cisxNnwwO2I9YztrW2I+PjJdPWE7cj1jO3JldHVybiBrW2tbKGtbYj4+Ml18MCkrND4+Ml0+PjJdfDB9ZnVuY3Rpb24gX2YoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTA7ZT1yO3I9cisxNnwwO2M9ZSs0fDA7ZD1lO2tbYz4+Ml09YTtrW2Q+PjJdPWI7aWYoIShrW2Q+PjJdfDApKXtyPWU7cmV0dXJufXl2KGtbYz4+Ml18MCxrWyhrW2Q+PjJdfDApKzI4Pj4yXXwwKTtiZyhrW2M+PjJdfDAsa1trW2Q+PjJdPj4yXXwwKTtiZyhrW2M+PjJdfDAsa1soa1tkPj4yXXwwKSs0Pj4yXXwwKTtzdihrW2M+PjJdfDAsa1soa1tkPj4yXXwwKSsxMj4+Ml18MCk7dXYoa1tjPj4yXXwwLGtbKGtbZD4+Ml18MCkrMTY+PjJdfDApO2JnKGtbYz4+Ml18MCxrW2Q+PjJdfDApO3I9ZTtyZXR1cm59ZnVuY3Rpb24gJGYoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wO2Y9cjtyPXIrMTZ8MDtjPWYrNHwwO2Q9ZjtrW2M+PjJdPWE7a1tkPj4yXT1iO2lmKCEoa1tkPj4yXXwwKSl7cj1mO3JldHVybn1pZighKChrW2M+PjJdfDApIT0wPyhrWyhrW2M+PjJdfDApKzQ1Nj4+Ml18MCkhPTA6MCkpZT00O2lmKChlfDApPT00PyhiPShrW2Q+PjJdfDApKzM2fDAsZT0oaltiPj4xXXwwKSstMTw8MTY+PjE2LGpbYj4+MV09ZSwoZSY2NTUzNXwwKT4wKTowKXtyPWY7cmV0dXJufUNRKGtbYz4+Ml18MCxrW2Q+PjJdfDApO3I9ZjtyZXR1cm59ZnVuY3Rpb24gYWcoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTA7aD1yO3I9ciszMnwwO2U9aCsxNnwwO2Y9aCsxMnwwO2Q9aCs4fDA7Yz1oKzR8MDtnPWg7a1tlPj4yXT1hO2tbZj4+Ml09YjtZQyhrWyhrW2Y+PjJdfDApKzEwMD4+Ml18MCxtWyhrW2Y+PjJdfDApKzE0MD4+MV08PDEpO2tbZD4+Ml09a1soa1tmPj4yXXwwKSsyMDA+PjJdO3doaWxlKDEpe2lmKCEoa1tkPj4yXXwwKSlicmVhaztrW2M+PjJdPWtbKGtbZD4+Ml18MCkrMjA+PjJdO0JRKGtbZT4+Ml18MCxrW2tbZD4+Ml0+PjJdfDAsa1soa1tkPj4yXXwwKSs0Pj4yXXwwKTtiZyhrW2U+PjJdfDAsa1tkPj4yXXwwKTtrW2Q+PjJdPWtbYz4+Ml19aWYoKGtbKGtbZj4+Ml18MCkrMjA+PjJdfDApIT0zODE0Nzk1ODkpe1lDKGtbKGtbZj4+Ml18MCkrMTE2Pj4yXXwwLGpbKGtbZj4+Ml18MCkrMTY+PjFdfDApO2tbZz4+Ml09KGpbKGtbZj4+Ml18MCkrMTg+PjFdfDApLTE7d2hpbGUoMSl7YT1rW2U+PjJdfDA7aWYoKGtbZz4+Ml18MCk8MClicmVhaztiZyhhLGtbKGtbKGtbZj4+Ml18MCkrMTIwPj4yXXwwKSsoa1tnPj4yXTw8Mik+PjJdfDApO2tbZz4+Ml09KGtbZz4+Ml18MCkrLTF9YmcoYSxrWyhrW2Y+PjJdfDApKzEyMD4+Ml18MCk7Ymcoa1tlPj4yXXwwLGtbKGtbZj4+Ml18MCkrMTgwPj4yXXwwKX1CUShrW2U+PjJdfDAsa1soa1tmPj4yXXwwKSs4OD4+Ml18MCxrWyhrW2Y+PjJdfDApKzEzNj4+Ml18MCk7Ymcoa1tlPj4yXXwwLGtbKGtbZj4+Ml18MCkrMTAwPj4yXXwwKTtiZyhrW2U+PjJdfDAsa1soa1tmPj4yXXwwKSsxNzY+PjJdfDApO3I9aDtyZXR1cm59ZnVuY3Rpb24gYmcoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wO2Y9cjtyPXIrMTZ8MDtjPWYrOHwwO2Q9Zis0fDA7ZT1mO2tbYz4+Ml09YTtrW2Q+PjJdPWI7aWYoIShrW2Q+PjJdfDApKXtyPWY7cmV0dXJufWlmKGtbYz4+Ml18MCl7YT1rW2M+PjJdfDA7Yj1rW2Q+PjJdfDA7aWYoa1soa1tjPj4yXXwwKSs0NTY+PjJdfDApe0FRKGEsYik7cj1mO3JldHVybn1pZih2dShhLGIpfDApe2tbZT4+Ml09a1tkPj4yXTtrW2tbZT4+Ml0+PjJdPWtbKGtbYz4+Ml18MCkrMjU2KzI4Pj4yXTtrWyhrW2M+PjJdfDApKzI1NisyOD4+Ml09a1tlPj4yXTtlPShrW2M+PjJdfDApKzI1Nis4fDA7a1tlPj4yXT0oa1tlPj4yXXwwKSstMTtyPWY7cmV0dXJufX1VZChrW2Q+PjJdfDApO3I9ZjtyZXR1cm59ZnVuY3Rpb24gY2coKXt2YXIgYT0wLGI9MCxjPTAsZD0wLGU9MCxmPTA7Zj1yO3I9ciszMnwwO2Q9ZisxNnwwO2E9ZisxMnwwO2I9Zis4fDA7ZT1mKzR8MDtjPWY7aWYoIShrWzEyXXwwKSlqaSgpO2tbNzJdPTA7a1s3M109MDtrWzc0XT0wO2tbNzVdPTA7a1s3Nl09MDtrWzc3XT0wO2tbNzhdPTA7a1s3OV09MDtrWzcyXT04O2lmKChrWzUwXXwwKSE9MCYoa1s1MV18MCk+PTEwMCYoa1s1Ml18MCk+MCl7a1tlPj4yXT1rWzUxXSYtODtrWzUxXT1rW2U+PjJdO2tbYz4+Ml09a1s1MF07a1tiPj4yXT1rWzUyXTtrWzc3XT1rW2M+PjJdO2tbNzhdPWtbYj4+Ml07a1thPj4yXT0wO3doaWxlKDEpe2lmKChrW2E+PjJdfDApPj0oKGtbYj4+Ml18MCktMXwwKSlicmVhaztrW2tbYz4+Ml0+PjJdPShrW2M+PjJdfDApKyhrW2U+PjJdfDApO2tbYz4+Ml09a1trW2M+PjJdPj4yXTtrW2E+PjJdPShrW2E+PjJdfDApKzF9a1trW2M+PjJdPj4yXT0wO2tbNzZdPShrW2M+PjJdfDApKzR9ZWxzZXtrWzc2XT0wO2tbNTBdPTA7a1s1MV09MDtrWzUyXT0wfWlmKChrWzUzXXwwKT09MHwoa1s1NF18MCk8NTEyfChrWzU1XXwwKTw9MCl7a1s1M109MDtrWzU0XT0wfWU9YmNba1s2OD4+Ml0mMjU1XShrWzE5XXwwKXwwO2tbZD4+Ml09ZTtpZighKGtbZD4+Ml18MCkpe2U9a1tkPj4yXXwwO3I9ZjtyZXR1cm4gZXwwfTtrWzcyXT0wO2tbNzNdPTA7a1s3NF09MDtrWzc1XT0wO2tbNzZdPTA7a1s3N109MDtrWzc4XT0wO2tbNzldPTA7ZT1rW2Q+PjJdfDA7cj1mO3JldHVybiBlfDB9ZnVuY3Rpb24gZGcoKXtqUCgpO2tQKCk7bFAoNjk1Niw1Nyk7cmV0dXJufWZ1bmN0aW9uIGVnKCl7aWYoIShrWzMxXXwwKSluaSgpO3JldHVybiBiY1trWzEyND4+Ml0mMjU1XShrWzMwXXwwKXwwfWZ1bmN0aW9uIGZnKCl7dmFyIGE9MCxiPTAsYz0wLGQ9MDtjPXI7cj1yKzE2fDA7YT1jKzR8MDtiPWM7ZD1TZCgxMCl8MDtrW2I+PjJdPWQ7aWYoIShrW2I+PjJdfDApKXtrW2E+PjJdPTc7ZD1rW2E+PjJdfDA7cj1jO3JldHVybiBkfDB9ZWxzZXtVZChrW2I+PjJdfDApO2Q9Y2UoKXwwO2tbYT4+Ml09ZDtkPWtbYT4+Ml18MDtyPWM7cmV0dXJuIGR8MH1yZXR1cm4gMH1mdW5jdGlvbiBnZyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTA7aD1yO3I9cisxNnwwO2Q9aCsxMnwwO2U9aCs4fDA7Zj1oKzR8MDtnPWg7a1tkPj4yXT1hO2tbZT4+Ml09YjtrW2Y+PjJdPWM7aWYoIShrWzQyMF18MCkpe3I9aDtyZXR1cm59aWYoIShrW2Q+PjJdfDApKXtrW2Y+PjJdPTA7a1tlPj4yXT0wfWtbZT4+Ml09a1tlPj4yXSYtODtrWzQyM109a1tlPj4yXTtiPWtbZj4+Ml18MDtrWzQzMF09YjtrWzQyNF09YjtpZigoa1tmPj4yXXwwKT45MCljPTEwO2Vsc2UgYz0oKGtbZj4+Ml18MCkvMTB8MCkrMXwwO2tbNDI1XT1jO2tbNDI2XT1rW2Q+PjJdO2tbNDI5XT0wO2tbNDMxXT0wO3doaWxlKDEpe2I9a1tmPj4yXXwwO2tbZj4+Ml09YistMTtjPWtbZD4+Ml18MDtpZighYilicmVhaztrW2c+PjJdPWM7a1trW2c+PjJdPj4yXT1rWzQyOV07a1s0MjldPWtbZz4+Ml07a1tkPj4yXT0oa1tkPj4yXXwwKSsoa1tlPj4yXXwwKX1rWzQyN109YztyPWg7cmV0dXJufWZ1bmN0aW9uIGhnKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MCxlPTA7ZT1yO3I9cisxNnwwO2M9ZSs0fDA7ZD1lO2tbYz4+Ml09YTtpZighKGtbYz4+Ml18MCkpe3I9ZTtyZXR1cm59aWYoKGtbMjcyXXwwKT09KGtbYz4+Ml18MCkpe2tbMjcyXT1rWyhrW2M+PjJdfDApKzEyPj4yXTtyPWU7cmV0dXJufWlmKCEoa1syNzJdfDApKXtyPWU7cmV0dXJufWtbZD4+Ml09a1syNzJdO3doaWxlKDEpe2lmKGtbKGtbZD4+Ml18MCkrMTI+PjJdfDApYj0oa1soa1tkPj4yXXwwKSsxMj4+Ml18MCkhPShrW2M+PjJdfDApO2Vsc2UgYj0wO2E9a1soa1tkPj4yXXwwKSsxMj4+Ml18MDtpZighYilicmVhaztrW2Q+PjJdPWF9aWYoKGF8MCkhPShrW2M+PjJdfDApKXtyPWU7cmV0dXJufWtbKGtbZD4+Ml18MCkrMTI+PjJdPWtbKGtbYz4+Ml18MCkrMTI+PjJdO3I9ZTtyZXR1cm59ZnVuY3Rpb24gaWcoYSl7YT1hfDA7dmFyIGI9MCxjPTA7Yz1yO3I9cisxNnwwO2I9YztrW2I+PjJdPWE7TD0wO3I9YztyZXR1cm4ga1sxMDA4KyhrW2I+PjJdPDwyKT4+Ml18MH1mdW5jdGlvbiBqZyhhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTA7ZT1yO3I9cisxNnwwO2M9ZTtkPWUrOHwwO2Y9YztrW2Y+PjJdPWE7a1tmKzQ+PjJdPWI7Zj1jO2I9YzthPWtbYis0Pj4yXXwwO2lmKChrW2Y+PjJdfDApPT0wJihrW2YrND4+Ml18MCk9PTB8KGE+Pj4wPjB8KGF8MCk9PTAmKGtbYj4+Ml18MCk+Pj4wPj0yMTQ3NDgzMzkyKSl7a1tkPj4yXT0wO2Y9a1tkPj4yXXwwO3I9ZTtyZXR1cm4gZnwwfWlmKGtbMl18MCl7aVAoa1tjPj4yXXwwLGQpfDA7Zj1rW2Q+PjJdfDA7cj1lO3JldHVybiBmfDB9ZWxzZXtmPWJjW2tbNDg+PjJdJjI1NV0oa1tjPj4yXXwwKXwwO2tbZD4+Ml09ZjtmPWtbZD4+Ml18MDtyPWU7cmV0dXJuIGZ8MH1yZXR1cm4gMH1mdW5jdGlvbiBrZyhhKXthPWF8MDt2YXIgYj0wLGM9MDtiPXI7cj1yKzE2fDA7Yz1iO2tbYz4+Ml09YTthPWJjW2tbNjA+PjJdJjI1NV0oa1tjPj4yXXwwKXwwO3I9YjtyZXR1cm4gYXwwfWZ1bmN0aW9uIGxnKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wO2M9cjtyPXIrMTZ8MDtlPWMrNHwwO2Q9YztrW2U+PjJdPWE7a1tkPj4yXT1iO2E9MTAwOCsoa1tlPj4yXTw8Mil8MDtrW2E+PjJdPShrW2E+PjJdfDApLShrW2Q+PjJdfDApO3I9YztyZXR1cm59ZnVuY3Rpb24gbWcoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGk9MCxqPTAsbD0wLG09MDtsPXI7cj1yKzMyfDA7ZD1sKzI4fDA7ZT1sKzI0fDA7Zj1sO2k9bCsyMHwwO2g9bCsxNnwwO2c9bCsxMnwwO2o9bCs4fDA7a1tlPj4yXT1hO2E9ZjtrW2E+PjJdPWI7a1thKzQ+PjJdPWM7Yz1mO2I9a1tjPj4yXXwwO2M9a1tjKzQ+PjJdfDA7aWYoIShrW2U+PjJdfDApKXtqPWpnKGIsYyl8MDtrW2Q+PjJdPWo7aj1rW2Q+PjJdfDA7cj1sO3JldHVybiBqfDB9aWYoKGJ8MCk9PTAmKGN8MCk9PTApe1VkKGtbZT4+Ml18MCk7a1tkPj4yXT0wO2o9a1tkPj4yXXwwO3I9bDtyZXR1cm4ganwwfWE9ZjtjPWtbYSs0Pj4yXXwwO2lmKGM+Pj4wPjB8KGN8MCk9PTAmKGtbYT4+Ml18MCk+Pj4wPj0yMTQ3NDgzMzkyKXtrW2Q+PjJdPTA7aj1rW2Q+PjJdfDA7cj1sO3JldHVybiBqfDB9YT1rZyhrW2U+PjJdfDApfDA7a1tpPj4yXT1hO2E9YmNba1s2ND4+Ml0mMjU1XShrW2Y+PjJdfDApfDA7a1toPj4yXT1hO2RvIGlmKChrW2k+PjJdfDApIT0oa1toPj4yXXwwKSl7aWYoIShrWzJdfDApKXtpPWdjW2tbNTY+PjJdJjI1NV0oa1tlPj4yXXwwLGtbaD4+Ml18MCl8MDtrW2o+PjJdPWk7YnJlYWt9JGkoNSxrW2Y+PjJdfDApO2tbZz4+Ml09KGtbaD4+Ml18MCktKGtbaT4+Ml18MCk7Yz1pZygwKXwwO209TDtiPTI5NjthPWtbZz4+Ml18MDthPV9SKGtbYj4+Ml18MCxrW2IrND4+Ml18MCxhfDAsKChhfDApPDApPDwzMT4+MzF8MCl8MDtiPUw7aWYoKG18MCk+KGJ8MCl8KG18MCk9PShifDApJmM+Pj4wPj1hPj4+MCloUChrW2c+PjJdfDApO209Z2Nba1s1Nj4+Ml0mMjU1XShrW2U+PjJdfDAsa1toPj4yXXwwKXwwO2tbaj4+Ml09bTttPTI5NjtnPWtbbSs0Pj4yXXwwO2lmKChrW2o+PjJdfDApPT0wJigoZ3wwKT4wfChnfDApPT0wJihrW20+PjJdfDApPj4+MD4wKSl7aFAoa1tmPj4yXXwwKTttPWdjW2tbNTY+PjJdJjI1NV0oa1tlPj4yXXwwLGtbaD4+Ml18MCl8MDtrW2o+PjJdPW19aWYoa1tqPj4yXXwwKXttPWtnKGtbaj4+Ml18MCl8MDtrW2g+PjJdPW07YWooMCwoa1toPj4yXXwwKS0oa1tpPj4yXXwwKXwwKX19ZWxzZSBrW2o+PjJdPWtbZT4+Ml07d2hpbGUoMCk7a1tkPj4yXT1rW2o+PjJdO209a1tkPj4yXXwwO3I9bDtyZXR1cm4gbXwwfWZ1bmN0aW9uIG5nKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxsPTAsbT0wO2Y9cjtyPXIrMzJ8MDtnPWYrMTZ8MDtsPWYrMTJ8MDttPWYrOHwwO2o9Zis0fDA7aD1mO2tbZz4+Ml09YTtrW2w+PjJdPWI7a1ttPj4yXT1jO2tbaj4+Ml09ZDtrW2g+PjJdPWU7Yz1rW20+PjJdfDA7a1soa1tnPj4yXXwwKSs0Pj4yXT1jO2tbKGtbZz4+Ml18MCkrOD4+Ml09YztrW2tbZz4+Ml0+PjJdPWtbbD4+Ml07a1soa1tnPj4yXXwwKSsxMj4+Ml09MDtrWyhrW2c+PjJdfDApKzE2Pj4yXT1rW2o+PjJdO2tbKGtbZz4+Ml18MCkrMjA+PjJdPWtbaD4+Ml07aVsoa1tnPj4yXXwwKSsyND4+MF09MDtpWyhrW2c+PjJdfDApKzI1Pj4wXT0wO3I9ZjtyZXR1cm59ZnVuY3Rpb24gb2coYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAuMCxlPTAsZj0wLGc9MCxoPTAsaj0wLG09MCxuPTAsbz0wLHE9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MCxFPTAsRj0wLEc9MCxIPTAsST0wLEo9MCxLPTAsTT0wLE49MCxPPTAsUD0wLFE9MCxSPTAsUz0wLFQ9MCxVPTAsVj0wLFc9MCxYPTAsWT0wLFo9MCxfPTAsJD0wLGFhPTAsYmE9MCxjYT0wLGRhPTAsZWE9MCxmYT0wLGdhPTAsaGE9MCxpYT0wLGphPTAsa2E9MCxsYT0wLG1hPTAsbmE9MCxvYT0wLHBhPTAscWE9MCxyYT0wLHNhPTA7cmE9cjtyPXIrMjcyfDA7ZT1yYSsxNzZ8MDtmPXJhKzE3MnwwO2c9cmErMTY4fDA7bz1yYSsxNjR8MDtuPXJhKzE2MHwwO2FhPXJhKzE1NnwwO1E9cmErMTUyfDA7Sj1yYSsxNDh8MDtqYT1yYSsxNDR8MDtCPXJhKzI2OHwwO0U9cmErMjY3fDA7ej1yYSsyNjZ8MDt4PXJhKzI2NXwwO3k9cmErMjY0fDA7Rz1yYSsyNjN8MDtDPXJhKzI2MnwwO0Q9cmErMjYxfDA7dD1yYSsyNjB8MDtuYT1yYSsyNTl8MDtoPXJhKzI1OHwwO2hhPXJhKzI1N3wwO2JhPXJhKzI1NnwwO1I9cmErMzJ8MDtlYT1yYSsyNHwwO0s9cmErMTQwfDA7cGE9cmErMTM2fDA7VD1yYSsxMzJ8MDtvYT1yYSsxMjh8MDt3PXJhKzEyNHwwO3U9cmErMTIwfDA7Vz1yYSsxMTZ8MDtmYT1yYSsxNnwwO0E9cmErMjU1fDA7Rj1yYSsyNTR8MDtYPXJhKzExMnwwO209cmErMTg0fDA7a2E9cmErMTA4fDA7Y2E9cmErMTA0fDA7aWE9cmErOHwwO2xhPXJhKzEwMHwwO3M9cmErOTZ8MDtqPXJhKzE4M3wwOyQ9cmErOTJ8MDttYT1yYSsxODJ8MDtnYT1yYTtIPXJhKzg4fDA7VT1yYSs4NHwwO0k9cmErODB8MDtOPXJhKzc2fDA7Tz1yYSs3MnwwO1M9cmErNjh8MDtNPXJhKzY0fDA7Vj1yYSs2MHwwO3E9cmErMTgxfDA7ZGE9cmErMTgwfDA7dj1yYSs1NnwwO189cmErNTJ8MDtaPXJhKzQ4fDA7UD1yYSs0NHwwO1k9cmErNDB8MDtrW2U+PjJdPWE7a1tmPj4yXT1iO2tbZz4+Ml09YztpW25hPj4wXT0xNjtrW29hPj4yXT0wO2tbWD4+Ml09MDtrW24+PjJdPTA7aWYoaVsoa1tlPj4yXXwwKSsyNT4+MF18MCl7YT1sWyhrW2U+PjJdfDApKzI1Pj4wXSYyO2lbaD4+MF09YTtpZihhJjI1NSl7Yj1rW2c+PjJdfDA7Yz0oa1tiPj4yXXwwKSsoNC0xKSZ+KDQtMSk7YT1rW2M+PjJdfDA7a1tiPj4yXT1jKzQ7a1tYPj4yXT1hfWlbaGE+PjBdPWxbKGtbZT4+Ml18MCkrMjU+PjBdJjF9ZWxzZXtpW2hhPj4wXT0wO2lbaD4+MF09MH1hOndoaWxlKDEpe2E9aVtrW2Y+PjJdPj4wXXwwO2tbbz4+Ml09YTtpZighYSl7cWE9MjY4O2JyZWFrfWlmKChrW28+PjJdfDApIT0zNyl7a1tuPj4yXT1rW2Y+PjJdO2Rve2tbZj4+Ml09KGtbZj4+Ml18MCkrMTtpZighKGlba1tmPj4yXT4+MF18MCkpYnJlYWt9d2hpbGUoKGlba1tmPj4yXT4+MF18MCkhPTM3KTtDQShrW2U+PjJdfDAsa1tuPj4yXXwwLChrW2Y+PjJdfDApLShrW24+PjJdfDApfDApO2lmKCEoaVtrW2Y+PjJdPj4wXXwwKSl7cWE9MjY4O2JyZWFrfX1hPShrW2Y+PjJdfDApKzF8MDtrW2Y+PjJdPWE7YT1pW2E+PjBdfDA7a1tvPj4yXT1hO2lmKCFhKXtxYT0xMzticmVha31pW0c+PjBdPTA7aVt5Pj4wXT0wO2lbeD4+MF09MDtpW3o+PjBdPTA7aVtFPj4wXT0wO2lbQj4+MF09MDtpW3Q+PjBdPTA7ZG97c3dpdGNoKGtbbz4+Ml18MCl7Y2FzZSA0NTp7aVtCPj4wXT0xO2JyZWFrfWNhc2UgNDM6e2lbRT4+MF09MTticmVha31jYXNlIDMyOntpW3o+PjBdPTE7YnJlYWt9Y2FzZSAzNTp7aVt4Pj4wXT0xO2JyZWFrfWNhc2UgMzM6e2lbeT4+MF09MTticmVha31jYXNlIDQ4OntpW0c+PjBdPTE7YnJlYWt9ZGVmYXVsdDppW3Q+PjBdPTF9aWYoaVt0Pj4wXXwwKWJyZWFrO2E9KGtbZj4+Ml18MCkrMXwwO2tbZj4+Ml09YTthPWlbYT4+MF18MDtrW28+PjJdPWF9d2hpbGUoKGF8MCkhPTApO2lmKChrW28+PjJdfDApPT00Mil7aWYoaVtoPj4wXXwwKXthPWNQKGtbWD4+Ml18MCl8MDtrW2phPj4yXT1hfWVsc2V7Yj1rW2c+PjJdfDA7Yz0oa1tiPj4yXXwwKSsoNC0xKSZ+KDQtMSk7YT1rW2M+PjJdfDA7a1tiPj4yXT1jKzQ7a1tqYT4+Ml09YX1pZigoa1tqYT4+Ml18MCk8MCl7aVtCPj4wXT0xO2tbamE+PjJdPShrW2phPj4yXXwwKT49LTIxNDc0ODM2NDc/MC0oa1tqYT4+Ml18MCl8MDowfWE9KGtbZj4+Ml18MCkrMXwwO2tbZj4+Ml09YTtrW28+PjJdPWlbYT4+MF19ZWxzZXtrW2thPj4yXT0wO3doaWxlKDEpe2M9a1trYT4+Ml18MDtpZighKChrW28+PjJdfDApPj00OD8oa1tvPj4yXXwwKTw9NTc6MCkpYnJlYWs7a1trYT4+Ml09KGMqMTB8MCkrKGtbbz4+Ml18MCktNDg7YT0oa1tmPj4yXXwwKSsxfDA7a1tmPj4yXT1hO2tbbz4+Ml09aVthPj4wXX1rW2phPj4yXT1jJjIxNDc0ODM2NDd9ZG8gaWYoKGtbbz4+Ml18MCk9PTQ2KXthPShrW2Y+PjJdfDApKzF8MDtrW2Y+PjJdPWE7a1tvPj4yXT1pW2E+PjBdO2lmKChrW28+PjJdfDApIT00Mil7a1tjYT4+Ml09MDt3aGlsZSgxKXtjPWtbY2E+PjJdfDA7aWYoISgoa1tvPj4yXXwwKT49NDg/KGtbbz4+Ml18MCk8PTU3OjApKWJyZWFrO2tbY2E+PjJdPShjKjEwfDApKyhrW28+PjJdfDApLTQ4O2E9KGtbZj4+Ml18MCkrMXwwO2tbZj4+Ml09YTtrW28+PjJdPWlbYT4+MF19a1thYT4+Ml09YyYyMTQ3NDgzNjQ3O2JyZWFrfWlmKGlbaD4+MF18MCl7YT1jUChrW1g+PjJdfDApfDA7a1thYT4+Ml09YX1lbHNle2I9a1tnPj4yXXwwO2M9KGtbYj4+Ml18MCkrKDQtMSkmfig0LTEpO2E9a1tjPj4yXXwwO2tbYj4+Ml09Yys0O2tbYWE+PjJdPWF9YT0oa1tmPj4yXXwwKSsxfDA7a1tmPj4yXT1hO2tbbz4+Ml09aVthPj4wXTtpZigoa1thYT4+Ml18MCk8MClrW2FhPj4yXT0oa1thYT4+Ml18MCk+PS0yMTQ3NDgzNjQ3PzAtKGtbYWE+PjJdfDApfDA6LTF9ZWxzZSBrW2FhPj4yXT0tMTt3aGlsZSgwKTtkbyBpZigoa1tvPj4yXXwwKT09MTA4KXtpW0M+PjBdPTE7YT0oa1tmPj4yXXwwKSsxfDA7a1tmPj4yXT1hO2tbbz4+Ml09aVthPj4wXTtpZigoa1tvPj4yXXwwKT09MTA4KXtpW0Q+PjBdPTE7YT0oa1tmPj4yXXwwKSsxfDA7a1tmPj4yXT1hO2tbbz4+Ml09aVthPj4wXTticmVha31lbHNle2lbRD4+MF09MDticmVha319ZWxzZXtpW0Q+PjBdPTA7aVtDPj4wXT0wfXdoaWxlKDApO2tbSz4+Ml09NDQ2MTU7aVtuYT4+MF09MTY7a1tKPj4yXT0wO3doaWxlKDEpe2lmKChrW0o+PjJdfDApPj0yMylicmVhaztjPWtbSj4+Ml18MDtpZigoa1tvPj4yXXwwKT09KGlbNDQ2MTUrKChrW0o+PjJdfDApKjZ8MCk+PjBdfDApKXtxYT01NjticmVha31rW0o+PjJdPWMrMX1pZigocWF8MCk9PTU2KXtxYT0wO2tbSz4+Ml09NDQ2MTUrKGMqNnwwKTtpZigobFtoYT4+MF18MCk9PTA/KGxbKGtbSz4+Ml18MCkrMj4+MF0mMnwwKSE9MDowKXtxYT0yNjg7YnJlYWt9aVtuYT4+MF09aVsoa1tLPj4yXXwwKSszPj4wXXwwfWI6ZG8gc3dpdGNoKGxbbmE+PjBdfDApe2Nhc2UgMTM6e2lbRD4+MF09MDtpW0M+PjBdPTE7cWE9NjI7YnJlYWt9Y2FzZSAwOmNhc2UgMTU6e3FhPTYyO2JyZWFrfWNhc2UgMzpjYXNlIDI6Y2FzZSAxOntpZihpW2g+PjBdfDApe2Q9K2RQKGtbWD4+Ml18MCk7cFtlYT4+M109ZH1lbHNle2E9a1tnPj4yXXwwO2I9KGtbYT4+Ml18MCkrKDgtMSkmfig4LTEpO2Q9K3BbYj4+M107a1thPj4yXT1iKzg7cFtlYT4+M109ZH1pZigoa1thYT4+Ml18MCk8MClrW2FhPj4yXT02O2RvIGlmKCEoK3BbZWE+PjNdPDAuMCkpe2lmKGlbRT4+MF18MCl7aVtiYT4+MF09NDM7YnJlYWt9aWYoaVt6Pj4wXXwwKXtpW2JhPj4wXT0zMjticmVha31lbHNle2lbYmE+PjBdPTA7YnJlYWt9fWVsc2V7cFtlYT4+M109LStwW2VhPj4zXTtpW2JhPj4wXT00NX13aGlsZSgwKTtpZigobFtuYT4+MF18MCk9PTMmKGtbYWE+PjJdfDApPjApa1thYT4+Ml09KGtbYWE+PjJdfDApKy0xO2tbSj4+Ml09a1thYT4+Ml0mNDA5NTtwW2ZhPj4zXT0uNTt3aGlsZSgxKXtpZigoa1tKPj4yXXwwKTw9MClicmVhaztrW0o+PjJdPShrW0o+PjJdfDApKy0xO3BbZmE+PjNdPStwW2ZhPj4zXSouMX1pZigobFtuYT4+MF18MCk9PTEpcFtlYT4+M109K3BbZWE+PjNdKyArcFtmYT4+M107a1t3Pj4yXT0wO2lmKEFHKCtwW2VhPj4zXSl8MCl7a1tuPj4yXT00NDgwMjtrW1E+PjJdPTM7YnJlYWsgYn1pZigrcFtlYT4+M10+MC4wKXtwW2dhPj4zXT0xLjA7d2hpbGUoMSl7aWYoISgrcFtlYT4+M10+PStwW2dhPj4zXSoxLmUrMTAwPyhrW3c+PjJdfDApPD0zNTA6MCkpYnJlYWs7cFtnYT4+M109K3BbZ2E+PjNdKjEuZSsxMDA7a1t3Pj4yXT0oa1t3Pj4yXXwwKSsxMDB9d2hpbGUoMSl7aWYoISgrcFtlYT4+M10+PStwW2dhPj4zXSoxLjBlMTA/KGtbdz4+Ml18MCk8PTM1MDowKSlicmVhaztwW2dhPj4zXT0rcFtnYT4+M10qMS4wZTEwO2tbdz4+Ml09KGtbdz4+Ml18MCkrMTB9d2hpbGUoMSl7ZD0rcFtnYT4+M107aWYoISgrcFtlYT4+M10+PStwW2dhPj4zXSoxMC4wPyhrW3c+PjJdfDApPD0zNTA6MCkpYnJlYWs7cFtnYT4+M109ZCoxMC4wO2tbdz4+Ml09KGtbdz4+Ml18MCkrMX1wW2VhPj4zXT0rcFtlYT4+M10vZDt3aGlsZSgxKXtpZighKCtwW2VhPj4zXTwxLjBlLTA4KSlicmVhaztwW2VhPj4zXT0rcFtlYT4+M10qMS4wZTg7a1t3Pj4yXT0oa1t3Pj4yXXwwKS04fXdoaWxlKDEpe2lmKCEoK3BbZWE+PjNdPDEuMCkpYnJlYWs7cFtlYT4+M109K3BbZWE+PjNdKjEwLjA7a1t3Pj4yXT0oa1t3Pj4yXXwwKSstMX1pZigoa1t3Pj4yXXwwKT4zNTApe2tbbj4+Ml09bTtpW20+PjBdPWlbYmE+PjBdfDA7YT1tKygoaVtiYT4+MF18MCkhPTAmMSl8MDtpW2E+PjBdPWlbNDQ4MDZdfDA7aVthKzE+PjBdPWlbNDQ4MDddfDA7aVthKzI+PjBdPWlbNDQ4MDhdfDA7aVthKzM+PjBdPWlbNDQ4MDldfDA7a1tRPj4yXT0zKygoaVtiYT4+MF18MCkhPTAmMSk7YnJlYWsgYn19a1tuPj4yXT1tO2lmKChsW25hPj4wXXwwKSE9MT8ocFtlYT4+M109K3BbZWE+PjNdKyArcFtmYT4+M10sK3BbZWE+PjNdPj0xMC4wKTowKXtwW2VhPj4zXT0rcFtlYT4+M10qLjE7a1t3Pj4yXT0oa1t3Pj4yXXwwKSsxfWM6ZG8gaWYoKGxbbmE+PjBdfDApPT0zKXtpW0Y+PjBdPSgoaVt4Pj4wXXwwKSE9MF4xKSYxO2RvIGlmKChrW3c+PjJdfDApPj0tNCl7aWYoKGtbdz4+Ml18MCk+KGtbYWE+PjJdfDApKWJyZWFrO2tbYWE+PjJdPShrW2FhPj4yXXwwKS0oa1t3Pj4yXXwwKTtpW25hPj4wXT0xO2JyZWFrIGN9d2hpbGUoMCk7aVtuYT4+MF09Mn1lbHNlIGlbRj4+MF09aVt5Pj4wXXwwO3doaWxlKDApO2lmKChsW25hPj4wXXwwKT09MilrW3U+PjJdPTA7ZWxzZSBrW3U+PjJdPWtbdz4+Ml07YT0oa1t1Pj4yXXwwKT4wP2tbdT4+Ml18MDowO2I9a1thYT4+Ml18MDtiPSRSKGF8MCwoKGF8MCk8MCk8PDMxPj4zMXwwLGJ8MCwoKGJ8MCk8MCk8PDMxPj4zMXwwKXwwO2E9a1tqYT4+Ml18MDthPSRSKGJ8MCxMfDAsYXwwLCgoYXwwKTwwKTw8MzE+PjMxfDApfDA7Yj1MO2lmKChifDApPjB8KGJ8MCk9PTAmYT4+PjA+NTU/KGE9KGtbdT4+Ml18MCk+MD9rW3U+PjJdfDA6MCxiPWtbYWE+PjJdfDAsYj0kUihhfDAsKChhfDApPDApPDwzMT4+MzF8MCxifDAsKChifDApPDApPDwzMT4+MzF8MCl8MCxhPWtbamE+PjJdfDAsYT0kUihifDAsTHwwLGF8MCwoKGF8MCk8MCk8PDMxPj4zMXwwKXwwLGE9JFIoYXwwLEx8MCwxNSwwKXwwLGE9amcoYSxMKXwwLGtbb2E+PjJdPWEsa1tuPj4yXT1hLChrW24+PjJdfDApPT0wKTowKXtxYT0xNjE7YnJlYWsgYX1rW3BhPj4yXT1rW24+PjJdO2tbVz4+Ml09MTYrKChsW3k+PjBdfDApKjEwfDApO2lbQT4+MF09KChrW2FhPj4yXXwwKT4wPzE6MCl8bFt4Pj4wXXxsW3k+PjBdO2lmKGlbYmE+PjBdfDApe2I9aVtiYT4+MF18MDthPWtbbj4+Ml18MDtrW24+PjJdPWErMTtpW2E+PjBdPWJ9ZDpkbyBpZigoa1t1Pj4yXXwwKTwwKXthPWtbbj4+Ml18MDtrW24+PjJdPWErMTtpW2E+PjBdPTQ4fWVsc2Ugd2hpbGUoMSl7aWYoKGtbdT4+Ml18MCk8MClicmVhayBkO2I9ZVAoZWEsVyl8MDthPWtbbj4+Ml18MDtrW24+PjJdPWErMTtpW2E+PjBdPWI7a1t1Pj4yXT0oa1t1Pj4yXXwwKSstMX13aGlsZSgwKTtpZihpW0E+PjBdfDApe2E9a1tuPj4yXXwwO2tbbj4+Ml09YSsxO2lbYT4+MF09NDZ9a1t1Pj4yXT0oa1t1Pj4yXXwwKSsxO3doaWxlKDEpe2lmKChrW3U+PjJdfDApPj0wKWJyZWFrO2E9a1tuPj4yXXwwO2tbbj4+Ml09YSsxO2lbYT4+MF09NDg7a1thYT4+Ml09KGtbYWE+PjJdfDApKy0xO2tbdT4+Ml09KGtbdT4+Ml18MCkrMX13aGlsZSgxKXthPWtbYWE+PjJdfDA7a1thYT4+Ml09YSstMTtpZigoYXwwKTw9MClicmVhaztiPWVQKGVhLFcpfDA7YT1rW24+PjJdfDA7a1tuPj4yXT1hKzE7aVthPj4wXT1ifWRvIGlmKGxbRj4+MF18MCl7aWYoIShsW0E+PjBdfDApKWJyZWFrO3doaWxlKDEpe2M9KGtbbj4+Ml18MCkrLTF8MDtpZigoaVsoa1tuPj4yXXwwKSstMT4+MF18MCkhPTQ4KWJyZWFrO2tbbj4+Ml09YztpW2M+PjBdPTB9aWYoKGlbYz4+MF18MCkhPTQ2KWJyZWFrO2M9a1tuPj4yXXwwO2lmKGlbeT4+MF18MCl7a1tuPj4yXT1jKzE7aVtjPj4wXT00ODticmVha31lbHNle2E9YystMXwwO2tbbj4+Ml09YTtpW2E+PjBdPTA7YnJlYWt9fXdoaWxlKDApO2lmKChsW25hPj4wXXwwKT09Mil7Yz1pWzQ0NzYyKyhsWyhrW0s+PjJdfDApKzQ+PjBdfDApPj4wXXwwO2E9a1tuPj4yXXwwO2tbbj4+Ml09YSsxO2lbYT4+MF09YzthPShrW3c+PjJdfDApPDA7Yz1rW24+PjJdfDA7a1tuPj4yXT1jKzE7aWYoYSl7aVtjPj4wXT00NTtrW3c+PjJdPTAtKGtbdz4+Ml18MCl9ZWxzZSBpW2M+PjBdPTQzO2lmKChrW3c+PjJdfDApPj0xMDApe2I9KChrW3c+PjJdfDApLzEwMHwwKSs0OCYyNTU7YT1rW24+PjJdfDA7a1tuPj4yXT1hKzE7aVthPj4wXT1iO2tbdz4+Ml09KGtbdz4+Ml18MCklMTAwfDB9YT0oKGtbdz4+Ml18MCkvMTB8MCkrNDgmMjU1O2I9a1tuPj4yXXwwO2tbbj4+Ml09YisxO2lbYj4+MF09YTtiPSgoa1t3Pj4yXXwwKSUxMHwwKSs0OCYyNTU7YT1rW24+PjJdfDA7a1tuPj4yXT1hKzE7aVthPj4wXT1ifWlba1tuPj4yXT4+MF09MDtrW1E+PjJdPShrW24+PjJdfDApLShrW3BhPj4yXXwwKTtrW24+PjJdPWtbcGE+PjJdO2lmKChsW0c+PjBdfDApPT0wfChpW0I+PjBdfDApIT0wKWJyZWFrIGI7aWYoKGtbUT4+Ml18MCk+PShrW2phPj4yXXwwKSlicmVhayBiO2tbVT4+Ml09KGtbamE+PjJdfDApLShrW1E+PjJdfDApO2tbSD4+Ml09a1tqYT4+Ml07d2hpbGUoMSl7aWYoKGtbSD4+Ml18MCk8KGtbVT4+Ml18MCkpYnJlYWs7aVsoa1tuPj4yXXwwKSsoa1tIPj4yXXwwKT4+MF09aVsoa1tuPj4yXXwwKSsoKGtbSD4+Ml18MCktKGtbVT4+Ml18MCkpPj4wXXwwO2tbSD4+Ml09KGtbSD4+Ml18MCkrLTF9a1tIPj4yXT0oaVtiYT4+MF18MCkhPTAmMTt3aGlsZSgxKXthPWtbVT4+Ml18MDtrW1U+PjJdPWErLTE7aWYoIWEpYnJlYWs7YT1rW0g+PjJdfDA7a1tIPj4yXT1hKzE7aVsoa1tuPj4yXXwwKSthPj4wXT00OH1rW1E+PjJdPWtbamE+PjJdO2JyZWFrfWNhc2UgNDp7aWYoIShpW2g+PjBdfDApKXtiPWtbKGtbZT4+Ml18MCkrMTI+PjJdfDA7Yz1rW2c+PjJdfDA7c2E9KGtbYz4+Ml18MCkrKDQtMSkmfig0LTEpO2E9a1tzYT4+Ml18MDtrW2M+PjJdPXNhKzQ7a1thPj4yXT1ifWtbamE+PjJdPTA7a1tRPj4yXT0wO2JyZWFrfWNhc2UgNzp7aVttPj4wXT0zNztrW24+PjJdPW07a1tRPj4yXT0xO2JyZWFrfWNhc2UgODp7aWYoaVtoPj4wXXwwKXtzYT1mUChrW1g+PjJdfDApfDA7a1tuPj4yXT1zYTtpZihrW24+PjJdfDApYz1pW2tbbj4+Ml0+PjBdfDA7ZWxzZSBjPTA7a1tvPj4yXT1jfWVsc2V7YT1rW2c+PjJdfDA7Yj0oa1thPj4yXXwwKSsoNC0xKSZ+KDQtMSk7c2E9a1tiPj4yXXwwO2tbYT4+Ml09Yis0O2tbbz4+Ml09c2F9aWYoKGtbYWE+PjJdfDApPjEpe2tbamE+PjJdPShrW2phPj4yXXwwKS0oKGtbYWE+PjJdfDApLTEpO2lmKCEoKGtbamE+PjJdfDApPD0xfChpW0I+PjBdfDApIT0wKSl7Z1Aoa1tlPj4yXXwwLChrW2phPj4yXXwwKS0xfDAsMzIpO2tbamE+PjJdPTB9Z1Aoa1tlPj4yXXwwLChrW2FhPj4yXXwwKS0xfDAsa1tvPj4yXSYyNTUpfWtbUT4+Ml09MTtpW20+PjBdPWtbbz4+Ml07a1tuPj4yXT1tO2JyZWFrfWNhc2UgNjpjYXNlIDU6e2lmKGlbaD4+MF18MCl7c2E9ZlAoa1tYPj4yXXwwKXwwO2tbbj4+Ml09c2E7aVtuYT4+MF09NX1lbHNle2E9a1tnPj4yXXwwO2I9KGtbYT4+Ml18MCkrKDQtMSkmfig0LTEpO3NhPWtbYj4+Ml18MDtrW2E+PjJdPWIrNDtrW24+PjJdPXNhfWlmKGtbbj4+Ml18MCl7aWYoKGxbbmE+PjBdfDApPT02KWtbb2E+PjJdPWtbbj4+Ml19ZWxzZSBrW24+PjJdPTE4NDAyO2lmKChrW2FhPj4yXXwwKTwwKXtzYT1UZihrW24+PjJdfDApfDA7a1tRPj4yXT1zYTticmVhayBifWtbUT4+Ml09MDt3aGlsZSgxKXtpZigoa1tRPj4yXXwwKT49KGtbYWE+PjJdfDApKWJyZWFrIGI7aWYoIShpWyhrW24+PjJdfDApKyhrW1E+PjJdfDApPj4wXXwwKSlicmVhayBiO2tbUT4+Ml09KGtbUT4+Ml18MCkrMX19Y2FzZSAxNDpjYXNlIDEwOmNhc2UgOTp7aVtkYT4+MF09KGxbbmE+PjBdfDApPT0xND8zNDozOTtpZihpW2g+PjBdfDApe3NhPWZQKGtbWD4+Ml18MCl8MDtrW3Y+PjJdPXNhfWVsc2V7YT1rW2c+PjJdfDA7Yj0oa1thPj4yXXwwKSsoNC0xKSZ+KDQtMSk7c2E9a1tiPj4yXXwwO2tbYT4+Ml09Yis0O2tbdj4+Ml09c2F9a1tNPj4yXT0oa1t2Pj4yXXwwKT09MCYxO2lmKGtbTT4+Ml18MClrW3Y+PjJdPShsW25hPj4wXXwwKT09MTA/Mzk2OTE6NDQ4MTA7a1tPPj4yXT1rW2FhPj4yXTtrW1M+PjJdPTA7a1tJPj4yXT0wO3doaWxlKDEpe2lmKCEoa1tPPj4yXXwwKSlicmVhaztzYT1pWyhrW3Y+PjJdfDApKyhrW0k+PjJdfDApPj4wXXwwO2lbcT4+MF09c2E7aWYoIShzYTw8MjQ+PjI0KSlicmVhaztpZigoaVtxPj4wXXwwKT09KGlbZGE+PjBdfDApKWtbUz4+Ml09KGtbUz4+Ml18MCkrMTtrW0k+PjJdPShrW0k+PjJdfDApKzE7a1tPPj4yXT0oa1tPPj4yXXwwKSstMX1pZihrW00+PjJdfDApYz0wO2Vsc2UgYz0obFtuYT4+MF18MCk9PTEwO2tbVj4+Ml09YyYxO2tbUz4+Ml09KGtbUz4+Ml18MCkrKChrW0k+PjJdfDApKzMpO2lmKChrW1M+PjJdfDApPjcwKXtzYT1rW1M+PjJdfDA7c2E9amcoc2EsKChzYXwwKTwwKTw8MzE+PjMxKXwwO2tbb2E+PjJdPXNhO2tbbj4+Ml09c2E7aWYoIShrW24+PjJdfDApKXtxYT0yNDE7YnJlYWsgYX19ZWxzZSBrW24+PjJdPW07a1tOPj4yXT0wO2lmKGtbVj4+Ml18MCl7YT1pW2RhPj4wXXwwO3NhPWtbTj4+Ml18MDtrW04+PjJdPXNhKzE7aVsoa1tuPj4yXXwwKStzYT4+MF09YX1rW08+PjJdPWtbST4+Ml07a1tJPj4yXT0wO3doaWxlKDEpe2lmKChrW0k+PjJdfDApPj0oa1tPPj4yXXwwKSlicmVhazthPWlbKGtbdj4+Ml18MCkrKGtbST4+Ml18MCk+PjBdfDA7aVtxPj4wXT1hO3NhPWtbTj4+Ml18MDtrW04+PjJdPXNhKzE7aVsoa1tuPj4yXXwwKStzYT4+MF09YTtpZigoaVtxPj4wXXwwKT09KGlbZGE+PjBdfDApKXthPWlbcT4+MF18MDtzYT1rW04+PjJdfDA7a1tOPj4yXT1zYSsxO2lbKGtbbj4+Ml18MCkrc2E+PjBdPWF9a1tJPj4yXT0oa1tJPj4yXXwwKSsxfWlmKGtbVj4+Ml18MCl7YT1pW2RhPj4wXXwwO3NhPWtbTj4+Ml18MDtrW04+PjJdPXNhKzE7aVsoa1tuPj4yXXwwKStzYT4+MF09YX1pWyhrW24+PjJdfDApKyhrW04+PjJdfDApPj4wXT0wO2tbUT4+Ml09a1tOPj4yXTticmVha31jYXNlIDExOnthPWtbZz4+Ml18MDtiPShrW2E+PjJdfDApKyg0LTEpJn4oNC0xKTtzYT1rW2I+PjJdfDA7a1thPj4yXT1iKzQ7a1tfPj4yXT1zYTtpZigoa1tfPj4yXXwwKSE9MD8oa1soa1tfPj4yXXwwKSs0Pj4yXXwwKSE9MDowKUNBKGtbZT4+Ml18MCxrW2tbXz4+Ml0+PjJdfDAsa1soa1tfPj4yXXwwKSs0Pj4yXXwwKTtrW2phPj4yXT0wO2tbUT4+Ml09MDticmVha31jYXNlIDEyOntiPWtbZz4+Ml18MDtzYT0oa1tiPj4yXXwwKSsoNC0xKSZ+KDQtMSk7YT1rW3NhPj4yXXwwO2tbYj4+Ml09c2ErNDtrW1o+PjJdPWE7YT1rW2c+PjJdfDA7Yj0oa1thPj4yXXwwKSsoNC0xKSZ+KDQtMSk7c2E9a1tiPj4yXXwwO2tbYT4+Ml09Yis0O2tbUD4+Ml09c2E7a1tZPj4yXT0oa1taPj4yXXwwKSs4Kygoa1tQPj4yXXwwKSo3MnwwKTtpZihrWyhrW1k+PjJdfDApKzQ+PjJdfDApe25FKGtbZT4+Ml18MCxrWyhrW1k+PjJdfDApKzQ+PjJdfDApO0NBKGtbZT4+Ml18MCw0NDQzMywxKX1uRShrW2U+PjJdfDAsa1soa1tZPj4yXXwwKSs4Pj4yXXwwKTtrW2phPj4yXT0wO2tbUT4+Ml09MDticmVha31kZWZhdWx0OntxYT0yNjg7YnJlYWsgYX19d2hpbGUoMCk7aWYoKHFhfDApPT02Mil7cWE9MDtjPShpW2g+PjBdfDApIT0wO2RvIGlmKGxbKGtbSz4+Ml18MCkrMj4+MF0mMSl7ZG8gaWYoIWMpe2M9a1tnPj4yXXwwO2lmKGlbRD4+MF18MCl7c2E9KGtbYz4+Ml18MCkrKDgtMSkmfig4LTEpO2E9c2E7Yj1rW2E+PjJdfDA7YT1rW2ErND4+Ml18MDtrW2M+PjJdPXNhKzg7c2E9aWE7a1tzYT4+Ml09YjtrW3NhKzQ+PjJdPWE7YnJlYWt9ZWxzZXtzYT0oa1tjPj4yXXwwKSsoNC0xKSZ+KDQtMSk7YT1rW3NhPj4yXXwwO2tbYz4+Ml09c2ErNDtzYT1pYTtrW3NhPj4yXT1hO2tbc2ErND4+Ml09KChhfDApPDApPDwzMT4+MzE7YnJlYWt9fWVsc2V7YT1jUChrW1g+PjJdfDApfDA7c2E9aWE7a1tzYT4+Ml09YTtrW3NhKzQ+PjJdPUx9d2hpbGUoMCk7Yj1pYTtjPWtbYj4+Ml18MDtiPWtbYis0Pj4yXXwwO2lmKChrW2lhKzQ+PjJdfDApPDApe2lmKChjfDApPT0wJihifDApPT0tMjE0NzQ4MzY0OCl7c2E9UjtrW3NhPj4yXT0wO2tbc2ErND4+Ml09LTIxNDc0ODM2NDh9ZWxzZXthPWlhO2E9X1IoMCwwLGtbYT4+Ml18MCxrW2ErND4+Ml18MCl8MDtzYT1SO2tbc2E+PjJdPWE7a1tzYSs0Pj4yXT1MfWlbYmE+PjBdPTQ1O2JyZWFrfXNhPVI7a1tzYT4+Ml09YztrW3NhKzQ+PjJdPWI7aWYoaVtFPj4wXXwwKXtpW2JhPj4wXT00MzticmVha31pZihpW3o+PjBdfDApe2lbYmE+PjBdPTMyO2JyZWFrfWVsc2V7aVtiYT4+MF09MDticmVha319ZWxzZXtkbyBpZighYyl7Yz1rW2c+PjJdfDA7aWYoaVtEPj4wXXwwKXtzYT0oa1tjPj4yXXwwKSsoOC0xKSZ+KDgtMSk7YT1zYTtiPWtbYT4+Ml18MDthPWtbYSs0Pj4yXXwwO2tbYz4+Ml09c2ErODtzYT1SO2tbc2E+PjJdPWI7a1tzYSs0Pj4yXT1hO2JyZWFrfWVsc2V7c2E9KGtbYz4+Ml18MCkrKDQtMSkmfig0LTEpO2E9a1tzYT4+Ml18MDtrW2M+PjJdPXNhKzQ7c2E9UjtrW3NhPj4yXT1hO2tbc2ErND4+Ml09MDticmVha319ZWxzZXthPWNQKGtbWD4+Ml18MCl8MDtzYT1SO2tbc2E+PjJdPWE7a1tzYSs0Pj4yXT1MfXdoaWxlKDApO2lbYmE+PjBdPTB9d2hpbGUoMCk7c2E9UjtpZigoa1tzYT4+Ml18MCk9PTAmKGtbc2ErND4+Ml18MCk9PTApaVt4Pj4wXT0wO2lmKChsW0c+PjBdfDApIT0wPyhrW2FhPj4yXXwwKTwoKGtbamE+PjJdfDApLSgoaVtiYT4+MF18MCkhPTAmMSl8MCk6MClrW2FhPj4yXT0oa1tqYT4+Ml18MCktKChpW2JhPj4wXXwwKSE9MCYxKTtpZigoa1thYT4+Ml18MCk+PTYwKXtrW1Q+PjJdPShrW2FhPj4yXXwwKSsxMDtzYT1rW1Q+PjJdfDA7c2E9amcoc2EsKChzYXwwKTwwKTw8MzE+PjMxKXwwO2tbb2E+PjJdPXNhO2tbcGE+PjJdPXNhO2lmKCEoa1twYT4+Ml18MCkpe3FhPTkyO2JyZWFrfX1lbHNle2tbVD4+Ml09NzA7a1twYT4+Ml09bX1rW24+PjJdPShrW3BhPj4yXXwwKSsoKGtbVD4+Ml18MCktMSk7aWYoKGxbbmE+PjBdfDApPT0xNSl7c2E9UjtzYT1tUyhrW3NhPj4yXXwwLGtbc2ErND4+Ml18MCwxMCwwKXwwO2tbbGE+PjJdPXNhO2lmKCEoKGtbbGE+PjJdfDApPDQ/KHNhPVIsc2E9bFMoa1tzYT4+Ml18MCxrW3NhKzQ+PjJdfDAsMTAsMCl8MCxzYT1tUyhzYXwwLEx8MCwxMCwwKXwwLCEoKHNhfDApPT0xJihMfDApPT0wKSk6MCkpa1tsYT4+Ml09MDtzYT1pWzQ0NzUzKygoa1tsYT4+Ml08PDEpKzEpPj4wXXwwO2E9KGtbbj4+Ml18MCkrLTF8MDtrW24+PjJdPWE7aVthPj4wXT1zYTthPWlbNDQ3NTMrKGtbbGE+PjJdPDwxKT4+MF18MDtzYT0oa1tuPj4yXXwwKSstMXwwO2tbbj4+Ml09c2E7aVtzYT4+MF09YX1rW3M+PjJdPTQ0NzYyKyhsWyhrW0s+PjJdfDApKzQ+PjBdfDApO2lbaj4+MF09aVsoa1tLPj4yXXwwKSsxPj4wXXwwO2Rve3NhPVI7c2E9bVMoa1tzYT4+Ml18MCxrW3NhKzQ+PjJdfDAsbFtqPj4wXXwwLDApfDA7c2E9aVsoa1tzPj4yXXwwKStzYT4+MF18MDthPShrW24+PjJdfDApKy0xfDA7a1tuPj4yXT1hO2lbYT4+MF09c2E7YT1SO2E9bFMoa1thPj4yXXwwLGtbYSs0Pj4yXXwwLGxbaj4+MF18MCwwKXwwO3NhPVI7a1tzYT4+Ml09YTtrW3NhKzQ+PjJdPUw7c2E9UjthPWtbc2ErND4+Ml18MH13aGlsZShhPj4+MD4wfChhfDApPT0wJihrW3NhPj4yXXwwKT4+PjA+MCk7a1tRPj4yXT0oa1twYT4+Ml18MCkrKChrW1Q+PjJdfDApLTEpLShrW24+PjJdfDApO2tbSj4+Ml09KGtbYWE+PjJdfDApLShrW1E+PjJdfDApO3doaWxlKDEpe2lmKChrW0o+PjJdfDApPD0wKWJyZWFrO3NhPShrW24+PjJdfDApKy0xfDA7a1tuPj4yXT1zYTtpW3NhPj4wXT00ODtrW0o+PjJdPShrW0o+PjJdfDApKy0xfWlmKGlbYmE+PjBdfDApe2E9aVtiYT4+MF18MDtzYT0oa1tuPj4yXXwwKSstMXwwO2tbbj4+Ml09c2E7aVtzYT4+MF09YX1lOmRvIGlmKChsW3g+PjBdfDApIT0wPyhsWyhrW0s+PjJdfDApKzU+PjBdfDApIT0wOjApe2tbJD4+Ml09NDQ3OTUrKGxbKGtbSz4+Ml18MCkrNT4+MF18MCk7d2hpbGUoMSl7c2E9aVtrWyQ+PjJdPj4wXXwwO2lbbWE+PjBdPXNhO2lmKCEoc2E8PDI0Pj4yNCkpYnJlYWsgZTthPWlbbWE+PjBdfDA7c2E9KGtbbj4+Ml18MCkrLTF8MDtrW24+PjJdPXNhO2lbc2E+PjBdPWE7a1skPj4yXT0oa1skPj4yXXwwKSsxfX13aGlsZSgwKTtrW1E+PjJdPShrW3BhPj4yXXwwKSsoKGtbVD4+Ml18MCktMSktKGtbbj4+Ml18MCl9a1tqYT4+Ml09KGtbamE+PjJdfDApLShrW1E+PjJdfDApO2lmKCEoKGtbamE+PjJdfDApPD0wfChpW0I+PjBdfDApIT0wKSlnUChrW2U+PjJdfDAsa1tqYT4+Ml18MCwzMik7Q0Eoa1tlPj4yXXwwLGtbbj4+Ml18MCxrW1E+PjJdfDApO2lmKChrW2phPj4yXXwwKT4wPyhsW0I+PjBdfDApIT0wOjApZ1Aoa1tlPj4yXXwwLGtbamE+PjJdfDAsMzIpO2lmKGtbb2E+PjJdfDApe2JnKGtba1tlPj4yXT4+Ml18MCxrW29hPj4yXXwwKTtrW29hPj4yXT0wfWtbZj4+Ml09KGtbZj4+Ml18MCkrMX1pZigocWF8MCk9PTEzKXtDQShrW2U+PjJdfDAsNDQ2MTMsMSk7cj1yYTtyZXR1cm59ZWxzZSBpZigocWF8MCk9PTkyKXtHQShrW2U+PjJdfDAsMSk7cj1yYTtyZXR1cm59ZWxzZSBpZigocWF8MCk9PTE2MSl7R0Eoa1tlPj4yXXwwLDEpO3I9cmE7cmV0dXJufWVsc2UgaWYoKHFhfDApPT0yNDEpe0dBKGtbZT4+Ml18MCwxKTtyPXJhO3JldHVybn1lbHNlIGlmKChxYXwwKT09MjY4KXtyPXJhO3JldHVybn19ZnVuY3Rpb24gcGcoYSl7YT1hfDA7dmFyIGI9MCxjPTA7Yz1yO3I9cisxNnwwO2I9YztrW2I+PjJdPWE7ZG8gaWYoKChrWyhrW2I+PjJdfDApKzg+PjJdfDApIT0wPyhpWyhrWyhrW2I+PjJdfDApKzg+PjJdfDApKyhrWyhrW2I+PjJdfDApKzEyPj4yXXwwKT4+MF09MCwoa1soa1tiPj4yXXwwKSsyMD4+Ml18MCk+Pj4wPjApOjApPygobFsoa1tiPj4yXXwwKSsyNT4+MF18MCkmNHwwKT09MDowKXthPU1oKGtba1tiPj4yXT4+Ml18MCwoa1soa1tiPj4yXXwwKSsxMj4+Ml18MCkrMXwwLDApfDA7a1soa1tiPj4yXXwwKSs4Pj4yXT1hO2E9a1tiPj4yXXwwO2lmKGtbKGtbYj4+Ml18MCkrOD4+Ml18MCl7YlMoa1thKzg+PjJdfDAsa1soa1tiPj4yXXwwKSs0Pj4yXXwwLChrWyhrW2I+PjJdfDApKzEyPj4yXXwwKSsxfDApfDA7YT0oa1tiPj4yXXwwKSsyNXwwO2lbYT4+MF09bFthPj4wXXwwfDQ7YnJlYWt9ZWxzZXtHQShhLDEpO2JyZWFrfX13aGlsZSgwKTtyPWM7cmV0dXJuIGtbKGtbYj4+Ml18MCkrOD4+Ml18MH1mdW5jdGlvbiBxZyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTA7ZD1yO3I9cisyNTZ8MDtnPWQrMzZ8MDtoPWQrMzJ8MDtlPWQrMjh8MDtmPWQ7a1tnPj4yXT1hO2tbaD4+Ml09YjtrW2U+PjJdPWM7bmcoZiwwLGQrNDB8MCwyMTAsMCk7b2coZixrW2g+PjJdfDAsa1tlPj4yXXwwKTtlPWtbNjZdfDA7Yz1rWzY3XXwwO2E9a1tnPj4yXXwwO2I9cGcoZil8MDtjY1tlJjI1NV0oYyxhLGIpO3I9ZDtyZXR1cm59ZnVuY3Rpb24gcmcoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTA7ZD1yO3I9cisxNnwwO2c9ZCs4fDA7Zj1kKzR8MDtlPWQ7a1tnPj4yXT1hO2tbZj4+Ml09YjtrW2U+PjJdPWM7Yz1ZYltrWyhrW2c+PjJdfDApKzU2Pj4yXSYyNTVdKGtbZz4+Ml18MCxrW2Y+PjJdfDAsa1tlPj4yXXwwKXwwO3I9ZDtyZXR1cm4gY3wwfWZ1bmN0aW9uIHNnKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wO2Y9cjtyPXIrMzJ8MDtoPWYrMTZ8MDtnPWYrMTJ8MDtjPWYrOHwwO2Q9Zis0fDA7ZT1mO2tbaD4+Ml09YTtrW2c+PjJdPWI7a1tjPj4yXT1rW2g+PjJdO2tbZD4+Ml09a1tnPj4yXTt3aGlsZSgxKXtrW2U+PjJdPShsWzE3NjEzKyhsW2tbYz4+Ml0+PjBdfDApPj4wXXwwKS0obFsxNzYxMysobFtrW2Q+PjJdPj4wXXwwKT4+MF18MCk7aWYoa1tlPj4yXXwwKXtjPTU7YnJlYWt9aWYoIShsW2tbYz4+Ml0+PjBdfDApKXtjPTU7YnJlYWt9a1tjPj4yXT0oa1tjPj4yXXwwKSsxO2tbZD4+Ml09KGtbZD4+Ml18MCkrMX1pZigoY3wwKT09NSl7cj1mO3JldHVybiBrW2U+PjJdfDB9cmV0dXJuIDB9ZnVuY3Rpb24gdGcoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxpPTAsaj0wO2o9cjtyPXIrMzJ8MDtlPWorMjh8MDtmPWorMjR8MDtnPWorMjB8MDtpPWorMTZ8MDtoPWo7a1tlPj4yXT1hO2tbZj4+Ml09YjtrW2c+PjJdPWM7a1soa1tlPj4yXXwwKSs1Mj4+Ml09a1tmPj4yXTthSyhrW2U+PjJdfDAsa1tmPj4yXXwwKTthPWtbZT4+Ml18MDtpZighKGtbZz4+Ml18MCkpe3ZnKGEsa1tmPj4yXXwwKTtyPWo7cmV0dXJufWlmKChrW2ErMjQ0Pj4yXXwwKT09MD8oZj1oaShrW2U+PjJdfDApfDAsa1soa1tlPj4yXXwwKSsyNDQ+PjJdPWYsKGZ8MCk9PTApOjApe3I9ajtyZXR1cm59a1toPj4yXT1kO2Q9eXgoa1tlPj4yXXwwLGtbZz4+Ml18MCxoKXwwO2tbaT4+Ml09ZDtpaShrWyhrW2U+PjJdfDApKzI0ND4+Ml18MCwtMSxrW2k+PjJdfDAsMSwxNzApO3I9ajtyZXR1cm59ZnVuY3Rpb24gdWcoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wO2U9cjtyPXIrMTZ8MDtjPWU7ZD1lKzh8MDtmPWM7a1tmPj4yXT1hO2tbZis0Pj4yXT1iO2I9YztiPWpnKGtbYj4+Ml18MCxrW2IrND4+Ml18MCl8MDtrW2Q+PjJdPWI7aWYoIShrW2Q+PjJdfDApKXtmPWtbZD4+Ml18MDtyPWU7cmV0dXJuIGZ8MH1kUyhrW2Q+PjJdfDAsMCxrW2M+PjJdfDApfDA7Zj1rW2Q+PjJdfDA7cj1lO3JldHVybiBmfDB9ZnVuY3Rpb24gdmcoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTA7ZT1yO3I9cisxNnwwO2M9ZSs0fDA7ZD1lO2tbYz4+Ml09YTtrW2Q+PjJdPWI7a1soa1tjPj4yXXwwKSs1Mj4+Ml09a1tkPj4yXTtpZigoa1tkPj4yXXwwKT09MD8oa1soa1tjPj4yXXwwKSsyNDQ+PjJdfDApPT0wOjApe3I9ZTtyZXR1cm59RE4oa1tjPj4yXXwwLGtbZD4+Ml18MCk7cj1lO3JldHVybn1mdW5jdGlvbiB3ZyhhKXthPWF8MDt2YXIgYj0wLGM9MDtiPXI7cj1yKzE2fDA7Yz1iO2tbYz4+Ml09YTtrWyhrWyhrW2M+PjJdfDApKzQ+PjJdfDApKzQ+PjJdPWtba1tjPj4yXT4+Ml07cj1iO3JldHVybn1mdW5jdGlvbiB4ZyhhKXthPWF8MDt2YXIgYj0wLGM9MDtjPXI7cj1yKzE2fDA7Yj1jO2tbYj4+Ml09YTtpZighKChrW2I+PjJdfDApIT0wJihrW2I+PjJdfDApIT01KSl7YT0wO2E9YSYxO3I9YztyZXR1cm4gYXwwfWE9KGtbYj4+Ml18MCkhPTY7YT1hJjE7cj1jO3JldHVybiBhfDB9ZnVuY3Rpb24geWcoYSl7YT1hfDA7dmFyIGI9MCxjPTA7Yz1yO3I9cisxNnwwO2I9YztrW2I+PjJdPWE7cj1jO3JldHVybiAobFsoa1tiPj4yXXwwKSs4Pj4wXXwwfDApIT0wfDB9ZnVuY3Rpb24gemcoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTAsbj0wLG89MDtvPXI7cj1yKzMyfDA7Yz1vKzI0fDA7ZD1vKzIwfDA7Zj1vKzE2fDA7bj1vKzEyfDA7ZT1vKzh8MDtnPW8rNHwwO2g9bztrW2M+PjJdPWE7a1tkPj4yXT1iO2tbZj4+Ml09a1soa1tjPj4yXXwwKSs0Pj4yXTtrW24+PjJdPTA7d2coa1tjPj4yXXwwKTtkbyBpZigobFsoa1tjPj4yXXwwKSs4Pj4wXXwwKSE9Mj8oKGtbZD4+Ml18MCkhPTA/MToobFsoa1tjPj4yXXwwKSs4Pj4wXXwwKSE9MSk6MCl7aWYoKGtbZD4+Ml18MCkhPTA/KG1bKGtbZj4+Ml18MCkrMjI+PjFdJjF8MCkhPTA6MCl7a1tuPj4yXT04O2JyZWFrfWtbZT4+Ml09MDtpZigoa1tkPj4yXXwwKSE9MD8obFsoa1tmPj4yXXwwKSsyMD4+MF18MCk9PTI6MCliPTg7ZWxzZSBiPTc7YTpkbyBpZigoYnwwKT09NylpZighKG1bKGtbZj4+Ml18MCkrMjI+PjFdJjY0KSl7aWYoKGtbZD4+Ml18MCk+MSl7a1tnPj4yXT1rWyhrW2Y+PjJdfDApKzcyPj4yXTt3aGlsZSgxKXtpZighKGtbZz4+Ml18MCkpYnJlYWsgYTthPWtbZz4+Ml18MDtpZigoa1trW2c+PjJdPj4yXXwwKSE9KGtbYz4+Ml18MCkpYnJlYWs7a1tnPj4yXT1rW2ErMTI+PjJdfWtbZT4+Ml09a1trW2E+PjJdPj4yXX19ZWxzZSBiPTg7d2hpbGUoMCk7aWYoKGJ8MCk9PTgpa1tlPj4yXT1rW2tbKGtbZj4+Ml18MCkrNzY+PjJdPj4yXTtpZihrW2U+PjJdfDApe2tbbj4+Ml09MjYyO2JyZWFrfWc9ZUkoa1tjPj4yXXwwLDEsMSl8MDtrW24+PjJdPWc7aWYoIShrW24+PjJdfDApKXtnPShrW2Y+PjJdfDApKzIyfDA7altnPj4xXT1tW2c+PjFdJi05O2lmKCEoa1soa1tmPj4yXXwwKSs0ND4+Ml18MCkpe2c9KGtbZj4+Ml18MCkrMjJ8MDtqW2c+PjFdPW1bZz4+MV18OH13aGlsZSgxKXtpZigoa1soa1tmPj4yXXwwKSsxMj4+Ml18MCk9PTA/KGc9QU4oa1tmPj4yXXwwKXwwLGtbbj4+Ml09ZywwPT0oZ3wwKSk6MCljb250aW51ZTtkbyBpZigoa1tuPj4yXXwwKT09MCYoa1tkPj4yXXwwKSE9MCl7aWYobVsoa1tmPj4yXXwwKSsyMj4+MV0mMSl7a1tuPj4yXT04O2JyZWFrfWU9a1trW2Y+PjJdPj4yXXwwO2c9KGtbZD4+Ml18MCk+MSYxO2c9Qk4oZSxnLGhyKGtba1tjPj4yXT4+Ml18MCl8MCl8MDtrW24+PjJdPWc7aWYoIShrW24+PjJdfDApKXtnPUtNKGtbZj4+Ml18MCl8MDtrW24+PjJdPWd9fXdoaWxlKDApO2lmKGtbbj4+Ml18MCkkQihrW2Y+PjJdfDApO2lmKChrW24+PjJdJjI1NXwwKSE9NSlicmVhaztpZihsWyhrW2Y+PjJdfDApKzIwPj4wXXwwKWJyZWFrO2lmKCEobnIoa1tmPj4yXXwwKXwwKSlicmVha31pZighKGtbbj4+Ml18MCkpe2lmKChsWyhrW2M+PjJdfDApKzg+PjBdfDApPT0wPyhnPShrW2Y+PjJdfDApKzQwfDAsa1tnPj4yXT0oa1tnPj4yXXwwKSsxLChpWyhrW2M+PjJdfDApKzk+PjBdfDApIT0wKTowKXtpWyhrW2M+PjJdfDApKzMyKzg+PjBdPTE7a1soa1tjPj4yXXwwKSszMisxMj4+Ml09a1soa1tmPj4yXXwwKSs3Mj4+Ml07a1soa1tmPj4yXXwwKSs3Mj4+Ml09KGtbYz4+Ml18MCkrMzJ9aVsoa1tjPj4yXXwwKSs4Pj4wXT0oa1tkPj4yXXwwKSE9MD8yOjE7aWYoKGxbKGtbYz4+Ml18MCkrOD4+MF18MCk+KGxbKGtbZj4+Ml18MCkrMjA+PjBdfDApKWlbKGtbZj4+Ml18MCkrMjA+PjBdPWlbKGtbYz4+Ml18MCkrOD4+MF18MDtpZihrW2Q+PjJdfDApe2tbaD4+Ml09a1soa1tmPj4yXXwwKSsxMj4+Ml07a1soa1tmPj4yXXwwKSs3Nj4+Ml09a1tjPj4yXTtnPShrW2Y+PjJdfDApKzIyfDA7altnPj4xXT1tW2c+PjFdJi0zMztpZigoa1tkPj4yXXwwKT4xKXtnPShrW2Y+PjJdfDApKzIyfDA7altnPj4xXT1tW2c+PjFdfDMyfWc9a1soa1tmPj4yXXwwKSs0ND4+Ml18MDtpZigoZ3wwKSE9KHFyKChrWyhrW2g+PjJdfDApKzU2Pj4yXXwwKSsyOHwwKXwwKT8oZz1RZyhrWyhrW2g+PjJdfDApKzcyPj4yXXwwKXwwLGtbbj4+Ml09Zywoa1tuPj4yXXwwKT09MCk6MClwdCgoa1soa1toPj4yXXwwKSs1Nj4+Ml18MCkrMjh8MCxrWyhrW2Y+PjJdfDApKzQ0Pj4yXXwwKX19fX13aGlsZSgwKTtpZighKChrW24+PjJdfDApPT0wJihrW2Q+PjJdfDApIT0wKSl7bj1rW24+PjJdfDA7cj1vO3JldHVybiBufDB9aD1ITShrW2tbZj4+Ml0+PjJdfDAsa1soa1trW2M+PjJdPj4yXXwwKSs0MzI+PjJdfDApfDA7a1tuPj4yXT1oO249a1tuPj4yXXwwO3I9bztyZXR1cm4gbnwwfWZ1bmN0aW9uIEFnKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MDtjPXI7cj1yKzE2fDA7ZD1jKzR8MDtiPWM7a1tkPj4yXT1hO2E9a1soa1tkPj4yXXwwKSs0Pj4yXXwwO2E9TWkoYSxDZyhrWyhrW2Q+PjJdfDApKzI0Pj4yXXwwKXwwLC0xLDApfDA7a1tiPj4yXT1hO3I9YztyZXR1cm4ga1tiPj4yXXwwfWZ1bmN0aW9uIEJnKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MDtoPXI7cj1yKzE2fDA7ZD1oKzEyfDA7ZT1oKzh8MDtmPWgrNHwwO2c9aDtrW2Q+PjJdPWE7a1tlPj4yXT1iO2tbZj4+Ml09YztrW2c+PjJdPWtbKGtbZD4+Ml18MCkrND4+Ml07d2coa1tkPj4yXXwwKTtpZigoa1tlPj4yXXwwKT09MTUpe2M9ek4oa1trW2c+PjJdPj4yXXwwKXwwO2tba1tmPj4yXT4+Ml09Yysoa1soa1tkPj4yXXwwKSsyMD4+Ml18MCk7cj1oO3JldHVybn1lbHNle2M9cXIoKGtbKGtbKGtbZz4+Ml18MCkrMTI+PjJdfDApKzU2Pj4yXXwwKSsoMzYrKGtbZT4+Ml08PDIpKXwwKXwwO2tba1tmPj4yXT4+Ml09YztyPWg7cmV0dXJufX1mdW5jdGlvbiBDZyhhKXthPWF8MDt2YXIgYj0wLGM9MDtjPXI7cj1yKzE2fDA7Yj1jO2tbYj4+Ml09YTtyPWM7cmV0dXJuIGtbKGtbKGtbYj4+Ml18MCkrND4+Ml18MCkrMzI+PjJdfDB9ZnVuY3Rpb24gRGcoYSl7YT1hfDA7dmFyIGI9MCxjPTA7Yz1yO3I9cisxNnwwO2I9YztrW2I+PjJdPWE7cj1jO3JldHVybiBsWyhrW2I+PjJdfDApKzU+PjBdfDB8MH1mdW5jdGlvbiBFZyhhKXthPWF8MDt2YXIgYj0wLGM9MDtiPXI7cj1yKzE2fDA7Yz1iO2tbYz4+Ml09YTthPVRGKGtbKGtbYz4+Ml18MCkrND4+Ml18MCl8MDtyPWI7cmV0dXJuIGF8MH1mdW5jdGlvbiBGZyhhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGk9MCxqPTAsbT0wLG49MCxvPTAscD0wLHE9MCxzPTAsdD0wLHU9MDt0PXI7cj1yKzQ4fDA7aD10KzQ0fDA7aT10KzQwfDA7aj10KzM2fDA7bT10KzMyfDA7dT10KzI4fDA7cz10KzI0fDA7cT10KzIwfDA7bz10KzE2fDA7cD10KzEyfDA7bj10Kzh8MDtmPXQrNHwwO2U9dDtrW2k+PjJdPWE7a1tqPj4yXT1iO2tbbT4+Ml09YztrW3U+PjJdPWQ7a1tzPj4yXT0wO2tbcT4+Ml09MDtrW28+PjJdPTA7a1twPj4yXT1rW3U+PjJdJjE7a1tuPj4yXT0wO2lmKChrW2o+PjJdfDApPj4+MDw9MSYoa1tqPj4yXXwwKT09MCl7dT1faig1MTcwNCl8MDtrW2g+PjJdPXU7dT1rW2g+PjJdfDA7cj10O3JldHVybiB1fDB9ZG8gaWYoa1soa1tpPj4yXXwwKSs0ND4+Ml18MCl7a1tzPj4yXT1rWyhrW2k+PjJdfDApKzQ0Pj4yXTtnPTI0fWVsc2V7aWYoKChrW24+PjJdfDApIT0wPyhMcihrW2k+PjJdfDApfDApIT0wOjApPyh1PVJzKGtbKGtbaT4+Ml18MCkrMjE2Pj4yXXwwLGtbaj4+Ml18MCxvKXwwLGtbcz4+Ml09dSwoa1tzPj4yXXwwKSE9MCk6MClicmVhaztpZigoa1tuPj4yXXwwKSE9MCYoa1tvPj4yXXwwKT09MCl7a1tmPj4yXT0wO2M9a1soa1tpPj4yXXwwKSs2ND4+Ml18MDt1PWtbKGtbaT4+Ml18MCkrMTYwPj4yXXwwO3U9a1MoKGtbaj4+Ml18MCktMXwwLDAsdXwwLCgodXwwKTwwKTw8MzE+PjMxfDApfDA7dT1RTChjLHUsTCxrWyhrW2k+PjJdfDApKzE2MD4+Ml18MCxmKXwwO2tbcz4+Ml09dTtpZigoa1tzPj4yXXwwKT09MCYoa1tmPj4yXXwwKSE9MCl7aWYoISgobFsoa1tpPj4yXXwwKSsxNz4+MF18MHwwKTw9MT8obFsoa1tpPj4yXXwwKSsxMz4+MF18MHwwKT09MDowKSl7dT1ycyhrW2k+PjJdfDAsa1tqPj4yXXwwKXwwO2tbcT4+Ml09dX1kPWtbaT4+Ml18MDtpZighKGtbcT4+Ml18MCkpe3U9d04oZCxrW2o+PjJdfDAsa1tmPj4yXXwwLHEpfDA7a1tzPj4yXT11fWVsc2V7Yz1rW2QrNjQ+PjJdfDA7dT1rWyhrW2k+PjJdfDApKzE2MD4+Ml18MDt1PWtTKChrW2o+PjJdfDApLTF8MCwwLHV8MCwoKHV8MCk8MCk8PDMxPj4zMXwwKXwwO1dzKGMsdSxMLGtbZj4+Ml18MCl8MH1pZihrW3E+PjJdfDApe2tba1ttPj4yXT4+Ml09a1txPj4yXTtrW2g+PjJdPTA7dT1rW2g+PjJdfDA7cj10O3JldHVybiB1fDB9fWlmKGtbcz4+Ml18MClicmVha311PXdzKGtbKGtbaT4+Ml18MCkrMjEyPj4yXXwwLGtbaj4+Ml18MCwzKXwwO2tbZT4+Ml09dTtpZighKGtbZT4+Ml18MCkpe3U9eE4oa1soa1tpPj4yXXwwKSsyMTI+PjJdfDAsa1tqPj4yXXwwLGUpfDA7a1tzPj4yXT11O2lmKGtbcz4+Ml18MClicmVhaztpZighKGtbZT4+Ml18MCkpe2tba1ttPj4yXT4+Ml09MDtrW3E+PjJdPTA7a1tzPj4yXT03O2JyZWFrfX1nPXhzKGtbKGtbaT4+Ml18MCkrMjEyPj4yXXwwLGtbaj4+Ml18MCxrW2U+PjJdfDApfDA7a1trW20+PjJdPj4yXT1nO2tbcT4+Ml09ZztnPTI0fXdoaWxlKDApO2RvIGlmKChnfDApPT0yNCl7aWYoa1tzPj4yXXwwKXtrW3E+PjJdPTA7YnJlYWt9ZD1rW2k+PjJdfDA7aWYoISgoa1twPj4yXXwwKSE9MD8xOihrWyhrW3E+PjJdfDApKzE2Pj4yXXwwKT09MCkpe3U9ZCsxOTJ8MDtrW3U+PjJdPShrW3U+PjJdfDApKzE7a1toPj4yXT0wO3U9a1toPj4yXXwwO3I9dDtyZXR1cm4gdXwwfWtbKGtbcT4+Ml18MCkrMTY+PjJdPWQ7aWYoKGtbaj4+Ml18MCk+Pj4wPD0yMTQ3NDgzNjQ3PyhrW2o+PjJdfDApIT0oKChrWzM4NF18MCkvKGtbKGtbaT4+Ml18MCkrMTYwPj4yXXwwKXwwKSsxfDApOjApe2lmKChrW2tbKGtbaT4+Ml18MCkrNjQ+PjJdPj4yXXwwKSE9MD8hKChrW3A+PjJdfDApIT0wPzE6KGtbKGtbaT4+Ml18MCkrMjg+PjJdfDApPj4+MDwoa1tqPj4yXXwwKT4+PjApOjApe3U9KExyKGtbaT4+Ml18MCl8MCkhPTA7aWYodSYoa1tuPj4yXXwwKT09MD8odT1ScyhrWyhrW2k+PjJdfDApKzIxNj4+Ml18MCxrW2o+PjJdfDAsbyl8MCxrW3M+PjJdPXUsKGtbcz4+Ml18MCkhPTApOjApYnJlYWs7dT0oa1tpPj4yXXwwKSsxOTIrNHwwO2tbdT4+Ml09KGtbdT4+Ml18MCkrMTt1PVNzKGtbcT4+Ml18MCxrW28+PjJdfDApfDA7a1tzPj4yXT11O2lmKGtbcz4+Ml18MClicmVha31lbHNle2lmKChrW2o+PjJdfDApPj4+MD4oa1soa1tpPj4yXXwwKSsxNjQ+PjJdfDApPj4+MCl7a1tzPj4yXT0xMzticmVha31pZihrW3A+PjJdfDApe2drKCk7aWYoKGtbaj4+Ml18MCk+Pj4wPD0oa1soa1tpPj4yXXwwKSszMj4+Ml18MCk+Pj4wKXZqKGtbKGtbaT4+Ml18MCkrNjA+PjJdfDAsa1tqPj4yXXwwKXwwO2F1KGtbaT4+Ml18MCxrW2o+PjJdfDApfDA7aGsoKX1kUyhrWyhrW3E+PjJdfDApKzQ+PjJdfDAsMCxrWyhrW2k+PjJdfDApKzE2MD4+Ml18MCl8MH1rW2g+PjJdPTA7dT1rW2g+PjJdfDA7cj10O3JldHVybiB1fDB9dT1faig1MTc5Myl8MDtrW3M+PjJdPXV9d2hpbGUoMCk7aWYoa1txPj4yXXwwKVFzKGtbcT4+Ml18MCk7VnMoa1tpPj4yXXwwKTtrW2tbbT4+Ml0+PjJdPTA7a1toPj4yXT1rW3M+PjJdO3U9a1toPj4yXXwwO3I9dDtyZXR1cm4gdXwwfWZ1bmN0aW9uIEdnKGEpe2E9YXwwO3ZhciBiPTAsYz0wO2M9cjtyPXIrMTZ8MDtiPWM7a1tiPj4yXT1hO3I9YztyZXR1cm4ga1soa1tiPj4yXXwwKSs0Pj4yXXwwfWZ1bmN0aW9uIEhnKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wO3c9cjtyPXIrODB8MDtlPXcrNjh8MDt4PXcrNjR8MDtmPXcrNjB8MDtnPXcrNTZ8MDtwPXcrNTJ8MDtvPXcrNDh8MDtuPXcrNDR8MDttPXcrNDB8MDtqPXcrOHwwO3Y9dyszNnwwO2w9dztxPXcrMzJ8MDtoPXcrMjh8MDt0PXcrMjR8MDtzPXcrMjB8MDt1PXcrMTZ8MDtrW2U+PjJdPWE7a1t4Pj4yXT1iO2tbZj4+Ml09YztrW2c+PjJdPWQ7YT1aZihrWyhrW2U+PjJdfDApKzQ+PjJdfDApfDA7a1twPj4yXT1hO2E9Q2coa1soa1tlPj4yXXwwKSsyND4+Ml18MCl8MDtrW28+PjJdPWE7YT1DZyhrWyhrW2U+PjJdfDApKzQ+PjJdfDApfDA7a1tuPj4yXT1hO2tbbT4+Ml09KGtbbz4+Ml18MCk8KGtbbj4+Ml18MCk/a1tvPj4yXXwwOmtbbj4+Ml18MDthPWtbbz4+Ml18MDthPWtTKGtbeD4+Ml18MCwwLGF8MCwoKGF8MCk8MCk8PDMxPj4zMXwwKXwwO2M9ajtrW2M+PjJdPWE7a1tjKzQ+PjJdPUw7a1t2Pj4yXT0wO2lmKChrW28+PjJdfDApIT0oa1tuPj4yXXwwKT8odUsoa1twPj4yXXwwKXwwKSE9MDowKWtbdj4+Ml09ODt4PWo7Yz1rW28+PjJdfDA7Yz1fUihrW3g+PjJdfDAsa1t4KzQ+PjJdfDAsY3wwLCgoY3wwKTwwKTw8MzE+PjMxfDApfDA7eD1sO2tbeD4+Ml09YztrW3grND4+Ml09TDt3aGlsZSgxKXtpZihrW3Y+PjJdfDApe2U9MTQ7YnJlYWt9Yz1sO2I9a1tjKzQ+PjJdfDA7eD1qO2E9a1t4KzQ+PjJdfDA7aWYoISgoYnwwKTwoYXwwKXwoKGJ8MCk9PShhfDApPyhrW2M+PjJdfDApPj4+MDwoa1t4Pj4yXXwwKT4+PjA6MCkpKXtlPTE0O2JyZWFrfWtbcT4+Ml09MDtjPWw7eD1rW24+PjJdfDA7eD1pUyhrW2M+PjJdfDAsa1tjKzQ+PjJdfDAseHwwLCgoeHwwKTwwKTw8MzE+PjMxfDApfDA7a1toPj4yXT14KzE7aWYoKGtbaD4+Ml18MCkhPSgoKChrWzM4NF18MCk+Pj4wKS8oKGtbKGtbKGtbKGtbZT4+Ml18MCkrND4+Ml18MCkrND4+Ml18MCkrMzI+PjJdfDApPj4+MCl8MCkrMXwwKSl7eD1GZyhrW3A+PjJdfDAsa1toPj4yXXwwLHEsMCl8MDtrW3Y+PjJdPXg7aWYoKDA9PSh4fDApPyh4PVFnKGtbcT4+Ml18MCl8MCxrW3Y+PjJdPXgsMD09KHh8MCkpOjApPyh4PWwsYz1rW28+PjJdfDAsYz1qUyhrW3g+PjJdfDAsa1t4KzQ+PjJdfDAsY3wwLCgoY3wwKTwwKTw8MzE+PjMxfDApfDAsa1t0Pj4yXT0oa1tmPj4yXXwwKStjLGM9R2coa1txPj4yXXwwKXwwLGtbcz4+Ml09YyxjPWwseD1rW24+PjJdfDAseD1qUyhrW2M+PjJdfDAsa1tjKzQ+PjJdfDAseHwwLCgoeHwwKTwwKTw8MzE+PjMxfDApfDAsa1t1Pj4yXT0oa1tzPj4yXXwwKSt4LGJTKGtbdT4+Ml18MCxrW3Q+PjJdfDAsa1ttPj4yXXwwKXwwLHg9Y3Uoa1txPj4yXXwwKXwwLGlbeD4+MF09MCx4PWwsKGtbeD4+Ml18MCk9PTAmKGtbeCs0Pj4yXXwwKT09MCYoa1tnPj4yXXwwKT09MCk6MCl7eD0oa1t1Pj4yXXwwKSsyOHwwO3B0KHgsRWcoa1soa1tlPj4yXXwwKSsyND4+Ml18MCl8MCl9SWcoa1txPj4yXXwwKX1jPWtbbj4+Ml18MDt4PWw7Yz0kUihrW3g+PjJdfDAsa1t4KzQ+PjJdfDAsY3wwLCgoY3wwKTwwKTw8MzE+PjMxfDApfDA7eD1sO2tbeD4+Ml09YztrW3grND4+Ml09TH1pZigoZXwwKT09MTQpe3I9dztyZXR1cm4ga1t2Pj4yXXwwfXJldHVybiAwfWZ1bmN0aW9uIElnKGEpe2E9YXwwO3ZhciBiPTAsYz0wO2M9cjtyPXIrMTZ8MDtiPWM7a1tiPj4yXT1hO2lmKCEoa1tiPj4yXXwwKSl7cj1jO3JldHVybn1UcyhrW2I+PjJdfDApO3I9YztyZXR1cm59ZnVuY3Rpb24gSmcoYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wO2I9cjtyPXIrMTZ8MDtjPWIrNHwwO2Q9YjtrW2M+PjJdPWE7YT1ZZyhaZihrWyhrW2M+PjJdfDApKzI0Pj4yXXwwKXwwKXwwO2tbZD4+Ml09YTtrWyhrW2M+PjJdfDApKzQ0Pj4yXT1rW2tbZD4+Ml0+PjJdO2tba1tkPj4yXT4+Ml09a1tjPj4yXTtrWyhrW2M+PjJdfDApKzQwPj4yXT0xO3I9YjtyZXR1cm59ZnVuY3Rpb24gS2coYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wO2M9cjtyPXIrMTZ8MDtkPWMrNHwwO2I9YztrW2Q+PjJdPWE7d2coa1tkPj4yXXwwKTtrWyhrWyhrW2Q+PjJdfDApKzQ+PjJdfDApKzQ0Pj4yXT0wO2E9S00oa1soa1tkPj4yXXwwKSs0Pj4yXXwwKXwwO2tbYj4+Ml09YTtyPWM7cmV0dXJuIGtbYj4+Ml18MH1mdW5jdGlvbiBMZyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLGw9MDtqPXI7cj1yKzMyfDA7bD1qKzIwfDA7ZD1qKzE2fDA7ZT1qKzEyfDA7Zj1qKzh8MDtnPWorNHwwO2g9ajtrW2w+PjJdPWE7a1tkPj4yXT1iO2tbZT4+Ml09YztrW2Y+PjJdPWtbKGtbbD4+Ml18MCkrND4+Ml07d2coa1tsPj4yXXwwKTtrW2c+PjJdPWtbKGtbKGtbZj4+Ml18MCkrMTI+PjJdfDApKzU2Pj4yXTthPVFnKGtbKGtbKGtbZj4+Ml18MCkrMTI+PjJdfDApKzcyPj4yXXwwKXwwO2tbaD4+Ml09YTtpZihrW2g+PjJdfDApe2w9a1toPj4yXXwwO3I9ajtyZXR1cm4gbHwwfXB0KChrW2c+PjJdfDApKygzNisoa1tkPj4yXTw8MikpfDAsa1tlPj4yXXwwKTtpZigoa1tkPj4yXXwwKSE9Nyl7bD1rW2g+PjJdfDA7cj1qO3JldHVybiBsfDB9aVsoa1tmPj4yXXwwKSsxOD4+MF09a1tlPj4yXTtsPWtbaD4+Ml18MDtyPWo7cmV0dXJuIGx8MH1mdW5jdGlvbiBNZyhhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTAsZT0wO2U9cjtyPXIrMTZ8MDtiPWUrOHwwO2M9ZSs0fDA7ZD1lO2tbYj4+Ml09YTtZZihrW2I+PjJdfDApO2tbYz4+Ml09MDt3aGlsZSgxKXtpZigoa1tjPj4yXXwwKT49KGtbKGtbYj4+Ml18MCkrMjA+PjJdfDApKWJyZWFrO2tbZD4+Ml09KGtbKGtbYj4+Ml18MCkrMTY+PjJdfDApKyhrW2M+PjJdPDw0KTtpZihrWyhrW2Q+PjJdfDApKzEyPj4yXXwwKUlqKGtbKGtbZD4+Ml18MCkrMTI+PjJdfDApO2tbYz4+Ml09KGtbYz4+Ml18MCkrMX1kPShrW2I+PjJdfDApKzI0fDA7a1tkPj4yXT1rW2Q+PjJdJi0zO0V1KGtbYj4+Ml18MCk7V0Ioa1tiPj4yXXwwKTtyPWU7cmV0dXJufWZ1bmN0aW9uIE5nKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wO2g9cjtyPXIrMzJ8MDtjPWgrMTZ8MDtkPWgrMTJ8MDtmPWgrOHwwO2c9aCs0fDA7ZT1oO2tbYz4+Ml09YTtrW2Q+PjJdPWI7a1tmPj4yXT1rWyhrW2M+PjJdfDApKzQ+PjJdO2E9KGtbZj4+Ml18MCkrMjJ8MDtqW2E+PjFdPShtW2E+PjFdfDApJi0xNztpZigoa1tkPj4yXXwwKT09MSl7YT0oa1tmPj4yXXwwKSsyMnwwO2pbYT4+MV09bVthPj4xXXwwfDE2fWE9emcoa1tjPj4yXXwwLDApfDA7a1tnPj4yXT1hO2RvIGlmKCEoa1tnPj4yXXwwKSl7a1tlPj4yXT1rWyhrWyhrW2Y+PjJdfDApKzEyPj4yXXwwKSs1Nj4+Ml07aWYoKGxbKGtbZT4+Ml18MCkrMTg+PjBdfDB8MCk9PShrW2Q+PjJdJjI1NXwwKT8obFsoa1tlPj4yXXwwKSsxOT4+MF18MHwwKT09KGtbZD4+Ml0mMjU1fDApOjApYnJlYWs7YT16ZyhrW2M+PjJdfDAsMil8MDtrW2c+PjJdPWE7aWYoKGtbZz4+Ml18MCk9PTA/KGE9UWcoa1soa1soa1tmPj4yXXwwKSsxMj4+Ml18MCkrNzI+PjJdfDApfDAsa1tnPj4yXT1hLChrW2c+PjJdfDApPT0wKTowKXtpWyhrW2U+PjJdfDApKzE4Pj4wXT1rW2Q+PjJdO2lbKGtbZT4+Ml18MCkrMTk+PjBdPWtbZD4+Ml19fXdoaWxlKDApO2E9KGtbZj4+Ml18MCkrMjJ8MDtqW2E+PjFdPShtW2E+PjFdfDApJi0xNztyPWg7cmV0dXJuIGtbZz4+Ml18MH1mdW5jdGlvbiBPZyhhKXthPWF8MDt2YXIgYj0wLGM9MDtjPXI7cj1yKzE2fDA7Yj1jO2tbYj4+Ml09YTtyPWM7cmV0dXJuIGtbKGtbYj4+Ml18MCkrNjQ+PjJdfDB9ZnVuY3Rpb24gUGcoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTA7Yz1yO3I9cisxNnwwO2U9Yys0fDA7ZD1jO2tbZT4+Ml09YTtrW2Q+PjJdPWI7a1trW2Q+PjJdPj4yXT1rWyhrW2U+PjJdfDApKzI4Pj4yXTtyPWM7cmV0dXJufWZ1bmN0aW9uIFFnKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MCxlPTA7ZT1yO3I9cisxNnwwO2M9ZSs4fDA7Yj1lKzR8MDtkPWU7a1tiPj4yXT1hO2tbZD4+Ml09a1soa1tiPj4yXXwwKSsxNj4+Ml07aWYoa1soa1tkPj4yXXwwKSs0ND4+Ml18MCl7a1tjPj4yXT1rWyhrW2Q+PjJdfDApKzQ0Pj4yXTtkPWtbYz4+Ml18MDtyPWU7cmV0dXJuIGR8MH1pZigoKG1bKGtbYj4+Ml18MCkrMjQ+PjFdfDApJjR8MCkhPTA/KGtbKGtbZD4+Ml18MCkrMjg+PjJdfDApPj4+MD49KGtbKGtbYj4+Ml18MCkrMjA+PjJdfDApPj4+MDowKWlmKGtbKGtbZD4+Ml18MCkrMTA0Pj4yXXwwKXtkPUd0KGtbYj4+Ml18MCl8MDtrW2M+PjJdPWQ7ZD1rW2M+PjJdfDA7cj1lO3JldHVybiBkfDB9ZWxzZXtrW2M+PjJdPTA7ZD1rW2M+PjJdfDA7cj1lO3JldHVybiBkfDB9Yj1rW2I+PjJdfDA7aWYoKGtbKGtbZD4+Ml18MCkrMTU2Pj4yXXwwKT4+PjA+KGtbKGtbZD4+Ml18MCkrMTYwPj4yXXwwKT4+PjApe2Q9cU4oYil8MDtrW2M+PjJdPWQ7ZD1rW2M+PjJdfDA7cj1lO3JldHVybiBkfDB9ZWxzZXtkPXJOKGIpfDA7a1tjPj4yXT1kO2Q9a1tjPj4yXXwwO3I9ZTtyZXR1cm4gZHwwfXJldHVybiAwfWZ1bmN0aW9uIFJnKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsbT0wLG49MCxvPTA7bz1yO3I9ciszMnwwO2Q9bysyOHwwO2U9bysyNHwwO2Y9bysyMHwwO2c9bysxNnwwO249bysxMnwwO2o9bys4fDA7bT1vKzR8MDtoPW87a1tlPj4yXT1hO2tbZj4+Ml09YjtrW2c+PjJdPWM7a1tuPj4yXT0wO2lmKGtbKGtbZT4+Ml18MCkrNDQ+PjJdfDApe2tbZD4+Ml09a1soa1tlPj4yXXwwKSs0ND4+Ml07bj1rW2Q+PjJdfDA7cj1vO3JldHVybiBufDB9aWYoTGkoNDAwKXwwKXtrW2Q+PjJdPTEwO249a1tkPj4yXXwwO3I9bztyZXR1cm4gbnwwfWlmKChsWyhrW2U+PjJdfDApKzE3Pj4wXXwwfDApPDMpe2tbZD4+Ml09MDtuPWtbZD4+Ml18MDtyPW87cmV0dXJuIG58MH1iPTA9PShJcihrW2U+PjJdfDAsMSl8MCk7Yz1rW2U+PjJdfDA7ZG8gaWYoIWIpe2I9KExyKGMpfDApIT0wO2M9a1tlPj4yXXwwO2lmKGIpe2g9S3Moa1tjKzIxMj4+Ml18MCl8MDtrW2o+PjJdPWg7a1ttPj4yXT0wO2lmKCEoa1tqPj4yXXwwKSl7aD1GZyhrW2U+PjJdfDAsMSxtLDApfDA7a1tuPj4yXT1oO2tbaj4+Ml09a1ttPj4yXTtrWyhrW2o+PjJdfDApKzEyPj4yXT0wfWlmKGtbaj4+Ml18MCl7aj1IdChrW2U+PjJdfDAsa1tqPj4yXXwwLGtbKGtbZT4+Ml18MCkrMjg+PjJdfDAsMSl8MDtrW24+PjJdPWp9SWcoa1ttPj4yXXwwKTtpZihrW24+PjJdfDApYnJlYWs7SnIoa1soa1tlPj4yXXwwKSsyMTI+PjJdfDApO2JyZWFrfW09b04oYywwKXwwO2tbbj4+Ml09bTtpZigoKChrW24+PjJdfDApPT0wPyhtPXBOKGtbZT4+Ml18MCxrW2Y+PjJdfDApfDAsa1tuPj4yXT1tLChrW24+PjJdfDApPT0wKTowKT8obT1JdChrW2U+PjJdfDAsMCl8MCxrW24+PjJdPW0sKGtbbj4+Ml18MCk9PTApOjApPyhtPWtbZT4+Ml18MCxtPUp0KG0sS3Moa1soa1tlPj4yXXwwKSsyMTI+PjJdfDApfDApfDAsa1tuPj4yXT1tLChrW24+PjJdfDApPT0wKTowKXtKcihrWyhrW2U+PjJdfDApKzIxMj4+Ml18MCk7aWYoKGtbKGtbZT4+Ml18MCkrMjg+PjJdfDApPj4+MD4oa1soa1tlPj4yXXwwKSszNj4+Ml18MCk+Pj4wKXtrW2g+PjJdPShrWyhrW2U+PjJdfDApKzI4Pj4yXXwwKS0oKGtbKGtbZT4+Ml18MCkrMjg+PjJdfDApPT0oKChrWzM4NF18MCkvKGtbKGtbZT4+Ml18MCkrMTYwPj4yXXwwKXwwKSsxfDApJjEpO209TnIoa1tlPj4yXXwwLGtbaD4+Ml18MCl8MDtrW24+PjJdPW07aWYoKGtbbj4+Ml18MCkhPTB8KGtbZz4+Ml18MCkhPTApYnJlYWt9ZWxzZSBpZihrW2c+PjJdfDApYnJlYWs7bT1VZyhrW2U+PjJdfDAsa1tmPj4yXXwwKXwwO2tbbj4+Ml09bX19ZWxzZSBuaihrW2MrOTY+PjJdfDApO3doaWxlKDApO2lmKChrW24+PjJdfDApPT0wPyhMcihrW2U+PjJdfDApfDApPT0wOjApaVsoa1tlPj4yXXwwKSsxNz4+MF09NTtrW2Q+PjJdPWtbbj4+Ml07bj1rW2Q+PjJdfDA7cj1vO3JldHVybiBufDB9ZnVuY3Rpb24gU2coYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaT0wLGo9MDtmPXI7cj1yKzMyfDA7aT1mKzE2fDA7aD1mKzEyfDA7Zz1mKzh8MDtqPWY7a1tpPj4yXT1hO2tbaD4+Ml09YjtrW2c+PjJdPWM7Yj1qO2tbYj4+Ml09ZDtrW2IrND4+Ml09ZTtiPWo7Yj1oY1trWyhrW2tbaT4+Ml0+PjJdfDApKzEyPj4yXSYyNTVdKGtbaT4+Ml18MCxrW2g+PjJdfDAsa1tnPj4yXXwwLGtbYj4+Ml18MCxrW2IrND4+Ml18MCl8MDtyPWY7cmV0dXJuIGJ8MH1mdW5jdGlvbiBUZyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTA7aD1yO3I9ciszMnwwO2Q9aCsyMHwwO2U9aCs4fDA7Zj1oO2c9aCsxNnwwO2tbZD4+Ml09YTthPWU7a1thPj4yXT1iO2tbYSs0Pj4yXT1jO2E9Zmooa1tkPj4yXXwwLGYpfDA7a1tnPj4yXT1hO2lmKGtbZz4+Ml18MCl7Zz1rW2c+PjJdfDA7cj1oO3JldHVybiBnfDB9Yj1rW2YrND4+Ml18MDthPWU7Yz1rW2ErND4+Ml18MDtpZighKChifDApPihjfDApfCgoYnwwKT09KGN8MCk/KGtbZj4+Ml18MCk+Pj4wPihrW2E+PjJdfDApPj4+MDowKSkpe2c9a1tnPj4yXXwwO3I9aDtyZXR1cm4gZ3wwfWE9ZTthPUVyKGtbZD4+Ml18MCxrW2E+PjJdfDAsa1thKzQ+PjJdfDApfDA7a1tnPj4yXT1hO2c9a1tnPj4yXXwwO3I9aDtyZXR1cm4gZ3wwfWZ1bmN0aW9uIFVnKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTA7Zz1yO3I9cisxNnwwO2M9ZysxMnwwO2Q9Zys4fDA7Zj1nKzR8MDtlPWc7a1tjPj4yXT1hO2tbZD4+Ml09YjtrW2Y+PjJdPTA7aWYoa1trWyhrW2M+PjJdfDApKzY0Pj4yXT4+Ml18MCl7a1tlPj4yXT1rW2Q+PjJdO2I9S2koa1soa1tjPj4yXXwwKSs2ND4+Ml18MCwyMSxrW2U+PjJdfDApfDA7a1tmPj4yXT1iO2tbZj4+Ml09KGtbZj4+Ml18MCk9PTEyPzA6Yn1pZihrW2Y+PjJdfDApe2I9a1tmPj4yXXwwO3I9ZztyZXR1cm4gYnwwfWlmKGlbKGtbYz4+Ml18MCkrNz4+MF18MCl7Yj1rW2Y+PjJdfDA7cj1nO3JldHVybiBifDB9Yj1GcihrWyhrW2M+PjJdfDApKzY0Pj4yXXwwLGxbKGtbYz4+Ml18MCkrMTI+PjBdfDApfDA7a1tmPj4yXT1iO2I9a1tmPj4yXXwwO3I9ZztyZXR1cm4gYnwwfWZ1bmN0aW9uIFZnKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wO2M9cjtyPXIrMTZ8MDtkPWMrNHwwO2U9YztrW2Q+PjJdPWE7a1tlPj4yXT1iO2tbKGtbZD4+Ml18MCkrMjg+PjJdPWtbZT4+Ml07cj1jO3JldHVybn1mdW5jdGlvbiBXZyhhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wLGg9MDtoPXI7cj1yKzMyfDA7Yz1oKzE2fDA7ZD1oKzEyfDA7ZT1oKzh8MDtnPWgrNHwwO2Y9aDtrW2Q+PjJdPWE7a1tlPj4yXT1iO2lmKCEobFsoa1tkPj4yXXwwKSs4Pj4wXXwwKSl7a1tjPj4yXT0wO2c9a1tjPj4yXXwwO3I9aDtyZXR1cm4gZ3wwfXdnKGtbZD4+Ml18MCk7ZG8gaWYoKGxbKGtbZD4+Ml18MCkrOD4+MF18MHwwKT09Mil7a1tmPj4yXT1rWyhrW2Q+PjJdfDApKzQ+PjJdO2E9bk4oa1trW2Y+PjJdPj4yXXwwKXwwO2tbZz4+Ml09YTtpZighKChrW2c+PjJdfDApIT0wJihrW2U+PjJdfDApPT0wKSl7Zz0oa1tkPj4yXXwwKSsyMHwwO2tbZz4+Ml09KGtbZz4+Ml18MCkrLTE7aVsoa1tmPj4yXXwwKSsyMD4+MF09MTtpTihrW2Y+PjJdfDApO2JyZWFrfWtbYz4+Ml09a1tnPj4yXTtnPWtbYz4+Ml18MDtyPWg7cmV0dXJuIGd8MH13aGlsZSgwKTtqTihrW2Q+PjJdfDApO2tbYz4+Ml09MDtnPWtbYz4+Ml18MDtyPWg7cmV0dXJuIGd8MH1mdW5jdGlvbiBYZyhhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wLGg9MDtoPXI7cj1yKzMyfDA7Yz1oKzE2fDA7ZD1oKzEyfDA7ZT1oKzh8MDtnPWgrNHwwO2Y9aDtrW2Q+PjJdPWE7a1tlPj4yXT1iO2tbZz4+Ml09MDtpZigobFsoa1tkPj4yXXwwKSs4Pj4wXXwwKT09Mil7a1tmPj4yXT1rWyhrW2Q+PjJdfDApKzQ+PjJdO3dnKGtbZD4+Ml18MCk7aWYoKGlbKGtbZj4+Ml18MCkrMTc+PjBdfDApIT0wPyhiPW1OKGtbZj4+Ml18MCl8MCxrW2c+PjJdPWIsKGtbZz4+Ml18MCkhPTApOjApe2tbYz4+Ml09a1tnPj4yXTtiPWtbYz4+Ml18MDtyPWg7cmV0dXJuIGJ8MH1pZihpWyhrW2Y+PjJdfDApKzE5Pj4wXXwwKVZnKGtba1tmPj4yXT4+Ml18MCxrWyhrW2Y+PjJdfDApKzQ0Pj4yXXwwKTtiPVJnKGtba1tmPj4yXT4+Ml18MCxrW2U+PjJdfDAsMCl8MDtrW2c+PjJdPWJ9a1tjPj4yXT1rW2c+PjJdO2I9a1tjPj4yXXwwO3I9aDtyZXR1cm4gYnwwfWZ1bmN0aW9uIFlnKGEpe2E9YXwwO3ZhciBiPTAsYz0wO2M9cjtyPXIrMTZ8MDtiPWM7a1tiPj4yXT1hO3I9YztyZXR1cm4gKGtbYj4+Ml18MCkrOTZ8MH1mdW5jdGlvbiBaZyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLG09MCxuPTAsbz0wLHA9MDtwPXI7cj1yKzQ4fDA7ZD1wKzMyfDA7ZT1wKzI4fDA7Zj1wKzI0fDA7bT1wKzIwfDA7aD1wKzE2fDA7aj1wKzEyfDA7bj1wKzh8MDtvPXArNHwwO2c9cDtrW2Q+PjJdPWE7a1tlPj4yXT1iO2tbZj4+Ml09YztrW2g+PjJdPWtbKGtbZD4+Ml18MCkrND4+Ml07d2coa1tkPj4yXXwwKTtpZighKGtbZT4+Ml18MCkpe2M9Zkkoa1toPj4yXXwwLDAsMCl8MDtrW2U+PjJdPWM7a1ttPj4yXT1jO2lmKGtbbT4+Ml18MClrW2Y+PjJdPTB9ZWxzZSBrW20+PjJdPTA7aWYoKGtbZT4+Ml18MCkhPTA/KGM9ZUooa1tkPj4yXXwwLGtbZT4+Ml18MCxrW2Y+PjJdfDApfDAsa1tuPj4yXT1jLChrW24+PjJdfDApIT0wKTowKWtbbT4+Ml09a1tuPj4yXTtpZigobFsoa1tkPj4yXXwwKSs4Pj4wXXwwfDApIT0yKXtjPWtbZD4+Ml18MDtqTihjKTtjPWtbbT4+Ml18MDtyPXA7cmV0dXJuIGN8MH1jPUFyKGtba1toPj4yXT4+Ml18MCl8MDtrW28+PjJdPWM7aWYoa1tvPj4yXXwwKWtbbT4+Ml09a1tvPj4yXTtpZighKGZHKGtbaD4+Ml18MCwxLGosMCl8MCkpe2M9cXIoKGtbKGtbaj4+Ml18MCkrNTY+PjJdfDApKzI4fDApfDA7a1tnPj4yXT1jO2lmKCEoa1tnPj4yXXwwKSlQZyhrW2tbaD4+Ml0+PjJdfDAsZyk7a1soa1toPj4yXXwwKSs0ND4+Ml09a1tnPj4yXTtfQihrW2o+PjJdfDApfWlbKGtbaD4+Ml18MCkrMjA+PjBdPTE7aU4oa1toPj4yXXwwKTtjPWtbZD4+Ml18MDtqTihjKTtjPWtbbT4+Ml18MDtyPXA7cmV0dXJuIGN8MH1mdW5jdGlvbiBfZyhhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxsPTA7bD1yO3I9ciszMnwwO2I9bCsyOHwwO2M9bCsyNHwwO2Q9bCsyMHwwO2c9bCsxNnwwO2o9bCsxMnwwO2U9bCs4fDA7Zj1sKzR8MDtoPWw7a1tiPj4yXT1hO2lmKChrWyhrW2I+PjJdfDApKzg0Pj4yXXwwKSE9MTY5MTM1MjE5MSl7cj1sO3JldHVybn1pZih6dShrW2I+PjJdfDApfDApe3I9bDtyZXR1cm59Z0ooa1tiPj4yXXwwLDApO2hKKGtbYj4+Ml18MCk7a1tkPj4yXT0wO3doaWxlKDEpe2lmKChrW2Q+PjJdfDApPj0oa1soa1tiPj4yXXwwKSsyMD4+Ml18MCkpYnJlYWs7a1tnPj4yXT0oa1soa1tiPj4yXXwwKSsxNj4+Ml18MCkrKGtbZD4+Ml08PDQpO2lmKChrWyhrW2c+PjJdfDApKzQ+PjJdfDApIT0wPyhWQihrWyhrW2c+PjJdfDApKzQ+PjJdfDApfDAsa1soa1tnPj4yXXwwKSs0Pj4yXT0wLChrW2Q+PjJdfDApIT0xKTowKWtbKGtbZz4+Ml18MCkrMTI+PjJdPTA7a1tkPj4yXT0oa1tkPj4yXXwwKSsxfWlmKGtbKGtbKGtbYj4+Ml18MCkrMTY+PjJdfDApKzE2KzEyPj4yXXwwKUlqKGtbKGtbKGtbYj4+Ml18MCkrMTY+PjJdfDApKzE2KzEyPj4yXXwwKTtFdShrW2I+PjJdfDApO1dCKGtbYj4+Ml18MCk7a1tjPj4yXT1rWyhrW2I+PjJdfDApKzM0OCs4Pj4yXTt3aGlsZSgxKXtpZighKGtbYz4+Ml18MCkpYnJlYWs7a1tlPj4yXT1rWyhrW2M+PjJdfDApKzg+PjJdO2Rve3d1KGtbYj4+Ml18MCxrW2U+PjJdfDApO2tbaj4+Ml09a1soa1tlPj4yXXwwKSs4Pj4yXTtiZyhrW2I+PjJdfDAsa1tlPj4yXXwwKTtrW2U+PjJdPWtbaj4+Ml19d2hpbGUoKGtbZT4+Ml18MCkhPTApO2tbYz4+Ml09a1trW2M+PjJdPj4yXX1Laigoa1tiPj4yXXwwKSszNDh8MCk7a1tjPj4yXT1rWyhrW2I+PjJdfDApKzM2NCs4Pj4yXTt3aGlsZSgxKXtpZighKGtbYz4+Ml18MCkpYnJlYWs7a1tmPj4yXT1rWyhrW2M+PjJdfDApKzg+PjJdO2tbZD4+Ml09MDt3aGlsZSgxKXtpZigoa1tkPj4yXXwwKT49MylicmVhaztpZihrWyhrW2Y+PjJdfDApKygoa1tkPj4yXXwwKSoyMHwwKSsxNj4+Ml18MClfYltrWyhrW2Y+PjJdfDApKygoa1tkPj4yXXwwKSoyMHwwKSsxNj4+Ml0mMjU1XShrWyhrW2Y+PjJdfDApKygoa1tkPj4yXXwwKSoyMHwwKSs4Pj4yXXwwKTtrW2Q+PjJdPShrW2Q+PjJdfDApKzF9Ymcoa1tiPj4yXXwwLGtbZj4+Ml18MCk7a1tjPj4yXT1rW2tbYz4+Ml0+PjJdfUtqKChrW2I+PjJdfDApKzM2NHwwKTtrW2M+PjJdPWtbKGtbYj4+Ml18MCkrMzIwKzg+PjJdO3doaWxlKDEpe2lmKCEoa1tjPj4yXXwwKSlicmVhaztrW2g+PjJdPWtbKGtbYz4+Ml18MCkrOD4+Ml07aWYoa1soa1toPj4yXXwwKSsxMj4+Ml18MClfYltrWyhrW2g+PjJdfDApKzEyPj4yXSYyNTVdKGtbKGtbaD4+Ml18MCkrOD4+Ml18MCk7dUkoa1tiPj4yXXwwLGtbaD4+Ml18MCk7Ymcoa1tiPj4yXXwwLGtbaD4+Ml18MCk7a1tjPj4yXT1rW2tbYz4+Ml0+PjJdfUtqKChrW2I+PjJdfDApKzMyMHwwKTt2ZyhrW2I+PjJdfDAsMCk7bWgoa1soa1tiPj4yXXwwKSsyNDQ+PjJdfDApO2tbKGtbYj4+Ml18MCkrODQ+PjJdPS0xMjU0Nzg2NzY4O2JnKGtbYj4+Ml18MCxrWyhrWyhrW2I+PjJdfDApKzE2Pj4yXXwwKSsxNisxMj4+Ml18MCk7a1soa1tiPj4yXXwwKSs4ND4+Ml09LTE2MjM0NDYyMjE7aWYoaVsoa1tiPj4yXXwwKSsyNTYrNj4+MF18MClVZChrWyhrW2I+PjJdfDApKzI1NiszMj4+Ml18MCk7VWQoa1tiPj4yXXwwKTtyPWw7cmV0dXJufWZ1bmN0aW9uICRnKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MDtjPXI7cj1yKzE2fDA7Yj1jKzh8MDtkPWMrNHwwO2tbZD4+Ml09YTtpZighKGtba1tkPj4yXT4+Ml18MCkpeyRkKDIxLDQ0MDA0LGMpO2tbYj4+Ml09MTtkPWtbYj4+Ml18MDtyPWM7cmV0dXJuIGR8MH1lbHNle2tbYj4+Ml09MDtkPWtbYj4+Ml18MDtyPWM7cmV0dXJuIGR8MH1yZXR1cm4gMH1mdW5jdGlvbiBhaChhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wO2Y9cjtyPXIrMzJ8MDtjPWYrMjB8MDtkPWYrMTZ8MDtnPWYrOHwwO2U9ZjtrW2M+PjJdPWE7a1tkPj4yXT1iO0FJKGtba1tjPj4yXT4+Ml18MCxnKXwwO2I9ZzthPShrW2Q+PjJdfDApKzEyOHwwO2E9X1Ioa1tiPj4yXXwwLGtbYis0Pj4yXXwwLGtbYT4+Ml18MCxrW2ErND4+Ml18MCl8MDthPWtTKGF8MCxMfDAsMWU2LDApfDA7Yj1lO2tbYj4+Ml09YTtrW2IrND4+Ml09TDtpZihrWyhrW2M+PjJdfDApKzE5Mj4+Ml18MCl7Zz1lO2ljW2tbKGtbYz4+Ml18MCkrMTkyPj4yXSYyNTVdKGtbKGtbYz4+Ml18MCkrMTk2Pj4yXXwwLGtbKGtbZD4+Ml18MCkrMTc2Pj4yXXwwLGtbZz4+Ml18MCxrW2crND4+Ml18MCl9aWYoISgobFsoa1tjPj4yXXwwKSs3Nj4+MF18MCkmMikpe2c9a1tkPj4yXXwwO2c9ZysxMjh8MDtiPWc7a1tiPj4yXT0wO2c9Zys0fDA7a1tnPj4yXT0wO3I9ZjtyZXR1cm59ZWNba1soa1tjPj4yXXwwKSsxODQ+PjJdJjI1NV0oMixrWyhrW2M+PjJdfDApKzE4OD4+Ml18MCxrW2Q+PjJdfDAsZSl8MDtnPWtbZD4+Ml18MDtnPWcrMTI4fDA7Yj1nO2tbYj4+Ml09MDtnPWcrNHwwO2tbZz4+Ml09MDtyPWY7cmV0dXJufWZ1bmN0aW9uIGJoKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MDtkPXI7cj1yKzE2fDA7Yj1kKzR8MDtjPWQ7a1tiPj4yXT1hO2tbYz4+Ml09MDtpZighKChrWyhrW2I+PjJdfDApKzIwPj4yXXwwKSE9NzcwODM3OTIzPyhrWyhrW2I+PjJdfDApKzIwPj4yXXwwKSE9ODMyMzE3ODExOjApKXthPWRoKGtbYj4+Ml18MCl8MDtrW2M+PjJdPWF9bXYoa1tiPj4yXXwwKTtyPWQ7cmV0dXJuIGtbYz4+Ml18MH1mdW5jdGlvbiBjaChhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTA7Zj1yO3I9cisxNnwwO2M9Zis4fDA7ZD1mKzR8MDtlPWY7a1tkPj4yXT1hO2tbZT4+Ml09YjtpZigoa1tlPj4yXXwwKT09MzA4Mj8xOihsWyhrW2Q+PjJdfDApKzY5Pj4wXXwwfDApIT0wKXtiPWhOKGtbZD4+Ml18MCl8MDtrW2M+PjJdPWI7Yj1rW2M+PjJdfDA7cj1mO3JldHVybiBifDB9ZWxzZXtrW2M+PjJdPWtbZT4+Ml0ma1soa1tkPj4yXXwwKSs1Nj4+Ml07Yj1rW2M+PjJdfDA7cj1mO3JldHVybiBifDB9cmV0dXJuIDB9ZnVuY3Rpb24gZGgoYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wLGU9MCxmPTAsZz0wO2U9cjtyPXIrMTZ8MDtkPWU7Yj1lKzh8MDtjPWUrNHwwO2tbYj4+Ml09YTtrW2M+PjJdPWtba1tiPj4yXT4+Ml07TEkoa1tiPj4yXXwwKXwwO2E9a1tiPj4yXXwwO2lmKChrWyhrW2I+PjJdfDApKzM2Pj4yXXwwKT49MCl7RUkoYSl8MDtiZyhrW2M+PjJdfDAsa1soa1tiPj4yXXwwKSsxMDg+PjJdfDApO2tbKGtbYj4+Ml18MCkrMTA4Pj4yXT0wO2lmKChtWyhrW2I+PjJdfDApKzE0ND4+MV18MCk+Pj41JjEpe2Q9KGtbYj4+Ml18MCkrMTQ0fDA7altkPj4xXT1qW2Q+PjFdJi0yfDF9fWVsc2UgaWYoKGtbYSs0MD4+Ml18MCkhPTA/KGpbKGtbYj4+Ml18MCkrMTQ0Pj4xXSYxfDApIT0wOjApe2c9a1tjPj4yXXwwO2Y9a1soa1tiPj4yXXwwKSs0MD4+Ml18MDthPShrWyhrW2I+PjJdfDApKzEwOD4+Ml18MCkhPTA/MTgzOTE6MDtrW2Q+PjJdPWtbKGtbYj4+Ml18MCkrMTA4Pj4yXTt0ZyhnLGYsYSxkKTtiZyhrW2M+PjJdfDAsa1soa1tiPj4yXXwwKSsxMDg+PjJdfDApO2tbKGtbYj4+Ml18MCkrMTA4Pj4yXT0wfWdOKGtbYj4+Ml18MCk7Zz0oa1tiPj4yXXwwKSs1NnwwO2tbZz4+Ml09MDtrW2crND4+Ml09MDtrWyhrW2I+PjJdfDApKzIwPj4yXT0xMjI0Mzg0Mzc0O3I9ZTtyZXR1cm4ga1soa1tiPj4yXXwwKSs0MD4+Ml0ma1soa1tjPj4yXXwwKSs1Nj4+Ml18MH1mdW5jdGlvbiBlaChhKXthPWF8MDt2YXIgYj0wLGM9MDtiPXI7cj1yKzE2fDA7Yz1iO2tbYz4+Ml09YTtrWyhrW2M+PjJdfDApKzIwPj4yXT03NzA4Mzc5MjM7a1soa1tjPj4yXXwwKSszNj4+Ml09LTE7a1soa1tjPj4yXXwwKSs0MD4+Ml09MDtpWyhrW2M+PjJdfDApKzE0Mj4+MF09MjtrWyhrW2M+PjJdfDApKzQ0Pj4yXT0wO2tbKGtbYz4+Ml18MCkrMzI+PjJdPTE7aVsoa1tjPj4yXXwwKSsxNDM+PjBdPS0xO2tbKGtbYz4+Ml18MCkrNDg+PjJdPTA7YT0oa1tjPj4yXXwwKSs2NHwwO2tbYT4+Ml09MDtrW2ErND4+Ml09MDtyPWI7cmV0dXJufWZ1bmN0aW9uIGZoKGEpe2E9YXwwO3ZhciBiPTAsYz0wO2M9cjtyPXIrMTZ8MDtiPWM7a1tiPj4yXT1hO2lmKCgobVsoa1tiPj4yXXwwKSs4Pj4xXXwwKSY5MzEyfDApPT0wPyhrWyhrW2I+PjJdfDApKzI0Pj4yXXwwKT09MDowKXtyPWM7cmV0dXJufWZOKGtbYj4+Ml18MCk7cj1jO3JldHVybn1mdW5jdGlvbiBnaChhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTAsZT0wO2Q9cjtyPXIrMTZ8MDtiPWQrOHwwO2M9ZCs0fDA7ZT1kO2tbYz4+Ml09YTthPShrWyhrW2M+PjJdfDApKzEyPj4yXXwwKSsoa1trW2M+PjJdPj4yXXwwKXwwO2tbZT4+Ml09YTtrW2U+PjJdPShrW2U+PjJdfDApPD0wPzE6YTtpZihZeChrW2M+PjJdfDAsa1tlPj4yXXwwLDEpfDApe2tbYj4+Ml09NztlPWtbYj4+Ml18MDtyPWQ7cmV0dXJuIGV8MH1lbHNle2RTKChrWyhrW2M+PjJdfDApKzE2Pj4yXXwwKSsoa1soa1tjPj4yXXwwKSsxMj4+Ml18MCl8MCwwLGtba1tjPj4yXT4+Ml18MCl8MDtlPShrW2M+PjJdfDApKzEyfDA7a1tlPj4yXT0oa1tlPj4yXXwwKSsoa1trW2M+PjJdPj4yXXwwKTtlPShrW2M+PjJdfDApKzh8MDtqW2U+PjFdPShtW2U+PjFdfDApJi0xNjg5NztrW2I+PjJdPTA7ZT1rW2I+PjJdfDA7cj1kO3JldHVybiBlfDB9cmV0dXJuIDB9ZnVuY3Rpb24gaGgoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wO2Y9cjtyPXIrMTZ8MDtjPWYrNHwwO2Q9ZjtlPWYrOHwwO2tbZD4+Ml09YTtpW2U+PjBdPWI7ZG8gaWYoa1tkPj4yXXwwKXtpZigoKG1bKGtbZD4+Ml18MCkrOD4+MV18MCkmNTE0fDApPT01MTQ/KGxbKGtbZD4+Ml18MCkrMTA+PjBdfDB8MCk9PShsW2U+PjBdfDB8MCk6MCl7a1tjPj4yXT1rWyhrW2Q+PjJdfDApKzE2Pj4yXTticmVha31pZigobVsoa1tkPj4yXXwwKSs4Pj4xXXwwKSYxKXtrW2M+PjJdPTA7YnJlYWt9ZWxzZXthPWVOKGtbZD4+Ml18MCxpW2U+PjBdfDApfDA7a1tjPj4yXT1hO2JyZWFrfX1lbHNlIGtbYz4+Ml09MDt3aGlsZSgwKTtyPWY7cmV0dXJuIGtbYz4+Ml18MH1mdW5jdGlvbiBpaChhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wO2c9cjtyPXIrMTZ8MDtlPWcrOHwwO2M9Zys0fDA7ZD1nKzEyfDA7Zj1nO2tbYz4+Ml09YTtpW2Q+PjBdPWI7a1tmPj4yXT1rW2M+PjJdO2lmKCgobVsoa1tmPj4yXXwwKSs4Pj4xXXwwKSYyfDApIT0wPyhsWyhrW2M+PjJdfDApKzEwPj4wXXwwfDApPT0obFtkPj4wXXwwfDApOjApe2tbZT4+Ml09a1soa1tmPj4yXXwwKSsxMj4+Ml07Zj1rW2U+PjJdfDA7cj1nO3JldHVybiBmfDB9YT1tWyhrW2Y+PjJdfDApKzg+PjFdfDA7aWYoKG1bKGtbZj4+Ml18MCkrOD4+MV18MCkmMTYpe2I9a1soa1tmPj4yXXwwKSsxMj4+Ml18MDtpZihhJjE2Mzg0KXtrW2U+PjJdPWIrKGtba1tmPj4yXT4+Ml18MCk7Zj1rW2U+PjJdfDA7cj1nO3JldHVybiBmfDB9ZWxzZXtrW2U+PjJdPWI7Zj1rW2U+PjJdfDA7cj1nO3JldHVybiBmfDB9fWVsc2UgaWYoYSYxKXtrW2U+PjJdPTA7Zj1rW2U+PjJdfDA7cj1nO3JldHVybiBmfDB9ZWxzZXtmPWROKGtbYz4+Ml18MCxpW2Q+PjBdfDApfDA7a1tlPj4yXT1mO2Y9a1tlPj4yXXwwO3I9ZztyZXR1cm4gZnwwfXJldHVybiAwfWZ1bmN0aW9uIGpoKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MCxlPTAsZj0wLGc9MC4wO2Y9cjtyPXIrMzJ8MDtjPWYrOHwwO2Q9ZisxNnwwO2U9ZjtrW2Q+PjJdPWE7Yj1rW2Q+PjJdfDA7aWYoKG1bKGtbZD4+Ml18MCkrOD4+MV18MCkmOCl7cFtjPj4zXT0rcFtiPj4zXTtnPStwW2M+PjNdO3I9ZjtyZXR1cm4gK2d9YT1rW2Q+PjJdfDA7aWYoKG1bYis4Pj4xXXwwKSY0KXtlPWE7cFtjPj4zXT0rKChrW2U+PjJdfDApPj4+MCkrNDI5NDk2NzI5Ni4wKisoa1tlKzQ+PjJdfDApO2c9K3BbYz4+M107cj1mO3JldHVybiArZ31pZigobVthKzg+PjFdfDApJjE4KXtwW2U+PjNdPTAuMDtveihrWyhrW2Q+PjJdfDApKzE2Pj4yXXwwLGUsa1soa1tkPj4yXXwwKSsxMj4+Ml18MCxpWyhrW2Q+PjJdfDApKzEwPj4wXXwwKXwwO3BbYz4+M109K3BbZT4+M107Zz0rcFtjPj4zXTtyPWY7cmV0dXJuICtnfWVsc2V7cFtjPj4zXT0wLjA7Zz0rcFtjPj4zXTtyPWY7cmV0dXJuICtnfXJldHVybiAwLjB9ZnVuY3Rpb24ga2goYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wLGU9MCxmPTA7Zj1yO3I9ciszMnwwO2I9Zis4fDA7Yz1mKzIwfDA7ZD1mKzE2fDA7ZT1mO2tbYz4+Ml09YTtrW2Q+PjJdPW1bKGtbYz4+Ml18MCkrOD4+MV07ZG8gaWYoIShrW2Q+PjJdJjQpKXtpZihrW2Q+PjJdJjgpe2E9VXgoK3Bba1tjPj4yXT4+M10pfDA7ZT1iO2tbZT4+Ml09YTtrW2UrND4+Ml09TDticmVha31pZihrW2Q+PjJdJjE4KXtkPWU7a1tkPj4yXT0wO2tbZCs0Pj4yXT0wO1dpKGtbKGtbYz4+Ml18MCkrMTY+PjJdfDAsZSxrWyhrW2M+PjJdfDApKzEyPj4yXXwwLGlbKGtbYz4+Ml18MCkrMTA+PjBdfDApfDA7ZD1lO2E9a1tkKzQ+PjJdfDA7ZT1iO2tbZT4+Ml09a1tkPj4yXTtrW2UrND4+Ml09YTticmVha31lbHNle2U9YjtrW2U+PjJdPTA7a1tlKzQ+PjJdPTA7YnJlYWt9fWVsc2V7ZD1rW2M+PjJdfDA7YT1rW2QrND4+Ml18MDtlPWI7a1tlPj4yXT1rW2Q+PjJdO2tbZSs0Pj4yXT1hfXdoaWxlKDApO2U9YjtMPWtbZSs0Pj4yXXwwO3I9ZjtyZXR1cm4ga1tlPj4yXXwwfWZ1bmN0aW9uIGxoKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MDtkPXI7cj1yKzE2fDA7Yj1kKzR8MDtjPWQ7a1tjPj4yXT1hO2RvIGlmKChtWyhrW2M+PjJdfDApKzg+PjFdfDApJjE4KXtpZigoKG1bKGtbYz4+Ml18MCkrOD4+MV18MCkmMTYzODR8MCkhPTA/KGdoKGtbYz4+Ml18MCl8MCkhPTA6MCl7a1tiPj4yXT03O2E9a1tiPj4yXXwwO3I9ZDtyZXR1cm4gYXwwfWlmKChrWyhrW2M+PjJdfDApKzI0Pj4yXXwwKSE9MD8oa1soa1tjPj4yXXwwKSsxNj4+Ml18MCk9PShrWyhrW2M+PjJdfDApKzIwPj4yXXwwKTowKWJyZWFrO2lmKCEoWXgoa1tjPj4yXXwwLChrWyhrW2M+PjJdfDApKzEyPj4yXXwwKSsyfDAsMSl8MCkpe2lbKGtbKGtbYz4+Ml18MCkrMTY+PjJdfDApKyhrWyhrW2M+PjJdfDApKzEyPj4yXXwwKT4+MF09MDtpWyhrWyhrW2M+PjJdfDApKzE2Pj4yXXwwKSsoKGtbKGtbYz4+Ml18MCkrMTI+PjJdfDApKzEpPj4wXT0wO2E9KGtbYz4+Ml18MCkrOHwwO2pbYT4+MV09bVthPj4xXXwwfDUxMjticmVha31rW2I+PjJdPTc7YT1rW2I+PjJdfDA7cj1kO3JldHVybiBhfDB9d2hpbGUoMCk7YT0oa1tjPj4yXXwwKSs4fDA7althPj4xXT0obVthPj4xXXwwKSYtNDA5NztrW2I+PjJdPTA7YT1rW2I+PjJdfDA7cj1kO3JldHVybiBhfDB9ZnVuY3Rpb24gbWgoYSl7YT1hfDA7dmFyIGI9MCxjPTA7Yz1yO3I9cisxNnwwO2I9YztrW2I+PjJdPWE7aWYoIShrW2I+PjJdfDApKXtyPWM7cmV0dXJufWZoKGtbYj4+Ml18MCk7Ymcoa1soa1tiPj4yXXwwKSszMj4+Ml18MCxrW2I+PjJdfDApO3I9YztyZXR1cm59ZnVuY3Rpb24gbmgoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGw9MCxtPTA7Zz1yO3I9ciszMnwwO2Y9ZysxMnwwO209Zys4fDA7bD1nKzR8MDtqPWcrMTZ8MDtoPWc7a1tmPj4yXT1hO2tbbT4+Ml09YjtrW2w+PjJdPWM7aVtqPj4wXT1kO2tbaD4+Ml09ZTtpZigocWgoa1trW2Y+PjJdPj4yXXwwLGtbbT4+Ml18MCxrW2w+PjJdfDAsaVtqPj4wXXwwLGtbaD4+Ml18MCl8MCkhPTE4KXtyPWc7cmV0dXJufUJlKGtbZj4+Ml18MCk7cj1nO3JldHVybn1mdW5jdGlvbiBvaChhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MDtnPXI7cj1yKzE2fDA7ZD1nKzh8MDtlPWcrNHwwO2Y9ZztrW2Q+PjJdPWE7a1tlPj4yXT1iO2tbZj4+Ml09YztpZighKChrW2U+PjJdfDApPT0wfChrW2U+PjJdfDApPT0oLTF8MCkpKV9iW2tbZT4+Ml0mMjU1XShrW2Q+PjJdfDApO2lmKCEoa1tmPj4yXXwwKSl7cj1nO3JldHVybiAxOH1CZShrW2Y+PjJdfDApO3I9ZztyZXR1cm4gMTh9ZnVuY3Rpb24gcGgoYSxiKXthPWF8MDtiPStiO3ZhciBjPTAsZD0wLGU9MDtlPXI7cj1yKzE2fDA7Yz1lKzh8MDtkPWU7a1tjPj4yXT1hO3BbZD4+M109YjtzaChrW2M+PjJdfDApO2lmKEFHKCtwW2Q+PjNdKXwwKXtyPWU7cmV0dXJufXBba1tjPj4yXT4+M109K3BbZD4+M107alsoa1tjPj4yXXwwKSs4Pj4xXT04O3I9ZTtyZXR1cm59ZnVuY3Rpb24gcWgoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsbj0wLG89MCxwPTAscT0wLHM9MCx0PTAsdT0wLHY9MDt1PXI7cj1yKzQ4fDA7aD11KzI4fDA7bj11KzI0fDA7Zj11KzIwfDA7dj11KzE2fDA7bz11KzM0fDA7cD11KzEyfDA7dD11Kzh8MDtzPXUrNHwwO3E9dSszMnwwO2c9dTtrW24+PjJdPWE7a1tmPj4yXT1iO2tbdj4+Ml09YztpW28+PjBdPWQ7a1twPj4yXT1lO2tbdD4+Ml09a1t2Pj4yXTtqW3E+PjFdPTA7ZD1rW24+PjJdfDA7aWYoIShrW2Y+PjJdfDApKXtzaChkKTtrW2g+PjJdPTA7dj1rW2g+PjJdfDA7cj11O3JldHVybiB2fDB9aWYoa1tkKzMyPj4yXXwwKWtbcz4+Ml09a1soa1soa1tuPj4yXXwwKSszMj4+Ml18MCkrOTY+PjJdO2Vsc2Uga1tzPj4yXT0xZTk7altxPj4xXT0obFtvPj4wXXwwKT09MD8xNjoyO2lmKChrW3Q+PjJdfDApPDApe2E6ZG8gaWYoKGxbbz4+MF18MCk9PTEpe3Y9VGYoa1tmPj4yXXwwKXwwO2tbdD4+Ml09djtpZigoa1t0Pj4yXXwwKT4oa1tzPj4yXXwwKSlrW3Q+PjJdPShrW3M+PjJdfDApKzF9ZWxzZXtrW3Q+PjJdPTA7d2hpbGUoMSl7aWYoKGtbdD4+Ml18MCk+KGtbcz4+Ml18MCkpYnJlYWsgYTtpZighKGlbKGtbZj4+Ml18MCkrKGtbdD4+Ml18MCk+PjBdfGlbKGtbZj4+Ml18MCkrKChrW3Q+PjJdfDApKzEpPj4wXSkpYnJlYWsgYTtrW3Q+PjJdPShrW3Q+PjJdfDApKzJ9fXdoaWxlKDApO2pbcT4+MV09bVtxPj4xXXw1MTJ9ZG8gaWYoKGtbcD4+Ml18MCkhPSgtMXwwKSl7dj0oa1twPj4yXXwwKT09MTcwO2ZoKGtbbj4+Ml18MCk7ZD1rW2Y+PjJdfDA7a1soa1tuPj4yXXwwKSsxNj4+Ml09ZDtpZih2KXtrWyhrW24+PjJdfDApKzIwPj4yXT1kO3Y9dXUoa1soa1tuPj4yXXwwKSszMj4+Ml18MCxrWyhrW24+PjJdfDApKzIwPj4yXXwwKXwwO2tbKGtbbj4+Ml18MCkrMjQ+PjJdPXY7YnJlYWt9ZWxzZXtrWyhrW24+PjJdfDApKzM2Pj4yXT1rW3A+PjJdO2pbcT4+MV09bVtxPj4xXXwoKGtbcD4+Ml18MCk9PTA/MjA0ODoxMDI0KTticmVha319ZWxzZXtrW2c+PjJdPWtbdD4+Ml07aWYobVtxPj4xXSY1MTIpa1tnPj4yXT0oa1tnPj4yXXwwKSsoKGxbbz4+MF18MCk9PTE/MToyKTtpZigoa1t0Pj4yXXwwKT4oa1tzPj4yXXwwKSl7a1toPj4yXT0xODt2PWtbaD4+Ml18MDtyPXU7cmV0dXJuIHZ8MH1pZighKFh4KGtbbj4+Ml18MCwoa1tnPj4yXXwwKT4zMj9rW2c+PjJdfDA6MzIpfDApKXtiUyhrWyhrW24+PjJdfDApKzE2Pj4yXXwwLGtbZj4+Ml18MCxrW2c+PjJdfDApfDA7YnJlYWt9a1toPj4yXT03O3Y9a1toPj4yXXwwO3I9dTtyZXR1cm4gdnwwfXdoaWxlKDApO2tbKGtbbj4+Ml18MCkrMTI+PjJdPWtbdD4+Ml07alsoa1tuPj4yXXwwKSs4Pj4xXT1qW3E+PjFdfDA7aVsoa1tuPj4yXXwwKSsxMD4+MF09KGxbbz4+MF18MCk9PTA/MTpsW28+PjBdfDA7aWYoKGxbKGtbbj4+Ml18MCkrMTA+PjBdfDApIT0xPyhjTihrW24+PjJdfDApfDApIT0wOjApe2tbaD4+Ml09Nzt2PWtbaD4+Ml18MDtyPXU7cmV0dXJuIHZ8MH1pZigoa1t0Pj4yXXwwKT4oa1tzPj4yXXwwKSl7a1toPj4yXT0xODt2PWtbaD4+Ml18MDtyPXU7cmV0dXJuIHZ8MH1lbHNle2tbaD4+Ml09MDt2PWtbaD4+Ml18MDtyPXU7cmV0dXJuIHZ8MH1yZXR1cm4gMH1mdW5jdGlvbiByaChhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wO2Y9cjtyPXIrMTZ8MDtkPWYrOHwwO2U9ZjtrW2Q+PjJdPWE7YT1lO2tbYT4+Ml09YjtrW2ErND4+Ml09YztpZigobVsoa1tkPj4yXXwwKSs4Pj4xXXwwKSY5MzEyKXthPWU7Yk4oa1tkPj4yXXwwLGtbYT4+Ml18MCxrW2ErND4+Ml18MCk7cj1mO3JldHVybn1lbHNle2M9ZTtlPWtbYys0Pj4yXXwwO2E9a1tkPj4yXXwwO2tbYT4+Ml09a1tjPj4yXTtrW2ErND4+Ml09ZTtqWyhrW2Q+PjJdfDApKzg+PjFdPTQ7cj1mO3JldHVybn19ZnVuY3Rpb24gc2goYSl7YT1hfDA7dmFyIGI9MCxjPTA7Yj1yO3I9cisxNnwwO2M9YjtrW2M+PjJdPWE7YT1rW2M+PjJdfDA7aWYoKG1bKGtbYz4+Ml18MCkrOD4+MV18MCkmOTMxMil7d0coYSk7cj1iO3JldHVybn1lbHNle2pbYSs4Pj4xXT0xO3I9YjtyZXR1cm59fWZ1bmN0aW9uIHRoKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MDtmPXI7cj1yKzE2fDA7Yz1mKzh8MDtkPWYrNHwwO2U9ZjtrW2M+PjJdPWE7a1tkPj4yXT1iO2tbZT4+Ml09MDtpZigobVsoa1tjPj4yXXwwKSs4Pj4xXXwwKSY5MzEyKXdHKGtbYz4+Ml18MCk7YT1rW2M+PjJdfDA7Yj1rW2Q+PjJdfDA7a1thPj4yXT1rW2I+PjJdO2tbYSs0Pj4yXT1rW2IrND4+Ml07a1thKzg+PjJdPWtbYis4Pj4yXTtrW2ErMTI+PjJdPWtbYisxMj4+Ml07a1thKzE2Pj4yXT1rW2IrMTY+PjJdO2E9KGtbYz4+Ml18MCkrOHwwO2pbYT4+MV09KG1bYT4+MV18MCkmLTEwMjU7aWYoISgobVsoa1tjPj4yXXwwKSs4Pj4xXXwwKSYxOCkpe2U9a1tlPj4yXXwwO3I9ZjtyZXR1cm4gZXwwfWlmKChtWyhrW2Q+PjJdfDApKzg+PjFdfDApJjIwNDgpe2U9a1tlPj4yXXwwO3I9ZjtyZXR1cm4gZXwwfWE9KGtbYz4+Ml18MCkrOHwwO2pbYT4+MV09bVthPj4xXXwwfDQwOTY7YT1saChrW2M+PjJdfDApfDA7a1tlPj4yXT1hO2U9a1tlPj4yXXwwO3I9ZjtyZXR1cm4gZXwwfWZ1bmN0aW9uIHVoKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wO2U9cjtyPXIrMTZ8MDtjPWUrNHwwO2Q9ZTtrW2M+PjJdPWE7a1tkPj4yXT1iO2ZoKGtbYz4+Ml18MCk7alsoa1tjPj4yXXwwKSs4Pj4xXT0xNjQwMDtrWyhrW2M+PjJdfDApKzEyPj4yXT0wO2lmKChrW2Q+PjJdfDApPDApa1tkPj4yXT0wO2tba1tjPj4yXT4+Ml09a1tkPj4yXTtpWyhrW2M+PjJdfDApKzEwPj4wXT0xO2tbKGtbYz4+Ml18MCkrMTY+PjJdPTA7cj1lO3JldHVybn1mdW5jdGlvbiB2aChhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTA7ZD1yO3I9cisxNnwwO2I9ZCs0fDA7Yz1kO2tbYj4+Ml09YTtrW2M+PjJdPTQzMzc4O2lmKChrW2I+PjJdfDApIT01MTYpe2tbYj4+Ml09a1tiPj4yXSYyNTU7aWYoKGtbYj4+Ml18MCk+PTAmKGtbYj4+Ml18MCk8Mjc/KGtbNjI0MCsoa1tiPj4yXTw8Mik+PjJdfDApIT0wOjApa1tjPj4yXT1rWzYyNDArKGtbYj4+Ml08PDIpPj4yXX1lbHNlIGtbYz4+Ml09NDMzOTI7cj1kO3JldHVybiBrW2M+PjJdfDB9ZnVuY3Rpb24gd2goYSl7YT1hfDA7dmFyIGI9MCxjPTA7Yz1yO3I9cisxNnwwO2I9YztrW2I+PjJdPWE7aWYobFsoa1tiPj4yXXwwKSs2OT4+MF18MCl7cj1jO3JldHVybn1pZihsWyhrW2I+PjJdfDApKzcwPj4wXXwwKXtyPWM7cmV0dXJufWlbKGtbYj4+Ml18MCkrNjk+PjBdPTE7aWYoKGtbKGtbYj4+Ml18MCkrMTY4Pj4yXXwwKT4wKWtbKGtbYj4+Ml18MCkrMjQ4Pj4yXT0xO2E9KGtbYj4+Ml18MCkrMjU2fDA7a1thPj4yXT0oa1thPj4yXXwwKSsxO3I9YztyZXR1cm59ZnVuY3Rpb24geGgoYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wO2Q9cjtyPXIrMTZ8MDtiPWQrOHwwO2M9ZCs0fDA7a1tjPj4yXT1hO2lmKCEoa1tjPj4yXXwwKSl7JGQoMjEsNDMzMzgsZCk7a1tiPj4yXT0xO2E9a1tiPj4yXXwwO3I9ZDtyZXR1cm4gYXwwfWVsc2V7YT0kZyhrW2M+PjJdfDApfDA7a1tiPj4yXT1hO2E9a1tiPj4yXXwwO3I9ZDtyZXR1cm4gYXwwfXJldHVybiAwfWZ1bmN0aW9uIHloKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MCxlPTAsZj0wLGc9MDtnPXI7cj1yKzE2fDA7Yj1nKzEyfDA7Yz1nKzh8MDtkPWcrNHwwO2U9ZztrW2M+PjJdPWE7aWYoKGtbKGtbYz4+Ml18MCkrMjA+PjJdfDApIT03NzA4Mzc5MjMpZ2Uoa1tjPj4yXXwwKXwwO2tbZD4+Ml09a1trW2M+PjJdPj4yXTthPWtbYz4+Ml18MDtpZihpWyhrW2Q+PjJdfDApKzY5Pj4wXXwwKXtrW2ErNDA+PjJdPTc7a1tiPj4yXT03O2Y9a1tiPj4yXXwwO3I9ZztyZXR1cm4gZnwwfWlmKChrW2ErMzY+PjJdfDApPD0wPyhqWyhrW2M+PjJdfDApKzE0ND4+MV0mMXwwKSE9MDowKXtrWyhrW2M+PjJdfDApKzQwPj4yXT0xNztrW2U+PjJdPTF9ZWxzZXtpZigoa1soa1tjPj4yXXwwKSszNj4+Ml18MCk8MCl7aWYoIShrWyhrW2Q+PjJdfDApKzE1Nj4+Ml18MCkpa1soa1tkPj4yXXwwKSsyNDg+PjJdPTA7aWYoISgoa1soa1tkPj4yXXwwKSsxOTI+PjJdfDApPT0wPyhsWyhrW2Q+PjJdfDApKzc2Pj4wXSYyfDApPT0wOjApKWY9MTM7aWYoKChmfDApPT0xMz8oaVsoa1tkPj4yXXwwKSsxNDgrNT4+MF18MCk9PTA6MCk/KGtbKGtbYz4+Ml18MCkrMTc2Pj4yXXwwKSE9MDowKUFJKGtba1tkPj4yXT4+Ml18MCwoa1tjPj4yXXwwKSsxMjh8MCl8MDtmPShrW2Q+PjJdfDApKzE1NnwwO2tbZj4+Ml09KGtbZj4+Ml18MCkrMTtpZighKChtWyhrW2M+PjJdfDApKzE0ND4+MV18MCk+Pj43JjEpKXtmPShrW2Q+PjJdfDApKzE2NHwwO2tbZj4+Ml09KGtbZj4+Ml18MCkrMX1pZigobVsoa1tjPj4yXXwwKSsxNDQ+PjFdfDApPj4+OCYxKXtmPShrW2Q+PjJdfDApKzE2MHwwO2tbZj4+Ml09KGtbZj4+Ml18MCkrMX1rWyhrW2M+PjJdfDApKzM2Pj4yXT0wfWlmKChtWyhrW2M+PjJdfDApKzE0ND4+MV18MCk+Pj4yJjMpe2Y9Qkkoa1tjPj4yXXwwKXwwO2tbZT4+Ml09Zn1lbHNle2Y9KGtbZD4+Ml18MCkrMTY4fDA7a1tmPj4yXT0oa1tmPj4yXXwwKSsxO2Y9Q0koa1tjPj4yXXwwKXwwO2tbZT4+Ml09ZjtmPShrW2Q+PjJdfDApKzE2OHwwO2tbZj4+Ml09KGtbZj4+Ml18MCkrLTF9aWYoKGtbZT4+Ml18MCkhPTEwMD8oZj0oa1tjPj4yXXwwKSsxMjh8MCxhPWtbZis0Pj4yXXwwLChhfDApPjB8KGF8MCk9PTAmKGtbZj4+Ml18MCk+Pj4wPjApOjApYWgoa1tkPj4yXXwwLGtbYz4+Ml18MCk7aWYoKGtbZT4+Ml18MCk9PTEwMT8oZj1ESShrW2Q+PjJdfDApfDAsa1soa1tjPj4yXXwwKSs0MD4+Ml09Ziwoa1soa1tjPj4yXXwwKSs0MD4+Ml18MCkhPTApOjApa1tlPj4yXT0xO2tbKGtbZD4+Ml18MCkrNTI+PjJdPWtbZT4+Ml07aWYoNz09KGNoKGtba1tjPj4yXT4+Ml18MCxrWyhrW2M+PjJdfDApKzQwPj4yXXwwKXwwKSlrWyhrW2M+PjJdfDApKzQwPj4yXT03fWlmKCgoa1tlPj4yXXwwKSE9MTAwPygobVsoa1tjPj4yXXwwKSsxNDQ+PjFdfDApPj4+OSYxfDApIT0wOjApJihrW2U+PjJdfDApIT0xMDEpe2Y9RUkoa1tjPj4yXXwwKXwwO2tbZT4+Ml09Zn1rW2I+PjJdPWtbZT4+Ml0ma1soa1tkPj4yXXwwKSs1Nj4+Ml07Zj1rW2I+PjJdfDA7cj1nO3JldHVybiBmfDB9ZnVuY3Rpb24gemgoYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wLGU9MCxmPTAsZz0wLGg9MDtnPXI7cj1yKzMyfDA7Yj1nKzIwfDA7Yz1nKzE2fDA7Zj1nKzEyfDA7ZT1nKzh8MDtoPWcrNHwwO2Q9ZztrW2M+PjJdPWE7YT1hZihrW2M+PjJdfDApfDA7a1toPj4yXT1hO2E9X0Eoa1tjPj4yXXwwKXwwO2tbZD4+Ml09YTthPWRpKGtbZD4+Ml18MCxrW2g+PjJdfDAsLTEsMCxrW2M+PjJdfDAsZSwwKXwwO2tbZj4+Ml09YTtpZighKGtbZj4+Ml18MCkpe3lJKGtbZT4+Ml18MCxrW2M+PjJdfDApO0poKGtbZT4+Ml18MCxrW2M+PjJdfDApfDA7ekkoa1tlPj4yXXwwKTtiaChrW2U+PjJdfDApfDA7a1tiPj4yXT0wO2g9a1tiPj4yXXwwO3I9ZztyZXR1cm4gaHwwfWlmKChrW2Y+PjJdfDApPT03KXdoKGtbZD4+Ml18MCk7a1tiPj4yXT1rW2Y+PjJdO2g9a1tiPj4yXXwwO3I9ZztyZXR1cm4gaHwwfWZ1bmN0aW9uIEFoKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wO2g9cjtyPXIrMzJ8MDtjPWgrMTZ8MDtkPWgrMTJ8MDtlPWgrOHwwO2c9aCs0fDA7Zj1oO2tbZD4+Ml09YTtrW2U+PjJdPWI7aWYoIShrW2U+PjJdfDApKXtrW2M+PjJdPTA7Zz1rW2M+PjJdfDA7cj1oO3JldHVybiBnfDB9Yj0oVGYoa1tlPj4yXXwwKXwwKSsxfDA7a1tmPj4yXT1iO2I9a1tmPj4yXXwwO2I9TWgoa1tkPj4yXXwwLGIsKChifDApPDApPDwzMT4+MzEpfDA7a1tnPj4yXT1iO2lmKGtbZz4+Ml18MCliUyhrW2c+PjJdfDAsa1tlPj4yXXwwLGtbZj4+Ml18MCl8MDtrW2M+PjJdPWtbZz4+Ml07Zz1rW2M+PjJdfDA7cj1oO3JldHVybiBnfDB9ZnVuY3Rpb24gQmgoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wO2Y9cjtyPXIrMTZ8MDtjPWYrOHwwO2Q9Zis0fDA7ZT1mO2tbYz4+Ml09YTtrW2Q+PjJdPWI7a1tlPj4yXT1rWyhrW2M+PjJdfDApKzg+PjJdO2I9a1tlPj4yXXwwO2lmKChrW2Q+PjJdfDApPjApe1h4KGIsa1tkPj4yXXwwKXwwO2pbKGtbZT4+Ml18MCkrOD4+MV09ODE5MjtrW2tbZT4+Ml0+PjJdPWtbKGtbYz4+Ml18MCkrND4+Ml07aWYoa1soa1tlPj4yXXwwKSsxNj4+Ml18MClkUyhrWyhrW2U+PjJdfDApKzE2Pj4yXXwwLDAsa1tkPj4yXXwwKXwwfWVsc2V7c2goYik7a1soa1tlPj4yXXwwKSsxNj4+Ml09MH1yPWY7cmV0dXJuIGtbKGtbZT4+Ml18MCkrMTY+PjJdfDB9ZnVuY3Rpb24gQ2goYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTA7Zj1yO3I9cisxNnwwO2c9ZisxMnwwO2Q9ZjtlPWYrOHwwO2tbZz4+Ml09YTthPWQ7a1thPj4yXT1iO2tbYSs0Pj4yXT1jO2E9ZDthPU1oKGtbZz4+Ml18MCxrW2E+PjJdfDAsa1thKzQ+PjJdfDApfDA7a1tlPj4yXT1hO2lmKCEoa1tlPj4yXXwwKSl7Zz1rW2U+PjJdfDA7cj1mO3JldHVybiBnfDB9ZFMoa1tlPj4yXXwwLDAsa1tkPj4yXXwwKXwwO2c9a1tlPj4yXXwwO3I9ZjtyZXR1cm4gZ3wwfWZ1bmN0aW9uIERoKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wO2c9cjtyPXIrMzJ8MDtjPWcrMTZ8MDtoPWcrMTJ8MDtkPWcrOHwwO2Y9Zys0fDA7ZT1nO2tbaD4+Ml09YTtrW2Q+PjJdPWI7a1tmPj4yXT1rW2g+PjJdO2lmKCEoa1tmPj4yXXwwKSl7aD14SSgpfDA7a1tjPj4yXT1oO2g9a1tjPj4yXXwwO3I9ZztyZXR1cm4gaHwwfWlmKChrWyhrW2Y+PjJdfDApKzEwND4+Ml18MCkhPTA/KChrW2Q+PjJdfDApPj0wPyhrW2Q+PjJdfDApPChtWyhrW2Y+PjJdfDApKzE0MD4+MV18MHwwKTowKTowKWtbZT4+Ml09KGtbKGtbZj4+Ml18MCkrMTA0Pj4yXXwwKSsoKGtbZD4+Ml18MCkqNDB8MCk7ZWxzZXt2ZyhrW2tbZj4+Ml0+PjJdfDAsMjUpO2g9eEkoKXwwO2tbZT4+Ml09aH1rW2M+PjJdPWtbZT4+Ml07aD1rW2M+PjJdfDA7cj1nO3JldHVybiBofDB9ZnVuY3Rpb24gRWgoYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wO2M9cjtyPXIrMTZ8MDtkPWMrNHwwO2I9YztrW2Q+PjJdPWE7a1tiPj4yXT1rW2Q+PjJdO2lmKCEoa1tiPj4yXXwwKSl7cj1jO3JldHVybn1kPWNoKGtba1tiPj4yXT4+Ml18MCxrWyhrW2I+PjJdfDApKzQwPj4yXXwwKXwwO2tbKGtbYj4+Ml18MCkrNDA+PjJdPWQ7cj1jO3JldHVybn1mdW5jdGlvbiBGaChhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MCxsPTAsbT0wLG49MCxvPTA7bj1yO3I9ciszMnwwO289bisyOHwwO2U9bisyNHwwO2Y9bisyMHwwO2c9bisxNnwwO209bisxMnwwO2w9bis4fDA7aj1uKzR8MDtoPW47a1tvPj4yXT1hO2tbZT4+Ml09YjtrW2Y+PjJdPWM7a1tnPj4yXT1kO2tbbT4+Ml09MDtrW2w+PjJdPWtbbz4+Ml07a1toPj4yXT1rW2tbbD4+Ml0+PjJdO2M9SGUoa1tvPj4yXXwwKXwwO2tbaj4+Ml09YztpZighKChrW2U+PjJdfDApPj0wPyhrW2U+PjJdfDApPChrW2o+PjJdfDApOjApKXtvPWtbbT4+Ml18MDtyPW47cmV0dXJuIG98MH1vPWhhKGtbZz4+Ml18MCxrW2o+PjJdfDApfDA7a1tlPj4yXT0oa1tlPj4yXXwwKStvO289YmNba1tmPj4yXSYyNTVdKChrWyhrW2w+PjJdfDApKzEwMD4+Ml18MCkrKChrW2U+PjJdfDApKjQwfDApfDApfDA7a1ttPj4yXT1vO2lmKCEoaVsoa1toPj4yXXwwKSs2OT4+MF18MCkpe289a1ttPj4yXXwwO3I9bjtyZXR1cm4gb3wwfXppKGtbaD4+Ml18MCk7a1ttPj4yXT0wO289a1ttPj4yXXwwO3I9bjtyZXR1cm4gb3wwfWZ1bmN0aW9uIEdoKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsbT0wLG49MCxvPTAscD0wLHE9MCxzPTAsdD0wO3M9cjtyPXIrNDh8MDt0PXMrMjh8MDtnPXMrMjR8MDtoPXMrMjB8MDtqPXMrMTZ8MDttPXMrMTJ8MDtuPXMrMzJ8MDtvPXMrOHwwO3A9cys0fDA7cT1zO2tbdD4+Ml09YTtrW2c+PjJdPWI7a1toPj4yXT1jO2tbaj4+Ml09ZDtrW20+PjJdPWU7aVtuPj4wXT1mO2tbbz4+Ml09a1t0Pj4yXTtjPUhoKGtbbz4+Ml18MCxrW2c+PjJdfDApfDA7a1txPj4yXT1jO2lmKGtbcT4+Ml18MCl7aWYoISgoa1ttPj4yXXwwKSE9MCYoa1ttPj4yXXwwKSE9KC0xfDApKSl7dD1rW3E+PjJdfDA7cj1zO3JldHVybiB0fDB9X2Jba1ttPj4yXSYyNTVdKGtbaD4+Ml18MCk7dD1rW3E+PjJdfDA7cj1zO3JldHVybiB0fDB9aWYoIShrW2g+PjJdfDApKXt0PWtbcT4+Ml18MDtyPXM7cmV0dXJuIHR8MH1rW3A+PjJdPShrWyhrW28+PjJdfDApKzExNj4+Ml18MCkrKCgoa1tnPj4yXXwwKS0xfDApKjQwfDApO3Q9cWgoa1twPj4yXXwwLGtbaD4+Ml18MCxrW2o+PjJdfDAsaVtuPj4wXXwwLGtbbT4+Ml18MCl8MDtrW3E+PjJdPXQ7aWYoKGtbcT4+Ml18MCk9PTA/KGxbbj4+MF18MHwwKSE9MDowKXt0PXN1KGtbcD4+Ml18MCxsWyhrW2tbbz4+Ml0+PjJdfDApKzY2Pj4wXXwwKXwwO2tbcT4+Ml09dH12ZyhrW2tbbz4+Ml0+PjJdfDAsa1txPj4yXXwwKTt0PWNoKGtba1tvPj4yXT4+Ml18MCxrW3E+PjJdfDApfDA7a1txPj4yXT10O3Q9a1txPj4yXXwwO3I9cztyZXR1cm4gdHwwfWZ1bmN0aW9uIEhoKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wLGk9MDtpPXI7cj1yKzMyfDA7Zz1pO2M9aSsxNnwwO2Q9aSsxMnwwO2U9aSs4fDA7Zj1pKzR8MDtrW2Q+PjJdPWE7a1tlPj4yXT1iO2lmKHhoKGtbZD4+Ml18MCl8MCl7aD1WZig3NjM0OCl8MDtrW2M+PjJdPWg7aD1rW2M+PjJdfDA7cj1pO3JldHVybiBofDB9aWYoKGtbKGtbZD4+Ml18MCkrMjA+PjJdfDApPT03NzA4Mzc5MjM/KGtbKGtbZD4+Ml18MCkrMzY+PjJdfDApPDA6MCl7aWYoKGtbZT4+Ml18MCk+PTE/KGtbZT4+Ml18MCk8PShqWyhrW2Q+PjJdfDApKzE2Pj4xXXwwKTowKXtrW2U+PjJdPShrW2U+PjJdfDApKy0xO2tbZj4+Ml09KGtbKGtbZD4+Ml18MCkrMTE2Pj4yXXwwKSsoKGtbZT4+Ml18MCkqNDB8MCk7Zmgoa1tmPj4yXXwwKTtqWyhrW2Y+PjJdfDApKzg+PjFdPTE7dmcoa1trW2Q+PjJdPj4yXXwwLDApO2RvIGlmKChtWyhrW2Q+PjJdfDApKzE0ND4+MV18MCk+Pj45JjEpe2lmKCEoKGtbZT4+Ml18MCk8MzI/KGtbKGtbZD4+Ml18MCkrMTk2Pj4yXSYxPDxrW2U+PjJdfDApIT0wOjApKWg9MTI7aWYoKGh8MCk9PTEyPyhrWyhrW2Q+PjJdfDApKzE5Nj4+Ml18MCkhPS0xOjApYnJlYWs7aD0oa1tkPj4yXXwwKSsxNDR8MDtqW2g+PjFdPWpbaD4+MV0mLTJ8MX13aGlsZSgwKTtrW2M+PjJdPTA7aD1rW2M+PjJdfDA7cj1pO3JldHVybiBofDB9dmcoa1trW2Q+PjJdPj4yXXwwLDI1KTtrW2M+PjJdPTI1O2g9a1tjPj4yXXwwO3I9aTtyZXR1cm4gaHwwfXZnKGtba1tkPj4yXT4+Ml18MCwyMSk7a1tnPj4yXT1rWyhrW2Q+PjJdfDApKzE3Nj4+Ml07JGQoMjEsMzk4MzMsZyk7aD1WZig3NjM1Nil8MDtrW2M+PjJdPWg7aD1rW2M+PjJdfDA7cj1pO3JldHVybiBofDB9ZnVuY3Rpb24gSWgoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGw9MCxtPTA7bT1yO3I9ciszMnwwO2Q9bSsyMHwwO2U9bSsxNnwwO2Y9bSsxMnwwO2c9bSs4fDA7aD1tKzR8MDtsPW07a1tlPj4yXT1hO2tbZj4+Ml09YjtrW2c+PjJdPWM7aWYoIShrW2U+PjJdfDApKXtrW2Q+PjJdPTA7Yj1rW2Q+PjJdfDA7cj1tO3JldHVybiBifDB9YTpkbyBpZihrW2Y+PjJdfDApe2tbaD4+Ml09MDt3aGlsZSgxKXtpZigoa1toPj4yXXwwKT49KGpbKGtbZT4+Ml18MCkrMTg+PjFdfDApKWJyZWFrIGE7a1tsPj4yXT1rWyhrWyhrW2U+PjJdfDApKzEyMD4+Ml18MCkrKGtbaD4+Ml08PDIpPj4yXTtpZigoKGtbbD4+Ml18MCkhPTA/KHZSKGtbbD4+Ml18MCxrW2Y+PjJdfDAsa1tnPj4yXXwwKXwwKT09MDowKT8oaVsoa1tsPj4yXXwwKSsoa1tnPj4yXXwwKT4+MF18MCk9PTA6MClicmVhaztrW2g+PjJdPShrW2g+PjJdfDApKzF9a1tkPj4yXT0oa1toPj4yXXwwKSsxO2I9a1tkPj4yXXwwO3I9bTtyZXR1cm4gYnwwfXdoaWxlKDApO2tbZD4+Ml09MDtiPWtbZD4+Ml18MDtyPW07cmV0dXJuIGJ8MH1mdW5jdGlvbiBKaChhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wLGg9MDtmPXI7cj1yKzMyfDA7aD1mKzE2fDA7Zz1mKzEyfDA7ZD1mKzh8MDtlPWYrNHwwO2M9ZjtrW2g+PjJdPWE7a1tnPj4yXT1iO2tbZD4+Ml09a1toPj4yXTtrW2U+PjJdPWtbZz4+Ml07a1tjPj4yXT0wO3doaWxlKDEpe2lmKChrW2M+PjJdfDApPj0oalsoa1tkPj4yXXwwKSsxNj4+MV18MCkpYnJlYWs7d0koKGtbKGtbZT4+Ml18MCkrMTE2Pj4yXXwwKSsoKGtbYz4+Ml18MCkqNDB8MCl8MCwoa1soa1tkPj4yXXwwKSsxMTY+PjJdfDApKygoa1tjPj4yXXwwKSo0MHwwKXwwKTtrW2M+PjJdPShrW2M+PjJdfDApKzF9cj1mO3JldHVybiAwfWZ1bmN0aW9uIEtoKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wLG49MCxvPTAscT0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wO0Q9cjtyPXIrMjU2fDA7QT1EKzcyfDA7Qz1EKzY0fDA7Qj1EKzU2fDA7ej1EKzQ4fDA7eT1EKzQwfDA7ZD1EKzE0OHwwO2U9RCsxNDR8MDtmPUQrMTQwfDA7bj1EKzEzNnwwO3U9RCsxMzJ8MDtvPUQrMTI4fDA7dD1EKzEyNHwwO2g9RCsxMjB8MDt3PUQrMTE2fDA7dj1EKzg4fDA7eD1EO2M9RCs4NHwwO3E9RCs4MHwwO2c9RCsxNTJ8MDtzPUQrNzZ8MDtrW2Q+PjJdPWE7a1tlPj4yXT1iO2tbbj4+Ml09MDtrW3U+PjJdPTE7a1tmPj4yXT1rW2tbZD4+Ml0+PjJdO25nKHYsMCxEKzE1NnwwLDEwMCxrWyhrW2Y+PjJdfDApKzk2Pj4yXXwwKTthOmRvIGlmKChrWyhrW2Y+PjJdfDApKzE2OD4+Ml18MCk+MSl3aGlsZSgxKXtpZighKGlba1tlPj4yXT4+MF18MCkpYnJlYWsgYTtrW2M+PjJdPWtbZT4+Ml07ZG97Qz1rW2U+PjJdfDA7a1tlPj4yXT1DKzE7aWYoKGlbQz4+MF18MCk9PTEwKWJyZWFrfXdoaWxlKChpW2tbZT4+Ml0+PjBdfDApIT0wKTtDQSh2LDM5Nzk5LDMpO0NBKHYsa1tjPj4yXXwwLChrW2U+PjJdfDApLShrW2M+PjJdfDApfDApfWVsc2V7aWYoIShqWyhrW2Q+PjJdfDApKzE2Pj4xXXwwKSl7Qz1rW2U+PjJdfDA7Q0EodixDLFRmKGtbZT4+Ml18MCl8MCk7YnJlYWt9d2hpbGUoMSl7aWYoIShpW2tbZT4+Ml0+PjBdfDApKWJyZWFrIGE7Yz12SShrW2U+PjJdfDAsdCl8MDtrW28+PjJdPWM7Q0EodixrW2U+PjJdfDAsa1tvPj4yXXwwKTtrW2U+PjJdPShrW2U+PjJdfDApKyhrW28+PjJdfDApO2lmKCEoa1t0Pj4yXXwwKSlicmVhayBhO2RvIGlmKChpW2tbZT4+Ml0+PjBdfDApPT02MylpZigoa1t0Pj4yXXwwKT4xKXtfaSgoa1tlPj4yXXwwKSsxfDAsbil8MDticmVha31lbHNle2tbbj4+Ml09a1t1Pj4yXTticmVha31lbHNle2M9SWgoa1tkPj4yXXwwLGtbZT4+Ml18MCxrW3Q+PjJdfDApfDA7a1tuPj4yXT1jfXdoaWxlKDApO2tbZT4+Ml09KGtbZT4+Ml18MCkrKGtbdD4+Ml18MCk7a1t1Pj4yXT0oa1tuPj4yXXwwKSsxO2tbdz4+Ml09KGtbKGtbZD4+Ml18MCkrMTE2Pj4yXXwwKSsoKChrW24+PjJdfDApLTF8MCkqNDB8MCk7aWYobVsoa1t3Pj4yXXwwKSs4Pj4xXSYxKXtDQSh2LDM5NjkxLDQpO2NvbnRpbnVlfWI9a1t3Pj4yXXwwO2lmKG1bKGtbdz4+Ml18MCkrOD4+MV0mNCl7YT1iO2I9a1thKzQ+PjJdfDA7Yz15O2tbYz4+Ml09a1thPj4yXTtrW2MrND4+Ml09YjtCQSh2LDI4MjY2LHkpO2NvbnRpbnVlfWE9a1t3Pj4yXXwwO2lmKG1bYis4Pj4xXSY4KXtwW3o+PjNdPStwW2E+PjNdO0JBKHYsMjgyNzEseik7Y29udGludWV9aWYobVthKzg+PjFdJjIpe2lbZz4+MF09aVsoa1tmPj4yXXwwKSs2Nj4+MF18MDtpZigobFtnPj4wXXwwKSE9MSl7YT14O2I9YSs0MHwwO2Rve2tbYT4+Ml09MDthPWErNHwwfXdoaWxlKChhfDApPChifDApKTtrW3grMzI+PjJdPWtbZj4+Ml07cWgoeCxrWyhrW3c+PjJdfDApKzE2Pj4yXXwwLGtbKGtbdz4+Ml18MCkrMTI+PjJdfDAsaVtnPj4wXXwwLDApfDA7aWYoNz09KHN1KHgsMSl8MCkpe2lbdisyND4+MF09MTtrW3YrMTY+PjJdPTB9a1t3Pj4yXT14fWtbcT4+Ml09a1soa1t3Pj4yXXwwKSsxMj4+Ml07Yz1rWyhrW3c+PjJdfDApKzE2Pj4yXXwwO2tbQj4+Ml09a1txPj4yXTtrW0IrND4+Ml09YztCQSh2LDM5ODAzLEIpO2lmKChsW2c+PjBdfDApPT0xKWNvbnRpbnVlO2ZoKHgpO2NvbnRpbnVlfWVsc2V7aWYobVsoa1t3Pj4yXXwwKSs4Pj4xXSYxNjM4NCl7a1tDPj4yXT1rW2tbdz4+Ml0+PjJdO0JBKHYsMzk4MTAsQyk7Y29udGludWV9Q0EodiwzOTgyMywyKTtrW3M+PjJdPWtbKGtbdz4+Ml18MCkrMTI+PjJdO2tbaD4+Ml09MDt3aGlsZSgxKXtpZigoa1toPj4yXXwwKT49KGtbcz4+Ml18MCkpYnJlYWs7a1tBPj4yXT1pWyhrWyhrW3c+PjJdfDApKzE2Pj4yXXwwKSsoa1toPj4yXXwwKT4+MF0mMjU1O0JBKHYsMzk4MjYsQSk7a1toPj4yXT0oa1toPj4yXXwwKSsxfUNBKHYsMzk4MzEsMSk7Y29udGludWV9fX13aGlsZSgwKTtpZighKGlbdisyND4+MF18MCkpe0M9cGcodil8MDtyPUQ7cmV0dXJuIEN8MH1IQSh2KTtDPXBnKHYpfDA7cj1EO3JldHVybiBDfDB9ZnVuY3Rpb24gTGgoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTA7aD1yO3I9ciszMnwwO2M9aCsyMHwwO2Q9aCsxNnwwO2c9aCs4fDA7Zj1oO2U9aCsyNHwwO2tbYz4+Ml09YTtrW2Q+PjJdPWI7aVtlPj4wXT1pWyhrW2M+PjJdfDApKzEwPj4wXXwwO2lmKCEob3ooa1soa1tjPj4yXXwwKSsxNj4+Ml18MCxnLGtbKGtbYz4+Ml18MCkrMTI+PjJdfDAsaVtlPj4wXXwwKXwwKSl7cj1oO3JldHVybn1pZighKFdpKGtbKGtbYz4+Ml18MCkrMTY+PjJdfDAsZixrWyhrW2M+PjJdfDApKzEyPj4yXXwwLGlbZT4+MF18MCl8MCkpe2E9a1tmKzQ+PjJdfDA7Zz1rW2M+PjJdfDA7a1tnPj4yXT1rW2Y+PjJdO2tbZys0Pj4yXT1hO2c9KGtbYz4+Ml18MCkrOHwwO2pbZz4+MV09bVtnPj4xXXwwfDQ7cj1oO3JldHVybn1wW2tbYz4+Ml0+PjNdPStwW2c+PjNdO2c9KGtbYz4+Ml18MCkrOHwwO2pbZz4+MV09bVtnPj4xXXwwfDg7aWYoIShrW2Q+PjJdfDApKXtyPWg7cmV0dXJufVR4KGtbYz4+Ml18MCk7cj1oO3JldHVybn1mdW5jdGlvbiBNaChhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTA7aD1yO3I9ciszMnwwO2Q9aCsxNnwwO2U9aCsxMnwwO2Y9aDtnPWgrOHwwO2tbZT4+Ml09YTthPWY7a1thPj4yXT1iO2tbYSs0Pj4yXT1jO2lmKGtbZT4+Ml18MCl7Zz1mO2c9ZHgoa1tlPj4yXXwwLGtbZz4+Ml18MCxrW2crND4+Ml18MCl8MDtrW2Q+PjJdPWc7Zz1rW2Q+PjJdfDA7cj1oO3JldHVybiBnfDB9ZWxzZXthPWY7YT1qZyhrW2E+PjJdfDAsa1thKzQ+PjJdfDApfDA7a1tnPj4yXT1hO2tbZD4+Ml09a1tnPj4yXTtnPWtbZD4+Ml18MDtyPWg7cmV0dXJuIGd8MH1yZXR1cm4gMH1mdW5jdGlvbiBOaChhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MDtxPXI7cj1yKzY0fDA7cD1xKzE2fDA7bz1xO2g9cSs1MnwwO2o9cSs0OHwwO2U9cSs0NHwwO2w9cSs0MHwwO209cSszNnwwO249cSszMnwwO2c9cSsyOHwwO2Y9cSsyNHwwO2tbaj4+Ml09YTtrW2U+PjJdPWI7a1tsPj4yXT1jO2tbbT4+Ml09ZDtpZihVeihrW2o+PjJdfDApfDApe2tbaD4+Ml09MDtwPWtbaD4+Ml18MDtyPXE7cmV0dXJuIHB8MH1jPURpKGtba1tqPj4yXT4+Ml18MCxrW2w+PjJdfDAsa1ttPj4yXXwwKXwwO2tbbj4+Ml09YztpZighKGtbbj4+Ml18MCkpe2tbZz4+Ml09KGtbZT4+Ml0mMXwwKSE9MD8zOTc3MjozOTc4NTtpZigoKHhpKGtba1tqPj4yXT4+Ml18MCxrW20+PjJdfDApfDApPDE/KGM9Q2ooKGtba1tqPj4yXT4+Ml18MCkrMzIwfDAsa1tsPj4yXXwwKXwwLGtbZj4+Ml09Yywoa1tmPj4yXXwwKSE9MCk6MCk/KHRJKGtbaj4+Ml18MCxrW2Y+PjJdfDApfDApIT0wOjApe2tbaD4+Ml09a1soa1tmPj4yXXwwKSsxNj4+Ml07cD1rW2g+PjJdfDA7cj1xO3JldHVybiBwfDB9aWYoIShrW2U+PjJdJjIpKXtiPWtbaj4+Ml18MDtlPWtbZz4+Ml18MDtpZihrW20+PjJdfDApe209a1ttPj4yXXwwO3A9a1tsPj4yXXwwO2tbbz4+Ml09ZTtrW28rND4+Ml09bTtrW28rOD4+Ml09cDtPaChiLDMwMDI5LG8pfWVsc2V7bz1rW2w+PjJdfDA7a1twPj4yXT1lO2tbcCs0Pj4yXT1vO09oKGIsMzAwMzkscCl9aVsoa1tqPj4yXXwwKSsxNz4+MF09MX19a1toPj4yXT1rW24+PjJdO3A9a1toPj4yXXwwO3I9cTtyZXR1cm4gcHwwfWZ1bmN0aW9uIE9oKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTA7Zz1yO3I9cis0OHwwO2Q9ZyszMnwwO2o9ZysyOHwwO2Y9ZysyNHwwO2g9Zys4fDA7ZT1nO2tbZD4+Ml09YTtrW2o+PjJdPWI7a1tlPj4yXT1rW2tbZD4+Ml0+PjJdO2tbaD4+Ml09YztiPXl4KGtbZT4+Ml18MCxrW2o+PjJdfDAsaCl8MDtrW2Y+PjJdPWI7aWYoaVsoa1tlPj4yXXwwKSs3Mz4+MF18MCl7Ymcoa1tlPj4yXXwwLGtbZj4+Ml18MCk7cj1nO3JldHVybn1lbHNle2o9KGtbZD4+Ml18MCkrMzZ8MDtrW2o+PjJdPShrW2o+PjJdfDApKzE7Ymcoa1tlPj4yXXwwLGtbKGtbZD4+Ml18MCkrND4+Ml18MCk7a1soa1tkPj4yXXwwKSs0Pj4yXT1rW2Y+PjJdO2tbKGtbZD4+Ml18MCkrMTI+PjJdPTE7cj1nO3JldHVybn19ZnVuY3Rpb24gUGgoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wO2Y9cjtyPXIrMTZ8MDtjPWYrOHwwO2Q9Zis0fDA7ZT1mO2tbYz4+Ml09YTtrW2Q+PjJdPWI7a1tlPj4yXT0tMWU2O2lmKCEoa1tkPj4yXXwwKSl7ZT1rW2U+PjJdfDA7cj1mO3JldHVybiBlfDB9a1tlPj4yXT0wO3doaWxlKDEpe2lmKChrW2U+PjJdfDApPj0oa1soa1tjPj4yXXwwKSsyMD4+Ml18MCkpe2M9NjticmVha31pZigoa1soa1soa1tjPj4yXXwwKSsxNj4+Ml18MCkrKGtbZT4+Ml08PDQpKzEyPj4yXXwwKT09KGtbZD4+Ml18MCkpe2M9NjticmVha31rW2U+PjJdPShrW2U+PjJdfDApKzF9aWYoKGN8MCk9PTYpe2U9a1tlPj4yXXwwO3I9ZjtyZXR1cm4gZXwwfXJldHVybiAwfWZ1bmN0aW9uIFFoKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MDtlPXI7cj1yKzMyfDA7aD1lKzI4fDA7Zz1lKzI0fDA7Zj1lKzh8MDtkPWU7a1toPj4yXT1hO2tbZz4+Ml09YjtrW2Y+PjJdPWM7Yj15eChrW2g+PjJdfDAsa1tnPj4yXXwwLGYpfDA7a1tkPj4yXT1iO3I9ZTtyZXR1cm4ga1tkPj4yXXwwfWZ1bmN0aW9uIFJoKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MCxlPTAsZj0wLGc9MDtnPXI7cj1yKzE2fDA7Yz1nKzEyfDA7ZD1nKzh8MDtlPWcrNHwwO2Y9ZztrW2Q+PjJdPWE7a1tlPj4yXT1rW2tbZD4+Ml0+PjJdO2I9ZHgoa1tlPj4yXXwwLDIwOCwwKXwwO2tbZj4+Ml09YjtpZighKGtbZj4+Ml18MCkpe2tbYz4+Ml09MDtmPWtbYz4+Ml18MDtyPWc7cmV0dXJuIGZ8MH1hPShrW2Y+PjJdfDApKzg4fDA7Yj1hKzEyMHwwO2Rve2tbYT4+Ml09MDthPWErNHwwfXdoaWxlKChhfDApPChifDApKTtrW2tbZj4+Ml0+PjJdPWtbZT4+Ml07aWYoa1soa1tlPj4yXXwwKSs0Pj4yXXwwKWtbKGtbKGtbZT4+Ml18MCkrND4+Ml18MCkrND4+Ml09a1tmPj4yXTtrWyhrW2Y+PjJdfDApKzg+PjJdPWtbKGtbZT4+Ml18MCkrND4+Ml07a1soa1tmPj4yXXwwKSs0Pj4yXT0wO2tbKGtbZT4+Ml18MCkrND4+Ml09a1tmPj4yXTtrWyhrW2Y+PjJdfDApKzIwPj4yXT0zODE0Nzk1ODk7a1soa1tmPj4yXXwwKSsxMj4+Ml09a1tkPj4yXTtrW2M+PjJdPWtbZj4+Ml07Zj1rW2M+PjJdfDA7cj1nO3JldHVybiBmfDB9ZnVuY3Rpb24gU2goYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGk9MCxqPTAsbD0wLG09MCxuPTAsbz0wO2g9cjtyPXIrMzJ8MDtqPWgrMjR8MDtvPWgrMjB8MDtuPWgrMTZ8MDttPWgrMTJ8MDtsPWgrOHwwO2k9aCs0fDA7Zz1oO2tbaj4+Ml09YTtrW28+PjJdPWI7a1tuPj4yXT1jO2tbbT4+Ml09ZDtrW2w+PjJdPWU7a1tpPj4yXT1mO2Y9dHgoa1tqPj4yXXwwLGtbbz4+Ml18MCxrW24+PjJdfDAsa1ttPj4yXXwwLGtbbD4+Ml18MCl8MDtrW2c+PjJdPWY7V2goa1tqPj4yXXwwLGtbZz4+Ml18MCxrW2k+PjJdfDAsLTE0KTtyPWg7cmV0dXJuIGtbZz4+Ml18MH1mdW5jdGlvbiBUaChhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MDtlPXI7cj1yKzE2fDA7Yz1lO2Q9ZSs0fDA7a1tjPj4yXT1hO2lbZD4+MF09YjtpZigoa1soa1tjPj4yXXwwKSsxMzY+PjJdfDApPD0wKXtyPWU7cmV0dXJufWlbKGtbKGtbYz4+Ml18MCkrODg+PjJdfDApKygoKGtbKGtbYz4+Ml18MCkrMTM2Pj4yXXwwKS0xfDApKjIwfDApKzM+PjBdPWlbZD4+MF18MDtyPWU7cmV0dXJufWZ1bmN0aW9uIFVoKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLG09MCxuPTAsbz0wO289cjtyPXIrMzJ8MDtlPW8rMjh8MDtmPW8rMjR8MDtnPW8rMjB8MDtoPW8rMTZ8MDtqPW8rOHwwO249bys0fDA7bT1vO2tbZj4+Ml09YTtrW2c+PjJdPWI7a1toPj4yXT1jO2tbbysxMj4+Ml09ZDtpZigoKGtbKGtbZj4+Ml18MCkrMTM2Pj4yXXwwKSsoa1tnPj4yXXwwKXwwKT4oa1soa1soa1tmPj4yXXwwKSsxMj4+Ml18MCkrNDg+PjJdfDApPyh2eChrW2Y+PjJdfDAsa1tnPj4yXXwwKXwwKSE9MDowKXtrW2U+PjJdPTA7bj1rW2U+PjJdfDA7cj1vO3JldHVybiBufDB9YT0oa1soa1tmPj4yXXwwKSs4OD4+Ml18MCkrKChrWyhrW2Y+PjJdfDApKzEzNj4+Ml18MCkqMjB8MCl8MDtrW24+PjJdPWE7a1ttPj4yXT1hO2tbaj4+Ml09MDt3aGlsZSgxKXtpZigoa1tqPj4yXXwwKT49KGtbZz4+Ml18MCkpYnJlYWs7aVtrW24+PjJdPj4wXT1pW2tbaD4+Ml0+PjBdfDA7a1soa1tuPj4yXXwwKSs0Pj4yXT1pWyhrW2g+PjJdfDApKzE+PjBdO2tbKGtbbj4+Ml18MCkrOD4+Ml09aVsoa1toPj4yXXwwKSsyPj4wXTtpZigobFszNDg5OCsobFtrW2g+PjJdPj4wXXwwKT4+MF0mMXwwKSE9MD8oaVsoa1toPj4yXXwwKSsyPj4wXXwwKT4wOjApe2E9KGtbbj4+Ml18MCkrOHwwO2tbYT4+Ml09KGtbYT4+Ml18MCkrKGtbKGtbZj4+Ml18MCkrMTM2Pj4yXXwwKX1rWyhrW24+PjJdfDApKzEyPj4yXT1pWyhrW2g+PjJdfDApKzM+PjBdO2lbKGtbbj4+Ml18MCkrMT4+MF09MDtrWyhrW24+PjJdfDApKzE2Pj4yXT0wO2lbKGtbbj4+Ml18MCkrMz4+MF09MDtrW2o+PjJdPShrW2o+PjJdfDApKzE7a1toPj4yXT0oa1toPj4yXXwwKSs0O2tbbj4+Ml09KGtbbj4+Ml18MCkrMjB9bj0oa1tmPj4yXXwwKSsxMzZ8MDtrW24+PjJdPShrW24+PjJdfDApKyhrW2c+PjJdfDApO2tbZT4+Ml09a1ttPj4yXTtuPWtbZT4+Ml18MDtyPW87cmV0dXJuIG58MH1mdW5jdGlvbiBWaChhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MDtlPXI7cj1yKzE2fDA7Yz1lKzR8MDtkPWU7a1tjPj4yXT1hO2tbZD4+Ml09YjthPShrW2M+PjJdfDApKzE0OHwwO2tbYT4+Ml09a1thPj4yXXwxPDxrW2Q+PjJdO2lmKChrW2Q+PjJdfDApPT0xKXtyPWU7cmV0dXJufWlmKCEoc0koa1soa1soa1trW2M+PjJdPj4yXXwwKSsxNj4+Ml18MCkrKGtbZD4+Ml08PDQpKzQ+PjJdfDApfDApKXtyPWU7cmV0dXJufWE9KGtbYz4+Ml18MCkrMTUyfDA7a1thPj4yXT1rW2E+PjJdfDE8PGtbZD4+Ml07cj1lO3JldHVybn1mdW5jdGlvbiBXaChhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MCxsPTAsbT0wO209cjtyPXIrMzJ8MDtlPW0rMjB8MDtmPW0rMTZ8MDtoPW0rMTJ8MDtqPW0rOHwwO2w9bSs0fDA7Zz1tO2tbZT4+Ml09YTtrW2Y+PjJdPWI7a1toPj4yXT1jO2tbaj4+Ml09ZDtrW2c+PjJdPWtba1tlPj4yXT4+Ml07aWYoaVsoa1tnPj4yXXwwKSs2OT4+MF18MCl7aWYoKGtbaj4+Ml18MCk9PS0xMCl7cj1tO3JldHVybn1TQShrW2c+PjJdfDAsa1tqPj4yXXwwLGtbaD4+Ml18MCk7cj1tO3JldHVybn1pZigoa1tmPj4yXXwwKTwwKWtbZj4+Ml09KGtbKGtbZT4+Ml18MCkrMTM2Pj4yXXwwKS0xO2tbbD4+Ml09KGtbKGtbZT4+Ml18MCkrODg+PjJdfDApKygoa1tmPj4yXXwwKSoyMHwwKTtpZigoa1tqPj4yXXwwKTwwPyhpWyhrW2w+PjJdfDApKzE+PjBdfDApPT0wOjApe2U9a1toPj4yXXwwO2lmKChrW2o+PjJdfDApPT0tMTQpe2tbKGtbbD4+Ml18MCkrMTY+PjJdPWU7aVsoa1tsPj4yXXwwKSsxPj4wXT0tMTQ7cj1tO3JldHVybn1pZighZSl7cj1tO3JldHVybn1rWyhrW2w+PjJdfDApKzE2Pj4yXT1rW2g+PjJdO2lbKGtbbD4+Ml18MCkrMT4+MF09a1tqPj4yXTtpZigoa1tqPj4yXXwwKSE9LTEwKXtyPW07cmV0dXJufXJJKGtbaD4+Ml18MCk7cj1tO3JldHVybn1xSShrW2U+PjJdfDAsa1tsPj4yXXwwLGtbaD4+Ml18MCxrW2o+PjJdfDApO3I9bTtyZXR1cm59ZnVuY3Rpb24gWGgoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTAsbT0wLG49MCxvPTAscD0wO3A9cjtyPXIrNDh8MDtkPXArNDB8MDtlPXArMzZ8MDtmPXArMzJ8MDtuPXArMjh8MDttPXArMjR8MDtoPXArMjB8MDtnPXArMTZ8MDtjPXArMTJ8MDtvPXA7a1tkPj4yXT1hO2tbZT4+Ml09YjtrW2Y+PjJdPWtba1tkPj4yXT4+Ml07a1tuPj4yXT1qWyhrW2U+PjJdfDApKzQwMD4+MV07a1ttPj4yXT1rWyhrW2U+PjJdfDApKzQ0Pj4yXTtrW2g+PjJdPWtbKGtbZT4+Ml18MCkrNDA+PjJdO2tbZz4+Ml09a1soa1tlPj4yXXwwKSsxMDg+PjJdO2tbbT4+Ml09KGtbbT4+Ml18MCkrKGtbaD4+Ml18MCk7aWYoKGtbaD4+Ml18MCk9PTAmKGtbbT4+Ml18MCk+MClrW20+PjJdPShrW20+PjJdfDApKzE7a1tjPj4yXT0oKGtbKGtbZD4+Ml18MCkrMTM2Pj4yXXwwKSoyMHwwKSs3Ji04O2tbbz4+Ml09KGtbKGtbZD4+Ml18MCkrODg+PjJdfDApKyhrW2M+PjJdfDApO2tbbys0Pj4yXT0oa1soa1tlPj4yXXwwKSs1Mj4+Ml18MCktKGtbYz4+Ml18MCkmLTg7S0Yoa1tkPj4yXXwwLGcpO2lmKGxbKGtbZT4+Ml18MCkrMjA+PjBdfDApYz0obFsoa1tlPj4yXXwwKSsyMT4+MF18MCkhPTA7ZWxzZSBjPTA7Yj0oa1tkPj4yXXwwKSsxNDR8MDtqW2I+PjFdPWpbYj4+MV0mLTY1fChjJjEpPDw2JjY1NTM1O2lmKChrW20+PjJdfDApPDEwPyhsWyhrW2U+PjJdfDApKzQwOT4+MF18MCkhPTA6MClrW20+PjJdPTEwO2I9KGtbZD4+Ml18MCkrMTQ0fDA7altiPj4xXT1qW2I+PjFdJi0yO2Rve2tbbys4Pj4yXT0wO2I9cEkobyxrWyhrW2Q+PjJdfDApKzkyPj4yXXwwLChrW20+PjJdfDApKjQwfDApfDA7a1soa1tkPj4yXXwwKSs5Mj4+Ml09YjtiPXBJKG8sa1soa1tkPj4yXXwwKSsxMTY+PjJdfDAsKGtbbj4+Ml18MCkqNDB8MCl8MDtrWyhrW2Q+PjJdfDApKzExNj4+Ml09YjtiPXBJKG8sa1soa1tkPj4yXXwwKSs5Nj4+Ml18MCxrW2c+PjJdPDwyKXwwO2tbKGtbZD4+Ml18MCkrOTY+PjJdPWI7Yj1wSShvLGtbKGtbZD4+Ml18MCkrMTEyPj4yXXwwLGtbaD4+Ml08PDIpfDA7a1soa1tkPj4yXXwwKSsxMTI+PjJdPWI7aWYoIShrW28rOD4+Ml18MCkpYnJlYWs7Yj1rW28rOD4+Ml18MDtiPWR4KGtbZj4+Ml18MCxiLCgoYnwwKTwwKTw8MzE+PjMxKXwwO2tbKGtbZD4+Ml18MCkrMTgwPj4yXT1iO2tbbz4+Ml09YjtrW28rND4+Ml09a1tvKzg+PjJdfXdoaWxlKChpWyhrW2Y+PjJdfDApKzY5Pj4wXXwwKSE9MF4xKTtqWyhrW2Q+PjJdfDApKzE4Pj4xXT1rWyhrW2U+PjJdfDApKzQwND4+Ml07a1soa1tkPj4yXXwwKSsxMjA+PjJdPWtbKGtbZT4+Ml18MCkrNDI4Pj4yXTtrWyhrW2U+PjJdfDApKzQwND4+Ml09MDtrWyhrW2U+PjJdfDApKzQyOD4+Ml09MDtvPShrW2Q+PjJdfDApKzE0NHwwO2pbbz4+MV09altvPj4xXSYtMTN8KGxbKGtbZT4+Ml18MCkrNDA5Pj4wXSYzKTw8MiY2NTUzNTtpZihpWyhrW2Y+PjJdfDApKzY5Pj4wXXwwKXtqWyhrW2Q+PjJdfDApKzE2Pj4xXT0wO2tbKGtbZD4+Ml18MCkrMjg+PjJdPTA7a1soa1tkPj4yXXwwKSsyND4+Ml09MDtvPWtbZD4+Ml18MDtlaChvKTtyPXA7cmV0dXJufWVsc2V7a1soa1tkPj4yXXwwKSsyOD4+Ml09a1toPj4yXTtqWyhrW2Q+PjJdfDApKzE2Pj4xXT1rW24+PjJdO1pDKGtbKGtbZD4+Ml18MCkrMTE2Pj4yXXwwLGtbbj4+Ml18MCxrW2Y+PjJdfDAsMSk7a1soa1tkPj4yXXwwKSsyND4+Ml09a1ttPj4yXTtaQyhrWyhrW2Q+PjJdfDApKzkyPj4yXXwwLGtbbT4+Ml18MCxrW2Y+PjJdfDAsMTI4KTtkUyhrWyhrW2Q+PjJdfDApKzExMj4+Ml18MCwwLGtbaD4+Ml08PDJ8MCl8MDtvPWtbZD4+Ml18MDtlaChvKTtyPXA7cmV0dXJufX1mdW5jdGlvbiBZaChhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGk9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxzPTA7cz1yO3I9cis2NHwwO3A9cysyNHwwO289cysxNnwwO2g9cys4fDA7aT1zKzUyfDA7bD1zO209cys0OHwwO249cys0NHwwO3E9cys0MHwwO2U9cyszNnwwO2Y9cyszMnwwO2c9cysyOHwwO2tbaT4+Ml09YTthPWw7a1thPj4yXT1iO2tbYSs0Pj4yXT1jO2tbbT4+Ml09ZDtrW3E+PjJdPTA7a1tlPj4yXT1rWyhrW2k+PjJdfDApKzIwPj4yXTtjPWw7YT1rW2MrND4+Ml18MDtkPWtbKGtbZT4+Ml18MCkrMTE2Pj4yXXwwO2tbZD4+Ml09a1tjPj4yXTtrW2QrND4+Ml09YTtkPURlKGtbKGtbaT4+Ml18MCkrMjA+PjJdfDApfDA7a1tuPj4yXT1kO2RvIGlmKChrW24+PjJdfDApPT0xMDApe2tbZj4+Ml09a1trWyhrW2U+PjJdfDApKzExMj4+Ml0+PjJdO2tbZz4+Ml09a1soa1tmPj4yXXwwKSs4MCsoa1soa1tpPj4yXXwwKSsxMj4+Ml08PDIpPj4yXTtiPWtbaT4+Ml18MDtpZigoa1tnPj4yXXwwKT4+PjA+PTEyKXtrWyhrW2k+PjJdfDApKzg+PjJdPWtbKGtbZj4+Ml18MCkrODArKChrW2IrMTI+PjJdfDApKyhqWyhrW2Y+PjJdfDApKzEyPj4xXXwwKTw8Mik+PjJdO2g9bUcoa1tnPj4yXXwwKXwwO2tbKGtbaT4+Ml18MCkrND4+Ml09aDtrWyhrW2k+PjJdfDApKzE2Pj4yXT1rWyhrW2Y+PjJdfDApKzE2Pj4yXTtvSShrWyhrW2k+PjJdfDApKzE2Pj4yXXwwKTticmVha31jPWtbYisyND4+Ml18MDtpZighKGtbZz4+Ml18MCkpYj0zOTcxODtlbHNlIGI9KGtbZz4+Ml18MCk9PTc/Mzk3MDU6Mzk3MTA7a1toPj4yXT1iO2g9UWgoYywzOTcyMyxoKXwwO2tbcT4+Ml09aDtrW24+PjJdPTE7ZmUoa1soa1tpPj4yXXwwKSsyMD4+Ml18MCl8MDtrWyhrW2k+PjJdfDApKzIwPj4yXT0wfXdoaWxlKDApO2lmKChrW24+PjJdfDApPT0xMDApe2tbbj4+Ml09MDtwPWtbcT4+Ml18MDtxPWtbbT4+Ml18MDtrW3E+PjJdPXA7cT1rW24+PjJdfDA7cj1zO3JldHVybiBxfDB9aWYoIShrWyhrW2k+PjJdfDApKzIwPj4yXXwwKSl7cD1rW3E+PjJdfDA7cT1rW20+PjJdfDA7a1txPj4yXT1wO3E9a1tuPj4yXXwwO3I9cztyZXR1cm4gcXwwfWI9ZmUoa1soa1tpPj4yXXwwKSsyMD4+Ml18MCl8MDtrW24+PjJdPWI7a1soa1tpPj4yXXwwKSsyMD4+Ml09MDtiPWtbKGtbaT4+Ml18MCkrMjQ+PjJdfDA7aWYoIShrW24+PjJdfDApKXtpPWw7bD1rW2krND4+Ml18MDtwPW87a1twPj4yXT1rW2k+PjJdO2tbcCs0Pj4yXT1sO3A9UWgoYiwzOTc1MixvKXwwO2tbcT4+Ml09cDtrW24+PjJdPTE7cD1rW3E+PjJdfDA7cT1rW20+PjJdfDA7a1txPj4yXT1wO3E9a1tuPj4yXXwwO3I9cztyZXR1cm4gcXwwfWVsc2V7bz1tZihrWyhrW2k+PjJdfDApKzI0Pj4yXXwwKXwwO2tbcD4+Ml09bztwPVFoKGIsMTgzOTEscCl8MDtrW3E+PjJdPXA7cD1rW3E+PjJdfDA7cT1rW20+PjJdfDA7a1txPj4yXT1wO3E9a1tuPj4yXXwwO3I9cztyZXR1cm4gcXwwfXJldHVybiAwfWZ1bmN0aW9uIFpoKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MDtkPXI7cj1yKzE2fDA7Yj1kKzR8MDtjPWQ7a1tiPj4yXT1hO2lmKCEoa1tiPj4yXXwwKSl7cj1kO3JldHVybn1rW2M+PjJdPWtba1tiPj4yXT4+Ml07Ymcoa1tjPj4yXXwwLGtbKGtbYj4+Ml18MCkrNzY+PjJdfDApO292KGtbYz4+Ml18MCxrWyhrW2I+PjJdfDApKzgwPj4yXXwwKTtpZihrW2M+PjJdfDApe2E9KGtbYz4+Ml18MCkrMjU2fDA7a1thPj4yXT0oa1thPj4yXXwwKS0obFsoa1tiPj4yXXwwKSsyND4+MF18MCl9aVsoa1tiPj4yXXwwKSsyND4+MF09MDtyPWQ7cmV0dXJufWZ1bmN0aW9uIF9oKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaT0wLGo9MCxtPTA7bT1yO3I9ciszMnwwO2U9bSsyMHwwO2Y9bSsxNnwwO2c9bSsxMnwwO2g9bSs4fDA7aT1tKzR8MDtqPW07a1tmPj4yXT1hO2tbZz4+Ml09YjtrW2g+PjJdPWM7a1tpPj4yXT1kO2lmKCEobFsoa1tmPj4yXXwwKSs2Nj4+MF18MCkpe2tbZT4+Ml09NDtqPWtbZT4+Ml18MDtyPW07cmV0dXJuIGp8MH1pZigobFsoa1tmPj4yXXwwKSs2Nj4+MF18MHwwKT49MyljPU9GKGtbZj4+Ml18MCl8MDtlbHNlIGM9MDtrW2o+PjJdPWM7aWYoIShrW2o+PjJdfDApKXtpPSRGKGtbZj4+Ml18MCxrW2c+PjJdfDAsa1toPj4yXXwwLGtbaT4+Ml18MCwwKXwwO2tbaj4+Ml09aX1rW2U+PjJdPWtbaj4+Ml07aj1rW2U+PjJdfDA7cj1tO3JldHVybiBqfDB9ZnVuY3Rpb24gJGgoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaT0wLGo9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxzPTA7cT1yO3I9cis0OHwwO2Y9cSszNnwwO3M9cSszMnwwO2c9cSsyOHwwO2g9cSsyNHwwO2k9cSsyMHwwO2o9cSsxNnwwO249cSsxMnwwO209cSs4fDA7bz1xKzR8MDtsPXE7a1tzPj4yXT1hO2tbZz4+Ml09YjtrW2g+PjJdPWM7a1tpPj4yXT1kO2tbaj4+Ml09ZTtrW20+PjJdPWtbcz4+Ml07aWYoIShrW20+PjJdfDApKXtzPVZmKDg0NzE2KXwwO2tbZj4+Ml09cztzPWtbZj4+Ml18MDtyPXE7cmV0dXJuIHN8MH1rW2w+PjJdPWtbKGtbbT4+Ml18MCkrMjQ+PjJdO2tbbz4+Ml09a1soa1ttPj4yXXwwKSsyMD4+Ml07ZG8gaWYoISgoa1toPj4yXXwwKTwwfChrW2k+PjJdfDApPDApPyhhPWtbaT4+Ml18MCxiPWtbaD4+Ml18MCxiPSRSKGF8MCwoKGF8MCk8MCk8PDMxPj4zMXwwLGJ8MCwoKGJ8MCk8MCk8PDMxPj4zMXwwKXwwLGE9TCxzPWtbKGtbbT4+Ml18MCkrND4+Ml18MCxlPSgoc3wwKTwwKTw8MzE+PjMxLCEoKGF8MCk+KGV8MCl8KGF8MCk9PShlfDApJmI+Pj4wPnM+Pj4wKSk6MCl7aWYoIShrW28+PjJdfDApKXtrW24+PjJdPTQ7YnJlYWt9bkkoa1soa1ttPj4yXXwwKSsxNj4+Ml18MCk7cz1lY1trW2o+PjJdJjI1NV0oa1soa1ttPj4yXXwwKSsxNj4+Ml18MCwoa1tpPj4yXXwwKSsoa1soa1ttPj4yXXwwKSs4Pj4yXXwwKXwwLGtbaD4+Ml18MCxrW2c+PjJdfDApfDA7a1tuPj4yXT1zO2lmKChrW24+PjJdfDApPT00KXtiaChrW28+PjJdfDApfDA7a1soa1ttPj4yXXwwKSsyMD4+Ml09MDticmVha31lbHNle2tbKGtbbz4+Ml18MCkrNDA+PjJdPWtbbj4+Ml07YnJlYWt9fWVsc2UgcD01O3doaWxlKDApO2lmKChwfDApPT01KWtbbj4+Ml09MTt2ZyhrW2w+PjJdfDAsa1tuPj4yXXwwKTtzPWNoKGtbbD4+Ml18MCxrW24+PjJdfDApfDA7a1tuPj4yXT1zO2tbZj4+Ml09a1tuPj4yXTtzPWtbZj4+Ml18MDtyPXE7cmV0dXJuIHN8MH1mdW5jdGlvbiBhaShhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTA7Yz1yO3I9cisxNnwwO2Q9Yys0fDA7Yj1jO2tbZD4+Ml09YTtrW2I+PjJdPWtbKGtbZD4+Ml18MCkrND4+Ml07d2hpbGUoMSl7aWYoIShrW2I+PjJdfDApKWJyZWFrO2Q9KGtbYj4+Ml18MCkrMTQ0fDA7altkPj4xXT1qW2Q+PjFdJi0yfDE7a1tiPj4yXT1rWyhrW2I+PjJdfDApKzg+PjJdfXI9YztyZXR1cm59ZnVuY3Rpb24gYmkoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTAsbT0wLG49MCxvPTAscD0wLHE9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MDt4PXI7cj1yKzY0fDA7cz14KzUyfDA7dD14KzQ4fDA7dT14KzQ0fDA7dj14KzQwfDA7dz14KzM2fDA7cD14KzMyfDA7cT14KzI4fDA7bT14KzI0fDA7aj14KzIwfDA7bz14KzU2fDA7aD14KzE2fDA7bj14KzEyfDA7Zj14Kzh8MDtnPXgrNHwwO2U9eDtrW3Q+PjJdPWE7a1t1Pj4yXT1iO2tbdj4+Ml09YztrW3c+PjJdPWQ7a1ttPj4yXT1sWyhrW3Y+PjJdfDApKzE+PjBdO2tbaj4+Ml09bFtrW3Y+PjJdPj4wXTtpW28+PjBdPWlbKGtbdj4+Ml18MCkrMz4+MF18MDtrW2g+PjJdPTA7YTp3aGlsZSgxKXtpZigobFtrW3Q+PjJdPj4wXXwwKTwxMjgpe2Q9a1t0Pj4yXXwwO2tbdD4+Ml09ZCsxO2Q9bFtkPj4wXXwwfWVsc2UgZD1UQyh0KXwwO2tbcD4+Ml09ZDtpZighZCl7YT04MzticmVha31pZigoa1twPj4yXXwwKT09KGtbaj4+Ml18MCkpe2E9NzticmVha31kbyBpZigoa1twPj4yXXwwKT09KGtbdz4+Ml18MCkpe2lmKCEobFsoa1t2Pj4yXXwwKSsyPj4wXXwwKSl7Yj1UQyh0KXwwO2tbcD4+Ml09YjtpZighKGtbcD4+Ml18MCkpe2E9NDk7YnJlYWsgYX1rW2g+PjJdPWtbdD4+Ml07YnJlYWt9a1tmPj4yXT0wO2tbZz4+Ml09MDtrW2U+PjJdPTA7Yj1UQyh1KXwwO2tbcD4+Ml09YjtpZighKGtbcD4+Ml18MCkpe2E9NTI7YnJlYWsgYX1iPVRDKHQpfDA7a1txPj4yXT1iO2lmKChrW3E+PjJdfDApPT05NCl7a1tlPj4yXT0xO2I9VEModCl8MDtrW3E+PjJdPWJ9aWYoKGtbcT4+Ml18MCk9PTkzKXtpZigoa1twPj4yXXwwKT09OTMpa1tnPj4yXT0xO2I9VEModCl8MDtrW3E+PjJdPWJ9d2hpbGUoMSl7ZD1rW3E+PjJdfDA7aWYoISgoa1txPj4yXXwwKSE9MD8oa1txPj4yXXwwKSE9OTM6MCkpYnJlYWs7aWYoKChkfDApPT00NT8obFtrW3Q+PjJdPj4wXXwwKSE9OTM6MCk/KChrW2Y+PjJdfDApPj4+MD4wPyhsW2tbdD4+Ml0+PjBdfDApIT0wOjApOjApe2I9VEModCl8MDtrW3E+PjJdPWI7aWYoKGtbcD4+Ml18MCk+Pj4wPj0oa1tmPj4yXXwwKT4+PjA/KGtbcD4+Ml18MCk+Pj4wPD0oa1txPj4yXXwwKT4+PjA6MClrW2c+PjJdPTE7a1tmPj4yXT0wfWVsc2V7aWYoKGtbcD4+Ml18MCk9PShrW3E+PjJdfDApKWtbZz4+Ml09MTtrW2Y+PjJdPWtbcT4+Ml19Yj1UQyh0KXwwO2tbcT4+Ml09Yn1pZighZCl7YT03MzticmVhayBhfWlmKCEoa1tnPj4yXV5rW2U+PjJdKSl7YT03MzticmVhayBhfWVsc2UgY29udGludWUgYX13aGlsZSgwKTtpZigobFtrW3U+PjJdPj4wXXwwKTwxMjgpe2Q9a1t1Pj4yXXwwO2tbdT4+Ml09ZCsxO2Q9bFtkPj4wXXwwfWVsc2UgZD1UQyh1KXwwO2tbcT4+Ml09ZDtpZigoa1twPj4yXXwwKT09KGtbcT4+Ml18MCkpY29udGludWU7aWYoKGxbbz4+MF18MCkhPTA/KChrW3A+PjJdfDApPj4+MDwxMjg/KGxbMTc2MTMrKGtbcD4+Ml0mMjU1KT4+MF18MCk9PShsWzE3NjEzKyhrW3E+PjJdJjI1NSk+PjBdfDApOjApJihrW3E+PjJdfDApPj4+MDwxMjg6MCljb250aW51ZTtpZigoa1twPj4yXXwwKSE9KGtbbT4+Ml18MCkpe2E9ODI7YnJlYWt9aWYoISgoa1txPj4yXXwwKSE9MD8oa1t0Pj4yXXwwKSE9KGtbaD4+Ml18MCk6MCkpe2E9ODI7YnJlYWt9fWlmKChhfDApPT03KXt3aGlsZSgxKXthPTA7aWYoKGxba1t0Pj4yXT4+MF18MCk8MTI4KXtkPWtbdD4+Ml18MDtrW3Q+PjJdPWQrMTtkPWxbZD4+MF18MH1lbHNlIGQ9VEModCl8MDtrW3A+PjJdPWQ7aWYoKGR8MCk9PShrW2o+PjJdfDApKWQ9MTtlbHNlIGQ9KGtbcD4+Ml18MCk9PShrW20+PjJdfDApO2M9a1twPj4yXXwwO2lmKCFkKWJyZWFrO2lmKChjfDApIT0oa1ttPj4yXXwwKSl7YT03O2NvbnRpbnVlfWlmKCEoVEModSl8MCkpe2E9MTU7YnJlYWt9ZWxzZSBhPTd9aWYoKGF8MCk9PTE1KXtrW3M+PjJdPTA7dz1rW3M+PjJdfDA7cj14O3JldHVybiB3fDB9aWYoIWMpe2tbcz4+Ml09MTt3PWtbcz4+Ml18MDtyPXg7cmV0dXJuIHd8MH1kbyBpZigoa1twPj4yXXwwKT09KGtbdz4+Ml18MCkpe2lmKCEobFsoa1t2Pj4yXXwwKSsyPj4wXXwwKSl7bT1UQyh0KXwwO2tbcD4+Ml09bTtpZihrW3A+PjJdfDApYnJlYWs7a1tzPj4yXT0wO3c9a1tzPj4yXXwwO3I9eDtyZXR1cm4gd3wwfWI6d2hpbGUoMSl7aWYobFtrW3U+PjJdPj4wXXwwKWQ9KGJpKChrW3Q+PjJdfDApKy0xfDAsa1t1Pj4yXXwwLGtbdj4+Ml18MCxrW3c+PjJdfDApfDApPT0wO2Vsc2UgZD0wO2M9a1t1Pj4yXXwwO2lmKCFkKWJyZWFrO2tbdT4+Ml09YysxO2lmKChsW2M+PjBdfDApPDE5Miljb250aW51ZTt3aGlsZSgxKXtpZigobFtrW3U+PjJdPj4wXSYxOTJ8MCkhPTEyOCljb250aW51ZSBiO2tbdT4+Ml09KGtbdT4+Ml18MCkrMX19a1tzPj4yXT0obFtjPj4wXXwwKSE9MCYxO3c9a1tzPj4yXXwwO3I9eDtyZXR1cm4gd3wwfXdoaWxlKDApO2M6ZG8gaWYoKGtbcD4+Ml18MCk+Pj4wPD0xMjgpe2Q9a1twPj4yXXwwO2lmKGlbbz4+MF18MCl7a1tuPj4yXT1kJn4obFsxODQwMysoa1twPj4yXSYyNTUpPj4wXSYzMik7a1twPj4yXT1sWzE3NjEzKyhrW3A+PjJdJjI1NSk+PjBdfWVsc2Uga1tuPj4yXT1kO3doaWxlKDEpe289a1t1Pj4yXXwwO2tbdT4+Ml09bysxO289bFtvPj4wXXwwO2tbcT4+Ml09bztpZighbylicmVhayBjO2lmKChrW3E+PjJdfDApIT0oa1twPj4yXXwwKT8oa1txPj4yXXwwKSE9KGtbbj4+Ml18MCk6MCljb250aW51ZTtpZihiaShrW3Q+PjJdfDAsa1t1Pj4yXXwwLGtbdj4+Ml18MCxrW3c+PjJdfDApfDApYnJlYWt9a1tzPj4yXT0xO3c9a1tzPj4yXXwwO3I9eDtyZXR1cm4gd3wwfWVsc2V7d2hpbGUoMSl7aWYoKGxba1t1Pj4yXT4+MF18MCk8MTI4KXtkPWtbdT4+Ml18MDtrW3U+PjJdPWQrMTtkPWxbZD4+MF18MH1lbHNlIGQ9VEModSl8MDtrW3E+PjJdPWQ7aWYoIWQpYnJlYWsgYztpZigoa1txPj4yXXwwKSE9KGtbcD4+Ml18MCkpY29udGludWU7aWYoYmkoa1t0Pj4yXXwwLGtbdT4+Ml18MCxrW3Y+PjJdfDAsa1t3Pj4yXXwwKXwwKWJyZWFrfWtbcz4+Ml09MTt3PWtbcz4+Ml18MDtyPXg7cmV0dXJuIHd8MH13aGlsZSgwKTtrW3M+PjJdPTA7dz1rW3M+PjJdfDA7cj14O3JldHVybiB3fDB9ZWxzZSBpZigoYXwwKT09NDkpe2tbcz4+Ml09MDt3PWtbcz4+Ml18MDtyPXg7cmV0dXJuIHd8MH1lbHNlIGlmKChhfDApPT01Mil7a1tzPj4yXT0wO3c9a1tzPj4yXXwwO3I9eDtyZXR1cm4gd3wwfWVsc2UgaWYoKGF8MCk9PTczKXtrW3M+PjJdPTA7dz1rW3M+PjJdfDA7cj14O3JldHVybiB3fDB9ZWxzZSBpZigoYXwwKT09ODIpe2tbcz4+Ml09MDt3PWtbcz4+Ml18MDtyPXg7cmV0dXJuIHd8MH1lbHNlIGlmKChhfDApPT04Myl7a1tzPj4yXT0obFtrW3U+PjJdPj4wXXwwKT09MCYxO3c9a1tzPj4yXXwwO3I9eDtyZXR1cm4gd3wwfXJldHVybiAwfWZ1bmN0aW9uIGNpKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MCxlPTA7ZT1yO3I9cisxNnwwO2I9ZSs4fDA7Yz1lKzR8MDtkPWU7a1tjPj4yXT1hO2RvIGlmKCEoa1tjPj4yXXwwKSl7JEgoMzk2OTEpO2tbYj4+Ml09MH1lbHNle2tbZD4+Ml09a1soa1tjPj4yXXwwKSs4ND4+Ml07aWYoKGtbZD4+Ml18MCk9PS0xNjA3ODgzMTEzKXtrW2I+PjJdPTE7YnJlYWt9aWYoZWkoa1tjPj4yXXwwKXwwKSRIKDM5Njk2KTtrW2I+PjJdPTB9d2hpbGUoMCk7cj1lO3JldHVybiBrW2I+PjJdfDB9ZnVuY3Rpb24gZGkoYSxiLGMsZCxlLGYsZyl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7dmFyIGg9MCxpPTAsaj0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHM9MDtzPXI7cj1yKzQ4fDA7aD1zKzMyfDA7aT1zKzI4fDA7aj1zKzI0fDA7bD1zKzIwfDA7bT1zKzE2fDA7bj1zKzEyfDA7bz1zKzh8MDtwPXMrNHwwO3E9cztrW2k+PjJdPWE7a1tqPj4yXT1iO2tbbD4+Ml09YztrW20+PjJdPWQ7a1tuPj4yXT1lO2tbbz4+Ml09ZjtrW3A+PjJdPWc7a1trW28+PjJdPj4yXT0wO2I9KGNpKGtbaT4+Ml18MCl8MCk9PTA7aWYoYnwoa1tqPj4yXXwwKT09MCl7Yj1WZigxMTQxOTcpfDA7a1toPj4yXT1iO2I9a1toPj4yXXwwO3I9cztyZXR1cm4gYnwwfVlmKGtbaT4+Ml18MCk7Yj1hSShrW2k+PjJdfDAsa1tqPj4yXXwwLGtbbD4+Ml18MCxrW20+PjJdfDAsa1tuPj4yXXwwLGtbbz4+Ml18MCxrW3A+PjJdfDApfDA7a1txPj4yXT1iO2lmKChrW3E+PjJdfDApPT0xNyl7ZmUoa1trW28+PjJdPj4yXXwwKXwwO2I9YUkoa1tpPj4yXXwwLGtbaj4+Ml18MCxrW2w+PjJdfDAsa1ttPj4yXXwwLGtbbj4+Ml18MCxrW28+PjJdfDAsa1twPj4yXXwwKXwwO2tbcT4+Ml09Yn1rW2g+PjJdPWtbcT4+Ml07Yj1rW2g+PjJdfDA7cj1zO3JldHVybiBifDB9ZnVuY3Rpb24gZWkoYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wLGU9MDtjPXI7cj1yKzE2fDA7Yj1jKzh8MDtlPWMrNHwwO2Q9YztrW2U+PjJdPWE7a1tkPj4yXT1rWyhrW2U+PjJdfDApKzg0Pj4yXTtpZigoa1tkPj4yXXwwKSE9MTI2NjA5NDczNiYoa1tkPj4yXXwwKSE9LTE2MDc4ODMxMTMmKGtbZD4+Ml18MCkhPS0yNjQ1Mzc4NTApeyRIKDM5NTM4KTtrW2I+PjJdPTA7ZT1rW2I+PjJdfDA7cj1jO3JldHVybiBlfDB9ZWxzZXtrW2I+PjJdPTE7ZT1rW2I+PjJdfDA7cj1jO3JldHVybiBlfDB9cmV0dXJuIDB9ZnVuY3Rpb24gZmkoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaT0wLGo9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MDtxPXI7cj1yKzQ4fDA7Zj1xKzM2fDA7Zz1xKzMyfDA7aD1xKzI4fDA7aT1xKzI0fDA7aj1xKzIwfDA7bz1xKzE2fDA7bD1xKzEyfDA7bj1xKzh8MDttPXErNHwwO3A9cTtrW2Y+PjJdPWE7a1tnPj4yXT1iO2tbaD4+Ml09YztrW2k+PjJdPWQ7a1tqPj4yXT1lO2tbbz4+Ml09MDtiPVRmKGtbZz4+Ml18MCl8MDtrW2w+PjJdPWI7aWYoIShDaigoa1tmPj4yXXwwKSszMjB8MCxrW2c+PjJdfDApfDApKXtiPWR4KGtbZj4+Ml18MCwyMCsoa1tsPj4yXXwwKSsxfDAsMCl8MDtrW24+PjJdPWI7aWYoKGtbbj4+Ml18MCkhPTA/KGtbcD4+Ml09KGtbbj4+Ml18MCkrMjAsYlMoa1twPj4yXXwwLGtbZz4+Ml18MCwoa1tsPj4yXXwwKSsxfDApfDAsa1soa1tuPj4yXXwwKSs0Pj4yXT1rW3A+PjJdLGtba1tuPj4yXT4+Ml09a1toPj4yXSxrWyhrW24+PjJdfDApKzg+PjJdPWtbaT4+Ml0sa1soa1tuPj4yXXwwKSsxMj4+Ml09a1tqPj4yXSxrWyhrW24+PjJdfDApKzE2Pj4yXT0wLGI9Y2soKGtbZj4+Ml18MCkrMzIwfDAsa1twPj4yXXwwLGtbbj4+Ml18MCl8MCxrW20+PjJdPWIsKGtbbT4+Ml18MCkhPTApOjApe3doKGtbZj4+Ml18MCk7Ymcoa1tmPj4yXXwwLGtbbT4+Ml18MCl9fWVsc2V7Yj1WZigxMjI1OTApfDA7a1tvPj4yXT1ifWI9Y2goa1tmPj4yXXwwLGtbbz4+Ml18MCl8MDtrW28+PjJdPWI7aWYoISgoa1tvPj4yXXwwKSE9MCYoa1tqPj4yXXwwKSE9MCkpe2I9a1tvPj4yXXwwO3I9cTtyZXR1cm4gYnwwfV9iW2tbaj4+Ml0mMjU1XShrW2k+PjJdfDApO2I9a1tvPj4yXXwwO3I9cTtyZXR1cm4gYnwwfWZ1bmN0aW9uIGdpKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsbT0wLG49MCxvPTAscD0wLHE9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MDt6PXI7cj1yKzgwfDA7ZD16KzcyfDA7cD16KzE2fDA7bz16Kzh8MDtuPXo7cz16KzY4fDA7dD16KzY0fDA7ZT16KzYwfDA7Zj16KzU2fDA7dz16KzUyfDA7dj16KzQ4fDA7aj16KzQ0fDA7bT16KzQwfDA7Zz16KzM2fDA7dT16KzMyfDA7aD16KzI4fDA7eD16KzI0fDA7eT16KzIwfDA7a1t0Pj4yXT1hO2tbZT4+Ml09YjtrW2Y+PjJdPWM7a1t3Pj4yXT0wO2tbZz4+Ml09LTE7a1t1Pj4yXT1rW2tbdD4+Ml0+PjJdO2tbaD4+Ml09a1soa1t1Pj4yXXwwKSs5Nis0Pj4yXTtpZighKGtbKGtbdT4+Ml18MCkrMTU2Pj4yXXwwKSlrWyhrW3U+PjJdfDApKzI0OD4+Ml09MDtrWyhrW3Q+PjJdfDApKzEyPj4yXT0wO2tbKGtbdD4+Ml18MCkrNDM2Pj4yXT1rW2U+PjJdO2tbdj4+Ml09MDtiPWl2KDE3OSl8MDtrW2o+PjJdPWI7aWYoIShrW2o+PjJdfDApKXt3aChrW3U+PjJdfDApO2tbcz4+Ml09Nzt5PWtbcz4+Ml18MDtyPXo7cmV0dXJuIHl8MH1hOndoaWxlKDEpe2RvIGlmKGlbKGtbZT4+Ml18MCkrKGtbdj4+Ml18MCk+PjBdfDApe2tbKGtbdD4+Ml18MCkrMzkyPj4yXT0oa1tlPj4yXXwwKSsoa1t2Pj4yXXwwKTtiPWp2KChrW2U+PjJdfDApKyhrW3Y+PjJdfDApfDAsbSl8MDtrWyhrW3Q+PjJdfDApKzM5Mis0Pj4yXT1iO2tbdj4+Ml09KGtbdj4+Ml18MCkrKGtbKGtbdD4+Ml18MCkrMzkyKzQ+PjJdfDApO2lmKChrW3Y+PjJdfDApPihrW2g+PjJdfDApKXtxPTc7YnJlYWsgYX19ZWxzZXtpZigoa1tnPj4yXXwwKT09MSl7a1ttPj4yXT0wO2JyZWFrfWlmKCEoa1tnPj4yXXwwKSlicmVhayBhO2tbbT4+Ml09MX13aGlsZSgwKTtpZigoa1ttPj4yXXwwKT49MTYyKXtpZihrWyhrW3U+PjJdfDApKzI0OD4+Ml18MCl7cT0xNDticmVha31pZigoa1ttPj4yXXwwKT09MTYzKXtxPTE2O2JyZWFrfWVsc2UgY29udGludWV9ZWxzZXthPWtbaj4+Ml18MDtjPWtbbT4+Ml18MDtBPShrW3Q+PjJdfDApKzM5MnwwO2I9a1t0Pj4yXXwwO2tbZD4+Ml09a1tBPj4yXTtrW2QrND4+Ml09a1tBKzQ+PjJdO2t2KGEsYyxkLGIpO2tbZz4+Ml09a1ttPj4yXTtpZihrWyhrW3Q+PjJdfDApKzEyPj4yXXwwKWJyZWFrO2lmKGxbKGtbdT4+Ml18MCkrNjk+PjBdfDApYnJlYWs7ZWxzZSBjb250aW51ZX19aWYoKHF8MCk9PTcpa1soa1t0Pj4yXXwwKSsxMj4+Ml09MTg7ZWxzZSBpZigocXwwKT09MTQpa1soa1t0Pj4yXXwwKSsxMj4+Ml09OTtlbHNlIGlmKChxfDApPT0xNil7QT1rW3Q+PjJdfDA7a1tuPj4yXT0oa1t0Pj4yXXwwKSszOTI7T2goQSwyNjQzNyxuKX1rWyhrW3Q+PjJdfDApKzQzNj4+Ml09KGtbZT4+Ml18MCkrKGtbdj4+Ml18MCk7bHYoa1tqPj4yXXwwLDE0OCk7aWYoaVsoa1t1Pj4yXXwwKSs2OT4+MF18MClrWyhrW3Q+PjJdfDApKzEyPj4yXT03O2lmKCgoa1soa1t0Pj4yXXwwKSsxMj4+Ml18MCkhPTA/KGtbKGtbdD4+Ml18MCkrMTI+PjJdfDApIT0xMDE6MCk/KGtbKGtbdD4+Ml18MCkrND4+Ml18MCk9PTA6MCl7QT1rW3U+PjJdfDA7cT12aChrWyhrW3Q+PjJdfDApKzEyPj4yXXwwKXwwO2tbbz4+Ml09cTtBPVFoKEEsMTgzOTEsbyl8MDtrWyhrW3Q+PjJdfDApKzQ+PjJdPUF9aWYoa1soa1t0Pj4yXXwwKSs0Pj4yXXwwKXtrW2tbZj4+Ml0+PjJdPWtbKGtbdD4+Ml18MCkrND4+Ml07QT1rWyhrW3Q+PjJdfDApKzEyPj4yXXwwO2tbcD4+Ml09a1trW2Y+PjJdPj4yXTskZChBLDE4MzkxLHApO2tbKGtbdD4+Ml18MCkrND4+Ml09MDtrW3c+PjJdPShrW3c+PjJdfDApKzF9aWYoKChrWyhrW3Q+PjJdfDApKzg+PjJdfDApIT0wPyhrWyhrW3Q+PjJdfDApKzM2Pj4yXXwwKT4wOjApPyhsWyhrW3Q+PjJdfDApKzE4Pj4wXXwwKT09MDowKXttdihrWyhrW3Q+PjJdfDApKzg+PjJdfDApO2tbKGtbdD4+Ml18MCkrOD4+Ml09MH1pZighKGxbKGtbdD4+Ml18MCkrMTg+PjBdfDApKXtiZyhrW3U+PjJdfDAsa1soa1t0Pj4yXXwwKSsxMTY+PjJdfDApO2tbKGtbdD4+Ml18MCkrMTE2Pj4yXT0wO2tbKGtbdD4+Ml18MCkrMTEyPj4yXT0wfVVkKGtbKGtbdD4+Ml18MCkrNDYwPj4yXXwwKTtpZighKGlbKGtbdD4+Ml18MCkrNDEwPj4wXXwwKSkkZihrW3U+PjJdfDAsa1soa1t0Pj4yXXwwKSs0NDA+PjJdfDApO2lmKGtbKGtbdD4+Ml18MCkrNDc2Pj4yXXwwKW52KGtbdT4+Ml18MCxrWyhrW3Q+PjJdfDApKzQ3Nj4+Ml18MCk7X2Yoa1t1Pj4yXXwwLGtbKGtbdD4+Ml18MCkrNDQ0Pj4yXXwwKTtrW3Y+PjJdPShrWyhrW3Q+PjJdfDApKzQwND4+Ml18MCktMTt3aGlsZSgxKXtkPWtbdT4+Ml18MDtpZigoa1t2Pj4yXXwwKTwwKWJyZWFrO2JnKGQsa1soa1soa1t0Pj4yXXwwKSs0Mjg+PjJdfDApKyhrW3Y+PjJdPDwyKT4+Ml18MCk7a1t2Pj4yXT0oa1t2Pj4yXXwwKSstMX1iZyhkLGtbKGtbdD4+Ml18MCkrNDI4Pj4yXXwwKTt3aGlsZSgxKXtpZighKGtbKGtbdD4+Ml18MCkrMTIwPj4yXXwwKSlicmVhaztrW3g+PjJdPWtbKGtbdD4+Ml18MCkrMTIwPj4yXTtrWyhrW3Q+PjJdfDApKzEyMD4+Ml09a1trW3g+PjJdPj4yXTtiZyhrW3U+PjJdfDAsa1t4Pj4yXXwwKX13aGlsZSgxKXtpZighKGtbKGtbdD4+Ml18MCkrNDY0Pj4yXXwwKSlicmVhaztrW3k+PjJdPWtbKGtbdD4+Ml18MCkrNDY0Pj4yXTtrWyhrW3Q+PjJdfDApKzQ2ND4+Ml09a1soa1t5Pj4yXXwwKSs2OD4+Ml07JGYoa1t1Pj4yXXwwLGtbeT4+Ml18MCl9a1tzPj4yXT1rW3c+PjJdO0E9a1tzPj4yXXwwO3I9ejtyZXR1cm4gQXwwfWZ1bmN0aW9uIGhpKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MDtkPXI7cj1yKzE2fDA7Yj1kKzR8MDtjPWQ7a1tiPj4yXT1hO2E9Q2goa1tiPj4yXXwwLDQwLDApfDA7a1tjPj4yXT1hO2lmKCEoa1tjPj4yXXwwKSl7Yz1rW2M+PjJdfDA7cj1kO3JldHVybiBjfDB9alsoa1tjPj4yXXwwKSs4Pj4xXT0xO2tbKGtbYz4+Ml18MCkrMzI+PjJdPWtbYj4+Ml07Yz1rW2M+PjJdfDA7cj1kO3JldHVybiBjfDB9ZnVuY3Rpb24gaWkoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGw9MCxtPTA7bT1yO3I9ciszMnwwO2Y9bSsxMnwwO2c9bSs4fDA7aD1tKzR8MDtqPW0rMTZ8MDtsPW07a1tmPj4yXT1hO2tbZz4+Ml09YjtrW2g+PjJdPWM7aVtqPj4wXT1kO2tbbD4+Ml09ZTtpZighKGtbZj4+Ml18MCkpe3I9bTtyZXR1cm59cWgoa1tmPj4yXXwwLGtbaD4+Ml18MCxrW2c+PjJdfDAsaVtqPj4wXXwwLGtbbD4+Ml18MCl8MDtyPW07cmV0dXJufWZ1bmN0aW9uIGppKCl7dmFyIGE9MCxiPTA7YT1yO3I9cisxNnwwO2I9YTtrW2I+PjJdPTQyMjA7d2YoNCxiKXwwO3I9YTtyZXR1cm59ZnVuY3Rpb24ga2koKXtyZXR1cm4gODh9ZnVuY3Rpb24gbGkoKXtyZXR1cm4gNDB9ZnVuY3Rpb24gbWkoKXtyZXR1cm4gMzJ9ZnVuY3Rpb24gbmkoKXt2YXIgYT0wLGI9MDthPXI7cj1yKzE2fDA7Yj1hO2tbYj4+Ml09NDE2ODt3ZigxOCxiKXwwO3I9YTtyZXR1cm59ZnVuY3Rpb24gb2koYSl7YT1hfDA7dmFyIGI9MCxjPTA7Yj1yO3I9cisxNnwwO2M9YjtrW2M+PjJdPWE7RnUoa1soa1tjPj4yXXwwKSsyMTI+PjJdfDApO3I9YjtyZXR1cm59ZnVuY3Rpb24gcGkoYSl7YT1hfDA7dmFyIGI9MCxjPTA7Yz1yO3I9cisxNnwwO2I9YztrW2I+PjJdPWE7aWYoIShrW2I+PjJdfDApKXthPTA7YT1hJjE7cj1jO3JldHVybiBhfDB9YT0obFsoa1tiPj4yXXwwKSs4Pj4wXXwwfDApPT0yO2E9YSYxO3I9YztyZXR1cm4gYXwwfWZ1bmN0aW9uIHFpKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsbD0wLG09MCxuPTAsbz0wLHA9MDtwPXI7cj1yKzMyfDA7ZT1wKzI4fDA7Zj1wKzI0fDA7Zz1wKzIwfDA7aD1wKzE2fDA7bD1wKzEyfDA7bz1wKzh8MDttPXArNHwwO249cDtrW2Y+PjJdPWE7a1tnPj4yXT1iO2tbaD4+Ml09YztrW2w+PjJdPWQ7aWYoa1soa1tmPj4yXXwwKSsyNTYrOD4+Ml18MCl7a1tlPj4yXT01O2M9a1tlPj4yXXwwO3I9cDtyZXR1cm4gY3wwfWlmKGlbKGtbZj4+Ml18MCkrMjU2KzY+PjBdfDApVWQoa1soa1tmPj4yXXwwKSsyNTYrMzI+PjJdfDApO2M9a1toPj4yXSYtODtrW2g+PjJdPWM7a1toPj4yXT0oa1toPj4yXXwwKTw9ND8wOmM7aWYoKGtbbD4+Ml18MCk8MClrW2w+PjJdPTA7ZG8gaWYoISgoa1toPj4yXXwwKT09MHwoa1tsPj4yXXwwKT09MCkpe2lmKGtbZz4+Ml18MCl7a1tvPj4yXT1rW2c+PjJdO2JyZWFrfWdrKCk7Yz1oYShrW2g+PjJdfDAsa1tsPj4yXXwwKXwwO2M9amcoYywoKGN8MCk8MCk8PDMxPj4zMSl8MDtrW28+PjJdPWM7aGsoKTtpZihrW28+PjJdfDApe2M9a2coa1tvPj4yXXwwKXwwO2tbbD4+Ml09KGN8MCkvKGtbaD4+Ml18MCl8MH19ZWxzZXtrW2g+PjJdPTA7a1tvPj4yXT0wfXdoaWxlKDApO2tbKGtbZj4+Ml18MCkrMjU2KzMyPj4yXT1rW28+PjJdO2tbKGtbZj4+Ml18MCkrMjU2KzI4Pj4yXT0wO2pbKGtbZj4+Ml18MCkrMjU2KzQ+PjFdPWtbaD4+Ml07aWYoa1tvPj4yXXwwKXtrW24+PjJdPWtbbz4+Ml07a1ttPj4yXT0oa1tsPj4yXXwwKS0xO3doaWxlKDEpe2lmKChrW20+PjJdfDApPDApYnJlYWs7a1trW24+PjJdPj4yXT1rWyhrW2Y+PjJdfDApKzI1NisyOD4+Ml07a1soa1tmPj4yXXwwKSsyNTYrMjg+PjJdPWtbbj4+Ml07a1tuPj4yXT0oa1tuPj4yXXwwKSsoa1toPj4yXXwwKTtrW20+PjJdPShrW20+PjJdfDApKy0xfWtbKGtbZj4+Ml18MCkrMjU2KzM2Pj4yXT1rW24+PjJdO2tbKGtbZj4+Ml18MCkrMjU2Pj4yXT0wO2lbKGtbZj4+Ml18MCkrMjU2KzY+PjBdPShrW2c+PjJdfDApPT0wPzE6MH1lbHNle2tbKGtbZj4+Ml18MCkrMjU2KzMyPj4yXT1rW2Y+PjJdO2tbKGtbZj4+Ml18MCkrMjU2KzM2Pj4yXT1rW2Y+PjJdO2tbKGtbZj4+Ml18MCkrMjU2Pj4yXT0xO2lbKGtbZj4+Ml18MCkrMjU2KzY+PjBdPTB9a1tlPj4yXT0wO2M9a1tlPj4yXXwwO3I9cDtyZXR1cm4gY3wwfWZ1bmN0aW9uIHJpKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTA7Zz1yO3I9cisxNnwwO2Y9ZztjPWcrMTJ8MDtkPWcrOHwwO2U9Zys0fDA7a1tkPj4yXT1hO2tbZT4+Ml09YjtpZighKGtbZD4+Ml18MCkpe2tbYz4+Ml09MDtmPWtbYz4+Ml18MDtyPWc7cmV0dXJuIGZ8MH1pZighKGVpKGtbZD4+Ml18MCl8MCkpe2Y9VmYoMTM4ODY3KXwwO2tbYz4+Ml09ZjtmPWtbYz4+Ml18MDtyPWc7cmV0dXJuIGZ8MH1pZigobFsoa1tkPj4yXXwwKSs3Nj4+MF18MCkmOCllY1trWyhrW2Q+PjJdfDApKzE4ND4+Ml0mMjU1XSg4LGtbKGtbZD4+Ml18MCkrMTg4Pj4yXXwwLGtbZD4+Ml18MCwwKXwwO3h1KGtbZD4+Ml18MCk7eXUoa1tkPj4yXXwwKXwwO2lmKChrW2U+PjJdfDApPT0wPyh6dShrW2Q+PjJdfDApfDApIT0wOjApe3RnKGtbZD4+Ml18MCw1LDI2Mjk1LGYpO2tbYz4+Ml09NTtmPWtbYz4+Ml18MDtyPWc7cmV0dXJuIGZ8MH1rWyhrW2Q+PjJdfDApKzg0Pj4yXT0xNjkxMzUyMTkxO19nKGtbZD4+Ml18MCk7a1tjPj4yXT0wO2Y9a1tjPj4yXXwwO3I9ZztyZXR1cm4gZnwwfWZ1bmN0aW9uIHNpKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wO2U9cjtyPXIrMzJ8MDtjPWUrMTZ8MDtoPWUrMTJ8MDtnPWUrOHwwO2Q9ZSs0fDA7Zj1lO2tbaD4+Ml09YTtrW2c+PjJdPWI7a1tkPj4yXT1rW2g+PjJdO2tbZj4+Ml09a1soa1toPj4yXXwwKSs0Mjg+PjJdO2lmKCgoKGtbZz4+Ml18MCkrMXwwKSoxZTN8MCk+KGtbZj4+Ml18MCkpe2tbYz4+Ml09MDtoPWtbYz4+Ml18MDtyPWU7cmV0dXJuIGh8MH1lbHNle0dpKGtba1tkPj4yXT4+Ml18MCwxZTYpfDA7a1tjPj4yXT0xO2g9a1tjPj4yXXwwO3I9ZTtyZXR1cm4gaHwwfXJldHVybiAwfVxuZnVuY3Rpb24gdGkoYSxiLGMsZCxlLGYsZyxoLGwpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2w9bHwwO3ZhciBuPTAsbz0wLHA9MCxxPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTA7RD1yO3I9cis2NHwwO0M9RDtwPUQrNTZ8MDtxPUQrNTJ8MDtzPUQrNDh8MDt0PUQrNDR8MDt1PUQrNDB8MDt2PUQrMzZ8MDt3PUQrMzJ8MDt4PUQrMjh8MDt5PUQrMjR8MDt6PUQrMjB8MDtCPUQrMTZ8MDtuPUQrMTJ8MDtBPUQrOHwwO289RCs0fDA7a1txPj4yXT1hO2tbcz4+Ml09YjtrW3Q+PjJdPWM7a1t1Pj4yXT1kO2tbdj4+Ml09ZTtrW3c+PjJdPWY7a1t4Pj4yXT1nO2tbeT4+Ml09aDtrW3o+PjJdPWw7ZG8gaWYoa1tzPj4yXXwwKXtpZigoa1t3Pj4yXXwwKSE9MD8oa1t5Pj4yXXwwKSE9MHwoa1t4Pj4yXXwwKSE9MDowKWJyZWFrO2lmKCgoa1t3Pj4yXXwwKT09MCYoa1t5Pj4yXXwwKSE9MF4xfChrW3g+PjJdfDApIT0wPyEoKCgoa1t3Pj4yXXwwKSE9MHwoa1t5Pj4yXXwwKSE9MCleMSkmKGtbeD4+Ml18MCkhPTB8KGtbdD4+Ml18MCk8LTF8KGtbdD4+Ml18MCk+MTI3KTowKT8oYj1UZihrW3M+PjJdfDApfDAsa1tuPj4yXT1iLDI1NT49KGJ8MCkpOjApe2tbQT4+Ml09a1t1Pj4yXSYyMDQ4O2tbdT4+Ml09a1t1Pj4yXSY3O2RvIGlmKChrW3U+PjJdfDApIT00KXtpZigoa1t1Pj4yXXwwKT09NSl7Yj10aShrW3E+PjJdfDAsa1tzPj4yXXwwLGtbdD4+Ml18MCwxfGtbQT4+Ml0sa1t2Pj4yXXwwLGtbdz4+Ml18MCxrW3g+PjJdfDAsa1t5Pj4yXXwwLGtbej4+Ml18MCl8MDtrW28+PjJdPWI7aWYoIShrW28+PjJdfDApKXtiPXRpKGtbcT4+Ml18MCxrW3M+PjJdfDAsa1t0Pj4yXXwwLDJ8a1tBPj4yXSxrW3Y+PjJdfDAsa1t3Pj4yXXwwLGtbeD4+Ml18MCxrW3k+PjJdfDAsa1t6Pj4yXXwwKXwwO2tbbz4+Ml09Yn1pZighKGtbbz4+Ml18MCkpe2tbdT4+Ml09MzticmVha31rW3A+PjJdPWtbbz4+Ml07Qz1rW3A+PjJdfDA7cj1EO3JldHVybiBDfDB9fWVsc2Uga1t1Pj4yXT0oaVs5NjhdfDApPT0wPzM6Mjt3aGlsZSgwKTtiPXVpKGtbcT4+Ml18MCxrW3M+PjJdfDAsa1t0Pj4yXXwwLGtbdT4+Ml0mMjU1LDApfDA7a1tCPj4yXT1iO2RvIGlmKCgoa1tCPj4yXXwwKSE9MD8obVsoa1tCPj4yXXwwKSsyPj4xXSYzfDApPT0oa1t1Pj4yXXwwKTowKT8oaVtrW0I+PjJdPj4wXXwwKT09KGtbdD4+Ml18MCk6MCl7YT1rW3E+PjJdfDA7aWYoIShrWyhrW3E+PjJdfDApKzE1Nj4+Ml18MCkpe2FpKGEpO2JyZWFrfXRnKGEsNSwyNjIzMixDKTtrW3A+PjJdPTU7Qz1rW3A+PjJdfDA7cj1EO3JldHVybiBDfDB9d2hpbGUoMCk7Qz11aShrW3E+PjJdfDAsa1tzPj4yXXwwLGtbdD4+Ml18MCxrW3U+PjJdJjI1NSwxKXwwO2tbQj4+Ml09QztpZighKGtbQj4+Ml18MCkpe2tbcD4+Ml09NztDPWtbcD4+Ml18MDtyPUQ7cmV0dXJuIEN8MH13dShrW3E+PjJdfDAsa1tCPj4yXXwwKTtpZihrW3o+PjJdfDApe0M9a1t6Pj4yXXwwO2tbQz4+Ml09KGtbQz4+Ml18MCkrMX1rWyhrW0I+PjJdfDApKzI0Pj4yXT1rW3o+PjJdO2pbKGtbQj4+Ml18MCkrMj4+MV09bVsoa1tCPj4yXXwwKSsyPj4xXSYzfGtbQT4+Ml07a1soa1tCPj4yXXwwKSsxMj4+Ml09KGtbdz4+Ml18MCkhPTA/a1t3Pj4yXXwwOmtbeD4+Ml18MDtrWyhrW0I+PjJdfDApKzE2Pj4yXT1rW3k+PjJdO2tbKGtbQj4+Ml18MCkrND4+Ml09a1t2Pj4yXTtpW2tbQj4+Ml0+PjBdPWtbdD4+Ml07a1twPj4yXT0wO0M9a1twPj4yXXwwO3I9RDtyZXR1cm4gQ3wwfX13aGlsZSgwKTtDPVZmKDEzOTQzNil8MDtrW3A+PjJdPUM7Qz1rW3A+PjJdfDA7cj1EO3JldHVybiBDfDB9ZnVuY3Rpb24gdWkoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsbT0wLG49MCxvPTAscD0wLHE9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTA7eT1yO3I9cis2NHwwO2Y9eSs0NHwwO2c9eSs0MHwwO2g9eSszNnwwO209eSszMnwwO249eSs0OXwwO289eSs0OHwwO3Q9eSsyOHwwO3U9eSsyNHwwO3A9eSsyMHwwO3E9eSsxNnwwO3M9eSsxMnwwO3c9eSs4fDA7eD15KzR8MDt2PXk7a1tnPj4yXT1hO2tbaD4+Ml09YjtrW20+PjJdPWM7aVtuPj4wXT1kO2lbbz4+MF09ZTtrW3U+PjJdPTA7a1twPj4yXT0wO2I9VGYoa1toPj4yXXwwKXwwO2tbcz4+Ml09YjtiPUNqKChrW2c+PjJdfDApKzM0OHwwLGtbaD4+Ml18MCl8MDtrW3Q+PjJdPWI7d2hpbGUoMSl7aWYoIShrW3Q+PjJdfDApKWJyZWFrO2I9cXUoa1t0Pj4yXXwwLGtbbT4+Ml18MCxpW24+PjBdfDApfDA7a1t3Pj4yXT1iO2lmKChrW3c+PjJdfDApPihrW3A+PjJdfDApKXtrW3U+PjJdPWtbdD4+Ml07a1twPj4yXT1rW3c+PjJdfWtbdD4+Ml09a1soa1t0Pj4yXXwwKSs4Pj4yXX1hOmRvIGlmKCEoaVtvPj4wXXwwKSl7aWYoKGtbdT4+Ml18MCkhPTA/KGtbKGtbZz4+Ml18MCkrMjQ+PjJdJjIwOTcxNTJ8MCk9PTA6MClicmVhaztrW3A+PjJdPTA7a1txPj4yXT0oKGxbMTc2MTMrKGxba1toPj4yXT4+MF18MCk+PjBdfDApKyhrW3M+PjJdfDApfDApJTIzfDA7Yj1ydShrW3E+PjJdfDAsa1toPj4yXXwwKXwwO2tbdD4+Ml09Yjt3aGlsZSgxKXtpZighKGtbdD4+Ml18MCkpYnJlYWsgYTtiPXF1KGtbdD4+Ml18MCxrW20+PjJdfDAsaVtuPj4wXXwwKXwwO2tbeD4+Ml09YjtpZigoa1t4Pj4yXXwwKT4oa1twPj4yXXwwKSl7a1t1Pj4yXT1rW3Q+PjJdO2tbcD4+Ml09a1t4Pj4yXX1rW3Q+PjJdPWtbKGtbdD4+Ml18MCkrOD4+Ml19fXdoaWxlKDApO2RvIGlmKChsW28+PjBdfDApIT0wJihrW3A+PjJdfDApPDY/KGI9Q2goa1tnPj4yXXwwLDI4KyhrW3M+PjJdfDApKzF8MCwwKXwwLGtbdT4+Ml09YiwoYnwwKSE9MCk6MCl7a1soa1t1Pj4yXXwwKSsyMD4+Ml09KGtbdT4+Ml18MCkrMjg7aVtrW3U+PjJdPj4wXT1rW20+PjJdO2pbKGtbdT4+Ml18MCkrMj4+MV09bFtuPj4wXXwwO2JTKChrW3U+PjJdfDApKzI4fDAsa1toPj4yXXwwLChrW3M+PjJdfDApKzF8MCl8MDtiPWNrKChrW2c+PjJdfDApKzM0OHwwLGtbKGtbdT4+Ml18MCkrMjA+PjJdfDAsa1t1Pj4yXXwwKXwwO2tbdj4+Ml09YjtpZigoa1t2Pj4yXXwwKSE9KGtbdT4+Ml18MCkpe2tbKGtbdT4+Ml18MCkrOD4+Ml09a1t2Pj4yXTticmVha31iZyhrW2c+PjJdfDAsa1t1Pj4yXXwwKTt3aChrW2c+PjJdfDApO2tbZj4+Ml09MDtiPWtbZj4+Ml18MDtyPXk7cmV0dXJuIGJ8MH13aGlsZSgwKTtkbyBpZihrW3U+PjJdfDApe2lmKChrWyhrW3U+PjJdfDApKzEyPj4yXXwwKT09MD8obFtvPj4wXXwwKT09MDowKWJyZWFrO2tbZj4+Ml09a1t1Pj4yXTtiPWtbZj4+Ml18MDtyPXk7cmV0dXJuIGJ8MH13aGlsZSgwKTtrW2Y+PjJdPTA7Yj1rW2Y+PjJdfDA7cj15O3JldHVybiBifDB9ZnVuY3Rpb24gdmkoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wO2Q9cjtyPXIrMzJ8MDtnPWQ7Zj1kKzIwfDA7aD1kKzh8MDtlPWQrNHwwO2tbZj4+Ml09YTtrW2QrMTY+PjJdPWI7a1tkKzEyPj4yXT1jO2tbaD4+Ml09a1soa1soa1tmPj4yXXwwKSs0Pj4yXXwwKSsyMD4+Ml07a1tnPj4yXT1rW2g+PjJdO2E9WWQoMjYxODEsZyl8MDtrW2U+PjJdPWE7c2Uoa1tmPj4yXXwwLGtbZT4+Ml18MCwtMSk7VWQoa1tlPj4yXXwwKTtyPWQ7cmV0dXJufWZ1bmN0aW9uIHdpKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaT0wO2c9cjtyPXIrMTZ8MDtoPWcrMTJ8MDtlPWcrOHwwO2Y9Zys0fDA7aT1nO2tbaD4+Ml09YTtrW2U+PjJdPWI7a1tmPj4yXT1jO2tbaT4+Ml09ZDtpZigoa1tpPj4yXXwwKTwoa1toPj4yXXwwKSl7cj1nO3JldHVybiAwfWdrKCk7TWYoa1tlPj4yXXwwLGtbZj4+Ml18MCl8MDtoaygpO3I9ZztyZXR1cm4gMH1mdW5jdGlvbiB4aShhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wO2c9cjtyPXIrMTZ8MDtjPWcrMTJ8MDtkPWcrOHwwO2Y9Zys0fDA7ZT1nO2tbYz4+Ml09YTtrW2Q+PjJdPWI7a1tmPj4yXT0tMTtpZighKGtbZD4+Ml18MCkpe2Y9a1tmPj4yXXwwO3I9ZztyZXR1cm4gZnwwfWtbZj4+Ml09KGtbKGtbYz4+Ml18MCkrMjA+PjJdfDApLTE7a1tlPj4yXT0oa1soa1tjPj4yXXwwKSsxNj4+Ml18MCkrKGtbZj4+Ml08PDQpO3doaWxlKDEpe2lmKChrW2Y+PjJdfDApPDApe2M9NjticmVha31pZighKHNnKGtba1tlPj4yXT4+Ml18MCxrW2Q+PjJdfDApfDApKXtjPTY7YnJlYWt9a1tmPj4yXT0oa1tmPj4yXXwwKSstMTtrW2U+PjJdPShrW2U+PjJdfDApKy0xNn1pZigoY3wwKT09Nil7Zj1rW2Y+PjJdfDA7cj1nO3JldHVybiBmfDB9cmV0dXJuIDB9ZnVuY3Rpb24geWkoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaT0wLGo9MCxsPTAsbT0wLG49MCxvPTA7bz1yO3I9ciszMnwwO2Y9bysyOHwwO2c9bysyNHwwO2g9bysyMHwwO2k9bysxNnwwO2o9bysxMnwwO249bys4fDA7bT1vKzR8MDtsPW87a1tmPj4yXT1hO2tbZz4+Ml09YjtrW2g+PjJdPWM7a1tpPj4yXT1kO2tbaj4+Ml09ZTtrW24+PjJdPTA7a1tsPj4yXT0wO2tbbT4+Ml09MDt3aGlsZSgxKXtpZighKChrW20+PjJdfDApPChrWyhrW2Y+PjJdfDApKzIwPj4yXXwwKT8oa1tuPj4yXXwwKT09MDowKSlicmVhaztpZigoKGtbZz4+Ml18MCk9PTEwPzE6KGtbbT4+Ml18MCk9PShrW2c+PjJdfDApKT8oZD1vdShrWyhrWyhrW2Y+PjJdfDApKzE2Pj4yXXwwKSsoa1ttPj4yXTw8NCkrND4+Ml18MCxrW2g+PjJdfDAsa1tpPj4yXXwwLGtbaj4+Ml18MCl8MCxrW24+PjJdPWQsa1tpPj4yXT0wLGtbaj4+Ml09MCwoa1tuPj4yXXwwKT09NSk6MCl7a1tsPj4yXT0xO2tbbj4+Ml09MH1rW20+PjJdPShrW20+PjJdfDApKzF9cj1vO3JldHVybiAoKGtbbj4+Ml18MCk9PTAmKGtbbD4+Ml18MCkhPTA/NTprW24+PjJdfDApfDB9ZnVuY3Rpb24gemkoYSl7YT1hfDA7dmFyIGI9MCxjPTA7Yz1yO3I9cisxNnwwO2I9YztrW2I+PjJdPWE7aWYoIShsWyhrW2I+PjJdfDApKzY5Pj4wXXwwKSl7cj1jO3JldHVybn1pZihrWyhrW2I+PjJdfDApKzE2OD4+Ml18MCl7cj1jO3JldHVybn1pWyhrW2I+PjJdfDApKzY5Pj4wXT0wO2tbKGtbYj4+Ml18MCkrMjQ4Pj4yXT0wO2E9KGtbYj4+Ml18MCkrMjU2fDA7a1thPj4yXT0oa1thPj4yXXwwKSstMTtyPWM7cmV0dXJufWZ1bmN0aW9uIEFpKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHM9MDtzPXI7cj1yKzQ4fDA7bz1zO2Y9cys0MHwwO2c9cyszNnwwO2g9cyszMnwwO2o9cysyOHwwO2w9cysyNHwwO209cysyMHwwO249cysxNnwwO2U9cysxMnwwO3E9cys4fDA7cD1zKzR8MDtrW2c+PjJdPWE7a1toPj4yXT1iO2tbaj4+Ml09YztrW2w+PjJdPWQ7a1txPj4yXT0wO2tbcD4+Ml09MDtrW2tbaD4+Ml0+PjJdPTA7ZD1OZCgpfDA7a1tuPj4yXT1kO2lmKGtbbj4+Ml18MCl7a1tmPj4yXT1rW24+PjJdO3E9a1tmPj4yXXwwO3I9cztyZXR1cm4gcXwwfWlmKCEoMTw8KGtbaj4+Ml0mNykmNzApKXtxPVZmKDE0MDYyMSl8MDtrW2Y+PjJdPXE7cT1rW2Y+PjJdfDA7cj1zO3JldHVybiBxfDB9ZG8gaWYoa1szXXwwKXtpZihrW2o+PjJdJjMyNzY4KXtrW2U+PjJdPTA7YnJlYWt9aWYoa1tqPj4yXSY2NTUzNil7a1tlPj4yXT0xO2JyZWFrfWVsc2V7a1tlPj4yXT1rWzRdO2JyZWFrfX1lbHNlIGtbZT4+Ml09MDt3aGlsZSgwKTtpZighKGtbaj4+Ml0mMjYyMTQ0KSl7aWYoa1s1N118MClrW2o+PjJdPWtbaj4+Ml18MTMxMDcyfWVsc2Uga1tqPj4yXT1rW2o+PjJdJi0xMzEwNzM7a1tqPj4yXT1rW2o+PjJdJi02NTUxMjk7ZD11Zyg0NjQsMCl8MDtrW20+PjJdPWQ7ZG8gaWYoa1ttPj4yXXwwKXtpZigoa1tlPj4yXXwwKSE9MD8oa1soa1ttPj4yXXwwKSsxMj4+Ml09OCwoa1soa1ttPj4yXXwwKSsxMj4+Ml18MCk9PTApOjApe1VkKGtbbT4+Ml18MCk7a1ttPj4yXT0wO2JyZWFrfWtbKGtbbT4+Ml18MCkrNTY+PjJdPTI1NTtrWyhrW20+PjJdfDApKzIwPj4yXT0yO2tbKGtbbT4+Ml18MCkrODQ+PjJdPS0yNjQ1Mzc4NTA7a1soa1ttPj4yXXwwKSsxNj4+Ml09KGtbbT4+Ml18MCkrMzkyO2M9KGtbbT4+Ml18MCkrOTZ8MDtlPTE1ODA7Yj1jKzQ4fDA7ZG97a1tjPj4yXT1rW2U+PjJdO2M9Yys0fDA7ZT1lKzR8MH13aGlsZSgoY3wwKTwoYnwwKSk7a1soa1ttPj4yXXwwKSs5Nis0ND4+Ml09MDtpWyhrW20+PjJdfDApKzY3Pj4wXT0xO2lbKGtbbT4+Ml18MCkrNzI+PjBdPS0xO2I9MTg0O2E9a1tiKzQ+PjJdfDA7ZD0oa1ttPj4yXXwwKSs0MHwwO2tbZD4+Ml09a1tiPj4yXTtrW2QrND4+Ml09YTtrWyhrW20+PjJdfDApKzgwPj4yXT0wO2tbKGtbbT4+Ml18MCkrMTQ0Pj4yXT0yMTQ3NDgzNjQ3O2Q9KGtbbT4+Ml18MCkrMjR8MDtrW2Q+PjJdPWtbZD4+Ml18MTc4MjU4ODg7SmooKGtbbT4+Ml18MCkrMzY0fDApO0pqKChrW20+PjJdfDApKzMyMHwwKTtCaShrW20+PjJdfDAsMzQ4MzQsMSwwLDE0MSwwKXwwO0JpKGtbbT4+Ml18MCwzNDgzNCwzLDAsMTQxLDApfDA7Qmkoa1ttPj4yXXwwLDM0ODM0LDIsMCwxNDEsMCl8MDtCaShrW20+PjJdfDAsMjA0MjksMSwwLDE0MiwwKXwwO0JpKGtbbT4+Ml18MCwyMDQzNiwxLDEsMTQxLDApfDA7aWYoIShpWyhrW20+PjJdfDApKzY5Pj4wXXwwKSl7ZD1hayhrW20+PjJdfDAsMSwzNDgzNCwwKXwwO2tbKGtbbT4+Ml18MCkrOD4+Ml09ZDtrWyhrW20+PjJdfDApKzQ4Pj4yXT1rW2o+PjJdO2w9a2soa1tsPj4yXXwwLGtbZz4+Ml18MCxqLGtbbT4+Ml18MCxxLHApfDA7a1tuPj4yXT1sO2lmKGtbbj4+Ml18MCl7aWYoKGtbbj4+Ml18MCk9PTcpd2goa1ttPj4yXXwwKTtnPWtbbT4+Ml18MDtqPWtbbj4+Ml18MDtsPShrW3A+PjJdfDApIT0wPzE4MzkxOjA7a1tvPj4yXT1rW3A+PjJdO3RnKGcsaixsLG8pO1VkKGtbcD4+Ml18MCk7YnJlYWt9cD1sayhrW2tbbT4+Ml0+PjJdfDAsa1txPj4yXXwwLGtbbT4+Ml18MCwoa1soa1ttPj4yXXwwKSsxNj4+Ml18MCkrNHwwLDAsa1tqPj4yXXwyNTYpfDA7a1tuPj4yXT1wO2lmKGtbbj4+Ml18MCl7aWYoKGtbbj4+Ml18MCk9PTMwODIpa1tuPj4yXT03O3ZnKGtbbT4+Ml18MCxrW24+PjJdfDApO2JyZWFrfXdnKGtbKGtbKGtbbT4+Ml18MCkrMTY+PjJdfDApKzQ+PjJdfDApO3A9bWsoa1ttPj4yXXwwLGtbKGtbKGtbbT4+Ml18MCkrMTY+PjJdfDApKzQ+PjJdfDApfDA7a1soa1soa1ttPj4yXXwwKSsxNj4+Ml18MCkrMTI+PjJdPXA7aWYoIShpWyhrW20+PjJdfDApKzY5Pj4wXXwwKSlpWyhrW20+PjJdfDApKzY2Pj4wXT1pWyhrWyhrWyhrW20+PjJdfDApKzE2Pj4yXXwwKSsxMj4+Ml18MCkrNzc+PjBdfDA7cD1tayhrW20+PjJdfDAsMCl8MDtrWyhrWyhrW20+PjJdfDApKzE2Pj4yXXwwKSsxNisxMj4+Ml09cDtrW2tbKGtbbT4+Ml18MCkrMTY+PjJdPj4yXT0yMDQ0MjtpWyhrWyhrW20+PjJdfDApKzE2Pj4yXXwwKSs4Pj4wXT0zO2tbKGtbKGtbbT4+Ml18MCkrMTY+PjJdfDApKzE2Pj4yXT0xODY3MjtpWyhrWyhrW20+PjJdfDApKzE2Pj4yXXwwKSsxNis4Pj4wXT0xO2tbKGtbbT4+Ml18MCkrODQ+PjJdPS0xNjA3ODgzMTEzO2lmKCEoaVsoa1ttPj4yXXwwKSs2OT4+MF18MCkpe3ZnKGtbbT4+Ml18MCwwKTtuayhrW20+PjJdfDApO3A9TmYoa1ttPj4yXXwwKXwwO2tbbj4+Ml09cDtpZigoa1tuPj4yXXwwKT09MD8ob2soa1ttPj4yXXwwKSxwPU5mKGtbbT4+Ml18MCl8MCxrW24+PjJdPXAsKGtbbj4+Ml18MCkhPTApOjApYnJlYWs7aWYoKGtbbj4+Ml18MCk9PTA/KGlbKGtbbT4+Ml18MCkrNjk+PjBdfDApPT0wOjApe3A9cGsoa1ttPj4yXXwwKXwwO2tbbj4+Ml09cH1pZihrW24+PjJdfDApdmcoa1ttPj4yXXwwLGtbbj4+Ml18MCk7cWkoa1ttPj4yXXwwLDAsa1s5XXwwLGtbMTBdfDApfDA7SmYoa1ttPj4yXXwwLDFlMyl8MH19fXdoaWxlKDApO3A9TmYoa1ttPj4yXXwwKXwwO2tbbj4+Ml09cDtpZigoa1tuPj4yXXwwKSE9Nyl7aWYoa1tuPj4yXXwwKWtbKGtbbT4+Ml18MCkrODQ+PjJdPTEyNjYwOTQ3MzZ9ZWxzZXtDZihrW20+PjJdfDApfDA7a1ttPj4yXT0wfWtba1toPj4yXT4+Ml09a1ttPj4yXTtVZChrW3E+PjJdfDApO2tbZj4+Ml09a1tuPj4yXSYyNTU7cT1rW2Y+PjJdfDA7cj1zO3JldHVybiBxfDB9ZnVuY3Rpb24gQmkoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxtPTAsbj0wLG89MCxwPTAscT0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wO3g9cjtyPXIrNjR8MDt3PXg7Zz14KzQ0fDA7aD14KzQwfDA7aj14KzM2fDA7bT14KzQ4fDA7bj14KzMyfDA7bz14KzI4fDA7cD14KzI0fDA7dj14KzIwfDA7cz14KzE2fDA7cT14KzEyfDA7dD14Kzh8MDt1PXgrNHwwO2tbaD4+Ml09YTtrW2o+PjJdPWI7aVttPj4wXT1jO2tbbj4+Ml09ZDtrW28+PjJdPWU7a1twPj4yXT1mO2tbcz4+Ml09bFttPj4wXTtpZigoa1tzPj4yXXwwKT09NHwoa1tzPj4yXXwwKT09OClrW3M+PjJdPShpWzk2OF18MCk9PTA/MzoyO2lmKChrW3M+PjJdfDApPDF8KGtbcz4+Ml18MCk+Myl7dz1WZigxNDAxNzIpfDA7a1tnPj4yXT13O3c9a1tnPj4yXXwwO3I9eDtyZXR1cm4gd3wwfWI9YWsoa1toPj4yXXwwLGtbcz4+Ml0mMjU1LGtbaj4+Ml18MCwwKXwwO2tbdj4+Ml09YjthOmRvIGlmKChrW3Y+PjJdfDApIT0wPyhrWyhrW3Y+PjJdfDApKzEyPj4yXXwwKSE9MDowKXthPWtbaD4+Ml18MDtpZihrWyhrW2g+PjJdfDApKzE1Nj4+Ml18MCl7dGcoYSw1LDIwMzYxLHcpO2tbZz4+Ml09NTt3PWtbZz4+Ml18MDtyPXg7cmV0dXJuIHd8MH1haShhKTtpZigobFsoa1t2Pj4yXXwwKSs0Pj4wXSYtOXwwKT09KGtbcz4+Ml18MCkpe3c9Q2ooKGtbaD4+Ml18MCkrMzY0fDAsa1tqPj4yXXwwKXwwO2tbcT4+Ml09dztrW3Q+PjJdPTA7d2hpbGUoMSl7aWYoKGtbdD4+Ml18MCk+PTMpYnJlYWsgYTtrW3U+PjJdPShrW3E+PjJdfDApKygoa1t0Pj4yXXwwKSoyMHwwKTtpZigobFsoa1t1Pj4yXXwwKSs0Pj4wXXwwKT09KGxbKGtbdj4+Ml18MCkrND4+MF18MCkpe2lmKGtbKGtbdT4+Ml18MCkrMTY+PjJdfDApX2Jba1soa1t1Pj4yXXwwKSsxNj4+Ml0mMjU1XShrWyhrW3U+PjJdfDApKzg+PjJdfDApO2tbKGtbdT4+Ml18MCkrMTI+PjJdPTB9a1t0Pj4yXT0oa1t0Pj4yXXwwKSsxfX19d2hpbGUoMCk7dz1hayhrW2g+PjJdfDAsa1tzPj4yXSYyNTUsa1tqPj4yXXwwLDEpfDA7a1t2Pj4yXT13O2lmKCEoa1t2Pj4yXXwwKSl7a1tnPj4yXT03O3c9a1tnPj4yXXwwO3I9eDtyZXR1cm4gd3wwfWVsc2V7a1soa1t2Pj4yXXwwKSsxMj4+Ml09a1tvPj4yXTtrWyhrW3Y+PjJdfDApKzg+PjJdPWtbbj4+Ml07a1soa1t2Pj4yXXwwKSsxNj4+Ml09a1twPj4yXTtpWyhrW3Y+PjJdfDApKzQ+PjBdPWtbcz4+Ml18bFttPj4wXSY4O3ZnKGtbaD4+Ml18MCwwKTtrW2c+PjJdPTA7dz1rW2c+PjJdfDA7cj14O3JldHVybiB3fDB9cmV0dXJuIDB9ZnVuY3Rpb24gQ2koYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTA7aD1yO3I9ciszMnwwO2M9aCsxNnwwO2Q9aCsxMnwwO2Y9aCs4fDA7Zz1oKzR8MDtlPWg7a1tjPj4yXT1hO2tbZD4+Ml09YjtrW2U+PjJdPSgoa1soa1tjPj4yXXwwKSsyND4+Ml0mMnwwKSE9MF4xKSYxO2tbZz4+Ml09MDtpWyhrW2M+PjJdfDApKzE0OCs1Pj4wXT0xO2lbKGtbYz4+Ml18MCkrNjY+PjBdPWlbKGtbKGtbKGtbYz4+Ml18MCkrMTY+PjJdfDApKzEyPj4yXXwwKSs3Nz4+MF18MDtrW2Y+PjJdPTA7d2hpbGUoMSl7aWYoa1tnPj4yXXwwKWJyZWFrO2lmKChrW2Y+PjJdfDApPj0oa1soa1tjPj4yXXwwKSsyMD4+Ml18MCkpYnJlYWs7aWYoISgoa1tmPj4yXXwwKT09MT8xOigobVsoa1soa1soa1tjPj4yXXwwKSsxNj4+Ml18MCkrKGtbZj4+Ml08PDQpKzEyPj4yXXwwKSs3OD4+MV18MCkmMXwwKT09MSk/KGI9Rmooa1tjPj4yXXwwLGtbZj4+Ml18MCxrW2Q+PjJdfDApfDAsa1tnPj4yXT1iLChrW2c+PjJdfDApIT0wKTowKUdqKGtbYz4+Ml18MCxrW2Y+PjJdfDApO2tbZj4+Ml09KGtbZj4+Ml18MCkrMX1pZigoKGtbZz4+Ml18MCk9PTA/KChtWyhrWyhrWyhrW2M+PjJdfDApKzE2Pj4yXXwwKSsxNisxMj4+Ml18MCkrNzg+PjFdfDApJjF8MCkhPTE6MCk/KGI9Rmooa1tjPj4yXXwwLDEsa1tkPj4yXXwwKXwwLGtbZz4+Ml09Yiwoa1tnPj4yXXwwKSE9MCk6MClHaihrW2M+PjJdfDAsMSk7aVsoa1tjPj4yXXwwKSsxNDgrNT4+MF09MDtpZighKChrW2c+PjJdfDApPT0wJihrW2U+PjJdfDApIT0wKSl7Zz1rW2c+PjJdfDA7cj1oO3JldHVybiBnfDB9SGooa1tjPj4yXXwwKTtnPWtbZz4+Ml18MDtyPWg7cmV0dXJuIGd8MH1mdW5jdGlvbiBEaShhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaT0wLGo9MCxsPTA7bD1yO3I9ciszMnwwO2Q9bCsyMHwwO2U9bCsxNnwwO2Y9bCsxMnwwO2k9bCs4fDA7Zz1sKzR8MDtoPWw7a1tkPj4yXT1hO2tbZT4+Ml09YjtrW2Y+PjJdPWM7a1tpPj4yXT0wO2tbZz4+Ml09MDt3aGlsZSgxKXtpZigoa1tnPj4yXXwwKT49KGtbKGtbZD4+Ml18MCkrMjA+PjJdfDApKXtqPTc7YnJlYWt9Yj1rW2c+PjJdfDA7a1toPj4yXT0oa1tnPj4yXXwwKTwyP2JeMTpiO2lmKCEoKGtbZj4+Ml18MCkhPTA/KHNnKGtbZj4+Ml18MCxrWyhrWyhrW2Q+PjJdfDApKzE2Pj4yXXwwKSsoa1toPj4yXTw8NCk+PjJdfDApfDApIT0wOjApKWo9NTtpZigoanwwKT09NT8oaj0wLGI9Q2ooKGtbKGtbKGtbZD4+Ml18MCkrMTY+PjJdfDApKyhrW2g+PjJdPDw0KSsxMj4+Ml18MCkrOHwwLGtbZT4+Ml18MCl8MCxrW2k+PjJdPWIsKGtbaT4+Ml18MCkhPTApOjApe2o9NzticmVha31rW2c+PjJdPShrW2c+PjJdfDApKzF9aWYoKGp8MCk9PTcpe3I9bDtyZXR1cm4ga1tpPj4yXXwwfXJldHVybiAwfWZ1bmN0aW9uIEVpKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MDtkPXI7cj1yKzE2fDA7Yj1kKzR8MDtjPWQ7a1tjPj4yXT1hO2RvIGlmKHNnKGtbYz4+Ml18MCwxOTg4Nyl8MCl7aWYoIShzZyhrW2M+PjJdfDAsMTk4OTUpfDApKXtrW2I+PjJdPTE7YnJlYWt9aWYoIShzZyhrW2M+PjJdfDAsMTk5MDEpfDApKXtrW2I+PjJdPTE7YnJlYWt9ZWxzZXtrW2I+PjJdPTA7YnJlYWt9fWVsc2Uga1tiPj4yXT0xO3doaWxlKDApO3I9ZDtyZXR1cm4ga1tiPj4yXXwwfWZ1bmN0aW9uIEZpKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MDtmPXI7cj1yKzE2fDA7Yz1mKzh8MDtkPWYrNHwwO2U9ZjtrW2Q+PjJdPWE7a1tlPj4yXT1iO2lmKCEoKGxbKGtbZD4+Ml18MCkrMTU+PjBdfDApJjQpKXtrW2M+PjJdPWtbZT4+Ml07Yj1rW2M+PjJdfDA7cj1mO3JldHVybiBifDB9ZWxzZXtiPWtba1tkPj4yXT4+Ml18MDtiPWIrKHVSKGtba1tkPj4yXT4+Ml18MCl8MCkrMXwwO2tbYz4+Ml09YjtiPWtbYz4+Ml18MDtyPWY7cmV0dXJuIGJ8MH1yZXR1cm4gMH1mdW5jdGlvbiBHaShhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MDtjPXI7cj1yKzE2fDA7ZT1jKzR8MDtkPWM7a1tlPj4yXT1hO2tbZD4+Ml09YjthPWdjW2tbKGtbZT4+Ml18MCkrNjA+PjJdJjI1NV0oa1tlPj4yXXwwLGtbZD4+Ml18MCl8MDtyPWM7cmV0dXJuIGF8MH1mdW5jdGlvbiBIaShhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wO2c9cjtyPXIrMTZ8MDtkPWcrMTJ8MDtlPWcrOHwwO2M9Zys0fDA7Zj1nO2tbZT4+Ml09YTtrW2M+PjJdPWI7a1tmPj4yXT0wO3doaWxlKDEpe2lmKChrW2Y+PjJdfDApPj0oa1soa1tlPj4yXXwwKSsyMD4+Ml18MCkpe2M9ODticmVha31pZihrWyhrWyhrW2U+PjJdfDApKzE2Pj4yXXwwKSsoa1tmPj4yXTw8NCkrND4+Ml18MCl7aWYoIShrW2M+PjJdfDApKXtjPTY7YnJlYWt9aWYoIShzZyhrW2M+PjJdfDAsa1soa1soa1tlPj4yXXwwKSsxNj4+Ml18MCkrKGtbZj4+Ml08PDQpPj4yXXwwKXwwKSl7Yz02O2JyZWFrfX1rW2Y+PjJdPShrW2Y+PjJdfDApKzF9aWYoKGN8MCk9PTYpe2tbZD4+Ml09a1soa1soa1tlPj4yXXwwKSsxNj4+Ml18MCkrKGtbZj4+Ml08PDQpKzQ+PjJdO2Y9a1tkPj4yXXwwO3I9ZztyZXR1cm4gZnwwfWVsc2UgaWYoKGN8MCk9PTgpe2tbZD4+Ml09MDtmPWtbZD4+Ml18MDtyPWc7cmV0dXJuIGZ8MH1yZXR1cm4gMH1mdW5jdGlvbiBJaShhKXthPWF8MDt2YXIgYj0wLGM9MDtjPXI7cj1yKzE2fDA7Yj1jO2tbYj4+Ml09YTtyPWM7cmV0dXJuIGtba1tiPj4yXT4+Ml18MH1mdW5jdGlvbiBKaShhKXthPWF8MDt2YXIgYj0wLGM9MDtiPXI7cj1yKzE2fDA7Yz1iO2tbYz4+Ml09YTthPWtbYz4+Ml18MDtpZihrWyhrW2M+PjJdfDApKzIxNj4+Ml18MCl7Yz1CaihrW2ErMjE2Pj4yXXwwKXwwO3I9YjtyZXR1cm4gY3wwfWVsc2V7Yz1rW2ErNjg+PjJdfDA7cj1iO3JldHVybiBjfDB9cmV0dXJuIDB9ZnVuY3Rpb24gS2koYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTA7ZD1yO3I9cisxNnwwO2c9ZCs4fDA7Zj1kKzR8MDtlPWQ7a1tnPj4yXT1hO2tbZj4+Ml09YjtrW2U+PjJdPWM7Yz1ZYltrWyhrW2tbZz4+Ml0+PjJdfDApKzQwPj4yXSYyNTVdKGtbZz4+Ml18MCxrW2Y+PjJdfDAsa1tlPj4yXXwwKXwwO3I9ZDtyZXR1cm4gY3wwfWZ1bmN0aW9uIExpKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MDtkPXI7cj1yKzE2fDA7Yj1kKzR8MDtjPWQ7a1tiPj4yXT1hO2tbYz4+Ml09a1s2OF07aWYoIShrW2M+PjJdfDApKXtjPTA7cj1kO3JldHVybiBjfDB9Yz1iY1trW2M+PjJdJjI1NV0oa1tiPj4yXXwwKXwwO3I9ZDtyZXR1cm4gY3wwfWZ1bmN0aW9uIE1pKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaT0wLGw9MCxuPTAsbz0wO249cjtyPXIrMzJ8MDtlPW4rMjR8MDtvPW4rMjB8MDtmPW4rMTZ8MDtnPW4rMTJ8MDtoPW4rOHwwO2w9bis0fDA7aT1uO2tbbz4+Ml09YTtrW2Y+PjJdPWI7a1tnPj4yXT1jO2tbaD4+Ml09ZDtrW2w+PjJdPTA7a1tpPj4yXT1rWyhrW28+PjJdfDApKzQ+PjJdO3dnKGtbbz4+Ml18MCk7aWYoKG1bKGtbaT4+Ml18MCkrMjI+PjFdfDApJjIpe2tbZT4+Ml09ODtvPWtbZT4+Ml18MDtyPW47cmV0dXJuIG98MH1pZigoa1tnPj4yXXwwKTwwKWtbZz4+Ml09KGtbKGtbaT4+Ml18MCkrMzI+PjJdfDApLShrWyhrW2k+PjJdfDApKzM2Pj4yXXwwKTtpZigoa1tmPj4yXXwwKT49NTEyJihrW2Y+PjJdfDApPD02NTUzNj8oKGtbZj4+Ml18MCktMSZrW2Y+PjJdfDApPT0wOjApe2tbKGtbaT4+Ml18MCkrMzI+PjJdPWtbZj4+Ml07Y2ooa1tpPj4yXXwwKX1vPWRqKGtba1tpPj4yXT4+Ml18MCwoa1tpPj4yXXwwKSszMnwwLGtbZz4+Ml18MCl8MDtrW2w+PjJdPW87a1soa1tpPj4yXXwwKSszNj4+Ml09KGtbKGtbaT4+Ml18MCkrMzI+PjJdfDApLShrW2c+PjJdJjY1NTM1KTtpZihrW2g+PjJdfDApe289KGtbaT4+Ml18MCkrMjJ8MDtqW28+PjFdPW1bbz4+MV18MHwyfWtbZT4+Ml09a1tsPj4yXTtvPWtbZT4+Ml18MDtyPW47cmV0dXJuIG98MH1mdW5jdGlvbiBOaShhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTA7ZD1yO3I9cisxNnwwO2Y9ZCs4fDA7ZT1kKzR8MDtjPWQ7a1tmPj4yXT1hO2tbZT4+Ml09YjtrW2M+PjJdPTU1O2JqKGtbZj4+Ml18MCxrW2U+PjJdfDAsYyl8MDtyPWQ7cmV0dXJuIGtbYz4+Ml18MH1mdW5jdGlvbiBPaShhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTA7ZD1yO3I9cisxNnwwO2I9ZCs0fDA7Yz1kO2tbYj4+Ml09YTskaSg4LGtbYj4+Ml18MCk7aWYoKGtbNzhdfDApIT0wPyhrWzUxXXwwKT49KGtbYj4+Ml18MCk6MCl7a1tjPj4yXT1rWzc3XTtrWzc3XT1rW2tbNzddPj4yXTtrWzc4XT0oa1s3OF18MCkrLTE7YWooMywxKTtjPWtbYz4+Ml18MDtyPWQ7cmV0dXJuIGN8MH1hPWtbYj4+Ml18MDthPWpnKGEsKChhfDApPDApPDwzMT4+MzEpfDA7a1tjPj4yXT1hO2lmKCEoKGtbMl18MCkhPTAmKGtbYz4+Ml18MCkhPTApKXtjPWtbYz4+Ml18MDtyPWQ7cmV0dXJuIGN8MH1haig0LGtnKGtbYz4+Ml18MCl8MCk7Yz1rW2M+PjJdfDA7cj1kO3JldHVybiBjfDB9ZnVuY3Rpb24gUGkoYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wLGU9MDtlPXI7cj1yKzE2fDA7Yj1lKzh8MDtkPWUrNHwwO2M9ZTtrW2I+PjJdPWE7aWYoIShrW2I+PjJdfDApKXtyPWU7cmV0dXJufWlmKChrW2I+PjJdfDApPj4+MD49KGtbNTBdfDApPj4+MD8oa1tiPj4yXXwwKT4+PjA8KGtbNzZdfDApPj4+MDowKXtrW2Q+PjJdPWtbYj4+Ml07a1trW2Q+PjJdPj4yXT1rWzc3XTtrWzc3XT1rW2Q+PjJdO2tbNzhdPShrWzc4XXwwKSsxO2xnKDMsMSk7cj1lO3JldHVybn1pZihrWzJdfDApe2Q9a2coa1tiPj4yXXwwKXwwO2tbYz4+Ml09ZDtsZyg0LGtbYz4+Ml18MCk7bGcoMCxrW2M+PjJdfDApO2xnKDksMSk7X2Jba1s1Mj4+Ml0mMjU1XShrW2I+PjJdfDApO3I9ZTtyZXR1cm59ZWxzZXtfYltrWzUyPj4yXSYyNTVdKGtbYj4+Ml18MCk7cj1lO3JldHVybn19ZnVuY3Rpb24gUWkoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTA7Yz1yO3I9cisxNnwwO2U9YztkPWMrNHwwO2tbZT4+Ml09YTtpW2Q+PjBdPWI7YT0oKFlpKGtbZT4+Ml18MCwxLGlbZD4+MF18MCl8MCkmMjU1fDApIT0wJjI1NTtyPWM7cmV0dXJuIGF8MH1mdW5jdGlvbiBSaShhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTA7aj1yO3I9ciszMnwwO2g9aisyNHwwO2M9aisyMHwwO2Q9aisxNnwwO2c9ajtlPWorMTJ8MDtmPWorOHwwO2tbYz4+Ml09YTtrW2Q+PjJdPWI7ZG8gaWYoKGlba1tjPj4yXT4+MF18MCk9PTQ4KXtpZigoaVsoa1tjPj4yXXwwKSsxPj4wXXwwKSE9MTIwPyhpWyhrW2M+PjJdfDApKzE+PjBdfDApIT04ODowKWJyZWFrO2E9ZztrW2E+PjJdPTA7a1thKzQ+PjJdPTA7a1tlPj4yXT0yO3doaWxlKDEpe2I9a1tlPj4yXXwwO2lmKChpWyhrW2M+PjJdfDApKyhrW2U+PjJdfDApPj4wXXwwKSE9NDgpYnJlYWs7a1tlPj4yXT1iKzF9a1tmPj4yXT1iO3doaWxlKDEpe2lmKCEobFsxODQwMysobFsoa1tjPj4yXXwwKSsoa1tmPj4yXXwwKT4+MF18MCk+PjBdJjgpKWJyZWFrO2E9ZzthPWtTKGtbYT4+Ml18MCxrW2ErND4+Ml18MCwxNiwwKXwwO2I9TDtiPSRSKGF8MCxifDAsKFZpKGlbKGtbYz4+Ml18MCkrKGtbZj4+Ml18MCk+PjBdfDApfDApJjI1NXwwLDApfDA7YT1nO2tbYT4+Ml09YjtrW2ErND4+Ml09TDtrW2Y+PjJdPShrW2Y+PjJdfDApKzF9ZD1rW2Q+PjJdfDA7a1tkPj4yXT1rW2c+PjJdO2tbZCs0Pj4yXT1rW2crND4+Ml07aWYoIShpWyhrW2M+PjJdfDApKyhrW2Y+PjJdfDApPj4wXXwwKSliPSgoa1tmPj4yXXwwKS0oa1tlPj4yXXwwKXwwKTw9MTY7ZWxzZSBiPTA7a1toPj4yXT1iPzA6MTtoPWtbaD4+Ml18MDtyPWo7cmV0dXJuIGh8MH13aGlsZSgwKTtmPWtbYz4+Ml18MDtnPWtbZD4+Ml18MDtnPVdpKGYsZyxUZihrW2M+PjJdfDApfDAsMSl8MDtrW2g+PjJdPWc7aD1rW2g+PjJdfDA7cj1qO3JldHVybiBofDB9ZnVuY3Rpb24gU2koYSl7YT1hfDA7dmFyIGI9MCxjPTA7Yj1yO3I9cisxNnwwO2M9YjtrW2M+PjJdPWE7YT1VaShrW2tbKGtbYz4+Ml18MCkrND4+Ml0+PjJdfDAsMSl8MDtyPWI7cmV0dXJuIGF8MH1mdW5jdGlvbiBUaShhKXthPWF8MDt2YXIgYj0wLGM9MDtjPXI7cj1yKzE2fDA7Yj1jO2tbYj4+Ml09YTtyPWM7cmV0dXJuICgobVsoa1soa1tiPj4yXXwwKSs0Pj4yXXwwKSsyMj4+MV18MCkmMXwwKSE9MHwwfWZ1bmN0aW9uIFVpKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wO2Q9cjtyPXIrMTZ8MDtjPWQrNHwwO2U9ZDtrW2M+PjJdPWE7a1tlPj4yXT1iO2lmKChrW2U+PjJdfDApIT0wPyhsWyhrW2M+PjJdfDApKzE2Pj4wXXwwfDApIT0wOjApe2U9MTg0MDI7cj1kO3JldHVybiBlfDB9ZT1rWyhrW2M+PjJdfDApKzE3Nj4+Ml18MDtyPWQ7cmV0dXJuIGV8MH1mdW5jdGlvbiBWaShhKXthPWF8MDt2YXIgYj0wLGM9MDtjPXI7cj1yKzE2fDA7Yj1jO2tbYj4+Ml09YTtrW2I+PjJdPShrW2I+PjJdfDApKygoMSZrW2I+PjJdPj42KSo5fDApO3I9YztyZXR1cm4ga1tiPj4yXSYxNXwwfWZ1bmN0aW9uIFdpKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLG09MCxuPTAsbz0wLHA9MCxxPTAscz0wLHQ9MCx1PTAsdj0wO3Y9cjtyPXIrNjR8MDtoPXYrNDh8MDtqPXYrNDR8MDttPXYrNDB8MDtlPXYrMzZ8MDtmPXYrNTJ8MDtwPXYrMzJ8MDtnPXY7cT12KzI4fDA7bz12KzI0fDA7bj12KzIwfDA7cz12KzE2fDA7dT12KzEyfDA7dD12Kzh8MDtrW2o+PjJdPWE7a1ttPj4yXT1iO2tbZT4+Ml09YztpW2Y+PjBdPWQ7YT1nO2tbYT4+Ml09MDtrW2ErND4+Ml09MDtrW3E+PjJdPTA7a1tuPj4yXT0wO2tbcz4+Ml09MDtrW3Q+PjJdPShrW2o+PjJdfDApKyhrW2U+PjJdfDApO2lmKChsW2Y+PjBdfDApPT0xKWtbcD4+Ml09MTtlbHNle2tbcD4+Ml09MjtrW28+PjJdPTMtKGxbZj4+MF18MCk7d2hpbGUoMSl7aWYoKGtbbz4+Ml18MCk+PShrW2U+PjJdfDApKWJyZWFrO2lmKGlbKGtbaj4+Ml18MCkrKGtbbz4+Ml18MCk+PjBdfDApYnJlYWs7a1tvPj4yXT0oa1tvPj4yXXwwKSsyfWtbcz4+Ml09KGtbbz4+Ml18MCk8KGtbZT4+Ml18MCkmMTtrW3Q+PjJdPShrW2o+PjJdfDApKyhrW28+PjJdXjEpO2tbaj4+Ml09KGtbaj4+Ml18MCkrKGxbZj4+MF0mMSl9d2hpbGUoMSl7aWYoKGtbaj4+Ml18MCk+Pj4wPj0oa1t0Pj4yXXwwKT4+PjApYnJlYWs7aWYoIShsWzE4NDAzKyhsW2tbaj4+Ml0+PjBdfDApPj4wXSYxKSlicmVhaztrW2o+PjJdPShrW2o+PjJdfDApKyhrW3A+PjJdfDApfWRvIGlmKChrW2o+PjJdfDApPj4+MDwoa1t0Pj4yXXwwKT4+PjApe2lmKChpW2tbaj4+Ml0+PjBdfDApPT00NSl7a1txPj4yXT0xO2tbaj4+Ml09KGtbaj4+Ml18MCkrKGtbcD4+Ml18MCk7YnJlYWt9aWYoKGlba1tqPj4yXT4+MF18MCk9PTQzKWtbaj4+Ml09KGtbaj4+Ml18MCkrKGtbcD4+Ml18MCl9d2hpbGUoMCk7a1t1Pj4yXT1rW2o+PjJdO3doaWxlKDEpe2lmKChrW2o+PjJdfDApPj4+MD49KGtbdD4+Ml18MCk+Pj4wKWJyZWFrO2lmKChpW2tbaj4+Ml0+PjBdfDApIT00OClicmVhaztrW2o+PjJdPShrW2o+PjJdfDApKyhrW3A+PjJdfDApfWtbbz4+Ml09MDt3aGlsZSgxKXtpZigoKGtbaj4+Ml18MCkrKGtbbz4+Ml18MCl8MCk+Pj4wPChrW3Q+PjJdfDApPj4+MD8oYT1pWyhrW2o+PjJdfDApKyhrW28+PjJdfDApPj4wXXwwLGtbbj4+Ml09YSwoYXwwKT49NDgpOjApZT0oa1tuPj4yXXwwKTw9NTc7ZWxzZSBlPTA7Zj1nO2Q9a1tmPj4yXXwwO2Y9a1tmKzQ+PjJdfDA7aWYoIWUpYnJlYWs7YT1rUyhkfDAsZnwwLDEwLDApfDA7Yj1rW24+PjJdfDA7Yj0kUihhfDAsTHwwLGJ8MCwoKGJ8MCk8MCk8PDMxPj4zMXwwKXwwO2I9X1IoYnwwLEx8MCw0OCwwKXwwO2E9ZztrW2E+PjJdPWI7a1thKzQ+PjJdPUw7a1tvPj4yXT0oa1tvPj4yXXwwKSsoa1twPj4yXXwwKX1jPShrW3E+PjJdfDApIT0wO2RvIGlmKCEoZj4+PjA+MjE0NzQ4MzY0N3woZnwwKT09MjE0NzQ4MzY0NyZkPj4+MD40Mjk0OTY3Mjk1KSl7Zj1nO2U9a1tmPj4yXXwwO2Y9a1tmKzQ+PjJdfDA7aWYoYyl7Zz1fUigwLDAsZXwwLGZ8MCl8MDttPWtbbT4+Ml18MDtrW20+PjJdPWc7a1ttKzQ+PjJdPUw7YnJlYWt9ZWxzZXttPWtbbT4+Ml18MDtrW20+PjJdPWU7a1ttKzQ+PjJdPWY7YnJlYWt9fWVsc2V7bT1rW20+PjJdfDA7a1ttPj4yXT1jPzA6LTE7a1ttKzQ+PjJdPWM/LTIxNDc0ODM2NDg6MjE0NzQ4MzY0N313aGlsZSgwKTtkbyBpZigoKGtbaj4+Ml18MCkrKGtbbz4+Ml18MCl8MCk+Pj4wPj0oa1t0Pj4yXXwwKT4+PjApe2lmKChrW28+PjJdfDApPT0wPyhrW3U+PjJdfDApPT0oa1tqPj4yXXwwKTowKWJyZWFrO2lmKCEoKGtbcz4+Ml18MCkhPTA/MTooa1tvPj4yXXwwKT4oKGtbcD4+Ml18MCkqMTl8MCkpKXtpZigoa1tvPj4yXXwwKTwoKGtbcD4+Ml18MCkqMTl8MCkpe2tbaD4+Ml09MDt1PWtbaD4+Ml18MDtyPXY7cmV0dXJuIHV8MH11PVhpKGtbaj4+Ml18MCxrW3A+PjJdfDApfDA7a1tuPj4yXT11O2lmKChrW24+PjJdfDApPDApe2tbaD4+Ml09MDt1PWtbaD4+Ml18MDtyPXY7cmV0dXJuIHV8MH1pZigoa1tuPj4yXXwwKT4wKXtrW2g+PjJdPTE7dT1rW2g+PjJdfDA7cj12O3JldHVybiB1fDB9ZWxzZXtrW2g+PjJdPShrW3E+PjJdfDApIT0wPzA6Mjt1PWtbaD4+Ml18MDtyPXY7cmV0dXJuIHV8MH19fXdoaWxlKDApO2tbaD4+Ml09MTt1PWtbaD4+Ml18MDtyPXY7cmV0dXJuIHV8MH1mdW5jdGlvbiBYaShhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wLGg9MDtoPXI7cj1yKzMyfDA7Yz1oKzE2fDA7ZD1oKzEyfDA7ZT1oKzh8MDtmPWgrNHwwO2c9aDtrW2M+PjJdPWE7a1tkPj4yXT1iO2tbZT4+Ml09MDtrW2c+PjJdPTE4NzY3O2tbZj4+Ml09MDt3aGlsZSgxKXtpZighKChrW2U+PjJdfDApPT0wPyhrW2Y+PjJdfDApPDE4OjApKWJyZWFrO2E9aGEoa1tmPj4yXXwwLGtbZD4+Ml18MCl8MDtrW2U+PjJdPSgoaVsoa1tjPj4yXXwwKSthPj4wXXwwKS0oaVsoa1tnPj4yXXwwKSsoa1tmPj4yXXwwKT4+MF18MCl8MCkqMTA7a1tmPj4yXT0oa1tmPj4yXXwwKSsxfWlmKGtbZT4+Ml18MCl7YT1rW2U+PjJdfDA7cj1oO3JldHVybiBhfDB9a1tlPj4yXT0oaVsoa1tjPj4yXXwwKSsoKGtbZD4+Ml18MCkqMTh8MCk+PjBdfDApLTU2O2E9a1tlPj4yXXwwO3I9aDtyZXR1cm4gYXwwfWZ1bmN0aW9uIFlpKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsbT0wO209cjtyPXIrMzJ8MDtnPW0rMTd8MDtkPW0rMTJ8MDtlPW0rOHwwO2g9bSsxNnwwO2o9bSs0fDA7Zj1tO2tbZD4+Ml09YTtrW2U+PjJdPWI7aVtoPj4wXT1jO2M9a1tkPj4yXXwwO2lmKChsWzE4NDAzKyhsW2tbZD4+Ml0+PjBdfDApPj4wXXwwKSY0KXtqPShaaShjKXwwKSYyNTU7aVtnPj4wXT1qO2o9aVtnPj4wXXwwO3I9bTtyZXR1cm4ganwwfWE9VGYoYyl8MDtrW2Y+PjJdPWE7a1tqPj4yXT0wO3doaWxlKDEpe2lmKChrW2o+PjJdfDApPj04KXtjPTExO2JyZWFrfWlmKChsWzE4Nzg2KyhrW2o+PjJdfDApPj4wXXwwfDApPT0oa1tmPj4yXXwwKT8oSmQoMTg4MDIrKGxbMTg3OTQrKGtbaj4+Ml18MCk+PjBdfDApfDAsa1tkPj4yXXwwLGtbZj4+Ml18MCl8MCk9PTA6MCl7aWYoIShrW2U+PjJdfDApKXtjPTk7YnJlYWt9aWYoKGxbMTg4MjcrKGtbaj4+Ml18MCk+PjBdfDB8MCk8PTEpe2M9OTticmVha319a1tqPj4yXT0oa1tqPj4yXXwwKSsxfWlmKChjfDApPT05KXtpW2c+PjBdPWlbMTg4MjcrKGtbaj4+Ml18MCk+PjBdfDA7aj1pW2c+PjBdfDA7cj1tO3JldHVybiBqfDB9ZWxzZSBpZigoY3wwKT09MTEpe2lbZz4+MF09aVtoPj4wXXwwO2o9aVtnPj4wXXwwO3I9bTtyZXR1cm4ganwwfXJldHVybiAwfWZ1bmN0aW9uIFppKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MDtkPXI7cj1yKzE2fDA7Yj1kKzR8MDtjPWQ7a1tiPj4yXT1hO2tbYz4+Ml09MDtpZihrW2I+PjJdfDApX2koa1tiPj4yXXwwLGMpfDA7cj1kO3JldHVybiBrW2M+PjJdfDB9ZnVuY3Rpb24gX2koYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLG09MCxuPTA7bj1yO3I9cis0OHwwO2Y9biszMnwwO2c9bisyOHwwO2g9bisyNHwwO2U9bjtqPW4rMjB8MDtjPW4rMTZ8MDtkPW4rMTJ8MDttPW4rOHwwO2tbZz4+Ml09YTtrW2g+PjJdPWI7YT1lO2tbYT4+Ml09MDtrW2ErND4+Ml09MDtrW2Q+PjJdPTA7ZG8gaWYoKGlba1tnPj4yXT4+MF18MCkhPTQ1KXtiPWtbZz4+Ml18MDtpZigoaVtrW2c+PjJdPj4wXXwwKT09NDMpe2tbZz4+Ml09YisxO2JyZWFrfWlmKChpW2I+PjBdfDApPT00OCl7aWYoKGlbKGtbZz4+Ml18MCkrMT4+MF18MCkhPTEyMD8oaVsoa1tnPj4yXXwwKSsxPj4wXXwwKSE9ODg6MClicmVhaztpZihsWzE4NDAzKyhsWyhrW2c+PjJdfDApKzI+PjBdfDApPj4wXSY4KXtrW20+PjJdPTA7a1tnPj4yXT0oa1tnPj4yXXwwKSsyO3doaWxlKDEpe2lmKChpW2tbZz4+Ml0+PjBdfDApIT00OClicmVhaztrW2c+PjJdPShrW2c+PjJdfDApKzF9a1tqPj4yXT0wO3doaWxlKDEpe2I9a1ttPj4yXXwwO2lmKCEoKGxbMTg0MDMrKGxbKGtbZz4+Ml18MCkrKGtbaj4+Ml18MCk+PjBdfDApPj4wXSY4fDApIT0wPyhrW2o+PjJdfDApPDg6MCkpYnJlYWs7ZT0oYjw8NCkrKChWaShpWyhrW2c+PjJdfDApKyhrW2o+PjJdfDApPj4wXXwwKXwwKSYyNTUpfDA7a1ttPj4yXT1lO2tbaj4+Ml09KGtbaj4+Ml18MCkrMX1pZigoYiYtMjE0NzQ4MzY0OHwwKT09MD8obFsxODQwMysobFsoa1tnPj4yXXwwKSsoa1tqPj4yXXwwKT4+MF18MCk+PjBdJjh8MCk9PTA6MCl7a1trW2g+PjJdPj4yXT1rW20+PjJdO2tbZj4+Ml09MTttPWtbZj4+Ml18MDtyPW47cmV0dXJuIG18MH1rW2Y+PjJdPTA7bT1rW2Y+PjJdfDA7cj1uO3JldHVybiBtfDB9fX1lbHNle2tbZD4+Ml09MTtrW2c+PjJdPShrW2c+PjJdfDApKzF9d2hpbGUoMCk7d2hpbGUoMSl7aWYoKGlba1tnPj4yXT4+MF18MCkhPTQ4KWJyZWFrO2tbZz4+Ml09KGtbZz4+Ml18MCkrMX1rW2o+PjJdPTA7d2hpbGUoMSl7aWYoKGtbaj4+Ml18MCk+PTExKWJyZWFrO209KGlbKGtbZz4+Ml18MCkrKGtbaj4+Ml18MCk+PjBdfDApLTQ4fDA7a1tjPj4yXT1tO2lmKCEoKG18MCk+PTAmKGtbYz4+Ml18MCk8PTkpKWJyZWFrO209ZTttPWtTKGtbbT4+Ml18MCxrW20rND4+Ml18MCwxMCwwKXwwO2E9a1tjPj4yXXwwO2E9JFIobXwwLEx8MCxhfDAsKChhfDApPDApPDwzMT4+MzF8MCl8MDttPWU7a1ttPj4yXT1hO2tbbSs0Pj4yXT1MO2tbaj4+Ml09KGtbaj4+Ml18MCkrMX1pZigoa1tqPj4yXXwwKT4xMCl7a1tmPj4yXT0wO209a1tmPj4yXXwwO3I9bjtyZXR1cm4gbXwwfWo9ZTttPWtbZD4+Ml18MDttPV9SKGtbaj4+Ml18MCxrW2orND4+Ml18MCxtfDAsKChtfDApPDApPDwzMT4+MzF8MCl8MDtqPUw7aWYoKGp8MCk+MHwoanwwKT09MCZtPj4+MD4yMTQ3NDgzNjQ3KXtrW2Y+PjJdPTA7bT1rW2Y+PjJdfDA7cj1uO3JldHVybiBtfDB9aWYoa1tkPj4yXXwwKXtqPWU7aj1fUigwLDAsa1tqPj4yXXwwLGtbais0Pj4yXXwwKXwwO209ZTtrW20+PjJdPWo7a1ttKzQ+PjJdPUx9a1trW2g+PjJdPj4yXT1rW2U+PjJdO2tbZj4+Ml09MTttPWtbZj4+Ml18MDtyPW47cmV0dXJuIG18MH1mdW5jdGlvbiAkaShhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTA7ZT1yO3I9cisxNnwwO2M9ZSs4fDA7Zj1lKzR8MDtkPWU7a1tjPj4yXT1hO2tbZj4+Ml09YjtrW2Q+PjJdPWtbZj4+Ml07aWYoKGtbZD4+Ml18MCk+Pj4wPD0oa1sxMDQ4KyhrW2M+PjJdPDwyKT4+Ml18MCk+Pj4wKXtyPWU7cmV0dXJufWtbMTA0OCsoa1tjPj4yXTw8Mik+PjJdPWtbZD4+Ml07cj1lO3JldHVybn1mdW5jdGlvbiBhaihhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MDtkPXI7cj1yKzE2fDA7Yz1kKzR8MDtlPWQ7a1tjPj4yXT1hO2tbZT4+Ml09YjthPTEwMDgrKGtbYz4+Ml08PDIpfDA7a1thPj4yXT0oa1thPj4yXXwwKSsoa1tlPj4yXXwwKTtpZigoa1sxMDA4KyhrW2M+PjJdPDwyKT4+Ml18MCk+Pj4wPD0oa1sxMDQ4KyhrW2M+PjJdPDwyKT4+Ml18MCk+Pj4wKXtyPWQ7cmV0dXJufWtbMTA0OCsoa1tjPj4yXTw8Mik+PjJdPWtbMTAwOCsoa1tjPj4yXTw8Mik+PjJdO3I9ZDtyZXR1cm59ZnVuY3Rpb24gYmooYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxuPTAsbz0wO289cjtyPXIrMzJ8MDtkPW8rMjB8MDtlPW8rMTZ8MDtmPW8rMTJ8MDtnPW8rOHwwO2g9bys0fDA7aj1vO2tbZD4+Ml09YTtrW2U+PjJdPWI7a1tmPj4yXT1jO2lmKChrW2U+PjJdfDApPDIpe249a1tlPj4yXXwwO3I9bztyZXR1cm4gbnwwfWtbZz4+Ml09KGxbMTc2MTMrKGxba1tkPj4yXT4+MF18MCk+PjBdPDwyXihsWzE3NjEzKyhsWyhrW2Q+PjJdfDApKygoa1tlPj4yXXwwKS0xKT4+MF18MCk+PjBdfDApKjNea1tlPj4yXXwwKSUxMjd8MDtrW2c+PjJdPShsWzE4ODM1KyhrW2c+PjJdfDApPj4wXXwwKS0xO3doaWxlKDEpe2lmKChrW2c+PjJdfDApPDApe249MTM7YnJlYWt9aWYoKGxbMTg5NjIrKGtbZz4+Ml18MCk+PjBdfDApPT0oa1tlPj4yXXwwKSl7a1toPj4yXT0wO2tbaj4+Ml09MTkwODYrKG1bOTUyNCsoa1tnPj4yXTw8MSk+PjFdfDApO3doaWxlKDEpe2lmKChrW2g+PjJdfDApPChrW2U+PjJdfDApKWM9KGlbKGtbZD4+Ml18MCkrKGtbaD4+Ml18MCk+PjBdJi0zM3wwKT09KGlbKGtbaj4+Ml18MCkrKGtbaD4+Ml18MCk+PjBdfDApO2Vsc2UgYz0wO2I9a1toPj4yXXwwO2lmKCFjKWJyZWFrO2tbaD4+Ml09YisxfWlmKChifDApPj0oa1tlPj4yXXwwKSlicmVha31rW2c+PjJdPShsWzE5NzYzKyhrW2c+PjJdfDApPj4wXXwwKS0xfWlmKChufDApPT0xMyl7bj1rW2U+PjJdfDA7cj1vO3JldHVybiBufDB9a1trW2Y+PjJdPj4yXT1sWzE5NjM5KyhrW2c+PjJdfDApPj4wXTtuPWtbZT4+Ml18MDtyPW87cmV0dXJuIG58MH1mdW5jdGlvbiBjaihhKXthPWF8MDt2YXIgYj0wLGM9MDtjPXI7cj1yKzE2fDA7Yj1jO2tbYj4+Ml09YTtpZighKGtbKGtbYj4+Ml18MCkrODA+PjJdfDApKXtyPWM7cmV0dXJufWE9KGtbYj4+Ml18MCkrODB8MDtrW2E+PjJdPShrW2E+PjJdfDApKy00O2pqKGtbKGtbYj4+Ml18MCkrODA+PjJdfDApO2tbKGtbYj4+Ml18MCkrODA+PjJdPTA7cj1jO3JldHVybn1mdW5jdGlvbiBkaihhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaT0wLG09MCxuPTAsbz0wO289cjtyPXIrMzJ8MDtkPW8rMjh8MDtlPW8rMjR8MDtmPW8rMjB8MDttPW8rMTZ8MDtpPW8rMTJ8MDtoPW8rOHwwO2c9bztrW2Q+PjJdPWE7a1tlPj4yXT1iO2tbZj4+Ml09YztrW20+PjJdPTA7a1tpPj4yXT1rW2tbZT4+Ml0+PjJdO2lmKCEoKGxbKGtbZD4+Ml18MCkrMTY+PjBdfDApIT0wPyhrWyhrW2Q+PjJdfDApKzI4Pj4yXXwwKSE9MDowKSluPTM7ZG8gaWYoKChufDApPT0zPyhuPShlaihrWyhrW2Q+PjJdfDApKzIxMj4+Ml18MCl8MCk9PTAsbiYoa1tpPj4yXXwwKSE9MCk6MCk/KGtbaT4+Ml18MCkhPShrWyhrW2Q+PjJdfDApKzE2MD4+Ml18MCk6MCl7a1toPj4yXT0wO249ZztrW24+PjJdPTA7a1tuKzQ+PjJdPTA7aWYoKGxbKGtbZD4+Ml18MCkrMTc+PjBdfDApPjA/KGtba1soa1tkPj4yXXwwKSs2ND4+Ml0+PjJdfDApIT0wOjApe249Zmooa1soa1tkPj4yXXwwKSs2ND4+Ml18MCxnKXwwO2tbbT4+Ml09bn1pZigoa1ttPj4yXXwwKT09MD8obj1naihrW2k+PjJdfDApfDAsa1toPj4yXT1uLChrW2g+PjJdfDApPT0wKTowKWtbbT4+Ml09NztpZighKGtbbT4+Ml18MCkpe2hqKGtbZD4+Ml18MCk7bj1paihrWyhrW2Q+PjJdfDApKzIxMj4+Ml18MCxrW2k+PjJdfDApfDA7a1ttPj4yXT1ufWlmKCEoa1ttPj4yXXwwKSl7amooa1soa1tkPj4yXXwwKSsyMDg+PjJdfDApO2tbKGtbZD4+Ml18MCkrMjA4Pj4yXT1rW2g+PjJdO249ZztuPSRSKGtbbj4+Ml18MCxrW24rND4+Ml18MCxrW2k+PjJdfDAsMCl8MDtuPV9SKG58MCxMfDAsMSwwKXwwO249aVMobnwwLEx8MCxrW2k+PjJdfDAsMCl8MDtrWyhrW2Q+PjJdfDApKzI4Pj4yXT1uO2tbKGtbZD4+Ml18MCkrMTYwPj4yXT1rW2k+PjJdO2JyZWFrfWVsc2V7amooa1toPj4yXXwwKTticmVha319d2hpbGUoMCk7a1trW2U+PjJdPj4yXT1rWyhrW2Q+PjJdfDApKzE2MD4+Ml07aWYoa1ttPj4yXXwwKXtuPWtbbT4+Ml18MDtyPW87cmV0dXJuIG58MH1pZigoa1tmPj4yXXwwKTwwKWtbZj4+Ml09alsoa1tkPj4yXXwwKSsxNTA+PjFdO2pbKGtbZD4+Ml18MCkrMTUwPj4xXT1rW2Y+PjJdO2tqKGtbZD4+Ml18MCk7bj1rW20+PjJdfDA7cj1vO3JldHVybiBufDB9ZnVuY3Rpb24gZWooYSl7YT1hfDA7dmFyIGI9MCxjPTA7Yz1yO3I9cisxNnwwO2I9YztrW2I+PjJdPWE7cj1jO3JldHVybiBrWyhrW2I+PjJdfDApKzEyPj4yXXwwfWZ1bmN0aW9uIGZqKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wO2M9cjtyPXIrMTZ8MDtlPWMrNHwwO2Q9YztrW2U+PjJdPWE7a1tkPj4yXT1iO2I9Z2Nba1soa1trW2U+PjJdPj4yXXwwKSsyND4+Ml0mMjU1XShrW2U+PjJdfDAsa1tkPj4yXXwwKXwwO3I9YztyZXR1cm4gYnwwfWZ1bmN0aW9uIGdqKGEpe2E9YXwwO3ZhciBiPTAsYz0wO2I9cjtyPXIrMTZ8MDtjPWI7a1tjPj4yXT1hO2E9dGooa1tjPj4yXXwwKXwwO3I9YjtyZXR1cm4gYXwwfWZ1bmN0aW9uIGhqKGEpe2E9YXwwO3ZhciBiPTAsYz0wO2I9cjtyPXIrMTZ8MDtjPWI7a1tjPj4yXT1hO2E9KGtbYz4+Ml18MCkrMTA4fDA7a1thPj4yXT0oa1thPj4yXXwwKSsxO25qKGtbKGtbYz4+Ml18MCkrOTY+PjJdfDApO29qKGtbKGtbYz4+Ml18MCkrMjEyPj4yXXwwKTtyPWI7cmV0dXJufWZ1bmN0aW9uIGlqKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wO2c9cjtyPXIrMTZ8MDtjPWcrMTJ8MDtkPWcrOHwwO2U9Zys0fDA7Zj1nO2tbZD4+Ml09YTtrW2U+PjJdPWI7aWYoa1soa1tkPj4yXXwwKSsyND4+Ml18MCl7Yj1ZYltrWzEzMj4+Ml0mMjU1XShrW2U+PjJdfDAsKGtbKGtbZD4+Ml18MCkrMjg+PjJdfDApKzQwfDAsbFsoa1tkPj4yXXwwKSszMj4+MF18MCl8MDtrW2Y+PjJdPWI7aWYoIShrW2Y+PjJdfDApKXtrW2M+PjJdPTc7Yj1rW2M+PjJdfDA7cj1nO3JldHVybiBifDB9aD1rWzM0XXwwO2E9a1tmPj4yXXwwO2I9bWooa1tkPj4yXXwwKXwwOyRiW2gmMjU1XShhLGIpO2lmKGtbKGtbZD4+Ml18MCkrNDQ+PjJdfDApX2Jba1sxNjA+PjJdJjI1NV0oa1soa1tkPj4yXXwwKSs0ND4+Ml18MCk7a1soa1tkPj4yXXwwKSs0ND4+Ml09a1tmPj4yXTtrWyhrW2Q+PjJdfDApKzI0Pj4yXT1rW2U+PjJdfWtbYz4+Ml09MDtoPWtbYz4+Ml18MDtyPWc7cmV0dXJuIGh8MH1mdW5jdGlvbiBqaihhKXthPWF8MDt2YXIgYj0wLGM9MDtiPXI7cj1yKzE2fDA7Yz1iO2tbYz4+Ml09YTtsaihrW2M+PjJdfDApO3I9YjtyZXR1cm59ZnVuY3Rpb24ga2ooYSl7YT1hfDA7dmFyIGI9MDtiPXI7cj1yKzE2fDA7a1tiPj4yXT1hO3I9YjtyZXR1cm59ZnVuY3Rpb24gbGooYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wLGU9MDtlPXI7cj1yKzE2fDA7Yj1lKzh8MDtkPWUrNHwwO2M9ZTtrW2I+PjJdPWE7aWYoIShrW2I+PjJdfDApKXtyPWU7cmV0dXJufWlmKChrW2I+PjJdfDApPj4+MD49KGtbNDI2XXwwKT4+PjA/KGtbYj4+Ml18MCk+Pj4wPChrWzQyN118MCk+Pj4wOjApe2xnKDEsMSk7a1tkPj4yXT1rW2I+PjJdO2tba1tkPj4yXT4+Ml09a1s0MjldO2tbNDI5XT1rW2Q+PjJdO2tbNDMwXT0oa1s0MzBdfDApKzE7a1s0MzFdPShrWzQzMF18MCk8KGtbNDI1XXwwKSYxO3I9ZTtyZXR1cm59a1tjPj4yXT0wO2Q9a2coa1tiPj4yXXwwKXwwO2tbYz4+Ml09ZDtsZygyLGtbYz4+Ml18MCk7VWQoa1tiPj4yXXwwKTtyPWU7cmV0dXJufWZ1bmN0aW9uIG1qKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MDtkPXI7cj1yKzE2fDA7Yj1kKzR8MDtjPWQ7a1tjPj4yXT1hO2E9a1soa1tjPj4yXXwwKSsxNj4+Ml18MDtpZigoa1soa1tjPj4yXXwwKSsxNj4+Ml18MCk+PTApe2tbYj4+Ml09YTtjPWtbYj4+Ml18MDtyPWQ7cmV0dXJuIGN8MH1lbHNle2E9a1MoLTEwMjQsLTEsYXwwLCgoYXwwKTwwKTw8MzE+PjMxfDApfDA7Yz0oa1soa1tjPj4yXXwwKSsyND4+Ml18MCkrKGtbKGtbYz4+Ml18MCkrMjg+PjJdfDApfDA7Yz1pUyhhfDAsTHwwLGN8MCwoKGN8MCk8MCk8PDMxPj4zMXwwKXwwO2tbYj4+Ml09YztjPWtbYj4+Ml18MDtyPWQ7cmV0dXJuIGN8MH1yZXR1cm4gMH1mdW5jdGlvbiBuaihhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTA7Yz1yO3I9cisxNnwwO2Q9Yys0fDA7Yj1jO2tbZD4+Ml09YTtrW2I+PjJdPWtbZD4+Ml07d2hpbGUoMSl7aWYoIShrW2I+PjJdfDApKWJyZWFrO2tbKGtbYj4+Ml18MCkrMTY+PjJdPTE7a1tiPj4yXT1rWyhrW2I+PjJdfDApKzQ0Pj4yXX1yPWM7cmV0dXJufWZ1bmN0aW9uIG9qKGEpe2E9YXwwO3ZhciBiPTAsYz0wO2I9cjtyPXIrMTZ8MDtjPWI7a1tjPj4yXT1hO3BqKGtbYz4+Ml18MCwwKTtyPWI7cmV0dXJufWZ1bmN0aW9uIHBqKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wO2g9cjtyPXIrMzJ8MDtjPWgrMTZ8MDtkPWgrMTJ8MDtlPWgrOHwwO2Y9aCs0fDA7Zz1oO2tbYz4+Ml09YTtrW2Q+PjJdPWI7aWYoIShrWyhrW2M+PjJdfDApKzQ0Pj4yXXwwKSl7cj1oO3JldHVybn1rW2U+PjJdPWtba1tjPj4yXT4+Ml07d2hpbGUoMSl7aWYoIShrW2U+PjJdfDApKWJyZWFrO2tbZj4+Ml09a1soa1tlPj4yXXwwKSszMj4+Ml07aWYoKGtbKGtbZT4+Ml18MCkrMjA+PjJdfDApPj4+MD4oa1tkPj4yXXwwKT4+PjApcWooa1tlPj4yXXwwKTtrW2U+PjJdPWtbZj4+Ml19aWYoKChrW2Q+PjJdfDApPT0wPyhrWyhrW2M+PjJdfDApKzEyPj4yXXwwKSE9MDowKT8oYj1ZYltrWzE0ND4+Ml0mMjU1XShrWyhrW2M+PjJdfDApKzQ0Pj4yXXwwLDEsMCl8MCxrW2c+PjJdPWIsKGtbZz4+Ml18MCkhPTApOjApe2RTKGtba1tnPj4yXT4+Ml18MCwwLGtbKGtbYz4+Ml18MCkrMjQ+PjJdfDApfDA7a1tkPj4yXT0xfSRiW2tbMTU2Pj4yXSYyNTVdKGtbKGtbYz4+Ml18MCkrNDQ+PjJdfDAsKGtbZD4+Ml18MCkrMXwwKTtyPWg7cmV0dXJufWZ1bmN0aW9uIHFqKGEpe2E9YXwwO3ZhciBiPTAsYz0wO2M9cjtyPXIrMTZ8MDtiPWM7a1tiPj4yXT1hO2lmKCEobVsoa1tiPj4yXXwwKSsyND4+MV0mMikpe3I9YztyZXR1cm59cmooa1tiPj4yXXwwLDEpO2E9KGtbYj4+Ml18MCkrMjR8MDtqW2E+PjFdPW1bYT4+MV0mLTE1O2E9KGtbYj4+Ml18MCkrMjR8MDtqW2E+PjFdPW1bYT4+MV18MTtpZihqWyhrW2I+PjJdfDApKzI2Pj4xXXwwKXtyPWM7cmV0dXJufXNqKGtbYj4+Ml18MCk7cj1jO3JldHVybn1mdW5jdGlvbiByaihhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTA7Zj1yO3I9cisxNnwwO2Q9Zis0fDA7Yz1mKzh8MDtlPWY7a1tkPj4yXT1hO2lbYz4+MF09YjtrW2U+PjJdPWtbKGtbZD4+Ml18MCkrMjg+PjJdO2lmKGxbYz4+MF0mMSl7aWYoKGtbKGtbZT4+Ml18MCkrOD4+Ml18MCk9PShrW2Q+PjJdfDApKWtbKGtbZT4+Ml18MCkrOD4+Ml09a1soa1tkPj4yXXwwKSszNj4+Ml07Yj1rWyhrW2Q+PjJdfDApKzM2Pj4yXXwwO2lmKGtbKGtbZD4+Ml18MCkrMzI+PjJdfDApa1soa1soa1tkPj4yXXwwKSszMj4+Ml18MCkrMzY+PjJdPWI7ZWxzZSBrWyhrW2U+PjJdfDApKzQ+PjJdPWI7Yj1rWyhrW2Q+PjJdfDApKzMyPj4yXXwwO2lmKCEoa1soa1tkPj4yXXwwKSszNj4+Ml18MCkpe2tba1tlPj4yXT4+Ml09YjtpZighKGtba1tlPj4yXT4+Ml18MCkpaVsoa1tlPj4yXXwwKSszMz4+MF09Mn1lbHNlIGtbKGtbKGtbZD4+Ml18MCkrMzY+PjJdfDApKzMyPj4yXT1iO2tbKGtbZD4+Ml18MCkrMzI+PjJdPTA7a1soa1tkPj4yXXwwKSszNj4+Ml09MH1pZighKGxbYz4+MF0mMikpe3I9ZjtyZXR1cm59a1soa1tkPj4yXXwwKSszMj4+Ml09a1trW2U+PjJdPj4yXTtiPWtbZD4+Ml18MDtpZighKGtbKGtbZD4+Ml18MCkrMzI+PjJdfDApKXtrWyhrW2U+PjJdfDApKzQ+PjJdPWI7aWYoaVsoa1tlPj4yXXwwKSszMj4+MF18MClpWyhrW2U+PjJdfDApKzMzPj4wXT0xfWVsc2Uga1soa1soa1tkPj4yXXwwKSszMj4+Ml18MCkrMzY+PjJdPWI7a1trW2U+PjJdPj4yXT1rW2Q+PjJdO2lmKGtbKGtbZT4+Ml18MCkrOD4+Ml18MCl7cj1mO3JldHVybn1pZihtWyhrW2Q+PjJdfDApKzI0Pj4xXSY4KXtyPWY7cmV0dXJufWtbKGtbZT4+Ml18MCkrOD4+Ml09a1tkPj4yXTtyPWY7cmV0dXJufWZ1bmN0aW9uIHNqKGEpe2E9YXwwO3ZhciBiPTAsYz0wO2M9cjtyPXIrMTZ8MDtiPWM7a1tiPj4yXT1hO2lmKCEoaVsoa1soa1tiPj4yXXwwKSsyOD4+Ml18MCkrMzI+PjBdfDApKXtyPWM7cmV0dXJufWNjW2tbMTQ4Pj4yXSYyNTVdKGtbKGtbKGtbYj4+Ml18MCkrMjg+PjJdfDApKzQ0Pj4yXXwwLGtba1tiPj4yXT4+Ml18MCwwKTtyPWM7cmV0dXJufWZ1bmN0aW9uIHRqKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MCxlPTA7ZT1yO3I9cisxNnwwO2I9ZSs4fDA7Yz1lKzR8MDtkPWU7a1tiPj4yXT1hO2tbYz4+Ml09MDtpZigoa1tiPj4yXXwwKTw9KGtbNDIzXXwwKT8oa1tjPj4yXT1rWzQyOV0sKGtbYz4+Ml18MCkhPTApOjApe2tbNDI5XT1rW2tbNDI5XT4+Ml07a1s0MzBdPShrWzQzMF18MCkrLTE7a1s0MzFdPShrWzQzMF18MCk8KGtbNDI1XXwwKSYxOyRpKDcsa1tiPj4yXXwwKTthaigxLDEpfWlmKGtbYz4+Ml18MCl7ZD1rW2M+PjJdfDA7cj1lO3JldHVybiBkfDB9YT1rW2I+PjJdfDA7YT1qZyhhLCgoYXwwKTwwKTw8MzE+PjMxKXwwO2tbYz4+Ml09YTtpZighKGtbYz4+Ml18MCkpe2Q9a1tjPj4yXXwwO3I9ZTtyZXR1cm4gZHwwfWE9a2coa1tjPj4yXXwwKXwwO2tbZD4+Ml09YTskaSg3LGtbYj4+Ml18MCk7YWooMixrW2Q+PjJdfDApO2Q9a1tjPj4yXXwwO3I9ZTtyZXR1cm4gZHwwfWZ1bmN0aW9uIHVqKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MDtkPXI7cj1yKzE2fDA7Yj1kKzR8MDtjPWQ7a1tiPj4yXT1hO2E9dWcoNTEyLDApfDA7a1tjPj4yXT1hO2lmKCEoa1tjPj4yXXwwKSl7Yz1rW2M+PjJdfDA7cj1kO3JldHVybiBjfDB9a1trW2M+PjJdPj4yXT1rW2I+PjJdO2M9a1tjPj4yXXwwO3I9ZDtyZXR1cm4gY3wwfWZ1bmN0aW9uIHZqKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxtPTAsbj0wLG89MDtvPXI7cj1yKzMyfDA7ZD1vKzI4fDA7ZT1vKzI0fDA7Zj1vKzIwfDA7aD1vKzE2fDA7Yz1vKzEyfDA7aj1vKzh8MDttPW8rNHwwO2c9bztrW2U+PjJdPWE7a1tmPj4yXT1iO2lmKCEoa1tlPj4yXXwwKSl7a1tkPj4yXT0wO249a1tkPj4yXXwwO3I9bztyZXR1cm4gbnwwfWtbZj4+Ml09KGtbZj4+Ml18MCkrLTE7d2hpbGUoMSl7aWYoKGtba1tlPj4yXT4+Ml18MCk+Pj4wPD00ZTMpYnJlYWs7aWYoIShrWyhrW2U+PjJdfDApKzg+PjJdfDApKWJyZWFrO2tbYz4+Ml09KChrW2Y+PjJdfDApPj4+MCkvKChrWyhrW2U+PjJdfDApKzg+PjJdfDApPj4+MCl8MDtrW2Y+PjJdPSgoa1tmPj4yXXwwKT4+PjApJSgoa1soa1tlPj4yXXwwKSs4Pj4yXXwwKT4+PjApfDA7aWYoKGtbKGtbZT4+Ml18MCkrMTIrKGtbYz4+Ml08PDIpPj4yXXwwKT09MD8oYT11aihrWyhrW2U+PjJdfDApKzg+PjJdfDApfDAsa1soa1tlPj4yXXwwKSsxMisoa1tjPj4yXTw8Mik+PjJdPWEsKGtbKGtbZT4+Ml18MCkrMTIrKGtbYz4+Ml08PDIpPj4yXXwwKT09MCk6MCl7bj04O2JyZWFrfWtbZT4+Ml09a1soa1tlPj4yXXwwKSsxMisoa1tjPj4yXTw8Mik+PjJdfWlmKChufDApPT04KXtrW2Q+PjJdPTc7bj1rW2Q+PjJdfDA7cj1vO3JldHVybiBufDB9Yz1rW2Y+PjJdfDA7aWYoKGtba1tlPj4yXT4+Ml18MCk+Pj4wPD00ZTMpe249KGtbZT4+Ml18MCkrMTIrKCgoa1tmPj4yXXwwKT4+PjApLzh8MCl8MDtpW24+PjBdPWxbbj4+MF18MHwxPDwoYyY3KTtrW2Q+PjJdPTA7bj1rW2Q+PjJdfDA7cj1vO3JldHVybiBufDB9a1tmPj4yXT1jKzE7a1toPj4yXT0oYz4+PjApJTEyNXwwO2E6ZG8gaWYoIShrWyhrW2U+PjJdfDApKzEyKyhrW2g+PjJdPDwyKT4+Ml18MCkpe2lmKChrWyhrW2U+PjJdfDApKzQ+PjJdfDApPj4+MD49MTI0KW49MTd9ZWxzZXt3aGlsZSgxKXtpZigoa1soa1tlPj4yXXwwKSsxMisoa1toPj4yXTw8Mik+PjJdfDApPT0oa1tmPj4yXXwwKSlicmVhaztuPShrW2g+PjJdfDApKzF8MDtrW2g+PjJdPW47a1toPj4yXT0oa1toPj4yXXwwKT4+PjA+PTEyNT8wOm47aWYoIShrWyhrW2U+PjJdfDApKzEyKyhrW2g+PjJdPDwyKT4+Ml18MCkpe249MTc7YnJlYWsgYX19a1tkPj4yXT0wO249a1tkPj4yXXwwO3I9bztyZXR1cm4gbnwwfXdoaWxlKDApO2lmKChufDApPT0xNz8oa1soa1tlPj4yXXwwKSs0Pj4yXXwwKT4+PjA+PTYyOjApe249TWgoMCw1MDAsMCl8MDtrW2c+PjJdPW47aWYoIShrW2c+PjJdfDApKXtrW2Q+PjJdPTc7bj1rW2Q+PjJdfDA7cj1vO3JldHVybiBufDB9YlMoa1tnPj4yXXwwLChrW2U+PjJdfDApKzEyfDAsNTAwKXwwO2RTKChrW2U+PjJdfDApKzEyfDAsMCw1MDApfDA7a1soa1tlPj4yXXwwKSs4Pj4yXT0oKChrW2tbZT4+Ml0+PjJdfDApKzEyNS0xfDApPj4+MCkvMTI1fDA7bj12aihrW2U+PjJdfDAsa1tmPj4yXXwwKXwwO2tbbT4+Ml09bjtrW2o+PjJdPTA7d2hpbGUoMSl7aWYoKGtbaj4+Ml18MCk+Pj4wPj0xMjUpYnJlYWs7aWYoa1soa1tnPj4yXXwwKSsoa1tqPj4yXTw8Mik+PjJdfDApe249dmooa1tlPj4yXXwwLGtbKGtbZz4+Ml18MCkrKGtbaj4+Ml08PDIpPj4yXXwwKXwwO2tbbT4+Ml09a1ttPj4yXXxufWtbaj4+Ml09KGtbaj4+Ml18MCkrMX1iZygwLGtbZz4+Ml18MCk7a1tkPj4yXT1rW20+PjJdO249a1tkPj4yXXwwO3I9bztyZXR1cm4gbnwwfW49KGtbZT4+Ml18MCkrNHwwO2tbbj4+Ml09KGtbbj4+Ml18MCkrMTtrWyhrW2U+PjJdfDApKzEyKyhrW2g+PjJdPDwyKT4+Ml09a1tmPj4yXTtrW2Q+PjJdPTA7bj1rW2Q+PjJdfDA7cj1vO3JldHVybiBufDB9ZnVuY3Rpb24gd2ooYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxtPTAsbj0wLG89MDtvPXI7cj1yKzMyfDA7ZD1vKzI0fDA7ZT1vKzIwfDA7Zj1vKzE2fDA7aD1vKzEyfDA7bT1vKzh8MDtnPW8rNHwwO2o9bztrW2Q+PjJdPWE7a1tlPj4yXT1iO2tbZj4+Ml09YztpZighKGtbZD4+Ml18MCkpe3I9bztyZXR1cm59a1tlPj4yXT0oa1tlPj4yXXwwKSstMTt3aGlsZSgxKXtpZighKGtbKGtbZD4+Ml18MCkrOD4+Ml18MCkpYnJlYWs7a1toPj4yXT0oKGtbZT4+Ml18MCk+Pj4wKS8oKGtbKGtbZD4+Ml18MCkrOD4+Ml18MCk+Pj4wKXwwO2tbZT4+Ml09KChrW2U+PjJdfDApPj4+MCklKChrWyhrW2Q+PjJdfDApKzg+PjJdfDApPj4+MCl8MDtrW2Q+PjJdPWtbKGtbZD4+Ml18MCkrMTIrKGtbaD4+Ml08PDIpPj4yXTtpZighKGtbZD4+Ml18MCkpe249MTY7YnJlYWt9fWlmKChufDApPT0xNil7cj1vO3JldHVybn1pZigoa1trW2Q+PjJdPj4yXXwwKT4+PjA8PTRlMyl7bj0oa1tkPj4yXXwwKSsxMisoKChrW2U+PjJdfDApPj4+MCkvOHwwKXwwO2lbbj4+MF09KGxbbj4+MF18MCkmfigxPDwoa1tlPj4yXSY3KSk7cj1vO3JldHVybn1rW2c+PjJdPWtbZj4+Ml07YlMoa1tnPj4yXXwwLChrW2Q+PjJdfDApKzEyfDAsNTAwKXwwO2RTKChrW2Q+PjJdfDApKzEyfDAsMCw1MDApfDA7a1soa1tkPj4yXXwwKSs0Pj4yXT0wO2tbbT4+Ml09MDt3aGlsZSgxKXtpZigoa1ttPj4yXXwwKT4+PjA+PTEyNSlicmVhaztpZigoa1soa1tnPj4yXXwwKSsoa1ttPj4yXTw8Mik+PjJdfDApIT0wPyhrWyhrW2c+PjJdfDApKyhrW20+PjJdPDwyKT4+Ml18MCkhPSgoa1tlPj4yXXwwKSsxfDApOjApe2tbaj4+Ml09KCgoa1soa1tnPj4yXXwwKSsoa1ttPj4yXTw8Mik+PjJdfDApLTF8MCk+Pj4wKSUxMjV8MDtuPShrW2Q+PjJdfDApKzR8MDtrW24+PjJdPShrW24+PjJdfDApKzE7d2hpbGUoMSl7aWYoIShrWyhrW2Q+PjJdfDApKzEyKyhrW2o+PjJdPDwyKT4+Ml18MCkpYnJlYWs7bj0oa1tqPj4yXXwwKSsxfDA7a1tqPj4yXT1uO2tbaj4+Ml09KGtbaj4+Ml18MCk+Pj4wPj0xMjU/MDpufWtbKGtbZD4+Ml18MCkrMTIrKGtbaj4+Ml08PDIpPj4yXT1rWyhrW2c+PjJdfDApKyhrW20+PjJdPDwyKT4+Ml19a1ttPj4yXT0oa1ttPj4yXXwwKSsxfXI9bztyZXR1cm59ZnVuY3Rpb24geGooYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTA7ZT1yO3I9cisxNnwwO2M9ZSs0fDA7ZD1lO2tbYz4+Ml09YTtrW2Q+PjJdPWI7aWYoIShrW2M+PjJdfDApKXthPTA7YT1hJjE7cj1lO3JldHVybiBhfDB9YT0oQWooa1tjPj4yXXwwLGtbZD4+Ml18MCl8MCkhPTA7YT1hJjE7cj1lO3JldHVybiBhfDB9ZnVuY3Rpb24geWooYSl7YT1hfDA7dmFyIGI9MCxjPTA7Yz1yO3I9cisxNnwwO2I9YztrW2I+PjJdPWE7cj1jO3JldHVybiBrW2tbYj4+Ml0+PjJdfDB9ZnVuY3Rpb24gemooYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wO2Q9cjtyPXIrMTZ8MDtiPWQrNHwwO2M9ZDtrW2I+PjJdPWE7aWYoIShrW2I+PjJdfDApKXtyPWQ7cmV0dXJufWE6ZG8gaWYoa1soa1tiPj4yXXwwKSs4Pj4yXXwwKXtrW2M+PjJdPTA7d2hpbGUoMSl7aWYoKGtbYz4+Ml18MCk+Pj4wPj0xMjUpYnJlYWsgYTt6aihrWyhrW2I+PjJdfDApKzEyKyhrW2M+PjJdPDwyKT4+Ml18MCk7a1tjPj4yXT0oa1tjPj4yXXwwKSsxfX13aGlsZSgwKTtVZChrW2I+PjJdfDApO3I9ZDtyZXR1cm59ZnVuY3Rpb24gQWooYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTAsaT0wO2k9cjtyPXIrMzJ8MDtlPWkrMTZ8MDtmPWkrMTJ8MDtnPWkrOHwwO2M9aSs0fDA7aD1pO2tbZj4+Ml09YTtrW2c+PjJdPWI7a1tnPj4yXT0oa1tnPj4yXXwwKSstMTtpZigoa1tnPj4yXXwwKT4+PjA+PShrW2tbZj4+Ml0+PjJdfDApPj4+MCl7a1tlPj4yXT0wO2g9a1tlPj4yXXwwO3I9aTtyZXR1cm4gaHwwfXdoaWxlKDEpe2lmKCEoa1soa1tmPj4yXXwwKSs4Pj4yXXwwKSlicmVhaztrW2M+PjJdPSgoa1tnPj4yXXwwKT4+PjApLygoa1soa1tmPj4yXXwwKSs4Pj4yXXwwKT4+PjApfDA7a1tnPj4yXT0oKGtbZz4+Ml18MCk+Pj4wKSUoKGtbKGtbZj4+Ml18MCkrOD4+Ml18MCk+Pj4wKXwwO2tbZj4+Ml09a1soa1tmPj4yXXwwKSsxMisoa1tjPj4yXTw8Mik+PjJdO2lmKCEoa1tmPj4yXXwwKSl7ZD01O2JyZWFrfX1pZigoZHwwKT09NSl7a1tlPj4yXT0wO2g9a1tlPj4yXXwwO3I9aTtyZXR1cm4gaHwwfWM9a1tnPj4yXXwwO2lmKChrW2tbZj4+Ml0+PjJdfDApPj4+MDw9NGUzKXtrW2U+PjJdPSgobFsoa1tmPj4yXXwwKSsxMisoKGM+Pj4wKS84fDApPj4wXXwwKSYxPDwoa1tnPj4yXSY3KXwwKSE9MCYxO2g9a1tlPj4yXXwwO3I9aTtyZXR1cm4gaHwwfWtbZz4+Ml09YysxO2tbaD4+Ml09KGM+Pj4wKSUxMjV8MDt3aGlsZSgxKXtpZighKGtbKGtbZj4+Ml18MCkrMTIrKGtbaD4+Ml08PDIpPj4yXXwwKSl7ZD0xMzticmVha31pZigoa1soa1tmPj4yXXwwKSsxMisoa1toPj4yXTw8Mik+PjJdfDApPT0oa1tnPj4yXXwwKSl7ZD0xMTticmVha31rW2g+PjJdPSgoKGtbaD4+Ml18MCkrMXwwKT4+PjApJTEyNXwwfWlmKChkfDApPT0xMSl7a1tlPj4yXT0xO2g9a1tlPj4yXXwwO3I9aTtyZXR1cm4gaHwwfWVsc2UgaWYoKGR8MCk9PTEzKXtrW2U+PjJdPTA7aD1rW2U+PjJdfDA7cj1pO3JldHVybiBofDB9cmV0dXJuIDB9ZnVuY3Rpb24gQmooYSl7YT1hfDA7dmFyIGI9MCxjPTA7Yz1yO3I9cisxNnwwO2I9YztrW2I+PjJdPWE7cj1jO3JldHVybiBrWyhrW2I+PjJdfDApKzg+PjJdfDB9ZnVuY3Rpb24gQ2ooYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wO2Q9cjtyPXIrMTZ8MDtmPWQrMTJ8MDtlPWQrOHwwO2M9ZCs0fDA7a1tmPj4yXT1hO2tbZT4+Ml09YjtiPURqKGtbZj4+Ml18MCxrW2U+PjJdfDAsZCl8MDtrW2M+PjJdPWI7aWYoIShrW2M+PjJdfDApKXtmPTA7cj1kO3JldHVybiBmfDB9Zj1rWyhrW2M+PjJdfDApKzg+PjJdfDA7cj1kO3JldHVybiBmfDB9ZnVuY3Rpb24gRGooYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGk9MCxqPTAsbD0wLG09MDttPXI7cj1yKzMyfDA7bD1tKzI4fDA7ZD1tKzI0fDA7aD1tKzIwfDA7ZT1tKzE2fDA7aj1tKzEyfDA7aT1tKzh8MDtmPW0rNHwwO2c9bTtrW2Q+PjJdPWE7a1toPj4yXT1iO2tbZT4+Ml09YztpZihrWyhrW2Q+PjJdfDApKzEyPj4yXXwwKXtiPUVqKGtbaD4+Ml18MCl8MDtrW2Y+PjJdPShiPj4+MCklKChrW2tbZD4+Ml0+PjJdfDApPj4+MCl8MDtrW2c+PjJdPShrWyhrW2Q+PjJdfDApKzEyPj4yXXwwKSsoa1tmPj4yXTw8Myk7a1tqPj4yXT1rWyhrW2c+PjJdfDApKzQ+PjJdO2tbaT4+Ml09a1trW2c+PjJdPj4yXX1lbHNle2tbZj4+Ml09MDtrW2o+PjJdPWtbKGtbZD4+Ml18MCkrOD4+Ml07a1tpPj4yXT1rWyhrW2Q+PjJdfDApKzQ+PjJdfWtba1tlPj4yXT4+Ml09a1tmPj4yXTt3aGlsZSgxKXtiPWtbaT4+Ml18MDtrW2k+PjJdPWIrLTE7aWYoIWIpe2Q9OTticmVha31iPShzZyhrWyhrW2o+PjJdfDApKzEyPj4yXXwwLGtbaD4+Ml18MCl8MCk9PTA7ZT1rW2o+PjJdfDA7aWYoYil7ZD03O2JyZWFrfWtbaj4+Ml09a1tlPj4yXX1pZigoZHwwKT09Nyl7a1tsPj4yXT1lO2w9a1tsPj4yXXwwO3I9bTtyZXR1cm4gbHwwfWVsc2UgaWYoKGR8MCk9PTkpe2tbbD4+Ml09MDtsPWtbbD4+Ml18MDtyPW07cmV0dXJuIGx8MH1yZXR1cm4gMH1mdW5jdGlvbiBFaihhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTAsZT0wO2U9cjtyPXIrMTZ8MDtiPWUrNHwwO2Q9ZTtjPWUrOHwwO2tbYj4+Ml09YTtrW2Q+PjJdPTA7d2hpbGUoMSl7YT1rW2I+PjJdfDA7a1tiPj4yXT1hKzE7YT1pW2E+PjBdfDA7aVtjPj4wXT1hO2lmKCEoYSYyNTUpKWJyZWFrO2tbZD4+Ml09KGtbZD4+Ml18MCkrKGxbMTc2MTMrKGxbYz4+MF18MCk+PjBdfDApO2E9aGEoa1tkPj4yXXwwLC0xNjQwNTMxNTM1KXwwO2tbZD4+Ml09YX1yPWU7cmV0dXJuIGtbZD4+Ml18MH1mdW5jdGlvbiBGaihhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsbj0wLG89MCxwPTAscT0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MDtBPXI7cj1yKzEyOHwwO3c9QTtmPUErMTA4fDA7Zz1BKzEwNHwwO2g9QSsxMDB8MDtuPUErOTZ8MDt1PUErOTJ8MDtkPUErODh8MDt2PUErODR8MDt0PUErODB8MDtCPUErNjR8MDtxPUErNDB8MDtwPUErMjR8MDt5PUErMjB8MDtzPUErMTZ8MDtvPUErMTEyfDA7ej1BKzEyfDA7eD1BKzh8MDtrW2c+PjJdPWE7a1toPj4yXT1iO2tbbj4+Ml09YztrW3M+PjJdPTA7Yz0oa1toPj4yXXwwKT09MT8xOTkwNToxOTkyNDtrW3k+PjJdPWM7a1tCPj4yXT1jO2tbQis0Pj4yXT0xOTkzODtrW0IrOD4+Ml09MTk5NDA7a1tCKzEyPj4yXT0wO2tbcD4+Ml09a1tnPj4yXTtrW3ArOD4+Ml09a1toPj4yXTtrW3ArMTI+PjJdPTA7a1twKzQ+PjJdPWtbbj4+Ml07TGoocCwzLEIsMCl8MDtpZighKGtbcCsxMj4+Ml18MCkpe2tbdD4+Ml09KGtbKGtbZz4+Ml18MCkrMTY+PjJdfDApKyhrW2g+PjJdPDw0KTtpZighKGtbKGtbdD4+Ml18MCkrND4+Ml18MCkpe2lmKChrW2g+PjJdfDApPT0xKXtCPShrWyhrWyhrW2c+PjJdfDApKzE2Pj4yXXwwKSsxNisxMj4+Ml18MCkrNzh8MDtqW0I+PjFdPW1bQj4+MV18MX1rW2Y+PjJdPTA7Qj1rW2Y+PjJdfDA7cj1BO3JldHVybiBCfDB9d2coa1soa1t0Pj4yXXwwKSs0Pj4yXXwwKTtkbyBpZighKHlnKGtbKGtbdD4+Ml18MCkrND4+Ml18MCl8MCkpe0I9emcoa1soa1t0Pj4yXXwwKSs0Pj4yXXwwLDApfDA7a1t1Pj4yXT1CO2lmKGtbdT4+Ml18MCl7ej1rW24+PjJdfDA7Qj1rW2c+PjJdfDA7TWooeixCLHZoKGtbdT4+Ml18MCl8MCk7YnJlYWt9ZWxzZXtrW3M+PjJdPTE7ZT0xMTticmVha319ZWxzZSBlPTExO3doaWxlKDApO2E6ZG8gaWYoKGV8MCk9PTExKXtrW2Q+PjJdPTA7d2hpbGUoMSl7aWYoKGtbZD4+Ml18MCk+PTUpYnJlYWs7Qmcoa1soa1t0Pj4yXXwwKSs0Pj4yXXwwLChrW2Q+PjJdfDApKzF8MCxxKyhrW2Q+PjJdPDwyKXwwKTtrW2Q+PjJdPShrW2Q+PjJdfDApKzF9a1trWyhrW3Q+PjJdfDApKzEyPj4yXT4+Ml09a1txPj4yXTthPWtbaD4+Ml18MDtkbyBpZihrW3ErMTY+PjJdfDApe2Q9a1txKzE2Pj4yXXwwO2lmKCFhKXtCPWQmMztpW28+PjBdPUI7aVtvPj4wXT0obFtvPj4wXXwwKT09MD8xOkI7aVsoa1tnPj4yXXwwKSs2Nj4+MF09aVtvPj4wXXwwO2JyZWFrfWlmKChkfDApIT0obFsoa1tnPj4yXXwwKSs2Nj4+MF18MCkpe01qKGtbbj4+Ml18MCxrW2c+PjJdfDAsMjAwMTYpO2tbdT4+Ml09MTticmVhayBhfX1lbHNle0I9KGtbKGtbKGtbZz4+Ml18MCkrMTY+PjJdfDApKyhhPDw0KSsxMj4+Ml18MCkrNzh8MDtqW0I+PjFdPW1bQj4+MV18NH13aGlsZSgwKTtpWyhrWyhrW3Q+PjJdfDApKzEyPj4yXXwwKSs3Nz4+MF09aVsoa1tnPj4yXXwwKSs2Nj4+MF18MDtpZighKGtbKGtbKGtbdD4+Ml18MCkrMTI+PjJdfDApKzgwPj4yXXwwKSl7Qj1OaihrW3ErOD4+Ml18MCl8MDtrW3Y+PjJdPUI7a1t2Pj4yXT0oa1t2Pj4yXXwwKT09MD8tMmUzOkI7a1soa1soa1t0Pj4yXXwwKSsxMj4+Ml18MCkrODA+PjJdPWtbdj4+Ml07T2ooa1soa1t0Pj4yXXwwKSs0Pj4yXXwwLGtbKGtbKGtbdD4+Ml18MCkrMTI+PjJdfDApKzgwPj4yXXwwKXwwfWlbKGtbKGtbdD4+Ml18MCkrMTI+PjJdfDApKzc2Pj4wXT1rW3ErND4+Ml07aWYoIShsWyhrWyhrW3Q+PjJdfDApKzEyPj4yXXwwKSs3Nj4+MF18MCkpaVsoa1soa1t0Pj4yXXwwKSsxMj4+Ml18MCkrNzY+PjBdPTE7aWYoKGxbKGtbKGtbdD4+Ml18MCkrMTI+PjJdfDApKzc2Pj4wXXwwKT40KXtNaihrW24+PjJdfDAsa1tnPj4yXXwwLDIwMDg0KTtrW3U+PjJdPTE7YnJlYWt9aWYoKGtbaD4+Ml18MCk9PTA/KGtbcSs0Pj4yXXwwKT49NDowKXtCPShrW2c+PjJdfDApKzI0fDA7a1tCPj4yXT1rW0I+PjJdJi0zMjc2OX1CPWtbZz4+Ml18MDt5PWtbeT4+Ml18MDtrW3c+PjJdPWtbKGtbKGtbZz4+Ml18MCkrMTY+PjJdfDApKyhrW2g+PjJdPDw0KT4+Ml07a1t3KzQ+PjJdPXk7Qj1RaChCLDIwMTA4LHcpfDA7a1t6Pj4yXT1CO2tbeD4+Ml09a1soa1tnPj4yXXwwKSsyOTY+PjJdO2tbKGtbZz4+Ml18MCkrMjk2Pj4yXT0wO0I9a2Yoa1tnPj4yXXwwLGtbej4+Ml18MCwxNDAscCwwKXwwO2tbdT4+Ml09QjtrWyhrW2c+PjJdfDApKzI5Nj4+Ml09a1t4Pj4yXTtpZighKGtbdT4+Ml18MCkpa1t1Pj4yXT1rW3ArMTI+PjJdO2JnKGtbZz4+Ml18MCxrW3o+PjJdfDApO2lmKCEoa1t1Pj4yXXwwKSlQaihrW2c+PjJdfDAsa1toPj4yXXwwKXwwO2lmKGlbKGtbZz4+Ml18MCkrNjk+PjBdfDApe2tbdT4+Ml09NztNZyhrW2c+PjJdfDApfWlmKChrW3U+PjJdfDApIT0wPyhrWyhrW2c+PjJdfDApKzI0Pj4yXSY2NTUzNnwwKT09MDowKWJyZWFrO0I9KGtbKGtbKGtbZz4+Ml18MCkrMTY+PjJdfDApKyhrW2g+PjJdPDw0KSsxMj4+Ml18MCkrNzh8MDtqW0I+PjFdPW1bQj4+MV18MTtrW3U+PjJdPTB9d2hpbGUoMCk7aWYoa1tzPj4yXXwwKVFqKGtbKGtbdD4+Ml18MCkrND4+Ml18MCl8MH1lbHNlIGtbdT4+Ml09a1twKzEyPj4yXTtpZigoa1t1Pj4yXXwwKT09N3woa1t1Pj4yXXwwKT09MzA4Mil3aChrW2c+PjJdfDApO2tbZj4+Ml09a1t1Pj4yXTtCPWtbZj4+Ml18MDtyPUE7cmV0dXJuIEJ8MH1mdW5jdGlvbiBHaihhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTA7ZT1yO3I9cisxNnwwO2M9ZSs4fDA7Zj1lKzR8MDtkPWU7a1tjPj4yXT1hO2tbZj4+Ml09YjtrW2Q+PjJdPShrWyhrW2M+PjJdfDApKzE2Pj4yXXwwKSsoa1tmPj4yXTw8NCk7SWooa1soa1tkPj4yXXwwKSsxMj4+Ml18MCk7aWYoKGtbZj4+Ml18MCk9PTEpe3I9ZTtyZXR1cm59a1tkPj4yXT0oa1soa1tjPj4yXXwwKSsxNj4+Ml18MCkrMTY7SWooa1soa1tkPj4yXXwwKSsxMj4+Ml18MCk7cj1lO3JldHVybn1mdW5jdGlvbiBIaihhKXthPWF8MDt2YXIgYj0wLGM9MDtiPXI7cj1yKzE2fDA7Yz1iO2tbYz4+Ml09YTthPShrW2M+PjJdfDApKzI0fDA7a1thPj4yXT1rW2E+PjJdJi0zO3I9YjtyZXR1cm59ZnVuY3Rpb24gSWooYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wLGU9MCxmPTAsZz0wLGg9MDtnPXI7cj1yKzY0fDA7aD1nKzQ4fDA7ZT1nKzMyfDA7Zj1nKzE2fDA7Yj1nKzh8MDtjPWcrNHwwO2Q9ZztrW2g+PjJdPWE7a1tjPj4yXT1rW2g+PjJdO2E9KGtbYz4+Ml18MCkrOHwwO2tbZT4+Ml09a1thPj4yXTtrW2UrND4+Ml09a1thKzQ+PjJdO2tbZSs4Pj4yXT1rW2ErOD4+Ml07a1tlKzEyPj4yXT1rW2ErMTI+PjJdO2E9KGtbYz4+Ml18MCkrNDB8MDtrW2Y+PjJdPWtbYT4+Ml07a1tmKzQ+PjJdPWtbYSs0Pj4yXTtrW2YrOD4+Ml09a1thKzg+PjJdO2tbZisxMj4+Ml09a1thKzEyPj4yXTtKaigoa1tjPj4yXXwwKSs0MHwwKTtLaigoa1tjPj4yXXwwKSsyNHwwKTtrW2I+PjJdPWtbZis4Pj4yXTt3aGlsZSgxKXtpZighKGtbYj4+Ml18MCkpYnJlYWs7X2YoMCxrWyhrW2I+PjJdfDApKzg+PjJdfDApO2tbYj4+Ml09a1trW2I+PjJdPj4yXX1LaihmKTtKaigoa1tjPj4yXXwwKSs4fDApO2tbYj4+Ml09a1tlKzg+PjJdO3doaWxlKDEpe2lmKCEoa1tiPj4yXXwwKSlicmVhaztrW2Q+PjJdPWtbKGtbYj4+Ml18MCkrOD4+Ml07JGYoMCxrW2Q+PjJdfDApO2tbYj4+Ml09a1trW2I+PjJdPj4yXX1LaihlKTtLaigoa1tjPj4yXXwwKSs1NnwwKTtrWyhrW2M+PjJdfDApKzcyPj4yXT0wO2lmKCEoKG1bKGtbYz4+Ml18MCkrNzg+PjFdfDApJjEpKXtyPWc7cmV0dXJufWg9KGtbYz4+Ml18MCkrNHwwO2tbaD4+Ml09KGtbaD4+Ml18MCkrMTtoPShrW2M+PjJdfDApKzc4fDA7altoPj4xXT0obVtoPj4xXXwwKSYtMjtyPWc7cmV0dXJufWZ1bmN0aW9uIEpqKGEpe2E9YXwwO3ZhciBiPTAsYz0wO2I9cjtyPXIrMTZ8MDtjPWI7a1tjPj4yXT1hO2tbKGtbYz4+Ml18MCkrOD4+Ml09MDtrWyhrW2M+PjJdfDApKzQ+PjJdPTA7a1trW2M+PjJdPj4yXT0wO2tbKGtbYz4+Ml18MCkrMTI+PjJdPTA7cj1iO3JldHVybn1mdW5jdGlvbiBLaihhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTAsZT0wO2U9cjtyPXIrMTZ8MDtiPWUrOHwwO2M9ZSs0fDA7ZD1lO2tbYj4+Ml09YTtrW2M+PjJdPWtbKGtbYj4+Ml18MCkrOD4+Ml07a1soa1tiPj4yXXwwKSs4Pj4yXT0wO1VkKGtbKGtbYj4+Ml18MCkrMTI+PjJdfDApO2tbKGtbYj4+Ml18MCkrMTI+PjJdPTA7a1trW2I+PjJdPj4yXT0wO3doaWxlKDEpe2lmKCEoa1tjPj4yXXwwKSlicmVhaztrW2Q+PjJdPWtba1tjPj4yXT4+Ml07VWQoa1tjPj4yXXwwKTtrW2M+PjJdPWtbZD4+Ml19a1soa1tiPj4yXXwwKSs0Pj4yXT0wO3I9ZTtyZXR1cm59ZnVuY3Rpb24gTGooYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxsPTAsbj0wLG89MCxwPTAscT0wLHM9MCx0PTA7cz1yO3I9cis0OHwwO2U9cys0MHwwO3Q9cyszNnwwO2Y9cysyOHwwO2w9cysyMHwwO2c9cysxNnwwO2g9cysxMnwwO3A9cys4fDA7cT1zKzQ0fDA7bz1zKzR8MDtuPXM7a1t0Pj4yXT1hO2tbcyszMj4+Ml09YjtrW2Y+PjJdPWM7a1tzKzI0Pj4yXT1kO2tbbD4+Ml09a1t0Pj4yXTtrW2c+PjJdPWtba1tsPj4yXT4+Ml07a1toPj4yXT1rWyhrW2w+PjJdfDApKzg+PjJdO2E9KGtbKGtbKGtbZz4+Ml18MCkrMTY+PjJdfDApKyhrW2g+PjJdPDw0KSsxMj4+Ml18MCkrNzh8MDtqW2E+PjFdPW1bYT4+MV0mLTU7aWYoaVsoa1tnPj4yXXwwKSs2OT4+MF18MCl7Wmooa1tsPj4yXXwwLGtba1tmPj4yXT4+Ml18MCwwKTtrW2U+PjJdPTE7dD1rW2U+PjJdfDA7cj1zO3JldHVybiB0fDB9aWYoIShrW2Y+PjJdfDApKXtrW2U+PjJdPTA7dD1rW2U+PjJdfDA7cj1zO3JldHVybiB0fDB9YTpkbyBpZighKGtbKGtbZj4+Ml18MCkrND4+Ml18MCkpWmooa1tsPj4yXXwwLGtba1tmPj4yXT4+Ml18MCwwKTtlbHNle2lmKEpkKGtbKGtbZj4+Ml18MCkrOD4+Ml18MCwyMDI1MCw3KXwwKXtkbyBpZihrW2tbZj4+Ml0+PjJdfDApe2lmKChrWyhrW2Y+PjJdfDApKzg+PjJdfDApIT0wPyhpW2tbKGtbZj4+Ml18MCkrOD4+Ml0+PjBdfDApIT0wOjApYnJlYWs7dD1VaihrW2c+PjJdfDAsa1trW2Y+PjJdPj4yXXwwLGtbKGtbKGtbZz4+Ml18MCkrMTY+PjJdfDApKyhrW2g+PjJdPDw0KT4+Ml18MCl8MDtrW24+PjJdPXQ7aWYoIShrW24+PjJdfDApKWJyZWFrIGE7aWYoX2koa1soa1tmPj4yXXwwKSs0Pj4yXXwwLChrW24+PjJdfDApKzQ0fDApfDApYnJlYWsgYTtaaihrW2w+PjJdfDAsa1trW2Y+PjJdPj4yXXwwLDIwMjU4KTticmVhayBhfXdoaWxlKDApO1pqKGtbbD4+Ml18MCxrW2tbZj4+Ml0+PjJdfDAsMCk7YnJlYWt9aVtxPj4wXT1pWyhrW2c+PjJdfDApKzE0OCs0Pj4wXXwwO2lbKGtbZz4+Ml18MCkrMTQ4KzQ+PjBdPWtbaD4+Ml07dD1aaShrWyhrW2Y+PjJdfDApKzQ+PjJdfDApfDA7a1soa1tnPj4yXXwwKSsxNDg+PjJdPXQ7aVsoa1tnPj4yXXwwKSsxNDgrNj4+MF09MDtuZihrW2c+PjJdfDAsa1soa1tmPj4yXXwwKSs4Pj4yXXwwLC0xLG8sMCl8MDtrW3A+PjJdPWtbKGtbZz4+Ml18MCkrNTI+PjJdO2lbKGtbZz4+Ml18MCkrMTQ4KzQ+PjBdPWlbcT4+MF18MDtkbyBpZigwIT0oa1twPj4yXXwwKT8oaVsoa1tnPj4yXXwwKSsxNDgrNj4+MF18MCk9PTA6MCl7a1soa1tsPj4yXXwwKSsxMj4+Ml09a1twPj4yXTtpZigoa1twPj4yXXwwKT09Nyl7d2goa1tnPj4yXXwwKTticmVha31pZigoa1twPj4yXXwwKSE9OT8oa1twPj4yXSYyNTV8MCkhPTY6MCl7cT1rW2w+PjJdfDA7dD1rW2tbZj4+Ml0+PjJdfDA7WmoocSx0LG1mKGtbZz4+Ml18MCl8MCl9fXdoaWxlKDApO2ZlKGtbbz4+Ml18MCl8MH13aGlsZSgwKTtrW2U+PjJdPTA7dD1rW2U+PjJdfDA7cj1zO3JldHVybiB0fDB9ZnVuY3Rpb24gTWooYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTA7ZD1yO3I9cisxNnwwO2U9ZCs4fDA7Zz1kKzR8MDtmPWQ7a1tlPj4yXT1hO2tbZz4+Ml09YjtrW2Y+PjJdPWM7Ymcoa1tnPj4yXXwwLGtba1tlPj4yXT4+Ml18MCk7Yz1BaChrW2c+PjJdfDAsa1tmPj4yXXwwKXwwO2tba1tlPj4yXT4+Ml09YztyPWQ7cmV0dXJufWZ1bmN0aW9uIE5qKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MDtkPXI7cj1yKzE2fDA7Yj1kKzR8MDtjPWQ7a1tjPj4yXT1hO2E9a1tjPj4yXXwwO2RvIGlmKChrW2M+PjJdfDApPDApaWYoKGF8MCk9PS0yMTQ3NDgzNjQ4KXtrW2I+PjJdPTIxNDc0ODM2NDc7YnJlYWt9ZWxzZXtrW2I+PjJdPTAtKGtbYz4+Ml18MCk7YnJlYWt9ZWxzZSBrW2I+PjJdPWE7d2hpbGUoMCk7cj1kO3JldHVybiBrW2I+PjJdfDB9ZnVuY3Rpb24gT2ooYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wO2M9cjtyPXIrMTZ8MDtmPWMrOHwwO2Q9Yys0fDA7ZT1jO2tbZj4+Ml09YTtrW2Q+PjJdPWI7a1tlPj4yXT1rWyhrW2Y+PjJdfDApKzQ+PjJdO3dnKGtbZj4+Ml18MCk7WGooa1trW2U+PjJdPj4yXXwwLGtbZD4+Ml18MCk7cj1jO3JldHVybiAwfWZ1bmN0aW9uIFBqKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wLGk9MCxsPTAsbT0wLG49MDtuPXI7cj1yKzQ4fDA7bD1uO2M9biszNnwwO2Q9biszMnwwO2k9bisyNHwwO2U9bisyMHwwO209bisxNnwwO2g9bisxMnwwO2Y9bis4fDA7Zz1uKzR8MDtrW2M+PjJdPWE7a1tkPj4yXT1iO2tbaD4+Ml09MDtrW2U+PjJdPWtbKGtbKGtbKGtbYz4+Ml18MCkrMTY+PjJdfDApKyhrW2Q+PjJdPDw0KSsxMj4+Ml18MCkrMjQrOD4+Ml07d2hpbGUoMSl7aWYoIShrW2U+PjJdfDApKWJyZWFrO2tbZj4+Ml09a1soa1tlPj4yXXwwKSs4Pj4yXTtqW2tbKGtbZj4+Ml18MCkrOD4+Ml0+PjFdPTA7a1tlPj4yXT1rW2tbZT4+Ml0+PjJdfWtbaT4+Ml09a1tjPj4yXTtrW2krND4+Ml09a1soa1soa1tjPj4yXXwwKSsxNj4+Ml18MCkrKGtbZD4+Ml08PDQpPj4yXTtkbyBpZihEaShrW2M+PjJdfDAsMjAxNjMsa1tpKzQ+PjJdfDApfDApe2Y9a1tjPj4yXXwwO2tbbD4+Ml09a1tpKzQ+PjJdO2w9UWgoZiwyMDE3NixsKXwwO2tbbT4+Ml09bDtpZighKGtbbT4+Ml18MCkpe2tbaD4+Ml09NzticmVha31lbHNle2w9a2Yoa1tjPj4yXXwwLGtbbT4+Ml18MCwxNDEsaSwwKXwwO2tbaD4+Ml09bDtiZyhrW2M+PjJdfDAsa1ttPj4yXXwwKTticmVha319d2hpbGUoMCk7a1tlPj4yXT1rWyhrWyhrWyhrW2M+PjJdfDApKzE2Pj4yXXwwKSsoa1tkPj4yXTw8NCkrMTI+PjJdfDApKzI0Kzg+PjJdO3doaWxlKDEpe2lmKCEoa1tlPj4yXXwwKSlicmVhaztrW2c+PjJdPWtbKGtbZT4+Ml18MCkrOD4+Ml07aWYoIShqW2tbKGtbZz4+Ml18MCkrOD4+Ml0+PjFdfDApKVNqKGtbZz4+Ml18MCk7a1tlPj4yXT1rW2tbZT4+Ml0+PjJdfWlmKChrW2g+PjJdfDApIT03KXttPWtbaD4+Ml18MDtyPW47cmV0dXJuIG18MH13aChrW2M+PjJdfDApO209a1toPj4yXXwwO3I9bjtyZXR1cm4gbXwwfWZ1bmN0aW9uIFFqKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MDtkPXI7cj1yKzE2fDA7Yj1kKzR8MDtjPWQ7a1tiPj4yXT1hO3dnKGtbYj4+Ml18MCk7YT1YZyhrW2I+PjJdfDAsMCl8MDtrW2M+PjJdPWE7aWYoa1tjPj4yXXwwKXtjPWtbYz4+Ml18MDtyPWQ7cmV0dXJuIGN8MH1hPVdnKGtbYj4+Ml18MCwwKXwwO2tbYz4+Ml09YTtjPWtbYz4+Ml18MDtyPWQ7cmV0dXJuIGN8MH1mdW5jdGlvbiBSaihhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGw9MCxuPTAsbz0wLHA9MCxxPTAscz0wLHQ9MDtzPXI7cj1yKzExMnwwO2U9cys5NnwwO3Q9cys5MnwwO2Y9cys4NHwwO289cys3NnwwO249cys3MnwwO3A9cys2OHwwO3E9cys2NHwwO2c9cys2MHwwO2w9cys1NnwwO2g9cztrW3Q+PjJdPWE7a1tzKzg4Pj4yXT1iO2tbZj4+Ml09YztrW3MrODA+PjJdPWQ7a1tvPj4yXT1rW3Q+PjJdO2lmKCgoa1tmPj4yXXwwKSE9MD8oa1trW2Y+PjJdPj4yXXwwKSE9MDowKT8oa1soa1tmPj4yXXwwKSs4Pj4yXXwwKSE9MDowKXt0PURpKGtba1tvPj4yXT4+Ml18MCxrW2tbZj4+Ml0+PjJdfDAsa1soa1tvPj4yXXwwKSs0Pj4yXXwwKXwwO2tbcD4+Ml09dDtpZighKGtbcD4+Ml18MCkpe2tbZT4+Ml09MDt0PWtbZT4+Ml18MDtyPXM7cmV0dXJuIHR8MH1kbyBpZihrWyhrW2Y+PjJdfDApKzQ+PjJdfDApaWYoIShiZShrW2tbZj4+Ml0+PjJdfDAsa1soa1tmPj4yXXwwKSs0Pj4yXXwwKXwwKSl7dD1UaihrW3A+PjJdfDApfDA7a1tuPj4yXT10O2JyZWFrfWVsc2V7dD1VaihrW2tbbz4+Ml0+PjJdfDAsa1soa1tmPj4yXXwwKSs0Pj4yXXwwLGtbKGtbbz4+Ml18MCkrND4+Ml18MCl8MDtrW24+PjJdPXQ7YnJlYWt9ZWxzZSBrW24+PjJdPTA7d2hpbGUoMCk7a1txPj4yXT1rWyhrW2Y+PjJdfDApKzg+PjJdO2lmKGtbbj4+Ml18MCl7a1tnPj4yXT0wO2tbbD4+Ml09KG1bKGtbbj4+Ml18MCkrNTA+PjFdfDApKzE7dD0oa1tuPj4yXXwwKSs1NXwwO2lbdD4+MF09aVt0Pj4wXSYtNTtWaihrW3E+PjJdfDAsa1tsPj4yXXwwLGtbZz4+Ml18MCxrWyhrW24+PjJdfDApKzg+PjJdfDAsa1tuPj4yXXwwKTtpZighKGtbKGtbbj4+Ml18MCkrMzY+PjJdfDApKWpbKGtbcD4+Ml18MCkrMzg+PjFdPWpba1soa1tuPj4yXXwwKSs4Pj4yXT4+MV18MH1lbHNle2pbaCs0OD4+MV09alsoa1twPj4yXXwwKSs0MD4+MV18MDtWaihrW3E+PjJdfDAsMSwwLChrW3A+PjJdfDApKzM4fDAsaCk7alsoa1twPj4yXXwwKSs0MD4+MV09altoKzQ4Pj4xXXwwfWtbZT4+Ml09MDt0PWtbZT4+Ml18MDtyPXM7cmV0dXJuIHR8MH1rW2U+PjJdPTA7dD1rW2U+PjJdfDA7cj1zO3JldHVybiB0fDB9ZnVuY3Rpb24gU2ooYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wLGU9MCxmPTAsZz0wO2c9cjtyPXIrMzJ8MDtiPWcrMTJ8MDtkPWcrMTZ8MDtjPWcrOHwwO2Y9Zys0fDA7ZT1nO2tbYj4+Ml09YTtqW2Q+PjFdPWpbNDg4Nl18MDtqW2QrMj4+MV09als0ODg3XXwwO2pbZCs0Pj4xXT1qWzQ4ODhdfDA7altkKzY+PjFdPWpbNDg4OV18MDtqW2QrOD4+MV09als0ODkwXXwwO2tbYz4+Ml09a1soa1tiPj4yXXwwKSs4Pj4yXTtpZig1PChtWyhrW2I+PjJdfDApKzUwPj4xXXwwKSlhPTU7ZWxzZSBhPW1bKGtbYj4+Ml18MCkrNTA+PjFdfDA7a1tmPj4yXT1hO2pba1tjPj4yXT4+MV09alsoa1soa1tiPj4yXXwwKSsxMj4+Ml18MCkrMzg+PjFdfDA7aWYoa1soa1tiPj4yXXwwKSszNj4+Ml18MCl7YT1rW2M+PjJdfDA7althPj4xXT0oalthPj4xXXwwKS0xMH1pZigoaltrW2M+PjJdPj4xXXwwKTwzMylqW2tbYz4+Ml0+PjFdPTMzO2JTKChrW2M+PjJdfDApKzJ8MCxkfDAsa1tmPj4yXTw8MXwwKXwwO2tbZT4+Ml09KGtbZj4+Ml18MCkrMTt3aGlsZSgxKXtpZigoa1tlPj4yXXwwKT4obVsoa1tiPj4yXXwwKSs1MD4+MV18MCkpYnJlYWs7alsoa1tjPj4yXXwwKSsoa1tlPj4yXTw8MSk+PjFdPTIzO2tbZT4+Ml09KGtbZT4+Ml18MCkrMX1pZighKGxbKGtbYj4+Ml18MCkrNTQ+PjBdfDApKXtyPWc7cmV0dXJufWpbKGtbYz4+Ml18MCkrKG1bKGtbYj4+Ml18MCkrNTA+PjFdPDwxKT4+MV09MDtyPWc7cmV0dXJufWZ1bmN0aW9uIFRqKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MDtjPXI7cj1yKzE2fDA7ZD1jKzR8MDtiPWM7a1tkPj4yXT1hO2tbYj4+Ml09a1soa1tkPj4yXXwwKSs4Pj4yXTt3aGlsZSgxKXtpZighKGtbYj4+Ml18MCkpe2E9NTticmVha31pZighKChpWyhrW2I+PjJdfDApKzU1Pj4wXSYzfDApPT0yXjEpKXthPTU7YnJlYWt9a1tiPj4yXT1rWyhrW2I+PjJdfDApKzIwPj4yXX1pZigoYXwwKT09NSl7cj1jO3JldHVybiBrW2I+PjJdfDB9cmV0dXJuIDB9ZnVuY3Rpb24gVWooYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGk9MCxqPTAsbD0wLG09MDttPXI7cj1yKzMyfDA7ZD1tKzI0fDA7ZT1tKzIwfDA7Zj1tKzE2fDA7aT1tKzEyfDA7Zz1tKzh8MDtoPW0rNHwwO2o9bTtrW2Q+PjJdPWE7a1tlPj4yXT1iO2tbZj4+Ml09YztrW2k+PjJdPTA7a1tnPj4yXT0wO3doaWxlKDEpe2lmKChrW2c+PjJdfDApPj0oa1soa1tkPj4yXXwwKSsyMD4+Ml18MCkpe2w9NzticmVha31iPWtbZz4+Ml18MDtrW2g+PjJdPShrW2c+PjJdfDApPDI/Yl4xOmI7a1tqPj4yXT1rWyhrWyhrW2Q+PjJdfDApKzE2Pj4yXXwwKSsoa1toPj4yXTw8NCkrMTI+PjJdO2lmKCEoKGtbZj4+Ml18MCkhPTA/KHNnKGtbZj4+Ml18MCxrWyhrWyhrW2Q+PjJdfDApKzE2Pj4yXXwwKSsoa1toPj4yXTw8NCk+PjJdfDApfDApIT0wOjApKWw9NTtpZigobHwwKT09NT8obD0wLGI9Q2ooKGtbaj4+Ml18MCkrMjR8MCxrW2U+PjJdfDApfDAsa1tpPj4yXT1iLChrW2k+PjJdfDApIT0wKTowKXtsPTc7YnJlYWt9a1tnPj4yXT0oa1tnPj4yXXwwKSsxfWlmKChsfDApPT03KXtyPW07cmV0dXJuIGtbaT4+Ml18MH1yZXR1cm4gMH1mdW5jdGlvbiBWaihhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MDtwPXI7cj1yKzQ4fDA7cT1wKzMyfDA7Zj1wKzI4fDA7Zz1wKzIwfDA7bj1wKzE2fDA7bz1wKzEyfDA7aD1wKzh8MDtsPXArNHwwO209cDtrW3E+PjJdPWE7a1tmPj4yXT1iO2tbcCsyND4+Ml09YztrW2c+PjJdPWQ7a1tuPj4yXT1lO2tbbz4+Ml09a1txPj4yXTtrW2w+PjJdPTA7d2hpbGUoMSl7aWYoIShpW2tbbz4+Ml0+PjBdfDApKWJyZWFrO2lmKChrW2w+PjJdfDApPj0oa1tmPj4yXXwwKSlicmVhaztrW20+PjJdPTA7d2hpbGUoMSl7cT1pW2tbbz4+Ml0+PjBdfDA7a1toPj4yXT1xO2lmKCEoKHF8MCk+PTQ4PyhrW2g+PjJdfDApPD01NzowKSlicmVhaztrW20+PjJdPSgoa1ttPj4yXXwwKSoxMHwwKSsoa1toPj4yXXwwKS00ODtrW28+PjJdPShrW28+PjJdfDApKzF9cT1XaihrW20+PjJdfDAsMCl8MDtqWyhrW2c+PjJdfDApKyhrW2w+PjJdPDwxKT4+MV09cTtpZigoaVtrW28+PjJdPj4wXXwwKT09MzIpa1tvPj4yXT0oa1tvPj4yXXwwKSsxO2tbbD4+Ml09KGtbbD4+Ml18MCkrMX1xPShrW24+PjJdfDApKzU1fDA7aVtxPj4wXT1pW3E+PjBdJi01O3E9KGtbbj4+Ml18MCkrNTV8MDtpW3E+PjBdPWlbcT4+MF0mLTY1O2E6d2hpbGUoMSl7aWYoIShpW2tbbz4+Ml0+PjBdfDApKWJyZWFrO2RvIGlmKGhmKDIwMjE3LGtbbz4+Ml18MCl8MCl7cT0oaGYoMjAyMjgsa1tvPj4yXXwwKXwwKT09MDtmPWtbbz4+Ml18MDtpZihxKXtxPVppKGYrM3wwKXwwO3E9V2oocSwoKHF8MCk8MCk8PDMxPj4zMSl8MDtqWyhrW24+PjJdfDApKzQ4Pj4xXT1xO2JyZWFrfWlmKCEoaGYoMjAyMzgsZil8MCkpe3E9KGtbbj4+Ml18MCkrNTV8MDtpW3E+PjBdPWlbcT4+MF0mLTY1fDY0fX1lbHNle3E9KGtbbj4+Ml18MCkrNTV8MDtpW3E+PjBdPWlbcT4+MF0mLTV8NH13aGlsZSgwKTt3aGlsZSgxKXtpZighKGlba1tvPj4yXT4+MF18MCkpYnJlYWs7aWYoKGlba1tvPj4yXT4+MF18MCk9PTMyKWJyZWFrO2tbbz4+Ml09KGtbbz4+Ml18MCkrMX13aGlsZSgxKXtpZigoaVtrW28+PjJdPj4wXXwwKSE9MzIpY29udGludWUgYTtrW28+PjJdPShrW28+PjJdfDApKzF9fXI9cDtyZXR1cm59ZnVuY3Rpb24gV2ooYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MDtmPXI7cj1yKzE2fDA7Yz1mKzEwfDA7ZD1mO2U9Zis4fDA7Zz1kO2tbZz4+Ml09YTtrW2crND4+Ml09YjtqW2U+PjFdPTQwO2I9ZDthPWtbYis0Pj4yXXwwO2E6ZG8gaWYoYT4+PjA8MHwoYXwwKT09MCYoa1tiPj4yXXwwKT4+PjA8OCl7Zz1kO2I9a1tnKzQ+PjJdfDA7aWYoYj4+PjA8MHwoYnwwKT09MCYoa1tnPj4yXXwwKT4+PjA8Mil7altjPj4xXT0wO2c9altjPj4xXXwwO3I9ZjtyZXR1cm4gZ3wwfWVsc2Ugd2hpbGUoMSl7Zz1kO2I9a1tnKzQ+PjJdfDA7aWYoIShiPj4+MDwwfChifDApPT0wJihrW2c+PjJdfDApPj4+MDw4KSlicmVhayBhO2pbZT4+MV09KGpbZT4+MV18MCktMTA7Yj1kO2I9ZVMoa1tiPj4yXXwwLGtbYis0Pj4yXXwwLDEpfDA7Zz1kO2tbZz4+Ml09YjtrW2crND4+Ml09TH19ZWxzZXt3aGlsZSgxKXtnPWQ7Yj1rW2crND4+Ml18MDtpZighKGI+Pj4wPjB8KGJ8MCk9PTAmKGtbZz4+Ml18MCk+Pj4wPjI1NSkpYnJlYWs7altlPj4xXT0oaltlPj4xXXwwKSs0MDtiPWQ7Yj1hUyhrW2I+PjJdfDAsa1tiKzQ+PjJdfDAsNCl8MDtnPWQ7a1tnPj4yXT1iO2tbZys0Pj4yXT1MfXdoaWxlKDEpe2c9ZDtiPWtbZys0Pj4yXXwwO2lmKCEoYj4+PjA+MHwoYnwwKT09MCYoa1tnPj4yXXwwKT4+PjA+MTUpKWJyZWFrIGE7altlPj4xXT0oaltlPj4xXXwwKSsxMDtiPWQ7Yj1hUyhrW2I+PjJdfDAsa1tiKzQ+PjJdfDAsMSl8MDtnPWQ7a1tnPj4yXT1iO2tbZys0Pj4yXT1MfX13aGlsZSgwKTtqW2M+PjFdPShqWzk3ODIrKChrW2Q+PjJdJjcpPDwxKT4+MV18MCkrKGpbZT4+MV18MCktMTA7Zz1qW2M+PjFdfDA7cj1mO3JldHVybiBnfDB9ZnVuY3Rpb24gWGooYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTA7Yz1yO3I9cisxNnwwO2U9Yys0fDA7ZD1jO2tbZT4+Ml09YTtrW2Q+PjJdPWI7WWooa1soa1tlPj4yXXwwKSsyMTI+PjJdfDAsa1tkPj4yXXwwKTtyPWM7cmV0dXJufWZ1bmN0aW9uIFlqKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wO2M9cjtyPXIrMTZ8MDtlPWMrNHwwO2Q9YztrW2U+PjJdPWE7a1tkPj4yXT1iO2tbKGtbZT4+Ml18MCkrMTY+PjJdPWtbZD4+Ml07ZD1rWzM0XXwwO2I9a1soa1tlPj4yXXwwKSs0ND4+Ml18MDthPW1qKGtbZT4+Ml18MCl8MDskYltkJjI1NV0oYixhKTtyPWM7cmV0dXJufWZ1bmN0aW9uIFpqKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsbT0wLG49MDtuPXI7cj1yKzQ4fDA7aj1uKzh8MDtoPW47ZD1uKzMyfDA7ZT1uKzI4fDA7Zj1uKzI0fDA7Zz1uKzIwfDA7bT1uKzE2fDA7a1tkPj4yXT1hO2tbZT4+Ml09YjtrW2Y+PjJdPWM7a1tnPj4yXT1rW2tbZD4+Ml0+PjJdO2lmKChpWyhrW2c+PjJdfDApKzY5Pj4wXXwwKT09MD8oa1soa1tnPj4yXXwwKSsyND4+Ml0mNjU1MzZ8MCk9PTA6MCl7aWYoIShrW2U+PjJdfDApKWtbZT4+Ml09MjAyNzU7Yj1rW2c+PjJdfDA7a1toPj4yXT1rW2U+PjJdO2I9UWgoYiwyMDI3NyxoKXwwO2tbbT4+Ml09YjtpZihrW2Y+PjJdfDApe2I9a1tnPj4yXXwwO2M9a1tmPj4yXXwwO2tbaj4+Ml09a1ttPj4yXTtrW2orND4+Ml09YztiPVFoKGIsMjAzMDgsail8MDtrW20+PjJdPWJ9Ymcoa1tnPj4yXXwwLGtba1soa1tkPj4yXXwwKSs0Pj4yXT4+Ml18MCk7a1trWyhrW2Q+PjJdfDApKzQ+PjJdPj4yXT1rW20+PjJdfWlmKGxbKGtbZz4+Ml18MCkrNjk+PjBdfDApe2M9NztiPWtbZD4+Ml18MDtiPWIrMTJ8MDtrW2I+PjJdPWM7cj1uO3JldHVybn1jPV9qKDExMzU1NCl8MDtiPWtbZD4+Ml18MDtiPWIrMTJ8MDtrW2I+PjJdPWM7cj1uO3JldHVybn1mdW5jdGlvbiBfaihhKXthPWF8MDt2YXIgYj0wLGM9MDtiPXI7cj1yKzE2fDA7Yz1iO2tbYz4+Ml09YTthPSRqKDExLGtbYz4+Ml18MCwyMDMxNil8MDtyPWI7cmV0dXJuIGF8MH1mdW5jdGlvbiAkaihhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTA7ZT1yO3I9ciszMnwwO2Y9ZTtkPWUrMjB8MDtoPWUrMTZ8MDtnPWUrMTJ8MDtrW2Q+PjJdPWE7a1toPj4yXT1iO2tbZz4+Ml09YztjPWtbZD4+Ml18MDtnPWtbZz4+Ml18MDthPWtbaD4+Ml18MDtiPSh1ZigpfDApKzIwfDA7a1tmPj4yXT1nO2tbZis0Pj4yXT1hO2tbZis4Pj4yXT1iOyRkKGMsMjAzMzYsZik7cj1lO3JldHVybiBrW2Q+PjJdfDB9ZnVuY3Rpb24gYWsoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTAsbT0wO2o9cjtyPXIrMzJ8MDttPWorMTJ8MDtlPWorMTZ8MDtmPWorOHwwO2c9ais0fDA7aD1qO2tbbT4+Ml09YTtpW2U+PjBdPWI7a1tmPj4yXT1jO2tbZz4+Ml09ZDtkPWtbbT4+Ml18MDtpZihrW2Y+PjJdfDApe209YmsoZCxrW2Y+PjJdfDAsa1tnPj4yXXwwKXwwO2tbaD4+Ml09bX1lbHNlIGtbaD4+Ml09a1tkKzg+PjJdO2lmKCEoa1toPj4yXXwwKSl7bT1rW2g+PjJdfDA7cj1qO3JldHVybiBtfDB9a1toPj4yXT0oa1toPj4yXXwwKSsoKChsW2U+PjBdfDApLTF8MCkqMjB8MCk7bT1rW2g+PjJdfDA7cj1qO3JldHVybiBtfDB9ZnVuY3Rpb24gYmsoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxsPTA7aj1yO3I9ciszMnwwO2Q9aisyMHwwO2U9aisxNnwwO2w9aisxMnwwO2c9ais4fDA7Zj1qKzR8MDtoPWo7a1tkPj4yXT1hO2tbZT4+Ml09YjtrW2w+PjJdPWM7Yj1Daigoa1tkPj4yXXwwKSszNjR8MCxrW2U+PjJdfDApfDA7a1tnPj4yXT1iO2lmKCEoMD09KGtbZz4+Ml18MCkmKGtbbD4+Ml18MCkhPTApKXtsPWtbZz4+Ml18MDtyPWo7cmV0dXJuIGx8MH1sPVRmKGtbZT4+Ml18MCl8MDtrW2Y+PjJdPWw7bD1DaChrW2Q+PjJdfDAsNjArKGtbZj4+Ml18MCkrMXwwLDApfDA7a1tnPj4yXT1sO2lmKCEoa1tnPj4yXXwwKSl7bD1rW2c+PjJdfDA7cj1qO3JldHVybiBsfDB9a1toPj4yXT0wO2tba1tnPj4yXT4+Ml09KGtbZz4+Ml18MCkrNjA7aVsoa1tnPj4yXXwwKSs0Pj4wXT0xO2tbKGtbZz4+Ml18MCkrMjA+PjJdPShrW2c+PjJdfDApKzYwO2lbKGtbZz4+Ml18MCkrMjArND4+MF09MjtrWyhrW2c+PjJdfDApKzQwPj4yXT0oa1tnPj4yXXwwKSs2MDtpWyhrW2c+PjJdfDApKzQwKzQ+PjBdPTM7YlMoa1trW2c+PjJdPj4yXXwwLGtbZT4+Ml18MCxrW2Y+PjJdfDApfDA7aVsoa1trW2c+PjJdPj4yXXwwKSsoa1tmPj4yXXwwKT4+MF09MDtsPWNrKChrW2Q+PjJdfDApKzM2NHwwLGtba1tnPj4yXT4+Ml18MCxrW2c+PjJdfDApfDA7a1toPj4yXT1sO2lmKCEoa1toPj4yXXwwKSl7bD1rW2c+PjJdfDA7cj1qO3JldHVybiBsfDB9d2goa1tkPj4yXXwwKTtiZyhrW2Q+PjJdfDAsa1toPj4yXXwwKTtrW2c+PjJdPTA7bD1rW2c+PjJdfDA7cj1qO3JldHVybiBsfDB9ZnVuY3Rpb24gY2soYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGk9MCxqPTAsbD0wLG09MDttPXI7cj1yKzMyfDA7aT1tKzI4fDA7aj1tKzI0fDA7ZD1tKzIwfDA7ZT1tKzE2fDA7Zz1tKzEyfDA7Zj1tKzh8MDtsPW0rNHwwO2g9bTtrW2o+PjJdPWE7a1tkPj4yXT1iO2tbZT4+Ml09YztiPURqKGtbaj4+Ml18MCxrW2Q+PjJdfDAsZyl8MDtrW2Y+PjJdPWI7aWYoa1tmPj4yXXwwKXtrW2g+PjJdPWtbKGtbZj4+Ml18MCkrOD4+Ml07aWYoIShrW2U+PjJdfDApKWRrKGtbaj4+Ml18MCxrW2Y+PjJdfDAsa1tnPj4yXXwwKTtlbHNle2tbKGtbZj4+Ml18MCkrOD4+Ml09a1tlPj4yXTtrWyhrW2Y+PjJdfDApKzEyPj4yXT1rW2Q+PjJdfWtbaT4+Ml09a1toPj4yXTtsPWtbaT4+Ml18MDtyPW07cmV0dXJuIGx8MH1pZighKGtbZT4+Ml18MCkpe2tbaT4+Ml09MDtsPWtbaT4+Ml18MDtyPW07cmV0dXJuIGx8MH1iPWpnKDE2LDApfDA7a1tsPj4yXT1iO2lmKCEoa1tsPj4yXXwwKSl7a1tpPj4yXT1rW2U+PjJdO2w9a1tpPj4yXXwwO3I9bTtyZXR1cm4gbHwwfWtbKGtbbD4+Ml18MCkrMTI+PjJdPWtbZD4+Ml07a1soa1tsPj4yXXwwKSs4Pj4yXT1rW2U+PjJdO2I9KGtbaj4+Ml18MCkrNHwwO2tbYj4+Ml09KGtbYj4+Ml18MCkrMTtpZigoKGtbKGtbaj4+Ml18MCkrND4+Ml18MCk+Pj4wPj0xMD8oa1soa1tqPj4yXXwwKSs0Pj4yXXwwKT4+PjA+a1trW2o+PjJdPj4yXTw8MT4+PjA6MCk/KGVrKGtbaj4+Ml18MCxrWyhrW2o+PjJdfDApKzQ+PjJdPDwxKXwwKSE9MDowKXtiPUVqKGtbZD4+Ml18MCl8MDtrW2c+PjJdPShiPj4+MCklKChrW2tbaj4+Ml0+PjJdfDApPj4+MCl8MH1pZihrWyhrW2o+PjJdfDApKzEyPj4yXXwwKWQ9KGtbKGtbaj4+Ml18MCkrMTI+PjJdfDApKyhrW2c+PjJdPDwzKXwwO2Vsc2UgZD0wO2ZrKGtbaj4+Ml18MCxkLGtbbD4+Ml18MCk7a1tpPj4yXT0wO2w9a1tpPj4yXXwwO3I9bTtyZXR1cm4gbHwwfWZ1bmN0aW9uIGRrKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MDtoPXI7cj1yKzE2fDA7ZD1oKzEyfDA7ZT1oKzh8MDtmPWgrNHwwO2c9aDtrW2Q+PjJdPWE7a1tlPj4yXT1iO2tbZj4+Ml09YztiPWtba1tlPj4yXT4+Ml18MDtpZihrWyhrW2U+PjJdfDApKzQ+PjJdfDApa1trWyhrW2U+PjJdfDApKzQ+PjJdPj4yXT1iO2Vsc2Uga1soa1tkPj4yXXwwKSs4Pj4yXT1iO2lmKGtba1tlPj4yXT4+Ml18MClrWyhrW2tbZT4+Ml0+PjJdfDApKzQ+PjJdPWtbKGtbZT4+Ml18MCkrND4+Ml07aWYoa1soa1tkPj4yXXwwKSsxMj4+Ml18MCl7a1tnPj4yXT0oa1soa1tkPj4yXXwwKSsxMj4+Ml18MCkrKGtbZj4+Ml08PDMpO2lmKChrWyhrW2c+PjJdfDApKzQ+PjJdfDApPT0oa1tlPj4yXXwwKSlrWyhrW2c+PjJdfDApKzQ+PjJdPWtba1tlPj4yXT4+Ml07Zz1rW2c+PjJdfDA7a1tnPj4yXT0oa1tnPj4yXXwwKSstMX1VZChrW2U+PjJdfDApO2c9KGtbZD4+Ml18MCkrNHwwO2tbZz4+Ml09KGtbZz4+Ml18MCkrLTE7aWYoa1soa1tkPj4yXXwwKSs0Pj4yXXwwKXtyPWg7cmV0dXJufUtqKGtbZD4+Ml18MCk7cj1oO3JldHVybn1mdW5jdGlvbiBlayhhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wLGg9MCxpPTAsaj0wO2o9cjtyPXIrMzJ8MDtjPWorMjR8MDtkPWorMjB8MDtlPWorMTZ8MDtoPWorMTJ8MDtmPWorOHwwO2k9ais0fDA7Zz1qO2tbZD4+Ml09YTtrW2U+PjJdPWI7a1tlPj4yXT1rW2U+PjJdPDwzPj4+MD4xMDI0PzEyODpiO2lmKChrW2U+PjJdfDApPT0oa1trW2Q+PjJdPj4yXXwwKSl7a1tjPj4yXT0wO2E9a1tjPj4yXXwwO3I9ajtyZXR1cm4gYXwwfWdrKCk7YT1qZyhrW2U+PjJdPDwzLDApfDA7a1toPj4yXT1hO2hrKCk7aWYoIShrW2g+PjJdfDApKXtrW2M+PjJdPTA7YT1rW2M+PjJdfDA7cj1qO3JldHVybiBhfDB9VWQoa1soa1tkPj4yXXwwKSsxMj4+Ml18MCk7a1soa1tkPj4yXXwwKSsxMj4+Ml09a1toPj4yXTthPSgoa2coa1toPj4yXXwwKXwwKT4+PjApLzh8MDtrW2U+PjJdPWE7a1trW2Q+PjJdPj4yXT1hO2RTKGtbaD4+Ml18MCwwLGtbZT4+Ml08PDN8MCl8MDtrW2Y+PjJdPWtbKGtbZD4+Ml18MCkrOD4+Ml07a1soa1tkPj4yXXwwKSs4Pj4yXT0wO3doaWxlKDEpe2lmKCEoa1tmPj4yXXwwKSlicmVhazthPUVqKGtbKGtbZj4+Ml18MCkrMTI+PjJdfDApfDA7a1tnPj4yXT0oYT4+PjApJSgoa1tlPj4yXXwwKT4+PjApfDA7a1tpPj4yXT1rW2tbZj4+Ml0+PjJdO2ZrKGtbZD4+Ml18MCwoa1toPj4yXXwwKSsoa1tnPj4yXTw8Myl8MCxrW2Y+PjJdfDApO2tbZj4+Ml09a1tpPj4yXX1rW2M+PjJdPTE7YT1rW2M+PjJdfDA7cj1qO3JldHVybiBhfDB9ZnVuY3Rpb24gZmsoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wO2g9cjtyPXIrMTZ8MDtlPWgrMTJ8MDtkPWgrOHwwO2Y9aCs0fDA7Zz1oO2tbZT4+Ml09YTtrW2Q+PjJdPWI7a1tmPj4yXT1jO2lmKGtbZD4+Ml18MCl7aWYoa1trW2Q+PjJdPj4yXXwwKWI9a1soa1tkPj4yXXwwKSs0Pj4yXXwwO2Vsc2UgYj0wO2tbZz4+Ml09YjtjPWtbZD4+Ml18MDtrW2M+PjJdPShrW2M+PjJdfDApKzE7a1soa1tkPj4yXXwwKSs0Pj4yXT1rW2Y+PjJdfWVsc2Uga1tnPj4yXT0wO2lmKCEoa1tnPj4yXXwwKSl7a1trW2Y+PjJdPj4yXT1rWyhrW2U+PjJdfDApKzg+PjJdO2lmKGtbKGtbZT4+Ml18MCkrOD4+Ml18MClrWyhrWyhrW2U+PjJdfDApKzg+PjJdfDApKzQ+PjJdPWtbZj4+Ml07a1soa1tmPj4yXXwwKSs0Pj4yXT0wO2tbKGtbZT4+Ml18MCkrOD4+Ml09a1tmPj4yXTtyPWg7cmV0dXJufWtba1tmPj4yXT4+Ml09a1tnPj4yXTtrWyhrW2Y+PjJdfDApKzQ+PjJdPWtbKGtbZz4+Ml18MCkrND4+Ml07Yj1rW2Y+PjJdfDA7aWYoa1soa1tnPj4yXXwwKSs0Pj4yXXwwKWtba1soa1tnPj4yXXwwKSs0Pj4yXT4+Ml09YjtlbHNlIGtbKGtbZT4+Ml18MCkrOD4+Ml09YjtrWyhrW2c+PjJdfDApKzQ+PjJdPWtbZj4+Ml07cj1oO3JldHVybn1mdW5jdGlvbiBnaygpe2lmKCEoa1s0MzJdfDApKXJldHVybjtkY1trWzE3Mjg+PjJdJjI1NV0oKTtyZXR1cm59ZnVuY3Rpb24gaGsoKXtpZighKGtbNDMzXXwwKSlyZXR1cm47ZGNba1sxNzMyPj4yXSYyNTVdKCk7cmV0dXJufWZ1bmN0aW9uIGlrKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGk9MCxqPTAsbD0wLG09MCxuPTA7bj1yO3I9ciszMnwwO2Y9bisyNHwwO2c9bisyMHwwO2g9bisxNnwwO2k9bisxMnwwO2o9bis4fDA7bT1uKzR8MDtsPW47a1tmPj4yXT1hO2tbZz4+Ml09YjtrW2g+PjJdPWM7a1tpPj4yXT1kO2tbaj4+Ml09ZTtrW2w+PjJdPShrW2c+PjJdfDApPChrW2k+PjJdfDApP2tbZz4+Ml18MDprW2k+PjJdfDA7YT1vUihrW2g+PjJdfDAsa1tqPj4yXXwwLGtbbD4+Ml18MCl8MDtrW20+PjJdPWE7aWYoa1ttPj4yXXwwKXttPWtbbT4+Ml18MDtyPW47cmV0dXJuIG18MH1pZigoKGtbZj4+Ml18MCkhPTA/KG51KChrW2g+PjJdfDApKyhrW2w+PjJdfDApfDAsKGtbZz4+Ml18MCktKGtbbD4+Ml18MCl8MCl8MCkhPTA6MCk/KG51KChrW2o+PjJdfDApKyhrW2w+PjJdfDApfDAsKGtbaT4+Ml18MCktKGtbbD4+Ml18MCl8MCl8MCkhPTA6MCl7bT1rW20+PjJdfDA7cj1uO3JldHVybiBtfDB9a1ttPj4yXT0oa1tnPj4yXXwwKS0oa1tpPj4yXXwwKTttPWtbbT4+Ml18MDtyPW47cmV0dXJuIG18MH1mdW5jdGlvbiBqayhhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxpPTAsaj0wLGw9MDtpPXI7cj1yKzMyfDA7Zj1pKzE2fDA7bD1pKzEyfDA7Zz1pKzh8MDtqPWkrNHwwO2g9aTtrW2krMjA+PjJdPWE7a1tmPj4yXT1iO2tbbD4+Ml09YztrW2c+PjJdPWQ7a1tqPj4yXT1lO2U9SmQoa1tsPj4yXXwwLGtbaj4+Ml18MCwoa1tmPj4yXXwwKTwoa1tnPj4yXXwwKT9rW2Y+PjJdfDA6a1tnPj4yXXwwKXwwO2tbaD4+Ml09ZTtpZihrW2g+PjJdfDApe2w9a1toPj4yXXwwO3I9aTtyZXR1cm4gbHwwfWtbaD4+Ml09KGtbZj4+Ml18MCktKGtbZz4+Ml18MCk7bD1rW2g+PjJdfDA7cj1pO3JldHVybiBsfDB9ZnVuY3Rpb24ga2soYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxtPTAsbj0wLG89MCxwPTAscT0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wLEU9MCxGPTAsRz0wLEg9MCxJPTAsSj0wLEs9MCxNPTAsTj0wLE89MCxQPTAsUT0wLFI9MCxTPTAsVD0wO1M9cjtyPXIrMTYwfDA7Sj1TKzMyfDA7ST1TKzI0fDA7SD1TKzE2fDA7Rz1TKzh8MDtqPVMrMTQwfDA7VD1TKzEzNnwwO209UysxMzJ8MDtuPVMrMTI4fDA7bz1TKzEyNHwwO3A9UysxMjB8MDtxPVMrMTE2fDA7Rj1TKzExMnwwO3Y9UysxMDh8MDtRPVMrMTA0fDA7TT1TKzEwMHwwO3Q9UysxNDR8MDtoPVMrOTZ8MDtPPVMrOTJ8MDt1PVMrODh8MDt4PVMrODR8MDt5PVMrODB8MDtnPVM7RT1TKzc2fDA7Qz1TKzcyfDA7UD1TKzY4fDA7RD1TKzY0fDA7cz1TKzYwfDA7Tj1TKzU2fDA7QT1TKzUyfDA7ej1TKzQ4fDA7dz1TKzQ0fDA7Qj1TKzQwfDA7Sz1TKzM2fDA7a1tUPj4yXT1hO2tbbT4+Ml09YjtrW24+PjJdPWM7a1tvPj4yXT1kO2tbcD4+Ml09ZTtrW3E+PjJdPWY7a1tGPj4yXT0wO2tbdj4+Ml09a1trW24+PjJdPj4yXTtrW1E+PjJdPWtbVD4+Ml07Yj1UZihrW20+PjJdfDApfDA7a1toPj4yXT1iO2E6ZG8gaWYoKChrW3Y+PjJdJjY0fDApIT0wfChrWzVdfDApIT0wKSYoa1toPj4yXXwwKT49NT8ob1Ioa1ttPj4yXXwwLDI2MDIzLDUpfDApPT0wOjApe2tbeT4+Ml09MDtiPShrW2g+PjJdfDApKzJ8MDtUPWc7a1tUPj4yXT1iO2tbVCs0Pj4yXT0oKGJ8MCk8MCk8PDMxPj4zMTtrW3Y+PjJdPWtbdj4+Ml18NjQ7a1t4Pj4yXT0wO3doaWxlKDEpe2lmKChrW3g+PjJdfDApPj0oa1toPj4yXXwwKSlicmVhaztiPShpWyhrW20+PjJdfDApKyhrW3g+PjJdfDApPj4wXXwwKT09MzgmMTtUPWc7Yj0kUihrW1Q+PjJdfDAsa1tUKzQ+PjJdfDAsYnwwLCgoYnwwKTwwKTw8MzE+PjMxfDApfDA7VD1nO2tbVD4+Ml09YjtrW1QrND4+Ml09TDtrW3g+PjJdPShrW3g+PjJdfDApKzF9VD1nO1Q9VGQoa1tUPj4yXXwwLGtbVCs0Pj4yXXwwKXwwO2tbTT4+Ml09VDtpZighKGtbTT4+Ml18MCkpe2tbaj4+Ml09NztUPWtbaj4+Ml18MDtyPVM7cmV0dXJuIFR8MH1rW3g+PjJdPTU7ZG8gaWYoKGlbKGtbbT4+Ml18MCkrNT4+MF18MCk9PTQ3PyhpWyhrW20+PjJdfDApKzY+PjBdfDApPT00NzowKXtrW3g+PjJdPTc7d2hpbGUoMSl7aWYoaVsoa1ttPj4yXXwwKSsoa1t4Pj4yXXwwKT4+MF18MClnPShpWyhrW20+PjJdfDApKyhrW3g+PjJdfDApPj4wXXwwKSE9NDc7ZWxzZSBnPTA7aD1rW3g+PjJdfDA7aWYoIWcpYnJlYWs7a1t4Pj4yXT1oKzF9aWYoKGh8MCkhPTcpe2lmKChrW3g+PjJdfDApPT0xNj8ob1IoMjYwMjksKGtbbT4+Ml18MCkrN3wwLDkpfDApPT0wOjApYnJlYWs7VD0oa1ttPj4yXXwwKSs3fDA7a1tHPj4yXT0oa1t4Pj4yXXwwKS03O2tbRys0Pj4yXT1UO1Q9WWQoMjYwMzksRyl8MDtrW2tbcT4+Ml0+PjJdPVQ7a1tGPj4yXT0xO2JyZWFrIGF9fXdoaWxlKDApO2tbdT4+Ml09MDtiOndoaWxlKDEpe1Q9aVsoa1ttPj4yXXwwKSsoa1t4Pj4yXXwwKT4+MF18MDtpW3Q+PjBdPVQ7aWYoIShUPDwyND4+MjQpKWJyZWFrO2lmKChpW3Q+PjBdfDApPT0zNSlicmVhaztrW3g+PjJdPShrW3g+PjJdfDApKzE7ZG8gaWYoKChpW3Q+PjBdfDApPT0zNz8obFsxODQwMysobFsoa1ttPj4yXXwwKSsoa1t4Pj4yXXwwKT4+MF18MCk+PjBdJjh8MCkhPTA6MCk/KGxbMTg0MDMrKGxbKGtbbT4+Ml18MCkrKChrW3g+PjJdfDApKzEpPj4wXXwwKT4+MF0mOHwwKSE9MDowKXtUPWtbeD4+Ml18MDtrW3g+PjJdPVQrMTtUPSgoVmkoaVsoa1ttPj4yXXwwKStUPj4wXXwwKXwwKSYyNTUpPDw0O2tbRT4+Ml09VDtUPWtbeD4+Ml18MDtrW3g+PjJdPVQrMTtUPShWaShpWyhrW20+PjJdfDApK1Q+PjBdfDApfDApJjI1NTtrW0U+PjJdPShrW0U+PjJdfDApK1Q7aWYoa1tFPj4yXXwwKXtpW3Q+PjBdPWtbRT4+Ml07YnJlYWt9d2hpbGUoMSl7VD1pWyhrW20+PjJdfDApKyhrW3g+PjJdfDApPj4wXXwwO2lbdD4+MF09VDtpZighKFQ8PDI0Pj4yNCkpY29udGludWUgYjtpZigoaVt0Pj4wXXwwKT09MzUpY29udGludWUgYjtpZigoa1t1Pj4yXXwwKT09MD8oaVt0Pj4wXXwwKT09NjM6MCljb250aW51ZSBiO2lmKChrW3U+PjJdfDApPT0xKXtpZigoaVt0Pj4wXXwwKT09NjEpY29udGludWUgYjtpZigoaVt0Pj4wXXwwKT09MzgpY29udGludWUgYn1pZigoa1t1Pj4yXXwwKT09Mj8oaVt0Pj4wXXwwKT09Mzg6MCljb250aW51ZSBiO2tbeD4+Ml09KGtbeD4+Ml18MCkrMX19ZWxzZSBSPTM3O3doaWxlKDApO2M6ZG8gaWYoKFJ8MCk9PTM3KXtSPTA7ZG8gaWYoKGtbdT4+Ml18MCk9PTEpe2lmKChpW3Q+PjBdfDApIT0zOD8oaVt0Pj4wXXwwKSE9NjE6MClicmVhaztpZighKGlbKGtbTT4+Ml18MCkrKChrW3k+PjJdfDApLTEpPj4wXXwwKSl3aGlsZSgxKXtpZighKGlbKGtbbT4+Ml18MCkrKGtbeD4+Ml18MCk+PjBdfDApKWNvbnRpbnVlIGI7aWYoKGlbKGtbbT4+Ml18MCkrKGtbeD4+Ml18MCk+PjBdfDApPT0zNSljb250aW51ZSBiO2lmKChpWyhrW20+PjJdfDApKygoa1t4Pj4yXXwwKS0xKT4+MF18MCk9PTM4KWNvbnRpbnVlIGI7a1t4Pj4yXT0oa1t4Pj4yXXwwKSsxfWVsc2V7aWYoKGlbdD4+MF18MCk9PTM4KXtUPWtbeT4+Ml18MDtrW3k+PjJdPVQrMTtpWyhrW00+PjJdfDApK1Q+PjBdPTB9ZWxzZSBrW3U+PjJdPTI7aVt0Pj4wXT0wO2JyZWFrIGN9fXdoaWxlKDApO2lmKCEoKGtbdT4+Ml18MCk9PTA/KGlbdD4+MF18MCk9PTYzOjApKXtpZigoa1t1Pj4yXXwwKSE9MilicmVhaztpZigoaVt0Pj4wXXwwKSE9MzgpYnJlYWt9aVt0Pj4wXT0wO2tbdT4+Ml09MX13aGlsZSgwKTtHPWlbdD4+MF18MDtUPWtbeT4+Ml18MDtrW3k+PjJdPVQrMTtpWyhrW00+PjJdfDApK1Q+PjBdPUd9aWYoKGtbdT4+Ml18MCk9PTEpe1Q9a1t5Pj4yXXwwO2tbeT4+Ml09VCsxO2lbKGtbTT4+Ml18MCkrVD4+MF09MH1UPWtbeT4+Ml18MDtrW3k+PjJdPVQrMTtpWyhrW00+PjJdfDApK1Q+PjBdPTA7VD1rW3k+PjJdfDA7a1t5Pj4yXT1UKzE7aVsoa1tNPj4yXXwwKStUPj4wXT0wO1Q9KFRmKGtbTT4+Ml18MCl8MCkrMXwwO2tbTz4+Ml09KGtbTT4+Ml18MCkrVDt3aGlsZSgxKXtpZighKGlba1tPPj4yXT4+MF18MCkpe1I9ODQ7YnJlYWsgYX1UPVRmKGtbTz4+Ml18MCl8MDtrW0M+PjJdPVQ7a1tQPj4yXT0oa1tPPj4yXXwwKSsoKGtbQz4+Ml18MCkrMSk7VD1UZihrW1A+PjJdfDApfDA7a1tEPj4yXT1UO2lmKChrW0M+PjJdfDApPT0zPyhvUigyNjA2NyxrW08+PjJdfDAsMyl8MCk9PTA6MClrW1E+PjJdPWtbUD4+Ml07ZWxzZXtrW3M+PjJdPTA7a1tOPj4yXT0wO2tbQT4+Ml09MDtrW3o+PjJdPTA7aWYoKGtbQz4+Ml18MCk9PTU/KG9SKDI2MDcxLGtbTz4+Ml18MCw1KXwwKT09MDowKXtrW0E+PjJdPTM5MzIxNjtrW3M+PjJdPTQxMDQ7a1t6Pj4yXT1rW0E+PjJdO2tbTj4+Ml09MjYwNzF9aWYoKGtbQz4+Ml18MCk9PTQ/KG9SKDI2MDc3LGtbTz4+Ml18MCw0KXwwKT09MDowKXtrW0E+PjJdPTEzNTtrW3M+PjJdPTQxMjg7a1t6Pj4yXT1rW0E+PjJdJmtbdj4+Ml07a1tOPj4yXT0yNjA4Mn1pZihrW3M+PjJdfDApe2tbQj4+Ml09MDtrW3c+PjJdPTA7d2hpbGUoMSl7aWYoIShrWyhrW3M+PjJdfDApKyhrW3c+PjJdPDwzKT4+Ml18MCkpYnJlYWs7a1tLPj4yXT1rWyhrW3M+PjJdfDApKyhrW3c+PjJdPDwzKT4+Ml07VD1rW0Q+PjJdfDA7aWYoKFR8MCk9PShUZihrW0s+PjJdfDApfDApPzA9PShvUihrW1A+PjJdfDAsa1tLPj4yXXwwLGtbRD4+Ml18MCl8MCk6MCl7Uj03MzticmVha31rW3c+PjJdPShrW3c+PjJdfDApKzF9aWYoKFJ8MCk9PTczKXtSPTA7a1tCPj4yXT1rWyhrW3M+PjJdfDApKyhrW3c+PjJdPDwzKSs0Pj4yXX1pZighKGtbQj4+Ml18MCkpe1I9NzY7YnJlYWt9aWYoKGtbQj4+Ml0mLTEyOXwwKT4oa1t6Pj4yXXwwKSl7Uj03ODticmVha31rW3Y+PjJdPWtbdj4+Ml0mfmtbQT4+Ml18a1tCPj4yXX19a1tPPj4yXT0oa1tQPj4yXXwwKSsoKGtbRD4+Ml18MCkrMSl9aWYoKFJ8MCk9PTc2KXtUPWtbUD4+Ml18MDtrW0g+PjJdPWtbTj4+Ml07a1tIKzQ+PjJdPVQ7VD1ZZCgyNjA4OSxIKXwwO2tba1txPj4yXT4+Ml09VDtrW0Y+PjJdPTE7YnJlYWt9ZWxzZSBpZigoUnwwKT09Nzgpe1Q9a1tQPj4yXXwwO2tbST4+Ml09a1tOPj4yXTtrW0krND4+Ml09VDtUPVlkKDI2MTA5LEkpfDA7a1trW3E+PjJdPj4yXT1UO2tbRj4+Ml09MzticmVha319ZWxzZSBSPTgxO3doaWxlKDApO2RvIGlmKChSfDApPT04MSl7VD0oa1toPj4yXXwwKSsyfDA7VD1UZChULCgoVHwwKTwwKTw8MzE+PjMxKXwwO2tbTT4+Ml09VDtpZihrW00+PjJdfDApe2JTKGtbTT4+Ml18MCxrW20+PjJdfDAsa1toPj4yXXwwKXwwO2lbKGtbTT4+Ml18MCkrKGtbaD4+Ml18MCk+PjBdPTA7aVsoa1tNPj4yXXwwKSsoKGtbaD4+Ml18MCkrMSk+PjBdPTA7a1t2Pj4yXT1rW3Y+PjJdJi02NTtSPTg0O2JyZWFrfWtbaj4+Ml09NztUPWtbaj4+Ml18MDtyPVM7cmV0dXJuIFR8MH13aGlsZSgwKTtpZigoUnwwKT09ODQ/KFQ9TWQoa1tRPj4yXXwwKXwwLGtba1tvPj4yXT4+Ml09VCwoa1trW28+PjJdPj4yXXwwKT09MCk6MCl7a1tKPj4yXT1rW1E+PjJdO1Q9WWQoMjYxMzMsSil8MDtrW2tbcT4+Ml0+PjJdPVQ7a1tGPj4yXT0xfWlmKGtbRj4+Ml18MCl7VWQoa1tNPj4yXXwwKTtrW00+PjJdPTB9a1trW24+PjJdPj4yXT1rW3Y+PjJdO2tba1twPj4yXT4+Ml09a1tNPj4yXTtrW2o+PjJdPWtbRj4+Ml07VD1rW2o+PjJdfDA7cj1TO3JldHVybiBUfDB9ZnVuY3Rpb24gbGsoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLG49MCxvPTAscD0wLHE9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MCxFPTAsRj0wLEc9MCxIPTAsST0wO0k9cjtyPXIrMTkyfDA7Qz1JKzc2fDA7Zz1JKzcyfDA7aD1JKzY4fDA7bj1JKzY0fDA7RD1JKzYwfDA7bz1JKzU2fDA7cD1JKzUyfDA7Rj1JKzQ4fDA7RT1JKzQ0fDA7SD1JKzM2fDA7eD1JKzE4MHwwO3o9SSs4MHwwO3U9SSszMnwwO3Q9SSsyOHwwO3Y9SSsyNHwwO3c9SSsyMHwwO0E9SSsxNnwwO3M9SSsxMnwwO3k9SSs4fDA7cT1JKzR8MDtHPUk7a1tnPj4yXT1hO2tbaD4+Ml09YjtrW24+PjJdPWM7a1tEPj4yXT1kO2tbbz4+Ml09ZTtrW3A+PjJdPWY7a1tGPj4yXT0wO2tbSSs0MD4+Ml09MDtrW0g+PjJdPTA7aWYoIShrW2g+PjJdfDApKWM9MTtlbHNlIGM9KGlba1toPj4yXT4+MF18MCk9PTA7a1t1Pj4yXT1jJjE7aWYoKGtbaD4+Ml18MCkhPTA/KHJSKGtbaD4+Ml18MCwyNTgzNyl8MCk9PTA6MCljPTE7ZWxzZSBCPTU7ZG8gaWYoKEJ8MCk9PTUpe2lmKChrW3U+PjJdfDApIT0wPyhocihrW24+PjJdfDApfDApIT0wOjApe2M9MTticmVha31jPShrW3A+PjJdJjEyOHwwKSE9MH13aGlsZSgwKTtrW3Q+PjJdPWMmMTtpZihrW3Q+PjJdfDApa1tvPj4yXT1rW28+PjJdfDI7aWYoKGtbcD4+Ml0mMjU2fDApIT0wPyhrW3Q+PjJdfDApIT0wfChrW3U+PjJdfDApIT0wOjApa1twPj4yXT1rW3A+PjJdJi0yNTd8NTEyO2I9dWcoNDgsMCl8MDtrW0U+PjJdPWI7aWYoIShrW0U+PjJdfDApKXtrW0M+PjJdPTc7SD1rW0M+PjJdfDA7cj1JO3JldHVybiBIfDB9aVsoa1tFPj4yXXwwKSs4Pj4wXT0wO2tba1tFPj4yXT4+Ml09a1tuPj4yXTtrWyhrW0U+PjJdfDApKzMyPj4yXT1rW0U+PjJdO2tbKGtbRT4+Ml18MCkrMzIrND4+Ml09MTtkbyBpZighKGtbdT4+Ml18MCkpe2lmKChrW3Q+PjJdfDApIT0wPyhrW3A+PjJdJjY0fDApPT0wOjApYnJlYWs7aWYoa1twPj4yXSYxMzEwNzIpe3U9KFRmKGtbaD4+Ml18MCl8MCkrMXwwO2tbdj4+Ml09dTtrW3c+PjJdPShrWyhrW2c+PjJdfDApKzg+PjJdfDApKzE7dT0oa1t3Pj4yXXwwKT4oa1t2Pj4yXXwwKT9rW3c+PjJdfDA6a1t2Pj4yXXwwO3U9amcodSwoKHV8MCk8MCk8PDMxPj4zMSl8MDtrW0E+PjJdPXU7aVsoa1tFPj4yXXwwKSs5Pj4wXT0xO2lmKCEoa1tBPj4yXXwwKSl7VWQoa1tFPj4yXXwwKTtrW0M+PjJdPTc7SD1rW0M+PjJdfDA7cj1JO3JldHVybiBIfDB9aWYoIShrW3Q+PjJdfDApKXt3PWlyKGtbZz4+Ml18MCxrW2g+PjJdfDAsa1t3Pj4yXXwwLGtbQT4+Ml18MCl8MDtrW0g+PjJdPXc7aWYoa1tIPj4yXXwwKXtVZChrW0E+PjJdfDApO1VkKGtbRT4+Ml18MCk7a1tDPj4yXT1rW0g+PjJdO0g9a1tDPj4yXXwwO3I9STtyZXR1cm4gSHwwfX1lbHNlIGJTKGtbQT4+Ml18MCxrW2g+PjJdfDAsa1t2Pj4yXXwwKXwwO2tbRj4+Ml09a1sxMDA2XTt3aGlsZSgxKXtpZighKGtbRj4+Ml18MCkpYnJlYWs7dz1rW0E+PjJdfDA7aWYoMD09KHJSKHcsVWkoa1trW0Y+PjJdPj4yXXwwLDApfDApfDApPyh3PUlpKGtba1tGPj4yXT4+Ml18MCl8MCwod3wwKT09KGtbZz4+Ml18MCkpOjApe0I9Mjk7YnJlYWt9a1tGPj4yXT1rWyhrW0Y+PjJdfDApKzY4Pj4yXX1kbyBpZigoQnwwKT09Mjkpe2tbcz4+Ml09KGtbKGtbbj4+Ml18MCkrMjA+PjJdfDApLTE7d2hpbGUoMSl7aWYoKGtbcz4+Ml18MCk8MCl7Qj0zNTticmVha31rW3k+PjJdPWtbKGtbKGtbbj4+Ml18MCkrMTY+PjJdfDApKyhrW3M+PjJdPDw0KSs0Pj4yXTtpZigoa1t5Pj4yXXwwKSE9MD8oa1soa1t5Pj4yXXwwKSs0Pj4yXXwwKT09KGtbRj4+Ml18MCk6MClicmVhaztrW3M+PjJdPShrW3M+PjJdfDApKy0xfWlmKChCfDApPT0zNSl7a1soa1tFPj4yXXwwKSs0Pj4yXT1rW0Y+PjJdO3k9KGtbRj4+Ml18MCkrNjR8MDtrW3k+PjJdPShrW3k+PjJdfDApKzE7YnJlYWt9VWQoa1tBPj4yXXwwKTtVZChrW0U+PjJdfDApO2tbQz4+Ml09MTk7SD1rW0M+PjJdfDA7cj1JO3JldHVybiBIfDB9d2hpbGUoMCk7VWQoa1tBPj4yXXwwKX19d2hpbGUoMCk7ZG8gaWYoIShrW0Y+PjJdfDApKXtBPXVnKDg0LDApfDA7a1tGPj4yXT1BO2lmKCEoa1tGPj4yXXwwKSl7a1tIPj4yXT03O2JyZWFrfUE9a3Ioa1tnPj4yXXwwLGtbRj4+Ml18MCxrW2g+PjJdfDAsODgsa1tvPj4yXXwwLGtbcD4+Ml18MCwxNDkpfDA7a1tIPj4yXT1BO2lmKCEoa1tIPj4yXXwwKSl7QT0oa1tuPj4yXXwwKSs0MHwwO2xyKGtba1tGPj4yXT4+Ml18MCxrW0E+PjJdfDAsa1tBKzQ+PjJdfDApO0E9bXIoa1trW0Y+PjJdPj4yXXwwLDEwMCx6KXwwO2tbSD4+Ml09QX1pZighKGtbSD4+Ml18MCkpe2lbKGtbRj4+Ml18MCkrMTY+PjBdPWtbbz4+Ml07a1soa1tGPj4yXXwwKSs0Pj4yXT1rW24+PjJdO29yKGtba1tGPj4yXT4+Ml18MCwxNzEsa1tGPj4yXXwwKTtrWyhrW0U+PjJdfDApKzQ+PjJdPWtbRj4+Ml07a1soa1tGPj4yXXwwKSs4Pj4yXT0wO2tbKGtbRj4+Ml18MCkrMTI+PjJdPTA7aWYoKHByKGtba1tGPj4yXT4+Ml18MCl8MCk8PDI0Pj4yNCl7QT0oa1tGPj4yXXwwKSsyMnwwO2pbQT4+MV09bVtBPj4xXXwxfWtbKGtbRj4+Ml18MCkrMzI+PjJdPWxbeisxNj4+MF08PDh8bFt6KzE3Pj4wXTw8MTY7aWYoKChrWyhrW0Y+PjJdfDApKzMyPj4yXXwwKT4+PjA+PTUxMj8oa1soa1tGPj4yXXwwKSszMj4+Ml18MCk+Pj4wPD02NTUzNjowKT8oKGtbKGtbRj4+Ml18MCkrMzI+PjJdfDApLTEma1soa1tGPj4yXXwwKSszMj4+Ml18MCk9PTA6MCl7aVt4Pj4wXT1pW3orMjA+PjBdfDA7QT0oa1tGPj4yXXwwKSsyMnwwO2pbQT4+MV09bVtBPj4xXXwyO0E9KHFyKHorNTJ8MCl8MCkhPTA7aVsoa1tGPj4yXXwwKSsxNz4+MF09QT8xOjA7QT0ocXIoeis2NHwwKXwwKSE9MDtpWyhrW0Y+PjJdfDApKzE4Pj4wXT1BPzE6MH1lbHNle2tbKGtbRj4+Ml18MCkrMzI+PjJdPTA7aWYoISgoa1toPj4yXXwwKT09MHwoa1t0Pj4yXXwwKSE9MCkpe2lbKGtbRj4+Ml18MCkrMTc+PjBdPTA7aVsoa1tGPj4yXXwwKSsxOD4+MF09MH1pW3g+PjBdPTB9QT1kaihrW2tbRj4+Ml0+PjJdfDAsKGtbRj4+Ml18MCkrMzJ8MCxsW3g+PjBdfDApfDA7a1tIPj4yXT1BO2lmKCEoa1tIPj4yXXwwKSl7a1soa1tGPj4yXXwwKSszNj4+Ml09KGtbKGtbRj4+Ml18MCkrMzI+PjJdfDApLShsW3g+PjBdfDApO2tbKGtbRj4+Ml18MCkrNjQ+PjJdPTE7aWYoaVsoa1tFPj4yXXwwKSs5Pj4wXXwwKXtrWyhrW0Y+PjJdfDApKzY4Pj4yXT1rWzEwMDZdO2tbMTAwNl09a1tGPj4yXTtCPTU2fWVsc2UgQj01Nn19fWVsc2UgQj01Njt3aGlsZSgwKTtpZigoQnwwKT09NTYpe2E6ZG8gaWYoaVsoa1tFPj4yXXwwKSs5Pj4wXXwwKXtrW3E+PjJdPTA7d2hpbGUoMSl7aWYoKGtbcT4+Ml18MCk+PShrWyhrW24+PjJdfDApKzIwPj4yXXwwKSlicmVhayBhO0I9a1soa1soa1tuPj4yXXwwKSsxNj4+Ml18MCkrKGtbcT4+Ml08PDQpKzQ+PjJdfDA7a1tHPj4yXT1CO2lmKChCfDApIT0wPyhsWyhrW0c+PjJdfDApKzk+PjBdfDApIT0wOjApYnJlYWs7a1txPj4yXT0oa1txPj4yXXwwKSsxfXdoaWxlKDEpe2lmKCEoa1soa1tHPj4yXXwwKSsyOD4+Ml18MCkpYnJlYWs7a1tHPj4yXT1rWyhrW0c+PjJdfDApKzI4Pj4yXX1pZigoa1soa1tFPj4yXXwwKSs0Pj4yXXwwKT4+PjA8KGtbKGtbRz4+Ml18MCkrND4+Ml18MCk+Pj4wKXtrWyhrW0U+PjJdfDApKzI0Pj4yXT1rW0c+PjJdO2tbKGtbRT4+Ml18MCkrMjg+PjJdPTA7a1soa1tHPj4yXXwwKSsyOD4+Ml09a1tFPj4yXTticmVha313aGlsZSgxKXtpZihrWyhrW0c+PjJdfDApKzI0Pj4yXXwwKWU9KGtbKGtbKGtbRz4+Ml18MCkrMjQ+PjJdfDApKzQ+PjJdfDApPj4+MDwoa1soa1tFPj4yXXwwKSs0Pj4yXXwwKT4+PjA7ZWxzZSBlPTA7Yz1rWyhrW0c+PjJdfDApKzI0Pj4yXXwwO2lmKCFlKWJyZWFrO2tbRz4+Ml09Y31rWyhrW0U+PjJdfDApKzI0Pj4yXT1jO2tbKGtbRT4+Ml18MCkrMjg+PjJdPWtbRz4+Ml07aWYoa1soa1tFPj4yXXwwKSsyND4+Ml18MClrWyhrWyhrW0U+PjJdfDApKzI0Pj4yXXwwKSsyOD4+Ml09a1tFPj4yXTtrWyhrW0c+PjJdfDApKzI0Pj4yXT1rW0U+PjJdfXdoaWxlKDApO2tba1tEPj4yXT4+Ml09a1tFPj4yXX1pZighKGtbSD4+Ml18MCkpe2lmKCEoZ3Ioa1tFPj4yXXwwLDAsMCl8MCkpWGooa1trWyhrW0U+PjJdfDApKzQ+PjJdPj4yXXwwLC0yZTMpfWVsc2V7aWYoKGtbRj4+Ml18MCkhPTA/KGtba1tGPj4yXT4+Ml18MCkhPTA6MClycihrW2tbRj4+Ml0+PjJdfDApfDA7VWQoa1tGPj4yXXwwKTtVZChrW0U+PjJdfDApO2tba1tEPj4yXT4+Ml09MH1rW0M+PjJdPWtbSD4+Ml07SD1rW0M+PjJdfDA7cj1JO3JldHVybiBIfDB9ZnVuY3Rpb24gbWsoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wO2Y9cjtyPXIrMTZ8MDtjPWYrOHwwO2Q9Zis0fDA7ZT1mO2tbYz4+Ml09YTtrW2Q+PjJdPWI7aWYoa1tkPj4yXXwwKXtiPWdyKGtbZD4+Ml18MCw4NCwxNTApfDA7a1tlPj4yXT1ifWVsc2V7Yj1DaCgwLDg0LDApfDA7a1tlPj4yXT1ifWlmKCEoa1tlPj4yXXwwKSl7d2goa1tjPj4yXXwwKTtiPWtbZT4+Ml18MDtyPWY7cmV0dXJuIGJ8MH1pZihsWyhrW2U+PjJdfDApKzc2Pj4wXXwwKXtiPWtbZT4+Ml18MDtyPWY7cmV0dXJuIGJ8MH1Kaigoa1tlPj4yXXwwKSs4fDApO0pqKChrW2U+PjJdfDApKzI0fDApO0pqKChrW2U+PjJdfDApKzQwfDApO0pqKChrW2U+PjJdfDApKzU2fDApO2lbKGtbZT4+Ml18MCkrNzc+PjBdPTE7Yj1rW2U+PjJdfDA7cj1mO3JldHVybiBifDB9ZnVuY3Rpb24gbmsoYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wO2M9cjtyPXIrMTZ8MDtiPWMrNHwwO2Q9YztrW2I+PjJdPWE7YT1JZihrW2I+PjJdfDAsMjU4MzEsMil8MDtrW2Q+PjJdPWE7aWYoKGtbZD4+Ml18MCkhPTcpe3I9YztyZXR1cm59d2goa1tiPj4yXXwwKTtyPWM7cmV0dXJufWZ1bmN0aW9uIG9rKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTAsaT0wLGo9MCxsPTA7aj1yO3I9ciszMnwwO2c9ajtiPWorMjh8MDtkPWorMjR8MDtjPWorMjB8MDtmPWorMTZ8MDtoPWorMTJ8MDtpPWorOHwwO2U9ais0fDA7a1tiPj4yXT1hO2tbYz4+Ml09MTtpZighKGtbMzg1XXwwKSl7cj1qO3JldHVybn1rW2Q+PjJdPTA7d2hpbGUoMSl7aWYoIShrW2M+PjJdfDApKWJyZWFrO2tbZT4+Ml09MDtpZigoa1tkPj4yXXwwKT4+PjA+PShrWzM4NV18MCk+Pj4wKXtrW2g+PjJdPTA7a1tjPj4yXT0wfWVsc2Uga1toPj4yXT1rWyhrWzM4Nl18MCkrKGtbZD4+Ml08PDIpPj4yXTtrW2k+PjJdPTA7aWYoKGtbaD4+Ml18MCkhPTA/KGE9WWJba1toPj4yXSYyNTVdKGtbYj4+Ml18MCxpLGtbZT4+Ml18MCl8MCxrW2Y+PjJdPWEsKGF8MCkhPTApOjApe2w9a1tiPj4yXXwwO2E9a1tmPj4yXXwwO2tbZz4+Ml09a1tpPj4yXTt0ZyhsLGEsMjU3OTIsZyk7a1tjPj4yXT0wfVVkKGtbaT4+Ml18MCk7a1tkPj4yXT0oa1tkPj4yXXwwKSsxfXI9ajtyZXR1cm59ZnVuY3Rpb24gcGsoYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wLGU9MCxmPTAsZz0wLGg9MCxpPTA7aT1yO3I9ciszMnwwO2I9aSsyNHwwO2M9aSsyMHwwO2g9aSsxNnwwO2Q9aSsxMnwwO2Y9aSs4fDA7ZT1pKzR8MDtnPWk7a1tjPj4yXT1hO2tbaD4+Ml09MDtrW2Q+PjJdPTA7a1tmPj4yXT0wO2tbZT4+Ml09MDtrW2c+PjJdPTA7cWsoZyk7YT1yayhrW2M+PjJdfDApfDA7a1toPj4yXT1hO2lmKGtbaD4+Ml18MCl7a1tiPj4yXT1rW2g+PjJdO2g9a1tiPj4yXXwwO3I9aTtyZXR1cm4gaHwwfXNrKGYpO3RrKGUpO2E9U2QoMjApfDA7a1tkPj4yXT1hO2lmKGtbZD4+Ml18MCl1ayhrW2Q+PjJdfDAsMSwxKTtlbHNlIGtbaD4+Ml09NztkbyBpZighKGtbaD4+Ml18MCkpe2lmKCgodmsoa1tkPj4yXXwwLDIwNDQ3LDcsa1tmPj4yXXwwKXwwKT09MD8odmsoa1tkPj4yXXwwLDIwNDU0LDcsa1tlPj4yXXwwKXwwKT09MDowKT8odmsoa1tkPj4yXXwwLDIwNDYxLDEwLGtbZz4+Ml18MCl8MCk9PTA6MClicmVhaztrW2g+PjJdPTd9d2hpbGUoMCk7aWYoKCgoKCgwPT0oa1toPj4yXXwwKT8oZz13ayhrW2M+PjJdfDAsa1tkPj4yXXwwLDIwNDcxKXwwLGtbaD4+Ml09ZywwPT0oZ3wwKSk6MCk/KGc9SWYoa1tjPj4yXXwwLDIwNDg2LC0xKXwwLGtbaD4+Ml09ZywwPT0oZ3wwKSk6MCk/KGc9SWYoa1tjPj4yXXwwLDIwNDk0LDEpfDAsa1toPj4yXT1nLDA9PShnfDApKTowKT8oZz1JZihrW2M+PjJdfDAsMjA1MDIsMSl8MCxrW2g+PjJdPWcsMD09KGd8MCkpOjApPyhnPUlmKGtbYz4+Ml18MCwyMDUwMiwyKXwwLGtbaD4+Ml09ZywwPT0oZ3wwKSk6MCk/KGc9SWYoa1tjPj4yXXwwLDIwNTEyLDEpfDAsa1toPj4yXT1nLDA9PShnfDApKTowKXtnPXBmKGtbYz4+Ml18MCwyMDUyMSwxNzM2LGtbZD4+Ml18MCwxNTEpfDA7a1toPj4yXT1nO2lmKCEoa1toPj4yXXwwKSl7Zz1wZihrW2M+PjJdfDAsMjA1MjYsMTczNixrW2Q+PjJdfDAsMCl8MDtrW2g+PjJdPWd9aWYoIShrW2g+PjJdfDApKXtnPXlrKGtbYz4+Ml18MCxrW2Q+PjJdfDApfDA7a1toPj4yXT1nfWtbYj4+Ml09a1toPj4yXTtoPWtbYj4+Ml18MDtyPWk7cmV0dXJuIGh8MH1pZihrW2Q+PjJdfDApe3prKGtbZD4+Ml18MCk7VWQoa1tkPj4yXXwwKX1rW2I+PjJdPWtbaD4+Ml07aD1rW2I+PjJdfDA7cj1pO3JldHVybiBofDB9ZnVuY3Rpb24gcWsoYSl7YT1hfDA7dmFyIGI9MCxjPTA7Yj1yO3I9cisxNnwwO2M9YjtrW2M+PjJdPWE7a1trW2M+PjJdPj4yXT0yMzU2O3I9YjtyZXR1cm59ZnVuY3Rpb24gcmsoYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wO2M9cjtyPXIrMTZ8MDtkPWMrNHwwO2I9YztrW2Q+PjJdPWE7YT1vZihrW2Q+PjJdfDAsMjU0NDMsMjI2NCwwKXwwO2tbYj4+Ml09YTtyPWM7cmV0dXJuIGtbYj4+Ml18MH1mdW5jdGlvbiBzayhhKXthPWF8MDt2YXIgYj0wLGM9MDtiPXI7cj1yKzE2fDA7Yz1iO2tbYz4+Ml09YTtrW2tbYz4+Ml0+PjJdPTIyMzY7cj1iO3JldHVybn1mdW5jdGlvbiB0ayhhKXthPWF8MDt2YXIgYj0wLGM9MDtiPXI7cj1yKzE2fDA7Yz1iO2tbYz4+Ml09YTtrW2tbYz4+Ml0+PjJdPTIyMDg7cj1iO3JldHVybn1mdW5jdGlvbiB1ayhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MDtkPXI7cj1yKzE2fDA7ZT1kO2c9ZCs1fDA7Zj1kKzR8MDtrW2U+PjJdPWE7aVtnPj4wXT1iO2lbZj4+MF09YztpW2tbZT4+Ml0+PjBdPWlbZz4+MF18MDtpWyhrW2U+PjJdfDApKzE+PjBdPWlbZj4+MF18MDtrWyhrW2U+PjJdfDApKzg+PjJdPTA7a1soa1tlPj4yXXwwKSs0Pj4yXT0wO2tbKGtbZT4+Ml18MCkrMTI+PjJdPTA7a1soa1tlPj4yXXwwKSsxNj4+Ml09MDtyPWQ7cmV0dXJufWZ1bmN0aW9uIHZrKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHM9MCx0PTA7cz1yO3I9cis0OHwwO2g9cys0MHwwO2o9cyszNnwwO2w9cyszMnwwO209cysyOHwwO249cysyNHwwO3A9cysyMHwwO289cysxNnwwO2U9cysxMnwwO3E9cys4fDA7dD1zKzR8MDtmPXM7a1tqPj4yXT1hO2tbbD4+Ml09YjtrW20+PjJdPWM7a1tuPj4yXT1kO2I9UmsoaVtrW2o+PjJdPj4wXXwwKXwwO2tbdD4+Ml09YjtiPWdjW2tbdD4+Ml0mMjU1XShrW2w+PjJdfDAsa1ttPj4yXXwwKXwwO2tbcD4+Ml09YjtrW28+PjJdPWtbcD4+Ml0mKGtbKGtbaj4+Ml18MCkrMTI+PjJdfDApLTE7Yj1TayhrW2o+PjJdfDAsa1tsPj4yXXwwLGtbbT4+Ml18MCxrW28+PjJdfDApfDA7a1tlPj4yXT1iO2lmKGtbZT4+Ml18MCl7a1tmPj4yXT1rWyhrW2U+PjJdfDApKzg+PjJdO2lmKCEoa1tuPj4yXXwwKSlrcShrW2o+PjJdfDAsa1tlPj4yXXwwLGtbbz4+Ml18MCk7ZWxzZSBrWyhrW2U+PjJdfDApKzg+PjJdPWtbbj4+Ml07a1toPj4yXT1rW2Y+PjJdO3Q9a1toPj4yXXwwO3I9cztyZXR1cm4gdHwwfWlmKCEoa1tuPj4yXXwwKSl7a1toPj4yXT0wO3Q9a1toPj4yXXwwO3I9cztyZXR1cm4gdHwwfWlmKCEoKGtbKGtbaj4+Ml18MCkrMTI+PjJdfDApPT0wPyhscShrW2o+PjJdfDAsOCl8MCkhPTA6MCkpZz0xMDtkbyBpZigoZ3wwKT09MTApe2lmKChrWyhrW2o+PjJdfDApKzQ+PjJdfDApPj0oa1soa1tqPj4yXXwwKSsxMj4+Ml18MCk/KGxxKGtbaj4+Ml18MCxrWyhrW2o+PjJdfDApKzEyPj4yXTw8MSl8MCkhPTA6MClicmVhazt0PW1xKDIwKXwwO2tbcT4+Ml09dDtpZighKGtbcT4+Ml18MCkpe2tbaD4+Ml09a1tuPj4yXTt0PWtbaD4+Ml18MDtyPXM7cmV0dXJuIHR8MH1kbyBpZigoa1tsPj4yXXwwKSE9MD8oaVsoa1tqPj4yXXwwKSsxPj4wXXwwKSE9MDowKXtkPW1xKGtbbT4+Ml18MCl8MDtrWyhrW3E+PjJdfDApKzEyPj4yXT1kO2Q9a1txPj4yXXwwO2lmKGtbKGtbcT4+Ml18MCkrMTI+PjJdfDApe2JTKGtbZCsxMj4+Ml18MCxrW2w+PjJdfDAsa1ttPj4yXXwwKXwwO2JyZWFrfUFrKGQpO2tbaD4+Ml09a1tuPj4yXTt0PWtbaD4+Ml18MDtyPXM7cmV0dXJuIHR8MH1lbHNlIGtbKGtbcT4+Ml18MCkrMTI+PjJdPWtbbD4+Ml07d2hpbGUoMCk7a1soa1txPj4yXXwwKSsxNj4+Ml09a1ttPj4yXTt0PShrW2o+PjJdfDApKzR8MDtrW3Q+PjJdPShrW3Q+PjJdfDApKzE7a1tvPj4yXT1rW3A+PjJdJihrWyhrW2o+PjJdfDApKzEyPj4yXXwwKS0xO25xKGtbaj4+Ml18MCwoa1soa1tqPj4yXXwwKSsxNj4+Ml18MCkrKGtbbz4+Ml08PDMpfDAsa1txPj4yXXwwKTtrWyhrW3E+PjJdfDApKzg+PjJdPWtbbj4+Ml07a1toPj4yXT0wO3Q9a1toPj4yXXwwO3I9cztyZXR1cm4gdHwwfXdoaWxlKDApO2tbKGtbaj4+Ml18MCkrND4+Ml09MDtrW2g+PjJdPWtbbj4+Ml07dD1rW2g+PjJdfDA7cj1zO3JldHVybiB0fDB9ZnVuY3Rpb24gd2soYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGk9MDtoPXI7cj1yKzMyfDA7ZD1oKzIwfDA7aT1oKzE2fDA7ZT1oKzEyfDA7Zz1oKzh8MDtmPWgrNHwwO2tbZD4+Ml09YTtrW2k+PjJdPWI7a1tlPj4yXT1jO2tbZz4+Ml09MDtrW2Y+PjJdPWtbaT4+Ml07a1toPj4yXT01O2lmKCEoa1tnPj4yXXwwKSl7aT1HZihrW2Q+PjJdfDAsa1tlPj4yXXwwLDEsNSxrW2Y+PjJdfDAsMjI1LDAsMCl8MDtrW2c+PjJdPWl9aWYoa1tnPj4yXXwwKXtpPWtbZz4+Ml18MDtyPWg7cmV0dXJuIGl8MH1pPUdmKGtbZD4+Ml18MCxrW2U+PjJdfDAsMiw1LGtbZj4+Ml18MCwyMjUsMCwwKXwwO2tbZz4+Ml09aTtpPWtbZz4+Ml18MDtyPWg7cmV0dXJuIGl8MH1mdW5jdGlvbiB4ayhhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTA7Yj1yO3I9cisxNnwwO2Q9Yis0fDA7Yz1iO2tbZD4+Ml09YTtrW2M+PjJdPWtbZD4+Ml07emsoa1tjPj4yXXwwKTtVZChrW2M+PjJdfDApO3I9YjtyZXR1cm59ZnVuY3Rpb24geWsoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wO2Q9cjtyPXIrMTZ8MDtmPWQrOHwwO2U9ZCs0fDA7Yz1kO2tbZj4+Ml09YTtrW2U+PjJdPWI7Yj1vZihrW2Y+PjJdfDAsMjA1MzEsMTgyOCxrW2U+PjJdfDApfDA7a1tjPj4yXT1iO3I9ZDtyZXR1cm4ga1tjPj4yXXwwfWZ1bmN0aW9uIHprKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MCxlPTA7ZT1yO3I9cisxNnwwO2I9ZSs4fDA7Yz1lKzR8MDtkPWU7a1tiPj4yXT1hO2tbYz4+Ml09a1soa1tiPj4yXXwwKSs4Pj4yXTtrWyhrW2I+PjJdfDApKzg+PjJdPTA7QWsoa1soa1tiPj4yXXwwKSsxNj4+Ml18MCk7a1soa1tiPj4yXXwwKSsxNj4+Ml09MDtrWyhrW2I+PjJdfDApKzEyPj4yXT0wO3doaWxlKDEpe2lmKCEoa1tjPj4yXXwwKSlicmVhaztrW2Q+PjJdPWtba1tjPj4yXT4+Ml07aWYoKGlbKGtbYj4+Ml18MCkrMT4+MF18MCkhPTA/KGtbKGtbYz4+Ml18MCkrMTI+PjJdfDApIT0wOjApQWsoa1soa1tjPj4yXXwwKSsxMj4+Ml18MCk7QWsoa1tjPj4yXXwwKTtrW2M+PjJdPWtbZD4+Ml19a1soa1tiPj4yXXwwKSs0Pj4yXT0wO3I9ZTtyZXR1cm59ZnVuY3Rpb24gQWsoYSl7YT1hfDA7dmFyIGI9MCxjPTA7Yj1yO3I9cisxNnwwO2M9YjtrW2M+PjJdPWE7VWQoa1tjPj4yXXwwKTtyPWI7cmV0dXJufWZ1bmN0aW9uIEJrKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxpPTAsaj0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wO3c9cjtyPXIrNjR8MDtnPXcrNTZ8MDt4PXcrNTJ8MDtoPXcrNDh8MDtpPXcrNDR8MDtqPXcrNDB8MDtsPXcrMzZ8MDttPXcrMzJ8MDtzPXcrMjh8MDtxPXcrMjR8MDt0PXcrMjB8MDt1PXcrMTZ8MDtvPXcrMTJ8MDtwPXcrOHwwO3Y9dys0fDA7bj13O2tbeD4+Ml09YTtrW2g+PjJdPWI7a1tpPj4yXT1jO2tbaj4+Ml09ZDtrW2w+PjJdPWU7a1ttPj4yXT1mO2tbcz4+Ml09MDtrW3E+PjJdPTA7a1t0Pj4yXT0wO2tbbz4+Ml09MDtmPXFmKGtbeD4+Ml18MCwyMDU0NCl8MDtrW3U+PjJdPWY7aWYoa1t1Pj4yXXwwKXtrW2c+PjJdPWtbdT4+Ml07eD1rW2c+PjJdfDA7cj13O3JldHVybiB4fDB9a1twPj4yXT0oa1tpPj4yXXwwKS0zO3g9TWsoa1twPj4yXXwwLChrW2o+PjJdfDApKzEyfDAsbyl8MDtrW3U+PjJdPXg7aWYoIShrW3U+PjJdfDApKXtpZigoa1twPj4yXXwwKTwxKWtbdj4+Ml09MjA0NDc7ZWxzZSBrW3Y+PjJdPWtba1tvPj4yXT4+Ml07eD1OayhrW2g+PjJdfDAsa1t2Pj4yXXwwLHEsa1ttPj4yXXwwKXwwO2tbdT4+Ml09eH1pZighKGtbdT4+Ml18MCkpe2tbbj4+Ml09KGtbbz4+Ml18MCkrNDt4PVliW2tbKGtbcT4+Ml18MCkrND4+Ml0mMjU1XSgoa1twPj4yXXwwKT4xPyhrW3A+PjJdfDApLTF8MDowLGtbbj4+Ml18MCx0KXwwO2tbdT4+Ml09eH1pZigoa1t1Pj4yXXwwKT09MD8oeD1TZCgyMCl8MCxrW3M+PjJdPXgsKGtbcz4+Ml18MCk9PTApOjApa1t1Pj4yXT03O2lmKGtbdT4+Ml18MCl7aWYoa1t0Pj4yXXwwKWJjW2tbKGtbcT4+Ml18MCkrOD4+Ml0mMjU1XShrW3Q+PjJdfDApfDB9ZWxzZXt4PWtbcz4+Ml18MDtrW3g+PjJdPTA7a1t4KzQ+PjJdPTA7a1t4Kzg+PjJdPTA7a1t4KzEyPj4yXT0wO2tbeCsxNj4+Ml09MDtrWyhrW3M+PjJdfDApKzEyPj4yXT1rW3E+PjJdO2tbKGtbcz4+Ml18MCkrMTY+PjJdPWtbdD4+Ml07a1trW2w+PjJdPj4yXT1rW3M+PjJdfVVkKGtbbz4+Ml18MCk7a1tnPj4yXT1rW3U+PjJdO3g9a1tnPj4yXXwwO3I9dztyZXR1cm4geHwwfWZ1bmN0aW9uIENrKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MDtmPXI7cj1yKzE2fDA7Yz1mKzEyfDA7ZD1mKzR8MDtlPWY7a1tmKzg+PjJdPWE7a1tkPj4yXT1iO2tbZT4+Ml09MDt3aGlsZSgxKXtpZigoa1tlPj4yXXwwKT49KGtba1tkPj4yXT4+Ml18MCkpe2I9ODticmVha31pZigoKGxbKGtbKGtbZD4+Ml18MCkrND4+Ml18MCkrKChrW2U+PjJdfDApKjEyfDApKzU+PjBdfDB8MCkhPTA/KGtbKGtbKGtbZD4+Ml18MCkrND4+Ml18MCkrKChrW2U+PjJdfDApKjEyfDApPj4yXXwwKT09MDowKT8obFsoa1soa1tkPj4yXXwwKSs0Pj4yXXwwKSsoKGtbZT4+Ml18MCkqMTJ8MCkrND4+MF18MHwwKT09MjowKXtiPTY7YnJlYWt9a1tlPj4yXT0oa1tlPj4yXXwwKSsxfWlmKChifDApPT02KXtrWyhrW2Q+PjJdfDApKzIwPj4yXT0xO2tbKGtbKGtbZD4+Ml18MCkrMTY+PjJdfDApKyhrW2U+PjJdPDwzKT4+Ml09MTtpWyhrWyhrW2Q+PjJdfDApKzE2Pj4yXXwwKSsoa1tlPj4yXTw8MykrND4+MF09MTtwWyhrW2Q+PjJdfDApKzQwPj4zXT0xLjA7a1tjPj4yXT0wO2U9a1tjPj4yXXwwO3I9ZjtyZXR1cm4gZXwwfWVsc2UgaWYoKGJ8MCk9PTgpe2tbKGtbZD4+Ml18MCkrMjA+PjJdPTA7a1tjPj4yXT0wO2U9a1tjPj4yXXwwO3I9ZjtyZXR1cm4gZXwwfXJldHVybiAwfWZ1bmN0aW9uIERrKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MDtiPXI7cj1yKzE2fDA7ZD1iKzR8MDtjPWI7a1tkPj4yXT1hO2tbYz4+Ml09a1tkPj4yXTtiY1trWyhrWyhrW2M+PjJdfDApKzEyPj4yXXwwKSs4Pj4yXSYyNTVdKGtbKGtbYz4+Ml18MCkrMTY+PjJdfDApfDA7VWQoa1tjPj4yXXwwKTtyPWI7cmV0dXJuIDB9ZnVuY3Rpb24gRWsoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wO2Y9cjtyPXIrMTZ8MDtjPWYrMTJ8MDtkPWYrNHwwO2U9ZjtrW2YrOD4+Ml09YTtrW2Q+PjJdPWI7Yj1TZCgzNil8MDtrW2U+PjJdPWI7aWYoIShrW2U+PjJdfDApKXtrW2M+PjJdPTc7ZT1rW2M+PjJdfDA7cj1mO3JldHVybiBlfDB9ZWxzZXthPWtbZT4+Ml18MDtiPWErMzZ8MDtkb3trW2E+PjJdPTA7YT1hKzR8MH13aGlsZSgoYXwwKTwoYnwwKSk7a1trW2Q+PjJdPj4yXT1rW2U+PjJdO2tbYz4+Ml09MDtlPWtbYz4+Ml18MDtyPWY7cmV0dXJuIGV8MH1yZXR1cm4gMH1mdW5jdGlvbiBGayhhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTA7Yj1yO3I9cisxNnwwO2Q9Yis0fDA7Yz1iO2tbZD4+Ml09YTtrW2M+PjJdPWtbZD4+Ml07TGsoa1tjPj4yXXwwKTtVZChrW2M+PjJdfDApO3I9YjtyZXR1cm4gMH1mdW5jdGlvbiBHayhhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTA7cD1yO3I9cis0OHwwO2Y9cCs0MHwwO2c9cCszNnwwO3E9cCszMnwwO2g9cCsyMHwwO249cCsxNnwwO2w9cCsxMnwwO209cCs4fDA7bz1wKzR8MDtqPXA7a1tnPj4yXT1hO2tbcT4+Ml09YjtrW3ArMjg+PjJdPWM7a1twKzI0Pj4yXT1kO2tbaD4+Ml09ZTtrW24+PjJdPTE7a1tsPj4yXT1rW2c+PjJdO2tbbT4+Ml09a1trW2c+PjJdPj4yXTtMayhrW2w+PjJdfDApO2RvIGlmKChrW3E+PjJdfDApPT0xKXtxPWplKGtba1toPj4yXT4+Ml18MCl8MDtrW28+PjJdPXE7cT1rZShrW2tbaD4+Ml0+PjJdfDApfDA7a1tqPj4yXT1xO3E9U2QoKGtbaj4+Ml18MCkrMXwwKXwwO2tbKGtbbD4+Ml18MCkrND4+Ml09cTtpZighKGtbKGtbbD4+Ml18MCkrND4+Ml18MCkpe2tbbj4+Ml09NzticmVha31iUyhrWyhrW2w+PjJdfDApKzQ+PjJdfDAsa1tvPj4yXXwwLGtbaj4+Ml18MCl8MDtpWyhrWyhrW2w+PjJdfDApKzQ+PjJdfDApKyhrW2o+PjJdfDApPj4wXT0wO3E9ZWNba1soa1soa1ttPj4yXXwwKSsxMj4+Ml18MCkrMTI+PjJdJjI1NV0oa1soa1ttPj4yXXwwKSsxNj4+Ml18MCxrWyhrW2w+PjJdfDApKzQ+PjJdfDAsa1tqPj4yXXwwLChrW2w+PjJdfDApKzh8MCl8MDtrW24+PjJdPXE7aWYoIShrW24+PjJdfDApKWtba1soa1tsPj4yXXwwKSs4Pj4yXT4+Ml09a1soa1ttPj4yXXwwKSsxNj4+Ml19d2hpbGUoMCk7aWYoa1tuPj4yXXwwKXtrW2Y+PjJdPWtbbj4+Ml07cT1rW2Y+PjJdfDA7cj1wO3JldHVybiBxfDB9ZWxzZXtxPUhrKGtbZz4+Ml18MCl8MDtrW2Y+PjJdPXE7cT1rW2Y+PjJdfDA7cj1wO3JldHVybiBxfDB9cmV0dXJuIDB9ZnVuY3Rpb24gSGsoYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wLGU9MCxmPTA7ZD1yO3I9cisxNnwwO2Y9ZCsxMnwwO2I9ZCs4fDA7ZT1kKzR8MDtjPWQ7a1tmPj4yXT1hO2tbYj4+Ml09a1tmPj4yXTtrW2U+PjJdPWtba1tmPj4yXT4+Ml07YT0oa1tiPj4yXXwwKSsxMnwwO2tbYT4+Ml09KGtbYT4+Ml18MCkrMTthPWFjW2tbKGtbKGtbZT4+Ml18MCkrMTI+PjJdfDApKzIwPj4yXSYyNTVdKGtbKGtbYj4+Ml18MCkrOD4+Ml18MCwoa1tiPj4yXXwwKSsxNnwwLChrW2I+PjJdfDApKzIwfDAsKGtbYj4+Ml18MCkrMjR8MCwoa1tiPj4yXXwwKSsyOHwwLChrW2I+PjJdfDApKzMyfDApfDA7a1tjPj4yXT1hO2lmKCEoa1tjPj4yXXwwKSl7Zj1rW2M+PjJdfDA7cj1kO3JldHVybiBmfDB9TGsoa1tiPj4yXXwwKTtpZigoa1tjPj4yXXwwKSE9MTAxKXtmPWtbYz4+Ml18MDtyPWQ7cmV0dXJuIGZ8MH1rW2M+PjJdPTA7Zj1rW2M+PjJdfDA7cj1kO3JldHVybiBmfDB9ZnVuY3Rpb24gSWsoYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wO2M9cjtyPXIrMTZ8MDtkPWMrNHwwO2I9YztrW2Q+PjJdPWE7a1tiPj4yXT1rW2Q+PjJdO3I9YztyZXR1cm4gKGtbKGtbYj4+Ml18MCkrMTY+PjJdfDApPT0wfDB9ZnVuY3Rpb24gSmsoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wO2Y9cjtyPXIrMTZ8MDtoPWYrMTJ8MDtkPWYrOHwwO2c9Zis0fDA7ZT1mO2tbaD4+Ml09YTtrW2Q+PjJdPWI7a1tnPj4yXT1jO2tbZT4+Ml09a1toPj4yXTtzd2l0Y2goa1tnPj4yXXwwKXtjYXNlIDA6e3dlKGtbZD4+Ml18MCxrWyhrW2U+PjJdfDApKzQ+PjJdfDAsLTEsLTEpO3I9ZjtyZXR1cm4gMH1jYXNlIDE6e3dlKGtbZD4+Ml18MCxrWyhrW2U+PjJdfDApKzE2Pj4yXXwwLGtbKGtbZT4+Ml18MCkrMjA+PjJdfDAsLTEpO3I9ZjtyZXR1cm4gMH1jYXNlIDI6e3RlKGtbZD4+Ml18MCxrWyhrW2U+PjJdfDApKzI0Pj4yXXwwKTtyPWY7cmV0dXJuIDB9Y2FzZSAzOnt0ZShrW2Q+PjJdfDAsa1soa1tlPj4yXXwwKSsyOD4+Ml18MCk7cj1mO3JldHVybiAwfWRlZmF1bHQ6e3RlKGtbZD4+Ml18MCxrWyhrW2U+PjJdfDApKzMyPj4yXXwwKTtyPWY7cmV0dXJuIDB9fXJldHVybiAwfWZ1bmN0aW9uIEtrKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MDtjPXI7cj1yKzE2fDA7Zj1jKzh8MDtkPWMrNHwwO2U9YztrW2Y+PjJdPWE7a1tkPj4yXT1iO2tbZT4+Ml09a1tmPj4yXTthPWtbKGtbZT4+Ml18MCkrMTI+PjJdfDA7Yj1rW2Q+PjJdfDA7a1tiPj4yXT1hO2tbYis0Pj4yXT0oKGF8MCk8MCk8PDMxPj4zMTtyPWM7cmV0dXJuIDB9ZnVuY3Rpb24gTGsoYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wO2Q9cjtyPXIrMTZ8MDtiPWQrNHwwO2M9ZDtrW2I+PjJdPWE7aWYoa1soa1tiPj4yXXwwKSs4Pj4yXXwwKXtrW2M+PjJdPWtba1tiPj4yXT4+Ml07YmNba1soa1soa1tjPj4yXXwwKSsxMj4+Ml18MCkrMTY+PjJdJjI1NV0oa1soa1tiPj4yXXwwKSs4Pj4yXXwwKXwwO2tbKGtbYj4+Ml18MCkrOD4+Ml09MH1VZChrWyhrW2I+PjJdfDApKzQ+PjJdfDApO2tbKGtbYj4+Ml18MCkrND4+Ml09MDtrWyhrW2I+PjJdfDApKzE2Pj4yXT0wO2tbKGtbYj4+Ml18MCkrMjA+PjJdPTA7a1soa1tiPj4yXXwwKSsyND4+Ml09MDtrWyhrW2I+PjJdfDApKzI4Pj4yXT0wO2tbKGtbYj4+Ml18MCkrMzI+PjJdPTA7a1soa1tiPj4yXXwwKSsxMj4+Ml09MDtyPWQ7cmV0dXJufWZ1bmN0aW9uIE1rKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxpPTAsaj0wLGw9MCxtPTAsbj0wO249cjtyPXIrNDh8MDtkPW4rMzJ8MDtlPW4rMjh8MDtmPW4rMjR8MDttPW4rMjB8MDtoPW4rMTZ8MDtqPW4rMTJ8MDtnPW4rOHwwO2w9bis0fDA7aT1uO2tbZD4+Ml09YTtrW2U+PjJdPWI7a1tmPj4yXT1jO2tbbT4+Ml09MDtpZighKGtbZD4+Ml18MCkpe2tba1tmPj4yXT4+Ml09MDttPWtbbT4+Ml18MDtyPW47cmV0dXJuIG18MH1rW2o+PjJdPTA7a1toPj4yXT0wO3doaWxlKDEpe2lmKChrW2g+PjJdfDApPj0oa1tkPj4yXXwwKSlicmVhaztjPSh1UihrWyhrW2U+PjJdfDApKyhrW2g+PjJdPDwyKT4+Ml18MCl8MCkrMXwwO2tbaj4+Ml09KGtbaj4+Ml18MCkrYztrW2g+PjJdPShrW2g+PjJdfDApKzF9Yz1TZCgoa1tkPj4yXTw8MikrKGtbaj4+Ml18MCl8MCl8MDtrW2c+PjJdPWM7a1trW2Y+PjJdPj4yXT1jO2lmKCEoa1tnPj4yXXwwKSl7a1ttPj4yXT03O209a1ttPj4yXXwwO3I9bjtyZXR1cm4gbXwwfWtbbD4+Ml09KGtbZz4+Ml18MCkrKGtbZD4+Ml08PDIpO2tbaD4+Ml09MDt3aGlsZSgxKXtpZigoa1toPj4yXXwwKT49KGtbZD4+Ml18MCkpYnJlYWs7Yz11UihrWyhrW2U+PjJdfDApKyhrW2g+PjJdPDwyKT4+Ml18MCl8MDtrW2k+PjJdPWM7a1soa1tnPj4yXXwwKSsoa1toPj4yXTw8Mik+PjJdPWtbbD4+Ml07YlMoa1tsPj4yXXwwLGtbKGtbZT4+Ml18MCkrKGtbaD4+Ml08PDIpPj4yXXwwLChrW2k+PjJdfDApKzF8MCl8MDtZayhrW2w+PjJdfDApO2tbbD4+Ml09KGtbbD4+Ml18MCkrKChrW2k+PjJdfDApKzEpO2tbaD4+Ml09KGtbaD4+Ml18MCkrMX1tPWtbbT4+Ml18MDtyPW47cmV0dXJuIG18MH1mdW5jdGlvbiBOayhhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGk9MCxqPTAsbD0wLG09MCxuPTA7bD1yO3I9ciszMnwwO2o9bDtlPWwrMjh8MDtuPWwrMjR8MDtmPWwrMjB8MDtnPWwrMTZ8MDtoPWwrMTJ8MDtpPWwrOHwwO209bCs0fDA7a1tuPj4yXT1hO2tbZj4+Ml09YjtrW2c+PjJdPWM7a1toPj4yXT1kO2I9dVIoa1tmPj4yXXwwKXwwO2tbbT4+Ml09YjtiPU9rKGtbbj4+Ml18MCxrW2Y+PjJdfDAsKGtbbT4+Ml18MCkrMXwwKXwwO2tbaT4+Ml09YjtpZihrW2k+PjJdfDApe2tba1tnPj4yXT4+Ml09a1tpPj4yXTtrW2U+PjJdPTA7bj1rW2U+PjJdfDA7cj1sO3JldHVybiBufDB9ZWxzZXtuPWtbaD4+Ml18MDtrW2o+PjJdPWtbZj4+Ml07UGsobiwyMDU5NSxqKTtrW2U+PjJdPTE7bj1rW2U+PjJdfDA7cj1sO3JldHVybiBufDB9cmV0dXJuIDB9ZnVuY3Rpb24gT2soYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wO2U9cjtyPXIrMTZ8MDtoPWUrMTJ8MDtnPWUrOHwwO2Y9ZSs0fDA7ZD1lO2tbaD4+Ml09YTtrW2c+PjJdPWI7a1tmPj4yXT1jO2I9UWsoa1toPj4yXXwwLGtbZz4+Ml18MCxrW2Y+PjJdfDApfDA7a1tkPj4yXT1iO2lmKCEoa1tkPj4yXXwwKSl7aD0wO3I9ZTtyZXR1cm4gaHwwfWg9a1soa1tkPj4yXXwwKSs4Pj4yXXwwO3I9ZTtyZXR1cm4gaHwwfWZ1bmN0aW9uIFBrKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wO2Q9cjtyPXIrMzJ8MDtlPWQrMjB8MDtnPWQrMTZ8MDtmPWQ7a1tlPj4yXT1hO2tbZz4+Ml09YjtVZChrW2tbZT4+Ml0+PjJdfDApO2tbZj4+Ml09YztiPVhkKGtbZz4+Ml18MCxmKXwwO2tba1tlPj4yXT4+Ml09YjtyPWQ7cmV0dXJufWZ1bmN0aW9uIFFrKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsbD0wO2w9cjtyPXIrMzJ8MDtkPWwrMjB8MDtlPWwrMTZ8MDtmPWwrMTJ8MDtnPWwrOHwwO2g9bCs0fDA7aj1sO2tbZT4+Ml09YTtrW2Y+PjJdPWI7a1tnPj4yXT1jO2lmKChrW2U+PjJdfDApIT0wPyhrWyhrW2U+PjJdfDApKzE2Pj4yXXwwKSE9MDowKXtiPVJrKGlba1tlPj4yXT4+MF18MCl8MDtrW2o+PjJdPWI7aj1nY1trW2o+PjJdJjI1NV0oa1tmPj4yXXwwLGtbZz4+Ml18MCl8MDtrW2g+PjJdPWo7aj1TayhrW2U+PjJdfDAsa1tmPj4yXXwwLGtbZz4+Ml18MCxrW2g+PjJdJihrWyhrW2U+PjJdfDApKzEyPj4yXXwwKS0xKXwwO2tbZD4+Ml09ajtqPWtbZD4+Ml18MDtyPWw7cmV0dXJuIGp8MH1rW2Q+PjJdPTA7aj1rW2Q+PjJdfDA7cj1sO3JldHVybiBqfDB9ZnVuY3Rpb24gUmsoYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wO2M9cjtyPXIrMTZ8MDtiPWMrNHwwO2Q9YztrW2Q+PjJdPWE7aWYoKGtbZD4+Ml18MCk9PTEpa1tiPj4yXT0xODA7ZWxzZSBrW2I+PjJdPTE4MTtyPWM7cmV0dXJuIGtbYj4+Ml18MH1mdW5jdGlvbiBTayhhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MCxsPTAsbT0wLG49MCxvPTAscD0wO3A9cjtyPXIrNDh8MDtoPXArMzJ8MDtlPXArMjh8MDtqPXArMjR8MDtsPXArMjB8MDtmPXArMTZ8MDtuPXArMTJ8MDttPXArOHwwO289cCs0fDA7Zz1wO2tbZT4+Ml09YTtrW2o+PjJdPWI7a1tsPj4yXT1jO2tbZj4+Ml09ZDthOmRvIGlmKGtbKGtbZT4+Ml18MCkrMTY+PjJdfDApe2tbZz4+Ml09KGtbKGtbZT4+Ml18MCkrMTY+PjJdfDApKyhrW2Y+PjJdPDwzKTtrW24+PjJdPWtbKGtbZz4+Ml18MCkrND4+Ml07a1ttPj4yXT1rW2tbZz4+Ml0+PjJdO2I9VGsoaVtrW2U+PjJdPj4wXXwwKXwwO2tbbz4+Ml09Yjt3aGlsZSgxKXtiPWtbbT4+Ml18MDtrW20+PjJdPWIrLTE7aWYoISgoYnwwKSE9MD8oa1tuPj4yXXwwKSE9MDowKSlicmVhayBhO2I9KGVjW2tbbz4+Ml0mMjU1XShrWyhrW24+PjJdfDApKzEyPj4yXXwwLGtbKGtbbj4+Ml18MCkrMTY+PjJdfDAsa1tqPj4yXXwwLGtbbD4+Ml18MCl8MCk9PTA7ZT1rW24+PjJdfDA7aWYoYilicmVhaztrW24+PjJdPWtbZT4+Ml19a1toPj4yXT1lO289a1toPj4yXXwwO3I9cDtyZXR1cm4gb3wwfXdoaWxlKDApO2tbaD4+Ml09MDtvPWtbaD4+Ml18MDtyPXA7cmV0dXJuIG98MH1mdW5jdGlvbiBUayhhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTA7Yz1yO3I9cisxNnwwO2I9Yys0fDA7ZD1jO2tbZD4+Ml09YTtpZigoa1tkPj4yXXwwKT09MSlrW2I+PjJdPTE0MjtlbHNlIGtbYj4+Ml09MTQzO3I9YztyZXR1cm4ga1tiPj4yXXwwfWZ1bmN0aW9uIFVrKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaT0wLGo9MDtpPXI7cj1yKzMyfDA7ZT1pKzE2fDA7Zj1pKzEyfDA7Zz1pKzh8MDtoPWkrNHwwO2o9aTtrW2Y+PjJdPWE7a1tnPj4yXT1iO2tbaD4+Ml09YztrW2o+PjJdPWQ7aWYoKGtbZz4+Ml18MCkhPShrW2o+PjJdfDApKXtrW2U+PjJdPTE7aj1rW2U+PjJdfDA7cj1pO3JldHVybiBqfDB9ZWxzZXtqPXZSKGtbZj4+Ml18MCxrW2g+PjJdfDAsa1tnPj4yXXwwKXwwO2tbZT4+Ml09ajtqPWtbZT4+Ml18MDtyPWk7cmV0dXJuIGp8MH1yZXR1cm4gMH1mdW5jdGlvbiBWayhhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGk9MCxqPTA7aT1yO3I9ciszMnwwO2U9aSsxNnwwO2Y9aSsxMnwwO2c9aSs4fDA7aD1pKzR8MDtqPWk7a1tmPj4yXT1hO2tbZz4+Ml09YjtrW2g+PjJdPWM7a1tqPj4yXT1kO2lmKChrW2c+PjJdfDApIT0oa1tqPj4yXXwwKSl7a1tlPj4yXT0xO2o9a1tlPj4yXXwwO3I9aTtyZXR1cm4ganwwfWVsc2V7aj1vUihrW2Y+PjJdfDAsa1toPj4yXXwwLGtbZz4+Ml18MCl8MDtrW2U+PjJdPWo7aj1rW2U+PjJdfDA7cj1pO3JldHVybiBqfDB9cmV0dXJuIDB9ZnVuY3Rpb24gV2soYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MDtmPXI7cj1yKzE2fDA7Zz1mKzEyfDA7Yz1mKzh8MDtlPWYrNHwwO2Q9ZjtrW2c+PjJdPWE7a1tjPj4yXT1iO2tbZT4+Ml09a1tnPj4yXTtrW2Q+PjJdPTA7aWYoKGtbYz4+Ml18MCk8PTApe2c9dVIoa1tlPj4yXXwwKXwwO2tbYz4+Ml09Z313aGlsZSgxKXtiPWtbZD4+Ml18MDtpZigoa1tjPj4yXXwwKTw9MClicmVhazthPWI8PDNea1tkPj4yXTtnPWtbZT4+Ml18MDtrW2U+PjJdPWcrMTtrW2Q+PjJdPWFeaVtnPj4wXTtrW2M+PjJdPShrW2M+PjJdfDApKy0xfXI9ZjtyZXR1cm4gYiYyMTQ3NDgzNjQ3fDB9ZnVuY3Rpb24gWGsoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MDtmPXI7cj1yKzE2fDA7Zz1mKzEyfDA7Yz1mKzh8MDtkPWYrNHwwO2U9ZjtrW2c+PjJdPWE7a1tjPj4yXT1iO2tbZD4+Ml09MDtrW2U+PjJdPWtbZz4+Ml07d2hpbGUoMSl7Zz1rW2M+PjJdfDA7a1tjPj4yXT1nKy0xO2I9a1tkPj4yXXwwO2lmKChnfDApPD0wKWJyZWFrO2E9Yjw8M15rW2Q+PjJdO2c9a1tlPj4yXXwwO2tbZT4+Ml09ZysxO2tbZD4+Ml09YV5pW2c+PjBdfXI9ZjtyZXR1cm4gYiYyMTQ3NDgzNjQ3fDB9ZnVuY3Rpb24gWWsoYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wLGU9MCxmPTAsZz0wO2c9cjtyPXIrMTZ8MDtjPWcrOHwwO2Y9ZysxMnwwO2Q9Zys0fDA7ZT1nO2tbYz4+Ml09YTtpW2Y+PjBdPWlba1tjPj4yXT4+MF18MDtpZigoKChpW2Y+PjBdfDApIT05MT8oaVtmPj4wXXwwKSE9Mzk6MCk/KGlbZj4+MF18MCkhPTM0OjApPyhpW2Y+PjBdfDApIT05NjowKXtyPWc7cmV0dXJufWtbZD4+Ml09MTtrW2U+PjJdPTA7aWYoKGlbZj4+MF18MCk9PTkxKWlbZj4+MF09OTM7d2hpbGUoMSl7aWYoIShpWyhrW2M+PjJdfDApKyhrW2Q+PjJdfDApPj4wXXwwKSlicmVhazthPWtbZD4+Ml18MDtiPWErMXwwO2lmKChpWyhrW2M+PjJdfDApKyhrW2Q+PjJdfDApPj4wXXwwKSE9KGlbZj4+MF18MCkpe2tbZD4+Ml09YjthPWlbKGtbYz4+Ml18MCkrYT4+MF18MDtiPWtbZT4+Ml18MDtrW2U+PjJdPWIrMTtpWyhrW2M+PjJdfDApK2I+PjBdPWE7Y29udGludWV9aWYoKGlbKGtbYz4+Ml18MCkrYj4+MF18MCkhPShpW2Y+PjBdfDApKWJyZWFrO2E9aVtmPj4wXXwwO2I9a1tlPj4yXXwwO2tbZT4+Ml09YisxO2lbKGtbYz4+Ml18MCkrYj4+MF09YTtrW2Q+PjJdPShrW2Q+PjJdfDApKzJ9aVsoa1tjPj4yXXwwKSsoa1tlPj4yXXwwKT4+MF09MDtyPWc7cmV0dXJufWZ1bmN0aW9uIFprKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxpPTAsaj0wLGw9MCxtPTAsbj0wO2c9cjtyPXIrMzJ8MDtuPWcrMjB8MDttPWcrMTZ8MDtsPWcrMTJ8MDtqPWcrOHwwO2k9Zys0fDA7aD1nO2tbbj4+Ml09YTtrW20+PjJdPWI7a1tsPj4yXT1jO2tbaj4+Ml09ZDtrW2k+PjJdPWU7a1toPj4yXT1mO2Y9VnAoMSxrW24+PjJdfDAsa1ttPj4yXXwwLGtbbD4+Ml18MCxrW2o+PjJdfDAsa1tpPj4yXXwwLGtbaD4+Ml18MCl8MDtyPWc7cmV0dXJuIGZ8MH1mdW5jdGlvbiBfayhhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaT0wLGo9MCxsPTAsbT0wLG49MDtnPXI7cj1yKzMyfDA7bj1nKzIwfDA7bT1nKzE2fDA7bD1nKzEyfDA7aj1nKzh8MDtpPWcrNHwwO2g9ZztrW24+PjJdPWE7a1ttPj4yXT1iO2tbbD4+Ml09YztrW2o+PjJdPWQ7a1tpPj4yXT1lO2tbaD4+Ml09ZjtmPVZwKDAsa1tuPj4yXXwwLGtbbT4+Ml18MCxrW2w+PjJdfDAsa1tqPj4yXXwwLGtbaT4+Ml18MCxrW2g+PjJdfDApfDA7cj1nO3JldHVybiBmfDB9ZnVuY3Rpb24gJGsoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLG09MCxuPTAsbz0wLHE9MCxzPTAsdD0wLHU9MCx2PTA7dT1yO3I9cis2NHwwO3E9dSs0OHwwO3Y9dSs0NHwwO3M9dSs0MHwwO209dSszNnwwO2Q9dSszMnwwO2U9dSsyOHwwO2o9dSsyNHwwO2Y9dSsyMHwwO2c9dSsxNnwwO2g9dSsxMnwwO2M9dSs4fDA7bj11KzR8MDt0PXU7a1t2Pj4yXT1hO2tbcz4+Ml09YjtrW20+PjJdPWtbdj4+Ml07a1tlPj4yXT0tMTtrW2o+PjJdPS0xO2tbZj4+Ml09LTE7a1tnPj4yXT0tMTtrWyhrW3M+PjJdfDApKzIwPj4yXT0wO3BbKGtbcz4+Ml18MCkrNDA+PjNdPTUuMGU2O2tbZD4+Ml09MDthOndoaWxlKDEpe2lmKChrW2Q+PjJdfDApPj0oa1trW3M+PjJdPj4yXXwwKSlicmVhaztrW24+PjJdPShrWyhrW3M+PjJdfDApKzQ+PjJdfDApKygoa1tkPj4yXXwwKSoxMnwwKTtiPWtbbj4+Ml18MDtiOmRvIGlmKCEobFsoa1tuPj4yXXwwKSs1Pj4wXXwwKSl7aWYoKGxbYis0Pj4wXXwwKT09NjQpe289NTticmVhayBhfX1lbHNle2lmKChrW2I+PjJdfDApPDApYj0xO2Vsc2UgYj0oa1trW24+PjJdPj4yXXwwKT09KChrWyhrW20+PjJdfDApKzI0Pj4yXXwwKSsxfDApO2tbYz4+Ml09YiYxO2lmKChrW2U+PjJdfDApPDA/KChrW2M+PjJdfDApIT0wPyhsWyhrW24+PjJdfDApKzQ+PjBdfDApPT0yOjApOjApe2tbKGtbcz4+Ml18MCkrMjA+PjJdPTE7cFsoa1tzPj4yXXwwKSs0MD4+M109MS4wO2tbZT4+Ml09a1tkPj4yXX1pZigoKGxbKGtbbj4+Ml18MCkrND4+MF18MCk9PTY0PyhrW2tbbj4+Ml0+PjJdfDApPj0wOjApPyhrW2tbbj4+Ml0+PjJdfDApPD0oa1soa1ttPj4yXXwwKSsyND4+Ml18MCk6MCl7a1soa1tzPj4yXXwwKSsyMD4+Ml09Misoa1trW24+PjJdPj4yXXwwKTtwWyhrW3M+PjJdfDApKzQwPj4zXT0yLjA7a1tlPj4yXT1rW2Q+PjJdfWlmKChsWyhrW24+PjJdfDApKzQ+PjBdfDApPT0yPyhrW2tbbj4+Ml0+PjJdfDApPT0oKGtbKGtbbT4+Ml18MCkrMjQ+PjJdfDApKzJ8MCk6MClrW2o+PjJdPWtbZD4+Ml07aWYoa1tjPj4yXXwwKXN3aXRjaChsWyhrW24+PjJdfDApKzQ+PjBdfDApe2Nhc2UgNDpjYXNlIDMyOntrW2Y+PjJdPWtbZD4+Ml07YnJlYWsgYn1jYXNlIDE2OmNhc2UgODp7a1tnPj4yXT1rW2Q+PjJdO2JyZWFrIGJ9ZGVmYXVsdDpicmVhayBifX13aGlsZSgwKTtrW2Q+PjJdPShrW2Q+PjJdfDApKzF9aWYoKG98MCk9PTUpe2tbKGtbcz4+Ml18MCkrMjA+PjJdPTA7cFsoa1tzPj4yXXwwKSs0MD4+M109MS5lKzUwO1RwKGtbcz4+Ml18MCwwLDI2MjE0NCk7a1txPj4yXT0wO3Y9a1txPj4yXXwwO3I9dTtyZXR1cm4gdnwwfWlmKChrWyhrW3M+PjJdfDApKzIwPj4yXXwwKT09MSlVcChrW3M+PjJdfDApO2tbaD4+Ml09MTtpZigoa1tlPj4yXXwwKT49MCl7dj1rW2g+PjJdfDA7a1toPj4yXT12KzE7a1soa1soa1tzPj4yXXwwKSsxNj4+Ml18MCkrKGtbZT4+Ml08PDMpPj4yXT12O2lbKGtbKGtbcz4+Ml18MCkrMTY+PjJdfDApKyhrW2U+PjJdPDwzKSs0Pj4wXT0xfWlmKChrW2o+PjJdfDApPj0wKXt2PShrW3M+PjJdfDApKzIwfDA7a1t2Pj4yXT1rW3Y+PjJdfDY1NTM2O3Y9a1toPj4yXXwwO2tbaD4+Ml09disxO2tbKGtbKGtbcz4+Ml18MCkrMTY+PjJdfDApKyhrW2o+PjJdPDwzKT4+Ml09dn1pZigoa1tmPj4yXXwwKT49MCl7dj0oa1tzPj4yXXwwKSsyMHwwO2tbdj4+Ml09a1t2Pj4yXXwxMzEwNzI7dj1rW2g+PjJdfDA7a1toPj4yXT12KzE7a1soa1soa1tzPj4yXXwwKSsxNj4+Ml18MCkrKGtbZj4+Ml08PDMpPj4yXT12fWlmKChrW2c+PjJdfDApPj0wKXt2PShrW3M+PjJdfDApKzIwfDA7a1t2Pj4yXT1rW3Y+PjJdfDI2MjE0NDt2PWtbaD4+Ml18MDtrW2g+PjJdPXYrMTtrWyhrWyhrW3M+PjJdfDApKzE2Pj4yXXwwKSsoa1tnPj4yXTw8Myk+PjJdPXZ9ZG8gaWYoKGtbKGtbcz4+Ml18MCkrOD4+Ml18MCk9PTEpe2tbdD4+Ml09a1soa1tzPj4yXXwwKSsxMj4+Ml07aWYoKGtba1t0Pj4yXT4+Ml18MCk+PTA/KGtba1t0Pj4yXT4+Ml18MCkhPSgoa1soa1ttPj4yXXwwKSsyND4+Ml18MCkrMXwwKTowKWJyZWFrO2I9KGtbcz4+Ml18MCkrMjR8MDtpZihpWyhrW3Q+PjJdfDApKzQ+PjBdfDApa1tiPj4yXT0yMzYyNDtlbHNlIGtbYj4+Ml09MjM2Mjk7a1soa1tzPj4yXXwwKSszMj4+Ml09MX13aGlsZSgwKTtrW3E+PjJdPTA7dj1rW3E+PjJdfDA7cj11O3JldHVybiB2fDB9ZnVuY3Rpb24gYWwoYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wLGU9MDtkPXI7cj1yKzE2fDA7ZT1kKzh8MDtjPWQrNHwwO2I9ZDtrW2U+PjJdPWE7a1tjPj4yXT1rW2U+PjJdO2tbYj4+Ml09MDt3aGlsZSgxKXtpZigoa1tiPj4yXXwwKT49NDApYnJlYWs7ZmUoa1soa1tjPj4yXXwwKSs1Nisoa1tiPj4yXTw8Mik+PjJdfDApfDA7a1tiPj4yXT0oa1tiPj4yXXwwKSsxfVVkKGtbKGtbYz4+Ml18MCkrMjQwPj4yXXwwKTtVZChrWyhrW2M+PjJdfDApKzIxNj4+Ml18MCk7VWQoa1soa1tjPj4yXXwwKSsyMjA+PjJdfDApO1VkKGtbKGtbYz4+Ml18MCkrNDA+PjJdfDApO1VkKGtbKGtbYz4+Ml18MCkrNDQ+PjJdfDApO2JjW2tbKGtba1soa1tjPj4yXXwwKSszNj4+Ml0+PjJdfDApKzg+PjJdJjI1NV0oa1soa1tjPj4yXXwwKSszNj4+Ml18MCl8MDtVZChrW2M+PjJdfDApO3I9ZDtyZXR1cm4gMH1mdW5jdGlvbiBibChhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wLGk9MCxqPTAsbD0wLG09MCxuPTA7bT1yO3I9cis2NHwwO2g9bSszMnwwO2c9bSsyNHwwO2o9bSsxNnwwO2k9bSs4fDA7Zj1tO2I9bSs1NnwwO2Q9bSs1MnwwO2U9bSs0OHwwO2w9bSs0NHwwO2M9bSs0MHwwO2tbYj4+Ml09YTtrW2Q+PjJdPWtbYj4+Ml07a1tlPj4yXT0wO2tbbD4+Ml09a1soa1tkPj4yXXwwKSsxNj4+Ml07a1tjPj4yXT1rWyhrW2Q+PjJdfDApKzEyPj4yXTtpZighKGtbKGtbZD4+Ml18MCkrNDA+PjJdfDApKXthPWtbYz4+Ml18MDtuPWtbKGtbZD4+Ml18MCkrMjA+PjJdfDA7a1tmPj4yXT1rW2w+PjJdO2tbZis0Pj4yXT1uO3hsKGUsYSwyMzgyNCxmKX1uPWtbYz4+Ml18MDtmPWtbKGtbZD4+Ml18MCkrMjA+PjJdfDA7a1tpPj4yXT1rW2w+PjJdO2tbaSs0Pj4yXT1mO3hsKGUsbiwyMzg2MSxpKTtuPWtbYz4+Ml18MDtpPWtbKGtbZD4+Ml18MCkrMjA+PjJdfDA7a1tqPj4yXT1rW2w+PjJdO2tbais0Pj4yXT1pO3hsKGUsbiwyMzg5OSxqKTtuPWtbYz4+Ml18MDtqPWtbKGtbZD4+Ml18MCkrMjA+PjJdfDA7a1tnPj4yXT1rW2w+PjJdO2tbZys0Pj4yXT1qO3hsKGUsbiwyMzkzNSxnKTtuPWtbYz4+Ml18MDtqPWtbKGtbZD4+Ml18MCkrMjA+PjJdfDA7a1toPj4yXT1rW2w+PjJdO2tbaCs0Pj4yXT1qO3hsKGUsbiwyMzk3MixoKTtpZighKGtbZT4+Ml18MCkpe249YWwoa1tiPj4yXXwwKXwwO3I9bTtyZXR1cm4gbnwwfWVsc2V7bj1rW2U+PjJdfDA7cj1tO3JldHVybiBufDB9cmV0dXJuIDB9ZnVuY3Rpb24gY2woYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wO2U9cjtyPXIrMTZ8MDtkPWUrMTJ8MDtmPWUrNHwwO2M9ZTtrW2UrOD4+Ml09YTtrW2Y+PjJdPWI7Yj1TZCg5Nil8MDtrW2M+PjJdPWI7a1trW2Y+PjJdPj4yXT1iO2lmKGtbYz4+Ml18MCl7Yz1rW2M+PjJdfDA7YT1jKzk2fDA7ZG97a1tjPj4yXT0wO2M9Yys0fDB9d2hpbGUoKGN8MCk8KGF8MCkpO2tbZD4+Ml09MDtmPWtbZD4+Ml18MDtyPWU7cmV0dXJuIGZ8MH1lbHNle2tbZD4+Ml09NztmPWtbZD4+Ml18MDtyPWU7cmV0dXJuIGZ8MH1yZXR1cm4gMH1mdW5jdGlvbiBkbChhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTA7Yj1yO3I9cisxNnwwO2Q9Yis0fDA7Yz1iO2tbZD4+Ml09YTtrW2M+PjJdPWtbZD4+Ml07ZmUoa1soa1tjPj4yXXwwKSs4Pj4yXXwwKXwwO3FwKGtbKGtbYz4+Ml18MCkrMTI+PjJdfDApO1NwKGtbYz4+Ml18MCk7VWQoa1soa1tjPj4yXXwwKSs0ND4+Ml18MCk7Sm0oa1soa1tjPj4yXXwwKSs5Mj4+Ml18MCk7VWQoa1tjPj4yXXwwKTtyPWI7cmV0dXJuIDB9ZnVuY3Rpb24gZWwoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsbT0wLG49MCxvPTAscD0wLHE9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MDtEPXI7cj1yKzExMnwwO0I9RCszMnwwO0E9RDt0PUQrMTA4fDA7dT1EKzEwNHwwO2Y9RCsxMDB8MDttPUQrOTZ8MDtnPUQrODh8MDt6PUQrODR8MDtDPUQrODB8MDtuPUQrNzZ8MDt2PUQrNzJ8MDt3PUQrNjh8MDtwPUQrNjR8MDtxPUQrNjB8MDt4PUQrNTZ8MDt5PUQrNTJ8MDtoPUQrNDh8MDtvPUQrNDR8MDtzPUQrNDB8MDtrW3U+PjJdPWE7a1tmPj4yXT1iO2tbbT4+Ml09YztrW0QrOTI+PjJdPWQ7a1tnPj4yXT1lO2tbej4+Ml09MDtrW3Y+PjJdPWtba1t1Pj4yXT4+Ml07a1t3Pj4yXT1rW3U+PjJdO2tbcD4+Ml09MDtrW3E+PjJdPTA7a1t4Pj4yXT0wO2tbeT4+Ml09MDtrW24+PjJdPWtbZj4+Ml0mNjU1MzU7a1toPj4yXT0wO2lmKGtbbj4+Ml18MCl7YT1rW2g+PjJdfDA7a1toPj4yXT1hKzE7a1twPj4yXT1rWyhrW2c+PjJdfDApKyhhPDwyKT4+Ml19aWYoa1tmPj4yXSY2NTUzNil7YT1rW2g+PjJdfDA7a1toPj4yXT1hKzE7a1txPj4yXT1rWyhrW2c+PjJdfDApKyhhPDwyKT4+Ml19aWYoa1tmPj4yXSYxMzEwNzIpe2E9a1toPj4yXXwwO2tbaD4+Ml09YSsxO2tbeD4+Ml09a1soa1tnPj4yXXwwKSsoYTw8Mik+PjJdfWlmKGtbZj4+Ml0mMjYyMTQ0KXthPWtbaD4+Ml18MDtrW2g+PjJdPWErMTtrW3k+PjJdPWtbKGtbZz4+Ml18MCkrKGE8PDIpPj4yXX1mZShrWyhrW3c+PjJdfDApKzg+PjJdfDApfDA7VWQoa1soa1t3Pj4yXXwwKSs0ND4+Ml18MCk7Sm0oa1soa1t3Pj4yXXwwKSs5Mj4+Ml18MCk7cXAoa1soa1t3Pj4yXXwwKSsxMj4+Ml18MCk7Zj0oa1t1Pj4yXXwwKSs0fDA7Zz1mKzkyfDA7ZG97a1tmPj4yXT0wO2Y9Zis0fDB9d2hpbGUoKGZ8MCk8KGd8MCkpO2E9cnAoa1t4Pj4yXXwwLDAsLTIxNDc0ODM2NDgpfDA7ZD0oa1t3Pj4yXXwwKSs3MnwwO2tbZD4+Ml09YTtrW2QrND4+Ml09TDtkPXJwKGtbeT4+Ml18MCwtMSwyMTQ3NDgzNjQ3KXwwO2E9KGtbdz4+Ml18MCkrODB8MDtrW2E+PjJdPWQ7a1thKzQ+PjJdPUw7aWYoa1ttPj4yXXwwKWlbKGtbdz4+Ml18MCkrNTI+PjBdPShpW2tbbT4+Ml0+PjBdfDApPT02ODtlbHNlIGlbKGtbdz4+Ml18MCkrNTI+PjBdPWlbKGtbdj4+Ml18MCkrMjMxPj4wXXwwO2pbKGtbdz4+Ml18MCkrND4+MV09a1tuPj4yXTtkbyBpZigoa1tuPj4yXXwwKSE9MSYoa1tuPj4yXXwwKSE9MCl7a1tvPj4yXT0oa1tuPj4yXXwwKS0yO209amUoa1twPj4yXXwwKXwwO2tbcz4+Ml09bTtpZigoa1tzPj4yXXwwKT09MD8ob2Uoa1twPj4yXXwwKXwwKSE9NTowKXtrW3Q+PjJdPTc7Qz1rW3Q+PjJdfDA7cj1EO3JldHVybiBDfDB9a1soa1t3Pj4yXXwwKSsxNj4+Ml09MDtpZihrW3E+PjJdfDApe3E9bWUoa1txPj4yXXwwKXwwO2tbKGtbdz4+Ml18MCkrMTY+PjJdPXF9cz1zcChrWyhrW3Y+PjJdfDApKzM2Pj4yXXwwLGtbKGtbdz4+Ml18MCkrMTY+PjJdfDAsa1soa1t2Pj4yXXwwKSsyOD4+Ml18MCxsWyhrW3Y+PjJdfDApKzIyOD4+MF18MCxrWyhrW3Y+PjJdfDApKzI0Pj4yXXwwLGtbbz4+Ml18MCxrW3M+PjJdfDAsLTEsKGtbdz4+Ml18MCkrMTJ8MCwoa1t2Pj4yXXwwKSs4fDApfDA7a1t6Pj4yXT1zO2lmKGtbej4+Ml18MCl7a1t0Pj4yXT1rW3o+PjJdO0M9a1t0Pj4yXXwwO3I9RDtyZXR1cm4gQ3wwfXM9dHAoa1t3Pj4yXXwwKXwwO2tbej4+Ml09cztJbShrW3Y+PjJdfDApO2lmKCEoa1t6Pj4yXXwwKSl7a1soa1t3Pj4yXXwwKSs0MD4+Ml09a1soa1t3Pj4yXXwwKSs0ND4+Ml07cz0oa1t3Pj4yXXwwKSszMnwwO2tbcz4+Ml09MDtrW3MrND4+Ml09MDticmVha31rW3Q+PjJdPWtbej4+Ml07Qz1rW3Q+PjJdfDA7cj1EO3JldHVybiBDfDB9d2hpbGUoMCk7ZG8gaWYoIShrW24+PjJdfDApKXtmPWtbKGtbdj4+Ml18MCkrMjE2Pj4yXXwwO2c9a1t3Pj4yXXwwO2lmKChrW3g+PjJdfDApIT0wfChrW3k+PjJdfDApIT0wKXtxPWcrNzJ8MDtwPWtbcT4+Ml18MDtxPWtbcSs0Pj4yXXwwO3g9KGtbdz4+Ml18MCkrODB8MDtzPWtbeD4+Ml18MDt4PWtbeCs0Pj4yXXwwO0I9KGxbKGtbdz4+Ml18MCkrNTI+PjBdfDApIT0wPzIzNjI0OjIzNjI5O2tbQT4+Ml09Zjt5PUErOHwwO2tbeT4+Ml09cDtrW3krND4+Ml09cTt5PUErMTZ8MDtrW3k+PjJdPXM7a1t5KzQ+PjJdPXg7a1tBKzI0Pj4yXT1CO0I9WWQoMjM2MzMsQSl8MDtrW0M+PjJdPUJ9ZWxzZXtBPShsW2crNTI+PjBdfDApIT0wPzIzNjI0OjIzNjI5O2tbQj4+Ml09ZjtrW0IrND4+Ml09QTtCPVlkKDIzNjk1LEIpfDA7a1tDPj4yXT1CfWlmKGtbQz4+Ml18MCl7Qj1sZihrWyhrW3Y+PjJdfDApKzEyPj4yXXwwLGtbQz4+Ml18MCwtMSwoa1t3Pj4yXXwwKSs4fDAsMCl8MDtrW3o+PjJdPUI7VWQoa1tDPj4yXXwwKTticmVha31lbHNle2tbej4+Ml09NzticmVha319ZWxzZSBpZigoa1tuPj4yXXwwKT09MT8oQz1QbihrW3c+PjJdfDAsKGtbdz4+Ml18MCkrOHwwKXwwLGtbej4+Ml09Qywoa1t6Pj4yXXwwKT09MCk6MCl7Qz1ZZShrWyhrW3c+PjJdfDApKzg+PjJdfDAsMSxrW3A+PjJdfDApfDA7a1t6Pj4yXT1DfXdoaWxlKDApO2lmKGtbej4+Ml18MCl7a1t0Pj4yXT1rW3o+PjJdO0M9a1t0Pj4yXXwwO3I9RDtyZXR1cm4gQ3wwfWVsc2V7Qz1mbChrW3U+PjJdfDApfDA7a1t0Pj4yXT1DO0M9a1t0Pj4yXXwwO3I9RDtyZXR1cm4gQ3wwfXJldHVybiAwfWZ1bmN0aW9uIGZsKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MCxlPTA7ZT1yO3I9cisxNnwwO2I9ZSs4fDA7ZD1lKzR8MDtjPWU7a1tiPj4yXT1hO2tbYz4+Ml09a1tiPj4yXTtpZigoalsoa1tjPj4yXXwwKSs0Pj4xXXwwKSE9MT8oalsoa1tjPj4yXXwwKSs0Pj4xXXwwKSE9MDowKXtjPXBwKGtbYj4+Ml18MCl8MDtrW2Q+PjJdPWM7ZD1rW2Q+PjJdfDA7cj1lO3JldHVybiBkfDB9YT0xMDAhPShEZShrWyhrW2M+PjJdfDApKzg+PjJdfDApfDApO2I9a1tjPj4yXXwwO2lmKGEpe2lbYis2Pj4wXT0xO2M9Z2Uoa1soa1tjPj4yXXwwKSs4Pj4yXXwwKXwwO2tbZD4+Ml09YztkPWtbZD4+Ml18MDtyPWU7cmV0dXJuIGR8MH1lbHNle2E9TmUoa1tiKzg+PjJdfDAsMCl8MDtjPShrW2M+PjJdfDApKzMyfDA7a1tjPj4yXT1hO2tbYys0Pj4yXT1MO2tbZD4+Ml09MDtkPWtbZD4+Ml18MDtyPWU7cmV0dXJuIGR8MH1yZXR1cm4gMH1mdW5jdGlvbiBnbChhKXthPWF8MDt2YXIgYj0wLGM9MDtjPXI7cj1yKzE2fDA7Yj1jO2tbYj4+Ml09YTtyPWM7cmV0dXJuIGxbKGtbYj4+Ml18MCkrNj4+MF18MHwwfWZ1bmN0aW9uIGhsKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxpPTAsaj0wLGw9MDtqPXI7cj1yKzMyfDA7bD1qKzI0fDA7ZD1qKzIwfDA7ZT1qKzE2fDA7aT1qKzEyfDA7aD1qKzh8MDtnPWorNHwwO2Y9ajtrW2w+PjJdPWE7a1tkPj4yXT1iO2tbZT4+Ml09YztrW2k+PjJdPTA7a1toPj4yXT1rW2w+PjJdO2tbZz4+Ml09a1trW2w+PjJdPj4yXTtpZigoa1tlPj4yXXwwKT09KChrWyhrW2c+PjJdfDApKzI0Pj4yXXwwKSsxfDApKXtsPShrW2g+PjJdfDApKzMyfDA7dWUoa1tkPj4yXXwwLGtbbD4+Ml18MCxrW2wrND4+Ml18MCk7bD1rW2k+PjJdfDA7cj1qO3JldHVybiBsfDB9aWYoKGtbZT4+Ml18MCk9PShrWyhrW2c+PjJdfDApKzI0Pj4yXXwwKSl7cGUoa1tkPj4yXXwwLGgsNCwtMSk7bD1rW2k+PjJdfDA7cj1qO3JldHVybiBsfDB9aWYoKGtbZT4+Ml18MCk9PSgoa1soa1tnPj4yXXwwKSsyND4+Ml18MCkrMnwwKT8oa1soa1toPj4yXXwwKSsxMj4+Ml18MCkhPTA6MCl7bD1rWyhrW2g+PjJdfDApKzE2Pj4yXXwwO3VlKGtbZD4+Ml18MCxsLCgobHwwKTwwKTw8MzE+PjMxKTtsPWtbaT4+Ml18MDtyPWo7cmV0dXJuIGx8MH1sPURuKDAsa1toPj4yXXwwKXwwO2tbaT4+Ml09bDtpZihrW2k+PjJdfDApe2w9a1tpPj4yXXwwO3I9ajtyZXR1cm4gbHwwfWlmKChrW2U+PjJdfDApPT0oKGtbKGtbZz4+Ml18MCkrMjQ+PjJdfDApKzJ8MCkpe2tbZj4+Ml09MDtpZihrWyhrW2c+PjJdfDApKzQ0Pj4yXXwwKXtsPU1lKGtbKGtbaD4+Ml18MCkrOD4+Ml18MCwoa1soa1tnPj4yXXwwKSsyND4+Ml18MCkrMXwwKXwwO2tbZj4+Ml09bH10ZShrW2Q+PjJdfDAsa1tmPj4yXXwwKTtsPWtbaT4+Ml18MDtyPWo7cmV0dXJuIGx8MH1lbHNle2w9SWUoa1soa1toPj4yXXwwKSs4Pj4yXXwwKXwwO2lmKChsfDApPD0oKGtbZT4+Ml18MCkrMXwwKSl7bD1rW2k+PjJdfDA7cj1qO3JldHVybiBsfDB9bD1rW2Q+PjJdfDA7eWUobCxQZShrWyhrW2g+PjJdfDApKzg+PjJdfDAsKGtbZT4+Ml18MCkrMXwwKXwwKTtsPWtbaT4+Ml18MDtyPWo7cmV0dXJuIGx8MH1yZXR1cm4gMH1mdW5jdGlvbiBpbChhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTA7Yz1yO3I9cisxNnwwO2Y9Yys4fDA7ZT1jKzR8MDtkPWM7a1tmPj4yXT1hO2tbZT4+Ml09YjtrW2Q+PjJdPWtbZj4+Ml07ZD0oa1tkPj4yXXwwKSszMnwwO2E9a1tkKzQ+PjJdfDA7Yj1rW2U+PjJdfDA7a1tiPj4yXT1rW2Q+PjJdO2tbYis0Pj4yXT1hO3I9YztyZXR1cm4gMH1mdW5jdGlvbiBqbChhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGk9MDtlPXI7cj1yKzE2fDA7aT1lKzEyfDA7aD1lKzh8MDtnPWUrNHwwO2Y9ZTtrW2k+PjJdPWE7a1toPj4yXT1iO2tbZz4+Ml09YztrW2Y+PjJdPWQ7YT1RbyhrW2k+PjJdfDAsa1toPj4yXXwwLGtbZz4+Ml18MCxrW2Y+PjJdfDApfDA7cj1lO3JldHVybiBhfDB9ZnVuY3Rpb24ga2woYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wO2I9cjtyPXIrMTZ8MDtkPWIrNHwwO2M9YjtrW2Q+PjJdPWE7a1tjPj4yXT1rW2Q+PjJdO2tbKGtbYz4+Ml18MCkrNTI+PjJdPTA7YT12bChrW2M+PjJdfDApfDA7cj1iO3JldHVybiBhfDB9ZnVuY3Rpb24gbGwoYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wLGU9MCxmPTAsZz0wO2Y9cjtyPXIrMzJ8MDtnPWYrMjB8MDtkPWYrMTJ8MDtlPWYrOHwwO2M9Zis0fDA7Yj1mO2tbZz4+Ml09YTtrW2YrMTY+PjJdPTY0O2tbZD4+Ml09a1tnPj4yXTthPXdsKGtbZD4+Ml18MCl8MDtrW2U+PjJdPWE7aWYoKCgoKGtbZT4+Ml18MCk9PTA/KGtbKGtbZD4+Ml18MCkrNTI+PjJdfDApPj4+MD40OjApPyhrWyhrW2Q+PjJdfDApKzQ4Pj4yXXwwKSE9MDowKT8oa1soa1tkPj4yXXwwKSs0OD4+Ml18MCkhPTI1NTowKT8oa1tjPj4yXT0wLGc9cG8oa1tkPj4yXXwwLGMpfDAsa1tlPj4yXT1nLGc9aGEoa1soa1tkPj4yXXwwKSs1Mj4+Ml18MCxrW2M+PjJdfDApfDAsa1tiPj4yXT1nLGtbYj4+Ml09KGtbYj4+Ml18MCkrKChrW2I+PjJdfDApLzJ8MCksKGtbYj4+Ml18MCk+NjQpOjApe2c9cW8oa1tkPj4yXXwwLGtbYj4+Ml18MCxrWyhrW2Q+PjJdfDApKzQ4Pj4yXXwwKXwwO2tbZT4+Ml09Z31JbShrW2Q+PjJdfDApO3I9ZjtyZXR1cm4ga1tlPj4yXXwwfWZ1bmN0aW9uIG1sKGEpe2E9YXwwO3ZhciBiPTA7Yj1yO3I9cisxNnwwO2tbYj4+Ml09YTtyPWI7cmV0dXJuIDB9ZnVuY3Rpb24gbmwoYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wO2I9cjtyPXIrMTZ8MDtkPWIrNHwwO2M9YjtrW2Q+PjJdPWE7a1tjPj4yXT1rW2Q+PjJdO3RsKGtbYz4+Ml18MCk7cj1iO3JldHVybiAwfWZ1bmN0aW9uIG9sKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGk9MCxqPTAsbD0wO2w9cjtyPXIrNjR8MDtoPWwrNjB8MDtmPWwrNDh8MDtpPWwrNDR8MDtqPWwrOHwwO2c9bDtrW2wrNTY+PjJdPWE7a1tsKzUyPj4yXT1iO2tbZj4+Ml09YztrW2k+PjJdPWQ7a1tsKzQwPj4yXT1lO2tbaj4+Ml09a1s1MjBdO2tbais0Pj4yXT1rWzUyMV07a1tqKzg+PjJdPWtbNTIyXTtrW2orMTI+PjJdPWtbNTIzXTtrW2orMTY+PjJdPWtbNTI0XTtrW2orMjA+PjJdPWtbNTI1XTtrW2orMjQ+PjJdPWtbNTI2XTtrW2orMjg+PjJdPWtbNTI3XTtrW2c+PjJdPTA7d2hpbGUoMSl7aWYoKGtbZz4+Ml18MCk+PTQpe2I9NjticmVha31jPShyUihrW2Y+PjJdfDAsa1tqKyhrW2c+PjJdPDwzKT4+Ml18MCl8MCk9PTA7YT1rW2c+PjJdfDA7aWYoYyl7Yj00O2JyZWFrfWtbZz4+Ml09YSsxfWlmKChifDApPT00KXtrW2tbaT4+Ml0+PjJdPWtbaisoYTw8MykrND4+Ml07a1toPj4yXT0xO2o9a1toPj4yXXwwO3I9bDtyZXR1cm4ganwwfWVsc2UgaWYoKGJ8MCk9PTYpe2tbaD4+Ml09MDtqPWtbaD4+Ml18MDtyPWw7cmV0dXJuIGp8MH1yZXR1cm4gMH1mdW5jdGlvbiBwbChhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsbD0wLG09MCxuPTAsbz0wO249cjtyPXIrOTZ8MDtqPW4rNjR8MDtoPW4rNDh8MDttPW4rMzJ8MDtsPW4rMTZ8MDtnPW47bz1uKzkyfDA7Yz1uKzg4fDA7ZT1uKzg0fDA7ZD1uKzgwfDA7Zj1uKzc2fDA7a1tvPj4yXT1hO2tbYz4+Ml09YjtrW2U+PjJdPWtbbz4+Ml07a1tkPj4yXT1rWyhrW2U+PjJdfDApKzEyPj4yXTtiPXZsKGtbZT4+Ml18MCl8MDtrW2Y+PjJdPWI7aWYoIShrW2Y+PjJdfDApKXtvPXdsKGtbZT4+Ml18MCl8MDtrW2Y+PjJdPW99aWYoIShrWyhrW2U+PjJdfDApKzQwPj4yXXwwKSl7bz1rW2Q+PjJdfDA7YT1rWyhrW2U+PjJdfDApKzIwPj4yXXwwO2I9a1tjPj4yXXwwO2tbZz4+Ml09a1soa1tlPj4yXXwwKSsxNj4+Ml07a1tnKzQ+PjJdPWE7a1tnKzg+PjJdPWI7eGwoZixvLDIwNjE3LGcpfWlmKGlbKGtbZT4+Ml18MCkrMjMwPj4wXXwwKXtvPWtbZD4+Ml18MDtnPWtbKGtbZT4+Ml18MCkrMjA+PjJdfDA7Yj1rW2M+PjJdfDA7a1tsPj4yXT1rWyhrW2U+PjJdfDApKzE2Pj4yXTtrW2wrND4+Ml09ZztrW2wrOD4+Ml09Yjt4bChmLG8sMjA2NzAsbCl9aWYoaVsoa1tlPj4yXXwwKSsyMjk+PjBdfDApe289a1tkPj4yXXwwO2w9a1soa1tlPj4yXXwwKSsyMD4+Ml18MDtiPWtbYz4+Ml18MDtrW20+PjJdPWtbKGtbZT4+Ml18MCkrMTY+PjJdO2tbbSs0Pj4yXT1sO2tbbSs4Pj4yXT1iO3hsKGYsbywyMDcyMyxtKX1vPWtbZD4+Ml18MDtiPWtbKGtbZT4+Ml18MCkrMjA+PjJdfDA7bT1rW2M+PjJdfDA7a1toPj4yXT1rWyhrW2U+PjJdfDApKzE2Pj4yXTtrW2grND4+Ml09YjtrW2grOD4+Ml09bTt4bChmLG8sMjA3NzAsaCk7bz1rW2Q+PjJdfDA7bT1rWyhrW2U+PjJdfDApKzIwPj4yXXwwO2I9a1tjPj4yXXwwO2tbaj4+Ml09a1soa1tlPj4yXXwwKSsxNj4+Ml07a1tqKzQ+PjJdPW07a1tqKzg+PjJdPWI7eGwoZixvLDIwODI0LGopO3I9bjtyZXR1cm4ga1tmPj4yXXwwfWZ1bmN0aW9uIHFsKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wO2U9cjtyPXIrMTZ8MDtjPWUrOHwwO2Q9ZTtrW2M+PjJdPWE7a1tlKzQ+PjJdPWI7a1tkPj4yXT0wO2lmKGxbKGtbYz4+Ml18MCkrMjMyPj4wXXwwKXtkPWtbZD4+Ml18MDtyPWU7cmV0dXJuIGR8MH1hPWxsKGtbYz4+Ml18MCl8MDtrW2Q+PjJdPWE7ZD1rW2Q+PjJdfDA7cj1lO3JldHVybiBkfDB9ZnVuY3Rpb24gcmwoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wO2M9cjtyPXIrMTZ8MDtrW2MrND4+Ml09YTtrW2M+PjJdPWI7cj1jO3JldHVybiAwfWZ1bmN0aW9uIHNsKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wO2M9cjtyPXIrMTZ8MDtlPWMrOHwwO2Q9YztrW2U+PjJdPWE7a1tjKzQ+PjJdPWI7a1tkPj4yXT1rW2U+PjJdO3RsKGtbZD4+Ml18MCk7cj1jO3JldHVybiAwfWZ1bmN0aW9uIHRsKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MCxlPTAsZj0wLGc9MDtnPXI7cj1yKzMyfDA7Yj1nKzE2fDA7Yz1nKzEyfDA7ZD1nKzh8MDtlPWcrNHwwO2Y9ZztrW2I+PjJdPWE7a1tjPj4yXT0wO3doaWxlKDEpe2lmKChrW2M+PjJdfDApPj0oa1soa1tiPj4yXXwwKSsyNDg+PjJdfDApKWJyZWFrO2tbZT4+Ml09KGtbKGtbYj4+Ml18MCkrMjUyPj4yXXwwKSsoKGtbYz4+Ml18MCkqMjR8MCkrNDtrW2Q+PjJdPWtbKGtbZT4+Ml18MCkrOD4+Ml07d2hpbGUoMSl7aWYoIShrW2Q+PjJdfDApKWJyZWFrO2tbZj4+Ml09a1soa1tkPj4yXXwwKSs4Pj4yXTt1bChrW2Y+PjJdfDApO2tbZD4+Ml09a1trW2Q+PjJdPj4yXX16ayhrW2U+PjJdfDApO2tbYz4+Ml09KGtbYz4+Ml18MCkrMX1rWyhrW2I+PjJdfDApKzI2MD4+Ml09MDtyPWc7cmV0dXJufWZ1bmN0aW9uIHVsKGEpe2E9YXwwO3ZhciBiPTAsYz0wO2I9cjtyPXIrMTZ8MDtjPWI7a1tjPj4yXT1hO1VkKGtbYz4+Ml18MCk7cj1iO3JldHVybn1mdW5jdGlvbiB2bChhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MDtqPXI7cj1yKzMyfDA7Zj1qO2I9aisyOHwwO2U9aisyNHwwO2c9aisyMHwwO2g9aisxNnwwO2Q9aisxMnwwO2M9ais4fDA7a1tiPj4yXT1hO2tbZT4+Ml09MDtpZigobFsoa1tiPj4yXXwwKSsyMjk+PjBdfDB8MCkhPTIpe2g9a1tlPj4yXXwwO3I9ajtyZXR1cm4gaHwwfWtbZz4+Ml09MjMxODE7Zz1rW2c+PjJdfDA7YT1rWyhrW2I+PjJdfDApKzIwPj4yXXwwO2tbZj4+Ml09a1soa1tiPj4yXXwwKSsxNj4+Ml07a1tmKzQ+PjJdPWE7Zz1ZZChnLGYpfDA7a1toPj4yXT1nO2lmKCEoa1toPj4yXXwwKSl7a1tlPj4yXT03O2g9a1tlPj4yXXwwO3I9ajtyZXR1cm4gaHwwfWtbZD4+Ml09MDtnPWxmKGtbKGtbYj4+Ml18MCkrMTI+PjJdfDAsa1toPj4yXXwwLC0xLGQsMCl8MDtrW2U+PjJdPWc7aWYoKGtbZT4+Ml18MCk9PTA/KGc9KERlKGtbZD4+Ml18MCl8MCk9PTEwMCYxLGtbYz4+Ml09ZyxnPWZlKGtbZD4+Ml18MCl8MCxrW2U+PjJdPWcsKGtbZT4+Ml18MCk9PTApOjApaVsoa1tiPj4yXXwwKSsyMjk+PjBdPWtbYz4+Ml07VWQoa1toPj4yXXwwKTtoPWtbZT4+Ml18MDtyPWo7cmV0dXJuIGh8MH1mdW5jdGlvbiB3bChhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTAsZT0wLGY9MCxnPTA7Zz1yO3I9cisxNnwwO2M9ZysxMnwwO2Y9Zys4fDA7ZD1nKzR8MDtlPWc7a1tjPj4yXT1hO2tbZj4+Ml09MDtrW2Q+PjJdPTA7d2hpbGUoMSl7aWYoIShrW2Y+PjJdfDApKWE9KGtbZD4+Ml18MCk8KGtbKGtbYz4+Ml18MCkrMjQ4Pj4yXXwwKTtlbHNlIGE9MDtiPWtbYz4+Ml18MDtpZighYSlicmVhaztiPXlsKGIsa1soa1tjPj4yXXwwKSsyNzI+PjJdfDAsa1tkPj4yXXwwLC0xKXwwO2tbZj4+Ml09YjtrW2Y+PjJdPShrW2Y+PjJdfDApPT0xMDE/MDpiO2tbZD4+Ml09KGtbZD4+Ml18MCkrMX10bChiKTtpZihrW2Y+PjJdfDApe2Y9a1tmPj4yXXwwO3I9ZztyZXR1cm4gZnwwfWlmKCEobFsoa1tjPj4yXXwwKSsyMjk+PjBdfDApKXtmPWtbZj4+Ml18MDtyPWc7cmV0dXJuIGZ8MH1pZigoa1soa1tjPj4yXXwwKSs0OD4+Ml18MCkhPTI1NSl7Zj1rW2Y+PjJdfDA7cj1nO3JldHVybiBmfDB9aWYoKGtbKGtbYz4+Ml18MCkrNTI+PjJdfDApPj4+MDw9MCl7Zj1rW2Y+PjJdfDA7cj1nO3JldHVybiBmfDB9a1tlPj4yXT0wO2Q9emwoa1tjPj4yXXwwLDIyLGUsMCl8MDtrW2Y+PjJdPWQ7aWYoa1tmPj4yXXwwKXtmPWtbZj4+Ml18MDtyPWc7cmV0dXJuIGZ8MH1VZShrW2U+PjJdfDAsMSwyKXwwO2Q9RGUoa1tlPj4yXXwwKXwwO2tbZj4+Ml09ZDtpZigoa1tmPj4yXXwwKT09MTAwKXtkPU1lKGtbZT4+Ml18MCwwKXwwO2tbKGtbYz4+Ml18MCkrNDg+PjJdPWQ7aWYoKGtbKGtbYz4+Ml18MCkrNDg+PjJdfDApPT0xKWtbKGtbYz4+Ml18MCkrNDg+PjJdPTh9ZWxzZSBpZigoa1tmPj4yXXwwKT09MTAxKWtbKGtbYz4+Ml18MCkrNDg+PjJdPTA7ZT1nZShrW2U+PjJdfDApfDA7a1tmPj4yXT1lO2Y9a1tmPj4yXXwwO3I9ZztyZXR1cm4gZnwwfWZ1bmN0aW9uIHhsKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaT0wLGo9MDtqPXI7cj1yKzQ4fDA7ZT1qKzMyfDA7Zj1qKzI4fDA7Zz1qKzI0fDA7aD1qKzh8MDtpPWo7a1tlPj4yXT1hO2tbZj4+Ml09YjtrW2c+PjJdPWM7aWYoa1trW2U+PjJdPj4yXXwwKXtyPWo7cmV0dXJufWtbaD4+Ml09ZDtjPVhkKGtbZz4+Ml18MCxoKXwwO2tbaT4+Ml09YztpZighKGtbaT4+Ml18MCkpe2tba1tlPj4yXT4+Ml09NztyPWo7cmV0dXJufWVsc2V7Yz1rZihrW2Y+PjJdfDAsa1tpPj4yXXwwLDAsMCwwKXwwO2tba1tlPj4yXT4+Ml09YztVZChrW2k+PjJdfDApO3I9ajtyZXR1cm59fWZ1bmN0aW9uIHlsKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaT0wLGo9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxzPTA7cz1yO3I9cisxMjh8MDtlPXMrMTIwfDA7Zj1zKzExNnwwO2c9cysxMTJ8MDtoPXMrMTA4fDA7cT1zKzEwNHwwO209cysxMDB8MDtvPXMrOHwwO3A9cys5NnwwO2w9cys4MHwwO2o9cysyNHwwO2k9cysxNnwwO249cztrW2U+PjJdPWE7a1tmPj4yXT1iO2tbZz4+Ml09YztrW2g+PjJdPWQ7a1ttPj4yXT0wO2E9bztrW2E+PjJdPTA7a1thKzQ+PjJdPTA7a1twPj4yXT0wO2tbaT4+Ml09MDthPW47a1thPj4yXT0wO2tbYSs0Pj4yXT0wO2E9QWwoa1tlPj4yXXwwLGtbZj4+Ml18MCxrW2c+PjJdfDAsa1toPj4yXXwwLDAsMCwxLDAsail8MDtrW3E+PjJdPWE7ZG8gaWYoKGtbcT4+Ml18MCk9PTA/KGtbais0Pj4yXXwwKSE9MDowKXtpZigoa1toPj4yXXwwKSE9LTE/KGE9Qmwoa1tlPj4yXXwwLGtbZj4+Ml18MCxrW2c+PjJdfDAsbil8MCxrW3E+PjJdPWEsKGtbcT4+Ml18MCkhPTApOjApYnJlYWs7aWYoKGtbaD4+Ml18MCk9PS0yKXtpZigoa1tqKzQ+PjJdfDApPT0xPzA9PSgoa1soa1trW2o+PjJdPj4yXXwwKSs1Nj4+Ml18MCkhPTB8MCk6MCl7a1txPj4yXT0xMDE7YnJlYWt9Yj1uO2Q9a1tiKzQ+PjJdfDA7YT1vO2tbYT4+Ml09a1tiPj4yXTtrW2ErND4+Ml09ZDtrW2k+PjJdPTF9ZWxzZXtkPUNsKGtbZT4+Ml18MCxrW2Y+PjJdfDAsa1tnPj4yXXwwLChrW2g+PjJdfDApKzF8MCl8MDthPW87a1thPj4yXT1kO2tbYSs0Pj4yXT1MO2E9RGwoa1tlPj4yXXwwLGtbZj4+Ml18MCxrW2c+PjJdfDAsKGtbaD4+Ml18MCkrMXwwLG0pfDA7a1txPj4yXT1hO2lmKChrW2g+PjJdfDApIT0tMSl7YT1vO2I9a1thKzQ+PjJdfDA7Yz1uO2Q9a1tjKzQ+PjJdfDA7Yz0oYnwwKT4oZHwwKXwoKGJ8MCk9PShkfDApPyhrW2E+PjJdfDApPj4+MD4oa1tjPj4yXXwwKT4+PjA6MCl9ZWxzZSBjPTA7a1tpPj4yXT1jJjF9aWYoIShrW3E+PjJdfDApKXtrW2w+PjJdPTA7a1tsKzQ+PjJdPTA7a1tsKzg+PjJdPTA7a1tsKzEyPj4yXT0wO2tbbCsxMj4+Ml09MTthPWwrMTJ8MDtrW2E+PjJdPWtbYT4+Ml18KChrW2k+PjJdfDApIT0wPzI6MCk7bD1FbChrW2U+PjJdfDAsaixsKXwwO2tbcT4+Ml09bDt3aGlsZSgxKXtpZihrW3E+PjJdfDApYnJlYWs7bD1GbChrW2U+PjJdfDAsail8MDtrW3E+PjJdPWw7aWYoKGtbcT4+Ml18MCkhPTEwMClicmVhaztsPUdsKGtbZT4+Ml18MCxwLDEsa1tqKzQwPj4yXXwwLGtbais0ND4+Ml18MCxrW2orNDg+PjJdfDAsa1tqKzUyPj4yXXwwKXwwO2tbcT4+Ml09bH1pZighKGtbcT4+Ml18MCkpe2lmKChrW2g+PjJdfDApIT0tMSl7bD1IbChrW2U+PjJdfDAsa1tmPj4yXXwwLGtbZz4+Ml18MCxrW2g+PjJdfDAsa1tqPj4yXXwwLGtbais0Pj4yXXwwKXwwO2tbcT4+Ml09bDtpZighKChrW3E+PjJdfDApPT0wJihrW3A+PjJdfDApIT0wKSlicmVha31lbHNlIGlmKCEoa1twPj4yXXwwKSlicmVhaztsPW87bT1JbChrW2U+PjJdfDAsa1twPj4yXXwwLGtbbD4+Ml18MCxrW2wrND4+Ml18MCxrW20+PjJdfDApfDA7a1txPj4yXT1tO2lmKCEoa1txPj4yXXwwKSl7aWYoKGtbaD4+Ml18MCkhPS0xPyhtPW8saT1rW20rND4+Ml18MCxuLGw9a1tuKzQ+PjJdfDAsISgoaXwwKTwobHwwKXwoKGl8MCk9PShsfDApPyhrW20+PjJdfDApPj4+MDwoa1tuPj4yXXwwKT4+PjA6MCkpKTowKWJyZWFrO249bztvPShrW3A+PjJdfDApKzU2fDA7bz1KbChrW2U+PjJdfDAsa1tuPj4yXXwwLGtbbis0Pj4yXXwwLGtbbz4+Ml18MCxrW28rND4+Ml18MCl8MDtrW3E+PjJdPW99fX19d2hpbGUoMCk7S2woa1twPj4yXXwwKTtMbChqKTtyPXM7cmV0dXJuIGtbcT4+Ml18MH1mdW5jdGlvbiB6bChhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGk9MCxqPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscz0wLHQ9MDt0PXI7cj1yKzI0MHwwO249dCsyNHwwO209dCsxNnwwO2Y9dDtnPXQrMjI4fDA7aD10KzIyNHwwO3A9dCsyMjB8MDtpPXQrMjE2fDA7ZT10KzU2fDA7cz10KzQ4fDA7cT10KzQ0fDA7bz10KzQwfDA7aj10KzM2fDA7bD10KzMyfDA7a1tnPj4yXT1hO2tbaD4+Ml09YjtrW3A+PjJdPWM7a1tpPj4yXT1kO2JTKGV8MCwxOTIwLDE2MCl8MDtrW3M+PjJdPTA7a1txPj4yXT1rWyhrW2c+PjJdfDApKzU2KyhrW2g+PjJdPDwyKT4+Ml07ZG8gaWYoIShrW3E+PjJdfDApKXthPWtbaD4+Ml18MDtkbyBpZigoa1toPj4yXXwwKSE9MTgpe2Q9a1tlKyhrW2g+PjJdPDwyKT4+Ml18MDtiPWtbZz4+Ml18MDtpZigoYXwwKT09Nyl7a1ttPj4yXT1rW2IrMjE2Pj4yXTtuPVlkKGQsbSl8MDtrW28+PjJdPW47YnJlYWt9ZWxzZXttPWtbKGtbZz4+Ml18MCkrMjA+PjJdfDA7a1tuPj4yXT1rW2IrMTY+PjJdO2tbbis0Pj4yXT1tO249WWQoZCxuKXwwO2tbbz4+Ml09bjticmVha319ZWxzZXtuPWtbZSsoYTw8Mik+PjJdfDA7ZT1rWyhrW2c+PjJdfDApKzIwPj4yXXwwO209a1soa1tnPj4yXXwwKSsyMjA+PjJdfDA7a1tmPj4yXT1rWyhrW2c+PjJdfDApKzE2Pj4yXTtrW2YrND4+Ml09ZTtrW2YrOD4+Ml09bTtuPVlkKG4sZil8MDtrW28+PjJdPW59d2hpbGUoMCk7aWYoa1tvPj4yXXwwKXtuPWxmKGtbKGtbZz4+Ml18MCkrMTI+PjJdfDAsa1tvPj4yXXwwLC0xLHEsMCl8MDtrW3M+PjJdPW47VWQoa1tvPj4yXXwwKTtrWyhrW2c+PjJdfDApKzU2KyhrW2g+PjJdPDwyKT4+Ml09a1txPj4yXTticmVha31lbHNle2tbcz4+Ml09NzticmVha319d2hpbGUoMCk7aWYoIShrW2k+PjJdfDApKXtvPWtbcT4+Ml18MDtxPWtbcD4+Ml18MDtrW3E+PjJdPW87cz1rW3M+PjJdfDA7cj10O3JldHVybiBzfDB9bz1fZShrW3E+PjJdfDApfDA7a1tsPj4yXT1vO2tbaj4+Ml09MDt3aGlsZSgxKXtpZihrW3M+PjJdfDApe2Q9MTU7YnJlYWt9aWYoKGtbaj4+Ml18MCk+PShrW2w+PjJdfDApKXtkPTE1O2JyZWFrfW89WWUoa1txPj4yXXwwLChrW2o+PjJdfDApKzF8MCxrWyhrW2k+PjJdfDApKyhrW2o+PjJdPDwyKT4+Ml18MCl8MDtrW3M+PjJdPW87a1tqPj4yXT0oa1tqPj4yXXwwKSsxfWlmKChkfDApPT0xNSl7bz1rW3E+PjJdfDA7cT1rW3A+PjJdfDA7a1txPj4yXT1vO3M9a1tzPj4yXXwwO3I9dDtyZXR1cm4gc3wwfXJldHVybiAwfWZ1bmN0aW9uIEFsKGEsYixjLGQsZSxmLGcsaCxpKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtpPWl8MDt2YXIgaj0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHM9MCx0PTAsdT0wO3U9cjtyPXIrNDh8MDtqPXUrMzJ8MDtsPXUrMjh8MDttPXUrMjR8MDtuPXUrMjB8MDtvPXUrMTZ8MDtwPXUrMTJ8MDtxPXUrOHwwO3M9dSs0fDA7dD11O2tbaj4+Ml09YTtrW2w+PjJdPWI7a1ttPj4yXT1jO2tbbj4+Ml09ZDtrW28+PjJdPWU7a1twPj4yXT1mO2tbcT4+Ml09ZztrW3M+PjJdPWg7a1t0Pj4yXT1pO2M9a1t0Pj4yXXwwO2I9Yys1NnwwO2Rve2tbYz4+Ml09MDtjPWMrNHwwfXdoaWxlKChjfDApPChifDApKTt0PXRtKGtbaj4+Ml18MCxrW2w+PjJdfDAsa1ttPj4yXXwwLGtbbj4+Ml18MCxrW28+PjJdfDAsa1twPj4yXXwwLGtbcT4+Ml18MCxrW3M+PjJdfDAsa1t0Pj4yXXwwKXwwO3I9dTtyZXR1cm4gdHwwfWZ1bmN0aW9uIEJsKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaT0wLGo9MCxsPTAsbT0wO209cjtyPXIrMzJ8MDtlPW0rMjR8MDtmPW0rMjB8MDtnPW0rMTZ8MDtoPW0rMTJ8MDtpPW0rOHwwO2o9bSs0fDA7bD1tO2tbZj4+Ml09YTtrW2c+PjJdPWI7a1toPj4yXT1jO2tbaT4+Ml09ZDtkPXpsKGtbZj4+Ml18MCwxNSxqLDApfDA7a1tsPj4yXT1kO2lmKGtbbD4+Ml18MCl7a1tlPj4yXT1rW2w+PjJdO2w9a1tlPj4yXXwwO3I9bTtyZXR1cm4gbHwwfWw9a1tqPj4yXXwwO2Q9Q2woa1tmPj4yXXwwLGtbZz4+Ml18MCxrW2g+PjJdfDAsMCl8MDtWZShsLDEsZCxMKXwwO2Q9a1tqPj4yXXwwO2w9Q2woa1tmPj4yXXwwLGtbZz4+Ml18MCxrW2g+PjJdfDAsMTAyMyl8MDtWZShkLDIsbCxMKXwwO2lmKDEwMD09KERlKGtbaj4+Ml18MCl8MCkpe2Q9TmUoa1tqPj4yXXwwLDApfDA7bD1rW2k+PjJdfDA7a1tsPj4yXT1kO2tbbCs0Pj4yXT1MfWw9Z2Uoa1tqPj4yXXwwKXwwO2tbZT4+Ml09bDtsPWtbZT4+Ml18MDtyPW07cmV0dXJuIGx8MH1mdW5jdGlvbiBDbChhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGk9MCxqPTA7ZT1yO3I9ciszMnwwO2k9ZSsyMHwwO2o9ZSsxNnwwO2g9ZSsxMnwwO2Y9ZSs4fDA7Zz1lO2tbaT4+Ml09YTtrW2o+PjJdPWI7a1toPj4yXT1jO2tbZj4+Ml09ZDthPWtbaj4+Ml18MDtkPWtbKGtbaT4+Ml18MCkrMjQ4Pj4yXXwwO2Q9a1MoYXwwLCgoYXwwKTwwKTw8MzE+PjMxfDAsZHwwLCgoZHwwKTwwKTw8MzE+PjMxfDApfDA7YT1rW2g+PjJdfDA7YT0kUihkfDAsTHwwLGF8MCwoKGF8MCk8MCk8PDMxPj4zMXwwKXwwO2E9a1MoYXwwLEx8MCwxMDI0LDApfDA7ZD1nO2tbZD4+Ml09YTtrW2QrND4+Ml09TDtkPWc7YT1rW2Y+PjJdfDA7YT0kUihrW2Q+PjJdfDAsa1tkKzQ+PjJdfDAsYXwwLCgoYXwwKTwwKTw8MzE+PjMxfDApfDA7cj1lO3JldHVybiBhfDB9ZnVuY3Rpb24gRGwoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaT0wLGo9MCxsPTAsbT0wLG49MCxvPTA7bz1yO3I9ciszMnwwO2Y9bysyOHwwO2c9bysyNHwwO2g9bysyMHwwO2k9bysxNnwwO2o9bysxMnwwO249bys4fDA7bT1vKzR8MDtsPW87a1tmPj4yXT1hO2tbZz4+Ml09YjtrW2g+PjJdPWM7a1tpPj4yXT1kO2tbaj4+Ml09ZTtrW2w+PjJdPTA7ZT16bChrW2Y+PjJdfDAsOCxtLDApfDA7a1tuPj4yXT1lO2lmKCEoa1tuPj4yXXwwKSl7YT1rW20+PjJdfDA7ZT1DbChrW2Y+PjJdfDAsa1tnPj4yXXwwLGtbaD4+Ml18MCxrW2k+PjJdfDApfDA7VmUoYSwxLGUsTCl8MDtpZigxMDA9PShEZShrW20+PjJdfDApfDApKXtlPU1lKGtbbT4+Ml18MCwwKXwwO2tbbD4+Ml09ZX1lPWdlKGtbbT4+Ml18MCl8MDtrW24+PjJdPWV9aWYoa1tuPj4yXXwwKXtuPWtbbj4+Ml18MDtyPW87cmV0dXJuIG58MH1pZigoa1tsPj4yXXwwKT49MTYpe2U9eWwoa1tmPj4yXXwwLGtbZz4+Ml18MCxrW2g+PjJdfDAsa1tpPj4yXXwwKXwwO2tbbj4+Ml09ZTtrW2tbaj4+Ml0+PjJdPTA7bj1rW24+PjJdfDA7cj1vO3JldHVybiBufDB9ZWxzZXtrW2tbaj4+Ml0+PjJdPWtbbD4+Ml07bj1rW24+PjJdfDA7cj1vO3JldHVybiBufDB9cmV0dXJuIDB9ZnVuY3Rpb24gRWwoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTA7ZD1yO3I9cisxNnwwO2c9ZCs4fDA7Zj1kKzR8MDtlPWQ7a1tnPj4yXT1hO2tbZj4+Ml09YjtrW2U+PjJdPWM7a1soa1tmPj4yXXwwKSsxMj4+Ml09a1tlPj4yXTtjPXJtKGtbZz4+Ml18MCxrW2Y+PjJdfDAsa1trW2U+PjJdPj4yXXwwLGtbKGtbZT4+Ml18MCkrND4+Ml18MCl8MDtyPWQ7cmV0dXJuIGN8MH1mdW5jdGlvbiBGbChhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsbT0wLG49MCxvPTAscD0wLHE9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MCxFPTAsRj0wLEc9MCxIPTAsST0wLEo9MCxLPTA7Sj1yO3I9cisxMjh8MDtjPUorMTIwfDA7ZD1KKzExNnwwO2U9SisxMTJ8MDtHPUorMTA4fDA7cz1KKzEwNHwwO3U9SisxMDB8MDtwPUorOTZ8MDt0PUorOTJ8MDt2PUorODh8MDtxPUorODR8MDtoPUorODB8MDtCPUorNzZ8MDtEPUorNzJ8MDtIPUorNjh8MDtBPUorNjR8MDtqPUorNjB8MDtGPUorNTZ8MDt5PUorNTJ8MDtvPUorMTZ8MDt3PUorNDh8MDtFPUorNDR8MDt6PUorNDB8MDt4PUorMzZ8MDtuPUorOHwwO209SjtnPUorMzJ8MDtmPUorMjh8MDtDPUorMjR8MDtrW2Q+PjJdPWE7a1tlPj4yXT1iO2tbRz4+Ml09MDtrW3M+PjJdPWtbKGtbKGtbZT4+Ml18MCkrMTI+PjJdfDApKzEyPj4yXSYyO2tbdT4+Ml09a1soa1soa1tlPj4yXXwwKSsxMj4+Ml18MCkrMTI+PjJdJjE7a1twPj4yXT1rWyhrWyhrW2U+PjJdfDApKzEyPj4yXXwwKSsxMj4+Ml0mNDtrW3Q+PjJdPWtbKGtbKGtbZT4+Ml18MCkrMTI+PjJdfDApKzEyPj4yXSY4O2tbdj4+Ml09a1soa1soa1tlPj4yXXwwKSsxMj4+Ml18MCkrMTI+PjJdJjE2O2tbcT4+Ml09a1soa1soa1tlPj4yXXwwKSsxMj4+Ml18MCkrMTI+PjJdJjMyO2tbaD4+Ml09a1trW2U+PjJdPj4yXTtrW0I+PjJdPWtbKGtbZT4+Ml18MCkrND4+Ml07a1tEPj4yXT1rWyhrW2U+PjJdfDApKzEyPj4yXTtrW0g+PjJdPShsWyhrW2Q+PjJdfDApKzIzMT4+MF18MCkhPTA/MTgyOjE4MztpZighKGtbKGtbZT4+Ml18MCkrND4+Ml18MCkpe2tbYz4+Ml09MDtJPWtbYz4+Ml18MDtyPUo7cmV0dXJuIEl8MH1hOndoaWxlKDEpe2tbaj4+Ml09MDt3aGlsZSgxKXtpZigoa1tqPj4yXXwwKT49KGtbKGtbZT4+Ml18MCkrOD4+Ml18MCkpYnJlYWs7a1tGPj4yXT1rWyhrW2g+PjJdfDApKyhrW2o+PjJdPDwyKT4+Ml07aWYoaVsoa1tGPj4yXXwwKSs0Pj4wXXwwKV9sKGtbRj4+Ml18MCk7ZWxzZXtiPSRsKGtbZD4+Ml18MCxrW0Y+PjJdfDAsMCl8MDtrW0c+PjJdPWJ9aWYoa1tHPj4yXXwwKXtJPTk7YnJlYWsgYX1rW2o+PjJdPShrW2o+PjJdfDApKzF9Ym0oa1toPj4yXXwwLGtbQj4+Ml18MCxrWyhrW2U+PjJdfDApKzg+PjJdfDAsMTg0KTtrWyhrW2U+PjJdfDApKzg+PjJdPTA7aWYoIShrWyhrW2tbaD4+Ml0+PjJdfDApKzQwPj4yXXwwKSl7ST02MTticmVha31rWyhrW2U+PjJdfDApKzQ0Pj4yXT1rWyhrW2tbaD4+Ml0+PjJdfDApKzYwPj4yXTtrWyhrW2U+PjJdfDApKzQwPj4yXT1rWyhrW2tbaD4+Ml0+PjJdfDApKzY0Pj4yXTtpZighKChrW3Y+PjJdfDApIT0wPzE6KGtba1tEPj4yXT4+Ml18MCk9PTApKXtpZigoa1soa1tlPj4yXXwwKSs0ND4+Ml18MCk8KGtbKGtbRD4+Ml18MCkrND4+Ml18MCkpe0k9NjE7YnJlYWt9aWYoKGtbdD4+Ml18MCk9PTA/KGtbKGtbZT4+Ml18MCkrNDQ+PjJdfDApPihrWyhrW0Q+PjJdfDApKzQ+PjJdfDApOjApe0k9NjE7YnJlYWt9aWYob1Ioa1soa1tlPj4yXXwwKSs0MD4+Ml18MCxrW2tbRD4+Ml0+PjJdfDAsa1soa1tEPj4yXXwwKSs0Pj4yXXwwKXwwKXtJPTYxO2JyZWFrfX1rW0E+PjJdPTE7d2hpbGUoMSl7aWYoKChrW0E+PjJdfDApPChrW0I+PjJdfDApPyhrWyhrWyhrW2g+PjJdfDApKyhrW0E+PjJdPDwyKT4+Ml18MCkrNDA+PjJdfDApIT0wOjApPyhrWyhrWyhrW2g+PjJdfDApKyhrW0E+PjJdPDwyKT4+Ml18MCkrNjA+PjJdfDApPT0oa1soa1tlPj4yXXwwKSs0ND4+Ml18MCk6MCliPTA9PShvUihrWyhrW2U+PjJdfDApKzQwPj4yXXwwLGtbKGtbKGtbaD4+Ml18MCkrKGtbQT4+Ml08PDIpPj4yXXwwKSs2ND4+Ml18MCxrWyhrW2U+PjJdfDApKzQ0Pj4yXXwwKXwwKTtlbHNlIGI9MDthPWtbQT4+Ml18MDtpZighYilicmVhaztrW0E+PjJdPWErMX1kbyBpZighKChhfDApIT0xfChrW3M+PjJdfDApIT0wfChrW3E+PjJdfDApIT0wKSl7aWYoKGxbKGtbZD4+Ml18MCkrMjMxPj4wXXwwKSE9MD8oKGtbKGtba1toPj4yXT4+Ml18MCkrNTY+PjJdfDApIT0wfDApIT0wOjApe0k9MzI7YnJlYWt9a1soa1tlPj4yXXwwKSs1Mj4+Ml09a1soa1trW2g+PjJdPj4yXXwwKSs3Nj4+Ml07aWYoa1soa1trW2g+PjJdPj4yXXwwKSs1Nj4+Ml18MCl7Yj1jbShrW2U+PjJdfDAsa1soa1trW2g+PjJdPj4yXXwwKSs3Mj4+Ml18MCxrWyhrW2U+PjJdfDApKzUyPj4yXXwwKXwwO2tbRz4+Ml09YjtrWyhrW2U+PjJdfDApKzQ4Pj4yXT1rWyhrW2U+PjJdfDApKzE2Pj4yXX1lbHNlIGtbKGtbZT4+Ml18MCkrNDg+PjJdPWtbKGtba1toPj4yXT4+Ml18MCkrNzI+PjJdO2lmKCEoa1tHPj4yXXwwKSlrW0c+PjJdPTEwMH1lbHNlIEk9MzI7d2hpbGUoMCk7aWYoKEl8MCk9PTMyKXtJPTA7a1t5Pj4yXT0wO2I9bztrW2I+PjJdPTA7a1tiKzQ+PjJdPTA7a1tqPj4yXT0wO3doaWxlKDEpe2lmKChrW2o+PjJdfDApPj0oa1tBPj4yXXwwKSlicmVhaztkbShrW2Q+PjJdfDAsa1soa1toPj4yXXwwKSsoa1tqPj4yXTw8Mik+PjJdfDApfDA7a1tqPj4yXT0oa1tqPj4yXXwwKSsxfWJtKGtbaD4+Ml18MCxrW0E+PjJdfDAsa1tBPj4yXXwwLGtbSD4+Ml18MCk7d2hpbGUoMSl7aWYoIShrWyhrW2tbaD4+Ml0+PjJdfDApKzgwPj4yXXwwKSlicmVhaztrW0U+PjJdPTA7a1t6Pj4yXT0wO0s9KGtba1toPj4yXT4+Ml18MCkrODh8MDthPWtbSys0Pj4yXXwwO2I9bjtrW2I+PjJdPWtbSz4+Ml07a1tiKzQ+PjJdPWE7ZW0oa1tkPj4yXXwwLGtba1toPj4yXT4+Ml18MCxFLHopfDA7a1t3Pj4yXT0xO3doaWxlKDEpe2lmKChrW3c+PjJdfDApPj0oa1tBPj4yXXwwKSlicmVhaztpZighKGtbKGtbKGtbaD4+Ml18MCkrKGtbdz4+Ml08PDIpPj4yXXwwKSs4MD4+Ml18MCkpYnJlYWs7Yj0oa1soa1toPj4yXXwwKSsoa1t3Pj4yXTw8Mik+PjJdfDApKzg4fDA7Sz1uO2lmKCEoKGtbYj4+Ml18MCk9PShrW0s+PjJdfDApPyhrW2IrND4+Ml18MCk9PShrW0srND4+Ml18MCk6MCkpYnJlYWs7ZW0oa1tkPj4yXXwwLGtbKGtbaD4+Ml18MCkrKGtbdz4+Ml08PDIpPj4yXXwwLDAsMCl8MDtrW3c+PjJdPShrW3c+PjJdfDApKzF9aWYoa1twPj4yXXwwKWZtKGtbKGtbRD4+Ml18MCkrOD4+Ml18MCwwLEUseik7ZG8gaWYoKGtbcz4+Ml18MCk9PTB8KGtbej4+Ml18MCk+MCl7aWYoKGtbeT4+Ml18MCk+MD8obFsoa1tkPj4yXXwwKSsyMzE+PjBdfDApIT0wOjApe0s9bztiPW47Yj1fUihrW0s+PjJdfDAsa1tLKzQ+PjJdfDAsa1tiPj4yXXwwLGtbYis0Pj4yXXwwKXwwO0s9bTtrW0s+PjJdPWI7a1tLKzQ+PjJdPUx9ZWxzZXtLPW47Yj1vO2I9X1Ioa1tLPj4yXXwwLGtbSys0Pj4yXXwwLGtbYj4+Ml18MCxrW2IrND4+Ml18MCl8MDtLPW07a1tLPj4yXT1iO2tbSys0Pj4yXT1MfUs9bTtLPVRsKGtbSz4+Ml18MCxrW0srND4+Ml18MCl8MDtrW3g+PjJdPUsrKChrW3U+PjJdfDApIT0wPyhrW3o+PjJdfDApKzF8MDowKTtpZigoKGtbeT4+Ml18MCkrKGtbeD4+Ml18MCl8MCk+KGtbKGtbZT4+Ml18MCkrMjA+PjJdfDApKXtrWyhrW2U+PjJdfDApKzIwPj4yXT0oa1t5Pj4yXXwwKSsoa1t4Pj4yXXwwKTw8MTtLPVZkKGtbKGtbZT4+Ml18MCkrMTY+PjJdfDAsa1soa1tlPj4yXXwwKSsyMD4+Ml18MCl8MDtrW2c+PjJdPUs7aWYoIShrW2c+PjJdfDApKXtJPTUwO2JyZWFrIGF9a1soa1tlPj4yXXwwKSsxNj4+Ml09a1tnPj4yXX1hPShrWyhrW2U+PjJdfDApKzE2Pj4yXXwwKSsoa1t5Pj4yXXwwKXwwO2lmKGtbcT4+Ml18MCl7a1tmPj4yXT1hO0s9bTtLPWdtKGtbSz4+Ml18MCxrW0srND4+Ml18MCxrW0U+PjJdfDAsa1t6Pj4yXXwwLGtbZj4+Ml18MCl8MDtrW0M+PjJdPUs7aWYoIShrW0M+PjJdfDApKWJyZWFrO2E9bjtiPWtbYSs0Pj4yXXwwO0s9bztrW0s+PjJdPWtbYT4+Ml07a1tLKzQ+PjJdPWI7a1t5Pj4yXT0oa1t5Pj4yXXwwKSsoa1tDPj4yXXwwKTticmVha31lbHNle2I9bTthPVVsKGEsa1tiPj4yXXwwLGtbYis0Pj4yXXwwKXwwO2tbeT4+Ml09KGtbeT4+Ml18MCkrYTthPW47Yj1rW2ErND4+Ml18MDtLPW87a1tLPj4yXT1rW2E+PjJdO2tbSys0Pj4yXT1iO2lmKCEoa1t1Pj4yXXwwKSlicmVhaztiUygoa1soa1tlPj4yXXwwKSsxNj4+Ml18MCkrKGtbeT4+Ml18MCl8MCxrW0U+PjJdfDAsa1t6Pj4yXXwwKXwwO2tbeT4+Ml09KGtbeT4+Ml18MCkrKGtbej4+Ml18MCk7Sz1rW3k+PjJdfDA7a1t5Pj4yXT1LKzE7aVsoa1soa1tlPj4yXXwwKSsxNj4+Ml18MCkrSz4+MF09MDticmVha319d2hpbGUoMCk7Ym0oa1toPj4yXXwwLGtbQT4+Ml18MCxrW3c+PjJdfDAsa1tIPj4yXXwwKX1pZigoa1t5Pj4yXXwwKT4wKXtrWyhrW2U+PjJdfDApKzQ4Pj4yXT1rWyhrW2U+PjJdfDApKzE2Pj4yXTtrWyhrW2U+PjJdfDApKzUyPj4yXT1rW3k+PjJdO2tbRz4+Ml09MTAwfX1rWyhrW2U+PjJdfDApKzg+PjJdPWtbQT4+Ml07aWYoa1tHPj4yXXwwKXtJPTYxO2JyZWFrfX1pZigoSXwwKT09OSl7a1tjPj4yXT1rW0c+PjJdO0s9a1tjPj4yXXwwO3I9SjtyZXR1cm4gS3wwfWVsc2UgaWYoKEl8MCk9PTUwKXtrW2M+PjJdPTc7Sz1rW2M+PjJdfDA7cj1KO3JldHVybiBLfDB9ZWxzZSBpZigoSXwwKT09NjEpe2tbYz4+Ml09a1tHPj4yXTtLPWtbYz4+Ml18MDtyPUo7cmV0dXJuIEt8MH1yZXR1cm4gMH1mdW5jdGlvbiBHbChhLGIsYyxkLGUsZixnKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDt2YXIgaD0wLGk9MCxqPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wO0I9cjtyPXIrODB8MDtoPUIrNjh8MDtpPUIrNjR8MDtqPUIrNjB8MDtsPUIrNTZ8MDttPUIrNTJ8MDtuPUIrNDh8MDtvPUIrNDR8MDtwPUIrNDB8MDt0PUIrMzZ8MDt2PUIrMzJ8MDt1PUIrMjh8MDtzPUIrMjR8MDt4PUIrMjB8MDt5PUIrMTZ8MDt3PUIrMTJ8MDt6PUIrOHwwO3E9Qis0fDA7QT1CO2tbaT4+Ml09YTtrW2o+PjJdPWI7a1tsPj4yXT1jO2tbbT4+Ml09ZDtrW24+PjJdPWU7a1tvPj4yXT1mO2tbcD4+Ml09ZztrW3g+PjJdPWtba1tqPj4yXT4+Ml07aWYoIShrW3g+PjJdfDApKXtkPVNkKDY0KXwwO2tbeD4+Ml09ZDtpZighKGtbeD4+Ml18MCkpe2tbaD4+Ml09NztBPWtbaD4+Ml18MDtyPUI7cmV0dXJuIEF8MH1mPWtbeD4+Ml18MDtjPWYrNjR8MDtkb3trW2Y+PjJdPTA7Zj1mKzR8MH13aGlsZSgoZnwwKTwoY3wwKSk7a1trW2o+PjJdPj4yXT1rW3g+PjJdO2o9U2Qoa1soa1tpPj4yXXwwKSsyMjQ+PjJdfDApfDA7a1soa1t4Pj4yXXwwKSs0OD4+Ml09ajtpZighKGtbKGtbeD4+Ml18MCkrNDg+PjJdfDApKXtrW2g+PjJdPTc7QT1rW2g+PjJdfDA7cj1CO3JldHVybiBBfDB9a1soa1t4Pj4yXXwwKSs0MD4+Ml09a1soa1tpPj4yXXwwKSsyMjQ+PjJdO2o9emwoa1tpPj4yXXwwLDEwLHcsMCl8MDtrW3k+PjJdPWo7aWYoa1t5Pj4yXXwwKXtrW2g+PjJdPWtbeT4+Ml07QT1rW2g+PjJdfDA7cj1CO3JldHVybiBBfDB9aWYoMTAwPT0oRGUoa1t3Pj4yXXwwKXwwKSl7ZD1OZShrW3c+PjJdfDAsMCl8MDtiPShrW3g+PjJdfDApKzE2fDA7a1tiPj4yXT1kO2tbYis0Pj4yXT1MO2I9KGtbeD4+Ml18MCkrMTZ8MDtkPWtbYis0Pj4yXXwwO2o9KGtbeD4+Ml18MCkrOHwwO2tbaj4+Ml09a1tiPj4yXTtrW2orND4+Ml09ZH13PWdlKGtbdz4+Ml18MCl8MDtrW3k+PjJdPXc7aWYoa1t5Pj4yXXwwKXtrW2g+PjJdPWtbeT4+Ml07QT1rW2g+PjJdfDA7cj1CO3JldHVybiBBfDB9fWtbcz4+Ml09a1soa1t4Pj4yXXwwKSs0ND4+Ml07eT1XbChrWyhrW3g+PjJdfDApKzI0Pj4yXXwwLGtbKGtbeD4+Ml18MCkrMjg+PjJdfDAsa1ttPj4yXXwwLGtbbj4+Ml18MCl8MDtrW3Q+PjJdPXk7a1t2Pj4yXT0oa1tuPj4yXXwwKS0oa1t0Pj4yXXwwKTt5PWtbdD4+Ml18MDt5PVRsKHksKCh5fDApPDApPDwzMT4+MzEpfDA7dz1rW3Y+PjJdfDA7dz15KyhUbCh3LCgod3wwKTwwKTw8MzE+PjMxKXwwKXwwO3c9dysoa1t2Pj4yXXwwKXwwO3k9a1twPj4yXXwwO3k9dysoVGwoeSwoKHl8MCk8MCk8PDMxPj4zMSl8MCl8MDtrW3U+PjJdPXkrKGtbcD4+Ml18MCk7ZG8gaWYoKGtbcz4+Ml18MCk+MD8oKGtbcz4+Ml18MCkrKGtbdT4+Ml18MCl8MCk+KGtbKGtbaT4+Ml18MCkrMjI0Pj4yXXwwKTowKXtqPWtbaT4+Ml18MDtkPShrW3g+PjJdfDApKzE2fDA7eT1kO3c9a1t5Pj4yXXwwO3k9a1t5KzQ+PjJdfDA7Yj0kUih3fDAseXwwLDEsMCl8MDtrW2Q+PjJdPWI7a1tkKzQ+PjJdPUw7eT1QbChqLHcseSxrWyhrW3g+PjJdfDApKzQ4Pj4yXXwwLGtbcz4+Ml18MCl8MDtrW3o+PjJdPXk7aWYoa1t6Pj4yXXwwKXtrW2g+PjJdPWtbej4+Ml07QT1rW2g+PjJdfDA7cj1CO3JldHVybiBBfDB9eT0oa1tpPj4yXXwwKSs1MnwwO2tbeT4+Ml09KGtbeT4+Ml18MCkrMTt5PVhsKGtbaT4+Ml18MCxrW3g+PjJdfDAsa1tsPj4yXXwwLGtbbT4+Ml18MCwoa1t0Pj4yXXwwKSsxfDApfDA7a1t6Pj4yXT15O2lmKCEoa1t6Pj4yXXwwKSl7a1tzPj4yXT0wO2tbKGtbeD4+Ml18MCkrMjg+PjJdPTA7a1t0Pj4yXT0wO2tbdj4+Ml09a1tuPj4yXTt5PWtbbj4+Ml18MDt5PTErKFRsKHksKCh5fDApPDApPDwzMT4+MzEpfDApfDA7eT15KyhrW24+PjJdfDApfDA7ej1rW3A+PjJdfDA7ej15KyhUbCh6LCgoenwwKTwwKTw8MzE+PjMxKXwwKXwwO2tbdT4+Ml09eisoa1twPj4yXXwwKTticmVha31rW2g+PjJdPWtbej4+Ml07QT1rW2g+PjJdfDA7cj1CO3JldHVybiBBfDB9d2hpbGUoMCk7eT1rW3U+PjJdfDA7ej0oa1t4Pj4yXXwwKSs1NnwwO3c9ejt5PSRSKGtbdz4+Ml18MCxrW3crND4+Ml18MCx5fDAsKCh5fDApPDApPDwzMT4+MzF8MCl8MDtrW3o+PjJdPXk7a1t6KzQ+PjJdPUw7ZG8gaWYoKGtbdT4+Ml18MCk+KGtbKGtbeD4+Ml18MCkrNDA+PjJdfDApKXt6PVZkKGtbKGtbeD4+Ml18MCkrNDg+PjJdfDAsa1t1Pj4yXXwwKXwwO2tbcT4+Ml09ejtpZihrW3E+PjJdfDApe2tbKGtbeD4+Ml18MCkrNDg+PjJdPWtbcT4+Ml07a1soa1t4Pj4yXXwwKSs0MD4+Ml09a1t1Pj4yXTticmVha31rW2g+PjJdPTc7QT1rW2g+PjJdfDA7cj1CO3JldHVybiBBfDB9d2hpbGUoMCk7ej1rW3Q+PjJdfDA7ej1VbCgoa1soa1t4Pj4yXXwwKSs0OD4+Ml18MCkrKGtbcz4+Ml18MCl8MCx6LCgoenwwKTwwKTw8MzE+PjMxKXwwO2tbcz4+Ml09KGtbcz4+Ml18MCkrejt6PWtbdj4+Ml18MDt6PVVsKChrWyhrW3g+PjJdfDApKzQ4Pj4yXXwwKSsoa1tzPj4yXXwwKXwwLHosKCh6fDApPDApPDwzMT4+MzEpfDA7a1tzPj4yXT0oa1tzPj4yXXwwKSt6O2JTKChrWyhrW3g+PjJdfDApKzQ4Pj4yXXwwKSsoa1tzPj4yXXwwKXwwLChrW20+PjJdfDApKyhrW3Q+PjJdfDApfDAsa1t2Pj4yXXwwKXwwO2tbcz4+Ml09KGtbcz4+Ml18MCkrKGtbdj4+Ml18MCk7ej1rW3A+PjJdfDA7ej1VbCgoa1soa1t4Pj4yXXwwKSs0OD4+Ml18MCkrKGtbcz4+Ml18MCl8MCx6LCgoenwwKTwwKTw8MzE+PjMxKXwwO2tbcz4+Ml09KGtbcz4+Ml18MCkrejtiUygoa1soa1t4Pj4yXXwwKSs0OD4+Ml18MCkrKGtbcz4+Ml18MCl8MCxrW28+PjJdfDAsa1twPj4yXXwwKXwwO2tbKGtbeD4+Ml18MCkrNDQ+PjJdPShrW3M+PjJdfDApKyhrW3A+PjJdfDApO2lmKGtbbD4+Ml18MCl7ZG8gaWYoKGtbbj4+Ml18MCk+KGtbKGtbeD4+Ml18MCkrMzI+PjJdfDApKXt6PVZkKGtbKGtbeD4+Ml18MCkrMzY+PjJdfDAsa1tuPj4yXTw8MSl8MDtrW0E+PjJdPXo7aWYoa1tBPj4yXXwwKXtrWyhrW3g+PjJdfDApKzMyPj4yXT1rW24+PjJdPDwxO2tbKGtbeD4+Ml18MCkrMzY+PjJdPWtbQT4+Ml07a1soa1t4Pj4yXXwwKSsyND4+Ml09a1tBPj4yXTticmVha31rW2g+PjJdPTc7QT1rW2g+PjJdfDA7cj1CO3JldHVybiBBfDB9d2hpbGUoMCk7YlMoa1soa1t4Pj4yXXwwKSsyND4+Ml18MCxrW20+PjJdfDAsa1tuPj4yXXwwKXwwfWVsc2Uga1soa1t4Pj4yXXwwKSsyND4+Ml09a1ttPj4yXTtrWyhrW3g+PjJdfDApKzI4Pj4yXT1rW24+PjJdO2tbaD4+Ml09MDtBPWtbaD4+Ml18MDtyPUI7cmV0dXJuIEF8MH1mdW5jdGlvbiBIbChhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaT0wLGo9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxzPTA7cz1yO3I9cis0OHwwO2o9cyszNnwwO2w9cyszMnwwO209cysyOHwwO249cysyNHwwO289cysyMHwwO2c9cysxNnwwO2g9cysxMnwwO3E9cys4fDA7aT1zKzR8MDtwPXM7a1tsPj4yXT1hO2tbbT4+Ml09YjtrW24+PjJdPWM7a1tvPj4yXT1kO2tbZz4+Ml09ZTtrW2g+PjJdPWY7a1txPj4yXT0wO2tbcD4+Ml09MDtrW2k+PjJdPTA7d2hpbGUoMSl7aWYoa1txPj4yXXwwKWJyZWFrO2lmKChrW2k+PjJdfDApPj0oa1toPj4yXXwwKSlicmVhazthPVZsKGtbbD4+Ml18MCxrWyhrW2c+PjJdfDApKyhrW2k+PjJdPDwyKT4+Ml18MCl8MDtrW3E+PjJdPWE7a1tpPj4yXT0oa1tpPj4yXXwwKSsxfWlmKGtbcT4+Ml18MCl7a1tqPj4yXT1rW3E+PjJdO3E9a1tqPj4yXXwwO3I9cztyZXR1cm4gcXwwfWc9a1tsPj4yXXwwO2lmKChrW28+PjJdfDApPT0tMil7bz16bChnLDI2LHAsMCl8MDtrW3E+PjJdPW87aWYoIShrW3E+PjJdfDApKXtvPWtbcD4+Ml18MDthPUNsKGtbbD4+Ml18MCxrW20+PjJdfDAsa1tuPj4yXXwwLDApfDA7VmUobywxLGEsTCl8MDthPWtbcD4+Ml18MDtvPUNsKGtbbD4+Ml18MCxrW20+PjJdfDAsa1tuPj4yXXwwLDEwMjMpfDA7VmUoYSwyLG8sTCl8MH19ZWxzZXthPXpsKGcsMTYscCwwKXwwO2tbcT4+Ml09YTtpZighKGtbcT4+Ml18MCkpe2E9a1twPj4yXXwwO289Q2woa1tsPj4yXXwwLGtbbT4+Ml18MCxrW24+PjJdfDAsa1tvPj4yXXwwKXwwO1ZlKGEsMSxvLEwpfDB9fWlmKCEoa1txPj4yXXwwKSl7RGUoa1twPj4yXXwwKXwwO3A9Z2Uoa1twPj4yXXwwKXwwO2tbcT4+Ml09cH1rW2o+PjJdPWtbcT4+Ml07cT1rW2o+PjJdfDA7cj1zO3JldHVybiBxfDB9ZnVuY3Rpb24gSWwoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaT0wLGo9MCxsPTAsbT0wLG49MCxvPTAscD0wO3A9cjtyPXIrNDh8MDtmPXArNDR8MDtnPXArNDB8MDtoPXArMTZ8MDtpPXArMzZ8MDtuPXArMzJ8MDtqPXArOHwwO2w9cDtvPXArMjh8MDttPXArMjR8MDtrW2Y+PjJdPWE7a1tnPj4yXT1iO2I9aDtrW2I+PjJdPWM7a1tiKzQ+PjJdPWQ7a1tpPj4yXT1lO2lmKCEoa1trW2c+PjJdPj4yXXwwKSl7Yj1oO289KGtbZz4+Ml18MCkrNTZ8MDtvPVJsKGtbZj4+Ml18MCxrW2I+PjJdfDAsa1tiKzQ+PjJdfDAsa1tpPj4yXXwwLDAsMCwwLDAsMCwwLGtbbz4+Ml18MCxrW28rND4+Ml18MCxrWyhrW2c+PjJdfDApKzQ4Pj4yXXwwLGtbKGtbZz4+Ml18MCkrNDQ+PjJdfDApfDA7a1tuPj4yXT1vO289a1tmPj4yXXwwO289bys1MnwwO2I9a1tvPj4yXXwwO2I9YisxfDA7a1tvPj4yXT1iO289a1tuPj4yXXwwO3I9cDtyZXR1cm4gb3wwfWI9ajtrW2I+PjJdPTA7a1tiKzQ+PjJdPTA7a1tvPj4yXT0wO2tbbT4+Ml09MDtiPShrW2c+PjJdfDApKzE2fDA7ZD1rW2IrND4+Ml18MDtlPWw7a1tlPj4yXT1rW2I+PjJdO2tbZSs0Pj4yXT1kO2U9a1tmPj4yXXwwO2Q9KGtbZz4+Ml18MCkrMTZ8MDtiPWQ7YT1rW2I+PjJdfDA7Yj1rW2IrND4+Ml18MDtjPSRSKGF8MCxifDAsMSwwKXwwO2tbZD4+Ml09YztrW2QrND4+Ml09TDtiPVBsKGUsYSxiLGtbKGtbZz4+Ml18MCkrNDg+PjJdfDAsa1soa1tnPj4yXXwwKSs0ND4+Ml18MCl8MDtrW24+PjJdPWI7aWYoIShrW24+PjJdfDApKXthPShrW2c+PjJdfDApKzh8MDtiPShrW2c+PjJdfDApKzE2fDA7Yj1RbChrW2Y+PjJdfDAsa1trW2c+PjJdPj4yXXwwLDEsa1thPj4yXXwwLGtbYSs0Pj4yXXwwLGtbYj4+Ml18MCxrW2IrND4+Ml18MCxqLG8sbSl8MDtrW24+PjJdPWJ9aWYoa1tuPj4yXXwwKXtvPWtbZj4+Ml18MDtvPW8rNTJ8MDtiPWtbbz4+Ml18MDtiPWIrMXwwO2tbbz4+Ml09YjtvPWtbbj4+Ml18MDtyPXA7cmV0dXJuIG98MH1lPShrW2c+PjJdfDApKzh8MDthPWo7Yj0oa1tnPj4yXXwwKSs1NnwwO289Umwoa1tmPj4yXXwwLGtbaD4+Ml18MCxrW2grND4+Ml18MCxrW2k+PjJdfDAsa1tlPj4yXXwwLGtbZSs0Pj4yXXwwLGtbbD4+Ml18MCxrW2wrND4+Ml18MCxrW2E+PjJdfDAsa1thKzQ+PjJdfDAsa1tiPj4yXXwwLGtbYis0Pj4yXXwwLGtbbz4+Ml18MCxrW20+PjJdfDApfDA7a1tuPj4yXT1vO289a1tmPj4yXXwwO289bys1MnwwO2I9a1tvPj4yXXwwO2I9YisxfDA7a1tvPj4yXT1iO289a1tuPj4yXXwwO3I9cDtyZXR1cm4gb3wwfWZ1bmN0aW9uIEpsKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGk9MCxqPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscz0wLHQ9MCx1PTAsdj0wO3Y9cjtyPXIrODB8MDtmPXYrNzJ8MDtnPXYrNDB8MDtoPXYrMzJ8MDt0PXYrNjh8MDtwPXYrNjR8MDtpPXYrNjB8MDttPXYrMjR8MDtuPXYrMTZ8MDtvPXYrOHwwO2o9djtsPXYrNTZ8MDtxPXYrNTJ8MDtzPXYrNDh8MDtrW2Y+PjJdPWE7YT1nO2tbYT4+Ml09YjtrW2ErND4+Ml09YzthPWg7a1thPj4yXT1kO2tbYSs0Pj4yXT1lO2tbdD4+Ml09MDthPXpsKGtbZj4+Ml18MCwzNyxwLDApfDA7a1t0Pj4yXT1hO2lmKGtbdD4+Ml18MCl7dT1rW3Q+PjJdfDA7cj12O3JldHVybiB1fDB9a1tpPj4yXT0wO2U9ZztlPWlTKGtbZT4+Ml18MCxrW2UrND4+Ml18MCwxMDI0LDApfDA7ZT0kUihlfDAsTHwwLDEsMCl8MDtlPWtTKGV8MCxMfDAsMTAyNCwwKXwwO2U9X1IoZXwwLEx8MCwxLDApfDA7YT1tO2tbYT4+Ml09ZTtrW2ErND4+Ml09TDthPWg7YT1rUyhrW2E+PjJdfDAsa1thKzQ+PjJdfDAsMywwKXwwO2E9aVMoYXwwLEx8MCwyLDApfDA7aD1uO2tbaD4+Ml09YTtrW2grND4+Ml09TDtoPWtbcD4+Ml18MDthPWc7YT0kUihrW2E+PjJdfDAsa1thKzQ+PjJdfDAsMSwwKXwwO1ZlKGgsMSxhLEwpfDA7YT1tO1ZlKGtbcD4+Ml18MCwyLGtbYT4+Ml18MCxrW2ErND4+Ml18MCl8MDt3aGlsZSgxKXtpZigxMDAhPShEZShrW3A+PjJdfDApfDApKWJyZWFrO2E9bztrW2E+PjJdPTA7a1thKzQ+PjJdPTA7T2woa1twPj4yXXwwLDIsaixvKTthPW87bT1rW2ErND4+Ml18MDtpZigobXwwKTwwfChtfDApPT0wJihrW2E+PjJdfDApPj4+MDw9MCl7dT02O2JyZWFrfW09bztlPWtbbSs0Pj4yXXwwO2E9bjtoPWtbYSs0Pj4yXXwwO2lmKChlfDApPihofDApfCgoZXwwKT09KGh8MCk/KGtbbT4+Ml18MCk+Pj4wPihrW2E+PjJdfDApPj4+MDowKSl7dT02O2JyZWFrfWtbaT4+Ml09MX1pZigodXwwKT09NilrW2k+PjJdPTA7dT1nZShrW3A+PjJdfDApfDA7a1t0Pj4yXT11O2lmKCEoa1tpPj4yXXwwKSl7dT1rW3Q+PjJdfDA7cj12O3JldHVybiB1fDB9a1tsPj4yXT0wO2tbcT4+Ml09MDtrW3M+PjJdPTA7aWYoIShrW3Q+PjJdfDApKXt1PXpsKGtbZj4+Ml18MCwzOCxxLDApfDA7a1t0Pj4yXT11fWlmKCEoa1t0Pj4yXXwwKSl7dT16bChrW2Y+PjJdfDAsMzkscywwKXwwO2tbdD4+Ml09dX1hOmRvIGlmKCEoa1t0Pj4yXXwwKSl7dT1nO1ZlKGtbcD4+Ml18MCwxLGtbdT4+Ml18MCxrW3UrND4+Ml18MCl8MDtkb3tpZigxMDAhPShEZShrW3A+PjJdfDApfDApKWJyZWFrIGE7YT1rW3E+PjJdfDA7dT1rW2w+PjJdfDA7a1tsPj4yXT11KzE7VWUoYSwxLHUpfDA7dT1rW3E+PjJdfDA7VWUodSwyLE1lKGtbcD4+Ml18MCwwKXwwKXwwO3U9a1txPj4yXXwwO1VlKHUsMyxNZShrW3A+PjJdfDAsMSl8MCl8MDtEZShrW3E+PjJdfDApfDA7dT1nZShrW3E+PjJdfDApfDA7a1t0Pj4yXT11fXdoaWxlKChrW3Q+PjJdfDApPT0wKTtnZShrW3A+PjJdfDApfDB9d2hpbGUoMCk7aWYoIShrW3Q+PjJdfDApKXt1PWdlKGtbcD4+Ml18MCl8MDtrW3Q+PjJdPXV9aWYoa1t0Pj4yXXwwKXt1PWtbdD4+Ml18MDtyPXY7cmV0dXJuIHV8MH11PWc7VmUoa1tzPj4yXXwwLDEsa1t1Pj4yXXwwLGtbdSs0Pj4yXXwwKXwwO0RlKGtbcz4+Ml18MCl8MDt1PWdlKGtbcz4+Ml18MCl8MDtrW3Q+PjJdPXU7dT1rW3Q+PjJdfDA7cj12O3JldHVybiB1fDB9ZnVuY3Rpb24gS2woYSl7YT1hfDA7dmFyIGI9MCxjPTA7Yz1yO3I9cisxNnwwO2I9YztrW2I+PjJdPWE7aWYoIShrW2I+PjJdfDApKXtyPWM7cmV0dXJufVVkKGtbKGtbYj4+Ml18MCkrNDg+PjJdfDApO1VkKGtbKGtbYj4+Ml18MCkrMzY+PjJdfDApO05sKGtba1tiPj4yXT4+Ml18MCk7VWQoa1tiPj4yXXwwKTtyPWM7cmV0dXJufWZ1bmN0aW9uIExsKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MDtkPXI7cj1yKzE2fDA7Yj1kKzR8MDtjPWQ7a1tiPj4yXT1hO2lmKCEoa1tiPj4yXXwwKSl7cj1kO3JldHVybn1rW2M+PjJdPTA7d2hpbGUoMSl7aWYoKGtbYz4+Ml18MCk+PShrWyhrW2I+PjJdfDApKzQ+PjJdfDApKWJyZWFrO01sKGtbKGtba1tiPj4yXT4+Ml18MCkrKGtbYz4+Ml08PDIpPj4yXXwwKTtrW2M+PjJdPShrW2M+PjJdfDApKzF9VWQoa1trW2I+PjJdPj4yXXwwKTtVZChrWyhrW2I+PjJdfDApKzE2Pj4yXXwwKTtrWyhrW2I+PjJdfDApKzQ+PjJdPTA7a1trW2I+PjJdPj4yXT0wO2tbKGtbYj4+Ml18MCkrMTY+PjJdPTA7cj1kO3JldHVybn1mdW5jdGlvbiBNbChhKXthPWF8MDt2YXIgYj0wLGM9MDtjPXI7cj1yKzE2fDA7Yj1jO2tbYj4+Ml09YTtpZighKGtbYj4+Ml18MCkpe2E9a1tiPj4yXXwwO1VkKGEpO3I9YztyZXR1cm59aWYoIShrWyhrW2I+PjJdfDApKzU2Pj4yXXwwKSlVZChrWyhrW2I+PjJdfDApKzY0Pj4yXXwwKTtpZighKGxbKGtbYj4+Ml18MCkrNT4+MF18MCkpVWQoa1soa1tiPj4yXXwwKSs0MD4+Ml18MCk7ZGYoa1soa1tiPj4yXXwwKSs1Mj4+Ml18MCl8MDthPWtbYj4+Ml18MDtVZChhKTtyPWM7cmV0dXJufWZ1bmN0aW9uIE5sKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MCxlPTA7ZT1yO3I9cisxNnwwO2I9ZSs4fDA7Yz1lKzR8MDtkPWU7a1tiPj4yXT1hO2lmKCEoa1tiPj4yXXwwKSl7cj1lO3JldHVybn1rW2M+PjJdPWtbKGtbYj4+Ml18MCkrOD4+Ml07Tmwoa1trW2M+PjJdPj4yXXwwKTt3aGlsZSgxKXtpZighKGtbYz4+Ml18MCkpYnJlYWs7a1tkPj4yXT1rWyhrW2M+PjJdfDApKzQ+PjJdO2lmKChrWyhrW2M+PjJdfDApKzM2Pj4yXXwwKSE9KChrW2M+PjJdfDApKzQwfDApKVVkKGtbKGtbYz4+Ml18MCkrMzY+PjJdfDApO1VkKGtbKGtbYz4+Ml18MCkrMjg+PjJdfDApO1VkKGtbYz4+Ml18MCk7a1tjPj4yXT1rW2Q+PjJdfXI9ZTtyZXR1cm59ZnVuY3Rpb24gT2woYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxpPTAsaj0wLG09MCxuPTAsbz0wO209cjtyPXIrNDh8MDtvPW0rMzJ8MDtuPW0rMjh8MDtlPW0rMjR8MDtmPW0rMjB8MDtqPW0rMTZ8MDtnPW0rMTJ8MDtoPW0rOHwwO2k9bTtrW28+PjJdPWE7a1tuPj4yXT1iO2tbZT4+Ml09YztrW2Y+PjJdPWQ7ZD1PZShrW28+PjJdfDAsa1tuPj4yXXwwKXwwO2tbaj4+Ml09ZDtpZighKGtbaj4+Ml18MCkpe3I9bTtyZXR1cm59a1toPj4yXT0xO289aTtrW28+PjJdPTA7a1tvKzQ+PjJdPTA7a1tnPj4yXT0wO3doaWxlKDEpe2lmKChsWyhrW2o+PjJdfDApKyhrW2c+PjJdfDApPj4wXXwwfDApPj00OCliPShsWyhrW2o+PjJdfDApKyhrW2c+PjJdfDApPj4wXXwwfDApPD01NztlbHNlIGI9MDtjPWk7YT1rW2M+PjJdfDA7Yz1rW2MrND4+Ml18MDtpZighYilicmVhaztvPWtTKGF8MCxjfDAsMTAsMCl8MDtuPShsWyhrW2o+PjJdfDApKyhrW2c+PjJdfDApPj4wXXwwKS00OHwwO249JFIob3wwLEx8MCxufDAsKChufDApPDApPDwzMT4+MzF8MCl8MDtvPWk7a1tvPj4yXT1uO2tbbys0Pj4yXT1MO2tbZz4+Ml09KGtbZz4+Ml18MCkrMX1vPWtbZT4+Ml18MDtrW28+PjJdPWE7a1tvKzQ+PjJdPWM7d2hpbGUoMSl7aWYoKGxbKGtbaj4+Ml18MCkrKGtbZz4+Ml18MCk+PjBdfDB8MCkhPTMyKWJyZWFrO2tbZz4+Ml09KGtbZz4+Ml18MCkrMX1vPWk7a1tvPj4yXT0wO2tbbys0Pj4yXT0wO2lmKChsWyhrW2o+PjJdfDApKyhrW2c+PjJdfDApPj4wXXwwfDApPT00NSl7a1tnPj4yXT0oa1tnPj4yXXwwKSsxO2tbaD4+Ml09LTF9d2hpbGUoMSl7aWYoKGxbKGtbaj4+Ml18MCkrKGtbZz4+Ml18MCk+PjBdfDB8MCk+PTQ4KWI9KGxbKGtbaj4+Ml18MCkrKGtbZz4+Ml18MCk+PjBdfDB8MCk8PTU3O2Vsc2UgYj0wO2M9aTthPWtbYz4+Ml18MDtjPWtbYys0Pj4yXXwwO2lmKCFiKWJyZWFrO289a1MoYXwwLGN8MCwxMCwwKXwwO249KGxbKGtbaj4+Ml18MCkrKGtbZz4+Ml18MCk+PjBdfDApLTQ4fDA7bj0kUihvfDAsTHwwLG58MCwoKG58MCk8MCk8PDMxPj4zMXwwKXwwO289aTtrW28+PjJdPW47a1tvKzQ+PjJdPUw7a1tnPj4yXT0oa1tnPj4yXXwwKSsxfW49a1toPj4yXXwwO249a1MoYXwwLGN8MCxufDAsKChufDApPDApPDwzMT4+MzF8MCl8MDtvPWtbZj4+Ml18MDtrW28+PjJdPW47a1tvKzQ+PjJdPUw7cj1tO3JldHVybn1mdW5jdGlvbiBQbChhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxpPTAsaj0wLGw9MCxtPTA7bD1yO3I9ciszMnwwO209bCsyNHwwO2Y9bDtnPWwrMjB8MDtoPWwrMTZ8MDtpPWwrMTJ8MDtqPWwrOHwwO2tbbT4+Ml09YTthPWY7a1thPj4yXT1iO2tbYSs0Pj4yXT1jO2tbZz4+Ml09ZDtrW2g+PjJdPWU7ZD16bChrW20+PjJdfDAsOSxpLDApfDA7a1tqPj4yXT1kO2lmKGtbaj4+Ml18MCl7bT1rW2o+PjJdfDA7cj1sO3JldHVybiBtfDB9bT1mO1ZlKGtbaT4+Ml18MCwxLGtbbT4+Ml18MCxrW20rND4+Ml18MCl8MDtTZShrW2k+PjJdfDAsMixrW2c+PjJdfDAsa1toPj4yXXwwLDApfDA7RGUoa1tpPj4yXXwwKXwwO209Z2Uoa1tpPj4yXXwwKXwwO2tbaj4+Ml09bTttPWtbaj4+Ml18MDtyPWw7cmV0dXJuIG18MH1mdW5jdGlvbiBRbChhLGIsYyxkLGUsZixnLGgsaSxqKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtpPWl8MDtqPWp8MDt2YXIgbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wO0I9cjtyPXIrODB8MDtuPUIrNzJ8MDtvPUIrNjh8MDtwPUIrNjR8MDtxPUIrMjR8MDtzPUIrMTZ8MDt0PUIrNjB8MDtsPUIrNTZ8MDttPUIrNTJ8MDtBPUIrNDh8MDt3PUIrNDR8MDt6PUIrNDB8MDt1PUIrOHwwO3Y9Qjt4PUIrMzZ8MDt5PUIrMzJ8MDtrW24+PjJdPWE7a1tvPj4yXT1iO2tbcD4+Ml09YztiPXE7a1tiPj4yXT1kO2tbYis0Pj4yXT1lO2I9cztrW2I+PjJdPWY7a1tiKzQ+PjJdPWc7a1t0Pj4yXT1oO2tbbD4+Ml09aTtrW20+PjJdPWo7a1tBPj4yXT0wO2lmKCEoa1trW28+PjJdPj4yXXwwKSl7aD1xO2g9U2woa1tvPj4yXXwwLGtbcD4+Ml18MCxrW2g+PjJdfDAsa1toKzQ+PjJdfDApfDA7a1t3Pj4yXT1oO2g9cztoPV9SKGtbaD4+Ml18MCxrW2grND4+Ml18MCwxLDApfDA7aj1rW3Q+PjJdfDA7a1tqPj4yXT1oO2tbais0Pj4yXT1MO2tba1ttPj4yXT4+Ml09KGtbKGtbbz4+Ml18MCkrMzI+PjJdfDApLShrW3c+PjJdfDApO2tba1tsPj4yXT4+Ml09KGtbKGtbbz4+Ml18MCkrMzY+PjJdfDApKyhrW3c+PjJdfDApO0E9a1tBPj4yXXwwO3I9QjtyZXR1cm4gQXwwfWo9cztoPWtbais0Pj4yXXwwO2k9dTtrW2k+PjJdPWtbaj4+Ml07a1tpKzQ+PjJdPWg7aT1xO2g9a1tpKzQ+PjJdfDA7aj12O2tbaj4+Ml09a1tpPj4yXTtrW2orND4+Ml09aDtrW3o+PjJdPWtbKGtbbz4+Ml18MCkrOD4+Ml07d2hpbGUoMSl7aWYoISgoa1t6Pj4yXXwwKSE9MD8oa1tBPj4yXXwwKT09MDowKSlicmVhaztqPXY7aj1TbChrW3o+PjJdfDAsa1twPj4yXXwwLGtbaj4+Ml18MCxrW2orND4+Ml18MCl8MDtrW3g+PjJdPWo7a1t5Pj4yXT0oa1soa1t6Pj4yXXwwKSszMj4+Ml18MCktKGtbeD4+Ml18MCk7aj11O2o9UGwoa1tuPj4yXXwwLGtbaj4+Ml18MCxrW2orND4+Ml18MCwoa1soa1t6Pj4yXXwwKSszNj4+Ml18MCkrKGtbeD4+Ml18MCl8MCxrW3k+PjJdfDApfDA7a1tBPj4yXT1qO2o9dTtqPSRSKGtbaj4+Ml18MCxrW2orND4+Ml18MCwxLDApfDA7aD11O2tbaD4+Ml09ajtrW2grND4+Ml09TDtoPShrWyhrW3o+PjJdfDApKzEyPj4yXXwwKSsxfDA7aj12O2g9JFIoa1tqPj4yXXwwLGtbais0Pj4yXXwwLGh8MCwoKGh8MCk8MCk8PDMxPj4zMXwwKXwwO2o9djtrW2o+PjJdPWg7a1tqKzQ+PjJdPUw7a1t6Pj4yXT1rWyhrW3o+PjJdfDApKzQ+PjJdfWlmKGtbQT4+Ml18MCl7QT1rW0E+PjJdfDA7cj1CO3JldHVybiBBfDB9aD1zO2o9dTtqPVFsKGtbbj4+Ml18MCxrW2tbbz4+Ml0+PjJdfDAsKGtbcD4+Ml18MCkrMXwwLGtbaD4+Ml18MCxrW2grND4+Ml18MCxrW2o+PjJdfDAsa1tqKzQ+PjJdfDAsa1t0Pj4yXXwwLGtbbD4+Ml18MCxrW20+PjJdfDApfDA7a1tBPj4yXT1qO0E9a1tBPj4yXXwwO3I9QjtyZXR1cm4gQXwwfWZ1bmN0aW9uIFJsKGEsYixjLGQsZSxmLGcsaCxpLGosbCxtLG4sbyl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aT1pfDA7aj1qfDA7bD1sfDA7bT1tfDA7bj1ufDA7bz1vfDA7dmFyIHA9MCxxPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTAsRT0wO0Q9cjtyPXIrOTZ8MDtCPUQrNDB8MDtwPUQrODR8MDtFPUQrODB8MDtxPUQrMzJ8MDtzPUQrNzZ8MDt0PUQrMjR8MDt1PUQrMTZ8MDt2PUQrOHwwO3c9RDt4PUQrNzJ8MDt5PUQrNjh8MDt6PUQrNjR8MDtBPUQrNjB8MDtDPUQrNTZ8MDtrW0U+PjJdPWE7YT1xO2tbYT4+Ml09YjtrW2ErND4+Ml09YztrW3M+PjJdPWQ7YT10O2tbYT4+Ml09ZTtrW2ErND4+Ml09ZjthPXU7a1thPj4yXT1nO2tbYSs0Pj4yXT1oO2E9djtrW2E+PjJdPWk7a1thKzQ+PjJdPWo7YT13O2tbYT4+Ml09bDtrW2ErND4+Ml09bTtrW3g+PjJdPW47a1t5Pj4yXT1vO249emwoa1tFPj4yXXwwLDExLHosMCl8MDtrW0E+PjJdPW47aWYoIShrW0E+PjJdfDApKXtFPXE7VmUoa1t6Pj4yXXwwLDEsa1tFPj4yXXwwLGtbRSs0Pj4yXXwwKXwwO1VlKGtbej4+Ml18MCwyLGtbcz4+Ml18MCl8MDtFPXQ7VmUoa1t6Pj4yXXwwLDMsa1tFPj4yXXwwLGtbRSs0Pj4yXXwwKXwwO0U9dTtWZShrW3o+PjJdfDAsNCxrW0U+PjJdfDAsa1tFKzQ+PjJdfDApfDA7RT13O2RvIGlmKChrW0U+PjJdfDApPT0wJihrW0UrND4+Ml18MCk9PTApe0U9djtWZShrW3o+PjJdfDAsNSxrW0U+PjJdfDAsa1tFKzQ+PjJdfDApfDB9ZWxzZXtkPXY7bz1rW2QrND4+Ml18MDtuPXc7YT1rW24+PjJdfDA7bj1rW24rND4+Ml18MDtFPUI7a1tFPj4yXT1rW2Q+PjJdO2tbRSs0Pj4yXT1vO0U9Qis4fDA7a1tFPj4yXT1hO2tbRSs0Pj4yXT1uO0U9WWQoMjMxNTMsQil8MDtrW0M+PjJdPUU7aWYoa1tDPj4yXXwwKXtYZShrW3o+PjJdfDAsNSxrW0M+PjJdfDAsLTEsMTQ4KXwwO2JyZWFrfWtbcD4+Ml09NztFPWtbcD4+Ml18MDtyPUQ7cmV0dXJuIEV8MH13aGlsZSgwKTtTZShrW3o+PjJdfDAsNixrW3g+PjJdfDAsa1t5Pj4yXXwwLDApfDA7RGUoa1t6Pj4yXXwwKXwwO0U9Z2Uoa1t6Pj4yXXwwKXwwO2tbQT4+Ml09RX1rW3A+PjJdPWtbQT4+Ml07RT1rW3A+PjJdfDA7cj1EO3JldHVybiBFfDB9ZnVuY3Rpb24gU2woYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTA7Zj1yO3I9ciszMnwwO2c9ZisxNnwwO2o9ZisxMnwwO2g9ZjtlPWYrOHwwO2tbZz4+Ml09YTtrW2o+PjJdPWI7YT1oO2tbYT4+Ml09YztrW2ErND4+Ml09ZDthPWg7YT0xMC0oVGwoa1thPj4yXXwwLGtbYSs0Pj4yXXwwKXwwKXwwO2tbZT4+Ml09YTtpWyhrWyhrW2c+PjJdfDApKzM2Pj4yXXwwKSsoa1tlPj4yXXwwKT4+MF09a1tqPj4yXTthPWg7VWwoKGtbKGtbZz4+Ml18MCkrMzY+PjJdfDApKygoa1tlPj4yXXwwKSsxKXwwLGtbYT4+Ml18MCxrW2ErND4+Ml18MCl8MDtyPWY7cmV0dXJuIGtbZT4+Ml18MH1mdW5jdGlvbiBUbChhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTA7ZT1yO3I9cisxNnwwO2M9ZTtkPWUrOHwwO2Y9YztrW2Y+PjJdPWE7a1tmKzQ+PjJdPWI7a1tkPj4yXT0wO2Rve2tbZD4+Ml09KGtbZD4+Ml18MCkrMTtiPWM7Yj1hUyhrW2I+PjJdfDAsa1tiKzQ+PjJdfDAsNyl8MDtmPWM7a1tmPj4yXT1iO2tbZis0Pj4yXT1MO2Y9Y313aGlsZSgoa1tmPj4yXXwwKSE9MHwoa1tmKzQ+PjJdfDApIT0wKTtyPWU7cmV0dXJuIGtbZD4+Ml18MH1mdW5jdGlvbiBVbChhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTA7Zz1yO3I9ciszMnwwO2Q9ZysyMHwwO2g9Zys4fDA7ZT1nKzE2fDA7Zj1nO2tbZD4+Ml09YTthPWg7a1thPj4yXT1iO2tbYSs0Pj4yXT1jO2tbZT4+Ml09a1tkPj4yXTtiPWg7Yz1rW2IrND4+Ml18MDthPWY7a1thPj4yXT1rW2I+PjJdO2tbYSs0Pj4yXT1jO2Rve2g9KGtbZj4+Ml0mMTI3fDEyOCkmMjU1O2E9a1tlPj4yXXwwO2tbZT4+Ml09YSsxO2lbYT4+MF09aDthPWY7YT1hUyhrW2E+PjJdfDAsa1thKzQ+PjJdfDAsNyl8MDtoPWY7a1toPj4yXT1hO2tbaCs0Pj4yXT1MO2g9Zn13aGlsZSgoa1toPj4yXXwwKSE9MHwoa1toKzQ+PjJdfDApIT0wKTtoPShrW2U+PjJdfDApKy0xfDA7aVtoPj4wXT0obFtoPj4wXXwwKSYxMjc7cj1nO3JldHVybiAoa1tlPj4yXXwwKS0oa1tkPj4yXXwwKXwwfWZ1bmN0aW9uIFZsKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTA7Zz1yO3I9cisxNnwwO2M9ZysxMnwwO2Q9Zys4fDA7Zj1nKzR8MDtlPWc7a1tjPj4yXT1hO2tbZD4+Ml09YjtrW2Y+PjJdPTA7Yj0oa1tkPj4yXXwwKSs4fDA7aWYoISgoa1tiPj4yXXwwKSE9MHwoa1tiKzQ+PjJdfDApIT0wKSl7Zj1rW2Y+PjJdfDA7cj1nO3JldHVybiBmfDB9Yj16bChrW2M+PjJdfDAsMTcsZSwwKXwwO2tbZj4+Ml09YjtpZihrW2Y+PjJdfDApe2Y9a1tmPj4yXXwwO3I9ZztyZXR1cm4gZnwwfWI9KGtbZD4+Ml18MCkrOHwwO1ZlKGtbZT4+Ml18MCwxLGtbYj4+Ml18MCxrW2IrND4+Ml18MCl8MDtiPShrW2Q+PjJdfDApKzI0fDA7VmUoa1tlPj4yXXwwLDIsa1tiPj4yXXwwLGtbYis0Pj4yXXwwKXwwO0RlKGtbZT4+Ml18MCl8MDtiPWdlKGtbZT4+Ml18MCl8MDtrW2Y+PjJdPWI7Zj1rW2Y+PjJdfDA7cj1nO3JldHVybiBmfDB9ZnVuY3Rpb24gV2woYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTA7aj1yO3I9ciszMnwwO2U9aisxNnwwO2Y9aisxMnwwO2c9ais4fDA7aD1qO2tbZT4+Ml09YTtrW2Y+PjJdPWI7a1tnPj4yXT1jO2tbais0Pj4yXT1kO2tbaD4+Ml09MDt3aGlsZSgxKXtpZigoa1toPj4yXXwwKT49KGtbZj4+Ml18MCkpe2U9NTticmVha31pZigoaVsoa1tlPj4yXXwwKSsoa1toPj4yXXwwKT4+MF18MCkhPShpWyhrW2c+PjJdfDApKyhrW2g+PjJdfDApPj4wXXwwKSl7ZT01O2JyZWFrfWtbaD4+Ml09KGtbaD4+Ml18MCkrMX1pZigoZXwwKT09NSl7cj1qO3JldHVybiBrW2g+PjJdfDB9cmV0dXJuIDB9ZnVuY3Rpb24gWGwoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaT0wLGo9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxzPTAsdD0wLHU9MCx2PTAsdz0wO3c9cjtyPXIrNjR8MDtsPXcrNTZ8MDttPXcrNTJ8MDtuPXcrNDh8MDtvPXcrNDR8MDtwPXcrNDB8MDtxPXcrMzZ8MDt1PXcrMzJ8MDt2PXcrMjh8MDtzPXcrMjR8MDtmPXcrMjB8MDtoPXcrMTZ8MDtnPXcrMTJ8MDtpPXcrOHwwO2o9dys0fDA7dD13O2tbbT4+Ml09YTtrW24+PjJdPWI7a1tvPj4yXT1jO2tbcD4+Ml09ZDtrW3E+PjJdPWU7a1t1Pj4yXT1rW2tbbj4+Ml0+PjJdO2RvIGlmKGtbdT4+Ml18MCl7a1tmPj4yXT1rWyhrW3U+PjJdfDApKzMyPj4yXTtrW2g+PjJdPWtbZj4+Ml07Yj1XbChrWyhrW3U+PjJdfDApKzE2Pj4yXXwwLGtbKGtbdT4+Ml18MCkrMjA+PjJdfDAsa1twPj4yXXwwLGtbcT4+Ml18MCl8MDtrW2c+PjJdPWI7a1tpPj4yXT0oa1txPj4yXXwwKS0oa1tnPj4yXXwwKTtiPWtbZz4+Ml18MDtiPVRsKGIsKChifDApPDApPDwzMT4+MzEpfDA7ZD1rW2k+PjJdfDA7ZD1iKyhUbChkLCgoZHwwKTwwKTw8MzE+PjMxKXwwKXwwO2tbaD4+Ml09KGtbaD4+Ml18MCkrKGQrKGtbaT4+Ml18MCkpO2lmKChrW2g+PjJdfDApPihrWyhrW20+PjJdfDApKzIyND4+Ml18MCk/KGtbKGtbdT4+Ml18MCkrMTY+PjJdfDApIT0wOjApYnJlYWs7aWYoKGtbaD4+Ml18MCk+KGtbKGtbbT4+Ml18MCkrMjI0Pj4yXXwwKT8odj1TZChrW2g+PjJdfDApfDAsa1soa1t1Pj4yXXwwKSszNj4+Ml09diwoa1soa1t1Pj4yXXwwKSszNj4+Ml18MCk9PTApOjApe2tbbD4+Ml09Nzt2PWtbbD4+Ml18MDtyPXc7cmV0dXJuIHZ8MH1pZihrWyhrW3U+PjJdfDApKzE2Pj4yXXwwKXt2PWtbZz4+Ml18MDt2PVVsKChrWyhrW3U+PjJdfDApKzM2Pj4yXXwwKSsoa1tmPj4yXXwwKXwwLHYsKCh2fDApPDApPDwzMT4+MzEpfDA7a1tmPj4yXT0oa1tmPj4yXXwwKSt2fXY9a1tpPj4yXXwwO3Y9VWwoKGtbKGtbdT4+Ml18MCkrMzY+PjJdfDApKyhrW2Y+PjJdfDApfDAsdiwoKHZ8MCk8MCk8PDMxPj4zMSl8MDtrW2Y+PjJdPShrW2Y+PjJdfDApK3Y7YlMoKGtbKGtbdT4+Ml18MCkrMzY+PjJdfDApKyhrW2Y+PjJdfDApfDAsKGtbcD4+Ml18MCkrKGtbZz4+Ml18MCl8MCxrW2k+PjJdfDApfDA7a1soa1t1Pj4yXXwwKSszMj4+Ml09KGtbZj4+Ml18MCkrKGtbaT4+Ml18MCk7dj0oa1t1Pj4yXXwwKSsxMnwwO2tbdj4+Ml09KGtbdj4+Ml18MCkrMTtpZihrW28+PjJdfDApe2RvIGlmKChrWyhrW3U+PjJdfDApKzI0Pj4yXXwwKTwoa1txPj4yXXwwKSl7dj1WZChrWyhrW3U+PjJdfDApKzI4Pj4yXXwwLGtbcT4+Ml08PDEpfDA7a1tqPj4yXT12O2lmKGtbaj4+Ml18MCl7a1soa1t1Pj4yXXwwKSsyND4+Ml09a1txPj4yXTw8MTtrWyhrW3U+PjJdfDApKzI4Pj4yXT1rW2o+PjJdO2JyZWFrfWtbbD4+Ml09Nzt2PWtbbD4+Ml18MDtyPXc7cmV0dXJuIHZ8MH13aGlsZSgwKTtrWyhrW3U+PjJdfDApKzE2Pj4yXT1rWyhrW3U+PjJdfDApKzI4Pj4yXTtiUyhrWyhrW3U+PjJdfDApKzE2Pj4yXXwwLGtbcD4+Ml18MCxrW3E+PjJdfDApfDA7a1soa1t1Pj4yXXwwKSsyMD4+Ml09a1txPj4yXX1lbHNle2tbKGtbdT4+Ml18MCkrMTY+PjJdPWtbcD4+Ml07a1soa1t1Pj4yXXwwKSsyMD4+Ml09a1txPj4yXX1rW2w+PjJdPTA7dj1rW2w+PjJdfDA7cj13O3JldHVybiB2fDB9d2hpbGUoMCk7ZD1TZCg0MCsoa1soa1ttPj4yXXwwKSsyMjQ+PjJdfDApfDApfDA7a1tzPj4yXT1kO2lmKCEoa1tzPj4yXXwwKSl7a1tsPj4yXT03O3Y9a1tsPj4yXXwwO3I9dztyZXR1cm4gdnwwfWM9a1tzPj4yXXwwO2Y9Yys0MHwwO2Rve2tbYz4+Ml09MDtjPWMrNHwwfXdoaWxlKChjfDApPChmfDApKTtrWyhrW3M+PjJdfDApKzMyPj4yXT0xMTtrWyhrW3M+PjJdfDApKzM2Pj4yXT0oa1tzPj4yXXwwKSs0MDtpZihrW3U+PjJdfDApe2tbdD4+Ml09a1trW3U+PjJdPj4yXTtxPVhsKGtbbT4+Ml18MCx0LGtbbz4+Ml18MCxrW3A+PjJdfDAsa1txPj4yXXwwKXwwO2tbdj4+Ml09cTtpZighKGtba1t1Pj4yXT4+Ml18MCkpa1trW3U+PjJdPj4yXT1rW3Q+PjJdO2tbKGtbdT4+Ml18MCkrND4+Ml09a1tzPj4yXTtrWyhrW3M+PjJdfDApKzg+PjJdPWtbKGtbdT4+Ml18MCkrOD4+Ml07a1trW3M+PjJdPj4yXT1rW3Q+PjJdO2tbKGtbcz4+Ml18MCkrMjg+PjJdPWtbKGtbdT4+Ml18MCkrMjg+PjJdO2tbKGtbcz4+Ml18MCkrMjQ+PjJdPWtbKGtbdT4+Ml18MCkrMjQ+PjJdO2tbKGtbdT4+Ml18MCkrMjg+PjJdPTB9ZWxzZXtrWyhrW3M+PjJdfDApKzg+PjJdPWtbcz4+Ml07dT1YbChrW20+PjJdfDAscyxrW28+PjJdfDAsa1twPj4yXXwwLGtbcT4+Ml18MCl8MDtrW3Y+PjJdPXV9a1trW24+PjJdPj4yXT1rW3M+PjJdO2tbbD4+Ml09a1t2Pj4yXTt2PWtbbD4+Ml18MDtyPXc7cmV0dXJuIHZ8MH1mdW5jdGlvbiBZbChhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTA7Zj1yO3I9cisxNnwwO2M9Zis4fDA7ZD1mKzR8MDtlPWY7a1tjPj4yXT1hO2tbZD4+Ml09YjtrW2U+PjJdPSgoa1soa1tjPj4yXXwwKSs4MD4+Ml18MCk9PTAmMSktKChrWyhrW2Q+PjJdfDApKzgwPj4yXXwwKT09MCYxKTtpZihrW2U+PjJdfDApe2U9a1tlPj4yXXwwO3I9ZjtyZXR1cm4gZXwwfWE9KGtbYz4+Ml18MCkrODh8MDtiPShrW2Q+PjJdfDApKzg4fDA7aWYoKGtbYT4+Ml18MCk9PShrW2I+PjJdfDApPyhrW2ErND4+Ml18MCk9PShrW2IrND4+Ml18MCk6MCl7a1tlPj4yXT0oa1trW2Q+PjJdPj4yXXwwKS0oa1trW2M+PjJdPj4yXXwwKTtlPWtbZT4+Ml18MDtyPWY7cmV0dXJuIGV8MH1lbHNle2E9KGtbYz4+Ml18MCkrODh8MDtjPWtbYSs0Pj4yXXwwO2I9KGtbZD4+Ml18MCkrODh8MDtkPWtbYis0Pj4yXXwwO2tbZT4+Ml09KGN8MCk8KGR8MCl8KChjfDApPT0oZHwwKT8oa1thPj4yXXwwKT4+PjA8KGtbYj4+Ml18MCk+Pj4wOjApPzE6LTE7ZT1rW2U+PjJdfDA7cj1mO3JldHVybiBlfDB9cmV0dXJuIDB9ZnVuY3Rpb24gWmwoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wO2Y9cjtyPXIrMTZ8MDtjPWYrOHwwO2Q9Zis0fDA7ZT1mO2tbYz4+Ml09YTtrW2Q+PjJdPWI7a1tlPj4yXT0oKGtbKGtbYz4+Ml18MCkrODA+PjJdfDApPT0wJjEpLSgoa1soa1tkPj4yXXwwKSs4MD4+Ml18MCk9PTAmMSk7aWYoa1tlPj4yXXwwKXtlPWtbZT4+Ml18MDtyPWY7cmV0dXJuIGV8MH1hPShrW2M+PjJdfDApKzg4fDA7Yj0oa1tkPj4yXXwwKSs4OHwwO2lmKChrW2E+PjJdfDApPT0oa1tiPj4yXXwwKT8oa1thKzQ+PjJdfDApPT0oa1tiKzQ+PjJdfDApOjApe2tbZT4+Ml09KGtba1tkPj4yXT4+Ml18MCktKGtba1tjPj4yXT4+Ml18MCk7ZT1rW2U+PjJdfDA7cj1mO3JldHVybiBlfDB9ZWxzZXthPShrW2M+PjJdfDApKzg4fDA7Yz1rW2ErND4+Ml18MDtiPShrW2Q+PjJdfDApKzg4fDA7ZD1rW2IrND4+Ml18MDtrW2U+PjJdPShjfDApPihkfDApfCgoY3wwKT09KGR8MCk/KGtbYT4+Ml18MCk+Pj4wPihrW2I+PjJdfDApPj4+MDowKT8xOi0xO2U9a1tlPj4yXXwwO3I9ZjtyZXR1cm4gZXwwfXJldHVybiAwfWZ1bmN0aW9uIF9sKGEpe2E9YXwwO3ZhciBiPTAsYz0wO2M9cjtyPXIrMTZ8MDtiPWM7a1tiPj4yXT1hO2lmKGxbKGtbYj4+Ml18MCkrNT4+MF18MCl7YT1rW2I+PjJdfDA7YT1hKzQwfDA7a1thPj4yXT0wO3I9YztyZXR1cm59VWQoa1soa1tiPj4yXXwwKSs0MD4+Ml18MCk7ZGYoa1soa1tiPj4yXXwwKSs1Mj4+Ml18MCl8MDtrWyhrW2I+PjJdfDApKzUyPj4yXT0wO2E9a1tiPj4yXXwwO2E9YSs0MHwwO2tbYT4+Ml09MDtyPWM7cmV0dXJufWZ1bmN0aW9uICRsKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsbT0wLG49MCxvPTAscD0wLHE9MCxzPTAsdD0wLHU9MCx2PTA7dj1yO3I9cis2NHwwO3M9dis1MnwwO2Q9dis0OHwwO3Q9dis0NHwwO2U9dis0MHwwO3A9diszNnwwO3U9diszMnwwO249disyOHwwO289disyNHwwO2g9disyMHwwO2Y9disxNnwwO2o9disxMnwwO2c9dis4fDA7bT12KzR8MDtxPXY7a1tkPj4yXT1hO2tbdD4+Ml09YjtrW2U+PjJdPWM7Yz1rW3Q+PjJdfDA7aWYoa1soa1t0Pj4yXXwwKSs3Mj4+Ml18MClrW3U+PjJdPShrWyhrW3Q+PjJdfDApKzcyPj4yXXwwKSsoa1tjKzc2Pj4yXXwwKTtlbHNlIGtbdT4+Ml09a1tjKzQwPj4yXTtpZighKChrW3U+PjJdfDApIT0wPyhrW3U+PjJdfDApPj4+MDwoKGtbKGtbdD4+Ml18MCkrNDA+PjJdfDApKyhrWyhrW3Q+PjJdfDApKzQ0Pj4yXXwwKXwwKT4+PjA6MCkpe2M9a1t0Pj4yXXwwO2lmKGtbKGtbdD4+Ml18MCkrNTY+PjJdfDApe2tbaD4+Ml09a1trW2MrNTY+PjJdPj4yXTtVZChrWyhrW3Q+PjJdfDApKzQwPj4yXXwwKTtrWyhrW3Q+PjJdfDApKzQwPj4yXT0wO2RvIGlmKGtbaD4+Ml18MCl7a1tqPj4yXT1rWyhrW2g+PjJdfDApKzg+PjJdO2tbZz4+Ml09KGtba1tqPj4yXT4+Ml18MCkrMTtrWyhrW3Q+PjJdfDApKzY0Pj4yXT1rWyhrW2g+PjJdfDApKzEyPj4yXTtrWyhrW3Q+PjJdfDApKzYwPj4yXT1rWyhrW2g+PjJdfDApKzE2Pj4yXTt1PVNkKGtbZz4+Ml18MCl8MDtrW2Y+PjJdPXU7aWYoa1tmPj4yXXwwKXtiUyhrW2Y+PjJdfDAsa1soa1tqPj4yXXwwKSs0Pj4yXXwwLGtbZz4+Ml18MCl8MDt1PWtbZz4+Ml18MDtrWyhrW3Q+PjJdfDApKzc2Pj4yXT11O2tbKGtbdD4+Ml18MCkrNDQ+PjJdPXU7dT1rW2Y+PjJdfDA7a1soa1t0Pj4yXXwwKSs3Mj4+Ml09dTtrWyhrW3Q+PjJdfDApKzQwPj4yXT11O3U9KGtbdD4+Ml18MCkrNTZ8MDtrW3U+PjJdPShrW3U+PjJdfDApKzQ7YnJlYWt9a1tzPj4yXT03O3U9a1tzPj4yXXwwO3I9djtyZXR1cm4gdXwwfXdoaWxlKDApO2tbcz4+Ml09MDt1PWtbcz4+Ml18MDtyPXY7cmV0dXJuIHV8MH1fbChjKTtoPShrW3Q+PjJdfDApKzMyfDA7Zj1rW2grND4+Ml18MDtqPShrW3Q+PjJdfDApKzE2fDA7Zz1rW2orND4+Ml18MDtpZigoZnwwKT4oZ3wwKXwoKGZ8MCk9PShnfDApPyhrW2g+PjJdfDApPj4+MD49KGtbaj4+Ml18MCk+Pj4wOjApKXtrW3M+PjJdPTA7dT1rW3M+PjJdfDA7cj12O3JldHVybiB1fDB9Zz1rW2Q+PjJdfDA7Zj0oa1t0Pj4yXXwwKSszMnwwO2g9ZjtoPSRSKGtbaD4+Ml18MCxrW2grND4+Ml18MCwxLDApfDA7aj1MO2tbZj4+Ml09aDtrW2YrND4+Ml09ajtqPXFtKGcsaCxqLChrW3Q+PjJdfDApKzQwfDAsKGtbdD4+Ml18MCkrNDR8MCwoa1tlPj4yXXwwKSE9MD8oa1t0Pj4yXXwwKSs0OHwwOjApfDA7a1twPj4yXT1qO2lmKGtbcD4+Ml18MCl7a1tzPj4yXT1rW3A+PjJdO3U9a1tzPj4yXXwwO3I9djtyZXR1cm4gdXwwfWlmKChrW2U+PjJdfDApIT0wPyhrWyhrW3Q+PjJdfDApKzQ4Pj4yXXwwKTwoa1soa1t0Pj4yXXwwKSs0ND4+Ml18MCk6MCl7a1soa1t0Pj4yXXwwKSs1Mj4+Ml09a1soa1tkPj4yXXwwKSsyNDQ+PjJdO2tbKGtbZD4+Ml18MCkrMjQ0Pj4yXT0wfWtbdT4+Ml09a1soa1t0Pj4yXXwwKSs0MD4+Ml19aj1tbShrW3Q+PjJdfDAsa1t1Pj4yXXwwLDIwKXwwO2tbcD4+Ml09ajtpZihrW3A+PjJdfDApe2tbcz4+Ml09a1twPj4yXTt1PWtbcz4+Ml18MDtyPXY7cmV0dXJuIHV8MH1jPWtbdT4+Ml18MDtpZihsW2tbdT4+Ml0+PjBdJjEyOCljPWptKGMsbil8MDtlbHNle2tbbj4+Ml09bFtjPj4wXTtjPTF9a1t1Pj4yXT0oa1t1Pj4yXXwwKStjO2M9a1t1Pj4yXXwwO2lmKGxba1t1Pj4yXT4+MF0mMTI4KWM9am0oYyxvKXwwO2Vsc2V7a1tvPj4yXT1sW2M+PjBdO2M9MX1rW3U+PjJdPShrW3U+PjJdfDApK2M7aWYoISgoa1tuPj4yXXwwKTwwfChrW28+PjJdfDApPD0wKT8oKGtbdT4+Ml18MCkrKGtbbz4+Ml18MCl8MCk+Pj4wPD0oKGtbKGtbdD4+Ml18MCkrNDA+PjJdfDApKyhrWyhrW3Q+PjJdfDApKzQ0Pj4yXXwwKXwwKT4+PjA6MCl7ZG8gaWYoKChrW24+PjJdfDApKyhrW28+PjJdfDApfDApPihrWyhrW3Q+PjJdfDApKzY4Pj4yXXwwKSl7a1ttPj4yXT0oa1tuPj4yXXwwKSsoa1tvPj4yXXwwKTw8MTtqPVZkKGtbKGtbdD4+Ml18MCkrNjQ+PjJdfDAsa1ttPj4yXXwwKXwwO2tbcT4+Ml09ajtpZihrW3E+PjJdfDApe2tbKGtbdD4+Ml18MCkrNjQ+PjJdPWtbcT4+Ml07a1soa1t0Pj4yXXwwKSs2OD4+Ml09a1ttPj4yXTticmVha31rW3M+PjJdPTc7dT1rW3M+PjJdfDA7cj12O3JldHVybiB1fDB9d2hpbGUoMCk7cT1tbShrW3Q+PjJdfDAsa1t1Pj4yXXwwLChrW28+PjJdfDApKzEwfDApfDA7a1twPj4yXT1xO2lmKGtbcD4+Ml18MCl7a1tzPj4yXT1rW3A+PjJdO3U9a1tzPj4yXXwwO3I9djtyZXR1cm4gdXwwfWJTKChrWyhrW3Q+PjJdfDApKzY0Pj4yXXwwKSsoa1tuPj4yXXwwKXwwLGtbdT4+Ml18MCxrW28+PjJdfDApfDA7a1soa1t0Pj4yXXwwKSs2MD4+Ml09KGtbbj4+Ml18MCkrKGtbbz4+Ml18MCk7a1t1Pj4yXT0oa1t1Pj4yXXwwKSsoa1tvPj4yXXwwKTtjPWtbdT4+Ml18MDtpZihsW2tbdT4+Ml0+PjBdJjEyOCljPWptKGMsKGtbdD4+Ml18MCkrNzZ8MCl8MDtlbHNle2tbKGtbdD4+Ml18MCkrNzY+PjJdPWxbYz4+MF07Yz0xfWtbdT4+Ml09KGtbdT4+Ml18MCkrYztrWyhrW3Q+PjJdfDApKzcyPj4yXT1rW3U+PjJdO2tbKGtbdD4+Ml18MCkrODA+PjJdPTA7ZG8gaWYoKChrWyhrW3Q+PjJdfDApKzcyPj4yXXwwKSsoa1soa1t0Pj4yXXwwKSs3Nj4+Ml18MCl8MCk+Pj4wPD0oKGtbKGtbdD4+Ml18MCkrNDA+PjJdfDApKyhrWyhrW3Q+PjJdfDApKzQ0Pj4yXXwwKXwwKT4+PjApe2lmKChrWyhrW3Q+PjJdfDApKzQ4Pj4yXXwwKT09MD8oaVsoa1soa1t0Pj4yXXwwKSs3Mj4+Ml18MCkrKChrWyhrW3Q+PjJdfDApKzc2Pj4yXXwwKS0xKT4+MF18MCkhPTA6MClicmVhaztrW3M+PjJdPTA7dT1rW3M+PjJdfDA7cj12O3JldHVybiB1fDB9d2hpbGUoMCk7a1tzPj4yXT0yNjc7dT1rW3M+PjJdfDA7cj12O3JldHVybiB1fDB9a1tzPj4yXT0yNjc7dT1rW3M+PjJdfDA7cj12O3JldHVybiB1fDB9ZnVuY3Rpb24gYW0oYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MDtnPXI7cj1yKzE2fDA7Yz1nKzEyfDA7ZD1nKzh8MDtlPWcrNHwwO2Y9ZztrW2M+PjJdPWE7a1tkPj4yXT1iO2lmKChrWyhrW2M+PjJdfDApKzQwPj4yXXwwKSE9MD8oa1soa1tkPj4yXXwwKSs0MD4+Ml18MCkhPTA6MCl7a1tmPj4yXT0oa1soa1tjPj4yXXwwKSs2MD4+Ml18MCktKGtbKGtbZD4+Ml18MCkrNjA+PjJdfDApO2E9a1soa1tjPj4yXXwwKSs2ND4+Ml18MDtiPWtbKGtbZD4+Ml18MCkrNjQ+PjJdfDA7aWYoKGtbZj4+Ml18MCk8MCl7Yj1vUihhLGIsa1soa1tjPj4yXXwwKSs2MD4+Ml18MCl8MDtrW2U+PjJdPWJ9ZWxzZXtiPW9SKGEsYixrWyhrW2Q+PjJdfDApKzYwPj4yXXwwKXwwO2tbZT4+Ml09Yn1pZighKGtbZT4+Ml18MCkpa1tlPj4yXT1rW2Y+PjJdfWVsc2Uga1tlPj4yXT0oKGtbKGtbYz4+Ml18MCkrNDA+PjJdfDApPT0wJjEpLSgoa1soa1tkPj4yXXwwKSs0MD4+Ml18MCk9PTAmMSk7aWYoa1tlPj4yXXwwKXtmPWtbZT4+Ml18MDtyPWc7cmV0dXJuIGZ8MH1rW2U+PjJdPShrW2tbZD4+Ml0+PjJdfDApLShrW2tbYz4+Ml0+PjJdfDApO2Y9a1tlPj4yXXwwO3I9ZztyZXR1cm4gZnwwfWZ1bmN0aW9uIGJtKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaT0wLGo9MCxsPTAsbT0wO209cjtyPXIrMzJ8MDtlPW0rMjR8MDtmPW0rMjB8MDtnPW0rMTZ8MDtoPW0rMTJ8MDtpPW0rOHwwO2o9bSs0fDA7bD1tO2tbZT4+Ml09YTtrW2Y+PjJdPWI7a1tnPj4yXT1jO2tbaD4+Ml09ZDtpZigoa1tnPj4yXXwwKT09KGtbZj4+Ml18MCkpa1tnPj4yXT0oa1tnPj4yXXwwKSstMTtrW2k+PjJdPShrW2c+PjJdfDApLTE7d2hpbGUoMSl7aWYoKGtbaT4+Ml18MCk8MClicmVhaztrW2o+PjJdPWtbaT4+Ml07d2hpbGUoMSl7aWYoKGtbaj4+Ml18MCk+PSgoa1tmPj4yXXwwKS0xfDApKWJyZWFrO2lmKChnY1trW2g+PjJdJjI1NV0oa1soa1tlPj4yXXwwKSsoa1tqPj4yXTw8Mik+PjJdfDAsa1soa1tlPj4yXXwwKSsoKGtbaj4+Ml18MCkrMTw8Mik+PjJdfDApfDApPDApYnJlYWs7a1tsPj4yXT1rWyhrW2U+PjJdfDApKygoa1tqPj4yXXwwKSsxPDwyKT4+Ml07a1soa1tlPj4yXXwwKSsoKGtbaj4+Ml18MCkrMTw8Mik+PjJdPWtbKGtbZT4+Ml18MCkrKGtbaj4+Ml08PDIpPj4yXTtrWyhrW2U+PjJdfDApKyhrW2o+PjJdPDwyKT4+Ml09a1tsPj4yXTtrW2o+PjJdPShrW2o+PjJdfDApKzF9a1tpPj4yXT0oa1tpPj4yXXwwKSstMX1yPW07cmV0dXJufWZ1bmN0aW9uIGNtKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxpPTA7aT1yO3I9ciszMnwwO2Q9aSsxNnwwO2U9aSsxMnwwO2Y9aSs4fDA7Zz1pKzR8MDtoPWk7a1tlPj4yXT1hO2tbZj4+Ml09YjtrW2c+PjJdPWM7ZG8gaWYoKGtbZz4+Ml18MCk+KGtbKGtbZT4+Ml18MCkrMjA+PjJdfDApKXtrWyhrW2U+PjJdfDApKzIwPj4yXT1rW2c+PjJdPDwxO2E9VmQoa1soa1tlPj4yXXwwKSsxNj4+Ml18MCxrWyhrW2U+PjJdfDApKzIwPj4yXXwwKXwwO2tbaD4+Ml09YTtpZihrW2g+PjJdfDApe2tbKGtbZT4+Ml18MCkrMTY+PjJdPWtbaD4+Ml07YnJlYWt9a1tkPj4yXT03O2g9a1tkPj4yXXwwO3I9aTtyZXR1cm4gaHwwfXdoaWxlKDApO2JTKGtbKGtbZT4+Ml18MCkrMTY+PjJdfDAsa1tmPj4yXXwwLGtbZz4+Ml18MCl8MDtrW2Q+PjJdPTA7aD1rW2Q+PjJdfDA7cj1pO3JldHVybiBofDB9ZnVuY3Rpb24gZG0oYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTA7Zz1yO3I9ciszMnwwO2g9ZysxMnwwO2M9Zys4fDA7Zj1nKzR8MDtkPWcrMTZ8MDtlPWc7a1toPj4yXT1hO2tbYz4+Ml09YjtrW2Y+PjJdPTA7aWYoKGxbKGtbaD4+Ml18MCkrMjMxPj4wXXwwfDApIT0wPyhrWyhrW2M+PjJdfDApKzU2Pj4yXXwwKSE9MDowKXtpW2Q+PjBdPTA7aD0oa1tjPj4yXXwwKSs4OHwwO2tbaD4+Ml09MDtrW2grND4+Ml09MDtrWyhrW2M+PjJdfDApKzg0Pj4yXT0wO2ttKDAsa1soa1tjPj4yXXwwKSs3Mj4+Ml18MCxrWyhrW2M+PjJdfDApKzc2Pj4yXXwwLChrW2M+PjJdfDApKzgwfDAsKGtbYz4+Ml18MCkrODh8MCwoa1tjPj4yXXwwKSs4NHwwLGQpO2g9a1tmPj4yXXwwO3I9ZztyZXR1cm4gaHwwfWg9bW0oa1tjPj4yXXwwLGtbKGtbYz4+Ml18MCkrNzI+PjJdfDAsMTApfDA7a1tmPj4yXT1oO2lmKGtbZj4+Ml18MCl7aD1rW2Y+PjJdfDA7cj1nO3JldHVybiBofDB9aD1pbShrWyhrW2M+PjJdfDApKzcyPj4yXXwwLChrW2M+PjJdfDApKzg4fDApfDA7a1tlPj4yXT1oO2tbKGtbYz4+Ml18MCkrODA+PjJdPShrWyhrW2M+PjJdfDApKzcyPj4yXXwwKSsoa1tlPj4yXXwwKTtoPWtbZj4+Ml18MDtyPWc7cmV0dXJuIGh8MH1mdW5jdGlvbiBlbShhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MCxtPTAsbj0wLG89MCxwPTAscT0wLHM9MCx0PTAsdT0wO3U9cjtyPXIrNDh8MDtzPXUrMzZ8MDt0PXUrMzJ8MDtxPXUrMjh8MDtlPXUrMjR8MDtmPXUrMjB8MDtwPXUrMTZ8MDtuPXUrMTJ8MDtoPXUrNDF8MDtnPXUrNDB8MDtvPXUrOHwwO209dTtrW3Q+PjJdPWE7a1txPj4yXT1iO2tbZT4+Ml09YztrW2Y+PjJdPWQ7a1twPj4yXT0wO2tbbj4+Ml09a1soa1txPj4yXXwwKSs4MD4+Ml07aVtoPj4wXT0wO2RvIGlmKChsWyhrW3Q+PjJdfDApKzIzMT4+MF18MCkhPTA/KGtbKGtbcT4+Ml18MCkrNTY+PjJdfDApIT0wOjApe2lbZz4+MF09MDtpZihrW2U+PjJdfDApe2tba1tlPj4yXT4+Ml09a1soa1txPj4yXXwwKSs4MD4+Ml07a1trW2Y+PjJdPj4yXT0oa1soa1txPj4yXXwwKSs4ND4+Ml18MCktMX1rbSgwLGtbKGtbcT4+Ml18MCkrNzI+PjJdfDAsa1soa1txPj4yXXwwKSs3Nj4+Ml18MCxuLChrW3E+PjJdfDApKzg4fDAsKGtbcT4+Ml18MCkrODR8MCxnKTtpZihpW2c+PjBdfDApe2tbKGtbcT4+Ml18MCkrODA+PjJdPTA7YnJlYWt9ZWxzZXtrWyhrW3E+PjJdfDApKzgwPj4yXT1rW24+PjJdO2JyZWFrfX1lbHNlIGo9ODt3aGlsZSgwKTtkbyBpZigoanwwKT09OCl7a1tvPj4yXT0oa1soa1txPj4yXXwwKSs3Mj4+Ml18MCkrKGtbKGtbcT4+Ml18MCkrNzY+PjJdfDApO3doaWxlKDEpe2lmKGlba1tuPj4yXT4+MF18aVtoPj4wXSl7Yz1rW24+PjJdfDA7a1tuPj4yXT1jKzE7aVtoPj4wXT1pW2M+PjBdJjEyODtjb250aW51ZX1pZighKGtbKGtbcT4+Ml18MCkrNTI+PjJdfDApKWJyZWFrO2lmKChrW24+PjJdfDApPj4+MDwoKGtbKGtbcT4+Ml18MCkrNDA+PjJdfDApKyhrWyhrW3E+PjJdfDApKzQ4Pj4yXXwwKXwwKT4+PjApYnJlYWs7Yz1sbShrW3E+PjJdfDApfDA7a1twPj4yXT1jO2lmKGtbcD4+Ml18MCl7aj0xNDticmVha319aWYoKGp8MCk9PTE0KXtrW3M+PjJdPWtbcD4+Ml07dD1rW3M+PjJdfDA7cj11O3JldHVybiB0fDB9a1tuPj4yXT0oa1tuPj4yXXwwKSsxO2lmKGtbZT4+Ml18MCl7a1trW2U+PjJdPj4yXT1rWyhrW3E+PjJdfDApKzgwPj4yXTtrW2tbZj4+Ml0+PjJdPShrW24+PjJdfDApLShrWyhrW3E+PjJdfDApKzgwPj4yXXwwKS0xfXdoaWxlKDEpe2lmKChrW24+PjJdfDApPj4+MDwoa1tvPj4yXXwwKT4+PjApZT0oaVtrW24+PjJdPj4wXXwwKT09MDtlbHNlIGU9MDtmPWtbbj4+Ml18MDtpZighZSlicmVhaztrW24+PjJdPWYrMX1lPWtbcT4+Ml18MDtpZihmPj4+MD49KGtbbz4+Ml18MCk+Pj4wKXtrW2UrODA+PjJdPTA7YnJlYWt9bz1tbShlLGtbbj4+Ml18MCwxMCl8MDtrW3A+PjJdPW87aWYoIShrW3A+PjJdfDApKXtiPWtbbj4+Ml18MDtiPWIrKGltKGtbbj4+Ml18MCxtKXwwKXwwO2tbKGtbcT4+Ml18MCkrODA+PjJdPWI7Yj1tO2g9a1tiPj4yXXwwO2I9a1tiKzQ+PjJdfDA7ZT0oa1txPj4yXXwwKSs4OHwwO2c9ZTtmPWtbZz4+Ml18MDtnPWtbZys0Pj4yXXwwO2lmKGlbKGtbdD4+Ml18MCkrMjMxPj4wXXwwKXtxPV9SKGZ8MCxnfDAsaHwwLGJ8MCl8MDt0PWU7a1t0Pj4yXT1xO2tbdCs0Pj4yXT1MO2JyZWFrfWVsc2V7cT0kUihmfDAsZ3wwLGh8MCxifDApfDA7dD1lO2tbdD4+Ml09cTtrW3QrND4+Ml09TDticmVha319fXdoaWxlKDApO2tbcz4+Ml09MDt0PWtbcz4+Ml18MDtyPXU7cmV0dXJuIHR8MH1mdW5jdGlvbiBmbShhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MCxtPTAsbj0wLG89MCxwPTAscT0wLHM9MCx0PTA7dD1yO3I9cis0OHwwO2U9dCszMnwwO2Y9dCsyOHwwO2c9dCsyNHwwO2g9dCsyMHwwO3E9dCsxNnwwO249dCsxMnwwO3A9dCs4fDA7bT10KzR8MDtvPXQ7aj10KzM2fDA7a1tlPj4yXT1hO2tbZj4+Ml09YjtrW2c+PjJdPWM7a1toPj4yXT1kO2tbcT4+Ml09a1trW2c+PjJdPj4yXTtrW24+PjJdPWtba1toPj4yXT4+Ml07a1twPj4yXT0oa1txPj4yXXwwKSsoa1tuPj4yXXwwKTtrW20+PjJdPTA7a1tvPj4yXT1rW3E+PjJdO3doaWxlKDEpe2lbaj4+MF09MDt3aGlsZSgxKXtpZigoa1tvPj4yXXwwKT4+PjA+PShrW3A+PjJdfDApPj4+MClicmVhaztpZighKChpW2o+PjBdfGlba1tvPj4yXT4+MF0pJjI1NCkpYnJlYWs7Yz1rW28+PjJdfDA7a1tvPj4yXT1jKzE7aVtqPj4wXT1pW2M+PjBdJjEyOH1iPShrW28+PjJdfDApLShrW3E+PjJdfDApfDA7aWYoKGtbZT4+Ml18MCk9PShrW20+PjJdfDApKXtzPTc7YnJlYWt9a1tuPj4yXT0oa1tuPj4yXXwwKS1iO2tbcT4+Ml09a1tvPj4yXTtpZighKGtbbj4+Ml18MCkpYnJlYWs7a1tvPj4yXT0oa1txPj4yXXwwKSsxO2I9a1tvPj4yXXwwO2lmKGxba1tvPj4yXT4+MF0mMTI4KWI9am0oYixtKXwwO2Vsc2V7a1ttPj4yXT1sW2I+PjBdO2I9MX1rW28+PjJdPShrW28+PjJdfDApK2J9aWYoKHN8MCk9PTcpa1tuPj4yXT1iO2lmKCEoa1tmPj4yXXwwKSl7cz1rW3E+PjJdfDA7cT1rW2c+PjJdfDA7a1txPj4yXT1zO3E9a1tuPj4yXXwwO3M9a1toPj4yXXwwO2tbcz4+Ml09cTtyPXQ7cmV0dXJufWlmKCgoa1txPj4yXXwwKSsoa1tuPj4yXXwwKXwwKT09KGtbcD4+Ml18MCkpe3M9a1txPj4yXXwwO3E9a1tnPj4yXXwwO2tbcT4+Ml09cztxPWtbbj4+Ml18MDtzPWtbaD4+Ml18MDtrW3M+PjJdPXE7cj10O3JldHVybn1kUygoa1txPj4yXXwwKSsoa1tuPj4yXXwwKXwwLDAsKGtbcD4+Ml18MCktKChrW3E+PjJdfDApKyhrW24+PjJdfDApKXwwKXwwO3M9a1txPj4yXXwwO3E9a1tnPj4yXXwwO2tbcT4+Ml09cztxPWtbbj4+Ml18MDtzPWtbaD4+Ml18MDtrW3M+PjJdPXE7cj10O3JldHVybn1mdW5jdGlvbiBnbShhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscz0wO289cjtyPXIrNDh8MDtmPW8rOHwwO3E9bys0MHwwO3A9byszNnwwO2c9byszMnwwO2w9bysyOHwwO2g9bysyNHwwO209bysyMHwwO249bysxNnwwO2o9bztzPWY7a1tzPj4yXT1hO2tbcys0Pj4yXT1iO2tbcT4+Ml09YztrW3A+PjJdPWQ7a1tnPj4yXT1lO2tbbD4+Ml09MDtrW2g+PjJdPTA7a1ttPj4yXT1rW3E+PjJdO2tbbj4+Ml09KGtbcT4+Ml18MCkrKGtbcD4+Ml18MCk7aWYoKGlba1ttPj4yXT4+MF18MCkhPTEpe2lmKChpW2tbbT4+Ml0+PjBdfDApPT0yKXtzPWY7cz1VbCgoa1tnPj4yXXwwKSsoa1tsPj4yXXwwKXwwLGtbcz4+Ml18MCxrW3MrND4+Ml18MCl8MDtrW2w+PjJdPShrW2w+PjJdfDApK3M7cz1rW2w+PjJdfDA7a1tsPj4yXT1zKzE7aVsoa1tnPj4yXXwwKStzPj4wXT0yO2tbaD4+Ml09MX1obSgwLG0pfXdoaWxlKDEpe2lmKChrW20+PjJdfDApPj4+MD49KGtbbj4+Ml18MCk+Pj4wKWJyZWFrO2lmKChpW2tbbT4+Ml0+PjBdfDApIT0xKWJyZWFrO2tbbT4+Ml09KGtbbT4+Ml18MCkrMTtzPWltKGtbbT4+Ml18MCxqKXwwO2tbbT4+Ml09KGtbbT4+Ml18MCkrcztpZigoaVtrW20+PjJdPj4wXXwwKT09Mil7aWYoIShrW2g+PjJdfDApKXtzPWY7cz1VbCgoa1tnPj4yXXwwKSsoa1tsPj4yXXwwKXwwLGtbcz4+Ml18MCxrW3MrND4+Ml18MCl8MDtrW2w+PjJdPShrW2w+PjJdfDApK3M7a1toPj4yXT0xfXM9a1tsPj4yXXwwO2tbbD4+Ml09cysxO2lbKGtbZz4+Ml18MCkrcz4+MF09MTtzPWo7cz1VbCgoa1tnPj4yXXwwKSsoa1tsPj4yXXwwKXwwLGtbcz4+Ml18MCxrW3MrND4+Ml18MCl8MDtrW2w+PjJdPShrW2w+PjJdfDApK3M7cz1rW2w+PjJdfDA7a1tsPj4yXT1zKzE7aVsoa1tnPj4yXXwwKStzPj4wXT0yfWhtKDAsbSl9aWYoIShrW2g+PjJdfDApKXtzPWtbbD4+Ml18MDtyPW87cmV0dXJuIHN8MH1zPWtbbD4+Ml18MDtrW2w+PjJdPXMrMTtpWyhrW2c+PjJdfDApK3M+PjBdPTA7cz1rW2w+PjJdfDA7cj1vO3JldHVybiBzfDB9ZnVuY3Rpb24gaG0oYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wO2o9cjtyPXIrMzJ8MDtjPWorMTZ8MDtkPWorMTJ8MDtoPWorOHwwO2U9aisyMHwwO2Y9ais0fDA7Zz1qO2tbYz4+Ml09YTtrW2Q+PjJdPWI7a1toPj4yXT1rW2tbZD4+Ml0+PjJdO2lbZT4+MF09MDt3aGlsZSgxKXtpZighKDI1NCYoaVtrW2g+PjJdPj4wXXxpW2U+PjBdKSkpYnJlYWs7Yj1rW2g+PjJdfDA7a1toPj4yXT1iKzE7aVtlPj4wXT1pW2I+PjBdJjEyOH1pZighKGtbYz4+Ml18MCkpe2E9a1toPj4yXXwwO2I9a1tkPj4yXXwwO2tbYj4+Ml09YTtyPWo7cmV0dXJufWtbZj4+Ml09KGtbaD4+Ml18MCktKGtba1tkPj4yXT4+Ml18MCk7a1tnPj4yXT1rW2tbYz4+Ml0+PjJdO2JTKGtbZz4+Ml18MCxrW2tbZD4+Ml0+PjJdfDAsa1tmPj4yXXwwKXwwO2tbZz4+Ml09KGtbZz4+Ml18MCkrKGtbZj4+Ml18MCk7a1trW2M+PjJdPj4yXT1rW2c+PjJdO2E9a1toPj4yXXwwO2I9a1tkPj4yXXwwO2tbYj4+Ml09YTtyPWo7cmV0dXJufWZ1bmN0aW9uIGltKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxsPTAsbT0wO209cjtyPXIrNDh8MDtjPW0rMzZ8MDtkPW0rMzJ8MDtlPW0rMjh8MDtqPW0rMjR8MDtmPW0rMjB8MDtnPW0rOHwwO2w9bSsxNnwwO2g9bTtrW2Q+PjJdPWE7a1tlPj4yXT1iO2tbaj4+Ml09a1tkPj4yXTthPWtbZD4+Ml18MDtrW2Q+PjJdPWErMTtrW2Y+PjJdPWlbYT4+MF07YT1rW2Y+PjJdfDA7aWYoIShrW2Y+PjJdJjEyOCkpe2w9a1tlPj4yXXwwO2tbbD4+Ml09YTtrW2wrND4+Ml09MDtrW2M+PjJdPTE7bD1rW2M+PjJdfDA7cj1tO3JldHVybiBsfDB9Yj1rW2Q+PjJdfDA7a1tkPj4yXT1iKzE7a1tmPj4yXT1hJjEyN3xpW2I+PjBdPDw3O2E9a1tmPj4yXXwwO2lmKCEoa1tmPj4yXSYxNjM4NCkpe2w9a1tlPj4yXXwwO2tbbD4+Ml09YTtrW2wrND4+Ml09MDtrW2M+PjJdPTI7bD1rW2M+PjJdfDA7cj1tO3JldHVybiBsfDB9Yj1rW2Q+PjJdfDA7a1tkPj4yXT1iKzE7a1tmPj4yXT1hJjE2MzgzfGlbYj4+MF08PDE0O2E9a1tmPj4yXXwwO2lmKCEoa1tmPj4yXSYyMDk3MTUyKSl7bD1rW2U+PjJdfDA7a1tsPj4yXT1hO2tbbCs0Pj4yXT0wO2tbYz4+Ml09MztsPWtbYz4+Ml18MDtyPW07cmV0dXJuIGx8MH1iPWtbZD4+Ml18MDtrW2Q+PjJdPWIrMTtrW2Y+PjJdPWEmMjA5NzE1MXxpW2I+PjBdPDwyMTthPWtbZj4+Ml18MDtpZighKGtbZj4+Ml0mMjY4NDM1NDU2KSl7bD1rW2U+PjJdfDA7a1tsPj4yXT1hO2tbbCs0Pj4yXT0wO2tbYz4+Ml09NDtsPWtbYz4+Ml18MDtyPW07cmV0dXJuIGx8MH1mPWc7a1tmPj4yXT1hJjI2ODQzNTQ1NTtrW2YrND4+Ml09MDtrW2w+PjJdPTI4O3doaWxlKDEpe2lmKChrW2w+PjJdfDApPjYzKWJyZWFrO2Y9a1tkPj4yXXwwO2tbZD4+Ml09ZisxO2Y9aVtmPj4wXXwwO2I9aDtrW2I+PjJdPWY7a1tiKzQ+PjJdPSgoZnwwKTwwKTw8MzE+PjMxO2I9ZVMoa1toPj4yXSYxMjd8MCwwLGtbbD4+Ml18MCl8MDtmPWc7Yj0kUihrW2Y+PjJdfDAsa1tmKzQ+PjJdfDAsYnwwLEx8MCl8MDtmPWc7a1tmPj4yXT1iO2tbZis0Pj4yXT1MO2lmKChrW2g+PjJdJjEyOHwwKT09MCYwPT0wKWJyZWFrO2tbbD4+Ml09KGtbbD4+Ml18MCkrN31oPWtbZys0Pj4yXXwwO2w9a1tlPj4yXXwwO2tbbD4+Ml09a1tnPj4yXTtrW2wrND4+Ml09aDtrW2M+PjJdPShrW2Q+PjJdfDApLShrW2o+PjJdfDApO2w9a1tjPj4yXXwwO3I9bTtyZXR1cm4gbHwwfWZ1bmN0aW9uIGptKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTA7Zz1yO3I9cisxNnwwO2M9ZysxMnwwO2Q9Zys4fDA7ZT1nKzR8MDtmPWc7a1tkPj4yXT1hO2tbZT4+Ml09YjtiPWtbZD4+Ml18MDtrW2Q+PjJdPWIrMTtrW2Y+PjJdPWlbYj4+MF07Yj1rW2Y+PjJdJjEyNzthPWtbZD4+Ml18MDtrW2Q+PjJdPWErMTtrW2Y+PjJdPWJ8aVthPj4wXTw8NzthPWtbZj4+Ml18MDtpZighKGtbZj4+Ml0mMTYzODQpKXtrW2tbZT4+Ml0+PjJdPWE7a1tjPj4yXT0yO2Y9a1tjPj4yXXwwO3I9ZztyZXR1cm4gZnwwfWI9a1tkPj4yXXwwO2tbZD4+Ml09YisxO2tbZj4+Ml09YSYxNjM4M3xpW2I+PjBdPDwxNDthPWtbZj4+Ml18MDtpZighKGtbZj4+Ml0mMjA5NzE1Mikpe2tba1tlPj4yXT4+Ml09YTtrW2M+PjJdPTM7Zj1rW2M+PjJdfDA7cj1nO3JldHVybiBmfDB9Yj1rW2Q+PjJdfDA7a1tkPj4yXT1iKzE7a1tmPj4yXT1hJjIwOTcxNTF8aVtiPj4wXTw8MjE7YT1rW2Y+PjJdfDA7aWYoIShrW2Y+PjJdJjI2ODQzNTQ1Nikpe2tba1tlPj4yXT4+Ml09YTtrW2M+PjJdPTQ7Zj1rW2M+PjJdfDA7cj1nO3JldHVybiBmfDB9ZWxzZXtrW2Y+PjJdPWEmMjY4NDM1NDU1O2tba1tlPj4yXT4+Ml09a1tmPj4yXXwoaVtrW2Q+PjJdPj4wXSYxNSk8PDI4O2tbYz4+Ml09NTtmPWtbYz4+Ml18MDtyPWc7cmV0dXJuIGZ8MH1yZXR1cm4gMH1mdW5jdGlvbiBrbShhLGIsYyxkLGUsZixnKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDt2YXIgaD0wLGo9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTA7Qj1yO3I9cis4MHwwO2g9Qis3NnwwO2o9Qis3MnwwO2w9Qis2OHwwO209Qis2NHwwO249Qis2MHwwO289Qis1NnwwO3A9Qis1MnwwO3c9Qis0OHwwO3Q9QisxNnwwO3o9Qis0NHwwO3g9Qis0MHwwO3k9QiszNnwwO3U9QiszMnwwO3E9Qis4fDA7dj1CKzI4fDA7cz1CO0E9QisyNHwwO2tbaD4+Ml09YTtrW2o+PjJdPWI7a1tsPj4yXT1jO2tbbT4+Ml09ZDtrW24+PjJdPWU7a1tvPj4yXT1mO2tbcD4+Ml09ZztrW3c+PjJdPWtba1ttPj4yXT4+Ml07aWYoa1t3Pj4yXXwwKXtrW3Y+PjJdPShrW2g+PjJdfDApIT0wPy0xOjE7b20odyxrW2o+PjJdfDAscyk7ZD1rW3Y+PjJdfDA7Zj1zO2Y9a1MoZHwwLCgoZHwwKTwwKTw8MzE+PjMxfDAsa1tmPj4yXXwwLGtbZis0Pj4yXXwwKXwwO2Q9a1tuPj4yXXwwO2U9ZDtmPV9SKGtbZT4+Ml18MCxrW2UrND4+Ml18MCxmfDAsTHwwKXwwO2tbZD4+Ml09ZjtrW2QrND4+Ml09TDtpZigoa1t3Pj4yXXwwKT09KGtbaj4+Ml18MCkpaVtrW3A+PjJdPj4wXT0xO2Vsc2V7a1tBPj4yXT1rW3c+PjJdO3BtKGtbaj4+Ml18MCx3KTtrW2tbbz4+Ml0+PjJdPShrW0E+PjJdfDApLShrW3c+PjJdfDApfWtba1ttPj4yXT4+Ml09a1t3Pj4yXTtyPUI7cmV0dXJufWQ9dDtrW2Q+PjJdPTA7a1tkKzQ+PjJdPTA7a1t6Pj4yXT0wO2tbeD4+Ml09a1tqPj4yXTtrW3k+PjJdPShrW2o+PjJdfDApKyhrW2w+PjJdfDApO2tbdT4+Ml09MTt3aGlsZSgxKXtpZigoa1t4Pj4yXXwwKT4+PjA+PShrW3k+PjJdfDApPj4+MClicmVhaztkPWltKGtbeD4+Ml18MCxxKXwwO2tbeD4+Ml09KGtbeD4+Ml18MCkrZDtkPWtbdT4+Ml18MDtmPXE7Zj1rUyhkfDAsKChkfDApPDApPDwzMT4+MzF8MCxrW2Y+PjJdfDAsa1tmKzQ+PjJdfDApfDA7ZD10O2Y9JFIoa1tkPj4yXXwwLGtbZCs0Pj4yXXwwLGZ8MCxMfDApfDA7ZD10O2tbZD4+Ml09ZjtrW2QrND4+Ml09TDtrW3o+PjJdPWtbeD4+Ml07bm0oMCx4KTt3aGlsZSgxKXtpZigoa1t4Pj4yXXwwKT4+PjA+PShrW3k+PjJdfDApPj4+MClicmVhaztpZihpW2tbeD4+Ml0+PjBdfDApYnJlYWs7a1t4Pj4yXT0oa1t4Pj4yXXwwKSsxfWtbdT4+Ml09KGtbaD4+Ml18MCkhPTA/LTE6MX1rW2tbbz4+Ml0+PjJdPShrW3k+PjJdfDApLShrW3o+PjJdfDApO2tba1ttPj4yXT4+Ml09a1t6Pj4yXTtlPXQ7Zj1rW2UrND4+Ml18MDtkPWtbbj4+Ml18MDtrW2Q+PjJdPWtbZT4+Ml07a1tkKzQ+PjJdPWY7cj1CO3JldHVybn1mdW5jdGlvbiBsbShhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTAsZT0wO2U9cjtyPXIrMTZ8MDtjPWUrOHwwO2I9ZSs0fDA7ZD1lO2tbYz4+Ml09YTtpZigoKGtbKGtbYz4+Ml18MCkrNDQ+PjJdfDApLShrWyhrW2M+PjJdfDApKzQ4Pj4yXXwwKXwwKTw0MDk2KWE9KGtbKGtbYz4+Ml18MCkrNDQ+PjJdfDApLShrWyhrW2M+PjJdfDApKzQ4Pj4yXXwwKXwwO2Vsc2UgYT00MDk2O2tbYj4+Ml09YTthPWVmKGtbKGtbYz4+Ml18MCkrNTI+PjJdfDAsKGtbKGtbYz4+Ml18MCkrNDA+PjJdfDApKyhrWyhrW2M+PjJdfDApKzQ4Pj4yXXwwKXwwLGtbYj4+Ml18MCxrWyhrW2M+PjJdfDApKzQ4Pj4yXXwwKXwwO2tbZD4+Ml09YTtpZihrW2Q+PjJdfDApe2Q9a1tkPj4yXXwwO3I9ZTtyZXR1cm4gZHwwfWE9KGtbYz4+Ml18MCkrNDh8MDtrW2E+PjJdPShrW2E+PjJdfDApKyhrW2I+PjJdfDApO2E9KGtbKGtbYz4+Ml18MCkrNDA+PjJdfDApKyhrWyhrW2M+PjJdfDApKzQ4Pj4yXXwwKXwwO2I9YSsyMHwwO2Rve2lbYT4+MF09MDthPWErMXwwfXdoaWxlKChhfDApPChifDApKTtpZigoa1soa1tjPj4yXXwwKSs0OD4+Ml18MCkhPShrWyhrW2M+PjJdfDApKzQ0Pj4yXXwwKSl7ZD1rW2Q+PjJdfDA7cj1lO3JldHVybiBkfDB9ZGYoa1soa1tjPj4yXXwwKSs1Mj4+Ml18MCl8MDtrWyhrW2M+PjJdfDApKzUyPj4yXT0wO2tbKGtbYz4+Ml18MCkrNDg+PjJdPTA7ZD1rW2Q+PjJdfDA7cj1lO3JldHVybiBkfDB9ZnVuY3Rpb24gbW0oYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wO2g9cjtyPXIrMTZ8MDtkPWgrMTJ8MDtlPWgrOHwwO2Y9aCs0fDA7Zz1oO2tbZD4+Ml09YTtrW2U+PjJdPWI7a1tmPj4yXT1jO2tbZz4+Ml09MDt3aGlsZSgxKXtpZighKChrW2c+PjJdfDApPT0wPyhrWyhrW2Q+PjJdfDApKzUyPj4yXXwwKSE9MDowKSl7ZD01O2JyZWFrfWlmKCgoa1tlPj4yXXwwKS0oa1soa1tkPj4yXXwwKSs0MD4+Ml18MCkrKGtbZj4+Ml18MCl8MCk8PShrWyhrW2Q+PjJdfDApKzQ4Pj4yXXwwKSl7ZD01O2JyZWFrfWE9bG0oa1tkPj4yXXwwKXwwO2tbZz4+Ml09YX1pZigoZHwwKT09NSl7cj1oO3JldHVybiBrW2c+PjJdfDB9cmV0dXJuIDB9ZnVuY3Rpb24gbm0oYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wO2o9cjtyPXIrMzJ8MDtjPWorMTZ8MDtkPWorMTJ8MDtoPWorOHwwO2U9aisyMHwwO2Y9ais0fDA7Zz1qO2tbYz4+Ml09YTtrW2Q+PjJdPWI7a1toPj4yXT1rW2tbZD4+Ml0+PjJdO2lbZT4+MF09MDt3aGlsZSgxKXtiPShpW2tbaD4+Ml0+PjBdfGlbZT4+MF18MCkhPTA7YT1rW2g+PjJdfDA7a1toPj4yXT1hKzE7aWYoIWIpYnJlYWs7aVtlPj4wXT1pW2E+PjBdJjEyOH1pZighKGtbYz4+Ml18MCkpe2c9a1toPj4yXXwwO2g9a1tkPj4yXXwwO2tbaD4+Ml09ZztyPWo7cmV0dXJufWtbZj4+Ml09KGtbaD4+Ml18MCktKGtba1tkPj4yXT4+Ml18MCk7a1tnPj4yXT1rW2tbYz4+Ml0+PjJdO2JTKGtbZz4+Ml18MCxrW2tbZD4+Ml0+PjJdfDAsa1tmPj4yXXwwKXwwO2tbZz4+Ml09KGtbZz4+Ml18MCkrKGtbZj4+Ml18MCk7a1trW2M+PjJdPj4yXT1rW2c+PjJdO2c9a1toPj4yXXwwO2g9a1tkPj4yXXwwO2tbaD4+Ml09ZztyPWo7cmV0dXJufWZ1bmN0aW9uIG9tKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTA7aj1yO3I9ciszMnwwO2Q9aisyMHwwO2U9aisxNnwwO2Y9aisxMnwwO2c9ajtoPWorOHwwO2tbZD4+Ml09YTtrW2U+PjJdPWI7a1tmPj4yXT1jO2tbaD4+Ml09KGtba1tkPj4yXT4+Ml18MCkrLTI7d2hpbGUoMSl7aWYoKGtbaD4+Ml18MCk+Pj4wPChrW2U+PjJdfDApPj4+MClicmVhaztpZighKGlba1toPj4yXT4+MF0mMTI4KSlicmVhaztrW2g+PjJdPShrW2g+PjJdfDApKy0xfWtbaD4+Ml09KGtbaD4+Ml18MCkrMTtrW2tbZD4+Ml0+PjJdPWtbaD4+Ml07aW0oa1toPj4yXXwwLGcpfDA7Yj1nO2M9a1tiKzQ+PjJdfDA7YT1rW2Y+PjJdfDA7a1thPj4yXT1rW2I+PjJdO2tbYSs0Pj4yXT1jO3I9ajtyZXR1cm59ZnVuY3Rpb24gcG0oYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTA7aD1yO3I9cisxNnwwO2M9aCs4fDA7ZD1oKzR8MDtmPWg7ZT1oKzEyfDA7a1tjPj4yXT1hO2tbZD4+Ml09YjtrW2Y+PjJdPShrW2tbZD4+Ml0+PjJdfDApKy0yO2lbZT4+MF09MDtkb3tpZigoa1tmPj4yXXwwKT4+PjA8PShrW2M+PjJdfDApPj4+MClicmVhaztiPWtbZj4+Ml18MDtrW2Y+PjJdPWIrLTE7Yj1pW2I+PjBdfDA7aVtlPj4wXT1ifXdoaWxlKChiPDwyND4+MjR8MCk9PTApO3doaWxlKDEpe2lmKChrW2Y+PjJdfDApPj4+MD4oa1tjPj4yXXwwKT4+PjApYj0oaVtrW2Y+PjJdPj4wXSYxMjh8aVtlPj4wXXwwKSE9MDtlbHNlIGI9MDthPWtbZj4+Ml18MDtpZighYilicmVhaztrW2Y+PjJdPWErLTE7aVtlPj4wXT1pW2E+PjBdfDB9aWYoYT4+PjA8PShrW2M+PjJdfDApPj4+MCl7aWYoKGlbZT4+MF18MCk9PTA/KGtba1tkPj4yXT4+Ml18MCk+Pj4wPigoa1tmPj4yXXwwKSsyfDApPj4+MDowKWc9MTF9ZWxzZSBnPTExO2lmKChnfDApPT0xMSlrW2Y+PjJdPShrW2Y+PjJdfDApKzI7ZG97Zz1rW2Y+PjJdfDA7a1tmPj4yXT1nKzF9d2hpbGUoKGlbZz4+MF0mMTI4fDApIT0wKTtrW2tbZD4+Ml0+PjJdPWtbZj4+Ml07cj1oO3JldHVybn1mdW5jdGlvbiBxbShhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHM9MCx0PTA7dD1yO3I9cis0OHwwO249dCs4fDA7bz10KzQwfDA7Zz10KzM2fDA7aD10O3A9dCszMnwwO2o9dCsyOHwwO2w9dCsyNHwwO3M9dCsyMHwwO209dCsxNnwwO3E9dCsxMnwwO2tbZz4+Ml09YTthPWg7a1thPj4yXT1iO2tbYSs0Pj4yXT1jO2tbcD4+Ml09ZDtrW2o+PjJdPWU7a1tsPj4yXT1mO2I9a1tnPj4yXXwwO2lmKGtbKGtbZz4+Ml18MCkrMjQ0Pj4yXXwwKXtuPWg7bj1nZihrW2IrMjQ0Pj4yXXwwLGtbbj4+Ml18MCxrW24rND4+Ml18MCl8MDtrW3M+PjJdPW59ZWxzZXtpZigwPT0oa1tiKzI0MD4+Ml18MCk/KGtbbj4+Ml09a1soa1tnPj4yXXwwKSsyMD4+Ml0sbj1ZZCgyMzE2MyxuKXwwLGtbKGtbZz4+Ml18MCkrMjQwPj4yXT1uLDA9PShrWyhrW2c+PjJdfDApKzI0MD4+Ml18MCkpOjApe2tbbz4+Ml09NztzPWtbbz4+Ml18MDtyPXQ7cmV0dXJuIHN8MH1uPWg7bj1jZihrWyhrW2c+PjJdfDApKzEyPj4yXXwwLGtbKGtbZz4+Ml18MCkrMTY+PjJdfDAsa1soa1tnPj4yXXwwKSsyNDA+PjJdfDAsMjMxNzUsa1tuPj4yXXwwLGtbbis0Pj4yXXwwLDAsKGtbZz4+Ml18MCkrMjQ0fDApfDA7a1tzPj4yXT1ufWlmKChrW3M+PjJdfDApPT0wPyhuPWZmKGtbKGtbZz4+Ml18MCkrMjQ0Pj4yXXwwKXwwLGtbbT4+Ml09bixrW2tbaj4+Ml0+PjJdPWtbbT4+Ml0sKGtbcD4+Ml18MCkhPTApOjApe249U2QoKGtbbT4+Ml18MCkrMjB8MCl8MDtrW3E+PjJdPW47aWYoa1txPj4yXXwwKXtpZigoa1tsPj4yXXwwKSE9MCYoa1ttPj4yXXwwKT4xNjM4NCl7a1ttPj4yXT00MDk2O2tba1tsPj4yXT4+Ml09a1ttPj4yXX1iPWVmKGtbKGtbZz4+Ml18MCkrMjQ0Pj4yXXwwLGtbcT4+Ml18MCxrW20+PjJdfDAsMCl8MDtrW3M+PjJdPWI7Yj0oa1txPj4yXXwwKSsoa1ttPj4yXXwwKXwwO2M9YisyMHwwO2Rve2lbYj4+MF09MDtiPWIrMXwwfXdoaWxlKChifDApPChjfDApKTtpZihrW3M+PjJdfDApe1VkKGtbcT4+Ml18MCk7a1txPj4yXT0wfX1lbHNlIGtbcz4+Ml09NztrW2tbcD4+Ml0+PjJdPWtbcT4+Ml19a1tvPj4yXT1rW3M+PjJdO3M9a1tvPj4yXXwwO3I9dDtyZXR1cm4gc3wwfWZ1bmN0aW9uIHJtKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaT0wLGo9MCxtPTAsbj0wLG89MCxwPTAscT0wO3E9cjtyPXIrNDh8MDttPXErMzZ8MDtlPXErMzJ8MDtuPXErMjh8MDtmPXErMjR8MDtnPXErMjB8MDtoPXErMTZ8MDtvPXErMTJ8MDtqPXErOHwwO2k9cSs0fDA7cD1xO2tbZT4+Ml09YTtrW24+PjJdPWI7a1tmPj4yXT1jO2tbZz4+Ml09ZDtrW28+PjJdPWtbKGtbbj4+Ml18MCkrND4+Ml07a1toPj4yXT0wO2E6d2hpbGUoMSl7aWYoa1soa1tuPj4yXXwwKSsyOD4+Ml18MCl7ZT0xMjticmVha31pZigoa1toPj4yXXwwKT49KGtbKGtbbj4+Ml18MCkrND4+Ml18MCkpe2U9MTI7YnJlYWt9a1tqPj4yXT0wO2tbaT4+Ml09a1soa1trW24+PjJdPj4yXXwwKSsoa1toPj4yXTw8Mik+PjJdO2Rve2M9JGwoa1tlPj4yXXwwLGtbaT4+Ml18MCwwKXwwO2tbcD4+Ml09YztpZihrW3A+PjJdfDApe2U9NjticmVhayBhfWlmKCEoa1tmPj4yXXwwKSlicmVhaztjPXNtKGtbaT4+Ml18MCxrW2Y+PjJdfDAsa1tnPj4yXXwwKXwwO2tbaj4+Ml09Y313aGlsZSgoY3wwKTwwKTtpZigoa1tqPj4yXXwwKSE9MD8obFsoa1tpPj4yXXwwKSs0Pj4wXXwwfDApIT0wOjApX2woa1tpPj4yXXwwKTtrW2g+PjJdPShrW2g+PjJdfDApKzF9aWYoKGV8MCk9PTYpe2tbbT4+Ml09a1twPj4yXTtwPWtbbT4+Ml18MDtyPXE7cmV0dXJuIHB8MH1lbHNlIGlmKChlfDApPT0xMil7Ym0oa1trW24+PjJdPj4yXXwwLGtbbz4+Ml18MCxrW28+PjJdfDAsMTg0KTtrW20+PjJdPTA7cD1rW20+PjJdfDA7cj1xO3JldHVybiBwfDB9cmV0dXJuIDB9ZnVuY3Rpb24gc20oYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wO2g9cjtyPXIrMTZ8MDtlPWgrMTJ8MDtkPWgrOHwwO2Y9aCs0fDA7Zz1oO2tbZT4+Ml09YTtrW2Q+PjJdPWI7a1tmPj4yXT1jO2tbZz4+Ml09MDtpZighKGtbKGtbZT4+Ml18MCkrNDA+PjJdfDApKXtnPWtbZz4+Ml18MDtyPWg7cmV0dXJuIGd8MH1hPWtbKGtbZT4+Ml18MCkrNjQ+PjJdfDA7Yz1rW2Q+PjJdfDA7aWYoKGtbKGtbZT4+Ml18MCkrNjA+PjJdfDApPihrW2Y+PjJdfDApKXtkPW9SKGEsYyxrW2Y+PjJdfDApfDA7a1tnPj4yXT1kfWVsc2V7ZD1vUihhLGMsa1soa1tlPj4yXXwwKSs2MD4+Ml18MCl8MDtrW2c+PjJdPWR9aWYoa1tnPj4yXXwwKXtnPWtbZz4+Ml18MDtyPWg7cmV0dXJuIGd8MH1rW2c+PjJdPShrWyhrW2U+PjJdfDApKzYwPj4yXXwwKS0oa1tmPj4yXXwwKTtnPWtbZz4+Ml18MDtyPWg7cmV0dXJuIGd8MH1mdW5jdGlvbiB0bShhLGIsYyxkLGUsZixnLGgsaSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aT1pfDA7dmFyIGo9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MCxFPTAsRj0wO0Y9cjtyPXIrOTZ8MDtqPUYrODh8MDtsPUYrODR8MDttPUYrODB8MDtuPUYrNzZ8MDtvPUYrNzJ8MDtwPUYrNjh8MDtxPUYrNjR8MDtzPUYrNjB8MDt0PUYrNTZ8MDtDPUYrNTJ8MDtBPUYrNDh8MDtEPUYrNDR8MDt5PUYrNDB8MDt6PUYrMzZ8MDt3PUYrMTZ8MDt2PUYrOHwwO3U9Rjt4PUYrMzJ8MDtFPUYrMjh8MDtCPUYrMjR8MDtrW2o+PjJdPWE7a1tsPj4yXT1iO2tbbT4+Ml09YztrW24+PjJdPWQ7a1tvPj4yXT1lO2tbcD4+Ml09ZjtrW3E+PjJdPWc7a1tzPj4yXT1oO2tbdD4+Ml09aTtrW0M+PjJdPTA7a1tBPj4yXT0wO2lmKCgoa1tuPj4yXXwwKTwwPyhrWyhrW2o+PjJdfDApKzI1Mj4+Ml18MCkhPTA6MCk/KGtbeT4+Ml09MCxlPXVtKGtbaj4+Ml18MCxrW20+PjJdfDAsa1tvPj4yXXwwLGtbcD4+Ml18MCwoKGtbcT4+Ml18MCkhPTA/MTooa1tzPj4yXXwwKSE9MCkmMSx5KXwwLGtbQz4+Ml09ZSwoa1tDPj4yXXwwKT09MCYoa1t5Pj4yXXwwKSE9MCk6MCl7ZT12bShrW3Q+PjJdfDAsa1t5Pj4yXXwwKXwwO2tbQz4+Ml09ZX1hOmRvIGlmKChrW24+PjJdfDApIT0tMSl7aWYoIShrW0M+PjJdfDApKXtlPXdtKGtbaj4+Ml18MCxrW2w+PjJdfDAsa1ttPj4yXXwwLGtbbj4+Ml18MCxBKXwwO2tbQz4+Ml09ZX13aGlsZSgxKXtpZihrW0M+PjJdfDApYnJlYWsgYTtlPURlKGtbQT4+Ml18MCl8MDtrW0M+PjJdPWU7aWYoMTAwIT0oZXwwKSlicmVhayBhO2tbej4+Ml09MDt5PU5lKGtbQT4+Ml18MCwxKXwwO2U9dztrW2U+PjJdPXk7a1tlKzQ+PjJdPUw7ZT1OZShrW0E+PjJdfDAsMil8MDt5PXY7a1t5Pj4yXT1lO2tbeSs0Pj4yXT1MO3k9TmUoa1tBPj4yXXwwLDMpfDA7ZT11O2tbZT4+Ml09eTtrW2UrND4+Ml09TDtlPUtlKGtbQT4+Ml18MCw0KXwwO2tbeD4+Ml09ZTtlPUplKGtbQT4+Ml18MCw0KXwwO2tbRT4+Ml09ZTtlPXc7aWYoKChrW2U+PjJdfDApIT0wfChrW2UrND4+Ml18MCkhPTApJihrW28+PjJdfDApIT0wKXtrW0I+PjJdPShrW3E+PjJdfDApIT0wP3Y6MDtlPXhtKGtbaj4+Ml18MCxrW28+PjJdfDAsa1twPj4yXXwwLGtbRT4+Ml18MCxrW3g+PjJdfDAsdyxrW0I+PjJdfDApfDA7a1tDPj4yXT1lO2lmKGtbQz4+Ml18MClicmVhayBhO2lmKChrW3E+PjJdfDApPT0wJihrW3M+PjJdfDApPT0wKXtpPXc7eT1rW2krND4+Ml18MDtlPXY7a1tlPj4yXT1rW2k+PjJdO2tbZSs0Pj4yXT15fX1pPXc7eT12O2U9dTtlPXltKChrWyhrW3Q+PjJdfDApKzQ+PjJdfDApKzF8MCwoKGtbcT4+Ml18MCk9PTA/KGtbcz4+Ml18MCk9PTA6MCkmMSxrW2k+PjJdfDAsa1tpKzQ+PjJdfDAsa1t5Pj4yXXwwLGtbeSs0Pj4yXXwwLGtbZT4+Ml18MCxrW2UrND4+Ml18MCxrW0U+PjJdfDAsa1t4Pj4yXXwwLHopfDA7a1tDPj4yXT1lO2lmKGtbQz4+Ml18MClicmVhayBhO2U9dm0oa1t0Pj4yXXwwLGtbej4+Ml18MCl8MDtrW0M+PjJdPWV9fXdoaWxlKDApO2U9Z2Uoa1tBPj4yXXwwKXwwO2tbRD4+Ml09ZTtpZigoa1tDPj4yXXwwKSE9MTAxKXtlPWtbQz4+Ml18MDtyPUY7cmV0dXJuIGV8MH1rW0M+PjJdPWtbRD4+Ml07ZT1rW0M+PjJdfDA7cj1GO3JldHVybiBlfDB9ZnVuY3Rpb24gdW0oYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGk9MCxqPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTA7eT1yO3I9cis4MHwwO0E9eSs2NHwwO3o9eSs2MHwwO2c9eSs1NnwwO2g9eSs1MnwwO2k9eSs0OHwwO2o9eSs0NHwwO3U9eSs0MHwwO3M9eSszNnwwO2w9eSszMnwwO3A9eSsyOHwwO3Y9eSsyNHwwO3Q9eSsyMHwwO249eSsxNnwwO3c9eSsxMnwwO3E9eSs4fDA7bT15KzR8MDtvPXk7a1tBPj4yXT1hO2tbej4+Ml09YjtrW2c+PjJdPWM7a1toPj4yXT1kO2tbaT4+Ml09ZTtrW2o+PjJdPWY7a1t1Pj4yXT0wO2tbbD4+Ml09MDtrW3A+PjJdPTA7a1t2Pj4yXT0wO2tbdD4+Ml09KGtbKGtbQT4+Ml18MCkrMjUyPj4yXXwwKSsoKGtbej4+Ml18MCkqMjR8MCkrNDtpZihrW2k+PjJdfDApe2tbbj4+Ml09MDtrW3M+PjJdPWtbKGtbdD4+Ml18MCkrOD4+Ml07d2hpbGUoMSl7aWYoIShrW3M+PjJdfDApKWJyZWFrO2tbdz4+Ml09a1soa1tzPj4yXXwwKSsxMj4+Ml07a1txPj4yXT1rWyhrW3M+PjJdfDApKzE2Pj4yXTtpZihrW2g+PjJdfDApe2lmKChrW3E+PjJdfDApPj0oa1toPj4yXXwwKT8wPT0ob1Ioa1t3Pj4yXXwwLGtbZz4+Ml18MCxrW2g+PjJdfDApfDApOjApeD03fWVsc2UgeD03O2lmKCh4fDApPT03KXt4PTA7aWYoKGtbcD4+Ml18MCk9PShrW24+PjJdfDApKXtrW24+PjJdPShrW24+PjJdfDApKzE2O0E9VmQoa1tsPj4yXXwwLGtbbj4+Ml08PDIpfDA7a1ttPj4yXT1BO2lmKCEoa1ttPj4yXXwwKSl7eD05O2JyZWFrfWtbbD4+Ml09a1ttPj4yXX16PWtbcz4+Ml18MDtBPWtbcD4+Ml18MDtrW3A+PjJdPUErMTtrWyhrW2w+PjJdfDApKyhBPDwyKT4+Ml09en1rW3M+PjJdPWtba1tzPj4yXT4+Ml19aWYoKHh8MCk9PTkpe2tbdj4+Ml09NztrW3A+PjJdPTB9aWYoKGtbcD4+Ml18MCk+MSluUihrW2w+PjJdfDAsa1twPj4yXXwwLDQsMTg1KX1lbHNle0E9UWsoa1t0Pj4yXXwwLGtbZz4+Ml18MCxrW2g+PjJdfDApfDA7a1tzPj4yXT1BO2lmKGtbcz4+Ml18MCl7a1tsPj4yXT1zO2tbcD4+Ml09MX19ZG8gaWYoKGtbcD4+Ml18MCk+MCl7a1tvPj4yXT05NisoKGtbcD4+Ml18MCkrMTw8Mik7QT1TZChrW28+PjJdfDApfDA7a1t1Pj4yXT1BO2lmKGtbdT4+Ml18MCl7ZFMoa1t1Pj4yXXwwLDAsa1tvPj4yXXwwKXwwO2tba1t1Pj4yXT4+Ml09MjE0NzQ4MzY0NztrWyhrW3U+PjJdfDApKzU2Pj4yXT0oa1t1Pj4yXXwwKSs5NjtiUyhrWyhrW3U+PjJdfDApKzU2Pj4yXXwwLGtbbD4+Ml18MCxrW3A+PjJdPDwyfDApfDA7YnJlYWt9ZWxzZXtrW3Y+PjJdPTc7YnJlYWt9fXdoaWxlKDApO2lmKCEoa1tpPj4yXXwwKSl7ej1rW3U+PjJdfDA7QT1rW2o+PjJdfDA7a1tBPj4yXT16O0E9a1t2Pj4yXXwwO3I9eTtyZXR1cm4gQXwwfVVkKGtbbD4+Ml18MCk7ej1rW3U+PjJdfDA7QT1rW2o+PjJdfDA7a1tBPj4yXT16O0E9a1t2Pj4yXXwwO3I9eTtyZXR1cm4gQXwwfWZ1bmN0aW9uIHZtKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wO2g9cjtyPXIrMzJ8MDtjPWgrMTZ8MDtkPWgrMTJ8MDtlPWgrOHwwO2Y9aCs0fDA7Zz1oO2tbZD4+Ml09YTtrW2U+PjJdPWI7ZG8gaWYoISgoa1soa1tkPj4yXXwwKSs0Pj4yXXwwKSUxNnwwKSl7a1tnPj4yXT0oa1soa1tkPj4yXXwwKSs0Pj4yXXwwKSsxNjw8MjtiPVZkKGtba1tkPj4yXT4+Ml18MCxrW2c+PjJdfDApfDA7a1tmPj4yXT1iO2lmKGtbZj4+Ml18MCl7a1trW2Q+PjJdPj4yXT1rW2Y+PjJdO2JyZWFrfU1sKGtbZT4+Ml18MCk7a1tjPj4yXT03O2I9a1tjPj4yXXwwO3I9aDtyZXR1cm4gYnwwfXdoaWxlKDApO2E9a1tlPj4yXXwwO2c9KGtbZD4+Ml18MCkrNHwwO2I9a1tnPj4yXXwwO2tbZz4+Ml09YisxO2tbKGtba1tkPj4yXT4+Ml18MCkrKGI8PDIpPj4yXT1hO2tbYz4+Ml09MDtiPWtbYz4+Ml18MDtyPWg7cmV0dXJuIGJ8MH1mdW5jdGlvbiB3bShhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxpPTAsaj0wLGw9MCxtPTAsbj0wO249cjtyPXIrMzJ8MDtmPW4rMjR8MDtnPW4rMjB8MDtoPW4rMTZ8MDtpPW4rMTJ8MDtqPW4rOHwwO209bis0fDA7bD1uO2tbZj4+Ml09YTtrW2c+PjJdPWI7a1toPj4yXT1jO2tbaT4+Ml09ZDtrW2o+PjJdPWU7a1tsPj4yXT0wO2M9a1tmPj4yXXwwO2lmKChrW2k+PjJdfDApPDApe2k9emwoYywxMyxsLDApfDA7a1ttPj4yXT1pO2lmKCEoa1ttPj4yXXwwKSl7aT1rW2w+PjJdfDA7ZT1DbChrW2Y+PjJdfDAsa1tnPj4yXXwwLGtbaD4+Ml18MCwwKXwwO1ZlKGksMSxlLEwpfDA7ZT1rW2w+PjJdfDA7aT1DbChrW2Y+PjJdfDAsa1tnPj4yXXwwLGtbaD4+Ml18MCwxMDIzKXwwO1ZlKGUsMixpLEwpfDB9fWVsc2V7ZT16bChjLDEyLGwsMCl8MDtrW20+PjJdPWU7aWYoIShrW20+PjJdfDApKXtlPWtbbD4+Ml18MDtpPUNsKGtbZj4+Ml18MCxrW2c+PjJdfDAsa1toPj4yXXwwLGtbaT4+Ml18MCl8MDtWZShlLDEsaSxMKXwwfX1rW2tbaj4+Ml0+PjJdPWtbbD4+Ml07cj1uO3JldHVybiBrW20+PjJdfDB9ZnVuY3Rpb24geG0oYSxiLGMsZCxlLGYsZyl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7dmFyIGg9MCxpPTAsaj0wLG09MCxuPTAsbz0wLHA9MCxxPTAscz0wLHQ9MCx1PTAsdj0wO3Y9cjtyPXIrNDh8MDttPXYrNDB8MDtuPXYrMzZ8MDtvPXYrMzJ8MDtoPXYrMjh8MDtpPXYrMjR8MDtwPXYrMjB8MDtxPXYrMTZ8MDt0PXYrMTJ8MDtqPXYrOHwwO3U9dis0fDA7cz12O2tbbT4+Ml09YTtrW24+PjJdPWI7a1tvPj4yXT1jO2tbaD4+Ml09ZDtrW2k+PjJdPWU7a1twPj4yXT1mO2tbcT4+Ml09ZztrW3Q+PjJdPTA7ZT1rW2g+PjJdfDA7aWYoKGxba1toPj4yXT4+MF18MCkmMTI4KWptKGUsail8MDtlbHNlIGtbaj4+Ml09bFtlPj4wXTtpPXptKGtbbj4+Ml18MCxrW28+PjJdfDAsa1toPj4yXXwwLGtbaT4+Ml18MCxrW3A+PjJdfDAsa1txPj4yXXwwKXwwO2tbdD4+Ml09aTtpZighKChrW3Q+PjJdfDApPT0wJihrW2o+PjJdfDApPjEpKXt1PWtbdD4+Ml18MDtyPXY7cmV0dXJuIHV8MH1rW3U+PjJdPTA7a1tzPj4yXT0wO2lmKChrW3A+PjJdfDApIT0wJihrW3E+PjJdfDApIT0wPyhpPWtbcD4+Ml18MCxqPWtbcT4+Ml18MCwoa1tpPj4yXXwwKSE9KGtbaj4+Ml18MCk/MTooa1tpKzQ+PjJdfDApIT0oa1tqKzQ+PjJdfDApKTowKXtqPWtbcD4+Ml18MDtqPXFtKGtbbT4+Ml18MCxrW2o+PjJdfDAsa1tqKzQ+PjJdfDAsdSxzLDApfDA7a1t0Pj4yXT1qO2lmKCEoa1t0Pj4yXXwwKSl7aj14bShrW20+PjJdfDAsa1tuPj4yXXwwLGtbbz4+Ml18MCxrW3U+PjJdfDAsa1tzPj4yXXwwLGtbcD4+Ml18MCwwKXwwO2tbdD4+Ml09an1VZChrW3U+PjJdfDApO2tbcD4+Ml09MDtrW3U+PjJdPTB9aWYoIShrW3Q+PjJdfDApKXtpZihrW3A+PjJdfDApe2M9a1twPj4yXXwwO2U9a1tjPj4yXXwwO2M9a1tjKzQ+PjJdfDB9ZWxzZXtjPWtbcT4+Ml18MDtlPWtbYz4+Ml18MDtjPWtbYys0Pj4yXXwwfWo9cW0oa1ttPj4yXXwwLGUsYyx1LHMsMCl8MDtrW3Q+PjJdPWp9aWYoIShrW3Q+PjJdfDApKXtzPXhtKGtbbT4+Ml18MCxrW24+PjJdfDAsa1tvPj4yXXwwLGtbdT4+Ml18MCxrW3M+PjJdfDAsa1twPj4yXXwwLGtbcT4+Ml18MCl8MDtrW3Q+PjJdPXN9VWQoa1t1Pj4yXXwwKTt1PWtbdD4+Ml18MDtyPXY7cmV0dXJuIHV8MH1mdW5jdGlvbiB5bShhLGIsYyxkLGUsZixnLGgsaixsLG0pe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO2w9bHwwO209bXwwO3ZhciBuPTAsbz0wLHA9MCxxPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MDt6PXI7cj1yKzY0fDA7dD16KzUyfDA7dT16KzQ4fDA7dj16KzQ0fDA7dz16KzE2fDA7bj16Kzh8MDtvPXo7cD16KzQwfDA7cT16KzM2fDA7cz16KzMyfDA7eT16KzI4fDA7eD16KzI0fDA7a1t1Pj4yXT1hO2tbdj4+Ml09YjthPXc7a1thPj4yXT1jO2tbYSs0Pj4yXT1kO2E9bjtrW2E+PjJdPWU7a1thKzQ+PjJdPWY7YT1vO2tbYT4+Ml09ZztrW2ErND4+Ml09aDtrW3A+PjJdPWo7a1txPj4yXT1sO2tbcz4+Ml09bTtrW3g+PjJdPTA7aj13O2lmKChrW2o+PjJdfDApPT0wJihrW2orND4+Ml18MCk9PTApa1t4Pj4yXT0oa1txPj4yXXwwKSsyMDtqPVNkKDk2KyhrW3g+PjJdfDApfDApfDA7a1t5Pj4yXT1qO2lmKCEoa1t5Pj4yXXwwKSl7a1t0Pj4yXT03O3k9a1t0Pj4yXXwwO3I9ejtyZXR1cm4geXwwfWM9a1t5Pj4yXXwwO2Q9Yys5NnwwO2Rve2tbYz4+Ml09MDtjPWMrNHwwfXdoaWxlKChjfDApPChkfDApKTtrW2tbeT4+Ml0+PjJdPWtbdT4+Ml07aVsoa1t5Pj4yXXwwKSs0Pj4wXT0oa1t2Pj4yXXwwKSE9MDtqPXc7dT1rW2orND4+Ml18MDt2PShrW3k+PjJdfDApKzh8MDtrW3Y+PjJdPWtbaj4+Ml07a1t2KzQ+PjJdPXU7dj1rW24rND4+Ml18MDt1PShrW3k+PjJdfDApKzE2fDA7a1t1Pj4yXT1rW24+PjJdO2tbdSs0Pj4yXT12O3U9a1tvKzQ+PjJdfDA7dj0oa1t5Pj4yXXwwKSsyNHwwO2tbdj4+Ml09a1tvPj4yXTtrW3YrND4+Ml09dTtpZihrW3g+PjJdfDApe2tbKGtbeT4+Ml18MCkrNDA+PjJdPShrW3k+PjJdfDApKzk2O2lbKGtbeT4+Ml18MCkrNT4+MF09MTtrWyhrW3k+PjJdfDApKzQ0Pj4yXT1rW3E+PjJdO2JTKGtbKGtbeT4+Ml18MCkrNDA+PjJdfDAsa1twPj4yXXwwLGtbcT4+Ml18MCl8MDtjPShrWyhrW3k+PjJdfDApKzQwPj4yXXwwKSsoa1txPj4yXXwwKXwwO2Q9YysyMHwwO2Rve2lbYz4+MF09MDtjPWMrMXwwfXdoaWxlKChjfDApPChkfDApKX1lbHNle3c9X1Ioa1t3Pj4yXXwwLGtbdys0Pj4yXXwwLDEsMCl8MDt4PShrW3k+PjJdfDApKzMyfDA7a1t4Pj4yXT13O2tbeCs0Pj4yXT1MfWtba1tzPj4yXT4+Ml09a1t5Pj4yXTtrW3Q+PjJdPTA7eT1rW3Q+PjJdfDA7cj16O3JldHVybiB5fDB9ZnVuY3Rpb24gem0oYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGk9MCxqPTAsbT0wLG49MCxvPTAscD0wLHE9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wO0E9cjtyPXIrODB8MDt1PUErNzZ8MDtnPUErNzJ8MDtoPUErNjh8MDtDPUErNjR8MDtCPUErNjB8MDt2PUErNTZ8MDt3PUErNTJ8MDt5PUErNDh8MDtxPUErNDR8MDtzPUErNDB8MDt6PUErMzZ8MDttPUErMzJ8MDtqPUErMjh8MDt4PUE7aT1BKzI0fDA7cD1BKzIwfDA7bz1BKzE2fDA7bj1BKzEyfDA7dD1BKzh8MDtrW2c+PjJdPWE7a1toPj4yXT1iO2tbQz4+Ml09YztrW0I+PjJdPWQ7a1t2Pj4yXT1lO2tbdz4+Ml09ZjtrW3k+PjJdPTA7a1txPj4yXT1rW0M+PjJdO2tbcz4+Ml09KGtbcT4+Ml18MCkrKGtbQj4+Ml18MCk7a1t6Pj4yXT0wO2tbbT4+Ml09MDtrW2o+PjJdPTE7YT1pbShrW3E+PjJdfDAseCl8MDtrW3E+PjJdPShrW3E+PjJdfDApK2E7YT1pbShrW3E+PjJdfDAseCl8MDtrW3E+PjJdPShrW3E+PjJdfDApK2E7aWYoKGtbcT4+Ml18MCk+Pj4wPihrW3M+PjJdfDApPj4+MCl7a1t1Pj4yXT0yNjc7Qz1rW3U+PjJdfDA7cj1BO3JldHVybiBDfDB9d2hpbGUoMSl7aWYoKGtbcT4+Ml18MCk+Pj4wPj0oa1tzPj4yXXwwKT4+PjApe2Q9Mjg7YnJlYWt9aWYoISgoa1t2Pj4yXXwwKSE9MD8xOihrW3c+PjJdfDApIT0wKSl7ZD0yODticmVha31rW28+PjJdPTA7aWYoIShrW2o+PjJdfDApKXtkPWtbcT4+Ml18MDtpZigobFtrW3E+PjJdPj4wXXwwKSYxMjgpZD1qbShkLG8pfDA7ZWxzZXtrW28+PjJdPWxbZD4+MF07ZD0xfWtbcT4+Ml09KGtbcT4+Ml18MCkrZH1rW2o+PjJdPTA7ZD1rW3E+PjJdfDA7aWYoKGxba1txPj4yXT4+MF18MCkmMTI4KWQ9am0oZCxwKXwwO2Vsc2V7a1twPj4yXT1sW2Q+PjBdO2Q9MX1rW3E+PjJdPShrW3E+PjJdfDApK2Q7aWYoKGtbbz4+Ml18MCk8MHwoa1twPj4yXXwwKTwwKXtkPTE1O2JyZWFrfWlmKCgoa1txPj4yXXwwKSsoa1twPj4yXXwwKXwwKT4+PjA+KGtbcz4+Ml18MCk+Pj4wKXtkPTE1O2JyZWFrfWlmKCgoa1tvPj4yXXwwKSsoa1twPj4yXXwwKXwwKT4oa1ttPj4yXXwwKSl7a1ttPj4yXT0oa1tvPj4yXXwwKSsoa1twPj4yXXwwKTw8MTtDPVZkKGtbej4+Ml18MCxrW20+PjJdfDApfDA7a1t0Pj4yXT1DO2lmKCEoa1t0Pj4yXXwwKSl7ZD0xODticmVha31rW3o+PjJdPWtbdD4+Ml19YlMoKGtbej4+Ml18MCkrKGtbbz4+Ml18MCl8MCxrW3E+PjJdfDAsa1twPj4yXXwwKXwwO2tbbj4+Ml09KGtbbz4+Ml18MCkrKGtbcD4+Ml18MCk7a1txPj4yXT0oa1txPj4yXXwwKSsoa1twPj4yXXwwKTtDPW9SKGtbZz4+Ml18MCxrW3o+PjJdfDAsKGtbbj4+Ml18MCk+KGtbaD4+Ml18MCk/a1toPj4yXXwwOmtbbj4+Ml18MCl8MDtrW2k+PjJdPUM7ZG8gaWYoa1t2Pj4yXXwwKXtpZigoa1tpPj4yXXwwKT49MCl7aWYoa1tpPj4yXXwwKWJyZWFrO2lmKChrW24+PjJdfDApPD0oa1toPj4yXXwwKSlicmVha31hPXg7Qj1rW2ErND4+Ml18MDtDPWtbdj4+Ml18MDtrW0M+PjJdPWtbYT4+Ml07a1tDKzQ+PjJdPUI7a1t2Pj4yXT0wfXdoaWxlKDApO2lmKChrW3c+PjJdfDApIT0wJihrW2k+PjJdfDApPDApe2E9eDtCPWtbYSs0Pj4yXXwwO0M9a1t3Pj4yXXwwO2tbQz4+Ml09a1thPj4yXTtrW0MrND4+Ml09QjtrW3c+PjJdPTB9Qj14O0I9JFIoa1tCPj4yXXwwLGtbQis0Pj4yXXwwLDEsMCl8MDtDPXg7a1tDPj4yXT1CO2tbQys0Pj4yXT1MfWlmKChkfDApPT0xNSlrW3k+PjJdPTI2NztlbHNlIGlmKChkfDApPT0xOClrW3k+PjJdPTc7ZWxzZSBpZigoZHwwKT09Mjgpe2lmKGtbdj4+Ml18MCl7dD14O0I9a1t0KzQ+PjJdfDA7Qz1rW3Y+PjJdfDA7a1tDPj4yXT1rW3Q+PjJdO2tbQys0Pj4yXT1CfWlmKGtbdz4+Ml18MCl7Qj1rW3grND4+Ml18MDtDPWtbdz4+Ml18MDtrW0M+PjJdPWtbeD4+Ml07a1tDKzQ+PjJdPUJ9fVVkKGtbej4+Ml18MCk7a1t1Pj4yXT1rW3k+PjJdO0M9a1t1Pj4yXXwwO3I9QTtyZXR1cm4gQ3wwfWZ1bmN0aW9uIEFtKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wLGk9MCxqPTAsbD0wO2Y9cjtyPXIrMzJ8MDtsPWYrMjh8MDtqPWYrMjR8MDtpPWYrMjB8MDtoPWYrMTZ8MDtkPWYrMTJ8MDtlPWYrOHwwO2c9Zis0fDA7Yz1mO2tbbD4+Ml09YTtrW2o+PjJdPWI7a1tpPj4yXT1rWyhrW2tbbD4+Ml0+PjJdfDApKzEyPj4yXTtrW2g+PjJdPWtbKGtba1tqPj4yXT4+Ml18MCkrMTI+PjJdO2tbZD4+Ml09a1soa1trW2w+PjJdPj4yXXwwKSsxNj4+Ml07a1tlPj4yXT1rWyhrW2tbaj4+Ml0+PjJdfDApKzE2Pj4yXTtrW2c+PjJdPShrW2Q+PjJdfDApPChrW2U+PjJdfDApP2tbZD4+Ml18MDprW2U+PjJdfDA7Yj1vUihrW2k+PjJdfDAsa1toPj4yXXwwLGtbZz4+Ml18MCl8MDtrW2M+PjJdPWI7aWYoa1tjPj4yXXwwKXtsPWtbYz4+Ml18MDtyPWY7cmV0dXJuIGx8MH1rW2M+PjJdPShrW2Q+PjJdfDApLShrW2U+PjJdfDApO2w9a1tjPj4yXXwwO3I9ZjtyZXR1cm4gbHwwfWZ1bmN0aW9uIEJtKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxpPTAsaj0wLGw9MCxtPTAsbj0wLG89MDtvPXI7cj1yKzQ4fDA7Zz1vKzMyfDA7ZD1vKzI4fDA7ZT1vKzI0fDA7aj1vKzIwfDA7bj1vKzE2fDA7bT1vKzEyfDA7bD1vKzh8MDtoPW8rNHwwO2k9bztrW2c+PjJdPWE7a1tkPj4yXT1iO2tbZT4+Ml09YztrW24+PjJdPTIzNDI3O2tbbT4+Ml09MjM0MzE7a1tsPj4yXT0yMzQzNjtrW2g+PjJdPS0xO2tbaT4+Ml09MTU7Yz1rW2c+PjJdfDA7aWYoKGtbZD4+Ml18MCk+Nil7c2UoYywyMzQ0NywtMSk7cj1vO3JldHVybn1pZihGbShjLDIwNDg2LGtba1tlPj4yXT4+Ml18MCxqKXwwKXtyPW87cmV0dXJufXN3aXRjaChrW2Q+PjJdfDApe2Nhc2UgNjp7Zj1tZShrWyhrW2U+PjJdfDApKzIwPj4yXXwwKXwwO2tbaT4+Ml09ZjtmPTY7YnJlYWt9Y2FzZSA1OntmPTY7YnJlYWt9Y2FzZSA0OntmPTc7YnJlYWt9Y2FzZSAzOntmPTg7YnJlYWt9Y2FzZSAyOntmPTk7YnJlYWt9ZGVmYXVsdDp7fX1pZigoZnwwKT09Nil7ZD1tZShrWyhrW2U+PjJdfDApKzE2Pj4yXXwwKXwwO2tbaD4+Ml09ZDtmPTd9aWYoKGZ8MCk9PTcpe2Q9amUoa1soa1tlPj4yXXwwKSsxMj4+Ml18MCl8MDtrW2w+PjJdPWQ7Zj04fWlmKChmfDApPT04KXtkPWplKGtbKGtbZT4+Ml18MCkrOD4+Ml18MCl8MDtrW20+PjJdPWQ7Zj05fWlmKChmfDApPT05KXtmPWplKGtbKGtbZT4+Ml18MCkrND4+Ml18MCl8MDtrW24+PjJdPWZ9aWYoISgoa1tsPj4yXXwwKSE9MCYoa1ttPj4yXXwwKSE9MCYoa1tuPj4yXXwwKSE9MCkpe0NlKGtbZz4+Ml18MCk7cj1vO3JldHVybn1jPWtbZz4+Ml18MDtpZighKGtbaT4+Ml18MCkpe3dlKGMsMTg0MDIsLTEsMCk7cj1vO3JldHVybn1pZihEbihjLGtbaj4+Ml18MCl8MCl7cj1vO3JldHVybn1obyhrW2c+PjJdfDAsa1tqPj4yXXwwLGtbbj4+Ml18MCxrW20+PjJdfDAsa1tsPj4yXXwwLGtbaD4+Ml18MCxrW2k+PjJdfDApO3I9bztyZXR1cm59ZnVuY3Rpb24gQ20oYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTA7Zj1yO3I9cisxNnwwO2Q9ZisxMnwwO2c9Zis0fDA7ZT1mO2tbZD4+Ml09YTtrW2YrOD4+Ml09YjtrW2c+PjJdPWM7aWYoRm0oa1tkPj4yXXwwLDIwNDk0LGtba1tnPj4yXT4+Ml18MCxlKXwwKXtyPWY7cmV0dXJufWlmKERuKGtbZD4+Ml18MCxrW2U+PjJdfDApfDApe3I9ZjtyZXR1cm59Y28oa1tkPj4yXXwwLGtbZT4+Ml18MCk7cj1mO3JldHVybn1mdW5jdGlvbiBEbShhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaT0wO2g9cjtyPXIrMzJ8MDtkPWgrMjB8MDtpPWgrMTJ8MDtnPWgrOHwwO2U9aCs0fDA7Zj1oO2tbZD4+Ml09YTtrW2grMTY+PjJdPWI7a1tpPj4yXT1jO2lmKEZtKGtbZD4+Ml18MCwyMDUxMixrW2tbaT4+Ml0+PjJdfDAsZil8MCl7cj1oO3JldHVybn1rW2U+PjJdPWtba1tmPj4yXT4+Ml07aT1hbyhrW2U+PjJdfDApfDA7a1tnPj4yXT1pO3N3aXRjaChrW2c+PjJdfDApe2Nhc2UgMDp7d2Uoa1tkPj4yXXwwLDIzMzMxLC0xLDApO3I9aDtyZXR1cm59Y2FzZSAxMDE6e3dlKGtbZD4+Ml18MCwyMzM0NywtMSwwKTtyPWg7cmV0dXJufWRlZmF1bHQ6e0FlKGtbZD4+Ml18MCxrW2c+PjJdfDApO3I9aDtyZXR1cm59fX1mdW5jdGlvbiBFbShhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaT0wO2k9cjtyPXIrMzJ8MDtkPWkrMTZ8MDtlPWkrMTJ8MDtmPWkrOHwwO2c9aSs0fDA7aD1pO2tbZD4+Ml09YTtrW2U+PjJdPWI7a1tmPj4yXT1jO2lmKEZtKGtbZD4+Ml18MCwyMDUwMixrW2tbZj4+Ml0+PjJdfDAsZyl8MCl7cj1pO3JldHVybn1rW2g+PjJdPTA7aWYoKGtbZT4+Ml18MCk+MSl7YT1qZShrWyhrW2Y+PjJdfDApKzQ+PjJdfDApfDA7a1toPj4yXT1hfUdtKGtbZD4+Ml18MCxrW2c+PjJdfDAsa1toPj4yXXwwKTtyPWk7cmV0dXJufWZ1bmN0aW9uIEZtKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGw9MCxtPTAsbj0wLG89MDtvPXI7cj1yKzMyfDA7bT1vO2U9bysyOHwwO2Y9bysyNHwwO2c9bysyMHwwO2g9bysxNnwwO2o9bysxMnwwO2w9bys4fDA7bj1vKzR8MDtrW2Y+PjJdPWE7a1tnPj4yXT1iO2tbaD4+Ml09YztrW2o+PjJdPWQ7aWYoKG9lKGtbaD4+Ml18MCl8MCk9PTQ/KGtlKGtbaD4+Ml18MCl8MCk9PTQ6MCl7Yj1pZShrW2g+PjJdfDApfDA7aVtsPj4wXT1pW2I+PjBdfDA7aVtsKzE+PjBdPWlbYisxPj4wXXwwO2lbbCsyPj4wXT1pW2IrMj4+MF18MDtpW2wrMz4+MF09aVtiKzM+PjBdfDA7a1trW2o+PjJdPj4yXT1rW2w+PjJdO2tbZT4+Ml09MDtiPWtbZT4+Ml18MDtyPW87cmV0dXJuIGJ8MH1rW20+PjJdPWtbZz4+Ml07Yj1ZZCgyMzMwMixtKXwwO2tbbj4+Ml09YjtzZShrW2Y+PjJdfDAsa1tuPj4yXXwwLC0xKTtVZChrW24+PjJdfDApO2tbZT4+Ml09MTtiPWtbZT4+Ml18MDtyPW87cmV0dXJuIGJ8MH1mdW5jdGlvbiBHbShhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaT0wO2k9cjtyPXIrMzJ8MDtkPWkrMTZ8MDtmPWkrMTJ8MDtlPWkrOHwwO2c9aSs0fDA7aD1pO2tbZD4+Ml09YTtrW2Y+PjJdPWI7a1tlPj4yXT1jO2tbZz4+Ml09a1trW2Y+PjJdPj4yXTtpZihrW2U+PjJdfDApa1toPj4yXT1rW2U+PjJdO2Vsc2Uga1toPj4yXT0yMzIzNztkPWtbZD4+Ml18MDtpZihrWyhrW2Y+PjJdfDApKzEyPj4yXXwwKXtIbShkLGtbZj4+Ml18MCxrW2g+PjJdfDApO0ltKGtbZz4+Ml18MCk7cj1pO3JldHVybn1lbHNle3BlKGQsMTg0MDIsMCwwKTtyPWk7cmV0dXJufX1mdW5jdGlvbiBIbShhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHM9MCx0PTAsdT0wO3U9cjtyPXIrODB8MDtkPXUrNzZ8MDtlPXUrNzJ8MDtmPXUrNjh8MDtwPXU7bj11KzY0fDA7bz11KzYwfDA7aD11KzU2fDA7Zz11KzUyfDA7cT11KzQ4fDA7bT11KzQ0fDA7aj11KzQwfDA7cz11KzM2fDA7bD11KzMyfDA7a1tkPj4yXT1hO2tbZT4+Ml09YjtrW2Y+PjJdPWM7a1tuPj4yXT1rW2tbZT4+Ml0+PjJdO2tbbz4+Ml09MDtrW2g+PjJdPTA7a1tnPj4yXT0wO2tbcT4+Ml09MDtrW3A+PjJdPTA7a1twKzQ+PjJdPTA7a1twKzg+PjJdPTA7a1twKzEyPj4yXT0wO2tbcCsxNj4+Ml09MDtrW3ArMjA+PjJdPTA7a1twKzI0Pj4yXT0wO2tbcCsyOD4+Ml09MDtrW3A+PjJdPWtbZT4+Ml07a1twKzQ+PjJdPWtbKGtbbj4+Ml18MCkrMjQ+PjJdO2lmKChrWyhrW2U+PjJdfDApKzkyPj4yXXwwKSE9MD8oclIoa1soa1soa1tlPj4yXXwwKSs5Mj4+Ml18MCkrMTI+PjJdfDAsa1tmPj4yXXwwKXwwKSE9MDowKXtKbShrWyhrW2U+PjJdfDApKzkyPj4yXXwwKTtrWyhrW2U+PjJdfDApKzkyPj4yXT0wfWlmKCEoa1soa1tlPj4yXXwwKSs5Mj4+Ml18MCkpe2tbbT4+Ml09MDtjPUttKGtbKGtbZT4+Ml18MCkrMTI+PjJdfDApfDA7a1soa1tlPj4yXXwwKSsyMD4+Ml09YztrW3ArOD4+Ml09a1soa1tlPj4yXXwwKSsyMD4+Ml07a1tqPj4yXT0wO3doaWxlKDEpe2lmKCEoaVsoa1tmPj4yXXwwKSsoa1tqPj4yXXwwKT4+MF18MCkpYnJlYWs7a1tzPj4yXT0wO2lmKExtKGtbbj4+Ml18MCxpWyhrW2Y+PjJdfDApKyhrW2o+PjJdfDApPj4wXXwwLHMpfDApe3Q9ODticmVha31jPU1tKHAsaVsoa1tmPj4yXXwwKSsoa1tqPj4yXXwwKT4+MF18MCl8MDtrW20+PjJdPShrW20+PjJdfDApK2M7a1tqPj4yXT0oa1tqPj4yXXwwKSsxfWlmKCh0fDApPT04KXtzZShrW2Q+PjJdfDAsa1tzPj4yXXwwLC0xKTtVZChrW3M+PjJdfDApO3I9dTtyZXR1cm59dD1ObShrW20+PjJdfDAsa1tmPj4yXXwwKXwwO2tbKGtbZT4+Ml18MCkrOTI+PjJdPXQ7aWYoIShrWyhrW2U+PjJdfDApKzkyPj4yXXwwKSlrW28+PjJdPTc7a1soa1tlPj4yXXwwKSs4OD4+Ml09MTtrW2g+PjJdPTF9aWYoKGtbbz4+Ml18MCk9PTA/KHQ9T20oa1soa1tlPj4yXXwwKSs5Mj4+Ml18MCxnKXwwLGtbcT4+Ml09dCwoa1txPj4yXXwwKT09MCk6MClrW28+PjJdPTc7aWYoKGtbbz4+Ml18MCk9PTA/KGtbcCsyOD4+Ml09a1tnPj4yXSxrW3ArOD4+Ml09a1soa1tlPj4yXXwwKSsyMD4+Ml0sdD1QbShrW2U+PjJdfDAsa1toPj4yXXwwLHAsa1tmPj4yXXwwKXwwLGtbbz4+Ml09dCwoa1toPj4yXXwwKSE9MCk6MClRbShrWyhrW2U+PjJdfDApKzkyPj4yXXwwKTtpZighKGtbbz4+Ml18MCkpe2tbbD4+Ml09a1soa1soa1tlPj4yXXwwKSs5Mj4+Ml18MCkrND4+Ml08PDI7cGUoa1tkPj4yXXwwLGtbZz4+Ml18MCxrW2w+PjJdfDAsa1txPj4yXXwwKTtyPXU7cmV0dXJufUFlKGtbZD4+Ml18MCxrW28+PjJdfDApO2lmKCEoa1txPj4yXXwwKSl7cj11O3JldHVybn1fYltrW3E+PjJdJjI1NV0oa1tnPj4yXXwwKTtyPXU7cmV0dXJufWZ1bmN0aW9uIEltKGEpe2E9YXwwO3ZhciBiPTAsYz0wO2I9cjtyPXIrMTZ8MDtjPWI7a1tjPj4yXT1hO2RmKGtbKGtbYz4+Ml18MCkrMjQ0Pj4yXXwwKXwwO2tbKGtbYz4+Ml18MCkrMjQ0Pj4yXT0wO3I9YjtyZXR1cm59ZnVuY3Rpb24gSm0oYSl7YT1hfDA7dmFyIGI9MCxjPTA7Yz1yO3I9cisxNnwwO2I9YztrW2I+PjJdPWE7aWYoIShrW2I+PjJdfDApKXtyPWM7cmV0dXJufWlba1tiPj4yXT4+MF09MDtpZihsW2tbYj4+Ml0+PjBdfDApe3I9YztyZXR1cm59aWYobFsoa1tiPj4yXXwwKSsxPj4wXXwwKXtyPWM7cmV0dXJufWlmKGxbKGtbYj4+Ml18MCkrMj4+MF18MCl7cj1jO3JldHVybn1VZChrW2I+PjJdfDApO3I9YztyZXR1cm59ZnVuY3Rpb24gS20oYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wO2M9cjtyPXIrMTZ8MDtkPWMrNHwwO2I9YztrW2Q+PjJdPWE7a1tiPj4yXT0wO1htKGtbZD4+Ml18MCwxNTMsYil8MDtyPWM7cmV0dXJuIGtbYj4+Ml18MH1mdW5jdGlvbiBMbShhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wO2o9cjtyPXIrMzJ8MDtoPWo7ZD1qKzEyfDA7ZT1qKzh8MDtmPWorMTZ8MDtnPWorNHwwO2tbZT4+Ml09YTtpW2Y+PjBdPWI7a1tnPj4yXT1jO2RvIGlmKChpW2Y+PjBdfDApIT0xMTI/KGlbZj4+MF18MCkhPTk5OjApe2lmKChpW2Y+PjBdfDApPT0xMTA/KGxbKGtbZT4+Ml18MCkrMjI4Pj4wXXwwKSE9MDowKWJyZWFrO2lmKChpW2Y+PjBdfDApPT05Nz8obFsoa1tlPj4yXXwwKSsyMjg+PjBdfDApIT0wOjApYnJlYWs7aWYoKGlbZj4+MF18MCk9PTEwOD8obFsoa1tlPj4yXXwwKSsyMzA+PjBdfDApIT0wOjApYnJlYWs7aWYoKCgoaVtmPj4wXXwwKSE9MTE1PyhpW2Y+PjBdfDApIT0xMjA6MCk/KGlbZj4+MF18MCkhPTEyMTowKT8oaVtmPj4wXXwwKSE9OTg6MCl7Yz1rW2c+PjJdfDA7a1toPj4yXT1pW2Y+PjBdO1BrKGMsMjMyNjcsaCk7a1tkPj4yXT0xO2g9a1tkPj4yXXwwO3I9ajtyZXR1cm4gaHwwfX13aGlsZSgwKTtrW2Q+PjJdPTA7aD1rW2Q+PjJdfDA7cj1qO3JldHVybiBofDB9ZnVuY3Rpb24gTW0oYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wO2U9cjtyPXIrMTZ8MDtjPWUrNHwwO2Y9ZSs4fDA7ZD1lO2tbYz4+Ml09YTtpW2Y+PjBdPWI7c3dpdGNoKGlbZj4+MF18MCl7Y2FzZSA5OTpjYXNlIDExMjpjYXNlIDExMDp7a1tkPj4yXT0xO2JyZWFrfWNhc2UgMTE1OmNhc2UgMTA4OmNhc2UgOTc6e2tbZD4+Ml09a1soa1tjPj4yXXwwKSs0Pj4yXTticmVha31jYXNlIDEyMTp7Zj1oYShrWyhrW2M+PjJdfDApKzQ+PjJdfDAsa1soa1tjPj4yXXwwKSs4Pj4yXXwwKXwwO2tbZD4+Ml09ZjticmVha31jYXNlIDk4OntmPWhhKGtbKGtbYz4+Ml18MCkrOD4+Ml18MCwoKGtbKGtbYz4+Ml18MCkrND4+Ml18MCkrMzF8MCkvMzJ8MCl8MDtrW2Q+PjJdPWY7YnJlYWt9ZGVmYXVsdDp7Zj0oaGEoa1soa1tjPj4yXXwwKSs0Pj4yXXwwLGtbKGtbYz4+Ml18MCkrOD4+Ml18MCl8MCkqM3wwO2tbZD4+Ml09Zn19cj1lO3JldHVybiBrW2Q+PjJdfDB9ZnVuY3Rpb24gTm0oYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTA7aD1yO3I9ciszMnwwO2M9aCsxNnwwO2Q9aCsxMnwwO2c9aCs4fDA7ZT1oKzR8MDtmPWg7a1tjPj4yXT1hO2tbZD4+Ml09YjtrW2U+PjJdPSgoa1tjPj4yXTw8MSkrMTw8MikrMjA7Yj11UihrW2Q+PjJdfDApfDA7a1tmPj4yXT1iO2I9U2QoKGtbZT4+Ml18MCkrKGtbZj4+Ml18MCkrMXwwKXwwO2tbZz4+Ml09YjtpZighKGtbZz4+Ml18MCkpe2I9a1tnPj4yXXwwO3I9aDtyZXR1cm4gYnwwfWRTKGtbZz4+Ml18MCwwLGtbZT4+Ml18MCl8MDtrWyhrW2c+PjJdfDApKzE2Pj4yXT0oa1tnPj4yXXwwKSsxNis0LShrW2c+PjJdfDApO2tbKGtbZz4+Ml18MCkrMTYrKDErKGtbYz4+Ml18MCk8PDIpPj4yXT0oa1soa1tnPj4yXXwwKSsxNj4+Ml18MCkrKChrW2M+PjJdfDApKzE8PDIpO2tbKGtbZz4+Ml18MCkrND4+Ml09a1tjPj4yXTtrWyhrW2c+PjJdfDApKzEyPj4yXT0oa1tnPj4yXXwwKSsoa1tlPj4yXXwwKTtiUyhrWyhrW2c+PjJdfDApKzEyPj4yXXwwLGtbZD4+Ml18MCwoa1tmPj4yXXwwKSsxfDApfDA7aVtrW2c+PjJdPj4wXT0xO2I9a1tnPj4yXXwwO3I9aDtyZXR1cm4gYnwwfWZ1bmN0aW9uIE9tKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTA7Zz1yO3I9cisxNnwwO2M9ZysxMnwwO2Q9Zys4fDA7Zj1nKzR8MDtlPWc7a1tjPj4yXT1hO2tbZD4+Ml09YjtrW2Y+PjJdPTA7a1tlPj4yXT0wO2I9a1tjPj4yXXwwO2RvIGlmKGxbKGtbYz4+Ml18MCkrMT4+MF18MCl7YT1rW2M+PjJdfDA7aWYoIShsW2IrMj4+MF18MCkpe2lbYSsyPj4wXT0xO2tbZT4+Ml09KGtbYz4+Ml18MCkrMTYrKChrWyhrW2M+PjJdfDApKzQ+PjJdfDApKzI8PDIpO2tbZj4+Ml09MTUyO2JyZWFrfWI9U2Qoa1thKzQ+PjJdPDwyKXwwO2tbZT4+Ml09YjtpZigoa1tlPj4yXXwwKSE9MD8oa1tmPj4yXT0xNDgsKGtbKGtbYz4+Ml18MCkrOD4+Ml18MCkhPTApOjApYlMoa1tlPj4yXXwwLChrW2M+PjJdfDApKzE2KzR8MCxrWyhrW2M+PjJdfDApKzQ+PjJdPDwyfDApfDB9ZWxzZXtpW2IrMT4+MF09MTtrW2U+PjJdPShrW2M+PjJdfDApKzE2KzQ7a1tmPj4yXT0xNTJ9d2hpbGUoMCk7a1trW2Q+PjJdPj4yXT1rW2U+PjJdO3I9ZztyZXR1cm4ga1tmPj4yXXwwfWZ1bmN0aW9uIFBtKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MDtCPXI7cj1yKzk2fDA7ZT1CKzkyfDA7Zj1CKzg4fDA7Zz1CKzg0fDA7aD1CKzgwfDA7QT1CKzc2fDA7bT1CKzcyfDA7eT1CKzY4fDA7ej1CKzY0fDA7cT1CKzI0fDA7cz1CKzE2fDA7aj1CKzYwfDA7bj1CKzU2fDA7cD1CKzUyfDA7dD1CKzh8MDt4PUIrNDh8MDtvPUIrNDR8MDtsPUIrNDB8MDt1PUI7dj1CKzM2fDA7dz1CKzMyfDA7a1tlPj4yXT1hO2tbZj4+Ml09YjtrW2c+PjJdPWM7a1toPj4yXT1kO2tbQT4+Ml09MDtrW3k+PjJdPWtba1tlPj4yXT4+Ml07a1t6Pj4yXT0wO2tbbT4+Ml09MDt3aGlsZSgxKXtpZihrW0E+PjJdfDApe2U9MzE7YnJlYWt9aWYoIShpWyhrW2g+PjJdfDApKyhrW20+PjJdfDApPj4wXXwwKSl7ZT0zMTticmVha31pWyhrW2c+PjJdfDApKzI0Pj4wXT1pWyhrW2g+PjJdfDApKyhrW20+PjJdfDApPj4wXXwwO2E6ZG8gc3dpdGNoKGlbKGtbaD4+Ml18MCkrKGtbbT4+Ml18MCk+PjBdfDApe2Nhc2UgMTEyOntpZihrW2Y+PjJdfDApa1trWyhrW2c+PjJdfDApKzI4Pj4yXT4+Ml09a1soa1tnPj4yXXwwKSs4Pj4yXTticmVha31jYXNlIDk5OntpZihrW2Y+PjJdfDApa1trWyhrW2c+PjJdfDApKzI4Pj4yXT4+Ml09a1soa1tnPj4yXXwwKSs0Pj4yXTticmVha31jYXNlIDExMDp7aWYoa1tmPj4yXXwwKXtkPXE7a1tkPj4yXT0wO2tbZCs0Pj4yXT0wO2Q9Um0oa1t5Pj4yXXwwLHoscSwwKXwwO2tbQT4+Ml09ZDtrW2tbKGtbZz4+Ml18MCkrMjg+PjJdPj4yXT1rW3E+PjJdfWJyZWFrfWNhc2UgOTc6e2lmKChrW2Y+PjJdfDApIT0wPyhkPVJtKGtbeT4+Ml18MCx6LHMsail8MCxrW0E+PjJdPWQsKGtbQT4+Ml18MCk9PTApOjApe2tbbj4+Ml09MDt3aGlsZSgxKXtpZigoa1tuPj4yXXwwKT49KGtbKGtbZz4+Ml18MCkrND4+Ml18MCkpYnJlYWsgYTtkPWltKGtbaj4+Ml18MCx0KXwwO2tbaj4+Ml09KGtbaj4+Ml18MCkrZDtkPWtbdD4+Ml18MDtjPXM7Yz1pUyhrW2M+PjJdfDAsa1tjKzQ+PjJdfDAsMiwwKXwwO2M9JFIoZHwwLDAsY3wwLEx8MCl8MDtkPXM7ZD1pUyhjfDAsTHwwLGtbZD4+Ml18MCxrW2QrND4+Ml18MCl8MDtrW3A+PjJdPWQ7a1soa1soa1tnPj4yXXwwKSsyOD4+Ml18MCkrKGtbbj4+Ml08PDIpPj4yXT1rW3A+PjJdO2tbbj4+Ml09KGtbbj4+Ml18MCkrMX19YnJlYWt9Y2FzZSAxMDg6e2tbeD4+Ml09MDtkPShrW2U+PjJdfDApKzMyfDA7ZD1TbShrW3k+PjJdfDAsa1tkPj4yXXwwLGtbZCs0Pj4yXXwwLHgpfDA7a1tBPj4yXT1kO2I6ZG8gaWYoIShrW0E+PjJdfDApKXtkPUplKGtbeD4+Ml18MCwwKXwwO2tbbD4+Ml09ZDtrW28+PjJdPTA7d2hpbGUoMSl7aWYoKGtbbz4+Ml18MCk+PShrWyhrW2c+PjJdfDApKzQ+PjJdfDApKWJyZWFrIGI7ZD1pbShrW2w+PjJdfDAsdSl8MDtrW2w+PjJdPShrW2w+PjJdfDApK2Q7a1soa1soa1tnPj4yXXwwKSsyOD4+Ml18MCkrKGtbbz4+Ml08PDIpPj4yXT1rW3U+PjJdO2tbbz4+Ml09KGtbbz4+Ml18MCkrMX19d2hpbGUoMCk7Z2Uoa1t4Pj4yXXwwKXwwO2JyZWFrfWNhc2UgMTE1OntkPVRtKGtbZT4+Ml18MCwwLDApfDA7a1tBPj4yXT1kO2lmKCEoa1tBPj4yXXwwKSl7ZD1VbShrW2U+PjJdfDAsa1tnPj4yXXwwKXwwO2tbQT4+Ml09ZH1icmVha31jYXNlIDEyMTpjYXNlIDk4OntkPShNbShrW2c+PjJdfDAsaVsoa1toPj4yXXwwKSsoa1ttPj4yXXwwKT4+MF18MCl8MCk8PDI7a1t2Pj4yXT1kO2RTKGtbKGtbZz4+Ml18MCkrMjg+PjJdfDAsMCxrW3Y+PjJdfDApfDA7Vm0oa1soa1tlPj4yXXwwKSsxMj4+Ml18MCxrW2c+PjJdfDApO2JyZWFrfWRlZmF1bHQ6e2tbdz4+Ml09a1soa1tlPj4yXXwwKSsxMj4+Ml07ZD1UbShrW2U+PjJdfDAsMCwwKXwwO2tbQT4+Ml09ZDtpZighKGtbQT4+Ml18MCkpe2lmKGtbZj4+Ml18MCl7aWYoKGtbKGtbZT4+Ml18MCkrMjQ+PjJdfDApIT0wPyhkPVJtKGtbeT4+Ml18MCx6LChrW2c+PjJdfDApKzE2fDAsMCl8MCxrW0E+PjJdPWQsKGtbQT4+Ml18MCkhPTApOjApYnJlYWsgYTtkPVhtKGtbdz4+Ml18MCwxNTQsa1tnPj4yXXwwKXwwO2tbQT4+Ml09ZDtZbShrW2U+PjJdfDAsQSl8MDtpZihrW0E+PjJdfDApYnJlYWsgYX1YbShrW3c+PjJdfDAsMTU1LGtbZz4+Ml18MCl8MH19fXdoaWxlKDApO2M9TW0oa1tnPj4yXXwwLGlbKGtbaD4+Ml18MCkrKGtbbT4+Ml18MCk+PjBdfDApfDA7ZD0oa1tnPj4yXXwwKSsyOHwwO2tbZD4+Ml09KGtbZD4+Ml18MCkrKGM8PDIpO2tbbT4+Ml09KGtbbT4+Ml18MCkrMX1pZigoZXwwKT09MzEpe2dlKGtbej4+Ml18MCl8MDtyPUI7cmV0dXJuIGtbQT4+Ml18MH1yZXR1cm4gMH1mdW5jdGlvbiBRbShhKXthPWF8MDt2YXIgYj0wLGM9MDtiPXI7cj1yKzE2fDA7Yz1iO2tbYz4+Ml09YTtrWyhrW2M+PjJdfDApKzg+PjJdPTE7YlMoKGtbYz4+Ml18MCkrMTYrKDIrKGtbKGtbYz4+Ml18MCkrND4+Ml18MCk8PDIpfDAsKGtbYz4+Ml18MCkrMTYrNHwwLGtbKGtbYz4+Ml18MCkrND4+Ml08PDJ8MCl8MDtyPWI7cmV0dXJufWZ1bmN0aW9uIFJtKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaT0wLGo9MCxsPTAsbT0wLG49MCxvPTA7bz1yO3I9cis0OHwwO2U9byszNnwwO2Y9byszMnwwO2c9bysyOHwwO2g9bysyNHwwO2k9bysyMHwwO209bysxNnwwO2o9bysxMnwwO2w9bztuPW8rOHwwO2tbZj4+Ml09YTtrW2c+PjJdPWI7a1toPj4yXT1jO2tbaT4+Ml09ZDtpZigoa1trW2c+PjJdPj4yXXwwKT09MD8oYj1abihrW2Y+PjJdfDAsa1tnPj4yXXwwKXwwLGtbbj4+Ml09Yiwoa1tuPj4yXXwwKSE9MCk6MCl7a1tlPj4yXT1rW24+PjJdO249a1tlPj4yXXwwO3I9bztyZXR1cm4gbnwwfWtbbT4+Ml09a1trW2c+PjJdPj4yXTtuPUplKGtbbT4+Ml18MCwwKXwwO2tbaj4+Ml09bjtuPWltKGtbaj4+Ml18MCxsKXwwO2tbaj4+Ml09KGtbaj4+Ml18MCkrbjtuPWw7aWYoKGtbbj4+Ml18MCk9PTAmKGtbbis0Pj4yXXwwKT09MCl7a1tlPj4yXT0yNjc7bj1rW2U+PjJdfDA7cj1vO3JldHVybiBufDB9bj1rW2g+PjJdfDA7a1tuPj4yXT1rW2w+PjJdO2tbbis0Pj4yXT0wO2lmKGtbaT4+Ml18MClrW2tbaT4+Ml0+PjJdPWtbaj4+Ml07a1tlPj4yXT0wO249a1tlPj4yXXwwO3I9bztyZXR1cm4gbnwwfWZ1bmN0aW9uIFNtKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTA7ZT1yO3I9cisxNnwwO2c9ZSsxMnwwO2g9ZTtmPWUrOHwwO2tbZz4+Ml09YTthPWg7a1thPj4yXT1iO2tbYSs0Pj4yXT1jO2tbZj4+Ml09ZDtkPWg7ZD1ZbihrW2c+PjJdfDAsa1tkPj4yXXwwLGtbZCs0Pj4yXXwwLGtbZj4+Ml18MCl8MDtyPWU7cmV0dXJuIGR8MH1mdW5jdGlvbiBUbShhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaT0wO2g9cjtyPXIrMzJ8MDtpPWgrMjR8MDtkPWgrMjB8MDtlPWgrMTZ8MDtmPWgrMTJ8MDtnPWg7a1tpPj4yXT1hO2tbZD4+Ml09YjtrW2U+PjJdPWM7a1tnPj4yXT0wO2tbZys0Pj4yXT0wO2tbZys4Pj4yXT0wO2tbZz4+Ml09a1tpPj4yXTtjPVhtKGtbKGtbaT4+Ml18MCkrMTI+PjJdfDAsMTU2LGcpfDA7a1tmPj4yXT1jO2lmKGtbZD4+Ml18MClrW2tbZD4+Ml0+PjJdPWtbZys0Pj4yXTtpZighKGtbZT4+Ml18MCkpe2k9a1tmPj4yXXwwO3I9aDtyZXR1cm4gaXwwfWtba1tlPj4yXT4+Ml09a1tnKzg+PjJdO2k9a1tmPj4yXXwwO3I9aDtyZXR1cm4gaXwwfWZ1bmN0aW9uIFVtKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wLGk9MCxqPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscz0wLHQ9MDt0PXI7cj1yKzY0fDA7cD10KzU2fDA7Yz10KzUyfDA7ZD10KzQ4fDA7cT10KzQ0fDA7ZT10KzQwfDA7Zj10KzM2fDA7aj10KzMyfDA7bj10KzI4fDA7Zz10KzI0fDA7aD10KzIwfDA7cz10KzE2fDA7bT10KzEyfDA7bD10Kzh8MDtpPXQrNHwwO289dDtrW2M+PjJdPWE7a1tkPj4yXT1iO2tbaj4+Ml09MDtiPVNkKGtbKGtbYz4+Ml18MCkrMjA+PjJdPDw0KXwwO2tbcT4+Ml09YjtpZighKGtbcT4+Ml18MCkpe2tbcD4+Ml09NztzPWtbcD4+Ml18MDtyPXQ7cmV0dXJuIHN8MH1kUyhrW3E+PjJdfDAsMCxrWyhrW2M+PjJdfDApKzIwPj4yXTw8NHwwKXwwO1htKGtbKGtbYz4+Ml18MCkrMTI+PjJdfDAsMTU3LGtbcT4+Ml18MCl8MDtrW2U+PjJdPTA7d2hpbGUoMSl7aWYoKGtbZT4+Ml18MCk+PShrWyhrW2Q+PjJdfDApKzg+PjJdfDApKWJyZWFrO2tbbj4+Ml09KGtbcT4+Ml18MCkrKGtbZT4+Ml08PDQpO2tbaj4+Ml09KGtbaj4+Ml18MCktKGtbKGtbKGtba1tuPj4yXT4+Ml18MCkrMjA+PjJdfDApKzY0Pj4yXXwwKTtrWyhrW24+PjJdfDApKzQ+PjJdPWtbaj4+Ml07a1tlPj4yXT0oa1tlPj4yXXwwKSsxfWtbZj4+Ml09MDthOndoaWxlKDEpe2lmKChrW2Y+PjJdfDApPj0oa1soa1tkPj4yXXwwKSs0Pj4yXXwwKSl7Yz0zMzticmVha31rW2c+PjJdPTA7a1toPj4yXT0wO2tbZT4+Ml09MDt3aGlsZSgxKXtpZigoa1tlPj4yXXwwKT49KGtbKGtbZD4+Ml18MCkrOD4+Ml18MCkpYnJlYWs7a1ttPj4yXT0oa1txPj4yXXwwKSsoa1tlPj4yXTw8NCk7bj1fbShrW2M+PjJdfDAsa1trW20+PjJdPj4yXXwwLGtbZj4+Ml18MCwoa1ttPj4yXXwwKSs4fDApfDA7a1tzPj4yXT1uO2lmKGtbcz4+Ml18MCl7Yz0xMTticmVhayBhfWlmKGtbKGtbbT4+Ml18MCkrOD4+Ml18MCl7a1soa1ttPj4yXXwwKSsxMj4+Ml09a1soa1ttPj4yXXwwKSs0Pj4yXTtXbigoa1txPj4yXXwwKSsoa1tlPj4yXTw8NCl8MCl8MDtrW2g+PjJdPShrW2g+PjJdfDApKzF9a1tlPj4yXT0oa1tlPj4yXXwwKSsxfXdoaWxlKDEpe2lmKChrW2g+PjJdfDApPD0wKWJyZWFrO2tbbD4+Ml09MDtrW2k+PjJdPTA7a1tlPj4yXT0wO3doaWxlKDEpe2lmKChrW2U+PjJdfDApPj0oa1soa1tkPj4yXXwwKSs4Pj4yXXwwKSlicmVhaztrW28+PjJdPShrW3E+PjJdfDApKyhrW2U+PjJdPDw0KTtpZihrWyhrW28+PjJdfDApKzg+PjJdfDApe2lmKCEoKGtbbD4+Ml18MCkhPTA/KGtbKGtbbz4+Ml18MCkrMTI+PjJdfDApPj0oa1soa1tsPj4yXXwwKSsxMj4+Ml18MCk6MCkpa1tsPj4yXT1rW28+PjJdO2lmKChrW2k+PjJdfDApIT0wPyhrWyhrW28+PjJdfDApKzEyPj4yXXwwKSE9KGtbKGtbbz4+Ml18MCkrLTE2KzEyPj4yXXwwKTowKWtbaT4+Ml09MTtlbHNlIGtbaT4+Ml09KGtbaT4+Ml18MCkrMTtpZigoa1tpPj4yXXwwKT4oa1tnPj4yXXwwKSlrW2c+PjJdPWtbaT4+Ml19ZWxzZSBrW2k+PjJdPTA7a1tlPj4yXT0oa1tlPj4yXXwwKSsxfWlmKCEoV24oa1tsPj4yXXwwKXwwKSljb250aW51ZTtrW2g+PjJdPShrW2g+PjJdfDApKy0xfWtbKGtbKGtbZD4+Ml18MCkrMjg+PjJdfDApKyhrW2Y+PjJdPDwyKT4+Ml09a1tnPj4yXTtrW2Y+PjJdPShrW2Y+PjJdfDApKzF9aWYoKGN8MCk9PTExKXtrW3A+PjJdPWtbcz4+Ml07cz1rW3A+PjJdfDA7cj10O3JldHVybiBzfDB9ZWxzZSBpZigoY3wwKT09MzMpe1VkKGtbcT4+Ml18MCk7a1twPj4yXT0wO3M9a1twPj4yXXwwO3I9dDtyZXR1cm4gc3wwfXJldHVybiAwfWZ1bmN0aW9uIFZtKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wO2U9cjtyPXIrMTZ8MDtjPWUrNHwwO2Q9ZTtrW2M+PjJdPWE7a1tkPj4yXT1iO2lmKGxbKGtbYz4+Ml18MCkrMzI+PjBdfDApe3I9ZTtyZXR1cm59Yj0oa1tjPj4yXXwwKSsyNHwwO2E9KGtba1tkPj4yXT4+Ml18MCkrMzJ8MDtpZighKChrW2I+PjJdfDApPT0oa1thPj4yXXwwKT8oa1tiKzQ+PjJdfDApPT0oa1thKzQ+PjJdfDApOjApKXtyPWU7cmV0dXJufWI9a1tjPj4yXXwwO2lmKGtbKGtbYz4+Ml18MCkrMTI+PjJdfDApe1ZtKGtbYisxMj4+Ml18MCxrW2Q+PjJdfDApO1ZtKGtbKGtbYz4+Ml18MCkrMTY+PjJdfDAsa1tkPj4yXXwwKTtyPWU7cmV0dXJufWVsc2V7VW4oYixrW2Q+PjJdfDApO3I9ZTtyZXR1cm59fWZ1bmN0aW9uIFdtKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MDtkPXI7cj1yKzE2fDA7Zj1kKzEyfDA7Zz1kKzh8MDtoPWQrNHwwO2U9ZDtrW2Y+PjJdPWE7a1tnPj4yXT1iO2tbaD4+Ml09YztrW2U+PjJdPWtbaD4+Ml07YT1oYSgoa1tnPj4yXXwwKSozfDAsa1soa1tlPj4yXXwwKSs0Pj4yXXwwKXwwO2E9Um4oa1trW2U+PjJdPj4yXXwwLGtbZj4+Ml18MCwoa1soa1tlPj4yXXwwKSsyOD4+Ml18MCkrKGE8PDIpfDApfDA7cj1kO3JldHVybiBhfDB9ZnVuY3Rpb24gWG0oYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wO2Q9cjtyPXIrMTZ8MDtoPWQrMTJ8MDtmPWQrOHwwO2U9ZCs0fDA7Zz1kO2tbaD4+Ml09YTtrW2Y+PjJdPWI7a1tlPj4yXT1jO2tbZz4+Ml09MDtiPVFuKGtbaD4+Ml18MCxnLGtbZj4+Ml18MCxrW2U+PjJdfDApfDA7cj1kO3JldHVybiBifDB9ZnVuY3Rpb24gWW0oYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MDtnPXI7cj1yKzE2fDA7Yz1nKzEyfDA7ZD1nKzh8MDtmPWcrNHwwO2U9ZztrW2M+PjJdPWE7a1tkPj4yXT1iO2tbZj4+Ml09a1trW2Q+PjJdPj4yXTtrW2U+PjJdPTA7aWYoa1tmPj4yXXwwKXtiPWtbZj4+Ml18MDtiPShifDApPT0wO2Y9a1tlPj4yXXwwO2Y9KGZ8MCkhPTA7Zj1iP2Y6MDtmPWYmMTtyPWc7cmV0dXJuIGZ8MH1pZigoa1soa1tjPj4yXXwwKSsyND4+Ml18MCkhPTA/KGI9RG4oMCxrW2M+PjJdfDApfDAsa1tmPj4yXT1iLChrW2Y+PjJdfDApPT0wKTowKXtiPUVuKGtbYz4+Ml18MCl8MDtrW2Y+PjJdPWJ9Yj0wPT0oRm4oa1tjPj4yXXwwLGtbKGtbYz4+Ml18MCkrMTI+PjJdfDAsZil8MCkmMTtrW2U+PjJdPWI7R24oa1tjPj4yXXwwKTtrW2tbZD4+Ml0+PjJdPWtbZj4+Ml07Yj1rW2Y+PjJdfDA7Yj0oYnwwKT09MDtmPWtbZT4+Ml18MDtmPShmfDApIT0wO2Y9Yj9mOjA7Zj1mJjE7cj1nO3JldHVybiBmfDB9ZnVuY3Rpb24gWm0oYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGk9MCxqPTAsbD0wLG09MDtqPXI7cj1yKzMyfDA7ZD1qKzI4fDA7bD1qKzI0fDA7bT1qKzIwfDA7aT1qKzE2fDA7Zz1qKzEyfDA7Zj1qKzh8MDtlPWorNHwwO2g9ajtrW2Q+PjJdPWE7a1tsPj4yXT1iO2tbbT4+Ml09YztrW2k+PjJdPTA7a1tnPj4yXT1rW20+PjJdO2E9KGhhKGtbbD4+Ml18MCxrWyhrW2c+PjJdfDApKzQ+PjJdfDApfDApKjN8MDtrW2Y+PjJdPWE7a1tlPj4yXT0wO3doaWxlKDEpe2lmKCEoKGtbZT4+Ml18MCk8KGtbKGtbZz4+Ml18MCkrND4+Ml18MCk/KGtbaT4+Ml18MCk9PTA6MCkpYnJlYWs7bT1fbShrW2tbZz4+Ml0+PjJdfDAsa1tkPj4yXXwwLGtbZT4+Ml18MCxoKXwwO2tbaT4+Ml09bTtpZihrW2g+PjJdfDApe209JG0oaCl8MDtrWyhrWyhrW2c+PjJdfDApKzI4Pj4yXXwwKSsoKGtbZj4+Ml18MCkrKChrW2U+PjJdfDApKjN8MCk8PDIpPj4yXT1tfWVsc2Uga1soa1soa1tnPj4yXXwwKSsyOD4+Ml18MCkrKChrW2Y+PjJdfDApKygoa1tlPj4yXXwwKSozfDApPDwyKT4+Ml09MDtrW2U+PjJdPShrW2U+PjJdfDApKzF9cj1qO3JldHVybiBrW2k+PjJdfDB9ZnVuY3Rpb24gX20oYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTAsbT0wLG49MCxvPTAscD0wLHE9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MCxFPTAsRj0wO0Y9cjtyPXIrOTZ8MDt6PUYrODB8MDtvPUYrNzZ8MDtlPUYrNzJ8MDtBPUYrNjh8MDtCPUYrNjR8MDt4PUYrNjB8MDttPUYrNTZ8MDtEPUYrNTJ8MDtDPUYrNDh8MDt1PUY7bj1GKzQ0fDA7cD1GKzQwfDA7Zz1GKzM2fDA7aD1GKzg1fDA7dj1GKzMyfDA7aj1GKzI4fDA7cz1GKzI0fDA7Zj1GKzIwfDA7cT1GKzg0fDA7eT1GKzE2fDA7dz1GKzEyfDA7dD1GKzh8MDtrW28+PjJdPWE7a1tlPj4yXT1iO2tbQT4+Ml09YztrW0I+PjJdPWQ7a1t4Pj4yXT1rWyhrW2U+PjJdfDApKzIwPj4yXTtrW20+PjJdPWtba1tvPj4yXT4+Ml07a1trW0I+PjJdPj4yXT0wO2lmKChrWyhrW3g+PjJdfDApKzY4Pj4yXXwwKTwoa1soa1ttPj4yXXwwKSsyND4+Ml18MCk/KGtbKGtbeD4+Ml18MCkrNjg+PjJdfDApIT0oa1tBPj4yXXwwKTowKXtrW3o+PjJdPTA7RT1rW3o+PjJdfDA7cj1GO3JldHVybiBFfDB9YT0oa1tlPj4yXXwwKSsyNHwwO2Q9a1thKzQ+PjJdfDA7Yj11O2tbYj4+Ml09a1thPj4yXTtrW2IrND4+Ml09ZDtrW0Q+PjJdPWtbKGtbeD4+Ml18MCkrMjg+PjJdO2I9dTtkPShrW28+PjJdfDApKzMyfDA7aWYoISghKChrW2I+PjJdfDApIT0oa1tkPj4yXXwwKT8xOihrW2IrND4+Ml18MCkhPShrW2QrND4+Ml18MCkpPyhsWyhrW2U+PjJdfDApKzMyPj4wXXwwKT09MDowKSlFPTY7ZG8gaWYoKEV8MCk9PTYpe2tbbj4+Ml09MDtrW3A+PjJdPWxbKGtbbT4+Ml18MCkrMjMxPj4wXTtrW2c+PjJdPTA7aVtoPj4wXT0wO2tbaj4+Ml09a1tlPj4yXTtrW3Y+PjJdPWtbKGtbZT4+Ml18MCkrOD4+Ml07d2hpbGUoMSl7aWYoIShrW3Y+PjJdfDApKWJyZWFrO2lmKChrW2tbdj4+Ml0+PjJdfDApPT00KWtbZz4+Ml09MTtpZigoa1trW3Y+PjJdPj4yXXwwKT09MSlrW2o+PjJdPWtbdj4+Ml07aWYoaVsoa1t2Pj4yXXwwKSszMj4+MF18MClpW2g+PjBdPTE7a1t2Pj4yXT1rWyhrW3Y+PjJdfDApKzg+PjJdfWlmKCEoa1tnPj4yXXwwKSl7a1t6Pj4yXT0wO0U9a1t6Pj4yXXwwO3I9RjtyZXR1cm4gRXwwfWE6ZG8gaWYoa1soa1t4Pj4yXXwwKSs0MD4+Ml18MCl7a1tmPj4yXT1sWyhrW2o+PjJdfDApKzMyPj4wXTthbihrW28+PjJdfDAsa1tqPj4yXXwwLG4pO2I6d2hpbGUoMSl7aWYoa1tuPj4yXXwwKWJyZWFrIGE7d2hpbGUoMSl7aWYoISgoaVsoa1tqPj4yXXwwKSszMj4+MF18MCkhPTBeMSkpYnJlYWsgYTtibihrW28+PjJdfDAsa1tqPj4yXXwwLG4pO2lmKGtbZj4+Ml18MCljb250aW51ZSBiO209KGtbaj4+Ml18MCkrMjR8MDtkPXU7aWYoISgoKGtbbT4+Ml18MCkhPShrW2Q+PjJdfDApPzE6KGtbbSs0Pj4yXXwwKSE9KGtbZCs0Pj4yXXwwKSkmKGtbbj4+Ml18MCk9PTApKWJyZWFrIGF9fX13aGlsZSgwKTtjOmRvIGlmKChpW2g+PjBdfDApIT0wJihrW24+PjJdfDApPT0wKWRve2lmKCEoKGlbKGtbaj4+Ml18MCkrMzI+PjBdfDApIT0wXjEpKWJyZWFrIGM7Ym4oa1tvPj4yXXwwLGtbaj4+Ml18MCxuKX13aGlsZSgoa1tuPj4yXXwwKT09MCk7d2hpbGUoMCk7aWYoa1tuPj4yXXwwKXtrW3o+PjJdPWtbbj4+Ml07RT1rW3o+PjJdfDA7cj1GO3JldHVybiBFfDB9a1tzPj4yXT0xO2tbdj4+Ml09a1tqPj4yXTt3aGlsZSgxKXtpZighKGtbdj4+Ml18MCkpYnJlYWs7aVtxPj4wXT0wO2tbeT4+Ml09a1t2Pj4yXTtpZigoa1trW3k+PjJdPj4yXXwwKT09MSlrW3k+PjJdPWtbKGtbeT4+Ml18MCkrMTY+PjJdO2tbdz4+Ml09a1soa1t5Pj4yXXwwKSsyMD4+Ml07a1tEPj4yXT1rWyhrW3c+PjJdfDApKzQ4Pj4yXTtkPShrW3c+PjJdfDApKzU2fDA7bj1rW2QrND4+Ml18MDtlPXU7a1tlPj4yXT1rW2Q+PjJdO2tbZSs0Pj4yXT1uO2U9KGtbKGtbdz4+Ml18MCkrND4+Ml18MCkhPTA7ZDpkbyBpZigobFsoa1tvPj4yXXwwKSs1Mj4+MF18MCk9PShrW3A+PjJdfDApKXtpZihlKWU9KGtbRD4+Ml18MCk+Pj4wPj0oKGtba1t3Pj4yXT4+Ml18MCkrKGtbKGtbdz4+Ml18MCkrND4+Ml18MCl8MCk+Pj4wO2Vsc2UgZT0xO2lbcT4+MF09ZSYxO3doaWxlKDEpe2lmKChrW0Q+PjJdfDApIT0wPyhkPShrW3A+PjJdfDApIT0wPy0xOjEsbT11LG49KGtbbz4+Ml18MCkrMzJ8MCxuPV9SKGtbbT4+Ml18MCxrW20rND4+Ml18MCxrW24+PjJdfDAsa1tuKzQ+PjJdfDApfDAsa1MoZHwwLCgoZHwwKTwwKTw8MzE+PjMxfDAsbnwwLEx8MCl8MCwoTHwwKT49MCk6MClicmVhayBkO2lmKGxbcT4+MF18MClicmVhayBkO2NuKGtbcD4+Ml18MCxrW2tbdz4+Ml0+PjJdfDAsa1soa1t3Pj4yXXwwKSs0Pj4yXXwwLEQsdSxxKX19ZWxzZXtpZihlKWlmKGtbRD4+Ml18MCllPShrW0Q+PjJdfDApPj4+MDw9KGtba1t3Pj4yXT4+Ml18MCk+Pj4wO2Vsc2UgZT0wO2Vsc2UgZT0xO2lbcT4+MF09ZSYxO3doaWxlKDEpe2lmKChrW0Q+PjJdfDApIT0wPyhkPShrW3A+PjJdfDApIT0wPy0xOjEsbT11LG49KGtbbz4+Ml18MCkrMzJ8MCxuPV9SKGtbbT4+Ml18MCxrW20rND4+Ml18MCxrW24+PjJdfDAsa1tuKzQ+PjJdfDApfDAsbj1rUyhkfDAsKChkfDApPDApPDwzMT4+MzF8MCxufDAsTHwwKXwwLGQ9TCwhKChkfDApPjB8KGR8MCk9PTAmbj4+PjA+MCkpOjApYnJlYWsgZDtpZihsW3E+PjBdfDApYnJlYWsgZDtrbShrW3A+PjJdfDAsa1trW3c+PjJdPj4yXXwwLGtbKGtbdz4+Ml18MCkrND4+Ml18MCxELHUsdCxxKX19d2hpbGUoMCk7a1soa1t3Pj4yXXwwKSs0OD4+Ml09a1tEPj4yXTttPXU7ZD1rW20rND4+Ml18MDtuPShrW3c+PjJdfDApKzU2fDA7a1tuPj4yXT1rW20+PjJdO2tbbis0Pj4yXT1kO2lmKCEoKGxbcT4+MF18MCk9PTA/KGQ9dSxuPShrW28+PjJdfDApKzMyfDAsISgoa1tkPj4yXXwwKSE9KGtbbj4+Ml18MCk/MTooa1tkKzQ+PjJdfDApIT0oa1tuKzQ+PjJdfDApKSk6MCkpa1tzPj4yXT0wO2tbdj4+Ml09a1soa1t2Pj4yXXwwKSsxMj4+Ml19aWYoa1tzPj4yXXwwKXtrW0Q+PjJdPWtbKGtbeD4+Ml18MCkrNDg+PjJdO2JyZWFrfWVsc2V7a1tEPj4yXT0wO2JyZWFrfX13aGlsZSgwKTtpZighKGtbRD4+Ml18MCkpe2tbej4+Ml09MDtFPWtbej4+Ml18MDtyPUY7cmV0dXJuIEV8MH1pZigoaVtrW0Q+PjJdPj4wXXwwKT09MSl7a1tEPj4yXT0oa1tEPj4yXXwwKSsxO2U9a1tEPj4yXXwwO2lmKGxba1tEPj4yXT4+MF0mMTI4KWU9am0oZSxDKXwwO2Vsc2V7a1tDPj4yXT1sW2U+PjBdO2U9MX1rW0Q+PjJdPShrW0Q+PjJdfDApK2V9ZWxzZSBrW0M+PjJdPTA7d2hpbGUoMSl7aWYoKGtbQz4+Ml18MCk+PShrW0E+PjJdfDApKWJyZWFrO2htKDAsRCk7aWYoIShpW2tbRD4+Ml0+PjBdfDApKXtFPTY1O2JyZWFrfWtbRD4+Ml09KGtbRD4+Ml18MCkrMTtlPWtbRD4+Ml18MDtpZihsW2tbRD4+Ml0+PjBdJjEyOCllPWptKGUsQyl8MDtlbHNle2tbQz4+Ml09bFtlPj4wXTtlPTF9a1tEPj4yXT0oa1tEPj4yXXwwKStlfWlmKChFfDApPT02NSl7a1t6Pj4yXT0wO0U9a1t6Pj4yXXwwO3I9RjtyZXR1cm4gRXwwfWlmKCEoaVtrW0Q+PjJdPj4wXXwwKSlrW0Q+PjJdPTA7a1trW0I+PjJdPj4yXT0oa1tBPj4yXXwwKT09KGtbQz4+Ml18MCk/a1tEPj4yXXwwOjA7a1t6Pj4yXT0wO0U9a1t6Pj4yXXwwO3I9RjtyZXR1cm4gRXwwfWZ1bmN0aW9uICRtKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MCxlPTAsZj0wO2Y9cjtyPXIrMTZ8MDtiPWYrOHwwO2U9Zis0fDA7Yz1mKzEyfDA7ZD1mO2tbYj4+Ml09YTtrW2U+PjJdPWtba1tiPj4yXT4+Ml07aVtjPj4wXT0wO2tbZD4+Ml09MDt3aGlsZSgxKXthPWtbZT4+Ml18MDtpZighKDI1NCYoaVtrW2U+PjJdPj4wXXxpW2M+PjBdKSkpYnJlYWs7a1tlPj4yXT1hKzE7aVtjPj4wXT1pW2E+PjBdJjEyODtpZihpW2M+PjBdfDApY29udGludWU7a1tkPj4yXT0oa1tkPj4yXXwwKSsxfWtba1tiPj4yXT4+Ml09YTtyPWY7cmV0dXJuIGtbZD4+Ml18MH1mdW5jdGlvbiBhbihhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLGw9MDtsPXI7cj1yKzMyfDA7ZD1sKzIwfDA7ZT1sKzE2fDA7Zj1sKzEyfDA7aD1sKzh8MDtnPWwrNHwwO2o9bDtrW2Q+PjJdPWE7a1tlPj4yXT1iO2tbZj4+Ml09YztpZighKGtbZT4+Ml18MCkpe3I9bDtyZXR1cm59aWYoa1trW2Y+PjJdPj4yXXwwKXtyPWw7cmV0dXJufWtbaD4+Ml09a1soa1tlPj4yXXwwKSsyMD4+Ml07aWYoa1toPj4yXXwwKXtkbihrW2g+PjJdfDApO2lmKGtbKGtbaD4+Ml18MCkrNDA+PjJdfDApe2tbZz4+Ml09MDt3aGlsZSgxKXtpZigoa1tnPj4yXXwwKT49KGtbKGtbaD4+Ml18MCkrNjQ+PjJdfDApKWJyZWFrO2tbaj4+Ml09KGtbaD4+Ml18MCkrNzIrKChrW2c+PjJdfDApKjI0fDApO2lmKGtbKGtbaj4+Ml18MCkrMjA+PjJdfDApbm4oa1soa1tqPj4yXXwwKSsyMD4+Ml18MCl8MDtrW2c+PjJdPShrW2c+PjJdfDApKzF9aj1vbihrW2Q+PjJdfDAsMCxrW2g+PjJdfDApfDA7a1trW2Y+PjJdPj4yXT1qfWtbKGtbaD4+Ml18MCkrOD4+Ml09MDtqPShrW2g+PjJdfDApKzE2fDA7a1tqPj4yXT0wO2tbais0Pj4yXT0wO2tbKGtbaD4+Ml18MCkrNDg+PjJdPTB9aj0oa1tlPj4yXXwwKSsyNHwwO2tbaj4+Ml09MDtrW2orND4+Ml09MDtpWyhrW2U+PjJdfDApKzMyPj4wXT0wO2lbKGtbZT4+Ml18MCkrMzM+PjBdPTA7YW4oa1tkPj4yXXwwLGtbKGtbZT4+Ml18MCkrMTI+PjJdfDAsa1tmPj4yXXwwKTthbihrW2Q+PjJdfDAsa1soa1tlPj4yXXwwKSsxNj4+Ml18MCxrW2Y+PjJdfDApO3I9bDtyZXR1cm59XG5mdW5jdGlvbiAkcChhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTA7aD1yO3I9ciszMnwwO2Q9aCsxNnwwO2o9aCsxMnwwO2U9aCs4fDA7Zj1oKzR8MDtnPWg7Yz1oKzIwfDA7a1tqPj4yXT1hO2tbZT4+Ml09YjtrW2c+PjJdPTA7a1tmPj4yXT1rW2o+PjJdO2E6d2hpbGUoMSl7aWYoa1tnPj4yXXwwKXtiPTIxO2JyZWFrfWlbYz4+MF09aVtrW2Y+PjJdPj4wXXwwO3N3aXRjaChpW2M+PjBdfDApe2Nhc2UgMDp7Yj00O2JyZWFrIGF9Y2FzZSA5NjpjYXNlIDM0OmNhc2UgMzk6e2tbZz4+Ml09a1tmPj4yXTt3aGlsZSgxKXtqPShrW2c+PjJdfDApKzF8MDtrW2c+PjJdPWo7aWYoIShpW2o+PjBdfDApKWNvbnRpbnVlIGE7aWYoKGlba1tnPj4yXT4+MF18MCkhPShpW2M+PjBdfDApKWNvbnRpbnVlO2o9KGtbZz4+Ml18MCkrMXwwO2tbZz4+Ml09ajtpZigoaVtqPj4wXXwwKSE9KGlbYz4+MF18MCkpY29udGludWUgYX19Y2FzZSA5MTp7a1tnPj4yXT0oa1tmPj4yXXwwKSsxO3doaWxlKDEpe2lmKGlba1tnPj4yXT4+MF18MClhPShpW2tbZz4+Ml0+PjBdfDApIT05MztlbHNlIGE9MDtiPWtbZz4+Ml18MDtpZighYSlicmVhaztrW2c+PjJdPWIrMX1pZighKGlbYj4+MF18MCkpY29udGludWUgYTtrW2c+PjJdPShrW2c+PjJdfDApKzE7Y29udGludWUgYX1kZWZhdWx0OntqPShXcChpW2tbZj4+Ml0+PjBdfDApfDApIT0wO2I9KGtbZj4+Ml18MCkrMXwwO2lmKCFqKXtrW2Y+PjJdPWI7Y29udGludWUgYX1rW2c+PjJdPWI7d2hpbGUoMSl7aWYoIShXcChpW2tbZz4+Ml0+PjBdfDApfDApKWNvbnRpbnVlIGE7a1tnPj4yXT0oa1tnPj4yXXwwKSsxfX19fWlmKChifDApPT00KXtrW2Q+PjJdPTA7aj1rW2Q+PjJdfDA7cj1oO3JldHVybiBqfDB9ZWxzZSBpZigoYnwwKT09MjEpe2tba1tlPj4yXT4+Ml09KGtbZz4+Ml18MCktKGtbZj4+Ml18MCk7a1tkPj4yXT1rW2Y+PjJdO2o9a1tkPj4yXXwwO3I9aDtyZXR1cm4ganwwfXJldHVybiAwfWZ1bmN0aW9uIGFxKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxpPTAsaj0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHM9MCx0PTA7dD1yO3I9cis5NnwwO3E9dCs1NnwwO2o9dCs0OHwwO2k9dCs0MHwwO209dCszMnwwO2w9dCsyNHwwO2g9dCs4fDA7Zz10O3A9dCs5MnwwO2Q9dCs4OHwwO2U9dCs4NHwwO3M9dCs4MHwwO249dCs3NnwwO289dCs3MnwwO2Y9dCs2OHwwO2tbcD4+Ml09YTtrW2Q+PjJdPWI7a1tlPj4yXT1jO2tbcz4+Ml09MDtrW24+PjJdPTA7aWYoa1soa1twPj4yXXwwKSs0MD4+Ml18MCl7Z3Eoa1tlPj4yXXwwLHMsMjQ3NDUsbSk7a1tmPj4yXT0wO3doaWxlKDEpe2lmKChrW2Y+PjJdfDApPj0oa1soa1twPj4yXXwwKSsyND4+Ml18MCkpYnJlYWs7bz1rW2U+PjJdfDA7a1tpPj4yXT1rWyhrWyhrW3A+PjJdfDApKzI4Pj4yXXwwKSsoa1tmPj4yXTw8Mik+PjJdO2dxKG8scywyNDc1MSxpKTtrW2Y+PjJdPShrW2Y+PjJdfDApKzF9aWYoa1soa1twPj4yXXwwKSs0ND4+Ml18MCl7bz1rW2U+PjJdfDA7a1tqPj4yXT1rWyhrW3A+PjJdfDApKzQ0Pj4yXTtncShvLHMsMjQ3MzEsail9fWVsc2V7aWYoa1tkPj4yXXwwKXtiPWZxKGtbZD4+Ml18MCl8MDtrW28+PjJdPWI7a1tuPj4yXT1ifWVsc2Uga1tvPj4yXT0xODQwMjtncShrW2U+PjJdfDAscywyNDcxMCxnKTtrW2Y+PjJdPTA7d2hpbGUoMSl7aWYoKGtbZj4+Ml18MCk+PShrWyhrW3A+PjJdfDApKzI0Pj4yXXwwKSlicmVhaztiPWtbZT4+Ml18MDtqPWtbZj4+Ml18MDttPWtbKGtbKGtbcD4+Ml18MCkrMjg+PjJdfDApKyhrW2Y+PjJdPDwyKT4+Ml18MDtrW2g+PjJdPWtbbz4+Ml07a1toKzQ+PjJdPWo7a1toKzg+PjJdPW07Z3EoYixzLDI0NzE2LGgpO2tbZj4+Ml09KGtbZj4+Ml18MCkrMX1pZihrWyhrW3A+PjJdfDApKzQ0Pj4yXXwwKXtvPWtbZT4+Ml18MDtrW2w+PjJdPTI0NzM4O2dxKG8scywyNDczMSxsKX1VZChrW24+PjJdfDApfWQ9a1tlPj4yXXwwO2U9a1soa1twPj4yXXwwKSsxNj4+Ml18MDtmPWtbcD4+Ml18MDtpZihrWyhrW3A+PjJdfDApKzQwPj4yXXwwKXtiPWtbZis0MD4+Ml18MDtvPWtbcD4+Ml18MDtvPW8rNDB8MDtvPWtbbz4+Ml18MDtvPShvfDApIT0wO289bz8xODQwMjoyNDc2MDtrW3E+PjJdPWU7cD1xKzR8MDtrW3A+PjJdPWI7cD1xKzh8MDtrW3A+PjJdPW87Z3EoZCxzLDI0NzY5LHEpO3M9a1tzPj4yXXwwO3I9dDtyZXR1cm4gc3wwfWVsc2V7Yj1rW2YrMjA+PjJdfDA7bz1rW3A+PjJdfDA7bz1vKzQwfDA7bz1rW28+PjJdfDA7bz0ob3wwKSE9MDtvPW8/MTg0MDI6MjQ3NjA7a1txPj4yXT1lO3A9cSs0fDA7a1twPj4yXT1iO3A9cSs4fDA7a1twPj4yXT1vO2dxKGQscywyNDc2OSxxKTtzPWtbcz4+Ml18MDtyPXQ7cmV0dXJuIHN8MH1yZXR1cm4gMH1mdW5jdGlvbiBicShhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaT0wLGo9MCxsPTAsbT0wLG49MDtuPXI7cj1yKzQ4fDA7aT1uKzE2fDA7aD1uKzh8MDtkPW4rNDR8MDtlPW4rNDB8MDtmPW4rMzZ8MDttPW4rMzJ8MDtqPW4rMjh8MDtsPW4rMjR8MDtnPW4rMjB8MDtrW2Q+PjJdPWE7a1tlPj4yXT1iO2tbZj4+Ml09YztrW20+PjJdPTA7a1tqPj4yXT0wO2lmKGtbZT4+Ml18MCl7Yj1mcShrW2U+PjJdfDApfDA7a1tsPj4yXT1iO2tbaj4+Ml09Yn1lbHNlIGtbbD4+Ml09MTg0MDI7Z3Eoa1tmPj4yXXwwLG0sMjAyNzUsbik7a1tnPj4yXT0wO3doaWxlKDEpe2lmKChrW2c+PjJdfDApPj0oa1soa1tkPj4yXXwwKSsyND4+Ml18MCkpYnJlYWs7Yj1rW2Y+PjJdfDA7a1toPj4yXT1rW2w+PjJdO2dxKGIsbSwyNDY5NCxoKTtrW2c+PjJdPShrW2c+PjJdfDApKzF9aWYoIShrWyhrW2Q+PjJdfDApKzQ0Pj4yXXwwKSl7bD1rW2o+PjJdfDA7VWQobCk7bT1rW20+PjJdfDA7cj1uO3JldHVybiBtfDB9Z3Eoa1tmPj4yXXwwLG0sMjQ3MDEsaSk7bD1rW2o+PjJdfDA7VWQobCk7bT1rW20+PjJdfDA7cj1uO3JldHVybiBtfDB9ZnVuY3Rpb24gY3EoYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscz0wO3E9cjtyPXIrMTEyfDA7bD1xKzY0fDA7aD1xKzU2fDA7Zz1xKzQ4fDA7Zj1xKzMyfDA7bT1xKzI0fDA7aj1xKzh8MDtiPXErOTZ8MDtlPXErOTJ8MDtkPXErODh8MDtjPXErODR8MDtwPXErODB8MDtvPXErNzZ8MDtuPXErNzJ8MDtrW2I+PjJdPWE7a1tlPj4yXT0wO2tbYz4+Ml09a1soa1tiPj4yXXwwKSsxMj4+Ml07aWYoIShrWyhrW2I+PjJdfDApKzQwPj4yXXwwKSl7a1twPj4yXT1rWyhrW2I+PjJdfDApKzQ0Pj4yXTthPVlkKDI0MzE5LHEpfDA7a1tvPj4yXT1hO2tbZD4+Ml09MDt3aGlsZSgxKXtpZighKGtbbz4+Ml18MCkpYnJlYWs7aWYoKGtbZD4+Ml18MCk+PShrWyhrW2I+PjJdfDApKzI0Pj4yXXwwKSlicmVhaztrW24+PjJdPWtbKGtbKGtbYj4+Ml18MCkrMjg+PjJdfDApKyhrW2Q+PjJdPDwyKT4+Ml07cz1rW2Q+PjJdfDA7YT1rW24+PjJdfDA7a1tqPj4yXT1rW28+PjJdO2tbais0Pj4yXT1zO2tbais4Pj4yXT1hO2E9WWQoMjQzNDUsail8MDtrW28+PjJdPWE7a1tkPj4yXT0oa1tkPj4yXXwwKSsxfWlmKChrW3A+PjJdfDApIT0wJihrW28+PjJdfDApIT0wKXtzPWtbcD4+Ml18MDtrW20+PjJdPWtbbz4+Ml07a1ttKzQ+PjJdPXM7cz1ZZCgyNDM1NyxtKXwwO2tbbz4+Ml09c31pZighKGtbbz4+Ml18MCkpa1tlPj4yXT03O3M9a1tjPj4yXXwwO249a1soa1tiPj4yXXwwKSsyMD4+Ml18MDtwPWtbbz4+Ml18MDtrW2Y+PjJdPWtbKGtbYj4+Ml18MCkrMTY+PjJdO2tbZis0Pj4yXT1uO2tbZis4Pj4yXT1wO3hsKGUscywyNDM2OCxmKTtVZChrW28+PjJdfDApfXM9a1tjPj4yXXwwO3A9a1soa1tiPj4yXXwwKSsyMD4+Ml18MDtrW2c+PjJdPWtbKGtbYj4+Ml18MCkrMTY+PjJdO2tbZys0Pj4yXT1wO3hsKGUscywyNDQwMSxnKTtzPWtbYz4+Ml18MDtwPWtbKGtbYj4+Ml18MCkrMjA+PjJdfDA7a1toPj4yXT1rWyhrW2I+PjJdfDApKzE2Pj4yXTtrW2grND4+Ml09cDt4bChlLHMsMjQ0NzMsaCk7aWYoaVsoa1tiPj4yXXwwKSsyMzA+PjBdfDApe3M9a1tjPj4yXXwwO3A9a1soa1tiPj4yXXwwKSsyMD4+Ml18MDtrW2w+PjJdPWtbKGtbYj4+Ml18MCkrMTY+PjJdO2tbbCs0Pj4yXT1wO3hsKGUscywyNDYyNixsKX1pZighKGlbKGtbYj4+Ml18MCkrMjI5Pj4wXXwwKSl7cz1rW2U+PjJdfDA7cj1xO3JldHVybiBzfDB9bHAoZSxrW2I+PjJdfDApO3M9a1tlPj4yXXwwO3I9cTtyZXR1cm4gc3wwfWZ1bmN0aW9uIGRxKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wLGk9MDtpPXI7cj1yKzMyfDA7Zz1pO2M9aSsyMHwwO2Q9aSsxNnwwO2Y9aSsxMnwwO2g9aSs4fDA7ZT1pKzR8MDtrW2M+PjJdPWE7a1tkPj4yXT1iO2lmKGtba1tjPj4yXT4+Ml18MCl7cj1pO3JldHVybn1rW2c+PjJdPWtbKGtbZD4+Ml18MCkrMTY+PjJdO2c9WWQoMjQyOTksZyl8MDtrW2g+PjJdPWc7ZG8gaWYoa1toPj4yXXwwKXtnPW5mKGtbKGtbZD4+Ml18MCkrMTI+PjJdfDAsa1toPj4yXXwwLC0xLGUsMCl8MDtrW2Y+PjJdPWc7aWYoIShrW2Y+PjJdfDApKXtEZShrW2U+PjJdfDApfDA7Zz1NZShrW2U+PjJdfDAsMCl8MDtrWyhrW2Q+PjJdfDApKzIzNj4+Ml09ZztnPWZlKGtbZT4+Ml18MCl8MDtrW2Y+PjJdPWc7YnJlYWt9aWYoKGtbZj4+Ml18MCk9PTIzKXtrWyhrW2Q+PjJdfDApKzIzNj4+Ml09MTAyNDtrW2Y+PjJdPTB9fWVsc2Uga1tmPj4yXT03O3doaWxlKDApO1VkKGtbaD4+Ml18MCk7a1trW2M+PjJdPj4yXT1rW2Y+PjJdO3I9aTtyZXR1cm59ZnVuY3Rpb24gZXEoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTAsaT0wLGo9MCxsPTAsbT0wLG49MCxvPTA7bz1yO3I9cis2NHwwO2o9bysyNHwwO2k9bysxNnwwO2Q9bys4fDA7Yz1vO2U9bys2MHwwO2Y9bys1NnwwO2c9bys1MnwwO2g9bys0OHwwO249bys0NHwwO2w9bys0MHwwO209byszNnwwO2tbZT4+Ml09YTtrW2Y+PjJdPWI7aWYoa1trW2U+PjJdPj4yXXwwKXtyPW87cmV0dXJufWlmKGtbKGtbZj4+Ml18MCkrNDQ+PjJdfDApYj1rWyhrW2Y+PjJdfDApKzQ0Pj4yXXwwO2Vsc2UgYj0yNDIyNDtrW20+PjJdPWI7YT1rWyhrW2Y+PjJdfDApKzEyPj4yXXwwO2tbYz4+Ml09MTtzZihhLDEsYyl8MDtrW2Q+PjJdPWtba1soa1tmPj4yXXwwKSsyOD4+Ml0+PjJdO2Q9WWQoMjQyMzMsZCl8MDtrW2w+PjJdPWQ7a1tnPj4yXT0xO3doaWxlKDEpe2lmKGtbbD4+Ml18MClhPShrW2c+PjJdfDApPChrWyhrW2Y+PjJdfDApKzI0Pj4yXXwwKTtlbHNlIGE9MDtiPWtbbD4+Ml18MDtpZighYSlicmVhaztkPWtbKGtbKGtbZj4+Ml18MCkrMjg+PjJdfDApKyhrW2c+PjJdPDwyKT4+Ml18MDtrW2k+PjJdPWI7a1tpKzQ+PjJdPWQ7ZD1ZZCgyNDIzOCxpKXwwO2tbbD4+Ml09ZDtrW2c+PjJdPShrW2c+PjJdfDApKzF9aT1rWyhrW2Y+PjJdfDApKzIwPj4yXXwwO209a1ttPj4yXXwwO2tbaj4+Ml09YjtrW2orND4+Ml09aTtrW2orOD4+Ml09bTttPVlkKDI0MjQ1LGopfDA7a1tuPj4yXT1tO2lmKChrW2w+PjJdfDApIT0wJihrW24+PjJdfDApIT0wKXttPXFmKGtbKGtbZj4+Ml18MCkrMTI+PjJdfDAsa1tuPj4yXXwwKXwwO2tbaD4+Ml09bX1lbHNlIGtbaD4+Ml09NztVZChrW24+PjJdfDApO1VkKGtbbD4+Ml18MCk7a1trW2U+PjJdPj4yXT1rW2g+PjJdO3I9bztyZXR1cm59ZnVuY3Rpb24gZnEoYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wLGU9MCxmPTAsZz0wO2Y9cjtyPXIrMzJ8MDtiPWYrMTZ8MDtnPWYrMTJ8MDtlPWYrOHwwO2M9Zis0fDA7ZD1mO2tbYj4+Ml09YTthPTIrKCh1UihrW2I+PjJdfDApfDApPDwxKSsxfDA7a1tnPj4yXT1hO2E9U2Qoa1tnPj4yXXwwKXwwO2tbZT4+Ml09YTtpZighKGtbZT4+Ml18MCkpe2c9a1tlPj4yXXwwO3I9ZjtyZXR1cm4gZ3wwfWtbZD4+Ml09a1tlPj4yXTtnPWtbZD4+Ml18MDtrW2Q+PjJdPWcrMTtpW2c+PjBdPTM0O2tbYz4+Ml09MDt3aGlsZSgxKXtpZighKGlbKGtbYj4+Ml18MCkrKGtbYz4+Ml18MCk+PjBdfDApKWJyZWFrO2lmKChpWyhrW2I+PjJdfDApKyhrW2M+PjJdfDApPj4wXXwwKT09MzQpe2c9a1tkPj4yXXwwO2tbZD4+Ml09ZysxO2lbZz4+MF09MzR9YT1pWyhrW2I+PjJdfDApKyhrW2M+PjJdfDApPj4wXXwwO2c9a1tkPj4yXXwwO2tbZD4+Ml09ZysxO2lbZz4+MF09YTtrW2M+PjJdPShrW2M+PjJdfDApKzF9Zz1rW2Q+PjJdfDA7a1tkPj4yXT1nKzE7aVtnPj4wXT0zNDtnPWtbZD4+Ml18MDtrW2Q+PjJdPWcrMTtpW2c+PjBdPTA7Zz1rW2U+PjJdfDA7cj1mO3JldHVybiBnfDB9ZnVuY3Rpb24gZ3EoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxpPTAsaj0wLGw9MCxtPTA7bT1yO3I9cis0OHwwO2k9bTtlPW0rNDB8MDtmPW0rMzZ8MDtnPW0rMzJ8MDtoPW0rMTZ8MDtqPW0rMTJ8MDtsPW0rOHwwO2tbZT4+Ml09YTtrW2Y+PjJdPWI7a1tnPj4yXT1jO2lmKGtba1tlPj4yXT4+Ml18MCl7cj1tO3JldHVybn1rW2g+PjJdPWQ7Yz1YZChrW2c+PjJdfDAsaCl8MDtrW2o+PjJdPWM7aWYoKGtbaj4+Ml18MCkhPTA/KGtba1tmPj4yXT4+Ml18MCkhPTA6MCl7Yz1rW2o+PjJdfDA7a1tpPj4yXT1rW2tbZj4+Ml0+PjJdO2tbaSs0Pj4yXT1jO2M9WWQoMjQ3MDUsaSl8MDtrW2w+PjJdPWM7VWQoa1tqPj4yXXwwKTtrW2o+PjJdPWtbbD4+Ml19aWYoIShrW2o+PjJdfDApKWtba1tlPj4yXT4+Ml09NztVZChrW2tbZj4+Ml0+PjJdfDApO2tba1tmPj4yXT4+Ml09a1tqPj4yXTtyPW07cmV0dXJufWZ1bmN0aW9uIGhxKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MDtqPXI7cj1yKzMyfDA7Yz1qKzIwfDA7ZD1qKzE2fDA7ZT1qKzEyfDA7Zz1qKzR8MDtmPWo7a1tkPj4yXT1hO2tbZT4+Ml09YjtrW2orOD4+Ml09MWU3O2tbZj4+Ml09MDtrW2c+PjJdPWtba1tkPj4yXT4+Ml07d2hpbGUoMSl7aWYoKGlba1tnPj4yXT4+MF18MCk8NDgpYnJlYWs7aWYoKGlba1tnPj4yXT4+MF18MCk+NTcpYnJlYWs7a1tmPj4yXT0oKGtbZj4+Ml18MCkqMTB8MCkrKChpW2tbZz4+Ml0+PjBdfDApLTQ4KTtpZigoa1tmPj4yXXwwKT4xZTcpe2g9NTticmVha31rW2c+PjJdPShrW2c+PjJdfDApKzF9aWYoKGh8MCk9PTUpa1tmPj4yXT0wO2lmKChrW2c+PjJdfDApPT0oa1trW2Q+PjJdPj4yXXwwKSl7a1tjPj4yXT0xO2g9a1tjPj4yXXwwO3I9ajtyZXR1cm4gaHwwfWVsc2V7a1trW2U+PjJdPj4yXT1rW2Y+PjJdO2tba1tkPj4yXT4+Ml09a1tnPj4yXTtrW2M+PjJdPTA7aD1rW2M+PjJdfDA7cj1qO3JldHVybiBofDB9cmV0dXJuIDB9ZnVuY3Rpb24gaXEoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGk9MCxqPTAsbD0wLG09MCxuPTAsbz0wLHA9MDtvPXI7cj1yKzQ4fDA7bD1vO2Q9bys0MHwwO3A9byszNnwwO2U9byszMnwwO2g9bysyOHwwO2o9bysyNHwwO249bysyMHwwO2c9bysxNnwwO2k9bysxMnwwO2Y9bys4fDA7bT1vKzR8MDtrW2Q+PjJdPWE7a1twPj4yXT1iO2tbZT4+Ml09YztrW2o+PjJdPTA7YT1FZShrW2Q+PjJdfDApfDA7a1toPj4yXT1hO2E9amUoa1trW2U+PjJdPj4yXXwwKXwwO2tbbj4+Ml09YTthPShrZShrW2tbZT4+Ml0+PjJdfDApfDApKzF8MDtrW2c+PjJdPWE7ZG8gaWYoKGtbcD4+Ml18MCk9PTIpe2lmKCEoanEoa1tkPj4yXXwwKXwwKSl7c2Uoa1tkPj4yXXwwLDI1MDMwLC0xKTtyPW87cmV0dXJufXA9a2Uoa1soa1tlPj4yXXwwKSs0Pj4yXXwwKXwwO2tbZj4+Ml09cDtpZigoa1tuPj4yXXwwKT09MHwoa1tmPj4yXXwwKSE9NCl7c2Uoa1tkPj4yXXwwLDI0OTkzLC0xKTtyPW87cmV0dXJufWVsc2V7cD1pZShrWyhrW2U+PjJdfDApKzQ+PjJdfDApfDA7a1tqPj4yXT1rW3A+PjJdO3A9dmsoa1toPj4yXXwwLGtbbj4+Ml18MCxrW2c+PjJdfDAsa1tqPj4yXXwwKXwwO2tbaT4+Ml09cDtpZigoa1tpPj4yXXwwKSE9KGtbaj4+Ml18MCkpYnJlYWs7c2Uoa1tkPj4yXXwwLDI1MDE2LC0xKTticmVha319ZWxzZXtpZihrW24+PjJdfDApe3A9T2soa1toPj4yXXwwLGtbbj4+Ml18MCxrW2c+PjJdfDApfDA7a1tqPj4yXT1wfWlmKCEoa1tqPj4yXXwwKSl7a1tsPj4yXT1rW24+PjJdO3A9WWQoMjA1OTUsbCl8MDtrW20+PjJdPXA7c2Uoa1tkPj4yXXwwLGtbbT4+Ml18MCwtMSk7VWQoa1ttPj4yXXwwKTtyPW87cmV0dXJufX13aGlsZSgwKTtwZShrW2Q+PjJdfDAsaiw0LC0xKTtyPW87cmV0dXJufWZ1bmN0aW9uIGpxKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MCxlPTAsZj0wO2M9cjtyPXIrMzJ8MDtkPWM7Zj1jKzE2fDA7ZT1jKzEyfDA7Yj1jKzh8MDtrW2Y+PjJdPWE7YT1GZShrW2Y+PjJdfDApfDA7a1tlPj4yXT1hO2tbYj4+Ml09MDthPWtbZT4+Ml18MDtrW2Q+PjJdPS0xO2tbZCs0Pj4yXT1iO3lmKGEsMTAwNCxkKXwwO3I9YztyZXR1cm4ga1tiPj4yXXwwfWZ1bmN0aW9uIGtxKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MDtoPXI7cj1yKzE2fDA7ZD1oKzEyfDA7ZT1oKzh8MDtmPWgrNHwwO2c9aDtrW2Q+PjJdPWE7a1tlPj4yXT1iO2tbZj4+Ml09YztiPWtba1tlPj4yXT4+Ml18MDtpZihrWyhrW2U+PjJdfDApKzQ+PjJdfDApa1trWyhrW2U+PjJdfDApKzQ+PjJdPj4yXT1iO2Vsc2Uga1soa1tkPj4yXXwwKSs4Pj4yXT1iO2lmKGtba1tlPj4yXT4+Ml18MClrWyhrW2tbZT4+Ml0+PjJdfDApKzQ+PjJdPWtbKGtbZT4+Ml18MCkrND4+Ml07a1tnPj4yXT0oa1soa1tkPj4yXXwwKSsxNj4+Ml18MCkrKGtbZj4+Ml08PDMpO2lmKChrWyhrW2c+PjJdfDApKzQ+PjJdfDApPT0oa1tlPj4yXXwwKSlrWyhrW2c+PjJdfDApKzQ+PjJdPWtba1tlPj4yXT4+Ml07Zj1rW2c+PjJdfDA7a1tmPj4yXT0oa1tmPj4yXXwwKSstMTtpZigoa1trW2c+PjJdPj4yXXwwKTw9MClrWyhrW2c+PjJdfDApKzQ+PjJdPTA7aWYoKGlbKGtbZD4+Ml18MCkrMT4+MF18MCkhPTA/KGtbKGtbZT4+Ml18MCkrMTI+PjJdfDApIT0wOjApQWsoa1soa1tlPj4yXXwwKSsxMj4+Ml18MCk7QWsoa1tlPj4yXXwwKTtnPShrW2Q+PjJdfDApKzR8MDtrW2c+PjJdPShrW2c+PjJdfDApKy0xO2lmKChrWyhrW2Q+PjJdfDApKzQ+PjJdfDApPjApe3I9aDtyZXR1cm59emsoa1tkPj4yXXwwKTtyPWg7cmV0dXJufWZ1bmN0aW9uIGxxKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxsPTAsbT0wO209cjtyPXIrMzJ8MDtjPW0rMjh8MDtkPW0rMjR8MDtlPW0rMjB8MDtoPW0rMTZ8MDtmPW0rMTJ8MDtqPW0rOHwwO2w9bSs0fDA7Zz1tO2tbZD4+Ml09YTtrW2U+PjJdPWI7YT1tcShrW2U+PjJdPDwzKXwwO2tbaD4+Ml09YTtpZighKGtbaD4+Ml18MCkpe2tbYz4+Ml09MTtsPWtbYz4+Ml18MDtyPW07cmV0dXJuIGx8MH1BayhrWyhrW2Q+PjJdfDApKzE2Pj4yXXwwKTtrWyhrW2Q+PjJdfDApKzE2Pj4yXT1rW2g+PjJdO2tbKGtbZD4+Ml18MCkrMTI+PjJdPWtbZT4+Ml07YT1SayhpW2tbZD4+Ml0+PjBdfDApfDA7a1tsPj4yXT1hO2tbZj4+Ml09a1soa1tkPj4yXXwwKSs4Pj4yXTtrWyhrW2Q+PjJdfDApKzg+PjJdPTA7d2hpbGUoMSl7aWYoIShrW2Y+PjJdfDApKWJyZWFrO2E9Z2Nba1tsPj4yXSYyNTVdKGtbKGtbZj4+Ml18MCkrMTI+PjJdfDAsa1soa1tmPj4yXXwwKSsxNj4+Ml18MCl8MDtrW2c+PjJdPWEmKGtbZT4+Ml18MCktMTtrW2o+PjJdPWtba1tmPj4yXT4+Ml07bnEoa1tkPj4yXXwwLChrW2g+PjJdfDApKyhrW2c+PjJdPDwzKXwwLGtbZj4+Ml18MCk7a1tmPj4yXT1rW2o+PjJdfWtbYz4+Ml09MDtsPWtbYz4+Ml18MDtyPW07cmV0dXJuIGx8MH1mdW5jdGlvbiBtcShhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTA7ZD1yO3I9cisxNnwwO2I9ZCs0fDA7Yz1kO2tbYj4+Ml09YTthPVNkKGtbYj4+Ml18MCl8MDtrW2M+PjJdPWE7aWYoIShrW2M+PjJdfDApKXtjPWtbYz4+Ml18MDtyPWQ7cmV0dXJuIGN8MH1kUyhrW2M+PjJdfDAsMCxrW2I+PjJdfDApfDA7Yz1rW2M+PjJdfDA7cj1kO3JldHVybiBjfDB9ZnVuY3Rpb24gbnEoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wO2g9cjtyPXIrMTZ8MDtkPWgrMTJ8MDtlPWgrOHwwO2Y9aCs0fDA7Zz1oO2tbZD4+Ml09YTtrW2U+PjJdPWI7a1tmPj4yXT1jO2tbZz4+Ml09a1soa1tlPj4yXXwwKSs0Pj4yXTtpZighKGtbZz4+Ml18MCkpe2tba1tmPj4yXT4+Ml09a1soa1tkPj4yXXwwKSs4Pj4yXTtpZihrWyhrW2Q+PjJdfDApKzg+PjJdfDApa1soa1soa1tkPj4yXXwwKSs4Pj4yXXwwKSs0Pj4yXT1rW2Y+PjJdO2tbKGtbZj4+Ml18MCkrND4+Ml09MDtrWyhrW2Q+PjJdfDApKzg+PjJdPWtbZj4+Ml07Zz1rW2U+PjJdfDA7ZD1rW2c+PjJdfDA7ZD1kKzF8MDtrW2c+PjJdPWQ7Zj1rW2Y+PjJdfDA7Zz1rW2U+PjJdfDA7Zz1nKzR8MDtrW2c+PjJdPWY7cj1oO3JldHVybn1rW2tbZj4+Ml0+PjJdPWtbZz4+Ml07a1soa1tmPj4yXXwwKSs0Pj4yXT1rWyhrW2c+PjJdfDApKzQ+PjJdO2I9a1tmPj4yXXwwO2lmKGtbKGtbZz4+Ml18MCkrND4+Ml18MClrW2tbKGtbZz4+Ml18MCkrND4+Ml0+PjJdPWI7ZWxzZSBrWyhrW2Q+PjJdfDApKzg+PjJdPWI7a1soa1tnPj4yXXwwKSs0Pj4yXT1rW2Y+PjJdO2c9a1tlPj4yXXwwO2Q9a1tnPj4yXXwwO2Q9ZCsxfDA7a1tnPj4yXT1kO2Y9a1tmPj4yXXwwO2c9a1tlPj4yXXwwO2c9Zys0fDA7a1tnPj4yXT1mO3I9aDtyZXR1cm59ZnVuY3Rpb24gb3EoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTA7Zz1yO3I9ciszMnwwO2Q9ZysxNnwwO2U9Zys0fDA7Zj1nO2tbZysxMj4+Ml09YTtrW2crOD4+Ml09YjtrW2U+PjJdPWM7Yz1TZCg0KXwwO2tbZj4+Ml09YztpZighKGtbZj4+Ml18MCkpe2tbZD4+Ml09NztmPWtbZD4+Ml18MDtyPWc7cmV0dXJuIGZ8MH1lbHNle2tba1tmPj4yXT4+Ml09MDtrW2tbZT4+Ml0+PjJdPWtbZj4+Ml07a1tkPj4yXT0wO2Y9a1tkPj4yXXwwO3I9ZztyZXR1cm4gZnwwfXJldHVybiAwfWZ1bmN0aW9uIHBxKGEpe2E9YXwwO3ZhciBiPTAsYz0wO2I9cjtyPXIrMTZ8MDtjPWI7a1tjPj4yXT1hO1VkKGtbYz4+Ml18MCk7cj1iO3JldHVybiAwfWZ1bmN0aW9uIHFxKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaT0wLGo9MDtqPXI7cj1yKzMyfDA7ZT1qKzIwfDA7Zj1qKzEyfDA7Zz1qKzh8MDtoPWorNHwwO2k9ajtrW2orMTY+PjJdPWE7a1tmPj4yXT1iO2tbZz4+Ml09YztrW2g+PjJdPWQ7Yj1TZCgyOCl8MDtrW2k+PjJdPWI7aWYoIShrW2k+PjJdfDApKXtrW2U+PjJdPTc7Yj1rW2U+PjJdfDA7cj1qO3JldHVybiBifDB9a1soa1tpPj4yXXwwKSs0Pj4yXT1rW2Y+PjJdO2RvIGlmKGtbZj4+Ml18MClpZigoa1tnPj4yXXwwKTwwKXtiPXVSKGtbZj4+Ml18MCl8MDtrWyhrW2k+PjJdfDApKzg+PjJdPWI7YnJlYWt9ZWxzZXtrWyhrW2k+PjJdfDApKzg+PjJdPWtbZz4+Ml07YnJlYWt9ZWxzZSBrWyhrW2k+PjJdfDApKzg+PjJdPTA7d2hpbGUoMCk7a1soa1tpPj4yXXwwKSsxMj4+Ml09MDtrWyhrW2k+PjJdfDApKzE2Pj4yXT0wO2tbKGtbaT4+Ml18MCkrMjA+PjJdPTA7a1soa1tpPj4yXXwwKSsyND4+Ml09MDtrW2tbaD4+Ml0+PjJdPWtbaT4+Ml07a1tlPj4yXT0wO2I9a1tlPj4yXXwwO3I9ajtyZXR1cm4gYnwwfWZ1bmN0aW9uIHJxKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MDtiPXI7cj1yKzE2fDA7ZD1iKzR8MDtjPWI7a1tkPj4yXT1hO2tbYz4+Ml09a1tkPj4yXTtVZChrWyhrW2M+PjJdfDApKzIwPj4yXXwwKTtVZChrW2M+PjJdfDApO3I9YjtyZXR1cm4gMH1mdW5jdGlvbiBzcShhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wO3c9cjtyPXIrNjR8MDtnPXcrNDh8MDt4PXcrNDR8MDtoPXcrNDB8MDtqPXcrMzZ8MDtsPXcrMzJ8MDttPXcrMjh8MDtuPXcrMjR8MDtvPXcrMjB8MDt1PXcrMTZ8MDtxPXcrMTJ8MDtwPXcrOHwwO3M9dys0fDA7dD13O2tbeD4+Ml09YTtrW2g+PjJdPWI7a1tqPj4yXT1jO2tbbD4+Ml09ZDtrW20+PjJdPWU7a1tuPj4yXT1mO2tbbz4+Ml09a1t4Pj4yXTtrW3U+PjJdPWtbKGtbbz4+Ml18MCkrND4+Ml07ZG97aWYoKGtbKGtbbz4+Ml18MCkrMTI+PjJdfDApPj0oa1soa1tvPj4yXXwwKSs4Pj4yXXwwKSl7dj0yMzticmVha313aGlsZSgxKXtpZigoa1soa1tvPj4yXXwwKSsxMj4+Ml18MCk8KGtbKGtbbz4+Ml18MCkrOD4+Ml18MCk/KHg9aVsoa1t1Pj4yXXwwKSsoa1soa1tvPj4yXXwwKSsxMj4+Ml18MCk+PjBdfDAsa1twPj4yXT14LCh4JjEyOHwwKT09MCk6MClpZigoa1twPj4yXXwwKTw0OClhPTE7ZWxzZSBhPShpWzI1MDUyKygoa1twPj4yXXwwKS00OCk+PjBdfDApIT0wXjE7ZWxzZSBhPTA7ZT0oa1tvPj4yXXwwKSsxMnwwO2Y9a1tlPj4yXXwwO2lmKCFhKWJyZWFrO2tbZT4+Ml09ZisxfWtbcT4+Ml09Zjt3aGlsZSgxKXtpZigoa1soa1tvPj4yXXwwKSsxMj4+Ml18MCk8KGtbKGtbbz4+Ml18MCkrOD4+Ml18MCkpe3g9aVsoa1t1Pj4yXXwwKSsoa1soa1tvPj4yXXwwKSsxMj4+Ml18MCk+PjBdfDA7a1twPj4yXT14O2lmKCEoeCYxMjgpKWlmKChrW3A+PjJdfDApPDQ4KWE9MTtlbHNlIGE9KGlbMjUwNTIrKChrW3A+PjJdfDApLTQ4KT4+MF18MCkhPTBeMTtlbHNlIGE9MDthPWFeMX1lbHNlIGE9MDtlPShrW28+PjJdfDApKzEyfDA7Zj1rW2U+PjJdfDA7aWYoIWEpYnJlYWs7a1tlPj4yXT1mKzF9fXdoaWxlKChmfDApPD0oa1txPj4yXXwwKSk7aWYoKHZ8MCk9PTIzKXtrW2c+PjJdPTEwMTt4PWtbZz4+Ml18MDtyPXc7cmV0dXJuIHh8MH1rW3M+PjJdPShrWyhrW28+PjJdfDApKzEyPj4yXXwwKS0oa1txPj4yXXwwKTtkbyBpZigoa1tzPj4yXXwwKT4oa1soa1tvPj4yXXwwKSsyND4+Ml18MCkpe2tbKGtbbz4+Ml18MCkrMjQ+PjJdPShrW3M+PjJdfDApKzIwO3g9VmQoa1soa1tvPj4yXXwwKSsyMD4+Ml18MCxrWyhrW28+PjJdfDApKzI0Pj4yXXwwKXwwO2tbdD4+Ml09eDtpZihrW3Q+PjJdfDApe2tbKGtbbz4+Ml18MCkrMjA+PjJdPWtbdD4+Ml07YnJlYWt9a1tnPj4yXT03O3g9a1tnPj4yXXwwO3I9dztyZXR1cm4geHwwfXdoaWxlKDApO3RxKChrW3U+PjJdfDApKyhrW3E+PjJdfDApfDAsa1tzPj4yXXwwLGtbKGtbbz4+Ml18MCkrMjA+PjJdfDAsa1tqPj4yXXwwKTtrW2tbaD4+Ml0+PjJdPWtbKGtbbz4+Ml18MCkrMjA+PjJdO2tba1tsPj4yXT4+Ml09a1txPj4yXTtrW2tbbT4+Ml0+PjJdPWtbKGtbbz4+Ml18MCkrMTI+PjJdO3Y9KGtbbz4+Ml18MCkrMTZ8MDt4PWtbdj4+Ml18MDtrW3Y+PjJdPXgrMTtrW2tbbj4+Ml0+PjJdPXg7a1tnPj4yXT0wO3g9a1tnPj4yXXwwO3I9dztyZXR1cm4geHwwfWZ1bmN0aW9uIHRxKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHM9MDtzPXI7cj1yKzY0fDA7ZT1zKzI4fDA7Zj1zKzI0fDA7bj1zKzIwfDA7bz1zKzE2fDA7cD1zKzEyfDA7aD1zKzh8MDtsPXMrMzZ8MDtxPXMrNHwwO2o9cztnPXMrMzJ8MDtrW2U+PjJdPWE7a1tmPj4yXT1iO2tbbj4+Ml09YztrW28+PjJdPWQ7aWYoKGtbZj4+Ml18MCk8M3woa1tmPj4yXXwwKT49MjEpe3VxKGtbZT4+Ml18MCxrW2Y+PjJdfDAsa1tuPj4yXXwwLGtbbz4+Ml18MCk7cj1zO3JldHVybn1rW3A+PjJdPTA7a1toPj4yXT0yMjt3aGlsZSgxKXtpZigoa1twPj4yXXwwKT49KGtbZj4+Ml18MCkpYnJlYWs7aVtnPj4wXT1pWyhrW2U+PjJdfDApKyhrW3A+PjJdfDApPj4wXXwwO2lmKChpW2c+PjBdfDApPj02NT8oaVtnPj4wXXwwKTw9OTA6MClpW2wrKGtbaD4+Ml18MCk+PjBdPShpW2c+PjBdfDApKzk3LTY1O2Vsc2V7aWYoKGlbZz4+MF18MCk8OTcpe209MTE7YnJlYWt9aWYoKGlbZz4+MF18MCk+MTIyKXttPTExO2JyZWFrfWlbbCsoa1toPj4yXXwwKT4+MF09aVtnPj4wXXwwfWtbcD4+Ml09KGtbcD4+Ml18MCkrMTtrW2g+PjJdPShrW2g+PjJdfDApKy0xfWlmKChtfDApPT0xMSl7dXEoa1tlPj4yXXwwLGtbZj4+Ml18MCxrW24+PjJdfDAsa1tvPj4yXXwwKTtyPXM7cmV0dXJufW09bCsyM3wwO2lbbT4+MF09MDtpW20rMT4+MF09MDtpW20rMj4+MF09MDtpW20rMz4+MF09MDtpW20rND4+MF09MDtrW3E+PjJdPWwrKChrW2g+PjJdfDApKzEpO2lmKCgoKGlba1txPj4yXT4+MF18MCk9PTExNT8odnEocSwyNTEzMiwyNTEzNywwKXwwKT09MDowKT8odnEocSwyNTE0MCwyNTE0NCwwKXwwKT09MDowKT8odnEocSwyNTEzNywyNTEzNywwKXwwKT09MDowKWtbcT4+Ml09KGtbcT4+Ml18MCkrMTtrW2o+PjJdPWtbcT4+Ml07ZG8gaWYoISh2cShxLDI1MTQ2LDI1MTUwLDE3Mil8MCkpe2lmKCh2cShxLDI1MTUzLDE4NDAyLDE3Myl8MCk9PTA/KHZxKHEsMjUxNTcsMTg0MDIsMTczKXwwKT09MDowKWJyZWFrO2lmKCgoKGtbcT4+Ml18MCkhPShrW2o+PjJdfDApPyh2cShxLDI1MTYwLDI1MTYzLDApfDApPT0wOjApPyh2cShxLDI1MTY3LDI1MTcwLDApfDApPT0wOjApPyh2cShxLDI1MTc0LDI1MTc3LDApfDApPT0wOjApe2lmKCgoKHlxKGtbcT4+Ml18MCl8MCkhPTA/KGlba1txPj4yXT4+MF18MCkhPTEwODowKT8oaVtrW3E+PjJdPj4wXXwwKSE9MTE1OjApPyhpW2tbcT4+Ml0+PjBdfDApIT0xMjI6MCl7a1txPj4yXT0oa1txPj4yXXwwKSsxO2JyZWFrfWlmKCh6cShrW3E+PjJdfDApfDApIT0wPyhBcShrW3E+PjJdfDApfDApIT0wOjApe209KGtbcT4+Ml18MCkrLTF8MDtrW3E+PjJdPW07aVttPj4wXT0xMDF9fX13aGlsZSgwKTtpZigoaVtrW3E+PjJdPj4wXXwwKT09MTIxPyh4cSgoa1txPj4yXXwwKSsxfDApfDApIT0wOjApaVtrW3E+PjJdPj4wXT0xMDU7c3dpdGNoKGlbKGtbcT4+Ml18MCkrMT4+MF18MCl7Y2FzZSA5Nzp7aWYoISh2cShxLDI1MTgxLDI1MTYzLDE3Mil8MCkpdnEocSwyNTE4OSwyNTE5NiwxNzIpfDA7YnJlYWt9Y2FzZSA5OTp7aWYoISh2cShxLDI1MjAxLDI1MjA2LDE3Mil8MCkpdnEocSwyNTIxMSwyNTIxNiwxNzIpfDA7YnJlYWt9Y2FzZSAxMDE6e3ZxKHEsMjUyMjEsMjUxNzcsMTcyKXwwO2JyZWFrfWNhc2UgMTAzOnt2cShxLDI1MjI2LDI1MjMxLDE3Mil8MDticmVha31jYXNlIDEwODp7aWYoKCgodnEocSwyNTIzNSwyNTE3MCwxNzIpfDApPT0wPyh2cShxLDI1MjM5LDI1MjQ0LDE3Mil8MCk9PTA6MCk/KHZxKHEsMjUyNDcsMjUyNTMsMTcyKXwwKT09MDowKT8odnEocSwyNTI1NywyNTI2MSwxNzIpfDApPT0wOjApdnEocSwyNTI2MywyNTI2OSwxNzIpfDA7YnJlYWt9Y2FzZSAxMTE6e2lmKCh2cShxLDI1MjczLDI1MTc3LDE3Mil8MCk9PTA/KHZxKHEsMjUyODEsMjUxNjMsMTcyKXwwKT09MDowKXZxKHEsMjUyODcsMjUxNjMsMTcyKXwwO2JyZWFrfWNhc2UgMTE1OntpZigoKHZxKHEsMjUyOTIsMjUyNDQsMTcyKXwwKT09MD8odnEocSwyNTI5OCwyNTMwNiwxNzIpfDApPT0wOjApPyh2cShxLDI1MzEwLDI1MzE4LDE3Mil8MCk9PTA6MCl2cShxLDI1MzIyLDI1MjY5LDE3Mil8MDticmVha31jYXNlIDExNjp7aWYoKHZxKHEsMjUzMzAsMjUyNDQsMTcyKXwwKT09MD8odnEocSwyNTMzNiwyNTMwNiwxNzIpfDApPT0wOjApdnEocSwyNTM0MiwyNTE3MCwxNzIpfDA7YnJlYWt9ZGVmYXVsdDp7fX1zd2l0Y2goaVtrW3E+PjJdPj4wXXwwKXtjYXNlIDEwMTp7aWYoKHZxKHEsMjUzNDksMjUzNTUsMTcyKXwwKT09MD8odnEocSwyNTM1OCwxODQwMiwxNzIpfDApPT0wOjApdnEocSwyNTM2NCwyNTI0NCwxNzIpfDA7YnJlYWt9Y2FzZSAxMDU6e3ZxKHEsMjUzNzAsMjUzNTUsMTcyKXwwO2JyZWFrfWNhc2UgMTA4OntpZighKHZxKHEsMjUzNzYsMjUzNTUsMTcyKXwwKSl2cShxLDI1MzgxLDE4NDAyLDE3Mil8MDticmVha31jYXNlIDExNTp7dnEocSwyNTM4NSwxODQwMiwxNzIpfDA7YnJlYWt9ZGVmYXVsdDp7fX1hOmRvIHN3aXRjaChpWyhrW3E+PjJdfDApKzE+PjBdfDApe2Nhc2UgOTc6e2lmKChpW2tbcT4+Ml0+PjBdfDApPT0xMDg/KEJxKChrW3E+PjJdfDApKzJ8MCl8MCkhPTA6MClrW3E+PjJdPShrW3E+PjJdfDApKzI7YnJlYWt9Y2FzZSA5OTp7aWYoKGlba1txPj4yXT4+MF18MCk9PTEwMT8oaVsoa1txPj4yXXwwKSsyPj4wXXwwKT09MTEwOjApe2lmKChpWyhrW3E+PjJdfDApKzM+PjBdfDApIT05Nz8oaVsoa1txPj4yXXwwKSszPj4wXXwwKSE9MTAxOjApYnJlYWsgYTtpZihCcSgoa1txPj4yXXwwKSs0fDApfDApa1txPj4yXT0oa1txPj4yXXwwKSs0fWJyZWFrfWNhc2UgMTAxOntpZigoaVtrW3E+PjJdPj4wXXwwKT09MTE0PyhCcSgoa1txPj4yXXwwKSsyfDApfDApIT0wOjApa1txPj4yXT0oa1txPj4yXXwwKSsyO2JyZWFrfWNhc2UgMTA1OntpZigoaVtrW3E+PjJdPj4wXXwwKT09OTk/KEJxKChrW3E+PjJdfDApKzJ8MCl8MCkhPTA6MClrW3E+PjJdPShrW3E+PjJdfDApKzI7YnJlYWt9Y2FzZSAxMDg6e2lmKChpW2tbcT4+Ml0+PjBdfDApPT0xMDE/KGlbKGtbcT4+Ml18MCkrMj4+MF18MCk9PTk4OjApe2lmKChpWyhrW3E+PjJdfDApKzM+PjBdfDApIT05Nz8oaVsoa1txPj4yXXwwKSszPj4wXXwwKSE9MTA1OjApYnJlYWsgYTtpZihCcSgoa1txPj4yXXwwKSs0fDApfDApa1txPj4yXT0oa1txPj4yXXwwKSs0fWJyZWFrfWNhc2UgMTEwOntpZigoaVtrW3E+PjJdPj4wXXwwKT09MTE2KXtlPWtbcT4+Ml18MDtpZigoaVsoa1txPj4yXXwwKSsyPj4wXXwwKT09OTcpe2lmKCEoQnEoZSszfDApfDApKWJyZWFrIGE7a1txPj4yXT0oa1txPj4yXXwwKSszO2JyZWFrIGF9aWYoKChpW2UrMj4+MF18MCk9PTEwMT8odnEocSwyNTM5MCwxODQwMiwxNzQpfDApPT0wOjApPyh2cShxLDI1Mzk2LDE4NDAyLDE3NCl8MCk9PTA6MCl2cShxLDI1NDAxLDE4NDAyLDE3NCl8MH1icmVha31jYXNlIDExMTp7ZT1rW3E+PjJdfDA7aWYoKGlba1txPj4yXT4+MF18MCk9PTExNyl7aWYoIShCcShlKzJ8MCl8MCkpYnJlYWsgYTtrW3E+PjJdPShrW3E+PjJdfDApKzI7YnJlYWsgYX1pZigoaVtlKzM+PjBdfDApIT0xMTU/KGlbKGtbcT4+Ml18MCkrMz4+MF18MCkhPTExNjowKWJyZWFrIGE7dnEocSwyNTQwNSwxODQwMiwxNzQpfDA7YnJlYWt9Y2FzZSAxMTU6e2lmKCgoaVtrW3E+PjJdPj4wXXwwKT09MTA5PyhpWyhrW3E+PjJdfDApKzI+PjBdfDApPT0xMDU6MCk/KEJxKChrW3E+PjJdfDApKzN8MCl8MCkhPTA6MClrW3E+PjJdPShrW3E+PjJdfDApKzM7YnJlYWt9Y2FzZSAxMTY6e2lmKCEodnEocSwyNTQwOSwxODQwMiwxNzQpfDApKXZxKHEsMjU0MTMsMTg0MDIsMTc0KXwwO2JyZWFrfWNhc2UgMTE3OntpZigoKGlba1txPj4yXT4+MF18MCk9PTExNT8oaVsoa1txPj4yXXwwKSsyPj4wXXwwKT09MTExOjApPyhCcSgoa1txPj4yXXwwKSszfDApfDApIT0wOjApa1txPj4yXT0oa1txPj4yXXwwKSszO2JyZWFrfWNhc2UgMTIyOmNhc2UgMTE4OntpZigoKGlba1txPj4yXT4+MF18MCk9PTEwMT8oaVsoa1txPj4yXXwwKSsyPj4wXXwwKT09MTA1OjApPyhCcSgoa1txPj4yXXwwKSszfDApfDApIT0wOjApa1txPj4yXT0oa1txPj4yXXwwKSszO2JyZWFrfWRlZmF1bHQ6e319d2hpbGUoMCk7ZG8gaWYoKGlba1txPj4yXT4+MF18MCk9PTEwMSl7bT0oQnEoKGtbcT4+Ml18MCkrMXwwKXwwKSE9MDtlPShrW3E+PjJdfDApKzF8MDtpZihtKXtrW3E+PjJdPWU7YnJlYWt9aWYoKHpxKGUpfDApIT0wPyhBcSgoa1txPj4yXXwwKSsxfDApfDApPT0wOjApa1txPj4yXT0oa1txPj4yXXwwKSsxfXdoaWxlKDApO2lmKCgoQnEoa1txPj4yXXwwKXwwKSE9MD8oaVtrW3E+PjJdPj4wXXwwKT09MTA4OjApPyhpWyhrW3E+PjJdfDApKzE+PjBdfDApPT0xMDg6MClrW3E+PjJdPShrW3E+PjJdfDApKzE7bT11UihrW3E+PjJdfDApfDA7a1twPj4yXT1tO2tba1tvPj4yXT4+Ml09bTtpWyhrW24+PjJdfDApKyhrW3A+PjJdfDApPj4wXT0wO3doaWxlKDEpe2lmKCEoaVtrW3E+PjJdPj4wXXwwKSlicmVhazttPWtbcT4+Ml18MDtrW3E+PjJdPW0rMTttPWlbbT4+MF18MDtvPShrW3A+PjJdfDApKy0xfDA7a1twPj4yXT1vO2lbKGtbbj4+Ml18MCkrbz4+MF09bX1yPXM7cmV0dXJufWZ1bmN0aW9uIHVxKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGw9MCxtPTAsbj0wLG89MCxwPTA7cD1yO3I9cis0OHwwO2U9cCsyOHwwO2Y9cCsyNHwwO2c9cCsyMHwwO2g9cCsxNnwwO209cCsxMnwwO289cCs4fDA7bj1wKzR8MDtsPXA7aj1wKzMyfDA7a1tlPj4yXT1hO2tbZj4+Ml09YjtrW2c+PjJdPWM7a1toPj4yXT1kO2tbbD4+Ml09MDtrW20+PjJdPTA7d2hpbGUoMSl7aWYoKGtbbT4+Ml18MCk+PShrW2Y+PjJdfDApKWJyZWFrO2lbaj4+MF09aVsoa1tlPj4yXXwwKSsoa1ttPj4yXXwwKT4+MF18MDtpZigoaVtqPj4wXXwwKT49NjU/KGlbaj4+MF18MCk8PTkwOjApaVsoa1tnPj4yXXwwKSsoa1ttPj4yXXwwKT4+MF09KGlbaj4+MF18MCktNjUrOTc7ZWxzZXtpZigoaVtqPj4wXXwwKT49NDg/KGlbaj4+MF18MCk8PTU3OjApa1tsPj4yXT0xO2lbKGtbZz4+Ml18MCkrKGtbbT4+Ml18MCk+PjBdPWlbaj4+MF18MH1rW20+PjJdPShrW20+PjJdfDApKzF9a1tvPj4yXT0oa1tsPj4yXXwwKSE9MD8zOjEwO2lmKChrW2Y+PjJdfDApPD0oa1tvPj4yXTw8MXwwKSl7YT1rW20+PjJdfDA7Yz1rW2c+PjJdfDA7YT1jK2F8MDtpW2E+PjBdPTA7YT1rW20+PjJdfDA7Yz1rW2g+PjJdfDA7a1tjPj4yXT1hO3I9cDtyZXR1cm59a1tuPj4yXT1rW28+PjJdO2tbbT4+Ml09KGtbZj4+Ml18MCktKGtbbz4+Ml18MCk7d2hpbGUoMSl7aWYoKGtbbT4+Ml18MCk+PShrW2Y+PjJdfDApKWJyZWFrO2lbKGtbZz4+Ml18MCkrKGtbbj4+Ml18MCk+PjBdPWlbKGtbZz4+Ml18MCkrKGtbbT4+Ml18MCk+PjBdfDA7a1ttPj4yXT0oa1ttPj4yXXwwKSsxO2tbbj4+Ml09KGtbbj4+Ml18MCkrMX1rW20+PjJdPWtbbj4+Ml07YT1rW20+PjJdfDA7Yz1rW2c+PjJdfDA7YT1jK2F8MDtpW2E+PjBdPTA7YT1rW20+PjJdfDA7Yz1rW2g+PjJdfDA7a1tjPj4yXT1hO3I9cDtyZXR1cm59ZnVuY3Rpb24gdnEoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTAsbD0wLG09MDttPXI7cj1yKzMyfDA7ZT1tKzIwfDA7Zj1tKzE2fDA7Zz1tKzEyfDA7aD1tKzh8MDtqPW0rNHwwO2w9bTtrW2Y+PjJdPWE7a1tnPj4yXT1iO2tbaD4+Ml09YztrW2o+PjJdPWQ7a1tsPj4yXT1rW2tbZj4+Ml0+PjJdO3doaWxlKDEpe2lmKCEoaVtrW2c+PjJdPj4wXXwwKSlicmVhaztpZigoaVtrW2c+PjJdPj4wXXwwKSE9KGlba1tsPj4yXT4+MF18MCkpYnJlYWs7a1tsPj4yXT0oa1tsPj4yXXwwKSsxO2tbZz4+Ml09KGtbZz4+Ml18MCkrMX1pZihpW2tbZz4+Ml0+PjBdfDApe2tbZT4+Ml09MDtjPWtbZT4+Ml18MDtyPW07cmV0dXJuIGN8MH1pZigoa1tqPj4yXXwwKSE9MD8oYmNba1tqPj4yXSYyNTVdKGtbbD4+Ml18MCl8MCk9PTA6MCl7a1tlPj4yXT0xO2M9a1tlPj4yXXwwO3I9bTtyZXR1cm4gY3wwfXdoaWxlKDEpe2lmKCEoaVtrW2g+PjJdPj4wXXwwKSlicmVhaztiPWtbaD4+Ml18MDtrW2g+PjJdPWIrMTtiPWlbYj4+MF18MDtjPShrW2w+PjJdfDApKy0xfDA7a1tsPj4yXT1jO2lbYz4+MF09Yn1rW2tbZj4+Ml0+PjJdPWtbbD4+Ml07a1tlPj4yXT0xO2M9a1tlPj4yXXwwO3I9bTtyZXR1cm4gY3wwfWZ1bmN0aW9uIHdxKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MCxlPTA7ZD1yO3I9cisxNnwwO2I9ZCs0fDA7Yz1kO2tbYz4+Ml09YTt3aGlsZSgxKXtlPShDcShrW2M+PjJdfDApfDApIT0wO2E9a1tjPj4yXXwwO2lmKCFlKWJyZWFrO2tbYz4+Ml09YSsxfWlmKCEoaVthPj4wXXwwKSl7a1tiPj4yXT0wO2U9a1tiPj4yXXwwO3I9ZDtyZXR1cm4gZXwwfXdoaWxlKDEpe2U9KERxKGtbYz4+Ml18MCl8MCkhPTA7YT1rW2M+PjJdfDA7aWYoIWUpYnJlYWs7a1tjPj4yXT1hKzF9a1tiPj4yXT0oaVthPj4wXXwwKSE9MCYxO2U9a1tiPj4yXXwwO3I9ZDtyZXR1cm4gZXwwfWZ1bmN0aW9uIHhxKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MDtjPXI7cj1yKzE2fDA7Yj1jO2tbYj4+Ml09YTt3aGlsZSgxKXtkPShEcShrW2I+PjJdfDApfDApIT0wO2E9a1tiPj4yXXwwO2lmKCFkKWJyZWFrO2tbYj4+Ml09YSsxfXI9YztyZXR1cm4gKGlbYT4+MF18MCkhPTB8MH1mdW5jdGlvbiB5cShhKXthPWF8MDt2YXIgYj0wLGM9MDtjPXI7cj1yKzE2fDA7Yj1jO2tbYj4+Ml09YTtpZighKERxKGtbYj4+Ml18MCl8MCkpe2E9MDthPWEmMTtyPWM7cmV0dXJuIGF8MH1hPShpW2tbYj4+Ml0+PjBdfDApPT0oaVsoa1tiPj4yXXwwKSsxPj4wXXwwKTthPWEmMTtyPWM7cmV0dXJuIGF8MH1mdW5jdGlvbiB6cShhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTAsZT0wO2Q9cjtyPXIrMTZ8MDtiPWQrNHwwO2M9ZDtrW2M+PjJdPWE7d2hpbGUoMSl7ZT0oQ3Eoa1tjPj4yXXwwKXwwKSE9MDthPWtbYz4+Ml18MDtpZighZSlicmVhaztrW2M+PjJdPWErMX1pZighKGlbYT4+MF18MCkpe2tbYj4+Ml09MDtlPWtbYj4+Ml18MDtyPWQ7cmV0dXJuIGV8MH13aGlsZSgxKXtlPShEcShrW2M+PjJdfDApfDApIT0wO2E9a1tjPj4yXXwwO2lmKCFlKWJyZWFrO2tbYz4+Ml09YSsxfWlmKCEoaVthPj4wXXwwKSl7a1tiPj4yXT0wO2U9a1tiPj4yXXwwO3I9ZDtyZXR1cm4gZXwwfXdoaWxlKDEpe2U9KENxKGtbYz4+Ml18MCl8MCkhPTA7YT1rW2M+PjJdfDA7aWYoIWUpYnJlYWs7a1tjPj4yXT1hKzF9aWYoIShpW2E+PjBdfDApKXtrW2I+PjJdPTE7ZT1rW2I+PjJdfDA7cj1kO3JldHVybiBlfDB9d2hpbGUoMSl7ZT0oRHEoa1tjPj4yXXwwKXwwKSE9MDthPWtbYz4+Ml18MDtpZighZSlicmVhaztrW2M+PjJdPWErMX1rW2I+PjJdPShpW2E+PjBdfDApPT0wJjE7ZT1rW2I+PjJdfDA7cj1kO3JldHVybiBlfDB9ZnVuY3Rpb24gQXEoYSl7YT1hfDA7dmFyIGI9MCxjPTA7Yz1yO3I9cisxNnwwO2I9YztrW2I+PjJdPWE7aWYoKCgoKERxKGtbYj4+Ml18MCl8MCkhPTA/KGlba1tiPj4yXT4+MF18MCkhPTExOTowKT8oaVtrW2I+PjJdPj4wXXwwKSE9MTIwOjApPyhpW2tbYj4+Ml0+PjBdfDApIT0xMjE6MCk/KENxKChrW2I+PjJdfDApKzF8MCl8MCkhPTA6MCliPShEcSgoa1tiPj4yXXwwKSsyfDApfDApIT0wO2Vsc2UgYj0wO3I9YztyZXR1cm4gYiYxfDB9ZnVuY3Rpb24gQnEoYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wLGU9MDtkPXI7cj1yKzE2fDA7Yj1kKzR8MDtjPWQ7a1tjPj4yXT1hO3doaWxlKDEpe2U9KENxKGtbYz4+Ml18MCl8MCkhPTA7YT1rW2M+PjJdfDA7aWYoIWUpYnJlYWs7a1tjPj4yXT1hKzF9aWYoIShpW2E+PjBdfDApKXtrW2I+PjJdPTA7ZT1rW2I+PjJdfDA7cj1kO3JldHVybiBlfDB9d2hpbGUoMSl7ZT0oRHEoa1tjPj4yXXwwKXwwKSE9MDthPWtbYz4+Ml18MDtpZighZSlicmVhaztrW2M+PjJdPWErMX1pZighKGlbYT4+MF18MCkpe2tbYj4+Ml09MDtlPWtbYj4+Ml18MDtyPWQ7cmV0dXJuIGV8MH13aGlsZSgxKXtlPShDcShrW2M+PjJdfDApfDApIT0wO2E9a1tjPj4yXXwwO2lmKCFlKWJyZWFrO2tbYz4+Ml09YSsxfWlmKCEoaVthPj4wXXwwKSl7a1tiPj4yXT0wO2U9a1tiPj4yXXwwO3I9ZDtyZXR1cm4gZXwwfXdoaWxlKDEpe2U9KERxKGtbYz4+Ml18MCl8MCkhPTA7YT1rW2M+PjJdfDA7aWYoIWUpYnJlYWs7a1tjPj4yXT1hKzF9a1tiPj4yXT0oaVthPj4wXXwwKSE9MCYxO2U9a1tiPj4yXXwwO3I9ZDtyZXR1cm4gZXwwfWZ1bmN0aW9uIENxKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MCxlPTAsZj0wO2Y9cjtyPXIrMTZ8MDtiPWYrOHwwO2M9Zis0fDA7ZD1mO2U9ZisxMnwwO2tbYz4+Ml09YTtpW2U+PjBdPWlba1tjPj4yXT4+MF18MDtpZighKGlbZT4+MF18MCkpe2tbYj4+Ml09MDthPWtbYj4+Ml18MDtyPWY7cmV0dXJuIGF8MH1rW2Q+PjJdPWlbMjU0MTcrKChpW2U+PjBdfDApLTk3KT4+MF07aWYoKGtbZD4+Ml18MCk8Mil7a1tiPj4yXT0xLShrW2Q+PjJdfDApO2E9a1tiPj4yXXwwO3I9ZjtyZXR1cm4gYXwwfWVsc2V7YT1EcSgoa1tjPj4yXXwwKSsxfDApfDA7a1tiPj4yXT1hO2E9a1tiPj4yXXwwO3I9ZjtyZXR1cm4gYXwwfXJldHVybiAwfWZ1bmN0aW9uIERxKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MCxlPTAsZj0wO2Y9cjtyPXIrMTZ8MDtlPWYrOHwwO2I9Zis0fDA7Yz1mO2Q9ZisxMnwwO2tbYj4+Ml09YTtpW2Q+PjBdPWlba1tiPj4yXT4+MF18MDtpZighKGlbZD4+MF18MCkpe2tbZT4+Ml09MDtlPWtbZT4+Ml18MDtyPWY7cmV0dXJuIGV8MH1rW2M+PjJdPWlbMjU0MTcrKChpW2Q+PjBdfDApLTk3KT4+MF07aWYoKGtbYz4+Ml18MCk8Mil7a1tlPj4yXT1rW2M+PjJdO2U9a1tlPj4yXXwwO3I9ZjtyZXR1cm4gZXwwfWlmKCEoaVsoa1tiPj4yXXwwKSsxPj4wXXwwKSliPTE7ZWxzZSBiPShDcSgoa1tiPj4yXXwwKSsxfDApfDApIT0wO2tbZT4+Ml09YiYxO2U9a1tlPj4yXXwwO3I9ZjtyZXR1cm4gZXwwfWZ1bmN0aW9uIEVxKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsbT0wLG49MCxvPTAscD0wO3A9cjtyPXIrNDh8MDtkPXArMjh8MDtlPXArMjR8MDtmPXArMjB8MDtnPXArMTZ8MDtvPXArMTJ8MDtqPXArOHwwO249cCs0fDA7aD1wKzMyfDA7bT1wO2tbZT4+Ml09YTtrW2Y+PjJdPWI7a1tnPj4yXT1jO2M9U2QoMTMyKXwwO2tbbz4+Ml09YztpZighKGtbbz4+Ml18MCkpe2tbZD4+Ml09NztvPWtbZD4+Ml18MDtyPXA7cmV0dXJuIG98MH1kUyhrW28+PjJdfDAsMCwxMzIpfDA7YTpkbyBpZigoa1tlPj4yXXwwKT4xKXtjPXVSKGtbKGtbZj4+Ml18MCkrND4+Ml18MCl8MDtrW24+PjJdPWM7a1tqPj4yXT0wO3doaWxlKDEpe2lmKChrW2o+PjJdfDApPj0oa1tuPj4yXXwwKSlicmVhayBhO2lbaD4+MF09aVsoa1soa1tmPj4yXXwwKSs0Pj4yXXwwKSsoa1tqPj4yXXwwKT4+MF18MDtpZigobFtoPj4wXXwwfDApPj0xMjgpYnJlYWs7aVsoa1tvPj4yXXwwKSs0KyhsW2g+PjBdfDApPj4wXT0xO2tbaj4+Ml09KGtbaj4+Ml18MCkrMX1VZChrW28+PjJdfDApO2tbZD4+Ml09MTtvPWtbZD4+Ml18MDtyPXA7cmV0dXJuIG98MH1lbHNle2tbbT4+Ml09MTt3aGlsZSgxKXtpZigoa1ttPj4yXXwwKT49MTI4KWJyZWFrIGE7Yz0oS3Eoa1ttPj4yXXwwKXwwKSE9MF4xO2lbKGtbbz4+Ml18MCkrNCsoa1ttPj4yXXwwKT4+MF09Yz8tMTowO2tbbT4+Ml09KGtbbT4+Ml18MCkrMX19d2hpbGUoMCk7a1trW2c+PjJdPj4yXT1rW28+PjJdO2tbZD4+Ml09MDtvPWtbZD4+Ml18MDtyPXA7cmV0dXJuIG98MH1mdW5jdGlvbiBGcShhKXthPWF8MDt2YXIgYj0wLGM9MDtiPXI7cj1yKzE2fDA7Yz1iO2tbYz4+Ml09YTtVZChrW2M+PjJdfDApO3I9YjtyZXR1cm4gMH1mdW5jdGlvbiBHcShhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGk9MCxqPTA7aj1yO3I9ciszMnwwO2U9aisyMHwwO2Y9aisxMnwwO2c9ais4fDA7aD1qKzR8MDtpPWo7a1tqKzE2Pj4yXT1hO2tbZj4+Ml09YjtrW2c+PjJdPWM7a1toPj4yXT1kO2Q9U2QoMjgpfDA7a1tpPj4yXT1kO2lmKCEoa1tpPj4yXXwwKSl7a1tlPj4yXT03O2Q9a1tlPj4yXXwwO3I9ajtyZXR1cm4gZHwwfWtbKGtbaT4+Ml18MCkrND4+Ml09a1tmPj4yXTtkbyBpZihrW2Y+PjJdfDApaWYoKGtbZz4+Ml18MCk8MCl7ZD11UihrW2Y+PjJdfDApfDA7a1soa1tpPj4yXXwwKSs4Pj4yXT1kO2JyZWFrfWVsc2V7a1soa1tpPj4yXXwwKSs4Pj4yXT1rW2c+PjJdO2JyZWFrfWVsc2Uga1soa1tpPj4yXXwwKSs4Pj4yXT0wO3doaWxlKDApO2tbKGtbaT4+Ml18MCkrMTI+PjJdPTA7a1soa1tpPj4yXXwwKSsxNj4+Ml09MDtrWyhrW2k+PjJdfDApKzIwPj4yXT0wO2tbKGtbaT4+Ml18MCkrMjQ+PjJdPTA7a1trW2g+PjJdPj4yXT1rW2k+PjJdO2tbZT4+Ml09MDtkPWtbZT4+Ml18MDtyPWo7cmV0dXJuIGR8MH1mdW5jdGlvbiBIcShhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTA7Yj1yO3I9cisxNnwwO2Q9Yis0fDA7Yz1iO2tbZD4+Ml09YTtrW2M+PjJdPWtbZD4+Ml07VWQoa1soa1tjPj4yXXwwKSsyMD4+Ml18MCk7VWQoa1tjPj4yXXwwKTtyPWI7cmV0dXJuIDB9ZnVuY3Rpb24gSXEoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxtPTAsbj0wLG89MCxwPTAscT0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wO3o9cjtyPXIrNjR8MDttPXorNTJ8MDtBPXorNDh8MDtuPXorNDR8MDtvPXorNDB8MDtwPXorMzZ8MDtxPXorMzJ8MDtzPXorMjh8MDt0PXorMjR8MDtoPXorMjB8MDt5PXorMTZ8MDt3PXorMTJ8MDt2PXorOHwwO3g9eis0fDA7Zz16O3U9eis1NnwwO2tbQT4+Ml09YTtrW24+PjJdPWI7a1tvPj4yXT1jO2tbcD4+Ml09ZDtrW3E+PjJdPWU7a1tzPj4yXT1mO2tbdD4+Ml09a1tBPj4yXTtrW2g+PjJdPWtba1tBPj4yXT4+Ml07a1t5Pj4yXT1rWyhrW3Q+PjJdfDApKzQ+PjJdO2Rve2lmKChrWyhrW3Q+PjJdfDApKzEyPj4yXXwwKT49KGtbKGtbdD4+Ml18MCkrOD4+Ml18MCkpe2o9MjU7YnJlYWt9d2hpbGUoMSl7aWYoKGtbKGtbdD4+Ml18MCkrMTI+PjJdfDApPChrWyhrW3Q+PjJdfDApKzg+PjJdfDApKWE9KEpxKGtbaD4+Ml18MCxpWyhrW3k+PjJdfDApKyhrWyhrW3Q+PjJdfDApKzEyPj4yXXwwKT4+MF18MCl8MCkhPTA7ZWxzZSBhPTA7ZT0oa1t0Pj4yXXwwKSsxMnwwO2Y9a1tlPj4yXXwwO2lmKCFhKWJyZWFrO2tbZT4+Ml09ZisxfWtbdz4+Ml09Zjt3aGlsZSgxKXtpZigoa1soa1t0Pj4yXXwwKSsxMj4+Ml18MCk8KGtbKGtbdD4+Ml18MCkrOD4+Ml18MCkpYT0oSnEoa1toPj4yXXwwLGlbKGtbeT4+Ml18MCkrKGtbKGtbdD4+Ml18MCkrMTI+PjJdfDApPj4wXXwwKXwwKSE9MF4xO2Vsc2UgYT0wO2U9KGtbdD4+Ml18MCkrMTJ8MDtmPWtbZT4+Ml18MDtpZighYSlicmVhaztrW2U+PjJdPWYrMX19d2hpbGUoKGZ8MCk8PShrW3c+PjJdfDApKTtpZigoanwwKT09MjUpe2tbbT4+Ml09MTAxO0E9a1ttPj4yXXwwO3I9ejtyZXR1cm4gQXwwfWtbeD4+Ml09KGtbKGtbdD4+Ml18MCkrMTI+PjJdfDApLShrW3c+PjJdfDApO2RvIGlmKChrW3g+PjJdfDApPihrWyhrW3Q+PjJdfDApKzI0Pj4yXXwwKSl7a1soa1t0Pj4yXXwwKSsyND4+Ml09KGtbeD4+Ml18MCkrMjA7QT1WZChrWyhrW3Q+PjJdfDApKzIwPj4yXXwwLGtbKGtbdD4+Ml18MCkrMjQ+PjJdfDApfDA7a1tnPj4yXT1BO2lmKGtbZz4+Ml18MCl7a1soa1t0Pj4yXXwwKSsyMD4+Ml09a1tnPj4yXTticmVha31rW20+PjJdPTc7QT1rW20+PjJdfDA7cj16O3JldHVybiBBfDB9d2hpbGUoMCk7a1t2Pj4yXT0wO3doaWxlKDEpe2lmKChrW3Y+PjJdfDApPj0oa1t4Pj4yXXwwKSlicmVhaztpW3U+PjBdPWlbKGtbeT4+Ml18MCkrKChrW3c+PjJdfDApKyhrW3Y+PjJdfDApKT4+MF18MDtpZigobFt1Pj4wXXwwfDApPj02NT8obFt1Pj4wXXwwfDApPD05MDowKWE9KGxbdT4+MF18MCktNjUrOTd8MDtlbHNlIGE9bFt1Pj4wXXwwO2lbKGtbKGtbdD4+Ml18MCkrMjA+PjJdfDApKyhrW3Y+PjJdfDApPj4wXT1hO2tbdj4+Ml09KGtbdj4+Ml18MCkrMX1rW2tbbj4+Ml0+PjJdPWtbKGtbdD4+Ml18MCkrMjA+PjJdO2tba1tvPj4yXT4+Ml09a1t4Pj4yXTtrW2tbcD4+Ml0+PjJdPWtbdz4+Ml07a1trW3E+PjJdPj4yXT1rWyhrW3Q+PjJdfDApKzEyPj4yXTt5PShrW3Q+PjJdfDApKzE2fDA7QT1rW3k+PjJdfDA7a1t5Pj4yXT1BKzE7a1trW3M+PjJdPj4yXT1BO2tbbT4+Ml09MDtBPWtbbT4+Ml18MDtyPXo7cmV0dXJuIEF8MH1mdW5jdGlvbiBKcShhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MDtlPXI7cj1yKzE2fDA7Yz1lO2Q9ZSs0fDA7a1tjPj4yXT1hO2lbZD4+MF09YjtpZigobFtkPj4wXXwwKT49MTI4KXthPTA7YT1hJjE7cj1lO3JldHVybiBhfDB9YT0oaVsoa1tjPj4yXXwwKSs0KyhsW2Q+PjBdfDApPj4wXXwwKSE9MDthPWEmMTtyPWU7cmV0dXJuIGF8MH1mdW5jdGlvbiBLcShhKXthPWF8MDt2YXIgYj0wLGM9MDtjPXI7cj1yKzE2fDA7Yj1jO2tbYj4+Ml09YTtpZighKChrW2I+PjJdfDApPj00OCYoa1tiPj4yXXwwKTw9NTcpPyEoKGtbYj4+Ml18MCk+PTY1JihrW2I+PjJdfDApPD05MCk6MCliPShrW2I+PjJdfDApPj05Nz8oa1tiPj4yXXwwKTw9MTIyOjA7ZWxzZSBiPTE7cj1jO3JldHVybiBiJjF8MH1mdW5jdGlvbiBMcShhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaT0wLGo9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxzPTAsdD0wLHU9MCx2PTAsdz0wO3c9cjtyPXIrNjR8MDt0PXc7Zz13KzU2fDA7aD13KzUyfDA7aT13KzQ0fDA7aj13KzQwfDA7bD13KzM2fDA7bT13KzMyfDA7dT13KzI4fDA7dj13KzI0fDA7bz13KzIwfDA7cD13KzE2fDA7bj13KzEyfDA7cz13Kzh8MDtxPXcrNHwwO2tbaD4+Ml09YTtrW3crNDg+PjJdPWI7a1tpPj4yXT1jO2tbaj4+Ml09ZDtrW2w+PjJdPWU7a1ttPj4yXT1mO2RvIGlmKCEoKGtbaT4+Ml18MCkhPTQmKGtbaT4+Ml18MCkhPTUpKXtrW3U+PjJdPWtbKGtbaj4+Ml18MCkrND4+Ml07Zj11UihrW3U+PjJdfDApfDA7a1tvPj4yXT1mO2lmKChrW2k+PjJdfDApPT01KXtpZigoa1tvPj4yXXwwKSE9NClicmVhaztpZihKZCgxODY3MixrW3U+PjJdfDAsNCl8MClicmVhaztrW3U+PjJdPWtbKGtbaj4+Ml18MCkrMTI+PjJdO3Q9dVIoa1t1Pj4yXXwwKXwwO2tbbz4+Ml09dDtrW3Y+PjJdPWtbKGtbaj4+Ml18MCkrMTY+PjJdfWVsc2Uga1t2Pj4yXT1rWyhrW2o+PjJdfDApKzEyPj4yXTt0PXVSKGtbdj4+Ml18MCl8MDtrW3A+PjJdPXQ7dD1xZihrW2g+PjJdfDAsMjU0NTMpfDA7a1tzPj4yXT10O2lmKGtbcz4+Ml18MCl7a1tnPj4yXT1rW3M+PjJdO3Y9a1tnPj4yXXwwO3I9dztyZXR1cm4gdnwwfWtbbj4+Ml09Mjk2KyhrW28+PjJdfDApKyhrW3A+PjJdfDApKzI7dD1TZChrW24+PjJdfDApfDA7a1txPj4yXT10O2lmKGtbcT4+Ml18MCl7ZFMoa1txPj4yXXwwLDAsa1tuPj4yXXwwKXwwO2tbKGtbcT4+Ml18MCkrMTI+PjJdPShrW3E+PjJdfDApKzE2O2tbKGtbKGtbcT4+Ml18MCkrMTI+PjJdfDApKzE2Pj4yXT0oa1soa1txPj4yXXwwKSsxMj4+Ml18MCkrMjgwO2tbKGtbKGtbcT4+Ml18MCkrMTI+PjJdfDApKzIwPj4yXT0oa1soa1soa1txPj4yXXwwKSsxMj4+Ml18MCkrMTY+PjJdfDApKygoa1tvPj4yXXwwKSsxKTtrWyhrWyhrW3E+PjJdfDApKzEyPj4yXXwwKSsxMj4+Ml09a1toPj4yXTtrWyhrWyhrW3E+PjJdfDApKzEyPj4yXXwwKSsyNDg+PjJdPTE7YlMoa1soa1soa1txPj4yXXwwKSsxMj4+Ml18MCkrMTY+PjJdfDAsa1t1Pj4yXXwwLGtbbz4+Ml18MCl8MDtiUyhrWyhrWyhrW3E+PjJdfDApKzEyPj4yXXwwKSsyMD4+Ml18MCxrW3Y+PjJdfDAsa1twPj4yXXwwKXwwO1lrKGtbKGtbKGtbcT4+Ml18MCkrMTI+PjJdfDApKzIwPj4yXXwwKTtrW2tbbD4+Ml0+PjJdPWtbcT4+Ml07a1tnPj4yXT0wO3Y9a1tnPj4yXXwwO3I9dztyZXR1cm4gdnwwfWVsc2V7a1tnPj4yXT03O3Y9a1tnPj4yXXwwO3I9dztyZXR1cm4gdnwwfX13aGlsZSgwKTtQayhrW20+PjJdfDAsMjU1MjIsdCk7a1tnPj4yXT0xO3Y9a1tnPj4yXXwwO3I9dztyZXR1cm4gdnwwfWZ1bmN0aW9uIE1xKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxtPTAsbj0wLG89MDtvPXI7cj1yKzQ4fDA7Zj1vKzMyfDA7Yz1vKzI4fDA7Zz1vKzI0fDA7aD1vKzIwfDA7bT1vKzE2fDA7aj1vKzEyfDA7bj1vKzh8MDtlPW8rNHwwO2Q9bztrW28rMzY+PjJdPWE7a1tmPj4yXT1iO2tbZz4+Ml09LTE7a1toPj4yXT0tMTtrW20+PjJdPS0xO2tbaj4+Ml09LTE7a1tuPj4yXT0xO2lmKCgoa1soa1tmPj4yXXwwKSs4Pj4yXXwwKT09MT8oa1trWyhrW2Y+PjJdfDApKzEyPj4yXT4+Ml18MCk9PTA6MCk/KGxbKGtbKGtbZj4+Ml18MCkrMTI+PjJdfDApKzQ+PjBdfDApPT0wOjApa1soa1tmPj4yXXwwKSszMj4+Ml09MTtrW2M+PjJdPTA7d2hpbGUoMSl7aWYoKGtbYz4+Ml18MCk+PShrW2tbZj4+Ml0+PjJdfDApKWJyZWFrO2lmKGlbKGtbKGtbZj4+Ml18MCkrND4+Ml18MCkrKChrW2M+PjJdfDApKjEyfDApKzU+PjBdfDApe2tbZT4+Ml09bFsoa1soa1tmPj4yXXwwKSs0Pj4yXXwwKSsoKGtbYz4+Ml18MCkqMTJ8MCkrND4+MF07a1tkPj4yXT1rWyhrWyhrW2Y+PjJdfDApKzQ+PjJdfDApKygoa1tjPj4yXXwwKSoxMnwwKT4+Ml07aWYoIShrW2Q+PjJdfDApKXtpZigoa1tlPj4yXXwwKT09MilrW2c+PjJdPWtbYz4+Ml07aWYoKGtbZT4+Ml18MCk9PTE2KWtbbT4+Ml09a1tjPj4yXTtpZigoa1tlPj4yXXwwKT09OClrW20+PjJdPWtbYz4+Ml07aWYoKGtbZT4+Ml18MCk9PTQpa1toPj4yXT1rW2M+PjJdO2lmKChrW2U+PjJdfDApPT0zMilrW2g+PjJdPWtbYz4+Ml19aWYoKGtbZD4+Ml18MCk9PTQmKGtbZT4+Ml18MCk9PTIpa1tqPj4yXT1rW2M+PjJdfWtbYz4+Ml09KGtbYz4+Ml18MCkrMX1jPShrW2Y+PjJdfDApKzIwfDA7aWYoKGtbZz4+Ml18MCk8MCl7a1tjPj4yXT0wO3BbKGtbZj4+Ml18MCkrNDA+PjNdPTIuMGU0O2lmKChrW2g+PjJdfDApPj0wKXtnPShrW2Y+PjJdfDApKzIwfDA7a1tnPj4yXT0oa1tnPj4yXXwwKSsyO2c9a1tuPj4yXXwwO2tbbj4+Ml09ZysxO2tbKGtbKGtbZj4+Ml18MCkrMTY+PjJdfDApKyhrW2g+PjJdPDwzKT4+Ml09ZztoPShrW2Y+PjJdfDApKzQwfDA7cFtoPj4zXT0rcFtoPj4zXS8yLjB9aWYoKGtbbT4+Ml18MCk+PTApe2g9KGtbZj4+Ml18MCkrMjB8MDtrW2g+PjJdPShrW2g+PjJdfDApKzQ7aD1rW24+PjJdfDA7a1tuPj4yXT1oKzE7a1soa1soa1tmPj4yXXwwKSsxNj4+Ml18MCkrKGtbbT4+Ml08PDMpPj4yXT1oO209KGtbZj4+Ml18MCkrNDB8MDtwW20+PjNdPStwW20+PjNdLzIuMH19ZWxzZXtrW2M+PjJdPTE7bT1rW24+PjJdfDA7a1tuPj4yXT1tKzE7a1soa1soa1tmPj4yXXwwKSsxNj4+Ml18MCkrKGtbZz4+Ml08PDMpPj4yXT1tO3BbKGtbZj4+Ml18MCkrNDA+PjNdPTUuMH1pZigoa1tqPj4yXXwwKTwwKXtyPW87cmV0dXJuIDB9bT1rW24+PjJdfDA7a1tuPj4yXT1tKzE7a1soa1soa1tmPj4yXXwwKSsxNj4+Ml18MCkrKGtbaj4+Ml08PDMpPj4yXT1tO249KGtbZj4+Ml18MCkrNDB8MDtwW24+PjNdPStwW24+PjNdKy0xLjA7cj1vO3JldHVybiAwfWZ1bmN0aW9uIE5xKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MCxlPTAsZj0wO2U9cjtyPXIrMTZ8MDtmPWUrMTJ8MDtjPWUrOHwwO2Q9ZSs0fDA7Yj1lO2tbZj4+Ml09YTtrW2M+PjJdPWtbZj4+Ml07a1tkPj4yXT1rWyhrW2M+PjJdfDApKzEyPj4yXTtrW2I+PjJdPTA7d2hpbGUoMSl7aWYoKGtbYj4+Ml18MCk+PTQwKWJyZWFrO2ZlKGtbKGtbZD4+Ml18MCkrNTYrKGtbYj4+Ml08PDIpPj4yXXwwKXwwO2tbYj4+Ml09KGtbYj4+Ml18MCkrMX1VZChrWyhrW2Q+PjJdfDApKzI0MD4+Ml18MCk7VWQoa1tjPj4yXXwwKTtyPWU7cmV0dXJuIDB9ZnVuY3Rpb24gT3EoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wO2Y9cjtyPXIrMTZ8MDtjPWYrMTJ8MDtkPWYrNHwwO2U9ZjtrW2YrOD4+Ml09YTtrW2Q+PjJdPWI7Yj1TZCgxMjApfDA7a1tlPj4yXT1iO2lmKGtbZT4+Ml18MCl7YT1rW2U+PjJdfDA7Yj1hKzEyMHwwO2Rve2tbYT4+Ml09MDthPWErNHwwfXdoaWxlKChhfDApPChifDApKTtrW2tbZD4+Ml0+PjJdPWtbZT4+Ml07a1tjPj4yXT0wO2U9a1tjPj4yXXwwO3I9ZjtyZXR1cm4gZXwwfWVsc2V7a1tjPj4yXT03O2U9a1tjPj4yXXwwO3I9ZjtyZXR1cm4gZXwwfXJldHVybiAwfWZ1bmN0aW9uIFBxKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MCxlPTA7Yj1yO3I9cisxNnwwO2U9Yis4fDA7ZD1iKzR8MDtjPWI7a1tlPj4yXT1hO2tbZD4+Ml09a1soa1trW2U+PjJdPj4yXXwwKSsxMj4+Ml07a1tjPj4yXT1rW2U+PjJdO0ltKGtbZD4+Ml18MCk7TGwoKGtbYz4+Ml18MCkrNHwwKTtVZChrWyhrW2M+PjJdfDApKzYwPj4yXXwwKTtVZChrWyhrW2M+PjJdfDApKzc2Pj4yXXwwKTtVZChrWyhrW2M+PjJdfDApKzExMj4+Ml18MCk7VWQoa1tjPj4yXXwwKTtyPWI7cmV0dXJuIDB9ZnVuY3Rpb24gUXEoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaT0wLGo9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wO3o9cjtyPXIrODB8MDt4PXorOHwwO3c9ejtmPXorNzZ8MDtnPXorNzJ8MDtoPXorNjh8MDtpPXorNjB8MDtqPXorNTZ8MDt0PXorNTJ8MDt1PXorNDh8MDt2PXorNDR8MDtzPXorNDB8MDtuPXorMzZ8MDtsPXorMzJ8MDttPXorMjh8MDtwPXorMjR8MDtvPXorMjB8MDtxPXorMTZ8MDt5PXorMTJ8MDtrW2c+PjJdPWE7a1toPj4yXT1iO2tbeis2ND4+Ml09YztrW2k+PjJdPWQ7a1tqPj4yXT1lO2tbdD4+Ml09a1tnPj4yXTtrW3U+PjJdPWtbKGtba1tnPj4yXT4+Ml18MCkrMTI+PjJdO2tbcz4+Ml09MDtrW24+PjJdPTA7a1tsPj4yXT0tMTtrW20+PjJdPS0xO2tbcD4+Ml09LTE7a1tvPj4yXT0tMTtrW3E+PjJdPTA7aWYoKGtbaD4+Ml18MCkhPTEpe2tbcz4+Ml09MTtpZihrW2g+PjJdJjIpe2E9a1txPj4yXXwwO2tbcT4+Ml09YSsxO2tbbT4+Ml09YX1pZihrW2g+PjJdJjQpe2E9a1txPj4yXXwwO2tbcT4+Ml09YSsxO2tbcD4+Ml09YX19ZWxzZXthPWtbcT4+Ml18MDtrW3E+PjJdPWErMTtrW2w+PjJdPWF9aWYoKGtbcT4+Ml18MCk8KGtbaT4+Ml18MCkpe2E9a1txPj4yXXwwO2tbcT4+Ml09YSsxO2tbbz4+Ml09YX1MbCgoa1t0Pj4yXXwwKSs0fDApO1VkKGtbKGtbdD4+Ml18MCkrNjA+PjJdfDApO1VkKGtbKGtbdD4+Ml18MCkrMTEyPj4yXXwwKTtkUygoa1t0Pj4yXXwwKSs0fDAsMCwoa1t0Pj4yXXwwKSsxMjAtKChrW3Q+PjJdfDApKzQpfDApfDA7a1soa1t0Pj4yXXwwKSs2MCsxMj4+Ml09MztpZihrW3M+PjJdfDApe2E9KGtbdD4+Ml18MCkrNjArMTJ8MDtrW2E+PjJdPWtbYT4+Ml18MTZ9aWYoKChrW2w+PjJdfDApPj0wfChrW20+PjJdfDApPj0wPyhhPWplKGtba1tqPj4yXT4+Ml18MCl8MCxrW3k+PjJdPWEsKGtbeT4+Ml18MCkhPTApOjApPyhrW3c+PjJdPWtbeT4+Ml0seT1ZZCgxODM5MSx3KXwwLGtbKGtbdD4+Ml18MCkrNjA+PjJdPXkseT1rZShrW2tbaj4+Ml0+PjJdfDApfDAsa1soa1t0Pj4yXXwwKSs2MCs0Pj4yXT15LChrWyhrW3Q+PjJdfDApKzYwPj4yXXwwKT09MCk6MCl7a1tmPj4yXT03O3k9a1tmPj4yXXwwO3I9ejtyZXR1cm4geXwwfWlmKChrW3A+PjJdfDApPj0wPyh5PWplKGtbKGtbaj4+Ml18MCkrKGtbcD4+Ml08PDIpPj4yXXwwKXwwLGtbeD4+Ml09eSx5PVlkKDE4MzkxLHgpfDAsa1soa1t0Pj4yXXwwKSs3Nj4+Ml09eSx5PWtlKGtbKGtbaj4+Ml18MCkrKGtbcD4+Ml08PDIpPj4yXXwwKXwwLGtbKGtbdD4+Ml18MCkrODA+PjJdPXksKGtbKGtbdD4+Ml18MCkrNzY+PjJdfDApPT0wKTowKXtrW2Y+PjJdPTc7eT1rW2Y+PjJdfDA7cj16O3JldHVybiB5fDB9aWYoKGtbbz4+Ml18MCk+PTApe3k9bWUoa1soa1tqPj4yXXwwKSsoa1tvPj4yXTw8Mik+PjJdfDApfDA7a1tuPj4yXT15O2tbbj4+Ml09KGtbbj4+Ml18MCk8MD8wOnl9a1soa1t0Pj4yXXwwKSs4ND4+Ml09a1tuPj4yXTt5PUFsKGtbdT4+Ml18MCxrW24+PjJdfDAsMCwtMixrWyhrW3Q+PjJdfDApKzYwPj4yXXwwLGtbKGtbdD4+Ml18MCkrNjArND4+Ml18MCwwLGtbcz4+Ml18MCwoa1t0Pj4yXXwwKSs0fDApfDA7a1t2Pj4yXT15O2lmKCEoa1t2Pj4yXXwwKSl7eT1FbChrW3U+PjJdfDAsKGtbdD4+Ml18MCkrNHwwLChrW3Q+PjJdfDApKzYwfDApfDA7a1t2Pj4yXT15fWlmKCEoa1t2Pj4yXXwwKSl7eT1ScShrW2c+PjJdfDApfDA7a1t2Pj4yXT15fWtbZj4+Ml09a1t2Pj4yXTt5PWtbZj4+Ml18MDtyPXo7cmV0dXJuIHl8MH1mdW5jdGlvbiBScShhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wLGk9MCxqPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTA7cD1yO3I9cis2NHwwO2M9cCs1MnwwO3E9cCs0OHwwO2w9cCs0NHwwO2I9cCs0MHwwO209cCszNnwwO2Y9cCszMnwwO2o9cCsyOHwwO2Q9cCsyNHwwO2c9cCsyMHwwO2U9cCsxNnwwO2k9cCsxMnwwO2g9cCs4fDA7bj1wO2tbcT4+Ml09YTtrW2w+PjJdPWtbcT4+Ml07a1tiPj4yXT1rWyhrW2tbcT4+Ml0+PjJdfDApKzEyPj4yXTthPShrW2w+PjJdfDApKzk2fDA7cT1hO3E9JFIoa1txPj4yXXwwLGtbcSs0Pj4yXXwwLDEsMCl8MDtrW2E+PjJdPXE7a1thKzQ+PjJdPUw7YT0oa1tsPj4yXXwwKSsxMDR8MDtrW2E+PjJdPShrW2E+PjJdfDApKzE7d2hpbGUoMSl7aWYoKGtbKGtbbD4+Ml18MCkrMTA0Pj4yXXwwKT49KGtbKGtbbD4+Ml18MCkrMTA4Pj4yXXwwKSlicmVhaztxPShrWyhrW2w+PjJdfDApKzExMj4+Ml18MCkrKGtbKGtbbD4+Ml18MCkrMTA0Pj4yXTw8NCl8MDthPWtbcSs0Pj4yXXwwO2lmKChhfDApPjB8KGF8MCk9PTAmKGtbcT4+Ml18MCk+Pj4wPjApe289NDticmVha31xPShrW2w+PjJdfDApKzEwNHwwO2tbcT4+Ml09KGtbcT4+Ml18MCkrMX1pZigob3wwKT09NCl7a1tjPj4yXT0wO3E9a1tjPj4yXXwwO3I9cDtyZXR1cm4gcXwwfXE9Rmwoa1tiPj4yXXwwLChrW2w+PjJdfDApKzR8MCl8MDtrW20+PjJdPXE7ZG8gaWYoKGtbbT4+Ml18MCk9PTEwMCl7a1tmPj4yXT0wO2tbaj4+Ml09a1soa1tsPj4yXXwwKSs0KzUyPj4yXTtrW2Q+PjJdPWtbKGtbbD4+Ml18MCkrNCs0OD4+Ml07a1tlPj4yXT0wO2RvIGlmKGtbKGtbbD4+Ml18MCkrNzY+PjJdfDApe2E9a1tsPj4yXXwwO2lmKChrWyhrW2w+PjJdfDApKzgwPj4yXXwwKTwoa1soa1tsPj4yXXwwKSs0KzQ0Pj4yXXwwKSlhPWtbYSs4MD4+Ml18MDtlbHNlIGE9a1thKzQrNDQ+PjJdfDA7a1tpPj4yXT1hO3E9b1Ioa1soa1tsPj4yXXwwKSs3Nj4+Ml18MCxrWyhrW2w+PjJdfDApKzQrNDA+PjJdfDAsa1tpPj4yXXwwKXwwO2tbaD4+Ml09cTtpZigoa1toPj4yXXwwKT49MCl7aWYoa1toPj4yXXwwKWJyZWFrO2lmKChrWyhrW2w+PjJdfDApKzQrNDQ+PjJdfDApPD0oa1soa1tsPj4yXXwwKSs4MD4+Ml18MCkpYnJlYWt9a1soa1tsPj4yXXwwKSs4OD4+Ml09MTtrW2M+PjJdPTA7cT1rW2M+PjJdfDA7cj1wO3JldHVybiBxfDB9d2hpbGUoMCk7aWYoVnEoa1tsPj4yXXwwLDIpfDApe2tbYz4+Ml09NztxPWtbYz4+Ml18MDtyPXA7cmV0dXJuIHF8MH1kUyhrWyhrW2w+PjJdfDApKzExMj4+Ml18MCwwLGtbKGtbbD4+Ml18MCkrMTA4Pj4yXTw8NHwwKXwwO2tbZz4+Ml09MDthOndoaWxlKDEpe2lmKChrW2Y+PjJdfDApPj0oa1tqPj4yXXwwKSl7bz0zMjticmVha31xPW47a1txPj4yXT0wO2tbcSs0Pj4yXT0wO3E9aW0oKGtbZD4+Ml18MCkrKGtbZj4+Ml18MCl8MCxuKXwwO2tbZj4+Ml09KGtbZj4+Ml18MCkrcTtzd2l0Y2goa1tlPj4yXXwwKXtjYXNlIDA6e3E9a1soa1tsPj4yXXwwKSsxMTI+PjJdfDA7aT1xO2k9JFIoa1tpPj4yXXwwLGtbaSs0Pj4yXXwwLDEsMCl8MDtrW3E+PjJdPWk7a1txKzQ+PjJdPUw7a1tlPj4yXT0xO2tbZz4+Ml09MDtjb250aW51ZSBhfWNhc2UgMTp7cT1uO2k9a1txKzQ+PjJdfDA7aWYoKGl8MCk+MHwoaXwwKT09MCYoa1txPj4yXXwwKT4+PjA+MSl7cT0oa1soa1tsPj4yXXwwKSsxMTI+PjJdfDApKzE2fDA7aT1xO2k9JFIoa1tpPj4yXXwwLGtbaSs0Pj4yXXwwLDEsMCl8MDtrW3E+PjJdPWk7a1txKzQ+PjJdPUx9a1tlPj4yXT0yO2JyZWFrfWNhc2UgMjpicmVhaztkZWZhdWx0OntrW2c+PjJdPWtbbj4+Ml07aWYoVnEoa1tsPj4yXXwwLChrW2c+PjJdfDApKzJ8MCl8MClicmVhayBhO3E9KGtbKGtbbD4+Ml18MCkrMTEyPj4yXXwwKSsoKGtbZz4+Ml18MCkrMTw8NCl8MDtpPXE7aT0kUihrW2k+PjJdfDAsa1tpKzQ+PjJdfDAsMSwwKXwwO2tbcT4+Ml09aTtrW3ErND4+Ml09TDtrW2U+PjJdPTI7Y29udGludWUgYX19cT1uO2lmKChrW3E+PjJdfDApPT0wJihrW3ErND4+Ml18MCk9PTApe2tbZT4+Ml09MDtjb250aW51ZX1xPW47aWYoKGtbcT4+Ml18MCk9PTEmKGtbcSs0Pj4yXXwwKT09MCl7a1tlPj4yXT0zO2NvbnRpbnVlfWVsc2V7cT0oa1soa1tsPj4yXXwwKSsxMTI+PjJdfDApKygoa1tnPj4yXXwwKSsxPDw0KSs4fDA7aT1xO2k9JFIoa1tpPj4yXXwwLGtbaSs0Pj4yXXwwLDEsMCl8MDtrW3E+PjJdPWk7a1txKzQ+PjJdPUw7cT0oa1soa1tsPj4yXXwwKSsxMTI+PjJdfDApKzh8MDtpPXE7aT0kUihrW2k+PjJdfDAsa1tpKzQ+PjJdfDAsMSwwKXwwO2tbcT4+Ml09aTtrW3ErND4+Ml09TDtjb250aW51ZX19aWYoKG98MCk9PTMyKXtrWyhrW2w+PjJdfDApKzEwND4+Ml09MDtrW20+PjJdPTA7YnJlYWt9a1tjPj4yXT03O3E9a1tjPj4yXXwwO3I9cDtyZXR1cm4gcXwwfWVsc2Uga1soa1tsPj4yXXwwKSs4OD4+Ml09MTt3aGlsZSgwKTtrW2M+PjJdPWtbbT4+Ml07cT1rW2M+PjJdfDA7cj1wO3JldHVybiBxfDB9ZnVuY3Rpb24gU3EoYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wO2M9cjtyPXIrMTZ8MDtkPWMrNHwwO2I9YztrW2Q+PjJdPWE7a1tiPj4yXT1rW2Q+PjJdO3I9YztyZXR1cm4ga1soa1tiPj4yXXwwKSs4OD4+Ml18MH1mdW5jdGlvbiBUcShhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTA7Zj1yO3I9cisxNnwwO2g9ZisxMnwwO2Q9Zis4fDA7Zz1mKzR8MDtlPWY7a1toPj4yXT1hO2tbZD4+Ml09YjtrW2c+PjJdPWM7a1tlPj4yXT1rW2g+PjJdO3N3aXRjaChrW2c+PjJdfDApe2Nhc2UgMDp7d2Uoa1tkPj4yXXwwLGtbKGtbZT4+Ml18MCkrNCs0MD4+Ml18MCxrWyhrW2U+PjJdfDApKzQrNDQ+PjJdfDAsLTEpO3I9ZjtyZXR1cm4gMH1jYXNlIDE6e2Q9a1tkPj4yXXwwO2lmKGtbKGtbZT4+Ml18MCkrMTA0Pj4yXXwwKXt0ZShkLChrWyhrW2U+PjJdfDApKzEwND4+Ml18MCktMXwwKTtyPWY7cmV0dXJuIDB9ZWxzZXt3ZShkLDI1NDUxLC0xLDApO3I9ZjtyZXR1cm4gMH19Y2FzZSAyOntoPShrWyhrW2U+PjJdfDApKzExMj4+Ml18MCkrKGtbKGtbZT4+Ml18MCkrMTA0Pj4yXTw8NCl8MDt1ZShrW2Q+PjJdfDAsa1toPj4yXXwwLGtbaCs0Pj4yXXwwKTtyPWY7cmV0dXJuIDB9Y2FzZSAzOntoPShrWyhrW2U+PjJdfDApKzExMj4+Ml18MCkrKGtbKGtbZT4+Ml18MCkrMTA0Pj4yXTw8NCkrOHwwO3VlKGtbZD4+Ml18MCxrW2g+PjJdfDAsa1toKzQ+PjJdfDApO3I9ZjtyZXR1cm4gMH1kZWZhdWx0Ont0ZShrW2Q+PjJdfDAsa1soa1tlPj4yXXwwKSs4ND4+Ml18MCk7cj1mO3JldHVybiAwfX1yZXR1cm4gMH1mdW5jdGlvbiBVcShhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTA7Yz1yO3I9cisxNnwwO2Y9Yys4fDA7ZT1jKzR8MDtkPWM7a1tmPj4yXT1hO2tbZT4+Ml09YjtrW2Q+PjJdPWtbZj4+Ml07ZD0oa1tkPj4yXXwwKSs5NnwwO2E9a1tkKzQ+PjJdfDA7Yj1rW2U+PjJdfDA7a1tiPj4yXT1rW2Q+PjJdO2tbYis0Pj4yXT1hO3I9YztyZXR1cm4gMH1mdW5jdGlvbiBWcShhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wO2c9cjtyPXIrMTZ8MDtjPWcrMTJ8MDtkPWcrOHwwO2U9Zys0fDA7Zj1nO2tbZD4+Ml09YTtrW2U+PjJdPWI7ZG8gaWYoKGtbZT4+Ml18MCk+KGtbKGtbZD4+Ml18MCkrMTA4Pj4yXXwwKSl7YT1WZChrWyhrW2Q+PjJdfDApKzExMj4+Ml18MCxrW2U+PjJdPDw0KXwwO2tbZj4+Ml09YTtpZihrW2Y+PjJdfDApe2RTKChrW2Y+PjJdfDApKyhrWyhrW2Q+PjJdfDApKzEwOD4+Ml08PDQpfDAsMCwoa1tlPj4yXXwwKS0oa1soa1tkPj4yXXwwKSsxMDg+PjJdfDApPDw0fDApfDA7a1soa1tkPj4yXXwwKSsxMTI+PjJdPWtbZj4+Ml07a1soa1tkPj4yXXwwKSsxMDg+PjJdPWtbZT4+Ml07YnJlYWt9a1tjPj4yXT03O2E9a1tjPj4yXXwwO3I9ZztyZXR1cm4gYXwwfXdoaWxlKDApO2tbYz4+Ml09MDthPWtbYz4+Ml18MDtyPWc7cmV0dXJuIGF8MH1mdW5jdGlvbiBXcShhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaT0wLGo9MCxsPTAsbT0wLG49MCxvPTA7bz1yO3I9cis0OHwwO2Q9byszMnwwO2U9bysyOHwwO2Y9bysyNHwwO2c9bysyMHwwO2o9bysxNnwwO2g9bysxMnwwO2w9bys4fDA7bT1vKzR8MDtpPW87a1tlPj4yXT1hO2tbZj4+Ml09YjtrW2c+PjJdPWM7a1tsPj4yXT0wO2M9U2QoMTYpfDA7a1tqPj4yXT1jO2lmKCEoa1tqPj4yXXwwKSl7a1tkPj4yXT03O249a1tkPj4yXXwwO3I9bztyZXR1cm4gbnwwfWM9a1tqPj4yXXwwO2tbYz4+Ml09MDtrW2MrND4+Ml09MDtrW2MrOD4+Ml09MDtrW2MrMTI+PjJdPTA7a1soa1tqPj4yXXwwKSs0Pj4yXT0xO2tbaD4+Ml09MDt3aGlsZSgxKXtpZihrW2w+PjJdfDApYnJlYWs7aWYoKGtbaD4+Ml18MCk+PShrW2U+PjJdfDApKWJyZWFrO2tbbT4+Ml09a1soa1tmPj4yXXwwKSsoa1toPj4yXTw8Mik+PjJdO2M9dVIoa1ttPj4yXXwwKXwwO2tbaT4+Ml09YztpZigoa1tpPj4yXXwwKT09MTk/KG9SKDI1NzI4LGtbbT4+Ml18MCwxOSl8MCk9PTA6MClrWyhrW2o+PjJdfDApKzQ+PjJdPTE7ZWxzZSBuPTk7ZG8gaWYoKG58MCk9PTkpe249MDtpZigoa1tpPj4yXXwwKT09MTk/KG9SKDI1NzQ4LGtbbT4+Ml18MCwxOSl8MCk9PTA6MCl7a1soa1tqPj4yXXwwKSs0Pj4yXT0wO2JyZWFrfWlmKChrW2k+PjJdfDApPj0xMT8ob1IoMjU3Njgsa1ttPj4yXXwwLDExKXwwKT09MDowKXtjPWZyKGtbaj4+Ml18MCwxLChrW20+PjJdfDApKzExfDAsKGtbaT4+Ml18MCktMTF8MCl8MDtrW2w+PjJdPWM7YnJlYWt9aWYoKGtbaT4+Ml18MCk+PTExPyhvUigyNTc4MCxrW20+PjJdfDAsMTEpfDApPT0wOjApe2M9ZnIoa1tqPj4yXXwwLDAsKGtbbT4+Ml18MCkrMTF8MCwoa1tpPj4yXXwwKS0xMXwwKXwwO2tbbD4+Ml09YzticmVha31rW2w+PjJdPTF9d2hpbGUoMCk7a1toPj4yXT0oa1toPj4yXXwwKSsxfWlmKGtbbD4+Ml18MCl7WHEoa1tqPj4yXXwwKXwwO2tbaj4+Ml09MH1rW2tbZz4+Ml0+PjJdPWtbaj4+Ml07a1tkPj4yXT1rW2w+PjJdO249a1tkPj4yXXwwO3I9bztyZXR1cm4gbnwwfWZ1bmN0aW9uIFhxKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MDtkPXI7cj1yKzE2fDA7Yj1kKzR8MDtjPWQ7a1tiPj4yXT1hO2lmKCEoa1tiPj4yXXwwKSl7cj1kO3JldHVybiAwfWtbYz4+Ml09a1tiPj4yXTtVZChrWyhrW2M+PjJdfDApKzEyPj4yXXwwKTtVZChrW2M+PjJdfDApO3I9ZDtyZXR1cm4gMH1mdW5jdGlvbiBZcShhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGk9MCxqPTA7aj1yO3I9ciszMnwwO2U9aisyMHwwO2Y9aisxMnwwO2c9ais4fDA7aD1qKzR8MDtpPWo7a1tqKzE2Pj4yXT1hO2tbZj4+Ml09YjtrW2c+PjJdPWM7a1toPj4yXT1kO2Q9U2QoMjgpfDA7a1tpPj4yXT1kO2lmKCEoa1tpPj4yXXwwKSl7a1tlPj4yXT03O2Q9a1tlPj4yXXwwO3I9ajtyZXR1cm4gZHwwfWQ9a1tpPj4yXXwwO2tbZD4+Ml09MDtrW2QrND4+Ml09MDtrW2QrOD4+Ml09MDtrW2QrMTI+PjJdPTA7a1tkKzE2Pj4yXT0wO2tbZCsyMD4+Ml09MDtrW2QrMjQ+PjJdPTA7a1soa1tpPj4yXXwwKSs0Pj4yXT1rW2Y+PjJdO2RvIGlmKGtbZj4+Ml18MClpZigoa1tnPj4yXXwwKTwwKXtkPXVSKGtbZj4+Ml18MCl8MDtrWyhrW2k+PjJdfDApKzg+PjJdPWQ7YnJlYWt9ZWxzZXtrWyhrW2k+PjJdfDApKzg+PjJdPWtbZz4+Ml07YnJlYWt9ZWxzZSBrWyhrW2k+PjJdfDApKzg+PjJdPTA7d2hpbGUoMCk7a1trW2g+PjJdPj4yXT1rW2k+PjJdO2tbZT4+Ml09MDtkPWtbZT4+Ml18MDtyPWo7cmV0dXJuIGR8MH1mdW5jdGlvbiBacShhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTA7Yj1yO3I9cisxNnwwO2Q9Yis0fDA7Yz1iO2tbZD4+Ml09YTtrW2M+PjJdPWtbZD4+Ml07VWQoa1soa1tjPj4yXXwwKSsyMD4+Ml18MCk7VWQoa1tjPj4yXXwwKTtyPWI7cmV0dXJuIDB9ZnVuY3Rpb24gX3EoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxtPTAsbj0wLG89MCxwPTAscT0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MDtBPXI7cj1yKzgwfDA7bz1BKzY0fDA7Qj1BKzYwfDA7cD1BKzU2fDA7cT1BKzUyfDA7cz1BKzQ4fDA7dD1BKzQ0fDA7dT1BKzQwfDA7dj1BKzM2fDA7aj1BKzMyfDA7Zz1BKzI4fDA7eT1BKzI0fDA7dz1BKzIwfDA7ej1BKzE2fDA7eD1BKzEyfDA7bj1BKzh8MDtoPUErNHwwO209QTtrW0I+PjJdPWE7a1twPj4yXT1iO2tbcT4+Ml09YztrW3M+PjJdPWQ7a1t0Pj4yXT1lO2tbdT4+Ml09ZjtrW3Y+PjJdPWtbQj4+Ml07a1tqPj4yXT1rW2tbdj4+Ml0+PjJdO2tbZz4+Ml09MDtrW3c+PjJdPShrWyhrW3Y+PjJdfDApKzQ+PjJdfDApKyhrWyhrW3Y+PjJdfDApKzEyPj4yXXwwKTtrW3o+PjJdPWtbdz4+Ml07a1tuPj4yXT0oa1soa1t2Pj4yXXwwKSs0Pj4yXXwwKSsoa1soa1t2Pj4yXXwwKSs4Pj4yXXwwKTt3aGlsZSgxKXtpZigoa1t3Pj4yXXwwKT4+PjA+PShrW24+PjJdfDApPj4+MClicmVhaztCPWtbdz4+Ml18MDtrW3c+PjJdPUIrMTtrW2c+PjJdPWxbQj4+MF07ZG8gaWYoKGtbZz4+Ml18MCk+PTE5Mil7a1tnPj4yXT1sWzI1NTYzKygoa1tnPj4yXXwwKS0xOTIpPj4wXTt3aGlsZSgxKXtpZigoa1t3Pj4yXXwwKSE9KGtbbj4+Ml18MCkpYT0oKGxba1t3Pj4yXT4+MF18MCkmMTkyfDApPT0xMjg7ZWxzZSBhPTA7Yj1rW2c+PjJdfDA7aWYoIWEpYnJlYWs7Qj1rW3c+PjJdfDA7a1t3Pj4yXT1CKzE7a1tnPj4yXT0oYjw8NikrKDYzJihsW0I+PjBdfDApKX1pZigoKGJ8MCk+PTEyOD8oa1tnPj4yXSYtMjA0OHwwKSE9NTUyOTY6MCk/KGtbZz4+Ml0mLTJ8MCkhPTY1NTM0OjApYnJlYWs7a1tnPj4yXT02NTUzM313aGlsZSgwKTtpZigkcShrW2o+PjJdfDAsa1tnPj4yXXwwKXwwKWJyZWFrO2tbej4+Ml09a1t3Pj4yXX1pZigoa1t6Pj4yXXwwKT4+PjA+PShrW24+PjJdfDApPj4+MCl7a1tvPj4yXT0xMDE7Qj1rW28+PjJdfDA7cj1BO3JldHVybiBCfDB9a1t5Pj4yXT1rWyhrW3Y+PjJdfDApKzIwPj4yXTt3aGlsZSgxKXtpZigoKGtbeT4+Ml18MCktKGtbKGtbdj4+Ml18MCkrMjA+PjJdfDApfDApPj0oKGtbKGtbdj4+Ml18MCkrMjQ+PjJdfDApLTR8MCkpe0I9VmQoa1soa1t2Pj4yXXwwKSsyMD4+Ml18MCwoa1soa1t2Pj4yXXwwKSsyND4+Ml18MCkrNjR8MCl8MDtrW20+PjJdPUI7aWYoIShrW20+PjJdfDApKXthPTIwO2JyZWFrfWtbeT4+Ml09KGtbbT4+Ml18MCkrKChrW3k+PjJdfDApLShrWyhrW3Y+PjJdfDApKzIwPj4yXXwwKSk7a1soa1t2Pj4yXXwwKSsyMD4+Ml09a1ttPj4yXTtCPShrW3Y+PjJdfDApKzI0fDA7a1tCPj4yXT0oa1tCPj4yXXwwKSs2NH1rW3g+PjJdPWtbdz4+Ml07Qj1hcihrW2c+PjJdfDAsa1soa1tqPj4yXXwwKSs0Pj4yXXwwKXwwO2tbaD4+Ml09QjtkbyBpZihrW2g+PjJdfDApe2E9a1toPj4yXXwwO2lmKChrW2g+PjJdfDApPDEyOCl7Qj1rW3k+PjJdfDA7a1t5Pj4yXT1CKzE7aVtCPj4wXT1hO2JyZWFrfWI9a1toPj4yXXwwO2lmKChhfDApPDIwNDgpe2M9a1t5Pj4yXXwwO2tbeT4+Ml09YysxO2lbYz4+MF09MTkyKyhiPj42JjMxKTtjPTEyOCsoa1toPj4yXSY2MykmMjU1O0I9a1t5Pj4yXXwwO2tbeT4+Ml09QisxO2lbQj4+MF09YzticmVha31hPWtbaD4+Ml18MDtpZigoYnwwKTw2NTUzNil7Qj1rW3k+PjJdfDA7a1t5Pj4yXT1CKzE7aVtCPj4wXT0yMjQrKGE+PjEyJjE1KTtCPTEyOCsoa1toPj4yXT4+NiY2MykmMjU1O2M9a1t5Pj4yXXwwO2tbeT4+Ml09YysxO2lbYz4+MF09QjtjPTEyOCsoa1toPj4yXSY2MykmMjU1O0I9a1t5Pj4yXXwwO2tbeT4+Ml09QisxO2lbQj4+MF09YzticmVha31lbHNle2M9a1t5Pj4yXXwwO2tbeT4+Ml09YysxO2lbYz4+MF09MjQwKyhhPj4xOCY3KTtjPTEyOCsoa1toPj4yXT4+MTImNjMpJjI1NTtCPWtbeT4+Ml18MDtrW3k+PjJdPUIrMTtpW0I+PjBdPWM7Qj0xMjgrKGtbaD4+Ml0+PjYmNjMpJjI1NTtjPWtbeT4+Ml18MDtrW3k+PjJdPWMrMTtpW2M+PjBdPUI7Yz0xMjgrKGtbaD4+Ml0mNjMpJjI1NTtCPWtbeT4+Ml18MDtrW3k+PjJdPUIrMTtpW0I+PjBdPWM7YnJlYWt9fXdoaWxlKDApO2lmKChrW3c+PjJdfDApPj4+MD49KGtbbj4+Ml18MCk+Pj4wKXthPTQzO2JyZWFrfUI9a1t3Pj4yXXwwO2tbdz4+Ml09QisxO2tbZz4+Ml09bFtCPj4wXTtkbyBpZigoa1tnPj4yXXwwKT49MTkyKXtrW2c+PjJdPWxbMjU1NjMrKChrW2c+PjJdfDApLTE5Mik+PjBdO3doaWxlKDEpe2lmKChrW3c+PjJdfDApIT0oa1tuPj4yXXwwKSliPSgobFtrW3c+PjJdPj4wXXwwKSYxOTJ8MCk9PTEyODtlbHNlIGI9MDthPWtbZz4+Ml18MDtpZighYilicmVhaztCPWtbdz4+Ml18MDtrW3c+PjJdPUIrMTtrW2c+PjJdPShhPDw2KSsoNjMmKGxbQj4+MF18MCkpfWlmKCgoYXwwKT49MTI4PyhrW2c+PjJdJi0yMDQ4fDApIT01NTI5NjowKT8oa1tnPj4yXSYtMnwwKSE9NjU1MzQ6MClicmVhaztrW2c+PjJdPTY1NTMzfXdoaWxlKDApO2lmKCRxKGtbaj4+Ml18MCxrW2c+PjJdfDApfDApY29udGludWU7aWYoIShicihrW2c+PjJdfDApfDApKXthPTQzO2JyZWFrfX1pZigoYXwwKT09MjApe2tbbz4+Ml09NztCPWtbbz4+Ml18MDtyPUE7cmV0dXJuIEJ8MH1lbHNlIGlmKChhfDApPT00Myl7a1soa1t2Pj4yXXwwKSsxMj4+Ml09KGtbdz4+Ml18MCktKGtbKGtbdj4+Ml18MCkrND4+Ml18MCk7a1trW3A+PjJdPj4yXT1rWyhrW3Y+PjJdfDApKzIwPj4yXTtrW2tbcT4+Ml0+PjJdPShrW3k+PjJdfDApLShrWyhrW3Y+PjJdfDApKzIwPj4yXXwwKTtrW2tbcz4+Ml0+PjJdPShrW3o+PjJdfDApLShrWyhrW3Y+PjJdfDApKzQ+PjJdfDApO2tba1t0Pj4yXT4+Ml09KGtbeD4+Ml18MCktKGtbKGtbdj4+Ml18MCkrND4+Ml18MCk7ej0oa1t2Pj4yXXwwKSsxNnwwO0I9a1t6Pj4yXXwwO2tbej4+Ml09QisxO2tba1t1Pj4yXT4+Ml09QjtrW28+PjJdPTA7Qj1rW28+PjJdfDA7cj1BO3JldHVybiBCfDB9cmV0dXJuIDB9ZnVuY3Rpb24gJHEoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTA7Yz1yO3I9cisxNnwwO2U9Yys0fDA7ZD1jO2tbZT4+Ml09YTtrW2Q+PjJdPWI7YT1kcihrW2Q+PjJdfDApfDA7YT1hXihlcihrW2U+PjJdfDAsa1tkPj4yXXwwKXwwKTtyPWM7cmV0dXJuIGF8MH1mdW5jdGlvbiBhcihhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wLGg9MCxpPTAsaj0wLG49MCxvPTA7bz1yO3I9cis0OHwwO2M9byszMnwwO2Q9bysyOHwwO249bysyNHwwO2Y9bysyMHwwO2c9bysxNnwwO2g9bysxMnwwO2k9bys4fDA7ZT1vKzR8MDtqPW87a1tjPj4yXT1hO2tbZD4+Ml09YjtrW24+PjJdPWtbYz4+Ml07Yj1rW2M+PjJdfDA7aWYoKGtbYz4+Ml18MCk8MTI4KXtpZighKChifDApPj02NSYoa1tjPj4yXXwwKTw9OTApKXtuPWtbbj4+Ml18MDtyPW87cmV0dXJuIG58MH1rW24+PjJdPShrW2M+PjJdfDApKzMyO249a1tuPj4yXXwwO3I9bztyZXR1cm4gbnwwfWlmKChifDApPj02NTUzNil7aWYoISgoa1tjPj4yXXwwKT49NjY1NjAmKGtbYz4+Ml18MCk8NjY2MDApKXtuPWtbbj4+Ml18MDtyPW87cmV0dXJuIG58MH1rW24+PjJdPShrW2M+PjJdfDApKzQwO249a1tuPj4yXXwwO3I9bztyZXR1cm4gbnwwfWtbZj4+Ml09MTYyO2tbZz4+Ml09MDtrW2g+PjJdPS0xO3doaWxlKDEpe2lmKChrW2Y+PjJdfDApPChrW2c+PjJdfDApKWJyZWFrO2tbaT4+Ml09KChrW2Y+PjJdfDApKyhrW2c+PjJdfDApfDApLzJ8MDtrW2U+PjJdPShrW2M+PjJdfDApLShtWzk3OTgrKGtbaT4+Ml08PDIpPj4xXXwwKTtiPWtbaT4+Ml18MDtpZigoa1tlPj4yXXwwKT49MCl7a1toPj4yXT1iO2tbZz4+Ml09KGtbaT4+Ml18MCkrMTtjb250aW51ZX1lbHNle2tbZj4+Ml09Yi0xO2NvbnRpbnVlfX1pZigoKGtbaD4+Ml18MCk+PTA/KGtbaj4+Ml09OTc5OCsoa1toPj4yXTw8MiksKGtbYz4+Ml18MCk8KChtW2tbaj4+Ml0+PjFdfDApKyhsWyhrW2o+PjJdfDApKzM+PjBdfDApfDApKTowKT8wPT0oMSYobFsoa1tqPj4yXXwwKSsyPj4wXXwwKSYoKG1ba1tqPj4yXT4+MV18MClea1tjPj4yXSl8MCk6MClrW24+PjJdPShrW2M+PjJdfDApKyhtWzEwNDUwKygobFsoa1tqPj4yXXwwKSsyPj4wXXwwKT4+MTw8MSk+PjFdfDApJjY1NTM1O2lmKCEoa1tkPj4yXXwwKSl7bj1rW24+PjJdfDA7cj1vO3JldHVybiBufDB9aj1jcihrW24+PjJdfDApfDA7a1tuPj4yXT1qO249a1tuPj4yXXwwO3I9bztyZXR1cm4gbnwwfWZ1bmN0aW9uIGJyKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MCxlPTAsZj0wO2Y9cjtyPXIrMTZ8MDtlPWYrMTJ8MDtiPWYrOHwwO2M9Zis0fDA7ZD1mO2tbYj4+Ml09YTtrW2M+PjJdPTEzNDM4OTcyNztrW2Q+PjJdPTIyMTY4ODtpZigoa1tiPj4yXXwwKTw3Njh8KGtbYj4+Ml18MCk+ODE3KXtrW2U+PjJdPTA7ZT1rW2U+PjJdfDA7cj1mO3JldHVybiBlfDB9aWYoKGtbYj4+Ml18MCk8ODAwKWI9a1tjPj4yXSYxPDwoa1tiPj4yXXwwKS03Njg7ZWxzZSBiPWtbZD4+Ml0mMTw8KGtbYj4+Ml18MCktNzY4LTMyO2tbZT4+Ml09YjtlPWtbZT4+Ml18MDtyPWY7cmV0dXJuIGV8MH1mdW5jdGlvbiBjcihhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxsPTAsbj0wLG89MDtvPXI7cj1yKzMzNnwwO2Q9bysyMHwwO2Y9bysyNHwwO2U9bysyMjZ8MDtuPW8rMTZ8MDtqPW8rMTJ8MDtnPW8rOHwwO2g9bys0fDA7bD1vO2tbZD4+Ml09YTtiUyhmfDAsMTA2MDQsMjAyKXwwO2E9ZTtiPTI1NjI3O2M9YSsxMDF8MDtkb3tpW2E+PjBdPWlbYj4+MF18MDthPWErMXwwO2I9YisxfDB9d2hpbGUoKGF8MCk8KGN8MCkpO2tbbj4+Ml09a1tkPj4yXTw8M3w3O2tbaj4+Ml09MDtrW2c+PjJdPTEwMDtrW2g+PjJdPTA7d2hpbGUoMSl7aWYoKGtbZz4+Ml18MCk8KGtbaD4+Ml18MCkpYnJlYWs7a1tsPj4yXT0oKGtbZz4+Ml18MCkrKGtbaD4+Ml18MCl8MCkvMnwwO2E9a1tsPj4yXXwwO2lmKChrW24+PjJdfDApPj4+MD49KG1bZisoa1tsPj4yXTw8MSk+PjFdfDApPj4+MCl7a1tqPj4yXT1hO2tbaD4+Ml09KGtbbD4+Ml18MCkrMTtjb250aW51ZX1lbHNle2tbZz4+Ml09YS0xO2NvbnRpbnVlfX1pZigoa1tkPj4yXXwwKT4oKG1bZisoa1tqPj4yXTw8MSk+PjFdPj4zKSsobVtmKyhrW2o+PjJdPDwxKT4+MV0mNyl8MCkpe249a1tkPj4yXXwwO3I9bztyZXR1cm4gbnwwfWVsc2V7bj1pW2UrKGtbaj4+Ml18MCk+PjBdfDA7cj1vO3JldHVybiBufDB9cmV0dXJuIDB9ZnVuY3Rpb24gZHIoYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wLGU9MCxmPTAsZz0wLGg9MCxpPTA7aT1yO3I9ciszMnwwO2I9aSsyNHwwO2M9aSsyMHwwO2g9aSsxNnwwO2Y9aSsxMnwwO2Q9aSs4fDA7ZT1pKzR8MDtnPWk7a1tjPj4yXT1hO2E9a1tjPj4yXXwwO2lmKChrW2M+PjJdfDApPDEyOCl7a1tiPj4yXT0oa1syMzg0KyhhPj41PDwyKT4+Ml0mMTw8KGtbYz4+Ml0mMzEpfDApPT0wJjE7aD1rW2I+PjJdfDA7cj1pO3JldHVybiBofDB9aWYoKGF8MCk+PTQxOTQzMDQpe2tbYj4+Ml09MTtoPWtbYj4+Ml18MDtyPWk7cmV0dXJuIGh8MH1rW2g+PjJdPWtbYz4+Ml08PDEwfDEwMjM7a1tmPj4yXT0wO2tbZD4+Ml09NDA1O2tbZT4+Ml09MDt3aGlsZSgxKXtpZigoa1tkPj4yXXwwKTwoa1tlPj4yXXwwKSlicmVhaztrW2c+PjJdPSgoa1tkPj4yXXwwKSsoa1tlPj4yXXwwKXwwKS8yfDA7YT1rW2c+PjJdfDA7aWYoKGtbaD4+Ml18MCk+Pj4wPj0oa1syNDAwKyhrW2c+PjJdPDwyKT4+Ml18MCk+Pj4wKXtrW2Y+PjJdPWE7a1tlPj4yXT0oa1tnPj4yXXwwKSsxO2NvbnRpbnVlfWVsc2V7a1tkPj4yXT1hLTE7Y29udGludWV9fWtbYj4+Ml09KGtbYz4+Ml18MCk+Pj4wPj0oKChrWzI0MDArKGtbZj4+Ml08PDIpPj4yXXwwKT4+PjEwKSsoa1syNDAwKyhrW2Y+PjJdPDwyKT4+Ml0mMTAyMyl8MCk+Pj4wJjE7aD1rW2I+PjJdfDA7cj1pO3JldHVybiBofDB9ZnVuY3Rpb24gZXIoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTAsaT0wLGo9MDtqPXI7cj1yKzMyfDA7ZD1qKzI0fDA7Yz1qKzIwfDA7ZT1qKzE2fDA7Zj1qKzEyfDA7aD1qKzh8MDtnPWorNHwwO2k9ajtrW2M+PjJdPWE7a1tlPj4yXT1iO2E6ZG8gaWYoKGtbKGtbYz4+Ml18MCkrOD4+Ml18MCk+MCl7a1tmPj4yXT1rWyhrW2M+PjJdfDApKzEyPj4yXTtrW2g+PjJdPTA7a1tnPj4yXT0oa1soa1tjPj4yXXwwKSs4Pj4yXXwwKS0xO3doaWxlKDEpe2lmKChrW2c+PjJdfDApPChrW2g+PjJdfDApKWJyZWFrIGE7a1tpPj4yXT0oKGtbZz4+Ml18MCkrKGtbaD4+Ml18MCl8MCkvMnwwO2lmKChrW2U+PjJdfDApPT0oa1soa1tmPj4yXXwwKSsoa1tpPj4yXTw8Mik+PjJdfDApKWJyZWFrO2M9a1tpPj4yXXwwO2lmKChrW2U+PjJdfDApPihrWyhrW2Y+PjJdfDApKyhrW2k+PjJdPDwyKT4+Ml18MCkpe2tbaD4+Ml09YysxO2NvbnRpbnVlfWVsc2V7a1tnPj4yXT1jLTE7Y29udGludWV9fWtbZD4+Ml09MTtpPWtbZD4+Ml18MDtyPWo7cmV0dXJuIGl8MH13aGlsZSgwKTtrW2Q+PjJdPTA7aT1rW2Q+PjJdfDA7cj1qO3JldHVybiBpfDB9ZnVuY3Rpb24gZnIoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxpPTAsaj0wLG09MCxuPTAsbz0wLHA9MCxxPTAscz0wLHQ9MCx1PTA7dD1yO3I9cis2NHwwO2c9dCs0OHwwO2g9dCs0NHwwO2k9dCs0MHwwO2U9dCszNnwwO3U9dCszMnwwO3E9dCsyOHwwO3M9dCsyNHwwO249dCsyMHwwO2Y9dCsxNnwwO2o9dCsxMnwwO3A9dCs4fDA7bT10KzR8MDtvPXQ7a1toPj4yXT1hO2tbaT4+Ml09YjtrW2U+PjJdPWM7a1t1Pj4yXT1kO2tbcT4+Ml09a1tlPj4yXTtrW3M+PjJdPShrW3E+PjJdfDApKyhrW3U+PjJdfDApO2tbZj4+Ml09MDt3aGlsZSgxKXtpZigoa1txPj4yXXwwKT4+PjA+PShrW3M+PjJdfDApPj4+MClicmVhazt1PWtbcT4+Ml18MDtrW3E+PjJdPXUrMTtrW24+PjJdPWxbdT4+MF07ZG8gaWYoKGtbbj4+Ml18MCk+PTE5Mil7a1tuPj4yXT1sWzI1NTYzKygoa1tuPj4yXXwwKS0xOTIpPj4wXTt3aGlsZSgxKXtpZigoa1txPj4yXXwwKSE9KGtbcz4+Ml18MCkpYj0oKGxba1txPj4yXT4+MF18MCkmMTkyfDApPT0xMjg7ZWxzZSBiPTA7ZD1rW24+PjJdfDA7aWYoIWIpYnJlYWs7dT1rW3E+PjJdfDA7a1txPj4yXT11KzE7a1tuPj4yXT0oZDw8NikrKDYzJihsW3U+PjBdfDApKX1pZigoKGR8MCk+PTEyOD8oa1tuPj4yXSYtMjA0OHwwKSE9NTUyOTY6MCk/KGtbbj4+Ml0mLTJ8MCkhPTY1NTM0OjApYnJlYWs7a1tuPj4yXT02NTUzM313aGlsZSgwKTt1PWRyKGtbbj4+Ml18MCl8MDtpZigodXwwKT09KGtbaT4+Ml18MCkpY29udGludWU7aWYoYnIoa1tuPj4yXXwwKXwwKWNvbnRpbnVlO2tbZj4+Ml09KGtbZj4+Ml18MCkrMX1pZihrW2Y+PjJdfDApe3U9VmQoa1soa1toPj4yXXwwKSsxMj4+Ml18MCwoa1soa1toPj4yXXwwKSs4Pj4yXXwwKSsoa1tmPj4yXXwwKTw8Mil8MDtrW2o+PjJdPXU7aWYoIShrW2o+PjJdfDApKXtrW2c+PjJdPTc7dT1rW2c+PjJdfDA7cj10O3JldHVybiB1fDB9a1twPj4yXT1rWyhrW2g+PjJdfDApKzg+PjJdO2tbcT4+Ml09a1tlPj4yXTt3aGlsZSgxKXtpZigoa1txPj4yXXwwKT4+PjA+PShrW3M+PjJdfDApPj4+MClicmVhazt1PWtbcT4+Ml18MDtrW3E+PjJdPXUrMTtrW24+PjJdPWxbdT4+MF07ZG8gaWYoKGtbbj4+Ml18MCk+PTE5Mil7a1tuPj4yXT1sWzI1NTYzKygoa1tuPj4yXXwwKS0xOTIpPj4wXTt3aGlsZSgxKXtpZigoa1txPj4yXXwwKSE9KGtbcz4+Ml18MCkpYj0oKGxba1txPj4yXT4+MF18MCkmMTkyfDApPT0xMjg7ZWxzZSBiPTA7ZD1rW24+PjJdfDA7aWYoIWIpYnJlYWs7dT1rW3E+PjJdfDA7a1txPj4yXT11KzE7a1tuPj4yXT0oZDw8NikrKDYzJihsW3U+PjBdfDApKX1pZigoKGR8MCk+PTEyOD8oa1tuPj4yXSYtMjA0OHwwKSE9NTUyOTY6MCk/KGtbbj4+Ml0mLTJ8MCkhPTY1NTM0OjApYnJlYWs7a1tuPj4yXT02NTUzM313aGlsZSgwKTt1PWRyKGtbbj4+Ml18MCl8MDtpZigodXwwKT09KGtbaT4+Ml18MCkpY29udGludWU7aWYoYnIoa1tuPj4yXXwwKXwwKWNvbnRpbnVlO2tbbT4+Ml09MDt3aGlsZSgxKXtpZigoa1ttPj4yXXwwKT49KGtbcD4+Ml18MCkpYnJlYWs7aWYoKGtbKGtbaj4+Ml18MCkrKGtbbT4+Ml08PDIpPj4yXXwwKT49KGtbbj4+Ml18MCkpYnJlYWs7a1ttPj4yXT0oa1ttPj4yXXwwKSsxfWtbbz4+Ml09a1twPj4yXTt3aGlsZSgxKXtpZigoa1tvPj4yXXwwKTw9KGtbbT4+Ml18MCkpYnJlYWs7a1soa1tqPj4yXXwwKSsoa1tvPj4yXTw8Mik+PjJdPWtbKGtbaj4+Ml18MCkrKChrW28+PjJdfDApLTE8PDIpPj4yXTtrW28+PjJdPShrW28+PjJdfDApKy0xfWtbKGtbaj4+Ml18MCkrKGtbbT4+Ml08PDIpPj4yXT1rW24+PjJdO2tbcD4+Ml09KGtbcD4+Ml18MCkrMX1rWyhrW2g+PjJdfDApKzEyPj4yXT1rW2o+PjJdO2tbKGtbaD4+Ml18MCkrOD4+Ml09a1twPj4yXX1rW2c+PjJdPTA7dT1rW2c+PjJdfDA7cj10O3JldHVybiB1fDB9ZnVuY3Rpb24gZ3IoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wO2c9cjtyPXIrMTZ8MDtoPWcrMTJ8MDtkPWcrOHwwO2U9Zys0fDA7Zj1nO2tbaD4+Ml09YTtrW2Q+PjJdPWI7a1tlPj4yXT1jO2tbZj4+Ml09a1soa1toPj4yXXwwKSs0Pj4yXTt3ZyhrW2g+PjJdfDApO2lmKCEoKGtbZD4+Ml18MCkhPTA/KGtbKGtbZj4+Ml18MCkrNDg+PjJdfDApPT0wOjApKXtoPWtbZj4+Ml18MDtoPWgrNDh8MDtoPWtbaD4+Ml18MDtyPWc7cmV0dXJuIGh8MH1oPWtbZD4+Ml18MDtoPUNoKDAsaCwoKGh8MCk8MCk8PDMxPj4zMSl8MDtrWyhrW2Y+PjJdfDApKzQ4Pj4yXT1oO2tbKGtbZj4+Ml18MCkrNTI+PjJdPWtbZT4+Ml07aD1rW2Y+PjJdfDA7aD1oKzQ4fDA7aD1rW2g+PjJdfDA7cj1nO3JldHVybiBofDB9ZnVuY3Rpb24gaHIoYSl7YT1hfDA7dmFyIGI9MCxjPTA7Yz1yO3I9cisxNnwwO2I9YztrW2I+PjJdPWE7cj1jO3JldHVybiAobFsoa1tiPj4yXXwwKSs2OD4+MF18MHwwKT09MnwwfWZ1bmN0aW9uIGlyKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wO2U9cjtyPXIrMTZ8MDtqPWUrMTJ8MDtoPWUrOHwwO2c9ZSs0fDA7Zj1lO2tbaj4+Ml09YTtrW2g+PjJdPWI7a1tnPj4yXT1jO2tbZj4+Ml09ZDtpW2tbZj4+Ml0+PjBdPTA7ZD1lY1trWyhrW2o+PjJdfDApKzM2Pj4yXSYyNTVdKGtbaj4+Ml18MCxrW2g+PjJdfDAsa1tnPj4yXXwwLGtbZj4+Ml18MCl8MDtyPWU7cmV0dXJuIGR8MH1mdW5jdGlvbiBqcihhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTA7ZD1yO3I9cisxNnwwO2I9ZCs0fDA7Yz1kO2tbYj4+Ml09YTthPWN1KGtbYj4+Ml18MCl8MDtrW2M+PjJdPWE7aWYoIShpW2tbYz4+Ml0+PjBdfDApKXtyPWQ7cmV0dXJufWlba1tjPj4yXT4+MF09MDtpZigoZHUoa1tiPj4yXXwwKXwwKTw9MSl7cj1kO3JldHVybn1ldShrW2M+PjJdfDApfDA7cj1kO3JldHVybn1mdW5jdGlvbiBrcihhLGIsYyxkLGUsZixnKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDt2YXIgaD0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wLEU9MCxGPTAsRz0wLEg9MCxJPTAsSj0wLEs9MCxMPTA7Sz1yO3I9cisxMTJ8MDtxPUsrOTZ8MDtzPUsrOTJ8MDt0PUsrODh8MDt1PUsrODR8MDt2PUsrODB8MDtMPUsrNzZ8MDt3PUsrNzJ8MDt4PUsrNjh8MDttPUsrNjR8MDtDPUsrNjB8MDtEPUsrNTZ8MDtHPUsrNTJ8MDtBPUsrNDh8MDtFPUsrNDR8MDtoPUsrNDB8MDtJPUsrMzZ8MDtCPUsrMzJ8MDtIPUsrMjh8MDtuPUsrMjR8MDtGPUsrMjB8MDtwPUsrMTZ8MDtsPUsrMTJ8MDtvPUsrOHwwO3k9Sys0fDA7ej1LO2tbcz4+Ml09YTtrW3Q+PjJdPWI7a1t1Pj4yXT1jO2tbdj4+Ml09ZDtrW0w+PjJdPWU7a1t3Pj4yXT1mO2tbeD4+Ml09ZztrW0M+PjJdPTA7a1tEPj4yXT0wO2tbRz4+Ml09MDtrW0E+PjJdPTA7a1tFPj4yXT0wO2tbST4+Ml09MDtrW0I+PjJdPTA7a1tIPj4yXT0oa1tMPj4yXSYxfDApPT0wJjE7Yz1DdCgpfDA7a1tuPj4yXT1jO2tbRj4+Ml09NDA5NjtrW3A+PjJdPTA7a1tsPj4yXT0wO2M9KER0KGtbcz4+Ml18MCl8MCkrNyYtODtrW2g+PjJdPWM7a1trW3Q+PjJdPj4yXT0wO2RvIGlmKCgoa1tMPj4yXSYyfDApIT0wPyhrW0E+PjJdPTEsKGtbdT4+Ml18MCkhPTApOjApPyhpW2tbdT4+Ml0+PjBdfDApIT0wOjApe0w9QWgoMCxrW3U+PjJdfDApfDA7a1tJPj4yXT1MO2lmKGtbST4+Ml18MCl7TD1UZihrW0k+PjJdfDApfDA7a1tCPj4yXT1MO2tbdT4+Ml09MDticmVha31rW3E+PjJdPTc7TD1rW3E+PjJdfDA7cj1LO3JldHVybiBMfDB9d2hpbGUoMCk7aWYoKGtbdT4+Ml18MCkhPTA/KGlba1t1Pj4yXT4+MF18MCkhPTA6MCl7a1tCPj4yXT0oa1soa1tzPj4yXXwwKSs4Pj4yXXwwKSsxO0w9a1tCPj4yXTw8MTtMPU1oKDAsTCwoKEx8MCk8MCk8PDMxPj4zMSl8MDtrW0k+PjJdPUw7aWYoIShrW0k+PjJdfDApKXtrW3E+PjJdPTc7TD1rW3E+PjJdfDA7cj1LO3JldHVybiBMfDB9aVtrW0k+PjJdPj4wXT0wO0w9aXIoa1tzPj4yXXwwLGtbdT4+Ml18MCxrW0I+PjJdfDAsa1tJPj4yXXwwKXwwO2tbRD4+Ml09TDtMPVRmKGtbST4+Ml18MCl8MDtrW0I+PjJdPUw7TD0oVGYoa1t1Pj4yXXwwKXwwKSsxfDA7TD0oa1t1Pj4yXXwwKStMfDA7a1twPj4yXT1MO2tbbz4+Ml09TDt3aGlsZSgxKXtlPWtbbz4+Ml18MDtpZighKGlba1tvPj4yXT4+MF18MCkpYnJlYWs7TD0oVGYoZSl8MCkrMXwwO2tbbz4+Ml09KGtbbz4+Ml18MCkrTDtMPShUZihrW28+PjJdfDApfDApKzF8MDtrW28+PjJdPShrW28+PjJdfDApK0x9a1tsPj4yXT1lKzEtKGtbcD4+Ml18MCk7aWYoKGtbRD4+Ml18MCk9PTA/KChrW0I+PjJdfDApKzh8MCk+KGtbKGtbcz4+Ml18MCkrOD4+Ml18MCk6MCl7TD15dCg1MTAwNil8MDtrW0Q+PjJdPUx9aWYoa1tEPj4yXXwwKXtiZygwLGtbST4+Ml18MCk7a1txPj4yXT1rW0Q+PjJdO0w9a1txPj4yXXwwO3I9SztyZXR1cm4gTHwwfX1MPXVnKDIyNCsoKGtbbj4+Ml18MCkrNyYtOCkrKChrWyhrW3M+PjJdfDApKzQ+PjJdfDApKzcmLTgpKyhrW2g+PjJdPDwxKSsoa1tCPj4yXXwwKSsxKyhrW2w+PjJdfDApKyhrW0I+PjJdfDApKzgrMisoa1tCPj4yXXwwKSs0KzJ8MCwwKXwwO2tbbT4+Ml09TDtpZighKGtbbT4+Ml18MCkpe2JnKDAsa1tJPj4yXXwwKTtrW3E+PjJdPTc7TD1rW3E+PjJdfDA7cj1LO3JldHVybiBMfDB9a1tDPj4yXT1rW20+PjJdO0w9KGtbbT4+Ml18MCkrMjI0fDA7a1ttPj4yXT1MO2tbKGtbQz4+Ml18MCkrMjEyPj4yXT1MO0w9KGtbbT4+Ml18MCkrKChrW24+PjJdfDApKzcmLTgpfDA7a1ttPj4yXT1MO2tbKGtbQz4+Ml18MCkrNjQ+PjJdPUw7TD0oa1ttPj4yXXwwKSsoKGtbKGtbcz4+Ml18MCkrND4+Ml18MCkrNyYtOCl8MDtrW20+PjJdPUw7a1soa1tDPj4yXXwwKSs3Mj4+Ml09TDtMPShrW20+PjJdfDApKyhrW2g+PjJdfDApfDA7a1ttPj4yXT1MO2tbKGtbQz4+Ml18MCkrNjg+PjJdPUw7TD0oa1ttPj4yXXwwKSsoa1toPj4yXXwwKXwwO2tbbT4+Ml09TDtrWyhrW0M+PjJdfDApKzE3Nj4+Ml09TDtpZihrW0k+PjJdfDApe0w9KGtbbT4+Ml18MCkrKChrW0I+PjJdfDApKzErKGtbbD4+Ml18MCkpfDA7a1ttPj4yXT1MO2tbKGtbQz4+Ml18MCkrMTgwPj4yXT1MO2JTKGtbKGtbQz4+Ml18MCkrMTc2Pj4yXXwwLGtbST4+Ml18MCxrW0I+PjJdfDApfDA7aWYoa1tsPj4yXXwwKWJTKChrWyhrW0M+PjJdfDApKzE3Nj4+Ml18MCkrKChrW0I+PjJdfDApKzEpfDAsa1twPj4yXXwwLGtbbD4+Ml18MCl8MDtiUyhrWyhrW0M+PjJdfDApKzE4MD4+Ml18MCxrW0k+PjJdfDAsa1tCPj4yXXwwKXwwO2U9KGtbKGtbQz4+Ml18MCkrMTgwPj4yXXwwKSsoa1tCPj4yXXwwKXwwO2Q9MjU5ODk7YT1lKzEwfDA7ZG97aVtlPj4wXT1pW2Q+PjBdfDA7ZT1lKzF8MDtkPWQrMXwwfXdoaWxlKChlfDApPChhfDApKTtrWyhrW0M+PjJdfDApKzIyMD4+Ml09KGtbKGtbQz4+Ml18MCkrMTgwPj4yXXwwKSsoKGtbQj4+Ml18MCkrOCsxKTtiUyhrWyhrW0M+PjJdfDApKzIyMD4+Ml18MCxrW0k+PjJdfDAsa1tCPj4yXXwwKXwwO0w9KGtbKGtbQz4+Ml18MCkrMjIwPj4yXXwwKSsoa1tCPj4yXXwwKXwwO2lbTD4+MF09aVsyNTk5OV18MDtpW0wrMT4+MF09aVsyNmUzXXwwO2lbTCsyPj4wXT1pWzI2MDAxXXwwO2lbTCszPj4wXT1pWzI2MDAyXXwwO2lbTCs0Pj4wXT1pWzI2MDAzXXwwO2JnKDAsa1tJPj4yXXwwKX1rW2tbQz4+Ml0+PjJdPWtbcz4+Ml07a1soa1tDPj4yXXwwKSsxNTI+PjJdPWtbdz4+Ml07ZG8gaWYoKGtbdT4+Ml18MCkhPTA/KGlba1t1Pj4yXT4+MF18MCkhPTA6MCl7a1t5Pj4yXT0wO0w9Y3Moa1tzPj4yXXwwLGtbKGtbQz4+Ml18MCkrMTc2Pj4yXXwwLGtbKGtbQz4+Ml18MCkrNjQ+PjJdfDAsa1t3Pj4yXXwwLHkpfDA7a1tEPj4yXT1MO2tbRT4+Ml09a1t5Pj4yXSYxO2lmKCEoa1tEPj4yXXwwKSl7TD1scyhrWyhrW0M+PjJdfDApKzY0Pj4yXXwwKXwwO2tbej4+Ml09TDtkbyBpZigoa1tFPj4yXXwwKT09MD8oa3Moa1tDPj4yXXwwKSwoa1tGPj4yXXwwKT4+PjA8KGtbKGtbQz4+Ml18MCkrMTU2Pj4yXXwwKT4+PjApOjApaWYoKGtbKGtbQz4+Ml18MCkrMTU2Pj4yXXwwKT4+PjA+ODE5Mil7a1tGPj4yXT04MTkyO2JyZWFrfWVsc2V7a1tGPj4yXT1rWyhrW0M+PjJdfDApKzE1Nj4+Ml07YnJlYWt9d2hpbGUoMCk7TD0oU2Yoa1t1Pj4yXXwwLDI2MDA1LDApfDApJjI1NTtpWyhrW0M+PjJdfDApKzE0Pj4wXT1MO2lmKChrW3o+PjJdJjgxOTJ8MCk9PTA/KFNmKGtbdT4+Ml18MCwyNjAxMiwwKXwwKT09MDowKWJyZWFrO2tbdz4+Ml09a1t3Pj4yXXwxO0o9MzZ9fWVsc2UgSj0zNjt3aGlsZSgwKTtpZigoSnwwKT09MzYpe2tbRz4+Ml09MTtpWyhrW0M+PjJdfDApKzE3Pj4wXT0xO2lbKGtbQz4+Ml18MCkrMTg+PjBdPTQ7aVsoa1tDPj4yXXwwKSsxND4+MF09MTtrW0U+PjJdPWtbdz4+Ml0mMX1pZighKGtbRD4+Ml18MCkpe0w9ZGooa1tDPj4yXXwwLEYsLTEpfDA7a1tEPj4yXT1MfWlmKCEoa1tEPj4yXXwwKSl7a1t2Pj4yXT0oa1t2Pj4yXXwwKSs3Ji04O0w9RnQoa1tGPj4yXXwwLGtbdj4+Ml18MCwoKGtbQT4+Ml18MCkhPTBeMSkmMSwoa1tBPj4yXXwwKSE9MF4xPzE4NjowLGtbQz4+Ml18MCxrWyhrW0M+PjJdfDApKzIxMj4+Ml18MCl8MDtrW0Q+PjJdPUx9aWYoa1tEPj4yXXwwKXt5cihrWyhrW0M+PjJdfDApKzY0Pj4yXXwwKTtqaihrWyhrW0M+PjJdfDApKzIwOD4+Ml18MCk7VWQoa1tDPj4yXXwwKTtrW3E+PjJdPWtbRD4+Ml07TD1rW3E+PjJdfDA7cj1LO3JldHVybiBMfDB9aVsoa1tDPj4yXXwwKSs2Pj4wXT1rW0g+PjJdO2tbKGtbQz4+Ml18MCkrMTY0Pj4yXT0xMDczNzQxODIzO2lbKGtbQz4+Ml18MCkrMTM+PjBdPWtbRz4+Ml07aVsoa1tDPj4yXXwwKSs0Pj4wXT1rW0c+PjJdO2lbKGtbQz4+Ml18MCkrMTk+PjBdPWlbKGtbQz4+Ml18MCkrMTM+PjBdfDA7aVsoa1tDPj4yXXwwKSsxNj4+MF09a1tBPj4yXTtpWyhrW0M+PjJdfDApKzE1Pj4wXT1rW0U+PjJdO2lbKGtbQz4+Ml18MCkrNz4+MF09aVsoa1tDPj4yXXwwKSsxMz4+MF18MDtpZighKGlbKGtbQz4+Ml18MCkrNz4+MF18MCkpe2lbKGtbQz4+Ml18MCkrOD4+MF09MTtpWyhrW0M+PjJdfDApKzk+PjBdPTA7aVsoa1tDPj4yXXwwKSsxMj4+MF09MjtpWyhrW0M+PjJdfDApKzExPj4wXT0zNDtpWyhrW0M+PjJdfDApKzEwPj4wXT0yfWpbKGtbQz4+Ml18MCkrMTQ4Pj4xXT1rW3Y+PjJdO0w9KGtbQz4+Ml18MCkrMTY4fDA7a1tMPj4yXT0tMTtrW0wrND4+Ml09LTE7a3Moa1tDPj4yXXwwKTtpZihrW0g+PjJdfDApe2lmKGtbQT4+Ml18MClpWyhrW0M+PjJdfDApKzU+PjBdPTR9ZWxzZSBpWyhrW0M+PjJdfDApKzU+PjBdPTI7a1soa1tDPj4yXXwwKSsyMDQ+PjJdPWtbeD4+Ml07a1trW3Q+PjJdPj4yXT1rW0M+PjJdO2tbcT4+Ml09MDtMPWtbcT4+Ml18MDtyPUs7cmV0dXJuIEx8MH1mdW5jdGlvbiBscihhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wO2Q9cjtyPXIrMTZ8MDtlPWQrOHwwO2Y9ZDtrW2U+PjJdPWE7YT1mO2tbYT4+Ml09YjtrW2ErND4+Ml09YztiPWY7Yz1rW2IrND4+Ml18MDthPShrW2U+PjJdfDApKzEzNnwwO2tbYT4+Ml09a1tiPj4yXTtrW2ErND4+Ml09YztraihrW2U+PjJdfDApO3I9ZDtyZXR1cm59ZnVuY3Rpb24gbXIoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wO2g9cjtyPXIrMTZ8MDtkPWgrMTJ8MDtlPWgrOHwwO2Y9aCs0fDA7Zz1oO2tbZD4+Ml09YTtrW2U+PjJdPWI7a1tmPj4yXT1jO2tbZz4+Ml09MDtkUyhrW2Y+PjJdfDAsMCxrW2U+PjJdfDApfDA7aWYoIShrW2tbKGtbZD4+Ml18MCkrNjQ+PjJdPj4yXXwwKSl7Zz1rW2c+PjJdfDA7cj1oO3JldHVybiBnfDB9YT1vcyhrWyhrW2Q+PjJdfDApKzY0Pj4yXXwwLGtbZj4+Ml18MCxrW2U+PjJdfDAsMCwwKXwwO2tbZz4+Ml09YTtrW2c+PjJdPShrW2c+PjJdfDApPT01MjI/MDphO2c9a1tnPj4yXXwwO3I9aDtyZXR1cm4gZ3wwfWZ1bmN0aW9uIG5yKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MDtiPXI7cj1yKzE2fDA7ZD1iKzR8MDtjPWI7a1tkPj4yXT1hO2tbYz4+Ml09a1tkPj4yXTthPUJ0KChrWyhrW2M+PjJdfDApKzQ+PjJdfDApKzM4MHwwKXwwO3I9YjtyZXR1cm4gYXwwfWZ1bmN0aW9uIG9yKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MDtmPXI7cj1yKzE2fDA7ZD1mKzEyfDA7aD1mKzh8MDtnPWYrNHwwO2U9ZjtrW2Q+PjJdPWE7a1toPj4yXT1iO2tbZz4+Ml09YztrWyhrW2Q+PjJdfDApKzE4ND4+Ml09a1toPj4yXTtrWyhrW2Q+PjJdfDApKzE4OD4+Ml09a1tnPj4yXTtpZighKGtba1soa1tkPj4yXXwwKSs2ND4+Ml0+PjJdfDApKXtyPWY7cmV0dXJufWtbZT4+Ml09KGtbZD4+Ml18MCkrMTg0O2J0KGtbKGtbZD4+Ml18MCkrNjQ+PjJdfDAsMTUsa1tlPj4yXXwwKTtyPWY7cmV0dXJufWZ1bmN0aW9uIHByKGEpe2E9YXwwO3ZhciBiPTAsYz0wO2M9cjtyPXIrMTZ8MDtiPWM7a1tiPj4yXT1hO3I9YztyZXR1cm4gaVsoa1tiPj4yXXwwKSsxNT4+MF18MH1mdW5jdGlvbiBxcihhKXthPWF8MDt2YXIgYj0wLGM9MDtjPXI7cj1yKzE2fDA7Yj1jO2tbYj4+Ml09YTtyPWM7cmV0dXJuIChsW2tbYj4+Ml0+PjBdfDApPDwyNHwobFsoa1tiPj4yXXwwKSsxPj4wXXwwKTw8MTZ8KGxbKGtbYj4+Ml18MCkrMj4+MF18MCk8PDh8KGxbKGtbYj4+Ml18MCkrMz4+MF18MCl8MH1mdW5jdGlvbiBycihhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTA7ZD1yO3I9cisxNnwwO2I9ZCs0fDA7Yz1kO2tbYj4+Ml09YTtrW2M+PjJdPWtbKGtbYj4+Ml18MCkrMjA4Pj4yXTtnaygpO3NyKGtbYj4+Ml18MCk7aVsoa1tiPj4yXXwwKSs0Pj4wXT0wO3RyKGtbKGtbYj4+Ml18MCkrMjE2Pj4yXXwwLGxbKGtbYj4+Ml18MCkrMTA+PjBdfDAsa1soa1tiPj4yXXwwKSsxNjA+PjJdfDAsa1tjPj4yXXwwKXwwO2tbKGtbYj4+Ml18MCkrMjE2Pj4yXT0wO2hqKGtbYj4+Ml18MCk7YT1rW2I+PjJdfDA7aWYoaVsoa1tiPj4yXXwwKSsxNj4+MF18MCl1cihhKTtlbHNle2lmKGtba1thKzY4Pj4yXT4+Ml18MCl7YT1rW2I+PjJdfDA7d3IoYSx2cihrW2I+PjJdfDApfDApfDB9eHIoa1tiPj4yXXwwKX1oaygpO3lyKGtbKGtbYj4+Ml18MCkrNjg+PjJdfDApO3lyKGtbKGtbYj4+Ml18MCkrNjQ+PjJdfDApO2pqKGtbYz4+Ml18MCk7enIoa1soa1tiPj4yXXwwKSsyMTI+PjJdfDApO1VkKGtbYj4+Ml18MCk7cj1kO3JldHVybiAwfWZ1bmN0aW9uIHNyKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MCxlPTA7ZD1yO3I9cisxNnwwO2U9ZCs4fDA7Yj1kKzR8MDtjPWQ7a1tlPj4yXT1hO2tbYj4+Ml09a1soa1tlPj4yXXwwKSsxNDQ+PjJdO3doaWxlKDEpe2lmKCEoa1tiPj4yXXwwKSlicmVhaztrW2M+PjJdPWtbKGtbYj4+Ml18MCkrMTI+PjJdO1VkKGtbYj4+Ml18MCk7a1tiPj4yXT1rW2M+PjJdfXI9ZDtyZXR1cm59ZnVuY3Rpb24gdHIoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTAsbT0wLG49MCxvPTA7bz1yO3I9ciszMnwwO2U9bysyNHwwO2Y9bysyMHwwO2c9bysxNnwwO2g9bysxMnwwO249bys4fDA7bT1vKzR8MDtqPW87a1tlPj4yXT1hO2tbZj4+Ml09YjtrW2c+PjJdPWM7a1toPj4yXT1kO2tbbj4+Ml09MDtpZighKGtbZT4+Ml18MCkpe2Q9a1tuPj4yXXwwO3I9bztyZXR1cm4gZHwwfWtbbT4+Ml09MDtkPSRzKGtbKGtbZT4+Ml18MCkrND4+Ml18MCw0KXwwO2tbbj4+Ml09ZDtkbyBpZighKGtbbj4+Ml18MCkpe2lmKCEobFsoa1tlPj4yXXwwKSs0Mz4+MF18MCkpaVsoa1tlPj4yXXwwKSs0Mz4+MF09MTtkPWF0KGtbZT4+Ml18MCwwLDAsMCxrW2Y+PjJdfDAsa1tnPj4yXXwwLGtbaD4+Ml18MCwwLDApfDA7a1tuPj4yXT1kO2lmKCEoa1tuPj4yXXwwKSl7a1tqPj4yXT0tMTtidChrWyhrW2U+PjJdfDApKzQ+PjJdfDAsMTAsaik7aWYoKGtbaj4+Ml18MCkhPTEpe2tbbT4+Ml09MTticmVha31kPShrW2U+PjJdfDApKzE2fDA7Yj1rW2QrND4+Ml18MDtpZigoYnwwKT4wfChifDApPT0wJihrW2Q+PjJdfDApPj4+MD49MCljdChrW2U+PjJdfDAsMCwwKX19d2hpbGUoMCk7ZHQoa1tlPj4yXXwwLGtbbT4+Ml18MCk7eXIoa1soa1tlPj4yXXwwKSs4Pj4yXXwwKTtpZihrW20+PjJdfDApe2drKCk7SHIoa1trW2U+PjJdPj4yXXwwLGtbKGtbZT4+Ml18MCkrMTA4Pj4yXXwwLDApfDA7aGsoKX1VZChrWyhrW2U+PjJdfDApKzMyPj4yXXwwKTtVZChrW2U+PjJdfDApO2Q9a1tuPj4yXXwwO3I9bztyZXR1cm4gZHwwfWZ1bmN0aW9uIHVyKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MCxlPTAsZj0wO2U9cjtyPXIrMTZ8MDtkPWUrOHwwO2M9ZSs0fDA7Yj1lO2tbZD4+Ml09YTt6aihrWyhrW2Q+PjJdfDApKzYwPj4yXXwwKTtrWyhrW2Q+PjJdfDApKzYwPj4yXT0wO0NyKGtbZD4+Ml18MCk7Zj0oTHIoa1tkPj4yXXwwKXwwKSE9MDthPWtbZD4+Ml18MDtpZighZil7aWYoIShpW2ErND4+MF18MCkpe2lmKGtba1soa1tkPj4yXXwwKSs2ND4+Ml0+PjJdfDApYT1scyhrWyhrW2Q+PjJdfDApKzY0Pj4yXXwwKXwwO2Vsc2UgYT0wO2tbYj4+Ml09YTtpZighKDAhPShrW2I+PjJdJjIwNDh8MCk/MT09KGxbKGtbZD4+Ml18MCkrNT4+MF0mNXwwKTowKSl5cihrWyhrW2Q+PjJdfDApKzY4Pj4yXXwwKTtmPVByKGtbZD4+Ml18MCwwKXwwO2tbYz4+Ml09ZjtpZigoa1tjPj4yXXwwKSE9MD8obFsoa1tkPj4yXXwwKSsxNz4+MF18MCk9PTY6MClpWyhrW2Q+PjJdfDApKzE4Pj4wXT01O2lbKGtbZD4+Ml18MCkrMTk+PjBdPTA7aVsoa1tkPj4yXXwwKSsxNz4+MF09MH19ZWxzZXtfcyhrW2ErMjE2Pj4yXXwwKTtpWyhrW2Q+PjJdfDApKzE3Pj4wXT0wfWlmKCEoa1soa1tkPj4yXXwwKSs0ND4+Ml18MCkpe2Y9a1tkPj4yXXwwO2Y9Zis4MHwwO2M9ZjtrW2M+PjJdPTA7Zj1mKzR8MDtrW2Y+PjJdPTA7Zj1rW2Q+PjJdfDA7Zj1mKzg4fDA7Yz1mO2tbYz4+Ml09MDtmPWYrNHwwO2tbZj4+Ml09MDtmPWtbZD4+Ml18MDtmPWYrMjB8MDtpW2Y+PjBdPTA7cj1lO3JldHVybn1hPWtbZD4+Ml18MDtpZighKGxbKGtbZD4+Ml18MCkrMTM+PjBdfDApKXtoaihhKTtpWyhrW2Q+PjJdfDApKzE5Pj4wXT0wO2lbKGtbZD4+Ml18MCkrMTc+PjBdPTB9ZWxzZSBpWyhrW2Q+PjJdfDApKzE3Pj4wXT0oa1trW2ErNjg+PjJdPj4yXXwwKSE9MD8wOjE7a1soa1tkPj4yXXwwKSs0ND4+Ml09MDtmPWtbZD4+Ml18MDtmPWYrODB8MDtjPWY7a1tjPj4yXT0wO2Y9Zis0fDA7a1tmPj4yXT0wO2Y9a1tkPj4yXXwwO2Y9Zis4OHwwO2M9ZjtrW2M+PjJdPTA7Zj1mKzR8MDtrW2Y+PjJdPTA7Zj1rW2Q+PjJdfDA7Zj1mKzIwfDA7aVtmPj4wXT0wO3I9ZTtyZXR1cm59ZnVuY3Rpb24gdnIoYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wO2Q9cjtyPXIrMTZ8MDtiPWQrNHwwO2M9ZDtrW2I+PjJdPWE7a1tjPj4yXT0wO2lmKCEoaVsoa1tiPj4yXXwwKSs3Pj4wXXwwKSl7YT1GcihrWyhrW2I+PjJdfDApKzY4Pj4yXXwwLDIpfDA7a1tjPj4yXT1hfWlmKGtbYz4+Ml18MCl7Yz1rW2M+PjJdfDA7cj1kO3JldHVybiBjfDB9YT1maihrWyhrW2I+PjJdfDApKzY4Pj4yXXwwLChrW2I+PjJdfDApKzg4fDApfDA7a1tjPj4yXT1hO2M9a1tjPj4yXXwwO3I9ZDtyZXR1cm4gY3wwfWZ1bmN0aW9uIHdyKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MDtlPXI7cj1yKzE2fDA7Yz1lKzh8MDtkPWUrNHwwO2Y9ZTtrW2M+PjJdPWE7a1tkPj4yXT1iO2tbZj4+Ml09a1tkPj4yXSYyNTU7aWYoISgoa1tmPj4yXXwwKT09MTN8KGtbZj4+Ml18MCk9PTEwKSl7Zj1rW2Q+PjJdfDA7cj1lO3JldHVybiBmfDB9a1soa1tjPj4yXXwwKSs0ND4+Ml09a1tkPj4yXTtpWyhrW2M+PjJdfDApKzE3Pj4wXT02O2Y9a1tkPj4yXXwwO3I9ZTtyZXR1cm4gZnwwfWZ1bmN0aW9uIHhyKGEpe2E9YXwwO3ZhciBiPTAsYz0wO2M9cjtyPXIrMTZ8MDtiPWM7a1tiPj4yXT1hO2RvIGlmKChsWyhrW2I+PjJdfDApKzE3Pj4wXXwwKSE9Nj8obFsoa1tiPj4yXXwwKSsxNz4+MF18MCkhPTA6MCl7aWYoKGxbKGtbYj4+Ml18MCkrMTc+PjBdfDApPj0yKXtnaygpO0FyKGtbYj4+Ml18MCl8MDtoaygpO2JyZWFrfWlmKCEoaVsoa1tiPj4yXXwwKSs0Pj4wXXwwKSlCcihrW2I+PjJdfDAsMCwwKXwwfXdoaWxlKDApO3VyKGtbYj4+Ml18MCk7cj1jO3JldHVybn1mdW5jdGlvbiB5cihhKXthPWF8MDt2YXIgYj0wLGM9MDtjPXI7cj1yKzE2fDA7Yj1jO2tbYj4+Ml09YTtpZighKGtba1tiPj4yXT4+Ml18MCkpe3I9YztyZXR1cm59YmNba1soa1trW2I+PjJdPj4yXXwwKSs0Pj4yXSYyNTVdKGtbYj4+Ml18MCl8MDtrW2tbYj4+Ml0+PjJdPTA7cj1jO3JldHVybn1mdW5jdGlvbiB6cihhKXthPWF8MDt2YXIgYj0wLGM9MDtiPXI7cj1yKzE2fDA7Yz1iO2tbYz4+Ml09YTtfYltrWzE2MD4+Ml0mMjU1XShrWyhrW2M+PjJdfDApKzQ0Pj4yXXwwKTtyPWI7cmV0dXJufWZ1bmN0aW9uIEFyKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTA7Zz1yO3I9ciszMnwwO2I9ZysxNnwwO2M9ZysxMnwwO2U9Zys4fDA7Zj1nKzR8MDtkPWc7a1tjPj4yXT1hO2tbZT4+Ml09MDthPWtbYz4+Ml18MDtpZigobFsoa1tjPj4yXXwwKSsxNz4+MF18MCk9PTYpe2tbYj4+Ml09a1thKzQ0Pj4yXTtmPWtbYj4+Ml18MDtyPWc7cmV0dXJuIGZ8MH1pZigobFthKzE3Pj4wXXwwKTw9MSl7a1tiPj4yXT0wO2Y9a1tiPj4yXXwwO3I9ZztyZXR1cm4gZnwwfWg9KExyKGtbYz4+Ml18MCl8MCkhPTA7YT1rW2M+PjJdfDA7ZG8gaWYoaCl7aD1kcyhhLDIsLTEpfDA7a1tlPj4yXT1oO2g9QnIoa1tjPj4yXXwwLGxbKGtbYz4+Ml18MCkrMjA+PjBdfDAsMCl8MDtrW2Y+PjJdPWg7aWYoIShrW2U+PjJdfDApKWtbZT4+Ml09a1tmPj4yXX1lbHNle2lmKChrW2tbYSs2OD4+Ml0+PjJdfDApIT0wPyhsWyhrW2M+PjJdfDApKzE3Pj4wXXwwKSE9MjowKXtoPWVzKGtbYz4+Ml18MCwwKXwwO2tbZT4+Ml09aDticmVha31rW2Q+PjJdPWxbKGtbYz4+Ml18MCkrMTc+PjBdO2g9QnIoa1tjPj4yXXwwLDAsMCl8MDtrW2U+PjJdPWg7aWYoKGtbZD4+Ml18MCk+Mj8oaVsoa1tjPj4yXXwwKSsxNj4+MF18MCk9PTA6MCl7a1soa1tjPj4yXXwwKSs0ND4+Ml09NDtpWyhrW2M+PjJdfDApKzE3Pj4wXT02O2tbYj4+Ml09a1tlPj4yXTtoPWtbYj4+Ml18MDtyPWc7cmV0dXJuIGh8MH19d2hpbGUoMCk7aD13cihrW2M+PjJdfDAsa1tlPj4yXXwwKXwwO2tbYj4+Ml09aDtoPWtbYj4+Ml18MDtyPWc7cmV0dXJuIGh8MH1mdW5jdGlvbiBCcihhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLG09MCxuPTA7bj1yO3I9ciszMnwwO2Y9bisyNHwwO2c9bisyMHwwO2Q9bisxNnwwO2g9bisxMnwwO2o9bis4fDA7bT1uKzR8MDtlPW47a1tnPj4yXT1hO2tbZD4+Ml09YjtrW2g+PjJdPWM7a1tqPj4yXT0wO2tbbT4+Ml09MDtpZigobFsoa1tnPj4yXXwwKSsxNz4+MF18MCk8Mj8obFsoa1tnPj4yXXwwKSsxOD4+MF18MCk8MjowKXtrW2Y+PjJdPTA7bT1rW2Y+PjJdfDA7cj1uO3JldHVybiBtfDB9Q3Ioa1tnPj4yXXwwKTthOmRvIGlmKGtba1soa1tnPj4yXXwwKSs2OD4+Ml0+PjJdfDApe2E9KERyKGtbKGtbZz4+Ml18MCkrNjg+PjJdfDApfDApIT0wO2M9a1tnPj4yXXwwO2lmKGEpe3lyKGtbYys2OD4+Ml18MCk7YnJlYWt9Yj1rW2c+PjJdfDA7aWYoKGxbYys1Pj4wXXwwKT09Myl7ZT1iKzgwfDA7aWYoISgoa1tlPj4yXXwwKT09MCYoa1tlKzQ+PjJdfDApPT0wKSl7ZT1FcihrWyhrW2c+PjJdfDApKzY4Pj4yXXwwLDAsMCl8MDtrW2o+PjJdPWU7aWYoKGtbaj4+Ml18MCk9PTA/KGxbKGtbZz4+Ml18MCkrOD4+MF18MCkhPTA6MCl7ZT1GcihrWyhrW2c+PjJdfDApKzY4Pj4yXXwwLGxbKGtbZz4+Ml18MCkrMTI+PjBdfDApfDA7a1tqPj4yXT1lfX1lbHNlIGtbaj4+Ml09MDtlPShrW2c+PjJdfDApKzgwfDA7a1tlPj4yXT0wO2tbZSs0Pj4yXT0wO2JyZWFrfWRvIGlmKChsW2IrNT4+MF18MCkhPTEpe2lmKChsWyhrW2c+PjJdfDApKzQ+PjBdfDApIT0wPyhsWyhrW2c+PjJdfDApKzU+PjBdfDApIT01OjApYnJlYWs7a1tlPj4yXT0oKGlbKGtbZz4+Ml18MCkrMTM+PjBdfDApIT0wXjEpJjE7eXIoa1soa1tnPj4yXXwwKSs2OD4+Ml18MCk7aWYoIShrW2U+PjJdfDApKWJyZWFrIGE7ZT1IcihrW2tbZz4+Ml0+PjJdfDAsa1soa1tnPj4yXXwwKSsxODA+PjJdfDAsbFsoa1tnPj4yXXwwKSs5Pj4wXXwwKXwwO2tbaj4+Ml09ZTticmVhayBhfXdoaWxlKDApO2lmKGtbZD4+Ml18MCljPTE7ZWxzZSBjPShsWyhrW2c+PjJdfDApKzEzPj4wXXwwKSE9MDtlPUdyKGtbZz4+Ml18MCxjJjEpfDA7a1tqPj4yXT1lO2U9KGtbZz4+Ml18MCkrODB8MDtrW2U+PjJdPTA7a1tlKzQ+PjJdPTB9d2hpbGUoMCk7emooa1soa1tnPj4yXXwwKSs2MD4+Ml18MCk7a1soa1tnPj4yXXwwKSs2MD4+Ml09MDtrWyhrW2c+PjJdfDApKzQ4Pj4yXT0wO2lmKCEoa1tqPj4yXXwwKSl7ZT0oSXIoa1tnPj4yXXwwLGtbaD4+Ml18MCl8MCkhPTA7Yz1rWyhrW2c+PjJdfDApKzIxMj4+Ml18MDtpZihlKUpyKGMpO2Vsc2UgS3IoYyk7cGooa1soa1tnPj4yXXwwKSsyMTI+PjJdfDAsa1soa1tnPj4yXXwwKSsyOD4+Ml18MCl9aWYoIShMcihrW2c+PjJdfDApfDApKXtpZigoa1tqPj4yXXwwKT09MCYoa1toPj4yXXwwKSE9MD8oa1soa1tnPj4yXXwwKSszNj4+Ml18MCk+Pj4wPihrWyhrW2c+PjJdfDApKzI4Pj4yXXwwKT4+PjA6MCl7ZT1OcihrW2c+PjJdfDAsa1soa1tnPj4yXXwwKSsyOD4+Ml18MCl8MDtrW2o+PjJdPWV9fWVsc2V7ZT1NcihrWyhrW2c+PjJdfDApKzIxNj4+Ml18MCl8MDtrW20+PjJdPWV9aWYoKGtbaj4+Ml18MCk9PTAmKGtbaD4+Ml18MCkhPTA/KGtba1soa1tnPj4yXXwwKSs2ND4+Ml0+PjJdfDApIT0wOjApe2g9S2koa1soa1tnPj4yXXwwKSs2ND4+Ml18MCwyMiwwKXwwO2tbaj4+Ml09aDtrW2o+PjJdPShrW2o+PjJdfDApPT0xMj8wOmh9ZG8gaWYoIShpWyhrW2c+PjJdfDApKzQ+PjBdfDApKXtpZigoTHIoa1tnPj4yXXwwKXwwKSE9MD8oT3Ioa1soa1tnPj4yXXwwKSsyMTY+PjJdfDAsMCl8MCk9PTA6MClicmVhaztoPVByKGtbZz4+Ml18MCwxKXwwO2tbbT4+Ml09aDtpWyhrW2c+PjJdfDApKzE5Pj4wXT0wfXdoaWxlKDApO2lbKGtbZz4+Ml18MCkrMTc+PjBdPTE7aVsoa1tnPj4yXXwwKSsyMD4+MF09MDtrW2Y+PjJdPShrW2o+PjJdfDApPT0wP2tbbT4+Ml18MDprW2o+PjJdfDA7bT1rW2Y+PjJdfDA7cj1uO3JldHVybiBtfDB9ZnVuY3Rpb24gQ3IoYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wO2Q9cjtyPXIrMTZ8MDtiPWQrNHwwO2M9ZDtrW2I+PjJdPWE7a1tjPj4yXT0wO3doaWxlKDEpe2lmKChrW2M+PjJdfDApPj0oa1soa1tiPj4yXXwwKSsxMDQ+PjJdfDApKWJyZWFrO3pqKGtbKGtbKGtbYj4+Ml18MCkrMTAwPj4yXXwwKSsoKGtbYz4+Ml18MCkqNDh8MCkrMTY+PjJdfDApO2tbYz4+Ml09KGtbYz4+Ml18MCkrMX1pZighKChpWyhrW2I+PjJdfDApKzQ+PjBdfDApIT0wPyhEcihrWyhrW2I+PjJdfDApKzcyPj4yXXwwKXwwKT09MDowKSl5cihrWyhrW2I+PjJdfDApKzcyPj4yXXwwKTtVZChrWyhrW2I+PjJdfDApKzEwMD4+Ml18MCk7a1soa1tiPj4yXXwwKSsxMDA+PjJdPTA7a1soa1tiPj4yXXwwKSsxMDQ+PjJdPTA7a1soa1tiPj4yXXwwKSs1Nj4+Ml09MDtyPWQ7cmV0dXJufWZ1bmN0aW9uIERyKGEpe2E9YXwwO3ZhciBiPTAsYz0wO2M9cjtyPXIrMTZ8MDtiPWM7a1tiPj4yXT1hO3I9YztyZXR1cm4gKGtba1tiPj4yXT4+Ml18MCk9PTQwMjh8MH1mdW5jdGlvbiBFcihhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wO2Q9cjtyPXIrMTZ8MDtlPWQrOHwwO2Y9ZDtrW2U+PjJdPWE7YT1mO2tbYT4+Ml09YjtrW2ErND4+Ml09YzthPWY7YT1ZYltrWyhrW2tbZT4+Ml0+PjJdfDApKzE2Pj4yXSYyNTVdKGtbZT4+Ml18MCxrW2E+PjJdfDAsa1thKzQ+PjJdfDApfDA7cj1kO3JldHVybiBhfDB9ZnVuY3Rpb24gRnIoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTA7Yz1yO3I9cisxNnwwO2U9Yys0fDA7ZD1jO2tbZT4+Ml09YTtrW2Q+PjJdPWI7YT1nY1trWyhrW2tbZT4+Ml0+PjJdfDApKzIwPj4yXSYyNTVdKGtbZT4+Ml18MCxrW2Q+PjJdfDApfDA7cj1jO3JldHVybiBhfDB9ZnVuY3Rpb24gR3IoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wO2g9cjtyPXIrMzJ8MDtjPWgrMjR8MDtkPWgrMjB8MDtmPWgrMTZ8MDtlPWgrOHwwO2c9aDtrW2M+PjJdPWE7a1tkPj4yXT1iO2tbZj4+Ml09MDthPShrW2M+PjJdfDApKzgwfDA7aWYoISgoa1thPj4yXXwwKSE9MHwoa1thKzQ+PjJdfDApIT0wKSl7Zz1rW2Y+PjJdfDA7cj1oO3JldHVybiBnfDB9aj0oa1tjPj4yXXwwKSsxNjh8MDtiPWtbais0Pj4yXXwwO2E9ZTtrW2E+PjJdPWtbaj4+Ml07a1thKzQ+PjJdPWI7YT1lO2I9a1soa1tjPj4yXXwwKSs2OD4+Ml18MDtpZigoa1tkPj4yXXwwKSE9MHwoa1thPj4yXXwwKT09MCYoa1thKzQ+PjJdfDApPT0wKXtqPUVyKGIsMCwwKXwwO2tbZj4+Ml09an1lbHNle2o9U2coYiwyNTg0NiwyOCwwLDApfDA7a1tmPj4yXT1qfWlmKChrW2Y+PjJdfDApPT0wPyhpWyhrW2M+PjJdfDApKzc+PjBdfDApPT0wOjApe2o9RnIoa1soa1tjPj4yXXwwKSs2OD4+Ml18MCwxNnxsWyhrW2M+PjJdfDApKzEyPj4wXSl8MDtrW2Y+PjJdPWp9aj1lO2Q9a1tqKzQ+PjJdfDA7aWYoISgoa1tmPj4yXXwwKT09MCYoKGR8MCk+MHwoZHwwKT09MCYoa1tqPj4yXXwwKT4+PjA+MCkpKXtqPWtbZj4+Ml18MDtyPWg7cmV0dXJuIGp8MH1qPWZqKGtbKGtbYz4+Ml18MCkrNjg+PjJdfDAsZyl8MDtrW2Y+PjJdPWo7aWYoa1tmPj4yXXwwKXtqPWtbZj4+Ml18MDtyPWg7cmV0dXJuIGp8MH1hPWtbZys0Pj4yXXwwO2o9ZTtkPWtbais0Pj4yXXwwO2lmKCEoKGF8MCk+KGR8MCl8KChhfDApPT0oZHwwKT8oa1tnPj4yXXwwKT4+PjA+KGtbaj4+Ml18MCk+Pj4wOjApKSl7aj1rW2Y+PjJdfDA7cj1oO3JldHVybiBqfDB9aj1lO2o9RXIoa1soa1tjPj4yXXwwKSs2OD4+Ml18MCxrW2o+PjJdfDAsa1tqKzQ+PjJdfDApfDA7a1tmPj4yXT1qO2o9a1tmPj4yXXwwO3I9aDtyZXR1cm4ganwwfWZ1bmN0aW9uIEhyKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wO2Q9cjtyPXIrMTZ8MDtnPWQrOHwwO2Y9ZCs0fDA7ZT1kO2tbZz4+Ml09YTtrW2Y+PjJdPWI7a1tlPj4yXT1jO2I9WWJba1soa1tnPj4yXXwwKSsyOD4+Ml0mMjU1XShrW2c+PjJdfDAsa1tmPj4yXXwwLGtbZT4+Ml18MCl8MDtyPWQ7cmV0dXJuIGJ8MH1mdW5jdGlvbiBJcihhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTA7Zj1yO3I9cisxNnwwO2M9Zis4fDA7ZD1mKzR8MDtlPWY7a1tkPj4yXT1hO2tbZT4+Ml09YjtkbyBpZihsWyhrW2Q+PjJdfDApKzEzPj4wXXwwKXtpZighKGtbZT4+Ml18MCkpe2tbYz4+Ml09MDticmVha31pZihrW2tbKGtbZD4+Ml18MCkrNjQ+PjJdPj4yXXwwKXthPShWcihrWyhrW2Q+PjJdfDApKzIxMj4+Ml18MCl8MCk+PTI1JjE7a1tjPj4yXT1hO2JyZWFrfWVsc2V7a1tjPj4yXT0wO2JyZWFrfX1lbHNlIGtbYz4+Ml09MTt3aGlsZSgwKTtyPWY7cmV0dXJuIGtbYz4+Ml18MH1mdW5jdGlvbiBKcihhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTA7ZD1yO3I9cisxNnwwO2I9ZCs0fDA7Yz1kO2tbYj4+Ml09YTt3aGlsZSgxKXthPWtba1tiPj4yXT4+Ml18MDtrW2M+PjJdPWE7aWYoIWEpYnJlYWs7cWooa1tjPj4yXXwwKX1yPWQ7cmV0dXJufWZ1bmN0aW9uIEtyKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MDtkPXI7cj1yKzE2fDA7Yj1kKzR8MDtjPWQ7a1tiPj4yXT1hO2tbYz4+Ml09a1trW2I+PjJdPj4yXTt3aGlsZSgxKXtpZighKGtbYz4+Ml18MCkpYnJlYWs7YT0oa1tjPj4yXXwwKSsyNHwwO2pbYT4+MV09KG1bYT4+MV18MCkmLTEzO2tbYz4+Ml09a1soa1tjPj4yXXwwKSszMj4+Ml19a1soa1tiPj4yXXwwKSs4Pj4yXT1rWyhrW2I+PjJdfDApKzQ+PjJdO3I9ZDtyZXR1cm59ZnVuY3Rpb24gTHIoYSl7YT1hfDA7dmFyIGI9MCxjPTA7Yz1yO3I9cisxNnwwO2I9YztrW2I+PjJdPWE7cj1jO3JldHVybiAoa1soa1tiPj4yXXwwKSsyMTY+PjJdfDApIT0wfDB9ZnVuY3Rpb24gTXIoYSl7YT1hfDA7dmFyIGI9MCxjPTA7Yz1yO3I9cisxNnwwO2I9YztrW2I+PjJdPWE7aWYoIShpWyhrW2I+PjJdfDApKzQ0Pj4wXXwwKSl7cj1jO3JldHVybiAwfVVyKGtbYj4+Ml18MCwwLDEpO2lbKGtbYj4+Ml18MCkrNDQ+PjBdPTA7a1soa1tiPj4yXXwwKSsxMDQ+PjJdPTA7aVsoa1tiPj4yXXwwKSs0Nz4+MF09MDtyPWM7cmV0dXJuIDB9ZnVuY3Rpb24gTnIoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTAsaT0wLGo9MCxtPTAsbj0wO2o9cjtyPXIrNDh8MDtjPWorMzJ8MDtkPWorMjh8MDtoPWorMjR8MDtlPWorOHwwO2Y9ajtpPWorMjB8MDtnPWorMTZ8MDtrW2M+PjJdPWE7a1tkPj4yXT1iO2tbaD4+Ml09MDtpZighKGtba1soa1tjPj4yXXwwKSs2ND4+Ml0+PjJdfDApKXtpPWtbaD4+Ml18MDtyPWo7cmV0dXJuIGl8MH1pZigobFsoa1tjPj4yXXwwKSsxNz4+MF18MHwwKTw0PyhsWyhrW2M+PjJdfDApKzE3Pj4wXXwwfDApIT0wOjApe2k9a1toPj4yXXwwO3I9ajtyZXR1cm4gaXwwfWtbaT4+Ml09a1soa1tjPj4yXXwwKSsxNjA+PjJdO2I9Zmooa1soa1tjPj4yXXwwKSs2ND4+Ml18MCxlKXwwO2tbaD4+Ml09YjtiPWtbaT4+Ml18MDtiPWtTKGJ8MCwoKGJ8MCk8MCk8PDMxPj4zMXwwLGtbZD4+Ml18MCwwKXwwO2E9ZjtrW2E+PjJdPWI7a1thKzQ+PjJdPUw7aWYoa1toPj4yXXwwKXtpPWtbaD4+Ml18MDtyPWo7cmV0dXJuIGl8MH1iPWU7YT1mO2lmKCEoKGtbYj4+Ml18MCkhPShrW2E+PjJdfDApPzE6KGtbYis0Pj4yXXwwKSE9KGtbYSs0Pj4yXXwwKSkpe2k9a1toPj4yXXwwO3I9ajtyZXR1cm4gaXwwfWI9ZTtuPWtbYis0Pj4yXXwwO2E9ZjttPWtbYSs0Pj4yXXwwO2lmKCEoKG58MCk+KG18MCl8KChufDApPT0obXwwKT8oa1tiPj4yXXwwKT4+PjA+KGtbYT4+Ml18MCk+Pj4wOjApKSl7Yj1lO209a1tpPj4yXXwwO209JFIoa1tiPj4yXXwwLGtbYis0Pj4yXXwwLG18MCwoKG18MCk8MCk8PDMxPj4zMXwwKXwwO2I9TDtuPWY7YT1rW24rND4+Ml18MDtpZigoYnwwKTwoYXwwKXwoKGJ8MCk9PShhfDApP20+Pj4wPD0oa1tuPj4yXXwwKT4+PjA6MCkpe2tbZz4+Ml09a1soa1tjPj4yXXwwKSsyMDg+PjJdO2RTKGtbZz4+Ml18MCwwLGtbaT4+Ml18MCl8MDthPWtbKGtbYz4+Ml18MCkrNjQ+PjJdfDA7Zz1rW2c+PjJdfDA7bT1rW2k+PjJdfDA7bj1rW2k+PjJdfDA7bj1fUihrW2Y+PjJdfDAsa1tmKzQ+PjJdfDAsbnwwLCgobnwwKTwwKTw8MzE+PjMxfDApfDA7bj1TZyhhLGcsbSxuLEwpfDA7a1toPj4yXT1ufX1lbHNle249ZjtuPUVyKGtbKGtbYz4+Ml18MCkrNjQ+PjJdfDAsa1tuPj4yXXwwLGtbbis0Pj4yXXwwKXwwO2tbaD4+Ml09bn1pZihrW2g+PjJdfDApe249a1toPj4yXXwwO3I9ajtyZXR1cm4gbnwwfWtbKGtbYz4+Ml18MCkrMzY+PjJdPWtbZD4+Ml07bj1rW2g+PjJdfDA7cj1qO3JldHVybiBufDB9ZnVuY3Rpb24gT3IoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wO2Y9cjtyPXIrMTZ8MDtjPWYrOHwwO2Q9Zis0fDA7ZT1mO2tbYz4+Ml09YTtrW2Q+PjJdPWI7aWYoa1tkPj4yXXwwKXtiPWtbYz4+Ml18MDtpZigoa1tkPj4yXXwwKT4wKXtTcihiLDMrKGpbKGtbYz4+Ml18MCkrNDA+PjFdfDApfDApO2lbKGtbYz4+Ml18MCkrNDM+PjBdPTE7a1tlPj4yXT0xO2U9a1tlPj4yXXwwO3I9ZjtyZXR1cm4gZXwwfWVsc2V7a1tlPj4yXT0obFtiKzQzPj4wXXwwKT09MCYxO2U9a1tlPj4yXXwwO3I9ZjtyZXR1cm4gZXwwfX1pZighKGlbKGtbYz4+Ml18MCkrNDM+PjBdfDApKXtrW2U+PjJdPTA7ZT1rW2U+PjJdfDA7cj1mO3JldHVybiBlfDB9aVsoa1tjPj4yXXwwKSs0Mz4+MF09MDtpZihScihrW2M+PjJdfDAsMysoalsoa1tjPj4yXXwwKSs0MD4+MV18MCl8MCl8MClpWyhrW2M+PjJdfDApKzQzPj4wXT0xO2tbZT4+Ml09KGxbKGtbYz4+Ml18MCkrNDM+PjBdfDApPT0wJjE7ZT1rW2U+PjJdfDA7cj1mO3JldHVybiBlfDB9ZnVuY3Rpb24gUHIoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wO2Y9cjtyPXIrMTZ8MDtjPWYrOHwwO2Q9Zis0fDA7ZT1mO2tbYz4+Ml09YTtrW2Q+PjJdPWI7a1tlPj4yXT0wO2lmKCEoa1trWyhrW2M+PjJdfDApKzY0Pj4yXT4+Ml18MCkpe2U9a1tlPj4yXXwwO3I9ZjtyZXR1cm4gZXwwfWlmKGxbKGtbYz4+Ml18MCkrMTQ+PjBdfDApYj0wO2Vsc2UgYj1RcihrWyhrW2M+PjJdfDApKzY0Pj4yXXwwLGtbZD4+Ml18MCl8MDtrW2U+PjJdPWI7aWYoKGxbKGtbYz4+Ml18MCkrMTg+PjBdfDB8MCk9PTUpe2U9a1tlPj4yXXwwO3I9ZjtyZXR1cm4gZXwwfWlbKGtbYz4+Ml18MCkrMTg+PjBdPWtbZD4+Ml07ZT1rW2U+PjJdfDA7cj1mO3JldHVybiBlfDB9ZnVuY3Rpb24gUXIoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTA7Yz1yO3I9cisxNnwwO2U9Yys0fDA7ZD1jO2tbZT4+Ml09YTtrW2Q+PjJdPWI7Yj1nY1trWyhrW2tbZT4+Ml0+PjJdfDApKzMyPj4yXSYyNTVdKGtbZT4+Ml18MCxrW2Q+PjJdfDApfDA7cj1jO3JldHVybiBifDB9ZnVuY3Rpb24gUnIoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MDtnPXI7cj1yKzE2fDA7Yz1nKzEyfDA7ZD1nKzh8MDtlPWcrNHwwO2Y9ZztrW2Q+PjJdPWE7a1tlPj4yXT1iO2lmKGlbKGtbZD4+Ml18MCkrNDM+PjBdfDApe2tbYz4+Ml09MDtmPWtbYz4+Ml18MDtyPWc7cmV0dXJuIGZ8MH1lbHNle2E9VHIoa1soa1tkPj4yXXwwKSs0Pj4yXXwwLGtbZT4+Ml18MCwxLDYpfDA7a1tmPj4yXT1hO2tbYz4+Ml09a1tmPj4yXTtmPWtbYz4+Ml18MDtyPWc7cmV0dXJuIGZ8MH1yZXR1cm4gMH1mdW5jdGlvbiBTcihhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MDtlPXI7cj1yKzE2fDA7Yz1lKzR8MDtkPWU7a1tjPj4yXT1hO2tbZD4+Ml09YjtpZihpWyhrW2M+PjJdfDApKzQzPj4wXXwwKXtyPWU7cmV0dXJufVRyKGtbKGtbYz4+Ml18MCkrND4+Ml18MCxrW2Q+PjJdfDAsMSw1KXwwO3I9ZTtyZXR1cm59ZnVuY3Rpb24gVHIoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxpPTA7ZT1yO3I9cisxNnwwO2k9ZSsxMnwwO2g9ZSs4fDA7Zz1lKzR8MDtmPWU7a1tpPj4yXT1hO2tbaD4+Ml09YjtrW2c+PjJdPWM7a1tmPj4yXT1kO2I9ZWNba1soa1trW2k+PjJdPj4yXXwwKSs1Nj4+Ml0mMjU1XShrW2k+PjJdfDAsa1toPj4yXXwwLGtbZz4+Ml18MCxrW2Y+PjJdfDApfDA7cj1lO3JldHVybiBifDB9ZnVuY3Rpb24gVXIoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTA7Zz1yO3I9cisxNnwwO2Q9Zys4fDA7ZT1nKzR8MDtmPWc7a1tkPj4yXT1hO2tbZT4+Ml09YjtrW2Y+PjJdPWM7aWYoaVsoa1tkPj4yXXwwKSs0Mz4+MF18MCl7cj1nO3JldHVybn1UcihrWyhrW2Q+PjJdfDApKzQ+PjJdfDAsa1tlPj4yXXwwLGtbZj4+Ml18MCw5KXwwO3I9ZztyZXR1cm59ZnVuY3Rpb24gVnIoYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wLGU9MCxmPTA7ZT1yO3I9cisxNnwwO2Y9ZSsxMnwwO2Q9ZSs4fDA7Yz1lKzR8MDtiPWU7a1tmPj4yXT1hO2tbYz4+Ml09MDthPW1qKGtbZj4+Ml18MCl8MDtrW2I+PjJdPWE7a1tkPj4yXT1rW2tbZj4+Ml0+PjJdO3doaWxlKDEpe2lmKCEoa1tkPj4yXXwwKSlicmVhaztrW2M+PjJdPShrW2M+PjJdfDApKzE7a1tkPj4yXT1rWyhrW2Q+PjJdfDApKzMyPj4yXX1pZighKGtbYj4+Ml18MCkpe2Y9MDtyPWU7cmV0dXJuIGZ8MH1kPWtbYz4+Ml18MDtkPWtTKGR8MCwoKGR8MCk8MCk8PDMxPj4zMXwwLDEwMCwwKXwwO2Y9a1tiPj4yXXwwO2Y9aVMoZHwwLEx8MCxmfDAsKChmfDApPDApPDwzMT4+MzF8MCl8MDtyPWU7cmV0dXJuIGZ8MH1mdW5jdGlvbiBXcihhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTA7Yj1yO3I9cisxNnwwO2Q9Yis0fDA7Yz1iO2tbZD4+Ml09YTtrW2M+PjJdPWtbZD4+Ml07YXMoa1tjPj4yXXwwKTtyPWI7cmV0dXJuIDB9ZnVuY3Rpb24gWHIoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaT0wLGo9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxzPTAsdD0wO3E9cjtyPXIrNjR8MDt0PXErNTJ8MDtzPXErNDh8MDtnPXErNDR8MDtoPXErOHwwO249cSs0MHwwO3A9cSszNnwwO209cSszMnwwO2k9cSsyOHwwO289cSsyNHwwO2Y9cTtqPXErMjB8MDtsPXErMTZ8MDtrW3Q+PjJdPWE7a1tzPj4yXT1iO2tbZz4+Ml09YztjPWg7a1tjPj4yXT1kO2tbYys0Pj4yXT1lO2tbbj4+Ml09a1t0Pj4yXTtrW3A+PjJdPWtbcz4+Ml07a1ttPj4yXT1rW2c+PjJdO2M9KGtbbj4+Ml18MCkrNDB8MDthPWg7Yj1oO2E6ZG8gaWYoKChrW2M+PjJdfDApIT0oa1thPj4yXXwwKT8xOihrW2MrND4+Ml18MCkhPShrW2ErND4+Ml18MCkpfChrW2I+PjJdfDApPT0wJihrW2IrND4+Ml18MCk9PTApe3Q9ZjtrW3Q+PjJdPTA7a1t0KzQ+PjJdPTA7a1tvPj4yXT1rWyhrW24+PjJdfDApKzE2Pj4yXTt3aGlsZSgxKXtpZighKGtbbz4+Ml18MCkpYnJlYWsgYTthPWY7cz1rWyhrW24+PjJdfDApKzQ+PjJdfDA7cz0kUihrW2E+PjJdfDAsa1thKzQ+PjJdfDAsc3wwLCgoc3wwKTwwKTw8MzE+PjMxfDApfDA7YT1MO3Q9aDtiPWtbdCs0Pj4yXXwwO2lmKCEoKGF8MCk8KGJ8MCl8KChhfDApPT0oYnwwKT9zPj4+MDw9KGtbdD4+Ml18MCk+Pj4wOjApKSlicmVhayBhO3M9a1soa1tuPj4yXXwwKSs0Pj4yXXwwO3Q9ZjtzPSRSKGtbdD4+Ml18MCxrW3QrND4+Ml18MCxzfDAsKChzfDApPDApPDwzMT4+MzF8MCl8MDt0PWY7a1t0Pj4yXT1zO2tbdCs0Pj4yXT1MO2tbbz4+Ml09a1trW28+PjJdPj4yXX19ZWxzZSBrW28+PjJdPWtbKGtbbj4+Ml18MCkrNDArOD4+Ml07d2hpbGUoMCk7cz1oO3Q9a1soa1tuPj4yXXwwKSs0Pj4yXXwwO3Q9alMoa1tzPj4yXXwwLGtbcys0Pj4yXXwwLHR8MCwoKHR8MCk8MCk8PDMxPj4zMXwwKXwwO2tbaT4+Ml09dDtkb3trW2o+PjJdPShrWyhrW24+PjJdfDApKzQ+PjJdfDApLShrW2k+PjJdfDApO2lmKChrW20+PjJdfDApPCgoa1soa1tuPj4yXXwwKSs0Pj4yXXwwKS0oa1tpPj4yXXwwKXwwKSlkPWtbbT4+Ml18MDtlbHNlIGQ9KGtbKGtbbj4+Ml18MCkrND4+Ml18MCktKGtbaT4+Ml18MCl8MDtrW2w+PjJdPWQ7YlMoa1twPj4yXXwwLChrW28+PjJdfDApKzQrKGtbaT4+Ml18MCl8MCxrW2w+PjJdfDApfDA7a1twPj4yXT0oa1twPj4yXXwwKSsoa1tsPj4yXXwwKTtrW20+PjJdPShrW20+PjJdfDApLShrW2o+PjJdfDApO2tbaT4+Ml09MDtpZigoa1ttPj4yXXwwKTwwKWJyZWFrO3Q9a1trW28+PjJdPj4yXXwwO2tbbz4+Ml09dH13aGlsZSgodHwwKSE9MCYoa1ttPj4yXXwwKT4wKTtpZighKGtbbz4+Ml18MCkpe209MDt0PTA7cz1rW24+PjJdfDA7cz1zKzQwfDA7cD1zO2tbcD4+Ml09bTtzPXMrNHwwO2tbcz4+Ml09dDtzPWtbbz4+Ml18MDt0PWtbbj4+Ml18MDt0PXQrNDB8MDt0PXQrOHwwO2tbdD4+Ml09cztyPXE7cmV0dXJuIDB9dD1oO209a1tnPj4yXXwwO209JFIoa1t0Pj4yXXwwLGtbdCs0Pj4yXXwwLG18MCwoKG18MCk8MCk8PDMxPj4zMXwwKXwwO3Q9TDtzPWtbbj4+Ml18MDtzPXMrNDB8MDtwPXM7a1twPj4yXT1tO3M9cys0fDA7a1tzPj4yXT10O3M9a1tvPj4yXXwwO3Q9a1tuPj4yXXwwO3Q9dCs0MHwwO3Q9dCs4fDA7a1t0Pj4yXT1zO3I9cTtyZXR1cm4gMH1mdW5jdGlvbiBZcihhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxpPTAsaj0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHM9MCx0PTAsdT0wO3U9cjtyPXIrNjR8MDtwPXUrNTJ8MDtmPXUrNDh8MDtnPXUrNDR8MDtxPXUrNDB8MDtzPXU7dD11KzM2fDA7bD11KzMyfDA7bz11KzI4fDA7aD11KzI0fDA7bT11KzIwfDA7aT11KzE2fDA7aj11KzEyfDA7bj11Kzh8MDtrW2Y+PjJdPWE7a1tnPj4yXT1iO2tbcT4+Ml09YztiPXM7a1tiPj4yXT1kO2tbYis0Pj4yXT1lO2tbdD4+Ml09a1tmPj4yXTtrW2w+PjJdPWtbcT4+Ml07a1tvPj4yXT1rW2c+PjJdO2lmKChrWyhrW3Q+PjJdfDApKzg+PjJdfDApPjA/KGU9a1txPj4yXXwwLGE9cyxhPSRSKGV8MCwoKGV8MCk8MCk8PDMxPj4zMXwwLGtbYT4+Ml18MCxrW2ErND4+Ml18MCl8MCxlPUwsYj1rWyhrW3Q+PjJdfDApKzg+PjJdfDAsYz0oKGJ8MCk8MCk8PDMxPj4zMSwoZXwwKT4oY3wwKXwoZXwwKT09KGN8MCkmYT4+PjA+Yj4+PjApOjApe3Q9YnMoa1t0Pj4yXXwwKXwwO2tbaD4+Ml09dDtpZighKGtbaD4+Ml18MCkpe3Q9czt0PVNnKGtbZj4+Ml18MCxrW2c+PjJdfDAsa1txPj4yXXwwLGtbdD4+Ml18MCxrW3QrND4+Ml18MCl8MDtrW2g+PjJdPXR9a1twPj4yXT1rW2g+PjJdO3Q9a1twPj4yXXwwO3I9dTtyZXR1cm4gdHwwfXdoaWxlKDEpe2lmKChrW2w+PjJdfDApPD0wKXtkPTE4O2JyZWFrfWtbbT4+Ml09a1soa1t0Pj4yXXwwKSsyNCs4Pj4yXTtoPShrW3Q+PjJdfDApKzI0fDA7Yj1rWyhrW3Q+PjJdfDApKzQ+PjJdfDA7Yj1qUyhrW2g+PjJdfDAsa1toKzQ+PjJdfDAsYnwwLCgoYnwwKTwwKTw8MzE+PjMxfDApfDA7a1tpPj4yXT1iO2lmKChrW2w+PjJdfDApPCgoa1soa1t0Pj4yXXwwKSs0Pj4yXXwwKS0oa1tpPj4yXXwwKXwwKSlkPWtbbD4+Ml18MDtlbHNlIGQ9KGtbKGtbdD4+Ml18MCkrND4+Ml18MCktKGtbaT4+Ml18MCl8MDtrW2o+PjJdPWQ7aWYoIShrW2k+PjJdfDApKXtiPVNkKDEyKygoa1soa1t0Pj4yXXwwKSs0Pj4yXXwwKS04KXwwKXwwO2tbbj4+Ml09YjtpZighKGtbbj4+Ml18MCkpe2Q9MTI7YnJlYWt9a1trW24+PjJdPj4yXT0wO2Q9a1tuPj4yXXwwO2lmKGtbbT4+Ml18MClrW2tbbT4+Ml0+PjJdPWQ7ZWxzZSBrWyhrW3Q+PjJdfDApKzE2Pj4yXT1kO2tbKGtbdD4+Ml18MCkrMjQrOD4+Ml09a1tuPj4yXX1iUygoa1soa1t0Pj4yXXwwKSsyNCs4Pj4yXXwwKSs0KyhrW2k+PjJdfDApfDAsa1tvPj4yXXwwLGtbaj4+Ml18MCl8MDtrW28+PjJdPShrW28+PjJdfDApKyhrW2o+PjJdfDApO2tbbD4+Ml09KGtbbD4+Ml18MCktKGtbaj4+Ml18MCk7aD1rW2o+PjJdfDA7Yj0oa1t0Pj4yXXwwKSsyNHwwO2E9YjtoPSRSKGtbYT4+Ml18MCxrW2ErND4+Ml18MCxofDAsKChofDApPDApPDwzMT4+MzF8MCl8MDtrW2I+PjJdPWg7a1tiKzQ+PjJdPUx9aWYoKGR8MCk9PTEyKXtrW3A+PjJdPTMwODI7dD1rW3A+PjJdfDA7cj11O3JldHVybiB0fDB9ZWxzZSBpZigoZHwwKT09MTgpe3E9a1txPj4yXXwwO3M9JFIocXwwLCgocXwwKTwwKTw8MzE+PjMxfDAsa1tzPj4yXXwwLGtbcys0Pj4yXXwwKXwwO2tbKGtbdD4+Ml18MCkrMTI+PjJdPXM7a1twPj4yXT0wO3Q9a1twPj4yXXwwO3I9dTtyZXR1cm4gdHwwfXJldHVybiAwfWZ1bmN0aW9uIFpyKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wO2U9cjtyPXIrMTZ8MDtnPWUrMTJ8MDtmPWU7ZD1lKzh8MDtrW2c+PjJdPWE7YT1mO2tbYT4+Ml09YjtrW2ErND4+Ml09YztrW2Q+PjJdPWtbZz4+Ml07YT1mO2lmKCEoKGtbYT4+Ml18MCk9PTAmKGtbYSs0Pj4yXXwwKT09MCkpe3I9ZTtyZXR1cm4gMH1hcyhrW2Q+PjJdfDApO2tbKGtbZD4+Ml18MCkrMTI+PjJdPTA7a1soa1tkPj4yXXwwKSsyNCs4Pj4yXT0wO2c9KGtbZD4+Ml18MCkrMjR8MDtrW2c+PjJdPTA7a1tnKzQ+PjJdPTA7a1soa1tkPj4yXXwwKSs0MCs4Pj4yXT0wO2c9KGtbZD4+Ml18MCkrNDB8MDtrW2c+PjJdPTA7a1tnKzQ+PjJdPTA7cj1lO3JldHVybiAwfWZ1bmN0aW9uIF9yKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MDtjPXI7cj1yKzE2fDA7a1tjKzQ+PjJdPWE7a1tjPj4yXT1iO3I9YztyZXR1cm4gMH1mdW5jdGlvbiAkcihhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTA7Yz1yO3I9cisxNnwwO2Y9Yys4fDA7ZT1jKzR8MDtkPWM7a1tmPj4yXT1hO2tbZT4+Ml09YjtrW2Q+PjJdPWtbZj4+Ml07ZD0oa1tkPj4yXXwwKSsyNHwwO2E9a1tkKzQ+PjJdfDA7Yj1rW2U+PjJdfDA7a1tiPj4yXT1rW2Q+PjJdO2tbYis0Pj4yXT1hO3I9YztyZXR1cm4gMH1mdW5jdGlvbiBhcyhhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTAsZT0wO2U9cjtyPXIrMTZ8MDtiPWUrOHwwO2M9ZSs0fDA7ZD1lO2tbYj4+Ml09YTtrW2M+PjJdPWtbKGtbYj4+Ml18MCkrMTY+PjJdO3doaWxlKDEpe2lmKCEoa1tjPj4yXXwwKSlicmVhaztrW2Q+PjJdPWtba1tjPj4yXT4+Ml07VWQoa1tjPj4yXXwwKTtrW2M+PjJdPWtbZD4+Ml19a1soa1tiPj4yXXwwKSsxNj4+Ml09MDtyPWU7cmV0dXJufWZ1bmN0aW9uIGJzKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTAsaT0wLGo9MCxsPTAsbT0wO2w9cjtyPXIrMTEyfDA7ZD1sKzk2fDA7aj1sKzkyfDA7aT1sKzg4fDA7ZT1sKzh8MDtnPWwrODR8MDtmPWw7aD1sKzgwfDA7a1tkPj4yXT1hO2tbaT4+Ml09a1tkPj4yXTthPWU7Yj1rW2Q+PjJdfDA7Yz1hKzcyfDA7ZG97a1thPj4yXT1rW2I+PjJdO2E9YSs0fDA7Yj1iKzR8MH13aGlsZSgoYXwwKTwoY3wwKSk7YT1rW2Q+PjJdfDA7Yz1hKzcyfDA7ZG97a1thPj4yXT0wO2E9YSs0fDB9d2hpbGUoKGF8MCk8KGN8MCkpO2M9Y3Moa1tlKzYwPj4yXXwwLGtbZSs2ND4+Ml18MCxrW2k+PjJdfDAsa1tlKzU2Pj4yXXwwLDApfDA7a1tqPj4yXT1jO2lmKCEoa1tqPj4yXXwwKSl7a1tnPj4yXT1rW2UrND4+Ml07Yz1mO2tbYz4+Ml09MDtrW2MrND4+Ml09MDtrW2g+PjJdPWtbZSsxNj4+Ml07d2hpbGUoMSl7aWYoIShrW2g+PjJdfDApKWJyZWFrO209ZjtiPWtbZz4+Ml18MDtiPSRSKGtbbT4+Ml18MCxrW20rND4+Ml18MCxifDAsKChifDApPDApPDwzMT4+MzF8MCl8MDttPUw7Yz1lKzI0fDA7YT1rW2MrND4+Ml18MDtpZigobXwwKT4oYXwwKXwoKG18MCk9PShhfDApP2I+Pj4wPihrW2M+PjJdfDApPj4+MDowKSl7Yz1lKzI0fDA7bT1mO209X1Ioa1tjPj4yXXwwLGtbYys0Pj4yXXwwLGtbbT4+Ml18MCxrW20rND4+Ml18MCl8MDtrW2c+PjJdPW19bT1mO209U2coa1tpPj4yXXwwLChrW2g+PjJdfDApKzR8MCxrW2c+PjJdfDAsa1ttPj4yXXwwLGtbbSs0Pj4yXXwwKXwwO2tbaj4+Ml09bTtpZihrW2o+PjJdfDApYnJlYWs7Yz1rW2c+PjJdfDA7bT1mO2M9JFIoa1ttPj4yXXwwLGtbbSs0Pj4yXXwwLGN8MCwoKGN8MCk8MCk8PDMxPj4zMXwwKXwwO209ZjtrW20+PjJdPWM7a1ttKzQ+PjJdPUw7a1toPj4yXT1rW2tbaD4+Ml0+PjJdfWlmKCEoa1tqPj4yXXwwKSlhcyhlKX1pZighKGtbaj4+Ml18MCkpe209a1tqPj4yXXwwO3I9bDtyZXR1cm4gbXwwfXlyKGtbaT4+Ml18MCk7YT1rW2Q+PjJdfDA7Yj1lO2M9YSs3MnwwO2Rve2tbYT4+Ml09a1tiPj4yXTthPWErNHwwO2I9Yis0fDB9d2hpbGUoKGF8MCk8KGN8MCkpO209a1tqPj4yXXwwO3I9bDtyZXR1cm4gbXwwfWZ1bmN0aW9uIGNzKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGk9MCxqPTAsbD0wLG09MDtnPXI7cj1yKzMyfDA7bT1nKzIwfDA7bD1nKzE2fDA7aj1nKzEyfDA7aT1nKzh8MDtoPWcrNHwwO2Y9ZztrW20+PjJdPWE7a1tsPj4yXT1iO2tbaj4+Ml09YztrW2k+PjJdPWQ7a1toPj4yXT1lO2I9aGNba1soa1ttPj4yXXwwKSsyND4+Ml0mMjU1XShrW20+PjJdfDAsa1tsPj4yXXwwLGtbaj4+Ml18MCxrW2k+PjJdJjU1NjkyNyxrW2g+PjJdfDApfDA7a1tmPj4yXT1iO3I9ZztyZXR1cm4ga1tmPj4yXXwwfWZ1bmN0aW9uIGRzKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxpPTAsaj0wLGw9MDtsPXI7cj1yKzMyfDA7aD1sKzI0fDA7ZD1sKzIwfDA7ZT1sKzE2fDA7aj1sKzEyfDA7Zj1sKzh8MDtnPWwrNHwwO2k9bDtrW2g+PjJdPWE7a1tkPj4yXT1iO2tbZT4+Ml09YztrW2o+PjJdPWtbKGtbaD4+Ml18MCkrNDQ+PjJdO2lmKGtbaj4+Ml18MCl7aj1rW2o+PjJdfDA7cj1sO3JldHVybiBqfDB9aWYoKGtbZT4+Ml18MCk+PShrWyhrW2g+PjJdfDApKzEwND4+Ml18MCkpe2o9a1tqPj4yXXwwO3I9bDtyZXR1cm4ganwwfWtbZz4+Ml09KGtbZT4+Ml18MCkrKChrW2Q+PjJdfDApPT0xPzA6MSk7a1tmPj4yXT1rW2c+PjJdO3doaWxlKDEpe2lmKChrW2Y+PjJdfDApPj0oa1soa1toPj4yXXwwKSsxMDQ+PjJdfDApKWJyZWFrO3pqKGtbKGtbKGtbaD4+Ml18MCkrMTAwPj4yXXwwKSsoKGtbZj4+Ml18MCkqNDh8MCkrMTY+PjJdfDApO2tbZj4+Ml09KGtbZj4+Ml18MCkrMX1rWyhrW2g+PjJdfDApKzEwND4+Ml09a1tnPj4yXTtpZigoa1tkPj4yXXwwKSE9MSl7aWYoKExyKGtbaD4+Ml18MCl8MCk9PTA/KGtba1soa1toPj4yXXwwKSs2OD4+Ml0+PjJdfDApPT0wOjApe2o9a1tqPj4yXXwwO3I9bDtyZXR1cm4ganwwfWlmKCEoa1tnPj4yXXwwKSlkPTA7ZWxzZSBkPShrWyhrW2g+PjJdfDApKzEwMD4+Ml18MCkrKCgoa1tnPj4yXXwwKS0xfDApKjQ4fDApfDA7a1tpPj4yXT1kO2k9QXMoa1toPj4yXXwwLGtbaT4+Ml18MCl8MDtrW2o+PjJdPWk7aj1rW2o+PjJdfDA7cj1sO3JldHVybiBqfDB9aWYoa1tnPj4yXXwwKXtqPWtbaj4+Ml18MDtyPWw7cmV0dXJuIGp8MH1pZighKGtba1soa1toPj4yXXwwKSs3Mj4+Ml0+PjJdfDApKXtqPWtbaj4+Ml18MDtyPWw7cmV0dXJuIGp8MH1pZihEcihrWyhrW2g+PjJdfDApKzcyPj4yXXwwKXwwKXtpPUVyKGtbKGtbaD4+Ml18MCkrNzI+PjJdfDAsMCwwKXwwO2tbaj4+Ml09aX1rWyhrW2g+PjJdfDApKzU2Pj4yXT0wO2o9a1tqPj4yXXwwO3I9bDtyZXR1cm4ganwwfWZ1bmN0aW9uIGVzKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxtPTAsbj0wLG89MCxwPTAscT0wLHM9MCx0PTA7dD1yO3I9cis2NHwwO3E9dCs4fDA7aj10KzU2fDA7bT10KzUyfDA7Zj10KzQ4fDA7Zz10O2Q9dCs0NHwwO2g9dCs0MHwwO2M9dCszNnwwO289dCszMnwwO3A9dCsyOHwwO3M9dCsyNHwwO2U9dCsyMHwwO249dCsxNnwwO2tbaj4+Ml09YTtrW20+PjJdPWI7a1tmPj4yXT1rW2tbaj4+Ml0+PjJdO2tbYz4+Ml09MDtrW3A+PjJdPTE7a1tzPj4yXT0wO2tbbj4+Ml09MDthPWZqKGtbKGtbaj4+Ml18MCkrNjg+PjJdfDAsZyl8MDtrW28+PjJdPWE7YTpkbyBpZighKGtbbz4+Ml18MCkpe2tbcz4+Ml09a1soa1tqPj4yXXwwKSsyMDg+PjJdO2E9ZnMoa1soa1tqPj4yXXwwKSs2OD4+Ml18MCxrW3M+PjJdfDAsKGtbKGtba1tqPj4yXT4+Ml18MCkrOD4+Ml18MCkrMXwwKXwwO2tbbz4+Ml09YTtpZigoa1tvPj4yXXwwKT09MD8oaVtrW3M+PjJdPj4wXXwwKSE9MDowKXtmPWdzKGtbZj4+Ml18MCxrW3M+PjJdfDAsMCxwKXwwO2tbbz4+Ml09Zn1rW3M+PjJdPTA7aWYoKGtbbz4+Ml18MCk9PTAmKGtbcD4+Ml18MCkhPTApe2Y9KGtbaj4+Ml18MCkrODB8MDtrW2Y+PjJdPTA7a1tmKzQ+PjJdPTA7a1tlPj4yXT1rW20+PjJdO2I6d2hpbGUoMSl7Zj1nO2Y9aHMoa1tqPj4yXXwwLGtbbT4+Ml18MCxrW2Y+PjJdfDAsa1tmKzQ+PjJdfDAsZCxjKXwwO2tbbz4+Ml09ZjtpZihrW28+PjJdfDApe2I9ODticmVha31pZigoa1tkPj4yXXwwKT09LTEpe2E9ZzthPV9SKGtbYT4+Ml18MCxrW2ErND4+Ml18MCxrWyhrW2o+PjJdfDApKzE1Nj4+Ml18MCwwKXwwO2Y9KGtbKGtbaj4+Ml18MCkrMTYwPj4yXXwwKSs4fDA7Zj1pUyhhfDAsTHwwLGZ8MCwoKGZ8MCk8MCk8PDMxPj4zMXwwKXwwO2tbZD4+Ml09Zn1pZighKChrW2Q+PjJdfDApIT0wfChrW20+PjJdfDApIT0wKT8oYT0oa1tqPj4yXXwwKSs4OHwwLGE9JFIoa1thPj4yXXwwLGtbYSs0Pj4yXXwwLGtbKGtbaj4+Ml18MCkrMTU2Pj4yXXwwLDApfDAsZj0oa1tqPj4yXXwwKSs4MHwwLChhfDApPT0oa1tmPj4yXXwwKT8oTHwwKT09KGtbZis0Pj4yXXwwKTowKTowKXtmPWc7YT0oa1tqPj4yXXwwKSs4MHwwO2E9X1Ioa1tmPj4yXXwwLGtbZis0Pj4yXXwwLGtbYT4+Ml18MCxrW2ErND4+Ml18MCl8MDtmPShrWyhrW2o+PjJdfDApKzE2MD4+Ml18MCkrOHwwO2Y9aVMoYXwwLEx8MCxmfDAsKChmfDApPDApPDwzMT4+MzF8MCl8MDtrW2Q+PjJdPWZ9Zj0oa1tqPj4yXXwwKSs4MHwwO2lmKChrW2YrND4+Ml18MCk9PTA/KGtbZj4+Ml18MCk9PShrWyhrW2o+PjJdfDApKzE1Nj4+Ml18MCk6MCl7Zj1OcihrW2o+PjJdfDAsa1tjPj4yXXwwKXwwO2tbbz4+Ml09ZjtpZihrW28+PjJdfDApYnJlYWsgYTtrWyhrW2o+PjJdfDApKzI4Pj4yXT1rW2M+PjJdfWtbaD4+Ml09MDt3aGlsZSgxKXtpZigoa1toPj4yXXwwKT4+PjA+PShrW2Q+PjJdfDApPj4+MCljb250aW51ZSBiO2lmKGtbZT4+Ml18MCl7aGooa1tqPj4yXXwwKTtrW2U+PjJdPTB9Zj1pcyhrW2o+PjJdfDAsKGtbaj4+Ml18MCkrODB8MCwwLDEsMCl8MDtrW28+PjJdPWY7aWYoa1tvPj4yXXwwKWJyZWFrO2tbbj4+Ml09KGtbbj4+Ml18MCkrMTtrW2g+PjJdPShrW2g+PjJdfDApKzF9aWYoKGtbbz4+Ml18MCkhPTEwMSl7Yj0yNjticmVha31iPWc7YT1rW2IrND4+Ml18MDtmPShrW2o+PjJdfDApKzgwfDA7a1tmPj4yXT1rW2I+PjJdO2tbZis0Pj4yXT1hfWlmKChifDApPT04KXtpZigoa1tvPj4yXXwwKSE9MTAxKWJyZWFrO2tbbz4+Ml09MDticmVha31lbHNlIGlmKChifDApPT0yNil7aWYoKGtbbz4+Ml18MCkhPTUyMilicmVhaztrW28+PjJdPTA7YnJlYWt9fX13aGlsZSgwKTtpWyhrW2o+PjJdfDApKzE5Pj4wXT1pWyhrW2o+PjJdfDApKzEzPj4wXXwwO2lmKCEoa1tvPj4yXXwwKSl7a1tzPj4yXT1rWyhrW2o+PjJdfDApKzIwOD4+Ml07aD1mcyhrWyhrW2o+PjJdfDApKzY4Pj4yXXwwLGtbcz4+Ml18MCwoa1soa1trW2o+PjJdPj4yXXwwKSs4Pj4yXXwwKSsxfDApfDA7a1tvPj4yXT1ofWRvIGlmKCEoa1tvPj4yXXwwKSl7aWYoKGxbKGtbaj4+Ml18MCkrMTc+PjBdfDApPDQ/KGxbKGtbaj4+Ml18MCkrMTc+PjBdfDApIT0wOjApYnJlYWs7aD1VZyhrW2o+PjJdfDAsMCl8MDtrW28+PjJdPWh9d2hpbGUoMCk7aWYoIShrW28+PjJdfDApKXtoPUJyKGtbaj4+Ml18MCwoaVtrW3M+PjJdPj4wXXwwKSE9MCYxLDApfDA7a1tvPj4yXT1ofWlmKChrW28+PjJdfDApPT0wPygoa1twPj4yXXwwKSE9MD8oaVtrW3M+PjJdPj4wXXwwKSE9MDowKTowKXtzPWpzKGtbaj4+Ml18MCxrW3M+PjJdfDApfDA7a1tvPj4yXT1zfWlmKCEoKGtbbT4+Ml18MCkhPTAmKGtbbj4+Ml18MCkhPTApKXtzPWtbaj4+Ml18MDtrcyhzKTtzPWtbbz4+Ml18MDtyPXQ7cmV0dXJuIHN8MH1zPWtbKGtbaj4+Ml18MCkrMTgwPj4yXXwwO2tbcT4+Ml09a1tuPj4yXTtrW3ErND4+Ml09czskZCg1MzksMjU4NzQscSk7cz1rW2o+PjJdfDA7a3Mocyk7cz1rW28+PjJdfDA7cj10O3JldHVybiBzfDB9ZnVuY3Rpb24gZnMoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxsPTAsbT0wLG49MCxvPTAscD0wO3A9cjtyPXIrNDh8MDtkPXArMzZ8MDtlPXArMzJ8MDtmPXArMjh8MDtnPXArMjR8MDttPXArMjB8MDtsPXArMTZ8MDtuPXA7aj1wKzEyfDA7bz1wKzh8MDtoPXArNDB8MDtrW2U+PjJdPWE7a1tmPj4yXT1iO2tbZz4+Ml09YztpW2tbZj4+Ml0+PjBdPTA7Yz1maihrW2U+PjJdfDAsbil8MDtrW20+PjJdPWM7Yj1uO2E9a1tiKzQ+PjJdfDA7aWYoKCgoKCghKDAhPShjfDApfCgoYXwwKTwwfChhfDApPT0wJihrW2I+PjJdfDApPj4+MDwxNikpPyhhPWtbZT4+Ml18MCxiPW4sYj1fUihrW2I+PjJdfDAsa1tiKzQ+PjJdfDAsMTYsMCl8MCxiPXBzKGEsYixMLGwpfDAsa1ttPj4yXT1iLDA9PShifDApKTowKT8hKChrW2w+PjJdfDApPT0wPzE6KGtbbD4+Ml18MCk+Pj4wPj0oa1tnPj4yXXwwKT4+PjApOjApPyhhPWtbZT4+Ml18MCxiPW4sYj1fUihrW2I+PjJdfDAsa1tiKzQ+PjJdfDAsMTIsMCl8MCxiPXBzKGEsYixMLGopfDAsa1ttPj4yXT1iLDA9PShifDApKTowKT8oYT1rW2U+PjJdfDAsYj1uLGI9X1Ioa1tiPj4yXXwwLGtbYis0Pj4yXXwwLDgsMCl8MCxiPW9zKGEsaCw4LGIsTCl8MCxrW20+PjJdPWIsMD09KGJ8MCkpOjApPyhvUihoLDI1OTAxLDgpfDApPT0wOjApPyhoPWtbZT4+Ml18MCxjPWtbZj4+Ml18MCxhPWtbbD4+Ml18MCxiPW4sYj1fUihrW2I+PjJdfDAsa1tiKzQ+PjJdfDAsMTYsMCl8MCxiPV9SKGJ8MCxMfDAsa1tsPj4yXXwwLDApfDAsYj1vcyhoLGMsYSxiLEwpfDAsa1ttPj4yXT1iLDA9PShifDApKTowKXtrW28+PjJdPTA7d2hpbGUoMSl7aWYoKGtbbz4+Ml18MCk+Pj4wPj0oa1tsPj4yXXwwKT4+PjApYnJlYWs7a1tqPj4yXT0oa1tqPj4yXXwwKS0oaVsoa1tmPj4yXXwwKSsoa1tvPj4yXXwwKT4+MF18MCk7a1tvPj4yXT0oa1tvPj4yXXwwKSsxfWlmKGtbaj4+Ml18MClrW2w+PjJdPTA7aVsoa1tmPj4yXXwwKSsoa1tsPj4yXXwwKT4+MF09MDtrW2Q+PjJdPTA7Yj1rW2Q+PjJdfDA7cj1wO3JldHVybiBifDB9a1tkPj4yXT1rW20+PjJdO2I9a1tkPj4yXXwwO3I9cDtyZXR1cm4gYnwwfWZ1bmN0aW9uIGdzKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaT0wO2U9cjtyPXIrMTZ8MDtpPWUrMTJ8MDtoPWUrOHwwO2c9ZSs0fDA7Zj1lO2tbaT4+Ml09YTtrW2g+PjJdPWI7a1tnPj4yXT1jO2tbZj4+Ml09ZDtiPWVjW2tbKGtbaT4+Ml18MCkrMzI+PjJdJjI1NV0oa1tpPj4yXXwwLGtbaD4+Ml18MCxrW2c+PjJdfDAsa1tmPj4yXXwwKXwwO3I9ZTtyZXR1cm4gYnwwfWZ1bmN0aW9uIGhzKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxpPTAsaj0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHM9MCx0PTA7cz1yO3I9cis2NHwwO2c9cys0NHwwO2g9cys0MHwwO2k9cyszNnwwO3Q9cys4fDA7aj1zKzMyfDA7bD1zKzI4fDA7cT1zKzI0fDA7bT1zKzQ4fDA7bj1zO289cysyMHwwO3A9cysxNnwwO2tbaD4+Ml09YTtrW2k+PjJdPWI7Yj10O2tbYj4+Ml09YztrW2IrND4+Ml09ZDtrW2o+PjJdPWU7a1tsPj4yXT1mO2I9enMoa1toPj4yXXwwKXwwO2U9KGtbaD4+Ml18MCkrODB8MDtrW2U+PjJdPWI7a1tlKzQ+PjJdPUw7ZT0oa1toPj4yXXwwKSs4MHwwO2U9JFIoa1tlPj4yXXwwLGtbZSs0Pj4yXXwwLGtbKGtbaD4+Ml18MCkrMTU2Pj4yXXwwLDApfDA7Yj1MO2E9dDtmPWtbYSs0Pj4yXXwwO2lmKChifDApPihmfDApfCgoYnwwKT09KGZ8MCk/ZT4+PjA+KGtbYT4+Ml18MCk+Pj4wOjApKXtrW2c+PjJdPTEwMTt0PWtbZz4+Ml18MDtyPXM7cmV0dXJuIHR8MH1lPShrW2g+PjJdfDApKzgwfDA7YT1rW2UrND4+Ml18MDt0PW47a1t0Pj4yXT1rW2U+PjJdO2tbdCs0Pj4yXT1hO2lmKCEoKGtbaT4+Ml18MCk9PTA/KGE9bix0PShrW2g+PjJdfDApKzg4fDAsISgoa1thPj4yXXwwKSE9KGtbdD4+Ml18MCk/MTooa1thKzQ+PjJdfDApIT0oa1t0KzQ+PjJdfDApKSk6MCkpe3Q9bjt0PW9zKGtbKGtbaD4+Ml18MCkrNjg+PjJdfDAsbSw4LGtbdD4+Ml18MCxrW3QrND4+Ml18MCl8MDtrW3E+PjJdPXQ7aWYoa1txPj4yXXwwKXtrW2c+PjJdPWtbcT4+Ml07dD1rW2c+PjJdfDA7cj1zO3JldHVybiB0fDB9aWYob1IobSwyNTkwMSw4KXwwKXtrW2c+PjJdPTEwMTt0PWtbZz4+Ml18MDtyPXM7cmV0dXJuIHR8MH19YT1rWyhrW2g+PjJdfDApKzY4Pj4yXXwwO3Q9bjt0PSRSKGtbdD4+Ml18MCxrW3QrND4+Ml18MCw4LDApfDA7dD1wcyhhLHQsTCxrW2o+PjJdfDApfDA7a1txPj4yXT10O2lmKCgwPT0odHwwKT8oYT1rWyhrW2g+PjJdfDApKzY4Pj4yXXwwLHQ9bix0PSRSKGtbdD4+Ml18MCxrW3QrND4+Ml18MCwxMiwwKXwwLHQ9cHMoYSx0LEwsKGtbaD4+Ml18MCkrNTJ8MCl8MCxrW3E+PjJdPXQsMD09KHR8MCkpOjApPyhhPWtbKGtbaD4+Ml18MCkrNjg+PjJdfDAsdD1uLHQ9JFIoa1t0Pj4yXXwwLGtbdCs0Pj4yXXwwLDE2LDApfDAsdD1wcyhhLHQsTCxrW2w+PjJdfDApfDAsa1txPj4yXT10LDA9PSh0fDApKTowKXt0PShrW2g+PjJdfDApKzgwfDA7ZG8gaWYoKGtbdD4+Ml18MCk9PTAmKGtbdCs0Pj4yXXwwKT09MCl7YT1rWyhrW2g+PjJdfDApKzY4Pj4yXXwwO3Q9bjt0PSRSKGtbdD4+Ml18MCxrW3QrND4+Ml18MCwyMCwwKXwwO3Q9cHMoYSx0LEwscCl8MDtrW3E+PjJdPXQ7aWYoMD09KHR8MCk/KGE9a1soa1toPj4yXXwwKSs2OD4+Ml18MCx0PW4sdD0kUihrW3Q+PjJdfDAsa1t0KzQ+PjJdfDAsMjQsMCl8MCx0PXBzKGEsdCxMLG8pfDAsa1txPj4yXT10LDA9PSh0fDApKTowKXtpZighKGtbbz4+Ml18MCkpa1tvPj4yXT1rWyhrW2g+PjJdfDApKzE2MD4+Ml07aWYoKCEoKGtbbz4+Ml18MCk+Pj4wPDUxMnwoa1twPj4yXXwwKT4+PjA8MzJ8KGtbbz4+Ml18MCk+Pj4wPjY1NTM2fChrW3A+PjJdfDApPj4+MD42NTUzNik/KChrW28+PjJdfDApLTEma1tvPj4yXXwwKT09MDowKT8oKGtbcD4+Ml18MCktMSZrW3A+PjJdfDApPT0wOjApe3Q9ZGooa1toPj4yXXwwLG8sLTEpfDA7a1txPj4yXT10O2tbKGtbaD4+Ml18MCkrMTU2Pj4yXT1rW3A+PjJdO2JyZWFrfWtbZz4+Ml09MTAxO3Q9a1tnPj4yXXwwO3I9cztyZXR1cm4gdHwwfWtbZz4+Ml09a1txPj4yXTt0PWtbZz4+Ml18MDtyPXM7cmV0dXJuIHR8MH13aGlsZSgwKTt0PShrW2g+PjJdfDApKzgwfDA7YT10O2E9JFIoa1thPj4yXXwwLGtbYSs0Pj4yXXwwLGtbKGtbaD4+Ml18MCkrMTU2Pj4yXXwwLDApfDA7a1t0Pj4yXT1hO2tbdCs0Pj4yXT1MO2tbZz4+Ml09a1txPj4yXTt0PWtbZz4+Ml18MDtyPXM7cmV0dXJuIHR8MH1rW2c+PjJdPWtbcT4+Ml07dD1rW2c+PjJdfDA7cj1zO3JldHVybiB0fDB9ZnVuY3Rpb24gaXMoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsbj0wLG89MCxwPTAscT0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MDtCPXI7cj1yKzY0fDA7eT1CKzYwfDA7cD1CKzU2fDA7Zj1CKzUyfDA7Zz1CKzQ4fDA7cT1CKzQ0fDA7aD1CKzQwfDA7QT1CKzM2fDA7ej1CKzMyfDA7dj1CKzI4fDA7bj1CKzI0fDA7cz1CKzIwfDA7bz1CKzE2fDA7dD1CKzEyfDA7dT1CO3g9Qis4fDA7a1twPj4yXT1hO2tbZj4+Ml09YjtrW2c+PjJdPWM7a1txPj4yXT1kO2tbaD4+Ml09ZTtrW3M+PjJdPWtbKGtbcD4+Ml18MCkrMjA4Pj4yXTtkPWtbcD4+Ml18MDtpZihrW3E+PjJdfDApZD1rW2QrNjg+PjJdfDA7ZWxzZSBkPWtbZCs3Mj4+Ml18MDtrW28+PjJdPWQ7YT1rW2Y+PjJdfDA7YT1wcyhrW28+PjJdfDAsa1thPj4yXXwwLGtbYSs0Pj4yXXwwLHYpfDA7a1tBPj4yXT1hO2lmKGtbQT4+Ml18MCl7a1t5Pj4yXT1rW0E+PjJdO0E9a1t5Pj4yXXwwO3I9QjtyZXR1cm4gQXwwfWU9a1tvPj4yXXwwO2M9a1tzPj4yXXwwO2I9a1soa1twPj4yXXwwKSsxNjA+PjJdfDA7YT1rW2Y+PjJdfDA7YT0kUihrW2E+PjJdfDAsa1thKzQ+PjJdfDAsNCwwKXwwO2E9b3MoZSxjLGIsYSxMKXwwO2tbQT4+Ml09YTtpZihrW0E+PjJdfDApe2tbeT4+Ml09a1tBPj4yXTtBPWtbeT4+Ml18MDtyPUI7cmV0dXJuIEF8MH1iPShrWyhrW3A+PjJdfDApKzE2MD4+Ml18MCkrNCsoa1txPj4yXTw8Mil8MDthPWtbZj4+Ml18MDtjPWE7Yj0kUihrW2M+PjJdfDAsa1tjKzQ+PjJdfDAsYnwwLCgoYnwwKTwwKTw8MzE+PjMxfDApfDA7a1thPj4yXT1iO2tbYSs0Pj4yXT1MO2lmKChrW3Y+PjJdfDApIT0wPyhrW3Y+PjJdfDApIT0oKChrWzM4NF18MCkvKGtbKGtbcD4+Ml18MCkrMTYwPj4yXXwwKXwwKSsxfDApOjApe2lmKChrW3Y+PjJdfDApPj4+MDw9KGtbKGtbcD4+Ml18MCkrMjg+PjJdfDApPj4+MD8oeGooa1tnPj4yXXwwLGtbdj4+Ml18MCl8MCk9PTA6MCl7aWYoa1txPj4yXXwwKXthPWtbbz4+Ml18MDtvPWtbZj4+Ml18MDtvPV9SKGtbbz4+Ml18MCxrW28rND4+Ml18MCw0LDApfDA7bz1wcyhhLG8sTCxuKXwwO2tbQT4+Ml09bztpZihrW0E+PjJdfDApe2tbeT4+Ml09a1tBPj4yXTtBPWtbeT4+Ml18MDtyPUI7cmV0dXJuIEF8MH1pZigoa1toPj4yXXwwKT09MD8obz1xcyhrW3A+PjJdfDAsa1tzPj4yXXwwKXwwLChvfDApIT0oa1tuPj4yXXwwKSk6MCl7a1t5Pj4yXT0xMDE7QT1rW3k+PjJdfDA7cj1CO3JldHVybiBBfDB9fWlmKChrW2c+PjJdfDApIT0wPyhvPXZqKGtbZz4+Ml18MCxrW3Y+PjJdfDApfDAsa1tBPj4yXT1vLChvfDApIT0wKTowKXtrW3k+PjJdPWtbQT4+Ml07QT1rW3k+PjJdfDA7cj1CO3JldHVybiBBfDB9aWYoKGtbdj4+Ml18MCk9PTE/KGpbKGtbcD4+Ml18MCkrMTUwPj4xXXwwKSE9KGxbKGtbcz4+Ml18MCkrMjA+PjBdfDApOjApalsoa1twPj4yXXwwKSsxNTA+PjFdPWxbKGtbcz4+Ml18MCkrMjA+PjBdfDA7aWYoTHIoa1twPj4yXXwwKXwwKWtbej4+Ml09MDtlbHNle289cnMoa1twPj4yXXwwLGtbdj4+Ml18MCl8MDtrW3o+PjJdPW99aWYoa1txPj4yXXwwKXtpZihsWyhrW3A+PjJdfDApKzc+PjBdfDApZD0xO2Vsc2V7bz1rW2Y+PjJdfDA7aD1rW28rND4+Ml18MDtkPShrW3A+PjJdfDApKzg4fDA7bj1rW2QrND4+Ml18MDtkPShofDApPChufDApfCgoaHwwKT09KG58MCk/KGtbbz4+Ml18MCk+Pj4wPD0oa1tkPj4yXXwwKT4+PjA6MCl9a1t0Pj4yXT1kJjF9ZWxzZXtpZighKGtbej4+Ml18MCkpZD0xO2Vsc2UgZD0wPT0obVsoa1t6Pj4yXXwwKSsyND4+MV0mOHwwKTtrW3Q+PjJdPWQmMX1kbyBpZihrW2tbKGtbcD4+Ml18MCkrNjQ+PjJdPj4yXXwwKXtpZigobFsoa1twPj4yXXwwKSsxNz4+MF18MCk+PTQpe2lmKCEoa1t0Pj4yXXwwKSl7dz00NDticmVha319ZWxzZSBpZighKChrW3Q+PjJdfDApIT0wPyhsWyhrW3A+PjJdfDApKzE3Pj4wXXwwKT09MDowKSl7dz00NDticmVha31vPWtbKGtbcD4+Ml18MCkrMTYwPj4yXXwwO289a1MoKGtbdj4+Ml18MCktMXwwLDAsb3wwLCgob3wwKTwwKTw8MzE+PjMxfDApfDA7dD11O2tbdD4+Ml09bztrW3QrND4+Ml09TDt1PVNnKGtbKGtbcD4+Ml18MCkrNjQ+PjJdfDAsa1tzPj4yXXwwLGtbKGtbcD4+Ml18MCkrMTYwPj4yXXwwLGtbdT4+Ml18MCxrW3UrND4+Ml18MCl8MDtrW0E+PjJdPXU7aWYoKGtbdj4+Ml18MCk+Pj4wPihrWyhrW3A+PjJdfDApKzM2Pj4yXXwwKT4+PjApa1soa1twPj4yXXwwKSszNj4+Ml09a1t2Pj4yXTtpZihrWyhrW3A+PjJdfDApKzk2Pj4yXXwwKXtzcyhrWyhrW3A+PjJdfDApKzk2Pj4yXXwwLGtbdj4+Ml18MCxrW3M+PjJdfDApO2tbcz4+Ml09a1tzPj4yXX19ZWxzZSB3PTQ0O3doaWxlKDApO2RvIGlmKCh3fDApPT00ND8oa1txPj4yXXwwKT09MCYoa1t6Pj4yXXwwKT09MDowKXt3PShrW3A+PjJdfDApKzIxfDA7aVt3Pj4wXT1sW3c+PjBdfDI7dz1GZyhrW3A+PjJdfDAsa1t2Pj4yXXwwLHosMSl8MDtrW0E+PjJdPXc7dz0oa1twPj4yXXwwKSsyMXwwO2lbdz4+MF09bFt3Pj4wXSYtMztpZighKGtbQT4+Ml18MCkpe3RzKGtbej4+Ml18MCk7YnJlYWt9a1t5Pj4yXT1rW0E+PjJdO0E9a1t5Pj4yXXwwO3I9QjtyZXR1cm4gQXwwfXdoaWxlKDApO2lmKGtbej4+Ml18MCl7a1t4Pj4yXT1rWyhrW3o+PjJdfDApKzQ+PjJdO2JTKGtbeD4+Ml18MCxrW3M+PjJdfDAsa1soa1twPj4yXXwwKSsxNjA+PjJdfDApfDA7X2Jba1soa1twPj4yXXwwKSsyMDQ+PjJdJjI1NV0oa1t6Pj4yXXwwKTtpZigoa1t2Pj4yXXwwKT09MSl7Yz0oa1twPj4yXXwwKSsxMTJ8MDtkPShrW3g+PjJdfDApKzI0fDA7ZT1jKzE2fDA7ZG97aVtjPj4wXT1pW2Q+PjBdfDA7Yz1jKzF8MDtkPWQrMXwwfXdoaWxlKChjfDApPChlfDApKX11cyhrW3o+PjJdfDApfWtbeT4+Ml09a1tBPj4yXTtBPWtbeT4+Ml18MDtyPUI7cmV0dXJuIEF8MH1rW3k+PjJdPTA7QT1rW3k+PjJdfDA7cj1CO3JldHVybiBBfDB9a1t5Pj4yXT0xMDE7QT1rW3k+PjJdfDA7cj1CO3JldHVybiBBfDB9ZnVuY3Rpb24ganMoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHM9MCx0PTAsdT0wO3M9cjtyPXIrNjR8MDt0PXMrNjB8MDtjPXMrNTZ8MDttPXMrNTJ8MDtuPXMrNDh8MDtsPXMrNDR8MDtqPXMrNDB8MDtwPXMrMzZ8MDtnPXM7bz1zKzMyfDA7cT1zKzI4fDA7aD1zKzI0fDA7ZT1zKzE2fDA7ZD1zKzEyfDA7Zj1zKzh8MDtrW3Q+PjJdPWE7a1tjPj4yXT1iO2tbbT4+Ml09a1trW3Q+PjJdPj4yXTtrW3A+PjJdPTA7Yj1rWyhrW20+PjJdfDApKzQ+PjJdPDwxO2I9dWcoYiwoKGJ8MCk8MCk8PDMxPj4zMSl8MDtrW2w+PjJdPWI7a1tqPj4yXT0oa1tsPj4yXXwwKSsoa1soa1ttPj4yXXwwKSs0Pj4yXXwwKTtpZihrW2w+PjJdfDApe2tbcysyMD4+Ml09MTYzODU7dD1jcyhrW20+PjJdfDAsa1tjPj4yXXwwLGtbbD4+Ml18MCwxNjM4NSwwKXwwO2tbbj4+Ml09dH1lbHNlIGtbbj4+Ml09NzthOmRvIGlmKChrW24+PjJdfDApPT0wPyh0PWZqKGtbbD4+Ml18MCxnKXwwLGtbbj4+Ml09dCwoa1tuPj4yXXwwKT09MCk6MCl7a1toPj4yXT0oa1soa1ttPj4yXXwwKSs4Pj4yXXwwKSsxO2I9Zzt0PWtbaD4+Ml18MDt0PSRSKGtbYj4+Ml18MCxrW2IrND4+Ml18MCx0fDAsKCh0fDApPDApPDwzMT4+MzF8MCl8MDt0PSRSKHR8MCxMfDAsMSwwKXwwO3Q9amcodCxMKXwwO2tbcD4+Ml09dDtpZighKGtbcD4+Ml18MCkpe2tbbj4+Ml09NzticmVha310PWc7dD0kUihrW3Q+PjJdfDAsa1t0KzQ+PjJdfDAsMSwwKXwwO2tbcT4+Ml09KGtbcD4+Ml18MCkrdDt0PW9zKGtbbD4+Ml18MCxrW3A+PjJdfDAsa1tnPj4yXXwwLDAsMCl8MDtrW24+PjJdPXQ7aWYoIShrW24+PjJdfDApKXtpWyhrW3A+PjJdfDApKyhrW2c+PjJdfDApPj4wXT0wO2tbbz4+Ml09a1twPj4yXTt3aGlsZSgxKXtiPShrW28+PjJdfDApLShrW3A+PjJdfDApfDA7dT0oKGJ8MCk8MCk8PDMxPj4zMTt0PWc7YT1rW3QrND4+Ml18MDtpZighKCh1fDApPChhfDApfCgodXwwKT09KGF8MCk/Yj4+PjA8KGtbdD4+Ml18MCk+Pj4wOjApKSlicmVhazt1PWdzKGtbbT4+Ml18MCxrW28+PjJdfDAsMCxlKXwwO2tbbj4+Ml09dTtpZihrW24+PjJdfDApYnJlYWsgYTtpZihrW2U+PjJdfDApe2tbZj4+Ml09MjA0OTt1PWNzKGtbbT4+Ml18MCxrW28+PjJdfDAsa1tqPj4yXXwwLGtbZj4+Ml18MCwwKXwwO2tbbj4+Ml09dTtpZihrW24+PjJdfDApYnJlYWsgYTt1PWZzKGtbaj4+Ml18MCxrW3E+PjJdfDAsa1toPj4yXXwwKXwwO2tbbj4+Ml09dTt5cihrW2o+PjJdfDApO2lmKGtbbj4+Ml18MClicmVhayBhO2lmKGlba1txPj4yXT4+MF18MClhPShyUihrW3E+PjJdfDAsa1tjPj4yXXwwKXwwKT09MDtlbHNlIGE9MDtrW2Q+PjJdPWEmMTtpZihrW2Q+PjJdfDApYnJlYWsgYX11PShUZihrW28+PjJdfDApfDApKzF8MDtrW28+PjJdPShrW28+PjJdfDApK3V9eXIoa1tsPj4yXXwwKTt1PUhyKGtbbT4+Ml18MCxrW2M+PjJdfDAsMCl8MDtrW24+PjJdPXV9fXdoaWxlKDApO1VkKGtbcD4+Ml18MCk7aWYoIShrW2w+PjJdfDApKXt1PWtbbj4+Ml18MDtyPXM7cmV0dXJuIHV8MH15cihrW2w+PjJdfDApO1VkKGtbbD4+Ml18MCk7dT1rW24+PjJdfDA7cj1zO3JldHVybiB1fDB9ZnVuY3Rpb24ga3MoYSl7YT1hfDA7dmFyIGI9MCxjPTA7Yz1yO3I9cisxNnwwO2I9YztrW2I+PjJdPWE7aWYoKGxbKGtbYj4+Ml18MCkrMTM+PjBdfDB8MCk9PTA/KChscyhrWyhrW2I+PjJdfDApKzY0Pj4yXXwwKXwwKSY0MDk2fDApPT0wOjApe2E9bXMoa1soa1tiPj4yXXwwKSs2ND4+Ml18MCl8MDtrWyhrW2I+PjJdfDApKzE1Nj4+Ml09YTtyPWM7cmV0dXJufWtbKGtbYj4+Ml18MCkrMTU2Pj4yXT01MTI7cj1jO3JldHVybn1mdW5jdGlvbiBscyhhKXthPWF8MDt2YXIgYj0wLGM9MDtiPXI7cj1yKzE2fDA7Yz1iO2tbYz4+Ml09YTthPWJjW2tbKGtba1tjPj4yXT4+Ml18MCkrNDg+PjJdJjI1NV0oa1tjPj4yXXwwKXwwO3I9YjtyZXR1cm4gYXwwfWZ1bmN0aW9uIG1zKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MDtjPXI7cj1yKzE2fDA7ZD1jKzR8MDtiPWM7a1tkPj4yXT1hO2E9bnMoa1tkPj4yXXwwKXwwO2tbYj4+Ml09YTtpZigoa1tiPj4yXXwwKT49MzIpe2lmKChrW2I+PjJdfDApPjY1NTM2KWtbYj4+Ml09NjU1MzZ9ZWxzZSBrW2I+PjJdPTUxMjtyPWM7cmV0dXJuIGtbYj4+Ml18MH1mdW5jdGlvbiBucyhhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTA7ZD1yO3I9cisxNnwwO2I9ZCs0fDA7Yz1kO2tbYj4+Ml09YTtrW2M+PjJdPWtbKGtba1tiPj4yXT4+Ml18MCkrNDQ+PjJdO2lmKCEoa1tjPj4yXXwwKSl7Yz00MDk2O3I9ZDtyZXR1cm4gY3wwfWM9YmNba1tjPj4yXSYyNTVdKGtbYj4+Ml18MCl8MDtyPWQ7cmV0dXJuIGN8MH1mdW5jdGlvbiBvcyhhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxpPTAsaj0wO2Y9cjtyPXIrMzJ8MDtpPWYrMTZ8MDtoPWYrMTJ8MDtnPWYrOHwwO2o9ZjtrW2k+PjJdPWE7a1toPj4yXT1iO2tbZz4+Ml09YztiPWo7a1tiPj4yXT1kO2tbYis0Pj4yXT1lO2I9ajtiPWhjW2tbKGtba1tpPj4yXT4+Ml18MCkrOD4+Ml0mMjU1XShrW2k+PjJdfDAsa1toPj4yXXwwLGtbZz4+Ml18MCxrW2I+PjJdfDAsa1tiKzQ+PjJdfDApfDA7cj1mO3JldHVybiBifDB9ZnVuY3Rpb24gcHMoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxpPTAsaj0wO2g9cjtyPXIrMzJ8MDtpPWgrMTZ8MDtqPWg7ZT1oKzEyfDA7Zj1oKzIwfDA7Zz1oKzh8MDtrW2k+PjJdPWE7YT1qO2tbYT4+Ml09YjtrW2ErND4+Ml09YztrW2U+PjJdPWQ7ZD1qO2Q9b3Moa1tpPj4yXXwwLGYsNCxrW2Q+PjJdfDAsa1tkKzQ+PjJdfDApfDA7a1tnPj4yXT1kO2lmKGtbZz4+Ml18MCl7aj1rW2c+PjJdfDA7cj1oO3JldHVybiBqfDB9aj1xcihmKXwwO2tba1tlPj4yXT4+Ml09ajtqPWtbZz4+Ml18MDtyPWg7cmV0dXJuIGp8MH1mdW5jdGlvbiBxcyhhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wO2Y9cjtyPXIrMTZ8MDtnPWYrMTJ8MDtjPWYrOHwwO2Q9Zis0fDA7ZT1mO2tbZz4+Ml09YTtrW2M+PjJdPWI7a1tkPj4yXT1rWyhrW2c+PjJdfDApKzUyPj4yXTtrW2U+PjJdPShrWyhrW2c+PjJdfDApKzE2MD4+Ml18MCktMjAwO3doaWxlKDEpe2lmKChrW2U+PjJdfDApPD0wKWJyZWFrO2tbZD4+Ml09KGtbZD4+Ml18MCkrKGxbKGtbYz4+Ml18MCkrKGtbZT4+Ml18MCk+PjBdfDApO2tbZT4+Ml09KGtbZT4+Ml18MCktMjAwfXI9ZjtyZXR1cm4ga1tkPj4yXXwwfWZ1bmN0aW9uIHJzKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTA7Zz1yO3I9cisxNnwwO2M9ZysxMnwwO2Q9Zys4fDA7ZT1nKzR8MDtmPWc7a1tkPj4yXT1hO2tbZT4+Ml09YjtiPXdzKGtbKGtbZD4+Ml18MCkrMjEyPj4yXXwwLGtbZT4+Ml18MCwwKXwwO2tbZj4+Ml09YjtpZighKGtbZj4+Ml18MCkpe2tbYz4+Ml09MDtiPWtbYz4+Ml18MDtyPWc7cmV0dXJuIGJ8MH1lbHNle2I9eHMoa1soa1tkPj4yXXwwKSsyMTI+PjJdfDAsa1tlPj4yXXwwLGtbZj4+Ml18MCl8MDtrW2M+PjJdPWI7Yj1rW2M+PjJdfDA7cj1nO3JldHVybiBifDB9cmV0dXJuIDB9ZnVuY3Rpb24gc3MoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTA7Zz1yO3I9cisxNnwwO2Q9Zys4fDA7ZT1nKzR8MDtmPWc7a1tkPj4yXT1hO2tbZT4+Ml09YjtrW2Y+PjJdPWM7aWYoIShrW2Q+PjJdfDApKXtyPWc7cmV0dXJufXZzKGtbZD4+Ml18MCxrW2U+PjJdfDAsa1tmPj4yXXwwKTtyPWc7cmV0dXJufWZ1bmN0aW9uIHRzKGEpe2E9YXwwO3ZhciBiPTAsYz0wO2M9cjtyPXIrMTZ8MDtiPWM7a1tiPj4yXT1hO2lmKCEoKG1bKGtbYj4+Ml18MCkrMjQ+PjFdfDApJjE3KSl7cj1jO3JldHVybn1hPShrW2I+PjJdfDApKzI0fDA7althPj4xXT0obVthPj4xXXwwKSYtMTc7aWYoISgobVsoa1tiPj4yXXwwKSsyND4+MV18MCkmMSkpe3I9YztyZXR1cm59YT0oa1tiPj4yXXwwKSsyNHwwO2pbYT4+MV09KG1bYT4+MV18MCleMztyaihrW2I+PjJdfDAsMik7cj1jO3JldHVybn1mdW5jdGlvbiB1cyhhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTA7Yz1yO3I9cisxNnwwO2I9YztrW2I+PjJdPWE7ZD0oa1soa1tiPj4yXXwwKSsyOD4+Ml18MCkrMTJ8MDtrW2Q+PjJdPShrW2Q+PjJdfDApKy0xO2Q9KGtbYj4+Ml18MCkrMjZ8MDthPShqW2Q+PjFdfDApKy0xPDwxNj4+MTY7altkPj4xXT1hO2lmKGE8PDE2Pj4xNil7cj1jO3JldHVybn1hPWtbYj4+Ml18MDtpZigobVsoa1tiPj4yXXwwKSsyND4+MV18MCkmMSl7c2ooYSk7cj1jO3JldHVybn1pZighKGtbYSszNj4+Ml18MCkpe3I9YztyZXR1cm59cmooa1tiPj4yXXwwLDMpO3I9YztyZXR1cm59ZnVuY3Rpb24gdnMoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wO2g9cjtyPXIrMTZ8MDtkPWgrMTJ8MDtlPWgrOHwwO2Y9aCs0fDA7Zz1oO2tbZD4+Ml09YTtrW2U+PjJdPWI7a1tmPj4yXT1jO2Rve2lmKCgoeGcoa1soa1tkPj4yXXwwKSsyOD4+Ml18MCl8MCk9PTA/KGtbZT4+Ml18MCk+Pj4wPChrWyhrW2Q+PjJdfDApKzE2Pj4yXXwwKT4+PjA6MCk/KGE9SGcoa1tkPj4yXXwwLGtbZT4+Ml18MCxrW2Y+PjJdfDAsMSl8MCxrW2c+PjJdPWEsKGtbZz4+Ml18MCkhPTApOjApa1soa1tkPj4yXXwwKSsyOD4+Ml09a1tnPj4yXTthPWtbKGtbZD4+Ml18MCkrNDQ+PjJdfDA7a1tkPj4yXT1hfXdoaWxlKChhfDApIT0wKTtyPWg7cmV0dXJufWZ1bmN0aW9uIHdzKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxpPTA7ZT1yO3I9ciszMnwwO2g9ZSsxNnwwO2c9ZSsxMnwwO2k9ZSs4fDA7Zj1lKzR8MDtkPWU7a1toPj4yXT1hO2tbZz4+Ml09YjtrW2k+PjJdPWM7a1tmPj4yXT1rW2k+PjJdJihsWyhrW2g+PjJdfDApKzMzPj4wXXwwKTtiPVliW2tbMTQ0Pj4yXSYyNTVdKGtbKGtbaD4+Ml18MCkrNDQ+PjJdfDAsa1tnPj4yXXwwLGtbZj4+Ml18MCl8MDtrW2Q+PjJdPWI7cj1lO3JldHVybiBrW2Q+PjJdfDB9ZnVuY3Rpb24geHMoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGk9MDtoPXI7cj1yKzMyfDA7ZD1oKzE2fDA7aT1oKzEyfDA7ZT1oKzh8MDtmPWgrNHwwO2c9aDtrW2k+PjJdPWE7a1tlPj4yXT1iO2tbZj4+Ml09YztrW2c+PjJdPWtbKGtbZj4+Ml18MCkrND4+Ml07YT1rW2k+PjJdfDA7aWYoa1trW2c+PjJdPj4yXXwwKXtpPWErMTJ8MDtrW2k+PjJdPShrW2k+PjJdfDApKzE7aT0oa1tnPj4yXXwwKSsyNnwwO2pbaT4+MV09KGpbaT4+MV18MCkrMTw8MTY+PjE2O2tbZD4+Ml09a1tnPj4yXTtpPWtbZD4+Ml18MDtyPWg7cmV0dXJuIGl8MH1lbHNle2k9eXMoYSxrW2U+PjJdfDAsa1tmPj4yXXwwKXwwO2tbZD4+Ml09aTtpPWtbZD4+Ml18MDtyPWg7cmV0dXJuIGl8MH1yZXR1cm4gMH1mdW5jdGlvbiB5cyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTA7ZD1yO3I9cisxNnwwO2c9ZCsxMnwwO2Y9ZCs4fDA7ZT1kKzR8MDtoPWQ7a1tnPj4yXT1hO2tbZj4+Ml09YjtrW2U+PjJdPWM7a1toPj4yXT1rWyhrW2U+PjJdfDApKzQ+PjJdO2I9KGtbaD4+Ml18MCkrMTJ8MDtrW2I+PjJdPTA7a1tiKzQ+PjJdPTA7a1tiKzg+PjJdPTA7a1tiKzEyPj4yXT0wO2tbYisxNj4+Ml09MDtrW2IrMjA+PjJdPTA7a1tiKzI0Pj4yXT0wO2tba1toPj4yXT4+Ml09a1tlPj4yXTtrWyhrW2g+PjJdfDApKzQ+PjJdPWtba1tlPj4yXT4+Ml07a1soa1toPj4yXXwwKSs4Pj4yXT0oa1toPj4yXXwwKSs0MDtkUyhrWyhrW2g+PjJdfDApKzg+PjJdfDAsMCxrWyhrW2c+PjJdfDApKzI4Pj4yXXwwKXwwO2tbKGtbaD4+Ml18MCkrMjg+PjJdPWtbZz4+Ml07a1soa1toPj4yXXwwKSsyMD4+Ml09a1tmPj4yXTtqWyhrW2g+PjJdfDApKzI0Pj4xXT0xO2I9eHMoa1tnPj4yXXwwLGtbZj4+Ml18MCxrW2U+PjJdfDApfDA7cj1kO3JldHVybiBifDB9ZnVuY3Rpb24genMoYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wLGU9MCxmPTAsZz0wO2U9cjtyPXIrMzJ8MDtiPWUrMTZ8MDtkPWUrOHwwO2M9ZTtrW2I+PjJdPWE7Zz1kO2tbZz4+Ml09MDtrW2crND4+Ml09MDtnPShrW2I+PjJdfDApKzgwfDA7Zj1rW2crND4+Ml18MDthPWM7a1thPj4yXT1rW2c+PjJdO2tbYSs0Pj4yXT1mO2E9YztpZighKChrW2E+PjJdfDApIT0wfChrW2ErND4+Ml18MCkhPTApKXtmPWQ7Zz1mO2c9a1tnPj4yXXwwO2Y9Zis0fDA7Zj1rW2Y+PjJdfDA7TD1mO3I9ZTtyZXR1cm4gZ3wwfWc9YztnPV9SKGtbZz4+Ml18MCxrW2crND4+Ml18MCwxLDApfDA7Zz1pUyhnfDAsTHwwLGtbKGtbYj4+Ml18MCkrMTU2Pj4yXXwwLDApfDA7Zz0kUihnfDAsTHwwLDEsMCl8MDtnPWtTKGd8MCxMfDAsa1soa1tiPj4yXXwwKSsxNTY+PjJdfDAsMCl8MDtmPWQ7a1tmPj4yXT1nO2tbZis0Pj4yXT1MO2Y9ZDtnPWY7Zz1rW2c+PjJdfDA7Zj1mKzR8MDtmPWtbZj4+Ml18MDtMPWY7cj1lO3JldHVybiBnfDB9ZnVuY3Rpb24gQXMoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHM9MCx0PTAsdT0wO3M9cjtyPXIrNjR8MDtjPXMrNTZ8MDtkPXMrNTJ8MDtlPXMrNDh8MDtwPXMrMTZ8MDtnPXMrOHwwO289cys0NHwwO249cys0MHwwO2g9cyszNnwwO2w9cyszMnwwO2Y9cysyOHwwO2o9cysyNHwwO209cztrW2Q+PjJdPWE7a1tlPj4yXT1iO2tbbz4+Ml09MDtrW24+PjJdPTA7aWYoKGtbZT4+Ml18MCkhPTA/KGI9dWooa1soa1tlPj4yXXwwKSsyMD4+Ml18MCl8MCxrW24+PjJdPWIsKGtbbj4+Ml18MCk9PTApOjApe2tbYz4+Ml09NztxPWtbYz4+Ml18MDtyPXM7cmV0dXJuIHF8MH1pZihrW2U+PjJdfDApYT1rWyhrW2U+PjJdfDApKzIwPj4yXXwwO2Vsc2UgYT1rWyhrW2Q+PjJdfDApKzMyPj4yXXwwO2tbKGtbZD4+Ml18MCkrMjg+PjJdPWE7aVsoa1tkPj4yXXwwKSsxOT4+MF09aVsoa1tkPj4yXXwwKSsxMz4+MF18MDtpZigoa1tlPj4yXXwwKT09MD8oTHIoa1tkPj4yXXwwKXwwKSE9MDowKXtxPUJzKGtbZD4+Ml18MCl8MDtrW2M+PjJdPXE7cT1rW2M+PjJdfDA7cj1zO3JldHVybiBxfDB9dD0oa1tkPj4yXXwwKSs4MHwwO2E9a1t0KzQ+PjJdfDA7Yj1wO2tbYj4+Ml09a1t0Pj4yXTtrW2IrND4+Ml09YTthOmRvIGlmKChrW2U+PjJdfDApIT0wPyhMcihrW2Q+PjJdfDApfDApPT0wOjApe3Q9KGtbZT4+Ml18MCkrOHwwO2lmKChrW3Q+PjJdfDApIT0wfChrW3QrND4+Ml18MCkhPTApe2I9KGtbZT4+Ml18MCkrOHwwO2E9a1tiPj4yXXwwO2I9a1tiKzQ+PjJdfDB9ZWxzZXtiPXA7YT1rW2I+PjJdfDA7Yj1rW2IrND4+Ml18MH10PWc7a1t0Pj4yXT1hO2tbdCs0Pj4yXT1iO2E9a1tlPj4yXXwwO2I9a1thKzQ+PjJdfDA7dD0oa1tkPj4yXXwwKSs4MHwwO2tbdD4+Ml09a1thPj4yXTtrW3QrND4+Ml09Yjt3aGlsZSgxKXtpZihrW28+PjJdfDApYnJlYWsgYTtiPShrW2Q+PjJdfDApKzgwfDA7dT1rW2IrND4+Ml18MDt0PWc7YT1rW3QrND4+Ml18MDtpZighKCh1fDApPChhfDApfCgodXwwKT09KGF8MCk/KGtbYj4+Ml18MCk+Pj4wPChrW3Q+PjJdfDApPj4+MDowKSkpYnJlYWsgYTt1PWlzKGtbZD4+Ml18MCwoa1tkPj4yXXwwKSs4MHwwLGtbbj4+Ml18MCwxLDEpfDA7a1tvPj4yXT11fX1lbHNlIHE9MTk7d2hpbGUoMCk7aWYoKHF8MCk9PTE5KXt1PShrW2Q+PjJdfDApKzgwfDA7a1t1Pj4yXT0wO2tbdSs0Pj4yXT0wfWI6d2hpbGUoMSl7aWYoa1tvPj4yXXwwKWJyZWFrO3Q9KGtbZD4+Ml18MCkrODB8MDtnPWtbdCs0Pj4yXXwwO3U9cDtxPWtbdSs0Pj4yXXwwO2lmKCEoKGd8MCk8KHF8MCl8KChnfDApPT0ocXwwKT8oa1t0Pj4yXXwwKT4+PjA8KGtbdT4+Ml18MCk+Pj4wOjApKSlicmVhaztrW2w+PjJdPTA7dT1wO3U9aHMoa1tkPj4yXXwwLDAsa1t1Pj4yXXwwLGtbdSs0Pj4yXXwwLGwsZil8MDtrW28+PjJdPXU7aWYoKGtbbD4+Ml18MCk9PTA/KHQ9KGtbZD4+Ml18MCkrODh8MCx0PSRSKGtbdD4+Ml18MCxrW3QrND4+Ml18MCxrWyhrW2Q+PjJdfDApKzE1Nj4+Ml18MCwwKXwwLHU9KGtbZD4+Ml18MCkrODB8MCwodHwwKT09KGtbdT4+Ml18MCk/KEx8MCk9PShrW3UrND4+Ml18MCk6MCk6MCl7dT1wO3Q9KGtbZD4+Ml18MCkrODB8MDt0PV9SKGtbdT4+Ml18MCxrW3UrND4+Ml18MCxrW3Q+PjJdfDAsa1t0KzQ+PjJdfDApfDA7dT0oa1soa1tkPj4yXXwwKSsxNjA+PjJdfDApKzh8MDt1PWlTKHR8MCxMfDAsdXwwLCgodXwwKTwwKTw8MzE+PjMxfDApfDA7a1tsPj4yXT11fWtbaD4+Ml09MDt3aGlsZSgxKXtpZihrW28+PjJdfDApY29udGludWUgYjtpZigoa1toPj4yXXwwKT4+PjA+PShrW2w+PjJdfDApPj4+MCljb250aW51ZSBiO3Q9KGtbZD4+Ml18MCkrODB8MDtnPWtbdCs0Pj4yXXwwO3U9cDtxPWtbdSs0Pj4yXXwwO2lmKCEoKGd8MCk8KHF8MCl8KChnfDApPT0ocXwwKT8oa1t0Pj4yXXwwKT4+PjA8KGtbdT4+Ml18MCk+Pj4wOjApKSljb250aW51ZSBiO3U9aXMoa1tkPj4yXXwwLChrW2Q+PjJdfDApKzgwfDAsa1tuPj4yXXwwLDEsMSl8MDtrW28+PjJdPXU7a1toPj4yXT0oa1toPj4yXXwwKSsxfX1jOmRvIGlmKGtbZT4+Ml18MCl7dD00KyhrWyhrW2Q+PjJdfDApKzE2MD4+Ml18MCl8MDt0PWtTKGtbKGtbZT4+Ml18MCkrMjQ+PjJdfDAsMCx0fDAsKCh0fDApPDApPDwzMT4+MzF8MCl8MDt1PW07a1t1Pj4yXT10O2tbdSs0Pj4yXT1MO2lmKExyKGtbZD4+Ml18MCl8MCl7dT1DcyhrWyhrW2Q+PjJdfDApKzIxNj4+Ml18MCwoa1tlPj4yXXwwKSsyOHwwKXwwO2tbbz4+Ml09dX1rW2o+PjJdPWtbKGtbZT4+Ml18MCkrMjQ+PjJdO3doaWxlKDEpe2lmKGtbbz4+Ml18MClicmVhayBjO2lmKChrW2o+PjJdfDApPj4+MD49KGtbKGtbZD4+Ml18MCkrNTY+PjJdfDApPj4+MClicmVhayBjO3U9aXMoa1tkPj4yXXwwLG0sa1tuPj4yXXwwLDAsMSl8MDtrW28+PjJdPXU7a1tqPj4yXT0oa1tqPj4yXXwwKSsxfX13aGlsZSgwKTt6aihrW24+PjJdfDApO2lmKCEoa1tvPj4yXXwwKSl7cT1wO3Q9a1txKzQ+PjJdfDA7dT0oa1tkPj4yXXwwKSs4MHwwO2tbdT4+Ml09a1txPj4yXTtrW3UrND4+Ml09dH1rW2M+PjJdPWtbbz4+Ml07dT1rW2M+PjJdfDA7cj1zO3JldHVybiB1fDB9ZnVuY3Rpb24gQnMoYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wLGU9MCxmPTA7Zj1yO3I9cisxNnwwO2I9ZisxMnwwO2U9Zis4fDA7Yz1mKzR8MDtkPWY7a1tiPj4yXT1hO2tbKGtbYj4+Ml18MCkrMjg+PjJdPWtbKGtbYj4+Ml18MCkrMzI+PjJdO2E9SnMoa1soa1tiPj4yXXwwKSsyMTY+PjJdfDAsMTg3LGtbYj4+Ml18MCl8MDtrW2U+PjJdPWE7YT1LcyhrWyhrW2I+PjJdfDApKzIxMj4+Ml18MCl8MDtrW2M+PjJdPWE7d2hpbGUoMSl7aWYoISgoa1tjPj4yXXwwKSE9MD8oa1tlPj4yXXwwKT09MDowKSlicmVhaztrW2Q+PjJdPWtbKGtbYz4+Ml18MCkrMTI+PjJdO2E9SXMoa1tiPj4yXXwwLGtbKGtbYz4+Ml18MCkrMjA+PjJdfDApfDA7a1tlPj4yXT1hO2tbYz4+Ml09a1tkPj4yXX1yPWY7cmV0dXJuIGtbZT4+Ml18MH1mdW5jdGlvbiBDcyhhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTA7Zj1yO3I9cisxNnwwO2M9Zis4fDA7ZD1mKzR8MDtlPWY7a1tjPj4yXT1hO2tbZD4+Ml09YjtrW2U+PjJdPTA7aWYoKGtbKGtbZD4+Ml18MCkrMTI+PjJdfDApIT0oa1soa1tjPj4yXXwwKSsxMTI+PjJdfDApKXtrW2tbZD4+Ml0+PjJdPTA7a1soa1tkPj4yXXwwKSsxMj4+Ml09a1soa1tjPj4yXXwwKSsxMTI+PjJdfWlmKChrW2tbZD4+Ml0+PjJdfDApPj4+MD49KGtbKGtbYz4+Ml18MCkrNTIrMTY+PjJdfDApPj4+MCl7ZT1rW2U+PjJdfDA7cj1mO3JldHVybiBlfDB9a1soa1tjPj4yXXwwKSs1MisxNj4+Ml09a1trW2Q+PjJdPj4yXTtrWyhrW2M+PjJdfDApKzUyKzI0Pj4yXT1rWyhrW2Q+PjJdfDApKzQ+PjJdO2tbKGtbYz4+Ml18MCkrNTIrMjQrND4+Ml09a1soa1tkPj4yXXwwKSs4Pj4yXTtEcyhrW2M+PjJdfDApO2U9a1tlPj4yXXwwO3I9ZjtyZXR1cm4gZXwwfWZ1bmN0aW9uIERzKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTAsaT0wO2k9cjtyPXIrMzJ8MDtiPWkrMjR8MDtjPWkrMjB8MDtkPWkrMTZ8MDtnPWkrMTJ8MDtmPWkrOHwwO2g9aSs0fDA7ZT1pO2tbYj4+Ml09YTtrW2M+PjJdPTA7a1tkPj4yXT0wO2tbZz4+Ml09MDtrW2Y+PjJdPTA7aWYoIShrWyhrW2I+PjJdfDApKzUyKzE2Pj4yXXwwKSl7cj1pO3JldHVybn1hPWtbYj4+Ml18MDtGcyhhLEVzKGtbKGtbYj4+Ml18MCkrNTIrMTY+PjJdfDApfDAsYyxkLGcpfDA7a1tmPj4yXT0oa1soa1tiPj4yXXwwKSs1MisxNj4+Ml18MCktKGtbZz4+Ml18MCk7a1tlPj4yXT0wO3doaWxlKDEpe2lmKChrW2U+PjJdfDApPj04MTkyKWJyZWFrO2lmKChtWyhrW2M+PjJdfDApKyhrW2U+PjJdPDwxKT4+MV18MHwwKT4oa1tmPj4yXXwwKSlqWyhrW2M+PjJdfDApKyhrW2U+PjJdPDwxKT4+MV09MDtrW2U+PjJdPShrW2U+PjJdfDApKzF9a1toPj4yXT0oa1tjPj4yXXwwKS0oKGtbZD4+Ml18MCkrKChrW2Y+PjJdfDApKzE8PDIpKTtkUygoa1tkPj4yXXwwKSsoKGtbZj4+Ml18MCkrMTw8Mil8MCwwLGtbaD4+Ml18MCl8MDtyPWk7cmV0dXJufWZ1bmN0aW9uIEVzKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MDtjPXI7cj1yKzE2fDA7ZD1jKzR8MDtiPWM7a1tkPj4yXT1hO2tbYj4+Ml09KCgoa1tkPj4yXXwwKSs0MDk2LTQwNjItMXwwKT4+PjApLzQwOTZ8MDtyPWM7cmV0dXJuIGtbYj4+Ml18MH1mdW5jdGlvbiBGcyhhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxpPTAsaj0wLGw9MCxtPTAsbj0wLG89MCxwPTA7bz1yO3I9cis0OHwwO3A9byszMnwwO2Y9bysyOHwwO2c9bysyNHwwO2g9bysyMHwwO2k9bysxNnwwO249bysxMnwwO2w9bys4fDA7bT1vKzR8MDtqPW87a1twPj4yXT1hO2tbZj4+Ml09YjtrW2c+PjJdPWM7a1toPj4yXT1kO2tbaT4+Ml09ZTtlPUdzKGtbcD4+Ml18MCxrW2Y+PjJdfDAsbCl8MDtrW24+PjJdPWU7aWYoa1tuPj4yXXwwKXtwPWtbbj4+Ml18MDtyPW87cmV0dXJuIHB8MH1rW2o+PjJdPShrW2w+PjJdfDApKzE2Mzg0O2lmKCEoa1tmPj4yXXwwKSl7a1tsPj4yXT0oa1tsPj4yXXwwKSsxMzY7a1ttPj4yXT0wfWVsc2Uga1ttPj4yXT00MDYyKygoa1tmPj4yXXwwKS0xPDwxMik7a1trW2g+PjJdPj4yXT0oa1tsPj4yXXwwKSstNDtrW2tbZz4+Ml0+PjJdPWtbaj4+Ml07a1trW2k+PjJdPj4yXT1rW20+PjJdO3A9a1tuPj4yXXwwO3I9bztyZXR1cm4gcHwwfWZ1bmN0aW9uIEdzKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsbT0wLG49MDtuPXI7cj1yKzMyfDA7ZD1uKzI0fDA7ZT1uKzIwfDA7Zj1uKzE2fDA7Zz1uKzEyfDA7bT1uKzh8MDtqPW4rNHwwO2g9bjtrW2U+PjJdPWE7a1tmPj4yXT1iO2tbZz4+Ml09YztrW20+PjJdPTA7ZG8gaWYoKGtbKGtbZT4+Ml18MCkrMjQ+PjJdfDApPD0oa1tmPj4yXXwwKSl7a1tqPj4yXT0oa1tmPj4yXXwwKSsxPDwyO2M9a1tqPj4yXXwwO2M9V2Qoa1soa1tlPj4yXXwwKSszMj4+Ml18MCxjLCgoY3wwKTwwKTw8MzE+PjMxKXwwO2tbaD4+Ml09YztpZihrW2g+PjJdfDApe2RTKChrW2g+PjJdfDApKyhrWyhrW2U+PjJdfDApKzI0Pj4yXTw8Mil8MCwwLChrW2Y+PjJdfDApKzEtKGtbKGtbZT4+Ml18MCkrMjQ+PjJdfDApPDwyfDApfDA7a1soa1tlPj4yXXwwKSszMj4+Ml09a1toPj4yXTtrWyhrW2U+PjJdfDApKzI0Pj4yXT0oa1tmPj4yXXwwKSsxO2JyZWFrfWtba1tnPj4yXT4+Ml09MDtrW2Q+PjJdPTc7bT1rW2Q+PjJdfDA7cj1uO3JldHVybiBtfDB9d2hpbGUoMCk7ZG8gaWYoIShrWyhrWyhrW2U+PjJdfDApKzMyPj4yXXwwKSsoa1tmPj4yXTw8Mik+PjJdfDApKWlmKChsWyhrW2U+PjJdfDApKzQzPj4wXXwwfDApPT0yKXtjPXVnKDMyNzY4LDApfDA7a1soa1soa1tlPj4yXXwwKSszMj4+Ml18MCkrKGtbZj4+Ml08PDIpPj4yXT1jO2lmKGtbKGtbKGtbZT4+Ml18MCkrMzI+PjJdfDApKyhrW2Y+PjJdPDwyKT4+Ml18MClicmVhaztrW20+PjJdPTc7YnJlYWt9ZWxzZXtjPUhzKGtbKGtbZT4+Ml18MCkrND4+Ml18MCxrW2Y+PjJdfDAsMzI3NjgsbFsoa1tlPj4yXXwwKSs0ND4+MF18MCwoa1soa1tlPj4yXXwwKSszMj4+Ml18MCkrKGtbZj4+Ml08PDIpfDApfDA7a1ttPj4yXT1jO2lmKChrW20+PjJdfDApIT04KWJyZWFrO2M9KGtbZT4+Ml18MCkrNDZ8MDtpW2M+PjBdPWxbYz4+MF18MHwyO2tbbT4+Ml09MDticmVha313aGlsZSgwKTtrW2tbZz4+Ml0+PjJdPWtbKGtbKGtbZT4+Ml18MCkrMzI+PjJdfDApKyhrW2Y+PjJdPDwyKT4+Ml07a1tkPj4yXT1rW20+PjJdO209a1tkPj4yXXwwO3I9bjtyZXR1cm4gbXwwfWZ1bmN0aW9uIEhzKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGk9MCxqPTAsbD0wO2Y9cjtyPXIrMzJ8MDtsPWYrMTZ8MDtqPWYrMTJ8MDtpPWYrOHwwO2g9Zis0fDA7Zz1mO2tbbD4+Ml09YTtrW2o+PjJdPWI7a1tpPj4yXT1jO2tbaD4+Ml09ZDtrW2c+PjJdPWU7ZT1oY1trWyhrW2tbbD4+Ml0+PjJdfDApKzUyPj4yXSYyNTVdKGtbbD4+Ml18MCxrW2o+PjJdfDAsa1tpPj4yXXwwLGtbaD4+Ml18MCxrW2c+PjJdfDApfDA7cj1mO3JldHVybiBlfDB9ZnVuY3Rpb24gSXMoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTAsaT0wO2c9cjtyPXIrMzJ8MDtpPWcrMjB8MDtoPWcrMTZ8MDtmPWcrMTJ8MDtkPWcrOHwwO2U9Zys0fDA7Yz1nO2tbaT4+Ml09YTtrW2g+PjJdPWI7a1tmPj4yXT0wO2tbZD4+Ml09a1tpPj4yXTthPXJzKGtbZD4+Ml18MCxrW2g+PjJdfDApfDA7a1tlPj4yXT1hO2RvIGlmKGtbZT4+Ml18MCl7aWYoKFBzKGtbZT4+Ml18MCl8MCk9PTEpe1FzKGtbZT4+Ml18MCk7YnJlYWt9a1tjPj4yXT0wO2k9UnMoa1soa1tkPj4yXXwwKSsyMTY+PjJdfDAsa1soa1tlPj4yXXwwKSsyMD4+Ml18MCxjKXwwO2tbZj4+Ml09aTtpZighKGtbZj4+Ml18MCkpe2k9U3Moa1tlPj4yXXwwLGtbYz4+Ml18MCl8MDtrW2Y+PjJdPWl9aWYoIShrW2Y+PjJdfDApKV9iW2tbKGtbZD4+Ml18MCkrMjA0Pj4yXSYyNTVdKGtbZT4+Ml18MCk7VHMoa1tlPj4yXXwwKX13aGlsZSgwKTtuaihrWyhrW2Q+PjJdfDApKzk2Pj4yXXwwKTtyPWc7cmV0dXJuIGtbZj4+Ml18MH1mdW5jdGlvbiBKcyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLGw9MDtsPXI7cj1yKzMyfDA7ZD1sKzIwfDA7ZT1sKzE2fDA7Zj1sKzEyfDA7aj1sKzh8MDtoPWwrNHwwO2c9bDtrW2Q+PjJdPWE7a1tlPj4yXT1iO2tbZj4+Ml09YztrW2o+PjJdPTA7aWYoIShpWyhrW2Q+PjJdfDApKzQ0Pj4wXXwwKSl7aj1rW2o+PjJdfDA7cj1sO3JldHVybiBqfDB9a1toPj4yXT1rWyhrW2Q+PjJdfDApKzUyKzE2Pj4yXTtjPShrW2Q+PjJdfDApKzUyfDA7YT1OcyhrW2Q+PjJdfDApfDA7Yj1jKzQ4fDA7ZG97aVtjPj4wXT1pW2E+PjBdfDA7Yz1jKzF8MDthPWErMXwwfXdoaWxlKChjfDApPChifDApKTtrW2c+PjJdPShrWyhrW2Q+PjJdfDApKzUyKzE2Pj4yXXwwKSsxO3doaWxlKDEpe2lmKGtbaj4+Ml18MClicmVhaztpZigoa1tnPj4yXXwwKT4+PjA+KGtbaD4+Ml18MCk+Pj4wKWJyZWFrO2M9a1tlPj4yXXwwO2E9a1tmPj4yXXwwO2I9T3Moa1tkPj4yXXwwLGtbZz4+Ml18MCl8MDtiPWdjW2MmMjU1XShhLGIpfDA7a1tqPj4yXT1iO2tbZz4+Ml09KGtbZz4+Ml18MCkrMX1pZigoa1toPj4yXXwwKT09KGtbKGtbZD4+Ml18MCkrNTIrMTY+PjJdfDApKXtqPWtbaj4+Ml18MDtyPWw7cmV0dXJuIGp8MH1EcyhrW2Q+PjJdfDApO2o9a1tqPj4yXXwwO3I9bDtyZXR1cm4ganwwfWZ1bmN0aW9uIEtzKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MDtkPXI7cj1yKzE2fDA7Yj1kKzR8MDtjPWQ7a1tiPj4yXT1hO2tbYz4+Ml09a1trW2I+PjJdPj4yXTt3aGlsZSgxKXtpZighKGtbYz4+Ml18MCkpYnJlYWs7a1soa1tjPj4yXXwwKSsxMj4+Ml09a1soa1tjPj4yXXwwKSszMj4+Ml07a1tjPj4yXT1rWyhrW2M+PjJdfDApKzMyPj4yXX1hPUxzKGtba1tiPj4yXT4+Ml18MCl8MDtyPWQ7cmV0dXJuIGF8MH1mdW5jdGlvbiBMcyhhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wO2g9cjtyPXIrMTQ0fDA7Yz1oKzEzNnwwO2U9aCs4fDA7Zz1oKzR8MDtmPWg7a1tjPj4yXT1hO2E9ZTtiPWErMTI4fDA7ZG97a1thPj4yXT0wO2E9YSs0fDB9d2hpbGUoKGF8MCk8KGJ8MCkpO3doaWxlKDEpe2lmKCEoa1tjPj4yXXwwKSlicmVhaztrW2c+PjJdPWtbYz4+Ml07a1tjPj4yXT1rWyhrW2c+PjJdfDApKzEyPj4yXTtrWyhrW2c+PjJdfDApKzEyPj4yXT0wO2tbZj4+Ml09MDt3aGlsZSgxKXtpZigoa1tmPj4yXXwwKT49MzEpYnJlYWs7aWYoIShrW2UrKGtbZj4+Ml08PDIpPj4yXXwwKSl7ZD02O2JyZWFrfWI9TXMoa1tlKyhrW2Y+PjJdPDwyKT4+Ml18MCxrW2c+PjJdfDApfDA7a1tnPj4yXT1iO2tbZSsoa1tmPj4yXTw8Mik+PjJdPTA7a1tmPj4yXT0oa1tmPj4yXXwwKSsxfWlmKChkfDApPT02KXtkPTA7a1tlKyhrW2Y+PjJdPDwyKT4+Ml09a1tnPj4yXX1pZigoa1tmPj4yXXwwKSE9MzEpY29udGludWU7Yj1NcyhrW2UrKGtbZj4+Ml08PDIpPj4yXXwwLGtbZz4+Ml18MCl8MDtrW2UrKGtbZj4+Ml08PDIpPj4yXT1ifWtbZz4+Ml09a1tlPj4yXTtrW2Y+PjJdPTE7d2hpbGUoMSl7aWYoKGtbZj4+Ml18MCk+PTMyKWJyZWFrO2lmKGtbZSsoa1tmPj4yXTw8Mik+PjJdfDApe2lmKGtbZz4+Ml18MClhPU1zKGtbZz4+Ml18MCxrW2UrKGtbZj4+Ml08PDIpPj4yXXwwKXwwO2Vsc2UgYT1rW2UrKGtbZj4+Ml08PDIpPj4yXXwwO2tbZz4+Ml09YX1rW2Y+PjJdPShrW2Y+PjJdfDApKzF9cj1oO3JldHVybiBrW2c+PjJdfDB9ZnVuY3Rpb24gTXMoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MDtnPXI7cj1yKzY0fDA7Yz1nKzUyfDA7ZD1nKzQ4fDA7Zj1nKzh8MDtlPWc7a1tjPj4yXT1hO2tbZD4+Ml09YjtrW2U+PjJdPWY7d2hpbGUoMSlpZigoa1soa1tjPj4yXXwwKSsyMD4+Ml18MCk+Pj4wPChrWyhrW2Q+PjJdfDApKzIwPj4yXXwwKT4+PjApe2tbKGtbZT4+Ml18MCkrMTI+PjJdPWtbYz4+Ml07a1tlPj4yXT1rW2M+PjJdO2tbYz4+Ml09a1soa1tjPj4yXXwwKSsxMj4+Ml07aWYoIShrW2M+PjJdfDApKXthPTQ7YnJlYWt9ZWxzZSBjb250aW51ZX1lbHNle2tbKGtbZT4+Ml18MCkrMTI+PjJdPWtbZD4+Ml07a1tlPj4yXT1rW2Q+PjJdO2tbZD4+Ml09a1soa1tkPj4yXXwwKSsxMj4+Ml07aWYoIShrW2Q+PjJdfDApKXthPTY7YnJlYWt9ZWxzZSBjb250aW51ZX1pZigoYXwwKT09NCl7a1soa1tlPj4yXXwwKSsxMj4+Ml09a1tkPj4yXTtmPWYrMTJ8MDtmPWtbZj4+Ml18MDtyPWc7cmV0dXJuIGZ8MH1lbHNlIGlmKChhfDApPT02KXtrWyhrW2U+PjJdfDApKzEyPj4yXT1rW2M+PjJdO2Y9ZisxMnwwO2Y9a1tmPj4yXXwwO3I9ZztyZXR1cm4gZnwwfXJldHVybiAwfWZ1bmN0aW9uIE5zKGEpe2E9YXwwO3ZhciBiPTAsYz0wO2M9cjtyPXIrMTZ8MDtiPWM7a1tiPj4yXT1hO3I9YztyZXR1cm4ga1trWyhrW2I+PjJdfDApKzMyPj4yXT4+Ml18MH1mdW5jdGlvbiBPcyhhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wO2Y9cjtyPXIrMTZ8MDtjPWYrMTJ8MDtkPWYrOHwwO2c9Zis0fDA7ZT1mO2tbZD4+Ml09YTtrW2c+PjJdPWI7Yj1FcyhrW2c+PjJdfDApfDA7a1tlPj4yXT1iO2I9a1tnPj4yXXwwO2lmKCEoa1tlPj4yXXwwKSl7a1tjPj4yXT1rWyhrW2tbKGtbZD4+Ml18MCkrMzI+PjJdPj4yXXwwKSsoMzQrYi0xPDwyKT4+Ml07Zz1rW2M+PjJdfDA7cj1mO3JldHVybiBnfDB9ZWxzZXtrW2M+PjJdPWtbKGtbKGtbKGtbZD4+Ml18MCkrMzI+PjJdfDApKyhrW2U+PjJdPDwyKT4+Ml18MCkrKCgoKGItMS00MDYyfDApPj4+MCklNDA5NnwwKTw8Mik+PjJdO2c9a1tjPj4yXXwwO3I9ZjtyZXR1cm4gZ3wwfXJldHVybiAwfWZ1bmN0aW9uIFBzKGEpe2E9YXwwO3ZhciBiPTAsYz0wO2M9cjtyPXIrMTZ8MDtiPWM7a1tiPj4yXT1hO3I9YztyZXR1cm4galsoa1tiPj4yXXwwKSsyNj4+MV18MH1mdW5jdGlvbiBRcyhhKXthPWF8MDt2YXIgYj0wLGM9MDtjPXI7cj1yKzE2fDA7Yj1jO2tbYj4+Ml09YTtpZigobVsoa1tiPj4yXXwwKSsyND4+MV18MCkmMilyaihrW2I+PjJdfDAsMSk7YT0oa1soa1tiPj4yXXwwKSsyOD4+Ml18MCkrMTJ8MDtrW2E+PjJdPShrW2E+PjJdfDApKy0xO2NjW2tbMTQ4Pj4yXSYyNTVdKGtbKGtbKGtbYj4+Ml18MCkrMjg+PjJdfDApKzQ0Pj4yXXwwLGtba1tiPj4yXT4+Ml18MCwxKTtyPWM7cmV0dXJufWZ1bmN0aW9uIFJzKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxpPTAsbD0wLG49MCxvPTAscD0wLHE9MCxzPTAsdD0wLHU9MCx2PTAsdz0wO3c9cjtyPXIrNjR8MDtzPXcrNTZ8MDtkPXcrNTJ8MDtlPXcrNDh8MDt0PXcrNDR8MDt1PXcrNDB8MDtuPXcrMzZ8MDtpPXcrMzJ8MDtvPXcrMjh8MDtmPXcrMjR8MDtnPXcrMjB8MDtwPXcrMTZ8MDtsPXcrMTJ8MDtxPXcrOHwwO3Y9dys0fDA7aD13O2tbZD4+Ml09YTtrW2U+PjJdPWI7a1t0Pj4yXT1jO2tbdT4+Ml09MDtrW24+PjJdPWtbKGtbZD4+Ml18MCkrNTIrMTY+PjJdO2lmKChrW24+PjJdfDApIT0wPyhqWyhrW2Q+PjJdfDApKzQwPj4xXXwwKSE9MDowKXtjPUVzKGtbKGtbZD4+Ml18MCkrMTAwPj4yXXwwKXwwO2tbbz4+Ml09YztjPUVzKGtbbj4+Ml18MCl8MDtrW2k+PjJdPWM7YTp3aGlsZSgxKXtpZighKChrW2k+PjJdfDApPj0oa1tvPj4yXXwwKT8oa1t1Pj4yXXwwKT09MDowKSl7ZD0xODticmVha31jPUZzKGtbZD4+Ml18MCxrW2k+PjJdfDAsZixnLHApfDA7a1t2Pj4yXT1jO2lmKGtbdj4+Ml18MCl7ZD03O2JyZWFrfWtbcT4+Ml09ODE5MjtjPVlzKGtbZT4+Ml18MCl8MDtrW2w+PjJdPWM7d2hpbGUoMSl7aWYoIShqWyhrW2Y+PjJdfDApKyhrW2w+PjJdPDwxKT4+MV18MCkpYnJlYWs7a1toPj4yXT0obVsoa1tmPj4yXXwwKSsoa1tsPj4yXTw8MSk+PjFdfDApKyhrW3A+PjJdfDApO2lmKCgoa1toPj4yXXwwKT4+PjA8PShrW24+PjJdfDApPj4+MD8oa1toPj4yXXwwKT4+PjA+PShrWyhrW2Q+PjJdfDApKzEwMD4+Ml18MCk+Pj4wOjApPyhrWyhrW2c+PjJdfDApKyhtWyhrW2Y+PjJdfDApKyhrW2w+PjJdPDwxKT4+MV08PDIpPj4yXXwwKT09KGtbZT4+Ml18MCk6MClrW3U+PjJdPWtbaD4+Ml07Yz1rW3E+PjJdfDA7a1txPj4yXT1jKy0xO2lmKCFjKXtkPTE1O2JyZWFrIGF9Yz1acyhrW2w+PjJdfDApfDA7a1tsPj4yXT1jfWtbaT4+Ml09KGtbaT4+Ml18MCkrLTF9aWYoKGR8MCk9PTcpe2tbcz4+Ml09a1t2Pj4yXTt2PWtbcz4+Ml18MDtyPXc7cmV0dXJuIHZ8MH1lbHNlIGlmKChkfDApPT0xNSl7dj1faig1NjM0NCl8MDtrW3M+PjJdPXY7dj1rW3M+PjJdfDA7cj13O3JldHVybiB2fDB9ZWxzZSBpZigoZHwwKT09MTgpe2tba1t0Pj4yXT4+Ml09a1t1Pj4yXTtrW3M+PjJdPTA7dj1rW3M+PjJdfDA7cj13O3JldHVybiB2fDB9fWtba1t0Pj4yXT4+Ml09MDtrW3M+PjJdPTA7dj1rW3M+PjJdfDA7cj13O3JldHVybiB2fDB9ZnVuY3Rpb24gU3MoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLGw9MCxtPTA7bT1yO3I9cis0OHwwO2M9bSszMnwwO2Q9bSsyOHwwO2Y9bSsyNHwwO2c9bSsyMHwwO2w9bSsxNnwwO2g9bSsxMnwwO2U9bTtqPW0rOHwwO2tbYz4+Ml09YTtrW2Q+PjJdPWI7a1tmPj4yXT1rWyhrW2M+PjJdfDApKzE2Pj4yXTtrW2c+PjJdPWtbKGtbYz4+Ml18MCkrMjA+PjJdO2tbbD4+Ml09MDtrW2g+PjJdPWtbKGtbZj4+Ml18MCkrMTYwPj4yXTtpZihrW2Q+PjJdfDApe2g9WHMoa1soa1tmPj4yXXwwKSsyMTY+PjJdfDAsa1tkPj4yXXwwLGtbaD4+Ml18MCxrWyhrW2M+PjJdfDApKzQ+PjJdfDApfDA7a1tsPj4yXT1ofWVsc2V7Yj1rWyhrW2Y+PjJdfDApKzE2MD4+Ml18MDtiPWtTKChrW2c+PjJdfDApLTF8MCwwLGJ8MCwoKGJ8MCk8MCk8PDMxPj4zMXwwKXwwO2E9ZTtrW2E+PjJdPWI7a1thKzQ+PjJdPUw7YT1lO2g9b3Moa1soa1tmPj4yXXwwKSs2ND4+Ml18MCxrWyhrW2M+PjJdfDApKzQ+PjJdfDAsa1toPj4yXXwwLGtbYT4+Ml18MCxrW2ErND4+Ml18MCl8MDtrW2w+PjJdPWg7a1tsPj4yXT0oa1tsPj4yXXwwKT09NTIyPzA6aH1pZigoa1tnPj4yXXwwKSE9MSl7bD1rW2w+PjJdfDA7cj1tO3JldHVybiBsfDB9aWYoa1tsPj4yXXwwKXtiPShrW2Y+PjJdfDApKzExMnwwO2Q9YisxNnwwO2Rve2lbYj4+MF09MjU1O2I9YisxfDB9d2hpbGUoKGJ8MCk8KGR8MCkpO2w9a1tsPj4yXXwwO3I9bTtyZXR1cm4gbHwwfWVsc2V7a1tqPj4yXT0oa1soa1tjPj4yXXwwKSs0Pj4yXXwwKSsyNDtiPShrW2Y+PjJdfDApKzExMnwwO2M9a1tqPj4yXXwwO2Q9YisxNnwwO2Rve2lbYj4+MF09aVtjPj4wXXwwO2I9YisxfDA7Yz1jKzF8MH13aGlsZSgoYnwwKTwoZHwwKSk7bD1rW2w+PjJdfDA7cj1tO3JldHVybiBsfDB9cmV0dXJuIDB9ZnVuY3Rpb24gVHMoYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wO2M9cjtyPXIrMTZ8MDtkPWMrNHwwO2I9YztrW2Q+PjJdPWE7a1tiPj4yXT1rWyhrW2Q+PjJdfDApKzE2Pj4yXTthPWtbZD4+Ml18MDtpZigobVsoa1tkPj4yXXwwKSsyND4+MV18MCkmMzIpe1VzKGEpO2Q9a1tiPj4yXXwwO1ZzKGQpO3I9YztyZXR1cm59ZWxzZXt1cyhhKTtkPWtbYj4+Ml18MDtWcyhkKTtyPWM7cmV0dXJufX1mdW5jdGlvbiBVcyhhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTAsZT0wO2I9cjtyPXIrMTZ8MDtjPWIrNHwwO2U9YjtrW2M+PjJdPWE7a1tlPj4yXT1rWyhrW2M+PjJdfDApKzE2Pj4yXTtkPShrW2U+PjJdfDApKzEyOHwwO2tbZD4+Ml09KGtbZD4+Ml18MCkrLTE7a1soa1tjPj4yXXwwKSsxMj4+Ml09a1soa1tlPj4yXXwwKSsxNDQ+PjJdO2tbKGtbZT4+Ml18MCkrMTQ0Pj4yXT1rW2M+PjJdO2Q9a1soa1tlPj4yXXwwKSs2ND4+Ml18MDthPWtbKGtbZT4+Ml18MCkrMTYwPj4yXXwwO2E9a1MoKGtbKGtbYz4+Ml18MCkrMjA+PjJdfDApLTF8MCwwLGF8MCwoKGF8MCk8MCk8PDMxPj4zMXwwKXwwO1dzKGQsYSxMLGtbKGtbYz4+Ml18MCkrND4+Ml18MCl8MDtyPWI7cmV0dXJufWZ1bmN0aW9uIFZzKGEpe2E9YXwwO3ZhciBiPTAsYz0wO2M9cjtyPXIrMTZ8MDtiPWM7a1tiPj4yXT1hO2lmKGtbKGtbYj4+Ml18MCkrMTI4Pj4yXXwwKXtyPWM7cmV0dXJufWlmKGVqKGtbKGtbYj4+Ml18MCkrMjEyPj4yXXwwKXwwKXtyPWM7cmV0dXJufXhyKGtbYj4+Ml18MCk7cj1jO3JldHVybn1mdW5jdGlvbiBXcyhhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDt2YXIgZT0wO2U9cjtyPXIrMTZ8MDtrW2UrMTI+PjJdPWE7YT1lO2tbYT4+Ml09YjtrW2ErND4+Ml09YztrW2UrOD4+Ml09ZDtyPWU7cmV0dXJuIDB9ZnVuY3Rpb24gWHMoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxpPTAsaj0wLGw9MDtlPXI7cj1yKzMyfDA7aT1lKzI0fDA7bD1lKzIwfDA7Zj1lKzE2fDA7aD1lKzEyfDA7Zz1lKzh8MDtqPWU7a1tpPj4yXT1hO2tbbD4+Ml09YjtrW2Y+PjJdPWM7a1toPj4yXT1kO2tbZz4+Ml09bVsoa1tpPj4yXXwwKSs1MisxND4+MV07a1tnPj4yXT0oa1tnPj4yXSY2NTAyNCkrKChrW2c+PjJdJjEpPDwxNik7ZD0oa1tnPj4yXXwwKSsyNHwwO2Q9a1MoKGtbbD4+Ml18MCktMXwwLDAsZHwwLCgoZHwwKTwwKTw8MzE+PjMxfDApfDA7ZD0kUigzMiwwLGR8MCxMfDApfDA7ZD0kUihkfDAsTHwwLDI0LDApfDA7YT1qO2tbYT4+Ml09ZDtrW2ErND4+Ml09TDthPWo7YT1vcyhrWyhrW2k+PjJdfDApKzg+PjJdfDAsa1toPj4yXXwwLChrW2Y+PjJdfDApPihrW2c+PjJdfDApP2tbZz4+Ml18MDprW2Y+PjJdfDAsa1thPj4yXXwwLGtbYSs0Pj4yXXwwKXwwO3I9ZTtyZXR1cm4gYXwwfWZ1bmN0aW9uIFlzKGEpe2E9YXwwO3ZhciBiPTAsYz0wO2M9cjtyPXIrMTZ8MDtiPWM7a1tiPj4yXT1hO3I9YztyZXR1cm4gKGtbYj4+Ml18MCkqMzgzJjgxOTF8MH1mdW5jdGlvbiBacyhhKXthPWF8MDt2YXIgYj0wLGM9MDtjPXI7cj1yKzE2fDA7Yj1jO2tbYj4+Ml09YTtyPWM7cmV0dXJuIChrW2I+PjJdfDApKzEmODE5MXwwfWZ1bmN0aW9uIF9zKGEpe2E9YXwwO3ZhciBiPTAsYz0wO2M9cjtyPXIrMTZ8MDtiPWM7a1tiPj4yXT1hO01yKGtbYj4+Ml18MCl8MDtpZigoalsoa1tiPj4yXXwwKSs0MD4+MV18MCk8MCl7cj1jO3JldHVybn1TcihrW2I+PjJdfDAsMysoalsoa1tiPj4yXXwwKSs0MD4+MV18MCl8MCk7alsoa1tiPj4yXXwwKSs0MD4+MV09LTE7cj1jO3JldHVybn1mdW5jdGlvbiAkcyhhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MDtjPXI7cj1yKzE2fDA7ZT1jKzR8MDtkPWM7a1tlPj4yXT1hO2tbZD4+Ml09YjtiPWdjW2tbKGtba1tlPj4yXT4+Ml18MCkrMjg+PjJdJjI1NV0oa1tlPj4yXXwwLGtbZD4+Ml18MCl8MDtyPWM7cmV0dXJuIGJ8MH1mdW5jdGlvbiBhdChhLGIsYyxkLGUsZixnLGgsail7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7dmFyIGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wO0E9cjtyPXIrNjR8MDt6PUErNTJ8MDt2PUErNDh8MDt3PUErNDR8MDtsPUErNDB8MDttPUErMzZ8MDtuPUErMzJ8MDtvPUErMjh8MDtwPUErMjR8MDtxPUErMjB8MDtzPUErMTZ8MDt5PUErMTJ8MDt0PUErOHwwO3g9QSs0fDA7dT1BO2tbdj4+Ml09YTtrW3c+PjJdPWI7a1tsPj4yXT1jO2tbbT4+Ml09ZDtrW24+PjJdPWU7a1tvPj4yXT1mO2tbcD4+Ml09ZztrW3E+PjJdPWg7a1tzPj4yXT1qO2tbdD4+Ml09MDtrW3g+PjJdPWtbdz4+Ml07a1t1Pj4yXT1rW2w+PjJdO2lmKGlbKGtbdj4+Ml18MCkrNDY+PjBdfDApe2tbej4+Ml09ODt6PWtbej4+Ml18MDtyPUE7cmV0dXJuIHp8MH1nPWZ0KGtbdj4+Ml18MCwxLDEpfDA7a1t5Pj4yXT1nO2lmKGtbeT4+Ml18MCl7a1t6Pj4yXT1rW3k+PjJdO3o9a1t6Pj4yXXwwO3I9QTtyZXR1cm4genwwfWlbKGtbdj4+Ml18MCkrNDU+PjBdPTE7ZG8gaWYoa1t3Pj4yXXwwKXtnPWd0KGtbdj4+Ml18MCxrW2w+PjJdfDAsa1ttPj4yXXwwLDAsMSl8MDtrW3k+PjJdPWc7aWYoIShrW3k+PjJdfDApKXtpWyhrW3Y+PjJdfDApKzQ0Pj4wXT0xO2JyZWFrfWlmKChrW3k+PjJdfDApPT01KXtrW3g+PjJdPTA7a1t1Pj4yXT0wO2tbeT4+Ml09MH19d2hpbGUoMCk7aWYoKChrW3k+PjJdfDApPT0wPyhnPWh0KGtbdj4+Ml18MCx0KXwwLGtbeT4+Ml09Zywoa1t0Pj4yXXwwKSE9MCk6MCk/KGtba1trWyhrW3Y+PjJdfDApKzQ+PjJdPj4yXT4+Ml18MCk+PTM6MClXcyhrWyhrW3Y+PjJdfDApKzQ+PjJdfDAsMCwwLDApfDA7aWYoIShrW3k+PjJdfDApKXtpZigoa1soa1t2Pj4yXXwwKSs1MisxNj4+Ml18MCkhPTA/KGc9aXQoa1t2Pj4yXXwwKXwwLChnfDApIT0oa1tvPj4yXXwwKSk6MCl7Zz1faig1NzA0OSl8MDtrW3k+PjJdPWd9ZWxzZXtnPWp0KGtbdj4+Ml18MCxrW3g+PjJdfDAsa1t1Pj4yXXwwLGtbbT4+Ml18MCxrW24+PjJdfDAsa1twPj4yXXwwKXwwO2tbeT4+Ml09Z31pZigoa1t5Pj4yXXwwKT09MHwoa1t5Pj4yXXwwKT09NSl7aWYoa1txPj4yXXwwKWtba1txPj4yXT4+Ml09a1soa1t2Pj4yXXwwKSs1MisxNj4+Ml07aWYoa1tzPj4yXXwwKXtnPWt0KGtbdj4+Ml18MCl8MDtrW2tbcz4+Ml0+PjJdPWtbZz4+Ml19fX1pZihrW3Q+PjJdfDApe2w9KGtbdj4+Ml18MCkrNTJ8MDttPWwrNDh8MDtkb3trW2w+PjJdPTA7bD1sKzR8MH13aGlsZSgobHwwKTwobXwwKSl9TXIoa1t2Pj4yXXwwKXwwO1VyKGtbdj4+Ml18MCwxLDEpO2lbKGtbdj4+Ml18MCkrNDU+PjBdPTA7aWYoKGtbeT4+Ml18MCk9PTA/KGtbdz4+Ml18MCkhPShrW3g+PjJdfDApOjApbD01O2Vsc2UgbD1rW3k+PjJdfDA7a1t6Pj4yXT1sO3o9a1t6Pj4yXXwwO3I9QTtyZXR1cm4genwwfWZ1bmN0aW9uIGJ0KGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wO2Q9cjtyPXIrMTZ8MDtnPWQrOHwwO2Y9ZCs0fDA7ZT1kO2tbZz4+Ml09YTtrW2Y+PjJdPWI7a1tlPj4yXT1jO1liW2tbKGtba1tnPj4yXT4+Ml18MCkrNDA+PjJdJjI1NV0oa1tnPj4yXXwwLGtbZj4+Ml18MCxrW2U+PjJdfDApfDA7cj1kO3JldHVybn1mdW5jdGlvbiBjdChhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaT0wO2k9cjtyPXIrMzJ8MDtoPWkrMTZ8MDtkPWkrMjR8MDtlPWkrOHwwO2c9aTtmPWkrMjB8MDtrW2Q+PjJdPWE7YT1lO2tbYT4+Ml09YjtrW2ErND4+Ml09YztnaygpO2E9Zmooa1soa1tkPj4yXXwwKSs4Pj4yXXwwLGcpfDA7a1tmPj4yXT1hO2lmKChrW2Y+PjJdfDApPT0wPyhhPWcsYj1rW2ErND4+Ml18MCxnPWUsYz1rW2crND4+Ml18MCwoYnwwKT4oY3wwKXwoKGJ8MCk9PShjfDApPyhrW2E+PjJdfDApPj4+MD4oa1tnPj4yXXwwKT4+PjA6MCkpOjApe2c9ZTtnPUVyKGtbKGtbZD4+Ml18MCkrOD4+Ml18MCxrW2c+PjJdfDAsa1tnKzQ+PjJdfDApfDA7a1tmPj4yXT1nfWhrKCk7aWYoIShrW2Y+PjJdfDApKXtyPWk7cmV0dXJufWc9a1tmPj4yXXwwO2tbaD4+Ml09a1soa1tkPj4yXXwwKSsxMDg+PjJdOyRkKGcsMjU5MDksaCk7cj1pO3JldHVybn1mdW5jdGlvbiBkdChhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTA7Zj1yO3I9cisxNnwwO2M9Zis4fDA7ZD1mKzR8MDtlPWY7a1tjPj4yXT1hO2tbZD4+Ml09YjtpZigobFsoa1tjPj4yXXwwKSs0Mz4+MF18MHwwKSE9Mil7ZXQoa1soa1tjPj4yXXwwKSs0Pj4yXXwwLGtbZD4+Ml18MCl8MDtyPWY7cmV0dXJufWtbZT4+Ml09MDt3aGlsZSgxKXtpZigoa1tlPj4yXXwwKT49KGtbKGtbYz4+Ml18MCkrMjQ+PjJdfDApKWJyZWFrO1VkKGtbKGtbKGtbYz4+Ml18MCkrMzI+PjJdfDApKyhrW2U+PjJdPDwyKT4+Ml18MCk7a1soa1soa1tjPj4yXXwwKSszMj4+Ml18MCkrKGtbZT4+Ml08PDIpPj4yXT0wO2tbZT4+Ml09KGtbZT4+Ml18MCkrMX1yPWY7cmV0dXJufWZ1bmN0aW9uIGV0KGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wO2M9cjtyPXIrMTZ8MDtlPWMrNHwwO2Q9YztrW2U+PjJdPWE7a1tkPj4yXT1iO2E9Z2Nba1soa1trW2U+PjJdPj4yXXwwKSs2ND4+Ml0mMjU1XShrW2U+PjJdfDAsa1tkPj4yXXwwKXwwO3I9YztyZXR1cm4gYXwwfWZ1bmN0aW9uIGZ0KGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTA7aj1yO3I9ciszMnwwO2Q9aisxNnwwO2U9aisxMnwwO2Y9ais4fDA7Zz1qKzR8MDtoPWo7a1tlPj4yXT1hO2tbZj4+Ml09YjtrW2c+PjJdPWM7aWYoaVsoa1tlPj4yXXwwKSs0Mz4+MF18MCl7a1tkPj4yXT0wO2g9a1tkPj4yXXwwO3I9ajtyZXR1cm4gaHwwfWVsc2V7YT1UcihrWyhrW2U+PjJdfDApKzQ+PjJdfDAsa1tmPj4yXXwwLGtbZz4+Ml18MCwxMCl8MDtrW2g+PjJdPWE7a1tkPj4yXT1rW2g+PjJdO2g9a1tkPj4yXXwwO3I9ajtyZXR1cm4gaHwwfXJldHVybiAwfWZ1bmN0aW9uIGd0KGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGk9MCxqPTAsbD0wLG09MDttPXI7cj1yKzMyfDA7Zj1tKzIwfDA7Zz1tKzE2fDA7aD1tKzEyfDA7aT1tKzh8MDtqPW0rNHwwO2w9bTtrW2Y+PjJdPWE7a1tnPj4yXT1iO2tbaD4+Ml09YztrW2k+PjJdPWQ7a1tqPj4yXT1lO3doaWxlKDEpe2I9ZnQoa1tmPj4yXXwwLGtbaT4+Ml18MCxrW2o+PjJdfDApfDA7a1tsPj4yXT1iO2lmKCEoKGtbZz4+Ml18MCkhPTAmKGtbbD4+Ml18MCk9PTUpKXtmPTQ7YnJlYWt9aWYoIShiY1trW2c+PjJdJjI1NV0oa1toPj4yXXwwKXwwKSl7Zj00O2JyZWFrfX1pZigoZnwwKT09NCl7cj1tO3JldHVybiBrW2w+PjJdfDB9cmV0dXJuIDB9ZnVuY3Rpb24gaHQoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wO2o9cjtyPXIrMzJ8MDtjPWorMjB8MDtkPWorMTZ8MDtlPWorMTJ8MDtoPWorOHwwO2Y9ais0fDA7Zz1qO2tbZD4+Ml09YTtrW2U+PjJdPWI7YT1HcyhrW2Q+PjJdfDAsMCxnKXwwO2tbaD4+Ml09YTtpZihrW2g+PjJdfDApe2tbYz4+Ml09a1toPj4yXTtoPWtbYz4+Ml18MDtyPWo7cmV0dXJuIGh8MH1pZihrW2c+PjJdfDApYj13dChrW2Q+PjJdfDAsa1tlPj4yXXwwKXwwO2Vsc2UgYj0xO2tbZj4+Ml09YjtkbyBpZihrW2Y+PjJdfDApe2I9a1tkPj4yXXwwO2lmKChsWyhrW2Q+PjJdfDApKzQ2Pj4wXXwwKSYyKXtnPVJyKGIsMCl8MDtrW2g+PjJdPWc7aWYoZylicmVhaztTcihrW2Q+PjJdfDAsMCk7a1toPj4yXT0yNjQ7YnJlYWt9YT1mdChiLDAsMSl8MDtrW2g+PjJdPWE7aWYoIWEpe2lbKGtbZD4+Ml18MCkrNDQ+PjBdPTE7Zz1HcyhrW2Q+PjJdfDAsMCxnKXwwO2tbaD4+Ml09ZztpZigwPT0oZ3wwKT8oZz13dChrW2Q+PjJdfDAsa1tlPj4yXXwwKXwwLGtbZj4+Ml09Zywoa1tmPj4yXXwwKSE9MCk6MCl7Zz14dChrW2Q+PjJdfDApfDA7a1toPj4yXT1nO2tba1tlPj4yXT4+Ml09MX1pWyhrW2Q+PjJdfDApKzQ0Pj4wXT0wO1VyKGtbZD4+Ml18MCwwLDEpfX13aGlsZSgwKTtpZigoa1tmPj4yXXwwKT09MD8oa1soa1tkPj4yXXwwKSs1Mj4+Ml18MCkhPTMwMDdlMzowKXtnPXl0KDU1ODk3KXwwO2tbaD4+Ml09Z31rW2M+PjJdPWtbaD4+Ml07aD1rW2M+PjJdfDA7cj1qO3JldHVybiBofDB9ZnVuY3Rpb24gaXQoYSl7YT1hfDA7dmFyIGI9MCxjPTA7Yz1yO3I9cisxNnwwO2I9YztrW2I+PjJdPWE7cj1jO3JldHVybiAoKG1bKGtbYj4+Ml18MCkrNTIrMTQ+PjFdfDApJjY1MDI0KSsoKChtWyhrW2I+PjJdfDApKzUyKzE0Pj4xXXwwKSYxKTw8MTYpfDB9ZnVuY3Rpb24ganQoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGk9MCxqPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTAsRT0wLEY9MCxHPTA7Rz1yO3I9cisxMTJ8MDtnPUcrMTA0fDA7aD1HKzEwMHwwO2k9Rys5NnwwO2o9Rys5MnwwO2w9Rys4OHwwO209Rys4NHwwO249Rys4MHwwO0E9Rys3NnwwO0Q9Rys3MnwwO3o9Rys2OHwwO3A9Rys2NHwwO3E9Rys2MHwwO3U9Rys1NnwwO3Q9Rys1MnwwO289Rys0OHwwO3k9Rys0NHwwO0U9Rys0MHwwO3g9RysyNHwwO3Y9RyszNnwwO3c9RysxNnwwO3M9Rys4fDA7Qz1HO0I9RyszMnwwO2tbaD4+Ml09YTtrW2k+PjJdPWI7a1tqPj4yXT1jO2tbbD4+Ml09ZDtrW20+PjJdPWU7a1tuPj4yXT1mO2tbQT4+Ml09MDtrW3o+PjJdPTA7a1twPj4yXT0wO2tbcT4+Ml09MDtmPWl0KGtbaD4+Ml18MCl8MDtrW0Q+PjJdPWY7Zj1rdChrW2g+PjJdfDApfDA7a1t5Pj4yXT1mO2E6ZG8gaWYoKGtba1t5Pj4yXT4+Ml18MCk+Pj4wPChrWyhrW2g+PjJdfDApKzUyKzE2Pj4yXXwwKT4+PjApe2Y9bHQoa1toPj4yXXwwLHopfDA7a1tBPj4yXT1mO2lmKGtbQT4+Ml18MCl7a1tnPj4yXT1rW0E+PjJdO0Y9a1tnPj4yXXwwO3I9RztyZXR1cm4gRnwwfWtbdT4+Ml09a1soa1toPj4yXXwwKSs1MisxNj4+Ml07a1t0Pj4yXT1rWyhrW2g+PjJdfDApKzUyKzIwPj4yXTtrW28+PjJdPTE7d2hpbGUoMSl7aWYoKGtbbz4+Ml18MCk+PTUpYnJlYWs7a1tFPj4yXT1rWyhrW3k+PjJdfDApKzQrKGtbbz4+Ml08PDIpPj4yXTtkbyBpZigoa1t1Pj4yXXwwKT4+PjA+KGtbRT4+Ml18MCk+Pj4wKXtmPWd0KGtbaD4+Ml18MCxrW2o+PjJdfDAsa1tsPj4yXXwwLDMrKGtbbz4+Ml18MCl8MCwxKXwwO2tbQT4+Ml09ZjtpZighKGtbQT4+Ml18MCkpe2tbKGtbeT4+Ml18MCkrNCsoa1tvPj4yXTw8Mik+PjJdPShrW28+PjJdfDApPT0xP2tbdT4+Ml18MDotMTtVcihrW2g+PjJdfDAsMysoa1tvPj4yXXwwKXwwLDEpO2JyZWFrfWlmKChrW0E+PjJdfDApIT01KWJyZWFrIGE7a1t1Pj4yXT1rW0U+PjJdO2tbaj4+Ml09MH13aGlsZSgwKTtrW28+PjJdPShrW28+PjJdfDApKzF9aWYoKGtba1t5Pj4yXT4+Ml18MCk+Pj4wPChrW3U+PjJdfDApPj4+MD8oRj1ndChrW2g+PjJdfDAsa1tqPj4yXXwwLGtbbD4+Ml18MCwzLDEpfDAsa1tBPj4yXT1GLChGfDApPT0wKTowKXtrW3Y+PjJdPWtba1t5Pj4yXT4+Ml07a1soa1t5Pj4yXXwwKSszMj4+Ml09a1t1Pj4yXTtpZihrW20+PjJdfDApe0Y9RnIoa1soa1toPj4yXXwwKSs4Pj4yXXwwLGtbbT4+Ml18MCl8MDtrW0E+PjJdPUZ9aWYoKChrW0E+PjJdfDApPT0wPyhmPWtbRD4+Ml18MCxmPWtTKGtbdD4+Ml18MCwwLGZ8MCwoKGZ8MCk8MCk8PDMxPj4zMXwwKXwwLEY9dyxrW0Y+PjJdPWYsa1tGKzQ+PjJdPUwsRj1maihrWyhrW2g+PjJdfDApKzQ+PjJdfDAseCl8MCxrW0E+PjJdPUYsKGtbQT4+Ml18MCk9PTApOjApPyhmPXgsYz1rW2YrND4+Ml18MCxGPXcsRT1rW0YrND4+Ml18MCwoY3wwKTwoRXwwKXwoKGN8MCk9PShFfDApPyhrW2Y+PjJdfDApPj4+MDwoa1tGPj4yXXwwKT4+PjA6MCkpOjApYnQoa1soa1toPj4yXXwwKSs0Pj4yXXwwLDUsdyk7Yjp3aGlsZSgxKXtpZihrW0E+PjJdfDApYnJlYWs7d2hpbGUoMSl7aWYobXQoa1t6Pj4yXXwwLHAscSl8MClicmVhayBiO2lmKChrW3E+PjJdfDApPj4+MDw9KGtbdj4+Ml18MCk+Pj4wKWNvbnRpbnVlIGI7aWYoKGtbcT4+Ml18MCk+Pj4wPihrW3U+PjJdfDApPj4+MCljb250aW51ZSBiO2lmKChrW3A+PjJdfDApPj4+MD4oa1t0Pj4yXXwwKT4+PjApY29udGludWUgYjtmPShrW0Q+PjJdfDApKzI0fDA7Zj1rUygoa1txPj4yXXwwKS0xfDAsMCxmfDAsKChmfDApPDApPDwzMT4+MzF8MCl8MDtmPSRSKDMyLDAsZnwwLEx8MCl8MDtmPSRSKGZ8MCxMfDAsMjQsMCl8MDtGPXM7a1tGPj4yXT1mO2tbRis0Pj4yXT1MO0Y9cztGPW9zKGtbKGtbaD4+Ml18MCkrOD4+Ml18MCxrW24+PjJdfDAsa1tEPj4yXXwwLGtbRj4+Ml18MCxrW0YrND4+Ml18MCl8MDtrW0E+PjJdPUY7aWYoa1tBPj4yXXwwKWJyZWFrIGI7Zj1rW0Q+PjJdfDA7Zj1rUygoa1twPj4yXXwwKS0xfDAsMCxmfDAsKChmfDApPDApPDwzMT4+MzF8MCl8MDtGPXM7a1tGPj4yXT1mO2tbRis0Pj4yXT1MO0Y9cztGPVNnKGtbKGtbaD4+Ml18MCkrND4+Ml18MCxrW24+PjJdfDAsa1tEPj4yXXwwLGtbRj4+Ml18MCxrW0YrND4+Ml18MCl8MDtrW0E+PjJdPUY7aWYoISgoa1tBPj4yXXwwKT09MCYoa1tBPj4yXXwwKT09MCkpYnJlYWsgYn19aWYoIShrW0E+PjJdfDApKXtmPWtbdT4+Ml18MDtGPShOcyhrW2g+PjJdfDApfDApKzE2fDA7aWYoKGZ8MCk9PShrW0Y+PjJdfDApPyhmPWtbRD4+Ml18MCxmPWtTKGtbKGtbaD4+Ml18MCkrNTIrMjA+PjJdfDAsMCxmfDAsKChmfDApPDApPDwzMT4+MzF8MCl8MCxGPUMsa1tGPj4yXT1mLGtbRis0Pj4yXT1MLEY9QyxGPUVyKGtbKGtbaD4+Ml18MCkrND4+Ml18MCxrW0Y+PjJdfDAsa1tGKzQ+PjJdfDApfDAsa1tBPj4yXT1GLChrW0E+PjJdfDApPT0wJihrW20+PjJdfDApIT0wKTowKXtGPUZyKGtbKGtbaD4+Ml18MCkrND4+Ml18MCxrW20+PjJdfDApfDA7a1tBPj4yXT1GfWlmKCEoa1tBPj4yXXwwKSlrW2tbeT4+Ml0+PjJdPWtbdT4+Ml19VXIoa1toPj4yXXwwLDMsMSl9aWYoKGtbQT4+Ml18MCk9PTUpe2tbQT4+Ml09MDtGPTM2fWVsc2UgRj0zNn1lbHNlIEY9MzY7d2hpbGUoMCk7ZG8gaWYoKEZ8MCk9PTM2PyhrW0E+PjJdfDApPT0wJihrW2k+PjJdfDApIT0wOjApe2lmKChrW2tbeT4+Ml0+PjJdfDApPj4+MDwoa1soa1toPj4yXXwwKSs1MisxNj4+Ml18MCk+Pj4wKXtrW0E+PjJdPTU7YnJlYWt9aWYoKGtbaT4+Ml18MCk+PTI/KGFlKDQsQiksRj1ndChrW2g+PjJdfDAsa1tqPj4yXXwwLGtbbD4+Ml18MCw0LDQpfDAsa1tBPj4yXT1GLChrW0E+PjJdfDApPT0wKTowKXtpZigoa1tpPj4yXXwwKT09Myl7bnQoa1toPj4yXXwwLGtbQj4+Ml18MCk7Rj1FcihrWyhrW2g+PjJdfDApKzg+PjJdfDAsMCwwKXwwO2tbQT4+Ml09Rn1VcihrW2g+PjJdfDAsNCw0KX19d2hpbGUoMCk7b3Qoa1t6Pj4yXXwwKTtrW2c+PjJdPWtbQT4+Ml07Rj1rW2c+PjJdfDA7cj1HO3JldHVybiBGfDB9ZnVuY3Rpb24ga3QoYSl7YT1hfDA7dmFyIGI9MCxjPTA7Yz1yO3I9cisxNnwwO2I9YztrW2I+PjJdPWE7cj1jO3JldHVybiAoa1trWyhrW2I+PjJdfDApKzMyPj4yXT4+Ml18MCkrOTZ8MH1mdW5jdGlvbiBsdChhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wLGg9MCxpPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscz0wLHQ9MCx1PTAsdj0wO3Y9cjtyPXIrNjR8MDtjPXYrNjB8MDtkPXYrNTZ8MDtlPXYrNTJ8MDt0PXYrNDh8MDtzPXYrNDR8MDttPXYrNDB8MDtwPXYrMzZ8MDtsPXYrMzJ8MDtpPXYrMjh8MDt1PXYrMjR8MDtmPXYrMjB8MDtuPXYrMTZ8MDtoPXYrMTJ8MDtvPXYrOHwwO3E9dis0fDA7Zz12O2tbZD4+Ml09YTtrW2U+PjJdPWI7a1t1Pj4yXT0wO2tbbT4+Ml09a1soa1tkPj4yXXwwKSs1MisxNj4+Ml07Yj0oRXMoa1ttPj4yXXwwKXwwKSsxfDA7a1tzPj4yXT1iO2tbcD4+Ml09MjgrKCgoa1tzPj4yXXwwKS0xfDApKjIwfDApKyhrW20+PjJdPDwxKTtiPWtbcD4+Ml18MDtiPVRkKGIsKChifDApPDApPDwzMT4+MzEpfDA7a1t0Pj4yXT1iO2lmKCEoa1t0Pj4yXXwwKSl7a1tjPj4yXT03O3U9a1tjPj4yXXwwO3I9djtyZXR1cm4gdXwwfWRTKGtbdD4+Ml18MCwwLGtbcD4+Ml18MCl8MDtrWyhrW3Q+PjJdfDApKzQ+PjJdPWtbcz4+Ml07Yj1UZCgoKGtbbT4+Ml18MCk+Pj4wPjQwOTY/NDA5NjprW20+PjJdfDApPDwxLDApfDA7a1tpPj4yXT1iO2lmKCEoa1tpPj4yXXwwKSlrW3U+PjJdPTc7a1tsPj4yXT0wO3doaWxlKDEpe2lmKGtbdT4+Ml18MClicmVhaztpZigoa1tsPj4yXXwwKT49KGtbcz4+Ml18MCkpYnJlYWs7Yj1GcyhrW2Q+PjJdfDAsa1tsPj4yXXwwLGYsaCxuKXwwO2tbdT4+Ml09YjtpZighKGtbdT4+Ml18MCkpe2tbaD4+Ml09KGtbaD4+Ml18MCkrNDtpZigoKGtbbD4+Ml18MCkrMXwwKT09KGtbcz4+Ml18MCkpa1txPj4yXT0oa1ttPj4yXXwwKS0oa1tuPj4yXXwwKTtlbHNlIGtbcT4+Ml09KChrW2Y+PjJdfDApLShrW2g+PjJdfDApfDApLzR8MDtrW2c+PjJdPShrW3Q+PjJdfDApKzgrKChrWyhrW3Q+PjJdfDApKzQ+PjJdfDApKjIwfDApKyhrW24+PjJdPDwxKTtrW24+PjJdPShrW24+PjJdfDApKzE7a1tvPj4yXT0wO3doaWxlKDEpe2lmKChrW28+PjJdfDApPj0oa1txPj4yXXwwKSlicmVhaztqWyhrW2c+PjJdfDApKyhrW28+PjJdPDwxKT4+MV09a1tvPj4yXTtrW28+PjJdPShrW28+PjJdfDApKzF9dXQoa1toPj4yXXwwLGtbaT4+Ml18MCxrW2c+PjJdfDAscSk7a1soa1t0Pj4yXXwwKSs4Kygoa1tsPj4yXXwwKSoyMHwwKSsxNj4+Ml09a1tuPj4yXTtrWyhrW3Q+PjJdfDApKzgrKChrW2w+PjJdfDApKjIwfDApKzEyPj4yXT1rW3E+PjJdO2tbKGtbdD4+Ml18MCkrOCsoKGtbbD4+Ml18MCkqMjB8MCkrND4+Ml09a1tnPj4yXTtrWyhrW3Q+PjJdfDApKzgrKChrW2w+PjJdfDApKjIwfDApKzg+PjJdPWtbaD4+Ml19a1tsPj4yXT0oa1tsPj4yXXwwKSsxfVVkKGtbaT4+Ml18MCk7aWYoa1t1Pj4yXXwwKW90KGtbdD4+Ml18MCk7a1trW2U+PjJdPj4yXT1rW3Q+PjJdO2tbYz4+Ml09a1t1Pj4yXTt1PWtbYz4+Ml18MDtyPXY7cmV0dXJuIHV8MH1mdW5jdGlvbiBtdChhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaT0wLGo9MCxsPTAsbj0wLG89MDtvPXI7cj1yKzMyfDA7ZD1vKzI4fDA7ZT1vKzI0fDA7Zj1vKzIwfDA7aD1vKzE2fDA7aj1vKzEyfDA7Zz1vKzh8MDtsPW8rNHwwO2k9bztrW2Q+PjJdPWE7a1tlPj4yXT1iO2tbZj4+Ml09YztrW2o+PjJdPS0xO2tbaD4+Ml09a1trW2Q+PjJdPj4yXTtrW2c+PjJdPShrWyhrW2Q+PjJdfDApKzQ+PjJdfDApLTE7d2hpbGUoMSl7aWYoKGtbZz4+Ml18MCk8MClicmVhaztrW2w+PjJdPShrW2Q+PjJdfDApKzgrKChrW2c+PjJdfDApKjIwfDApO3doaWxlKDEpe2lmKChrW2tbbD4+Ml0+PjJdfDApPj0oa1soa1tsPj4yXXwwKSsxMj4+Ml18MCkpYnJlYWs7a1tpPj4yXT1rWyhrWyhrW2w+PjJdfDApKzg+PjJdfDApKygobVsoa1soa1tsPj4yXXwwKSs0Pj4yXXwwKSsoa1trW2w+PjJdPj4yXTw8MSk+PjFdfDApPDwyKT4+Ml07aWYoKGtbaT4+Ml18MCk+Pj4wPihrW2g+PjJdfDApPj4+MCl7bj02O2JyZWFrfWI9a1tsPj4yXXwwO2tbYj4+Ml09KGtbYj4+Ml18MCkrMX1pZigobnwwKT09Nj8obj0wLChrW2k+PjJdfDApPj4+MDwoa1tqPj4yXXwwKT4+PjApOjApe2tbaj4+Ml09a1tpPj4yXTtrW2tbZj4+Ml0+PjJdPShrWyhrW2w+PjJdfDApKzE2Pj4yXXwwKSsobVsoa1soa1tsPj4yXXwwKSs0Pj4yXXwwKSsoa1trW2w+PjJdPj4yXTw8MSk+PjFdfDApfWtbZz4+Ml09KGtbZz4+Ml18MCkrLTF9bj1rW2o+PjJdfDA7a1trW2Q+PjJdPj4yXT1uO2tba1tlPj4yXT4+Ml09bjtyPW87cmV0dXJuIChrW2o+PjJdfDApPT0tMXwwfWZ1bmN0aW9uIG50KGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wO2U9cjtyPXIrMzJ8MDtmPWUrMTZ8MDtnPWUrMTJ8MDtkPWUrOHwwO2M9ZSs0fDA7aD1lO2tbZj4+Ml09YTtrW2c+PjJdPWI7Yj1rdChrW2Y+PjJdfDApfDA7a1tkPj4yXT1iO2tbaD4+Ml09KGtbZj4+Ml18MCkrNTIrMzI7Yj0oa1tmPj4yXXwwKSsxMTJ8MDtrW2I+PjJdPShrW2I+PjJdfDApKzE7a1soa1tmPj4yXXwwKSs1MisxNj4+Ml09MDtiPWtbaD4+Ml18MDtwdChiLDErKHFyKGtbaD4+Ml18MCl8MCl8MCk7a1soa1tmPj4yXXwwKSs1MiszMis0Pj4yXT1rW2c+PjJdO3F0KGtbZj4+Ml18MCk7a1trW2Q+PjJdPj4yXT0wO2tbKGtbZD4+Ml18MCkrMzI+PjJdPTA7a1soa1tkPj4yXXwwKSs0KzQ+PjJdPTA7a1tjPj4yXT0yO3doaWxlKDEpe2lmKChrW2M+PjJdfDApPj01KWJyZWFrO2tbKGtbZD4+Ml18MCkrNCsoa1tjPj4yXTw8Mik+PjJdPS0xO2tbYz4+Ml09KGtbYz4+Ml18MCkrMX1yPWU7cmV0dXJufWZ1bmN0aW9uIG90KGEpe2E9YXwwO3ZhciBiPTAsYz0wO2I9cjtyPXIrMTZ8MDtjPWI7a1tjPj4yXT1hO1VkKGtbYz4+Ml18MCk7cj1iO3JldHVybn1mdW5jdGlvbiBwdChhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MDtjPXI7cj1yKzE2fDA7ZD1jKzR8MDtlPWM7a1tkPj4yXT1hO2tbZT4+Ml09YjtpW2tbZD4+Ml0+PjBdPShrW2U+PjJdfDApPj4+MjQ7aVsoa1tkPj4yXXwwKSsxPj4wXT0oa1tlPj4yXXwwKT4+PjE2O2lbKGtbZD4+Ml18MCkrMj4+MF09KGtbZT4+Ml18MCk+Pj44O2lbKGtbZD4+Ml18MCkrMz4+MF09a1tlPj4yXTtyPWM7cmV0dXJufWZ1bmN0aW9uIHF0KGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MCxlPTAsZj0wO2Y9cjtyPXIrMTZ8MDtkPWYrOHwwO2U9Zis0fDA7a1tkPj4yXT1hO2E9TnMoa1tkPj4yXXwwKXwwO2tbZT4+Ml09YTtrW2Y+PjJdPTQwO2lbKGtbZD4+Ml18MCkrNTIrMTI+PjBdPTE7a1soa1tkPj4yXXwwKSs1Mj4+Ml09MzAwN2UzO3J0KDEsKGtbZD4+Ml18MCkrNTJ8MCw0MCwwLChrW2Q+PjJdfDApKzUyKzQwfDApO2E9KGtbZT4+Ml18MCkrNDh8MDtiPShrW2Q+PjJdfDApKzUyfDA7Yz1hKzQ4fDA7ZG97aVthPj4wXT1pW2I+PjBdfDA7YT1hKzF8MDtiPWIrMXwwfXdoaWxlKChhfDApPChjfDApKTtzdChrW2Q+PjJdfDApO2E9a1tlPj4yXXwwO2I9KGtbZD4+Ml18MCkrNTJ8MDtjPWErNDh8MDtkb3tpW2E+PjBdPWlbYj4+MF18MDthPWErMXwwO2I9YisxfDB9d2hpbGUoKGF8MCk8KGN8MCkpO3I9ZjtyZXR1cm59ZnVuY3Rpb24gcnQoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaT0wLGo9MCxsPTAsbT0wLG49MCxvPTAscD0wO249cjtyPXIrNDh8MDtmPW4rMzJ8MDtwPW4rMjh8MDtvPW4rMjR8MDtnPW4rMjB8MDtoPW4rMTZ8MDtsPW4rMTJ8MDttPW4rOHwwO2k9bis0fDA7aj1uO2tbZj4+Ml09YTtrW3A+PjJdPWI7a1tvPj4yXT1jO2tbZz4+Ml09ZDtrW2g+PjJdPWU7a1tpPj4yXT1rW3A+PjJdO2tbaj4+Ml09KGtbcD4+Ml18MCkrKGtbbz4+Ml18MCk7aWYoa1tnPj4yXXwwKXtrW2w+PjJdPWtba1tnPj4yXT4+Ml07a1ttPj4yXT1rWyhrW2c+PjJdfDApKzQ+PjJdfWVsc2V7a1ttPj4yXT0wO2tbbD4+Ml09MH1pZihrW2Y+PjJdfDApe2Rve3A9a1tpPj4yXXwwO2tbaT4+Ml09cCs0O2tbbD4+Ml09KGtbbD4+Ml18MCkrKChrW3A+PjJdfDApKyhrW20+PjJdfDApKTtwPWtbaT4+Ml18MDtrW2k+PjJdPXArNDtrW20+PjJdPShrW20+PjJdfDApKygoa1twPj4yXXwwKSsoa1tsPj4yXXwwKSl9d2hpbGUoKGtbaT4+Ml18MCk+Pj4wPChrW2o+PjJdfDApPj4+MCk7cD1rW2w+PjJdfDA7bz1rW2g+PjJdfDA7a1tvPj4yXT1wO289a1ttPj4yXXwwO3A9a1toPj4yXXwwO3A9cCs0fDA7a1twPj4yXT1vO3I9bjtyZXR1cm59ZWxzZXtkb3trW2w+PjJdPShrW2w+PjJdfDApKygoKGtba1tpPj4yXT4+Ml0mMjU1KTw8MjQpKygoa1trW2k+PjJdPj4yXSY2NTI4MCk8PDgpKygoa1trW2k+PjJdPj4yXSYxNjcxMTY4MCk+Pj44KSsoKGtba1tpPj4yXT4+Ml0mLTE2Nzc3MjE2KT4+PjI0KSsoa1ttPj4yXXwwKSk7a1ttPj4yXT0oa1ttPj4yXXwwKSsoKChrWyhrW2k+PjJdfDApKzQ+PjJdJjI1NSk8PDI0KSsoKGtbKGtbaT4+Ml18MCkrND4+Ml0mNjUyODApPDw4KSsoKGtbKGtbaT4+Ml18MCkrND4+Ml0mMTY3MTE2ODApPj4+OCkrKChrWyhrW2k+PjJdfDApKzQ+PjJdJi0xNjc3NzIxNik+Pj4yNCkrKGtbbD4+Ml18MCkpO2tbaT4+Ml09KGtbaT4+Ml18MCkrOH13aGlsZSgoa1tpPj4yXXwwKT4+PjA8KGtbaj4+Ml18MCk+Pj4wKTtwPWtbbD4+Ml18MDtvPWtbaD4+Ml18MDtrW28+PjJdPXA7bz1rW20+PjJdfDA7cD1rW2g+PjJdfDA7cD1wKzR8MDtrW3A+PjJdPW87cj1uO3JldHVybn19ZnVuY3Rpb24gc3QoYSl7YT1hfDA7dmFyIGI9MCxjPTA7Yz1yO3I9cisxNnwwO2I9YztrW2I+PjJdPWE7aWYoKGxbKGtbYj4+Ml18MCkrNDM+PjBdfDB8MCk9PTIpe3I9YztyZXR1cm59dHQoa1soa1tiPj4yXXwwKSs0Pj4yXXwwKTtyPWM7cmV0dXJufWZ1bmN0aW9uIHR0KGEpe2E9YXwwO3ZhciBiPTAsYz0wO2I9cjtyPXIrMTZ8MDtjPWI7a1tjPj4yXT1hO19iW2tbKGtba1tjPj4yXT4+Ml18MCkrNjA+PjJdJjI1NV0oa1tjPj4yXXwwKTtyPWI7cmV0dXJufWZ1bmN0aW9uIHV0KGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaT0wLGo9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxzPTA7cz1yO3I9cisxNjB8MDtlPXMrMTQ0fDA7Zj1zKzE0MHwwO2c9cysxMzZ8MDtoPXMrMTMyfDA7bj1zKzEyOHwwO289cysxMjR8MDtpPXMrMTIwfDA7bD1zKzExNnwwO209cysxMTJ8MDtqPXMrOHwwO3A9cys0fDA7cT1zO2tbZT4+Ml09YTtrW2Y+PjJdPWI7a1tnPj4yXT1jO2tbaD4+Ml09ZDtrW24+PjJdPWtba1toPj4yXT4+Ml07a1tvPj4yXT0wO2tbaT4+Ml09MDtrW20+PjJdPTA7Yj1qO2E9YisxMDR8MDtkb3trW2I+PjJdPTA7Yj1iKzR8MH13aGlsZSgoYnwwKTwoYXwwKSk7a1tsPj4yXT0wO3doaWxlKDEpe2lmKChrW2w+PjJdfDApPj0oa1tuPj4yXXwwKSlicmVhaztrW28+PjJdPTE7a1tpPj4yXT0oa1tnPj4yXXwwKSsoa1tsPj4yXTw8MSk7a1ttPj4yXT0wO3doaWxlKDEpe2lmKCEoa1tsPj4yXSYxPDxrW20+PjJdKSlicmVhaztrW3A+PjJdPWorKGtbbT4+Ml08PDMpO3Z0KGtbZT4+Ml18MCxrWyhrW3A+PjJdfDApKzQ+PjJdfDAsa1trW3A+PjJdPj4yXXwwLGksbyxrW2Y+PjJdfDApO2tbbT4+Ml09KGtbbT4+Ml18MCkrMX1rW2orKGtbbT4+Ml08PDMpKzQ+PjJdPWtbaT4+Ml07a1tqKyhrW20+PjJdPDwzKT4+Ml09a1tvPj4yXTtrW2w+PjJdPShrW2w+PjJdfDApKzF9a1ttPj4yXT0oa1ttPj4yXXwwKSsxO3doaWxlKDEpe2lmKChrW20+PjJdfDApPj4+MD49MTMpYnJlYWs7aWYoa1tuPj4yXSYxPDxrW20+PjJdKXtrW3E+PjJdPWorKGtbbT4+Ml08PDMpO3Z0KGtbZT4+Ml18MCxrWyhrW3E+PjJdfDApKzQ+PjJdfDAsa1trW3E+PjJdPj4yXXwwLGksbyxrW2Y+PjJdfDApfWtbbT4+Ml09KGtbbT4+Ml18MCkrMX1rW2tbaD4+Ml0+PjJdPWtbbz4+Ml07cj1zO3JldHVybn1mdW5jdGlvbiB2dChhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaT0wLGw9MCxuPTAsbz0wLHA9MCxxPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wO3k9cjtyPXIrNjR8MDtnPXkrNDR8MDtoPXkrNDB8MDtpPXkrMzZ8MDtsPXkrMzJ8MDtuPXkrMjh8MDtvPXkrMjR8MDtzPXkrMjB8MDt1PXkrMTZ8MDt0PXkrMTJ8MDt3PXkrOHwwO3A9eSs0fDA7dj15KzQ4fDA7cT15O2tbZz4+Ml09YTtrW2g+PjJdPWI7a1tpPj4yXT1jO2tbbD4+Ml09ZDtrW24+PjJdPWU7a1tvPj4yXT1mO2tbcz4+Ml09MDtrW3U+PjJdPTA7a1t0Pj4yXT0wO2tbdz4+Ml09a1trW24+PjJdPj4yXTtrW3A+PjJdPWtba1tsPj4yXT4+Ml07d2hpbGUoMSl7aWYoKGtbdT4+Ml18MCk+PShrW3c+PjJdfDApPyhrW3M+PjJdfDApPj0oa1tpPj4yXXwwKTowKWJyZWFrO2RvIGlmKChrW3M+PjJdfDApPChrW2k+PjJdfDApKXtpZigoa1t1Pj4yXXwwKTwoa1t3Pj4yXXwwKT8oa1soa1tnPj4yXXwwKSsoKG1bKGtbaD4+Ml18MCkrKGtbcz4+Ml08PDEpPj4xXXwwKTw8Mik+PjJdfDApPj4+MD49KGtbKGtbZz4+Ml18MCkrKChtWyhrW3A+PjJdfDApKyhrW3U+PjJdPDwxKT4+MV18MCk8PDIpPj4yXXwwKT4+PjA6MCl7eD04O2JyZWFrfWU9a1tzPj4yXXwwO2tbcz4+Ml09ZSsxO2pbdj4+MV09alsoa1toPj4yXXwwKSsoZTw8MSk+PjFdfDB9ZWxzZSB4PTg7d2hpbGUoMCk7aWYoKHh8MCk9PTgpe3g9MDtlPWtbdT4+Ml18MDtrW3U+PjJdPWUrMTtqW3Y+PjFdPWpbKGtbcD4+Ml18MCkrKGU8PDEpPj4xXXwwfWtbcT4+Ml09a1soa1tnPj4yXXwwKSsoKG1bdj4+MV18MCk8PDIpPj4yXTtkPWpbdj4+MV18MDtlPWtbdD4+Ml18MDtrW3Q+PjJdPWUrMTtqWyhrW28+PjJdfDApKyhlPDwxKT4+MV09ZDtpZigoa1tzPj4yXXwwKT49KGtbaT4+Ml18MCkpY29udGludWU7aWYoKGtbKGtbZz4+Ml18MCkrKChtWyhrW2g+PjJdfDApKyhrW3M+PjJdPDwxKT4+MV18MCk8PDIpPj4yXXwwKSE9KGtbcT4+Ml18MCkpY29udGludWU7a1tzPj4yXT0oa1tzPj4yXXwwKSsxfWtba1tsPj4yXT4+Ml09a1toPj4yXTtrW2tbbj4+Ml0+PjJdPWtbdD4+Ml07YlMoa1toPj4yXXwwLGtbbz4+Ml18MCxrW3Q+PjJdPDwxfDApfDA7cj15O3JldHVybn1mdW5jdGlvbiB3dChhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsbj0wLG89MDtvPXI7cj1yKzEyOHwwO2Q9bysxMjB8MDtlPW8rMTE2fDA7Zj1vKzExMnwwO2c9bysxMDR8MDtqPW8rNTZ8MDtuPW8rOHwwO2g9bztrW2U+PjJdPWE7a1tmPj4yXT1iO2I9TnMoa1tlPj4yXXwwKXwwO2tbaD4+Ml09YjtiPWo7YT1rW2g+PjJdfDA7Yz1iKzQ4fDA7ZG97aVtiPj4wXT1pW2E+PjBdfDA7Yj1iKzF8MDthPWErMXwwfXdoaWxlKChifDApPChjfDApKTtzdChrW2U+PjJdfDApO2I9bjthPShrW2g+PjJdfDApKzQ4fDA7Yz1iKzQ4fDA7ZG97aVtiPj4wXT1pW2E+PjBdfDA7Yj1iKzF8MDthPWErMXwwfXdoaWxlKChifDApPChjfDApKTtpZihvUihqLG4sNDgpfDApe2tbZD4+Ml09MTtuPWtbZD4+Ml18MDtyPW87cmV0dXJuIG58MH1pZighKGxbaisxMj4+MF18MCkpe2tbZD4+Ml09MTtuPWtbZD4+Ml18MDtyPW87cmV0dXJuIG58MH1ydCgxLGosNDAsMCxnKTtpZigoa1tnPj4yXXwwKT09KGtbais0MD4+Ml18MCk/KGtbZys0Pj4yXXwwKT09KGtbais0MCs0Pj4yXXwwKTowKXtpZihvUigoa1tlPj4yXXwwKSs1MnwwLGosNDgpfDApe2tba1tmPj4yXT4+Ml09MTtiPShrW2U+PjJdfDApKzUyfDA7YT1qO2M9Yis0OHwwO2Rve2tbYj4+Ml09a1thPj4yXTtiPWIrNHwwO2E9YSs0fDB9d2hpbGUoKGJ8MCk8KGN8MCkpO2tbKGtbZT4+Ml18MCkrMzY+PjJdPSgobVsoa1tlPj4yXXwwKSs1MisxND4+MV18MCkmNjUwMjQpKygoKG1bKGtbZT4+Ml18MCkrNTIrMTQ+PjFdfDApJjEpPDwxNil9a1tkPj4yXT0wO249a1tkPj4yXXwwO3I9bztyZXR1cm4gbnwwfWtbZD4+Ml09MTtuPWtbZD4+Ml18MDtyPW87cmV0dXJuIG58MH1mdW5jdGlvbiB4dChhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTA7RD1yO3I9cisxNDR8MDtCPUQrMTZ8MDtjPUQrOTZ8MDtkPUQrOTJ8MDt5PUQrODh8MDt1PUQrOHwwO2g9RCs4MHwwO289RCs3NnwwO3Q9RCs3MnwwO2U9RCsxMDR8MDtnPUQrNjh8MDt6PUQrNjR8MDtmPUQrNjB8MDtuPUQrNTZ8MDtwPUQ7QT1EKzUyfDA7cz1EKzQ4fDA7Qz1EKzQ0fDA7cT1EKzQwfDA7eD1EKzM2fDA7dj1EKzMyfDA7dz1EKzI4fDA7bT1EKzI0fDA7a1tkPj4yXT1hO2tbaD4+Ml09MDtrW2grND4+Ml09MDtrW28+PjJdPTErKGxbKGtbZD4+Ml18MCkrNDU+PjBdfDApO2tbdD4+Ml09OC0oa1tvPj4yXXwwKTtiPWZ0KGtbZD4+Ml18MCxrW28+PjJdfDAsa1t0Pj4yXXwwKXwwO2tbeT4+Ml09YjtpZihrW3k+PjJdfDApe2tbYz4+Ml09a1t5Pj4yXTtDPWtbYz4+Ml18MDtyPUQ7cmV0dXJuIEN8MH1hPShrW2Q+PjJdfDApKzUyfDA7Yj1hKzQ4fDA7ZG97a1thPj4yXT0wO2E9YSs0fDB9d2hpbGUoKGF8MCk8KGJ8MCkpO2I9Zmooa1soa1tkPj4yXXwwKSs4Pj4yXXwwLHUpfDA7a1t5Pj4yXT1iO2E6ZG8gaWYoIShrW3k+PjJdfDApKXtiPXU7YT1rW2IrND4+Ml18MDtkbyBpZigoYXwwKT4wfChhfDApPT0wJihrW2I+PjJdfDApPj4+MD4zMil7a1tnPj4yXT0wO2I9b3Moa1soa1tkPj4yXXwwKSs4Pj4yXXwwLGUsMzIsMCwwKXwwO2tbeT4+Ml09YjtpZihrW3k+PjJdfDApYnJlYWsgYTtiPXFyKGUpfDA7a1tzPj4yXT1iO2I9cXIoZSs4fDApfDA7a1tBPj4yXT1iO2lmKCgoKGtbcz4+Ml0mLTJ8MCk9PTkzMTA3MTYxOD8hKCgoa1tBPj4yXXwwKT42NTUzNj8xOihrW0E+PjJdJihrW0E+PjJdfDApLTF8MCkhPTApfChrW0E+PjJdfDApPDUxMik6MCk/KGlbKGtbZD4+Ml18MCkrNTIrMTM+PjBdPWtbcz4+Ml0mMSxrWyhrW2Q+PjJdfDApKzM2Pj4yXT1rW0E+PjJdLHM9cXIoZSsxMnwwKXwwLGtbKGtbZD4+Ml18MCkrMTEyPj4yXT1zLHM9KGtbZD4+Ml18MCkrNTIrMzJ8MCxiPWUrMTZ8MCxpW3M+PjBdPWlbYj4+MF18MCxpW3MrMT4+MF09aVtiKzE+PjBdfDAsaVtzKzI+PjBdPWlbYisyPj4wXXwwLGlbcyszPj4wXT1pW2IrMz4+MF18MCxpW3MrND4+MF09aVtiKzQ+PjBdfDAsaVtzKzU+PjBdPWlbYis1Pj4wXXwwLGlbcys2Pj4wXT1pW2IrNj4+MF18MCxpW3MrNz4+MF09aVtiKzc+PjBdfDAscnQoKGxbKGtbZD4+Ml18MCkrNTIrMTM+PjBdfDApPT0oKGlbOTY4XXwwKT09MHwwKSYxLGUsMjQsMCwoa1tkPj4yXXwwKSs1MisyNHwwKSxzPWtbKGtbZD4+Ml18MCkrNTIrMjQ+PjJdfDAsKHN8MCk9PShxcihlKzI0fDApfDApKTowKT8ocz1rWyhrW2Q+PjJdfDApKzUyKzI0KzQ+PjJdfDAsKHN8MCk9PShxcihlKzI4fDApfDApKTowKXtzPXFyKGUrNHwwKXwwO2tbQz4+Ml09cztpZigoa1tDPj4yXXwwKSE9MzAwN2UzKXtDPXl0KDU0OTUxKXwwO2tbeT4+Ml09QzticmVha31rW3o+PjJdPShrW0E+PjJdfDApKzI0O0M9a1t6Pj4yXXwwO0M9VGQoQywoKEN8MCk8MCk8PDMxPj4zMSl8MDtrW2c+PjJdPUM7aWYoIShrW2c+PjJdfDApKXtrW3k+PjJdPTc7YnJlYWsgYX1rW2Y+PjJdPShrW2c+PjJdfDApKzI0O2tbbj4+Ml09MDtDPXA7a1tDPj4yXT0zMjtrW0MrND4+Ml09MDt3aGlsZSgxKXtiPXA7cz1rW3o+PjJdfDA7cz0kUihrW2I+PjJdfDAsa1tiKzQ+PjJdfDAsc3wwLCgoc3wwKTwwKTw8MzE+PjMxfDApfDA7Yj1MO0M9dTtlPWtbQys0Pj4yXXwwO2lmKCEoKGJ8MCk8KGV8MCl8KChifDApPT0oZXwwKT9zPj4+MDw9KGtbQz4+Ml18MCk+Pj4wOjApKSlicmVhaztrW24+PjJdPShrW24+PjJdfDApKzE7Qz1wO0M9b3Moa1soa1tkPj4yXXwwKSs4Pj4yXXwwLGtbZz4+Ml18MCxrW3o+PjJdfDAsa1tDPj4yXXwwLGtbQys0Pj4yXXwwKXwwO2tbeT4+Ml09QztpZihrW3k+PjJdfDApYnJlYWs7Qz16dChrW2Q+PjJdfDAseCx2LGtbZj4+Ml18MCxrW2c+PjJdfDApfDA7a1txPj4yXT1DO2lmKCEoa1txPj4yXXwwKSlicmVhaztDPUF0KGtbZD4+Ml18MCxrW24+PjJdfDAsa1t4Pj4yXXwwKXwwO2tbeT4+Ml09QztpZihrW3k+PjJdfDApYnJlYWs7aWYoa1t2Pj4yXXwwKXtrWyhrW2Q+PjJdfDApKzUyKzE2Pj4yXT1rW24+PjJdO2tbKGtbZD4+Ml18MCkrNTIrMjA+PjJdPWtbdj4+Ml07alsoa1tkPj4yXXwwKSs1MisxND4+MV09a1tBPj4yXSY2NTI4MHxrW0E+PjJdPj4xNjtrW2g+PjJdPWtbKGtbZD4+Ml18MCkrNTIrMjQ+PjJdO2tbaCs0Pj4yXT1rWyhrW2Q+PjJdfDApKzUyKzI0KzQ+PjJdfXM9a1t6Pj4yXXwwO0M9cDtzPSRSKGtbQz4+Ml18MCxrW0MrND4+Ml18MCxzfDAsKChzfDApPDApPDwzMT4+MzF8MCl8MDtDPXA7a1tDPj4yXT1zO2tbQys0Pj4yXT1MfVVkKGtbZz4+Ml18MCl9fXdoaWxlKDApO2lmKCEoa1t5Pj4yXXwwKSl7a1soa1tkPj4yXXwwKSs1MisyND4+Ml09a1toPj4yXTtrWyhrW2Q+PjJdfDApKzUyKzI0KzQ+PjJdPWtbaCs0Pj4yXTtxdChrW2Q+PjJdfDApO0M9a3Qoa1tkPj4yXXwwKXwwO2tbdz4+Ml09QztrW2tbdz4+Ml0+PjJdPTA7a1soa1t3Pj4yXXwwKSszMj4+Ml09a1soa1tkPj4yXXwwKSs1MisxNj4+Ml07a1soa1t3Pj4yXXwwKSs0Pj4yXT0wO2tbbT4+Ml09MTt3aGlsZSgxKXtpZigoa1ttPj4yXXwwKT49NSlicmVhaztrWyhrW3c+PjJdfDApKzQrKGtbbT4+Ml08PDIpPj4yXT0tMTtrW20+PjJdPShrW20+PjJdfDApKzF9aWYoa1soa1tkPj4yXXwwKSs1MisxNj4+Ml18MClrWyhrW3c+PjJdfDApKzQrND4+Ml09a1soa1tkPj4yXXwwKSs1MisxNj4+Ml07aWYoa1soa1tkPj4yXXwwKSs1MisyMD4+Ml18MCl7Qz1rWyhrW2Q+PjJdfDApKzEwOD4+Ml18MDtrW0I+PjJdPWtbKGtbZD4+Ml18MCkrNTIrMTY+PjJdO2tbQis0Pj4yXT1DOyRkKDI4MywyNTk1MixCKX19fXdoaWxlKDApO1VyKGtbZD4+Ml18MCxrW28+PjJdfDAsa1t0Pj4yXXwwKTtrW2M+PjJdPWtbeT4+Ml07Qz1rW2M+PjJdfDA7cj1EO3JldHVybiBDfDB9ZnVuY3Rpb24geXQoYSl7YT1hfDA7dmFyIGI9MCxjPTA7Yj1yO3I9cisxNnwwO2M9YjtrW2M+PjJdPWE7YT0kaigxNCxrW2M+PjJdfDAsMjU5MzUpfDA7cj1iO3JldHVybiBhfDB9ZnVuY3Rpb24genQoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLG09MCxuPTAsbz0wLHA9MCxxPTAscz0wO3M9cjtyPXIrNDh8MDtmPXMrMzJ8MDtnPXMrMjh8MDtoPXMrMjR8MDtqPXMrMjB8MDttPXMrMTZ8MDtuPXMrMTJ8MDtwPXMrOHwwO289cys0fDA7cT1zO2tbZz4+Ml09YTtrW2g+PjJdPWI7a1tqPj4yXT1jO2tbbT4+Ml09ZDtrW24+PjJdPWU7a1tvPj4yXT0oa1tnPj4yXXwwKSs1MisyNDtpZihvUigoa1tnPj4yXXwwKSs1MiszMnwwLChrW24+PjJdfDApKzh8MCw4KXwwKXtrW2Y+PjJdPTA7Yz1rW2Y+PjJdfDA7cj1zO3JldHVybiBjfDB9Yz1xcihrW24+PjJdfDApfDA7a1txPj4yXT1jO2lmKCEoa1txPj4yXXwwKSl7a1tmPj4yXT0wO2M9a1tmPj4yXXwwO3I9cztyZXR1cm4gY3wwfWtbcD4+Ml09KGxbKGtbZz4+Ml18MCkrNTIrMTM+PjBdfDApPT0oKGlbOTY4XXwwKT09MHwwKSYxO3J0KGtbcD4+Ml18MCxrW24+PjJdfDAsOCxrW28+PjJdfDAsa1tvPj4yXXwwKTtydChrW3A+PjJdfDAsa1ttPj4yXXwwLGtbKGtbZz4+Ml18MCkrMzY+PjJdfDAsa1tvPj4yXXwwLGtbbz4+Ml18MCk7Yz1rW2tbbz4+Ml0+PjJdfDA7aWYoKGN8MCk9PShxcigoa1tuPj4yXXwwKSsxNnwwKXwwKT8oYz1rWyhrW28+PjJdfDApKzQ+PjJdfDAsKGN8MCk9PShxcigoa1tuPj4yXXwwKSsyMHwwKXwwKSk6MCl7a1trW2g+PjJdPj4yXT1rW3E+PjJdO2M9cXIoKGtbbj4+Ml18MCkrNHwwKXwwO2tba1tqPj4yXT4+Ml09YztrW2Y+PjJdPTE7Yz1rW2Y+PjJdfDA7cj1zO3JldHVybiBjfDB9a1tmPj4yXT0wO2M9a1tmPj4yXXwwO3I9cztyZXR1cm4gY3wwfWZ1bmN0aW9uIEF0KGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxpPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscz0wLHQ9MDt0PXI7cj1yKzQ4fDA7ZD10KzQ0fDA7ZT10KzQwfDA7Zj10KzM2fDA7Zz10KzMyfDA7cT10KzI4fDA7bT10KzI0fDA7aT10KzIwfDA7aD10KzE2fDA7bD10KzEyfDA7bj10Kzh8MDtwPXQrNHwwO289dDtrW2U+PjJdPWE7a1tmPj4yXT1iO2tbZz4+Ml09YztrW20+PjJdPTA7a1tpPj4yXT0wO2tbaD4+Ml09MDthPWtbZT4+Ml18MDthPUZzKGEsRXMoa1tmPj4yXXwwKXwwLGgsaSxtKXwwO2tbcT4+Ml09YTtkbyBpZighKGtbcT4+Ml18MCkpe2tbbj4+Ml09KGtbZj4+Ml18MCktKGtbbT4+Ml18MCk7aWYoKGtbbj4+Ml18MCk9PTEpe2tbbz4+Ml09KGtbaD4+Ml18MCkrMTYzODQtKChrW2k+PjJdfDApKzQpO2RTKChrW2k+PjJdfDApKzR8MCwwLGtbbz4+Ml18MCl8MH1pZihrWyhrW2k+PjJdfDApKyhrW24+PjJdPDwyKT4+Ml18MClEcyhrW2U+PjJdfDApO2tbcD4+Ml09a1tuPj4yXTthPVlzKGtbZz4+Ml18MCl8MDtrW2w+PjJdPWE7d2hpbGUoMSl7aWYoIShqWyhrW2g+PjJdfDApKyhrW2w+PjJdPDwxKT4+MV18MCkpe3M9MTE7YnJlYWt9YT1rW3A+PjJdfDA7a1twPj4yXT1hKy0xO2lmKCFhKWJyZWFrO2E9WnMoa1tsPj4yXXwwKXwwO2tbbD4+Ml09YX1pZigoc3wwKT09MTEpe2tbKGtbaT4+Ml18MCkrKGtbbj4+Ml08PDIpPj4yXT1rW2c+PjJdO2pbKGtbaD4+Ml18MCkrKGtbbD4+Ml08PDEpPj4xXT1rW24+PjJdO2JyZWFrfXM9X2ooNTQ4MjApfDA7a1tkPj4yXT1zO3M9a1tkPj4yXXwwO3I9dDtyZXR1cm4gc3wwfXdoaWxlKDApO2tbZD4+Ml09a1txPj4yXTtzPWtbZD4+Ml18MDtyPXQ7cmV0dXJuIHN8MH1mdW5jdGlvbiBCdChhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTAsZT0wO2U9cjtyPXIrMTZ8MDtjPWUrOHwwO2I9ZSs0fDA7ZD1lO2tbYj4+Ml09YTtpZigoKGtbYj4+Ml18MCkhPTA/KGtba1tiPj4yXT4+Ml18MCkhPTA6MCk/KGtbKGtbYj4+Ml18MCkrOD4+Ml18MCk+PTA6MCl7YT1nY1trW2tbYj4+Ml0+PjJdJjI1NV0oa1soa1tiPj4yXXwwKSs0Pj4yXXwwLGtbKGtbYj4+Ml18MCkrOD4+Ml18MCl8MDtrW2Q+PjJdPWE7Yj0oa1tiPj4yXXwwKSs4fDA7aWYoIShrW2Q+PjJdfDApKWtbYj4+Ml09LTE7ZWxzZSBrW2I+PjJdPShrW2I+PjJdfDApKzE7a1tjPj4yXT1rW2Q+PjJdO2Q9a1tjPj4yXXwwO3I9ZTtyZXR1cm4gZHwwfWtbYz4+Ml09MDtkPWtbYz4+Ml18MDtyPWU7cmV0dXJuIGR8MH1mdW5jdGlvbiBDdCgpe3JldHVybiA0OH1mdW5jdGlvbiBEdChhKXthPWF8MDt2YXIgYj0wLGM9MDtjPXI7cj1yKzE2fDA7Yj1jO2tbYj4+Ml09YTtpZigoa1soa1tiPj4yXXwwKSs0Pj4yXXwwKTw9NzIpe2E9NzI7cj1jO3JldHVybiBhfDB9YT1rWyhrW2I+PjJdfDApKzQ+PjJdfDA7cj1jO3JldHVybiBhfDB9ZnVuY3Rpb24gRXQoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTA7Zz1yO3I9ciszMnwwO2M9ZysxNnwwO2g9ZysxMnwwO2Q9Zys4fDA7ZT1nKzR8MDtmPWc7a1toPj4yXT1hO2tbZD4+Ml09YjtrW2U+PjJdPWtbaD4+Ml07a1tmPj4yXT0wO2lmKGtbKGtbZT4+Ml18MCkrNDQ+PjJdfDApe2tbYz4+Ml09MDtoPWtbYz4+Ml18MDtyPWc7cmV0dXJuIGh8MH1kbyBpZihsWyhrW2U+PjJdfDApKzIxPj4wXXwwKXtpZigoKGxbKGtbZT4+Ml18MCkrMjE+PjBdfDApJjN8MCk9PTA/KChtWyhrW2Q+PjJdfDApKzI0Pj4xXXwwKSY4fDApPT0wOjApYnJlYWs7a1tjPj4yXT0wO2g9a1tjPj4yXXwwO3I9ZztyZXR1cm4gaHwwfXdoaWxlKDApO2tbKGtbZD4+Ml18MCkrMTI+PjJdPTA7aD0oTHIoa1tlPj4yXXwwKXwwKSE9MDthPWtbZD4+Ml18MDtpZihoKXtoPUd0KGEpfDA7a1tmPj4yXT1oO2lmKCEoa1tmPj4yXXwwKSl7aD1IdChrW2U+PjJdfDAsa1tkPj4yXXwwLDAsMCl8MDtrW2Y+PjJdPWh9fWVsc2V7aWYoISgoKG1bYSsyND4+MV18MCkmOHwwKT09MD8obFsoa1tlPj4yXXwwKSsxNz4+MF18MHwwKSE9MzowKSl7aD1JdChrW2U+PjJdfDAsMSl8MDtrW2Y+PjJdPWh9aWYoIShrW2Y+PjJdfDApKXtoPUp0KGtbZT4+Ml18MCxrW2Q+PjJdfDApfDA7a1tmPj4yXT1ofX1pZighKGtbZj4+Ml18MCkpcWooa1tkPj4yXXwwKTtoPXdyKGtbZT4+Ml18MCxrW2Y+PjJdfDApfDA7a1tjPj4yXT1oO2g9a1tjPj4yXXwwO3I9ZztyZXR1cm4gaHwwfWZ1bmN0aW9uIEZ0KGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsbD0wLG09MCxuPTAsbz0wO289cjtyPXIrMzJ8MDtnPW8rMjB8MDtoPW8rMTZ8MDtqPW8rMTJ8MDtsPW8rOHwwO209bys0fDA7bj1vO2tbZz4+Ml09YTtrW2g+PjJdPWI7a1tqPj4yXT1jO2tbbD4+Ml09ZDtrW20+PjJdPWU7a1tuPj4yXT1mO2M9a1tuPj4yXXwwO2Y9Yys0OHwwO2Rve2tbYz4+Ml09MDtjPWMrNHwwfXdoaWxlKChjfDApPChmfDApKTtrWyhrW24+PjJdfDApKzI0Pj4yXT0xO2tbKGtbbj4+Ml18MCkrMjg+PjJdPWtbaD4+Ml07aVsoa1tuPj4yXXwwKSszMj4+MF09a1tqPj4yXTtpWyhrW24+PjJdfDApKzMzPj4wXT0yO2tbKGtbbj4+Ml18MCkrMzY+PjJdPWtbbD4+Ml07a1soa1tuPj4yXXwwKSs0MD4+Ml09a1ttPj4yXTtrWyhrW24+PjJdfDApKzE2Pj4yXT0xMDA7a1soa1tuPj4yXXwwKSsyMD4+Ml09MTtuPWlqKGtbbj4+Ml18MCxrW2c+PjJdfDApfDA7cj1vO3JldHVybiBufDB9ZnVuY3Rpb24gR3QoYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wO2Q9cjtyPXIrMTZ8MDtiPWQrNHwwO2M9ZDtrW2M+PjJdPWE7aWYoWXQoa1tjPj4yXXwwKXwwKXthPVp0KGtbYz4+Ml18MCl8MDtrW2I+PjJdPWE7YT1rW2I+PjJdfDA7cj1kO3JldHVybiBhfDB9ZWxzZXtrW2I+PjJdPTA7YT1rW2I+PjJdfDA7cj1kO3JldHVybiBhfDB9cmV0dXJuIDB9ZnVuY3Rpb24gSHQoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxpPTAsaj0wLG09MCxuPTAsbz0wO289cjtyPXIrMzJ8MDtlPW8rMjh8MDtmPW8rMjR8MDtnPW8rMjB8MDtoPW8rMTZ8MDtuPW8rMTJ8MDtpPW8rOHwwO2o9bys0fDA7bT1vO2tbZT4+Ml09YTtrW2Y+PjJdPWI7a1tnPj4yXT1jO2tbaD4+Ml09ZDthOmRvIGlmKGtbaD4+Ml18MCl7a1ttPj4yXT1mO2tbaT4+Ml09MDtrW2o+PjJdPWtbZj4+Ml07d2hpbGUoMSl7YT1rW2o+PjJdfDA7a1trW20+PjJdPj4yXT1hO2lmKCFhKWJyZWFrIGE7aWYoKGtbKGtbaj4+Ml18MCkrMjA+PjJdfDApPj4+MDw9KGtbZz4+Ml18MCk+Pj4wKXtrW20+PjJdPShrW2o+PjJdfDApKzEyO2tbaT4+Ml09KGtbaT4+Ml18MCkrMX1rW2o+PjJdPWtbKGtbaj4+Ml18MCkrMTI+PjJdfX1lbHNlIGtbaT4+Ml09MTt3aGlsZSgwKTttPShrW2U+PjJdfDApKzE5Mis4fDA7a1ttPj4yXT0oa1ttPj4yXXwwKSsoa1tpPj4yXXwwKTtpZigoa1soa1tmPj4yXXwwKSsyMD4+Ml18MCk9PTEpTHQoa1tmPj4yXXwwKTttPVJ0KGtbKGtbZT4+Ml18MCkrMjE2Pj4yXXwwLGtbKGtbZT4+Ml18MCkrMTYwPj4yXXwwLGtbZj4+Ml18MCxrW2c+PjJdfDAsa1toPj4yXXwwLGxbKGtbZT4+Ml18MCkrMTE+PjBdfDApfDA7a1tuPj4yXT1tO2lmKGtbbj4+Ml18MCl7bj1rW24+PjJdfDA7cj1vO3JldHVybiBufDB9aWYoIShrWyhrW2U+PjJdfDApKzk2Pj4yXXwwKSl7bj1rW24+PjJdfDA7cj1vO3JldHVybiBufDB9a1tqPj4yXT1rW2Y+PjJdO3doaWxlKDEpe2lmKCEoa1tqPj4yXXwwKSlicmVhaztzcyhrWyhrW2U+PjJdfDApKzk2Pj4yXXwwLGtbKGtbaj4+Ml18MCkrMjA+PjJdfDAsa1soa1tqPj4yXXwwKSs0Pj4yXXwwKTtrW2o+PjJdPWtbKGtbaj4+Ml18MCkrMTI+PjJdfW49a1tuPj4yXXwwO3I9bztyZXR1cm4gbnwwfWZ1bmN0aW9uIEl0KGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxtPTAsbj0wO249cjtyPXIrNDh8MDtjPW4rMjR8MDtkPW4rMjB8MDtlPW4rMTZ8MDtqPW4rMTJ8MDtnPW4rOHwwO2g9bjtmPW4rNDB8MDttPW4rMjh8MDtrW2Q+PjJdPWE7a1tlPj4yXT1iO2E9TXQoa1tkPj4yXXwwKXwwO2tbaj4+Ml09YTtpZihrW2o+PjJdfDApe2tbYz4+Ml09a1tqPj4yXTttPWtbYz4+Ml18MDtyPW47cmV0dXJuIG18MH1kbyBpZighKGlbKGtbZD4+Ml18MCkrNz4+MF18MCkpe2lmKChrW2tbKGtbZD4+Ml18MCkrNjg+PjJdPj4yXXwwKSE9MD8obFsoa1tkPj4yXXwwKSs1Pj4wXXwwKSE9NDowKXthPWxzKGtbKGtbZD4+Ml18MCkrNjQ+PjJdfDApfDA7a1tnPj4yXT1hO2lmKCEoa1tnPj4yXSY1MTIpKXtpW20+PjBdPWlbMjU5MDFdfDA7aVttKzE+PjBdPWlbMjU5MDJdfDA7aVttKzI+PjBdPWlbMjU5MDNdfDA7aVttKzM+PjBdPWlbMjU5MDRdfDA7aVttKzQ+PjBdPWlbMjU5MDVdfDA7aVttKzU+PjBdPWlbMjU5MDZdfDA7aVttKzY+PjBdPWlbMjU5MDddfDA7aVttKzc+PjBdPWlbMjU5MDhdfDA7cHQobSs4fDAsa1soa1tkPj4yXXwwKSs0OD4+Ml18MCk7Yj16cyhrW2Q+PjJdfDApfDA7YT1oO2tbYT4+Ml09YjtrW2ErND4+Ml09TDthPWg7YT1vcyhrWyhrW2Q+PjJdfDApKzY4Pj4yXXwwLGYsOCxrW2E+PjJdfDAsa1thKzQ+PjJdfDApfDA7a1tqPj4yXT1hO2lmKChrW2o+PjJdfDApPT0wPzA9PShvUihmLDI1OTAxLDgpfDApOjApe2E9aDthPVNnKGtbKGtbZD4+Ml18MCkrNjg+PjJdfDAsMjYwMjIsMSxrW2E+PjJdfDAsa1thKzQ+PjJdfDApfDA7a1tqPj4yXT1hfWlmKChrW2o+PjJdfDApIT0wJihrW2o+PjJdfDApIT01MjIpe2tbYz4+Ml09a1tqPj4yXTttPWtbYz4+Ml18MDtyPW47cmV0dXJuIG18MH1pZigoKGxbKGtbZD4+Ml18MCkrOD4+MF18MCkhPTA/MD09KGtbZz4+Ml0mMTAyNHwwKTowKT8oYT1GcihrWyhrW2Q+PjJdfDApKzY4Pj4yXXwwLGxbKGtbZD4+Ml18MCkrMTI+PjBdfDApfDAsa1tqPj4yXT1hLChrW2o+PjJdfDApIT0wKTowKXtrW2M+PjJdPWtbaj4+Ml07bT1rW2M+PjJdfDA7cj1uO3JldHVybiBtfDB9YT0oa1tkPj4yXXwwKSs4OHwwO209U2coa1soa1tkPj4yXXwwKSs2OD4+Ml18MCxtLDEyLGtbYT4+Ml18MCxrW2ErND4+Ml18MCl8MDtrW2o+PjJdPW07aWYoa1tqPj4yXXwwKXtrW2M+PjJdPWtbaj4+Ml07bT1rW2M+PjJdfDA7cj1uO3JldHVybiBtfDB9fWlmKDA9PShrW2c+PjJdJjEwMjR8MCk/KG09RnIoa1soa1tkPj4yXXwwKSs2OD4+Ml18MCxsWyhrW2Q+PjJdfDApKzEyPj4wXXwoKGxbKGtbZD4+Ml18MCkrMTI+PjBdfDApPT0zPzE2OjApKXwwLGtbaj4+Ml09bSwoa1tqPj4yXXwwKSE9MCk6MCl7a1tjPj4yXT1rW2o+PjJdO209a1tjPj4yXXwwO3I9bjtyZXR1cm4gbXwwfWI9KGtbZD4+Ml18MCkrODB8MDthPWtbYis0Pj4yXXwwO209KGtbZD4+Ml18MCkrODh8MDtrW20+PjJdPWtbYj4+Ml07a1ttKzQ+PjJdPWE7aWYoIShrW2U+PjJdfDApKWJyZWFrO2lmKGtbZz4+Ml0mNTEyKWJyZWFrO2tbKGtbZD4+Ml18MCkrNDg+PjJdPTA7bT1OdChrW2Q+PjJdfDApfDA7a1tqPj4yXT1tO2lmKCEoa1tqPj4yXXwwKSlicmVhaztrW2M+PjJdPWtbaj4+Ml07bT1rW2M+PjJdfDA7cj1uO3JldHVybiBtfDB9YT0oa1tkPj4yXXwwKSs4MHwwO2o9a1thKzQ+PjJdfDA7bT0oa1tkPj4yXXwwKSs4OHwwO2tbbT4+Ml09a1thPj4yXTtrW20rND4+Ml09an13aGlsZSgwKTtPdChrWyhrW2Q+PjJdfDApKzIxMj4+Ml18MCk7aVsoa1tkPj4yXXwwKSsxNz4+MF09NDtrW2M+PjJdPTA7bT1rW2M+PjJdfDA7cj1uO3JldHVybiBtfDB9ZnVuY3Rpb24gSnQoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLGw9MDtsPXI7cj1yKzQ4fDA7ZD1sKzMyfDA7ZT1sKzI4fDA7aj1sKzI0fDA7Yz1sKzh8MDtoPWwrMjB8MDtmPWw7Zz1sKzE2fDA7a1tkPj4yXT1hO2tbZT4+Ml09YjtrW2o+PjJdPTA7aWYoIShrW2tbKGtbZD4+Ml18MCkrNjQ+PjJdPj4yXXwwKSl7YT1LdChrW2Q+PjJdfDAsa1soa1tkPj4yXXwwKSs2ND4+Ml18MCxrWyhrW2Q+PjJdfDApKzE1Mj4+Ml18MCl8MDtrW2o+PjJdPWF9ZG8gaWYoKGtbaj4+Ml18MCk9PTA/KGtbKGtbZD4+Ml18MCkrNDA+PjJdfDApPj4+MDwoa1soa1tkPj4yXXwwKSsyOD4+Ml18MCk+Pj4wOjApe2lmKChrWyhrW2U+PjJdfDApKzEyPj4yXXwwKT09MD8oa1soa1tlPj4yXXwwKSsyMD4+Ml18MCk+Pj4wPD0oa1soa1tkPj4yXXwwKSs0MD4+Ml18MCk+Pj4wOjApYnJlYWs7Yj1rWyhrW2Q+PjJdfDApKzE2MD4+Ml18MDtiPWtTKGJ8MCwoKGJ8MCk8MCk8PDMxPj4zMXwwLGtbKGtbZD4+Ml18MCkrMjg+PjJdfDAsMCl8MDthPWM7a1thPj4yXT1iO2tbYSs0Pj4yXT1MO2J0KGtbKGtbZD4+Ml18MCkrNjQ+PjJdfDAsNSxjKTtrWyhrW2Q+PjJdfDApKzQwPj4yXT1rWyhrW2Q+PjJdfDApKzI4Pj4yXX13aGlsZSgwKTt3aGlsZSgxKXtpZighKChrW2o+PjJdfDApPT0wPyhrW2U+PjJdfDApIT0wOjApKWJyZWFrO2tbaD4+Ml09a1soa1tlPj4yXXwwKSsyMD4+Ml07aWYoKGtbaD4+Ml18MCk+Pj4wPD0oa1soa1tkPj4yXXwwKSsyOD4+Ml18MCk+Pj4wPzA9PSgobVsoa1tlPj4yXXwwKSsyND4+MV18MCkmMTZ8MCk6MCl7YT1rWyhrW2Q+PjJdfDApKzE2MD4+Ml18MDthPWtTKChrW2g+PjJdfDApLTF8MCwwLGF8MCwoKGF8MCk8MCk8PDMxPj4zMXwwKXwwO2M9ZjtrW2M+PjJdPWE7a1tjKzQ+PjJdPUw7aWYoKGtbKGtbZT4+Ml18MCkrMjA+PjJdfDApPT0xKUx0KGtbZT4+Ml18MCk7a1tnPj4yXT1rWyhrW2U+PjJdfDApKzQ+PjJdO2M9ZjtjPVNnKGtbKGtbZD4+Ml18MCkrNjQ+PjJdfDAsa1tnPj4yXXwwLGtbKGtbZD4+Ml18MCkrMTYwPj4yXXwwLGtbYz4+Ml18MCxrW2MrND4+Ml18MCl8MDtrW2o+PjJdPWM7aWYoKGtbaD4+Ml18MCk9PTEpe2I9KGtbZD4+Ml18MCkrMTEyfDA7YT0oa1tnPj4yXXwwKSsyNHwwO2M9YisxNnwwO2Rve2lbYj4+MF09aVthPj4wXXwwO2I9YisxfDA7YT1hKzF8MH13aGlsZSgoYnwwKTwoY3wwKSl9aWYoKGtbaD4+Ml18MCk+Pj4wPihrWyhrW2Q+PjJdfDApKzM2Pj4yXXwwKT4+PjApa1soa1tkPj4yXXwwKSszNj4+Ml09a1toPj4yXTtjPShrW2Q+PjJdfDApKzE5Mis4fDA7a1tjPj4yXT0oa1tjPj4yXXwwKSsxO3NzKGtbKGtbZD4+Ml18MCkrOTY+PjJdfDAsa1toPj4yXXwwLGtbKGtbZT4+Ml18MCkrND4+Ml18MCl9a1tlPj4yXT1rWyhrW2U+PjJdfDApKzEyPj4yXX1yPWw7cmV0dXJuIGtbaj4+Ml18MH1mdW5jdGlvbiBLdChhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTA7ZT1yO3I9cisxNnwwO2g9ZSsxMnwwO2c9ZSs4fDA7Zj1lKzR8MDtkPWU7a1toPj4yXT1hO2tbZz4+Ml09YjtrW2Y+PjJdPWM7a1tmPj4yXT1rW2Y+PjJdfDMwO2M9Y3Moa1trW2g+PjJdPj4yXXwwLDAsa1tnPj4yXXwwLGtbZj4+Ml18MCwwKXwwO2tbZD4+Ml09YztyPWU7cmV0dXJuIGtbZD4+Ml18MH1mdW5jdGlvbiBMdChhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTA7Yj1yO3I9cisxNnwwO2M9Yis0fDA7ZD1iO2tbYz4+Ml09YTthPShxcigoa1soa1tjPj4yXXwwKSsxNj4+Ml18MCkrMTEyfDApfDApKzF8MDtrW2Q+PjJdPWE7cHQoKGtbKGtbYz4+Ml18MCkrND4+Ml18MCkrMjR8MCxrW2Q+PjJdfDApO3B0KChrWyhrW2M+PjJdfDApKzQ+PjJdfDApKzkyfDAsa1tkPj4yXXwwKTtwdCgoa1soa1tjPj4yXXwwKSs0Pj4yXXwwKSs5NnwwLDMwMTUwMDEpO3I9YjtyZXR1cm59ZnVuY3Rpb24gTXQoYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wO2Q9cjtyPXIrMTZ8MDtiPWQrNHwwO2M9ZDtrW2I+PjJdPWE7a1tjPj4yXT1rWyhrW2I+PjJdfDApKzQ0Pj4yXTtpZigoa1tjPj4yXXwwKT09MD8wPT0oTHIoa1tiPj4yXXwwKXwwKTowKXthPVB0KGtbYj4+Ml18MCw0KXwwO2tbYz4+Ml09YX1yPWQ7cmV0dXJuIGtbYz4+Ml18MH1mdW5jdGlvbiBOdChhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxtPTA7aD1yO3I9ciszMnwwO2M9aCsyMHwwO2c9aCsxNnwwO2Y9aCsxMnwwO2Q9aCs4fDA7ZT1oKzR8MDtiPWg7a1tjPj4yXT1hO2tbZz4+Ml09MDtrW2Y+PjJdPWtbKGtbYz4+Ml18MCkrMjA4Pj4yXTtrW2Q+PjJdPWtbKGtbYz4+Ml18MCkrMTYwPj4yXTtpZigoa1tkPj4yXXwwKT4+PjA+KGtbKGtbYz4+Ml18MCkrMTU2Pj4yXXwwKT4+PjApa1tkPj4yXT1rWyhrW2M+PjJdfDApKzE1Nj4+Ml07a1tiPj4yXT0wO3doaWxlKDEpe2lmKChrW2I+PjJdfDApPj0oa1soa1tjPj4yXXwwKSsxMDQ+PjJdfDApKWJyZWFrO2E9KGtbKGtbYz4+Ml18MCkrMTAwPj4yXXwwKSsoKGtbYj4+Ml18MCkqNDh8MCkrOHwwO2lmKChrW2E+PjJdfDApPT0wJihrW2ErND4+Ml18MCk9PTApe209KGtbYz4+Ml18MCkrODB8MDtqPWtbbSs0Pj4yXXwwO2E9KGtbKGtbYz4+Ml18MCkrMTAwPj4yXXwwKSsoKGtbYj4+Ml18MCkqNDh8MCkrOHwwO2tbYT4+Ml09a1ttPj4yXTtrW2ErND4+Ml09an1rW2I+PjJdPShrW2I+PjJdfDApKzF9YT16cyhrW2M+PjJdfDApfDA7aj1MO209KGtbYz4+Ml18MCkrODB8MDtrW20+PjJdPWE7a1ttKzQ+PjJdPWo7bT0oa1tjPj4yXXwwKSs4OHwwO2tbbT4+Ml09YTtrW20rND4+Ml09ajtpZigoKGxbKGtbYz4+Ml18MCkrNz4+MF18MHwwKT09MD8obFsoa1tjPj4yXXwwKSs1Pj4wXXwwfDApIT00OjApPygobHMoa1soa1tjPj4yXXwwKSs2ND4+Ml18MCl8MCkmNTEyfDApPT0wOjApe2I9a1tmPj4yXXwwO2E9YisxMnwwO2Rve2lbYj4+MF09MDtiPWIrMXwwfXdoaWxlKChifDApPChhfDApKX1lbHNle209a1tmPj4yXXwwO2lbbT4+MF09aVsyNTkwMV18MDtpW20rMT4+MF09aVsyNTkwMl18MDtpW20rMj4+MF09aVsyNTkwM118MDtpW20rMz4+MF09aVsyNTkwNF18MDtpW20rND4+MF09aVsyNTkwNV18MDtpW20rNT4+MF09aVsyNTkwNl18MDtpW20rNj4+MF09aVsyNTkwN118MDtpW20rNz4+MF09aVsyNTkwOF18MDtwdCgoa1tmPj4yXXwwKSs4fDAsLTEpfWFlKDQsKGtbYz4+Ml18MCkrNTJ8MCk7cHQoKGtbZj4+Ml18MCkrMTJ8MCxrWyhrW2M+PjJdfDApKzUyPj4yXXwwKTtwdCgoa1tmPj4yXXwwKSsxNnwwLGtbKGtbYz4+Ml18MCkrMzI+PjJdfDApO3B0KChrW2Y+PjJdfDApKzIwfDAsa1soa1tjPj4yXXwwKSsxNTY+PjJdfDApO3B0KChrW2Y+PjJdfDApKzI0fDAsa1soa1tjPj4yXXwwKSsxNjA+PjJdfDApO2RTKChrW2Y+PjJdfDApKzI4fDAsMCwoa1tkPj4yXXwwKS0yOHwwKXwwO2tbZT4+Ml09MDt3aGlsZSgxKXtpZihrW2c+PjJdfDApe2I9MTc7YnJlYWt9aWYoKGtbZT4+Ml18MCk+Pj4wPj0oa1soa1tjPj4yXXwwKSsxNTY+PjJdfDApPj4+MCl7Yj0xNzticmVha31tPShrW2M+PjJdfDApKzgwfDA7bT1TZyhrWyhrW2M+PjJdfDApKzY4Pj4yXXwwLGtbZj4+Ml18MCxrW2Q+PjJdfDAsa1ttPj4yXXwwLGtbbSs0Pj4yXXwwKXwwO2tbZz4+Ml09bTttPShrW2M+PjJdfDApKzgwfDA7aj1tO2o9JFIoa1tqPj4yXXwwLGtbais0Pj4yXXwwLGtbZD4+Ml18MCwwKXwwO2tbbT4+Ml09ajtrW20rND4+Ml09TDtrW2U+PjJdPShrW2U+PjJdfDApKyhrW2Q+PjJdfDApfWlmKChifDApPT0xNyl7cj1oO3JldHVybiBrW2c+PjJdfDB9cmV0dXJuIDB9ZnVuY3Rpb24gT3QoYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wO2Q9cjtyPXIrMTZ8MDtiPWQrNHwwO2M9ZDtrW2I+PjJdPWE7a1tjPj4yXT1rW2tbYj4+Ml0+PjJdO3doaWxlKDEpe2lmKCEoa1tjPj4yXXwwKSlicmVhazthPShrW2M+PjJdfDApKzI0fDA7althPj4xXT0obVthPj4xXXwwKSYtOTtrW2M+PjJdPWtbKGtbYz4+Ml18MCkrMzI+PjJdfWtbKGtbYj4+Ml18MCkrOD4+Ml09a1soa1tiPj4yXXwwKSs0Pj4yXTtyPWQ7cmV0dXJufWZ1bmN0aW9uIFB0KGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MDtmPXI7cj1yKzE2fDA7Yz1mKzh8MDtkPWYrNHwwO2U9ZjtrW2M+PjJdPWE7a1tkPj4yXT1iO3doaWxlKDEpe2E9UXQoa1tjPj4yXXwwLGtbZD4+Ml18MCl8MDtrW2U+PjJdPWE7aWYoKGtbZT4+Ml18MCkhPTUpe2M9NDticmVha31pZighKGJjW2tbKGtbYz4+Ml18MCkrMTg0Pj4yXSYyNTVdKGtbKGtbYz4+Ml18MCkrMTg4Pj4yXXwwKXwwKSl7Yz00O2JyZWFrfX1pZigoY3wwKT09NCl7cj1mO3JldHVybiBrW2U+PjJdfDB9cmV0dXJuIDB9ZnVuY3Rpb24gUXQoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wO2Y9cjtyPXIrMTZ8MDtjPWYrOHwwO2Q9Zis0fDA7ZT1mO2tbYz4+Ml09YTtrW2Q+PjJdPWI7a1tlPj4yXT0wO2lmKChsWyhrW2M+PjJdfDApKzE4Pj4wXXwwfDApPj0oa1tkPj4yXXwwKT8obFsoa1tjPj4yXXwwKSsxOD4+MF18MHwwKSE9NTowKXtlPWtbZT4+Ml18MDtyPWY7cmV0dXJuIGV8MH1pZihsWyhrW2M+PjJdfDApKzE0Pj4wXXwwKWI9MDtlbHNlIGI9JHMoa1soa1tjPj4yXXwwKSs2ND4+Ml18MCxrW2Q+PjJdfDApfDA7a1tlPj4yXT1iO2lmKGtbZT4+Ml18MCl7ZT1rW2U+PjJdfDA7cj1mO3JldHVybiBlfDB9aWYoISgoa1tkPj4yXXwwKT09ND8xOihsWyhrW2M+PjJdfDApKzE4Pj4wXXwwfDApIT01KSl7ZT1rW2U+PjJdfDA7cj1mO3JldHVybiBlfDB9aVsoa1tjPj4yXXwwKSsxOD4+MF09a1tkPj4yXTtlPWtbZT4+Ml18MDtyPWY7cmV0dXJuIGV8MH1mdW5jdGlvbiBSdChhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsbj0wLG89MCxwPTAscT0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wLEU9MCxGPTAsRz0wLEg9MCxJPTAsSj0wLEs9MCxNPTAsTj0wO049cjtyPXIrMTc2fDA7dT1OKzEzNnwwO3Y9TisxMzJ8MDt3PU4rMTI4fDA7eD1OKzEyNHwwO3k9TisxMjB8MDt6PU4rMTE2fDA7QT1OKzExMnwwO0g9TisxMDh8MDtDPU4rMTA0fDA7Rj1OKzEwMHwwO0c9Tis5NnwwO0U9Tis5MnwwO0s9Tis4OHwwO0Q9Tis0MHwwO009TisxNnwwO289Tis4NHwwO249Tis4MHwwO2g9TisxNDR8MDtnPU4rNzJ8MDtzPU4rNjR8MDtxPU4rNjB8MDtwPU4rOHwwO3Q9Tis1NnwwO0I9Tis1MnwwO0k9Tis0OHwwO0o9TjtrW3Y+PjJdPWE7a1t3Pj4yXT1iO2tbeD4+Ml09YztrW3k+PjJdPWQ7a1t6Pj4yXT1lO2tbQT4+Ml09ZjtrW0c+PjJdPTA7a1tFPj4yXT0wO2tbbz4+Ml09MDtiPU5zKGtbdj4+Ml18MCl8MDtrW24+PjJdPWI7aWYob1IoKGtbdj4+Ml18MCkrNTJ8MCxrW24+PjJdfDAsNDgpfDApa1tvPj4yXT0oa1soa1tuPj4yXXwwKSsxNj4+Ml18MCkrMTtiPVN0KGtbdj4+Ml18MCl8MDtrW0g+PjJdPWI7aWYoYil7a1t1Pj4yXT1rW0g+PjJdO009a1t1Pj4yXXwwO3I9TjtyZXR1cm4gTXwwfWtbQz4+Ml09a1soa1t2Pj4yXXwwKSs1MisxNj4+Ml07aWYoIShrW0M+PjJdfDApKXtwdChoLDkzMTA3MTYxOHwoaVs5NjhdfDApPT0wKTtwdChoKzR8MCwzMDA3ZTMpO3B0KGgrOHwwLGtbdz4+Ml18MCk7cHQoaCsxMnwwLGtbKGtbdj4+Ml18MCkrMTEyPj4yXXwwKTtpZighKGtbKGtbdj4+Ml18MCkrMTEyPj4yXXwwKSlhZSg4LChrW3Y+PjJdfDApKzUyKzMyfDApO2I9aCsxNnwwO2Y9KGtbdj4+Ml18MCkrNTIrMzJ8MDtpW2I+PjBdPWlbZj4+MF18MDtpW2IrMT4+MF09aVtmKzE+PjBdfDA7aVtiKzI+PjBdPWlbZisyPj4wXXwwO2lbYiszPj4wXT1pW2YrMz4+MF18MDtpW2IrND4+MF09aVtmKzQ+PjBdfDA7aVtiKzU+PjBdPWlbZis1Pj4wXXwwO2lbYis2Pj4wXT1pW2YrNj4+MF18MDtpW2IrNz4+MF09aVtmKzc+PjBdfDA7cnQoMSxoLDI0LDAsZyk7cHQoaCsyNHwwLGtbZz4+Ml18MCk7cHQoaCsyOHwwLGtbZys0Pj4yXXwwKTtrWyhrW3Y+PjJdfDApKzM2Pj4yXT1rW3c+PjJdO2lbKGtbdj4+Ml18MCkrNTIrMTM+PjBdPShpWzk2OF18MCk9PTA7a1soa1t2Pj4yXXwwKSs1MisyND4+Ml09a1tnPj4yXTtrWyhrW3Y+PjJdfDApKzUyKzI0KzQ+PjJdPWtbZys0Pj4yXTtpWyhrW3Y+PjJdfDApKzQ3Pj4wXT0xO2I9U2coa1soa1t2Pj4yXXwwKSs4Pj4yXXwwLGgsMzIsMCwwKXwwO2tbSD4+Ml09YjtpZihrW0g+PjJdfDApe2tbdT4+Ml09a1tIPj4yXTtNPWtbdT4+Ml18MDtyPU47cmV0dXJuIE18MH1pZigoKGtbQT4+Ml18MCkhPTA/KGxbKGtbdj4+Ml18MCkrNDg+PjBdfDApIT0wOjApPyhiPUZyKGtbKGtbdj4+Ml18MCkrOD4+Ml18MCxrW0E+PjJdJjE5KXwwLGtbSD4+Ml09Yiwoa1tIPj4yXXwwKSE9MCk6MCl7a1t1Pj4yXT1rW0g+PjJdO009a1t1Pj4yXXwwO3I9TjtyZXR1cm4gTXwwfX1rW00+PjJdPWtbdj4+Ml07a1tNKzQ+PjJdPWtbKGtbdj4+Ml18MCkrOD4+Ml07Zj1NKzh8MDtrW2Y+PjJdPTA7a1tmKzQ+PjJdPTA7a1tNKzE2Pj4yXT1rW0E+PjJdO2tbTSsyMD4+Ml09a1t3Pj4yXTtmPShrW3c+PjJdfDApKzI0fDA7Zj1rUygoa1tDPj4yXXwwKSsxLTF8MCwwLGZ8MCwoKGZ8MCk8MCk8PDMxPj4zMXwwKXwwO2Y9JFIoMzIsMCxmfDAsTHwwKXwwO2I9RDtrW2I+PjJdPWY7a1tiKzQ+PjJdPUw7a1tLPj4yXT0oa1t3Pj4yXXwwKSsyNDtrW0Y+PjJdPWtbeD4+Ml07d2hpbGUoMSl7aWYoIShrW0Y+PjJdfDApKXtnPTMwO2JyZWFrfWlmKCgoa1tvPj4yXXwwKSE9MD8oKGtbej4+Ml18MCk9PTA/MTooa1soa1tGPj4yXXwwKSsxMj4+Ml18MCkhPTApOjApPyhrW3E+PjJdPTAsUnMoa1t2Pj4yXXwwLGtbKGtbRj4+Ml18MCkrMjA+PjJdfDAscSl8MCwoa1txPj4yXXwwKT4+PjA+PShrW28+PjJdfDApPj4+MCk6MCl7Zj0oa1t3Pj4yXXwwKSsyNHwwO2Y9a1MoKGtbcT4+Ml18MCktMXwwLDAsZnwwLCgoZnwwKTwwKTw8MzE+PjMxfDApfDA7Zj0kUigzMiwwLGZ8MCxMfDApfDA7Zj0kUihmfDAsTHwwLDI0LDApfDA7Yj1wO2tbYj4+Ml09ZjtrW2IrND4+Ml09TDtpZighKChrWyhrW3Y+PjJdfDApKzEwND4+Ml18MCkhPTA/KGtbcT4+Ml18MCk+Pj4wPj0oa1soa1t2Pj4yXXwwKSsxMDQ+PjJdfDApPj4+MDowKSlrWyhrW3Y+PjJdfDApKzEwND4+Ml09a1txPj4yXTtrW3Q+PjJdPWtbKGtbRj4+Ml18MCkrND4+Ml07Yj1wO2I9U2coa1soa1t2Pj4yXXwwKSs4Pj4yXXwwLGtbdD4+Ml18MCxrW3c+PjJdfDAsa1tiPj4yXXwwLGtbYis0Pj4yXXwwKXwwO2tbSD4+Ml09YjtpZihrW0g+PjJdfDApe2c9MjI7YnJlYWt9Yj0oa1tGPj4yXXwwKSsyNHwwO2pbYj4+MV09bVtiPj4xXSYtNjV9ZWxzZXtrW0M+PjJdPShrW0M+PjJdfDApKzE7aWYoa1t6Pj4yXXwwKWc9KGtbKGtbRj4+Ml18MCkrMTI+PjJdfDApPT0wP2tbeT4+Ml18MDowO2Vsc2UgZz0wO2tbcz4+Ml09ZztiPUQ7Yj1UdChNLGtbRj4+Ml18MCxrW3M+PjJdfDAsa1tiPj4yXXwwLGtbYis0Pj4yXXwwKXwwO2tbSD4+Ml09YjtpZihrW0g+PjJdfDApe2c9Mjc7YnJlYWt9a1tHPj4yXT1rW0Y+PjJdO2Y9a1tLPj4yXXwwO2I9RDtmPSRSKGtbYj4+Ml18MCxrW2IrND4+Ml18MCxmfDAsKChmfDApPDApPDwzMT4+MzF8MCl8MDtiPUQ7a1tiPj4yXT1mO2tbYis0Pj4yXT1MO2I9KGtbRj4+Ml18MCkrMjR8MDtqW2I+PjFdPW1bYj4+MV18NjR9a1tGPj4yXT1rWyhrW0Y+PjJdfDApKzEyPj4yXX1pZigoZ3wwKT09MjIpe2tbdT4+Ml09a1tIPj4yXTtNPWtbdT4+Ml18MDtyPU47cmV0dXJuIE18MH1lbHNlIGlmKChnfDApPT0yNyl7a1t1Pj4yXT1rW0g+PjJdO009a1t1Pj4yXXwwO3I9TjtyZXR1cm4gTXwwfWVsc2UgaWYoKGd8MCk9PTMwKXtpZigoKGtbej4+Ml18MCkhPTA/KGtbKGtbdj4+Ml18MCkrMTA0Pj4yXXwwKSE9MDowKT8odD1VdChrW3Y+PjJdfDAsa1tDPj4yXXwwKXwwLGtbSD4+Ml09dCwoa1tIPj4yXXwwKSE9MCk6MCl7a1t1Pj4yXT1rW0g+PjJdO009a1t1Pj4yXXwwO3I9TjtyZXR1cm4gTXwwfWlmKChrW3o+PjJdfDApIT0wPyhrW0E+PjJdJjMyfDApIT0wOjApe2tbQj4+Ml09MTthOmRvIGlmKGlbKGtbdj4+Ml18MCkrNDk+PjBdfDApe3Q9bXMoa1soa1t2Pj4yXXwwKSs4Pj4yXXwwKXwwO2tbST4+Ml09dDt0PUQ7cz1rW0k+PjJdfDA7cz0kUihrW3Q+PjJdfDAsa1t0KzQ+PjJdfDAsc3wwLCgoc3wwKTwwKTw8MzE+PjMxfDApfDA7cz1fUihzfDAsTHwwLDEsMCl8MDt0PWtbST4+Ml18MDt0PWlTKHN8MCxMfDAsdHwwLCgodHwwKTwwKTw8MzE+PjMxfDApfDA7ST1rW0k+PjJdfDA7ST1rUyh0fDAsTHwwLEl8MCwoKEl8MCk8MCk8PDMxPj4zMXwwKXwwO3Q9TSs4fDA7a1t0Pj4yXT1JO2tbdCs0Pj4yXT1MO3Q9TSs4fDA7ST1EO2tbQj4+Ml09KChrW3Q+PjJdfDApPT0oa1tJPj4yXXwwKT8oa1t0KzQ+PjJdfDApPT0oa1tJKzQ+PjJdfDApOjApJjE7d2hpbGUoMSl7dD1EO3E9a1t0KzQ+PjJdfDA7ST1NKzh8MDtzPWtbSSs0Pj4yXXwwO2lmKCEoKHF8MCk8KHN8MCl8KChxfDApPT0oc3wwKT8oa1t0Pj4yXXwwKT4+PjA8KGtbST4+Ml18MCk+Pj4wOjApKSlicmVhayBhO0k9RDtJPVR0KE0sa1tHPj4yXXwwLGtbeT4+Ml18MCxrW0k+PjJdfDAsa1tJKzQ+PjJdfDApfDA7a1tIPj4yXT1JO2lmKGtbSD4+Ml18MClicmVhazt0PWtbSz4+Ml18MDtJPUQ7dD0kUihrW0k+PjJdfDAsa1tJKzQ+PjJdfDAsdHwwLCgodHwwKTwwKTw8MzE+PjMxfDApfDA7ST1EO2tbST4+Ml09dDtrW0krND4+Ml09TDtrW0U+PjJdPShrW0U+PjJdfDApKzF9a1t1Pj4yXT1rW0g+PjJdO009a1t1Pj4yXXwwO3I9TjtyZXR1cm4gTXwwfXdoaWxlKDApO2lmKGtbQj4+Ml18MCl7TT1GcihrW00rND4+Ml18MCxrW0E+PjJdJjE5KXwwO2tbSD4+Ml09TX19aWYoKChrW3o+PjJdfDApIT0wPyhsWyhrW3Y+PjJdfDApKzQ3Pj4wXXwwKSE9MDowKT8oTT0oa1t2Pj4yXXwwKSsxNnwwLEs9a1tNKzQ+PjJdfDAsKEt8MCk+MHwoS3wwKT09MCYoa1tNPj4yXXwwKT4+PjA+PTApOjApe009KGtbdj4+Ml18MCkrMTZ8MDtEPWtbTSs0Pj4yXXwwO0s9SjtrW0s+PjJdPWtbTT4+Ml07a1tLKzQ+PjJdPUQ7Sz0oa1t3Pj4yXXwwKSsyNHwwO0s9a1MoKGtbQz4+Ml18MCkrKGtbRT4+Ml18MCkrMS0xfDAsMCxLfDAsKChLfDApPDApPDwzMT4+MzF8MCl8MDtLPSRSKDMyLDAsS3wwLEx8MCl8MDtEPUw7TT0oa1t2Pj4yXXwwKSsxNnwwO0k9a1tNKzQ+PjJdfDA7aWYoKER8MCk+KEl8MCl8KChEfDApPT0oSXwwKT9LPj4+MD4oa1tNPj4yXXwwKT4+PjA6MCkpe0s9KGtbdz4+Ml18MCkrMjR8MDtLPWtTKChrW0M+PjJdfDApKyhrW0U+PjJdfDApKzEtMXwwLDAsS3wwLCgoS3wwKTwwKTw8MzE+PjMxfDApfDA7Sz0kUigzMiwwLEt8MCxMfDApfDA7TT1KO2tbTT4+Ml09SztrW00rND4+Ml09TH1NPUo7Y3Qoa1t2Pj4yXXwwLGtbTT4+Ml18MCxrW00rND4+Ml18MCk7aVsoa1t2Pj4yXXwwKSs0Nz4+MF09MH1rW0M+PjJdPWtbKGtbdj4+Ml18MCkrNTIrMTY+PjJdO2tbRj4+Ml09a1t4Pj4yXTt3aGlsZSgxKXtpZighKChrW0Y+PjJdfDApIT0wPyhrW0g+PjJdfDApPT0wOjApKWJyZWFrO2lmKG1bKGtbRj4+Ml18MCkrMjQ+PjFdJjY0KXtrW0M+PjJdPShrW0M+PjJdfDApKzE7TT1BdChrW3Y+PjJdfDAsa1tDPj4yXXwwLGtbKGtbRj4+Ml18MCkrMjA+PjJdfDApfDA7a1tIPj4yXT1NfWtbRj4+Ml09a1soa1tGPj4yXXwwKSsxMj4+Ml19d2hpbGUoMSl7aWYoISgoa1tIPj4yXXwwKT09MD8oa1tFPj4yXXwwKT4wOjApKWJyZWFrO2tbQz4+Ml09KGtbQz4+Ml18MCkrMTtrW0U+PjJdPShrW0U+PjJdfDApKy0xO009QXQoa1t2Pj4yXXwwLGtbQz4+Ml18MCxrWyhrW0c+PjJdfDApKzIwPj4yXXwwKXwwO2tbSD4+Ml09TX1pZighKGtbSD4+Ml18MCkpe2pbKGtbdj4+Ml18MCkrNTIrMTQ+PjFdPWtbdz4+Ml0mNjUyODB8a1t3Pj4yXT4+MTY7a1soa1t2Pj4yXXwwKSs1MisxNj4+Ml09a1tDPj4yXTtpZihrW3o+PjJdfDApe009KGtbdj4+Ml18MCkrNTIrOHwwO2tbTT4+Ml09KGtbTT4+Ml18MCkrMTtrWyhrW3Y+PjJdfDApKzUyKzIwPj4yXT1rW3k+PjJdfWlmKGtbej4+Ml18MCl7cXQoa1t2Pj4yXXwwKTtrWyhrW3Y+PjJdfDApKzEyPj4yXT1rW0M+PjJdfX1rW3U+PjJdPWtbSD4+Ml07TT1rW3U+PjJdfDA7cj1OO3JldHVybiBNfDB9cmV0dXJuIDB9ZnVuY3Rpb24gU3QoYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wLGU9MCxmPTAsZz0wLGg9MCxpPTA7aT1yO3I9ciszMnwwO2I9aSsyNHwwO2M9aSsyMHwwO2c9aSsxNnwwO2Q9aSsxMnwwO2Y9aSs4fDA7aD1pKzR8MDtlPWk7a1tjPj4yXT1hO2tbZz4+Ml09MDtpZighKGpbKGtbYz4+Ml18MCkrNDA+PjFdfDApKXthPWt0KGtbYz4+Ml18MCl8MDtrW2Y+PjJdPWE7ZG8gaWYoKGtba1tmPj4yXT4+Ml18MCk+Pj4wPjApe2FlKDQsaCk7YT1mdChrW2M+PjJdfDAsNCw0KXwwO2tbZz4+Ml09YTtpZighKGtbZz4+Ml18MCkpe250KGtbYz4+Ml18MCxrW2g+PjJdfDApO1VyKGtbYz4+Ml18MCw0LDQpO2JyZWFrfWlmKChrW2c+PjJdfDApIT01KXtrW2I+PjJdPWtbZz4+Ml07aD1rW2I+PjJdfDA7cj1pO3JldHVybiBofDB9fXdoaWxlKDApO1NyKGtbYz4+Ml18MCwzKTtqWyhrW2M+PjJdfDApKzQwPj4xXT0tMTtrW2Q+PjJdPTA7ZG97YT1rW2M+PjJdfDA7aD0oa1tkPj4yXXwwKSsxfDA7a1tkPj4yXT1oO2g9WHQoYSxlLDEsaCl8MDtrW2c+PjJdPWh9d2hpbGUoKGtbZz4+Ml18MCk9PS0xKX1rW2I+PjJdPWtbZz4+Ml07aD1rW2I+PjJdfDA7cj1pO3JldHVybiBofDB9ZnVuY3Rpb24gVHQoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaT0wLGo9MCxsPTAsbT0wLG49MCxvPTA7bD1yO3I9cis2NHwwO2Y9bCsyOHwwO2c9bCsyNHwwO289bCsyMHwwO249bCsxNnwwO2g9bDtqPWwrMTJ8MDtpPWwrOHwwO209bCszMnwwO2tbZz4+Ml09YTtrW28+PjJdPWI7a1tuPj4yXT1jO2I9aDtrW2I+PjJdPWQ7a1tiKzQ+PjJdPWU7a1tpPj4yXT1rWyhrW28+PjJdfDApKzQ+PjJdO1Z0KGtba1tnPj4yXT4+Ml18MCxrWyhrW28+PjJdfDApKzIwPj4yXXwwLGtbbj4+Ml18MCxrW2k+PjJdfDAsbSk7Yj1oO2I9V3Qoa1tnPj4yXXwwLG0sMjQsa1tiPj4yXXwwLGtbYis0Pj4yXXwwKXwwO2tbaj4+Ml09YjtpZihrW2o+PjJdfDApe2tbZj4+Ml09a1tqPj4yXTtvPWtbZj4+Ml18MDtyPWw7cmV0dXJuIG98MH1lbHNle2I9a1tnPj4yXXwwO209a1tpPj4yXXwwO249a1soa1tnPj4yXXwwKSsyMD4+Ml18MDtvPWg7bz0kUihrW28+PjJdfDAsa1tvKzQ+PjJdfDAsMjQsMCl8MDtvPVd0KGIsbSxuLG8sTCl8MDtrW2o+PjJdPW87a1tmPj4yXT1rW2o+PjJdO289a1tmPj4yXXwwO3I9bDtyZXR1cm4gb3wwfXJldHVybiAwfWZ1bmN0aW9uIFV0KGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wLGk9MCxqPTAsbD0wLG09MCxuPTAsbz0wLHA9MDtwPXI7cj1yKzgwfDA7Yz1wKzQ4fDA7ZD1wKzQ0fDA7ZT1wKzQwfDA7bz1wKzM2fDA7bj1wKzMyfDA7Zj1wKzI4fDA7Zz1wKzU2fDA7bD1wKzI0fDA7aD1wKzh8MDtpPXA7aj1wKzIwfDA7bT1wKzE2fDA7a1tkPj4yXT1hO2tbZT4+Ml09YjtrW28+PjJdPWtbKGtbZD4+Ml18MCkrMzY+PjJdO2tbbj4+Ml09MDthPVNkKChrW28+PjJdfDApKzI0fDApfDA7a1tmPj4yXT1hO2lmKCEoa1tmPj4yXXwwKSl7a1tjPj4yXT03O289a1tjPj4yXXwwO3I9cDtyZXR1cm4gb3wwfWlmKChrWyhrW2Q+PjJdfDApKzEwND4+Ml18MCk9PTEpe2E9aDtrW2E+PjJdPTI0O2tbYSs0Pj4yXT0wfWVsc2V7Yj0oa1tvPj4yXXwwKSsyNHwwO2I9a1MoKGtbKGtbZD4+Ml18MCkrMTA0Pj4yXXwwKS0xLTF8MCwwLGJ8MCwoKGJ8MCk8MCk8PDMxPj4zMXwwKXwwO2I9JFIoMzIsMCxifDAsTHwwKXwwO2I9JFIoYnwwLEx8MCwxNiwwKXwwO2E9aDtrW2E+PjJdPWI7a1thKzQ+PjJdPUx9YT1oO2E9b3Moa1soa1tkPj4yXXwwKSs4Pj4yXXwwLGtbZj4+Ml18MCw4LGtbYT4+Ml18MCxrW2ErND4+Ml18MCl8MDtrW24+PjJdPWE7YT1xcihrW2Y+PjJdfDApfDA7a1soa1tkPj4yXXwwKSs1MisyND4+Ml09YTthPXFyKChrW2Y+PjJdfDApKzR8MCl8MDtrWyhrW2Q+PjJdfDApKzUyKzI0KzQ+PjJdPWE7a1tsPj4yXT1rWyhrW2Q+PjJdfDApKzEwND4+Ml07a1soa1tkPj4yXXwwKSsxMDQ+PjJdPTA7d2hpbGUoMSl7aWYoa1tuPj4yXXwwKWJyZWFrO2lmKChrW2w+PjJdfDApPj4+MD4oa1tlPj4yXXwwKT4+PjApYnJlYWs7Yj0oa1tvPj4yXXwwKSsyNHwwO2I9a1MoKGtbbD4+Ml18MCktMXwwLDAsYnwwLCgoYnwwKTwwKTw8MzE+PjMxfDApfDA7Yj0kUigzMiwwLGJ8MCxMfDApfDA7YT1pO2tbYT4+Ml09YjtrW2ErND4+Ml09TDthPWk7YT1vcyhrWyhrW2Q+PjJdfDApKzg+PjJdfDAsa1tmPj4yXXwwLChrW28+PjJdfDApKzI0fDAsa1thPj4yXXwwLGtbYSs0Pj4yXXwwKXwwO2tbbj4+Ml09YTtpZighKGtbbj4+Ml18MCkpe2E9cXIoa1tmPj4yXXwwKXwwO2tbaj4+Ml09YTthPXFyKChrW2Y+PjJdfDApKzR8MCl8MDtrW20+PjJdPWE7VnQoa1tkPj4yXXwwLGtbaj4+Ml18MCxrW20+PjJdfDAsKGtbZj4+Ml18MCkrMjR8MCxnKTthPWk7YT1TZyhrWyhrW2Q+PjJdfDApKzg+PjJdfDAsZywyNCxrW2E+PjJdfDAsa1thKzQ+PjJdfDApfDA7a1tuPj4yXT1hfWtbbD4+Ml09KGtbbD4+Ml18MCkrMX1VZChrW2Y+PjJdfDApO2tbYz4+Ml09a1tuPj4yXTtvPWtbYz4+Ml18MDtyPXA7cmV0dXJuIG98MH1mdW5jdGlvbiBWdChhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsbT0wLG49MCxvPTAscD0wO249cjtyPXIrMzJ8MDtmPW4rMjR8MDtwPW4rMjB8MDtvPW4rMTZ8MDtnPW4rMTJ8MDtoPW4rOHwwO209bis0fDA7aj1uO2tbZj4+Ml09YTtrW3A+PjJdPWI7a1tvPj4yXT1jO2tbZz4+Ml09ZDtrW2g+PjJdPWU7a1tqPj4yXT0oa1tmPj4yXXwwKSs1MisyNDtwdChrW2g+PjJdfDAsa1twPj4yXXwwKTtwdCgoa1toPj4yXXwwKSs0fDAsa1tvPj4yXXwwKTtkPShrW2g+PjJdfDApKzh8MDtpZighKGtbKGtbZj4+Ml18MCkrMTA0Pj4yXXwwKSl7cD0oa1tmPj4yXXwwKSs1MiszMnwwO2lbZD4+MF09aVtwPj4wXXwwO2lbZCsxPj4wXT1pW3ArMT4+MF18MDtpW2QrMj4+MF09aVtwKzI+PjBdfDA7aVtkKzM+PjBdPWlbcCszPj4wXXwwO2lbZCs0Pj4wXT1pW3ArND4+MF18MDtpW2QrNT4+MF09aVtwKzU+PjBdfDA7aVtkKzY+PjBdPWlbcCs2Pj4wXXwwO2lbZCs3Pj4wXT1pW3ArNz4+MF18MDtrW20+PjJdPShsWyhrW2Y+PjJdfDApKzUyKzEzPj4wXXwwKT09KChpWzk2OF18MCk9PTB8MCkmMTtydChrW20+PjJdfDAsa1toPj4yXXwwLDgsa1tqPj4yXXwwLGtbaj4+Ml18MCk7cnQoa1ttPj4yXXwwLGtbZz4+Ml18MCxrWyhrW2Y+PjJdfDApKzM2Pj4yXXwwLGtbaj4+Ml18MCxrW2o+PjJdfDApO3B0KChrW2g+PjJdfDApKzE2fDAsa1trW2o+PjJdPj4yXXwwKTtwdCgoa1toPj4yXXwwKSsyMHwwLGtbKGtbaj4+Ml18MCkrND4+Ml18MCk7cj1uO3JldHVybn1lbHNle2U9ZCsxNnwwO2Rve2lbZD4+MF09MDtkPWQrMXwwfXdoaWxlKChkfDApPChlfDApKTtyPW47cmV0dXJufX1mdW5jdGlvbiBXdChhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxpPTAsaj0wLGw9MCxtPTAsbj0wO249cjtyPXIrMzJ8MDtmPW4rMjh8MDtnPW4rMjR8MDtoPW4rMjB8MDtpPW4rMTZ8MDtqPW47bT1uKzEyfDA7bD1uKzh8MDtrW2c+PjJdPWE7a1toPj4yXT1iO2tbaT4+Ml09YzthPWo7a1thPj4yXT1kO2tbYSs0Pj4yXT1lO2E9ajtlPWtbYSs0Pj4yXXwwO2I9KGtbZz4+Ml18MCkrOHwwO2M9a1tiKzQ+PjJdfDA7aWYoKGV8MCk8KGN8MCl8KChlfDApPT0oY3wwKT8oa1thPj4yXXwwKT4+PjA8KGtbYj4+Ml18MCk+Pj4wOjApPyhlPWosYT1rW2k+PjJdfDAsYT0kUihrW2U+PjJdfDAsa1tlKzQ+PjJdfDAsYXwwLCgoYXwwKTwwKTw8MzE+PjMxfDApfDAsZT1MLGI9KGtbZz4+Ml18MCkrOHwwLGM9a1tiKzQ+PjJdfDAsKGV8MCk+KGN8MCl8KChlfDApPT0oY3wwKT9hPj4+MD49KGtbYj4+Ml18MCk+Pj4wOjApKTowKXthPShrW2c+PjJdfDApKzh8MDtiPWo7Yj1fUihrW2E+PjJdfDAsa1thKzQ+PjJdfDAsa1tiPj4yXXwwLGtbYis0Pj4yXXwwKXwwO2tbbD4+Ml09YjtiPWo7Yj1TZyhrWyhrW2c+PjJdfDApKzQ+PjJdfDAsa1toPj4yXXwwLGtbbD4+Ml18MCxrW2I+PjJdfDAsa1tiKzQ+PjJdfDApfDA7a1ttPj4yXT1iO2lmKGtbbT4+Ml18MCl7a1tmPj4yXT1rW20+PjJdO209a1tmPj4yXXwwO3I9bjtyZXR1cm4gbXwwfWE9a1tsPj4yXXwwO2I9ajthPSRSKGtbYj4+Ml18MCxrW2IrND4+Ml18MCxhfDAsKChhfDApPDApPDwzMT4+MzF8MCl8MDtiPWo7a1tiPj4yXT1hO2tbYis0Pj4yXT1MO2tbaT4+Ml09KGtbaT4+Ml18MCktKGtbbD4+Ml18MCk7a1toPj4yXT0oa1toPj4yXXwwKSsoa1tsPj4yXXwwKTtiPUZyKGtbKGtbZz4+Ml18MCkrND4+Ml18MCxrWyhrW2c+PjJdfDApKzE2Pj4yXSYxOSl8MDtrW20+PjJdPWI7aWYoKGtbaT4+Ml18MCk9PTB8KGtbbT4+Ml18MCkhPTApe2tbZj4+Ml09a1ttPj4yXTttPWtbZj4+Ml18MDtyPW47cmV0dXJuIG18MH19Yj1qO2I9U2coa1soa1tnPj4yXXwwKSs0Pj4yXXwwLGtbaD4+Ml18MCxrW2k+PjJdfDAsa1tiPj4yXXwwLGtbYis0Pj4yXXwwKXwwO2tbbT4+Ml09YjtrW2Y+PjJdPWtbbT4+Ml07bT1rW2Y+PjJdfDA7cj1uO3JldHVybiBtfDB9ZnVuY3Rpb24gWHQoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxpPTAsbT0wLG49MCxvPTAscD0wLHE9MCxzPTAsdD0wLHU9MCx2PTAsdz0wO3c9cjtyPXIrNjR8MDt2PXcrNDh8MDtlPXcrNDR8MDtmPXcrNDB8MDtnPXcrMzZ8MDtoPXcrMzJ8MDtxPXcrMjh8MDtvPXcrMjR8MDtuPXcrMjB8MDtpPXcrMTZ8MDtzPXcrMTJ8MDttPXcrOHwwO3A9dys0fDA7dD13O2tbZT4+Ml09YTtrW2Y+PjJdPWI7a1tnPj4yXT1jO2tbaD4+Ml09ZDtrW3M+PjJdPTA7aWYoKGtbaD4+Ml18MCk+NSl7a1twPj4yXT0xO2lmKChrW2g+PjJdfDApPjEwMCl7a1t2Pj4yXT0xNTt2PWtbdj4+Ml18MDtyPXc7cmV0dXJuIHZ8MH1pZigoa1toPj4yXXwwKT49MTApe2M9KGhhKChrW2g+PjJdfDApLTl8MCwoa1toPj4yXXwwKS05fDApfDApKjM5fDA7a1twPj4yXT1jfUdpKGtba1tlPj4yXT4+Ml18MCxrW3A+PjJdfDApfDB9aWYoIShrW2c+PjJdfDApKXtjPWh0KGtbZT4+Ml18MCxrW2Y+PjJdfDApfDA7a1tzPj4yXT1jO2RvIGlmKChrW3M+PjJdfDApPT01KXtpZighKGtba1soa1tlPj4yXXwwKSszMj4+Ml0+PjJdfDApKXtrW3M+PjJdPS0xO2JyZWFrfWM9UnIoa1tlPj4yXXwwLDIpfDA7a1tzPj4yXT1jO2lmKCFjKXtTcihrW2U+PjJdfDAsMik7a1tzPj4yXT0tMTticmVha31pZigoa1tzPj4yXXwwKT09NSlrW3M+PjJdPTI2MX13aGlsZSgwKTtpZihrW3M+PjJdfDApe2tbdj4+Ml09a1tzPj4yXTt2PWtbdj4+Ml18MDtyPXc7cmV0dXJuIHZ8MH19Yz1rdChrW2U+PjJdfDApfDA7a1txPj4yXT1jO2RvIGlmKChrW2c+PjJdfDApPT0wPyhrW2tbcT4+Ml0+PjJdfDApPT0oa1soa1tlPj4yXXwwKSs1MisxNj4+Ml18MCk6MCl7Yz1ScihrW2U+PjJdfDAsMyl8MDtrW3M+PjJdPWM7c3Qoa1tlPj4yXXwwKTtpZihrW3M+PjJdfDApe2lmKChrW3M+PjJdfDApPT01KWJyZWFrO2tbdj4+Ml09a1tzPj4yXTt2PWtbdj4+Ml18MDtyPXc7cmV0dXJuIHZ8MH11PU5zKGtbZT4+Ml18MCl8MDt1PShvUih1LChrW2U+PjJdfDApKzUyfDAsNDgpfDApIT0wO2U9a1tlPj4yXXwwO2lmKHUpe1NyKGUsMyk7a1t2Pj4yXT0tMTt2PWtbdj4+Ml18MDtyPXc7cmV0dXJuIHZ8MH1lbHNle2pbZSs0MD4+MV09MDtrW3Y+PjJdPTA7dj1rW3Y+PjJdfDA7cj13O3JldHVybiB2fDB9fXdoaWxlKDApO2tbbz4+Ml09MDtrW24+PjJdPTA7a1ttPj4yXT1rWyhrW2U+PjJdfDApKzUyKzE2Pj4yXTtrW2k+PjJdPTE7d2hpbGUoMSl7aWYoKGtbaT4+Ml18MCk+PTUpYnJlYWs7a1t0Pj4yXT1rWyhrW3E+PjJdfDApKzQrKGtbaT4+Ml08PDIpPj4yXTtpZigoa1tvPj4yXXwwKT4+PjA8PShrW3Q+PjJdfDApPj4+MD8oa1t0Pj4yXXwwKT4+PjA8PShrW20+PjJdfDApPj4+MDowKXtrW28+PjJdPWtbdD4+Ml07a1tuPj4yXT1rW2k+PjJdfWtbaT4+Ml09KGtbaT4+Ml18MCkrMX1hOmRvIGlmKCgobFsoa1tlPj4yXXwwKSs0Nj4+MF18MCkmMnwwKT09MD8oKGtbbj4+Ml18MCk9PTA/MTooa1tvPj4yXXwwKT4+PjA8KGtbbT4+Ml18MCk+Pj4wKTowKXtrW2k+PjJdPTE7d2hpbGUoMSl7aWYoKGtbaT4+Ml18MCk+PTUpYnJlYWsgYTtjPWZ0KGtbZT4+Ml18MCwzKyhrW2k+PjJdfDApfDAsMSl8MDtrW3M+PjJdPWM7aWYoIShrW3M+PjJdfDApKXt1PTM2O2JyZWFrfWlmKChrW3M+PjJdfDApIT01KWJyZWFrO2tbaT4+Ml09KGtbaT4+Ml18MCkrMX1pZigodXwwKT09MzYpe3U9a1ttPj4yXXwwO2tbKGtbcT4+Ml18MCkrNCsoa1tpPj4yXTw8Mik+PjJdPXU7a1tvPj4yXT11O2tbbj4+Ml09a1tpPj4yXTtVcihrW2U+PjJdfDAsMysoa1tpPj4yXXwwKXwwLDEpO2JyZWFrfWtbdj4+Ml09a1tzPj4yXTt2PWtbdj4+Ml18MDtyPXc7cmV0dXJuIHZ8MH13aGlsZSgwKTtpZighKGtbbj4+Ml18MCkpe2tbdj4+Ml09KGtbcz4+Ml18MCk9PTU/LTE6NTIwO3Y9a1t2Pj4yXXwwO3I9dztyZXR1cm4gdnwwfXU9UnIoa1tlPj4yXXwwLDMrKGtbbj4+Ml18MCl8MCl8MDtrW3M+PjJdPXU7aWYoa1tzPj4yXXwwKXtrW3Y+PjJdPShrW3M+PjJdfDApPT01Py0xOmtbcz4+Ml18MDt2PWtbdj4+Ml18MDtyPXc7cmV0dXJuIHZ8MH1rWyhrW2U+PjJdfDApKzEwMD4+Ml09KGtba1txPj4yXT4+Ml18MCkrMTtzdChrW2U+PjJdfDApO2lmKChrWyhrW3E+PjJdfDApKzQrKGtbbj4+Ml08PDIpPj4yXXwwKT09KGtbbz4+Ml18MCk/KHU9TnMoa1tlPj4yXXwwKXwwLChvUih1LChrW2U+PjJdfDApKzUyfDAsNDgpfDApPT0wKTowKXtqWyhrW2U+PjJdfDApKzQwPj4xXT1rW24+PjJdO2tbdj4+Ml09a1tzPj4yXTt2PWtbdj4+Ml18MDtyPXc7cmV0dXJuIHZ8MH1TcihrW2U+PjJdfDAsMysoa1tuPj4yXXwwKXwwKTtrW3Y+PjJdPS0xO3Y9a1t2Pj4yXXwwO3I9dztyZXR1cm4gdnwwfWZ1bmN0aW9uIFl0KGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTA7Zz1yO3I9ciszMnwwO2Y9ZysyMHwwO2g9ZysxNnwwO2Q9ZysxMnwwO2M9Zys4fDA7ZT1nKzR8MDtiPWc7a1toPj4yXT1hO2tbZD4+Ml09a1soa1toPj4yXXwwKSsxNj4+Ml07a1tlPj4yXT1rWyhrW2g+PjJdfDApKzIwPj4yXTtrW2I+PjJdPTA7d2hpbGUoMSl7aWYoKGtbYj4+Ml18MCk+PShrWyhrW2Q+PjJdfDApKzEwND4+Ml18MCkpe2I9NzticmVha31rW2M+PjJdPShrWyhrW2Q+PjJdfDApKzEwMD4+Ml18MCkrKChrW2I+PjJdfDApKjQ4fDApO2lmKChrWyhrW2M+PjJdfDApKzIwPj4yXXwwKT4+PjA+PShrW2U+PjJdfDApPj4+MD8wPT0oQWooa1soa1tjPj4yXXwwKSsxNj4+Ml18MCxrW2U+PjJdfDApfDApOjApe2I9NTticmVha31rW2I+PjJdPShrW2I+PjJdfDApKzF9aWYoKGJ8MCk9PTUpe2tbZj4+Ml09MTtoPWtbZj4+Ml18MDtyPWc7cmV0dXJuIGh8MH1lbHNlIGlmKChifDApPT03KXtrW2Y+PjJdPTA7aD1rW2Y+PjJdfDA7cj1nO3JldHVybiBofDB9cmV0dXJuIDB9ZnVuY3Rpb24gWnQoYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wLGU9MCxmPTAsZz0wLGg9MCxpPTA7aD1yO3I9ciszMnwwO2I9aCsyNHwwO2c9aCsyMHwwO2Y9aCsxNnwwO2Q9aCsxMnwwO2M9aDtlPWgrOHwwO2tbYj4+Ml09YTtrW2c+PjJdPTA7a1tmPj4yXT1rWyhrW2I+PjJdfDApKzE2Pj4yXTtpZigoKGxbKGtbZj4+Ml18MCkrNT4+MF18MHwwKSE9Mj8oYT1fdChrW2Y+PjJdfDApfDAsa1tnPj4yXT1hLChrW2c+PjJdfDApPT0wKTowKT8oa1tkPj4yXT1rWyhrW2I+PjJdfDApKzQ+PjJdLGk9NCsoa1soa1tmPj4yXXwwKSsxNjA+PjJdfDApfDAsaT1rUyhrWyhrW2Y+PjJdfDApKzU2Pj4yXXwwLDAsaXwwLCgoaXwwKTwwKTw8MzE+PjMxfDApfDAsYT1jLGtbYT4+Ml09aSxrW2ErND4+Ml09TCxrW2U+PjJdPWtbZD4+Ml0sYT1jLGE9JHQoa1soa1tmPj4yXXwwKSs3Mj4+Ml18MCxrW2E+PjJdfDAsa1thKzQ+PjJdfDAsa1soa1tiPj4yXXwwKSsyMD4+Ml18MCl8MCxrW2c+PjJdPWEsKGtbZz4+Ml18MCk9PTApOjApe2Q9a1soa1tmPj4yXXwwKSs3Mj4+Ml18MDtlPWtbZT4+Ml18MDthPWtbKGtbZj4+Ml18MCkrMTYwPj4yXXwwO2k9YztpPSRSKGtbaT4+Ml18MCxrW2krND4+Ml18MCw0LDApfDA7aT1TZyhkLGUsYSxpLEwpfDA7a1tnPj4yXT1pfWlmKGtbZz4+Ml18MCl7aT1rW2c+PjJdfDA7cj1oO3JldHVybiBpfDB9aT0oa1tmPj4yXXwwKSs1NnwwO2tbaT4+Ml09KGtbaT4+Ml18MCkrMTtpPWF1KGtbZj4+Ml18MCxrWyhrW2I+PjJdfDApKzIwPj4yXXwwKXwwO2tbZz4+Ml09aTtpPWtbZz4+Ml18MDtyPWg7cmV0dXJuIGl8MH1mdW5jdGlvbiBfdChhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTAsZT0wO2U9cjtyPXIrMTZ8MDtiPWUrMTJ8MDtkPWUrOHwwO2M9ZTtrW2I+PjJdPWE7a1tkPj4yXT0wO2lmKGtba1soa1tiPj4yXXwwKSs3Mj4+Ml0+PjJdfDApe2Q9a1tkPj4yXXwwO3I9ZTtyZXR1cm4gZHwwfWtbZSs0Pj4yXT04MjIyO2tbYz4+Ml09a1sxMV07aWYoISgobFsoa1tiPj4yXXwwKSs1Pj4wXXwwfDApIT00PyhsWyhrW2I+PjJdfDApKzIyPj4wXXwwfDApPT0wOjApKWtbYz4+Ml09LTE7YT1idShrW2tbYj4+Ml0+PjJdfDAsMCxrWyhrW2I+PjJdfDApKzcyPj4yXXwwLDgyMjIsa1tjPj4yXXwwKXwwO2tbZD4+Ml09YTtkPWtbZD4+Ml18MDtyPWU7cmV0dXJuIGR8MH1mdW5jdGlvbiAkdChhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGk9MDtlPXI7cj1yKzMyfDA7Zz1lKzEyfDA7aD1lO2k9ZSs4fDA7Zj1lKzE2fDA7a1tnPj4yXT1hO2E9aDtrW2E+PjJdPWI7a1thKzQ+PjJdPWM7a1tpPj4yXT1kO3B0KGYsa1tpPj4yXXwwKTtkPWg7ZD1TZyhrW2c+PjJdfDAsZiw0LGtbZD4+Ml18MCxrW2QrND4+Ml18MCl8MDtyPWU7cmV0dXJuIGR8MH1mdW5jdGlvbiBhdShhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wLGg9MDtoPXI7cj1yKzMyfDA7Yz1oKzE2fDA7ZD1oKzEyfDA7ZT1oKzh8MDtnPWgrNHwwO2Y9aDtrW2M+PjJdPWE7a1tkPj4yXT1iO2tbZz4+Ml09MDtrW2U+PjJdPTA7d2hpbGUoMSl7aWYoKGtbZT4+Ml18MCk+PShrWyhrW2M+PjJdfDApKzEwND4+Ml18MCkpYnJlYWs7a1tmPj4yXT0oa1soa1tjPj4yXXwwKSsxMDA+PjJdfDApKygoa1tlPj4yXXwwKSo0OHwwKTtpZigoa1tkPj4yXXwwKT4+PjA8PShrWyhrW2Y+PjJdfDApKzIwPj4yXXwwKT4+PjApe2I9dmooa1soa1tmPj4yXXwwKSsxNj4+Ml18MCxrW2Q+PjJdfDApfDA7a1tnPj4yXT1rW2c+PjJdfGJ9a1tlPj4yXT0oa1tlPj4yXXwwKSsxfXI9aDtyZXR1cm4ga1tnPj4yXXwwfWZ1bmN0aW9uIGJ1KGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGk9MCxqPTAsbD0wLG09MCxuPTA7bj1yO3I9ciszMnwwO2Y9bisyNHwwO2c9bisyMHwwO2g9bisxNnwwO2k9bisxMnwwO2o9bis4fDA7bD1uKzR8MDttPW47a1tnPj4yXT1hO2tbaD4+Ml09YjtrW2k+PjJdPWM7a1tqPj4yXT1kO2tbbD4+Ml09ZTtrW20+PjJdPWtbaT4+Ml07ZD1rW20+PjJdfDA7ZT1kKzcyfDA7ZG97a1tkPj4yXT0wO2Q9ZCs0fDB9d2hpbGUoKGR8MCk8KGV8MCkpO2lmKCEoa1tsPj4yXXwwKSl7bT1jcyhrW2c+PjJdfDAsa1toPj4yXXwwLGtbaT4+Ml18MCxrW2o+PjJdfDAsMCl8MDtrW2Y+PjJdPW07bT1rW2Y+PjJdfDA7cj1uO3JldHVybiBtfDB9aWYoKGtbbD4+Ml18MCk+MClrWyhrW20+PjJdfDApKzQ+PjJdPWtbbD4+Ml07ZWxzZSBrWyhrW20+PjJdfDApKzQ+PjJdPTEwMjA7a1trW20+PjJdPj4yXT00MDI4O2tbKGtbbT4+Ml18MCkrOD4+Ml09a1tsPj4yXTtrWyhrW20+PjJdfDApKzU2Pj4yXT1rW2o+PjJdO2tbKGtbbT4+Ml18MCkrNjQ+PjJdPWtbaD4+Ml07a1soa1ttPj4yXXwwKSs2MD4+Ml09a1tnPj4yXTtrW2Y+PjJdPTA7bT1rW2Y+PjJdfDA7cj1uO3JldHVybiBtfDB9ZnVuY3Rpb24gY3UoYSl7YT1hfDA7dmFyIGI9MCxjPTA7Yz1yO3I9cisxNnwwO2I9YztrW2I+PjJdPWE7cj1jO3JldHVybiBrWyhrW2I+PjJdfDApKzg+PjJdfDB9ZnVuY3Rpb24gZHUoYSl7YT1hfDA7dmFyIGI9MCxjPTA7Yj1yO3I9cisxNnwwO2M9YjtrW2M+PjJdPWE7YT1QcyhrW2M+PjJdfDApfDA7cj1iO3JldHVybiBhfDB9ZnVuY3Rpb24gZXUoYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wLGU9MCxmPTAsZz0wLGg9MCxuPTAsbz0wLHA9MCxxPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTA7eD1yO3I9cis2NHwwO2Y9eCs0MHwwO2c9eCszNnwwO3Q9eCs1MHwwO249eCs1MnwwO2g9eCszMnwwO2Q9eCsyOHwwO3c9eCsyNHwwO2I9eCs0OHwwO3E9eCsyMHwwO3Y9eCsxNnwwO289eCsxMnwwO3A9eCs4fDA7Yz14KzR8MDtlPXg7cz14KzQ2fDA7dT14KzQ0fDA7a1tnPj4yXT1hO2RvIGlmKCEoaVtrW2c+PjJdPj4wXXwwKSl7a1tkPj4yXT1rWyhrW2c+PjJdfDApKzUyPj4yXTtpW24+PjBdPWlbKGtbZz4+Ml18MCkrNT4+MF18MDtrW2g+PjJdPWtbKGtbZz4+Ml18MCkrNTY+PjJdO2lmKGZ1KGtbZz4+Ml18MCxsWyhrW2g+PjJdfDApKyhsW24+PjBdfDApPj4wXXwwKXwwKXt3PV9qKDYwMDA2KXwwO2tbZj4+Ml09dzt3PWtbZj4+Ml18MDtyPXg7cmV0dXJuIHd8MH1qWyhrW2c+PjJdfDApKzIwPj4xXT0oa1soa1tkPj4yXXwwKSszMj4+Ml18MCktMTtpWyhrW2c+PjJdfDApKzE+PjBdPTA7a1t3Pj4yXT1rWyhrW2Q+PjJdfDApKzM2Pj4yXTthPShsW24+PjBdfDApKzgrKGxbKGtbZz4+Ml18MCkrNj4+MF18MCkmNjU1MzU7altiPj4xXT1hO2pbKGtbZz4+Ml18MCkrMTQ+PjFdPWE7a1soa1tnPj4yXXwwKSs2MD4+Ml09KGtbaD4+Ml18MCkrKGtbdz4+Ml18MCk7a1soa1tnPj4yXXwwKSs2ND4+Ml09KGtbaD4+Ml18MCkrKG1bYj4+MV18MCk7a1soa1tnPj4yXXwwKSs2OD4+Ml09KGtbaD4+Ml18MCkrKGxbKGtbZz4+Ml18MCkrNj4+MF18MCk7a1t2Pj4yXT0oKGxbKGtbaD4+Ml18MCkrKChsW24+PjBdfDApKzUpPj4wXTw8OHxsWyhrW2g+PjJdfDApKygobFtuPj4wXXwwKSs1KSsxPj4wXSktMSY2NTUzNSkrMTtqWyhrW2c+PjJdfDApKzE4Pj4xXT1sWyhrW2g+PjJdfDApKygobFtuPj4wXXwwKSszKT4+MF08PDh8bFsoa1toPj4yXXwwKSsoKGxbbj4+MF18MCkrMykrMT4+MF07aWYoKG1bKGtbZz4+Ml18MCkrMTg+PjFdfDApPj4+MD4oKCgoa1soa1tkPj4yXXwwKSszMj4+Ml18MCktOHwwKT4+PjApLzZ8MCk+Pj4wKXt3PV9qKDYwMDI0KXwwO2tbZj4+Ml09dzt3PWtbZj4+Ml18MDtyPXg7cmV0dXJuIHd8MH1rW28+PjJdPShtW2I+PjFdfDApKyhtWyhrW2c+PjJdfDApKzE4Pj4xXTw8MSk7a1twPj4yXT0oa1t3Pj4yXXwwKS00O2RvIGlmKGtbKGtbKGtbZD4+Ml18MCkrND4+Ml18MCkrMjQ+PjJdJjUzNjg3MDkxMil7aWYoIShpWyhrW2c+PjJdfDApKzQ+PjBdfDApKWtbcD4+Ml09KGtbcD4+Ml18MCkrLTE7a1tjPj4yXT0wO3doaWxlKDEpe2lmKChrW2M+PjJdfDApPj0obVsoa1tnPj4yXXwwKSsxOD4+MV18MCkpe2I9MTc7YnJlYWt9alt0Pj4xXT1sWyhrW2g+PjJdfDApKygobVtiPj4xXXwwKSsoa1tjPj4yXTw8MSkpPj4wXTw8OHxsWyhrW2g+PjJdfDApKygobVtiPj4xXXwwKSsoa1tjPj4yXTw8MSkpKzE+PjBdO2lmKChtW3Q+PjFdfDApPChrW28+PjJdfDApKXtiPTEzO2JyZWFrfWlmKChtW3Q+PjFdfDApPihrW3A+PjJdfDApKXtiPTEzO2JyZWFrfWE9KGdjW2tbKGtbZz4+Ml18MCkrNzY+PjJdJjI1NV0oa1tnPj4yXXwwLChrW2g+PjJdfDApKyhtW3Q+PjFdfDApfDApfDApJjY1NTM1O2tbZT4+Ml09YTtpZigoKG1bdD4+MV18MCkrKGtbZT4+Ml18MCl8MCk+KGtbdz4+Ml18MCkpe2I9MTU7YnJlYWt9a1tjPj4yXT0oa1tjPj4yXXwwKSsxfWlmKChifDApPT0xMyl7dz1faig2MDA1Mil8MDtrW2Y+PjJdPXc7dz1rW2Y+PjJdfDA7cj14O3JldHVybiB3fDB9ZWxzZSBpZigoYnwwKT09MTUpe3c9X2ooNjAwNTcpfDA7a1tmPj4yXT13O3c9a1tmPj4yXXwwO3I9eDtyZXR1cm4gd3wwfWVsc2UgaWYoKGJ8MCk9PTE3KXtpZihpWyhrW2c+PjJdfDApKzQ+PjBdfDApYnJlYWs7a1twPj4yXT0oa1twPj4yXXwwKSsxO2JyZWFrfX13aGlsZSgwKTtqW3Q+PjFdPWxbKGtbaD4+Ml18MCkrKChsW24+PjBdfDApKzEpPj4wXTw8OHxsWyhrW2g+PjJdfDApKygobFtuPj4wXXwwKSsxKSsxPj4wXTtrW3E+PjJdPShsWyhrW2g+PjJdfDApKygobFtuPj4wXXwwKSs3KT4+MF18MCkrKGtbdj4+Ml18MCk7d2hpbGUoMSl7aWYoKG1bdD4+MV18MCk8PTApe2I9Mjk7YnJlYWt9aWYoKG1bdD4+MV18MCk8KGtbbz4+Ml18MCkpe2I9MjM7YnJlYWt9aWYoKG1bdD4+MV18MCk+KGtbcD4+Ml18MCkpe2I9MjM7YnJlYWt9altzPj4xXT1sWyhrW2g+PjJdfDApKyhtW3Q+PjFdfDApPj4wXTw8OHxsWyhrW2g+PjJdfDApKyhtW3Q+PjFdfDApKzE+PjBdO2pbdT4+MV09bFsoa1toPj4yXXwwKSsoKG1bdD4+MV18MCkrMik+PjBdPDw4fGxbKGtbaD4+Ml18MCkrKChtW3Q+PjFdfDApKzIpKzE+PjBdO2lmKChtW3M+PjFdfDApPjA/KG1bcz4+MV18MCk8PSgobVt0Pj4xXXwwKSsobVt1Pj4xXXwwKSszfDApOjApe2I9Mjc7YnJlYWt9aWYoKChtW3Q+PjFdfDApKyhtW3U+PjFdfDApfDApPihrW3c+PjJdfDApKXtiPTI3O2JyZWFrfWtbcT4+Ml09KGtbcT4+Ml18MCkrKG1bdT4+MV18MCk7alt0Pj4xXT1qW3M+PjFdfDB9aWYoKGJ8MCk9PTIzKXt3PV9qKDYwMDc3KXwwO2tbZj4+Ml09dzt3PWtbZj4+Ml18MDtyPXg7cmV0dXJuIHd8MH1lbHNlIGlmKChifDApPT0yNyl7dz1faig2MDA4NCl8MDtrW2Y+PjJdPXc7dz1rW2Y+PjJdfDA7cj14O3JldHVybiB3fDB9ZWxzZSBpZigoYnwwKT09Mjkpe2lmKChrW3E+PjJdfDApPD0oa1t3Pj4yXXwwKSl7alsoa1tnPj4yXXwwKSsxNj4+MV09KGtbcT4+Ml18MCktKGtbbz4+Ml18MCk7aVtrW2c+PjJdPj4wXT0xO2JyZWFrfXc9X2ooNjAwOTgpfDA7a1tmPj4yXT13O3c9a1tmPj4yXXwwO3I9eDtyZXR1cm4gd3wwfX13aGlsZSgwKTtrW2Y+PjJdPTA7dz1rW2Y+PjJdfDA7cj14O3JldHVybiB3fDB9ZnVuY3Rpb24gZnUoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MDtnPXI7cj1yKzE2fDA7ZD1nKzEyfDA7ZT1nKzh8MDtjPWcrNHwwO2Y9ZztrW2U+PjJdPWE7a1tjPj4yXT1iO2lbKGtbZT4+Ml18MCkrND4+MF09a1tjPj4yXT4+MztrW2M+PjJdPWtbYz4+Ml0mLTk7aVsoa1tlPj4yXXwwKSs2Pj4wXT00LShsWyhrW2U+PjJdfDApKzQ+PjBdPDwyKTtrWyhrW2U+PjJdfDApKzc2Pj4yXT0xODg7a1tmPj4yXT1rWyhrW2U+PjJdfDApKzUyPj4yXTtkbyBpZigoa1tjPj4yXXwwKT09NSl7aVsoa1tlPj4yXXwwKSsyPj4wXT0xO2M9KGtbZT4+Ml18MCkrM3wwO2lmKGlbKGtbZT4+Ml18MCkrND4+MF18MCl7aVtjPj4wXT0xO2tbKGtbZT4+Ml18MCkrODA+PjJdPTIyNn1lbHNle2lbYz4+MF09MDtrWyhrW2U+PjJdfDApKzc2Pj4yXT0xODk7a1soa1tlPj4yXXwwKSs4MD4+Ml09MjI3fWpbKGtbZT4+Ml18MCkrMTA+PjFdPWpbKGtbZj4+Ml18MCkrMjg+PjFdfDA7alsoa1tlPj4yXXwwKSsxMj4+MV09alsoa1tmPj4yXXwwKSszMD4+MV18MH1lbHNle2lmKChrW2M+PjJdfDApPT0yKXtpWyhrW2U+PjJdfDApKzI+PjBdPTA7aVsoa1tlPj4yXXwwKSszPj4wXT0wO2tbKGtbZT4+Ml18MCkrODA+PjJdPTIyODtqWyhrW2U+PjJdfDApKzEwPj4xXT1qWyhrW2Y+PjJdfDApKzI0Pj4xXXwwO2pbKGtbZT4+Ml18MCkrMTI+PjFdPWpbKGtbZj4+Ml18MCkrMjY+PjFdfDA7YnJlYWt9Zj1faig1OTk2NCl8MDtrW2Q+PjJdPWY7Zj1rW2Q+PjJdfDA7cj1nO3JldHVybiBmfDB9d2hpbGUoMCk7aVsoa1tlPj4yXXwwKSs3Pj4wXT1pWyhrW2Y+PjJdfDApKzIxPj4wXXwwO2tbZD4+Ml09MDtmPWtbZD4+Ml18MDtyPWc7cmV0dXJuIGZ8MH1mdW5jdGlvbiBndShhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTA7aj1yO3I9ciszMnwwO2M9aisyMHwwO2Q9aisxNnwwO2g9aisxMnwwO2c9ais4fDA7Zj1qKzR8MDtlPWo7a1tjPj4yXT1hO2tbZD4+Ml09YjtrW2g+PjJdPShrW2Q+PjJdfDApKyhsWyhrW2M+PjJdfDApKzY+PjBdfDApO2tbZj4+Ml09bFtrW2g+PjJdPj4wXTthOmRvIGlmKChrW2Y+PjJdfDApPj4+MD49MTI4KXtrW2c+PjJdPShrW2g+PjJdfDApKzg7a1tmPj4yXT1rW2Y+PjJdJjEyNztkb3tiPWtbZj4+Ml08PDc7YT0oa1toPj4yXXwwKSsxfDA7a1toPj4yXT1hO2tbZj4+Ml09YnxsW2E+PjBdJjEyNztpZigobFtrW2g+PjJdPj4wXXwwKTwxMjgpYnJlYWsgYX13aGlsZSgoa1toPj4yXXwwKT4+PjA8KGtbZz4+Ml18MCk+Pj4wKX13aGlsZSgwKTtrW2g+PjJdPShrW2g+PjJdfDApKzE7YjpkbyBpZihpWyhrW2M+PjJdfDApKzI+PjBdfDApe2tbZz4+Ml09KGtbaD4+Ml18MCkrOTtkb3thPWtbaD4+Ml18MDtrW2g+PjJdPWErMTtpZighKGxbYT4+MF0mMTI4KSlicmVhayBifXdoaWxlKChrW2g+PjJdfDApPj4+MDwoa1tnPj4yXXwwKT4+PjApfXdoaWxlKDApO2lmKChrW2Y+PjJdfDApPj4+MDw9KG1bKGtbYz4+Ml18MCkrMTA+PjFdfDApPj4+MCl7YT0oa1tmPj4yXXwwKSsoKGtbaD4+Ml18MCktKGtbZD4+Ml18MCkpfDA7a1tmPj4yXT1hO2tbZj4+Ml09KGtbZj4+Ml18MCk+Pj4wPDQ/NDphO2E9a1tmPj4yXXwwO2E9YSY2NTUzNTtyPWo7cmV0dXJuIGF8MH1rW2U+PjJdPW1bKGtbYz4+Ml18MCkrMTI+PjFdO2tbZj4+Ml09KGtbZT4+Ml18MCkrKCgoKGtbZj4+Ml18MCktKGtbZT4+Ml18MCl8MCk+Pj4wKSUoKChrWyhrWyhrW2M+PjJdfDApKzUyPj4yXXwwKSszNj4+Ml18MCktNHwwKT4+PjApfDApO2lmKChrW2Y+PjJdfDApPj4+MD4obVsoa1tjPj4yXXwwKSsxMD4+MV18MCk+Pj4wKWtbZj4+Ml09a1tlPj4yXTtrW2Y+PjJdPShrW2Y+PjJdfDApKyg0Kygoa1toPj4yXXwwKS0oa1tkPj4yXXwwKSY2NTUzNSkpO2E9a1tmPj4yXXwwO2E9YSY2NTUzNTtyPWo7cmV0dXJuIGF8MH1mdW5jdGlvbiBodShhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaT0wLG49MCxvPTAscD0wO3A9cjtyPXIrNDh8MDtkPXArMzJ8MDtlPXArMjh8MDtmPXArMjR8MDtvPXArMjB8MDtoPXArMTZ8MDtnPXA7aT1wKzEyfDA7bj1wKzh8MDtrW2Q+PjJdPWE7a1tlPj4yXT1iO2tbZj4+Ml09YztrW28+PjJdPWtbZT4+Ml07a1toPj4yXT1sW2tbbz4+Ml0+PjBdO2E6ZG8gaWYoKGtbaD4+Ml18MCk+Pj4wPj0xMjgpe2tbaT4+Ml09KGtbbz4+Ml18MCkrODtrW2g+PjJdPWtbaD4+Ml0mMTI3O2Rve2M9a1toPj4yXTw8NzthPShrW28+PjJdfDApKzF8MDtrW28+PjJdPWE7a1toPj4yXT1jfChsW2E+PjBdfDApJjEyNztpZigobFtrW28+PjJdPj4wXXwwfDApPDEyOClicmVhayBhfXdoaWxlKChrW28+PjJdfDApPj4+MDwoa1tpPj4yXXwwKT4+PjApfXdoaWxlKDApO2tbbz4+Ml09KGtbbz4+Ml18MCkrMTthPWc7a1thPj4yXT1sW2tbbz4+Ml0+PjBdO2tbYSs0Pj4yXT0wO2E9ZztjPWtbYSs0Pj4yXXwwO2I6ZG8gaWYoYz4+PjA+MHwoY3wwKT09MCYoa1thPj4yXXwwKT4+PjA+PTEyOCl7a1tuPj4yXT0oa1tvPj4yXXwwKSs3O2E9ZztrW2E+PjJdPWtbZz4+Ml0mMTI3O2tbYSs0Pj4yXT0wO2Rve2k9ZztpPWVTKGtbaT4+Ml18MCxrW2krND4+Ml18MCw3KXwwO2M9KGtbbz4+Ml18MCkrMXwwO2tbbz4+Ml09YztjPShsW2M+PjBdfDApJjEyNzthPWc7a1thPj4yXT1pfGM7a1thKzQ+PjJdPUx8KChjfDApPDApPDwzMT4+MzE7aWYoKGxba1tvPj4yXT4+MF18MHwwKTwxMjgpYnJlYWsgYn13aGlsZSgoa1tvPj4yXXwwKT4+PjA8KGtbbj4+Ml18MCk+Pj4wKTtuPWc7bj1lUyhrW24+PjJdfDAsa1tuKzQ+PjJdfDAsOCl8MDtjPShrW28+PjJdfDApKzF8MDtrW28+PjJdPWM7YT1nO2tbYT4+Ml09bnwobFtjPj4wXXwwKTtrW2ErND4+Ml09TH13aGlsZSgwKTtrW28+PjJdPShrW28+PjJdfDApKzE7bj1nO2M9a1tuKzQ+PjJdfDA7YT1rW2Y+PjJdfDA7a1thPj4yXT1rW24+PjJdO2tbYSs0Pj4yXT1jO2tbKGtbZj4+Ml18MCkrMTI+PjJdPWtbaD4+Ml07a1soa1tmPj4yXXwwKSs4Pj4yXT1rW28+PjJdO2lmKChrW2g+PjJdfDApPj4+MD4obVsoa1tkPj4yXXwwKSsxMD4+MV18MCk+Pj4wKXtsdShrW2Q+PjJdfDAsa1tlPj4yXXwwLGtbZj4+Ml18MCk7cj1wO3JldHVybn1qWyhrW2Y+PjJdfDApKzE4Pj4xXT0oa1toPj4yXXwwKSsoKGtbbz4+Ml18MCktKGtbZT4+Ml18MCkmNjU1MzUpO2lmKChtWyhrW2Y+PjJdfDApKzE4Pj4xXXwwfDApPDQpalsoa1tmPj4yXXwwKSsxOD4+MV09NDtqWyhrW2Y+PjJdfDApKzE2Pj4xXT1rW2g+PjJdO3I9cDtyZXR1cm59ZnVuY3Rpb24gaXUoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wO2Y9cjtyPXIrMTZ8MDtjPWYrOHwwO2U9Zis0fDA7ZD1mO2tbZisxMj4+Ml09YTtrW2M+PjJdPWI7a1tlPj4yXT0oa1tjPj4yXXwwKSs0O2tbZD4+Ml09KGtbZT4+Ml18MCkrOTtkb3thPWtbZT4+Ml18MDtrW2U+PjJdPWErMTtpZighKChsW2E+PjBdfDApJjEyOCkpYnJlYWt9d2hpbGUoKGtbZT4+Ml18MCk+Pj4wPChrW2Q+PjJdfDApPj4+MCk7cj1mO3JldHVybiAoa1tlPj4yXXwwKS0oa1tjPj4yXXwwKSY2NTUzNXwwfWZ1bmN0aW9uIGp1KGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTA7ZD1yO3I9cisxNnwwO2Y9ZCs0fDA7ZT1kO2tbZCs4Pj4yXT1hO2tbZj4+Ml09YjtrW2U+PjJdPWM7YT00KygobXUoKGtbZj4+Ml18MCkrNHwwLGtbZT4+Ml18MCl8MCkmMjU1KSY2NTUzNTtqWyhrW2U+PjJdfDApKzE4Pj4xXT1hO2tbKGtbZT4+Ml18MCkrMTI+PjJdPTA7alsoa1tlPj4yXXwwKSsxNj4+MV09MDtrWyhrW2U+PjJdfDApKzg+PjJdPTA7cj1kO3JldHVybn1mdW5jdGlvbiBrdShhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaT0wLG49MDtuPXI7cj1yKzMyfDA7ZD1uKzIwfDA7ZT1uKzE2fDA7Zj1uKzEyfDA7aT1uKzh8MDtnPW4rNHwwO2g9bjtrW2Q+PjJdPWE7a1tlPj4yXT1iO2tbZj4+Ml09YztrW2k+PjJdPShrW2U+PjJdfDApKyhsWyhrW2Q+PjJdfDApKzY+PjBdfDApO2tbZz4+Ml09bFtrW2k+PjJdPj4wXTthOmRvIGlmKChrW2c+PjJdfDApPj4+MD49MTI4KXtrW2g+PjJdPShrW2k+PjJdfDApKzg7a1tnPj4yXT1rW2c+PjJdJjEyNztkb3tjPWtbZz4+Ml08PDc7YT0oa1tpPj4yXXwwKSsxfDA7a1tpPj4yXT1hO2tbZz4+Ml09Y3wobFthPj4wXXwwKSYxMjc7aWYoKGxba1tpPj4yXT4+MF18MHwwKTwxMjgpYnJlYWsgYX13aGlsZSgoa1tpPj4yXXwwKT4+PjA8KGtbaD4+Ml18MCk+Pj4wKX13aGlsZSgwKTtrW2k+PjJdPShrW2k+PjJdfDApKzE7YT1rW2Y+PjJdfDA7a1thPj4yXT1rW2c+PjJdO2tbYSs0Pj4yXT0wO2tbKGtbZj4+Ml18MCkrMTI+PjJdPWtbZz4+Ml07a1soa1tmPj4yXXwwKSs4Pj4yXT1rW2k+PjJdO2lmKChrW2c+PjJdfDApPj4+MD4obVsoa1tkPj4yXXwwKSsxMD4+MV18MCk+Pj4wKXtsdShrW2Q+PjJdfDAsa1tlPj4yXXwwLGtbZj4+Ml18MCk7cj1uO3JldHVybn1qWyhrW2Y+PjJdfDApKzE4Pj4xXT0oa1tnPj4yXXwwKSsoKGtbaT4+Ml18MCktKGtbZT4+Ml18MCkmNjU1MzUpO2lmKChtWyhrW2Y+PjJdfDApKzE4Pj4xXXwwfDApPDQpalsoa1tmPj4yXXwwKSsxOD4+MV09NDtqWyhrW2Y+PjJdfDApKzE2Pj4xXT1rW2c+PjJdO3I9bjtyZXR1cm59ZnVuY3Rpb24gbHUoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGk9MCxsPTA7aD1yO3I9ciszMnwwO2w9aCsyMHwwO2Q9aCsxNnwwO2U9aCsxMnwwO2Y9aCs4fDA7aT1oKzR8MDtnPWg7a1tsPj4yXT1hO2tbZD4+Ml09YjtrW2U+PjJdPWM7a1tmPj4yXT1tWyhrW2w+PjJdfDApKzEyPj4xXTtrW2k+PjJdPW1bKGtbbD4+Ml18MCkrMTA+PjFdO2tbZz4+Ml09KGtbZj4+Ml18MCkrKCgoKGtbKGtbZT4+Ml18MCkrMTI+PjJdfDApLShrW2Y+PjJdfDApfDApPj4+MCklKCgoa1soa1soa1tsPj4yXXwwKSs1Mj4+Ml18MCkrMzY+PjJdfDApLTR8MCk+Pj4wKXwwKTtpZigoa1tnPj4yXXwwKTw9KGtbaT4+Ml18MCkpalsoa1tlPj4yXXwwKSsxNj4+MV09a1tnPj4yXTtlbHNlIGpbKGtbZT4+Ml18MCkrMTY+PjFdPWtbZj4+Ml07alsoa1tlPj4yXXwwKSsxOD4+MV09KChrWyhrW2U+PjJdfDApKzg+PjJdfDApKyhtWyhrW2U+PjJdfDApKzE2Pj4xXXwwKS0oa1tkPj4yXXwwKSY2NTUzNSkrNDtyPWg7cmV0dXJufWZ1bmN0aW9uIG11KGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MDtqPXI7cj1yKzMyfDA7Yz1qKzIwfDA7ZD1qKzE2fDA7ZT1qKzEyfDA7Zj1qKzh8MDtnPWorNHwwO2g9ajtrW2Q+PjJdPWE7a1tlPj4yXT1iO2tbZj4+Ml09bFtrW2Q+PjJdPj4wXTtpZighKGtbZj4+Ml0mMTI4KSl7aD1rW2U+PjJdfDA7a1toPj4yXT1rW2Y+PjJdO2tbaCs0Pj4yXT0wO2lbYz4+MF09MTtoPWlbYz4+MF18MDtyPWo7cmV0dXJuIGh8MH1rW2Q+PjJdPShrW2Q+PjJdfDApKzE7a1tnPj4yXT1sW2tbZD4+Ml0+PjBdO2lmKCEoa1tnPj4yXSYxMjgpKXtrW2Y+PjJdPWtbZj4+Ml0mMTI3O2tbZj4+Ml09a1tmPj4yXTw8NztrW2Y+PjJdPWtbZj4+Ml18a1tnPj4yXTtoPWtbZT4+Ml18MDtrW2g+PjJdPWtbZj4+Ml07a1toKzQ+PjJdPTA7aVtjPj4wXT0yO2g9aVtjPj4wXXwwO3I9ajtyZXR1cm4gaHwwfWtbZD4+Ml09KGtbZD4+Ml18MCkrMTtrW2Y+PjJdPWtbZj4+Ml08PDE0O2tbZj4+Ml09a1tmPj4yXXwobFtrW2Q+PjJdPj4wXXwwKTtiPShrW2Y+PjJdJjEyOHwwKSE9MDtrW2Y+PjJdPWtbZj4+Ml0mMjA4MDg5NTtpZighYil7a1tnPj4yXT1rW2c+PjJdJjEyNztrW2c+PjJdPWtbZz4+Ml08PDc7a1tmPj4yXT1rW2Y+PjJdfGtbZz4+Ml07aD1rW2U+PjJdfDA7a1toPj4yXT1rW2Y+PjJdO2tbaCs0Pj4yXT0wO2lbYz4+MF09MztoPWlbYz4+MF18MDtyPWo7cmV0dXJuIGh8MH1rW2Q+PjJdPShrW2Q+PjJdfDApKzE7a1tnPj4yXT1rW2c+PjJdPDwxNDtrW2c+PjJdPWtbZz4+Ml18KGxba1tkPj4yXT4+MF18MCk7Yj0oa1tnPj4yXSYxMjh8MCkhPTA7a1tnPj4yXT1rW2c+PjJdJjIwODA4OTU7YT1rW2Y+PjJdfDA7aWYoIWIpe2tbZj4+Ml09YTw8NztrW2Y+PjJdPWtbZj4+Ml18a1tnPj4yXTtoPWtbZT4+Ml18MDtrW2g+PjJdPWtbZj4+Ml07a1toKzQ+PjJdPTA7aVtjPj4wXT00O2g9aVtjPj4wXXwwO3I9ajtyZXR1cm4gaHwwfWtbaD4+Ml09YTtrW2Q+PjJdPShrW2Q+PjJdfDApKzE7a1tmPj4yXT1rW2Y+PjJdPDwxNDtrW2Y+PjJdPWtbZj4+Ml18KGxba1tkPj4yXT4+MF18MCk7aWYoIShrW2Y+PjJdJjEyOCkpe2tbZz4+Ml09a1tnPj4yXTw8NztrW2Y+PjJdPWtbZj4+Ml18a1tnPj4yXTtrW2g+PjJdPShrW2g+PjJdfDApPj4+MTg7Zz1rW2g+PjJdfDA7aD1rW2U+PjJdfDA7a1toPj4yXT1rW2Y+PjJdO2tbaCs0Pj4yXT1nO2lbYz4+MF09NTtoPWlbYz4+MF18MDtyPWo7cmV0dXJuIGh8MH1rW2g+PjJdPWtbaD4+Ml08PDc7a1toPj4yXT1rW2g+PjJdfGtbZz4+Ml07a1tkPj4yXT0oa1tkPj4yXXwwKSsxO2tbZz4+Ml09a1tnPj4yXTw8MTQ7a1tnPj4yXT1rW2c+PjJdfChsW2tbZD4+Ml0+PjBdfDApO2lmKCEoa1tnPj4yXSYxMjgpKXtrW2Y+PjJdPWtbZj4+Ml0mMjA4MDg5NTtrW2Y+PjJdPWtbZj4+Ml08PDc7a1tmPj4yXT1rW2Y+PjJdfGtbZz4+Ml07a1toPj4yXT0oa1toPj4yXXwwKT4+PjE4O2c9a1toPj4yXXwwO2g9a1tlPj4yXXwwO2tbaD4+Ml09a1tmPj4yXTtrW2grND4+Ml09ZztpW2M+PjBdPTY7aD1pW2M+PjBdfDA7cj1qO3JldHVybiBofDB9a1tkPj4yXT0oa1tkPj4yXXwwKSsxO2tbZj4+Ml09a1tmPj4yXTw8MTQ7a1tmPj4yXT1rW2Y+PjJdfChsW2tbZD4+Ml0+PjBdfDApO2E9a1tmPj4yXXwwO2lmKCEoa1tmPj4yXSYxMjgpKXtrW2Y+PjJdPWEmLTI2NjM1NDU2MTtrW2c+PjJdPWtbZz4+Ml0mMjA4MDg5NTtrW2c+PjJdPWtbZz4+Ml08PDc7a1tmPj4yXT1rW2Y+PjJdfGtbZz4+Ml07a1toPj4yXT0oa1toPj4yXXwwKT4+PjExO2c9a1toPj4yXXwwO2g9a1tlPj4yXXwwO2tbaD4+Ml09a1tmPj4yXTtrW2grND4+Ml09ZztpW2M+PjBdPTc7aD1pW2M+PjBdfDA7cj1qO3JldHVybiBofDB9a1tmPj4yXT1hJjIwODA4OTU7a1tkPj4yXT0oa1tkPj4yXXwwKSsxO2tbZz4+Ml09a1tnPj4yXTw8MTQ7a1tnPj4yXT1rW2c+PjJdfChsW2tbZD4+Ml0+PjBdfDApO2lmKGtbZz4+Ml0mMTI4KXtrW2Q+PjJdPShrW2Q+PjJdfDApKzE7a1tmPj4yXT1rW2Y+PjJdPDwxNTtrW2Y+PjJdPWtbZj4+Ml18KGxba1tkPj4yXT4+MF18MCk7a1tnPj4yXT1rW2c+PjJdJjIwODA4OTU7a1tnPj4yXT1rW2c+PjJdPDw4O2tbZj4+Ml09a1tmPj4yXXxrW2c+PjJdO2tbaD4+Ml09a1toPj4yXTw8NDtrW2c+PjJdPWxbKGtbZD4+Ml18MCkrLTQ+PjBdO2tbZz4+Ml09a1tnPj4yXSYxMjc7a1tnPj4yXT0oa1tnPj4yXXwwKT4+PjM7a1toPj4yXT1rW2g+PjJdfGtbZz4+Ml07Zz1rW2g+PjJdfDA7aD1rW2U+PjJdfDA7a1toPj4yXT1rW2Y+PjJdO2tbaCs0Pj4yXT1nO2lbYz4+MF09OTtoPWlbYz4+MF18MDtyPWo7cmV0dXJuIGh8MH1lbHNle2tbZz4+Ml09a1tnPj4yXSYtMjY2MzU0NTYxO2tbZj4+Ml09a1tmPj4yXTw8NztrW2Y+PjJdPWtbZj4+Ml18a1tnPj4yXTtrW2g+PjJdPShrW2g+PjJdfDApPj4+NDtnPWtbaD4+Ml18MDtoPWtbZT4+Ml18MDtrW2g+PjJdPWtbZj4+Ml07a1toKzQ+PjJdPWc7aVtjPj4wXT04O2g9aVtjPj4wXXwwO3I9ajtyZXR1cm4gaHwwfXJldHVybiAwfWZ1bmN0aW9uIG51KGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wO2U9cjtyPXIrMTZ8MDtjPWUrNHwwO2Q9ZTtrW2M+PjJdPWE7a1tkPj4yXT1iO3doaWxlKDEpe2lmKChrW2Q+PjJdfDApPjApYT0oaVsoa1tjPj4yXXwwKSsoKGtbZD4+Ml18MCktMSk+PjBdfDApPT0zMjtlbHNlIGE9MDtiPWtbZD4+Ml18MDtpZighYSlicmVhaztrW2Q+PjJdPWIrLTF9cj1lO3JldHVybiAoYnwwKT09MHwwfWZ1bmN0aW9uIG91KGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaT0wLGo9MCxtPTA7bT1yO3I9ciszMnwwO2U9bSsyMHwwO2Y9bSsxNnwwO2c9bSsxMnwwO2g9bSs4fDA7aj1tKzR8MDtpPW07a1tlPj4yXT1hO2tbZj4+Ml09YjtrW2c+PjJdPWM7a1toPj4yXT1kO2tbaj4+Ml09MDtpZighKGtbZT4+Ml18MCkpe2o9a1tqPj4yXXwwO3I9bTtyZXR1cm4ganwwfWtbaT4+Ml09a1soa1tlPj4yXXwwKSs0Pj4yXTt3ZyhrW2U+PjJdfDApO2lmKGxbKGtbaT4+Ml18MCkrMjA+PjBdfDApe2tbaj4+Ml09NjtqPWtbaj4+Ml18MDtyPW07cmV0dXJuIGp8MH1lbHNle2M9cHUoa1trW2k+PjJdPj4yXXwwLGtbZj4+Ml18MCxrW2c+PjJdfDAsa1toPj4yXXwwKXwwO2tbaj4+Ml09YztqPWtbaj4+Ml18MDtyPW07cmV0dXJuIGp8MH1yZXR1cm4gMH1mdW5jdGlvbiBwdShhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGk9MCxqPTA7aj1yO3I9ciszMnwwO2U9aisxNnwwO2Y9aisxMnwwO2c9ais4fDA7aD1qKzR8MDtpPWo7a1tlPj4yXT1hO2tbZj4+Ml09YjtrW2c+PjJdPWM7a1toPj4yXT1kO2tbaT4+Ml09MDtpZighKGtbKGtbZT4+Ml18MCkrMjE2Pj4yXXwwKSl7aT1rW2k+PjJdfDA7cj1qO3JldHVybiBpfDB9aWYoIShrW2Y+PjJdfDApKWI9MDtlbHNlIGI9a1soa1tlPj4yXXwwKSsxODQ+PjJdfDA7aD1hdChrWyhrW2U+PjJdfDApKzIxNj4+Ml18MCxrW2Y+PjJdfDAsYixrWyhrW2U+PjJdfDApKzE4OD4+Ml18MCxsWyhrW2U+PjJdfDApKzEwPj4wXXwwLGtbKGtbZT4+Ml18MCkrMTYwPj4yXXwwLGtbKGtbZT4+Ml18MCkrMjA4Pj4yXXwwLGtbZz4+Ml18MCxrW2g+PjJdfDApfDA7a1tpPj4yXT1oO2k9a1tpPj4yXXwwO3I9ajtyZXR1cm4gaXwwfWZ1bmN0aW9uIHF1KGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTA7aj1yO3I9ciszMnwwO2Q9aisxMnwwO2U9ais4fDA7Zj1qKzR8MDtnPWorMTZ8MDtoPWo7a1tlPj4yXT1hO2tbZj4+Ml09YjtpW2c+PjBdPWM7Yz1rW2U+PjJdfDA7aWYoKGtbZj4+Ml18MCk9PS0yKXtrW2Q+PjJdPShrW2MrMTI+PjJdfDApPT0wPzA6NjtoPWtbZD4+Ml18MDtyPWo7cmV0dXJuIGh8MH1pZigoaVtjPj4wXXwwKSE9KGtbZj4+Ml18MCk/KGlba1tlPj4yXT4+MF18MCk+PTA6MCl7a1tkPj4yXT0wO2g9a1tkPj4yXXwwO3I9ajtyZXR1cm4gaHwwfWlmKChpW2tbZT4+Ml0+PjBdfDApPT0oa1tmPj4yXXwwKSlrW2g+PjJdPTQ7ZWxzZSBrW2g+PjJdPTE7aWYoKGxbZz4+MF18MCkhPShtWyhrW2U+PjJdfDApKzI+PjFdJjN8MCkpe2lmKGxbZz4+MF0mbVsoa1tlPj4yXXwwKSsyPj4xXSYyKWtbaD4+Ml09KGtbaD4+Ml18MCkrMX1lbHNlIGtbaD4+Ml09KGtbaD4+Ml18MCkrMjtrW2Q+PjJdPWtbaD4+Ml07aD1rW2Q+PjJdfDA7cj1qO3JldHVybiBofDB9ZnVuY3Rpb24gcnUoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MDtmPXI7cj1yKzE2fDA7ZT1mKzEyfDA7Zz1mKzh8MDtjPWYrNHwwO2Q9ZjtrW2c+PjJdPWE7a1tjPj4yXT1iO2tbZD4+Ml09a1sxMDkyKyhrW2c+PjJdPDwyKT4+Ml07d2hpbGUoMSl7aWYoIShrW2Q+PjJdfDApKXthPTY7YnJlYWt9Zz0oc2coa1soa1tkPj4yXXwwKSsyMD4+Ml18MCxrW2M+PjJdfDApfDApPT0wO2I9a1tkPj4yXXwwO2lmKGcpe2E9NDticmVha31rW2Q+PjJdPWtbYisyND4+Ml19aWYoKGF8MCk9PTQpe2tbZT4+Ml09YjtnPWtbZT4+Ml18MDtyPWY7cmV0dXJuIGd8MH1lbHNlIGlmKChhfDApPT02KXtrW2U+PjJdPTA7Zz1rW2U+PjJdfDA7cj1mO3JldHVybiBnfDB9cmV0dXJuIDB9ZnVuY3Rpb24gc3UoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MDtnPXI7cj1yKzE2fDA7Yz1nKzEyfDA7ZD1nKzh8MDtlPWcrNHwwO2Y9ZztrW2Q+PjJdPWE7a1tlPj4yXT1iO2lmKCgobVsoa1tkPj4yXXwwKSs4Pj4xXXwwKSYyfDApIT0wPyhsWyhrW2Q+PjJdfDApKzEwPj4wXXwwfDApIT0oa1tlPj4yXXwwKTowKXthPXR1KGtbZD4+Ml18MCxrW2U+PjJdJjI1NSl8MDtrW2Y+PjJdPWE7a1tjPj4yXT1rW2Y+PjJdO2Y9a1tjPj4yXXwwO3I9ZztyZXR1cm4gZnwwfWtbYz4+Ml09MDtmPWtbYz4+Ml18MDtyPWc7cmV0dXJuIGZ8MH1mdW5jdGlvbiB0dShhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wLGg9MCxuPTAsbz0wLHA9MCxxPTAscz0wLHQ9MCx1PTAsdj0wO3Y9cjtyPXIrNDh8MDtoPXYrNDB8MDtuPXYrMzZ8MDtvPXYrNDV8MDtlPXYrMzJ8MDt0PXYrMjh8MDtzPXYrMjR8MDt1PXYrMjB8MDtxPXYrMTZ8MDtwPXYrMTJ8MDtkPXYrNDR8MDtjPXYrOHwwO2Y9dis0fDA7Zz12O2tbbj4+Ml09YTtpW28+PjBdPWI7aWYoKGxbKGtbbj4+Ml18MCkrMTA+PjBdfDB8MCkhPTE/KGxbbz4+MF18MHwwKSE9MTowKXt0PWxoKGtbbj4+Ml18MCl8MDtrW2M+PjJdPXQ7aWYoa1tjPj4yXXwwKXtrW2g+PjJdPTc7dT1rW2g+PjJdfDA7cj12O3JldHVybiB1fDB9a1tzPj4yXT1rWyhrW24+PjJdfDApKzE2Pj4yXTtrW3U+PjJdPShrW3M+PjJdfDApKyhrWyhrW24+PjJdfDApKzEyPj4yXSYtMik7d2hpbGUoMSl7aWYoKGtbcz4+Ml18MCk+Pj4wPj0oa1t1Pj4yXXwwKT4+PjApYnJlYWs7aVtkPj4wXT1pW2tbcz4+Ml0+PjBdfDA7aVtrW3M+PjJdPj4wXT1pWyhrW3M+PjJdfDApKzE+PjBdfDA7a1tzPj4yXT0oa1tzPj4yXXwwKSsxO3E9aVtkPj4wXXwwO3Q9a1tzPj4yXXwwO2tbcz4+Ml09dCsxO2lbdD4+MF09cX1pWyhrW24+PjJdfDApKzEwPj4wXT1pW28+PjBdfDB9ZWxzZXtiPShrW24+PjJdfDApKzEyfDA7YT1rW2I+PjJdfDA7aWYoKGxbbz4+MF18MHwwKT09MSl7a1tiPj4yXT1hJi0yO2tbZT4+Ml09KGtbKGtbbj4+Ml18MCkrMTI+PjJdPDwxKSsxfWVsc2Uga1tlPj4yXT0oYTw8MSkrMjtrW3M+PjJdPWtbKGtbbj4+Ml18MCkrMTY+PjJdO2tbdT4+Ml09KGtbcz4+Ml18MCkrKGtbKGtbbj4+Ml18MCkrMTI+PjJdfDApO2U9a1tlPj4yXXwwO2U9TWgoa1soa1tuPj4yXXwwKSszMj4+Ml18MCxlLCgoZXwwKTwwKTw8MzE+PjMxKXwwO2tbdD4+Ml09ZTtpZighKGtbdD4+Ml18MCkpe2tbaD4+Ml09Nzt1PWtbaD4+Ml18MDtyPXY7cmV0dXJuIHV8MH1rW3E+PjJdPWtbdD4+Ml07aWYoKGxbKGtbbj4+Ml18MCkrMTA+PjBdfDB8MCk9PTEpe2E6ZG8gaWYoKGxbbz4+MF18MHwwKT09Mil3aGlsZSgxKXtpZigoa1tzPj4yXXwwKT4+PjA+PShrW3U+PjJdfDApPj4+MClicmVhayBhO2c9a1tzPj4yXXwwO2tbcz4+Ml09ZysxO2tbcD4+Ml09bFtnPj4wXTtkbyBpZigoa1twPj4yXXwwKT4+PjA+PTE5Mil7a1twPj4yXT1sWzI1NTYzKygoa1twPj4yXXwwKS0xOTIpPj4wXTt3aGlsZSgxKXtpZigoa1tzPj4yXXwwKSE9KGtbdT4+Ml18MCkpYT0oKGxba1tzPj4yXT4+MF18MCkmMTkyfDApPT0xMjg7ZWxzZSBhPTA7Yj1rW3A+PjJdfDA7aWYoIWEpYnJlYWs7Zz1rW3M+PjJdfDA7a1tzPj4yXT1nKzE7a1twPj4yXT0oYjw8NikrKDYzJihsW2c+PjBdfDApKX1pZigoYj4+PjA+PTEyOD8oa1twPj4yXSYtMjA0OHwwKSE9NTUyOTY6MCk/KGtbcD4+Ml0mLTJ8MCkhPTY1NTM0OjApYnJlYWs7a1twPj4yXT02NTUzM313aGlsZSgwKTtiPWtbcD4+Ml18MDtpZigoa1twPj4yXXwwKT4+PjA8PTY1NTM1KXtmPWtbcT4+Ml18MDtrW3E+PjJdPWYrMTtpW2Y+PjBdPWI7Zj0oa1twPj4yXXwwKT4+PjgmMjU1O2c9a1txPj4yXXwwO2tbcT4+Ml09ZysxO2lbZz4+MF09Zjtjb250aW51ZX1lbHNle2c9KGI+Pj4xMCY2MykrKCgoa1twPj4yXXwwKS02NTUzNnwwKT4+PjEwJjE5MikmMjU1O2Y9a1txPj4yXXwwO2tbcT4+Ml09ZisxO2lbZj4+MF09ZztmPTIxNisoKChrW3A+PjJdfDApLTY1NTM2fDApPj4+MTgmMykmMjU1O2c9a1txPj4yXXwwO2tbcT4+Ml09ZysxO2lbZz4+MF09ZjtnPWtbcD4+Ml0mMjU1O2Y9a1txPj4yXXwwO2tbcT4+Ml09ZisxO2lbZj4+MF09ZztmPTIyMCsoKGtbcD4+Ml18MCk+Pj44JjMpJjI1NTtnPWtbcT4+Ml18MDtrW3E+PjJdPWcrMTtpW2c+PjBdPWY7Y29udGludWV9fWVsc2Ugd2hpbGUoMSl7aWYoKGtbcz4+Ml18MCk+Pj4wPj0oa1t1Pj4yXXwwKT4+PjApYnJlYWsgYTtnPWtbcz4+Ml18MDtrW3M+PjJdPWcrMTtrW3A+PjJdPWxbZz4+MF07ZG8gaWYoKGtbcD4+Ml18MCk+Pj4wPj0xOTIpe2tbcD4+Ml09bFsyNTU2MysoKGtbcD4+Ml18MCktMTkyKT4+MF07d2hpbGUoMSl7aWYoKGtbcz4+Ml18MCkhPShrW3U+PjJdfDApKWE9KChsW2tbcz4+Ml0+PjBdfDApJjE5MnwwKT09MTI4O2Vsc2UgYT0wO2I9a1twPj4yXXwwO2lmKCFhKWJyZWFrO2c9a1tzPj4yXXwwO2tbcz4+Ml09ZysxO2tbcD4+Ml09KGI8PDYpKyg2MyYobFtnPj4wXXwwKSl9aWYoKGI+Pj4wPj0xMjg/KGtbcD4+Ml0mLTIwNDh8MCkhPTU1Mjk2OjApPyhrW3A+PjJdJi0yfDApIT02NTUzNDowKWJyZWFrO2tbcD4+Ml09NjU1MzN9d2hpbGUoMCk7Yj1rW3A+PjJdfDA7aWYoKGtbcD4+Ml18MCk+Pj4wPD02NTUzNSl7Zj1rW3E+PjJdfDA7a1txPj4yXT1mKzE7aVtmPj4wXT1iPj4+ODtmPWtbcD4+Ml0mMjU1O2c9a1txPj4yXXwwO2tbcT4+Ml09ZysxO2lbZz4+MF09Zjtjb250aW51ZX1lbHNle2Y9a1txPj4yXXwwO2tbcT4+Ml09ZisxO2lbZj4+MF09MjE2KygoYi02NTUzNnwwKT4+PjE4JjMpO2Y9KChrW3A+PjJdfDApPj4+MTAmNjMpKygoKGtbcD4+Ml18MCktNjU1MzZ8MCk+Pj4xMCYxOTIpJjI1NTtnPWtbcT4+Ml18MDtrW3E+PjJdPWcrMTtpW2c+PjBdPWY7Zz0yMjArKChrW3A+PjJdfDApPj4+OCYzKSYyNTU7Zj1rW3E+PjJdfDA7a1txPj4yXT1mKzE7aVtmPj4wXT1nO2Y9a1twPj4yXSYyNTU7Zz1rW3E+PjJdfDA7a1txPj4yXT1nKzE7aVtnPj4wXT1mO2NvbnRpbnVlfX13aGlsZSgwKTtrWyhrW24+PjJdfDApKzEyPj4yXT0oa1txPj4yXXwwKS0oa1t0Pj4yXXwwKTt1PWtbcT4+Ml18MDtrW3E+PjJdPXUrMTtpW3U+PjBdPTB9ZWxzZXtiOmRvIGlmKChsWyhrW24+PjJdfDApKzEwPj4wXXwwfDApPT0yKXdoaWxlKDEpe2lmKChrW3M+PjJdfDApPj4+MD49KGtbdT4+Ml18MCk+Pj4wKWJyZWFrIGI7Zz1rW3M+PjJdfDA7a1tzPj4yXT1nKzE7a1twPj4yXT1sW2c+PjBdO2c9a1tzPj4yXXwwO2tbcz4+Ml09ZysxO2tbcD4+Ml09KGtbcD4+Ml18MCkrKChsW2c+PjBdfDApPDw4KTtpZigoa1twPj4yXXwwKT4+PjA+PTU1Mjk2JihrW3A+PjJdfDApPj4+MDw1NzM0ND8oa1tzPj4yXXwwKT4+PjA8KGtbdT4+Ml18MCk+Pj4wOjApe2c9a1tzPj4yXXwwO2tbcz4+Ml09ZysxO2tbZj4+Ml09bFtnPj4wXTtnPWtbcz4+Ml18MDtrW3M+PjJdPWcrMTtrW2Y+PjJdPShrW2Y+PjJdfDApKygobFtnPj4wXXwwKTw8OCk7a1twPj4yXT0oa1tmPj4yXSYxMDIzKSsoKGtbcD4+Ml0mNjMpPDwxMCkrKChrW3A+PjJdJjk2MCkrNjQ8PDEwKX1iPWtbcD4+Ml18MDtpZigoa1twPj4yXXwwKT4+PjA8MTI4KXtnPWtbcT4+Ml18MDtrW3E+PjJdPWcrMTtpW2c+PjBdPWI7Y29udGludWV9YT1rW3A+PjJdfDA7aWYoYj4+PjA8MjA0OCl7ZT1rW3E+PjJdfDA7a1txPj4yXT1lKzE7aVtlPj4wXT0xOTIrKGE+Pj42JjMxKTtlPTEyOCsoa1twPj4yXSY2MykmMjU1O2c9a1txPj4yXXwwO2tbcT4+Ml09ZysxO2lbZz4+MF09ZTtjb250aW51ZX1iPWtbcD4+Ml18MDtpZihhPj4+MDw2NTUzNil7Zz1rW3E+PjJdfDA7a1txPj4yXT1nKzE7aVtnPj4wXT0yMjQrKGI+Pj4xMiYxNSk7Zz0xMjgrKChrW3A+PjJdfDApPj4+NiY2MykmMjU1O2U9a1txPj4yXXwwO2tbcT4+Ml09ZSsxO2lbZT4+MF09ZztlPTEyOCsoa1twPj4yXSY2MykmMjU1O2c9a1txPj4yXXwwO2tbcT4+Ml09ZysxO2lbZz4+MF09ZTtjb250aW51ZX1lbHNle2U9a1txPj4yXXwwO2tbcT4+Ml09ZSsxO2lbZT4+MF09MjQwKyhiPj4+MTgmNyk7ZT0xMjgrKChrW3A+PjJdfDApPj4+MTImNjMpJjI1NTtnPWtbcT4+Ml18MDtrW3E+PjJdPWcrMTtpW2c+PjBdPWU7Zz0xMjgrKChrW3A+PjJdfDApPj4+NiY2MykmMjU1O2U9a1txPj4yXXwwO2tbcT4+Ml09ZSsxO2lbZT4+MF09ZztlPTEyOCsoa1twPj4yXSY2MykmMjU1O2c9a1txPj4yXXwwO2tbcT4+Ml09ZysxO2lbZz4+MF09ZTtjb250aW51ZX19ZWxzZSB3aGlsZSgxKXtpZigoa1tzPj4yXXwwKT4+PjA+PShrW3U+PjJdfDApPj4+MClicmVhayBiO2Y9a1tzPj4yXXwwO2tbcz4+Ml09ZisxO2tbcD4+Ml09KGxbZj4+MF18MCk8PDg7Zj1rW3M+PjJdfDA7a1tzPj4yXT1mKzE7a1twPj4yXT0oa1twPj4yXXwwKSsobFtmPj4wXXwwKTtpZigoa1twPj4yXXwwKT4+PjA+PTU1Mjk2JihrW3A+PjJdfDApPj4+MDw1NzM0ND8oa1tzPj4yXXwwKT4+PjA8KGtbdT4+Ml18MCk+Pj4wOjApe2Y9a1tzPj4yXXwwO2tbcz4+Ml09ZisxO2tbZz4+Ml09KGxbZj4+MF18MCk8PDg7Zj1rW3M+PjJdfDA7a1tzPj4yXT1mKzE7a1tnPj4yXT0oa1tnPj4yXXwwKSsobFtmPj4wXXwwKTtrW3A+PjJdPShrW2c+PjJdJjEwMjMpKygoa1twPj4yXSY2Myk8PDEwKSsoKGtbcD4+Ml0mOTYwKSs2NDw8MTApfWI9a1twPj4yXXwwO2lmKChrW3A+PjJdfDApPj4+MDwxMjgpe2Y9a1txPj4yXXwwO2tbcT4+Ml09ZisxO2lbZj4+MF09Yjtjb250aW51ZX1hPWtbcD4+Ml18MDtpZihiPj4+MDwyMDQ4KXtlPWtbcT4+Ml18MDtrW3E+PjJdPWUrMTtpW2U+PjBdPTE5MisoYT4+PjYmMzEpO2U9MTI4KyhrW3A+PjJdJjYzKSYyNTU7Zj1rW3E+PjJdfDA7a1txPj4yXT1mKzE7aVtmPj4wXT1lO2NvbnRpbnVlfWI9a1twPj4yXXwwO2lmKGE+Pj4wPDY1NTM2KXtmPWtbcT4+Ml18MDtrW3E+PjJdPWYrMTtpW2Y+PjBdPTIyNCsoYj4+PjEyJjE1KTtmPTEyOCsoKGtbcD4+Ml18MCk+Pj42JjYzKSYyNTU7ZT1rW3E+PjJdfDA7a1txPj4yXT1lKzE7aVtlPj4wXT1mO2U9MTI4KyhrW3A+PjJdJjYzKSYyNTU7Zj1rW3E+PjJdfDA7a1txPj4yXT1mKzE7aVtmPj4wXT1lO2NvbnRpbnVlfWVsc2V7ZT1rW3E+PjJdfDA7a1txPj4yXT1lKzE7aVtlPj4wXT0yNDArKGI+Pj4xOCY3KTtlPTEyOCsoKGtbcD4+Ml18MCk+Pj4xMiY2MykmMjU1O2Y9a1txPj4yXXwwO2tbcT4+Ml09ZisxO2lbZj4+MF09ZTtmPTEyOCsoKGtbcD4+Ml18MCk+Pj42JjYzKSYyNTU7ZT1rW3E+PjJdfDA7a1txPj4yXT1lKzE7aVtlPj4wXT1mO2U9MTI4KyhrW3A+PjJdJjYzKSYyNTU7Zj1rW3E+PjJdfDA7a1txPj4yXT1mKzE7aVtmPj4wXT1lO2NvbnRpbnVlfX13aGlsZSgwKTtrWyhrW24+PjJdfDApKzEyPj4yXT0oa1txPj4yXXwwKS0oa1t0Pj4yXXwwKX1pW2tbcT4+Ml0+PjBdPTA7a1twPj4yXT1tWyhrW24+PjJdfDApKzg+PjFdO2ZoKGtbbj4+Ml18MCk7alsoa1tuPj4yXXwwKSs4Pj4xXT01MTR8a1twPj4yXSYzMjc5OTtpWyhrW24+PjJdfDApKzEwPj4wXT1pW28+PjBdfDA7a1soa1tuPj4yXXwwKSsxNj4+Ml09a1t0Pj4yXTtrWyhrW24+PjJdfDApKzIwPj4yXT1rWyhrW24+PjJdfDApKzE2Pj4yXTt1PXV1KGtbKGtbbj4+Ml18MCkrMzI+PjJdfDAsa1soa1tuPj4yXXwwKSsxNj4+Ml18MCl8MDtrWyhrW24+PjJdfDApKzI0Pj4yXT11fWtbaD4+Ml09MDt1PWtbaD4+Ml18MDtyPXY7cmV0dXJuIHV8MH1mdW5jdGlvbiB1dShhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTA7Zj1yO3I9cisxNnwwO2M9Zis4fDA7ZD1mKzR8MDtlPWY7a1tkPj4yXT1hO2tbZT4+Ml09YjtpZigoa1tkPj4yXXwwKSE9MD8odnUoa1tkPj4yXXwwLGtbZT4+Ml18MCl8MCkhPTA6MCl7a1tjPj4yXT1tWyhrW2Q+PjJdfDApKzI1Nis0Pj4xXTtiPWtbYz4+Ml18MDtyPWY7cmV0dXJuIGJ8MH1iPWJjW2tbNjA+PjJdJjI1NV0oa1tlPj4yXXwwKXwwO2tbYz4+Ml09YjtiPWtbYz4+Ml18MDtyPWY7cmV0dXJuIGJ8MH1mdW5jdGlvbiB2dShhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MDtlPXI7cj1yKzE2fDA7Yz1lKzR8MDtkPWU7a1tjPj4yXT1hO2tbZD4+Ml09YjtpZigoa1tkPj4yXXwwKT4+PjA8KGtbKGtbYz4+Ml18MCkrMjU2KzMyPj4yXXwwKT4+PjApe2I9MDtiPWImMTtyPWU7cmV0dXJuIGJ8MH1iPShrW2Q+PjJdfDApPj4+MDwoa1soa1tjPj4yXXwwKSsyNTYrMzY+PjJdfDApPj4+MDtiPWImMTtyPWU7cmV0dXJuIGJ8MH1mdW5jdGlvbiB3dShhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTA7ZT1yO3I9cisxNnwwO2M9ZSs4fDA7Zj1lKzR8MDtkPWU7a1tjPj4yXT1hO2tbZj4+Ml09YjtrW2Q+PjJdPWtbKGtbZj4+Ml18MCkrMjQ+PjJdO2lmKCEoa1tkPj4yXXwwKSl7cj1lO3JldHVybn1mPWtbZD4+Ml18MDtrW2Y+PjJdPShrW2Y+PjJdfDApKy0xO2lmKGtba1tkPj4yXT4+Ml18MCl7cj1lO3JldHVybn1fYltrWyhrW2Q+PjJdfDApKzQ+PjJdJjI1NV0oa1soa1tkPj4yXXwwKSs4Pj4yXXwwKTtiZyhrW2M+PjJdfDAsa1tkPj4yXXwwKTtyPWU7cmV0dXJufWZ1bmN0aW9uIHh1KGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTA7aD1yO3I9ciszMnwwO2I9aCsyMHwwO2M9aCsxNnwwO2Q9aCsxMnwwO2Y9aCs4fDA7Zz1oKzR8MDtlPWg7a1tiPj4yXT1hO1lmKGtbYj4+Ml18MCk7a1tjPj4yXT0wO3doaWxlKDEpe2lmKChrW2M+PjJdfDApPj0oa1soa1tiPj4yXXwwKSsyMD4+Ml18MCkpYnJlYWs7a1tmPj4yXT1rWyhrWyhrW2I+PjJdfDApKzE2Pj4yXXwwKSsoa1tjPj4yXTw8NCkrMTI+PjJdO2E6ZG8gaWYoa1soa1soa1tiPj4yXXwwKSsxNj4+Ml18MCkrKGtbYz4+Ml08PDQpKzEyPj4yXXwwKXtrW2Q+PjJdPWtbKGtbZj4+Ml18MCkrOCs4Pj4yXTt3aGlsZSgxKXtpZighKGtbZD4+Ml18MCkpYnJlYWsgYTtrW2c+PjJdPWtbKGtbZD4+Ml18MCkrOD4+Ml07aWYoKGxbKGtbZz4+Ml18MCkrNDI+PjBdfDApJjE2KUR1KGtbYj4+Ml18MCxrW2c+PjJdfDApO2tbZD4+Ml09a1trW2Q+PjJdPj4yXX19d2hpbGUoMCk7a1tjPj4yXT0oa1tjPj4yXXwwKSsxfWtbZD4+Ml09a1soa1tiPj4yXXwwKSszMjArOD4+Ml07d2hpbGUoMSl7aWYoIShrW2Q+PjJdfDApKWJyZWFrO2tbZT4+Ml09a1soa1tkPj4yXXwwKSs4Pj4yXTtpZihrWyhrW2U+PjJdfDApKzE2Pj4yXXwwKUR1KGtbYj4+Ml18MCxrWyhrW2U+PjJdfDApKzE2Pj4yXXwwKTtrW2Q+PjJdPWtba1tkPj4yXT4+Ml19RXUoa1tiPj4yXXwwKTtyPWg7cmV0dXJufWZ1bmN0aW9uIHl1KGEpe2E9YXwwO3ZhciBiPTAsYz0wO2I9cjtyPXIrMTZ8MDtjPWI7a1tjPj4yXT1hO0J1KGtbYz4+Ml18MCw2OCk7cj1iO3JldHVybiAwfVxuZnVuY3Rpb24gRkooYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxpPTAsaj0wLGw9MCxtPTAsbj0wLG89MDttPXI7cj1yKzQ4fDA7bz1tKzMyfDA7bj1tKzI4fDA7ZT1tKzI0fDA7Zj1tKzIwfDA7aD1tKzE2fDA7aT1tKzEyfDA7Zz1tKzh8MDtsPW0rNHwwO2o9bTtrW28+PjJdPWE7a1tuPj4yXT1iO2tbZT4+Ml09YztrW2Y+PjJdPWQ7a1tnPj4yXT0oa1soa1tvPj4yXXwwKSsxNj4+Ml18MCkrKGtbbj4+Ml08PDQpO2tbaT4+Ml09KGtbKGtbZz4+Ml18MCkrMTI+PjJdfDApKzg7a1toPj4yXT1rWyhrW2k+PjJdfDApKzg+PjJdO3doaWxlKDEpe2lmKCEoa1toPj4yXXwwKSlicmVhaztrW2w+PjJdPWtbKGtbaD4+Ml18MCkrOD4+Ml07aWYoKGtbKGtbbD4+Ml18MCkrMjg+PjJdfDApPT0oa1tlPj4yXXwwKSlrWyhrW2w+PjJdfDApKzI4Pj4yXT1rW2Y+PjJdO2tbaD4+Ml09a1trW2g+PjJdPj4yXX1rW2k+PjJdPShrWyhrW2c+PjJdfDApKzEyPj4yXXwwKSsyNDtrW2g+PjJdPWtbKGtbaT4+Ml18MCkrOD4+Ml07d2hpbGUoMSl7aWYoIShrW2g+PjJdfDApKWJyZWFrO2tbaj4+Ml09a1soa1toPj4yXXwwKSs4Pj4yXTtpZigoa1soa1tqPj4yXXwwKSs0ND4+Ml18MCk9PShrW2U+PjJdfDApKWtbKGtbaj4+Ml18MCkrNDQ+PjJdPWtbZj4+Ml07a1toPj4yXT1rW2tbaD4+Ml0+PjJdfXI9bTtyZXR1cm59ZnVuY3Rpb24gR0ooYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGk9MDtpPXI7cj1yKzMyfDA7ZD1pKzE2fDA7ZT1pKzEyfDA7Zj1pKzh8MDtoPWkrNHwwO2c9aTtrW2Q+PjJdPWE7a1tlPj4yXT1iO2tbZj4+Ml09YztrW2c+PjJdPWtbKGtbZD4+Ml18MCkrND4+Ml07d2coa1tkPj4yXXwwKTtjPWZJKGtbZz4+Ml18MCxrW2U+PjJdfDAsMCl8MDtrW2g+PjJdPWM7aWYoa1toPj4yXXwwKXtoPWtbaD4+Ml18MDtyPWk7cmV0dXJuIGh8MH1oTChrW2Q+PjJdfDAsMCwwLDEpO2M9aUwoa1tnPj4yXXwwLGtbZT4+Ml18MCwwLGtbZj4+Ml18MCl8MDtrW2g+PjJdPWM7aD1rW2g+PjJdfDA7cj1pO3JldHVybiBofDB9ZnVuY3Rpb24gSEooYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MDtnPXI7cj1yKzE2fDA7Yz1nKzEyfDA7ZD1nKzh8MDtlPWcrNHwwO2Y9ZztrW2M+PjJdPWE7a1tkPj4yXT1iO2JMKGtbKGtbZD4+Ml18MCkrMjA+PjJdfDApO2tbKGtbZD4+Ml18MCkrMjA+PjJdPTA7a1tlPj4yXT0wO3doaWxlKDEpe2lmKChrW2U+PjJdfDApPj0obFsoa1tkPj4yXXwwKSs1OT4+MF18MHwwKSlicmVhaztrW2Y+PjJdPShrW2Q+PjJdfDApKzY0Kygoa1tlPj4yXXwwKSo3MnwwKTtjTChrW2M+PjJdfDAsa1tmPj4yXXwwKTtrWyhrW2Y+PjJdfDApKzg+PjJdPWtbZD4+Ml07a1tlPj4yXT0oa1tlPj4yXXwwKSsxfWlmKCEoa1soa1tkPj4yXXwwKSszNis0Pj4yXXwwKSlkTCgwLGtbKGtbZD4+Ml18MCkrMzY+PjJdfDApO2tbKGtbZD4+Ml18MCkrMzY+PjJdPTA7a1soa1tkPj4yXXwwKSszNis4Pj4yXT0wO2lbKGtbZD4+Ml18MCkrNTY+PjBdPTA7a1soa1tkPj4yXXwwKSs0OD4+Ml09MDtrWyhrW2Q+PjJdfDApKzg+PjJdPTA7Ymcoa1tjPj4yXXwwLGtbKGtbZD4+Ml18MCkrMzI+PjJdfDApO2tbKGtbZD4+Ml18MCkrMzI+PjJdPTA7cj1nO3JldHVybn1mdW5jdGlvbiBJSihhKXthPWF8MDt2YXIgYj0wLGM9MDtiPXI7cj1yKzE2fDA7Yz1iO2tbYz4+Ml09YTthPUdKKGtba1tjPj4yXT4+Ml18MCxrWyhrW2M+PjJdfDApKzUyPj4yXXwwLDApfDA7cj1iO3JldHVybiBhfDB9ZnVuY3Rpb24gSkooYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGk9MDtkPXI7cj1yKzMyfDA7ZT1kKzE2fDA7aT1kKzEyfDA7Zz1kKzh8MDtmPWQrNHwwO2g9ZDtrW2U+PjJdPWE7a1tpPj4yXT1iO2tbZz4+Ml09YztrW2g+PjJdPShrWyhrW2U+PjJdfDApKzE2Pj4yXXwwKSsoa1tpPj4yXTw8NCk7Yz1jaygoa1soa1toPj4yXXwwKSsxMj4+Ml18MCkrOHwwLGtbZz4+Ml18MCwwKXwwO2tbZj4+Ml09YzskZihrW2U+PjJdfDAsa1tmPj4yXXwwKTtjPShrW2U+PjJdfDApKzI0fDA7a1tjPj4yXT1rW2M+PjJdfDI7cj1kO3JldHVybn1mdW5jdGlvbiBLSihhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaT0wLGo9MDtnPXI7cj1yKzMyfDA7ZD1nKzIwfDA7aj1nKzE2fDA7aD1nKzEyfDA7Zj1nKzh8MDtpPWcrNHwwO2U9ZztrW2Q+PjJdPWE7a1tqPj4yXT1iO2tbaD4+Ml09YztrW2k+PjJdPShrWyhrWyhrW2Q+PjJdfDApKzE2Pj4yXXwwKSsoa1tqPj4yXTw8NCkrMTI+PjJdfDApKzI0O2M9Y2soa1tpPj4yXXwwLGtbaD4+Ml18MCwwKXwwO2tbZj4+Ml09YztpZighKGtbZj4+Ml18MCkpe2o9a1tkPj4yXXwwO2o9aisyNHwwO2k9a1tqPj4yXXwwO2k9aXwyO2tbaj4+Ml09aTtyPWc7cmV0dXJufWE9a1tmPj4yXXwwO2lmKChrWyhrWyhrW2Y+PjJdfDApKzEyPj4yXXwwKSs4Pj4yXXwwKSE9KGtbZj4+Ml18MCkpe2tbZT4+Ml09a1soa1thKzEyPj4yXXwwKSs4Pj4yXTt3aGlsZSgxKXtpZihrW2U+PjJdfDApYj0oa1soa1tlPj4yXXwwKSsyMD4+Ml18MCkhPShrW2Y+PjJdfDApO2Vsc2UgYj0wO2E9a1tlPj4yXXwwO2lmKCFiKWJyZWFrO2tbZT4+Ml09a1thKzIwPj4yXX1pZigoYXwwKSE9MD8oa1soa1tlPj4yXXwwKSsyMD4+Ml18MCk9PShrW2Y+PjJdfDApOjApa1soa1tlPj4yXXwwKSsyMD4+Ml09a1soa1tmPj4yXXwwKSsyMD4+Ml19ZWxzZSBrWyhrWyhrW2Y+PjJdfDApKzEyPj4yXXwwKSs4Pj4yXT1rW2ErMjA+PjJdO1BIKGtbZD4+Ml18MCxrW2Y+PjJdfDApO2o9a1tkPj4yXXwwO2o9aisyNHwwO2k9a1tqPj4yXXwwO2k9aXwyO2tbaj4+Ml09aTtyPWc7cmV0dXJufWZ1bmN0aW9uIExKKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxpPTAsaj0wLGw9MDtoPXI7cj1yKzMyfDA7ZT1oKzI0fDA7bD1oKzIwfDA7aT1oKzE2fDA7Zj1oKzEyfDA7aj1oKzh8MDtkPWgrNHwwO2c9aDtrW2U+PjJdPWE7a1tsPj4yXT1iO2tbaT4+Ml09YztrW2o+PjJdPShrWyhrWyhrW2U+PjJdfDApKzE2Pj4yXXwwKSsoa1tsPj4yXTw8NCkrMTI+PjJdfDApKzQwO2M9Y2soa1tqPj4yXXwwLGtbaT4+Ml18MCwwKXwwO2tbZj4+Ml09YztpZighKGtbZj4+Ml18MCkpe3I9aDtyZXR1cm59aWYoKGtbKGtbZj4+Ml18MCkrMjA+PjJdfDApPT0oa1soa1tmPj4yXXwwKSsyND4+Ml18MCkpe2w9akMoa1tmPj4yXXwwKXwwO2tbZD4+Ml09bDtrW2c+PjJdPShrW2Q+PjJdfDApKzYwO3doaWxlKDEpe2E9KGtba1tnPj4yXT4+Ml18MCkrMzJ8MDtpZigoa1trW2c+PjJdPj4yXXwwKT09KGtbZj4+Ml18MCkpYnJlYWs7a1tnPj4yXT1hfWtba1tnPj4yXT4+Ml09a1thPj4yXX1fZihrW2U+PjJdfDAsa1tmPj4yXXwwKTtsPShrW2U+PjJdfDApKzI0fDA7a1tsPj4yXT1rW2w+PjJdfDI7cj1oO3JldHVybn1mdW5jdGlvbiBNSihhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsbT0wLG49MCxvPTAscD0wLHE9MCxzPTAsdD0wLHU9MCx2PTA7dD1yO3I9cisyNDB8MDtzPXQrMTZ8MDtxPXQrOHwwO3Y9dCsxMjR8MDtmPXQrMTIwfDA7Zz10KzExNnwwO3U9dCsxMTJ8MDtoPXQrMTA4fDA7aj10KzEwNHwwO289dCszMnwwO249dCsyNHwwO3A9dCsyMHwwO209dDtrW3Y+PjJdPWE7a1tmPj4yXT1iO2tbZz4+Ml09YztrW3U+PjJdPWQ7a1toPj4yXT1lO2tbbj4+Ml09a1soa1t2Pj4yXXwwKSs0Pj4yXTtrW3A+PjJdPWtbKGtbKGtbbj4+Ml18MCkrND4+Ml18MCkrMjQ+PjJdO3dnKGtbdj4+Ml18MCk7a1tvPj4yXT1rW24+PjJdO2tbbys0Pj4yXT1rW2tbbj4+Ml0+PjJdO2U9VEYoa1tvPj4yXXwwKXwwO2tbbysxMj4+Ml09ZTtrW28rMTY+PjJdPWtbdT4+Ml07a1tvKzIwPj4yXT0wO2tbbysyND4+Ml09MDtrW28rMjg+PjJdPTA7a1tvKzMyPj4yXT0wO2tbbyszNj4+Ml09MDtrW28rOD4+Ml09MDtrW28rNjg+PjJdPTA7bmcobys0MHwwLDAsdCsxMjh8MCwxMDAsMWU5KTtpW28rNDArMjU+PjBdPTE7YTpkbyBpZihrW28rMTI+PjJdfDApe3Y9dWcoKCgoa1tvKzEyPj4yXXwwKT4+PjApLzh8MCkrMXwwLDApfDA7a1tvKzg+PjJdPXY7aWYoIShrW28rOD4+Ml18MCkpe2tbbysyND4+Ml09MTticmVha312PWdqKGtbKGtbbj4+Ml18MCkrMzI+PjJdfDApfDA7a1tvKzY4Pj4yXT12O2lmKCEoa1tvKzY4Pj4yXXwwKSl7a1tvKzI0Pj4yXT0xO2JyZWFrfWtbaj4+Ml09KCgoa1szODRdfDApPj4+MCkvKChrWyhrW24+PjJdfDApKzMyPj4yXXwwKT4+PjApfDApKzE7aWYoKGtbaj4+Ml18MCk+Pj4wPD0oa1tvKzEyPj4yXXwwKT4+PjApVUsobyxrW2o+PjJdfDApO2tbbysyOD4+Ml09NDEwOTU7dj1xcigoa1soa1soa1tuPj4yXXwwKSsxMj4+Ml18MCkrNTY+PjJdfDApKzMyfDApfDA7VksobywxLHYscXIoKGtbKGtbKGtbbj4+Ml18MCkrMTI+PjJdfDApKzU2Pj4yXXwwKSszNnwwKXwwKTtrW28rMjg+PjJdPTA7dj0oa1soa1tuPj4yXXwwKSs0Pj4yXXwwKSsyNHwwO2tbdj4+Ml09a1t2Pj4yXSYtNTM2ODcwOTEzO2tbaj4+Ml09MDt3aGlsZSgxKXtpZighKChrW2o+PjJdfDApPChrW2c+PjJdfDApPyhrW28rMTY+PjJdfDApIT0wOjApKWJyZWFrO2lmKGtbKGtbZj4+Ml18MCkrKGtbaj4+Ml08PDIpPj4yXXwwKXtpZigobFsoa1tuPj4yXXwwKSsxNz4+MF18MCkhPTA/KGtbKGtbZj4+Ml18MCkrKGtbaj4+Ml08PDIpPj4yXXwwKT4xOjApV0sobyxrWyhrW2Y+PjJdfDApKyhrW2o+PjJdPDwyKT4+Ml18MCwxLDApO1hLKG8sa1soa1tmPj4yXXwwKSsoa1tqPj4yXTw8Mik+PjJdfDAsbSwtMSwyMTQ3NDgzNjQ3KXwwfWtbaj4+Ml09KGtbaj4+Ml18MCkrMX1rWyhrWyhrW24+PjJdfDApKzQ+PjJdfDApKzI0Pj4yXT1rW3A+PjJdO2tbaj4+Ml09MTt3aGlsZSgxKXtpZighKChrW2o+PjJdfDApPj4+MDw9KGtbbysxMj4+Ml18MCk+Pj4wPyhrW28rMTY+PjJdfDApIT0wOjApKWJyZWFrIGE7ZG8gaWYoIShZSyhvLGtbaj4+Ml18MCl8MCkpe3Y9ZEcoa1tuPj4yXXwwLGtbaj4+Ml18MCl8MDtpZigodnwwKT09KGtbaj4+Ml18MCk/KGlbKGtbbj4+Ml18MCkrMTc+PjBdfDApIT0wOjApYnJlYWs7a1txPj4yXT1rW2o+PjJdO1pLKG8sNDExMTEscSl9d2hpbGUoMCk7aWYoKChZSyhvLGtbaj4+Ml18MCl8MCkhPTA/KHY9ZEcoa1tuPj4yXXwwLGtbaj4+Ml18MCl8MCwodnwwKT09KGtbaj4+Ml18MCkpOjApPyhsWyhrW24+PjJdfDApKzE3Pj4wXXwwKSE9MDowKXtrW3M+PjJdPWtbaj4+Ml07Wksobyw0MTEzMyxzKX1rW2o+PjJdPShrW2o+PjJdfDApKzF9fXdoaWxlKDApO2pqKGtbbys2OD4+Ml18MCk7VWQoa1tvKzg+PjJdfDApO2lmKGtbbysyND4+Ml18MCl7SEEobys0MHwwKTt2PW8rMjB8MDtrW3Y+PjJdPShrW3Y+PjJdfDApKzF9a1trW2g+PjJdPj4yXT1rW28rMjA+PjJdO2lmKGtbbysyMD4+Ml18MCl7dj1vKzQwfDA7dj1wZyh2KXwwO3I9dDtyZXR1cm4gdnwwfUhBKG8rNDB8MCk7dj1vKzQwfDA7dj1wZyh2KXwwO3I9dDtyZXR1cm4gdnwwfWZ1bmN0aW9uIE5KKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MDtkPXI7cj1yKzE2fDA7Yj1kKzR8MDtjPWQ7a1tiPj4yXT1hO2tbYz4+Ml09a1soa1tiPj4yXXwwKSszMj4+Ml07Zmgoa1tiPj4yXXwwKTthPWR4KGtbYz4+Ml18MCw2NCwwKXwwO2tbKGtbYj4+Ml18MCkrMjA+PjJdPWE7aWYoaVsoa1tjPj4yXXwwKSs2OT4+MF18MCl7alsoa1tiPj4yXXwwKSs4Pj4xXT0xO2tbKGtbYj4+Ml18MCkrMjQ+PjJdPTA7cj1kO3JldHVybn1lbHNle2E9dXUoa1tjPj4yXXwwLGtbKGtbYj4+Ml18MCkrMjA+PjJdfDApfDA7a1soa1tiPj4yXXwwKSsyND4+Ml09YTthPVRLKGtbYz4+Ml18MCxrWyhrW2I+PjJdfDApKzIwPj4yXXwwLGtbKGtbYj4+Ml18MCkrMjQ+PjJdfDApfDA7a1trW2I+PjJdPj4yXT1hO2pbKGtbYj4+Ml18MCkrOD4+MV09MzI7cj1kO3JldHVybn19ZnVuY3Rpb24gT0ooYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wO2g9cjtyPXIrMzJ8MDtkPWgrMTZ8MDtlPWg7Zj1oKzEyfDA7Zz1oKzh8MDtrW2Q+PjJdPWE7YT1lO2tbYT4+Ml09YjtrW2ErND4+Ml09YzthPVJLKGtbZD4+Ml18MCl8MDtrW2Y+PjJdPWE7aWYoIShrW2Y+PjJdfDApKXtyPWg7cmV0dXJufWI9ZTtjPWtbYis0Pj4yXXwwO2E9a1tmPj4yXXwwO2tbYT4+Ml09a1tiPj4yXTtrW2ErND4+Ml09YztrWyhrW2Y+PjJdfDApKzg+PjJdPTA7a1tnPj4yXT1rWyhrW2Q+PjJdfDApKzEyPj4yXTtpZihrW2c+PjJdfDApe2I9a1tlKzQ+PjJdfDA7YT1rW2c+PjJdfDA7Yz1rW2ErND4+Ml18MDtpZigoYnwwKTwoY3wwKXwoKGJ8MCk9PShjfDApPyhrW2U+PjJdfDApPj4+MDw9KGtbYT4+Ml18MCk+Pj4wOjApKXthPShrW2Q+PjJdfDApKzI2fDA7althPj4xXT0obVthPj4xXXwwKSYtMn1rWyhrW2c+PjJdfDApKzg+PjJdPWtbZj4+Ml19ZWxzZSBrWyhrW2Q+PjJdfDApKzg+PjJdPWtbZj4+Ml07a1soa1tkPj4yXXwwKSsxMj4+Ml09a1tmPj4yXTtyPWg7cmV0dXJufWZ1bmN0aW9uIFBKKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTA7Zj1yO3I9cisxNnwwO2M9Zis4fDA7ZD1mKzR8MDtlPWY7a1tkPj4yXT1hO2tbZT4+Ml09YjtpZighKChtWyhrW2Q+PjJdfDApKzI2Pj4xXXwwKSYyKSl7aWYoISgobVsoa1tkPj4yXXwwKSsyNj4+MV18MCkmMSkpe2I9Tksoa1soa1tkPj4yXXwwKSs4Pj4yXXwwKXwwO2tbKGtbZD4+Ml18MCkrOD4+Ml09Yn1iPShrW2Q+PjJdfDApKzI2fDA7altiPj4xXT1tW2I+PjFdfDB8M31pZighKGtbKGtbZD4+Ml18MCkrOD4+Ml18MCkpe2tbYz4+Ml09MDtiPWtbYz4+Ml18MDtyPWY7cmV0dXJuIGJ8MH1nPWtbKGtbZD4+Ml18MCkrOD4+Ml18MDthPWtbZys0Pj4yXXwwO2I9a1tlPj4yXXwwO2tbYj4+Ml09a1tnPj4yXTtrW2IrND4+Ml09YTtrWyhrW2Q+PjJdfDApKzg+PjJdPWtbKGtbKGtbZD4+Ml18MCkrOD4+Ml18MCkrOD4+Ml07aWYoIShrWyhrW2Q+PjJdfDApKzg+PjJdfDApKXlHKGtbZD4+Ml18MCk7a1tjPj4yXT0xO2c9a1tjPj4yXXwwO3I9ZjtyZXR1cm4gZ3wwfWZ1bmN0aW9uIFFKKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaT0wLGw9MCxuPTAsbz0wLHA9MCxxPTAscz0wO3M9cjtyPXIrNDh8MDtuPXMrMzZ8MDtlPXMrMzJ8MDtmPXMrMjh8MDtvPXM7cD1zKzI0fDA7cT1zKzIwfDA7aT1zKzE2fDA7Zz1zKzEyfDA7aD1zKzh8MDtrW2U+PjJdPWE7a1tmPj4yXT1iO2E9bztrW2E+PjJdPWM7a1thKzQ+PjJdPWQ7aWYoKGtbZj4+Ml18MCkhPShrWyhrW2U+PjJdfDApKzI4Pj4yXXwwKSl7a1twPj4yXT1rWyhrW2U+PjJdfDApKzg+PjJdO2lmKGtbcD4+Ml18MCl7a1tpPj4yXT0oa1tlPj4yXXwwKSsyMDtpZighKChtWyhrW2U+PjJdfDApKzI2Pj4xXXwwKSYxKSl7YT1OSyhrW3A+PjJdfDApfDA7a1twPj4yXT1hfWtbcT4+Ml09a1soa1tlPj4yXXwwKSsyMD4+Ml07d2hpbGUoMSl7aWYoIShrW3E+PjJdfDApKWJyZWFrO2tbaT4+Ml09KGtbcT4+Ml18MCkrODtpZighKGtbKGtbcT4+Ml18MCkrMTI+PjJdfDApKXtsPTg7YnJlYWt9UEsoa1soa1txPj4yXXwwKSsxMj4+Ml18MCxnLGgpO2tbKGtbcT4+Ml18MCkrMTI+PjJdPTA7YT1RSyhrW2c+PjJdfDAsa1twPj4yXXwwKXwwO2tbcD4+Ml09YTtrW3E+PjJdPWtbKGtbcT4+Ml18MCkrOD4+Ml19aWYoKGx8MCk9PTgpe2w9T0soa1twPj4yXXwwKXwwO2tbKGtbcT4+Ml18MCkrMTI+PjJdPWx9aWYoKGtbcT4+Ml18MCk9PTA/KGw9Uksoa1tlPj4yXXwwKXwwLGtbcT4+Ml09bCxrW2tbaT4+Ml0+PjJdPWwsKGtbcT4+Ml18MCkhPTApOjApe2w9a1txPj4yXXwwO2tbbD4+Ml09MDtrW2wrND4+Ml09MDtrWyhrW3E+PjJdfDApKzg+PjJdPTA7bD1PSyhrW3A+PjJdfDApfDA7a1soa1txPj4yXXwwKSsxMj4+Ml09bH1rWyhrW2U+PjJdfDApKzg+PjJdPTA7a1soa1tlPj4yXXwwKSsxMj4+Ml09MDtsPShrW2U+PjJdfDApKzI2fDA7altsPj4xXT1tW2w+PjFdfDB8MX1rWyhrW2U+PjJdfDApKzI4Pj4yXT1rW2Y+PjJdfWtbcT4+Ml09a1soa1tlPj4yXXwwKSsyMD4+Ml07YTp3aGlsZSgxKXtpZighKGtbcT4+Ml18MCkpe2w9MjU7YnJlYWt9a1twPj4yXT1rWyhrW3E+PjJdfDApKzEyPj4yXTt3aGlsZSgxKXtpZighKGtbcD4+Ml18MCkpYnJlYWs7aT1rW3A+PjJdfDA7YT1rW2krND4+Ml18MDtsPW87aD1rW2wrND4+Ml18MDtjPWtbcD4+Ml18MDtpZigoYXwwKTwoaHwwKXwoKGF8MCk9PShofDApPyhrW2k+PjJdfDApPj4+MDwoa1tsPj4yXXwwKT4+PjA6MCkpe2tbcD4+Ml09a1tjKzg+PjJdO2NvbnRpbnVlfWk9YzthPWtbaSs0Pj4yXXwwO2w9bztoPWtbbCs0Pj4yXXwwO2lmKCEoKGF8MCk+KGh8MCl8KChhfDApPT0oaHwwKT8oa1tpPj4yXXwwKT4+PjA+KGtbbD4+Ml18MCk+Pj4wOjApKSl7bD0yMzticmVhayBhfWtbcD4+Ml09a1soa1twPj4yXXwwKSsxMj4+Ml19a1txPj4yXT1rWyhrW3E+PjJdfDApKzg+PjJdfWlmKChsfDApPT0yMyl7a1tuPj4yXT0xO3E9a1tuPj4yXXwwO3I9cztyZXR1cm4gcXwwfWVsc2UgaWYoKGx8MCk9PTI1KXtrW24+PjJdPTA7cT1rW24+PjJdfDA7cj1zO3JldHVybiBxfDB9cmV0dXJuIDB9ZnVuY3Rpb24gUkooYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wO2Q9cjtyPXIrMTZ8MDtiPWQrNHwwO2M9ZDtrW2M+PjJdPWE7aWYoKGxbKGtbYz4+Ml18MCkrMTc+PjBdfDB8MCk+PTMpe2tbYj4+Ml09MDthPWtbYj4+Ml18MDtyPWQ7cmV0dXJuIGF8MH1pZigoa1trWyhrW2M+PjJdfDApKzY4Pj4yXT4+Ml18MCkhPTA/KGE9KGtbYz4+Ml18MCkrODB8MCxjPWtbYSs0Pj4yXXwwLChjfDApPjB8KGN8MCk9PTAmKGtbYT4+Ml18MCk+Pj4wPjApOjApe2tbYj4+Ml09MDthPWtbYj4+Ml18MDtyPWQ7cmV0dXJuIGF8MH1rW2I+PjJdPTE7YT1rW2I+PjJdfDA7cj1kO3JldHVybiBhfDB9ZnVuY3Rpb24gU0ooYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wLGU9MDtlPXI7cj1yKzE2fDA7ZD1lKzh8MDtiPWUrNHwwO2M9ZTtrW2I+PjJdPWE7a1tjPj4yXT1rW2tbKGtbYj4+Ml18MCkrNjQ+PjJdPj4yXTtpZihpWyhrW2I+PjJdfDApKzE0Pj4wXXwwKXtrW2Q+PjJdPTA7ZD1rW2Q+PjJdfDA7cj1lO3JldHVybiBkfDB9aWYoIShsWyhrW2I+PjJdfDApKzQ+PjBdfDApKWlmKChrW2tbYz4+Ml0+PjJdfDApPj0yKWI9KGtbKGtbYz4+Ml18MCkrNTI+PjJdfDApIT0wO2Vsc2UgYj0wO2Vsc2UgYj0xO2tbZD4+Ml09YiYxO2Q9a1tkPj4yXXwwO3I9ZTtyZXR1cm4gZHwwfWZ1bmN0aW9uIFRKKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MCxlPTA7ZT1yO3I9cisxNnwwO2I9ZSs4fDA7ZD1lKzR8MDtjPWU7a1tiPj4yXT1hO2tbZD4+Ml09MDtpZighKGtbKGtbYj4+Ml18MCkrMjE2Pj4yXXwwKSl7a1tjPj4yXT0wO2E9UXQoa1tiPj4yXXwwLDEpfDA7a1tkPj4yXT1hO2lmKCEoa1tkPj4yXXwwKSl7YT1ncyhrW2tbYj4+Ml0+PjJdfDAsa1soa1tiPj4yXXwwKSsyMjA+PjJdfDAsMCxjKXwwO2tbZD4+Ml09YX1pZigoa1tkPj4yXXwwKT09MCYoa1tjPj4yXXwwKSE9MCl7YT1JSyhrW2I+PjJdfDApfDA7a1tkPj4yXT1hfX1pZihrW2Q+PjJdfDApe2Q9a1tkPj4yXXwwO3I9ZTtyZXR1cm4gZHwwfWlmKCEoa1soa1tiPj4yXXwwKSsyMTY+PjJdfDApKXtkPWtbZD4+Ml18MDtyPWU7cmV0dXJuIGR8MH1hPUpLKGtbYj4+Ml18MCl8MDtrW2Q+PjJdPWE7aWYoa1tkPj4yXXwwKXtkPWtbZD4+Ml18MDtyPWU7cmV0dXJuIGR8MH1hPXRyKGtbKGtbYj4+Ml18MCkrMjE2Pj4yXXwwLGxbKGtbYj4+Ml18MCkrMTA+PjBdfDAsa1soa1tiPj4yXXwwKSsxNjA+PjJdfDAsa1soa1tiPj4yXXwwKSsyMDg+PjJdfDApfDA7a1tkPj4yXT1hO2tbKGtbYj4+Ml18MCkrMjE2Pj4yXT0wO2tqKGtbYj4+Ml18MCk7aWYoIShrW2Q+PjJdfDApKXtkPWtbZD4+Ml18MDtyPWU7cmV0dXJuIGR8MH1pZihpWyhrW2I+PjJdfDApKzQ+PjBdfDApe2Q9a1tkPj4yXXwwO3I9ZTtyZXR1cm4gZHwwfVByKGtbYj4+Ml18MCwxKXwwO2Q9a1tkPj4yXXwwO3I9ZTtyZXR1cm4gZHwwfWZ1bmN0aW9uIFVKKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wO2g9cjtyPXIrMzJ8MDtjPWgrMTJ8MDtkPWgrOHwwO2U9aCsxNnwwO2Y9aCs0fDA7Zz1oO2tbYz4+Ml09YTtrW2Q+PjJdPWI7aVtlPj4wXT1pWyhrW2M+PjJdfDApKzU+PjBdfDA7aWYoKGlbKGtbYz4+Ml18MCkrMTY+PjBdfDApIT0wPyhrW2Q+PjJdfDApIT00JihrW2Q+PjJdfDApIT0yOjApa1tkPj4yXT1sW2U+PjBdO2RvIGlmKChrW2Q+PjJdfDApIT0obFtlPj4wXXwwKSl7aVsoa1tjPj4yXXwwKSs1Pj4wXT1rW2Q+PjJdO2lmKCgoaVsoa1tjPj4yXXwwKSs0Pj4wXXwwKT09MD8obFtlPj4wXSY1fDApPT0xOjApPyhrW2Q+PjJdJjF8MCk9PTA6MCl7eXIoa1soa1tjPj4yXXwwKSs2OD4+Ml18MCk7aWYoKGxbKGtbYz4+Ml18MCkrMTg+PjBdfDApPj0yKXtIcihrW2tbYz4+Ml0+PjJdfDAsa1soa1tjPj4yXXwwKSsxODA+PjJdfDAsMCl8MDticmVha31rW2Y+PjJdPTA7a1tnPj4yXT1sWyhrW2M+PjJdfDApKzE3Pj4wXTtpZighKGtbZz4+Ml18MCkpe2E9Qksoa1tjPj4yXXwwKXwwO2tbZj4+Ml09YX1pZigobFsoa1tjPj4yXXwwKSsxNz4+MF18MCk9PTEpe2E9UXQoa1tjPj4yXXwwLDIpfDA7a1tmPj4yXT1hfWlmKCEoa1tmPj4yXXwwKSlIcihrW2tbYz4+Ml0+PjJdfDAsa1soa1tjPj4yXXwwKSsxODA+PjJdfDAsMCl8MDtpZigoa1tmPj4yXXwwKT09MCYoa1tnPj4yXXwwKT09MSl7UHIoa1tjPj4yXXwwLDEpfDA7YnJlYWt9aWYoa1tnPj4yXXwwKWJyZWFrO3VyKGtbYz4+Ml18MCk7YnJlYWt9aWYoKGtbZD4+Ml18MCk9PTIpeXIoa1soa1tjPj4yXXwwKSs2OD4+Ml18MCl9d2hpbGUoMCk7cj1oO3JldHVybiBsWyhrW2M+PjJdfDApKzU+PjBdfDB9ZnVuY3Rpb24gVkooYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxtPTAsbj0wLG89MCxwPTAscT0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wO0Q9cjtyPXIrMTEyfDA7bj1EKzI0fDA7bT1EKzE2fDA7aj1EKzh8MDtoPUQ7cD1EKzkyfDA7Zj1EKzg4fDA7cT1EKzg0fDA7ZD1EKzgwfDA7eT1EKzc2fDA7dz1EKzcyfDA7eD1EKzY4fDA7ej1EKzY0fDA7Qj1EKzYwfDA7Qz1EKzU2fDA7QT1EKzk2fDA7dj1EKzUyfDA7ZT1EKzQ4fDA7dT1EKzQ0fDA7Zz1EKzQwfDA7bz1EKzM2fDA7dD1EKzMyfDA7cz1EKzI4fDA7a1tmPj4yXT1hO2tbcT4+Ml09YjtrW2Q+PjJdPWM7a1t5Pj4yXT0wO2tbdj4+Ml09MDtpZighKGlbKGtbcT4+Ml18MCkrNjc+PjBdfDApKXtNaihrW2Y+PjJdfDAsa1txPj4yXXwwLDQwNTE5KTtrW3A+PjJdPTE7Qz1rW3A+PjJdfDA7cj1EO3JldHVybiBDfDB9aWYoKGtbKGtbcT4+Ml18MCkrMTU2Pj4yXXwwKT4xKXtNaihrW2Y+PjJdfDAsa1txPj4yXXwwLDQwNTU5KTtrW3A+PjJdPTE7Qz1rW3A+PjJdfDA7cj1EO3JldHVybiBDfDB9a1t6Pj4yXT1rWyhrW3E+PjJdfDApKzI0Pj4yXTtrW0I+PjJdPWtbKGtbcT4+Ml18MCkrODg+PjJdO2tbQz4+Ml09a1soa1txPj4yXXwwKSs5Mj4+Ml07aVtBPj4wXT1pWyhrW3E+PjJdfDApKzc2Pj4wXXwwO2E9KGtbcT4+Ml18MCkrMjR8MDtrW2E+PjJdPWtbYT4+Ml18MjcwNTQyODQ4O2E9KGtbcT4+Ml18MCkrMjR8MDtrW2E+PjJdPWtbYT4+Ml0mLTY1NTQ4OTtpWyhrW3E+PjJdfDApKzc2Pj4wXT0wO2tbbz4+Ml09a1soa1soa1txPj4yXXwwKSsxNj4+Ml18MCkrKGtbZD4+Ml08PDQpPj4yXTtrW3c+PjJdPWtbKGtbKGtbcT4+Ml18MCkrMTY+PjJdfDApKyhrW2Q+PjJdPDw0KSs0Pj4yXTthPXVLKFpmKGtbdz4+Ml18MCl8MCl8MDtrW2U+PjJdPWE7a1tnPj4yXT1rWyhrW3E+PjJdfDApKzIwPj4yXTthPXZLKGtbcT4+Ml18MCxrW2Y+PjJdfDAsNDA2MDIpfDA7a1t5Pj4yXT1hO2E6ZG8gaWYoKChrW3k+PjJdfDApPT0wPyhrW3Y+PjJdPShrWyhrW3E+PjJdfDApKzE2Pj4yXXwwKSsoa1tnPj4yXTw8NCksa1t4Pj4yXT1rWyhrW3Y+PjJdfDApKzQ+PjJdLFFqKGtbeD4+Ml18MCl8MCxhPXdLKGtbdz4+Ml18MCl8MCxrW3U+PjJdPWEsT2ooa1t4Pj4yXXwwLGtbKGtbKGtbKGtbcT4+Ml18MCkrMTY+PjJdfDApKyhrW2Q+PjJdPDw0KSsxMj4+Ml18MCkrODA+PjJdfDApfDAsYT1rW3g+PjJdfDAsRUMoYSxFQyhrW3c+PjJdfDAsMCl8MCl8MCxlQyhrW3g+PjJdfDAsMzMpfDAsYT12SyhrW3E+PjJdfDAsa1tmPj4yXXwwLDM3NTI3KXwwLGtbeT4+Ml09YSwoa1t5Pj4yXXwwKT09MCk6MCk/KGE9emcoa1t3Pj4yXXwwLDIpfDAsa1t5Pj4yXT1hLChrW3k+PjJdfDApPT0wKTowKXtpZigoRGcoWmYoa1t3Pj4yXXwwKXwwKXwwKT09NSlrWyhrW3E+PjJdfDApKzgwPj4yXT0wO2M9a1t4Pj4yXXwwO2E9Q2coa1t3Pj4yXXwwKXwwO2RvIGlmKCEoTWkoYyxhLGtbdT4+Ml18MCwwKXwwKSl7aWYoKGtbZT4+Ml18MCk9PTA/KE1pKGtbeD4+Ml18MCxrWyhrW3E+PjJdfDApKzgwPj4yXXwwLGtbdT4+Ml18MCwwKXwwKSE9MDowKWJyZWFrO2lmKCEobFsoa1txPj4yXXwwKSs2OT4+MF18MCkpe2Q9a1t4Pj4yXXwwO2lmKChpWyhrW3E+PjJdfDApKzcyPj4wXXwwKT49MCliPWlbKGtbcT4+Ml18MCkrNzI+PjBdfDA7ZWxzZSBiPUJDKGtbdz4+Ml18MCl8MDtEQyhkLGIpfDA7aVsoa1txPj4yXXwwKSsxNDgrND4+MF09a1tnPj4yXTthPWtbcT4+Ml18MDtnPWtbZj4+Ml18MDtrW2g+PjJdPWtbbz4+Ml07aD14SyhhLGcsNDA2MjMsaCl8MDtrW3k+PjJdPWg7aWYoa1t5Pj4yXXwwKWJyZWFrIGE7Zz1rW3E+PjJdfDA7aD1rW2Y+PjJdfDA7a1tqPj4yXT1rW28+PjJdO2o9eEsoZyxoLDQwNzMxLGopfDA7a1t5Pj4yXT1qO2lmKGtbeT4+Ml18MClicmVhayBhO2lbKGtbcT4+Ml18MCkrMTQ4KzQ+PjBdPTA7aD1rW3E+PjJdfDA7aj1rW2Y+PjJdfDA7a1ttPj4yXT1rW28+PjJdO209eEsoaCxqLDQwODA0LG0pfDA7a1t5Pj4yXT1tO209KGtbcT4+Ml18MCkrMjR8MDtrW20+PjJdPWtbbT4+Ml0mLTI2ODQzNTQ1NztpZihrW3k+PjJdfDApYnJlYWsgYTtqPWtbcT4+Ml18MDttPWtbZj4+Ml18MDtrW24+PjJdPWtbbz4+Ml07bz14SyhqLG0sNDA5NTUsbil8MDtrW3k+PjJdPW87aWYoa1t5Pj4yXXwwKWJyZWFrIGE7a1tzPj4yXT0wO3doaWxlKDEpe2Q9a1t3Pj4yXXwwO2lmKChrW3M+PjJdfDApPj0xMClicmVhaztCZyhkLGxbNDEwODUrKGtbcz4+Ml18MCk+PjBdfDAsdCk7bz1MZyhrW3g+PjJdfDAsbFs0MTA4NSsoa1tzPj4yXXwwKT4+MF18MCwoa1t0Pj4yXXwwKSsobFs0MTA4NSsoKGtbcz4+Ml18MCkrMSk+PjBdfDApfDApfDA7a1t5Pj4yXT1vO2lmKGtbeT4+Ml18MClicmVhayBhO2tbcz4+Ml09KGtbcz4+Ml18MCkrMn10PXlLKGQsa1t4Pj4yXXwwKXwwO2tbeT4+Ml09dDtpZihrW3k+PjJdfDApYnJlYWsgYTt0PVFqKGtbeD4+Ml18MCl8MDtrW3k+PjJdPXQ7aWYoa1t5Pj4yXXwwKWJyZWFrIGE7dD1rW3c+PjJdfDA7REModCxCQyhrW3g+PjJdfDApfDApfDA7dD1rW3c+PjJdfDA7eD1DZyhrW3g+PjJdfDApfDA7eD1NaSh0LHgsa1t1Pj4yXXwwLDEpfDA7a1t5Pj4yXT14O2JyZWFrIGF9fXdoaWxlKDApO2tbeT4+Ml09N313aGlsZSgwKTtpWyhrW3E+PjJdfDApKzE0OCs0Pj4wXT0wO2tbKGtbcT4+Ml18MCkrMjQ+PjJdPWtbej4+Ml07a1soa1txPj4yXXwwKSs4OD4+Ml09a1tCPj4yXTtrWyhrW3E+PjJdfDApKzkyPj4yXT1rW0M+PjJdO2lbKGtbcT4+Ml18MCkrNzY+PjBdPWlbQT4+MF18MDtNaShrW3c+PjJdfDAsLTEsLTEsMSl8MDtpWyhrW3E+PjJdfDApKzY3Pj4wXT0xO2lmKGtbdj4+Ml18MCl7VkIoa1soa1t2Pj4yXXwwKSs0Pj4yXXwwKXwwO2tbKGtbdj4+Ml18MCkrND4+Ml09MDtrWyhrW3Y+PjJdfDApKzEyPj4yXT0wfU1nKGtbcT4+Ml18MCk7a1twPj4yXT1rW3k+PjJdO0M9a1twPj4yXXwwO3I9RDtyZXR1cm4gQ3wwfWZ1bmN0aW9uIFdKKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTA7Zz1yO3I9ciszMnwwO2g9ZysyMHwwO2Y9ZysxNnwwO2U9ZysxMnwwO2Q9Zys4fDA7Yz1nKzR8MDtiPWc7a1toPj4yXT1hO2tbZT4+Ml09a1soa1toPj4yXXwwKSs0Pj4yXTt3ZyhrW2g+PjJdfDApO2lmKCEoaVsoa1tlPj4yXXwwKSsxNz4+MF18MCkpe2tbZj4+Ml09MTAxO2g9a1tmPj4yXXwwO3I9ZztyZXR1cm4gaHwwfWg9VEYoa1tlPj4yXXwwKXwwO2tbZD4+Ml09aDtoPXFyKChrWyhrWyhrW2U+PjJdfDApKzEyPj4yXXwwKSs1Nj4+Ml18MCkrMzZ8MCl8MDtrW2M+PjJdPWg7aD1oSyhrW2U+PjJdfDAsa1tkPj4yXXwwLGtbYz4+Ml18MCl8MDtrW2I+PjJdPWg7aWYoKGtbZD4+Ml18MCk+Pj4wPChrW2I+PjJdfDApPj4+MCl7aD1faig2MTg2Nil8MDtrW2Y+PjJdPWg7aD1rW2Y+PjJdfDA7cj1nO3JldHVybiBofDB9aWYoKGtbYz4+Ml18MCk+Pj4wPD0wKXtrW2Y+PjJdPTEwMTtoPWtbZj4+Ml18MDtyPWc7cmV0dXJuIGh8MH1oPWZJKGtbZT4+Ml18MCwwLDApfDA7a1tmPj4yXT1oO2lmKCEoa1tmPj4yXXwwKSl7aUsoa1tlPj4yXXwwKTtoPWpLKGtbZT4+Ml18MCxrW2I+PjJdfDAsa1tkPj4yXXwwLDApfDA7a1tmPj4yXT1ofWlmKGtbZj4+Ml18MCl7aD1rW2Y+PjJdfDA7cj1nO3JldHVybiBofDB9aD1RZyhrWyhrWyhrW2U+PjJdfDApKzEyPj4yXXwwKSs3Mj4+Ml18MCl8MDtrW2Y+PjJdPWg7cHQoKGtbKGtbKGtbZT4+Ml18MCkrMTI+PjJdfDApKzU2Pj4yXXwwKSsyOHwwLGtbKGtbZT4+Ml18MCkrNDQ+PjJdfDApO2g9a1tmPj4yXXwwO3I9ZztyZXR1cm4gaHwwfWZ1bmN0aW9uIFhKKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTA7aj1yO3I9cisxNnwwO2Q9ais4fDA7ZT1qKzR8MDtmPWorMTN8MDtoPWo7Zz1qKzEyfDA7a1tkPj4yXT1hO2tbZT4+Ml09YjtpW2Y+PjBdPWM7a1toPj4yXT0wO2lmKCEoaVsoa1tkPj4yXXwwKSs5Pj4wXXwwKSl7aD1rW2g+PjJdfDA7cj1qO3JldHVybiBofDB9aVtnPj4wXT0xKyhsW2Y+PjBdfDApO3dnKGtbZD4+Ml18MCk7YT1lSShrW2Q+PjJdfDAsa1tlPj4yXXwwLGlbZz4+MF18MCl8MDtrW2g+PjJdPWE7aWYoa1toPj4yXXwwKXtoPWtbaD4+Ml18MDtyPWo7cmV0dXJuIGh8MH1hPWdLKGtbZD4+Ml18MCxrW2U+PjJdfDAsaVtnPj4wXXwwKXwwO2tbaD4+Ml09YTtoPWtbaD4+Ml18MDtyPWo7cmV0dXJuIGh8MH1mdW5jdGlvbiBZSihhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wLGg9MCxpPTAsaj0wLGw9MDtsPXI7cj1yKzMyfDA7Yz1sKzI0fDA7ZD1sKzIwfDA7ZT1sKzE2fDA7aT1sKzEyfDA7aD1sKzh8MDtmPWwrNHwwO2c9bDtrW2Q+PjJdPWE7a1tlPj4yXT1iO2tbaT4+Ml09MDtpZigoa1soa1tkPj4yXXwwKSszMTY+PjJdfDApPjA/KGtbKGtbZD4+Ml18MCkrMzQwPj4yXXwwKT09MDowKXtrW2M+PjJdPTY7aj1rW2M+PjJdfDA7cj1sO3JldHVybiBqfDB9aWYoIShrW2U+PjJdfDApKXtrW2M+PjJdPTA7aj1rW2M+PjJdfDA7cj1sO3JldHVybiBqfDB9a1toPj4yXT1rW2tbKGtbZT4+Ml18MCkrOD4+Ml0+PjJdO2lmKGtbKGtbaD4+Ml18MCkrNTY+PjJdfDApe2tbZj4+Ml09MDt3aGlsZSgxKXtpZigoa1tmPj4yXXwwKT49KGtbKGtbZD4+Ml18MCkrMzE2Pj4yXXwwKSlicmVhaztpZigoa1soa1soa1tkPj4yXXwwKSszNDA+PjJdfDApKyhrW2Y+PjJdPDwyKT4+Ml18MCk9PShrW2U+PjJdfDApKXtqPTEwO2JyZWFrfWtbZj4+Ml09KGtbZj4+Ml18MCkrMX1pZigoanwwKT09MTApe2tbYz4+Ml09MDtqPWtbYz4+Ml18MDtyPWw7cmV0dXJuIGp8MH1qPWVLKGtbZD4+Ml18MCl8MDtrW2k+PjJdPWo7aWYoKCgoa1tpPj4yXXwwKT09MD8oaj1iY1trWyhrW2g+PjJdfDApKzU2Pj4yXSYyNTVdKGtbKGtbZT4+Ml18MCkrOD4+Ml18MCl8MCxrW2k+PjJdPWosKGtbaT4+Ml18MCk9PTApOjApPyhrW2c+PjJdPShrWyhrW2Q+PjJdfDApKzQzNj4+Ml18MCkrKGtbKGtbZD4+Ml18MCkrNDMyPj4yXXwwKSxmSyhrW2Q+PjJdfDAsa1tlPj4yXXwwKSwoa1tnPj4yXXwwKSE9MCk6MCk/KGtbKGtbaD4+Ml18MCkrODA+PjJdfDApIT0wOjApe2tbKGtbZT4+Ml18MCkrMjA+PjJdPWtbZz4+Ml07aj1nY1trWyhrW2g+PjJdfDApKzgwPj4yXSYyNTVdKGtbKGtbZT4+Ml18MCkrOD4+Ml18MCwoa1tnPj4yXXwwKS0xfDApfDA7a1tpPj4yXT1qfX1rW2M+PjJdPWtbaT4+Ml07aj1rW2M+PjJdfDA7cj1sO3JldHVybiBqfDB9ZnVuY3Rpb24gWkooYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxpPTAsaj0wLGw9MCxtPTAsbj0wLG89MDttPXI7cj1yKzQ4fDA7aj1tO2U9bSszMnwwO249bSsyOHwwO289bSsyNHwwO2Y9bSsyMHwwO2k9bSsxNnwwO2g9bSsxMnwwO2c9bSs4fDA7bD1tKzR8MDtrW2U+PjJdPWE7a1tuPj4yXT1iO2tbbz4+Ml09YztrW2Y+PjJdPWQ7a1tpPj4yXT0wO2M9RGkoa1tlPj4yXXwwLGtbbz4+Ml18MCxrWyhrWyhrW2U+PjJdfDApKzE2Pj4yXXwwKSsoa1tuPj4yXTw8NCk+PjJdfDApfDA7a1toPj4yXT1jO2tbbD4+Ml09a1trWyhrW2g+PjJdfDApKzUyPj4yXT4+Ml07Yz1Daigoa1tlPj4yXXwwKSszMjB8MCxrW2w+PjJdfDApfDA7a1tnPj4yXT1jO2lmKCgoa1tnPj4yXXwwKSE9MD8oa1soa1trW2c+PjJdPj4yXXwwKSs0Pj4yXXwwKSE9MDowKT8oa1soa1trW2c+PjJdPj4yXXwwKSsyMD4+Ml18MCkhPTA6MCl7bz1UeihrW2U+PjJdfDAsa1toPj4yXXwwLGtbZz4+Ml18MCxrWyhrW2tbZz4+Ml0+PjJdfDApKzQ+PjJdfDAsa1tmPj4yXXwwKXwwO2tbaT4+Ml09b31lbHNle289a1tlPj4yXXwwO2tbaj4+Ml09a1tsPj4yXTtvPVFoKG8sMzA2MzEsail8MDtrW2tbZj4+Ml0+PjJdPW87a1tpPj4yXT0xfWlmKGtbaT4+Ml18MCl7bz1rW2k+PjJdfDA7cj1tO3JldHVybiBvfDB9aWYoIShjeShrW2U+PjJdfDAsa1toPj4yXXwwKXwwKSl7bz1rW2k+PjJdfDA7cj1tO3JldHVybiBvfDB9bz1lSyhrW2U+PjJdfDApfDA7a1tpPj4yXT1vO2lmKGtbaT4+Ml18MCl7bz1rW2k+PjJdfDA7cj1tO3JldHVybiBvfDB9bz1rW2U+PjJdfDA7ZksobyxjeShrW2U+PjJdfDAsa1toPj4yXXwwKXwwKTtvPWtbaT4+Ml18MDtyPW07cmV0dXJuIG98MH1mdW5jdGlvbiBfSihhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaT0wLGo9MCxsPTAsbT0wO2o9cjtyPXIrMzJ8MDtkPWorMjh8MDtlPWorMjR8MDtsPWorMjB8MDttPWorMTZ8MDtoPWorMTJ8MDtnPWorOHwwO2Y9ais0fDA7aT1qO2tbZT4+Ml09YTtrW2w+PjJdPWI7a1ttPj4yXT1jO2tbaD4+Ml09MDtjPURpKGtbZT4+Ml18MCxrW20+PjJdfDAsa1soa1soa1tlPj4yXXwwKSsxNj4+Ml18MCkrKGtbbD4+Ml08PDQpPj4yXXwwKXwwO2tbZz4+Ml09YztkbyBpZigoa1tnPj4yXXwwKSE9MD8oa1soa1tnPj4yXXwwKSs1Nj4+Ml18MCkhPTA6MCl7a1tmPj4yXT1rWyhrW2c+PjJdfDApKzU2Pj4yXTt3aGlsZSgxKXtpZighKGtbZj4+Ml18MCkpe2E9ODticmVha31pZigoa1soa1soa1tmPj4yXXwwKSs4Pj4yXXwwKSs0Pj4yXXwwKT4wKXthPTY7YnJlYWt9a1tmPj4yXT1rWyhrW2Y+PjJdfDApKzI0Pj4yXX1pZigoYXwwKT09Nil7a1tkPj4yXT02O209a1tkPj4yXXwwO3I9ajtyZXR1cm4gbXwwfWVsc2UgaWYoKGF8MCk9PTgpe209ZEsoa1tlPj4yXXwwLGtbZz4+Ml18MCl8MDtrW2Y+PjJdPW07a1tpPj4yXT1rWyhrW2tbKGtbZj4+Ml18MCkrND4+Ml0+PjJdfDApKzIwPj4yXTttPWJjW2tbaT4+Ml0mMjU1XShrWyhrW2Y+PjJdfDApKzg+PjJdfDApfDA7a1toPj4yXT1tO2lmKGtbaD4+Ml18MClicmVhaztrWyhrW2Y+PjJdfDApKzg+PjJdPTA7a1soa1tnPj4yXXwwKSs1Nj4+Ml09MDtDdShrW2Y+PjJdfDApO2JyZWFrfX13aGlsZSgwKTtrW2Q+PjJdPWtbaD4+Ml07bT1rW2Q+PjJdfDA7cj1qO3JldHVybiBtfDB9ZnVuY3Rpb24gJEooYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wO2Q9cjtyPXIrMTZ8MDtmPWQrOHwwO2U9ZCs0fDA7Yz1kO2tbZj4+Ml09YTtrW2U+PjJdPWI7d2coa1tmPj4yXXwwKTthPWNLKGtba1soa1tmPj4yXXwwKSs0Pj4yXT4+Ml18MCxrW2U+PjJdfDApfDA7a1tjPj4yXT1hO3I9ZDtyZXR1cm4ga1tjPj4yXXwwfWZ1bmN0aW9uIGFLKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wO2U9cjtyPXIrMTZ8MDtjPWUrNHwwO2Q9ZTtrW2M+PjJdPWE7a1tkPj4yXT1iO2lmKChrW2Q+PjJdfDApPT0zMDgyKXtyPWU7cmV0dXJufWtbZD4+Ml09a1tkPj4yXSYyNTU7aWYoISgoa1tkPj4yXXwwKT09MTR8KGtbZD4+Ml18MCk9PTEwKSl7cj1lO3JldHVybn1iPWJLKGtba1tjPj4yXT4+Ml18MCl8MDtrWyhrW2M+PjJdfDApKzYwPj4yXT1iO3I9ZTtyZXR1cm59ZnVuY3Rpb24gYksoYSl7YT1hfDA7dmFyIGI9MCxjPTA7Yz1yO3I9cisxNnwwO2I9YztrW2I+PjJdPWE7aWYoIShrWyhrW2I+PjJdfDApKzY4Pj4yXXwwKSl7YT0wO3I9YztyZXR1cm4gYXwwfWE9WWJba1soa1tiPj4yXXwwKSs2OD4+Ml0mMjU1XShrW2I+PjJdfDAsMCwwKXwwO3I9YztyZXR1cm4gYXwwfWZ1bmN0aW9uIGNLKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wO2U9cjtyPXIrMTZ8MDtjPWUrNHwwO2Q9ZTtrW2M+PjJdPWE7a1tkPj4yXT1iO2lmKChrW2Q+PjJdfDApPjApa1soa1tjPj4yXXwwKSsxNjQ+PjJdPWtbZD4+Ml07cj1lO3JldHVybiBrWyhrW2M+PjJdfDApKzE2ND4+Ml18MH1mdW5jdGlvbiBkSyhhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wLGg9MCxpPTA7aT1yO3I9ciszMnwwO2M9aSsyMHwwO2Q9aSsxNnwwO2c9aSsxMnwwO2g9aSs4fDA7ZT1pKzR8MDtmPWk7a1tjPj4yXT1hO2tbZD4+Ml09YjtrW2c+PjJdPTA7a1toPj4yXT1rWyhrW2Q+PjJdfDApKzU2Pj4yXTtrWyhrW2Q+PjJdfDApKzU2Pj4yXT0wO3doaWxlKDEpe2lmKCEoa1toPj4yXXwwKSlicmVhaztrW2U+PjJdPWtba1toPj4yXT4+Ml07a1tmPj4yXT1rWyhrW2g+PjJdfDApKzI0Pj4yXTtpZigoa1tlPj4yXXwwKT09KGtbYz4+Ml18MCkpe2tbZz4+Ml09a1toPj4yXTtrWyhrW2Q+PjJdfDApKzU2Pj4yXT1rW2c+PjJdO2tbKGtbZz4+Ml18MCkrMjQ+PjJdPTB9ZWxzZXtrWyhrW2g+PjJdfDApKzI0Pj4yXT1rWyhrW2U+PjJdfDApKzM0ND4+Ml07a1soa1tlPj4yXXwwKSszNDQ+PjJdPWtbaD4+Ml19a1toPj4yXT1rW2Y+PjJdfXI9aTtyZXR1cm4ga1tnPj4yXXwwfWZ1bmN0aW9uIGVLKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MCxlPTAsZj0wO2Y9cjtyPXIrMzJ8MDtiPWYrMTZ8MDtjPWYrMTJ8MDtkPWYrNHwwO2U9ZjtrW2M+PjJdPWE7a1tmKzg+PjJdPTU7ZG8gaWYoISgoa1soa1tjPj4yXXwwKSszMTY+PjJdfDApJTV8MCkpe2tbZT4+Ml09KGtbKGtbYz4+Ml18MCkrMzE2Pj4yXXwwKSs1PDwyO2U9a1tlPj4yXXwwO2U9Y3goa1tjPj4yXXwwLGtbKGtbYz4+Ml18MCkrMzQwPj4yXXwwLGUsKChlfDApPDApPDwzMT4+MzEpfDA7a1tkPj4yXT1lO2lmKGtbZD4+Ml18MCl7ZT0oa1tkPj4yXXwwKSsoa1soa1tjPj4yXXwwKSszMTY+PjJdPDwyKXwwO2tbZT4+Ml09MDtrW2UrND4+Ml09MDtrW2UrOD4+Ml09MDtrW2UrMTI+PjJdPTA7a1tlKzE2Pj4yXT0wO2tbKGtbYz4+Ml18MCkrMzQwPj4yXT1rW2Q+PjJdO2JyZWFrfWtbYj4+Ml09NztlPWtbYj4+Ml18MDtyPWY7cmV0dXJuIGV8MH13aGlsZSgwKTtrW2I+PjJdPTA7ZT1rW2I+PjJdfDA7cj1mO3JldHVybiBlfDB9ZnVuY3Rpb24gZksoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wO2M9cjtyPXIrMTZ8MDtlPWMrNHwwO2Q9YztrW2U+PjJdPWE7a1tkPj4yXT1iO2E9a1tkPj4yXXwwO2Y9KGtbZT4+Ml18MCkrMzE2fDA7Yj1rW2Y+PjJdfDA7a1tmPj4yXT1iKzE7a1soa1soa1tlPj4yXXwwKSszNDA+PjJdfDApKyhiPDwyKT4+Ml09YTtySShrW2Q+PjJdfDApO3I9YztyZXR1cm59ZnVuY3Rpb24gZ0soYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxtPTAsbj0wLG89MDtvPXI7cj1yKzMyfDA7ZD1vKzIwfDA7ZT1vKzE2fDA7Zj1vKzEyfDA7Zz1vKzI0fDA7aD1vKzh8MDttPW8rNHwwO2o9bztrW2U+PjJdPWE7a1tmPj4yXT1iO2lbZz4+MF09YztrW2g+PjJdPWtbKGtbZT4+Ml18MCkrND4+Ml07a1ttPj4yXT0wO2tbaj4+Ml09a1soa1toPj4yXXwwKSs3Mj4+Ml07d2hpbGUoMSl7aWYoIShrW2o+PjJdfDApKWJyZWFrO2lmKChrWyhrW2o+PjJdfDApKzQ+PjJdfDApPT0oa1tmPj4yXXwwKT8oa1trW2o+PjJdPj4yXXwwKT09KGtbZT4+Ml18MCk6MCl7bj01O2JyZWFrfWtbaj4+Ml09a1soa1tqPj4yXXwwKSsxMj4+Ml19aWYoKG58MCk9PTUpa1ttPj4yXT1rW2o+PjJdO2RvIGlmKCEoa1ttPj4yXXwwKSl7bj11ZygxNiwwKXwwO2tbbT4+Ml09bjtpZihrW20+PjJdfDApe2tbKGtbbT4+Ml18MCkrND4+Ml09a1tmPj4yXTtrW2tbbT4+Ml0+PjJdPWtbZT4+Ml07a1soa1ttPj4yXXwwKSsxMj4+Ml09a1soa1toPj4yXXwwKSs3Mj4+Ml07a1soa1toPj4yXXwwKSs3Mj4+Ml09a1ttPj4yXTticmVha31rW2Q+PjJdPTc7bj1rW2Q+PjJdfDA7cj1vO3JldHVybiBufDB9d2hpbGUoMCk7aWYoKGxbZz4+MF18MHwwKT4obFsoa1ttPj4yXXwwKSs4Pj4wXXwwfDApKWlbKGtbbT4+Ml18MCkrOD4+MF09aVtnPj4wXXwwO2tbZD4+Ml09MDtuPWtbZD4+Ml18MDtyPW87cmV0dXJuIG58MH1mdW5jdGlvbiBoSyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaT0wLGo9MDtmPXI7cj1yKzMyfDA7ZD1mKzIwfDA7Zz1mKzE2fDA7aT1mKzEyfDA7aj1mKzh8MDtoPWYrNHwwO2U9ZjtrW2Q+PjJdPWE7a1tnPj4yXT1iO2tbaT4+Ml09YztrW2o+PjJdPSgoa1soa1tkPj4yXXwwKSszNj4+Ml18MCk+Pj4wKS81fDA7YT0oa1tpPj4yXXwwKS0oa1tnPj4yXXwwKXwwO2E9YSsoZEcoa1tkPj4yXXwwLGtbZz4+Ml18MCl8MCl8MDtrW2g+PjJdPSgoYSsoa1tqPj4yXXwwKXwwKT4+PjApLygoa1tqPj4yXXwwKT4+PjApfDA7a1tlPj4yXT0oa1tnPj4yXXwwKS0oa1tpPj4yXXwwKS0oa1toPj4yXXwwKTtpZigoa1tnPj4yXXwwKT4+PjA+KCgoKGtbMzg0XXwwKT4+PjApLygoa1soa1tkPj4yXXwwKSszMj4+Ml18MCk+Pj4wKXwwKSsxfDApPj4+MD8oa1tlPj4yXXwwKT4+PjA8KCgoKGtbMzg0XXwwKT4+PjApLygoa1soa1tkPj4yXXwwKSszMj4+Ml18MCk+Pj4wKXwwKSsxfDApPj4+MDowKWtbZT4+Ml09KGtbZT4+Ml18MCkrLTE7d2hpbGUoMSl7aj1kRyhrW2Q+PjJdfDAsa1tlPj4yXXwwKXwwO2lmKChqfDApPT0oa1tlPj4yXXwwKSliPTE7ZWxzZSBiPShrW2U+PjJdfDApPT0oKCgoa1szODRdfDApPj4+MCkvKChrWyhrW2Q+PjJdfDApKzMyPj4yXXwwKT4+PjApfDApKzF8MCk7Yz1rW2U+PjJdfDA7aWYoIWIpYnJlYWs7a1tlPj4yXT1jKy0xfXI9ZjtyZXR1cm4gY3wwfWZ1bmN0aW9uIGlLKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MDtjPXI7cj1yKzE2fDA7ZD1jKzR8MDtiPWM7a1tkPj4yXT1hO2tbYj4+Ml09a1soa1tkPj4yXXwwKSs4Pj4yXTt3aGlsZSgxKXtpZighKGtbYj4+Ml18MCkpYnJlYWs7ZD0oa1tiPj4yXXwwKSs2NHwwO2lbZD4+MF09KGxbZD4+MF18MCkmLTU7a1tiPj4yXT1rWyhrW2I+PjJdfDApKzg+PjJdfXI9YztyZXR1cm59ZnVuY3Rpb24gaksoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTAsbT0wLG49MCxvPTAscD0wLHE9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wO3o9cjtyPXIrNjR8MDtlPXorNTJ8MDtmPXorNDh8MDtnPXorNDR8MDtoPXorNDB8MDtqPXorMzZ8MDt0PXorMzJ8MDt4PXorMjh8MDtuPXorNTd8MDtzPXorMjR8MDtvPXorMjB8MDt1PXorMTZ8MDtwPXorMTJ8MDt3PXorOHwwO209eis1NnwwO3E9eis0fDA7dj16O2tbZj4+Ml09YTtrW2c+PjJdPWI7a1toPj4yXT1jO2tbaj4+Ml09ZDthPWRHKGtbZj4+Ml18MCxrW2g+PjJdfDApfDA7ZG8gaWYoKGF8MCkhPShrW2g+PjJdfDApPyhrW2g+PjJdfDApIT0oKCgoa1szODRdfDApPj4+MCkvKChrWyhrW2Y+PjJdfDApKzMyPj4yXXwwKT4+PjApfDApKzF8MCk6MCl7YT1xcigoa1soa1soa1tmPj4yXXwwKSsxMj4+Ml18MCkrNTY+PjJdfDApKzM2fDApfDA7a1t0Pj4yXT1hO2lmKCEoa1t0Pj4yXXwwKSl7a1tlPj4yXT0xMDE7eT1rW2U+PjJdfDA7cj16O3JldHVybiB5fDB9YT1lRyhrW2Y+PjJdfDAsa1toPj4yXXwwLG4scyl8MDtrW3g+PjJdPWE7aWYoa1t4Pj4yXXwwKXtrW2U+PjJdPWtbeD4+Ml07eT1rW2U+PjJdfDA7cj16O3JldHVybiB5fDB9aWYoKGxbbj4+MF18MHwwKT09MSl7eT1faig2MTc1MSl8MDtrW2U+PjJdPXk7eT1rW2U+PjJdfDA7cj16O3JldHVybiB5fDB9aWYoKGxbbj4+MF18MHwwKT09Mil7aWYoa1tqPj4yXXwwKWJyZWFrO3k9a0soa1tmPj4yXXwwLHUsbyxrW2g+PjJdfDAsMSl8MDtrW3g+PjJdPXk7aWYoIShrW3g+PjJdfDApKXtfQihrW3U+PjJdfDApO2JyZWFrfWtbZT4+Ml09a1t4Pj4yXTt5PWtbZT4+Ml18MDtyPXo7cmV0dXJuIHl8MH1pW20+PjBdPTA7a1txPj4yXT0wO3U9Zkcoa1tmPj4yXXwwLGtbaD4+Ml18MCx3LDApfDA7a1t4Pj4yXT11O2lmKGtbeD4+Ml18MCl7a1tlPj4yXT1rW3g+PjJdO3k9a1tlPj4yXXwwO3I9ejtyZXR1cm4geXwwfWlmKCEoa1tqPj4yXXwwKSl7aVttPj4wXT0yO2tbcT4+Ml09a1tnPj4yXX1kb3t1PWtLKGtbZj4+Ml18MCx2LHAsa1txPj4yXXwwLGlbbT4+MF18MCl8MDtrW3g+PjJdPXU7aWYoa1t4Pj4yXXwwKXt5PTE5O2JyZWFrfV9CKGtbdj4+Ml18MCk7aWYoIShrW2o+PjJdfDApKWJyZWFrfXdoaWxlKChrW3A+PjJdfDApPj4+MD4oa1tnPj4yXXwwKT4+PjApO2lmKCh5fDApPT0xOSl7X0Ioa1t3Pj4yXXwwKTtrW2U+PjJdPWtbeD4+Ml07eT1rW2U+PjJdfDA7cj16O3JldHVybiB5fDB9eT1sSyhrW2Y+PjJdfDAsa1t3Pj4yXXwwLGlbbj4+MF18MCxrW3M+PjJdfDAsa1twPj4yXXwwLGtbaj4+Ml18MCl8MDtrW3g+PjJdPXk7X0Ioa1t3Pj4yXXwwKTtpZihrW3g+PjJdfDApe2tbZT4+Ml09a1t4Pj4yXTt5PWtbZT4+Ml18MDtyPXo7cmV0dXJuIHl8MH19d2hpbGUoMCk7aWYoIShrW2o+PjJdfDApKXt3aGlsZSgxKXtrW2g+PjJdPShrW2g+PjJdfDApKy0xO2lmKChrW2g+PjJdfDApPT0oKCgoa1szODRdfDApPj4+MCkvKChrWyhrW2Y+PjJdfDApKzMyPj4yXXwwKT4+PjApfDApKzF8MCkpY29udGludWU7eT1kRyhrW2Y+PjJdfDAsa1toPj4yXXwwKXwwO2lmKCh5fDApIT0oa1toPj4yXXwwKSlicmVha31pWyhrW2Y+PjJdfDApKzE5Pj4wXT0xO2tbKGtbZj4+Ml18MCkrNDQ+PjJdPWtbaD4+Ml19a1tlPj4yXT0wO3k9a1tlPj4yXXwwO3I9ejtyZXR1cm4geXwwfWZ1bmN0aW9uIGtLKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxtPTAsbj0wLG89MCxwPTAscT0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wLEU9MCxGPTAsRz0wLEg9MCxJPTAsSj0wLEs9MCxMPTA7TD1yO3I9cisxMTJ8MDtIPUwrOTZ8MDtqPUwrOTJ8MDttPUwrODh8MDtuPUwrODR8MDtvPUwrODB8MDtwPUwrMTAyfDA7Rj1MKzc2fDA7Sz1MKzcyfDA7Qj1MKzY4fDA7ej1MKzY0fDA7Sj1MKzYwfDA7ST1MKzU2fDA7QT1MKzUyfDA7eT1MKzQ4fDA7Rz1MKzEwMXwwO0M9TCs0NHwwO2c9TCsxMDB8MDtFPUwrNDB8MDt3PUwrMzZ8MDtzPUwrMzJ8MDt4PUwrMjh8MDtxPUwrMjR8MDt2PUwrMjB8MDt1PUwrMTZ8MDt0PUwrMTJ8MDtEPUwrOHwwO2Y9TCs0fDA7aD1MO2tbaj4+Ml09YTtrW20+PjJdPWI7a1tuPj4yXT1jO2tbbz4+Ml09ZDtpW3A+PjBdPWU7a1tKPj4yXT0wO2tbST4+Ml09MDtrW0Y+PjJdPWtbKGtbaj4+Ml18MCkrMTI+PjJdO2I9VEYoa1tqPj4yXXwwKXwwO2tbQT4+Ml09YjtiPXFyKChrWyhrW0Y+PjJdfDApKzU2Pj4yXXwwKSszNnwwKXwwO2tbQj4+Ml09YjtpZigoa1tCPj4yXXwwKT4+PjA+PShrW0E+PjJdfDApPj4+MCl7Sz1faig2Mzc5Myl8MDtrW0g+PjJdPUs7Sz1rW0g+PjJdfDA7cj1MO3JldHVybiBLfDB9YTpkbyBpZigoa1tCPj4yXXwwKT4+PjA+MCl7aVtHPj4wXT0wO2tbQz4+Ml09MDtkbyBpZigobFtwPj4wXXwwKT09MSl7aWYoKGtbbz4+Ml18MCk+Pj4wPD0oa1tBPj4yXXwwKT4+PjApe2I9ZUcoa1tqPj4yXXwwLGtbbz4+Ml18MCxnLDApfDA7a1tLPj4yXT1iO2lmKGtbSz4+Ml18MCl7a1tIPj4yXT1rW0s+PjJdO0s9a1tIPj4yXXwwO3I9TDtyZXR1cm4gS3wwfWVsc2V7aWYoKGxbZz4+MF18MCkhPTIpYnJlYWs7aVtHPj4wXT0xO2JyZWFrfX19ZWxzZSBpZigobFtwPj4wXXwwKT09MilpW0c+PjBdPTE7d2hpbGUoMCk7Yj1RZyhrWyhrW0Y+PjJdfDApKzcyPj4yXXwwKXwwO2tbSz4+Ml09YjtpZihrW0s+PjJdfDApe2tbSD4+Ml09a1tLPj4yXTtLPWtbSD4+Ml18MDtyPUw7cmV0dXJuIEt8MH1wdCgoa1soa1tGPj4yXXwwKSs1Nj4+Ml18MCkrMzZ8MCwoa1tCPj4yXXwwKS0xfDApO2I6d2hpbGUoMSl7a1tJPj4yXT1rW0o+PjJdO2lmKGtbST4+Ml18MCl7Yj1xcihrWyhrW0k+PjJdfDApKzU2Pj4yXXwwKXwwO2tbeT4+Ml09Yn1lbHNle2I9cXIoKGtbKGtbRj4+Ml18MCkrNTY+PjJdfDApKzMyfDApfDA7a1t5Pj4yXT1ifWlmKChrW3k+PjJdfDApPj4+MDw9KGtbQT4+Ml18MCk+Pj4wPyhiPWtbQz4+Ml18MCxrW0M+PjJdPWIrMSxiPj4+MDw9KGtbQj4+Ml18MCk+Pj4wKTowKXtiPXNLKGtbaj4+Ml18MCxrW3k+PjJdfDAsSiwwKXwwO2tbSz4+Ml09Yn1lbHNle2I9X2ooNjM4NDkpfDA7a1tLPj4yXT1ifWlmKGtbSz4+Ml18MCl7Zj0yMzticmVha31iPXFyKChrWyhrW0o+PjJdfDApKzU2Pj4yXXwwKSs0fDApfDA7a1t6Pj4yXT1iO2M6ZG8gaWYoKGtbej4+Ml18MCkhPTB8KGlbRz4+MF18MCkhPTApe2lmKChrW3o+PjJdfDApPj4+MD4oKCgoa1soa1tqPj4yXXwwKSszNj4+Ml18MCk+Pj4wKS80fDApLTJ8MCk+Pj4wKXtmPTI4O2JyZWFrIGJ9ZG8gaWYobFtHPj4wXXwwKXtpZigoa1tvPj4yXXwwKSE9KGtbeT4+Ml18MCkpe2lmKChrW3k+PjJdfDApPj4+MD49KGtbbz4+Ml18MCk+Pj4wKWJyZWFrO2lmKChsW3A+PjBdfDApIT0yKWJyZWFrfWtba1tuPj4yXT4+Ml09a1t5Pj4yXTtrW2tbbT4+Ml0+PjJdPWtbSj4+Ml07aVtHPj4wXT0wO2I9UWcoa1soa1tKPj4yXXwwKSs3Mj4+Ml18MCl8MDtrW0s+PjJdPWI7aWYoa1tLPj4yXXwwKWJyZWFrIGE7ZG8gaWYoIShrW3o+PjJdfDApKXtpZighKGtbST4+Ml18MCkpe2I9KGtbKGtbRj4+Ml18MCkrNTY+PjJdfDApKzMyfDA7Yz1rWyhrW0o+PjJdfDApKzU2Pj4yXXwwO2lbYj4+MF09aVtjPj4wXXwwO2lbYisxPj4wXT1pW2MrMT4+MF18MDtpW2IrMj4+MF09aVtjKzI+PjBdfDA7aVtiKzM+PjBdPWlbYyszPj4wXXwwO2JyZWFrfWI9UWcoa1soa1tJPj4yXXwwKSs3Mj4+Ml18MCl8MDtrW0s+PjJdPWI7aWYoa1tLPj4yXXwwKWJyZWFrIGE7Yj1rWyhrW0k+PjJdfDApKzU2Pj4yXXwwO2M9a1soa1tKPj4yXXwwKSs1Nj4+Ml18MDtpW2I+PjBdPWlbYz4+MF18MDtpW2IrMT4+MF09aVtjKzE+PjBdfDA7aVtiKzI+PjBdPWlbYysyPj4wXXwwO2lbYiszPj4wXT1pW2MrMz4+MF18MH1lbHNle2I9cXIoKGtbKGtbSj4+Ml18MCkrNTY+PjJdfDApKzh8MCl8MDtrW3c+PjJdPWI7aWYoKGtbdz4+Ml18MCk+Pj4wPihrW0E+PjJdfDApPj4+MCl7Zj00MDticmVhayBifWI9c0soa1tqPj4yXXwwLGtbdz4+Ml18MCxFLDApfDA7a1tLPj4yXT1iO2lmKGtbSz4+Ml18MClicmVhayBhO2U9UWcoa1soa1tFPj4yXXwwKSs3Mj4+Ml18MCl8MDtrW0s+PjJdPWU7ZT1rW0U+PjJdfDA7aWYoa1tLPj4yXXwwKXtmPTQzO2JyZWFrIGJ9Yj1rW2UrNTY+PjJdfDA7Yz1rWyhrW0o+PjJdfDApKzU2Pj4yXXwwO2lbYj4+MF09aVtjPj4wXXwwO2lbYisxPj4wXT1pW2MrMT4+MF18MDtpW2IrMj4+MF09aVtjKzI+PjBdfDA7aVtiKzM+PjBdPWlbYyszPj4wXXwwO3B0KChrWyhrW0U+PjJdfDApKzU2Pj4yXXwwKSs0fDAsKGtbej4+Ml18MCktMXwwKTtiUygoa1soa1tFPj4yXXwwKSs1Nj4+Ml18MCkrOHwwLChrWyhrW0o+PjJdfDApKzU2Pj4yXXwwKSsxMnwwLChrW3o+PjJdfDApLTE8PDJ8MCl8MDtfQihrW0U+PjJdfDApO2lmKCEoa1tJPj4yXXwwKSl7cHQoKGtbKGtbRj4+Ml18MCkrNTY+PjJdfDApKzMyfDAsa1t3Pj4yXXwwKTticmVha31iPVFnKGtbKGtbST4+Ml18MCkrNzI+PjJdfDApfDA7a1tLPj4yXT1iO2lmKGtbSz4+Ml18MClicmVhayBhO3B0KGtbKGtbST4+Ml18MCkrNTY+PjJdfDAsa1t3Pj4yXXwwKX13aGlsZSgwKTtrW0o+PjJdPTA7YnJlYWsgY313aGlsZSgwKTtpZigoa1t6Pj4yXXwwKT4+PjA+MCl7a1txPj4yXT1rWyhrW0o+PjJdfDApKzU2Pj4yXTtiPShrW28+PjJdfDApPj4+MD4wO2tbcz4+Ml09MDtkOmRvIGlmKGIpaWYoKGxbcD4+MF18MCk9PTIpe2tbdj4+Ml09MDt3aGlsZSgxKXtpZigoa1t2Pj4yXXwwKT4+PjA+PShrW3o+PjJdfDApPj4+MClicmVhayBkO2Y9cXIoKGtbcT4+Ml18MCkrKDgrKGtbdj4+Ml08PDIpKXwwKXwwO2tbeD4+Ml09ZjtmPWtbdj4+Ml18MDtpZigoa1t4Pj4yXXwwKT4+PjA8PShrW28+PjJdfDApPj4+MClicmVhaztrW3Y+PjJdPWYrMX1rW3M+PjJdPWY7YnJlYWt9ZWxzZXtiPXFyKChrW3E+PjJdfDApKzh8MCl8MDtiPU5qKGItKGtbbz4+Ml18MCl8MCl8MDtrW3U+PjJdPWI7a1t2Pj4yXT0xO3doaWxlKDEpe2lmKChrW3Y+PjJdfDApPj4+MD49KGtbej4+Ml18MCk+Pj4wKWJyZWFrIGQ7Yj1xcigoa1txPj4yXXwwKSsoOCsoa1t2Pj4yXTw8MikpfDApfDA7Yj1OaihiLShrW28+PjJdfDApfDApfDA7a1t0Pj4yXT1iO2lmKChrW3Q+PjJdfDApPChrW3U+PjJdfDApKXtrW3M+PjJdPWtbdj4+Ml07a1t1Pj4yXT1rW3Q+PjJdfWtbdj4+Ml09KGtbdj4+Ml18MCkrMX19d2hpbGUoMCk7Yj1xcigoa1txPj4yXXwwKSsoOCsoa1tzPj4yXTw8MikpfDApfDA7a1t4Pj4yXT1iO2lmKChrW3g+PjJdfDApPj4+MD4oa1tBPj4yXXwwKT4+PjApe2Y9NjM7YnJlYWsgYn1pZigoaVtHPj4wXXwwKSE9MD8oa1t4Pj4yXXwwKSE9KGtbbz4+Ml18MCk6MCl7aWYoKGtbeD4+Ml18MCk+Pj4wPj0oa1tvPj4yXXwwKT4+PjApYnJlYWs7aWYoKGxbcD4+MF18MCkhPTIpYnJlYWt9a1trW24+PjJdPj4yXT1rW3g+PjJdO2I9UWcoa1soa1tKPj4yXXwwKSs3Mj4+Ml18MCl8MDtrW0s+PjJdPWI7aWYoa1tLPj4yXXwwKWJyZWFrIGE7aWYoKGtbcz4+Ml18MCk+Pj4wPCgoa1t6Pj4yXXwwKS0xfDApPj4+MCl7Yj0oa1txPj4yXXwwKSsoOCsoa1tzPj4yXTw8MikpfDA7Yz0oa1txPj4yXXwwKSsoNCsoa1t6Pj4yXTw8MikpfDA7aVtiPj4wXT1pW2M+PjBdfDA7aVtiKzE+PjBdPWlbYysxPj4wXXwwO2lbYisyPj4wXT1pW2MrMj4+MF18MDtpW2IrMz4+MF09aVtjKzM+PjBdfDB9cHQoKGtbcT4+Ml18MCkrNHwwLChrW3o+PjJdfDApLTF8MCk7Yj0odEsoa1tqPj4yXXwwLGtba1tuPj4yXT4+Ml18MCl8MCkhPTBeMTtrW0Q+PjJdPWI/MTowO2I9c0soa1tqPj4yXXwwLGtba1tuPj4yXT4+Ml18MCxrW20+PjJdfDAsa1tEPj4yXXwwKXwwO2tbSz4+Ml09YjtkbyBpZighKGtbSz4+Ml18MCkpe2I9UWcoa1soa1trW20+PjJdPj4yXXwwKSs3Mj4+Ml18MCl8MDtrW0s+PjJdPWI7aWYoIShrW0s+PjJdfDApKWJyZWFrO19CKGtba1ttPj4yXT4+Ml18MCk7a1trW20+PjJdPj4yXT0wfXdoaWxlKDApO2lbRz4+MF09MH19ZWxzZXtiPVFnKGtbKGtbSj4+Ml18MCkrNzI+PjJdfDApfDA7a1tLPj4yXT1iO2lmKGtbSz4+Ml18MClicmVhayBhO2tba1tuPj4yXT4+Ml09a1t5Pj4yXTtiPShrWyhrW0Y+PjJdfDApKzU2Pj4yXXwwKSszMnwwO2M9a1soa1tKPj4yXXwwKSs1Nj4+Ml18MDtpW2I+PjBdPWlbYz4+MF18MDtpW2IrMT4+MF09aVtjKzE+PjBdfDA7aVtiKzI+PjBdPWlbYysyPj4wXXwwO2lbYiszPj4wXT1pW2MrMz4+MF18MDtrW2tbbT4+Ml0+PjJdPWtbSj4+Ml07a1tKPj4yXT0wfXdoaWxlKDApO19CKGtbST4+Ml18MCk7a1tJPj4yXT0wO2lmKCEoaVtHPj4wXXwwKSlicmVhayBhfWlmKChmfDApPT0yMyl7a1tKPj4yXT0wO2JyZWFrfWVsc2UgaWYoKGZ8MCk9PTI4KXtHPV9qKDYzODc4KXwwO2tbSz4+Ml09RzticmVha31lbHNlIGlmKChmfDApPT00MCl7Rz1faig2MzkxMil8MDtrW0s+PjJdPUc7YnJlYWt9ZWxzZSBpZigoZnwwKT09NDMpe19CKGUpO2JyZWFrfWVsc2UgaWYoKGZ8MCk9PTYzKXtHPV9qKDYzOTc3KXwwO2tbSz4+Ml09RzticmVha319ZWxzZXtrW2Y+PjJdPTA9PShsWyhrW2o+PjJdfDApKzE5Pj4wXXwwKT8xOjA7Rz1RZyhrWyhrWyhrW2o+PjJdfDApKzEyPj4yXXwwKSs3Mj4+Ml18MCl8MDtrW0s+PjJdPUc7aWYoa1tLPj4yXXwwKXtrW0g+PjJdPWtbSz4+Ml07Sz1rW0g+PjJdfDA7cj1MO3JldHVybiBLfDB9Rz0oa1tqPj4yXXwwKSs0NHwwO2tbRz4+Ml09KGtbRz4+Ml18MCkrMTtpZigoa1soa1tqPj4yXXwwKSs0ND4+Ml18MCk9PSgoKChrWzM4NF18MCk+Pj4wKS8oKGtbKGtbaj4+Ml18MCkrMzI+PjJdfDApPj4+MCl8MCkrMXwwKSl7Rz0oa1tqPj4yXXwwKSs0NHwwO2tbRz4+Ml09KGtbRz4+Ml18MCkrMX1kbyBpZigobFsoa1tqPj4yXXwwKSsxNz4+MF18MCkhPTA/KEc9ZEcoa1tqPj4yXXwwLGtbKGtbaj4+Ml18MCkrNDQ+PjJdfDApfDAsKEd8MCk9PShrWyhrW2o+PjJdfDApKzQ0Pj4yXXwwKSk6MCl7a1toPj4yXT0wO0c9c0soa1tqPj4yXXwwLGtbKGtbaj4+Ml18MCkrNDQ+PjJdfDAsaCxrW2Y+PjJdfDApfDA7a1tLPj4yXT1HO2lmKCEoa1tLPj4yXXwwKSl7Rz1RZyhrWyhrW2g+PjJdfDApKzcyPj4yXXwwKXwwO2tbSz4+Ml09RztfQihrW2g+PjJdfDApfWlmKGtbSz4+Ml18MCl7a1tIPj4yXT1rW0s+PjJdO0s9a1tIPj4yXXwwO3I9TDtyZXR1cm4gS3wwfWVsc2V7Rz0oa1tqPj4yXXwwKSs0NHwwO2tbRz4+Ml09KGtbRz4+Ml18MCkrMTtpZigoa1soa1tqPj4yXXwwKSs0ND4+Ml18MCkhPSgoKChrWzM4NF18MCk+Pj4wKS8oKGtbKGtbaj4+Ml18MCkrMzI+PjJdfDApPj4+MCl8MCkrMXwwKSlicmVhaztHPShrW2o+PjJdfDApKzQ0fDA7a1tHPj4yXT0oa1tHPj4yXXwwKSsxO2JyZWFrfX13aGlsZSgwKTtwdCgoa1soa1soa1tqPj4yXXwwKSsxMj4+Ml18MCkrNTY+PjJdfDApKzI4fDAsa1soa1tqPj4yXXwwKSs0ND4+Ml18MCk7a1trW24+PjJdPj4yXT1rWyhrW2o+PjJdfDApKzQ0Pj4yXTtHPXNLKGtbaj4+Ml18MCxrW2tbbj4+Ml0+PjJdfDAsa1ttPj4yXXwwLGtbZj4+Ml18MCl8MDtrW0s+PjJdPUc7aWYoa1tLPj4yXXwwKXtrW0g+PjJdPWtbSz4+Ml07Sz1rW0g+PjJdfDA7cj1MO3JldHVybiBLfDB9ZWxzZXtHPVFnKGtbKGtba1ttPj4yXT4+Ml18MCkrNzI+PjJdfDApfDA7a1tLPj4yXT1HO2lmKCEoa1tLPj4yXXwwKSlicmVhaztfQihrW2tbbT4+Ml0+PjJdfDApO2tba1ttPj4yXT4+Ml09MDticmVha319d2hpbGUoMCk7X0Ioa1tKPj4yXXwwKTtfQihrW0k+PjJdfDApO2tbSD4+Ml09a1tLPj4yXTtLPWtbSD4+Ml18MDtyPUw7cmV0dXJuIEt8MH1mdW5jdGlvbiBsSyhhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLG09MCxuPTAsbz0wLHA9MCxxPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTA7dj1yO3I9cis0OHwwO209dis0MHwwO249diszNnwwO2c9diszMnwwO289dis0NHwwO3A9disyOHwwO3E9disyNHwwO3c9disyMHwwO3Q9disxNnwwO3M9disxMnwwO3g9dis4fDA7dT12KzR8MDtoPXY7a1tuPj4yXT1hO2tbZz4+Ml09YjtpW28+PjBdPWM7a1twPj4yXT1kO2tbcT4+Ml09ZTtrW3c+PjJdPWY7a1tzPj4yXT1rWyhrW2c+PjJdfDApKzg0Pj4yXTtrW3g+PjJdPWtba1tuPj4yXT4+Ml07Yj1tSyhrW3g+PjJdfDAsa1soa1tnPj4yXXwwKSs3Mj4+Ml18MCxrW3E+PjJdfDAsa1t3Pj4yXXwwKXwwO2tbdT4+Ml09YjtpZihrW3U+PjJdfDApe2tbbT4+Ml09a1t1Pj4yXTt4PWtbbT4+Ml18MDtyPXY7cmV0dXJuIHh8MH1rWyhrW2c+PjJdfDApKzg0Pj4yXT1rW3E+PjJdO2lmKChsW28+PjBdfDB8MCkhPTU/KGxbbz4+MF18MHwwKSE9MTowKXt4PXFyKGtbKGtbZz4+Ml18MCkrNTY+PjJdfDApfDA7a1toPj4yXT14O2lmKChrW2g+PjJdfDApIT0wPyhvSyhrW24+PjJdfDAsa1toPj4yXXwwLDQsa1txPj4yXXwwLHUpLChrW3U+PjJdfDApIT0wKTowKXtrW20+PjJdPWtbdT4+Ml07eD1rW20+PjJdfDA7cj12O3JldHVybiB4fDB9fWVsc2Ugaj01O2lmKChqfDApPT01Pyh4PW5LKGtbZz4+Ml18MCl8MCxrW3U+PjJdPXgsKGtbdT4+Ml18MCkhPTApOjApe2tbbT4+Ml09a1t1Pj4yXTt4PWtbbT4+Ml18MDtyPXY7cmV0dXJuIHh8MH1kbyBpZigobFtvPj4wXXwwfDApIT0xKXt4PWZHKGtbbj4+Ml18MCxrW3A+PjJdfDAsdCwwKXwwO2tbdT4+Ml09eDtpZihrW3U+PjJdfDApe2tbbT4+Ml09a1t1Pj4yXTt4PWtbbT4+Ml18MDtyPXY7cmV0dXJuIHh8MH1nPVFnKGtbKGtbdD4+Ml18MCkrNzI+PjJdfDApfDA7a1t1Pj4yXT1nO2c9a1t0Pj4yXXwwO2lmKGtbdT4+Ml18MCl7X0IoZyk7a1ttPj4yXT1rW3U+PjJdO3g9a1ttPj4yXXwwO3I9djtyZXR1cm4geHwwfWVsc2V7eD1wSyhnLGtbcz4+Ml18MCxrW3E+PjJdfDAsaVtvPj4wXXwwKXwwO2tbdT4+Ml09eDtfQihrW3Q+PjJdfDApO2lmKGtbdT4+Ml18MClicmVhaztvSyhrW24+PjJdfDAsa1txPj4yXXwwLGlbbz4+MF18MCxrW3A+PjJdfDAsdSk7YnJlYWt9fXdoaWxlKDApO2tbbT4+Ml09a1t1Pj4yXTt4PWtbbT4+Ml18MDtyPXY7cmV0dXJuIHh8MH1mdW5jdGlvbiBtSyhhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLG49MCxvPTAscD0wLHE9MCxzPTAsdD0wLHU9MDt1PXI7cj1yKzQ4fDA7Zj11KzM2fDA7Zz11KzMyfDA7aD11KzI4fDA7bj11KzI0fDA7ZT11KzIwfDA7cz11KzE2fDA7bz11KzEyfDA7dD11Kzh8MDtwPXUrNHwwO3E9dTtrW2c+PjJdPWE7a1toPj4yXT1iO2tbbj4+Ml09YztrW2U+PjJdPWQ7a1tvPj4yXT0wO2lmKChpWyhrW2c+PjJdfDApKzEzPj4wXXwwKSE9MD8oYz1RZyhrW2g+PjJdfDApfDAsa1t0Pj4yXT1jLChrW3Q+PjJdfDApIT0wKTowKXtrW2Y+PjJdPWtbdD4+Ml07dD1rW2Y+PjJdfDA7cj11O3JldHVybiB0fDB9aWYoKG1bKGtbaD4+Ml18MCkrMjQ+PjFdJjJ8MCkhPTA/KGM9R3Qoa1toPj4yXXwwKXwwLGtbdD4+Ml09YywwIT0oY3wwKSk6MCl7a1tmPj4yXT1rW3Q+PjJdO3Q9a1tmPj4yXXwwO3I9dTtyZXR1cm4gdHwwfWlmKCEoKGtbZT4+Ml18MCkhPTA/MToobVsoa1toPj4yXXwwKSsyND4+MV0mOHwwKT09MCkpa1tvPj4yXT1rWyhrW2g+PjJdfDApKzIwPj4yXTtjPShrW2g+PjJdfDApKzI0fDA7altjPj4xXT1tW2M+PjFdJi05O2M9cnMoa1tnPj4yXXwwLGtbbj4+Ml18MCl8MDtrW3M+PjJdPWM7ZG8gaWYoa1tzPj4yXXwwKXtlPShrW2g+PjJdfDApKzI0fDA7altlPj4xXT1tW2U+PjFdfG1bKGtbcz4+Ml18MCkrMjQ+PjFdJjg7ZT1rW3M+PjJdfDA7aWYoaVsoa1tnPj4yXXwwKSsxMz4+MF18MCl7cksoZSwoa1soa1tnPj4yXXwwKSsyOD4+Ml18MCkrMXwwKTticmVha31lbHNle1FzKGUpO2JyZWFrfX13aGlsZSgwKTtrW3A+PjJdPWtbKGtbaD4+Ml18MCkrMjA+PjJdO3JLKGtbaD4+Ml18MCxrW24+PjJdfDApO3RzKGtbaD4+Ml18MCk7aWYoKGtbcz4+Ml18MCkhPTA/KGxbKGtbZz4+Ml18MCkrMTM+PjBdfDApIT0wOjApe3JLKGtbcz4+Ml18MCxrW3A+PjJdfDApO1RzKGtbcz4+Ml18MCl9ZG8gaWYoa1tvPj4yXXwwKXtzPUZnKGtbZz4+Ml18MCxrW28+PjJdfDAscSwwKXwwO2tbdD4+Ml09cztpZighKGtbdD4+Ml18MCkpe3Q9KGtbcT4+Ml18MCkrMjR8MDtqW3Q+PjFdPW1bdD4+MV18ODt0cyhrW3E+PjJdfDApO1RzKGtbcT4+Ml18MCk7YnJlYWt9aWYoKGtbbz4+Ml18MCk+Pj4wPD0oa1soa1tnPj4yXXwwKSszMj4+Ml18MCk+Pj4wKXdqKGtbKGtbZz4+Ml18MCkrNjA+PjJdfDAsa1tvPj4yXXwwLGtbKGtbZz4+Ml18MCkrMjA4Pj4yXXwwKTtrW2Y+PjJdPWtbdD4+Ml07dD1rW2Y+PjJdfDA7cj11O3JldHVybiB0fDB9d2hpbGUoMCk7a1tmPj4yXT0wO3Q9a1tmPj4yXXwwO3I9dTtyZXR1cm4gdHwwfWZ1bmN0aW9uIG5LKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLG49MCxvPTAscD0wO3A9cjtyPXIrNDh8MDtiPXArMzJ8MDtlPXArMjh8MDtnPXArMjR8MDtvPXArMjB8MDtoPXArMTZ8MDtmPXArMzZ8MDtuPXArMTJ8MDtqPXArOHwwO2M9cCs0fDA7ZD1wO2tbYj4+Ml09YTtrW2g+PjJdPWtbKGtbYj4+Ml18MCkrNTI+PjJdO2lbZj4+MF09aVtrW2I+PjJdPj4wXXwwO2tbbj4+Ml09a1soa1tiPj4yXXwwKSs4ND4+Ml07YT1ldShrW2I+PjJdfDApfDA7a1tvPj4yXT1hO2lmKGtbbz4+Ml18MCl7aj1pW2Y+PjBdfDA7bj1rW2I+PjJdfDA7aVtuPj4wXT1qO289a1tvPj4yXXwwO3I9cDtyZXR1cm4gb3wwfWtbZz4+Ml09bVsoa1tiPj4yXXwwKSsxOD4+MV07a1tlPj4yXT0wO3doaWxlKDEpe2E9a1tiPj4yXXwwO2lmKChrW2U+PjJdfDApPj0oa1tnPj4yXXwwKSlicmVhaztrW2o+PjJdPShrW2ErNTY+PjJdfDApKyhtWyhrW2I+PjJdfDApKzIwPj4xXSYobFsoa1soa1tiPj4yXXwwKSs2ND4+Ml18MCkrKGtbZT4+Ml08PDEpPj4wXTw8OHxsWyhrWyhrW2I+PjJdfDApKzY0Pj4yXXwwKSsoa1tlPj4yXTw8MSkrMT4+MF0pKTtxSyhrW2I+PjJdfDAsa1tqPj4yXXwwLG8pO2lmKCEoaVsoa1tiPj4yXXwwKSs0Pj4wXXwwKSl7YT1xcihrW2o+PjJdfDApfDA7a1tjPj4yXT1hO29LKGtbaD4+Ml18MCxrW2M+PjJdfDAsNSxrW24+PjJdfDAsbyl9a1tlPj4yXT0oa1tlPj4yXXwwKSsxfWlmKGlbYSs0Pj4wXXwwKXtqPWlbZj4+MF18MDtuPWtbYj4+Ml18MDtpW24+PjBdPWo7bz1rW28+PjJdfDA7cj1wO3JldHVybiBvfDB9aj1xcigoa1soa1tiPj4yXXwwKSs1Nj4+Ml18MCkrKChsWyhrW2I+PjJdfDApKzU+PjBdfDApKzgpfDApfDA7a1tkPj4yXT1qO29LKGtbaD4+Ml18MCxrW2Q+PjJdfDAsNSxrW24+PjJdfDAsbyk7aj1pW2Y+PjBdfDA7bj1rW2I+PjJdfDA7aVtuPj4wXT1qO289a1tvPj4yXXwwO3I9cDtyZXR1cm4gb3wwfWZ1bmN0aW9uIG9LKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxtPTAsbj0wLG89MCxwPTAscT0wLHM9MCx0PTA7dD1yO3I9cis0OHwwO2Y9dCszMnwwO2c9dCsyOHwwO2g9dCszNnwwO2o9dCsyNHwwO209dCsyMHwwO3A9dCsxNnwwO3E9dCsxMnwwO249dCs4fDA7bz10KzR8MDtzPXQ7a1tmPj4yXT1hO2tbZz4+Ml09YjtpW2g+PjBdPWM7a1tqPj4yXT1kO2tbbT4+Ml09ZTtpZihrW2tbbT4+Ml0+PjJdfDApe3I9dDtyZXR1cm59aWYoIShrW2c+PjJdfDApKXtzPV9qKDU5MTg0KXwwO2tba1ttPj4yXT4+Ml09cztyPXQ7cmV0dXJufWQ9ZEcoa1tmPj4yXXwwLGtbZz4+Ml18MCl8MDtrW24+PjJdPWQ7ZD1GZyhrW2tbZj4+Ml0+PjJdfDAsa1tuPj4yXXwwLHAsMCl8MDtrW3M+PjJdPWQ7aWYoa1tzPj4yXXwwKXtrW2tbbT4+Ml0+PjJdPWtbcz4+Ml07cj10O3JldHVybn1rW28+PjJdPSgoa1tnPj4yXXwwKS0oa1tuPj4yXXwwKS0xfDApKjU7ZG8gaWYoKGtbbz4+Ml18MCk+PTApe2Q9R2coa1twPj4yXXwwKXwwO2tbcT4+Ml09ZDtpZigobFtoPj4wXXwwfDApPT0obFsoa1txPj4yXXwwKSsoa1tvPj4yXXwwKT4+MF18MHwwKT8oZD1xcigoa1txPj4yXXwwKSsoKGtbbz4+Ml18MCkrMSl8MCl8MCwoZHwwKT09KGtbaj4+Ml18MCkpOjApYnJlYWs7ZD1RZyhrW3A+PjJdfDApfDA7a1tzPj4yXT1kO2tba1ttPj4yXT4+Ml09ZDtpZighKGtbcz4+Ml18MCkpe2lbKGtbcT4+Ml18MCkrKGtbbz4+Ml18MCk+PjBdPWlbaD4+MF18MDtwdCgoa1txPj4yXXwwKSsoKGtbbz4+Ml18MCkrMSl8MCxrW2o+PjJdfDApfX1lbHNle3M9X2ooNTkxOTUpfDA7a1trW20+PjJdPj4yXT1zfXdoaWxlKDApO0lnKGtbcD4+Ml18MCk7cj10O3JldHVybn1mdW5jdGlvbiBwSyhhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MCxuPTAsbz0wLHA9MCxxPTAscz0wLHQ9MCx1PTAsdj0wO3Y9cjtyPXIrNjR8MDtlPXYrNTJ8MDtmPXYrNDh8MDtnPXYrNDR8MDtoPXYrNDB8MDtqPXYrNTd8MDtwPXYrNTZ8MDtuPXYrMzZ8MDtxPXYrMzJ8MDt0PXYrMjh8MDtzPXYrMjR8MDtvPXY7a1tmPj4yXT1hO2tbZz4+Ml09YjtrW2g+PjJdPWM7aVtqPj4wXT1kO2Q9a1tmPj4yXXwwO2RvIGlmKChsW2o+PjBdfDB8MCk9PTQpe3U9cXIoa1tkKzU2Pj4yXXwwKXwwO2lmKCh1fDApPT0oa1tnPj4yXXwwKSl7cHQoa1soa1tmPj4yXXwwKSs1Nj4+Ml18MCxrW2g+PjJdfDApO2JyZWFrfXU9X2ooNjE1ODEpfDA7a1tlPj4yXT11O3U9a1tlPj4yXXwwO3I9djtyZXR1cm4gdXwwfWVsc2V7aVtwPj4wXT1pW2Q+PjBdfDA7YT1ldShrW2Y+PjJdfDApfDA7a1t0Pj4yXT1hO2lmKGtbdD4+Ml18MCl7a1tlPj4yXT1rW3Q+PjJdO3U9a1tlPj4yXXwwO3I9djtyZXR1cm4gdXwwfWtbcT4+Ml09bVsoa1tmPj4yXXwwKSsxOD4+MV07a1tuPj4yXT0wO3doaWxlKDEpe2lmKChrW24+PjJdfDApPj0oa1txPj4yXXwwKSlicmVhaztrW3M+PjJdPShrWyhrW2Y+PjJdfDApKzU2Pj4yXXwwKSsoKG1bKGtbZj4+Ml18MCkrMjA+PjFdfDApJigobFsoa1soa1tmPj4yXXwwKSs2ND4+Ml18MCkrKGtbbj4+Ml08PDEpPj4wXXwwKTw8OHwobFsoa1soa1tmPj4yXXwwKSs2ND4+Ml18MCkrKGtbbj4+Ml08PDEpKzE+PjBdfDApKSk7aWYoKGxbaj4+MF18MHwwKT09Myl7Y2Nba1soa1tmPj4yXXwwKSs4MD4+Ml0mMjU1XShrW2Y+PjJdfDAsa1tzPj4yXXwwLG8pO2lmKCgobVtvKzE2Pj4xXXwwKT4+PjA8KGtbbysxMj4+Ml18MCk+Pj4wPygoa1tzPj4yXXwwKSsobVtvKzE4Pj4xXXwwKSstMXwwKT4+PjA8PSgoa1soa1tmPj4yXXwwKSs1Nj4+Ml18MCkrKG1bKGtbZj4+Ml18MCkrMjA+PjFdfDApfDApPj4+MDowKT8odD1rW2c+PjJdfDAsKHR8MCk9PShxcigoa1tzPj4yXXwwKSsobVtvKzE4Pj4xXXwwKSstNHwwKXwwKSk6MCl7dT0xMzticmVha319ZWxzZXt0PXFyKGtbcz4+Ml18MCl8MDtpZigodHwwKT09KGtbZz4+Ml18MCkpe3U9MTU7YnJlYWt9fWtbbj4+Ml09KGtbbj4+Ml18MCkrMX1pZigodXwwKT09MTMpcHQoKGtbcz4+Ml18MCkrKG1bbysxOD4+MV18MCkrLTR8MCxrW2g+PjJdfDApO2Vsc2UgaWYoKHV8MCk9PTE1KXB0KGtbcz4+Ml18MCxrW2g+PjJdfDApO2RvIGlmKChrW24+PjJdfDApPT0oa1txPj4yXXwwKSl7aWYoKGxbaj4+MF18MHwwKT09NT8odT1xcigoa1soa1tmPj4yXXwwKSs1Nj4+Ml18MCkrKChsWyhrW2Y+PjJdfDApKzU+PjBdfDApKzgpfDApfDAsKHV8MCk9PShrW2c+PjJdfDApKTowKXtwdCgoa1soa1tmPj4yXXwwKSs1Nj4+Ml18MCkrKChsWyhrW2Y+PjJdfDApKzU+PjBdfDApKzgpfDAsa1toPj4yXXwwKTticmVha311PV9qKDYxNjE3KXwwO2tbZT4+Ml09dTt1PWtbZT4+Ml18MDtyPXY7cmV0dXJuIHV8MH13aGlsZSgwKTtpW2tbZj4+Ml0+PjBdPWlbcD4+MF18MH13aGlsZSgwKTtrW2U+PjJdPTA7dT1rW2U+PjJdfDA7cj12O3JldHVybiB1fDB9ZnVuY3Rpb24gcUsoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGk9MDtpPXI7cj1yKzQ4fDA7ZD1pKzM2fDA7ZT1pKzMyfDA7Zj1pKzI4fDA7Zz1pO2g9aSsyNHwwO2tbZD4+Ml09YTtrW2U+PjJdPWI7a1tmPj4yXT1jO2lmKGtba1tmPj4yXT4+Ml18MCl7cj1pO3JldHVybn1jY1trWyhrW2Q+PjJdfDApKzgwPj4yXSYyNTVdKGtbZD4+Ml18MCxrW2U+PjJdfDAsZyk7aWYoKG1bZysxNj4+MV18MCk+Pj4wPj0oa1tnKzEyPj4yXXwwKT4+PjApe3I9aTtyZXR1cm59Yz1xcigoa1tlPj4yXXwwKSsoKG1bZysxOD4+MV18MCktNCl8MCl8MDtrW2g+PjJdPWM7b0soa1soa1tkPj4yXXwwKSs1Mj4+Ml18MCxrW2g+PjJdfDAsMyxrWyhrW2Q+PjJdfDApKzg0Pj4yXXwwLGtbZj4+Ml18MCk7cj1pO3JldHVybn1mdW5jdGlvbiBySyhhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTA7ZD1yO3I9cisxNnwwO2M9ZCs4fDA7ZT1kKzR8MDtmPWQ7a1tjPj4yXT1hO2tbZT4+Ml09YjtrW2Y+PjJdPWtbKGtbYz4+Ml18MCkrMjg+PjJdO2ljW2tbMTUyPj4yXSYyNTVdKGtbKGtbZj4+Ml18MCkrNDQ+PjJdfDAsa1trW2M+PjJdPj4yXXwwLGtbKGtbYz4+Ml18MCkrMjA+PjJdfDAsa1tlPj4yXXwwKTtrWyhrW2M+PjJdfDApKzIwPj4yXT1rW2U+PjJdO2lmKCEoKG1bKGtbYz4+Ml18MCkrMjQ+PjFdfDApJjIpKXtyPWQ7cmV0dXJufWlmKCEoKG1bKGtbYz4+Ml18MCkrMjQ+PjFdfDApJjgpKXtyPWQ7cmV0dXJufXJqKGtbYz4+Ml18MCwzKTtyPWQ7cmV0dXJufWZ1bmN0aW9uIHNLKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGw9MCxtPTA7aD1yO3I9ciszMnwwO2U9aCsyMHwwO209aCsxNnwwO2w9aCsxMnwwO2Y9aCs4fDA7aj1oKzR8MDtnPWg7a1ttPj4yXT1hO2tbbD4+Ml09YjtrW2Y+PjJdPWM7a1tqPj4yXT1kO2Q9Zkcoa1ttPj4yXXwwLGtbbD4+Ml18MCxrW2Y+PjJdfDAsa1tqPj4yXXwwKXwwO2tbZz4+Ml09ZDtkPWtbZj4+Ml18MDtkbyBpZighKGtbZz4+Ml18MCkpe209KGR1KGtbKGtbZD4+Ml18MCkrNzI+PjJdfDApfDApPjE7ZD1rW2tbZj4+Ml0+PjJdfDA7aWYoIW0pe2lbZD4+MF09MDticmVha31fQihkKTtrW2tbZj4+Ml0+PjJdPTA7bT1faig2MDMxNil8MDtrW2U+PjJdPW07bT1rW2U+PjJdfDA7cj1oO3JldHVybiBtfDB9ZWxzZSBrW2Q+PjJdPTA7d2hpbGUoMCk7a1tlPj4yXT1rW2c+PjJdO209a1tlPj4yXXwwO3I9aDtyZXR1cm4gbXwwfWZ1bmN0aW9uIHRLKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MDtlPXI7cj1yKzE2fDA7Zj1lKzh8MDtjPWUrNHwwO2Q9ZTtrW2Y+PjJdPWE7a1tjPj4yXT1iO2tbZD4+Ml09a1soa1tmPj4yXXwwKSs2MD4+Ml07aWYoIShrW2Q+PjJdfDApKXtmPTA7Zj1mJjE7cj1lO3JldHVybiBmfDB9Zj1rW2M+PjJdfDA7aWYoZj4+PjA+KHlqKGtbZD4+Ml18MCl8MCk+Pj4wKXtmPTE7Zj1mJjE7cj1lO3JldHVybiBmfDB9Zj0oeGooa1tkPj4yXXwwLGtbYz4+Ml18MCl8MCkhPTA7Zj1mJjE7cj1lO3JldHVybiBmfDB9ZnVuY3Rpb24gdUsoYSl7YT1hfDA7dmFyIGI9MCxjPTA7Yz1yO3I9cisxNnwwO2I9YztrW2I+PjJdPWE7cj1jO3JldHVybiBsWyhrW2I+PjJdfDApKzEzPj4wXXwwfDB9ZnVuY3Rpb24gdksoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGk9MCxqPTAsbD0wO2o9cjtyPXIrMzJ8MDtkPWorMjR8MDtlPWorMjB8MDtmPWorMTZ8MDtsPWorMTJ8MDtnPWorOHwwO2g9ais0fDA7aT1qO2tbZT4+Ml09YTtrW2Y+PjJdPWI7a1tsPj4yXT1jO2M9bGYoa1tlPj4yXXwwLGtbbD4+Ml18MCwtMSxnLDApfDA7a1toPj4yXT1jO2lmKGtbaD4+Ml18MCl7a1tkPj4yXT1rW2g+PjJdO2w9a1tkPj4yXXwwO3I9ajtyZXR1cm4gbHwwfXdoaWxlKDEpe2w9RGUoa1tnPj4yXXwwKXwwO2tbaD4+Ml09bDtpZigxMDAhPShsfDApKWJyZWFrO2w9T2Uoa1tnPj4yXXwwLDApfDA7a1tpPj4yXT1sO2lmKCEoa1tpPj4yXXwwKSljb250aW51ZTtsPXZLKGtbZT4+Ml18MCxrW2Y+PjJdfDAsa1tpPj4yXXwwKXwwO2tbaD4+Ml09bDtpZihrW2g+PjJdfDApYnJlYWt9aWYoKGtbaD4+Ml18MCk9PTEwMSlrW2g+PjJdPTA7aWYoa1toPj4yXXwwKXtpPWtbZj4+Ml18MDtsPWtbZT4+Ml18MDtNaihpLGwsbWYoa1tlPj4yXXwwKXwwKX1mZShrW2c+PjJdfDApfDA7a1tkPj4yXT1rW2g+PjJdO2w9a1tkPj4yXXwwO3I9ajtyZXR1cm4gbHwwfWZ1bmN0aW9uIHdLKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MDtjPXI7cj1yKzE2fDA7ZD1jKzR8MDtiPWM7a1tkPj4yXT1hO3dnKGtbZD4+Ml18MCk7YT1BSyhrW2Q+PjJdfDApfDA7a1tiPj4yXT1hO3I9YztyZXR1cm4ga1tiPj4yXXwwfWZ1bmN0aW9uIHhLKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaT0wLGo9MCxsPTAsbT0wO2o9cjtyPXIrNDh8MDtlPWorNDB8MDtmPWorMzZ8MDtnPWorMzJ8MDttPWorMjh8MDtpPWorMjR8MDtsPWorOHwwO2g9ajtrW2Y+PjJdPWE7a1tnPj4yXT1iO2tbbT4+Ml09YztrW2w+PjJdPWQ7Yz15eChrW2Y+PjJdfDAsa1ttPj4yXXwwLGwpfDA7a1tpPj4yXT1jO2lmKCEoa1tpPj4yXXwwKSl7a1tlPj4yXT03O209a1tlPj4yXXwwO3I9ajtyZXR1cm4gbXwwfWVsc2V7bT12SyhrW2Y+PjJdfDAsa1tnPj4yXXwwLGtbaT4+Ml18MCl8MDtrW2g+PjJdPW07Ymcoa1tmPj4yXXwwLGtbaT4+Ml18MCk7a1tlPj4yXT1rW2g+PjJdO209a1tlPj4yXXwwO3I9ajtyZXR1cm4gbXwwfXJldHVybiAwfWZ1bmN0aW9uIHlLKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wLGk9MDtpPXI7cj1yKzgwfDA7ZT1pKzY4fDA7Zj1pKzY0fDA7aD1pKzYwfDA7ZD1pKzU2fDA7Zz1pKzh8MDtjPWk7a1tlPj4yXT1hO2tbZj4+Ml09Yjt3ZyhrW2U+PjJdfDApO3dnKGtbZj4+Ml18MCk7YT1PZyhaZihrW2U+PjJdfDApfDApfDA7a1tkPj4yXT1hO2lmKChrW2tbZD4+Ml0+PjJdfDApIT0wPyhiPUNnKGtbZj4+Ml18MCl8MCxiPWtTKGJ8MCwoKGJ8MCk8MCk8PDMxPj4zMXwwLEVnKGtbZj4+Ml18MCl8MCwwKXwwLGE9YyxrW2E+PjJdPWIsa1thKzQ+PjJdPUwsYT1LaShrW2Q+PjJdfDAsMTEsYyl8MCxrW2g+PjJdPWEsa1toPj4yXT0oa1toPj4yXXwwKT09MTI/MDphLChrW2g+PjJdfDApIT0wKTowKXtoPWtbaD4+Ml18MDtyPWk7cmV0dXJuIGh8MH1jPWc7ZD1jKzQ4fDA7ZG97a1tjPj4yXT0wO2M9Yys0fDB9d2hpbGUoKGN8MCk8KGR8MCkpO2tbZysyMD4+Ml09a1trW2Y+PjJdPj4yXTtrW2crMjQ+PjJdPWtbZj4+Ml07a1tnKzQ+PjJdPWtbZT4+Ml07a1tnKzE2Pj4yXT0xO2RlKGcsMjE0NzQ4MzY0Nyl8MDtmPWVlKGcpfDA7a1toPj4yXT1mO2lmKCEoa1toPj4yXXwwKSl7Zz0oa1soa1tlPj4yXXwwKSs0Pj4yXXwwKSsyMnwwO2pbZz4+MV09KG1bZz4+MV18MCkmLTM7aD1rW2g+PjJdfDA7cj1pO3JldHVybiBofDB9ZWxzZXt6SyhaZihrW2crND4+Ml18MCl8MCk7aD1rW2g+PjJdfDA7cj1pO3JldHVybiBofDB9cmV0dXJuIDB9ZnVuY3Rpb24geksoYSl7YT1hfDA7dmFyIGI9MCxjPTA7Yz1yO3I9cisxNnwwO2I9YztrW2I+PjJdPWE7aWYobFsoa1tiPj4yXXwwKSsxMz4+MF18MCl7cj1jO3JldHVybn1oaihrW2I+PjJdfDApO3I9YztyZXR1cm59ZnVuY3Rpb24gQUsoYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wO2M9cjtyPXIrMTZ8MDtkPWMrNHwwO2I9YztrW2Q+PjJdPWE7a1tiPj4yXT0oa1soa1soa1tkPj4yXXwwKSs0Pj4yXXwwKSszMj4+Ml18MCktKGtbKGtbKGtbZD4+Ml18MCkrND4+Ml18MCkrMzY+PjJdfDApO3I9YztyZXR1cm4ga1tiPj4yXXwwfWZ1bmN0aW9uIEJLKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLG09MCxuPTAsbz0wO289cjtyPXIrNDh8MDttPW8rMjh8MDtuPW8rMjR8MDtjPW8rMjB8MDtmPW8rMTZ8MDtiPW8rMTJ8MDtlPW8rOHwwO2Q9bys0fDA7Zz1vO2o9byszMnwwO2tbbT4+Ml09YTtrW24+PjJdPTA7ZG8gaWYoKExyKGtbbT4+Ml18MCl8MCk9PTA/KGxbKGtbbT4+Ml18MCkrMTc+PjBdfDApPT0wOjApe2tbYz4+Ml09MTthPVB0KGtbbT4+Ml18MCwxKXwwO2tbbj4+Ml09YTtpZighKGtbbj4+Ml18MCkpe2lmKChsWyhrW20+PjJdfDApKzE4Pj4wXXwwKTw9MSl7YT1DSyhrW20+PjJdfDAsYyl8MDtrW24+PjJdPWF9aWYoIShrW24+PjJdfDApKXtpZihrW2M+PjJdfDApe2lmKGlbKGtbbT4+Ml18MCkrMTU+PjBdfDApe2tbbj4+Ml09Nzc2O2JyZWFrfWE9UXQoa1ttPj4yXXwwLDQpfDA7a1tuPj4yXT1hO2lmKGtbbj4+Ml18MClicmVhaztpZigoKChrW2tbKGtbbT4+Ml18MCkrNjg+PjJdPj4yXXwwKT09MD8oa1tmPj4yXT1rW2tbbT4+Ml0+PjJdLGE9Z3Moa1tmPj4yXXwwLGtbKGtbbT4+Ml18MCkrMTgwPj4yXXwwLDAsYil8MCxrW24+PjJdPWEsKGtbbj4+Ml18MCk9PTAmKGtbYj4+Ml18MCkhPTApOjApPyhrW2U+PjJdPTAsa1tkPj4yXT0yMDUwLGY9Y3Moa1tmPj4yXXwwLGtbKGtbbT4+Ml18MCkrMTgwPj4yXXwwLGtbKGtbbT4+Ml18MCkrNjg+PjJdfDAsa1tkPj4yXXwwLGUpfDAsa1tuPj4yXT1mLChrW24+PjJdfDApPT0wKTowKT8oa1tlPj4yXSYxfDApIT0wOjApe2Y9eXQoNTE0ODMpfDA7a1tuPj4yXT1mO3lyKGtbKGtbbT4+Ml18MCkrNjg+PjJdfDApfWI9a1ttPj4yXXwwO2lmKGtba1soa1ttPj4yXXwwKSs2OD4+Ml0+PjJdfDApe2Y9dnIoYil8MDtrW24+PjJdPWY7aWYoIShrW24+PjJdfDApKXtmPWVzKGtbbT4+Ml18MCwoKGlbKGtbbT4+Ml18MCkrMTM+PjBdfDApIT0wXjEpJjEpfDA7a1tuPj4yXT1mO2lbKGtbbT4+Ml18MCkrMTc+PjBdPTB9fWVsc2UgaWYoIShpW2IrND4+MF18MCkpUHIoa1ttPj4yXXwwLDEpfDA7aWYoa1tuPj4yXXwwKXt3cihrW20+PjJdfDAsa1tuPj4yXXwwKXwwO2JyZWFrfX1pZigoaVsoa1ttPj4yXXwwKSsxMz4+MF18MCk9PTA/KGxbKGtbbT4+Ml18MCkrMjQ+PjBdfDApIT0wOjApe2tbZz4+Ml09MDtmPURLKGtbbT4+Ml18MCxnKXwwO2tbbj4+Ml09ZjtpZihrW24+PjJdfDApYnJlYWs7aWYoKGtbZz4+Ml18MCk+Pj4wPjApe2c9b3Moa1soa1ttPj4yXXwwKSs2ND4+Ml18MCxqLDE2LDI0LDApfDA7a1tuPj4yXT1nO2lmKChrW24+PjJdfDApIT0wJihrW24+PjJdfDApIT01MjIpYnJlYWt9ZWxzZXtiPWo7Yz1iKzE2fDA7ZG97aVtiPj4wXT0wO2I9YisxfDB9d2hpbGUoKGJ8MCk8KGN8MCkpfWlmKG9SKChrW20+PjJdfDApKzExMnwwLGosMTYpfDApaGooa1ttPj4yXXwwKX1oPUVLKGtbbT4+Ml18MCl8MDtrW24+PjJdPWg7aD0zMn19fWVsc2UgaD0zMjt3aGlsZSgwKTtpZigoaHwwKT09MzIpe2lmKExyKGtbbT4+Ml18MCl8MCl7aj1GSyhrW20+PjJdfDApfDA7a1tuPj4yXT1qfWlmKChsWyhrW20+PjJdfDApKzEzPj4wXXwwKT09MD8oKGtbbj4+Ml18MCk9PTA/KGxbKGtbbT4+Ml18MCkrMTc+PjBdfDApPT0wOjApOjApe2o9REsoa1ttPj4yXXwwLChrW20+PjJdfDApKzI4fDApfDA7a1tuPj4yXT1qfX1iPWtbbT4+Ml18MDtpZihrW24+PjJdfDApe3VyKGIpO249a1tuPj4yXXwwO3I9bztyZXR1cm4gbnwwfWVsc2V7aVtiKzE3Pj4wXT0xO2lbKGtbbT4+Ml18MCkrMjQ+PjBdPTE7bj1rW24+PjJdfDA7cj1vO3JldHVybiBufDB9cmV0dXJuIDB9ZnVuY3Rpb24gQ0soYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLG09MCxuPTAsbz0wLHA9MDtwPXI7cj1yKzQ4fDA7Yz1wKzMyfDA7ZD1wKzI4fDA7bj1wKzI0fDA7bz1wKzIwfDA7ZT1wKzE2fDA7aD1wKzEyfDA7aj1wKzh8MDttPXArNHwwO2Y9cDtnPXArMzZ8MDtrW2M+PjJdPWE7a1tkPj4yXT1iO2tbbj4+Ml09a1trW2M+PjJdPj4yXTtrW28+PjJdPTA7a1tlPj4yXT0xO2tbaD4+Ml09KChrW2tbKGtbYz4+Ml18MCkrNjg+PjJdPj4yXXwwKSE9MF4xXjEpJjE7a1trW2Q+PjJdPj4yXT0wO2lmKCEoa1toPj4yXXwwKSl7YT1ncyhrW24+PjJdfDAsa1soa1tjPj4yXXwwKSsxODA+PjJdfDAsMCxlKXwwO2tbbz4+Ml09YX1pZighKChrW28+PjJdfDApPT0wJihrW2U+PjJdfDApIT0wKSl7bz1rW28+PjJdfDA7cj1wO3JldHVybiBvfDB9a1tqPj4yXT0wO2E9TUsoa1soa1tjPj4yXXwwKSs2ND4+Ml18MCxqKXwwO2tbbz4+Ml09YTtpZigoa1tvPj4yXXwwKSE9MHwoa1tqPj4yXXwwKSE9MCl7bz1rW28+PjJdfDA7cj1wO3JldHVybiBvfDB9YT1ESyhrW2M+PjJdfDAsbSl8MDtrW28+PjJdPWE7aWYoa1tvPj4yXXwwKXtvPWtbbz4+Ml18MDtyPXA7cmV0dXJuIG98MH1pZighKChrW20+PjJdfDApIT0wfChrW2g+PjJdfDApIT0wKSl7Z2soKTtpZigoUXQoa1tjPj4yXXwwLDIpfDApPT0wPyhIcihrW24+PjJdfDAsa1soa1tjPj4yXXwwKSsxODA+PjJdfDAsMCl8MCwoaVsoa1tjPj4yXXwwKSs0Pj4wXXwwKT09MCk6MClQcihrW2M+PjJdfDAsMSl8MDtoaygpO289a1tvPj4yXXwwO3I9cDtyZXR1cm4gb3wwfWlmKCEoa1toPj4yXXwwKSl7a1tmPj4yXT0yMDQ5O249Y3Moa1tuPj4yXXwwLGtbKGtbYz4+Ml18MCkrMTgwPj4yXXwwLGtbKGtbYz4+Ml18MCkrNjg+PjJdfDAsa1tmPj4yXXwwLGYpfDA7a1tvPj4yXT1ufWlmKCEoa1tvPj4yXXwwKSl7aVtnPj4wXT0wO249b3Moa1soa1tjPj4yXXwwKSs2OD4+Ml18MCxnLDEsMCwwKXwwO2tbbz4+Ml09bjtrW28+PjJdPShrW28+PjJdfDApPT01MjI/MDpuO2lmKCEoa1toPj4yXXwwKSl5cihrWyhrW2M+PjJdfDApKzY4Pj4yXXwwKTtrW2tbZD4+Ml0+PjJdPShsW2c+PjBdfDApIT0wJjE7bz1rW28+PjJdfDA7cj1wO3JldHVybiBvfDB9ZWxzZXtpZigoa1tvPj4yXXwwKSE9MTQpe289a1tvPj4yXXwwO3I9cDtyZXR1cm4gb3wwfWtba1tkPj4yXT4+Ml09MTtrW28+PjJdPTA7bz1rW28+PjJdfDA7cj1wO3JldHVybiBvfDB9cmV0dXJuIDB9ZnVuY3Rpb24gREsoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTAsaT0wO2k9cjtyPXIrMzJ8MDtjPWkrMjR8MDtkPWkrMjB8MDtlPWkrMTZ8MDtnPWkrMTJ8MDtmPWk7aD1pKzh8MDtrW2Q+PjJdPWE7a1tlPj4yXT1iO2I9TEsoa1soa1tkPj4yXXwwKSsyMTY+PjJdfDApfDA7a1tnPj4yXT1iO2RvIGlmKChrW2c+PjJdfDApPT0wPyhrW2tbKGtbZD4+Ml18MCkrNjQ+PjJdPj4yXXwwKSE9MDowKXtiPWY7a1tiPj4yXT0wO2tbYis0Pj4yXT0wO2I9Zmooa1soa1tkPj4yXXwwKSs2ND4+Ml18MCxmKXwwO2tbaD4+Ml09YjtpZighKGtbaD4+Ml18MCkpe2g9ZjtiPWtbKGtbZD4+Ml18MCkrMTYwPj4yXXwwO2I9JFIoa1toPj4yXXwwLGtbaCs0Pj4yXXwwLGJ8MCwoKGJ8MCk8MCk8PDMxPj4zMXwwKXwwO2I9X1IoYnwwLEx8MCwxLDApfDA7aD1rWyhrW2Q+PjJdfDApKzE2MD4+Ml18MDtoPWlTKGJ8MCxMfDAsaHwwLCgoaHwwKTwwKTw8MzE+PjMxfDApfDA7a1tnPj4yXT1oO2JyZWFrfWtbYz4+Ml09a1toPj4yXTtoPWtbYz4+Ml18MDtyPWk7cmV0dXJuIGh8MH13aGlsZSgwKTtpZigoa1tnPj4yXXwwKT4+PjA+KGtbKGtbZD4+Ml18MCkrMTY0Pj4yXXwwKT4+PjApa1soa1tkPj4yXXwwKSsxNjQ+PjJdPWtbZz4+Ml07a1trW2U+PjJdPj4yXT1rW2c+PjJdO2tbYz4+Ml09MDtoPWtbYz4+Ml18MDtyPWk7cmV0dXJuIGh8MH1mdW5jdGlvbiBFSyhhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wO2g9cjtyPXIrMzJ8MDtkPWgrMTZ8MDtlPWgrMTJ8MDtnPWgrOHwwO2Y9aCs0fDA7Yz1oO2tbZT4+Ml09YTtrW2c+PjJdPTA7ZG8gaWYoIShpWyhrW2U+PjJdfDApKzEzPj4wXXwwKSl7Yj1ESyhrW2U+PjJdfDAsYyl8MDtrW2c+PjJdPWI7aWYoa1tnPj4yXXwwKXtrW2Q+PjJdPWtbZz4+Ml07Zz1rW2Q+PjJdfDA7cj1oO3JldHVybiBnfDB9YT1rW2tbZT4+Ml0+PjJdfDA7Yj1rWyhrW2U+PjJdfDApKzIyMD4+Ml18MDtpZighKGtbYz4+Ml18MCkpe2M9SHIoYSxiLDApfDA7a1tnPj4yXT1jO2tbZz4+Ml09KGtbZz4+Ml18MCk9PTU4OTg/MDpjO2tbZj4+Ml09MH1lbHNle2M9Z3MoYSxiLDAsZil8MDtrW2c+PjJdPWN9aWYoIShrW2c+PjJdfDApKXthPWtbZT4+Ml18MDtpZihrW2Y+PjJdfDApe2Y9SEsoYSwwKXwwO2tbZz4+Ml09ZjticmVha31pZigobFthKzU+PjBdfDApPT01KWlbKGtbZT4+Ml18MCkrNT4+MF09MH19d2hpbGUoMCk7a1tkPj4yXT1rW2c+PjJdO2c9a1tkPj4yXXwwO3I9aDtyZXR1cm4gZ3wwfWZ1bmN0aW9uIEZLKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MCxlPTA7ZD1yO3I9cisxNnwwO2I9ZCs4fDA7Yz1kKzR8MDtlPWQ7a1tiPj4yXT1hO2tbZT4+Ml09MDtfcyhrWyhrW2I+PjJdfDApKzIxNj4+Ml18MCk7YT1HSyhrWyhrW2I+PjJdfDApKzIxNj4+Ml18MCxlKXwwO2tbYz4+Ml09YTtpZighKChrW2M+PjJdfDApIT0wfChrW2U+PjJdfDApIT0wKSl7ZT1rW2M+PjJdfDA7cj1kO3JldHVybiBlfDB9aGooa1tiPj4yXXwwKTtlPWtbYz4+Ml18MDtyPWQ7cmV0dXJuIGV8MH1mdW5jdGlvbiBHSyhhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wLGg9MDtnPXI7cj1yKzE2fDA7Yz1nKzEyfDA7ZD1nKzh8MDtmPWcrNHwwO2U9ZztrW2M+PjJdPWE7a1tkPj4yXT1iO2tbZT4+Ml09MDtkb3toPWtbYz4+Ml18MDtiPWtbZD4+Ml18MDthPShrW2U+PjJdfDApKzF8MDtrW2U+PjJdPWE7YT1YdChoLGIsMCxhKXwwO2tbZj4+Ml09YX13aGlsZSgoa1tmPj4yXXwwKT09LTEpO3I9ZztyZXR1cm4ga1tmPj4yXXwwfWZ1bmN0aW9uIEhLKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wO2g9cjtyPXIrMTZ8MDtjPWgrMTJ8MDtkPWgrOHwwO2U9aCs0fDA7Zj1oO2tbZD4+Ml09YTtrW2U+PjJdPWI7a1tmPj4yXT0wO2RvIGlmKChpWyhrW2Q+PjJdfDApKzEzPj4wXXwwKT09MD8oa1soa1tkPj4yXXwwKSsyMTY+PjJdfDApPT0wOjApaWYoU0ooa1tkPj4yXXwwKXwwKXt5cihrWyhrW2Q+PjJdfDApKzY4Pj4yXXwwKTtiPUlLKGtbZD4+Ml18MCl8MDtrW2Y+PjJdPWI7aWYoa1tmPj4yXXwwKWJyZWFrO2lbKGtbZD4+Ml18MCkrNT4+MF09NTtpWyhrW2Q+PjJdfDApKzE3Pj4wXT0wO2JyZWFrfWVsc2V7a1tjPj4yXT0xNDtnPWtbYz4+Ml18MDtyPWg7cmV0dXJuIGd8MH1lbHNlIGc9Nzt3aGlsZSgwKTtpZigoZ3wwKT09NylrW2tbZT4+Ml0+PjJdPTE7a1tjPj4yXT1rW2Y+PjJdO2c9a1tjPj4yXXwwO3I9aDtyZXR1cm4gZ3wwfWZ1bmN0aW9uIElLKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MDtkPXI7cj1yKzE2fDA7Yj1kKzR8MDtjPWQ7a1tiPj4yXT1hO2tbYz4+Ml09MDtpZihpWyhrW2I+PjJdfDApKzQ+PjBdfDApe2E9Sksoa1tiPj4yXXwwKXwwO2tbYz4+Ml09YX1pZihrW2M+PjJdfDApe2E9a1tiPj4yXXwwO2tqKGEpO2M9a1tjPj4yXXwwO3I9ZDtyZXR1cm4gY3wwfWE9KGtbYj4+Ml18MCkrMTY4fDA7YT1LSyhrW2tbYj4+Ml0+PjJdfDAsa1soa1tiPj4yXXwwKSs2ND4+Ml18MCxrWyhrW2I+PjJdfDApKzIyMD4+Ml18MCxsWyhrW2I+PjJdfDApKzQ+PjBdfDAsa1thPj4yXXwwLGtbYSs0Pj4yXXwwLChrW2I+PjJdfDApKzIxNnwwKXwwO2tbYz4+Ml09YTthPWtbYj4+Ml18MDtraihhKTtjPWtbYz4+Ml18MDtyPWQ7cmV0dXJuIGN8MH1mdW5jdGlvbiBKSyhhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTA7ZD1yO3I9cisxNnwwO2I9ZCs0fDA7Yz1kO2tbYj4+Ml09YTthPVF0KGtbYj4+Ml18MCw0KXwwO2tbYz4+Ml09YTtpZighKGtbYz4+Ml18MCkpe2M9a1tjPj4yXXwwO3I9ZDtyZXR1cm4gY3wwfVByKGtbYj4+Ml18MCwxKXwwO2M9a1tjPj4yXXwwO3I9ZDtyZXR1cm4gY3wwfWZ1bmN0aW9uIEtLKGEsYixjLGQsZSxmLGcpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO3ZhciBoPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscz0wLHQ9MCx1PTAsdj0wLHc9MDt3PXI7cj1yKzQ4fDA7aD13KzQ0fDA7bD13KzQwfDA7bT13KzM2fDA7bj13KzMyfDA7bz13KzI4fDA7cD13O3E9dysyNHwwO3Y9dysyMHwwO3U9dysxNnwwO3M9dysxMnwwO3Q9dys4fDA7a1tsPj4yXT1hO2tbbT4+Ml09YjtrW24+PjJdPWM7a1tvPj4yXT1kO2M9cDtrW2M+PjJdPWU7a1tjKzQ+PjJdPWY7a1txPj4yXT1nO2tba1txPj4yXT4+Ml09MDtjPXVnKDEyMCsoa1soa1tsPj4yXXwwKSs0Pj4yXXwwKXwwLDApfDA7a1t1Pj4yXT1jO2lmKCEoa1t1Pj4yXXwwKSl7a1toPj4yXT03O2M9a1toPj4yXXwwO3I9dztyZXR1cm4gY3wwfWtba1t1Pj4yXT4+Ml09a1tsPj4yXTtrWyhrW3U+PjJdfDApKzg+PjJdPShrW3U+PjJdfDApKzEyMDtrWyhrW3U+PjJdfDApKzQ+PjJdPWtbbT4+Ml07alsoa1t1Pj4yXXwwKSs0MD4+MV09LTE7YT1wO2c9a1thKzQ+PjJdfDA7Yz0oa1t1Pj4yXXwwKSsxNnwwO2tbYz4+Ml09a1thPj4yXTtrW2MrND4+Ml09ZztrWyhrW3U+PjJdfDApKzEwOD4+Ml09a1tuPj4yXTtpWyhrW3U+PjJdfDApKzQ4Pj4wXT0xO2lbKGtbdT4+Ml18MCkrNDk+PjBdPTE7aVsoa1t1Pj4yXXwwKSs0Mz4+MF09KGtbbz4+Ml18MCkhPTA/MjowO2tbcz4+Ml09NTI0Mjk0O2M9Y3Moa1tsPj4yXXwwLGtbbj4+Ml18MCxrWyhrW3U+PjJdfDApKzg+PjJdfDAsa1tzPj4yXXwwLHMpfDA7a1t2Pj4yXT1jO2lmKChrW3Y+PjJdfDApPT0wPyhrW3M+PjJdJjF8MCkhPTA6MClpWyhrW3U+PjJdfDApKzQ2Pj4wXT0xO2lmKGtbdj4+Ml18MCl7ZHQoa1t1Pj4yXXwwLDApO3lyKGtbKGtbdT4+Ml18MCkrOD4+Ml18MCk7VWQoa1t1Pj4yXXwwKX1lbHNle2M9bHMoa1ttPj4yXXwwKXwwO2tbdD4+Ml09YztpZihrW3Q+PjJdJjEwMjQpaVsoa1t1Pj4yXXwwKSs0OD4+MF09MDtpZihrW3Q+PjJdJjQwOTYpaVsoa1t1Pj4yXXwwKSs0OT4+MF09MDtrW2tbcT4+Ml0+PjJdPWtbdT4+Ml19a1toPj4yXT1rW3Y+PjJdO2M9a1toPj4yXXwwO3I9dztyZXR1cm4gY3wwfWZ1bmN0aW9uIExLKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MDtkPXI7cj1yKzE2fDA7Yj1kKzR8MDtjPWQ7a1tjPj4yXT1hO2lmKChrW2M+PjJdfDApIT0wPyhqWyhrW2M+PjJdfDApKzQwPj4xXXwwKT49MDowKXtrW2I+PjJdPWtbKGtbYz4+Ml18MCkrNTIrMjA+PjJdO2E9a1tiPj4yXXwwO3I9ZDtyZXR1cm4gYXwwfWtbYj4+Ml09MDthPWtbYj4+Ml18MDtyPWQ7cmV0dXJuIGF8MH1mdW5jdGlvbiBNSyhhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MDtjPXI7cj1yKzE2fDA7ZT1jKzR8MDtkPWM7a1tlPj4yXT1hO2tbZD4+Ml09YjtiPWdjW2tbKGtba1tlPj4yXT4+Ml18MCkrMzY+PjJdJjI1NV0oa1tlPj4yXXwwLGtbZD4+Ml18MCl8MDtyPWM7cmV0dXJuIGJ8MH1mdW5jdGlvbiBOSyhhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTAsZT0wLGY9MDtmPXI7cj1yKzE3NnwwO2M9ZisxNjh8MDtlPWYrMTY0fDA7Yj1mKzE2MHwwO2Q9ZjtrW2M+PjJdPWE7ZFMoZHwwLDAsMTYwKXwwO3doaWxlKDEpe2lmKCEoa1tjPj4yXXwwKSlicmVhaztrW2I+PjJdPWtbKGtbYz4+Ml18MCkrOD4+Ml07a1soa1tjPj4yXXwwKSs4Pj4yXT0wO2tbZT4+Ml09MDt3aGlsZSgxKXtpZighKGtbZCsoa1tlPj4yXTw8Mik+PjJdfDApKWJyZWFrO2E9UUsoa1tkKyhrW2U+PjJdPDwyKT4+Ml18MCxrW2M+PjJdfDApfDA7a1tjPj4yXT1hO2tbZCsoa1tlPj4yXTw8Mik+PjJdPTA7a1tlPj4yXT0oa1tlPj4yXXwwKSsxfWtbZCsoa1tlPj4yXTw8Mik+PjJdPWtbYz4+Ml07a1tjPj4yXT1rW2I+PjJdfWtbYz4+Ml09a1tkPj4yXTtrW2U+PjJdPTE7d2hpbGUoMSl7aWYoKGtbZT4+Ml18MCk+Pj4wPj00MClicmVhaztpZihrW2QrKGtbZT4+Ml08PDIpPj4yXXwwKXtpZihrW2M+PjJdfDApYT1RSyhrW2M+PjJdfDAsa1tkKyhrW2U+PjJdPDwyKT4+Ml18MCl8MDtlbHNlIGE9a1tkKyhrW2U+PjJdPDwyKT4+Ml18MDtrW2M+PjJdPWF9a1tlPj4yXT0oa1tlPj4yXXwwKSsxfXI9ZjtyZXR1cm4ga1tjPj4yXXwwfWZ1bmN0aW9uIE9LKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MCxlPTAsZj0wO2Y9cjtyPXIrMTZ8MDtiPWYrMTJ8MDtjPWYrOHwwO2Q9Zis0fDA7ZT1mO2tbYj4+Ml09YTtrW2Q+PjJdPWtbYj4+Ml07a1tiPj4yXT1rWyhrW2Q+PjJdfDApKzg+PjJdO2tbKGtbZD4+Ml18MCkrOD4+Ml09MDtrWyhrW2Q+PjJdfDApKzEyPj4yXT0wO2tbYz4+Ml09MTt3aGlsZSgxKXthPWtbZD4+Ml18MDtpZighKGtbYj4+Ml18MCkpYnJlYWs7a1tlPj4yXT1hO2tbZD4+Ml09a1tiPj4yXTtrW2I+PjJdPWtbKGtbZD4+Ml18MCkrOD4+Ml07a1soa1tkPj4yXXwwKSsxMj4+Ml09a1tlPj4yXTthPVNLKGIsa1tjPj4yXXwwKXwwO2tbKGtbZD4+Ml18MCkrOD4+Ml09YTtrW2M+PjJdPShrW2M+PjJdfDApKzF9cj1mO3JldHVybiBhfDB9ZnVuY3Rpb24gUEsoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wO2g9cjtyPXIrMTZ8MDtmPWgrMTJ8MDtkPWgrOHwwO2c9aCs0fDA7ZT1oO2tbZj4+Ml09YTtrW2Q+PjJdPWI7a1tnPj4yXT1jO2E9a1tmPj4yXXwwO2lmKGtbKGtbZj4+Ml18MCkrMTI+PjJdfDApe1BLKGtbYSsxMj4+Ml18MCxrW2Q+PjJdfDAsZSk7a1soa1tlPj4yXXwwKSs4Pj4yXT1rW2Y+PjJdfWVsc2Uga1trW2Q+PjJdPj4yXT1hO2E9a1tmPj4yXXwwO2lmKGtbKGtbZj4+Ml18MCkrOD4+Ml18MCl7UEsoa1thKzg+PjJdfDAsKGtbZj4+Ml18MCkrOHwwLGtbZz4+Ml18MCk7cj1oO3JldHVybn1lbHNle2tba1tnPj4yXT4+Ml09YTtyPWg7cmV0dXJufX1mdW5jdGlvbiBRSyhhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wLGg9MCxpPTA7Zz1yO3I9ciszMnwwO2M9ZysyNHwwO2Q9ZysyMHwwO2U9ZztmPWcrMTZ8MDtrW2M+PjJdPWE7a1tkPj4yXT1iO2tbZj4+Ml09ZTt3aGlsZSgxKXthPWtbYz4+Ml18MDtpPWtbYSs0Pj4yXXwwO2I9a1tkPj4yXXwwO2g9a1tiKzQ+PjJdfDA7aWYoISgoaXwwKTwoaHwwKXwoKGl8MCk9PShofDApPyhrW2E+PjJdfDApPj4+MDw9KGtbYj4+Ml18MCk+Pj4wOjApKSl7aT1rW2Q+PjJdfDA7a1soa1tmPj4yXXwwKSs4Pj4yXT1pO2tbZj4+Ml09aTtrW2Q+PjJdPWtbKGtbZD4+Ml18MCkrOD4+Ml07aWYoIShrW2Q+PjJdfDApKXthPTg7YnJlYWt9ZWxzZSBjb250aW51ZX1oPWtbYz4+Ml18MDthPWtbaCs0Pj4yXXwwO2k9a1tkPj4yXXwwO2I9a1tpKzQ+PjJdfDA7aWYoKGF8MCk8KGJ8MCl8KChhfDApPT0oYnwwKT8oa1toPj4yXXwwKT4+PjA8KGtbaT4+Ml18MCk+Pj4wOjApKXtpPWtbYz4+Ml18MDtrWyhrW2Y+PjJdfDApKzg+PjJdPWk7a1tmPj4yXT1pfWtbYz4+Ml09a1soa1tjPj4yXXwwKSs4Pj4yXTtpZighKGtbYz4+Ml18MCkpe2E9NjticmVha319aWYoKGF8MCk9PTYpe2tbKGtbZj4+Ml18MCkrOD4+Ml09a1tkPj4yXTtpPWUrOHwwO2k9a1tpPj4yXXwwO3I9ZztyZXR1cm4gaXwwfWVsc2UgaWYoKGF8MCk9PTgpe2tbKGtbZj4+Ml18MCkrOD4+Ml09a1tjPj4yXTtpPWUrOHwwO2k9a1tpPj4yXXwwO3I9ZztyZXR1cm4gaXwwfXJldHVybiAwfWZ1bmN0aW9uIFJLKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MCxlPTA7ZT1yO3I9cisxNnwwO2I9ZSs4fDA7Yz1lKzR8MDtkPWU7a1tjPj4yXT1hO2RvIGlmKCEobVsoa1tjPj4yXXwwKSsyND4+MV18MCkpe2E9ZHgoa1soa1tjPj4yXXwwKSs0Pj4yXXwwLDEwMTYsMCl8MDtrW2Q+PjJdPWE7aWYoa1tkPj4yXXwwKXtrW2tbZD4+Ml0+PjJdPWtba1tjPj4yXT4+Ml07a1trW2M+PjJdPj4yXT1rW2Q+PjJdO2tbKGtbYz4+Ml18MCkrMTY+PjJdPShrW2Q+PjJdfDApKzg7alsoa1tjPj4yXXwwKSsyND4+MV09NjM7YnJlYWt9a1tiPj4yXT0wO2Q9a1tiPj4yXXwwO3I9ZTtyZXR1cm4gZHwwfXdoaWxlKDApO2E9KGtbYz4+Ml18MCkrMjR8MDtqW2E+PjFdPShqW2E+PjFdfDApKy0xPDwxNj4+MTY7YT0oa1tjPj4yXXwwKSsxNnwwO2Q9a1thPj4yXXwwO2tbYT4+Ml09ZCsxNjtrW2I+PjJdPWQ7ZD1rW2I+PjJdfDA7cj1lO3JldHVybiBkfDB9ZnVuY3Rpb24gU0soYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTA7aD1yO3I9ciszMnwwO2Q9aCsxNnwwO2U9aCsxMnwwO2Y9aCs4fDA7Zz1oKzR8MDtjPWg7a1tlPj4yXT1hO2tbZj4+Ml09YjtpZighKGtba1tlPj4yXT4+Ml18MCkpe2tbZD4+Ml09MDtnPWtbZD4+Ml18MDtyPWg7cmV0dXJuIGd8MH1iPWtbZT4+Ml18MDtkbyBpZigoa1tmPj4yXXwwKT4xKXtiPVNLKGIsKGtbZj4+Ml18MCktMXwwKXwwO2tbYz4+Ml09YjtrW2c+PjJdPWtba1tlPj4yXT4+Ml07Yj1rW2M+PjJdfDA7aWYoa1tnPj4yXXwwKXtrWyhrW2c+PjJdfDApKzEyPj4yXT1iO2tba1tlPj4yXT4+Ml09a1soa1tnPj4yXXwwKSs4Pj4yXTtmPVNLKGtbZT4+Ml18MCwoa1tmPj4yXXwwKS0xfDApfDA7a1soa1tnPj4yXXwwKSs4Pj4yXT1mO2JyZWFrfWtbZD4+Ml09YjtnPWtbZD4+Ml18MDtyPWg7cmV0dXJuIGd8MH1lbHNle2tbZz4+Ml09a1tiPj4yXTtrW2tbZT4+Ml0+PjJdPWtbKGtbZz4+Ml18MCkrOD4+Ml07a1soa1tnPj4yXXwwKSs4Pj4yXT0wO2tbKGtbZz4+Ml18MCkrMTI+PjJdPTB9d2hpbGUoMCk7a1tkPj4yXT1rW2c+PjJdO2c9a1tkPj4yXXwwO3I9aDtyZXR1cm4gZ3wwfWZ1bmN0aW9uIFRLKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MDtlPXI7cj1yKzE2fDA7Zz1lKzEyfDA7aD1lKzh8MDtmPWUrNHwwO2Q9ZTtrW2c+PjJdPWE7a1toPj4yXT1iO2tbZj4+Ml09YztrW2Q+PjJdPWtbaD4+Ml07a1trW2Q+PjJdPj4yXT0wO2tbKGtbZD4+Ml18MCkrND4+Ml09a1tnPj4yXTtrWyhrW2Q+PjJdfDApKzg+PjJdPTA7a1soa1tkPj4yXXwwKSsxMj4+Ml09MDtrWyhrW2Q+PjJdfDApKzIwPj4yXT0wO2tbKGtbZD4+Ml18MCkrMTY+PjJdPShrW2Q+PjJdfDApKzMyO2pbKGtbZD4+Ml18MCkrMjQ+PjFdPSgoKGtbZj4+Ml18MCktMzJ8MCk+Pj4wKS8xNnwwO2pbKGtbZD4+Ml18MCkrMjY+PjFdPTE7a1soa1tkPj4yXXwwKSsyOD4+Ml09MDtyPWU7cmV0dXJuIGtbZD4+Ml18MH1mdW5jdGlvbiBVSyhhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MDtjPXI7cj1yKzE2fDA7ZT1jKzR8MDtkPWM7a1tlPj4yXT1hO2tbZD4+Ml09YjthPShrWyhrW2U+PjJdfDApKzg+PjJdfDApKygoKGtbZD4+Ml18MCk+Pj4wKS84fDApfDA7aVthPj4wXT1sW2E+PjBdfDB8MTw8KGtbZD4+Ml0mNyk7cj1jO3JldHVybn1mdW5jdGlvbiBWSyhhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MCxtPTAsbj0wLG89MCxwPTAscT0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wO3g9cjtyPXIrODB8MDtuPXgrMzJ8MDtvPXgrMjR8MDt3PXgrMTZ8MDt2PXg7cD14Kzc2fDA7ZT14KzcyfDA7cT14KzY4fDA7cz14KzY0fDA7Zj14KzYwfDA7dD14KzU2fDA7dT14KzUyfDA7bT14KzQ4fDA7aj14KzQ0fDA7aD14KzQwfDA7Zz14KzM2fDA7a1twPj4yXT1hO2tbZT4+Ml09YjtrW3E+PjJdPWM7a1tzPj4yXT1kO2tbdD4+Ml09a1tzPj4yXTtrW3U+PjJdPWtbcT4+Ml07d2hpbGUoMSl7YT1rW3M+PjJdfDA7a1tzPj4yXT1hKy0xO2lmKChhfDApPD0wKXtkPTI1O2JyZWFrfWlmKCEoa1soa1twPj4yXXwwKSsxNj4+Ml18MCkpe2Q9MjU7YnJlYWt9Yz1rW3A+PjJdfDA7aWYoKGtbcT4+Ml18MCk8MSl7ZD01O2JyZWFrfWlmKF9LKGMsa1txPj4yXXwwKXwwKXtkPTI1O2JyZWFrfWlmKEZnKGtbKGtbcD4+Ml18MCkrND4+Ml18MCxrW3E+PjJdfDAsbSwwKXwwKXtkPTg7YnJlYWt9YT1HZyhrW20+PjJdfDApfDA7a1tqPj4yXT1hO2RvIGlmKCEoa1tlPj4yXXwwKSl7aWYoKGtbcz4+Ml18MCk+MD8obFsoa1trW3A+PjJdPj4yXXwwKSsxNz4+MF18MCkhPTA6MCl7YT1xcihrW2o+PjJdfDApfDA7a1tmPj4yXT1hO1dLKGtbcD4+Ml18MCxrW2Y+PjJdfDAsNCxrW3E+PjJdfDApfX1lbHNle2E9cXIoKGtbaj4+Ml18MCkrNHwwKXwwO2tbaD4+Ml09YTtpZihpWyhrW2tbcD4+Ml0+PjJdfDApKzE3Pj4wXXwwKVdLKGtbcD4+Ml18MCxrW3E+PjJdfDAsMiwwKTtpZigoa1toPj4yXXwwKT4oKChrWyhrW2tbcD4+Ml0+PjJdfDApKzM2Pj4yXXwwKS80fDApLTJ8MCkpe2E9a1twPj4yXXwwO2tbbz4+Ml09a1txPj4yXTtaSyhhLDQxNzExLG8pO2tbcz4+Ml09KGtbcz4+Ml18MCkrLTE7YnJlYWt9a1tmPj4yXT0wO3doaWxlKDEpe2lmKChrW2Y+PjJdfDApPj0oa1toPj4yXXwwKSlicmVhazthPXFyKChrW2o+PjJdfDApKyg4KyhrW2Y+PjJdPDwyKSl8MCl8MDtrW2c+PjJdPWE7aWYoaVsoa1trW3A+PjJdPj4yXXwwKSsxNz4+MF18MClXSyhrW3A+PjJdfDAsa1tnPj4yXXwwLDIsMCk7X0soa1twPj4yXXwwLGtbZz4+Ml18MCl8MDtrW2Y+PjJdPShrW2Y+PjJdfDApKzF9a1tzPj4yXT0oa1tzPj4yXXwwKS0oa1toPj4yXXwwKX13aGlsZSgwKTthPXFyKGtbaj4+Ml18MCl8MDtrW3E+PjJdPWE7SWcoa1ttPj4yXXwwKTtpZighKGtbZT4+Ml18MCkpY29udGludWU7aWYoKGtbcz4+Ml18MCk+PSgoa1txPj4yXXwwKSE9MHwwKSljb250aW51ZTtaSyhrW3A+PjJdfDAsNDE3NTAsbil9aWYoKGR8MCk9PTUpe3Q9a1t0Pj4yXXwwO3c9a1t1Pj4yXXwwO2tbdj4+Ml09KGtbcz4+Ml18MCkrMTtrW3YrND4+Ml09dDtrW3YrOD4+Ml09dztaSyhjLDQxNjMyLHYpO3I9eDtyZXR1cm59ZWxzZSBpZigoZHwwKT09OCl7dj1rW3A+PjJdfDA7a1t3Pj4yXT1rW3E+PjJdO1pLKHYsNDE2ODksdyk7cj14O3JldHVybn1lbHNlIGlmKChkfDApPT0yNSl7cj14O3JldHVybn19ZnVuY3Rpb24gV0soYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTAsbT0wLG49MCxvPTAscD0wLHE9MDtxPXI7cj1yKzY0fDA7cD1xKzh8MDtvPXE7ZT1xKzQ0fDA7Zj1xKzQwfDA7Zz1xKzQ5fDA7aD1xKzM2fDA7bj1xKzMyfDA7aj1xKzQ4fDA7bT1xKzI4fDA7a1tlPj4yXT1hO2tbZj4+Ml09YjtpW2c+PjBdPWM7a1toPj4yXT1kO2E9ZUcoa1trW2U+PjJdPj4yXXwwLGtbZj4+Ml18MCxqLG0pfDA7a1tuPj4yXT1hO2lmKGtbbj4+Ml18MCl7aWYoKGtbbj4+Ml18MCk9PTd8KGtbbj4+Ml18MCk9PTMwODIpa1soa1tlPj4yXXwwKSsyND4+Ml09MTtwPWtbZT4+Ml18MDtrW28+PjJdPWtbZj4+Ml07WksocCw0MTU0OSxvKTtyPXE7cmV0dXJufWlmKChsW2o+PjBdfDB8MCk9PShsW2c+PjBdfDB8MCk/KGtbbT4+Ml18MCk9PShrW2g+PjJdfDApOjApe3I9cTtyZXR1cm59bz1rW2U+PjJdfDA7Yj1sW2c+PjBdfDA7ZD1rW2g+PjJdfDA7YT1sW2o+PjBdfDA7bj1rW20+PjJdfDA7a1twPj4yXT1rW2Y+PjJdO2tbcCs0Pj4yXT1iO2tbcCs4Pj4yXT1kO2tbcCsxMj4+Ml09YTtrW3ArMTY+PjJdPW47Wksobyw0MTU3OCxwKTtyPXE7cmV0dXJufWZ1bmN0aW9uIFhLKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxuPTAsbz0wLHA9MCxxPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTAsRT0wLEY9MCxHPTAsSD0wLEk9MCxKPTAsSz0wLEw9MCxNPTAsTj0wLE89MCxQPTAsUT0wLFI9MCxTPTAsVD0wLFU9MCxWPTAsVz0wLFg9MCxZPTAsWj0wLF89MCwkPTAsYWE9MCxiYT0wLGNhPTA7Y2E9cjtyPXIrMjU2fDA7Wj1jYSs5NnwwO1k9Y2ErODh8MDtYPWNhKzgwfDA7Vz1jYSs3MnwwOyQ9Y2ErNjR8MDtfPWNhKzQ4fDA7aD1jYSs0MHwwO2c9Y2ErMzJ8MDtqPWNhKzI0MHwwO249Y2ErMjM2fDA7bz1jYSsyMzJ8MDtwPWNhKzIyOHwwO3E9Y2ErMjR8MDtLPWNhKzIyNHwwO0E9Y2ErMjIwfDA7Zj1jYSsyMTZ8MDt3PWNhKzIxMnwwO3U9Y2ErMjA4fDA7TT1jYSsyMDR8MDtGPWNhKzIwMHwwO3k9Y2ErMTk2fDA7cz1jYSsxOTJ8MDtFPWNhKzE4OHwwO3g9Y2ErMTg0fDA7RD1jYSsxODB8MDt2PWNhKzE3NnwwO0k9Y2ErMTcyfDA7Sj1jYSsxNjh8MDtIPWNhKzE2NHwwO0w9Y2ErMTYwfDA7Vj1jYSsxNTZ8MDt0PWNhKzE1MnwwO3o9Y2ErMTQ4fDA7YWE9Y2ErMTQ0fDA7Tz1jYSsxNDB8MDtTPWNhKzEzNnwwO1E9Y2ErMTMyfDA7Uj1jYSsxMjh8MDtQPWNhKzI0NHwwO0I9Y2E7Rz1jYSsxMjR8MDtOPWNhKzEyMHwwO1Q9Y2ErMTE2fDA7VT1jYSsxMTJ8MDtDPWNhKzEwOHwwO2tbbj4+Ml09YTtrW28+PjJdPWI7a1twPj4yXT1jO2M9cTtrW2M+PjJdPWQ7a1tjKzQ+PjJdPWU7a1tLPj4yXT0wO2tbdz4+Ml09LTE7a1t4Pj4yXT0xO2tbRD4+Ml09MTtrW3o+PjJdPTA7a1tPPj4yXT0wO2tbUz4+Ml09a1soa1tuPj4yXXwwKSsyOD4+Ml07a1tRPj4yXT1rWyhrW24+PjJdfDApKzMyPj4yXTtrW1I+PjJdPWtbKGtbbj4+Ml18MCkrMzY+PjJdO2lbUD4+MF09MDtrW0g+PjJdPWtba1tuPj4yXT4+Ml07a1tWPj4yXT1rWyhrW0g+PjJdfDApKzM2Pj4yXTtpZighKGtbbz4+Ml18MCkpe2tbaj4+Ml09MDtiYT1rW2o+PjJdfDA7cj1jYTtyZXR1cm4gYmF8MH1pZihfSyhrW24+PjJdfDAsa1tvPj4yXXwwKXwwKXtrW2o+PjJdPTA7YmE9a1tqPj4yXXwwO3I9Y2E7cmV0dXJuIGJhfDB9a1soa1tuPj4yXXwwKSsyOD4+Ml09NDExNjk7a1soa1tuPj4yXXwwKSszMj4+Ml09a1tvPj4yXTtjPWZHKGtbSD4+Ml18MCxrW28+PjJdfDAsSywwKXwwO2tbZj4+Ml09YztkbyBpZighYyl7aVtQPj4wXT1pW2tbSz4+Ml0+PjBdfDA7aVtrW0s+PjJdPj4wXT0wO2c9ZXUoa1tLPj4yXXwwKXwwO2tbZj4+Ml09ZztpZihnKXtiYT1rW24+PjJdfDA7a1toPj4yXT1rW2Y+PjJdO1pLKGJhLDQxMjE3LGgpO2JyZWFrfWtbdj4+Ml09a1soa1tLPj4yXXwwKSs1Nj4+Ml07a1t5Pj4yXT1sWyhrW0s+PjJdfDApKzU+PjBdO2tbKGtbbj4+Ml18MCkrMjg+PjJdPTQxMjU1O2tbdD4+Ml09KChsWyhrW3Y+PjJdfDApKygoa1t5Pj4yXXwwKSs1KT4+MF08PDh8bFsoa1t2Pj4yXXwwKSsoKGtbeT4+Ml18MCkrNSkrMT4+MF0pLTEmNjU1MzUpKzE7a1tFPj4yXT1sWyhrW3Y+PjJdfDApKygoa1t5Pj4yXXwwKSszKT4+MF08PDh8bFsoa1t2Pj4yXXwwKSsoKGtbeT4+Ml18MCkrMykrMT4+MF07a1tzPj4yXT0oa1t5Pj4yXXwwKSsxMi0obFsoa1tLPj4yXXwwKSs0Pj4wXTw8Mik7a1tKPj4yXT0oa1t2Pj4yXXwwKSsoKGtbcz4+Ml18MCkrKChrW0U+PjJdfDApLTE8PDEpKTtpZihpWyhrW0s+PjJdfDApKzQ+PjBdfDApe2tbej4+Ml09a1soa1tuPj4yXXwwKSs2OD4+Ml07a1trW3o+PjJdPj4yXT0wfWVsc2V7aD1xcigoa1t2Pj4yXXwwKSsoKGtbeT4+Ml18MCkrOCl8MCl8MDtrW00+PjJdPWg7aWYoaVsoa1tIPj4yXXwwKSsxNz4+MF18MCl7a1soa1tuPj4yXXwwKSsyOD4+Ml09NDEyODE7V0soa1tuPj4yXXwwLGtbTT4+Ml18MCw1LGtbbz4+Ml18MCl9aD1xO2g9WEsoa1tuPj4yXXwwLGtbTT4+Ml18MCxxLGtbaD4+Ml18MCxrW2grND4+Ml18MCl8MDtrW3c+PjJdPWg7a1tEPj4yXT0wfWtbQT4+Ml09KGtbRT4+Ml18MCktMTt3aGlsZSgxKXtpZigoa1tBPj4yXXwwKTwwKWJyZWFrO2lmKCEoa1soa1tuPj4yXXwwKSsxNj4+Ml18MCkpYnJlYWs7a1soa1tuPj4yXXwwKSszNj4+Ml09a1tBPj4yXTtrW0w+PjJdPWxba1tKPj4yXT4+MF08PDh8bFsoa1tKPj4yXXwwKSsxPj4wXTtrW0o+PjJdPShrW0o+PjJdfDApKy0yO2RvIGlmKChrW0w+PjJdfDApPj4+MD49KGtbdD4+Ml18MCk+Pj4wPyhrW0w+PjJdfDApPj4+MDw9KChrW1Y+PjJdfDApLTR8MCk+Pj4wOjApe2tbST4+Ml09KGtbdj4+Ml18MCkrKGtbTD4+Ml18MCk7Y2Nba1soa1tLPj4yXXwwKSs4MD4+Ml0mMjU1XShrW0s+PjJdfDAsa1tJPj4yXXwwLEIpO2lmKCgoa1tMPj4yXXwwKSsobVtCKzE4Pj4xXXwwKXwwKT4+PjA+KGtbVj4+Ml18MCk+Pj4wKXtaSyhrW24+PjJdfDAsNDEzMzksJCk7a1t4Pj4yXT0wO2JyZWFrfWlmKGlbKGtbSz4+Ml18MCkrMj4+MF18MCl7ZT1CO2Q9a1tlPj4yXXwwO2U9a1tlKzQ+PjJdfDA7YT1xO2I9a1thPj4yXXwwO2E9a1thKzQ+PjJdfDA7aWYoa1tEPj4yXXwwKXtpZigoZXwwKT4oYXwwKXwoZXwwKT09KGF8MCkmZD4+PjA+Yj4+PjApYmE9MjZ9ZWxzZSBpZigoZXwwKT4oYXwwKXwoZXwwKT09KGF8MCkmZD4+PjA+PWI+Pj4wKWJhPTI2O2lmKChiYXwwKT09MjYpe2JhPTA7aD1rW24+PjJdfDA7Yz1CO2Y9a1tjKzQ+PjJdfDA7Zz1XO2tbZz4+Ml09a1tjPj4yXTtrW2crND4+Ml09ZjtaSyhoLDQxMzYzLFcpfWY9QjtnPWtbZis0Pj4yXXwwO2g9cTtrW2g+PjJdPWtbZj4+Ml07a1toKzQ+PjJdPWd9aWYoKGtbQisxMj4+Ml18MCk+Pj4wPihtW0IrMTY+PjFdfDApPj4+MCl7a1tHPj4yXT0oKChrW0IrMTI+PjJdfDApLShtW0IrMTY+PjFdfDApKyhrW1Y+PjJdfDApLTV8MCk+Pj4wKS8oKChrW1Y+PjJdfDApLTR8MCk+Pj4wKXwwO2g9cXIoKGtbST4+Ml18MCkrKChtW0IrMTg+PjFdfDApLTQpfDApfDA7a1tOPj4yXT1oO2lmKGlbKGtbSD4+Ml18MCkrMTc+PjBdfDApV0soa1tuPj4yXXwwLGtbTj4+Ml18MCwzLGtbbz4+Ml18MCk7Vksoa1tuPj4yXXwwLDAsa1tOPj4yXXwwLGtbRz4+Ml18MCl9aWYoaVsoa1tLPj4yXXwwKSs0Pj4wXXwwKXskSyhrW3o+PjJdfDAsa1tMPj4yXTw8MTZ8KGtbTD4+Ml18MCkrKG1bQisxOD4+MV18MCktMSk7YnJlYWt9aD1xcihrW0k+PjJdfDApfDA7a1tNPj4yXT1oO2lmKGlbKGtbSD4+Ml18MCkrMTc+PjBdfDApV0soa1tuPj4yXXwwLGtbTT4+Ml18MCw1LGtbbz4+Ml18MCk7aD1xO2g9WEsoa1tuPj4yXXwwLGtbTT4+Ml18MCxxLGtbaD4+Ml18MCxrW2grND4+Ml18MCl8MDtrW3U+PjJdPWg7a1tEPj4yXT0wO2lmKChrW3U+PjJdfDApIT0oa1t3Pj4yXXwwKSl7Wksoa1tuPj4yXXwwLDQxMzg3LFgpO2tbdz4+Ml09a1t1Pj4yXX19ZWxzZSBiYT0xOTt3aGlsZSgwKTtpZigoYmF8MCk9PTE5KXtiYT0wO2g9a1tuPj4yXXwwO2Y9a1t0Pj4yXXwwO2c9KGtbVj4+Ml18MCktNHwwO2tbXz4+Ml09a1tMPj4yXTtrW18rND4+Ml09ZjtrW18rOD4+Ml09ZztaSyhoLDQxMzA5LF8pO2tbeD4+Ml09MH1rW0E+PjJdPShrW0E+PjJdfDApKy0xfVg9cTtfPWtbWCs0Pj4yXXwwOyQ9a1twPj4yXXwwO2tbJD4+Ml09a1tYPj4yXTtrWyQrND4+Ml09XztrWyhrW24+PjJdfDApKzI4Pj4yXT0wO2lmKChrW3g+PjJdfDApIT0wPyhrWyhrW24+PjJdfDApKzE2Pj4yXXwwKT4wOjApe2E6ZG8gaWYoIShpWyhrW0s+PjJdfDApKzQ+PjBdfDApKXtrW3o+PjJdPWtbKGtbbj4+Ml18MCkrNjg+PjJdO2tba1t6Pj4yXT4+Ml09MDtrW0E+PjJdPShrW0U+PjJdfDApLTE7d2hpbGUoMSl7aWYoKGtbQT4+Ml18MCk8MClicmVhayBhO2tbTD4+Ml09bFsoa1t2Pj4yXXwwKSsoKGtbcz4+Ml18MCkrKGtbQT4+Ml08PDEpKT4+MF08PDh8bFsoa1t2Pj4yXXwwKSsoKGtbcz4+Ml18MCkrKGtbQT4+Ml08PDEpKSsxPj4wXTskPShnY1trWyhrW0s+PjJdfDApKzc2Pj4yXSYyNTVdKGtbSz4+Ml18MCwoa1t2Pj4yXXwwKSsoa1tMPj4yXXwwKXwwKXwwKSY2NTUzNTtrW1Q+PjJdPSQ7JEsoa1t6Pj4yXXwwLGtbTD4+Ml08PDE2fChrW0w+PjJdfDApKyhrW1Q+PjJdfDApLTEpO2tbQT4+Ml09KGtbQT4+Ml18MCkrLTF9fXdoaWxlKDApO2tbQT4+Ml09bFsoa1t2Pj4yXXwwKSsoKGtbeT4+Ml18MCkrMSk+PjBdPDw4fGxbKGtbdj4+Ml18MCkrKChrW3k+PjJdfDApKzEpKzE+PjBdO3doaWxlKDEpe2lmKChrW0E+PjJdfDApPD0wKWJyZWFrO2tbVT4+Ml09bFsoa1t2Pj4yXXwwKSsoKGtbQT4+Ml18MCkrMik+PjBdPDw4fGxbKGtbdj4+Ml18MCkrKChrW0E+PjJdfDApKzIpKzE+PjBdOyRLKGtbej4+Ml18MCxrW0E+PjJdPDwxNnwoa1tBPj4yXXwwKSsoa1tVPj4yXXwwKS0xKTtrW0M+PjJdPWxbKGtbdj4+Ml18MCkrKGtbQT4+Ml18MCk+PjBdPDw4fGxbKGtbdj4+Ml18MCkrKGtbQT4+Ml18MCkrMT4+MF07a1tBPj4yXT1rW0M+PjJdfWtbRj4+Ml09MDtrW08+PjJdPShrW3Q+PjJdfDApLTE7d2hpbGUoMSl7aWYoIShhTChrW3o+PjJdfDAsYWEpfDApKWJyZWFrO2lmKChrW08+PjJdJjY1NTM1KT4+PjA+PShrW2FhPj4yXXwwKT4+PjE2Pj4+MCl7YmE9NTE7YnJlYWt9a1tGPj4yXT0oa1tGPj4yXXwwKSsoKChrW2FhPj4yXXwwKT4+PjE2KS0oa1tPPj4yXSY2NTUzNSktMSk7a1tPPj4yXT1rW2FhPj4yXX1pZigoYmF8MCk9PTUxKXtiYT1rW24+PjJdfDA7JD1rW28+PjJdfDA7a1tZPj4yXT0oa1thYT4+Ml18MCk+Pj4xNjtrW1krND4+Ml09JDtaSyhiYSw0MTQxMixZKX1rW0Y+PjJdPShrW0Y+PjJdfDApKygoa1tWPj4yXXwwKS0oa1tPPj4yXSY2NTUzNSktMSk7aWYoKGtba1t6Pj4yXT4+Ml18MCk9PTA/KGtbRj4+Ml18MCkhPShsWyhrW3Y+PjJdfDApKygoa1t5Pj4yXXwwKSs3KT4+MF18MCk6MCl7YmE9a1tuPj4yXXwwOyQ9bFsoa1t2Pj4yXXwwKSsoKGtbeT4+Ml18MCkrNyk+PjBdfDA7YWE9a1tvPj4yXXwwO2tbWj4+Ml09a1tGPj4yXTtrW1orND4+Ml09JDtrW1orOD4+Ml09YWE7WksoYmEsNDE0NDksWil9fX1lbHNle2JhPWtbbj4+Ml18MDtrW2c+PjJdPWtbZj4+Ml07WksoYmEsNDExNzksZyl9d2hpbGUoMCk7aWYoIShrW3g+PjJdfDApKWlba1tLPj4yXT4+MF09aVtQPj4wXXwwO19CKGtbSz4+Ml18MCk7a1soa1tuPj4yXXwwKSsyOD4+Ml09a1tTPj4yXTtrWyhrW24+PjJdfDApKzMyPj4yXT1rW1E+PjJdO2tbKGtbbj4+Ml18MCkrMzY+PjJdPWtbUj4+Ml07a1tqPj4yXT0oa1t3Pj4yXXwwKSsxO2JhPWtbaj4+Ml18MDtyPWNhO3JldHVybiBiYXwwfWZ1bmN0aW9uIFlLKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wO2U9cjtyPXIrMTZ8MDtkPWUrNHwwO2M9ZTtrW2Q+PjJdPWE7a1tjPj4yXT1iO3I9ZTtyZXR1cm4gKGxbKGtbKGtbZD4+Ml18MCkrOD4+Ml18MCkrKCgoa1tjPj4yXXwwKT4+PjApLzh8MCk+PjBdfDApJjE8PChrW2M+PjJdJjcpfDB9ZnVuY3Rpb24gWksoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wO2g9cjtyPXIrMzJ8MDtnPWg7ZD1oKzI4fDA7ZT1oKzI0fDA7Zj1oKzh8MDtrW2Q+PjJdPWE7a1tlPj4yXT1iO2lmKCEoa1soa1tkPj4yXXwwKSsxNj4+Ml18MCkpe3I9aDtyZXR1cm59Yj0oa1tkPj4yXXwwKSsxNnwwO2tbYj4+Ml09KGtbYj4+Ml18MCkrLTE7Yj0oa1tkPj4yXXwwKSsyMHwwO2tbYj4+Ml09KGtbYj4+Ml18MCkrMTtrW2Y+PjJdPWM7aWYoa1soa1tkPj4yXXwwKSs0MCsxMj4+Ml18MClDQSgoa1tkPj4yXXwwKSs0MHwwLDQxMTY3LDEpO2lmKGtbKGtbZD4+Ml18MCkrMjg+PjJdfDApe2M9KGtbZD4+Ml18MCkrNDB8MDtiPWtbKGtbZD4+Ml18MCkrMjg+PjJdfDA7YT1rWyhrW2Q+PjJdfDApKzM2Pj4yXXwwO2tbZz4+Ml09a1soa1tkPj4yXXwwKSszMj4+Ml07a1tnKzQ+PjJdPWE7QkEoYyxiLGcpfW9nKChrW2Q+PjJdfDApKzQwfDAsa1tlPj4yXXwwLGYpO2lmKChsWyhrW2Q+PjJdfDApKzQwKzI0Pj4wXXwwfDApIT0xKXtyPWg7cmV0dXJufWtbKGtbZD4+Ml18MCkrMjQ+PjJdPTE7cj1oO3JldHVybn1mdW5jdGlvbiBfSyhhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wLGg9MDtoPXI7cj1yKzMyfDA7Zz1oKzh8MDtkPWg7Zj1oKzIwfDA7Yz1oKzE2fDA7ZT1oKzEyfDA7a1tjPj4yXT1hO2tbZT4+Ml09YjtkbyBpZihrW2U+PjJdfDApe2I9a1tjPj4yXXwwO2E9a1tlPj4yXXwwO2lmKChrW2U+PjJdfDApPj4+MD4oa1soa1tjPj4yXXwwKSsxMj4+Ml18MCk+Pj4wKXtrW2Q+PjJdPWE7WksoYiw0MTUwMSxkKTtrW2Y+PjJdPTE7YnJlYWt9ZD0oWUsoYixhKXwwKSE9MDthPWtbYz4+Ml18MDtiPWtbZT4+Ml18MDtpZihkKXtrW2c+PjJdPWI7WksoYSw0MTUyNCxnKTtrW2Y+PjJdPTE7YnJlYWt9ZWxzZXtVSyhhLGIpO2tbZj4+Ml09MDticmVha319ZWxzZSBrW2Y+PjJdPTE7d2hpbGUoMCk7cj1oO3JldHVybiBrW2Y+PjJdfDB9ZnVuY3Rpb24gJEsoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MDtnPXI7cj1yKzE2fDA7Yz1nKzEyfDA7ZD1nKzh8MDtmPWcrNHwwO2U9ZztrW2M+PjJdPWE7a1tkPj4yXT1iO2E9a1tjPj4yXXwwO2I9KGtbYT4+Ml18MCkrMXwwO2tbYT4+Ml09YjtrW2U+PjJdPWI7a1soa1tjPj4yXXwwKSsoa1tlPj4yXTw8Mik+PjJdPWtbZD4+Ml07d2hpbGUoMSl7Yj0oKGtbZT4+Ml18MCk+Pj4wKS8yfDA7a1tmPj4yXT1iO2lmKGI+Pj4wPD0wKXtjPTU7YnJlYWt9aWYoKGtbKGtbYz4+Ml18MCkrKGtbZj4+Ml08PDIpPj4yXXwwKT4+PjA8PShrWyhrW2M+PjJdfDApKyhrW2U+PjJdPDwyKT4+Ml18MCk+Pj4wKXtjPTU7YnJlYWt9a1tkPj4yXT1rWyhrW2M+PjJdfDApKyhrW2Y+PjJdPDwyKT4+Ml07a1soa1tjPj4yXXwwKSsoa1tmPj4yXTw8Mik+PjJdPWtbKGtbYz4+Ml18MCkrKGtbZT4+Ml08PDIpPj4yXTtrWyhrW2M+PjJdfDApKyhrW2U+PjJdPDwyKT4+Ml09a1tkPj4yXTtrW2U+PjJdPWtbZj4+Ml19aWYoKGN8MCk9PTUpe3I9ZztyZXR1cm59fWZ1bmN0aW9uIGFMKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wLGk9MDtpPXI7cj1yKzMyfDA7Yz1pKzIwfDA7ZD1pKzE2fDA7ZT1pKzEyfDA7Zz1pKzh8MDtmPWkrNHwwO2g9aTtrW2Q+PjJdPWE7a1tlPj4yXT1iO2I9a1trW2Q+PjJdPj4yXXwwO2tbaD4+Ml09YjtpZighYil7a1tjPj4yXT0wO2g9a1tjPj4yXXwwO3I9aTtyZXR1cm4gaHwwfWtba1tlPj4yXT4+Ml09a1soa1tkPj4yXXwwKSs0Pj4yXTtrWyhrW2Q+PjJdfDApKzQ+PjJdPWtbKGtbZD4+Ml18MCkrKGtbaD4+Ml08PDIpPj4yXTtrWyhrW2Q+PjJdfDApKyhrW2g+PjJdPDwyKT4+Ml09LTE7Yj1rW2Q+PjJdfDA7a1tiPj4yXT0oa1tiPj4yXXwwKSstMTtrW2Y+PjJdPTE7d2hpbGUoMSl7Yj1rW2Y+PjJdPDwxO2tbZz4+Ml09YjtpZihiPj4+MD4oa1trW2Q+PjJdPj4yXXwwKT4+PjApYnJlYWs7aWYoKGtbKGtbZD4+Ml18MCkrKGtbZz4+Ml08PDIpPj4yXXwwKT4+PjA+KGtbKGtbZD4+Ml18MCkrKChrW2c+PjJdfDApKzE8PDIpPj4yXXwwKT4+PjApa1tnPj4yXT0oa1tnPj4yXXwwKSsxO2lmKChrWyhrW2Q+PjJdfDApKyhrW2Y+PjJdPDwyKT4+Ml18MCk+Pj4wPChrWyhrW2Q+PjJdfDApKyhrW2c+PjJdPDwyKT4+Ml18MCk+Pj4wKWJyZWFrO2tbaD4+Ml09a1soa1tkPj4yXXwwKSsoa1tmPj4yXTw8Mik+PjJdO2tbKGtbZD4+Ml18MCkrKGtbZj4+Ml08PDIpPj4yXT1rWyhrW2Q+PjJdfDApKyhrW2c+PjJdPDwyKT4+Ml07a1soa1tkPj4yXXwwKSsoa1tnPj4yXTw8Mik+PjJdPWtbaD4+Ml07a1tmPj4yXT1rW2c+PjJdfWtbYz4+Ml09MTtoPWtbYz4+Ml18MDtyPWk7cmV0dXJuIGh8MH1mdW5jdGlvbiBiTChhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTA7ZD1yO3I9cisxNnwwO2I9ZCs0fDA7Yz1kO2tbYj4+Ml09YTtpZighKGtbYj4+Ml18MCkpe2E9a1tiPj4yXXwwO1VkKGEpO3I9ZDtyZXR1cm59a1tjPj4yXT0wO3doaWxlKDEpe2lmKChrW2M+PjJdfDApPj0oa1trW2I+PjJdPj4yXXwwKSlicmVhaztmTCgoa1soa1tiPj4yXXwwKSsxMj4+Ml18MCkrKChrW2M+PjJdfDApKjU2fDApfDApO2tbYz4+Ml09KGtbYz4+Ml18MCkrMX1hPWtbYj4+Ml18MDtVZChhKTtyPWQ7cmV0dXJufWZ1bmN0aW9uIGNMKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wO2Q9cjtyPXIrMTZ8MDtlPWQrNHwwO2M9ZDtrW2U+PjJdPWE7a1tjPj4yXT1iO2JnKGtbZT4+Ml18MCxrWyhrW2M+PjJdfDApKzEyPj4yXXwwKTtkTCgwLGtbKGtbYz4+Ml18MCkrMTY+PjJdfDApO2lmKGtbKGtbYz4+Ml18MCkrNDA+PjJdfDApZUwoa1soa1tjPj4yXXwwKSs0MD4+Ml18MCk7aWYoIShrWyhrW2M+PjJdfDApKzU2Pj4yXXwwKSl7Yz1rW2M+PjJdfDA7YT1jKzcyfDA7ZG97a1tjPj4yXT0wO2M9Yys0fDB9d2hpbGUoKGN8MCk8KGF8MCkpO3I9ZDtyZXR1cm59ZUwoa1soa1tjPj4yXXwwKSs1Nj4+Ml18MCk7Yz1rW2M+PjJdfDA7YT1jKzcyfDA7ZG97a1tjPj4yXT0wO2M9Yys0fDB9d2hpbGUoKGN8MCk8KGF8MCkpO3I9ZDtyZXR1cm59ZnVuY3Rpb24gZEwoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MDtmPXI7cj1yKzE2fDA7Yz1mKzEyfDA7Zz1mKzh8MDtkPWYrNHwwO2U9ZjtrW2M+PjJdPWE7a1tnPj4yXT1iO2tbZD4+Ml09a1tnPj4yXTt3aGlsZSgxKXtpZighKGtbZD4+Ml18MCkpYnJlYWs7a1tlPj4yXT1rWyhrW2Q+PjJdfDApKzQ+PjJdO2JnKGtbYz4+Ml18MCxrW2Q+PjJdfDApO2tbZD4+Ml09a1tlPj4yXX1yPWY7cmV0dXJufWZ1bmN0aW9uIGVMKGEpe2E9YXwwO3ZhciBiPTAsYz0wO2I9cjtyPXIrMTZ8MDtjPWI7a1tjPj4yXT1hO3lyKGtbYz4+Ml18MCk7VWQoa1tjPj4yXXwwKTtyPWI7cmV0dXJufWZ1bmN0aW9uIGZMKGEpe2E9YXwwO3ZhciBiPTAsYz0wO2M9cjtyPXIrMTZ8MDtiPWM7a1tiPj4yXT1hO1VkKGtbKGtbYj4+Ml18MCkrMjg+PjJdfDApO1VkKGtbKGtbYj4+Ml18MCkrMzY+PjJdfDApO2lmKGtbKGtbYj4+Ml18MCkrNDQ+PjJdfDApV3Moa1soa1tiPj4yXXwwKSsyND4+Ml18MCwwLDAsa1soa1tiPj4yXXwwKSs0ND4+Ml18MCl8MDtnTChrWyhrW2I+PjJdfDApKzQ4Pj4yXXwwKTtiPWtbYj4+Ml18MDthPWIrNTZ8MDtkb3trW2I+PjJdPTA7Yj1iKzR8MH13aGlsZSgoYnwwKTwoYXwwKSk7cj1jO3JldHVybn1mdW5jdGlvbiBnTChhKXthPWF8MDt2YXIgYj0wLGM9MDtjPXI7cj1yKzE2fDA7Yj1jO2tbYj4+Ml09YTtpZighKGtbYj4+Ml18MCkpe3I9YztyZXR1cm59Ykwoa1soa1tiPj4yXXwwKSs0Pj4yXXwwKTtVZChrW2I+PjJdfDApO3I9YztyZXR1cm59ZnVuY3Rpb24gaEwoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTA7aj1yO3I9ciszMnwwO2U9aisxNnwwO2Y9ajtnPWorMTJ8MDtoPWorOHwwO2tbZT4+Ml09YTthPWY7a1thPj4yXT1iO2tbYSs0Pj4yXT1jO2tbZz4+Ml09ZDtpZighKGxbKGtbZT4+Ml18MCkrMTE+PjBdfDApKXtyPWo7cmV0dXJufWlbKGtbZT4+Ml18MCkrMTE+PjBdPTA7a1toPj4yXT1rWyhrWyhrW2U+PjJdfDApKzQ+PjJdfDApKzg+PjJdO3doaWxlKDEpe2lmKCEoa1toPj4yXXwwKSlicmVhaztkbyBpZigobFsoa1toPj4yXXwwKSs2ND4+MF18MCkmMTYpe2lbKGtbZT4+Ml18MCkrMTE+PjBdPTE7aWYoKGtbZz4+Ml18MCk9PTA/KGQ9KGtbaD4+Ml18MCkrMTZ8MCxhPWYsISgoa1tkPj4yXXwwKT09KGtbYT4+Ml18MCk/KGtbZCs0Pj4yXXwwKT09KGtbYSs0Pj4yXXwwKTowKSk6MClicmVhaztpWyhrW2g+PjJdfDApKzY2Pj4wXT0wfXdoaWxlKDApO2tbaD4+Ml09a1soa1toPj4yXXwwKSs4Pj4yXX1yPWo7cmV0dXJufWZ1bmN0aW9uIGlMKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLG49MCxvPTAscD0wLHE9MCxzPTAsdD0wLHU9MDt1PXI7cj1yKzQ4fDA7bz11KzM2fDA7Zj11KzMyfDA7ZT11KzI4fDA7cD11KzI0fDA7Zz11KzIwfDA7cz11KzE2fDA7dD11KzEyfDA7aj11Kzh8MDtoPXUrNHwwO3E9dTtuPXUrNDB8MDtrW2Y+PjJdPWE7a1tlPj4yXT1iO2tbcD4+Ml09YztrW2c+PjJdPWQ7ZD1rW2U+PjJdfDA7aWYoZD4+PjA+KFRGKGtbZj4+Ml18MCl8MCk+Pj4wKXt0PV9qKDY2Njg4KXwwO2tbbz4+Ml09dDt0PWtbbz4+Ml18MDtyPXU7cmV0dXJuIHR8MH1kPVNGKGtbZj4+Ml18MCxrW2U+PjJdfDAscywwLDApfDA7a1t0Pj4yXT1kO2lmKGtbdD4+Ml18MCl7a1tvPj4yXT1rW3Q+PjJdO3Q9a1tvPj4yXXwwO3I9dTtyZXR1cm4gdHwwfWE6ZG8gaWYoIShpWyhrW3M+PjJdfDApKzg+PjBdfDApKXtpWyhrW3M+PjJdfDApKzg+PjBdPTE7a1txPj4yXT1sWyhrW3M+PjJdfDApKzU+PjBdO2tbaD4+Ml09MDt3aGlsZSgxKXtlPWtbcz4+Ml18MDtpZigoa1toPj4yXXwwKT49KG1bKGtbcz4+Ml18MCkrMTg+PjFdfDApKWJyZWFrO2tbaj4+Ml09KGtbZSs1Nj4+Ml18MCkrKG1bKGtbcz4+Ml18MCkrMjA+PjFdJihsWyhrWyhrW3M+PjJdfDApKzY0Pj4yXXwwKSsoa1toPj4yXTw8MSk+PjBdPDw4fGxbKGtbKGtbcz4+Ml18MCkrNjQ+PjJdfDApKyhrW2g+PjJdPDwxKSsxPj4wXSkpO2lmKChpWyhrW3M+PjJdfDApKzQ+PjBdfDApPT0wPyhiPWtbZj4+Ml18MCxkPXFyKGtbaj4+Ml18MCl8MCxkPWlMKGIsZCwxLGtbZz4+Ml18MCl8MCxrW3Q+PjJdPWQsKGtbdD4+Ml18MCkhPTApOjApYnJlYWsgYTtkPWpMKGtbcz4+Ml18MCxrW2o+PjJdfDAsbil8MDtrW3Q+PjJdPWQ7aWYoa1t0Pj4yXXwwKWJyZWFrIGE7a1toPj4yXT0oa1toPj4yXXwwKSsxfWlmKGlbZSs0Pj4wXXwwKXtpZihrW2c+PjJdfDApe249a1tnPj4yXXwwO2tbbj4+Ml09KGtbbj4+Ml18MCkrKG1bKGtbcz4+Ml18MCkrMTg+PjFdfDApfX1lbHNle2o9a1tmPj4yXXwwO249cXIoKGtbKGtbcz4+Ml18MCkrNTY+PjJdfDApKygoa1txPj4yXXwwKSs4KXwwKXwwO249aUwoaixuLDEsa1tnPj4yXXwwKXwwO2tbdD4+Ml09bjtpZihrW3Q+PjJdfDApYnJlYWt9ZT1rW3M+PjJdfDA7aWYoa1twPj4yXXwwKXtrTChlLHQpO2JyZWFrfXA9UWcoa1tlKzcyPj4yXXwwKXwwO2tbdD4+Ml09cDtpZighcClsTChrW3M+PjJdfDAsbFsoa1soa1tzPj4yXXwwKSs1Nj4+Ml18MCkrKGtbcT4+Ml18MCk+PjBdfDgpfWVsc2V7cT1faig2NjY5Myl8MDtrW3Q+PjJdPXF9d2hpbGUoMCk7aVsoa1tzPj4yXXwwKSs4Pj4wXT0wO19CKGtbcz4+Ml18MCk7a1tvPj4yXT1rW3Q+PjJdO3Q9a1tvPj4yXXwwO3I9dTtyZXR1cm4gdHwwfWZ1bmN0aW9uIGpMKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxpPTAsbD0wLG49MCxvPTAscD0wLHE9MCxzPTAsdD0wLHU9MDt0PXI7cj1yKzgwfDA7ZD10KzY0fDA7ZT10KzYwfDA7Zj10KzU2fDA7dT10KzUyfDA7bz10KzQ4fDA7aD10O249dCs0NHwwO3E9dCs0MHwwO2k9dCszNnwwO2w9dCszMnwwO2c9dCsyOHwwO3A9dCsyNHwwO2tbZT4+Ml09YTtrW2Y+PjJdPWI7a1t1Pj4yXT1jO2tbbz4+Ml09a1soa1tlPj4yXXwwKSs1Mj4+Ml07Y2Nba1soa1tlPj4yXXwwKSs4MD4+Ml0mMjU1XShrW2U+PjJdfDAsa1tmPj4yXXwwLGgpO2pba1t1Pj4yXT4+MV09altoKzE4Pj4xXXwwO2lmKChtW2grMTY+PjFdfDB8MCk9PShrW2grMTI+PjJdfDApKXtrW2Q+PjJdPTA7dT1rW2Q+PjJdfDA7cj10O3JldHVybiB1fDB9aWYoKChrW2Y+PjJdfDApKyhtW2grMTg+PjFdfDApKy0xfDApPj4+MD4oKGtbKGtbZT4+Ml18MCkrNTY+PjJdfDApKyhtWyhrW2U+PjJdfDApKzIwPj4xXXwwKXwwKT4+PjApe3U9X2ooNjQyNDkpfDA7a1tkPj4yXT11O3U9a1tkPj4yXXwwO3I9dDtyZXR1cm4gdXwwfXU9cXIoKGtbZj4+Ml18MCkrKG1baCsxOD4+MV18MCkrLTR8MCl8MDtrW24+PjJdPXU7a1tsPj4yXT0oa1soa1tvPj4yXXwwKSszNj4+Ml18MCktNDtrW2k+PjJdPSgoKGtbaCsxMj4+Ml18MCktKG1baCsxNj4+MV18MCkrKGtbbD4+Ml18MCktMXwwKT4+PjApLygoa1tsPj4yXXwwKT4+PjApfDA7d2hpbGUoMSl7dT1rW2k+PjJdfDA7a1tpPj4yXT11Ky0xO2lmKCF1KXtzPTIzO2JyZWFrfWtbZz4+Ml09MDtrW3A+PjJdPTA7aWYoKGtbbj4+Ml18MCk+Pj4wPDIpe3M9OTticmVha311PWtbbj4+Ml18MDtpZih1Pj4+MD4oVEYoa1tvPj4yXXwwKXwwKT4+PjApe3M9OTticmVha31pZigoa1tpPj4yXXwwKSE9MD8odT1jRyhrW28+PjJdfDAsa1tuPj4yXXwwLHAsZyl8MCxrW3E+PjJdPXUsKGtbcT4+Ml18MCkhPTApOjApe3M9MTI7YnJlYWt9aWYoKGtbcD4+Ml18MCk9PTA/KHU9b0woa1tvPj4yXXwwLGtbbj4+Ml18MCl8MCxrW3A+PjJdPXUsKHV8MCk9PTApOjApcz0xNztlbHNlIGlmKChkdShrWyhrW3A+PjJdfDApKzcyPj4yXXwwKXwwKSE9MSl7dT1faig2NDI4NSl8MDtrW3E+PjJdPXV9ZWxzZSBzPTE3O2lmKChzfDApPT0xNyl7cz0wO3U9bUwoa1tvPj4yXXwwLGtbcD4+Ml18MCxrW24+PjJdfDApfDA7a1txPj4yXT11fWlmKGtbcD4+Ml18MClJZyhrWyhrW3A+PjJdfDApKzcyPj4yXXwwKTtpZihrW3E+PjJdfDApe3M9MjE7YnJlYWt9a1tuPj4yXT1rW2c+PjJdfWlmKChzfDApPT05KXt1PV9qKDY0MjY1KXwwO2tbZD4+Ml09dTt1PWtbZD4+Ml18MDtyPXQ7cmV0dXJuIHV8MH1lbHNlIGlmKChzfDApPT0xMil7a1tkPj4yXT1rW3E+PjJdO3U9a1tkPj4yXXwwO3I9dDtyZXR1cm4gdXwwfWVsc2UgaWYoKHN8MCk9PTIxKXtrW2Q+PjJdPWtbcT4+Ml07dT1rW2Q+PjJdfDA7cj10O3JldHVybiB1fDB9ZWxzZSBpZigoc3wwKT09MjMpe2tbZD4+Ml09MDt1PWtbZD4+Ml18MDtyPXQ7cmV0dXJuIHV8MH1yZXR1cm4gMH1mdW5jdGlvbiBrTChhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MDtlPXI7cj1yKzE2fDA7Yz1lKzR8MDtkPWU7a1tjPj4yXT1hO2tbZD4+Ml09YjtpZihrW2tbZD4+Ml0+PjJdfDApe3I9ZTtyZXR1cm59Yj1tTChrWyhrW2M+PjJdfDApKzUyPj4yXXwwLGtbYz4+Ml18MCxrWyhrW2M+PjJdfDApKzg0Pj4yXXwwKXwwO2tba1tkPj4yXT4+Ml09YjtyPWU7cmV0dXJufWZ1bmN0aW9uIGxMKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wLG49MDtuPXI7cj1yKzMyfDA7Yz1uKzEyfDA7ZD1uKzh8MDtlPW4rNHwwO2g9bjtnPW4rMTh8MDtmPW4rMTZ8MDtrW2M+PjJdPWE7a1tkPj4yXT1iO2tbZT4+Ml09a1soa1tjPj4yXXwwKSs1Nj4+Ml07a1toPj4yXT1rWyhrW2M+PjJdfDApKzUyPj4yXTtpW2c+PjBdPWlbKGtbYz4+Ml18MCkrNT4+MF18MDtpZigobVsoa1toPj4yXXwwKSsyMj4+MV18MCkmNClkUygoa1tlPj4yXXwwKSsobFtnPj4wXXwwKXwwLDAsKGtbKGtbaD4+Ml18MCkrMzY+PjJdfDApLShsW2c+PjBdfDApfDApfDA7aVsoa1tlPj4yXXwwKSsobFtnPj4wXXwwKT4+MF09a1tkPj4yXTtqW2Y+PjFdPShsW2c+PjBdfDApKygoa1tkPj4yXSY4fDApPT0wPzEyOjgpO2E9KGtbZT4+Ml18MCkrKChsW2c+PjBdfDApKzEpfDA7aVthPj4wXT0wO2lbYSsxPj4wXT0wO2lbYSsyPj4wXT0wO2lbYSszPj4wXT0wO2lbKGtbZT4+Ml18MCkrKChsW2c+PjBdfDApKzcpPj4wXT0wO2lbKGtbZT4+Ml18MCkrKChsW2c+PjBdfDApKzUpPj4wXT0oa1soa1toPj4yXXwwKSszNj4+Ml18MCk+Pj44O2lbKGtbZT4+Ml18MCkrKChsW2c+PjBdfDApKzUpKzE+PjBdPWtbKGtbaD4+Ml18MCkrMzY+PjJdO2pbKGtbYz4+Ml18MCkrMTY+PjFdPShrWyhrW2g+PjJdfDApKzM2Pj4yXXwwKS0obVtmPj4xXXwwKTtmdShrW2M+PjJdfDAsa1tkPj4yXXwwKXwwO2pbKGtbYz4+Ml18MCkrMTQ+PjFdPWpbZj4+MV18MDtrWyhrW2M+PjJdfDApKzYwPj4yXT0oa1tlPj4yXXwwKSsoa1soa1toPj4yXXwwKSszNj4+Ml18MCk7a1soa1tjPj4yXXwwKSs2ND4+Ml09KGtbZT4+Ml18MCkrKG1bZj4+MV18MCk7a1soa1tjPj4yXXwwKSs2OD4+Ml09KGtbZT4+Ml18MCkrKGxbKGtbYz4+Ml18MCkrNj4+MF18MCk7aVsoa1tjPj4yXXwwKSsxPj4wXT0wO2pbKGtbYz4+Ml18MCkrMjA+PjFdPShrWyhrW2g+PjJdfDApKzMyPj4yXXwwKS0xO2pbKGtbYz4+Ml18MCkrMTg+PjFdPTA7aVtrW2M+PjJdPj4wXT0xO3I9bjtyZXR1cm59ZnVuY3Rpb24gbUwoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxsPTAsbj0wLG89MCxwPTAscT0wLHM9MDtzPXI7cj1yKzQ4fDA7ZD1zKzQwfDA7ZT1zKzM2fDA7Zj1zKzMyfDA7Zz1zKzI4fDA7cD1zKzI0fDA7aD1zKzIwfDA7bz1zKzE2fDA7bj1zKzEyfDA7cT1zKzh8MDtqPXMrNHwwO2w9cztrW2U+PjJdPWE7a1tmPj4yXT1iO2tbZz4+Ml09YztrW3A+PjJdPTA7a1toPj4yXT0wO2tbbz4+Ml09a1soa1tlPj4yXXwwKSsxMj4+Ml07aWYoKGtbZz4+Ml18MCk+Pj4wPDIpe3E9X2ooNjQxMDMpfDA7a1tkPj4yXT1xO3E9a1tkPj4yXXwwO3I9cztyZXR1cm4gcXwwfWlmKGtbZj4+Ml18MCl7a1tuPj4yXT1rW2Y+PjJdO25MKGtbKGtbbj4+Ml18MCkrNzI+PjJdfDApfWVsc2V7Yj1vTChrW2U+PjJdfDAsa1tnPj4yXXwwKXwwO2tbbj4+Ml09Yn1iPVFnKGtbKGtbbz4+Ml18MCkrNzI+PjJdfDApfDA7a1txPj4yXT1iO2RvIGlmKCEoa1txPj4yXXwwKSl7Yj1xcigoa1soa1tvPj4yXXwwKSs1Nj4+Ml18MCkrMzZ8MCl8MDtrW2o+PjJdPWI7cHQoKGtbKGtbbz4+Ml18MCkrNTY+PjJdfDApKzM2fDAsKGtbaj4+Ml18MCkrMXwwKTtpZihtWyhrW2U+PjJdfDApKzIyPj4xXSY0KXtpZigoa1tuPj4yXXwwKT09MD8oYj1mRyhrW2U+PjJdfDAsa1tnPj4yXXwwLG4sMCl8MCxrW3E+PjJdPWIsKGJ8MCkhPTApOjApYnJlYWs7Yj1RZyhrWyhrW24+PjJdfDApKzcyPj4yXXwwKXwwO2tbcT4+Ml09YjtpZihiKWJyZWFrO2RTKGtbKGtbbj4+Ml18MCkrNTY+PjJdfDAsMCxrWyhrWyhrW24+PjJdfDApKzUyPj4yXXwwKSszMj4+Ml18MCl8MH1pZigoaVsoa1tlPj4yXXwwKSsxNz4+MF18MCkhPTA/KG9LKGtbZT4+Ml18MCxrW2c+PjJdfDAsMiwwLHEpLChrW3E+PjJdfDApIT0wKTowKWJyZWFrO2lmKGtbaj4+Ml18MCl7Yj1xcigoa1soa1tvPj4yXXwwKSs1Nj4+Ml18MCkrMzJ8MCl8MDtrW2g+PjJdPWI7Yj1mRyhrW2U+PjJdfDAsa1toPj4yXXwwLHAsMCl8MDtrW3E+PjJdPWI7aWYoa1txPj4yXXwwKWJyZWFrO2I9cXIoKGtbKGtbcD4+Ml18MCkrNTY+PjJdfDApKzR8MCl8MDtrW2w+PjJdPWI7aWYoKGtbbD4+Ml18MCk+Pj4wPigoKChrWyhrW2U+PjJdfDApKzM2Pj4yXXwwKT4+PjApLzR8MCktMnwwKT4+PjApe289X2ooNjQxNTYpfDA7a1txPj4yXT1vO2JyZWFrfWlmKChrW2w+PjJdfDApPj4+MDwoKCgoa1soa1tlPj4yXXwwKSszNj4+Ml18MCk+Pj4wKS80fDApLTh8MCk+Pj4wKXtvPVFnKGtbKGtbcD4+Ml18MCkrNzI+PjJdfDApfDA7a1txPj4yXT1vO2lmKGtbcT4+Ml18MClicmVhaztwdCgoa1soa1twPj4yXXwwKSs1Nj4+Ml18MCkrNHwwLChrW2w+PjJdfDApKzF8MCk7cHQoKGtbKGtbcD4+Ml18MCkrNTY+PjJdfDApKyg4KyhrW2w+PjJdPDwyKSl8MCxrW2c+PjJdfDApO2lmKChrW24+PjJdfDApIT0wPyhtWyhrW2U+PjJdfDApKzIyPj4xXSY0fDApPT0wOjApcEwoa1soa1tuPj4yXXwwKSs3Mj4+Ml18MCk7bz1xTChrW2U+PjJdfDAsa1tnPj4yXXwwKXwwO2tbcT4+Ml09bzticmVha319aWYoKGtbbj4+Ml18MCk9PTA/KGI9Zkcoa1tlPj4yXXwwLGtbZz4+Ml18MCxuLDApfDAsa1txPj4yXT1iLDAhPShifDApKTowKWJyZWFrO2I9UWcoa1soa1tuPj4yXXwwKSs3Mj4+Ml18MCl8MDtrW3E+PjJdPWI7aWYoIShrW3E+PjJdfDApKXtwdChrWyhrW24+PjJdfDApKzU2Pj4yXXwwLGtbaD4+Ml18MCk7cHQoKGtbKGtbbj4+Ml18MCkrNTY+PjJdfDApKzR8MCwwKTtwdCgoa1soa1tvPj4yXXwwKSs1Nj4+Ml18MCkrMzJ8MCxrW2c+PjJdfDApfX13aGlsZSgwKTtpZihrW24+PjJdfDApaVtrW24+PjJdPj4wXT0wO19CKGtbbj4+Ml18MCk7X0Ioa1twPj4yXXwwKTtrW2Q+PjJdPWtbcT4+Ml07cT1rW2Q+PjJdfDA7cj1zO3JldHVybiBxfDB9ZnVuY3Rpb24gbkwoYSl7YT1hfDA7dmFyIGI9MCxjPTA7Yj1yO3I9cisxNnwwO2M9YjtrW2M+PjJdPWE7ckwoa1tjPj4yXXwwKTtyPWI7cmV0dXJufWZ1bmN0aW9uIG9MKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTA7Zz1yO3I9cisxNnwwO2M9ZysxMnwwO2Q9Zys4fDA7ZT1nKzR8MDtmPWc7a1tkPj4yXT1hO2tbZT4+Ml09YjtiPXJzKGtba1tkPj4yXT4+Ml18MCxrW2U+PjJdfDApfDA7a1tmPj4yXT1iO2lmKGtbZj4+Ml18MCl7Yj1VRihrW2Y+PjJdfDAsa1tlPj4yXXwwLGtbZD4+Ml18MCl8MDtrW2M+PjJdPWI7Yj1rW2M+PjJdfDA7cj1nO3JldHVybiBifDB9ZWxzZXtrW2M+PjJdPTA7Yj1rW2M+PjJdfDA7cj1nO3JldHVybiBifDB9cmV0dXJuIDB9ZnVuY3Rpb24gcEwoYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wO2Q9cjtyPXIrMTZ8MDtiPWQrNHwwO2M9ZDtrW2I+PjJdPWE7a1tjPj4yXT1rWyhrW2I+PjJdfDApKzE2Pj4yXTtpZihpWyhrW2M+PjJdfDApKzEzPj4wXXwwKXtyPWQ7cmV0dXJufWlmKCEobVsoa1tiPj4yXXwwKSsyND4+MV0mMikpe3I9ZDtyZXR1cm59aWYoa1soa1tjPj4yXXwwKSsxMDQ+PjJdfDApe3I9ZDtyZXR1cm59YT0oa1tiPj4yXXwwKSsyNHwwO2pbYT4+MV09bVthPj4xXXwxNjthPShrW2I+PjJdfDApKzI0fDA7althPj4xXT1tW2E+PjFdJi01O3I9ZDtyZXR1cm59ZnVuY3Rpb24gcUwoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wO2Y9cjtyPXIrMTZ8MDtjPWYrOHwwO2Q9Zis0fDA7ZT1mO2tbYz4+Ml09YTtrW2Q+PjJdPWI7a1tlPj4yXT0wO2lmKChrWyhrW2M+PjJdfDApKzYwPj4yXXwwKT09MD8oYj11aihrWyhrW2M+PjJdfDApKzQ0Pj4yXXwwKXwwLGtbKGtbYz4+Ml18MCkrNjA+PjJdPWIsKGtbKGtbYz4+Ml18MCkrNjA+PjJdfDApPT0wKTowKWtbZT4+Ml09NztpZihrW2U+PjJdfDApe2U9a1tlPj4yXXwwO3I9ZjtyZXR1cm4gZXwwfWI9a1tkPj4yXXwwO2lmKGI+Pj4wPih5aihrWyhrW2M+PjJdfDApKzYwPj4yXXwwKXwwKT4+PjApe2U9a1tlPj4yXXwwO3I9ZjtyZXR1cm4gZXwwfWI9dmooa1soa1tjPj4yXXwwKSs2MD4+Ml18MCxrW2Q+PjJdfDApfDA7a1tlPj4yXT1iO2U9a1tlPj4yXXwwO3I9ZjtyZXR1cm4gZXwwfWZ1bmN0aW9uIHJMKGEpe2E9YXwwO3ZhciBiPTAsYz0wO2I9cjtyPXIrMTZ8MDtjPWI7a1tjPj4yXT1hO2E9KGtbYz4+Ml18MCkrMjZ8MDtqW2E+PjFdPShqW2E+PjFdfDApKzE8PDE2Pj4xNjthPShrWyhrW2M+PjJdfDApKzI4Pj4yXXwwKSsxMnwwO2tbYT4+Ml09KGtbYT4+Ml18MCkrMTtyPWI7cmV0dXJufWZ1bmN0aW9uIHNMKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsbD0wLG09MCxuPTAsbz0wO289cjtyPXIrNDh8MDtkPW8rMzJ8MDtlPW8rMjh8MDtmPW8rMjR8MDtnPW8rMjB8MDtuPW8rMTZ8MDttPW8rMTJ8MDtqPW8rOHwwO2g9bys0fDA7bD1vO2tbZT4+Ml09YTtrW2Y+PjJdPWI7a1tnPj4yXT1jO2tbbT4+Ml09MDtrW2o+PjJdPWtbKGtbZT4+Ml18MCkrND4+Ml07aWYoa1soa1tqPj4yXXwwKSs4Pj4yXXwwKXtrW2Q+PjJdPTI2MjtuPWtbZD4+Ml18MDtyPW87cmV0dXJuIG58MH1pZigoa1tmPj4yXXwwKT4+PjA8Mil7bj1faig2NjgxNCl8MDtrW2Q+PjJdPW47bj1rW2Q+PjJdfDA7cj1vO3JldHVybiBufDB9Yz1mRyhrW2o+PjJdfDAsa1tmPj4yXXwwLG0sMCl8MDtrW24+PjJdPWM7aWYoa1tuPj4yXXwwKXtrW2Q+PjJdPWtbbj4+Ml07bj1rW2Q+PjJdfDA7cj1vO3JldHVybiBufDB9Yz1HSihrW2U+PjJdfDAsa1tmPj4yXXwwLDApfDA7a1tuPj4yXT1jO2lmKGtbbj4+Ml18MCl7X0Ioa1ttPj4yXXwwKTtrW2Q+PjJdPWtbbj4+Ml07bj1rW2Q+PjJdfDA7cj1vO3JldHVybiBufDB9a1trW2c+PjJdPj4yXT0wO2lmKGlbKGtbaj4+Ml18MCkrMTc+PjBdfDApe0JnKGtbZT4+Ml18MCw0LGgpO2I9a1ttPj4yXXwwO2RvIGlmKChrW2Y+PjJdfDApPT0oa1toPj4yXXwwKSl7a0woYixuKTtfQihrW20+PjJdfDApO2lmKGtbbj4+Ml18MCl7a1tkPj4yXT1rW24+PjJdO249a1tkPj4yXXwwO3I9bztyZXR1cm4gbnwwfX1lbHNle19CKGIpO209Zkcoa1tqPj4yXXwwLGtbaD4+Ml18MCxsLDApfDA7a1tuPj4yXT1tO2lmKGtbbj4+Ml18MCl7a1tkPj4yXT1rW24+PjJdO249a1tkPj4yXXwwO3I9bztyZXR1cm4gbnwwfW09bEsoa1tqPj4yXXwwLGtbbD4+Ml18MCwxLDAsa1tmPj4yXXwwLDApfDA7a1tuPj4yXT1tO19CKGtbbD4+Ml18MCk7aWYoa1tuPj4yXXwwKXtrW2Q+PjJdPWtbbj4+Ml07bj1rW2Q+PjJdfDA7cj1vO3JldHVybiBufDB9a1tsPj4yXT0wO209Zkcoa1tqPj4yXXwwLGtbaD4+Ml18MCxsLDApfDA7a1tuPj4yXT1tO2tMKGtbbD4+Ml18MCxuKTtfQihrW2w+PjJdfDApO2lmKCEoa1tuPj4yXXwwKSl7a1trW2c+PjJdPj4yXT1rW2g+PjJdO2JyZWFrfWtbZD4+Ml09a1tuPj4yXTtuPWtbZD4+Ml18MDtyPW87cmV0dXJuIG58MH13aGlsZSgwKTtrW2g+PjJdPShrW2g+PjJdfDApKy0xO3doaWxlKDEpe2lmKChrW2g+PjJdfDApIT0oKCgoa1szODRdfDApPj4+MCkvKChrWyhrW2o+PjJdfDApKzMyPj4yXXwwKT4+PjApfDApKzF8MCk/KG09ZEcoa1tqPj4yXXwwLGtbaD4+Ml18MCl8MCwobXwwKSE9KGtbaD4+Ml18MCkpOjApYnJlYWs7a1toPj4yXT0oa1toPj4yXXwwKSstMX1tPUxnKGtbZT4+Ml18MCw0LGtbaD4+Ml18MCl8MDtrW24+PjJdPW19ZWxzZXtrTChrW20+PjJdfDAsbik7X0Ioa1ttPj4yXXwwKX1rW2Q+PjJdPWtbbj4+Ml07bj1rW2Q+PjJdfDA7cj1vO3JldHVybiBufDB9ZnVuY3Rpb24gdEwoYSl7YT1hfDA7dmFyIGI9MCxjPTA7Yj1yO3I9cisxNnwwO2M9YjtrW2M+PjJdPWE7aVsoa1tjPj4yXXwwKSs1Nj4+MF09MTthPXVMKChrW2M+PjJdfDApKzY0fDAsKGtbYz4+Ml18MCkrMzZ8MCl8MDtyPWI7cmV0dXJuIGF8MH1mdW5jdGlvbiB1TChhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wLGg9MCxpPTAsaj0wO2o9cjtyPXIrNjR8MDtkPWorNjB8MDtlPWorNTZ8MDtjPWorNTJ8MDtoPWorNDh8MDtpPWo7Zj1qKzQ0fDA7Zz1qKzQwfDA7a1tkPj4yXT1hO2tbZT4+Ml09YjtrW2M+PjJdPWtbKGtbKGtbZD4+Ml18MCkrOD4+Ml18MCkrMjQ+PjJdO2tbaD4+Ml09MDtiPWk7YT1iKzQwfDA7ZG97a1tiPj4yXT0wO2I9Yis0fDB9d2hpbGUoKGJ8MCk8KGF8MCkpO2lmKCEoa1soa1tkPj4yXXwwKSs0MD4+Ml18MCkpe2M9dkwoa1tjPj4yXXwwLDAsMCwoa1tkPj4yXXwwKSs0MHwwKXwwO2tbaD4+Ml09Y31pZighKGtbaD4+Ml18MCkpe2M9d0woa1tkPj4yXXwwLGtbZT4+Ml18MCl8MDtrW2g+PjJdPWN9aWYoa1toPj4yXXwwKXtpPWtbaD4+Ml18MDtyPWo7cmV0dXJuIGl8MH1rW2c+PjJdPTA7Yz0oa1tkPj4yXXwwKSs0MCs4fDA7eEwoa1soa1tkPj4yXXwwKSs0MD4+Ml18MCxpLGtbKGtbKGtbZD4+Ml18MCkrOD4+Ml18MCkrMTI+PjJdfDAsa1tjPj4yXXwwLGtbYys0Pj4yXXwwKTtjPShrW2Q+PjJdfDApKzI4fDA7a1tjPj4yXT0oa1tjPj4yXXwwKSsxO2M9a1soa1tlPj4yXXwwKSs4Pj4yXXwwO3lMKGksYywoKGN8MCk8MCk8PDMxPj4zMSk7a1tmPj4yXT1rW2tbZT4+Ml0+PjJdO3doaWxlKDEpe2I9a1tmPj4yXXwwO2lmKCEoa1tmPj4yXXwwKSlicmVhaztrW2c+PjJdPWtbYis0Pj4yXTtjPWtba1tmPj4yXT4+Ml18MDt5TChpLGMsKChjfDApPDApPDwzMT4+MzEpO3pMKGksKGtbZj4+Ml18MCkrOHwwLGtba1tmPj4yXT4+Ml18MCk7aWYoIShrWyhrW2U+PjJdfDApKzQ+PjJdfDApKVVkKGtbZj4+Ml18MCk7a1tmPj4yXT1rW2c+PjJdfWtba1tlPj4yXT4+Ml09YjtpPUFMKGksKGtbZD4+Ml18MCkrNDArOHwwKXwwO2tbaD4+Ml09aTtpPWtbaD4+Ml18MDtyPWo7cmV0dXJuIGl8MH1mdW5jdGlvbiB2TChhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGk9MCxqPTA7aj1yO3I9ciszMnwwO2U9aisyOHwwO2Y9aisyNHwwO2c9aisyMHwwO2k9aisxNnwwO2g9ajtrW2Y+PjJdPWE7YT1qKzh8MDtrW2E+PjJdPWI7a1thKzQ+PjJdPWM7a1tnPj4yXT1kO2lmKExpKDIwMil8MCl7a1tlPj4yXT0zMzM4O2k9a1tlPj4yXXwwO3I9ajtyZXR1cm4gaXwwfWQ9SUwoa1trW2Y+PjJdPj4yXXwwLDAsa1tnPj4yXXwwLDQxMjYsaSl8MDtrW2k+PjJdPWQ7aWYoIShrW2k+PjJdfDApKXtkPWg7a1tkPj4yXT0wO2tbZCs0Pj4yXT0wO2J0KGtba1tnPj4yXT4+Ml18MCwxOCxoKX1rW2U+PjJdPWtbaT4+Ml07aT1rW2U+PjJdfDA7cj1qO3JldHVybiBpfDB9ZnVuY3Rpb24gd0woYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTAsaT0wLGo9MCxtPTA7bT1yO3I9ciszMnwwO2U9bSsyOHwwO2Y9bSsyNHwwO2c9bSsyMHwwO2k9bSsxNnwwO2g9bSsxMnwwO2o9bSs4fDA7Yz1tKzR8MDtkPW07a1tmPj4yXT1hO2tbZz4+Ml09YjthPUJMKGtbZj4+Ml18MCl8MDtrW2M+PjJdPWE7aWYoa1tjPj4yXXwwKXtrW2U+PjJdPWtbYz4+Ml07aj1rW2U+PjJdfDA7cj1tO3JldHVybiBqfDB9a1tqPj4yXT1rW2tbZz4+Ml0+PjJdO2M9Q0woa1soa1tmPj4yXXwwKSs4Pj4yXXwwKXwwO2tbKGtbZj4+Ml18MCkrMzI+PjJdPWM7Yz11ZygyNTYsMCl8MDtrW2g+PjJdPWM7aWYoIShrW2g+PjJdfDApKXtrW2U+PjJdPTc7aj1rW2U+PjJdfDA7cj1tO3JldHVybiBqfDB9d2hpbGUoMSl7aWYoIShrW2o+PjJdfDApKWJyZWFrO2I9a1tqPj4yXXwwO2RvIGlmKGtbKGtbZz4+Ml18MCkrND4+Ml18MClpZigoYnwwKT09KGtbKGtbZz4+Ml18MCkrND4+Ml18MCkpe2tbZD4+Ml09MDticmVha31lbHNle2tbZD4+Ml09KGtbKGtbZz4+Ml18MCkrND4+Ml18MCkrKGtbKGtbaj4+Ml18MCkrND4+Ml18MCk7YnJlYWt9ZWxzZSBrW2Q+PjJdPWtbYis0Pj4yXTt3aGlsZSgwKTtrWyhrW2o+PjJdfDApKzQ+PjJdPTA7a1tpPj4yXT0wO3doaWxlKDEpe2lmKCEoa1soa1toPj4yXXwwKSsoa1tpPj4yXTw8Mik+PjJdfDApKWJyZWFrO2M9REwoa1tmPj4yXXwwLGtbaj4+Ml18MCxrWyhrW2g+PjJdfDApKyhrW2k+PjJdPDwyKT4+Ml18MCl8MDtrW2o+PjJdPWM7a1soa1toPj4yXXwwKSsoa1tpPj4yXTw8Mik+PjJdPTA7a1tpPj4yXT0oa1tpPj4yXXwwKSsxfWtbKGtbaD4+Ml18MCkrKGtbaT4+Ml08PDIpPj4yXT1rW2o+PjJdO2tbaj4+Ml09a1tkPj4yXX1rW2o+PjJdPTA7a1tpPj4yXT0wO3doaWxlKDEpe2lmKChrW2k+PjJdfDApPj02NClicmVhaztpZihrWyhrW2g+PjJdfDApKyhrW2k+PjJdPDwyKT4+Ml18MCl7aWYoa1tqPj4yXXwwKWI9REwoa1tmPj4yXXwwLGtbaj4+Ml18MCxrWyhrW2g+PjJdfDApKyhrW2k+PjJdPDwyKT4+Ml18MCl8MDtlbHNlIGI9a1soa1toPj4yXXwwKSsoa1tpPj4yXTw8Mik+PjJdfDA7a1tqPj4yXT1ifWtbaT4+Ml09KGtbaT4+Ml18MCkrMX1rW2tbZz4+Ml0+PjJdPWtbaj4+Ml07VWQoa1toPj4yXXwwKTtrW2U+PjJdPWxbKGtbKGtbZj4+Ml18MCkrMTI+PjJdfDApKzExPj4wXTtqPWtbZT4+Ml18MDtyPW07cmV0dXJuIGp8MH1mdW5jdGlvbiB4TChhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxpPTAsaj0wO2o9cjtyPXIrMzJ8MDtmPWorMTZ8MDtnPWorMTJ8MDtoPWorOHwwO2k9ajtrW2Y+PjJdPWE7a1tnPj4yXT1iO2tbaD4+Ml09YzthPWk7a1thPj4yXT1kO2tbYSs0Pj4yXT1lO2Q9a1tnPj4yXXwwO2U9ZCs0MHwwO2Rve2tbZD4+Ml09MDtkPWQrNHwwfXdoaWxlKChkfDApPChlfDApKTthPWtbaD4+Ml18MDthPWpnKGEsKChhfDApPDApPDwzMT4+MzEpfDA7a1soa1tnPj4yXXwwKSs0Pj4yXT1hO2lmKGtbKGtbZz4+Ml18MCkrND4+Ml18MCl7Yj1pO2E9a1toPj4yXXwwO2E9alMoa1tiPj4yXXwwLGtbYis0Pj4yXXwwLGF8MCwoKGF8MCk8MCk8PDMxPj4zMXwwKXwwO2tbKGtbZz4+Ml18MCkrMTI+PjJdPWE7a1soa1tnPj4yXXwwKSsxNj4+Ml09YTthPWtbKGtbZz4+Ml18MCkrMTI+PjJdfDA7YT1fUihrW2k+PjJdfDAsa1tpKzQ+PjJdfDAsYXwwLCgoYXwwKTwwKTw8MzE+PjMxfDApfDA7aT0oa1tnPj4yXXwwKSsyNHwwO2tbaT4+Ml09YTtrW2krND4+Ml09TDtrWyhrW2c+PjJdfDApKzg+PjJdPWtbaD4+Ml07a1soa1tnPj4yXXwwKSszMj4+Ml09a1tmPj4yXTtyPWo7cmV0dXJufWVsc2V7a1trW2c+PjJdPj4yXT03O3I9ajtyZXR1cm59fWZ1bmN0aW9uIHlMKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MDtkPXI7cj1yKzMyfDA7Zz1kKzEyfDA7aD1kO2U9ZCs4fDA7Zj1kKzE2fDA7a1tnPj4yXT1hO2E9aDtrW2E+PjJdPWI7a1thKzQ+PjJdPWM7YT1oO2E9YUooZixrW2E+PjJdfDAsa1thKzQ+PjJdfDApfDA7a1tlPj4yXT1hO3pMKGtbZz4+Ml18MCxmLGtbZT4+Ml18MCk7cj1kO3JldHVybn1mdW5jdGlvbiB6TChhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaT0wLGo9MCxsPTA7aT1yO3I9ciszMnwwO2Q9aSsxNnwwO2U9aSsxMnwwO2Y9aSs4fDA7aD1pKzR8MDtnPWk7a1tkPj4yXT1hO2tbZT4+Ml09YjtrW2Y+PjJdPWM7a1toPj4yXT1rW2Y+PjJdO3doaWxlKDEpe2lmKChrW2g+PjJdfDApPD0wKXtkPTk7YnJlYWt9aWYoa1trW2Q+PjJdPj4yXXwwKXtkPTk7YnJlYWt9a1tnPj4yXT1rW2g+PjJdO2lmKChrW2c+PjJdfDApPigoa1soa1tkPj4yXXwwKSs4Pj4yXXwwKS0oa1soa1tkPj4yXXwwKSsxNj4+Ml18MCl8MCkpa1tnPj4yXT0oa1soa1tkPj4yXXwwKSs4Pj4yXXwwKS0oa1soa1tkPj4yXXwwKSsxNj4+Ml18MCk7YlMoKGtbKGtbZD4+Ml18MCkrND4+Ml18MCkrKGtbKGtbZD4+Ml18MCkrMTY+PjJdfDApfDAsKGtbZT4+Ml18MCkrKChrW2Y+PjJdfDApLShrW2g+PjJdfDApKXwwLGtbZz4+Ml18MCl8MDtiPShrW2Q+PjJdfDApKzE2fDA7a1tiPj4yXT0oa1tiPj4yXXwwKSsoa1tnPj4yXXwwKTtpZigoa1soa1tkPj4yXXwwKSsxNj4+Ml18MCk9PShrWyhrW2Q+PjJdfDApKzg+PjJdfDApKXtqPWtbKGtbZD4+Ml18MCkrMzI+PjJdfDA7Yz0oa1soa1tkPj4yXXwwKSs0Pj4yXXwwKSsoa1soa1tkPj4yXXwwKSsxMj4+Ml18MCl8MDtiPShrWyhrW2Q+PjJdfDApKzE2Pj4yXXwwKS0oa1soa1tkPj4yXXwwKSsxMj4+Ml18MCl8MDtsPShrW2Q+PjJdfDApKzI0fDA7YT1rWyhrW2Q+PjJdfDApKzEyPj4yXXwwO2E9JFIoa1tsPj4yXXwwLGtbbCs0Pj4yXXwwLGF8MCwoKGF8MCk8MCk8PDMxPj4zMXwwKXwwO2E9U2coaixjLGIsYSxMKXwwO2tba1tkPj4yXT4+Ml09YTtrWyhrW2Q+PjJdfDApKzE2Pj4yXT0wO2tbKGtbZD4+Ml18MCkrMTI+PjJdPTA7YT1rWyhrW2Q+PjJdfDApKzg+PjJdfDA7Yj0oa1tkPj4yXXwwKSsyNHwwO2M9YjthPSRSKGtbYz4+Ml18MCxrW2MrND4+Ml18MCxhfDAsKChhfDApPDApPDwzMT4+MzF8MCl8MDtrW2I+PjJdPWE7a1tiKzQ+PjJdPUx9a1toPj4yXT0oa1toPj4yXXwwKS0oa1tnPj4yXXwwKX1pZigoZHwwKT09OSl7cj1pO3JldHVybn19ZnVuY3Rpb24gQUwoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTAsaT0wO2Y9cjtyPXIrMTZ8MDtjPWYrOHwwO2Q9Zis0fDA7ZT1mO2tbYz4+Ml09YTtrW2Q+PjJdPWI7aWYoKChrW2tbYz4+Ml0+PjJdfDApPT0wPyhrWyhrW2M+PjJdfDApKzQ+PjJdfDApIT0wOjApPyhrWyhrW2M+PjJdfDApKzE2Pj4yXXwwKT4oa1soa1tjPj4yXXwwKSsxMj4+Ml18MCk6MCl7aD1rWyhrW2M+PjJdfDApKzMyPj4yXXwwO2c9KGtbKGtbYz4+Ml18MCkrND4+Ml18MCkrKGtbKGtbYz4+Ml18MCkrMTI+PjJdfDApfDA7YT0oa1soa1tjPj4yXXwwKSsxNj4+Ml18MCktKGtbKGtbYz4+Ml18MCkrMTI+PjJdfDApfDA7aT0oa1tjPj4yXXwwKSsyNHwwO2I9a1soa1tjPj4yXXwwKSsxMj4+Ml18MDtiPSRSKGtbaT4+Ml18MCxrW2krND4+Ml18MCxifDAsKChifDApPDApPDwzMT4+MzF8MCl8MDtiPVNnKGgsZyxhLGIsTCl8MDtrW2tbYz4+Ml0+PjJdPWJ9aD0oa1tjPj4yXXwwKSsyNHwwO2k9a1soa1tjPj4yXXwwKSsxNj4+Ml18MDtpPSRSKGtbaD4+Ml18MCxrW2grND4+Ml18MCxpfDAsKChpfDApPDApPDwzMT4+MzF8MCl8MDtkPWtbZD4+Ml18MDtrW2Q+PjJdPWk7a1tkKzQ+PjJdPUw7VWQoa1soa1tjPj4yXXwwKSs0Pj4yXXwwKTtrW2U+PjJdPWtba1tjPj4yXT4+Ml07Yz1rW2M+PjJdfDA7ZD1jKzQwfDA7ZG97a1tjPj4yXT0wO2M9Yys0fDB9d2hpbGUoKGN8MCk8KGR8MCkpO3I9ZjtyZXR1cm4ga1tlPj4yXXwwfWZ1bmN0aW9uIEJMKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MCxlPTA7ZT1yO3I9cisxNnwwO2I9ZSs4fDA7Yz1lKzR8MDtkPWU7a1tjPj4yXT1hO2RvIGlmKCEoa1soa1tjPj4yXXwwKSsxMj4+Ml18MCkpe2E9V0Yoa1soa1soa1tjPj4yXXwwKSs4Pj4yXXwwKSsyOD4+Ml18MCwwLDAsZCl8MDtrWyhrW2M+PjJdfDApKzEyPj4yXT1hO2lmKGtbZD4+Ml18MCl7alsoa1soa1tjPj4yXXwwKSsxMj4+Ml18MCkrOD4+MV09alsoa1soa1soa1tjPj4yXXwwKSs4Pj4yXXwwKSsyOD4+Ml18MCkrNj4+MV18MDtpWyhrWyhrW2M+PjJdfDApKzEyPj4yXXwwKSsxMT4+MF09MDticmVha31rW2I+PjJdPTc7YT1rW2I+PjJdfDA7cj1lO3JldHVybiBhfDB9d2hpbGUoMCk7a1tiPj4yXT0wO2E9a1tiPj4yXXwwO3I9ZTtyZXR1cm4gYXwwfWZ1bmN0aW9uIENMKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MDtkPXI7cj1yKzE2fDA7Yj1kKzR8MDtjPWQ7a1tjPj4yXT1hO2RvIGlmKChsWyhrW2M+PjJdfDApKzYwPj4wXXwwfDApIT0xKWlmKChsWyhrW2M+PjJdfDApKzYwPj4wXXwwfDApPT0yKXtrW2I+PjJdPTEzOTticmVha31lbHNle2tbYj4+Ml09MTQwO2JyZWFrfWVsc2Uga1tiPj4yXT0xMzg7d2hpbGUoMCk7cj1kO3JldHVybiBrW2I+PjJdfDB9ZnVuY3Rpb24gREwoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGk9MCxqPTAsbD0wO2w9cjtyPXIrMzJ8MDtkPWwrMjR8MDtnPWwrMjB8MDtoPWwrMTZ8MDtpPWwrMTJ8MDtqPWwrOHwwO2U9bCs0fDA7Zj1sO2tbZD4+Ml09YTtrW2c+PjJdPWI7a1toPj4yXT1jO2tbaT4+Ml09MDtrW2o+PjJdPWk7a1tlPj4yXT0wO3doaWxlKDEpe2E9YWNba1soa1tkPj4yXXwwKSszMj4+Ml0mMjU1XShrW2Q+PjJdfDAsZSwoa1tnPj4yXXwwKSs4fDAsa1trW2c+PjJdPj4yXXwwLChrW2g+PjJdfDApKzh8MCxrW2tbaD4+Ml0+PjJdfDApfDA7a1tmPj4yXT1hO2lmKChrW2Y+PjJdfDApPD0wKXtrW2tbaj4+Ml0+PjJdPWtbZz4+Ml07a1tqPj4yXT0oa1tnPj4yXXwwKSs0O2tbZz4+Ml09a1soa1tnPj4yXXwwKSs0Pj4yXTtpZighKGtbZz4+Ml18MCkpe2Q9NDticmVha31lbHNlIGNvbnRpbnVlfWVsc2V7a1trW2o+PjJdPj4yXT1rW2g+PjJdO2tbaj4+Ml09KGtbaD4+Ml18MCkrNDtrW2g+PjJdPWtbKGtbaD4+Ml18MCkrND4+Ml07a1tlPj4yXT0wO2lmKCEoa1toPj4yXXwwKSl7ZD02O2JyZWFrfWVsc2UgY29udGludWV9fWlmKChkfDApPT00KXtrW2tbaj4+Ml0+PjJdPWtbaD4+Ml07aj1rW2k+PjJdfDA7cj1sO3JldHVybiBqfDB9ZWxzZSBpZigoZHwwKT09Nil7a1trW2o+PjJdPj4yXT1rW2c+PjJdO2o9a1tpPj4yXXwwO3I9bDtyZXR1cm4ganwwfXJldHVybiAwfWZ1bmN0aW9uIEVMKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsbj0wLG89MCxwPTAscT0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTA7eD1yO3I9cis2NHwwO3A9eCs1MnwwO3E9eCs0OHwwO3M9eCs0NHwwO3Q9eCs0MHwwO3U9eCszNnwwO3Y9eCszMnwwO3o9eCsyOHwwO3k9eCsyNHwwO2g9eCsyMHwwO2o9eCsxNnwwO249eCsxMnwwO289eCs4fDA7dz14KzR8MDtnPXg7a1twPj4yXT1hO2tbcT4+Ml09YjtrW3M+PjJdPWM7a1t0Pj4yXT1kO2tbdT4+Ml09ZTtrW3Y+PjJdPWY7a1t6Pj4yXT1rW3M+PjJdO2tbeT4+Ml09a1t1Pj4yXTtrW2g+PjJdPWxbKGtbej4+Ml18MCkrMT4+MF07a1tqPj4yXT1sWyhrW3k+PjJdfDApKzE+PjBdO2tbbj4+Ml09KGtbej4+Ml18MCkrKGxba1t6Pj4yXT4+MF18MCk7a1tvPj4yXT0oa1t5Pj4yXXwwKSsobFtrW3k+PjJdPj4wXXwwKTtkPWtbaD4+Ml18MDtmPWtbaj4+Ml18MDthOmRvIGlmKCEoKGtbaD4+Ml18MCk+NyYoa1tqPj4yXXwwKT43KSl7aWYoKGR8MCk9PShmfDApKXtpZigobFtrW24+PjJdPj4wXV5sW2tbbz4+Ml0+PjBdKSYxMjgpe2tbdz4+Ml09KGxba1tuPj4yXT4+MF0mMTI4fDApIT0wPy0xOjE7YnJlYWt9a1t3Pj4yXT0wO2tbZz4+Ml09MDt3aGlsZSgxKXtpZigoa1tnPj4yXXwwKT49KGxbNDE3ODkrKGtbaD4+Ml18MCk+PjBdfDApKWJyZWFrIGE7ej0obFsoa1tuPj4yXXwwKSsoa1tnPj4yXXwwKT4+MF18MCktKGxbKGtbbz4+Ml18MCkrKGtbZz4+Ml18MCk+PjBdfDApfDA7a1t3Pj4yXT16O2lmKHopYnJlYWsgYTtrW2c+PjJdPShrW2c+PjJdfDApKzF9fWRvIGlmKChrW2o+PjJdfDApPD03KWlmKChrW2g+PjJdfDApPjcpe2tbdz4+Ml09LTE7YnJlYWt9ZWxzZXtrW3c+PjJdPShrW2g+PjJdfDApLShrW2o+PjJdfDApO2JyZWFrfWVsc2Uga1t3Pj4yXT0xO3doaWxlKDApO2lmKChrW3c+PjJdfDApPjApe2lmKCEobFtrW24+PjJdPj4wXSYxMjgpKWJyZWFrO2tbdz4+Ml09LTE7YnJlYWt9ZWxzZXtpZighKGxba1tvPj4yXT4+MF0mMTI4KSlicmVhaztrW3c+PjJdPTE7YnJlYWt9fWVsc2Uga1t3Pj4yXT1kLWY7d2hpbGUoMCk7ZD1rWyhrWyhrW3A+PjJdfDApKzg+PjJdfDApKzI4Pj4yXXwwO2lmKCEoa1t3Pj4yXXwwKSl7aWYoKG1bZCs2Pj4xXXwwKTw9MSl7ej1rW3c+PjJdfDA7cj14O3JldHVybiB6fDB9ej1ITChrW3A+PjJdfDAsa1txPj4yXXwwLGtbcz4+Ml18MCxrW3Q+PjJdfDAsa1t1Pj4yXXwwLGtbdj4+Ml18MCl8MDtrW3c+PjJdPXo7ej1rW3c+PjJdfDA7cj14O3JldHVybiB6fDB9ZWxzZXtpZighKGlba1tkKzE2Pj4yXT4+MF18MCkpe3o9a1t3Pj4yXXwwO3I9eDtyZXR1cm4genwwfXo9aGEoa1t3Pj4yXXwwLC0xKXwwO2tbdz4+Ml09ejt6PWtbdz4+Ml18MDtyPXg7cmV0dXJuIHp8MH1yZXR1cm4gMH1mdW5jdGlvbiBGTChhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLG49MCxvPTAscD0wLHE9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTA7eD1yO3I9cis2NHwwO3A9eCs0OHwwO3E9eCs0NHwwO3M9eCs0MHwwO3Q9eCszNnwwO3U9eCszMnwwO3Y9eCsyOHwwO3k9eCsyNHwwO2o9eCsyMHwwO249eCsxNnwwO289eCsxMnwwO2c9eCs4fDA7aD14KzR8MDt3PXg7a1twPj4yXT1hO2tbcT4+Ml09YjtrW3M+PjJdPWM7a1t0Pj4yXT1kO2tbdT4+Ml09ZTtrW3Y+PjJdPWY7a1t5Pj4yXT1rW3M+PjJdO2tbaj4+Ml09a1t1Pj4yXTtrW24+PjJdPShrW3k+PjJdfDApKyhsW2tbeT4+Ml0+PjBdfDApO2tbbz4+Ml09KGtbaj4+Ml18MCkrKGxba1tqPj4yXT4+MF18MCk7ZD0oa1t5Pj4yXXwwKSsxfDA7aWYoKGxbKGtbeT4+Ml18MCkrMT4+MF18MCk8MTI4KWtbZz4+Ml09bFtkPj4wXTtlbHNlIGxHKGQsZyl8MDtrW2c+PjJdPSgoa1tnPj4yXXwwKS0xM3wwKS8yfDA7ZD0oa1tqPj4yXXwwKSsxfDA7aWYoKGxbKGtbaj4+Ml18MCkrMT4+MF18MCk8MTI4KWtbaD4+Ml09bFtkPj4wXTtlbHNlIGxHKGQsaCl8MDtrW2g+PjJdPSgoa1toPj4yXXwwKS0xM3wwKS8yfDA7eT1vUihrW24+PjJdfDAsa1tvPj4yXXwwLChrW2c+PjJdfDApPChrW2g+PjJdfDApP2tbZz4+Ml18MDprW2g+PjJdfDApfDA7a1t3Pj4yXT15O2lmKCEoa1t3Pj4yXXwwKSlrW3c+PjJdPShrW2c+PjJdfDApLShrW2g+PjJdfDApO2Q9a1soa1soa1twPj4yXXwwKSs4Pj4yXXwwKSsyOD4+Ml18MDtpZighKGtbdz4+Ml18MCkpe2lmKChtW2QrNj4+MV18MCk8PTEpe3k9a1t3Pj4yXXwwO3I9eDtyZXR1cm4geXwwfXk9SEwoa1twPj4yXXwwLGtbcT4+Ml18MCxrW3M+PjJdfDAsa1t0Pj4yXXwwLGtbdT4+Ml18MCxrW3Y+PjJdfDApfDA7a1t3Pj4yXT15O3k9a1t3Pj4yXXwwO3I9eDtyZXR1cm4geXwwfWVsc2V7aWYoIShpW2tbZCsxNj4+Ml0+PjBdfDApKXt5PWtbdz4+Ml18MDtyPXg7cmV0dXJuIHl8MH15PWhhKGtbdz4+Ml18MCwtMSl8MDtrW3c+PjJdPXk7eT1rW3c+PjJdfDA7cj14O3JldHVybiB5fDB9cmV0dXJuIDB9ZnVuY3Rpb24gR0woYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGk9MCxqPTAsbD0wLG09MCxuPTAsbz0wO289cjtyPXIrMzJ8MDtnPW8rMjR8MDtoPW8rMjB8MDtpPW8rMTZ8MDtqPW8rMTJ8MDtsPW8rOHwwO209bys0fDA7bj1vO2tbZz4+Ml09YTtrW2g+PjJdPWI7a1tpPj4yXT1jO2tbaj4+Ml09ZDtrW2w+PjJdPWU7a1ttPj4yXT1mO2tbbj4+Ml09a1soa1tnPj4yXXwwKSsxMj4+Ml07aWYoa1trW2g+PjJdPj4yXXwwKXthPWtbaj4+Ml18MDtiPWtbaT4+Ml18MDtuPWtbbj4+Ml18MDtuPWpHKGEsYixuKXwwO3I9bztyZXR1cm4gbnwwfVhGKGtbKGtbKGtbZz4+Ml18MCkrOD4+Ml18MCkrMjg+PjJdfDAsa1ttPj4yXXwwLGtbbD4+Ml18MCxrW24+PjJdfDApO2tba1toPj4yXT4+Ml09MTthPWtbaj4+Ml18MDtiPWtbaT4+Ml18MDtuPWtbbj4+Ml18MDtuPWpHKGEsYixuKXwwO3I9bztyZXR1cm4gbnwwfWZ1bmN0aW9uIEhMKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxpPTAsaj0wLGw9MCxtPTAsbj0wLG89MDtvPXI7cj1yKzMyfDA7Zz1vKzI0fDA7aD1vKzIwfDA7aT1vKzE2fDA7aj1vKzEyfDA7bD1vKzh8MDttPW8rNHwwO249bztrW2c+PjJdPWE7a1toPj4yXT1iO2tbaT4+Ml09YztrW2o+PjJdPWQ7a1tsPj4yXT1lO2tbbT4+Ml09ZjtrW24+PjJdPWtbKGtbZz4+Ml18MCkrMTI+PjJdO2lmKGtba1toPj4yXT4+Ml18MCl7YT1rW2o+PjJdfDA7Yj1rW2k+PjJdfDA7bj1rW24+PjJdfDA7bj1rRyhhLGIsbiwxKXwwO3I9bztyZXR1cm4gbnwwfVhGKGtbKGtbKGtbZz4+Ml18MCkrOD4+Ml18MCkrMjg+PjJdfDAsa1ttPj4yXXwwLGtbbD4+Ml18MCxrW24+PjJdfDApO2tba1toPj4yXT4+Ml09MTthPWtbaj4+Ml18MDtiPWtbaT4+Ml18MDtuPWtbbj4+Ml18MDtuPWtHKGEsYixuLDEpfDA7cj1vO3JldHVybiBufDB9ZnVuY3Rpb24gSUwoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaT0wLGo9MCxsPTAsbT0wLG49MDtuPXI7cj1yKzMyfDA7Zj1uKzI0fDA7Zz1uKzIwfDA7bD1uKzE2fDA7aD1uKzEyfDA7aT1uKzh8MDttPW4rNHwwO2o9bjtrW2Y+PjJdPWE7a1tnPj4yXT1iO2tbbD4+Ml09YztrW2g+PjJdPWQ7a1tpPj4yXT1lO2I9a1soa1tmPj4yXXwwKSs0Pj4yXXwwO2I9dWcoYiwoKGJ8MCk8MCk8PDMxPj4zMSl8MDtrW2o+PjJdPWI7aWYoIShrW2o+PjJdfDApKXtrW20+PjJdPTc7bT1rW20+PjJdfDA7cj1uO3JldHVybiBtfDB9Zj1jcyhrW2Y+PjJdfDAsa1tnPj4yXXwwLGtbaj4+Ml18MCxrW2g+PjJdfDAsa1tpPj4yXXwwKXwwO2tbbT4+Ml09ZjtmPWtbaj4+Ml18MDtpZihrW20+PjJdfDApe1VkKGYpO209a1ttPj4yXXwwO3I9bjtyZXR1cm4gbXwwfWVsc2V7a1trW2w+PjJdPj4yXT1mO209a1ttPj4yXXwwO3I9bjtyZXR1cm4gbXwwfXJldHVybiAwfWZ1bmN0aW9uIEpMKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wLGk9MCxqPTAsbT0wLG49MCxvPTAscD0wO3A9cjtyPXIrNDh8MDtjPXArMzZ8MDtkPXArMzJ8MDtuPXArMjh8MDtnPXArMjR8MDttPXArMjB8MDtmPXArMTZ8MDtpPXArMTJ8MDtqPXArOHwwO2U9cCs0fDA7aD1wO2tbYz4+Ml09YTtrW2Q+PjJdPWI7a1tnPj4yXT1rWyhrWyhrW2M+PjJdfDApKzg+PjJdfDApKzQ+PjJdO2tbbT4+Ml09a1soa1tjPj4yXXwwKSs0Pj4yXTtiPUtMKChrWyhrW2M+PjJdfDApKzEyPj4yXXwwKSsoKGtbZz4+Ml18MCkqNTZ8MCl8MCl8MDtrW24+PjJdPWI7aWYoIShrW24+PjJdfDApKXtrW2U+PjJdPTA7a1tpPj4yXT0oa1soa1tjPj4yXXwwKSsxMj4+Ml18MCkrKChrW2c+PjJdJjY1NTM0KSo1NnwwKTtrW2o+PjJdPShrWyhrW2M+PjJdfDApKzEyPj4yXXwwKSsoKGtbZz4+Ml18MSkqNTZ8MCk7a1tmPj4yXT0oKGtba1tjPj4yXT4+Ml18MCkrKGtbZz4+Ml18MCl8MCkvMnwwO3doaWxlKDEpe2lmKChrW2Y+PjJdfDApPD0wKWJyZWFrO2RvIGlmKGtbKGtbaT4+Ml18MCkrMjQ+PjJdfDApaWYoIShrWyhrW2o+PjJdfDApKzI0Pj4yXXwwKSl7a1toPj4yXT0tMTticmVha31lbHNle2I9YWNba1soa1ttPj4yXXwwKSszMj4+Ml0mMjU1XShrW20+PjJdfDAsZSxrWyhrW2k+PjJdfDApKzMyPj4yXXwwLGtbKGtbaT4+Ml18MCkrMjA+PjJdfDAsa1soa1tqPj4yXXwwKSszMj4+Ml18MCxrWyhrW2o+PjJdfDApKzIwPj4yXXwwKXwwO2tbaD4+Ml09YjticmVha31lbHNlIGtbaD4+Ml09MTt3aGlsZSgwKTtkbyBpZigoa1toPj4yXXwwKTwwKW89MTI7ZWxzZXtpZigoa1toPj4yXXwwKT09MD8oa1tpPj4yXXwwKT4+PjA8KGtbaj4+Ml18MCk+Pj4wOjApe289MTI7YnJlYWt9aWYoa1soa1tpPj4yXXwwKSsyND4+Ml18MClrW2U+PjJdPTA7a1soa1soa1tjPj4yXXwwKSs4Pj4yXXwwKSsoa1tmPj4yXTw8Mik+PjJdPSgoa1tqPj4yXXwwKS0oa1soa1tjPj4yXXwwKSsxMj4+Ml18MCl8MCkvNTZ8MDtrW2k+PjJdPShrWyhrW2M+PjJdfDApKzEyPj4yXXwwKSsoKGtbKGtbKGtbYz4+Ml18MCkrOD4+Ml18MCkrKChrW2Y+PjJdXjEpPDwyKT4+Ml18MCkqNTZ8MCl9d2hpbGUoMCk7aWYoKG98MCk9PTEyKXtvPTA7a1soa1soa1tjPj4yXXwwKSs4Pj4yXXwwKSsoa1tmPj4yXTw8Mik+PjJdPSgoa1tpPj4yXXwwKS0oa1soa1tjPj4yXXwwKSsxMj4+Ml18MCl8MCkvNTZ8MDtrW2o+PjJdPShrWyhrW2M+PjJdfDApKzEyPj4yXXwwKSsoKGtbKGtbKGtbYz4+Ml18MCkrOD4+Ml18MCkrKChrW2Y+PjJdXjEpPDwyKT4+Ml18MCkqNTZ8MCk7a1tlPj4yXT0wfWtbZj4+Ml09KGtbZj4+Ml18MCkvMnwwfWtba1tkPj4yXT4+Ml09KGtbKGtbKGtbYz4+Ml18MCkrMTI+PjJdfDApKygoa1soa1soa1tjPj4yXXwwKSs4Pj4yXXwwKSs0Pj4yXXwwKSo1NnwwKSsyND4+Ml18MCk9PTAmMX1pZighKGtbbj4+Ml18MCkpe289bFsoa1soa1ttPj4yXXwwKSsxMj4+Ml18MCkrMTE+PjBdfDA7cj1wO3JldHVybiBvfDB9ZWxzZXtvPWtbbj4+Ml18MDtyPXA7cmV0dXJuIG98MH1yZXR1cm4gMH1mdW5jdGlvbiBLTChhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wLGk9MCxqPTAsbD0wO2g9cjtyPXIrMzJ8MDtiPWgrMjR8MDtjPWgrMjB8MDtnPWgrMTZ8MDtlPWg7Zj1oKzEyfDA7ZD1oKzh8MDtrW2M+PjJdPWE7a1tnPj4yXT0wO2k9ZTtrW2k+PjJdPTA7a1tpKzQ+PjJdPTA7aT1rW2M+PjJdfDA7bD1rW2krND4+Ml18MDthPShrW2M+PjJdfDApKzh8MDtqPWtbYSs0Pj4yXXwwO2lmKChsfDApPihqfDApfCgobHwwKT09KGp8MCk/KGtbaT4+Ml18MCk+Pj4wPj0oa1thPj4yXXwwKT4+PjA6MCkpe2tbZj4+Ml09a1soa1tjPj4yXXwwKSs0OD4+Ml07a1tkPj4yXT0xO2lmKCgoa1tmPj4yXXwwKSE9MD8obD1MTChrW2Y+PjJdfDApfDAsa1tnPj4yXT1sLChrW2c+PjJdfDApPT0wKTowKT8oa1soa1tmPj4yXXwwKSsyMD4+Ml18MCk9PTA6MCl7bD0oa1tmPj4yXXwwKSs4fDA7bD1NTChrW2tbZj4+Ml0+PjJdfDAsa1tjPj4yXXwwLChrW2Y+PjJdfDApKzMyfDAsa1tsPj4yXXwwLGtbbCs0Pj4yXXwwKXwwO2tbZz4+Ml09bDtrW2Q+PjJdPTB9aWYoa1tkPj4yXXwwKXtmTChrW2M+PjJdfDApO2tbYj4+Ml09a1tnPj4yXTtsPWtbYj4+Ml18MDtyPWg7cmV0dXJuIGx8MH19aWYoIShrW2c+PjJdfDApKXtsPU5MKGtbYz4+Ml18MCxlKXwwO2tbZz4+Ml09bH1pZighKGtbZz4+Ml18MCkpe2tbKGtbYz4+Ml18MCkrMjA+PjJdPWtbZT4+Ml07bD1PTChrW2M+PjJdfDAsa1tlPj4yXXwwLChrW2M+PjJdfDApKzMyfDApfDA7a1tnPj4yXT1sfWtbYj4+Ml09a1tnPj4yXTtsPWtbYj4+Ml18MDtyPWg7cmV0dXJuIGx8MH1mdW5jdGlvbiBMTChhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTAsZT0wO2Q9cjtyPXIrMTZ8MDtiPWQrNHwwO2M9ZDtrW2I+PjJdPWE7a1tjPj4yXT0wO2U9Ukwoa1tiPj4yXXwwKXwwO2tbYz4+Ml09ZTtlPShrW2I+PjJdfDApKzMyfDA7YT0oa1tiPj4yXXwwKSszMisxNnwwO2tbZT4+Ml09a1thPj4yXTtrW2UrND4+Ml09a1thKzQ+PjJdO2tbZSs4Pj4yXT1rW2ErOD4+Ml07a1tlKzEyPj4yXT1rW2ErMTI+PjJdO2U9KGtbYj4+Ml18MCkrMzIrOHwwO2E9KGtbYj4+Ml18MCkrOHwwO2lmKCEoKGtbZT4+Ml18MCk9PShrW2E+PjJdfDApPyhrW2UrND4+Ml18MCk9PShrW2ErND4+Ml18MCk6MCkpe2U9a1tjPj4yXXwwO3I9ZDtyZXR1cm4gZXwwfWtbKGtbYj4+Ml18MCkrMjA+PjJdPTE7ZT1rW2M+PjJdfDA7cj1kO3JldHVybiBlfDB9ZnVuY3Rpb24gTUwoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaT0wLGo9MCxsPTAsbT0wLG49MCxvPTAscD0wO3A9cjtyPXIrNDh8MDtmPXArMzZ8MDtnPXArMzJ8MDtoPXArMjh8MDtpPXArMjR8MDtqPXA7bz1wKzIwfDA7bj1wKzE2fDA7bD1wKzEyfDA7bT1wKzh8MDtrW2c+PjJdPWE7a1toPj4yXT1iO2tbaT4+Ml09YzthPWo7a1thPj4yXT1kO2tbYSs0Pj4yXT1lO2tbbz4+Ml09MDtpZihMaSgyMDEpfDApe2tbZj4+Ml09MjY2O289a1tmPj4yXXwwO3I9cDtyZXR1cm4gb3wwfWlmKGtbKGtbaD4+Ml18MCkrNDQ+PjJdfDApe1dzKGtbKGtbaD4+Ml18MCkrMjQ+PjJdfDAsMCwwLGtbKGtbaD4+Ml18MCkrNDQ+PjJdfDApfDA7a1soa1toPj4yXXwwKSs0ND4+Ml09MH1hPWo7Yj1rW2ErND4+Ml18MDtjPWtbaD4+Ml18MDtrW2M+PjJdPWtbYT4+Ml07a1tjKzQ+PjJdPWI7Yz0oa1tpPj4yXXwwKSs4fDA7Yj1rW2MrND4+Ml18MDthPShrW2g+PjJdfDApKzh8MDtrW2E+PjJdPWtbYz4+Ml07a1thKzQ+PjJdPWI7a1soa1toPj4yXXwwKSsyND4+Ml09a1trW2k+PjJdPj4yXTthPVBMKGtbZz4+Ml18MCxrW2k+PjJdfDAsKGtbaD4+Ml18MCkrNDR8MCl8MDtrW28+PjJdPWE7aWYoKGtbbz4+Ml18MCk9PTA/KGtbKGtbaD4+Ml18MCkrNDQ+PjJdfDApPT0wOjApe2tbbj4+Ml09a1soa1soa1tnPj4yXXwwKSs4Pj4yXXwwKSsxMj4+Ml07Yj1rW2g+PjJdfDA7YT1rW24+PjJdfDA7YT1qUyhrW2I+PjJdfDAsa1tiKzQ+PjJdfDAsYXwwLCgoYXwwKTwwKTw8MzE+PjMxfDApfDA7a1tsPj4yXT1hO2lmKCEoa1soa1toPj4yXXwwKSszNj4+Ml18MCkpe2E9a1tuPj4yXXwwO2E9amcoYSwoKGF8MCk8MCk8PDMxPj4zMSl8MDtrWyhrW2g+PjJdfDApKzM2Pj4yXT1hO2lmKCEoa1soa1toPj4yXXwwKSszNj4+Ml18MCkpa1tvPj4yXT03O2tbKGtbaD4+Ml18MCkrNDA+PjJdPWtbbj4+Ml19aWYoKGtbbz4+Ml18MCk9PTAmKGtbbD4+Ml18MCkhPTApe2tbbT4+Ml09KGtbbj4+Ml18MCktKGtbbD4+Ml18MCk7Yz1rW2g+PjJdfDA7YT1rW20+PjJdfDA7YT0kUihrW2M+PjJdfDAsa1tjKzQ+PjJdfDAsYXwwLCgoYXwwKTwwKTw8MzE+PjMxfDApfDA7Yz1MO249KGtbaD4+Ml18MCkrOHwwO2I9a1tuKzQ+PjJdfDA7aWYoKGN8MCk+KGJ8MCl8KChjfDApPT0oYnwwKT9hPj4+MD4oa1tuPj4yXXwwKT4+PjA6MCkpe2E9KGtbaD4+Ml18MCkrOHwwO249a1toPj4yXXwwO249X1Ioa1thPj4yXXwwLGtbYSs0Pj4yXXwwLGtbbj4+Ml18MCxrW24rND4+Ml18MCl8MDtrW20+PjJdPW59bj1rW2g+PjJdfDA7bj1vcyhrWyhrW2g+PjJdfDApKzI0Pj4yXXwwLChrWyhrW2g+PjJdfDApKzM2Pj4yXXwwKSsoa1tsPj4yXXwwKXwwLGtbbT4+Ml18MCxrW24+PjJdfDAsa1tuKzQ+PjJdfDApfDA7a1tvPj4yXT1ufX1rW2Y+PjJdPWtbbz4+Ml07bz1rW2Y+PjJdfDA7cj1wO3JldHVybiBvfDB9ZnVuY3Rpb24gTkwoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLG09MCxuPTAsbz0wLHA9MDtvPXI7cj1yKzQ4fDA7Yz1vKzI0fDA7ZD1vKzIwfDA7ZT1vKzE2fDA7aj1vKzEyfDA7Zz1vKzMyfDA7Zj1vKzh8MDtoPW8rNHwwO209bztrW2Q+PjJdPWE7a1tlPj4yXT1iO2I9a1tkPj4yXXwwO2E9a1tiPj4yXXwwO2I9a1tiKzQ+PjJdfDA7ZG8gaWYoa1soa1tkPj4yXXwwKSs0ND4+Ml18MCl7bT0obXUoKGtbKGtbZD4+Ml18MCkrNDQ+PjJdfDApK2F8MCxrW2U+PjJdfDApfDApJjI1NTtuPWtbZD4+Ml18MDtqPW47bT0kUihrW2o+PjJdfDAsa1tqKzQ+PjJdfDAsbXwwLDApfDA7a1tuPj4yXT1tO2tbbis0Pj4yXT1MfWVsc2V7cD1rWyhrW2Q+PjJdfDApKzQwPj4yXXwwO2I9alMoYXwwLGJ8MCxwfDAsKChwfDApPDApPDwzMT4+MzF8MCl8MDtrW2o+PjJdPWI7aWYoKGtbaj4+Ml18MCkhPTA/KChrWyhrW2Q+PjJdfDApKzQwPj4yXXwwKS0oa1tqPj4yXXwwKXwwKT49OTowKXtuPShtdSgoa1soa1tkPj4yXXwwKSszNj4+Ml18MCkrKGtbaj4+Ml18MCl8MCxrW2U+PjJdfDApfDApJjI1NTtwPWtbZD4+Ml18MDttPXA7bj0kUihrW20+PjJdfDAsa1ttKzQ+PjJdfDAsbnwwLDApfDA7a1twPj4yXT1uO2tbcCs0Pj4yXT1MO2JyZWFrfWtbaD4+Ml09MDt3aGlsZSgxKXtwPU9MKGtbZD4+Ml18MCwxLGYpfDA7a1ttPj4yXT1wO2lmKGtbbT4+Ml18MClicmVhaztqPWlba1tmPj4yXT4+MF18MDtwPWtbaD4+Ml18MDtrW2g+PjJdPXArMTtpW2crKHAmMTUpPj4wXT1qO2lmKCEoKGxba1tmPj4yXT4+MF18MCkmMTI4KSl7bj0xMDticmVha319aWYoKG58MCk9PTEwKXttdShnLGtbZT4+Ml18MCl8MDticmVha31rW2M+PjJdPWtbbT4+Ml07cD1rW2M+PjJdfDA7cj1vO3JldHVybiBwfDB9d2hpbGUoMCk7a1tjPj4yXT0wO3A9a1tjPj4yXXwwO3I9bztyZXR1cm4gcHwwfWZ1bmN0aW9uIE9MKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxpPTAsaj0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHM9MCx0PTAsdT0wLHY9MCx3PTA7dT1yO3I9cis2NHwwO2Y9dSs1MnwwO2c9dSs0OHwwO2g9dSs0NHwwO2k9dSs0MHwwO209dSszNnwwO249dSszMnwwO2Q9dSsyOHwwO2U9dSsyNHwwO3E9dSsyMHwwO2o9dSsxNnwwO3A9dSsxMnwwO3M9dSs4fDA7bz11KzR8MDtsPXU7a1tnPj4yXT1hO2tbaD4+Ml09YjtrW2k+PjJdPWM7YT1rW2c+PjJdfDA7Yj1rW2E+PjJdfDA7YT1rW2ErND4+Ml18MDtpZihrWyhrW2c+PjJdfDApKzQ0Pj4yXXwwKXtrW2tbaT4+Ml0+PjJdPShrWyhrW2c+PjJdfDApKzQ0Pj4yXXwwKStiO3M9a1toPj4yXXwwO3Q9a1tnPj4yXXwwO3E9dDtzPSRSKGtbcT4+Ml18MCxrW3ErND4+Ml18MCxzfDAsKChzfDApPDApPDwzMT4+MzF8MCl8MDtrW3Q+PjJdPXM7a1t0KzQ+PjJdPUw7a1tmPj4yXT0wO3Q9a1tmPj4yXXwwO3I9dTtyZXR1cm4gdHwwfWM9a1soa1tnPj4yXXwwKSs0MD4+Ml18MDtjPWpTKGJ8MCxhfDAsY3wwLCgoY3wwKTwwKTw8MzE+PjMxfDApfDA7a1ttPj4yXT1jO2lmKCEoa1ttPj4yXXwwKSl7dz0oa1tnPj4yXXwwKSs4fDA7YT1rW2c+PjJdfDA7YT1fUihrW3c+PjJdfDAsa1t3KzQ+PjJdfDAsa1thPj4yXXwwLGtbYSs0Pj4yXXwwKXwwO3c9TDtjPWtbKGtbZz4+Ml18MCkrNDA+PjJdfDA7dj0oKGN8MCk8MCk8PDMxPj4zMTtiPWtbZz4+Ml18MDtpZigod3wwKT4odnwwKXwod3wwKT09KHZ8MCkmYT4+PjA+Yz4+PjApa1tkPj4yXT1rW2IrNDA+PjJdO2Vsc2V7dj1iKzh8MDt3PWtbZz4+Ml18MDt3PV9SKGtbdj4+Ml18MCxrW3YrND4+Ml18MCxrW3c+PjJdfDAsa1t3KzQ+PjJdfDApfDA7a1tkPj4yXT13fXc9a1tnPj4yXXwwO3c9b3Moa1soa1tnPj4yXXwwKSsyND4+Ml18MCxrWyhrW2c+PjJdfDApKzM2Pj4yXXwwLGtbZD4+Ml18MCxrW3c+PjJdfDAsa1t3KzQ+PjJdfDApfDA7a1tlPj4yXT13O2lmKGtbZT4+Ml18MCl7a1tmPj4yXT1rW2U+PjJdO3c9a1tmPj4yXXwwO3I9dTtyZXR1cm4gd3wwfX1rW24+PjJdPShrWyhrW2c+PjJdfDApKzQwPj4yXXwwKS0oa1ttPj4yXXwwKTtkbyBpZigoa1toPj4yXXwwKTw9KGtbbj4+Ml18MCkpe2tba1tpPj4yXT4+Ml09KGtbKGtbZz4+Ml18MCkrMzY+PjJdfDApKyhrW20+PjJdfDApO3Y9a1toPj4yXXwwO3c9a1tnPj4yXXwwO3Q9dzt2PSRSKGtbdD4+Ml18MCxrW3QrND4+Ml18MCx2fDAsKCh2fDApPDApPDwzMT4+MzF8MCl8MDtrW3c+PjJdPXY7a1t3KzQ+PjJdPUx9ZWxzZXtkbyBpZigoa1soa1tnPj4yXXwwKSsxNj4+Ml18MCk8KGtbaD4+Ml18MCkpe2lmKDEyOD4oa1soa1tnPj4yXXwwKSsxNj4+Ml08PDF8MCkpYj0xMjg7ZWxzZSBiPWtbKGtbZz4+Ml18MCkrMTY+PjJdPDwxO2tbcD4+Ml09Yjt3aGlsZSgxKXtpZigoa1toPj4yXXwwKTw9KGtbcD4+Ml18MCkpYnJlYWs7a1twPj4yXT1rW3A+PjJdPDwxfXc9a1twPj4yXXwwO3c9bWcoa1soa1tnPj4yXXwwKSsyOD4+Ml18MCx3LCgod3wwKTwwKTw8MzE+PjMxKXwwO2tbaj4+Ml09dztpZihrW2o+PjJdfDApe2tbKGtbZz4+Ml18MCkrMTY+PjJdPWtbcD4+Ml07a1soa1tnPj4yXXwwKSsyOD4+Ml09a1tqPj4yXTticmVha31rW2Y+PjJdPTc7dz1rW2Y+PjJdfDA7cj11O3JldHVybiB3fDB9d2hpbGUoMCk7YlMoa1soa1tnPj4yXXwwKSsyOD4+Ml18MCwoa1soa1tnPj4yXXwwKSszNj4+Ml18MCkrKGtbbT4+Ml18MCl8MCxrW24+PjJdfDApfDA7dj1rW24+PjJdfDA7dz1rW2c+PjJdfDA7cD13O3Y9JFIoa1twPj4yXXwwLGtbcCs0Pj4yXXwwLHZ8MCwoKHZ8MCk8MCk8PDMxPj4zMXwwKXwwO2tbdz4+Ml09djtrW3crND4+Ml09TDtrW3E+PjJdPShrW2g+PjJdfDApLShrW24+PjJdfDApO3doaWxlKDEpe2lmKChrW3E+PjJdfDApPD0wKXt0PTI3O2JyZWFrfWtbbz4+Ml09a1txPj4yXTtpZigoa1txPj4yXXwwKT4oa1soa1tnPj4yXXwwKSs0MD4+Ml18MCkpa1tvPj4yXT1rWyhrW2c+PjJdfDApKzQwPj4yXTt3PU9MKGtbZz4+Ml18MCxrW28+PjJdfDAsbCl8MDtrW3M+PjJdPXc7aWYoa1tzPj4yXXwwKWJyZWFrO2JTKChrWyhrW2c+PjJdfDApKzI4Pj4yXXwwKSsoKGtbaD4+Ml18MCktKGtbcT4+Ml18MCkpfDAsa1tsPj4yXXwwLGtbbz4+Ml18MCl8MDtrW3E+PjJdPShrW3E+PjJdfDApLShrW28+PjJdfDApfWlmKCh0fDApPT0yNyl7a1trW2k+PjJdPj4yXT1rWyhrW2c+PjJdfDApKzI4Pj4yXTticmVha31rW2Y+PjJdPWtbcz4+Ml07dz1rW2Y+PjJdfDA7cj11O3JldHVybiB3fDB9d2hpbGUoMCk7a1tmPj4yXT0wO3c9a1tmPj4yXXwwO3I9dTtyZXR1cm4gd3wwfWZ1bmN0aW9uIFBMKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxpPTAsaj0wO2g9cjtyPXIrMzJ8MDtqPWgrMTZ8MDtkPWgrMTJ8MDtlPWgrOHwwO2c9aCs0fDA7Zj1oO2tbaj4+Ml09YTtrW2Q+PjJdPWI7a1tlPj4yXT1jO2tbZz4+Ml09MDthPShrW2Q+PjJdfDApKzh8MDtpPWtbYSs0Pj4yXXwwO2M9a1soa1soa1soa1tqPj4yXXwwKSs4Pj4yXXwwKSsyND4+Ml18MCkrMTQ0Pj4yXXwwO2I9KChjfDApPDApPDwzMT4+MzE7aWYoISgoaXwwKTwoYnwwKXwoKGl8MCk9PShifDApPyhrW2E+PjJdfDApPj4+MDw9Yz4+PjA6MCkpKXtqPWtbZz4+Ml18MDtyPWg7cmV0dXJuIGp8MH1rW2Y+PjJdPWtba1tkPj4yXT4+Ml07aWYoKGtba1trW2Y+PjJdPj4yXT4+Ml18MCk8Myl7aj1rW2c+PjJdfDA7cj1oO3JldHVybiBqfDB9aj1RTChrW2Y+PjJdfDAsMCwwLGtbKGtbZD4+Ml18MCkrOD4+Ml18MCxrW2U+PjJdfDApfDA7a1tnPj4yXT1qO2o9a1tnPj4yXXwwO3I9aDtyZXR1cm4ganwwfWZ1bmN0aW9uIFFMKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTA7Zj1yO3I9ciszMnwwO2c9Zis4fDA7a1tmKzE2Pj4yXT1hO2E9ZjtrW2E+PjJdPWI7a1thKzQ+PjJdPWM7a1tmKzEyPj4yXT1kO2tbZz4+Ml09ZTtrW2tbZz4+Ml0+PjJdPTA7cj1mO3JldHVybiAwfWZ1bmN0aW9uIFJMKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTAsaT0wLGo9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MDtuPXI7cj1yKzk2fDA7Yj1uKzg4fDA7aj1uKzg0fDA7bD1uKzgwfDA7ZT1uKzQ4fDA7aD1uKzc2fDA7bz1uKzcyfDA7Zz1uKzY4fDA7bT1uKzh8MDtjPW4rNjR8MDtpPW4rNjB8MDtmPW4rNTZ8MDtkPW47a1tiPj4yXT1hO2tbaj4+Ml09MDtxPShrW2I+PjJdfDApKzh8MDtwPWtbcSs0Pj4yXXwwO2E9ZTtrW2E+PjJdPWtbcT4+Ml07a1thKzQ+PjJdPXA7a1toPj4yXT0oa1tiPj4yXXwwKSszMisxNjtrW28+PjJdPWtba1tiPj4yXT4+Ml07a1tnPj4yXT1rWyhrW2I+PjJdfDApKzQ+PjJdO2E9ZTt4TChrW2tbaD4+Ml0+PjJdfDAsbSxrWyhrWyhrW28+PjJdfDApKzg+PjJdfDApKzEyPj4yXXwwLGtbYT4+Ml18MCxrW2ErND4+Ml18MCk7d2hpbGUoMSl7aWYoa1tqPj4yXXwwKWJyZWFrO2tbaT4+Ml09KGtbKGtbZz4+Ml18MCkrMTI+PjJdfDApKygoa1soa1soa1tnPj4yXXwwKSs4Pj4yXXwwKSs0Pj4yXXwwKSo1NnwwKTtrW2Y+PjJdPWtbKGtbaT4+Ml18MCkrMjA+PjJdO3E9bSsyNHwwO3A9a1ttKzE2Pj4yXXwwO3A9JFIoa1txPj4yXXwwLGtbcSs0Pj4yXXwwLHB8MCwoKHB8MCk8MCk8PDMxPj4zMXwwKXwwO3E9ZDtrW3E+PjJdPXA7a1txKzQ+PjJdPUw7aWYoIShrWyhrW2k+PjJdfDApKzI0Pj4yXXwwKSlicmVhazthPWQ7bz1rW2Y+PjJdfDA7bz0kUihrW2E+PjJdfDAsa1thKzQ+PjJdfDAsb3wwLCgob3wwKTwwKTw8MzE+PjMxfDApfDA7YT1MO3A9a1tmPj4yXXwwO3A9c0cocCwoKHB8MCk8MCk8PDMxPj4zMSl8MDtwPSRSKG98MCxhfDAscHwwLCgocHwwKTwwKTw8MzE+PjMxfDApfDA7YT1MO289ZTtxPWtbKGtbYj4+Ml18MCkrMTY+PjJdfDA7cT0kUihrW28+PjJdfDAsa1tvKzQ+PjJdfDAscXwwLCgocXwwKTwwKTw8MzE+PjMxfDApfDA7bz1MO2lmKChhfDApPihvfDApfChhfDApPT0ob3wwKSZwPj4+MD5xPj4+MClicmVhaztxPWtbZj4+Ml18MDt5TChtLHEsKChxfDApPDApPDwzMT4+MzEpO3pMKG0sa1soa1tpPj4yXXwwKSszMj4+Ml18MCxrW2Y+PjJdfDApO3E9Skwoa1soa1tiPj4yXXwwKSs0Pj4yXXwwLGMpfDA7a1tqPj4yXT1xfXE9QUwobSwoa1toPj4yXXwwKSs4fDApfDA7a1tsPj4yXT1xO2lmKGtbaj4+Ml18MCl7cT1rW2o+PjJdfDA7cj1uO3JldHVybiBxfDB9a1tqPj4yXT1rW2w+PjJdO3E9a1tqPj4yXXwwO3I9bjtyZXR1cm4gcXwwfWZ1bmN0aW9uIFNMKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MCxlPTAsZj0wO2Y9cjtyPXIrMTZ8MDtiPWYrMTJ8MDtlPWYrOHwwO2Q9Zis0fDA7Yz1mO2tbYj4+Ml09YTtrW2Q+PjJdPShrW2I+PjJdfDApKzY0O2tbYz4+Ml09MDthPVRMKGtbYj4+Ml18MCxjKXwwO2tbZT4+Ml09YTtpZighKGtbZT4+Ml18MCkpe2Q9VUwoa1tkPj4yXXwwLGtbYz4+Ml18MCwwKXwwO2tbZT4+Ml09ZDtrWyhrW2I+PjJdfDApKzIwPj4yXT1rW2M+PjJdO2tbYz4+Ml09MH1pZighKGtbZT4+Ml18MCkpe2U9a1tlPj4yXXwwO3I9ZjtyZXR1cm4gZXwwfWJMKGtbYz4+Ml18MCk7ZT1rW2U+PjJdfDA7cj1mO3JldHVybiBlfDB9ZnVuY3Rpb24gVEwoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTAsaT0wLGo9MCxtPTAsbj0wLG89MCxwPTAscT0wLHM9MCx0PTA7cz1yO3I9cis2NHwwO2M9cys1MnwwO2Q9cys0OHwwO209cys0NHwwO3E9cys0MHwwO2g9cyszNnwwO3A9cyszMnwwO289cysyOHwwO2k9cysyNHwwO2Y9cztlPXMrMjB8MDtnPXMrMTZ8MDtuPXMrMTJ8MDtqPXMrOHwwO2tbYz4+Ml09YTtrW2Q+PjJdPWI7a1ttPj4yXT0wO2tbcT4+Ml09MDtrW2g+PjJdPTA7d2hpbGUoMSl7aWYoa1txPj4yXXwwKWJyZWFrO2lmKChrW2g+PjJdfDApPj0obFsoa1tjPj4yXXwwKSs1OT4+MF18MHwwKSlicmVhaztrW3A+PjJdPShrW2M+PjJdfDApKzY0Kygoa1toPj4yXXwwKSo3MnwwKTtrW28+PjJdPTA7Yj1ZTChrWyhrW3A+PjJdfDApKzI4Pj4yXXwwKXwwO2tbaT4+Ml09YjtiPWY7a1tiPj4yXT0wO2tbYis0Pj4yXT0wO2E6ZG8gaWYoKGtbKGtbcD4+Ml18MCkrMjg+PjJdfDApPD0xNil7Yj1aTChrW3A+PjJdfDAsa1soa1twPj4yXXwwKSsyOD4+Ml18MCxmLG8pfDA7a1txPj4yXT1ifWVsc2V7a1tnPj4yXT0wO2I9X0woMTYpfDA7a1tvPj4yXT1iO2lmKCEoa1tvPj4yXXwwKSlrW3E+PjJdPTc7a1tlPj4yXT0wO3doaWxlKDEpe2lmKCEoKGtbZT4+Ml18MCk8KGtbKGtbcD4+Ml18MCkrMjg+PjJdfDApPyhrW3E+PjJdfDApPT0wOjApKWJyZWFrIGE7a1tuPj4yXT0wO2lmKCgoa1soa1twPj4yXXwwKSsyOD4+Ml18MCktKGtbZT4+Ml18MCl8MCk8MTYpYT0oa1soa1twPj4yXXwwKSsyOD4+Ml18MCktKGtbZT4+Ml18MCl8MDtlbHNlIGE9MTY7a1tqPj4yXT1hO2I9Wkwoa1twPj4yXXwwLGtbaj4+Ml18MCxmLG4pfDA7a1txPj4yXT1iO2lmKCEoa1txPj4yXXwwKSl7dD1rW3A+PjJdfDA7YT1rW2k+PjJdfDA7Yj1rW2c+PjJdfDA7a1tnPj4yXT1iKzE7Yj0kTCh0LGEsYixrW28+PjJdfDAsa1tuPj4yXXwwKXwwO2tbcT4+Ml09Yn1rW2U+PjJdPShrW2U+PjJdfDApKzE2fX13aGlsZSgwKTthPWtbbz4+Ml18MDtpZighKGtbcT4+Ml18MCkpa1ttPj4yXT1hO2Vsc2UgYkwoYSk7a1toPj4yXT0oa1toPj4yXXwwKSsxfWlmKCEoa1txPj4yXXwwKSl7cD1rW20+PjJdfDA7dD1rW2Q+PjJdfDA7a1t0Pj4yXT1wO3Q9a1txPj4yXXwwO3I9cztyZXR1cm4gdHwwfWJMKGtbbT4+Ml18MCk7a1ttPj4yXT0wO3A9a1ttPj4yXXwwO3Q9a1tkPj4yXXwwO2tbdD4+Ml09cDt0PWtbcT4+Ml18MDtyPXM7cmV0dXJuIHR8MH1mdW5jdGlvbiBVTChhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaT0wLGo9MCxtPTA7bT1yO3I9ciszMnwwO2Q9bSsyNHwwO2U9bSsyMHwwO2Y9bSsxNnwwO2k9bSs4fDA7Zz1tKzR8MDtoPW07a1tlPj4yXT1hO2tbZj4+Ml09YjtrW20rMTI+PjJdPWM7a1tpPj4yXT0wO2tbaD4+Ml09a1trW2Y+PjJdPj4yXTtrWyhrW2Y+PjJdfDApKzQ+PjJdPWtbZT4+Ml07a1tnPj4yXT0wO3doaWxlKDEpe2lmKChrW2c+PjJdfDApPj0oa1toPj4yXXwwKSlicmVhazthPVZMKChrWyhrW2Y+PjJdfDApKzEyPj4yXXwwKSsoKGtbZz4+Ml18MCkqNTZ8MCl8MCwwKXwwO2tbaT4+Ml09YTtpZihrW2k+PjJdfDApe2o9NDticmVha31rW2c+PjJdPShrW2c+PjJdfDApKzF9aWYoKGp8MCk9PTQpe2tbZD4+Ml09a1tpPj4yXTtqPWtbZD4+Ml18MDtyPW07cmV0dXJuIGp8MH1rW2c+PjJdPShrW2tbZj4+Ml0+PjJdfDApLTE7d2hpbGUoMSl7aWYoKGtbZz4+Ml18MCk8PTApYnJlYWs7V0woa1tmPj4yXXwwLGtbZz4+Ml18MCk7a1tnPj4yXT0oa1tnPj4yXXwwKSstMX1rW2Q+PjJdPWxbKGtbKGtbZT4+Ml18MCkrMTI+PjJdfDApKzExPj4wXTtqPWtbZD4+Ml18MDtyPW07cmV0dXJuIGp8MH1mdW5jdGlvbiBWTChhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wO2Y9cjtyPXIrMTZ8MDtjPWYrMTJ8MDtkPWYrOHwwO2c9Zis0fDA7ZT1mO2tbYz4+Ml09YTtrW2Q+PjJdPWI7a1tnPj4yXT1rWyhrW2M+PjJdfDApKzQ4Pj4yXTtrW2U+PjJdPTA7aWYoIShrW2c+PjJdfDApKXtnPWtbZT4+Ml18MDtyPWY7cmV0dXJuIGd8MH1nPVhMKGtbYz4+Ml18MCxrW2Q+PjJdfDApfDA7a1tlPj4yXT1nO2c9a1tlPj4yXXwwO3I9ZjtyZXR1cm4gZ3wwfWZ1bmN0aW9uIFdMKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wLGk9MCxqPTAsbD0wLG09MCxuPTA7bj1yO3I9cis0OHwwO2M9biszNnwwO2Q9biszMnwwO2Y9bisyOHwwO2c9bisyNHwwO2g9bisyMHwwO2k9bisxNnwwO2o9bisxMnwwO2w9bis4fDA7ZT1uKzR8MDttPW47a1tjPj4yXT1hO2tbZD4+Ml09YjtiPWtbZD4+Ml18MDtpZigoa1tkPj4yXXwwKT49KChrW2tbYz4+Ml0+PjJdfDApLzJ8MHwwKSl7a1tmPj4yXT1iLSgoa1trW2M+PjJdPj4yXXwwKS8yfDApPDwxO2tbZz4+Ml09KGtbZj4+Ml18MCkrMX1lbHNle2tbZj4+Ml09a1soa1soa1tjPj4yXXwwKSs4Pj4yXXwwKSsoYjw8MTw8Mik+PjJdO2tbZz4+Ml09a1soa1soa1tjPj4yXXwwKSs4Pj4yXXwwKSsoKGtbZD4+Ml08PDEpKzE8PDIpPj4yXX1rW2k+PjJdPShrWyhrW2M+PjJdfDApKzEyPj4yXXwwKSsoKGtbZj4+Ml18MCkqNTZ8MCk7a1tqPj4yXT0oa1soa1tjPj4yXXwwKSsxMj4+Ml18MCkrKChrW2c+PjJdfDApKjU2fDApO2RvIGlmKGtbKGtbaT4+Ml18MCkrMjQ+PjJdfDApe2lmKCEoa1soa1tqPj4yXXwwKSsyND4+Ml18MCkpe2tbaD4+Ml09a1tmPj4yXTticmVha31rW2w+PjJdPWtbKGtbYz4+Ml18MCkrND4+Ml07a1tlPj4yXT0wO2w9YWNba1soa1tsPj4yXXwwKSszMj4+Ml0mMjU1XShrW2w+PjJdfDAsZSxrWyhrW2k+PjJdfDApKzMyPj4yXXwwLGtbKGtbaT4+Ml18MCkrMjA+PjJdfDAsa1soa1tqPj4yXXwwKSszMj4+Ml18MCxrWyhrW2o+PjJdfDApKzIwPj4yXXwwKXwwO2tbbT4+Ml09bDtpZigoa1ttPj4yXXwwKTw9MCl7a1toPj4yXT1rW2Y+PjJdO2JyZWFrfWVsc2V7a1toPj4yXT1rW2c+PjJdO2JyZWFrfX1lbHNlIGtbaD4+Ml09a1tnPj4yXTt3aGlsZSgwKTtrWyhrWyhrW2M+PjJdfDApKzg+PjJdfDApKyhrW2Q+PjJdPDwyKT4+Ml09a1toPj4yXTtyPW47cmV0dXJufWZ1bmN0aW9uIFhMKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wLGk9MCxqPTA7aT1yO3I9ciszMnwwO2M9aSsyNHwwO2o9aSsyMHwwO2g9aSsxNnwwO2Y9aSsxMnwwO2c9aSs4fDA7ZD1pKzR8MDtlPWk7a1tjPj4yXT1hO2tbaj4+Ml09YjtrW2g+PjJdPTA7a1tmPj4yXT1rWyhrW2M+PjJdfDApKzQ4Pj4yXTtrW2c+PjJdPWtba1tmPj4yXT4+Ml07a1tkPj4yXT1rWyhrWyhrW2c+PjJdfDApKzg+PjJdfDApKzI0Pj4yXTthPVVMKGtbZz4+Ml18MCxrWyhrW2Y+PjJdfDApKzQ+PjJdfDAsa1tqPj4yXXwwKXwwO2tbaD4+Ml09YTtpZighKGtbaD4+Ml18MCkpe2tbZT4+Ml09a1soa1tmPj4yXXwwKSsxNj4+Ml07aWYoIShrWyhrW2c+PjJdfDApKzU2Pj4yXXwwKSl7aj0oa1tnPj4yXXwwKSs1Nis4fDA7aj12TChrW2Q+PjJdfDAsa1tqPj4yXXwwLGtbais0Pj4yXXwwLChrW2c+PjJdfDApKzU2fDApfDA7a1toPj4yXT1qO2o9KGtbZz4+Ml18MCkrNTYrOHwwO2tbaj4+Ml09MDtrW2orND4+Ml09MH1pZighKGtbaD4+Ml18MCkpe2tbKGtbZj4+Ml18MCkrMzIrMTY+PjJdPWtbKGtbZz4+Ml18MCkrNTY+PjJdO2I9KGtbZz4+Ml18MCkrNTYrOHwwO2o9a1tiKzQ+PjJdfDA7YT0oa1tmPj4yXXwwKSs4fDA7a1thPj4yXT1rW2I+PjJdO2tbYSs0Pj4yXT1qO2E9a1tlPj4yXXwwO2o9KGtbZz4+Ml18MCkrNTYrOHwwO2c9ajtnPSRSKGtbZz4+Ml18MCxrW2crND4+Ml18MCxhfDAsKChhfDApPDApPDwzMT4+MzF8MCl8MDtrW2o+PjJdPWc7a1tqKzQ+PjJdPUx9fWlmKGtbaD4+Ml18MCl7aj1rW2g+PjJdfDA7cj1pO3JldHVybiBqfDB9aj1LTChrW2M+PjJdfDApfDA7a1toPj4yXT1qO2o9a1toPj4yXXwwO3I9aTtyZXR1cm4ganwwfWZ1bmN0aW9uIFlMKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTA7ZT1yO3I9cisxNnwwO2I9ZSsxMnwwO2M9ZSs4fDA7ZD1lO2tbYj4+Ml09YTtrW2M+PjJdPTA7YT1kO2tbYT4+Ml09MTY7a1thKzQ+PjJdPTA7d2hpbGUoMSl7Zj1kO2g9a1tmKzQ+PjJdfDA7YT1rW2I+PjJdfDA7Zz0oKGF8MCk8MCk8PDMxPj4zMTtpZighKChofDApPChnfDApfCgoaHwwKT09KGd8MCk/KGtbZj4+Ml18MCk+Pj4wPGE+Pj4wOjApKSlicmVhaztnPWQ7Zz1rUyhrW2c+PjJdfDAsa1tnKzQ+PjJdfDAsMTYsMCl8MDtoPWQ7a1toPj4yXT1nO2tbaCs0Pj4yXT1MO2tbYz4+Ml09KGtbYz4+Ml18MCkrMX1yPWU7cmV0dXJuIGtbYz4+Ml18MH1mdW5jdGlvbiBaTChhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGk9MCxqPTAsbD0wLG09MCxuPTAsbz0wLHA9MDtwPXI7cj1yKzQ4fDA7ZT1wKzQ0fDA7Zj1wKzQwfDA7Zz1wKzM2fDA7aD1wKzMyfDA7bT1wKzI4fDA7aj1wKzh8MDtpPXArMjR8MDtvPXArMjB8MDtsPXA7bj1wKzE2fDA7a1tlPj4yXT1hO2tbZj4+Ml09YjtrW2c+PjJdPWM7a1toPj4yXT1kO2E9a1tnPj4yXXwwO2M9a1thKzQ+PjJdfDA7ZD1qO2tbZD4+Ml09a1thPj4yXTtrW2QrND4+Ml09YztrW28+PjJdPTA7ZD1fTChrW2Y+PjJdfDApfDA7a1ttPj4yXT1kO2tba1toPj4yXT4+Ml09ZDtpZighKGtbbT4+Ml18MCkpa1tvPj4yXT03O2tbaT4+Ml09MDt3aGlsZSgxKXtpZighKChrW2k+PjJdfDApPChrW2Y+PjJdfDApPyhrW28+PjJdfDApPT0wOjApKWJyZWFrO2E9bDtrW2E+PjJdPTA7a1thKzQ+PjJdPTA7a1tuPj4yXT0oa1soa1ttPj4yXXwwKSsxMj4+Ml18MCkrKChrW2k+PjJdfDApKjU2fDApO2E9ajthPWJNKGtbZT4+Ml18MCwoa1tlPj4yXXwwKSs0MHwwLGtbYT4+Ml18MCxrW2ErND4+Ml18MCxrW24+PjJdfDAsbCl8MDtrW28+PjJdPWE7YT0oa1tuPj4yXXwwKSs4fDA7Yz1rW2ErND4+Ml18MDtkPWo7a1tkPj4yXT1rW2E+PjJdO2tbZCs0Pj4yXT1jO2tbaT4+Ml09KGtbaT4+Ml18MCkrMX1pZighKGtbbz4+Ml18MCkpe2M9ajtuPWM7bj1rW24+PjJdfDA7Yz1jKzR8MDtjPWtbYz4+Ml18MDtkPWtbZz4+Ml18MDthPWQ7a1thPj4yXT1uO2Q9ZCs0fDA7a1tkPj4yXT1jO289a1tvPj4yXXwwO3I9cDtyZXR1cm4gb3wwfWJMKGtbbT4+Ml18MCk7a1trW2g+PjJdPj4yXT0wO2M9ajtuPWM7bj1rW24+PjJdfDA7Yz1jKzR8MDtjPWtbYz4+Ml18MDtkPWtbZz4+Ml18MDthPWQ7a1thPj4yXT1uO2Q9ZCs0fDA7a1tkPj4yXT1jO289a1tvPj4yXXwwO3I9cDtyZXR1cm4gb3wwfWZ1bmN0aW9uIF9MKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MCxlPTAsZj0wO2Y9cjtyPXIrMTZ8MDtiPWYrMTJ8MDtkPWYrOHwwO2M9Zis0fDA7ZT1mO2tbYj4+Ml09YTtrW2Q+PjJdPTI7d2hpbGUoMSl7YT1rW2Q+PjJdfDA7aWYoKGtbZD4+Ml18MCk+PShrW2I+PjJdfDApKWJyZWFrO2tbZD4+Ml09KGtbZD4+Ml18MCkrYX1rW2M+PjJdPTE2KyhhKjYwfDApO2lmKExpKDEwMCl8MClhPTA7ZWxzZXthPWtbYz4+Ml18MDthPXVnKGEsKChhfDApPDApPDwzMT4+MzEpfDB9a1tlPj4yXT1hO2lmKCEoa1tlPj4yXXwwKSl7ZT1rW2U+PjJdfDA7cj1mO3JldHVybiBlfDB9a1trW2U+PjJdPj4yXT1rW2Q+PjJdO2tbKGtbZT4+Ml18MCkrND4+Ml09MDtrWyhrW2U+PjJdfDApKzEyPj4yXT0oa1tlPj4yXXwwKSsxNjtrWyhrW2U+PjJdfDApKzg+PjJdPShrWyhrW2U+PjJdfDApKzEyPj4yXXwwKSsoKGtbZD4+Ml18MCkqNTZ8MCk7ZT1rW2U+PjJdfDA7cj1mO3JldHVybiBlfDB9ZnVuY3Rpb24gJEwoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaT0wLGo9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxzPTAsdD0wLHU9MDtzPXI7cj1yKzY0fDA7Zj1zKzQ4fDA7Zz1zKzQ0fDA7bz1zKzQwfDA7dT1zKzM2fDA7dD1zKzMyfDA7cT1zKzI4fDA7aj1zKzI0fDA7aD1zKzIwfDA7cD1zKzE2fDA7bD1zKzEyfDA7aT1zKzh8MDtuPXMrNHwwO209cztrW2Y+PjJdPWE7a1tnPj4yXT1iO2tbbz4+Ml09YztrW3U+PjJdPWQ7a1t0Pj4yXT1lO2tbcT4+Ml09MDtrW2o+PjJdPTE7a1twPj4yXT1rW3U+PjJdO2E9YU0oa1tmPj4yXXwwLGtbdD4+Ml18MCxsKXwwO2tbcT4+Ml09YTtrW2g+PjJdPTE7d2hpbGUoMSl7aWYoKGtbaD4+Ml18MCk+PShrW2c+PjJdfDApKWJyZWFrO2tbaj4+Ml09a1tqPj4yXTw8NDtrW2g+PjJdPShrW2g+PjJdfDApKzF9a1toPj4yXT0xO3doaWxlKDEpe2lmKCEoKGtbaD4+Ml18MCk8KGtbZz4+Ml18MCk/KGtbcT4+Ml18MCk9PTA6MCkpYnJlYWs7a1tpPj4yXT0oKGtbbz4+Ml18MCkvKGtbaj4+Ml18MCl8MHwwKSUxNnwwO2tbbj4+Ml09KGtbKGtbcD4+Ml18MCkrMTI+PjJdfDApKygoa1tpPj4yXXwwKSo1NnwwKTtkbyBpZighKGtbKGtbbj4+Ml18MCkrNDg+PjJdfDApKXt1PV9MKDE2KXwwO2tbbT4+Ml09dTtpZighKGtbbT4+Ml18MCkpe2tbcT4+Ml09NzticmVha31lbHNle3U9YU0oa1tmPj4yXXwwLGtbbT4+Ml18MCwoa1tuPj4yXXwwKSs0OHwwKXwwO2tbcT4+Ml09dTticmVha319d2hpbGUoMCk7aWYoIShrW3E+PjJdfDApKXtrW3A+PjJdPWtbKGtbKGtbbj4+Ml18MCkrNDg+PjJdfDApKzQ+PjJdO2tbaj4+Ml09KGtbaj4+Ml18MCkvMTZ8MH1rW2g+PjJdPShrW2g+PjJdfDApKzF9Zj1rW2w+PjJdfDA7aWYoIShrW3E+PjJdfDApKXtrWyhrWyhrW3A+PjJdfDApKzEyPj4yXXwwKSsoKChrW28+PjJdfDApJTE2fDApKjU2fDApKzQ4Pj4yXT1mO3U9a1txPj4yXXwwO3I9cztyZXR1cm4gdXwwfWVsc2V7Z0woZik7dT1rW3E+PjJdfDA7cj1zO3JldHVybiB1fDB9cmV0dXJuIDB9ZnVuY3Rpb24gYU0oYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGk9MDtpPXI7cj1yKzMyfDA7Zj1pKzE2fDA7ZD1pKzEyfDA7ZT1pKzh8MDtoPWkrNHwwO2c9aTtrW2Y+PjJdPWE7a1tkPj4yXT1iO2tbZT4+Ml09YztrW2g+PjJdPTA7aWYoTGkoMTAwKXwwKWI9MDtlbHNlIGI9dWcoNjQsMCl8MDtrW2tbZT4+Ml0+PjJdPWI7a1tnPj4yXT1iO2I9a1tkPj4yXXwwO2lmKCEoa1tnPj4yXXwwKSl7YkwoYik7a1toPj4yXT03O2g9a1toPj4yXXwwO3I9aTtyZXR1cm4gaHwwfWtbKGtbZz4+Ml18MCkrND4+Ml09YjtrW2tbZz4+Ml0+PjJdPWtbZj4+Ml07Yj1rWyhrW2Y+PjJdfDApKzg+PjJdfDA7aWYoKChrWyhrWyhrW2Y+PjJdfDApKzg+PjJdfDApKzg+PjJdfDApKzl8MCk+KChrWyhrWyhrW2Y+PjJdfDApKzg+PjJdfDApKzQ+PjJdfDApLzJ8MHwwKSliPShrW2IrOD4+Ml18MCkrOXwwO2Vsc2UgYj0oa1tiKzQ+PjJdfDApLzJ8MDtrWyhrW2c+PjJdfDApKzE2Pj4yXT1iO2U9a1soa1tnPj4yXXwwKSsxNj4+Ml18MDtnPShrW2Y+PjJdfDApKzU2Kzh8MDtmPWc7Zj0kUihrW2Y+PjJdfDAsa1tmKzQ+PjJdfDAsZXwwLCgoZXwwKTwwKTw8MzE+PjMxfDApfDA7a1tnPj4yXT1mO2tbZys0Pj4yXT1MO2g9a1toPj4yXXwwO3I9aTtyZXR1cm4gaHwwfWZ1bmN0aW9uIGJNKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxpPTAsaj0wLGw9MCxtPTAsbj0wLG89MDtsPXI7cj1yKzQ4fDA7bj1sKzMyfDA7bT1sKzI4fDA7bz1sKzh8MDtnPWwrMjR8MDtoPWwrMjB8MDtqPWwrMTZ8MDtpPWw7a1tuPj4yXT1hO2tbbT4+Ml09YjthPW87a1thPj4yXT1jO2tbYSs0Pj4yXT1kO2tbZz4+Ml09ZTtrW2g+PjJdPWY7Zj1vO2Y9TUwoa1tuPj4yXXwwLGtbZz4+Ml18MCxrW20+PjJdfDAsa1tmPj4yXXwwLGtbZis0Pj4yXXwwKXwwO2tbaj4+Ml09ZjtpZighKGtbaj4+Ml18MCkpe249aTtrW24+PjJdPTA7a1tuKzQ+PjJdPTA7bj1OTChrW2c+PjJdfDAsaSl8MDtrW2o+PjJdPW47bj1rW2c+PjJdfDA7bz1pO289JFIoa1tuPj4yXXwwLGtbbis0Pj4yXXwwLGtbbz4+Ml18MCxrW28rND4+Ml18MCl8MDtuPShrW2c+PjJdfDApKzh8MDtrW24+PjJdPW87a1tuKzQ+PjJdPUw7bj1pO289a1toPj4yXXwwO209bztuPSRSKGtbbT4+Ml18MCxrW20rND4+Ml18MCxrW24+PjJdfDAsa1tuKzQ+PjJdfDApfDA7a1tvPj4yXT1uO2tbbys0Pj4yXT1MfWlmKGtbaj4+Ml18MCl7bz1rW2o+PjJdfDA7cj1sO3JldHVybiBvfDB9bz1LTChrW2c+PjJdfDApfDA7a1tqPj4yXT1vO289a1tqPj4yXXwwO3I9bDtyZXR1cm4gb3wwfWZ1bmN0aW9uIGNNKGEpe2E9YXwwO3ZhciBiPTAsYz0wO2M9cjtyPXIrMTZ8MDtiPWM7a1tiPj4yXT1hO3I9YztyZXR1cm4gKGxbKGtbYj4+Ml18MCkrNjY+PjBdfDB8MCkhPTF8MH1mdW5jdGlvbiBkTShhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTAsZT0wO2Q9cjtyPXIrMTZ8MDtiPWQrOHwwO2U9ZCs0fDA7Yz1kO2tbYj4+Ml09YTthPWVNKGtbKGtbYj4+Ml18MCkrMTY+PjJdfDAsZSl8MDtrW2M+PjJdPWE7a1soa1tiPj4yXXwwKSs1Nj4+Ml09MDtpZighKGtbZT4+Ml18MCkpe2U9a1tjPj4yXXwwO3I9ZDtyZXR1cm4gZXwwfWlbKGtbYj4+Ml18MCkrMj4+MF09MTtlPWtbYz4+Ml18MDtyPWQ7cmV0dXJuIGV8MH1mdW5jdGlvbiBlTShhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wO2c9cjtyPXIrMTZ8MDtlPWcrMTJ8MDtmPWcrOHwwO2M9Zys0fDA7ZD1nO2tbZj4+Ml09YTtrW2M+PjJdPWI7aWYoKGxbKGtbZj4+Ml18MCkrNjY+PjBdfDB8MCk+PTMpYT1PRihrW2Y+PjJdfDApfDA7ZWxzZSBhPTA7a1tkPj4yXT1hO2lmKGtbZD4+Ml18MCl7a1trW2M+PjJdPj4yXT0xO2tbZT4+Ml09a1tkPj4yXTtmPWtbZT4+Ml18MDtyPWc7cmV0dXJuIGZ8MH1hPWtbYz4+Ml18MDtpZigobFsoa1tmPj4yXXwwKSs2Nj4+MF18MHwwKSE9MSlrW2E+PjJdPTE7ZWxzZSBrW2E+PjJdPTA7a1tlPj4yXT0wO2Y9a1tlPj4yXXwwO3I9ZztyZXR1cm4gZnwwfWZ1bmN0aW9uIGZNKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTA7Zz1yO3I9cisxNnwwO2M9ZysxMnwwO2Q9Zys4fDA7ZT1nKzR8MDtmPWc7a1tjPj4yXT1hO2tbZD4+Ml09YjthPWtbYz4+Ml18MDtpZihpWyhrW2M+PjJdfDApKzU2Pj4wXXwwKXtrW2Y+PjJdPShrWyhrWyhrW2M+PjJdfDApKzIwPj4yXXwwKSsxMj4+Ml18MCkrKChrWyhrWyhrW2ErMjA+PjJdfDApKzg+PjJdfDApKzQ+PjJdfDApKjU2fDApO2tba1tkPj4yXT4+Ml09a1soa1tmPj4yXXwwKSsyMD4+Ml07a1tlPj4yXT1rWyhrW2Y+PjJdfDApKzMyPj4yXTtmPWtbZT4+Ml18MDtyPWc7cmV0dXJuIGZ8MH1lbHNle2tba1tkPj4yXT4+Ml09a1trW2ErMzY+PjJdPj4yXTtrW2U+PjJdPShrWyhrW2M+PjJdfDApKzM2Pj4yXXwwKSs4O2Y9a1tlPj4yXXwwO3I9ZztyZXR1cm4gZnwwfXJldHVybiAwfWZ1bmN0aW9uIGdNKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsbj0wLG89MCxwPTAscT0wLHM9MCx0PTA7dD1yO3I9cis0OHwwO2U9dCszMnwwO2Y9dCsyOHwwO2c9dCsyNHwwO2g9dCsyMHwwO3A9dCsxNnwwO249dCsxMnwwO3E9dCs4fDA7cz10KzR8MDtvPXQ7a1tlPj4yXT1hO2tbZj4+Ml09YjtrW2c+PjJdPWM7a1toPj4yXT1kO2lmKGtba1toPj4yXT4+Ml18MCl7cj10O3JldHVybn1rW24+PjJdPWtbKGtbZT4+Ml18MCkrNTY+PjJdO2tbcT4+Ml09KGtbKGtbZT4+Ml18MCkrNjQ+PjJdfDApKyhrW2Y+PjJdPDwxKTtrW3A+PjJdPShsW2tbcT4+Ml0+PjBdfDApPDw4fChsWyhrW3E+PjJdfDApKzE+PjBdfDApO2tbbz4+Ml09bFsoa1tlPj4yXXwwKSs1Pj4wXTtpZigoa1twPj4yXXwwKT4+PjA+PSgobFsoa1tuPj4yXXwwKSsoKGtbbz4+Ml18MCkrNSk+PjBdfDApPDw4fChsWyhrW24+PjJdfDApKygoa1tvPj4yXXwwKSs1KSsxPj4wXXwwKSk+Pj4wPygoa1twPj4yXXwwKSsoa1tnPj4yXXwwKXwwKT4+PjA8PShrWyhrWyhrW2U+PjJdfDApKzUyPj4yXXwwKSszNj4+Ml18MCk+Pj4wOjApe2M9eE0oa1tlPj4yXXwwLGtbcD4+Ml0mNjU1MzUsa1tnPj4yXSY2NTUzNSl8MDtrW3M+PjJdPWM7aWYoa1tzPj4yXXwwKXtrW2tbaD4+Ml0+PjJdPWtbcz4+Ml07cj10O3JldHVybn1jPShrW2U+PjJdfDApKzE4fDA7altjPj4xXT0oaltjPj4xXXwwKSstMTw8MTY+PjE2O2lmKCEobVsoa1tlPj4yXXwwKSsxOD4+MV18MCkpe2M9KGtbbj4+Ml18MCkrKChrW28+PjJdfDApKzEpfDA7aVtjPj4wXT0wO2lbYysxPj4wXT0wO2lbYysyPj4wXT0wO2lbYyszPj4wXT0wO2lbKGtbbj4+Ml18MCkrKChrW28+PjJdfDApKzcpPj4wXT0wO2lbKGtbbj4+Ml18MCkrKChrW28+PjJdfDApKzUpPj4wXT0oa1soa1soa1tlPj4yXXwwKSs1Mj4+Ml18MCkrMzY+PjJdfDApPj4+ODtpWyhrW24+PjJdfDApKygoa1tvPj4yXXwwKSs1KSsxPj4wXT1rWyhrWyhrW2U+PjJdfDApKzUyPj4yXXwwKSszNj4+Ml07alsoa1tlPj4yXXwwKSsxNj4+MV09KGtbKGtbKGtbZT4+Ml18MCkrNTI+PjJdfDApKzM2Pj4yXXwwKS0obFsoa1tlPj4yXXwwKSs1Pj4wXXwwKS0obFsoa1tlPj4yXXwwKSs2Pj4wXXwwKS04O3I9dDtyZXR1cm59ZWxzZXtjUyhrW3E+PjJdfDAsKGtbcT4+Ml18MCkrMnwwLChtWyhrW2U+PjJdfDApKzE4Pj4xXXwwKS0oa1tmPj4yXXwwKTw8MXwwKXwwO2lbKGtbbj4+Ml18MCkrKChrW28+PjJdfDApKzMpPj4wXT0obVsoa1tlPj4yXXwwKSsxOD4+MV18MCk+Pjg7aVsoa1tuPj4yXXwwKSsoKGtbbz4+Ml18MCkrMykrMT4+MF09alsoa1tlPj4yXXwwKSsxOD4+MV07Yz0oa1tlPj4yXXwwKSsxNnwwO2pbYz4+MV09KG1bYz4+MV18MCkrMjtyPXQ7cmV0dXJufX1jPV9qKDY0NTA4KXwwO2tba1toPj4yXT4+Ml09YztyPXQ7cmV0dXJufWZ1bmN0aW9uIGhNKGEsYixjLGQsZSxmLGcpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO3ZhciBoPTAsbj0wLG89MCxwPTAscT0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTA7ej1yO3I9cis0OHwwO2g9eis0NHwwO249eis0MHwwO289eiszNnwwO3A9eiszMnwwO3E9eisyOHwwO3M9eisyNHwwO3Q9eisyMHwwO3Y9eisxNnwwO3c9eisxMnwwO3U9eis4fDA7eD16KzR8MDt5PXo7a1toPj4yXT1hO2tbbj4+Ml09YjtrW28+PjJdPWM7a1twPj4yXT1kO2tbcT4+Ml09ZTtrW3M+PjJdPWY7a1t0Pj4yXT1nO2tbdj4+Ml09MDtpZigobFsoa1toPj4yXXwwKSsxPj4wXXwwKT09MD8oKGtbcD4+Ml18MCkrMnwwKTw9KG1bKGtbaD4+Ml18MCkrMTY+PjFdfDApOjApe2Q9UWcoa1soa1toPj4yXXwwKSs3Mj4+Ml18MCl8MDtrW3k+PjJdPWQ7aWYoa1t5Pj4yXXwwKXtrW2tbdD4+Ml0+PjJdPWtbeT4+Ml07cj16O3JldHVybn1rW3U+PjJdPWtbKGtbaD4+Ml18MCkrNTY+PjJdO2Q9ek0oa1toPj4yXXwwLGtbcD4+Ml18MCx2KXwwO2tbeT4+Ml09ZDtpZihrW3k+PjJdfDApe2tba1t0Pj4yXT4+Ml09a1t5Pj4yXTtyPXo7cmV0dXJufWQ9KGtbaD4+Ml18MCkrMTZ8MDtqW2Q+PjFdPShtW2Q+PjFdfDApLSgyKyhrW3A+PjJdfDApJjY1NTM1KTtiUygoa1t1Pj4yXXwwKSsoa1t2Pj4yXXwwKXwwLGtbbz4+Ml18MCxrW3A+PjJdfDApfDA7aWYoa1tzPj4yXXwwKXB0KChrW3U+PjJdfDApKyhrW3Y+PjJdfDApfDAsa1tzPj4yXXwwKTtrW3g+PjJdPShrWyhrW2g+PjJdfDApKzY0Pj4yXXwwKSsoa1tuPj4yXTw8MSk7Y1MoKGtbeD4+Ml18MCkrMnwwLGtbeD4+Ml18MCwobVsoa1toPj4yXXwwKSsxOD4+MV18MCktKGtbbj4+Ml18MCk8PDF8MCl8MDtpW2tbeD4+Ml0+PjBdPWtbdj4+Ml0+Pjg7aVsoa1t4Pj4yXXwwKSsxPj4wXT1rW3Y+PjJdO3k9KGtbaD4+Ml18MCkrMTh8MDtqW3k+PjFdPShqW3k+PjFdfDApKzE8PDE2Pj4xNjt5PShrW3U+PjJdfDApKygobFsoa1toPj4yXXwwKSs1Pj4wXXwwKSs0KXwwO2Q9KGlbeT4+MF18MCkrMTw8MjQ+PjI0O2lbeT4+MF09ZDtpZighKGQmMjU1KSl7ZD0oa1t1Pj4yXXwwKSsoKGxbKGtbaD4+Ml18MCkrNT4+MF18MCkrMyl8MDtpW2Q+PjBdPShpW2Q+PjBdfDApKzE8PDI0Pj4yNH1pZighKGlbKGtbKGtbaD4+Ml18MCkrNTI+PjJdfDApKzE3Pj4wXXwwKSl7cj16O3JldHVybn1xSyhrW2g+PjJdfDAsa1tvPj4yXXwwLGtbdD4+Ml18MCk7cj16O3JldHVybn1pZihrW3E+PjJdfDApe2JTKGtbcT4+Ml18MCxrW28+PjJdfDAsa1twPj4yXXwwKXwwO2tbbz4+Ml09a1txPj4yXX1pZihrW3M+PjJdfDApcHQoa1tvPj4yXXwwLGtbcz4+Ml18MCk7eT0oa1toPj4yXXwwKSsxfDA7ZD1pW3k+PjBdfDA7aVt5Pj4wXT1kKzE8PDI0Pj4yNDtrW3c+PjJdPWQmMjU1O2tbKGtbaD4+Ml18MCkrMzIrKGtbdz4+Ml08PDIpPj4yXT1rW28+PjJdO2pbKGtbaD4+Ml18MCkrMjIrKGtbdz4+Ml08PDEpPj4xXT1rW24+PjJdO3I9ejtyZXR1cm59ZnVuY3Rpb24gaU0oYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wLGU9MCxmPTAsZz0wLGg9MCxuPTAsbz0wLHA9MCxxPTA7cT1yO3I9cis2NHwwO2I9cSszMnwwO3A9cSsyOHwwO2Y9cSsyNHwwO2M9cSszNnwwO2c9cSsyMHwwO2U9cSsxNnwwO2g9cSsxMnwwO249cSs4fDA7ZD1xKzR8MDtvPXE7a1tiPj4yXT1hO2tbcD4+Ml09MDtrW2Y+PjJdPShrWyhrWyhrW2I+PjJdfDApKzQ+PjJdfDApKzM2Pj4yXTw8MT4+PjApLzN8MDtrW2c+PjJdPTA7ZG97a1tlPj4yXT1pWyhrW2I+PjJdfDApKzY4Pj4wXTtrW2g+PjJdPWtbKGtbYj4+Ml18MCkrMTIwKyhrW2U+PjJdPDwyKT4+Ml07YT1pWyhrW2g+PjJdfDApKzE+PjBdfDA7aWYoIShrW2U+PjJdfDApKXtpZighKGE8PDI0Pj4yNCkpYnJlYWs7YT1qTShrW2g+PjJdfDAsKGtbYj4+Ml18MCkrMTIwKzR8MCl8MDtrW3A+PjJdPWE7aWYoIShrW3A+PjJdfDApKXtpWyhrW2I+PjJdfDApKzY4Pj4wXT0xO2pbKGtbYj4+Ml18MCkrODA+PjFdPTA7alsoa1tiPj4yXXwwKSs4MCsyPj4xXT0wfX1lbHNle2lmKChhJjI1NXwwKT09MD8obVsoa1toPj4yXXwwKSsxNj4+MV18MCk8PShrW2Y+PjJdfDApOjApYnJlYWs7a1tuPj4yXT1rWyhrW2I+PjJdfDApKzEyMCsoKGtbZT4+Ml18MCktMTw8Mik+PjJdO2tbZD4+Ml09bVsoa1tiPj4yXXwwKSs4MCsoKGtbZT4+Ml18MCktMTw8MSk+PjFdO2E9UWcoa1soa1tuPj4yXXwwKSs3Mj4+Ml18MCl8MDtrW3A+PjJdPWE7ZG8gaWYoIShrW3A+PjJdfDApKXtpZigoKCgobFsoa1toPj4yXXwwKSszPj4wXXwwKSE9MD8obFsoa1toPj4yXXwwKSsxPj4wXXwwKT09MTowKT8obVsoa1toPj4yXXwwKSsyMj4+MV18MCk9PShtWyhrW2g+PjJdfDApKzE4Pj4xXXwwKTowKT8oa1soa1tuPj4yXXwwKSs4ND4+Ml18MCkhPTE6MCk/KG1bKGtbbj4+Ml18MCkrMTg+PjFdfDApPT0oa1tkPj4yXXwwKTowKXthPWtNKGtbbj4+Ml18MCxrW2g+PjJdfDAsYyl8MDtrW3A+PjJdPWE7YnJlYWt9YT1naihrWyhrWyhrW2I+PjJdfDApKzQ+PjJdfDApKzMyPj4yXXwwKXwwO2tbbz4+Ml09YTthPWxNKGtbbj4+Ml18MCxrW2Q+PjJdfDAsa1tvPj4yXXwwLChrW2U+PjJdfDApPT0xJjEsbFsoa1tiPj4yXXwwKSs2Nz4+MF0mMSl8MDtrW3A+PjJdPWE7aWYoa1tnPj4yXXwwKWpqKGtbZz4+Ml18MCk7a1tnPj4yXT1rW28+PjJdfXdoaWxlKDApO2lbKGtbaD4+Ml18MCkrMT4+MF09MDtfQihrW2g+PjJdfDApO2E9KGtbYj4+Ml18MCkrNjh8MDtpW2E+PjBdPShpW2E+PjBdfDApKy0xPDwyND4+MjR9fXdoaWxlKChrW3A+PjJdfDApPT0wKTtpZighKGtbZz4+Ml18MCkpe3A9a1twPj4yXXwwO3I9cTtyZXR1cm4gcHwwfWpqKGtbZz4+Ml18MCk7cD1rW3A+PjJdfDA7cj1xO3JldHVybiBwfDB9ZnVuY3Rpb24gak0oYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLG09MDttPXI7cj1yKzMyfDA7Yz1tKzI0fDA7ZD1tKzIwfDA7ZT1tKzE2fDA7aj1tKzEyfDA7Zz1tKzh8MDtoPW0rNHwwO2Y9bTtrW2Q+PjJdPWE7a1tlPj4yXT1iO2tbZz4+Ml09MDtrW2g+PjJdPTA7a1tmPj4yXT1rWyhrW2Q+PjJdfDApKzUyPj4yXTtiPVFnKGtbKGtbZD4+Ml18MCkrNzI+PjJdfDApfDA7a1tqPj4yXT1iO2lmKChrW2o+PjJdfDApPT0wPyhiPWtLKGtbZj4+Ml18MCxnLGgsa1soa1tkPj4yXXwwKSs4ND4+Ml18MCwwKXwwLGtbaj4+Ml09YixxTShrW2Q+PjJdfDAsa1tnPj4yXXwwLGopLChpWyhrW2Y+PjJdfDApKzE3Pj4wXXwwKSE9MCk6MClvSyhrW2Y+PjJdfDAsa1toPj4yXXwwLDUsa1soa1tkPj4yXXwwKSs4ND4+Ml18MCxqKTtpZihrW2o+PjJdfDApe2tba1tlPj4yXT4+Ml09MDtfQihrW2c+PjJdfDApO2tbYz4+Ml09a1tqPj4yXTtqPWtbYz4+Ml18MDtyPW07cmV0dXJuIGp8MH1lbHNle2JTKChrW2c+PjJdfDApKzIyfDAsKGtbZD4+Ml18MCkrMjJ8MCxsWyhrW2Q+PjJdfDApKzE+PjBdPDwxfDApfDA7YlMoKGtbZz4+Ml18MCkrMzJ8MCwoa1tkPj4yXXwwKSszMnwwLGxbKGtbZD4+Ml18MCkrMT4+MF08PDJ8MCl8MDtpWyhrW2c+PjJdfDApKzE+PjBdPWlbKGtbZD4+Ml18MCkrMT4+MF18MDtsTChrW2Q+PjJdfDAsbFtrWyhrW2c+PjJdfDApKzU2Pj4yXT4+MF0mLTkpO3B0KChrWyhrW2Q+PjJdfDApKzU2Pj4yXXwwKSsoKGxbKGtbZD4+Ml18MCkrNT4+MF18MCkrOCl8MCxrW2g+PjJdfDApO2tba1tlPj4yXT4+Ml09a1tnPj4yXTtrW2M+PjJdPTA7aj1rW2M+PjJdfDA7cj1tO3JldHVybiBqfDB9cmV0dXJuIDB9ZnVuY3Rpb24ga00oYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLG49MCxvPTAscD0wLHE9MCxzPTAsdD0wLHU9MCx2PTA7dj1yO3I9cis0OHwwO2Q9dis0MHwwO2U9diszNnwwO2Y9diszMnwwO2c9disyOHwwO2g9disyNHwwO289disyMHwwO3Q9disxNnwwO3M9disxMnwwO3A9dis4fDA7bj12KzR8MDt1PXYrNDR8MDtxPXY7a1tlPj4yXT1hO2tbZj4+Ml09YjtrW2c+PjJdPWM7a1toPj4yXT1rWyhrW2Y+PjJdfDApKzUyPj4yXTtpZighKG1bKGtbZj4+Ml18MCkrMTg+PjFdfDApKXt1PV9qKDY1MDA2KXwwO2tbZD4+Ml09dTt1PWtbZD4+Ml18MDtyPXY7cmV0dXJuIHV8MH1jPWtLKGtbaD4+Ml18MCxvLHMsMCwwKXwwO2tbdD4+Ml09YztpZighKGtbdD4+Ml18MCkpe2tbcD4+Ml09KGtbZz4+Ml18MCkrNDtrW24+PjJdPWtbKGtbZj4+Ml18MCkrMzI+PjJdO2M9Z2Nba1soa1tmPj4yXXwwKSs3Nj4+Ml0mMjU1XShrW2Y+PjJdfDAsa1tuPj4yXXwwKXwwO2pbdT4+MV09YztsTChrW28+PjJdfDAsMTMpO2M9dk0oa1tvPj4yXXwwLDEsbix1KXwwO2tbdD4+Ml09YztpZihrW3Q+PjJdfDApe2tbZD4+Ml09a1t0Pj4yXTt1PWtbZD4+Ml18MDtyPXY7cmV0dXJuIHV8MH1qWyhrW28+PjJdfDApKzE2Pj4xXT0oa1soa1toPj4yXXwwKSszNj4+Ml18MCktKG1bKGtbbz4+Ml18MCkrMTQ+PjFdfDApLTItKG1bdT4+MV18MCk7aWYoKGlbKGtbaD4+Ml18MCkrMTc+PjBdfDApIT0wPyhvSyhrW2g+PjJdfDAsa1tzPj4yXXwwLDUsa1soa1tlPj4yXXwwKSs4ND4+Ml18MCx0KSwobVt1Pj4xXXwwKT4obVsoa1tvPj4yXXwwKSsxMj4+MV18MCkpOjApcUsoa1tvPj4yXXwwLGtbbj4+Ml18MCx0KTtrW24+PjJdPShrWyhrW2Y+PjJdfDApKzU2Pj4yXXwwKSsobVsoa1tmPj4yXXwwKSsyMD4+MV0mKGxbKGtbKGtbZj4+Ml18MCkrNjQ+PjJdfDApKygobVsoa1tmPj4yXXwwKSsxOD4+MV18MCktMTw8MSk+PjBdPDw4fGxbKGtbKGtbZj4+Ml18MCkrNjQ+PjJdfDApKygobVsoa1tmPj4yXXwwKSsxOD4+MV18MCktMTw8MSkrMT4+MF0pKTtrW3E+PjJdPShrW24+PjJdfDApKzk7ZG97dT1rW24+PjJdfDA7a1tuPj4yXT11KzE7aWYoIShsW3U+PjBdJjEyOCkpYnJlYWt9d2hpbGUoKGtbbj4+Ml18MCk+Pj4wPChrW3E+PjJdfDApPj4+MCk7a1txPj4yXT0oa1tuPj4yXXwwKSs5O2Rve3U9a1tuPj4yXXwwO2tbbj4+Ml09dSsxO3U9aVt1Pj4wXXwwO2M9a1twPj4yXXwwO2tbcD4+Ml09YysxO2lbYz4+MF09dTtpZighKHUmMTI4KSlicmVha313aGlsZSgoa1tuPj4yXXwwKT4+PjA8KGtbcT4+Ml18MCk+Pj4wKTtpZighKGtbdD4+Ml18MCkpaE0oa1tlPj4yXXwwLG1bKGtbZT4+Ml18MCkrMTg+PjFdfDAsa1tnPj4yXXwwLChrW3A+PjJdfDApLShrW2c+PjJdfDApfDAsMCxrWyhrW2Y+PjJdfDApKzg0Pj4yXXwwLHQpO3B0KChrWyhrW2U+PjJdfDApKzU2Pj4yXXwwKSsoKGxbKGtbZT4+Ml18MCkrNT4+MF18MCkrOCl8MCxrW3M+PjJdfDApO19CKGtbbz4+Ml18MCl9a1tkPj4yXT1rW3Q+PjJdO3U9a1tkPj4yXXwwO3I9djtyZXR1cm4gdXwwfWZ1bmN0aW9uIGxNKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLG49MCxvPTAscD0wLHE9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MCxFPTAsRj0wLEc9MCxIPTAsST0wLEo9MCxLPTAsTD0wLE09MCxOPTAsTz0wLFA9MCxRPTAsUj0wLFM9MCxUPTAsVT0wLFY9MCxXPTAsWD0wLFk9MCxaPTAsXz0wLCQ9MCxhYT0wLGJhPTAsY2E9MCxkYT0wLGVhPTAsZmE9MCxnYT0wLGhhPTAsaWE9MCxqYT0wLGthPTAsbGE9MCxtYT0wLG5hPTAsb2E9MCxwYT0wLHFhPTAscmE9MCxzYT0wLHRhPTAsdWE9MCx2YT0wLHdhPTAseGE9MCx5YT0wLHphPTAsQWE9MCxCYT0wLENhPTAsRGE9MDtEYT1yO3I9cis0NDh8MDtnYT1EYSs0MTJ8MDtoYT1EYSs0MDh8MDtmPURhKzQwNHwwO1E9RGErNDAwfDA7aWE9RGErMzk2fDA7Qz1EYSszOTJ8MDt6YT1EYSszODh8MDt0PURhKzM4NHwwO3dhPURhKzM4MHwwO3lhPURhKzM3NnwwO3BhPURhKzM3MnwwO1k9RGErMzY4fDA7SD1EYSszNjR8MDtaPURhKzM2MHwwO0FhPURhKzM1NnwwO3VhPURhKzQzMHwwO3ZhPURhKzM1MnwwO0NhPURhKzM0OHwwO0w9RGErMzQ0fDA7cD1EYSszNDB8MDtXPURhKzMzNnwwO0E9RGErMzMyfDA7bGE9RGErMzIwfDA7a2E9RGErMzAwfDA7Sz1EYSsyOTZ8MDtvPURhKzI4OHwwO25hPURhKzI2NHwwO29hPURhKzI0NHwwO0JhPURhKzIyNHwwO249RGErMjIwfDA7TT1EYSsyMTZ8MDtqYT1EYSs0MzJ8MDtTPURhKzE5NnwwO0U9RGErMTc2fDA7RD1EYSs0MjB8MDttYT1EYSsxNjB8MDtnPURhKzE1MnwwO3Y9RGErMTQ4fDA7cT1EYSsxNDR8MDtoPURhKzE0MHwwO3M9RGErNDE4fDA7eD1EYSsxMzZ8MDt5PURhKzEzMnwwO3o9RGErNDE2fDA7dz1EYSsxMjh8MDt1PURhKzEyNHwwO0I9RGErMTIwfDA7UD1EYSsxMTZ8MDtPPURhKzExMnwwO049RGErMTA4fDA7Rj1EYSsxMDR8MDtJPURhKzEwMHwwO0c9RGErOTZ8MDtKPURhKzkyfDA7YWE9RGErODh8MDtSPURhKzg0fDA7VD1EYSs4MHwwO2ZhPURhKzc2fDA7VT1EYSs3MnwwO1Y9RGErNjh8MDtfPURhKzY0fDA7Y2E9RGErNjB8MDskPURhKzU2fDA7ZGE9RGErNTJ8MDtlYT1EYSs0OHwwO2JhPURhKzQ0fDA7WD1EYTtzYT1EYSs0MHwwO3FhPURhKzM2fDA7cmE9RGErMzJ8MDt4YT1EYSsyOHwwO3RhPURhKzI0fDA7a1toYT4+Ml09YTtrW2Y+PjJdPWI7a1tRPj4yXT1jO2tbaWE+PjJdPWQ7a1tDPj4yXT1lO2tbdD4+Ml09MDtrW3dhPj4yXT0wO2tbQWE+PjJdPTA7a1twPj4yXT0wO2tbVz4+Ml09MDtpW2phPj4wXT0wO2lbamErMT4+MF09MDtpW2phKzI+PjBdPTA7aVtqYSszPj4wXT0wO2lbamErND4+MF09MDtrW21hPj4yXT0wO2tbbWErOD4+Ml09MDtrW3phPj4yXT1rWyhrW2hhPj4yXXwwKSs1Mj4+Ml07aWYoIShrW1E+PjJdfDApKXtrW2dhPj4yXT03O0NhPWtbZ2E+PjJdfDA7cj1EYTtyZXR1cm4gQ2F8MH1rW3BhPj4yXT0obFsoa1toYT4+Ml18MCkrMT4+MF18MCkrKG1bKGtbaGE+PjJdfDApKzE4Pj4xXXwwKTtpZigoa1twYT4+Ml18MCk8MilrW1o+PjJdPTA7ZWxzZXtkbyBpZihrW2Y+PjJdfDApaWYoKGtbZj4+Ml18MCk9PShrW3BhPj4yXXwwKSl7a1taPj4yXT0oa1twYT4+Ml18MCktMisoa1tDPj4yXXwwKTticmVha31lbHNle2tbWj4+Ml09KGtbZj4+Ml18MCktMTticmVha31lbHNlIGtbWj4+Ml09MDt3aGlsZSgwKTtrW3BhPj4yXT0yLShrW0M+PjJdfDApfWtbeWE+PjJdPShrW3BhPj4yXXwwKSsxO2Y9a1toYT4+Ml18MDtpZigoKGtbcGE+PjJdfDApKyhrW1o+PjJdfDApLShsWyhrW2hhPj4yXXwwKSsxPj4wXXwwKXwwKT09KG1bKGtbaGE+PjJdfDApKzE4Pj4xXXwwKSlrW0s+PjJdPShrWyhrW2hhPj4yXXwwKSs1Nj4+Ml18MCkrKChsW2YrNT4+MF18MCkrOCk7ZWxzZSBrW0s+PjJdPShrW2YrNTY+PjJdfDApKyhtWyhrW2hhPj4yXXwwKSsyMD4+MV0mKGxbKGtbKGtbaGE+PjJdfDApKzY0Pj4yXXwwKSsoKGtbcGE+PjJdfDApKyhrW1o+PjJdfDApLShsWyhrW2hhPj4yXXwwKSsxPj4wXXwwKTw8MSk+PjBdPDw4fGxbKGtbKGtbaGE+PjJdfDApKzY0Pj4yXXwwKSsoKGtbcGE+PjJdfDApKyhrW1o+PjJdfDApLShsWyhrW2hhPj4yXXwwKSsxPj4wXXwwKTw8MSkrMT4+MF0pKTthPXFyKGtbSz4+Ml18MCl8MDtrW00+PjJdPWE7d2hpbGUoMSl7YT1TRihrW3phPj4yXXwwLGtbTT4+Ml18MCxsYSsoa1twYT4+Ml08PDIpfDAsMCwwKXwwO2tbQWE+PjJdPWE7aWYoa1tBYT4+Ml18MCl7Yz0xNjticmVha31rW3Q+PjJdPShrW3Q+PjJdfDApKygxKyhtWyhrW2xhKyhrW3BhPj4yXTw8Mik+PjJdfDApKzE4Pj4xXXwwKSsobFsoa1tsYSsoa1twYT4+Ml08PDIpPj4yXXwwKSsxPj4wXXwwKSk7YT1rW3BhPj4yXXwwO2tbcGE+PjJdPWErLTE7aWYoIWEpe2M9MjY7YnJlYWt9aWYoKChrW3BhPj4yXXwwKSsoa1taPj4yXXwwKXwwKT09KG1bKGtbaGE+PjJdfDApKzIyPj4xXXwwKT8obFsoa1toYT4+Ml18MCkrMT4+MF18MCkhPTA6MCl7a1tvKyhrW3BhPj4yXTw8Mik+PjJdPWtbKGtbaGE+PjJdfDApKzMyPj4yXTthPXFyKGtbbysoa1twYT4+Ml08PDIpPj4yXXwwKXwwO2tbTT4+Ml09YTthPShnY1trWyhrW2hhPj4yXXwwKSs3Nj4+Ml0mMjU1XShrW2hhPj4yXXwwLGtbbysoa1twYT4+Ml08PDIpPj4yXXwwKXwwKSY2NTUzNTtrW0JhKyhrW3BhPj4yXTw8Mik+PjJdPWE7aVsoa1toYT4+Ml18MCkrMT4+MF09MDtjb250aW51ZX1rW28rKGtbcGE+PjJdPDwyKT4+Ml09KGtbKGtbaGE+PjJdfDApKzU2Pj4yXXwwKSsobVsoa1toYT4+Ml18MCkrMjA+PjFdJihsWyhrWyhrW2hhPj4yXXwwKSs2ND4+Ml18MCkrKChrW3BhPj4yXXwwKSsoa1taPj4yXXwwKS0obFsoa1toYT4+Ml18MCkrMT4+MF18MCk8PDEpPj4wXTw8OHxsWyhrWyhrW2hhPj4yXXwwKSs2ND4+Ml18MCkrKChrW3BhPj4yXXwwKSsoa1taPj4yXXwwKS0obFsoa1toYT4+Ml18MCkrMT4+MF18MCk8PDEpKzE+PjBdKSk7YT1xcihrW28rKGtbcGE+PjJdPDwyKT4+Ml18MCl8MDtrW00+PjJdPWE7YT0oZ2Nba1soa1toYT4+Ml18MCkrNzY+PjJdJjI1NV0oa1toYT4+Ml18MCxrW28rKGtbcGE+PjJdPDwyKT4+Ml18MCl8MCkmNjU1MzU7a1tCYSsoa1twYT4+Ml08PDIpPj4yXT1hO2lmKG1bKGtbemE+PjJdfDApKzIyPj4xXSY0KXtrW2c+PjJdPShrW28rKGtbcGE+PjJdPDwyKT4+Ml18MCktKGtbKGtbaGE+PjJdfDApKzU2Pj4yXXwwKTtpZigoKGtbZz4+Ml18MCkrKGtbQmErKGtbcGE+PjJdPDwyKT4+Ml18MCl8MCk+KGtbKGtbemE+PjJdfDApKzM2Pj4yXXwwKSl7Yz0yMzticmVha31iUygoa1tRPj4yXXwwKSsoa1tnPj4yXXwwKXwwLGtbbysoa1twYT4+Ml08PDIpPj4yXXwwLGtbQmErKGtbcGE+PjJdPDwyKT4+Ml18MCl8MDtrW28rKGtbcGE+PjJdPDwyKT4+Ml09KGtbUT4+Ml18MCkrKChrW28rKGtbcGE+PjJdPDwyKT4+Ml18MCktKGtbKGtbaGE+PjJdfDApKzU2Pj4yXXwwKSl9Z00oa1toYT4+Ml18MCwoa1twYT4+Ml18MCkrKGtbWj4+Ml18MCktKGxbKGtbaGE+PjJdfDApKzE+PjBdfDApfDAsa1tCYSsoa1twYT4+Ml08PDIpPj4yXXwwLEFhKX1hOmRvIGlmKChjfDApPT0xNilkUyhsYXwwLDAsKGtbcGE+PjJdfDApKzE8PDJ8MCl8MDtlbHNlIGlmKChjfDApPT0yMyl7Q2E9X2ooNjUzNDcpfDA7a1tBYT4+Ml09Q2E7ZFMobGF8MCwwLChrW3BhPj4yXXwwKSsxPDwyfDApfDB9ZWxzZSBpZigoY3wwKT09MjYpe2tbdD4+Ml09KGtbdD4+Ml18MCkrMyYtNDtrW0E+PjJdPShrW3Q+PjJdPDwyKSsoa1t0Pj4yXTw8MSkrKGtbKGtbemE+PjJdfDApKzMyPj4yXXwwKTtBPU9pKGtbQT4+Ml18MCl8MDtrW21hKzg+PjJdPUE7aWYoIShrW21hKzg+PjJdfDApKXtrW0FhPj4yXT03O2JyZWFrfWtbbWErMTI+PjJdPShrW21hKzg+PjJdfDApKyhrW3Q+PjJdPDwyKTtrW24+PjJdPShrW21hKzEyPj4yXXwwKSsoa1t0Pj4yXTw8MSk7a1ttYSs0Pj4yXT1rW2xhPj4yXTtqW3VhPj4xXT1sWyhrW21hKzQ+PjJdfDApKzQ+PjBdPDwyO2tbdmE+PjJdPWxbKGtbbWErND4+Ml18MCkrMz4+MF07a1twYT4+Ml09MDt3aGlsZSgxKXtpZigoa1twYT4+Ml18MCk+PShrW3lhPj4yXXwwKSlicmVhaztrW3Y+PjJdPWtbbGErKGtbcGE+PjJdPDwyKT4+Ml07a1txPj4yXT1tWyhrW3Y+PjJdfDApKzE4Pj4xXTtrW2g+PjJdPWtbKGtbdj4+Ml18MCkrNTY+PjJdO2pbcz4+MV09alsoa1t2Pj4yXXwwKSsyMD4+MV18MDtrW3g+PjJdPShrW2g+PjJdfDApKyhtWyhrW3Y+PjJdfDApKzE0Pj4xXXwwKTtpZigobFtrWyhrW3Y+PjJdfDApKzU2Pj4yXT4+MF18MCkhPShsW2tbKGtbbGE+PjJdfDApKzU2Pj4yXT4+MF18MCkpe2M9MzE7YnJlYWt9ZFMoKGtbbWErMTI+PjJdfDApKyhrW21hPj4yXTw8MSl8MCwwLChrW3E+PjJdfDApKyhsWyhrW3Y+PjJdfDApKzE+PjBdfDApPDwxfDApfDA7YjpkbyBpZigobFsoa1t2Pj4yXXwwKSsxPj4wXXwwKT4wKXtrW3E+PjJdPW1bKGtbdj4+Ml18MCkrMjI+PjFdO2tbWT4+Ml09MDt3aGlsZSgxKXtpZigoa1tZPj4yXXwwKT49KGtbcT4+Ml18MCkpYnJlYWs7a1soa1ttYSs4Pj4yXXwwKSsoa1ttYT4+Ml08PDIpPj4yXT0oa1toPj4yXXwwKSsobVtzPj4xXSYobFtrW3g+PjJdPj4wXTw8OHxsWyhrW3g+PjJdfDApKzE+PjBdKSk7a1t4Pj4yXT0oa1t4Pj4yXXwwKSsyO2tbbWE+PjJdPShrW21hPj4yXXwwKSsxO2tbWT4+Ml09KGtbWT4+Ml18MCkrMX1rW0g+PjJdPTA7d2hpbGUoMSl7aWYoKGtbSD4+Ml18MCk+PShsWyhrW3Y+PjJdfDApKzE+PjBdfDApKWJyZWFrIGI7a1soa1ttYSs4Pj4yXXwwKSsoa1ttYT4+Ml08PDIpPj4yXT1rWyhrW3Y+PjJdfDApKzMyKyhrW0g+PjJdPDwyKT4+Ml07a1ttYT4+Ml09KGtbbWE+PjJdfDApKzE7a1tIPj4yXT0oa1tIPj4yXXwwKSsxfX13aGlsZSgwKTtrW3k+PjJdPShrW2g+PjJdfDApKyhtWyhrW3Y+PjJdfDApKzE0Pj4xXXwwKSsobVsoa1t2Pj4yXXwwKSsxOD4+MV08PDEpO3doaWxlKDEpe2lmKChrW3g+PjJdfDApPj4+MD49KGtbeT4+Ml18MCk+Pj4wKWJyZWFrO2tbKGtbbWErOD4+Ml18MCkrKGtbbWE+PjJdPDwyKT4+Ml09KGtbaD4+Ml18MCkrKG1bcz4+MV0mKGxba1t4Pj4yXT4+MF08PDh8bFsoa1t4Pj4yXXwwKSsxPj4wXSkpO2tbeD4+Ml09KGtbeD4+Ml18MCkrMjtrW21hPj4yXT0oa1ttYT4+Ml18MCkrMX1rW29hKyhrW3BhPj4yXTw8Mik+PjJdPWtbbWE+PjJdO2lmKCEoKGtbdmE+PjJdfDApIT0wPzE6KGtbcGE+PjJdfDApPj0oKGtbeWE+PjJdfDApLTF8MCkpKXtqW3o+PjFdPWtbQmErKGtbcGE+PjJdPDwyKT4+Ml07alsoa1ttYSsxMj4+Ml18MCkrKGtbbWE+PjJdPDwxKT4+MV09alt6Pj4xXXwwO2tbdz4+Ml09KGtbbj4+Ml18MCkrKGtbcD4+Ml18MCk7a1twPj4yXT0oa1twPj4yXXwwKSsobVt6Pj4xXXwwKTtiUyhrW3c+PjJdfDAsa1tvKyhrW3BhPj4yXTw8Mik+PjJdfDAsbVt6Pj4xXXwwKXwwO2tbKGtbbWErOD4+Ml18MCkrKGtbbWE+PjJdPDwyKT4+Ml09KGtbdz4+Ml18MCkrKG1bdWE+PjFdfDApO2pbKGtbbWErMTI+PjJdfDApKyhrW21hPj4yXTw8MSk+PjFdPShtWyhrW21hKzEyPj4yXXwwKSsoa1ttYT4+Ml08PDEpPj4xXXwwKS0obVt1YT4+MV18MCk7YzpkbyBpZihpWyhrW3Y+PjJdfDApKzQ+PjBdfDApd2hpbGUoMSl7aWYoKG1bKGtbbWErMTI+PjJdfDApKyhrW21hPj4yXTw8MSk+PjFdfDApPj00KWJyZWFrIGM7QT1rW3A+PjJdfDA7a1twPj4yXT1BKzE7aVsoa1tuPj4yXXwwKStBPj4wXT0wO0E9KGtbbWErMTI+PjJdfDApKyhrW21hPj4yXTw8MSl8MDtqW0E+PjFdPShqW0E+PjFdfDApKzE8PDE2Pj4xNn1lbHNle0E9a1soa1ttYSs4Pj4yXXwwKSsoa1ttYT4+Ml08PDIpPj4yXXwwO3Q9KGtbKGtbdj4+Ml18MCkrNTY+PjJdfDApKzh8MDtpW0E+PjBdPWlbdD4+MF18MDtpW0ErMT4+MF09aVt0KzE+PjBdfDA7aVtBKzI+PjBdPWlbdCsyPj4wXXwwO2lbQSszPj4wXT1pW3QrMz4+MF18MH13aGlsZSgwKTtrW21hPj4yXT0oa1ttYT4+Ml18MCkrMX1rW3BhPj4yXT0oa1twYT4+Ml18MCkrMX1pZigoY3wwKT09MzEpe0NhPV9qKDY1NDE0KXwwO2tbQWE+PjJdPUNhO2JyZWFrfWtbQ2E+PjJdPShrWyhrW3phPj4yXXwwKSszNj4+Ml18MCktMTIrKG1bdWE+PjFdfDApO2tbcGE+PjJdPTA7d2hpbGUoMSl7aWYoKGtbcGE+PjJdfDApPj0oa1t5YT4+Ml18MCkpYnJlYWs7a1t1Pj4yXT1rW2xhKyhrW3BhPj4yXTw8Mik+PjJdO2tbQmErKGtbcGE+PjJdPDwyKT4+Ml09KGtbQ2E+PjJdfDApLShtWyhrW3U+PjJdfDApKzE2Pj4xXXwwKTtpZigoa1tCYSsoa1twYT4+Ml08PDIpPj4yXXwwKTwwKXtjPTUyO2JyZWFrfWtbWT4+Ml09MDt3aGlsZSgxKXtpZigoa1tZPj4yXXwwKT49KGxbKGtbdT4+Ml18MCkrMT4+MF18MCkpYnJlYWs7ej0yKygoZ2Nba1soa1t1Pj4yXXwwKSs3Nj4+Ml0mMjU1XShrW3U+PjJdfDAsa1soa1t1Pj4yXXwwKSszMisoa1tZPj4yXTw8Mik+PjJdfDApfDApJjY1NTM1KXwwO0E9QmErKGtbcGE+PjJdPDwyKXwwO2tbQT4+Ml09KGtbQT4+Ml18MCkrejtrW1k+PjJdPShrW1k+PjJdfDApKzF9a1tuYSsoa1twYT4+Ml08PDIpPj4yXT1rW29hKyhrW3BhPj4yXTw8Mik+PjJdO2tbcGE+PjJdPShrW3BhPj4yXXwwKSsxfWlmKChjfDApPT01Mil7Q2E9X2ooNjU1MTIpfDA7a1tBYT4+Ml09Q2E7YnJlYWt9a1tIPj4yXT1rW3lhPj4yXTtrW3BhPj4yXT0wO2Q6d2hpbGUoMSl7aWYoKGtbcGE+PjJdfDApPj0oa1tIPj4yXXwwKSl7Yz04MzticmVha313aGlsZSgxKXtpZigoa1tCYSsoa1twYT4+Ml08PDIpPj4yXXwwKTw9KGtbQ2E+PjJdfDApKWJyZWFrO2lmKCgoa1twYT4+Ml18MCkrMXwwKT49KGtbSD4+Ml18MCkpe2tbSD4+Ml09KGtbcGE+PjJdfDApKzI7aWYoKGtbSD4+Ml18MCk+NSl7Yz02MjticmVhayBkfWtbQmErKChrW0g+PjJdfDApLTE8PDIpPj4yXT0wO2tbbmErKChrW0g+PjJdfDApLTE8PDIpPj4yXT1rW21hPj4yXX1BPTIrKChtTShtYSwoa1tuYSsoa1twYT4+Ml08PDIpPj4yXXwwKS0xfDApfDApJjY1NTM1KXwwO2tbQj4+Ml09QTtBPUJhKyhrW3BhPj4yXTw8Mil8MDtrW0E+PjJdPShrW0E+PjJdfDApLShrW0I+PjJdfDApO2RvIGlmKCEoa1t2YT4+Ml18MCkpaWYoKGtbbmErKGtbcGE+PjJdPDwyKT4+Ml18MCk8KGtbbWE+PjJdfDApKXtBPTIrKChtTShtYSxrW25hKyhrW3BhPj4yXTw8Mik+PjJdfDApfDApJjY1NTM1KXwwO2tbQj4+Ml09QTticmVha31lbHNle2tbQj4+Ml09MDticmVha313aGlsZSgwKTtBPUJhKygoa1twYT4+Ml18MCkrMTw8Mil8MDtrW0E+PjJdPShrW0E+PjJdfDApKyhrW0I+PjJdfDApO0E9bmErKGtbcGE+PjJdPDwyKXwwO2tbQT4+Ml09KGtbQT4+Ml18MCkrLTF9d2hpbGUoMSl7aWYoKGtbbmErKGtbcGE+PjJdPDwyKT4+Ml18MCk+PShrW21hPj4yXXwwKSlicmVhaztBPTIrKChtTShtYSxrW25hKyhrW3BhPj4yXTw8Mik+PjJdfDApfDApJjY1NTM1KXwwO2tbQj4+Ml09QTtpZigoKGtbQmErKGtbcGE+PjJdPDwyKT4+Ml18MCkrKGtbQj4+Ml18MCl8MCk+KGtbQ2E+PjJdfDApKWJyZWFrO0E9QmErKGtbcGE+PjJdPDwyKXwwO2tbQT4+Ml09KGtbQT4+Ml18MCkrKGtbQj4+Ml18MCk7QT1uYSsoa1twYT4+Ml08PDIpfDA7a1tBPj4yXT0oa1tBPj4yXXwwKSsxO2RvIGlmKCEoa1t2YT4+Ml18MCkpaWYoKGtbbmErKGtbcGE+PjJdPDwyKT4+Ml18MCk8KGtbbWE+PjJdfDApKXtBPTIrKChtTShtYSxrW25hKyhrW3BhPj4yXTw8Mik+PjJdfDApfDApJjY1NTM1KXwwO2tbQj4+Ml09QTticmVha31lbHNle2tbQj4+Ml09MDticmVha313aGlsZSgwKTtBPUJhKygoa1twYT4+Ml18MCkrMTw8Mil8MDtrW0E+PjJdPShrW0E+PjJdfDApLShrW0I+PjJdfDApfWY9a1twYT4+Ml18MDtpZigoa1tuYSsoa1twYT4+Ml08PDIpPj4yXXwwKTwoa1ttYT4+Ml18MCkpe2lmKChrW3BhPj4yXXwwKT4wKWM9a1tuYSsoKGtbcGE+PjJdfDApLTE8PDIpPj4yXXwwO2Vsc2UgYz0wO2lmKChrW25hKyhmPDwyKT4+Ml18MCk8PShjfDApKXtjPTgxO2JyZWFrfX1lbHNlIGtbSD4+Ml09ZisxO2tbcGE+PjJdPShrW3BhPj4yXXwwKSsxfWlmKChjfDApPT02Mil7Q2E9X2ooNjU1MjQpfDA7a1tBYT4+Ml09Q2E7YnJlYWt9ZWxzZSBpZigoY3wwKT09ODEpe0NhPV9qKDY1NTU3KXwwO2tbQWE+PjJdPUNhO2JyZWFrfWVsc2UgaWYoKGN8MCk9PTgzKXtrW3BhPj4yXT0oa1tIPj4yXXwwKS0xO3doaWxlKDEpe2lmKChrW3BhPj4yXXwwKTw9MClicmVhaztrW1A+PjJdPWtbQmErKGtbcGE+PjJdPDwyKT4+Ml07a1tPPj4yXT1rW0JhKygoa1twYT4+Ml18MCktMTw8Mik+PjJdO2tbTj4+Ml09KGtbbmErKChrW3BhPj4yXXwwKS0xPDwyKT4+Ml18MCktMTtrW0Y+PjJdPShrW04+PjJdfDApKzEtKGtbdmE+PjJdfDApO21NKG1hLGtbRj4+Ml18MCl8MDtkb3ttTShtYSxrW04+PjJdfDApfDA7aWYoa1tQPj4yXXwwKXtpZihrW0M+PjJdfDApYnJlYWs7aWYoKChrW1A+PjJdfDApKyhtWyhrW21hKzEyPj4yXXwwKSsoa1tGPj4yXTw8MSk+PjFdfDApKzJ8MCk+KChrW08+PjJdfDApLSgobVsoa1ttYSsxMj4+Ml18MCkrKGtbTj4+Ml08PDEpPj4xXXwwKSsoKGtbcGE+PjJdfDApPT0oKGtbSD4+Ml18MCktMXwwKT8wOjIpKXwwKSlicmVha31rW1A+PjJdPShrW1A+PjJdfDApKygobVsoa1ttYSsxMj4+Ml18MCkrKGtbRj4+Ml08PDEpPj4xXXwwKSsyKTtrW08+PjJdPShrW08+PjJdfDApLSgobVsoa1ttYSsxMj4+Ml18MCkrKGtbTj4+Ml08PDEpPj4xXXwwKSsyKTtrW25hKygoa1twYT4+Ml18MCktMTw8Mik+PjJdPWtbTj4+Ml07a1tOPj4yXT0oa1tOPj4yXXwwKSstMTtrW0Y+PjJdPShrW0Y+PjJdfDApKy0xfXdoaWxlKChrW04+PjJdfDApPj0wKTtrW0JhKyhrW3BhPj4yXTw8Mik+PjJdPWtbUD4+Ml07a1tCYSsoKGtbcGE+PjJdfDApLTE8PDIpPj4yXT1rW08+PjJdO2lmKChrW3BhPj4yXXwwKT4xKWY9a1tuYSsoKGtbcGE+PjJdfDApLTI8PDIpPj4yXXwwO2Vsc2UgZj0wO2lmKChrW25hKygoa1twYT4+Ml18MCktMTw8Mik+PjJdfDApPD0oZnwwKSl7Yz05MzticmVha31rW3BhPj4yXT0oa1twYT4+Ml18MCkrLTF9aWYoKGN8MCk9PTkzKXtDYT1faig2NTU5OSl8MDtrW0FhPj4yXT1DYTticmVha31rW0w+PjJdPWxba1soa1tsYT4+Ml18MCkrNTY+PjJdPj4wXTtrW3BhPj4yXT0wO3doaWxlKDEpe2lmKChrW3BhPj4yXXwwKT49KGtbSD4+Ml18MCkpYnJlYWs7aWYoKGtbcGE+PjJdfDApPChrW3lhPj4yXXwwKSl7UD1rW2xhKyhrW3BhPj4yXTw8Mik+PjJdfDA7a1trYSsoa1twYT4+Ml08PDIpPj4yXT1QO2tbST4+Ml09UDtrW2xhKyhrW3BhPj4yXTw8Mik+PjJdPTA7UD1RZyhrWyhrW0k+PjJdfDApKzcyPj4yXXwwKXwwO2tbQWE+PjJdPVA7a1t3YT4+Ml09KGtbd2E+PjJdfDApKzE7aWYoa1tBYT4+Ml18MClicmVhayBhfWVsc2V7UD1rSyhrW3phPj4yXXwwLEksTSwoa1tDPj4yXXwwKSE9MD8xOmtbTT4+Ml18MCwwKXwwO2tbQWE+PjJdPVA7aWYoa1tBYT4+Ml18MClicmVhayBhO2xMKGtbST4+Ml18MCxrW0w+PjJdfDApO2tba2ErKGtbcGE+PjJdPDwyKT4+Ml09a1tJPj4yXTtrW3dhPj4yXT0oa1t3YT4+Ml18MCkrMTtrW29hKyhrW3BhPj4yXTw8Mik+PjJdPWtbbWE+PjJdO2lmKChpWyhrW3phPj4yXXwwKSsxNz4+MF18MCkhPTA/KG9LKGtbemE+PjJdfDAsa1soa1tJPj4yXXwwKSs4ND4+Ml18MCw1LGtbKGtbaGE+PjJdfDApKzg0Pj4yXXwwLEFhKSwoa1tBYT4+Ml18MCkhPTApOjApYnJlYWsgYX1rW3BhPj4yXT0oa1twYT4+Ml18MCkrMX1rW3BhPj4yXT0wO2U6d2hpbGUoMSl7aWYoKGtbcGE+PjJdfDApPj0oa1t3YT4+Ml18MCkpYnJlYWs7UD1rWyhrW2thKyhrW3BhPj4yXTw8Mik+PjJdfDApKzg0Pj4yXXwwO2tbUysoa1twYT4+Ml08PDIpPj4yXT1QO2tbRSsoa1twYT4+Ml08PDIpPj4yXT1QO2pbRCsoa1twYT4+Ml08PDEpPj4xXT1qWyhrWyhrW2thKyhrW3BhPj4yXTw8Mik+PjJdfDApKzcyPj4yXXwwKSsyND4+MV18MDtrW1k+PjJdPTA7d2hpbGUoMSl7aWYoKGtbWT4+Ml18MCk+PShrW3BhPj4yXXwwKSlicmVhaztpZigoa1tTKyhrW1k+PjJdPDwyKT4+Ml18MCk9PShrW1MrKGtbcGE+PjJdPDwyKT4+Ml18MCkpe2M9MTA4O2JyZWFrIGV9a1tZPj4yXT0oa1tZPj4yXXwwKSsxfWtbcGE+PjJdPShrW3BhPj4yXXwwKSsxfWlmKChjfDApPT0xMDgpe0NhPV9qKDY1NjczKXwwO2tbQWE+PjJdPUNhO2JyZWFrfWtbcGE+PjJdPTA7d2hpbGUoMSl7aWYoKGtbcGE+PjJdfDApPj0oa1t3YT4+Ml18MCkpYnJlYWs7a1tHPj4yXT0wO2tbWT4+Ml09MTt3aGlsZSgxKXtpZigoa1tZPj4yXXwwKT49KGtbd2E+PjJdfDApKWJyZWFrO2lmKChrW0UrKGtbWT4+Ml08PDIpPj4yXXwwKT4+PjA8KGtbRSsoa1tHPj4yXTw8Mik+PjJdfDApPj4+MClrW0c+PjJdPWtbWT4+Ml07a1tZPj4yXT0oa1tZPj4yXXwwKSsxfWtbTT4+Ml09a1tFKyhrW0c+PjJdPDwyKT4+Ml07a1tFKyhrW0c+PjJdPDwyKT4+Ml09LTE7aWYoKGtbRz4+Ml18MCkhPShrW3BhPj4yXXwwKSl7aWYoKGtbRz4+Ml18MCk+KGtbcGE+PjJdfDApKW5NKGtbKGtba2ErKGtbRz4+Ml08PDIpPj4yXXwwKSs3Mj4+Ml18MCwoa1soa1t6YT4+Ml18MCkrNDQ+PjJdfDApKyhrW0c+PjJdfDApKzF8MCwwKTtuTShrWyhrW2thKyhrW3BhPj4yXTw8Mik+PjJdfDApKzcyPj4yXXwwLGtbTT4+Ml18MCxqW0QrKGtbRz4+Ml08PDEpPj4xXXwwKTtrWyhrW2thKyhrW3BhPj4yXTw8Mik+PjJdfDApKzg0Pj4yXT1rW00+PjJdfWtbcGE+PjJdPShrW3BhPj4yXXwwKSsxfXB0KGtbSz4+Ml18MCxrWyhrW2thKygoa1t3YT4+Ml18MCktMTw8Mik+PjJdfDApKzg0Pj4yXXwwKTtpZigoa1tMPj4yXSY4fDApPT0wPyhrW3lhPj4yXXwwKSE9KGtbd2E+PjJdfDApOjApe2tbSj4+Ml09a1soKGtbd2E+PjJdfDApPihrW3lhPj4yXXwwKT9rYTpsYSkrKChrW3lhPj4yXXwwKS0xPDwyKT4+Ml07UD0oa1soa1trYSsoKGtbd2E+PjJdfDApLTE8PDIpPj4yXXwwKSs1Nj4+Ml18MCkrOHwwO089KGtbKGtbSj4+Ml18MCkrNTY+PjJdfDApKzh8MDtpW1A+PjBdPWlbTz4+MF18MDtpW1ArMT4+MF09aVtPKzE+PjBdfDA7aVtQKzI+PjBdPWlbTysyPj4wXXwwO2lbUCszPj4wXT1pW08rMz4+MF18MH1mOmRvIGlmKGlbKGtbemE+PjJdfDApKzE3Pj4wXXwwKXtrW2FhPj4yXT1rW2thPj4yXTtrW1I+PjJdPWtbKGtbYWE+PjJdfDApKzU2Pj4yXTtrW1Q+PjJdPShtWyhrW2FhPj4yXXwwKSsxOD4+MV18MCkrKGxbKGtbYWE+PjJdfDApKzE+PjBdfDApO2tbZmE+PjJdPWtbKGtbemE+PjJdfDApKzM2Pj4yXTtrW1U+PjJdPTA7a1tWPj4yXT0wO2tbcGE+PjJdPTA7d2hpbGUoMSl7aWYoKGtbcGE+PjJdfDApPj0oa1ttYT4+Ml18MCkpYnJlYWsgZjtrW18+PjJdPWtbKGtbbWErOD4+Ml18MCkrKGtbcGE+PjJdPDwyKT4+Ml07aWYoKGtbcGE+PjJdfDApPT0oa1tUPj4yXXwwKSl7UD0oa1tWPj4yXXwwKSsxfDA7a1tWPj4yXT1QO2Y9a1tWPj4yXXwwO2lmKChQfDApPChrW3dhPj4yXXwwKSlmPWtba2ErKGY8PDIpPj4yXXwwO2Vsc2UgZj1rW2xhKyhmPDwyKT4+Ml18MDtrW2NhPj4yXT1mO2tbVD4+Ml09KGtbVD4+Ml18MCkrKChtWyhrW2NhPj4yXXwwKSsxOD4+MV18MCkrKGxbKGtbY2E+PjJdfDApKzE+PjBdfDApKygoKGtbdmE+PjJdfDApIT0wXjEpJjEpKTtrW1I+PjJdPWtbKGtbY2E+PjJdfDApKzU2Pj4yXX1pZighKChrW3BhPj4yXXwwKT09KGtbbmErKGtbVT4+Ml08PDIpPj4yXXwwKT8oUD0oa1tVPj4yXXwwKSsxfDAsa1tVPj4yXT1QLGtbYWE+PjJdPWtba2ErKFA8PDIpPj4yXSwoa1t2YT4+Ml18MCk9PTApOjApKWM9MTM2O2RvIGlmKChjfDApPT0xMzYpe2M9MDtpZigoKChrW1Y+PjJdfDApPChrW3dhPj4yXXwwKT8oa1soa1thYT4+Ml18MCkrODQ+PjJdfDApPT0oa1tTKyhrW1Y+PjJdPDwyKT4+Ml18MCk6MCk/KGtbXz4+Ml18MCk+Pj4wPj0oa1tSPj4yXXwwKT4+PjA6MCk/KGtbXz4+Ml18MCk+Pj4wPCgoa1tSPj4yXXwwKSsoa1tmYT4+Ml18MCl8MCk+Pj4wOjApYnJlYWs7aWYoIShqW3VhPj4xXXwwKSl7Tz1rW3phPj4yXXwwO1A9cXIoa1tfPj4yXXwwKXwwO29LKE8sUCw1LGtbKGtbYWE+PjJdfDApKzg0Pj4yXXwwLEFhKX1QPShtTShtYSxrW3BhPj4yXXwwKXwwKSY2NTUzNTtpZigoUHwwKT4obVsoa1thYT4+Ml18MCkrMTI+PjFdfDApKXFLKGtbYWE+PjJdfDAsa1tfPj4yXXwwLEFhKTtpZihrW0FhPj4yXXwwKWJyZWFrIGF9d2hpbGUoMCk7a1twYT4+Ml09KGtbcGE+PjJdfDApKzF9fXdoaWxlKDApO2tbcGE+PjJdPTA7d2hpbGUoMSl7aWYoKGtbcGE+PjJdfDApPj0oKGtbd2E+PjJdfDApLTF8MCkpYnJlYWs7a1tiYT4+Ml09a1trYSsoa1twYT4+Ml08PDIpPj4yXTtrW1k+PjJdPWtbbmErKGtbcGE+PjJdPDwyKT4+Ml07a1skPj4yXT1rWyhrW21hKzg+PjJdfDApKyhrW1k+PjJdPDwyKT4+Ml07a1tlYT4+Ml09KG1bKGtbbWErMTI+PjJdfDApKyhrW1k+PjJdPDwxKT4+MV18MCkrKG1bdWE+PjFdfDApO2tbZGE+PjJdPShrW1E+PjJdfDApKyhrW1c+PjJdfDApO2RvIGlmKGlbKGtbYmE+PjJdfDApKzQ+PjBdfDApe2lmKGtbdmE+PjJdfDApe2tbWT4+Ml09KGtbWT4+Ml18MCkrLTE7Y2Nba1soa1tiYT4+Ml18MCkrODA+PjJdJjI1NV0oa1tiYT4+Ml18MCxrWyhrW21hKzg+PjJdfDApKyhrW1k+PjJdPDwyKT4+Ml18MCxYKTtrWyQ+PjJdPWtbZGE+PjJdO2ZhPVg7ZmE9NCsoYUooKGtbJD4+Ml18MCkrNHwwLGtbZmE+PjJdfDAsa1tmYSs0Pj4yXXwwKXwwKXwwO2tbZWE+PjJdPWZhO2tbZGE+PjJdPTA7YnJlYWt9a1skPj4yXT0oa1skPj4yXXwwKSstNDtpZigobVsoa1ttYSsxMj4+Ml18MCkrKGtbWT4+Ml08PDEpPj4xXXwwKT09NCl7ZmE9KGdjW2tbKGtbaGE+PjJdfDApKzc2Pj4yXSYyNTVdKGtbaGE+PjJdfDAsa1skPj4yXXwwKXwwKSY2NTUzNTtrW2VhPj4yXT1mYX19ZWxzZXtmYT0oa1soa1tiYT4+Ml18MCkrNTY+PjJdfDApKzh8MDtjYT1rWyQ+PjJdfDA7aVtmYT4+MF09aVtjYT4+MF18MDtpW2ZhKzE+PjBdPWlbY2ErMT4+MF18MDtpW2ZhKzI+PjBdPWlbY2ErMj4+MF18MDtpW2ZhKzM+PjBdPWlbY2ErMz4+MF18MH13aGlsZSgwKTtrW1c+PjJdPShrW1c+PjJdfDApKyhrW2VhPj4yXXwwKTtoTShrW2hhPj4yXXwwLChrW1o+PjJdfDApKyhrW3BhPj4yXXwwKXwwLGtbJD4+Ml18MCxrW2VhPj4yXXwwLGtbZGE+PjJdfDAsa1soa1tiYT4+Ml18MCkrODQ+PjJdfDAsQWEpO2lmKGtbQWE+PjJdfDApYnJlYWsgYTtrW3BhPj4yXT0oa1twYT4+Ml18MCkrMX1rW3BhPj4yXT0xLShrW3dhPj4yXXwwKTt3aGlsZSgxKXtpZigoa1twYT4+Ml18MCk+PShrW3dhPj4yXXwwKSlicmVhaztmYT1rW3BhPj4yXXwwO2tbc2E+PjJdPShrW3BhPj4yXXwwKTwwPzAtZmF8MDpmYTtkbyBpZighKGlbamErKGtbc2E+PjJdfDApPj4wXXwwKSl7aWYoKGtbcGE+PjJdfDApPDA/KGtbb2ErKChrW3NhPj4yXXwwKS0xPDwyKT4+Ml18MCk8KGtbbmErKChrW3NhPj4yXXwwKS0xPDwyKT4+Ml18MCk6MClicmVhaztpZighKGtbc2E+PjJdfDApKXtrW3JhPj4yXT0wO2tbcWE+PjJdPTA7a1t4YT4+Ml09a1tuYT4+Ml19ZWxzZXtpZigoa1tzYT4+Ml18MCk8KGtbeWE+PjJdfDApKWY9KGtbb2ErKChrW3NhPj4yXXwwKS0xPDwyKT4+Ml18MCkrKCgoa1t2YT4+Ml18MCkhPTBeMSkmMSl8MDtlbHNlIGY9a1ttYT4+Ml18MDtrW3JhPj4yXT1mO2tbcWE+PjJdPShrW25hKygoa1tzYT4+Ml18MCktMTw8Mik+PjJdfDApKygoKGtbdmE+PjJdfDApIT0wXjEpJjEpO2tbeGE+PjJdPShrW25hKyhrW3NhPj4yXTw8Mik+PjJdfDApLShrW3FhPj4yXXwwKX1mYT1vTShrW2thKyhrW3NhPj4yXTw8Mik+PjJdfDAsa1tyYT4+Ml18MCxrW3FhPj4yXXwwLGtbeGE+PjJdfDAsbWEpfDA7a1tBYT4+Ml09ZmE7aWYoa1tBYT4+Ml18MClicmVhayBhO2ZhPWphKyhrW3NhPj4yXXwwKXwwO2lbZmE+PjBdPShpW2ZhPj4wXXwwKSsxPDwyND4+MjQ7alsoa1trYSsoa1tzYT4+Ml08PDIpPj4yXXwwKSsxNj4+MV09KGtbQ2E+PjJdfDApLShrW0JhKyhrW3NhPj4yXTw8Mik+PjJdfDApfXdoaWxlKDApO2tbcGE+PjJdPShrW3BhPj4yXXwwKSsxfWlmKCgoa1tpYT4+Ml18MCkhPTA/KG1bKGtbaGE+PjJdfDApKzE4Pj4xXXwwKT09MDowKT8obFsoa1toYT4+Ml18MCkrNT4+MF18MCk8PShtWyhrW2thPj4yXXwwKSsxNj4+MV18MCk6MCl7Q2E9cE0oa1trYT4+Ml18MCl8MDtrW0FhPj4yXT1DYTtxTShrW2thPj4yXXwwLGtbaGE+PjJdfDAsQWEpO2tMKGtba2E+PjJdfDAsQWEpfWVsc2UgYz0xNzQ7ZzpkbyBpZigoY3wwKT09MTc0PyEoKGpbdWE+PjFdfDApIT0wPzE6KGxbKGtbemE+PjJdfDApKzE3Pj4wXXwwKT09MCk6MCl7a1twYT4+Ml09MDt3aGlsZSgxKXtpZigoa1twYT4+Ml18MCk+PShrW3dhPj4yXXwwKSlicmVhayBnO0NhPXFyKChrWyhrW2thKyhrW3BhPj4yXTw8Mik+PjJdfDApKzU2Pj4yXXwwKSs4fDApfDA7a1t0YT4+Ml09Q2E7b0soa1t6YT4+Ml18MCxrW3RhPj4yXXwwLDUsa1soa1trYSsoa1twYT4+Ml08PDIpPj4yXXwwKSs4ND4+Ml18MCxBYSk7a1twYT4+Ml09KGtbcGE+PjJdfDApKzF9fXdoaWxlKDApO2tbcGE+PjJdPWtbd2E+PjJdO3doaWxlKDEpe2lmKChrW3BhPj4yXXwwKT49KGtbeWE+PjJdfDApKWJyZWFrIGE7a0woa1tsYSsoa1twYT4+Ml08PDIpPj4yXXwwLEFhKTtrW3BhPj4yXT0oa1twYT4+Ml18MCkrMX19fXdoaWxlKDApO1BpKGtbbWErOD4+Ml18MCk7a1twYT4+Ml09MDt3aGlsZSgxKXtpZigoa1twYT4+Ml18MCk+PShrW3lhPj4yXXwwKSlicmVhaztfQihrW2xhKyhrW3BhPj4yXTw8Mik+PjJdfDApO2tbcGE+PjJdPShrW3BhPj4yXXwwKSsxfWtbcGE+PjJdPTA7d2hpbGUoMSl7aWYoKGtbcGE+PjJdfDApPj0oa1t3YT4+Ml18MCkpYnJlYWs7X0Ioa1trYSsoa1twYT4+Ml08PDIpPj4yXXwwKTtrW3BhPj4yXT0oa1twYT4+Ml18MCkrMX1rW2dhPj4yXT1rW0FhPj4yXTtDYT1rW2dhPj4yXXwwO3I9RGE7cmV0dXJuIENhfDB9ZnVuY3Rpb24gbU0oYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wO2Y9cjtyPXIrMTZ8MDtjPWYrOHwwO2Q9Zis0fDA7ZT1mO2tbZD4+Ml09YTtrW2U+PjJdPWI7aWYoalsoa1soa1tkPj4yXXwwKSsxMj4+Ml18MCkrKGtbZT4+Ml08PDEpPj4xXXwwKXtqW2M+PjFdPWpbKGtbKGtbZD4+Ml18MCkrMTI+PjJdfDApKyhrW2U+PjJdPDwxKT4+MV18MDthPWpbYz4+MV18MDtyPWY7cmV0dXJuIGF8MH1lbHNle2E9eU0oa1tkPj4yXXwwLGtbZT4+Ml18MCl8MDtqW2M+PjFdPWE7YT1qW2M+PjFdfDA7cj1mO3JldHVybiBhfDB9cmV0dXJuIDB9ZnVuY3Rpb24gbk0oYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTA7ZD1yO3I9cisxNnwwO2Y9ZCs0fDA7ZT1kO2c9ZCs4fDA7a1tmPj4yXT1hO2tbZT4+Ml09YjtqW2c+PjFdPWM7alsoa1tmPj4yXXwwKSsyND4+MV09altnPj4xXXwwO3JLKGtbZj4+Ml18MCxrW2U+PjJdfDApO3I9ZDtyZXR1cm59ZnVuY3Rpb24gb00oYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsbj0wLG89MCxwPTAscT0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wO0Q9cjtyPXIrODB8MDtuPUQrNjh8MDtvPUQrNjR8MDtwPUQrNjB8MDtxPUQrNTZ8MDtzPUQrNTJ8MDt0PUQrNDh8MDt1PUQrNDR8MDt2PUQrNDB8MDtBPUQrMzZ8MDt6PUQrMzJ8MDtDPUQrMjh8MDtCPUQrMjR8MDt3PUQrMjB8MDtnPUQrMTZ8MDtmPUQrMTJ8MDtoPUQrOHwwO3k9RCs0fDA7eD1EO2tbbz4+Ml09YTtrW3A+PjJdPWI7a1txPj4yXT1jO2tbcz4+Ml09ZDtrW3Q+PjJdPWU7a1t1Pj4yXT1rWyhrW28+PjJdfDApKzU2Pj4yXTtrW3Y+PjJdPWxbKGtbbz4+Ml18MCkrNT4+MF07a1tBPj4yXT0oa1soa1tvPj4yXXwwKSs2ND4+Ml18MCkrKGtbcz4+Ml08PDEpO2tbej4+Ml09bVsoa1tvPj4yXXwwKSsxOD4+MV07a1tnPj4yXT0oa1twPj4yXXwwKSsobVsoa1tvPj4yXXwwKSsxOD4+MV18MCkrKGxbKGtbbz4+Ml18MCkrMT4+MF18MCk7a1tmPj4yXT0oa1txPj4yXXwwKSsoa1tzPj4yXXwwKTtpZigoa1twPj4yXXwwKTwoa1txPj4yXXwwKSl7YT1zTShrW28+PjJdfDAsa1twPj4yXXwwLChrW3E+PjJdfDApLShrW3A+PjJdfDApfDAsa1t0Pj4yXXwwKXwwO2tbaD4+Ml09YTtjUyhrWyhrW28+PjJdfDApKzY0Pj4yXXwwLChrWyhrW28+PjJdfDApKzY0Pj4yXXwwKSsoa1toPj4yXTw8MSl8MCxrW3o+PjJdPDwxfDApfDA7a1t6Pj4yXT0oa1t6Pj4yXXwwKS0oa1toPj4yXXwwKX1pZigoa1tmPj4yXXwwKTwoa1tnPj4yXXwwKSl7YT1zTShrW28+PjJdfDAsa1tmPj4yXXwwLChrW2c+PjJdfDApLShrW2Y+PjJdfDApfDAsa1t0Pj4yXXwwKXwwO2tbej4+Ml09KGtbej4+Ml18MCktYX1rW0M+PjJdPShrW3U+PjJdfDApKygoKChsWyhrW3U+PjJdfDApKygoa1t2Pj4yXXwwKSs1KT4+MF18MCk8PDh8KGxbKGtbdT4+Ml18MCkrKChrW3Y+PjJdfDApKzUpKzE+PjBdfDApKS0xJjY1NTM1KSsxKTthOmRvIGlmKChrW0M+PjJdfDApPj4+MD49KGtbQT4+Ml18MCk+Pj4wKXtpZigoa1txPj4yXXwwKTwoa1twPj4yXXwwKSl7aWYoKGtbcz4+Ml18MCk8KChrW3A+PjJdfDApLShrW3E+PjJdfDApfDApKWM9a1tzPj4yXXwwO2Vsc2UgYz0oa1twPj4yXXwwKS0oa1txPj4yXXwwKXwwO2tbeT4+Ml09YztrW0I+PjJdPWtbKGtbbz4+Ml18MCkrNjQ+PjJdO2NTKChrW0I+PjJdfDApKyhrW3k+PjJdPDwxKXwwLGtbQj4+Ml18MCxrW3o+PjJdPDwxfDApfDA7aWYodE0oa1tvPj4yXXwwLGtbQT4+Ml18MCxDLGtbQj4+Ml18MCxrW3E+PjJdfDAsa1t5Pj4yXXwwLGtbdD4+Ml18MCl8MClicmVhaztrW3o+PjJdPShrW3o+PjJdfDApKyhrW3k+PjJdfDApfWtbdz4+Ml09MDt3aGlsZSgxKXtpZigoa1t3Pj4yXXwwKT49KGxbKGtbbz4+Ml18MCkrMT4+MF18MHwwKSlicmVhaztrW3g+PjJdPShrW3A+PjJdfDApKyhtWyhrW28+PjJdfDApKzIyKyhrW3c+PjJdPDwxKT4+MV18MCktKGtbcT4+Ml18MCk7aWYoKChrW3g+PjJdfDApPj0wPyhrW3g+PjJdfDApPChrW3M+PjJdfDApOjApPyhrW0I+PjJdPShrWyhrW28+PjJdfDApKzY0Pj4yXXwwKSsoa1t4Pj4yXTw8MSksY1MoKGtbQj4+Ml18MCkrMnwwLGtbQj4+Ml18MCwoa1t6Pj4yXXwwKS0oa1t4Pj4yXXwwKTw8MXwwKXwwLGtbej4+Ml09KGtbej4+Ml18MCkrMSwodE0oa1tvPj4yXXwwLGtbQT4+Ml18MCxDLGtbQj4+Ml18MCwoa1t4Pj4yXXwwKSsoa1txPj4yXXwwKXwwLDEsa1t0Pj4yXXwwKXwwKSE9MCk6MClicmVhayBhO2tbdz4+Ml09KGtbdz4+Ml18MCkrMX1rW0I+PjJdPShrWyhrW28+PjJdfDApKzY0Pj4yXXwwKSsoa1t6Pj4yXTw8MSk7aWYoISh0TShrW28+PjJdfDAsa1tBPj4yXXwwLEMsa1tCPj4yXXwwLChrW3E+PjJdfDApKyhrW3o+PjJdfDApfDAsKGtbcz4+Ml18MCktKGtbej4+Ml18MCl8MCxrW3Q+PjJdfDApfDApKXtqWyhrW28+PjJdfDApKzE4Pj4xXT1rW3M+PjJdO2lbKGtbbz4+Ml18MCkrMT4+MF09MDtpWyhrW3U+PjJdfDApKygoa1t2Pj4yXXwwKSszKT4+MF09KG1bKGtbbz4+Ml18MCkrMTg+PjFdfDApPj44O2lbKGtbdT4+Ml18MCkrKChrW3Y+PjJdfDApKzMpKzE+PjBdPWpbKGtbbz4+Ml18MCkrMTg+PjFdO2lbKGtbdT4+Ml18MCkrKChrW3Y+PjJdfDApKzUpPj4wXT0oa1tDPj4yXXwwKS0oa1t1Pj4yXXwwKT4+ODtpWyhrW3U+PjJdfDApKygoa1t2Pj4yXXwwKSs1KSsxPj4wXT0oa1tDPj4yXXwwKS0oa1t1Pj4yXXwwKTtrW24+PjJdPTA7Qz1rW24+PjJdfDA7cj1EO3JldHVybiBDfDB9fXdoaWxlKDApO3VNKGtbdD4+Ml18MCxrW3E+PjJdfDAsa1tzPj4yXXwwKTtDPXZNKGtbbz4+Ml18MCxrW3M+PjJdfDAsKGtbKGtbdD4+Ml18MCkrOD4+Ml18MCkrKGtbcT4+Ml08PDIpfDAsKGtbKGtbdD4+Ml18MCkrMTI+PjJdfDApKyhrW3E+PjJdPDwxKXwwKXwwO2tbbj4+Ml09QztDPWtbbj4+Ml18MDtyPUQ7cmV0dXJuIEN8MH1mdW5jdGlvbiBwTShhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxuPTAsbz0wLHA9MCxxPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wO3k9cjtyPXIrODB8MDtiPXkrNjR8MDtjPXkrNjB8MDtoPXkrNTZ8MDtxPXkrNTJ8MDtnPXkrNDh8MDtzPXkrNDR8MDt2PXkrNDB8MDtlPXkrMzZ8MDtkPXkrMzJ8MDtvPXkrMjh8MDtmPXkrMjR8MDt1PXkrMjB8MDt0PXkrMTZ8MDtqPXkrMTJ8MDtuPXkrOHwwO3A9eSs0fDA7dz15O2tbYz4+Ml09YTtrW3U+PjJdPTA7YT1rWyhrW2M+PjJdfDApKzU2Pj4yXXwwO2tbZj4+Ml09YTtrW3Q+PjJdPWE7a1tnPj4yXT1sWyhrW2M+PjJdfDApKzU+PjBdO2tbZT4+Ml09bVsoa1tjPj4yXXwwKSsxND4+MV07a1tvPj4yXT1tWyhrW2M+PjJdfDApKzE4Pj4xXTtrW3Y+PjJdPWtbKGtbKGtbYz4+Ml18MCkrNTI+PjJdfDApKzM2Pj4yXTtrW2Q+PjJdPWtbdj4+Ml07a1tqPj4yXT0oa1tlPj4yXXwwKSsoa1tvPj4yXTw8MSk7a1tuPj4yXT0oa1t2Pj4yXXwwKS00O2tbaD4+Ml09MDt3aGlsZSgxKXtpZigoa1toPj4yXXwwKT49KGtbbz4+Ml18MCkpe3g9MTQ7YnJlYWt9a1twPj4yXT0oa1tmPj4yXXwwKSsoKGtbZT4+Ml18MCkrKGtbaD4+Ml08PDEpKTtrW3E+PjJdPShsW2tbcD4+Ml0+PjBdfDApPDw4fChsWyhrW3A+PjJdfDApKzE+PjBdfDApO2lmKChrW3E+PjJdfDApPChrW2o+PjJdfDApKXt4PTU7YnJlYWt9aWYoKGtbcT4+Ml18MCk+KGtbbj4+Ml18MCkpe3g9NTticmVha31hPShnY1trWyhrW2M+PjJdfDApKzc2Pj4yXSYyNTVdKGtbYz4+Ml18MCwoa1t0Pj4yXXwwKSsoa1txPj4yXXwwKXwwKXwwKSY2NTUzNTtrW3M+PjJdPWE7a1tkPj4yXT0oa1tkPj4yXXwwKS0oa1tzPj4yXXwwKTtpZigoa1tkPj4yXXwwKTwoa1tqPj4yXXwwKSl7eD04O2JyZWFrfWlmKCgoa1txPj4yXXwwKSsoa1tzPj4yXXwwKXwwKT4oa1t2Pj4yXXwwKSl7eD04O2JyZWFrfWlba1twPj4yXT4+MF09a1tkPj4yXT4+ODtpWyhrW3A+PjJdfDApKzE+PjBdPWtbZD4+Ml07aWYoIShrW3U+PjJdfDApKXtpZigoa1tkPj4yXXwwKSE9KGtbcT4+Ml18MCkpe3g9ck0oa1trWyhrW2M+PjJdfDApKzUyPj4yXT4+Ml18MCl8MDtrW3U+PjJdPXg7a1t3Pj4yXT0obFsoa1tmPj4yXXwwKSsoKGtbZz4+Ml18MCkrNSk+PjBdfDApPDw4fChsWyhrW2Y+PjJdfDApKygoa1tnPj4yXXwwKSs1KSsxPj4wXXwwKTtiUygoa1t1Pj4yXXwwKSsoa1t3Pj4yXXwwKXwwLChrW2Y+PjJdfDApKyhrW3c+PjJdfDApfDAsKGtbZD4+Ml18MCkrKGtbcz4+Ml18MCktKGtbdz4+Ml18MCl8MCl8MDtrW3Q+PjJdPWtbdT4+Ml07eD0xMn19ZWxzZSB4PTEyO2lmKCh4fDApPT0xMil7eD0wO2JTKChrW2Y+PjJdfDApKyhrW2Q+PjJdfDApfDAsKGtbdD4+Ml18MCkrKGtbcT4+Ml18MCl8MCxrW3M+PjJdfDApfDB9a1toPj4yXT0oa1toPj4yXXwwKSsxfWlmKCh4fDApPT01KXt4PV9qKDU5NjE3KXwwO2tbYj4+Ml09eDt4PWtbYj4+Ml18MDtyPXk7cmV0dXJuIHh8MH1lbHNlIGlmKCh4fDApPT04KXt4PV9qKDU5NjIzKXwwO2tbYj4+Ml09eDt4PWtbYj4+Ml18MDtyPXk7cmV0dXJuIHh8MH1lbHNlIGlmKCh4fDApPT0xNCl7aVsoa1tmPj4yXXwwKSsoKGtbZz4+Ml18MCkrNSk+PjBdPWtbZD4+Ml0+Pjg7aVsoa1tmPj4yXXwwKSsoKGtbZz4+Ml18MCkrNSkrMT4+MF09a1tkPj4yXTtpWyhrW2Y+PjJdfDApKygoa1tnPj4yXXwwKSsxKT4+MF09MDtpWyhrW2Y+PjJdfDApKygoa1tnPj4yXXwwKSsyKT4+MF09MDtpWyhrW2Y+PjJdfDApKygoa1tnPj4yXXwwKSs3KT4+MF09MDtkUygoa1tmPj4yXXwwKSsoa1tqPj4yXXwwKXwwLDAsKGtbZD4+Ml18MCktKGtbaj4+Ml18MCl8MCl8MDtpZigoKGtbZD4+Ml18MCktKGtbaj4+Ml18MCl8MCkhPShtWyhrW2M+PjJdfDApKzE2Pj4xXXwwfDApKXt4PV9qKDU5NjQ3KXwwO2tbYj4+Ml09eDt4PWtbYj4+Ml18MDtyPXk7cmV0dXJuIHh8MH1lbHNle2tbYj4+Ml09MDt4PWtbYj4+Ml18MDtyPXk7cmV0dXJuIHh8MH19cmV0dXJuIDB9ZnVuY3Rpb24gcU0oYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxuPTAsbz0wLHA9MCxxPTAscz0wO3M9cjtyPXIrNDh8MDtkPXMrMzZ8MDtlPXMrMzJ8MDtmPXMrMjh8MDtwPXMrMjR8MDtnPXMrMjB8MDtoPXMrMTZ8MDtuPXMrMTJ8MDtvPXMrOHwwO3E9cys0fDA7aj1zO2tbZD4+Ml09YTtrW2U+PjJdPWI7a1tmPj4yXT1jO2lmKGtba1tmPj4yXT4+Ml18MCl7cj1zO3JldHVybn1rW3A+PjJdPWtbKGtbZD4+Ml18MCkrNTI+PjJdO2tbZz4+Ml09a1soa1tkPj4yXXwwKSs1Nj4+Ml07a1toPj4yXT1rWyhrW2U+PjJdfDApKzU2Pj4yXTtrW24+PjJdPWxbKGtbZD4+Ml18MCkrNT4+MF07a1tvPj4yXT0oa1soa1tlPj4yXXwwKSs4ND4+Ml18MCk9PTE/MTAwOjA7a1tqPj4yXT1sWyhrW2c+PjJdfDApKygoa1tuPj4yXXwwKSs1KT4+MF08PDh8bFsoa1tnPj4yXXwwKSsoKGtbbj4+Ml18MCkrNSkrMT4+MF07YlMoKGtbaD4+Ml18MCkrKGtbaj4+Ml18MCl8MCwoa1tnPj4yXXwwKSsoa1tqPj4yXXwwKXwwLChrWyhrW3A+PjJdfDApKzM2Pj4yXXwwKS0oa1tqPj4yXXwwKXwwKXwwO2JTKChrW2g+PjJdfDApKyhrW28+PjJdfDApfDAsKGtbZz4+Ml18MCkrKGtbbj4+Ml18MCl8MCwobVsoa1tkPj4yXXwwKSsxND4+MV18MCkrKG1bKGtbZD4+Ml18MCkrMTg+PjFdPDwxKXwwKXwwO2lba1tlPj4yXT4+MF09MDtiPWV1KGtbZT4+Ml18MCl8MDtrW3E+PjJdPWI7aWYoa1txPj4yXXwwKXtrW2tbZj4+Ml0+PjJdPWtbcT4+Ml07cj1zO3JldHVybn1pZighKGlbKGtbcD4+Ml18MCkrMTc+PjBdfDApKXtyPXM7cmV0dXJufXE9bksoa1tlPj4yXXwwKXwwO2tba1tmPj4yXT4+Ml09cTtyPXM7cmV0dXJufWZ1bmN0aW9uIHJNKGEpe2E9YXwwO3ZhciBiPTAsYz0wO2M9cjtyPXIrMTZ8MDtiPWM7a1tiPj4yXT1hO3I9YztyZXR1cm4ga1soa1tiPj4yXXwwKSsyMDg+PjJdfDB9ZnVuY3Rpb24gc00oYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxpPTAsaj0wLG49MCxvPTAscD0wLHE9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTA7dz1yO3I9cis2NHwwO2U9dys1NnwwO2Y9dys1MnwwO3g9dys0OHwwO3k9dys0NHwwO2c9dys0MHwwO2g9dyszNnwwO3A9dyszMnwwO3M9dysyOHwwO249dysyNHwwO2k9dysyMHwwO2o9dysxNnwwO3E9dysxMnwwO3U9dys4fDA7bz13KzR8MDt0PXc7a1tmPj4yXT1hO2tbeD4+Ml09YjtrW3k+PjJdPWM7a1tnPj4yXT1kO2tbaD4+Ml09a1soa1tmPj4yXXwwKSs1Nj4+Ml07a1twPj4yXT0oa1toPj4yXXwwKSsoa1soa1soa1tmPj4yXXwwKSs1Mj4+Ml18MCkrMzY+PjJdfDApO2tbcz4+Ml09KGtbaD4+Ml18MCkrKChsWyhrW2Y+PjJdfDApKzU+PjBdfDApKzgrKGxbKGtbZj4+Ml18MCkrNj4+MF18MCkpO2tbbj4+Ml09MDtrW2o+PjJdPShrW3g+PjJdfDApKyhrW3k+PjJdfDApO2tbcT4+Ml09MDtrW3U+PjJdPTA7a1tpPj4yXT1rW3g+PjJdO3doaWxlKDEpe2lmKChrW2k+PjJdfDApPj0oa1tqPj4yXXwwKSlicmVhaztrW28+PjJdPWtbKGtbKGtbZz4+Ml18MCkrOD4+Ml18MCkrKGtbaT4+Ml08PDIpPj4yXTtpZigoa1tvPj4yXXwwKT4+PjA+PShrW3M+PjJdfDApPj4+MD8oa1tvPj4yXXwwKT4+PjA8KGtbcD4+Ml18MCk+Pj4wOjApe2tbdD4+Ml09bVsoa1soa1tnPj4yXXwwKSsxMj4+Ml18MCkrKGtbaT4+Ml08PDEpPj4xXTtpZigoa1txPj4yXXwwKSE9KChrW28+PjJdfDApKyhrW3Q+PjJdfDApfDApKXtpZihrW3E+PjJdfDApeE0oa1tmPj4yXXwwLChrW3E+PjJdfDApLShrW2g+PjJdfDApJjY1NTM1LGtbdT4+Ml0mNjU1MzUpfDA7a1txPj4yXT1rW28+PjJdO2tbdT4+Ml09a1t0Pj4yXTtpZigoKGtbcT4+Ml18MCkrKGtbdD4+Ml18MCl8MCk+Pj4wPihrW3A+PjJdfDApPj4+MCl7dj05O2JyZWFrfX1lbHNle2tbcT4+Ml09a1tvPj4yXTtrW3U+PjJdPShrW3U+PjJdfDApKyhrW3Q+PjJdfDApfWtbbj4+Ml09KGtbbj4+Ml18MCkrMX1rW2k+PjJdPShrW2k+PjJdfDApKzF9aWYoKHZ8MCk9PTkpe2tbZT4+Ml09MDt5PWtbZT4+Ml18MDtyPXc7cmV0dXJuIHl8MH1pZihrW3E+PjJdfDApeE0oa1tmPj4yXXwwLChrW3E+PjJdfDApLShrW2g+PjJdfDApJjY1NTM1LGtbdT4+Ml0mNjU1MzUpfDA7a1tlPj4yXT1rW24+PjJdO3k9a1tlPj4yXXwwO3I9dztyZXR1cm4geXwwfWZ1bmN0aW9uIHRNKGEsYixjLGQsZSxmLGcpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO3ZhciBoPTAsaj0wLG09MCxuPTAsbz0wLHA9MCxxPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTA7eT1yO3I9cis2NHwwO2g9eSs1NnwwO2o9eSs1MnwwO209eSs0OHwwO249eSs0NHwwO289eSs0MHwwO3o9eSszNnwwO0E9eSszMnwwO3A9eSsyOHwwO3M9eSsyNHwwO3E9eSsyMHwwO3U9eSsxNnwwO3Q9eSsxMnwwO3g9eSs4fDA7dz15KzR8MDt2PXk7a1tqPj4yXT1hO2tbbT4+Ml09YjtrW24+PjJdPWM7a1tvPj4yXT1kO2tbej4+Ml09ZTtrW0E+PjJdPWY7a1twPj4yXT1nO2tbcT4+Ml09a1soa1tqPj4yXXwwKSs1Nj4+Ml07a1t1Pj4yXT1rW2tbbj4+Ml0+PjJdO2tbdD4+Ml09KGtbej4+Ml18MCkrKGtbQT4+Ml18MCk7a1tzPj4yXT1rW3o+PjJdO3doaWxlKDEpe2lmKChrW3M+PjJdfDApPj0oa1t0Pj4yXXwwKSl7ZT0xMDticmVha31BPShtTShrW3A+PjJdfDAsa1tzPj4yXXwwKXwwKSY2NTUzNTtrW3g+PjJdPUE7aWYoKGxbKGtbcT4+Ml18MCkrMT4+MF18MHwwKT09MD8obFsoa1txPj4yXXwwKSsyPj4wXXwwfDApPT0wOjApZT02O2Vsc2UgZT01O2lmKChlfDApPT01PyhlPTAsQT13TShrW2o+PjJdfDAsa1t4Pj4yXXwwLHcpfDAsa1t2Pj4yXT1BLChBfDApPT0wKTowKWU9NjtpZigoZXwwKT09Nil7aWYoKChrW3U+PjJdfDApLShrW20+PjJdfDApfDApPChrW3g+PjJdfDApKXtlPTc7YnJlYWt9a1t1Pj4yXT0oa1t1Pj4yXXwwKSsoMC0oa1t4Pj4yXXwwKSk7a1t2Pj4yXT1rW3U+PjJdfWNTKGtbdj4+Ml18MCxrWyhrWyhrW3A+PjJdfDApKzg+PjJdfDApKyhrW3M+PjJdPDwyKT4+Ml18MCxrW3g+PjJdfDApfDA7aVtrW28+PjJdPj4wXT0oa1t2Pj4yXXwwKS0oa1txPj4yXXwwKT4+ODtpWyhrW28+PjJdfDApKzE+PjBdPShrW3Y+PjJdfDApLShrW3E+PjJdfDApO2tbbz4+Ml09KGtbbz4+Ml18MCkrMjtrW3M+PjJdPShrW3M+PjJdfDApKzF9aWYoKGV8MCk9PTcpe2tbaD4+Ml09MTtBPWtbaD4+Ml18MDtyPXk7cmV0dXJuIEF8MH1lbHNlIGlmKChlfDApPT0xMCl7a1trW24+PjJdPj4yXT1rW3U+PjJdO2tbaD4+Ml09MDtBPWtbaD4+Ml18MDtyPXk7cmV0dXJuIEF8MH1yZXR1cm4gMH1mdW5jdGlvbiB1TShhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MDtnPXI7cj1yKzE2fDA7ZD1nKzh8MDtlPWcrNHwwO2Y9ZztrW2Q+PjJdPWE7a1tlPj4yXT1iO2tbZj4+Ml09Yzt3aGlsZSgxKXtpZigoa1tmPj4yXXwwKTw9MClicmVhaztpZighKG1bKGtbKGtbZD4+Ml18MCkrMTI+PjJdfDApKyhrW2U+PjJdPDwxKT4+MV18MCkpe2E9Z2Nba1soa1soa1tkPj4yXXwwKSs0Pj4yXXwwKSs3Nj4+Ml0mMjU1XShrWyhrW2Q+PjJdfDApKzQ+PjJdfDAsa1soa1soa1tkPj4yXXwwKSs4Pj4yXXwwKSsoa1tlPj4yXTw8Mik+PjJdfDApfDA7alsoa1soa1tkPj4yXXwwKSsxMj4+Ml18MCkrKGtbZT4+Ml08PDEpPj4xXT1hfWtbZT4+Ml09KGtbZT4+Ml18MCkrMTtrW2Y+PjJdPShrW2Y+PjJdfDApKy0xfXI9ZztyZXR1cm59ZnVuY3Rpb24gdk0oYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxuPTAsbz0wLHA9MCxxPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wO3g9cjtyPXIrNjR8MDtxPXgrNTJ8MDtzPXgrNDh8MDt0PXgrNDR8MDtlPXgrNDB8MDtmPXgrMzZ8MDt2PXgrMzJ8MDt1PXgrMjh8MDt5PXgrMjR8MDtvPXgrMjB8MDtnPXgrMTZ8MDtuPXgrMTJ8MDtwPXgrOHwwO3c9eCs0fDA7aD14O2tbcz4+Ml09YTtrW3Q+PjJdPWI7a1tlPj4yXT1jO2tbZj4+Ml09ZDtrW3Y+PjJdPWxbKGtbcz4+Ml18MCkrNT4+MF07a1t1Pj4yXT1rWyhrW3M+PjJdfDApKzU2Pj4yXTtrW3k+PjJdPWtbKGtbKGtbcz4+Ml18MCkrNTI+PjJdfDApKzM2Pj4yXTtrW28+PjJdPShrW3U+PjJdfDApKyhrW3k+PjJdfDApO2tbbj4+Ml09a1soa1tzPj4yXXwwKSs2ND4+Ml07ZD1yTShrW2tbKGtbcz4+Ml18MCkrNTI+PjJdPj4yXXwwKXwwO2tbcD4+Ml09ZDtrW2c+PjJdPShsWyhrW3U+PjJdfDApKygoa1t2Pj4yXXwwKSs1KT4+MF18MCk8PDh8KGxbKGtbdT4+Ml18MCkrKChrW3Y+PjJdfDApKzUpKzE+PjBdfDApO2JTKChrW3A+PjJdfDApKyhrW2c+PjJdfDApfDAsKGtbdT4+Ml18MCkrKGtbZz4+Ml18MCl8MCwoa1t5Pj4yXXwwKS0oa1tnPj4yXXwwKXwwKXwwO2tbdz4+Ml09a1tvPj4yXTtrW2c+PjJdPTA7d2hpbGUoMSl7aWYoKGtbZz4+Ml18MCk+PShrW3Q+PjJdfDApKXtlPTk7YnJlYWt9a1toPj4yXT1rWyhrW2U+PjJdfDApKyhrW2c+PjJdPDwyKT4+Ml07aWYoKGtbaD4+Ml18MCk+Pj4wPj0oa1t1Pj4yXXwwKT4+PjA/KGtbaD4+Ml18MCk+Pj4wPChrW28+PjJdfDApPj4+MDowKWtbaD4+Ml09KGtbcD4+Ml18MCkrKChrW2g+PjJdfDApLShrW3U+PjJdfDApKTtrW3c+PjJdPShrW3c+PjJdfDApKygwLShtWyhrW2Y+PjJdfDApKyhrW2c+PjJdPDwxKT4+MV18MCkpO2lba1tuPj4yXT4+MF09KGtbdz4+Ml18MCktKGtbdT4+Ml18MCk+Pjg7aVsoa1tuPj4yXXwwKSsxPj4wXT0oa1t3Pj4yXXwwKS0oa1t1Pj4yXXwwKTtrW24+PjJdPShrW24+PjJdfDApKzI7aWYoKGtbdz4+Ml18MCk+Pj4wPChrW24+PjJdfDApPj4+MCl7ZT03O2JyZWFrfWJTKGtbdz4+Ml18MCxrW2g+PjJdfDAsbVsoa1tmPj4yXXwwKSsoa1tnPj4yXTw8MSk+PjFdfDB8MCl8MDtrW2c+PjJdPShrW2c+PjJdfDApKzF9aWYoKGV8MCk9PTcpe3k9X2ooNjQ3MTYpfDA7a1txPj4yXT15O3k9a1txPj4yXXwwO3I9eDtyZXR1cm4geXwwfWVsc2UgaWYoKGV8MCk9PTkpe2pbKGtbcz4+Ml18MCkrMTg+PjFdPWtbdD4+Ml07aVsoa1tzPj4yXXwwKSsxPj4wXT0wO2lbKGtbdT4+Ml18MCkrKChrW3Y+PjJdfDApKzEpPj4wXT0wO2lbKGtbdT4+Ml18MCkrKChrW3Y+PjJdfDApKzEpKzE+PjBdPTA7aVsoa1t1Pj4yXXwwKSsoKGtbdj4+Ml18MCkrMyk+PjBdPShtWyhrW3M+PjJdfDApKzE4Pj4xXXwwKT4+ODtpWyhrW3U+PjJdfDApKygoa1t2Pj4yXXwwKSszKSsxPj4wXT1qWyhrW3M+PjJdfDApKzE4Pj4xXTtpWyhrW3U+PjJdfDApKygoa1t2Pj4yXXwwKSs1KT4+MF09KGtbdz4+Ml18MCktKGtbdT4+Ml18MCk+Pjg7aVsoa1t1Pj4yXXwwKSsoKGtbdj4+Ml18MCkrNSkrMT4+MF09KGtbdz4+Ml18MCktKGtbdT4+Ml18MCk7aVsoa1t1Pj4yXXwwKSsoKGtbdj4+Ml18MCkrNyk+PjBdPTA7a1txPj4yXT0wO3k9a1txPj4yXXwwO3I9eDtyZXR1cm4geXwwfXJldHVybiAwfWZ1bmN0aW9uIHdNKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsbj0wLG89MCxwPTAscT0wLHM9MCx0PTA7dD1yO3I9cis0OHwwO2U9dCs0MHwwO2Y9dCszNnwwO2Q9dCszMnwwO2c9dCsyOHwwO2o9dCsyNHwwO2g9dCsyMHwwO249dCsxNnwwO289dCsxMnwwO3M9dCs4fDA7cT10KzR8MDtwPXQ7a1tmPj4yXT1hO2tbZD4+Ml09YjtrW2c+PjJdPWM7a1tqPj4yXT1sWyhrW2Y+PjJdfDApKzU+PjBdO2tbaD4+Ml09a1soa1tmPj4yXXwwKSs1Nj4+Ml07a1tuPj4yXT0oa1tqPj4yXXwwKSsxO2tbbz4+Ml09KGxbKGtbaD4+Ml18MCkrKGtbbj4+Ml18MCk+PjBdfDApPDw4fChsWyhrW2g+PjJdfDApKyhrW24+PjJdfDApKzE+PjBdfDApO2tbcT4+Ml09a1soa1soa1tmPj4yXXwwKSs1Mj4+Ml18MCkrMzY+PjJdO3doaWxlKDEpe2lmKChrW28+PjJdfDApPigoa1txPj4yXXwwKS00fDApKXtiPTQ7YnJlYWt9aWYoKGtbbz4+Ml18MCk8KChrW24+PjJdfDApKzR8MCkpe2I9NDticmVha31rW3A+PjJdPShsWyhrW2g+PjJdfDApKygoa1tvPj4yXXwwKSsyKT4+MF18MCk8PDh8KGxbKGtbaD4+Ml18MCkrKChrW28+PjJdfDApKzIpKzE+PjBdfDApO2M9KGtbcD4+Ml18MCktKGtbZD4+Ml18MCl8MDtrW3M+PjJdPWM7YT1rW28+PjJdfDA7aWYoKGN8MCk+PTApe2I9NjticmVha31rW24+PjJdPWE7a1tvPj4yXT0obFsoa1toPj4yXXwwKSsoa1tvPj4yXXwwKT4+MF18MCk8PDh8KGxbKGtbaD4+Ml18MCkrKGtbbz4+Ml18MCkrMT4+MF18MCk7aWYoIShrW28+PjJdfDApKXtiPTE2O2JyZWFrfX1pZigoYnwwKT09NCl7cz1faig1OTY4MCl8MDtrW2tbZz4+Ml0+PjJdPXM7a1tlPj4yXT0wO3M9a1tlPj4yXXwwO3I9dDtyZXR1cm4gc3wwfWVsc2UgaWYoKGJ8MCk9PTYpe2lmKChhfDApPj0oKG1bKGtbZj4+Ml18MCkrMTQ+PjFdfDApKygobVsoa1tmPj4yXXwwKSsxOD4+MV18MCk8PDEpfDApPygoa1twPj4yXXwwKSsoa1tvPj4yXXwwKXwwKTw9KGtbcT4+Ml18MCk6MCl7ZG8gaWYoKGtbcz4+Ml18MCk8NCl7aWYoKGxbKGtbaD4+Ml18MCkrKChrW2o+PjJdfDApKzcpPj4wXXwwfDApPD01Nyl7cT0oa1toPj4yXXwwKSsoa1tuPj4yXXwwKXwwO3A9KGtbaD4+Ml18MCkrKGtbbz4+Ml18MCl8MDtpW3E+PjBdPWlbcD4+MF18MDtpW3ErMT4+MF09aVtwKzE+PjBdfDA7cT0oa1toPj4yXXwwKSsoKGtbaj4+Ml18MCkrNyl8MDtpW3E+PjBdPShsW3E+PjBdfDApKyhrW3M+PjJdJjI1NSk7YnJlYWt9a1tlPj4yXT0wO3M9a1tlPj4yXXwwO3I9dDtyZXR1cm4gc3wwfWVsc2V7aVsoa1toPj4yXXwwKSsoKGtbbz4+Ml18MCkrMik+PjBdPWtbcz4+Ml0+Pjg7aVsoa1toPj4yXXwwKSsoKGtbbz4+Ml18MCkrMikrMT4+MF09a1tzPj4yXX13aGlsZSgwKTtrW2U+PjJdPShrW2g+PjJdfDApKygoa1tvPj4yXXwwKSsoa1tzPj4yXXwwKSk7cz1rW2U+PjJdfDA7cj10O3JldHVybiBzfDB9cz1faig1OTY5MSl8MDtrW2tbZz4+Ml0+PjJdPXM7a1tlPj4yXT0wO3M9a1tlPj4yXXwwO3I9dDtyZXR1cm4gc3wwfWVsc2UgaWYoKGJ8MCk9PTE2KXtrW2U+PjJdPTA7cz1rW2U+PjJdfDA7cj10O3JldHVybiBzfDB9cmV0dXJuIDB9ZnVuY3Rpb24geE0oYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLG49MCxvPTAscD0wLHE9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTA7eT1yO3I9cis0OHwwO2Q9eSsyMHwwO2U9eSsxNnwwO2Y9eSszMnwwO2c9eSszMHwwO3U9eSsyOHwwO3E9eSsyNnwwO289eSszNXwwO3c9eSszNHwwO3Q9eSsyNHwwO3M9eSsxMnwwO3A9eSs4fDA7bj15KzR8MDt2PXk7a1tlPj4yXT1hO2pbZj4+MV09YjtqW2c+PjFdPWM7aVt3Pj4wXT0wO2pbdD4+MV09altnPj4xXXwwO2tbcz4+Ml09KGtbKGtbKGtbZT4+Ml18MCkrNTI+PjJdfDApKzM2Pj4yXXwwKS00O2tbcD4+Ml09KG1bZj4+MV18MCkrKG1bZz4+MV18MCk7a1tuPj4yXT1rWyhrW2U+PjJdfDApKzU2Pj4yXTtpZigobVsoa1soa1tlPj4yXXwwKSs1Mj4+Ml18MCkrMjI+PjFdfDApJjQpZFMoKGtbbj4+Ml18MCkrKG1bZj4+MV18MCl8MCwwLG1bZz4+MV18MHwwKXwwO2lbbz4+MF09aVsoa1tlPj4yXXwwKSs1Pj4wXXwwO2pbdT4+MV09KGxbbz4+MF18MCkrMTtpZigobFsoa1tuPj4yXXwwKSsoKG1bdT4+MV18MCkrMSk+PjBdfDB8MCk9PTA/KGxbKGtbbj4+Ml18MCkrKG1bdT4+MV18MCk+PjBdfDB8MCk9PTA6MClqW3E+PjFdPTA7ZWxzZSB4PTY7ZG8gaWYoKHh8MCk9PTYpe3doaWxlKDEpe3g9MDthPSgobFsoa1tuPj4yXXwwKSsobVt1Pj4xXXwwKT4+MF18MCk8PDh8KGxbKGtbbj4+Ml18MCkrKG1bdT4+MV18MCkrMT4+MF18MCkpJjY1NTM1O2pbcT4+MV09YTtpZigoYSY2NTUzNXwwKT49KG1bZj4+MV18MHwwKSlicmVhaztoPWpbcT4+MV18MDtpZigobVtxPj4xXXwwfDApPCgobVt1Pj4xXXwwKSs0fDApKXt4PTg7YnJlYWt9alt1Pj4xXT1oO3g9Nn1pZigoeHwwKT09OD8oaCY2NTUzNXwwKSE9MDowKXt4PV9qKDU5ODU0KXwwO2tbZD4+Ml09eDt4PWtbZD4+Ml18MDtyPXk7cmV0dXJuIHh8MH1pZigobVtxPj4xXXwwKT4+PjA+KGtbcz4+Ml18MCk+Pj4wKXt4PV9qKDU5ODU4KXwwO2tbZD4+Ml09eDt4PWtbZD4+Ml18MDtyPXk7cmV0dXJuIHh8MH1kbyBpZigobVtxPj4xXXwwfDApIT0wPygoa1twPj4yXXwwKSszfDApPj4+MD49KG1bcT4+MV18MCk+Pj4wOjApe2lbdz4+MF09KG1bcT4+MV18MCktKGtbcD4+Ml18MCk7aWYoKGtbcD4+Ml18MCk+Pj4wPihtW3E+PjFdfDApPj4+MCl7eD1faig1OTg2OSl8MDtrW2Q+PjJdPXg7eD1rW2Q+PjJdfDA7cj15O3JldHVybiB4fDB9a1twPj4yXT0obVtxPj4xXXwwKSsoKGxbKGtbbj4+Ml18MCkrKChtW3E+PjFdfDApKzIpPj4wXXwwKTw8OHwobFsoa1tuPj4yXXwwKSsoKG1bcT4+MV18MCkrMikrMT4+MF18MCkpO2lmKChrW3A+PjJdfDApPj4+MDw9KGtbKGtbKGtbZT4+Ml18MCkrNTI+PjJdfDApKzM2Pj4yXXwwKT4+PjApe2pbZz4+MV09KGtbcD4+Ml18MCktKG1bZj4+MV18MCk7altxPj4xXT0obFsoa1tuPj4yXXwwKSsobVtxPj4xXXwwKT4+MF18MCk8PDh8KGxbKGtbbj4+Ml18MCkrKG1bcT4+MV18MCkrMT4+MF18MCk7YnJlYWt9eD1faig1OTg3MSl8MDtrW2Q+PjJdPXg7eD1rW2Q+PjJdfDA7cj15O3JldHVybiB4fDB9d2hpbGUoMCk7ZG8gaWYoKG1bdT4+MV18MHwwKT4oKGxbbz4+MF18MCkrMXwwKT8oa1t2Pj4yXT0obVt1Pj4xXXwwKSsoKGxbKGtbbj4+Ml18MCkrKChtW3U+PjFdfDApKzIpPj4wXXwwKTw8OHwobFsoa1tuPj4yXXwwKSsoKG1bdT4+MV18MCkrMikrMT4+MF18MCkpLCgoa1t2Pj4yXXwwKSszfDApPj0obVtmPj4xXXwwfDApKTowKXtpZigoa1t2Pj4yXXwwKTw9KG1bZj4+MV18MHwwKSl7aVt3Pj4wXT0obFt3Pj4wXXwwKSsoKG1bZj4+MV18MCktKGtbdj4+Ml18MCkpO2pbZz4+MV09KGtbcD4+Ml18MCktKG1bdT4+MV18MCk7altmPj4xXT1qW3U+PjFdfDA7YnJlYWt9eD1faig1OTg4Myl8MDtrW2Q+PjJdPXg7eD1rW2Q+PjJdfDA7cj15O3JldHVybiB4fDB9d2hpbGUoMCk7aWYoKGxbdz4+MF18MHwwKTw9KGxbKGtbbj4+Ml18MCkrKChsW28+PjBdfDApKzcpPj4wXXwwfDApKXt4PShrW24+PjJdfDApKygobFtvPj4wXXwwKSs3KXwwO2lbeD4+MF09KGxbeD4+MF18MCktKGxbdz4+MF18MCk7YnJlYWt9eD1faig1OTg4OSl8MDtrW2Q+PjJdPXg7eD1rW2Q+PjJdfDA7cj15O3JldHVybiB4fDB9d2hpbGUoMCk7ZG8gaWYoKG1bZj4+MV18MHwwKT09KChsWyhrW24+PjJdfDApKygobFtvPj4wXXwwKSs1KT4+MF18MCk8PDh8KGxbKGtbbj4+Ml18MCkrKChsW28+PjBdfDApKzUpKzE+PjBdfDApfDApKXtpZigobVt1Pj4xXXwwfDApPT0oKGxbbz4+MF18MCkrMXwwKSl7aVsoa1tuPj4yXXwwKSsoKGxbbz4+MF18MCkrMSk+PjBdPShtW3E+PjFdfDApPj44O2lbKGtbbj4+Ml18MCkrKChsW28+PjBdfDApKzEpKzE+PjBdPWpbcT4+MV07aVsoa1tuPj4yXXwwKSsoKGxbbz4+MF18MCkrNSk+PjBdPShrW3A+PjJdfDApPj4+ODtpWyhrW24+PjJdfDApKygobFtvPj4wXXwwKSs1KSsxPj4wXT1rW3A+PjJdO2JyZWFrfXg9X2ooNTk4OTYpfDA7a1tkPj4yXT14O3g9a1tkPj4yXXwwO3I9eTtyZXR1cm4geHwwfWVsc2V7aVsoa1tuPj4yXXwwKSsobVt1Pj4xXXwwKT4+MF09KG1bZj4+MV18MCk+Pjg7aVsoa1tuPj4yXXwwKSsobVt1Pj4xXXwwKSsxPj4wXT1qW2Y+PjFdO2lbKGtbbj4+Ml18MCkrKG1bZj4+MV18MCk+PjBdPShtW3E+PjFdfDApPj44O2lbKGtbbj4+Ml18MCkrKG1bZj4+MV18MCkrMT4+MF09altxPj4xXTtpWyhrW24+PjJdfDApKygobVtmPj4xXXwwKSsyKT4+MF09KG1bZz4+MV18MCk+Pjg7aVsoa1tuPj4yXXwwKSsoKG1bZj4+MV18MCkrMikrMT4+MF09altnPj4xXX13aGlsZSgwKTt4PShrW2U+PjJdfDApKzE2fDA7alt4Pj4xXT0obVt4Pj4xXXwwKSsobVt0Pj4xXXwwKTtrW2Q+PjJdPTA7eD1rW2Q+PjJdfDA7cj15O3JldHVybiB4fDB9ZnVuY3Rpb24geU0oYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTA7ZT1yO3I9cisxNnwwO2Q9ZSs0fDA7Yz1lO2tbZD4+Ml09YTtrW2M+PjJdPWI7YT1nY1trWyhrWyhrW2Q+PjJdfDApKzQ+PjJdfDApKzc2Pj4yXSYyNTVdKGtbKGtbZD4+Ml18MCkrND4+Ml18MCxrWyhrWyhrW2Q+PjJdfDApKzg+PjJdfDApKyhrW2M+PjJdPDwyKT4+Ml18MCl8MDtqWyhrWyhrW2Q+PjJdfDApKzEyPj4yXXwwKSsoa1tjPj4yXTw8MSk+PjFdPWE7cj1lO3JldHVybiBqWyhrWyhrW2Q+PjJdfDApKzEyPj4yXXwwKSsoa1tjPj4yXTw8MSk+PjFdfDB9ZnVuY3Rpb24gek0oYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxuPTAsbz0wLHA9MCxxPTAscz0wLHQ9MDt0PXI7cj1yKzQ4fDA7ZD10KzM2fDA7ZT10KzMyfDA7Zj10KzI4fDA7Zz10KzI0fDA7bj10KzIwfDA7aD10KzE2fDA7cT10KzEyfDA7cD10Kzh8MDtqPXQrNHwwO289dDtrW2U+PjJdPWE7a1tmPj4yXT1iO2tbZz4+Ml09YztrW24+PjJdPWxbKGtbZT4+Ml18MCkrNT4+MF07a1toPj4yXT1rWyhrW2U+PjJdfDApKzU2Pj4yXTtrW3A+PjJdPTA7a1tqPj4yXT0obVsoa1tlPj4yXXwwKSsxND4+MV18MCkrKChtWyhrW2U+PjJdfDApKzE4Pj4xXXwwKTw8MSk7a1txPj4yXT0obFsoa1toPj4yXXwwKSsoKGtbbj4+Ml18MCkrNSk+PjBdfDApPDw4fChsWyhrW2g+PjJdfDApKygoa1tuPj4yXXwwKSs1KSsxPj4wXXwwKTtkbyBpZigoa1tqPj4yXXwwKT4oa1txPj4yXXwwKSl7aWYoKGtbcT4+Ml18MCk9PTA/KGtbKGtbKGtbZT4+Ml18MCkrNTI+PjJdfDApKzM2Pj4yXXwwKT09NjU1MzY6MCl7a1txPj4yXT02NTUzNjticmVha31zPV9qKDU5NzU4KXwwO2tbZD4+Ml09cztzPWtbZD4+Ml18MDtyPXQ7cmV0dXJuIHN8MH13aGlsZSgwKTtpZighKChsWyhrW2g+PjJdfDApKygoa1tuPj4yXXwwKSsyKT4+MF18MHwwKT09MD8obFsoa1toPj4yXXwwKSsoKGtbbj4+Ml18MCkrMSk+PjBdfDB8MCk9PTA6MCkpcz04O2lmKChzfDApPT04Pygoa1tqPj4yXXwwKSsyfDApPD0oa1txPj4yXXwwKTowKXtzPXdNKGtbZT4+Ml18MCxrW2Y+PjJdfDAscCl8MDtrW28+PjJdPXM7aWYoa1tvPj4yXXwwKXtrW2tbZz4+Ml0+PjJdPShrW28+PjJdfDApLShrW2g+PjJdfDApO2tbZD4+Ml09MDtzPWtbZD4+Ml18MDtyPXQ7cmV0dXJuIHN8MH1pZihrW3A+PjJdfDApe2tbZD4+Ml09a1twPj4yXTtzPWtbZD4+Ml18MDtyPXQ7cmV0dXJuIHN8MH19ZG8gaWYoKChrW2o+PjJdfDApKzIrKGtbZj4+Ml18MCl8MCk+KGtbcT4+Ml18MCkpe3M9cE0oa1tlPj4yXXwwKXwwO2tbcD4+Ml09cztpZighKGtbcD4+Ml18MCkpe2tbcT4+Ml09KCgobFsoa1toPj4yXXwwKSsoKGtbbj4+Ml18MCkrNSk+PjBdfDApPDw4fChsWyhrW2g+PjJdfDApKygoa1tuPj4yXXwwKSs1KSsxPj4wXXwwKSktMSY2NTUzNSkrMTticmVha31rW2Q+PjJdPWtbcD4+Ml07cz1rW2Q+PjJdfDA7cj10O3JldHVybiBzfDB9d2hpbGUoMCk7a1txPj4yXT0oa1txPj4yXXwwKS0oa1tmPj4yXXwwKTtpWyhrW2g+PjJdfDApKygoa1tuPj4yXXwwKSs1KT4+MF09a1txPj4yXT4+ODtpWyhrW2g+PjJdfDApKygoa1tuPj4yXXwwKSs1KSsxPj4wXT1rW3E+PjJdO2tba1tnPj4yXT4+Ml09a1txPj4yXTtrW2Q+PjJdPTA7cz1rW2Q+PjJdfDA7cj10O3JldHVybiBzfDB9ZnVuY3Rpb24gQU0oYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTAsbj0wLG89MCxwPTAscT0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wLEU9MDtFPXI7cj1yKzk2fDA7Qj1FKzc2fDA7Zj1FKzcyfDA7Zz1FKzY4fDA7ZT1FKzY0fDA7aD1FKzYwfDA7cT1FKzU2fDA7eD1FKzUyfDA7cz1FKzQ4fDA7bz1FKzQ0fDA7RD1FKzQwfDA7QT1FKzM2fDA7dT1FKzMyfDA7Qz1FKzI4fDA7dz1FKzI0fDA7dj1FKzIwfDA7dD1FKzE2fDA7eT1FKzEyfDA7cD1FKzh8MDtuPUUrNHwwO3o9RTtqPUUrODB8MDtrW2Y+PjJdPWE7a1tnPj4yXT1iO2tbZT4+Ml09YztrW2g+PjJdPWQ7a1t1Pj4yXT0wO2tbQz4+Ml09MDtrW3Q+PjJdPWtbKGtbZj4+Ml18MCkrNTI+PjJdO2tbeT4+Ml09MDtrW3A+PjJdPWxbKGtbZj4+Ml18MCkrNj4+MF07Yj1rW2U+PjJdfDA7aWYoaVsoa1tmPj4yXXwwKSsyPj4wXXwwKXtrW3E+PjJdPShrW2IrMjA+PjJdfDApKyhrWyhrW2U+PjJdfDApKzI0Pj4yXXwwKTtrW3g+PjJdPWtbKGtbZT4+Ml18MCkrMTY+PjJdO2tbcz4+Ml09a1soa1tlPj4yXXwwKSsyMD4+Ml07aWYoKGtbcT4+Ml18MCk+Pj4wPDEyOCl7aVsoa1tnPj4yXXwwKSsoa1twPj4yXXwwKT4+MF09a1txPj4yXTtiPTF9ZWxzZXtiPWtbcT4+Ml18MDtiPWFKKChrW2c+PjJdfDApKyhrW3A+PjJdfDApfDAsYiwoKGJ8MCk8MCk8PDMxPj4zMSl8MH1rW3A+PjJdPShrW3A+PjJdfDApKyhiJjI1NSk7ZT0oa1tlPj4yXXwwKSs4fDA7ZT1hSigoa1tnPj4yXXwwKSsoa1twPj4yXXwwKXwwLGtbZT4+Ml18MCxrW2UrND4+Ml18MCl8MDtrW3A+PjJdPShrW3A+PjJdfDApK2V9ZWxzZXtkPWtbYis4Pj4yXXwwO2tbcT4+Ml09ZDtrW3M+PjJdPWQ7a1t4Pj4yXT1rW2tbZT4+Ml0+PjJdO2lmKChrW3E+PjJdfDApPj4+MDwxMjgpe2lbKGtbZz4+Ml18MCkrKGtbcD4+Ml18MCk+PjBdPWtbcT4+Ml07Yj0xfWVsc2V7Yj1rW3E+PjJdfDA7Yj1hSigoa1tnPj4yXXwwKSsoa1twPj4yXXwwKXwwLGIsKChifDApPDApPDwzMT4+MzEpfDB9a1twPj4yXT0oa1twPj4yXXwwKSsoYiYyNTUpfWlmKChrW3E+PjJdfDApPD0obVsoa1tmPj4yXXwwKSsxMD4+MV18MCkpe249KGtbcD4+Ml18MCkrKGtbcT4+Ml18MCl8MDtrW28+PjJdPW47a1tvPj4yXT0oa1tvPj4yXXwwKTw0PzQ6bjtrW2tbaD4+Ml0+PjJdPWtbbz4+Ml07a1tBPj4yXT1rW3E+PjJdO2tbdz4+Ml09a1tnPj4yXX1lbHNle2tbbj4+Ml09bVsoa1tmPj4yXXwwKSsxMj4+MV07a1tvPj4yXT0oa1tuPj4yXXwwKSsoKCgoa1txPj4yXXwwKS0oa1tuPj4yXXwwKXwwKT4+PjApJSgoKGtbKGtbKGtbZj4+Ml18MCkrNTI+PjJdfDApKzM2Pj4yXXwwKS00fDApPj4+MCl8MCk7aWYoKGtbbz4+Ml18MCk+KG1bKGtbZj4+Ml18MCkrMTA+PjFdfDApKWtbbz4+Ml09a1tuPj4yXTtrW0E+PjJdPWtbbz4+Ml07a1trW2g+PjJdPj4yXT0oa1tvPj4yXXwwKSsoa1twPj4yXXwwKSs0O2tbdz4+Ml09KGtbZz4+Ml18MCkrKChrW3A+PjJdfDApKyhrW28+PjJdfDApKX1rW3Y+PjJdPShrW2c+PjJdfDApKyhrW3A+PjJdfDApO3doaWxlKDEpe2lmKChrW3E+PjJdfDApPD0wKXtiPTM1O2JyZWFrfWlmKCEoa1tBPj4yXXwwKSl7a1t6Pj4yXT1rW3k+PjJdO2lmKGlbKGtbdD4+Ml18MCkrMTc+PjBdfDApd2hpbGUoMSl7a1t5Pj4yXT0oa1t5Pj4yXXwwKSsxO3A9ZEcoa1t0Pj4yXXwwLGtbeT4+Ml18MCl8MDtpZigocHwwKT09KGtbeT4+Ml18MCkpY29udGludWU7aWYoKGtbeT4+Ml18MCkhPSgoKChrWzM4NF18MCk+Pj4wKS8oKGtbKGtbdD4+Ml18MCkrMzI+PjJdfDApPj4+MCl8MCkrMXwwKSlicmVha31wPWtLKGtbdD4+Ml18MCx1LHksa1t5Pj4yXXwwLDApfDA7a1tEPj4yXT1wO2lmKCgoa1tEPj4yXXwwKT09MD8obFsoa1t0Pj4yXXwwKSsxNz4+MF18MCkhPTA6MCk/KGlbaj4+MF09KGtbej4+Ml18MCkhPTA/NDozLG9LKGtbdD4+Ml18MCxrW3k+PjJdfDAsaVtqPj4wXXwwLGtbej4+Ml18MCxEKSwoa1tEPj4yXXwwKSE9MCk6MClfQihrW3U+PjJdfDApO2lmKGtbRD4+Ml18MCl7Yj0yNTticmVha31wdChrW3c+PjJdfDAsa1t5Pj4yXXwwKTtfQihrW0M+PjJdfDApO2tbQz4+Ml09a1t1Pj4yXTtrW3c+PjJdPWtbKGtbdT4+Ml18MCkrNTY+PjJdO3B0KGtbdz4+Ml18MCwwKTtrW3Y+PjJdPShrWyhrW3U+PjJdfDApKzU2Pj4yXXwwKSs0O2tbQT4+Ml09KGtbKGtbdD4+Ml18MCkrMzY+PjJdfDApLTR9a1tvPj4yXT1rW3E+PjJdO2lmKChrW28+PjJdfDApPihrW0E+PjJdfDApKWtbbz4+Ml09a1tBPj4yXTtpZigoa1tzPj4yXXwwKT4wKXtpZigoa1tvPj4yXXwwKT4oa1tzPj4yXXwwKSlrW28+PjJdPWtbcz4+Ml07YlMoa1t2Pj4yXXwwLGtbeD4+Ml18MCxrW28+PjJdfDApfDB9ZWxzZSBkUyhrW3Y+PjJdfDAsMCxrW28+PjJdfDApfDA7a1txPj4yXT0oa1txPj4yXXwwKS0oa1tvPj4yXXwwKTtrW3Y+PjJdPShrW3Y+PjJdfDApKyhrW28+PjJdfDApO2tbeD4+Ml09KGtbeD4+Ml18MCkrKGtbbz4+Ml18MCk7a1tzPj4yXT0oa1tzPj4yXXwwKS0oa1tvPj4yXXwwKTtrW0E+PjJdPShrW0E+PjJdfDApLShrW28+PjJdfDApfWlmKChifDApPT0yNSl7X0Ioa1tDPj4yXXwwKTtrW0I+PjJdPWtbRD4+Ml07RD1rW0I+PjJdfDA7cj1FO3JldHVybiBEfDB9ZWxzZSBpZigoYnwwKT09MzUpe19CKGtbQz4+Ml18MCk7a1tCPj4yXT0wO0Q9a1tCPj4yXXwwO3I9RTtyZXR1cm4gRHwwfXJldHVybiAwfWZ1bmN0aW9uIEJNKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MDtmPXI7cj1yKzE2fDA7Yz1mKzh8MDtkPWYrNHwwO2U9ZjtrW2M+PjJdPWE7a1tkPj4yXT1iO2tbZT4+Ml09a1soa1tkPj4yXXwwKSsxNj4+Ml07aWYoIShrW2U+PjJdfDApKXtyPWY7cmV0dXJufUhKKGtbYz4+Ml18MCxrW2U+PjJdfDApO1VkKGtbKGtbZT4+Ml18MCkrMzYrND4+Ml18MCk7Ymcoa1tjPj4yXXwwLGtbZT4+Ml18MCk7a1soa1tkPj4yXXwwKSsxNj4+Ml09MDtyPWY7cmV0dXJufWZ1bmN0aW9uIENNKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsbT0wLG49MCxvPTAscD0wLHE9MCxzPTAsdD0wLHU9MDt1PXI7cj1yKzY0fDA7ZD11KzQ0fDA7ZT11KzQwfDA7Zj11KzM2fDA7Zz11KzMyfDA7bT11KzI4fDA7bz11KzI0fDA7cT11KzIwfDA7dD11KzE2fDA7cz11KzEyfDA7cD11Kzh8MDtuPXUrNHwwO2g9dSs0OHwwO2o9dTtrW2U+PjJdPWE7a1tmPj4yXT1iO2tbZz4+Ml09YztrW20+PjJdPWtbKGtbZT4+Ml18MCkrND4+Ml07Yz1rW20+PjJdfDA7aWYoaVsoa1ttPj4yXXwwKSsxNz4+MF18MCl7aUsoYyk7Qmcoa1tlPj4yXXwwLDQscSk7a1txPj4yXT0oa1txPj4yXXwwKSsxO3doaWxlKDEpe2I9a1txPj4yXXwwO2lmKChifDApIT0oZEcoa1ttPj4yXXwwLGtbcT4+Ml18MCl8MCk/KGtbcT4+Ml18MCkhPSgoKChrWzM4NF18MCk+Pj4wKS8oKGtbKGtbbT4+Ml18MCkrMzI+PjJdfDApPj4+MCl8MCkrMXwwKTowKWJyZWFrO2tbcT4+Ml09KGtbcT4+Ml18MCkrMX1iPWtLKGtbbT4+Ml18MCxuLHAsa1txPj4yXXwwLDEpfDA7a1t0Pj4yXT1iO2lmKGtbdD4+Ml18MCl7a1tkPj4yXT1rW3Q+PjJdO3Q9a1tkPj4yXXwwO3I9dTtyZXR1cm4gdHwwfWlmKChrW3A+PjJdfDApIT0oa1txPj4yXXwwKSl7aVtoPj4wXT0wO2tbaj4+Ml09MDtiPWZJKGtbbT4+Ml18MCwwLDApfDA7a1t0Pj4yXT1iO19CKGtbbj4+Ml18MCk7aWYoa1t0Pj4yXXwwKXtrW2Q+PjJdPWtbdD4+Ml07dD1rW2Q+PjJdfDA7cj11O3JldHVybiB0fDB9bj1mRyhrW20+PjJdfDAsa1txPj4yXXwwLG8sMCl8MDtrW3Q+PjJdPW47aWYoa1t0Pj4yXXwwKXtrW2Q+PjJdPWtbdD4+Ml07dD1rW2Q+PjJdfDA7cj11O3JldHVybiB0fDB9bj1lRyhrW20+PjJdfDAsa1txPj4yXXwwLGgsail8MDtrW3Q+PjJdPW47aWYoISgobFtoPj4wXXwwKSE9MT8obFtoPj4wXXwwKSE9MjowKSl7bj1faig2NjU5OCl8MDtrW3Q+PjJdPW59aWYoa1t0Pj4yXXwwKXtfQihrW28+PjJdfDApO2tbZD4+Ml09a1t0Pj4yXTt0PWtbZD4+Ml18MDtyPXU7cmV0dXJuIHR8MH1wPWxLKGtbbT4+Ml18MCxrW28+PjJdfDAsaVtoPj4wXXwwLGtbaj4+Ml18MCxrW3A+PjJdfDAsMCl8MDtrW3Q+PjJdPXA7X0Ioa1tvPj4yXXwwKTtpZihrW3Q+PjJdfDApe2tbZD4+Ml09a1t0Pj4yXTt0PWtbZD4+Ml18MDtyPXU7cmV0dXJuIHR8MH1wPWZHKGtbbT4+Ml18MCxrW3E+PjJdfDAsbywwKXwwO2tbdD4+Ml09cDtpZihrW3Q+PjJdfDApe2tbZD4+Ml09a1t0Pj4yXTt0PWtbZD4+Ml18MDtyPXU7cmV0dXJuIHR8MH1wPVFnKGtbKGtbbz4+Ml18MCkrNzI+PjJdfDApfDA7a1t0Pj4yXT1wO2lmKGtbdD4+Ml18MCl7X0Ioa1tvPj4yXXwwKTtrW2Q+PjJdPWtbdD4+Ml07dD1rW2Q+PjJdfDA7cj11O3JldHVybiB0fDB9fWVsc2Uga1tvPj4yXT1rW24+PjJdO29LKGtbbT4+Ml18MCxrW3E+PjJdfDAsMSwwLHQpO2lmKGtbdD4+Ml18MCl7X0Ioa1tvPj4yXXwwKTtrW2Q+PjJdPWtbdD4+Ml07dD1rW2Q+PjJdfDA7cj11O3JldHVybiB0fDB9cD1MZyhrW2U+PjJdfDAsNCxrW3E+PjJdfDApfDA7a1t0Pj4yXT1wO2lmKGtbdD4+Ml18MCl7X0Ioa1tvPj4yXXwwKTtrW2Q+PjJdPWtbdD4+Ml07dD1rW2Q+PjJdfDA7cj11O3JldHVybiB0fDB9fWVsc2V7cD1rSyhjLG8scSwxLDApfDA7a1t0Pj4yXT1wO2lmKGtbdD4+Ml18MCl7a1tkPj4yXT1rW3Q+PjJdO3Q9a1tkPj4yXXwwO3I9dTtyZXR1cm4gdHwwfX1pZihrW2c+PjJdJjEpa1tzPj4yXT0xMztlbHNlIGtbcz4+Ml09MTA7bEwoa1tvPj4yXXwwLGtbcz4+Ml18MCk7SWcoa1soa1tvPj4yXXwwKSs3Mj4+Ml18MCk7a1trW2Y+PjJdPj4yXT1rW3E+PjJdO2tbZD4+Ml09MDt0PWtbZD4+Ml18MDtyPXU7cmV0dXJuIHR8MH1mdW5jdGlvbiBETShhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsbT0wLG49MCxvPTAscD0wLHE9MDtxPXI7cj1yKzMyfDA7Zj1xKzI4fDA7Zz1xKzI0fDA7aD1xKzIwfDA7aj1xKzE2fDA7bT1xKzEyfDA7bj1xKzh8MDtvPXErNHwwO3A9cTtrW2c+PjJdPWE7a1toPj4yXT1iO2tbaj4+Ml09YztrW20+PjJdPWQ7a1tuPj4yXT1lO2tbbz4+Ml09a1soa1tnPj4yXXwwKSs0Pj4yXTtpZigoa1tqPj4yXXwwKSE9MD8oRU0oa1tvPj4yXXwwKSwoa1soa1tvPj4yXXwwKSs4MD4+Ml18MCk9PTApOjApe2tbZj4+Ml09NztjPWtbZj4+Ml18MDtyPXE7cmV0dXJuIGN8MH1pZigoa1toPj4yXXwwKT09MT8oVEYoa1tvPj4yXXwwKXwwKT09MDowKWtbaD4+Ml09MDtrWyhrW24+PjJdfDApKzUyPj4yXT1rW2g+PjJdO2lbKGtbbj4+Ml18MCkrNjg+PjBdPS0xO2tbKGtbbj4+Ml18MCkrNzI+PjJdPWtbbT4+Ml07a1trW24+PjJdPj4yXT1rW2c+PjJdO2tbKGtbbj4+Ml18MCkrND4+Ml09a1tvPj4yXTtpWyhrW24+PjJdfDApKzY0Pj4wXT0oa1tqPj4yXXwwKSE9MD8xOjA7aVsoa1tuPj4yXXwwKSs2NT4+MF09KGtbaj4+Ml18MCkhPTA/MDoyO2tbcD4+Ml09a1soa1tvPj4yXXwwKSs4Pj4yXTt3aGlsZSgxKXtpZighKGtbcD4+Ml18MCkpYnJlYWs7aWYoKGtbKGtbcD4+Ml18MCkrNTI+PjJdfDApPT0oa1toPj4yXXwwKSl7Yz0oa1twPj4yXXwwKSs2NHwwO2lbYz4+MF09bFtjPj4wXXwwfDMyO2M9KGtbbj4+Ml18MCkrNjR8MDtpW2M+PjBdPWxbYz4+MF18MHwzMn1rW3A+PjJdPWtbKGtbcD4+Ml18MCkrOD4+Ml19a1soa1tuPj4yXXwwKSs4Pj4yXT1rWyhrW28+PjJdfDApKzg+PjJdO2tbKGtbbz4+Ml18MCkrOD4+Ml09a1tuPj4yXTtpWyhrW24+PjJdfDApKzY2Pj4wXT0wO2tbZj4+Ml09MDtjPWtbZj4+Ml18MDtyPXE7cmV0dXJuIGN8MH1mdW5jdGlvbiBFTShhKXthPWF8MDt2YXIgYj0wLGM9MDtjPXI7cj1yKzE2fDA7Yj1jO2tbYj4+Ml09YTtpZihrWyhrW2I+PjJdfDApKzgwPj4yXXwwKXtyPWM7cmV0dXJufWE9Z2ooa1soa1tiPj4yXXwwKSszMj4+Ml18MCl8MDtrWyhrW2I+PjJdfDApKzgwPj4yXT1hO2lmKCEoa1soa1tiPj4yXXwwKSs4MD4+Ml18MCkpe3I9YztyZXR1cm59YT1rWyhrW2I+PjJdfDApKzgwPj4yXXwwO2lbYT4+MF09MDtpW2ErMT4+MF09MDtpW2ErMj4+MF09MDtpW2ErMz4+MF09MDtpW2ErND4+MF09MDtpW2ErNT4+MF09MDtpW2ErNj4+MF09MDtpW2ErNz4+MF09MDthPShrW2I+PjJdfDApKzgwfDA7a1thPj4yXT0oa1thPj4yXXwwKSs0O3I9YztyZXR1cm59ZnVuY3Rpb24gRk0oKXtyZXR1cm4gMjAwfWZ1bmN0aW9uIEdNKGEpe2E9YXwwO3ZhciBiPTAsYz0wO2M9cjtyPXIrMTZ8MDtiPWM7a1tiPj4yXT1hO2E9a1tiPj4yXXwwO2I9YSs2OHwwO2Rve2tbYT4+Ml09MDthPWErNHwwfXdoaWxlKChhfDApPChifDApKTtyPWM7cmV0dXJufWZ1bmN0aW9uIEhNKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MDtmPXI7cj1yKzE2fDA7Yz1mKzh8MDtkPWYrNHwwO2U9ZjtrW2Q+PjJdPWE7a1tlPj4yXT1iO2lmKChrW2U+PjJdfDApPihrWyhrW2Q+PjJdfDApKzEwND4+Ml18MCk/KGxbKGtbZD4+Ml18MCkrNj4+MF18MHwwKSE9MDowKXthPUlNKGtbZD4+Ml18MCxrW2U+PjJdfDApfDA7a1tjPj4yXT1hO2E9a1tjPj4yXXwwO3I9ZjtyZXR1cm4gYXwwfWtbYz4+Ml09MDthPWtbYz4+Ml18MDtyPWY7cmV0dXJuIGF8MH1mdW5jdGlvbiBJTShhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wLGg9MCxpPTAsaj0wO2o9cjtyPXIrMzJ8MDtoPWorMjR8MDtjPWorMjB8MDtkPWorMTZ8MDtpPWorMTJ8MDtnPWorOHwwO2Y9ais0fDA7ZT1qO2tbYz4+Ml09YTtrW2Q+PjJdPWI7a1tpPj4yXT0wO2tbZz4+Ml09a1soa1tjPj4yXXwwKSsxMDQ+PjJdO2E9bWcoa1soa1tjPj4yXXwwKSsxMDA+PjJdfDAsKGtbZD4+Ml18MCkqNDh8MCwwKXwwO2tbZT4+Ml09YTtpZighKGtbZT4+Ml18MCkpe2tbaD4+Ml09NztpPWtbaD4+Ml18MDtyPWo7cmV0dXJuIGl8MH1kUygoa1tlPj4yXXwwKSsoKGtbZz4+Ml18MCkqNDh8MCl8MCwwLCgoa1tkPj4yXXwwKS0oa1tnPj4yXXwwKXwwKSo0OHwwKXwwO2tbKGtbYz4+Ml18MCkrMTAwPj4yXT1rW2U+PjJdO2tbZj4+Ml09a1tnPj4yXTt3aGlsZSgxKXtpZigoa1tmPj4yXXwwKT49KGtbZD4+Ml18MCkpe2M9MTQ7YnJlYWt9a1soa1tlPj4yXXwwKSsoKGtbZj4+Ml18MCkqNDh8MCkrMjA+PjJdPWtbKGtbYz4+Ml18MCkrMjg+PjJdO2lmKChrW2tbKGtbYz4+Ml18MCkrNjg+PjJdPj4yXXwwKSE9MD8oYT0oa1tjPj4yXXwwKSs4MHwwLGI9a1thKzQ+PjJdfDAsKGJ8MCk+MHwoYnwwKT09MCYoa1thPj4yXXwwKT4+PjA+MCk6MCl7Zz0oa1tjPj4yXXwwKSs4MHwwO2I9a1tnKzQ+PjJdfDA7YT0oa1tlPj4yXXwwKSsoKGtbZj4+Ml18MCkqNDh8MCl8MDtrW2E+PjJdPWtbZz4+Ml07a1thKzQ+PjJdPWJ9ZWxzZXthPShrW2U+PjJdfDApKygoa1tmPj4yXXwwKSo0OHwwKXwwO2tbYT4+Ml09a1soa1tjPj4yXXwwKSsxNTY+PjJdO2tbYSs0Pj4yXT0wfWtbKGtbZT4+Ml18MCkrKChrW2Y+PjJdfDApKjQ4fDApKzI0Pj4yXT1rWyhrW2M+PjJdfDApKzU2Pj4yXTthPXVqKGtbKGtbYz4+Ml18MCkrMjg+PjJdfDApfDA7a1soa1tlPj4yXXwwKSsoKGtbZj4+Ml18MCkqNDh8MCkrMTY+PjJdPWE7aWYoIShrWyhrW2U+PjJdfDApKygoa1tmPj4yXXwwKSo0OHwwKSsxNj4+Ml18MCkpe2M9MTA7YnJlYWt9aWYoTHIoa1tjPj4yXXwwKXwwKUpNKGtbKGtbYz4+Ml18MCkrMjE2Pj4yXXwwLChrW2U+PjJdfDApKygoa1tmPj4yXXwwKSo0OHwwKSsyOHwwKTtrWyhrW2M+PjJdfDApKzEwND4+Ml09KGtbZj4+Ml18MCkrMTtrW2Y+PjJdPShrW2Y+PjJdfDApKzF9aWYoKGN8MCk9PTEwKXtrW2g+PjJdPTc7aT1rW2g+PjJdfDA7cj1qO3JldHVybiBpfDB9ZWxzZSBpZigoY3wwKT09MTQpe2tbaD4+Ml09a1tpPj4yXTtpPWtbaD4+Ml18MDtyPWo7cmV0dXJuIGl8MH1yZXR1cm4gMH1mdW5jdGlvbiBKTShhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MDtjPXI7cj1yKzE2fDA7ZT1jKzR8MDtkPWM7a1tlPj4yXT1hO2tbZD4+Ml09YjtrW2tbZD4+Ml0+PjJdPWtbKGtbZT4+Ml18MCkrNTIrMTY+PjJdO2tbKGtbZD4+Ml18MCkrND4+Ml09a1soa1tlPj4yXXwwKSs1MisyND4+Ml07a1soa1tkPj4yXXwwKSs4Pj4yXT1rWyhrW2U+PjJdfDApKzUyKzI0KzQ+PjJdO2tbKGtbZD4+Ml18MCkrMTI+PjJdPWtbKGtbZT4+Ml18MCkrMTEyPj4yXTtyPWM7cmV0dXJufWZ1bmN0aW9uIEtNKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTA7aD1yO3I9ciszMnwwO2Q9aCsxNnwwO2U9aCsxMnwwO2c9aCs4fDA7Zj1oKzR8MDtiPWg7a1tlPj4yXT1hO2lmKChrWyhrW2U+PjJdfDApKzQ0Pj4yXXwwKT4+PjA+MCl7a1tkPj4yXT0wO2c9a1tkPj4yXXwwO3I9aDtyZXR1cm4gZ3wwfWtbZz4+Ml09a1soa1tlPj4yXXwwKSsxMj4+Ml07a1tmPj4yXT1rWyhrW2c+PjJdfDApKzU2Pj4yXTtjPVFnKGtbKGtbZz4+Ml18MCkrNzI+PjJdfDApfDA7a1tiPj4yXT1jO2lmKGtbYj4+Ml18MCl7a1tkPj4yXT1rW2I+PjJdO2c9a1tkPj4yXXwwO3I9aDtyZXR1cm4gZ3wwfWVsc2V7YT1rW2Y+PjJdfDA7Yj00MTc5NjtjPWErMTZ8MDtkb3tpW2E+PjBdPWlbYj4+MF18MDthPWErMXwwO2I9YisxfDB9d2hpbGUoKGF8MCk8KGN8MCkpO2lbKGtbZj4+Ml18MCkrMTY+PjBdPShrWyhrW2U+PjJdfDApKzMyPj4yXXwwKT4+Pjg7aVsoa1tmPj4yXXwwKSsxNz4+MF09KGtbKGtbZT4+Ml18MCkrMzI+PjJdfDApPj4+MTY7aVsoa1tmPj4yXXwwKSsxOD4+MF09MTtpWyhrW2Y+PjJdfDApKzE5Pj4wXT0xO2lbKGtbZj4+Ml18MCkrMjA+PjBdPShrWyhrW2U+PjJdfDApKzMyPj4yXXwwKS0oa1soa1tlPj4yXXwwKSszNj4+Ml18MCk7aVsoa1tmPj4yXXwwKSsyMT4+MF09NjQ7aVsoa1tmPj4yXXwwKSsyMj4+MF09MzI7aVsoa1tmPj4yXXwwKSsyMz4+MF09MzI7YT0oa1tmPj4yXXwwKSsyNHwwO2M9YSs3NnwwO2Rve2lbYT4+MF09MDthPWErMXwwfXdoaWxlKChhfDApPChjfDApKTtsTChrW2c+PjJdfDAsMTMpO2c9KGtbZT4+Ml18MCkrMjJ8MDtqW2c+PjFdPW1bZz4+MV18MHwyO3B0KChrW2Y+PjJdfDApKzUyfDAsbFsoa1tlPj4yXXwwKSsxNz4+MF18MCk7cHQoKGtbZj4+Ml18MCkrNjR8MCxsWyhrW2U+PjJdfDApKzE4Pj4wXXwwKTtrWyhrW2U+PjJdfDApKzQ0Pj4yXT0xO2lbKGtbZj4+Ml18MCkrMzE+PjBdPTE7a1tkPj4yXT0wO2c9a1tkPj4yXXwwO3I9aDtyZXR1cm4gZ3wwfXJldHVybiAwfWZ1bmN0aW9uIExNKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsbT0wLG49MDtuPXI7cj1yKzQ4fDA7ZD1uKzI0fDA7ZT1uKzIwfDA7Zj1uO2g9bisxNnwwO2o9bisxMnwwO209bis4fDA7Zz1uKzI4fDA7a1tlPj4yXT1hO2E9ZjtrW2E+PjJdPWI7a1thKzQ+PjJdPWM7aWYoMCE9MD8xOihrW2YrND4+Ml0mLTE2Nzc3MjE2fDApIT0wKXtpWyhrW2U+PjJdfDApKzg+PjBdPWtbZj4+Ml07bT1mO209YVMoa1ttPj4yXXwwLGtbbSs0Pj4yXXwwLDgpfDA7YT1mO2tbYT4+Ml09bTtrW2ErND4+Ml09TDtrW2g+PjJdPTc7d2hpbGUoMSl7aWYoKGtbaD4+Ml18MCk8MClicmVhaztpWyhrW2U+PjJdfDApKyhrW2g+PjJdfDApPj4wXT1rW2Y+PjJdJjEyN3wxMjg7bT1mO209YVMoa1ttPj4yXXwwLGtbbSs0Pj4yXXwwLDcpfDA7YT1mO2tbYT4+Ml09bTtrW2ErND4+Ml09TDtrW2g+PjJdPShrW2g+PjJdfDApKy0xfWtbZD4+Ml09OTthPWtbZD4+Ml18MDtyPW47cmV0dXJuIGF8MH1rW20+PjJdPTA7ZG97YT0oa1tmPj4yXSYxMjd8MTI4KSYyNTU7Yz1rW20+PjJdfDA7a1ttPj4yXT1jKzE7aVtnK2M+PjBdPWE7Yz1mO2M9YVMoa1tjPj4yXXwwLGtbYys0Pj4yXXwwLDcpfDA7YT1mO2tbYT4+Ml09YztrW2ErND4+Ml09TDthPWZ9d2hpbGUoKGtbYT4+Ml18MCkhPTB8KGtbYSs0Pj4yXXwwKSE9MCk7aVtnPj4wXT0obFtnPj4wXXwwKSYxMjc7a1toPj4yXT0wO2tbaj4+Ml09KGtbbT4+Ml18MCktMTt3aGlsZSgxKXtpZigoa1tqPj4yXXwwKTwwKWJyZWFrO2lbKGtbZT4+Ml18MCkrKGtbaD4+Ml18MCk+PjBdPWlbZysoa1tqPj4yXXwwKT4+MF18MDtrW2o+PjJdPShrW2o+PjJdfDApKy0xO2tbaD4+Ml09KGtbaD4+Ml18MCkrMX1rW2Q+PjJdPWtbbT4+Ml07YT1rW2Q+PjJdfDA7cj1uO3JldHVybiBhfDB9ZnVuY3Rpb24gTU0oYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsbD0wLG09MCxuPTAsbz0wO289cjtyPXIrMzJ8MDtmPW8rMjB8MDtnPW8rMTZ8MDtoPW8rMTJ8MDtsPW8rOHwwO209bys0fDA7bj1vO2tbZj4+Ml09YTtrW2c+PjJdPWI7a1toPj4yXT1jO2tbbD4+Ml09ZDtrW20+PjJdPWU7alsoa1ttPj4yXXwwKSs4Pj4xXT0xO2U9WHgoa1ttPj4yXXwwLChrW2g+PjJdfDApKzJ8MCl8MDtrW24+PjJdPWU7aWYoZSl7bj1rW24+PjJdfDA7cj1vO3JldHVybiBufDB9Yj1rW2Y+PjJdfDA7Zj1rW2c+PjJdfDA7Yz1rW2g+PjJdfDA7ZD1rWyhrW20+PjJdfDApKzE2Pj4yXXwwO2lmKGtbbD4+Ml18MCl7bD1tSShiLGYsYyxkKXwwO2tbbj4+Ml09bH1lbHNle2w9X2goYixmLGMsZCl8MDtrW24+PjJdPWx9aWYoIShrW24+PjJdfDApKXtpWyhrWyhrW20+PjJdfDApKzE2Pj4yXXwwKSsoa1toPj4yXXwwKT4+MF09MDtpWyhrWyhrW20+PjJdfDApKzE2Pj4yXXwwKSsoKGtbaD4+Ml18MCkrMSk+PjBdPTA7alsoa1ttPj4yXXwwKSs4Pj4xXT01Mjg7a1soa1ttPj4yXXwwKSsxMj4+Ml09a1toPj4yXTtuPWtbbj4+Ml18MDtyPW87cmV0dXJuIG58MH1lbHNle2ZoKGtbbT4+Ml18MCk7bj1rW24+PjJdfDA7cj1vO3JldHVybiBufDB9cmV0dXJuIDB9ZnVuY3Rpb24gTk0oYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wO2Y9cjtyPXIrMTZ8MDtjPWYrOHwwO2Q9Zis0fDA7ZT1mO2tbYz4+Ml09YTtrW2Q+PjJdPWI7a1tlPj4yXT0oa1soa1soa1tjPj4yXXwwKSsxMjArKGlbKGtbYz4+Ml18MCkrNjg+PjBdPDwyKT4+Ml18MCkrNjA+PjJdfDApLShrWyhrW2M+PjJdfDApKzE2Kzg+PjJdfDApO2lmKChtWyhrW2M+PjJdfDApKzE2KzE2Pj4xXXwwKT4+PjA8KGtbZT4+Ml18MCk+Pj4wKWtbZT4+Ml09bVsoa1tjPj4yXXwwKSsxNisxNj4+MV07a1trW2Q+PjJdPj4yXT1rW2U+PjJdO3I9ZjtyZXR1cm4ga1soa1tjPj4yXXwwKSsxNis4Pj4yXXwwfWZ1bmN0aW9uIE9NKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MCxlPTAsZj0wO2Y9cjtyPXIrMTZ8MDtiPWYrMTJ8MDtjPWYrOHwwO2U9Zis0fDA7ZD1mO2tbYz4+Ml09YTthPShrW2M+PjJdfDApKzQwfDA7YT1ZRihrWyhrW2M+PjJdfDApKzE2Pj4yXXwwLDAsa1thPj4yXXwwLGtbYSs0Pj4yXXwwLDAsZSl8MDtrW2Q+PjJdPWE7aWYoa1tkPj4yXXwwKXtrW2I+PjJdPWtbZD4+Ml07ZT1rW2I+PjJdfDA7cj1mO3JldHVybiBlfDB9aWYoa1tlPj4yXXwwKXtlPV9qKDczNDkxKXwwO2tbYj4+Ml09ZTtlPWtbYj4+Ml18MDtyPWY7cmV0dXJuIGV8MH1lbHNle2lbKGtbYz4+Ml18MCkrMz4+MF09MDtrWyhrW2M+PjJdfDApKzU2Pj4yXT0wO2tbYj4+Ml09MDtlPWtbYj4+Ml18MDtyPWY7cmV0dXJuIGV8MH1yZXR1cm4gMH1mdW5jdGlvbiBQTShhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wLGg9MCxpPTA7aT1yO3I9ciszMnwwO2Q9aSsyMHwwO2U9aSsxNnwwO2Y9aSsxMnwwO2M9aSs4fDA7Zz1pKzR8MDtoPWk7a1tlPj4yXT1hO2tbZj4+Ml09YjtrW2c+PjJdPWtbKGtbZT4+Ml18MCkrMTI+PjJdO2tbaD4+Ml09a1soa1tmPj4yXXwwKSsxMj4+Ml07Yj1rW2U+PjJdfDA7aWYoISgobVsoa1tlPj4yXXwwKSs4Pj4xXXwwfChtWyhrW2Y+PjJdfDApKzg+PjFdfDApKSYxNjM4NCkpe2Y9b1Ioa1tiKzE2Pj4yXXwwLGtbKGtbZj4+Ml18MCkrMTY+PjJdfDAsKGtbZz4+Ml18MCk+KGtbaD4+Ml18MCk/a1toPj4yXXwwOmtbZz4+Ml18MCl8MDtrW2M+PjJdPWY7aWYoa1tjPj4yXXwwKXtrW2Q+PjJdPWtbYz4+Ml07aD1rW2Q+PjJdfDA7cj1pO3JldHVybiBofDB9ZWxzZXtrW2Q+PjJdPShrW2c+PjJdfDApLShrW2g+PjJdfDApO2g9a1tkPj4yXXwwO3I9aTtyZXR1cm4gaHwwfX1hPWtbZT4+Ml18MDtpZigobVtiKzg+PjFdfDApJihtWyhrW2Y+PjJdfDApKzg+PjFdfDApJjE2Mzg0KXtrW2Q+PjJdPShrW2E+PjJdfDApLShrW2tbZj4+Ml0+PjJdfDApO2g9a1tkPj4yXXwwO3I9aTtyZXR1cm4gaHwwfWlmKChtW2ErOD4+MV18MCkmMTYzODQpaWYockcoa1soa1tmPj4yXXwwKSsxNj4+Ml18MCxrWyhrW2Y+PjJdfDApKzEyPj4yXXwwKXwwKXtrW2Q+PjJdPShrW2tbZT4+Ml0+PjJdfDApLShrW2g+PjJdfDApO2g9a1tkPj4yXXwwO3I9aTtyZXR1cm4gaHwwfWVsc2V7a1tkPj4yXT0tMTtoPWtbZD4+Ml18MDtyPWk7cmV0dXJuIGh8MH1lbHNlIGlmKHJHKGtbKGtbZT4+Ml18MCkrMTY+PjJdfDAsa1soa1tlPj4yXXwwKSsxMj4+Ml18MCl8MCl7a1tkPj4yXT0oa1tnPj4yXXwwKS0oa1trW2Y+PjJdPj4yXXwwKTtoPWtbZD4+Ml18MDtyPWk7cmV0dXJuIGh8MH1lbHNle2tbZD4+Ml09MTtoPWtbZD4+Ml18MDtyPWk7cmV0dXJuIGh8MH1yZXR1cm4gMH1mdW5jdGlvbiBRTShhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTA7ZD1yO3I9cisxNnwwO2I9ZCs0fDA7Yz1kO2tbYz4+Ml09YTtpZighKG96KGtbKGtbYz4+Ml18MCkrMTY+PjJdfDAsa1tjPj4yXXwwLGtbKGtbYz4+Ml18MCkrMTI+PjJdfDAsaVsoa1tjPj4yXXwwKSsxMD4+MF18MCl8MCkpe2pbYj4+MV09MDthPWpbYj4+MV18MDtyPWQ7cmV0dXJuIGF8MH1pZighKFdpKGtbKGtbYz4+Ml18MCkrMTY+PjJdfDAsa1tjPj4yXXwwLGtbKGtbYz4+Ml18MCkrMTI+PjJdfDAsaVsoa1tjPj4yXXwwKSsxMD4+MF18MCl8MCkpe2pbYj4+MV09NDthPWpbYj4+MV18MDtyPWQ7cmV0dXJuIGF8MH1lbHNle2pbYj4+MV09ODthPWpbYj4+MV18MDtyPWQ7cmV0dXJuIGF8MH1yZXR1cm4gMH1mdW5jdGlvbiBSTShhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTA7ZD1yO3I9cisxNnwwO2I9ZCs0fDA7Yz1kO2tbYz4+Ml09YTtpZihZeChrW2M+PjJdfDAsKGtbKGtbYz4+Ml18MCkrMTI+PjJdfDApKzJ8MCwxKXwwKXtrW2I+PjJdPTc7YT1rW2I+PjJdfDA7cj1kO3JldHVybiBhfDB9ZWxzZXtpWyhrWyhrW2M+PjJdfDApKzE2Pj4yXXwwKSsoa1soa1tjPj4yXXwwKSsxMj4+Ml18MCk+PjBdPTA7aVsoa1soa1tjPj4yXXwwKSsxNj4+Ml18MCkrKChrWyhrW2M+PjJdfDApKzEyPj4yXXwwKSsxKT4+MF09MDthPShrW2M+PjJdfDApKzh8MDtqW2E+PjFdPW1bYT4+MV18MHw1MTI7a1tiPj4yXT0wO2E9a1tiPj4yXXwwO3I9ZDtyZXR1cm4gYXwwfXJldHVybiAwfWZ1bmN0aW9uIFNNKGEpe2E9YXwwO3ZhciBiPTAsYz0wO2M9cjtyPXIrMTZ8MDtiPWM7a1tiPj4yXT1hO3NoKGtbYj4+Ml18MCk7alsoa1tiPj4yXXwwKSs4Pj4xXT00O3I9YztyZXR1cm4ga1tiPj4yXXwwfWZ1bmN0aW9uIFRNKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MCxlPTA7ZT1yO3I9cisxNnwwO2M9ZSs4fDA7Yj1lKzR8MDtkPWU7a1tjPj4yXT1hO2lmKGtbKGtbYz4+Ml18MCkrMTg0Pj4yXXwwKXtrW2I+PjJdPWtbKGtbYz4+Ml18MCkrMTg0Pj4yXTt3aGlsZSgxKXthPWtbYj4+Ml18MDtpZighKGtbKGtbYj4+Ml18MCkrND4+Ml18MCkpYnJlYWs7a1tiPj4yXT1rW2ErND4+Ml19SkkoYSl8MDtrWyhrW2M+PjJdfDApKzE4ND4+Ml09MDtrWyhrW2M+PjJdfDApKzE5Mj4+Ml09MH1aTShrW2M+PjJdfDApO2lmKGtbKGtbYz4+Ml18MCkrOTI+PjJdfDApWUMoa1soa1tjPj4yXXwwKSs5Mj4+Ml18MCxrWyhrW2M+PjJdfDApKzI0Pj4yXXwwKTt3aGlsZSgxKXthPWtbYz4+Ml18MDtpZighKGtbKGtbYz4+Ml18MCkrMTg4Pj4yXXwwKSlicmVhaztrW2Q+PjJdPWtbYSsxODg+PjJdO2tbKGtbYz4+Ml18MCkrMTg4Pj4yXT1rWyhrW2Q+PjJdfDApKzQ+PjJdO19NKGtbZD4+Ml18MCl9aWYoIShrW2ErMjA0Pj4yXXwwKSl7cj1lO3JldHVybn1WSShrW2tbYz4+Ml0+PjJdfDAsKGtbYz4+Ml18MCkrMjA0fDAsLTEsMCk7cj1lO3JldHVybn1mdW5jdGlvbiBVTShhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wLGg9MCxpPTAsaj0wLG09MCxuPTAsbz0wLHA9MCxxPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTAsRT0wLEY9MCxHPTAsSD0wLEk9MDtIPXI7cj1yKzE0NHwwO0E9SCszMnwwO0M9SCsyNHwwO0I9SCsxNnwwO3o9SCs4fDA7Yz1IKzEyOHwwO2Q9SCsxMjR8MDtJPUgrMTIwfDA7ZT1IKzExNnwwO2g9SCsxMTJ8MDt3PUgrMTA4fDA7aT1IKzEwNHwwO209SCsxMDB8MDt1PUgrOTZ8MDtuPUgrOTJ8MDtvPUgrODh8MDt2PUgrODR8MDtGPUgrODB8MDtFPUgrNzZ8MDt0PUgrNzJ8MDtqPUg7eD1IKzY4fDA7eT1IKzY0fDA7Zz1IKzYwfDA7Zj1IKzU2fDA7cD1IKzUyfDA7RD1IKzQ4fDA7cT1IKzQ0fDA7cz1IKzQwfDA7a1tkPj4yXT1hO2tbST4+Ml09YjtrW2g+PjJdPTA7a1t3Pj4yXT0wO2tbaT4+Ml09MDtiPVZNKGtbZD4+Ml18MCxrW0k+PjJdfDApfDA7a1t3Pj4yXT1iO2tbZT4+Ml09MDt3aGlsZSgxKXtpZihrW3c+PjJdfDApYnJlYWs7aWYoKGtbZT4+Ml18MCk+PShrWyhrW2Q+PjJdfDApKzIwPj4yXXwwKSlicmVhaztrW20+PjJdPWtbKGtbKGtbZD4+Ml18MCkrMTY+PjJdfDApKyhrW2U+PjJdPDw0KSs0Pj4yXTtpZihwaShrW20+PjJdfDApfDApe2tbaT4+Ml09MTt3ZyhrW20+PjJdfDApO0k9WmYoa1ttPj4yXXwwKXwwO2tbdT4+Ml09STtpZigobFsoa1soa1tkPj4yXXwwKSsxNj4+Ml18MCkrKGtbZT4+Ml08PDQpKzg+PjBdfDB8MCkhPTE/KEk9NDE4MTIrKERnKGtbdT4+Ml18MCl8MCl8MCwobFtJPj4wXXwwfDApIT0wKTowKWtbaD4+Ml09KGtbaD4+Ml18MCkrMTtJPU10KGtbdT4+Ml18MCl8MDtrW3c+PjJdPUl9a1tlPj4yXT0oa1tlPj4yXXwwKSsxfWlmKGtbdz4+Ml18MCl7a1tjPj4yXT1rW3c+PjJdO0k9a1tjPj4yXXwwO3I9SDtyZXR1cm4gSXwwfWlmKCgoa1tpPj4yXXwwKSE9MD8oa1soa1tkPj4yXXwwKSsyMDQ+PjJdfDApIT0wOjApPyhJPWJjW2tbKGtbZD4+Ml18MCkrMjA0Pj4yXSYyNTVdKGtbKGtbZD4+Ml18MCkrMjAwPj4yXXwwKXwwLGtbdz4+Ml09SSwoa1t3Pj4yXXwwKSE9MCk6MCl7a1tjPj4yXT01MzE7ST1rW2M+PjJdfDA7cj1IO3JldHVybiBJfDB9ST0wPT0oVGYoU2koa1soa1soa1tkPj4yXXwwKSsxNj4+Ml18MCkrND4+Ml18MCl8MCl8MCk7aWYoSXwoa1toPj4yXXwwKTw9MSl7a1tlPj4yXT0wO3doaWxlKDEpe2lmKGtbdz4+Ml18MClicmVhaztpZigoa1tlPj4yXXwwKT49KGtbKGtbZD4+Ml18MCkrMjA+PjJdfDApKWJyZWFrO2tbbj4+Ml09a1soa1soa1tkPj4yXXwwKSsxNj4+Ml18MCkrKGtbZT4+Ml08PDQpKzQ+PjJdO2lmKGtbbj4+Ml18MCl7ST1YZyhrW24+PjJdfDAsMCl8MDtrW3c+PjJdPUl9a1tlPj4yXT0oa1tlPj4yXXwwKSsxfWtbZT4+Ml09MDt3aGlsZSgxKXtpZihrW3c+PjJdfDApYnJlYWs7aWYoKGtbZT4+Ml18MCk+PShrWyhrW2Q+PjJdfDApKzIwPj4yXXwwKSlicmVhaztrW28+PjJdPWtbKGtbKGtbZD4+Ml18MCkrMTY+PjJdfDApKyhrW2U+PjJdPDw0KSs0Pj4yXTtpZihrW28+PjJdfDApe0k9V2coa1tvPj4yXXwwLDApfDA7a1t3Pj4yXT1JfWtbZT4+Ml09KGtbZT4+Ml18MCkrMX1pZighKGtbdz4+Ml18MCkpV00oa1tkPj4yXXwwKXwwfWVsc2V7a1t2Pj4yXT1rW2tbZD4+Ml0+PjJdO2tbRj4+Ml09MDtJPVNpKGtbKGtbKGtbZD4+Ml18MCkrMTY+PjJdfDApKzQ+PjJdfDApfDA7a1tFPj4yXT1JO2tbdD4+Ml09MDtJPWo7a1tJPj4yXT0wO2tbSSs0Pj4yXT0wO2tbeT4+Ml09MDtJPVRmKGtbRT4+Ml18MCl8MDtrW2c+PjJdPUk7ST1rW2Q+PjJdfDA7a1t6Pj4yXT1rW0U+PjJdO0k9UWgoSSw0MTgxOCx6KXwwO2tbRj4+Ml09STtpZighKGtbRj4+Ml18MCkpe2tbYz4+Ml09NztJPWtbYz4+Ml18MDtyPUg7cmV0dXJuIEl8MH1kb3tpZihrW3k+PjJdfDApe2lmKChrW3k+PjJdfDApPjEwMCl7Rz0zNTticmVha31pZigoa1t5Pj4yXXwwKT09MSl7a1tDPj4yXT1rW0Y+PjJdOyRkKDEzLDQxODQ4LEMpfX1rW3k+PjJdPShrW3k+PjJdfDApKzE7YWUoNCxmKTtJPShrW0Y+PjJdfDApKyhrW2c+PjJdfDApfDA7RT1rW2Y+PjJdJjI1NTtrW0E+PjJdPShrW2Y+PjJdfDApPj4+OCYxNjc3NzIxNTtrW0ErND4+Ml09RTtfZCgxMyxJLDQxODYzLEEpfDA7ST1ncyhrW3Y+PjJdfDAsa1tGPj4yXXwwLDAseCl8MDtrW3c+PjJdPUl9d2hpbGUoKGtbdz4+Ml18MCk9PTA/KGtbeD4+Ml18MCkhPTA6MCk7aWYoKEd8MCk9PTM1KXtrW0I+PjJdPWtbRj4+Ml07JGQoMTMsNDE4MzQsQik7SHIoa1t2Pj4yXXwwLGtbRj4+Ml18MCwwKXwwfWlmKCEoa1t3Pj4yXXwwKSl7ST1JTChrW3Y+PjJdfDAsa1tGPj4yXXwwLHQsMTY0MDYsMCl8MDtrW3c+PjJdPUl9aWYoa1t3Pj4yXXwwKXtiZyhrW2Q+PjJdfDAsa1tGPj4yXXwwKTtrW2M+PjJdPWtbdz4+Ml07ST1rW2M+PjJdfDA7cj1IO3JldHVybiBJfDB9a1tlPj4yXT0wO3doaWxlKDEpe2lmKChrW2U+PjJdfDApPj0oa1soa1tkPj4yXXwwKSsyMD4+Ml18MCkpYnJlYWs7a1twPj4yXT1rWyhrWyhrW2Q+PjJdfDApKzE2Pj4yXXwwKSsoa1tlPj4yXTw8NCkrND4+Ml07aWYoKChwaShrW3A+PjJdfDApfDApIT0wPyhJPVhNKGtbcD4+Ml18MCl8MCxrW0Q+PjJdPUksKGtbRD4+Ml18MCkhPTApOjApPyhCPWtbdD4+Ml18MCxDPWtbRD4+Ml18MCxJPShUZihrW0Q+PjJdfDApfDApKzF8MCxFPWosRT1TZyhCLEMsSSxrW0U+PjJdfDAsa1tFKzQ+PjJdfDApfDAsa1t3Pj4yXT1FLEU9KFRmKGtbRD4+Ml18MCl8MCkrMXwwLEk9aixFPSRSKGtbST4+Ml18MCxrW0krND4+Ml18MCxFfDAsKChFfDApPDApPDwzMT4+MzF8MCl8MCxJPWosa1tJPj4yXT1FLGtbSSs0Pj4yXT1MLChrW3c+PjJdfDApIT0wKTowKXtHPTQ4O2JyZWFrfWtbZT4+Ml09KGtbZT4+Ml18MCkrMX1pZigoR3wwKT09NDgpe2VMKGtbdD4+Ml18MCk7SHIoa1t2Pj4yXXwwLGtbRj4+Ml18MCwwKXwwO2JnKGtbZD4+Ml18MCxrW0Y+PjJdfDApO2tbYz4+Ml09a1t3Pj4yXTtJPWtbYz4+Ml18MDtyPUg7cmV0dXJuIEl8MH1pZigwPT0oKGxzKGtbdD4+Ml18MCl8MCkmMTAyNHwwKT8oST1GcihrW3Q+PjJdfDAsMil8MCxrW3c+PjJdPUksMCE9KEl8MCkpOjApe2VMKGtbdD4+Ml18MCk7SHIoa1t2Pj4yXXwwLGtbRj4+Ml18MCwwKXwwO2JnKGtbZD4+Ml18MCxrW0Y+PjJdfDApO2tbYz4+Ml09a1t3Pj4yXTtJPWtbYz4+Ml18MDtyPUg7cmV0dXJuIEl8MH1rW2U+PjJdPTA7d2hpbGUoMSl7aWYoa1t3Pj4yXXwwKWJyZWFrO2lmKChrW2U+PjJdfDApPj0oa1soa1tkPj4yXXwwKSsyMD4+Ml18MCkpYnJlYWs7a1txPj4yXT1rWyhrWyhrW2Q+PjJdfDApKzE2Pj4yXXwwKSsoa1tlPj4yXTw8NCkrND4+Ml07aWYoa1txPj4yXXwwKXtJPVhnKGtbcT4+Ml18MCxrW0Y+PjJdfDApfDA7a1t3Pj4yXT1JfWtbZT4+Ml09KGtbZT4+Ml18MCkrMX1lTChrW3Q+PjJdfDApO2lmKGtbdz4+Ml18MCl7Ymcoa1tkPj4yXXwwLGtbRj4+Ml18MCk7a1tjPj4yXT1rW3c+PjJdO0k9a1tjPj4yXXwwO3I9SDtyZXR1cm4gSXwwfUk9SHIoa1t2Pj4yXXwwLGtbRj4+Ml18MCwxKXwwO2tbdz4+Ml09STtiZyhrW2Q+PjJdfDAsa1tGPj4yXXwwKTtrW0Y+PjJdPTA7aWYoa1t3Pj4yXXwwKXtrW2M+PjJdPWtbdz4+Ml07ST1rW2M+PjJdfDA7cj1IO3JldHVybiBJfDB9Z2soKTtrW2U+PjJdPTA7d2hpbGUoMSl7aWYoKGtbZT4+Ml18MCk+PShrWyhrW2Q+PjJdfDApKzIwPj4yXXwwKSlicmVhaztrW3M+PjJdPWtbKGtbKGtbZD4+Ml18MCkrMTY+PjJdfDApKyhrW2U+PjJdPDw0KSs0Pj4yXTtpZihrW3M+PjJdfDApV2coa1tzPj4yXXwwLDEpfDA7a1tlPj4yXT0oa1tlPj4yXXwwKSsxfWhrKCk7V00oa1tkPj4yXXwwKXwwfWtbYz4+Ml09a1t3Pj4yXTtJPWtbYz4+Ml18MDtyPUg7cmV0dXJuIEl8MH1mdW5jdGlvbiBWTShhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wLGg9MCxpPTAsaj0wO2o9cjtyPXIrMzJ8MDtnPWorMjR8MDtjPWorMjB8MDtkPWorMTZ8MDtpPWorMTJ8MDtoPWorOHwwO2Y9ais0fDA7ZT1qO2tbZz4+Ml09YTtrW2M+PjJdPWI7a1tpPj4yXT0wO2tbaD4+Ml09a1soa1tnPj4yXXwwKSszNDA+PjJdO2tbKGtbZz4+Ml18MCkrMzQwPj4yXT0wO2tbZD4+Ml09MDt3aGlsZSgxKXtpZihrW2k+PjJdfDApe2M9ODticmVha31pZigoa1tkPj4yXXwwKT49KGtbKGtbZz4+Ml18MCkrMzE2Pj4yXXwwKSl7Yz04O2JyZWFrfWtbZT4+Ml09a1soa1soa1toPj4yXXwwKSsoa1tkPj4yXTw8Mik+PjJdfDApKzg+PjJdO2lmKChrW2U+PjJdfDApIT0wPyhiPWtbKGtba1tlPj4yXT4+Ml18MCkrNjA+PjJdfDAsa1tmPj4yXT1iLChifDApIT0wKTowKXtiPWJjW2tbZj4+Ml0mMjU1XShrW2U+PjJdfDApfDA7a1tpPj4yXT1iO3dKKGtbYz4+Ml18MCxrW2U+PjJdfDApfWtbZD4+Ml09KGtbZD4+Ml18MCkrMX1pZigoY3wwKT09OCl7a1soa1tnPj4yXXwwKSszNDA+PjJdPWtbaD4+Ml07cj1qO3JldHVybiBrW2k+PjJdfDB9cmV0dXJuIDB9ZnVuY3Rpb24gV00oYSl7YT1hfDA7dmFyIGI9MCxjPTA7Yj1yO3I9cisxNnwwO2M9YjtrW2M+PjJdPWE7QnUoa1tjPj4yXXwwLDY0KTtyPWI7cmV0dXJuIDB9ZnVuY3Rpb24gWE0oYSl7YT1hfDA7dmFyIGI9MCxjPTA7Yj1yO3I9cisxNnwwO2M9YjtrW2M+PjJdPWE7YT1ZTShrW2tbKGtbYz4+Ml18MCkrND4+Ml0+PjJdfDApfDA7cj1iO3JldHVybiBhfDB9ZnVuY3Rpb24gWU0oYSl7YT1hfDA7dmFyIGI9MCxjPTA7Yz1yO3I9cisxNnwwO2I9YztrW2I+PjJdPWE7cj1jO3JldHVybiBrWyhrW2I+PjJdfDApKzE4MD4+Ml18MH1mdW5jdGlvbiBaTShhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTAsZT0wO2U9cjtyPXIrMTZ8MDtiPWUrOHwwO2M9ZSs0fDA7ZD1lO2tbYj4+Ml09YTtpZighKGtbKGtbYj4+Ml18MCkrMTEyPj4yXXwwKSl7cj1lO3JldHVybn1rW2M+PjJdPTA7d2hpbGUoMSl7aWYoKGtbYz4+Ml18MCk+PShrWyhrW2I+PjJdfDApKzI4Pj4yXXwwKSlicmVhaztrW2Q+PjJdPWtbKGtbKGtbYj4+Ml18MCkrMTEyPj4yXXwwKSsoa1tjPj4yXTw8Mik+PjJdO2lmKGtbZD4+Ml18MCl7b0ooa1tiPj4yXXwwLGtbZD4+Ml18MCk7a1soa1soa1tiPj4yXXwwKSsxMTI+PjJdfDApKyhrW2M+PjJdPDwyKT4+Ml09MH1rW2M+PjJdPShrW2M+PjJdfDApKzF9cj1lO3JldHVybn1mdW5jdGlvbiBfTShhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTAsZT0wLGY9MDtmPXI7cj1yKzE2fDA7Yj1mKzEyfDA7ZT1mKzh8MDtjPWYrNHwwO2Q9ZjtrW2I+PjJdPWE7a1tjPj4yXT0oa1tiPj4yXXwwKSs4MDtrW2Q+PjJdPShrW2M+PjJdfDApKygoa1soa1tiPj4yXXwwKSs2MD4+Ml18MCkqNDB8MCk7a1tlPj4yXT0wO3doaWxlKDEpe2lmKChrW2U+PjJdfDApPj0oa1soa1tiPj4yXXwwKSs2ND4+Ml18MCkpYnJlYWs7b0ooa1trW2I+PjJdPj4yXXwwLGtbKGtbZD4+Ml18MCkrKGtbZT4+Ml08PDIpPj4yXXwwKTtrW2U+PjJdPShrW2U+PjJdfDApKzF9WUMoa1tjPj4yXXwwLGtbKGtbYj4+Ml18MCkrNjA+PjJdfDApO1ZJKGtba1trW2I+PjJdPj4yXT4+Ml18MCwoa1tiPj4yXXwwKSs0MHwwLC0xLDApO2JnKGtba1trW2I+PjJdPj4yXT4+Ml18MCxrW2I+PjJdfDApO3I9ZjtyZXR1cm59ZnVuY3Rpb24gJE0oYSl7YT1hfDA7dmFyIGI9MCxjPTA7Yz1yO3I9cisxNnwwO2I9YztrW2I+PjJdPWE7cj1jO3JldHVybiBrWzU1ODgrKGtbYj4+Ml08PDIpPj4yXXwwfWZ1bmN0aW9uIGFOKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsbj0wLG89MCxxPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTAsRT0wLEY9MCxHPTAsSD0wLEk9MCxKPTAsSz0wLEw9MCxNPTA7TD1yO3I9cisxOTJ8MDt5PUwrOTZ8MDt4PUwrODh8MDt3PUwrODB8MDt2PUwrNzJ8MDtJPUwrNjR8MDtIPUwrNTZ8MDt1PUwrNDh8MDt0PUwrNDB8MDtzPUwrMzJ8MDtBPUwrMjR8MDt6PUwrMTZ8MDtFPUwrOHwwO3E9TDtkPUwrMTg0fDA7ZT1MKzE4MHwwO009TCsxNzZ8MDtLPUwrMTcyfDA7Sj1MKzE0NHwwO0I9TCsxNDB8MDtEPUwrMTM2fDA7Qz1MKzEzMnwwO0Y9TCsxMjh8MDtqPUwrMTI0fDA7bj1MKzEyMHwwO0c9TCsxMTZ8MDtvPUwrMTEyfDA7Zz1MKzEwOHwwO2Y9TCsxMDR8MDtoPUwrMTAwfDA7a1tkPj4yXT1hO2tbZT4+Ml09YjtrW00+PjJdPWM7a1tLPj4yXT1rW2U+PjJdO25nKEosMCxrW2U+PjJdfDAsa1tNPj4yXXwwLDApO2E6ZG8gc3dpdGNoKGlbKGtbZD4+Ml18MCkrMT4+MF18MCl7Y2FzZSAtNjp7a1tEPj4yXT1rWyhrW2Q+PjJdfDApKzE2Pj4yXTtrW3E+PjJdPW1bKGtbRD4+Ml18MCkrNj4+MV07QkEoSiw0MTkxNSxxKTtrW0I+PjJdPTA7d2hpbGUoMSl7aWYoKGtbQj4+Ml18MCk+PShtWyhrW0Q+PjJdfDApKzY+PjFdfDApKWJyZWFrO2tbQz4+Ml09a1soa1tEPj4yXXwwKSsyMCsoa1tCPj4yXTw8Mik+PjJdO2lmKGtbQz4+Ml18MClkPWtba1tDPj4yXT4+Ml18MDtlbHNlIGQ9MTg0MDI7a1tGPj4yXT1kO009KHJSKGtbRj4+Ml18MCwzNDgzNCl8MCk9PTA7a1tGPj4yXT1NPzQxOTIwOmQ7TT1rW0Y+PjJdfDA7a1tFPj4yXT0obFsoa1soa1tEPj4yXXwwKSsxNj4+Ml18MCkrKGtbQj4+Ml18MCk+PjBdfDApIT0wPzI4MjY0OjE4NDAyO2tbRSs0Pj4yXT1NO0JBKEosNDE5MjIsRSk7a1tCPj4yXT0oa1tCPj4yXXwwKSsxfUNBKEosMzQ3MDYsMSk7YnJlYWt9Y2FzZSAtNDp7a1tqPj4yXT1rWyhrW2Q+PjJdfDApKzE2Pj4yXTtrW3o+PjJdPWtba1tqPj4yXT4+Ml07QkEoSiw0MTkyOCx6KTticmVha31jYXNlIC01OntrW24+PjJdPWtbKGtbZD4+Ml18MCkrMTY+PjJdO009aVtrW24+PjJdPj4wXXwwO2tbQT4+Ml09a1soa1tuPj4yXXwwKSsyMD4+Ml07a1tBKzQ+PjJdPU07QkEoSiw0MTkzNixBKTticmVha31jYXNlIC0xMzp7SD1rWyhrW2Q+PjJdfDApKzE2Pj4yXXwwO0k9a1tIKzQ+PjJdfDA7TT1zO2tbTT4+Ml09a1tIPj4yXTtrW00rND4+Ml09STtCQShKLDI4MjY2LHMpO2JyZWFrfWNhc2UgLTE0OntrW3Q+PjJdPWtbKGtbZD4+Ml18MCkrMTY+PjJdO0JBKEosNDE5NDMsdCk7YnJlYWt9Y2FzZSAtMTI6e3BbdT4+M109K3Bba1soa1tkPj4yXXwwKSsxNj4+Ml0+PjNdO0JBKEosNDE5NDYsdSk7YnJlYWt9Y2FzZSAtODp7a1tHPj4yXT1rWyhrW2Q+PjJdfDApKzE2Pj4yXTtkPWtbRz4+Ml18MDtpZihtWyhrW0c+PjJdfDApKzg+PjFdJjIpe2tbSz4+Ml09a1tkKzE2Pj4yXTticmVhayBhfWU9a1tHPj4yXXwwO2lmKG1bZCs4Pj4xXSY0KXtHPWU7ST1rW0crND4+Ml18MDtNPUg7a1tNPj4yXT1rW0c+PjJdO2tbTSs0Pj4yXT1JO0JBKEosMjgyNjYsSCk7YnJlYWsgYX1kPWtbRz4+Ml18MDtpZihtW2UrOD4+MV0mOCl7cFtJPj4zXT0rcFtkPj4zXTtCQShKLDQxOTQ2LEkpO2JyZWFrIGF9aWYobVtkKzg+PjFdJjEpe2tbSz4+Ml09Mzk2OTE7YnJlYWsgYX1lbHNle2tbSz4+Ml09NDE5NTI7YnJlYWsgYX19Y2FzZSAtMTA6e2tbbz4+Ml09a1soa1soa1tkPj4yXXwwKSsxNj4+Ml18MCkrOD4+Ml07a1t2Pj4yXT1rW28+PjJdO0JBKEosNDE5NTksdik7YnJlYWt9Y2FzZSAtMTU6e2tbZj4+Ml09a1soa1tkPj4yXXwwKSsxNj4+Ml07a1toPj4yXT1rW2tbZj4+Ml0+PjJdO2tbZz4+Ml09MTt3aGlsZSgxKXtpZigoa1tnPj4yXXwwKT49KGtbaD4+Ml18MCkpYnJlYWs7a1t3Pj4yXT1rWyhrW2Y+PjJdfDApKyhrW2c+PjJdPDwyKT4+Ml07QkEoSiw0MTk2Nyx3KTtrW2c+PjJdPShrW2c+PjJdfDApKzF9aVtrW2U+PjJdPj4wXT05MTtDQShKLDQxOTcxLDEpO2JyZWFrfWNhc2UgLTE4OntCQShKLDQxOTczLHgpO2JyZWFrfWNhc2UgLTE5OntpW2tbZT4+Ml0+PjBdPTA7YnJlYWt9Y2FzZSAtMjA6e2tbeT4+Ml09a1trWyhrW2Q+PjJdfDApKzE2Pj4yXT4+Ml07QkEoSiwxODM5MSx5KTticmVha31kZWZhdWx0OntrW0s+PjJdPWtbKGtbZD4+Ml18MCkrMTY+PjJdO2lmKCEoa1tLPj4yXXwwKSl7a1tLPj4yXT1rW2U+PjJdO2lba1tlPj4yXT4+MF09MH19fXdoaWxlKDApO3BnKEopfDA7cj1MO3JldHVybiBrW0s+PjJdfDB9ZnVuY3Rpb24gYk4oYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MDtkPXI7cj1yKzE2fDA7ZT1kKzh8MDtmPWQ7a1tlPj4yXT1hO2E9ZjtrW2E+PjJdPWI7a1thKzQ+PjJdPWM7c2goa1tlPj4yXXwwKTtiPWY7Yz1rW2IrND4+Ml18MDthPWtbZT4+Ml18MDtrW2E+PjJdPWtbYj4+Ml07a1thKzQ+PjJdPWM7alsoa1tlPj4yXXwwKSs4Pj4xXT00O3I9ZDtyZXR1cm59ZnVuY3Rpb24gY04oYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wLGU9MCxmPTAsZz0wO2c9cjtyPXIrMTZ8MDtiPWcrNHwwO2Y9ZztlPWcrMTB8MDtjPWcrOXwwO2Q9Zys4fDA7a1tiPj4yXT1hO2tbZj4+Ml09MDtpW2U+PjBdPTA7aWYoKGtbKGtbYj4+Ml18MCkrMTI+PjJdfDApPjEpe2lbYz4+MF09aVtrWyhrW2I+PjJdfDApKzE2Pj4yXT4+MF18MDtpW2Q+PjBdPWlbKGtbKGtbYj4+Ml18MCkrMTY+PjJdfDApKzE+PjBdfDA7aWYoKGxbYz4+MF18MCk9PTI1ND8obFtkPj4wXXwwKT09MjU1OjApaVtlPj4wXT0zO2lmKChsW2M+PjBdfDApPT0yNTU/KGxbZD4+MF18MCk9PTI1NDowKWlbZT4+MF09Mn1pZighKGlbZT4+MF18MCkpe2Y9a1tmPj4yXXwwO3I9ZztyZXR1cm4gZnwwfWE9bGgoa1tiPj4yXXwwKXwwO2tbZj4+Ml09YTtpZihrW2Y+PjJdfDApe2Y9a1tmPj4yXXwwO3I9ZztyZXR1cm4gZnwwfWE9KGtbYj4+Ml18MCkrMTJ8MDtrW2E+PjJdPShrW2E+PjJdfDApLTI7Y1Moa1soa1tiPj4yXXwwKSsxNj4+Ml18MCwoa1soa1tiPj4yXXwwKSsxNj4+Ml18MCkrMnwwLGtbKGtbYj4+Ml18MCkrMTI+PjJdfDApfDA7aVsoa1soa1tiPj4yXXwwKSsxNj4+Ml18MCkrKGtbKGtbYj4+Ml18MCkrMTI+PjJdfDApPj4wXT0wO2lbKGtbKGtbYj4+Ml18MCkrMTY+PjJdfDApKygoa1soa1tiPj4yXXwwKSsxMj4+Ml18MCkrMSk+PjBdPTA7YT0oa1tiPj4yXXwwKSs4fDA7althPj4xXT1tW2E+PjFdfDUxMjtpWyhrW2I+PjJdfDApKzEwPj4wXT1pW2U+PjBdfDA7Zj1rW2Y+PjJdfDA7cj1nO3JldHVybiBmfDB9ZnVuY3Rpb24gZE4oYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTA7ZD1yO3I9cisxNnwwO2M9ZDtlPWQrNHwwO2tbYz4+Ml09YTtpW2U+PjBdPWI7aWYoIShlTihrW2M+PjJdfDAsaVtlPj4wXXwwKXwwKSl7ZT0wO3I9ZDtyZXR1cm4gZXwwfWU9a1soa1tjPj4yXXwwKSsxMj4+Ml18MDtyPWQ7cmV0dXJuIGV8MH1mdW5jdGlvbiBlTihhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTA7Zj1yO3I9cisxNnwwO2M9Zis0fDA7ZD1mO2U9Zis4fDA7a1tkPj4yXT1hO2lbZT4+MF09YjtiPWtbZD4+Ml18MDtpZigobVsoa1tkPj4yXXwwKSs4Pj4xXXwwKSYxOCl7YT1iKzh8MDtqW2E+PjFdPW1bYT4+MV18MHwyO2lmKChsWyhrW2Q+PjJdfDApKzEwPj4wXXwwfDApIT0oKGxbZT4+MF18MCkmLTl8MCkpc3Uoa1tkPj4yXXwwLChsW2U+PjBdfDApJi05KXwwO2lmKCgoKGxbZT4+MF18MCkmOHwwKSE9MD8xPT0oMSZrWyhrW2Q+PjJdfDApKzE2Pj4yXXwwKTowKT8obGgoa1tkPj4yXXwwKXwwKSE9MDowKXtrW2M+PjJdPTA7ZT1rW2M+PjJdfDA7cj1mO3JldHVybiBlfDB9UUkoa1tkPj4yXXwwKXwwfWVsc2UgV3goYixpW2U+PjBdfDAsMCl8MDtpZigobFsoa1tkPj4yXXwwKSsxMD4+MF18MHwwKT09KChsW2U+PjBdfDApJi05fDApKXtrW2M+PjJdPWtbKGtbZD4+Ml18MCkrMTY+PjJdO2U9a1tjPj4yXXwwO3I9ZjtyZXR1cm4gZXwwfWVsc2V7a1tjPj4yXT0wO2U9a1tjPj4yXXwwO3I9ZjtyZXR1cm4gZXwwfXJldHVybiAwfWZ1bmN0aW9uIGZOKGEpe2E9YXwwO3ZhciBiPTAsYz0wO2M9cjtyPXIrMTZ8MDtiPWM7a1tiPj4yXT1hO2lmKChtWyhrW2I+PjJdfDApKzg+PjFdfDApJjkzMTIpd0coa1tiPj4yXXwwKTtpZighKGtbKGtbYj4+Ml18MCkrMjQ+PjJdfDApKXthPWtbYj4+Ml18MDthPWErMTZ8MDtrW2E+PjJdPTA7cj1jO3JldHVybn1iZyhrWyhrW2I+PjJdfDApKzMyPj4yXXwwLGtbKGtbYj4+Ml18MCkrMjA+PjJdfDApO2tbKGtbYj4+Ml18MCkrMjQ+PjJdPTA7YT1rW2I+PjJdfDA7YT1hKzE2fDA7a1thPj4yXT0wO3I9YztyZXR1cm59ZnVuY3Rpb24gZ04oYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wO2I9cjtyPXIrMTZ8MDtjPWIrNHwwO2Q9YjtrW2M+PjJdPWE7a1tkPj4yXT1rW2tbYz4+Ml0+PjJdO2JnKGtbZD4+Ml18MCxrWyhrW2M+PjJdfDApKzEwOD4+Ml18MCk7a1soa1tjPj4yXXwwKSsxMDg+PjJdPTA7a1soa1tjPj4yXXwwKSsxMDQ+PjJdPTA7cj1iO3JldHVybn1mdW5jdGlvbiBoTihhKXthPWF8MDt2YXIgYj0wLGM9MDtiPXI7cj1yKzE2fDA7Yz1iO2tbYz4+Ml09YTt6aShrW2M+PjJdfDApO3ZnKGtbYz4+Ml18MCw3KTtyPWI7cmV0dXJuIDd9ZnVuY3Rpb24gaU4oYSl7YT1hfDA7dmFyIGI9MCxjPTA7Yj1yO3I9cisxNnwwO2M9YjtrW2M+PjJdPWE7emooa1soa1tjPj4yXXwwKSs2MD4+Ml18MCk7a1soa1tjPj4yXXwwKSs2MD4+Ml09MDtyPWI7cmV0dXJufWZ1bmN0aW9uIGpOKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MCxlPTA7ZD1yO3I9cisxNnwwO2I9ZCs4fDA7Yz1kKzR8MDtlPWQ7a1tiPj4yXT1hO2tbYz4+Ml09a1soa1tiPj4yXXwwKSs0Pj4yXTtrW2U+PjJdPWtba1tiPj4yXT4+Ml07aVsoa1tjPj4yXXwwKSsxOT4+MF09MDtpZigobFsoa1tiPj4yXXwwKSs4Pj4wXXwwfDApPjA/KGtbKGtbZT4+Ml18MCkrMTYwPj4yXXwwKT4xOjApe2tOKGtbYj4+Ml18MCk7aVsoa1tiPj4yXXwwKSs4Pj4wXT0xO3I9ZDtyZXR1cm59aWYoKGxbKGtbYj4+Ml18MCkrOD4+MF18MHwwKSE9MD8obE4oa1tiPj4yXXwwKSxlPShrW2M+PjJdfDApKzQwfDAsa1tlPj4yXT0oa1tlPj4yXXwwKSstMSwwPT0oa1soa1tjPj4yXXwwKSs0MD4+Ml18MCkpOjApaVsoa1tjPj4yXXwwKSsyMD4+MF09MDtpWyhrW2I+PjJdfDApKzg+PjBdPTA7JEIoa1tjPj4yXXwwKTtyPWQ7cmV0dXJufWZ1bmN0aW9uIGtOKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MCxlPTA7ZD1yO3I9cisxNnwwO2U9ZCs4fDA7Yj1kKzR8MDtjPWQ7a1tlPj4yXT1hO2tbYj4+Ml09a1soa1tlPj4yXXwwKSs0Pj4yXTtpZigoa1soa1tiPj4yXXwwKSs3Nj4+Ml18MCkhPShrW2U+PjJdfDApKXtyPWQ7cmV0dXJufWtbKGtbYj4+Ml18MCkrNzY+PjJdPTA7ZT0oa1tiPj4yXXwwKSsyMnwwO2pbZT4+MV09KG1bZT4+MV18MCkmLTk3O2tbYz4+Ml09a1soa1tiPj4yXXwwKSs3Mj4+Ml07d2hpbGUoMSl7aWYoIShrW2M+PjJdfDApKWJyZWFrO2lbKGtbYz4+Ml18MCkrOD4+MF09MTtrW2M+PjJdPWtbKGtbYz4+Ml18MCkrMTI+PjJdfXI9ZDtyZXR1cm59XG5mdW5jdGlvbiBibihhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLG09MCxuPTAsbz0wLHA9MCxxPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTA7eD1yO3I9cis4MHwwO289eCs2NHwwO3c9eCs2MHwwO3A9eCs1NnwwO3E9eCs1MnwwO3U9eCs0OHwwO3Y9eCs0NHwwO2o9eCs4fDA7cz14KzQwfDA7dD14KzM2fDA7bT14KzMyfDA7bj14KzI4fDA7aD14O2Q9eCsyNHwwO2Y9eCsyMHwwO2U9eCsxNnwwO2tbbz4+Ml09YTtrW3c+PjJdPWI7a1twPj4yXT1jO2lmKGtba1twPj4yXT4+Ml18MCl7cj14O3JldHVybn1rW3E+PjJdPWxbKGtbbz4+Ml18MCkrNTI+PjBdO2lbKGtbdz4+Ml18MCkrMzM+PjBdPTE7c3dpdGNoKGtba1t3Pj4yXT4+Ml18MCl7Y2FzZSAzOmNhc2UgMTp7a1t1Pj4yXT1rWyhrW3c+PjJdfDApKzEyPj4yXTtrW3Y+PjJdPWtbKGtbdz4+Ml18MCkrMTY+PjJdO2lmKGlbKGtbdT4+Ml18MCkrMzQ+PjBdfDApe2JuKGtbbz4+Ml18MCxrW3Y+PjJdfDAsa1twPj4yXXwwKTtzPShrW3Y+PjJdfDApKzI0fDA7dD1rW3MrND4+Ml18MDt1PShrW3c+PjJdfDApKzI0fDA7a1t1Pj4yXT1rW3M+PjJdO2tbdSs0Pj4yXT10O2lbKGtbdz4+Ml18MCkrMzI+PjBdPWlbKGtbdj4+Ml18MCkrMzI+PjBdfDA7cj14O3JldHVybn1uPShpWyhrW3Y+PjJdfDApKzM0Pj4wXXwwKSE9MDtibihrW28+PjJdfDAsa1t1Pj4yXXwwLGtbcD4+Ml18MCk7aWYobil7cz0oa1t1Pj4yXXwwKSsyNHwwO3Q9a1tzKzQ+PjJdfDA7dj0oa1t3Pj4yXXwwKSsyNHwwO2tbdj4+Ml09a1tzPj4yXTtrW3YrND4+Ml09dDtpWyhrW3c+PjJdfDApKzMyPj4wXT1pWyhrW3U+PjJdfDApKzMyPj4wXXwwO3I9eDtyZXR1cm59Ym4oa1tvPj4yXXwwLGtbdj4+Ml18MCxrW3A+PjJdfDApO3doaWxlKDEpe2lmKGlbKGtbdT4+Ml18MCkrMzI+PjBdfDApYnJlYWs7aWYoaVsoa1t2Pj4yXXwwKSszMj4+MF18MClicmVhaztpZihrW2tbcD4+Ml0+PjJdfDApYnJlYWs7bj0oa1txPj4yXXwwKSE9MD8tMToxO2g9KGtbdT4+Ml18MCkrMjR8MDttPShrW3Y+PjJdfDApKzI0fDA7bT1fUihrW2g+PjJdfDAsa1toKzQ+PjJdfDAsa1ttPj4yXXwwLGtbbSs0Pj4yXXwwKXwwO209a1MobnwwLCgobnwwKTwwKTw8MzE+PjMxfDAsbXwwLEx8MCl8MDtuPWo7a1tuPj4yXT1tO2tbbis0Pj4yXT1MO249ajtpZigoa1tuPj4yXXwwKT09MCYoa1tuKzQ+PjJdfDApPT0wKWJyZWFrO2E9a1tvPj4yXXwwO2lmKChrW2orND4+Ml18MCk8MCl7Ym4oYSxrW3U+PjJdfDAsa1twPj4yXXwwKTtjb250aW51ZX1lbHNle2JuKGEsa1t2Pj4yXXwwLGtbcD4+Ml18MCk7Y29udGludWV9fW09KGtbdT4+Ml18MCkrMjR8MDtuPWtbbSs0Pj4yXXwwO3E9KGtbdz4+Ml18MCkrMjR8MDtrW3E+PjJdPWtbbT4+Ml07a1txKzQ+PjJdPW47aWYobFsoa1t1Pj4yXXwwKSszMj4+MF18MClhPTE7ZWxzZSBhPShsWyhrW3Y+PjJdfDApKzMyPj4wXXwwKSE9MDtpWyhrW3c+PjJdfDApKzMyPj4wXT1hJjE7aWYoKGtba1t3Pj4yXT4+Ml18MCkhPTEpe3I9eDtyZXR1cm59aWYoIShsWyhrW3c+PjJdfDApKzMyPj4wXXwwKSl7cj14O3JldHVybn1hOmRvIGlmKChrWyhrW3Y+PjJdfDApKzIwPj4yXXwwKSE9MD8oa1trWyhrW3Y+PjJdfDApKzIwPj4yXT4+Ml18MCkhPTA6MCl7a1tzPj4yXT1rWyhrW3Y+PjJdfDApKzIwPj4yXTt3aGlsZSgxKXtpZihrW2tbcD4+Ml0+PjJdfDApYnJlYWsgYTtpZihsWyhrW3Y+PjJdfDApKzMyPj4wXXwwKWJyZWFrIGE7ZFMoa1soa1tzPj4yXXwwKSsyOD4+Ml18MCwwLGtbKGtbcz4+Ml18MCkrMzI+PjJdfDApfDA7Ym4oa1tvPj4yXXwwLGtbdj4+Ml18MCxrW3A+PjJdfDApfX13aGlsZSgwKTtpZighKGtbKGtbdT4+Ml18MCkrMjA+PjJdfDApKXtyPXg7cmV0dXJufWlmKCEoa1trWyhrW3U+PjJdfDApKzIwPj4yXT4+Ml18MCkpe3I9eDtyZXR1cm59a1t0Pj4yXT1rWyhrW3U+PjJdfDApKzIwPj4yXTt3aGlsZSgxKXtpZihrW2tbcD4+Ml0+PjJdfDApe2c9NTM7YnJlYWt9aWYobFsoa1t1Pj4yXXwwKSszMj4+MF18MCl7Zz01MzticmVha31kUyhrWyhrW3Q+PjJdfDApKzI4Pj4yXXwwLDAsa1soa1t0Pj4yXXwwKSszMj4+Ml18MCl8MDtibihrW28+PjJdfDAsa1t1Pj4yXXwwLGtbcD4+Ml18MCl9aWYoKGd8MCk9PTUzKXtyPXg7cmV0dXJufWJyZWFrfWNhc2UgNDp7a1ttPj4yXT1rWyhrW3c+PjJdfDApKzEyPj4yXTtrW24+PjJdPWtbKGtbdz4+Ml18MCkrMTY+PjJdO3Y9KGtbcT4+Ml18MCkhPTA/LTE6MTt0PShrW20+PjJdfDApKzI0fDA7dT0oa1tuPj4yXXwwKSsyNHwwO3U9X1Ioa1t0Pj4yXXwwLGtbdCs0Pj4yXXwwLGtbdT4+Ml18MCxrW3UrND4+Ml18MCl8MDt1PWtTKHZ8MCwoKHZ8MCk8MCk8PDMxPj4zMXwwLHV8MCxMfDApfDA7dj1oO2tbdj4+Ml09dTtrW3YrND4+Ml09TDtkbyBpZigobFsoa1tuPj4yXXwwKSszMj4+MF18MCk9PTA/ISgoa1toKzQ+PjJdfDApPDA/KGxbKGtbbT4+Ml18MCkrMzI+PjBdfDApPT0wOjApOjApe2lmKChsWyhrW20+PjJdfDApKzMyPj4wXXwwKT09MD8odj1oLHU9a1t2KzQ+PjJdfDAsISgobFsoa1tuPj4yXXwwKSszMj4+MF18MCk9PTAmKCh1fDApPjB8KHV8MCk9PTAmKGtbdj4+Ml18MCk+Pj4wPjApKSk6MCl7Ym4oa1tvPj4yXXwwLGtbbT4+Ml18MCxrW3A+PjJdfDApO2JuKGtbbz4+Ml18MCxrW24+PjJdfDAsa1twPj4yXXwwKTticmVha31ibihrW28+PjJdfDAsa1tuPj4yXXwwLGtbcD4+Ml18MCl9ZWxzZSBnPTMzO3doaWxlKDApO2lmKChnfDApPT0zMylibihrW28+PjJdfDAsa1ttPj4yXXwwLGtbcD4+Ml18MCk7aWYobFsoa1ttPj4yXXwwKSszMj4+MF18MClhPShsWyhrW24+PjJdfDApKzMyPj4wXXwwKSE9MDtlbHNlIGE9MDtpWyhrW3c+PjJdfDApKzMyPj4wXT1hJjE7dj0oa1txPj4yXXwwKSE9MD8tMToxO3Q9KGtbbT4+Ml18MCkrMjR8MDt1PShrW24+PjJdfDApKzI0fDA7dT1fUihrW3Q+PjJdfDAsa1t0KzQ+PjJdfDAsa1t1Pj4yXXwwLGtbdSs0Pj4yXXwwKXwwO3U9a1ModnwwLCgodnwwKTwwKTw8MzE+PjMxfDAsdXwwLEx8MCl8MDt2PWg7a1t2Pj4yXT11O2tbdis0Pj4yXT1MO2lmKChsWyhrW24+PjJdfDApKzMyPj4wXXwwKT09MD8hKChrW2grND4+Ml18MCk8MD8obFsoa1ttPj4yXXwwKSszMj4+MF18MCk9PTA6MCk6MCl7dT0oa1tuPj4yXXwwKSsyNHwwO3Y9a1t1KzQ+PjJdfDA7dz0oa1t3Pj4yXXwwKSsyNHwwO2tbdz4+Ml09a1t1Pj4yXTtrW3crND4+Ml09djtyPXg7cmV0dXJufXU9KGtbbT4+Ml18MCkrMjR8MDt2PWtbdSs0Pj4yXXwwO3c9KGtbdz4+Ml18MCkrMjR8MDtrW3c+PjJdPWtbdT4+Ml07a1t3KzQ+PjJdPXY7cj14O3JldHVybn1jYXNlIDI6e2tbZD4+Ml09a1soa1t3Pj4yXXwwKSsxMj4+Ml07a1tmPj4yXT1rWyhrW3c+PjJdfDApKzE2Pj4yXTtpZighKGxbKGtbZj4+Ml18MCkrMzM+PjBdfDApKWJuKGtbbz4+Ml18MCxrW2Y+PjJdfDAsa1twPj4yXXwwKTtibihrW28+PjJdfDAsa1tkPj4yXXwwLGtbcD4+Ml18MCk7YjpkbyBpZighKGxbKGtbZD4+Ml18MCkrMzI+PjBdfDApKXdoaWxlKDEpe2lmKGtba1twPj4yXT4+Ml18MClicmVhayBiO2lmKGlbKGtbZj4+Ml18MCkrMzI+PjBdfDApYnJlYWsgYjt1PShrW3E+PjJdfDApIT0wPy0xOjE7dD0oa1tkPj4yXXwwKSsyNHwwO3Y9KGtbZj4+Ml18MCkrMjR8MDt2PV9SKGtbdD4+Ml18MCxrW3QrND4+Ml18MCxrW3Y+PjJdfDAsa1t2KzQ+PjJdfDApfDA7dj1rUyh1fDAsKCh1fDApPDApPDwzMT4+MzF8MCx2fDAsTHwwKXwwO3U9TDtpZighKCh1fDApPjB8KHV8MCk9PTAmdj4+PjA+MCkpYnJlYWsgYjtibihrW28+PjJdfDAsa1tmPj4yXXwwLGtbcD4+Ml18MCl9d2hpbGUoMCk7dD0oa1tkPj4yXXwwKSsyNHwwO3U9a1t0KzQ+PjJdfDA7dj0oa1t3Pj4yXXwwKSsyNHwwO2tbdj4+Ml09a1t0Pj4yXTtrW3YrND4+Ml09dTtpWyhrW3c+PjJdfDApKzMyPj4wXT1pWyhrW2Q+PjJdfDApKzMyPj4wXXwwO3I9eDtyZXR1cm59ZGVmYXVsdDp7a1tlPj4yXT1rWyhrW3c+PjJdfDApKzIwPj4yXTtkbihrW2U+PjJdfDApO3U9ZW4oa1tvPj4yXXwwLGtbZT4+Ml18MCwoa1t3Pj4yXXwwKSszMnwwKXwwO2tba1twPj4yXT4+Ml09dTt1PShrW2U+PjJdfDApKzE2fDA7dj1rW3UrND4+Ml18MDt3PShrW3c+PjJdfDApKzI0fDA7a1t3Pj4yXT1rW3U+PjJdO2tbdys0Pj4yXT12O3I9eDtyZXR1cm59fX1mdW5jdGlvbiBjbihhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wO3E9cjtyPXIrNDh8MDtnPXErMzJ8MDtoPXErMjh8MDtqPXErMjR8MDtsPXErMjB8MDttPXErMTZ8MDtuPXErMTJ8MDtwPXErOHwwO289cTtrW2c+PjJdPWE7a1toPj4yXT1iO2tbaj4+Ml09YztrW2w+PjJdPWQ7a1ttPj4yXT1lO2tbbj4+Ml09ZjtrW3A+PjJdPWtba1tsPj4yXT4+Ml07aWYoIShrW3A+PjJdfDApKXtrW3A+PjJdPWtbaD4+Ml07bz1pbShrW3A+PjJdfDAsa1ttPj4yXXwwKXwwO2tbcD4+Ml09KGtbcD4+Ml18MCkrbztvPWtbcD4+Ml18MDtwPWtbbD4+Ml18MDtrW3A+PjJdPW87cj1xO3JldHVybn1ubSgwLHApO3doaWxlKDEpe2lmKChrW3A+PjJdfDApPj4+MDwoKGtbaD4+Ml18MCkrKGtbaj4+Ml18MCl8MCk+Pj4wKWE9KGlba1twPj4yXT4+MF18MCk9PTA7ZWxzZSBhPTA7Yj1rW3A+PjJdfDA7aWYoIWEpYnJlYWs7a1twPj4yXT1iKzF9aWYoYj4+PjA+PSgoa1toPj4yXXwwKSsoa1tqPj4yXXwwKXwwKT4+PjApe2lba1tuPj4yXT4+MF09MTtvPWtbcD4+Ml18MDtwPWtbbD4+Ml18MDtrW3A+PjJdPW87cj1xO3JldHVybn1lbHNle2o9aW0oa1twPj4yXXwwLG8pfDA7a1twPj4yXT0oa1twPj4yXXwwKStqO2o9KGtbZz4+Ml18MCkhPTA/LTE6MTtuPW87bj1rUyhqfDAsKChqfDApPDApPDwzMT4+MzF8MCxrW24+PjJdfDAsa1tuKzQ+PjJdfDApfDA7bz1rW20+PjJdfDA7bT1vO249JFIoa1ttPj4yXXwwLGtbbSs0Pj4yXXwwLG58MCxMfDApfDA7a1tvPj4yXT1uO2tbbys0Pj4yXT1MO289a1twPj4yXXwwO3A9a1tsPj4yXXwwO2tbcD4+Ml09bztyPXE7cmV0dXJufX1mdW5jdGlvbiBkbihhKXthPWF8MDt2YXIgYj0wLGM9MDtjPXI7cj1yKzE2fDA7Yj1jO2tbYj4+Ml09YTtpZihrWyhrW2I+PjJdfDApKzI0Pj4yXXwwKVVkKGtbKGtbYj4+Ml18MCkrMjg+PjJdfDApO2tbKGtbYj4+Ml18MCkrMjg+PjJdPTA7a1soa1tiPj4yXXwwKSszMj4+Ml09MDtrWyhrW2I+PjJdfDApKzI0Pj4yXT0wO3I9YztyZXR1cm59ZnVuY3Rpb24gZW4oYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGk9MCxqPTA7aT1yO3I9ciszMnwwO2o9aSsyMHwwO2Q9aSsxNnwwO2U9aSsxMnwwO2g9aSs4fDA7Zj1pKzR8MDtnPWk7a1tqPj4yXT1hO2tbZD4+Ml09YjtrW2U+PjJdPWM7a1toPj4yXT0wO2tbZj4+Ml09a1tkPj4yXTtrW2c+PjJdPWtba1tqPj4yXT4+Ml07Yj1rW2o+PjJdfDA7aWYoa1soa1tkPj4yXXwwKSs0MD4+Ml18MCl7aj1mbihiLGtbZD4+Ml18MCxrW2U+PjJdfDApfDA7a1toPj4yXT1qO2o9a1toPj4yXXwwO3I9aTtyZXR1cm4ganwwfWlmKChsW2IrNTI+PjBdfDB8MCkhPShsWyhrW2c+PjJdfDApKzIzMT4+MF18MHwwKT8oa1soa1tmPj4yXXwwKSs0Pj4yXXwwKSE9MDowKXtrbShsWyhrW2c+PjJdfDApKzIzMT4+MF18MCxrW2tbZj4+Ml0+PjJdfDAsa1soa1tmPj4yXXwwKSs0Pj4yXXwwLChrW2Y+PjJdfDApKzh8MCwoa1tmPj4yXXwwKSsxNnwwLChrW2Y+PjJdfDApKzMyfDAsa1tlPj4yXXwwKTtrWyhrW2Y+PjJdfDApKzI4Pj4yXT1rWyhrW2Y+PjJdfDApKzg+PjJdO2o9a1toPj4yXXwwO3I9aTtyZXR1cm4ganwwfWduKGtbZz4+Ml18MCxrW2Y+PjJdfDAsa1tlPj4yXXwwKTtqPWtbaD4+Ml18MDtyPWk7cmV0dXJuIGp8MH1mdW5jdGlvbiBmbihhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLG09MCxuPTAsbz0wLHA9MCxxPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTA7RD1yO3I9cisxOTJ8MDtlPUQrMTcyfDA7ZD1EKzE2OHwwO2Y9RCsxNjR8MDtnPUQrMTYwfDA7QT1EKzE1NnwwO3Y9RCsxNTJ8MDt6PUQrMTQ4fDA7bj1EKzE3NnwwO209RCsxNDR8MDtoPUQrOHwwO289RCsxNDB8MDtxPUQ7cD1EKzEzNnwwO3U9RCsxMzJ8MDtzPUQrMTI4fDA7aj1EKzEyNHwwO3c9RCsxMjB8MDt5PUQrMTE2fDA7eD1EKzExMnwwO3Q9RCsxMDh8MDtCPUQrMTA0fDA7a1tkPj4yXT1hO2tbZj4+Ml09YjtrW2c+PjJdPWM7a1tBPj4yXT0wO2tbdj4+Ml09a1tmPj4yXTtrW3o+PjJdPWtba1tkPj4yXT4+Ml07aVtuPj4wXT0wO2lmKChrWyhrW2Y+PjJdfDApKzY0Pj4yXXwwKT09MT8oa1soa1tmPj4yXXwwKSs0MD4+Ml18MCkhPTA6MCl7Qj1obihrW3o+PjJdfDAsa1soa1tmPj4yXXwwKSs3MisyMD4+Ml18MCwoa1t2Pj4yXXwwKSsxNnwwLChrW3Y+PjJdfDApKzI4fDAsKGtbdj4+Ml18MCkrMzJ8MCl8MDtrW0E+PjJdPUI7aWYoIShrWyhrW3Y+PjJdfDApKzI4Pj4yXXwwKSlpW24+PjBdPTF9ZWxzZSBDPTU7YTpkbyBpZigoQ3wwKT09NSl7a1ttPj4yXT1sWyhrW2Q+PjJdfDApKzUyPj4wXTtkPWg7Yj1kKzk2fDA7ZG97a1tkPj4yXT0wO2Q9ZCs0fDB9d2hpbGUoKGR8MCk8KGJ8MCkpO3doaWxlKDEpe2lmKGxbbj4+MF18MClicmVhayBhO2tbbz4+Ml09MDtjPXE7a1tjPj4yXT0wO2tbYys0Pj4yXT0wO2tbcD4+Ml09MDt3aGlsZSgxKXtpZihrW0E+PjJdfDApYnJlYWs7aWYoKGtbcD4+Ml18MCk+PShrWyhrW2Y+PjJdfDApKzY0Pj4yXXwwKSlicmVhaztpZihsW24+PjBdfDApYnJlYWs7Yz1qbihrW3o+PjJdfDAsa1tmPj4yXXwwLGtbcD4+Ml18MCxoKygoa1twPj4yXXwwKSoyNHwwKXwwLG4pfDA7a1tBPj4yXT1jO2RvIGlmKCEoa1toKygoa1twPj4yXXwwKSoyNHwwKT4+Ml18MCkpe2lmKChrW28+PjJdfDApIT0wPyhhPShrW20+PjJdfDApIT0wPy0xOjEsYj1xLGM9aCsoKGtbcD4+Ml18MCkqMjR8MCkrOHwwLGM9X1Ioa1tiPj4yXXwwLGtbYis0Pj4yXXwwLGtbYz4+Ml18MCxrW2MrND4+Ml18MCl8MCxrUyhhfDAsKChhfDApPDApPDwzMT4+MzF8MCxjfDAsTHwwKXwwLChMfDApPj0wKTowKWJyZWFrO2I9aCsoKGtbcD4+Ml18MCkqMjR8MCkrOHwwO2E9a1tiKzQ+PjJdfDA7Yz1xO2tbYz4+Ml09a1tiPj4yXTtrW2MrND4+Ml09YTtrW28+PjJdPTF9d2hpbGUoMCk7a1twPj4yXT0oa1twPj4yXXwwKSsxfWtbcD4+Ml09MDt3aGlsZSgxKXtpZigoa1twPj4yXXwwKT49KGtbKGtbZj4+Ml18MCkrNjQ+PjJdfDApKWJyZWFrO3doaWxlKDEpe2lmKGtbQT4+Ml18MClicmVhaztpZihsW24+PjBdfDApYnJlYWs7aWYoa1toKygoa1twPj4yXXwwKSoyNHwwKT4+Ml18MClicmVhazthPShrW20+PjJdfDApIT0wPy0xOjE7Yj1oKygoa1twPj4yXXwwKSoyNHwwKSs4fDA7Yz1xO2M9X1Ioa1tiPj4yXXwwLGtbYis0Pj4yXXwwLGtbYz4+Ml18MCxrW2MrND4+Ml18MCl8MDtrUyhhfDAsKChhfDApPDApPDwzMT4+MzF8MCxjfDAsTHwwKXwwO2lmKChMfDApPj0wKWJyZWFrO2E9am4oa1t6Pj4yXXwwLGtbZj4+Ml18MCxrW3A+PjJdfDAsaCsoKGtbcD4+Ml18MCkqMjR8MCl8MCxuKXwwO2tbQT4+Ml09YTthPShrW20+PjJdfDApIT0wPy0xOjE7Yj1oKygoa1twPj4yXXwwKSoyNHwwKSs4fDA7Yz1xO2M9X1Ioa1tiPj4yXXwwLGtbYis0Pj4yXXwwLGtbYz4+Ml18MCxrW2MrND4+Ml18MCl8MDtjPWtTKGF8MCwoKGF8MCk8MCk8PDMxPj4zMXwwLGN8MCxMfDApfDA7YT1MO2lmKCEoKGF8MCk+MHwoYXwwKT09MCZjPj4+MD4wKSljb250aW51ZTtiPWgrKChrW3A+PjJdfDApKjI0fDApKzh8MDthPWtbYis0Pj4yXXwwO2M9cTtrW2M+PjJdPWtbYj4+Ml07a1tjKzQ+PjJdPWE7a1twPj4yXT0wfWtbcD4+Ml09KGtbcD4+Ml18MCkrMX1pZihsW24+PjBdfDApY29udGludWU7a1t1Pj4yXT0wO2tbcz4+Ml09a1toKygoKGtbKGtbZj4+Ml18MCkrNjQ+PjJdfDApLTF8MCkqMjR8MCkrMjA+PjJdO2M9U2QoKGtbcz4+Ml18MCkrMXwwKXwwO2tbaj4+Ml09YztpZighKGtbaj4+Ml18MCkpYnJlYWs7YlMoa1tqPj4yXXwwLGtbaCsoKChrWyhrW2Y+PjJdfDApKzY0Pj4yXXwwKS0xfDApKjI0fDApKzE2Pj4yXXwwLChrW3M+PjJdfDApKzF8MCl8MDtrW3A+PjJdPTA7d2hpbGUoMSl7aWYoKGtbcD4+Ml18MCk+PSgoa1soa1tmPj4yXXwwKSs2ND4+Ml18MCktMXwwKSlicmVhaztpZighKGtbaCsoKGtbcD4+Ml18MCkqMjR8MCk+PjJdfDApKXtrW3c+PjJdPWtbaCsoKGtbcD4+Ml18MCkqMjR8MCkrMTY+PjJdO2tbeT4+Ml09a1tqPj4yXTtrW3g+PjJdPWtbaj4+Ml07a1t0Pj4yXT0oa1soa1tmPj4yXXwwKSs2ND4+Ml18MCktMS0oa1twPj4yXXwwKTtjPWtuKHgsa1t0Pj4yXXwwLDAsMSx3LHkpfDA7a1tCPj4yXT1jO2lmKCEoa1tCPj4yXXwwKSlicmVhaztrW3U+PjJdPShrW3g+PjJdfDApLShrW2o+PjJdfDApfWtbcD4+Ml09KGtbcD4+Ml18MCkrMX1pZigoa1twPj4yXXwwKT09KChrWyhrW2Y+PjJdfDApKzY0Pj4yXXwwKS0xfDApKXtDPTM1O2JyZWFrfVVkKGtbaj4+Ml18MCl9aWYoKEN8MCk9PTM1KXt6PXE7Qj1rW3orND4+Ml18MDtDPShrW3Y+PjJdfDApKzE2fDA7a1tDPj4yXT1rW3o+PjJdO2tbQys0Pj4yXT1CO2tbKGtbdj4+Ml18MCkrMjg+PjJdPWtbaj4+Ml07a1soa1t2Pj4yXXwwKSszMj4+Ml09a1t1Pj4yXTtrWyhrW3Y+PjJdfDApKzI0Pj4yXT0xO2JyZWFrfWtbZT4+Ml09NztDPWtbZT4+Ml18MDtyPUQ7cmV0dXJuIEN8MH13aGlsZSgwKTtpW2tbZz4+Ml0+PjBdPWlbbj4+MF18MDtrW2U+PjJdPWtbQT4+Ml07Qz1rW2U+PjJdfDA7cj1EO3JldHVybiBDfDB9ZnVuY3Rpb24gZ24oYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxtPTA7bT1yO3I9ciszMnwwO2Q9bSsyNHwwO2Y9bSsyMHwwO2c9bSsxNnwwO2o9bSsxMnwwO2g9bSs4fDA7ZT1tO2tbZD4+Ml09YTtrW2Y+PjJdPWI7a1tnPj4yXT1jO2tbaD4+Ml09KGtba1tmPj4yXT4+Ml18MCkrKGtbKGtbZj4+Ml18MCkrND4+Ml18MCk7Yj1rW2Y+PjJdfDA7aWYoa1soa1tmPj4yXXwwKSs4Pj4yXXwwKWtbaj4+Ml09a1tiKzg+PjJdO2Vsc2Uga1tqPj4yXT1rW2I+PjJdO2lmKChrW2o+PjJdfDApPj4+MD49KGtbaD4+Ml18MCk+Pj4wKXtpW2tbZz4+Ml0+PjBdPTE7cj1tO3JldHVybn1jPWltKGtbaj4+Ml18MCxlKXwwO2tbaj4+Ml09KGtbaj4+Ml18MCkrYztpZigobFsoa1tkPj4yXXwwKSsyMzE+PjBdfDApIT0wPyhrWyhrW2Y+PjJdfDApKzg+PjJdfDApIT0wOjApe2Q9ZTtlPShrW2Y+PjJdfDApKzE2fDA7Yz1lO2Q9X1Ioa1tjPj4yXXwwLGtbYys0Pj4yXXwwLGtbZD4+Ml18MCxrW2QrND4+Ml18MCl8MDtrW2U+PjJdPWQ7a1tlKzQ+PjJdPUx9ZWxzZXtkPWU7ZT0oa1tmPj4yXXwwKSsxNnwwO2M9ZTtkPSRSKGtbYz4+Ml18MCxrW2MrND4+Ml18MCxrW2Q+PjJdfDAsa1tkKzQ+PjJdfDApfDA7a1tlPj4yXT1kO2tbZSs0Pj4yXT1MfWtbKGtbZj4+Ml18MCkrMjg+PjJdPWtbaj4+Ml07bm0oMCxqKTtrWyhrW2Y+PjJdfDApKzMyPj4yXT0oa1tqPj4yXXwwKS0oa1soa1tmPj4yXXwwKSsyOD4+Ml18MCk7d2hpbGUoMSl7aWYoKGtbaj4+Ml18MCk+Pj4wPChrW2g+PjJdfDApPj4+MClhPShpW2tbaj4+Ml0+PjBdfDApPT0wO2Vsc2UgYT0wO2I9a1tqPj4yXXwwO2lmKCFhKWJyZWFrO2tbaj4+Ml09YisxfWtbKGtbZj4+Ml18MCkrOD4+Ml09YjtpW2tbZz4+Ml0+PjBdPTA7cj1tO3JldHVybn1mdW5jdGlvbiBobihhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxpPTAsaj0wLG09MCxuPTAsbz0wLHA9MCxxPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTA7eD1yO3I9cis2NHwwO289eCs2MHwwO2Y9eCs1NnwwO2c9eCs1MnwwO3A9eCs0OHwwO3E9eCs0NHwwO3M9eCs0MHwwO2o9eCszNnwwO2g9eCszMnwwO249eCsyOHwwO209eCsyNHwwO3c9eCsyMHwwO3Y9eCsxNnwwO3U9eCsxMnwwO2k9eCs4fDA7dD14O2tbZj4+Ml09YTtrW2c+PjJdPWI7a1twPj4yXT1jO2tbcT4+Ml09ZDtrW3M+PjJdPWU7a1tqPj4yXT1rWyhrW2c+PjJdfDApKzg+PjJdO2tbaD4+Ml09a1trW2c+PjJdPj4yXTtrW24+PjJdPShsWyhrW2Y+PjJdfDApKzIzMT4+MF18MHwwKSE9MD8xODI6MTgzO2lmKCEoa1tqPj4yXXwwKSl7a1trW3E+PjJdPj4yXT0wO2tbbz4+Ml09MDt3PWtbbz4+Ml18MDtyPXg7cmV0dXJuIHd8MH13aGlsZSgxKXtrW20+PjJdPWtba1trW2c+PjJdPj4yXT4+Ml07aWYoIShrWyhrW20+PjJdfDApKzgwPj4yXXwwKSl7Zj00O2JyZWFrfWQ9KGtba1toPj4yXT4+Ml18MCkrODh8MDtjPWtbZCs0Pj4yXXwwO2U9dDtrW2U+PjJdPWtbZD4+Ml07a1tlKzQ+PjJdPWM7ZT1lbShrW2Y+PjJdfDAsa1trW2g+PjJdPj4yXXwwLHYsdSl8MDtrW3c+PjJdPWU7a1tpPj4yXT0xO3doaWxlKDEpe2lmKGtbdz4+Ml18MClicmVhaztpZigoa1tpPj4yXXwwKT49KGtbaj4+Ml18MCkpYnJlYWs7aWYoIShrWyhrWyhrW2g+PjJdfDApKyhrW2k+PjJdPDwyKT4+Ml18MCkrODA+PjJdfDApKWJyZWFrO2M9KGtbKGtbaD4+Ml18MCkrKGtbaT4+Ml08PDIpPj4yXXwwKSs4OHwwO2U9dDtpZighKChrW2M+PjJdfDApPT0oa1tlPj4yXXwwKT8oa1tjKzQ+PjJdfDApPT0oa1tlKzQ+PjJdfDApOjApKWJyZWFrO2U9ZW0oa1tmPj4yXXwwLGtbKGtbaD4+Ml18MCkrKGtbaT4+Ml08PDIpPj4yXXwwLDAsMCl8MDtrW3c+PjJdPWU7a1tpPj4yXT0oa1tpPj4yXXwwKSsxfWlmKGtbdz4+Ml18MCl7Zj0xMjticmVha31ibShrW2tbZz4+Ml0+PjJdfDAsa1tqPj4yXXwwLGtbaT4+Ml18MCxrW24+PjJdfDApO2lmKChrW3U+PjJdfDApPjA/KGtbKGtba1toPj4yXT4+Ml18MCkrNTY+PjJdfDApIT0wOjApe2U9Y20oa1tnPj4yXXwwLGtbdj4+Ml18MCwoa1t1Pj4yXXwwKSsxfDApfDA7a1t3Pj4yXT1lO2lmKGtbdz4+Ml18MCl7Zj0xNjticmVha31rW3Y+PjJdPWtbKGtbZz4+Ml18MCkrMTY+PjJdfWlmKChrWyhrW2c+PjJdfDApKzI0Pj4yXXwwKT49MClmbShrWyhrW2c+PjJdfDApKzI0Pj4yXXwwLDEsdix1KTtpZigoa1t1Pj4yXXwwKT4wKXtmPTIxO2JyZWFrfX1pZigoZnwwKT09NClrW2tbcT4+Ml0+PjJdPTA7ZWxzZSBpZigoZnwwKT09MTIpe2tbbz4+Ml09a1t3Pj4yXTt3PWtbbz4+Ml18MDtyPXg7cmV0dXJuIHd8MH1lbHNlIGlmKChmfDApPT0xNil7a1tvPj4yXT1rW3c+PjJdO3c9a1tvPj4yXXwwO3I9eDtyZXR1cm4gd3wwfWVsc2UgaWYoKGZ8MCk9PTIxKXtrW2tbcT4+Ml0+PjJdPWtbdj4+Ml07dj1rW3QrND4+Ml18MDt3PWtbcD4+Ml18MDtrW3c+PjJdPWtbdD4+Ml07a1t3KzQ+PjJdPXY7a1trW3M+PjJdPj4yXT1rW3U+PjJdfWtbbz4+Ml09MDt3PWtbbz4+Ml18MDtyPXg7cmV0dXJuIHd8MH1mdW5jdGlvbiBqbihhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsbD0wLG09MCxuPTAsbz0wO289cjtyPXIrMzJ8MDtmPW8rMjR8MDtnPW8rMjB8MDtoPW8rMTZ8MDtqPW8rMTJ8MDtsPW8rOHwwO249bys0fDA7bT1vO2tbZj4+Ml09YTtrW2c+PjJdPWI7a1toPj4yXT1jO2tbaj4+Ml09ZDtrW2w+PjJdPWU7a1tuPj4yXT0wO2lmKChrWyhrW2c+PjJdfDApKzQ0Pj4yXXwwKT09KGtbaD4+Ml18MCkpe2duKGtbZj4+Ml18MCxrW2c+PjJdfDAsa1tsPj4yXXwwKTtrWyhrW2o+PjJdfDApKzE2Pj4yXT1rWyhrW2c+PjJdfDApKzI4Pj4yXTtrWyhrW2o+PjJdfDApKzIwPj4yXT1rWyhrW2c+PjJdfDApKzMyPj4yXTthPShrW2c+PjJdfDApKzE2fDA7bT1rW2ErND4+Ml18MDtlPShrW2o+PjJdfDApKzh8MDtrW2U+PjJdPWtbYT4+Ml07a1tlKzQ+PjJdPW07bj1rW24+PjJdfDA7cj1vO3JldHVybiBufDB9a1ttPj4yXT0oa1tnPj4yXXwwKSs3MisoKGtbaD4+Ml18MCkqMjR8MCk7aWYoIShrWyhrW20+PjJdfDApKzIwPj4yXXwwKSl7a1trW2o+PjJdPj4yXT0xO249a1tuPj4yXXwwO3I9bztyZXR1cm4gbnwwfWU9aG4oa1tmPj4yXXwwLGtbKGtbbT4+Ml18MCkrMjA+PjJdfDAsKGtbaj4+Ml18MCkrOHwwLChrW2o+PjJdfDApKzE2fDAsKGtbaj4+Ml18MCkrMjB8MCl8MDtrW24+PjJdPWU7aWYoa1soa1tqPj4yXXwwKSsxNj4+Ml18MCl7bj1rW24+PjJdfDA7cj1vO3JldHVybiBufDB9aVtrW2w+PjJdPj4wXT0xO249a1tuPj4yXXwwO3I9bztyZXR1cm4gbnwwfWZ1bmN0aW9uIGtuKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsbT0wLG49MCxvPTAscD0wLHE9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wO0M9cjtyPXIrOTZ8MDtnPUMrODB8MDtoPUMrNzZ8MDtqPUMrNzJ8MDttPUMrNjh8MDtuPUMrNjR8MDtvPUMrNjB8MDtwPUMrNTZ8MDt4PUMrNTJ8MDt5PUMrNDh8MDt6PUMrNDR8MDtxPUMrNDB8MDtzPUMrMzZ8MDtBPUMrMzJ8MDt2PUMrMjR8MDt0PUMrMTZ8MDt1PUMrOHwwO3c9QztrW2g+PjJdPWE7a1tqPj4yXT1iO2tbbT4+Ml09YztrW24+PjJdPWQ7a1tvPj4yXT1lO2tbcD4+Ml09ZjtrW3g+PjJdPWtba1toPj4yXT4+Ml07a1t5Pj4yXT1rW2tbbz4+Ml0+PjJdO2tbej4+Ml09a1trW3A+PjJdPj4yXTtrW3E+PjJdPTA7a1tzPj4yXT0wO2lmKChpW2tbeT4+Ml0+PjBdfDApPT0xKXtrW3k+PjJdPShrW3k+PjJdfDApKzE7ZD1rW3k+PjJdfDA7aWYobFtrW3k+PjJdPj4wXSYxMjgpZD1qbShkLHEpfDA7ZWxzZXtrW3E+PjJdPWxbZD4+MF07ZD0xfWtbeT4+Ml09KGtbeT4+Ml18MCkrZH1pZigoaVtrW3o+PjJdPj4wXXwwKT09MSl7a1t6Pj4yXT0oa1t6Pj4yXXwwKSsxO2Q9a1t6Pj4yXXwwO2lmKGxba1t6Pj4yXT4+MF0mMTI4KWQ9am0oZCxzKXwwO2Vsc2V7a1tzPj4yXT1sW2Q+PjBdO2Q9MX1rW3o+PjJdPShrW3o+PjJdfDApK2R9d2hpbGUoMSl7aWYoKGtbcT4+Ml18MCkhPShrW3M+PjJdfDApKWlmKChrW3E+PjJdfDApPChrW3M+PjJdfDApKXtobSgwLHkpO2lmKCEoaVtrW3k+PjJdPj4wXXwwKSlicmVhaztrW3k+PjJdPShrW3k+PjJdfDApKzE7ZD1rW3k+PjJdfDA7aWYobFtrW3k+PjJdPj4wXSYxMjgpZD1qbShkLHEpfDA7ZWxzZXtrW3E+PjJdPWxbZD4+MF07ZD0xfWtbeT4+Ml09KGtbeT4+Ml18MCkrZDtjb250aW51ZX1lbHNle2htKDAseik7aWYoIShpW2tbej4+Ml0+PjBdfDApKWJyZWFrO2tbej4+Ml09KGtbej4+Ml18MCkrMTtkPWtbej4+Ml18MDtpZihsW2tbej4+Ml0+PjBdJjEyOClkPWptKGQscyl8MDtlbHNle2tbcz4+Ml09bFtkPj4wXTtkPTF9a1t6Pj4yXT0oa1t6Pj4yXXwwKStkO2NvbnRpbnVlfWtbQT4+Ml09a1t4Pj4yXTtmPXY7a1tmPj4yXT0wO2tbZis0Pj4yXT0wO2Y9dDtrW2Y+PjJdPTA7a1tmKzQ+PjJdPTA7Zj11O2tbZj4+Ml09MDtrW2YrND4+Ml09MDtpZihrW3E+PjJdfDApe2Y9a1t4Pj4yXXwwO2tbeD4+Ml09ZisxO2lbZj4+MF09MTtmPWtbcT4+Ml18MDtmPVVsKGtbeD4+Ml18MCxmLCgoZnwwKTwwKTw8MzE+PjMxKXwwO2tbeD4+Ml09KGtbeD4+Ml18MCkrZn1sbih5LHQpO2Y9dDtmPV9SKGtbZj4+Ml18MCxrW2YrND4+Ml18MCwyLDApfDA7ZT10O2tbZT4+Ml09ZjtrW2UrND4+Ml09TDtsbih6LHUpO2U9dTtlPV9SKGtbZT4+Ml18MCxrW2UrND4+Ml18MCwyLDApfDA7Zj11O2tbZj4+Ml09ZTtrW2YrND4+Ml09TDt3aGlsZSgxKXtmPXU7YT1rW2Y+PjJdfDA7Zj1rW2YrND4+Ml18MDtiPXQ7ZT1rW2o+PjJdfDA7ZT0kUihrW2I+PjJdfDAsa1tiKzQ+PjJdfDAsZXwwLCgoZXwwKTwwKTw8MzE+PjMxfDApfDA7aWYoISgoYXwwKT09KGV8MCkmKGZ8MCk9PShMfDApKSl7aWYoKChrW24+PjJdfDApPT0wPyhlPXUsYj1rW2UrND4+Ml18MCxmPXQsYT1rW2YrND4+Ml18MCwoYnwwKT4oYXwwKXwoKGJ8MCk9PShhfDApPyhrW2U+PjJdfDApPj4+MD4oa1tmPj4yXXwwKT4+PjA6MCkpOjApPyhiPXUsZT1rW2I+PjJdfDAsYj1rW2IrND4+Ml18MCxhPXQsZj1rW2o+PjJdfDAsZj0kUihrW2E+PjJdfDAsa1thKzQ+PjJdfDAsZnwwLCgoZnwwKTwwKTw8MzE+PjMxfDApfDAsYT1MLChifDApPChhfDApfChifDApPT0oYXwwKSZlPj4+MDw9Zj4+PjApOjApQj0xOX1lbHNlIEI9MTk7aWYoKEJ8MCk9PTE5KXtCPTA7Yz0oa1ttPj4yXXwwKSE9MDtiPXQ7YT11O2Y9Yz9rW2IrND4+Ml18MDprW2ErND4+Ml18MDtlPXc7a1tlPj4yXT1jP2tbYj4+Ml18MDprW2E+PjJdfDA7a1tlKzQ+PjJdPWY7ZT13O2U9JFIoa1tlPj4yXXwwLGtbZSs0Pj4yXXwwLDIsMCl8MDttbih4LHYsZSxMKTtlPXY7ZT1fUihrW2U+PjJdfDAsa1tlKzQ+PjJdfDAsMiwwKXwwO2Y9djtrW2Y+PjJdPWU7a1tmKzQ+PjJdPUw7a1tBPj4yXT0wfWlmKCEoKGtbbT4+Ml18MCk9PTA/KGI9dSxlPWtbYj4+Ml18MCxiPWtbYis0Pj4yXXwwLGE9dCxmPWtbaj4+Ml18MCxmPSRSKGtbYT4+Ml18MCxrW2ErND4+Ml18MCxmfDAsKChmfDApPDApPDwzMT4+MzF8MCl8MCxhPUwsKGJ8MCk8KGF8MCl8KGJ8MCk9PShhfDApJmU+Pj4wPD1mPj4+MCk6MCkpQj0yMjtpZigoQnwwKT09MjI/KEI9MCxlPXUsYj1rW2UrND4+Ml18MCxmPXQsYT1rW2YrND4+Ml18MCwhKChifDApPChhfDApfCgoYnwwKT09KGF8MCk/KGtbZT4+Ml18MCk+Pj4wPD0oa1tmPj4yXXwwKT4+PjA6MCkpKTowKXtpZighKGlba1t5Pj4yXT4+MF0mMjU0KSlicmVhaztsbih5LHQpO2U9dDtlPV9SKGtbZT4+Ml18MCxrW2UrND4+Ml18MCwyLDApfDA7Zj10O2tbZj4+Ml09ZTtrW2YrND4+Ml09TDtjb250aW51ZX1pZighKGlba1t6Pj4yXT4+MF0mMjU0KSlicmVhaztsbih6LHUpO2U9dTtlPV9SKGtbZT4+Ml18MCxrW2UrND4+Ml18MCwyLDApfDA7Zj11O2tbZj4+Ml09ZTtrW2YrND4+Ml09TH1pZihrW0E+PjJdfDApa1t4Pj4yXT1rW0E+PjJdO2htKDAseSk7aG0oMCx6KTtpZighKGlba1t5Pj4yXT4+MF18MCkpYnJlYWs7aWYoIShpW2tbej4+Ml0+PjBdfDApKWJyZWFrO2tbeT4+Ml09KGtbeT4+Ml18MCkrMTtkPWtbeT4+Ml18MDtpZihsW2tbeT4+Ml0+PjBdJjEyOClkPWptKGQscSl8MDtlbHNle2tbcT4+Ml09bFtkPj4wXTtkPTF9a1t5Pj4yXT0oa1t5Pj4yXXwwKStkO2tbej4+Ml09KGtbej4+Ml18MCkrMTtkPWtbej4+Ml18MDtpZihsW2tbej4+Ml0+PjBdJjEyOClkPWptKGQscyl8MDtlbHNle2tbcz4+Ml09bFtkPj4wXTtkPTF9a1t6Pj4yXT0oa1t6Pj4yXXwwKStkfW5tKDAseik7bm0oMCx5KTtrW2tbbz4+Ml0+PjJdPWtbeT4+Ml07a1trW3A+PjJdPj4yXT1rW3o+PjJdO2lmKChrW2tbaD4+Ml0+PjJdfDApPT0oa1t4Pj4yXXwwKSl7a1tnPj4yXT0wO0I9a1tnPj4yXXwwO3I9QztyZXR1cm4gQnwwfWVsc2V7Qj1rW3g+PjJdfDA7a1t4Pj4yXT1CKzE7aVtCPj4wXT0wO2tba1toPj4yXT4+Ml09a1t4Pj4yXTtrW2c+PjJdPTE7Qj1rW2c+PjJdfDA7cj1DO3JldHVybiBCfDB9cmV0dXJuIDB9ZnVuY3Rpb24gbG4oYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wO2M9cjtyPXIrMTZ8MDtmPWMrMTJ8MDtkPWMrOHwwO2U9YztrW2Y+PjJdPWE7a1tkPj4yXT1iO2E9aW0oa1trW2Y+PjJdPj4yXXwwLGUpfDA7Yj1rW2Y+PjJdfDA7a1tiPj4yXT0oa1tiPj4yXXwwKSthO2I9ZTthPWtbZD4+Ml18MDtkPWE7Yj0kUihrW2Q+PjJdfDAsa1tkKzQ+PjJdfDAsa1tiPj4yXXwwLGtbYis0Pj4yXXwwKXwwO2tbYT4+Ml09YjtrW2ErND4+Ml09TDtyPWM7cmV0dXJufWZ1bmN0aW9uIG1uKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTA7ZT1yO3I9cisxNnwwO2g9ZSsxMnwwO2Y9ZSs4fDA7Zz1lO2tbaD4+Ml09YTtrW2Y+PjJdPWI7YT1nO2tbYT4+Ml09YztrW2ErND4+Ml09ZDtkPWtba1toPj4yXT4+Ml18MDthPWc7Yj1rW2Y+PjJdfDA7Yj1fUihrW2E+PjJdfDAsa1thKzQ+PjJdfDAsa1tiPj4yXXwwLGtbYis0Pj4yXXwwKXwwO2I9VWwoZCxiLEwpfDA7ZD1rW2g+PjJdfDA7a1tkPj4yXT0oa1tkPj4yXXwwKStiO2Q9ZztiPWtbZCs0Pj4yXXwwO2E9a1tmPj4yXXwwO2tbYT4+Ml09a1tkPj4yXTtrW2ErND4+Ml09YjtyPWU7cmV0dXJufWZ1bmN0aW9uIG5uKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MDtkPXI7cj1yKzE2fDA7Yj1kKzR8MDtjPWQ7a1tiPj4yXT1hO2tbKGtbYj4+Ml18MCkrOD4+Ml09MDtrWyhrW2I+PjJdfDApKzI4Pj4yXT0xO2tbYz4+Ml09MDt3aGlsZSgxKXtpZigoa1tjPj4yXXwwKT49KGtbKGtbYj4+Ml18MCkrND4+Ml18MCkpYnJlYWs7a1soa1soa1trW2I+PjJdPj4yXXwwKSsoa1tjPj4yXTw8Mik+PjJdfDApKzgwPj4yXT0wO2tbKGtbKGtba1tiPj4yXT4+Ml18MCkrKGtbYz4+Ml08PDIpPj4yXXwwKSs4ND4+Ml09MDthPShrWyhrW2tbYj4+Ml0+PjJdfDApKyhrW2M+PjJdPDwyKT4+Ml18MCkrODh8MDtrW2E+PjJdPTA7a1thKzQ+PjJdPTA7a1tjPj4yXT0oa1tjPj4yXXwwKSsxfXI9ZDtyZXR1cm4gMH1mdW5jdGlvbiBvbihhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaT0wLGo9MCxtPTAsbj0wLG89MCxwPTAscT0wLHM9MCx0PTA7cz1yO3I9cis0OHwwO2Q9cys0NHwwO3Q9cys0MHwwO2k9cyszNnwwO289cyszMnwwO3E9cysyOHwwO2o9cysyNHwwO2U9cysyMHwwO2Y9cysxNnwwO2c9cysxMnwwO209cys4fDA7cD1zKzR8MDtuPXM7a1tkPj4yXT1hO2tbdD4+Ml09YjtrW2k+PjJdPWM7a1tvPj4yXT1rW2tbZD4+Ml0+PjJdO2tbcT4+Ml09MDtrW2U+PjJdPTA7aWYoKChrW3Q+PjJdfDApIT0wPyhsWyhrW2Q+PjJdfDApKzUyPj4wXXwwfDApPT0obFsoa1tvPj4yXXwwKSsyMzE+PjBdfDB8MCk6MCk/KGtbKGtbaT4+Ml18MCkrNjQ+PjJdfDApPD00OjApYj0oa1soa1tpPj4yXXwwKSs2ND4+Ml18MCk+MDtlbHNlIGI9MDtrW2Y+PjJdPWImMTtrW2o+PjJdPTA7d2hpbGUoMSl7aWYoKGtbZj4+Ml18MCkhPTEpYnJlYWs7aWYoKGtbaj4+Ml18MCk+PShrWyhrW2k+PjJdfDApKzY0Pj4yXXwwKSlicmVhaztrW2c+PjJdPShrW2k+PjJdfDApKzcyKygoa1tqPj4yXXwwKSoyNHwwKTtpZighKGtbKGtbZz4+Ml18MCkrMTI+PjJdfDApKXtpZigoa1soa1tnPj4yXXwwKSsyMD4+Ml18MCkhPTA/KGtbKGtbKGtbZz4+Ml18MCkrMjA+PjJdfDApKzM2Pj4yXXwwKT09MDowKWg9MTF9ZWxzZSBoPTExO2lmKChofDApPT0xMSl7aD0wO2tbZj4+Ml09MH1pZihrWyhrW2c+PjJdfDApKzIwPj4yXXwwKWtbZT4+Ml09MTtrW2o+PjJdPShrW2o+PjJdfDApKzF9aWYoISgoa1tmPj4yXXwwKSE9MCYoa1tlPj4yXXwwKSE9MCkpe3Q9cW4oa1tkPj4yXXwwLGtbaT4+Ml18MCl8MDtrW3E+PjJdPXQ7a1soa1tpPj4yXXwwKSs0MD4+Ml09MDt0PWtbcT4+Ml18MDtyPXM7cmV0dXJuIHR8MH1pZigoa1soa1tpPj4yXXwwKSs2OD4+Ml18MCk+PShrWyhrW28+PjJdfDApKzI0Pj4yXXwwKSliPS0xO2Vsc2UgYj1rWyhrW2k+PjJdfDApKzY4Pj4yXXwwO2tbbT4+Ml09YjtrW2o+PjJdPTA7d2hpbGUoMSl7aWYoa1txPj4yXXwwKWJyZWFrO2lmKChrW2o+PjJdfDApPj0oa1soa1tpPj4yXXwwKSs2ND4+Ml18MCkpYnJlYWs7a1twPj4yXT0oa1tpPj4yXXwwKSs3MisoKGtbaj4+Ml18MCkqMjR8MCk7a1tuPj4yXT1rWyhrW3A+PjJdfDApKzIwPj4yXTtpZihrW24+PjJdfDApe3Q9cG4oa1tvPj4yXXwwLGtbbj4+Ml18MCxrW20+PjJdfDAsa1trW3A+PjJdPj4yXXwwLGtbKGtbcD4+Ml18MCkrND4+Ml18MCl8MDtrW3E+PjJdPXR9a1tqPj4yXT0oa1tqPj4yXXwwKSsxfWtbKGtbaT4+Ml18MCkrNDA+PjJdPTE7dD1rW3E+PjJdfDA7cj1zO3JldHVybiB0fDB9ZnVuY3Rpb24gcG4oYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaT0wLGo9MCxtPTAsbj0wLG89MCxwPTAscT0wLHM9MCx0PTA7dD1yO3I9cis0OHwwO209dCs0MHwwO2Y9dCszNnwwO249dCszMnwwO289dCsyOHwwO2c9dCsyNHwwO2g9dCsyMHwwO3A9dCsxNnwwO3E9dCsxMnwwO2k9dCs4fDA7cz10KzR8MDtqPXQ7a1tmPj4yXT1hO2tbbj4+Ml09YjtrW28+PjJdPWM7a1tnPj4yXT1kO2tbaD4+Ml09ZTtrW2k+PjJdPWtbKGtbbj4+Ml18MCkrND4+Ml07a1tzPj4yXT0obFsoa1tmPj4yXXwwKSsyMzE+PjBdfDB8MCkhPTA/MTgyOjE4MztkPXJtKGtbZj4+Ml18MCxrW24+PjJdfDAsa1tnPj4yXXwwLGtbaD4+Ml18MCl8MDtrW3E+PjJdPWQ7aWYoa1txPj4yXXwwKXtrW20+PjJdPWtbcT4+Ml07cz1rW20+PjJdfDA7cj10O3JldHVybiBzfDB9a1twPj4yXT0wO3doaWxlKDEpe2lmKChrW3A+PjJdfDApPj0oa1tpPj4yXXwwKSlicmVhaztrW2o+PjJdPWtbKGtba1tuPj4yXT4+Ml18MCkrKGtbcD4+Ml08PDIpPj4yXTtpZighKGtbKGtbaj4+Ml18MCkrNDA+PjJdfDApKWJyZWFrO2lmKHNtKGtbaj4+Ml18MCxrW2c+PjJdfDAsa1toPj4yXXwwKXwwKWJyZWFrO2tbcD4+Ml09KGtbcD4+Ml18MCkrMX1rWyhrW24+PjJdfDApKzg+PjJdPWtbcD4+Ml07a1twPj4yXT0wO3doaWxlKDEpe2lmKChrW3A+PjJdfDApPj0oa1soa1tuPj4yXXwwKSs4Pj4yXXwwKSl7Zj0xMzticmVha31kPWRtKGtbZj4+Ml18MCxrWyhrW2tbbj4+Ml0+PjJdfDApKyhrW3A+PjJdPDwyKT4+Ml18MCl8MDtrW3E+PjJdPWQ7aWYoa1txPj4yXXwwKXtmPTExO2JyZWFrfWtbcD4+Ml09KGtbcD4+Ml18MCkrMX1pZigoZnwwKT09MTEpe2tbbT4+Ml09a1txPj4yXTtzPWtbbT4+Ml18MDtyPXQ7cmV0dXJuIHN8MH1lbHNlIGlmKChmfDApPT0xMyl7Ym0oa1trW24+PjJdPj4yXXwwLGtbcD4+Ml18MCxrW3A+PjJdfDAsa1tzPj4yXXwwKTtrWyhrW24+PjJdfDApKzI0Pj4yXT1rW28+PjJdO2tbbT4+Ml09MDtzPWtbbT4+Ml18MDtyPXQ7cmV0dXJuIHN8MH1yZXR1cm4gMH1mdW5jdGlvbiBxbihhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wLGg9MCxpPTAsaj0wLGw9MDtqPXI7cj1yKzMyfDA7bD1qKzI4fDA7Yz1qKzI0fDA7Zj1qKzIwfDA7ZD1qKzE2fDA7aT1qKzEyfDA7aD1qKzh8MDtlPWorNHwwO2c9ajtrW2w+PjJdPWE7a1tjPj4yXT1iO2tbZj4+Ml09a1trW2w+PjJdPj4yXTtrW2k+PjJdPTA7a1tkPj4yXT0wO3doaWxlKDEpe2lmKGtbaT4+Ml18MCl7Yz04O2JyZWFrfWlmKChrW2Q+PjJdfDApPj0oa1soa1tjPj4yXXwwKSs2ND4+Ml18MCkpe2M9ODticmVha31rW2g+PjJdPShrW2M+PjJdfDApKzcyKygoa1tkPj4yXXwwKSoyNHwwKTtpZigoa1soa1toPj4yXXwwKSsyMD4+Ml18MCkhPTA/KGtbZT4+Ml09MCxrW2c+PjJdPTAsbD1ybihrW2Y+PjJdfDAsa1toPj4yXXwwLGtbKGtbYz4+Ml18MCkrNjg+PjJdfDAsZSxnKXwwLGtbaT4+Ml09bCwoa1tpPj4yXXwwKT09MCk6MCl7bD1zbihrW2Y+PjJdfDAsa1tjPj4yXXwwLGtbZD4+Ml18MCxrW2c+PjJdfDAsa1tlPj4yXXwwKXwwO2tbaT4+Ml09bH1rW2Q+PjJdPShrW2Q+PjJdfDApKzF9aWYoKGN8MCk9PTgpe3I9ajtyZXR1cm4ga1tpPj4yXXwwfXJldHVybiAwfWZ1bmN0aW9uIHJuKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGk9MCxqPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTA7cT1yO3I9cisxOTJ8MDtmPXErMTc2fDA7Zz1xKzE3MnwwO2g9cSsxNjh8MDtpPXErMTY0fDA7aj1xKzE2MHwwO289cSsxNTZ8MDtuPXErMTUyfDA7cD1xKzI0fDA7bD1xKzh8MDttPXE7a1tmPj4yXT1hO2tbZz4+Ml09YjtrW2g+PjJdPWM7a1tpPj4yXT1kO2tbaj4+Ml09ZTtrW24+PjJdPWtbKGtbZz4+Ml18MCkrMjA+PjJdO2M9cDthPWMrMTI4fDA7ZG97a1tjPj4yXT0wO2M9Yys0fDB9d2hpbGUoKGN8MCk8KGF8MCkpO2tbbCsxMj4+Ml09M3woKGtbKGtbZz4+Ml18MCkrOD4+Ml18MCkhPTA/ODowKXwoKGtbKGtbZz4+Ml18MCkrMTI+PjJdfDApIT0wPzMyOjApfCgoa1toPj4yXXwwKTwoa1soa1tmPj4yXXwwKSsyND4+Ml18MCk/NDowKTtrW2wrOD4+Ml09a1toPj4yXTtrW2w+PjJdPWtba1tnPj4yXT4+Ml07a1tsKzQ+PjJdPWtbKGtbZz4+Ml18MCkrND4+Ml07bD1FbChrW2Y+PjJdfDAsa1tuPj4yXXwwLGwpfDA7a1tvPj4yXT1sO3doaWxlKDEpe2lmKGtbbz4+Ml18MClicmVhaztsPUZsKGtbZj4+Ml18MCxrW24+PjJdfDApfDA7a1tvPj4yXT1sO2lmKDEwMCE9KGx8MCkpYnJlYWs7bD13bihrW2Y+PjJdfDAscCxrWyhrW24+PjJdfDApKzQ4Pj4yXXwwLGtbKGtbbj4+Ml18MCkrNTI+PjJdfDApfDA7a1tvPj4yXT1sfWlmKCEoa1tvPj4yXXwwKSl7bD14bihrW2Y+PjJdfDAscCl8MDtrW28+PjJdPWx9aWYoIShrW28+PjJdfDApKXtrW2tbaj4+Ml0+PjJdPWtbcD4+Ml07a1trW2k+PjJdPj4yXT1rW3ArNjQ+PjJdO3A9a1tuPj4yXXwwO3luKHApO3A9a1tnPj4yXXwwO3A9cCsyMHwwO2tbcD4+Ml09MDtwPWtbbz4+Ml18MDtyPXE7cmV0dXJuIHB8MH1rW20+PjJdPTA7d2hpbGUoMSl7aWYoKGtbbT4+Ml18MCk+PTE2KWJyZWFrO1VkKGtbcCsoa1ttPj4yXTw8Mik+PjJdfDApO2tbbT4+Ml09KGtbbT4+Ml18MCkrMX1wPWtbbj4+Ml18MDt5bihwKTtwPWtbZz4+Ml18MDtwPXArMjB8MDtrW3A+PjJdPTA7cD1rW28+PjJdfDA7cj1xO3JldHVybiBwfDB9ZnVuY3Rpb24gc24oYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaT0wLGo9MCxtPTAsbj0wLG89MCxwPTAscT0wLHM9MCx0PTA7dD1yO3I9cis0OHwwO2Y9dCs0MHwwO2c9dCszNnwwO2g9dCszMnwwO2k9dCsyOHwwO2o9dCsyNHwwO3M9dCsyMHwwO3A9dCsxNnwwO3E9dCsxMnwwO249dCs4fDA7bz10KzR8MDttPXQ7a1tmPj4yXT1hO2tbZz4+Ml09YjtrW2g+PjJdPWM7a1tpPj4yXT1kO2tbaj4+Ml09ZTtrW3M+PjJdPTA7Yz1rW2c+PjJdfDA7ZG8gaWYoIShrW2k+PjJdfDApKXtVZChrW2M+PjJdfDApO2tba1tnPj4yXT4+Ml09MDtrWyhrW2c+PjJdfDApKzQ+PjJdPTB9ZWxzZXtpZigoa1tjKzQ0Pj4yXXwwKTwwKXtrW2tbZz4+Ml0+PjJdPWtbaT4+Ml07a1soa1tnPj4yXXwwKSs0Pj4yXT1rW2o+PjJdO2JyZWFrfWlmKCEoa1trW2c+PjJdPj4yXXwwKSl7VWQoa1tpPj4yXXwwKTticmVha31jPWtba1tnPj4yXT4+Ml18MDtpZigoa1soa1tnPj4yXXwwKSs0ND4+Ml18MCk8KGtbaD4+Ml18MCkpe2tbcD4+Ml09YztrW24+PjJdPWtbKGtbZz4+Ml18MCkrND4+Ml07a1txPj4yXT1rW2k+PjJdO2tbbz4+Ml09a1tqPj4yXTtrW20+PjJdPShrW2g+PjJdfDApLShrWyhrW2c+PjJdfDApKzQ0Pj4yXXwwKX1lbHNle2tbcT4+Ml09YztrW28+PjJdPWtbKGtbZz4+Ml18MCkrND4+Ml07a1twPj4yXT1rW2k+PjJdO2tbbj4+Ml09a1tqPj4yXTtrW20+PjJdPShrWyhrW2c+PjJdfDApKzQ0Pj4yXXwwKS0oa1toPj4yXXwwKX1uPXRuKGxbKGtbZj4+Ml18MCkrMjMxPj4wXXwwLGtbbT4+Ml18MCxrW3A+PjJdfDAsa1tuPj4yXXwwLHEsbyl8MDtrW3M+PjJdPW47VWQoa1twPj4yXXwwKTtrW2tbZz4+Ml0+PjJdPWtbcT4+Ml07a1soa1tnPj4yXXwwKSs0Pj4yXT1rW28+PjJdfXdoaWxlKDApO2lmKChrW2g+PjJdfDApPD0oa1soa1tnPj4yXXwwKSs0ND4+Ml18MCkpe3M9a1tzPj4yXXwwO3I9dDtyZXR1cm4gc3wwfWtbKGtbZz4+Ml18MCkrNDQ+PjJdPWtbaD4+Ml07cz1rW3M+PjJdfDA7cj10O3JldHVybiBzfDB9ZnVuY3Rpb24gdG4oYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGk9MCxqPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTAsRT0wO0M9cjtyPXIrMTEyfDA7Zz1DKzEwNHwwO2g9QysxMDB8MDtpPUMrOTZ8MDtEPUMrOTJ8MDtFPUMrODh8MDtqPUMrODR8MDtsPUMrODB8MDtxPUMrMzJ8MDtzPUMrMjR8MDt1PUMrMTZ8MDtuPUMrNzZ8MDt6PUMrNzJ8MDtBPUMrNjh8MDt4PUMrNjR8MDt5PUMrNjB8MDt3PUMrNTZ8MDtvPUMrNTJ8MDttPUMrNDh8MDt0PUMrOHwwO0I9Qys0NHwwO3Y9QztwPUMrNDB8MDtrW2g+PjJdPWE7a1tpPj4yXT1iO2tbRD4+Ml09YztrW0U+PjJdPWQ7a1tqPj4yXT1lO2tbbD4+Ml09ZjtmPXE7a1tmPj4yXT0wO2tbZis0Pj4yXT0wO2Y9cztrW2Y+PjJdPTA7a1tmKzQ+PjJdPTA7Zj11O2tbZj4+Ml09MDtrW2YrND4+Ml09MDtrW24+PjJdPWtba1tqPj4yXT4+Ml07a1t6Pj4yXT0oa1tEPj4yXXwwKSsoa1tFPj4yXXwwKTtrW0E+PjJdPShrW24+PjJdfDApKyhrW2tbbD4+Ml0+PjJdfDApO2tbeD4+Ml09a1tEPj4yXTtrW3k+PjJdPWtbbj4+Ml07a1tvPj4yXT0wO2lmKGtbaD4+Ml18MCl7RT1TZCgoa1trW2w+PjJdPj4yXXwwKSsxMHwwKXwwO2tbbT4+Ml09RTtpZighKGtbbT4+Ml18MCkpe2tbZz4+Ml09NztFPWtbZz4+Ml18MDtyPUM7cmV0dXJuIEV8MH19ZWxzZSBrW20+PjJdPWtbbj4+Ml07a1t3Pj4yXT1rW20+PjJdO3VuKHgsa1t6Pj4yXXwwLDAscSk7dW4oeSxrW0E+PjJdfDAsMCxzKTt3aGlsZSgxKXtpZighKChrW3g+PjJdfDApIT0wPyhrW3k+PjJdfDApIT0wOjApKWJyZWFrO0U9KGtbaD4+Ml18MCkhPTA/LTE6MTtmPXE7RD1zO0Q9X1Ioa1tmPj4yXXwwLGtbZis0Pj4yXXwwLGtbRD4+Ml18MCxrW0QrND4+Ml18MCl8MDtEPWtTKEV8MCwoKEV8MCk8MCk8PDMxPj4zMXwwLER8MCxMfDApfDA7RT10O2tbRT4+Ml09RDtrW0UrND4+Ml09TDtFPXQ7aWYoISgoa1tFPj4yXXwwKT09MCYoa1tFKzQ+PjJdfDApPT0wKSlpZigoa1t0KzQ+PjJdfDApPDApe25tKDAseCk7dW4oeCxrW3o+PjJdfDAsa1toPj4yXXwwLHEpO2NvbnRpbnVlfWVsc2V7bm0oMCx5KTt1bih5LGtbQT4+Ml18MCxrW2g+PjJdfDAscyk7Y29udGludWV9ZWxzZXtrW0I+PjJdPWtbdz4+Ml07Zj11O0Q9a1tmKzQ+PjJdfDA7RT12O2tbRT4+Ml09a1tmPj4yXTtrW0UrND4+Ml09RDtrW3A+PjJdPWtbbz4+Ml07RT1xO3ZuKHcsa1toPj4yXXwwLHUsbyxrW0U+PjJdfDAsa1tFKzQ+PjJdfDApO2lmKCEoa24odyxrW2k+PjJdfDAsMCwxLHgseSl8MCkpe2tbdz4+Ml09a1tCPj4yXTtmPXY7RD1rW2YrND4+Ml18MDtFPXU7a1tFPj4yXT1rW2Y+PjJdO2tbRSs0Pj4yXT1EO2tbbz4+Ml09a1twPj4yXX11bih4LGtbej4+Ml18MCxrW2g+PjJdfDAscSk7dW4oeSxrW0E+PjJdfDAsa1toPj4yXXwwLHMpO2NvbnRpbnVlfX1rW2tbbD4+Ml0+PjJdPShrW3c+PjJdfDApLShrW20+PjJdfDApO2lmKGtbaD4+Ml18MCl7VWQoa1tuPj4yXXwwKTtrW2tbaj4+Ml0+PjJdPWtbbT4+Ml19a1tnPj4yXT0wO0U9a1tnPj4yXXwwO3I9QztyZXR1cm4gRXwwfWZ1bmN0aW9uIHVuKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaT0wLGo9MDtpPXI7cj1yKzMyfDA7ZT1pKzIwfDA7aj1pKzE2fDA7aD1pKzEyfDA7Zz1pKzh8MDtmPWk7a1tlPj4yXT1hO2tbaj4+Ml09YjtrW2g+PjJdPWM7a1tnPj4yXT1kO2M9a1tlPj4yXXwwO2lmKChrW2tbZT4+Ml0+PjJdfDApPj4+MD49KGtbaj4+Ml18MCk+Pj4wKXtrW2M+PjJdPTA7cj1pO3JldHVybn1hPWltKGtbYz4+Ml18MCxmKXwwO2U9a1tlPj4yXXwwO2tbZT4+Ml09KGtbZT4+Ml18MCkrYTtlPWY7YT1rW2U+PjJdfDA7ZT1rW2UrND4+Ml18MDtjPWtbZz4+Ml18MDtkPWM7Yj1rW2Q+PjJdfDA7ZD1rW2QrND4+Ml18MDtpZihrW2g+PjJdfDApe2g9X1IoYnwwLGR8MCxhfDAsZXwwKXwwO2o9YztrW2o+PjJdPWg7a1tqKzQ+PjJdPUw7cj1pO3JldHVybn1lbHNle2g9JFIoYnwwLGR8MCxhfDAsZXwwKXwwO2o9YztrW2o+PjJdPWg7a1tqKzQ+PjJdPUw7cj1pO3JldHVybn19ZnVuY3Rpb24gdm4oYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGk9MCxqPTAsbD0wLG09MCxuPTA7bT1yO3I9ciszMnwwO2c9bSsyOHwwO249bSsyNHwwO2g9bSsyMHwwO2k9bSsxNnwwO2o9bSs4fDA7bD1tO2tbZz4+Ml09YTtrW24+PjJdPWI7a1toPj4yXT1jO2tbaT4+Ml09ZDthPWo7a1thPj4yXT1lO2tbYSs0Pj4yXT1mO2lmKChrW24+PjJdfDApIT0wPyhrW2tbaT4+Ml0+PjJdfDApIT0wOjApe249a1toPj4yXXwwO2E9ajthPV9SKGtbbj4+Ml18MCxrW24rND4+Ml18MCxrW2E+PjJdfDAsa1thKzQ+PjJdfDApfDA7bj1sO2tbbj4+Ml09YTtrW24rND4+Ml09TH1lbHNle249ajthPWtbaD4+Ml18MDthPV9SKGtbbj4+Ml18MCxrW24rND4+Ml18MCxrW2E+PjJdfDAsa1thKzQ+PjJdfDApfDA7bj1sO2tbbj4+Ml09YTtrW24rND4+Ml09TH1hPWw7YT1VbChrW2tbZz4+Ml0+PjJdfDAsa1thPj4yXXwwLGtbYSs0Pj4yXXwwKXwwO2M9a1tnPj4yXXwwO2tbYz4+Ml09KGtbYz4+Ml18MCkrYTtjPWo7YT1rW2MrND4+Ml18MDtuPWtbaD4+Ml18MDtrW24+PjJdPWtbYz4+Ml07a1tuKzQ+PjJdPWE7a1trW2k+PjJdPj4yXT0xO3I9bTtyZXR1cm59ZnVuY3Rpb24gd24oYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxpPTAsaj0wLG09MCxuPTAsbz0wLHA9MCxxPTAscz0wLHQ9MDt0PXI7cj1yKzQ4fDA7Zj10KzQwfDA7Zz10KzM2fDA7aD10KzMyfDA7aT10KzI4fDA7ZT10KzI0fDA7aj10KzIwfDA7bz10KzE2fDA7bj10KzEyfDA7bT10Kzh8MDtwPXQrNHwwO3E9dDtrW2c+PjJdPWE7a1toPj4yXT1iO2tbaT4+Ml09YztrW2U+PjJdPWQ7YTpkbyBpZighKGtba1toPj4yXT4+Ml18MCkpe3M9U2QoKGtbZT4+Ml18MCkrMTArMXwwKXwwO2tba1toPj4yXT4+Ml09cztrWyhrW2g+PjJdfDApKzY0Pj4yXT1rW2U+PjJdO2lmKGtba1toPj4yXT4+Ml18MCl7YlMoa1trW2g+PjJdPj4yXXwwLGtbaT4+Ml18MCxrW2U+PjJdfDApfDA7YnJlYWt9a1tmPj4yXT03O3M9a1tmPj4yXXwwO3I9dDtyZXR1cm4gc3wwfWVsc2V7a1tqPj4yXT1rW2k+PjJdO2tbbz4+Ml09a1tlPj4yXTtrW24+PjJdPTA7d2hpbGUoMSl7aWYoKGtbbj4+Ml18MCk+PTE2KWJyZWFrIGE7aWYoIShrWyhrW2g+PjJdfDApKyhrW24+PjJdPDwyKT4+Ml18MCkpe3M9ODticmVha31lPXpuKGxbKGtbZz4+Ml18MCkrMjMxPj4wXXwwLGtbaj4+Ml18MCxrW28+PjJdfDAsa1soa1toPj4yXXwwKSsoa1tuPj4yXTw8Mik+PjJdfDAsa1soa1toPj4yXXwwKSs2NCsoa1tuPj4yXTw8Mik+PjJdfDAsbSxwKXwwO2tbcT4+Ml09ZTtlPShrW2o+PjJdfDApIT0oa1tpPj4yXXwwKTtpZihrW3E+PjJdfDApYnJlYWs7aWYoZSlVZChrW2o+PjJdfDApO1VkKGtbKGtbaD4+Ml18MCkrKGtbbj4+Ml08PDIpPj4yXXwwKTtrWyhrW2g+PjJdfDApKyhrW24+PjJdPDwyKT4+Ml09MDtrW2o+PjJdPWtbbT4+Ml07a1tvPj4yXT1rW3A+PjJdO2lmKCgoa1tuPj4yXXwwKSsxfDApPT0xNil7a1soa1toPj4yXXwwKSsoa1tuPj4yXTw8Mik+PjJdPWtbaj4+Ml07a1soa1toPj4yXXwwKSs2NCsoa1tuPj4yXTw8Mik+PjJdPWtbbz4+Ml19a1tuPj4yXT0oa1tuPj4yXXwwKSsxfWlmKChzfDApPT04KXtrWyhrW2g+PjJdfDApKyhrW24+PjJdPDwyKT4+Ml09a1tqPj4yXTtrWyhrW2g+PjJdfDApKzY0KyhrW24+PjJdPDwyKT4+Ml09a1tvPj4yXTticmVha31pZihlKVVkKGtbaj4+Ml18MCk7a1tmPj4yXT1rW3E+PjJdO3M9a1tmPj4yXXwwO3I9dDtyZXR1cm4gc3wwfXdoaWxlKDApO2tbZj4+Ml09MDtzPWtbZj4+Ml18MDtyPXQ7cmV0dXJuIHN8MH1mdW5jdGlvbiB4bihhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wLGg9MCxpPTAsaj0wLG09MCxuPTA7bj1yO3I9cis0OHwwO2c9biszMnwwO2M9bisyOHwwO2g9bisyNHwwO2k9bisyMHwwO2o9bisxNnwwO2U9bisxMnwwO2Y9bis4fDA7ZD1uKzR8MDttPW47a1tjPj4yXT1hO2tbaD4+Ml09YjtrW2k+PjJdPTA7a1tqPj4yXT0wO2tbZT4+Ml09MDthOndoaWxlKDEpe2lmKChrW2U+PjJdfDApPj0xNil7Yz0xMDticmVha31kbyBpZihrWyhrW2g+PjJdfDApKyhrW2U+PjJdPDwyKT4+Ml18MCl7aWYoIShrW2k+PjJdfDApKXtrW2k+PjJdPWtbKGtbaD4+Ml18MCkrKGtbZT4+Ml08PDIpPj4yXTtrW2o+PjJdPWtbKGtbaD4+Ml18MCkrNjQrKGtbZT4+Ml08PDIpPj4yXTtrWyhrW2g+PjJdfDApKyhrW2U+PjJdPDwyKT4+Ml09MDticmVha31iPXpuKGxbKGtbYz4+Ml18MCkrMjMxPj4wXXwwLGtbKGtbaD4+Ml18MCkrKGtbZT4+Ml08PDIpPj4yXXwwLGtbKGtbaD4+Ml18MCkrNjQrKGtbZT4+Ml08PDIpPj4yXXwwLGtbaT4+Ml18MCxrW2o+PjJdfDAsZCxmKXwwO2tbbT4+Ml09YjtpZihrW20+PjJdfDApe2M9NzticmVhayBhfVVkKGtbKGtbaD4+Ml18MCkrKGtbZT4+Ml08PDIpPj4yXXwwKTtVZChrW2k+PjJdfDApO2tbKGtbaD4+Ml18MCkrKGtbZT4+Ml08PDIpPj4yXT0wO2tbaT4+Ml09a1tkPj4yXTtrW2o+PjJdPWtbZj4+Ml19d2hpbGUoMCk7a1tlPj4yXT0oa1tlPj4yXXwwKSsxfWlmKChjfDApPT03KXtVZChrW2k+PjJdfDApO2tbZz4+Ml09a1ttPj4yXTttPWtbZz4+Ml18MDtyPW47cmV0dXJuIG18MH1lbHNlIGlmKChjfDApPT0xMCl7a1trW2g+PjJdPj4yXT1rW2k+PjJdO2tbKGtbaD4+Ml18MCkrNjQ+PjJdPWtbaj4+Ml07a1tnPj4yXT0wO209a1tnPj4yXXwwO3I9bjtyZXR1cm4gbXwwfXJldHVybiAwfWZ1bmN0aW9uIHluKGEpe2E9YXwwO3ZhciBiPTAsYz0wO2I9cjtyPXIrMTZ8MDtjPWI7a1tjPj4yXT1hO0xsKGtbYz4+Ml18MCk7VWQoa1tjPj4yXXwwKTtyPWI7cmV0dXJufWZ1bmN0aW9uIHpuKGEsYixjLGQsZSxmLGcpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO3ZhciBoPTAsaT0wLGo9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wO3k9cjtyPXIrOTZ8MDtoPXkrODh8MDtpPXkrODR8MDtDPXkrODB8MDtBPXkrNzZ8MDtCPXkrNzJ8MDt6PXkrNjh8MDtqPXkrNjR8MDtsPXkrNjB8MDtvPXkrMjR8MDtwPXkrMTZ8MDtzPXkrOHwwO3c9eSs1NnwwO3g9eSs1MnwwO3U9eSs0OHwwO3Y9eSs0NHwwO3Q9eSs0MHwwO209eSszNnwwO249eSszMnwwO3E9eTtrW2k+PjJdPWE7a1tDPj4yXT1iO2tbQT4+Ml09YztrW0I+PjJdPWQ7a1t6Pj4yXT1lO2tbaj4+Ml09ZjtrW2w+PjJdPWc7Zz1vO2tbZz4+Ml09MDtrW2crND4+Ml09MDtnPXA7a1tnPj4yXT0wO2tbZys0Pj4yXT0wO2c9cztrW2c+PjJdPTA7a1tnKzQ+PjJdPTA7a1t3Pj4yXT0oa1tDPj4yXXwwKSsoa1tBPj4yXXwwKTtrW3g+PjJdPShrW0I+PjJdfDApKyhrW3o+PjJdfDApO2tbdT4+Ml09a1tDPj4yXTtrW3Y+PjJdPWtbQj4+Ml07a1tuPj4yXT0wO2tba1tqPj4yXT4+Ml09MDtrW2tbbD4+Ml0+PjJdPTA7Zz1TZCgoa1tBPj4yXXwwKSsoa1t6Pj4yXXwwKSsxMC0xfDApfDA7a1ttPj4yXT1nO2lmKCEoa1ttPj4yXXwwKSl7a1toPj4yXT03O0M9a1toPj4yXXwwO3I9eTtyZXR1cm4gQ3wwfWtbdD4+Ml09a1ttPj4yXTt1bih1LGtbdz4+Ml18MCwwLG8pO3VuKHYsa1t4Pj4yXXwwLDAscCk7d2hpbGUoMSl7aWYoISgoa1t1Pj4yXXwwKSE9MD8xOihrW3Y+PjJdfDApIT0wKSlicmVhaztDPShrW2k+PjJdfDApIT0wPy0xOjE7QT1vO0I9cDtCPV9SKGtbQT4+Ml18MCxrW0ErND4+Ml18MCxrW0I+PjJdfDAsa1tCKzQ+PjJdfDApfDA7Qj1rUyhDfDAsKChDfDApPDApPDwzMT4+MzF8MCxCfDAsTHwwKXwwO0M9cTtrW0M+PjJdPUI7a1tDKzQ+PjJdPUw7Qz1xO2lmKChrW3Y+PjJdfDApIT0wJihrW3U+PjJdfDApIT0wJigoa1tDPj4yXXwwKT09MCYoa1tDKzQ+PjJdfDApPT0wKSl7Qz1vO3ZuKHQsa1tpPj4yXXwwLHMsbixrW0M+PjJdfDAsa1tDKzQ+PjJdfDApO0FuKHQsdSx2KTt1bih1LGtbdz4+Ml18MCxrW2k+PjJdfDAsbyk7dW4odixrW3g+PjJdfDAsa1tpPj4yXXwwLHApO2NvbnRpbnVlfWlmKChrW3Y+PjJdfDApIT0wPyEoKGtbdT4+Ml18MCkhPTAmKGtbcSs0Pj4yXXwwKTwwKTowKXtDPXA7dm4odCxrW2k+PjJdfDAscyxuLGtbQz4+Ml18MCxrW0MrND4+Ml18MCk7bm0odCx2KTt1bih2LGtbeD4+Ml18MCxrW2k+PjJdfDAscCk7Y29udGludWV9Qz1vO3ZuKHQsa1tpPj4yXXwwLHMsbixrW0M+PjJdfDAsa1tDKzQ+PjJdfDApO25tKHQsdSk7dW4odSxrW3c+PjJdfDAsa1tpPj4yXXwwLG8pfWtba1tqPj4yXT4+Ml09a1ttPj4yXTtrW2tbbD4+Ml0+PjJdPShrW3Q+PjJdfDApLShrW20+PjJdfDApO2tbaD4+Ml09MDtDPWtbaD4+Ml18MDtyPXk7cmV0dXJuIEN8MH1mdW5jdGlvbiBBbihhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLG09MCxuPTAsbz0wLHA9MCxxPTAscz0wLHQ9MCx1PTA7dD1yO3I9cis2NHwwO2Q9dCs1NnwwO2U9dCs1MnwwO2Y9dCs0OHwwO3A9dCs0NHwwO3E9dCs0MHwwO3M9dCszNnwwO2o9dCszMnwwO209dCsyOHwwO2c9dCsxNnwwO2g9dCs4fDA7bj10O289dCsyNHwwO2tbZD4+Ml09YTtrW2U+PjJdPWI7a1tmPj4yXT1jO2tbcD4+Ml09a1trW2Q+PjJdPj4yXTtrW3E+PjJdPWtba1tlPj4yXT4+Ml07a1tzPj4yXT1rW2tbZj4+Ml0+PjJdO2E6d2hpbGUoMSl7aWYoKGlba1txPj4yXT4+MF18MCk9PTA/KGlba1tzPj4yXT4+MF18MCk9PTA6MClicmVhazthPWtbcT4+Ml18MDtkbyBpZigoaVtrW3E+PjJdPj4wXXwwKT09MSl7Yj0oa1txPj4yXXwwKSsxfDA7aWYobFthKzE+PjBdJjEyOCl7am0oYixqKXwwO2JyZWFrfWVsc2V7a1tqPj4yXT1sW2I+PjBdO2JyZWFrfX1lbHNlIGlmKCEoaVthPj4wXXwwKSl7a1tqPj4yXT0yMTQ3NDgzNjQ3O2JyZWFrfWVsc2V7a1tqPj4yXT0wO2JyZWFrfXdoaWxlKDApO2E9a1tzPj4yXXwwO2RvIGlmKChpW2tbcz4+Ml0+PjBdfDApPT0xKXtiPShrW3M+PjJdfDApKzF8MDtpZihsW2ErMT4+MF0mMTI4KXtqbShiLG0pfDA7YnJlYWt9ZWxzZXtrW20+PjJdPWxbYj4+MF07YnJlYWt9fWVsc2UgaWYoIShpW2E+PjBdfDApKXtrW20+PjJdPTIxNDc0ODM2NDc7YnJlYWt9ZWxzZXtrW20+PjJdPTA7YnJlYWt9d2hpbGUoMCk7aWYoKGtbaj4+Ml18MCkhPShrW20+PjJdfDApKWlmKChrW2o+PjJdfDApPChrW20+PjJdfDApKXtjPUJuKHAsa1tqPj4yXXwwKXwwO2tbcT4+Ml09KGtbcT4+Ml18MCkrYztobShwLHEpO2NvbnRpbnVlfWVsc2V7Yz1CbihwLGtbbT4+Ml18MCl8MDtrW3M+PjJdPShrW3M+PjJdfDApK2M7aG0ocCxzKTtjb250aW51ZX1jPWc7a1tjPj4yXT0wO2tbYys0Pj4yXT0wO2M9aDtrW2M+PjJdPTA7a1tjKzQ+PjJdPTA7Yz1uO2tbYz4+Ml09MDtrW2MrND4+Ml09MDtjPUJuKHAsa1tqPj4yXXwwKXwwO2tbbz4+Ml09YztrW3E+PjJdPShrW3E+PjJdfDApKyhrW28+PjJdfDApO2tbcz4+Ml09KGtbcz4+Ml18MCkrKGtbbz4+Ml18MCk7bG4ocSxnKTtsbihzLGgpO3doaWxlKDEpe2I9Zzt1PWtbYis0Pj4yXXwwO2E9aDtjPWtbYSs0Pj4yXXwwO2E9KHV8MCk8KGN8MCl8KCh1fDApPT0oY3wwKT8oa1tiPj4yXXwwKT4+PjA8KGtbYT4+Ml18MCk+Pj4wOjApO2I9ZztjPWg7bW4ocCxuLGE/a1tiPj4yXXwwOmtbYz4+Ml18MCxhP2tbYis0Pj4yXXwwOmtbYys0Pj4yXXwwKTtjPW47Yz1fUihrW2M+PjJdfDAsa1tjKzQ+PjJdfDAsMiwwKXwwO2I9bjtrW2I+PjJdPWM7a1tiKzQ+PjJdPUw7Yj1nO2M9aDtkbyBpZighKChrW2I+PjJdfDApPT0oa1tjPj4yXXwwKT8oa1tiKzQ+PjJdfDApPT0oa1tjKzQ+PjJdfDApOjApKXtjPWc7YT1rW2MrND4+Ml18MDt1PWg7Yj1rW3UrND4+Ml18MDtpZigoYXwwKTwoYnwwKXwoKGF8MCk9PShifDApPyhrW2M+PjJdfDApPj4+MDwoa1t1Pj4yXXwwKT4+PjA6MCkpe0NuKHEsZyk7YnJlYWt9ZWxzZXtDbihzLGgpO2JyZWFrfX1lbHNle0NuKHEsZyk7Q24ocyxoKX13aGlsZSgwKTtjPWc7dT1oO2lmKCEoKGtbYz4+Ml18MCkhPTIxNDc0ODM2NDd8KGtbYys0Pj4yXXwwKSE9MD8xOihrW3U+PjJdfDApIT0yMTQ3NDgzNjQ3fChrW3UrND4+Ml18MCkhPTApKWNvbnRpbnVlIGF9fXU9a1twPj4yXXwwO2tbcD4+Ml09dSsxO2lbdT4+MF09MDtrW2tbZD4+Ml0+PjJdPWtbcD4+Ml07a1trW2U+PjJdPj4yXT0oa1txPj4yXXwwKSsxO2tba1tmPj4yXT4+Ml09KGtbcz4+Ml18MCkrMTtyPXQ7cmV0dXJufWZ1bmN0aW9uIEJuKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTA7Zz1yO3I9cisxNnwwO2M9ZysxMnwwO2Q9Zys4fDA7ZT1nKzR8MDtmPWc7a1tjPj4yXT1hO2tbZD4+Ml09YjtrW2U+PjJdPTA7aWYoIShrW2Q+PjJdfDApKXthPWtbZT4+Ml18MDtyPWc7cmV0dXJuIGF8MH1rW2Y+PjJdPWtba1tjPj4yXT4+Ml07YT1rW2Q+PjJdfDA7YT0xKyhVbCgoa1tmPj4yXXwwKSsxfDAsYSwoKGF8MCk8MCk8PDMxPj4zMSl8MCl8MDtrW2U+PjJdPWE7aVtrW2Y+PjJdPj4wXT0xO2tba1tjPj4yXT4+Ml09KGtbZj4+Ml18MCkrKGtbZT4+Ml18MCk7YT1rW2U+PjJdfDA7cj1nO3JldHVybiBhfDB9ZnVuY3Rpb24gQ24oYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTA7ZT1yO3I9cisxNnwwO2M9ZSs0fDA7ZD1lO2tbYz4+Ml09YTtrW2Q+PjJdPWI7aWYoaVtrW2tbYz4+Ml0+PjJdPj4wXSYyNTQpe2xuKGtbYz4+Ml18MCxrW2Q+PjJdfDApO2E9a1tkPj4yXXwwO2I9YTtiPV9SKGtbYj4+Ml18MCxrW2IrND4+Ml18MCwyLDApfDA7a1thPj4yXT1iO2tbYSs0Pj4yXT1MO3I9ZTtyZXR1cm59ZWxzZXthPWtbZD4+Ml18MDtrW2E+PjJdPTIxNDc0ODM2NDc7a1thKzQ+PjJdPTA7cj1lO3JldHVybn19ZnVuY3Rpb24gRG4oYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTA7aD1yO3I9ciszMnwwO2M9aCsxNnwwO2Q9aCsxMnwwO2U9aCs4fDA7Zz1oKzR8MDtmPWg7a1tkPj4yXT1hO2tbZT4+Ml09YjtrW2c+PjJdPTA7aWYoKGlbKGtbZT4+Ml18MCkrNz4+MF18MCkhPTA/KGtbZj4+Ml09MCxmPVBuKGtbZT4+Ml18MCxmKXwwLGtbZz4+Ml09Ziwoa1tnPj4yXXwwKT09MCk6MCl7Zj0oa1tlPj4yXXwwKSszMnwwO1ZlKGtbKGtbZT4+Ml18MCkrOD4+Ml18MCwxLGtbZj4+Ml18MCxrW2YrND4+Ml18MCl8MDtpWyhrW2U+PjJdfDApKzc+PjBdPTA7aWYoMTAwPT0oRGUoa1soa1tlPj4yXXwwKSs4Pj4yXXwwKXwwKSl7a1tjPj4yXT0wO2c9a1tjPj4yXXwwO3I9aDtyZXR1cm4gZ3wwfWY9Z2Uoa1soa1tlPj4yXXwwKSs4Pj4yXXwwKXwwO2tbZz4+Ml09ZjtpZigoa1tnPj4yXXwwKT09MD8oa1soa1trW2U+PjJdPj4yXXwwKSs0MD4+Ml18MCk9PTA6MCl7a1tnPj4yXT0yNjc7aVsoa1tlPj4yXXwwKSs2Pj4wXT0xfX1pZigoa1tnPj4yXXwwKSE9MCYoa1tkPj4yXXwwKSE9MClBZShrW2Q+PjJdfDAsa1tnPj4yXXwwKTtrW2M+PjJdPWtbZz4+Ml07Zz1rW2M+PjJdfDA7cj1oO3JldHVybiBnfDB9ZnVuY3Rpb24gRW4oYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wLGU9MCxmPTAsZz0wLGg9MCxpPTAsaj0wLG09MCxuPTAsbz0wLHA9MCxxPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTA7dj1yO3I9cis4MHwwO2I9dis2NHwwO3E9dis2MHwwO2M9dis1NnwwO2Q9djtqPXYrNTJ8MDtpPXYrNDh8MDtvPXYrNDR8MDttPXYrNDB8MDtzPXYrMzZ8MDtwPXYrMzJ8MDt0PXYrMjh8MDtoPXYrMjR8MDtlPXYrMjB8MDtmPXYrMTZ8MDtnPXYrMTJ8MDtuPXYrOHwwO2tbYj4+Ml09YTtrW3E+PjJdPTA7aWYoIShrWyhrW2I+PjJdfDApKzI0Pj4yXXwwKSl7dT1rW3E+PjJdfDA7cj12O3JldHVybiB1fDB9a1tpPj4yXT1rW2tbYj4+Ml0+PjJdO2tbbz4+Ml09a1soa1tpPj4yXXwwKSszNj4+Ml07a1ttPj4yXT1rW2tbbz4+Ml0+PjJdO3c9TmUoa1soa1tiPj4yXXwwKSs4Pj4yXXwwLDApfDA7YT1kO2tbYT4+Ml09dztrW2ErND4+Ml09TDtrW2M+PjJdPTA7d2hpbGUoMSl7aWYoISgoa1tjPj4yXXwwKTwoa1soa1tpPj4yXXwwKSsyND4+Ml18MCk/KGtbcT4+Ml18MCk9PTA6MCkpYnJlYWs7aWYoIShsWyhrWyhrW2k+PjJdfDApKzMyPj4yXXwwKSsoa1tjPj4yXXwwKT4+MF18MCkpe3c9T2Uoa1soa1tiPj4yXXwwKSs4Pj4yXXwwLChrW2M+PjJdfDApKzF8MCl8MDtrW3M+PjJdPXc7a1twPj4yXT0wO3c9TW4oa1tvPj4yXXwwLGtbKGtbYj4+Ml18MCkrMTY+PjJdfDAsa1tzPj4yXXwwLC0xLHApfDA7a1txPj4yXT13O2E6d2hpbGUoMSl7aWYoa1txPj4yXXwwKWJyZWFrO2tbaD4+Ml09MDtrW2U+PjJdPTA7a1tmPj4yXT0wO2tbZz4+Ml09MDt3PWFjW2tbKGtbbT4+Ml18MCkrMjA+PjJdJjI1NV0oa1twPj4yXXwwLHQsaCxlLGYsZyl8MDtrW3E+PjJdPXc7a1tqPj4yXT1rWyhrW2I+PjJdfDApKzI0Pj4yXTt3aGlsZSgxKXtpZighKChrW2o+PjJdfDApIT0wPyhrW3E+PjJdfDApPT0wOjApKWNvbnRpbnVlIGE7a1tuPj4yXT1rW2tbaj4+Ml0+PjJdO2lmKCEoKGtbKGtbaj4+Ml18MCkrND4+Ml18MCk8KGtbKGtbaT4+Ml18MCkrMjQ+PjJdfDApPyhrWyhrW2o+PjJdfDApKzQ+PjJdfDApIT0oa1tjPj4yXXwwKTowKSl1PTExO2RvIGlmKCh1fDApPT0xMT8odT0wLChrW2c+PjJdfDApPT0wPzE6KGtbKGtbbj4+Ml18MCkrMTI+PjJdfDApPT0wKTowKXtpZigoa1soa1tuPj4yXXwwKSs0Pj4yXXwwKSE9KGtbaD4+Ml18MCkpe2lmKCEoa1soa1tuPj4yXXwwKSs4Pj4yXXwwKSlicmVhaztpZigoa1soa1tuPj4yXXwwKSs0Pj4yXXwwKT49KGtbaD4+Ml18MCkpYnJlYWt9aWYoIShvUihrW3Q+PjJdfDAsa1trW24+PjJdPj4yXXwwLGtbKGtbbj4+Ml18MCkrND4+Ml18MCl8MCkpe3g9ZDthPWtbYz4+Ml18MDt3PWtbZz4+Ml18MDtObigoa1tqPj4yXXwwKSsxMnwwLGtbeD4+Ml18MCxrW3grND4+Ml18MCxhLCgoYXwwKTwwKTw8MzE+PjMxLHcsKCh3fDApPDApPDwzMT4+MzEscSl8MH19d2hpbGUoMCk7a1tqPj4yXT1rWyhrW2o+PjJdfDApKzg+PjJdfX1pZihrW3A+PjJdfDApYmNba1soa1ttPj4yXXwwKSsxNj4+Ml0mMjU1XShrW3A+PjJdfDApfDA7aWYoKGtbcT4+Ml18MCk9PTEwMSlrW3E+PjJdPTB9a1tjPj4yXT0oa1tjPj4yXXwwKSsxfWtbaj4+Ml09a1soa1tiPj4yXXwwKSsyND4+Ml07d2hpbGUoMSl7aWYoISgoa1tqPj4yXXwwKSE9MD8oa1txPj4yXXwwKT09MDowKSlicmVhaztpZihrWyhrW2o+PjJdfDApKzEyPj4yXXwwKXt4PU9uKChrW2o+PjJdfDApKzEyfDAsMCwwKXwwO2tbcT4+Ml09eH1rW2o+PjJdPWtbKGtbaj4+Ml18MCkrOD4+Ml19eD1rW3E+PjJdfDA7cj12O3JldHVybiB4fDB9ZnVuY3Rpb24gRm4oYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxtPTAsbj0wLG89MDtvPXI7cj1yKzMyfDA7aj1vKzI4fDA7aD1vKzI0fDA7ZD1vKzIwfDA7bj1vKzE2fDA7bT1vKzEyfDA7ZT1vKzh8MDtmPW8rNHwwO2c9bztrW2o+PjJdPWE7a1toPj4yXT1iO2tbZD4+Ml09YztrW24+PjJdPTE7aWYoa1trW2Q+PjJdPj4yXXwwKXtuPWtbbj4+Ml18MDtyPW87cmV0dXJuIG58MH1zd2l0Y2goa1trW2g+PjJdPj4yXXwwKXtjYXNlIDM6Y2FzZSAxOntpZigoRm4oa1tqPj4yXXwwLGtbKGtbaD4+Ml18MCkrMTI+PjJdfDAsa1tkPj4yXXwwKXwwKSE9MD8oRm4oa1tqPj4yXXwwLGtbKGtbaD4+Ml18MCkrMTY+PjJdfDAsa1tkPj4yXXwwKXwwKSE9MDowKWQ9KEhuKGtbaD4+Ml18MCxrW2Q+PjJdfDApfDApIT0wO2Vsc2UgZD0wO2tbbj4+Ml09ZCYxO2lmKGtbbj4+Ml18MCl7bj1rW24+PjJdfDA7cj1vO3JldHVybiBufDB9aWYoKGtba1toPj4yXT4+Ml18MCkhPTEpe249a1tuPj4yXXwwO3I9bztyZXR1cm4gbnwwfWlmKChrWyhrW2g+PjJdfDApKzg+PjJdfDApIT0wPyhrW2tbKGtbaD4+Ml18MCkrOD4+Ml0+PjJdfDApPT0xOjApe249a1tuPj4yXXwwO3I9bztyZXR1cm4gbnwwfWtbbT4+Ml09a1toPj4yXTt3aGlsZSgxKXtkPWtbbT4+Ml18MDtpZihrWyhrW20+PjJdfDApKzIwPj4yXXwwKWJyZWFrO2M9KGtbZCsxNj4+Ml18MCkrMjR8MDtoPShrW2o+PjJdfDApKzMyfDA7aWYoKGtbYz4+Ml18MCk9PShrW2g+PjJdfDApPyhrW2MrND4+Ml18MCk9PShrW2grND4+Ml18MCk6MClkbihrWyhrWyhrW20+PjJdfDApKzE2Pj4yXXwwKSsyMD4+Ml18MCk7a1ttPj4yXT1rWyhrW20+PjJdfDApKzEyPj4yXX1oPWQrMjR8MDtqPShrW2o+PjJdfDApKzMyfDA7aWYoISgoa1toPj4yXXwwKT09KGtbaj4+Ml18MCk/KGtbaCs0Pj4yXXwwKT09KGtbais0Pj4yXXwwKTowKSl7bj1rW24+PjJdfDA7cj1vO3JldHVybiBufDB9ZG4oa1soa1ttPj4yXXwwKSsyMD4+Ml18MCk7bj1rW24+PjJdfDA7cj1vO3JldHVybiBufDB9Y2FzZSA0OnttPUZuKGtbaj4+Ml18MCxrWyhrW2g+PjJdfDApKzEyPj4yXXwwLGtbZD4+Ml18MCl8MDtrW2U+PjJdPW07bT1GbihrW2o+PjJdfDAsa1soa1toPj4yXXwwKSsxNj4+Ml18MCxrW2Q+PjJdfDApfDA7a1tmPj4yXT1tO2tbbj4+Ml09KChrW2U+PjJdfDApIT0wPzE6KGtbZj4+Ml18MCkhPTApJjE7bj1rW24+PjJdfDA7cj1vO3JldHVybiBufDB9Y2FzZSAyOntpZihGbihrW2o+PjJdfDAsa1soa1toPj4yXXwwKSsxMj4+Ml18MCxrW2Q+PjJdfDApfDApZD0oRm4oa1tqPj4yXXwwLGtbKGtbaD4+Ml18MCkrMTY+PjJdfDAsa1tkPj4yXXwwKXwwKSE9MF4xO2Vsc2UgZD0wO2tbbj4+Ml09ZCYxO249a1tuPj4yXXwwO3I9bztyZXR1cm4gbnwwfWRlZmF1bHQ6e2RvIGlmKGtbKGtbaj4+Ml18MCkrMjQ+PjJdfDApe2M9KGtbaD4+Ml18MCkrMjR8MDttPShrW2o+PjJdfDApKzMyfDA7aWYoISgoa1tjPj4yXXwwKT09KGtbbT4+Ml18MCk/KGtbYys0Pj4yXXwwKT09KGtbbSs0Pj4yXXwwKTowKT8obFsoa1toPj4yXXwwKSszND4+MF18MCk9PTA6MClicmVhaztrW2c+PjJdPWtbKGtbaD4+Ml18MCkrMjA+PjJdO2lmKGlbKGtbaD4+Ml18MCkrMzQ+PjBdfDApZG4oa1tnPj4yXXwwKTtjPUluKGtbaj4+Ml18MCxrW2c+PjJdfDApfDA7a1trW2Q+PjJdPj4yXT1jO2tbbj4+Ml09KGtbKGtbZz4+Ml18MCkrMjg+PjJdfDApIT0wJjE7Yz0oa1tqPj4yXXwwKSszMnwwO2o9a1tjKzQ+PjJdfDA7bT0oa1toPj4yXXwwKSsyNHwwO2tbbT4+Ml09a1tjPj4yXTtrW20rND4+Ml09ajtuPWtbbj4+Ml18MDtyPW87cmV0dXJuIG58MH13aGlsZSgwKTtpZighKGxbKGtbaD4+Ml18MCkrMzI+PjBdfDApKXttPShrW2g+PjJdfDApKzI0fDA7ZD0oa1tqPj4yXXwwKSszMnwwO2Q9KGtbbT4+Ml18MCk9PShrW2Q+PjJdfDApPyhrW20rND4+Ml18MCk9PShrW2QrND4+Ml18MCk6MH1lbHNlIGQ9MDtrW24+PjJdPWQmMTtuPWtbbj4+Ml18MDtyPW87cmV0dXJuIG58MH19cmV0dXJuIDB9ZnVuY3Rpb24gR24oYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wO2M9cjtyPXIrMTZ8MDtkPWMrNHwwO2I9YztrW2Q+PjJdPWE7a1tiPj4yXT1rWyhrW2Q+PjJdfDApKzI0Pj4yXTt3aGlsZSgxKXtpZighKGtbYj4+Ml18MCkpYnJlYWs7dWwoa1soa1tiPj4yXXwwKSsxMj4+Ml18MCk7a1soa1tiPj4yXXwwKSsxMj4+Ml09MDtrW2I+PjJdPWtbKGtbYj4+Ml18MCkrOD4+Ml19cj1jO3JldHVybn1mdW5jdGlvbiBIbihhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wLGg9MCxpPTAsaj0wLG09MCxuPTAsbz0wLHA9MCxxPTA7cT1yO3I9cis0OHwwO2M9cSs0NHwwO2Q9cSs0MHwwO3A9cSszNnwwO249cSszMnwwO2Y9cSsyOHwwO2k9cSsyNHwwO2g9cSsyMHwwO209cSsxNnwwO2c9cSsxMnwwO2U9cSs4fDA7aj1xKzR8MDtvPXE7a1tjPj4yXT1hO2tbZD4+Ml09YjtrW3A+PjJdPTE7aWYoa1trW2Q+PjJdPj4yXXwwKXtwPWtbcD4+Ml18MDtyPXE7cmV0dXJuIHB8MH1pZigoa1trW2M+PjJdPj4yXXwwKSE9MSl7cD1rW3A+PjJdfDA7cj1xO3JldHVybiBwfDB9aWYobFsoa1tjPj4yXXwwKSszMj4+MF18MCl7cD1rW3A+PjJdfDA7cj1xO3JldHVybiBwfDB9aWYoKGtbKGtbYz4+Ml18MCkrOD4+Ml18MCkhPTA/KGtba1soa1tjPj4yXXwwKSs4Pj4yXT4+Ml18MCk9PTE6MCl7cD1rW3A+PjJdfDA7cj1xO3JldHVybiBwfDB9a1tmPj4yXT0wO2tbbj4+Ml09a1tjPj4yXTt3aGlsZSgxKXthPWtbbj4+Ml18MDtpZighKGtbKGtbbj4+Ml18MCkrMTI+PjJdfDApKWJyZWFrO2tbZj4+Ml09KGtbZj4+Ml18MCkrKGtbKGtbKGtbYSsxNj4+Ml18MCkrMjA+PjJdfDApKzMyPj4yXXwwKTtrW24+PjJdPWtbKGtbbj4+Ml18MCkrMTI+PjJdfWtbZj4+Ml09KGtbZj4+Ml18MCkrKGtbKGtbYSsyMD4+Ml18MCkrMzI+PjJdfDApO2lmKCEoa1tmPj4yXXwwKSl7a1twPj4yXT0wO3A9a1twPj4yXXwwO3I9cTtyZXR1cm4gcHwwfWY9U2Qoa1tmPj4yXTw8MSl8MDtrW2k+PjJdPWY7YTpkbyBpZihrW2k+PjJdfDApe2tbaD4+Ml09a1soa1soa1tuPj4yXXwwKSsyMD4+Ml18MCkrMjg+PjJdO2tbbT4+Ml09a1soa1soa1tuPj4yXXwwKSsyMD4+Ml18MCkrNjQ+PjJdO2tbbj4+Ml09a1soa1tuPj4yXXwwKSs4Pj4yXTt3aGlsZSgxKXtpZighKChrW3A+PjJdfDApIT0wJihrW24+PjJdfDApIT0wKSlicmVhaztpZigoa1trW24+PjJdPj4yXXwwKSE9MSlicmVhaztrW2c+PjJdPWtbKGtbKGtbbj4+Ml18MCkrMTY+PjJdfDApKzIwPj4yXTtrW2U+PjJdPWtbKGtbbj4+Ml18MCkrND4+Ml07Zj1LbihrW2U+PjJdfDAsa1tpPj4yXXwwLGgsbSxrW2c+PjJdfDApfDA7a1twPj4yXT1mO2tbbj4+Ml09a1soa1tuPj4yXXwwKSs4Pj4yXX1rW2g+PjJdPWtbKGtbKGtbKGtbYz4+Ml18MCkrMTY+PjJdfDApKzIwPj4yXXwwKSsyOD4+Ml07a1ttPj4yXT1rWyhrWyhrWyhrW2M+PjJdfDApKzE2Pj4yXXwwKSsyMD4+Ml18MCkrNjQ+PjJdO2tbbj4+Ml09a1soa1tjPj4yXXwwKSsxMj4+Ml07d2hpbGUoMSl7aWYoISgoa1tuPj4yXXwwKSE9MD8oa1twPj4yXXwwKSE9MDowKSlicmVhayBhO2tbaj4+Ml09a1soa1soa1tuPj4yXXwwKSs4Pj4yXXwwKSs0Pj4yXTthPWtbbj4+Ml18MDtpZigoa1trW24+PjJdPj4yXXwwKT09MSlhPWtbKGtbYSsxNj4+Ml18MCkrMjA+PjJdfDA7ZWxzZSBhPWtbYSsyMD4+Ml18MDtrW28+PjJdPWE7Zz1LbihrW2o+PjJdfDAsa1tpPj4yXXwwLGgsbSxrW28+PjJdfDApfDA7a1twPj4yXT1nO2tbbj4+Ml09a1soa1tuPj4yXXwwKSsxMj4+Ml19fWVsc2V7a1trW2Q+PjJdPj4yXT03O2tbcD4+Ml09MH13aGlsZSgwKTtVZChrW2k+PjJdfDApO3A9a1twPj4yXXwwO3I9cTtyZXR1cm4gcHwwfWZ1bmN0aW9uIEluKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wLGk9MCxqPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wO3k9cjtyPXIrODB8MDtsPXkrNzZ8MDttPXkrNzJ8MDtuPXkrNjh8MDtkPXkrNjR8MDtwPXkrNjB8MDt1PXkrNTZ8MDtxPXkrNTJ8MDtqPXkrNDh8MDtoPXkrNDR8MDtpPXkrNDB8MDtlPXkrMzZ8MDt4PXkrMzJ8MDtjPXkrMjh8MDtmPXkrMjR8MDtnPXkrMjB8MDt0PXkrMTZ8MDtzPXkrMTJ8MDt2PXkrOHwwO3c9eSs0fDA7bz15O2tbbT4+Ml09YTtrW24+PjJdPWI7a1twPj4yXT0wO2tbdT4+Ml09MDtrW3E+PjJdPS0xO2tbZD4+Ml09MDt3aGlsZSgxKXtpZigoa1tkPj4yXXwwKT49KGtbKGtbbj4+Ml18MCkrNjQ+PjJdfDApKXthPTE0O2JyZWFrfWtbaj4+Ml09KGtbbj4+Ml18MCkrNzIrKChrW2Q+PjJdfDApKjI0fDApO2tbaD4+Ml09a1soa1tqPj4yXXwwKSsxNj4+Ml07aWYoa1toPj4yXXwwKXtiPUpuKGtbaD4+Ml18MCxpLGUpfDA7a1t4Pj4yXT1iO2lmKGtbeD4+Ml18MCl7YT01O2JyZWFrfWI9a1twPj4yXXwwO2lmKCEoa1tpPj4yXXwwKSl7YT03O2JyZWFrfWE9a1tpPj4yXXwwO2lmKGIpe2tbYz4+Ml09YTtrW2Y+PjJdPWtbcD4+Ml07a1tnPj4yXT1rW2M+PjJdO2tuKGMsKGtbZD4+Ml18MCktKGtbcT4+Ml18MCl8MCwwLDEsZixnKXwwO1VkKGtbcD4+Ml18MCk7a1twPj4yXT1rW2k+PjJdO2tbdT4+Ml09KGtbYz4+Ml18MCktKGtbcD4+Ml18MCk7aWYoIShrW3U+PjJdfDApKXthPTExO2JyZWFrfX1lbHNle2tbcD4+Ml09YTtrW3U+PjJdPWtbZT4+Ml19a1txPj4yXT1rW2Q+PjJdfWtbZD4+Ml09KGtbZD4+Ml18MCkrMX1pZigoYXwwKT09NSl7a1tsPj4yXT1rW3g+PjJdO3g9a1tsPj4yXXwwO3I9eTtyZXR1cm4geHwwfWVsc2UgaWYoKGF8MCk9PTcpe1VkKGIpO2tbKGtbbj4+Ml18MCkrMjg+PjJdPTA7a1soa1tuPj4yXXwwKSszMj4+Ml09MDtrW2w+PjJdPTA7eD1rW2w+PjJdfDA7cj15O3JldHVybiB4fDB9ZWxzZSBpZigoYXwwKT09MTEpe1VkKGtbcD4+Ml18MCk7a1soa1tuPj4yXXwwKSsyOD4+Ml09MDtrWyhrW24+PjJdfDApKzMyPj4yXT0wO2tbbD4+Ml09MDt4PWtbbD4+Ml18MDtyPXk7cmV0dXJuIHh8MH1lbHNlIGlmKChhfDApPT0xNCl7ZG8gaWYoKGtbcT4+Ml18MCk+PTApe2tbdD4+Ml09a1soa1tuPj4yXXwwKSs0ND4+Ml07aWYoKGtbdD4+Ml18MCk8MCl7a1soa1tuPj4yXXwwKSsyOD4+Ml09a1twPj4yXTtrWyhrW24+PjJdfDApKzMyPj4yXT1rW3U+PjJdO3Y9KGtbbT4+Ml18MCkrMzJ8MDt3PWtbdis0Pj4yXXwwO3g9KGtbbj4+Ml18MCkrMTZ8MDtrW3g+PjJdPWtbdj4+Ml07a1t4KzQ+PjJdPXc7a1soa1tuPj4yXXwwKSsyND4+Ml09MTticmVha31pZigoa1t0Pj4yXXwwKT4oa1txPj4yXXwwKSl7a1t2Pj4yXT1rW3A+PjJdO2tbdz4+Ml09a1soa1tuPj4yXXwwKSsyOD4+Ml07a1tzPj4yXT0oa1t0Pj4yXXwwKS0oa1txPj4yXXwwKX1lbHNle2tbdj4+Ml09a1soa1tuPj4yXXwwKSsyOD4+Ml07a1t3Pj4yXT1rW3A+PjJdO2tbcz4+Ml09KGtbcT4+Ml18MCktKGtbdD4+Ml18MCl9eD1TZCgoa1t1Pj4yXXwwKSs4fDApfDA7a1tvPj4yXT14O2lmKCEoa1tvPj4yXXwwKSl7VWQoa1twPj4yXXwwKTtrW2w+PjJdPTc7eD1rW2w+PjJdfDA7cj15O3JldHVybiB4fDB9a1soa1tuPj4yXXwwKSsyOD4+Ml09a1tvPj4yXTtpZihrbihvLGtbcz4+Ml18MCwwLDEsdix3KXwwKXtrWyhrW24+PjJdfDApKzI0Pj4yXT0xO2tbKGtbbj4+Ml18MCkrMzI+PjJdPShrW28+PjJdfDApLShrWyhrW24+PjJdfDApKzI4Pj4yXXwwKX1lbHNle1VkKGtbbz4+Ml18MCk7a1soa1tuPj4yXXwwKSsyOD4+Ml09MDtrWyhrW24+PjJdfDApKzMyPj4yXT0wfVVkKGtbcD4+Ml18MCl9d2hpbGUoMCk7a1tsPj4yXT0wO3g9a1tsPj4yXXwwO3I9eTtyZXR1cm4geHwwfXJldHVybiAwfWZ1bmN0aW9uIEpuKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxpPTAsaj0wO2o9cjtyPXIrMzJ8MDtkPWorMjh8MDtlPWorMjR8MDtmPWorMjB8MDtnPWorMTZ8MDtpPWorMTJ8MDtoPWorOHwwO2tbZT4+Ml09YTtrW2Y+PjJdPWI7a1tnPj4yXT1jO2tba1tmPj4yXT4+Ml09MDtrW2tbZz4+Ml0+PjJdPTA7aWYoIShrWyhrW2U+PjJdfDApKzEyPj4yXXwwKSl7a1tkPj4yXT0wO2I9a1tkPj4yXXwwO3I9ajtyZXR1cm4gYnwwfWI9U2Qoa1trWyhrW2U+PjJdfDApKzEyPj4yXT4+Ml18MCl8MDtrW2k+PjJdPWI7aWYoa1tpPj4yXXwwKXtiPWltKGtbKGtbKGtbZT4+Ml18MCkrMTI+PjJdfDApKzQ+PjJdfDAsail8MDtrW2g+PjJdPWI7a1trW2c+PjJdPj4yXT0oa1trWyhrW2U+PjJdfDApKzEyPj4yXT4+Ml18MCktKGtbaD4+Ml18MCk7a1trW2Y+PjJdPj4yXT1rW2k+PjJdO2JTKGtbaT4+Ml18MCwoa1soa1soa1tlPj4yXXwwKSsxMj4+Ml18MCkrND4+Ml18MCkrKGtbaD4+Ml18MCl8MCxrW2tbZz4+Ml0+PjJdfDApfDA7a1tkPj4yXT0wO2I9a1tkPj4yXXwwO3I9ajtyZXR1cm4gYnwwfWVsc2V7a1tkPj4yXT03O2I9a1tkPj4yXXwwO3I9ajtyZXR1cm4gYnwwfXJldHVybiAwfWZ1bmN0aW9uIEtuKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGk9MCxqPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscz0wO209cjtyPXIrNDh8MDtzPW0rNDB8MDtxPW0rMzZ8MDtmPW0rMzJ8MDtnPW0rMjh8MDtoPW0rMjR8MDtwPW0rMjB8MDtvPW0rMTZ8MDtpPW0rMTJ8MDtuPW0rOHwwO2o9bSs0fDA7bD1tO2tbcz4+Ml09YTtrW3E+PjJdPWI7a1tmPj4yXT1jO2tbZz4+Ml09ZDtrW2g+PjJdPWU7a1twPj4yXT0oa1tzPj4yXXwwKSsoa1soa1toPj4yXXwwKSs2ND4+Ml18MCk7a1tvPj4yXT0oa1tzPj4yXXwwKSsoa1trW2c+PjJdPj4yXXwwKTtkPWtbKGtbaD4+Ml18MCkrMjg+PjJdfDA7a1tqPj4yXT1kO2tbbj4+Ml09ZDtkPUxuKGosa1txPj4yXXwwLGtbcD4+Ml18MCxrW28+PjJdfDAsa1tmPj4yXXwwLG4pfDA7a1tsPj4yXT1kO2lmKCEoa1tsPj4yXXwwKSl7cz1rW2w+PjJdfDA7cj1tO3JldHVybiBzfDB9a1tpPj4yXT0oa1tqPj4yXXwwKS0oa1soa1toPj4yXXwwKSsyOD4+Ml18MCktMTtkUygoa1soa1toPj4yXXwwKSsyOD4+Ml18MCkrKGtbaT4+Ml18MCl8MCwwLChrWyhrW2g+PjJdfDApKzMyPj4yXXwwKS0oa1tpPj4yXXwwKXwwKXwwO2tbKGtbaD4+Ml18MCkrMzI+PjJdPWtbaT4+Ml07a1trW2Y+PjJdPj4yXT1rWyhrW2g+PjJdfDApKzI4Pj4yXTtrW2tbZz4+Ml0+PjJdPWtbKGtbaD4+Ml18MCkrNjQ+PjJdO3M9a1tsPj4yXXwwO3I9bTtyZXR1cm4gc3wwfWZ1bmN0aW9uIExuKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxpPTAsaj0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHM9MCx0PTAsdT0wO249cjtyPXIrNDh8MDtnPW4rNDR8MDtoPW4rNDB8MDt1PW4rMzZ8MDtxPW4rMzJ8MDtvPW4rMjh8MDtwPW4rMjR8MDt0PW4rMjB8MDtzPW4rMTZ8MDtqPW4rMTJ8MDtsPW4rOHwwO2k9bis0fDA7bT1uO2tbZz4+Ml09YTtrW2g+PjJdPWI7a1t1Pj4yXT1jO2tbcT4+Ml09ZDtrW28+PjJdPWU7a1twPj4yXT1mO2tbdD4+Ml09a1trW28+PjJdPj4yXTtrW3M+PjJdPWtba1twPj4yXT4+Ml07a1tqPj4yXT1rW2g+PjJdO2tbbT4+Ml09MTtrbihqLGtbdT4+Ml18MCwwLDAsa1tvPj4yXXwwLGtbcD4+Ml18MCl8MDtmPWtbaj4+Ml18MDtrW2w+PjJdPWY7a1tpPj4yXT1mO2tba1tvPj4yXT4+Ml09a1t0Pj4yXTtrW2tbcD4+Ml0+PjJdPWtbcz4+Ml07a24obCxrW3E+PjJdfDAsMSwwLGtbcD4+Ml18MCxrW28+PjJdfDApfDA7aWYoKGtbaj4+Ml18MCkhPShrW2g+PjJdfDApPyhrW2w+PjJdfDApIT0oa1tpPj4yXXwwKTowKXtBbihrW2c+PjJdfDAsaCxpKTt1PWtbbT4+Ml18MDtyPW47cmV0dXJuIHV8MH1pZigoa1tqPj4yXXwwKSE9KGtbaD4+Ml18MCkpe25tKGtbZz4+Ml18MCxoKTt1PWtbbT4+Ml18MDtyPW47cmV0dXJuIHV8MH1pZigoa1tsPj4yXXwwKSE9KGtbaT4+Ml18MCkpe25tKGtbZz4+Ml18MCxpKTt1PWtbbT4+Ml18MDtyPW47cmV0dXJuIHV8MH1lbHNle2tbbT4+Ml09MDt1PWtbbT4+Ml18MDtyPW47cmV0dXJuIHV8MH1yZXR1cm4gMH1mdW5jdGlvbiBNbihhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxpPTAsaj0wLGw9MCxtPTAsbj0wLG89MDttPXI7cj1yKzMyfDA7Zj1tKzI4fDA7Zz1tKzI0fDA7bz1tKzIwfDA7bj1tKzE2fDA7aD1tKzEyfDA7aj1tKzh8MDtpPW0rNHwwO2w9bTtrW2Y+PjJdPWE7a1tnPj4yXT1iO2tbbz4+Ml09YztrW24+PjJdPWQ7a1toPj4yXT1lO2tbaj4+Ml09a1trW2Y+PjJdPj4yXTtrW2k+PjJdPTA7Yz1lY1trWyhrW2o+PjJdfDApKzEyPj4yXSYyNTVdKGtbZj4+Ml18MCxrW28+PjJdfDAsa1tuPj4yXXwwLGkpfDA7a1tsPj4yXT1jO2lmKCgoa1tsPj4yXXwwKT09MD8oa1trW2k+PjJdPj4yXT1rW2Y+PjJdLChrW2tbaj4+Ml0+PjJdfDApPj0xKTowKT8obz1nY1trWyhrW2o+PjJdfDApKzI0Pj4yXSYyNTVdKGtbaT4+Ml18MCxrW2c+PjJdfDApfDAsa1tsPj4yXT1vLChrW2w+PjJdfDApIT0wKTowKXtiY1trWyhrW2o+PjJdfDApKzE2Pj4yXSYyNTVdKGtbaT4+Ml18MCl8MDtrW2k+PjJdPTB9a1trW2g+PjJdPj4yXT1rW2k+PjJdO3I9bTtyZXR1cm4ga1tsPj4yXXwwfWZ1bmN0aW9uIE5uKGEsYixjLGQsZSxmLGcsaCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7dmFyIGk9MCxqPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscz0wLHQ9MCx1PTA7dT1yO3I9cis2NHwwO2w9dSs0OHwwO209dSs0NHwwO249dSsyNHwwO289dSsxNnwwO2k9dSs4fDA7aj11KzQwfDA7cT11KzM2fDA7cz11KzMyfDA7cD11O2tbbT4+Ml09YTthPW47a1thPj4yXT1iO2tbYSs0Pj4yXT1jO2E9bztrW2E+PjJdPWQ7a1thKzQ+PjJdPWU7YT1pO2tbYT4+Ml09ZjtrW2ErND4+Ml09ZztrW2o+PjJdPWg7a1txPj4yXT1rW2tbbT4+Ml0+PjJdO2tbcz4+Ml09MDtpZigoa1txPj4yXXwwKSE9MD8oaD0oa1txPj4yXXwwKSsxNnwwLGE9biwhKChrW2g+PjJdfDApIT0oa1thPj4yXXwwKT8xOihrW2grND4+Ml18MCkhPShrW2ErND4+Ml18MCkpKTowKXQ9OTtlbHNle2I9bjtpZihrW3E+PjJdfDApe2Q9KGtbcT4+Ml18MCkrMTZ8MDtjPWtbZD4+Ml18MDtkPWtbZCs0Pj4yXXwwfWVsc2V7Yz0wO2Q9MH1oPV9SKGtbYj4+Ml18MCxrW2IrND4+Ml18MCxjfDAsZHwwKXwwO2E9cDtrW2E+PjJdPWg7a1thKzQ+PjJdPUw7aWYoa1txPj4yXXwwKXthPWtbcT4+Ml18MDtrW2E+PjJdPShrW2E+PjJdfDApKzF9cD1PbihxLGtbcD4+Ml18MCxrW3ArND4+Ml18MCl8MDtrW3M+PjJdPXA7aWYoIXApe3A9KGtbcT4+Ml18MCkrMjR8MDtrW3A+PjJdPS0xO2tbcCs0Pj4yXT0tMTtwPShrW3E+PjJdfDApKzMyfDA7a1twPj4yXT0wO2tbcCs0Pj4yXT0wO3A9a1tuKzQ+PjJdfDA7dD0oa1txPj4yXXwwKSsxNnwwO2tbdD4+Ml09a1tuPj4yXTtrW3QrND4+Ml09cDt0PTl9fWRvIGlmKCh0fDApPT05KXt0PW87cD1rW3QrND4+Ml18MDtpZigocHwwKT4wfChwfDApPT0wJihrW3Q+PjJdfDApPj4+MD4wPyhwPShrW3E+PjJdfDApKzI0fDAsdD1vLChrW3A+PjJdfDApIT0oa1t0Pj4yXXwwKT8xOihrW3ArND4+Ml18MCkhPShrW3QrND4+Ml18MCkpOjApe3Q9T24ocSwxLDApfDA7a1tzPj4yXT10O2lmKHQpYnJlYWs7dD1vO3Q9T24ocSxrW3Q+PjJdfDAsa1t0KzQ+PjJdfDApfDA7a1tzPj4yXT10O2lmKHQpYnJlYWs7bj1vO3A9a1tuKzQ+PjJdfDA7dD0oa1txPj4yXXwwKSsyNHwwO2tbdD4+Ml09a1tuPj4yXTtrW3QrND4+Ml09cDt0PShrW3E+PjJdfDApKzMyfDA7a1t0Pj4yXT0wO2tbdCs0Pj4yXT0wfXQ9bztwPWtbdCs0Pj4yXXwwO2lmKChwfDApPjB8KHB8MCk9PTAmKGtbdD4+Ml18MCk+Pj4wPj0wPyhwPWkscD0kUigyLDAsa1twPj4yXXwwLGtbcCs0Pj4yXXwwKXwwLHQ9KGtbcT4+Ml18MCkrMzJ8MCx0PV9SKHB8MCxMfDAsa1t0Pj4yXXwwLGtbdCs0Pj4yXXwwKXwwLHQ9T24ocSx0LEwpfDAsa1tzPj4yXT10LChrW3M+PjJdfDApPT0wKTowKXtvPWk7cD1rW28rND4+Ml18MDt0PShrW3E+PjJdfDApKzMyfDA7a1t0Pj4yXT1rW28+PjJdO2tbdCs0Pj4yXT1wfX13aGlsZSgwKTtrW2tbaj4+Ml0+PjJdPWtbcz4+Ml07aWYoKGtbcT4+Ml18MCkhPShrW2tbbT4+Ml0+PjJdfDApKXtrW2tbbT4+Ml0+PjJdPWtbcT4+Ml07a1tsPj4yXT0xO3Q9a1tsPj4yXXwwO3I9dTtyZXR1cm4gdHwwfWVsc2V7a1tsPj4yXT0wO3Q9a1tsPj4yXXwwO3I9dTtyZXR1cm4gdHwwfXJldHVybiAwfWZ1bmN0aW9uIE9uKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTA7aj1yO3I9ciszMnwwO2Q9aisyMHwwO2U9aisxNnwwO2Y9ajtoPWorMTJ8MDtnPWorOHwwO2tbZT4+Ml09YTthPWY7a1thPj4yXT1iO2tbYSs0Pj4yXT1jO2tbaD4+Ml09a1trW2U+PjJdPj4yXTtkbyBpZihrW2g+PjJdfDApe2lmKCgoa1trW2g+PjJdPj4yXXwwKSsxMCsxfDApPihrWyhrW2g+PjJdfDApKzg+PjJdfDApKXtrW2c+PjJdPWtbKGtbaD4+Ml18MCkrOD4+Ml08PDE7YT1WZChrW2g+PjJdfDAsNDArKGtbZz4+Ml18MCl8MCl8MDtrW2g+PjJdPWE7aWYoa1toPj4yXXwwKXtrWyhrW2g+PjJdfDApKzg+PjJdPWtbZz4+Ml07a1soa1toPj4yXXwwKSs0Pj4yXT0oa1toPj4yXXwwKSs0MDticmVha31VZChrW2tbZT4+Ml0+PjJdfDApO2tba1tlPj4yXT4+Ml09MDtrW2Q+PjJdPTc7YT1rW2Q+PjJdfDA7cj1qO3JldHVybiBhfDB9fWVsc2V7YT1TZCgxNDApfDA7a1toPj4yXT1hO2lmKGtbaD4+Ml18MCl7a1soa1toPj4yXXwwKSs4Pj4yXT0xMDA7a1soa1toPj4yXXwwKSs0Pj4yXT0oa1toPj4yXXwwKSs0MDtrW2tbaD4+Ml0+PjJdPTA7YnJlYWt9a1tkPj4yXT03O2E9a1tkPj4yXXwwO3I9ajtyZXR1cm4gYXwwfXdoaWxlKDApO2c9ZjtnPVVsKChrWyhrW2g+PjJdfDApKzQ+PjJdfDApKyhrW2tbaD4+Ml0+PjJdfDApfDAsa1tnPj4yXXwwLGtbZys0Pj4yXXwwKXwwO2E9a1toPj4yXXwwO2tbYT4+Ml09KGtbYT4+Ml18MCkrZztpWyhrWyhrW2g+PjJdfDApKzQ+PjJdfDApKyhrW2tbaD4+Ml0+PjJdfDApPj4wXT0wO2tba1tlPj4yXT4+Ml09a1toPj4yXTtrW2Q+PjJdPTA7YT1rW2Q+PjJdfDA7cj1qO3JldHVybiBhfDB9ZnVuY3Rpb24gUG4oYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTAsaT0wLGo9MDtqPXI7cj1yKzMyfDA7aD1qO2M9aisyNHwwO2Q9aisyMHwwO2U9aisxNnwwO2c9aisxMnwwO2Y9ais4fDA7aT1qKzR8MDtrW2Q+PjJdPWE7a1tlPj4yXT1iO2tbZz4+Ml09MDtkbyBpZighKGtbKGtbZD4+Ml18MCkrOD4+Ml18MCkpe2tbZj4+Ml09a1trW2Q+PjJdPj4yXTtrW2g+PjJdPWtbKGtbZj4+Ml18MCkrMjE2Pj4yXTtoPVlkKDIzMjQxLGgpfDA7a1tpPj4yXT1oO2lmKGtbaT4+Ml18MCl7aD1sZihrWyhrW2Y+PjJdfDApKzEyPj4yXXwwLGtbaT4+Ml18MCwtMSwoa1tkPj4yXXwwKSs4fDAsMCl8MDtrW2c+PjJdPWg7VWQoa1tpPj4yXXwwKTticmVha31rW2M+PjJdPTc7aT1rW2M+PjJdfDA7cj1qO3JldHVybiBpfDB9d2hpbGUoMCk7a1trW2U+PjJdPj4yXT1rWyhrW2Q+PjJdfDApKzg+PjJdO2tbYz4+Ml09a1tnPj4yXTtpPWtbYz4+Ml18MDtyPWo7cmV0dXJuIGl8MH1mdW5jdGlvbiBRbihhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGk9MCxqPTAsbD0wO2w9cjtyPXIrMzJ8MDtlPWwrMjB8MDtmPWwrMTZ8MDtnPWwrMTJ8MDtoPWwrOHwwO2o9bCs0fDA7aT1sO2tbZT4+Ml09YTtrW2Y+PjJdPWI7a1tnPj4yXT1jO2tbaD4+Ml09ZDtrW2k+PjJdPWtba1tlPj4yXT4+Ml07aWYoKGtbaT4+Ml18MCk9PTUpe2M9WWJba1tnPj4yXSYyNTVdKGtbZT4+Ml18MCxrW2tbZj4+Ml0+PjJdfDAsa1toPj4yXXwwKXwwO2tbaj4+Ml09YztjPWtbZj4+Ml18MDtrW2M+PjJdPShrW2M+PjJdfDApKzE7Yz1rW2o+PjJdfDA7cj1sO3JldHVybiBjfDB9Yz1RbihrWyhrW2U+PjJdfDApKzEyPj4yXXwwLGtbZj4+Ml18MCxrW2c+PjJdfDAsa1toPj4yXXwwKXwwO2tbaj4+Ml09YztpZighKChrW2o+PjJdfDApPT0wJihrW2k+PjJdfDApIT0yKSl7Yz1rW2o+PjJdfDA7cj1sO3JldHVybiBjfDB9Yz1RbihrWyhrW2U+PjJdfDApKzE2Pj4yXXwwLGtbZj4+Ml18MCxrW2c+PjJdfDAsa1toPj4yXXwwKXwwO2tbaj4+Ml09YztjPWtbaj4+Ml18MDtyPWw7cmV0dXJuIGN8MH1mdW5jdGlvbiBSbihhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaT0wLGo9MDtqPXI7cj1yKzMyfDA7ZD1qKzIwfDA7ZT1qKzE2fDA7Zj1qKzEyfDA7aD1qKzh8MDtpPWorNHwwO2c9ajtrW2Q+PjJdPWE7a1tlPj4yXT1iO2tbZj4+Ml09YztrW2g+PjJdPWtba1tkPj4yXT4+Ml07a1tpPj4yXT0wO2lmKChsWyhrW2U+PjJdfDApKzM0Pj4wXXwwfDApIT0wPyhrW2tbKGtbZT4+Ml18MCkrOD4+Ml0+PjJdfDApIT0xOjApe2tbZz4+Ml09MDt3aGlsZSgxKXtpZigoa1tnPj4yXXwwKT49KGtbKGtbaD4+Ml18MCkrMjQ+PjJdfDApKWJyZWFrO2tbKGtbZj4+Ml18MCkrKCgoa1tnPj4yXXwwKSozfDApKzE8PDIpPj4yXT1rWyhrW2Q+PjJdfDApKzY0Pj4yXTtrWyhrW2Y+PjJdfDApKygoKGtbZz4+Ml18MCkqM3wwKSsyPDwyKT4+Ml09a1soa1tkPj4yXXwwKSs2ND4+Ml07a1tnPj4yXT0oa1tnPj4yXXwwKSsxfWk9a1tpPj4yXXwwO3I9ajtyZXR1cm4gaXwwfWI9U24oa1tkPj4yXXwwLGtbZT4+Ml18MCl8MDtrW2k+PjJdPWI7aWYoa1tpPj4yXXwwKXtpPWtbaT4+Ml18MDtyPWo7cmV0dXJuIGl8MH1rW2c+PjJdPTA7d2hpbGUoMSl7aWYoKGtbZz4+Ml18MCk+PShrWyhrW2g+PjJdfDApKzI0Pj4yXXwwKSlicmVhaztrWyhrW2Y+PjJdfDApKygoKGtbZz4+Ml18MCkqM3wwKSsxPDwyKT4+Ml09a1soa1soa1tlPj4yXXwwKSs0MD4+Ml18MCkrKCgoa1tnPj4yXXwwKSozfDApKzE8PDIpPj4yXTtrWyhrW2Y+PjJdfDApKygoKGtbZz4+Ml18MCkqM3wwKSsyPDwyKT4+Ml09a1soa1soa1tlPj4yXXwwKSs0MD4+Ml18MCkrKCgoa1tnPj4yXXwwKSozfDApKzI8PDIpPj4yXTtrW2c+PjJdPShrW2c+PjJdfDApKzF9aT1rW2k+PjJdfDA7cj1qO3JldHVybiBpfDB9ZnVuY3Rpb24gU24oYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLG09MCxuPTAsbz0wLHA9MCxxPTAscz0wLHQ9MDtzPXI7cj1yKzY0fDA7ZD1zKzQ0fDA7ZT1zKzQwfDA7Yz1zKzM2fDA7cD1zKzMyfDA7bz1zKzI4fDA7bj1zKzI0fDA7aj1zKzIwfDA7aD1zKzh8MDtnPXM7Zj1zKzQ4fDA7bT1zKzE2fDA7a1tlPj4yXT1hO2tbYz4+Ml09YjtrW3A+PjJdPTA7ZG8gaWYoIShrWyhrW2M+PjJdfDApKzQwPj4yXXwwKSl7a1tvPj4yXT1rW2tbZT4+Ml0+PjJdO3Q9KGtbZT4+Ml18MCkrMzJ8MDthPWtbdCs0Pj4yXXwwO2I9aDtrW2I+PjJdPWtbdD4+Ml07a1tiKzQ+PjJdPWE7a1tuPj4yXT1rW2M+PjJdO3doaWxlKDEpe2lmKGtbKGtbbj4+Ml18MCkrOD4+Ml18MCljPShrW2tbKGtbbj4+Ml18MCkrOD4+Ml0+PjJdfDApPT0xO2Vsc2UgYz0wO2E9a1tuPj4yXXwwO2lmKCFjKWJyZWFrO2tbbj4+Ml09a1thKzg+PjJdfWE9YSsyNHwwO2I9a1thKzQ+PjJdfDA7dD1nO2tbdD4+Ml09a1thPj4yXTtrW3QrND4+Ml09YjtpW2Y+PjBdPWlbKGtbbj4+Ml18MCkrMzI+PjBdfDA7a1tqPj4yXT1rW24+PjJdO3doaWxlKDEpe2lmKCEoa1tqPj4yXXwwKSlicmVhaztjPWtbaj4+Ml18MDtpZigoa1trW2o+PjJdPj4yXXwwKSE9NSljPWtbYysxNj4+Ml18MDtrW20+PjJdPWM7dD1TZCgoa1soa1tvPj4yXXwwKSsyND4+Ml18MCkqMzw8Mil8MDtrWyhrW20+PjJdfDApKzQwPj4yXT10O2lmKCEoa1soa1ttPj4yXXwwKSs0MD4+Ml18MCkpe3E9MTI7YnJlYWt9ZFMoa1soa1ttPj4yXXwwKSs0MD4+Ml18MCwwLChrWyhrW28+PjJdfDApKzI0Pj4yXXwwKSozPDwyfDApfDA7a1tqPj4yXT1rWyhrW2o+PjJdfDApKzEyPj4yXX1pZigocXwwKT09MTIpe2tbZD4+Ml09Nzt0PWtbZD4+Ml18MDtyPXM7cmV0dXJuIHR8MH1hbihrW2U+PjJdfDAsa1tuPj4yXXwwLHApO3doaWxlKDEpe2lmKCEoKGxbKGtbZT4+Ml18MCkrNj4+MF18MCk9PTA/KGtbcD4+Ml18MCk9PTA6MCkpYnJlYWs7ZG97aWYoIShsWyhrW2U+PjJdfDApKzc+PjBdfDApKWdlKGtbKGtbZT4+Ml18MCkrOD4+Ml18MCl8MDtibihrW2U+PjJdfDAsa1tuPj4yXXwwLHApO2lbKGtbZT4+Ml18MCkrNj4+MF09aVsoa1tuPj4yXXwwKSszMj4+MF18MDtpWyhrW2U+PjJdfDApKzc+PjBdPTE7a1soa1tlPj4yXXwwKSs4OD4+Ml09MTtvPShrW24+PjJdfDApKzI0fDA7cT1rW28rND4+Ml18MDt0PShrW2U+PjJdfDApKzMyfDA7a1t0Pj4yXT1rW28+PjJdO2tbdCs0Pj4yXT1xO2lmKGxbKGtbZT4+Ml18MCkrNj4+MF18MClicmVhaztpZigoa1trW24+PjJdPj4yXXwwKSE9MSlicmVha313aGlsZSgoWW0oa1tlPj4yXXwwLHApfDApIT0wKTtpZihrW3A+PjJdfDApY29udGludWU7aWYobFsoa1tlPj4yXXwwKSs2Pj4wXXwwKWNvbnRpbnVlO1RuKGtbbj4+Ml18MCl9aVsoa1tlPj4yXXwwKSs2Pj4wXT0wO289aDtxPWtbbys0Pj4yXXwwO3Q9KGtbZT4+Ml18MCkrMzJ8MDtrW3Q+PjJdPWtbbz4+Ml07a1t0KzQ+PjJdPXE7aWYoaVtmPj4wXXwwKXtpWyhrW24+PjJdfDApKzMyPj4wXT1pW2Y+PjBdfDA7YnJlYWt9YW4oa1tlPj4yXXwwLGtbbj4+Ml18MCxwKTtkb3tibihrW2U+PjJdfDAsa1tuPj4yXXwwLHApO3E9KGtbbj4+Ml18MCkrMjR8MDt0PWd9d2hpbGUoKChrW3E+PjJdfDApIT0oa1t0Pj4yXXwwKT8xOihrW3ErND4+Ml18MCkhPShrW3QrND4+Ml18MCkpPyhrW3A+PjJdfDApPT0wOjApfXdoaWxlKDApO2tbZD4+Ml09a1twPj4yXTt0PWtbZD4+Ml18MDtyPXM7cmV0dXJuIHR8MH1mdW5jdGlvbiBUbihhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wO2g9cjtyPXIrMzJ8MDtjPWgrMTZ8MDtiPWgrMTJ8MDtmPWgrOHwwO2c9aCs0fDA7ZD1oKzIwfDA7ZT1oO2tbYz4+Ml09YTtpZighKGtbYz4+Ml18MCkpe3I9aDtyZXR1cm59a1tiPj4yXT1rWyhrW2M+PjJdfDApKzIwPj4yXTthOmRvIGlmKChrW2I+PjJdfDApIT0wPyhrWyhrW2I+PjJdfDApKzI4Pj4yXXwwKSE9MDowKXtrW2Y+PjJdPTA7a1tnPj4yXT1rWyhrW2I+PjJdfDApKzI4Pj4yXTt3aGlsZSgxKXtpW2Q+PjBdPTA7a1tlPj4yXT0wO3doaWxlKDEpe2lmKCEoMjU0JihpW2tbZz4+Ml0+PjBdfGxbZD4+MF0pKSlicmVhaztpZighKGxbZD4+MF0mMTI4KSlrW2U+PjJdPShrW2U+PjJdfDApKzE7Yj1rW2c+PjJdfDA7a1tnPj4yXT1iKzE7aVtkPj4wXT1pW2I+PjBdJjEyOH1iPShrWyhrW2M+PjJdfDApKzQwPj4yXXwwKSsoKChrW2Y+PjJdfDApKjN8MCkrMTw8Mil8MDtrW2I+PjJdPShrW2I+PjJdfDApKyhrW2U+PjJdfDApO2I9KGtbKGtbYz4+Ml18MCkrNDA+PjJdfDApKygoKGtbZj4+Ml18MCkqM3wwKSsyPDwyKXwwO2tbYj4+Ml09KGtbYj4+Ml18MCkrKChrW2U+PjJdfDApPjAmMSk7aWYoIShpW2tbZz4+Ml0+PjBdfDApKWJyZWFrIGE7a1tnPj4yXT0oa1tnPj4yXXwwKSsxO2E9a1tnPj4yXXwwO2lmKGxba1tnPj4yXT4+MF0mMTI4KWE9am0oYSxmKXwwO2Vsc2V7a1tmPj4yXT1sW2E+PjBdO2E9MX1rW2c+PjJdPShrW2c+PjJdfDApK2F9fXdoaWxlKDApO1RuKGtbKGtbYz4+Ml18MCkrMTI+PjJdfDApO1RuKGtbKGtbYz4+Ml18MCkrMTY+PjJdfDApO3I9aDtyZXR1cm59ZnVuY3Rpb24gVW4oYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLG09MCxuPTAsbz0wO249cjtyPXIrMzJ8MDtvPW4rMjh8MDtjPW4rMjR8MDtqPW4rMjB8MDtlPW4rMTZ8MDtoPW4rMTJ8MDtnPW4rOHwwO2Q9bis0fDA7Zj1uO2tbbz4+Ml09YTtrW2M+PjJdPWI7a1tqPj4yXT1rW2tba1tjPj4yXT4+Ml0+PjJdO2tbaD4+Ml09a1soa1tvPj4yXXwwKSsyMD4+Ml07a1tnPj4yXT1rWyhrW2g+PjJdfDApKzI4Pj4yXTtrW2Q+PjJdPTA7Yj1rWyhrW28+PjJdfDApKzM2Pj4yXXwwO2E9a1soa1tjPj4yXXwwKSs0Pj4yXXwwO2lmKChpWyhrW2M+PjJdfDApKzI0Pj4wXXwwKT09MTIxKXtvPWhhKGIsYSl8MDtrW2U+PjJdPW99ZWxzZXtvPWhhKGIsKGErMzF8MCkvMzJ8MCl8MDtrW2U+PjJdPW99d2hpbGUoMSl7bz0kbShnKXwwO2tbZj4+Ml09bztpZighKChrWyhrW2g+PjJdfDApKzY4Pj4yXXwwKTwoa1soa1tqPj4yXXwwKSsyND4+Ml18MCk/KGtbKGtbaD4+Ml18MCkrNjg+PjJdfDApIT0oa1tkPj4yXXwwKTowKSltPTY7ZG8gaWYoKG18MCk9PTYpe209MDtiPWtbZj4+Ml18MDtpZigoaVsoa1tjPj4yXXwwKSsyND4+MF18MCk9PTEyMSl7a1soa1soa1tjPj4yXXwwKSsyOD4+Ml18MCkrKChrW2U+PjJdfDApKyhrW2Q+PjJdfDApPDwyKT4+Ml09YjticmVha31pZihiKXtvPShrWyhrW2M+PjJdfDApKzI4Pj4yXXwwKSsoKGtbZT4+Ml18MCkrKCgoa1tkPj4yXXwwKSsxfDApLzMyfDApPDwyKXwwO2tbbz4+Ml09a1tvPj4yXXwxPDwoa1tkPj4yXSYzMSl9fXdoaWxlKDApO2lmKChpW2tbZz4+Ml0+PjBdfDApIT0xKWJyZWFrO2tbZz4+Ml09KGtbZz4+Ml18MCkrMTtiPWtbZz4+Ml18MDtpZihsW2tbZz4+Ml0+PjBdJjEyOCliPWptKGIsZCl8MDtlbHNle2tbZD4+Ml09bFtiPj4wXTtiPTF9a1tnPj4yXT0oa1tnPj4yXXwwKStifXI9bjtyZXR1cm59ZnVuY3Rpb24gVm4oYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wO2Q9cjtyPXIrMTZ8MDtnPWQrMTJ8MDtlPWQrOHwwO2g9ZCs0fDA7Zj1kO2tbZz4+Ml09YTtrW2U+PjJdPWI7a1toPj4yXT1jO2tbZj4+Ml09a1toPj4yXTtrWyhrW2Y+PjJdfDApKyhrW2U+PjJdPDw0KT4+Ml09a1tnPj4yXTtyPWQ7cmV0dXJuIDB9ZnVuY3Rpb24gV24oYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wLGU9MCxmPTAsZz0wO2Y9cjtyPXIrMzJ8MDtiPWYrMTZ8MDtkPWYrMTJ8MDtjPWY7ZT1mKzh8MDtrW2I+PjJdPWE7a1tkPj4yXT1rWyhrW2I+PjJdfDApKzg+PjJdO2tbZT4+Ml09MDtnPWltKGtbZD4+Ml18MCxjKXwwO2tbZD4+Ml09KGtbZD4+Ml18MCkrZztnPWM7YT1jO2lmKChrW2c+PjJdfDApPT0wJihrW2crND4+Ml18MCk9PTB8KGtbYT4+Ml18MCk9PTEmKGtbYSs0Pj4yXXwwKT09MCl7a1tkPj4yXT0wO2tbZT4+Ml09MTtkPWtbZD4+Ml18MDtnPWtbYj4+Ml18MDtnPWcrOHwwO2tbZz4+Ml09ZDtnPWtbZT4+Ml18MDtyPWY7cmV0dXJuIGd8MH1lbHNle2E9YzthPV9SKGtbYT4+Ml18MCxrW2ErND4+Ml18MCwyLDApfDA7Zz0oa1tiPj4yXXwwKSsxMnwwO2tbZz4+Ml09KGtbZz4+Ml18MCkrYTtkPWtbZD4+Ml18MDtnPWtbYj4+Ml18MDtnPWcrOHwwO2tbZz4+Ml09ZDtnPWtbZT4+Ml18MDtyPWY7cmV0dXJuIGd8MH1yZXR1cm4gMH1mdW5jdGlvbiBYbihhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaT0wO2U9cjtyPXIrMzJ8MDtpPWUrMjB8MDtoPWUrMTJ8MDtkPWUrOHwwO2Y9ZSs0fDA7Zz1lO2tbaT4+Ml09YTtrW2UrMTY+PjJdPWI7a1toPj4yXT1jO2tbZD4+Ml09MDtrW2Y+PjJdPWtbKGtbaT4+Ml18MCkrMjA+PjJdO2tbZz4+Ml09a1toPj4yXTthPShrW2c+PjJdfDApKzR8MDtrW2E+PjJdPShrW2E+PjJdfDApKzE7YT0oa1tnPj4yXXwwKSs4fDA7a1thPj4yXT0oa1thPj4yXXwwKSsoa1soa1tmPj4yXXwwKSs2ND4+Ml18MCk7cj1lO3JldHVybiBrW2Q+PjJdfDB9ZnVuY3Rpb24gWW4oYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxpPTAsaj0wO2k9cjtyPXIrMzJ8MDtqPWkrMjB8MDtlPWk7Zj1pKzE2fDA7Zz1pKzEyfDA7aD1pKzh8MDtrW2o+PjJdPWE7YT1lO2tbYT4+Ml09YjtrW2ErND4+Ml09YztrW2Y+PjJdPWQ7a1tnPj4yXT0wO2Q9emwoa1tqPj4yXXwwLDIxLGcsMCl8MDtrW2g+PjJdPWQ7ZG8gaWYoIShrW2g+PjJdfDApKXtqPWU7VmUoa1tnPj4yXXwwLDEsa1tqPj4yXXwwLGtbais0Pj4yXXwwKXwwO2o9RGUoa1tnPj4yXXwwKXwwO2tbaD4+Ml09ajtpZigoa1toPj4yXXwwKT09MTAwPyhRZShrW2c+PjJdfDAsMCl8MCk9PTQ6MCl7a1toPj4yXT0wO2JyZWFrfWo9Z2Uoa1tnPj4yXXwwKXwwO2tbaD4+Ml09ajtrW2g+PjJdPShrW2g+PjJdfDApPT0wPzI2NzpqO2tbZz4+Ml09MH13aGlsZSgwKTtrW2tbZj4+Ml0+PjJdPWtbZz4+Ml07cj1pO3JldHVybiBrW2g+PjJdfDB9ZnVuY3Rpb24gWm4oYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MDtmPXI7cj1yKzE2fDA7Zz1mKzEyfDA7Yz1mKzh8MDtkPWYrNHwwO2U9ZjtrW2c+PjJdPWE7a1tjPj4yXT1iO2tbZD4+Ml09MDtiPXpsKGtbZz4+Ml18MCwyMixkLDApfDA7a1tlPj4yXT1iO2RvIGlmKCEoa1tlPj4yXXwwKSl7VWUoa1tkPj4yXXwwLDEsMCl8MDtpZigoRGUoa1tkPj4yXXwwKXwwKT09MTAwPyhRZShrW2Q+PjJdfDAsMCl8MCk9PTQ6MClicmVhaztnPWdlKGtbZD4+Ml18MCl8MDtrW2U+PjJdPWc7a1tlPj4yXT0oa1tlPj4yXXwwKT09MD8yNjc6ZztrW2Q+PjJdPTB9d2hpbGUoMCk7a1trW2M+PjJdPj4yXT1rW2Q+PjJdO3I9ZjtyZXR1cm4ga1tlPj4yXXwwfWZ1bmN0aW9uIF9uKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MDtjPXI7cj1yKzE2fDA7ZD1jKzR8MDtiPWM7a1tkPj4yXT1hO2tbYj4+Ml09KGtbZD4+Ml18MCkrKDAtKGtbKGtbZD4+Ml18MCkrLTQ+PjJdfDApKTthPWtbYj4+Ml18MDtpZigoa1tkPj4yXXwwKT09KChrW2I+PjJdfDApKzE2KzR8MCkpaVthKzE+PjBdPTA7ZWxzZSBpW2ErMj4+MF09MDtpZihsW2tbYj4+Ml0+PjBdfDApe3I9YztyZXR1cm59aWYobFsoa1tiPj4yXXwwKSsxPj4wXXwwKXtyPWM7cmV0dXJufWlmKGxbKGtbYj4+Ml18MCkrMj4+MF18MCl7cj1jO3JldHVybn1VZChrW2I+PjJdfDApO3I9YztyZXR1cm59ZnVuY3Rpb24gJG4oYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTA7ZD1yO3I9cisxNnwwO2U9ZCs4fDA7Zj1kKzR8MDtnPWQ7a1tlPj4yXT1hO2tbZj4+Ml09YjtrW2c+PjJdPWM7YT1rW2c+PjJdfDA7a1thPj4yXT0oa1thPj4yXXwwKSsxO2tbKGtbZT4+Ml18MCkrMzY+PjJdPWtbZj4+Ml07cj1kO3JldHVybiAwfWZ1bmN0aW9uIGFvKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MCxlPTA7ZT1yO3I9cisxNnwwO2I9ZSs4fDA7Yz1lKzR8MDtkPWU7a1tiPj4yXT1hO2E9a2Yoa1soa1tiPj4yXXwwKSsxMj4+Ml18MCwyMzM2OSwwLDAsMCl8MDtrW2M+PjJdPWE7ZG8gaWYoIShrW2M+PjJdfDApKXthPWJvKGtbYj4+Ml18MCwxKXwwO2tbYz4+Ml09YTthPWtbKGtbYj4+Ml18MCkrMTI+PjJdfDA7aWYoISgoa1tjPj4yXXwwKT09MHwoa1tjPj4yXXwwKT09MTAxKSl7a2YoYSwyMzM5NywwLDAsMCl8MDtrZihrWyhrW2I+PjJdfDApKzEyPj4yXXwwLDIzMzg0LDAsMCwwKXwwO2JyZWFrfWE9a2YoYSwyMzM4NCwwLDAsMCl8MDtrW2Q+PjJdPWE7aWYoa1tkPj4yXXwwKWtbYz4+Ml09a1tkPj4yXX13aGlsZSgwKTtJbShrW2I+PjJdfDApO3I9ZTtyZXR1cm4ga1tjPj4yXXwwfWZ1bmN0aW9uIGJvKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wLGk9MCxqPTAsbD0wO2w9cjtyPXIrMzJ8MDtjPWwrMjh8MDtkPWwrMjR8MDtlPWwrMjB8MDtpPWwrMTZ8MDtoPWwrMTJ8MDtqPWwrOHwwO2Y9bCs0fDA7Zz1sO2tbYz4+Ml09YTtrW2Q+PjJdPWI7a1tlPj4yXT0wO2tbaD4+Ml09MDthPXpsKGtbYz4+Ml18MCwyNyxoLDApfDA7a1tpPj4yXT1hO2lmKCEoa1tpPj4yXXwwKSl7VWUoa1toPj4yXXwwLDEsa1soa1tjPj4yXXwwKSsyNzI+PjJdfDApfDA7VWUoa1toPj4yXXwwLDIsa1soa1tjPj4yXXwwKSsyNDg+PjJdfDApfDA7YTp3aGlsZSgxKXthPShEZShrW2g+PjJdfDApfDApPT0xMDA7Yj1rW2g+PjJdfDA7aWYoIWEpYnJlYWs7YT1NZShiLDApfDA7a1tnPj4yXT1hO2tbZj4+Ml09MDt3aGlsZSgxKXtpZihrW2k+PjJdfDApY29udGludWUgYTtpZigoa1tmPj4yXXwwKT49KGtbKGtbYz4+Ml18MCkrMjQ4Pj4yXXwwKSljb250aW51ZSBhO2E9eWwoa1tjPj4yXXwwLGtbZz4+Ml18MCxrW2Y+PjJdfDAsLTIpfDA7a1tpPj4yXT1hO2lmKChrW2k+PjJdfDApPT0xMDEpe2tbZT4+Ml09MTtrW2k+PjJdPTB9a1tmPj4yXT0oa1tmPj4yXXwwKSsxfX1oPWdlKGIpfDA7a1tqPj4yXT1oO2lmKCEoa1tpPj4yXXwwKSlrW2k+PjJdPWtbaj4+Ml19SW0oa1tjPj4yXXwwKTt0bChrW2M+PjJdfDApO3I9bDtyZXR1cm4gKChrW2k+PjJdfDApPT0wJihrW2Q+PjJdfDApIT0wJihrW2U+PjJdfDApIT0wPzEwMTprW2k+PjJdfDApfDB9ZnVuY3Rpb24gY28oYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wO0M9cjtyPXIrMjA4fDA7eT1DKzMyfDA7Yz1DKzEzMnwwO2Q9QysxMjh8MDt2PUMrMTI0fDA7dD1DKzEyMHwwO0E9QysxMTZ8MDtxPUMrMTEyfDA7aj1DKzEwOHwwO0I9Qys5NnwwO3g9QztzPUMrOTJ8MDtmPUMrODh8MDtlPUMrODR8MDtvPUMrODB8MDttPUMrNzZ8MDtsPUMrNzJ8MDt6PUMrNjh8MDtwPUMrNjR8MDtoPUMrNjB8MDtuPUMrNTZ8MDt3PUMrNTJ8MDt1PUMrNDh8MDtnPUMrMTM2fDA7a1tjPj4yXT1hO2tbZD4+Ml09YjtrW3Y+PjJdPWtba1tkPj4yXT4+Ml07a1t0Pj4yXT1rW2tbKGtbdj4+Ml18MCkrMzY+PjJdPj4yXTtrW0I+PjJdPTA7a1tCKzQ+PjJdPTA7a1tCKzg+PjJdPTA7aWYoIShrWyhrW2Q+PjJdfDApKzEyPj4yXXwwKSl7d2Uoa1tjPj4yXXwwLDE4NDAyLDAsMCk7cj1DO3JldHVybn07a1t4Pj4yXT0wO2tbeCs0Pj4yXT0wO2tbeCs4Pj4yXT0wO2tbeCsxMj4+Ml09MDtrW3grMTY+PjJdPTA7a1t4KzIwPj4yXT0wO2tbeCsyND4+Ml09MDtrW3grMjg+PjJdPTA7YT1UbShrW2Q+PjJdfDAsMCxxKXwwO2tbQT4+Ml09YTthOmRvIGlmKCEoa1tBPj4yXXwwKSl7YT1TZCgoa1txPj4yXXwwKSoxMnwwKXwwO2tbeCsyND4+Ml09YTtpZighKGtbeCsyND4+Ml18MCkpe2tbQT4+Ml09NzticmVha31EPShrW2Q+PjJdfDApKzMyfDA7Yj1rW0QrND4+Ml18MDthPXgrMTZ8MDtrW2E+PjJdPWtbRD4+Ml07a1thKzQ+PjJdPWI7a1t4Pj4yXT1rW2Q+PjJdO2tbaj4+Ml09MDt3aGlsZSgxKXtpZigoa1tqPj4yXXwwKT49KGtbKGtbdj4+Ml18MCkrMjQ+PjJdfDApKWJyZWFrIGE7a1tlPj4yXT0wO2tbbz4+Ml09MDtrW20+PjJdPTA7a1tsPj4yXT0wO2tbeCs0Pj4yXT1rW2o+PjJdO2tbeCs4Pj4yXT0wO1htKGtbKGtbZD4+Ml18MCkrMTI+PjJdfDAsMTU4LHgpfDA7RD1PZShrWyhrW2Q+PjJdfDApKzg+PjJdfDAsKGtbaj4+Ml18MCkrMXwwKXwwO2tbej4+Ml09RDtEPUtlKGtbKGtbZD4+Ml18MCkrOD4+Ml18MCwoa1tqPj4yXXwwKSsxfDApfDA7a1twPj4yXT1EO2lmKCEoa1t6Pj4yXXwwKSl7aWYoKFFlKGtbKGtbZD4+Ml18MCkrOD4+Ml18MCwoa1tqPj4yXXwwKSsxfDApfDApIT01KWJyZWFrfWVsc2V7RD1NbihrWyhrW3Y+PjJdfDApKzM2Pj4yXXwwLGtbKGtbZD4+Ml18MCkrMTY+PjJdfDAsa1t6Pj4yXXwwLGtbcD4+Ml18MCxzKXwwO2tbQT4+Ml09RDtpZihrW0E+PjJdfDApYnJlYWsgYTtEPWFjW2tbKGtbdD4+Ml18MCkrMjA+PjJdJjI1NV0oa1tzPj4yXXwwLGYsZSxvLG0sbCl8MDtrW0E+PjJdPUQ7d2hpbGUoMSl7aWYoa1tBPj4yXXwwKWJyZWFrO2tbbj4+Ml09MjE0NzQ4MzY0NztrW3c+PjJdPTA7a1toPj4yXT0wO3doaWxlKDEpe2lmKChrW2g+PjJdfDApPj0oa1txPj4yXXwwKSlicmVhaztrW3U+PjJdPShrW3grMjQ+PjJdfDApKygoa1toPj4yXXwwKSoxMnwwKTtpZigoa1trW3U+PjJdPj4yXXwwKSE9MD8oKGtbKGtbdT4+Ml18MCkrND4+Ml18MCktKGtbKGtbdT4+Ml18MCkrOD4+Ml18MCl8MCk8KGtbbj4+Ml18MCk6MCl7a1tuPj4yXT0oa1soa1t1Pj4yXXwwKSs0Pj4yXXwwKS0oa1soa1t1Pj4yXXwwKSs4Pj4yXXwwKTtrW3c+PjJdPWtbdT4+Ml19a1toPj4yXT0oa1toPj4yXXwwKSsxfWlmKCEoa1t3Pj4yXXwwKSl7a1tBPj4yXT0xMDE7Y29udGludWV9Yj1rW3c+PjJdfDA7aWYoISgyNTQmaVtrW2tbdz4+Ml0+PjJdPj4wXSkpa1tiPj4yXT0wO2Vsc2UgZm8oYiwoa1t3Pj4yXXwwKSs0fDApO3doaWxlKDEpe2lmKGtbQT4+Ml18MClicmVhaztpZigoa1tsPj4yXXwwKT49KGtbbj4+Ml18MCkpYnJlYWs7RD1hY1trWyhrW3Q+PjJdfDApKzIwPj4yXSYyNTVdKGtbcz4+Ml18MCxmLGUsbyxtLGwpfDA7a1tBPj4yXT1EfWlmKCEoa1tBPj4yXXwwKSl7Yj0oKGtbdz4+Ml18MCktKGtbeCsyND4+Ml18MCl8MCkvMTJ8MDthPWtbbz4+Ml18MDtEPShrW20+PjJdfDApLShrW28+PjJdfDApfDA7a1t5Pj4yXT1rW2o+PjJdO2tbeSs0Pj4yXT1iO2tbeSs4Pj4yXT1hO2tbeSsxMj4+Ml09RDtfZCg2NCxnLDIzNDE0LHkpfDA7RD1nbyhCLGcsLTEpfDA7a1tBPj4yXT1EO2NvbnRpbnVlfWlmKChrW0E+PjJdfDApIT0xMDEpY29udGludWU7aWYoa1soa1t2Pj4yXXwwKSs0MD4+Ml18MCljb250aW51ZTtrW0E+PjJdPTI2N31pZigoa1tBPj4yXXwwKT09MTAxKWtbQT4+Ml09MDtiY1trWyhrW3Q+PjJdfDApKzE2Pj4yXSYyNTVdKGtbcz4+Ml18MCl8MDtpZihrW0E+PjJdfDApYnJlYWsgYX1rW2o+PjJdPShrW2o+PjJdfDApKzF9a1tBPj4yXT03fXdoaWxlKDApO1VkKGtbeCsyND4+Ml18MCk7SW0oa1t2Pj4yXXwwKTtiPWtbYz4+Ml18MDtpZihrW0E+PjJdfDApe0FlKGIsa1tBPj4yXXwwKTtVZChrW0I+PjJdfDApO3I9QztyZXR1cm59ZWxzZXt3ZShiLGtbQj4+Ml18MCwoa1tCKzQ+PjJdfDApLTF8MCwxNDgpO3I9QztyZXR1cm59fWZ1bmN0aW9uIGVvKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxpPTAsaj0wLGw9MCxtPTAsbj0wO2w9cjtyPXIrNDh8MDttPWwrMzZ8MDtuPWwrMjh8MDtnPWwrMjR8MDtmPWwrMjB8MDtlPWwrMTZ8MDtoPWwrMTJ8MDtkPWwrOHwwO2o9bCs0fDA7aT1sO2tbbT4+Ml09YTtrW2wrMzI+PjJdPWI7a1tuPj4yXT1jO2tbZz4+Ml09a1tuPj4yXTtrW2Q+PjJdPTA7YT1fbShrW2tbZz4+Ml0+PjJdfDAsa1ttPj4yXXwwLGtbKGtbZz4+Ml18MCkrND4+Ml18MCxoKXwwO2tbaj4+Ml09YTtrW2Y+PjJdPWtbKGtbKGtbbT4+Ml18MCkrMjA+PjJdfDApKzY0Pj4yXTtpZihrW2g+PjJdfDApZm8oaCxkKTtrW2U+PjJdPTA7d2hpbGUoMSl7aWYoKGtbZT4+Ml18MCk+PShrW2Y+PjJdfDApKWJyZWFrO209KGtbZz4+Ml18MCkrOHwwO249a1ttPj4yXXwwO2tbbT4+Ml09bisxO2tbaT4+Ml09KGtbKGtbZz4+Ml18MCkrMjQ+PjJdfDApKyhuKjEyfDApO2tbKGtbaT4+Ml18MCkrOD4+Ml09KGtbZj4+Ml18MCktKGtbZT4+Ml18MCktMTtrW2tbaT4+Ml0+PjJdPWtbaD4+Ml07a1soa1tpPj4yXXwwKSs0Pj4yXT1rW2Q+PjJdO2tbZT4+Ml09KGtbZT4+Ml18MCkrMX1yPWw7cmV0dXJuIGtbaj4+Ml18MH1mdW5jdGlvbiBmbyhhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTA7Zj1yO3I9cisxNnwwO2M9Zis4fDA7ZD1mKzR8MDtlPWY7a1tjPj4yXT1hO2tbZD4+Ml09YjtiPWtba1tjPj4yXT4+Ml18MDtpZigobFtrW2tbYz4+Ml0+PjJdPj4wXXwwKSYxMjgpYj1qbShiLGUpfDA7ZWxzZXtrW2U+PjJdPWxbYj4+MF07Yj0xfWM9a1tjPj4yXXwwO2tbYz4+Ml09KGtbYz4+Ml18MCkrYjtkPWtbZD4+Ml18MDtrW2Q+PjJdPShrW2Q+PjJdfDApKygoa1tlPj4yXXwwKS0yKTtyPWY7cmV0dXJufWZ1bmN0aW9uIGdvKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsbD0wO2w9cjtyPXIrMzJ8MDtkPWwrMjB8MDtlPWwrMTZ8MDtmPWwrMTJ8MDtnPWwrOHwwO2g9bCs0fDA7aj1sO2tbZT4+Ml09YTtrW2Y+PjJdPWI7a1tnPj4yXT1jO2lmKChrW2c+PjJdfDApPDApe2I9dVIoa1tmPj4yXXwwKXwwO2tbZz4+Ml09Yn1kbyBpZigoKGtbKGtbZT4+Ml18MCkrND4+Ml18MCkrKGtbZz4+Ml18MCkrMXwwKT49KGtbKGtbZT4+Ml18MCkrOD4+Ml18MCkpe2tbaD4+Ml09KGtbKGtbZT4+Ml18MCkrOD4+Ml18MCkrKGtbZz4+Ml18MCkrMTAwO2I9VmQoa1trW2U+PjJdPj4yXXwwLGtbaD4+Ml18MCl8MDtrW2o+PjJdPWI7aWYoa1tqPj4yXXwwKXtrW2tbZT4+Ml0+PjJdPWtbaj4+Ml07a1soa1tlPj4yXXwwKSs4Pj4yXT1rW2g+PjJdO2JyZWFrfWtbZD4+Ml09NztqPWtbZD4+Ml18MDtyPWw7cmV0dXJuIGp8MH13aGlsZSgwKTtiUygoa1trW2U+PjJdPj4yXXwwKSsoa1soa1tlPj4yXXwwKSs0Pj4yXXwwKXwwLGtbZj4+Ml18MCxrW2c+PjJdfDApfDA7aj0oa1tlPj4yXXwwKSs0fDA7a1tqPj4yXT0oa1tqPj4yXXwwKSsoa1tnPj4yXXwwKTtpWyhrW2tbZT4+Ml0+PjJdfDApKyhrWyhrW2U+PjJdfDApKzQ+PjJdfDApPj4wXT0wO2tbZD4+Ml09MDtqPWtbZD4+Ml18MDtyPWw7cmV0dXJuIGp8MH1mdW5jdGlvbiBobyhhLGIsYyxkLGUsZixnKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDt2YXIgaD0wLGk9MCxqPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTAsRT0wLEY9MCxHPTA7Rz1yO3I9cisyMjR8MDtoPUcrMjEyfDA7aT1HKzIwOHwwO2o9RysyMDR8MDtsPUcrMjAwfDA7bT1HKzE5NnwwO249RysxOTJ8MDtvPUcrMTg4fDA7Qj1HKzE4NHwwO0U9RysxODB8MDtxPUcrMTc2fDA7Rj1HKzE2NHwwO3o9RysxNjB8MDtwPUcrNDB8MDt5PUcrMTU2fDA7dj1HKzE1MnwwO3c9RyszMnwwO3g9RysyNHwwO3M9RysxNDh8MDt0PUcrMTQ0fDA7QT1HKzE0MHwwO0M9Rzt1PUcrMTM2fDA7a1toPj4yXT1hO2tbaT4+Ml09YjtrW2o+PjJdPWM7a1tsPj4yXT1kO2tbbT4+Ml09ZTtrW24+PjJdPWY7a1tvPj4yXT1nO2tbQj4+Ml09a1trW2k+PjJdPj4yXTtrW0U+PjJdPTA7a1tGPj4yXT0wO2tbRis0Pj4yXT0wO2tbRis4Pj4yXT0wO2tbej4+Ml09MDtrW3k+PjJdPS0xO2lmKCEoa1soa1tpPj4yXXwwKSsxMj4+Ml18MCkpe3dlKGtbaD4+Ml18MCwxODQwMiwwLDApO3I9RztyZXR1cm59a1t6Pj4yXT0xO2E6d2hpbGUoMSl7Zj13O2tbZj4+Ml09MDtrW2YrND4+Ml09MDtmPXg7a1tmPj4yXT0wO2tbZis0Pj4yXT0wO2Y9a1tvPj4yXXwwO2lmKChrW28+PjJdfDApPj0wKWtbeT4+Ml09KGYrKGtbej4+Ml18MCktMXwwKS8oa1t6Pj4yXXwwKXwwO2Vsc2V7Yz1oYSgtMSxmKXwwO2tbeT4+Ml09Y31rW3Y+PjJdPTA7d2hpbGUoMSl7aWYoKGtbdj4+Ml18MCk+PShrW3o+PjJdfDApKWJyZWFrO2tbcz4+Ml09LTE7a1tBPj4yXT1wKygoa1t2Pj4yXXwwKSoyNHwwKTtjPWtbQT4+Ml18MDtrW2M+PjJdPTA7a1tjKzQ+PjJdPTA7a1tjKzg+PjJdPTA7a1tjKzEyPj4yXT0wO2tbYysxNj4+Ml09MDtrW2MrMjA+PjJdPTA7a1t0Pj4yXT0wO3doaWxlKDEpe2lmKChrW3Q+PjJdfDApPj0oa1soa1tCPj4yXXwwKSsyND4+Ml18MCkpYnJlYWs7a1tDPj4yXT0wO2tbQys0Pj4yXT0wO2tbQys4Pj4yXT0wO2tbQysxMj4+Ml09MDtrW0MrMTY+PjJdPTA7a1tDKzIwPj4yXT0wO2tbdT4+Ml09MDtpZighKChrW24+PjJdfDApPj0wPyhrW3Q+PjJdfDApIT0oa1tuPj4yXXwwKTowKSl7Yz13O2M9aW8oa1t5Pj4yXXwwLGtbaT4+Ml18MCxrW3Q+PjJdfDAsa1tjPj4yXXwwLGtbYys0Pj4yXXwwLHgsQyx1KXwwO2tbRT4+Ml09YztpZihrW0U+PjJdfDApYnJlYWsgYTtpZigoa1t1Pj4yXXwwKT4oa1tzPj4yXXwwKSl7Yz1rW0E+PjJdfDA7a1tjPj4yXT1rW0M+PjJdO2tbYys0Pj4yXT1rW0MrND4+Ml07a1tjKzg+PjJdPWtbQys4Pj4yXTtrW2MrMTI+PjJdPWtbQysxMj4+Ml07a1tjKzE2Pj4yXT1rW0MrMTY+PjJdO2tbYysyMD4+Ml09a1tDKzIwPj4yXTtrW3M+PjJdPWtbdT4+Ml19fWtbdD4+Ml09KGtbdD4+Ml18MCkrMX1lPShrW0E+PjJdfDApKzh8MDthPXc7ZD1rW2ErND4+Ml18a1tlKzQ+PjJdO2M9dztrW2M+PjJdPWtbYT4+Ml18a1tlPj4yXTtrW2MrND4+Ml09ZDtrW3Y+PjJdPShrW3Y+PjJdfDApKzF9ZD14O2M9dztpZigoKGtbZD4+Ml18MCk9PShrW2M+PjJdfDApPyhrW2QrND4+Ml18MCk9PShrW2MrND4+Ml18MCk6MCl8KGtbej4+Ml18MCk9PTQpe0Q9MjA7YnJlYWt9a1t6Pj4yXT0oa1t6Pj4yXXwwKSsxfWI6ZG8gaWYoKER8MCk9PTIwKXtrW3E+PjJdPTA7d2hpbGUoMSl7aWYoISgoa1txPj4yXXwwKTwoa1t6Pj4yXXwwKT8oa1tFPj4yXXwwKT09MDowKSlicmVhayBiO0Q9am8oa1tpPj4yXXwwLHArKChrW3E+PjJdfDApKjI0fDApfDAsa1txPj4yXXwwLChrW3E+PjJdfDApPT0oKGtbej4+Ml18MCktMXwwKSYxLGtbeT4+Ml18MCxrW2o+PjJdfDAsa1tsPj4yXXwwLGtbbT4+Ml18MCxGKXwwO2tbRT4+Ml09RDtrW3E+PjJdPShrW3E+PjJdfDApKzF9fXdoaWxlKDApO0ltKGtbQj4+Ml18MCk7Zj1rW2g+PjJdfDA7aWYoa1tFPj4yXXwwKXtBZShmLGtbRT4+Ml18MCk7VWQoa1tGPj4yXXwwKTtyPUc7cmV0dXJufWVsc2V7d2UoZixrW0Y+PjJdfDAsLTEsMTQ4KTtyPUc7cmV0dXJufX1mdW5jdGlvbiBpbyhhLGIsYyxkLGUsZixnLGgpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO3ZhciBpPTAsaj0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTA7Qz1yO3I9cisxMTJ8MDtpPUMrMTA0fDA7aj1DKzEwMHwwO2w9Qys5NnwwO209Qys5MnwwO249QysxNnwwO289Qys4OHwwO3A9Qys4NHwwO3E9Qys4MHwwO0E9Qys3NnwwO3o9Qys3MnwwO0I9Qys0OHwwO3k9Qys0MHwwO3Q9QyszNnwwO3M9QyszMnwwO3U9QysyOHwwO3Y9QysyNHwwO3c9Qys4fDA7eD1DO2tbaj4+Ml09YTtrW2w+PjJdPWI7a1ttPj4yXT1jO2I9bjtrW2I+PjJdPWQ7a1tiKzQ+PjJdPWU7a1tvPj4yXT1mO2tbcD4+Ml09ZztrW3E+PjJdPWg7a1t0Pj4yXT0tMTtrW0I+PjJdPTA7a1tCKzQ+PjJdPTA7a1tCKzg+PjJdPTA7a1tCKzEyPj4yXT0wO2tbQisxNj4+Ml09MDtrW0IrMjA+PjJdPTA7Zj1UbShrW2w+PjJdfDAseiwwKXwwO2tbQT4+Ml09ZjtpZihrW0E+PjJdfDApe2tbaT4+Ml09a1tBPj4yXTtCPWtbaT4+Ml18MDtyPUM7cmV0dXJuIEJ8MH1rW3k+PjJdPShrW3o+PjJdfDApKjI0O2Y9U2Qoa1t5Pj4yXXwwKXwwO2tbQisxNj4+Ml09ZjtpZighKGtbQisxNj4+Ml18MCkpe2tbaT4+Ml09NztCPWtbaT4+Ml18MDtyPUM7cmV0dXJuIEJ8MH1kUyhrW0IrMTY+PjJdfDAsMCxrW3k+PjJdfDApfDA7a1tCPj4yXT1rW2w+PjJdO2tbQis0Pj4yXT1rW20+PjJdO2tbQis4Pj4yXT1rW2o+PjJdO2tbQisxMj4+Ml09a1t6Pj4yXTtrW0IrMjA+PjJdPS0xO2Y9WG0oa1soa1tsPj4yXXwwKSsxMj4+Ml18MCwxNTksQil8MDtrW0E+PjJdPWY7aWYoIShrW0E+PjJdfDApKXtrW3M+PjJdPTA7d2hpbGUoMSl7aWYoKGtbcz4+Ml18MCk+PShrW3o+PjJdfDApKWJyZWFrO2lmKGtbKGtbQisxNj4+Ml18MCkrKChrW3M+PjJdfDApKjI0fDApKzEyPj4yXXwwKXtnPWVTKDEsMCxrW3M+PjJdfDApfDA7Zj1rW28+PjJdfDA7Yj1mO2g9a1tiKzQ+PjJdfEw7a1tmPj4yXT1rW2I+PjJdfGc7a1tmKzQ+PjJdPWh9a1tzPj4yXT0oa1tzPj4yXXwwKSsxfWtba1twPj4yXT4+Ml09a1ttPj4yXTt3aGlsZSgxKXtpZighKChtbyhCKXwwKSE9MF4xKSlicmVhaztmPW47bm8oQixrW2Y+PjJdfDAsa1tmKzQ+PjJdfDAsdSx2LHcseCk7aWYoKGtbdj4+Ml18MCk8PShrW3Q+PjJdfDApKWNvbnRpbnVlO2tbKGtbcD4+Ml18MCkrND4+Ml09a1t1Pj4yXTtmPXg7aD1rW2YrND4+Ml18MDtnPShrW3A+PjJdfDApKzE2fDA7a1tnPj4yXT1rW2Y+PjJdO2tbZys0Pj4yXT1oO2c9dztoPWtbZys0Pj4yXXwwO2Y9KGtbcD4+Ml18MCkrOHwwO2tbZj4+Ml09a1tnPj4yXTtrW2YrND4+Ml09aDtrW3Q+PjJdPWtbdj4+Ml19a1trW3E+PjJdPj4yXT1rW3Q+PjJdfVVkKGtbQisxNj4+Ml18MCk7a1tpPj4yXT1rW0E+PjJdO0I9a1tpPj4yXXwwO3I9QztyZXR1cm4gQnwwfWZ1bmN0aW9uIGpvKGEsYixjLGQsZSxmLGcsaCxpKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtpPWl8MDt2YXIgaj0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wLEU9MCxGPTAsRz0wLEg9MCxJPTAsSj0wLEs9MCxNPTAsTj0wLE89MCxQPTA7Tj1yO3I9cisxMjh8MDtqPU4rMTEyfDA7bD1OKzEwOHwwO1A9TisxMDR8MDttPU4rMTAwfDA7bj1OKzk2fDA7bz1OKzkyfDA7cD1OKzg4fDA7cT1OKzg0fDA7cz1OKzgwfDA7dD1OKzc2fDA7ST1OKzcyfDA7Sj1OKzY4fDA7Sz1OKzY0fDA7Rj1OKzYwfDA7eT1OKzU2fDA7ej1OKzUyfDA7RD1OKzQ4fDA7Qj1OKzQ0fDA7dz1OO089Tis0MHwwO0g9TiszNnwwO0c9TiszMnwwO3Y9TisyOHwwO3U9TisyNHwwO3g9TisyMHwwO0E9TisxNnwwO0M9TisxMnwwO0U9Tis4fDA7a1tsPj4yXT1hO2tbUD4+Ml09YjtrW20+PjJdPWM7a1tuPj4yXT1kO2tbbz4+Ml09ZTtrW3A+PjJdPWY7a1txPj4yXT1nO2tbcz4+Ml09aDtrW3Q+PjJdPWk7a1tJPj4yXT1rW2tbbD4+Ml0+PjJdO2tbeT4+Ml09MDtrW3o+PjJdPTA7a1tEPj4yXT0wO2tbQj4+Ml09a1soa1tQPj4yXXwwKSs0Pj4yXTtmPShrW1A+PjJdfDApKzE2fDA7ZD1rW2YrND4+Ml18MDtjPXc7a1tjPj4yXT1rW2Y+PjJdO2tbYys0Pj4yXT1kO2tbTz4+Ml09KGtba1tQPj4yXT4+Ml18MCkrMTtjPU9lKGtbKGtbbD4+Ml18MCkrOD4+Ml18MCxrW08+PjJdfDApfDA7a1tLPj4yXT1jO2M9a1soa1tsPj4yXXwwKSs4Pj4yXXwwO2Q9a1tPPj4yXXwwO2lmKCEoa1tLPj4yXXwwKSlpZigoUWUoYyxkKXwwKSE9NSl7a1tqPj4yXT03O1A9a1tqPj4yXXwwO3I9TjtyZXR1cm4gUHwwfWVsc2V7a1tqPj4yXT0wO1A9a1tqPj4yXXwwO3I9TjtyZXR1cm4gUHwwfVA9S2UoYyxkKXwwO2tbRj4+Ml09UDtrW0g+PjJdPWtba1soa1tJPj4yXXwwKSszNj4+Ml0+PjJdO1A9TW4oa1soa1tJPj4yXXwwKSszNj4+Ml18MCxrWyhrW2w+PjJdfDApKzE2Pj4yXXwwLGtbSz4+Ml18MCxrW0Y+PjJdfDAsRyl8MDtrW0o+PjJdPVA7aWYoa1tKPj4yXXwwKXtrW2o+PjJdPWtbSj4+Ml07UD1rW2o+PjJdfDA7cj1OO3JldHVybiBQfDB9d2hpbGUoMSl7aWYoa1tKPj4yXXwwKWJyZWFrO2tbdT4+Ml09LTE7a1t4Pj4yXT0wO2tbQT4+Ml09MDtrW0M+PjJdPTA7UD1hY1trWyhrW0g+PjJdfDApKzIwPj4yXSYyNTVdKGtbRz4+Ml18MCx2LHUseCxBLHkpfDA7a1tKPj4yXT1QO2lmKGtbSj4+Ml18MCl7TT05O2JyZWFrfWlmKChrW3k+PjJdfDApPChrW0I+PjJdfDApKWNvbnRpbnVlO2lmKCEoa1tEPj4yXXwwKSl7a1tFPj4yXT0oa1tGPj4yXXwwKS0oa1t4Pj4yXXwwKTtQPWtvKGtbST4+Ml18MCxrWyhrW2w+PjJdfDApKzE2Pj4yXXwwLGtbbz4+Ml18MCwoa1tLPj4yXXwwKSsoa1t4Pj4yXXwwKXwwLGtbRT4+Ml18MCxCLHcpfDA7a1tKPj4yXT1QO2tbRD4+Ml09MTtkbyBpZighKGtbSj4+Ml18MCkpe2lmKChrW0I+PjJdfDApPjB8KGtbbT4+Ml18MCk+MCl7UD1nbyhrW3Q+PjJdfDAsa1tzPj4yXXwwLC0xKXwwO2tbSj4+Ml09UDticmVha31pZihrW3g+PjJdfDApe1A9Z28oa1t0Pj4yXXwwLGtbSz4+Ml18MCxrW3g+PjJdfDApfDA7a1tKPj4yXT1QfX13aGlsZSgwKTtpZihrW0o+PjJdfDApY29udGludWU7aWYoKGtbeT4+Ml18MCk8KGtbQj4+Ml18MCkpY29udGludWV9aWYoKGtbeT4+Ml18MCk+PSgoa1tCPj4yXXwwKSsoa1tvPj4yXXwwKXwwKSl7TT0yMTticmVha31QPXc7Zj1rW1A+PjJdfDA7UD1rW1ArND4+Ml18MDtPPWVTKDEsMCwoa1t5Pj4yXXwwKS0oa1tCPj4yXXwwKXwwKXwwO2tbQz4+Ml09KChmJk98MCkhPTB8KFAmTHwwKSE9MCkmMTtpZigoa1t5Pj4yXXwwKT4oa1tCPj4yXXwwKSl7UD1nbyhrW3Q+PjJdfDAsKGtbSz4+Ml18MCkrKGtbej4+Ml18MCl8MCwoa1t4Pj4yXXwwKS0oa1t6Pj4yXXwwKXwwKXwwO2tbSj4+Ml09UH1pZigoa1tKPj4yXXwwKT09MCYoa1tDPj4yXXwwKSE9MCl7UD1nbyhrW3Q+PjJdfDAsa1twPj4yXXwwLC0xKXwwO2tbSj4+Ml09UH1pZighKGtbSj4+Ml18MCkpe1A9Z28oa1t0Pj4yXXwwLChrW0s+PjJdfDApKyhrW3g+PjJdfDApfDAsKGtbQT4+Ml18MCktKGtbeD4+Ml18MCl8MCl8MDtrW0o+PjJdPVB9aWYoKGtbSj4+Ml18MCk9PTAmKGtbQz4+Ml18MCkhPTApe1A9Z28oa1t0Pj4yXXwwLGtbcT4+Ml18MCwtMSl8MDtrW0o+PjJdPVB9a1t6Pj4yXT1rW0E+PjJdfWlmKChNfDApPT05KXtpZigoa1tKPj4yXXwwKT09MTAxKXtQPWdvKGtbdD4+Ml18MCwoa1tLPj4yXXwwKSsoa1t6Pj4yXXwwKXwwLC0xKXwwO2tbSj4+Ml09UH19ZWxzZSBpZigoTXwwKT09MjE/KGtbbj4+Ml18MCkhPTA6MCl7UD1nbyhrW3Q+PjJdfDAsa1tzPj4yXXwwLC0xKXwwO2tbSj4+Ml09UH1iY1trWyhrW0g+PjJdfDApKzE2Pj4yXSYyNTVdKGtbRz4+Ml18MCl8MDtrW2o+PjJdPWtbSj4+Ml07UD1rW2o+PjJdfDA7cj1OO3JldHVybiBQfDB9ZnVuY3Rpb24ga28oYSxiLGMsZCxlLGYsZyl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7dmFyIGg9MCxpPTAsaj0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wLEU9MDtFPXI7cj1yKzk2fDA7dz1FKzg0fDA7aD1FKzgwfDA7aT1FKzc2fDA7eD1FKzcyfDA7aj1FKzY4fDA7bD1FKzY0fDA7eT1FKzYwfDA7ej1FKzU2fDA7QT1FO3M9RSs1MnwwO3Q9RSs0OHwwO3E9RSs0NHwwO0M9RSs0MHwwO0I9RSszNnwwO0Q9RSszMnwwO3Y9RSsyOHwwO3U9RSsyNHwwO3A9RSsyMHwwO209RSsxNnwwO249RSsxMnwwO289RSs4fDA7a1toPj4yXT1hO2tbaT4+Ml09YjtrW3g+PjJdPWM7a1tqPj4yXT1kO2tbbD4+Ml09ZTtrW3k+PjJdPWY7a1t6Pj4yXT1nO2E9a1t6Pj4yXXwwO2Y9a1thKzQ+PjJdfDA7ZD1BO2tbZD4+Ml09a1thPj4yXTtrW2QrND4+Ml09ZjtkPUE7ZG8gaWYoKGtbZD4+Ml18MCkhPTB8KGtbZCs0Pj4yXXwwKSE9MCl7a1tzPj4yXT0wO3doaWxlKDEpe2Q9QTthPWtbZD4+Ml18MDtkPWtbZCs0Pj4yXXwwO2Y9ZVMoMSwwLGtbcz4+Ml18MCl8MDtpZighKCgoYSZmfDApIT0wfChkJkx8MCkhPTApXjEpKWJyZWFrO2tbcz4+Ml09KGtbcz4+Ml18MCkrMX1rW3Q+PjJdPTA7d2hpbGUoMSl7ZD1BO2E9a1tkPj4yXXwwO2Q9a1tkKzQ+PjJdfDA7Zj1lUygxLDAsKGtbeD4+Ml18MCktMS0oa1t0Pj4yXXwwKXwwKXwwO2lmKCEoKChhJmZ8MCkhPTB8KGQmTHwwKSE9MCleMSkpYnJlYWs7a1t0Pj4yXT0oa1t0Pj4yXXwwKSsxfWtbcT4+Ml09KChrW3M+PjJdfDApLShrW3Q+PjJdfDApfDApLzJ8MDtpZigoa1txPj4yXXwwKT4wKXtrW0I+PjJdPTA7a1t2Pj4yXT1rW2tbKGtbaD4+Ml18MCkrMzY+PjJdPj4yXTtkPU1uKGtbKGtbaD4+Ml18MCkrMzY+PjJdfDAsa1tpPj4yXXwwLGtbaj4+Ml18MCxrW2w+PjJdfDAsdSl8MDtrW0Q+PjJdPWQ7aWYoa1tEPj4yXXwwKXtrW3c+PjJdPWtbRD4+Ml07RD1rW3c+PjJdfDA7cj1FO3JldHVybiBEfDB9d2hpbGUoMSl7aWYoa1tEPj4yXXwwKWJyZWFrO2lmKChrW0I+PjJdfDApPj0oKGtbeD4+Ml18MCkrKGtbcT4+Ml18MCl8MCkpYnJlYWs7a1ttPj4yXT0wO2tbbj4+Ml09MDtrW28+PjJdPTA7ZD1hY1trWyhrW3Y+PjJdfDApKzIwPj4yXSYyNTVdKGtbdT4+Ml18MCxwLG0sbixvLEIpfDA7a1tEPj4yXT1kfWJjW2tbKGtbdj4+Ml18MCkrMTY+PjJdJjI1NV0oa1t1Pj4yXXwwKXwwO2g9a1tEPj4yXXwwO2lmKChrW0Q+PjJdfDApIT0wJihrW0Q+PjJdfDApIT0xMDEpe2tbdz4+Ml09aDtEPWtbdz4+Ml18MDtyPUU7cmV0dXJuIER8MH1lbHNle2tbQz4+Ml09KChofDApPT0xMDEmMSkrKGtbQj4+Ml18MCktKGtbeD4+Ml18MCk7aWYoKGtbQz4+Ml18MCk8PTApYnJlYWs7RD1rW3k+PjJdfDA7a1tEPj4yXT0oa1tEPj4yXXwwKSsoa1tDPj4yXXwwKTtEPUE7Qz1hUyhrW0Q+PjJdfDAsa1tEKzQ+PjJdfDAsa1tDPj4yXXwwKXwwO0Q9a1t6Pj4yXXwwO2tbRD4+Ml09QztrW0QrND4+Ml09TDticmVha319fXdoaWxlKDApO2tbdz4+Ml09MDtEPWtbdz4+Ml18MDtyPUU7cmV0dXJuIER8MH1mdW5jdGlvbiBsbyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaT0wLGo9MCxsPTAsbT0wO2g9cjtyPXIrMzJ8MDtqPWgrMjh8MDtsPWgrMjR8MDttPWgrMjB8MDtpPWgrMTZ8MDtmPWgrMTJ8MDtlPWgrOHwwO2c9aCs0fDA7ZD1oO2tbaj4+Ml09YTtrW2w+PjJdPWI7a1ttPj4yXT1jO2tbaT4+Ml09a1ttPj4yXTtrW2Y+PjJdPShrWyhrW2k+PjJdfDApKzE2Pj4yXXwwKSsoKGtbbD4+Ml18MCkqMjR8MCk7a1trW2Y+PjJdPj4yXT1rWyhrWyhrW2o+PjJdfDApKzIwPj4yXXwwKSs2ND4+Ml07YT1fbShrW2tbaT4+Ml0+PjJdfDAsa1tqPj4yXXwwLGtbKGtbaT4+Ml18MCkrND4+Ml18MCxlKXwwO2tbZz4+Ml09YTtpZighKGtbZT4+Ml18MCkpe209a1tnPj4yXXwwO3I9aDtyZXR1cm4gbXwwfWtbZD4+Ml09MDtrWyhrW2Y+PjJdfDApKzQ+PjJdPWtbZT4+Ml07Zm8oZSxkKTtrWyhrW2Y+PjJdfDApKzEyPj4yXT1rW2U+PjJdO2tbKGtbZj4+Ml18MCkrMjA+PjJdPWtbZT4+Ml07a1soa1tmPj4yXXwwKSs4Pj4yXT1rW2Q+PjJdO2tbKGtbZj4+Ml18MCkrMTY+PjJdPWtbZD4+Ml07bT1rW2c+PjJdfDA7cj1oO3JldHVybiBtfDB9ZnVuY3Rpb24gbW8oYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wLGU9MCxmPTAsZz0wLGg9MCxpPTAsaj0wO2o9cjtyPXIrMzJ8MDtiPWorMjh8MDtjPWorMjR8MDtkPWorMjB8MDtnPWorMTZ8MDtmPWorMTJ8MDtlPWorOHwwO2g9ais0fDA7aT1qO2tbYz4+Ml09YTthOmRvIGlmKChrWyhrW2M+PjJdfDApKzIwPj4yXXwwKTwwKXtrWyhrW2M+PjJdfDApKzIwPj4yXT0wO2tbZD4+Ml09MDt3aGlsZSgxKXtpZigoa1tkPj4yXXwwKT49KGtbKGtbYz4+Ml18MCkrMTI+PjJdfDApKWJyZWFrIGE7a1tnPj4yXT0oa1soa1tjPj4yXXwwKSsxNj4+Ml18MCkrKChrW2Q+PjJdfDApKjI0fDApO29vKChrW2c+PjJdfDApKzEyfDAsKGtbZz4+Ml18MCkrOHwwLGtbKGtbYz4+Ml18MCkrOD4+Ml18MCk7a1tkPj4yXT0oa1tkPj4yXXwwKSsxfX1lbHNle2tbZT4+Ml09MjE0NzQ4MzY0NztrW2Q+PjJdPTA7d2hpbGUoMSl7aWYoKGtbZD4+Ml18MCk+PShrWyhrW2M+PjJdfDApKzEyPj4yXXwwKSlicmVhaztrW2g+PjJdPShrWyhrW2M+PjJdfDApKzE2Pj4yXXwwKSsoKGtbZD4+Ml18MCkqMjR8MCk7aWYoKGtbKGtbaD4+Ml18MCkrMTI+PjJdfDApIT0wPyhrWyhrW2g+PjJdfDApKzg+PjJdfDApPChrW2U+PjJdfDApOjApa1tlPj4yXT1rWyhrW2g+PjJdfDApKzg+PjJdO2tbZD4+Ml09KGtbZD4+Ml18MCkrMX1pZigoa1tlPj4yXXwwKT09MjE0NzQ4MzY0Nyl7a1tiPj4yXT0xO2k9a1tiPj4yXXwwO3I9ajtyZXR1cm4gaXwwfWg9KGtbZT4+Ml18MCktKGtbKGtbYz4+Ml18MCkrOD4+Ml18MCkrMXwwO2tbZj4+Ml09aDtrWyhrW2M+PjJdfDApKzIwPj4yXT1oO2tbZD4+Ml09MDt3aGlsZSgxKXtpZigoa1tkPj4yXXwwKT49KGtbKGtbYz4+Ml18MCkrMTI+PjJdfDApKWJyZWFrIGE7a1tpPj4yXT0oa1soa1tjPj4yXXwwKSsxNj4+Ml18MCkrKChrW2Q+PjJdfDApKjI0fDApO29vKChrW2k+PjJdfDApKzEyfDAsKGtbaT4+Ml18MCkrOHwwLChrW2U+PjJdfDApKzF8MCk7b28oKGtbaT4+Ml18MCkrMjB8MCwoa1tpPj4yXXwwKSsxNnwwLGtbZj4+Ml18MCk7a1tkPj4yXT0oa1tkPj4yXXwwKSsxfX13aGlsZSgwKTtrW2I+PjJdPTA7aT1rW2I+PjJdfDA7cj1qO3JldHVybiBpfDB9ZnVuY3Rpb24gbm8oYSxiLGMsZCxlLGYsZyl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7dmFyIGg9MCxqPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wO0I9cjtyPXIrOTZ8MDtoPUIrODR8MDtqPUIrMzJ8MDtsPUIrODB8MDttPUIrNzZ8MDtuPUIrNzJ8MDtvPUIrNjh8MDt0PUIrNjR8MDtzPUIrNjB8MDtwPUIrNTZ8MDt2PUIrMjR8MDt3PUIrMTZ8MDtBPUIrNTJ8MDt6PUIrNDh8MDtxPUIrNDR8MDt1PUIrNDB8MDt4PUIrOHwwO3k9QjtrW2g+PjJdPWE7YT1qO2tbYT4+Ml09YjtrW2ErND4+Ml09YztrW2w+PjJdPWQ7a1ttPj4yXT1lO2tbbj4+Ml09ZjtrW28+PjJdPWc7a1t0Pj4yXT1rWyhrW2g+PjJdfDApKzIwPj4yXTtrW3M+PjJdPTA7Zz12O2tbZz4+Ml09MDtrW2crND4+Ml09MDtnPXc7a1tnPj4yXT0wO2tbZys0Pj4yXT0wO2tbcD4+Ml09MDt3aGlsZSgxKXtpZigoa1twPj4yXXwwKT49KGtbKGtbaD4+Ml18MCkrMTI+PjJdfDApKWJyZWFrO2tbQT4+Ml09KGtbKGtbaD4+Ml18MCkrMTY+PjJdfDApKygoa1twPj4yXXwwKSoyNHwwKTthOmRvIGlmKGtbKGtbQT4+Ml18MCkrMjA+PjJdfDApe2tbej4+Ml09a1soa1tBPj4yXXwwKSsyMD4+Ml07a1txPj4yXT1rWyhrW0E+PjJdfDApKzE2Pj4yXTt3aGlsZSgxKXtpZigoa1txPj4yXXwwKT49KChrW3Q+PjJdfDApKyhrWyhrW2g+PjJdfDApKzg+PjJdfDApfDApKWJyZWFrIGE7ZD1lUygxLDAsa1twPj4yXXwwKXwwO2Y9eDtrW2Y+PjJdPWQ7a1tmKzQ+PjJdPUw7Zj1lUygxLDAsKGtbcT4+Ml18MCktKGtbdD4+Ml18MCl8MCl8MDtkPXk7a1tkPj4yXT1mO2tbZCs0Pj4yXT1MO2Q9djtmPWo7Zz14O2I9a1tzPj4yXXwwO2lmKCgoa1tkPj4yXXxrW2Y+PjJdKSZrW2c+PjJdfDApIT0wPzE6KChrW2QrND4+Ml18a1tmKzQ+PjJdKSZrW2crND4+Ml18MCkhPTApa1tzPj4yXT1iKzE7ZWxzZSBrW3M+PjJdPWIrMWUzO2Q9eDtlPXY7Zj1rW2UrND4+Ml18a1tkKzQ+PjJdO2c9djtrW2c+PjJdPWtbZT4+Ml18a1tkPj4yXTtrW2crND4+Ml09ZjtrW3U+PjJdPTA7d2hpbGUoMSl7aWYoKGtbdT4+Ml18MCk+PShrW2tbQT4+Ml0+PjJdfDApKWJyZWFrO2Q9eTtkPWFTKGtbZD4+Ml18MCxrW2QrND4+Ml18MCxrW3U+PjJdfDApfDA7ZT13O2Y9a1tlKzQ+PjJdfEw7Zz13O2tbZz4+Ml09a1tlPj4yXXxkO2tbZys0Pj4yXT1mO2tbdT4+Ml09KGtbdT4+Ml18MCkrMX1pZighKGlba1t6Pj4yXT4+MF0mMjU0KSlicmVhayBhO2ZvKHoscSl9fXdoaWxlKDApO2tbcD4+Ml09KGtbcD4+Ml18MCkrMX1rW2tbbD4+Ml0+PjJdPWtbdD4+Ml07a1trW20+PjJdPj4yXT1rW3M+PjJdO0E9djt6PWtbQSs0Pj4yXXwwO3k9a1tuPj4yXXwwO2tbeT4+Ml09a1tBPj4yXTtrW3krND4+Ml09ejt5PXc7ej1rW3krND4+Ml18MDtBPWtbbz4+Ml18MDtrW0E+PjJdPWtbeT4+Ml07a1tBKzQ+PjJdPXo7cj1CO3JldHVybn1mdW5jdGlvbiBvbyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLGw9MDtsPXI7cj1yKzMyfDA7ZD1sKzE2fDA7ZT1sKzEyfDA7Zj1sKzh8MDtoPWwrNHwwO2c9bDtrW2Q+PjJdPWE7a1tlPj4yXT1iO2tbZj4+Ml09YztrW2g+PjJdPWtba1tkPj4yXT4+Ml07aWYoIShrW2g+PjJdfDApKXtyPWw7cmV0dXJufWtbZz4+Ml09a1trW2U+PjJdPj4yXTt3aGlsZSgxKXtpZigoa1tnPj4yXXwwKT49KGtbZj4+Ml18MCkpYnJlYWs7aWYoIShpW2tbaD4+Ml0+PjBdJjI1NCkpe2o9NTticmVha31mbyhoLGcpfWlmKChqfDApPT01KXtrW2c+PjJdPS0xO2tbaD4+Ml09MH1rW2tbZT4+Ml0+PjJdPWtbZz4+Ml07a1trW2Q+PjJdPj4yXT1rW2g+PjJdO3I9bDtyZXR1cm59ZnVuY3Rpb24gcG8oYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTA7Zz1yO3I9ciszMnwwO2g9ZysxNnwwO2M9ZysxMnwwO2Y9Zys4fDA7ZD1nKzR8MDtlPWc7a1toPj4yXT1hO2tbYz4+Ml09YjtrW2Q+PjJdPTA7a1tlPj4yXT0wO2I9emwoa1toPj4yXXwwLDM2LGUsMCl8MDtrW2Y+PjJdPWI7aWYoa1tmPj4yXXwwKXtiPWtbZD4+Ml18MDtoPWtbYz4+Ml18MDtrW2g+PjJdPWI7aD1rW2Y+PjJdfDA7cj1nO3JldHVybiBofDB9aWYoMTAwPT0oRGUoa1tlPj4yXXwwKXwwKSl7aD1NZShrW2U+PjJdfDAsMCl8MDtrW2Q+PjJdPWh9Yj1nZShrW2U+PjJdfDApfDA7a1tmPj4yXT1iO2I9a1tkPj4yXXwwO2g9a1tjPj4yXXwwO2tbaD4+Ml09YjtoPWtbZj4+Ml18MDtyPWc7cmV0dXJuIGh8MH1mdW5jdGlvbiBxbyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaT0wLGo9MCxtPTAsbj0wLG89MCxwPTAscT0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wO0M9cjtyPXIrMTI4fDA7ZD1DKzExMnwwO2U9QysxMDh8MDtEPUMrMTA0fDA7Zj1DKzEwMHwwO0E9Qys5NnwwO3U9Qys5MnwwO3c9Qys4OHwwO3g9Qys4NHwwO3o9Qys4MHwwO3Y9Qys3NnwwO209QysxNnwwO2o9Qys2NHwwO2c9Qys2MHwwO3Q9Qys4fDA7eT1DKzUyfDA7aT1DKzQ4fDA7bz1DKzQ0fDA7cD1DKzQwfDA7bj1DO3E9QyszNnwwO2g9QyszMnwwO0I9QysyOHwwO3M9QysyNHwwO2tbZT4+Ml09YTtrW0Q+PjJdPWI7a1tmPj4yXT1jO2tbdT4+Ml09a1tEPj4yXTtrW3Y+PjJdPTA7YT1tO2tbYT4+Ml09MDtrW2ErND4+Ml09MDtrW2o+PjJdPTA7a1tqKzQ+PjJdPTA7a1tqKzg+PjJdPTA7a1tnPj4yXT0wO2tbQys1Nj4+Ml09NjQwO2E9U2QoNjQwKXwwO2tbej4+Ml09YTtpZighKGtbej4+Ml18MCkpe2tbZD4+Ml09NztEPWtbZD4+Ml18MDtyPUM7cmV0dXJuIER8MH1rW3g+PjJdPShrW3o+PjJdfDApKzU2ODtrW3c+PjJdPShrW3g+PjJdfDApKzE2O0Q9cm8oa1tlPj4yXXwwLGopfDA7a1tBPj4yXT1EO3doaWxlKDEpe2lmKCEoKGtbQT4+Ml18MCk9PTA/KGtbdT4+Ml18MCk+MDowKSlicmVhazthPWtbKGtbZT4+Ml18MCkrMjQ4Pj4yXTw8MTA7RD10O2tbRD4+Ml09YTtrW0QrND4+Ml09KChhfDApPDApPDwzMT4+MzE7a1t5Pj4yXT0wO2tbaT4+Ml09MDtrW28+PjJdPTA7RD16bChrW2U+PjJdfDAsMjgseSwwKXwwO2tbQT4+Ml09RDtVZShrW3k+PjJdfDAsMSwyPihrW2Y+PjJdfDApPzI6a1tmPj4yXXwwKXwwO2lmKChEZShrW3k+PjJdfDApfDApPT0xMDApe2E9TmUoa1t5Pj4yXXwwLDApfDA7RD1tO2tbRD4+Ml09YTtrW0QrND4+Ml09TDtEPU1lKGtbeT4+Ml18MCwxKXwwO2tbdj4+Ml09RH1lbHNlIGtbdj4+Ml09LTE7RD1nZShrW3k+PjJdfDApfDA7a1tBPj4yXT1EO2RvIGlmKChrW0E+PjJdfDApPT0wPyhrW2orND4+Ml18MCkhPTA6MCl7a1twPj4yXT1rW2orND4+Ml07RD1uO2tbRD4+Ml09MDtrW0QrND4+Ml09MDtrW3E+PjJdPTA7RD1zbyhqLG4scSl8MDtrW0E+PjJdPUQ7aWYoKGtbdj4+Ml18MCk+PTA/KGI9bSxhPXQsYT1qUyhrW2I+PjJdfDAsa1tiKzQ+PjJdfDAsa1thPj4yXXwwLGtbYSs0Pj4yXXwwKXwwLGI9TCxjPW4sRD10LEQ9alMoa1tjPj4yXXwwLGtbYys0Pj4yXXwwLGtbRD4+Ml18MCxrW0QrND4+Ml18MCl8MCxjPUwsISgoYnwwKT4oY3wwKXwoYnwwKT09KGN8MCkmYT4+PjA+PUQ+Pj4wKSk6MCl7a1tqKzQ+PjJdPWtbcD4+Ml07YnJlYWt9Yz1uO2E9a1tjKzQ+PjJdfDA7RD1tO2tbRD4+Ml09a1tjPj4yXTtrW0QrND4+Ml09YTtrW3Y+PjJdPWtbcT4+Ml07a1tpPj4yXT0xO2tbZz4+Ml09MX13aGlsZSgwKTtpZigoa1t2Pj4yXXwwKTwwKWJyZWFrO2RTKGtbej4+Ml18MCwwLDY0MCl8MDtrWyhrW3g+PjJdfDApKzEyPj4yXT0xO2RvIGlmKCEoa1tBPj4yXXwwKSl7RD1tO0Q9dG8oa1tlPj4yXXwwLGtbRD4+Ml18MCxrW0QrND4+Ml18MCxvKXwwO2tbQT4+Ml09RDtpZigoa1tvPj4yXXwwKSE9MD8hKChrW2k+PjJdfDApIT0wJihrW28+PjJdfDApPT0xKTowKWJyZWFrO2tbaD4+Ml09MDthPWtbZT4+Ml18MDtEPW07RD0kUihrW0Q+PjJdfDAsa1tEKzQ+PjJdfDAsMSwwKXwwO0Q9dW8oYSxELEwsaCl8MDtrW0E+PjJdPUQ7aWYoa1toPj4yXXwwKXtEPShrW3g+PjJdfDApKzEyfDA7a1tEPj4yXT1rW0Q+PjJdfDJ9fXdoaWxlKDApO2lmKCEoa1tBPj4yXXwwKSl7RD1tO0Q9dm8oa1tlPj4yXXwwLGtbRD4+Ml18MCxrW0QrND4+Ml18MCxrW3Y+PjJdfDAsa1t3Pj4yXXwwKXwwO2tbQT4+Ml09RH1pZigoKDA9PShrW0E+PjJdfDApPyhrWyhrW3c+PjJdfDApKzQ+PjJdfDApPT0oa1t2Pj4yXXwwKTowKT8oRD1FbChrW2U+PjJdfDAsa1t3Pj4yXXwwLGtbeD4+Ml18MCl8MCxrW0E+PjJdPUQsMD09KER8MCkpOjApPyhEPUZsKGtbZT4+Ml18MCxrW3c+PjJdfDApfDAsa1tBPj4yXT1ELDEwMD09KER8MCkpOjApe2lmKChrW2k+PjJdfDApIT0wJihrW28+PjJdfDApPjApe2tbQj4+Ml09a1soa1t3Pj4yXXwwKSs0MD4+Ml07a1tzPj4yXT1rWyhrW3c+PjJdfDApKzQ0Pj4yXTtEPW07RD13byhrW2U+PjJdfDAsa1tEPj4yXXwwLGtbRCs0Pj4yXXwwLChrW28+PjJdfDApLTF8MCxrW0I+PjJdfDAsa1tzPj4yXXwwLGtbej4+Ml18MCl8MDtrW0E+PjJdPUR9ZWxzZXtEPW07RD14byhrW2U+PjJdfDAsa1tEPj4yXXwwLGtbRCs0Pj4yXXwwLGtbbz4+Ml18MCxrW3c+PjJdfDAsa1t6Pj4yXXwwKXwwO2tbQT4+Ml09RH1pZigoa1tBPj4yXXwwKT09MD8oa1trW3o+PjJdPj4yXXwwKSE9MDowKXtkb3tEPXlvKGtbZT4+Ml18MCxrW3o+PjJdfDAsa1t3Pj4yXXwwKXwwO2tbQT4+Ml09RDtpZighKGtbQT4+Ml18MCkpe0Q9Rmwoa1tlPj4yXXwwLGtbdz4+Ml18MCl8MDtrW0E+PjJdPUR9aWYoKGtbQT4+Ml18MCk9PTEwMD8oa1soa1t6Pj4yXXwwKSs0Pj4yXXwwKT49KGtbdT4+Ml18MCk6MClrW0E+PjJdPTB9d2hpbGUoKGtbQT4+Ml18MCk9PTEwMCk7aWYoKGtbQT4+Ml18MCk9PTA/KGtbdT4+Ml09KGtbdT4+Ml18MCktKDErKGtbKGtbej4+Ml18MCkrND4+Ml18MCkpLEQ9bSxEPXpvKGtbZT4+Ml18MCxrW0Q+PjJdfDAsa1tEKzQ+PjJdfDAsa1t3Pj4yXXwwLHYpfDAsa1tBPj4yXT1ELChrW3Y+PjJdfDApIT0wKTowKXtrW2c+PjJdPTE7RD1tO0FvKGosa1tEPj4yXXwwLGtbRCs0Pj4yXXwwLGtbdj4+Ml18MCxBKX19aWYoa1t2Pj4yXXwwKXthPShrW3o+PjJdfDApKzQwfDA7YT1rUyhrW2E+PjJdfDAsa1thKzQ+PjJdfDAsLTEsLTEpfDA7RD0oa1t6Pj4yXXwwKSs0MHwwO2tbRD4+Ml09YTtrW0QrND4+Ml09TH1CbyhrW2U+PjJdfDAsa1t6Pj4yXXwwLEEpO2lmKChrW3Y+PjJdfDApPT0wPyhsWyhrW3o+PjJdfDApKzQ4Pj4wXXwwfDApPT0wOjApe2M9a1tlPj4yXXwwO2E9bTthPSRSKGtbYT4+Ml18MCxrW2ErND4+Ml18MCwxLDApfDA7RD0oa1t6Pj4yXXwwKSs0MHwwO0psKGMsYSxMLGtbRD4+Ml18MCxrW0QrND4+Ml18MCl8MH19TGwoa1t3Pj4yXXwwKX1pZigoa1tnPj4yXXwwKSE9MCYoa1tBPj4yXXwwKT09MCl7RD1DbyhrW2U+PjJdfDAsail8MDtrW0E+PjJdPUR9VWQoa1t6Pj4yXXwwKTtVZChrW2o+PjJdfDApO2tbZD4+Ml09a1tBPj4yXTtEPWtbZD4+Ml18MDtyPUM7cmV0dXJuIER8MH1mdW5jdGlvbiBybyhhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wLGg9MCxpPTAsaj0wO2k9cjtyPXIrMzJ8MDtqPWkrMjR8MDtjPWkrMjB8MDtmPWkrMTZ8MDtnPWkrMTJ8MDtoPWkrOHwwO2Q9aSs0fDA7ZT1pO2tbaj4+Ml09YTtrW2M+PjJdPWI7a1tmPj4yXT0wO2tbKGtbYz4+Ml18MCkrND4+Ml09MDtiPXpsKGtbaj4+Ml18MCwyMixmLDApfDA7a1tnPj4yXT1iO2lmKGtbZz4+Ml18MCl7aj1rW2c+PjJdfDA7cj1pO3JldHVybiBqfDB9VWUoa1tmPj4yXXwwLDEsMSl8MDtpZigoMTAwPT0oRGUoa1tmPj4yXXwwKXwwKT8oaj1KZShrW2Y+PjJdfDAsMCl8MCxrW2Q+PjJdPWosaj1LZShrW2Y+PjJdfDAsMCl8MCxrW2U+PjJdPWosKGtbZD4+Ml18MCkhPTApOjApPyhEbyhrW2M+PjJdfDAsa1tlPj4yXXwwLGcpLChrW2c+PjJdfDApPT0wKTowKXtiUyhrW2tbYz4+Ml0+PjJdfDAsa1tkPj4yXXwwLGtbZT4+Ml18MCl8MDtrWyhrW2M+PjJdfDApKzQ+PjJdPWtbZT4+Ml19aj1nZShrW2Y+PjJdfDApfDA7a1toPj4yXT1qO2lmKGtbZz4+Ml18MCl7aj1rW2c+PjJdfDA7cj1pO3JldHVybiBqfDB9a1tnPj4yXT1rW2g+PjJdO2o9a1tnPj4yXXwwO3I9aTtyZXR1cm4ganwwfWZ1bmN0aW9uIHNvKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsbT0wO209cjtyPXIrMzJ8MDtnPW0rMjB8MDtlPW0rMTZ8MDtkPW0rMTJ8MDtmPW0rOHwwO2o9bSs0fDA7aD1tO2tbZT4+Ml09YTtrW2Q+PjJdPWI7a1tmPj4yXT1jO2tbaj4+Ml09a1soa1tlPj4yXXwwKSs0Pj4yXTtrW2g+PjJdPShrWyhrW2U+PjJdfDApKzQ+PjJdfDApLTI7d2hpbGUoMSl7aWYoKGtbaD4+Ml18MCk8PTApYnJlYWs7aWYoIShpWyhrW2tbZT4+Ml0+PjJdfDApKygoa1toPj4yXXwwKS0xKT4+MF0mMTI4KSlicmVhaztrW2g+PjJdPShrW2g+PjJdfDApKy0xfXdoaWxlKDEpe2lmKChrW2g+PjJdfDApPjApYj0oaVsoa1trW2U+PjJdPj4yXXwwKSsoKGtbaD4+Ml18MCktMSk+PjBdJjEyOHwwKSE9MDtlbHNlIGI9MDthPWtbaD4+Ml18MDtpZighYilicmVhaztrW2g+PjJdPWErLTF9a1soa1tlPj4yXXwwKSs0Pj4yXT1hO2E9aW0oKGtba1tlPj4yXT4+Ml18MCkrKGtbaD4+Ml18MCl8MCxrW2Q+PjJdfDApfDA7a1toPj4yXT0oa1toPj4yXXwwKSthO2E9KGtba1tlPj4yXT4+Ml18MCkrKGtbaD4+Ml18MCl8MDtpZihsWyhrW2tbZT4+Ml0+PjJdfDApKyhrW2g+PjJdfDApPj4wXSYxMjgpYT1qbShhLGtbZj4+Ml18MCl8MDtlbHNle2tba1tmPj4yXT4+Ml09bFthPj4wXTthPTF9a1toPj4yXT0oa1toPj4yXXwwKSthO2lmKChrW2g+PjJdfDApIT0oa1tqPj4yXXwwKSl7a1tnPj4yXT0yNjc7aj1rW2c+PjJdfDA7cj1tO3JldHVybiBqfDB9ZWxzZXtrW2c+PjJdPTA7aj1rW2c+PjJdfDA7cj1tO3JldHVybiBqfDB9cmV0dXJuIDB9ZnVuY3Rpb24gdG8oYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxpPTAsaj0wO2k9cjtyPXIrMzJ8MDtqPWkrMjB8MDtlPWk7Zj1pKzE2fDA7aD1pKzEyfDA7Zz1pKzh8MDtrW2o+PjJdPWE7YT1lO2tbYT4+Ml09YjtrW2ErND4+Ml09YztrW2Y+PjJdPWQ7a1tnPj4yXT0wO2Q9emwoa1tqPj4yXXwwLDgsZywwKXwwO2tbaD4+Ml09ZDtpZihrW2g+PjJdfDApe2o9a1toPj4yXXwwO3I9aTtyZXR1cm4ganwwfWQ9a1tnPj4yXXwwO2o9ZTtqPSRSKGtbaj4+Ml18MCxrW2orND4+Ml18MCwxLDApfDA7VmUoZCwxLGosTCl8MDtEZShrW2c+PjJdfDApfDA7aj1NZShrW2c+PjJdfDAsMCl8MDtrW2tbZj4+Ml0+PjJdPWo7aj1nZShrW2c+PjJdfDApfDA7a1toPj4yXT1qO2o9a1toPj4yXXwwO3I9aTtyZXR1cm4ganwwfWZ1bmN0aW9uIHVvKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaT0wLGo9MCxsPTA7aj1yO3I9ciszMnwwO2U9aisyNHwwO2w9aisyMHwwO2Y9ajtnPWorMTZ8MDtoPWorMTJ8MDtpPWorOHwwO2tbbD4+Ml09YTthPWY7a1thPj4yXT1iO2tbYSs0Pj4yXT1jO2tbZz4+Ml09ZDtkPXpsKGtbbD4+Ml18MCwxNSxoLDApfDA7a1tpPj4yXT1kO2lmKGtbaT4+Ml18MCl7a1tlPj4yXT1rW2k+PjJdO2w9a1tlPj4yXXwwO3I9ajtyZXR1cm4gbHwwfWw9a1toPj4yXXwwO2k9ZjtpPSRSKGtbaT4+Ml18MCxrW2krND4+Ml18MCwxLDApfDA7VmUobCwxLGksTCl8MDtpPWtbaD4+Ml18MDtsPWY7bD1pUyhrW2w+PjJdfDAsa1tsKzQ+PjJdfDAsMTAyNCwwKXwwO2w9JFIobHwwLEx8MCwxLDApfDA7bD1rUyhsfDAsTHwwLDEwMjQsMCl8MDtWZShpLDIsbCxMKXwwO2tba1tnPj4yXT4+Ml09MDtpZigxMDA9PShEZShrW2g+PjJdfDApfDApKXtsPShRZShrW2g+PjJdfDAsMCl8MCk9PTUmMTtrW2tbZz4+Ml0+PjJdPWx9bD1nZShrW2g+PjJdfDApfDA7a1tlPj4yXT1sO2w9a1tlPj4yXXwwO3I9ajtyZXR1cm4gbHwwfWZ1bmN0aW9uIHZvKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGk9MCxqPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTA7cD1yO3I9cis0OHwwO2Y9cCszNnwwO2c9cDtoPXArMzJ8MDtpPXArMjh8MDtuPXArMjR8MDttPXArMjB8MDtsPXArMTZ8MDtqPXArMTJ8MDtvPXArOHwwO2tbZj4+Ml09YTthPWc7a1thPj4yXT1iO2tbYSs0Pj4yXT1jO2tbaD4+Ml09ZDtrW2k+PjJdPWU7a1ttPj4yXT0wO2I9a1tpPj4yXXwwO2M9Yis1NnwwO2Rve2tbYj4+Ml09MDtiPWIrNHwwfXdoaWxlKChifDApPChjfDApKTtrW2w+PjJdPWtbaD4+Ml08PDI7ZT1TZChrW2w+PjJdfDApfDA7a1trW2k+PjJdPj4yXT1lO2lmKCEoa1trW2k+PjJdPj4yXXwwKSlrW24+PjJdPTc7ZWxzZXtkUyhrW2tbaT4+Ml0+PjJdfDAsMCxrW2w+PjJdfDApfDA7bD16bChrW2Y+PjJdfDAsMTIsbSwwKXwwO2tbbj4+Ml09bH1pZihrW24+PjJdfDApe289a1tuPj4yXXwwO3I9cDtyZXR1cm4gb3wwfWw9ZztWZShrW20+PjJdfDAsMSxrW2w+PjJdfDAsa1tsKzQ+PjJdfDApfDA7a1tqPj4yXT0wO3doaWxlKDEpe2lmKGtbbj4+Ml18MClicmVhaztpZigoRGUoa1ttPj4yXXwwKXwwKSE9MTAwKWJyZWFrO2lmKChrW2o+PjJdfDApPj0oa1toPj4yXXwwKSlicmVhaztxPWtbaj4+Ml18MDtiPU5lKGtbbT4+Ml18MCwxKXwwO2M9TDtkPU5lKGtbbT4+Ml18MCwyKXwwO2E9TDtlPU5lKGtbbT4+Ml18MCwzKXwwO2Y9TDtnPUplKGtbbT4+Ml18MCw0KXwwO2w9S2Uoa1ttPj4yXXwwLDQpfDA7bD15bShxLDAsYixjLGQsYSxlLGYsZyxsLChrW2tbaT4+Ml0+PjJdfDApKyhrW2o+PjJdPDwyKXwwKXwwO2tbbj4+Ml09bDtsPShrW2k+PjJdfDApKzR8MDtrW2w+PjJdPShrW2w+PjJdfDApKzE7a1tqPj4yXT0oa1tqPj4yXXwwKSsxfXE9Z2Uoa1ttPj4yXXwwKXwwO2tbbz4+Ml09cTtpZihrW24+PjJdfDApe3E9a1tuPj4yXXwwO3I9cDtyZXR1cm4gcXwwfWtbbj4+Ml09a1tvPj4yXTtxPWtbbj4+Ml18MDtyPXA7cmV0dXJuIHF8MH1mdW5jdGlvbiB3byhhLGIsYyxkLGUsZixnKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDt2YXIgaD0wLGo9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MCxFPTAsRj0wLEc9MCxIPTAsST0wLEo9MDtKPXI7cj1yKzIwOHwwO3k9SisyMDB8MDt6PUorMTk2fDA7aD1KKzEyMHwwO2o9SisxOTJ8MDtsPUorMTg4fDA7bT1KKzE4NHwwO0E9SisxODB8MDtHPUorMTc2fDA7Rj1KKzE3MnwwO3M9SisxMTJ8MDtxPUorMTA0fDA7cD1KKzk2fDA7dj1KKzE2OHwwO3g9SisxNjR8MDtIPUorMTYwfDA7bz1KKzE1NnwwO249SisxNTJ8MDt0PUorMTQ4fDA7dT1KKzQ4fDA7Qz1KKzE0NHwwO3c9SisxNDB8MDtFPUorMTM2fDA7ST1KO0I9SisxMzJ8MDtEPUorMTI4fDA7a1t6Pj4yXT1hO2E9aDtrW2E+PjJdPWI7a1thKzQ+PjJdPWM7a1tqPj4yXT1kO2tbbD4+Ml09ZTtrW20+PjJdPWY7a1tBPj4yXT1nO2tbRj4+Ml09MDtlPXpsKGtbej4+Ml18MCwzMixGLDApfDA7a1tHPj4yXT1lO2lmKCEoa1tHPj4yXXwwKSl7Yj1zO2tbYj4+Ml09MDtrW2IrND4+Ml09MDtiPXE7a1tiPj4yXT0wO2tbYis0Pj4yXT0wO2I9cDtrW2I+PjJdPTA7a1tiKzQ+PjJdPTA7a1t2Pj4yXT0wO2tbeD4+Ml09MDtrW28+PjJdPTA7Yj1rW0Y+PjJdfDA7ZT1oO2U9JFIoa1tlPj4yXXwwLGtbZSs0Pj4yXXwwLDEsMCl8MDtWZShiLDEsZSxMKXwwO1VlKGtbRj4+Ml18MCwyLGtbaj4+Ml18MCl8MDtlPShEZShrW0Y+PjJdfDApfDApPT0xMDA7Yj1rW0Y+PjJdfDA7aWYoIWUpe0k9Z2UoYil8MDtrW3k+PjJdPUk7ST1rW3k+PjJdfDA7cj1KO3JldHVybiBJfDB9ZT1OZShiLDEpfDA7Zz1zO2tbZz4+Ml09ZTtrW2crND4+Ml09TDtnPU5lKGtbRj4+Ml18MCwyKXwwO2U9cTtrW2U+PjJdPWc7a1tlKzQ+PjJdPUw7T2woa1tGPj4yXXwwLDMscCwoa1tBPj4yXXwwKSs0MHwwKTtpZigoa1soa1tBPj4yXXwwKSs0MCs0Pj4yXXwwKTwwKXtnPShrW0E+PjJdfDApKzQwfDA7Zz1rUyhrW2c+PjJdfDAsa1tnKzQ+PjJdfDAsLTEsLTEpfDA7ZT0oa1tBPj4yXXwwKSs0MHwwO2tbZT4+Ml09ZztrW2UrND4+Ml09TH1lPShrW0E+PjJdfDApKzQwfDA7aVsoa1tBPj4yXXwwKSs0OD4+MF09KGtbZT4+Ml18MCk9PTAmKGtbZSs0Pj4yXXwwKT09MCYxO2U9S2Uoa1tGPj4yXXwwLDQpfDA7a1t4Pj4yXT1lO2U9SmUoa1tGPj4yXXwwLDQpfDA7a1t2Pj4yXT1lO2U9cDtlPVBvKGtbej4+Ml18MCxrW2U+PjJdfDAsa1tlKzQ+PjJdfDAsbyl8MDtrW0c+PjJdPWU7aWYoKGtbRz4+Ml18MCk9PTAmKGtbbz4+Ml18MCkhPTApe2tbbj4+Ml09MDtrW3Q+PjJdPTA7cT1xbShrW3o+PjJdfDAsa1txPj4yXXwwLGtbcSs0Pj4yXXwwLG4sdCwwKXwwO2tbRz4+Ml09cTtpZighKGtbRz4+Ml18MCkpe3Q9SW8odSxrW24+PjJdfDAsa1t0Pj4yXXwwKXwwO2tbRz4+Ml09dDt3aGlsZSgxKXtpZighKChrW0c+PjJdfDApPT0wPyhrW3U+PjJdfDApIT0wOjApKWJyZWFrO3Q9TW8odSl8MDtrW0c+PjJdPXR9aWYoKEpvKGtbbD4+Ml18MCxrW20+PjJdfDAsa1t1KzI0Pj4yXXwwLGtbdSsyNCs0Pj4yXXwwKXwwKTw9MClrW28+PjJdPTA7Tm8odSl9VWQoa1tuPj4yXXwwKX1hOmRvIGlmKChrW0c+PjJdfDApPT0wJihrW28+PjJdfDApIT0wKXtrW3c+PjJdPWlba1t2Pj4yXT4+MF07dT1wO3Q9czt0PV9SKGtbdT4+Ml18MCxrW3UrND4+Ml18MCxrW3Q+PjJdfDAsa1t0KzQ+PjJdfDApfDA7dD0kUih0fDAsTHwwLDEsMCl8MDtrW2tbQT4+Ml0+PjJdPSh0fDApLzE2fDA7dD1rW3MrND4+Ml18MDt1PShrW0E+PjJdfDApKzI0fDA7a1t1Pj4yXT1rW3M+PjJdO2tbdSs0Pj4yXT10O3U9cDt0PWtbdSs0Pj4yXXwwO3M9KGtbQT4+Ml18MCkrMzJ8MDtrW3M+PjJdPWtbdT4+Ml07a1tzKzQ+PjJdPXQ7cz1oO3Q9a1tzKzQ+PjJdfDA7dT0oa1tBPj4yXXwwKSs4fDA7a1t1Pj4yXT1rW3M+PjJdO2tbdSs0Pj4yXT10O2tbKGtbQT4+Ml18MCkrMTY+PjJdPWtbaj4+Ml07a1tDPj4yXT0oa1t3Pj4yXXwwKSsxO3doaWxlKDEpe2lmKChrW0M+PjJdfDApPj0xNilicmVhazt1PShrW0E+PjJdfDApKzI0fDA7dD1oYShrW0M+PjJdfDAsa1trW0E+PjJdPj4yXXwwKXwwO3Q9JFIoa1t1Pj4yXXwwLGtbdSs0Pj4yXXwwLHR8MCwoKHR8MCk8MCk8PDMxPj4zMXwwKXwwO3U9KGtbQT4+Ml18MCkrNTYrKGtbQz4+Ml08PDUpfDA7a1t1Pj4yXT10O2tbdSs0Pj4yXT1MO2tbQz4+Ml09KGtbQz4+Ml18MCkrMX1rW0U+PjJdPShrW0E+PjJdfDApKzU2KyhrW3c+PjJdPDw1KTt1PShrW0E+PjJdfDApKzI0fDA7dD1oYShrW2tbQT4+Ml0+PjJdfDAsa1t3Pj4yXXwwKXwwO3Q9JFIoa1t1Pj4yXXwwLGtbdSs0Pj4yXXwwLHR8MCwoKHR8MCk8MCk8PDMxPj4zMXwwKXwwO3U9a1tFPj4yXXwwO2tbdT4+Ml09dDtrW3UrND4+Ml09TDtpZigoa1t4Pj4yXXwwKT4oa1soa1t6Pj4yXXwwKSsyMjQ+PjJdfDApKWI9a1t4Pj4yXXwwO2Vsc2UgYj1rWyhrW3o+PjJdfDApKzIyND4+Ml18MDtEbygoa1tFPj4yXXwwKSsyMHwwLGIsRyk7aWYoIShrW0c+PjJdfDApKXtiUyhrWyhrW0U+PjJdfDApKzIwPj4yXXwwLGtbdj4+Ml18MCxrW3g+PjJdfDApfDA7a1soa1tFPj4yXXwwKSsyMCs0Pj4yXT1rW3g+PjJdfWtbQz4+Ml09a1t3Pj4yXTt3aGlsZSgxKXtpZighKChrW0M+PjJdfDApPj0wPyhrW0c+PjJdfDApPT0wOjApKWJyZWFrIGE7a1tFPj4yXT0oa1tBPj4yXXwwKSs1Nisoa1tDPj4yXTw8NSk7eD1JbyhJLGtbKGtbRT4+Ml18MCkrMjA+PjJdfDAsa1soa1tFPj4yXXwwKSsyMCs0Pj4yXXwwKXwwO2tbRz4+Ml09eDt3aGlsZSgxKXtpZighKChrW0k+PjJdfDApIT0wPyhrW0c+PjJdfDApPT0wOjApKWJyZWFrO3g9TW8oSSl8MDtrW0c+PjJdPXh9RG8oKGtbRT4+Ml18MCkrOHwwLGtbSSsyNCs0Pj4yXXwwLEcpO2lmKChrW0c+PjJdfDApPT0wPyhiUyhrWyhrW0U+PjJdfDApKzg+PjJdfDAsa1tJKzI0Pj4yXXwwLGtbSSsyNCs0Pj4yXXwwKXwwLGtbKGtbRT4+Ml18MCkrOCs0Pj4yXT1rW0krMjQrND4+Ml0sKGtbQz4+Ml18MCk+MCk6MCl7a1tCPj4yXT0wO2tbRD4+Ml09MDtrW0U+PjJdPShrW0E+PjJdfDApKzU2Kygoa1tDPj4yXXwwKS0xPDw1KTt2PUkrMTZ8MDt3PWtbdis0Pj4yXXwwO3g9a1tFPj4yXXwwO2tbeD4+Ml09a1t2Pj4yXTtrW3grND4+Ml09dzt4PUkrMTZ8MDt4PXFtKGtbej4+Ml18MCxrW3g+PjJdfDAsa1t4KzQ+PjJdfDAsQixELDApfDA7a1tHPj4yXT14O2lmKChrW0Q+PjJdfDApPihrWyhrW3o+PjJdfDApKzIyND4+Ml18MCkpYj1rW0Q+PjJdfDA7ZWxzZSBiPWtbKGtbej4+Ml18MCkrMjI0Pj4yXXwwO0RvKChrW0U+PjJdfDApKzIwfDAsYixHKTtpZighKGtbRz4+Ml18MCkpe2JTKGtbKGtbRT4+Ml18MCkrMjA+PjJdfDAsa1tCPj4yXXwwLGtbRD4+Ml18MCl8MDtrWyhrW0U+PjJdfDApKzIwKzQ+PjJdPWtbRD4+Ml19VWQoa1tCPj4yXXwwKX1ObyhJKTtrW0M+PjJdPShrW0M+PjJdfDApKy0xfX13aGlsZSgwKTtJPWdlKGtbRj4+Ml18MCl8MDtrW0g+PjJdPUk7aWYoIShrW0c+PjJdfDApKWtbRz4+Ml09a1tIPj4yXX1rW3k+PjJdPWtbRz4+Ml07ST1rW3k+PjJdfDA7cj1KO3JldHVybiBJfDB9ZnVuY3Rpb24geG8oYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGk9MCxqPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscz0wLHQ9MDt0PXI7cj1yKzQ4fDA7Zz10KzQ0fDA7aD10KzQwfDA7aT10O2o9dCszNnwwO2w9dCszMnwwO209dCsyOHwwO3M9dCsyNHwwO249dCsyMHwwO289dCsxNnwwO3E9dCsxMnwwO3A9dCs4fDA7a1toPj4yXT1hO2E9aTtrW2E+PjJdPWI7a1thKzQ+PjJdPWM7a1tqPj4yXT1kO2tbbD4+Ml09ZTtrW20+PjJdPWY7a1tvPj4yXT0wO2tbcT4+Ml09MDtrW3A+PjJdPTA7Zj16bChrW2g+PjJdfDAsMjkscSwwKXwwO2tbcz4+Ml09ZjtpZighKGtbcz4+Ml18MCkpe2Y9aTtWZShrW3E+PjJdfDAsMSxrW2Y+PjJdfDAsa1tmKzQ+PjJdfDApfDA7Zj1rWyhrW2w+PjJdfDApKzQ+PjJdfDA7VmUoa1txPj4yXXwwLDIsZiwoKGZ8MCk8MCk8PDMxPj4zMSl8MDtpZigxMDA9PShEZShrW3E+PjJdfDApfDApKXtmPU1lKGtbcT4+Ml18MCwwKXwwO2tbbz4+Ml09Zn1mPWdlKGtbcT4+Ml18MCl8MDtrW3M+PjJdPWZ9aWYoa1tzPj4yXXwwKXtrW2c+PjJdPWtbcz4+Ml07cz1rW2c+PjJdfDA7cj10O3JldHVybiBzfDB9Zj16bChrW2g+PjJdfDAsMTAscCwwKXwwO2tbcz4+Ml09ZjtpZighKGtbcz4+Ml18MCkpe2lmKDEwMD09KERlKGtbcD4+Ml18MCl8MCkpe3E9TmUoa1twPj4yXXwwLDApfDA7Zj0oa1ttPj4yXXwwKSsyNHwwO2tbZj4+Ml09cTtrW2YrND4+Ml09TDtmPShrW20+PjJdfDApKzI0fDA7Zj1fUihrW2Y+PjJdfDAsa1tmKzQ+PjJdfDAsMSwwKXwwO3E9KGtbbT4+Ml18MCkrMzJ8MDtrW3E+PjJdPWY7a1txKzQ+PjJdPUw7cT1rW28+PjJdPDw0O2Y9KGtbbT4+Ml18MCkrMzJ8MDtlPWY7cT0kUihrW2U+PjJdfDAsa1tlKzQ+PjJdfDAscXwwLCgocXwwKTwwKTw8MzE+PjMxfDApfDA7a1tmPj4yXT1xO2tbZis0Pj4yXT1MfWY9Z2Uoa1twPj4yXXwwKXwwO2tbcz4+Ml09Zn1pZihrW3M+PjJdfDApe2tbZz4+Ml09a1tzPj4yXTtzPWtbZz4+Ml18MDtyPXQ7cmV0dXJuIHN8MH1mPShrW20+PjJdfDApKzMyfDA7Zj1QbChrW2g+PjJdfDAsa1tmPj4yXXwwLGtbZis0Pj4yXXwwLDAsMCl8MDtrW3M+PjJdPWY7aWYoa1tzPj4yXXwwKXtrW2c+PjJdPWtbcz4+Ml07cz1rW2c+PjJdfDA7cj10O3JldHVybiBzfDB9cT1pO2Y9a1txKzQ+PjJdfDA7cz0oa1ttPj4yXXwwKSs4fDA7a1tzPj4yXT1rW3E+PjJdO2tbcys0Pj4yXT1mO2tba1ttPj4yXT4+Ml09a1tvPj4yXTtrWyhrW20+PjJdfDApKzE2Pj4yXT1rW2o+PjJdO2tbbj4+Ml09MDt3aGlsZSgxKXtpZigoa1tuPj4yXXwwKT49MTYpYnJlYWs7cz0oa1ttPj4yXXwwKSsyNHwwO2Y9aGEoa1tuPj4yXXwwLGtba1ttPj4yXT4+Ml18MCl8MDtmPSRSKGtbcz4+Ml18MCxrW3MrND4+Ml18MCxmfDAsKChmfDApPDApPDwzMT4+MzF8MCl8MDtzPShrW20+PjJdfDApKzU2KyhrW24+PjJdPDw1KXwwO2tbcz4+Ml09ZjtrW3MrND4+Ml09TDtrW24+PjJdPShrW24+PjJdfDApKzF9a1tnPj4yXT0wO3M9a1tnPj4yXXwwO3I9dDtyZXR1cm4gc3wwfWZ1bmN0aW9uIHlvKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscz0wO3E9cjtyPXIrNDh8MDtkPXErNDR8MDtlPXErNDB8MDtzPXErMzZ8MDtwPXErMzJ8MDttPXErMjh8MDtmPXErMjR8MDtnPXErMjB8MDtvPXErMTZ8MDtqPXErMTJ8MDtoPXErOHwwO2w9cSs0fDA7bj1xO2tbZD4+Ml09YTtrW2U+PjJdPWI7a1tzPj4yXT1jO2tbcD4+Ml09a1soa1tzPj4yXXwwKSs0MD4+Ml07a1ttPj4yXT1rWyhrW3M+PjJdfDApKzQ0Pj4yXTtrW2Y+PjJdPWtbKGtbcz4+Ml18MCkrNDg+PjJdO2tbZz4+Ml09a1soa1tzPj4yXXwwKSs1Mj4+Ml07a1tvPj4yXT0wO2tbbj4+Ml09KGtbZT4+Ml18MCkrNTY7Yj1XbChrWyhrW24+PjJdfDApKzg+PjJdfDAsa1soa1tuPj4yXXwwKSs4KzQ+PjJdfDAsa1twPj4yXXwwLGtbbT4+Ml18MCl8MDtrW2g+PjJdPWI7a1tsPj4yXT0oa1ttPj4yXXwwKS0oa1toPj4yXXwwKTtiPWtbaD4+Ml18MDtiPVRsKGIsKChifDApPDApPDwzMT4+MzEpfDA7a1tqPj4yXT1iO2I9a1tsPj4yXXwwO2I9VGwoYiwoKGJ8MCk8MCk8PDMxPj4zMSl8MDtrW2o+PjJdPShrW2o+PjJdfDApKyhiKyhrW2w+PjJdfDApKTtiPWtbZz4+Ml18MDtiPVRsKGIsKChifDApPDApPDwzMT4+MzEpfDA7a1tqPj4yXT0oa1tqPj4yXXwwKSsoYisoa1tnPj4yXXwwKSk7aWYoKGtbKGtbbj4+Ml18MCkrMjArND4+Ml18MCk+MD8oKGtbKGtbbj4+Ml18MCkrMjArND4+Ml18MCkrKGtbaj4+Ml18MCl8MCk+KGtbKGtbZD4+Ml18MCkrMjI0Pj4yXXwwKTowKXtzPWtbbj4+Ml18MDtzPVBsKGtbZD4+Ml18MCxrW3M+PjJdfDAsa1tzKzQ+PjJdfDAsa1soa1tuPj4yXXwwKSsyMD4+Ml18MCxrWyhrW24+PjJdfDApKzIwKzQ+PjJdfDApfDA7a1tvPj4yXT1zO3M9KGtbZT4+Ml18MCkrNHwwO2tbcz4+Ml09KGtbcz4+Ml18MCkrMTtpZighKGtbbz4+Ml18MCkpe3M9T28oa1tkPj4yXXwwLGtbZT4+Ml18MCxrW3A+PjJdfDAsKGtbaD4+Ml18MCkrMXwwKXwwO2tbbz4+Ml09c31zPWtbbj4+Ml18MDtiPXM7Yj0kUihrW2I+PjJdfDAsa1tiKzQ+PjJdfDAsMSwwKXwwO2tbcz4+Ml09YjtrW3MrND4+Ml09TDtrWyhrW24+PjJdfDApKzgrND4+Ml09MDtrWyhrW24+PjJdfDApKzIwKzQ+PjJdPTA7a1tsPj4yXT1rW20+PjJdO2tbaj4+Ml09MTtzPWtbbD4+Ml18MDtzPVRsKHMsKChzfDApPDApPDwzMT4+MzEpfDA7a1tqPj4yXT0oa1tqPj4yXXwwKSsocysoa1tsPj4yXXwwKSk7cz1rW2c+PjJdfDA7cz1UbChzLCgoc3wwKTwwKTw8MzE+PjMxKXwwO2tbaj4+Ml09KGtbaj4+Ml18MCkrKHMrKGtbZz4+Ml18MCkpfWI9a1tqPj4yXXwwO3M9KGtbZT4+Ml18MCkrNDB8MDtjPXM7Yj0kUihrW2M+PjJdfDAsa1tjKzQ+PjJdfDAsYnwwLCgoYnwwKTwwKTw8MzE+PjMxfDApfDA7a1tzPj4yXT1iO2tbcys0Pj4yXT1MO0RvKChrW24+PjJdfDApKzIwfDAsKGtbKGtbbj4+Ml18MCkrMjArND4+Ml18MCkrKGtbaj4+Ml18MCl8MCxvKTtpZihrW28+PjJdfDApe3M9a1tvPj4yXXwwO3I9cTtyZXR1cm4gc3wwfWlmKCEoa1soa1tuPj4yXXwwKSsyMCs0Pj4yXXwwKSl7a1soa1tuPj4yXXwwKSsyMCs0Pj4yXT0xO2lba1soa1tuPj4yXXwwKSsyMD4+Ml0+PjBdPTB9cz1Mbygoa1tuPj4yXXwwKSsyMHwwLChrW24+PjJdfDApKzh8MCxrW3A+PjJdfDAsa1ttPj4yXXwwLGtbZj4+Ml18MCxrW2c+PjJdfDApfDA7a1tvPj4yXT1zO3M9a1tvPj4yXXwwO3I9cTtyZXR1cm4gc3wwfWZ1bmN0aW9uIHpvKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGk9MCxqPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscz0wO3M9cjtyPXIrNDh8MDtmPXMrNDR8MDtnPXM7aD1zKzQwfDA7aT1zKzM2fDA7aj1zKzMyfDA7bT1zKzI4fDA7cD1zKzI0fDA7bz1zKzIwfDA7bD1zKzE2fDA7cT1zKzEyfDA7bj1zKzh8MDtrW2Y+PjJdPWE7YT1nO2tbYT4+Ml09YjtrW2ErND4+Ml09YztrW2g+PjJdPWQ7a1tpPj4yXT1lO2tbbT4+Ml09MDtrW3A+PjJdPTA7a1tqPj4yXT0oa1soa1toPj4yXXwwKSs0Pj4yXXwwKS0xO3doaWxlKDEpe2lmKCEoKGtbaj4+Ml18MCk+PTA/KGtbcD4+Ml18MCk9PTA6MCkpYnJlYWs7a1tvPj4yXT0wO2tbbD4+Ml09MDt3aGlsZSgxKXtpZigoa1tsPj4yXXwwKT49KGtbKGtbaD4+Ml18MCkrND4+Ml18MCkpYnJlYWs7a1tvPj4yXT1rWyhrW2tbaD4+Ml0+PjJdfDApKyhrW2w+PjJdPDwyKT4+Ml07aWYoKGtba1tvPj4yXT4+Ml18MCk9PShrW2o+PjJdfDApKWJyZWFrO2tbbD4+Ml09KGtbbD4+Ml18MCkrMX1pZighKGtbKGtbbz4+Ml18MCkrNDA+PjJdfDApKXtlPVZsKGtbZj4+Ml18MCxrW28+PjJdfDApfDA7a1twPj4yXT1lO2lmKCEoa1twPj4yXXwwKSl7ZT1nO2U9RW8oa1tmPj4yXXwwLGtbZT4+Ml18MCxrW2UrND4+Ml18MCxrW2tbbz4+Ml0+PjJdfDApfDA7a1twPj4yXT1lfWtba1tpPj4yXT4+Ml09MH1lbHNle2tbcT4+Ml09a1soa1tvPj4yXXwwKSs2ND4+Ml07a1tuPj4yXT1rWyhrW28+PjJdfDApKzYwPj4yXTtlPWc7ZT1GbyhrW2Y+PjJdfDAsa1tlPj4yXXwwLGtbZSs0Pj4yXXwwLGtba1tvPj4yXT4+Ml18MCxrW3E+PjJdfDAsa1tuPj4yXXwwKXwwO2tbcD4+Ml09ZTtrW20+PjJdPShrW20+PjJdfDApKzF9a1tqPj4yXT0oa1tqPj4yXXwwKSstMX1pZihrW3A+PjJdfDApe2U9a1ttPj4yXXwwO3E9a1tpPj4yXXwwO2tbcT4+Ml09ZTtxPWtbcD4+Ml18MDtyPXM7cmV0dXJuIHF8MH1pZigoa1ttPj4yXXwwKT09KGtbKGtbaD4+Ml18MCkrND4+Ml18MCkpe2U9a1ttPj4yXXwwO3E9a1tpPj4yXXwwO2tbcT4+Ml09ZTtxPWtbcD4+Ml18MDtyPXM7cmV0dXJuIHF8MH1lPWc7ZT1HbyhrW2Y+PjJdfDAsa1tlPj4yXXwwLGtbZSs0Pj4yXXwwKXwwO2tbcD4+Ml09ZTtlPWtbbT4+Ml18MDtxPWtbaT4+Ml18MDtrW3E+PjJdPWU7cT1rW3A+PjJdfDA7cj1zO3JldHVybiBxfDB9ZnVuY3Rpb24gQW8oYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaT0wLGo9MDtpPXI7cj1yKzMyfDA7Zj1pKzE2fDA7Zz1pO2g9aSsxMnwwO2o9aSs4fDA7a1tmPj4yXT1hO2E9ZztrW2E+PjJdPWI7a1thKzQ+PjJdPWM7a1toPj4yXT1kO2tbaj4+Ml09ZTtEbyhrW2Y+PjJdfDAsKGtbKGtbZj4+Ml18MCkrND4+Ml18MCkrMjB8MCxrW2o+PjJdfDApO2lmKGtba1tqPj4yXT4+Ml18MCl7cj1pO3JldHVybn1qPWc7aj1VbCgoa1trW2Y+PjJdPj4yXXwwKSsoa1soa1tmPj4yXXwwKSs0Pj4yXXwwKXwwLGtbaj4+Ml18MCxrW2orND4+Ml18MCl8MDtlPShrW2Y+PjJdfDApKzR8MDtrW2U+PjJdPShrW2U+PjJdfDApK2o7ZT1rW2g+PjJdfDA7ZT1VbCgoa1trW2Y+PjJdPj4yXXwwKSsoa1soa1tmPj4yXXwwKSs0Pj4yXXwwKXwwLGUsKChlfDApPDApPDwzMT4+MzEpfDA7aj0oa1tmPj4yXXwwKSs0fDA7a1tqPj4yXT0oa1tqPj4yXXwwKStlO3I9aTtyZXR1cm59ZnVuY3Rpb24gQm8oYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxtPTAsbj0wLG89MCxwPTAscT0wO3E9cjtyPXIrNDh8MDtkPXErMzZ8MDttPXErMzJ8MDtuPXErMjh8MDtlPXErMjR8MDtmPXErMjB8MDtvPXErMTZ8MDtwPXErMTJ8MDtoPXErOHwwO2c9cSs0fDA7aj1xO2tbZD4+Ml09YTtrW20+PjJdPWI7a1tuPj4yXT1jO2tbcD4+Ml09a1trW24+PjJdPj4yXTtrW2Y+PjJdPTE1O3doaWxlKDEpe2lmKChrW2Y+PjJdfDApPDApYnJlYWs7a1toPj4yXT0oa1ttPj4yXXwwKSs1Nisoa1tmPj4yXTw8NSk7aWYoKGtbKGtbaD4+Ml18MCkrMjArND4+Ml18MCk+MClicmVhaztVZChrWyhrW2g+PjJdfDApKzIwPj4yXXwwKTtVZChrWyhrW2g+PjJdfDApKzg+PjJdfDApO2tbZj4+Ml09KGtbZj4+Ml18MCkrLTF9aWYoKGtbZj4+Ml18MCk8MCl7cj1xO3JldHVybn1pZighKGtbZj4+Ml18MCkpe2tbZz4+Ml09KGtbbT4+Ml18MCkrNTYrMzIrMjA7RG8oa1tnPj4yXXwwLDExLHApO2lmKCEoa1twPj4yXXwwKSl7aVtrW2tbZz4+Ml0+PjJdPj4wXT0xO2I9KGtbbT4+Ml18MCkrNTZ8MDtiPTErKFVsKChrW2tbZz4+Ml0+PjJdfDApKzF8MCxrW2I+PjJdfDAsa1tiKzQ+PjJdfDApfDApfDA7a1soa1tnPj4yXXwwKSs0Pj4yXT1ifWtbZj4+Ml09MX1rW28+PjJdPShrW20+PjJdfDApKzU2KyhrW2Y+PjJdPDw1KTtrW2U+PjJdPTA7d2hpbGUoMSl7aWYoKGtbZT4+Ml18MCk+PShrW2Y+PjJdfDApKWJyZWFrO2tbaj4+Ml09KGtbbT4+Ml18MCkrNTYrKGtbZT4+Ml08PDUpO2lmKChrW3A+PjJdfDApPT0wPyhrWyhrW2o+PjJdfDApKzIwKzQ+PjJdfDApPjA6MCl7Yj1rW2o+PjJdfDA7Yj1QbChrW2Q+PjJdfDAsa1tiPj4yXXwwLGtbYis0Pj4yXXwwLGtbKGtbaj4+Ml18MCkrMjA+PjJdfDAsa1soa1tqPj4yXXwwKSsyMCs0Pj4yXXwwKXwwO2tbcD4+Ml09Yn1VZChrWyhrW2o+PjJdfDApKzIwPj4yXXwwKTtVZChrWyhrW2o+PjJdfDApKzg+PjJdfDApO2tbZT4+Ml09KGtbZT4+Ml18MCkrMX1pZighKGtbcD4+Ml18MCkpe2o9a1tkPj4yXXwwO2Q9KGtbbT4+Ml18MCkrOHwwO2Q9JFIoa1tkPj4yXXwwLGtbZCs0Pj4yXXwwLDEsMCl8MDtlPShrW20+PjJdfDApKzI0fDA7Zj0oa1ttPj4yXXwwKSs1NnwwO2E9KGtbbT4+Ml18MCkrMzJ8MDtpZighKGxbKGtbbT4+Ml18MCkrNDg+PjBdfDApKXtoPShrW20+PjJdfDApKzQwfDA7Zz1rW2g+PjJdfDA7aD1rW2grND4+Ml18MH1lbHNle2c9MDtoPTB9bT1SbChqLGQsTCxrWyhrW20+PjJdfDApKzE2Pj4yXXwwLGtbZT4+Ml18MCxrW2UrND4+Ml18MCxrW2Y+PjJdfDAsa1tmKzQ+PjJdfDAsa1thPj4yXXwwLGtbYSs0Pj4yXXwwLGcsaCxrWyhrW28+PjJdfDApKzIwPj4yXXwwLGtbKGtbbz4+Ml18MCkrMjArND4+Ml18MCl8MDtrW3A+PjJdPW19VWQoa1soa1tvPj4yXXwwKSsyMD4+Ml18MCk7VWQoa1soa1tvPj4yXXwwKSs4Pj4yXXwwKTtrW2tbbj4+Ml0+PjJdPWtbcD4+Ml07cj1xO3JldHVybn1mdW5jdGlvbiBDbyhhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wO2Y9cjtyPXIrMTZ8MDtnPWYrMTJ8MDtjPWYrOHwwO2Q9Zis0fDA7ZT1mO2tbZz4+Ml09YTtrW2M+PjJdPWI7a1tkPj4yXT0wO2I9emwoa1tnPj4yXXwwLDIzLGQsMCl8MDtrW2U+PjJdPWI7aWYoa1tlPj4yXXwwKXtnPWtbZT4+Ml18MDtyPWY7cmV0dXJuIGd8MH1VZShrW2Q+PjJdfDAsMSwxKXwwO1NlKGtbZD4+Ml18MCwyLGtba1tjPj4yXT4+Ml18MCxrWyhrW2M+PjJdfDApKzQ+PjJdfDAsMCl8MDtEZShrW2Q+PjJdfDApfDA7Zz1nZShrW2Q+PjJdfDApfDA7a1tlPj4yXT1nO2c9a1tlPj4yXXwwO3I9ZjtyZXR1cm4gZ3wwfWZ1bmN0aW9uIERvKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxpPTA7aT1yO3I9ciszMnwwO2Q9aSsxNnwwO2U9aSsxMnwwO2Y9aSs4fDA7aD1pKzR8MDtnPWk7a1tkPj4yXT1hO2tbZT4+Ml09YjtrW2Y+PjJdPWM7aWYoa1trW2Y+PjJdPj4yXXwwKXtyPWk7cmV0dXJufWlmKChrW2U+PjJdfDApPD0oa1soa1tkPj4yXXwwKSs4Pj4yXXwwKSl7cj1pO3JldHVybn1rW2g+PjJdPWtbZT4+Ml07Yz1WZChrW2tbZD4+Ml0+PjJdfDAsa1toPj4yXXwwKXwwO2tbZz4+Ml09YztpZihrW2c+PjJdfDApe2tbKGtbZD4+Ml18MCkrOD4+Ml09a1toPj4yXTtrW2tbZD4+Ml0+PjJdPWtbZz4+Ml07cj1pO3JldHVybn1lbHNle2tba1tmPj4yXT4+Ml09NztyPWk7cmV0dXJufX1mdW5jdGlvbiBFbyhhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGk9MCxqPTA7aT1yO3I9ciszMnwwO2o9aSsyMHwwO2U9aTtmPWkrMTZ8MDtoPWkrMTJ8MDtnPWkrOHwwO2tbaj4+Ml09YTthPWU7a1thPj4yXT1iO2tbYSs0Pj4yXT1jO2tbZj4+Ml09ZDtrW2c+PjJdPTA7YT16bChrW2o+PjJdfDAsMzAsZywwKXwwO2tbaD4+Ml09YTtpZihrW2g+PjJdfDApe2o9a1toPj4yXXwwO3I9aTtyZXR1cm4ganwwfWo9ZTtWZShrW2c+PjJdfDAsMSxrW2o+PjJdfDAsa1tqKzQ+PjJdfDApfDA7VWUoa1tnPj4yXXwwLDIsa1tmPj4yXXwwKXwwO0RlKGtbZz4+Ml18MCl8MDtqPWdlKGtbZz4+Ml18MCl8MDtrW2g+PjJdPWo7aj1rW2g+PjJdfDA7cj1pO3JldHVybiBqfDB9ZnVuY3Rpb24gRm8oYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGk9MCxqPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wO0I9cjtyPXIrMTEyfDA7Zz1CKzEwNHwwO2g9QisyNHwwO2k9QisxMDB8MDtqPUIrOTZ8MDtsPUIrOTJ8MDt5PUIrODh8MDtBPUIrNzZ8MDtvPUIrNjR8MDtwPUIrMTZ8MDtxPUIrOHwwO3M9Qjt4PUIrNjB8MDt6PUIrNTZ8MDtuPUIrNTJ8MDt1PUIrNDh8MDttPUIrNDR8MDt0PUIrNDB8MDt3PUIrMzZ8MDt2PUIrMzJ8MDtrW2c+PjJdPWE7YT1oO2tbYT4+Ml09YjtrW2ErND4+Ml09YztrW2k+PjJdPWQ7a1tqPj4yXT1lO2tbbD4+Ml09ZjtrW3k+PjJdPTA7a1tBPj4yXT0wO2tbQSs0Pj4yXT0wO2tbQSs4Pj4yXT0wO2tbbz4+Ml09MDtrW28rND4+Ml09MDtrW28rOD4+Ml09MDtlPXA7a1tlPj4yXT0wO2tbZSs0Pj4yXT0wO2U9cTtrW2U+PjJdPTA7a1tlKzQ+PjJdPTA7ZT1zO2tbZT4+Ml09MDtrW2UrND4+Ml09MDtrW3g+PjJdPTA7ZT16bChrW2c+PjJdfDAsMzIseCwwKXwwO2tbeT4+Ml09ZTtpZighKGtbeT4+Ml18MCkpe2U9aDtWZShrW3g+PjJdfDAsMSxrW2U+PjJdfDAsa1tlKzQ+PjJdfDApfDA7VWUoa1t4Pj4yXXwwLDIsa1tpPj4yXXwwKXwwO2lmKDEwMD09KERlKGtbeD4+Ml18MCl8MCkpe2E9SmUoa1t4Pj4yXXwwLDQpfDA7a1tuPj4yXT1hO2E9S2Uoa1t4Pj4yXXwwLDQpfDA7a1t1Pj4yXT1hO2E9TmUoa1t4Pj4yXXwwLDEpfDA7ZT1zO2tbZT4+Ml09YTtrW2UrND4+Ml09TDtlPUhvKGtbbj4+Ml18MCxrW3U+PjJdfDAsQSxrW2o+PjJdfDAsa1tsPj4yXXwwLHApfDA7a1t5Pj4yXT1lfWU9Z2Uoa1t4Pj4yXXwwKXwwO2tbej4+Ml09ZTtpZighKGtbeT4+Ml18MCkpa1t5Pj4yXT1rW3o+PjJdfXdoaWxlKDEpe2U9cDtpZighKChrW3k+PjJdfDApPT0wPyhrW2U+PjJdfDApIT0wfChrW2UrND4+Ml18MCkhPTA6MCkpYnJlYWs7a1ttPj4yXT0wO2tbdD4+Ml09MDt4PXA7ej1rW3grND4+Ml18MDtlPXE7a1tlPj4yXT1rW3g+PjJdO2tbZSs0Pj4yXT16O2U9cDtlPXFtKGtbZz4+Ml18MCxrW2U+PjJdfDAsa1tlKzQ+PjJdfDAsbSx0LDApfDA7a1t5Pj4yXT1lO2lmKCEoa1t5Pj4yXXwwKSl7ZT1IbyhrW20+PjJdfDAsa1t0Pj4yXXwwLG8sa1tqPj4yXXwwLGtbbD4+Ml18MCxwKXwwO2tbeT4+Ml09ZX1pZighKGtbeT4+Ml18MCkpe2U9cTtlPVBsKGtbZz4+Ml18MCxrW2U+PjJdfDAsa1tlKzQ+PjJdfDAsa1tvPj4yXXwwLGtbbys0Pj4yXXwwKXwwO2tbeT4+Ml09ZX1VZChrW20+PjJdfDApfWU9cTtpZigoa1t5Pj4yXXwwKT09MCYoKGtbZT4+Ml18MCkhPTB8KGtbZSs0Pj4yXXwwKSE9MCk/KGtbdz4+Ml09MCxlPXpsKGtbZz4+Ml18MCwxNyx3LDApfDAsa1t5Pj4yXT1lLChrW3k+PjJdfDApPT0wKTowKXt6PXM7VmUoa1t3Pj4yXXwwLDEsa1t6Pj4yXXwwLGtbeis0Pj4yXXwwKXwwO3o9a1t3Pj4yXXwwO2U9cTtlPV9SKGtbZT4+Ml18MCxrW2UrND4+Ml18MCwxLDApfDA7VmUoeiwyLGUsTCl8MDtEZShrW3c+PjJdfDApfDA7ZT1nZShrW3c+PjJdfDApfDA7a1t5Pj4yXT1lfWlmKGtbeT4+Ml18MCl7ZT1rW0E+PjJdfDA7VWQoZSk7ZT1rW28+PjJdfDA7VWQoZSk7ZT1rW3k+PjJdfDA7cj1CO3JldHVybiBlfDB9a1t2Pj4yXT0wO2U9emwoa1tnPj4yXXwwLDMzLHYsMCl8MDtrW3k+PjJdPWU7aWYoa1t5Pj4yXXwwKXtlPWtbQT4+Ml18MDtVZChlKTtlPWtbbz4+Ml18MDtVZChlKTtlPWtbeT4+Ml18MDtyPUI7cmV0dXJuIGV8MH1lPXE7VmUoa1t2Pj4yXXwwLDEsa1tlPj4yXXwwLGtbZSs0Pj4yXXwwKXwwO1NlKGtbdj4+Ml18MCwyLGtbQT4+Ml18MCxrW0ErND4+Ml18MCwwKXwwO2U9aDtWZShrW3Y+PjJdfDAsMyxrW2U+PjJdfDAsa1tlKzQ+PjJdfDApfDA7VWUoa1t2Pj4yXXwwLDQsa1tpPj4yXXwwKXwwO0RlKGtbdj4+Ml18MCl8MDtlPWdlKGtbdj4+Ml18MCl8MDtrW3k+PjJdPWU7ZT1rW0E+PjJdfDA7VWQoZSk7ZT1rW28+PjJdfDA7VWQoZSk7ZT1rW3k+PjJdfDA7cj1CO3JldHVybiBlfDB9ZnVuY3Rpb24gR28oYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxzPTA7cz1yO3I9cis0OHwwO2Q9cys0NHwwO2U9cztvPXMrNDB8MDtmPXMrMzZ8MDtsPXMrMzJ8MDtqPXMrMjh8MDtoPXMrMjR8MDttPXMrMjB8MDtuPXMrMTZ8MDtwPXMrMTJ8MDtnPXMrOHwwO2tbZD4+Ml09YTthPWU7a1thPj4yXT1iO2tbYSs0Pj4yXT1jO2tbZj4+Ml09MDtrW2w+PjJdPTA7a1tqPj4yXT0wO2tbbT4+Ml09MDtrW24+PjJdPTA7YT16bChrW2Q+PjJdfDAsMzUsbSwwKXwwO2tbbz4+Ml09YTtpZighKGtbbz4+Ml18MCkpe2E9ZTtWZShrW20+PjJdfDAsMSxrW2E+PjJdfDAsa1thKzQ+PjJdfDApfDA7d2hpbGUoMSl7aWYoMTAwIT0oRGUoa1ttPj4yXXwwKXwwKSlicmVhaztpZigoa1tsPj4yXXwwKT49KGtbaj4+Ml18MCkpe2tbaj4+Ml09KGtbaj4+Ml18MCkrMTY7YT1WZChrW2Y+PjJdfDAsa1tqPj4yXTw8Mil8MDtrW2c+PjJdPWE7aWYoIShrW2c+PjJdfDApKXtxPTY7YnJlYWt9a1tmPj4yXT1rW2c+PjJdfWM9TWUoa1ttPj4yXXwwLDApfDA7YT1rW2w+PjJdfDA7a1tsPj4yXT1hKzE7a1soa1tmPj4yXXwwKSsoYTw8Mik+PjJdPWN9aWYoKHF8MCk9PTYpa1tvPj4yXT03O3E9Z2Uoa1ttPj4yXXwwKXwwO2tbcD4+Ml09cTtpZighKGtbbz4+Ml18MCkpa1tvPj4yXT1rW3A+PjJdfWlmKCEoa1tvPj4yXXwwKSl7cT16bChrW2Q+PjJdfDAsMzEsbiwwKXwwO2tbbz4+Ml09cX1pZighKGtbbz4+Ml18MCkpe3E9ZTtWZShrW24+PjJdfDAsMixrW3E+PjJdfDAsa1txKzQ+PjJdfDApfDB9aVsoa1tkPj4yXXwwKSsyMzI+PjBdPTE7a1toPj4yXT0wO3doaWxlKDEpe2lmKGtbbz4+Ml18MCl7cT0yMTticmVha31pZigoa1toPj4yXXwwKT49KGtbbD4+Ml18MCkpe3E9MjE7YnJlYWt9aWYoKGtbKGtbZj4+Ml18MCkrKGtbaD4+Ml08PDIpPj4yXXwwKSE9KGtbaD4+Ml18MCkpe1VlKGtbbj4+Ml18MCwzLGtbKGtbZj4+Ml18MCkrKGtbaD4+Ml08PDIpPj4yXXwwKXwwO1VlKGtbbj4+Ml18MCwxLGtbaD4+Ml18MCl8MDtEZShrW24+PjJdfDApfDA7cT1nZShrW24+PjJdfDApfDA7a1tvPj4yXT1xfWtbaD4+Ml09KGtbaD4+Ml18MCkrMX1pZigocXwwKT09MjEpe2lbKGtbZD4+Ml18MCkrMjMyPj4wXT0wO1VkKGtbZj4+Ml18MCk7cj1zO3JldHVybiBrW28+PjJdfDB9cmV0dXJuIDB9ZnVuY3Rpb24gSG8oYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxzPTAsdD0wLHU9MCx2PTAsdz0wO3c9cjtyPXIrMTEyfDA7Zz13Kzk2fDA7aD13KzkyfDA7aj13Kzg4fDA7bD13Kzg0fDA7bT13KzgwfDA7bj13Kzc2fDA7bz13KzcyfDA7dD13O3E9dys2MHwwO3M9dys1NnwwO3A9dys1MnwwO3U9dys0OHwwO2tbaD4+Ml09YTtrW2o+PjJdPWI7a1tsPj4yXT1jO2tbbT4+Ml09ZDtrW24+PjJdPWU7a1tvPj4yXT1mO2tbcT4+Ml09MDtrW3ErND4+Ml09MDtrW3ErOD4+Ml09MDtrW3M+PjJdPTA7a1twPj4yXT0oaVtrW2g+PjJdPj4wXXwwKT09MCYxO0RvKGtbbD4+Ml18MCxrW2o+PjJdfDAscyk7aWYoa1tzPj4yXXwwKXtrW2c+PjJdPWtbcz4+Ml07dj1rW2c+PjJdfDA7cj13O3JldHVybiB2fDB9a1soa1tsPj4yXXwwKSs0Pj4yXT0wO2Q9SW8odCxrW2g+PjJdfDAsa1tqPj4yXXwwKXwwO2tbcz4+Ml09ZDt3aGlsZSgxKXtpZighKChrW3M+PjJdfDApPT0wPyhrW3Q+PjJdfDApIT0wOjApKWJyZWFrO2lmKCEoa1soa1tsPj4yXXwwKSs0Pj4yXXwwKSl7ZD1KbyhrW3QrMjQ+PjJdfDAsa1t0KzI0KzQ+PjJdfDAsa1ttPj4yXXwwLGtbbj4+Ml18MCl8MDtrW3U+PjJdPWQ7aWYoKGtbdT4+Ml18MCk+PTA/ISgoa1twPj4yXXwwKT09MCYoa1t1Pj4yXXwwKT09MCk6MCl7Zj10KzE2fDA7S28oa1tsPj4yXXwwLGlba1toPj4yXT4+MF18MCxrW2Y+PjJdfDAsa1tmKzQ+PjJdfDApO2Y9dCsxNnwwO2Q9a1tmKzQ+PjJdfDA7dj1rW28+PjJdfDA7a1t2Pj4yXT1rW2Y+PjJdO2tbdis0Pj4yXT1kO3Y9OX19ZWxzZSB2PTk7aWYoKHZ8MCk9PTk/KHY9MCxkPUxvKGtbbD4+Ml18MCxxLGtbdCsyND4+Ml18MCxrW3QrMjQrND4+Ml18MCxrW3QrMzY+PjJdfDAsa1t0KzQwPj4yXXwwKXwwLGtbcz4+Ml09ZCwoa1tzPj4yXXwwKSE9MCk6MClicmVhaztkPU1vKHQpfDA7a1tzPj4yXT1kfWlmKCEoa1soa1tsPj4yXXwwKSs0Pj4yXXwwKSl7dT10KzE2fDA7S28oa1tsPj4yXXwwLGlba1toPj4yXT4+MF18MCxrW3U+PjJdfDAsa1t1KzQ+PjJdfDApO3U9dCsxNnwwO2Q9a1t1KzQ+PjJdfDA7dj1rW28+PjJdfDA7a1t2Pj4yXT1rW3U+PjJdO2tbdis0Pj4yXT1kfU5vKHQpO1VkKGtbcT4+Ml18MCk7a1tnPj4yXT1rW3M+PjJdO3Y9a1tnPj4yXXwwO3I9dztyZXR1cm4gdnwwfWZ1bmN0aW9uIElvKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wO2c9cjtyPXIrMTZ8MDtmPWcrOHwwO2Q9Zys0fDA7ZT1nO2tbZj4+Ml09YTtrW2Q+PjJdPWI7a1tlPj4yXT1jO2I9a1tmPj4yXXwwO2M9Yis0OHwwO2Rve2tbYj4+Ml09MDtiPWIrNHwwfXdoaWxlKChifDApPChjfDApKTtrW2tbZj4+Ml0+PjJdPWtbZD4+Ml07a1soa1tmPj4yXXwwKSs0Pj4yXT1rW2U+PjJdO2I9a1tmPj4yXXwwO2lmKGlba1trW2Y+PjJdPj4yXT4+MF18MCl7ZT0xKyhpbSgoa1tiPj4yXXwwKSsxfDAsKGtbZj4+Ml18MCkrMTZ8MCl8MCl8MDtrWyhrW2Y+PjJdfDApKzg+PjJdPWU7Zj1rW2Y+PjJdfDA7Zj1NbyhmKXwwO3I9ZztyZXR1cm4gZnwwfWVsc2V7a1tiKzg+PjJdPTE7Zj1rW2Y+PjJdfDA7Zj1NbyhmKXwwO3I9ZztyZXR1cm4gZnwwfXJldHVybiAwfWZ1bmN0aW9uIEpvKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaT0wLGo9MCxsPTA7aD1yO3I9ciszMnwwO2w9aCsyMHwwO2U9aCsxNnwwO2o9aCsxMnwwO2Y9aCs4fDA7aT1oKzR8MDtnPWg7a1tsPj4yXT1hO2tbZT4+Ml09YjtrW2o+PjJdPWM7a1tmPj4yXT1kO2tbaT4+Ml09KGtbZT4+Ml18MCk8KGtbZj4+Ml18MCk/a1tlPj4yXXwwOmtbZj4+Ml18MDtjPW9SKGtbbD4+Ml18MCxrW2o+PjJdfDAsa1tpPj4yXXwwKXwwO2tbZz4+Ml09YztpZihrW2c+PjJdfDApe2w9a1tnPj4yXXwwO3I9aDtyZXR1cm4gbHwwfWtbZz4+Ml09KGtbZT4+Ml18MCktKGtbZj4+Ml18MCk7bD1rW2c+PjJdfDA7cj1oO3JldHVybiBsfDB9ZnVuY3Rpb24gS28oYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MDtnPXI7cj1yKzE2fDA7ZT1nKzEyfDA7aD1nKzh8MDtmPWc7a1tlPj4yXT1hO2tbaD4+Ml09YjthPWY7a1thPj4yXT1jO2tbYSs0Pj4yXT1kO2lba1trW2U+PjJdPj4yXT4+MF09a1toPj4yXTthPWY7Yz1rW2U+PjJdfDA7aWYoKGtbYT4+Ml18MCkhPTB8KGtbYSs0Pj4yXXwwKSE9MCl7aD1mO2g9MSsoVWwoKGtbYz4+Ml18MCkrMXwwLGtbaD4+Ml18MCxrW2grND4+Ml18MCl8MCl8MDtrWyhrW2U+PjJdfDApKzQ+PjJdPWg7cj1nO3JldHVybn1lbHNle2tbYys0Pj4yXT0xO3I9ZztyZXR1cm59fWZ1bmN0aW9uIExvKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxpPTAsaj0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHM9MCx0PTA7dD1yO3I9cis0OHwwO2c9dCs0MHwwO2g9dCszNnwwO2k9dCszMnwwO2o9dCsyOHwwO2w9dCsyNHwwO209dCsyMHwwO249dCsxNnwwO3M9dCsxMnwwO289dCs4fDA7cD10KzR8MDtxPXQ7a1toPj4yXT1hO2tbaT4+Ml09YjtrW2o+PjJdPWM7a1tsPj4yXT1kO2tbbT4+Ml09ZTtrW24+PjJdPWY7a1tzPj4yXT0wO2tbbz4+Ml09KGtbKGtbaT4+Ml18MCkrND4+Ml18MCk9PTAmMTtEbyhrW2k+PjJdfDAsa1tsPj4yXXwwLHMpO2lmKGtbcz4+Ml18MCl7a1tnPj4yXT1rW3M+PjJdO2M9a1tnPj4yXXwwO3I9dDtyZXR1cm4gY3wwfWM9V2woa1trW2k+PjJdPj4yXXwwLGtbKGtbaT4+Ml18MCkrND4+Ml18MCxrW2o+PjJdfDAsa1tsPj4yXXwwKXwwO2tbcD4+Ml09YztrW3E+PjJdPShrW2w+PjJdfDApLShrW3A+PjJdfDApO2JTKGtba1tpPj4yXT4+Ml18MCxrW2o+PjJdfDAsa1tsPj4yXXwwKXwwO2tbKGtbaT4+Ml18MCkrND4+Ml09a1tsPj4yXTtpZighKGtbbz4+Ml18MCkpe3M9a1twPj4yXXwwO3M9VWwoKGtba1toPj4yXT4+Ml18MCkrKGtbKGtbaD4+Ml18MCkrND4+Ml18MCl8MCxzLCgoc3wwKTwwKTw8MzE+PjMxKXwwO2M9KGtbaD4+Ml18MCkrNHwwO2tbYz4+Ml09KGtbYz4+Ml18MCkrc31zPWtbcT4+Ml18MDtzPVVsKChrW2tbaD4+Ml0+PjJdfDApKyhrWyhrW2g+PjJdfDApKzQ+PjJdfDApfDAscywoKHN8MCk8MCk8PDMxPj4zMSl8MDtjPShrW2g+PjJdfDApKzR8MDtrW2M+PjJdPShrW2M+PjJdfDApK3M7YlMoKGtba1toPj4yXT4+Ml18MCkrKGtbKGtbaD4+Ml18MCkrND4+Ml18MCl8MCwoa1tqPj4yXXwwKSsoa1twPj4yXXwwKXwwLGtbcT4+Ml18MCl8MDtjPShrW2g+PjJdfDApKzR8MDtrW2M+PjJdPShrW2M+PjJdfDApKyhrW3E+PjJdfDApO2lmKGtbbT4+Ml18MCl7cz1rW24+PjJdfDA7cz1VbCgoa1trW2g+PjJdPj4yXXwwKSsoa1soa1toPj4yXXwwKSs0Pj4yXXwwKXwwLHMsKChzfDApPDApPDwzMT4+MzEpfDA7Yz0oa1toPj4yXXwwKSs0fDA7a1tjPj4yXT0oa1tjPj4yXXwwKStzO2JTKChrW2tbaD4+Ml0+PjJdfDApKyhrWyhrW2g+PjJdfDApKzQ+PjJdfDApfDAsa1ttPj4yXXwwLGtbbj4+Ml18MCl8MDtjPShrW2g+PjJdfDApKzR8MDtrW2M+PjJdPShrW2M+PjJdfDApKyhrW24+PjJdfDApfWtbZz4+Ml09MDtjPWtbZz4+Ml18MDtyPXQ7cmV0dXJuIGN8MH1mdW5jdGlvbiBNbyhhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wO2c9cjtyPXIrMzJ8MDtlPWcrMTZ8MDtiPWcrMTJ8MDtjPWcrOHwwO2Q9Zys0fDA7Zj1nO2tbZT4+Ml09YTtrW2I+PjJdPShrWyhrW2U+PjJdfDApKzI0KzQ+PjJdfDApPT0wJjE7a1tjPj4yXT0wO2tbZD4+Ml09MDtrW2Y+PjJdPTA7YT0oa1tlPj4yXXwwKSsxNnwwO2lmKCgoa1thPj4yXXwwKSE9MHwoa1thKzQ+PjJdfDApIT0wKSYoa1tiPj4yXXwwKT09MCl7YT0oa1tlPj4yXXwwKSsxNnwwO2g9YTtoPSRSKGtbaD4+Ml18MCxrW2grND4+Ml18MCwxLDApfDA7a1thPj4yXT1oO2tbYSs0Pj4yXT1MfWlmKChrWyhrW2U+PjJdfDApKzg+PjJdfDApPj0oa1soa1tlPj4yXXwwKSs0Pj4yXXwwKSl7a1trW2U+PjJdPj4yXT0wO2g9a1tmPj4yXXwwO3I9ZztyZXR1cm4gaHwwfWlmKCEoa1tiPj4yXXwwKSl7Yj0oa1trW2U+PjJdPj4yXXwwKSsoa1soa1tlPj4yXXwwKSs4Pj4yXXwwKXwwO2lmKChsWyhrW2tbZT4+Ml0+PjJdfDApKyhrWyhrW2U+PjJdfDApKzg+PjJdfDApPj4wXXwwKSYxMjgpYj1qbShiLGMpfDA7ZWxzZXtrW2M+PjJdPWxbYj4+MF07Yj0xfWg9KGtbZT4+Ml18MCkrOHwwO2tbaD4+Ml09KGtbaD4+Ml18MCkrYn1iPShrW2tbZT4+Ml0+PjJdfDApKyhrWyhrW2U+PjJdfDApKzg+PjJdfDApfDA7aWYoKGxbKGtba1tlPj4yXT4+Ml18MCkrKGtbKGtbZT4+Ml18MCkrOD4+Ml18MCk+PjBdfDApJjEyOCliPWptKGIsZCl8MDtlbHNle2tbZD4+Ml09bFtiPj4wXTtiPTF9aD0oa1tlPj4yXXwwKSs4fDA7a1toPj4yXT0oa1toPj4yXXwwKStiO0RvKChrW2U+PjJdfDApKzI0fDAsKGtbYz4+Ml18MCkrKGtbZD4+Ml18MCl8MCxmKTtpZihrW2Y+PjJdfDApe2g9a1tmPj4yXXwwO3I9ZztyZXR1cm4gaHwwfWJTKChrWyhrW2U+PjJdfDApKzI0Pj4yXXwwKSsoa1tjPj4yXXwwKXwwLChrW2tbZT4+Ml0+PjJdfDApKyhrWyhrW2U+PjJdfDApKzg+PjJdfDApfDAsa1tkPj4yXXwwKXwwO2tbKGtbZT4+Ml18MCkrMjQrND4+Ml09KGtbYz4+Ml18MCkrKGtbZD4+Ml18MCk7aD0oa1tlPj4yXXwwKSs4fDA7a1toPj4yXT0oa1toPj4yXXwwKSsoa1tkPj4yXXwwKTtoPShrW2U+PjJdfDApKzE2fDA7aWYoISgoa1toPj4yXXwwKT09MCYoa1toKzQ+PjJdfDApPT0wKSl7aD1rW2Y+PjJdfDA7cj1nO3JldHVybiBofDB9Yj0oa1trW2U+PjJdPj4yXXwwKSsoa1soa1tlPj4yXXwwKSs4Pj4yXXwwKXwwO2lmKChsWyhrW2tbZT4+Ml0+PjJdfDApKyhrWyhrW2U+PjJdfDApKzg+PjJdfDApPj4wXXwwKSYxMjgpYj1qbShiLChrW2U+PjJdfDApKzQwfDApfDA7ZWxzZXtrWyhrW2U+PjJdfDApKzQwPj4yXT1sW2I+PjBdO2I9MX1oPShrW2U+PjJdfDApKzh8MDtrW2g+PjJdPShrW2g+PjJdfDApK2I7a1soa1tlPj4yXXwwKSszNj4+Ml09KGtba1tlPj4yXT4+Ml18MCkrKGtbKGtbZT4+Ml18MCkrOD4+Ml18MCk7aD0oa1tlPj4yXXwwKSs4fDA7a1toPj4yXT0oa1toPj4yXXwwKSsoa1soa1tlPj4yXXwwKSs0MD4+Ml18MCk7aD1rW2Y+PjJdfDA7cj1nO3JldHVybiBofDB9ZnVuY3Rpb24gTm8oYSl7YT1hfDA7dmFyIGI9MCxjPTA7Yj1yO3I9cisxNnwwO2M9YjtrW2M+PjJdPWE7VWQoa1soa1tjPj4yXXwwKSsyND4+Ml18MCk7cj1iO3JldHVybn1mdW5jdGlvbiBPbyhhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxzPTAsdD0wLHU9MCx2PTA7dj1yO3I9cis2NHwwO3Q9dis2MHwwO2U9dis1NnwwO2Y9dis1MnwwO2c9dis0OHwwO2g9dis0NHwwO209dis4fDA7aj12KzQwfDA7bD12O3M9diszNnwwO3U9diszMnwwO249disyOHwwO3A9disyNHwwO289disyMHwwO3E9disxNnwwO2tbZT4+Ml09YTtrW2Y+PjJdPWI7a1tnPj4yXT1jO2tbaD4+Ml09ZDthPShrW2Y+PjJdfDApKzU2fDA7Yj1rW2ErND4+Ml18MDtjPW07a1tjPj4yXT1rW2E+PjJdO2tbYys0Pj4yXT1iO2tbaj4+Ml09MTt3aGlsZSgxKXtpZigoa1tqPj4yXXwwKT49MTYpe2U9MTY7YnJlYWt9Yz1sO2tbYz4+Ml09MDtrW2MrND4+Ml09MDtrW3M+PjJdPShrW2Y+PjJdfDApKzU2KyhrW2o+PjJdPDw1KTtrW3U+PjJdPTA7Yz1XbChrWyhrW3M+PjJdfDApKzg+PjJdfDAsa1soa1tzPj4yXXwwKSs4KzQ+PjJdfDAsa1tnPj4yXXwwLGtbaD4+Ml18MCl8MDtrW24+PjJdPWM7a1twPj4yXT0oa1toPj4yXXwwKS0oa1tuPj4yXXwwKTtjPWtbbj4+Ml18MDtjPVRsKGMsKChjfDApPDApPDwzMT4+MzEpfDA7a1tvPj4yXT1jO2M9a1twPj4yXXwwO2M9VGwoYywoKGN8MCk8MCk8PDMxPj4zMSl8MDtrW28+PjJdPShrW28+PjJdfDApKyhjKyhrW3A+PjJdfDApKTtpZigoa1soa1tzPj4yXXwwKSs4KzQ+PjJdfDApIT0wPygoa1soa1tzPj4yXXwwKSsyMCs0Pj4yXXwwKSsoa1tvPj4yXXwwKXwwKT4oa1soa1tlPj4yXXwwKSsyMjQ+PjJdfDApOjApe2I9a1tzPj4yXXwwO2I9UGwoa1tlPj4yXXwwLGtbYj4+Ml18MCxrW2IrND4+Ml18MCxrWyhrW3M+PjJdfDApKzIwPj4yXXwwLGtbKGtbcz4+Ml18MCkrMjArND4+Ml18MCl8MDtrW3U+PjJdPWI7aVtrWyhrW3M+PjJdfDApKzIwPj4yXT4+MF09a1tqPj4yXTtiPShrWyhrW3M+PjJdfDApKzIwPj4yXXwwKSsxfDA7YT1tO2E9JFIoa1thPj4yXXwwLGtbYSs0Pj4yXXwwLDEsMCl8MDthPTErKFVsKGIsYSxMKXwwKXwwO2tbKGtbcz4+Ml18MCkrMjArND4+Ml09YTthPWtbcz4+Ml18MDtiPWtbYSs0Pj4yXXwwO2M9bDtrW2M+PjJdPWtbYT4+Ml07a1tjKzQ+PjJdPWI7Yz1rW3M+PjJdfDA7Yj1jO2I9JFIoa1tiPj4yXXwwLGtbYis0Pj4yXXwwLDEsMCl8MDtrW2M+PjJdPWI7a1tjKzQ+PjJdPUw7a1soa1tzPj4yXXwwKSs4KzQ+PjJdPTB9ZWxzZXtrW3E+PjJdPShrW3M+PjJdfDApKzIwO2lmKChrWyhrW3E+PjJdfDApKzQ+PjJdfDApPT0wPyhEbyhrW3E+PjJdfDAsa1soa1tlPj4yXXwwKSsyMjQ+PjJdfDAsdSksKGtbdT4+Ml18MCk9PTApOjApe2lba1trW3E+PjJdPj4yXT4+MF09a1tqPj4yXTtjPW07Yz0xKyhVbCgoa1trW3E+PjJdPj4yXXwwKSsxfDAsa1tjPj4yXXwwLGtbYys0Pj4yXXwwKXwwKXwwO2tbKGtbcT4+Ml18MCkrND4+Ml09Y31EbyhrW3E+PjJdfDAsKGtbKGtbcT4+Ml18MCkrND4+Ml18MCkrKGtbbz4+Ml18MCl8MCx1KTtEbygoa1tzPj4yXXwwKSs4fDAsa1toPj4yXXwwLHUpO2lmKCEoa1t1Pj4yXXwwKSl7aWYoa1soa1tzPj4yXXwwKSs4KzQ+PjJdfDApe2I9a1tuPj4yXXwwO2I9VWwoKGtba1txPj4yXT4+Ml18MCkrKGtbKGtbcT4+Ml18MCkrND4+Ml18MCl8MCxiLCgoYnwwKTwwKTw8MzE+PjMxKXwwO2M9KGtbcT4+Ml18MCkrNHwwO2tbYz4+Ml09KGtbYz4+Ml18MCkrYn1iPWtbcD4+Ml18MDtiPVVsKChrW2tbcT4+Ml0+PjJdfDApKyhrWyhrW3E+PjJdfDApKzQ+PjJdfDApfDAsYiwoKGJ8MCk8MCk8PDMxPj4zMSl8MDtjPShrW3E+PjJdfDApKzR8MDtrW2M+PjJdPShrW2M+PjJdfDApK2I7YlMoKGtba1txPj4yXT4+Ml18MCkrKGtbKGtbcT4+Ml18MCkrND4+Ml18MCl8MCwoa1tnPj4yXXwwKSsoa1tuPj4yXXwwKXwwLGtbcD4+Ml18MCl8MDtjPShrW3E+PjJdfDApKzR8MDtrW2M+PjJdPShrW2M+PjJdfDApKyhrW3A+PjJdfDApO2JTKGtbKGtbcz4+Ml18MCkrOD4+Ml18MCxrW2c+PjJdfDAsa1toPj4yXXwwKXwwO2tbKGtbcz4+Ml18MCkrOCs0Pj4yXT1rW2g+PjJdfX1jPWw7aWYoKGtbdT4+Ml18MCkhPTB8KGtbYz4+Ml18MCk9PTAmKGtbYys0Pj4yXXwwKT09MCl7ZT0xNDticmVha31hPWw7Yj1rW2ErND4+Ml18MDtjPW07a1tjPj4yXT1rW2E+PjJdO2tbYys0Pj4yXT1iO2tbaj4+Ml09KGtbaj4+Ml18MCkrMX1pZigoZXwwKT09MTQpe2tbdD4+Ml09a1t1Pj4yXTt1PWtbdD4+Ml18MDtyPXY7cmV0dXJuIHV8MH1lbHNlIGlmKChlfDApPT0xNil7a1t0Pj4yXT0wO3U9a1t0Pj4yXXwwO3I9djtyZXR1cm4gdXwwfXJldHVybiAwfWZ1bmN0aW9uIFBvKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaT0wLGo9MCxsPTA7aj1yO3I9ciszMnwwO2w9aisyNHwwO2U9ajtmPWorMjB8MDtnPWorMTZ8MDtoPWorMTJ8MDtpPWorOHwwO2tbbD4+Ml09YTthPWU7a1thPj4yXT1iO2tbYSs0Pj4yXT1jO2tbZj4+Ml09ZDtrW2c+PjJdPTA7a1toPj4yXT0wO2Q9emwoa1tsPj4yXXwwLDM0LGgsMCl8MDtrW2k+PjJdPWQ7aWYoa1tpPj4yXXwwKXtkPWtbZz4+Ml18MDtsPWtbZj4+Ml18MDtrW2w+PjJdPWQ7bD1rW2k+PjJdfDA7cj1qO3JldHVybiBsfDB9bD1lO1ZlKGtbaD4+Ml18MCwxLGtbbD4+Ml18MCxrW2wrND4+Ml18MCl8MDtpZigxMDA9PShEZShrW2g+PjJdfDApfDApKWtbZz4+Ml09MTtkPWdlKGtbaD4+Ml18MCl8MDtrW2k+PjJdPWQ7ZD1rW2c+PjJdfDA7bD1rW2Y+PjJdfDA7a1tsPj4yXT1kO2w9a1tpPj4yXXwwO3I9ajtyZXR1cm4gbHwwfWZ1bmN0aW9uIFFvKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHM9MCx0PTAsdT0wO3Q9cjtyPXIrNjR8MDt1PXQrNDh8MDtlPXQrNDR8MDtmPXQrNDB8MDtnPXQrMzZ8MDtwPXQrMzJ8MDtzPXQrMjh8MDtuPXQrMjR8MDtqPXQrMjB8MDtoPXQrMTZ8MDtvPXQrMTJ8MDtsPXQrOHwwO3E9dCs0fDA7bT10O2tbdT4+Ml09YTtrW2U+PjJdPWI7a1tmPj4yXT1jO2tbZz4+Ml09ZDtrW3A+PjJdPWtbdT4+Ml07a1tzPj4yXT0wO2tbbj4+Ml09MDtrW2o+PjJdPTA7a1toPj4yXT0wO2tbbz4+Ml09MDtrW2w+PjJdPTA7aWYoKChrW2U+PjJdfDApPjE/KG9lKGtba1tmPj4yXT4+Ml18MCl8MCk9PTU6MCk/KG9lKGtbKGtbZj4+Ml18MCkrKChrWyhrW3A+PjJdfDApKzI0Pj4yXXwwKSsyPDwyKT4+Ml18MCl8MCkhPTU6MCl7dT1SbyhrW3A+PjJdfDAsa1soa1tmPj4yXXwwKSsoKGtbKGtbcD4+Ml18MCkrMjQ+PjJdfDApKzI8PDIpPj4yXXwwKXwwO2tbcz4+Ml09dTt1PWtbaD4+Ml18MDtVZCh1KTt1PWtbcD4+Ml18MDtJbSh1KTt1PWtbcz4+Ml18MDtyPXQ7cmV0dXJuIHV8MH1pZigoa1tlPj4yXXwwKT4xPyhtZShrWyhrW2Y+PjJdfDApKygyKyhrWyhrW3A+PjJdfDApKzI0Pj4yXXwwKSsyPDwyKT4+Ml18MCl8MCk8MDowKXtrW3M+PjJdPTE5O3U9a1toPj4yXXwwO1VkKHUpO3U9a1twPj4yXXwwO0ltKHUpO3U9a1tzPj4yXXwwO3I9dDtyZXR1cm4gdXwwfXU9U2QoKGtbKGtbcD4+Ml18MCkrMjQ+PjJdfDApKzE8PDI8PDEpfDA7a1toPj4yXT11O2lmKCEoa1toPj4yXXwwKSl7a1tzPj4yXT03O3U9a1toPj4yXXwwO1VkKHUpO3U9a1twPj4yXXwwO0ltKHUpO3U9a1tzPj4yXXwwO3I9dDtyZXR1cm4gdXwwfWtbaj4+Ml09KGtbaD4+Ml18MCkrKChrWyhrW3A+PjJdfDApKzI0Pj4yXXwwKSsxPDwyKTtkUyhrW2g+PjJdfDAsMCwoa1soa1twPj4yXXwwKSsyND4+Ml18MCkrMTw8Mjw8MXwwKXwwO3U9U28oa1twPj4yXXwwKXwwO2tbcz4+Ml09dTtpZihrW3M+PjJdfDApe3U9a1toPj4yXXwwO1VkKHUpO3U9a1twPj4yXXwwO0ltKHUpO3U9a1tzPj4yXXwwO3I9dDtyZXR1cm4gdXwwfWRvIGlmKChrW2U+PjJdfDApPjE/KGtbKGtbcD4+Ml18MCkrNDA+PjJdfDApPT0wOjApe2tbcT4+Ml09a1soa1tmPj4yXXwwKSsoMysoa1soa1twPj4yXXwwKSsyND4+Ml18MCk8PDIpPj4yXTtpZigob2Uoa1txPj4yXXwwKXwwKT09NSlrW3E+PjJdPWtbKGtbZj4+Ml18MCkrND4+Ml07aWYoKG9lKGtbcT4+Ml18MCl8MCkhPTUpe2lmKChvZShrW2tbZj4+Ml0+PjJdfDApfDApIT01PyhkPW5lKGtba1tmPj4yXT4+Ml18MCl8MCx1PUwsYT1uZShrW3E+PjJdfDApfDAsISgoZHwwKSE9KGF8MCl8KHV8MCkhPShMfDApKSk6MClicmVhazt1PShyZihrWyhrW3A+PjJdfDApKzEyPj4yXXwwKXwwKT09NTtjPWtbcD4+Ml18MDtpZih1KXt1PVRvKGMsa1txPj4yXXwwLG8sa1toPj4yXXwwKXwwO2tbcz4+Ml09dTticmVha31lbHNle3U9VW8oYyxrW2Y+PjJdfDAsa1tnPj4yXXwwKXwwO2tbcz4+Ml09dTtrW2w+PjJdPTE7YnJlYWt9fX13aGlsZSgwKTtpZihrW3M+PjJdfDApe3U9a1toPj4yXXwwO1VkKHUpO3U9a1twPj4yXXwwO0ltKHUpO3U9a1tzPj4yXXwwO3I9dDtyZXR1cm4gdXwwfWlmKChvZShrW2tbZj4+Ml0+PjJdfDApfDApIT01KXt1PVRvKGtbcD4+Ml18MCxrW2tbZj4+Ml0+PjJdfDAsbyxrW2g+PjJdfDApfDA7a1tzPj4yXT11O2tbbj4+Ml09MX1pZigoa1tlPj4yXXwwKT4xJihrW3M+PjJdfDApPT0wKXt1PW1lKGtbKGtbZj4+Ml18MCkrKDIrKGtbKGtbcD4+Ml18MCkrMjQ+PjJdfDApKzI8PDIpPj4yXXwwKXwwO2tbbT4+Ml09dTtpZigoKGtbbD4+Ml18MCk9PTA/KHU9VW8oa1twPj4yXXwwLGtbZj4+Ml18MCxrW2c+PjJdfDApfDAsa1tzPj4yXT11LChrW3M+PjJdfDApPT0xOSk6MCk/KGtbKGtbcD4+Ml18MCkrNDA+PjJdfDApPT0wOjApa1tzPj4yXT0yNjc7ZG8gaWYoIShrW3M+PjJdfDApKXtpZigoa1tuPj4yXXwwKSE9MD8ocT1rW2c+PjJdfDAsdT0oa1twPj4yXXwwKSsyNjR8MCwhKChrW3E+PjJdfDApIT0oa1t1Pj4yXXwwKT8xOihrW3ErND4+Ml18MCkhPShrW3UrND4+Ml18MCkpKTowKWJyZWFrO3U9a1tnPj4yXXwwO3U9Vm8oa1twPj4yXXwwLDAsa1ttPj4yXXwwLGtbdT4+Ml18MCxrW3UrND4+Ml18MCl8MDtrW3M+PjJdPXV9d2hpbGUoMCk7aWYoIShrW3M+PjJdfDApKXt1PVdvKGtbcD4+Ml18MCxrW20+PjJdfDAsa1tmPj4yXXwwLGtbaj4+Ml18MCl8MDtrW3M+PjJdPXV9aWYoaVsoa1twPj4yXXwwKSsyMzA+PjBdfDApWG8ocyxrW3A+PjJdfDAsa1tqPj4yXXwwKTtrW28+PjJdPShrW28+PjJdfDApKzF9aWYoIShpWyhrW3A+PjJdfDApKzIyOD4+MF18MCkpe3U9a1toPj4yXXwwO1VkKHUpO3U9a1twPj4yXXwwO0ltKHUpO3U9a1tzPj4yXXwwO3I9dDtyZXR1cm4gdXwwfVlvKHMsa1twPj4yXXwwLGtbaj4+Ml18MCxrW2g+PjJdfDAsa1tvPj4yXXwwKTt1PWtbaD4+Ml18MDtVZCh1KTt1PWtbcD4+Ml18MDtJbSh1KTt1PWtbcz4+Ml18MDtyPXQ7cmV0dXJuIHV8MH1mdW5jdGlvbiBSbyhhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wLGg9MCxpPTAsaj0wO2k9cjtyPXIrMzJ8MDtjPWkrMjB8MDtkPWkrMTZ8MDtqPWkrMTJ8MDtmPWkrOHwwO2c9aSs0fDA7ZT1pO2tbZD4+Ml09YTtrW2o+PjJdPWI7Yj1qZShrW2o+PjJdfDApfDA7a1tnPj4yXT1iO2I9a2Uoa1tqPj4yXXwwKXwwO2tbZT4+Ml09YjtpZighKGtbZz4+Ml18MCkpe2tbYz4+Ml09NztqPWtbYz4+Ml18MDtyPWk7cmV0dXJuIGp8MH1pZigoa1tlPj4yXXwwKT09OD8wPT0oSmQoa1tnPj4yXXwwLDIwNTEyLDgpfDApOjApe2o9Ym8oa1tkPj4yXXwwLDApfDA7a1tmPj4yXT1qfWVsc2UgaD02O2RvIGlmKChofDApPT02KXtpZigoa1tlPj4yXXwwKT09Nz8wPT0oSmQoa1tnPj4yXXwwLDIzNDk1LDcpfDApOjApe2o9Z3Aoa1tkPj4yXXwwKXwwO2tbZj4+Ml09ajticmVha31pZigoa1tlPj4yXXwwKT09MTU/MD09KEpkKGtbZz4+Ml18MCwyMzUwMywxNSl8MCk6MCl7aj1ocChrW2Q+PjJdfDApfDA7a1tmPj4yXT1qO2JyZWFrfWlmKChrW2U+PjJdfDApPjY/MD09KEpkKGtbZz4+Ml18MCwyMzUxOSw2KXwwKTowKXtqPWlwKGtbZD4+Ml18MCwoa1tnPj4yXXwwKSs2fDApfDA7a1tmPj4yXT1qO2JyZWFrfWlmKChrW2U+PjJdfDApPjEwPzA9PShKZChrW2c+PjJdfDAsMjM1MjYsMTApfDApOjApe2o9anAoa1tkPj4yXXwwLChrW2c+PjJdfDApKzEwfDApfDA7a1tmPj4yXT1qO2JyZWFrfWtbZj4+Ml09MX13aGlsZSgwKTtrW2M+PjJdPWtbZj4+Ml07aj1rW2M+PjJdfDA7cj1pO3JldHVybiBqfDB9ZnVuY3Rpb24gU28oYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wLGU9MDtlPXI7cj1yKzE2fDA7Yj1lKzh8MDtkPWUrNHwwO2M9ZTtrW2I+PjJdPWE7a1tkPj4yXT0wO2lmKChrWyhrW2I+PjJdfDApKzI2MD4+Ml18MCk9PTA/KGE9emwoa1tiPj4yXXwwLDE2LGMsMCl8MCxrW2Q+PjJdPWEsKGtbZD4+Ml18MCk9PTApOjApe1dlKGtbYz4+Ml18MCwxKXwwO0RlKGtbYz4+Ml18MCl8MDtjPWdlKGtbYz4+Ml18MCl8MDtrW2Q+PjJdPWN9cj1lO3JldHVybiBrW2Q+PjJdfDB9ZnVuY3Rpb24gVG8oYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTAsbD0wLG09MCxuPTA7bT1yO3I9ciszMnwwO2U9bSsyNHwwO2Y9bSsyMHwwO2c9bSsxNnwwO2g9bSsxMnwwO2w9bSs4fDA7bj1tKzR8MDtqPW07a1tlPj4yXT1hO2tbZj4+Ml09YjtrW2c+PjJdPWM7a1toPj4yXT1kO2tbbD4+Ml09MDtrW24+PjJdPTA7YnAobCxrW2U+PjJdfDAsa1tmPj4yXXwwLGtbaD4+Ml18MCxuKTtpZighKChrW24+PjJdfDApIT0wJihrW2w+PjJdfDApPT0wKSl7bj1rW2w+PjJdfDA7cj1tO3JldHVybiBufDB9a1tqPj4yXT0wO249Y3Aoa1tlPj4yXXwwLGtbZj4+Ml18MCxqKXwwO2tbbD4+Ml09bjtpZihrW2w+PjJdfDApe249a1tsPj4yXXwwO3I9bTtyZXR1cm4gbnwwfWlmKGtbaj4+Ml18MCl7bj1kcChrW2U+PjJdfDAsMSl8MDtrW2w+PjJdPW47a1trW2c+PjJdPj4yXT0wO2RTKGtbaD4+Ml18MCwwLChrWyhrW2U+PjJdfDApKzI0Pj4yXXwwKSsxPDwyPDwxfDApfDA7bj1rW2w+PjJdfDA7cj1tO3JldHVybiBufDB9a1trW2c+PjJdPj4yXT0oa1trW2c+PjJdPj4yXXwwKS0xO2lmKCEoa1soa1tlPj4yXXwwKSs0MD4+Ml18MCkpZXAobCxrW2U+PjJdfDAsMCxmKTtpZighKGlbKGtbZT4+Ml18MCkrMjMwPj4wXXwwKSl7bj1rW2w+PjJdfDA7cj1tO3JldHVybiBufDB9ZXAobCxrW2U+PjJdfDAsMTksZik7bj1rW2w+PjJdfDA7cj1tO3JldHVybiBufDB9ZnVuY3Rpb24gVW8oYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGk9MCxqPTAsbD0wO2w9cjtyPXIrMzJ8MDtkPWwrMjR8MDtlPWwrMjB8MDtmPWwrMTZ8MDtnPWwrMTJ8MDtqPWwrOHwwO2g9bCs0fDA7aT1sO2tbZT4+Ml09YTtrW2Y+PjJdPWI7a1tnPj4yXT1jO2I9a1tlPj4yXXwwO2lmKGtbKGtbZT4+Ml18MCkrNDA+PjJdfDApe2tbaT4+Ml09a1soa1tmPj4yXXwwKSsoKGtbYisyND4+Ml18MCkrMzw8Mik+PjJdO2lmKChvZShrW2k+PjJdfDApfDApPT01KWtbaT4+Ml09a1soa1tmPj4yXXwwKSs0Pj4yXTtpZigob2Uoa1tpPj4yXXwwKXwwKSE9MSl7a1tkPj4yXT0xOTtqPWtbZD4+Ml18MDtyPWw7cmV0dXJuIGp8MH1lbHNle2k9bmUoa1tpPj4yXXwwKXwwO2o9a1tnPj4yXXwwO2tbaj4+Ml09aTtrW2orND4+Ml09TDtrW2Q+PjJdPTA7aj1rW2Q+PjJdfDA7cj1sO3JldHVybiBqfDB9fWk9emwoYiwxOCxoLChrW2Y+PjJdfDApKzR8MCl8MDtrW2o+PjJdPWk7aWYoKGtbaj4+Ml18MCk9PTA/KGtbKGtbZT4+Ml18MCkrNDQ+PjJdfDApIT0wOjApe2M9a1toPj4yXXwwO2k9KGtbKGtbZT4+Ml18MCkrMjQ+PjJdfDApKzJ8MDtpPVVlKGMsaSxtZShrWyhrW2Y+PjJdfDApKygoa1soa1tlPj4yXXwwKSsyND4+Ml18MCkrNDw8Mik+PjJdfDApfDApfDA7a1tqPj4yXT1pfWlmKGtbaj4+Ml18MCl7a1tkPj4yXT1rW2o+PjJdO2o9a1tkPj4yXXwwO3I9bDtyZXR1cm4ganwwfWlmKDUhPShvZShrWyhrW2Y+PjJdfDApKygzKyhrWyhrW2U+PjJdfDApKzI0Pj4yXXwwKTw8Mik+PjJdfDApfDApKXtpZig1PT0ob2Uoa1trW2Y+PjJdPj4yXXwwKXwwKT81IT0ob2Uoa1soa1tmPj4yXXwwKSs0Pj4yXXwwKXwwKTowKXtrW2Q+PjJdPTE7aj1rW2Q+PjJdfDA7cj1sO3JldHVybiBqfDB9aT1ZZShrW2g+PjJdfDAsMSxrWyhrW2Y+PjJdfDApKygzKyhrWyhrW2U+PjJdfDApKzI0Pj4yXXwwKTw8Mik+PjJdfDApfDA7a1tqPj4yXT1pO2lmKGtbaj4+Ml18MCl7a1tkPj4yXT1rW2o+PjJdO2o9a1tkPj4yXXwwO3I9bDtyZXR1cm4ganwwfX1EZShrW2g+PjJdfDApfDA7aD1nZShrW2g+PjJdfDApfDA7a1tqPj4yXT1oO2g9emYoa1soa1tlPj4yXXwwKSsxMj4+Ml18MCl8MDtpPWtbZz4+Ml18MDtrW2k+PjJdPWg7a1tpKzQ+PjJdPUw7a1tkPj4yXT1rW2o+PjJdO2o9a1tkPj4yXXwwO3I9bDtyZXR1cm4ganwwfWZ1bmN0aW9uIFZvKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGk9MCxqPTAsbD0wLG09MCxuPTA7bj1yO3I9ciszMnwwO2Y9bisyNHwwO2c9bisyMHwwO2g9bisxNnwwO2k9bisxMnwwO2o9bjtsPW4rOHwwO2tbZz4+Ml09YTtrW2g+PjJdPWI7a1tpPj4yXT1jO2M9ajtrW2M+PjJdPWQ7a1tjKzQ+PjJdPWU7Yz1qO2U9a1tjKzQ+PjJdfDA7YT0oa1tnPj4yXXwwKSsyNjR8MDtiPWtbYSs0Pj4yXXwwO2RvIGlmKCEoKGV8MCk8KGJ8MCl8KChlfDApPT0oYnwwKT8oa1tjPj4yXXwwKT4+PjA8KGtbYT4+Ml18MCk+Pj4wOjApKSl7Yz1qO2E9KGtbZz4+Ml18MCkrMjY0fDA7aWYoKChrW2M+PjJdfDApPT0oa1thPj4yXXwwKT8oa1tjKzQ+PjJdfDApPT0oa1thKzQ+PjJdfDApOjApPyhrWyhrW2c+PjJdfDApKzI3Nj4+Ml18MCk9PTA6MCl7bT02O2JyZWFrfWlmKCEoKGtbKGtbZz4+Ml18MCkrMjcyPj4yXXwwKT09KGtbaT4+Ml18MCk/KGtbKGtbZz4+Ml18MCkrMjYwPj4yXXwwKTw9KGtbKGtbZz4+Ml18MCkrMjU2Pj4yXXwwKTowKSltPTZ9ZWxzZSBtPTY7d2hpbGUoMCk7aWYoKG18MCk9PTY/KG09d2woa1tnPj4yXXwwKXwwLGtbbD4+Ml09bSwoa1tsPj4yXXwwKSE9MCk6MCl7a1tmPj4yXT1rW2w+PjJdO209a1tmPj4yXXwwO3I9bjtyZXR1cm4gbXwwfWE9ajtsPWtbYSs0Pj4yXXwwO209KGtbZz4+Ml18MCkrMjY0fDA7a1ttPj4yXT1rW2E+PjJdO2tbbSs0Pj4yXT1sO2tbKGtbZz4+Ml18MCkrMjcyPj4yXT1rW2k+PjJdO2tbKGtbZz4+Ml18MCkrMjc2Pj4yXT1rW2g+PjJdO2tbZj4+Ml09MDttPWtbZj4+Ml18MDtyPW47cmV0dXJuIG18MH1mdW5jdGlvbiBXbyhhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGk9MCxqPTAsbT0wLG49MCxvPTAscD0wO3A9cjtyPXIrNDh8MDtuPXArMzJ8MDtlPXArMjh8MDtmPXArMjR8MDtnPXArMjB8MDtoPXArMTZ8MDtpPXArMTJ8MDtqPXArOHwwO209cCs0fDA7bz1wO2tbZT4+Ml09YTtrW2Y+PjJdPWI7a1tnPj4yXT1jO2tbaD4+Ml09ZDtrW2k+PjJdPTI7d2hpbGUoMSl7aWYoKGtbaT4+Ml18MCk+PSgoa1soa1tlPj4yXXwwKSsyND4+Ml18MCkrMnwwKSl7ZT04O2JyZWFrfWtbaj4+Ml09KGtbaT4+Ml18MCktMjtpZighKGxbKGtbKGtbZT4+Ml18MCkrMzI+PjJdfDApKyhrW2o+PjJdfDApPj4wXXwwKSl7YT1qZShrWyhrW2c+PjJdfDApKyhrW2k+PjJdPDwyKT4+Ml18MCl8MDtrW20+PjJdPWE7YT0kbyhrW2U+PjJdfDAsa1tmPj4yXXwwLGtbbT4+Ml18MCxrW2o+PjJdfDAsKGtbaD4+Ml18MCkrKGtbaj4+Ml08PDIpfDApfDA7a1tvPj4yXT1hO2lmKGtbbz4+Ml18MCl7ZT01O2JyZWFrfWI9a2Uoa1soa1tnPj4yXXwwKSsoa1tpPj4yXTw8Mik+PjJdfDApfDA7YT0oa1toPj4yXXwwKSsoa1soa1tlPj4yXXwwKSsyND4+Ml08PDIpfDA7a1thPj4yXT0oa1thPj4yXXwwKStifWtbaT4+Ml09KGtbaT4+Ml18MCkrMX1pZigoZXwwKT09NSl7a1tuPj4yXT1rW28+PjJdO289a1tuPj4yXXwwO3I9cDtyZXR1cm4gb3wwfWVsc2UgaWYoKGV8MCk9PTgpe2tbbj4+Ml09MDtvPWtbbj4+Ml18MDtyPXA7cmV0dXJuIG98MH1yZXR1cm4gMH1mdW5jdGlvbiBYbyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaT0wLGo9MCxsPTA7bD1yO3I9ciszMnwwO2Q9bCsyNHwwO2U9bCsyMHwwO2Y9bCsxNnwwO2g9bCsxMnwwO2c9bCs4fDA7aT1sKzR8MDtqPWw7a1tkPj4yXT1hO2tbZT4+Ml09YjtrW2Y+PjJdPWM7aWYoa1trW2Q+PjJdPj4yXXwwKXtyPWw7cmV0dXJufWE9U2QoKGtbKGtbZT4+Ml18MCkrMjQ+PjJdfDApKjEwfDApfDA7a1toPj4yXT1hO2lmKCEoa1toPj4yXXwwKSl7a1trW2Q+PjJdPj4yXT03O3I9bDtyZXR1cm59X28oa1soa1tlPj4yXXwwKSsyND4+Ml18MCxrW2Y+PjJdfDAsa1toPj4yXXwwLGcpO2E9emwoa1tlPj4yXXwwLDIwLGksMCl8MDtrW2o+PjJdPWE7aWYoa1tqPj4yXXwwKXtVZChrW2g+PjJdfDApO2tba1tkPj4yXT4+Ml09a1tqPj4yXTtyPWw7cmV0dXJufWVsc2V7aj0oa1tlPj4yXXwwKSsyNjR8MDtWZShrW2k+PjJdfDAsMSxrW2o+PjJdfDAsa1tqKzQ+PjJdfDApfDA7U2Uoa1tpPj4yXXwwLDIsa1toPj4yXXwwLGtbZz4+Ml18MCwxNDgpfDA7RGUoa1tpPj4yXXwwKXwwO2o9Z2Uoa1tpPj4yXXwwKXwwO2tba1tkPj4yXT4+Ml09ajtyPWw7cmV0dXJufX1mdW5jdGlvbiBZbyhhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxpPTAsaj0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHM9MCx0PTAsdT0wO3U9cjtyPXIrNjR8MDtmPXUrNDh8MDtnPXUrNDR8MDtoPXUrNDB8MDtpPXUrMzZ8MDtqPXUrMzJ8MDtwPXUrMjh8MDtuPXUrMjR8MDtsPXUrMjB8MDtxPXUrMTZ8MDttPXUrMTJ8MDtzPXUrOHwwO289dSs0fDA7dD11O2tbZj4+Ml09YTtrW2c+PjJdPWI7a1toPj4yXT1jO2tbaT4+Ml09ZDtrW2o+PjJdPWU7a1tvPj4yXT0oa1soa1tnPj4yXXwwKSsyND4+Ml18MCkrMjtpZihrW2tbZj4+Ml0+PjJdfDApe3I9dTtyZXR1cm59YT1TZCgoa1tvPj4yXXwwKSoxNHwwKXwwO2tbbD4+Ml09YTtpZighKGtbbD4+Ml18MCkpe2tba1tmPj4yXT4+Ml09NztyPXU7cmV0dXJufWtbcD4+Ml09KGtbbD4+Ml18MCkrKGtbbz4+Ml08PDIpO2E9emwoa1tnPj4yXXwwLDIyLHEsMCl8MDtrW3M+PjJdPWE7aWYoa1tzPj4yXXwwKXtVZChrW2w+PjJdfDApO2tba1tmPj4yXT4+Ml09a1tzPj4yXTtyPXU7cmV0dXJufVVlKGtbcT4+Ml18MCwxLDApfDA7aWYoKERlKGtbcT4+Ml18MCl8MCk9PTEwMCl7ZT1rW28+PjJdfDA7Yj1rW2w+PjJdfDA7YT1KZShrW3E+PjJdfDAsMCl8MDtabyhlLGIsYSxLZShrW3E+PjJdfDAsMCl8MCl9ZWxzZSBkUyhrW2w+PjJdfDAsMCxrW28+PjJdPDwyfDApfDA7YT1nZShrW3E+PjJdfDApfDA7a1tzPj4yXT1hO2lmKGtbcz4+Ml18MCl7VWQoa1tsPj4yXXwwKTtrW2tbZj4+Ml0+PjJdPWtbcz4+Ml07cj11O3JldHVybn1pZigoa1tqPj4yXXwwKTwwPyhrW2tbbD4+Ml0+PjJdfDApPj4+MDwoMC0oa1tqPj4yXXwwKXwwKT4+PjA6MClrW2tbbD4+Ml0+PjJdPTA7ZWxzZXthPWtbbD4+Ml18MDtrW2E+PjJdPShrW2E+PjJdfDApKyhrW2o+PjJdfDApfWtbbT4+Ml09MDt3aGlsZSgxKXtpZigoa1ttPj4yXXwwKT49KChrWyhrW2c+PjJdfDApKzI0Pj4yXXwwKSsxfDApKWJyZWFrO2tbdD4+Ml09a1soa1tsPj4yXXwwKSsoKGtbbT4+Ml18MCkrMTw8Mik+PjJdO2lmKCgoa1t0Pj4yXXwwKSsoa1soa1toPj4yXXwwKSsoa1ttPj4yXTw8Mik+PjJdfDApfDApPj4+MDwoa1soa1tpPj4yXXwwKSsoa1ttPj4yXTw8Mik+PjJdfDApPj4+MClrW3Q+PjJdPTA7ZWxzZSBrW3Q+PjJdPShrW3Q+PjJdfDApKyhrWyhrW2g+PjJdfDApKyhrW20+PjJdPDwyKT4+Ml18MCktKGtbKGtbaT4+Ml18MCkrKGtbbT4+Ml08PDIpPj4yXXwwKTtrWyhrW2w+PjJdfDApKygoa1ttPj4yXXwwKSsxPDwyKT4+Ml09a1t0Pj4yXTtrW20+PjJdPShrW20+PjJdfDApKzF9X28oa1tvPj4yXXwwLGtbbD4+Ml18MCxrW3A+PjJdfDAsbik7dD16bChrW2c+PjJdfDAsMjMscSwwKXwwO2tbcz4+Ml09dDtpZihrW3M+PjJdfDApe1VkKGtbbD4+Ml18MCk7a1trW2Y+PjJdPj4yXT1rW3M+PjJdO3I9dTtyZXR1cm59ZWxzZXtVZShrW3E+PjJdfDAsMSwwKXwwO1NlKGtbcT4+Ml18MCwyLGtbcD4+Ml18MCxrW24+PjJdfDAsMCl8MDtEZShrW3E+PjJdfDApfDA7dD1nZShrW3E+PjJdfDApfDA7a1trW2Y+PjJdPj4yXT10O1VkKGtbbD4+Ml18MCk7cj11O3JldHVybn19ZnVuY3Rpb24gWm8oYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxpPTAsaj0wLGw9MDtsPXI7cj1yKzMyfDA7ZT1sKzI4fDA7Zj1sKzI0fDA7Zz1sKzIwfDA7aD1sKzEyfDA7aT1sKzh8MDtqPWw7a1tlPj4yXT1hO2tbZj4+Ml09YjtrW2c+PjJdPWM7a1tsKzE2Pj4yXT1kO2tbaT4+Ml09MDtrW2g+PjJdPTA7d2hpbGUoMSl7aWYoKGtbaD4+Ml18MCk+PShrW2U+PjJdfDApKWJyZWFrO2M9aW0oKGtbZz4+Ml18MCkrKGtbaT4+Ml18MCl8MCxqKXwwO2tbaT4+Ml09KGtbaT4+Ml18MCkrYztrWyhrW2Y+PjJdfDApKyhrW2g+PjJdPDwyKT4+Ml09a1tqPj4yXTtrW2g+PjJdPShrW2g+PjJdfDApKzF9cj1sO3JldHVybn1mdW5jdGlvbiBfbyhhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGk9MCxqPTAsbD0wO2w9cjtyPXIrMzJ8MDtlPWwrMjB8MDtmPWwrMTZ8MDtnPWwrMTJ8MDtoPWwrOHwwO2k9bCs0fDA7aj1sO2tbZT4+Ml09YTtrW2Y+PjJdPWI7a1tnPj4yXT1jO2tbaD4+Ml09ZDtrW2o+PjJdPTA7a1tpPj4yXT0wO3doaWxlKDEpe2E9a1tqPj4yXXwwO2lmKChrW2k+PjJdfDApPj0oa1tlPj4yXXwwKSlicmVhaztjPVVsKChrW2c+PjJdfDApK2F8MCxrWyhrW2Y+PjJdfDApKyhrW2k+PjJdPDwyKT4+Ml18MCwwKXwwO2tbaj4+Ml09KGtbaj4+Ml18MCkrYztrW2k+PjJdPShrW2k+PjJdfDApKzF9a1trW2g+PjJdPj4yXT1hO3I9bDtyZXR1cm59ZnVuY3Rpb24gJG8oYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaT0wLGo9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTA7Qj1yO3I9cis4MHwwO2Y9Qis3MnwwO2c9Qis2OHwwO2g9Qis2NHwwO2k9Qis2MHwwO2o9Qis1NnwwO2w9Qis1MnwwO3g9Qis0OHwwO3A9Qis0NHwwO249Qis0MHwwO289QiszNnwwO3M9QiszMnwwO3o9QisyOHwwO3E9QisyNHwwO3c9QisyMHwwO3Y9QisxNnwwO3Q9QisxMnwwO3k9Qis4fDA7bT1CKzR8MDt1PUI7a1tnPj4yXT1hO2tbaD4+Ml09YjtrW2k+PjJdPWM7a1tqPj4yXT1kO2tbbD4+Ml09ZTtrW3A+PjJdPTA7a1tuPj4yXT0wO2tbbz4+Ml09MDtrW3M+PjJdPTA7a1txPj4yXT0wO2tbdz4+Ml09a1soa1tnPj4yXXwwKSszNj4+Ml07a1t2Pj4yXT1rW2tbdz4+Ml0+PjJdO2lmKCEoa1tpPj4yXXwwKSl7a1trW2w+PjJdPj4yXT0wO2tbZj4+Ml09MDtBPWtbZj4+Ml18MDtyPUI7cmV0dXJuIEF8MH1jPU1uKGtbdz4+Ml18MCxrW2g+PjJdfDAsa1tpPj4yXXwwLC0xLHQpfDA7a1t4Pj4yXT1jO2lmKGtbeD4+Ml18MCl7a1tmPj4yXT1rW3g+PjJdO0E9a1tmPj4yXXwwO3I9QjtyZXR1cm4gQXwwfWtbeT4+Ml09a1soa1t2Pj4yXXwwKSsyMD4+Ml07YTp3aGlsZSgxKXtpZihrW3g+PjJdfDApYnJlYWs7Yz1hY1trW3k+PjJdJjI1NV0oa1t0Pj4yXXwwLHoscSxwLG4sbyl8MDtrW3g+PjJdPWM7aWYoYylicmVhaztpZigoa1tvPj4yXXwwKT49KGtbcz4+Ml18MCkpa1tzPj4yXT0oa1tvPj4yXXwwKSsxO2lmKChrW28+PjJdfDApPj0wJihrW3o+PjJdfDApIT0wXjF8KGtbcT4+Ml18MCk8PTApe0E9MTE7YnJlYWt9Yz1hcChrW2c+PjJdfDAsa1tqPj4yXXwwLGtbbz4+Ml18MCwoa1soa1tnPj4yXXwwKSsyNTI+PjJdfDApKzR8MCxrW3o+PjJdfDAsa1txPj4yXXwwKXwwO2tbeD4+Ml09YztrW20+PjJdPTE7d2hpbGUoMSl7aWYoa1t4Pj4yXXwwKWNvbnRpbnVlIGE7aWYoKGtbbT4+Ml18MCk+PShrWyhrW2c+PjJdfDApKzI0OD4+Ml18MCkpY29udGludWUgYTtrW3U+PjJdPShrWyhrW2c+PjJdfDApKzI1Mj4+Ml18MCkrKChrW20+PjJdfDApKjI0fDApO2lmKChrW3E+PjJdfDApPj0oa1trW3U+PjJdPj4yXXwwKSl7Yz1hcChrW2c+PjJdfDAsa1tqPj4yXXwwLGtbbz4+Ml18MCwoa1t1Pj4yXXwwKSs0fDAsa1t6Pj4yXXwwLGtba1t1Pj4yXT4+Ml18MCl8MDtrW3g+PjJdPWN9a1ttPj4yXT0oa1ttPj4yXXwwKSsxfX1pZigoQXwwKT09MTEpa1t4Pj4yXT0xO2JjW2tbKGtbdj4+Ml18MCkrMTY+PjJdJjI1NV0oa1t0Pj4yXXwwKXwwO0E9a1tsPj4yXXwwO2tbQT4+Ml09KGtbQT4+Ml18MCkrKGtbcz4+Ml18MCk7a1tmPj4yXT0oa1t4Pj4yXXwwKT09MTAxPzA6a1t4Pj4yXXwwO0E9a1tmPj4yXXwwO3I9QjtyZXR1cm4gQXwwfWZ1bmN0aW9uIGFwKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxpPTAsaj0wLGw9MCxtPTAsbj0wLG89MCxwPTA7cD1yO3I9ciszMnwwO2c9cCsyOHwwO2g9cCsyNHwwO2k9cCsyMHwwO2o9cCsxNnwwO2w9cCsxMnwwO209cCs4fDA7bj1wKzR8MDtvPXA7a1tnPj4yXT1hO2tbaD4+Ml09YjtrW2k+PjJdPWM7a1tqPj4yXT1kO2tbbD4+Ml09ZTtrW20+PjJdPWY7a1tvPj4yXT0wO2U9T2soa1tqPj4yXXwwLGtbbD4+Ml18MCxrW20+PjJdfDApfDA7a1tuPj4yXT1lO2lmKGtbbj4+Ml18MCl7ZT0oa1tnPj4yXXwwKSsyNjB8MDtrW2U+PjJdPShrW2U+PjJdfDApLSgoa1trW24+PjJdPj4yXXwwKSsoa1ttPj4yXXwwKSsyMCl9YT0oa1tnPj4yXXwwKSsyNjR8MDtkPWtbaD4+Ml18MDtlPWtbaT4+Ml18MDtpZigoTm4obixrW2E+PjJdfDAsa1thKzQ+PjJdfDAsZCwoKGR8MCk8MCk8PDMxPj4zMSxlLCgoZXwwKTwwKTw8MzE+PjMxLG8pfDApIT0wPyhlPWtbbj4+Ml18MCwoZXwwKT09KHZrKGtbaj4+Ml18MCxrW2w+PjJdfDAsa1ttPj4yXXwwLGtbbj4+Ml18MCl8MCkpOjApe1VkKGtbbj4+Ml18MCk7a1tvPj4yXT03fWlmKGtbbz4+Ml18MCl7ZT1rW28+PjJdfDA7cj1wO3JldHVybiBlfDB9ZT0oa1tnPj4yXXwwKSsyNjB8MDtrW2U+PjJdPShrW2U+PjJdfDApKygoa1trW24+PjJdPj4yXXwwKSsoa1ttPj4yXXwwKSsyMCk7ZT1rW28+PjJdfDA7cj1wO3JldHVybiBlfDB9ZnVuY3Rpb24gYnAoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaT0wLGo9MCxtPTAsbj0wLG89MCxwPTAscT0wLHM9MCx0PTAsdT0wO3U9cjtyPXIrNjR8MDtnPXUrNDh8MDtoPXUrNDR8MDtmPXUrNDB8MDtpPXUrMzZ8MDtqPXUrMzJ8MDtzPXUrMjh8MDtxPXUrMjR8MDttPXUrMjB8MDtwPXUrMTZ8MDtvPXU7bj11KzEyfDA7dD11Kzh8MDtrW2c+PjJdPWE7a1toPj4yXT1iO2tbZj4+Ml09YztrW2k+PjJdPWQ7a1tqPj4yXT1lO2lmKGtba1tnPj4yXT4+Ml18MCl7cj11O3JldHVybn1mPXpsKGtbaD4+Ml18MCw3LHEsZil8MDtrW3M+PjJdPWY7Zj1rW3E+PjJdfDA7aWYoIShrW3M+PjJdfDApKXtkbyBpZigxMDA9PShEZShmKXwwKSl7Yz1mcChrW2g+PjJdfDAsa1txPj4yXXwwKXwwO2tbcD4+Ml09YztjPU5lKGtbcT4+Ml18MCwwKXwwO2U9bztrW2U+PjJdPWM7a1tlKzQ+PjJdPUw7bz1WbyhrW2g+PjJdfDAsMSxrW3A+PjJdfDAsa1tvPj4yXXwwLGtbbys0Pj4yXXwwKXwwO2tbcz4+Ml09bztrW20+PjJdPTE7d2hpbGUoMSl7aWYoa1tzPj4yXXwwKWJyZWFrO2lmKChrW20+PjJdfDApPihrWyhrW2g+PjJdfDApKzI0Pj4yXXwwKSlicmVhaztrW24+PjJdPShrW20+PjJdfDApLTE7aWYoIShsWyhrWyhrW2g+PjJdfDApKzMyPj4yXXwwKSsoa1tuPj4yXXwwKT4+MF18MCkpe2U9T2Uoa1txPj4yXXwwLGtbbT4+Ml18MCl8MDtrW3Q+PjJdPWU7ZT0kbyhrW2g+PjJdfDAsa1twPj4yXXwwLGtbdD4+Ml18MCwtMSwoa1tpPj4yXXwwKSsoa1tuPj4yXTw8Mil8MCl8MDtrW3M+PjJdPWU7ZT1LZShrW3E+PjJdfDAsa1ttPj4yXXwwKXwwO289KGtbaT4+Ml18MCkrKGtbKGtbaD4+Ml18MCkrMjQ+PjJdPDwyKXwwO2tbbz4+Ml09KGtbbz4+Ml18MCkrZX1rW20+PjJdPShrW20+PjJdfDApKzF9aWYoIShrW3M+PjJdfDApKXtrW2tbaj4+Ml0+PjJdPTE7YnJlYWt9Z2Uoa1txPj4yXXwwKXwwO2tba1tnPj4yXT4+Ml09a1tzPj4yXTtyPXU7cmV0dXJufXdoaWxlKDApO3Q9Z2Uoa1txPj4yXXwwKXwwO2tbcz4+Ml09dH1lbHNlIGdlKGYpfDA7a1trW2c+PjJdPj4yXT1rW3M+PjJdO3I9dTtyZXR1cm59ZnVuY3Rpb24gY3AoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGk9MDtpPXI7cj1yKzMyfDA7ZD1pKzE2fDA7ZT1pKzEyfDA7Zj1pKzh8MDtnPWkrNHwwO2g9aTtrW2Q+PjJdPWE7a1tlPj4yXT1iO2tbZj4+Ml09YztpZihrWyhrW2Q+PjJdfDApKzQwPj4yXXwwKXtrW2tbZj4+Ml0+PjJdPTA7a1toPj4yXT0wO2g9a1toPj4yXXwwO3I9aTtyZXR1cm4gaHwwfWM9emwoa1tkPj4yXXwwLDEsZyxlKXwwO2tbaD4+Ml09YztpZihrW2g+PjJdfDApe2g9a1toPj4yXXwwO3I9aTtyZXR1cm4gaHwwfWlmKDEwMD09KERlKGtbZz4+Ml18MCl8MCkpe2M9TWUoa1tnPj4yXXwwLDApfDA7a1trW2Y+PjJdPj4yXT1jfWM9Z2Uoa1tnPj4yXXwwKXwwO2tbaD4+Ml09YztoPWtbaD4+Ml18MDtyPWk7cmV0dXJuIGh8MH1mdW5jdGlvbiBkcChhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTA7ZT1yO3I9cisxNnwwO2M9ZSs4fDA7Zj1lKzR8MDtkPWU7a1tjPj4yXT1hO2tbZj4+Ml09YjtrW2Q+PjJdPTA7dGwoa1tjPj4yXXwwKTtpZihrW2Y+PjJdfDApZXAoZCxrW2M+PjJdfDAsMiwwKTtlcChkLGtbYz4+Ml18MCwzLDApO2VwKGQsa1tjPj4yXXwwLDQsMCk7aWYoaVsoa1tjPj4yXXwwKSsyMzA+PjBdfDApZXAoZCxrW2M+PjJdfDAsNSwwKTtpZighKGlbKGtbYz4+Ml18MCkrMjI5Pj4wXXwwKSl7Zj1rW2Q+PjJdfDA7cj1lO3JldHVybiBmfDB9ZXAoZCxrW2M+PjJdfDAsNiwwKTtmPWtbZD4+Ml18MDtyPWU7cmV0dXJuIGZ8MH1mdW5jdGlvbiBlcChhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGk9MCxqPTAsbD0wO2w9cjtyPXIrMzJ8MDtlPWwrMjB8MDtmPWwrMTZ8MDtnPWwrMTJ8MDtoPWwrOHwwO2k9bCs0fDA7aj1sO2tbZT4+Ml09YTtrW2Y+PjJdPWI7a1tnPj4yXT1jO2tbaD4+Ml09ZDtpZihrW2tbZT4+Ml0+PjJdfDApe3I9bDtyZXR1cm59YT16bChrW2Y+PjJdfDAsa1tnPj4yXXwwLGksa1toPj4yXXwwKXwwO2tbaj4+Ml09YTtpZighKGtbaj4+Ml18MCkpe0RlKGtbaT4+Ml18MCl8MDtpPWdlKGtbaT4+Ml18MCl8MDtrW2o+PjJdPWl9a1trW2U+PjJdPj4yXT1rW2o+PjJdO3I9bDtyZXR1cm59ZnVuY3Rpb24gZnAoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wO2Y9cjtyPXIrMTZ8MDtjPWYrOHwwO2Q9Zis0fDA7ZT1mO2tbYz4+Ml09YTtrW2Q+PjJdPWI7a1tlPj4yXT0wO2lmKCEoa1soa1tjPj4yXXwwKSs0ND4+Ml18MCkpe2I9a1tlPj4yXXwwO3I9ZjtyZXR1cm4gYnwwfWI9TWUoa1tkPj4yXXwwLChrWyhrW2M+PjJdfDApKzI0Pj4yXXwwKSsxfDApfDA7a1tlPj4yXT1iO2I9a1tlPj4yXXwwO3I9ZjtyZXR1cm4gYnwwfWZ1bmN0aW9uIGdwKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLG09MCxuPTAsbz0wLHA9MCxxPTAscz0wLHQ9MDt0PXI7cj1yKzY0fDA7Yz10O2U9dCs1MnwwO3A9dCs0OHwwO2Y9dCs0NHwwO2g9dCs0MHwwO2c9dCszNnwwO289dCszMnwwO249dCsyOHwwO2Q9dCsyNHwwO2I9dCsyMHwwO2o9dCsxNnwwO209dCsxMnwwO3M9dCs4fDA7cT10KzR8MDtrW2U+PjJdPWE7YT1kcChrW2U+PjJdfDAsMCl8MDtrW3A+PjJdPWE7aWYoa1twPj4yXXwwKXtzPWtbcD4+Ml18MDtyPXQ7cmV0dXJuIHN8MH1rW2Y+PjJdPTA7a1toPj4yXT0wO2tbZz4+Ml09MDtrW28+PjJdPTA7a1tuPj4yXT0wO2tbYz4+Ml09a1soa1tlPj4yXXwwKSsyMTY+PjJdO2M9WWQoMjM2MTQsYyl8MDtrW2Q+PjJdPWM7aWYoa1tkPj4yXXwwKXtjPWxmKGtbKGtbZT4+Ml18MCkrMTI+PjJdfDAsa1tkPj4yXXwwLC0xLG8sMCl8MDtrW3A+PjJdPWM7VWQoa1tkPj4yXXwwKX1lbHNlIGtbcD4+Ml09NztkbyBpZighKGtbcD4+Ml18MCkpe2tbYj4+Ml09KChrWyhrW2U+PjJdfDApKzI0Pj4yXXwwKSsxPDwyKSozO2Q9U2Qoa1tiPj4yXXwwKXwwO2tbZj4+Ml09ZDtpZighKGtbZj4+Ml18MCkpe2tbcD4+Ml09NzticmVha31lbHNle2RTKGtbZj4+Ml18MCwwLGtbYj4+Ml18MCl8MDtrW2g+PjJdPShrW2Y+PjJdfDApKygoa1soa1tlPj4yXXwwKSsyND4+Ml18MCkrMTw8Mik7a1tnPj4yXT0oa1toPj4yXXwwKSsoKGtbKGtbZT4+Ml18MCkrMjQ+PjJdfDApKzE8PDIpO2JyZWFrfX13aGlsZSgwKTthOndoaWxlKDEpe2lmKCEoa1twPj4yXXwwKSliPTEwMD09KERlKGtbbz4+Ml18MCl8MCk7ZWxzZSBiPTA7YT1rW2U+PjJdfDA7aWYoIWIpYnJlYWs7YT1mcChhLGtbbz4+Ml18MCl8MDtrW20+PjJdPWE7YT1rW2U+PjJdfDA7Yz1rW20+PjJdfDA7ZD1OZShrW28+PjJdfDAsMCl8MDtkPVZvKGEsMCxjLGQsTCl8MDtrW3A+PjJdPWQ7ZFMoa1tmPj4yXXwwLDAsKGtbKGtbZT4+Ml18MCkrMjQ+PjJdfDApKzE8PDJ8MCl8MDtrW2o+PjJdPTA7d2hpbGUoMSl7aWYoa1twPj4yXXwwKWJyZWFrO2lmKChrW2o+PjJdfDApPj0oa1soa1tlPj4yXXwwKSsyND4+Ml18MCkpYnJlYWs7aWYoIShsWyhrWyhrW2U+PjJdfDApKzMyPj4yXXwwKSsoa1tqPj4yXXwwKT4+MF18MCkpe2M9T2Uoa1tvPj4yXXwwLChrW2o+PjJdfDApKzF8MCl8MDtrW3M+PjJdPWM7Yz0kbyhrW2U+PjJdfDAsa1ttPj4yXXwwLGtbcz4+Ml18MCxrW2o+PjJdfDAsKGtbZj4+Ml18MCkrKGtbaj4+Ml08PDIpfDApfDA7a1twPj4yXT1jO2M9S2Uoa1tvPj4yXXwwLChrW2o+PjJdfDApKzF8MCl8MDtkPShrW2Y+PjJdfDApKyhrWyhrW2U+PjJdfDApKzI0Pj4yXTw8Mil8MDtrW2Q+PjJdPShrW2Q+PjJdfDApK2N9a1tqPj4yXT0oa1tqPj4yXXwwKSsxfWlmKGlbKGtbZT4+Ml18MCkrMjMwPj4wXXwwKVhvKHAsa1tlPj4yXXwwLGtbZj4+Ml18MCk7aWYoa1twPj4yXXwwKXtmZShrW28+PjJdfDApfDA7a1tvPj4yXT0wO2NvbnRpbnVlfWtbbj4+Ml09KGtbbj4+Ml18MCkrMTtrW2o+PjJdPTA7d2hpbGUoMSl7aWYoKGtbaj4+Ml18MCk+KGtbKGtbZT4+Ml18MCkrMjQ+PjJdfDApKWNvbnRpbnVlIGE7ZD0oa1toPj4yXXwwKSsoa1tqPj4yXTw8Mil8MDtrW2Q+PjJdPShrW2Q+PjJdfDApKyhrWyhrW2Y+PjJdfDApKyhrW2o+PjJdPDwyKT4+Ml18MCk7a1tqPj4yXT0oa1tqPj4yXXwwKSsxfX1pZihpW2ErMjI4Pj4wXXwwKVlvKHAsa1tlPj4yXXwwLGtbaD4+Ml18MCxrW2c+PjJdfDAsa1tuPj4yXXwwKTtVZChrW2Y+PjJdfDApO2lmKCEoa1tvPj4yXXwwKSl7cz1rW3A+PjJdfDA7cj10O3JldHVybiBzfDB9cz1mZShrW28+PjJdfDApfDA7a1txPj4yXT1zO2lmKGtbcD4+Ml18MCl7cz1rW3A+PjJdfDA7cj10O3JldHVybiBzfDB9a1twPj4yXT1rW3E+PjJdO3M9a1twPj4yXXwwO3I9dDtyZXR1cm4gc3wwfWZ1bmN0aW9uIGhwKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MCxlPTA7Yz1yO3I9cisxNnwwO2U9Yys4fDA7Yj1jKzR8MDtkPWM7a1tlPj4yXT1hO2tbZD4+Ml09MDthPW1wKGtbZT4+Ml18MCxkKXwwO2tbYj4+Ml09YTtrW2I+PjJdPShrW2I+PjJdfDApPT0wJihrW2Q+PjJdfDApPT0wPzI2NzphO3I9YztyZXR1cm4ga1tiPj4yXXwwfWZ1bmN0aW9uIGlwKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MDtoPXI7cj1yKzMyfDA7Yz1oKzIwfDA7aj1oKzE2fDA7Zj1oKzEyfDA7ZT1oKzh8MDtkPWgrNHwwO2c9aDtrW2M+PjJdPWE7a1tqPj4yXT1iO2tbZT4+Ml09ODtrW2Q+PjJdPTA7a1tnPj4yXT1rW2o+PjJdO2I9a3AoZyl8MDtrW2Q+PjJdPWI7aWYoKGlba1tnPj4yXT4+MF18MCk9PTQ0PyhpWyhrW2c+PjJdfDApKzE+PjBdfDApIT0wOjApe2tbZz4+Ml09KGtbZz4+Ml18MCkrMTtqPWtwKGcpfDA7a1tlPj4yXT1qfWlmKChrW2U+PjJdfDApPDI/MTooaVtrW2c+PjJdPj4wXXwwKSE9MCl7a1tmPj4yXT0xO2o9a1tmPj4yXXwwO3I9aDtyZXR1cm4ganwwfWtbZj4+Ml09MDtpZighKGlbKGtbYz4+Ml18MCkrMjI5Pj4wXXwwKSlscChmLGtbYz4+Ml18MCk7aWYoIShrW2Y+PjJdfDApKXtqPXFvKGtbYz4+Ml18MCxrW2Q+PjJdfDAsa1tlPj4yXXwwKXwwO2tbZj4+Ml09an1JbShrW2M+PjJdfDApO2o9a1tmPj4yXXwwO3I9aDtyZXR1cm4ganwwfWZ1bmN0aW9uIGpwKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wO2c9cjtyPXIrMzJ8MDtjPWcrMTZ8MDtkPWcrMTJ8MDtoPWcrOHwwO2Y9Zys0fDA7ZT1nO2tbZD4+Ml09YTtrW2g+PjJdPWI7a1tmPj4yXT0wO2tbZT4+Ml09MDtiPWtwKGgpfDA7a1soa1tkPj4yXXwwKSs0OD4+Ml09YjtpZighKChrWyhrW2Q+PjJdfDApKzQ4Pj4yXXwwKSE9MT8oa1soa1tkPj4yXXwwKSs0OD4+Ml18MCk8PTE2OjApKWtbKGtbZD4+Ml18MCkrNDg+PjJdPTg7aWYoKGlbKGtbZD4+Ml18MCkrMjI5Pj4wXXwwKT09MD8obHAoZixrW2Q+PjJdfDApLChrW2Y+PjJdfDApIT0wKTowKXtrW2M+PjJdPWtbZj4+Ml07aD1rW2M+PjJdfDA7cj1nO3JldHVybiBofDB9aD16bChrW2Q+PjJdfDAsMjMsZSwwKXwwO2tbZj4+Ml09aDtpZihrW2Y+PjJdfDApe2tbYz4+Ml09a1tmPj4yXTtoPWtbYz4+Ml18MDtyPWc7cmV0dXJuIGh8MH1lbHNle1VlKGtbZT4+Ml18MCwxLDIpfDA7VWUoa1tlPj4yXXwwLDIsa1soa1tkPj4yXXwwKSs0OD4+Ml18MCl8MDtEZShrW2U+PjJdfDApfDA7aD1nZShrW2U+PjJdfDApfDA7a1tmPj4yXT1oO2tbYz4+Ml09a1tmPj4yXTtoPWtbYz4+Ml18MDtyPWc7cmV0dXJuIGh8MH1yZXR1cm4gMH1mdW5jdGlvbiBrcChhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTAsZT0wLGY9MDtlPXI7cj1yKzE2fDA7Yj1lKzh8MDtkPWUrNHwwO2M9ZTtrW2I+PjJdPWE7a1tkPj4yXT1rW2tbYj4+Ml0+PjJdO2tbYz4+Ml09MDt3aGlsZSgxKXtpZigoaVtrW2Q+PjJdPj4wXXwwKTw0OCl7YT01O2JyZWFrfWlmKChpW2tbZD4+Ml0+PjBdfDApPjU3KXthPTU7YnJlYWt9Zj0oa1tjPj4yXXwwKSoxMHwwO2E9a1tkPj4yXXwwO2tbZD4+Ml09YSsxO2tbYz4+Ml09ZisoaVthPj4wXXwwKS00OH1pZigoYXwwKT09NSl7a1trW2I+PjJdPj4yXT1rW2Q+PjJdO3I9ZTtyZXR1cm4ga1tjPj4yXXwwfXJldHVybiAwfWZ1bmN0aW9uIGxwKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTA7ZD1yO3I9cisxNnwwO2Y9ZDtlPWQrMTJ8MDtjPWQrOHwwO2tbZT4+Ml09YTtrW2M+PjJdPWI7Yj1rW2U+PjJdfDA7YT1rWyhrW2M+PjJdfDApKzEyPj4yXXwwO2c9a1soa1tjPj4yXXwwKSsyMD4+Ml18MDtrW2Y+PjJdPWtbKGtbYz4+Ml18MCkrMTY+PjJdO2tbZis0Pj4yXT1nO3hsKGIsYSwyMzUzNyxmKTtpZihrW2tbZT4+Ml0+PjJdfDApe3I9ZDtyZXR1cm59aVsoa1tjPj4yXXwwKSsyMjk+PjBdPTE7cj1kO3JldHVybn1mdW5jdGlvbiBtcChhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wLGg9MCxpPTAsaj0wLG09MCxuPTAsbz0wLHA9MCxxPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTAsRT0wLEY9MCxHPTA7RT1yO3I9cisxMTJ8MDtnPUUrMjR8MDtpPUUrMTA4fDA7aj1FKzEwNHwwO0I9RSsxMDB8MDttPUUrMTZ8MDtuPUUrOHwwO2U9RSs5NnwwO2Y9RSs5MnwwO2Q9RSs4OHwwO2M9RSs4NHwwO3k9RSs4MHwwO3o9RSs3NnwwO2g9RSs3MnwwO3E9RTt1PUUrNjh8MDtwPUUrNjR8MDtDPUUrNjB8MDt3PUUrNTZ8MDtBPUUrNTJ8MDtEPUUrNDh8MDt4PUUrNDR8MDtzPUUrNDB8MDt0PUUrMzZ8MDt2PUUrMzJ8MDtvPUUrMjh8MDtrW2k+PjJdPWE7a1tqPj4yXT1iO2tbQj4+Ml09MDtiPW07a1tiPj4yXT0wO2tbYis0Pj4yXT0wO2I9bjtrW2I+PjJdPTA7a1tiKzQ+PjJdPTA7a1tlPj4yXT0wO2I9emwoa1tpPj4yXXwwLDI3LGUsMCl8MDtrW0I+PjJdPWI7aWYoIShrW0I+PjJdfDApKXtVZShrW2U+PjJdfDAsMSxrWyhrW2k+PjJdfDApKzI3Mj4+Ml18MCl8MDtVZShrW2U+PjJdfDAsMixrWyhrW2k+PjJdfDApKzI0OD4+Ml18MCl8MDthOndoaWxlKDEpe2lmKCEoa1tCPj4yXXwwKSlhPShEZShrW2U+PjJdfDApfDApPT0xMDA7ZWxzZSBhPTA7Yj1rW2U+PjJdfDA7aWYoIWEpYnJlYWs7Yj1NZShiLDApfDA7a1tkPj4yXT1iO2tbYz4+Ml09MDt3aGlsZSgxKXtpZigoa1tjPj4yXXwwKT49KGtbKGtbaT4+Ml18MCkrMjQ4Pj4yXXwwKSljb250aW51ZSBhO2E9bTtHPWtbYT4+Ml18MDthPWtbYSs0Pj4yXXwwO0Y9bnAoa1tpPj4yXXwwLGtbZD4+Ml18MCxrW2M+PjJdfDAsQil8MDtiPW07a1tiPj4yXT1HXkY7a1tiKzQ+PjJdPWFeTDtrW2M+PjJdPShrW2M+PjJdfDApKzF9fUc9Z2UoYil8MDtrW2Y+PjJdPUc7aWYoIShrW0I+PjJdfDApKWtbQj4+Ml09a1tmPj4yXX1pZihrW0I+PjJdfDApe0Q9bTtDPUQ7Qz1rW0M+PjJdfDA7RD1EKzR8MDtEPWtbRD4+Ml18MDtGPW47Rz1GO0c9a1tHPj4yXXwwO0Y9Ris0fDA7Rj1rW0Y+PjJdfDA7Rz0oQ3wwKT09KEd8MCk7Rj0oRHwwKT09KEZ8MCk7Rj1HJkY7Rj1GJjE7Rz1rW2o+PjJdfDA7a1tHPj4yXT1GO0c9a1tCPj4yXXwwO3I9RTtyZXR1cm4gR3wwfWtbeT4+Ml09a1trWyhrW2k+PjJdfDApKzM2Pj4yXT4+Ml07a1t6Pj4yXT0wO2tbZz4+Ml09a1soa1tpPj4yXXwwKSsyMTY+PjJdO0c9WWQoMjM2MTQsZyl8MDtrW2g+PjJdPUc7aWYoa1toPj4yXXwwKXtHPWxmKGtbKGtbaT4+Ml18MCkrMTI+PjJdfDAsa1toPj4yXXwwLC0xLHosMCl8MDtrW0I+PjJdPUc7VWQoa1toPj4yXXwwKX1lbHNlIGtbQj4+Ml09NztiOndoaWxlKDEpe2lmKCEoa1tCPj4yXXwwKSlhPTEwMD09KERlKGtbej4+Ml18MCl8MCk7ZWxzZSBhPTA7Yj1rW3o+PjJdfDA7aWYoIWEpYnJlYWs7Rj1OZShiLDApfDA7Rz1xO2tbRz4+Ml09RjtrW0crND4+Ml09TDtHPWZwKGtbaT4+Ml18MCxrW3o+PjJdfDApfDA7a1t1Pj4yXT1HO2tbcD4+Ml09MDt3aGlsZSgxKXtpZihrW0I+PjJdfDApY29udGludWUgYjtpZigoa1twPj4yXXwwKT49KGtbKGtbaT4+Ml18MCkrMjQ+PjJdfDApKWNvbnRpbnVlIGI7aWYoIShsWyhrWyhrW2k+PjJdfDApKzMyPj4yXXwwKSsoa1twPj4yXXwwKT4+MF18MCkpe0c9T2Uoa1t6Pj4yXXwwLChrW3A+PjJdfDApKzF8MCl8MDtrW0M+PjJdPUc7Rz1LZShrW3o+PjJdfDAsKGtbcD4+Ml18MCkrMXwwKXwwO2tbdz4+Ml09RztrW0E+PjJdPTA7Rz1NbihrWyhrW2k+PjJdfDApKzM2Pj4yXXwwLGtbdT4+Ml18MCxrW0M+PjJdfDAsa1t3Pj4yXXwwLEEpfDA7a1tCPj4yXT1HO2M6d2hpbGUoMSl7aWYoa1tCPj4yXXwwKWJyZWFrO2tbeD4+Ml09MDtrW3M+PjJdPTA7a1t0Pj4yXT0wO2tbdj4+Ml09MDtHPWFjW2tbKGtbeT4+Ml18MCkrMjA+PjJdJjI1NV0oa1tBPj4yXXwwLEQseCxzLHQsdil8MDtrW0I+PjJdPUc7aWYoa1tCPj4yXXwwKWNvbnRpbnVlO0Y9bjtnPWtbRj4+Ml18MDtGPWtbRis0Pj4yXXwwO2g9cTtoPW9wKGtbRD4+Ml18MCxrW3g+PjJdfDAsa1t1Pj4yXXwwLDAsa1toPj4yXXwwLGtbaCs0Pj4yXXwwLGtbcD4+Ml18MCxrW3Y+PjJdfDApfDA7Rz1uO2tbRz4+Ml09Z15oO2tbRys0Pj4yXT1GXkw7a1tvPj4yXT0xO3doaWxlKDEpe2lmKChrW28+PjJdfDApPj0oa1soa1tpPj4yXXwwKSsyNDg+PjJdfDApKWNvbnRpbnVlIGM7aWYoKGtbKGtbKGtbaT4+Ml18MCkrMjUyPj4yXXwwKSsoKGtbbz4+Ml18MCkqMjR8MCk+PjJdfDApPD0oa1t4Pj4yXXwwKSl7Rj1uO2c9a1tGPj4yXXwwO0Y9a1tGKzQ+PjJdfDA7aD1xO2g9b3Aoa1tEPj4yXXwwLGtbKGtbKGtbaT4+Ml18MCkrMjUyPj4yXXwwKSsoKGtbbz4+Ml18MCkqMjR8MCk+PjJdfDAsa1t1Pj4yXXwwLGtbbz4+Ml18MCxrW2g+PjJdfDAsa1toKzQ+PjJdfDAsa1twPj4yXXwwLGtbdj4+Ml18MCl8MDtHPW47a1tHPj4yXT1nXmg7a1tHKzQ+PjJdPUZeTH1rW28+PjJdPShrW28+PjJdfDApKzF9fWlmKGtbQT4+Ml18MCliY1trWyhrW3k+PjJdfDApKzE2Pj4yXSYyNTVdKGtbQT4+Ml18MCl8MDtpZigoa1tCPj4yXXwwKT09MTAxKWtbQj4+Ml09MH1rW3A+PjJdPShrW3A+PjJdfDApKzF9fWZlKGIpfDA7RD1tO0M9RDtDPWtbQz4+Ml18MDtEPUQrNHwwO0Q9a1tEPj4yXXwwO0Y9bjtHPUY7Rz1rW0c+PjJdfDA7Rj1GKzR8MDtGPWtbRj4+Ml18MDtHPShDfDApPT0oR3wwKTtGPShEfDApPT0oRnwwKTtGPUcmRjtGPUYmMTtHPWtbaj4+Ml18MDtrW0c+PjJdPUY7Rz1rW0I+PjJdfDA7cj1FO3JldHVybiBHfDB9ZnVuY3Rpb24gbnAoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxpPTAsaj0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHM9MCx0PTAsdT0wO3U9cjtyPXIrMTQ0fDA7Zj11KzE0MHwwO2c9dSsxMzZ8MDtoPXUrMTMyfDA7aT11KzEyOHwwO2U9dSsxMTJ8MDtsPXUrNTZ8MDt0PXUrNDh8MDtqPXUrMzJ8MDtxPXUrNDR8MDtzPXUrNDB8MDtuPXUrMjR8MDttPXUrMTZ8MDtvPXUrOHwwO3A9dTtrW2Y+PjJdPWE7a1tnPj4yXT1iO2tbaD4+Ml09YztrW2k+PjJdPWQ7Yz1qO2tbYz4+Ml09MDtrW2MrND4+Ml09MDtrW2U+PjJdPTA7a1tlKzQ+PjJdPTA7a1tlKzg+PjJdPTA7a1tlKzEyPj4yXT0wO2M9bDtiPWMrNTZ8MDtkb3trW2M+PjJdPTA7Yz1jKzR8MH13aGlsZSgoY3wwKTwoYnwwKSk7a1tlKzEyPj4yXT0zO2Q9ZSsxMnwwO2tbZD4+Ml09a1tkPj4yXXwxNjtkPUFsKGtbZj4+Ml18MCxrW2c+PjJdfDAsa1toPj4yXXwwLC0yLDAsMCwwLDEsbCl8MDtrW3Q+PjJdPWQ7aWYoIShrW3Q+PjJdfDApKXtlPUVsKGtbZj4+Ml18MCxsLGUpfDA7a1t0Pj4yXT1lfWlmKGtbdD4+Ml18MCl7TGwobCk7dD1rW3Q+PjJdfDA7cz1rW2k+PjJdfDA7a1tzPj4yXT10O3M9ajt0PXM7dD1rW3Q+PjJdfDA7cz1zKzR8MDtzPWtbcz4+Ml18MDtMPXM7cj11O3JldHVybiB0fDB9YTp3aGlsZSgxKXtlPUZsKGtbZj4+Ml18MCxsKXwwO2tbdD4+Ml09ZTtpZigxMDAhPShlfDApKWJyZWFrO2tbcT4+Ml09a1tsKzQ4Pj4yXTtrW3M+PjJdPShrW3E+PjJdfDApKyhrW2wrNTI+PjJdfDApO2U9bjtrW2U+PjJdPTA7a1tlKzQ+PjJdPTA7ZT1tO2tbZT4+Ml09MDtrW2UrND4+Ml09MDtlPW87a1tlPj4yXT0wO2tbZSs0Pj4yXT0wO2U9aW0oa1txPj4yXXwwLG4pfDA7a1txPj4yXT0oa1txPj4yXXwwKStlO3doaWxlKDEpe2lmKChrW3E+PjJdfDApPj4+MD49KGtbcz4+Ml18MCk+Pj4wKWNvbnRpbnVlIGE7ZT1wO2tbZT4+Ml09MDtrW2UrND4+Ml09MDtlPWltKGtbcT4+Ml18MCxwKXwwO2tbcT4+Ml09KGtbcT4+Ml18MCkrZTtpZigoa1txPj4yXXwwKT4+PjA+PShrW3M+PjJdfDApPj4+MCljb250aW51ZTtkPXA7ZT1wO2lmKCEoKGtbZD4+Ml18MCk9PTAmKGtbZCs0Pj4yXXwwKT09MHwoa1tlPj4yXXwwKT09MSYoa1tlKzQ+PjJdfDApPT0wKSl7Yj1wO2I9X1Ioa1tiPj4yXXwwLGtbYis0Pj4yXXwwLDIsMCl8MDtkPW87Yj0kUihrW2Q+PjJdfDAsa1tkKzQ+PjJdfDAsYnwwLEx8MCl8MDtkPW87a1tkPj4yXT1iO2tbZCs0Pj4yXT1MO2Q9ajtiPWtbZD4+Ml18MDtkPWtbZCs0Pj4yXXwwO2E9bjthPW9wKGtbbCs0MD4+Ml18MCxrW2wrNDQ+PjJdfDAsa1tnPj4yXXwwLGtbaD4+Ml18MCxrW2E+PjJdfDAsa1thKzQ+PjJdfDAsa1ttPj4yXXwwLGtbbz4+Ml18MCl8MDtlPWo7a1tlPj4yXT1iXmE7a1tlKzQ+PjJdPWReTDtjb250aW51ZX1lPW07a1tlPj4yXT0wO2tbZSs0Pj4yXT0wO2U9bztrW2U+PjJdPTA7a1tlKzQ+PjJdPTA7ZT1wO2M9a1txPj4yXXwwO2lmKChrW2U+PjJdfDApIT0wfChrW2UrND4+Ml18MCkhPTApe2U9aW0oYyxtKXwwO2tbcT4+Ml09KGtbcT4+Ml18MCkrZTtjb250aW51ZX1lbHNle2Q9aW0oYyxwKXwwO2tbcT4+Ml09KGtbcT4+Ml18MCkrZDtkPXA7ZT1uO2Q9JFIoa1tlPj4yXXwwLGtbZSs0Pj4yXXwwLGtbZD4+Ml18MCxrW2QrND4+Ml18MCl8MDtlPW47a1tlPj4yXT1kO2tbZSs0Pj4yXT1MO2NvbnRpbnVlfX19TGwobCk7dD1rW3Q+PjJdfDA7cz1rW2k+PjJdfDA7a1tzPj4yXT10O3M9ajt0PXM7dD1rW3Q+PjJdfDA7cz1zKzR8MDtzPWtbcz4+Ml18MDtMPXM7cj11O3JldHVybiB0fDB9ZnVuY3Rpb24gb3AoYSxiLGMsZCxlLGYsZyxoKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDt2YXIgaj0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHM9MCx0PTAsdT0wO289cjtyPXIrNDh8MDtqPW8rNDB8MDtsPW8rMzZ8MDt0PW8rMzJ8MDtzPW8rMjh8MDt1PW8rOHwwO3E9bysyNHwwO3A9bysyMHwwO209bysxNnwwO249bztrW2o+PjJdPWE7a1tsPj4yXT1iO2tbdD4+Ml09YztrW3M+PjJdPWQ7Yj11O2tbYj4+Ml09ZTtrW2IrND4+Ml09ZjtrW3E+PjJdPWc7a1twPj4yXT1oO2g9dTtiPWtbaCs0Pj4yXXwwO2E9bjtrW2E+PjJdPWtbaD4+Ml07a1thKzQ+PjJdPWI7YT1uO2E9ZVMoa1thPj4yXXwwLGtbYSs0Pj4yXXwwLDMpfDA7Yj1rW3Q+PjJdfDA7Yj0kUihhfDAsTHwwLGJ8MCwoKGJ8MCk8MCk8PDMxPj4zMXwwKXwwO2E9bjtiPSRSKGtbYT4+Ml18MCxrW2ErND4+Ml18MCxifDAsTHwwKXwwO2E9bjtrW2E+PjJdPWI7a1thKzQ+PjJdPUw7YT1uO2E9ZVMoa1thPj4yXXwwLGtbYSs0Pj4yXXwwLDMpfDA7Yj1rW3M+PjJdfDA7Yj0kUihhfDAsTHwwLGJ8MCwoKGJ8MCk8MCk8PDMxPj4zMXwwKXwwO2E9bjtiPSRSKGtbYT4+Ml18MCxrW2ErND4+Ml18MCxifDAsTHwwKXwwO2E9bjtrW2E+PjJdPWI7a1thKzQ+PjJdPUw7YT1uO2E9ZVMoa1thPj4yXXwwLGtbYSs0Pj4yXXwwLDMpfDA7Yj1rW3E+PjJdfDA7Yj0kUihhfDAsTHwwLGJ8MCwoKGJ8MCk8MCk8PDMxPj4zMXwwKXwwO2E9bjtiPSRSKGtbYT4+Ml18MCxrW2ErND4+Ml18MCxifDAsTHwwKXwwO2E9bjtrW2E+PjJdPWI7a1thKzQ+PjJdPUw7YT1uO2E9ZVMoa1thPj4yXXwwLGtbYSs0Pj4yXXwwLDMpfDA7Yj1rW3A+PjJdfDA7Yj0kUihhfDAsTHwwLGJ8MCwoKGJ8MCk8MCk8PDMxPj4zMXwwKXwwO2E9bjtiPSRSKGtbYT4+Ml18MCxrW2ErND4+Ml18MCxifDAsTHwwKXwwO2E9bjtrW2E+PjJdPWI7a1thKzQ+PjJdPUw7a1ttPj4yXT0wO3doaWxlKDEpe2Y9bjtlPWtbZj4+Ml18MDtmPWtbZis0Pj4yXXwwO2lmKChrW20+PjJdfDApPj0oa1tsPj4yXXwwKSlicmVhazt1PWVTKGV8MCxmfDAsMyl8MDt0PWlbKGtbaj4+Ml18MCkrKGtbbT4+Ml18MCk+PjBdfDA7dD0kUih1fDAsTHwwLHR8MCwoKHR8MCk8MCk8PDMxPj4zMXwwKXwwO3U9bjt0PSRSKGtbdT4+Ml18MCxrW3UrND4+Ml18MCx0fDAsTHwwKXwwO3U9bjtrW3U+PjJdPXQ7a1t1KzQ+PjJdPUw7a1ttPj4yXT0oa1ttPj4yXXwwKSsxfUw9ZjtyPW87cmV0dXJuIGV8MH1mdW5jdGlvbiBwcChhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTAsZT0wLGY9MCxnPTA7ZT1yO3I9cisxNnwwO2I9ZSs4fDA7ZD1lKzR8MDtjPWU7a1tiPj4yXT1hO2tbZD4+Ml09MDtrW2M+PjJdPWtbKGtbYj4+Ml18MCkrMTI+PjJdO2E6ZG8gaWYoIShrW2M+PjJdfDApKWlbKGtbYj4+Ml18MCkrNj4+MF09MTtlbHNlIGRve2lmKCEobFsoa1tiPj4yXXwwKSs3Pj4wXXwwKSlnZShrWyhrW2I+PjJdfDApKzg+PjJdfDApfDA7Ym4oa1tiPj4yXXwwLGtbYz4+Ml18MCxkKTtpWyhrW2I+PjJdfDApKzY+PjBdPWlbKGtbYz4+Ml18MCkrMzI+PjBdfDA7aVsoa1tiPj4yXXwwKSs3Pj4wXT0xO2tbKGtbYj4+Ml18MCkrODg+PjJdPTE7Zz0oa1tjPj4yXXwwKSsyNHwwO2Y9a1tnKzQ+PjJdfDA7YT0oa1tiPj4yXXwwKSszMnwwO2tbYT4+Ml09a1tnPj4yXTtrW2ErND4+Ml09ZjtpZihsWyhrW2I+PjJdfDApKzY+PjBdfDApYnJlYWsgYX13aGlsZSgoWW0oa1tiPj4yXXwwLGQpfDApIT0wKTt3aGlsZSgwKTtpZihrW2Q+PjJdfDApe2c9a1tkPj4yXXwwO3I9ZTtyZXR1cm4gZ3wwfWlmKCEoKGxbKGtbYj4+Ml18MCkrNTI+PjBdfDB8MCk9PTA/KGY9KGtbYj4+Ml18MCkrMzJ8MCxhPWtbZis0Pj4yXXwwLGc9KGtbYj4+Ml18MCkrODB8MCxjPWtbZys0Pj4yXXwwLChhfDApPihjfDApfCgoYXwwKT09KGN8MCk/KGtbZj4+Ml18MCk+Pj4wPihrW2c+PjJdfDApPj4+MDowKSk6MCkpe2lmKCEobFsoa1tiPj4yXXwwKSs1Mj4+MF18MCkpe2c9a1tkPj4yXXwwO3I9ZTtyZXR1cm4gZ3wwfWY9KGtbYj4+Ml18MCkrMzJ8MDthPWtbZis0Pj4yXXwwO2c9KGtbYj4+Ml18MCkrNzJ8MDtjPWtbZys0Pj4yXXwwO2lmKCEoKGF8MCk8KGN8MCl8KChhfDApPT0oY3wwKT8oa1tmPj4yXXwwKT4+PjA8KGtbZz4+Ml18MCk+Pj4wOjApKSl7Zz1rW2Q+PjJdfDA7cj1lO3JldHVybiBnfDB9fWlbKGtbYj4+Ml18MCkrNj4+MF09MTtnPWtbZD4+Ml18MDtyPWU7cmV0dXJuIGd8MH1mdW5jdGlvbiBxcChhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTAsZT0wO2Q9cjtyPXIrMTZ8MDtlPWQrOHwwO2I9ZCs0fDA7Yz1kO2tbZT4+Ml09YTtrW2I+PjJdPWtbZT4+Ml07d2hpbGUoMSl7aWYoIShrW2I+PjJdfDApKWJyZWFrO2lmKChrWyhrW2I+PjJdfDApKzEyPj4yXXwwKT09MD8oa1soa1tiPj4yXXwwKSsxNj4+Ml18MCk9PTA6MClicmVhazthPWtbYj4+Ml18MDtpZihrWyhrW2I+PjJdfDApKzEyPj4yXXwwKWE9a1thKzEyPj4yXXwwO2Vsc2UgYT1rW2ErMTY+PjJdfDA7a1tiPj4yXT1hfWE6d2hpbGUoMSl7aWYoIShrW2I+PjJdfDApKWJyZWFrO2tbYz4+Ml09a1soa1tiPj4yXXwwKSs4Pj4yXTtRcChrW2I+PjJdfDApO2lmKCgoa1tjPj4yXXwwKSE9MD8oa1tiPj4yXXwwKT09KGtbKGtbYz4+Ml18MCkrMTI+PjJdfDApOjApPyhrWyhrW2M+PjJdfDApKzE2Pj4yXXwwKSE9MDowKXtrW2I+PjJdPWtbKGtbYz4+Ml18MCkrMTY+PjJdO3doaWxlKDEpe2lmKCEoa1tiPj4yXXwwKSljb250aW51ZSBhO2lmKChrWyhrW2I+PjJdfDApKzEyPj4yXXwwKT09MD8oa1soa1tiPj4yXXwwKSsxNj4+Ml18MCk9PTA6MCljb250aW51ZSBhO2E9a1tiPj4yXXwwO2lmKGtbKGtbYj4+Ml18MCkrMTI+PjJdfDApYT1rW2ErMTI+PjJdfDA7ZWxzZSBhPWtbYSsxNj4+Ml18MDtrW2I+PjJdPWF9fWtbYj4+Ml09a1tjPj4yXX1yPWQ7cmV0dXJufWZ1bmN0aW9uIHJwKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MDtoPXI7cj1yKzMyfDA7ZD1oKzh8MDtlPWgrMjB8MDtmPWg7Zz1oKzE2fDA7a1tlPj4yXT1hO2E9ZjtrW2E+PjJdPWI7a1thKzQ+PjJdPWM7aWYoKGtbZT4+Ml18MCkhPTA/KGE9YmYoa1tlPj4yXXwwKXwwLGtbZz4+Ml09YSwoa1tnPj4yXXwwKT09MSk6MCl7YT1uZShrW2U+PjJdfDApfDA7Zz1kO2tbZz4+Ml09YTtrW2crND4+Ml09TDtnPWQ7YT1nO2E9a1thPj4yXXwwO2c9Zys0fDA7Zz1rW2c+PjJdfDA7TD1nO3I9aDtyZXR1cm4gYXwwfWE9a1tmKzQ+PjJdfDA7Zz1kO2tbZz4+Ml09a1tmPj4yXTtrW2crND4+Ml09YTtnPWQ7YT1nO2E9a1thPj4yXXwwO2c9Zys0fDA7Zz1rW2c+PjJdfDA7TD1nO3I9aDtyZXR1cm4gYXwwfWZ1bmN0aW9uIHNwKGEsYixjLGQsZSxmLGcsaCxpLGope2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2k9aXwwO2o9anwwO3ZhciBsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wO3M9cjtyPXIrNjR8MDtxPXMrOHwwO3A9czt6PXMrNTJ8MDt5PXMrNDh8MDt4PXMrNDR8MDt3PXMrNDB8MDt2PXMrMzZ8MDt1PXMrMzJ8MDtsPXMrMjh8MDt0PXMrMjR8MDttPXMrMjB8MDtuPXMrMTZ8MDtvPXMrMTJ8MDtrW3o+PjJdPWE7a1t5Pj4yXT1iO2tbeD4+Ml09YztrW3c+PjJdPWQ7a1t2Pj4yXT1lO2tbdT4+Ml09ZjtrW2w+PjJdPWc7a1t0Pj4yXT1oO2tbbT4+Ml09aTtrW24+PjJdPWo7Zz1FcChrW3o+PjJdfDAsa1t5Pj4yXXwwLGtbeD4+Ml18MCxrW3c+PjJdfDAsa1t2Pj4yXXwwLGtbdT4+Ml18MCxrW2w+PjJdfDAsa1t0Pj4yXXwwLGtbbT4+Ml18MCl8MDtrW28+PjJdPWc7aWYoKChrW28+PjJdfDApPT0wPyhrW2tbbT4+Ml0+PjJdfDApIT0wOjApPyh6PUZwKGtbbT4+Ml18MCwxMil8MCxrW28+PjJdPXosKGtbbz4+Ml18MCk9PTApOjApe3o9R3Aoa1trW20+PjJdPj4yXXwwLDEyKXwwO2tbbz4+Ml09en1pZighKGtbbz4+Ml18MCkpe3o9a1tvPj4yXXwwO3I9cztyZXR1cm4genwwfXFwKGtba1ttPj4yXT4+Ml18MCk7a1trW20+PjJdPj4yXT0wO2lmKChrW28+PjJdfDApPT0xOCl7ej1rW24+PjJdfDA7a1twPj4yXT0xMjtQayh6LDIzNzIzLHApO2tbbz4+Ml09MTt6PWtbbz4+Ml18MDtyPXM7cmV0dXJuIHp8MH1pZigoa1tvPj4yXXwwKSE9MSl7ej1rW28+PjJdfDA7cj1zO3JldHVybiB6fDB9ej1rW24+PjJdfDA7a1txPj4yXT1rW2w+PjJdO1BrKHosMjM3NzUscSk7ej1rW28+PjJdfDA7cj1zO3JldHVybiB6fDB9ZnVuY3Rpb24gdHAoYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wLGU9MCxmPTAsZz0wLGg9MCxpPTAsaj0wLG09MCxuPTA7bT1yO3I9cis0OHwwO2I9bSszNnwwO249bSszMnwwO2o9bSsyOHwwO2c9bSsyNHwwO2Y9bSsyMHwwO2M9bSsxNnwwO2Q9bSsxMnwwO2U9bSs4fDA7aD1tKzR8MDtpPW07a1tiPj4yXT1hO2tbbj4+Ml09a1trW2I+PjJdPj4yXTtrW2o+PjJdPTA7a1tnPj4yXT0wO2tbZj4+Ml09MDt1cChrW2I+PjJdfDAsa1soa1tiPj4yXXwwKSsxMj4+Ml18MCxnLGYsaik7ZG8gaWYoKGtbaj4+Ml18MCk9PTAmKGtbZz4+Ml18MCk+MT8obFsoa1tuPj4yXXwwKSsyMjg+PjBdfDB8MCkhPTA6MCl7bj1TZCgoKGtbZz4+Ml18MCkqMjR8MCkrKGtbZj4+Ml08PDI8PDEpfDApfDA7a1tjPj4yXT1uO2tbZD4+Ml09KGtbYz4+Ml18MCkrKChrW2c+PjJdfDApKjI0fDApO2lmKCEoa1tjPj4yXXwwKSl7a1tqPj4yXT03O2JyZWFrfWtbaD4+Ml09a1tjPj4yXTtrW2k+PjJdPWtbZD4+Ml07dnAoa1tiPj4yXXwwLDAsa1soa1tiPj4yXXwwKSsxMj4+Ml18MCxoLGksaik7a1tnPj4yXT0oKGtbaD4+Ml18MCktKGtbYz4+Ml18MCl8MCkvMjR8MDtrW2Y+PjJdPSgoa1tpPj4yXXwwKS0oa1tkPj4yXXwwKXwwKS80fDA7YTpkbyBpZighKGtbaj4+Ml18MCkpe249d3Aoa1tiPj4yXXwwLDAsa1tjPj4yXXwwLGtbZz4+Ml18MCl8MDtrW2o+PjJdPW47a1tlPj4yXT0wO3doaWxlKDEpe2lmKGtbaj4+Ml18MClicmVhayBhO2lmKChrW2U+PjJdfDApPj0oa1tmPj4yXXwwKSlicmVhayBhO249d3Aoa1tiPj4yXXwwLGtbKGtbZD4+Ml18MCkrKGtbZT4+Ml08PDIpPj4yXXwwLGtbYz4+Ml18MCxrW2c+PjJdfDApfDA7a1tqPj4yXT1uO2tbZT4+Ml09KGtbZT4+Ml18MCkrMX19d2hpbGUoMCk7VWQoa1tjPj4yXXwwKX13aGlsZSgwKTt4cChrW2I+PjJdfDAsa1soa1tiPj4yXXwwKSsxMj4+Ml18MCxqKTtyPW07cmV0dXJuIGtbaj4+Ml18MH1mdW5jdGlvbiB1cChhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxpPTAsaj0wLGw9MCxtPTAsbj0wLG89MCxwPTA7cD1yO3I9cis0OHwwO2Y9cCszMnwwO209cCsyOHwwO2c9cCsyNHwwO2g9cCsyMHwwO249cCsxNnwwO2k9cCsxMnwwO2o9cCs4fDA7bD1wKzR8MDtvPXA7a1tmPj4yXT1hO2tbbT4+Ml09YjtrW2c+PjJdPWM7a1toPj4yXT1kO2tbbj4+Ml09ZTtpZighKGtbbT4+Ml18MCkpe3I9cDtyZXR1cm59aWYoa1trW24+PjJdPj4yXXwwKXtyPXA7cmV0dXJufWE9a1ttPj4yXXwwO2lmKChrW2tbbT4+Ml0+PjJdfDApIT01KXtvPWtbaD4+Ml18MDtrW28+PjJdPShrW28+PjJdfDApKygoa1thPj4yXXwwKT09NCYxKTt1cChrW2Y+PjJdfDAsa1soa1ttPj4yXXwwKSsxMj4+Ml18MCxrW2c+PjJdfDAsa1toPj4yXXwwLGtbbj4+Ml18MCk7dXAoa1tmPj4yXXwwLGtbKGtbbT4+Ml18MCkrMTY+PjJdfDAsa1tnPj4yXXwwLGtbaD4+Ml18MCxrW24+PjJdfDApO3I9cDtyZXR1cm59a1tqPj4yXT1rWyhrW2ErMjA+PjJdfDApKzY0Pj4yXTtoPWtbZz4+Ml18MDtrW2g+PjJdPShrW2g+PjJdfDApKyhrW2o+PjJdfDApO2tbaT4+Ml09MDt3aGlsZSgxKXtpZigoa1tpPj4yXXwwKT49KGtbaj4+Ml18MCkpe2E9OTticmVha31rW2w+PjJdPShrWyhrW20+PjJdfDApKzIwPj4yXXwwKSs3MisoKGtbaT4+Ml18MCkqMjR8MCk7aD1DcChrW2Y+PjJdfDAsa1trW2w+PjJdPj4yXXwwLGtbKGtbbD4+Ml18MCkrND4+Ml18MCxrWyhrW2w+PjJdfDApKzg+PjJdfDAsKGtbbD4+Ml18MCkrMjB8MCl8MDtrW28+PjJdPWg7aWYoa1tvPj4yXXwwKXthPTc7YnJlYWt9a1tpPj4yXT0oa1tpPj4yXXwwKSsxfWlmKChhfDApPT03KXtrW2tbbj4+Ml0+PjJdPWtbbz4+Ml07cj1wO3JldHVybn1lbHNlIGlmKChhfDApPT05KXtrWyhrWyhrW20+PjJdfDApKzIwPj4yXXwwKSs0ND4+Ml09LTE7cj1wO3JldHVybn19ZnVuY3Rpb24gdnAoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGk9MCxqPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTA7cT1yO3I9cis0OHwwO2o9cSszMnwwO2w9cSsyOHwwO209cSsyNHwwO249cSsyMHwwO289cSsxNnwwO3A9cSsxMnwwO2g9cSs4fDA7Zz1xKzR8MDtpPXE7a1tqPj4yXT1hO2tbbD4+Ml09YjtrW20+PjJdPWM7a1tuPj4yXT1kO2tbbz4+Ml09ZTtrW3A+PjJdPWY7aWYoa1trW3A+PjJdPj4yXXwwKXtyPXE7cmV0dXJufWM9a1ttPj4yXXwwO2lmKChrW2tbbT4+Ml0+PjJdfDApPT01KXtrW2g+PjJdPWtbYysyMD4+Ml07a1tnPj4yXT0wO3doaWxlKDEpe2lmKGtba1twPj4yXT4+Ml18MCl7YT0xMzticmVha31pZigoa1tnPj4yXXwwKT49KGtbKGtbaD4+Ml18MCkrNjQ+PjJdfDApKXthPTEzO2JyZWFrfW09a1tuPj4yXXwwO289a1ttPj4yXXwwO2tbbT4+Ml09bysyNDtrW2k+PjJdPW87a1trW2k+PjJdPj4yXT1rW2g+PjJdO2tbKGtbaT4+Ml18MCkrND4+Ml09a1tnPj4yXTtrWyhrW2k+PjJdfDApKzEyPj4yXT1rW2w+PjJdO2tbKGtbaT4+Ml18MCkrOD4+Ml09KGtbaD4+Ml18MCkrNzIrKChrW2c+PjJdfDApKjI0fDApO2tbKGtbaT4+Ml18MCkrMjA+PjJdPWtbKGtbaD4+Ml18MCkrNjg+PjJdO289QnAoa1tqPj4yXXwwLGtbKGtbKGtbaT4+Ml18MCkrOD4+Ml18MCkrMjA+PjJdfDAsKGtbaT4+Ml18MCkrMTZ8MCl8MDtrW2tbcD4+Ml0+PjJdPW87a1tnPj4yXT0oa1tnPj4yXXwwKSsxfWlmKChhfDApPT0xMyl7cj1xO3JldHVybn19aWYoKGtbYz4+Ml18MCk9PTIpe3I9cTtyZXR1cm59aWYoKGtba1ttPj4yXT4+Ml18MCk9PTQpe2tbbD4+Ml09a1soa1ttPj4yXXwwKSsxMj4+Ml07a1trW2tbbz4+Ml0+PjJdPj4yXT1rW2w+PjJdO2k9a1tvPj4yXXwwO2tbaT4+Ml09KGtbaT4+Ml18MCkrNH12cChrW2o+PjJdfDAsa1tsPj4yXXwwLGtbKGtbbT4+Ml18MCkrMTI+PjJdfDAsa1tuPj4yXXwwLGtbbz4+Ml18MCxrW3A+PjJdfDApO2lmKChrW2tbbT4+Ml0+PjJdfDApPT00KXtrW2w+PjJdPWtbKGtbbT4+Ml18MCkrMTY+PjJdO2tba1trW28+PjJdPj4yXT4+Ml09a1tsPj4yXTtpPWtbbz4+Ml18MDtrW2k+PjJdPShrW2k+PjJdfDApKzR9dnAoa1tqPj4yXXwwLGtbbD4+Ml18MCxrWyhrW20+PjJdfDApKzE2Pj4yXXwwLGtbbj4+Ml18MCxrW28+PjJdfDAsa1twPj4yXXwwKTtyPXE7cmV0dXJufWZ1bmN0aW9uIHdwKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaT0wLGo9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTA7Qj1yO3I9cis4MHwwO2U9Qis3NnwwO2Y9Qis3MnwwO2c9Qis2OHwwO2g9Qis2NHwwO2k9Qis2MHwwO3c9Qis1NnwwO249Qis1MnwwO3o9Qis0OHwwO2w9Qis0NHwwO3M9Qis0MHwwO3Q9QiszNnwwO3E9QiszMnwwO3A9QisyOHwwO2o9QisyNHwwO3Y9QisyMHwwO3g9QisxNnwwO3k9QisxMnwwO289Qis4fDA7dT1CKzR8MDttPUI7a1tmPj4yXT1hO2tbZz4+Ml09YjtrW2g+PjJdPWM7a1tpPj4yXT1kO2tbdz4+Ml09a1trW2Y+PjJdPj4yXTtrW24+PjJdPTA7a1t6Pj4yXT0wO2tbcz4+Ml09MDtrW3Q+PjJdPTA7a1txPj4yXT0wO2tbcD4+Ml09MTtpZihrWyhrW3c+PjJdfDApKzQwPj4yXXwwKXtrW2U+PjJdPTA7QT1rW2U+PjJdfDA7cj1CO3JldHVybiBBfDB9a1tsPj4yXT0wO3doaWxlKDEpe2lmKChrW2w+PjJdfDApPj0oa1tpPj4yXXwwKSlicmVhaztpZigoa1soa1toPj4yXXwwKSsoKGtbbD4+Ml18MCkqMjR8MCkrMTI+PjJdfDApPT0oa1tnPj4yXXwwKSl7a1tzPj4yXT0oa1tzPj4yXXwwKSsoa1soa1toPj4yXXwwKSsoKGtbbD4+Ml18MCkqMjR8MCkrMTY+PjJdfDApO2tbdD4+Ml09KGtbdD4+Ml18MCkrMX1rW2w+PjJdPShrW2w+PjJdfDApKzF9aWYoKGtbcz4+Ml18MCk9PTB8KGtbdD4+Ml18MCk8Mil7a1tlPj4yXT0wO0E9a1tlPj4yXXwwO3I9QjtyZXR1cm4gQXwwfWI9eXAoa1tmPj4yXXwwLG4pfDA7a1t6Pj4yXT1iO2tbbD4+Ml09MDt3aGlsZSgxKXtpZighKChrW2w+PjJdfDApPChrW3Q+PjJdfDApPyhrW3o+PjJdfDApPT0wOjApKWJyZWFrO2tbdj4+Ml09MDtrW2o+PjJdPTA7d2hpbGUoMSl7aWYoKGtbaj4+Ml18MCk+PShrW2k+PjJdfDApKWJyZWFrO2RvIGlmKChrWyhrW2g+PjJdfDApKygoa1tqPj4yXXwwKSoyNHwwKSs4Pj4yXXwwKSE9MD8oa1soa1toPj4yXXwwKSsoKGtbaj4+Ml18MCkqMjR8MCkrMTI+PjJdfDApPT0oa1tnPj4yXXwwKTowKXtpZigoa1t2Pj4yXXwwKSE9MD8oa1soa1toPj4yXXwwKSsoKGtbaj4+Ml18MCkqMjR8MCkrMTY+PjJdfDApPj0oa1soa1t2Pj4yXXwwKSsxNj4+Ml18MCk6MClicmVhaztrW3Y+PjJdPShrW2g+PjJdfDApKygoa1tqPj4yXXwwKSoyNHwwKX13aGlsZSgwKTtrW2o+PjJdPShrW2o+PjJdfDApKzF9aWYoKGtbbD4+Ml18MCkhPTA/KGtbKGtbdj4+Ml18MCkrMTY+PjJdfDApPj0oaGEoKChrW3E+PjJdfDApKygoa1twPj4yXXwwKS80fDApLTF8MCkvKChrW3A+PjJdfDApLzR8MHwwKXwwLGtbbj4+Ml18MCl8MCk6MCl7a1t4Pj4yXT1rWyhrW3Y+PjJdfDApKzg+PjJdO2I9enAoa1tmPj4yXXwwLGtbeD4+Ml18MCxrWyhrW3Y+PjJdfDApKzIwPj4yXXwwKXwwO2tbej4+Ml09Yjt5bihrWyhrW3g+PjJdfDApKzIwPj4yXXwwKTtrWyhrW3g+PjJdfDApKzIwPj4yXT0wfWVsc2UgQT0yMztkbyBpZigoQXwwKT09MjMpe0E9MDtpZigoa1tsPj4yXXwwKTwxMilrW3A+PjJdPWtbcD4+Ml08PDI7aWYoa1tsPj4yXXwwKXtpZigoa1soa1trW3Y+PjJdPj4yXXwwKSs2ND4+Ml18MCk8PTEpYnJlYWs7aWYoKGtbbD4+Ml18MCk9PSgoa1t0Pj4yXXwwKS0xfDApKWJyZWFrfWtbeT4+Ml09a1soa1t2Pj4yXXwwKSs4Pj4yXTtrW28+PjJdPTA7a1t1Pj4yXT0wO2I9cm4oa1t3Pj4yXXwwLGtbeT4+Ml18MCxrWyhrW3Y+PjJdfDApKzIwPj4yXXwwLG8sdSl8MDtrW3o+PjJdPWI7aWYoIShrW3o+PjJdfDApKXtiPXNuKGtbdz4+Ml18MCxrW2tbdj4+Ml0+PjJdfDAsa1soa1t2Pj4yXXwwKSs0Pj4yXXwwLGtbdT4+Ml18MCxrW28+PjJdfDApfDA7a1t6Pj4yXT1ifWlmKCEoa1t6Pj4yXXwwKSl7Yj1BcChrW2tba1t2Pj4yXT4+Ml0+PjJdfDAsa1soa1trW3Y+PjJdPj4yXXwwKSs0Pj4yXXwwKXwwO2tbbT4+Ml09YjtpZigoa1tsPj4yXXwwKSE9MD8oa1ttPj4yXXwwKT49KGtbcT4+Ml18MCk6MClicmVhaztrW3E+PjJdPWtbbT4+Ml19fXdoaWxlKDApO2tbKGtbdj4+Ml18MCkrOD4+Ml09MDtrW2w+PjJdPShrW2w+PjJdfDApKzF9a1tlPj4yXT1rW3o+PjJdO0E9a1tlPj4yXXwwO3I9QjtyZXR1cm4gQXwwfWZ1bmN0aW9uIHhwKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTA7aj1yO3I9ciszMnwwO2Q9aisxNnwwO2g9aisxMnwwO2U9ais4fDA7Zz1qKzR8MDtmPWo7a1tkPj4yXT1hO2tbaD4+Ml09YjtrW2U+PjJdPWM7aWYoIShrW2g+PjJdfDApKXtyPWo7cmV0dXJufWlmKGtba1tlPj4yXT4+Ml18MCl7cj1qO3JldHVybn1pZigoa1trW2g+PjJdPj4yXXwwKSE9NSl7eHAoa1tkPj4yXXwwLGtbKGtbaD4+Ml18MCkrMTI+PjJdfDAsa1tlPj4yXXwwKTt4cChrW2Q+PjJdfDAsa1soa1toPj4yXXwwKSsxNj4+Ml18MCxrW2U+PjJdfDApO2lmKGxbKGtbKGtbaD4+Ml18MCkrMTI+PjJdfDApKzM0Pj4wXXwwKWQ9KGxbKGtbKGtbaD4+Ml18MCkrMTY+PjJdfDApKzM0Pj4wXXwwfDApIT0wO2Vsc2UgZD0wO2lbKGtbaD4+Ml18MCkrMzQ+PjBdPWQmMTtyPWo7cmV0dXJufWtbZz4+Ml09a1soa1soa1toPj4yXXwwKSsyMD4+Ml18MCkrNjQ+PjJdO2lmKGtbZz4+Ml18MCl7a1tmPj4yXT0wO3doaWxlKDEpe2lmKChrW2Y+PjJdfDApPj0oa1tnPj4yXXwwKSlicmVhaztpZighKGtbKGtbKGtbaD4+Ml18MCkrMjA+PjJdfDApKzcyKygoa1tmPj4yXXwwKSoyNHwwKSsxNj4+Ml18MCkpYnJlYWs7a1tmPj4yXT0oa1tmPj4yXXwwKSsxfWlbKGtbaD4+Ml18MCkrMzQ+PjBdPShrW2Y+PjJdfDApPT0oa1tnPj4yXXwwKX1oPW9uKGtbZD4+Ml18MCwxLGtbKGtbaD4+Ml18MCkrMjA+PjJdfDApfDA7a1trW2U+PjJdPj4yXT1oO3I9ajtyZXR1cm59ZnVuY3Rpb24geXAoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTAsaT0wLGo9MCxsPTAsbT0wLG49MDtuPXI7cj1yKzQ4fDA7Yz1uKzQ0fDA7ZD1uKzQwfDA7ZT1uKzM2fDA7bT1uKzMyfDA7aT1uKzI4fDA7bD1uKzI0fDA7aD1uKzh8MDtnPW47aj1uKzIwfDA7Zj1uKzE2fDA7a1tkPj4yXT1hO2tbZT4+Ml09YjtpZighKGtbKGtbZD4+Ml18MCkrNjA+PjJdfDApKXtrW2k+PjJdPWtba1tkPj4yXT4+Ml07Yj1oO2tbYj4+Ml09MDtrW2IrND4+Ml09MDtiPWc7a1tiPj4yXT0wO2tbYis0Pj4yXT0wO2I9Wm4oa1tpPj4yXXwwLGwpfDA7a1ttPj4yXT1iO2lmKGtbbT4+Ml18MCl7a1tjPj4yXT1rW20+PjJdO209a1tjPj4yXXwwO3I9bjtyZXR1cm4gbXwwfWI9SmUoa1tsPj4yXXwwLDApfDA7a1tmPj4yXT1iO2I9S2Uoa1tsPj4yXXwwLDApfDA7a1tqPj4yXT0oa1tmPj4yXXwwKStiO2I9aW0oa1tmPj4yXXwwLGgpfDA7a1tmPj4yXT0oa1tmPj4yXXwwKStiO3doaWxlKDEpe2lmKChrW2Y+PjJdfDApPj4+MD49KGtbaj4+Ml18MCk+Pj4wKWJyZWFrO2I9aW0oa1tmPj4yXXwwLGcpfDA7a1tmPj4yXT0oa1tmPj4yXXwwKStifWo9aDtiPWc7aWYoKGtbaj4+Ml18MCk9PTAmKGtbais0Pj4yXXwwKT09MHwoa1tiPj4yXXwwKT09MCYoa1tiKzQ+PjJdfDApPT0wKXtnZShrW2w+PjJdfDApfDA7a1tjPj4yXT0yNjc7bT1rW2M+PjJdfDA7cj1uO3JldHVybiBtfDB9YT1oO2I9a1thKzQ+PjJdfDA7aj0oa1tkPj4yXXwwKSs2NHwwO2tbaj4+Ml09a1thPj4yXTtrW2orND4+Ml09YjtqPWc7Yj1oO2I9aVMoa1tqPj4yXXwwLGtbais0Pj4yXXwwLGtbYj4+Ml18MCxrW2IrND4+Ml18MCl8MDtqPWtbKGtbaT4+Ml18MCkrMjM2Pj4yXXwwO2o9JFIoYnwwLEx8MCxqfDAsKChqfDApPDApPDwzMT4+MzF8MCl8MDtiPWtbKGtbaT4+Ml18MCkrMjM2Pj4yXXwwO2I9aVMoanwwLEx8MCxifDAsKChifDApPDApPDwzMT4+MzF8MCl8MDtrWyhrW2Q+PjJdfDApKzYwPj4yXT1iO2I9Z2Uoa1tsPj4yXXwwKXwwO2tbbT4+Ml09YjtpZihrW20+PjJdfDApe2tbYz4+Ml09a1ttPj4yXTttPWtbYz4+Ml18MDtyPW47cmV0dXJuIG18MH19a1trW2U+PjJdPj4yXT1rWyhrW2Q+PjJdfDApKzYwPj4yXTtrW2M+PjJdPTA7bT1rW2M+PjJdfDA7cj1uO3JldHVybiBtfDB9ZnVuY3Rpb24genAoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGk9MDtpPXI7cj1yKzMyfDA7ZD1pKzE2fDA7ZT1pKzEyfDA7Zj1pKzh8MDtnPWkrNHwwO2g9aTtrW2U+PjJdPWE7a1tmPj4yXT1iO2tbZz4+Ml09YztiPVNkKDE2KXwwO2tbaD4+Ml09YjtpZihrW2g+PjJdfDApe2I9a1toPj4yXXwwO2tbYj4+Ml09MDtrW2IrND4+Ml09MDtrW2IrOD4+Ml09MDtrW2IrMTI+PjJdPTA7a1trW2g+PjJdPj4yXT1rW2Y+PjJdO2tbKGtbaD4+Ml18MCkrOD4+Ml09a1soa1tlPj4yXXwwKSsyND4+Ml07a1soa1toPj4yXXwwKSs0Pj4yXT1rW2c+PjJdO2tbKGtbZT4+Ml18MCkrMjQ+PjJdPWtbaD4+Ml07a1soa1tmPj4yXXwwKSsxNj4+Ml09a1toPj4yXTtrW2Q+PjJdPTA7Yj1rW2Q+PjJdfDA7cj1pO3JldHVybiBifDB9ZWxzZXtrW2Q+PjJdPTc7Yj1rW2Q+PjJdfDA7cj1pO3JldHVybiBifDB9cmV0dXJuIDB9ZnVuY3Rpb24gQXAoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTA7aD1yO3I9ciszMnwwO2M9aCsxNnwwO2Q9aCsxMnwwO2Y9aCs4fDA7ZT1oKzR8MDtnPWg7a1tjPj4yXT1hO2tbZD4+Ml09YjtrW2Y+PjJdPTA7aWYoIShrW2M+PjJdfDApKXtnPWtbZj4+Ml18MDtyPWg7cmV0dXJuIGd8MH1rW2U+PjJdPShrW2M+PjJdfDApKyhrW2Q+PjJdfDApO2tbZz4+Ml09a1tjPj4yXTt3aGlsZSgxKXtpZigoa1tnPj4yXXwwKT4+PjA+PShrW2U+PjJdfDApPj4+MClicmVhaztrW2Y+PjJdPShrW2Y+PjJdfDApKzE7ZG97Yj1rW2c+PjJdfDA7a1tnPj4yXT1iKzF9d2hpbGUoKGlbYj4+MF0mMTI4fDApIT0wKTtubSgwLGcpfWc9a1tmPj4yXXwwO3I9aDtyZXR1cm4gZ3wwfWZ1bmN0aW9uIEJwKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxpPTAsaj0wLG09MCxuPTAsbz0wLHA9MCxxPTA7cD1yO3I9cis0OHwwO3E9cCs0NHwwO2Q9cCs0MHwwO209cCszNnwwO2g9cCszMnwwO249cCsyOHwwO2U9cCsyNHwwO289cCsyMHwwO2o9cCsxNnwwO2k9cCsxMnwwO2Y9cDtnPXArOHwwO2tbcT4+Ml09YTtrW2Q+PjJdPWI7a1ttPj4yXT1jO2tbaD4+Ml09a1trW3E+PjJdPj4yXTtrW24+PjJdPTA7a1tvPj4yXT0wO2tbaj4+Ml09a1soa1toPj4yXXwwKSsyMzY+PjJdO2tbZT4+Ml09MDt3aGlsZSgxKXtpZihrW28+PjJdfDApe2Q9MTM7YnJlYWt9aWYoKGtbZT4+Ml18MCk+PShrWyhrW2Q+PjJdfDApKzQ+PjJdfDApKXtkPTEzO2JyZWFrfWtbaT4+Ml09a1soa1trW2Q+PjJdPj4yXXwwKSsoa1tlPj4yXTw8Mik+PjJdO2E6ZG8gaWYoKGtbKGtbaT4+Ml18MCkrNTY+PjJdfDApPT0wPyhsWyhrW2k+PjJdfDApKzU+PjBdfDB8MCk9PTA6MCl7Yj0oa1tpPj4yXXwwKSs4fDA7Yz1rW2IrND4+Ml18MDtxPWY7a1txPj4yXT1rW2I+PjJdO2tbcSs0Pj4yXT1jO3doaWxlKDEpe2M9ZjthPWtbYys0Pj4yXXwwO3E9KGtbaT4+Ml18MCkrMTZ8MDtiPWtbcSs0Pj4yXXwwO2lmKCEoKGF8MCk8KGJ8MCl8KChhfDApPT0oYnwwKT8oa1tjPj4yXXwwKT4+PjA8PShrW3E+PjJdfDApPj4+MDowKSkpYnJlYWsgYTtxPWY7cT1xbShrW2g+PjJdfDAsa1txPj4yXXwwLGtbcSs0Pj4yXXwwLDAsZywwKXwwO2tbbz4+Ml09cTtpZihrW28+PjJdfDApYnJlYWsgYTtpZigoKGtbZz4+Ml18MCkrMzV8MCk+KGtbaj4+Ml18MCkpa1tuPj4yXT0oa1tuPj4yXXwwKSsoKChrW2c+PjJdfDApKzM0fDApLyhrW2o+PjJdfDApfDApO2M9ZjtjPSRSKGtbYz4+Ml18MCxrW2MrND4+Ml18MCwxLDApfDA7cT1mO2tbcT4+Ml09YztrW3ErND4+Ml09TH19d2hpbGUoMCk7a1tlPj4yXT0oa1tlPj4yXXwwKSsxfWlmKChkfDApPT0xMyl7a1trW20+PjJdPj4yXT1rW24+PjJdO3I9cDtyZXR1cm4ga1tvPj4yXXwwfXJldHVybiAwfWZ1bmN0aW9uIENwKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGk9MCxqPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTA7cT1yO3I9cis0OHwwO2Y9cSszNnwwO2c9cSszMnwwO2g9cSsyOHwwO2k9cSsyNHwwO2o9cSsyMHwwO289cSsxNnwwO3A9cSsxMnwwO209cSs4fDA7bD1xKzR8MDtuPXE7a1tmPj4yXT1hO2tbZz4+Ml09YjtrW2g+PjJdPWM7a1tpPj4yXT1kO2tbaj4+Ml09ZTtrW3A+PjJdPTc7Yj1TZCg1Nil8MDtrW28+PjJdPWI7aWYoIShrW28+PjJdfDApKXtlPWtbbz4+Ml18MDtiPWtbaj4+Ml18MDtrW2I+PjJdPWU7Yj1rW3A+PjJdfDA7cj1xO3JldHVybiBifDB9a1tsPj4yXT0wO2tbbj4+Ml09a1trW2Y+PjJdPj4yXTthOmRvIGlmKGtbaT4+Ml18MCl7a1ttPj4yXT0xO3doaWxlKDEpe2lmKGtbbD4+Ml18MClicmVhaztpZigoa1ttPj4yXXwwKT49KGtbKGtbbj4+Ml18MCkrMjQ4Pj4yXXwwKSlicmVhaztpZigoa1soa1soa1tuPj4yXXwwKSsyNTI+PjJdfDApKygoa1ttPj4yXXwwKSoyNHwwKT4+Ml18MCk9PShrW2g+PjJdfDApKXtrW2w+PjJdPTE7Yj1BbChrW24+PjJdfDAsa1soa1tmPj4yXXwwKSsxNj4+Ml18MCxrW20+PjJdfDAsLTIsa1tnPj4yXXwwLGtbaD4+Ml18MCwwLDAsa1tvPj4yXXwwKXwwO2tbcD4+Ml09YjtrWyhrW28+PjJdfDApKzM2Pj4yXT0xfWtbbT4+Ml09KGtbbT4+Ml18MCkrMX1rW20+PjJdPTE7d2hpbGUoMSl7aWYoa1tsPj4yXXwwKWJyZWFrIGE7aWYoKGtbbT4+Ml18MCk+PShrWyhrW24+PjJdfDApKzI0OD4+Ml18MCkpYnJlYWsgYTtpZigoa1soa1soa1tuPj4yXXwwKSsyNTI+PjJdfDApKygoa1ttPj4yXXwwKSoyNHwwKT4+Ml18MCk9PSgoa1toPj4yXXwwKSsxfDApPyhrW2w+PjJdPTEsYj1BbChrW24+PjJdfDAsa1soa1tmPj4yXXwwKSsxNj4+Ml18MCxrW20+PjJdfDAsLTIsa1tnPj4yXXwwLGtbaD4+Ml18MCwxLDAsa1tvPj4yXXwwKXwwLGtbcD4+Ml09Yiwoa1twPj4yXXwwKT09MCk6MCl7Yj1EcChrW24+PjJdfDAsa1soa1tmPj4yXXwwKSsxNj4+Ml18MCxrW2c+PjJdfDAsa1toPj4yXXwwLGtbbz4+Ml18MCl8MDtrW3A+PjJdPWJ9a1ttPj4yXT0oa1ttPj4yXXwwKSsxfX13aGlsZSgwKTtpZihrW2w+PjJdfDApe2U9a1tvPj4yXXwwO2I9a1tqPj4yXXwwO2tbYj4+Ml09ZTtiPWtbcD4+Ml18MDtyPXE7cmV0dXJuIGJ8MH1lPUFsKGtbbj4+Ml18MCxrWyhrW2Y+PjJdfDApKzE2Pj4yXXwwLDAsLTIsa1tnPj4yXXwwLGtbaD4+Ml18MCxrW2k+PjJdfDAsMCxrW28+PjJdfDApfDA7a1twPj4yXT1lO2tbKGtbbz4+Ml18MCkrMzY+PjJdPSgoa1tpPj4yXXwwKSE9MF4xKSYxO2U9a1tvPj4yXXwwO2I9a1tqPj4yXXwwO2tbYj4+Ml09ZTtiPWtbcD4+Ml18MDtyPXE7cmV0dXJuIGJ8MH1mdW5jdGlvbiBEcChhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxpPTAsaj0wLGw9MDtmPXI7cj1yKzMyfDA7bD1mKzE2fDA7aj1mKzEyfDA7aT1mKzh8MDtoPWYrNHwwO2c9ZjtrW2w+PjJdPWE7a1tqPj4yXT1iO2tbaT4+Ml09YztrW2g+PjJdPWQ7a1tnPj4yXT1lO2M9dG0oa1tsPj4yXXwwLGtbaj4+Ml18MCwwLC0yLGtbaT4+Ml18MCxrW2g+PjJdfDAsMCwwLGtbZz4+Ml18MCl8MDtyPWY7cmV0dXJuIGN8MH1mdW5jdGlvbiBFcChhLGIsYyxkLGUsZixnLGgsaSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aT1pfDA7dmFyIGo9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTA7eT1yO3I9cis5NnwwO2o9eSs4MHwwO2w9eSs3NnwwO209eSs3MnwwO249eSs2OHwwO289eSs2NHwwO3A9eSs2MHwwO3E9eSs1NnwwO3M9eSs1MnwwO3Q9eSs0OHwwO3U9eSs0NHwwO3Y9eSs0MHwwO3c9eSszNnwwO3g9eTtrW2w+PjJdPWE7a1ttPj4yXT1iO2tbbj4+Ml09YztrW28+PjJdPWQ7a1twPj4yXT1lO2tbcT4+Ml09ZjtrW3M+PjJdPWc7a1t0Pj4yXT1oO2tbdT4+Ml09aTtjPXg7ZD1jKzM2fDA7ZG97a1tjPj4yXT0wO2M9Yys0fDB9d2hpbGUoKGN8MCk8KGR8MCkpO2tbeD4+Ml09a1tsPj4yXTtrW3grND4+Ml09a1ttPj4yXTtrW3grOD4+Ml09a1tuPj4yXTtrW3grMTY+PjJdPWtbcD4+Ml07a1t4KzIwPj4yXT1rW3E+PjJdO2tbeCsxMj4+Ml09a1tvPj4yXTtpZighKGtbcz4+Ml18MCkpe2tba1t1Pj4yXT4+Ml09MDtrW2o+PjJdPTA7eD1rW2o+PjJdfDA7cj15O3JldHVybiB4fDB9aWYoKGtbdD4+Ml18MCk8MCl7cT11UihrW3M+PjJdfDApfDA7a1t0Pj4yXT1xfXY9SHAoeCxrW3M+PjJdfDAsa1t0Pj4yXXwwLGtbdT4+Ml18MCx2KXwwO2tbdz4+Ml09djtpZigoa1t3Pj4yXXwwKT09MD8oa1t4KzMyPj4yXXwwKSE9MDowKWtbdz4+Ml09MTtrW2o+PjJdPWtbdz4+Ml07eD1rW2o+PjJdfDA7cj15O3JldHVybiB4fDB9ZnVuY3Rpb24gRnAoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTAsaT0wLGo9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxzPTAsdD0wO3Q9cjtyPXIrNjR8MDtlPXQrNTJ8MDtmPXQrNDh8MDtxPXQrNDR8MDtwPXQrNDB8MDtuPXQrMzZ8MDtoPXQrMzJ8MDtnPXQrMjh8MDtpPXQrMjR8MDtsPXQrMjB8MDtqPXQrMTZ8MDtvPXQrMTJ8MDttPXQrOHwwO2M9dCs0fDA7ZD10O2tbZT4+Ml09YTtrW2Y+PjJdPWI7a1txPj4yXT0wO2tbcD4+Ml09a1trW2U+PjJdPj4yXTtrW24+PjJdPTA7a1toPj4yXT1rW2tbcD4+Ml0+PjJdO2lmKCEoa1tmPj4yXXwwKSlrW3E+PjJdPTE7ZG8gaWYoIShrW3E+PjJdfDApKXtpZighKChrW2g+PjJdfDApPT0zfChrW2g+PjJdfDApPT00KSl7aWYoKGtbaD4+Ml18MCkhPTIpYnJlYWs7a1tjPj4yXT1rWyhrW3A+PjJdfDApKzEyPj4yXTtrW2Q+PjJdPWtbKGtbcD4+Ml18MCkrMTY+PjJdO2tbKGtbcD4+Ml18MCkrMTI+PjJdPTA7a1soa1twPj4yXXwwKSsxNj4+Ml09MDtrWyhrW2M+PjJdfDApKzg+PjJdPTA7a1soa1tkPj4yXXwwKSs4Pj4yXT0wO3M9RnAoYywoa1tmPj4yXXwwKS0xfDApfDA7a1txPj4yXT1zO2lmKCEoa1txPj4yXXwwKSl7cz1GcChkLChrW2Y+PjJdfDApLTF8MCl8MDtrW3E+PjJdPXN9aWYoa1txPj4yXXwwKXtxcChrW2Q+PjJdfDApO3FwKGtbYz4+Ml18MCk7YnJlYWt9ZWxzZXtrWyhrW3A+PjJdfDApKzEyPj4yXT1rW2M+PjJdO2tbKGtbYz4+Ml18MCkrOD4+Ml09a1twPj4yXTtrWyhrW3A+PjJdfDApKzE2Pj4yXT1rW2Q+PjJdO2tbKGtbZD4+Ml18MCkrOD4+Ml09a1twPj4yXTticmVha319YT1TZChrW2Y+PjJdPDwyKXwwO2tbZz4+Ml09YTtpZighKGtbZz4+Ml18MCkpa1txPj4yXT03O2Vsc2UgZFMoa1tnPj4yXXwwLDAsa1tmPj4yXTw8MnwwKXwwO2lmKCEoa1txPj4yXXwwKSl7a1tsPj4yXT1rW3A+PjJdO3doaWxlKDEpe2lmKChrW2tbbD4+Ml0+PjJdfDApIT0oa1toPj4yXXwwKSlicmVhaztrW2w+PjJdPWtbKGtbbD4+Ml18MCkrMTI+PjJdfXdoaWxlKDEpe2tbbz4+Ml09a1soa1tsPj4yXXwwKSs4Pj4yXTtrWyhrW2w+PjJdfDApKzg+PjJdPTA7aWYoa1tvPj4yXXwwKWtbKGtbbz4+Ml18MCkrMTI+PjJdPTA7ZWxzZSBrW3A+PjJdPTA7YT1GcChsLChrW2Y+PjJdfDApLTF8MCl8MDtrW3E+PjJdPWE7aWYoa1txPj4yXXwwKWJyZWFrO2tbaj4+Ml09MDt3aGlsZSgxKXtpZighKGtbbD4+Ml18MCkpYnJlYWs7aWYoKGtbaj4+Ml18MCk+PShrW2Y+PjJdfDApKWJyZWFrO2lmKCEoa1soa1tnPj4yXXwwKSsoa1tqPj4yXTw8Mik+PjJdfDApKXtrWyhrW2c+PjJdfDApKyhrW2o+PjJdPDwyKT4+Ml09a1tsPj4yXTtrW2w+PjJdPTB9ZWxzZXtrWyhrW24+PjJdfDApKzEyPj4yXT1rWyhrW2c+PjJdfDApKyhrW2o+PjJdPDwyKT4+Ml07a1soa1tuPj4yXXwwKSsxNj4+Ml09a1tsPj4yXTtrWyhrWyhrW24+PjJdfDApKzEyPj4yXXwwKSs4Pj4yXT1rW24+PjJdO2tbKGtbKGtbbj4+Ml18MCkrMTY+PjJdfDApKzg+PjJdPWtbbj4+Ml07a1tsPj4yXT1rW24+PjJdO2tbbj4+Ml09a1soa1tuPj4yXXwwKSs4Pj4yXTtrWyhrW2w+PjJdfDApKzg+PjJdPTA7a1soa1tnPj4yXXwwKSsoa1tqPj4yXTw8Mik+PjJdPTB9a1tqPj4yXT0oa1tqPj4yXXwwKSsxfWlmKGtbbD4+Ml18MCl7cz0yNDticmVha31pZighKGtbbz4+Ml18MCkpYnJlYWs7a1tsPj4yXT1rWyhrW28+PjJdfDApKzE2Pj4yXTt3aGlsZSgxKXtpZigoa1trW2w+PjJdPj4yXXwwKSE9KGtbaD4+Ml18MCkpYnJlYWs7a1tsPj4yXT1rWyhrW2w+PjJdfDApKzEyPj4yXX1rWyhrWyhrW28+PjJdfDApKzE2Pj4yXXwwKSs4Pj4yXT1rWyhrW28+PjJdfDApKzg+PjJdO2I9a1soa1tvPj4yXXwwKSsxNj4+Ml18MDtpZihrWyhrW28+PjJdfDApKzg+PjJdfDApa1soa1soa1tvPj4yXXwwKSs4Pj4yXXwwKSsxMj4+Ml09YjtlbHNlIGtbcD4+Ml09YjtrWyhrW28+PjJdfDApKzg+PjJdPWtbbj4+Ml07a1tuPj4yXT1rW28+PjJdfWlmKChzfDApPT0yNCl7cXAoa1tsPj4yXXwwKTtrW3E+PjJdPTE4fWE6ZG8gaWYoIShrW3E+PjJdfDApKXtrW2w+PjJdPTA7a1tpPj4yXT0wO3doaWxlKDEpe2lmKChrW2k+PjJdfDApPj0oa1tmPj4yXXwwKSlicmVhaztkbyBpZihrWyhrW2c+PjJdfDApKyhrW2k+PjJdPDwyKT4+Ml18MClpZighKGtbbD4+Ml18MCkpe2tbbD4+Ml09a1soa1tnPj4yXXwwKSsoa1tpPj4yXTw8Mik+PjJdO2tbKGtbbD4+Ml18MCkrOD4+Ml09MDticmVha31lbHNle2tbKGtbbj4+Ml18MCkrMTY+PjJdPWtbbD4+Ml07a1soa1tuPj4yXXwwKSsxMj4+Ml09a1soa1tnPj4yXXwwKSsoa1tpPj4yXTw8Mik+PjJdO2tbKGtbKGtbbj4+Ml18MCkrMTI+PjJdfDApKzg+PjJdPWtbbj4+Ml07a1soa1soa1tuPj4yXXwwKSsxNj4+Ml18MCkrOD4+Ml09a1tuPj4yXTtrW2w+PjJdPWtbbj4+Ml07a1tuPj4yXT1rWyhrW24+PjJdfDApKzg+PjJdO2tbKGtbbD4+Ml18MCkrOD4+Ml09MDticmVha313aGlsZSgwKTtrW2k+PjJdPShrW2k+PjJdfDApKzF9a1twPj4yXT1rW2w+PjJdfWVsc2V7a1tpPj4yXT0wO3doaWxlKDEpe2lmKChrW2k+PjJdfDApPj0oa1tmPj4yXXwwKSlicmVhaztxcChrWyhrW2c+PjJdfDApKyhrW2k+PjJdPDwyKT4+Ml18MCk7a1tpPj4yXT0oa1tpPj4yXXwwKSsxfXdoaWxlKDEpe3M9a1tuPj4yXXwwO2tbbT4+Ml09cztpZighcylicmVhayBhO2tbbj4+Ml09a1soa1ttPj4yXXwwKSs4Pj4yXTtVZChrW20+PjJdfDApfX13aGlsZSgwKTtVZChrW2c+PjJdfDApfX13aGlsZSgwKTtpZighKGtbcT4+Ml18MCkpe3A9a1twPj4yXXwwO3M9a1tlPj4yXXwwO2tbcz4+Ml09cDtzPWtbcT4+Ml18MDtyPXQ7cmV0dXJuIHN8MH1xcChrW3A+PjJdfDApO2tbcD4+Ml09MDtwPWtbcD4+Ml18MDtzPWtbZT4+Ml18MDtrW3M+PjJdPXA7cz1rW3E+PjJdfDA7cj10O3JldHVybiBzfDB9ZnVuY3Rpb24gR3AoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wO2Y9cjtyPXIrMTZ8MDtjPWYrOHwwO2Q9Zis0fDA7ZT1mO2tbYz4+Ml09YTtrW2Q+PjJdPWI7a1tlPj4yXT0wO2RvIGlmKGtbYz4+Ml18MCl7aWYoKGtbZD4+Ml18MCk8MCl7a1tlPj4yXT0xODticmVha31hPUdwKGtbKGtbYz4+Ml18MCkrMTI+PjJdfDAsKGtbZD4+Ml18MCktMXwwKXwwO2tbZT4+Ml09YTtpZighKGtbZT4+Ml18MCkpe2E9R3Aoa1soa1tjPj4yXXwwKSsxNj4+Ml18MCwoa1tkPj4yXXwwKS0xfDApfDA7a1tlPj4yXT1hfX13aGlsZSgwKTtyPWY7cmV0dXJuIGtbZT4+Ml18MH1mdW5jdGlvbiBIcChhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxpPTAsaj0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MDt4PXI7cj1yKzgwfDA7Zj14KzY0fDA7eT14KzYwfDA7bj14KzU2fDA7bz14KzUyfDA7cD14KzQ4fDA7dj14KzQ0fDA7bD14KzQwfDA7dT14KzM2fDA7cz14KzMyfDA7bT14KzI4fDA7dz14KzI0fDA7cT14KzIwfDA7dD14KzE2fDA7aT14KzEyfDA7aD14Kzh8MDtnPXgrNHwwO2o9eDtrW2Y+PjJdPWE7a1t5Pj4yXT1iO2tbbj4+Ml09YztrW28+PjJdPWQ7a1twPj4yXT1lO2tbdj4+Ml09MDtrW2w+PjJdPTA7a1t1Pj4yXT0wO2tbcz4+Ml09a1tuPj4yXTtrW20+PjJdPWtbeT4+Ml07a1t3Pj4yXT0wO2tbcT4+Ml09MTt3aGlsZSgxKXtpZihrW3c+PjJdfDApe2M9MjU7YnJlYWt9a1t0Pj4yXT0wO2tbaT4+Ml09MDt5PUlwKGtbZj4+Ml18MCxrW20+PjJdfDAsa1tzPj4yXXwwLHQsaSl8MDtrW3c+PjJdPXk7aWYoKGtbdz4+Ml18MCk9PTAmKGtbdD4+Ml18MCkhPTApe2tbZz4+Ml09a1trW3Q+PjJdPj4yXTtpZigoa1tnPj4yXXwwKT09NSljPTE7ZWxzZSBjPShrWyhrW3Q+PjJdfDApKzEyPj4yXXwwKSE9MDtrW2g+PjJdPWMmMTtpZigoa1toPj4yXXwwKT09MCYoa1txPj4yXXwwKSE9MCl7Yz03O2JyZWFrfWlmKCEoKGtbaD4+Ml18MCk9PTB8KGtbcT4+Ml18MCkhPTApKXt5PUpwKDQ4KXwwO2tbaj4+Ml09eTtpZighKGtbaj4+Ml18MCkpe2M9MTA7YnJlYWt9a1trW2o+PjJdPj4yXT0zO0twKHYsa1tsPj4yXXwwLGtbaj4+Ml18MCk7a1tsPj4yXT1rW2o+PjJdfWlmKGtbbD4+Ml18MCl7aWYoISgoa1tnPj4yXXwwKSE9MXwoa1toPj4yXXwwKSE9MCk/KGtba1tsPj4yXT4+Ml18MCkhPTU6MCl7Yz0xNzticmVha31pZigoa1tnPj4yXXwwKSE9NSYoa1toPj4yXXwwKSE9MD8oa1trW2w+PjJdPj4yXXwwKT09MTowKXtjPTE3O2JyZWFrfX1kbyBpZihrW2g+PjJdfDApe2M9a1t0Pj4yXXwwO2lmKGtbdj4+Ml18MCl7a1soa1tsPj4yXXwwKSsxNj4+Ml09YztrWyhrW3Q+PjJdfDApKzg+PjJdPWtbbD4+Ml07YnJlYWt9ZWxzZXtrW3Y+PjJdPWM7YnJlYWt9fWVsc2UgS3AodixrW2w+PjJdfDAsa1t0Pj4yXXwwKTt3aGlsZSgwKTtrW3E+PjJdPSgoa1toPj4yXXwwKSE9MF4xKSYxO2tbbD4+Ml09a1t0Pj4yXX1rW3M+PjJdPShrW3M+PjJdfDApLShrW2k+PjJdfDApO2tbbT4+Ml09KGtbbT4+Ml18MCkrKGtbaT4+Ml18MCl9aWYoKGN8MCk9PTcpe3FwKGtbdD4+Ml18MCk7a1t3Pj4yXT0xfWVsc2UgaWYoKGN8MCk9PTEwKXtxcChrW3Q+PjJdfDApO2tbdz4+Ml09N31lbHNlIGlmKChjfDApPT0xNyl7cXAoa1t0Pj4yXXwwKTtrW3c+PjJdPTF9ZWxzZSBpZigoY3wwKT09MjUpe2lmKChrW3c+PjJdfDApPT0xMDEmKGtbdj4+Ml18MCkhPTAmKGtbcT4+Ml18MCkhPTApa1t3Pj4yXT0xO2lmKChrW3c+PjJdfDApPT0xMDEpa1t3Pj4yXT0wO2tba1twPj4yXT4+Ml09KGtbbj4+Ml18MCktKGtbcz4+Ml18MCl9aWYoIShrW3c+PjJdfDApKXt2PWtbdj4+Ml18MDt5PWtbbz4+Ml18MDtrW3k+PjJdPXY7eT1rW3c+PjJdfDA7cj14O3JldHVybiB5fDB9cXAoa1t2Pj4yXXwwKTtxcChrW3U+PjJdfDApO2tbdj4+Ml09MDt2PWtbdj4+Ml18MDt5PWtbbz4+Ml18MDtrW3k+PjJdPXY7eT1rW3c+PjJdfDA7cj14O3JldHVybiB5fDB9ZnVuY3Rpb24gSXAoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLG09MCxuPTAsbz0wLHA9MCxxPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTAsRT0wO0U9cjtyPXIrODB8MDtvPUUrNzJ8MDtwPUUrNjh8MDtxPUUrNjR8MDtzPUUrNjB8MDt0PUUrNTZ8MDt1PUUrNTJ8MDt4PUUrNDh8MDt2PUUrNDR8MDt3PUUrNDB8MDtBPUUrMzZ8MDtuPUUrMzJ8MDtCPUUrMjh8MDt5PUUrMjR8MDttPUUrMjB8MDtqPUUrMTZ8MDtoPUUrMTJ8MDtmPUUrNzZ8MDtnPUUrOHwwO0M9RSs0fDA7ej1FO2tbcD4+Ml09YTtrW3E+PjJdPWI7a1tzPj4yXT1jO2tbdD4+Ml09ZDtrW3U+PjJdPWU7a1tuPj4yXT0wO2tbQj4+Ml09a1txPj4yXTtrW3k+PjJdPWtbcz4+Ml07a1soa1twPj4yXXwwKSsyND4+Ml09MDt3aGlsZSgxKXtpZigoa1t5Pj4yXXwwKT4wKWE9KE1wKGlba1tCPj4yXT4+MF18MCl8MCkhPTA7ZWxzZSBhPTA7Yz1rW3k+PjJdfDA7aWYoIWEpYnJlYWs7a1t5Pj4yXT1jKy0xO2tbQj4+Ml09KGtbQj4+Ml18MCkrMX1pZighYyl7a1tvPj4yXT0xMDE7RD1rW28+PjJdfDA7cj1FO3JldHVybiBEfDB9a1t4Pj4yXT0wO3doaWxlKDEpe2lmKChrW3g+PjJdfDApPj00KWJyZWFrO2tbbT4+Ml09MjExMisoa1t4Pj4yXTw8Myk7aWYoKChsWyhrW20+PjJdfDApKzU+PjBdJi0yfDApPT0wPyhrW3k+PjJdfDApPj0obFsoa1ttPj4yXXwwKSs0Pj4wXXwwKTowKT8wPT0ob1Ioa1tCPj4yXXwwLGtba1ttPj4yXT4+Ml18MCxsWyhrW20+PjJdfDApKzQ+PjBdfDApfDApOjApe2tbaj4+Ml09MTA7a1toPj4yXT1sWyhrW20+PjJdfDApKzQ+PjBdO2E6ZG8gaWYoKCgobFsoa1ttPj4yXXwwKSs2Pj4wXXwwKT09MT8oaVsoa1tCPj4yXXwwKSs0Pj4wXXwwKT09NDc6MCk/KGlbKGtbQj4+Ml18MCkrNT4+MF18MCk+PTQ4OjApPyhpWyhrW0I+PjJdfDApKzU+PjBdfDApPD01NzowKXtrW2o+PjJdPTA7a1toPj4yXT01O3doaWxlKDEpe2lmKChpWyhrW0I+PjJdfDApKyhrW2g+PjJdfDApPj4wXXwwKTw0OClicmVhayBhO2lmKChpWyhrW0I+PjJdfDApKyhrW2g+PjJdfDApPj4wXXwwKT41NylicmVhayBhO2tbaj4+Ml09KChrW2o+PjJdfDApKjEwfDApKygoaVsoa1tCPj4yXXwwKSsoa1toPj4yXXwwKT4+MF18MCktNDgpO2tbaD4+Ml09KGtbaD4+Ml18MCkrMX19d2hpbGUoMCk7aVtmPj4wXT1pWyhrW0I+PjJdfDApKyhrW2g+PjJdfDApPj4wXXwwO2lmKE1wKGlbZj4+MF18MCl8MCl7RD0yNjticmVha31pZigoaVtmPj4wXXwwKT09MzQpe0Q9MjY7YnJlYWt9aWYoKGlbZj4+MF18MCk9PTQwKXtEPTI2O2JyZWFrfWlmKChpW2Y+PjBdfDApPT00MSl7RD0yNjticmVha31pZighKGlbZj4+MF18MCkpe0Q9MjY7YnJlYWt9fWtbeD4+Ml09KGtbeD4+Ml18MCkrMX1pZigoRHwwKT09MjYpe0Q9SnAoNDgpfDA7a1tuPj4yXT1EO2lmKGtbbj4+Ml18MCl7a1trW24+PjJdPj4yXT1sWyhrW20+PjJdfDApKzY+PjBdO2tbKGtbbj4+Ml18MCkrND4+Ml09a1tqPj4yXTtrW2tbdD4+Ml0+PjJdPWtbbj4+Ml07a1trW3U+PjJdPj4yXT0oa1tCPj4yXXwwKS0oa1txPj4yXXwwKSsoa1toPj4yXXwwKTtrW28+PjJdPTA7RD1rW28+PjJdfDA7cj1FO3JldHVybiBEfDB9ZWxzZXtrW28+PjJdPTc7RD1rW28+PjJdfDA7cj1FO3JldHVybiBEfDB9fWlmKChpW2tbQj4+Ml0+PjBdfDApPT0zNCl7a1t4Pj4yXT0xO3doaWxlKDEpe2lmKChrW3g+PjJdfDApPj0oa1t5Pj4yXXwwKSlicmVhaztpZigoaVsoa1tCPj4yXXwwKSsoa1t4Pj4yXXwwKT4+MF18MCk9PTM0KWJyZWFrO2tbeD4+Ml09KGtbeD4+Ml18MCkrMX1rW2tbdT4+Ml0+PjJdPShrW0I+PjJdfDApLShrW3E+PjJdfDApKyhrW3g+PjJdfDApKzE7aWYoKGtbeD4+Ml18MCk9PShrW3k+PjJdfDApKXtrW28+PjJdPTE7RD1rW28+PjJdfDA7cj1FO3JldHVybiBEfDB9ZWxzZXtEPU5wKGtbcD4+Ml18MCwoa1tCPj4yXXwwKSsxfDAsKGtbeD4+Ml18MCktMXwwLGtbdD4+Ml18MCl8MDtrW28+PjJdPUQ7RD1rW28+PjJdfDA7cj1FO3JldHVybiBEfDB9fWlmKChpW2tbQj4+Ml0+PjBdfDApPT00MCl7a1tnPj4yXT0wO0Q9KGtbcD4+Ml18MCkrMzJ8MDtrW0Q+PjJdPShrW0Q+PjJdfDApKzE7RD1IcChrW3A+PjJdfDAsKGtbQj4+Ml18MCkrMXwwLChrW3k+PjJdfDApLTF8MCxrW3Q+PjJdfDAsZyl8MDtrW0E+PjJdPUQ7aWYoKGtbQT4+Ml18MCk9PTA/KGtba1t0Pj4yXT4+Ml18MCk9PTA6MClrW0E+PjJdPTEwMTtrW2tbdT4+Ml0+PjJdPShrW0I+PjJdfDApLShrW3E+PjJdfDApKzErKGtbZz4+Ml18MCk7a1tvPj4yXT1rW0E+PjJdO0Q9a1tvPj4yXXwwO3I9RTtyZXR1cm4gRHwwfWM9a1twPj4yXXwwO2lmKChpW2tbQj4+Ml0+PjBdfDApPT00MSl7RD1jKzMyfDA7a1tEPj4yXT0oa1tEPj4yXXwwKSstMTtrW2tbdT4+Ml0+PjJdPShrW0I+PjJdfDApLShrW3E+PjJdfDApKzE7a1trW3Q+PjJdPj4yXT0wO2tbbz4+Ml09MTAxO0Q9a1tvPj4yXXwwO3I9RTtyZXR1cm4gRHwwfWtbdj4+Ml09a1tjKzIwPj4yXTtrW3c+PjJdPTA7a1t4Pj4yXT0wO3doaWxlKDEpe2lmKChrW3g+PjJdfDApPj0oa1soa1twPj4yXXwwKSsxNj4+Ml18MCkpYnJlYWs7a1tDPj4yXT1rWyhrWyhrW3A+PjJdfDApKzg+PjJdfDApKyhrW3g+PjJdPDwyKT4+Ml07bj11UihrW0M+PjJdfDApfDA7a1t6Pj4yXT1uO2lmKCgoa1t5Pj4yXXwwKT4oa1t6Pj4yXXwwKT8oaVsoa1tCPj4yXXwwKSsoa1t6Pj4yXXwwKT4+MF18MCk9PTU4OjApPyhKZChrW0M+PjJdfDAsa1tCPj4yXXwwLGtbej4+Ml18MCl8MCk9PTA6MCl7RD01MDticmVha31rW3g+PjJdPShrW3g+PjJdfDApKzF9aWYoKER8MCk9PTUwKXtrW3Y+PjJdPWtbeD4+Ml07a1t3Pj4yXT0oa1tCPj4yXXwwKS0oa1txPj4yXXwwKSsoa1t6Pj4yXXwwKSsxfUQ9T3Aoa1twPj4yXXwwLGtbdj4+Ml18MCwoa1txPj4yXXwwKSsoa1t3Pj4yXXwwKXwwLChrW3M+PjJdfDApLShrW3c+PjJdfDApfDAsa1t0Pj4yXXwwLGtbdT4+Ml18MCl8MDtrW0E+PjJdPUQ7RD1rW3U+PjJdfDA7a1tEPj4yXT0oa1tEPj4yXXwwKSsoa1t3Pj4yXXwwKTtrW28+PjJdPWtbQT4+Ml07RD1rW28+PjJdfDA7cj1FO3JldHVybiBEfDB9ZnVuY3Rpb24gSnAoYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wO2Q9cjtyPXIrMTZ8MDtiPWQrNHwwO2M9ZDtrW2I+PjJdPWE7YT1TZChrW2I+PjJdfDApfDA7a1tjPj4yXT1hO2lmKCEoa1tjPj4yXXwwKSl7Yz1rW2M+PjJdfDA7cj1kO3JldHVybiBjfDB9ZFMoa1tjPj4yXXwwLDAsa1tiPj4yXXwwKXwwO2M9a1tjPj4yXXwwO3I9ZDtyZXR1cm4gY3wwfWZ1bmN0aW9uIEtwKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MDtnPXI7cj1yKzE2fDA7ZD1nKzEyfDA7aD1nKzh8MDtlPWcrNHwwO2Y9ZztrW2Q+PjJdPWE7a1toPj4yXT1iO2tbZT4+Ml09YztrW2Y+PjJdPWtbaD4+Ml07d2hpbGUoMSl7aWYoa1soa1tmPj4yXXwwKSs4Pj4yXXwwKXtjPUxwKGtbKGtbZj4+Ml18MCkrOD4+Ml18MCl8MDtjPShjfDApPD0oTHAoa1tlPj4yXXwwKXwwKX1lbHNlIGM9MDtiPWtbKGtbZj4+Ml18MCkrOD4+Ml18MDtpZighYylicmVhaztrW2Y+PjJdPWJ9Yz1rW2U+PjJdfDA7aWYoYil7a1soa1soa1tmPj4yXXwwKSs4Pj4yXXwwKSsxNj4+Ml09YztrWyhrW2U+PjJdfDApKzg+PjJdPWtbKGtbZj4+Ml18MCkrOD4+Ml07ZD1rW2Y+PjJdfDA7aD1rW2U+PjJdfDA7aD1oKzEyfDA7a1toPj4yXT1kO2U9a1tlPj4yXXwwO2g9a1tmPj4yXXwwO2g9aCs4fDA7a1toPj4yXT1lO3I9ZztyZXR1cm59ZWxzZXtrW2tbZD4+Ml0+PjJdPWM7ZD1rW2Y+PjJdfDA7aD1rW2U+PjJdfDA7aD1oKzEyfDA7a1toPj4yXT1kO2U9a1tlPj4yXXwwO2g9a1tmPj4yXXwwO2g9aCs4fDA7a1toPj4yXT1lO3I9ZztyZXR1cm59fWZ1bmN0aW9uIExwKGEpe2E9YXwwO3ZhciBiPTAsYz0wO2M9cjtyPXIrMTZ8MDtiPWM7a1tiPj4yXT1hO3I9YztyZXR1cm4ga1trW2I+PjJdPj4yXXwwfWZ1bmN0aW9uIE1wKGEpe2E9YXwwO3ZhciBiPTAsYz0wO2M9cjtyPXIrMTZ8MDtiPWM7aVtiPj4wXT1hO2lmKCgoKChpW2I+PjBdfDApIT0zMj8oaVtiPj4wXXwwKSE9OTowKT8oaVtiPj4wXXwwKSE9MTA6MCk/KGlbYj4+MF18MCkhPTEzOjApPyhpW2I+PjBdfDApIT0xMTowKWI9KGlbYj4+MF18MCk9PTEyO2Vsc2UgYj0xO3I9YztyZXR1cm4gYiYxfDB9ZnVuY3Rpb24gTnAoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTAsRT0wO0Q9cjtyPXIrOTZ8MDtlPUQrODh8MDtmPUQrODR8MDtnPUQrODB8MDtoPUQrNzZ8MDtqPUQrNzJ8MDtFPUQrNjh8MDt3PUQrNjR8MDt5PUQrNjB8MDt1PUQrNTZ8MDt2PUQrNTJ8MDtCPUQrNDh8MDtzPUQrNDR8MDt0PUQrMzZ8MDtvPUQrMzJ8MDtBPUQrMjh8MDtxPUQrMjR8MDtsPUQrMjB8MDttPUQrMTZ8MDtuPUQrMTJ8MDt4PUQrOHwwO3A9RCs0fDA7ej1EO2tbZj4+Ml09YTtrW2c+PjJdPWI7a1toPj4yXT1jO2tbaj4+Ml09ZDtrW0U+PjJdPWtba1tmPj4yXT4+Ml07a1t3Pj4yXT1rW2tbRT4+Ml0+PjJdO2tbdT4+Ml09MDtrW3Y+PjJdPTA7a1tCPj4yXT0wO2tbcz4+Ml09MDtrW0QrNDA+PjJdPTE0NDtrW3Q+PjJdPTA7Yj1NbihrW0U+PjJdfDAsa1soa1tmPj4yXXwwKSs0Pj4yXXwwLGtbZz4+Ml18MCxrW2g+PjJdfDAsdil8MDtrW3k+PjJdPWI7YTpkbyBpZighKGtbeT4+Ml18MCkpe2tbbz4+Ml09MDt3aGlsZSgxKXtpZihrW3k+PjJdfDApYnJlYWs7a1txPj4yXT0wO2tbbD4+Ml09MDtrW20+PjJdPTA7a1tuPj4yXT0wO0U9YWNba1soa1t3Pj4yXXwwKSsyMD4+Ml0mMjU1XShrW3Y+PjJdfDAsQSxxLGwsbSxuKXwwO2tbeT4+Ml09RTtpZighKGtbeT4+Ml18MCkpe0U9UHAoa1t1Pj4yXXwwLDE0NCsoKGtbbz4+Ml18MCkqMjR8MCl8MCl8MDtrW3U+PjJdPUU7aWYoIShrW3U+PjJdfDApKWJyZWFrIGE7RT1QcChrW0I+PjJdfDAsKGtbcz4+Ml18MCkrKGtbcT4+Ml18MCl8MCl8MDtrW0I+PjJdPUU7aWYoIShrW0I+PjJdfDApKWJyZWFrIGE7a1t4Pj4yXT0oa1t1Pj4yXXwwKSs0OCs3MisoKGtbbz4+Ml18MCkqMjR8MCk7RT1rW3g+PjJdfDA7a1tFPj4yXT0wO2tbRSs0Pj4yXT0wO2tbRSs4Pj4yXT0wO2tbRSsxMj4+Ml09MDtrW0UrMTY+PjJdPTA7a1tFKzIwPj4yXT0wO2JTKChrW0I+PjJdfDApKyhrW3M+PjJdfDApfDAsa1tBPj4yXXwwLGtbcT4+Ml18MCl8MDtrW3M+PjJdPShrW3M+PjJdfDApKyhrW3E+PjJdfDApO2tbKGtbeD4+Ml18MCkrND4+Ml09a1txPj4yXTtpZigoa1ttPj4yXXwwKTwoa1toPj4yXXwwKSljPShpWyhrW2c+PjJdfDApKyhrW20+PjJdfDApPj4wXXwwKT09NDI7ZWxzZSBjPTA7a1soa1t4Pj4yXXwwKSs4Pj4yXT1jJjE7aWYoKGtbbD4+Ml18MCk+MCljPShpWyhrW2c+PjJdfDApKygoa1tsPj4yXXwwKS0xKT4+MF18MCk9PTk0O2Vsc2UgYz0wO2tbKGtbeD4+Ml18MCkrMTI+PjJdPWMmMTtrW3Q+PjJdPShrW28+PjJdfDApKzF9a1tvPj4yXT0oa1tvPj4yXXwwKSsxfWJjW2tbKGtbdz4+Ml18MCkrMTY+PjJdJjI1NV0oa1t2Pj4yXXwwKXwwO2tbdj4+Ml09MDtDPTE0fWVsc2UgQz0xNDt3aGlsZSgwKTtkbyBpZigoQ3wwKT09MTQpe2lmKChrW3k+PjJdfDApPT0xMDEpe2tbej4+Ml09MDtFPVBwKGtbdT4+Ml18MCwxNDQrKChrW3Q+PjJdfDApKjI0fDApKyhrW3M+PjJdfDApfDApfDA7a1t1Pj4yXT1FO2lmKCEoa1t1Pj4yXXwwKSlicmVhaztkUyhrW3U+PjJdfDAsMCwoa1t1Pj4yXXwwKSs0OCs3Mi0oa1t1Pj4yXXwwKXwwKXwwO2tba1t1Pj4yXT4+Ml09NTtrWyhrW3U+PjJdfDApKzIwPj4yXT0oa1t1Pj4yXXwwKSs0ODtrWyhrWyhrW3U+PjJdfDApKzIwPj4yXXwwKSs2OD4+Ml09a1soa1tmPj4yXXwwKSsyMD4+Ml07a1soa1soa1t1Pj4yXXwwKSsyMD4+Ml18MCkrNjQ+PjJdPWtbdD4+Ml07a1t6Pj4yXT0oa1soa1t1Pj4yXXwwKSsyMD4+Ml18MCkrNzIrKChrW3Q+PjJdfDApKjI0fDApO2lmKGtbQj4+Ml18MCl7YlMoa1t6Pj4yXXwwLGtbQj4+Ml18MCxrW3M+PjJdfDApfDA7VWQoa1tCPj4yXXwwKX1rW3A+PjJdPTA7d2hpbGUoMSl7aWYoKGtbcD4+Ml18MCk+PShrWyhrWyhrW3U+PjJdfDApKzIwPj4yXXwwKSs2ND4+Ml18MCkpYnJlYWs7a1soa1soa1t1Pj4yXXwwKSsyMD4+Ml18MCkrNzIrKChrW3A+PjJdfDApKjI0fDApPj4yXT1rW3o+PjJdO2tbej4+Ml09KGtbej4+Ml18MCkrKGtbKGtbKGtbdT4+Ml18MCkrMjA+PjJdfDApKzcyKygoa1twPj4yXXwwKSoyNHwwKSs0Pj4yXXwwKTtrW3A+PjJdPShrW3A+PjJdfDApKzF9a1t5Pj4yXT0wfWtba1tqPj4yXT4+Ml09a1t1Pj4yXTtrW2U+PjJdPWtbeT4+Ml07RT1rW2U+PjJdfDA7cj1EO3JldHVybiBFfDB9d2hpbGUoMCk7aWYoa1t2Pj4yXXwwKWJjW2tbKGtbdz4+Ml18MCkrMTY+PjJdJjI1NV0oa1t2Pj4yXXwwKXwwO1VkKGtbQj4+Ml18MCk7VWQoa1t1Pj4yXXwwKTtrW2tbaj4+Ml0+PjJdPTA7a1tlPj4yXT03O0U9a1tlPj4yXXwwO3I9RDtyZXR1cm4gRXwwfWZ1bmN0aW9uIE9wKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wO0I9cjtyPXIrODB8MDtnPUIrNjh8MDtoPUIrNjR8MDtqPUIrNjB8MDtsPUIrNTZ8MDttPUIrNTJ8MDtuPUIrNDh8MDt5PUIrNDR8MDt3PUIrNDB8MDt6PUIrMzZ8MDt2PUIrMzJ8MDt4PUIrMjh8MDtvPUIrMjR8MDtBPUIrMjB8MDt1PUIrMTZ8MDtzPUIrMTJ8MDtwPUIrOHwwO3E9Qis0fDA7dD1CO2tbZz4+Ml09YTtrW2g+PjJdPWI7a1tqPj4yXT1jO2tbbD4+Ml09ZDtrW20+PjJdPWU7a1tuPj4yXT1mO2tbeT4+Ml09a1trW2c+PjJdPj4yXTtrW3c+PjJdPWtba1t5Pj4yXT4+Ml07a1t4Pj4yXT0wO2tbbz4+Ml09MDtrW28+PjJdPTA7d2hpbGUoMSl7aWYoKGtbbz4+Ml18MCk+PShrW2w+PjJdfDApKWJyZWFrO2lmKChpWyhrW2o+PjJdfDApKyhrW28+PjJdfDApPj4wXXwwKT09NDApYnJlYWs7aWYoKGlbKGtbaj4+Ml18MCkrKGtbbz4+Ml18MCk+PjBdfDApPT00MSlicmVhaztpZigoaVsoa1tqPj4yXXwwKSsoa1tvPj4yXXwwKT4+MF18MCk9PTM0KWJyZWFrO2tbbz4+Ml09KGtbbz4+Ml18MCkrMX1rW2tbbj4+Ml0+PjJdPWtbbz4+Ml07Yz1NbihrW3k+PjJdfDAsa1soa1tnPj4yXXwwKSs0Pj4yXXwwLGtbaj4+Ml18MCxrW28+PjJdfDAsdil8MDtrW3o+PjJdPWM7aWYoa1t6Pj4yXXwwKXtjPWtbeD4+Ml18MDtBPWtbbT4+Ml18MDtrW0E+PjJdPWM7QT1rW3o+PjJdfDA7cj1CO3JldHVybiBBfDB9a1t1Pj4yXT0wO2tbcz4+Ml09MDtrW3A+PjJdPTA7a1txPj4yXT0wO2M9YWNba1soa1t3Pj4yXXwwKSsyMD4+Ml0mMjU1XShrW3Y+PjJdfDAsQSx1LHMscCxxKXwwO2tbej4+Ml09YztpZihrW3o+PjJdfDApe2lmKChrW28+PjJdfDApIT0wJihrW3o+PjJdfDApPT0xMDEpa1t6Pj4yXT0wfWVsc2V7a1t0Pj4yXT0xNDQrKGtbdT4+Ml18MCk7Yz1KcChrW3Q+PjJdfDApfDA7a1t4Pj4yXT1jO2E6ZG8gaWYoa1t4Pj4yXXwwKXtrW2tbeD4+Ml0+PjJdPTU7a1soa1t4Pj4yXXwwKSsyMD4+Ml09KGtbeD4+Ml18MCkrNDg7a1soa1soa1t4Pj4yXXwwKSsyMD4+Ml18MCkrNjQ+PjJdPTE7a1soa1soa1t4Pj4yXXwwKSsyMD4+Ml18MCkrNjg+PjJdPWtbaD4+Ml07a1soa1soa1t4Pj4yXXwwKSsyMD4+Ml18MCkrNzIrND4+Ml09a1t1Pj4yXTtrWyhrWyhrW3g+PjJdfDApKzIwPj4yXXwwKSs3Mj4+Ml09KGtbKGtbeD4+Ml18MCkrMjA+PjJdfDApKzk2O2JTKGtbKGtbKGtbeD4+Ml18MCkrMjA+PjJdfDApKzcyPj4yXXwwLGtbQT4+Ml18MCxrW3U+PjJdfDApfDA7aWYoKGtbcD4+Ml18MCk8KGtbbD4+Ml18MCk/KGlbKGtbaj4+Ml18MCkrKGtbcD4+Ml18MCk+PjBdfDApPT00MjowKXtrWyhrWyhrW3g+PjJdfDApKzIwPj4yXXwwKSs3Mis4Pj4yXT0xO2tbcD4+Ml09KGtbcD4+Ml18MCkrMX13aGlsZSgxKXtpZighKChrW3M+PjJdfDApPjA/KGtbKGtbZz4+Ml18MCkrMTI+PjJdfDApIT0wOjApKWJyZWFrIGE7aWYoKGlbKGtbaj4+Ml18MCkrKChrW3M+PjJdfDApLTEpPj4wXXwwKSE9OTQpYnJlYWsgYTtrWyhrWyhrW3g+PjJdfDApKzIwPj4yXXwwKSs3MisxMj4+Ml09MTtrW3M+PjJdPShrW3M+PjJdfDApKy0xfX1lbHNlIGtbej4+Ml09Nzt3aGlsZSgwKTtrW2tbbj4+Ml0+PjJdPWtbcD4+Ml19YmNba1soa1t3Pj4yXXwwKSsxNj4+Ml0mMjU1XShrW3Y+PjJdfDApfDA7Yz1rW3g+PjJdfDA7QT1rW20+PjJdfDA7a1tBPj4yXT1jO0E9a1t6Pj4yXXwwO3I9QjtyZXR1cm4gQXwwfWZ1bmN0aW9uIFBwKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MDtlPXI7cj1yKzE2fDA7Yz1lKzh8MDtmPWUrNHwwO2Q9ZTtrW2M+PjJdPWE7a1tmPj4yXT1iO2E9VmQoa1tjPj4yXXwwLGtbZj4+Ml18MCl8MDtrW2Q+PjJdPWE7aWYoa1tkPj4yXXwwKXtmPWtbZD4+Ml18MDtyPWU7cmV0dXJuIGZ8MH1VZChrW2M+PjJdfDApO2Y9a1tkPj4yXXwwO3I9ZTtyZXR1cm4gZnwwfWZ1bmN0aW9uIFFwKGEpe2E9YXwwO3ZhciBiPTAsYz0wO2I9cjtyPXIrMTZ8MDtjPWI7a1tjPj4yXT1hO1JwKGtbKGtbYz4+Ml18MCkrMjA+PjJdfDApO1VkKGtbKGtbYz4+Ml18MCkrNDA+PjJdfDApO1VkKGtbYz4+Ml18MCk7cj1iO3JldHVybn1mdW5jdGlvbiBScChhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTAsZT0wO2U9cjtyPXIrMTZ8MDtjPWUrNHwwO2Q9ZTtrW2M+PjJdPWE7aWYoIShrW2M+PjJdfDApKXtyPWU7cmV0dXJufVVkKGtba1tjPj4yXT4+Ml18MCk7ZG4oa1tjPj4yXXwwKTthPWtbYz4+Ml18MDtiPWErNDB8MDtkb3trW2E+PjJdPTA7YT1hKzR8MH13aGlsZSgoYXwwKTwoYnwwKSk7a1tkPj4yXT0wO3doaWxlKDEpe2lmKChrW2Q+PjJdfDApPj0oa1soa1tjPj4yXXwwKSs2ND4+Ml18MCkpYnJlYWs7eW4oa1soa1tjPj4yXXwwKSs3MisoKGtbZD4+Ml18MCkqMjR8MCkrMjA+PjJdfDApO2tbKGtbYz4+Ml18MCkrNzIrKChrW2Q+PjJdfDApKjI0fDApKzIwPj4yXT0wO2tbZD4+Ml09KGtbZD4+Ml18MCkrMX1yPWU7cmV0dXJufWZ1bmN0aW9uIFNwKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MCxlPTA7ZT1yO3I9cisxNnwwO2I9ZSs4fDA7Yz1lKzR8MDtkPWU7a1tiPj4yXT1hO2tbYz4+Ml09a1soa1tiPj4yXXwwKSsyND4+Ml07d2hpbGUoMSl7aWYoIShrW2M+PjJdfDApKWJyZWFrO2tbZD4+Ml09a1soa1tjPj4yXXwwKSs4Pj4yXTt1bChrWyhrW2M+PjJdfDApKzEyPj4yXXwwKTtVZChrW2M+PjJdfDApO2tbYz4+Ml09a1tkPj4yXX1rWyhrW2I+PjJdfDApKzI0Pj4yXT0wO3I9ZTtyZXR1cm59ZnVuY3Rpb24gVHAoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MDtmPXI7cj1yKzE2fDA7ZD1mKzh8MDtlPWY7a1tkPj4yXT1hO2E9ZTtrW2E+PjJdPWI7a1thKzQ+PjJdPWM7aWYoKHZmKCl8MCk8MzAwODAwMil7cj1mO3JldHVybn1jPWU7ZT1rW2MrND4+Ml18MDthPShrW2Q+PjJdfDApKzQ4fDA7a1thPj4yXT1rW2M+PjJdO2tbYSs0Pj4yXT1lO3I9ZjtyZXR1cm59ZnVuY3Rpb24gVXAoYSl7YT1hfDA7dmFyIGI9MCxjPTA7Yz1yO3I9cisxNnwwO2I9YztrW2I+PjJdPWE7aWYoKHZmKCl8MCk8MzAwODAxMil7cj1jO3JldHVybn1hPShrW2I+PjJdfDApKzU2fDA7a1thPj4yXT1rW2E+PjJdfDE7cj1jO3JldHVybn1mdW5jdGlvbiBWcChhLGIsYyxkLGUsZixnKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDt2YXIgaD0wLGo9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MCxFPTAsRj0wLEc9MCxIPTAsST0wLEo9MCxLPTAsTD0wLE09MCxOPTAsTz0wLFA9MCxRPTAsUj0wLFM9MCxUPTAsVT0wLFY9MCxXPTAsWD0wLFk9MCxaPTAsXz0wLCQ9MCxhYT0wLGJhPTAsY2E9MCxkYT0wLGVhPTAsZmE9MCxnYT0wLGhhPTAsaWE9MDtoYT1yO3I9cisyODh8MDtWPWhhKzQwfDA7VT1oYSszMnwwO1Q9aGErMjR8MDtwPWhhKzE2fDA7cT1oYSs4fDA7bz1oYTt2PWhhKzI4MHwwO3c9aGErMjc2fDA7aWE9aGErMjcyfDA7aD1oYSsyNjh8MDt4PWhhKzI2NHwwO2RhPWhhKzI2MHwwO3k9aGErMjU2fDA7Uz1oYSsyNTJ8MDtlYT1oYSsyNDh8MDtnYT1oYSsyNDR8MDtFPWhhKzI0MHwwO0w9aGErMjM2fDA7Rj1oYSsyMzJ8MDtSPWhhKzIyOHwwO009aGErMjI0fDA7Wj1oYSsyMjB8MDtOPWhhKzIxNnwwO1A9aGErMjEyfDA7Rz1oYSsyMDh8MDt6PWhhKzIwNHwwO2ZhPWhhKzIwMHwwO089aGErMTk2fDA7QT1oYSsxOTJ8MDtEPWhhKzE4OHwwO0M9aGErMTg0fDA7YmE9aGErMTgwfDA7WD1oYSsxNzZ8MDtjYT1oYSsxNzJ8MDtZPWhhKzE2OHwwO189aGErMTY0fDA7Qj1oYSsxNjB8MDtRPWhhKzE1NnwwO3M9aGErMTUyfDA7bT1oYSsxNDh8MDt0PWhhKzE0NHwwO2o9aGErODB8MDtsPWhhKzc2fDA7bj1oYSs3MnwwO0g9aGErNjh8MDtJPWhhKzY0fDA7Vz1oYSs2MHwwO0o9aGErNTZ8MDtLPWhhKzUyfDA7YWE9aGErNDh8MDskPWhhKzQ0fDA7a1t2Pj4yXT1hO2tbdz4+Ml09YjtrW2lhPj4yXT1jO2tbaD4+Ml09ZDtrW3g+PjJdPWU7a1tkYT4+Ml09ZjtrW3k+PjJdPWc7a1tTPj4yXT1rW2lhPj4yXTtrW2VhPj4yXT0wO2tbZ2E+PjJdPTA7a1tSPj4yXT0wO2tbTT4+Ml09MDtrW0c+PjJdPShpWyhrW2tbeD4+Ml0+PjJdfDApKzM+PjBdfDApPT01MiYxO2tbZmE+PjJdPTA7a1tPPj4yXT0wO2tbQT4+Ml09MDtrW0Q+PjJdPTA7a1tDPj4yXT0wO2tbYmE+PjJdPTA7a1tYPj4yXT0wO2tbY2E+PjJdPTA7a1tZPj4yXT0wO2tbXz4+Ml09MDtrW0I+PjJdPTA7a1tRPj4yXT0wO2c9KHVSKGtbKGtbeD4+Ml18MCkrND4+Ml18MCl8MCkrMXwwO2tbTj4+Ml09ZztnPSh1UihrWyhrW3g+PjJdfDApKzg+PjJdfDApfDApKzF8MDtrW1A+PjJdPWc7a1tMPj4yXT0oa1toPj4yXXwwKS0yPDwyO2c9U2Qoa1tMPj4yXXwwKXwwO2tbej4+Ml09ZztpZihrW3o+PjJdfDApe2RTKGtbej4+Ml18MCwwLGtbTD4+Ml18MCl8MDtpYT1TZChrW0w+PjJdfDApfDA7a1tCPj4yXT1pYX1pZihrW0I+PjJdfDApZFMoa1tCPj4yXXwwLDAsa1tMPj4yXXwwKXwwO2RvIGlmKChrW3o+PjJdfDApIT0wJihrW0I+PjJdfDApIT0wKXtrW0U+PjJdPTM7d2hpbGUoMSl7aWYoa1tnYT4+Ml18MClicmVhaztpZigoa1tFPj4yXXwwKT49KGtbaD4+Ml18MCkpYnJlYWs7a1tzPj4yXT1rWyhrW3g+PjJdfDApKyhrW0U+PjJdPDwyKT4+Ml07aWYoKCgoa1tmYT4+Ml18MCk9PTA/KHVSKGtbcz4+Ml18MCl8MCk+Pj4wPjg6MCk/MD09KEpkKGtbcz4+Ml18MCwyNDAwNiw4KXwwKTowKT8wPT0oV3AoaVsoa1tzPj4yXXwwKSs4Pj4wXXwwKXwwKTowKXtpYT1YcChrW1M+PjJdfDAsKGtbcz4+Ml18MCkrOXwwLGZhLGtbeT4+Ml18MCl8MDtrW2dhPj4yXT1pYX1lbHNlIHU9MTU7ZG8gaWYoKHV8MCk9PTE1KXt1PTA7aWYoKGtbRz4+Ml18MCkhPTA/KFlwKGtbcz4+Ml18MCxtLHQpfDApIT0wOjApe2Q9ajtlPTIxNDQ7Yj1kKzY0fDA7ZG97a1tkPj4yXT1rW2U+PjJdO2Q9ZCs0fDA7ZT1lKzR8MH13aGlsZSgoZHwwKTwoYnwwKSk7aWYoIShrW3Q+PjJdfDApKXtrW2dhPj4yXT03O2JyZWFrfWtbbD4+Ml09MDt3aGlsZSgxKXtpZigoa1tsPj4yXXwwKT49OClicmVhaztrW24+PjJdPWorKGtbbD4+Ml08PDMpO2lmKChrW20+PjJdfDApPT0oa1soa1tuPj4yXXwwKSs0Pj4yXXwwKT8oSmQoa1tzPj4yXXwwLGtba1tuPj4yXT4+Ml18MCxrWyhrW24+PjJdfDApKzQ+PjJdfDApfDApPT0wOjApYnJlYWs7a1tsPj4yXT0oa1tsPj4yXXwwKSsxfWE6ZG8gaWYoKGtbbD4+Ml18MCk9PTgpe2lhPWtbeT4+Ml18MDtrW28+PjJdPWtbcz4+Ml07UGsoaWEsMjQwMTUsbyk7a1tnYT4+Ml09MX1lbHNlIHN3aXRjaChrW2w+PjJdfDApe2Nhc2UgMDp7aWYoISgodVIoa1t0Pj4yXXwwKXwwKT09ND8oSmQoa1t0Pj4yXXwwLDIwNTIxLDQpfDApPT0wOjApKXtpYT1rW3k+PjJdfDA7a1txPj4yXT1rW3Q+PjJdO1BrKGlhLDI0MDQyLHEpO2tbZ2E+PjJdPTF9a1tEPj4yXT0xO2JyZWFrIGF9Y2FzZSAxOntVZChrW2JhPj4yXXwwKTtrW2JhPj4yXT1rW3Q+PjJdO2tbdD4+Ml09MDticmVhayBhfWNhc2UgMjp7VWQoa1tYPj4yXXwwKTtrW1g+PjJdPWtbdD4+Ml07a1t0Pj4yXT0wO2JyZWFrIGF9Y2FzZSAzOntVZChrW2NhPj4yXXwwKTtrW2NhPj4yXT1rW3Q+PjJdO2tbdD4+Ml09MDticmVhayBhfWNhc2UgNDp7aWYoISgodVIoa1t0Pj4yXXwwKXwwKT09Mz8oSmQoa1t0Pj4yXXwwLDI0MDY5LDMpfDApPT0wOjApKXU9MzY7ZG8gaWYoKHV8MCk9PTM2KXt1PTA7aWYoKHVSKGtbdD4+Ml18MCl8MCk9PTQ/KEpkKGtbdD4+Ml18MCwyNDA3Myw0KXwwKT09MDowKWJyZWFrO2lhPWtbeT4+Ml18MDtrW3A+PjJdPWtbdD4+Ml07UGsoaWEsMjQwNzgscCk7a1tnYT4+Ml09MX13aGlsZSgwKTtpZigoaVtrW3Q+PjJdPj4wXXwwKT09MTAwKWQ9MTtlbHNlIGQ9KGlba1t0Pj4yXT4+MF18MCk9PTY4O2tbQz4+Ml09ZCYxO2JyZWFrIGF9Y2FzZSA1OntVZChrW1k+PjJdfDApO2tbWT4+Ml09a1t0Pj4yXTtrW3Q+PjJdPTA7YnJlYWsgYX1jYXNlIDY6e1VkKGtbXz4+Ml18MCk7a1tfPj4yXT1rW3Q+PjJdO2tbdD4+Ml09MDticmVhayBhfWNhc2UgNzp7Zz1rW3Q+PjJdfDA7aWE9a1tRPj4yXXwwO2tbUT4+Ml09aWErMTtrWyhrW0I+PjJdfDApKyhpYTw8Mik+PjJdPWc7a1t0Pj4yXT0wO2JyZWFrIGF9ZGVmYXVsdDpicmVhayBhfXdoaWxlKDApO1VkKGtbdD4+Ml18MCk7YnJlYWt9Zz0odVIoa1tzPj4yXXwwKXwwKSsxfDA7a1tSPj4yXT0oa1tSPj4yXXwwKStnO2c9a1tzPj4yXXwwO2lhPWtbTT4+Ml18MDtrW00+PjJdPWlhKzE7a1soa1t6Pj4yXXwwKSsoaWE8PDIpPj4yXT1nfXdoaWxlKDApO2tbRT4+Ml09KGtbRT4+Ml18MCkrMX1iOmRvIGlmKCgoa1tnYT4+Ml18MCk9PTAmKGtbWT4+Ml18MCkhPTA/KFVkKGtbWD4+Ml18MCksVWQoa1tjYT4+Ml18MCksa1tYPj4yXT0wLGtbY2E+PjJdPTAsKGtbTT4+Ml18MCk9PTApOjApPyhVZChrW3o+PjJdfDApLGtbej4+Ml09MCxpYT1acChrW3c+PjJdfDAsa1soa1t4Pj4yXXwwKSs0Pj4yXXwwLGtbWT4+Ml18MCx6LE0sUixrW3k+PjJdfDApfDAsa1tnYT4+Ml09aWEsKGtbZ2E+PjJdfDApPT0wJihrW18+PjJdfDApIT0wKTowKXtrW0g+PjJdPTA7d2hpbGUoMSl7aWYoKGtbSD4+Ml18MCk+PShrW00+PjJdfDApKWJyZWFrIGI7aWE9KGJlKGtbXz4+Ml18MCxrWyhrW3o+PjJdfDApKyhrW0g+PjJdPDwyKT4+Ml18MCl8MCk9PTA7ZD1rW0g+PjJdfDA7aWYoaWEpYnJlYWs7a1tIPj4yXT1kKzF9a1tJPj4yXT1kO3doaWxlKDEpe2lmKChrW0k+PjJdfDApPj0oa1tNPj4yXXwwKSlicmVhaztrWyhrW3o+PjJdfDApKyhrW0k+PjJdPDwyKT4+Ml09a1soa1t6Pj4yXXwwKSsoKGtbST4+Ml18MCkrMTw8Mik+PjJdO2tbST4+Ml09KGtbST4+Ml18MCkrMX1rW00+PjJdPShrW00+PjJdfDApKy0xfXdoaWxlKDApO2lmKCEoa1tnYT4+Ml18MCkpe2lmKCEoa1tNPj4yXXwwKSl7a1trW3o+PjJdPj4yXT0yNDEwMTtrW1I+PjJdPTg7a1tNPj4yXT0xfWlmKChrW2ZhPj4yXXwwKT09MD8oaWE9WHAoa1tTPj4yXXwwLDIwNDQ3LGZhLGtbeT4+Ml18MCl8MCxrW2dhPj4yXT1pYSwoa1tnYT4+Ml18MCkhPTApOjApYnJlYWs7aWE9X3Aoa1tiYT4+Ml18MCxPLEEpfDA7a1tnYT4+Ml09aWE7aWYoKGtbZ2E+PjJdfDApPT0xKXtpYT1rW3k+PjJdfDA7a1tUPj4yXT1rW2JhPj4yXTtQayhpYSwyNDEwOSxUKX1pZighKGtbZ2E+PjJdfDApKXtrW0w+PjJdPTI4MCsoa1tNPj4yXTw8MikrKChrW08+PjJdfDApKjI0fDApKyhrW00+PjJdfDApKyhrW1A+PjJdfDApKyhrW04+PjJdfDApKyhrW1I+PjJdfDApO2lhPVNkKGtbTD4+Ml18MCl8MDtrW2VhPj4yXT1pYTtpZighKGtbZWE+PjJdfDApKXtrW2dhPj4yXT03O2JyZWFrfWRTKGtbZWE+PjJdfDAsMCxrW0w+PjJdfDApfDA7a1soa1tlYT4+Ml18MCkrMTI+PjJdPWtbdz4+Ml07a1soa1tlYT4+Ml18MCkrMjQ+PjJdPWtbTT4+Ml07a1soa1tlYT4+Ml18MCkrMjYwPj4yXT0wO2tbKGtbZWE+PjJdfDApKzI4Pj4yXT0oa1tlYT4+Ml18MCkrMjgwO2tbKGtbZWE+PjJdfDApKzM2Pj4yXT1rW2ZhPj4yXTtrWyhrW2VhPj4yXXwwKSsyNTY+PjJdPTEwNDg1NzY7aVsoa1tlYT4+Ml18MCkrMjMwPj4wXT0oKGtbRz4+Ml18MCkhPTA/KGtbRD4+Ml18MCk9PTA6MCkmMTtpWyhrW2VhPj4yXXwwKSsyMjk+PjBdPWtbRz4+Ml07aVsoa1tlYT4+Ml18MCkrMjI4Pj4wXT1rW0c+PjJdO2lbKGtbZWE+PjJdfDApKzIzMT4+MF09a1tDPj4yXTtrWyhrW2VhPj4yXXwwKSs0OD4+Ml09MjU1O2tbKGtbZWE+PjJdfDApKzQwPj4yXT1rW1k+PjJdO2tbKGtbZWE+PjJdfDApKzQ0Pj4yXT1rW18+PjJdO2tbWT4+Ml09MDtrW18+PjJdPTA7a1soa1tlYT4+Ml18MCkrMjUyPj4yXT0oa1soa1tlYT4+Ml18MCkrMjg+PjJdfDApKyhrW00+PjJdPDwyKTtiUyhrWyhrW2VhPj4yXXwwKSsyNTI+PjJdfDAsa1tBPj4yXXwwLChrW08+PjJdfDApKjI0fDApfDA7a1soa1tlYT4+Ml18MCkrMjQ4Pj4yXT1rW08+PjJdO2tbRT4+Ml09MDt3aGlsZSgxKXtpZigoa1tFPj4yXXwwKT49KGtbTz4+Ml18MCkpYnJlYWs7dWsoKGtbKGtbZWE+PjJdfDApKzI1Mj4+Ml18MCkrKChrW0U+PjJdfDApKjI0fDApKzR8MCwxLDEpO2tbRT4+Ml09KGtbRT4+Ml18MCkrMX1rWyhrW2VhPj4yXXwwKSszMj4+Ml09KGtbKGtbZWE+PjJdfDApKzI1Mj4+Ml18MCkrKChrW08+PjJdfDApKjI0fDApO2tbWj4+Ml09KGtbKGtbZWE+PjJdfDApKzMyPj4yXXwwKSsoa1tNPj4yXXwwKTtrWyhrW2VhPj4yXXwwKSsyMD4+Ml09a1taPj4yXTtiUyhrW1o+PjJdfDAsa1soa1t4Pj4yXXwwKSs4Pj4yXXwwLGtbUD4+Ml18MCl8MDtrW1o+PjJdPShrW1o+PjJdfDApKyhrW1A+PjJdfDApO2tbKGtbZWE+PjJdfDApKzE2Pj4yXT1rW1o+PjJdO2JTKGtbWj4+Ml18MCxrWyhrW3g+PjJdfDApKzQ+PjJdfDAsa1tOPj4yXXwwKXwwO2tbWj4+Ml09KGtbWj4+Ml18MCkrKGtbTj4+Ml18MCk7a1tGPj4yXT0wO3doaWxlKDEpe2lmKChrW0Y+PjJdfDApPj0oa1tNPj4yXXwwKSlicmVhaztrW0o+PjJdPTA7aWE9JHAoa1soa1t6Pj4yXXwwKSsoa1tGPj4yXTw8Mik+PjJdfDAsSil8MDtrW1c+PjJdPWlhO2JTKGtbWj4+Ml18MCxrW1c+PjJdfDAsa1tKPj4yXXwwKXwwO2lbKGtbWj4+Ml18MCkrKGtbSj4+Ml18MCk+PjBdPTA7WWsoa1taPj4yXXwwKTtrWyhrWyhrW2VhPj4yXXwwKSsyOD4+Ml18MCkrKGtbRj4+Ml08PDIpPj4yXT1rW1o+PjJdO2tbWj4+Ml09KGtbWj4+Ml18MCkrKChrW0o+PjJdfDApKzEpO2tbRj4+Ml09KGtbRj4+Ml18MCkrMX1rW0Y+PjJdPTA7d2hpbGUoMSl7aWYoKGtbRj4+Ml18MCk+PShrW00+PjJdfDApKWJyZWFrO2lhPXVSKGtbKGtbKGtbZWE+PjJdfDApKzI4Pj4yXXwwKSsoa1tGPj4yXTw8Mik+PjJdfDApfDA7a1tLPj4yXT1pYTtrW0U+PjJdPTA7d2hpbGUoMSl7aWYoKGtbRT4+Ml18MCk+PShrW1E+PjJdfDApKWJyZWFrO2tbYWE+PjJdPWtbKGtbQj4+Ml18MCkrKGtbRT4+Ml08PDIpPj4yXTtpZigoKGtbYWE+PjJdfDApIT0wPyhpYT1rW0s+PjJdfDAsKGlhfDApPT0odVIoa1thYT4+Ml18MCl8MCkpOjApPzA9PShKZChrWyhrWyhrW2VhPj4yXXwwKSsyOD4+Ml18MCkrKGtbRj4+Ml08PDIpPj4yXXwwLGtbYWE+PjJdfDAsa1tLPj4yXXwwKXwwKTowKXtpWyhrWyhrW2VhPj4yXXwwKSszMj4+Ml18MCkrKGtbRj4+Ml18MCk+PjBdPTE7VWQoa1thYT4+Ml18MCk7a1soa1tCPj4yXXwwKSsoa1tFPj4yXTw8Mik+PjJdPTB9a1tFPj4yXT0oa1tFPj4yXXwwKSsxfWtbRj4+Ml09KGtbRj4+Ml18MCkrMX1rW0U+PjJdPTA7d2hpbGUoMSl7aWYoKGtbRT4+Ml18MCk+PShrW1E+PjJdfDApKWJyZWFrO2lmKGtbKGtbQj4+Ml18MCkrKGtbRT4+Ml08PDIpPj4yXXwwKXtpYT1rW3k+PjJdfDA7a1tVPj4yXT1rWyhrW0I+PjJdfDApKyhrW0U+PjJdPDwyKT4+Ml07UGsoaWEsMjQxNDQsVSk7a1tnYT4+Ml09MX1rW0U+PjJdPShrW0U+PjJdfDApKzF9aWYoKGtbZ2E+PjJdfDApPT0wPygoa1tYPj4yXXwwKT09MHwwKSE9KChrW2NhPj4yXXwwKT09MHwwKTowKXtrWyQ+PjJdPShrW1g+PjJdfDApPT0wPzI0MTYzOjI0MTcyO2tbZ2E+PjJdPTE7aWE9a1t5Pj4yXXwwO2tbVj4+Ml09a1skPj4yXTtQayhpYSwyNDE4MyxWKX1pYT1hcShrW2VhPj4yXXwwLGtbY2E+PjJdfDAsZ2EpfDA7a1soa1tlYT4+Ml18MCkrMjE2Pj4yXT1pYTtpYT1icShrW2VhPj4yXXwwLGtbWD4+Ml18MCxnYSl8MDtrWyhrW2VhPj4yXXwwKSsyMjA+PjJdPWlhO2lmKCEoa1tnYT4+Ml18MCkpe2lmKGtbdj4+Ml18MCl7aWE9Y3Eoa1tlYT4+Ml18MCl8MDtrW2dhPj4yXT1pYX1pZighKChrW0c+PjJdfDApIT0wfChrW3Y+PjJdfDApIT0wKSlpWyhrW2VhPj4yXXwwKSsyMjk+PjBdPTI7ZHEoZ2Esa1tlYT4+Ml18MCk7a1soa1tlYT4+Ml18MCkrMjI0Pj4yXT0oa1soa1tlYT4+Ml18MCkrMjM2Pj4yXXwwKS0zNTtlcShnYSxrW2VhPj4yXXwwKX19fX1lbHNlIGtbZ2E+PjJdPTc7d2hpbGUoMCk7VWQoa1tiYT4+Ml18MCk7VWQoa1tBPj4yXXwwKTtVZChrW1g+PjJdfDApO1VkKGtbY2E+PjJdfDApO1VkKGtbWT4+Ml18MCk7VWQoa1tfPj4yXXwwKTtrW0U+PjJdPTA7d2hpbGUoMSl7aWYoKGtbRT4+Ml18MCk+PShrW1E+PjJdfDApKWJyZWFrO1VkKGtbKGtbQj4+Ml18MCkrKGtbRT4+Ml08PDIpPj4yXXwwKTtrW0U+PjJdPShrW0U+PjJdfDApKzF9VWQoa1t6Pj4yXXwwKTtVZChrW0I+PjJdfDApO2Q9a1tlYT4+Ml18MDtpZighKGtbZ2E+PjJdfDApKXtrW2tbZGE+PjJdPj4yXT1kO2lhPWtbZ2E+PjJdfDA7cj1oYTtyZXR1cm4gaWF8MH1pZihkKXthbChrW2VhPj4yXXwwKXwwO2lhPWtbZ2E+PjJdfDA7cj1oYTtyZXR1cm4gaWF8MH1pZighKGtbZmE+PjJdfDApKXtpYT1rW2dhPj4yXXwwO3I9aGE7cmV0dXJuIGlhfDB9YmNba1soa1trW2ZhPj4yXT4+Ml18MCkrOD4+Ml0mMjU1XShrW2ZhPj4yXXwwKXwwO2lhPWtbZ2E+PjJdfDA7cj1oYTtyZXR1cm4gaWF8MH1mdW5jdGlvbiBXcChhKXthPWF8MDt2YXIgYj0wLGM9MDtjPXI7cj1yKzE2fDA7Yj1jO2lbYj4+MF09YTtpZihpW2I+PjBdJjEyOCl7YT0xO2E9YSYxO3I9YztyZXR1cm4gYXwwfWE9KGlbMjQ4NjUrKGlbYj4+MF18MCk+PjBdfDApIT0wO2E9YSYxO3I9YztyZXR1cm4gYXwwfWZ1bmN0aW9uIFhwKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wO3k9cjtyPXIrODB8MDt0PXkrMTZ8MDtzPXkrOHwwO3o9eTtlPXkrNzZ8MDtmPXkrNzJ8MDtBPXkrNjh8MDtnPXkrNjR8MDtoPXkrNjB8MDtxPXkrNTZ8MDt1PXkrNTJ8MDtvPXkrNDh8MDt2PXkrNDR8MDt3PXkrNDB8MDtuPXkrMzZ8MDtqPXkrMzJ8MDttPXkrMjh8MDtwPXkrMjR8MDtsPXkrMjB8MDtrW2Y+PjJdPWE7a1tBPj4yXT1iO2tbZz4+Ml09YztrW2g+PjJdPWQ7a1t1Pj4yXT1rW0E+PjJdO2tbbz4+Ml09MDtrW3o+PjJdPWtbQT4+Ml07Yj1ZZCgxODM5MSx6KXwwO2tbdj4+Ml09YjtpZighKGtbdj4+Ml18MCkpe2tbZT4+Ml09NztBPWtbZT4+Ml18MDtyPXk7cmV0dXJuIEF8MH1BPXVSKGtbdj4+Ml18MCl8MDtrW3c+PjJdPShrW3Y+PjJdfDApK0E7QT0kcChrW3Y+PjJdfDAsbyl8MDtrW3U+PjJdPUE7aWYoIShrW3U+PjJdfDApKWtbdT4+Ml09a1t2Pj4yXTtpWyhrW3U+PjJdfDApKyhrW28+PjJdfDApPj4wXT0wO1lrKGtbdT4+Ml18MCk7ej1rW2Y+PjJdfDA7QT1rW3U+PjJdfDA7QT1Payh6LEEsKHVSKGtbdT4+Ml18MCl8MCkrMXwwKXwwO2tbbj4+Ml09QTtpZihrW24+PjJdfDApe2tbaj4+Ml09MDtrW20+PjJdPTA7a1t1Pj4yXT0oa1t1Pj4yXXwwKSsoKGtbbz4+Ml18MCkrMSk7d2hpbGUoMSl7aWYoKGtbdT4+Ml18MCk+Pj4wPj0oa1t3Pj4yXXwwKT4+PjApYnJlYWs7QT0kcChrW3U+PjJdfDAsbyl8MDtrW3U+PjJdPUE7aWYoIUEpYnJlYWs7a1twPj4yXT0oa1ttPj4yXXwwKSsxPDwyO0E9VmQoa1tqPj4yXXwwLGtbcD4+Ml18MCl8MDtrW2w+PjJdPUE7aWYoIShrW2w+PjJdfDApKXt4PTExO2JyZWFrfWtbaj4+Ml09a1tsPj4yXTt6PWtbdT4+Ml18MDtBPWtbbT4+Ml18MDtrW20+PjJdPUErMTtrWyhrW2o+PjJdfDApKyhBPDwyKT4+Ml09ejtpWyhrW3U+PjJdfDApKyhrW28+PjJdfDApPj4wXT0wO1lrKGtbdT4+Ml18MCk7a1t1Pj4yXT0oa1t1Pj4yXXwwKSsoKGtbbz4+Ml18MCkrMSl9aWYoKHh8MCk9PTExKXtVZChrW3Y+PjJdfDApO1VkKGtbaj4+Ml18MCk7a1tlPj4yXT03O0E9a1tlPj4yXXwwO3I9eTtyZXR1cm4gQXwwfUE9WWJba1soa1tuPj4yXXwwKSs0Pj4yXSYyNTVdKGtbbT4+Ml18MCxrW2o+PjJdfDAsa1tnPj4yXXwwKXwwO2tbcT4+Ml09QTtpZihrW3E+PjJdfDApUGsoa1toPj4yXXwwLDI0ODQ3LHQpO2Vsc2Uga1trW2tbZz4+Ml0+PjJdPj4yXT1rW24+PjJdO1VkKGtbaj4+Ml18MCl9ZWxzZXtBPWtbaD4+Ml18MDtrW3M+PjJdPWtbdT4+Ml07UGsoQSwyMDU5NSxzKTtrW3E+PjJdPTF9VWQoa1t2Pj4yXXwwKTtrW2U+PjJdPWtbcT4+Ml07QT1rW2U+PjJdfDA7cj15O3JldHVybiBBfDB9ZnVuY3Rpb24gWXAoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxsPTAsbT0wLG49MDtuPXI7cj1yKzMyfDA7aD1uO2Q9bisyNHwwO2U9bisyMHwwO2Y9bisxNnwwO2c9bisxMnwwO2w9bis4fDA7aj1uKzR8MDtrW2U+PjJdPWE7a1tmPj4yXT1iO2tbZz4+Ml09YztrW2o+PjJdPWtbZT4+Ml07d2hpbGUoMSl7Yj1rW2o+PjJdfDA7aWYoKGlba1tqPj4yXT4+MF18MCk9PTYxKWJyZWFrO2lmKCEoaVtiPj4wXXwwKSl7bT00O2JyZWFrfWtbaj4+Ml09KGtbaj4+Ml18MCkrMX1pZigobXwwKT09NCl7a1tkPj4yXT0wO209a1tkPj4yXXwwO3I9bjtyZXR1cm4gbXwwfWtba1tmPj4yXT4+Ml09Yi0oa1tlPj4yXXwwKTtrW2g+PjJdPShrW2o+PjJdfDApKzE7bT1ZZCgxODM5MSxoKXwwO2tbbD4+Ml09bTtpZihrW2w+PjJdfDApWWsoa1tsPj4yXXwwKTtrW2tbZz4+Ml0+PjJdPWtbbD4+Ml07a1tkPj4yXT0xO209a1tkPj4yXXwwO3I9bjtyZXR1cm4gbXwwfWZ1bmN0aW9uIFpwKGEsYixjLGQsZSxmLGcpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO3ZhciBoPTAsaT0wLGo9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MDtBPXI7cj1yKzk2fDA7dz1BKzh8MDtCPUE7aD1BKzgwfDA7Qz1BKzc2fDA7RD1BKzcyfDA7aT1BKzY4fDA7aj1BKzY0fDA7bD1BKzYwfDA7bT1BKzU2fDA7dj1BKzUyfDA7ej1BKzQ4fDA7dT1BKzQ0fDA7bj1BKzQwfDA7cz1BKzM2fDA7cT1BKzMyfDA7bz1BKzI4fDA7eD1BKzI0fDA7dD1BKzIwfDA7eT1BKzE2fDA7cD1BKzEyfDA7a1toPj4yXT1hO2tbQz4+Ml09YjtrW0Q+PjJdPWM7a1tpPj4yXT1kO2tbaj4+Ml09ZTtrW2w+PjJdPWY7a1ttPj4yXT1nO2tbdj4+Ml09MDtrW3U+PjJdPTA7Yz1rW0Q+PjJdfDA7a1tCPj4yXT1rW0M+PjJdO2tbQis0Pj4yXT1jO2M9WWQoMjQ3OTIsQil8MDtrW3o+PjJdPWM7aWYoa1t6Pj4yXXwwKXtEPW5mKGtbaD4+Ml18MCxrW3o+PjJdfDAsLTEsdSwwKXwwO2tbdj4+Ml09RDtpZihrW3Y+PjJdfDApe0Q9a1ttPj4yXXwwO0M9bWYoa1toPj4yXXwwKXwwO2tbdz4+Ml09QztQayhELDE4MzkxLHcpfX1lbHNlIGtbdj4+Ml09NztVZChrW3o+PjJdfDApO2lmKGtbdj4+Ml18MCl7RD1rW3Y+PjJdfDA7cj1BO3JldHVybiBEfDB9a1tzPj4yXT0wO0Q9SGUoa1t1Pj4yXXwwKXwwO2tbcT4+Ml09RDtrW28+PjJdPTA7d2hpbGUoMSl7aWYoKGtbbz4+Ml18MCk+PShrW3E+PjJdfDApKWJyZWFrO0Q9UmUoa1t1Pj4yXXwwLGtbbz4+Ml18MCl8MDtrW3g+PjJdPUQ7RD0odVIoa1t4Pj4yXXwwKXwwKSsxfDA7a1tzPj4yXT0oa1tzPj4yXXwwKStEO2tbbz4+Ml09KGtbbz4+Ml18MCkrMX1EPVNkKChrW3E+PjJdPDwyKSsoa1tzPj4yXXwwKXwwKXwwO2tbbj4+Ml09RDthOmRvIGlmKCEoa1tuPj4yXXwwKSlrW3Y+PjJdPTc7ZWxzZXtrW3Q+PjJdPShrW24+PjJdfDApKyhrW3E+PjJdPDwyKTtrW28+PjJdPTA7d2hpbGUoMSl7aWYoKGtbbz4+Ml18MCk+PShrW3E+PjJdfDApKWJyZWFrIGE7RD1SZShrW3U+PjJdfDAsa1tvPj4yXXwwKXwwO2tbeT4+Ml09RDtEPSh1UihrW3k+PjJdfDApfDApKzF8MDtrW3A+PjJdPUQ7YlMoa1t0Pj4yXXwwLGtbeT4+Ml18MCxrW3A+PjJdfDApfDA7a1soa1tuPj4yXXwwKSsoa1tvPj4yXTw8Mik+PjJdPWtbdD4+Ml07a1t0Pj4yXT0oa1t0Pj4yXXwwKSsoa1twPj4yXXwwKTtrW28+PjJdPShrW28+PjJdfDApKzF9fXdoaWxlKDApO2ZlKGtbdT4+Ml18MCl8MDtrW2tbaj4+Ml0+PjJdPWtbcT4+Ml07a1trW2w+PjJdPj4yXT1rW3M+PjJdO2tba1tpPj4yXT4+Ml09a1tuPj4yXTtEPWtbdj4+Ml18MDtyPUE7cmV0dXJuIER8MH1mdW5jdGlvbiBfcChhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLGw9MCxtPTAsbj0wLG89MCxwPTA7cD1yO3I9cis0OHwwO2Q9cCszNnwwO2U9cCszMnwwO2Y9cCsyOHwwO2c9cCsyNHwwO2g9cCsyMHwwO2w9cCsxNnwwO249cCsxMnwwO289cCs4fDA7aj1wKzR8MDttPXA7a1tlPj4yXT1hO2tbZj4+Ml09YjtrW2c+PjJdPWM7a1tsPj4yXT0xO2E6ZG8gaWYoKGtbZT4+Ml18MCkhPTA/KGlba1tlPj4yXT4+MF18MCkhPTA6MCl7a1tsPj4yXT0oa1tsPj4yXXwwKSsxO2tbbj4+Ml09a1tlPj4yXTt3aGlsZSgxKXtpZighKGlba1tuPj4yXT4+MF18MCkpYnJlYWsgYTtpZigoaVtrW24+PjJdPj4wXXwwKT09NDQpa1tsPj4yXT0oa1tsPj4yXXwwKSsxO2tbbj4+Ml09KGtbbj4+Ml18MCkrMX19d2hpbGUoMCk7YT1TZCgoa1tsPj4yXXwwKSoyNHwwKXwwO2tbaD4+Ml09YTtrW2tbZz4+Ml0+PjJdPWtbaD4+Ml07aWYoIShrW2g+PjJdfDApKXtrW2Q+PjJdPTc7YT1rW2Q+PjJdfDA7cj1wO3JldHVybiBhfDB9ZFMoa1toPj4yXXwwLDAsKGtbbD4+Ml18MCkqMjR8MCl8MDtiOmRvIGlmKGtbZT4+Ml18MCl7a1tvPj4yXT1rW2U+PjJdO2tbaj4+Ml09MTt3aGlsZSgxKXtpZigoa1tqPj4yXXwwKT49KGtbbD4+Ml18MCkpYnJlYWsgYjtrW20+PjJdPTA7aWYoaHEobyxtKXwwKWJyZWFrO2lmKCEoa1ttPj4yXXwwKSl7a1tsPj4yXT0oa1tsPj4yXXwwKSstMTtrW2o+PjJdPShrW2o+PjJdfDApKy0xfWVsc2Uga1soa1toPj4yXXwwKSsoKGtbaj4+Ml18MCkqMjR8MCk+PjJdPWtbbT4+Ml07a1tvPj4yXT0oa1tvPj4yXXwwKSsxO2tbaj4+Ml09KGtbaj4+Ml18MCkrMX1rW2Q+PjJdPTE7YT1rW2Q+PjJdfDA7cj1wO3JldHVybiBhfDB9d2hpbGUoMCk7a1trW2Y+PjJdPj4yXT1rW2w+PjJdO2tbZD4+Ml09MDthPWtbZD4+Ml18MDtyPXA7cmV0dXJuIGF8MH1cbmZ1bmN0aW9uIGFGKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxuPTAsbz0wLHA9MCxxPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTAsRT0wLEY9MCxHPTAsSD0wLEk9MCxKPTAsSz0wLE09MCxOPTAsTz0wLFA9MCxRPTAsUj0wLFM9MCxUPTAsVT0wLFY9MCxXPTAsWD0wLFk9MCxaPTAsXz0wLCQ9MCxhYT0wLGJhPTAsY2E9MCxkYT0wLGVhPTAsZmE9MCxnYT0wLGhhPTAsaWE9MCxqYT0wLGthPTAsbGE9MCxtYT0wLG5hPTAsb2E9MDtvYT1yO3I9cisyNTZ8MDtmPW9hKzIyOHwwO2c9b2ErMjI0fDA7aD1vYSsyMjB8MDtkPW9hKzIxNnwwO2hhPW9hKzIxMnwwO1Y9b2ErMjA4fDA7UD1vYSsyMDR8MDtsYT1vYSs0MHwwO2lhPW9hKzMyfDA7dD1vYSsyNHwwO2ZhPW9hKzIwMHwwO0g9b2ErMTk2fDA7Sj1vYSsxOTJ8MDtLPW9hKzE4OHwwO2JhPW9hKzE4NHwwO3A9b2ErMTgwfDA7cz1vYSsyNDB8MDtlPW9hKzE2fDA7ej1vYSsxNzZ8MDt5PW9hKzE3MnwwO1E9b2ErMTY4fDA7Y2E9b2ErMTY0fDA7TT1vYSsyMzZ8MDtXPW9hKzE2MHwwO089b2ErMTU2fDA7cT1vYSsyMzR8MDtBPW9hKzE1MnwwO1U9b2ErMTQ4fDA7dT1vYSsxNDR8MDtZPW9hKzE0MHwwO0I9b2ErMTM2fDA7Uz1vYSsxMzJ8MDtnYT1vYSsxMjh8MDtaPW9hKzEyNHwwO189b2ErMTIwfDA7RD1vYSsxMTZ8MDtGPW9hKzExMnwwO25hPW9hKzEwOHwwO21hPW9hKzIzMnwwO3g9b2ErMTA0fDA7bj1vYSsyMzl8MDtvPW9hKzIzOHwwO049b2ErMTAwfDA7Rz1vYSs5NnwwO2VhPW9hKzkyfDA7VD1vYSs4OHwwO2FhPW9hKzg0fDA7amE9b2ErOHwwO2thPW9hOyQ9b2ErODB8MDtJPW9hKzc2fDA7dj1vYSs3MnwwO0M9b2ErNjh8MDtYPW9hKzY0fDA7Uj1vYSs2MHwwO2RhPW9hKzU2fDA7dz1vYSs1MnwwO0U9b2ErNDh8MDtrW2Y+PjJdPWE7a1tnPj4yXT1iO2tbaD4+Ml09YztrW2Q+PjJdPWtba1tnPj4yXT4+Ml07Yj10O2tbYj4+Ml09MDtrW2IrND4+Ml09MDtrW2ZhPj4yXT0wO2tbSD4+Ml09MDtrW0o+PjJdPTA7a1tiYT4+Ml09a1trW2Q+PjJdPj4yXTtrW3A+PjJdPWtba1tiYT4+Ml0+PjJdO2lmKGlbKGtbcD4+Ml18MCkrNjk+PjBdfDApe3I9b2E7cmV0dXJufWtbaGE+PjJdPShrWyhrW2c+PjJdfDApKzIwPj4yXXwwKSsoKGtbaD4+Ml18MCkqNDh8MCk7a1tWPj4yXT0oa1tkPj4yXXwwKSs0ODg7a1tQPj4yXT1rW2tbaGE+PjJdPj4yXTtiPXZFKGtbVj4+Ml18MCxrWyhrW1A+PjJdfDApKzEyPj4yXXwwKXwwO2Q9bGE7a1tkPj4yXT1iO2tbZCs0Pj4yXT1MO2tbSz4+Ml09bFtrW1A+PjJdPj4wXTtkbyBpZigoa1tLPj4yXXwwKT09MzMpe2lmKHZCKGtbYmE+PjJdfDAsa1tQPj4yXXwwKXwwKXtyPW9hO3JldHVybn1jPWtbVj4+Ml18MDthPShrW1A+PjJdfDApKzIwfDA7aWYoa1soa1tQPj4yXXwwKSs0Pj4yXSYyMDQ4KXtiPXdFKGMsa1thPj4yXXwwKXwwO2Q9KGtbaGE+PjJdfDApKzMyfDA7a1tkPj4yXT1iO2tbZCs0Pj4yXT1MO2JyZWFrfWVsc2V7Yj1VRChjLGtbYT4+Ml18MCl8MDtkPShrW2hhPj4yXXwwKSszMnwwO2tbZD4+Ml09YjtrW2QrND4+Ml09TDticmVha319ZWxzZSBpZigoa1tLPj4yXXwwKT09MzQpe2Q9KGtbaGE+PjJdfDApKzMyfDA7a1tkPj4yXT0wO2tbZCs0Pj4yXT0wO2JyZWFrfWVsc2V7Yj12RShrW1Y+PjJdfDAsa1soa1tQPj4yXXwwKSsxNj4+Ml18MCl8MDtkPShrW2hhPj4yXXwwKSszMnwwO2tbZD4+Ml09YjtrW2QrND4+Ml09TDticmVha313aGlsZSgwKTtiPXZFKGtbVj4+Ml18MCxrW1A+PjJdfDApfDA7ZD1pYTtrW2Q+PjJdPWI7a1tkKzQ+PjJdPUw7aWYoa1soa1tQPj4yXXwwKSs0Pj4yXSYxKXtjPVlEKGtbVj4+Ml18MCxqWyhrW1A+PjJdfDApKzM2Pj4xXXwwKXwwO2E9ZTtrW2E+PjJdPWM7a1thKzQ+PjJdPUw7YT1lO2M9aWE7Yj1rW2MrND4+Ml18a1thKzQ+PjJdO2Q9aWE7a1tkPj4yXT1rW2M+PjJdfGtbYT4+Ml07a1tkKzQ+PjJdPWI7ZD1lO2Q9X1Ioa1tkPj4yXXwwLGtbZCs0Pj4yXXwwLDEsMCl8MDtlPXQ7a1tlPj4yXT1kO2tbZSs0Pj4yXT1MfWQ9aWE7Yz1rW2QrND4+Ml18MDtlPShrW2hhPj4yXXwwKSs0MHwwO2tbZT4+Ml09a1tkPj4yXTtrW2UrND4+Ml09YztrWyhrW2hhPj4yXXwwKSsyMD4+Ml09LTE7a1soa1toYT4+Ml18MCkrMTY+PjJdPS0xO2pbKGtbaGE+PjJdfDApKzEyPj4xXT0wO2U9KGJGKGtbSz4+Ml18MCl8MCkhPTA7Yz1rW1A+PjJdfDA7YTpkbyBpZihlKXtVPXV5KGtbYysxMj4+Ml18MCl8MDtrW1E+PjJdPVU7VT11eShrWyhrW1A+PjJdfDApKzE2Pj4yXXwwKXwwO2tbY2E+PjJdPVU7VT0oa1toYT4+Ml18MCkrMzJ8MDtZPWxhO2pbTT4+MV09KChrW1U+PjJdJmtbWT4+Ml18MCk9PTA/KGtbVSs0Pj4yXSZrW1krND4+Ml18MCk9PTA6MCk/ODE5MToyMDQ4O2lmKChrWyhrW2hhPj4yXXwwKSsyND4+Ml18MCk+MClrW1E+PjJdPWtbKGtbKGtbKGtbUT4+Ml18MCkrMjA+PjJdfDApKzQ+PjJdfDApKygoKGtbKGtbaGE+PjJdfDApKzI0Pj4yXXwwKS0xfDApKjIwfDApPj4yXTtZPWxhO2lmKGNGKGtbZj4+Ml18MCxrW0s+PjJdfDAsa1tZPj4yXXwwLGtbWSs0Pj4yXXwwLGtbUT4+Ml18MCx6LHkpfDApe2tbKGtbaGE+PjJdfDApKzIwPj4yXT1rW3o+PjJdO2tbKGtbaGE+PjJdfDApKzI4Pj4yXT1rW3k+PjJdO1k9KGRGKGtbSz4+Ml18MCl8MCkmNjU1MzU7alsoa1toYT4+Ml18MCkrMTI+PjFdPVkmbVtNPj4xXX1pZigoa1tLPj4yXXwwKT09Mjkpe1k9KGtbaGE+PjJdfDApKzEwfDA7altZPj4xXT1tW1k+PjFdfDIwNDh9aWYoKGtbY2E+PjJdfDApIT0wPyhZPShrW2hhPj4yXXwwKSszMnwwLChjRihrW2Y+PjJdfDAsa1tLPj4yXXwwLGtbWT4+Ml18MCxrW1krND4+Ml18MCxrW2NhPj4yXXwwLHoseSl8MCkhPTApOjApe2pbcT4+MV09MDtpZigoa1soa1toYT4+Ml18MCkrMjA+PjJdfDApPj0wKXtjYT1TeShrW3A+PjJdfDAsa1tQPj4yXXwwLDApfDA7a1tPPj4yXT1jYTtpZihpWyhrW3A+PjJdfDApKzY5Pj4wXXwwKXtzdihrW3A+PjJdfDAsa1tPPj4yXXwwKTtyPW9hO3JldHVybn1jYT1lRihrW2c+PjJdfDAsa1tPPj4yXXwwLDMpfDA7a1tBPj4yXT1jYTtpZighKGtbQT4+Ml18MCkpe3I9b2E7cmV0dXJufWtbVz4+Ml09KGtbKGtbZz4+Ml18MCkrMjA+PjJdfDApKygoa1tBPj4yXXwwKSo0OHwwKTtmRihrW2c+PjJdfDAsa1tBPj4yXXwwLGtbaD4+Ml18MCk7aWYoKGtbSz4+Ml18MCk9PTI5KXtjYT0oa1tXPj4yXXwwKSsxMHwwO2pbY2E+PjFdPW1bY2E+PjFdfDIwNDh9a1toYT4+Ml09KGtbKGtbZz4+Ml18MCkrMjA+PjJdfDApKygoa1toPj4yXXwwKSo0OHwwKTtjYT0oa1toYT4+Ml18MCkrMTB8MDtqW2NhPj4xXT1tW2NhPj4xXXw4O2lmKGdGKGtbYmE+PjJdfDAsa1tPPj4yXXwwKXwwKXtjYT0oa1toYT4+Ml18MCkrMTJ8MDtqW2NhPj4xXT1tW2NhPj4xXXwyMDQ4O2pbcT4+MV09MjA0OH19ZWxzZXtrW08+PjJdPWtbUD4+Ml07a1tXPj4yXT1rW2hhPj4yXX1oRihrW2JhPj4yXXwwLGtbTz4+Ml18MCk7a1soa1tXPj4yXXwwKSsyMD4+Ml09a1t6Pj4yXTtrWyhrW1c+PjJdfDApKzI4Pj4yXT1rW3k+PjJdO1U9bGE7WT10O2xhPWtbVSs0Pj4yXXxrW1krND4+Ml07Y2E9KGtbVz4+Ml18MCkrMzJ8MDtrW2NhPj4yXT1rW1U+PjJdfGtbWT4+Ml07a1tjYSs0Pj4yXT1sYTtjYT1pYTtpYT1rW2NhKzQ+PjJdfDA7bGE9KGtbVz4+Ml18MCkrNDB8MDtrW2xhPj4yXT1rW2NhPj4yXTtrW2xhKzQ+PjJdPWlhO2xhPShkRihsW2tbTz4+Ml0+PjBdfDApfDApJjY1NTM1O2pbKGtbVz4+Ml18MCkrMTI+PjFdPWxhKyhtW3E+PjFdfDApJm1bTT4+MV19fWVsc2V7aWYoKGxbYz4+MF18MCk9PTMyPyhsWyhrW2c+PjJdfDApKzg+PjBdfDApPT0yODowKXtrW1U+PjJdPWtbKGtbUD4+Ml18MCkrMjA+PjJdO2tbdT4+Ml09MDt3aGlsZSgxKXtpZigoa1t1Pj4yXXwwKT49MilicmVhayBhO2NhPWtbYmE+PjJdfDA7aWE9bFszNDgzMisoa1t1Pj4yXXwwKT4+MF18MDtsYT1TeShrW3A+PjJdfDAsa1soa1tQPj4yXXwwKSsxMj4+Ml18MCwwKXwwO2xhPU92KGNhLGlhLGxhLFN5KGtbcD4+Ml18MCxrWyhrWyhrW1U+PjJdfDApKzQ+PjJdfDApKygoa1t1Pj4yXXwwKSoyMHwwKT4+Ml18MCwwKXwwLDApfDA7a1tZPj4yXT1sYTtpRihrW1k+PjJdfDAsa1tQPj4yXXwwKTtsYT1lRihrW2c+PjJdfDAsa1tZPj4yXXwwLDMpfDA7a1tCPj4yXT1sYTthRihrW2Y+PjJdfDAsa1tnPj4yXXwwLGtbQj4+Ml18MCk7a1toYT4+Ml09KGtbKGtbZz4+Ml18MCkrMjA+PjJdfDApKygoa1toPj4yXXwwKSo0OHwwKTtmRihrW2c+PjJdfDAsa1tCPj4yXXwwLGtbaD4+Ml18MCk7a1t1Pj4yXT0oa1t1Pj4yXXwwKSsxfX1pZigobFtrW1A+PjJdPj4wXXwwKT09Mjcpe2pGKGtbZj4+Ml18MCxrW2c+PjJdfDAsa1toPj4yXXwwKTtrW2hhPj4yXT0oa1soa1tnPj4yXXwwKSsyMD4+Ml18MCkrKChrW2g+PjJdfDApKjQ4fDApfX13aGlsZSgwKTtpZigobFsoa1tnPj4yXXwwKSs4Pj4wXXwwKT09Mjg/KGtGKGtbYmE+PjJdfDAsa1tQPj4yXXwwLGZhLEgsSil8MCkhPTA6MCl7alttYT4+MV09MjU5O2tbUz4+Ml09a1soa1soa1soa1tQPj4yXXwwKSsyMD4+Ml18MCkrND4+Ml18MCkrMjA+PjJdO21hPVN5KGtbcD4+Ml18MCxrW2ZhPj4yXXwwLDApfDA7a1tnYT4+Ml09bWE7YjpkbyBpZigoa1tKPj4yXXwwKSE9MD8oaVsoa1trW2JhPj4yXT4+Ml18MCkrNjk+PjBdfDApPT0wOjApe21hPShrW2hhPj4yXXwwKSsxMHwwO2pbbWE+PjFdPW1bbWE+PjFdfDEwMjQ7a1t4Pj4yXT0wO3doaWxlKDEpe21hPWlbKGtbKGtbZmE+PjJdfDApKzg+PjJdfDApKyhrW3g+PjJdfDApPj4wXXwwO2lbbj4+MF09bWE7aWYoIShtYTw8MjQ+PjI0KSlicmVhayBiO2lbKGtbKGtbZmE+PjJdfDApKzg+PjJdfDApKyhrW3g+PjJdfDApPj4wXT1pW24+PjBdJn4obFsxODQwMysobFtuPj4wXXwwKT4+MF0mMzIpO2lbKGtbKGtbZ2E+PjJdfDApKzg+PjJdfDApKyhrW3g+PjJdfDApPj4wXT1pWzE3NjEzKyhsW24+PjBdfDApPj4wXXwwO2tbeD4+Ml09KGtbeD4+Ml18MCkrMX19d2hpbGUoMCk7aWYoIShpWyhrW3A+PjJdfDApKzY5Pj4wXXwwKSl7bWE9KFRmKGtbKGtbZ2E+PjJdfDApKzg+PjJdfDApfDApLTF8MDtrW04+PjJdPShrWyhrW2dhPj4yXXwwKSs4Pj4yXXwwKSttYTtpW28+PjBdPWlba1tOPj4yXT4+MF18MDtpZihrW0o+PjJdfDApe2lmKChsW28+PjBdfDApPT02NClrW0g+PjJdPTA7aVtvPj4wXT1pWzE3NjEzKyhsW28+PjBdfDApPj4wXXwwfWlba1tOPj4yXT4+MF09KGxbbz4+MF18MCkrMX1rW25hPj4yXT0oa1tKPj4yXXwwKSE9MD8yMDQyOTozNDgzNDtsYT1TeShrW3A+PjJdfDAsa1tTPj4yXXwwLDApfDA7a1taPj4yXT1sYTtsYT1rW2JhPj4yXXwwO21hPWV6KGtbYmE+PjJdfDAsa1taPj4yXXwwLGtbbmE+PjJdfDApfDA7bWE9T3YobGEsNDEsbWEsa1tmYT4+Ml18MCwwKXwwO2tbWj4+Ml09bWE7aUYoa1taPj4yXXwwLGtbUD4+Ml18MCk7bWE9ZUYoa1tnPj4yXXwwLGtbWj4+Ml18MCwyNTkpfDA7a1tEPj4yXT1tYTthRihrW2Y+PjJdfDAsa1tnPj4yXXwwLGtbRD4+Ml18MCk7bWE9U3koa1twPj4yXXwwLGtbUz4+Ml18MCwwKXwwO2tbXz4+Ml09bWE7bWE9a1tiYT4+Ml18MDtuYT1leihrW2JhPj4yXXwwLGtbXz4+Ml18MCxrW25hPj4yXXwwKXwwO25hPU92KG1hLDQwLG5hLGtbZ2E+PjJdfDAsMCl8MDtrW18+PjJdPW5hO2lGKGtbXz4+Ml18MCxrW1A+PjJdfDApO25hPWVGKGtbZz4+Ml18MCxrW18+PjJdfDAsMjU5KXwwO2tbRj4+Ml09bmE7YUYoa1tmPj4yXXwwLGtbZz4+Ml18MCxrW0Y+PjJdfDApO2tbaGE+PjJdPShrWyhrW2c+PjJdfDApKzIwPj4yXXwwKSsoKGtbaD4+Ml18MCkqNDh8MCk7aWYoa1tIPj4yXXwwKXtmRihrW2c+PjJdfDAsa1tEPj4yXXwwLGtbaD4+Ml18MCk7ZkYoa1tnPj4yXXwwLGtbRj4+Ml18MCxrW2g+PjJdfDApfX1pZigoKGxbKGtbZz4+Ml18MCkrOD4+MF18MCk9PTI4PyhsRihrW1A+PjJdfDAscyl8MCkhPTA6MCk/KGtbZWE+PjJdPWtba1soa1soa1tQPj4yXXwwKSsyMD4+Ml18MCkrND4+Ml0+PjJdLGtbVD4+Ml09a1soa1soa1soa1tQPj4yXXwwKSsyMD4+Ml18MCkrND4+Ml18MCkrMjA+PjJdLG1hPXZFKGtbVj4+Ml18MCxrW2VhPj4yXXwwKXwwLG5hPWthLGtbbmE+PjJdPW1hLGtbbmErND4+Ml09TCxuYT12RShrW1Y+PjJdfDAsa1tUPj4yXXwwKXwwLG1hPWphLGtbbWE+PjJdPW5hLGtbbWErND4+Ml09TCxtYT1rYSxuYT1qYSwoa1ttYT4+Ml0ma1tuYT4+Ml18MCk9PTA/KGtbbWErND4+Ml0ma1tuYSs0Pj4yXXwwKT09MDowKTowKXtuYT1rW2JhPj4yXXwwO25hPU92KG5hLDMwLDAsU3koa1twPj4yXXwwLGtbZWE+PjJdfDAsMCl8MCwwKXwwO2tbJD4+Ml09bmE7bmE9ZUYoa1tnPj4yXXwwLGtbJD4+Ml18MCwzKXwwO2tbRz4+Ml09bmE7a1thYT4+Ml09KGtbKGtbZz4+Ml18MCkrMjA+PjJdfDApKygoa1tHPj4yXXwwKSo0OHwwKTtuYT1rYTttYT1rW25hKzQ+PjJdfDA7bGE9KGtbYWE+PjJdfDApKzMyfDA7a1tsYT4+Ml09a1tuYT4+Ml07a1tsYSs0Pj4yXT1tYTtrWyhrW2FhPj4yXXwwKSsyMD4+Ml09a1soa1tUPj4yXXwwKSsyOD4+Ml07a1soa1thYT4+Ml18MCkrMjg+PjJdPWpbKGtbVD4+Ml18MCkrMzI+PjFdO2pbKGtbYWE+PjJdfDApKzEyPj4xXT02NDtpWyhrW2FhPj4yXXwwKSsxNT4+MF09aVtzPj4wXXwwO2ZGKGtbZz4+Ml18MCxrW0c+PjJdfDAsa1toPj4yXXwwKTtrW2hhPj4yXT0oa1soa1tnPj4yXXwwKSsyMD4+Ml18MCkrKChrW2g+PjJdfDApKjQ4fDApO2xhPShrW2hhPj4yXXwwKSsxMHwwO2pbbGE+PjFdPW1bbGE+PjFdfDg7bGE9KGtbaGE+PjJdfDApKzQwfDA7bWE9a1tsYSs0Pj4yXXwwO25hPShrW2FhPj4yXXwwKSs0MHwwO2tbbmE+PjJdPWtbbGE+PjJdO2tbbmErND4+Ml09bWF9ZG8gaWYoKGxbKGtbZz4+Ml18MCkrOD4+MF18MCk9PTI4KXtpZigobFtrW1A+PjJdPj4wXXwwKSE9Mzc/KGxba1tQPj4yXT4+MF18MCkhPTI5OjApYnJlYWs7aWYoZkIoa1soa1tQPj4yXXwwKSsxMj4+Ml18MCl8MCl7aWYoKGtbKGtbKGtbUD4+Ml18MCkrMTI+PjJdfDApKzQ+PjJdJjIwNDh8MCkhPTA/KGtbKGtbKGtbUD4+Ml18MCkrMTY+PjJdfDApKzQ+PjJdJjIwNDh8MCkhPTA6MClicmVhaztuYT1teihrWyhrW1A+PjJdfDApKzEyPj4yXXwwKXwwO2tbST4+Ml09bmE7a1t2Pj4yXT0wO3doaWxlKDEpe2lmKChrW3Y+PjJdfDApPj0oa1tJPj4yXXwwKSlicmVhaztuYT1tRihrW2JhPj4yXXwwLGtbKGtbUD4+Ml18MCkrMTI+PjJdfDAsa1t2Pj4yXXwwKXwwO2tbUj4+Ml09bmE7bmE9bUYoa1tiYT4+Ml18MCxrWyhrW1A+PjJdfDApKzE2Pj4yXXwwLGtbdj4+Ml18MCl8MDtrW2RhPj4yXT1uYTtuYT1PdihrW2JhPj4yXXwwLGxba1tQPj4yXT4+MF18MCxrW1I+PjJdfDAsa1tkYT4+Ml18MCwwKXwwO2tbWD4+Ml09bmE7aUYoa1tYPj4yXXwwLGtbUD4+Ml18MCk7bmE9ZUYoa1tnPj4yXXwwLGtbWD4+Ml18MCwxKXwwO2tbQz4+Ml09bmE7YUYoa1tmPj4yXXwwLGtbZz4+Ml18MCxrW0M+PjJdfDApO2tbdj4+Ml09KGtbdj4+Ml18MCkrMX1rW2hhPj4yXT0oa1soa1tnPj4yXXwwKSsyMD4+Ml18MCkrKChrW2g+PjJdfDApKjQ4fDApO2pbKGtbaGE+PjJdfDApKzEwPj4xXT02O2pbKGtbaGE+PjJdfDApKzEyPj4xXT0wfX13aGlsZSgwKTtjOmRvIGlmKCgoKChsWyhrW2c+PjJdfDApKzg+PjBdfDApPT0yOD8obFtrW1A+PjJdPj4wXXwwKT09MzM6MCk/KGtbKGtbaGE+PjJdfDApKzI0Pj4yXXwwKT09MDowKT8obFtrWyhrW1A+PjJdfDApKzEyPj4yXT4+MF18MCk9PTE1ODowKT8oa1soa1soa1tQPj4yXXwwKSsyMD4+Ml18MCkrNDg+PjJdfDApPT0wOjApe2tbdz4+Ml09MDt3aGlsZSgxKXtuYT1rW3c+PjJdfDA7aWYoKG5hfDApPj0obXooa1soa1tQPj4yXXwwKSsxMj4+Ml18MCl8MCkpYnJlYWsgYztuYT1lRihrW2c+PjJdfDAsa1tQPj4yXXwwLDIpfDA7a1tFPj4yXT1uYTtrWyhrWyhrW2c+PjJdfDApKzIwPj4yXXwwKSsoKGtbRT4+Ml18MCkqNDh8MCkrMjQ+PjJdPShrW3c+PjJdfDApKzE7YUYoa1tmPj4yXXwwLGtbZz4+Ml18MCxrW0U+PjJdfDApO2ZGKGtbZz4+Ml18MCxrW0U+PjJdfDAsa1toPj4yXXwwKTtrW3c+PjJdPShrW3c+PjJdfDApKzF9fXdoaWxlKDApO2xhPXQ7bmE9KGtbaGE+PjJdfDApKzMyfDA7a2E9bmE7bWE9a1trYSs0Pj4yXXxrW2xhKzQ+PjJdO2tbbmE+PjJdPWtba2E+PjJdfGtbbGE+PjJdO2tbbmErND4+Ml09bWE7cj1vYTtyZXR1cm59ZnVuY3Rpb24gYkYoYSl7YT1hfDA7dmFyIGI9MCxjPTA7Yz1yO3I9cisxNnwwO2I9YztrW2I+PjJdPWE7aWYoKGtbYj4+Ml18MCkhPTMzPyEoKGtbYj4+Ml18MCk+PTM3JihrW2I+PjJdfDApPD00MXwoa1tiPj4yXXwwKT09MzQpOjApYj0oa1tiPj4yXXwwKT09Mjk7ZWxzZSBiPTE7cj1jO3JldHVybiBiJjF8MH1mdW5jdGlvbiBjRihhLGIsYyxkLGUsZixnKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDt2YXIgaD0wLGk9MCxuPTAsbz0wLHA9MCxxPTAscz0wLHQ9MCx1PTAsdj0wLHc9MDt2PXI7cj1yKzQ4fDA7cT12KzQwfDA7aD12KzM2fDA7dz12KzMyfDA7aT12O249disyOHwwO3M9disyNHwwO3Q9disyMHwwO3A9disxNnwwO289disxMnwwO3U9dis4fDA7a1toPj4yXT1hO2tbdz4+Ml09YjthPWk7a1thPj4yXT1jO2tbYSs0Pj4yXT1kO2tbbj4+Ml09ZTtrW3M+PjJdPWY7a1t0Pj4yXT1nO2lmKCgoa1t3Pj4yXXwwKT49Mzg/KGxba1tuPj4yXT4+MF18MCk9PTE1ODowKSYoa1t3Pj4yXXwwKTw9NDEpa1tuPj4yXT1rW2tbKGtbKGtbbj4+Ml18MCkrMjA+PjJdfDApKzQ+PjJdPj4yXTtpZigobFtrW24+PjJdPj4wXXwwKT09MTUyKXtrW2tbcz4+Ml0+PjJdPWtbKGtbbj4+Ml18MCkrMjg+PjJdO2tba1t0Pj4yXT4+Ml09alsoa1tuPj4yXXwwKSszMj4+MV07a1txPj4yXT0xO3c9a1txPj4yXXwwO3I9djtyZXR1cm4gd3wwfXc9aTtpZigoa1t3Pj4yXXwwKT09MCYoa1t3KzQ+PjJdfDApPT0wKXtrW3E+PjJdPTA7dz1rW3E+PjJdfDA7cj12O3JldHVybiB3fDB9dz1pO2c9a1t3Pj4yXXwwO3c9a1t3KzQ+PjJdfDA7Zj1pO2Y9X1Ioa1tmPj4yXXwwLGtbZis0Pj4yXXwwLDEsMCl8MDtpZigoZyZmfDApIT0wfCh3Jkx8MCkhPTApe2tbcT4+Ml09MDt3PWtbcT4+Ml18MDtyPXY7cmV0dXJuIHd8MH1rW28+PjJdPTA7d2hpbGUoMSl7dz1pO2Y9a1t3KzQ+PjJdfDA7Yz1rW28+PjJdfDA7aWYoIShmPj4+MD4wfChmfDApPT0wJihrW3c+PjJdfDApPj4+MD4xKSlicmVhaztrW28+PjJdPWMrMTtmPWk7Zj1hUyhrW2Y+PjJdfDAsa1tmKzQ+PjJdfDAsMSl8MDt3PWk7a1t3Pj4yXT1mO2tbdys0Pj4yXT1MfWtbdT4+Ml09a1soa1toPj4yXXwwKSs4KyhjKjcyfDApKzQ0Pj4yXTtrW3A+PjJdPWtbKGtbKGtbaD4+Ml18MCkrOCsoKGtbbz4+Ml18MCkqNzJ8MCkrMTY+PjJdfDApKzg+PjJdO2E6d2hpbGUoMSl7aWYoIShrW3A+PjJdfDApKXtjPTIyO2JyZWFrfWI6ZG8gaWYoa1soa1twPj4yXXwwKSs0MD4+Ml18MCl7a1tvPj4yXT0wO3doaWxlKDEpe2lmKChrW28+PjJdfDApPj0obVsoa1twPj4yXXwwKSs1MD4+MV18MCkpYnJlYWsgYjtpZigoalsoa1soa1twPj4yXXwwKSs0Pj4yXXwwKSsoa1tvPj4yXTw8MSk+PjFdfDApPT0tMj8oVXkoa1tuPj4yXXwwLGtbKGtbKGtbKGtbcD4+Ml18MCkrNDA+PjJdfDApKzQ+PjJdfDApKygoa1tvPj4yXXwwKSoyMHwwKT4+Ml18MCxrW3U+PjJdfDApfDApPT0wOjApe2M9MTk7YnJlYWsgYX1rW28+PjJdPShrW28+PjJdfDApKzF9fXdoaWxlKDApO2tbcD4+Ml09a1soa1twPj4yXXwwKSsyMD4+Ml19aWYoKGN8MCk9PTE5KXtrW2tbcz4+Ml0+PjJdPWtbdT4+Ml07a1trW3Q+PjJdPj4yXT0tMjtrW3E+PjJdPTE7dz1rW3E+PjJdfDA7cj12O3JldHVybiB3fDB9ZWxzZSBpZigoY3wwKT09MjIpe2tbcT4+Ml09MDt3PWtbcT4+Ml18MDtyPXY7cmV0dXJuIHd8MH1yZXR1cm4gMH1mdW5jdGlvbiBkRihhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTA7ZD1yO3I9cisxNnwwO2I9ZDtjPWQrNHwwO2tbYj4+Ml09YTtkbyBpZigoa1tiPj4yXXwwKSE9MzMpe2lmKChrW2I+PjJdfDApPT0zNCl7altjPj4xXT0yNTY7YnJlYWt9aWYoKGtbYj4+Ml18MCk9PTI5KXtqW2M+PjFdPTEyODticmVha31lbHNle2pbYz4+MV09Mjw8KGtbYj4+Ml18MCktMzc7YnJlYWt9fWVsc2UgaltjPj4xXT0xO3doaWxlKDApO3I9ZDtyZXR1cm4galtjPj4xXXwwfWZ1bmN0aW9uIGVGKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxpPTAsbD0wLG49MCxvPTA7bz1yO3I9ciszMnwwO2w9bysyNHwwO2Q9bysyMHwwO2U9bysxNnwwO2Y9bysyOHwwO2k9bysxMnwwO249bys4fDA7aD1vKzR8MDtnPW87a1tkPj4yXT1hO2tbZT4+Ml09YjtqW2Y+PjFdPWM7ZG8gaWYoKGtbKGtbZD4+Ml18MCkrMTI+PjJdfDApPj0oa1soa1tkPj4yXXwwKSsxNj4+Ml18MCkpe2tbaD4+Ml09a1soa1tkPj4yXXwwKSsyMD4+Ml07a1tnPj4yXT1rW2tba1trW2Q+PjJdPj4yXT4+Ml0+PjJdO2M9ZHgoa1tnPj4yXXwwLChrWyhrW2Q+PjJdfDApKzE2Pj4yXXwwKSo0ODw8MSwwKXwwO2tbKGtbZD4+Ml18MCkrMjA+PjJdPWM7aWYoa1soa1tkPj4yXXwwKSsyMD4+Ml18MCl7YlMoa1soa1tkPj4yXXwwKSsyMD4+Ml18MCxrW2g+PjJdfDAsKGtbKGtbZD4+Ml18MCkrMTI+PjJdfDApKjQ4fDApfDA7aWYoKGtbaD4+Ml18MCkhPSgoa1tkPj4yXXwwKSsyNHwwKSliZyhrW2c+PjJdfDAsa1toPj4yXXwwKTtjPSgodXUoa1tnPj4yXXwwLGtbKGtbZD4+Ml18MCkrMjA+PjJdfDApfDApPj4+MCkvNDh8MDtrWyhrW2Q+PjJdfDApKzE2Pj4yXT1jO2JyZWFrfWlmKChtW2Y+PjFdfDApJjEpc3Yoa1tnPj4yXXwwLGtbZT4+Ml18MCk7a1soa1tkPj4yXXwwKSsyMD4+Ml09a1toPj4yXTtrW2w+PjJdPTA7bj1rW2w+PjJdfDA7cj1vO3JldHVybiBufDB9d2hpbGUoMCk7YT0oa1tkPj4yXXwwKSsxMnwwO2M9a1thPj4yXXwwO2tbYT4+Ml09YysxO2tbbj4+Ml09YztrW2k+PjJdPShrWyhrW2Q+PjJdfDApKzIwPj4yXXwwKSsoYyo0OHwwKTtpZigoa1tlPj4yXXwwKSE9MD8oa1soa1tlPj4yXXwwKSs0Pj4yXSYyNjIxNDR8MCkhPTA6MCl7Yz1rWyhrW2U+PjJdfDApKzI4Pj4yXXwwO2M9KChXaihjLCgoY3wwKTwwKTw8MzE+PjMxKXwwKTw8MTY+PjE2KS0yNzAmNjU1MzU7alsoa1tpPj4yXXwwKSs4Pj4xXT1jfWVsc2Ugalsoa1tpPj4yXXwwKSs4Pj4xXT0xO2U9dXkoa1tlPj4yXXwwKXwwO2tba1tpPj4yXT4+Ml09ZTtqWyhrW2k+PjJdfDApKzEwPj4xXT1qW2Y+PjFdfDA7a1soa1tpPj4yXXwwKSs0Pj4yXT1rW2Q+PjJdO2tbKGtbaT4+Ml18MCkrMTY+PjJdPS0xO2Q9KGtbaT4+Ml18MCkrMTJ8MDtlPWQrMzZ8MDtkb3tqW2Q+PjFdPTA7ZD1kKzJ8MH13aGlsZSgoZHwwKTwoZXwwKSk7a1tsPj4yXT1rW24+PjJdO249a1tsPj4yXXwwO3I9bztyZXR1cm4gbnwwfWZ1bmN0aW9uIGZGKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wO2Q9cjtyPXIrMTZ8MDtmPWQrOHwwO2c9ZCs0fDA7ZT1kO2tbZj4+Ml09YTtrW2c+PjJdPWI7a1tlPj4yXT1jO2tbKGtbKGtbZj4+Ml18MCkrMjA+PjJdfDApKygoa1tnPj4yXXwwKSo0OHwwKSsxNj4+Ml09a1tlPj4yXTtqWyhrWyhrW2Y+PjJdfDApKzIwPj4yXXwwKSsoKGtbZz4+Ml18MCkqNDh8MCkrOD4+MV09alsoa1soa1tmPj4yXXwwKSsyMD4+Ml18MCkrKChrW2U+PjJdfDApKjQ4fDApKzg+PjFdfDA7YT0oa1soa1tmPj4yXXwwKSsyMD4+Ml18MCkrKChrW2U+PjJdfDApKjQ4fDApKzE0fDA7aVthPj4wXT0oaVthPj4wXXwwKSsxPDwyND4+MjQ7cj1kO3JldHVybn1mdW5jdGlvbiBnRihhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsbj0wLG89MDtvPXI7cj1yKzMyfDA7aD1vKzIwfDA7ZT1vKzE2fDA7Zj1vKzEyfDA7Yz1vKzI1fDA7ZD1vKzI0fDA7Zz1vKzh8MDtqPW8rNHwwO249bztrW2U+PjJdPWE7a1tmPj4yXT1iO2lmKG1bKGtba1tlPj4yXT4+Ml18MCkrNjQ+PjFdJjUxMil7a1toPj4yXT0wO249a1toPj4yXXwwO3I9bztyZXR1cm4gbnwwfWlmKChsW2tbZj4+Ml0+PjBdfDApIT0zNz8obFtrW2Y+PjJdPj4wXXwwKSE9Mjk6MCl7a1toPj4yXT0wO249a1toPj4yXXwwO3I9bztyZXR1cm4gbnwwfWlmKGtbKGtbZj4+Ml18MCkrND4+Ml0mMSl7a1toPj4yXT0wO249a1toPj4yXXwwO3I9bztyZXR1cm4gbnwwfWE9b3koa1soa1tmPj4yXXwwKSsxMj4+Ml18MCl8MDtpW2M+PjBdPWE7YT1veShrWyhrW2Y+PjJdfDApKzE2Pj4yXXwwKXwwO2lbZD4+MF09YTtkbyBpZigoaVtjPj4wXXwwKSE9KGlbZD4+MF18MCkpe2lmKChpW2M+PjBdfDApPj02Nz8oaVtkPj4wXXwwKT49Njc6MClicmVhaztrW2g+PjJdPTA7bj1rW2g+PjJdfDA7cj1vO3JldHVybiBufDB9d2hpbGUoMCk7YT1DQihrW2U+PjJdfDAsa1soa1tmPj4yXXwwKSsxMj4+Ml18MCxrWyhrW2Y+PjJdfDApKzE2Pj4yXXwwKXwwO2tbZz4+Ml09YTtpZigoa1tnPj4yXXwwKSE9MD8oc2coa1trW2c+PjJdPj4yXXwwLDM0ODM0KXwwKSE9MDowKXthPXB5KGtbZT4+Ml18MCxrWyhrW2Y+PjJdfDApKzEyPj4yXXwwKXwwO2tbZz4+Ml09YTtpZihrW2c+PjJdfDApYz1rW2tbZz4+Ml0+PjJdfDA7ZWxzZSBjPTA7a1tqPj4yXT1jO2Y9cHkoa1tlPj4yXXwwLGtbKGtbZj4+Ml18MCkrMTY+PjJdfDApfDA7a1tnPj4yXT1mO2lmKGtbZz4+Ml18MCljPWtba1tnPj4yXT4+Ml18MDtlbHNlIGM9MDtrW24+PjJdPWM7bj0oYmUoa1tqPj4yXXwwLGtbbj4+Ml18MCl8MCk9PTAmMTtrW2g+PjJdPW47bj1rW2g+PjJdfDA7cj1vO3JldHVybiBufDB9a1toPj4yXT0xO249a1toPj4yXXwwO3I9bztyZXR1cm4gbnwwfWZ1bmN0aW9uIGhGKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wO2c9cjtyPXIrMTZ8MDtjPWcrOHwwO2Q9Zys0fDA7ZT1nKzE0fDA7aD1nKzEyfDA7Zj1nO2tbYz4+Ml09YTtrW2Q+PjJdPWI7altlPj4xXT1rWyhrWyhrW2Q+PjJdfDApKzE2Pj4yXXwwKSs0Pj4yXSYyNTY7altoPj4xXT1rWyhrWyhrW2Q+PjJdfDApKzEyPj4yXXwwKSs0Pj4yXSYyNTY7ZG8gaWYoKG1bZT4+MV18MCk9PShtW2g+PjFdfDApKXtpZihqW2U+PjFdfDApe2g9KGtbKGtbZD4+Ml18MCkrMTY+PjJdfDApKzR8MDtrW2g+PjJdPWtbaD4+Ml0mLTI1NzticmVha31pZihweShrW2M+PjJdfDAsa1soa1tkPj4yXXwwKSsxMj4+Ml18MCl8MCl7aD0oa1soa1tkPj4yXXwwKSsxMj4+Ml18MCkrNHwwO2tbaD4+Ml09a1toPj4yXXwyNTZ9fXdoaWxlKDApO2tbZj4+Ml09a1soa1tkPj4yXXwwKSsxNj4+Ml07a1soa1tkPj4yXXwwKSsxNj4+Ml09a1soa1tkPj4yXXwwKSsxMj4+Ml07a1soa1tkPj4yXXwwKSsxMj4+Ml09a1tmPj4yXTtpZigobFtrW2Q+PjJdPj4wXXwwKTwzOCl7cj1nO3JldHVybn1pW2tbZD4+Ml0+PjBdPSgobFtrW2Q+PjJdPj4wXXwwKS0zOF4yKSszODtyPWc7cmV0dXJufWZ1bmN0aW9uIGlGKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wO2U9cjtyPXIrMTZ8MDtjPWUrNHwwO2Q9ZTtrW2M+PjJdPWE7a1tkPj4yXT1iO2lmKCEoa1tjPj4yXXwwKSl7cj1lO3JldHVybn1hPShrW2M+PjJdfDApKzR8MDtrW2E+PjJdPWtbYT4+Ml18a1soa1tkPj4yXXwwKSs0Pj4yXSYxO2pbKGtbYz4+Ml18MCkrMzY+PjFdPWpbKGtbZD4+Ml18MCkrMzY+PjFdfDA7cj1lO3JldHVybn1mdW5jdGlvbiBqRihhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsbj0wLG89MCxwPTAscT0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wLEU9MCxGPTAsRz0wLEg9MCxJPTAsSj0wLEs9MCxNPTAsTj0wLE89MCxQPTAsUT0wLFI9MCxTPTAsVD0wLFU9MCxWPTAsVz0wO1Y9cjtyPXIrMTYwfDA7dz1WKzE1NnwwO3g9VisxNTJ8MDt5PVYrMTQ4fDA7VD1WKzE0NHwwO1I9VisxNDB8MDtDPVYrMTM2fDA7Uz1WKzEzMnwwO0s9VisxMjh8MDtEPVYrMTI0fDA7UT1WKzEyMHwwO1A9VisxMTZ8MDt0PVYrMTEyfDA7Qj1WKzI0fDA7aD1WKzE2fDA7bz1WKzEwOHwwO3E9VisxMDR8MDtwPVYrMTAwfDA7bj1WKzk2fDA7ZD1WKzh8MDtlPVY7dT1WKzkyfDA7Zj1WKzg4fDA7cz1WKzg0fDA7Zz1WKzgwfDA7dj1WKzc2fDA7ST1WKzcyfDA7RT1WKzY4fDA7Rj1WKzY0fDA7SD1WKzYwfDA7ej1WKzU2fDA7QT1WKzUyfDA7Sj1WKzQ4fDA7Tj1WKzQ0fDA7TT1WKzQwfDA7Tz1WKzM2fDA7Rz1WKzMyfDA7a1t3Pj4yXT1hO2tbeD4+Ml09YjtrW3k+PjJdPWM7a1tUPj4yXT1rW2tbeD4+Ml0+PjJdO2tbUj4+Ml09a1trW1Q+PjJdPj4yXTtrW0M+PjJdPWtba1tSPj4yXT4+Ml07a1tTPj4yXT0oa1soa1t4Pj4yXXwwKSsyMD4+Ml18MCkrKChrW3k+PjJdfDApKjQ4fDApO2tbSz4+Ml09a1trW1M+PjJdPj4yXTtiPUNoKGtbQz4+Ml18MCw0MTYsMCl8MDtrW3Q+PjJdPWI7a1soa1tTPj4yXXwwKSsyOD4+Ml09YjtpZighKGtbdD4+Ml18MCkpe3I9VjtyZXR1cm59Yj0oa1tTPj4yXXwwKSsxMHwwO2pbYj4+MV09bVtiPj4xXXwxNjtrW1E+PjJdPWtbdD4+Ml07ZFMoKGtbUT4+Ml18MCkrMjR8MCwwLDM4NCl8MDtMRChrW1E+PjJdfDAsa1tUPj4yXXwwKTtNRChrW1E+PjJdfDAsa1tLPj4yXXwwLDI3KTtQRChrW3c+PjJdfDAsa1tRPj4yXXwwKTtpZihpWyhrW0M+PjJdfDApKzY5Pj4wXXwwKXtyPVY7cmV0dXJufWI9aDtrW2I+PjJdPS0xO2tbYis0Pj4yXT0tMTtiPUI7a1tiPj4yXT0tMTtrW2IrND4+Ml09LTE7a1tEPj4yXT0oa1soa1tRPj4yXXwwKSsxMj4+Ml18MCktMTtrW1A+PjJdPWtbKGtbUT4+Ml18MCkrMjA+PjJdO3doaWxlKDEpe2I9aDtpZighKChrW0Q+PjJdfDApPj0wPyhrW2I+PjJdfDApIT0wfChrW2IrND4+Ml18MCkhPTA6MCkpYnJlYWs7ZG8gaWYoIShtWyhrW1A+PjJdfDApKzEyPj4xXSY1MTEpKXtiPUI7a1tiPj4yXT0wO2tbYis0Pj4yXT0wO2I9ZHgoa1tDPj4yXXwwLDQwOCwwKXwwO2tbbz4+Ml09YjtpZihrW28+PjJdfDApe2I9ZDtrW2I+PjJdPTA7a1tiKzQ+PjJdPTA7a1soa1tQPj4yXXwwKSsyOD4+Ml09a1tvPj4yXTtiPShrW1A+PjJdfDApKzEwfDA7altiPj4xXT1tW2I+PjFdfDMyO2pbKGtbUD4+Ml18MCkrMTI+PjFdPTEwMjQ7a1txPj4yXT1rW28+PjJdO2RTKChrW3E+PjJdfDApKzI0fDAsMCwzODQpfDA7TEQoa1txPj4yXXwwLGtba1t4Pj4yXT4+Ml18MCk7TUQoa1txPj4yXXwwLGtba1tQPj4yXT4+Ml18MCwyOCk7UEQoa1t3Pj4yXXwwLGtbcT4+Ml18MCk7a1soa1txPj4yXXwwKSs0Pj4yXT1rW3g+PjJdO2E6ZG8gaWYoIShpWyhrW0M+PjJdfDApKzY5Pj4wXXwwKSl7a1tuPj4yXT0wO2tbcD4+Ml09a1soa1txPj4yXXwwKSsyMD4+Ml07d2hpbGUoMSl7aWYoKGtbbj4+Ml18MCk+PShrWyhrW3E+PjJdfDApKzEyPj4yXXwwKSlicmVhayBhO2lmKCEoKGJGKGxba1trW3A+PjJdPj4yXT4+MF18MCl8MCk9PTA/KG1bKGtbcD4+Ml18MCkrMTI+PjFdfDApIT02NDowKSl7Yz1ZRCgoa1tUPj4yXXwwKSs0ODh8MCxrWyhrW3A+PjJdfDApKzIwPj4yXXwwKXwwO1c9ZDthPWtbVys0Pj4yXXxMO2I9ZDtrW2I+PjJdPWtbVz4+Ml18YztrW2IrND4+Ml09YX1rW24+PjJdPShrW24+PjJdfDApKzE7a1twPj4yXT0oa1twPj4yXXwwKSs0OH19d2hpbGUoMCk7YT1kO2M9aDtiPWtbYys0Pj4yXSZrW2ErND4+Ml07Vz1oO2tbVz4+Ml09a1tjPj4yXSZrW2E+PjJdO2tbVys0Pj4yXT1ifX1lbHNlIGlmKCEobVsoa1tQPj4yXXwwKSsxMD4+MV0mOCkpe2I9WUQoKGtbVD4+Ml18MCkrNDg4fDAsa1soa1tQPj4yXXwwKSsyMD4+Ml18MCl8MDtXPWU7a1tXPj4yXT1iO2tbVys0Pj4yXT1MO2lmKG1bKGtbUD4+Ml18MCkrMTA+PjFdJjIpe2tbdT4+Ml09KGtbKGtbUT4+Ml18MCkrMjA+PjJdfDApKygoa1soa1tQPj4yXXwwKSsxNj4+Ml18MCkqNDh8MCk7YT1ZRCgoa1tUPj4yXXwwKSs0ODh8MCxrWyhrW3U+PjJdfDApKzIwPj4yXXwwKXwwO2M9ZTtiPWtbYys0Pj4yXXxMO1c9ZTtrW1c+PjJdPWtbYz4+Ml18YTtrW1crND4+Ml09Yn1hPWU7Yz1oO2I9a1tjKzQ+PjJdJmtbYSs0Pj4yXTtXPWg7a1tXPj4yXT1rW2M+PjJdJmtbYT4+Ml07a1tXKzQ+PjJdPWI7aWYoIShtWyhrW1A+PjJdfDApKzEyPj4xXSYyKSl7Vz1CO2tbVz4+Ml09MDtrW1crND4+Ml09MDticmVha31lbHNle2E9ZTtjPUI7Yj1rW2MrND4+Ml0ma1thKzQ+PjJdO1c9QjtrW1c+PjJdPWtbYz4+Ml0ma1thPj4yXTtrW1crND4+Ml09YjticmVha319d2hpbGUoMCk7a1tEPj4yXT0oa1tEPj4yXXwwKSstMTtrW1A+PjJdPShrW1A+PjJdfDApKzQ4fWE9aDtiPWtbYSs0Pj4yXXwwO1c9KGtbdD4+Ml18MCkrNDA4fDA7a1tXPj4yXT1rW2E+PjJdO2tbVys0Pj4yXT1iO1c9aDtqWyhrW1M+PjJdfDApKzEyPj4xXT0oa1tXPj4yXXwwKT09MCYoa1tXKzQ+PjJdfDApPT0wPzA6NTEyO1c9aDtiOmRvIGlmKChrW1c+PjJdfDApIT0wfChrW1crND4+Ml18MCkhPTA/KGtbKGtbUT4+Ml18MCkrMTI+PjJdfDApPT0yOjApe2tbZj4+Ml09MDtjOndoaWxlKDEpe2I9a1soa1tRPj4yXXwwKSsyMD4+Ml18MDtXPWtbZj4+Ml18MDtrW2Y+PjJdPVcrMTtXPXJGKGIsVyl8MDtrW3M+PjJdPVc7aWYoIVcpYnJlYWsgYjtrW2c+PjJdPTA7d2hpbGUoMSl7Yj0oa1soa1tRPj4yXXwwKSsyMD4+Ml18MCkrNDh8MDtXPWtbZz4+Ml18MDtrW2c+PjJdPVcrMTtXPXJGKGIsVyl8MDtrW3Y+PjJdPVc7aWYoIVcpY29udGludWUgYztzRihrW3c+PjJdfDAsa1t4Pj4yXXwwLGtbcz4+Ml18MCxrW3Y+PjJdfDApfX19d2hpbGUoMCk7Vz1CO2lmKCEoKGtbVz4+Ml18MCkhPTB8KGtbVys0Pj4yXXwwKSE9MCkpe3I9VjtyZXR1cm59a1tJPj4yXT0wO2tbRT4+Ml09LTE7a1tGPj4yXT0tMTtrW0g+PjJdPTA7a1tIPj4yXT0wO3doaWxlKDEpe2lmKChrW0g+PjJdfDApPj0yKWJyZWFrO2lmKCEoKGtbST4+Ml18MCkhPTBeMSkpYnJlYWs7a1tQPj4yXT1rWyhrW1E+PjJdfDApKzIwPj4yXTtrW0Q+PjJdPShrWyhrW1E+PjJdfDApKzEyPj4yXXwwKS0xO3doaWxlKDEpe2lmKChrW0Q+PjJdfDApPDApYnJlYWs7Vz0oa1tQPj4yXXwwKSsxMHwwO2pbVz4+MV09bVtXPj4xXSYtNjU7aWYoKGtbKGtbUD4+Ml18MCkrMjA+PjJdfDApIT0oa1tGPj4yXXwwKT8oVz1CLHY9a1tXPj4yXXwwLFc9a1tXKzQ+PjJdfDAsYj1ZRCgoa1tUPj4yXXwwKSs0ODh8MCxrWyhrW1A+PjJdfDApKzIwPj4yXXwwKXwwLCEoKHYmYnwwKT09MCYoVyZMfDApPT0wKSk6MCl7VT0zNzticmVha31rW0Q+PjJdPShrW0Q+PjJdfDApKy0xO2tbUD4+Ml09KGtbUD4+Ml18MCkrNDh9aWYoKFV8MCk9PTM3KXtVPTA7a1tFPj4yXT1rWyhrW1A+PjJdfDApKzI4Pj4yXTtrW0Y+PjJdPWtbKGtbUD4+Ml18MCkrMjA+PjJdfWlmKChrW0Q+PjJdfDApPDApYnJlYWs7a1tJPj4yXT0xO3doaWxlKDEpe2lmKCEoKGtbRD4+Ml18MCk+PTA/KGtbST4+Ml18MCkhPTA6MCkpYnJlYWs7ZD1rW1A+PjJdfDA7ZG8gaWYoKGtbKGtbUD4+Ml18MCkrMjA+PjJdfDApIT0oa1tGPj4yXXwwKSl7Vz1kKzEwfDA7altXPj4xXT1tW1c+PjFdJi02NX1lbHNle2lmKChrW2QrMjg+PjJdfDApIT0oa1tFPj4yXXwwKSl7a1tJPj4yXT0wO2JyZWFrfVc9KG95KGtbKGtba1tQPj4yXT4+Ml18MCkrMTY+PjJdfDApfDApPDwyND4+MjQ7a1tBPj4yXT1XO1c9KG95KGtbKGtba1tQPj4yXT4+Ml18MCkrMTI+PjJdfDApfDApPDwyND4+MjQ7a1t6Pj4yXT1XO2lmKChrW0E+PjJdfDApIT0wPyhrW0E+PjJdfDApIT0oa1t6Pj4yXXwwKTowKXtrW0k+PjJdPTA7YnJlYWt9Vz0oa1tQPj4yXXwwKSsxMHwwO2pbVz4+MV09bVtXPj4xXXw2NH13aGlsZSgwKTtrW0Q+PjJdPShrW0Q+PjJdfDApKy0xO2tbUD4+Ml09KGtbUD4+Ml18MCkrNDh9a1tIPj4yXT0oa1tIPj4yXXwwKSsxfWlmKCEoa1tJPj4yXXwwKSl7cj1WO3JldHVybn1rW04+PjJdPTA7a1tNPj4yXT0wO2tbRD4+Ml09KGtbKGtbUT4+Ml18MCkrMTI+PjJdfDApLTE7a1tQPj4yXT1rWyhrW1E+PjJdfDApKzIwPj4yXTt3aGlsZSgxKXtpZigoa1tEPj4yXXwwKTwwKWJyZWFrO2lmKG1bKGtbUD4+Ml18MCkrMTA+PjFdJjY0KXtXPVN5KGtbQz4+Ml18MCxrWyhrW2tbUD4+Ml0+PjJdfDApKzE2Pj4yXXwwLDApfDA7a1tKPj4yXT1XO1c9Yncoa1trW1Q+PjJdPj4yXXwwLGtbTj4+Ml18MCxrW0o+PjJdfDApfDA7a1tOPj4yXT1XO2tbTT4+Ml09a1soa1trW1A+PjJdPj4yXXwwKSsxMj4+Ml19a1tEPj4yXT0oa1tEPj4yXXwwKSstMTtrW1A+PjJdPShrW1A+PjJdfDApKzQ4fVc9U3koa1tDPj4yXXwwLGtbTT4+Ml18MCwwKXwwO2tbSj4+Ml09VztXPU92KGtbUj4+Ml18MCwzMyxrW0o+PjJdfDAsMCwwKXwwO2tbTz4+Ml09VztpZihrW08+PjJdfDApe2lGKGtbTz4+Ml18MCxrW0s+PjJdfDApO2tbKGtbTz4+Ml18MCkrMjA+PjJdPWtbTj4+Ml07Vz1lRihrW3g+PjJdfDAsa1tPPj4yXXwwLDMpfDA7a1tHPj4yXT1XO2FGKGtbdz4+Ml18MCxrW3g+PjJdfDAsa1tHPj4yXXwwKTtrW1M+PjJdPShrWyhrW3g+PjJdfDApKzIwPj4yXXwwKSsoKGtbeT4+Ml18MCkqNDh8MCk7ZkYoa1t4Pj4yXXwwLGtbRz4+Ml18MCxrW3k+PjJdfDApfWVsc2Ugb3Yoa1tDPj4yXXwwLGtbTj4+Ml18MCk7alsoa1tTPj4yXXwwKSsxMj4+MV09NDA5NjtyPVY7cmV0dXJufWZ1bmN0aW9uIGtGKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTAsRT0wLEY9MCxHPTA7Rj1yO3I9cis5NnwwO3E9Ris4MHwwO3M9Ris3NnwwO2Y9Ris3MnwwO3Q9Ris2OHwwO3U9Ris2NHwwO0c9Ris2MHwwO0U9Ris1NnwwO3o9Ris1MnwwO2g9Ris0OHwwO209Ris0NHwwO289Ris0MHwwO3Y9RiszNnwwO3A9Ris4NHwwO3c9RiszMnwwO0E9RisyOHwwO3g9RisyNHwwO0M9RisyMHwwO249RisxNnwwO2c9RisxMnwwO3k9Ris4fDA7RD1GKzR8MDtCPUY7a1tzPj4yXT1hO2tbZj4+Ml09YjtrW3Q+PjJdPWM7a1t1Pj4yXT1kO2tbRz4+Ml09ZTtrW0U+PjJdPTA7a1t3Pj4yXT1rW2tbcz4+Ml0+PjJdO2tbQT4+Ml09MDtpZighKG5GKGtbdz4+Ml18MCxrW2Y+PjJdfDAsa1tHPj4yXXwwLHApfDApKXtrW3E+PjJdPTA7Rz1rW3E+PjJdfDA7cj1GO3JldHVybiBHfDB9a1ttPj4yXT1rWyhrW2Y+PjJdfDApKzIwPj4yXTtrW2g+PjJdPWtbKGtbKGtbbT4+Ml18MCkrND4+Ml18MCkrMjA+PjJdO2lmKCgobFtrW2g+PjJdPj4wXXwwKT09MTUyPygob3koa1toPj4yXXwwKXwwKTw8MjQ+PjI0fDApPT02NjowKT8obFsoa1soa1toPj4yXXwwKSs0ND4+Ml18MCkrNDI+PjBdJjE2fDApPT0wOjApe0c9dXkoa1trWyhrW20+PjJdfDApKzQ+PjJdPj4yXXwwKXwwO2tbej4+Ml09RztrW3g+PjJdPWxba1t6Pj4yXT4+MF07aWYoKGtbeD4+Ml18MCkhPTEzNSl7aWYoKGtbeD4+Ml18MCk9PTk3KWtbRT4+Ml09a1soa1t6Pj4yXXwwKSs4Pj4yXX1lbHNle2tbbj4+Ml09a1soa1tzPj4yXXwwKSs0MzI+PjJdO2tbZz4+Ml09alsoa1t6Pj4yXXwwKSszMj4+MV07Rz1vRihrW24+PjJdfDAsa1tnPj4yXXwwLDY1KXwwO2tbQT4+Ml09RztpZigoa1tBPj4yXXwwKSE9MD8ob2Uoa1tBPj4yXXwwKXwwKT09MzowKXtHPWplKGtbQT4+Ml18MCl8MDtrW0U+PjJdPUd9cEYoa1soa1tzPj4yXXwwKSs4Pj4yXXwwLGtbZz4+Ml18MCl9ZG8gaWYoa1tFPj4yXXwwKXtrW3Y+PjJdPTA7d2hpbGUoMSl7Rz1pWyhrW0U+PjJdfDApKyhrW3Y+PjJdfDApPj4wXXwwO2tbbz4+Ml09RztpZigoKEd8MCkhPTA/KGtbbz4+Ml18MCkhPShpW3A+PjBdfDApOjApPyhrW28+PjJdfDApIT0oaVtwKzE+PjBdfDApOjApZj0oa1tvPj4yXXwwKSE9KGlbcCsyPj4wXXwwKTtlbHNlIGY9MDtnPWtbdj4+Ml18MDtpZighZilicmVhaztrW3Y+PjJdPWcrMX1pZigoZ3wwKSE9MD8yNTUhPShsWyhrW0U+PjJdfDApKygoa1t2Pj4yXXwwKS0xKT4+MF18MCk6MCl7aWYoKGtbbz4+Ml18MCk9PShpW3A+PjBdfDApKWY9KGlbKGtbRT4+Ml18MCkrKChrW3Y+PjJdfDApKzEpPj4wXXwwKT09MDtlbHNlIGY9MDtrW2tbdT4+Ml0+PjJdPWYmMTtHPWV3KGtbdz4+Ml18MCw5NyxrW0U+PjJdfDApfDA7a1t5Pj4yXT1HO2lmKGtbeT4+Ml18MClpWyhrWyhrW3k+PjJdfDApKzg+PjJdfDApKyhrW3Y+PjJdfDApPj4wXT0wO2tba1t0Pj4yXT4+Ml09a1t5Pj4yXTtpZigoa1t4Pj4yXXwwKSE9MTM1KWJyZWFrO2tbRD4+Ml09a1soa1tzPj4yXXwwKSs4Pj4yXTtwRihrW0Q+PjJdfDAsalsoa1t6Pj4yXXwwKSszMj4+MV18MCk7aWYoIShrW2tbdT4+Ml0+PjJdfDApKWJyZWFrO2lmKCEoaVsoa1soa1t6Pj4yXXwwKSs4Pj4yXXwwKSsxPj4wXXwwKSlicmVhaztHPUZ4KGtbcz4+Ml18MCl8MDtrW0I+PjJdPUc7YUIoa1tzPj4yXXwwLGtbej4+Ml18MCxrW0I+PjJdfDApfDA7Rz1rW0Q+PjJdfDA7cUYoRywoR3goa1tEPj4yXXwwKXwwKS0xfDAsMCk7SHgoa1tzPj4yXXwwLGtbQj4+Ml18MCk7YnJlYWt9a1tFPj4yXT0wfXdoaWxlKDApO2tbQz4+Ml09KGtbRT4+Ml18MCkhPTAmMTttaChrW0E+PjJdfDApO2tbcT4+Ml09a1tDPj4yXTtHPWtbcT4+Ml18MDtyPUY7cmV0dXJuIEd8MH1rW3E+PjJdPTA7Rz1rW3E+PjJdfDA7cj1GO3JldHVybiBHfDB9ZnVuY3Rpb24gbEYoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wO2o9cjtyPXIrMzJ8MDtnPWorMjB8MDtlPWorMTZ8MDtoPWorMTJ8MDtkPWorOHwwO2M9ais0fDA7Zj1qO2tbZT4+Ml09YTtrW2g+PjJdPWI7aWYoKGxba1tlPj4yXT4+MF18MHwwKSE9MTUxKXtrW2c+PjJdPTA7aD1rW2c+PjJdfDA7cj1qO3JldHVybiBofDB9a1tkPj4yXT1rWyhrW2U+PjJdfDApKzIwPj4yXTtpZigoa1tkPj4yXXwwKSE9MD8oa1trW2Q+PjJdPj4yXXwwKT09MjowKXtrW2M+PjJdPWtbKGtbKGtbZD4+Ml18MCkrND4+Ml18MCkrMjA+PjJdO2lmKChsW2tbYz4+Ml0+PjBdfDB8MCk9PTE1Mj8oKGxbKGtbKGtbYz4+Ml18MCkrNDQ+PjJdfDApKzQyPj4wXXwwKSYxNnwwKSE9MDowKXtrW2Y+PjJdPTA7d2hpbGUoMSl7aWYoKGtbZj4+Ml18MCk+PTQpe2M9MTQ7YnJlYWt9Yj0oc2coa1soa1tlPj4yXXwwKSs4Pj4yXXwwLGtbNTQ0NCsoa1tmPj4yXTw8Myk+PjJdfDApfDApPT0wO2E9a1tmPj4yXXwwO2lmKGIpe2M9MTI7YnJlYWt9a1tmPj4yXT1hKzF9aWYoKGN8MCk9PTEyKXtpW2tbaD4+Ml0+PjBdPWlbNTQ0NCsoYTw8MykrND4+MF18MDtrW2c+PjJdPTE7aD1rW2c+PjJdfDA7cj1qO3JldHVybiBofDB9ZWxzZSBpZigoY3wwKT09MTQpe2tbZz4+Ml09MDtoPWtbZz4+Ml18MDtyPWo7cmV0dXJuIGh8MH19a1tnPj4yXT0wO2g9a1tnPj4yXXwwO3I9ajtyZXR1cm4gaHwwfWtbZz4+Ml09MDtoPWtbZz4+Ml18MDtyPWo7cmV0dXJuIGh8MH1mdW5jdGlvbiBtRihhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTA7aD1yO3I9cisxNnwwO2Q9aCsxMnwwO2U9aCs4fDA7Zj1oKzR8MDtnPWg7a1tkPj4yXT1hO2tbZT4+Ml09YjtrW2Y+PjJdPWM7aWYoKGxba1tlPj4yXT4+MF18MHwwKT09MTE5KXtiPU92KGtbZD4+Ml18MCwxNTksMCwwLDApfDA7a1tnPj4yXT1iO2lmKCEoa1tnPj4yXXwwKSl7Yj1rW2c+PjJdfDA7cj1oO3JldHVybiBifDB9alsoa1tnPj4yXXwwKSszMj4+MV09a1tmPj4yXTtrWyhrW2c+PjJdfDApKzEyPj4yXT1rW2U+PjJdO2I9a1tnPj4yXXwwO3I9aDtyZXR1cm4gYnwwfWVsc2V7aWYoKGxba1tlPj4yXT4+MF18MHwwKT09MTU4KWtbZT4+Ml09a1soa1soa1soa1tlPj4yXXwwKSsyMD4+Ml18MCkrND4+Ml18MCkrKChrW2Y+PjJdfDApKjIwfDApPj4yXTtiPVN5KGtba1tkPj4yXT4+Ml18MCxrW2U+PjJdfDAsMCl8MDtrW2c+PjJdPWI7Yj1rW2c+PjJdfDA7cj1oO3JldHVybiBifDB9cmV0dXJuIDB9ZnVuY3Rpb24gbkYoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTAsbj0wLG89MDtvPXI7cj1yKzMyfDA7ZT1vKzIwfDA7Zj1vKzE2fDA7Zz1vKzEyfDA7aD1vKzh8MDtqPW8rNHwwO249bztrW2Y+PjJdPWE7a1tnPj4yXT1iO2tbaD4+Ml09YztrW2o+PjJdPWQ7aWYoKChsW2tbZz4+Ml0+PjBdfDB8MCk9PTE1MT8oa1soa1tnPj4yXXwwKSsyMD4+Ml18MCkhPTA6MCk/KGtba1soa1tnPj4yXXwwKSsyMD4+Ml0+PjJdfDApPT0yOjApe2M9dWkoa1tmPj4yXXwwLGtbKGtbZz4+Ml18MCkrOD4+Ml18MCwyLDEsMCl8MDtrW24+PjJdPWM7aWYoKGtbbj4+Ml18MCkhPTA/KChtWyhrW24+PjJdfDApKzI+PjFdfDApJjR8MCkhPTA6MCl7Yz1rW2o+PjJdfDA7Yj1rWyhrW24+PjJdfDApKzQ+PjJdfDA7aVtjPj4wXT1pW2I+PjBdfDA7aVtjKzE+PjBdPWlbYisxPj4wXXwwO2lbYysyPj4wXT1pW2IrMj4+MF18MDtrW2tbaD4+Ml0+PjJdPSgobVsoa1tuPj4yXXwwKSsyPj4xXXwwKSY4fDApPT0wJjE7a1tlPj4yXT0xO2M9a1tlPj4yXXwwO3I9bztyZXR1cm4gY3wwfWtbZT4+Ml09MDtjPWtbZT4+Ml18MDtyPW87cmV0dXJuIGN8MH1rW2U+PjJdPTA7Yz1rW2U+PjJdfDA7cj1vO3JldHVybiBjfDB9ZnVuY3Rpb24gb0YoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxsPTA7bD1yO3I9ciszMnwwO2Q9bCsxNnwwO2U9bCsxMnwwO2Y9bCs4fDA7Zz1sKzIwfDA7aD1sKzR8MDtqPWw7a1tlPj4yXT1hO2tbZj4+Ml09YjtpW2c+PjBdPWM7aWYoKGtbZT4+Ml18MCkhPTA/KGtbaD4+Ml09KGtbKGtbZT4+Ml18MCkrMTE2Pj4yXXwwKSsoKChrW2Y+PjJdfDApLTF8MCkqNDB8MCksMD09KChtWyhrW2g+PjJdfDApKzg+PjFdfDApJjF8MCkpOjApe2E9aGkoa1trW2U+PjJdPj4yXXwwKXwwO2tbaj4+Ml09YTtpZihrW2o+PjJdfDApe3RoKGtbaj4+Ml18MCxrW2g+PjJdfDApfDA7UHgoa1tqPj4yXXwwLGlbZz4+MF18MCwxKX1rW2Q+PjJdPWtbaj4+Ml07YT1rW2Q+PjJdfDA7cj1sO3JldHVybiBhfDB9a1tkPj4yXT0wO2E9a1tkPj4yXXwwO3I9bDtyZXR1cm4gYXwwfWZ1bmN0aW9uIHBGKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wO2U9cjtyPXIrMTZ8MDtjPWUrNHwwO2Q9ZTtrW2M+PjJdPWE7a1tkPj4yXT1iO2lmKChrW2Q+PjJdfDApPjMyKXtrWyhrW2M+PjJdfDApKzE5Nj4+Ml09LTE7cj1lO3JldHVybn1lbHNle2E9KGtbYz4+Ml18MCkrMTk2fDA7a1thPj4yXT1rW2E+PjJdfDE8PChrW2Q+PjJdfDApLTE7cj1lO3JldHVybn19ZnVuY3Rpb24gcUYoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTA7ZD1yO3I9cisxNnwwO2Y9ZCs4fDA7ZT1kKzR8MDtnPWQ7a1tmPj4yXT1hO2tbZT4+Ml09YjtrW2c+PjJdPWM7YT1rW2c+PjJdfDA7Yz0ob0Eoa1tmPj4yXXwwLGtbZT4+Ml18MCl8MCkrMTJ8MDtrW2M+PjJdPWE7cj1kO3JldHVybn1mdW5jdGlvbiByRihhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTA7Zj1yO3I9cisxNnwwO2M9Zis4fDA7ZD1mKzR8MDtlPWY7a1tkPj4yXT1hO2tbZT4+Ml09YjtiPWtbZT4+Ml18MDtpZigobVsoa1tkPj4yXXwwKSsxMj4+MV18MHwwKSE9MTAyNCl7a1tjPj4yXT0oYnwwKT09MD9rW2Q+PjJdfDA6MDtlPWtbYz4+Ml18MDtyPWY7cmV0dXJuIGV8MH1pZigoYnwwKTwoa1soa1soa1tkPj4yXXwwKSsyOD4+Ml18MCkrMTI+PjJdfDApKXtrW2M+PjJdPShrWyhrWyhrW2Q+PjJdfDApKzI4Pj4yXXwwKSsyMD4+Ml18MCkrKChrW2U+PjJdfDApKjQ4fDApO2U9a1tjPj4yXXwwO3I9ZjtyZXR1cm4gZXwwfWVsc2V7a1tjPj4yXT0wO2U9a1tjPj4yXXwwO3I9ZjtyZXR1cm4gZXwwfXJldHVybiAwfWZ1bmN0aW9uIHNGKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsbD0wLG49MCxvPTAscD0wLHE9MCxzPTA7cz1yO3I9cis0OHwwO2g9cysyOHwwO2w9cysyNHwwO2U9cysyMHwwO2Y9cysxNnwwO249cyszMnwwO2c9cysxMnwwO3E9cys4fDA7cD1zKzR8MDtvPXM7a1toPj4yXT1hO2tbbD4+Ml09YjtrW2U+PjJdPWM7a1tmPj4yXT1kO2pbbj4+MV09bVsoa1tlPj4yXXwwKSsxMj4+MV18MHwobVsoa1tmPj4yXXwwKSsxMj4+MV18MCk7aWYoISgobVsoa1tlPj4yXXwwKSsxMj4+MV18MCkmNjIpKXtyPXM7cmV0dXJufWlmKCEoKG1bKGtbZj4+Ml18MCkrMTI+PjFdfDApJjYyKSl7cj1zO3JldHVybn1pZigoKG1bbj4+MV18MCkmMjZ8MCkhPShtW24+PjFdfDB8MCk/KChtW24+PjFdfDApJjM4fDApIT0obVtuPj4xXXwwfDApOjApe3I9cztyZXR1cm59aWYoVXkoa1soa1trW2U+PjJdPj4yXXwwKSsxMj4+Ml18MCxrWyhrW2tbZj4+Ml0+PjJdfDApKzEyPj4yXXwwLC0xKXwwKXtyPXM7cmV0dXJufWlmKFV5KGtbKGtba1tlPj4yXT4+Ml18MCkrMTY+PjJdfDAsa1soa1trW2Y+PjJdPj4yXXwwKSsxNj4+Ml18MCwtMSl8MCl7cj1zO3JldHVybn1kbyBpZigobVtuPj4xXXwwKSYobVtuPj4xXXwwKS0xKWlmKChtW24+PjFdfDApJjI0KXtqW24+PjFdPTg7YnJlYWt9ZWxzZXtqW24+PjFdPTMyO2JyZWFrfXdoaWxlKDApO2tbZz4+Ml09a1trW2tba1tsPj4yXT4+Ml0+PjJdPj4yXTtiPVN5KGtbZz4+Ml18MCxrW2tbZT4+Ml0+PjJdfDAsMCl8MDtrW3E+PjJdPWI7aWYoIShrW3E+PjJdfDApKXtyPXM7cmV0dXJufWtbcD4+Ml09Mzc7d2hpbGUoMSl7ZT1rW3A+PjJdfDA7aWYoKG1bbj4+MV18MHwwKT09KDI8PChrW3A+PjJdfDApLTM3fDApKWJyZWFrO2tbcD4+Ml09ZSsxfWlba1txPj4yXT4+MF09ZTtxPWVGKGtbbD4+Ml18MCxrW3E+PjJdfDAsMyl8MDtrW28+PjJdPXE7YUYoa1toPj4yXXwwLGtbbD4+Ml18MCxrW28+PjJdfDApO3I9cztyZXR1cm59ZnVuY3Rpb24gdEYoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wO2U9cjtyPXIrNDh8MDtnPWUrMzZ8MDtoPWUrMzJ8MDtmPWUrMjh8MDtkPWU7a1tnPj4yXT1hO2tbaD4+Ml09YjtrW2Y+PjJdPWM7a1tkPj4yXT0wO2tbZCs0Pj4yXT0wO2tbZCs4Pj4yXT0wO2tbZCsxMj4+Ml09MDtrW2QrMTY+PjJdPTA7a1tkKzIwPj4yXT0wO2tbZCsyND4+Ml09MDtpW2QrMjA+PjBdPTA7a1tkKzQ+PjJdPTIwMDtrW2QrMjQ+PjJdPWtbaD4+Ml07R3koZCxrW2c+PjJdfDApfDA7aWYoa1tmPj4yXXwwKXtoPWQrMjB8MDtoPWlbaD4+MF18MDtoPWg8PDI0Pj4yNCE9MDtoPWheMTtoPWgmMTtyPWU7cmV0dXJuIGh8MH1oPWQrMjB8MDtpW2g+PjBdPShsW2g+PjBdfDApJi0zO2g9ZCsyMHwwO2g9aVtoPj4wXXwwO2g9aDw8MjQ+PjI0IT0wO2g9aF4xO2g9aCYxO3I9ZTtyZXR1cm4gaHwwfWZ1bmN0aW9uIHVGKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxpPTAsbD0wLG09MDttPXI7cj1yKzMyfDA7aT1tKzh8MDtoPW07ZD1tKzI4fDA7ZT1tKzI0fDA7Zj1tKzIwfDA7bD1tKzE2fDA7Zz1tKzEyfDA7a1tkPj4yXT1hO2tbZT4+Ml09YjtrW2Y+PjJdPWM7YT1rW2tbZD4+Ml0+PjJdfDA7Yj1rW2tbZj4+Ml0+PjJdfDA7aWYoKGpbKGtbZj4+Ml18MCkrMzI+PjFdfDApPj0wKXtmPWtbKGtbKGtbZj4+Ml18MCkrND4+Ml18MCkrKGpbKGtbZj4+Ml18MCkrMzI+PjFdPDw0KT4+Ml18MDtrW2g+PjJdPWI7a1toKzQ+PjJdPWY7Zj1RaChhLDMwMTYxLGgpfDA7a1tsPj4yXT1mO2tbZz4+Ml09MTU1NTtmPWtbZD4+Ml18MDtoPWtbZz4+Ml18MDtpPWtbZT4+Ml18MDtsPWtbbD4+Ml18MDtEQShmLGgsaSxsLC0xLDIpO3I9bTtyZXR1cm59ZWxzZXtrW2k+PjJdPWI7Zj1RaChhLDM1MjE5LGkpfDA7a1tsPj4yXT1mO2tbZz4+Ml09MjU3OTtmPWtbZD4+Ml18MDtoPWtbZz4+Ml18MDtpPWtbZT4+Ml18MDtsPWtbbD4+Ml18MDtEQShmLGgsaSxsLC0xLDIpO3I9bTtyZXR1cm59fWZ1bmN0aW9uIHZGKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaT0wLGo9MCxsPTAsbT0wO2w9cjtyPXIrMzJ8MDtqPWwrMjB8MDttPWwrMTZ8MDtlPWwrMTJ8MDtmPWwrOHwwO2c9bCs0fDA7aD1sO2tbbT4+Ml09YTtrW2U+PjJdPWI7a1tmPj4yXT1jO2tbZz4+Ml09ZDthOmRvIGlmKGtbKGtba1ttPj4yXT4+Ml18MCkrMjQ+PjJdJjUyNDI4OCl7Yz1rW2U+PjJdfDA7aWYoIShrW2Y+PjJdfDApKXtpZihneShjKXwwKWM9MTtlbHNlIGM9KGtbKGtbZT4+Ml18MCkrMTY+PjJdfDApIT0wO2tbaj4+Ml09YyYxO209a1tqPj4yXXwwO3I9bDtyZXR1cm4gbXwwfWtbaD4+Ml09a1tjKzE2Pj4yXTt3aGlsZSgxKXtjPWtbZT4+Ml18MDtpZighKGtbaD4+Ml18MCkpYnJlYWs7aWYodEQoYyxrW2g+PjJdfDAsa1tmPj4yXXwwLGtbZz4+Ml18MCl8MCl7aT05O2JyZWFrfWtbaD4+Ml09a1soa1toPj4yXXwwKSs0Pj4yXX1pZigoaXwwKT09OSl7a1tqPj4yXT0xO209a1tqPj4yXXwwO3I9bDtyZXR1cm4gbXwwfW09Z3koYyl8MDtrW2g+PjJdPW07d2hpbGUoMSl7aWYoIShrW2g+PjJdfDApKWJyZWFrIGE7aWYod0Qoa1tlPj4yXXwwLGtbaD4+Ml18MCxrW2Y+PjJdfDAsa1tnPj4yXXwwKXwwKWJyZWFrO2tbaD4+Ml09a1soa1toPj4yXXwwKSsxMj4+Ml19a1tqPj4yXT0xO209a1tqPj4yXXwwO3I9bDtyZXR1cm4gbXwwfXdoaWxlKDApO2tbaj4+Ml09MDttPWtbaj4+Ml18MDtyPWw7cmV0dXJuIG18MH1mdW5jdGlvbiB3RihhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTA7Yz1yO3I9cisxNnwwO2Q9Yys0fDA7Yj1jO2tbZD4+Ml09YTthPWtbZD4+Ml18MDtpZihrWyhrW2Q+PjJdfDApKzEyND4+Ml18MClhPWtbYSsxMjQ+PjJdfDA7a1tiPj4yXT1hO2lbKGtbYj4+Ml18MCkrMjA+PjBdPTE7cj1jO3JldHVybn1mdW5jdGlvbiB4RihhLGIsYyxkLGUsZixnLGgsbSxuLG8pe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO209bXwwO249bnwwO289b3wwO3ZhciBwPTAscT0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wLEU9MCxGPTAsRz0wLEg9MCxJPTAsSj0wLEs9MDtLPXI7cj1yKzY0fDA7cD1LKzQ4fDA7cT1LKzQ0fDA7dD1LKzQwfDA7dT1LKzM2fDA7dj1LKzMyfDA7dz1LKzI4fDA7eD1LKzUyfDA7eT1LKzU4fDA7ej1LKzU3fDA7QT1LKzU2fDA7cz1LKzI0fDA7ST1LKzIwfDA7RT1LKzE2fDA7RD1LKzEyfDA7Rz1LKzU1fDA7Rj1LKzh8MDtDPUsrNHwwO0I9SztIPUsrNTR8MDtrW3A+PjJdPWE7a1txPj4yXT1iO2tbdD4+Ml09YztrW3U+PjJdPWQ7a1t2Pj4yXT1lO2tbdz4+Ml09ZjtqW3g+PjFdPWc7aVt5Pj4wXT1oO2lbej4+MF09bTtpW0E+PjBdPW47a1tzPj4yXT1vO2tbST4+Ml09a1soa1twPj4yXXwwKSs4Pj4yXTtrW0U+PjJdPTA7Yz1lQShrW0k+PjJdfDApfDA7a1tEPj4yXT1jO2lbRz4+MF09KGxbKGtbcT4+Ml18MCkrNDI+PjBdJjMyfDApPT0wPzMzOjMwO2lmKCEobFtBPj4wXXwwKSlTaChrW0k+PjJdfDAsbFtHPj4wXXwwLGtbdT4+Ml18MCxrW0Q+PjJdfDAsa1t3Pj4yXXwwLGpbeD4+MV18MCl8MDtjPSh2RihrW3A+PjJdfDAsa1txPj4yXXwwLDAsMCl8MCkhPTA7aWYoY3woa1t0Pj4yXXwwKSE9MCl7Yz16RihrW3A+PjJdfDAsa1t0Pj4yXXwwLDAsMCwzLGtbcT4+Ml18MCxsW3o+PjBdfDApfDA7a1tGPj4yXT1jO2M9QUYoa1twPj4yXXwwLGtbcT4+Ml18MCl8MDtrW0Y+PjJdPWtbRj4+Ml18YztrW0U+PjJdPShrWyhrW3A+PjJdfDApKzQ0Pj4yXXwwKSsxO2M9KGtbcD4+Ml18MCkrNDR8MDtrW2M+PjJdPShrW2M+PjJdfDApKygxKyhqWyhrW3E+PjJdfDApKzM0Pj4xXXwwKSk7c3goa1tJPj4yXXwwLDg0LGtbdz4+Ml18MCxrW0U+PjJdfDApfDA7a1tDPj4yXT0wO3doaWxlKDEpe2lmKChrW0M+PjJdfDApPj0oalsoa1txPj4yXXwwKSszND4+MV18MCkpYnJlYWs7aWYoKGtbRj4+Ml18MCkhPS0xKXtpZigoa1tDPj4yXXwwKTw9MzE/KGtbRj4+Ml0mMTw8a1tDPj4yXXwwKSE9MDowKUo9OX1lbHNlIEo9OTtpZigoSnwwKT09OSl7Sj0wO1hBKGtbST4+Ml18MCxrW3E+PjJdfDAsa1t1Pj4yXXwwLGtbQz4+Ml18MCwoa1tFPj4yXXwwKSsoa1tDPj4yXXwwKSsxfDApfWtbQz4+Ml09KGtbQz4+Ml18MCkrMX1KPUd4KGtbST4+Ml18MCl8MDtrW0I+PjJdPUo7a0Qoa1twPj4yXXwwLGtbdD4+Ml18MCwxMDksMCwxLGtbcT4+Ml18MCxrW0U+PjJdfDAsbFt6Pj4wXXwwLGtbRD4+Ml18MCk7Sj1rW0I+PjJdfDA7aWYoKEp8MCk8KEd4KGtbST4+Ml18MCl8MCkpU2goa1tJPj4yXXwwLGxbRz4+MF18MCxrW3U+PjJdfDAsa1tEPj4yXXwwLGtbdz4+Ml18MCxqW3g+PjFdfDApfDA7cEQoa1twPj4yXXwwLGtbcT4+Ml18MCxrW0U+PjJdfDAsMCwwLDApfWlmKGtbKGtbcT4+Ml18MCkrMTI+PjJdfDApe2E9a1twPj4yXXwwO0g9a1txPj4yXXwwO0c9a1tFPj4yXXwwO0JGKGEsSCwwLEcsMCwwKTtHPWtbcD4+Ml18MDtIPWtbdD4+Ml18MDthPWtbcT4+Ml18MDtiPWtbRT4+Ml18MDtjPWlbej4+MF18MDtjPWMmMjU1O0o9a1tEPj4yXXwwO2tEKEcsSCwxMDksMCwyLGEsYixjLEopO0k9a1tJPj4yXXwwO0o9a1tEPj4yXXwwO2lBKEksSik7cj1LO3JldHVybn1pW0g+PjBdPTA7eUYoa1twPj4yXXwwLGtbcT4+Ml18MCxrW3U+PjJdfDAsa1t2Pj4yXXwwLDAsa1tzPj4yXXwwKTtzeChrW0k+PjJdfDAsMTE3LGtbdT4+Ml18MCwobFt5Pj4wXXwwKSE9MD8xOjApfDA7V2goa1tJPj4yXXwwLC0xLGtbcT4+Ml18MCwtMjApO2lmKGxbQT4+MF18MClUaChrW0k+PjJdfDAsNCk7aWYoKGtbcz4+Ml18MCk+PTApYUEoa1tJPj4yXXwwLDExNyxrW3M+PjJdfDApfDA7aWYoKGxbQT4+MF18MCk9PTIpaVtIPj4wXT1sW0g+PjBdfDI7VGgoa1tJPj4yXXwwLGlbSD4+MF18MCk7YT1rW3A+PjJdfDA7SD1rW3E+PjJdfDA7Rz1rW0U+PjJdfDA7QkYoYSxILDAsRywwLDApO0c9a1twPj4yXXwwO0g9a1t0Pj4yXXwwO2E9a1txPj4yXXwwO2I9a1tFPj4yXXwwO2M9aVt6Pj4wXXwwO2M9YyYyNTU7Sj1rW0Q+PjJdfDA7a0QoRyxILDEwOSwwLDIsYSxiLGMsSik7ST1rW0k+PjJdfDA7Sj1rW0Q+PjJdfDA7aUEoSSxKKTtyPUs7cmV0dXJufWZ1bmN0aW9uIHlGKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxpPTAsbT0wLG49MCxvPTAscD0wLHE9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTA7eT1yO3I9cis2NHwwO2g9eSs0OHwwO2c9eSs0NHwwO2k9eSs0MHwwO209eSszNnwwO249eSszMnwwO289eSsyOHwwO3A9eSsyNHwwO3Y9eSsyMHwwO3E9eSsxNnwwO3M9eSsxMnwwO3U9eSs4fDA7dz15KzR8MDt0PXk7a1toPj4yXT1hO2tbZz4+Ml09YjtrW2k+PjJdPWM7a1ttPj4yXT1kO2tbbj4+Ml09ZTtrW28+PjJdPWY7a1t2Pj4yXT0tMTtrW3U+PjJdPTA7a1t3Pj4yXT1rWyhrW2g+PjJdfDApKzg+PjJdO2lmKCEoKGxbKGtbZz4+Ml18MCkrNDI+PjBdfDApJjMyKSllPTA7ZWxzZSBlPVRqKGtbZz4+Ml18MCl8MDtrW3Q+PjJdPWU7a1twPj4yXT0wO2tbcz4+Ml09a1soa1tnPj4yXXwwKSs4Pj4yXTt3aGlsZSgxKXtpZighKGtbcz4+Ml18MCkpYnJlYWs7aWYoISgoa1tuPj4yXXwwKSE9MD8oa1soa1tuPj4yXXwwKSsoa1twPj4yXTw8Mik+PjJdfDApPT0wOjApKXg9NztpZigoKHh8MCk9PTc/KHg9MCwoa1tzPj4yXXwwKSE9KGtbdD4+Ml18MCkpOjApPygoa1ttPj4yXXwwKSsoa1twPj4yXXwwKXwwKSE9KGtbbz4+Ml18MCk6MCl7ZT15QShrW2g+PjJdfDAsa1tzPj4yXXwwLGtbaT4+Ml18MCwwLDEscSxrW3U+PjJdfDAsa1t2Pj4yXXwwKXwwO2tbdj4+Ml09ZTtlPWtbcz4+Ml18MDtpZigobFsoa1tzPj4yXXwwKSs1NT4+MF18MCk+Pj4zJjEpZT1qW2UrNTA+PjFdfDA7ZWxzZSBlPWpbZSs1Mj4+MV18MDt0eChrW3c+PjJdfDAsMTI3LChrW20+PjJdfDApKyhrW3A+PjJdfDApfDAsa1t2Pj4yXXwwLGUmNjU1MzUpfDA7ekEoa1toPj4yXXwwLGtbcT4+Ml18MCk7a1t1Pj4yXT1rW3M+PjJdfWtbcD4+Ml09KGtbcD4+Ml18MCkrMTtrW3M+PjJdPWtbKGtbcz4+Ml18MCkrMjA+PjJdfXI9eTtyZXR1cm59ZnVuY3Rpb24gekYoYSxiLGMsZCxlLGYsZyl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7dmFyIGg9MCxpPTAsaj0wLG09MCxuPTAsbz0wLHA9MCxxPTAscz0wLHQ9MCx1PTAsdj0wO3U9cjtyPXIrNDh8MDtoPXUrNDB8MDt2PXUrMzZ8MDtpPXUrMzJ8MDtqPXUrMjh8MDttPXUrMjR8MDtuPXUrMjB8MDtvPXUrMTZ8MDtxPXUrMTJ8MDtwPXUrOHwwO3M9dSs0fDA7dD11O2tbaD4+Ml09YTtrW3Y+PjJdPWI7a1tpPj4yXT1jO2tbaj4+Ml09ZDtrW20+PjJdPWU7a1tuPj4yXT1mO2tbbz4+Ml09ZztrW3E+PjJdPShrW2k+PjJdfDApIT0wPzExMDoxMDk7a1twPj4yXT0wO2tbcz4+Ml09a1t2Pj4yXTt3aGlsZSgxKXtpZighKGtbcz4+Ml18MCkpYnJlYWs7aWYoKCgobFsoa1tzPj4yXXwwKSs4Pj4wXXwwfDApPT0oa1txPj4yXXwwKT8oa1ttPj4yXSYobFsoa1tzPj4yXXwwKSs5Pj4wXXwwKXwwKSE9MDowKT8oRkcoa1soa1tzPj4yXXwwKSsxNj4+Ml18MCxrW2k+PjJdfDApfDApIT0wOjApPyh2PUVGKGtbaD4+Ml18MCxrW3M+PjJdfDAsa1tuPj4yXXwwLGtbbz4+Ml18MCl8MCxrW3Q+PjJdPXYsKGtbdD4+Ml18MCkhPTApOjApa1twPj4yXT1rW3A+PjJdfGtbKGtbdD4+Ml18MCkrMTYrKGtbaj4+Ml08PDIpPj4yXTtrW3M+PjJdPWtbKGtbcz4+Ml18MCkrMzI+PjJdfXI9dTtyZXR1cm4ga1twPj4yXXwwfWZ1bmN0aW9uIEFGKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wLGk9MDtpPXI7cj1yKzMyfDA7Yz1pKzIwfDA7ZD1pKzE2fDA7Zj1pKzEyfDA7Zz1pKzh8MDtlPWkrNHwwO2g9aTtrW2M+PjJdPWE7a1tkPj4yXT1iO2tbZj4+Ml09MDtpZighKGtbKGtba1tjPj4yXT4+Ml18MCkrMjQ+PjJdJjUyNDI4OCkpe2g9a1tmPj4yXXwwO3I9aTtyZXR1cm4gaHwwfWtbZz4+Ml09a1soa1tkPj4yXXwwKSsxNj4+Ml07d2hpbGUoMSl7aWYoIShrW2c+PjJdfDApKWJyZWFrO2tbZT4+Ml09MDt3aGlsZSgxKXtpZigoa1tlPj4yXXwwKT49KGtbKGtbZz4+Ml18MCkrMjA+PjJdfDApKWJyZWFrO2lmKChrWyhrW2c+PjJdfDApKzM2KyhrW2U+PjJdPDwzKT4+Ml18MCk+MzEpYT0tMTtlbHNlIGE9MTw8a1soa1tnPj4yXXwwKSszNisoa1tlPj4yXTw8Myk+PjJdO2tbZj4+Ml09a1tmPj4yXXxhO2tbZT4+Ml09KGtbZT4+Ml18MCkrMX1rW2c+PjJdPWtbKGtbZz4+Ml18MCkrND4+Ml19Yj1neShrW2Q+PjJdfDApfDA7a1tnPj4yXT1iO3doaWxlKDEpe2lmKCEoa1tnPj4yXXwwKSlicmVhaztrW2g+PjJdPTA7TEMoa1tjPj4yXXwwLGtbZD4+Ml18MCxrW2c+PjJdfDAsaCwwKXwwO2E6ZG8gaWYoa1toPj4yXXwwKXtrW2U+PjJdPTA7d2hpbGUoMSl7aWYoKGtbZT4+Ml18MCk+PShtWyhrW2g+PjJdfDApKzUwPj4xXXwwKSlicmVhayBhO2lmKChqWyhrWyhrW2g+PjJdfDApKzQ+PjJdfDApKyhrW2U+PjJdPDwxKT4+MV18MCk+MzEpYT0tMTtlbHNlIGE9MTw8alsoa1soa1toPj4yXXwwKSs0Pj4yXXwwKSsoa1tlPj4yXTw8MSk+PjFdO2tbZj4+Ml09a1tmPj4yXXxhO2tbZT4+Ml09KGtbZT4+Ml18MCkrMX19d2hpbGUoMCk7a1tnPj4yXT1rWyhrW2c+PjJdfDApKzEyPj4yXX1oPWtbZj4+Ml18MDtyPWk7cmV0dXJuIGh8MH1mdW5jdGlvbiBCRihhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaT0wLGo9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MDtxPXI7cj1yKzMyfDA7Zz1xKzI4fDA7aD1xKzI0fDA7aT1xKzIwfDA7aj1xKzE2fDA7bD1xKzEyfDA7bT1xKzh8MDtvPXErNHwwO249cTtrW2c+PjJdPWE7a1toPj4yXT1iO2tbaT4+Ml09YztrW2o+PjJdPWQ7a1tsPj4yXT1lO2tbbT4+Ml09ZjtpZighKGtbKGtba1tnPj4yXT4+Ml18MCkrMjQ+PjJdJjUyNDI4OCkpe3I9cTtyZXR1cm59ZD1neShrW2g+PjJdfDApfDA7a1tvPj4yXT1kO3doaWxlKDEpe2lmKCEoa1tvPj4yXXwwKSlicmVhaztpZighKChrW2w+PjJdfDApIT0wPyh3RChrW2g+PjJdfDAsa1tvPj4yXXwwLGtbbD4+Ml18MCxrW20+PjJdfDApfDApPT0wOjApKXA9NjtpZigocHwwKT09Nj8ocD0wLGQ9Q0Yoa1tnPj4yXXwwLGtbaD4+Ml18MCxrW28+PjJdfDAsa1tpPj4yXXwwKXwwLGtbbj4+Ml09ZCwoa1tuPj4yXXwwKSE9MCk6MClERihrW2c+PjJdfDAsa1tuPj4yXXwwLGtbaD4+Ml18MCxrW2o+PjJdfDAsMiwwKTtrW28+PjJdPWtbKGtbbz4+Ml18MCkrMTI+PjJdfXI9cTtyZXR1cm59ZnVuY3Rpb24gQ0YoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxtPTAsbj0wLG89MCxwPTAscT0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wLEU9MCxGPTAsRz0wLEg9MCxJPTAsSj0wLEs9MCxMPTAsTT0wLE49MDtOPXI7cj1yKzE0NHwwO2U9TisxMzZ8MDtmPU4rMTMyfDA7Zz1OKzEyOHwwO2g9TisxMjR8MDttPU4rMTIwfDA7cD1OKzExNnwwO249TisxMTJ8MDtEPU4rMTA4fDA7cz1OKzEwNHwwO0w9TisxMDB8MDt1PU4rOTZ8MDt4PU4rOTJ8MDtvPU4rODh8MDtDPU4rODR8MDtGPU4rODB8MDt5PU4rNzZ8MDtCPU4rNzJ8MDtxPU4rNjh8MDtFPU4rNjR8MDtKPU4rNTZ8MDtJPU4rNDh8MDtIPU4rNDB8MDtLPU4rMzJ8MDt0PU4rMjh8MDt3PU4rMjR8MDt6PU4rMjB8MDt2PU4rMTZ8MDtHPU4rOHwwO0E9TjtrW2Y+PjJdPWE7a1tnPj4yXT1iO2tbaD4+Ml09YztrW20+PjJdPWQ7a1twPj4yXT1rW2tbZj4+Ml0+PjJdO2tbcz4+Ml09KGtbbT4+Ml18MCkhPTAmMTtrW24+PjJdPWxbKGtbaD4+Ml18MCkrMjUrKGtbcz4+Ml18MCk+PjBdO2lmKChrW24+PjJdfDApPT02PyhrWyhrW3A+PjJdfDApKzI0Pj4yXSYzMzU1NDQzMnwwKSE9MDowKXtrW2U+PjJdPTA7TT1rW2U+PjJdfDA7cj1OO3JldHVybiBNfDB9a1tEPj4yXT1rWyhrW2g+PjJdfDApKzI4KyhrW3M+PjJdPDwyKT4+Ml07aWYoISgoa1tuPj4yXXwwKT09MHwoa1tEPj4yXXwwKSE9MCkpe2tbeD4+Ml09MDtrW28+PjJdPTA7a1tDPj4yXT0wO2tbRj4+Ml09MDtrW3k+PjJdPTA7a1tCPj4yXT0wO2tbRT4+Ml09MDtpZihMQyhrW2Y+PjJdfDAsa1tnPj4yXXwwLGtbaD4+Ml18MCx4LG8pfDApe2tbZT4+Ml09MDtNPWtbZT4+Ml18MDtyPU47cmV0dXJuIE18MH1rW3E+PjJdPTA7d2hpbGUoMSl7aWYoKGtbcT4+Ml18MCk+PShrWyhrW2g+PjJdfDApKzIwPj4yXXwwKSlicmVhaztrW0o+PjJdPWtbMTM2OV07a1tKKzQ+PjJdPWtbMTM3MF07a1tJPj4yXT1rWzEzNzFdO2tbSSs0Pj4yXT1rWzEzNzJdO2lmKGtbbz4+Ml18MClkPWtbKGtbbz4+Ml18MCkrKGtbcT4+Ml08PDIpPj4yXXwwO2Vsc2UgZD1rWyhrW2g+PjJdfDApKzM2Pj4yXXwwO2tbdD4+Ml09ZDtpZihrW3g+PjJdfDApZD1qWyhrWyhrW3g+PjJdfDApKzQ+PjJdfDApKyhrW3E+PjJdPDwxKT4+MV18MDtlbHNlIGQ9alsoa1tnPj4yXXwwKSszMj4+MV18MDtmeihLLGtbKGtbKGtbZz4+Ml18MCkrND4+Ml18MCkrKGQ8PDE2Pj4xNjw8NCk+PjJdfDApO2Z6KEgsa1soa1soa1trW2g+PjJdPj4yXXwwKSs0Pj4yXXwwKSsoa1t0Pj4yXTw8NCk+PjJdfDApO2E9a1tmPj4yXXwwO2M9a1tmPj4yXXwwO2I9dHcoa1twPj4yXXwwLDU1LEosMCl8MDtiPU92KGMsMTIyLGIsdHcoa1twPj4yXXwwLDU1LEssMCl8MCwwKXwwO2I9T3YoYSwzNyxiLHR3KGtbcD4+Ml18MCw1NSxILDApfDAsMCl8MDtrW3c+PjJdPWI7Yj1HeihrW3A+PjJdfDAsa1tGPj4yXXwwLGtbdz4+Ml18MCl8MDtrW0Y+PjJdPWI7aWYoa1ttPj4yXXwwKXtkPWtbZj4+Ml18MDthPWtbZj4+Ml18MDtjPXR3KGtbcD4+Ml18MCw1NSxKLDApfDA7Yz1PdihhLDEyMixjLHR3KGtbcD4+Ml18MCw1NSxLLDApfDAsMCl8MDthPWtbZj4+Ml18MDtiPXR3KGtbcD4+Ml18MCw1NSxJLDApfDA7Yj1PdihkLDI5LGMsT3YoYSwxMjIsYix0dyhrW3A+PjJdfDAsNTUsSywwKXwwLDApfDAsMCl8MDtrW3c+PjJdPWI7Yj1HeihrW3A+PjJdfDAsa1tFPj4yXXwwLGtbdz4+Ml18MCl8MDtrW0U+PjJdPWJ9aWYoKGtbbj4+Ml18MCkhPTY/KGtbbj4+Ml18MCkhPTl8KGtbbT4+Ml18MCkhPTA6MCl7ZG8gaWYoKGtbbj4+Ml18MCkhPTkpe2lmKChrW24+PjJdfDApIT04KXtiPXR3KGtbcD4+Ml18MCwxMDEsMCwwKXwwO2tbej4+Ml09YjticmVha31rW3Y+PjJdPWtbKGtbKGtba1toPj4yXT4+Ml18MCkrND4+Ml18MCkrKGtbdD4+Ml08PDQpKzQ+PjJdO2Q9a1twPj4yXXwwO2lmKGtbdj4+Ml18MCl7Yj1TeShkLGtbdj4+Ml18MCwwKXwwO2tbej4+Ml09YjticmVha31lbHNle2I9dHcoZCwxMDEsMCwwKXwwO2tbej4+Ml09YjticmVha319ZWxzZXthPWtbZj4+Ml18MDtiPXR3KGtbcD4+Ml18MCw1NSxJLDApfDA7Yj1PdihhLDEyMixiLHR3KGtbcD4+Ml18MCw1NSxLLDApfDAsMCl8MDtrW3o+PjJdPWJ9d2hpbGUoMCk7Yj1idyhrW2Y+PjJdfDAsa1t5Pj4yXXwwLGtbej4+Ml18MCl8MDtrW3k+PjJdPWI7Y3coa1tmPj4yXXwwLGtbeT4+Ml18MCxILDApfWtbcT4+Ml09KGtbcT4+Ml18MCkrMX1iZyhrW3A+PjJdfDAsa1tvPj4yXXwwKTtrW0w+PjJdPWtba1trW2g+PjJdPj4yXT4+Ml07Sz1UZihrW0w+PjJdfDApfDA7a1t1Pj4yXT1LO2lmKChrW24+PjJdfDApPT02KXtrW0c+PjJdPWtbTD4+Ml07a1tHKzQ+PjJdPWtbdT4+Ml07Sz1ldyhrW3A+PjJdfDAsODMsMzUxODkpfDA7a1tBPj4yXT1LO2lmKGtbQT4+Ml18MClpWyhrW0E+PjJdfDApKzE+PjBdPTI7ST1rW2Y+PjJdfDA7Sj1idyhrW2Y+PjJdfDAsMCxrW0E+PjJdfDApfDA7Sz1pdyhrW3A+PjJdfDAsMCxHLDApfDA7Sz1hdyhJLEosSyxrW0Y+PjJdfDAsMCwwLDAsMCwwLDApfDA7a1tCPj4yXT1LO2tbRj4+Ml09MH1LPShrW3A+PjJdfDApKzI1NnwwO2tbSz4+Ml09KGtbSz4+Ml18MCkrMTtLPUNoKGtbcD4+Ml18MCw3Misoa1t1Pj4yXXwwKSsxfDAsMCl8MDtrW0Q+PjJdPUs7aWYoKGtbRD4+Ml18MCkhPTA/KEs9KGtbRD4+Ml18MCkrMzZ8MCxrWyhrW0Q+PjJdfDApKzI4Pj4yXT1LLGtbQz4+Ml09SyxrWyhrW0M+PjJdfDApKzEyPj4yXT0oa1tDPj4yXXwwKSszNixiUyhrWyhrW0M+PjJdfDApKzEyPj4yXXwwLGtbTD4+Ml18MCxrW3U+PjJdfDApfDAsTD1TeShrW3A+PjJdfDAsa1tGPj4yXXwwLDEpfDAsa1soa1tDPj4yXXwwKSsxNj4+Ml09TCxMPV95KGtbcD4+Ml18MCxrW3k+PjJdfDAsMSl8MCxrWyhrW0M+PjJdfDApKzIwPj4yXT1MLEw9aXkoa1twPj4yXXwwLGtbQj4+Ml18MCwxKXwwLGtbKGtbQz4+Ml18MCkrOD4+Ml09TCwoa1tFPj4yXXwwKSE9MCk6MCl7TD1PdihrW2Y+PjJdfDAsMTksa1tFPj4yXXwwLDAsMCl8MDtrW0U+PjJdPUw7TD1TeShrW3A+PjJdfDAsa1tFPj4yXXwwLDEpfDA7a1soa1tEPj4yXXwwKSsxMj4+Ml09TH1MPShrW3A+PjJdfDApKzI1NnwwO2tbTD4+Ml09KGtbTD4+Ml18MCkrLTE7c3Yoa1twPj4yXXwwLGtbRj4+Ml18MCk7c3Yoa1twPj4yXXwwLGtbRT4+Ml18MCk7b3Yoa1twPj4yXXwwLGtbeT4+Ml18MCk7cHYoa1twPj4yXXwwLGtbQj4+Ml18MCk7aWYoKGxbKGtbcD4+Ml18MCkrNjk+PjBdfDB8MCk9PTEpe0VHKGtbcD4+Ml18MCxrW0Q+PjJdfDApO2tbZT4+Ml09MDtNPWtbZT4+Ml18MDtyPU47cmV0dXJuIE18MH1zd2l0Y2goa1tuPj4yXXwwKXtjYXNlIDY6e2lba1tDPj4yXT4+MF09MTE5O2JyZWFrfWNhc2UgOTp7aWYoa1ttPj4yXXwwKU09NDE7ZWxzZSBpW2tbQz4+Ml0+PjBdPTEwOTticmVha31kZWZhdWx0Ok09NDF9aWYoKE18MCk9PTQxKWlba1tDPj4yXT4+MF09MTEwO2tbKGtbQz4+Ml18MCkrND4+Ml09a1tEPj4yXTtrWyhrW0Q+PjJdfDApKzIwPj4yXT1rWyhrW2c+PjJdfDApKzY0Pj4yXTtrWyhrW0Q+PjJdfDApKzI0Pj4yXT1rWyhrW2c+PjJdfDApKzY0Pj4yXTtrWyhrW2g+PjJdfDApKzI4KyhrW3M+PjJdPDwyKT4+Ml09a1tEPj4yXTtpWyhrW0Q+PjJdfDApKzg+PjBdPShrW20+PjJdfDApIT0wPzExMDoxMDl9a1tlPj4yXT1rW0Q+PjJdO009a1tlPj4yXXwwO3I9TjtyZXR1cm4gTXwwfWZ1bmN0aW9uIERGKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxpPTAsaj0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wO289cjtyPXIrNDh8MDtoPW8rMzJ8MDtnPW8rMjh8MDtxPW8rMjR8MDtpPW8rMjB8MDtwPW8rMTZ8MDtqPW8rMTJ8MDtuPW8rOHwwO209bys0fDA7bD1vO2tbaD4+Ml09YTtrW2c+PjJdPWI7a1txPj4yXT1jO2tbaT4+Ml09ZDtrW3A+PjJdPWU7a1tqPj4yXT1mO2Q9bngoa1toPj4yXXwwKXwwO2tbbj4+Ml09ZDtkPUVGKGtbaD4+Ml18MCxrW2c+PjJdfDAsa1txPj4yXXwwLGtbcD4+Ml18MCl8MDtrW20+PjJdPWQ7aWYoIShrW20+PjJdfDApKXtyPW87cmV0dXJufWlmKGtba1tnPj4yXT4+Ml18MClnPTA9PShrWyhrW2tbaD4+Ml0+PjJdfDApKzI0Pj4yXSYyNjIxNDR8MCk7ZWxzZSBnPTA7a1tsPj4yXT1nJjE7ZD1rW24+PjJdfDA7aT1rW2k+PjJdfDA7cD1rW2o+PjJdfDA7aj0oa1toPj4yXXwwKSs0NHwwO3E9KGtbaj4+Ml18MCkrMXwwO2tbaj4+Ml09cTt3eChkLDY0LGkscCxxLGtbKGtbbT4+Ml18MCkrOD4+Ml18MCwtMTgpfDA7VGgoa1tuPj4yXXwwLGtbbD4+Ml0mMjU1KTtyPW87cmV0dXJufWZ1bmN0aW9uIEVGKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaT0wLGo9MCxsPTA7bD1yO3I9ciszMnwwO2U9bCsyMHwwO2Y9bCsxNnwwO2c9bCsxMnwwO2g9bCs4fDA7aj1sKzR8MDtpPWw7a1tlPj4yXT1hO2tbZj4+Ml09YjtrW2c+PjJdPWM7a1toPj4yXT1kO2Q9a1tlPj4yXXwwO2lmKGtbKGtbZT4+Ml18MCkrMTI0Pj4yXXwwKWQ9a1tkKzEyND4+Ml18MDtrW2o+PjJdPWQ7a1tpPj4yXT1rWyhrW2o+PjJdfDApKzQ2OD4+Ml07d2hpbGUoMSl7aWYoIShrW2k+PjJdfDApKWJyZWFrO2lmKChrW2tbaT4+Ml0+PjJdfDApPT0oa1tmPj4yXXwwKT8oa1soa1tpPj4yXXwwKSsxMj4+Ml18MCk9PShrW2g+PjJdfDApOjApYnJlYWs7a1tpPj4yXT1rWyhrW2k+PjJdfDApKzQ+PjJdfWlmKGtbaT4+Ml18MCl7aj1rW2k+PjJdfDA7cj1sO3JldHVybiBqfDB9aj1GRihrW2U+PjJdfDAsa1tmPj4yXXwwLGtbZz4+Ml18MCxrW2g+PjJdfDApfDA7a1tpPj4yXT1qO2o9a1tpPj4yXXwwO3I9bDtyZXR1cm4ganwwfWZ1bmN0aW9uIEZGKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLG09MCxuPTAsbz0wLHA9MCxxPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTA7eD1yO3I9cis5NnwwO3c9eDtlPXgrODR8MDtmPXgrODB8MDtnPXgrNzZ8MDtoPXgrNzJ8MDtqPXgrNjh8MDtzPXgrNjR8MDttPXgrNjB8MDtvPXgrNTZ8MDt0PXgrNTJ8MDt2PXgrNDh8MDt1PXgrMTZ8MDtwPXgrMTJ8MDtxPXgrOHwwO249eCs0fDA7a1tmPj4yXT1hO2tbZz4+Ml09YjtrW2g+PjJdPWM7a1tqPj4yXT1kO2Q9a1tmPj4yXXwwO2lmKGtbKGtbZj4+Ml18MCkrMTI0Pj4yXXwwKWQ9a1tkKzEyND4+Ml18MDtrW3M+PjJdPWQ7a1ttPj4yXT1rW2tbZj4+Ml0+PjJdO2tbdD4+Ml09MDtrW3A+PjJdPTA7a1tuPj4yXT0wO2I9Q2goa1ttPj4yXXwwLDI0LDApfDA7a1tvPj4yXT1iO2lmKCEoa1tvPj4yXXwwKSl7a1tlPj4yXT0wO3c9a1tlPj4yXXwwO3I9eDtyZXR1cm4gd3wwfWtbKGtbbz4+Ml18MCkrND4+Ml09a1soa1tzPj4yXXwwKSs0Njg+PjJdO2tbKGtbcz4+Ml18MCkrNDY4Pj4yXT1rW28+PjJdO2I9Q2goa1ttPj4yXXwwLDI0LDApfDA7a1twPj4yXT1iO2tbKGtbbz4+Ml18MCkrOD4+Ml09YjtpZighKGtbcD4+Ml18MCkpe2tbZT4+Ml09MDt3PWtbZT4+Ml18MDtyPXg7cmV0dXJuIHd8MH1HRihrWyhrW3M+PjJdfDApKzg+PjJdfDAsa1twPj4yXXwwKTtrW2tbbz4+Ml0+PjJdPWtbZz4+Ml07a1soa1tvPj4yXXwwKSsxMj4+Ml09a1tqPj4yXTtrWyhrW28+PjJdfDApKzE2Pj4yXT0tMTtrWyhrW28+PjJdfDApKzE2KzQ+PjJdPS0xO2I9Q2goa1ttPj4yXXwwLDQ4MCwwKXwwO2tbcT4+Ml09YjtpZighKGtbcT4+Ml18MCkpe2tbZT4+Ml09MDt3PWtbZT4+Ml18MDtyPXg7cmV0dXJuIHd8MH07a1t1Pj4yXT0wO2tbdSs0Pj4yXT0wO2tbdSs4Pj4yXT0wO2tbdSsxMj4+Ml09MDtrW3UrMTY+PjJdPTA7a1t1KzIwPj4yXT0wO2tbdSsyND4+Ml09MDtrW3UrMjg+PjJdPTA7a1t1Pj4yXT1rW3E+PjJdO2tba1txPj4yXT4+Ml09a1ttPj4yXTtrWyhrW3E+PjJdfDApKzEyOD4+Ml09a1toPj4yXTtrWyhrW3E+PjJdfDApKzEyND4+Ml09a1tzPj4yXTtrWyhrW3E+PjJdfDApKzQ0OD4+Ml09a1trW2c+PjJdPj4yXTtpWyhrW3E+PjJdfDApKzE0OD4+MF09aVsoa1tnPj4yXXwwKSs4Pj4wXXwwO2tbKGtbcT4+Ml18MCkrMTM2Pj4yXT1rWyhrW2Y+PjJdfDApKzEzNj4+Ml07aD1ueChrW3E+PjJdfDApfDA7a1t2Pj4yXT1oO2lmKGtbdj4+Ml18MCl7Yj1rW3Y+PjJdfDA7aD1rW20+PjJdfDA7a1t3Pj4yXT1rW2tbZz4+Ml0+PjJdO1doKGIsLTEsUWgoaCwzNDg4NCx3KXwwLC0xKTtpZihrWyhrW2c+PjJdfDApKzEyPj4yXXwwKXt3PVN5KGtbbT4+Ml18MCxrWyhrW2c+PjJdfDApKzEyPj4yXXwwLDApfDA7a1t0Pj4yXT13O2lmKDA9PShLeSh1LGtbdD4+Ml18MCl8MCk/KGxbKGtbbT4+Ml18MCkrNjk+PjBdfDB8MCk9PTA6MCl7dz1lQShrW3Y+PjJdfDApfDA7a1tuPj4yXT13O3NCKGtbcT4+Ml18MCxrW3Q+PjJdfDAsa1tuPj4yXXwwLDE2KX1zdihrW20+PjJdfDAsa1t0Pj4yXXwwKX1IRihrW3E+PjJdfDAsa1soa1tnPj4yXXwwKSsyOD4+Ml18MCxrW2o+PjJdfDApfDA7aWYoa1tuPj4yXXwwKWlBKGtbdj4+Ml18MCxrW24+PjJdfDApO3B4KGtbdj4+Ml18MCw3NSl8MDtJRihrW2Y+PjJdfDAsa1txPj4yXXwwKTtpZighKGxbKGtbbT4+Ml18MCkrNjk+PjBdfDApKXt3PUpGKGtbdj4+Ml18MCwoa1twPj4yXXwwKSs0fDAsKGtbcz4+Ml18MCkrMTA4fDApfDA7a1trW3A+PjJdPj4yXT13fWtbKGtbcD4+Ml18MCkrOD4+Ml09a1soa1txPj4yXXwwKSs0ND4+Ml07a1soa1twPj4yXXwwKSsxMj4+Ml09a1soa1txPj4yXXwwKSs0MD4+Ml07a1soa1twPj4yXXwwKSsxNj4+Ml09a1tnPj4yXTtrWyhrW28+PjJdfDApKzE2Pj4yXT1rWyhrW3E+PjJdfDApKzE0MD4+Ml07a1soa1tvPj4yXXwwKSsxNis0Pj4yXT1rWyhrW3E+PjJdfDApKzE0ND4+Ml07bXYoa1t2Pj4yXXwwKX1aaChrW3E+PjJdfDApO2JnKGtbbT4+Ml18MCxrW3E+PjJdfDApO2tbZT4+Ml09a1tvPj4yXTt3PWtbZT4+Ml18MDtyPXg7cmV0dXJuIHd8MH1mdW5jdGlvbiBHRihhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MDtjPXI7cj1yKzE2fDA7ZD1jKzR8MDtlPWM7a1tkPj4yXT1hO2tbZT4+Ml09YjtrWyhrW2U+PjJdfDApKzIwPj4yXT1rWyhrW2Q+PjJdfDApKzIwMD4+Ml07a1soa1tkPj4yXXwwKSsyMDA+PjJdPWtbZT4+Ml07cj1jO3JldHVybn1mdW5jdGlvbiBIRihhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLG09MCxuPTAsbz0wO249cjtyPXIrNjR8MDtkPW4rNTJ8MDtvPW4rNDh8MDtlPW4rNDR8MDtoPW4rNDB8MDttPW4rMzZ8MDtmPW4rMzJ8MDtqPW4rOHwwO2c9bjtrW2Q+PjJdPWE7a1tvPj4yXT1iO2tbZT4+Ml09YztrW20+PjJdPWtbKGtbZD4+Ml18MCkrOD4+Ml07a1tmPj4yXT1rW2tbZD4+Ml0+PjJdO2tbaD4+Ml09a1tvPj4yXTt3aGlsZSgxKXtpZighKGtbaD4+Ml18MCkpYnJlYWs7aWYoKGtbZT4+Ml18MCk9PTEwKWM9aVsoa1toPj4yXXwwKSsxPj4wXXwwO2Vsc2UgYz1rW2U+PjJdJjI1NTtpWyhrW2Q+PjJdfDApKzE0OT4+MF09Yztzd2l0Y2gobFtrW2g+PjJdPj4wXXwwfDApe2Nhc2UgMTEwOnthPWtbZD4+Ml18MDtiPURHKGtbZD4+Ml18MCxrW2g+PjJdfDApfDA7bz1feShrW2Y+PjJdfDAsa1soa1toPj4yXXwwKSsyMD4+Ml18MCwwKXwwO293KGEsYixvLFN5KGtbZj4+Ml18MCxrWyhrW2g+PjJdfDApKzE2Pj4yXXwwLDApfDAsbFsoa1tkPj4yXXwwKSsxNDk+PjBdfDApO2JyZWFrfWNhc2UgMTA4OnthPWtbZD4+Ml18MDtiPURHKGtbZD4+Ml18MCxrW2g+PjJdfDApfDA7bz1peShrW2Y+PjJdfDAsa1soa1toPj4yXXwwKSs4Pj4yXXwwLDApfDA7cXcoYSxiLG8sU3ooa1tmPj4yXXwwLGtbKGtbaD4+Ml18MCkrMjQ+PjJdfDApfDAsbFsoa1tkPj4yXXwwKSsxNDk+PjBdfDApO2JyZWFrfWNhc2UgMTA5OntvPWtbZD4+Ml18MDttdyhvLERHKGtbZD4+Ml18MCxrW2g+PjJdfDApfDAsU3koa1tmPj4yXXwwLGtbKGtbaD4+Ml18MCkrMTY+PjJdfDAsMCl8MCk7YnJlYWt9ZGVmYXVsdDp7bz1peShrW2Y+PjJdfDAsa1soa1toPj4yXXwwKSs4Pj4yXXwwLDApfDA7a1tnPj4yXT1vO0ZCKGosNCwwKTtadihrW2Q+PjJdfDAsa1tnPj4yXXwwLGopfDA7cHYoa1tmPj4yXXwwLGtbZz4+Ml18MCl9fWlmKChsW2tbaD4+Ml0+PjBdfDB8MCkhPTExOSlweChrW20+PjJdfDAsMTE4KXwwO2tbaD4+Ml09a1soa1toPj4yXXwwKSsyOD4+Ml19cj1uO3JldHVybiAwfWZ1bmN0aW9uIElGKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wO2U9cjtyPXIrMTZ8MDtjPWUrNHwwO2Q9ZTtrW2M+PjJdPWE7a1tkPj4yXT1iO2I9a1tkPj4yXXwwO2lmKCEoa1soa1tjPj4yXXwwKSszNj4+Ml18MCkpe2tbKGtbYz4+Ml18MCkrND4+Ml09a1tiKzQ+PjJdO2tbKGtbYz4+Ml18MCkrMzY+PjJdPWtbKGtbZD4+Ml18MCkrMzY+PjJdO2tbKGtbYz4+Ml18MCkrMTI+PjJdPWtbKGtbZD4+Ml18MCkrMTI+PjJdO3I9ZTtyZXR1cm59ZWxzZXtiZyhrW2I+PjJdfDAsa1soa1tkPj4yXXwwKSs0Pj4yXXwwKTtyPWU7cmV0dXJufX1mdW5jdGlvbiBKRihhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTA7ZT1yO3I9cisxNnwwO2Y9ZSsxMnwwO2c9ZSs4fDA7aD1lKzR8MDtkPWU7a1tmPj4yXT1hO2tbZz4+Ml09YjtrW2g+PjJdPWM7a1tkPj4yXT1rWyhrW2Y+PjJdfDApKzg4Pj4yXTtLRihrW2Y+PjJdfDAsa1toPj4yXXwwKTtrW2tbZz4+Ml0+PjJdPWtbKGtbZj4+Ml18MCkrMTM2Pj4yXTtrWyhrW2Y+PjJdfDApKzg4Pj4yXT0wO3I9ZTtyZXR1cm4ga1tkPj4yXXwwfWZ1bmN0aW9uIEtGKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wLG09MCxuPTAsbz0wO289cjtyPXIrMzJ8MDtjPW8rMjR8MDtkPW8rMjB8MDtnPW8rMTZ8MDtoPW8rMTJ8MDttPW8rOHwwO2U9bys0fDA7Zj1vO2tbYz4+Ml09YTtrW2Q+PjJdPWI7a1tnPj4yXT1rW2tbZD4+Ml0+PjJdO2tbbT4+Ml09a1soa1tjPj4yXXwwKSsxMj4+Ml07a1tlPj4yXT1rWyhrW20+PjJdfDApKzc2Pj4yXTtiPShrW2M+PjJdfDApKzE0NHwwO2pbYj4+MV09altiPj4xXSYtMTI5fDEyODtiPShrW2M+PjJdfDApKzE0NHwwO2pbYj4+MV09altiPj4xXSYtMjU3O2tbaD4+Ml09KGtbKGtbYz4+Ml18MCkrODg+PjJdfDApKygoKGtbKGtbYz4+Ml18MCkrMTM2Pj4yXXwwKS0xfDApKjIwfDApO3doaWxlKDEpe2lmKChsW2tbaD4+Ml0+PjBdfDB8MCk8PTcxKXtzd2l0Y2gobFtrW2g+PjJdPj4wXXwwfDApe2Nhc2UgMjp7aWYoa1soa1toPj4yXXwwKSs4Pj4yXXwwKXtuPShrW2M+PjJdfDApKzE0NHwwO2pbbj4+MV09altuPj4xXSYtMTI5O249Nn1lbHNlIG49NjticmVha31jYXNlIDA6Y2FzZSAxOntuPTY7YnJlYWt9Y2FzZSA5OmNhc2UgMTA6Y2FzZSA4OntiPShrW2M+PjJdfDApKzE0NHwwO2pbYj4+MV09altiPj4xXSYtMTI5O2I9KGtbYz4+Ml18MCkrMTQ0fDA7altiPj4xXT1qW2I+PjFdJi0yNTd8MjU2O2JyZWFrfWNhc2UgMTI6e2lmKChrWyhrW2g+PjJdfDApKzg+PjJdfDApPihrW2c+PjJdfDApKWtbZz4+Ml09a1soa1toPj4yXXwwKSs4Pj4yXTticmVha31jYXNlIDExOntrW2Y+PjJdPWtbKGtbaD4+Ml18MCkrLTIwKzQ+PjJdO2lmKChrW2Y+PjJdfDApPihrW2c+PjJdfDApKWtbZz4+Ml09a1tmPj4yXTticmVha31jYXNlIDM6Y2FzZSA1OmNhc2UgNzp7a1soa1toPj4yXXwwKSsxNj4+Ml09MjAxO2lbKGtbaD4+Ml18MCkrMT4+MF09LTE5O2JyZWFrfWNhc2UgNDpjYXNlIDY6e2tbKGtbaD4+Ml18MCkrMTY+PjJdPTIwMjtpWyhrW2g+PjJdfDApKzE+PjBdPS0xOTticmVha31kZWZhdWx0Ont9fWlmKChufDApPT02KXtuPTA7Yj0oa1tjPj4yXXwwKSsxNDR8MDtqW2I+PjFdPWpbYj4+MV0mLTI1N3wyNTZ9aWYoKChsWzM0ODk4KyhsW2tbaD4+Ml0+PjBdfDApPj4wXXwwKSYxfDApIT0wPyhrWyhrW2g+PjJdfDApKzg+PjJdfDApPDA6MClrWyhrW2g+PjJdfDApKzg+PjJdPWtbKGtbZT4+Ml18MCkrKC0xLShrWyhrW2g+PjJdfDApKzg+PjJdfDApPDwyKT4+Ml19aWYoKGtbaD4+Ml18MCk9PShrWyhrW2M+PjJdfDApKzg4Pj4yXXwwKSlicmVhaztrW2g+PjJdPShrW2g+PjJdfDApKy0yMH1iZyhrW2tbYz4+Ml0+PjJdfDAsa1soa1ttPj4yXXwwKSs3Nj4+Ml18MCk7a1soa1ttPj4yXXwwKSs3Nj4+Ml09MDtrWyhrW20+PjJdfDApKzcyPj4yXT0wO2tba1tkPj4yXT4+Ml09a1tnPj4yXTtyPW87cmV0dXJufWZ1bmN0aW9uIExGKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTA7Zz1yO3I9cisxNnwwO2M9ZysxMnwwO2Q9Zys4fDA7ZT1nKzR8MDtmPWc7a1tkPj4yXT1hO2tbZT4+Ml09YjtqWyhrW2Q+PjJdfDApKzE2KzE4Pj4xXT0wO2E9KGtbZD4+Ml18MCkrNjR8MDtpW2E+PjBdPWxbYT4+MF0mLTc7a1trW2U+PjJdPj4yXT0wO2E9a1tkPj4yXXwwO2lmKChsWyhrW2Q+PjJdfDApKzY2Pj4wXXwwKSE9MSl7Zj1CRyhhLGtbZT4+Ml18MCl8MDtrW2M+PjJdPWY7Zj1rW2M+PjJdfDA7cj1nO3JldHVybiBmfDB9a1tmPj4yXT1rWyhrW2Q+PjJdfDApKzEyMCsoaVthKzY4Pj4wXTw8Mik+PjJdO2E9KGtbZD4+Ml18MCkrODArKGlbKGtbZD4+Ml18MCkrNjg+PjBdPDwxKXwwO2I9KGpbYT4+MV18MCkrMTw8MTY+PjE2O2pbYT4+MV09YjtpZigoYiY2NTUzNXwwKT49KG1bKGtbZj4+Ml18MCkrMTg+PjFdfDApKXtmPShrW2Q+PjJdfDApKzgwKyhpWyhrW2Q+PjJdfDApKzY4Pj4wXTw8MSl8MDtqW2Y+PjFdPShqW2Y+PjFdfDApKy0xPDwxNj4+MTY7Zj1CRyhrW2Q+PjJdfDAsa1tlPj4yXXwwKXwwO2tbYz4+Ml09ZjtmPWtbYz4+Ml18MDtyPWc7cmV0dXJuIGZ8MH1pZihpWyhrW2Y+PjJdfDApKzQ+PjBdfDApe2tbYz4+Ml09MDtmPWtbYz4+Ml18MDtyPWc7cmV0dXJuIGZ8MH1lbHNle2Y9Q0coa1tkPj4yXXwwKXwwO2tbYz4+Ml09ZjtmPWtbYz4+Ml18MDtyPWc7cmV0dXJuIGZ8MH1yZXR1cm4gMH1mdW5jdGlvbiBNRihhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTA7Zj1yO3I9cisxNnwwO2M9Zis4fDA7ZD1mKzR8MDtlPWY7a1tkPj4yXT1hO2tbZT4+Ml09YjtrW2tbZT4+Ml0+PjJdPTA7Yj0oa1tkPj4yXXwwKSs2NHwwO2lbYj4+MF09bFtiPj4wXSYtMTU7alsoa1tkPj4yXXwwKSsxNisxOD4+MV09MDtpZigoKGxbKGtbZD4+Ml18MCkrNjY+PjBdfDApPT0xPyhtWyhrW2Q+PjJdfDApKzgwKyhpWyhrW2Q+PjJdfDApKzY4Pj4wXTw8MSk+PjFdfDApIT0wOjApPyhsWyhrWyhrW2Q+PjJdfDApKzEyMCsoaVsoa1tkPj4yXXwwKSs2OD4+MF08PDIpPj4yXXwwKSs0Pj4wXXwwKSE9MDowKXtiPShrW2Q+PjJdfDApKzgwKyhpWyhrW2Q+PjJdfDApKzY4Pj4wXTw8MSl8MDtqW2I+PjFdPShqW2I+PjFdfDApKy0xPDwxNj4+MTY7a1tjPj4yXT0wO2I9a1tjPj4yXXwwO3I9ZjtyZXR1cm4gYnwwfWI9TkYoa1tkPj4yXXwwLGtbZT4+Ml18MCl8MDtrW2M+PjJdPWI7Yj1rW2M+PjJdfDA7cj1mO3JldHVybiBifDB9ZnVuY3Rpb24gTkYoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTAsbj0wLG89MDtvPXI7cj1yKzMyfDA7ZD1vKzIwfDA7ZT1vKzE2fDA7Zj1vKzEyfDA7aD1vKzh8MDtnPW8rNHwwO2M9bztrW2U+PjJdPWE7a1tmPj4yXT1iO2lmKChsWyhrW2U+PjJdfDApKzY2Pj4wXXwwKSE9MSl7aWYoKGxbKGtbZT4+Ml18MCkrNjY+PjBdfDApPj0zKWE9T0Yoa1tlPj4yXXwwKXwwO2Vsc2UgYT0wO2tbaD4+Ml09YTtpZihrW2g+PjJdfDApe2tbZD4+Ml09a1toPj4yXTtuPWtbZD4+Ml18MDtyPW87cmV0dXJuIG58MH1pZighKGxbKGtbZT4+Ml18MCkrNjY+PjBdfDApKXtrW2tbZj4+Ml0+PjJdPTE7a1tkPj4yXT0wO249a1tkPj4yXXwwO3I9bztyZXR1cm4gbnwwfWlmKChrWyhrW2U+PjJdfDApKzYwPj4yXXwwKSE9MD8oaVsoa1tlPj4yXXwwKSs2Nj4+MF09MSxiPShrWyhrW2U+PjJdfDApKzYwPj4yXXwwKTwwLGtbKGtbZT4+Ml18MCkrNjA+PjJdPTAsYik6MCl7a1tkPj4yXT0wO249a1tkPj4yXXwwO3I9bztyZXR1cm4gbnwwfX1rW2c+PjJdPWtbKGtbZT4+Ml18MCkrMTIwKyhpWyhrW2U+PjJdfDApKzY4Pj4wXTw8Mik+PjJdO2RvIGlmKGlbKGtbZz4+Ml18MCkrND4+MF18MCl7d2hpbGUoMSl7YT1pWyhrW2U+PjJdfDApKzY4Pj4wXXwwO2lmKG1bKGtbZT4+Ml18MCkrODArKGlbKGtbZT4+Ml18MCkrNjg+PjBdPDwxKT4+MV18MClicmVhaztiPWtbZT4+Ml18MDtpZighYSl7bj0xNzticmVha31SRihiKX1pZigobnwwKT09MTcpe2lbYis2Nj4+MF09MDtrW2tbZj4+Ml0+PjJdPTE7a1tkPj4yXT0wO249a1tkPj4yXXwwO3I9bztyZXR1cm4gbnwwfW49KGtbZT4+Ml18MCkrODArKGE8PDEpfDA7altuPj4xXT0oaltuPj4xXXwwKSstMTw8MTY+PjE2O2tbZz4+Ml09a1soa1tlPj4yXXwwKSsxMjArKGlbKGtbZT4+Ml18MCkrNjg+PjBdPDwyKT4+Ml07aWYoKGxbKGtbZz4+Ml18MCkrMj4+MF18MCkhPTA/KGlbKGtbZz4+Ml18MCkrND4+MF18MCk9PTA6MCl7bj1NRihrW2U+PjJdfDAsa1tmPj4yXXwwKXwwO2tbaD4+Ml09bjticmVha31rW2g+PjJdPTB9ZWxzZXtrW2M+PjJdPW1bKGtbZT4+Ml18MCkrODArKGlbKGtbZT4+Ml18MCkrNjg+PjBdPDwxKT4+MV07bj1rW2U+PjJdfDA7bj1QRihuLHFyKChrWyhrW2c+PjJdfDApKzU2Pj4yXXwwKSsobVsoa1tnPj4yXXwwKSsyMD4+MV0mKGxbKGtbKGtbZz4+Ml18MCkrNjQ+PjJdfDApKyhrW2M+PjJdPDwxKT4+MF08PDh8bFsoa1soa1tnPj4yXXwwKSs2ND4+Ml18MCkrKGtbYz4+Ml08PDEpKzE+PjBdKSl8MCl8MCl8MDtrW2g+PjJdPW47aWYoIShrW2g+PjJdfDApKXtuPVFGKGtbZT4+Ml18MCl8MDtrW2g+PjJdPW47YnJlYWt9a1tkPj4yXT1rW2g+PjJdO249a1tkPj4yXXwwO3I9bztyZXR1cm4gbnwwfXdoaWxlKDApO2tbZD4+Ml09a1toPj4yXTtuPWtbZD4+Ml18MDtyPW87cmV0dXJuIG58MH1mdW5jdGlvbiBPRihhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTAsZT0wLGY9MDtmPXI7cj1yKzE2fDA7Yj1mKzEyfDA7Yz1mKzh8MDtkPWYrNHwwO2U9ZjtrW2M+PjJdPWE7YT1rW2M+PjJdfDA7aWYoKGxbKGtbYz4+Ml18MCkrNjY+PjBdfDB8MCk9PTQpe2tbYj4+Ml09a1thKzYwPj4yXTtlPWtbYj4+Ml18MDtyPWY7cmV0dXJuIGV8MH1pW2ErNjY+PjBdPTA7YT0oa1tjPj4yXXwwKSs0MHwwO2E9VkYoa1tjPj4yXXwwLGtbKGtbYz4+Ml18MCkrNDg+PjJdfDAsa1thPj4yXXwwLGtbYSs0Pj4yXXwwLDAsZSl8MDtrW2Q+PjJdPWE7aWYoKChrW2Q+PjJdfDApPT0wPyhVZChrWyhrW2M+PjJdfDApKzQ4Pj4yXXwwKSxrWyhrW2M+PjJdfDApKzQ4Pj4yXT0wLGE9KGtbYz4+Ml18MCkrNjB8MCxrW2E+PjJdPWtbYT4+Ml18a1tlPj4yXSwoa1soa1tjPj4yXXwwKSs2MD4+Ml18MCkhPTApOjApPyhsWyhrW2M+PjJdfDApKzY2Pj4wXXwwfDApPT0xOjApaVsoa1tjPj4yXXwwKSs2Nj4+MF09MjtrW2I+PjJdPWtbZD4+Ml07ZT1rW2I+PjJdfDA7cj1mO3JldHVybiBlfDB9ZnVuY3Rpb24gUEYoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MDtnPXI7cj1yKzE2fDA7Yz1nKzEyfDA7ZD1nKzh8MDtlPWcrNHwwO2Y9ZztrW2Q+PjJdPWE7a1tlPj4yXT1iO2tbZj4+Ml09a1soa1tkPj4yXXwwKSs0Pj4yXTtpZigoaVsoa1tkPj4yXXwwKSs2OD4+MF18MCk+PTE5KXthPV9qKDYzMDA5KXwwO2tbYz4+Ml09YTthPWtbYz4+Ml18MDtyPWc7cmV0dXJuIGF8MH1lbHNle2pbKGtbZD4+Ml18MCkrMTYrMTg+PjFdPTA7YT0oa1tkPj4yXXwwKSs2NHwwO2lbYT4+MF09bFthPj4wXSYtNzthPShrW2Q+PjJdfDApKzY4fDA7aVthPj4wXT0oaVthPj4wXXwwKSsxPDwyND4+MjQ7alsoa1tkPj4yXXwwKSs4MCsoaVsoa1tkPj4yXXwwKSs2OD4+MF08PDEpPj4xXT0wO2E9U0Yoa1tmPj4yXXwwLGtbZT4+Ml18MCwoa1tkPj4yXXwwKSsxMjArKGlbKGtbZD4+Ml18MCkrNjg+PjBdPDwyKXwwLGtbZD4+Ml18MCxsWyhrW2Q+PjJdfDApKzY1Pj4wXXwwKXwwO2tbYz4+Ml09YTthPWtbYz4+Ml18MDtyPWc7cmV0dXJuIGF8MH1yZXR1cm4gMH1mdW5jdGlvbiBRRihhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wO2g9cjtyPXIrMzJ8MDtlPWgrMTZ8MDtmPWgrMTJ8MDtkPWgrOHwwO2c9aCs0fDA7Yz1oO2tbZj4+Ml09YTtrW2c+PjJdPTA7a1tjPj4yXT0wO3doaWxlKDEpe2E9a1soa1tmPj4yXXwwKSsxMjArKGlbKGtbZj4+Ml18MCkrNjg+PjBdPDwyKT4+Ml18MDtrW2M+PjJdPWE7Yj1rW2M+PjJdfDA7aWYoISgoaVthKzQ+PjBdfDApIT0wXjEpKXthPTU7YnJlYWt9Yj1xcigoa1soa1tjPj4yXXwwKSs1Nj4+Ml18MCkrKChsW2IrNT4+MF18MCkrOCl8MCl8MDtrW2Q+PjJdPWI7alsoa1tmPj4yXXwwKSs4MCsoaVsoa1tmPj4yXXwwKSs2OD4+MF08PDEpPj4xXT1qWyhrW2M+PjJdfDApKzE4Pj4xXXwwO2I9UEYoa1tmPj4yXXwwLGtbZD4+Ml18MCl8MDtrW2c+PjJdPWI7aWYoa1tnPj4yXXwwKXthPTQ7YnJlYWt9fWlmKChhfDApPT00KXtrW2U+PjJdPWtbZz4+Ml07Zz1rW2U+PjJdfDA7cj1oO3JldHVybiBnfDB9ZWxzZSBpZigoYXwwKT09NSl7alsoa1tmPj4yXXwwKSs4MCsoaVsoa1tmPj4yXXwwKSs2OD4+MF08PDEpPj4xXT0obVtiKzE4Pj4xXXwwKS0xO2tbZT4+Ml09MDtnPWtbZT4+Ml18MDtyPWg7cmV0dXJuIGd8MH1yZXR1cm4gMH1mdW5jdGlvbiBSRihhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTA7Yj1yO3I9cisxNnwwO2M9YjtrW2M+PjJdPWE7alsoa1tjPj4yXXwwKSsxNisxOD4+MV09MDtkPShrW2M+PjJdfDApKzY0fDA7aVtkPj4wXT0obFtkPj4wXXwwKSYtNztkPShrW2M+PjJdfDApKzY4fDA7YT1pW2Q+PjBdfDA7aVtkPj4wXT1hKy0xPDwyND4+MjQ7YUMoa1soa1tjPj4yXXwwKSsxMjArKGE8PDI0Pj4yNDw8Mik+PjJdfDApO3I9YjtyZXR1cm59ZnVuY3Rpb24gU0YoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLG49MCxvPTAscD0wLHE9MCxzPTA7cz1yO3I9ciszMnwwO2Y9cysyOHwwO2c9cysyNHwwO2g9cysyMHwwO2o9cysxNnwwO249cysxMnwwO289cys4fDA7cT1zKzR8MDtwPXM7a1tnPj4yXT1hO2tbaD4+Ml09YjtrW2o+PjJdPWM7a1tuPj4yXT1kO2tbbz4+Ml09ZTtjPWtbaD4+Ml18MDthOmRvIGlmKGM+Pj4wPD0oVEYoa1tnPj4yXXwwKXwwKT4+PjApe2M9Rmcoa1trW2c+PjJdPj4yXXwwLGtbaD4+Ml18MCxwLGtbbz4+Ml18MCl8MDtrW3E+PjJdPWM7aWYoIShrW3E+PjJdfDApKXtjPWN1KGtbcD4+Ml18MCl8MDtrW2tbaj4+Ml0+PjJdPWM7aWYoKGxba1trW2o+PjJdPj4yXT4+MF18MHwwKT09MD8oVUYoa1twPj4yXXwwLGtbaD4+Ml18MCxrW2c+PjJdfDApfDAsYz1ldShrW2tbaj4+Ml0+PjJdfDApfDAsa1txPj4yXT1jLChrW3E+PjJdfDApIT0wKTowKXtfQihrW2tbaj4+Ml0+PjJdfDApO2JyZWFrfWRvIGlmKGtbbj4+Ml18MCl7aWYoKG1bKGtba1tqPj4yXT4+Ml18MCkrMTg+PjFdfDB8MCk+PTE/KGxbKGtba1tqPj4yXT4+Ml18MCkrMj4+MF18MHwwKT09KGxbKGtbbj4+Ml18MCkrNjk+PjBdfDB8MCk6MClicmVhaztjPV9qKDYwMjY2KXwwO2tbcT4+Ml09YztfQihrW2tbaj4+Ml0+PjJdfDApO2JyZWFrIGF9d2hpbGUoMCk7a1tmPj4yXT0wO3E9a1tmPj4yXXwwO3I9cztyZXR1cm4gcXwwfX1lbHNle2M9X2ooNjAyNDQpfDA7a1txPj4yXT1jfXdoaWxlKDApO2lmKGtbbj4+Ml18MCl7Yz0oa1tuPj4yXXwwKSs2OHwwO2lbYz4+MF09KGlbYz4+MF18MCkrLTE8PDI0Pj4yNH1rW2Y+PjJdPWtbcT4+Ml07cT1rW2Y+PjJdfDA7cj1zO3JldHVybiBxfDB9ZnVuY3Rpb24gVEYoYSl7YT1hfDA7dmFyIGI9MCxjPTA7Yz1yO3I9cisxNnwwO2I9YztrW2I+PjJdPWE7cj1jO3JldHVybiBrWyhrW2I+PjJdfDApKzQ0Pj4yXXwwfWZ1bmN0aW9uIFVGKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MDtoPXI7cj1yKzE2fDA7ZD1oKzEyfDA7ZT1oKzh8MDtmPWgrNHwwO2c9aDtrW2Q+PjJdPWE7a1tlPj4yXT1iO2tbZj4+Ml09YztiPWN1KGtbZD4+Ml18MCl8MDtrW2c+PjJdPWI7aWYoKGtbZT4+Ml18MCk9PShrWyhrW2c+PjJdfDApKzg0Pj4yXXwwKSl7Yj1rW2c+PjJdfDA7cj1oO3JldHVybiBifDB9Yj1HZyhrW2Q+PjJdfDApfDA7a1soa1tnPj4yXXwwKSs1Nj4+Ml09YjtrWyhrW2c+PjJdfDApKzcyPj4yXT1rW2Q+PjJdO2tbKGtbZz4+Ml18MCkrNTI+PjJdPWtbZj4+Ml07a1soa1tnPj4yXXwwKSs4ND4+Ml09a1tlPj4yXTtpWyhrW2c+PjJdfDApKzU+PjBdPShrW2U+PjJdfDApPT0xPzEwMDowO2I9a1tnPj4yXXwwO3I9aDtyZXR1cm4gYnwwfWZ1bmN0aW9uIFZGKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxpPTAsaj0wLGw9MCxuPTAsbz0wLHA9MCxxPTAscz0wO3M9cjtyPXIrNDMyfDA7Zz1zKzM2fDA7aD1zKzMyfDA7aT1zKzI4fDA7aj1zO2w9cysyNHwwO249cysyMHwwO3E9cysxNnwwO3A9cysxMnwwO289cys4fDA7a1toPj4yXT1hO2tbaT4+Ml09YjtiPWo7a1tiPj4yXT1jO2tbYis0Pj4yXT1kO2tbbD4+Ml09ZTtrW24+PjJdPWY7a1tvPj4yXT0wO2lmKGtbaT4+Ml18MCl7Zj1XRihrWyhrW2g+PjJdfDApKzcyPj4yXXwwLHMrNDB8MCwzODQsbyl8MDtrW3A+PjJdPWY7aWYoIShrW3A+PjJdfDApKXtrW2c+PjJdPTc7cT1rW2c+PjJdfDA7cj1zO3JldHVybiBxfDB9WEYoa1soa1toPj4yXXwwKSs3Mj4+Ml18MCxrW2o+PjJdfDAsa1tpPj4yXXwwLGtbcD4+Ml18MCk7aWYoIShtWyhrW3A+PjJdfDApKzg+PjFdfDApKXtiZyhrWyhrWyhrW2g+PjJdfDApKzcyPj4yXXwwKSsxMj4+Ml18MCxrW28+PjJdfDApO3E9X2ooNTkwMjEpfDA7a1tnPj4yXT1xO3E9a1tnPj4yXXwwO3I9cztyZXR1cm4gcXwwfX1lbHNlIGtbcD4+Ml09MDtmPWo7Zj1ZRihrW2g+PjJdfDAsa1twPj4yXXwwLGtbZj4+Ml18MCxrW2YrND4+Ml18MCxrW2w+PjJdfDAsa1tuPj4yXXwwKXwwO2tbcT4+Ml09ZjtpZihrW28+PjJdfDApYmcoa1soa1soa1toPj4yXXwwKSs3Mj4+Ml18MCkrMTI+PjJdfDAsa1tvPj4yXXwwKTtrW2c+PjJdPWtbcT4+Ml07cT1rW2c+PjJdfDA7cj1zO3JldHVybiBxfDB9ZnVuY3Rpb24gV0YoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxpPTAsbD0wLG49MCxvPTAscD0wO289cjtyPXIrMzJ8MDtlPW8rMjh8MDtmPW8rMjR8MDtnPW8rMjB8MDtwPW8rMTZ8MDtoPW8rMTJ8MDtuPW8rOHwwO2w9bys0fDA7aT1vO2tbZj4+Ml09YTtrW2c+PjJdPWI7a1twPj4yXT1jO2tbaD4+Ml09ZDtrW2w+PjJdPTgtKGtbZz4+Ml0mNykmNztrW2k+PjJdPTE2KygoKG1bKGtbZj4+Ml18MCkrNj4+MV18MCkrMXwwKSo0MHwwKTtpZigoa1tpPj4yXXwwKT4oKGtbcD4+Ml18MCkrKGtbbD4+Ml18MCl8MCkpe3A9a1tpPj4yXXwwO3A9TWgoa1soa1tmPj4yXXwwKSsxMj4+Ml18MCxwLCgocHwwKTwwKTw8MzE+PjMxKXwwO2tbbj4+Ml09cDtrW2tbaD4+Ml0+PjJdPWtbbj4+Ml07aWYoIShrW24+PjJdfDApKXtrW2U+PjJdPTA7cD1rW2U+PjJdfDA7cj1vO3JldHVybiBwfDB9fWVsc2V7a1tuPj4yXT0oa1tnPj4yXXwwKSsoa1tsPj4yXXwwKTtrW2tbaD4+Ml0+PjJdPTB9a1soa1tuPj4yXXwwKSs0Pj4yXT0oa1tuPj4yXXwwKSsxNjtrW2tbbj4+Ml0+PjJdPWtbZj4+Ml07alsoa1tuPj4yXXwwKSs4Pj4xXT0obVsoa1tmPj4yXXwwKSs2Pj4xXXwwKSsxO2tbZT4+Ml09a1tuPj4yXTtwPWtbZT4+Ml18MDtyPW87cmV0dXJuIHB8MH1mdW5jdGlvbiBYRihhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLG49MCxvPTAscD0wLHE9MCxzPTAsdD0wLHU9MCx2PTA7dT1yO3I9cis0OHwwO2U9dSszNnwwO2Y9dSszMnwwO3Y9dSsyOHwwO3M9dSsyNHwwO2c9dSsyMHwwO2g9dSsxNnwwO249dSsxMnwwO3Q9dSs0MHwwO3E9dSs4fDA7bz11KzR8MDtwPXU7a1tlPj4yXT1hO2tbZj4+Ml09YjtrW3Y+PjJdPWM7a1tzPj4yXT1kO2tbZz4+Ml09a1t2Pj4yXTtrW28+PjJdPWtbKGtbcz4+Ml18MCkrND4+Ml07aVsoa1tzPj4yXXwwKSsxMD4+MF09MDtiPWtbZz4+Ml18MDtpZigobFtrW2c+PjJdPj4wXXwwfDApPDEyOCl7a1txPj4yXT1sW2I+PjBdO2I9MX1lbHNlIGI9KGxHKGIscSl8MCkmMjU1O2tbbj4+Ml09YiYyNTU7a1toPj4yXT1rW3E+PjJdO2pbdD4+MV09MDt3aGlsZSgxKXtpZigoa1tuPj4yXXwwKT4+PjA+PShrW3E+PjJdfDApPj4+MCl7Yj0xMTticmVha31pZigoa1toPj4yXXwwKT4oa1tmPj4yXXwwKSl7Yj0xMTticmVha31iPShrW2c+PjJdfDApKyhrW24+PjJdfDApfDA7aWYoKGxbKGtbZz4+Ml18MCkrKGtbbj4+Ml18MCk+PjBdfDB8MCk8MTI4KXtrW3A+PjJdPWxbYj4+MF07Yj0xfWVsc2UgYj0obEcoYixwKXwwKSYyNTU7a1tuPj4yXT0oa1tuPj4yXXwwKSsoYiYyNTUpO2lbKGtbbz4+Ml18MCkrMTA+PjBdPWlbKGtbZT4+Ml18MCkrND4+MF18MDtrWyhrW28+PjJdfDApKzMyPj4yXT1rWyhrW2U+PjJdfDApKzEyPj4yXTtrWyhrW28+PjJdfDApKzI0Pj4yXT0wO2tbKGtbbz4+Ml18MCkrMTY+PjJdPTA7dj1uRygoa1tnPj4yXXwwKSsoa1toPj4yXXwwKXwwLGtbcD4+Ml18MCxrW28+PjJdfDApfDA7a1toPj4yXT0oa1toPj4yXXwwKSt2O2tbbz4+Ml09KGtbbz4+Ml18MCkrNDA7dj0oalt0Pj4xXXwwKSsxPDwxNj4+MTY7alt0Pj4xXT12O2lmKCh2JjY1NTM1fDApPj0obVsoa1tzPj4yXXwwKSs4Pj4xXXwwfDApKXtiPTExO2JyZWFrfX1pZigoYnwwKT09MTEpe2pbKGtbcz4+Ml18MCkrOD4+MV09alt0Pj4xXXwwO3I9dTtyZXR1cm59fWZ1bmN0aW9uIFlGKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxuPTAsbz0wLHA9MCxxPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTAsRT0wLEY9MDtGPXI7cj1yKzk2fDA7Zz1GKzgwfDA7aD1GKzc2fDA7bj1GKzcyfDA7bz1GKzh8MDtwPUYrNjh8MDtxPUYrNjR8MDtDPUYrNjB8MDtFPUYrNTZ8MDt2PUYrNTJ8MDtEPUYrNDh8MDt1PUYrNDR8MDtzPUYrNDB8MDt0PUYrMzZ8MDtCPUYrMzJ8MDt5PUYrMjh8MDt4PUY7dz1GKzI0fDA7QT1GKzIwfDA7ej1GKzE2fDA7a1toPj4yXT1hO2tbbj4+Ml09YjtiPW87a1tiPj4yXT1jO2tbYis0Pj4yXT1kO2tbcD4+Ml09ZTtrW3E+PjJdPWY7aWYoKChrW24+PjJdfDApPT0wPyhsWyhrW2g+PjJdfDApKzY2Pj4wXXwwKT09MTowKT8obFsoa1toPj4yXXwwKSs2ND4+MF0mMnwwKSE9MDowKXtiPShrW2g+PjJdfDApKzE2fDA7Zj1vO2lmKChrW2I+PjJdfDApPT0oa1tmPj4yXXwwKT8oa1tiKzQ+PjJdfDApPT0oa1tmKzQ+PjJdfDApOjApe2tba1txPj4yXT4+Ml09MDtrW2c+PjJdPTA7RT1rW2c+PjJdfDA7cj1GO3JldHVybiBFfDB9aWYoKGxbKGtbaD4+Ml18MCkrNjQ+PjBdJjh8MCkhPTA/KGI9KGtbaD4+Ml18MCkrMTZ8MCxlPWtbYis0Pj4yXXwwLGY9byxhPWtbZis0Pj4yXXwwLChlfDApPChhfDApfCgoZXwwKT09KGF8MCk/KGtbYj4+Ml18MCk+Pj4wPChrW2Y+PjJdfDApPj4+MDowKSk6MCl7a1trW3E+PjJdPj4yXT0tMTtrW2c+PjJdPTA7RT1rW2c+PjJdfDA7cj1GO3JldHVybiBFfDB9fWlmKGtbbj4+Ml18MCl7Zj1aRihrW24+PjJdfDApfDA7a1tFPj4yXT1mO2lbKGtbbj4+Ml18MCkrMTE+PjBdPTB9ZWxzZSBrW0U+PjJdPTA7Zj1fRihrW2g+PjJdfDApfDA7a1tDPj4yXT1mO2lmKGtbQz4+Ml18MCl7a1tnPj4yXT1rW0M+PjJdO0U9a1tnPj4yXXwwO3I9RjtyZXR1cm4gRXwwfWlmKCEobFsoa1toPj4yXXwwKSs2Nj4+MF18MCkpe2tba1txPj4yXT4+Ml09LTE7a1tnPj4yXT0wO0U9a1tnPj4yXXwwO3I9RjtyZXR1cm4gRXwwfWE6ZG97a1tCPj4yXT1rWyhrW2g+PjJdfDApKzEyMCsoaVsoa1toPj4yXXwwKSs2OD4+MF08PDIpPj4yXTtrW3Y+PjJdPTA7a1tEPj4yXT0obVsoa1tCPj4yXXwwKSsxOD4+MV18MCktMTtrW3U+PjJdPWtbRD4+Ml0+PjEtKGtbcD4+Ml18MCk7alsoa1toPj4yXXwwKSs4MCsoaVsoa1toPj4yXXwwKSs2OD4+MF08PDEpPj4xXT1rW3U+PjJdO2I6ZG8gaWYoIShrW0U+PjJdfDApKXt3aGlsZSgxKXtrW3k+PjJdPShrWyhrW0I+PjJdfDApKzY4Pj4yXXwwKSsobVsoa1tCPj4yXXwwKSsyMD4+MV0mKGxbKGtbKGtbQj4+Ml18MCkrNjQ+PjJdfDApKyhrW3U+PjJdPDwxKT4+MF08PDh8bFsoa1soa1tCPj4yXXwwKSs2ND4+Ml18MCkrKGtbdT4+Ml08PDEpKzE+PjBdKSk7YzpkbyBpZihpWyhrW0I+PjJdfDApKzM+PjBdfDApd2hpbGUoMSl7Zj1rW3k+PjJdfDA7a1t5Pj4yXT1mKzE7aWYoMTI4PihsW2Y+PjBdfDApKWJyZWFrIGM7aWYoKGtbeT4+Ml18MCk+Pj4wPj0oa1soa1tCPj4yXXwwKSs2MD4+Ml18MCk+Pj4wKXtkPTIwO2JyZWFrIGF9fXdoaWxlKDApO211KGtbeT4+Ml18MCx4KXwwO2I9eDtlPWtbYis0Pj4yXXwwO2Y9bzthPWtbZis0Pj4yXXwwO2lmKChlfDApPChhfDApfCgoZXwwKT09KGF8MCk/KGtbYj4+Ml18MCk+Pj4wPChrW2Y+PjJdfDApPj4+MDowKSl7a1t2Pj4yXT0oa1t1Pj4yXXwwKSsxO2lmKChrW3Y+PjJdfDApPihrW0Q+PjJdfDApKXtkPTIzO2JyZWFrfX1lbHNle2I9eDtlPWtbYis0Pj4yXXwwO2Y9bzthPWtbZis0Pj4yXXwwO2lmKCEoKGV8MCk+KGF8MCl8KChlfDApPT0oYXwwKT8oa1tiPj4yXXwwKT4+PjA+KGtbZj4+Ml18MCk+Pj4wOjApKSl7ZD0yNzticmVha31rW0Q+PjJdPShrW3U+PjJdfDApLTE7aWYoKGtbdj4+Ml18MCk+KGtbRD4+Ml18MCkpe2Q9MjY7YnJlYWt9fWtbdT4+Ml09KGtbdj4+Ml18MCkrKGtbRD4+Ml18MCk+PjF9aWYoKGR8MCk9PTIzKXtrW3M+PjJdPS0xO2Q9NTE7YnJlYWt9ZWxzZSBpZigoZHwwKT09MjYpe2tbcz4+Ml09MTtkPTUxO2JyZWFrfWVsc2UgaWYoKGR8MCk9PTI3KXtkPTA7YT0oa1toPj4yXXwwKSs2NHwwO2lbYT4+MF09bFthPj4wXXwyO2E9eDtiPWtbYSs0Pj4yXXwwO2Y9KGtbaD4+Ml18MCkrMTZ8MDtrW2Y+PjJdPWtbYT4+Ml07a1tmKzQ+PjJdPWI7alsoa1toPj4yXXwwKSs4MCsoaVsoa1toPj4yXXwwKSs2OD4+MF08PDEpPj4xXT1rW3U+PjJdO2lmKGlbKGtbQj4+Ml18MCkrND4+MF18MCl7ZD0yOTticmVhayBhfWtbdj4+Ml09a1t1Pj4yXTticmVha319ZWxzZSB3aGlsZSgxKXtrW3k+PjJdPShrWyhrW0I+PjJdfDApKzY4Pj4yXXwwKSsobVsoa1tCPj4yXXwwKSsyMD4+MV0mKGxbKGtbKGtbQj4+Ml18MCkrNjQ+PjJdfDApKyhrW3U+PjJdPDwxKT4+MF08PDh8bFsoa1soa1tCPj4yXXwwKSs2ND4+Ml18MCkrKGtbdT4+Ml08PDEpKzE+PjBdKSk7a1t3Pj4yXT1sW2tbeT4+Ml0+PjBdO2RvIGlmKChrW3c+PjJdfDApPD0obFsoa1tCPj4yXXwwKSs3Pj4wXXwwKSl7Zj1ZYltrW0U+PjJdJjI1NV0oa1t3Pj4yXXwwLChrW3k+PjJdfDApKzF8MCxrW24+PjJdfDApfDA7a1tzPj4yXT1mfWVsc2V7aWYoKGxbKGtbeT4+Ml18MCkrMT4+MF0mMTI4fDApPT0wPyhmPSgoa1t3Pj4yXSYxMjcpPDw3KSsobFsoa1t5Pj4yXXwwKSsxPj4wXXwwKXwwLGtbdz4+Ml09ZiwoZnwwKTw9KG1bKGtbQj4+Ml18MCkrMTA+PjFdfDApKTowKXtmPVliW2tbRT4+Ml0mMjU1XShrW3c+PjJdfDAsKGtbeT4+Ml18MCkrMnwwLGtbbj4+Ml18MCl8MDtrW3M+PjJdPWY7YnJlYWt9a1t6Pj4yXT0oa1t5Pj4yXXwwKSsoMC0obFsoa1tCPj4yXXwwKSs2Pj4wXXwwKSk7Y2Nba1soa1tCPj4yXXwwKSs4MD4+Ml0mMjU1XShrW0I+PjJdfDAsa1t6Pj4yXXwwLChrW2g+PjJdfDApKzE2fDApO2tbdz4+Ml09a1soa1toPj4yXXwwKSsxNj4+Ml07aWYoKGtbdz4+Ml18MCk8Mil7ZD0zNzticmVhayBhfWY9KGtbdz4+Ml18MCkrMTh8MDtmPWpnKGYsKChmfDApPDApPDwzMT4+MzEpfDA7a1tBPj4yXT1mO2lmKCEoa1tBPj4yXXwwKSl7ZD0zOTticmVhayBhfWpbKGtbaD4+Ml18MCkrODArKGlbKGtbaD4+Ml18MCkrNjg+PjBdPDwxKT4+MV09a1t1Pj4yXTtmPSRGKGtbaD4+Ml18MCwwLGtbdz4+Ml18MCxrW0E+PjJdfDAsMil8MDtrW0M+PjJdPWY7aWYoa1tDPj4yXXwwKXtkPTQxO2JyZWFrIGF9Zj1ZYltrW0U+PjJdJjI1NV0oa1t3Pj4yXXwwLGtbQT4+Ml18MCxrW24+PjJdfDApfDA7a1tzPj4yXT1mO1VkKGtbQT4+Ml18MCl9d2hpbGUoMCk7aWYoKGtbcz4+Ml18MCk8MClrW3Y+PjJdPShrW3U+PjJdfDApKzE7ZWxzZXtpZigoa1tzPj4yXXwwKTw9MCl7ZD00NzticmVhayBhfWtbRD4+Ml09KGtbdT4+Ml18MCktMX1pZigoa1t2Pj4yXXwwKT4oa1tEPj4yXXwwKSl7ZD01MTticmVhayBifWtbdT4+Ml09KGtbdj4+Ml18MCkrKGtbRD4+Ml18MCk+PjF9d2hpbGUoMCk7aWYoKGR8MCk9PTUxPyhkPTAsKGlbKGtbQj4+Ml18MCkrND4+MF18MCkhPTApOjApe2Q9NTI7YnJlYWt9Yz1rW0I+PjJdfDA7aWYoKGtbdj4+Ml18MCk+PShtWyhrW0I+PjJdfDApKzE4Pj4xXXwwKSl7Zj1xcigoa1soa1tCPj4yXXwwKSs1Nj4+Ml18MCkrKChsW2MrNT4+MF18MCkrOCl8MCl8MDtrW3Q+PjJdPWZ9ZWxzZXtmPXFyKChrW2MrNTY+PjJdfDApKyhtWyhrW0I+PjJdfDApKzIwPj4xXSYobFsoa1soa1tCPj4yXXwwKSs2ND4+Ml18MCkrKGtbdj4+Ml08PDEpPj4wXTw8OHxsWyhrWyhrW0I+PjJdfDApKzY0Pj4yXXwwKSsoa1t2Pj4yXTw8MSkrMT4+MF0pKXwwKXwwO2tbdD4+Ml09Zn1qWyhrW2g+PjJdfDApKzgwKyhpWyhrW2g+PjJdfDApKzY4Pj4wXTw8MSk+PjFdPWtbdj4+Ml07Zj1QRihrW2g+PjJdfDAsa1t0Pj4yXXwwKXwwO2tbQz4+Ml09Zn13aGlsZSgoa1tDPj4yXXwwKT09MCk7aWYoKGR8MCk9PTIwKXtFPV9qKDYzMzg3KXwwO2tbZz4+Ml09RTtFPWtbZz4+Ml18MDtyPUY7cmV0dXJuIEV8MH1lbHNlIGlmKChkfDApPT0yOSl7a1trW3E+PjJdPj4yXT0wO2tbQz4+Ml09MH1lbHNlIGlmKChkfDApPT0zNyl7RT1faig2MzQ2MCl8MDtrW0M+PjJdPUV9ZWxzZSBpZigoZHwwKT09Mzkpa1tDPj4yXT03O2Vsc2UgaWYoKGR8MCk9PTQxKVVkKGtbQT4+Ml18MCk7ZWxzZSBpZigoZHwwKT09NDcpe2tba1txPj4yXT4+Ml09MDtrW0M+PjJdPTA7alsoa1toPj4yXXwwKSs4MCsoaVsoa1toPj4yXXwwKSs2OD4+MF08PDEpPj4xXT1rW3U+PjJdO2lmKGlbKGtbbj4+Ml18MCkrMTE+PjBdfDApa1tDPj4yXT0xMX1lbHNlIGlmKChkfDApPT01Mil7alsoa1toPj4yXXwwKSs4MCsoaVsoa1toPj4yXXwwKSs2OD4+MF08PDEpPj4xXT1rW3U+PjJdO2tba1txPj4yXT4+Ml09a1tzPj4yXTtrW0M+PjJdPTB9alsoa1toPj4yXXwwKSsxNisxOD4+MV09MDtFPShrW2g+PjJdfDApKzY0fDA7aVtFPj4wXT1sW0U+PjBdJi03O2tbZz4+Ml09a1tDPj4yXTtFPWtbZz4+Ml18MDtyPUY7cmV0dXJuIEV8MH1mdW5jdGlvbiBaRihhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTAsZT0wO2U9cjtyPXIrMTZ8MDtiPWUrOHwwO2M9ZSs0fDA7ZD1lO2tbYz4+Ml09YTtpZigoKG1bKGtba1tjPj4yXT4+Ml18MCkrNj4+MV18MCkrKG1bKGtba1tjPj4yXT4+Ml18MCkrOD4+MV18MCl8MCk8PTEzKXtrW2Q+PjJdPW1bKGtbKGtbYz4+Ml18MCkrND4+Ml18MCkrOD4+MV07YT0oa1tjPj4yXXwwKSsxMnwwO2lmKGlba1soa1trW2M+PjJdPj4yXXwwKSsxNj4+Ml0+PjBdfDApe2lbYT4+MF09MTtpWyhrW2M+PjJdfDApKzEzPj4wXT0tMX1lbHNle2lbYT4+MF09LTE7aVsoa1tjPj4yXXwwKSsxMz4+MF09MX1pZihrW2Q+PjJdJjQpe2tbYj4+Ml09MTYwO2Q9a1tiPj4yXXwwO3I9ZTtyZXR1cm4gZHwwfWlmKChrW2Q+PjJdJjI1fDApPT0wPyhrWyhrW2tbYz4+Ml0+PjJdfDApKzIwPj4yXXwwKT09MDowKXtrW2I+PjJdPTE2MTtkPWtbYj4+Ml18MDtyPWU7cmV0dXJuIGR8MH19a1tiPj4yXT0xNjI7ZD1rW2I+PjJdfDA7cj1lO3JldHVybiBkfDB9ZnVuY3Rpb24gX0YoYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wLGU9MCxmPTAsZz0wLGg9MDtnPXI7cj1yKzMyfDA7Yj1nKzE2fDA7Yz1nKzEyfDA7ZD1nKzh8MDtlPWcrNHwwO2Y9ZztrW2M+PjJdPWE7a1tlPj4yXT0wO2RvIGlmKChsWyhrW2M+PjJdfDApKzY2Pj4wXXwwKT49Myl7YT1rW2M+PjJdfDA7aWYoKGxbKGtbYz4+Ml18MCkrNjY+PjBdfDApIT00KXtaQihhKTticmVha31rW2I+PjJdPWtbYSs2MD4+Ml07Zj1rW2I+PjJdfDA7cj1nO3JldHVybiBmfDB9d2hpbGUoMCk7YTpkbyBpZigoaVsoa1tjPj4yXXwwKSs2OD4+MF18MCk+PTApd2hpbGUoMSl7aWYoIShpWyhrW2M+PjJdfDApKzY4Pj4wXXwwKSlicmVhayBhO2g9KGtbYz4+Ml18MCkrNjh8MDthPWlbaD4+MF18MDtpW2g+PjBdPWErLTE8PDI0Pj4yNDthQyhrWyhrW2M+PjJdfDApKzEyMCsoYTw8MjQ+PjI0PDwyKT4+Ml18MCl9ZWxzZXthPWtbYz4+Ml18MDtpZighKGtbKGtbYz4+Ml18MCkrNTI+PjJdfDApKXtpW2ErNjY+PjBdPTA7a1tiPj4yXT0wO2g9a1tiPj4yXXwwO3I9ZztyZXR1cm4gaHwwfWE9U0Yoa1soa1thPj4yXXwwKSs0Pj4yXXwwLGtbKGtbYz4+Ml18MCkrNTI+PjJdfDAsKGtbYz4+Ml18MCkrMTIwfDAsMCxsWyhrW2M+PjJdfDApKzY1Pj4wXXwwKXwwO2tbZT4+Ml09YTthPWtbYz4+Ml18MDtpZighKGtbZT4+Ml18MCkpe2lbYSs2OD4+MF09MDtpWyhrW2M+PjJdfDApKzY5Pj4wXT1pWyhrWyhrW2M+PjJdfDApKzEyMD4+Ml18MCkrMj4+MF18MDticmVha31pW2ErNjY+PjBdPTA7a1tiPj4yXT1rW2U+PjJdO2g9a1tiPj4yXXwwO3I9ZztyZXR1cm4gaHwwfXdoaWxlKDApO2tbZD4+Ml09a1soa1tjPj4yXXwwKSsxMjA+PjJdO2lmKChsW2tbZD4+Ml0+PjBdfDApIT0wPygoa1soa1tjPj4yXXwwKSs3Mj4+Ml18MCk9PTB8MCk9PShsWyhrW2Q+PjJdfDApKzI+PjBdfDApOjApe2pbKGtbYz4+Ml18MCkrODA+PjFdPTA7alsoa1tjPj4yXXwwKSsxNisxOD4+MV09MDtoPShrW2M+PjJdfDApKzY0fDA7aVtoPj4wXT1sW2g+PjBdJi0xNTtkbyBpZigobVsoa1tkPj4yXXwwKSsxOD4+MV18MCk+MClpWyhrW2M+PjJdfDApKzY2Pj4wXT0xO2Vsc2V7aWYoaVsoa1tkPj4yXXwwKSs0Pj4wXXwwKXtpWyhrW2M+PjJdfDApKzY2Pj4wXT0wO2JyZWFrfWlmKChrWyhrW2Q+PjJdfDApKzg0Pj4yXXwwKT09MSl7aD1xcigoa1soa1tkPj4yXXwwKSs1Nj4+Ml18MCkrKChsWyhrW2Q+PjJdfDApKzU+PjBdfDApKzgpfDApfDA7a1tmPj4yXT1oO2lbKGtbYz4+Ml18MCkrNjY+PjBdPTE7aD1QRihrW2M+PjJdfDAsa1tmPj4yXXwwKXwwO2tbZT4+Ml09aDticmVha31oPV9qKDYzMTQ3KXwwO2tbYj4+Ml09aDtoPWtbYj4+Ml18MDtyPWc7cmV0dXJuIGh8MH13aGlsZSgwKTtrW2I+PjJdPWtbZT4+Ml07aD1rW2I+PjJdfDA7cj1nO3JldHVybiBofDB9aD1faig2MzEzNil8MDtrW2I+PjJdPWg7aD1rW2I+PjJdfDA7cj1nO3JldHVybiBofDB9ZnVuY3Rpb24gJEYoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLG49MCxvPTAscD0wLHE9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wO0M9cjtyPXIrODB8MDtmPUMrNjh8MDtnPUMrNjR8MDtoPUMrNjB8MDtqPUMrNTZ8MDtuPUMrNTJ8MDtvPUMrNDh8MDt0PUMrNDR8MDtCPUMrNDB8MDt1PUMrMzZ8MDtBPUMrMzJ8MDt5PUMrMjh8MDtwPUMrMjR8MDt4PUMrMjB8MDt3PUMrMTZ8MDt2PUMrMTJ8MDtzPUMrOHwwO3E9Qys0fDA7ej1DO2tbZz4+Ml09YTtrW2g+PjJdPWI7a1tqPj4yXT1jO2tbbj4+Ml09ZDtrW28+PjJdPWU7a1tCPj4yXT0wO2tbdT4+Ml09MDtrW0E+PjJdPWtbKGtbZz4+Ml18MCkrMTIwKyhpWyhrW2c+PjJdfDApKzY4Pj4wXTw8Mik+PjJdO2tbeT4+Ml09a1soa1tnPj4yXXwwKSs0Pj4yXTthRyhrW2c+PjJdfDApO2tbdD4+Ml09a1soa1tnPj4yXXwwKSsxNis4Pj4yXTtpZigoKGtbdD4+Ml18MCktKGtbKGtbQT4+Ml18MCkrNTY+PjJdfDApfDApPj4+MD4oKGtbKGtbeT4+Ml18MCkrMzY+PjJdfDApLShtWyhrW2c+PjJdfDApKzE2KzE2Pj4xXXwwKXwwKT4+PjApe0I9X2ooNjI3MjMpfDA7a1tmPj4yXT1CO0I9a1tmPj4yXXwwO3I9QztyZXR1cm4gQnwwfWlmKChrW2g+PjJdfDApPj4+MDwobVsoa1tnPj4yXXwwKSsxNisxNj4+MV18MCk+Pj4wKXtrW3A+PjJdPWtbaj4+Ml07aWYoKChrW3A+PjJdfDApKyhrW2g+PjJdfDApfDApPj4+MD4obVsoa1tnPj4yXXwwKSsxNisxNj4+MV18MCk+Pj4wKWtbcD4+Ml09KG1bKGtbZz4+Ml18MCkrMTYrMTY+PjFdfDApLShrW2g+PjJdfDApO0E9YkcoKGtbdD4+Ml18MCkrKGtbaD4+Ml18MCl8MCxrW24+PjJdfDAsa1twPj4yXXwwLGtbbz4+Ml0mMSxrWyhrW0E+PjJdfDApKzcyPj4yXXwwKXwwO2tbQj4+Ml09QTtrW2g+PjJdPTA7a1tuPj4yXT0oa1tuPj4yXXwwKSsoa1twPj4yXXwwKTtrW2o+PjJdPShrW2o+PjJdfDApLShrW3A+PjJdfDApfWVsc2Uga1toPj4yXT0oa1toPj4yXXwwKS0obVsoa1tnPj4yXXwwKSsxNisxNj4+MV18MCk7YTpkbyBpZigoa1tCPj4yXXwwKT09MCYoa1tqPj4yXXwwKT4+PjA+MCl7a1t4Pj4yXT0oa1soa1t5Pj4yXXwwKSszNj4+Ml18MCktNDtBPXFyKChrW3Q+PjJdfDApKyhtWyhrW2c+PjJdfDApKzE2KzE2Pj4xXXwwKXwwKXwwO2tbdz4+Ml09QTtpZigoa1tvPj4yXXwwKSE9Mj8obFsoa1tnPj4yXXwwKSs2ND4+MF0mNHwwKT09MDowKXtrW3Y+PjJdPSgoKGtbKGtbZz4+Ml18MCkrMTYrMTI+PjJdfDApLShtWyhrW2c+PjJdfDApKzE2KzE2Pj4xXXwwKSsoa1t4Pj4yXXwwKS0xfDApPj4+MCkvKChrW3g+PjJdfDApPj4+MCl8MDtkbyBpZigoa1t2Pj4yXXwwKT4oa1soa1tnPj4yXXwwKSs1Nj4+Ml18MCkpe0E9bWcoa1soa1tnPj4yXXwwKSsxMj4+Ml18MCxrW3Y+PjJdPDwxPDwyLDApfDA7a1tzPj4yXT1BO2lmKCEoa1tzPj4yXXwwKSl7a1tCPj4yXT03O2JyZWFrfWVsc2V7a1soa1tnPj4yXXwwKSs1Nj4+Ml09a1t2Pj4yXTw8MTtrWyhrW2c+PjJdfDApKzEyPj4yXT1rW3M+PjJdO2JyZWFrfX13aGlsZSgwKTtpZighKGtbQj4+Ml18MCkpe2RTKGtbKGtbZz4+Ml18MCkrMTI+PjJdfDAsMCxrW3Y+PjJdPDwyfDApfDA7QT0oa1tnPj4yXXwwKSs2NHwwO2lbQT4+MF09bFtBPj4wXXw0fX1pZigobFsoa1tnPj4yXXwwKSs2ND4+MF0mNHwwKSE9MD8oa1soa1soa1tnPj4yXXwwKSsxMj4+Ml18MCkrKCgoKGtbaD4+Ml18MCk+Pj4wKS8oKGtbeD4+Ml18MCk+Pj4wKXwwKTw8Mik+PjJdfDApIT0wOjApe2tbdT4+Ml09KChrW2g+PjJdfDApPj4+MCkvKChrW3g+PjJdfDApPj4+MCl8MDtrW3c+PjJdPWtbKGtbKGtbZz4+Ml18MCkrMTI+PjJdfDApKyhrW3U+PjJdPDwyKT4+Ml07a1toPj4yXT0oKGtbaD4+Ml18MCk+Pj4wKSUoKGtbeD4+Ml18MCk+Pj4wKXwwfXdoaWxlKDEpe2lmKCEoKGtbQj4+Ml18MCk9PTAmKGtbaj4+Ml18MCk+Pj4wPjAmKGtbdz4+Ml18MCkhPTApKWJyZWFrIGE7aWYobFsoa1tnPj4yXXwwKSs2ND4+MF0mNClrWyhrWyhrW2c+PjJdfDApKzEyPj4yXXwwKSsoa1t1Pj4yXTw8Mik+PjJdPWtbdz4+Ml07aWYoKGtbaD4+Ml18MCk+Pj4wPj0oa1t4Pj4yXXwwKT4+PjApe2lmKGtbKGtbKGtbZz4+Ml18MCkrMTI+PjJdfDApKygoa1t1Pj4yXXwwKSsxPDwyKT4+Ml18MClrW3c+PjJdPWtbKGtbKGtbZz4+Ml18MCkrMTI+PjJdfDApKygoa1t1Pj4yXXwwKSsxPDwyKT4+Ml07ZWxzZXtBPWNHKGtbeT4+Ml18MCxrW3c+PjJdfDAsMCx3KXwwO2tbQj4+Ml09QX1rW2g+PjJdPShrW2g+PjJdfDApLShrW3g+PjJdfDApfWVsc2V7a1txPj4yXT1rW2o+PjJdO2lmKCgoa1txPj4yXXwwKSsoa1toPj4yXXwwKXwwKT4+PjA+KGtbeD4+Ml18MCk+Pj4wKWtbcT4+Ml09KGtbeD4+Ml18MCktKGtbaD4+Ml18MCk7QT1GZyhrW2tbeT4+Ml0+PjJdfDAsa1t3Pj4yXXwwLHosKGtbbz4+Ml0mMXwwKT09MD8yOjApfDA7a1tCPj4yXT1BO2lmKCEoa1tCPj4yXXwwKSl7QT1HZyhrW3o+PjJdfDApfDA7a1t0Pj4yXT1BO0E9cXIoa1t0Pj4yXXwwKXwwO2tbdz4+Ml09QTtBPWJHKChrW3Q+PjJdfDApKygoa1toPj4yXXwwKSs0KXwwLGtbbj4+Ml18MCxrW3E+PjJdfDAsa1tvPj4yXSYxLGtbej4+Ml18MCl8MDtrW0I+PjJdPUE7SWcoa1t6Pj4yXXwwKTtrW2g+PjJdPTB9a1tqPj4yXT0oa1tqPj4yXXwwKS0oa1txPj4yXXwwKTtrW24+PjJdPShrW24+PjJdfDApKyhrW3E+PjJdfDApfWtbdT4+Ml09KGtbdT4+Ml18MCkrMX19d2hpbGUoMCk7aWYoKGtbQj4+Ml18MCk9PTAmKGtbaj4+Ml18MCk+Pj4wPjApe0I9X2ooNjI4ODApfDA7a1tmPj4yXT1CO0I9a1tmPj4yXXwwO3I9QztyZXR1cm4gQnwwfWVsc2V7a1tmPj4yXT1rW0I+PjJdO0I9a1tmPj4yXXwwO3I9QztyZXR1cm4gQnwwfXJldHVybiAwfWZ1bmN0aW9uIGFHKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MDtkPXI7cj1yKzE2fDA7Yj1kKzR8MDtjPWQ7a1tiPj4yXT1hO2lmKG1bKGtbYj4+Ml18MCkrMTYrMTg+PjFdfDApe3I9ZDtyZXR1cm59a1tjPj4yXT1pWyhrW2I+PjJdfDApKzY4Pj4wXTthPShrW2I+PjJdfDApKzY0fDA7aVthPj4wXT1sW2E+PjBdfDI7Z0coa1soa1tiPj4yXXwwKSsxMjArKGtbYz4+Ml08PDIpPj4yXXwwLG1bKGtbYj4+Ml18MCkrODArKGtbYz4+Ml08PDEpPj4xXXwwLChrW2I+PjJdfDApKzE2fDApO3I9ZDtyZXR1cm59ZnVuY3Rpb24gYkcoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaT0wLGo9MCxsPTAsbT0wLG49MDttPXI7cj1yKzMyfDA7Zj1tKzI0fDA7Zz1tKzIwfDA7aD1tKzE2fDA7aT1tKzEyfDA7bj1tKzh8MDtqPW0rNHwwO2w9bTtrW2c+PjJdPWE7a1toPj4yXT1iO2tbaT4+Ml09YztrW24+PjJdPWQ7a1tqPj4yXT1lO2RvIGlmKGtbbj4+Ml18MCl7bj1RZyhrW2o+PjJdfDApfDA7a1tsPj4yXT1uO2lmKCEoa1tsPj4yXXwwKSl7YlMoa1tnPj4yXXwwLGtbaD4+Ml18MCxrW2k+PjJdfDApfDA7YnJlYWt9a1tmPj4yXT1rW2w+PjJdO249a1tmPj4yXXwwO3I9bTtyZXR1cm4gbnwwfWVsc2UgYlMoa1toPj4yXXwwLGtbZz4+Ml18MCxrW2k+PjJdfDApfDA7d2hpbGUoMCk7a1tmPj4yXT0wO249a1tmPj4yXXwwO3I9bTtyZXR1cm4gbnwwfWZ1bmN0aW9uIGNHKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLG09MCxuPTAsbz0wLHA9MCxxPTAscz0wO3M9cjtyPXIrNDh8MDtlPXMrMzJ8MDtmPXMrMjh8MDtwPXMrMjR8MDtnPXMrMjB8MDttPXMrMTZ8MDtuPXMrMTJ8MDtxPXMrOHwwO289cys0fDA7aj1zO2g9cyszNnwwO2tbZT4+Ml09YTtrW2Y+PjJdPWI7a1twPj4yXT1jO2tbZz4+Ml09ZDtrW20+PjJdPTA7a1tuPj4yXT0wO2tbcT4+Ml09MDtpZihpWyhrW2U+PjJdfDApKzE3Pj4wXXwwKXtrW2o+PjJdPShrW2Y+PjJdfDApKzE7d2hpbGUoMSl7Yz1kRyhrW2U+PjJdfDAsa1tqPj4yXXwwKXwwO2lmKChjfDApPT0oa1tqPj4yXXwwKSlhPTE7ZWxzZSBhPShrW2o+PjJdfDApPT0oKCgoa1szODRdfDApPj4+MCkvKChrWyhrW2U+PjJdfDApKzMyPj4yXXwwKT4+PjApfDApKzF8MCk7Yj1rW2o+PjJdfDA7aWYoIWEpYnJlYWs7a1tqPj4yXT1iKzF9aWYoKChiPj4+MDw9KFRGKGtbZT4+Ml18MCl8MCk+Pj4wPyhjPWVHKGtbZT4+Ml18MCxrW2o+PjJdfDAsaCxvKXwwLGtbcT4+Ml09Yywoa1txPj4yXXwwKT09MCk6MCk/KGxbaD4+MF18MCk9PTQ6MCk/KGtbbz4+Ml18MCk9PShrW2Y+PjJdfDApOjApe2tbbT4+Ml09a1tqPj4yXTtrW3E+PjJdPTEwMX19aWYoKGtbcT4+Ml18MCk9PTA/KG89Zkcoa1tlPj4yXXwwLGtbZj4+Ml18MCxuLChrW3A+PjJdfDApPT0wPzI6MCl8MCxrW3E+PjJdPW8sKGtbcT4+Ml18MCk9PTApOjApe289cXIoa1soa1tuPj4yXXwwKSs1Nj4+Ml18MCl8MDtrW20+PjJdPW99a1trW2c+PjJdPj4yXT1rW20+PjJdO2I9a1tuPj4yXXwwO2lmKGtbcD4+Ml18MCl7a1trW3A+PjJdPj4yXT1iO3A9a1txPj4yXXwwO3A9KHB8MCk9PTEwMTtxPWtbcT4+Ml18MDtxPXA/MDpxO3I9cztyZXR1cm4gcXwwfWVsc2V7X0IoYik7cD1rW3E+PjJdfDA7cD0ocHwwKT09MTAxO3E9a1txPj4yXXwwO3E9cD8wOnE7cj1zO3JldHVybiBxfDB9cmV0dXJuIDB9ZnVuY3Rpb24gZEcoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTAsaT0wO2k9cjtyPXIrMzJ8MDtjPWkrMjB8MDtkPWkrMTZ8MDtlPWkrMTJ8MDtnPWkrOHwwO2Y9aSs0fDA7aD1pO2tbZD4+Ml09YTtrW2U+PjJdPWI7aWYoKGtbZT4+Ml18MCk+Pj4wPDIpe2tbYz4+Ml09MDtoPWtbYz4+Ml18MDtyPWk7cmV0dXJuIGh8MH1rW2c+PjJdPSgoKGtbKGtbZD4+Ml18MCkrMzY+PjJdfDApPj4+MCkvNXwwKSsxO2tbZj4+Ml09KCgoa1tlPj4yXXwwKS0yfDApPj4+MCkvKChrW2c+PjJdfDApPj4+MCl8MDtiPShoYShrW2Y+PjJdfDAsa1tnPj4yXXwwKXwwKSsyfDA7a1toPj4yXT1iO2lmKChrW2g+PjJdfDApPT0oKCgoa1szODRdfDApPj4+MCkvKChrWyhrW2Q+PjJdfDApKzMyPj4yXXwwKT4+PjApfDApKzF8MCkpa1toPj4yXT0oa1toPj4yXXwwKSsxO2tbYz4+Ml09a1toPj4yXTtoPWtbYz4+Ml18MDtyPWk7cmV0dXJuIGh8MH1mdW5jdGlvbiBlRyhhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MCxtPTAsbj0wLG89MCxwPTAscT0wLHM9MDtxPXI7cj1yKzQ4fDA7ZT1xKzM2fDA7cz1xKzMyfDA7Zj1xKzI4fDA7Zz1xKzI0fDA7aD1xKzIwfDA7bj1xKzE2fDA7aj1xKzEyfDA7bz1xKzh8MDttPXErNHwwO3A9cTtrW3M+PjJdPWE7a1tmPj4yXT1iO2tbZz4+Ml09YztrW2g+PjJdPWQ7ZD1kRyhrW3M+PjJdfDAsa1tmPj4yXXwwKXwwO2tbaj4+Ml09ZDtkPUZnKGtba1tzPj4yXT4+Ml18MCxrW2o+PjJdfDAsbiwwKXwwO2tbcD4+Ml09ZDtpZihrW3A+PjJdfDApe2tbZT4+Ml09a1twPj4yXTtzPWtbZT4+Ml18MDtyPXE7cmV0dXJuIHN8MH1zPUdnKGtbbj4+Ml18MCl8MDtrW28+PjJdPXM7a1ttPj4yXT0oKGtbZj4+Ml18MCktKGtbaj4+Ml18MCktMXwwKSo1O2lmKChrW20+PjJdfDApPDApe0lnKGtbbj4+Ml18MCk7cz1faig1OTI0MCl8MDtrW2U+PjJdPXM7cz1rW2U+PjJdfDA7cj1xO3JldHVybiBzfDB9aVtrW2c+PjJdPj4wXT1pWyhrW28+PjJdfDApKyhrW20+PjJdfDApPj4wXXwwO2lmKGtbaD4+Ml18MCl7cz1xcigoa1tvPj4yXXwwKSsoKGtbbT4+Ml18MCkrMSl8MCl8MDtrW2tbaD4+Ml0+PjJdPXN9SWcoa1tuPj4yXXwwKTtpZigobFtrW2c+PjJdPj4wXXwwfDApPj0xPyhsW2tbZz4+Ml0+PjBdfDB8MCk8PTU6MCl7a1tlPj4yXT0wO3M9a1tlPj4yXXwwO3I9cTtyZXR1cm4gc3wwfXM9X2ooNTkyNDgpfDA7a1tlPj4yXT1zO3M9a1tlPj4yXXwwO3I9cTtyZXR1cm4gc3wwfWZ1bmN0aW9uIGZHKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaT0wLGo9MCxsPTAsbT0wO2w9cjtyPXIrMzJ8MDtlPWwrMjR8MDtmPWwrMjB8MDtnPWwrMTZ8MDtoPWwrMTJ8MDttPWwrOHwwO2o9bCs0fDA7aT1sO2tbZj4+Ml09YTtrW2c+PjJdPWI7a1toPj4yXT1jO2tbbT4+Ml09ZDtjPUZnKGtba1tmPj4yXT4+Ml18MCxrW2c+PjJdfDAsaSxrW20+PjJdfDApfDA7a1tqPj4yXT1jO2lmKGtbaj4+Ml18MCl7a1tlPj4yXT1rW2o+PjJdO209a1tlPj4yXXwwO3I9bDtyZXR1cm4gbXwwfWVsc2V7bT1VRihrW2k+PjJdfDAsa1tnPj4yXXwwLGtbZj4+Ml18MCl8MDtrW2tbaD4+Ml0+PjJdPW07a1tlPj4yXT0wO209a1tlPj4yXXwwO3I9bDtyZXR1cm4gbXwwfXJldHVybiAwfWZ1bmN0aW9uIGdHKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wO2Q9cjtyPXIrMTZ8MDtnPWQrOHwwO2Y9ZCs0fDA7ZT1kO2tbZz4+Ml09YTtrW2Y+PjJdPWI7a1tlPj4yXT1jO2NjW2tbKGtbZz4+Ml18MCkrODA+PjJdJjI1NV0oa1tnPj4yXXwwLChrWyhrW2c+PjJdfDApKzU2Pj4yXXwwKSsoKG1bKGtbZz4+Ml18MCkrMjA+PjFdfDApJigobFsoa1soa1tnPj4yXXwwKSs2ND4+Ml18MCkrKGtbZj4+Ml08PDEpPj4wXXwwKTw8OHwobFsoa1soa1tnPj4yXXwwKSs2ND4+Ml18MCkrKGtbZj4+Ml08PDEpKzE+PjBdfDApKSl8MCxrW2U+PjJdfDApO3I9ZDtyZXR1cm59ZnVuY3Rpb24gaEcoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxuPTAsbz0wLHA9MCxxPTAscz0wLHQ9MDtzPXI7cj1yKzY0fDA7aj1zKzUyfDA7bj1zKzQ4fDA7bz1zKzQ0fDA7cD1zKzQwfDA7ZD1zKzM2fDA7dD1zKzMyfDA7cT1zKzI4fDA7aD1zKzI0fDA7Zz1zKzE2fDA7Zj1zKzh8MDtlPXM7a1tuPj4yXT1hO2tbbz4+Ml09YjtrW3A+PjJdPWM7a1tkPj4yXT0oa1tvPj4yXXwwKSsobFtrW28+PjJdPj4wXSY2Myk7a1t0Pj4yXT1sWyhrW28+PjJdfDApKzE+PjBdO2RvIHN3aXRjaChrW3Q+PjJdfDApe2Nhc2UgMTp7aD1pW2tbZD4+Ml0+PjBdfDA7dD1lO2tbdD4+Ml09aDtrW3QrND4+Ml09KChofDApPDApPDwzMT4+MzE7YnJlYWt9Y2FzZSAyOntoPWlba1tkPj4yXT4+MF08PDh8bFsoa1tkPj4yXXwwKSsxPj4wXTt0PWU7a1t0Pj4yXT1oO2tbdCs0Pj4yXT0oKGh8MCk8MCk8PDMxPj4zMTticmVha31jYXNlIDM6e2g9aVtrW2Q+PjJdPj4wXTw8MTZ8bFsoa1tkPj4yXXwwKSsxPj4wXTw8OHxsWyhrW2Q+PjJdfDApKzI+PjBdO3Q9ZTtrW3Q+PjJdPWg7a1t0KzQ+PjJdPSgoaHwwKTwwKTw8MzE+PjMxO2JyZWFrfWNhc2UgNDp7a1toPj4yXT1sW2tbZD4+Ml0+PjBdPDwyNHxsWyhrW2Q+PjJdfDApKzE+PjBdPDwxNnxsWyhrW2Q+PjJdfDApKzI+PjBdPDw4fGxbKGtbZD4+Ml18MCkrMz4+MF07aD1rW2g+PjJdfDA7dD1lO2tbdD4+Ml09aDtrW3QrND4+Ml09KChofDApPDApPDwzMT4+MzE7YnJlYWt9Y2FzZSA1OntoPWlba1tkPj4yXT4+MF08PDh8bFsoa1tkPj4yXXwwKSsxPj4wXTtoPSRSKGxbKGtbZD4+Ml18MCkrMj4+MF08PDI0fGxbKGtbZD4+Ml18MCkrMisxPj4wXTw8MTZ8bFsoa1tkPj4yXXwwKSsyKzI+PjBdPDw4fGxbKGtbZD4+Ml18MCkrMiszPj4wXXwwLDAsa1MoMCwxLGh8MCwoKGh8MCk8MCk8PDMxPj4zMXwwKXwwLEx8MCl8MDt0PWU7a1t0Pj4yXT1oO2tbdCs0Pj4yXT1MO2JyZWFrfWNhc2UgNjp7dD1nO2tbdD4+Ml09bFtrW2Q+PjJdPj4wXTw8MjR8bFsoa1tkPj4yXXwwKSsxPj4wXTw8MTZ8bFsoa1tkPj4yXXwwKSsyPj4wXTw8OHxsWyhrW2Q+PjJdfDApKzM+PjBdO2tbdCs0Pj4yXT0wO3Q9a1tnPj4yXXwwO2g9ZztrW2g+PjJdPWxbKGtbZD4+Ml18MCkrND4+MF08PDI0fGxbKGtbZD4+Ml18MCkrNCsxPj4wXTw8MTZ8bFsoa1tkPj4yXXwwKSs0KzI+PjBdPDw4fGxbKGtbZD4+Ml18MCkrNCszPj4wXTtrW2grND4+Ml09dDtoPWtbZys0Pj4yXXwwO3Q9ZTtrW3Q+PjJdPWtbZz4+Ml07a1t0KzQ+PjJdPWg7YnJlYWt9Y2FzZSA4Ont0PWU7a1t0Pj4yXT0wO2tbdCs0Pj4yXT0wO2JyZWFrfWNhc2UgOTp7dD1lO2tbdD4+Ml09MTtrW3QrND4+Ml09MDticmVha31jYXNlIDc6Y2FzZSAwOnt0PWpHKGtbbj4+Ml18MCxrW28+PjJdfDAsa1twPj4yXXwwKXwwO2tbaj4+Ml09dDt0PWtbaj4+Ml18MDtyPXM7cmV0dXJuIHR8MH1kZWZhdWx0Ont0PWpHKGtbbj4+Ml18MCxrW28+PjJdfDAsa1twPj4yXXwwKXwwO2tbaj4+Ml09dDt0PWtbaj4+Ml18MDtyPXM7cmV0dXJuIHR8MH19d2hpbGUoMCk7dD1rWyhrW3A+PjJdfDApKzQ+PjJdfDA7Yz1rW3QrND4+Ml18MDtoPWY7a1toPj4yXT1rW3Q+PjJdO2tbaCs0Pj4yXT1jO2g9ZjtjPWtbaCs0Pj4yXXwwO3Q9ZTtnPWtbdCs0Pj4yXXwwO2RvIGlmKCEoKGN8MCk+KGd8MCl8KChjfDApPT0oZ3wwKT8oa1toPj4yXXwwKT4+PjA+KGtbdD4+Ml18MCk+Pj4wOjApKSl7aD1mO2Y9a1toKzQ+PjJdfDA7dD1lO2c9a1t0KzQ+PjJdfDA7ZD1rW3A+PjJdfDA7aWYoKGZ8MCk8KGd8MCl8KChmfDApPT0oZ3wwKT8oa1toPj4yXXwwKT4+PjA8KGtbdD4+Ml18MCk+Pj4wOjApKXtrW3E+PjJdPWlbZCsxMz4+MF07YnJlYWt9aWYoKG1bZCs4Pj4xXXwwKT4xKXt0PWtHKGtbbj4+Ml18MCxrW28+PjJdfDAsa1twPj4yXXwwLDEpfDA7a1txPj4yXT10O2JyZWFrfWVsc2V7a1txPj4yXT1pWyhrW3A+PjJdfDApKzEwPj4wXTtpWyhrW3A+PjJdfDApKzE0Pj4wXT0xO2JyZWFrfX1lbHNlIGtbcT4+Ml09aVsoa1twPj4yXXwwKSsxMj4+MF07d2hpbGUoMCk7a1tqPj4yXT1rW3E+PjJdO3Q9a1tqPj4yXXwwO3I9cztyZXR1cm4gdHwwfWZ1bmN0aW9uIGlHKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsbj0wLG89MCxwPTAscT0wLHM9MDtzPXI7cj1yKzQ4fDA7cD1zKzM2fDA7ZT1zKzMyfDA7Zj1zKzI4fDA7Zz1zKzI0fDA7aD1zKzIwfDA7ZD1zKzE2fDA7cT1zKzEyfDA7aj1zKzh8MDtuPXMrNHwwO289cztrW2U+PjJdPWE7a1tmPj4yXT1iO2tbZz4+Ml09YztrW2g+PjJdPWtbZj4+Ml07YT0oa1toPj4yXXwwKSsxfDA7aWYoKGxbKGtbaD4+Ml18MCkrMT4+MF18MCk8MTI4KWtbZD4+Ml09bFthPj4wXTtlbHNlIGxHKGEsZCl8MDtkbyBpZigoa1tkPj4yXXwwKT49MTIpe2lmKCEoa1tkPj4yXSYxKSl7a1txPj4yXT1pWyhrW2c+PjJdfDApKzEzPj4wXTticmVha31rW28+PjJdPWxba1toPj4yXT4+MF07a1tuPj4yXT0oKGtbZD4+Ml18MCktMTJ8MCkvMnwwO2lmKCgoa1tvPj4yXXwwKSsoa1tuPj4yXXwwKXwwKT4oa1tlPj4yXXwwKSl7cT0oX2ooNzQ3NDIpfDApJjI1NTtpWyhrW2c+PjJdfDApKzExPj4wXT1xO2tbcD4+Ml09MDtxPWtbcD4+Ml18MDtyPXM7cmV0dXJuIHF8MH1pZigoa1soa1soa1tnPj4yXXwwKSs0Pj4yXXwwKSsxMj4+Ml18MCk8KGtbbj4+Ml18MCkpYT1rWyhrWyhrW2c+PjJdfDApKzQ+PjJdfDApKzEyPj4yXXwwO2Vsc2UgYT1rW24+PjJdfDA7a1tqPj4yXT1hO289b1IoKGtbaD4+Ml18MCkrKGtbbz4+Ml18MCl8MCxrWyhrWyhrW2c+PjJdfDApKzQ+PjJdfDApKzE2Pj4yXXwwLGtbaj4+Ml18MCl8MDtrW3E+PjJdPW87aWYoa1txPj4yXXwwKXthPWtbZz4+Ml18MDtpZigoa1txPj4yXXwwKT4wKXtrW3E+PjJdPWlbYSsxMz4+MF07YnJlYWt9ZWxzZXtrW3E+PjJdPWlbYSsxMj4+MF07YnJlYWt9fWtbcT4+Ml09KGtbbj4+Ml18MCktKGtbKGtbKGtbZz4+Ml18MCkrND4+Ml18MCkrMTI+PjJdfDApO2lmKCEoa1txPj4yXXwwKSlpZigobVsoa1tnPj4yXXwwKSs4Pj4xXXwwKT4xKXtvPWtHKGtbZT4+Ml18MCxrW2Y+PjJdfDAsa1tnPj4yXXwwLDEpfDA7a1txPj4yXT1vO2JyZWFrfWVsc2V7a1txPj4yXT1pWyhrW2c+PjJdfDApKzEwPj4wXTtpWyhrW2c+PjJdfDApKzE0Pj4wXT0xO2JyZWFrfWVsc2V7YT1rW2c+PjJdfDA7aWYoKGtbcT4+Ml18MCk+MCl7a1txPj4yXT1pW2ErMTM+PjBdO2JyZWFrfWVsc2V7a1txPj4yXT1pW2ErMTI+PjBdO2JyZWFrfX19ZWxzZSBrW3E+PjJdPWlbKGtbZz4+Ml18MCkrMTI+PjBdO3doaWxlKDApO2tbcD4+Ml09a1txPj4yXTtxPWtbcD4+Ml18MDtyPXM7cmV0dXJuIHF8MH1mdW5jdGlvbiBqRyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MDtkPXI7cj1yKzE2fDA7Zz1kKzh8MDtmPWQrNHwwO2U9ZDtrW2c+PjJdPWE7a1tmPj4yXT1iO2tbZT4+Ml09YztjPWtHKGtbZz4+Ml18MCxrW2Y+PjJdfDAsa1tlPj4yXXwwLDApfDA7cj1kO3JldHVybiBjfDB9ZnVuY3Rpb24ga0coYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxuPTAsbz0wLHE9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MCxFPTAsRj0wLEc9MDtFPXI7cj1yKzEyOHwwO0E9RSsxMjR8MDtmPUUrMTIwfDA7Rz1FKzExNnwwO0I9RSsxMTJ8MDtGPUUrMTA4fDA7aD1FKzEwNHwwO249RSsxMDB8MDt6PUUrOTZ8MDtvPUUrOTJ8MDtEPUUrODh8MDt3PUUrODR8MDtDPUUrODB8MDtnPUUrNzZ8MDtzPUUrMTZ8MDtlPUUrNzJ8MDt5PUUrNjh8MDtxPUUrOHwwO3g9RTt0PUUrNjR8MDt2PUUrNjB8MDt1PUUrNTZ8MDtrW2Y+PjJdPWE7a1tHPj4yXT1iO2tbQj4+Ml09YztrW0Y+PjJdPWQ7a1tEPj4yXT0wO2tbdz4+Ml09a1soa1tCPj4yXXwwKSs0Pj4yXTtrW0M+PjJdPWtba1tCPj4yXT4+Ml07a1tnPj4yXT1rW0c+PjJdO2E9a1tnPj4yXXwwO2RvIGlmKGtbRj4+Ml18MCl7ZD0oa1tnPj4yXXwwKSsxfDA7aWYoKGxbYSsxPj4wXXwwKTwxMjgpe2tbZT4+Ml09bFtkPj4wXTtkPTF9ZWxzZSBkPShsRyhkLGUpfDApJjI1NTtrW28+PjJdPTErKGQmMjU1KTtrW3o+PjJdPWxba1tnPj4yXT4+MF07Rz1rW3o+PjJdfDA7Rz1HKyhtRyhrW2U+PjJdfDApfDApfDA7a1toPj4yXT1HO2tbbj4+Ml09MTtrW3c+PjJdPShrW3c+PjJdfDApKzQwfWVsc2V7ZD1rW2c+PjJdfDA7aWYoKGxbYT4+MF18MCk8MTI4KXtrW3o+PjJdPWxbZD4+MF07ZD0xfWVsc2UgZD0obEcoZCx6KXwwKSYyNTU7a1tvPj4yXT1kJjI1NTtrW2g+PjJdPWtbej4+Ml07aWYoKGtbaD4+Ml18MCk+Pj4wPD0oa1tmPj4yXXwwKT4+PjApe2tbbj4+Ml09MDticmVha31HPShfaig3NDQ1Mil8MCkmMjU1O2lbKGtbQj4+Ml18MCkrMTE+PjBdPUc7a1tBPj4yXT0wO0c9a1tBPj4yXXwwO3I9RTtyZXR1cm4gR3wwfXdoaWxlKDApO2E6d2hpbGUoMSl7ZG8gaWYobVsoa1t3Pj4yXXwwKSs4Pj4xXSY0KXtrW3k+PjJdPWxbKGtbZz4+Ml18MCkrKGtbbz4+Ml18MCk+PjBdO2lmKChrW3k+PjJdfDApPj4+MD49MTApe2tbRD4+Ml09MTticmVha31pZighKGtbeT4+Ml18MCkpe2tbRD4+Ml09LTE7YnJlYWt9aWYoKGtbeT4+Ml18MCk9PTcpe25HKChrW2c+PjJdfDApKyhrW2g+PjJdfDApfDAsa1t5Pj4yXXwwLHMpfDA7Rz1rW3c+PjJdfDA7Rz0wLShvRyhrW0c+PjJdfDAsa1tHKzQ+PjJdfDAsK3Bbcz4+M10pfDApfDA7a1tEPj4yXT1HO2JyZWFrfWM9cEcoa1t5Pj4yXXwwLChrW2c+PjJdfDApKyhrW2g+PjJdfDApfDApfDA7Rz1xO2tbRz4+Ml09YztrW0crND4+Ml09TDtHPWtbdz4+Ml18MDtjPWtbRys0Pj4yXXwwO0Y9eDtrW0Y+PjJdPWtbRz4+Ml07a1tGKzQ+PjJdPWM7Rj1xO2M9a1tGKzQ+PjJdfDA7Rz14O2U9a1tHKzQ+PjJdfDA7aWYoKGN8MCk8KGV8MCl8KChjfDApPT0oZXwwKT8oa1tGPj4yXXwwKT4+PjA8KGtbRz4+Ml18MCk+Pj4wOjApKXtrW0Q+PjJdPS0xO2JyZWFrfUY9cTtjPWtbRis0Pj4yXXwwO0c9eDtlPWtbRys0Pj4yXXwwO2lmKChjfDApPihlfDApfCgoY3wwKT09KGV8MCk/KGtbRj4+Ml18MCk+Pj4wPihrW0c+PjJdfDApPj4+MDowKSlrW0Q+PjJdPTF9ZWxzZXtpZihtWyhrW3c+PjJdfDApKzg+PjFdJjgpe2tbeT4+Ml09bFsoa1tnPj4yXXwwKSsoa1tvPj4yXXwwKT4+MF07aWYoKGtbeT4+Ml18MCk+Pj4wPj0xMCl7a1tEPj4yXT0xO2JyZWFrfWlmKCEoa1t5Pj4yXXwwKSl7a1tEPj4yXT0tMTticmVha31uRygoa1tnPj4yXXwwKSsoa1toPj4yXXwwKXwwLGtbeT4+Ml18MCxzKXwwO2lmKChrW3k+PjJdfDApIT03KXtHPXM7Rz1vRyhrW0c+PjJdfDAsa1tHKzQ+PjJdfDAsK3Bba1t3Pj4yXT4+M10pfDA7a1tEPj4yXT1HO2JyZWFrfWlmKCtwW3M+PjNdPCtwW2tbdz4+Ml0+PjNdKXtrW0Q+PjJdPS0xO2JyZWFrfWlmKCEoK3Bbcz4+M10+K3Bba1t3Pj4yXT4+M10pKWJyZWFrO2tbRD4+Ml09MTticmVha31pZihtWyhrW3c+PjJdfDApKzg+PjFdJjIpe2Q9KGtbZz4+Ml18MCkrKGtbbz4+Ml18MCl8MDtpZigobFsoa1tnPj4yXXwwKSsoa1tvPj4yXXwwKT4+MF18MCk8MTI4KWtbeT4+Ml09bFtkPj4wXTtlbHNlIGxHKGQseSl8MDtpZigoa1t5Pj4yXXwwKT4+PjA8MTIpe2tbRD4+Ml09LTE7YnJlYWt9aWYoIShrW3k+PjJdJjEpKXtrW0Q+PjJdPTE7YnJlYWt9a1tzKzEyPj4yXT0oKChrW3k+PjJdfDApLTEyfDApPj4+MCkvMnwwO2lmKCgoa1toPj4yXXwwKSsoa1tzKzEyPj4yXXwwKXwwKT4+PjA+KGtbZj4+Ml18MCk+Pj4wKXtkPTQzO2JyZWFrIGF9aWYoa1soa1tDPj4yXXwwKSsyMCsoa1tuPj4yXTw8Mik+PjJdfDApe2lbcysxMD4+MF09aVsoa1tDPj4yXXwwKSs0Pj4wXXwwO2tbcyszMj4+Ml09a1soa1tDPj4yXXwwKSsxMj4+Ml07altzKzg+PjFdPTI7a1tzKzE2Pj4yXT0oa1tnPj4yXXwwKSsoa1toPj4yXXwwKTtHPXFHKHMsa1t3Pj4yXXwwLGtbKGtbQz4+Ml18MCkrMjArKGtbbj4+Ml08PDIpPj4yXXwwLChrW0I+PjJdfDApKzExfDApfDA7a1tEPj4yXT1HO2JyZWFrfWlmKChrW3MrMTI+PjJdfDApPChrWyhrW3c+PjJdfDApKzEyPj4yXXwwKSlkPWtbcysxMj4+Ml18MDtlbHNlIGQ9a1soa1t3Pj4yXXwwKSsxMj4+Ml18MDtrW3Q+PjJdPWQ7Rz1vUigoa1tnPj4yXXwwKSsoa1toPj4yXXwwKXwwLGtbKGtbdz4+Ml18MCkrMTY+PjJdfDAsa1t0Pj4yXXwwKXwwO2tbRD4+Ml09RztpZihrW0Q+PjJdfDApYnJlYWs7a1tEPj4yXT0oa1tzKzEyPj4yXXwwKS0oa1soa1t3Pj4yXXwwKSsxMj4+Ml18MCk7YnJlYWt9ZD1sWyhrW2c+PjJdfDApKyhrW28+PjJdfDApPj4wXXwwO2lmKCEobVsoa1t3Pj4yXXwwKSs4Pj4xXSYxNikpe2tbeT4+Ml09ZDtrW0Q+PjJdPShrW3k+PjJdfDApIT0wJjE7YnJlYWt9YT0oa1tnPj4yXXwwKSsoa1tvPj4yXXwwKXwwO2lmKChkfDApPDEyOClrW3k+PjJdPWxbYT4+MF07ZWxzZSBsRyhhLHkpfDA7aWYoKGtbeT4+Ml18MCk+Pj4wPj0xMj8oa1t5Pj4yXSYxfDApPT0wOjApe2tbdj4+Ml09KCgoa1t5Pj4yXXwwKS0xMnwwKT4+PjApLzJ8MDtpZigoKGtbaD4+Ml18MCkrKGtbdj4+Ml18MCl8MCk+Pj4wPihrW2Y+PjJdfDApPj4+MCl7ZD01OTticmVhayBhfWlmKG1bKGtbdz4+Ml18MCkrOD4+MV0mMTYzODQpaWYockcoKGtbZz4+Ml18MCkrKGtbaD4+Ml18MCl8MCxrW3Y+PjJdfDApfDApe2tbRD4+Ml09KGtbdj4+Ml18MCktKGtba1t3Pj4yXT4+Ml18MCk7YnJlYWt9ZWxzZXtrW0Q+PjJdPTE7YnJlYWt9aWYoKGtbdj4+Ml18MCk8KGtbKGtbdz4+Ml18MCkrMTI+PjJdfDApKWQ9a1t2Pj4yXXwwO2Vsc2UgZD1rWyhrW3c+PjJdfDApKzEyPj4yXXwwO2tbdT4+Ml09ZDtHPW9SKChrW2c+PjJdfDApKyhrW2g+PjJdfDApfDAsa1soa1t3Pj4yXXwwKSsxNj4+Ml18MCxrW3U+PjJdfDApfDA7a1tEPj4yXT1HO2lmKGtbRD4+Ml18MClicmVhaztrW0Q+PjJdPShrW3Y+PjJdfDApLShrWyhrW3c+PjJdfDApKzEyPj4yXXwwKTticmVha31rW0Q+PjJdPS0xfXdoaWxlKDApO2E9a1tuPj4yXXwwO2lmKGtbRD4+Ml18MCl7ZD03MTticmVha31rW24+PjJdPWErMTtrW3c+PjJdPShrW3c+PjJdfDApKzQwO0c9bUcoa1t5Pj4yXXwwKXwwO2tbaD4+Ml09KGtbaD4+Ml18MCkrRztHPXNHKGtbeT4+Ml18MCwwKXwwO2tbbz4+Ml09KGtbbz4+Ml18MCkrRztpZigoa1tvPj4yXXwwKT4+PjA+PShrW3o+PjJdfDApPj4+MCl7ZD03NzticmVha31pZigoa1tuPj4yXXwwKT49KG1bKGtbQj4+Ml18MCkrOD4+MV18MCkpe2Q9Nzc7YnJlYWt9aWYoKGtbaD4+Ml18MCk+Pj4wPihrW2Y+PjJdfDApPj4+MCl7ZD03NzticmVha319aWYoKGR8MCk9PTQzKXtHPShfaig3NDUyNyl8MCkmMjU1O2lbKGtbQj4+Ml18MCkrMTE+PjBdPUc7a1tBPj4yXT0wO0c9a1tBPj4yXXwwO3I9RTtyZXR1cm4gR3wwfWVsc2UgaWYoKGR8MCk9PTU5KXtHPShfaig3NDU1Nyl8MCkmMjU1O2lbKGtbQj4+Ml18MCkrMTE+PjBdPUc7a1tBPj4yXT0wO0c9a1tBPj4yXXwwO3I9RTtyZXR1cm4gR3wwfWVsc2UgaWYoKGR8MCk9PTcxKXtpZihpWyhrWyhrW0M+PjJdfDApKzE2Pj4yXXwwKSthPj4wXXwwKWtbRD4+Ml09MC0oa1tEPj4yXXwwKTtrW0E+PjJdPWtbRD4+Ml07Rz1rW0E+PjJdfDA7cj1FO3JldHVybiBHfDB9ZWxzZSBpZigoZHwwKT09Nzcpe2lbKGtbQj4+Ml18MCkrMTQ+PjBdPTE7a1tBPj4yXT1pWyhrW0I+PjJdfDApKzEwPj4wXTtHPWtbQT4+Ml18MDtyPUU7cmV0dXJuIEd8MH1yZXR1cm4gMH1mdW5jdGlvbiBsRyhhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsbT0wO209cjtyPXIrMzJ8MDtjPW0rMjV8MDtkPW0rMjB8MDtlPW0rMTZ8MDtmPW0rMTJ8MDtnPW0rOHwwO2o9bTtoPW0rMjR8MDtrW2Q+PjJdPWE7a1tlPj4yXT1iO2tbZj4+Ml09bFtrW2Q+PjJdPj4wXTtrW2Q+PjJdPShrW2Q+PjJdfDApKzE7a1tnPj4yXT1sW2tbZD4+Ml0+PjBdO2lmKCEoa1tnPj4yXSYxMjgpKXtrW2Y+PjJdPWtbZj4+Ml0mMTI3O2tbZj4+Ml09a1tmPj4yXTw8NztrW2tbZT4+Ml0+PjJdPWtbZj4+Ml18a1tnPj4yXTtpW2M+PjBdPTI7aj1pW2M+PjBdfDA7cj1tO3JldHVybiBqfDB9a1tkPj4yXT0oa1tkPj4yXXwwKSsxO2tbZj4+Ml09a1tmPj4yXTw8MTQ7a1tmPj4yXT1rW2Y+PjJdfChsW2tbZD4+Ml0+PjBdfDApO2lmKCEoa1tmPj4yXSYxMjgpKXtrW2Y+PjJdPWtbZj4+Ml0mMjA4MDg5NTtrW2c+PjJdPWtbZz4+Ml0mMTI3O2tbZz4+Ml09a1tnPj4yXTw8NztrW2tbZT4+Ml0+PjJdPWtbZj4+Ml18a1tnPj4yXTtpW2M+PjBdPTM7aj1pW2M+PjBdfDA7cj1tO3JldHVybiBqfDB9a1tkPj4yXT0oa1tkPj4yXXwwKSstMjtiPW11KGtbZD4+Ml18MCxqKXwwO2lbaD4+MF09YjtiPWo7aWYoMCE9KGtbYis0Pj4yXXwwKT8xOihrW2o+PjJdfDApIT0oa1tiPj4yXXwwKSlrW2tbZT4+Ml0+PjJdPS0xO2Vsc2Uga1trW2U+PjJdPj4yXT1rW2o+PjJdO2lbYz4+MF09aVtoPj4wXXwwO2o9aVtjPj4wXXwwO3I9bTtyZXR1cm4ganwwfWZ1bmN0aW9uIG1HKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MDtjPXI7cj1yKzE2fDA7Yj1jKzR8MDtkPWM7a1tkPj4yXT1hO2E9a1tkPj4yXXwwO2lmKChrW2Q+PjJdfDApPj4+MD49MTI4KXtrW2I+PjJdPSgoYS0xMnwwKT4+PjApLzJ8MDtkPWtbYj4+Ml18MDtyPWM7cmV0dXJuIGR8MH1lbHNle2tbYj4+Ml09bFszNTA2MSthPj4wXTtkPWtbYj4+Ml18MDtyPWM7cmV0dXJuIGR8MH1yZXR1cm4gMH1mdW5jdGlvbiBuRyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTA7aD1yO3I9cisxNnwwO2Q9aCsxMnwwO2U9aCs4fDA7Zj1oKzR8MDtnPWg7a1tlPj4yXT1hO2tbZj4+Ml09YjtrW2c+PjJdPWM7c3dpdGNoKGtbZj4+Ml18MCl7Y2FzZSAwOmNhc2UgMTE6Y2FzZSAxMDp7alsoa1tnPj4yXXwwKSs4Pj4xXT0xO2tbZD4+Ml09MDtiPWtbZD4+Ml18MDtyPWg7cmV0dXJuIGJ8MH1jYXNlIDE6e2M9aVtrW2U+PjJdPj4wXXwwO2I9a1tnPj4yXXwwO2tbYj4+Ml09YztrW2IrND4+Ml09KChjfDApPDApPDwzMT4+MzE7alsoa1tnPj4yXXwwKSs4Pj4xXT00O2tbZD4+Ml09MTtiPWtbZD4+Ml18MDtyPWg7cmV0dXJuIGJ8MH1jYXNlIDI6e2M9aVtrW2U+PjJdPj4wXTw8OHxsWyhrW2U+PjJdfDApKzE+PjBdO2I9a1tnPj4yXXwwO2tbYj4+Ml09YztrW2IrND4+Ml09KChjfDApPDApPDwzMT4+MzE7alsoa1tnPj4yXXwwKSs4Pj4xXT00O2tbZD4+Ml09MjtiPWtbZD4+Ml18MDtyPWg7cmV0dXJuIGJ8MH1jYXNlIDM6e2M9aVtrW2U+PjJdPj4wXTw8MTZ8bFsoa1tlPj4yXXwwKSsxPj4wXTw8OHxsWyhrW2U+PjJdfDApKzI+PjBdO2I9a1tnPj4yXXwwO2tbYj4+Ml09YztrW2IrND4+Ml09KChjfDApPDApPDwzMT4+MzE7alsoa1tnPj4yXXwwKSs4Pj4xXT00O2tbZD4+Ml09MztiPWtbZD4+Ml18MDtyPWg7cmV0dXJuIGJ8MH1jYXNlIDQ6e2M9aVtrW2U+PjJdPj4wXTw8MjR8bFsoa1tlPj4yXXwwKSsxPj4wXTw8MTZ8bFsoa1tlPj4yXXwwKSsyPj4wXTw8OHxsWyhrW2U+PjJdfDApKzM+PjBdO2I9a1tnPj4yXXwwO2tbYj4+Ml09YztrW2IrND4+Ml09KChjfDApPDApPDwzMT4+MzE7alsoa1tnPj4yXXwwKSs4Pj4xXT00O2tbZD4+Ml09NDtiPWtbZD4+Ml18MDtyPWg7cmV0dXJuIGJ8MH1jYXNlIDU6e2I9bFsoa1tlPj4yXXwwKSsyPj4wXTw8MjR8bFsoa1tlPj4yXXwwKSsyKzE+PjBdPDwxNnxsWyhrW2U+PjJdfDApKzIrMj4+MF08PDh8bFsoa1tlPj4yXXwwKSsyKzM+PjBdO2M9aVtrW2U+PjJdPj4wXTw8OHxsWyhrW2U+PjJdfDApKzE+PjBdO2M9JFIoYnwwLDAsa1MoMCwxLGN8MCwoKGN8MCk8MCk8PDMxPj4zMXwwKXwwLEx8MCl8MDtiPWtbZz4+Ml18MDtrW2I+PjJdPWM7a1tiKzQ+PjJdPUw7alsoa1tnPj4yXXwwKSs4Pj4xXT00O2tbZD4+Ml09NjtiPWtbZD4+Ml18MDtyPWg7cmV0dXJuIGJ8MH1jYXNlIDc6Y2FzZSA2OntiPXpHKGtbZT4+Ml18MCxrW2Y+PjJdfDAsa1tnPj4yXXwwKXwwO2tbZD4+Ml09YjtiPWtbZD4+Ml18MDtyPWg7cmV0dXJuIGJ8MH1jYXNlIDk6Y2FzZSA4OntiPWtbZz4+Ml18MDtrW2I+PjJdPShrW2Y+PjJdfDApLTg7a1tiKzQ+PjJdPTA7alsoa1tnPj4yXXwwKSs4Pj4xXT00O2tbZD4+Ml09MDtiPWtbZD4+Ml18MDtyPWg7cmV0dXJuIGJ8MH1kZWZhdWx0OntrWyhrW2c+PjJdfDApKzE2Pj4yXT1rW2U+PjJdO2tbKGtbZz4+Ml18MCkrMTI+PjJdPSgoKGtbZj4+Ml18MCktMTJ8MCk+Pj4wKS8yfDA7alsoa1tnPj4yXXwwKSs4Pj4xXT1qWzE0NTkwKygoa1tmPj4yXSYxKTw8MSk+PjFdfDA7a1tkPj4yXT1rWyhrW2c+PjJdfDApKzEyPj4yXTtiPWtbZD4+Ml18MDtyPWg7cmV0dXJuIGJ8MH19cmV0dXJuIDB9ZnVuY3Rpb24gb0coYSxiLGMpe2E9YXwwO2I9YnwwO2M9K2M7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaT0wLGo9MCxsPTA7aT1yO3I9cis0OHwwO2Q9aSszMnwwO2U9aSsyNHwwO2Y9aSsxNnwwO2g9aSs4fDA7Zz1pO2o9ZTtrW2o+PjJdPWE7a1tqKzQ+PjJdPWI7cFtmPj4zXT1jO2lmKCtwW2Y+PjNdPC05MjIzMzcyMDM2ODU0Nzc1ODA4LjApe2tbZD4+Ml09MTtqPWtbZD4+Ml18MDtyPWk7cmV0dXJuIGp8MH1pZigrcFtmPj4zXT45MjIzMzcyMDM2ODU0Nzc1ODA4LjApe2tbZD4+Ml09LTE7aj1rW2Q+PjJdfDA7cj1pO3JldHVybiBqfDB9Yz0rcFtmPj4zXTtsPStXKGMpPj0xLjA/KGM+MC4wP35+K2lhKCtWKGMvNDI5NDk2NzI5Ni4wKSw0Mjk0OTY3Mjk1LjApPj4+MDp+fitnYSgoYy0rKH5+Yz4+PjApKS80Mjk0OTY3Mjk2LjApPj4+MCk6MDtiPWg7a1tiPj4yXT1+fmM+Pj4wO2tbYis0Pj4yXT1sO2I9ZTtsPWtbYis0Pj4yXXwwO2o9aDthPWtbais0Pj4yXXwwO2lmKChsfDApPChhfDApfCgobHwwKT09KGF8MCk/KGtbYj4+Ml18MCk+Pj4wPChrW2o+PjJdfDApPj4+MDowKSl7a1tkPj4yXT0tMTtsPWtbZD4+Ml18MDtyPWk7cmV0dXJuIGx8MH1qPWU7YT1rW2orND4+Ml18MDtsPWg7Yj1rW2wrND4+Ml18MDtpZigoYXwwKT4oYnwwKXwoKGF8MCk9PShifDApPyhrW2o+PjJdfDApPj4+MD4oa1tsPj4yXXwwKT4+PjA6MCkpe2w9aDtpZigoKGtbbD4+Ml18MCk9PTA/KGtbbCs0Pj4yXXwwKT09LTIxNDc0ODM2NDg6MCkmK3BbZj4+M10+MC4wKXtrW2Q+PjJdPS0xO2w9a1tkPj4yXXwwO3I9aTtyZXR1cm4gbHwwfWVsc2V7a1tkPj4yXT0xO2w9a1tkPj4yXXwwO3I9aTtyZXR1cm4gbHwwfX1sPWU7cFtnPj4zXT0rKChrW2w+PjJdfDApPj4+MCkrNDI5NDk2NzI5Ni4wKisoa1tsKzQ+PjJdfDApO2lmKCtwW2c+PjNdPCtwW2Y+PjNdKXtrW2Q+PjJdPS0xO2w9a1tkPj4yXXwwO3I9aTtyZXR1cm4gbHwwfWlmKCtwW2c+PjNdPitwW2Y+PjNdKXtrW2Q+PjJdPTE7bD1rW2Q+PjJdfDA7cj1pO3JldHVybiBsfDB9ZWxzZXtrW2Q+PjJdPTA7bD1rW2Q+PjJdfDA7cj1pO3JldHVybiBsfDB9cmV0dXJuIDB9ZnVuY3Rpb24gcEcoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTA7aD1yO3I9ciszMnwwO2M9aCs4fDA7ZD1oKzI0fDA7ZT1oKzIwfDA7Zz1oKzE2fDA7Zj1oO2tbZD4+Ml09YTtrW2U+PjJdPWI7c3dpdGNoKGtbZD4+Ml18MCl7Y2FzZSAxOmNhc2UgMDp7Zj1pW2tbZT4+Ml0+PjBdfDA7Zz1jO2tbZz4+Ml09ZjtrW2crND4+Ml09KChmfDApPDApPDwzMT4+MzE7YnJlYWt9Y2FzZSAyOntmPWlba1tlPj4yXT4+MF08PDh8bFsoa1tlPj4yXXwwKSsxPj4wXTtnPWM7a1tnPj4yXT1mO2tbZys0Pj4yXT0oKGZ8MCk8MCk8PDMxPj4zMTticmVha31jYXNlIDM6e2Y9aVtrW2U+PjJdPj4wXTw8MTZ8bFsoa1tlPj4yXXwwKSsxPj4wXTw8OHxsWyhrW2U+PjJdfDApKzI+PjBdO2c9YztrW2c+PjJdPWY7a1tnKzQ+PjJdPSgoZnwwKTwwKTw8MzE+PjMxO2JyZWFrfWNhc2UgNDp7a1tnPj4yXT1sW2tbZT4+Ml0+PjBdPDwyNHxsWyhrW2U+PjJdfDApKzE+PjBdPDwxNnxsWyhrW2U+PjJdfDApKzI+PjBdPDw4fGxbKGtbZT4+Ml18MCkrMz4+MF07Zj1rW2c+PjJdfDA7Zz1jO2tbZz4+Ml09ZjtrW2crND4+Ml09KChmfDApPDApPDwzMT4+MzE7YnJlYWt9Y2FzZSA1OntnPWxbKGtbZT4+Ml18MCkrMj4+MF08PDI0fGxbKGtbZT4+Ml18MCkrMisxPj4wXTw8MTZ8bFsoa1tlPj4yXXwwKSsyKzI+PjBdPDw4fGxbKGtbZT4+Ml18MCkrMiszPj4wXTtmPWlba1tlPj4yXT4+MF08PDh8bFsoa1tlPj4yXXwwKSsxPj4wXTtmPSRSKGd8MCwwLGtTKDAsMSxmfDAsKChmfDApPDApPDwzMT4+MzF8MCl8MCxMfDApfDA7Zz1jO2tbZz4+Ml09ZjtrW2crND4+Ml09TDticmVha31jYXNlIDY6e2c9ZjtrW2c+PjJdPWxba1tlPj4yXT4+MF08PDI0fGxbKGtbZT4+Ml18MCkrMT4+MF08PDE2fGxbKGtbZT4+Ml18MCkrMj4+MF08PDh8bFsoa1tlPj4yXXwwKSszPj4wXTtrW2crND4+Ml09MDtnPWtbZj4+Ml18MDthPWY7a1thPj4yXT1sWyhrW2U+PjJdfDApKzQ+PjBdPDwyNHxsWyhrW2U+PjJdfDApKzQrMT4+MF08PDE2fGxbKGtbZT4+Ml18MCkrNCsyPj4wXTw8OHxsWyhrW2U+PjJdfDApKzQrMz4+MF07a1thKzQ+PjJdPWc7YT1mO2Y9a1thKzQ+PjJdfDA7Zz1jO2tbZz4+Ml09a1thPj4yXTtrW2crND4+Ml09ZjticmVha31kZWZhdWx0OntnPWM7a1tnPj4yXT0oa1tkPj4yXXwwKS04O2tbZys0Pj4yXT0wfX1nPWM7TD1rW2crND4+Ml18MDtyPWg7cmV0dXJuIGtbZz4+Ml18MH1mdW5jdGlvbiBxRyhhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MCxtPTAsbj0wLG89MCxwPTAscT0wLHM9MCx0PTAsdT0wO3U9cjtyPXIrMTI4fDA7ZT11KzExNnwwO2Y9dSsxMTJ8MDtnPXUrMTA4fDA7aD11KzEwNHwwO2o9dSsxMDB8MDtxPXUrOTZ8MDtzPXUrOTJ8MDt0PXUrODh8MDtvPXUrODR8MDtwPXUrODB8MDttPXUrNDB8MDtuPXU7a1tmPj4yXT1hO2tbZz4+Ml09YjtrW2g+PjJdPWM7a1tqPj4yXT1kO2lmKChsWyhrW2Y+PjJdfDApKzEwPj4wXXwwfDApPT0obFsoa1toPj4yXXwwKSs0Pj4wXXwwfDApKXt0PWhjW2tbKGtbaD4+Ml18MCkrMTI+PjJdJjI1NV0oa1soa1toPj4yXXwwKSs4Pj4yXXwwLGtbKGtbZj4+Ml18MCkrMTI+PjJdfDAsa1soa1tmPj4yXXwwKSsxNj4+Ml18MCxrWyhrW2c+PjJdfDApKzEyPj4yXXwwLGtbKGtbZz4+Ml18MCkrMTY+PjJdfDApfDA7a1tlPj4yXT10O3Q9a1tlPj4yXXwwO3I9dTtyZXR1cm4gdHwwfXRHKG0sa1soa1tmPj4yXXwwKSszMj4+Ml18MCwxKTt0RyhuLGtbKGtbZj4+Ml18MCkrMzI+PjJdfDAsMSk7dUcobSxrW2Y+PjJdfDAsNDA5Nik7dUcobixrW2c+PjJdfDAsNDA5Nik7ZD1oaChtLGlbKGtbaD4+Ml18MCkrND4+MF18MCl8MDtrW3M+PjJdPWQ7a1tvPj4yXT0oa1tzPj4yXXwwKT09MD8wOmtbbSsxMj4+Ml18MDtkPWhoKG4saVsoa1toPj4yXXwwKSs0Pj4wXXwwKXwwO2tbdD4+Ml09ZDtrW3A+PjJdPShrW3Q+PjJdfDApPT0wPzA6a1tuKzEyPj4yXXwwO2Q9aGNba1soa1toPj4yXXwwKSsxMj4+Ml0mMjU1XShrWyhrW2g+PjJdfDApKzg+PjJdfDAsa1tvPj4yXXwwLGtbcz4+Ml18MCxrW3A+PjJdfDAsa1t0Pj4yXXwwKXwwO2tbcT4+Ml09ZDtpZigoKGtbcz4+Ml18MCk9PTB8KGtbdD4+Ml18MCk9PTApJihrW2o+PjJdfDApIT0wKWlba1tqPj4yXT4+MF09NztmaChtKTtmaChuKTtrW2U+PjJdPWtbcT4+Ml07dD1rW2U+PjJdfDA7cj11O3JldHVybiB0fDB9ZnVuY3Rpb24gckcoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MDtnPXI7cj1yKzE2fDA7Zj1nKzEyfDA7Yz1nKzh8MDtkPWcrNHwwO2U9ZztrW2M+PjJdPWE7a1tkPj4yXT1iO2tbZT4+Ml09MDt3aGlsZSgxKXtpZigoa1tlPj4yXXwwKT49KGtbZD4+Ml18MCkpe2M9NjticmVha31pZihpWyhrW2M+PjJdfDApKyhrW2U+PjJdfDApPj4wXXwwKXtjPTQ7YnJlYWt9a1tlPj4yXT0oa1tlPj4yXXwwKSsxfWlmKChjfDApPT00KXtrW2Y+PjJdPTA7Zj1rW2Y+PjJdfDA7cj1nO3JldHVybiBmfDB9ZWxzZSBpZigoY3wwKT09Nil7a1tmPj4yXT0xO2Y9a1tmPj4yXXwwO3I9ZztyZXR1cm4gZnwwfXJldHVybiAwfWZ1bmN0aW9uIHNHKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MDtlPXI7cj1yKzE2fDA7Yz1lO2Q9ZSs4fDA7Zj1jO2tbZj4+Ml09YTtrW2YrND4+Ml09YjtrW2Q+PjJdPTE7d2hpbGUoMSl7Yj1jO2I9YVMoa1tiPj4yXXwwLGtbYis0Pj4yXXwwLDcpfDA7Zj1MO2E9YztrW2E+PjJdPWI7a1thKzQ+PjJdPWY7YT1rW2Q+PjJdfDA7aWYoISgoYnwwKSE9MHwoZnwwKSE9MCkpYnJlYWs7a1tkPj4yXT1hKzF9cj1lO3JldHVybiBhfDB9ZnVuY3Rpb24gdEcoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTA7ZD1yO3I9cisxNnwwO2U9ZCs0fDA7Zj1kO2c9ZCs4fDA7a1tlPj4yXT1hO2tbZj4+Ml09YjtqW2c+PjFdPWM7alsoa1tlPj4yXXwwKSs4Pj4xXT1qW2c+PjFdfDA7a1soa1tlPj4yXXwwKSszMj4+Ml09a1tmPj4yXTtrWyhrW2U+PjJdfDApKzI0Pj4yXT0wO3I9ZDtyZXR1cm59ZnVuY3Rpb24gdUcoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTA7Zz1yO3I9cisxNnwwO2Q9Zys4fDA7ZT1nKzR8MDtmPWc7a1tkPj4yXT1hO2tbZT4+Ml09YjtrW2Y+PjJdPWM7Yj1rW2Q+PjJdfDA7aWYoKG1bKGtbZD4+Ml18MCkrOD4+MV18MCkmOTMxMil7dkcoYixrW2U+PjJdfDAsa1tmPj4yXXwwKTtyPWc7cmV0dXJufWM9a1tlPj4yXXwwO2tbYj4+Ml09a1tjPj4yXTtrW2IrND4+Ml09a1tjKzQ+PjJdO2tbYis4Pj4yXT1rW2MrOD4+Ml07a1tiKzEyPj4yXT1rW2MrMTI+PjJdO2tbYisxNj4+Ml09a1tjKzE2Pj4yXTtpZigobVsoa1tlPj4yXXwwKSs4Pj4xXXwwKSYyMDQ4KXtyPWc7cmV0dXJufWU9KGtbZD4+Ml18MCkrOHwwO2pbZT4+MV09KG1bZT4+MV18MCkmLTcxNjk7ZT0oa1tkPj4yXXwwKSs4fDA7altlPj4xXT1tW2U+PjFdfDB8a1tmPj4yXTtyPWc7cmV0dXJufWZ1bmN0aW9uIHZHKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wO2Q9cjtyPXIrMTZ8MDtnPWQrOHwwO2Y9ZCs0fDA7ZT1kO2tbZz4+Ml09YTtrW2Y+PjJdPWI7a1tlPj4yXT1jO3dHKGtbZz4+Ml18MCk7dUcoa1tnPj4yXXwwLGtbZj4+Ml18MCxrW2U+PjJdfDApO3I9ZDtyZXR1cm59ZnVuY3Rpb24gd0coYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wLGU9MDtlPXI7cj1yKzE2fDA7Yz1lKzR8MDtkPWU7a1tjPj4yXT1hO2lmKChtWyhrW2M+PjJdfDApKzg+PjFdfDApJjgxOTIpeEcoa1tjPj4yXXwwLGtba1tjPj4yXT4+Ml18MCl8MDthPWtbYz4+Ml18MDtkbyBpZighKChtWyhrW2M+PjJdfDApKzg+PjFdfDApJjEwMjQpKXtiPWtbYz4+Ml18MDtpZigobVthKzg+PjFdfDApJjMyKXt5RyhrW2I+PjJdfDApO2JyZWFrfWlmKChtW2IrOD4+MV18MCkmNjQpe2tbZD4+Ml09a1trW2M+PjJdPj4yXTtrWyhrW2Q+PjJdfDApKzQ+PjJdPWtbKGtba1tkPj4yXT4+Ml18MCkrMTg4Pj4yXTtrWyhrW2tbZD4+Ml0+PjJdfDApKzE4OD4+Ml09a1tkPj4yXX19ZWxzZSBfYltrW2ErMzY+PjJdJjI1NV0oa1soa1tjPj4yXXwwKSsxNj4+Ml18MCk7d2hpbGUoMCk7alsoa1tjPj4yXXwwKSs4Pj4xXT0xO3I9ZTtyZXR1cm59ZnVuY3Rpb24geEcoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTA7aD1yO3I9cis5NnwwO2Q9aCs4MHwwO2U9aCs3NnwwO2c9aCs3MnwwO2Y9aCs0MHwwO2M9aDtrW2Q+PjJdPWE7a1tlPj4yXT1iO2tbZz4+Ml09MDtpZighKGtbZT4+Ml18MCkpe2c9a1tnPj4yXXwwO3I9aDtyZXR1cm4gZ3wwfWlmKCEoa1soa1tlPj4yXXwwKSsxNj4+Ml18MCkpe2c9a1tnPj4yXXwwO3I9aDtyZXR1cm4gZ3wwfTtrW2Y+PjJdPTA7a1tmKzQ+PjJdPTA7a1tmKzg+PjJdPTA7a1tmKzEyPj4yXT0wO2tbZisxNj4+Ml09MDtrW2YrMjA+PjJdPTA7a1tmKzI0Pj4yXT0wO2tbZisyOD4+Ml09MDtiPWM7YT1iKzQwfDA7ZG97a1tiPj4yXT0wO2I9Yis0fDB9d2hpbGUoKGJ8MCk8KGF8MCkpO2pbYys4Pj4xXT0xO2tbYyszMj4+Ml09a1soa1tkPj4yXXwwKSszMj4+Ml07a1tmPj4yXT1jO2tbZis4Pj4yXT1rW2Q+PjJdO2tbZis0Pj4yXT1rW2U+PjJdO19iW2tbKGtbZT4+Ml18MCkrMTY+PjJdJjI1NV0oZik7aWYoKGtbKGtbZD4+Ml18MCkrMjQ+PjJdfDApPjApYmcoa1soa1tkPj4yXXwwKSszMj4+Ml18MCxrWyhrW2Q+PjJdfDApKzIwPj4yXXwwKTtiPWtbZD4+Ml18MDthPWIrNDB8MDtkb3trW2I+PjJdPWtbYz4+Ml07Yj1iKzR8MDtjPWMrNHwwfXdoaWxlKChifDApPChhfDApKTtrW2c+PjJdPWtbZisyMD4+Ml07Zz1rW2c+PjJdfDA7cj1oO3JldHVybiBnfDB9ZnVuY3Rpb24geUcoYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wLGU9MDtlPXI7cj1yKzE2fDA7Yj1lKzh8MDtjPWUrNHwwO2Q9ZTtrW2I+PjJdPWE7a1tjPj4yXT1rW2tbYj4+Ml0+PjJdO3doaWxlKDEpe2lmKCEoa1tjPj4yXXwwKSlicmVhaztrW2Q+PjJdPWtba1tjPj4yXT4+Ml07Ymcoa1soa1tiPj4yXXwwKSs0Pj4yXXwwLGtbYz4+Ml18MCk7a1tjPj4yXT1rW2Q+PjJdfWtba1tiPj4yXT4+Ml09MDtqWyhrW2I+PjJdfDApKzI0Pj4xXT0wO2tbKGtbYj4+Ml18MCkrOD4+Ml09MDtrWyhrW2I+PjJdfDApKzEyPj4yXT0wO2tbKGtbYj4+Ml18MCkrMjA+PjJdPTA7alsoa1tiPj4yXXwwKSsyNj4+MV09MTtyPWU7cmV0dXJufWZ1bmN0aW9uIHpHKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxpPTA7Zj1yO3I9ciszMnwwO2k9ZisyMHwwO2c9ZisxNnwwO2Q9ZisxMnwwO2U9ZjtoPWYrOHwwO2tbaT4+Ml09YTtrW2c+PjJdPWI7a1tkPj4yXT1jO2M9ZTtrW2M+PjJdPShsW2tbaT4+Ml0+PjBdfDApPDwyNHwobFsoa1tpPj4yXXwwKSsxPj4wXXwwKTw8MTZ8KGxbKGtbaT4+Ml18MCkrMj4+MF18MCk8PDh8KGxbKGtbaT4+Ml18MCkrMz4+MF18MCk7a1tjKzQ+PjJdPTA7a1toPj4yXT0obFsoa1tpPj4yXXwwKSs0Pj4wXXwwKTw8MjR8KGxbKGtbaT4+Ml18MCkrNCsxPj4wXXwwKTw8MTZ8KGxbKGtbaT4+Ml18MCkrNCsyPj4wXXwwKTw8OHwobFsoa1tpPj4yXXwwKSs0KzM+PjBdfDApO2M9JFIoMCxrW2U+PjJdfDAsa1toPj4yXXwwLDApfDA7Yj1lO2tbYj4+Ml09YztrW2IrND4+Ml09TDtpZigoa1tnPj4yXXwwKT09Nil7Zz1lO2g9a1tnKzQ+PjJdfDA7aT1rW2Q+PjJdfDA7a1tpPj4yXT1rW2c+PjJdO2tbaSs0Pj4yXT1oO2pbKGtbZD4+Ml18MCkrOD4+MV09NDtyPWY7cmV0dXJuIDh9ZWxzZXtpPWtbZD4+Ml18MDtrW2k+PjJdPWtbZT4+Ml07a1tpKzQ+PjJdPWtbZSs0Pj4yXTtpPShBRygrcFtrW2Q+PjJdPj4zXSl8MCkhPTA7alsoa1tkPj4yXXwwKSs4Pj4xXT1pPzE6ODtyPWY7cmV0dXJuIDh9cmV0dXJuIDB9ZnVuY3Rpb24gQUcoYSl7YT0rYTt2YXIgYj0wLGM9MCxkPTAsZT0wLGY9MDtjPXI7cj1yKzMyfDA7Zj1jKzE2fDA7Yj1jKzI0fDA7ZT1jKzh8MDtkPWM7cFtmPj4zXT1hO3BbZT4+M109K3BbZj4+M107cFtkPj4zXT0rcFtlPj4zXTtrW2I+PjJdPStwW2U+PjNdIT0rcFtkPj4zXSYxO3I9YztyZXR1cm4ga1tiPj4yXXwwfWZ1bmN0aW9uIEJHKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wLG49MCxvPTA7bz1yO3I9ciszMnwwO2M9bysyMHwwO2Q9bysxNnwwO2U9bysxMnwwO2g9bys4fDA7Zj1vKzR8MDtnPW87a1tkPj4yXT1hO2tbZT4+Ml09YjtpZigobFsoa1tkPj4yXXwwKSs2Nj4+MF18MCkhPTEpe2lmKChsWyhrW2Q+PjJdfDApKzY2Pj4wXXwwKT49MylhPU9GKGtbZD4+Ml18MCl8MDtlbHNlIGE9MDtrW2g+PjJdPWE7aWYoa1toPj4yXXwwKXtrW2M+PjJdPWtbaD4+Ml07bj1rW2M+PjJdfDA7cj1vO3JldHVybiBufDB9aWYoIShsWyhrW2Q+PjJdfDApKzY2Pj4wXXwwKSl7a1trW2U+PjJdPj4yXT0xO2tbYz4+Ml09MDtuPWtbYz4+Ml18MDtyPW87cmV0dXJuIG58MH1pZigoa1soa1tkPj4yXXwwKSs2MD4+Ml18MCkhPTA/KGlbKGtbZD4+Ml18MCkrNjY+PjBdPTEsYj0oa1soa1tkPj4yXXwwKSs2MD4+Ml18MCk+MCxrWyhrW2Q+PjJdfDApKzYwPj4yXT0wLGIpOjApe2tbYz4+Ml09MDtuPWtbYz4+Ml18MDtyPW87cmV0dXJuIG58MH19a1tnPj4yXT1rWyhrW2Q+PjJdfDApKzEyMCsoaVsoa1tkPj4yXXwwKSs2OD4+MF08PDIpPj4yXTtiPShrW2Q+PjJdfDApKzgwKyhpWyhrW2Q+PjJdfDApKzY4Pj4wXTw8MSl8MDthPShqW2I+PjFdfDApKzE8PDE2Pj4xNjtqW2I+PjFdPWE7a1tmPj4yXT1hJjY1NTM1O2E9KGlbKGtbZz4+Ml18MCkrND4+MF18MCkhPTA7aWYoKGtbZj4+Ml18MCk8KG1bKGtbZz4+Ml18MCkrMTg+PjFdfDApKWlmKGEpe2tbYz4+Ml09MDtuPWtbYz4+Ml18MDtyPW87cmV0dXJuIG58MH1lbHNle249Q0coa1tkPj4yXXwwKXwwO2tbYz4+Ml09bjtuPWtbYz4+Ml18MDtyPW87cmV0dXJuIG58MH1pZighYSl7bj1rW2Q+PjJdfDA7bj1QRihuLHFyKChrWyhrW2c+PjJdfDApKzU2Pj4yXXwwKSsoKGxbKGtbZz4+Ml18MCkrNT4+MF18MCkrOCl8MCl8MCl8MDtrW2g+PjJdPW47aWYoa1toPj4yXXwwKXtrW2M+PjJdPWtbaD4+Ml07bj1rW2M+PjJdfDA7cj1vO3JldHVybiBufDB9ZWxzZXtuPUNHKGtbZD4+Ml18MCl8MDtrW2M+PjJdPW47bj1rW2M+PjJdfDA7cj1vO3JldHVybiBufDB9fWRve2lmKCEoaVsoa1tkPj4yXXwwKSs2OD4+MF18MCkpe249MTc7YnJlYWt9UkYoa1tkPj4yXXwwKTtrW2c+PjJdPWtbKGtbZD4+Ml18MCkrMTIwKyhpWyhrW2Q+PjJdfDApKzY4Pj4wXTw8Mik+PjJdfXdoaWxlKChtWyhrW2Q+PjJdfDApKzgwKyhpWyhrW2Q+PjJdfDApKzY4Pj4wXTw8MSk+PjFdfDApPj0obVsoa1tnPj4yXXwwKSsxOD4+MV18MCkpO2lmKChufDApPT0xNyl7a1trW2U+PjJdPj4yXT0xO2lbKGtbZD4+Ml18MCkrNjY+PjBdPTA7a1tjPj4yXT0wO249a1tjPj4yXXwwO3I9bztyZXR1cm4gbnwwfWlmKGlbKGtbZz4+Ml18MCkrMj4+MF18MCl7bj1MRihrW2Q+PjJdfDAsa1tlPj4yXXwwKXwwO2tbYz4+Ml09bjtuPWtbYz4+Ml18MDtyPW87cmV0dXJuIG58MH1lbHNle2tbYz4+Ml09MDtuPWtbYz4+Ml18MDtyPW87cmV0dXJuIG58MH1yZXR1cm4gMH1mdW5jdGlvbiBDRyhhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTAsZT0wLGY9MDtmPXI7cj1yKzE2fDA7Yj1mKzEyfDA7ZD1mKzh8MDtlPWYrNHwwO2M9ZjtrW2I+PjJdPWE7a1tlPj4yXT0wO3doaWxlKDEpe2lmKGtbZT4+Ml18MCl7Yj01O2JyZWFrfWE9a1soa1tiPj4yXXwwKSsxMjArKGlbKGtbYj4+Ml18MCkrNjg+PjBdPDwyKT4+Ml18MDtrW2M+PjJdPWE7aWYoISgoaVthKzQ+PjBdfDApIT0wXjEpKXtiPTU7YnJlYWt9YT1xcigoa1soa1tjPj4yXXwwKSs1Nj4+Ml18MCkrKG1bKGtbYz4+Ml18MCkrMjA+PjFdJihsWyhrWyhrW2M+PjJdfDApKzY0Pj4yXXwwKSsobVsoa1tiPj4yXXwwKSs4MCsoaVsoa1tiPj4yXXwwKSs2OD4+MF08PDEpPj4xXTw8MSk+PjBdPDw4fGxbKGtbKGtbYz4+Ml18MCkrNjQ+PjJdfDApKyhtWyhrW2I+PjJdfDApKzgwKyhpWyhrW2I+PjJdfDApKzY4Pj4wXTw8MSk+PjFdPDwxKSsxPj4wXSkpfDApfDA7a1tkPj4yXT1hO2E9UEYoa1tiPj4yXXwwLGtbZD4+Ml18MCl8MDtrW2U+PjJdPWF9aWYoKGJ8MCk9PTUpe3I9ZjtyZXR1cm4ga1tlPj4yXXwwfXJldHVybiAwfWZ1bmN0aW9uIERHKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wLGk9MDtoPXI7cj1yKzMyfDA7aT1oKzIwfDA7Yz1oKzE2fDA7ZD1oKzEyfDA7ZT1oKzh8MDtmPWgrNHwwO2c9aDtrW2k+PjJdPWE7a1tjPj4yXT1iO2tbZD4+Ml09a1trW2k+PjJdPj4yXTtiPWl3KGtbZD4+Ml18MCwwLDAsMCl8MDtrW2Y+PjJdPWI7aWYoIShrW2Y+PjJdfDApKXtpPWtbZj4+Ml18MDtyPWg7cmV0dXJuIGl8MH1pPUFoKGtbZD4+Ml18MCxrWyhrW2M+PjJdfDApKzEyPj4yXXwwKXwwO2tbKGtbZj4+Ml18MCkrOCsoKChrW2tbZj4+Ml0+PjJdfDApLTF8MCkqNzJ8MCkrOD4+Ml09aTtpPVBoKGtbZD4+Ml18MCxrWyhrWyhrW2M+PjJdfDApKzQ+PjJdfDApKzIwPj4yXXwwKXwwO2tbZT4+Ml09aTtpZighKChrW2U+PjJdfDApPT0wfChrW2U+PjJdfDApPj0yKSl7aT1rW2Y+PjJdfDA7cj1oO3JldHVybiBpfDB9a1tnPj4yXT1rWyhrWyhrW2Q+PjJdfDApKzE2Pj4yXXwwKSsoa1tlPj4yXTw8NCk+PjJdO2k9QWgoa1tkPj4yXXwwLGtbZz4+Ml18MCl8MDtrWyhrW2Y+PjJdfDApKzgrKCgoa1trW2Y+PjJdPj4yXXwwKS0xfDApKjcyfDApKzQ+PjJdPWk7aT1rW2Y+PjJdfDA7cj1oO3JldHVybiBpfDB9ZnVuY3Rpb24gRUcoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wO2Y9cjtyPXIrMTZ8MDtjPWYrOHwwO2Q9Zis0fDA7ZT1mO2tbYz4+Ml09YTtrW2Q+PjJdPWI7aWYoIShrW2Q+PjJdfDApKXtyPWY7cmV0dXJufWtbZT4+Ml09a1soa1tkPj4yXXwwKSsyOD4+Ml07c3Yoa1tjPj4yXXwwLGtbKGtbZT4+Ml18MCkrMTY+PjJdfDApO292KGtbYz4+Ml18MCxrWyhrW2U+PjJdfDApKzIwPj4yXXwwKTtwdihrW2M+PjJdfDAsa1soa1tlPj4yXXwwKSs4Pj4yXXwwKTtzdihrW2M+PjJdfDAsa1soa1tkPj4yXXwwKSsxMj4+Ml18MCk7Ymcoa1tjPj4yXXwwLGtbZD4+Ml18MCk7cj1mO3JldHVybn1mdW5jdGlvbiBGRyhhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wO2c9cjtyPXIrMTZ8MDtmPWcrMTJ8MDtjPWcrOHwwO2Q9Zys0fDA7ZT1nO2tbYz4+Ml09YTtrW2Q+PjJdPWI7aWYoKGtbYz4+Ml18MCk9PTB8KGtbZD4+Ml18MCk9PTApe2tbZj4+Ml09MTtmPWtbZj4+Ml18MDtyPWc7cmV0dXJuIGZ8MH1rW2U+PjJdPTA7d2hpbGUoMSl7aWYoKGtbZT4+Ml18MCk+PShrW2tbZD4+Ml0+PjJdfDApKXtjPTg7YnJlYWt9aWYoKEN6KGtbYz4+Ml18MCxrWyhrWyhrW2Q+PjJdfDApKzQ+PjJdfDApKygoa1tlPj4yXXwwKSoyMHwwKSs0Pj4yXXwwKXwwKT49MCl7Yz02O2JyZWFrfWtbZT4+Ml09KGtbZT4+Ml18MCkrMX1pZigoY3wwKT09Nil7a1tmPj4yXT0xO2Y9a1tmPj4yXXwwO3I9ZztyZXR1cm4gZnwwfWVsc2UgaWYoKGN8MCk9PTgpe2tbZj4+Ml09MDtmPWtbZj4+Ml18MDtyPWc7cmV0dXJuIGZ8MH1yZXR1cm4gMH1mdW5jdGlvbiBHRyhhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MDtlPXI7cj1yKzE2fDA7Yz1lKzR8MDtkPWU7a1tjPj4yXT1hO2tbZD4+Ml09YjtpZigobFtrW2Q+PjJdPj4wXXwwKSE9MTUyKXtyPWU7cmV0dXJuIDB9aWYoKGpbKGtbZD4+Ml18MCkrMzI+PjFdfDApPDApe2E9KGtbYz4+Ml18MCkrMjB8MDtpW2E+PjBdPWxbYT4+MF18MjtyPWU7cmV0dXJuIDB9aWYoKGtbKGtbKGtbYz4+Ml18MCkrMjQ+PjJdfDApKyhqWyhrW2Q+PjJdfDApKzMyPj4xXTw8Mik+PjJdfDApPDApe3I9ZTtyZXR1cm4gMH1hPShrW2M+PjJdfDApKzIwfDA7aVthPj4wXT1sW2E+PjBdfDE7cj1lO3JldHVybiAwfWZ1bmN0aW9uIEhHKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTA7Zz1yO3I9cisxNnwwO2Q9ZysxMnwwO2U9Zys4fDA7Zj1nKzR8MDtjPWc7a1tlPj4yXT1hO2tbZj4+Ml09YjtpZigobVsoa1tlPj4yXXwwKSs1MD4+MV18MCkhPShtWyhrW2Y+PjJdfDApKzUwPj4xXXwwKSl7a1tkPj4yXT0wO2Y9a1tkPj4yXXwwO3I9ZztyZXR1cm4gZnwwfWlmKChsWyhrW2U+PjJdfDApKzU0Pj4wXXwwKSE9KGxbKGtbZj4+Ml18MCkrNTQ+PjBdfDApKXtrW2Q+PjJdPTA7Zj1rW2Q+PjJdfDA7cj1nO3JldHVybiBmfDB9a1tjPj4yXT0wO3doaWxlKDEpe2lmKChrW2M+PjJdfDApPj0obVsoa1tmPj4yXXwwKSs1MD4+MV18MCkpe2M9MTc7YnJlYWt9aWYoKGpbKGtbKGtbZj4+Ml18MCkrND4+Ml18MCkrKGtbYz4+Ml08PDEpPj4xXXwwKSE9KGpbKGtbKGtbZT4+Ml18MCkrND4+Ml18MCkrKGtbYz4+Ml08PDEpPj4xXXwwKSl7Yz04O2JyZWFrfWlmKChqWyhrWyhrW2Y+PjJdfDApKzQ+PjJdfDApKyhrW2M+PjJdPDwxKT4+MV18MCk9PS0yPyhVeShrWyhrWyhrWyhrW2Y+PjJdfDApKzQwPj4yXXwwKSs0Pj4yXXwwKSsoKGtbYz4+Ml18MCkqMjB8MCk+PjJdfDAsa1soa1soa1soa1tlPj4yXXwwKSs0MD4+Ml18MCkrND4+Ml18MCkrKChrW2M+PjJdfDApKjIwfDApPj4yXXwwLC0xKXwwKSE9MDowKXtjPTExO2JyZWFrfWlmKChsWyhrWyhrW2Y+PjJdfDApKzI4Pj4yXXwwKSsoa1tjPj4yXXwwKT4+MF18MCkhPShsWyhrWyhrW2U+PjJdfDApKzI4Pj4yXXwwKSsoa1tjPj4yXXwwKT4+MF18MCkpe2M9MTM7YnJlYWt9aWYoYmUoa1soa1soa1tmPj4yXXwwKSszMj4+Ml18MCkrKGtbYz4+Ml08PDIpPj4yXXwwLGtbKGtbKGtbZT4+Ml18MCkrMzI+PjJdfDApKyhrW2M+PjJdPDwyKT4+Ml18MCl8MCl7Yz0xNTticmVha31rW2M+PjJdPShrW2M+PjJdfDApKzF9aWYoKGN8MCk9PTgpe2tbZD4+Ml09MDtmPWtbZD4+Ml18MDtyPWc7cmV0dXJuIGZ8MH1lbHNlIGlmKChjfDApPT0xMSl7a1tkPj4yXT0wO2Y9a1tkPj4yXXwwO3I9ZztyZXR1cm4gZnwwfWVsc2UgaWYoKGN8MCk9PTEzKXtrW2Q+PjJdPTA7Zj1rW2Q+PjJdfDA7cj1nO3JldHVybiBmfDB9ZWxzZSBpZigoY3wwKT09MTUpe2tbZD4+Ml09MDtmPWtbZD4+Ml18MDtyPWc7cmV0dXJuIGZ8MH1lbHNlIGlmKChjfDApPT0xNylpZihVeShrWyhrW2Y+PjJdfDApKzM2Pj4yXXwwLGtbKGtbZT4+Ml18MCkrMzY+PjJdfDAsLTEpfDApe2tbZD4+Ml09MDtmPWtbZD4+Ml18MDtyPWc7cmV0dXJuIGZ8MH1lbHNle2tbZD4+Ml09MTtmPWtbZD4+Ml18MDtyPWc7cmV0dXJuIGZ8MH1yZXR1cm4gMH1mdW5jdGlvbiBJRyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MDtkPXI7cj1yKzE2fDA7ZT1kKzh8MDtnPWQrNHwwO2Y9ZDtrW2U+PjJdPWE7a1tnPj4yXT1iO2tbZj4+Ml09YztrWyhrW2c+PjJdfDApKzQ+PjJdPWtbZT4+Ml07a1trW2c+PjJdPj4yXT1rWyhrW2U+PjJdfDApKzQ0OD4+Ml07a1soa1tlPj4yXXwwKSs0NDg+PjJdPWtbZj4+Ml07cj1kO3JldHVybn1mdW5jdGlvbiBKRyhhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGk9MCxqPTAsbD0wLG09MCxuPTAsbz0wO289cjtyPXIrNjR8MDtlPW8rNTJ8MDtmPW8rNDh8MDtnPW8rNDR8MDtoPW8rNDB8MDtqPW8rMTZ8MDtuPW8rMTJ8MDttPW8rOHwwO2k9bys0fDA7bD1vO2tbZT4+Ml09YTtrW2Y+PjJdPWI7a1tnPj4yXT1jO2tbaD4+Ml09ZDtrW2k+PjJdPWtba1tlPj4yXT4+Ml07Yz1QaChrW2k+PjJdfDAsa1soa1tmPj4yXXwwKSs2ND4+Ml18MCl8MDtrW2w+PjJdPWM7Yz1TeShrW2k+PjJdfDAsa1tnPj4yXXwwLDApfDA7a1tnPj4yXT1jO2M9aXcoa1tpPj4yXXwwLDAsMCwwKXwwO2tbbT4+Ml09YztpZihrW20+PjJdfDApe2M9QWgoa1tpPj4yXXwwLGtba1tmPj4yXT4+Ml18MCl8MDtrWyhrW20+PjJdfDApKzgrOD4+Ml09YztjPUFoKGtbaT4+Ml18MCxrWyhrWyhrW2k+PjJdfDApKzE2Pj4yXXwwKSsoa1tsPj4yXTw8NCk+PjJdfDApfDA7a1soa1ttPj4yXXwwKSs4KzQ+PjJdPWN9Yz1hdyhrW2U+PjJdfDAsMCxrW20+PjJdfDAsa1tnPj4yXXwwLDAsMCwwLDEzMTA3MiwwLDApfDA7a1tuPj4yXT1jO0ZCKGosMTIsa1toPj4yXXwwKTtadihrW2U+PjJdfDAsa1tuPj4yXXwwLGopfDA7cHYoa1tpPj4yXXwwLGtbbj4+Ml18MCk7cj1vO3JldHVybn1mdW5jdGlvbiBLRyhhLGIsYyxkLGUsZixnLGgpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO3ZhciBsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MCxFPTAsRj0wLEc9MCxIPTAsST0wO0Y9cjtyPXIrOTZ8MDtxPUYrODh8MDtIPUYrODR8MDtzPUYrODB8MDtsPUYrNzZ8MDttPUYrNzJ8MDtuPUYrNjh8MDtHPUYrNjR8MDt0PUYrNjB8MDtFPUYrNTZ8MDt3PUYrNTJ8MDt4PUYrNDh8MDtJPUYrNDR8MDt6PUYrNDB8MDtBPUYrMzZ8MDt5PUYrMzJ8MDtCPUYrMjh8MDtDPUYrMjR8MDtEPUYrMjB8MDtwPUYrMTZ8MDtvPUYrOHwwO3Y9Ris0fDA7dT1GO2tbcT4+Ml09YTtrW0g+PjJdPWI7a1tzPj4yXT1jO2tbbD4+Ml09ZDtrW20+PjJdPWU7a1tuPj4yXT1mO2tbRz4+Ml09ZztrW3Q+PjJdPWg7a1tFPj4yXT1rWyhrW3E+PjJdfDApKzg+PjJdO2tbST4+Ml09a1trW3E+PjJdPj4yXTtjPWN5KGtbST4+Ml18MCxrW3M+PjJdfDApfDA7a1t6Pj4yXT1jO2tbeT4+Ml09Misoalsoa1tzPj4yXXwwKSszND4+MV18MCk7a1twPj4yXT1rWyhrW0g+PjJdfDApKzgrNDQ+PjJdO2M9KGtbcT4+Ml18MCkrNDB8MDtnPWtbYz4+Ml18MDtrW2M+PjJdPWcrMTtrW3c+PjJdPWc7Zz1zeChrW0U+PjJdfDAsMTA3LGtbdz4+Ml18MCxrW3k+PjJdfDApfDA7a1t1Pj4yXT1nO2tbQj4+Ml09KGtbKGtbcT4+Ml18MCkrNDQ+PjJdfDApKzE7Zz0oa1txPj4yXXwwKSs0NHwwO2tbZz4+Ml09KGtbZz4+Ml18MCkrKGtbeT4+Ml18MCk7Zz0oa1txPj4yXXwwKSs0NHwwO2M9KGtbZz4+Ml18MCkrMXwwO2tbZz4+Ml09YztrW0M+PjJdPWM7Yz0oa1txPj4yXXwwKSs0NHwwO2c9KGtbYz4+Ml18MCkrMXwwO2tbYz4+Ml09ZztrW0Q+PjJdPWc7Zz1BRChrW3E+PjJdfDAsa1tIPj4yXXwwLGtbRz4+Ml18MCwwLDAsNCwwKXwwO2tbQT4+Ml09ZztpZighKGtbQT4+Ml18MCkpe3I9RjtyZXR1cm59c3goa1tFPj4yXXwwLDEyMyxrW3A+PjJdfDAsa1tCPj4yXXwwKXwwO2lmKGtbbT4+Ml18MCkkQShrW3E+PjJdfDAsa1ttPj4yXXwwLChrW0I+PjJdfDApKzF8MCk7ZWxzZSBzeChrW0U+PjJdfDAsMTIzLGtbcD4+Ml18MCwoa1tCPj4yXXwwKSsxfDApfDA7a1t4Pj4yXT0wO3doaWxlKDEpe2lmKChrW3g+PjJdfDApPj0oalsoa1tzPj4yXXwwKSszND4+MV18MCkpYnJlYWs7aWYoKGtbKGtbbj4+Ml18MCkrKGtbeD4+Ml08PDIpPj4yXXwwKT49MCkkQShrW3E+PjJdfDAsa1soa1soa1tsPj4yXXwwKSs0Pj4yXXwwKSsoKGtbKGtbbj4+Ml18MCkrKGtbeD4+Ml08PDIpPj4yXXwwKSoyMHwwKT4+Ml18MCwoa1tCPj4yXXwwKSsyKyhrW3g+PjJdfDApfDApO2Vsc2UgdHgoa1tFPj4yXXwwLDE1NixrW3A+PjJdfDAsa1t4Pj4yXXwwLChrW0I+PjJdfDApKzIrKGtbeD4+Ml18MCl8MCl8MDtrW3g+PjJdPShrW3g+PjJdfDApKzF9bD1MRyhrW0E+PjJdfDAsbyl8MDtrW3Y+PjJdPWw7bD1rW0U+PjJdfDA7aWYoa1t2Pj4yXXwwKXtSQShsLGtbdT4+Ml18MCl8MDtpZighKGtbKGtbcT4+Ml18MCkrMTI0Pj4yXXwwKSlpWyhrW3E+PjJdfDApKzIwPj4wXT0wfWVsc2V7dHgobCw5OSxrW0I+PjJdfDAsa1t5Pj4yXXwwLGtbQz4+Ml18MCl8MDtzeChrW0U+PjJdfDAsMTE0LGtbdz4+Ml18MCxrW0Q+PjJdfDApfDA7dHgoa1tFPj4yXXwwLDExNSxrW3c+PjJdfDAsa1tDPj4yXXwwLGtbRD4+Ml18MCl8MH1hOmRvIGlmKCEoa1t2Pj4yXXwwKSl7QkQoa1tBPj4yXXwwKTtJPWFBKGtbRT4+Ml18MCw1NyxrW3c+PjJdfDApfDA7a1t1Pj4yXT1JO2tbeD4+Ml09MDt3aGlsZSgxKXtpZigoa1t4Pj4yXXwwKT49KGtbeT4+Ml18MCkpYnJlYWsgYTt0eChrW0U+PjJdfDAsOTYsa1t3Pj4yXXwwLGtbeD4+Ml18MCwoa1tCPj4yXXwwKSsoa1t4Pj4yXXwwKXwwKXwwO2tbeD4+Ml09KGtbeD4+Ml18MCkrMX19d2hpbGUoMCk7bkQoa1txPj4yXXwwLGtbcz4+Ml18MCk7d3goa1tFPj4yXXwwLDEyLDAsa1t5Pj4yXXwwLGtbQj4+Ml18MCxrW3o+PjJdfDAsLTEwKXwwO1RoKGtbRT4+Ml18MCwoKGtbdD4+Ml18MCk9PTEwPzI6a1t0Pj4yXXwwKSYyNTUpO2R5KGtbcT4+Ml18MCk7aWYoIShrW3Y+PjJdfDApKXtzeChrW0U+PjJdfDAsNyxrW3c+PjJdfDAsKGtbdT4+Ml18MCkrMXwwKXwwO2hBKGtbRT4+Ml18MCxrW3U+PjJdfDApO3N4KGtbRT4+Ml18MCwxMTEsa1t3Pj4yXXwwLDApfDA7cj1GO3JldHVybn1lbHNle0JEKGtbQT4+Ml18MCk7cj1GO3JldHVybn19ZnVuY3Rpb24gTEcoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTA7ZD1yO3I9cisxNnwwO2M9ZCs0fDA7ZT1kO2tbYz4+Ml09YTtrW2U+PjJdPWI7YT1rW2U+PjJdfDA7Yj0oa1tjPj4yXXwwKSsyMHwwO2tbYT4+Ml09a1tiPj4yXTtrW2ErND4+Ml09a1tiKzQ+PjJdO3I9ZDtyZXR1cm4gbFsoa1tjPj4yXXwwKSs0NT4+MF18MHwwfWZ1bmN0aW9uIE1HKGEpe2E9YXwwO3ZhciBiPTAsYz0wO2M9cjtyPXIrMTZ8MDtiPWM7a1tiPj4yXT1hO2lmKCEoa1soa1tiPj4yXXwwKSs0Pj4yXXwwKSl7cj1jO3JldHVybn1rWyhrWyhrW2I+PjJdfDApKzQ+PjJdfDApKzQ0OD4+Ml09a1trW2I+PjJdPj4yXTtrWyhrW2I+PjJdfDApKzQ+PjJdPTA7cj1jO3JldHVybn1mdW5jdGlvbiBORyhhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGk9MCxqPTAsbD0wLG09MCxuPTAsbz0wO289cjtyPXIrNDh8MDtpPW8rMzJ8MDtlPW8rMjh8MDtqPW8rMjR8MDtsPW8rMjB8MDttPW8rMTZ8MDtuPW8rMTJ8MDtoPW8rOHwwO2Y9bys0fDA7Zz1vO2tbZT4+Ml09YTtrW2o+PjJdPWI7a1tsPj4yXT1jO2tbbT4+Ml09ZDtkbyBpZigoKGtba1tqPj4yXT4+Ml18MCkrKGtbbD4+Ml18MCl8MCk+Pj4wPihrWyhrW2o+PjJdfDApKzQ+PjJdfDApPj4+MCl7a1tmPj4yXT0oa1trW2o+PjJdPj4yXXwwKSsoa1tsPj4yXXwwKTtiPWN4KGtbZT4+Ml18MCxrW2o+PjJdfDAsODArKCgoa1tmPj4yXXwwKS0xfDApKjcyfDApfDAsMCl8MDtrW2g+PjJdPWI7aWYoa1toPj4yXXwwKXtrW2o+PjJdPWtbaD4+Ml07Yj0oKCgodXUoa1tlPj4yXXwwLGtbaD4+Ml18MCl8MCktODB8MCk+Pj4wKS83MnwwKSsxfDA7a1tnPj4yXT1iO2tbKGtbaj4+Ml18MCkrND4+Ml09a1tnPj4yXTticmVha31rW2k+PjJdPWtbaj4+Ml07bj1rW2k+PjJdfDA7cj1vO3JldHVybiBufDB9d2hpbGUoMCk7a1tuPj4yXT0oa1trW2o+PjJdPj4yXXwwKS0xO3doaWxlKDEpe2lmKChrW24+PjJdfDApPChrW20+PjJdfDApKWJyZWFrO2U9KGtbaj4+Ml18MCkrOCsoKChrW24+PjJdfDApKyhrW2w+PjJdfDApfDApKjcyfDApfDA7YT0oa1tqPj4yXXwwKSs4Kygoa1tuPj4yXXwwKSo3MnwwKXwwO2Q9ZSs3MnwwO2Rve2tbZT4+Ml09a1thPj4yXTtlPWUrNHwwO2E9YSs0fDB9d2hpbGUoKGV8MCk8KGR8MCkpO2tbbj4+Ml09KGtbbj4+Ml18MCkrLTF9Yj1rW2o+PjJdfDA7a1tiPj4yXT0oa1tiPj4yXXwwKSsoa1tsPj4yXXwwKTtkUygoa1tqPj4yXXwwKSs4Kygoa1ttPj4yXXwwKSo3MnwwKXwwLDAsKGtbbD4+Ml18MCkqNzJ8MCl8MDtrW24+PjJdPWtbbT4+Ml07d2hpbGUoMSl7aWYoKGtbbj4+Ml18MCk+PSgoa1ttPj4yXXwwKSsoa1tsPj4yXXwwKXwwKSlicmVhaztrWyhrW2o+PjJdfDApKzgrKChrW24+PjJdfDApKjcyfDApKzQ0Pj4yXT0tMTtrW24+PjJdPShrW24+PjJdfDApKzF9a1tpPj4yXT1rW2o+PjJdO249a1tpPj4yXXwwO3I9bztyZXR1cm4gbnwwfWZ1bmN0aW9uIE9HKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLG49MCxvPTAscD0wLHE9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MCxFPTAsRj0wLEc9MCxIPTAsST0wLEo9MCxLPTAsTD0wLE09MCxOPTAsTz0wLFA9MCxRPTA7UT1yO3I9cisxMjh8MDt5PVErMTEyfDA7dT1RKzEwOHwwO3Y9USsxMDR8MDt6PVErMTAwfDA7Zj1RKzk2fDA7QT1RKzkyfDA7aD1RKzg4fDA7ST1RKzg0fDA7Sz1RKzgwfDA7TD1RKzc2fDA7Sj1RKzcyfDA7TT1RKzY4fDA7Rz1RKzY0fDA7RD1RKzYwfDA7Qz1RKzU2fDA7Tz1RKzUyfDA7Tj1RKzQ4fDA7Qj1RKzQ0fDA7Zz1RKzQwfDA7bz1RKzM2fDA7cT1RKzMyfDA7bj1RKzI4fDA7cD1RKzI0fDA7cz1RKzIwfDA7dz1RKzE2fDA7eD1RKzEyfDA7Rj1RKzh8MDtFPVErMTE2fDA7UD1RKzR8MDtIPVE7a1t1Pj4yXT1hO2tbdj4+Ml09YjtrW3o+PjJdPWM7a1tmPj4yXT1kO2tbQT4+Ml09ZTtrW2g+PjJdPWtbKGtbdT4+Ml18MCkrNDQ4Pj4yXTtrW0I+PjJdPWtba1t1Pj4yXT4+Ml07aWYobVsoa1tCPj4yXXwwKSs2ND4+MV0mMSl7a1t5Pj4yXT0wO1A9a1t5Pj4yXXwwO3I9UTtyZXR1cm4gUHwwfWtbSj4+Ml09a1soa1t2Pj4yXXwwKSsyOD4+Ml07a1tOPj4yXT0oa1tKPj4yXXwwKSs4Kygoa1t6Pj4yXXwwKSo3MnwwKTtrW0Q+PjJdPWtbKGtbTj4+Ml18MCkrNDQ+PjJdO2tbSz4+Ml09a1soa1tOPj4yXXwwKSsyMD4+Ml07ZG8gaWYoa1tBPj4yXXwwKXtpZihrW2Y+PjJdfDApe2tbeT4+Ml09MDtQPWtbeT4+Ml18MDtyPVE7cmV0dXJuIFB8MH1pZigoa1trW0o+PjJdPj4yXXwwKT4xKXtrW3k+PjJdPTA7UD1rW3k+PjJdfDA7cj1RO3JldHVybiBQfDB9aWYoISgoa1soa1t2Pj4yXXwwKSszMj4+Ml18MCkhPTA/KGtbKGtbKGtbdj4+Ml18MCkrMzI+PjJdfDApKzQ+PjJdJjIwOTcxNTJ8MCkhPTA6MCkpdD0xMDtpZigoKHR8MCk9PTEwPygoTnooa1trW3Y+PjJdPj4yXXwwKXwwKSYyMDk3MTUyfDApPT0wOjApPygoTnooa1soa1t2Pj4yXXwwKSs0ND4+Ml18MCl8MCkmMjA5NzE1MnwwKT09MDowKWJyZWFrO2tbeT4+Ml09MDtQPWtbeT4+Ml18MDtyPVE7cmV0dXJuIFB8MH13aGlsZSgwKTtrW00+PjJdPWtbKGtbSz4+Ml18MCkrMjg+PjJdO2lmKChrWyhrW0s+PjJdfDApKzU2Pj4yXXwwKSE9MD8oa1soa1t2Pj4yXXwwKSs1Nj4+Ml18MCkhPTA6MCl7a1t5Pj4yXT0wO1A9a1t5Pj4yXXwwO3I9UTtyZXR1cm4gUHwwfWlmKGtbKGtbSz4+Ml18MCkrNjA+PjJdfDApe2tbeT4+Ml09MDtQPWtbeT4+Ml18MDtyPVE7cmV0dXJuIFB8MH1pZigoa1soa1t2Pj4yXXwwKSs4Pj4yXSYyNTZ8MCkhPTA/KGtbKGtbSz4+Ml18MCkrNTY+PjJdfDApIT0wOjApe2tbeT4+Ml09MDtQPWtbeT4+Ml18MDtyPVE7cmV0dXJuIFB8MH1pZighKGtba1tNPj4yXT4+Ml18MCkpe2tbeT4+Ml09MDtQPWtbeT4+Ml18MDtyPVE7cmV0dXJuIFB8MH1pZihrWyhrW0s+PjJdfDApKzg+PjJdJjEpe2tbeT4+Ml09MDtQPWtbeT4+Ml18MDtyPVE7cmV0dXJuIFB8MH1pZigoa1soa1tLPj4yXXwwKSs1Nj4+Ml18MCkhPTA/KChrW2Y+PjJdfDApIT0wPzE6KGtba1tKPj4yXT4+Ml18MCk+MSk6MCl7a1t5Pj4yXT0wO1A9a1t5Pj4yXXwwO3I9UTtyZXR1cm4gUHwwfWlmKChrW0E+PjJdfDApIT0wPyhrWyhrW3Y+PjJdfDApKzg+PjJdJjF8MCkhPTA6MCl7a1t5Pj4yXT0wO1A9a1t5Pj4yXXwwO3I9UTtyZXR1cm4gUHwwfWlmKChrWyhrW3Y+PjJdfDApKzQ0Pj4yXXwwKSE9MD8oa1soa1tLPj4yXXwwKSs0ND4+Ml18MCkhPTA6MCl7a1t5Pj4yXT0wO1A9a1t5Pj4yXXwwO3I9UTtyZXR1cm4gUHwwfWlmKChrW2Y+PjJdfDApIT0wPyhrWyhrW0s+PjJdfDApKzQ0Pj4yXXwwKSE9MDowKXtrW3k+PjJdPTA7UD1rW3k+PjJdfDA7cj1RO3JldHVybiBQfDB9aWYoKGtbKGtbSz4+Ml18MCkrNTY+PjJdfDApIT0wPyhrWyhrW3Y+PjJdfDApKzMyPj4yXXwwKSE9MDowKXtrW3k+PjJdPTA7UD1rW3k+PjJdfDA7cj1RO3JldHVybiBQfDB9aWYoKGtbKGtbSz4+Ml18MCkrNTY+PjJdfDApIT0wPyhrWyhrW3Y+PjJdfDApKzg+PjJdJjF8MCkhPTA6MCl7a1t5Pj4yXT0wO1A9a1t5Pj4yXXwwO3I9UTtyZXR1cm4gUHwwfWlmKGtbKGtbSz4+Ml18MCkrOD4+Ml0mMTIyODgpe2tbeT4+Ml09MDtQPWtbeT4+Ml18MDtyPVE7cmV0dXJuIFB8MH1pZigoa1soa1t2Pj4yXXwwKSs4Pj4yXSY4MTkyfDApIT0wPyhrWyhrW0s+PjJdfDApKzQ4Pj4yXXwwKSE9MDowKXtrW3k+PjJdPTA7UD1rW3k+PjJdfDA7cj1RO3JldHVybiBQfDB9aWYobFsoa1tOPj4yXXwwKSszNj4+MF0mMzIpe2tbeT4+Ml09MDtQPWtbeT4+Ml18MDtyPVE7cmV0dXJuIFB8MH1hOmRvIGlmKGtbKGtbSz4+Ml18MCkrNDg+PjJdfDApe2lmKGtbKGtbSz4+Ml18MCkrNDQ+PjJdfDApe2tbeT4+Ml09MDtQPWtbeT4+Ml18MDtyPVE7cmV0dXJuIFB8MH1kbyBpZighKGtbZj4+Ml18MCkpe2lmKGtbKGtbdj4+Ml18MCkrOD4+Ml0mMSlicmVhaztpZigoa1trW0o+PjJdPj4yXXwwKSE9MSlicmVhaztrW0w+PjJdPWtbSz4+Ml07d2hpbGUoMSl7aWYoIShrW0w+PjJdfDApKWJyZWFrO2lmKGtbKGtbTD4+Ml18MCkrOD4+Ml0mOSl7dD02MjticmVha31pZigoa1soa1tMPj4yXXwwKSs0OD4+Ml18MCkhPTA/KGxbKGtbTD4+Ml18MCkrND4+MF18MCkhPTExNjowKXt0PTYyO2JyZWFrfWlmKChrW2tbKGtbTD4+Ml18MCkrMjg+PjJdPj4yXXwwKTwxKXt0PTYyO2JyZWFrfWtbTD4+Ml09a1soa1tMPj4yXXwwKSs0OD4+Ml19aWYoKHR8MCk9PTYyKXtrW3k+PjJdPTA7UD1rW3k+PjJdfDA7cj1RO3JldHVybiBQfDB9aWYoIShrWyhrW3Y+PjJdfDApKzQ0Pj4yXXwwKSlicmVhayBhO2tbZz4+Ml09MDt3aGlsZSgxKXtpZigoa1tnPj4yXXwwKT49KGtba1soa1t2Pj4yXXwwKSs0ND4+Ml0+PjJdfDApKWJyZWFrIGE7aWYoIShtWyhrWyhrWyhrW3Y+PjJdfDApKzQ0Pj4yXXwwKSs0Pj4yXXwwKSsoKGtbZz4+Ml18MCkqMjB8MCkrMTY+PjFdfDApKWJyZWFrO2tbZz4+Ml09KGtbZz4+Ml18MCkrMX1rW3k+PjJdPTA7UD1rW3k+PjJdfDA7cj1RO3JldHVybiBQfDB9d2hpbGUoMCk7a1t5Pj4yXT0wO1A9a1t5Pj4yXXwwO3I9UTtyZXR1cm4gUHwwfXdoaWxlKDApO2tbKGtbdT4+Ml18MCkrNDQ4Pj4yXT1rWyhrW04+PjJdfDApKzg+PjJdO2t4KGtbdT4+Ml18MCwyMSwwLDAsMCl8MDtrWyhrW3U+PjJdfDApKzQ0OD4+Ml09a1toPj4yXTtrW0s+PjJdPWtbKGtbSz4+Ml18MCkrNDg+PjJdO3doaWxlKDEpe2lmKCEoa1tLPj4yXXwwKSlicmVhaztrW3E+PjJdPWtbKGtbdj4+Ml18MCkrNDQ+PjJdO2tbbj4+Ml09a1soa1t2Pj4yXXwwKSs1Nj4+Ml07a1twPj4yXT1rWyhrW3Y+PjJdfDApKzYwPj4yXTtrW3M+PjJdPWtbKGtbdj4+Ml18MCkrNDg+PjJdO2tbKGtbdj4+Ml18MCkrNDQ+PjJdPTA7a1soa1t2Pj4yXXwwKSsyOD4+Ml09MDtrWyhrW3Y+PjJdfDApKzQ4Pj4yXT0wO2tbKGtbdj4+Ml18MCkrNTY+PjJdPTA7a1soa1t2Pj4yXXwwKSs2MD4+Ml09MDtmPWl5KGtbQj4+Ml18MCxrW3Y+PjJdfDAsMCl8MDtrW28+PjJdPWY7a1soa1t2Pj4yXXwwKSs2MD4+Ml09a1twPj4yXTtrWyhrW3Y+PjJdfDApKzU2Pj4yXT1rW24+PjJdO2tbKGtbdj4+Ml18MCkrNDQ+PjJdPWtbcT4+Ml07a1soa1t2Pj4yXXwwKSsyOD4+Ml09a1tKPj4yXTtpWyhrW3Y+PjJdfDApKzQ+PjBdPTExNjtmPWtbcz4+Ml18MDtpZighKGtbbz4+Ml18MCkpa1soa1t2Pj4yXXwwKSs0OD4+Ml09ZjtlbHNle2tbKGtbbz4+Ml18MCkrNDg+PjJdPWY7aWYoa1tzPj4yXXwwKWtbKGtbcz4+Ml18MCkrNTI+PjJdPWtbbz4+Ml07a1soa1tvPj4yXXwwKSs1Mj4+Ml09a1t2Pj4yXTtrWyhrW3Y+PjJdfDApKzQ4Pj4yXT1rW28+PjJdfWlmKGlbKGtbQj4+Ml18MCkrNjk+PjBdfDApe3Q9Nzg7YnJlYWt9a1tLPj4yXT1rWyhrW0s+PjJdfDApKzQ4Pj4yXX1pZigodHwwKT09Nzgpe2tbeT4+Ml09MTtQPWtbeT4+Ml18MDtyPVE7cmV0dXJuIFB8MH10PWtbKGtbTj4+Ml18MCkrMjA+PjJdfDA7a1tMPj4yXT10O2tbSz4+Ml09dDtiZyhrW0I+PjJdfDAsa1soa1tOPj4yXXwwKSs0Pj4yXXwwKTtiZyhrW0I+PjJdfDAsa1soa1tOPj4yXXwwKSs4Pj4yXXwwKTtiZyhrW0I+PjJdfDAsa1soa1tOPj4yXXwwKSsxMj4+Ml18MCk7a1soa1tOPj4yXXwwKSs0Pj4yXT0wO2tbKGtbTj4+Ml18MCkrOD4+Ml09MDtrWyhrW04+PjJdfDApKzEyPj4yXT0wO2tbKGtbTj4+Ml18MCkrMjA+PjJdPTA7aWYoa1soa1tOPj4yXXwwKSsxNj4+Ml18MCl7a1t3Pj4yXT1rWyhrW04+PjJdfDApKzE2Pj4yXTtpZigobVsoa1t3Pj4yXXwwKSszNj4+MV18MCk9PTEpe2Y9a1t1Pj4yXXwwO2lmKGtbKGtbdT4+Ml18MCkrMTI0Pj4yXXwwKWY9a1tmKzEyND4+Ml18MDtrW3g+PjJdPWY7a1soa1t3Pj4yXXwwKSs2OD4+Ml09a1soa1t4Pj4yXXwwKSs0NjQ+PjJdO2tbKGtbeD4+Ml18MCkrNDY0Pj4yXT1rW3c+PjJdfWVsc2V7eD0oa1t3Pj4yXXwwKSszNnwwO2pbeD4+MV09KGpbeD4+MV18MCkrLTE8PDE2Pj4xNn1rWyhrW04+PjJdfDApKzE2Pj4yXT0wfWtbST4+Ml09a1t2Pj4yXTt3aGlsZSgxKXtpZighKGtbST4+Ml18MCkpYnJlYWs7aVtFPj4wXT0wO2tbTT4+Ml09a1soa1tLPj4yXXwwKSsyOD4+Ml07a1tGPj4yXT1rW2tbTT4+Ml0+PjJdO2tbSj4+Ml09a1soa1tJPj4yXXwwKSsyOD4+Ml07aWYoIShrW0o+PjJdfDApKXt4PWl3KGtbQj4+Ml18MCwwLDAsMCl8MDtrWyhrW0k+PjJdfDApKzI4Pj4yXT14O2tbSj4+Ml09eDtpZighKGtbSj4+Ml18MCkpYnJlYWt9ZWxzZSBpW0U+PjBdPWlbKGtbTj4+Ml18MCkrMzY+PjBdfDA7aWYoKGtbRj4+Ml18MCk+MT8oeD1ORyhrW0I+PjJdfDAsa1tKPj4yXXwwLChrW0Y+PjJdfDApLTF8MCwoa1t6Pj4yXXwwKSsxfDApfDAsa1tKPj4yXT14LGtbKGtbST4+Ml18MCkrMjg+PjJdPXgsKGlbKGtbQj4+Ml18MCkrNjk+PjBdfDApIT0wKTowKWJyZWFrO2tbQz4+Ml09MDt3aGlsZSgxKXtpZigoa1tDPj4yXXwwKT49KGtbRj4+Ml18MCkpYnJlYWs7dXYoa1tCPj4yXXwwLGtbKGtbSj4+Ml18MCkrOCsoKChrW0M+PjJdfDApKyhrW3o+PjJdfDApfDApKjcyfDApKzUyPj4yXXwwKTtmPShrW0o+PjJdfDApKzgrKCgoa1tDPj4yXXwwKSsoa1t6Pj4yXXwwKXwwKSo3MnwwKXwwO2M9KGtbTT4+Ml18MCkrOCsoKGtbQz4+Ml18MCkqNzJ8MCl8MDtnPWYrNzJ8MDtkb3trW2Y+PjJdPWtbYz4+Ml07Zj1mKzR8MDtjPWMrNHwwfXdoaWxlKChmfDApPChnfDApKTtmPShrW00+PjJdfDApKzgrKChrW0M+PjJdfDApKjcyfDApfDA7Zz1mKzcyfDA7ZG97a1tmPj4yXT0wO2Y9Zis0fDB9d2hpbGUoKGZ8MCk8KGd8MCkpO2tbQz4+Ml09KGtbQz4+Ml18MCkrMX1pWyhrW0o+PjJdfDApKzgrKChrW3o+PjJdfDApKjcyfDApKzM2Pj4wXT1pW0U+PjBdfDA7a1tHPj4yXT1rW2tbST4+Ml0+PjJdO2tbQz4+Ml09MDt3aGlsZSgxKXtpZigoa1tDPj4yXXwwKT49KGtba1tHPj4yXT4+Ml18MCkpYnJlYWs7aWYoIShrWyhrWyhrW0c+PjJdfDApKzQ+PjJdfDApKygoa1tDPj4yXXwwKSoyMHwwKSs0Pj4yXXwwKSl7eD1BaChrW0I+PjJdfDAsa1soa1soa1tHPj4yXXwwKSs0Pj4yXXwwKSsoKGtbQz4+Ml18MCkqMjB8MCkrOD4+Ml18MCl8MDtrW1A+PjJdPXg7aHgoa1tQPj4yXXwwKTtrWyhrWyhrW0c+PjJdfDApKzQ+PjJdfDApKygoa1tDPj4yXXwwKSoyMHwwKSs0Pj4yXT1rW1A+PjJdfWtbQz4+Ml09KGtbQz4+Ml18MCkrMX1pZihrWyhrW0s+PjJdfDApKzQ0Pj4yXXwwKXtrW0g+PjJdPWtbKGtbSz4+Ml18MCkrNDQ+PjJdO2tbQz4+Ml09MDt3aGlsZSgxKXtpZigoa1tDPj4yXXwwKT49KGtba1tIPj4yXT4+Ml18MCkpYnJlYWs7alsoa1soa1tIPj4yXXwwKSs0Pj4yXXwwKSsoKGtbQz4+Ml18MCkqMjB8MCkrMTY+PjFdPTA7a1tDPj4yXT0oa1tDPj4yXXwwKSsxfWtbKGtbST4+Ml18MCkrNDQ+PjJdPWtbSD4+Ml07a1soa1tLPj4yXXwwKSs0ND4+Ml09MH14PVN5KGtbQj4+Ml18MCxrWyhrW0s+PjJdfDApKzMyPj4yXXwwLDApfDA7a1tPPj4yXT14O2lmKGtbQT4+Ml18MCl7a1soa1tJPj4yXXwwKSs0MD4+Ml09a1soa1tJPj4yXXwwKSszMj4+Ml07a1soa1tJPj4yXXwwKSszMj4+Ml09a1tPPj4yXTt3PWtbQj4+Ml18MDt4PVN5KGtbQj4+Ml18MCxrWyhrW0s+PjJdfDApKzQwPj4yXXwwLDApfDA7eD1Heih3LHgsa1soa1tJPj4yXXwwKSs0MD4+Ml18MCl8MDtrWyhrW0k+PjJdfDApKzQwPj4yXT14O3g9X3koa1tCPj4yXXwwLGtbKGtbSz4+Ml18MCkrMzY+PjJdfDAsMCl8MDtrWyhrW0k+PjJdfDApKzM2Pj4yXT14fWVsc2V7eD1HeihrW0I+PjJdfDAsa1tPPj4yXXwwLGtbKGtbST4+Ml18MCkrMzI+PjJdfDApfDA7a1soa1tJPj4yXXwwKSszMj4+Ml09eH14SChrW0I+PjJdfDAsa1tJPj4yXXwwLGtbRD4+Ml18MCxrW2tbSz4+Ml0+PjJdfDAsMCk7eD0oa1tJPj4yXXwwKSs4fDA7a1t4Pj4yXT1rW3g+PjJdfGtbKGtbSz4+Ml18MCkrOD4+Ml0mMTtpZihrWyhrW0s+PjJdfDApKzU2Pj4yXXwwKXtrWyhrW0k+PjJdfDApKzU2Pj4yXT1rWyhrW0s+PjJdfDApKzU2Pj4yXTtrWyhrW0s+PjJdfDApKzU2Pj4yXT0wfWtbST4+Ml09a1soa1tJPj4yXXwwKSs0OD4+Ml07a1tLPj4yXT1rWyhrW0s+PjJdfDApKzQ4Pj4yXX1wdihrW0I+PjJdfDAsa1tMPj4yXXwwKTtrW3k+PjJdPTE7UD1rW3k+PjJdfDA7cj1RO3JldHVybiBQfDB9ZnVuY3Rpb24gUEcoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTAsRT0wLEY9MCxHPTAsSD0wLEk9MCxKPTAsSz0wLEw9MCxNPTAsTj0wLE89MCxQPTAsUT0wLFI9MCxTPTAsVD0wLFU9MCxWPTAsVz0wLFg9MCxZPTAsWj0wLF89MDtfPXI7cj1yKzI1NnwwO1o9Xys4fDA7ZD1fO2U9XysyNDB8MDtmPV8rMjM2fDA7Zz1fKzIzMnwwO2g9XysyMjh8MDtUPV8rMjI0fDA7UT1fKzIyMHwwO1k9XysyMTZ8MDt0PV8rMTkyfDA7SD1fKzE4NHwwO3M9XysxODB8MDtCPV8rMTc2fDA7Qz1fKzE3MnwwO209XysxNjh8MDtGPV8rMTY0fDA7Vz1fKzE2MHwwO0c9XysyNDR8MDtSPV8rMTU2fDA7TD1fKzE1MnwwO089XysxNDh8MDtuPV8rMTQ0fDA7WD1fKzEyMHwwO3g9XysxMTZ8MDt2PV8rMTEyfDA7ej1fKzEwOHwwO0k9XysxMDR8MDtVPV8rMTAwfDA7Vj1fKzk2fDA7eT1fKzkyfDA7dz1fKzg4fDA7QT1fKzg0fDA7TT1fKzgwfDA7UD1fKzc2fDA7bz1fKzcyfDA7RD1fKzQ4fDA7Uz1fKzQwfDA7Sj1fKzM2fDA7dT1fKzMyfDA7Sz1fKzI4fDA7Tj1fKzI0fDA7cT1fKzIwfDA7RT1fKzE2fDA7cD1fKzEyfDA7a1tmPj4yXT1hO2tbZz4+Ml09YjtrW2g+PjJdPWM7a1tUPj4yXT0wO2tbSD4+Ml09MDtrW0I+PjJdPTA7a1tDPj4yXT0wO2tbcz4+Ml09a1trW2Y+PjJdPj4yXTtrW1E+PjJdPWtbKGtbZz4+Ml18MCkrNDg+PjJdO2E9a1toPj4yXXwwO2tbdD4+Ml09a1thPj4yXTtrW3QrND4+Ml09a1thKzQ+PjJdO2tbdCs4Pj4yXT1rW2ErOD4+Ml07a1t0KzEyPj4yXT1rW2ErMTI+PjJdO2tbdCsxNj4+Ml09a1thKzE2Pj4yXTtrW3QrMjA+PjJdPWtbYSsyMD4+Ml07YTpkbyBpZighKGtbKGtbUT4+Ml18MCkrNDQ+PjJdfDApKXtiPWtbZj4+Ml18MDtpZihrWyhrW1E+PjJdfDApKzU2Pj4yXXwwKXtZPWF6KGxbKGtbZz4+Ml18MCkrND4+MF18MCl8MDtrW1o+PjJdPVk7T2goYiwzNTg3OSxaKTtrW1Q+PjJdPTE7YnJlYWt9Wj1ueChiKXwwO2tbWT4+Ml09WjtpZigobFt0Pj4wXXwwKT09MTIpe3N4KGtbWT4+Ml18MCwxMDcsa1t0Kzg+PjJdfDAsa1trW2tbZz4+Ml0+PjJdPj4yXXwwKXwwO2lbdD4+MF09MTR9aWYoa1soa1tnPj4yXXwwKSs4Pj4yXSYxMDI0KXtaPXpIKGtbZj4+Ml18MCxrW2c+PjJdfDAsdCl8MDtrW1Q+PjJdPVo7YnJlYWt9YjpkbyBpZihrWyhrW2c+PjJdfDApKzg+PjJdJjgxOTIpQUgoa1tmPj4yXXwwLGtbZz4+Ml18MCx0KTtlbHNle2lmKGtbKGtbZz4+Ml18MCkrNDQ+PjJdfDApe1o9Qkgoa1tmPj4yXXwwLGtbZz4+Ml18MCxrW2g+PjJdfDApfDA7a1tlPj4yXT1aO1o9a1tlPj4yXXwwO3I9XztyZXR1cm4gWnwwfXN3aXRjaChsWyhrW2c+PjJdfDApKzQ+PjBdfDApe2Nhc2UgMTE2OntrW20+PjJdPTA7a1soa1tRPj4yXXwwKSsxMj4+Ml09a1soa1tnPj4yXXwwKSsxMj4+Ml07a1soa1tRPj4yXXwwKSsxNj4+Ml09a1soa1tnPj4yXXwwKSsxNj4+Ml07a1soa1tRPj4yXXwwKSs1Nj4+Ml09a1soa1tnPj4yXXwwKSs1Nj4+Ml07a1soa1tRPj4yXXwwKSs2MD4+Ml09a1soa1tnPj4yXXwwKSs2MD4+Ml07a1tCPj4yXT1rWyhrW2Y+PjJdfDApKzQyND4+Ml07Wj1adihrW2Y+PjJdfDAsa1tRPj4yXXwwLHQpfDA7a1tUPj4yXT1aO2tbKGtbZz4+Ml18MCkrNTY+PjJdPTA7a1soa1tnPj4yXXwwKSs2MD4+Ml09MDtpZihrW1Q+PjJdfDApYnJlYWsgYTtrWyhrW2c+PjJdfDApKzQ4Pj4yXT0wO2tbKGtbZz4+Ml18MCkrMTI+PjJdPWtbKGtbUT4+Ml18MCkrMTI+PjJdO2tbKGtbZz4+Ml18MCkrMTY+PjJdPWtbKGtbUT4+Ml18MCkrMTY+PjJdO2lmKChrWyhrW2c+PjJdfDApKzEyPj4yXXwwKSE9MD8oWj1hQShrW1k+PjJdfDAsMjIsa1soa1tnPj4yXXwwKSsxMj4+Ml18MCl8MCxrW20+PjJdPVosKGtbKGtbZz4+Ml18MCkrMTY+PjJdfDApIT0wKTowKXR4KGtbWT4+Ml18MCwxNDYsa1soa1tnPj4yXXwwKSsxMj4+Ml18MCwoa1soa1tnPj4yXXwwKSsxNj4+Ml18MCkrMXwwLGtbKGtbZz4+Ml18MCkrMTY+PjJdfDApfDA7a1tDPj4yXT1rWyhrW2Y+PjJdfDApKzQyND4+Ml07Wj1adihrW2Y+PjJdfDAsa1tnPj4yXXwwLHQpfDA7a1tUPj4yXT1aO2tbSD4+Ml09a1soa1tnPj4yXXwwKSs0OD4+Ml07a1soa1tnPj4yXXwwKSs0OD4+Ml09a1tRPj4yXTtaPXhFKGpbKGtbZz4+Ml18MCkrNj4+MV18MCxqWyhrW1E+PjJdfDApKzY+PjFdfDApfDA7alsoa1tnPj4yXXwwKSs2Pj4xXT1aO2lmKCgoa1soa1tRPj4yXXwwKSs1Nj4+Ml18MCkhPTA/KFo9KFB5KGtbKGtbUT4+Ml18MCkrNTY+PjJdfDAsRil8MCkhPTAsWiYoa1tGPj4yXXwwKT4wKTowKT8oWD1qWyhrW2c+PjJdfDApKzY+PjFdfDAsWj1rW0Y+PjJdfDAsKFh8MCk+KChXaihaLCgoWnwwKTwwKTw8MzE+PjMxKXwwKTw8MTY+PjE2fDApKTowKXtaPWtbRj4+Ml18MDtaPVdqKFosKChafDApPDApPDwzMT4+MzEpfDA7alsoa1tnPj4yXXwwKSs2Pj4xXT1afWlmKCEoa1ttPj4yXXwwKSlicmVhayBiO2hBKGtbWT4+Ml18MCxrW20+PjJdfDApO2JyZWFrIGJ9Y2FzZSAxMTU6Y2FzZSAxMTc6e2lbRz4+MF09MDtrW1I+PjJdPTE7aWYoKGxbdD4+MF18MCk9PShrW1I+PjJdfDApKWtbVz4+Ml09a1t0Kzg+PjJdO2Vsc2V7Vj0oa1tmPj4yXXwwKSs0MHwwO1o9a1tWPj4yXXwwO2tbVj4+Ml09WisxO2tbVz4+Ml09WjtaPXN4KGtbWT4+Ml18MCwxMDcsa1tXPj4yXXwwLDApfDA7a1tuPj4yXT1aO2tbKGtbZz4+Ml18MCkrMjA+PjJdPWtbbj4+Ml07Wj0od3ooa1tnPj4yXXwwKXwwKSs4fDA7a1taPj4yXT1rW1o+PjJdfDMyfUZCKFgsa1tSPj4yXXwwLGtbVz4+Ml18MCk7a1tCPj4yXT1rWyhrW2Y+PjJdfDApKzQyND4+Ml07Wj1adihrW2Y+PjJdfDAsa1tRPj4yXXwwLFgpfDA7a1tUPj4yXT1aO2lmKGtbVD4+Ml18MClicmVhayBhO2lmKChsWyhrW2c+PjJdfDApKzQ+PjBdfDApPT0xMTcpaVtHPj4wXT0yO2Vsc2UgaVtHPj4wXT0xO2tbKGtbZz4+Ml18MCkrNDg+PjJdPTA7a1tMPj4yXT1rWyhrW2c+PjJdfDApKzU2Pj4yXTtrWyhrW2c+PjJdfDApKzU2Pj4yXT0wO2tbTz4+Ml09a1soa1tnPj4yXXwwKSs2MD4+Ml07a1soa1tnPj4yXXwwKSs2MD4+Ml09MDtpW1g+PjBdPWlbRz4+MF18MDtrW0M+PjJdPWtbKGtbZj4+Ml18MCkrNDI0Pj4yXTtaPVp2KGtbZj4+Ml18MCxrW2c+PjJdfDAsWCl8MDtrW1Q+PjJdPVo7b3Yoa1tzPj4yXXwwLGtbKGtbZz4+Ml18MCkrNDQ+PjJdfDApO2tbSD4+Ml09a1soa1tnPj4yXXwwKSs0OD4+Ml07a1soa1tnPj4yXXwwKSs0OD4+Ml09a1tRPj4yXTtrWyhrW2c+PjJdfDApKzQ0Pj4yXT0wO2lmKChsWyhrW2c+PjJdfDApKzQ+PjBdfDApPT0xMTUpe1o9eEUoalsoa1tnPj4yXXwwKSs2Pj4xXXwwLGpbKGtbUT4+Ml18MCkrNj4+MV18MCl8MDtqWyhrW2c+PjJdfDApKzY+PjFdPVp9c3Yoa1tzPj4yXXwwLGtbKGtbZz4+Ml18MCkrNTY+PjJdfDApO2tbKGtbZz4+Ml18MCkrNTY+PjJdPWtbTD4+Ml07a1soa1tnPj4yXXwwKSs2MD4+Ml09a1tPPj4yXTtrWyhrW2c+PjJdfDApKzEyPj4yXT0wO2tbKGtbZz4+Ml18MCkrMTY+PjJdPTA7aWYoKGxbdD4+MF18MCk9PShrW1I+PjJdfDApKWJyZWFrIGI7aWYoKGxbdD4+MF18MCk9PTkpe2tbST4+Ml09a1tnPj4yXTt3aGlsZSgxKXtpZighKGtbKGtbST4+Ml18MCkrNDg+PjJdfDApKWJyZWFrO2tbST4+Ml09a1soa1tJPj4yXXwwKSs0OD4+Ml19bkgoa1tmPj4yXXwwLGtbKGtbST4+Ml18MCkrMjg+PjJdfDAsa1trW0k+PjJdPj4yXXwwKX1aPWVBKGtbWT4+Ml18MCl8MDtrW3Y+PjJdPVo7Wj1lQShrW1k+PjJdfDApfDA7a1t4Pj4yXT1aO1VHKGtbZj4+Ml18MCxrW2c+PjJdfDAsa1t2Pj4yXXwwKTtzeChrW1k+PjJdfDAsNTcsa1tXPj4yXXwwLGtbdj4+Ml18MCl8MDtaPUd4KGtbWT4+Ml18MCl8MDtrW3o+PjJdPVo7YUgoa1tmPj4yXXwwLGtbZz4+Ml18MCxrW2tbZz4+Ml0+PjJdfDAsa1tXPj4yXXwwLDAsMCx0LGtbeD4+Ml18MCxrW3Y+PjJdfDApO2lBKGtbWT4+Ml18MCxrW3g+PjJdfDApO3N4KGtbWT4+Ml18MCw3LGtbVz4+Ml18MCxrW3o+PjJdfDApfDA7aUEoa1tZPj4yXXwwLGtbdj4+Ml18MCk7c3goa1tZPj4yXXwwLDExMSxrW1c+PjJdfDAsMCl8MDticmVhayBifWRlZmF1bHQ6e1o9KGtbZj4+Ml18MCkrNDB8MDtYPWtbWj4+Ml18MDtrW1o+PjJdPVgrMTtrW1U+PjJdPVg7WD0oa1tmPj4yXXwwKSs0MHwwO1o9a1tYPj4yXXwwO2tbWD4+Ml09WisxO2tbVj4+Ml09WjtaPXN4KGtbWT4+Ml18MCwxMDcsa1tVPj4yXXwwLDApfDA7a1tvPj4yXT1aO2tbKGtbZz4+Ml18MCkrMjA+PjJdPWtbbz4+Ml07Wj0od3ooa1tnPj4yXXwwKXwwKSs4fDA7a1taPj4yXT1rW1o+PjJdfDMyO0ZCKEQsMSxrW1U+PjJdfDApO2tbQj4+Ml09a1soa1tmPj4yXXwwKSs0MjQ+PjJdO1o9WnYoa1tmPj4yXXwwLGtbUT4+Ml18MCxEKXwwO2tbVD4+Ml09WjtpZihrW1Q+PjJdfDApYnJlYWsgYTtaPXN4KGtbWT4+Ml18MCwxMDcsa1tWPj4yXXwwLDApfDA7a1tvPj4yXT1aO2tbKGtbZz4+Ml18MCkrMjArND4+Ml09a1tvPj4yXTtrWyhrW2c+PjJdfDApKzQ4Pj4yXT0wO2tbTT4+Ml09a1soa1tnPj4yXXwwKSs1Nj4+Ml07a1soa1tnPj4yXXwwKSs1Nj4+Ml09MDtrW1A+PjJdPWtbKGtbZz4+Ml18MCkrNjA+PjJdO2tbKGtbZz4+Ml18MCkrNjA+PjJdPTA7a1tEKzg+PjJdPWtbVj4+Ml07a1tDPj4yXT1rWyhrW2Y+PjJdfDApKzQyND4+Ml07Wj1adihrW2Y+PjJdfDAsa1tnPj4yXXwwLEQpfDA7a1tUPj4yXT1aO2tbSD4+Ml09a1soa1tnPj4yXXwwKSs0OD4+Ml07a1soa1tnPj4yXXwwKSs0OD4+Ml09a1tRPj4yXTtpZigoalsoa1tnPj4yXXwwKSs2Pj4xXXwwKT4oalsoa1tRPj4yXXwwKSs2Pj4xXXwwKSlqWyhrW2c+PjJdfDApKzY+PjFdPWpbKGtbUT4+Ml18MCkrNj4+MV18MDtzdihrW3M+PjJdfDAsa1soa1tnPj4yXXwwKSs1Nj4+Ml18MCk7a1soa1tnPj4yXXwwKSs1Nj4+Ml09a1tNPj4yXTtrWyhrW2c+PjJdfDApKzYwPj4yXT1rW1A+PjJdO2lmKChsW3Q+PjBdfDApPT05KXtrW0o+PjJdPWtbZz4+Ml07d2hpbGUoMSl7aWYoIShrWyhrW0o+PjJdfDApKzQ4Pj4yXXwwKSlicmVhaztrW0o+PjJdPWtbKGtbSj4+Ml18MCkrNDg+PjJdfW5IKGtbZj4+Ml18MCxrWyhrW0o+PjJdfDApKzI4Pj4yXXwwLGtba1tKPj4yXT4+Ml18MCl9Wj1lQShrW1k+PjJdfDApfDA7a1t3Pj4yXT1aO1o9ZUEoa1tZPj4yXXwwKXwwO2tbeT4+Ml09WjtVRyhrW2Y+PjJdfDAsa1tnPj4yXXwwLGtbdz4+Ml18MCk7c3goa1tZPj4yXXwwLDU3LGtbVT4+Ml18MCxrW3c+PjJdfDApfDA7Wj1GeChrW2Y+PjJdfDApfDA7a1tTPj4yXT1aO1o9c3goa1tZPj4yXXwwLDEyMSxrW1U+PjJdfDAsa1tTPj4yXXwwKXwwO2tbQT4+Ml09WjtTaChrW1k+PjJdfDAsMzAsa1tWPj4yXXwwLGtbeT4+Ml18MCxrW1M+PjJdfDAsMCl8MDtIeChrW2Y+PjJdfDAsa1tTPj4yXXwwKTthSChrW2Y+PjJdfDAsa1tnPj4yXXwwLGtba1tnPj4yXT4+Ml18MCxrW1U+PjJdfDAsMCwwLHQsa1t5Pj4yXXwwLGtbdz4+Ml18MCk7aUEoa1tZPj4yXXwwLGtbeT4+Ml18MCk7c3goa1tZPj4yXXwwLDcsa1tVPj4yXXwwLGtbQT4+Ml18MCl8MDtpQShrW1k+PjJdfDAsa1t3Pj4yXXwwKTtzeChrW1k+PjJdfDAsMTExLGtbVj4+Ml18MCwwKXwwO3N4KGtbWT4+Ml18MCwxMTEsa1tVPj4yXXwwLDApfDA7YnJlYWsgYn19fXdoaWxlKDApO0NIKGtbZj4+Ml18MCxsWyhrW2c+PjJdfDApKzQ+PjBdfDAsa1tCPj4yXXwwLGtbQz4+Ml18MCwobFsoa1tnPj4yXXwwKSs0Pj4wXXwwKSE9MTE2JjEpO2lmKGtbKGtbZz4+Ml18MCkrOD4+Ml0mMzIpe2tbRT4+Ml09a1trW2tbZz4+Ml0+PjJdPj4yXTtaPXNBKGtbcz4+Ml18MCxrW0U+PjJdfDAsMSl8MDtrW0s+PjJdPVo7aWYoIShrW0s+PjJdfDApKXtrW1Q+PjJdPTc7YnJlYWt9a1t1Pj4yXT0wO2tbcT4+Ml09KGtbSz4+Ml18MCkrMjA7d2hpbGUoMSl7aWYoKGtbdT4+Ml18MCk+PShrW0U+PjJdfDApKWJyZWFrO1o9REgoa1tmPj4yXXwwLGtbZz4+Ml18MCxrW3U+PjJdfDApfDA7a1trW3E+PjJdPj4yXT1aO2lmKCEoa1trW3E+PjJdPj4yXXwwKSlrW2tbcT4+Ml0+PjJdPWtbKGtbcz4+Ml18MCkrOD4+Ml07a1t1Pj4yXT0oa1t1Pj4yXXwwKSsxO2tbcT4+Ml09KGtbcT4+Ml18MCkrNH1rW04+PjJdPWtbZz4+Ml07d2hpbGUoMSl7aWYoIShrW04+PjJdfDApKWJyZWFrO2tbdT4+Ml09MDt3aGlsZSgxKXtpZigoa1t1Pj4yXXwwKT49MilicmVhaztrW3A+PjJdPWtbKGtbTj4+Ml18MCkrMjArKGtbdT4+Ml08PDIpPj4yXTtpZigoa1twPj4yXXwwKTwwKWJyZWFrO25BKGtbWT4+Ml18MCxrW3A+PjJdfDAsa1tFPj4yXXwwKTtYPWtbWT4+Ml18MDtaPWtbcD4+Ml18MDtXaChYLFoseEEoa1tLPj4yXXwwKXwwLC02KTtrWyhrW04+PjJdfDApKzIwKyhrW3U+PjJdPDwyKT4+Ml09LTE7a1t1Pj4yXT0oa1t1Pj4yXXwwKSsxfWtbTj4+Ml09a1soa1tOPj4yXXwwKSs0OD4+Ml19dEEoa1tLPj4yXXwwKX19ZWxzZXtaPWtbZj4+Ml18MDtZPWF6KGxbKGtbZz4+Ml18MCkrND4+MF18MCl8MDtrW2Q+PjJdPVk7T2goWiwzNTgzMSxkKTtrW1Q+PjJdPTF9d2hpbGUoMCk7a1soa1toPj4yXXwwKSsxMj4+Ml09a1t0KzEyPj4yXTtrWyhrW2g+PjJdfDApKzE2Pj4yXT1rW3QrMTY+PjJdO3B2KGtbcz4+Ml18MCxrW0g+PjJdfDApO2tbZT4+Ml09a1tUPj4yXTtaPWtbZT4+Ml18MDtyPV87cmV0dXJuIFp8MH1mdW5jdGlvbiBRRyhhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTA7Yz1yO3I9cisxNnwwO2Q9Yys0fDA7Yj1jO2tbZD4+Ml09YTtrW2I+PjJdPTA7THooa1tkPj4yXXwwLGIpO3I9YztyZXR1cm4ga1tiPj4yXXwwfWZ1bmN0aW9uIFJHKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaT0wLGo9MCxtPTAsbj0wLG89MCxwPTA7cD1yO3I9ciszMnwwO2U9cCsyOHwwO2Y9cCsyNHwwO2c9cCsyMHwwO2g9cCsxNnwwO2k9cCsxMnwwO209cCs4fDA7aj1wKzR8MDtuPXA7a1tmPj4yXT1hO2tbZz4+Ml09YjtrW2g+PjJdPWM7a1tpPj4yXT1kO2tbaj4+Ml09MDtpZighKGtbaD4+Ml18MCkpe2tbZT4+Ml09MDtvPWtbZT4+Ml18MDtyPXA7cmV0dXJuIG98MH1rW24+PjJdPWtbZz4+Ml07d2hpbGUoMSl7aWYoIShrW24+PjJdfDApKWJyZWFrO2lmKGtbKGtbbj4+Ml18MCkrOD4+Ml0mODIwMCl7bz02O2JyZWFrfWtbbj4+Ml09a1soa1tuPj4yXXwwKSs0OD4+Ml19aWYoKG98MCk9PTYpe2tbZT4+Ml09MDtvPWtbZT4+Ml18MDtyPXA7cmV0dXJuIG98MH1pZihrWyhrW2c+PjJdfDApKzU2Pj4yXXwwKXtrW2U+PjJdPTA7bz1rW2U+PjJdfDA7cj1wO3JldHVybiBvfDB9d2hpbGUoMSl7aWYoKGxba1toPj4yXT4+MF18MHwwKSE9MjgpYnJlYWs7bz1SRyhrW2Y+PjJdfDAsa1tnPj4yXXwwLGtbKGtbaD4+Ml18MCkrMTY+PjJdfDAsa1tpPj4yXXwwKXwwO2tbaj4+Ml09KGtbaj4+Ml18MCkrbztrW2g+PjJdPWtbKGtbaD4+Ml18MCkrMTI+PjJdfWlmKGtbKGtbaD4+Ml18MCkrND4+Ml0mMSl7a1tlPj4yXT0wO289a1tlPj4yXXwwO3I9cDtyZXR1cm4gb3wwfWE6ZG8gaWYockUoa1toPj4yXXwwLGtbaT4+Ml18MCl8MCl7a1tqPj4yXT0oa1tqPj4yXXwwKSsxO3doaWxlKDEpe2lmKCEoa1tnPj4yXXwwKSlicmVhayBhO289U3koa1tmPj4yXXwwLGtbaD4+Ml18MCwwKXwwO2tbbT4+Ml09bztvPXdIKGtbZj4+Ml18MCxrW20+PjJdfDAsa1tpPj4yXXwwLGtba1tnPj4yXT4+Ml18MCl8MDtrW20+PjJdPW87bz1HeihrW2Y+PjJdfDAsa1soa1tnPj4yXXwwKSszMj4+Ml18MCxrW20+PjJdfDApfDA7a1soa1tnPj4yXXwwKSszMj4+Ml09bztrW2c+PjJdPWtbKGtbZz4+Ml18MCkrNDg+PjJdfX13aGlsZSgwKTtrW2U+PjJdPWtbaj4+Ml07bz1rW2U+PjJdfDA7cj1wO3JldHVybiBvfDB9ZnVuY3Rpb24gU0coYSl7YT1hfDA7dmFyIGI9MCxjPTA7Yj1yO3I9cisxNnwwO2M9YjtrW2M+PjJdPWE7aVsoa1tjPj4yXXwwKSsxOT4+MF09MDtrWyhrW2M+PjJdfDApKzI4Pj4yXT0wO3I9YjtyZXR1cm59ZnVuY3Rpb24gVEcoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTA7cD1yO3I9cis0OHwwO2U9cCszNnwwO2Y9cCszMnwwO2c9cCsyOHwwO3E9cCsyNHwwO2w9cCsyMHwwO249cCsxNnwwO289cCsxMnwwO2g9cCs4fDA7aj1wKzR8MDttPXA7a1tlPj4yXT1hO2tbZj4+Ml09YjtrW2c+PjJdPWM7a1txPj4yXT1kO2tbaD4+Ml09a1trW2U+PjJdPj4yXTtrW2w+PjJdPWtba1tmPj4yXT4+Ml07YT1zQShrW2g+PjJdfDAsKGtbbD4+Ml18MCktKGtbZz4+Ml18MCl8MCwoa1txPj4yXXwwKSsxfDApfDA7a1tuPj4yXT1hO2lmKCEoa1tuPj4yXXwwKSl7cT1rW24+PjJdfDA7cj1wO3JldHVybiBxfDB9a1tqPj4yXT1rW2c+PjJdO2tbbz4+Ml09KGtbKGtbZj4+Ml18MCkrND4+Ml18MCkrKChrW2c+PjJdfDApKjIwfDApO3doaWxlKDEpe2lmKChrW2o+PjJdfDApPj0oa1tsPj4yXXwwKSlicmVhaztxPXB5KGtbZT4+Ml18MCxrW2tbbz4+Ml0+PjJdfDApfDA7a1ttPj4yXT1xO2lmKCEoa1ttPj4yXXwwKSlrW20+PjJdPWtbKGtbaD4+Ml18MCkrOD4+Ml07a1soa1tuPj4yXXwwKSsyMCsoKGtbaj4+Ml18MCktKGtbZz4+Ml18MCk8PDIpPj4yXT1rW20+PjJdO2lbKGtbKGtbbj4+Ml18MCkrMTY+PjJdfDApKygoa1tqPj4yXXwwKS0oa1tnPj4yXXwwKSk+PjBdPWlbKGtbbz4+Ml18MCkrMTI+PjBdfDA7a1tqPj4yXT0oa1tqPj4yXXwwKSsxO2tbbz4+Ml09KGtbbz4+Ml18MCkrMjB9cT1rW24+PjJdfDA7cj1wO3JldHVybiBxfDB9ZnVuY3Rpb24gVUcoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGk9MCxsPTAsbT0wO209cjtyPXIrMzJ8MDtkPW0rMjR8MDtlPW0rMjB8MDtmPW0rMTZ8MDtsPW0rMTJ8MDtnPW0rOHwwO2g9bSs0fDA7aT1tO2tbZD4+Ml09YTtrW2U+PjJdPWI7a1tmPj4yXT1jO2tbbD4+Ml09MDtrW2c+PjJdPTA7aWYoa1soa1tlPj4yXXwwKSsxMj4+Ml18MCl7cj1tO3JldHVybn1PQyhrW2Q+PjJdfDApO2lmKCEoa1soa1tlPj4yXXwwKSs1Nj4+Ml18MCkpe3I9bTtyZXR1cm59Yj0oa1tkPj4yXXwwKSs0NHwwO2E9KGtbYj4+Ml18MCkrMXwwO2tbYj4+Ml09YTtrW2c+PjJdPWE7a1soa1tlPj4yXXwwKSsxMj4+Ml09YTthPW54KGtbZD4+Ml18MCl8MDtrW2w+PjJdPWE7ZG8gaWYoUHkoa1soa1tlPj4yXXwwKSs1Nj4+Ml18MCxpKXwwKXtzeChrW2w+PjJdfDAsNzYsa1tpPj4yXXwwLGtbZz4+Ml18MCl8MDtpZighKGtbaT4+Ml18MCkpe2dBKGtbbD4+Ml18MCxrW2Y+PjJdfDApfDA7YnJlYWt9aWYoKGtbaT4+Ml18MCk+PTA/KGI9alsoa1tlPj4yXXwwKSs2Pj4xXXwwLGE9a1tpPj4yXXwwLChifDApPigoV2ooYSwoKGF8MCk8MCk8PDMxPj4zMSl8MCk8PDE2Pj4xNnwwKSk6MCl7YT1rW2k+PjJdfDA7YT1XaihhLCgoYXwwKTwwKTw8MzE+PjMxKXwwO2pbKGtbZT4+Ml18MCkrNj4+MV09YTthPShrW2U+PjJdfDApKzh8MDtrW2E+PjJdPWtbYT4+Ml18MTYzODR9fWVsc2V7JEEoa1tkPj4yXXwwLGtbKGtbZT4+Ml18MCkrNTY+PjJdfDAsa1tnPj4yXXwwKTthQShrW2w+PjJdfDAsMTcsa1tnPj4yXXwwKXwwO3N4KGtbbD4+Ml18MCwyMixrW2c+PjJdfDAsa1tmPj4yXXwwKXwwfXdoaWxlKDApO2lmKCEoa1soa1tlPj4yXXwwKSs2MD4+Ml18MCkpe3I9bTtyZXR1cm59Yj0oa1tkPj4yXXwwKSs0NHwwO2E9KGtbYj4+Ml18MCkrMXwwO2tbYj4+Ml09YTtrW2g+PjJdPWE7a1soa1tlPj4yXXwwKSsxNj4+Ml09YTthPShrW2Q+PjJdfDApKzQ0fDA7a1thPj4yXT0oa1thPj4yXXwwKSsxOyRBKGtbZD4+Ml18MCxrWyhrW2U+PjJdfDApKzYwPj4yXXwwLGtbaD4+Ml18MCk7YUEoa1tsPj4yXXwwLDE3LGtbaD4+Ml18MCl8MDt0eChrW2w+PjJdfDAsMTQ2LGtbZz4+Ml18MCwoa1toPj4yXXwwKSsxfDAsa1toPj4yXXwwKXwwO3I9bTtyZXR1cm59ZnVuY3Rpb24gVkcoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTA7ZD1yO3I9cisxNnwwO2Y9ZCs0fDA7ZT1kO2c9ZCs4fDA7a1tmPj4yXT1hO2tbZT4+Ml09YjtpW2c+PjBdPWM7Yz1pW2c+PjBdfDA7YT1vQShrW2Y+PjJdfDAsa1tlPj4yXXwwKXwwO2lbYT4+MF09YztyPWQ7cmV0dXJufWZ1bmN0aW9uIFdHKGEpe2E9YXwwO3ZhciBiPTAsYz0wO2M9cjtyPXIrMTZ8MDtiPWM7a1tiPj4yXT1hO3I9YztyZXR1cm4galsoa1tiPj4yXXwwKSs3Mj4+MV18MH1mdW5jdGlvbiBYRyhhKXthPWF8MDt2YXIgYj0wLGM9MDtjPXI7cj1yKzE2fDA7Yj1jO2tbYj4+Ml09YTtyPWM7cmV0dXJuIGxbKGtbYj4+Ml18MCkrNDc+PjBdfDB8MH1mdW5jdGlvbiBZRyhhKXthPWF8MDt2YXIgYj0wLGM9MDtjPXI7cj1yKzE2fDA7Yj1jO2tbYj4+Ml09YTtyPWM7cmV0dXJuIGlbKGtbYj4+Ml18MCkrNDM+PjBdfDB9ZnVuY3Rpb24gWkcoYSl7YT1hfDA7dmFyIGI9MCxjPTA7Yz1yO3I9cisxNnwwO2I9YztrW2I+PjJdPWE7cj1jO3JldHVybiBsWyhrW2I+PjJdfDApKzQ4Pj4wXXwwfDB9ZnVuY3Rpb24gX0coYSl7YT1hfDA7dmFyIGI9MCxjPTA7Yz1yO3I9cisxNnwwO2I9YztrW2I+PjJdPWE7cj1jO3JldHVybiBrWyhrW2I+PjJdfDApKzI4Pj4yXXwwfWZ1bmN0aW9uICRHKGEpe2E9YXwwO3ZhciBiPTAsYz0wO2M9cjtyPXIrMTZ8MDtiPWM7a1tiPj4yXT1hO3I9YztyZXR1cm4ga1soa1tiPj4yXXwwKSszMj4+Ml18MH1mdW5jdGlvbiBhSChhLGIsYyxkLGUsZixnLGgsail7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7dmFyIG49MCxvPTAscD0wLHE9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MCxFPTAsRj0wLEc9MCxIPTAsST0wLEo9MCxLPTAsTD0wLE09MCxOPTAsTz0wLFA9MCxRPTAsUj0wLFM9MCxUPTAsVT0wLFY9MDtWPXI7cj1yKzE0NHwwO1A9VisxMjR8MDtRPVYrMTIwfDA7dD1WKzExNnwwO249VisxMTJ8MDtSPVYrMTA4fDA7bz1WKzEwNHwwO0w9VisxMDB8MDt1PVYrOTZ8MDtTPVYrOTJ8MDtVPVYrODh8MDtEPVYrODR8MDtxPVYrODB8MDtUPVYrNzZ8MDtDPVYrNzJ8MDtPPVYrNjh8MDtOPVYrNjR8MDtNPVYrNjB8MDtwPVYrMTI4fDA7cz1WKzU2fDA7dz1WKzUyfDA7QT1WKzQ4fDA7eD1WKzQ0fDA7eT1WKzQwfDA7Rz1WKzM2fDA7dj1WKzMyfDA7Sj1WKzI4fDA7SD1WKzI0fDA7RT1WKzIwfDA7ST1WKzE2fDA7Sz1WKzEyfDA7ej1WKzh8MDtCPVYrNHwwO0Y9VjtrW1A+PjJdPWE7a1tRPj4yXT1iO2tbdD4+Ml09YztrW24+PjJdPWQ7a1tSPj4yXT1lO2tbbz4+Ml09ZjtrW0w+PjJdPWc7a1t1Pj4yXT1oO2tbUz4+Ml09ajtrW1U+PjJdPWtbKGtbUD4+Ml18MCkrOD4+Ml07a1tDPj4yXT1sW2tbTD4+Ml0+PjBdO2tbTz4+Ml09a1soa1tMPj4yXXwwKSs4Pj4yXTtrW00+PjJdPTA7aWYoa1tvPj4yXXwwKWo9bFsoa1tvPj4yXXwwKSsxPj4wXXwwO2Vsc2Ugaj0wO2tbcT4+Ml09ajtpZigoa1tSPj4yXXwwKSE9MD8oa1trW1I+PjJdPj4yXXwwKT09MDowKWtbUj4+Ml09MDtpZighKChrW1I+PjJdfDApIT0wfChrW3E+PjJdfDApIT0wKSlwSChrW1U+PjJdfDAsa1soa1tRPj4yXXwwKSsxNj4+Ml18MCxrW3U+PjJdfDApO2tbTj4+Ml09a1trW3Q+PjJdPj4yXTtpZihrWyhrW0w+PjJdfDApKzEyPj4yXXwwKXtpZigoKGtbKGtbTD4+Ml18MCkrMTI+PjJdfDApKyhrW04+PjJdfDApfDApPihrWyhrW1A+PjJdfDApKzQ0Pj4yXXwwKSl7ZD0oa1tQPj4yXXwwKSs0NHwwO2tbZD4+Ml09KGtbZD4+Ml18MCkrKGtbTj4+Ml18MCl9fWVsc2V7aWYoa1tSPj4yXXwwKXtrW00+PjJdPWtba1trW1I+PjJdPj4yXT4+Ml07aWYoISgobFsoa1tSPj4yXXwwKSsyOD4+MF18MCkmMSkpa1tNPj4yXT0oa1tNPj4yXXwwKSsxO2Q9KGtbUD4+Ml18MCkrNDR8MDtrW2Q+PjJdPShrW2Q+PjJdfDApKyhrW00+PjJdfDApfWtbKGtbTD4+Ml18MCkrMTI+PjJdPShrWyhrW1A+PjJdfDApKzQ0Pj4yXXwwKSsxO2Q9KGtbUD4+Ml18MCkrNDR8MDtrW2Q+PjJdPShrW2Q+PjJdfDApKyhrW04+PjJdfDApfWtbKGtbTD4+Ml18MCkrMTY+PjJdPWtbTj4+Ml07a1tUPj4yXT1rWyhrW0w+PjJdfDApKzEyPj4yXTthOmRvIGlmKChrW24+PjJdfDApPDApe2lmKChrW0M+PjJdfDApIT0zKXtpZigoa1tDPj4yXXwwKT09MTB8KGtbQz4+Ml18MCk9PTl8KGtbQz4+Ml18MCk9PTEzKWlbcD4+MF09MTtlbHNlIGlbcD4+MF09MDtrQihrW1A+PjJdfDAsa1t0Pj4yXXwwLGtbVD4+Ml18MCwwLGlbcD4+MF18MCl8MH19ZWxzZXtrW0Q+PjJdPTA7d2hpbGUoMSl7aWYoKGtbRD4+Ml18MCk+PShrW04+PjJdfDApKWJyZWFrIGE7dHgoa1tVPj4yXXwwLDk2LGtbbj4+Ml18MCxrW0Q+PjJdfDAsKGtbVD4+Ml18MCkrKGtbRD4+Ml18MCl8MCl8MDtrW0Q+PjJdPShrW0Q+PjJdfDApKzF9fXdoaWxlKDApO2lmKGtbcT4+Ml18MCl7c3dpdGNoKGxbKGtbbz4+Ml18MCkrMT4+MF18MHwwKXtjYXNlIDI6e2tbQT4+Ml09KGtbKGtbUD4+Ml18MCkrNDQ+PjJdfDApKzE7cT0oa1tQPj4yXXwwKSs0NHwwO2tbcT4+Ml09KGtbcT4+Ml18MCkrKGtbTj4+Ml18MCk7UkEoa1tVPj4yXXwwLGtbKGtbbz4+Ml18MCkrOD4+Ml18MCl8MDtxPW9BKGtbVT4+Ml18MCxrWyhrW28+PjJdfDApKzg+PjJdfDApfDA7a1tzPj4yXT1xO2lba1tzPj4yXT4+MF09Nzk7a1soa1tzPj4yXXwwKSs0Pj4yXT0xO2tbKGtbcz4+Ml18MCkrOD4+Ml09a1tBPj4yXTtzPUd4KGtbVT4+Ml18MCl8MDtrW3c+PjJdPXMrKGtbTj4+Ml18MCk7a1tEPj4yXT0wO3doaWxlKDEpe2lmKChrW0Q+PjJdfDApPj0oa1tOPj4yXXwwKSlicmVhaztqPXB5KGtbUD4+Ml18MCxrWyhrWyhrW3Q+PjJdfDApKzQ+PjJdfDApKygoa1tEPj4yXXwwKSoyMHwwKT4+Ml18MCl8MDtrW3g+PjJdPWo7aj1rW1U+PjJdfDA7aD0oa1tUPj4yXXwwKSsoa1tEPj4yXXwwKXwwO2lmKChrW0Q+PjJdfDApPCgoa1tOPj4yXXwwKS0xfDApKXR4KGosMzYsaCxrW3c+PjJdfDAsKGtbQT4+Ml18MCkrKGtbRD4+Ml18MCl8MCl8MDtlbHNlIHR4KGosMzcsaCxrW3U+PjJdfDAsKGtbQT4+Ml18MCkrKGtbRD4+Ml18MCl8MCl8MDtXaChrW1U+PjJdfDAsLTEsa1t4Pj4yXXwwLC00KTtUaChrW1U+PjJdfDAsLTEyOCk7a1tEPj4yXT0oa1tEPj4yXXwwKSsxfXR4KGtbVT4+Ml18MCw4NCxrW1Q+PjJdfDAsa1tBPj4yXXwwLChrW04+PjJdfDApLTF8MCl8MDticmVha31jYXNlIDE6e1JBKGtbVT4+Ml18MCxrWyhrW28+PjJdfDApKzg+PjJdfDApfDA7YnJlYWt9ZGVmYXVsdDpxSChrW1A+PjJdfDAsa1soa1tvPj4yXXwwKSs0Pj4yXXwwLGtbdT4+Ml18MCxrW04+PjJdfDAsa1tUPj4yXXwwKX1pZighKGtbUj4+Ml18MCkpcEgoa1tVPj4yXXwwLGtbKGtbUT4+Ml18MCkrMTY+PjJdfDAsa1t1Pj4yXXwwKX1iOmRvIHN3aXRjaChrW0M+PjJdfDApe2Nhc2UgMTp7TT1GeChrW1A+PjJdfDApfDA7a1t5Pj4yXT1NO3R4KGtbVT4+Ml18MCw5OSxrW1Q+PjJdfDAsa1tOPj4yXXwwLGtbeT4+Ml18MCl8MDtzeChrW1U+PjJdfDAsMTI2LGtbTz4+Ml18MCxrW3k+PjJdfDApfDA7SHgoa1tQPj4yXXwwLGtbeT4+Ml18MCk7YnJlYWt9Y2FzZSAyOnt0eChrW1U+PjJdfDAsMTI3LGtbTz4+Ml18MCxrW1Q+PjJdfDAsa1tOPj4yXXwwKXwwO2JyZWFrfWNhc2UgMTI6Y2FzZSAxNDpjYXNlIDY6Y2FzZSA1OntMPU1BKGtbUD4+Ml18MCwoa1tNPj4yXXwwKSsxfDApfDA7a1tHPj4yXT1MO3R4KGtbVT4+Ml18MCw5OSxrW1Q+PjJdfDAsa1tOPj4yXXwwLChrW0c+PjJdfDApKyhrW00+PjJdfDApfDApfDA7aWYoKGtbQz4+Ml18MCk9PTYpe049KEd4KGtbVT4+Ml18MCl8MCkrNHwwO2tbdj4+Ml09TjtTaChrW1U+PjJdfDAsMzEsKGtbTz4+Ml18MCkrMXwwLGtbdj4+Ml18MCxrW0c+PjJdfDAsMCl8MDtzeChrW1U+PjJdfDAsMTI2LChrW08+PjJdfDApKzF8MCxrW0c+PjJdfDApfDB9aj1rW1A+PjJdfDA7aWYoa1tSPj4yXXwwKXZIKGosa1tSPj4yXXwwLGtbUT4+Ml18MCwoa1tHPj4yXXwwKSsoa1tNPj4yXXwwKXwwLGtbVD4+Ml18MCwxLGtbTT4+Ml18MCk7ZWxzZXtUPUZ4KGopfDA7a1tKPj4yXT1UO3N4KGtbVT4+Ml18MCwxMTQsa1tPPj4yXXwwLGtbSj4+Ml18MCl8MDt0eChrW1U+PjJdfDAsMTE1LGtbTz4+Ml18MCxrW0c+PjJdfDAsa1tKPj4yXXwwKXwwO1RoKGtbVT4+Ml18MCw4KTtIeChrW1A+PjJdfDAsa1tKPj4yXXwwKX1QQShrW1A+PjJdfDAsa1tHPj4yXXwwLChrW00+PjJdfDApKzF8MCk7YnJlYWt9Y2FzZSAxMTp7aj1rW1A+PjJdfDA7aWYoa1tSPj4yXXwwKXt2SChqLGtbUj4+Ml18MCxrW1E+PjJdfDAsa1tUPj4yXXwwLGtbVD4+Ml18MCxrW04+PjJdfDAsa1tNPj4yXXwwKTticmVhayBifWVsc2V7TT1GeChqKXwwO2tbSD4+Ml09TTt3eChrW1U+PjJdfDAsOTksa1tUPj4yXXwwLGtbTj4+Ml18MCxrW0g+PjJdfDAsa1soa1tMPj4yXXwwKSs0Pj4yXXwwLGtbTj4+Ml18MCl8MDtlQihrW1A+PjJdfDAsa1tUPj4yXXwwLGtbTj4+Ml18MCk7c3goa1tVPj4yXXwwLDEyNixrW08+PjJdfDAsa1tIPj4yXXwwKXwwO0h4KGtbUD4+Ml18MCxrW0g+PjJdfDApO2JyZWFrIGJ9fWNhc2UgMzp7c3goa1tVPj4yXXwwLDc2LDEsa1tPPj4yXXwwKXwwO2JyZWFrfWNhc2UgMTA6e2lmKGtbUj4+Ml18MCl2SChrW1A+PjJdfDAsa1tSPj4yXXwwLGtbUT4+Ml18MCxrW1Q+PjJdfDAsa1tUPj4yXXwwLGtbTj4+Ml18MCxrW00+PjJdfDApO2JyZWFrfWNhc2UgOTpjYXNlIDEzOntpZihrW1I+PjJdfDApe3ZIKGtbUD4+Ml18MCxrW1I+PjJdfDAsa1tRPj4yXXwwLGtbVD4+Ml18MCxrW1Q+PjJdfDAsa1tOPj4yXXwwLGtbTT4+Ml18MCk7YnJlYWsgYn1qPWtbVT4+Ml18MDtpZigoa1tDPj4yXXwwKT09MTMpe2FBKGosMTYsa1soa1tMPj4yXXwwKSs4Pj4yXXwwKXwwO2JyZWFrIGJ9ZWxzZXtzeChqLDg3LGtbVD4+Ml18MCxrW04+PjJdfDApfDA7ZUIoa1tQPj4yXXwwLGtbVD4+Ml18MCxrW04+PjJdfDApO2JyZWFrIGJ9fWNhc2UgNzpjYXNlIDg6e2tbQj4+Ml09MDtrW0Y+PjJdPWtbKGtbTD4+Ml18MCkrMjA+PjJdO2tbRT4+Ml09a1trW0Y+PjJdPj4yXTtNPUZ4KGtbUD4+Ml18MCl8MDtrW0k+PjJdPU07TT1NQShrW1A+PjJdfDAsKGtbRT4+Ml18MCkrMnwwKXwwO2tbSz4+Ml09TTtrW3o+PjJdPShrW0s+PjJdfDApKyhrW0U+PjJdfDApKzE7aWYoKGtbQz4+Ml18MCk9PTgpe009U2goa1tVPj4yXXwwLDMxLChrW08+PjJdfDApKzF8MCwwLGtbVD4+Ml18MCxrW04+PjJdfDApfDA7a1tCPj4yXT1NfXR4KGtbVT4+Ml18MCw5OSxrW1Q+PjJdfDAsa1tOPj4yXXwwLGtbej4+Ml18MCl8MDtpZigoa1tDPj4yXXwwKT09OCl7c3goa1tVPj4yXXwwLDEyNiwoa1tPPj4yXXwwKSsxfDAsa1t6Pj4yXXwwKXwwO1RoKGtbVT4+Ml18MCwxNil9a1tEPj4yXT0wO3doaWxlKDEpe2o9a1tVPj4yXXwwO2lmKChrW0Q+PjJdfDApPj0oa1tFPj4yXXwwKSlicmVhaztzeChqLDg1LChrW1Q+PjJdfDApKyhtWyhrWyhrW0Y+PjJdfDApKzQ+PjJdfDApKygoa1tEPj4yXXwwKSoyMHwwKSsxNj4+MV18MCktMXwwLChrW0s+PjJdfDApKyhrW0Q+PjJdfDApfDApfDA7a1tEPj4yXT0oa1tEPj4yXXwwKSsxfXN4KGosMTEzLGtbTz4+Ml18MCwoa1tLPj4yXXwwKSsoa1tFPj4yXXwwKXwwKXwwO3R4KGtbVT4+Ml18MCw5OSxrW0s+PjJdfDAsKGtbRT4+Ml18MCkrMnwwLGtbST4+Ml18MCl8MDtzeChrW1U+PjJdfDAsMTI2LGtbTz4+Ml18MCxrW0k+PjJdfDApfDA7aWYoa1tCPj4yXXwwKWhBKGtbVT4+Ml18MCxrW0I+PjJdfDApO0h4KGtbUD4+Ml18MCxrW0k+PjJdfDApO1BBKGtbUD4+Ml18MCxrW0s+PjJdfDAsKGtbRT4+Ml18MCkrMnwwKTticmVha31kZWZhdWx0Ont9fXdoaWxlKDApO2lmKGtbUj4+Ml18MCl7cj1WO3JldHVybn1pZighKGtbKGtbUT4+Ml18MCkrMTI+PjJdfDApKXtyPVY7cmV0dXJufXN4KGtbVT4+Ml18MCw2OCxrWyhrW1E+PjJdfDApKzEyPj4yXXwwLGtbUz4+Ml18MCl8MDtyPVY7cmV0dXJufWZ1bmN0aW9uIGJIKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTA7Zz1yO3I9cisxNnwwO2M9ZysxMnwwO2Q9Zys4fDA7Zj1nKzR8MDtlPWc7a1tjPj4yXT1hO2tbZD4+Ml09YjtpZighKGtbZD4+Ml18MCkpe3I9ZztyZXR1cm59a1tmPj4yXT1rWyhrW2Q+PjJdfDApKzQ+PjJdO2tbZT4+Ml09MDt3aGlsZSgxKXtpZigoa1tlPj4yXXwwKT49KGtba1tkPj4yXT4+Ml18MCkpYnJlYWs7Y0goa1tjPj4yXXwwLGtba1tmPj4yXT4+Ml18MCk7a1tlPj4yXT0oa1tlPj4yXXwwKSsxO2tbZj4+Ml09KGtbZj4+Ml18MCkrMjB9cj1nO3JldHVybn1mdW5jdGlvbiBjSChhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTA7Yz1yO3I9cis0OHwwO2Y9YyszMnwwO2Q9YysyOHwwO2U9YztrW2Y+PjJdPWE7a1tkPj4yXT1iO2tbZT4+Ml09MDtrW2UrND4+Ml09MDtrW2UrOD4+Ml09MDtrW2UrMTI+PjJdPTA7a1tlKzE2Pj4yXT0wO2tbZSsyMD4+Ml09MDtrW2UrMjQ+PjJdPTA7a1tlKzQ+PjJdPTIwMztrW2UrOD4+Ml09MjA0O2tbZSsyND4+Ml09a1tmPj4yXTtHeShlLGtbZD4+Ml18MCl8MDtyPWM7cmV0dXJufWZ1bmN0aW9uIGRIKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wO2g9cjtyPXIrMzJ8MDtmPWg7Yz1oKzE2fDA7ZD1oKzEyfDA7ZT1oKzh8MDtnPWgrNHwwO2tbYz4+Ml09YTtrW2Q+PjJdPWI7aWYoKGxbKGtbYz4+Ml18MCkrNDA5Pj4wXXwwfDApIT0yKXtyPWg7cmV0dXJufWtbZT4+Ml09a1soa1tjPj4yXXwwKSs4Pj4yXTtiPWtba1tjPj4yXT4+Ml18MDtrW2Y+PjJdPWtbZD4+Ml07Yj1RaChiLDM1ODA4LGYpfDA7a1tnPj4yXT1iO3d4KGtbZT4+Ml18MCwxNjIsa1soa1tjPj4yXXwwKSs0MjA+PjJdfDAsMCwwLGtbZz4+Ml18MCwtMSl8MDtyPWg7cmV0dXJufWZ1bmN0aW9uIGVIKGEpe2E9YXwwO3ZhciBiPTAsYz0wO2M9cjtyPXIrMTZ8MDtiPWM7a1tiPj4yXT1hO3I9YztyZXR1cm4gbFsoa1tiPj4yXXwwKSs0ND4+MF18MHwwfWZ1bmN0aW9uIGZIKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaT0wO2U9cjtyPXIrMTZ8MDtoPWUrMTJ8MDtnPWUrOHwwO2k9ZSs0fDA7Zj1lO2tbaD4+Ml09YTtrW2c+PjJdPWI7a1tpPj4yXT1jO2tbZj4+Ml09ZDt0eChrWyhrW2g+PjJdfDApKzg+PjJdfDAsODMsa1tnPj4yXXwwLGtbaT4+Ml18MCxrW2Y+PjJdfDApfDA7UUEoa1toPj4yXXwwLGtbZz4+Ml18MCxrW2Y+PjJdfDApO3I9ZTtyZXR1cm59ZnVuY3Rpb24gZ0goYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLGw9MCxuPTAsbz0wLHA9MCxxPTAscz0wLHQ9MCx1PTAsdj0wO3Y9cjtyPXIrNjR8MDtjPXYrNTZ8MDtkPXYrNTJ8MDt1PXYrNDh8MDtnPXYrNDR8MDt0PXYrNDB8MDtlPXYrMzZ8MDtvPXYrMzJ8MDtsPXYrMjh8MDtqPXYrMjR8MDtmPXYrMjB8MDtzPXYrMTZ8MDtxPXYrMTJ8MDtuPXYrOHwwO3A9dis0fDA7aD12O2tbYz4+Ml09YTtrW2Q+PjJdPWI7a1t1Pj4yXT1rWyhrW2M+PjJdfDApKzg+PjJdO2tbdD4+Ml09MDtrW2U+PjJdPTA7aVtrW2Q+PjJdPj4wXT0xO2tbZz4+Ml09MDtrW28+PjJdPWtbKGtbZD4+Ml18MCkrNDA+PjJdO3doaWxlKDEpe2lmKChrW2c+PjJdfDApPj0oa1soa1tkPj4yXXwwKSs0ND4+Ml18MCkpYnJlYWs7a1tmPj4yXT0wO2tbcT4+Ml09a1soa1trW28+PjJdPj4yXXwwKSsyMD4+Ml07aWYoa1txPj4yXXwwKXtrW2o+PjJdPWtba1txPj4yXT4+Ml07YT1NQShrW2M+PjJdfDAsa1tqPj4yXXwwKXwwO2tbcz4+Ml09YTtrQihrW2M+PjJdfDAsa1txPj4yXXwwLGtbcz4+Ml18MCwwLDEpfDB9ZWxzZXtrW2o+PjJdPTA7a1tzPj4yXT0wfWlmKChrWyhrW28+PjJdfDApKzEyPj4yXXwwKT49MCl7YT1lQShrW3U+PjJdfDApfDA7a1tmPj4yXT1hO3FIKGtbYz4+Ml18MCxrWyhrW28+PjJdfDApKzEyPj4yXXwwLGtbZj4+Ml18MCwxLGtbcz4+Ml18MCl9aWYoKG1bKGtbKGtbbz4+Ml18MCkrND4+Ml18MCkrMj4+MV18MCkmMzIpe2tbbj4+Ml09MDtrW2g+PjJdPTA7a1twPj4yXT1rWyhrW3E+PjJdfDApKzQ+PjJdO3doaWxlKDEpe2lmKGtbbj4+Ml18MClicmVhaztpZigoa1toPj4yXXwwKT49KGtbaj4+Ml18MCkpYnJlYWs7YT1weShrW2M+PjJdfDAsa1trW3A+PjJdPj4yXXwwKXwwO2tbbj4+Ml09YTtrW2g+PjJdPShrW2g+PjJdfDApKzE7a1twPj4yXT0oa1twPj4yXXwwKSsyMH1pZighKGtbbj4+Ml18MCkpa1tuPj4yXT1rWyhrW2tbYz4+Ml0+PjJdfDApKzg+PjJdO2lmKChrW3Q+PjJdfDApPT0wPyhrWyhrW2Q+PjJdfDApKzM2Pj4yXXwwKSE9MDowKXtiPShrW2M+PjJdfDApKzQ0fDA7YT0oa1tiPj4yXXwwKSsxfDA7a1tiPj4yXT1hO2tbdD4+Ml09YX13eChrW3U+PjJdfDAsODgsa1t0Pj4yXXwwLDAsMCxrW24+PjJdfDAsLTQpfDB9d3goa1t1Pj4yXXwwLDE0NywwLGtbcz4+Ml18MCxrWyhrW28+PjJdfDApKzg+PjJdfDAsa1soa1tvPj4yXXwwKSs0Pj4yXXwwLC01KXwwO1RoKGtbdT4+Ml18MCxrW2o+PjJdJjI1NSk7ZUIoa1tjPj4yXXwwLGtbcz4+Ml18MCxrW2o+PjJdfDApO1BBKGtbYz4+Ml18MCxrW3M+PjJdfDAsa1tqPj4yXXwwKTtpZihrW2Y+PjJdfDApe2lBKGtbdT4+Ml18MCxrW2Y+PjJdfDApO09DKGtbYz4+Ml18MCl9a1tnPj4yXT0oa1tnPj4yXXwwKSsxO2tbbz4+Ml09KGtbbz4+Ml18MCkrMTZ9aWYoa1t0Pj4yXXwwKXt0PWFBKGtbdT4+Ml18MCwyMSxrW3Q+PjJdfDApfDA7a1tlPj4yXT10fU9DKGtbYz4+Ml18MCk7a1tnPj4yXT0wO2tbbD4+Ml09a1soa1tkPj4yXXwwKSsyOD4+Ml07d2hpbGUoMSl7aWYoKGtbZz4+Ml18MCk+PShrWyhrW2Q+PjJdfDApKzM2Pj4yXXwwKSlicmVhazskQShrW2M+PjJdfDAsa1soa1tsPj4yXXwwKSsyMD4+Ml18MCxrWyhrW2w+PjJdfDApKzE2Pj4yXXwwKTtrW2c+PjJdPShrW2c+PjJdfDApKzE7a1tsPj4yXT0oa1tsPj4yXXwwKSsyNH1pW2tbZD4+Ml0+PjBdPTA7T0Moa1tjPj4yXXwwKTtpZighKGtbZT4+Ml18MCkpe3I9djtyZXR1cm59aEEoa1t1Pj4yXXwwLGtbZT4+Ml18MCk7cj12O3JldHVybn1mdW5jdGlvbiBoSChhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wLGg9MCxpPTA7aD1yO3I9ciszMnwwO2k9aCsyMHwwO2M9aCsxNnwwO2c9aCsxMnwwO2Q9aCs4fDA7ZT1oKzR8MDtmPWg7a1tpPj4yXT1hO2tbYz4+Ml09YjtrW2c+PjJdPWtbKGtbaT4+Ml18MCkrOD4+Ml07a1tkPj4yXT0wO2tbZT4+Ml09a1soa1tjPj4yXXwwKSs0MD4+Ml07d2hpbGUoMSl7aWYoKGtbZD4+Ml18MCk+PShrWyhrW2M+PjJdfDApKzQ0Pj4yXXwwKSlicmVhaztrW2Y+PjJdPWtbKGtba1tlPj4yXT4+Ml18MCkrMjA+PjJdO2lmKGtbZj4+Ml18MCliPWtba1tmPj4yXT4+Ml18MDtlbHNlIGI9MDt3eChrW2c+PjJdfDAsMTQ5LGtbKGtbZT4+Ml18MCkrOD4+Ml18MCxiLDAsa1soa1tlPj4yXXwwKSs0Pj4yXXwwLC01KXwwO2tbZD4+Ml09KGtbZD4+Ml18MCkrMTtrW2U+PjJdPShrW2U+PjJdfDApKzE2fXI9aDtyZXR1cm59ZnVuY3Rpb24gaUgoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTAsaT0wLGo9MCxsPTAsbT0wO2w9cjtyPXIrNDh8MDtqPWw7Yz1sKzMyfDA7ZD1sKzI4fDA7aT1sKzI0fDA7ZT1sKzIwfDA7Zz1sKzE2fDA7bT1sKzEyfDA7Zj1sKzh8MDtoPWwrNHwwO2tbYz4+Ml09YTtrW2Q+PjJdPWI7a1tpPj4yXT1rWyhrW2M+PjJdfDApKzg+PjJdO2tbbT4+Ml09KGtbKGtbZD4+Ml18MCkrNDQ+PjJdfDApKyhrWyhrW2Q+PjJdfDApKzMyPj4yXXwwKTtpZighKGtbbT4+Ml18MCkpe3I9bDtyZXR1cm59dHgoa1tpPj4yXXwwLDc5LDAsa1soa1tkPj4yXXwwKSsxNj4+Ml18MCxrWyhrW2Q+PjJdfDApKzIwPj4yXXwwKXwwO2tbZz4+Ml09a1soa1tkPj4yXXwwKSs0MD4+Ml07a1tlPj4yXT0wO3doaWxlKDEpe2lmKChrW2U+PjJdfDApPj0oa1soa1tkPj4yXXwwKSs0ND4+Ml18MCkpYnJlYWs7ZG8gaWYoKGtbKGtbZz4+Ml18MCkrMTI+PjJdfDApPj0wKXtrW2Y+PjJdPWtba1tnPj4yXT4+Ml07aWYoKGtbKGtbZj4+Ml18MCkrMjA+PjJdfDApIT0wPyhrW2tbKGtbZj4+Ml18MCkrMjA+PjJdPj4yXXwwKT09MTowKXttPVRHKGtbYz4+Ml18MCxrWyhrW2Y+PjJdfDApKzIwPj4yXXwwLDAsMCl8MDtrW2g+PjJdPW07d3goa1tpPj4yXXwwLDEwNyxrWyhrW2c+PjJdfDApKzEyPj4yXXwwLDAsMCxrW2g+PjJdfDAsLTYpfDA7YnJlYWt9T2goa1tjPj4yXXwwLDM1NzU3LGopO2tbKGtbZz4+Ml18MCkrMTI+PjJdPS0xfXdoaWxlKDApO2tbZT4+Ml09KGtbZT4+Ml18MCkrMTtrW2c+PjJdPShrW2c+PjJdfDApKzE2fXI9bDtyZXR1cm59ZnVuY3Rpb24gakgoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTA7aD1yO3I9ciszMnwwO2M9aCsxNnwwO2Q9aCsxMnwwO2U9aCs4fDA7Zz1oKzR8MDtmPWg7a1tkPj4yXT1hO2tbZT4+Ml09YjtpZigoKChrWyhrW2Q+PjJdfDApKzMyPj4yXXwwKT09MD8oa1trW2tbZD4+Ml0+PjJdPj4yXXwwKT09MTowKT8oa1trWyhrW2Q+PjJdfDApKzI4Pj4yXT4+Ml18MCk9PTE6MCk/KGtbKGtbKGtbZD4+Ml18MCkrMjg+PjJdfDApKzgrMjA+PjJdfDApPT0wOjApe2tbZz4+Ml09a1soa1soa1tkPj4yXXwwKSsyOD4+Ml18MCkrOCsxNj4+Ml07a1tmPj4yXT1rW2tbKGtba1tkPj4yXT4+Ml18MCkrND4+Ml0+PjJdO2lmKChsWyhrW2c+PjJdfDApKzQyPj4wXXwwKSYxNil7a1tjPj4yXT0wO2c9a1tjPj4yXXwwO3I9aDtyZXR1cm4gZ3wwfWlmKChsW2tbZj4+Ml0+PjBdfDB8MCkhPTE1Myl7a1tjPj4yXT0wO2c9a1tjPj4yXXwwO3I9aDtyZXR1cm4gZ3wwfWlmKCEoa1soa1tlPj4yXXwwKSs0ND4+Ml18MCkpe2tbYz4+Ml09MDtnPWtbYz4+Ml18MDtyPWg7cmV0dXJuIGd8MH1pZighKChtWyhrWyhrWyhrW2U+PjJdfDApKzQwPj4yXXwwKSs0Pj4yXXwwKSsyPj4xXXwwKSYyNTYpKXtrW2M+PjJdPTA7Zz1rW2M+PjJdfDA7cj1oO3JldHVybiBnfDB9aWYoa1soa1tmPj4yXXwwKSs0Pj4yXSYxNil7a1tjPj4yXT0wO2c9a1tjPj4yXXwwO3I9aDtyZXR1cm4gZ3wwfWVsc2V7a1tjPj4yXT1rW2c+PjJdO2c9a1tjPj4yXXwwO3I9aDtyZXR1cm4gZ3wwfX1rW2M+PjJdPTA7Zz1rW2M+PjJdfDA7cj1oO3JldHVybiBnfDB9ZnVuY3Rpb24ga0goYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxtPTA7bT1yO3I9ciszMnwwO2g9bTtmPW0rMjh8MDtnPW0rMjR8MDtkPW0rMjB8MDtlPW0rMTZ8MDtqPW0rMTJ8MDtrW2Y+PjJdPWE7a1tnPj4yXT1iO2tbZD4+Ml09YztpZigobFsoa1tmPj4yXXwwKSs0MDk+PjBdfDB8MCkhPTIpe3I9bTtyZXR1cm59aWYoa1tkPj4yXXwwKWlmKCEoKGxbKGtbZz4+Ml18MCkrNDI+PjBdfDApJjMyKSljPTE7ZWxzZSBjPShpWyhrW2Q+PjJdfDApKzU1Pj4wXSYzfDApPT0yXjE7ZWxzZSBjPTA7a1tlPj4yXT1jJjE7YT1rW2tbZj4+Ml0+PjJdfDA7Yj0oa1tlPj4yXXwwKSE9MD8zNTcxNjoxODQwMjtpZihrW2U+PjJdfDApYz1rW2tbZD4+Ml0+PjJdfDA7ZWxzZSBjPTE4NDAyO2tbaD4+Ml09a1trW2c+PjJdPj4yXTtrW2grND4+Ml09YjtrW2grOD4+Ml09YztoPVFoKGEsMzU3MzksaCl8MDtrW2o+PjJdPWg7d3goa1soa1tmPj4yXXwwKSs4Pj4yXXwwLDE2MixrWyhrW2Y+PjJdfDApKzQyMD4+Ml18MCwwLDAsa1tqPj4yXXwwLC0xKXwwO3I9bTtyZXR1cm59ZnVuY3Rpb24gbEgoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTAsaT0wO2k9cjtyPXIrMzJ8MDtjPWkrMjB8MDtkPWkrMTZ8MDtlPWkrMTJ8MDtnPWkrOHwwO2Y9aSs0fDA7aD1pO2tbYz4+Ml09YTtrW2Q+PjJdPWI7a1tlPj4yXT0wO2tba1tkPj4yXT4+Ml09MDtkbyBpZigoKChrWyhrW2M+PjJdfDApKzQ0Pj4yXXwwKT09MT8oa1tnPj4yXT1rW2tbKGtbYz4+Ml18MCkrNDA+PjJdPj4yXSxrW2Y+PjJdPWtbKGtbZz4+Ml18MCkrMjA+PjJdLChrW2Y+PjJdfDApIT0wKTowKT8oa1trW2Y+PjJdPj4yXXwwKT09MTowKT8obFtrW2tbKGtbZj4+Ml18MCkrND4+Ml0+PjJdPj4wXXwwfDApPT0xNTQ6MCl7a1toPj4yXT1rWyhrW2c+PjJdfDApKzg+PjJdO2lmKCEoc2coa1toPj4yXXwwLDM1NzA4KXwwKSl7a1tlPj4yXT0xO2tba1tkPj4yXT4+Ml09a1tmPj4yXTticmVha31pZighKHNnKGtbaD4+Ml18MCwzNTcxMil8MCkpe2tbZT4+Ml09MjtrW2tbZD4+Ml0+PjJdPWtbZj4+Ml19fXdoaWxlKDApO3I9aTtyZXR1cm4ga1tlPj4yXSYyNTV8MH1mdW5jdGlvbiBtSChhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxpPTAsaj0wLG09MCxuPTAsbz0wLHA9MCxxPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTAsRT0wO0U9cjtyPXIrOTZ8MDt1PUUrODR8MDtmPUUrODB8MDtCPUUrNzZ8MDt2PUUrNzJ8MDtzPUUrNjh8MDtEPUUrNjR8MDtDPUUrNjB8MDt3PUUrNTZ8MDtBPUUrNTJ8MDtnPUUrNDh8MDt6PUUrNDR8MDtwPUUrNDB8MDt4PUUrMzZ8MDtqPUUrMzJ8MDt0PUUrMjh8MDt5PUUrMjR8MDtuPUUrMjB8MDttPUUrMTZ8MDtvPUUrMTJ8MDtpPUUrOHwwO2g9RSs0fDA7cT1FO2tbdT4+Ml09YTtrW2Y+PjJdPWI7a1tCPj4yXT1jO2tbdj4+Ml09ZDtrW3M+PjJdPWU7a1tEPj4yXT1rWyhrW3U+PjJdfDApKzg+PjJdO2tbQz4+Ml09a1soa1tCPj4yXXwwKSsyND4+Ml07Yz1lQShrW0Q+PjJdfDApfDA7a1t3Pj4yXT1jO2tbZz4+Ml09MDtrW3A+PjJdPWtba1tCPj4yXT4+Ml07a1t4Pj4yXT1sW2tbcz4+Ml0+PjBdO2tbaj4+Ml09a1soa1tzPj4yXXwwKSs4Pj4yXTtpZihrWyhrW0I+PjJdfDApKzE2Pj4yXXwwKXtzeChrW0Q+PjJdfDAsMTQsa1soa1tCPj4yXXwwKSsxMj4+Ml18MCxrWyhrW0I+PjJdfDApKzE2Pj4yXXwwKXwwO2dBKGtbRD4+Ml18MCxrW0M+PjJdfDApfDA7aUEoa1tEPj4yXXwwLGtbKGtbQj4+Ml18MCkrMTY+PjJdfDApfWtbej4+Ml09a1soa1tCPj4yXXwwKSs4Pj4yXTtpZigoa1t4Pj4yXXwwKT09OXwoa1t4Pj4yXXwwKT09MTN8KGtbeD4+Ml18MCk9PTEwKXtrW3k+PjJdPTA7a1t0Pj4yXT1rWyhrW3M+PjJdfDApKzEyPj4yXTtrW28+PjJdPWtbdj4+Ml19ZWxzZXtjPUZ4KGtbdT4+Ml18MCl8MDtrW3k+PjJdPWM7Yz1NQShrW3U+PjJdfDAsa1t2Pj4yXXwwKXwwO2tbdD4+Ml09YztrW28+PjJdPWtbdj4+Ml19a1tuPj4yXT0oa1trW3A+PjJdPj4yXXwwKS0oa1soa1tCPj4yXXwwKSs0Pj4yXXwwKTtpZigobFsoa1tCPj4yXXwwKSsyOD4+MF18MCkmMSl7Yz0oa1t1Pj4yXXwwKSs0NHwwO2E9KGtbYz4+Ml18MCkrMXwwO2tbYz4+Ml09YTtrW3E+PjJdPWE7YT0oa1t1Pj4yXXwwKSs0MHwwO2M9a1thPj4yXXwwO2tbYT4+Ml09YysxO2tbbT4+Ml09YztpZihrWyhrW0I+PjJdfDApKzE2Pj4yXXwwKXtjPXB4KGtbRD4+Ml18MCwyMCl8MDtrW2c+PjJdPWN9dHgoa1tEPj4yXXwwLDExMCxrW20+PjJdfDAsa1txPj4yXXwwLChrW24+PjJdfDApKzErKGtbbz4+Ml18MCl8MCl8MDtpZihrW2c+PjJdfDApaEEoa1tEPj4yXXwwLGtbZz4+Ml18MCk7Yz0xKyhzeChrW0Q+PjJdfDAsNTUsa1t6Pj4yXXwwLGtbQz4+Ml18MCl8MCl8MDtrW0E+PjJdPWM7cEgoa1tEPj4yXXwwLGtbKGtbZj4+Ml18MCkrMTY+PjJdfDAsa1t3Pj4yXXwwKTt0eChrW0Q+PjJdfDAsMTIwLGtbej4+Ml18MCxrW3E+PjJdfDAsa1ttPj4yXXwwKXwwO2tbaD4+Ml09MH1lbHNle3E9MSsoc3goa1tEPj4yXXwwLDU2LGtbej4+Ml18MCxrW0M+PjJdfDApfDApfDA7a1tBPj4yXT1xO3BIKGtbRD4+Ml18MCxrWyhrW2Y+PjJdfDApKzE2Pj4yXXwwLGtbdz4+Ml18MCk7a1ttPj4yXT1rW3o+PjJdO2tbaD4+Ml09MX1rW2k+PjJdPTA7d2hpbGUoMSl7aWYoKGtbaT4+Ml18MCk+PShrW28+PjJdfDApKWJyZWFrO3R4KGtbRD4+Ml18MCw5NixrW20+PjJdfDAsKGtbbj4+Ml18MCkrKGtbaD4+Ml18MCkrKGtbaT4+Ml18MCl8MCwoa1t0Pj4yXXwwKSsoa1tpPj4yXXwwKXwwKXwwO2tbaT4+Ml09KGtbaT4+Ml18MCkrMX1hOmRvIHN3aXRjaChrW3g+PjJdfDApe2Nhc2UgMTI6e3N4KGtbRD4+Ml18MCwxMTQsa1tqPj4yXXwwLGtbeT4+Ml18MCl8MDt0eChrW0Q+PjJdfDAsMTE1LGtbaj4+Ml18MCxrW3Q+PjJdfDAsa1t5Pj4yXXwwKXwwO1RoKGtbRD4+Ml18MCw4KTticmVha31jYXNlIDExOnt3eChrW0Q+PjJdfDAsOTksa1t0Pj4yXXwwLGtbdj4+Ml18MCxrW3k+PjJdfDAsa1soa1tzPj4yXXwwKSs0Pj4yXXwwLGtbdj4+Ml18MCl8MDtlQihrW3U+PjJdfDAsa1t0Pj4yXXwwLGtbdj4+Ml18MCk7c3goa1tEPj4yXXwwLDEyNixrW2o+PjJdfDAsa1t5Pj4yXXwwKXwwO2JyZWFrfWNhc2UgMTA6YnJlYWs7ZGVmYXVsdDp7Zj1rW0Q+PjJdfDA7Zz1rW3M+PjJdfDA7aWYoKGtbeD4+Ml18MCk9PTkpe3N4KGYsODcsa1tnKzEyPj4yXXwwLGtbdj4+Ml18MCl8MDtlQihrW3U+PjJdfDAsa1soa1tzPj4yXXwwKSsxMj4+Ml18MCxrW3Y+PjJdfDApO2JyZWFrIGF9ZWxzZXthQShmLDE2LGtbZys4Pj4yXXwwKXwwO2JyZWFrIGF9fX13aGlsZSgwKTtpZihrW3k+PjJdfDApe2c9a1t1Pj4yXXwwO2Y9a1t0Pj4yXXwwO2lmKChrW3g+PjJdfDApPT0xMSlQQShnLGYsa1t2Pj4yXXwwKTtlbHNlIEh4KGcsZik7SHgoa1t1Pj4yXXwwLGtbeT4+Ml18MCl9aUEoa1tEPj4yXXwwLGtbdz4+Ml18MCk7aD1rW0Q+PjJdfDA7Zz1rW3o+PjJdfDA7Zj1rW0E+PjJdfDA7aWYoKGxbKGtbQj4+Ml18MCkrMjg+PjBdfDApJjEpc3goaCwzLGcsZil8MDtlbHNlIHN4KGgsNyxnLGYpfDA7aWYoIShrWyhrW0I+PjJdfDApKzEyPj4yXXwwKSl7Qj1rW0Q+PjJdfDA7RD1rW0M+PjJdfDA7aUEoQixEKTtyPUU7cmV0dXJufWFBKGtbRD4+Ml18MCw3MixrWyhrW0I+PjJdfDApKzEyPj4yXXwwKXwwO0I9a1tEPj4yXXwwO0Q9a1tDPj4yXXwwO2lBKEIsRCk7cj1FO3JldHVybn1mdW5jdGlvbiBuSChhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsbT0wLG49MCxvPTAscD0wLHE9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MDtBPXI7cj1yKzgwfDA7dj1BKzh8MDt1PUE7ZD1BKzcyfDA7ZT1BKzY4fDA7Zj1BKzY0fDA7dD1BKzYwfDA7bT1BKzU2fDA7bz1BKzUyfDA7Zz1BKzQ4fDA7aD1BKzQ0fDA7cz1BKzQwfDA7cD1BKzM2fDA7eT1BKzMyfDA7cT1BKzI4fDA7eD1BKzI0fDA7bj1BKzIwfDA7ej1BKzE2fDA7dz1BKzEyfDA7a1tkPj4yXT1hO2tbZT4+Ml09YjtrW2Y+PjJdPWM7a1t0Pj4yXT1rWyhrW2Q+PjJdfDApKzg+PjJdO2tbZz4+Ml09a1trW2Q+PjJdPj4yXTtpZihpWyhrW2Q+PjJdfDApKzQwOT4+MF18MCl7cj1BO3JldHVybn1pZihsWyhrW2Q+PjJdfDApKzE2Pj4wXXwwKXtyPUE7cmV0dXJufWlmKGxbKGtbZz4+Ml18MCkrNjk+PjBdfDApe3I9QTtyZXR1cm59aVsoa1tkPj4yXXwwKSsxNj4+MF09MTtrW2g+PjJdPShrWyhrW2c+PjJdfDApKzI0Pj4yXSY0fDApIT0wJjE7a1tzPj4yXT0oa1soa1tnPj4yXXwwKSsyND4+Ml0mNjR8MCkhPTAmMTt3QyhrW3Q+PjJdfDAsa1trW2Y+PjJdPj4yXXwwKTtrW20+PjJdPTA7d2hpbGUoMSl7aWYoKGtbbT4+Ml18MCk+PShrW2tbZj4+Ml0+PjJdfDApKWJyZWFrO2tbcD4+Ml09a1soa1soa1tmPj4yXXwwKSs0Pj4yXXwwKSsoKGtbbT4+Ml18MCkqMjB8MCk+PjJdO2RvIGlmKGtbcD4+Ml18MCl7aWYoa1soa1soa1tmPj4yXXwwKSs0Pj4yXXwwKSsoKGtbbT4+Ml18MCkqMjB8MCkrND4+Ml18MCl7a1t5Pj4yXT1rWyhrWyhrW2Y+PjJdfDApKzQ+PjJdfDApKygoa1ttPj4yXXwwKSoyMHwwKSs0Pj4yXTt4QyhrW3Q+PjJdfDAsa1ttPj4yXXwwLDAsa1t5Pj4yXXwwLC0xKXwwO2JyZWFrfWlmKChsW2tbcD4+Ml0+PjBdfDApIT0xNTI/KGxba1twPj4yXT4+MF18MCkhPTE1NDowKXtrW3c+PjJdPWtbKGtbKGtbZj4+Ml18MCkrND4+Ml18MCkrKChrW20+PjJdfDApKjIwfDApKzg+PjJdO2M9a1tnPj4yXXwwO2lmKCEoa1t3Pj4yXXwwKSl7a1t2Pj4yXT0oa1ttPj4yXXwwKSsxO2M9UWgoYywzNTY5OSx2KXwwfWVsc2UgYz1BaChjLGtbdz4+Ml18MCl8MDtrW3c+PjJdPWM7eEMoa1t0Pj4yXXwwLGtbbT4+Ml18MCwwLGtbdz4+Ml18MCwxNzApfDA7YnJlYWt9a1tuPj4yXT1qWyhrW3A+PjJdfDApKzMyPj4xXTtrW28+PjJdPTA7d2hpbGUoMSl7aWYoKGtbbz4+Ml18MCk+PShrW2tbZT4+Ml0+PjJdfDApKWJyZWFrO2lmKChrWyhrW2U+PjJdfDApKzgrKChrW28+PjJdfDApKjcyfDApKzQ0Pj4yXXwwKT09KGtbKGtbcD4+Ml18MCkrMjg+PjJdfDApKWJyZWFrO2tbbz4+Ml09KGtbbz4+Ml18MCkrMX1rW3E+PjJdPWtbKGtbZT4+Ml18MCkrOCsoKGtbbz4+Ml18MCkqNzJ8MCkrMTY+PjJdO2lmKChrW24+PjJdfDApPDApa1tuPj4yXT1qWyhrW3E+PjJdfDApKzMyPj4xXTtpZigoa1tuPj4yXXwwKTwwKWtbeD4+Ml09MjQ3NDU7ZWxzZSBrW3g+PjJdPWtbKGtbKGtbcT4+Ml18MCkrND4+Ml18MCkrKGtbbj4+Ml08PDQpPj4yXTtpZighKChrW3M+PjJdfDApIT0wfChrW2g+PjJdfDApIT0wKSl7YT1rW3Q+PjJdfDA7Yj1rW20+PjJdfDA7eEMoYSxiLDAsQWgoa1tnPj4yXXwwLGtbKGtbKGtbZj4+Ml18MCkrND4+Ml18MCkrKChrW20+PjJdfDApKjIwfDApKzg+PjJdfDApfDAsMTcwKXwwO2JyZWFrfWlmKGtbaD4+Ml18MCl7a1t6Pj4yXT0wO2I9a1tnPj4yXXwwO2E9a1t4Pj4yXXwwO2tbdT4+Ml09a1trW3E+PjJdPj4yXTtrW3UrND4+Ml09YTtiPVFoKGIsMzAxNjEsdSl8MDtrW3o+PjJdPWI7eEMoa1t0Pj4yXXwwLGtbbT4+Ml18MCwwLGtbej4+Ml18MCwxNzApfDA7YnJlYWt9ZWxzZXt4QyhrW3Q+PjJdfDAsa1ttPj4yXXwwLDAsa1t4Pj4yXXwwLC0xKXwwO2JyZWFrfX13aGlsZSgwKTtrW20+PjJdPShrW20+PjJdfDApKzF9b0goa1tkPj4yXXwwLGtbZT4+Ml18MCxrW2Y+PjJdfDApO3I9QTtyZXR1cm59ZnVuY3Rpb24gb0goYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGk9MCxqPTAsbD0wLG09MDtqPXI7cj1yKzY0fDA7bD1qKzU2fDA7bT1qKzUyfDA7ZD1qKzQ4fDA7aD1qKzQ0fDA7ZT1qKzQwfDA7Zz1qKzh8MDtmPWorNHwwO2k9ajtrW2w+PjJdPWE7a1ttPj4yXT1iO2tbZD4+Ml09YztrW2g+PjJdPWtbKGtbbD4+Ml18MCkrOD4+Ml07a1tnKzQ+PjJdPWtbbT4+Ml07a1tnPj4yXT1rW2w+PjJdO2tbZT4+Ml09MDt3aGlsZSgxKXtpZigoa1tlPj4yXXwwKT49KGtba1tkPj4yXT4+Ml18MCkpYnJlYWs7a1tmPj4yXT1rWyhrWyhrW2Q+PjJdfDApKzQ+PjJdfDApKygoa1tlPj4yXXwwKSoyMHwwKT4+Ml07bT1ueShnLGtbZj4+Ml18MCwwKXwwO2tbaT4+Ml09bTt4QyhrW2g+PjJdfDAsa1tlPj4yXXwwLDEsa1tpPj4yXXwwLC0xKXwwO2tbZT4+Ml09KGtbZT4+Ml18MCkrMX1yPWo7cmV0dXJufWZ1bmN0aW9uIHBIKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wO2c9cjtyPXIrMTZ8MDtkPWcrOHwwO2U9Zys0fDA7Zj1nO2tbZD4+Ml09YTtrW2U+PjJdPWI7a1tmPj4yXT1jO2lmKChrW2U+PjJdfDApPD0wKXtyPWc7cmV0dXJufXR4KGtbZD4+Ml18MCw2NixrW2U+PjJdfDAsa1tmPj4yXXwwLDEpfDA7cj1nO3JldHVybn1mdW5jdGlvbiBxSChhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxpPTAsaj0wLGw9MCxtPTAsbj0wO2Y9cjtyPXIrMzJ8MDtoPWYrMjR8MDtpPWYrMjB8MDtuPWYrMTZ8MDtsPWYrMTJ8MDttPWYrOHwwO2o9Zis0fDA7Zz1mO2tbaD4+Ml09YTtrW2k+PjJdPWI7a1tuPj4yXT1jO2tbbD4+Ml09ZDtrW20+PjJdPWU7a1tqPj4yXT1rWyhrW2g+PjJdfDApKzg+PjJdO2E9Rngoa1toPj4yXXwwKXwwO2tbZz4+Ml09YTtTaChrW2o+PjJdfDAsMzEsa1tpPj4yXXwwLGtbbj4+Ml18MCxrW20+PjJdfDAsa1tsPj4yXXwwKXwwO3R4KGtbaj4+Ml18MCw5OSxrW20+PjJdfDAsa1tsPj4yXXwwLGtbZz4+Ml18MCl8MDtzeChrW2o+PjJdfDAsMTI2LGtbaT4+Ml18MCxrW2c+PjJdfDApfDA7SHgoa1toPj4yXXwwLGtbZz4+Ml18MCk7cj1mO3JldHVybn1mdW5jdGlvbiBySChhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wLGg9MCxuPTAsbz0wLHA9MCxxPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTA7QT1yO3I9cis4MHwwO3Q9QSs2NHwwO2M9QSs2MHwwO3U9QSs1NnwwO3c9QSs1MnwwO3A9QSs0OHwwO3o9QSs0NHwwO3E9QSs0MHwwO3g9QSszNnwwO289QSszMnwwO2c9QSsyOHwwO2U9QSsyNHwwO2Q9QSsyMHwwO2Y9QSsxNnwwO249QSsxMnwwO3M9QSs4fDA7aD1BKzR8MDt5PUE7dj1BKzY4fDA7a1tjPj4yXT1hO2tbdT4+Ml09YjtrW3A+PjJdPWtbKGtbYz4+Ml18MCkrMjQ+PjJdO2tbej4+Ml09a1trW3A+PjJdPj4yXTtrW3E+PjJdPWtbKGtbcD4+Ml18MCkrND4+Ml07a1t4Pj4yXT1rWyhrW3A+PjJdfDApKzEyPj4yXTtzd2l0Y2gobFtrW3U+PjJdPj4wXXwwKXtjYXNlIDE1MjpjYXNlIDE1NDp7YTpkbyBpZihrW3E+PjJdfDApe2tbbz4+Ml09KGtbcT4+Ml18MCkrODtrW3c+PjJdPTA7d2hpbGUoMSl7aWYoKGtbdz4+Ml18MCk+PShrW2tbcT4+Ml0+PjJdfDApKWJyZWFrIGE7aWYoKGtbKGtbdT4+Ml18MCkrMjg+PjJdfDApPT0oa1soa1tvPj4yXXwwKSs0ND4+Ml18MCkpYnJlYWs7a1t3Pj4yXT0oa1t3Pj4yXXwwKSsxO2tbbz4+Ml09KGtbbz4+Ml18MCkrNzJ9a1tnPj4yXT1rWyhrW3g+PjJdfDApKzI4Pj4yXTtrW2U+PjJdPTA7d2hpbGUoMSl7aWYoKGtbZT4+Ml18MCk+PShrWyhrW3g+PjJdfDApKzMyPj4yXXwwKSlicmVhaztpZigoa1soa1tnPj4yXXwwKSs0Pj4yXXwwKT09KGtbKGtbdT4+Ml18MCkrMjg+PjJdfDApPyhrWyhrW2c+PjJdfDApKzg+PjJdfDApPT0oalsoa1t1Pj4yXXwwKSszMj4+MV18MCk6MClicmVhaztrW2U+PjJdPShrW2U+PjJdfDApKzE7a1tnPj4yXT0oa1tnPj4yXXwwKSsyNH1pZigoa1tlPj4yXXwwKT49KGtbKGtbeD4+Ml18MCkrMzI+PjJdfDApPyh5PXRIKGtba1t6Pj4yXT4+Ml18MCxrW3g+PjJdfDApfDAsa1tlPj4yXT15LCh5fDApPj0wKTowKXtrW2c+PjJdPShrWyhrW3g+PjJdfDApKzI4Pj4yXXwwKSsoKGtbZT4+Ml18MCkqMjR8MCk7a1trW2c+PjJdPj4yXT1rWyhrW3U+PjJdfDApKzQ0Pj4yXTtrWyhrW2c+PjJdfDApKzQ+PjJdPWtbKGtbdT4+Ml18MCkrMjg+PjJdO2tbKGtbZz4+Ml18MCkrOD4+Ml09alsoa1t1Pj4yXXwwKSszMj4+MV07eT0oa1t6Pj4yXXwwKSs0NHwwO3o9KGtbeT4+Ml18MCkrMXwwO2tbeT4+Ml09ejtrWyhrW2c+PjJdfDApKzE2Pj4yXT16O2tbKGtbZz4+Ml18MCkrMTI+PjJdPS0xO2tbKGtbZz4+Ml18MCkrMjA+PjJdPWtbdT4+Ml07YjpkbyBpZihrWyhrW3g+PjJdfDApKzI0Pj4yXXwwKXtrW24+PjJdPWtbKGtbeD4+Ml18MCkrMjQ+PjJdO2tbcz4+Ml09a1soa1tuPj4yXXwwKSs0Pj4yXTtrW2Y+PjJdPWtba1tuPj4yXT4+Ml07a1tkPj4yXT0wO3doaWxlKDEpe2lmKChrW2Q+PjJdfDApPj0oa1tmPj4yXXwwKSlicmVhayBiO2tbaD4+Ml09a1trW3M+PjJdPj4yXTtpZigoKGxba1toPj4yXT4+MF18MCk9PTE1Mj8oa1soa1toPj4yXXwwKSsyOD4+Ml18MCk9PShrWyhrW3U+PjJdfDApKzI4Pj4yXXwwKTowKT8oalsoa1toPj4yXXwwKSszMj4+MV18MCk9PShqWyhrW3U+PjJdfDApKzMyPj4xXXwwKTowKWJyZWFrO2tbZD4+Ml09KGtbZD4+Ml18MCkrMTtrW3M+PjJdPShrW3M+PjJdfDApKzIwfWtbKGtbZz4+Ml18MCkrMTI+PjJdPWtbZD4+Ml19d2hpbGUoMCk7aWYoKGtbKGtbZz4+Ml18MCkrMTI+PjJdfDApPDApe3k9KGtbeD4+Ml18MCkrMTJ8MDt6PWtbeT4+Ml18MDtrW3k+PjJdPXorMTtrWyhrW2c+PjJdfDApKzEyPj4yXT16fX1rWyhrW3U+PjJdfDApKzQwPj4yXT1rW3g+PjJdO2lba1t1Pj4yXT4+MF09LTEwMjtqWyhrW3U+PjJdfDApKzM0Pj4xXT1rW2U+PjJdfXdoaWxlKDApO2tbdD4+Ml09MTt6PWtbdD4+Ml18MDtyPUE7cmV0dXJuIHp8MH1jYXNlIDE1Mzp7aWYoKG1bKGtbcD4+Ml18MCkrMjg+PjFdJjh8MCk9PTA/KGtbKGtbYz4+Ml18MCkrMTY+PjJdfDApPT0obFsoa1t1Pj4yXXwwKSszOD4+MF18MCk6MCl7a1t5Pj4yXT1rWyhrW3g+PjJdfDApKzQwPj4yXTtrW3c+PjJdPTA7d2hpbGUoMSl7aWYoKGtbdz4+Ml18MCk+PShrWyhrW3g+PjJdfDApKzQ0Pj4yXXwwKSlicmVhaztpZighKFV5KGtba1t5Pj4yXT4+Ml18MCxrW3U+PjJdfDAsLTEpfDApKWJyZWFrO2tbdz4+Ml09KGtbdz4+Ml18MCkrMTtrW3k+PjJdPShrW3k+PjJdfDApKzE2fWRvIGlmKChrW3c+PjJdfDApPj0oa1soa1t4Pj4yXXwwKSs0ND4+Ml18MCk/KGlbdj4+MF09aVsoa1trW3o+PjJdPj4yXXwwKSs2Nj4+MF18MCxhPXVIKGtba1t6Pj4yXT4+Ml18MCxrW3g+PjJdfDApfDAsa1t3Pj4yXT1hLChrW3c+PjJdfDApPj0wKTowKXtrW3k+PjJdPShrWyhrW3g+PjJdfDApKzQwPj4yXXwwKSsoa1t3Pj4yXTw8NCk7a1trW3k+PjJdPj4yXT1rW3U+PjJdO3M9KGtbej4+Ml18MCkrNDR8MDthPShrW3M+PjJdfDApKzF8MDtrW3M+PjJdPWE7a1soa1t5Pj4yXXwwKSs4Pj4yXT1hO2lmKGtbKGtbdT4+Ml18MCkrMjA+PjJdfDApYz1rW2tbKGtbdT4+Ml18MCkrMjA+PjJdPj4yXXwwO2Vsc2UgYz0wO3Y9dWkoa1trW3o+PjJdPj4yXXwwLGtbKGtbdT4+Ml18MCkrOD4+Ml18MCxjLGlbdj4+MF18MCwwKXwwO2tbKGtbeT4+Ml18MCkrND4+Ml09djtpZihrWyhrW3U+PjJdfDApKzQ+PjJdJjE2KXt2PShrW3o+PjJdfDApKzQwfDA7ej1rW3Y+PjJdfDA7a1t2Pj4yXT16KzE7a1soa1t5Pj4yXXwwKSsxMj4+Ml09ejticmVha31lbHNle2tbKGtbeT4+Ml18MCkrMTI+PjJdPS0xO2JyZWFrfX13aGlsZSgwKTtqWyhrW3U+PjJdfDApKzM0Pj4xXT1rW3c+PjJdO2tbKGtbdT4+Ml18MCkrNDA+PjJdPWtbeD4+Ml07a1t0Pj4yXT0xO3o9a1t0Pj4yXXwwO3I9QTtyZXR1cm4genwwfWtbdD4+Ml09MDt6PWtbdD4+Ml18MDtyPUE7cmV0dXJuIHp8MH1kZWZhdWx0OntrW3Q+PjJdPTA7ej1rW3Q+PjJdfDA7cj1BO3JldHVybiB6fDB9fXJldHVybiAwfWZ1bmN0aW9uIHNIKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MDtjPXI7cj1yKzE2fDA7a1tjKzQ+PjJdPWE7a1tjPj4yXT1iO3I9YztyZXR1cm4gMH1mdW5jdGlvbiB0SChhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTA7ZD1yO3I9cisxNnwwO2Y9ZCs4fDA7ZT1kKzR8MDtjPWQ7a1tmPj4yXT1hO2tbZT4+Ml09YjtiPWFEKGtbZj4+Ml18MCxrWyhrW2U+PjJdfDApKzI4Pj4yXXwwLDI0LChrW2U+PjJdfDApKzMyfDAsYyl8MDtrWyhrW2U+PjJdfDApKzI4Pj4yXT1iO3I9ZDtyZXR1cm4ga1tjPj4yXXwwfWZ1bmN0aW9uIHVIKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MDtkPXI7cj1yKzE2fDA7Zj1kKzh8MDtlPWQrNHwwO2M9ZDtrW2Y+PjJdPWE7a1tlPj4yXT1iO2I9YUQoa1tmPj4yXXwwLGtbKGtbZT4+Ml18MCkrNDA+PjJdfDAsMTYsKGtbZT4+Ml18MCkrNDR8MCxjKXwwO2tbKGtbZT4+Ml18MCkrNDA+PjJdPWI7cj1kO3JldHVybiBrW2M+PjJdfDB9ZnVuY3Rpb24gdkgoYSxiLGMsZCxlLGYsZyl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7dmFyIGg9MCxqPTAsbj0wLG89MCxwPTAscT0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wLEU9MCxGPTAsRz0wLEg9MCxJPTAsSj0wLEs9MCxMPTA7TD1yO3I9cisxMTJ8MDtxPUwrOTZ8MDtzPUwrOTJ8MDtoPUwrODh8MDtqPUwrODR8MDtuPUwrODB8MDt0PUwrNzZ8MDtvPUwrNzJ8MDtLPUwrNjh8MDt4PUwrNjR8MDtBPUwrNjB8MDtwPUwrNTZ8MDtIPUwrNTJ8MDtKPUwrNDh8MDtDPUwrNDR8MDtEPUwrNDB8MDt6PUwrMzZ8MDtJPUwrMzJ8MDt2PUwrMjh8MDt3PUwrMjR8MDtGPUwrMjB8MDtCPUwrMTZ8MDtFPUwrMTJ8MDt1PUwrOHwwO0c9TCs0fDA7eT1MO2tbcT4+Ml09YTtrW3M+PjJdPWI7a1toPj4yXT1jO2tbaj4+Ml09ZDtrW24+PjJdPWU7a1t0Pj4yXT1mO2tbbz4+Ml09ZztrW0s+PjJdPWtbKGtbcT4+Ml18MCkrOD4+Ml07a1t4Pj4yXT0obFsoa1tzPj4yXXwwKSsyOD4+MF0mMXwwKT09MCYxO2tbQT4+Ml09a1trW2tbcz4+Ml0+PjJdPj4yXTtrW3A+PjJdPShrW0E+PjJdfDApKyhrW3g+PjJdfDApKyhrW3Q+PjJdfDApO2Q9KGtbcT4+Ml18MCkrNDR8MDtlPShrW2Q+PjJdfDApKzF8MDtrW2Q+PjJdPWU7a1tKPj4yXT1lO2tbQz4+Ml09a1soa1tzPj4yXXwwKSs0Pj4yXTtpZihrW28+PjJdfDApa1tIPj4yXT0oa1tqPj4yXXwwKS0oa1tBPj4yXXwwKS0oa1t4Pj4yXXwwKTtlbHNle2tbSD4+Ml09KGtbKGtbcT4+Ml18MCkrNDQ+PjJdfDApKzE7ZT0oa1txPj4yXXwwKSs0NHwwO2tbZT4+Ml09KGtbZT4+Ml18MCkrKGtbcD4+Ml18MCl9Zj1rW2g+PjJdfDA7aWYoa1soa1toPj4yXXwwKSsxNj4+Ml18MClmPShrW2YrMTY+PjJdfDApKzF8MDtlbHNlIGY9a1tmKzEyPj4yXXwwO2tbej4+Ml09ZjtoPWVBKGtbSz4+Ml18MCl8MDtrWyhrW3M+PjJdfDApKzI0Pj4yXT1oO2tCKGtbcT4+Ml18MCxrW2tbcz4+Ml0+PjJdfDAsa1tIPj4yXXwwLGtbbj4+Ml18MCw1KXwwO2lmKGtbeD4+Ml18MClzeChrW0s+PjJdfDAsMTEzLGtbKGtbcz4+Ml18MCkrOD4+Ml18MCwoa1tIPj4yXXwwKSsoa1tBPj4yXXwwKXwwKXwwO2lmKCEoa1tvPj4yXXwwKSlmSChrW3E+PjJdfDAsa1tqPj4yXXwwLChrW0g+PjJdfDApKyhrW0E+PjJdfDApKyhrW3g+PjJdfDApfDAsa1t0Pj4yXXwwKTt0eChrW0s+PjJdfDAsOTksKGtbSD4+Ml18MCkrKGtbQz4+Ml18MCl8MCwoa1twPj4yXXwwKS0oa1tDPj4yXXwwKXwwLGtbSj4+Ml18MCl8MDtpZigoa1tDPj4yXXwwKT4wKXtrW0k+PjJdPShrWyhrW3E+PjJdfDApKzQ0Pj4yXXwwKSsxO2Y9KGtbcT4+Ml18MCkrNDR8MDtrW2Y+PjJdPShrW2Y+PjJdfDApKyhrWyhrW3M+PjJdfDApKzQ+PjJdfDApO2tbQj4+Ml09KGtbQT4+Ml18MCktKGtbKGtbcz4+Ml18MCkrND4+Ml18MCkrKGtbeD4+Ml18MCk7Zj1rW0s+PjJdfDA7aWYoa1t4Pj4yXXwwKXt4PWFBKGYsMjIsKGtbSD4+Ml18MCkrKGtbQT4+Ml18MCl8MCl8MDtrW3Y+PjJdPXh9ZWxzZXt4PWFBKGYsMTA5LGtbKGtbcz4+Ml18MCkrOD4+Ml18MCl8MDtrW3Y+PjJdPXh9dHgoa1tLPj4yXXwwLDk1LGtbST4+Ml18MCxrW0g+PjJdfDAsa1soa1tzPj4yXXwwKSs0Pj4yXXwwKXwwO3g9b0Eoa1tLPj4yXXwwLGtbKGtbcz4+Ml18MCkrMjA+PjJdfDApfDA7a1tGPj4yXT14O2lmKGlbKGtba1txPj4yXT4+Ml18MCkrNjk+PjBdfDApe3I9TDtyZXR1cm59a1soa1tGPj4yXXwwKSs4Pj4yXT0oa1tCPj4yXXwwKSsoa1t0Pj4yXXwwKTtrW0U+PjJdPWtbKGtbRj4+Ml18MCkrMTY+PjJdO2RTKGtbKGtbRT4+Ml18MCkrMTY+PjJdfDAsMCxtWyhrW0U+PjJdfDApKzY+PjFdfDApfDA7V2goa1tLPj4yXXwwLC0xLGtbRT4+Ml18MCwtNik7RT1URyhrW3E+PjJdfDAsa1trW3M+PjJdPj4yXXwwLGtbQz4+Ml18MCwobVsoa1tFPj4yXXwwKSs4Pj4xXXwwKS0xfDApfDA7a1soa1tGPj4yXXwwKSsxNj4+Ml09RTtFPUd4KGtbSz4+Ml18MCl8MDtrW3c+PjJdPUU7dHgoa1tLPj4yXXwwLDE4LChrW3c+PjJdfDApKzF8MCwwLChrW3c+PjJdfDApKzF8MCl8MDtFPWVBKGtbSz4+Ml18MCl8MDtrWyhrW3M+PjJdfDApKzE2Pj4yXT1FO0U9KGtbcT4+Ml18MCkrNDR8MDtGPShrW0U+PjJdfDApKzF8MDtrW0U+PjJdPUY7a1soa1tzPj4yXXwwKSsxMj4+Ml09RjtzeChrW0s+PjJdfDAsMTQsa1soa1tzPj4yXXwwKSsxMj4+Ml18MCxrWyhrW3M+PjJdfDApKzE2Pj4yXXwwKXwwO2FBKGtbSz4+Ml18MCwxMzMsa1soa1tzPj4yXXwwKSs4Pj4yXXwwKXwwO2lmKGtbej4+Ml18MClzeChrW0s+PjJdfDAsMjIsa1t6Pj4yXXwwLGtbKGtbcz4+Ml18MCkrMjQ+PjJdfDApfDA7aEEoa1tLPj4yXXwwLGtbdj4+Ml18MCk7Zkgoa1txPj4yXXwwLGtbSD4+Ml18MCxrW0k+PjJdfDAsa1soa1tzPj4yXXwwKSs0Pj4yXXwwKTtoQShrW0s+PjJdfDAsa1t3Pj4yXXwwKX1pZihsWyhrW3M+PjJdfDApKzI4Pj4wXSYxKWtbRD4+Ml09MTI1O2Vsc2Uga1tEPj4yXT0xMjY7c3goa1tLPj4yXXwwLGtbRD4+Ml18MCxrWyhrW3M+PjJdfDApKzg+PjJdfDAsa1tKPj4yXXwwKXwwO2lmKCEoa1t6Pj4yXXwwKSl7cj1MO3JldHVybn1rW0c+PjJdPTA7Sj10eChrW0s+PjJdfDAsNjcsa1t6Pj4yXXwwLDAsMSl8MDtrW3U+PjJdPUo7YUEoa1tLPj4yXXwwLDUzLGtbKGtbcz4+Ml18MCkrOD4+Ml18MCl8MDtpZihpWyhrW3M+PjJdfDApKzI5Pj4wXXwwKXtJPShrW3E+PjJdfDApKzQ0fDA7Sj0oa1tJPj4yXXwwKSsxfDA7a1tJPj4yXT1KO2tbRz4+Ml09Sjt0eChrW0s+PjJdfDAsOTYsa1soa1tzPj4yXXwwKSs4Pj4yXXwwLGtbQT4+Ml18MCxrW0c+PjJdfDApfDB9YUEoa1tLPj4yXXwwLDExNyxrWyhrW3M+PjJdfDApKzg+PjJdfDApfDA7aWYoaVsoa1tzPj4yXXwwKSsyOT4+MF18MCl7Sj0oR3goa1tLPj4yXXwwKXwwKSsyfDA7a1t5Pj4yXT1KO3R4KGtbSz4+Ml18MCwzNywoa1tIPj4yXXwwKSsoa1tBPj4yXXwwKXwwLGtbeT4+Ml18MCxrW0c+PjJdfDApfDA7VGgoa1tLPj4yXXwwLC0xMjgpfWhBKGtbSz4+Ml18MCxrW3U+PjJdfDApO3I9TDtyZXR1cm59ZnVuY3Rpb24gd0goYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxtPTAsbj0wLG89MCxwPTA7cD1yO3I9ciszMnwwO2g9cCsyMHwwO2U9cCsxNnwwO209cCsxMnwwO249cCs4fDA7bz1wKzR8MDtmPXA7a1tlPj4yXT1hO2tbbT4+Ml09YjtrW24+PjJdPWM7a1tvPj4yXT1kO2lmKCEoa1ttPj4yXXwwKSl7a1toPj4yXT0wO289a1toPj4yXXwwO3I9cDtyZXR1cm4gb3wwfWRvIGlmKChsW2tbbT4+Ml0+PjBdfDApPT0xNTI/KGtbKGtbbT4+Ml18MCkrMjg+PjJdfDApPT0oa1tuPj4yXXwwKTowKWlmKChqWyhrW20+PjJdfDApKzMyPj4xXXwwKTwwKXtpW2tbbT4+Ml0+PjBdPTEwMTticmVha31lbHNle289U3koa1tlPj4yXXwwLGtbKGtbKGtbbz4+Ml18MCkrND4+Ml18MCkrKChqWyhrW20+PjJdfDApKzMyPj4xXXwwKSoyMHwwKT4+Ml18MCwwKXwwO2tbZj4+Ml09bztzdihrW2U+PjJdfDAsa1ttPj4yXXwwKTtrW20+PjJdPWtbZj4+Ml07YnJlYWt9ZWxzZSBnPTg7d2hpbGUoMCk7ZG8gaWYoKGd8MCk9PTgpe2E9d0goa1tlPj4yXXwwLGtbKGtbbT4+Ml18MCkrMTI+PjJdfDAsa1tuPj4yXXwwLGtbbz4+Ml18MCl8MDtrWyhrW20+PjJdfDApKzEyPj4yXT1hO2E9d0goa1tlPj4yXXwwLGtbKGtbbT4+Ml18MCkrMTY+PjJdfDAsa1tuPj4yXXwwLGtbbz4+Ml18MCl8MDtrWyhrW20+PjJdfDApKzE2Pj4yXT1hO2U9a1tlPj4yXXwwO2E9KGtbbT4+Ml18MCkrMjB8MDtpZihrWyhrW20+PjJdfDApKzQ+PjJdJjIwNDgpe3hIKGUsa1thPj4yXXwwLGtbbj4+Ml18MCxrW28+PjJdfDAsMSk7YnJlYWt9ZWxzZXt5SChlLGtbYT4+Ml18MCxrW24+PjJdfDAsa1tvPj4yXXwwKTticmVha319d2hpbGUoMCk7a1toPj4yXT1rW20+PjJdO289a1toPj4yXXwwO3I9cDtyZXR1cm4gb3wwfWZ1bmN0aW9uIHhIKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGk9MCxqPTAsbT0wLG49MCxvPTAscD0wO3A9cjtyPXIrMzJ8MDtmPXArMjh8MDtnPXArMjR8MDtoPXArMjB8MDtpPXArMTZ8MDtqPXArMTJ8MDtvPXArOHwwO249cCs0fDA7bT1wO2tbZj4+Ml09YTtrW2c+PjJdPWI7a1toPj4yXT1jO2tbaT4+Ml09ZDtrW2o+PjJdPWU7aWYoIShrW2c+PjJdfDApKXtyPXA7cmV0dXJufXdoaWxlKDEpe3lIKGtbZj4+Ml18MCxrW2tbZz4+Ml0+PjJdfDAsa1toPj4yXXwwLGtbaT4+Ml18MCk7eUgoa1tmPj4yXXwwLGtbKGtbZz4+Ml18MCkrMzY+PjJdfDAsa1toPj4yXXwwLGtbaT4+Ml18MCk7eUgoa1tmPj4yXXwwLGtbKGtbZz4+Ml18MCkrNDQ+PjJdfDAsa1toPj4yXXwwLGtbaT4+Ml18MCk7ZD13SChrW2Y+PjJdfDAsa1soa1tnPj4yXXwwKSs0MD4+Ml18MCxrW2g+PjJdfDAsa1tpPj4yXXwwKXwwO2tbKGtbZz4+Ml18MCkrNDA+PjJdPWQ7ZD13SChrW2Y+PjJdfDAsa1soa1tnPj4yXXwwKSszMj4+Ml18MCxrW2g+PjJdfDAsa1tpPj4yXXwwKXwwO2tbKGtbZz4+Ml18MCkrMzI+PjJdPWQ7a1tvPj4yXT1rWyhrW2c+PjJdfDApKzI4Pj4yXTtrW20+PjJdPWtba1tvPj4yXT4+Ml07a1tuPj4yXT0oa1tvPj4yXXwwKSs4O3doaWxlKDEpe2lmKChrW20+PjJdfDApPD0wKWJyZWFrO3hIKGtbZj4+Ml18MCxrWyhrW24+PjJdfDApKzIwPj4yXXwwLGtbaD4+Ml18MCxrW2k+PjJdfDAsMSk7aWYoKGxbKGtbbj4+Ml18MCkrMzYrMT4+MF18MCk+Pj4yJjEpeUgoa1tmPj4yXXwwLGtbKGtbbj4+Ml18MCkrNjQ+PjJdfDAsa1toPj4yXXwwLGtbaT4+Ml18MCk7a1ttPj4yXT0oa1ttPj4yXXwwKSstMTtrW24+PjJdPShrW24+PjJdfDApKzcyfWlmKCEoa1tqPj4yXXwwKSl7Zj05O2JyZWFrfWQ9a1soa1tnPj4yXXwwKSs0OD4+Ml18MDtrW2c+PjJdPWQ7aWYoIWQpe2Y9OTticmVha319aWYoKGZ8MCk9PTkpe3I9cDtyZXR1cm59fWZ1bmN0aW9uIHlIKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaT0wLGo9MDtqPXI7cj1yKzMyfDA7ZT1qKzE2fDA7Zj1qKzEyfDA7Zz1qKzh8MDtoPWorNHwwO2k9ajtrW2U+PjJdPWE7a1tmPj4yXT1iO2tbZz4+Ml09YztrW2g+PjJdPWQ7aWYoIShrW2Y+PjJdfDApKXtyPWo7cmV0dXJufWtbaT4+Ml09MDt3aGlsZSgxKXtpZigoa1tpPj4yXXwwKT49KGtba1tmPj4yXT4+Ml18MCkpYnJlYWs7Yj13SChrW2U+PjJdfDAsa1soa1soa1tmPj4yXXwwKSs0Pj4yXXwwKSsoKGtbaT4+Ml18MCkqMjB8MCk+PjJdfDAsa1tnPj4yXXwwLGtbaD4+Ml18MCl8MDtrWyhrWyhrW2Y+PjJdfDApKzQ+PjJdfDApKygoa1tpPj4yXXwwKSoyMHwwKT4+Ml09YjtrW2k+PjJdPShrW2k+PjJdfDApKzF9cj1qO3JldHVybn1mdW5jdGlvbiB6SChhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaT0wLGw9MDtsPXI7cj1yKzMyfDA7ZD1sKzIwfDA7ZT1sKzE2fDA7Zj1sKzEyfDA7aD1sKzh8MDtnPWwrNHwwO2k9bDtrW2Q+PjJdPWE7a1tlPj4yXT1iO2tbZj4+Ml09YztrW2c+PjJdPTE7a1tpPj4yXT0wO3doaWxlKDEpe2lmKCEoa1soa1tlPj4yXXwwKSs0OD4+Ml18MCkpYnJlYWs7a1tlPj4yXT1rWyhrW2U+PjJdfDApKzQ4Pj4yXTtrW2c+PjJdPShrW2c+PjJdfDApKzF9d2hpbGUoMSl7aWYoIShrW2U+PjJdfDApKXtkPTc7YnJlYWt9a1toPj4yXT1rWyhrW2U+PjJdfDApKzQ4Pj4yXTtrWyhrW2U+PjJdfDApKzQ4Pj4yXT0wO2E9WnYoa1tkPj4yXXwwLGtbZT4+Ml18MCxrW2Y+PjJdfDApfDA7a1tpPj4yXT1hO2tbKGtbZT4+Ml18MCkrNDg+PjJdPWtbaD4+Ml07aWYoa1tpPj4yXXwwKXtkPTc7YnJlYWt9alsoa1tlPj4yXXwwKSs2Pj4xXT1rW2c+PjJdO2tbZT4+Ml09a1soa1tlPj4yXXwwKSs1Mj4+Ml19aWYoKGR8MCk9PTcpe3I9bDtyZXR1cm4ga1tpPj4yXXwwfXJldHVybiAwfWZ1bmN0aW9uIEFIKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxpPTAsaj0wLG09MCxuPTAsbz0wLHA9MCxxPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTAsRT0wLEY9MCxHPTA7Rz1yO3I9cisxMjh8MDtGPUc7bj1HKzEyMHwwO289RysxMTZ8MDtwPUcrMTEyfDA7ZT1HKzEwOHwwO2k9RysxMDR8MDtFPUcrMTAwfDA7QT1HKzk2fDA7dD1HKzkyfDA7cz1HKzg4fDA7cT1HKzg0fDA7dj1HKzgwfDA7Qj1HKzc2fDA7dz1HKzcyfDA7aD1HKzY4fDA7Zz1HKzY0fDA7dT1HKzQwfDA7ZD1HKzMyfDA7bT1HKzI4fDA7ej1HKzI0fDA7eD1HKzIwfDA7eT1HKzE2fDA7Qz1HKzEyfDA7RD1HKzh8MDtqPUcrNHwwO2tbbj4+Ml09YTtrW28+PjJdPWI7a1twPj4yXT1jO2tbZT4+Ml09a1soa1tvPj4yXXwwKSsyOD4+Ml07a1tpPj4yXT1rW2tba1tvPj4yXT4+Ml0+PjJdO2tbRT4+Ml09a1soa1tuPj4yXXwwKSs4Pj4yXTtrW0E+PjJdPWtbKGtbbz4+Ml18MCkrNDg+PjJdO2tbdj4+Ml09MDtrW2g+PjJdPTA7a1tnPj4yXT01O2lmKGt4KGtbbj4+Ml18MCwzMywwLDAsMCl8MCl7cj1HO3JldHVybn1hPWVBKGtbRT4+Ml18MCl8MDtrW3E+PjJdPWE7VUcoa1tuPj4yXXwwLGtbbz4+Ml18MCxrW3E+PjJdfDApO2tbeD4+Ml09a1soa1tvPj4yXXwwKSs1Nj4+Ml07a1t5Pj4yXT1rWyhrW28+PjJdfDApKzYwPj4yXTtrW0M+PjJdPWtbKGtbbz4+Ml18MCkrMTI+PjJdO2tbRD4+Ml09a1soa1tvPj4yXXwwKSsxNj4+Ml07a1soa1tvPj4yXXwwKSs2MD4+Ml09MDtrWyhrW28+PjJdfDApKzU2Pj4yXT0wO2tbKGtbbz4+Ml18MCkrMTY+PjJdPTA7a1soa1tvPj4yXXwwKSsxMj4+Ml09MDtrW3o+PjJdPWtbKGtbbz4+Ml18MCkrNDQ+PjJdO2tbZD4+Ml09MDt3aGlsZSgxKXtpZigoa1tkPj4yXXwwKT49KGtba1tlPj4yXT4+Ml18MCkpYnJlYWs7Yj1rW2Q+PjJdfDA7aWYoKGxbKGtbZT4+Ml18MCkrOCsoKGtbZD4+Ml18MCkqNzJ8MCkrMzYrMT4+MF18MCk+Pj41JjEpe2Y9NTticmVha31rW2Q+PjJdPWIrMX1pZigoZnwwKT09NSlrW3Y+PjJdPWtbKGtbZT4+Ml18MCkrOCsoYio3MnwwKSs0ND4+Ml07Zj0oa1tuPj4yXXwwKSs0MHwwO2I9a1tmPj4yXXwwO2tbZj4+Ml09YisxO2tbdz4+Ml09YjtiPShrW3o+PjJdfDApIT0wO2lmKChsWyhrW28+PjJdfDApKzQ+PjBdfDB8MCk9PTExNSl7a1tnPj4yXT1iPzg6NjtlPShrW24+PjJdfDApKzQwfDA7Zj1rW2U+PjJdfDA7a1tlPj4yXT1mKzE7a1toPj4yXT1mfWVsc2Uga1tnPj4yXT1iPzc6NTtGQih1LGtbZz4+Ml18MCxrW3c+PjJdfDApO2Y9KGtbbj4+Ml18MCkrNDR8MDtnPShrW2Y+PjJdfDApKzF8MDtrW2Y+PjJdPWc7a1tCPj4yXT1nO3R4KGtbRT4+Ml18MCwxMTAsa1t2Pj4yXXwwLGtbQj4+Ml18MCxrW2k+PjJdfDApfDA7aWYoa1t6Pj4yXXwwKXtpPUVIKGtbbj4+Ml18MCxrW28+PjJdfDAsMSl8MDtrW2o+PjJdPWk7d3goa1tFPj4yXXwwLDEwNyxrW3c+PjJdfDAsKGtba1t6Pj4yXT4+Ml18MCkrMnwwLDAsa1tqPj4yXXwwLC02KXwwO2tbdSsyMD4+Ml09a1t6Pj4yXX1lbHNlIHN4KGtbRT4+Ml18MCwxMDcsa1t3Pj4yXXwwLGtbaT4+Ml18MCl8MDtpZihrW2g+PjJdfDApe2o9c3goa1tFPj4yXXwwLDEwNyxrW2g+PjJdfDAsMCl8MDtrWyhrW28+PjJdfDApKzIwPj4yXT1qO2o9KGtbbz4+Ml18MCkrOHwwO2tbaj4+Ml09a1tqPj4yXXwzMn1rWyhrW28+PjJdfDApKzQ0Pj4yXT0wO2tbKGtbQT4+Ml18MCkrNTI+PjJdPTA7aj1adihrW24+PjJdfDAsa1tBPj4yXXwwLHUpfDA7a1ttPj4yXT1qO2tbKGtbQT4+Ml18MCkrNTI+PjJdPWtbbz4+Ml07aWYoIShrW20+PjJdfDApKXtiPXN4KGtbRT4+Ml18MCw1NyxrW3c+PjJdfDAsa1txPj4yXXwwKXwwO2tbdD4+Ml09YjthQShrW0U+PjJdfDAsMTI0LGtbdj4+Ml18MCl8MDtiPWtbRT4+Ml18MDtjPWtbdz4+Ml18MDtpZihrW3o+PjJdfDApdHgoYiw5NixjLChrW2tbej4+Ml0+PjJdfDApKzF8MCxrW0I+PjJdfDApfDA7ZWxzZSBzeChiLDEyMixjLGtbQj4+Ml18MCl8MDthQShrW0U+PjJdfDAsMTE3LGtbdz4+Ml18MCl8MDtCPWVBKGtbRT4+Ml18MCl8MDtrW3M+PjJdPUI7cEgoa1tFPj4yXXwwLGtbRD4+Ml18MCxrW3M+PjJdfDApO2FIKGtbbj4+Ml18MCxrW28+PjJdfDAsa1trW28+PjJdPj4yXXwwLGtbdj4+Ml18MCwwLDAsa1twPj4yXXwwLGtbcz4+Ml18MCxrW3E+PjJdfDApO2lmKGtbQz4+Ml18MClzeChrW0U+PjJdfDAsNjgsa1tDPj4yXXwwLGtbcT4+Ml18MCl8MDtpQShrW0U+PjJdfDAsa1tzPj4yXXwwKTtpZihrWyhrW28+PjJdfDApKzg+PjJdJjgpT2goa1tuPj4yXXwwLDM1OTgwLEYpO2Vsc2V7a1soa1tvPj4yXXwwKSs0OD4+Ml09MDtadihrW24+PjJdfDAsa1tvPj4yXXwwLHUpfDA7a1soa1tvPj4yXXwwKSs0OD4+Ml09a1tBPj4yXX1nQShrW0U+PjJdfDAsa1t0Pj4yXXwwKXwwO2lBKGtbRT4+Ml18MCxrW3E+PjJdfDApfW92KGtba1tuPj4yXT4+Ml18MCxrWyhrW28+PjJdfDApKzQ0Pj4yXXwwKTtrWyhrW28+PjJdfDApKzQ0Pj4yXT1rW3o+PjJdO2tbKGtbbz4+Ml18MCkrNTY+PjJdPWtbeD4+Ml07a1soa1tvPj4yXXwwKSs2MD4+Ml09a1t5Pj4yXTtyPUc7cmV0dXJufWZ1bmN0aW9uIEJIKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxuPTAsbz0wLHA9MCxxPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTAsRT0wLEY9MCxHPTAsSD0wLEk9MCxKPTAsSz0wLEw9MCxNPTAsTj0wLE89MCxQPTAsUT0wLFI9MCxTPTAsVD0wLFU9MCxWPTAsVz0wLFg9MCxZPTAsWj0wLF89MCwkPTAsYWE9MCxiYT0wO2JhPXI7cj1yKzIyNHwwO3A9YmErMjIwfDA7cT1iYSsyMTZ8MDtzPWJhKzIxMnwwO3Q9YmErMjA4fDA7ZD1iYSsyMDR8MDtlPWJhKzIwMHwwO1M9YmErMTk2fDA7YWE9YmErMTkyfDA7SD1iYSsxNjh8MDtJPWJhKzE0NHwwO1Q9YmErMTQwfDA7VT1iYSsxMzZ8MDtFPWJhKzEzMnwwO0Y9YmErMTI4fDA7WD1iYSsxMjR8MDtZPWJhKzEyMHwwO0M9YmErMTE2fDA7RD1iYSsxMTJ8MDt6PWJhKzEwOHwwO0E9YmErMTA0fDA7Qj1iYSsxMDB8MDt5PWJhKzk2fDA7dz1iYSs5MnwwO3g9YmErODh8MDtWPWJhKzg0fDA7Vz1iYSs4MHwwO1o9YmErNzZ8MDtfPWJhKzcyfDA7JD1iYSs2OHwwO0w9YmErNjR8MDtNPWJhKzYwfDA7dj1iYSs1NnwwO089YmErNTJ8MDtRPWJhKzQ4fDA7Uj1iYSs0NHwwO0c9YmErNDB8MDtvPWJhKzM2fDA7Tj1iYSszMnwwO3U9YmErMjh8MDtKPWJhKzI0fDA7Sz1iYSsyMHwwO2c9YmErMTZ8MDtuPWJhKzEyfDA7aD1iYSs4fDA7Zj1iYSs0fDA7UD1iYTtrW3E+PjJdPWE7a1tzPj4yXT1iO2tbdD4+Ml09YztrW0Q+PjJdPTA7a1tRPj4yXT0wO2tbRz4+Ml09a1trW3E+PjJdPj4yXTtrW2FhPj4yXT1rWyhrW3E+PjJdfDApKzg+PjJdO2E9ZUEoa1thYT4+Ml18MCl8MDtrW00+PjJdPWE7YT1lQShrW2FhPj4yXXwwKXwwO2tbTD4+Ml09YTtrW08+PjJdPWxbKGtbcz4+Ml18MCkrND4+MF07a1tTPj4yXT1rWyhrW3M+PjJdfDApKzQ4Pj4yXTtrW28+PjJdPWtbKGtbcz4+Ml18MCkrNDQ+PjJdO2tbTj4+Ml09a1trW28+PjJdPj4yXTthOmRvIGlmKChrW08+PjJdfDApIT0xMTYpe2tbZD4+Ml09MTt3aGlsZSgxKXtpZihsWyhrW0c+PjJdfDApKzY5Pj4wXXwwKWJyZWFrIGE7aWYoKGtbZD4+Ml18MCk+KGtba1trW3M+PjJdPj4yXT4+Ml18MCkpYnJlYWsgYTtrW2U+PjJdPTA7a1tnPj4yXT1rWyhrW28+PjJdfDApKzQ+PjJdO3doaWxlKDEpe2lmKChrW2U+PjJdfDApPj0oa1tOPj4yXXwwKSlicmVhaztpZigobVsoa1tnPj4yXXwwKSsxNj4+MV18MCk9PShrW2Q+PjJdfDApKWJyZWFrO2tbZT4+Ml09KGtbZT4+Ml18MCkrMTtrW2c+PjJdPShrW2c+PjJdfDApKzIwfWlmKChrW2U+PjJdfDApPT0oa1tOPj4yXXwwKSl7YT1ldyhrW0c+PjJdfDAsMTM0LDApfDA7a1tuPj4yXT1hO2lmKCEoa1tuPj4yXXwwKSlicmVhazthPShrW24+PjJdfDApKzR8MDtrW2E+PjJdPWtbYT4+Ml18MTAyNDtrWyhrW24+PjJdfDApKzg+PjJdPWtbZD4+Ml07YT1idyhrW3E+PjJdfDAsa1tvPj4yXXwwLGtbbj4+Ml18MCl8MDtrW28+PjJdPWE7aWYoa1tvPj4yXXwwKXtjPWtbZD4+Ml0mNjU1MzU7YT1rW04+PjJdfDA7a1tOPj4yXT1hKzE7alsoa1soa1tvPj4yXXwwKSs0Pj4yXXwwKSsoYSoyMHwwKSsxNj4+MV09Y319a1tkPj4yXT0oa1tkPj4yXXwwKSsxfWtbcD4+Ml09NzthYT1rW3A+PjJdfDA7cj1iYTtyZXR1cm4gYWF8MH13aGlsZSgwKTthPWR4KGtbRz4+Ml18MCwoa1tOPj4yXXwwKSsxPDwyLDApfDA7a1t1Pj4yXT1hO2lmKGtbdT4+Ml18MCl7a1trW3U+PjJdPj4yXT1rW04+PjJdO2tbZD4+Ml09MTtrW2g+PjJdPWtbKGtbbz4+Ml18MCkrND4+Ml07d2hpbGUoMSl7aWYoKGtbZD4+Ml18MCk+KGtbTj4+Ml18MCkpYnJlYWs7a1soa1t1Pj4yXXwwKSsoa1tkPj4yXTw8Mik+PjJdPShtWyhrW2g+PjJdfDApKzE2Pj4xXXwwKS0xO2tbZD4+Ml09KGtbZD4+Ml18MCkrMTtrW2g+PjJdPShrW2g+PjJdfDApKzIwfWE9RUgoa1txPj4yXXwwLGtbcz4+Ml18MCwxKXwwO2tbUj4+Ml09YX1lbHNlIGtbUj4+Ml09MDtrWyhrW3M+PjJdfDApKzQ0Pj4yXT1rW28+PjJdO2E9X3koa1trW3E+PjJdPj4yXXwwLGtbbz4+Ml18MCwwKXwwO2tbKGtbUz4+Ml18MCkrNDQ+PjJdPWE7YjpkbyBpZigoa1tPPj4yXXwwKSE9MTE2KXtrW2Y+PjJdPWtba1trW3M+PjJdPj4yXT4+Ml07a1taPj4yXT0oa1soa1txPj4yXXwwKSs0ND4+Ml18MCkrMTthPShrW3E+PjJdfDApKzQ0fDA7a1thPj4yXT0oa1thPj4yXXwwKSsoKGtbZj4+Ml18MCkrMSk7c3goa1thYT4+Ml18MCw3NiwwLGtbWj4+Ml18MCl8MDthPXNBKGtbRz4+Ml18MCxrW2Y+PjJdfDAsMSl8MDtrW1E+PjJdPWE7aWYoa1tRPj4yXXwwKXtrW2Q+PjJdPTA7d2hpbGUoMSl7aWYoKGtbZD4+Ml18MCk+PShrW2Y+PjJdfDApKWJyZWFrIGI7YT1ESChrW3E+PjJdfDAsa1tzPj4yXXwwLGtbZD4+Ml18MCl8MDtrWyhrW1E+PjJdfDApKzIwKyhrW2Q+PjJdPDwyKT4+Ml09YTtpWyhrWyhrW1E+PjJdfDApKzE2Pj4yXXwwKSsoa1tkPj4yXXwwKT4+MF09MDtrW2Q+PjJdPShrW2Q+PjJdfDApKzF9fX1lbHNlIGtbWj4+Ml09MDt3aGlsZSgwKTtrWyhrW3M+PjJdfDApKzQ4Pj4yXT0wO2tbKGtbUz4+Ml18MCkrNTI+PjJdPTA7Ynooa1txPj4yXXwwLGtbcz4+Ml18MCxrWyhrW3M+PjJdfDApKzQ0Pj4yXXwwLDI5MDk5KXwwO2lmKCEoa1soa1tTPj4yXXwwKSs0OD4+Ml18MCkpYnooa1txPj4yXXwwLGtbUz4+Ml18MCxrWyhrW1M+PjJdfDApKzQ0Pj4yXXwwLDI5MDk5KXwwO1VHKGtbcT4+Ml18MCxrW3M+PjJdfDAsa1tNPj4yXXwwKTtpZigoa1tPPj4yXXwwKT09MTE2PyhrWyhrW3M+PjJdfDApKzEyPj4yXXwwKSE9MDowKXtkPShrW3E+PjJdfDApKzQ0fDA7YT0oa1tkPj4yXXwwKSsxfDA7a1tkPj4yXT1hO2tbVj4+Ml09YTthPShrW3E+PjJdfDApKzQ0fDA7ZD0oa1thPj4yXXwwKSsxfDA7a1thPj4yXT1kO2tbVz4+Ml09ZDtkPWtbcz4+Ml18MDtpZihrWyhrW3M+PjJdfDApKzE2Pj4yXXwwKWQ9KGtbZCsxNj4+Ml18MCkrMXwwO2Vsc2UgZD1rW2QrMTI+PjJdfDA7c3goa1thYT4+Ml18MCw4NCxkLGtbVj4+Ml18MCl8MDtzeChrW2FhPj4yXXwwLDg0LGtbVj4+Ml18MCxrW1c+PjJdfDApfDB9ZWxzZXtrW1c+PjJdPTA7a1tWPj4yXT0wfXN2KGtbRz4+Ml18MCxrWyhrW3M+PjJdfDApKzU2Pj4yXXwwKTtrWyhrW3M+PjJdfDApKzU2Pj4yXT0wO3N2KGtbRz4+Ml18MCxrWyhrW3M+PjJdfDApKzYwPj4yXXwwKTtrWyhrW3M+PjJdfDApKzYwPj4yXT0wO2E9KGtbcT4+Ml18MCkrNDR8MDtvPShrW2E+PjJdfDApKzF8MDtrW2E+PjJdPW87a1tUPj4yXT1vO289KGtbcT4+Ml18MCkrNDR8MDthPShrW28+PjJdfDApKzF8MDtrW28+PjJdPWE7a1tVPj4yXT1hO2E9KGtbcT4+Ml18MCkrNDR8MDtvPShrW2E+PjJdfDApKzF8MDtrW2E+PjJdPW87a1tYPj4yXT1vO289KGtbcT4+Ml18MCkrNDR8MDthPShrW28+PjJdfDApKzF8MDtrW28+PjJdPWE7a1tZPj4yXT1hO0ZCKEgsMTMsa1tUPj4yXXwwKTtGQihJLDEzLGtbVT4+Ml18MCk7YT0oR3goa1thYT4+Ml18MCl8MCkrMXwwO2tbRT4+Ml09YTtFPXR4KGtbYWE+PjJdfDAsMTUsa1tUPj4yXXwwLDAsa1tFPj4yXXwwKXwwO2tbdj4+Ml09RTtrWyhrW1M+PjJdfDApKzEyPj4yXT1rW1Y+PjJdO2tbSj4+Ml09a1soa1txPj4yXXwwKSs0MjQ+PjJdO1p2KGtbcT4+Ml18MCxrW1M+PjJdfDAsSCl8MDtnRChrW2FhPj4yXXwwLGtbVD4+Ml18MCk7aEEoa1thYT4+Ml18MCxrW3Y+PjJdfDApO1Y9KEd4KGtbYWE+PjJdfDApfDApKzF8MDtrW0Y+PjJdPVY7Vj10eChrW2FhPj4yXXwwLDE1LGtbVT4+Ml18MCwwLGtbRj4+Ml18MCl8MDtrW3Y+PjJdPVY7a1tfPj4yXT1rWyhrW3M+PjJdfDApKzEyPj4yXTtrWyQ+PjJdPWtbKGtbcz4+Ml18MCkrMTY+PjJdO2tbKGtbcz4+Ml18MCkrMTI+PjJdPWtbVz4+Ml07a1soa1tzPj4yXXwwKSsxNj4+Ml09MDtrW0s+PjJdPWtbKGtbcT4+Ml18MCkrNDI0Pj4yXTtadihrW3E+PjJdfDAsa1tzPj4yXXwwLEkpfDA7a1soa1tzPj4yXXwwKSsxMj4+Ml09a1tfPj4yXTtrWyhrW3M+PjJdfDApKzE2Pj4yXT1rWyQ+PjJdO2dEKGtbYWE+PjJdfDAsa1tVPj4yXXwwKTskPUZIKGtbcT4+Ml18MCxrW3M+PjJdfDAsSCxrW3Q+PjJdfDAsa1tYPj4yXXwwLGtbWj4+Ml18MCxrW1E+PjJdfDAsa1tNPj4yXXwwKXwwO2tbQz4+Ml09JDtpZigoa1tPPj4yXXwwKT09MTE2fChrW08+PjJdfDApPT0xMTUpeyQ9Rkgoa1txPj4yXXwwLGtbcz4+Ml18MCxJLGtbdD4+Ml18MCxrW1k+PjJdfDAsa1taPj4yXXwwLGtbUT4+Ml18MCxrW00+PjJdfDApfDA7a1tEPj4yXT0kfXRBKGtbUT4+Ml18MCk7aWYoKGtbTz4+Ml18MCk9PTExN3woa1tPPj4yXXwwKT09MTE4KXskPWtbTT4+Ml18MDtrW3o+PjJdPSQ7a1tBPj4yXT0kfWVsc2V7JD1zeChrW2FhPj4yXXwwLDE0LGtbWT4+Ml18MCxrW0Q+PjJdfDApfDA7a1t6Pj4yXT0kOyQ9c3goa1thYT4+Ml18MCwxNixrW1U+PjJdfDAsa1tNPj4yXXwwKXwwO2tbQT4+Ml09JDtnQShrW2FhPj4yXXwwLGtbej4+Ml18MCl8MDskPXhFKGpbKGtbcz4+Ml18MCkrNj4+MV18MCxqWyhrW1M+PjJdfDApKzY+PjFdfDApfDA7alsoa1tzPj4yXXwwKSs2Pj4xXT0kfWlmKChrW08+PjJdfDApPT0xMTgpe2tbQj4+Ml09a1t6Pj4yXTtpZigoalsoa1tzPj4yXXwwKSs2Pj4xXXwwKT4oalsoa1tTPj4yXXwwKSs2Pj4xXXwwKSlqWyhrW3M+PjJdfDApKzY+PjFdPWpbKGtbUz4+Ml18MCkrNj4+MV18MH1lbHNleyQ9c3goa1thYT4+Ml18MCwxNCxrW1g+PjJdfDAsa1tDPj4yXXwwKXwwO2tbQj4+Ml09JDtzeChrW2FhPj4yXXwwLDE2LGtbVD4+Ml18MCxrW00+PjJdfDApfDA7Z0Eoa1thYT4+Ml18MCxrW0I+PjJdfDApfDB9JD1zeChrW2FhPj4yXXwwLDE0LGtbWD4+Ml18MCxrW0M+PjJdfDApfDA7a1t5Pj4yXT0kO3N4KGtbYWE+PjJdfDAsMTYsa1tUPj4yXXwwLGtbej4+Ml18MCl8MDtnQShrW2FhPj4yXXwwLGtbTD4+Ml18MCl8MDtkbyBpZigoa1tPPj4yXXwwKSE9MTE2KWlmKChrW08+PjJdfDApPT0xMTgpe2tbdz4+Ml09a1t5Pj4yXTtrW3k+PjJdPShrW3k+PjJdfDApKzE7YnJlYWt9ZWxzZXskPXN4KGtbYWE+PjJdfDAsMTYsa1tUPj4yXXwwLGtbej4+Ml18MCl8MDtrW3c+PjJdPSQ7Z0Eoa1thYT4+Ml18MCxrW0w+PjJdfDApfDA7YnJlYWt9ZWxzZSBrW3c+PjJdPWtbeT4+Ml07d2hpbGUoMCk7JD1HeChrW2FhPj4yXXwwKXwwO2tbeD4+Ml09JDtpZigoa1tPPj4yXXwwKT09MTE2fChrW08+PjJdfDApPT0xMTUpc3goa1thYT4+Ml18MCwxNCxrW1k+PjJdfDAsa1tEPj4yXXwwKXwwO3N4KGtbYWE+PjJdfDAsMTYsa1tVPj4yXXwwLGtbQj4+Ml18MCl8MDtnQShrW2FhPj4yXXwwLGtbTD4+Ml18MCl8MDtoQShrW2FhPj4yXXwwLGtbdj4+Ml18MCk7c3goa1thYT4+Ml18MCwxNixrW1Q+PjJdfDAsa1tBPj4yXXwwKXwwO3N4KGtbYWE+PjJdfDAsMTYsa1tVPj4yXXwwLGtbQj4+Ml18MCl8MDtpQShrW2FhPj4yXXwwLGtbTD4+Ml18MCk7d3goa1thYT4+Ml18MCw5NCwwLDAsMCxrW3U+PjJdfDAsLTE1KXwwO3d4KGtbYWE+PjJdfDAsOTUsa1tIKzEyPj4yXXwwLGtbSSsxMj4+Ml18MCxrW04+PjJdfDAsa1tSPj4yXXwwLC02KXwwO1RoKGtbYWE+PjJdfDAsMSk7dHgoa1thYT4+Ml18MCwxOCxrW3k+PjJdfDAsa1t3Pj4yXXwwLGtbeD4+Ml18MCl8MDtpQShrW2FhPj4yXXwwLGtbTT4+Ml18MCk7aWYoKGxba1t0Pj4yXT4+MF18MCk9PTkpe2tbUD4+Ml09a1tTPj4yXTt3aGlsZSgxKXtpZighKGtbKGtbUD4+Ml18MCkrNDg+PjJdfDApKWJyZWFrO2tbUD4+Ml09a1soa1tQPj4yXXwwKSs0OD4+Ml19bkgoa1txPj4yXXwwLGtbKGtbUD4+Ml18MCkrMjg+PjJdfDAsa1trW1A+PjJdPj4yXXwwKX1pZihrWyhrW3M+PjJdfDApKzQ4Pj4yXXwwKXB2KGtbRz4+Ml18MCxrWyhrW3M+PjJdfDApKzQ4Pj4yXXwwKTtrWyhrW3M+PjJdfDApKzQ4Pj4yXT1rW1M+PjJdO2tbKGtbUz4+Ml18MCkrNTI+PjJdPWtbcz4+Ml07Q0goa1txPj4yXXwwLGxbKGtbcz4+Ml18MCkrND4+MF18MCxrW0o+PjJdfDAsa1tLPj4yXXwwLDApO2tbcD4+Ml09KGtbKGtbcT4+Ml18MCkrMzY+PjJdfDApIT0wJjE7YWE9a1twPj4yXXwwO3I9YmE7cmV0dXJuIGFhfDB9ZnVuY3Rpb24gQ0goYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaT0wLGo9MCxtPTAsbj0wLG89MCxwPTA7cD1yO3I9cis0OHwwO249cDtmPXArNDB8MDtnPXArMzZ8MDtoPXArMzJ8MDtpPXArMjh8MDtqPXArMjR8MDttPXArMjB8MDtvPXArMTZ8MDtrW2Y+PjJdPWE7a1tnPj4yXT1iO2tbaD4+Ml09YztrW2k+PjJdPWQ7a1tqPj4yXT1lO2lmKChsWyhrW2Y+PjJdfDApKzQwOT4+MF18MHwwKSE9Mil7cj1wO3JldHVybn1rW20+PjJdPWtbKGtbZj4+Ml18MCkrOD4+Ml07YT1rW2tbZj4+Ml0+PjJdfDA7ZT1rW2g+PjJdfDA7Yz1rW2k+PjJdfDA7ZD0oa1tqPj4yXXwwKSE9MD8zNTkyNDoxODQwMjtiPWF6KGtbZz4+Ml18MCl8MDtrW24+PjJdPWU7a1tuKzQ+PjJdPWM7a1tuKzg+PjJdPWQ7a1tuKzEyPj4yXT1iO249UWgoYSwzNTk0MyxuKXwwO2tbbz4+Ml09bjt3eChrW20+PjJdfDAsMTYyLGtbKGtbZj4+Ml18MCkrNDIwPj4yXXwwLDAsMCxrW28+PjJdfDAsLTEpfDA7cj1wO3JldHVybn1mdW5jdGlvbiBESChhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTA7aD1yO3I9cisxNnwwO2Q9aCsxMnwwO2U9aCs4fDA7Zj1oKzR8MDtnPWg7a1tkPj4yXT1hO2tbZT4+Ml09YjtrW2Y+PjJdPWM7aWYoa1soa1tlPj4yXXwwKSs0OD4+Ml18MCl7YT1ESChrW2Q+PjJdfDAsa1soa1tlPj4yXXwwKSs0OD4+Ml18MCxrW2Y+PjJdfDApfDA7a1tnPj4yXT1hfWVsc2Uga1tnPj4yXT0wO2lmKGtbZz4+Ml18MCl7Zz1rW2c+PjJdfDA7cj1oO3JldHVybiBnfDB9aWYoKGtbZj4+Ml18MCk+PShrW2tba1tlPj4yXT4+Ml0+PjJdfDApKXtnPWtbZz4+Ml18MDtyPWg7cmV0dXJuIGd8MH1hPXB5KGtbZD4+Ml18MCxrWyhrWyhrW2tbZT4+Ml0+PjJdfDApKzQ+PjJdfDApKygoa1tmPj4yXXwwKSoyMHwwKT4+Ml18MCl8MDtrW2c+PjJdPWE7Zz1rW2c+PjJdfDA7cj1oO3JldHVybiBnfDB9ZnVuY3Rpb24gRUgoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxsPTAsbj0wLG89MCxwPTAscT0wLHM9MDtxPXI7cj1yKzQ4fDA7ZD1xKzQwfDA7ZT1xKzM2fDA7cz1xKzMyfDA7bj1xKzI4fDA7aD1xKzI0fDA7Zj1xKzIwfDA7bz1xKzE2fDA7Zz1xKzEyfDA7bD1xKzh8MDtwPXErNHwwO2o9cTtrW2Q+PjJdPWE7a1tlPj4yXT1iO2tbcz4+Ml09YztrW24+PjJdPWtbKGtbZT4+Ml18MCkrNDQ+PjJdO2tbaD4+Ml09a1trWyhrW2U+PjJdfDApKzQ0Pj4yXT4+Ml07a1tmPj4yXT1rW2tbZD4+Ml0+PjJdO2E9c0Eoa1tmPj4yXXwwLChrW2g+PjJdfDApKyhrW3M+PjJdfDApfDAsMSl8MDtrW28+PjJdPWE7aWYoIShrW28+PjJdfDApKXtzPWtbbz4+Ml18MDtyPXE7cmV0dXJuIHN8MH1rW2c+PjJdPTA7d2hpbGUoMSl7aWYoKGtbZz4+Ml18MCk+PShrW2g+PjJdfDApKWJyZWFrO2tbbD4+Ml09KGtbKGtbbj4+Ml18MCkrND4+Ml18MCkrKChrW2c+PjJdfDApKjIwfDApO2tbcD4+Ml09a1trW2w+PjJdPj4yXTtjPWtbZD4+Ml18MDtpZihrWyhrW3A+PjJdfDApKzQ+PjJdJjI1Nil7cz1weShjLGtbcD4+Ml18MCl8MDtrW2o+PjJdPXN9ZWxzZXtzPURIKGMsa1tlPj4yXXwwLChtWyhrW2w+PjJdfDApKzE2Pj4xXXwwKS0xfDApfDA7a1tqPj4yXT1zO2lmKCEoa1tqPj4yXXwwKSlrW2o+PjJdPWtbKGtbZj4+Ml18MCkrOD4+Ml07cz1leihrW2Q+PjJdfDAsa1twPj4yXXwwLGtba1tqPj4yXT4+Ml18MCl8MDtrWyhrWyhrW24+PjJdfDApKzQ+PjJdfDApKygoa1tnPj4yXXwwKSoyMHwwKT4+Ml09c31rWyhrW28+PjJdfDApKzIwKyhrW2c+PjJdPDwyKT4+Ml09a1tqPj4yXTtpWyhrWyhrW28+PjJdfDApKzE2Pj4yXXwwKSsoa1tnPj4yXXwwKT4+MF09aVsoa1soa1tuPj4yXXwwKSs0Pj4yXXwwKSsoKGtbZz4+Ml18MCkqMjB8MCkrMTI+PjBdfDA7a1tnPj4yXT0oa1tnPj4yXXwwKSsxfXM9a1tvPj4yXXwwO3I9cTtyZXR1cm4gc3wwfWZ1bmN0aW9uIEZIKGEsYixjLGQsZSxmLGcsaCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7dmFyIGo9MCxtPTAsbj0wLG89MCxwPTAscT0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wO0Q9cjtyPXIrODB8MDtqPUQrNjR8MDttPUQrNjB8MDtuPUQrNTZ8MDtvPUQrNTJ8MDtwPUQrNDh8MDtxPUQrNDR8MDtzPUQrNDB8MDt0PUQrMzZ8MDt1PUQrMzJ8MDtDPUQrMjh8MDt5PUQrMjR8MDt2PUQrMjB8MDt3PUQrMTZ8MDt4PUQrMTJ8MDt6PUQrOHwwO0I9RCs0fDA7QT1EO2tbbT4+Ml09YTtrW24+PjJdPWI7a1tvPj4yXT1jO2tbcD4+Ml09ZDtrW3E+PjJdPWU7a1tzPj4yXT1mO2tbdD4+Ml09ZztrW3U+PjJdPWg7a1tDPj4yXT1rWyhrW20+PjJdfDApKzg+PjJdO2U9R3goa1tDPj4yXXwwKXwwO2tbdj4+Ml09ZTtlPWVBKGtbQz4+Ml18MCl8MDtrW3k+PjJdPWU7aWYoa1tzPj4yXXwwKXtnPWFBKGtbQz4+Ml18MCwyMixrW3M+PjJdfDApfDA7a1t3Pj4yXT1nO2c9a1tDPj4yXXwwO2E9a1soa1tvPj4yXXwwKSsxMj4+Ml18MDtmPShrW3M+PjJdfDApKzF8MDtlPWtbKGtbbz4+Ml18MCkrMTY+PjJdfDA7ZT13eChnLDk1LGEsZixlLHhBKGtbdD4+Ml18MCl8MCwtNil8MDtrW3g+PjJdPWU7dHgoa1tDPj4yXXwwLDE4LChrW3g+PjJdfDApKzJ8MCxrW3k+PjJdfDAsKGtbeD4+Ml18MCkrMnwwKXwwO2hBKGtbQz4+Ml18MCxrW3c+PjJdfDApO3R4KGtbQz4+Ml18MCw4NCxrWyhrW28+PjJdfDApKzEyPj4yXXwwLChrW3M+PjJdfDApKzF8MCwoa1soa1tvPj4yXXwwKSsxNj4+Ml18MCktMXwwKXwwO3N4KGtbQz4+Ml18MCw3NiwxLGtbcz4+Ml18MCl8MH1pZihpWyhrW2tbbT4+Ml0+PjJdfDApKzY5Pj4wXXwwKXtrW2o+PjJdPTA7Qz1rW2o+PjJdfDA7cj1EO3JldHVybiBDfDB9cEgoa1tDPj4yXXwwLGtbKGtbbj4+Ml18MCkrMTY+PjJdfDAsa1t5Pj4yXXwwKTtzd2l0Y2gobFtrW3A+PjJdPj4wXXwwKXtjYXNlIDEyOntlPUZ4KGtbbT4+Ml18MCl8MDtrW3o+PjJdPWU7ZT1GeChrW20+PjJdfDApfDA7a1tCPj4yXT1lO3R4KGtbQz4+Ml18MCw5OSxrWyhrW28+PjJdfDApKzEyPj4yXXwwLGtbKGtbbz4+Ml18MCkrMTY+PjJdfDAsa1t6Pj4yXXwwKXwwO3N4KGtbQz4+Ml18MCwxMTQsa1soa1twPj4yXXwwKSs4Pj4yXXwwLGtbQj4+Ml18MCl8MDt0eChrW0M+PjJdfDAsMTE1LGtbKGtbcD4+Ml18MCkrOD4+Ml18MCxrW3o+PjJdfDAsa1tCPj4yXXwwKXwwO1RoKGtbQz4+Ml18MCw4KTtIeChrW20+PjJdfDAsa1tCPj4yXXwwKTtIeChrW20+PjJdfDAsa1t6Pj4yXXwwKTticmVha31jYXNlIDExOntlPUZ4KGtbbT4+Ml18MCl8MDtrW0E+PjJdPWU7d3goa1tDPj4yXXwwLDk5LGtbKGtbbz4+Ml18MCkrMTI+PjJdfDAsa1soa1tvPj4yXXwwKSsxNj4+Ml18MCxrW0E+PjJdfDAsa1soa1twPj4yXXwwKSs0Pj4yXXwwLGtbKGtbbz4+Ml18MCkrMTY+PjJdfDApfDA7ZUIoa1ttPj4yXXwwLGtbKGtbbz4+Ml18MCkrMTI+PjJdfDAsa1soa1tvPj4yXXwwKSsxNj4+Ml18MCk7c3goa1tDPj4yXXwwLDEyNixrWyhrW3A+PjJdfDApKzg+PjJdfDAsa1tBPj4yXXwwKXwwO0h4KGtbbT4+Ml18MCxrW0E+PjJdfDApO2JyZWFrfWNhc2UgMTA6e2ZIKGtbbT4+Ml18MCxrWyhrW28+PjJdfDApKzEyPj4yXXwwLGtbKGtbcD4+Ml18MCkrOD4+Ml18MCwxKTticmVha31jYXNlIDEzOntpZighKGtbKGtbcD4+Ml18MCkrMTI+PjJdfDApKXtlPU1BKGtbbT4+Ml18MCxrWyhrW28+PjJdfDApKzE2Pj4yXXwwKXwwO2tbKGtbcD4+Ml18MCkrMTI+PjJdPWU7a1soa1twPj4yXXwwKSsxNj4+Ml09a1soa1tvPj4yXXwwKSsxNj4+Ml19Zkgoa1ttPj4yXXwwLGtbKGtbbz4+Ml18MCkrMTI+PjJdfDAsa1soa1twPj4yXXwwKSsxMj4+Ml18MCxrWyhrW28+PjJdfDApKzE2Pj4yXXwwKTthQShrW0M+PjJdfDAsMTYsa1soa1twPj4yXXwwKSs4Pj4yXXwwKXwwO2JyZWFrfWRlZmF1bHQ6e3N4KGtbQz4+Ml18MCw4NyxrWyhrW28+PjJdfDApKzEyPj4yXXwwLGtbKGtbbz4+Ml18MCkrMTY+PjJdfDApfDA7ZUIoa1ttPj4yXXwwLGtbKGtbbz4+Ml18MCkrMTI+PjJdfDAsa1soa1tvPj4yXXwwKSsxNj4+Ml18MCl9fWlmKGtbKGtbbj4+Ml18MCkrMTI+PjJdfDApc3goa1tDPj4yXXwwLDY4LGtbKGtbbj4+Ml18MCkrMTI+PjJdfDAsa1t1Pj4yXXwwKXwwO2lBKGtbQz4+Ml18MCxrW3k+PjJdfDApO2FBKGtbQz4+Ml18MCw3MixrW3E+PjJdfDApfDA7a1tqPj4yXT1rW3Y+PjJdO0M9a1tqPj4yXXwwO3I9RDtyZXR1cm4gQ3wwfWZ1bmN0aW9uIEdIKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsbT0wLG49MDtuPXI7cj1yKzMyfDA7ZD1uKzI0fDA7ZT1uKzIwfDA7Zj1uKzE2fDA7Zz1uKzEyfDA7aD1uKzh8MDttPW4rNHwwO2o9bjtrW2Q+PjJdPWE7a1tlPj4yXT1iO2tbZj4+Ml09YztrW2c+PjJdPWtba1tkPj4yXT4+Ml07aWYoIShrWyhrW2c+PjJdfDApKzI0Pj4yXSY1MjQyODgpKXtyPW47cmV0dXJufWlmKChsWyhrW2Y+PjJdfDApKzQyPj4wXXwwKSYxNil7cj1uO3JldHVybn1pZihrWyhrW2Y+PjJdfDApKzEyPj4yXXwwKXtyPW47cmV0dXJufWtbaD4+Ml09MDtjPW54KGtbZD4+Ml18MCl8MDtrW20+PjJdPWM7ZG8gaWYoIShneShrW2Y+PjJdfDApfDApKXtrW2o+PjJdPWtbKGtbZj4+Ml18MCkrMTY+PjJdO3doaWxlKDEpe2lmKCEoa1tqPj4yXXwwKSlicmVhaztpZihsWyhrW2o+PjJdfDApKzI0Pj4wXXwwKWJyZWFrO2lmKGtbKGtbZz4+Ml18MCkrMjQ+PjJdJjMzNTU0NDMyKWJyZWFrO2tbaj4+Ml09a1soa1tqPj4yXXwwKSs0Pj4yXX1pZihrW2o+PjJdfDApe2M9ZUEoa1ttPj4yXXwwKXwwO2tbaD4+Ml09YztzeChrW20+PjJdfDAsNjUsMSxrW2g+PjJdfDApfDA7YnJlYWt9ZWxzZXtyPW47cmV0dXJufX13aGlsZSgwKTtpWyhrW2Q+PjJdfDApKzE1MD4+MF09MTtjPWtbZD4+Ml18MDttdyhjLFF6KGtbZz4+Ml18MCxrW2U+PjJdfDAsMCl8MCwwKTtpWyhrW2Q+PjJdfDApKzE1MD4+MF09MDtpZighKGtbKGtbZz4+Ml18MCkrMjQ+PjJdJjMzNTU0NDMyKSl7Yz1rW20+PjJdfDA7c3goYyw2NSwwLChHeChrW20+PjJdfDApfDApKzJ8MCl8MDtEQShrW2Q+PjJdfDAsNzg3LDIsMCwtMiw0KX1pZighKGtbaD4+Ml18MCkpe3I9bjtyZXR1cm59aUEoa1ttPj4yXXwwLGtbaD4+Ml18MCk7cj1uO3JldHVybn1mdW5jdGlvbiBISChhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGk9MCxqPTAsbT0wLG49MCxvPTAscD0wLHE9MDtxPXI7cj1yKzY0fDA7cD1xKzh8MDtvPXE7ZT1xKzQ4fDA7Zj1xKzQ0fDA7Zz1xKzQwfDA7aD1xKzM2fDA7bj1xKzMyfDA7aT1xKzI4fDA7bT1xKzI0fDA7aj1xKzIwfDA7a1tlPj4yXT1hO2tbZj4+Ml09YjtrW2c+PjJdPWM7a1toPj4yXT1kO2tbaT4+Ml09a1trW2U+PjJdPj4yXTtrW2o+PjJdPShrWyhrW2k+PjJdfDApKzE2Pj4yXXwwKSsoa1tnPj4yXTw8NCk7Yj1ueChrW2U+PjJdfDApfDA7a1tuPj4yXT1iO0J4KGtbZT4+Ml18MCwxLGtbZz4+Ml18MCk7aWYoKGxbKGtbZj4+Ml18MCkrNDI+PjBdfDApJjE2KXB4KGtbbj4+Ml18MCwxNTIpfDA7Yj1KeChrW2U+PjJdfDAsa1tmPj4yXXwwKXwwO2tbbT4+Ml09Yjt3aGlsZSgxKXtpZighKGtbbT4+Ml18MCkpYnJlYWs7aUMoa1tlPj4yXXwwLGtbbT4+Ml18MCk7a1ttPj4yXT1rWyhrW20+PjJdfDApKzMyPj4yXX1pZigobFsoa1tmPj4yXXwwKSs0Mj4+MF18MCkmOCl7bT1rW2U+PjJdfDA7Yj1rW2tbZj4+Ml0+PjJdfDA7a1tvPj4yXT1rW2tbaj4+Ml0+PjJdO2tbbys0Pj4yXT1iO214KG0sMzYxNjksbyl9bz1rW2U+PjJdfDA7Yj0oa1tnPj4yXXwwKT09MT8xOTkwNToxOTkyNDttPWtba1tmPj4yXT4+Ml18MDtrW3A+PjJdPWtba1tqPj4yXT4+Ml07a1twKzQ+PjJdPWI7a1twKzg+PjJdPW07bXgobywzNjIxNCxwKTtpZigoa1toPj4yXXwwKT09MD8oKGxbKGtbZj4+Ml18MCkrNDI+PjBdfDApJjE2fDApPT0wOjApSUgoa1tlPj4yXXwwLGtbZj4+Ml18MCk7aWYoISgobFsoa1tmPj4yXXwwKSs0Mj4+MF18MCkmMTYpKXtuPWtbbj4+Ml18MDtvPWtbZz4+Ml18MDtwPWtbZj4+Ml18MDtwPWtbcD4+Ml18MDt3eChuLDEzOCxvLDAsMCxwLDApfDA7cD1rW2U+PjJdfDA7bz1rW2c+PjJdfDA7b3gocCxvKTtvPWtbaT4+Ml18MDtwPWtbZz4+Ml18MDtKSChvLHApO3I9cTtyZXR1cm59d3goa1tuPj4yXXwwLDE1NCxrW2c+PjJdfDAsMCwwLGtba1tmPj4yXT4+Ml18MCwwKXwwO249a1tuPj4yXXwwO289a1tnPj4yXXwwO3A9a1tmPj4yXXwwO3A9a1twPj4yXXwwO3d4KG4sMTM4LG8sMCwwLHAsMCl8MDtwPWtbZT4+Ml18MDtvPWtbZz4+Ml18MDtveChwLG8pO289a1tpPj4yXXwwO3A9a1tnPj4yXXwwO0pIKG8scCk7cj1xO3JldHVybn1mdW5jdGlvbiBJSChhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wLGg9MCxpPTAsaj0wLGw9MCxtPTA7bT1yO3I9ciszMnwwO2M9bSsyOHwwO2Q9bSsyNHwwO2k9bSsyMHwwO2Y9bSsxNnwwO2o9bSsxMnwwO2g9bSs4fDA7Zz1tKzR8MDtlPW07a1tjPj4yXT1hO2tbZD4+Ml09YjtrW2k+PjJdPWtbKGtbZD4+Ml18MCkrMjg+PjJdO2tbZj4+Ml09MDt3aGlsZSgxKXtrW2g+PjJdPTA7aWYoISgoa1tmPj4yXXwwKSE9MD8oa1tpPj4yXXwwKT49KGtbZj4+Ml18MCk6MCkpa1toPj4yXT1rW2k+PjJdO2tbaj4+Ml09a1soa1tkPj4yXXwwKSs4Pj4yXTt3aGlsZSgxKXtpZighKGtbaj4+Ml18MCkpYnJlYWs7a1tnPj4yXT1rWyhrW2o+PjJdfDApKzQ0Pj4yXTtpZighKChrW2Y+PjJdfDApIT0wPyhrW2c+PjJdfDApPj0oa1tmPj4yXXwwKTowKSlsPTk7aWYoKGx8MCk9PTk/KGw9MCwoa1tnPj4yXXwwKT4oa1toPj4yXXwwKSk6MClrW2g+PjJdPWtbZz4+Ml07a1tqPj4yXT1rWyhrW2o+PjJdfDApKzIwPj4yXX1pZighKGtbaD4+Ml18MCkpYnJlYWs7Yj1QaChrW2tbYz4+Ml0+PjJdfDAsa1soa1tkPj4yXXwwKSs2ND4+Ml18MCl8MDtrW2U+PjJdPWI7JEMoa1tjPj4yXXwwLGtbaD4+Ml18MCxrW2U+PjJdfDApO2tbZj4+Ml09a1toPj4yXX1yPW07cmV0dXJufWZ1bmN0aW9uIEpIKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTA7Zz1yO3I9cisxNnwwO2M9ZysxMnwwO2Q9Zys4fDA7ZT1nKzR8MDtmPWc7a1tjPj4yXT1hO2tbZD4+Ml09YjtpZigoKG1bKGtbKGtbKGtbYz4+Ml18MCkrMTY+PjJdfDApKyhrW2Q+PjJdPDw0KSsxMj4+Ml18MCkrNzg+PjFdfDApJjJ8MCkhPTIpe3I9ZztyZXR1cm59a1tlPj4yXT1rWyhrWyhrWyhrW2M+PjJdfDApKzE2Pj4yXXwwKSsoa1tkPj4yXTw8NCkrMTI+PjJdfDApKzgrOD4+Ml07d2hpbGUoMSl7aWYoIShrW2U+PjJdfDApKWJyZWFrO2tbZj4+Ml09a1soa1tlPj4yXXwwKSs4Pj4yXTtpZihrWyhrW2Y+PjJdfDApKzEyPj4yXXwwKXtLSChrW2M+PjJdfDAsa1tmPj4yXXwwKTtrWyhrW2Y+PjJdfDApKzQ+PjJdPTA7alsoa1tmPj4yXXwwKSszND4+MV09MH1rW2U+PjJdPWtba1tlPj4yXT4+Ml19Zj0oa1soa1soa1tjPj4yXXwwKSsxNj4+Ml18MCkrKGtbZD4+Ml08PDQpKzEyPj4yXXwwKSs3OHwwO2pbZj4+MV09KG1bZj4+MV18MCkmLTM7cj1nO3JldHVybn1mdW5jdGlvbiBLSChhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wO2c9cjtyPXIrMTZ8MDtjPWcrMTJ8MDtkPWcrOHwwO2U9Zys0fDA7Zj1nO2tbYz4+Ml09YTtrW2Q+PjJdPWI7Yj1rWyhrW2Q+PjJdfDApKzQ+PjJdfDA7a1tmPj4yXT1iO2lmKCFiKXtyPWc7cmV0dXJufWtbZT4+Ml09MDt3aGlsZSgxKXthPWtbYz4+Ml18MDtpZigoa1tlPj4yXXwwKT49KGpbKGtbZD4+Ml18MCkrMzQ+PjFdfDApKWJyZWFrO2JnKGEsa1trW2Y+PjJdPj4yXXwwKTtzdihrW2M+PjJdfDAsa1soa1tmPj4yXXwwKSs0Pj4yXXwwKTtiZyhrW2M+PjJdfDAsa1soa1tmPj4yXXwwKSs4Pj4yXXwwKTtrW2U+PjJdPShrW2U+PjJdfDApKzE7a1tmPj4yXT0oa1tmPj4yXXwwKSsxNn1iZyhhLGtbKGtbZD4+Ml18MCkrND4+Ml18MCk7cj1nO3JldHVybn1mdW5jdGlvbiBMSChhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxpPTAsbD0wLG09MCxuPTAsbz0wO289cjtyPXIrMTQ0fDA7Zj1vKzEyOHwwO2c9bysxMjR8MDtoPW8rMTIwfDA7aT1vKzExNnwwO2w9bysxMTJ8MDtuPW87bT1vKzgwfDA7a1tmPj4yXT1hO2tbZz4+Ml09YjtrW2g+PjJdPWM7a1tpPj4yXT1kO2tbbD4+Ml09ZTtrW20+PjJdPTA7a1ttKzQ+PjJdPTA7a1ttKzg+PjJdPTA7a1ttKzEyPj4yXT0wO2tbbSsxNj4+Ml09MDtrW20rMjA+PjJdPTA7a1ttKzI0Pj4yXT0wO2tbbSsyOD4+Ml09MDtkPW47ZT1kKzgwfDA7ZG97a1tkPj4yXT0wO2Q9ZCs0fDB9d2hpbGUoKGR8MCk8KGV8MCkpO2tbbj4+Ml09MTtrW24rOCs4Pj4yXT1rW2tbZz4+Ml0+PjJdO2tbbis4KzE2Pj4yXT1rW2c+PjJdO2tbbis4KzQ0Pj4yXT0tMTtrW20+PjJdPWtbZj4+Ml07a1ttKzQ+PjJdPW47alttKzI4Pj4xXT1rW2g+PjJdO249KEt5KG0sa1tpPj4yXXwwKXwwKT09MDtpZighKG4mKGtbbD4+Ml18MCkhPTApKXtyPW87cmV0dXJufUx5KG0sa1tsPj4yXXwwKXwwO3I9bztyZXR1cm59ZnVuY3Rpb24gTUgoYSl7YT1hfDA7dmFyIGI9MCxjPTA7Yz1yO3I9cisxNnwwO2I9YztrW2I+PjJdPWE7YT1rW2I+PjJdfDA7aWYoKGxba1tiPj4yXT4+MF18MHwwKT09OTcpe2lbYT4+MF09NTU7cj1jO3JldHVybn1pZigobFthPj4wXXwwfDApIT01Myl7cj1jO3JldHVybn1pZigobFtrWyhrW2I+PjJdfDApKzEyPj4yXT4+MF18MHwwKSE9OTcpe3I9YztyZXR1cm59aVtrWyhrW2I+PjJdfDApKzEyPj4yXT4+MF09NTU7cj1jO3JldHVybn1mdW5jdGlvbiBOSChhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTA7aD1yO3I9cisxNnwwO2c9aCsxMnwwO2Q9aCs4fDA7ZT1oKzR8MDtmPWg7a1tkPj4yXT1hO2tbZT4+Ml09YjtrW2Y+PjJdPWM7d2hpbGUoMSl7Yz1rW2U+PjJdfDA7a1tlPj4yXT1jKy0xO2lmKChjfDApPD0wKXtkPTU7YnJlYWt9Yj1rW2Y+PjJdfDA7Yz1rW2Q+PjJdfDA7a1tkPj4yXT1jKzI7aWYoKGJ8MCk9PShqW2M+PjFdfDApKXtkPTQ7YnJlYWt9fWlmKChkfDApPT00KXtrW2c+PjJdPTE7Zz1rW2c+PjJdfDA7cj1oO3JldHVybiBnfDB9ZWxzZSBpZigoZHwwKT09NSl7a1tnPj4yXT0wO2c9a1tnPj4yXXwwO3I9aDtyZXR1cm4gZ3wwfXJldHVybiAwfWZ1bmN0aW9uIE9IKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MCxlPTAsZj0wLGc9MDtnPXI7cj1yKzMyfDA7Yj1nKzEyfDA7ZT1nKzh8MDtkPWcrNHwwO2M9ZztmPWcrMTZ8MDtrW2I+PjJdPWE7a1tlPj4yXT0wO2tbYz4+Ml09a1soa1soa1tiPj4yXXwwKSsxMj4+Ml18MCkrND4+Ml07a1tkPj4yXT0wO3doaWxlKDEpe2lmKChrW2Q+PjJdfDApPj0obVsoa1tiPj4yXXwwKSs1Mj4+MV18MCkpYnJlYWs7altmPj4xXT1qWyhrWyhrW2I+PjJdfDApKzQ+PjJdfDApKyhrW2Q+PjJdPDwxKT4+MV18MDtpZigoaltmPj4xXXwwKTwwKWE9MTtlbHNlIGE9bFsoa1tjPj4yXXwwKSsoalsoa1soa1tiPj4yXXwwKSs0Pj4yXXwwKSsoa1tkPj4yXTw8MSk+PjFdPDw0KSsxND4+MF18MDtrW2U+PjJdPShrW2U+PjJdfDApK2E7a1tkPj4yXT0oa1tkPj4yXXwwKSsxfWY9V2ooa1tlPj4yXTw8MiwwKXwwO2pbKGtbYj4+Ml18MCkrNDg+PjFdPWY7cj1nO3JldHVybn1mdW5jdGlvbiBQSChhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MDtlPXI7cj1yKzE2fDA7Yz1lKzR8MDtkPWU7a1tjPj4yXT1hO2tbZD4+Ml09YjtRSChrW2M+PjJdfDAsa1tkPj4yXXwwKTtzdihrW2M+PjJdfDAsa1soa1tkPj4yXXwwKSszNj4+Ml18MCk7b3Yoa1tjPj4yXXwwLGtbKGtbZD4+Ml18MCkrNDA+PjJdfDApO2JnKGtbYz4+Ml18MCxrWyhrW2Q+PjJdfDApKzE2Pj4yXXwwKTtpZighKChsWyhrW2Q+PjJdfDApKzU1Pj4wXXwwKT4+PjQmMSkpe2E9a1tjPj4yXXwwO2I9a1tkPj4yXXwwO2JnKGEsYik7cj1lO3JldHVybn1iZyhrW2M+PjJdfDAsa1soa1tkPj4yXXwwKSszMj4+Ml18MCk7YT1rW2M+PjJdfDA7Yj1rW2Q+PjJdfDA7YmcoYSxiKTtyPWU7cmV0dXJufWZ1bmN0aW9uIFFIKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MDtjPXI7cj1yKzE2fDA7a1tjKzQ+PjJdPWE7a1tjPj4yXT1iO3I9YztyZXR1cm59ZnVuY3Rpb24gUkgoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTA7Yz1yO3I9cisxNnwwO2U9YztkPWMrNHwwO2tbZT4+Ml09YTtpW2Q+PjBdPWI7YT1IQihrW2U+PjJdfDAsNCsobFtkPj4wXXwwKXwwLDApfDA7cj1jO3JldHVybiBhfDB9ZnVuY3Rpb24gU0goYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTAsbj0wLG89MCxwPTAscT0wLHM9MCx0PTAsdT0wLHY9MDt2PXI7cj1yKzY0fDA7Yz12KzUyfDA7ZD12KzQ4fDA7cD12KzQ0fDA7cz12KzQwfDA7bz12KzM2fDA7Zj12KzMyfDA7aD12KzI4fDA7ZT12KzI0fDA7dD12KzIwfDA7cT12KzE2fDA7Zz12Kzh8MDtuPXY7a1tjPj4yXT1hO2tbZD4+Ml09YjtrW2U+PjJdPWtba1tjPj4yXT4+Ml07a1t0Pj4yXT1rWyhrW2M+PjJdfDApKzg+PjJdO2E6ZG8gaWYoIShpWyhrW2U+PjJdfDApKzE0OCs3Pj4wXXwwKSl7a1tmPj4yXT0wO3doaWxlKDEpe2lmKChrW2Y+PjJdfDApPj0oalsoa1tkPj4yXXwwKSszND4+MV18MCkpYnJlYWsgYTtpZihsWyhrWyhrW2Q+PjJdfDApKzQ+PjJdfDApKyhrW2Y+PjJdPDw0KSsxNT4+MF0mMSlpWyhrWyhrW2Q+PjJdfDApKzQ+PjJdfDApKyhrW2Y+PjJdPDw0KSsxMj4+MF09MjtrW2Y+PjJdPShrW2Y+PjJdfDApKzF9fXdoaWxlKDApO2lmKGlbKGtbYz4+Ml18MCkrNDEwPj4wXXwwKXtyPXY7cmV0dXJufWlmKGtbKGtbYz4+Ml18MCkrMTMyPj4yXXwwKVZHKGtbdD4+Ml18MCxrWyhrW2M+PjJdfDApKzEzMj4+Ml18MCwtMTIyKTthPWtbZD4+Ml18MDtkbyBpZigoalsoa1tkPj4yXXwwKSszMj4+MV18MCk+PTApe2Z6KGcsa1soa1soa1tkPj4yXXwwKSs0Pj4yXXwwKSsoalthKzMyPj4xXTw8NCk+PjJdfDApO3Q9a1tjPj4yXXwwO3Q9YncodCwwLHR3KGtbZT4+Ml18MCw1NSxnLDApfDApfDA7a1txPj4yXT10O2lmKCEoa1txPj4yXXwwKSl7cj12O3JldHVybn1pWyhrWyhrW3E+PjJdfDApKzQ+PjJdfDApKzEyPj4wXT1pWyhrW2M+PjJdfDApKzQwOD4+MF18MDtTdihrW2M+PjJdfDAsMCwwLDAsa1txPj4yXXwwLGxbKGtbZD4+Ml18MCkrNDM+PjBdfDAsMCwwLDAsMCwyKTtpZihpWyhrW2U+PjJdfDApKzY5Pj4wXXwwKXtyPXY7cmV0dXJufWVsc2V7dD1UaihrW2Q+PjJdfDApfDA7a1tzPj4yXT10O2pbKGtbZD4+Ml18MCkrMzI+PjFdPS0xO2JyZWFrfX1lbHNle3E9VGooYSl8MDtrW3M+PjJdPXE7aWYoa1t0Pj4yXXwwKVZHKGtbdD4+Ml18MCxrWyhrW3M+PjJdfDApKzQ0Pj4yXXwwLDEzKTtrW2g+PjJdPTE7a1tmPj4yXT0xO3doaWxlKDEpe2lmKChrW2Y+PjJdfDApPj0obVsoa1tzPj4yXXwwKSs1MD4+MV18MCkpYnJlYWs7aWYoTkgoa1soa1tzPj4yXXwwKSs0Pj4yXXwwLGtbaD4+Ml18MCxqWyhrWyhrW3M+PjJdfDApKzQ+PjJdfDApKyhrW2Y+PjJdPDwxKT4+MV18MCl8MCl7dD0oa1tzPj4yXXwwKSs1MnwwO2pbdD4+MV09KGpbdD4+MV18MCkrLTE8PDE2Pj4xNn1lbHNle3E9alsoa1soa1tzPj4yXXwwKSs0Pj4yXXwwKSsoa1tmPj4yXTw8MSk+PjFdfDA7dD1rW2g+PjJdfDA7a1toPj4yXT10KzE7alsoa1soa1tzPj4yXXwwKSs0Pj4yXXwwKSsodDw8MSk+PjFdPXF9a1tmPj4yXT0oa1tmPj4yXXwwKSsxfWpbKGtbcz4+Ml18MCkrNTA+PjFdPWtbaD4+Ml19d2hpbGUoMCk7dD0oa1tzPj4yXXwwKSs1NXwwO2lbdD4+MF09aVt0Pj4wXSYtMzN8MzI7aWYoIShpWyhrW2U+PjJdfDApKzE0OCs3Pj4wXXwwKSl7dD0oa1tzPj4yXXwwKSs1NXwwO2lbdD4+MF09aVt0Pj4wXSYtOXw4fWtbbz4+Ml09bVsoa1tzPj4yXXwwKSs1MD4+MV07a1soa1tzPj4yXXwwKSs0ND4+Ml09a1soa1tkPj4yXXwwKSsyOD4+Ml07a1twPj4yXT1rWyhrW2Q+PjJdfDApKzg+PjJdO2I6d2hpbGUoMSl7aWYoIShrW3A+PjJdfDApKWJyZWFrO2M6ZG8gaWYoKGlbKGtbcD4+Ml18MCkrNTU+PjBdJjN8MCkhPTIpe2tbbj4+Ml09MDtrW2Y+PjJdPTA7d2hpbGUoMSl7aWYoKGtbZj4+Ml18MCk+PShrW28+PjJdfDApKWJyZWFrO2lmKCEoTkgoa1soa1twPj4yXXwwKSs0Pj4yXXwwLG1bKGtbcD4+Ml18MCkrNTA+PjFdfDAsalsoa1soa1tzPj4yXXwwKSs0Pj4yXXwwKSsoa1tmPj4yXTw8MSk+PjFdfDApfDApKWtbbj4+Ml09KGtbbj4+Ml18MCkrMTtrW2Y+PjJdPShrW2Y+PjJdfDApKzF9aWYoIShrW24+PjJdfDApKXtqWyhrW3A+PjJdfDApKzUyPj4xXT1qWyhrW3A+PjJdfDApKzUwPj4xXXwwO2JyZWFrfWlmKFhIKGtbZT4+Ml18MCxrW3A+PjJdfDAsKG1bKGtbcD4+Ml18MCkrNTA+PjFdfDApKyhrW24+PjJdfDApfDApfDApe3U9NTA7YnJlYWsgYn1rW2Y+PjJdPTA7a1toPj4yXT1tWyhrW3A+PjJdfDApKzUwPj4xXTt3aGlsZSgxKXtpZigoa1tmPj4yXXwwKT49KGtbbz4+Ml18MCkpYnJlYWsgYztpZighKE5IKGtbKGtbcD4+Ml18MCkrND4+Ml18MCxtWyhrW3A+PjJdfDApKzUwPj4xXXwwLGpbKGtbKGtbcz4+Ml18MCkrND4+Ml18MCkrKGtbZj4+Ml08PDEpPj4xXXwwKXwwKSl7alsoa1soa1twPj4yXXwwKSs0Pj4yXXwwKSsoa1toPj4yXTw8MSk+PjFdPWpbKGtbKGtbcz4+Ml18MCkrND4+Ml18MCkrKGtbZj4+Ml08PDEpPj4xXXwwO2tbKGtbKGtbcD4+Ml18MCkrMzI+PjJdfDApKyhrW2g+PjJdPDwyKT4+Ml09a1soa1soa1tzPj4yXXwwKSszMj4+Ml18MCkrKGtbZj4+Ml08PDIpPj4yXTtrW2g+PjJdPShrW2g+PjJdfDApKzF9a1tmPj4yXT0oa1tmPj4yXXwwKSsxfX13aGlsZSgwKTtrW3A+PjJdPWtbKGtbcD4+Ml18MCkrMjA+PjJdfWlmKCh1fDApPT01MCl7cj12O3JldHVybn1pZigoa1tvPj4yXXwwKT49KGpbKGtbZD4+Ml18MCkrMzQ+PjFdfDApKXtqWyhrW3M+PjJdfDApKzUyPj4xXT1qWyhrW2Q+PjJdfDApKzM0Pj4xXXwwO3I9djtyZXR1cm59aWYoWEgoa1tlPj4yXXwwLGtbcz4+Ml18MCxqWyhrW2Q+PjJdfDApKzM0Pj4xXXwwKXwwKXtyPXY7cmV0dXJufWtbZj4+Ml09MDtrW2g+PjJdPWtbbz4+Ml07d2hpbGUoMSl7aWYoKGtbZj4+Ml18MCk+PShqWyhrW2Q+PjJdfDApKzM0Pj4xXXwwKSlicmVhaztpZighKE5IKGtbKGtbcz4+Ml18MCkrND4+Ml18MCxrW2g+PjJdfDAsa1tmPj4yXXwwKXwwKSl7alsoa1soa1tzPj4yXXwwKSs0Pj4yXXwwKSsoa1toPj4yXTw8MSk+PjFdPWtbZj4+Ml07a1soa1soa1tzPj4yXXwwKSszMj4+Ml18MCkrKGtbaD4+Ml08PDIpPj4yXT0zNDgzNDtrW2g+PjJdPShrW2g+PjJdfDApKzF9a1tmPj4yXT0oa1tmPj4yXXwwKSsxfXI9djtyZXR1cm59ZnVuY3Rpb24gVEgoYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wLGU9MCxmPTA7Zj1yO3I9cisxNnwwO2I9ZisxMnwwO2U9Zis4fDA7ZD1mKzR8MDtjPWY7a1tiPj4yXT1hO2tbZT4+Ml09MDtrW2M+PjJdPWpbKGtbYj4+Ml18MCkrMzQ+PjFdO2tbZD4+Ml09a1soa1tiPj4yXXwwKSs0Pj4yXTt3aGlsZSgxKXtpZigoa1tjPj4yXXwwKTw9MClicmVhaztrW2U+PjJdPShrW2U+PjJdfDApKyhsWyhrW2Q+PjJdfDApKzE0Pj4wXXwwKTtrW2M+PjJdPShrW2M+PjJdfDApKy0xO2tbZD4+Ml09KGtbZD4+Ml18MCkrMTZ9aWYoKGpbKGtbYj4+Ml18MCkrMzI+PjFdfDApPj0wKXtkPWtbZT4+Ml18MDtkPWQ8PDI7ZD1XaihkLDApfDA7ZT1rW2I+PjJdfDA7ZT1lKzQwfDA7altlPj4xXT1kO3I9ZjtyZXR1cm59a1tlPj4yXT0oa1tlPj4yXXwwKSsxO2Q9a1tlPj4yXXwwO2Q9ZDw8MjtkPVdqKGQsMCl8MDtlPWtbYj4+Ml18MDtlPWUrNDB8MDtqW2U+PjFdPWQ7cj1mO3JldHVybn1mdW5jdGlvbiBVSChhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wLGg9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxzPTAsdD0wLHU9MCx2PTAsdz0wO3c9cjtyPXIrODB8MDtwPXcrMTZ8MDtvPXcrOHwwO2Q9dztlPXcrNjh8MDtjPXcrNjR8MDtmPXcrNjB8MDtnPXcrNTZ8MDtoPXcrNTJ8MDttPXcrNDh8MDt1PXcrNDR8MDtzPXcrNDB8MDt0PXcrMzZ8MDtxPXcrMzJ8MDtuPXcrMjh8MDtsPXcrMjR8MDt2PXcrMjB8MDtrW2M+PjJdPWE7a1tmPj4yXT1iO2tbbT4+Ml09MDtrW24+PjJdPWtbKGtbZj4+Ml18MCkrND4+Ml07a1tnPj4yXT0wO3doaWxlKDEpe2lmKChrW2c+PjJdfDApPj0oalsoa1tmPj4yXXwwKSszND4+MV18MCkpYnJlYWs7Yj0oVkgoa1trW24+PjJdPj4yXXwwKXwwKSs1fDA7a1ttPj4yXT0oa1ttPj4yXXwwKStiO2tbZz4+Ml09KGtbZz4+Ml18MCkrMTtrW24+PjJdPShrW24+PjJdfDApKzE2fWI9Vkgoa1trW2Y+PjJdPj4yXXwwKXwwO2tbbT4+Ml09KGtbbT4+Ml18MCkrYjtpZigoa1ttPj4yXXwwKTw1MCl7a1tzPj4yXT0xODQwMjtrW3Q+PjJdPTM0NzEwO2tbcT4+Ml09MzQ3MDZ9ZWxzZXtrW3M+PjJdPTM3MzY5O2tbdD4+Ml09MzczNzM7a1txPj4yXT0zNzM3OH1rW20+PjJdPShrW20+PjJdfDApKygzNSsoKGpbKGtbZj4+Ml18MCkrMzQ+PjFdfDApKjZ8MCkpO2I9a1ttPj4yXXwwO2I9TWgoMCxiLCgoYnwwKTwwKTw8MzE+PjMxKXwwO2tbdT4+Ml09YjtpZighKGtbdT4+Ml18MCkpe3doKGtbYz4+Ml18MCk7a1tlPj4yXT0wO3Y9a1tlPj4yXXwwO3I9dztyZXR1cm4gdnwwfV9kKGtbbT4+Ml18MCxrW3U+PjJdfDAsMzczODEsZCl8MDtkPVRmKGtbdT4+Ml18MCl8MDtrW2g+PjJdPWQ7V0goa1t1Pj4yXXwwLGgsa1trW2Y+PjJdPj4yXXwwKTtkPWtbaD4+Ml18MDtrW2g+PjJdPWQrMTtpWyhrW3U+PjJdfDApK2Q+PjBdPTQwO2tbbj4+Ml09a1soa1tmPj4yXXwwKSs0Pj4yXTtrW2c+PjJdPTA7d2hpbGUoMSl7Yz0oa1ttPj4yXXwwKS0oa1toPj4yXXwwKXwwO2E9KGtbdT4+Ml18MCkrKGtbaD4+Ml18MCl8MDtpZigoa1tnPj4yXXwwKT49KGpbKGtbZj4+Ml18MCkrMzQ+PjFdfDApKWJyZWFrO19kKGMsYSxrW3M+PjJdfDAsbyl8MDtkPVRmKChrW3U+PjJdfDApKyhrW2g+PjJdfDApfDApfDA7a1toPj4yXT0oa1toPj4yXXwwKStkO2tbcz4+Ml09a1t0Pj4yXTtXSChrW3U+PjJdfDAsaCxrW2tbbj4+Ml0+PjJdfDApO2tbdj4+Ml09a1s1NDkyKygoaVsoa1tuPj4yXXwwKSsxMz4+MF18MCktNjU8PDIpPj4yXTtkPVRmKGtbdj4+Ml18MCl8MDtrW2w+PjJdPWQ7YlMoKGtbdT4+Ml18MCkrKGtbaD4+Ml18MCl8MCxrW3Y+PjJdfDAsa1tsPj4yXXwwKXwwO2tbaD4+Ml09KGtbaD4+Ml18MCkrKGtbbD4+Ml18MCk7a1tnPj4yXT0oa1tnPj4yXXwwKSsxO2tbbj4+Ml09KGtbbj4+Ml18MCkrMTZ9a1twPj4yXT1rW3E+PjJdO19kKGMsYSwxODM5MSxwKXwwO2tbZT4+Ml09a1t1Pj4yXTt2PWtbZT4+Ml18MDtyPXc7cmV0dXJuIHZ8MH1mdW5jdGlvbiBWSChhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTA7ZD1yO3I9cisxNnwwO2I9ZCs0fDA7Yz1kO2tbYj4+Ml09YTtrW2M+PjJdPTA7d2hpbGUoMSl7aWYoIShpW2tbYj4+Ml0+PjBdfDApKWJyZWFrO2lmKChpW2tbYj4+Ml0+PjBdfDApPT0zNClrW2M+PjJdPShrW2M+PjJdfDApKzE7a1tjPj4yXT0oa1tjPj4yXXwwKSsxO2tbYj4+Ml09KGtbYj4+Ml18MCkrMX1yPWQ7cmV0dXJuIChrW2M+PjJdfDApKzJ8MH1mdW5jdGlvbiBXSChhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLG09MCxuPTA7bT1yO3I9ciszMnwwO2Q9bSsyNHwwO2U9bSsyMHwwO249bSsxNnwwO2o9bSsxMnwwO2Y9bSs4fDA7Zz1tKzR8MDtoPW07a1tkPj4yXT1hO2tbZT4+Ml09YjtrW24+PjJdPWM7a1tqPj4yXT1rW24+PjJdO2tbZj4+Ml09a1trW2U+PjJdPj4yXTtrW2c+PjJdPTA7d2hpbGUoMSl7aWYoIShpWyhrW2o+PjJdfDApKyhrW2c+PjJdfDApPj4wXXwwKSlicmVhaztpZigobFsxODQwMysobFsoa1tqPj4yXXwwKSsoa1tnPj4yXXwwKT4+MF18MCk+PjBdJjZ8MCk9PTA/KGxbKGtbaj4+Ml18MCkrKGtbZz4+Ml18MCk+PjBdfDApIT05NTowKWJyZWFrO2tbZz4+Ml09KGtbZz4+Ml18MCkrMX1pZigoKGxbMTg0MDMrKGxba1tqPj4yXT4+MF18MCk+PjBdJjR8MCk9PTA/KE5pKGtbaj4+Ml18MCxrW2c+PjJdfDApfDApPT01NTowKT8obFsoa1tqPj4yXXwwKSsoa1tnPj4yXXwwKT4+MF18MCk9PTA6MCliPShrW2c+PjJdfDApPT0wO2Vsc2UgYj0xO2tbaD4+Ml09YiYxO2lmKGtbaD4+Ml18MCl7bj1rW2Y+PjJdfDA7a1tmPj4yXT1uKzE7aVsoa1tkPj4yXXwwKStuPj4wXT0zNH1rW2c+PjJdPTA7d2hpbGUoMSl7aWYoIShpWyhrW2o+PjJdfDApKyhrW2c+PjJdfDApPj4wXXwwKSlicmVhaztjPWlbKGtbaj4+Ml18MCkrKGtbZz4+Ml18MCk+PjBdfDA7bj1rW2Y+PjJdfDA7a1tmPj4yXT1uKzE7aVsoa1tkPj4yXXwwKStuPj4wXT1jO2lmKChsWyhrW2o+PjJdfDApKyhrW2c+PjJdfDApPj4wXXwwKT09MzQpe249a1tmPj4yXXwwO2tbZj4+Ml09bisxO2lbKGtbZD4+Ml18MCkrbj4+MF09MzR9a1tnPj4yXT0oa1tnPj4yXXwwKSsxfWlmKCEoa1toPj4yXXwwKSl7aj1rW2Y+PjJdfDA7bj1rW2Q+PjJdfDA7aj1uK2p8MDtpW2o+PjBdPTA7aj1rW2Y+PjJdfDA7bj1rW2U+PjJdfDA7a1tuPj4yXT1qO3I9bTtyZXR1cm59aj1rW2Y+PjJdfDA7a1tmPj4yXT1qKzE7aVsoa1tkPj4yXXwwKStqPj4wXT0zNDtqPWtbZj4+Ml18MDtuPWtbZD4+Ml18MDtqPW4ranwwO2lbaj4+MF09MDtqPWtbZj4+Ml18MDtuPWtbZT4+Ml18MDtrW24+PjJdPWo7cj1tO3JldHVybn1mdW5jdGlvbiBYSChhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsbD0wLG49MDtuPXI7cj1yKzMyfDA7ZD1uKzIwfDA7ZT1uKzE2fDA7Zj1uKzEyfDA7Zz1uKzh8MDtsPW4rNHwwO2g9bjtrW2U+PjJdPWE7a1tmPj4yXT1iO2tbZz4+Ml09YztpZigobVsoa1tmPj4yXXwwKSs1Mj4+MV18MHwwKT49KGtbZz4+Ml18MCkpe2tbZD4+Ml09MDtsPWtbZD4+Ml18MDtyPW47cmV0dXJuIGx8MH1rW2g+PjJdPShrW2c+PjJdfDApKjc7Yj1rW2g+PjJdfDA7Yj1DaChrW2U+PjJdfDAsYiwoKGJ8MCk8MCk8PDMxPj4zMSl8MDtrW2w+PjJdPWI7aWYoIShrW2w+PjJdfDApKXtrW2Q+PjJdPTc7bD1rW2Q+PjJdfDA7cj1uO3JldHVybiBsfDB9ZWxzZXtiUyhrW2w+PjJdfDAsa1soa1tmPj4yXXwwKSszMj4+Ml18MCwobVsoa1tmPj4yXXwwKSs1Mj4+MV18MCk8PDJ8MCl8MDtrWyhrW2Y+PjJdfDApKzMyPj4yXT1rW2w+PjJdO2tbbD4+Ml09KGtbbD4+Ml18MCkrKGtbZz4+Ml08PDIpO2JTKGtbbD4+Ml18MCxrWyhrW2Y+PjJdfDApKzQ+PjJdfDAsKG1bKGtbZj4+Ml18MCkrNTI+PjFdfDApPDwxfDApfDA7a1soa1tmPj4yXXwwKSs0Pj4yXT1rW2w+PjJdO2tbbD4+Ml09KGtbbD4+Ml18MCkrKGtbZz4+Ml08PDEpO2JTKGtbbD4+Ml18MCxrWyhrW2Y+PjJdfDApKzI4Pj4yXXwwLG1bKGtbZj4+Ml18MCkrNTI+PjFdfDB8MCl8MDtrWyhrW2Y+PjJdfDApKzI4Pj4yXT1rW2w+PjJdO2pbKGtbZj4+Ml18MCkrNTI+PjFdPWtbZz4+Ml07bD0oa1tmPj4yXXwwKSs1NXwwO2lbbD4+MF09aVtsPj4wXSYtMTd8MTY7a1tkPj4yXT0wO2w9a1tkPj4yXXwwO3I9bjtyZXR1cm4gbHwwfXJldHVybiAwfWZ1bmN0aW9uIFlIKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MDtkPXI7cj1yKzE2fDA7Yz1kKzh8MDtlPWQrNHwwO2Y9ZDtrW2M+PjJdPWE7a1tlPj4yXT1iO2E9bngoa1tjPj4yXXwwKXwwO2tbZj4+Ml09YTtiQShrW2M+PjJdfDAsa1tlPj4yXXwwLDEsMSwoa1tlPj4yXXwwKT09MT8xOTkwNToxOTkyNCk7U2goa1tmPj4yXXwwLDEwNSwwLDEsa1tlPj4yXXwwLDUpfDA7aWYoa1soa1tjPj4yXXwwKSs0MD4+Ml18MCl7cj1kO3JldHVybn1rWyhrW2M+PjJdfDApKzQwPj4yXT0xO3I9ZDtyZXR1cm59ZnVuY3Rpb24gWkgoYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wLGU9MCxmPTAsZz0wO2c9cjtyPXIrMzJ8MDtiPWcrMTZ8MDtjPWcrMTJ8MDtmPWcrOHwwO2Q9Zys0fDA7ZT1nO2tbYj4+Ml09YTthPW54KGtbYj4+Ml18MCl8MDtrW2Y+PjJdPWE7a1tjPj4yXT0wO3doaWxlKDEpe2lmKChrW2M+PjJdfDApPj0oa1soa1tiPj4yXXwwKSsxMTI+PjJdfDApKWJyZWFrO2tbZD4+Ml09KGtbKGtbYj4+Ml18MCkrMTE2Pj4yXXwwKSsoa1tjPj4yXTw8NCk7a1tlPj4yXT1rW2tbZD4+Ml0+PjJdO3d4KGtbZj4+Ml18MCwxNTEsa1tlPj4yXXwwLGtbKGtbZD4+Ml18MCkrND4+Ml18MCxsWyhrW2Q+PjJdfDApKzg+PjBdfDAsa1soa1tkPj4yXXwwKSsxMj4+Ml18MCwtMil8MDtrW2M+PjJdPShrW2M+PjJdfDApKzF9cj1nO3JldHVybn1mdW5jdGlvbiBfSChhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MDtqPXI7cj1yKzMyfDA7Yj1qKzI0fDA7Zj1qKzIwfDA7ZD1qKzE2fDA7Zz1qKzEyfDA7ZT1qKzh8MDtoPWorNHwwO2M9ajtrW2I+PjJdPWE7a1tkPj4yXT1rW2tbYj4+Ml0+PjJdO2tbaD4+Ml09a1soa1tiPj4yXXwwKSs4Pj4yXTtrW2Y+PjJdPWtbKGtbYj4+Ml18MCkrMTIwPj4yXTt3aGlsZSgxKXtpZighKGtbZj4+Ml18MCkpe2I9NTticmVha31rW2c+PjJdPShrWyhrW2Q+PjJdfDApKzE2Pj4yXXwwKSsoa1soa1tmPj4yXXwwKSs4Pj4yXTw8NCk7a1tlPj4yXT1rWyhrW2Y+PjJdfDApKzEyPj4yXTtjQShrW2I+PjJdfDAsMCxrWyhrW2Y+PjJdfDApKzg+PjJdfDAsa1soa1soa1tnPj4yXXwwKSsxMj4+Ml18MCkrNzI+PjJdfDAsMTA0KTtyeChrW2g+PjJdfDAsKGtbZT4+Ml18MCktMXwwLGtba1soa1tmPj4yXXwwKSs0Pj4yXT4+Ml18MCl8MDthPVVoKGtbaD4+Ml18MCwxMCwzNzU1NywwKXwwO2tbYz4+Ml09YTtpZighKGtbYz4+Ml18MCkpe2I9NTticmVha31rWyhrW2M+PjJdfDApKzg+PjJdPWtbZT4+Ml07a1soa1tjPj4yXXwwKSsxMj4+Ml09KGtbZT4+Ml18MCkrMTtrWyhrW2M+PjJdfDApKzQwKzEyPj4yXT1rW2U+PjJdO2tbKGtbYz4+Ml18MCkrNjArND4+Ml09KGtbZT4+Ml18MCktMTtrWyhrW2M+PjJdfDApKzYwKzEyPj4yXT1rW2U+PjJdO2lbKGtbYz4+Ml18MCkrNjArMz4+MF09MTY7a1soa1tjPj4yXXwwKSs4MCs4Pj4yXT0oa1tlPj4yXXwwKSsxO2tbKGtbYz4+Ml18MCkrMTAwKzEyPj4yXT1rW2U+PjJdO2tbKGtbYz4+Ml18MCkrMTYwKzg+PjJdPWtbZT4+Ml07a1tmPj4yXT1rW2tbZj4+Ml0+PjJdfWlmKChifDApPT01KXtyPWo7cmV0dXJufX1mdW5jdGlvbiAkSChhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTA7Yj1yO3I9cisxNnwwO2M9YjtkPWIrNHwwO2tbZD4+Ml09YTtrW2M+PjJdPWtbZD4+Ml07JGQoMjEsMzk1NDYsYyk7cj1iO3JldHVybn1cbmZ1bmN0aW9uIHF3KGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTAsRT0wLEY9MCxHPTAsSD0wLEk9MCxKPTAsSz0wLEw9MCxNPTAsTj0wLE89MCxQPTAsUT0wLFI9MCxTPTAsVD0wLFU9MCxWPTAsVz0wLFg9MCxZPTAsWj0wLF89MCwkPTAsYWE9MCxiYT0wLGNhPTAsZGE9MCxlYT0wLGZhPTAsZ2E9MCxoYT0wLGlhPTAsamE9MCxrYT0wLGxhPTAsbWE9MCxuYT0wLG9hPTA7b2E9cjtyPXIrMzA0fDA7Qz1vYSszMnwwO0I9b2ErMTZ8MDtBPW9hO0Y9b2ErMjg0fDA7Rz1vYSsyODB8MDtIPW9hKzI3NnwwO0k9b2ErMjcyfDA7Sj1vYSsyNjh8MDtQPW9hKzI2NHwwO2NhPW9hKzI2MHwwO2Y9b2ErMjU2fDA7Uj1vYSsyNTJ8MDtaPW9hKzI0OHwwO1Y9b2ErMjQ0fDA7bmE9b2ErMjQwfDA7YWE9b2ErMjM2fDA7Xz1vYSsyMzJ8MDskPW9hKzIyOHwwO1M9b2ErMjI0fDA7VD1vYSsyMjB8MDtXPW9hKzIxNnwwO1E9b2ErMjEyfDA7bGE9b2ErMjA4fDA7Tj1vYSsyMDR8MDtNPW9hKzIwMHwwO289b2ErMTc2fDA7cD1vYSsxNzJ8MDttYT1vYSsyOTF8MDtPPW9hKzI5MHwwO0Q9b2ErMjg5fDA7bj1vYSsyODh8MDtiYT1vYSsxNjh8MDtoYT1vYSsxNjR8MDtmYT1vYSsxNjB8MDtqYT1vYSsxNTZ8MDtpYT1vYSsxNTJ8MDtrYT1vYSsxNDh8MDtnYT1vYSsxNDR8MDtLPW9hKzE0MHwwO1k9b2ErMTM2fDA7ZGE9b2ErMTMyfDA7ej1vYSsxMjh8MDt4PW9hKzEyNHwwO209b2ErMTIwfDA7dD1vYSsxMTZ8MDt2PW9hKzExMnwwO3c9b2ErMTA4fDA7aD1vYSsxMDR8MDt5PW9hKzcyfDA7cT1vYSs2OHwwO3U9b2ErNjR8MDtnPW9hKzYwfDA7cz1vYSs1NnwwO0w9b2ErNTJ8MDtVPW9hKzQ4fDA7ZWE9b2ErNDR8MDtYPW9hKzQwfDA7a1tGPj4yXT1hO2tbRz4+Ml09YjtrW0g+PjJdPWM7a1tJPj4yXT1kO2tbSj4+Ml09ZTtrWyQ+PjJdPTA7a1tTPj4yXT0wO2tbVD4+Ml09MDtrW1c+PjJdPS0xO2tbbGE+PjJdPTA7a1tOPj4yXT0wO2tbTT4+Ml09MDtpW21hPj4wXT0wO2lbTz4+MF09MDtrW2JhPj4yXT0wO2tbaGE+PjJdPTA7a1tmYT4+Ml09MDtrW2phPj4yXT0wO2tbSz4+Ml09MDtrW1A+PjJdPWtba1tGPj4yXT4+Ml07a1tvPj4yXT0wO2tbbys0Pj4yXT0wO2tbbys4Pj4yXT0wO2tbbysxMj4+Ml09MDtrW28rMTY+PjJdPTA7a1tvKzIwPj4yXT0wO2E6ZG8gaWYoKGtbKGtbRj4+Ml18MCkrMzY+PjJdfDApPT0wPyhsWyhrW1A+PjJdfDApKzY5Pj4wXXwwKT09MDowKXtpZigoKGtbSD4+Ml18MCkhPTA/KGtbKGtbSD4+Ml18MCkrOD4+Ml0mNTEyfDApIT0wOjApPyhrWyhrW0g+PjJdfDApKzQ4Pj4yXXwwKT09MDowKXtrW2JhPj4yXT1rW2tbSD4+Ml0+PjJdO2tba1tIPj4yXT4+Ml09MDtwdihrW1A+PjJdfDAsa1tIPj4yXXwwKTtrW0g+PjJdPTB9a1tmPj4yXT1rWyhrW0c+PjJdfDApKzgrOD4+Ml07aWYoKCgoKChrW2Y+PjJdfDApIT0wPyhmPWxDKGtbRj4+Ml18MCxrW0c+PjJdfDApfDAsa1tjYT4+Ml09Ziwoa1tjYT4+Ml18MCkhPTApOjApPyhmPVBoKGtbUD4+Ml18MCxrWyhrW2NhPj4yXXwwKSs2ND4+Ml18MCl8MCxrW3A+PjJdPWYsKGt4KGtbRj4+Ml18MCwxOCxrW2tbY2E+PjJdPj4yXXwwLDAsa1soa1soa1tQPj4yXXwwKSsxNj4+Ml18MCkrKGtbcD4+Ml08PDQpPj4yXXwwKXwwKT09MCk6MCk/KGlbRD4+MF09KChsWyhrW2NhPj4yXXwwKSs0Mj4+MF0mMzJ8MCk9PTBeMSkmMSxmPWJEKGtbRj4+Ml18MCxrW2NhPj4yXXwwLDEwOCwwLHopfDAsa1tkYT4+Ml09ZixrW1k+PjJdPShrWyhrW2NhPj4yXXwwKSsxMj4+Ml18MCkhPTAmMSwoYnkoa1tGPj4yXXwwLGtbY2E+PjJdfDApfDApPT0wKTowKT8oY0Qoa1tGPj4yXXwwLGtbY2E+PjJdfDAsa1t6Pj4yXXwwKXwwKT09MDowKT8oZj1ueChrW0Y+PjJdfDApfDAsa1tuYT4+Ml09Ziwoa1tuYT4+Ml18MCkhPTApOjApe2lmKCEobFsoa1tGPj4yXXwwKSsxOD4+MF18MCkpZEQoa1tuYT4+Ml18MCk7Qngoa1tGPj4yXXwwLCgoa1tIPj4yXXwwKSE9MD8xOihrW2RhPj4yXXwwKSE9MCkmMSxrW3A+PjJdfDApO2lmKCEoKGtbST4+Ml18MCk9PTA/KGVEKGtbRj4+Ml18MCxrW2NhPj4yXXwwLGtbSD4+Ml18MCxrW0o+PjJdfDAsa1twPj4yXXwwKXwwKSE9MDowKSlFPTE3O2I6ZG8gaWYoKEV8MCk9PTE3KXtmPWZEKGtbRj4+Ml18MCxrW3A+PjJdfDAsa1tjYT4+Ml18MCl8MDtrW2ZhPj4yXT1mO2Y9KGtbKGtbRj4+Ml18MCkrNDQ+PjJdfDApKzF8MDtrW2lhPj4yXT1mO2tba2E+PjJdPWY7Zj0oa1tGPj4yXXwwKSs0NHwwO2tbZj4+Ml09KGtbZj4+Ml18MCkrKChqWyhrW2NhPj4yXXwwKSszND4+MV18MCkrMSk7aWYobFsoa1tjYT4+Ml18MCkrNDI+PjBdJjE2KXtrW2thPj4yXT0oa1trYT4+Ml18MCkrMTtmPShrW0Y+PjJdfDApKzQ0fDA7a1tmPj4yXT0oa1tmPj4yXXwwKSsxfWtbZ2E+PjJdPShrW2thPj4yXXwwKSsxO2lbbj4+MF09KGxbKGtbY2E+PjJdfDApKzQyPj4wXSYxMjh8MCk9PTA7YzpkbyBpZihrW0k+PjJdfDApe2tbUj4+Ml09MDt3aGlsZSgxKXtpZigoa1tSPj4yXXwwKT49KGtbKGtbST4+Ml18MCkrND4+Ml18MCkpYnJlYWs7a1soa1trW0k+PjJdPj4yXXwwKSsoa1tSPj4yXTw8MykrND4+Ml09LTE7a1tSPj4yXT0oa1tSPj4yXXwwKSsxfWtbUj4+Ml09MDt3aGlsZSgxKXtpZigoa1tSPj4yXXwwKT49KGtbKGtbST4+Ml18MCkrND4+Ml18MCkpYnJlYWsgYztrW1o+PjJdPTA7d2hpbGUoMSl7aWYoKGtbWj4+Ml18MCk+PShqWyhrW2NhPj4yXXwwKSszND4+MV18MCkpYnJlYWs7Zj0oc2coa1soa1trW0k+PjJdPj4yXXwwKSsoa1tSPj4yXTw8Myk+PjJdfDAsa1soa1soa1tjYT4+Ml18MCkrND4+Ml18MCkrKGtbWj4+Ml08PDQpPj4yXXwwKXwwKT09MDtlPWtbWj4+Ml18MDtpZihmKXtFPTI4O2JyZWFrfWtbWj4+Ml09ZSsxfWRvIGlmKChFfDApPT0yOCl7RT0wO2tbKGtba1tJPj4yXT4+Ml18MCkrKGtbUj4+Ml08PDMpKzQ+PjJdPWU7aWYoKGtbUj4+Ml18MCkhPShrW1o+PjJdfDApKWlbbj4+MF09MDtpZigoa1taPj4yXXwwKSE9KGpbKGtbY2E+PjJdfDApKzMyPj4xXXwwKSlicmVhaztrW1c+PjJdPWtbUj4+Ml19d2hpbGUoMCk7aWYoKGtbWj4+Ml18MCk+PShqWyhrW2NhPj4yXXwwKSszND4+MV18MCkpe2Y9KEVpKGtbKGtba1tJPj4yXT4+Ml18MCkrKGtbUj4+Ml08PDMpPj4yXXwwKXwwKT09MDtpZihmfChpW0Q+PjBdfDApIT0wKWJyZWFrO2tbVz4+Ml09a1tSPj4yXTtpW24+PjBdPTB9a1tSPj4yXT0oa1tSPj4yXXwwKSsxfW5hPWtbRj4+Ml18MDttYT1rWyhrW2tbST4+Ml0+PjJdfDApKyhrW1I+PjJdPDwzKT4+Ml18MDtrW0E+PjJdPWtbRz4+Ml07a1tBKzQ+PjJdPTA7a1tBKzg+PjJdPW1hO09oKG5hLDM0MjYxLEEpO2lbKGtbRj4+Ml18MCkrMTc+PjBdPTE7YnJlYWsgYX13aGlsZSgwKTtkbyBpZighKGtbSD4+Ml18MCkpe2tbeT4+Ml09MDtrW3krND4+Ml09MDtrW3krOD4+Ml09MDtrW3krMTI+PjJdPTA7a1t5KzE2Pj4yXT0wO2tbeSsyMD4+Ml09MDtrW3krMjQ+PjJdPTA7a1t5KzI4Pj4yXT0wO2tbeT4+Ml09a1tGPj4yXTtrW2xhPj4yXT0tMTtpZihrW2JhPj4yXXwwKXtrW18+PjJdPWtba1tiYT4+Ml0+PjJdO2lmKEx5KHksa1tiYT4+Ml18MCl8MClicmVhayBhO2Vsc2UgYnJlYWt9ZWxzZXtrW18+PjJdPTA7YnJlYWt9fWVsc2V7eT0oa1tGPj4yXXwwKSs0NHwwO0E9KGtbeT4+Ml18MCkrMXwwO2tbeT4+Ml09QTtrW3g+PjJdPUE7QT0oR3goa1tuYT4+Ml18MCl8MCkrMXwwO2tbbT4+Ml09QTt0eChrW25hPj4yXXwwLDE1LGtbeD4+Ml18MCwwLGtbbT4+Ml18MCl8MDtGQihvLDEzLGtbeD4+Ml18MCk7a1tvKzEyPj4yXT0obFtuPj4wXXwwKSE9MD9rW2dhPj4yXXwwOjA7a1tvKzE2Pj4yXT1qWyhrW2NhPj4yXXwwKSszND4+MV07QT1adihrW0Y+PjJdfDAsa1tIPj4yXXwwLG8pfDA7a1t0Pj4yXT1BO2tbaGE+PjJdPWtbbysxMj4+Ml07aWYoa1t0Pj4yXXwwKWJyZWFrIGE7aWYobFsoa1tQPj4yXXwwKSs2OT4+MF18MClicmVhayBhO2lmKGtbKGtbRj4+Ml18MCkrMzY+PjJdfDApYnJlYWsgYTtnRChrW25hPj4yXXwwLGtbeD4+Ml18MCk7aEEoa1tuYT4+Ml18MCwoa1ttPj4yXXwwKS0xfDApO2tbXz4+Ml09a1trW2tbSD4+Ml0+PjJdPj4yXTtpZighKChrW2RhPj4yXXwwKT09MD8oaEQoa1tGPj4yXXwwLGtbcD4+Ml18MCxrW2NhPj4yXXwwKXwwKT09MDowKSlpW21hPj4wXT0xO2lmKCEoaVttYT4+MF18MCkpYnJlYWs7eT0oa1tGPj4yXXwwKSs0MHwwO0E9a1t5Pj4yXXwwO2tbeT4+Ml09QSsxO2tbbGE+PjJdPUE7QT1GeChrW0Y+PjJdfDApfDA7a1t2Pj4yXT1BO0E9Rngoa1tGPj4yXXwwKXwwO2tbdz4+Ml09QTtzeChrW25hPj4yXXwwLDEwNyxrW2xhPj4yXXwwLGtbXz4+Ml18MCl8MDtBPWFBKGtbbmE+PjJdfDAsMTYsa1tvKzg+PjJdfDApfDA7a1toPj4yXT1BO3R4KGtbbmE+PjJdfDAsOTksa1toYT4+Ml18MCxrW18+PjJdfDAsa1t2Pj4yXXwwKXwwO3N4KGtbbmE+PjJdfDAsMTE0LGtbbGE+PjJdfDAsa1t3Pj4yXXwwKXwwO3R4KGtbbmE+PjJdfDAsMTE1LGtbbGE+PjJdfDAsa1t2Pj4yXXwwLGtbdz4+Ml18MCl8MDtnQShrW25hPj4yXXwwLGtbaD4+Ml18MCl8MDtoQShrW25hPj4yXXwwLGtbaD4+Ml18MCk7SHgoa1tGPj4yXXwwLGtbdj4+Ml18MCk7SHgoa1tGPj4yXXwwLGtbdz4+Ml18MCl9d2hpbGUoMCk7aWYoKGtbST4+Ml18MCk9PTAmKGtbXz4+Ml18MCk+MClrW1c+PjJdPWpbKGtbY2E+PjJdfDApKzMyPj4xXTtrW1I+PjJdPTA7d2hpbGUoMSl7aWYoKGtbUj4+Ml18MCk+PShqWyhrW2NhPj4yXXwwKSszND4+MV18MCkpYnJlYWs7a1skPj4yXT0oa1skPj4yXXwwKSsoKGxbKGtbKGtbY2E+PjJdfDApKzQ+PjJdfDApKyhrW1I+PjJdPDw0KSsxNT4+MF0mMnwwKSE9MD8xOjApO2tbUj4+Ml09KGtbUj4+Ml18MCkrMX1pZigoa1tJPj4yXXwwKT09MCYoa1tfPj4yXXwwKSE9MD8oa1tfPj4yXXwwKSE9KChqWyhrW2NhPj4yXXwwKSszND4+MV18MCktKGtbJD4+Ml18MCl8MCk6MCl7bmE9a1tGPj4yXXwwO2xhPShqWyhrW2NhPj4yXXwwKSszND4+MV18MCktKGtbJD4+Ml18MCl8MDttYT1rW18+PjJdfDA7a1tCPj4yXT1rW0c+PjJdO2tbQis0Pj4yXT0wO2tbQis4Pj4yXT1sYTtrW0IrMTI+PjJdPW1hO09oKG5hLDM0MjkzLEIpO2JyZWFrIGF9ZG8gaWYoa1tJPj4yXXwwKXtpZigoa1tfPj4yXXwwKT09KGtbKGtbST4+Ml18MCkrND4+Ml18MCkpYnJlYWs7bmE9a1tGPj4yXXwwO21hPWtbKGtbST4+Ml18MCkrND4+Ml18MDtrW0M+PjJdPWtbXz4+Ml07a1tDKzQ+PjJdPW1hO09oKG5hLDM0MzQ1LEMpO2JyZWFrIGF9d2hpbGUoMCk7aWYoa1soa1tQPj4yXXwwKSsyND4+Ml0mMTI4KXtCPShrW0Y+PjJdfDApKzQ0fDA7Qz0oa1tCPj4yXXwwKSsxfDA7a1tCPj4yXT1DO2tbamE+PjJdPUM7c3goa1tuYT4+Ml18MCw3NiwwLGtbamE+PjJdfDApfDB9ZDpkbyBpZighKGtbWT4+Ml18MCkpe0M9UEMoa1tGPj4yXXwwLGtbY2E+PjJdfDAsMTA1LDAsLTEsMCxTLFQpfDA7a1txPj4yXT1DO0M9ZHgoa1tQPj4yXXwwLChrW3E+PjJdfDApKzE8PDIsMCl8MDtrW0s+PjJdPUM7aWYoIShrW0s+PjJdfDApKWJyZWFrIGE7a1tSPj4yXT0wO3doaWxlKDEpe2lmKChrW1I+PjJdfDApPj0oa1txPj4yXXwwKSlicmVhayBkO0I9KGtbRj4+Ml18MCkrNDR8MDtDPShrW0I+PjJdfDApKzF8MDtrW0I+PjJdPUM7a1soa1tLPj4yXXwwKSsoa1tSPj4yXTw8Mik+PjJdPUM7a1tSPj4yXT0oa1tSPj4yXXwwKSsxfX13aGlsZSgwKTtkbyBpZihpW21hPj4wXXwwKXtDPWFBKGtbbmE+PjJdfDAsNTcsa1tsYT4+Ml18MCl8MDtrW04+PjJdPUM7Qz1HeChrW25hPj4yXXwwKXwwO2tbTT4+Ml09Q31lbHNle2lmKCEoa1tIPj4yXXwwKSlicmVhaztDPWFBKGtbbmE+PjJdfDAsMTYsa1tvKzg+PjJdfDApfDA7a1tNPj4yXT1DO2tbTj4+Ml09Q313aGlsZSgwKTtDPWVBKGtbbmE+PjJdfDApfDA7a1tRPj4yXT1DO2lmKGtbej4+Ml0mMSl7Qz1NQShrW0Y+PjJdfDAsKGpbKGtbY2E+PjJdfDApKzM0Pj4xXXwwKSsxfDApfDA7a1t1Pj4yXT1DO2lmKChrW1c+PjJdfDApPDApc3goa1tuYT4+Ml18MCw3NiwtMSxrW3U+PjJdfDApfDA7ZWxzZXtpZihpW21hPj4wXXwwKXR4KGtbbmE+PjJdfDAsOTYsa1tsYT4+Ml18MCxrW1c+PjJdfDAsa1t1Pj4yXXwwKXwwO2Vsc2UgJEEoa1tGPj4yXXwwLGtbKGtbKGtbYmE+PjJdfDApKzQ+PjJdfDApKygoa1tXPj4yXXwwKSoyMHwwKT4+Ml18MCxrW3U+PjJdfDApO0M9YUEoa1tuYT4+Ml18MCwzNSxrW3U+PjJdfDApfDA7a1tnPj4yXT1DO3N4KGtbbmE+PjJdfDAsNzYsLTEsa1t1Pj4yXXwwKXwwO2hBKGtbbmE+PjJdfDAsa1tnPj4yXXwwKTthQShrW25hPj4yXXwwLDE3LGtbdT4+Ml18MCl8MH1rW1o+PjJdPTA7a1tSPj4yXT0wO3doaWxlKDEpe2lmKChrW1I+PjJdfDApPj0oalsoa1tjYT4+Ml18MCkrMzQ+PjFdfDApKWJyZWFrO2U6ZG8gaWYoa1tJPj4yXXwwKXtrW1o+PjJdPTA7d2hpbGUoMSl7aWYoKGtbWj4+Ml18MCk+PShrWyhrW0k+PjJdfDApKzQ+PjJdfDApKWJyZWFrIGU7aWYoKGtbKGtba1tJPj4yXT4+Ml18MCkrKGtbWj4+Ml08PDMpKzQ+PjJdfDApPT0oa1tSPj4yXXwwKSlicmVhayBlO2tbWj4+Ml09KGtbWj4+Ml18MCkrMX19d2hpbGUoMCk7ZG8gaWYoKGlbbWE+PjBdfDApIT0wfChrW2JhPj4yXXwwKSE9MCl7aWYoKGtbST4+Ml18MCkhPTA/KGtbWj4+Ml18MCk+PShrWyhrW0k+PjJdfDApKzQ+PjJdfDApOjApe0U9OTA7YnJlYWt9aWYoaVttYT4+MF18MCl7dHgoa1tuYT4+Ml18MCw5NixrW2xhPj4yXXwwLGtbWj4+Ml18MCwoa1t1Pj4yXXwwKSsoa1tSPj4yXXwwKSsxfDApfDA7YnJlYWt9ZWxzZXtpRChrW0Y+PjJdfDAsa1soa1soa1tiYT4+Ml18MCkrND4+Ml18MCkrKChrW1o+PjJdfDApKjIwfDApPj4yXXwwLChrW3U+PjJdfDApKyhrW1I+PjJdfDApKzF8MCk7YnJlYWt9fWVsc2UgRT05MDt3aGlsZSgwKTtpZigoRXwwKT09OTApe0U9MDskQShrW0Y+PjJdfDAsa1soa1soa1tjYT4+Ml18MCkrND4+Ml18MCkrKGtbUj4+Ml08PDQpKzQ+PjJdfDAsKGtbdT4+Ml18MCkrKGtbUj4+Ml18MCkrMXwwKX1pZighKGtbST4+Ml18MCkpa1taPj4yXT0oa1taPj4yXXwwKSsxO2tbUj4+Ml09KGtbUj4+Ml18MCkrMX1pZighKGtbWT4+Ml18MCkpakQoa1tuYT4+Ml18MCxrW2NhPj4yXXwwLChrW3U+PjJdfDApKzF8MCk7a0Qoa1tGPj4yXXwwLGtbZGE+PjJdfDAsMTA4LDAsMSxrW2NhPj4yXXwwLChrW3U+PjJdfDApLShqWyhrW2NhPj4yXXwwKSszND4+MV18MCktMXwwLGtbSj4+Ml18MCxrW1E+PjJdfDApO1BBKGtbRj4+Ml18MCxrW3U+PjJdfDAsKGpbKGtbY2E+PjJdfDApKzM0Pj4xXXwwKSsxfDApfWRvIGlmKCEoa1tZPj4yXXwwKSl7aWYobFsoa1tjYT4+Ml18MCkrNDI+PjBdJjE2KXN4KGtbbmE+PjJdfDAsNzksMCxrW2lhPj4yXXwwKXwwO2Y6ZG8gaWYoKGtbVz4+Ml18MCk+PTApe2RvIGlmKGlbbWE+PjBdfDApdHgoa1tuYT4+Ml18MCw5NixrW2xhPj4yXXwwLGtbVz4+Ml18MCxrW2thPj4yXXwwKXwwO2Vsc2V7aWYoa1tIPj4yXXwwKXtzeChrW25hPj4yXXwwLDg0LChrW2hhPj4yXXwwKSsoa1tXPj4yXXwwKXwwLGtba2E+PjJdfDApfDA7YnJlYWt9JEEoa1tGPj4yXXwwLGtbKGtbKGtbYmE+PjJdfDApKzQ+PjJdfDApKygoa1tXPj4yXXwwKSoyMHwwKT4+Ml18MCxrW2thPj4yXXwwKTtFPW9BKGtbbmE+PjJdfDAsLTEpfDA7a1tzPj4yXT1FO2lmKCEoa1tzPj4yXXwwKSlicmVhaztpZigobFtrW3M+PjJdPj4wXXwwKSE9NzkpYnJlYWs7aWYobFsoa1tjYT4+Ml18MCkrNDI+PjBdJjE2KWJyZWFrO2lbTz4+MF09MTtpW2tbcz4+Ml0+PjBdPTExNDtrWyhrW3M+PjJdfDApKzQ+PjJdPWtbUz4+Ml07a1soa1tzPj4yXXwwKSs4Pj4yXT1rW2thPj4yXTtrWyhrW3M+PjJdfDApKzEyPj4yXT1rW2ZhPj4yXX13aGlsZSgwKTtpZihpW08+PjBdfDApYnJlYWs7ZT1rW25hPj4yXXwwO2lmKGxbKGtbY2E+PjJdfDApKzQyPj4wXSYxNil7RT1HeChlKXwwO2tbTD4+Ml09RTtzeChrW25hPj4yXXwwLDM0LGtba2E+PjJdfDAsKGtbTD4+Ml18MCkrMnwwKXwwfWVsc2V7RT1hQShlLDM1LGtba2E+PjJdfDApfDA7a1tMPj4yXT1FO3R4KGtbbmE+PjJdfDAsMTE0LGtbUz4+Ml18MCxrW2thPj4yXXwwLGtbZmE+PjJdfDApfDA7aEEoa1tuYT4+Ml18MCxrW0w+PjJdfDApfWFBKGtbbmE+PjJdfDAsMTcsa1trYT4+Ml18MCl8MH1lbHNle2RvIGlmKCEobFsoa1tjYT4+Ml18MCkrNDI+PjBdJjE2KSl7aWYobFtEPj4wXXwwKWJyZWFrO3R4KGtbbmE+PjJdfDAsMTE0LGtbUz4+Ml18MCxrW2thPj4yXXwwLGtbZmE+PjJdfDApfDA7aVtPPj4wXT0xO2JyZWFrIGZ9d2hpbGUoMCk7c3goa1tuYT4+Ml18MCw3OSwwLGtba2E+PjJdfDApfDB9d2hpbGUoMCk7bEQoa1tGPj4yXXwwLGtbZmE+PjJdfDAsa1trYT4+Ml18MCk7a1skPj4yXT0wO2tbUj4+Ml09MDt3aGlsZSgxKXtpZigoa1tSPj4yXXwwKT49KGpbKGtbY2E+PjJdfDApKzM0Pj4xXXwwKSlicmVhaztrW1U+PjJdPShrW2thPj4yXXwwKSsxKyhrW1I+PjJdfDApO2c6ZG8gaWYoKGtbUj4+Ml18MCk9PShqWyhrW2NhPj4yXXwwKSszMj4+MV18MCkpYUEoa1tuYT4+Ml18MCw4MCxrW1U+PjJdfDApfDA7ZWxzZXtoOmRvIGlmKCEoa1tJPj4yXXwwKSlpZihsWyhrWyhrW2NhPj4yXXwwKSs0Pj4yXXwwKSsoa1tSPj4yXTw8NCkrMTU+PjBdJjIpe2tbWj4+Ml09LTE7a1skPj4yXT0oa1skPj4yXXwwKSsxO2JyZWFrfWVsc2V7a1taPj4yXT0oa1tSPj4yXXwwKS0oa1skPj4yXXwwKTticmVha31lbHNle2tbWj4+Ml09MDt3aGlsZSgxKXtpZigoa1taPj4yXXwwKT49KGtbKGtbST4+Ml18MCkrND4+Ml18MCkpYnJlYWsgaDtpZigoa1soa1trW0k+PjJdPj4yXXwwKSsoa1taPj4yXTw8MykrND4+Ml18MCk9PShrW1I+PjJdfDApKWJyZWFrIGg7a1taPj4yXT0oa1taPj4yXXwwKSsxfX13aGlsZSgwKTtkbyBpZighKChrW1o+PjJdfDApPDB8KGtbXz4+Ml18MCk9PTApKXtpZigoa1tJPj4yXXwwKSE9MD8oa1taPj4yXXwwKT49KGtbKGtbST4+Ml18MCkrND4+Ml18MCk6MClicmVhaztpZihpW21hPj4wXXwwKXt0eChrW25hPj4yXXwwLDk2LGtbbGE+PjJdfDAsa1taPj4yXXwwLGtbVT4+Ml18MCl8MDticmVhayBnfWlmKCEoa1tIPj4yXXwwKSl7JEEoa1tGPj4yXXwwLGtbKGtbKGtbYmE+PjJdfDApKzQ+PjJdfDApKygoa1taPj4yXXwwKSoyMHwwKT4+Ml18MCxrW1U+PjJdfDApO2JyZWFrIGd9aWYoKGtbaGE+PjJdfDApPT0oa1tnYT4+Ml18MCkpYnJlYWsgZztzeChrW25hPj4yXXwwLDg1LChrW2hhPj4yXXwwKSsoa1taPj4yXXwwKXwwLGtbVT4+Ml18MCl8MDticmVhayBnfXdoaWxlKDApO21EKGtbRj4+Ml18MCxrWyhrWyhrW2NhPj4yXXwwKSs0Pj4yXXwwKSsoa1tSPj4yXTw8NCkrND4+Ml18MCxrW1U+PjJdfDApfXdoaWxlKDApO2tbUj4+Ml09KGtbUj4+Ml18MCkrMX1pZihsWyhrW2NhPj4yXXwwKSs0Mj4+MF0mMTYpe2thPWN5KGtbUD4+Ml18MCxrW2NhPj4yXXwwKXwwO2tbZWE+PjJdPWthO25EKGtbRj4+Ml18MCxrW2NhPj4yXXwwKTt3eChrW25hPj4yXXwwLDEyLDEsKGpbKGtbY2E+PjJdfDApKzM0Pj4xXXwwKSsyfDAsa1tpYT4+Ml18MCxrW2VhPj4yXXwwLC0xMCl8MDtUaChrW25hPj4yXXwwLCgoa1tKPj4yXXwwKT09MTA/MjprW0o+PjJdfDApJjI1NSk7ZHkoa1tGPj4yXXwwKTticmVha31lbHNle29EKGtbRj4+Ml18MCxrW2NhPj4yXXwwLGtbSz4+Ml18MCxrW1M+PjJdfDAsa1tUPj4yXXwwLGtbaWE+PjJdfDAsMCwoa1tXPj4yXXwwKT49MCYyNTUsa1tKPj4yXSYyNTUsa1tRPj4yXXwwLFgsMCk7cEQoa1tGPj4yXXwwLGtbY2E+PjJdfDAsMCxrW2lhPj4yXXwwLDAsMCk7cUQoa1tGPj4yXXwwLGtbY2E+PjJdfDAsa1tTPj4yXXwwLGtbVD4+Ml18MCxrW2lhPj4yXXwwLGtbSz4+Ml18MCwwLGxbTz4+MF18MCwoa1tYPj4yXXwwKT09MCYxKTticmVha319d2hpbGUoMCk7aWYoa1soa1tQPj4yXXwwKSsyND4+Ml0mMTI4KXN4KGtbbmE+PjJdfDAsOTEsa1tqYT4+Ml18MCwxKXwwO2lmKGtbZGE+PjJdfDApa0Qoa1tGPj4yXXwwLGtbZGE+PjJdfDAsMTA4LDAsMixrW2NhPj4yXXwwLChrW2dhPj4yXXwwKS0yLShqWyhrW2NhPj4yXXwwKSszND4+MV18MCl8MCxrW0o+PjJdfDAsa1tRPj4yXXwwKTtpQShrW25hPj4yXXwwLGtbUT4+Ml18MCk7ZG8gaWYoaVttYT4+MF18MCl7c3goa1tuYT4+Ml18MCw3LGtbbGE+PjJdfDAsa1tNPj4yXXwwKXwwO2hBKGtbbmE+PjJdfDAsa1tOPj4yXXwwKTthQShrW25hPj4yXXwwLDExMSxrW2xhPj4yXXwwKXwwfWVsc2V7aWYoIShrW0g+PjJdfDApKWJyZWFrO2dBKGtbbmE+PjJdfDAsa1tNPj4yXXwwKXwwO2hBKGtbbmE+PjJdfDAsa1tOPj4yXXwwKX13aGlsZSgwKTtpZigoa1tZPj4yXXwwKSE9MD8xOihsWyhrW2NhPj4yXXwwKSs0Mj4+MF0mMTZ8MCkhPTApYnJlYWs7aWYoKGtbUz4+Ml18MCk8KGtbVD4+Ml18MCkpYUEoa1tuYT4+Ml18MCwxMTEsa1tTPj4yXXwwKXwwO2tbVj4+Ml09MDtrW2FhPj4yXT1rWyhrW2NhPj4yXXwwKSs4Pj4yXTt3aGlsZSgxKXtpZighKGtbYWE+PjJdfDApKWJyZWFrIGI7YUEoa1tuYT4+Ml18MCwxMTEsKGtbVj4+Ml18MCkrKGtbVD4+Ml18MCl8MCl8MDtrW2FhPj4yXT1rWyhrW2FhPj4yXXwwKSsyMD4+Ml07a1tWPj4yXT0oa1tWPj4yXXwwKSsxfX13aGlsZSgwKTtpZigobFsoa1tGPj4yXXwwKSsxOD4+MF18MCk9PTA/KGtbKGtbRj4+Ml18MCkrMTI4Pj4yXXwwKT09MDowKXJEKGtbRj4+Ml18MCk7aWYoKChrWyhrW1A+PjJdfDApKzI0Pj4yXSYxMjh8MCkhPTA/KGlbKGtbRj4+Ml18MCkrMTg+PjBdfDApPT0wOjApPyhrWyhrW0Y+PjJdfDApKzEyOD4+Ml18MCk9PTA6MCl7c3goa1tuYT4+Ml18MCw4NyxrW2phPj4yXXwwLDEpfDA7d0Moa1tuYT4+Ml18MCwxKTt4QyhrW25hPj4yXXwwLDAsMCwzNDM3MCwwKXwwfX19d2hpbGUoMCk7cnYoa1tQPj4yXXwwLGtbRz4+Ml18MCk7b3Yoa1tQPj4yXXwwLGtbYmE+PjJdfDApO3B2KGtbUD4+Ml18MCxrW0g+PjJdfDApO3V2KGtbUD4+Ml18MCxrW0k+PjJdfDApO2JnKGtbUD4+Ml18MCxrW0s+PjJdfDApO3I9b2E7cmV0dXJufWZ1bmN0aW9uIHJ3KGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxpPTA7aT1yO3I9ciszMnwwO2U9aSsxNnwwO2Q9aSsxMnwwO2Y9aSs4fDA7Zz1pKzR8MDtoPWk7a1tkPj4yXT1hO2tbZj4+Ml09YjtrW2c+PjJdPWM7aWYoKGtbZj4+Ml18MCk9PTA/KGM9Q2goa1tkPj4yXXwwLDgsMCl8MCxrW2Y+PjJdPWMsKGtbZj4+Ml18MCk9PTApOjApe2tbZT4+Ml09MDtoPWtbZT4+Ml18MDtyPWk7cmV0dXJuIGh8MH1jPWFEKGtbZD4+Ml18MCxrW2tbZj4+Ml0+PjJdfDAsOCwoa1tmPj4yXXwwKSs0fDAsaCl8MDtrW2tbZj4+Ml0+PjJdPWM7ZD1rW2Q+PjJdfDA7aWYoKGtbaD4+Ml18MCk8MCl7dXYoZCxrW2Y+PjJdfDApO2tbZT4+Ml09MDtoPWtbZT4+Ml18MDtyPWk7cmV0dXJuIGh8MH1lbHNle2c9YngoZCxrW2c+PjJdfDApfDA7a1soa1trW2Y+PjJdPj4yXXwwKSsoa1toPj4yXTw8Myk+PjJdPWc7a1tlPj4yXT1rW2Y+PjJdO2g9a1tlPj4yXXwwO3I9aTtyZXR1cm4gaHwwfXJldHVybiAwfWZ1bmN0aW9uIHN3KGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wO2Q9cjtyPXIrMTZ8MDtlPWQrOHwwO2c9ZCs0fDA7Zj1kO2tbZT4+Ml09YTtrW2c+PjJdPWI7a1tmPj4yXT1jO2tbKGtbZT4+Ml18MCkrND4+Ml09a1trW2c+PjJdPj4yXTtrWyhrW2U+PjJdfDApKzg+PjJdPShrW2tbZj4+Ml0+PjJdfDApKyhrWyhrW2Y+PjJdfDApKzQ+PjJdfDApO3I9ZDtyZXR1cm59ZnVuY3Rpb24gdHcoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxtPTAsbj0wLG89MCxwPTA7cD1yO3I9ciszMnwwO2U9cCsyNHwwO2Y9cCsyMHwwO2c9cCsxNnwwO2g9cCsxMnwwO289cCs4fDA7bj1wKzR8MDttPXA7a1tlPj4yXT1hO2tbZj4+Ml09YjtrW2c+PjJdPWM7a1toPj4yXT1kO2tbbj4+Ml09MDtrW20+PjJdPTA7ZG8gaWYoa1tnPj4yXXwwKXtpZigoKGtbZj4+Ml18MCk9PTEzND8oa1trW2c+PjJdPj4yXXwwKSE9MDowKT8oX2koa1trW2c+PjJdPj4yXXwwLG0pfDApIT0wOjApYnJlYWs7a1tuPj4yXT0oa1soa1tnPj4yXXwwKSs0Pj4yXXwwKSsxfXdoaWxlKDApO2M9ZHgoa1tlPj4yXXwwLDQ4KyhrW24+PjJdfDApfDAsMCl8MDtrW28+PjJdPWM7aWYoIShrW28+PjJdfDApKXtvPWtbbz4+Ml18MDtyPXA7cmV0dXJuIG98MH1lPWtbbz4+Ml18MDthPWUrNDh8MDtkb3trW2U+PjJdPTA7ZT1lKzR8MH13aGlsZSgoZXwwKTwoYXwwKSk7aVtrW28+PjJdPj4wXT1rW2Y+PjJdO2pbKGtbbz4+Ml18MCkrMzQ+PjFdPS0xO2RvIGlmKGtbZz4+Ml18MCl7ZT1rW28+PjJdfDA7aWYoIShrW24+PjJdfDApKXtuPWUrNHwwO2tbbj4+Ml09a1tuPj4yXXwxMDI0O2tbKGtbbz4+Ml18MCkrOD4+Ml09a1ttPj4yXTticmVha31rWyhrW28+PjJdfDApKzg+PjJdPWUrNDg7aWYoa1soa1tnPj4yXXwwKSs0Pj4yXXwwKWJTKGtbKGtbbz4+Ml18MCkrOD4+Ml18MCxrW2tbZz4+Ml0+PjJdfDAsa1soa1tnPj4yXXwwKSs0Pj4yXXwwKXwwO2lbKGtbKGtbbz4+Ml18MCkrOD4+Ml18MCkrKGtbKGtbZz4+Ml18MCkrND4+Ml18MCk+PjBdPTA7aWYoKGtbaD4+Ml18MCkhPTA/KGxbMTg0MDMrKGxba1soa1tvPj4yXXwwKSs4Pj4yXT4+MF18MCk+PjBdJjEyOHwwKSE9MDowKXtpZigoaVtrWyhrW28+PjJdfDApKzg+PjJdPj4wXXwwKT09MzQpe249KGtbbz4+Ml18MCkrNHwwO2tbbj4+Ml09a1tuPj4yXXw2NH1oeChrWyhrW28+PjJdfDApKzg+PjJdfDApfX13aGlsZSgwKTtrWyhrW28+PjJdfDApKzI0Pj4yXT0xO289a1tvPj4yXXwwO3I9cDtyZXR1cm4gb3wwfWZ1bmN0aW9uIHV3KGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxzPTAsdD0wLHU9MDt1PXI7cj1yKzY0fDA7cD11KzE2fDA7bz11Kzh8MDtkPXUrNDR8MDtlPXUrNDB8MDtmPXUrMzZ8MDtsPXUrMzJ8MDtzPXUrMjh8MDtxPXUrNTB8MDttPXU7aD11KzI0fDA7bj11KzQ4fDA7Zz11KzIwfDA7a1tkPj4yXT1hO2tbZT4+Ml09YjtrW2Y+PjJdPWM7a1tsPj4yXT1rW2tbZD4+Ml0+PjJdO2lmKCEoa1tlPj4yXXwwKSl7cj11O3JldHVybn1rW3M+PjJdPWtbKGtbZT4+Ml18MCkrOD4+Ml07aWYoaVsoa1tzPj4yXXwwKSsxPj4wXXwwKXtkbyBpZigoaVtrW3M+PjJdPj4wXXwwKSE9NjMpe2pbcT4+MV09MDtqW24+PjFdPTA7d2hpbGUoMSl7aWYoKGpbbj4+MV18MCk+PShrWyhrW2Q+PjJdfDApKzQwND4+Ml18MCkpYnJlYWs7aWYoKGtbKGtbKGtbZD4+Ml18MCkrNDI4Pj4yXXwwKSsoaltuPj4xXTw8Mik+PjJdfDApIT0wPyhyUihrWyhrWyhrW2Q+PjJdfDApKzQyOD4+Ml18MCkrKGpbbj4+MV08PDIpPj4yXXwwLGtbcz4+Ml18MCl8MCk9PTA6MCl7dD0xNDticmVha31qW24+PjFdPShqW24+PjFdfDApKzE8PDE2Pj4xNn1pZigodHwwKT09MTQpaltxPj4xXT0oaltuPj4xXXwwKSsxO2lmKCEoaltxPj4xXXwwKSl7bz0oa1tkPj4yXXwwKSs0MDB8MDt0PShqW28+PjFdfDApKzE8PDE2Pj4xNjtqW28+PjFdPXQ7altxPj4xXT10fX1lbHNle3Q9MD09KFdpKChrW3M+PjJdfDApKzF8MCxtLChrW2Y+PjJdfDApLTF8MCwxKXwwKSYxO2tbaD4+Ml09dDtqW3E+PjFdPWtbbT4+Ml07dD1tO2E9a1t0KzQ+PjJdfDA7aWYoISgoa1toPj4yXXwwKT09MHwoKGF8MCk8MHwoYXwwKT09MCYoa1t0Pj4yXXwwKT4+PjA8MSkpPyhhPW0sYz1rW2ErND4+Ml18MCx0PWtbKGtbbD4+Ml18MCkrOTYrMzY+PjJdfDAsYj0oKHR8MCk8MCk8PDMxPj4zMSwhKChjfDApPihifDApfCgoY3wwKT09KGJ8MCk/KGtbYT4+Ml18MCk+Pj4wPnQ+Pj4wOjApKSk6MCl7bz1tO2I9a1tvKzQ+PjJdfDA7dD1qWyhrW2Q+PjJdfDApKzQwMD4+MV18MDthPSgodHwwKTwwKTw8MzE+PjMxO2lmKCEoKGJ8MCk+KGF8MCl8KChifDApPT0oYXwwKT8oa1tvPj4yXXwwKT4+PjA+dD4+PjA6MCkpKWJyZWFrO2pbKGtbZD4+Ml18MCkrNDAwPj4xXT1rW20+PjJdO2JyZWFrfXQ9a1tkPj4yXXwwO2tbbz4+Ml09a1soa1tsPj4yXXwwKSs5NiszNj4+Ml07T2godCwzNDE5NSxvKTtyPXU7cmV0dXJufXdoaWxlKDApO2pbKGtbZT4+Ml18MCkrMzI+PjFdPWpbcT4+MV18MDtkbyBpZigoaltxPj4xXXwwKT4oa1soa1tkPj4yXXwwKSs0MDQ+PjJdfDApKXt0PWN4KGtbbD4+Ml18MCxrWyhrW2Q+PjJdfDApKzQyOD4+Ml18MCxqW3E+PjFdPDwyLDApfDA7a1tnPj4yXT10O2lmKCEoa1tnPj4yXXwwKSl7cj11O3JldHVybn1lbHNle2tbKGtbZD4+Ml18MCkrNDI4Pj4yXT1rW2c+PjJdO2RTKChrW2c+PjJdfDApKyhrWyhrW2Q+PjJdfDApKzQwND4+Ml08PDIpfDAsMCwoaltxPj4xXXwwKS0oa1soa1tkPj4yXXwwKSs0MDQ+PjJdfDApPDwyfDApfDA7a1soa1tkPj4yXXwwKSs0MDQ+PjJdPWpbcT4+MV07YnJlYWt9fXdoaWxlKDApO2lmKCEoa1soa1soa1tkPj4yXXwwKSs0Mjg+PjJdfDApKygoaltxPj4xXXwwKS0xPDwyKT4+Ml18MCkpe3Q9Z3goa1tsPj4yXXwwLGtbcz4+Ml18MCxrW2Y+PjJdfDAsMCl8MDtrWyhrWyhrW2Q+PjJdfDApKzQyOD4+Ml18MCkrKChqW3E+PjFdfDApLTE8PDIpPj4yXT10fX1lbHNle3M9KGtbZD4+Ml18MCkrNDAwfDA7dD0oaltzPj4xXXwwKSsxPDwxNj4+MTY7altzPj4xXT10O2pbKGtbZT4+Ml18MCkrMzI+PjFdPXR9aWYoKGpbKGtbZD4+Ml18MCkrNDAwPj4xXXwwKTw9KGtbKGtbbD4+Ml18MCkrOTYrMzY+PjJdfDApKXtyPXU7cmV0dXJufU9oKGtbZD4+Ml18MCwzNDIzOCxwKTtyPXU7cmV0dXJufWZ1bmN0aW9uIHZ3KGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaT0wLGo9MDtqPXI7cj1yKzMyfDA7ZT1qKzE2fDA7Zj1qKzEyfDA7Zz1qKzh8MDtoPWorNHwwO2k9ajtrW2U+PjJdPWE7a1tmPj4yXT1iO2tbZz4+Ml09YztrW2g+PjJdPWQ7aWYoKGtbKGtbZz4+Ml18MCkrND4+Ml18MCk+Pj4wPD0wKXthPWtbZj4+Ml18MDtyPWo7cmV0dXJuIGF8MH1hPXR3KGtba1tlPj4yXT4+Ml18MCw1MyxrW2c+PjJdfDAsa1toPj4yXXwwKXwwO2tbaT4+Ml09YTtpZighKGtbaT4+Ml18MCkpe2E9a1tmPj4yXXwwO3I9ajtyZXR1cm4gYXwwfWtbKGtbaT4+Ml18MCkrMTI+PjJdPWtbZj4+Ml07YT0oa1tpPj4yXXwwKSs0fDA7a1thPj4yXT1rW2E+PjJdfDQzNTI7a1tmPj4yXT1rW2k+PjJdO2E9a1tmPj4yXXwwO3I9ajtyZXR1cm4gYXwwfWZ1bmN0aW9uIHd3KGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxpPTAsaj0wO2k9cjtyPXIrMzJ8MDtkPWkrMjB8MDtlPWkrMTZ8MDtmPWkrMTJ8MDtqPWkrOHwwO2g9aSs0fDA7Zz1pO2tbZT4+Ml09YTtrW2Y+PjJdPWI7a1tqPj4yXT1jO2tbZz4+Ml09a1trW2U+PjJdPj4yXTtjPXR3KGtbZz4+Ml18MCwxNTEsa1tqPj4yXXwwLDEpfDA7a1toPj4yXT1jO2lmKCEoa1toPj4yXXwwKSl7b3Yoa1tnPj4yXXwwLGtbZj4+Ml18MCk7a1tkPj4yXT0wO2o9a1tkPj4yXXwwO3I9aTtyZXR1cm4ganwwfWVsc2V7a1soa1toPj4yXXwwKSsyMD4+Ml09a1tmPj4yXTtDdyhrW2U+PjJdfDAsa1toPj4yXXwwKTtrW2Q+PjJdPWtbaD4+Ml07aj1rW2Q+PjJdfDA7cj1pO3JldHVybiBqfDB9cmV0dXJuIDB9ZnVuY3Rpb24geHcoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxpPTA7ZT1yO3I9cisxNnwwO2k9ZSsxMnwwO2g9ZSs4fDA7Zj1lKzR8MDtnPWU7a1tpPj4yXT1hO2tbaD4+Ml09YjtrW2Y+PjJdPWM7a1tnPj4yXT1kO2Q9T3Yoa1tpPj4yXXwwLGtbaD4+Ml18MCxrW2tbZj4+Ml0+PjJdfDAsa1trW2c+PjJdPj4yXXwwLDApfDA7a1trW2Y+PjJdPj4yXT1kO2tbKGtbZj4+Ml18MCkrOD4+Ml09a1soa1tnPj4yXXwwKSs4Pj4yXTtyPWU7cmV0dXJufWZ1bmN0aW9uIHl3KGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wO2Y9cjtyPXIrMTZ8MDtkPWYrOHwwO2c9Zis0fDA7ZT1mO2tbZD4+Ml09YTtrW2c+PjJdPWI7a1tlPj4yXT1jO2lmKCEoa1tnPj4yXXwwKSl7cj1mO3JldHVybn1nPU92KGtbZD4+Ml18MCwxOSxrW2tbZT4+Ml0+PjJdfDAsMCwwKXwwO2tba1tlPj4yXT4+Ml09ZztyPWY7cmV0dXJufWZ1bmN0aW9uIHp3KGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaT0wO2U9cjtyPXIrMTZ8MDtpPWUrMTJ8MDtoPWUrOHwwO2Y9ZSs0fDA7Zz1lO2tbaT4+Ml09YTtrW2g+PjJdPWI7a1tmPj4yXT1jO2tbZz4+Ml09ZDtkPU92KGtbaT4+Ml18MCxrW2g+PjJdfDAsa1trW2Y+PjJdPj4yXXwwLDAsMCl8MDtrW2tbZj4+Ml0+PjJdPWQ7a1soa1tmPj4yXXwwKSs4Pj4yXT0oa1trW2c+PjJdPj4yXXwwKSsoa1soa1tnPj4yXXwwKSs0Pj4yXXwwKTtyPWU7cmV0dXJufWZ1bmN0aW9uIEF3KGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLG09MDtqPXI7cj1yKzMyfDA7bT1qKzE2fDA7ZT1qKzEyfDA7Zj1qKzh8MDtnPWorNHwwO2g9ajtrW20+PjJdPWE7a1tlPj4yXT1iO2tbZj4+Ml09YztrW2c+PjJdPWQ7a1toPj4yXT1rW2tbbT4+Ml0+PjJdO2lmKCEoKGtbZj4+Ml18MCkhPTAmKGtbZT4+Ml18MCkhPTApKXtyPWo7cmV0dXJufWlmKChsW2tbZT4+Ml0+PjBdfDB8MCkhPTEwMSl7cj1qO3JldHVybn1pW2tbZj4+Ml0+PjBdPWtbZz4+Ml07c3Yoa1toPj4yXXwwLGtbKGtbZj4+Ml18MCkrMTY+PjJdfDApO2tbKGtbZj4+Ml18MCkrMTY+PjJdPTA7cj1qO3JldHVybn1mdW5jdGlvbiBCdyhhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxpPTAsaj0wLGw9MDtmPXI7cj1yKzMyfDA7Zz1mKzE2fDA7aj1mKzEyfDA7aT1mKzh8MDtoPWYrNHwwO2w9ZjtrW2c+PjJdPWE7a1tqPj4yXT1iO2tbaT4+Ml09YztrW2g+PjJdPWQ7a1tsPj4yXT1lO2tbKGtbZz4+Ml18MCkrND4+Ml09a1trW2w+PjJdPj4yXTtlPU92KGtbaj4+Ml18MCxrW2k+PjJdfDAsa1trW2g+PjJdPj4yXXwwLDAsMCl8MDtrW2tbZz4+Ml0+PjJdPWU7a1soa1tnPj4yXXwwKSs4Pj4yXT1rWyhrW2g+PjJdfDApKzg+PjJdO3I9ZjtyZXR1cm59ZnVuY3Rpb24gQ3coYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTA7ZT1yO3I9cisxNnwwO2M9ZSs0fDA7ZD1lO2tbYz4+Ml09YTtrW2Q+PjJdPWI7aWYoa1soa1tjPj4yXXwwKSszNj4+Ml18MCl7cj1lO3JldHVybn1KeihrW2Q+PjJdfDApO2h6KGtbYz4+Ml18MCxrWyhrW2Q+PjJdfDApKzI0Pj4yXXwwKXwwO3I9ZTtyZXR1cm59ZnVuY3Rpb24gRHcoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTA7Zz1yO3I9cisxNnwwO2Q9Zys4fDA7ZT1nKzR8MDtmPWc7a1tkPj4yXT1hO2tbZT4+Ml09YjtrW2Y+PjJdPWM7aWYoa1tlPj4yXXwwKXtrWyhrW2U+PjJdfDApKzIwPj4yXT1rW2Y+PjJdO2M9KGtbZT4+Ml18MCkrNHwwO2tbYz4+Ml09a1tjPj4yXXwyMDk5MjAwO0N3KGtbZD4+Ml18MCxrW2U+PjJdfDApO3I9ZztyZXR1cm59ZWxzZXtwdihrW2tbZD4+Ml0+PjJdfDAsa1tmPj4yXXwwKTtyPWc7cmV0dXJufX1mdW5jdGlvbiBFdyhhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxpPTAsaj0wLG09MCxuPTAsbz0wO2o9cjtyPXIrMzJ8MDtpPWo7Zj1qKzI4fDA7bz1qKzI0fDA7Zz1qKzIwfDA7bj1qKzE2fDA7bT1qKzEyfDA7aD1qKzh8MDtrW2Y+PjJdPWE7a1tvPj4yXT1iO2tbZz4+Ml09YztrW24+PjJdPWQ7a1ttPj4yXT1lO2U9Yncoa1tmPj4yXXwwLGtbbz4+Ml18MCwwKXwwO2tbaD4+Ml09ZTtpZigoa1tuPj4yXXwwKSE9MHwoa1ttPj4yXXwwKSE9LTE/KGxbKGtba1tmPj4yXT4+Ml18MCkrMTQ4KzU+PjBdfDB8MCk9PTA6MCl7bz1rW2Y+PjJdfDA7bj1rW2tbZz4+Ml0+PjJdfDA7a1tpPj4yXT1rWyhrW2c+PjJdfDApKzQ+PjJdO2tbaSs0Pj4yXT1uO09oKG8sMzQxNTUsaSl9Y3coa1tmPj4yXXwwLGtbaD4+Ml18MCxrW2c+PjJdfDAsMSk7cj1qO3JldHVybiBrW2g+PjJdfDB9ZnVuY3Rpb24gRncoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxzPTAsdD0wLHU9MDt1PXI7cj1yKzgwfDA7bD11KzE2fDA7aj11Kzh8MDt0PXU7bz11KzY4fDA7cD11KzY0fDA7cT11KzYwfDA7Zj11KzU2fDA7aD11KzUyfDA7cz11KzQ4fDA7ZT11KzQ0fDA7ZD11KzQwfDA7Zz11KzM2fDA7bT11KzMyfDA7bj11KzI4fDA7a1tvPj4yXT1hO2tbcD4+Ml09YjtrW3E+PjJdPWM7a1tzPj4yXT1rW2tbbz4+Ml0+PjJdO2lmKGlbKGtbcz4+Ml18MCkrNjk+PjBdfDApe3M9a1tzPj4yXXwwO3Q9a1twPj4yXXwwO3J2KHMsdCk7cj11O3JldHVybn1pZihVeihrW28+PjJdfDApfDApe3M9a1tzPj4yXXwwO3Q9a1twPj4yXXwwO3J2KHMsdCk7cj11O3JldHVybn1hPVVqKGtbcz4+Ml18MCxrWyhrW3A+PjJdfDApKzgrOD4+Ml18MCxrWyhrW3A+PjJdfDApKzgrND4+Ml18MCl8MDtrW2Y+PjJdPWE7aWYoIShrW2Y+PjJdfDApKXtkPWtbbz4+Ml18MDtlPWtbcD4+Ml18MDtpZihrW3E+PjJdfDApaEMoZCxrW2UrOCs0Pj4yXXwwKTtlbHNle2tbdD4+Ml09ZTtrW3QrND4+Ml09MDtPaChkLDMzOTQ1LHQpfWlbKGtbbz4+Ml18MCkrMTc+PjBdPTE7cz1rW3M+PjJdfDA7dD1rW3A+PjJdfDA7cnYocyx0KTtyPXU7cmV0dXJufWlmKGlbKGtbZj4+Ml18MCkrNTU+PjBdJjMpe3Q9a1tvPj4yXXwwO2tbaj4+Ml09MDtPaCh0LDMzOTYzLGopO3M9a1tzPj4yXXwwO3Q9a1twPj4yXXwwO3J2KHMsdCk7cj11O3JldHVybn10PVBoKGtbcz4+Ml18MCxrWyhrW2Y+PjJdfDApKzI0Pj4yXXwwKXwwO2tbZT4+Ml09dDtrW2Q+PjJdPTEwO2tbZz4+Ml09a1soa1tmPj4yXXwwKSsxMj4+Ml07a1ttPj4yXT1rWyhrWyhrW3M+PjJdfDApKzE2Pj4yXXwwKSsoa1tlPj4yXTw8NCk+PjJdO2tbbj4+Ml09KGtbZT4+Ml18MCk9PTE/MTk5MDU6MTk5MjQ7aWYoa3goa1tvPj4yXXwwLDksa1tuPj4yXXwwLDAsa1ttPj4yXXwwKXwwKXtzPWtbcz4+Ml18MDt0PWtbcD4+Ml18MDtydihzLHQpO3I9dTtyZXR1cm59aWYoa1tlPj4yXXwwKWtbZD4+Ml09MTI7aWYoa3goa1tvPj4yXXwwLGtbZD4+Ml18MCxrW2tbZj4+Ml0+PjJdfDAsa1trW2c+PjJdPj4yXXwwLGtbbT4+Ml18MCl8MCl7cz1rW3M+PjJdfDA7dD1rW3A+PjJdfDA7cnYocyx0KTtyPXU7cmV0dXJufXQ9bngoa1tvPj4yXXwwKXwwO2tbaD4+Ml09dDtpZighKGtbaD4+Ml18MCkpe3M9a1tzPj4yXXwwO3Q9a1twPj4yXXwwO3J2KHMsdCk7cj11O3JldHVybn1CeChrW28+PjJdfDAsMSxrW2U+PjJdfDApO3Q9a1tvPj4yXXwwO249KGtbZT4+Ml18MCk9PTE/MTk5MDU6MTk5MjQ7cT1rW2tbZj4+Ml0+PjJdfDA7a1tsPj4yXT1rWyhrWyhrW3M+PjJdfDApKzE2Pj4yXXwwKSsoa1tlPj4yXTw8NCk+PjJdO2tbbCs0Pj4yXT1uO2tbbCs4Pj4yXT1xO214KHQsMzQwMzYsbCk7X0Moa1tvPj4yXXwwLGtbZT4+Ml18MCwzMDg1NCxrW2tbZj4+Ml0+PjJdfDApO294KGtbbz4+Ml18MCxrW2U+PjJdfDApOyRDKGtbbz4+Ml18MCxrWyhrW2Y+PjJdfDApKzQ0Pj4yXXwwLGtbZT4+Ml18MCk7d3goa1toPj4yXXwwLDEzOSxrW2U+PjJdfDAsMCwwLGtba1tmPj4yXT4+Ml18MCwwKXwwO3M9a1tzPj4yXXwwO3Q9a1twPj4yXXwwO3J2KHMsdCk7cj11O3JldHVybn1mdW5jdGlvbiBHdyhhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wO2c9cjtyPXIrMTZ8MDtjPWcrMTJ8MDtkPWcrOHwwO2Y9Zys0fDA7ZT1nO2tbYz4+Ml09YTtrW2Q+PjJdPWI7YT1ueChrW2M+PjJdfDApfDA7a1tmPj4yXT1hO2lmKGtbZD4+Ml18MCljPVl6KGtbYz4+Ml18MCxrW2Q+PjJdfDAsa1tkPj4yXXwwLGQpfDA7ZWxzZSBjPTA7a1tlPj4yXT1jO2lmKCEoa1tmPj4yXXwwKSl7cj1nO3JldHVybn1pZighKChrW2U+PjJdfDApPj0yfChrW2U+PjJdfDApPT0wKSl7cj1nO3JldHVybn1hQShrW2Y+PjJdfDAsMTAsa1tlPj4yXXwwKXwwO1ZoKGtbZj4+Ml18MCxrW2U+PjJdfDApO3I9ZztyZXR1cm59ZnVuY3Rpb24gSHcoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsbj0wLG89MCxwPTAscT0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wLEU9MCxGPTAsRz0wLEg9MCxJPTAsSj0wLEs9MCxNPTAsTj0wLE89MCxQPTAsUT0wLFI9MCxTPTAsVD0wLFU9MCxWPTAsVz0wLFg9MCxZPTAsWj0wLF89MCwkPTAsYWE9MCxiYT0wLGNhPTAsZGE9MCxlYT0wLGZhPTAsZ2E9MCxoYT0wLGlhPTAsamE9MCxrYT0wLGxhPTAsbWE9MCxuYT0wLG9hPTAscGE9MCxxYT0wLHJhPTAsc2E9MCx0YT0wLHVhPTAsdmE9MCx3YT0wLHhhPTAseWE9MCx6YT0wLEFhPTAsQmE9MCxDYT0wLERhPTAsRWE9MCxGYT0wLEdhPTAsSGE9MCxJYT0wLEphPTAsS2E9MCxMYT0wLE1hPTAsTmE9MCxPYT0wLFBhPTAsUWE9MCxSYT0wLFNhPTAsVGE9MCxVYT0wLFZhPTAsV2E9MCxYYT0wLFlhPTAsWmE9MCxfYT0wLCRhPTAsYWI9MCxiYj0wLGNiPTAsZGI9MCxlYj0wLGZiPTAsZ2I9MCxoYj0wLGliPTAsamI9MCxrYj0wLGxiPTAsbWI9MCxuYj0wLG9iPTAscGI9MCxxYj0wLHJiPTAsc2I9MCx0Yj0wLHViPTAsdmI9MCx3Yj0wLHhiPTAseWI9MCx6Yj0wLEFiPTAsQmI9MCxDYj0wLERiPTAsRWI9MCxGYj0wLEdiPTAsSGI9MCxJYj0wLEpiPTAsS2I9MCxMYj0wLE1iPTAsTmI9MCxPYj0wLFBiPTAsUWI9MCxSYj0wLFNiPTAsVGI9MCxVYj0wLFZiPTAsV2I9MCxYYj0wLFliPTAsWmI9MCxfYj0wLCRiPTAsYWM9MCxiYz0wLGNjPTAsZGM9MCxlYz0wLGZjPTA7ZmM9cjtyPXIrODE2fDA7SWE9ZmMrMjY0fDA7UWI9ZmMrMjU2fDA7UGI9ZmMrMjQ4fDA7WWE9ZmMrMjQwfDA7emE9ZmMrMjA4fDA7eWE9ZmMrMjAwfDA7eGE9ZmMrMTg0fDA7d2E9ZmMrMTYwfDA7T2I9ZmMrMTQ0fDA7TmI9ZmMrMTI4fDA7dmE9ZmMrMTEyfDA7dWE9ZmMrOTZ8MDtaYj1mYys3MnwwO3RhPWZjKzY0fDA7c2E9ZmMrNTZ8MDtyYT1mYys0OHwwO3E9ZmMrNDB8MDtvPWZjKzMyfDA7YWM9ZmMrODA4fDA7Zj1mYys4MDR8MDtzPWZjKzgwMHwwO2g9ZmMrNzk2fDA7bj1mYys3OTJ8MDtkYz1mYys3ODh8MDtlYz1mYys3ODR8MDtfYT1mYys3ODB8MDtnPWZjKzc3NnwwO3A9ZmMrNzYwfDA7JGI9ZmMrNzU2fDA7Vz1mYys3NTJ8MDtxYT1mYys3NDh8MDtYPWZjKzc0NHwwO2thPWZjKzc0MHwwO2NjPWZjKzczNnwwO0VhPWZjKzczMnwwO2JjPWZjKzcyOHwwO0ViPWZjKzcyNHwwO3Y9ZmMrNzIwfDA7bWE9ZmMrNzE2fDA7Xz1mYys3MTJ8MDtGYT1mYys3MDh8MDskPWZjKzcwNHwwO0I9ZmMrNzAwfDA7Uz1mYys2OTZ8MDtPYT1mYys2OTJ8MDtCYT1mYys2ODh8MDtEPWZjKzY4NHwwO2ZhPWZjKzY4MHwwO1Q9ZmMrNjc2fDA7RT1mYys2NzJ8MDtVPWZjKzY2OHwwO0FhPWZjKzY2NHwwO1k9ZmMrNjYwfDA7Z2E9ZmMrNjU2fDA7UT1mYysyNHwwO2FhPWZjKzY1MnwwO0M9ZmMrNjQ4fDA7eT1mYys2NDR8MDtNPWZjKzY0MHwwO1I9ZmMrNjM2fDA7ej1mYys2MzJ8MDtuYT1mYys2Mjh8MDtvYT1mYys2MjR8MDtwYT1mYysxNnwwO2xhPWZjKzYyMHwwO1A9ZmMrNjE2fDA7RGE9ZmMrNjEyfDA7WWI9ZmMrNjA4fDA7VGI9ZmMrNjA0fDA7VWI9ZmMrNjAwfDA7VmI9ZmMrNTk2fDA7V2I9ZmMrNTkyfDA7WGI9ZmMrNTg4fDA7ZGE9ZmMrNTg0fDA7Rz1mYys1ODB8MDtoYT1mYys1NzZ8MDt6Yj1mYys1NzJ8MDtHYj1mYys1Njh8MDtmYj1mYys1NjR8MDt2Yj1mYys1NjB8MDtlYj1mYys4MTJ8MDtlYT1mYys1NTZ8MDtpYT1mYys1NTJ8MDtIPWZjKzU0OHwwO0E9ZmMrNTM2fDA7ST1mYys1MzJ8MDtKPWZjKzUyOHwwO1o9ZmMrNTI0fDA7YmE9ZmMrNTIwfDA7Y2E9ZmMrNTE2fDA7amE9ZmMrNTEyfDA7Sz1mYys1MDh8MDtWPWZjKzUwNHwwO1JhPWZjKzUwMHwwO1VhPWZjKzQ5NnwwO1RhPWZjKzQ5MnwwO1NhPWZjKzQ4OHwwO01hPWZjKzQ4NHwwO1BhPWZjKzQ4MHwwO1FhPWZjKzQ3NnwwO1phPWZjKzQ3MnwwO1dhPWZjKzQ2OHwwO1ZhPWZjKzQ2NHwwO1hhPWZjKzQ2MHwwO0thPWZjKzQ1NnwwO0phPWZjKzQ1MnwwO0xhPWZjKzQ0OHwwO05hPWZjKzQ0NHwwO2diPWZjKzQ0MHwwO2xiPWZjKzQzNnwwO2JiPWZjKzQzMnwwO3diPWZjKzQyOHwwO2tiPWZjKzQyNHwwO1JiPWZjKzQyMHwwO0tiPWZjKzQxNnwwO2FiPWZjKzQxMnwwO2RiPWZjKzQwOHwwO3hiPWZjKzQwNHwwO3liPWZjKzQwMHwwO0hiPWZjKzM5NnwwO0FiPWZjKzM5MnwwO0liPWZjKzM4OHwwO0JiPWZjKzM4NHwwO0piPWZjKzM4MHwwO0NiPWZjKzM3NnwwO0RiPWZjKzM3MnwwO0ZiPWZjKzM2OHwwO3ViPWZjKzM2NHwwO2liPWZjKzM2MHwwO2piPWZjKzM1NnwwO0xiPWZjKzM1MnwwO1NiPWZjKzM0OHwwO21iPWZjKzM0NHwwO29iPWZjKzM0MHwwO25iPWZjKzMzNnwwO3BiPWZjKzMzMnwwO3FiPWZjKzMyOHwwO3JiPWZjKzMyNHwwO2NiPWZjKzMyMHwwO01iPWZjKzMxNnwwO3NiPWZjKzMxMnwwO3RiPWZjKzMwOHwwO2hiPWZjKzMwNHwwOyRhPWZjKzMwMHwwO0hhPWZjKzI5NnwwO089ZmMrMjkyfDA7dz1mYysyODh8MDt4PWZjKzI4NHwwO0NhPWZjKzI4MHwwO0dhPWZjKzI3NnwwO049ZmMrMjcyfDA7Rj1mYysyNjh8MDt0PWZjKzh8MDt1PWZjO2tbYWM+PjJdPWE7a1tmPj4yXT1iO2tbcz4+Ml09YztrW2g+PjJdPWQ7a1tuPj4yXT1lO2tbZGM+PjJdPTA7a1tlYz4+Ml09MDtrW19hPj4yXT0wO2tbWD4+Ml09MDtrW2NjPj4yXT1rW2tbYWM+PjJdPj4yXTtkPW54KGtbYWM+PjJdfDApfDA7a1tiYz4+Ml09ZDtpZighKGtbYmM+PjJdfDApKXtyPWZjO3JldHVybn1zQyhrW2JjPj4yXXwwKTtrWyhrW2FjPj4yXXwwKSs0ND4+Ml09MjtkPVl6KGtbYWM+PjJdfDAsa1tmPj4yXXwwLGtbcz4+Ml18MCxnKXwwO2tbJGI+PjJdPWQ7aWYoKGtbJGI+PjJdfDApPDApe3I9ZmM7cmV0dXJufWtbRWE+PjJdPShrWyhrW2NjPj4yXXwwKSsxNj4+Ml18MCkrKGtbJGI+PjJdPDw0KTtpZigoa1skYj4+Ml18MCk9PTE/KER4KGtbYWM+PjJdfDApfDApIT0wOjApe3I9ZmM7cmV0dXJufWQ9Yngoa1tjYz4+Ml18MCxrW2c+PjJdfDApfDA7a1tkYz4+Ml09ZDtpZighKGtbZGM+PjJdfDApKXtyPWZjO3JldHVybn1lPWtbY2M+PjJdfDA7Zj1rW2g+PjJdfDA7aWYoa1tuPj4yXXwwKXtrW28+PjJdPWY7bz1RaChlLDMyMTAzLG8pfDA7a1tlYz4+Ml09b31lbHNle289YngoZSxmKXwwO2tbZWM+PjJdPW99aWYoKGtbKGtbcz4+Ml18MCkrND4+Ml18MCk+Pj4wPjApZj1rW2tbRWE+PjJdPj4yXXwwO2Vsc2UgZj0wO2tbX2E+PjJdPWY7YTpkbyBpZighKGt4KGtbYWM+PjJdfDAsMTksa1tkYz4+Ml18MCxrW2VjPj4yXXwwLGtbX2E+PjJdfDApfDApKXtrW3A+PjJdPTA7a1twKzQ+PjJdPWtbZGM+PjJdO2tbcCs4Pj4yXT1rW2VjPj4yXTtrW3ArMTI+PjJdPTA7a1soa1tjYz4+Ml18MCkrMzgwKzg+PjJdPTA7bz1RZihrW2NjPj4yXXwwLGtbX2E+PjJdfDAsMTQscCl8MDtrW2thPj4yXT1vO2lmKCEoa1trYT4+Ml18MCkpe3RDKGtbYmM+PjJdfDAsMzIxMDcsa1twPj4yXXwwKTtVZChrW3A+PjJdfDApO2JyZWFrfWlmKChrW2thPj4yXXwwKSE9MTIpe2lmKGtbcD4+Ml18MCl7YmM9a1thYz4+Ml18MDtrW3E+PjJdPWtbcD4+Ml07T2goYmMsMTgzOTEscSk7VWQoa1twPj4yXXwwKX1iYz0oa1thYz4+Ml18MCkrMzZ8MDtrW2JjPj4yXT0oa1tiYz4+Ml18MCkrMTtrWyhrW2FjPj4yXXwwKSsxMj4+Ml09a1trYT4+Ml07YnJlYWt9a1tXPj4yXT0wO2tbcWE+PjJdPTU3O3doaWxlKDEpe2lmKChrW1c+PjJdfDApPihrW3FhPj4yXXwwKSlicmVhaztrW1g+PjJdPSgoa1tXPj4yXXwwKSsoa1txYT4+Ml18MCl8MCkvMnwwO3E9YmUoa1tkYz4+Ml18MCxrWzQ0NzYrKChrW1g+PjJdfDApKjEyfDApPj4yXXwwKXwwO2tba2E+PjJdPXE7aWYoIShrW2thPj4yXXwwKSlicmVhaztmPWtbWD4+Ml18MDtpZigoa1trYT4+Ml18MCk8MCl7a1txYT4+Ml09Zi0xO2NvbnRpbnVlfWVsc2V7a1tXPj4yXT1mKzE7Y29udGludWV9fWlmKChrW1c+PjJdfDApPD0oa1txYT4+Ml18MCkpe2tbRWI+PjJdPTQ0NzYrKChrW1g+PjJdfDApKjEyfDApO2lmKChsWyhrW0ViPj4yXXwwKSs1Pj4wXSYxfDApIT0wPyhVeihrW2FjPj4yXXwwKXwwKSE9MDowKWJyZWFrO2RvIHN3aXRjaChsWyhrW0ViPj4yXXwwKSs0Pj4wXXwwKXtjYXNlIDExOntWaChrW2JjPj4yXXwwLGtbJGI+PjJdfDApO2lmKGtbZWM+PjJdfDApe19iPU5qKFppKGtbZWM+PjJdfDApfDApfDA7a1ttYT4+Ml09X2I7Qngoa1thYz4+Ml18MCwwLGtbJGI+PjJdfDApO3R4KGtbYmM+PjJdfDAsMTAyLGtbJGI+PjJdfDAsMyxrW21hPj4yXXwwKXwwO2tbKGtbKGtbRWE+PjJdfDApKzEyPj4yXXwwKSs4MD4+Ml09a1ttYT4+Ml07T2ooa1soa1tFYT4+Ml18MCkrND4+Ml18MCxrWyhrWyhrW0VhPj4yXXwwKSsxMj4+Ml18MCkrODA+PjJdfDApfDA7YnJlYWsgYX1lbHNle3VDKGtbYmM+PjJdfDAsMzIxMTQpO2FjPShrW2FjPj4yXXwwKSs0NHwwO2tbYWM+PjJdPShrW2FjPj4yXXwwKSsyO2JjPVVoKGtbYmM+PjJdfDAsOSwzMjEyNSwwKXwwO2tbdj4+Ml09YmM7a1soa1t2Pj4yXXwwKSs0Pj4yXT1rWyRiPj4yXTtrWyhrW3Y+PjJdfDApKzIwKzQ+PjJdPWtbJGI+PjJdO2tbKGtbdj4+Ml18MCkrMTIwKzQ+PjJdPS0yZTM7YnJlYWsgYX19Y2FzZSAyNTp7a1tfPj4yXT1rWyhrW0VhPj4yXXwwKSs0Pj4yXTtpZihrW2VjPj4yXXwwKXtiYz1aaShrW2VjPj4yXXwwKXwwO2tbKGtbY2M+PjJdfDApKzgwPj4yXT1iYztpZig3IT0oTWkoa1tfPj4yXXwwLGtbKGtbY2M+PjJdfDApKzgwPj4yXXwwLC0xLDApfDApKWJyZWFrIGE7d2goa1tjYz4+Ml18MCk7YnJlYWsgYX1pZihrW18+PjJdfDApZj1DZyhrW18+PjJdfDApfDA7ZWxzZSBmPTA7a1tGYT4+Ml09ZjthYz1rW0ZhPj4yXXwwO3ZDKGtbYmM+PjJdfDAsMzIxNjEsYWMsKChhY3wwKTwwKTw8MzE+PjMxKTticmVhayBhfWNhc2UgMjY6e2tbJD4+Ml09a1soa1tFYT4+Ml18MCkrND4+Ml07a1tCPj4yXT0tMTtpZihrW2VjPj4yXXwwKXthYz0oUWkoa1tlYz4+Ml18MCwwKXwwKSYyNTU7a1tCPj4yXT1hY31iOmRvIGlmKChrW0I+PjJdfDApPj0wPyhrWyhrW3M+PjJdfDApKzQ+PjJdfDApPT0wOjApe2tbUz4+Ml09MDt3aGlsZSgxKXtpZigoa1tTPj4yXXwwKT49KGtbKGtbY2M+PjJdfDApKzIwPj4yXXwwKSlicmVhayBiO2RDKGtbKGtbKGtbY2M+PjJdfDApKzE2Pj4yXXwwKSsoa1tTPj4yXTw8NCkrND4+Ml18MCxrW0I+PjJdfDApfDA7a1tTPj4yXT0oa1tTPj4yXXwwKSsxfX13aGlsZSgwKTthYz1kQyhrWyQ+PjJdfDAsa1tCPj4yXXwwKXwwO2tbQj4+Ml09YWM7YWM9a1tCPj4yXXwwO3ZDKGtbYmM+PjJdfDAsMzIxNzEsYWMsKChhY3wwKTwwKTw8MzE+PjMxKTticmVhayBhfWNhc2UgMjM6e0N4KGtbYWM+PjJdfDAsa1skYj4+Ml18MCk7Zj0oa1thYz4+Ml18MCkrNDR8MDtnPShrW2Y+PjJdfDApKzF8MDtrW2Y+PjJdPWc7a1tPYT4+Ml09ZztnPWtbYmM+PjJdfDA7Zj1rWyRiPj4yXXwwO2U9a1tPYT4+Ml18MDtpZigobFsxNzYxMysobFtrW2RjPj4yXT4+MF18MCk+PjBdfDApPT0xMTIpc3goZywxNTgsZixlKXwwO2Vsc2UgdHgoZywxNTksZixlLE5qKFppKGtbZWM+PjJdfDApfDApfDApfDA7c3goa1tiYz4+Ml18MCw4NyxrW09hPj4yXXwwLDEpfDA7d0Moa1tiYz4+Ml18MCwxKTt4QyhrW2JjPj4yXXwwLDAsMCxrW2RjPj4yXXwwLC0xKXwwO2JyZWFrIGF9Y2FzZSAyMjp7a1tCYT4+Ml09MzIxODU7YWM9eUMoa1tlYz4+Ml18MCl8MDtrW0Q+PjJdPWFjO2lmKChrW0Q+PjJdfDApPT0tMT8oa1soa1tzPj4yXXwwKSs0Pj4yXXwwKT09MDowKWtbRD4+Ml09bFsoa1tjYz4+Ml18MCkrNzE+PjBdO2Vsc2V7aWYoIShrWyhrW3M+PjJdfDApKzQ+PjJdfDApKXtrW1Q+PjJdPTI7d2hpbGUoMSl7aWYoKGtbVD4+Ml18MCk+PShrWyhrW2NjPj4yXXwwKSsyMD4+Ml18MCkpYnJlYWs7YWM9WmYoa1soa1soa1tjYz4+Ml18MCkrMTY+PjJdfDApKyhrW1Q+PjJdPDw0KSs0Pj4yXXwwKXwwO2tbZmE+PjJdPWFjO2NDKGtbZmE+PjJdfDAsa1tEPj4yXXwwKXwwO2tbVD4+Ml09KGtbVD4+Ml18MCkrMX1pWyhrW2NjPj4yXXwwKSs3MT4+MF09a1tEPj4yXX1hYz1aZihrWyhrW0VhPj4yXXwwKSs0Pj4yXXwwKXwwO2tbZmE+PjJdPWFjO2FjPWNDKGtbZmE+PjJdfDAsa1tEPj4yXXwwKXwwO2tbRD4+Ml09YWN9aWYoKGtbRD4+Ml18MCk9PTEpa1tCYT4+Ml09MzIxOTI7dEMoa1tiYz4+Ml18MCwzMjIwMixrW0JhPj4yXXwwKTticmVhayBhfWNhc2UgMTk6e3VDKGtbYmM+PjJdfDAsMzIyMTUpO2lmKGtbZWM+PjJdfDApe2FjPVRmKGtbZWM+PjJdfDApfDA7a1tZPj4yXT1hYztrW0U+PjJdPTA7d2hpbGUoMSl7YWM9ekMoa1tFPj4yXXwwKXwwO2tbQWE+PjJdPWFjO2lmKCFhYylicmVhaztpZighKEpkKGtbZWM+PjJdfDAsa1tBYT4+Ml18MCxrW1k+PjJdfDApfDApKWJyZWFrO2tbRT4+Ml09KGtbRT4+Ml18MCkrMX1pZighKGtbQWE+PjJdfDApKWtbRT4+Ml09LTF9ZWxzZSBrW0U+PjJdPS0xO2lmKChrW0U+PjJdfDApPT0tMT8oa1soa1tzPj4yXXwwKSs0Pj4yXXwwKT09MDowKXtrWyRiPj4yXT0wO2tbKGtbcz4+Ml18MCkrND4+Ml09MX1rW1U+PjJdPShrWyhrW2NjPj4yXXwwKSsyMD4+Ml18MCktMTt3aGlsZSgxKXtpZigoa1tVPj4yXXwwKTwwKWJyZWFrO2RvIGlmKGtbKGtbKGtbY2M+PjJdfDApKzE2Pj4yXXwwKSsoa1tVPj4yXTw8NCkrND4+Ml18MCl7aWYoKGtbVT4+Ml18MCkhPShrWyRiPj4yXXwwKT8oa1soa1tzPj4yXXwwKSs0Pj4yXXwwKSE9MDowKWJyZWFrO1ZoKGtbYmM+PjJdfDAsa1tVPj4yXXwwKTt0eChrW2JjPj4yXXwwLDksa1tVPj4yXXwwLDEsa1tFPj4yXXwwKXwwfXdoaWxlKDApO2tbVT4+Ml09KGtbVT4+Ml18MCkrLTF9c3goa1tiYz4+Ml18MCw4NywxLDEpfDA7YnJlYWsgYX1jYXNlIDIwOnthYz1aZihrWyhrW0VhPj4yXXwwKSs0Pj4yXXwwKXwwO2tbZ2E+PjJdPWFjO2FjPVE7a1thYz4+Ml09LTI7a1thYys0Pj4yXT0tMTtpZigoa1tlYz4+Ml18MCkhPTA/KFJpKGtbZWM+PjJdfDAsUSl8MCxhYz1RLCRiPWtbYWMrND4+Ml18MCwoJGJ8MCk8LTF8KCRifDApPT0tMSYoa1thYz4+Ml18MCk+Pj4wPDQyOTQ5NjcyOTUpOjApe2FjPVE7a1thYz4+Ml09LTE7a1thYys0Pj4yXT0tMX0kYj1ROyRiPUFDKGtbZ2E+PjJdfDAsa1skYj4+Ml18MCxrWyRiKzQ+PjJdfDApfDA7YWM9UTtrW2FjPj4yXT0kYjtrW2FjKzQ+PjJdPUw7YWM9UTt2QyhrW2JjPj4yXXwwLDMyMjI4LGtbYWM+PjJdfDAsa1thYys0Pj4yXXwwKTticmVhayBhfWNhc2UgMTp7a1thYT4+Ml09a1soa1tFYT4+Ml18MCkrND4+Ml07aWYoIShrW2VjPj4yXXwwKSl7YWM9a1tiYz4+Ml18MDtiYz1CQyhrW2FhPj4yXXwwKXwwO3ZDKGFjLDMyMjQ3LGJjLCgoYmN8MCk8MCk8PDMxPj4zMSk7YnJlYWsgYX1hYz1DQyhrW2VjPj4yXXwwKXwwO2tbQz4+Ml09YWM7aVsoa1tjYz4+Ml18MCkrNzI+PjBdPWtbQz4+Ml07YWM9REMoa1thYT4+Ml18MCxrW0M+PjJdfDApfDA7a1trYT4+Ml09YWM7aWYoa1trYT4+Ml18MClicmVhayBhO2lmKCEoKGtbQz4+Ml18MCk9PTF8KGtbQz4+Ml18MCk9PTIpKWJyZWFrIGE7YWM9R3goa1tiYz4+Ml18MCl8MDtrW00+PjJdPWFjO2FjPVVoKGtbYmM+PjJdfDAsNSwzMjI1OSwwKXwwO2tbeT4+Ml09YWM7a1soa1t5Pj4yXXwwKSs0Pj4yXT1rWyRiPj4yXTtrWyhrW3k+PjJdfDApKzIwKzQ+PjJdPWtbJGI+PjJdO2tbKGtbeT4+Ml18MCkrNDArOD4+Ml09KGtbTT4+Ml18MCkrNDtrWyhrW3k+PjJdfDApKzgwKzQ+PjJdPWtbJGI+PjJdO2tbKGtbeT4+Ml18MCkrODArMTI+PjJdPShrW0M+PjJdfDApLTE7Vmgoa1tiYz4+Ml18MCxrWyRiPj4yXXwwKTticmVhayBhfWNhc2UgMTU6e2lmKCEoKGtbZWM+PjJdfDApIT0wPyhfYj0oX2koa1tlYz4+Ml18MCxSKXwwKT09MCwhKF9ifChrW1I+PjJdfDApPD0wKSk6MCkpa1tSPj4yXT0yMTQ3NDgzNjQ3O0J4KGtbYWM+PjJdfDAsMCxrWyRiPj4yXXwwKTtzeChrW2JjPj4yXXwwLDc2LGtbUj4+Ml18MCwxKXwwO2FjPWFBKGtbYmM+PjJdfDAsNjksa1skYj4+Ml18MCl8MDtrW3o+PjJdPWFjO2FBKGtbYmM+PjJdfDAsODcsMSl8MDtzeChrW2JjPj4yXXwwLDkxLDEsLTEpfDA7c3goa1tiYz4+Ml18MCw2NiwxLGtbej4+Ml18MCl8MDtoQShrW2JjPj4yXXwwLGtbej4+Ml18MCk7YnJlYWsgYX1jYXNlIDQ6aWYoa1tlYz4+Ml18MCl7YmM9Wmkoa1tlYz4+Ml18MCl8MDtrW25hPj4yXT1iYztrWyhrWyhrW0VhPj4yXXwwKSsxMj4+Ml18MCkrODA+PjJdPWtbbmE+PjJdO09qKGtbKGtbRWE+PjJdfDApKzQ+PjJdfDAsa1soa1soa1tFYT4+Ml18MCkrMTI+PjJdfDApKzgwPj4yXXwwKXwwO2JyZWFrIGF9ZWxzZXthYz1rWyhrWyhrW0VhPj4yXXwwKSsxMj4+Ml18MCkrODA+PjJdfDA7dkMoa1tiYz4+Ml18MCwzMjExNCxhYywoKGFjfDApPDApPDwzMT4+MzEpO2JyZWFrIGF9Y2FzZSA1OntpZighKGtbZWM+PjJdfDApKXtlPWtbYmM+PjJdfDA7aWYoIShrWyhrW2NjPj4yXXwwKSsyND4+Ml0mMzIpKWY9MDtlbHNlIGY9RUMoa1soa1tFYT4+Ml18MCkrND4+Ml18MCwwKXwwO3ZDKGUsMzIyNzksZiwoKGZ8MCk8MCk8PDMxPj4zMSk7YnJlYWsgYX1rW29hPj4yXT0xO2lmKF9pKGtbZWM+PjJdfDAsb2EpfDApRUMoa1soa1tFYT4+Ml18MCkrND4+Ml18MCxrW29hPj4yXXwwKXwwO2JjPShRaShrW2VjPj4yXXwwLChrW29hPj4yXXwwKSE9MCYyNTUpfDApPDwyND4+MjQhPTA7Zj0oa1tjYz4+Ml18MCkrMjR8MDtlPWtbZj4+Ml18MDtpZihiYylrW2Y+PjJdPWV8MzI7ZWxzZSBrW2Y+PjJdPWUmLTMzO0ZDKGtbY2M+PjJdfDApO2JyZWFrIGF9Y2FzZSAyNDp7JGI9cGE7a1skYj4+Ml09MDtrWyRiKzQ+PjJdPTA7a1trYT4+Ml09MDtpZighKGtba2E+PjJdfDApKXthYz1wYTt2QyhrW2JjPj4yXXwwLDMyMjkxLGtbYWM+PjJdfDAsa1thYys0Pj4yXXwwKTticmVhayBhfWlmKChrW2thPj4yXXwwKT09MTIpYnJlYWsgYTtiYz0oa1thYz4+Ml18MCkrMzZ8MDtrW2JjPj4yXT0oa1tiYz4+Ml18MCkrMTtrWyhrW2FjPj4yXXwwKSsxMj4+Ml09a1trYT4+Ml07YnJlYWsgYX1jYXNlIDMyOmlmKGtbZWM+PjJdfDApe0dDKGtbYWM+PjJdfDAsa1tlYz4+Ml18MCl8MDticmVhayBhfWVsc2V7dkMoa1tiYz4+Ml18MCwzMjMwMSxsWyhrW2NjPj4yXXwwKSs2OD4+MF18MCwwKTticmVhayBhfWNhc2UgMzM6e2lmKCEoa1tlYz4+Ml18MCkpe3RDKGtbYmM+PjJdfDAsMzIzMTIsa1syNDNdfDApO2JyZWFrIGF9aWYoKGlba1tlYz4+Ml0+PjBdfDApIT0wPyhiYz1ncyhrW2tbY2M+PjJdPj4yXXwwLGtbZWM+PjJdfDAsMSxsYSl8MCxrW2thPj4yXT1iYywoa1trYT4+Ml18MCkhPTB8KGtbbGE+PjJdfDApPT0wKTowKXtPaChrW2FjPj4yXXwwLDMyMzMzLHJhKTticmVhayBhfWlmKChsWyhrW2NjPj4yXXwwKSs2OD4+MF18MCk8PTEpSEMoa1thYz4+Ml18MCl8MDtVZChrWzI0M118MCk7aWYoaVtrW2VjPj4yXT4+MF18MCl7a1tzYT4+Ml09a1tlYz4+Ml07YmM9WWQoMTgzOTEsc2EpfDA7a1syNDNdPWJjO2JyZWFrIGF9ZWxzZXtrWzI0M109MDticmVhayBhfX1jYXNlIDMwOntpZighKGtbZWM+PjJdfDApKXthYz0obFsoa1tFYT4+Ml18MCkrOD4+MF18MCktMXwwO3ZDKGtbYmM+PjJdfDAsMzIzNTgsYWMsKChhY3wwKTwwKTw8MzE+PjMxKTticmVhayBhfWlmKGlbKGtbY2M+PjJdfDApKzY3Pj4wXXwwKXtiYz0oKFlpKGtbZWM+PjJdfDAsMCwxKXwwKSYyNTUpKzEmNztrW1A+PjJdPWJjO2tbUD4+Ml09KGtbUD4+Ml18MCk9PTA/MTpiYztpWyhrW0VhPj4yXXwwKSs4Pj4wXT1rW1A+PjJdO2lbKGtbRWE+PjJdfDApKzk+PjBdPTE7RkMoa1tjYz4+Ml18MCk7YnJlYWsgYX1lbHNle09oKGtbYWM+PjJdfDAsMzIzNzAsdGEpO2JyZWFrIGF9fWNhc2UgMjp7aWYoIShrW2VjPj4yXXwwKSl7YWM9KGtbKGtbY2M+PjJdfDApKzI0Pj4yXSZrWyhrW0ViPj4yXXwwKSs4Pj4yXXwwKSE9MCYxO3ZDKGtbYmM+PjJdfDAsa1trW0ViPj4yXT4+Ml18MCxhYywoKGFjfDApPDApPDwzMT4+MzEpO2JyZWFrIGF9a1tEYT4+Ml09a1soa1tFYj4+Ml18MCkrOD4+Ml07aWYoIShsWyhrW2NjPj4yXXwwKSs2Nz4+MF18MCkpa1tEYT4+Ml09a1tEYT4+Ml0mLTUyNDI4OTthYz0oUWkoa1tlYz4+Ml18MCwwKXwwKTw8MjQ+PjI0IT0wO2Y9a1tEYT4+Ml18MDtpZighYWMpe2FjPShrW2NjPj4yXXwwKSsyNHwwO2tbYWM+PjJdPWtbYWM+PjJdJn5mO2lmKChrW0RhPj4yXXwwKT09MzM1NTQ0MzIpe2FjPShrW2NjPj4yXXwwKSs0NDh8MDtrW2FjPj4yXT0wO2tbYWMrND4+Ml09MH19ZWxzZXthYz0oa1tjYz4+Ml18MCkrMjR8MDtrW2FjPj4yXT1rW2FjPj4yXXxmfXB4KGtbYmM+PjJdfDAsMTUwKXwwO0ZDKGtbY2M+PjJdfDApO2JyZWFrIGF9Y2FzZSAzMTp7aWYoIShrW2VjPj4yXXwwKSlicmVhayBhO19iPU5oKGtbYWM+PjJdfDAsMixrW2VjPj4yXXwwLGtbX2E+PjJdfDApfDA7a1tZYj4+Ml09X2I7aWYoIShrW1liPj4yXXwwKSlicmVhayBhO2tbVmI+PjJdPTA7X2I9VGooa1tZYj4+Ml18MCl8MDtrW1hiPj4yXT1fYjtrWyhrW2FjPj4yXXwwKSs0ND4+Ml09NjtDeChrW2FjPj4yXXwwLGtbJGI+PjJdfDApO0lDKGtbYmM+PjJdfDAsNiw1MTcyKTtieShrW2FjPj4yXXwwLGtbWWI+PjJdfDApfDA7a1tUYj4+Ml09MDtrW1diPj4yXT1rWyhrW1liPj4yXXwwKSs0Pj4yXTt3aGlsZSgxKXtpZigoa1tUYj4+Ml18MCk+PShqWyhrW1liPj4yXXwwKSszND4+MV18MCkpYnJlYWsgYTtpZihsWyhrW1diPj4yXXwwKSsxNT4+MF0mMilrW1ZiPj4yXT0oa1tWYj4+Ml18MCkrMTtlbHNle2M6ZG8gaWYoIShsWyhrW1diPj4yXXwwKSsxNT4+MF0mMSkpa1tVYj4+Ml09MDtlbHNle2FjPShrW1hiPj4yXXwwKT09MDtrW1ViPj4yXT0xO2lmKGFjKWJyZWFrO3doaWxlKDEpe2lmKChrW1ViPj4yXXwwKT4oalsoa1tZYj4+Ml18MCkrMzQ+PjFdfDApKWJyZWFrIGM7aWYoKGpbKGtbKGtbWGI+PjJdfDApKzQ+PjJdfDApKygoa1tVYj4+Ml18MCktMTw8MSk+PjFdfDApPT0oa1tUYj4+Ml18MCkpYnJlYWsgYztrW1ViPj4yXT0oa1tVYj4+Ml18MCkrMX19d2hpbGUoMCk7Zj1rW2JjPj4yXXwwO2U9KGtbVGI+PjJdfDApLShrW1ZiPj4yXXwwKXwwO2c9a1trW1diPj4yXT4+Ml18MDtiPUZpKGtbV2I+PjJdfDAsMTg0MDIpfDA7Yz0obFsoa1tXYj4+Ml18MCkrMTI+PjBdfDApIT0wPzE6MDtpZihrWyhrW1diPj4yXXwwKSs0Pj4yXXwwKWE9a1soa1soa1tXYj4+Ml18MCkrND4+Ml18MCkrOD4+Ml18MDtlbHNlIGE9MDthYz1rW1ViPj4yXXwwO2tbWmI+PjJdPWU7a1taYis0Pj4yXT1nO2tbWmIrOD4+Ml09YjtrW1piKzEyPj4yXT1jO2tbWmIrMTY+PjJdPWE7a1taYisyMD4+Ml09YWM7SkMoZiwxLDMyNDIzLFpiKTtzeChrW2JjPj4yXXwwLDg3LDEsNil8MH1rW1RiPj4yXT0oa1tUYj4+Ml18MCkrMTtrW1diPj4yXT0oa1tXYj4+Ml18MCkrMTZ9fWNhc2UgMjk6e19iPW54KGtbYWM+PjJdfDApfDA7a1tiYz4+Ml09X2I7a1soa1thYz4+Ml18MCkrNDQ+PjJdPTQ7Q3goa1thYz4+Ml18MCxrWyRiPj4yXXwwKTtJQyhrW2JjPj4yXXwwLDQsNTE5Nik7a1tHPj4yXT1rWyhrWyhrW0VhPj4yXXwwKSsxMj4+Ml18MCkrOCs4Pj4yXTt3aGlsZSgxKXtpZighKGtbRz4+Ml18MCkpYnJlYWsgYTtrW2hhPj4yXT1rWyhrW0c+PjJdfDApKzg+PjJdO2FjPWtbYmM+PjJdfDA7X2I9alsoa1toYT4+Ml18MCkrNDA+PjFdfDA7JGI9alsoa1toYT4+Ml18MCkrMzg+PjFdfDA7a1t1YT4+Ml09a1trW2hhPj4yXT4+Ml07a1t1YSs0Pj4yXT0wO2tbdWErOD4+Ml09X2I7a1t1YSsxMj4+Ml09JGI7SkMoYWMsMSwzMjQzMCx1YSk7c3goa1tiYz4+Ml18MCw4NywxLDQpfDA7a1tkYT4+Ml09a1soa1toYT4+Ml18MCkrOD4+Ml07d2hpbGUoMSl7aWYoIShrW2RhPj4yXXwwKSlicmVhazthYz1rW2JjPj4yXXwwO19iPWpbKGtbZGE+PjJdfDApKzQ4Pj4xXXwwOyRiPWpba1soa1tkYT4+Ml18MCkrOD4+Ml0+PjFdfDA7a1t2YT4+Ml09a1trW2RhPj4yXT4+Ml07a1t2YSs0Pj4yXT1fYjtrW3ZhKzg+PjJdPSRiO0pDKGFjLDIsMzI0MzUsdmEpO3N4KGtbYmM+PjJdfDAsODcsMSw0KXwwO2tbZGE+PjJdPWtbKGtbZGE+PjJdfDApKzIwPj4yXX1rW0c+PjJdPWtba1tHPj4yXT4+Ml19fWNhc2UgMTY6e2lmKCEoa1tlYz4+Ml18MCkpYnJlYWsgYTtfYj1VaihrW2NjPj4yXXwwLGtbZWM+PjJdfDAsa1tfYT4+Ml18MCl8MDtrW3piPj4yXT1fYjtpZighKGtbemI+PjJdfDApKWJyZWFrIGE7Zj1rW3piPj4yXXwwO2lmKGtbKGtbRWI+PjJdfDApKzg+PjJdfDApe2tbdmI+PjJdPW1bZis1Mj4+MV07a1soa1thYz4+Ml18MCkrNDQ+PjJdPTZ9ZWxzZXtrW3ZiPj4yXT1tW2YrNTA+PjFdO2tbKGtbYWM+PjJdfDApKzQ0Pj4yXT0zfWtbR2I+PjJdPWtbKGtbemI+PjJdfDApKzEyPj4yXTtDeChrW2FjPj4yXXwwLGtbJGI+PjJdfDApO0lDKGtbYmM+PjJdfDAsa1soa1thYz4+Ml18MCkrNDQ+PjJdfDAsNTIxMik7a1tmYj4+Ml09MDt3aGlsZSgxKXtpZigoa1tmYj4+Ml18MCk+PShrW3ZiPj4yXXwwKSlicmVhayBhO2pbZWI+PjFdPWpbKGtbKGtbemI+PjJdfDApKzQ+PjJdfDApKyhrW2ZiPj4yXTw8MSk+PjFdfDA7Zj1rW2JjPj4yXXwwO2U9altlYj4+MV18MDtpZigoaltlYj4+MV18MCk8MClnPTA7ZWxzZSBnPWtbKGtbKGtbR2I+PjJdfDApKzQ+PjJdfDApKyhqW2ViPj4xXTw8NCk+PjJdfDA7a1tOYj4+Ml09a1tmYj4+Ml07a1tOYis0Pj4yXT1lO2tbTmIrOD4+Ml09ZztKQyhmLDEsMzI0MzksTmIpO2lmKGtbKGtbRWI+PjJdfDApKzg+PjJdfDApeyRiPWtbYmM+PjJdfDA7WmI9a1soa1soa1t6Yj4+Ml18MCkrMzI+PjJdfDApKyhrW2ZiPj4yXTw8Mik+PjJdfDA7X2I9KGtbZmI+PjJdfDApPChtWyhrW3piPj4yXXwwKSs1MD4+MV18MCkmMTtrW09iPj4yXT1sWyhrWyhrW3piPj4yXXwwKSsyOD4+Ml18MCkrKGtbZmI+PjJdfDApPj4wXTtrW09iKzQ+PjJdPVpiO2tbT2IrOD4+Ml09X2I7SkMoJGIsNCwzMjQ0MyxPYil9c3goa1tiYz4+Ml18MCw4NywxLGtbKGtbYWM+PjJdfDApKzQ0Pj4yXXwwKXwwO2tbZmI+PjJdPShrW2ZiPj4yXXwwKSsxfX1jYXNlIDE3OntpZighKGtbZWM+PjJdfDApKWJyZWFrIGE7X2I9RGkoa1tjYz4+Ml18MCxrW2VjPj4yXXwwLGtbX2E+PjJdfDApfDA7a1tpYT4+Ml09X2I7aWYoIShrW2lhPj4yXXwwKSlicmVhayBhO19iPW54KGtbYWM+PjJdfDApfDA7a1tiYz4+Ml09X2I7a1soa1thYz4+Ml18MCkrNDQ+PjJdPTU7Q3goa1thYz4+Ml18MCxrWyRiPj4yXXwwKTtJQyhrW2JjPj4yXXwwLDUsNTIzNik7a1tlYT4+Ml09a1soa1tpYT4+Ml18MCkrOD4+Ml07a1tIPj4yXT0wO3doaWxlKDEpe2lmKCEoa1tlYT4+Ml18MCkpYnJlYWsgYTtrW0E+PjJdPWtbMTMxNF07a1tBKzQ+PjJdPWtbMTMxNV07a1tBKzg+PjJdPWtbMTMxNl07YWM9a1tiYz4+Ml18MDtZYj1rW2tbZWE+PjJdPj4yXXwwO1piPShsWyhrW2VhPj4yXXwwKSs1ND4+MF18MCkhPTAmMTtfYj1rW0ErKChpWyhrW2VhPj4yXXwwKSs1NT4+MF0mMyk8PDIpPj4yXXwwOyRiPShrWyhrW2VhPj4yXXwwKSszNj4+Ml18MCkhPTAmMTtrW3dhPj4yXT1rW0g+PjJdO2tbd2ErND4+Ml09WWI7a1t3YSs4Pj4yXT1aYjtrW3dhKzEyPj4yXT1fYjtrW3dhKzE2Pj4yXT0kYjtKQyhhYywxLDMyNDQ3LHdhKTtzeChrW2JjPj4yXXwwLDg3LDEsNSl8MDtrW2VhPj4yXT1rWyhrW2VhPj4yXXwwKSsyMD4+Ml07a1tIPj4yXT0oa1tIPj4yXXwwKSsxfX1jYXNlIDEwOntrWyhrW2FjPj4yXXwwKSs0ND4+Ml09MztJQyhrW2JjPj4yXXwwLDMsNTI2OCk7a1tJPj4yXT0wO3doaWxlKDEpe2lmKChrW0k+PjJdfDApPj0oa1soa1tjYz4+Ml18MCkrMjA+PjJdfDApKWJyZWFrIGE7aWYoa1soa1soa1tjYz4+Ml18MCkrMTY+PjJdfDApKyhrW0k+PjJdPDw0KSs0Pj4yXXwwKXthYz1rW2JjPj4yXXwwO1piPWtbST4+Ml18MDtfYj1rWyhrWyhrW2NjPj4yXXwwKSsxNj4+Ml18MCkrKGtbST4+Ml08PDQpPj4yXXwwOyRiPVNpKGtbKGtbKGtbY2M+PjJdfDApKzE2Pj4yXXwwKSsoa1tJPj4yXTw8NCkrND4+Ml18MCl8MDtrW3hhPj4yXT1aYjtrW3hhKzQ+PjJdPV9iO2tbeGErOD4+Ml09JGI7SkMoYWMsMSwzMjQ1Myx4YSk7c3goa1tiYz4+Ml18MCw4NywxLDMpfDB9a1tJPj4yXT0oa1tJPj4yXXwwKSsxfX1jYXNlIDc6e2tbSj4+Ml09MDtrWyhrW2FjPj4yXXwwKSs0ND4+Ml09MjtJQyhrW2JjPj4yXXwwLDIsNTI4MCk7a1taPj4yXT1rWyhrW2NjPj4yXXwwKSszNjQrOD4+Ml07d2hpbGUoMSl7aWYoIShrW1o+PjJdfDApKWJyZWFrIGE7a1tiYT4+Ml09a1soa1taPj4yXXwwKSs4Pj4yXTthYz1rW2JjPj4yXXwwO19iPWtbSj4+Ml18MDtrW0o+PjJdPV9iKzE7JGI9a1trW2JhPj4yXT4+Ml18MDtrW3lhPj4yXT1fYjtrW3lhKzQ+PjJdPSRiO0pDKGFjLDEsMzI0NTcseWEpO3N4KGtbYmM+PjJdfDAsODcsMSwyKXwwO2tbWj4+Ml09a1trW1o+PjJdPj4yXX19Y2FzZSAxNDp7aWYoIShrW2VjPj4yXXwwKSlicmVhayBhO19iPURpKGtbY2M+PjJdfDAsa1tlYz4+Ml18MCxrW19hPj4yXXwwKXwwO2tbamE+PjJdPV9iO2lmKCEoa1tqYT4+Ml18MCkpYnJlYWsgYTtfYj1ueChrW2FjPj4yXXwwKXwwO2tbYmM+PjJdPV9iO2tbY2E+PjJdPWtbKGtbamE+PjJdfDApKzE2Pj4yXTtpZighKGtbY2E+PjJdfDApKWJyZWFrIGE7a1tLPj4yXT0wO2tbKGtbYWM+PjJdfDApKzQ0Pj4yXT04O0N4KGtbYWM+PjJdfDAsa1skYj4+Ml18MCk7SUMoa1tiYz4+Ml18MCw4LDUyODgpO3doaWxlKDEpe2lmKCEoa1tjYT4+Ml18MCkpYnJlYWsgYTtrW1Y+PjJdPTA7d2hpbGUoMSl7aWYoKGtbVj4+Ml18MCk+PShrWyhrW2NhPj4yXXwwKSsyMD4+Ml18MCkpYnJlYWs7YWM9a1tiYz4+Ml18MDtWYj1rW0s+PjJdfDA7V2I9a1tWPj4yXXwwO1hiPWtbKGtbY2E+PjJdfDApKzg+PjJdfDA7WWI9a1soa1soa1tqYT4+Ml18MCkrND4+Ml18MCkrKGtbKGtbY2E+PjJdfDApKzM2KyhrW1Y+PjJdPDwzKT4+Ml08PDQpPj4yXXwwO1piPWtbKGtbY2E+PjJdfDApKzM2KyhrW1Y+PjJdPDwzKSs0Pj4yXXwwO19iPUtDKGlbKGtbY2E+PjJdfDApKzI1KzE+PjBdfDApfDA7JGI9S0MoaVsoa1tjYT4+Ml18MCkrMjU+PjBdfDApfDA7a1t6YT4+Ml09VmI7a1t6YSs0Pj4yXT1XYjtrW3phKzg+PjJdPVhiO2tbemErMTI+PjJdPVliO2tbemErMTY+PjJdPVpiO2tbemErMjA+PjJdPV9iO2tbemErMjQ+PjJdPSRiO2tbemErMjg+PjJdPTMyNDY5O0pDKGFjLDEsMzI0NjAsemEpO3N4KGtbYmM+PjJdfDAsODcsMSw4KXwwO2tbVj4+Ml09KGtbVj4+Ml18MCkrMX1rW0s+PjJdPShrW0s+PjJdfDApKzE7a1tjYT4+Ml09a1soa1tjYT4+Ml18MCkrND4+Ml19fWNhc2UgMTM6e2tbV2E+PjJdPShrWyhrW2FjPj4yXXwwKSs0ND4+Ml18MCkrMTtaYj0oa1thYz4+Ml18MCkrNDR8MDtrW1piPj4yXT0oa1taYj4+Ml18MCkrNDtaYj0oa1thYz4+Ml18MCkrNDR8MDtZYj0oa1taYj4+Ml18MCkrMXwwO2tbWmI+PjJdPVliO2tbVmE+PjJdPVliO1liPShrW2FjPj4yXXwwKSs0NHwwO1piPShrW1liPj4yXXwwKSsxfDA7a1tZYj4+Ml09WmI7a1tYYT4+Ml09WmI7WmI9bngoa1thYz4+Ml18MCl8MDtrW2JjPj4yXT1aYjtJQyhrW2JjPj4yXXwwLDQsNTMyMCk7Q3goa1thYz4+Ml18MCxrWyRiPj4yXXwwKTtrW1FhPj4yXT1rWyhrWyhrWyhrW2NjPj4yXXwwKSsxNj4+Ml18MCkrKGtbJGI+PjJdPDw0KSsxMj4+Ml18MCkrOCs4Pj4yXTt3aGlsZSgxKXtpZighKGtbUWE+PjJdfDApKWJyZWFrIGE7aWYoa1tlYz4+Ml18MCl7WmI9Tmgoa1thYz4+Ml18MCwwLGtbZWM+PjJdfDAsa1tfYT4+Ml18MCl8MDtrW1VhPj4yXT1aYjtrW1FhPj4yXT0wfWVsc2V7a1tVYT4+Ml09a1soa1tRYT4+Ml18MCkrOD4+Ml07a1tRYT4+Ml09a1trW1FhPj4yXT4+Ml19aWYoIShrW1VhPj4yXXwwKSljb250aW51ZTtpZighKGtbKGtbVWE+PjJdfDApKzE2Pj4yXXwwKSljb250aW51ZTtiQShrW2FjPj4yXXwwLGtbJGI+PjJdfDAsa1soa1tVYT4+Ml18MCkrMjg+PjJdfDAsMCxrW2tbVWE+PjJdPj4yXXwwKTtpZigoKGpbKGtbVWE+PjJdfDApKzM0Pj4xXXwwKSsoa1tYYT4+Ml18MCl8MCk+KGtbKGtbYWM+PjJdfDApKzQ0Pj4yXXwwKSlrWyhrW2FjPj4yXXwwKSs0ND4+Ml09KGpbKGtbVWE+PjJdfDApKzM0Pj4xXXwwKSsoa1tYYT4+Ml18MCk7Y0Eoa1thYz4+Ml18MCwwLGtbJGI+PjJdfDAsa1tVYT4+Ml18MCwxMDQpO3J4KGtbYmM+PjJdfDAsa1tXYT4+Ml18MCxrW2tbVWE+PjJdPj4yXXwwKXwwO2tbTWE+PjJdPTE7a1tSYT4+Ml09a1soa1tVYT4+Ml18MCkrMTY+PjJdO2Q6d2hpbGUoMSl7aWYoIShrW1JhPj4yXXwwKSlicmVhaztaYj1EaShrW2NjPj4yXXwwLGtbKGtbUmE+PjJdfDApKzg+PjJdfDAsa1tfYT4+Ml18MCl8MDtrW1RhPj4yXT1aYjtkbyBpZihrW1RhPj4yXXwwKXtrW1NhPj4yXT0wO2JBKGtbYWM+PjJdfDAsa1skYj4+Ml18MCxrWyhrW1RhPj4yXXwwKSsyOD4+Ml18MCwwLGtba1tUYT4+Ml0+PjJdfDApO1piPUxDKGtbYWM+PjJdfDAsa1tUYT4+Ml18MCxrW1JhPj4yXXwwLFNhLDApfDA7a1taYT4+Ml09WmI7aWYoa1taYT4+Ml18MCl7X2I9MjA3O2JyZWFrIGR9aWYoIShrW1NhPj4yXXwwKSl7Y0Eoa1thYz4+Ml18MCxrW01hPj4yXXwwLGtbJGI+PjJdfDAsa1tUYT4+Ml18MCwxMDQpO2JyZWFrfWVsc2V7dHgoa1tiYz4+Ml18MCwxMDQsa1tNYT4+Ml18MCxrWyhrW1NhPj4yXXwwKSs0ND4+Ml18MCxrWyRiPj4yXXwwKXwwO2RBKGtbYWM+PjJdfDAsa1tTYT4+Ml18MCk7YnJlYWt9fXdoaWxlKDApO2tbTWE+PjJdPShrW01hPj4yXXwwKSsxO2tbUmE+PjJdPWtbKGtbUmE+PjJdfDApKzQ+PjJdfWlmKChfYnwwKT09MjA3KXtfYj0wO2tbUWE+PjJdPTB9aWYoa1tSYT4+Ml18MClicmVhayBhO2lmKChrWyhrW2FjPj4yXXwwKSs0MD4+Ml18MCk8KGtbTWE+PjJdfDApKWtbKGtbYWM+PjJdfDApKzQwPj4yXT1rW01hPj4yXTtaYj1hQShrW2JjPj4yXXwwLDU3LDApfDA7a1tLYT4+Ml09WmI7a1tNYT4+Ml09MTtrW1JhPj4yXT1rWyhrW1VhPj4yXXwwKSsxNj4+Ml07d2hpbGUoMSl7aWYoIShrW1JhPj4yXXwwKSlicmVhaztaYj1EaShrW2NjPj4yXXwwLGtbKGtbUmE+PjJdfDApKzg+PjJdfDAsa1tfYT4+Ml18MCl8MDtrW1RhPj4yXT1aYjtrW1NhPj4yXT0wO2tbTGE+PjJdPTA7aWYoa1tUYT4+Ml18MCl7WmI9TEMoa1thYz4+Ml18MCxrW1RhPj4yXXwwLGtbUmE+PjJdfDAsU2EsTGEpfDA7a1taYT4+Ml09WmJ9WmI9ZUEoa1tiYz4+Ml18MCl8MDtrW0phPj4yXT1aYjtkbyBpZigoa1tUYT4+Ml18MCkhPTAmKGtbU2E+PjJdfDApPT0wKXtrW05hPj4yXT1rWyhrW1JhPj4yXXwwKSszNj4+Ml07Zj1rW2JjPj4yXXwwO2lmKChrW05hPj4yXXwwKSE9KGpbKGtbVWE+PjJdfDApKzMyPj4xXXwwKSl7dHgoZiw5NiwwLGtbTmE+PjJdfDAsa1tYYT4+Ml18MCl8MDtaQShrW2JjPj4yXXwwLGtbVWE+PjJdfDAsa1tOYT4+Ml18MCxrW1hhPj4yXXwwKTtzeChrW2JjPj4yXXwwLDM0LGtbWGE+PjJdfDAsa1tKYT4+Ml18MCl8MH1lbHNlIHN4KGYsMTIzLDAsa1tYYT4+Ml18MCl8MDt0eChrW2JjPj4yXXwwLDMyLGtbTWE+PjJdfDAsMCxrW1hhPj4yXXwwKXwwO2dBKGtbYmM+PjJdfDAsa1tKYT4+Ml18MCl8MDtaYj1rW2JjPj4yXXwwO2hBKFpiLChHeChrW2JjPj4yXXwwKXwwKS0yfDApfWVsc2V7a1tQYT4+Ml09MDt3aGlsZSgxKXtpZigoa1tQYT4+Ml18MCk+PShrWyhrW1JhPj4yXXwwKSsyMD4+Ml18MCkpYnJlYWs7Zj1rW1BhPj4yXXwwO2lmKGtbTGE+PjJdfDApZj1rWyhrW0xhPj4yXXwwKSsoZjw8Mik+PjJdfDA7ZWxzZSBmPWtbKGtbUmE+PjJdfDApKzM2KyhmPDwzKT4+Ml18MDtYQShrW2JjPj4yXXwwLGtbVWE+PjJdfDAsMCxmLChrW1hhPj4yXXwwKSsoa1tQYT4+Ml18MCl8MCk7c3goa1tiYz4+Ml18MCwzNCwoa1tYYT4+Ml18MCkrKGtbUGE+PjJdfDApfDAsa1tKYT4+Ml18MCl8MDtrW1BhPj4yXT0oa1tQYT4+Ml18MCkrMX1pZighKGtbVGE+PjJdfDApKWJyZWFrO1ZiPWtbYmM+PjJdfDA7V2I9a1tYYT4+Ml18MDtYYj1rWyhrW1JhPj4yXXwwKSsyMD4+Ml18MDtZYj1rW1ZhPj4yXXwwO1piPU1DKGtbY2M+PjJdfDAsa1tTYT4+Ml18MCl8MDt3eChWYiw5OSxXYixYYixZYixaYixrWyhrW1JhPj4yXXwwKSsyMD4+Ml18MCl8MDtTaChrW2JjPj4yXXwwLDMxLGtbTWE+PjJdfDAsa1tKYT4+Ml18MCxrW1ZhPj4yXXwwLDApfDB9d2hpbGUoMCk7c3goa1tiYz4+Ml18MCwxMjMsMCwoa1tXYT4+Ml18MCkrMXwwKXwwO1liPWtbYmM+PjJdfDA7WmI9KGtbV2E+PjJdfDApKzJ8MDtYYj0oa1tNYT4+Ml18MCktMXwwO2tbWWE+PjJdPWtbKGtbUmE+PjJdfDApKzg+PjJdO2tbWWErND4+Ml09WGI7SkMoWWIsWmIsMzI0NzQsWWEpO3N4KGtbYmM+PjJdfDAsODcsa1tXYT4+Ml18MCw0KXwwO2lBKGtbYmM+PjJdfDAsa1tKYT4+Ml18MCk7Ymcoa1tjYz4+Ml18MCxrW0xhPj4yXXwwKTtrW01hPj4yXT0oa1tNYT4+Ml18MCkrMTtrW1JhPj4yXT1rWyhrW1JhPj4yXXwwKSs0Pj4yXX1zeChrW2JjPj4yXXwwLDcsMCwoa1tLYT4+Ml18MCkrMXwwKXwwO2hBKGtbYmM+PjJdfDAsa1tLYT4+Ml18MCl9fWNhc2UgNjp7aWYoIShrW2VjPj4yXXwwKSlicmVhayBhO2JjPWtbY2M+PjJdfDA7TkMoYmMsKFFpKGtbZWM+PjJdfDAsMCl8MCkmMjU1KTticmVhayBhfWNhc2UgMTg6e2tba2I+PjJdPShsWzE3NjEzKyhsW2tbZGM+PjJdPj4wXXwwKT4+MF18MCk9PTExMyYxO2lmKCEoa1trW3M+PjJdPj4yXXwwKSlrWyRiPj4yXT0tMTtrWyhrW2FjPj4yXXwwKSs0ND4+Ml09Njt1QyhrW2JjPj4yXXwwLDMyNDc3KTtrW3diPj4yXT0xMDA7aWYoKGtbZWM+PjJdfDApIT0wPyhfaShrW2VjPj4yXXwwLHdiKXwwLChrW3diPj4yXXwwKTw9MCk6MClrW3diPj4yXT0xMDA7c3goa1tiYz4+Ml18MCw3NixrW3diPj4yXXwwLDEpfDA7a1tnYj4+Ml09MDtlOndoaWxlKDEpe2lmKChrW2diPj4yXXwwKT49KGtbKGtbY2M+PjJdfDApKzIwPj4yXXwwKSlicmVhaztrW2RiPj4yXT0wO2tbeGI+PjJdPTA7aWYoISgoa1skYj4+Ml18MCk+PTA/KGtbZ2I+PjJdfDApIT0oa1skYj4+Ml18MCk6MCkpX2I9MjQyO2Y6ZG8gaWYoKF9ifDApPT0yNDIpe19iPTA7Q3goa1thYz4+Ml18MCxrW2diPj4yXXwwKTtaYj1hQShrW2JjPj4yXXwwLDY2LDEpfDA7a1tiYj4+Ml09WmI7c3goa1tiYz4+Ml18MCw3NSwwLDApfDA7aEEoa1tiYz4+Ml18MCxrW2JiPj4yXXwwKTtrW0tiPj4yXT0oa1soa1soa1tjYz4+Ml18MCkrMTY+PjJdfDApKyhrW2diPj4yXTw8NCkrMTI+PjJdfDApKzg7a1tkYj4+Ml09MDtrW1JiPj4yXT1rWyhrW0tiPj4yXXwwKSs4Pj4yXTt3aGlsZSgxKXtpZighKGtbUmI+PjJdfDApKWJyZWFrO2tbSGI+PjJdPWtbKGtbUmI+PjJdfDApKzg+PjJdO2lmKCEobFsoa1tIYj4+Ml18MCkrNDI+PjBdJjMyKSlrW2RiPj4yXT0oa1tkYj4+Ml18MCkrMTtrW3liPj4yXT0wO2tbQWI+PjJdPWtbKGtbSGI+PjJdfDApKzg+PjJdO3doaWxlKDEpe2lmKCEoa1tBYj4+Ml18MCkpYnJlYWs7a1tkYj4+Ml09KGtbZGI+PjJdfDApKzE7a1tBYj4+Ml09a1soa1tBYj4+Ml18MCkrMjA+PjJdO2tbeWI+PjJdPShrW3liPj4yXXwwKSsxfWlmKChrW3liPj4yXXwwKT4oa1t4Yj4+Ml18MCkpa1t4Yj4+Ml09a1t5Yj4+Ml07a1tSYj4+Ml09a1trW1JiPj4yXT4+Ml19WmI9ZHgoa1tjYz4+Ml18MCwoa1tkYj4+Ml18MCkrMTw8MiwwKXwwO2tbYWI+PjJdPVpiO2lmKCEoa1thYj4+Ml18MCkpYnJlYWsgZTtrW2RiPj4yXT0wO2tbUmI+PjJdPWtbKGtbS2I+PjJdfDApKzg+PjJdO3doaWxlKDEpe2lmKCEoa1tSYj4+Ml18MCkpYnJlYWs7a1tJYj4+Ml09a1soa1tSYj4+Ml18MCkrOD4+Ml07aWYoIShsWyhrW0liPj4yXXwwKSs0Mj4+MF0mMzIpKXtZYj1rWyhrW0liPj4yXXwwKSsyOD4+Ml18MDtaYj1rW2RiPj4yXXwwO2tbZGI+PjJdPVpiKzE7a1soa1thYj4+Ml18MCkrKFpiPDwyKT4+Ml09WWJ9a1tCYj4+Ml09a1soa1tJYj4+Ml18MCkrOD4+Ml07d2hpbGUoMSl7aWYoIShrW0JiPj4yXXwwKSlicmVhaztZYj1rWyhrW0JiPj4yXXwwKSs0ND4+Ml18MDtaYj1rW2RiPj4yXXwwO2tbZGI+PjJdPVpiKzE7a1soa1thYj4+Ml18MCkrKFpiPDwyKT4+Ml09WWI7a1tCYj4+Ml09a1soa1tCYj4+Ml18MCkrMjA+PjJdfWtbUmI+PjJdPWtba1tSYj4+Ml0+PjJdfWtbKGtbYWI+PjJdfDApKyhrW2RiPj4yXTw8Mik+PjJdPTA7aWYoKGtbKGtbYWM+PjJdfDApKzQ0Pj4yXXwwKT4oOCsoa1t4Yj4+Ml18MCl8MCkpZj1rWyhrW2FjPj4yXXwwKSs0ND4+Ml18MDtlbHNlIGY9OCsoa1t4Yj4+Ml18MCl8MDtrWyhrW2FjPj4yXXwwKSs0ND4+Ml09Zjt3eChrW2JjPj4yXXwwLDE0MSwyLGtbZGI+PjJdfDAsMSxrW2FiPj4yXXwwLC0xNSl8MDtUaChrW2JjPj4yXXwwLGtbZ2I+PjJdJjI1NSk7WWI9YUEoa1tiYz4+Ml18MCwzNCwyKXwwO2tbYmI+PjJdPVliO1liPWtbYmM+PjJdfDA7WmI9a1tjYz4+Ml18MDtrW1BiPj4yXT1rWyhrWyhrW2NjPj4yXXwwKSsxNj4+Ml18MCkrKGtbZ2I+PjJdPDw0KT4+Ml07d3goWWIsOTcsMCwzLDAsUWgoWmIsMzI0OTMsUGIpfDAsLTEpfDA7dHgoa1tiYz4+Ml18MCw4MywyLDQsMSl8MDt0eChrW2JjPj4yXXwwLDUyLDQsMywyKXwwO3N4KGtbYmM+PjJdfDAsODcsMiwxKXwwO2hBKGtbYmM+PjJdfDAsa1tiYj4+Ml18MCk7a1tSYj4+Ml09a1soa1tLYj4+Ml18MCkrOD4+Ml07d2hpbGUoMSl7aWYoIShrW1JiPj4yXXwwKSlicmVhayBmO2lmKCEoKGtba2I+PjJdfDApIT0wXjEpKWJyZWFrIGY7a1tKYj4+Ml09a1soa1tSYj4+Ml18MCkrOD4+Ml07a1tGYj4+Ml09MDtrW0xiPj4yXT0tMTtnOmRvIGlmKGtbKGtbSmI+PjJdfDApKzg+PjJdfDApe2lmKCEobFsoa1tKYj4+Ml18MCkrNDI+PjBdJjMyKSlmPTA7ZWxzZSBmPVRqKGtbSmI+PjJdfDApfDA7a1tEYj4+Ml09ZjtaYj1hQShrW2JjPj4yXXwwLDY2LDEpfDA7a1tiYj4+Ml09WmI7c3goa1tiYz4+Ml18MCw3NSwwLDApfDA7aEEoa1tiYz4+Ml18MCxrW2JiPj4yXXwwKTtPQyhrW2FjPj4yXXwwKTtQQyhrW2FjPj4yXXwwLGtbSmI+PjJdfDAsMTA0LDAsMSwwLGliLGpiKXwwO3N4KGtbYmM+PjJdfDAsNzYsMCw3KXwwO2tbbGI+PjJdPTA7a1tDYj4+Ml09a1soa1tKYj4+Ml18MCkrOD4+Ml07d2hpbGUoMSl7Zj1rW2JjPj4yXXwwO2lmKCEoa1tDYj4+Ml18MCkpYnJlYWs7c3goZiw3NiwwLDgrKGtbbGI+PjJdfDApfDApfDA7a1tDYj4+Ml09a1soa1tDYj4+Ml18MCkrMjA+PjJdO2tbbGI+PjJdPShrW2xiPj4yXXwwKSsxfXN4KGYsNTcsa1tpYj4+Ml18MCwwKXwwO1piPXN4KGtbYmM+PjJdfDAsOTEsNywxKXwwO2tbdWI+PjJdPVpiO2tbbGI+PjJdPTA7d2hpbGUoMSl7aWYoKGtbbGI+PjJdfDApPj0oalsoa1tKYj4+Ml18MCkrMzQ+PjFdfDApKWJyZWFrO2RvIGlmKChrW2xiPj4yXXwwKSE9KGpbKGtbSmI+PjJdfDApKzMyPj4xXXwwKSl7aWYoIShsWyhrWyhrW0piPj4yXXwwKSs0Pj4yXXwwKSsoa1tsYj4+Ml08PDQpKzEyPj4wXXwwKSlicmVhaztYQShrW2JjPj4yXXwwLGtbSmI+PjJdfDAsa1tpYj4+Ml18MCxrW2xiPj4yXXwwLDMpO1RoKGtbYmM+PjJdfDAsLTEyOCk7WmI9YUEoa1tiYz4+Ml18MCwzNSwzKXwwO2tbbWI+PjJdPVpiO3N4KGtbYmM+PjJdfDAsOTEsMSwtMSl8MDtaYj1rW2NjPj4yXXwwO1liPWtbKGtbKGtbSmI+PjJdfDApKzQ+PjJdfDApKyhrW2xiPj4yXTw8NCk+PjJdfDA7a1tRYj4+Ml09a1trW0piPj4yXT4+Ml07a1tRYis0Pj4yXT1ZYjtaYj1RaChaYiwzMjUxNyxRYil8MDtrW1NiPj4yXT1aYjt3eChrW2JjPj4yXXwwLDk3LDAsMywwLGtbU2I+PjJdfDAsLTEpfDA7c3goa1tiYz4+Ml18MCw4NywzLDEpfDA7WmI9YUEoa1tiYz4+Ml18MCw2NiwxKXwwO2tbb2I+PjJdPVpiO3B4KGtbYmM+PjJdfDAsNzUpfDA7aEEoa1tiYz4+Ml18MCxrW21iPj4yXXwwKTtoQShrW2JjPj4yXXwwLGtbb2I+PjJdfDApfXdoaWxlKDApO2tbbGI+PjJdPShrW2xiPj4yXXwwKSsxfWtbbGI+PjJdPTA7a1tDYj4+Ml09a1soa1tKYj4+Ml18MCkrOD4+Ml07d2hpbGUoMSl7Zj1rW2JjPj4yXXwwO2lmKCEoa1tDYj4+Ml18MCkpYnJlYWs7WmI9ZUEoZil8MDtrW2NiPj4yXT1aYjtpZigoa1tEYj4+Ml18MCkhPShrW0NiPj4yXXwwKSl7WmI9eUEoa1thYz4+Ml18MCxrW0NiPj4yXXwwLGtbaWI+PjJdfDAsMCwwLHBiLGtbRmI+PjJdfDAsa1tMYj4+Ml18MCl8MDtrW0xiPj4yXT1aYjtrW0ZiPj4yXT1rW0NiPj4yXTtzeChrW2JjPj4yXXwwLDkxLDgrKGtbbGI+PjJdfDApfDAsMSl8MDtaYj1TaChrW2JjPj4yXXwwLDMxLChrW2piPj4yXXwwKSsoa1tsYj4+Ml18MCl8MCxrW2NiPj4yXXwwLGtbTGI+PjJdfDAsbVsoa1tDYj4+Ml18MCkrNTI+PjFdfDApfDA7a1tuYj4+Ml09WmI7c3goa1tiYz4+Ml18MCw5MSwxLC0xKXwwO3J4KGtbYmM+PjJdfDAsMywzMjUzNyl8MDt0eChrW2JjPj4yXXwwLDUyLDcsMywzKXwwO3J4KGtbYmM+PjJdfDAsNCwzMjU0Mil8MDt0eChrW2JjPj4yXXwwLDUyLDQsMywzKXwwO1piPXJ4KGtbYmM+PjJdfDAsNCxrW2tbQ2I+PjJdPj4yXXwwKXwwO2tbcmI+PjJdPVpiO3R4KGtbYmM+PjJdfDAsNTIsNCwzLDMpfDA7c3goa1tiYz4+Ml18MCw4NywzLDEpfDA7WmI9YUEoa1tiYz4+Ml18MCw2NiwxKXwwO2tbcWI+PjJdPVpiO3B4KGtbYmM+PjJdfDAsNzUpfDA7aEEoa1tiYz4+Ml18MCxrW25iPj4yXXwwKTtpZihsWyhrW0NiPj4yXXwwKSs1ND4+MF18MCl7WmI9ZUEoa1tiYz4+Ml18MCl8MDtrW01iPj4yXT1aYjtrW3RiPj4yXT0wO3doaWxlKDEpe2lmKChrW3RiPj4yXXwwKT49KG1bKGtbQ2I+PjJdfDApKzUwPj4xXXwwKSlicmVhaztrW2hiPj4yXT1qWyhrWyhrW0NiPj4yXXwwKSs0Pj4yXXwwKSsoa1t0Yj4+Ml08PDEpPj4xXTtpZighKChrW2hiPj4yXXwwKT49MD8obFsoa1soa1tKYj4+Ml18MCkrND4+Ml18MCkrKGtbaGI+PjJdPDw0KSsxMj4+MF18MCkhPTA6MCkpc3goa1tiYz4+Ml18MCwzNCwoa1tMYj4+Ml18MCkrKGtbdGI+PjJdfDApfDAsa1tNYj4+Ml18MCl8MDtrW3RiPj4yXT0oa1t0Yj4+Ml18MCkrMX1aYj1hQShrW2JjPj4yXXwwLDcsKGtbamI+PjJdfDApKyhrW2xiPj4yXXwwKXwwKXwwO2tbc2I+PjJdPVpiO2dBKGtbYmM+PjJdfDAsa1tNYj4+Ml18MCl8MDtoQShrW2JjPj4yXXwwLGtbc2I+PjJdfDApO1NoKGtbYmM+PjJdfDAsNTksKGtbamI+PjJdfDApKyhrW2xiPj4yXXwwKXwwLGtbTWI+PjJdfDAsa1tMYj4+Ml18MCxtWyhrW0NiPj4yXXwwKSs1MD4+MV18MCl8MDtzeChrW2JjPj4yXXwwLDkxLDEsLTEpfDA7cngoa1tiYz4+Ml18MCwzLDMyNTYzKXwwO2dBKGtbYmM+PjJdfDAsa1tyYj4+Ml18MCl8MDtpQShrW2JjPj4yXXwwLGtbTWI+PjJdfDApfWhBKGtbYmM+PjJdfDAsa1txYj4+Ml18MCk7ekEoa1thYz4+Ml18MCxrW3BiPj4yXXwwKX1rW0NiPj4yXT1rWyhrW0NiPj4yXXwwKSsyMD4+Ml07a1tsYj4+Ml09KGtbbGI+PjJdfDApKzF9c3goZiw3LGtbaWI+PjJdfDAsa1t1Yj4+Ml18MCl8MDtoQShrW2JjPj4yXXwwLChrW3ViPj4yXXwwKS0xfDApO3J4KGtbYmM+PjJdfDAsMiwzMjU5MCl8MDtrW2xiPj4yXT0wO2tbQ2I+PjJdPWtbKGtbSmI+PjJdfDApKzg+PjJdO3doaWxlKDEpe2lmKCEoa1tDYj4+Ml18MCkpYnJlYWsgZztpZigoa1tEYj4+Ml18MCkhPShrW0NiPj4yXXwwKSl7WmI9R3goa1tiYz4+Ml18MCl8MDtrW2JiPj4yXT1aYjtzeChrW2JjPj4yXXwwLDY2LDEsKGtbYmI+PjJdfDApKzJ8MCl8MDtzeChrW2JjPj4yXXwwLDc1LDAsMCl8MDtzeChrW2JjPj4yXXwwLDEwMCwoa1tqYj4+Ml18MCkrKGtbbGI+PjJdfDApfDAsMyl8MDt0eChrW2JjPj4yXXwwLDM3LDgrKGtbbGI+PjJdfDApfDAsKGtbYmI+PjJdfDApKzh8MCwzKXwwO1RoKGtbYmM+PjJdfDAsLTExMik7c3goa1tiYz4+Ml18MCw5MSwxLC0xKXwwO3J4KGtbYmM+PjJdfDAsMyxrW2tbQ2I+PjJdPj4yXXwwKXwwO3R4KGtbYmM+PjJdfDAsNTIsMywyLDcpfDA7c3goa1tiYz4+Ml18MCw4Nyw3LDEpfDB9a1tDYj4+Ml09a1soa1tDYj4+Ml18MCkrMjA+PjJdO2tbbGI+PjJdPShrW2xiPj4yXXwwKSsxfX13aGlsZSgwKTtrW1JiPj4yXT1rW2tbUmI+PjJdPj4yXX19d2hpbGUoMCk7a1tnYj4+Ml09KGtbZ2I+PjJdfDApKzF9YmM9VWgoa1tiYz4+Ml18MCw0LDMyNjE5LDApfDA7a1skYT4+Ml09YmM7aWYoIShrWyRhPj4yXXwwKSlicmVhayBhO2tbKGtbJGE+PjJdfDApKzg+PjJdPTAtKGtbd2I+PjJdfDApO2lbKGtbJGE+PjJdfDApKzQwKzE+PjBdPS0yO2tbKGtbJGE+PjJdfDApKzQwKzE2Pj4yXT0zMjYzNTticmVhayBhfWNhc2UgMTI6e2lmKCEoa1tlYz4+Ml18MCkpe2lmKFV6KGtbYWM+PjJdfDApfDApYnJlYWsgYTt0QyhrW2JjPj4yXXwwLDMyNjM4LGtbNTMzNisobFsoa1trW2FjPj4yXT4+Ml18MCkrNjY+PjBdPDwzKT4+Ml18MCk7YnJlYWsgYX1pZigobVsoa1soa1soa1tjYz4+Ml18MCkrMTY+PjJdfDApKzEyPj4yXXwwKSs3OD4+MV0mMXwwKT09MT8obVsoa1soa1soa1tjYz4+Ml18MCkrMTY+PjJdfDApKzEyPj4yXXwwKSs3OD4+MV0mNHwwKSE9NDowKWJyZWFrIGE7a1tIYT4+Ml09NTMzNjt3aGlsZSgxKXtpZighKGtba1tIYT4+Ml0+PjJdfDApKWJyZWFrO2JjPTA9PShzZyhrW2VjPj4yXXwwLGtba1tIYT4+Ml0+PjJdfDApfDApO2Y9a1tIYT4+Ml18MDtpZihiYyl7X2I9MzA5O2JyZWFrfWtbSGE+PjJdPWYrOH1pZigoX2J8MCk9PTMwOSl7aWYobFtmKzQ+PjBdfDApZj1sWyhrW0hhPj4yXXwwKSs0Pj4wXXwwO2Vsc2UgZj0oaVs5NjhdfDApPT0wPzM6MjtiYz1mJjI1NTtpWyhrW2NjPj4yXXwwKSs2Nj4+MF09YmM7aVsoa1soa1soa1tjYz4+Ml18MCkrMTY+PjJdfDApKzEyPj4yXXwwKSs3Nz4+MF09YmN9aWYoa1trW0hhPj4yXT4+Ml18MClicmVhayBhO2JjPWtbYWM+PjJdfDA7a1tJYT4+Ml09a1tlYz4+Ml07T2goYmMsMzI2NDcsSWEpO2JyZWFrIGF9Y2FzZSAwOntrW08+PjJdPWtbKGtbRWI+PjJdfDApKzg+PjJdO1ZoKGtbYmM+PjJdfDAsa1skYj4+Ml18MCk7aWYoKGtbZWM+PjJdfDApIT0wPyhsWyhrW0ViPj4yXXwwKSs1Pj4wXSYyfDApPT0wOjApe2JjPVVoKGtbYmM+PjJdfDAsMiwzMjY3MiwwKXwwO2tbdz4+Ml09YmM7a1soa1t3Pj4yXXwwKSs0Pj4yXT1rWyRiPj4yXTtrWyhrW3c+PjJdfDApKzIwKzQ+PjJdPWtbJGI+PjJdO2tbKGtbdz4+Ml18MCkrMjArOD4+Ml09a1tPPj4yXTtiYz1aaShrW2VjPj4yXXwwKXwwO2tbKGtbdz4+Ml18MCkrMjArMTI+PjJdPWJjO2JyZWFrIGF9YWM9VWgoa1tiYz4+Ml18MCwzLDMyNjgwLDApfDA7a1t4Pj4yXT1hYztrWyhrW3g+PjJdfDApKzQ+PjJdPWtbJGI+PjJdO2tbKGtbeD4+Ml18MCkrMjArND4+Ml09a1skYj4+Ml07a1soa1t4Pj4yXXwwKSsyMCsxMj4+Ml09a1tPPj4yXTt3QyhrW2JjPj4yXXwwLDEpO3hDKGtbYmM+PjJdfDAsMCwwLGtbZGM+PjJdfDAsLTEpfDA7UUMoa1tiYz4+Ml18MCk7YnJlYWsgYX1jYXNlIDg6e2tbQ2E+PjJdPTA7a1soa1thYz4+Ml18MCkrNDQ+PjJdPTE7dUMoa1tiYz4+Ml18MCwzMjY5Mik7d2hpbGUoMSl7YWM9a1tDYT4+Ml18MDtrW0NhPj4yXT1hYysxO2FjPUtkKGFjKXwwO2tbR2E+PjJdPWFjO2Y9a1tiYz4+Ml18MDtpZighYWMpYnJlYWs7cngoZiwxLGtbR2E+PjJdfDApfDA7c3goa1tiYz4+Ml18MCw4NywxLDEpfDB9UUMoZik7YnJlYWsgYX1jYXNlIDM2OntrW04+PjJdPShrW2tbcz4+Ml0+PjJdfDApIT0wP2tbJGI+PjJdfDA6MTA7a1tGPj4yXT0wO2RvIGlmKGtbZWM+PjJdfDApe2lmKCEoc2coa1tlYz4+Ml18MCwzMjcwNyl8MCkpe2tbRj4+Ml09MTticmVha31pZighKHNnKGtbZWM+PjJdfDAsMzI3MTIpfDApKXtrW0Y+PjJdPTI7YnJlYWt9aWYoIShzZyhrW2VjPj4yXXwwLDMyNzIwKXwwKSlrW0Y+PjJdPTN9d2hpbGUoMCk7SUMoa1tiYz4+Ml18MCwzLDU0MDgpO2tbKGtbYWM+PjJdfDApKzQ0Pj4yXT0zO3R4KGtbYmM+PjJdfDAsOCxrW04+PjJdfDAsa1tGPj4yXXwwLDEpfDA7c3goa1tiYz4+Ml18MCw4NywxLDMpfDA7YnJlYWsgYX1jYXNlIDM1OntpZihrW2VjPj4yXXwwKXthYz1rW2NjPj4yXXwwO0pmKGFjLFppKGtbZWM+PjJdfDApfDApfDB9aWYoKGtbKGtbY2M+PjJdfDApKzIyND4+Ml18MCk9PTEzOSlmPWtbKGtbY2M+PjJdfDApKzIyOD4+Ml18MDtlbHNlIGY9MDt2QyhrW2JjPj4yXXwwLDMyNzI5LGYsKChmfDApPDApPDwzMT4+MzEpO2JyZWFrIGF9Y2FzZSAyNzp7eGYoa1tjYz4+Ml18MCl8MDticmVhayBhfWNhc2UgMjg6e2lmKChrW2VjPj4yXXwwKSE9MD8oUmkoa1tlYz4+Ml18MCx0KXwwKT09MDowKXthYz10O1FkKGtbYWM+PjJdfDAsa1thYys0Pj4yXXwwKXwwfWFjPWtbYmM+PjJdfDA7YmM9UWQoLTEsLTEpfDA7dkMoYWMsMzI3NTYsYmMsTCk7YnJlYWsgYX1jYXNlIDM0OntpZigoa1tlYz4+Ml18MCkhPTA/KF9iPShSaShrW2VjPj4yXXwwLHUpfDApPT0wLGFjPXUsJGI9a1thYys0Pj4yXXwwLF9iJigoJGJ8MCk+MHwoJGJ8MCk9PTAmKGtbYWM+PjJdfDApPj4+MD49MCkpOjApT2Yoa1tjYz4+Ml18MCwxMSxrW3U+PjJdJjIxNDc0ODM2NDcpfDA7YWM9a1tiYz4+Ml18MDtiYz1PZihrW2NjPj4yXXwwLDExLC0xKXwwO3ZDKGFjLDMyNzcyLGJjLCgoYmN8MCk8MCk8PDMxPj4zMSk7YnJlYWsgYX1kZWZhdWx0OntpZihrW2VjPj4yXXwwKXthYz1rW2NjPj4yXXwwO0ZmKGFjLFppKGtbZWM+PjJdfDApfDApfDB9YWM9a1soa1tjYz4+Ml18MCkrNDI4Pj4yXXwwO3ZDKGtbYmM+PjJdfDAsMzI3NDgsYWMsKChhY3wwKTwwKTw8MzE+PjMxKTticmVhayBhfX13aGlsZSgwKX19d2hpbGUoMCk7Ymcoa1tjYz4+Ml18MCxrW2RjPj4yXXwwKTtiZyhrW2NjPj4yXXwwLGtbZWM+PjJdfDApO3I9ZmM7cmV0dXJufWZ1bmN0aW9uIEl3KGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscz0wLHQ9MCx1PTAsdj0wLHc9MDt3PXI7cj1yKzExMnwwO3Q9dysyNHwwO3M9dztkPXcrMTA4fDA7ZT13KzEwNHwwO2Y9dysxMDB8MDtvPXcrOTZ8MDt2PXcrOTJ8MDtnPXcrODh8MDtwPXcrNjR8MDtoPXcrNTZ8MDtqPXcrNDh8MDtxPXcrNDR8MDt1PXcrNDB8MDttPXcrMzZ8MDtsPXcrMzJ8MDtuPXcrMjh8MDtrW2Q+PjJdPWE7a1tlPj4yXT1iO2tbZj4+Ml09YztrW28+PjJdPWtbKGtbZD4+Ml18MCkrNDQ0Pj4yXTtrW2c+PjJdPWtba1tkPj4yXT4+Ml07a1soa1tkPj4yXXwwKSs0NDQ+PjJdPTA7ZG8gaWYoKGtbbz4+Ml18MCkhPTA/KGtbKGtbZD4+Ml18MCkrMzY+PjJdfDApPT0wOjApe2tbdj4+Ml09a1trW28+PjJdPj4yXTtiPVBoKGtba1tkPj4yXT4+Ml18MCxrWyhrW28+PjJdfDApKzIwPj4yXXwwKXwwO2tbaD4+Ml09YjtrWyhrW28+PjJdfDApKzI4Pj4yXT1rW2U+PjJdO3doaWxlKDEpe2M9a1tvPj4yXXwwO2lmKCEoa1tlPj4yXXwwKSlicmVhaztrWyhrW2U+PjJdfDApKzQ+PjJdPWM7a1tlPj4yXT1rWyhrW2U+PjJdfDApKzI4Pj4yXX1meihqLGtbYz4+Ml18MCk7bUMocCxrW2Q+PjJdfDAsa1toPj4yXXwwLDE4NjY0LGopO2lmKChyQyhwLGtbKGtbbz4+Ml18MCkrMjg+PjJdfDApfDApPT0wPyhwQyhwLGtbKGtbbz4+Ml18MCkrMTI+PjJdfDApfDApPT0wOjApe2lmKCEoaVsoa1tnPj4yXXwwKSsxNDgrNT4+MF18MCkpe3A9bngoa1tkPj4yXXwwKXwwO2tbcT4+Ml09cDtpZighKGtbcT4+Ml18MCkpYnJlYWs7Qngoa1tkPj4yXXwwLDAsa1toPj4yXXwwKTtwPWd4KGtbZz4+Ml18MCxrW2tbZj4+Ml0+PjJdfDAsa1soa1tmPj4yXXwwKSs0Pj4yXXwwLDApfDA7a1t1Pj4yXT1wO3A9a1tkPj4yXXwwO2E9KGtbaD4+Ml18MCk9PTE/MTk5MDU6MTk5MjQ7Yj1rW3Y+PjJdfDA7Zj1rWyhrW28+PjJdfDApKzQ+PjJdfDA7aj1rW3U+PjJdfDA7a1tzPj4yXT1rWyhrWyhrW2c+PjJdfDApKzE2Pj4yXXwwKSsoa1toPj4yXTw8NCk+PjJdO2tbcys0Pj4yXT1hO2tbcys4Pj4yXT1iO2tbcysxMj4+Ml09ZjtrW3MrMTY+PjJdPWo7bXgocCwzMjAxMCxzKTtiZyhrW2c+PjJdfDAsa1t1Pj4yXXwwKTtveChrW2Q+PjJdfDAsa1toPj4yXXwwKTtxPWtbcT4+Ml18MDtzPWtbaD4+Ml18MDt1PWtbZz4+Ml18MDtrW3Q+PjJdPWtbdj4+Ml07cXgocSxzLFFoKHUsMzIwNzQsdCl8MCl9aWYoaVsoa1tnPj4yXXwwKSsxNDgrNT4+MF18MCl7a1ttPj4yXT1rW28+PjJdO2tbbD4+Ml09KGtbKGtbKGtbZz4+Ml18MCkrMTY+PjJdfDApKyhrW2g+PjJdPDw0KSsxMj4+Ml18MCkrNDA7dj1jayhrW2w+PjJdfDAsa1t2Pj4yXXwwLGtbbz4+Ml18MCl8MDtrW28+PjJdPXY7aWYoa1tvPj4yXXwwKXt3aChrW2c+PjJdfDApO2JyZWFrfWlmKChrWyhrW20+PjJdfDApKzIwPj4yXXwwKT09KGtbKGtbbT4+Ml18MCkrMjQ+PjJdfDApKXt2PUNqKChrWyhrW20+PjJdfDApKzI0Pj4yXXwwKSs4fDAsa1soa1ttPj4yXXwwKSs0Pj4yXXwwKXwwO2tbbj4+Ml09djtrWyhrW20+PjJdfDApKzMyPj4yXT1rWyhrW24+PjJdfDApKzYwPj4yXTtrWyhrW24+PjJdfDApKzYwPj4yXT1rW20+PjJdfX19fXdoaWxlKDApO19mKGtbZz4+Ml18MCxrW28+PjJdfDApO3l2KGtbZz4+Ml18MCxrW2U+PjJdfDApO3I9dztyZXR1cm59ZnVuY3Rpb24gSncoYSxiLGMsZCxlLGYsZyxoLGosbSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7bT1tfDA7dmFyIG49MCxvPTAscD0wLHE9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MCxFPTAsRj0wLEc9MCxIPTAsST0wLEo9MCxLPTAsTD0wLE09MCxOPTAsTz0wLFA9MCxRPTA7UT1yO3I9cisxNjB8MDt2PVErNDh8MDt1PVErMzJ8MDt0PVErMjR8MDtGPVErMTZ8MDtzPVErOHwwO3E9UTtJPVErMTU2fDA7bj1RKzE1MnwwO289USsxNDh8MDt4PVErMTQ0fDA7eT1RKzE0MHwwO0o9USsxMzZ8MDtLPVErMTMyfDA7TD1RKzEyOHwwO3o9USsxMjR8MDtBPVErMTIwfDA7Tz1RKzExNnwwO0U9USsxMTJ8MDtQPVErMTA4fDA7TT1RKzEwNHwwO049USsxMDB8MDtEPVErOTZ8MDtwPVErNzJ8MDtDPVErNjh8MDtCPVErNjR8MDtHPVErNjB8MDtIPVErNTZ8MDtrW0k+PjJdPWE7a1tuPj4yXT1iO2tbbz4+Ml09YztrW3g+PjJdPWQ7a1t5Pj4yXT1lO2tbSj4+Ml09ZjtrW0s+PjJdPWc7a1tMPj4yXT1oO2tbej4+Ml09ajtrW0E+PjJdPW07a1tPPj4yXT0wO2tbUD4+Ml09MDtrW00+PjJdPWtba1tJPj4yXT4+Ml07ZG8gaWYoa1t6Pj4yXXwwKWlmKChrWyhrW28+PjJdfDApKzQ+PjJdfDApPj4+MDw9MCl7a1tOPj4yXT0xO2tbRD4+Ml09a1tuPj4yXTtpZihrW0s+PjJdfDApe3c9NjticmVha31lbHNlIGJyZWFrfWVsc2V7T2goa1tJPj4yXXwwLDMxNjkzLHEpO2JyZWFrfWVsc2V7cT1ZeihrW0k+PjJdfDAsa1tuPj4yXXwwLGtbbz4+Ml18MCxEKXwwO2tbTj4+Ml09cTtpZigoa1tOPj4yXXwwKT49MCYoa1tLPj4yXXwwKSE9MCl3PTZ9d2hpbGUoMCk7ZG8gaWYoKHd8MCk9PTY/KGxbKGtbTT4+Ml18MCkrNjk+PjBdfDApPT0wOjApe2lmKChrW04+PjJdfDApIT0xPyhsWyhrW00+PjJdfDApKzE0OCs1Pj4wXXwwKSE9MDowKXtiZyhrW00+PjJdfDAsa1soa1tLPj4yXXwwKSs4KzQ+PjJdfDApO2tbKGtbSz4+Ml18MCkrOCs0Pj4yXT0wfXc9bEMoa1tJPj4yXXwwLGtbSz4+Ml18MCl8MDtrW0U+PjJdPXc7aWYoKChsWyhrW00+PjJdfDApKzE0OCs1Pj4wXXwwKT09MD8oKGtbRT4+Ml18MCkhPTA/KGtbKGtbbz4+Ml18MCkrND4+Ml18MCk9PTA6MCk6MCk/KGtbKGtbRT4+Ml18MCkrNjQ+PjJdfDApPT0oa1soa1soa1tNPj4yXXwwKSsxNj4+Ml18MCkrMTYrMTI+PjJdfDApOjApa1tOPj4yXT0xO2lmKChpWyhrW00+PjJdfDApKzY5Pj4wXXwwKT09MD8obUMocCxrW0k+PjJdfDAsa1tOPj4yXXwwLDE4NjY0LGtbRD4+Ml18MCksKG5DKHAsa1tLPj4yXXwwKXwwKT09MCk6MCl7dz1sQyhrW0k+PjJdfDAsa1tLPj4yXXwwKXwwO2tbRT4+Ml09dztpZighKGtbRT4+Ml18MCkpe2lmKChsWyhrW00+PjJdfDApKzE0OCs0Pj4wXXwwKSE9MSlicmVhaztpWyhrW00+PjJdfDApKzE0OCs2Pj4wXT0xO2JyZWFrfWlmKGxbKGtbRT4+Ml18MCkrNDI+PjBdJjE2KXtPaChrW0k+PjJdfDAsMzE3Mzkscyk7YnJlYWt9dz1ieChrW00+PjJdfDAsa1tEPj4yXXwwKXwwO2tbUD4+Ml09dztpZigoa1tQPj4yXXwwKSE9MD8wPT0oYXkoa1tJPj4yXXwwLGtbUD4+Ml18MCl8MCk6MCl7aWYoQ2ooKGtbKGtbKGtbTT4+Ml18MCkrMTY+PjJdfDApKyhrW04+PjJdPDw0KSsxMj4+Ml18MCkrNDB8MCxrW1A+PjJdfDApfDApe249a1tJPj4yXXwwO2lmKGtbQT4+Ml18MCl7Q3gobixrW04+PjJdfDApO2JyZWFrfWVsc2V7a1tGPj4yXT1rW0Q+PjJdO09oKG4sMzE3ODAsRik7YnJlYWt9fWlmKCEoSmQoa1trW0U+PjJdPj4yXXwwLDI3ODQ0LDcpfDApKXtPaChrW0k+PjJdfDAsMzE4MDYsdCk7YnJlYWt9aWYoKGtbeD4+Ml18MCkhPTc3PyhrWyhrW0U+PjJdfDApKzEyPj4yXXwwKSE9MDowKXtOPWtbST4+Ml18MDtIPWtbSz4+Ml18MDtrW3U+PjJdPShrW3g+PjJdfDApPT02Mz8zMTg0NDozMTg1MTtrW3UrND4+Ml09SDtrW3UrOD4+Ml09MDtPaChOLDMxODU3LHUpO2JyZWFrfWlmKChrW3g+PjJdfDApPT03Nz8oa1soa1tFPj4yXXwwKSsxMj4+Ml18MCk9PTA6MCl7Tj1rW0k+PjJdfDA7a1t2Pj4yXT1rW0s+PjJdO2tbdis0Pj4yXT0wO09oKE4sMzE4OTQsdik7YnJlYWt9Rj1QaChrW00+PjJdfDAsa1soa1tFPj4yXXwwKSs2ND4+Ml18MCl8MDtrW0M+PjJdPUY7a1tCPj4yXT03O2tbRz4+Ml09a1soa1soa1tNPj4yXXwwKSsxNj4+Ml18MCkrKGtbQz4+Ml08PDQpPj4yXTtpZihrW3o+PjJdfDApbj1rWyhrWyhrW00+PjJdfDApKzE2Pj4yXXwwKSsxNj4+Ml18MDtlbHNlIG49a1tHPj4yXXwwO2tbSD4+Ml09bjtpZigoa1tDPj4yXXwwKT09MXwoa1t6Pj4yXXwwKSE9MClrW0I+PjJdPTU7aWYoKGt4KGtbST4+Ml18MCxrW0I+PjJdfDAsa1tQPj4yXXwwLGtba1tFPj4yXT4+Ml18MCxrW0g+PjJdfDApfDApPT0wPyhreChrW0k+PjJdfDAsMTgsKGtbQz4+Ml18MCk9PTE/MTk5MDU6MTk5MjQsMCxrW0c+PjJdfDApfDApPT0wOjApe2lmKChrW3g+PjJdfDApPT03NylrW3g+PjJdPTYzO0g9Q2goa1tNPj4yXXwwLDM2LDApfDA7a1tPPj4yXT1IO2lmKCEoa1tPPj4yXXwwKSlicmVhaztrW2tbTz4+Ml0+PjJdPWtbUD4+Ml07a1tQPj4yXT0wO0g9QWgoa1tNPj4yXXwwLGtbKGtbSz4+Ml18MCkrOCs4Pj4yXXwwKXwwO2tbKGtbTz4+Ml18MCkrND4+Ml09SDtrWyhrW08+PjJdfDApKzIwPj4yXT1rWyhrWyhrW00+PjJdfDApKzE2Pj4yXXwwKSsoa1tOPj4yXTw8NCkrMTI+PjJdO2tbKGtbTz4+Ml18MCkrMjQ+PjJdPWtbKGtbRT4+Ml18MCkrNjQ+PjJdO2lbKGtbTz4+Ml18MCkrOD4+MF09a1t5Pj4yXTtpWyhrW08+PjJdfDApKzk+PjBdPShrW3g+PjJdfDApPT02Mz8xOjI7Tj1TeShrW00+PjJdfDAsa1tMPj4yXXwwLDEpfDA7a1soa1tPPj4yXXwwKSsxMj4+Ml09TjtOPVN6KGtbTT4+Ml18MCxrW0o+PjJdfDApfDA7a1soa1tPPj4yXXwwKSsxNj4+Ml09TjtrWyhrW0k+PjJdfDApKzQ0ND4+Ml09a1tPPj4yXX19fX13aGlsZSgwKTtiZyhrW00+PjJdfDAsa1tQPj4yXXwwKTtydihrW00+PjJdfDAsa1tLPj4yXXwwKTt1dihrW00+PjJdfDAsa1tKPj4yXXwwKTtzdihrW00+PjJdfDAsa1tMPj4yXXwwKTtpZihrWyhrW0k+PjJdfDApKzQ0ND4+Ml18MCl7cj1RO3JldHVybn1fZihrW00+PjJdfDAsa1tPPj4yXXwwKTtyPVE7cmV0dXJufWZ1bmN0aW9uIEt3KGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxsPTAsbT0wLG49MDttPXI7cj1yKzMyfDA7Zj1tKzE2fDA7bj1tKzEyfDA7Zz1tKzh8MDtoPW0rNHwwO2o9bSsyMHwwO2w9bTtrW2Y+PjJdPWE7a1tuPj4yXT1iO2tbZz4+Ml09YztrW2g+PjJdPWQ7aVtqPj4wXT1lO2Q9a0Moa1tmPj4yXXwwLDExMCxrW24+PjJdfDApfDA7a1tsPj4yXT1kO2lmKGtbbD4+Ml18MCl7bj1feShrW2Y+PjJdfDAsa1tnPj4yXXwwLDEpfDA7a1soa1tsPj4yXXwwKSsyMD4+Ml09bjtuPVN5KGtbZj4+Ml18MCxrW2g+PjJdfDAsMSl8MDtrWyhrW2w+PjJdfDApKzE2Pj4yXT1uO2lbKGtbbD4+Ml18MCkrMT4+MF09aVtqPj4wXXwwfW92KGtbZj4+Ml18MCxrW2c+PjJdfDApO3N2KGtbZj4+Ml18MCxrW2g+PjJdfDApO3I9bTtyZXR1cm4ga1tsPj4yXXwwfWZ1bmN0aW9uIEx3KGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxsPTAsbT0wLG49MDttPXI7cj1yKzMyfDA7Zj1tKzE2fDA7bj1tKzEyfDA7Zz1tKzh8MDtoPW0rNHwwO2o9bSsyMHwwO2w9bTtrW2Y+PjJdPWE7a1tuPj4yXT1iO2tbZz4+Ml09YztrW2g+PjJdPWQ7aVtqPj4wXT1lO2E9a0Moa1tmPj4yXXwwLDEwOCxrW24+PjJdfDApfDA7a1tsPj4yXT1hO2E9a1tmPj4yXXwwO2lmKGtbbD4+Ml18MCl7bj1peShhLGtbaD4+Ml18MCwxKXwwO2tbKGtbbD4+Ml18MCkrOD4+Ml09bjtrWyhrW2w+PjJdfDApKzI0Pj4yXT1rW2c+PjJdO2lbKGtbbD4+Ml18MCkrMT4+MF09aVtqPj4wXXwwO2o9a1tmPj4yXXwwO249a1toPj4yXXwwO3B2KGosbik7bj1rW2w+PjJdfDA7cj1tO3JldHVybiBufDB9ZWxzZXt1dihhLGtbZz4+Ml18MCk7aj1rW2Y+PjJdfDA7bj1rW2g+PjJdfDA7cHYoaixuKTtuPWtbbD4+Ml18MDtyPW07cmV0dXJuIG58MH1yZXR1cm4gMH1mdW5jdGlvbiBNdyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTA7Zz1yO3I9cisxNnwwO2Q9ZysxMnwwO2g9Zys4fDA7ZT1nKzR8MDtmPWc7a1tkPj4yXT1hO2tbaD4+Ml09YjtrW2U+PjJdPWM7Yz1rQyhrW2Q+PjJdfDAsMTA5LGtbaD4+Ml18MCl8MDtrW2Y+PjJdPWM7aWYoa1tmPj4yXXwwKXtoPVN5KGtbZD4+Ml18MCxrW2U+PjJdfDAsMSl8MDtrWyhrW2Y+PjJdfDApKzE2Pj4yXT1oO2lbKGtbZj4+Ml18MCkrMT4+MF09MTB9c3Yoa1tkPj4yXXwwLGtbZT4+Ml18MCk7cj1nO3JldHVybiBrW2Y+PjJdfDB9ZnVuY3Rpb24gTncoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MDtnPXI7cj1yKzE2fDA7Yz1nKzEyfDA7ZD1nKzh8MDtlPWcrNHwwO2Y9ZztrW2Q+PjJdPWE7a1tlPj4yXT1iO2I9Q2goa1tkPj4yXXwwLDM2LDApfDA7a1tmPj4yXT1iO2lmKCEoa1tmPj4yXXwwKSl7cHYoa1tkPj4yXXwwLGtbZT4+Ml18MCk7a1tjPj4yXT0wO2Y9a1tjPj4yXXwwO3I9ZztyZXR1cm4gZnwwfWVsc2V7aVtrW2Y+PjJdPj4wXT0xMTk7a1soa1tmPj4yXXwwKSs4Pj4yXT1rW2U+PjJdO2lbKGtbZj4+Ml18MCkrMT4+MF09MTA7a1tjPj4yXT1rW2Y+PjJdO2Y9a1tjPj4yXXwwO3I9ZztyZXR1cm4gZnwwfXJldHVybiAwfWZ1bmN0aW9uIE93KGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTA7cT1yO3I9cis0OHwwO289cTtqPXErNDB8MDtsPXErMzZ8MDttPXErMzJ8MDtmPXErMjh8MDtkPXErMjR8MDtwPXErMjB8MDtnPXErMTZ8MDtuPXErMTJ8MDtlPXErOHwwO2tbaj4+Ml09YTtrW2w+PjJdPWI7a1ttPj4yXT1jO2tbZj4+Ml09MDtrW24+PjJdPWtba1tqPj4yXT4+Ml07aWYoaVsoa1tuPj4yXXwwKSs2OT4+MF18MCl7bz1rW24+PjJdfDA7cD1rW2w+PjJdfDA7cnYobyxwKTtyPXE7cmV0dXJufWlmKFV6KGtbaj4+Ml18MCl8MCl7bz1rW24+PjJdfDA7cD1rW2w+PjJdfDA7cnYobyxwKTtyPXE7cmV0dXJufWtbcD4+Ml09a1soa1tsPj4yXXwwKSs4KzQ+PjJdO2tbZz4+Ml09a1soa1tsPj4yXXwwKSs4Kzg+PjJdO2tbZD4+Ml09MDt3aGlsZSgxKXtpZigoa1tkPj4yXXwwKT49KGtbKGtbbj4+Ml18MCkrMjA+PjJdfDApKWJyZWFrO2E9a1tkPj4yXXwwO2tbZT4+Ml09KGtbZD4+Ml18MCk8Mj9hXjE6YTtpZighKChrW3A+PjJdfDApIT0wPyhzZyhrWyhrWyhrW24+PjJdfDApKzE2Pj4yXXwwKSsoa1tlPj4yXTw8NCk+PjJdfDAsa1twPj4yXXwwKXwwKSE9MDowKSloPTc7aWYoKGh8MCk9PTc/KGg9MCxhPUNqKChrWyhrWyhrW24+PjJdfDApKzE2Pj4yXXwwKSsoa1tlPj4yXTw8NCkrMTI+PjJdfDApKzQwfDAsa1tnPj4yXXwwKXwwLGtbZj4+Ml09YSwoa1tmPj4yXXwwKSE9MCk6MClicmVhaztrW2Q+PjJdPShrW2Q+PjJdfDApKzF9aWYoa1tmPj4yXXwwKXtpQyhrW2o+PjJdfDAsa1tmPj4yXXwwKTtvPWtbbj4+Ml18MDtwPWtbbD4+Ml18MDtydihvLHApO3I9cTtyZXR1cm59ZD1rW2o+PjJdfDA7aWYoa1ttPj4yXXwwKWhDKGQsa1twPj4yXXwwKTtlbHNle2tbbz4+Ml09a1tsPj4yXTtrW28rND4+Ml09MDtPaChkLDMxNjIyLG8pfWlbKGtbaj4+Ml18MCkrMTc+PjBdPTE7bz1rW24+PjJdfDA7cD1rW2w+PjJdfDA7cnYobyxwKTtyPXE7cmV0dXJufWZ1bmN0aW9uIFB3KGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaT0wO2U9cjtyPXIrMTZ8MDtpPWUrMTJ8MDtoPWUrOHwwO2c9ZSs0fDA7Zj1lO2tbaT4+Ml09YTtrW2g+PjJdPWI7a1tnPj4yXT1jO2tbZj4+Ml09ZDtTQihrW2k+PjJdfDAsMjQsNDQ0OCxrW2g+PjJdfDAsa1toPj4yXXwwLGtbZz4+Ml18MCxrW2Y+PjJdfDApO3I9ZTtyZXR1cm59ZnVuY3Rpb24gUXcoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTA7Yz1yO3I9cisxNnwwO2U9Yys0fDA7ZD1jO2tbZT4+Ml09YTtrW2Q+PjJdPWI7U0Ioa1tlPj4yXXwwLDI1LDQ0MjAsa1tkPj4yXXwwLDAsMCxrW2Q+PjJdfDApO3I9YztyZXR1cm59ZnVuY3Rpb24gUncoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxzPTAsdD0wLHU9MDt1PXI7cj1yKzY0fDA7dD11O3A9dSs0OHwwO2Q9dSs0NHwwO2U9dSs0MHwwO2c9dSszNnwwO2w9dSszMnwwO249dSsyOHwwO2o9dSsyNHwwO3M9dSsyMHwwO3E9dSsxNnwwO2Y9dSsxMnwwO2g9dSs4fDA7bT11KzR8MDtrW3A+PjJdPWE7a1tkPj4yXT1iO2tbZT4+Ml09YztrW2Y+PjJdPWtba1twPj4yXT4+Ml07aWYoVXooa1twPj4yXXwwKXwwKXtyPXU7cmV0dXJufWlmKCEoa1tkPj4yXXwwKSl7dUEoa1twPj4yXXwwLDApO3I9dTtyZXR1cm59aWYoISgoa1tlPj4yXXwwKSE9MD8oa1trW2U+PjJdPj4yXXwwKSE9MDowKSlvPTY7ZG8gaWYoKG98MCk9PTYpe289Yngoa1trW3A+PjJdPj4yXXwwLGtbZD4+Ml18MCl8MDtrW20+PjJdPW87aWYoIShrW20+PjJdfDApKXtyPXU7cmV0dXJufW89YWsoa1tmPj4yXXwwLGlbKGtbZj4+Ml18MCkrNjY+PjBdfDAsa1ttPj4yXXwwLDApfDA7a1tnPj4yXT1vO2lmKCEoa1tnPj4yXXwwKSl7Ymcoa1tmPj4yXXwwLGtbbT4+Ml18MCk7YnJlYWt9dUEoa1twPj4yXXwwLGtbbT4+Ml18MCk7Ymcoa1tmPj4yXXwwLGtbbT4+Ml18MCk7cj11O3JldHVybn13aGlsZSgwKTtvPVl6KGtbcD4+Ml18MCxrW2Q+PjJdfDAsa1tlPj4yXXwwLGgpfDA7a1txPj4yXT1vO2lmKChrW3E+PjJdfDApPDApe3I9dTtyZXR1cm59bz1ieChrW2Y+PjJdfDAsa1toPj4yXXwwKXwwO2tbbD4+Ml09bztpZighKGtbbD4+Ml18MCkpe3I9dTtyZXR1cm59a1tuPj4yXT1rWyhrWyhrW2Y+PjJdfDApKzE2Pj4yXXwwKSsoa1txPj4yXTw8NCk+PjJdO289RGkoa1tmPj4yXXwwLGtbbD4+Ml18MCxrW24+PjJdfDApfDA7a1tqPj4yXT1vO2lmKGtbaj4+Ml18MCl7dkEoa1twPj4yXXwwLGtbaj4+Ml18MCwwKTtiZyhrW2Y+PjJdfDAsa1tsPj4yXXwwKTtyPXU7cmV0dXJufWQ9VWooa1tmPj4yXXwwLGtbbD4+Ml18MCxrW24+PjJdfDApfDA7a1tzPj4yXT1kO2JnKGtbZj4+Ml18MCxrW2w+PjJdfDApO2Q9a1twPj4yXXwwO2lmKGtbcz4+Ml18MCl7QngoZCwwLGtbcT4+Ml18MCk7d0Eoa1twPj4yXXwwLGtbcz4+Ml18MCwtMSk7cj11O3JldHVybn1lbHNle09oKGQsMzEwMDcsdCk7cj11O3JldHVybn19ZnVuY3Rpb24gU3coYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGk9MCxqPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTA7cT1yO3I9cis0OHwwO2o9cSs0NHwwO2Q9cSs0MHwwO2U9cSszNnwwO2w9cSszMnwwO2c9cSsyOHwwO2Y9cSsyNHwwO3A9cSsyMHwwO2k9cSsxNnwwO249cSsxMnwwO209cSs4fDA7aD1xKzR8MDtvPXE7a1tqPj4yXT1hO2tbZD4+Ml09YjtrW2U+PjJdPWM7a1tsPj4yXT1rW2tbaj4+Ml0+PjJdO2lmKFV6KGtbaj4+Ml18MCl8MCl7cj1xO3JldHVybn1hOmRvIGlmKGtbZD4+Ml18MCl7aWYoa1soa1tlPj4yXXwwKSs0Pj4yXXwwKXthPVl6KGtbaj4+Ml18MCxrW2Q+PjJdfDAsa1tlPj4yXXwwLGgpfDA7a1tnPj4yXT1hO2lmKChrW2c+PjJdfDApPDApYnJlYWs7a1tpPj4yXT1rWyhrWyhrW2w+PjJdfDApKzE2Pj4yXXwwKSsoa1tnPj4yXTw8NCk+PjJdO2g9Yngoa1tsPj4yXXwwLGtbaD4+Ml18MCl8MDtrW3A+PjJdPWg7aWYoIShrW3A+PjJdfDApKWJyZWFrO2g9VWooa1tsPj4yXXwwLGtbcD4+Ml18MCxrW2k+PjJdfDApfDA7a1ttPj4yXT1oO2Q9a1tqPj4yXXwwO2lmKCFoKXttPU5oKGQsMCxrW3A+PjJdfDAsa1tpPj4yXXwwKXwwO2tbbj4+Ml09bTtpZihtKVh6KGtbaj4+Ml18MCxrW24+PjJdfDAsMCl9ZWxzZSBYeihkLGtbKGtbbT4+Ml18MCkrMTI+PjJdfDAsa1ttPj4yXXwwKTtiZyhrW2w+PjJdfDAsa1twPj4yXXwwKTticmVha31pPVd6KGtbbD4+Ml18MCxrW2Q+PjJdfDApfDA7a1tnPj4yXT1pO2lmKChrW2c+PjJdfDApPj0wKXtWeihrW2o+PjJdfDAsa1tnPj4yXXwwKTticmVha31pPWJ4KGtbbD4+Ml18MCxrW2Q+PjJdfDApfDA7a1twPj4yXT1pO2lmKGtbcD4+Ml18MCl7aT1VaihrW2w+PjJdfDAsa1twPj4yXXwwLDApfDA7a1ttPj4yXT1pO2Q9a1tqPj4yXXwwO2lmKCFpKXttPU5oKGQsMCxrW3A+PjJdfDAsMCl8MDtrW24+PjJdPW07aWYobSlYeihrW2o+PjJdfDAsa1tuPj4yXXwwLDApfWVsc2UgWHooZCxrWyhrW20+PjJdfDApKzEyPj4yXXwwLGtbbT4+Ml18MCk7Ymcoa1tsPj4yXXwwLGtbcD4+Ml18MCl9fWVsc2V7a1tmPj4yXT0wO3doaWxlKDEpe2lmKChrW2Y+PjJdfDApPj0oa1soa1tsPj4yXXwwKSsyMD4+Ml18MCkpYnJlYWsgYTtpZigoa1tmPj4yXXwwKSE9MSlWeihrW2o+PjJdfDAsa1tmPj4yXXwwKTtrW2Y+PjJdPShrW2Y+PjJdfDApKzF9fXdoaWxlKDApO3A9bngoa1tqPj4yXXwwKXwwO2tbbz4+Ml09cDtpZighKGtbbz4+Ml18MCkpe3I9cTtyZXR1cm59cHgoa1tvPj4yXXwwLDE1MCl8MDtyPXE7cmV0dXJufWZ1bmN0aW9uIFR3KGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsbT0wLG49MCxvPTAscD0wLHE9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MCxFPTA7RT1yO3I9cisxNzZ8MDt5PUUrOTZ8MDt4PUUrODB8MDt3PUUrNDB8MDt6PUUrMTZ8MDt2PUUrOHwwO2U9RTtmPUUrMTcyfDA7Zz1FKzE2OHwwO2Q9RSsxNjR8MDttPUUrMTYwfDA7QT1FKzE1NnwwO3E9RSsxNTJ8MDtCPUUrMTQ4fDA7aD1FKzE0NHwwO249RSsxNDB8MDtDPUUrMTM2fDA7dT1FKzEzMnwwO0Q9RSsxMjh8MDtzPUUrMTI0fDA7dD1FKzEyMHwwO2o9RSsxMTZ8MDtvPUUrMTEyfDA7cD1FKzEwOHwwO2tbZj4+Ml09YTtrW2c+PjJdPWI7a1tkPj4yXT1jO2tbQj4+Ml09MDtrW2g+PjJdPWtba1tmPj4yXT4+Ml07a1tEPj4yXT0wO2tbcz4+Ml09MDtrW3Q+PjJdPWtbKGtbaD4+Ml18MCkrMjQ+PjJdO2RvIGlmKCgoaVsoa1toPj4yXXwwKSs2OT4+MF18MCk9PTA/KGI9engoa1tmPj4yXXwwLDAsKGtbZz4+Ml18MCkrOHwwKXwwLGtbcT4+Ml09Yiwoa1txPj4yXXwwKSE9MCk6MCk/KGI9UGgoa1trW2Y+PjJdPj4yXXwwLGtbKGtbcT4+Ml18MCkrNjQ+PjJdfDApfDAsa1ttPj4yXT1iLGtbQT4+Ml09a1soa1soa1toPj4yXXwwKSsxNj4+Ml18MCkrKGtbbT4+Ml08PDQpPj4yXSxiPShrW2g+PjJdfDApKzI0fDAsa1tiPj4yXT1rW2I+PjJdfDIwOTcxNTIsYj1ieChrW2g+PjJdfDAsa1tkPj4yXXwwKXwwLGtbQj4+Ml09Yiwoa1tCPj4yXXwwKSE9MCk6MCl7aWYoKERpKGtbaD4+Ml18MCxrW0I+PjJdfDAsa1tBPj4yXXwwKXwwKT09MD8oVWooa1toPj4yXXwwLGtbQj4+Ml18MCxrW0E+PjJdfDApfDApPT0wOjApe2lmKEF4KGtbZj4+Ml18MCxrW2tbcT4+Ml0+PjJdfDApfDApYnJlYWs7aWYoYXkoa1tmPj4yXXwwLGtbQj4+Ml18MCl8MClicmVhaztkPWtbZj4+Ml18MDtpZihrWyhrW3E+PjJdfDApKzEyPj4yXXwwKXtrW3Y+PjJdPWtba1txPj4yXT4+Ml07T2goZCwyODMzNyx2KTticmVha31pZihreChkLDI2LGtbQT4+Ml18MCxrW2tbcT4+Ml0+PjJdfDAsMCl8MClicmVhaztpZihieShrW2Y+PjJdfDAsa1txPj4yXXwwKXwwKWJyZWFrO2lmKChsWyhrW3E+PjJdfDApKzQyPj4wXSYxNnwwKSE9MD8odj1jeShrW2g+PjJdfDAsa1txPj4yXXwwKXwwLGtbcz4+Ml09diwoa1soa1trWyhrW3M+PjJdfDApKzg+PjJdPj4yXXwwKSs3Nj4+Ml18MCk9PTApOjApa1tzPj4yXT0wO3Y9bngoa1tmPj4yXXwwKXwwO2tbdT4+Ml09djtpZighKGtbdT4+Ml18MCkpYnJlYWs7Qngoa1tmPj4yXXwwLChrW3M+PjJdfDApIT0wJjEsa1ttPj4yXXwwKTtveChrW2Y+PjJdfDAsa1ttPj4yXXwwKTtpZihrW3M+PjJdfDApe2U9KGtbZj4+Ml18MCkrNDR8MDt2PShrW2U+PjJdfDApKzF8MDtrW2U+PjJdPXY7a1tqPj4yXT12O3J4KGtbdT4+Ml18MCxrW2o+PjJdfDAsa1tCPj4yXXwwKXwwO3d4KGtbdT4+Ml18MCwxNTcsa1tqPj4yXXwwLDAsMCxrW3M+PjJdfDAsLTEwKXwwO2R5KGtbZj4+Ml18MCl9a1tDPj4yXT1rW2tbcT4+Ml0+PjJdO3Y9ZXkoa1tDPj4yXXwwLC0xKXwwO2tbbj4+Ml09djtpZigoa1soa1toPj4yXXwwKSsyND4+Ml0mNTI0Mjg4fDApIT0wPyh2PWZ5KGtbZj4+Ml18MCxrW3E+PjJdfDApfDAsa1tEPj4yXT12LCh2fDApIT0wKTowKXt2PWtbZj4+Ml18MDtlPShrW20+PjJdfDApPT0xPzE5OTA1OjE5OTI0O2o9a1tDPj4yXXwwO3M9a1tCPj4yXXwwO3U9a1tEPj4yXXwwO2tbej4+Ml09a1tBPj4yXTtrW3orND4+Ml09ZTtrW3orOD4+Ml09ajtrW3orMTI+PjJdPXM7a1t6KzE2Pj4yXT11O214KHYsMjgzNjQseik7Ymcoa1toPj4yXXwwLGtbRD4+Ml18MCl9ej1rW2Y+PjJdfDA7Yj0oa1ttPj4yXXwwKT09MT8xOTkwNToxOTkyNDtlPWtbQj4+Ml18MDtqPWtbQj4+Ml18MDttPWtbQj4+Ml18MDtzPWtbQj4+Ml18MDt1PWtbQj4+Ml18MDt2PWtbbj4+Ml18MDtDPWtbQz4+Ml18MDtrW3c+PjJdPWtbQT4+Ml07a1t3KzQ+PjJdPWI7a1t3Kzg+PjJdPWU7a1t3KzEyPj4yXT1qO2tbdysxNj4+Ml09bTtrW3crMjA+PjJdPXM7a1t3KzI0Pj4yXT11O2tbdysyOD4+Ml09djtrW3crMzI+PjJdPUM7bXgoeiwyODQzMyx3KTtpZihEaShrW2g+PjJdfDAsMjg4MTcsa1tBPj4yXXwwKXwwKXtDPWtbZj4+Ml18MDt3PWtbQj4+Ml18MDt6PWtba1txPj4yXT4+Ml18MDtrW3g+PjJdPWtbQT4+Ml07a1t4KzQ+PjJdPXc7a1t4Kzg+PjJdPXo7bXgoQywyODgzMyx4KX1DPUt4KGtbZj4+Ml18MCxrW3E+PjJdfDApfDA7a1tEPj4yXT1DO2lmKEMpe0M9a1tmPj4yXXwwO3o9a1tCPj4yXXwwO0E9a1tEPj4yXXwwO2tbeT4+Ml09a1tCPj4yXTtrW3krND4+Ml09ejtrW3krOD4+Ml09QTtteChDLDI4ODkxLHkpO2JnKGtbaD4+Ml18MCxrW0Q+PjJdfDApfWE6ZG8gaWYoa1soa1toPj4yXXwwKSsyND4+Ml0mNTI0Mjg4KXtEPWd5KGtbcT4+Ml18MCl8MDtrW28+PjJdPUQ7d2hpbGUoMSl7aWYoIShrW28+PjJdfDApKWJyZWFrIGE7a1twPj4yXT1rW2tbbz4+Ml0+PjJdO2lmKChrW3A+PjJdfDApIT0oa1txPj4yXXwwKSlJeChrW2Y+PjJdfDAsa1trW28+PjJdPj4yXXwwLGtba1twPj4yXT4+Ml18MCk7a1tvPj4yXT1rWyhrW28+PjJdfDApKzEyPj4yXX19d2hpbGUoMCk7SXgoa1tmPj4yXXwwLGtbcT4+Ml18MCxrW0I+PjJdfDApO2JyZWFrfUQ9a1tmPj4yXXwwO2tbZT4+Ml09a1tCPj4yXTtPaChELDI4Mjc4LGUpfXdoaWxlKDApO3J2KGtbaD4+Ml18MCxrW2c+PjJdfDApO2JnKGtbaD4+Ml18MCxrW0I+PjJdfDApO2tbKGtbaD4+Ml18MCkrMjQ+PjJdPWtbdD4+Ml07cj1FO3JldHVybn1mdW5jdGlvbiBVdyhhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wLGg9MCxtPTAsbj0wLG89MCxwPTAscT0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wLEU9MDtFPXI7cj1yKzE0NHwwO3c9RSs0MHwwO3Y9RSszMnwwO3o9RSsyNHwwO3k9RSsxNnwwO3g9RSs4fDA7dT1FO2M9RSsxMjh8MDtkPUUrMTI0fDA7bT1FKzEyMHwwO249RSsxMTZ8MDtmPUUrMTEyfDA7Qj1FKzEwOHwwO0Q9RSsxMDR8MDtBPUUrMTAwfDA7Zz1FKzk2fDA7aD1FKzkyfDA7ZT1FKzg4fDA7dD1FKzg0fDA7cD1FKzgwfDA7bz1FKzc2fDA7cT1FKzcyfDA7Qz1FKzY4fDA7cz1FKzY0fDA7a1tjPj4yXT1hO2tbZD4+Ml09YjtrW3Q+PjJdPWtbKGtbYz4+Ml18MCkrOD4+Ml07a1tlPj4yXT1rW2tbYz4+Ml0+PjJdO2lmKGtbKGtbYz4+Ml18MCkrMzY+PjJdfDApe3I9RTtyZXR1cm59aWYobFsoa1tlPj4yXXwwKSs2OT4+MF18MCl7cj1FO3JldHVybn1rW20+PjJdPWtbKGtbYz4+Ml18MCkrNDQwPj4yXTthPVBoKGtbZT4+Ml18MCxrWyhrW20+PjJdfDApKzY0Pj4yXXwwKXwwO2tbZj4+Ml09YTtrW0I+PjJdPWtbKGtbKGtbZT4+Ml18MCkrMTY+PjJdfDApKyhrW2Y+PjJdPDw0KT4+Ml07a1tEPj4yXT0oa1trW20+PjJdPj4yXXwwKSsxNjtrW2c+PjJdPShrWyhrW20+PjJdfDApKzQ+PjJdfDApKygoalsoa1ttPj4yXXwwKSszND4+MV18MCktMTw8NCk7a1toPj4yXT1rWyhrW2c+PjJdfDApKzQ+PjJdO2E9RGkoa1tlPj4yXXwwLGtbRD4+Ml18MCxrW0I+PjJdfDApfDA7a1tuPj4yXT1hO2lmKGt4KGtbYz4+Ml18MCwyNixrW0I+PjJdfDAsa1trW24+PjJdPj4yXXwwLDApfDApe3I9RTtyZXR1cm59aWYoKGtbaD4+Ml18MCkhPTA/KGxba1soa1toPj4yXXwwKSsxMj4+Ml0+PjBdfDApPT0xMDE6MClrW2g+PjJdPTA7aWYobFsoa1tnPj4yXXwwKSsxNT4+MF0mMSl7T2goa1tjPj4yXXwwLDI3ODgwLHUpO3I9RTtyZXR1cm59aWYoa1soa1ttPj4yXXwwKSs4Pj4yXXwwKXtPaChrW2M+PjJdfDAsMjc5MTIseCk7cj1FO3JldHVybn1pZigoa1soa1tlPj4yXXwwKSsyND4+Ml0mNTI0Mjg4fDApIT0wPygoa1toPj4yXXwwKSE9MD8oa1soa1ttPj4yXXwwKSsxNj4+Ml18MCkhPTA6MCk6MCl7T2goa1tjPj4yXXwwLDI3OTM5LHkpO3I9RTtyZXR1cm59aWYoISgoa1toPj4yXXwwKSE9MD8xOihsWyhrW2c+PjJdfDApKzEyPj4wXXwwKT09MCkpe09oKGtbYz4+Ml18MCwyNzk5OCx6KTtyPUU7cmV0dXJufWRvIGlmKGtbaD4+Ml18MCl7a1tvPj4yXT0wO3o9RXgoa1tlPj4yXXwwLGtbaD4+Ml18MCwxLDY1LG8pfDA7a1txPj4yXT16O2lmKGtbcT4+Ml18MCl7cj1FO3JldHVybn1pZihrW28+PjJdfDApe21oKGtbbz4+Ml18MCk7YnJlYWt9T2goa1tjPj4yXXwwLDI4MDUxLHYpO3I9RTtyZXR1cm59d2hpbGUoMCk7ej1neChrW2U+PjJdfDAsa1trW2Q+PjJdPj4yXXwwLGtbKGtbZD4+Ml18MCkrND4+Ml18MCwwKXwwO2tbQT4+Ml09ejtpZihrW0E+PjJdfDApe2tbQz4+Ml09KGtbQT4+Ml18MCkrKChrWyhrW2Q+PjJdfDApKzQ+PjJdfDApLTEpO2tbcz4+Ml09a1soa1tlPj4yXXwwKSsyND4+Ml07d2hpbGUoMSl7aWYoKGtbQz4+Ml18MCk+Pj4wPD0oa1tBPj4yXXwwKT4+PjApYnJlYWs7aWYoKGlba1tDPj4yXT4+MF18MCkhPTU5PyhsWzE4NDAzKyhsW2tbQz4+Ml0+PjBdfDApPj4wXSYxfDApPT0wOjApYnJlYWs7ej1rW0M+PjJdfDA7a1tDPj4yXT16Ky0xO2lbej4+MF09MH1DPShrW2U+PjJdfDApKzI0fDA7a1tDPj4yXT1rW0M+PjJdfDIwOTcxNTI7Qz1rW2M+PjJdfDA7dj0oa1tmPj4yXXwwKT09MT8xOTkwNToxOTkyNDt4PWtbKGtbbT4+Ml18MCkrNDQ+PjJdfDA7eT1rW0E+PjJdfDA7ej0oa1soa1ttPj4yXXwwKSs0ND4+Ml18MCkrMXwwO0Q9a1tEPj4yXXwwO2tbdz4+Ml09a1tCPj4yXTtrW3crND4+Ml09djtrW3crOD4+Ml09eDtrW3crMTI+PjJdPXk7a1t3KzE2Pj4yXT16O2tbdysyMD4+Ml09RDtteChDLDI4MDk3LHcpO2JnKGtbZT4+Ml18MCxrW0E+PjJdfDApO2tbKGtbZT4+Ml18MCkrMjQ+PjJdPWtbcz4+Ml19Qz1GeChrW2M+PjJdfDApfDA7a1twPj4yXT1DO3R4KGtbdD4+Ml18MCwxMDEsa1tmPj4yXXwwLGtbcD4+Ml18MCwyKXwwO1ZoKGtbdD4+Ml18MCxrW2Y+PjJdfDApO3N4KGtbdD4+Ml18MCw5MSxrW3A+PjJdfDAsLTIpfDA7Qz1rW3Q+PjJdfDA7RD1rW3A+PjJdfDA7c3goQyw2NixELChHeChrW3Q+PjJdfDApfDApKzJ8MCl8MDt0eChrW3Q+PjJdfDAsMTAyLGtbZj4+Ml18MCwyLDMpfDA7SHgoa1tjPj4yXXwwLGtbcD4+Ml18MCk7SXgoa1tjPj4yXXwwLGtbbj4+Ml18MCxrW2tbbj4+Ml0+PjJdfDApO3I9RTtyZXR1cm59ZnVuY3Rpb24gVncoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTAsbT0wLG49MCxvPTAscD0wLHE9MCxzPTAsdD0wLHU9MDt1PXI7cj1yKzY0fDA7dD11KzE2fDA7cz11Kzh8MDtjPXU7ZD11KzU2fDA7ZT11KzUyfDA7bz11KzQ4fDA7cD11KzQ0fDA7cT11KzQwfDA7aD11KzM2fDA7Zz11KzMyfDA7bT11KzI4fDA7Zj11KzI0fDA7bj11KzIwfDA7a1tkPj4yXT1hO2tbZT4+Ml09YjtrW2Y+PjJdPWtba1tkPj4yXT4+Ml07ZG8gaWYoKGlbKGtbZj4+Ml18MCkrNjk+PjBdfDApPT0wPyhiPXp4KGtbZD4+Ml18MCwwLChrW2U+PjJdfDApKzh8MCl8MCxrW3A+PjJdPWIsKGtbcD4+Ml18MCkhPTApOjApe2lmKGxbKGtbcD4+Ml18MCkrNDI+PjBdJjE2KXtPaChrW2Q+PjJdfDAsMjc2OTEsYyk7YnJlYWt9YT1rW2Q+PjJdfDA7aWYoa1soa1twPj4yXXwwKSsxMj4+Ml18MCl7T2goYSwyNzcyNSxzKTticmVha31pZigoKDA9PShBeChhLGtba1twPj4yXT4+Ml18MCl8MCk/KHM9UGgoa1tmPj4yXXwwLGtbKGtbcD4+Ml18MCkrNjQ+PjJdfDApfDAsa1toPj4yXT1zLHM9Q2goa1tmPj4yXXwwLDcyLDApfDAsa1tvPj4yXT1zLChrW28+PjJdfDApIT0wKTowKT8oa1soa1tkPj4yXXwwKSs0NDA+PjJdPWtbbz4+Ml0salsoa1tvPj4yXXwwKSszNj4+MV09MSxqWyhrW28+PjJdfDApKzM0Pj4xXT1qWyhrW3A+PjJdfDApKzM0Pj4xXXwwLGtbbT4+Ml09KCgoKGpbKGtbbz4+Ml18MCkrMzQ+PjFdfDApLTF8MCkvOHwwKTw8MykrOCxzPUNoKGtbZj4+Ml18MCxrW20+PjJdPDw0LDApfDAsa1soa1tvPj4yXXwwKSs0Pj4yXT1zLHM9a1tmPj4yXXwwLGtbdD4+Ml09a1trW3A+PjJdPj4yXSx0PVFoKHMsMjc3NTUsdCl8MCxrW2tbbz4+Ml0+PjJdPXQsKGtbKGtbbz4+Ml18MCkrND4+Ml18MCkhPTApOjApPyhrW2tbbz4+Ml0+PjJdfDApIT0wOjApe2JTKGtbKGtbbz4+Ml18MCkrND4+Ml18MCxrWyhrW3A+PjJdfDApKzQ+PjJdfDAsalsoa1tvPj4yXXwwKSszND4+MV08PDR8MCl8MDtrW2c+PjJdPTA7d2hpbGUoMSl7aWYoKGtbZz4+Ml18MCk+PShqWyhrW28+PjJdfDApKzM0Pj4xXXwwKSlicmVhaztrW24+PjJdPShrWyhrW28+PjJdfDApKzQ+PjJdfDApKyhrW2c+PjJdPDw0KTt0PUFoKGtbZj4+Ml18MCxrW2tbbj4+Ml0+PjJdfDApfDA7a1trW24+PjJdPj4yXT10O2tbKGtbbj4+Ml18MCkrOD4+Ml09MDtrWyhrW24+PjJdfDApKzQ+PjJdPTA7a1tnPj4yXT0oa1tnPj4yXXwwKSsxfWtbKGtbbz4+Ml18MCkrNjQ+PjJdPWtbKGtbKGtbZj4+Ml18MCkrMTY+PjJdfDApKyhrW2g+PjJdPDw0KSsxMj4+Ml07a1soa1tvPj4yXXwwKSs0ND4+Ml09a1soa1twPj4yXXwwKSs0ND4+Ml07alsoa1tvPj4yXXwwKSszNj4+MV09MTtCeChrW2Q+PjJdfDAsMCxrW2g+PjJdfDApO3Q9bngoa1tkPj4yXXwwKXwwO2tbcT4+Ml09dDtpZihrW3E+PjJdfDApb3goa1tkPj4yXXwwLGtbaD4+Ml18MCl9fXdoaWxlKDApO3J2KGtbZj4+Ml18MCxrW2U+PjJdfDApO3I9dTtyZXR1cm59ZnVuY3Rpb24gV3coYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHM9MCx0PTAsdT0wO3U9cjtyPXIrOTZ8MDtwPXUrMzJ8MDtvPXUrOHwwO249dTtjPXUrODB8MDtkPXUrNzZ8MDtsPXUrNzJ8MDtlPXUrNjh8MDtzPXUrNjR8MDt0PXUrNjB8MDtmPXUrNTZ8MDtnPXUrNTJ8MDttPXUrNDh8MDtoPXUrNDR8MDtqPXUrNDB8MDtxPXUrMzZ8MDtrW2M+PjJdPWE7a1tkPj4yXT1iO2tbbD4+Ml09a1soa1tjPj4yXXwwKSs0NDA+PjJdO2tbZT4+Ml09a1trW2M+PjJdPj4yXTtpZighKGtbbD4+Ml18MCkpe3I9dTtyZXR1cm59aXgoa1tjPj4yXXwwKTtrWyhrW2M+PjJdfDApKzQ1Mj4+Ml09MDtpZigoa1soa1tsPj4yXXwwKSs0OD4+Ml18MCk8MSl7cj11O3JldHVybn1pZighKGlbKGtbZT4+Ml18MCkrMTQ4KzU+PjBdfDApKXtpZihrW2Q+PjJdfDApa1soa1tjPj4yXXwwKSszODQrND4+Ml09KGtba1tkPj4yXT4+Ml18MCktKGtbKGtbYz4+Ml18MCkrMzg0Pj4yXXwwKSsoa1soa1tkPj4yXXwwKSs0Pj4yXXwwKTtxPWtbZT4+Ml18MDtrW24+PjJdPShrW2M+PjJdfDApKzM4NDtxPVFoKHEsMjc1NTIsbil8MDtrW3M+PjJdPXE7cT1QaChrW2U+PjJdfDAsa1soa1tsPj4yXXwwKSs2ND4+Ml18MCl8MDtrW2Y+PjJdPXE7cT1rW2M+PjJdfDA7Yj0oa1tmPj4yXXwwKT09MT8xOTkwNToxOTkyNDtoPWtba1tsPj4yXT4+Ml18MDthPWtba1tsPj4yXT4+Ml18MDtqPWtbcz4+Ml18MDtuPWtbKGtbYz4+Ml18MCkrMTAwPj4yXXwwO2tbbz4+Ml09a1soa1soa1tlPj4yXXwwKSsxNj4+Ml18MCkrKGtbZj4+Ml08PDQpPj4yXTtrW28rND4+Ml09YjtrW28rOD4+Ml09aDtrW28rMTI+PjJdPWE7a1tvKzE2Pj4yXT1qO2tbbysyMD4+Ml09bjtteChxLDI3NTc2LG8pO2JnKGtbZT4+Ml18MCxrW3M+PjJdfDApO3M9bngoa1tjPj4yXXwwKXwwO2tbbT4+Ml09cztveChrW2M+PjJdfDAsa1tmPj4yXXwwKTtweChrW20+PjJdfDAsMTUwKXwwO3M9a1tlPj4yXXwwO2tbcD4+Ml09a1trW2w+PjJdPj4yXTtzPVFoKHMsMjc2NjQscCl8MDtrW3Q+PjJdPXM7cXgoa1ttPj4yXXwwLGtbZj4+Ml18MCxrW3Q+PjJdfDApO3M9KGtbYz4+Ml18MCkrNDR8MDt0PShrW3M+PjJdfDApKzF8MDtrW3M+PjJdPXQ7a1tnPj4yXT10O3J4KGtbbT4+Ml18MCxrW2c+PjJdfDAsa1trW2w+PjJdPj4yXXwwKXwwO3N4KGtbbT4+Ml18MCwxNTMsa1tmPj4yXXwwLGtbZz4+Ml18MCl8MDtyPXU7cmV0dXJufWtbaj4+Ml09a1soa1tsPj4yXXwwKSs2ND4+Ml07a1txPj4yXT1rW2tbbD4+Ml0+PjJdO3Q9Y2soKGtbaj4+Ml18MCkrOHwwLGtbcT4+Ml18MCxrW2w+PjJdfDApfDA7a1toPj4yXT10O2lmKGtbaD4+Ml18MCl7d2goa1tlPj4yXXwwKTtyPXU7cmV0dXJufWVsc2V7a1soa1tjPj4yXXwwKSs0NDA+PjJdPTA7cj11O3JldHVybn19ZnVuY3Rpb24gWHcoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLG09MCxuPTAsbz0wLHA9MCxxPTA7bj1yO3I9ciszMnwwO2Y9bisyOHwwO3E9bisyNHwwO3A9bisyMHwwO2c9bisxNnwwO289bisxMnwwO2o9bis4fDA7bT1uKzR8MDtoPW47a1tmPj4yXT1hO2tbcT4+Ml09YjtrW3A+PjJdPWM7a1tnPj4yXT1kO2tbbz4+Ml09ZTtKdihrW2Y+PjJdfDAsa1txPj4yXXwwLGtbcD4+Ml18MCwwLDAsMSxrW28+PjJdfDApO2tbbT4+Ml09a1soa1tmPj4yXXwwKSs0NDA+PjJdO2lmKCEoa1ttPj4yXXwwKSl7cj1uO3JldHVybn1rW2g+PjJdPWtba1tmPj4yXT4+Ml07cT1QaChrW2g+PjJdfDAsa1soa1ttPj4yXXwwKSs2ND4+Ml18MCl8MDtrW2o+PjJdPXE7cT0oa1ttPj4yXXwwKSs0MnwwO2lbcT4+MF09bFtxPj4wXXwwfDE2O2tbKGtbbT4+Ml18MCkrNDg+PjJdPTA7cT1rW2g+PjJdfDA7cD1rW20+PjJdfDA7angocSxwLGJ4KGtbaD4+Ml18MCxrW2c+PjJdfDApfDApO2p4KGtbaD4+Ml18MCxrW20+PjJdfDAsMCk7cD1rW2g+PjJdfDA7cT1rW20+PjJdfDA7angocCxxLEFoKGtbaD4+Ml18MCxrW2tbbT4+Ml0+PjJdfDApfDApO2tbKGtbZj4+Ml18MCkrMzg0KzQ+PjJdPShrW2tbZz4+Ml0+PjJdfDApKyhrWyhrW2c+PjJdfDApKzQ+PjJdfDApLShrWyhrW2Y+PjJdfDApKzM4ND4+Ml18MCk7aWYoIShrWyhrW20+PjJdfDApKzUyPj4yXXwwKSl7cj1uO3JldHVybn1reChrW2Y+PjJdfDAsMjksa1trW20+PjJdPj4yXXwwLGtba1soa1ttPj4yXXwwKSs1Mj4+Ml0+PjJdfDAsa1soa1soa1trW2Y+PjJdPj4yXXwwKSsxNj4+Ml18MCkrKGtbaj4+Ml08PDQpPj4yXXwwKXwwO3I9bjtyZXR1cm59ZnVuY3Rpb24gWXcoYSl7YT1hfDA7dmFyIGI9MCxjPTA7Yj1yO3I9cisxNnwwO2M9YjtrW2M+PjJdPWE7aXgoa1tjPj4yXXwwKTtrWyhrW2M+PjJdfDApKzQ1Mj4+Ml09MDtrWyhrW2M+PjJdfDApKzQ1Mis0Pj4yXT0wO3I9YjtyZXR1cm59ZnVuY3Rpb24gWncoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wO2U9cjtyPXIrMTZ8MDtmPWUrOHwwO2M9ZSs0fDA7ZD1lO2tbZj4+Ml09YTtrW2M+PjJdPWI7a1tkPj4yXT0oa1tmPj4yXXwwKSs0NTI7Yj1rW2M+PjJdfDA7aWYoIShrW2tbZD4+Ml0+PjJdfDApKXtrW2tbZD4+Ml0+PjJdPWtbYj4+Ml07a1soa1tkPj4yXXwwKSs0Pj4yXT1rWyhrW2M+PjJdfDApKzQ+PjJdO3I9ZTtyZXR1cm59ZWxzZXtrWyhrW2Q+PjJdfDApKzQ+PjJdPShrW2tbYz4+Ml0+PjJdfDApKyhrW2IrND4+Ml18MCktKGtba1tkPj4yXT4+Ml18MCk7cj1lO3JldHVybn19ZnVuY3Rpb24gX3coYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHM9MCx0PTA7cz1yO3I9cis0OHwwO3A9cztmPXMrNDB8MDtnPXMrMzZ8MDt0PXMrMzJ8MDtoPXMrMjh8MDtqPXMrMjR8MDtsPXMrMjB8MDtvPXMrMTZ8MDtxPXMrMTJ8MDttPXMrOHwwO249cys0fDA7a1tmPj4yXT1hO2tbZz4+Ml09YjtrW3Q+PjJdPWM7a1toPj4yXT1kO2tbaj4+Ml09ZTtrW2w+PjJdPWtba1tmPj4yXT4+Ml07Yj1ieChrW2tbZj4+Ml0+PjJdfDAsa1t0Pj4yXXwwKXwwO2tbcT4+Ml09YjthOmRvIGlmKChrW3E+PjJdfDApIT0wJihrW2c+PjJdfDApIT0wKXtrW20+PjJdPTA7d2hpbGUoMSl7aWYoKGtbbT4+Ml18MCk+PShrW2tbZz4+Ml0+PjJdfDApKWJyZWFrIGE7aWYoIShzZyhrW3E+PjJdfDAsa1soa1tnPj4yXXwwKSs4KyhrW20+PjJdPDw0KT4+Ml18MCl8MCkpe3Q9a1tmPj4yXXwwO2tbcD4+Ml09a1txPj4yXTtPaCh0LDI3NDg0LHApfWtbbT4+Ml09KGtbbT4+Ml18MCkrMX19d2hpbGUoMCk7aWYoa1tnPj4yXXwwKXtrW24+PjJdPTI0KyhrW2tbZz4+Ml0+PjJdPDw0KTt0PWtbbj4+Ml18MDt0PWN4KGtbbD4+Ml18MCxrW2c+PjJdfDAsdCwoKHR8MCk8MCk8PDMxPj4zMSl8MDtrW28+PjJdPXR9ZWxzZXt0PUNoKGtbbD4+Ml18MCwyNCwwKXwwO2tbbz4+Ml09dH1pZihpWyhrW2w+PjJdfDApKzY5Pj4wXXwwKXtvdihrW2w+PjJdfDAsa1toPj4yXXwwKTtwdihrW2w+PjJdfDAsa1tqPj4yXXwwKTtiZyhrW2w+PjJdfDAsa1txPj4yXXwwKTtrW28+PjJdPWtbZz4+Ml07dD1rW28+PjJdfDA7cj1zO3JldHVybiB0fDB9ZWxzZXtrWyhrW28+PjJdfDApKzgrKGtba1tvPj4yXT4+Ml08PDQpKzg+PjJdPWtbaj4+Ml07a1soa1tvPj4yXXwwKSs4KyhrW2tbbz4+Ml0+PjJdPDw0KSs0Pj4yXT1rW2g+PjJdO2tbKGtbbz4+Ml18MCkrOCsoa1trW28+PjJdPj4yXTw8NCk+PjJdPWtbcT4+Ml07a1soa1tvPj4yXXwwKSs4KyhrW2tbbz4+Ml0+PjJdPDw0KSsxMj4+Ml09MDt0PWtbbz4+Ml18MDtrW3Q+PjJdPShrW3Q+PjJdfDApKzE7dD1rW28+PjJdfDA7cj1zO3JldHVybiB0fDB9cmV0dXJuIDB9ZnVuY3Rpb24gJHcoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wO2Q9cjtyPXIrMTZ8MDtmPWQrNHwwO2U9ZCs4fDA7Yz1kO2tbZj4+Ml09YTtpW2U+PjBdPWI7a1tjPj4yXT1qWzEwODA2KyhrW2Y+PjJdPDwxKT4+MV07a1tjPj4yXT0oa1tjPj4yXXwwKSsobFtlPj4wXXwwKTtyPWQ7cmV0dXJuIG1bMTE0NTYrKGtbYz4+Ml08PDEpPj4xXXwwfWZ1bmN0aW9uIGF4KGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MDtiPXI7cj1yKzE2fDA7Yz1iKzR8MDtkPWI7a1tjPj4yXT1hO2tbZD4+Ml09a1soa1tjPj4yXXwwKSs0Pj4yXTtrWyhrW2M+PjJdfDApKzQ+PjJdPWtbZD4+Ml07cj1iO3JldHVybn1mdW5jdGlvbiBieChhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTA7Zj1yO3I9cisxNnwwO2M9Zis4fDA7ZD1mKzR8MDtlPWY7a1tjPj4yXT1hO2tbZD4+Ml09YjtpZihrW2Q+PjJdfDApe2I9Z3goa1tjPj4yXXwwLGtba1tkPj4yXT4+Ml18MCxrWyhrW2Q+PjJdfDApKzQ+PjJdfDAsMCl8MDtrW2U+PjJdPWI7aHgoa1tlPj4yXXwwKTtlPWtbZT4+Ml18MDtyPWY7cmV0dXJuIGV8MH1lbHNle2tbZT4+Ml09MDtlPWtbZT4+Ml18MDtyPWY7cmV0dXJuIGV8MH1yZXR1cm4gMH1mdW5jdGlvbiBjeChhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGk9MDtpPXI7cj1yKzMyfDA7ZT1pKzE2fDA7Zj1pKzEyfDA7Zz1pKzh8MDtoPWk7a1tmPj4yXT1hO2tbZz4+Ml09YjtiPWg7a1tiPj4yXT1jO2tbYis0Pj4yXT1kO2M9a1tmPj4yXXwwO2lmKCEoa1tnPj4yXXwwKSl7aD1keChjLGtbaD4+Ml18MCxrW2grND4+Ml18MCl8MDtrW2U+PjJdPWg7aD1rW2U+PjJdfDA7cj1pO3JldHVybiBofDB9aWYoKHZ1KGMsa1tnPj4yXXwwKXwwKSE9MD8oYj1oLGE9a1tiKzQ+PjJdfDAsYT4+PjA8MHwoKGF8MCk9PTA/KGtbYj4+Ml18MCk+Pj4wPD0obVsoa1tmPj4yXXwwKSsyNTYrND4+MV18MCk+Pj4wOjApKTowKXtrW2U+PjJdPWtbZz4+Ml07aD1rW2U+PjJdfDA7cj1pO3JldHVybiBofDB9aD1leChrW2Y+PjJdfDAsa1tnPj4yXXwwLGtbaD4+Ml18MCxrW2grND4+Ml18MCl8MDtrW2U+PjJdPWg7aD1rW2U+PjJdfDA7cj1pO3JldHVybiBofDB9ZnVuY3Rpb24gZHgoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wO2g9cjtyPXIrMzJ8MDtkPWgrMTZ8MDtlPWgrMTJ8MDtmPWg7Zz1oKzh8MDtrW2U+PjJdPWE7YT1mO2tbYT4+Ml09YjtrW2ErND4+Ml09YztkbyBpZihrWyhrW2U+PjJdfDApKzI1Nj4+Ml18MCl7aWYoaVsoa1tlPj4yXXwwKSs2OT4+MF18MCl7a1tkPj4yXT0wO2c9a1tkPj4yXXwwO3I9aDtyZXR1cm4gZ3wwfX1lbHNle2E9ZjtjPWtbYSs0Pj4yXXwwO2I9KGtbZT4+Ml18MCkrMjU2fDA7aWYoYz4+PjA+MHwoKGN8MCk9PTA/KGtbYT4+Ml18MCk+Pj4wPihtWyhrW2U+PjJdfDApKzI1Nis0Pj4xXXwwKT4+PjA6MCkpe2c9YisxNis0fDA7a1tnPj4yXT0oa1tnPj4yXXwwKSsxO2JyZWFrfWE9a1tiKzI4Pj4yXXwwO2tbZz4+Ml09YTtpZighYSl7Zz0oa1tlPj4yXXwwKSsyNTYrMTYrOHwwO2tbZz4+Ml09KGtbZz4+Ml18MCkrMTticmVha31rWyhrW2U+PjJdfDApKzI1NisyOD4+Ml09a1trW2c+PjJdPj4yXTtmPShrW2U+PjJdfDApKzI1Nis4fDA7a1tmPj4yXT0oa1tmPj4yXXwwKSsxO2Y9KGtbZT4+Ml18MCkrMjU2KzE2fDA7a1tmPj4yXT0oa1tmPj4yXXwwKSsxO2lmKChrWyhrW2U+PjJdfDApKzI1Nis4Pj4yXXwwKT4oa1soa1tlPj4yXXwwKSsyNTYrMTI+PjJdfDApKWtbKGtbZT4+Ml18MCkrMjU2KzEyPj4yXT1rWyhrW2U+PjJdfDApKzI1Nis4Pj4yXTtrW2Q+PjJdPWtbZz4+Ml07Zz1rW2Q+PjJdfDA7cj1oO3JldHVybiBnfDB9d2hpbGUoMCk7Zz1mO2c9Zngoa1tlPj4yXXwwLGtbZz4+Ml18MCxrW2crND4+Ml18MCl8MDtrW2Q+PjJdPWc7Zz1rW2Q+PjJdfDA7cj1oO3JldHVybiBnfDB9ZnVuY3Rpb24gZXgoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxpPTA7aT1yO3I9ciszMnwwO2U9aSsxNnwwO2Y9aSsxMnwwO2c9aTtoPWkrOHwwO2tbZT4+Ml09YTtrW2Y+PjJdPWI7Yj1nO2tbYj4+Ml09YztrW2IrND4+Ml09ZDtrW2g+PjJdPTA7aWYobFsoa1tlPj4yXXwwKSs2OT4+MF18MCl7aD1rW2g+PjJdfDA7cj1pO3JldHVybiBofDB9aWYodnUoa1tlPj4yXXwwLGtbZj4+Ml18MCl8MCl7Yj1nO2I9ZHgoa1tlPj4yXXwwLGtbYj4+Ml18MCxrW2IrND4+Ml18MCl8MDtrW2g+PjJdPWI7aWYoIShrW2g+PjJdfDApKXtoPWtbaD4+Ml18MDtyPWk7cmV0dXJuIGh8MH1iUyhrW2g+PjJdfDAsa1tmPj4yXXwwLG1bKGtbZT4+Ml18MCkrMjU2KzQ+PjFdfDB8MCl8MDtiZyhrW2U+PjJdfDAsa1tmPj4yXXwwKTtoPWtbaD4+Ml18MDtyPWk7cmV0dXJuIGh8MH1lbHNle2I9ZztiPVdkKGtbZj4+Ml18MCxrW2I+PjJdfDAsa1tiKzQ+PjJdfDApfDA7a1toPj4yXT1iO2lmKGtbaD4+Ml18MCl7aD1rW2g+PjJdfDA7cj1pO3JldHVybiBofDB9d2goa1tlPj4yXXwwKTtoPWtbaD4+Ml18MDtyPWk7cmV0dXJuIGh8MH1yZXR1cm4gMH1mdW5jdGlvbiBmeChhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MDtmPXI7cj1yKzE2fDA7ZD1mKzEyfDA7Zz1mO2U9Zis4fDA7a1tkPj4yXT1hO2E9ZztrW2E+PjJdPWI7a1thKzQ+PjJdPWM7YT1nO2E9amcoa1thPj4yXXwwLGtbYSs0Pj4yXXwwKXwwO2tbZT4+Ml09YTtpZihrW2U+PjJdfDApe2c9a1tlPj4yXXwwO3I9ZjtyZXR1cm4gZ3wwfXdoKGtbZD4+Ml18MCk7Zz1rW2U+PjJdfDA7cj1mO3JldHVybiBnfDB9ZnVuY3Rpb24gZ3goYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTAsbD0wO2w9cjtyPXIrMzJ8MDtlPWwrMjB8MDtmPWwrMTZ8MDtnPWwrMTJ8MDtoPWw7aj1sKzh8MDtrW2Y+PjJdPWE7a1tnPj4yXT1iO2I9aDtrW2I+PjJdPWM7a1tiKzQ+PjJdPWQ7aWYoIShrW2c+PjJdfDApKXtrW2U+PjJdPTA7aj1rW2U+PjJdfDA7cj1sO3JldHVybiBqfDB9YT1rW2Y+PjJdfDA7Yj1oO2I9JFIoa1tiPj4yXXwwLGtbYis0Pj4yXXwwLDEsMCl8MDtiPWR4KGEsYixMKXwwO2tbaj4+Ml09YjtpZihrW2o+PjJdfDApe2JTKGtbaj4+Ml18MCxrW2c+PjJdfDAsa1toPj4yXXwwKXwwO2lbKGtbaj4+Ml18MCkrKGtbaD4+Ml18MCk+PjBdPTB9a1tlPj4yXT1rW2o+PjJdO2o9a1tlPj4yXXwwO3I9bDtyZXR1cm4ganwwfWZ1bmN0aW9uIGh4KGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MCxlPTAsZj0wLGc9MDtmPXI7cj1yKzE2fDA7Yj1mKzh8MDtlPWYrMTJ8MDtjPWYrNHwwO2Q9ZjtrW2I+PjJdPWE7aWYoIShrW2I+PjJdfDApKXtyPWY7cmV0dXJufWlbZT4+MF09aVtrW2I+PjJdPj4wXXwwO2lmKCEobFsxODQwMysobFtlPj4wXXwwKT4+MF0mMTI4KSl7cj1mO3JldHVybn1pZigoaVtlPj4wXXwwKT09OTEpaVtlPj4wXT05MztrW2M+PjJdPTE7a1tkPj4yXT0wO3doaWxlKDEpe2E9a1tjPj4yXXwwO2lmKChpWyhrW2I+PjJdfDApKyhrW2M+PjJdfDApPj4wXXwwKT09KGlbZT4+MF18MCkpe2lmKChpWyhrW2I+PjJdfDApKyhhKzEpPj4wXXwwKSE9KGlbZT4+MF18MCkpYnJlYWs7Zz1pW2U+PjBdfDA7YT1rW2Q+PjJdfDA7a1tkPj4yXT1hKzE7aVsoa1tiPj4yXXwwKSthPj4wXT1nO2tbYz4+Ml09KGtbYz4+Ml18MCkrMX1lbHNle2E9aVsoa1tiPj4yXXwwKSthPj4wXXwwO2c9a1tkPj4yXXwwO2tbZD4+Ml09ZysxO2lbKGtbYj4+Ml18MCkrZz4+MF09YX1rW2M+PjJdPShrW2M+PjJdfDApKzF9aVsoa1tiPj4yXXwwKSsoa1tkPj4yXXwwKT4+MF09MDtyPWY7cmV0dXJufWZ1bmN0aW9uIGl4KGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MCxlPTAsZj0wLGc9MDtmPXI7cj1yKzE2fDA7Yj1mKzEyfDA7ZT1mKzh8MDtkPWYrNHwwO2M9ZjtrW2I+PjJdPWE7aWYoIShrWyhrW2I+PjJdfDApKzQ1Mj4+Ml18MCkpe3I9ZjtyZXR1cm59aWYoIShrWyhrW2I+PjJdfDApKzQ0MD4+Ml18MCkpe3I9ZjtyZXR1cm59a1tlPj4yXT1rWyhrW2I+PjJdfDApKzQ1Mj4+Ml07a1tkPj4yXT1rWyhrW2I+PjJdfDApKzQ1Mis0Pj4yXTtrW2M+PjJdPWtba1tiPj4yXT4+Ml07Zz1rW2M+PjJdfDA7Yj1rWyhrW2I+PjJdfDApKzQ0MD4+Ml18MDthPWtbZD4+Ml18MDtqeChnLGIsZ3goa1tjPj4yXXwwLGtbZT4+Ml18MCxhLCgoYXwwKTwwKTw8MzE+PjMxKXwwKTtyPWY7cmV0dXJufWZ1bmN0aW9uIGp4KGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxpPTAsaj0wO2k9cjtyPXIrMzJ8MDtkPWkrMjB8MDtlPWkrMTZ8MDtmPWkrMTJ8MDtqPWkrOHwwO2c9aSs0fDA7aD1pO2tbZD4+Ml09YTtrW2U+PjJdPWI7a1tmPj4yXT1jO2tbaj4+Ml09Misoa1soa1tlPj4yXXwwKSs0OD4+Ml18MCk8PDI7Yz1rW2o+PjJdfDA7Yz1jeChrW2Q+PjJdfDAsa1soa1tlPj4yXXwwKSs1Mj4+Ml18MCxjLCgoY3wwKTwwKTw8MzE+PjMxKXwwO2tbZz4+Ml09YztpZighKGtbZz4+Ml18MCkpe2JnKGtbZD4+Ml18MCxrW2Y+PjJdfDApO3I9aTtyZXR1cm59ZWxzZXtjPShrW2U+PjJdfDApKzQ4fDA7aj1rW2M+PjJdfDA7a1tjPj4yXT1qKzE7a1toPj4yXT1qO2tbKGtbZz4+Ml18MCkrKGtbaD4+Ml08PDIpPj4yXT1rW2Y+PjJdO2tbKGtbZz4+Ml18MCkrKChrW2g+PjJdfDApKzE8PDIpPj4yXT0wO2tbKGtbZT4+Ml18MCkrNTI+PjJdPWtbZz4+Ml07cj1pO3JldHVybn19ZnVuY3Rpb24ga3goYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaT0wLGo9MCxtPTAsbj0wLG89MCxwPTAscT0wO3E9cjtyPXIrNDh8MDtwPXE7Zj1xKzMyfDA7Zz1xKzI4fDA7aD1xKzI0fDA7aT1xKzIwfDA7aj1xKzE2fDA7bT1xKzEyfDA7bj1xKzh8MDtvPXErNHwwO2tbZz4+Ml09YTtrW2g+PjJdPWI7a1tpPj4yXT1jO2tbaj4+Ml09ZDtrW20+PjJdPWU7a1tuPj4yXT1rW2tbZz4+Ml0+PjJdO2lmKChsWyhrW24+PjJdfDApKzE0OCs1Pj4wXXwwfDApPT0wPyhsWyhrW2c+PjJdfDApKzQxMD4+MF18MHwwKT09MDowKXtpZighKGtbKGtbbj4+Ml18MCkrMjk2Pj4yXXwwKSl7a1tmPj4yXT0wO2U9a1tmPj4yXXwwO3I9cTtyZXR1cm4gZXwwfWU9YWNba1soa1tuPj4yXXwwKSsyOTY+PjJdJjI1NV0oa1soa1tuPj4yXXwwKSszMDA+PjJdfDAsa1toPj4yXXwwLGtbaT4+Ml18MCxrW2o+PjJdfDAsa1ttPj4yXXwwLGtbKGtbZz4+Ml18MCkrNDQ4Pj4yXXwwKXwwO2tbbz4+Ml09ZTtpZigoa1tvPj4yXXwwKSE9MSl7aWYoKGtbbz4+Ml18MCkhPTAmKGtbbz4+Ml18MCkhPTIpe2tbbz4+Ml09MTtseChrW2c+PjJdfDApfX1lbHNle09oKGtbZz4+Ml18MCwyNzUxNCxwKTtrWyhrW2c+PjJdfDApKzEyPj4yXT0yM31rW2Y+PjJdPWtbbz4+Ml07ZT1rW2Y+PjJdfDA7cj1xO3JldHVybiBlfDB9a1tmPj4yXT0wO2U9a1tmPj4yXXwwO3I9cTtyZXR1cm4gZXwwfWZ1bmN0aW9uIGx4KGEpe2E9YXwwO3ZhciBiPTAsYz0wO2I9cjtyPXIrMTZ8MDtjPWIrNHwwO2tbYz4+Ml09YTtPaChrW2M+PjJdfDAsMjc1MjksYik7a1soa1tjPj4yXXwwKSsxMj4+Ml09MTtyPWI7cmV0dXJufWZ1bmN0aW9uIG14KGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsbD0wLG09MDttPXI7cj1yKzEyOHwwO2Y9bSszNnwwO2Q9bSszMnwwO2U9bSsxNnwwO2w9bSs4fDA7aj1tKzR8MDtnPW07aD1tKzQwfDA7a1tmPj4yXT1hO2tbZD4+Ml09YjtrW2o+PjJdPTA7a1tnPj4yXT1rW2tbZj4+Ml0+PjJdO2lmKGtbKGtbZj4+Ml18MCkrMzY+PjJdfDApe3I9bTtyZXR1cm59a1tlPj4yXT1jO2I9eXgoa1tnPj4yXXwwLGtbZD4+Ml18MCxlKXwwO2tbbD4+Ml09YjtpZighKGtbbD4+Ml18MCkpe3I9bTtyZXR1cm59ZD0oa1tmPj4yXXwwKSsxOHwwO2lbZD4+MF09KGlbZD4+MF18MCkrMTw8MjQ+PjI0O2Q9aDtlPShrW2Y+PjJdfDApKzQwMHwwO2E9ZCs4MHwwO2Rve2lbZD4+MF09aVtlPj4wXXwwO2Q9ZCsxfDA7ZT1lKzF8MH13aGlsZSgoZHwwKTwoYXwwKSk7ZD0oa1tmPj4yXXwwKSs0MDB8MDthPWQrODB8MDtkb3tpW2Q+PjBdPTA7ZD1kKzF8MH13aGlsZSgoZHwwKTwoYXwwKSk7Z2koa1tmPj4yXXwwLGtbbD4+Ml18MCxqKXwwO2JnKGtbZz4+Ml18MCxrW2o+PjJdfDApO2JnKGtbZz4+Ml18MCxrW2w+PjJdfDApO2Q9KGtbZj4+Ml18MCkrNDAwfDA7ZT1oO2E9ZCs4MHwwO2Rve2lbZD4+MF09aVtlPj4wXXwwO2Q9ZCsxfDA7ZT1lKzF8MH13aGlsZSgoZHwwKTwoYXwwKSk7bD0oa1tmPj4yXXwwKSsxOHwwO2lbbD4+MF09KGlbbD4+MF18MCkrLTE8PDI0Pj4yNDtyPW07cmV0dXJufWZ1bmN0aW9uIG54KGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MDtkPXI7cj1yKzE2fDA7Yj1kKzR8MDtjPWQ7a1tiPj4yXT1hO2tbYz4+Ml09a1soa1tiPj4yXXwwKSs4Pj4yXTtpZihrW2M+PjJdfDApe2M9a1tjPj4yXXwwO3I9ZDtyZXR1cm4gY3wwfWVsc2V7Yz14eChrW2I+PjJdfDApfDA7cj1kO3JldHVybiBjfDB9cmV0dXJuIDB9ZnVuY3Rpb24gb3goYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MDtjPXI7cj1yKzE2fDA7Zz1jKzEyfDA7ZD1jKzh8MDtlPWMrNHwwO2Y9YztrW2c+PjJdPWE7a1tkPj4yXT1iO2tbZT4+Ml09a1trW2c+PjJdPj4yXTtrW2Y+PjJdPWtbKGtbZz4+Ml18MCkrOD4+Ml07dHgoa1tmPj4yXXwwLDEwMixrW2Q+PjJdfDAsMSwoa1trWyhrWyhrW2U+PjJdfDApKzE2Pj4yXXwwKSsoa1tkPj4yXTw8NCkrMTI+PjJdPj4yXXwwKSsxfDApfDA7cj1jO3JldHVybn1mdW5jdGlvbiBweChhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MDtjPXI7cj1yKzE2fDA7ZT1jKzR8MDtkPWM7a1tlPj4yXT1hO2tbZD4+Ml09YjthPXR4KGtbZT4+Ml18MCxrW2Q+PjJdfDAsMCwwLDApfDA7cj1jO3JldHVybiBhfDB9ZnVuY3Rpb24gcXgoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wO2Y9cjtyPXIrMTZ8MDtkPWYrMTJ8MDtoPWYrOHwwO2c9Zis0fDA7ZT1mO2tbZD4+Ml09YTtrW2g+PjJdPWI7a1tnPj4yXT1jO3d4KGtbZD4+Ml18MCwxMzYsa1toPj4yXXwwLDAsMCxrW2c+PjJdfDAsLTEpfDA7a1tlPj4yXT0wO3doaWxlKDEpe2lmKChrW2U+PjJdfDApPj0oa1soa1trW2Q+PjJdPj4yXXwwKSsyMD4+Ml18MCkpYnJlYWs7Vmgoa1tkPj4yXXwwLGtbZT4+Ml18MCk7a1tlPj4yXT0oa1tlPj4yXXwwKSsxfXI9ZjtyZXR1cm59ZnVuY3Rpb24gcngoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTA7ZD1yO3I9cisxNnwwO2c9ZCs4fDA7Zj1kKzR8MDtlPWQ7a1tnPj4yXT1hO2tbZj4+Ml09YjtrW2U+PjJdPWM7Yz13eChrW2c+PjJdfDAsOTcsMCxrW2Y+PjJdfDAsMCxrW2U+PjJdfDAsMCl8MDtyPWQ7cmV0dXJuIGN8MH1mdW5jdGlvbiBzeChhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGk9MDtlPXI7cj1yKzE2fDA7aT1lKzEyfDA7aD1lKzh8MDtnPWUrNHwwO2Y9ZTtrW2k+PjJdPWE7a1toPj4yXT1iO2tbZz4+Ml09YztrW2Y+PjJdPWQ7ZD10eChrW2k+PjJdfDAsa1toPj4yXXwwLGtbZz4+Ml18MCxrW2Y+PjJdfDAsMCl8MDtyPWU7cmV0dXJuIGR8MH1mdW5jdGlvbiB0eChhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsbD0wLG09MCxuPTAsbz0wLHA9MDtwPXI7cj1yKzMyfDA7Zj1wKzI4fDA7Zz1wKzI0fDA7aD1wKzIwfDA7aj1wKzE2fDA7bD1wKzEyfDA7bT1wKzh8MDtuPXArNHwwO289cDtrW2c+PjJdPWE7a1toPj4yXT1iO2tbaj4+Ml09YztrW2w+PjJdPWQ7a1ttPj4yXT1lO2tbbj4+Ml09a1soa1tnPj4yXXwwKSsxMzY+PjJdO2I9a1tnPj4yXXwwO2lmKChrWyhrWyhrW2c+PjJdfDApKzEyPj4yXXwwKSs0OD4+Ml18MCk8PShrW24+PjJdfDApKXtvPXV4KGIsa1toPj4yXXwwLGtbaj4+Ml18MCxrW2w+PjJdfDAsa1ttPj4yXXwwKXwwO2tbZj4+Ml09bztvPWtbZj4+Ml18MDtyPXA7cmV0dXJuIG98MH1lbHNle2U9YisxMzZ8MDtrW2U+PjJdPShrW2U+PjJdfDApKzE7a1tvPj4yXT0oa1soa1tnPj4yXXwwKSs4OD4+Ml18MCkrKChrW24+PjJdfDApKjIwfDApO2lba1tvPj4yXT4+MF09a1toPj4yXTtpWyhrW28+PjJdfDApKzM+PjBdPTA7a1soa1tvPj4yXXwwKSs0Pj4yXT1rW2o+PjJdO2tbKGtbbz4+Ml18MCkrOD4+Ml09a1tsPj4yXTtrWyhrW28+PjJdfDApKzEyPj4yXT1rW20+PjJdO2tbKGtbbz4+Ml18MCkrMTY+PjJdPTA7aVsoa1tvPj4yXXwwKSsxPj4wXT0wO2tbZj4+Ml09a1tuPj4yXTtvPWtbZj4+Ml18MDtyPXA7cmV0dXJuIG98MH1yZXR1cm4gMH1mdW5jdGlvbiB1eChhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxpPTAsaj0wLGw9MCxtPTA7bT1yO3I9ciszMnwwO2Y9bSsyMHwwO2c9bSsxNnwwO2g9bSsxMnwwO2k9bSs4fDA7aj1tKzR8MDtsPW07a1tnPj4yXT1hO2tbaD4+Ml09YjtrW2k+PjJdPWM7a1tqPj4yXT1kO2tbbD4+Ml09ZTtpZih2eChrW2c+PjJdfDAsMSl8MCl7a1tmPj4yXT0xO2U9a1tmPj4yXXwwO3I9bTtyZXR1cm4gZXwwfWVsc2V7ZT10eChrW2c+PjJdfDAsa1toPj4yXXwwLGtbaT4+Ml18MCxrW2o+PjJdfDAsa1tsPj4yXXwwKXwwO2tbZj4+Ml09ZTtlPWtbZj4+Ml18MDtyPW07cmV0dXJuIGV8MH1yZXR1cm4gMH1mdW5jdGlvbiB2eChhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wO2c9cjtyPXIrMzJ8MDtjPWcrMTZ8MDtmPWcrOHwwO2U9Zys0fDA7ZD1nO2tbYz4+Ml09YTtrW2crMTI+PjJdPWI7a1tlPj4yXT1rWyhrW2M+PjJdfDApKzEyPj4yXTtpZihrWyhrW2U+PjJdfDApKzQ4Pj4yXXwwKWI9a1soa1tlPj4yXXwwKSs0OD4+Ml08PDE7ZWxzZSBiPTUxO2tbZD4+Ml09YjtkPWN4KGtba1tlPj4yXT4+Ml18MCxrWyhrW2M+PjJdfDApKzg4Pj4yXXwwLChrW2Q+PjJdfDApKjIwfDAsMCl8MDtrW2Y+PjJdPWQ7aWYoIShrW2Y+PjJdfDApKXtmPWtbZj4+Ml18MDtmPShmfDApIT0wO2Y9Zj8wOjc7cj1nO3JldHVybiBmfDB9ZD11dShrW2tbZT4+Ml0+PjJdfDAsa1tmPj4yXXwwKXwwO2tbKGtbZT4+Ml18MCkrNTI+PjJdPWQ7a1soa1tlPj4yXXwwKSs0OD4+Ml09KChrWyhrW2U+PjJdfDApKzUyPj4yXXwwKT4+PjApLzIwfDA7a1soa1tjPj4yXXwwKSs4OD4+Ml09a1tmPj4yXTtmPWtbZj4+Ml18MDtmPShmfDApIT0wO2Y9Zj8wOjc7cj1nO3JldHVybiBmfDB9ZnVuY3Rpb24gd3goYSxiLGMsZCxlLGYsZyl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7dmFyIGg9MCxpPTAsaj0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wO2k9cjtyPXIrMzJ8MDttPWkrMjh8MDtxPWkrMjR8MDtwPWkrMjB8MDtvPWkrMTZ8MDtuPWkrMTJ8MDtsPWkrOHwwO2o9aSs0fDA7aD1pO2tbbT4+Ml09YTtrW3E+PjJdPWI7a1twPj4yXT1jO2tbbz4+Ml09ZDtrW24+PjJdPWU7a1tsPj4yXT1mO2tbaj4+Ml09ZztmPXR4KGtbbT4+Ml18MCxrW3E+PjJdfDAsa1twPj4yXXwwLGtbbz4+Ml18MCxrW24+PjJdfDApfDA7a1toPj4yXT1mO1doKGtbbT4+Ml18MCxrW2g+PjJdfDAsa1tsPj4yXXwwLGtbaj4+Ml18MCk7cj1pO3JldHVybiBrW2g+PjJdfDB9ZnVuY3Rpb24geHgoYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wO2Q9cjtyPXIrMTZ8MDtiPWQrNHwwO2M9ZDtrW2I+PjJdPWE7YT1SaChrW2I+PjJdfDApfDA7a1soa1tiPj4yXXwwKSs4Pj4yXT1hO2tbYz4+Ml09YTtpZihrW2M+PjJdfDApc3goa1tjPj4yXXwwLDcxLDAsMSl8MDtpZihrWyhrW2I+PjJdfDApKzEyND4+Ml18MCl7Yz1rW2M+PjJdfDA7cj1kO3JldHVybiBjfDB9aWYoKG1bKGtba1tiPj4yXT4+Ml18MCkrNjQ+PjFdfDApJjgpe2M9a1tjPj4yXXwwO3I9ZDtyZXR1cm4gY3wwfWlbKGtbYj4+Ml18MCkrMjM+PjBdPTE7Yz1rW2M+PjJdfDA7cj1kO3JldHVybiBjfDB9ZnVuY3Rpb24geXgoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MDtmPXI7cj1yKzEyOHwwO2Q9Zis0MHwwO2o9ZiszNnwwO2g9ZiszMnwwO2U9ZisyOHwwO2c9ZjtrW2Q+PjJdPWE7a1tqPj4yXT1iO2tbaD4+Ml09YztuZyhnLGtbZD4+Ml18MCxmKzQ0fDAsNzAsa1soa1tkPj4yXXwwKSs5Nj4+Ml18MCk7aVtnKzI1Pj4wXT0xO29nKGcsa1tqPj4yXXwwLGtbaD4+Ml18MCk7Yj1wZyhnKXwwO2tbZT4+Ml09YjtpZigobFtnKzI0Pj4wXXwwfDApIT0xKXtqPWtbZT4+Ml18MDtyPWY7cmV0dXJuIGp8MH13aChrW2Q+PjJdfDApO2o9a1tlPj4yXXwwO3I9ZjtyZXR1cm4ganwwfWZ1bmN0aW9uIHp4KGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxpPTA7aT1yO3I9ciszMnwwO2Q9aSsxNnwwO2U9aSsxMnwwO2Y9aSs4fDA7aD1pKzR8MDtnPWk7a1tkPj4yXT1hO2tbZT4+Ml09YjtrW2Y+PjJdPWM7aWYoa1trW2Y+PjJdPj4yXXwwKXthPVBoKGtba1tkPj4yXT4+Ml18MCxrW2tbZj4+Ml0+PjJdfDApfDA7a1tnPj4yXT1hO2tbaD4+Ml09a1soa1soa1trW2Q+PjJdPj4yXXwwKSsxNj4+Ml18MCkrKGtbZz4+Ml08PDQpPj4yXX1lbHNlIGtbaD4+Ml09a1soa1tmPj4yXXwwKSs0Pj4yXTtoPU5oKGtbZD4+Ml18MCxrW2U+PjJdfDAsa1soa1tmPj4yXXwwKSs4Pj4yXXwwLGtbaD4+Ml18MCl8MDtyPWk7cmV0dXJuIGh8MH1mdW5jdGlvbiBBeChhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wO2c9cjtyPXIrMTZ8MDtmPWc7Yz1nKzEyfDA7ZD1nKzh8MDtlPWcrNHwwO2tbZD4+Ml09YTtrW2U+PjJdPWI7aWYoKFRmKGtbZT4+Ml18MCl8MCk+Nj8wPT0oSmQoa1tlPj4yXXwwLDI3ODQ0LDcpfDApOjApe2I9a1tkPj4yXXwwO2tbZj4+Ml09a1tlPj4yXTtPaChiLDI3ODUyLGYpO2tbYz4+Ml09MTtiPWtbYz4+Ml18MDtyPWc7cmV0dXJuIGJ8MH1rW2M+PjJdPTA7Yj1rW2M+PjJdfDA7cj1nO3JldHVybiBifDB9ZnVuY3Rpb24gQngoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wO2g9cjtyPXIrMTZ8MDtkPWgrMTJ8MDtlPWgrOHwwO2Y9aCs0fDA7Zz1oO2tbZD4+Ml09YTtrW2U+PjJdPWI7a1tmPj4yXT1jO2M9a1tkPj4yXXwwO2lmKGtbKGtbZD4+Ml18MCkrMTI0Pj4yXXwwKWM9a1tjKzEyND4+Ml18MDtrW2c+PjJdPWM7Q3goa1tkPj4yXXwwLGtbZj4+Ml18MCk7ZD0oa1tnPj4yXXwwKSs5MnwwO2tbZD4+Ml09a1tkPj4yXXwxPDxrW2Y+PjJdO2c9KGtbZz4+Ml18MCkrMjB8MDtpW2c+PjBdPWxbZz4+MF18MHxrW2U+PjJdO3I9aDtyZXR1cm59ZnVuY3Rpb24gQ3goYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wO2U9cjtyPXIrMTZ8MDtmPWUrOHwwO2M9ZSs0fDA7ZD1lO2tbZj4+Ml09YTtrW2M+PjJdPWI7Yj1rW2Y+PjJdfDA7aWYoa1soa1tmPj4yXXwwKSsxMjQ+PjJdfDApYj1rW2IrMTI0Pj4yXXwwO2tbZD4+Ml09YjtpZigoa1soa1tkPj4yXXwwKSs5Nj4+Ml0mMTw8a1tjPj4yXXwwKSE9MHwwKXtyPWU7cmV0dXJufWY9KGtbZD4+Ml18MCkrOTZ8MDtrW2Y+PjJdPWtbZj4+Ml18MTw8a1tjPj4yXTtpZigoa1tjPj4yXXwwKSE9MSl7cj1lO3JldHVybn1EeChrW2Q+PjJdfDApfDA7cj1lO3JldHVybn1mdW5jdGlvbiBEeChhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wO2g9cjtyPXIrMzJ8MDtnPWg7Yj1oKzIwfDA7Yz1oKzE2fDA7ZD1oKzEyfDA7Zj1oKzh8MDtlPWgrNHwwO2tbYz4+Ml09YTtrW2Q+PjJdPWtba1tjPj4yXT4+Ml07aWYoKGtbKGtbKGtbZD4+Ml18MCkrMTY+PjJdfDApKzE2KzQ+PjJdfDApPT0wPyhpWyhrW2M+PjJdfDApKzQwOT4+MF18MCk9PTA6MCl7YT1sayhrW2tbZD4+Ml0+PjJdfDAsMCxrW2Q+PjJdfDAsZSwwLDU0Mil8MDtrW2Y+PjJdPWE7aWYoa1tmPj4yXXwwKXtPaChrW2M+PjJdfDAsMjc3NzQsZyk7a1soa1tjPj4yXXwwKSsxMj4+Ml09a1tmPj4yXTtrW2I+PjJdPTE7Zz1rW2I+PjJdfDA7cj1oO3JldHVybiBnfDB9a1soa1soa1tkPj4yXXwwKSsxNj4+Ml18MCkrMTYrND4+Ml09a1tlPj4yXTtpZig3PT0oTWkoa1tlPj4yXXwwLGtbKGtbZD4+Ml18MCkrODA+PjJdfDAsLTEsMCl8MCkpe3doKGtbZD4+Ml18MCk7a1tiPj4yXT0xO2c9a1tiPj4yXXwwO3I9aDtyZXR1cm4gZ3wwfX1rW2I+PjJdPTA7Zz1rW2I+PjJdfDA7cj1oO3JldHVybiBnfDB9ZnVuY3Rpb24gRXgoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGw9MCxtPTA7bT1yO3I9cisxNnwwO2Y9bSs4fDA7Zz1tKzR8MDtoPW0rMTN8MDtqPW0rMTJ8MDtsPW07a1tmPj4yXT1hO2tbZz4+Ml09YjtpW2g+PjBdPWM7aVtqPj4wXT1kO2tbbD4+Ml09ZTtpZighKGtbZz4+Ml18MCkpe2U9MDtyPW07cmV0dXJuIGV8MH1lPU14KGtbZj4+Ml18MCxrW2c+PjJdfDAsaVtoPj4wXXwwLGlbaj4+MF18MCxrW2w+PjJdfDAsMCl8MDtyPW07cmV0dXJuIGV8MH1mdW5jdGlvbiBGeChhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTAsZT0wO2Q9cjtyPXIrMTZ8MDtiPWQrNHwwO2M9ZDtrW2M+PjJdPWE7YT1rW2M+PjJdfDA7aWYoIShsWyhrW2M+PjJdfDApKzE5Pj4wXXwwKSl7YT1hKzQ0fDA7Yz0oa1thPj4yXXwwKSsxfDA7a1thPj4yXT1jO2tbYj4+Ml09YztjPWtbYj4+Ml18MDtyPWQ7cmV0dXJuIGN8MH1lbHNle2U9YSsxOXwwO2E9KGlbZT4+MF18MCkrLTE8PDI0Pj4yNDtpW2U+PjBdPWE7a1tiPj4yXT1rWyhrW2M+PjJdfDApKzM1MisoKGEmMjU1KTw8Mik+PjJdO2M9a1tiPj4yXXwwO3I9ZDtyZXR1cm4gY3wwfXJldHVybiAwfWZ1bmN0aW9uIEd4KGEpe2E9YXwwO3ZhciBiPTAsYz0wO2M9cjtyPXIrMTZ8MDtiPWM7a1tiPj4yXT1hO3I9YztyZXR1cm4ga1soa1tiPj4yXXwwKSsxMzY+PjJdfDB9ZnVuY3Rpb24gSHgoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MDtnPXI7cj1yKzE2fDA7ZD1nKzEyfDA7ZT1nKzh8MDtjPWcrNHwwO2Y9ZztrW2Q+PjJdPWE7a1tlPj4yXT1iO2lmKCEoa1tlPj4yXXwwKSl7cj1nO3JldHVybn1pZigobFsoa1tkPj4yXXwwKSsxOT4+MF18MHwwKT49OCl7cj1nO3JldHVybn1rW2M+PjJdPTA7a1tmPj4yXT0oa1tkPj4yXXwwKSsxNTI7d2hpbGUoMSl7aWYoKGtbYz4+Ml18MCk+PShsWyhrW2Q+PjJdfDApKzI1Pj4wXXwwfDApKXtjPTg7YnJlYWt9aWYoKGtbKGtbZj4+Ml18MCkrMTI+PjJdfDApPT0oa1tlPj4yXXwwKSl7Yz02O2JyZWFrfWtbYz4+Ml09KGtbYz4+Ml18MCkrMTtrW2Y+PjJdPShrW2Y+PjJdfDApKzIwfWlmKChjfDApPT02KXtpWyhrW2Y+PjJdfDApKzY+PjBdPTE7cj1nO3JldHVybn1lbHNlIGlmKChjfDApPT04KXtlPWtbZT4+Ml18MDthPShrW2Q+PjJdfDApKzE5fDA7Zj1pW2E+PjBdfDA7aVthPj4wXT1mKzE8PDI0Pj4yNDtrWyhrW2Q+PjJdfDApKzM1MisoKGYmMjU1KTw8Mik+PjJdPWU7cj1nO3JldHVybn19ZnVuY3Rpb24gSXgoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGk9MCxqPTAsbD0wLG09MCxuPTA7bj1yO3I9cis0OHwwO2w9bjtkPW4rMzJ8MDtlPW4rMjh8MDtmPW4rMjR8MDtqPW4rMjB8MDttPW4rMTZ8MDtnPW4rMTJ8MDtpPW4rOHwwO2g9bis0fDA7a1tkPj4yXT1hO2tbZT4+Ml09YjtrW2Y+PjJdPWM7Yz1ueChrW2Q+PjJdfDApfDA7a1tqPj4yXT1jO2lmKCEoa1tqPj4yXXwwKSl7cj1uO3JldHVybn1jPVBoKGtba1tkPj4yXT4+Ml18MCxrWyhrW2U+PjJdfDApKzY0Pj4yXXwwKXwwO2tbZz4+Ml09YztjPUp4KGtbZD4+Ml18MCxrW2U+PjJdfDApfDA7a1tpPj4yXT1jO3doaWxlKDEpe2lmKCEoa1tpPj4yXXwwKSlicmVhaztjPVBoKGtba1tkPj4yXT4+Ml18MCxrWyhrW2k+PjJdfDApKzIwPj4yXXwwKXwwO2tbaD4+Ml09Yzt3eChrW2o+PjJdfDAsMTQwLGtbaD4+Ml18MCwwLDAsa1trW2k+PjJdPj4yXXwwLDApfDA7a1tpPj4yXT1rWyhrW2k+PjJdfDApKzMyPj4yXX13eChrW2o+PjJdfDAsMTM4LGtbZz4+Ml18MCwwLDAsa1trW2U+PjJdPj4yXXwwLDApfDA7Yz1rW2tbZD4+Ml0+PjJdfDA7a1tsPj4yXT1rW2Y+PjJdO2M9UWgoYywyODIwNixsKXwwO2tbbT4+Ml09YztpZighKGtbbT4+Ml18MCkpe3I9bjtyZXR1cm59cXgoa1tqPj4yXXwwLGtbZz4+Ml18MCxrW20+PjJdfDApO2M9S3goa1tkPj4yXXwwLGtbZT4+Ml18MCl8MDtrW20+PjJdPWM7aWYoIWMpe3I9bjtyZXR1cm59cXgoa1tqPj4yXXwwLDEsa1ttPj4yXXwwKTtyPW47cmV0dXJufWZ1bmN0aW9uIEp4KGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxsPTA7aj1yO3I9ciszMnwwO2g9aisyNHwwO2w9aisyMHwwO2Q9aisxNnwwO2M9aisxMnwwO2Y9ais4fDA7ZT1qKzR8MDtnPWo7a1tsPj4yXT1hO2tbZD4+Ml09YjtrW2M+PjJdPWtbKGtbKGtba1tsPj4yXT4+Ml18MCkrMTY+PjJdfDApKzE2KzEyPj4yXTtrW2Y+PjJdPTA7aWYoaVsoa1tsPj4yXXwwKSsxNTA+PjBdfDApe2tbaD4+Ml09MDtsPWtbaD4+Ml18MDtyPWo7cmV0dXJuIGx8MH1hOmRvIGlmKChrW2M+PjJdfDApIT0oa1soa1tkPj4yXXwwKSs2ND4+Ml18MCkpe2tbZT4+Ml09a1soa1tjPj4yXXwwKSs0MCs4Pj4yXTt3aGlsZSgxKXtpZighKGtbZT4+Ml18MCkpYnJlYWsgYTtrW2c+PjJdPWtbKGtbZT4+Ml18MCkrOD4+Ml07aWYoKGtbKGtbZz4+Ml18MCkrMjQ+PjJdfDApPT0oa1soa1tkPj4yXXwwKSs2ND4+Ml18MCk/MD09KHNnKGtbKGtbZz4+Ml18MCkrND4+Ml18MCxrW2tbZD4+Ml0+PjJdfDApfDApOjApe2lmKGtbZj4+Ml18MClhPWtbZj4+Ml18MDtlbHNlIGE9a1soa1tkPj4yXXwwKSs2MD4+Ml18MDtrWyhrW2c+PjJdfDApKzMyPj4yXT1hO2tbZj4+Ml09a1tnPj4yXX1rW2U+PjJdPWtba1tlPj4yXT4+Ml19fXdoaWxlKDApO2lmKGtbZj4+Ml18MClhPWtbZj4+Ml18MDtlbHNlIGE9a1soa1tkPj4yXXwwKSs2MD4+Ml18MDtrW2g+PjJdPWE7bD1rW2g+PjJdfDA7cj1qO3JldHVybiBsfDB9ZnVuY3Rpb24gS3goYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTAsaT0wLGo9MCxsPTA7bD1yO3I9ciszMnwwO2g9bDtjPWwrMjh8MDtkPWwrMjR8MDtnPWwrMjB8MDtqPWwrMTZ8MDtmPWwrMTJ8MDtlPWwrOHwwO2k9bCs0fDA7a1tjPj4yXT1hO2tbZD4+Ml09YjtrW2o+PjJdPTA7a1tmPj4yXT1rWyhrWyhrW2tbYz4+Ml0+PjJdfDApKzE2Pj4yXXwwKSsxNisxMj4+Ml07YTpkbyBpZigoa1soa1tkPj4yXXwwKSs2ND4+Ml18MCkhPShrW2Y+PjJdfDApKXtrW2U+PjJdPWtba1tjPj4yXT4+Ml07Yj1KeChrW2M+PjJdfDAsa1tkPj4yXXwwKXwwO2tbZz4+Ml09Yjt3aGlsZSgxKXtpZighKGtbZz4+Ml18MCkpYnJlYWsgYTtpZigoa1soa1tnPj4yXXwwKSsyMD4+Ml18MCk9PShrW2Y+PjJdfDApKXtiPUx4KGtbZT4+Ml18MCxrW2o+PjJdfDAsa1trW2c+PjJdPj4yXXwwKXwwO2tbaj4+Ml09Yn1rW2c+PjJdPWtbKGtbZz4+Ml18MCkrMzI+PjJdfX13aGlsZSgwKTtpZighKGtbaj4+Ml18MCkpe2o9a1tqPj4yXXwwO3I9bDtyZXR1cm4ganwwfWc9a1trW2M+PjJdPj4yXXwwO2tbaD4+Ml09a1tqPj4yXTtoPVFoKGcsMjgyMTgsaCl8MDtrW2k+PjJdPWg7Ymcoa1trW2M+PjJdPj4yXXwwLGtbaj4+Ml18MCk7a1tqPj4yXT1rW2k+PjJdO2o9a1tqPj4yXXwwO3I9bDtyZXR1cm4ganwwfWZ1bmN0aW9uIEx4KGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxpPTAsaj0wO2o9cjtyPXIrMzJ8MDtoPWorOHwwO2c9ajtkPWorMjh8MDtlPWorMjR8MDtmPWorMjB8MDtpPWorMTZ8MDtrW2Q+PjJdPWE7a1tlPj4yXT1iO2tbZj4+Ml09YzthPWtbZD4+Ml18MDtpZihrW2U+PjJdfDApe2c9a1tmPj4yXXwwO2tbaD4+Ml09a1tlPj4yXTtrW2grND4+Ml09ZztoPVFoKGEsMjgyNTAsaCl8MDtrW2k+PjJdPWg7Ymcoa1tkPj4yXXwwLGtbZT4+Ml18MCk7aT1rW2k+PjJdfDA7cj1qO3JldHVybiBpfDB9ZWxzZXtrW2c+PjJdPWtbZj4+Ml07aD1RaChhLDI4MjQyLGcpfDA7a1tpPj4yXT1oO2k9a1tpPj4yXXwwO3I9ajtyZXR1cm4gaXwwfXJldHVybiAwfWZ1bmN0aW9uIE14KGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxuPTAsbz0wLHE9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MDtEPXI7cj1yKzY0fDA7dD1EO3o9RCs1MnwwO3Y9RCs0OHwwO2c9RCs0NHwwO3g9RCs1OHwwO3k9RCs1N3wwO0E9RCs0MHwwO2g9RCszNnwwO3M9RCszMnwwO3c9RCsyOHwwO0I9RCsyNHwwO3E9RCsyMHwwO3U9RCsxNnwwO0M9RCsxMnwwO249RCs1NnwwO289RCs4fDA7a1t2Pj4yXT1hO2tbZz4+Ml09YjtpW3g+PjBdPWM7aVt5Pj4wXT1kO2tbQT4+Ml09ZTtrW2g+PjJdPWY7a1t3Pj4yXT0wO2tbQj4+Ml09MDtrW3E+PjJdPTE7a1t1Pj4yXT0xODQwMjtrW0M+PjJdPTA7d2hpbGUoMSl7ZT1sW2tbZz4+Ml0+PjBdfDA7a1tzPj4yXT1lO2lmKCEoKGV8MCk9PTE1Nj8xOihrW3M+PjJdfDApPT0xNjEpKWJyZWFrO2tbZz4+Ml09a1soa1tnPj4yXXwwKSsxMj4+Ml19aWYoKGtbcz4+Ml18MCk9PTE1NylrW3M+PjJdPWxbKGtbZz4+Ml18MCkrMzg+PjBdO2lmKChrW3M+PjJdfDApPT02Nil7Qj1OeChrWyhrW2c+PjJdfDApKzg+PjJdfDAsMCl8MDtpW24+PjBdPUI7Qj1NeChrW3Y+PjJdfDAsa1soa1tnPj4yXXwwKSsxMj4+Ml18MCxpW3g+PjBdfDAsaVtuPj4wXXwwLGtbQT4+Ml18MCxrW2g+PjJdfDApfDA7a1tDPj4yXT1CO2lmKGtba1tBPj4yXT4+Ml18MCl7T3goa1trW0E+PjJdPj4yXXwwLGlbbj4+MF18MCwxKTtQeChrW2tbQT4+Ml0+PjJdfDAsaVt5Pj4wXXwwLDEpfWtbej4+Ml09a1tDPj4yXTtDPWtbej4+Ml18MDtyPUQ7cmV0dXJuIEN8MH1kbyBpZigoa1tzPj4yXXwwKT09MTU1KXtpZigobFtrWyhrW2c+PjJdfDApKzEyPj4yXT4+MF18MHwwKSE9MTM0PyhsW2tbKGtbZz4+Ml18MCkrMTI+PjJdPj4wXXwwfDApIT0xMzI6MClicmVhaztrW2c+PjJdPWtbKGtbZz4+Ml18MCkrMTI+PjJdO2tbcz4+Ml09bFtrW2c+PjJdPj4wXTtrW3E+PjJdPS0xO2tbdT4+Ml09MjgyNjR9d2hpbGUoMCk7ZG8gaWYoKGtbcz4+Ml18MCk9PTk3fChrW3M+PjJdfDApPT0xMzJ8KGtbcz4+Ml18MCk9PTEzNCl7ZT1ReChrW3Y+PjJdfDAsa1toPj4yXXwwKXwwO2tbQj4+Ml09ZTtpZihrW0I+PjJdfDApe2lmKGtbKGtbZz4+Ml18MCkrND4+Ml0mMTAyNCl7dj1rW0I+PjJdfDA7dT1rWyhrW2c+PjJdfDApKzg+PjJdfDA7dz1rW3E+PjJdfDA7dz1rUyh1fDAsKCh1fDApPDApPDwzMT4+MzF8MCx3fDAsKCh3fDApPDApPDwzMT4+MzF8MCl8MDtyaCh2LHcsTCl9ZWxzZXtlPWtbdj4+Ml18MDtiPWtbKGtbZz4+Ml18MCkrOD4+Ml18MDtrW3Q+PjJdPWtbdT4+Ml07a1t0KzQ+PjJdPWI7dT1RaChlLDI0NzA1LHQpfDA7a1t3Pj4yXT11O2lmKCEoa1t3Pj4yXXwwKSl7Zz00MjticmVha31paShrW0I+PjJdfDAsLTEsa1t3Pj4yXXwwLDEsMTcwKX1pZigoa1tzPj4yXXwwKT09MTM0fChrW3M+PjJdfDApPT0xMzI/KGxbeT4+MF18MHwwKT09NjU6MClQeChrW0I+PjJdfDAsNjcsMSk7ZWxzZSBQeChrW0I+PjJdfDAsaVt5Pj4wXXwwLDEpO2lmKChtWyhrW0I+PjJdfDApKzg+PjFdfDApJjEyKXt5PShrW0I+PjJdfDApKzh8MDtqW3k+PjFdPShtW3k+PjFdfDApJi0zfWlmKChsW3g+PjBdfDB8MCkhPTEpe2c9c3Uoa1tCPj4yXXwwLGxbeD4+MF18MCl8MDtrW0M+PjJdPWc7Zz00MX1lbHNlIGc9NDF9ZWxzZSBnPTQyfWVsc2V7aWYoKGtbcz4+Ml18MCkhPTE1NSl7aWYoKGtbcz4+Ml18MCk9PTEwMSl7eT1ReChrW3Y+PjJdfDAsa1toPj4yXXwwKXwwO2tbQj4+Ml09eTtpZighKGtbQj4+Ml18MCkpe2c9NDI7YnJlYWt9ZWxzZXtnPTQxO2JyZWFrfX1pZigoa1tzPj4yXXwwKSE9MTMzKXtnPTQxO2JyZWFrfXk9UXgoa1t2Pj4yXXwwLGtbaD4+Ml18MCl8MDtrW0I+PjJdPXk7aWYoIShrW0I+PjJdfDApKXtnPTQyO2JyZWFrfWtbdz4+Ml09KGtbKGtbZz4+Ml18MCkrOD4+Ml18MCkrMjt5PShUZihrW3c+PjJdfDApfDApLTF8MDtrW28+PjJdPXk7eT1rW0I+PjJdfDA7Zz1TeChrW3Y+PjJdfDAsa1t3Pj4yXXwwLGtbbz4+Ml18MCl8MDtxaCh5LGcsKGtbbz4+Ml18MCkvMnwwLDAsMTcwKXwwO2c9NDE7YnJlYWt9dz0wPT0oRXgoa1t2Pj4yXXwwLGtbKGtbZz4+Ml18MCkrMTI+PjJdfDAsaVt4Pj4wXXwwLGlbeT4+MF18MCxCKXwwKTtpZih3JihrW0I+PjJdfDApIT0wKXtSeChrW0I+PjJdfDApfDA7Zz1rW0I+PjJdfDA7ZG8gaWYoISgobVsoa1tCPj4yXXwwKSs4Pj4xXXwwKSY4KSl7dz1nO2c9a1tCPj4yXXwwO2lmKChrW3c+PjJdfDApPT0wPyhrW3crND4+Ml18MCk9PS0yMTQ3NDgzNjQ4OjApe3BbZz4+M109OTIyMzM3MjAzNjg1NDc3NTgwOC4wO2pbKGtbQj4+Ml18MCkrOD4+MV09KG1bKGtbQj4+Ml18MCkrOD4+MV18MCkmLTQ5NjY0fDg7YnJlYWt9ZWxzZXt2PWc7dj1fUigwLDAsa1t2Pj4yXXwwLGtbdis0Pj4yXXwwKXwwO3c9a1tCPj4yXXwwO2tbdz4+Ml09djtrW3crND4+Ml09TDticmVha319ZWxzZSBwW2tbQj4+Ml0+PjNdPS0rcFtnPj4zXTt3aGlsZSgwKTtQeChrW0I+PjJdfDAsaVt5Pj4wXXwwLGlbeD4+MF18MCk7Zz00MX1lbHNlIGc9NDF9d2hpbGUoMCk7aWYoKGd8MCk9PTQxKXtrW2tbQT4+Ml0+PjJdPWtbQj4+Ml07a1t6Pj4yXT1rW0M+PjJdO0M9a1t6Pj4yXXwwO3I9RDtyZXR1cm4gQ3wwfWVsc2UgaWYoKGd8MCk9PTQyKXt3aChrW3Y+PjJdfDApO2JnKGtbdj4+Ml18MCxrW3c+PjJdfDApO21oKGtbQj4+Ml18MCk7a1t6Pj4yXT03O0M9a1t6Pj4yXXwwO3I9RDtyZXR1cm4gQ3wwfXJldHVybiAwfWZ1bmN0aW9uIE54KGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxtPTA7bT1yO3I9ciszMnwwO2M9bSsxNnwwO2Q9bSsxMnwwO2Y9bSs4fDA7ZT1tKzIwfDA7aD1tKzR8MDtnPW07a1tjPj4yXT1hO2tbZD4+Ml09YjtrW2Y+PjJdPTA7aVtlPj4wXT02NztrW2g+PjJdPTA7YTp3aGlsZSgxKXtpZighKGlba1tjPj4yXT4+MF18MCkpYnJlYWs7a1tmPj4yXT0oa1tmPj4yXTw8OCkrKGxbMTc2MTMrKGlba1tjPj4yXT4+MF0mMjU1KT4+MF18MCk7a1tjPj4yXT0oa1tjPj4yXXwwKSsxO2lmKChrW2Y+PjJdfDApPT0xNjY3Nzg1MDc0KXtpW2U+PjBdPTY2O2tbaD4+Ml09a1tjPj4yXTtjb250aW51ZX1pZigoa1tmPj4yXXwwKT09MTY2ODA1MDc4Nil7aVtlPj4wXT02Njtjb250aW51ZX1pZigoa1tmPj4yXXwwKT09MTk1MjgwNzAyOCl7aVtlPj4wXT02Njtjb250aW51ZX1kbyBpZigoa1tmPj4yXXwwKT09MTY1MTI3MzU3MCl7aWYoKGlbZT4+MF18MCkhPTY3PyhpW2U+PjBdfDApIT02OTowKWJyZWFrO2lbZT4+MF09NjU7aWYoKGlba1tjPj4yXT4+MF18MCkhPTQwKWNvbnRpbnVlIGE7a1toPj4yXT1rW2M+PjJdO2NvbnRpbnVlIGF9d2hpbGUoMCk7aWYoKGtbZj4+Ml18MCk9PTE5MTkyNDY3MDA/KGlbZT4+MF18MCk9PTY3OjApe2lbZT4+MF09Njk7Y29udGludWV9aWYoKGtbZj4+Ml18MCk9PTE3MTgzODI0MzM/KGlbZT4+MF18MCk9PTY3OjApe2lbZT4+MF09Njk7Y29udGludWV9aWYoKGtbZj4+Ml18MCk9PTE2ODUwMjYxNDY/KGlbZT4+MF18MCk9PTY3OjApe2lbZT4+MF09Njk7Y29udGludWV9aWYoKGtbZj4+Ml0mMTY3NzcyMTV8MCk9PTY5MDk1NTYpe2o9MjQ7YnJlYWt9fWlmKChqfDApPT0yNClpW2U+PjBdPTY4O2lmKCEoa1tkPj4yXXwwKSl7aj1pW2U+PjBdfDA7cj1tO3JldHVybiBqfDB9aVtrW2Q+PjJdPj4wXT0xO2lmKChpW2U+PjBdfDApPj02Nyl7aj1pW2U+PjBdfDA7cj1tO3JldHVybiBqfDB9aWYoIShrW2g+PjJdfDApKXtpW2tbZD4+Ml0+PjBdPTU7aj1pW2U+PjBdfDA7cj1tO3JldHVybiBqfDB9d2hpbGUoMSl7aWYoIShpW2tbaD4+Ml0+PjBdfDApKXtqPTMzO2JyZWFrfWlmKGxbMTg0MDMrKGxba1toPj4yXT4+MF18MCk+PjBdJjQpYnJlYWs7a1toPj4yXT0oa1toPj4yXXwwKSsxfWlmKChqfDApPT0zMyl7aj1pW2U+PjBdfDA7cj1tO3JldHVybiBqfDB9a1tnPj4yXT0wO19pKGtbaD4+Ml18MCxnKXwwO2o9KChrW2c+PjJdfDApLzR8MCkrMXwwO2tbZz4+Ml09ajtrW2c+PjJdPShrW2c+PjJdfDApPjI1NT8yNTU6ajtpW2tbZD4+Ml0+PjBdPWtbZz4+Ml07aj1pW2U+PjBdfDA7cj1tO3JldHVybiBqfDB9ZnVuY3Rpb24gT3goYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTA7Zz1yO3I9cisxNnwwO2U9ZztkPWcrNXwwO2Y9Zys0fDA7a1tlPj4yXT1hO2lbZD4+MF09YjtpW2Y+PjBdPWM7aWYoKG1bKGtbZT4+Ml18MCkrOD4+MV18MCkmMSl7cj1nO3JldHVybn1zd2l0Y2gobFtkPj4wXXwwfDApe2Nhc2UgNjU6e2Q9a1tlPj4yXXwwO2lmKChtWyhrW2U+PjJdfDApKzg+PjFdfDApJjE2KXtmPWQrOHwwO2pbZj4+MV09KG1bZj4+MV18MCkmLTMzMjY0O3I9ZztyZXR1cm59UHgoZCw2NixpW2Y+PjBdfDApO2lmKCEoKG1bKGtbZT4+Ml18MCkrOD4+MV18MCkmMikpe3I9ZztyZXR1cm59alsoa1tlPj4yXXwwKSs4Pj4xXT0obVsoa1tlPj4yXXwwKSs4Pj4xXXwwKSYtNDk2NjR8MTY7cj1nO3JldHVybn1jYXNlIDY3OntSeChrW2U+PjJdfDApfDA7cj1nO3JldHVybn1jYXNlIDY4OntfeChrW2U+PjJdfDApfDA7cj1nO3JldHVybn1jYXNlIDY5OnskeChrW2U+PjJdfDApfDA7cj1nO3JldHVybn1kZWZhdWx0OnthPShrW2U+PjJdfDApKzh8MDtqW2E+PjFdPW1bYT4+MV18MHwoKG1bKGtbZT4+Ml18MCkrOD4+MV18MCkmMTYpPj4zO1B4KGtbZT4+Ml18MCw2NixpW2Y+PjBdfDApO2Y9KGtbZT4+Ml18MCkrOHwwO2pbZj4+MV09KG1bZj4+MV18MCkmLTE2NDEzO3I9ZztyZXR1cm59fX1mdW5jdGlvbiBQeChhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MDtkPXI7cj1yKzE2fDA7Zz1kO2Y9ZCs1fDA7ZT1kKzR8MDtrW2c+PjJdPWE7aVtmPj4wXT1iO2lbZT4+MF09YztWeChrW2c+PjJdfDAsaVtmPj4wXXwwLGlbZT4+MF18MCk7cj1kO3JldHVybn1mdW5jdGlvbiBReChhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wO2M9cjtyPXIrMTZ8MDtkPWMrNHwwO2tbZD4+Ml09YTtrW2M+PjJdPWI7Yj1oaShrW2Q+PjJdfDApfDA7cj1jO3JldHVybiBifDB9ZnVuY3Rpb24gUngoYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wLGU9MC4wO2M9cjtyPXIrMTZ8MDtiPWM7a1tiPj4yXT1hO2RvIGlmKCEoKG1bKGtbYj4+Ml18MCkrOD4+MV18MCkmMTMpKXtkPTA9PShXaShrWyhrW2I+PjJdfDApKzE2Pj4yXXwwLGtbYj4+Ml18MCxrWyhrW2I+PjJdfDApKzEyPj4yXXwwLGlbKGtbYj4+Ml18MCkrMTA+PjBdfDApfDApO2E9a1tiPj4yXXwwO2lmKGQpe2pbKGtbYj4+Ml18MCkrOD4+MV09KG1bYSs4Pj4xXXwwKSYtNDk2NjR8NDticmVha31lbHNle2U9K2poKGEpO3Bba1tiPj4yXT4+M109ZTtqWyhrW2I+PjJdfDApKzg+PjFdPShtWyhrW2I+PjJdfDApKzg+PjFdfDApJi00OTY2NHw4O1R4KGtbYj4+Ml18MCk7YnJlYWt9fXdoaWxlKDApO2Q9KGtbYj4+Ml18MCkrOHwwO2pbZD4+MV09KG1bZD4+MV18MCkmLTE2NDAzO3I9YztyZXR1cm4gMH1mdW5jdGlvbiBTeChhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wO2g9cjtyPXIrMzJ8MDtqPWgrMTZ8MDtkPWgrMTJ8MDtlPWgrOHwwO2c9aCs0fDA7Zj1oO2tbaj4+Ml09YTtrW2Q+PjJdPWI7a1tlPj4yXT1jO2I9KChrW2U+PjJdfDApLzJ8MCkrMXwwO2I9ZHgoa1tqPj4yXXwwLGIsKChifDApPDApPDwzMT4+MzEpfDA7a1tnPj4yXT1iO2tbZT4+Ml09KGtbZT4+Ml18MCkrLTE7aWYoIShrW2c+PjJdfDApKXtqPWtbZz4+Ml18MDtyPWg7cmV0dXJuIGp8MH1rW2Y+PjJdPTA7d2hpbGUoMSl7YT1rW2Y+PjJdfDA7aWYoKGtbZj4+Ml18MCk+PShrW2U+PjJdfDApKWJyZWFrO2o9KChWaShpWyhrW2Q+PjJdfDApK2E+PjBdfDApfDApJjI1NSk8PDQ7aj0oanwoVmkoaVsoa1tkPj4yXXwwKSsoKGtbZj4+Ml18MCkrMSk+PjBdfDApfDApJjI1NSkmMjU1O2lbKGtbZz4+Ml18MCkrKChrW2Y+PjJdfDApLzJ8MCk+PjBdPWo7a1tmPj4yXT0oa1tmPj4yXXwwKSsyfWlbKGtbZz4+Ml18MCkrKChhfDApLzJ8MCk+PjBdPTA7aj1rW2c+PjJdfDA7cj1oO3JldHVybiBqfDB9ZnVuY3Rpb24gVHgoYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wLGU9MCxmPTAsZz0wLGg9MDtkPXI7cj1yKzE2fDA7Yj1kKzh8MDtjPWQ7a1tiPj4yXT1hO2Y9VXgoK3Bba1tiPj4yXT4+M10pfDA7aD1jO2tbaD4+Ml09ZjtrW2grND4+Ml09TDtoPWM7Zj1jO2c9a1tmKzQ+PjJdfDA7YT1jO2U9a1thKzQ+PjJdfDA7aWYoISgrcFtrW2I+PjJdPj4zXT09Kygoa1toPj4yXXwwKT4+PjApKzQyOTQ5NjcyOTYuMCorKGtbaCs0Pj4yXXwwKSYoKGd8MCk+LTIxNDc0ODM2NDh8KGd8MCk9PS0yMTQ3NDgzNjQ4JihrW2Y+PjJdfDApPj4+MD4wKSYoKGV8MCk8MjE0NzQ4MzY0N3woZXwwKT09MjE0NzQ4MzY0NyYoa1thPj4yXXwwKT4+PjA8NDI5NDk2NzI5NSkpKXtyPWQ7cmV0dXJufWY9YztnPWtbZis0Pj4yXXwwO2g9a1tiPj4yXXwwO2tbaD4+Ml09a1tmPj4yXTtrW2grND4+Ml09ZztqWyhrW2I+PjJdfDApKzg+PjFdPShtWyhrW2I+PjJdfDApKzg+PjFdfDApJi00OTY2NHw0O3I9ZDtyZXR1cm59ZnVuY3Rpb24gVXgoYSl7YT0rYTt2YXIgYj0wLGM9MCxkPTAsZT0wO2Q9cjtyPXIrMTZ8MDtiPWQrOHwwO2M9ZDtwW2M+PjNdPWE7ZG8gaWYoISgrcFtjPj4zXTw9LTkyMjMzNzIwMzY4NTQ3NzU4MDguMCkpaWYoK3BbYz4+M10+PTkyMjMzNzIwMzY4NTQ3NzU4MDguMCl7Yz1iO2tbYz4+Ml09LTE7a1tjKzQ+PjJdPTIxNDc0ODM2NDc7YnJlYWt9ZWxzZXthPStwW2M+PjNdO2U9K1coYSk+PTEuMD8oYT4wLjA/fn4raWEoK1YoYS80Mjk0OTY3Mjk2LjApLDQyOTQ5NjcyOTUuMCk+Pj4wOn5+K2dhKChhLSsofn5hPj4+MCkpLzQyOTQ5NjcyOTYuMCk+Pj4wKTowO2M9YjtrW2M+PjJdPX5+YT4+PjA7a1tjKzQ+PjJdPWU7YnJlYWt9ZWxzZXtlPWI7a1tlPj4yXT0wO2tbZSs0Pj4yXT0tMjE0NzQ4MzY0OH13aGlsZSgwKTtlPWI7TD1rW2UrND4+Ml18MDtyPWQ7cmV0dXJuIGtbZT4+Ml18MH1mdW5jdGlvbiBWeChhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MDtnPXI7cj1yKzE2fDA7Zj1nO2Q9Zys1fDA7ZT1nKzR8MDtrW2Y+PjJdPWE7aVtkPj4wXT1iO2lbZT4+MF09YztpZigoaVtkPj4wXXwwKTw2Nyl7aWYoKGlbZD4+MF18MCkhPTY2KXtyPWc7cmV0dXJufWlmKDA9PShtWyhrW2Y+PjJdfDApKzg+PjFdJjJ8MCk/KG1bKGtbZj4+Ml18MCkrOD4+MV0mMTJ8MCkhPTA6MClXeChrW2Y+PjJdfDAsaVtlPj4wXXwwLDEpfDA7Zj0oa1tmPj4yXXwwKSs4fDA7altmPj4xXT1tW2Y+PjFdJi0xMztyPWc7cmV0dXJufWlmKG1bKGtbZj4+Ml18MCkrOD4+MV0mNCl7cj1nO3JldHVybn1kPWtbZj4+Ml18MDtpZihtWyhrW2Y+PjJdfDApKzg+PjFdJjgpe1R4KGQpO3I9ZztyZXR1cm59aWYoIShtW2QrOD4+MV0mMikpe3I9ZztyZXR1cm59TGgoa1tmPj4yXXwwLDEpO3I9ZztyZXR1cm59ZnVuY3Rpb24gV3goYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLG49MCxvPTAscT0wO3E9cjtyPXIrNDh8MDtvPXErOHwwO249cTtkPXErMjh8MDtlPXErMjR8MDtmPXErMzN8MDtnPXErMzJ8MDtoPXErMjB8MDtrW2U+PjJdPWE7aVtmPj4wXT1iO2lbZz4+MF09YztrW2g+PjJdPW1bKGtbZT4+Ml18MCkrOD4+MV07a1txKzE2Pj4yXT0zMjtpZihYeChrW2U+PjJdfDAsMzIpfDApe2lbKGtbZT4+Ml18MCkrMTA+PjBdPTA7a1tkPj4yXT03O289a1tkPj4yXXwwO3I9cTtyZXR1cm4gb3wwfWM9a1soa1tlPj4yXXwwKSsxNj4+Ml18MDtiPWtbZT4+Ml18MDtpZihrW2g+PjJdJjQpe2E9YjtoPWtbYSs0Pj4yXXwwO289bjtrW28+PjJdPWtbYT4+Ml07a1tvKzQ+PjJdPWg7X2QoMzIsYywyODI2NixuKXwwfWVsc2V7cFtvPj4zXT0rcFtiPj4zXTtfZCgzMixjLDI4MjcxLG8pfDB9bz1UZihrWyhrW2U+PjJdfDApKzE2Pj4yXXwwKXwwO2tbKGtbZT4+Ml18MCkrMTI+PjJdPW87aVsoa1tlPj4yXXwwKSsxMD4+MF09MTtvPShrW2U+PjJdfDApKzh8MDtqW28+PjFdPW1bbz4+MV18NTE0O2lmKGlbZz4+MF18MCl7bz0oa1tlPj4yXXwwKSs4fDA7altvPj4xXT1tW28+PjFdJi0xM31zdShrW2U+PjJdfDAsbFtmPj4wXXwwKXwwO2tbZD4+Ml09MDtvPWtbZD4+Ml18MDtyPXE7cmV0dXJuIG98MH1mdW5jdGlvbiBYeChhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTA7Zj1yO3I9cisxNnwwO2M9Zis4fDA7ZD1mKzR8MDtlPWY7a1tkPj4yXT1hO2tbZT4+Ml09YjthPWtbZD4+Ml18MDtpZigoa1soa1tkPj4yXXwwKSsyND4+Ml18MCk8KGtbZT4+Ml18MCkpe2U9WXgoYSxrW2U+PjJdfDAsMCl8MDtrW2M+PjJdPWU7ZT1rW2M+PjJdfDA7cj1mO3JldHVybiBlfDB9ZWxzZXtrWyhrW2Q+PjJdfDApKzE2Pj4yXT1rW2ErMjA+PjJdO2U9KGtbZD4+Ml18MCkrOHwwO2pbZT4+MV09KG1bZT4+MV18MCkmMTM7a1tjPj4yXT0wO2U9a1tjPj4yXXwwO3I9ZjtyZXR1cm4gZXwwfXJldHVybiAwfWZ1bmN0aW9uIFl4KGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MDtoPXI7cj1yKzE2fDA7ZT1oKzEyfDA7Zj1oKzh8MDtkPWgrNHwwO2c9aDtrW2Y+PjJdPWE7a1tkPj4yXT1iO2tbZz4+Ml09YztkbyBpZigoa1soa1tmPj4yXXwwKSsyND4+Ml18MCk8KGtbZD4+Ml18MCkpe2lmKChrW2Q+PjJdfDApPDMyKWtbZD4+Ml09MzI7aWYoKChrW2c+PjJdfDApIT0wPyhrWyhrW2Y+PjJdfDApKzI0Pj4yXXwwKT4wOjApPyhrWyhrW2Y+PjJdfDApKzE2Pj4yXXwwKT09KGtbKGtbZj4+Ml18MCkrMjA+PjJdfDApOjApe2E9a1tkPj4yXXwwO2E9Wngoa1soa1tmPj4yXXwwKSszMj4+Ml18MCxrWyhrW2Y+PjJdfDApKzE2Pj4yXXwwLGEsKChhfDApPDApPDwzMT4+MzEpfDA7a1soa1tmPj4yXXwwKSsyMD4+Ml09YTtrWyhrW2Y+PjJdfDApKzE2Pj4yXT1hO2tbZz4+Ml09MH1lbHNle2lmKChrWyhrW2Y+PjJdfDApKzI0Pj4yXXwwKT4wKWJnKGtbKGtbZj4+Ml18MCkrMzI+PjJdfDAsa1soa1tmPj4yXXwwKSsyMD4+Ml18MCk7YT1rW2Q+PjJdfDA7YT1NaChrWyhrW2Y+PjJdfDApKzMyPj4yXXwwLGEsKChhfDApPDApPDwzMT4+MzEpfDA7a1soa1tmPj4yXXwwKSsyMD4+Ml09YX1kPWtbZj4+Ml18MDtpZihrWyhrW2Y+PjJdfDApKzIwPj4yXXwwKXthPXV1KGtbZCszMj4+Ml18MCxrWyhrW2Y+PjJdfDApKzIwPj4yXXwwKXwwO2tbKGtbZj4+Ml18MCkrMjQ+PjJdPWE7YnJlYWt9c2goZCk7a1soa1tmPj4yXXwwKSsxNj4+Ml09MDtrWyhrW2Y+PjJdfDApKzI0Pj4yXT0wO2tbZT4+Ml09NztnPWtbZT4+Ml18MDtyPWg7cmV0dXJuIGd8MH13aGlsZSgwKTtpZigoKGtbZz4+Ml18MCkhPTA/KGtbKGtbZj4+Ml18MCkrMTY+PjJdfDApIT0wOjApPyhrWyhrW2Y+PjJdfDApKzE2Pj4yXXwwKSE9KGtbKGtbZj4+Ml18MCkrMjA+PjJdfDApOjApYlMoa1soa1tmPj4yXXwwKSsyMD4+Ml18MCxrWyhrW2Y+PjJdfDApKzE2Pj4yXXwwLGtbKGtbZj4+Ml18MCkrMTI+PjJdfDApfDA7aWYoKG1bKGtbZj4+Ml18MCkrOD4+MV18MCkmMTAyNClfYltrWyhrW2Y+PjJdfDApKzM2Pj4yXSYyNTVdKGtbKGtbZj4+Ml18MCkrMTY+PjJdfDApO2tbKGtbZj4+Ml18MCkrMTY+PjJdPWtbKGtbZj4+Ml18MCkrMjA+PjJdO2c9KGtbZj4+Ml18MCkrOHwwO2pbZz4+MV09KG1bZz4+MV18MCkmLTcxNjk7a1tlPj4yXT0wO2c9a1tlPj4yXXwwO3I9aDtyZXR1cm4gZ3wwfWZ1bmN0aW9uIFp4KGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaT0wO2g9cjtyPXIrMzJ8MDtlPWgrMTZ8MDtmPWgrMTJ8MDtpPWg7Zz1oKzh8MDtrW2U+PjJdPWE7a1tmPj4yXT1iO2I9aTtrW2I+PjJdPWM7a1tiKzQ+PjJdPWQ7Yj1pO2I9Y3goa1tlPj4yXXwwLGtbZj4+Ml18MCxrW2I+PjJdfDAsa1tiKzQ+PjJdfDApfDA7a1tnPj4yXT1iO2lmKGtbZz4+Ml18MCl7aT1rW2c+PjJdfDA7cj1oO3JldHVybiBpfDB9Ymcoa1tlPj4yXXwwLGtbZj4+Ml18MCk7aT1rW2c+PjJdfDA7cj1oO3JldHVybiBpfDB9ZnVuY3Rpb24gX3goYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wO2I9cjtyPXIrMTZ8MDtjPWI7a1tjPj4yXT1hO2Q9a2goa1tjPj4yXXwwKXwwO2E9a1tjPj4yXXwwO2tbYT4+Ml09ZDtrW2ErND4+Ml09TDtqWyhrW2M+PjJdfDApKzg+PjFdPShtWyhrW2M+PjJdfDApKzg+PjFdfDApJi00OTY2NHw0O3I9YjtyZXR1cm4gMH1mdW5jdGlvbiAkeChhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTAuMDtiPXI7cj1yKzE2fDA7Yz1iO2tbYz4+Ml09YTtkPStqaChrW2M+PjJdfDApO3Bba1tjPj4yXT4+M109ZDtqWyhrW2M+PjJdfDApKzg+PjFdPShtWyhrW2M+PjJdfDApKzg+PjFdfDApJi00OTY2NHw4O3I9YjtyZXR1cm4gMH1mdW5jdGlvbiBheShhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wO2c9cjtyPXIrMTZ8MDtmPWc7Yz1nKzEyfDA7ZD1nKzh8MDtlPWcrNHwwO2tbZD4+Ml09YTtrW2U+PjJdPWI7aWYoKCgoaVsoa1trW2Q+PjJdPj4yXXwwKSsxNDgrNT4+MF18MCk9PTA/KGxbKGtbZD4+Ml18MCkrMTg+PjBdfDApPT0wOjApPyhrWyhrW2tbZD4+Ml0+PjJdfDApKzI0Pj4yXSYyMDQ4fDApPT0wOjApPzA9PShKZChrW2U+PjJdfDAsMjc4NDQsNyl8MCk6MCl7Yj1rW2Q+PjJdfDA7a1tmPj4yXT1rW2U+PjJdO09oKGIsMzA3NzUsZik7a1tjPj4yXT0xO2I9a1tjPj4yXXwwO3I9ZztyZXR1cm4gYnwwfWtbYz4+Ml09MDtiPWtbYz4+Ml18MDtyPWc7cmV0dXJuIGJ8MH1mdW5jdGlvbiBieShhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wLGg9MCxpPTAsbj0wLG89MCxwPTAscT0wO3E9cjtyPXIrNDh8MDtvPXE7Yz1xKzM2fDA7ZD1xKzMyfDA7ZT1xKzI4fDA7bj1xKzI0fDA7aT1xKzIwfDA7aD1xKzE2fDA7Zz1xKzEyfDA7Zj1xKzh8MDtwPXErNHwwO2tbZD4+Ml09YTtrW2U+PjJdPWI7a1toPj4yXT0wO2tbZj4+Ml09a1trW2Q+PjJdPj4yXTtpZihoeShrW2Q+PjJdfDAsa1tlPj4yXXwwKXwwKXtrW2M+PjJdPTE7cD1rW2M+PjJdfDA7cj1xO3JldHVybiBwfDB9aWYobFsoa1tlPj4yXXwwKSs0Mj4+MF0mMTYpe2tbYz4+Ml09MDtwPWtbYz4+Ml18MDtyPXE7cmV0dXJuIHB8MH1pZigoalsoa1tlPj4yXXwwKSszND4+MV18MCk+MCl7a1tjPj4yXT0wO3A9a1tjPj4yXXwwO3I9cTtyZXR1cm4gcHwwfWlmKChqWyhrW2U+PjJdfDApKzM0Pj4xXXwwKTwwKXtwPWtbZD4+Ml18MDtrW28+PjJdPWtba1tlPj4yXT4+Ml07T2gocCwyODk4MyxvKTtrW2M+PjJdPTE7cD1rW2M+PjJdfDA7cj1xO3JldHVybiBwfDB9bz1peShrW2Y+PjJdfDAsa1soa1tlPj4yXXwwKSsxMj4+Ml18MCwwKXwwO2tbaT4+Ml09bztpZihrW2k+PjJdfDApe2tbZz4+Ml09a1soa1tkPj4yXXwwKSs0MD4+Ml07ankoa1tkPj4yXXwwLGtbKGtbaT4+Ml18MCkrMjg+PjJdfDApO2pbKGtbZT4+Ml18MCkrMzQ+PjFdPS0xO289KGtbZj4+Ml18MCkrMjU2fDA7a1tvPj4yXT0oa1tvPj4yXXwwKSsxO2tbcD4+Ml09a1soa1tmPj4yXXwwKSsyOTY+PjJdO2tbKGtbZj4+Ml18MCkrMjk2Pj4yXT0wO289a3koa1tkPj4yXXwwLGtbaT4+Ml18MCl8MDtrW24+PjJdPW87a1soa1tmPj4yXXwwKSsyOTY+PjJdPWtbcD4+Ml07a1soa1tkPj4yXXwwKSs0MD4+Ml09a1tnPj4yXTtkbyBpZihrWyhrW2U+PjJdfDApKzI0Pj4yXXwwKXtseShrW2Q+PjJdfDAsa1soa1tlPj4yXXwwKSsyND4+Ml18MCwoa1tlPj4yXXwwKSszNHwwLChrW2U+PjJdfDApKzR8MCl8MDtpZigoKGxbKGtbZj4+Ml18MCkrNjk+PjBdfDApPT0wPyhrWyhrW2Q+PjJdfDApKzM2Pj4yXXwwKT09MDowKT8oalsoa1tlPj4yXXwwKSszND4+MV18MCk9PShrW2tba1tpPj4yXT4+Ml0+PjJdfDApOjApbXkoa1tkPj4yXXwwLGtbZT4+Ml18MCxrW2k+PjJdfDApfWVsc2UgaWYoa1tuPj4yXXwwKXtqWyhrW2U+PjJdfDApKzM0Pj4xXT1qWyhrW24+PjJdfDApKzM0Pj4xXXwwO2tbKGtbZT4+Ml18MCkrND4+Ml09a1soa1tuPj4yXXwwKSs0Pj4yXTtqWyhrW24+PjJdfDApKzM0Pj4xXT0wO2tbKGtbbj4+Ml18MCkrND4+Ml09MDticmVha31lbHNle2pbKGtbZT4+Ml18MCkrMzQ+PjFdPTA7a1toPj4yXT0oa1toPj4yXXwwKSsxO2JyZWFrfXdoaWxlKDApOyRmKGtbZj4+Ml18MCxrW24+PjJdfDApO3B2KGtbZj4+Ml18MCxrW2k+PjJdfDApO3A9KGtbZj4+Ml18MCkrMjU2fDA7a1twPj4yXT0oa1twPj4yXXwwKSstMX1lbHNlIGtbaD4+Ml09KGtbaD4+Ml18MCkrMTtwPShrWyhrW2U+PjJdfDApKzY0Pj4yXXwwKSs3OHwwO2pbcD4+MV09bVtwPj4xXXwyO2tbYz4+Ml09a1toPj4yXTtwPWtbYz4+Ml18MDtyPXE7cmV0dXJuIHB8MH1mdW5jdGlvbiBjeShhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTA7ZT1yO3I9cisxNnwwO2M9ZSs4fDA7Zj1lKzR8MDtkPWU7a1tjPj4yXT1hO2tbZj4+Ml09YjtrW2Q+PjJdPWtbKGtbZj4+Ml18MCkrNTY+PjJdO3doaWxlKDEpe2lmKCEoa1tkPj4yXXwwKSl7Yz01O2JyZWFrfWlmKChrW2tbZD4+Ml0+PjJdfDApPT0oa1tjPj4yXXwwKSl7Yz01O2JyZWFrfWtbZD4+Ml09a1soa1tkPj4yXXwwKSsyND4+Ml19aWYoKGN8MCk9PTUpe3I9ZTtyZXR1cm4ga1tkPj4yXXwwfXJldHVybiAwfWZ1bmN0aW9uIGR5KGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MDtjPXI7cj1yKzE2fDA7ZD1jKzR8MDtiPWM7a1tkPj4yXT1hO2E9a1tkPj4yXXwwO2lmKGtbKGtbZD4+Ml18MCkrMTI0Pj4yXXwwKWE9a1thKzEyND4+Ml18MDtrW2I+PjJdPWE7aVsoa1tiPj4yXXwwKSsyMT4+MF09MTtyPWM7cmV0dXJufWZ1bmN0aW9uIGV5KGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wO2c9cjtyPXIrMzJ8MDtoPWcrMTZ8MDtjPWcrMTJ8MDtmPWcrOHwwO2Q9Zys0fDA7ZT1nO2tbaD4+Ml09YTtrW2M+PjJdPWI7a1tmPj4yXT0wO2tbZD4+Ml09a1toPj4yXTtpZigoa1tjPj4yXXwwKT49MClrW2U+PjJdPShrW2Q+PjJdfDApKyhrW2M+PjJdfDApO2Vsc2Uga1tlPj4yXT0tMTt3aGlsZSgxKXtpZighKGxba1tkPj4yXT4+MF18MCkpe2M9MTA7YnJlYWt9aWYoKGtbZD4+Ml18MCk+Pj4wPj0oa1tlPj4yXXwwKT4+PjApe2M9MTA7YnJlYWt9aD1rW2Q+PjJdfDA7a1tkPj4yXT1oKzE7YTpkbyBpZigobFtoPj4wXXwwfDApPj0xOTIpd2hpbGUoMSl7aWYoKChsW2tbZD4+Ml0+PjBdfDApJjE5MnwwKSE9MTI4KWJyZWFrIGE7a1tkPj4yXT0oa1tkPj4yXXwwKSsxfXdoaWxlKDApO2tbZj4+Ml09KGtbZj4+Ml18MCkrMX1pZigoY3wwKT09MTApe3I9ZztyZXR1cm4ga1tmPj4yXXwwfXJldHVybiAwfWZ1bmN0aW9uIGZ5KGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTA7Zj1yO3I9cisxNnwwO2M9ZisxMnwwO2c9Zis4fDA7ZD1mKzR8MDtlPWY7a1tjPj4yXT1hO2tbZz4+Ml09YjtrW2U+PjJdPTA7Yj1neShrW2c+PjJdfDApfDA7a1tkPj4yXT1iO3doaWxlKDEpe2lmKCEoa1tkPj4yXXwwKSlicmVhaztnPUx4KGtba1tjPj4yXT4+Ml18MCxrW2U+PjJdfDAsa1trW2tbZD4+Ml0+PjJdPj4yXXwwKXwwO2tbZT4+Ml09ZztrW2Q+PjJdPWtbKGtbZD4+Ml18MCkrMTI+PjJdfXI9ZjtyZXR1cm4ga1tlPj4yXXwwfWZ1bmN0aW9uIGd5KGEpe2E9YXwwO3ZhciBiPTAsYz0wO2I9cjtyPXIrMTZ8MDtjPWI7a1tjPj4yXT1hO2E9Q2ooKGtbKGtbYz4+Ml18MCkrNjQ+PjJdfDApKzU2fDAsa1trW2M+PjJdPj4yXXwwKXwwO3I9YjtyZXR1cm4gYXwwfWZ1bmN0aW9uIGh5KGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wLGk9MCxqPTAsbT0wLG49MCxvPTAscD0wO3A9cjtyPXIrNDh8MDtqPXArOHwwO2k9cDtjPXArNDR8MDtkPXArNDB8MDtlPXArMzZ8MDtmPXArMzJ8MDtuPXArMjh8MDtnPXArMjR8MDtoPXArMjB8MDtvPXArMTZ8MDttPXArMTJ8MDtrW2Q+PjJdPWE7a1tlPj4yXT1iO2tbZj4+Ml09a1trW2Q+PjJdPj4yXTtpZigoKGxbKGtbZT4+Ml18MCkrNDI+PjBdfDApJjE2fDApIT0wPyhjeShrW2Y+PjJdfDAsa1tlPj4yXXwwKXwwKT09MDowKXtrW24+PjJdPWtba1soa1tlPj4yXXwwKSs1Mj4+Ml0+PjJdO249Q2ooKGtbZj4+Ml18MCkrMzIwfDAsa1tuPj4yXXwwKXwwO2tbZz4+Ml09bjtpZihrW2c+PjJdfDApe2tbbT4+Ml09MDtvPVR6KGtbZj4+Ml18MCxrW2U+PjJdfDAsa1tnPj4yXXwwLGtbKGtba1tnPj4yXT4+Ml18MCkrOD4+Ml18MCxtKXwwO2tbaD4+Ml09bztpZihrW2g+PjJdfDApe289a1tkPj4yXXwwO2tbaj4+Ml09a1ttPj4yXTtPaChvLDE4MzkxLGopfWJnKGtbZj4+Ml18MCxrW20+PjJdfDApfWVsc2V7a1tvPj4yXT1rW2tbKGtbZT4+Ml18MCkrNTI+PjJdPj4yXTtuPWtbZD4+Ml18MDtrW2k+PjJdPWtbbz4+Ml07T2gobiwzMDYzMSxpKTtrW2g+PjJdPTF9a1tjPj4yXT1rW2g+PjJdO289a1tjPj4yXXwwO3I9cDtyZXR1cm4gb3wwfWtbYz4+Ml09MDtvPWtbYz4+Ml18MDtyPXA7cmV0dXJuIG98MH1mdW5jdGlvbiBpeShhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsbD0wLG09MDttPXI7cj1yKzMyfDA7ZD1tKzIwfDA7ZT1tKzE2fDA7Zj1tKzEyfDA7Zz1tKzh8MDtoPW0rNHwwO2w9bTtrW2U+PjJdPWE7a1tmPj4yXT1iO2tbZz4+Ml09YztpZighKGtbZj4+Ml18MCkpe2tbZD4+Ml09MDtsPWtbZD4+Ml18MDtyPW07cmV0dXJuIGx8MH1iPWR4KGtbZT4+Ml18MCw2OCwwKXwwO2tbaD4+Ml09YjtpZighKGtbaD4+Ml18MCkpe2tbZD4+Ml09MDtsPWtbZD4+Ml18MDtyPW07cmV0dXJuIGx8MH1iPV95KGtbZT4+Ml18MCxrW2tbZj4+Ml0+PjJdfDAsa1tnPj4yXXwwKXwwO2tba1toPj4yXT4+Ml09YjtiPVF6KGtbZT4+Ml18MCxrWyhrW2Y+PjJdfDApKzI4Pj4yXXwwLGtbZz4+Ml18MCl8MDtrWyhrW2g+PjJdfDApKzI4Pj4yXT1iO2I9U3koa1tlPj4yXXwwLGtbKGtbZj4+Ml18MCkrMzI+PjJdfDAsa1tnPj4yXXwwKXwwO2tbKGtbaD4+Ml18MCkrMzI+PjJdPWI7Yj1feShrW2U+PjJdfDAsa1soa1tmPj4yXXwwKSszNj4+Ml18MCxrW2c+PjJdfDApfDA7a1soa1toPj4yXXwwKSszNj4+Ml09YjtiPVN5KGtbZT4+Ml18MCxrWyhrW2Y+PjJdfDApKzQwPj4yXXwwLGtbZz4+Ml18MCl8MDtrWyhrW2g+PjJdfDApKzQwPj4yXT1iO2I9X3koa1tlPj4yXXwwLGtbKGtbZj4+Ml18MCkrNDQ+PjJdfDAsa1tnPj4yXXwwKXwwO2tbKGtbaD4+Ml18MCkrNDQ+PjJdPWI7aVsoa1toPj4yXXwwKSs0Pj4wXT1pWyhrW2Y+PjJdfDApKzQ+PjBdfDA7Yj1peShrW2U+PjJdfDAsa1soa1tmPj4yXXwwKSs0OD4+Ml18MCxrW2c+PjJdfDApfDA7a1tsPj4yXT1iO2tbKGtbaD4+Ml18MCkrNDg+PjJdPWI7aWYoa1tsPj4yXXwwKWtbKGtbbD4+Ml18MCkrNTI+PjJdPWtbaD4+Ml07a1soa1toPj4yXXwwKSs1Mj4+Ml09MDtsPVN5KGtbZT4+Ml18MCxrWyhrW2Y+PjJdfDApKzU2Pj4yXXwwLGtbZz4+Ml18MCl8MDtrWyhrW2g+PjJdfDApKzU2Pj4yXT1sO2w9U3koa1tlPj4yXXwwLGtbKGtbZj4+Ml18MCkrNjA+PjJdfDAsa1tnPj4yXXwwKXwwO2tbKGtbaD4+Ml18MCkrNjA+PjJdPWw7a1soa1toPj4yXXwwKSsxMj4+Ml09MDtrWyhrW2g+PjJdfDApKzE2Pj4yXT0wO2tbKGtbaD4+Ml18MCkrOD4+Ml09a1soa1tmPj4yXXwwKSs4Pj4yXSYtMzM7a1soa1toPj4yXXwwKSsyMD4+Ml09LTE7a1soa1toPj4yXXwwKSsyMCs0Pj4yXT0tMTtqWyhrW2g+PjJdfDApKzY+PjFdPWpbKGtbZj4+Ml18MCkrNj4+MV18MDtsPVJ6KGtbZT4+Ml18MCxrWyhrW2Y+PjJdfDApKzY0Pj4yXXwwKXwwO2tbKGtbaD4+Ml18MCkrNjQ+PjJdPWw7a1tkPj4yXT1rW2g+PjJdO2w9a1tkPj4yXXwwO3I9bTtyZXR1cm4gbHwwfWZ1bmN0aW9uIGp5KGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTA7Zz1yO3I9cisxNnwwO2M9ZysxMnwwO2Q9Zys4fDA7ZT1nKzR8MDtmPWc7a1tjPj4yXT1hO2tbZD4+Ml09YjtpZighKGtbZD4+Ml18MCkpe3I9ZztyZXR1cm59a1tlPj4yXT0wO2tbZj4+Ml09KGtbZD4+Ml18MCkrODt3aGlsZSgxKXtpZigoa1tlPj4yXXwwKT49KGtba1tkPj4yXT4+Ml18MCkpe2M9ODticmVha31pZigoa1soa1tmPj4yXXwwKSs0ND4+Ml18MCk+PTApe2M9ODticmVha31iPShrW2M+PjJdfDApKzQwfDA7YT1rW2I+PjJdfDA7a1tiPj4yXT1hKzE7a1soa1tmPj4yXXwwKSs0ND4+Ml09YTtpZihrWyhrW2Y+PjJdfDApKzIwPj4yXXwwKWp5KGtbYz4+Ml18MCxrWyhrWyhrW2Y+PjJdfDApKzIwPj4yXXwwKSsyOD4+Ml18MCk7a1tlPj4yXT0oa1tlPj4yXXwwKSsxO2tbZj4+Ml09KGtbZj4+Ml18MCkrNzJ9aWYoKGN8MCk9PTgpe3I9ZztyZXR1cm59fWZ1bmN0aW9uIGt5KGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wLGw9MDtsPXI7cj1yKzMyfDA7Yz1sKzIwfDA7ZD1sKzE2fDA7ZT1sKzEyfDA7Zz1sKzh8MDtmPWwrNHwwO2g9bDtrW2Q+PjJdPWE7a1tlPj4yXT1iO2tbZj4+Ml09a1trW2Q+PjJdPj4yXTtrW2g+PjJdPWtbKGtbZj4+Ml18MCkrMjQ+PjJdO2I9KGtbZj4+Ml18MCkrMjR8MDtrW2I+PjJdPWtbYj4+Ml0mLTU7Yj0oa1tmPj4yXXwwKSsyNHwwO2tbYj4+Ml09a1tiPj4yXXw2NDt3eShrW2Q+PjJdfDAsa1tlPj4yXXwwLDApO2lmKGtbKGtbZD4+Ml18MCkrMzY+PjJdfDApe2tbYz4+Ml09MDtoPWtbYz4+Ml18MDtyPWw7cmV0dXJuIGh8MH13aGlsZSgxKXtpZighKGtbKGtbZT4+Ml18MCkrNDg+PjJdfDApKWJyZWFrO2tbZT4+Ml09a1soa1tlPj4yXXwwKSs0OD4+Ml19a1soa1tmPj4yXXwwKSsyND4+Ml09a1toPj4yXTtoPUNoKGtbZj4+Ml18MCw3MiwwKXwwO2tbZz4+Ml09aDtpZighKGtbZz4+Ml18MCkpe2tbYz4+Ml09MDtoPWtbYz4+Ml18MDtyPWw7cmV0dXJuIGh8MH1qWyhrW2c+PjJdfDApKzM2Pj4xXT0xO2tba1tnPj4yXT4+Ml09MDtqWyhrW2c+PjJdfDApKzM4Pj4xXT0yMDA7bHkoa1tkPj4yXXwwLGtba1tlPj4yXT4+Ml18MCwoa1tnPj4yXXwwKSszNHwwLChrW2c+PjJdfDApKzR8MCl8MDtteShrW2Q+PjJdfDAsa1tnPj4yXXwwLGtbZT4+Ml18MCk7alsoa1tnPj4yXXwwKSszMj4+MV09LTE7aWYoaVsoa1tmPj4yXXwwKSs2OT4+MF18MCl7JGYoa1tmPj4yXXwwLGtbZz4+Ml18MCk7a1tjPj4yXT0wO2g9a1tjPj4yXXwwO3I9bDtyZXR1cm4gaHwwfWVsc2V7a1tjPj4yXT1rW2c+PjJdO2g9a1tjPj4yXXwwO3I9bDtyZXR1cm4gaHwwfXJldHVybiAwfWZ1bmN0aW9uIGx5KGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsbT0wLG49MCxvPTAscD0wLHE9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MCxFPTA7RD1yO3I9cisxMTJ8MDt1PUQrOHwwO3Q9RDt3PUQrMTA0fDA7RT1EKzEwMHwwO2U9RCs5NnwwO3g9RCs5MnwwO3k9RCs4OHwwO0E9RCs4NHwwO0I9RCs4MHwwO0M9RCs3NnwwO2Y9RCs3MnwwO3o9RCs2OHwwO3A9RCs2NHwwO209RCs2MHwwO289RCs1NnwwO3Y9RCs1MnwwO249RCs0OHwwO2c9RCszMnwwO3E9RCsyOHwwO3M9RCsyNHwwO2g9RCsyMHwwO2tbRT4+Ml09YTtrW2U+PjJdPWI7a1t4Pj4yXT1jO2tbeT4+Ml09ZDtrW0E+PjJdPWtba1tFPj4yXT4+Ml07SmooZyk7aWYoa1tlPj4yXXwwKXtrW20+PjJdPWtba1tlPj4yXT4+Ml07RT1DaChrW0E+PjJdfDAsa1ttPj4yXTw8NCwwKXwwO2tbej4+Ml09RX1lbHNle2tbbT4+Ml09MDtrW3o+PjJdPTB9altrW3g+PjJdPj4xXT1rW20+PjJdO2tba1t5Pj4yXT4+Ml09a1t6Pj4yXTtrW0I+PjJdPTA7a1twPj4yXT1rW3o+PjJdO3doaWxlKDEpe2lmKChrW0I+PjJdfDApPj0oa1ttPj4yXXwwKSlicmVhaztpZighKChpWyhrW0E+PjJdfDApKzY5Pj4wXXwwKSE9MF4xKSlicmVhaztFPXV5KGtbKGtbKGtbZT4+Ml18MCkrND4+Ml18MCkrKChrW0I+PjJdfDApKjIwfDApPj4yXXwwKXwwO2tbbz4+Ml09RTtFPWtbKGtbKGtbZT4+Ml18MCkrND4+Ml18MCkrKChrW0I+PjJdfDApKjIwfDApKzQ+PjJdfDA7a1t2Pj4yXT1FO2RvIGlmKCFFKXtrW3E+PjJdPWtbbz4+Ml07d2hpbGUoMSl7Yj1rW3E+PjJdfDA7aWYoKGxba1txPj4yXT4+MF18MCkhPTEyMilicmVhaztrW3E+PjJdPWtbYisxNj4+Ml19aWYoKGxbYj4+MF18MCk9PTE1Mj8oa1soa1txPj4yXXwwKSs0ND4+Ml18MCkhPTA6MCl7a1toPj4yXT1qWyhrW3E+PjJdfDApKzMyPj4xXTtrW3M+PjJdPWtbKGtbcT4+Ml18MCkrNDQ+PjJdO2lmKChrW2g+PjJdfDApPDApa1toPj4yXT1qWyhrW3M+PjJdfDApKzMyPj4xXTtpZigoa1toPj4yXXwwKT49MCliPWtbKGtbKGtbcz4+Ml18MCkrND4+Ml18MCkrKGtbaD4+Ml08PDQpPj4yXXwwO2Vsc2UgYj0yNDc0NTtrW3Y+PjJdPWI7YnJlYWt9aWYoKGxba1txPj4yXT4+MF18MCk9PTU1KXtrW3Y+PjJdPWtbKGtbcT4+Ml18MCkrOD4+Ml07YnJlYWt9ZWxzZXtrW3Y+PjJdPWtbKGtbKGtbZT4+Ml18MCkrND4+Ml18MCkrKChrW0I+PjJdfDApKjIwfDApKzg+PjJdO2JyZWFrfX13aGlsZSgwKTtFPWtbQT4+Ml18MDtrW3Q+PjJdPWtbdj4+Ml07RT1RaChFLDE4MzkxLHQpfDA7a1t2Pj4yXT1FO2tbZj4+Ml09MDt3aGlsZSgxKXtpZihrW3Y+PjJdfDApYT0oQ2ooZyxrW3Y+PjJdfDApfDApIT0wO2Vsc2UgYT0wO2I9a1t2Pj4yXXwwO2lmKCFhKWJyZWFrO0U9VGYoYil8MDtrW24+PjJdPUU7aWYoKGtbbj4+Ml18MCk+MCl7a1tDPj4yXT0oa1tuPj4yXXwwKS0xO3doaWxlKDEpe2lmKChrW0M+PjJdfDApPD0wKWJyZWFrO2lmKCEobFsxODQwMysobFsoa1t2Pj4yXXwwKSsoa1tDPj4yXXwwKT4+MF18MCk+PjBdJjQpKWJyZWFrO2tbQz4+Ml09KGtbQz4+Ml18MCkrLTF9aWYoKGlbKGtbdj4+Ml18MCkrKGtbQz4+Ml18MCk+PjBdfDApPT01OClrW24+PjJdPWtbQz4+Ml19RT1rW0E+PjJdfDA7YT1rW24+PjJdfDA7ZD1rW3Y+PjJdfDA7Yz0oa1tmPj4yXXwwKSsxfDA7a1tmPj4yXT1jO2tbdT4+Ml09YTtrW3UrND4+Ml09ZDtrW3UrOD4+Ml09YztFPVFoKEUsMjkwNDcsdSl8MDtrW3Y+PjJdPUU7aWYoKGtbZj4+Ml18MCk+Pj4wPD0zKWNvbnRpbnVlO2FlKDQsZil9a1trW3A+PjJdPj4yXT1iO2lmKChrW3Y+PjJdfDApIT0wPyhFPWNrKGcsa1t2Pj4yXXwwLGtbcD4+Ml18MCl8MCwoRXwwKT09KGtbcD4+Ml18MCkpOjApd2goa1tBPj4yXXwwKTtrW0I+PjJdPShrW0I+PjJdfDApKzE7a1twPj4yXT0oa1twPj4yXXwwKSsxNn1LaihnKTtpZighKGlbKGtbQT4+Ml18MCkrNjk+PjBdfDApKXtrW3c+PjJdPTA7RT1rW3c+PjJdfDA7cj1EO3JldHVybiBFfDB9a1tDPj4yXT0wO3doaWxlKDEpe2I9a1tBPj4yXXwwO2lmKChrW0M+PjJdfDApPj0oa1tCPj4yXXwwKSlicmVhaztiZyhiLGtbKGtbej4+Ml18MCkrKGtbQz4+Ml08PDQpPj4yXXwwKTtrW0M+PjJdPShrW0M+PjJdfDApKzF9YmcoYixrW3o+PjJdfDApO2tba1t5Pj4yXT4+Ml09MDtqW2tbeD4+Ml0+PjFdPTA7a1t3Pj4yXT03O0U9a1t3Pj4yXXwwO3I9RDtyZXR1cm4gRXwwfWZ1bmN0aW9uIG15KGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxtPTAsbj0wLG89MCxwPTAscT0wLHM9MCx0PTAsdT0wLHY9MCx3PTA7dz1yO3I9cis5NnwwO2Q9dys4NHwwO2U9dys4MHwwO2Y9dys3NnwwO2g9dys3MnwwO3Q9dys0MHwwO3E9dyszNnwwO3M9dyszMnwwO209dysyOHwwO3A9dysyNHwwO2c9dysyMHwwO3U9dzt2PXcrMTZ8MDtvPXcrMTJ8MDtuPXcrOHwwO2tbZD4+Ml09YTtrW2U+PjJdPWI7a1tmPj4yXT1jO2tbaD4+Ml09a1trW2Q+PjJdPj4yXTtiPXU7a1tiPj4yXT0wO2tbYis0Pj4yXT0wO2lmKGlbKGtbaD4+Ml18MCkrNjk+PjBdfDApe3I9dztyZXR1cm59O2tbdD4+Ml09MDtrW3QrND4+Ml09MDtrW3QrOD4+Ml09MDtrW3QrMTI+PjJdPTA7a1t0KzE2Pj4yXT0wO2tbdCsyMD4+Ml09MDtrW3QrMjQ+PjJdPTA7a1t0KzI4Pj4yXT0wO2tbdCs0Pj4yXT1rWyhrW2Y+PjJdfDApKzI4Pj4yXTtrW2c+PjJdPWtbKGtba1tmPj4yXT4+Ml18MCkrND4+Ml07a1ttPj4yXT0wO2tbcT4+Ml09a1soa1tlPj4yXXwwKSs0Pj4yXTt3aGlsZSgxKXtpZigoa1ttPj4yXXwwKT49KGpbKGtbZT4+Ml18MCkrMzQ+PjFdfDApKWJyZWFrO2tbcD4+Ml09a1soa1tnPj4yXXwwKSsoKGtbbT4+Ml18MCkqMjB8MCk+PjJdO2M9bnkodCxrW3A+PjJdfDAsKGtbcT4+Ml18MCkrMTR8MCl8MDtrW3Y+PjJdPWM7Yz11O2M9JFIoa1tjPj4yXXwwLGtbYys0Pj4yXXwwLGxbKGtbcT4+Ml18MCkrMTQ+PjBdfDAsMCl8MDtiPXU7a1tiPj4yXT1jO2tbYis0Pj4yXT1MO2I9b3koa1twPj4yXXwwKXwwO2lbKGtbcT4+Ml18MCkrMTM+PjBdPWI7aWYoKChrW3Y+PjJdfDApIT0wPyhiPVRmKGtbdj4+Ml18MCl8MCxrW24+PjJdPWIsKGJ8MCk+MCk6MCk/KGI9VGYoa1trW3E+PjJdPj4yXXwwKXwwLGtbbz4+Ml09YixiPShrW28+PjJdfDApKyhrW24+PjJdfDApKzJ8MCxiPVp4KGtbaD4+Ml18MCxrW2tbcT4+Ml0+PjJdfDAsYiwoKGJ8MCk8MCk8PDMxPj4zMSl8MCxrW2tbcT4+Ml0+PjJdPWIsKGtba1txPj4yXT4+Ml18MCkhPTApOjApe2JTKChrW2tbcT4+Ml0+PjJdfDApKygoa1tvPj4yXXwwKSsxKXwwLGtbdj4+Ml18MCwoa1tuPj4yXXwwKSsxfDApfDA7Yj0oa1txPj4yXXwwKSsxNXwwO2lbYj4+MF09bFtiPj4wXXw0fWlmKCEoaVsoa1txPj4yXXwwKSsxMz4+MF18MCkpaVsoa1txPj4yXXwwKSsxMz4+MF09NjU7Yj1weShrW2Q+PjJdfDAsa1twPj4yXXwwKXwwO2tbcz4+Ml09YjtpZigoa1tzPj4yXXwwKSE9MD8oa1soa1txPj4yXXwwKSs4Pj4yXXwwKT09MDowKXtiPUFoKGtbaD4+Ml18MCxrW2tbcz4+Ml0+PjJdfDApfDA7a1soa1txPj4yXXwwKSs4Pj4yXT1ifWtbbT4+Ml09KGtbbT4+Ml18MCkrMTtrW3E+PjJdPShrW3E+PjJdfDApKzE2fXY9dTt2PWtTKGtbdj4+Ml18MCxrW3YrND4+Ml18MCw0LDApfDA7dj1Xaih2LEwpfDA7alsoa1tlPj4yXXwwKSs0MD4+MV09djtyPXc7cmV0dXJufWZ1bmN0aW9uIG55KGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxtPTAsbj0wLG89MCxwPTAscT0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wO3g9cjtyPXIrMTI4fDA7ZD14KzExMnwwO2U9eCsxMDh8MDtmPXgrMTA0fDA7dz14KzEwMHwwO209eCs5NnwwO2c9eCsxMTZ8MDtzPXgrOTJ8MDtwPXgrODh8MDtoPXgrODR8MDt0PXgrODB8MDt1PXgrNDh8MDtuPXgrNDB8MDt2PXgrOHwwO3E9eCs0fDA7bz14O2tbZD4+Ml09YTtrW2U+PjJdPWI7a1tmPj4yXT1jO2tbdz4+Ml09MDtpW2c+PjBdPTE7YTpkbyBzd2l0Y2gobFtrW2U+PjJdPj4wXXwwKXtjYXNlIDE1MjpjYXNlIDE1NDp7a1tzPj4yXT0wO2tbcD4+Ml09MDtrW2g+PjJdPWpbKGtbZT4+Ml18MCkrMzI+PjFdO3doaWxlKDEpe2lmKCEoa1tkPj4yXXwwKSlicmVhaztpZighKChrW3M+PjJdfDApIT0wXjEpKWJyZWFrO2tbdD4+Ml09a1soa1tkPj4yXXwwKSs0Pj4yXTtrW20+PjJdPTA7d2hpbGUoMSl7aWYoKGtbbT4+Ml18MCk+PShrW2tbdD4+Ml0+PjJdfDApKWJyZWFrO2lmKChrWyhrW3Q+PjJdfDApKzgrKChrW20+PjJdfDApKjcyfDApKzQ0Pj4yXXwwKT09KGtbKGtbZT4+Ml18MCkrMjg+PjJdfDApKWJyZWFrO2tbbT4+Ml09KGtbbT4+Ml18MCkrMX1pZigoa1ttPj4yXXwwKTwoa1trW3Q+PjJdPj4yXXwwKSl7a1tzPj4yXT1rWyhrW3Q+PjJdfDApKzgrKChrW20+PjJdfDApKjcyfDApKzE2Pj4yXTtrW3A+PjJdPWtbKGtbdD4+Ml18MCkrOCsoKGtbbT4+Ml18MCkqNzJ8MCkrMjA+PjJdO2NvbnRpbnVlfWVsc2V7a1tkPj4yXT1rWyhrW2Q+PjJdfDApKzE2Pj4yXTtjb250aW51ZX19aWYoa1tzPj4yXXwwKXtpZihrW3A+PjJdfDApe2lmKChrW2g+PjJdfDApPDApYnJlYWsgYTtpZigoa1toPj4yXXwwKT49KGtba1trW3A+PjJdPj4yXT4+Ml18MCkpYnJlYWsgYTtrW24+PjJdPWtbKGtbKGtba1twPj4yXT4+Ml18MCkrND4+Ml18MCkrKChrW2g+PjJdfDApKjIwfDApPj4yXTtrW3UrND4+Ml09a1soa1twPj4yXXwwKSsyOD4+Ml07a1t1KzE2Pj4yXT1rW2Q+PjJdO2tbdT4+Ml09a1trW2Q+PjJdPj4yXTt2PW55KHUsa1tuPj4yXXwwLGcpfDA7a1t3Pj4yXT12O2JyZWFrIGF9aWYoa1soa1tzPj4yXXwwKSs2ND4+Ml18MCl7aWYoKGtbaD4+Ml18MCk8MClrW2g+PjJdPWpbKGtbcz4+Ml18MCkrMzI+PjFdO2lmKChrW2g+PjJdfDApPDApe2tbdz4+Ml09MTg3NTk7YnJlYWsgYX1lbHNle3Y9RmkoKGtbKGtbcz4+Ml18MCkrND4+Ml18MCkrKGtbaD4+Ml08PDQpfDAsMCl8MDtrW3c+PjJdPXY7aVtnPj4wXT1pWyhrWyhrW3M+PjJdfDApKzQ+PjJdfDApKyhrW2g+PjJdPDw0KSsxND4+MF18MDticmVhayBhfX19YnJlYWt9Y2FzZSAxMTk6e2tbcT4+Ml09a1soa1tlPj4yXXwwKSsyMD4+Ml07a1tvPj4yXT1rW2tbKGtba1txPj4yXT4+Ml18MCkrND4+Ml0+PjJdO2tbdis0Pj4yXT1rWyhrW3E+PjJdfDApKzI4Pj4yXTtrW3YrMTY+PjJdPWtbZD4+Ml07a1t2Pj4yXT1rW2tbZD4+Ml0+PjJdO3Y9bnkodixrW28+PjJdfDAsZyl8MDtrW3c+PjJdPXY7YnJlYWt9ZGVmYXVsdDp7fX13aGlsZSgwKTtpZighKGtbZj4+Ml18MCkpe3c9a1t3Pj4yXXwwO3I9eDtyZXR1cm4gd3wwfWlba1tmPj4yXT4+MF09aVtnPj4wXXwwO3c9a1t3Pj4yXXwwO3I9eDtyZXR1cm4gd3wwfWZ1bmN0aW9uIG95KGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MCxlPTA7ZT1yO3I9cisxNnwwO2I9ZSs4fDA7Yz1lKzR8MDtkPWU7a1tjPj4yXT1hO2E9dXkoa1tjPj4yXXwwKXwwO2tbYz4+Ml09YTtpZihrWyhrW2M+PjJdfDApKzQ+PjJdJjUxMil7aVtiPj4wXT0wO2Q9aVtiPj4wXXwwO3I9ZTtyZXR1cm4gZHwwfWtbZD4+Ml09bFtrW2M+PjJdPj4wXTtpZigoa1tkPj4yXXwwKT09MTE5KXtkPW95KGtba1soa1trWyhrW2M+PjJdfDApKzIwPj4yXT4+Ml18MCkrND4+Ml0+PjJdfDApfDA7aVtiPj4wXT1kO2Q9aVtiPj4wXXwwO3I9ZTtyZXR1cm4gZHwwfWlmKChrW2Q+PjJdfDApPT0xNTcpa1tkPj4yXT1sWyhrW2M+PjJdfDApKzM4Pj4wXTtpZigoa1tkPj4yXXwwKT09NjYpe2Q9Tngoa1soa1tjPj4yXXwwKSs4Pj4yXXwwLDApfDA7aVtiPj4wXT1kO2Q9aVtiPj4wXXwwO3I9ZTtyZXR1cm4gZHwwfWlmKChrW2Q+PjJdfDApPT0xNTR8KGtbZD4+Ml18MCk9PTE1Mil7ZD12eShrWyhrW2M+PjJdfDApKzQ0Pj4yXXwwLGpbKGtbYz4+Ml18MCkrMzI+PjFdfDApfDA7aVtiPj4wXT1kO2Q9aVtiPj4wXXwwO3I9ZTtyZXR1cm4gZHwwfWE9a1tjPj4yXXwwO2lmKChrW2Q+PjJdfDApPT0xNTkpe2Q9b3koa1soa1soa1trWyhrWyhrW2M+PjJdfDApKzEyPj4yXXwwKSsyMD4+Ml0+PjJdfDApKzQ+PjJdfDApKygoalthKzMyPj4xXXwwKSoyMHwwKT4+Ml18MCl8MDtpW2I+PjBdPWQ7ZD1pW2I+PjBdfDA7cj1lO3JldHVybiBkfDB9ZWxzZXtpW2I+PjBdPWlbYSsxPj4wXXwwO2Q9aVtiPj4wXXwwO3I9ZTtyZXR1cm4gZHwwfXJldHVybiAwfWZ1bmN0aW9uIHB5KGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscz0wO3E9cjtyPXIrNDh8MDtjPXErMzZ8MDtzPXErMzJ8MDtkPXErMjh8MDttPXErMjR8MDtoPXErMjB8MDtnPXErMTZ8MDtmPXErMTJ8MDtvPXErOHwwO249cSs0fDA7ZT1xO2tbYz4+Ml09YTtrW3M+PjJdPWI7a1tkPj4yXT1rW2tbYz4+Ml0+PjJdO2tbbT4+Ml09MDtrW2g+PjJdPWtbcz4+Ml07d2hpbGUoMSl7aWYoIShrW2g+PjJdfDApKWJyZWFrO2tbZz4+Ml09bFtrW2g+PjJdPj4wXTtpZihrWyhrW2g+PjJdfDApKzQ+PjJdJjUxMilicmVhaztpZigoa1tnPj4yXXwwKT09NjZ8KGtbZz4+Ml18MCk9PTE1Nil7a1toPj4yXT1rWyhrW2g+PjJdfDApKzEyPj4yXTtjb250aW51ZX1pZigoa1tnPj4yXXwwKT09NTMpe3A9OTticmVha31pZigoa1tnPj4yXXwwKT09MTU3PyhsWyhrW2g+PjJdfDApKzM4Pj4wXXwwKT09NTM6MCl7cD05O2JyZWFrfWlmKChrW2c+PjJdfDApPT0xNTR8KGtbZz4+Ml18MCk9PTE1Mnwoa1tnPj4yXXwwKT09MTU3fChrW2c+PjJdfDApPT04OD8oa1soa1toPj4yXXwwKSs0ND4+Ml18MCkhPTA6MCl7cD0xMjticmVha31pZighKGtbKGtbaD4+Ml18MCkrND4+Ml0mMjU2KSlicmVhaztpZigoa1soa1toPj4yXXwwKSsxMj4+Ml18MCkhPTA/KGtbKGtbKGtbaD4+Ml18MCkrMTI+PjJdfDApKzQ+PjJdJjI1NnwwKSE9MDowKXtrW2g+PjJdPWtbKGtbaD4+Ml18MCkrMTI+PjJdO2NvbnRpbnVlfWtbbj4+Ml09a1soa1toPj4yXXwwKSsxNj4+Ml07YTpkbyBpZigoa1soa1toPj4yXXwwKSsyMD4+Ml18MCkhPTA/KGtbKGtbaD4+Ml18MCkrND4+Ml0mMjA0OHwwKT09MDowKXtrW2U+PjJdPTA7d2hpbGUoMSl7aWYoKGtbZT4+Ml18MCk+PShrW2tbKGtbaD4+Ml18MCkrMjA+PjJdPj4yXXwwKSlicmVhayBhO2I9a1tlPj4yXXwwO2lmKGtbKGtbKGtbKGtbKGtbaD4+Ml18MCkrMjA+PjJdfDApKzQ+PjJdfDApKygoa1tlPj4yXXwwKSoyMHwwKT4+Ml18MCkrND4+Ml0mMjU2KWJyZWFrO2tbZT4+Ml09YisxfWtbbj4+Ml09a1soa1soa1soa1toPj4yXXwwKSsyMD4+Ml18MCkrND4+Ml18MCkrKGIqMjB8MCk+PjJdfXdoaWxlKDApO2tbaD4+Ml09a1tuPj4yXX1pZigocHwwKT09OSl7cz1xeShrW2M+PjJdfDAsaVsoa1tkPj4yXXwwKSs2Nj4+MF18MCwwLGtbKGtbaD4+Ml18MCkrOD4+Ml18MCl8MDtrW20+PjJdPXN9ZWxzZSBpZigocHwwKT09MTI/KGtbZj4+Ml09alsoa1toPj4yXXwwKSszMj4+MV0sKGtbZj4+Ml18MCk+PTApOjApe2tbbz4+Ml09a1soa1soa1soa1toPj4yXXwwKSs0ND4+Ml18MCkrND4+Ml18MCkrKGtbZj4+Ml08PDQpKzg+PjJdO3M9YWsoa1tkPj4yXXwwLGlbKGtbZD4+Ml18MCkrNjY+PjBdfDAsa1tvPj4yXXwwLDApfDA7a1ttPj4yXT1zfWlmKCEocnkoa1tjPj4yXXwwLGtbbT4+Ml18MCl8MCkpe3M9a1ttPj4yXXwwO3I9cTtyZXR1cm4gc3wwfWtbbT4+Ml09MDtzPWtbbT4+Ml18MDtyPXE7cmV0dXJuIHN8MH1mdW5jdGlvbiBxeShhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MCxtPTAsbj0wLG89MDtuPXI7cj1yKzMyfDA7bT1uO2U9bisyMHwwO2Y9bisyNHwwO289bisxNnwwO2c9bisxMnwwO2o9bis4fDA7aD1uKzR8MDtrW2U+PjJdPWE7aVtmPj4wXT1iO2tbbz4+Ml09YztrW2c+PjJdPWQ7a1toPj4yXT1rW2tbZT4+Ml0+PjJdO2tbaj4+Ml09a1tvPj4yXTtpZighKGtbaj4+Ml18MCkpe289YWsoa1toPj4yXXwwLGlbZj4+MF18MCxrW2c+PjJdfDAsMCl8MDtrW2o+PjJdPW99aWYoISgoa1tqPj4yXXwwKSE9MD8oa1soa1tqPj4yXXwwKSsxMj4+Ml18MCkhPTA6MCkpe3N5KGtbaD4+Ml18MCxsW2Y+PjBdfDAsa1tnPj4yXXwwKTtvPWFrKGtbaD4+Ml18MCxpW2Y+PjBdfDAsa1tnPj4yXXwwLDApfDA7a1tqPj4yXT1vfWlmKCgoa1tqPj4yXXwwKSE9MD8oa1soa1tqPj4yXXwwKSsxMj4+Ml18MCk9PTA6MCk/KHR5KGtbaD4+Ml18MCxrW2o+PjJdfDApfDApIT0wOjApa1tqPj4yXT0wO2lmKGtbaj4+Ml18MCl7bz1rW2o+PjJdfDA7cj1uO3JldHVybiBvfDB9bz1rW2U+PjJdfDA7a1ttPj4yXT1rW2c+PjJdO09oKG8sMjkwMTMsbSk7bz1rW2o+PjJdfDA7cj1uO3JldHVybiBvfDB9ZnVuY3Rpb24gcnkoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wO2o9cjtyPXIrMzJ8MDtjPWorMjB8MDtkPWorMTZ8MDtlPWorMTJ8MDtoPWorOHwwO2Y9ais0fDA7Zz1qO2tbZD4+Ml09YTtrW2U+PjJdPWI7aWYoKGtbZT4+Ml18MCkhPTA/KGtbaD4+Ml09a1trW2U+PjJdPj4yXSxrW2Y+PjJdPWtba1tkPj4yXT4+Ml0saD1xeShrW2Q+PjJdfDAsaVsoa1tmPj4yXXwwKSs2Nj4+MF18MCxrW2U+PjJdfDAsa1toPj4yXXwwKXwwLGtbZz4+Ml09aCwoa1tnPj4yXXwwKT09MCk6MCl7a1tjPj4yXT0xO2g9a1tjPj4yXXwwO3I9ajtyZXR1cm4gaHwwfWtbYz4+Ml09MDtoPWtbYz4+Ml18MDtyPWo7cmV0dXJuIGh8MH1mdW5jdGlvbiBzeShhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLG09MDttPXI7cj1yKzMyfDA7ZD1tKzIwfDA7ZT1tKzE2fDA7Zj1tKzEyfDA7aD1tKzh8MDtqPW0rNHwwO2c9bTtrW2Q+PjJdPWE7a1tlPj4yXT1iO2tbZj4+Ml09YztkbyBpZihrWyhrW2Q+PjJdfDApKzIzMj4+Ml18MCl7Yz1BaChrW2Q+PjJdfDAsa1tmPj4yXXwwKXwwO2tbaD4+Ml09YztpZihrW2g+PjJdfDApe2ljW2tbKGtbZD4+Ml18MCkrMjMyPj4yXSYyNTVdKGtbKGtbZD4+Ml18MCkrMjQwPj4yXXwwLGtbZD4+Ml18MCxrW2U+PjJdfDAsa1toPj4yXXwwKTtiZyhrW2Q+PjJdfDAsa1toPj4yXXwwKTticmVha31lbHNle3I9bTtyZXR1cm59fXdoaWxlKDApO2lmKCEoa1soa1tkPj4yXXwwKSsyMzY+PjJdfDApKXtyPW07cmV0dXJufWM9aGkoa1tkPj4yXXwwKXwwO2tbZz4+Ml09YztpaShrW2c+PjJdfDAsLTEsa1tmPj4yXXwwLDEsMCk7Yz1oaChrW2c+PjJdfDAsKChpWzk2OF18MCk9PTA/MzoyKSYyNTUpfDA7a1tqPj4yXT1jO2lmKGtbaj4+Ml18MClpY1trWyhrW2Q+PjJdfDApKzIzNj4+Ml0mMjU1XShrWyhrW2Q+PjJdfDApKzI0MD4+Ml18MCxrW2Q+PjJdfDAsbFsoa1tkPj4yXXwwKSs2Nj4+MF18MCxrW2o+PjJdfDApO21oKGtbZz4+Ml18MCk7cj1tO3JldHVybn1mdW5jdGlvbiB0eShhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTA7aj1yO3I9ciszMnwwO2Y9aisyMHwwO2M9aisxNnwwO2c9aisxMnwwO2g9ais4fDA7ZT1qKzR8MDtkPWo7a1tjPj4yXT1hO2tbZz4+Ml09YjtrW2U+PjJdPWtba1tnPj4yXT4+Ml07a1tkPj4yXT0wO3doaWxlKDEpe2lmKChrW2Q+PjJdfDApPj0zKXtjPTY7YnJlYWt9Yj1hayhrW2M+PjJdfDAsaVsyOTA0NCsoa1tkPj4yXXwwKT4+MF18MCxrW2U+PjJdfDAsMCl8MDtrW2g+PjJdPWI7aWYoa1soa1toPj4yXXwwKSsxMj4+Ml18MCl7Yz00O2JyZWFrfWtbZD4+Ml09KGtbZD4+Ml18MCkrMX1pZigoY3wwKT09NCl7ZT1rW2c+PjJdfDA7aD1rW2g+PjJdfDA7a1tlPj4yXT1rW2g+PjJdO2tbZSs0Pj4yXT1rW2grND4+Ml07a1tlKzg+PjJdPWtbaCs4Pj4yXTtrW2UrMTI+PjJdPWtbaCsxMj4+Ml07a1tlKzE2Pj4yXT1rW2grMTY+PjJdO2tbKGtbZz4+Ml18MCkrMTY+PjJdPTA7a1tmPj4yXT0wO2g9a1tmPj4yXXwwO3I9ajtyZXR1cm4gaHwwfWVsc2UgaWYoKGN8MCk9PTYpe2tbZj4+Ml09MTtoPWtbZj4+Ml18MDtyPWo7cmV0dXJuIGh8MH1yZXR1cm4gMH1mdW5jdGlvbiB1eShhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTA7ZD1yO3I9cisxNnwwO2M9ZDtrW2M+PjJdPWE7d2hpbGUoMSl7aWYoa1tjPj4yXXwwKWE9KGtbKGtbYz4+Ml18MCkrND4+Ml0mNDA5NnwwKSE9MDtlbHNlIGE9MDtiPWtbYz4+Ml18MDtpZighYSlicmVhazthPWtbYz4+Ml18MDtpZihrW2IrND4+Ml0mMjYyMTQ0KXtrW2M+PjJdPWtba1soa1thKzIwPj4yXXwwKSs0Pj4yXT4+Ml07Y29udGludWV9ZWxzZXtrW2M+PjJdPWtbYSsxMj4+Ml07Y29udGludWV9fXI9ZDtyZXR1cm4gYnwwfWZ1bmN0aW9uIHZ5KGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wO2U9cjtyPXIrMTZ8MDtjPWUrNHwwO2Q9ZTtrW2M+PjJdPWE7a1tkPj4yXT1iO2lmKChrW2Q+PjJdfDApPDApe2E9Njg7YT1hJjI1NTtyPWU7cmV0dXJuIGF8MH1hPWlbKGtbKGtbYz4+Ml18MCkrND4+Ml18MCkrKGtbZD4+Ml08PDQpKzEzPj4wXXwwO2E9YSYyNTU7cj1lO3JldHVybiBhfDB9ZnVuY3Rpb24gd3koYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wO2g9cjtyPXIrMTZ8MDtkPWgrMTJ8MDtlPWgrOHwwO2Y9aCs0fDA7Zz1oO2tbZD4+Ml09YTtrW2U+PjJdPWI7a1tmPj4yXT1jO2lmKCEoa1tlPj4yXXwwKSl7cj1oO3JldHVybn1rW2c+PjJdPWtba1tkPj4yXT4+Ml07aWYoaVsoa1tnPj4yXXwwKSs2OT4+MF18MCl7cj1oO3JldHVybn1pZihrWyhrW2U+PjJdfDApKzg+PjJdJjEyOCl7cj1oO3JldHVybn14eShrW2Q+PjJdfDAsa1tlPj4yXXwwKTtpZihrWyhrW2Q+PjJdfDApKzM2Pj4yXXwwKXtyPWg7cmV0dXJufWlmKGxbKGtbZz4+Ml18MCkrNjk+PjBdfDApe3I9aDtyZXR1cm59eXkoa1tkPj4yXXwwLGtbZT4+Ml18MCxrW2Y+PjJdfDApO2lmKGtbKGtbZD4+Ml18MCkrMzY+PjJdfDApe3I9aDtyZXR1cm59aWYobFsoa1tnPj4yXXwwKSs2OT4+MF18MCl7cj1oO3JldHVybn16eShrW2Q+PjJdfDAsa1tlPj4yXXwwKTtyPWg7cmV0dXJufWZ1bmN0aW9uIHh5KGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MDtlPXI7cj1yKzQ4fDA7Zj1lKzMyfDA7Yz1lKzI4fDA7ZD1lO2tbZj4+Ml09YTtrW2M+PjJdPWI7a1tkPj4yXT0wO2tbZCs0Pj4yXT0wO2tbZCs4Pj4yXT0wO2tbZCsxMj4+Ml09MDtrW2QrMTY+PjJdPTA7a1tkKzIwPj4yXT0wO2tbZCsyND4+Ml09MDtrW2QrND4+Ml09MTkwO2tbZD4+Ml09a1tmPj4yXTtpZihpWyhrW2Y+PjJdfDApKzIyPj4wXXwwKXtrW2QrOD4+Ml09MTkxO0N5KGQsa1tjPj4yXXwwKXwwfWtbZCs4Pj4yXT0xOTI7aWYoa1soa1tjPj4yXXwwKSs4Pj4yXSYxMDI0KXtmPWtbYz4+Ml18MDtDeShkLGYpfDA7cj1lO3JldHVybn1rW2QrMTI+PjJdPTEzMjtmPWtbYz4+Ml18MDtDeShkLGYpfDA7cj1lO3JldHVybn1mdW5jdGlvbiB5eShhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTA7ZD1yO3I9cis0OHwwO2g9ZCszNnwwO2U9ZCszMnwwO2c9ZCsyOHwwO2Y9ZDtrW2g+PjJdPWE7a1tlPj4yXT1iO2tbZz4+Ml09YztrW2Y+PjJdPTA7a1tmKzQ+PjJdPTA7a1tmKzg+PjJdPTA7a1tmKzEyPj4yXT0wO2tbZisxNj4+Ml09MDtrW2YrMjA+PjJdPTA7a1tmKzI0Pj4yXT0wO2tbZis0Pj4yXT0xOTM7a1tmKzg+PjJdPTE5NDtrW2Y+PjJdPWtbaD4+Ml07a1tmKzI0Pj4yXT1rW2c+PjJdO0N5KGYsa1tlPj4yXXwwKXwwO3I9ZDtyZXR1cm59ZnVuY3Rpb24genkoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wO2M9cjtyPXIrNDh8MDtmPWMrMzJ8MDtkPWMrMjh8MDtlPWM7a1tmPj4yXT1hO2tbZD4+Ml09YjtrW2U+PjJdPTA7a1tlKzQ+PjJdPTA7a1tlKzg+PjJdPTA7a1tlKzEyPj4yXT0wO2tbZSsxNj4+Ml09MDtrW2UrMjA+PjJdPTA7a1tlKzI0Pj4yXT0wO2tbZSsxMj4+Ml09MTMzO2tbZSs0Pj4yXT0xOTA7a1tlPj4yXT1rW2Y+PjJdO0N5KGUsa1tkPj4yXXwwKXwwO3I9YztyZXR1cm59ZnVuY3Rpb24gQXkoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTAsaT0wLGo9MCxtPTA7aT1yO3I9ciszMnwwO209aSsyOHwwO2o9aSsyNHwwO2U9aSsyMHwwO2M9aSsxNnwwO2g9aSsxMnwwO2Q9aSs4fDA7Zz1pKzR8MDtmPWk7a1ttPj4yXT1hO2tbaj4+Ml09YjthPShrW2o+PjJdfDApKzh8MDtrW2E+PjJdPWtbYT4+Ml18MTI4O2tbZT4+Ml09a1trW20+PjJdPj4yXTtrW2g+PjJdPWtbKGtbaj4+Ml18MCkrMjg+PjJdO2tbYz4+Ml09MDtrW2Q+PjJdPShrW2g+PjJdfDApKzg7d2hpbGUoMSl7aWYoKGtbYz4+Ml18MCk+PShrW2tbaD4+Ml0+PjJdfDApKWJyZWFrO2tbZz4+Ml09a1soa1tkPj4yXXwwKSsxNj4+Ml07aWYoKChsWyhrW2c+PjJdfDApKzQyPj4wXXwwKSYyfDApIT0wPyhrW2Y+PjJdPWtbKGtbZD4+Ml18MCkrMjA+PjJdLChrW2Y+PjJdfDApIT0wKTowKXt3aGlsZSgxKXtpZighKGtbKGtbZj4+Ml18MCkrNDg+PjJdfDApKWJyZWFrO2tbZj4+Ml09a1soa1tmPj4yXXwwKSs0OD4+Ml19bXkoa1tlPj4yXXwwLGtbZz4+Ml18MCxrW2Y+PjJdfDApfWtbYz4+Ml09KGtbYz4+Ml18MCkrMTtrW2Q+PjJdPShrW2Q+PjJdfDApKzcyfXI9aTtyZXR1cm59ZnVuY3Rpb24gQnkoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wO2M9cjtyPXIrMTZ8MDtrW2MrND4+Ml09YTtrW2M+PjJdPWI7cj1jO3JldHVybiAwfWZ1bmN0aW9uIEN5KGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTA7Zz1yO3I9cisxNnwwO2Q9ZysxMnwwO2U9Zys4fDA7Yz1nKzR8MDtmPWc7a1tlPj4yXT1hO2tbYz4+Ml09YjtkbyBpZihrW2M+PjJdfDApe2lmKChrWyhrW2U+PjJdfDApKzg+PjJdfDApPT0wPyhrWyhrW2U+PjJdfDApKzEyPj4yXXwwKT09MDowKWJyZWFrO2tbZj4+Ml09MDthPShrW2U+PjJdfDApKzE2fDA7a1thPj4yXT0oa1thPj4yXXwwKSsxO3doaWxlKDEpe2lmKCEoa1tjPj4yXXwwKSl7Yz0xNTticmVha31pZigoa1soa1tlPj4yXXwwKSs4Pj4yXXwwKSE9MD8oYT1nY1trWyhrW2U+PjJdfDApKzg+PjJdJjI1NV0oa1tlPj4yXXwwLGtbYz4+Ml18MCl8MCxrW2Y+PjJdPWEsKGtbZj4+Ml18MCkhPTApOjApe2M9MTU7YnJlYWt9aWYoRHkoa1tlPj4yXXwwLGtbYz4+Ml18MCl8MCl7Yz0xMTticmVha31pZihFeShrW2U+PjJdfDAsa1tjPj4yXXwwKXwwKXtjPTExO2JyZWFrfWlmKGtbKGtbZT4+Ml18MCkrMTI+PjJdfDApJGJba1soa1tlPj4yXXwwKSsxMj4+Ml0mMjU1XShrW2U+PjJdfDAsa1tjPj4yXXwwKTtrW2M+PjJdPWtbKGtbYz4+Ml18MCkrNDg+PjJdfWlmKChjfDApPT0xMSl7Zj0oa1tlPj4yXXwwKSsxNnwwO2tbZj4+Ml09KGtbZj4+Ml18MCkrLTE7a1tkPj4yXT0yO2Y9a1tkPj4yXXwwO3I9ZztyZXR1cm4gZnwwfWVsc2UgaWYoKGN8MCk9PTE1KXtlPShrW2U+PjJdfDApKzE2fDA7a1tlPj4yXT0oa1tlPj4yXXwwKSstMTtrW2Q+PjJdPWtbZj4+Ml0mMjtmPWtbZD4+Ml18MDtyPWc7cmV0dXJuIGZ8MH19d2hpbGUoMCk7a1tkPj4yXT0wO2Y9a1tkPj4yXXwwO3I9ZztyZXR1cm4gZnwwfWZ1bmN0aW9uIER5KGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MDtmPXI7cj1yKzE2fDA7Yz1mKzh8MDtkPWYrNHwwO2U9ZjtrW2Q+PjJdPWE7a1tlPj4yXT1iO2RvIGlmKCEoRnkoa1tkPj4yXXwwLGtba1tlPj4yXT4+Ml18MCl8MCkpe2lmKEd5KGtbZD4+Ml18MCxrWyhrW2U+PjJdfDApKzMyPj4yXXwwKXwwKXtrW2M+PjJdPTI7YnJlYWt9aWYoRnkoa1tkPj4yXXwwLGtbKGtbZT4+Ml18MCkrMzY+PjJdfDApfDApe2tbYz4+Ml09MjticmVha31pZihHeShrW2Q+PjJdfDAsa1soa1tlPj4yXXwwKSs0MD4+Ml18MCl8MCl7a1tjPj4yXT0yO2JyZWFrfWlmKEZ5KGtbZD4+Ml18MCxrWyhrW2U+PjJdfDApKzQ0Pj4yXXwwKXwwKXtrW2M+PjJdPTI7YnJlYWt9aWYoR3koa1tkPj4yXXwwLGtbKGtbZT4+Ml18MCkrNTY+PjJdfDApfDApe2tbYz4+Ml09MjticmVha31pZihHeShrW2Q+PjJdfDAsa1soa1tlPj4yXXwwKSs2MD4+Ml18MCl8MCl7a1tjPj4yXT0yO2JyZWFrfWVsc2V7a1tjPj4yXT0wO2JyZWFrfX1lbHNlIGtbYz4+Ml09Mjt3aGlsZSgwKTtyPWY7cmV0dXJuIGtbYz4+Ml18MH1mdW5jdGlvbiBFeShhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wLGg9MCxpPTA7aD1yO3I9ciszMnwwO2c9aCsyMHwwO2M9aCsxNnwwO2k9aCsxMnwwO2Y9aCs4fDA7ZD1oKzR8MDtlPWg7a1tjPj4yXT1hO2tbaT4+Ml09YjtrW2Y+PjJdPWtbKGtbaT4+Ml18MCkrMjg+PjJdO2E6ZG8gaWYoa1tmPj4yXXwwKXtrW2Q+PjJdPWtba1tmPj4yXT4+Ml07a1tlPj4yXT0oa1tmPj4yXXwwKSs4O3doaWxlKDEpe2lmKChrW2Q+PjJdfDApPD0wKWJyZWFrIGE7aWYoQ3koa1tjPj4yXXwwLGtbKGtbZT4+Ml18MCkrMjA+PjJdfDApfDApe2M9NTticmVha31pZigoKGxbKGtbZT4+Ml18MCkrMzYrMT4+MF18MCk+Pj4yJjF8MCkhPTA/KEZ5KGtbYz4+Ml18MCxrWyhrW2U+PjJdfDApKzY0Pj4yXXwwKXwwKSE9MDowKXtjPTg7YnJlYWt9a1tkPj4yXT0oa1tkPj4yXXwwKSstMTtrW2U+PjJdPShrW2U+PjJdfDApKzcyfWlmKChjfDApPT01KXtrW2c+PjJdPTI7aT1rW2c+PjJdfDA7cj1oO3JldHVybiBpfDB9ZWxzZSBpZigoY3wwKT09OCl7a1tnPj4yXT0yO2k9a1tnPj4yXXwwO3I9aDtyZXR1cm4gaXwwfX13aGlsZSgwKTtrW2c+PjJdPTA7aT1rW2c+PjJdfDA7cj1oO3JldHVybiBpfDB9ZnVuY3Rpb24gRnkoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTA7aD1yO3I9ciszMnwwO2M9aCsxNnwwO2Q9aCsxMnwwO2U9aCs4fDA7Zj1oKzR8MDtnPWg7a1tkPj4yXT1hO2tbZT4+Ml09YjthOmRvIGlmKGtbZT4+Ml18MCl7a1tmPj4yXT1rW2tbZT4+Ml0+PjJdO2tbZz4+Ml09a1soa1tlPj4yXXwwKSs0Pj4yXTt3aGlsZSgxKXtpZigoa1tmPj4yXXwwKTw9MClicmVhayBhO2lmKEd5KGtbZD4+Ml18MCxrW2tbZz4+Ml0+PjJdfDApfDApYnJlYWs7a1tmPj4yXT0oa1tmPj4yXXwwKSstMTtrW2c+PjJdPShrW2c+PjJdfDApKzIwfWtbYz4+Ml09MjthPWtbYz4+Ml18MDtyPWg7cmV0dXJuIGF8MH13aGlsZSgwKTtrW2M+PjJdPTA7YT1rW2M+PjJdfDA7cj1oO3JldHVybiBhfDB9ZnVuY3Rpb24gR3koYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTA7ZT1yO3I9cisxNnwwO2M9ZSs0fDA7ZD1lO2tbYz4+Ml09YTtrW2Q+PjJdPWI7aWYoIShrW2Q+PjJdfDApKXthPTA7cj1lO3JldHVybiBhfDB9YT1IeShrW2M+PjJdfDAsa1tkPj4yXXwwKXwwO3I9ZTtyZXR1cm4gYXwwfWZ1bmN0aW9uIEh5KGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTA7Zz1yO3I9cisxNnwwO2M9ZysxMnwwO2Q9Zys4fDA7ZT1nKzR8MDtmPWc7a1tkPj4yXT1hO2tbZT4+Ml09YjthPWdjW2tbKGtbZD4+Ml18MCkrND4+Ml0mMjU1XShrW2Q+PjJdfDAsa1tlPj4yXXwwKXwwO2tbZj4+Ml09YTtpZigoa1tmPj4yXXwwKT09MD8oa1soa1tlPj4yXXwwKSs0Pj4yXSY4NDA0OTkyfDApPT0wOjApe2lmKChrWyhrW2U+PjJdfDApKzEyPj4yXXwwKSE9MD8oSHkoa1tkPj4yXXwwLGtbKGtbZT4+Ml18MCkrMTI+PjJdfDApfDApIT0wOjApe2tbYz4+Ml09MjtmPWtbYz4+Ml18MDtyPWc7cmV0dXJuIGZ8MH1pZigoa1soa1tlPj4yXXwwKSsxNj4+Ml18MCkhPTA/KEh5KGtbZD4+Ml18MCxrWyhrW2U+PjJdfDApKzE2Pj4yXXwwKXwwKSE9MDowKXtrW2M+PjJdPTI7Zj1rW2M+PjJdfDA7cj1nO3JldHVybiBmfDB9aWYoa1soa1tlPj4yXXwwKSs0Pj4yXSYyMDQ4KXtpZihDeShrW2Q+PjJdfDAsa1soa1tlPj4yXXwwKSsyMD4+Ml18MCl8MCl7a1tjPj4yXT0yO2Y9a1tjPj4yXXwwO3I9ZztyZXR1cm4gZnwwfX1lbHNlIGlmKChrWyhrW2U+PjJdfDApKzIwPj4yXXwwKSE9MD8oRnkoa1tkPj4yXXwwLGtbKGtbZT4+Ml18MCkrMjA+PjJdfDApfDApIT0wOjApe2tbYz4+Ml09MjtmPWtbYz4+Ml18MDtyPWc7cmV0dXJuIGZ8MH1rW2M+PjJdPTA7Zj1rW2M+PjJdfDA7cj1nO3JldHVybiBmfDB9a1tjPj4yXT1rW2Y+PjJdJjI7Zj1rW2M+PjJdfDA7cj1nO3JldHVybiBmfDB9ZnVuY3Rpb24gSXkoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTAsbj0wLG89MCxwPTAscT0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wLEU9MCxGPTAsRz0wLEg9MCxJPTAsSj0wLEs9MCxMPTAsTT0wO009cjtyPXIrMTQ0fDA7Zz1NKzQwfDA7Rj1NKzMyfDA7SD1NKzI0fDA7Rz1NKzE2fDA7RT1NKzh8MDtEPU07TD1NKzEyOHwwO3A9TSsxMjR8MDtxPU0rMTIwfDA7QT1NKzExNnwwO0M9TSsxMTJ8MDtoPU0rMTA4fDA7bz1NKzEwNHwwO249TSsxMDB8MDtmPU0rOTZ8MDt6PU0rOTJ8MDt2PU0rODh8MDt4PU0rODR8MDtJPU0rODB8MDt1PU0rNzZ8MDt3PU0rNzJ8MDtKPU0rNjh8MDt5PU0rNjR8MDt0PU0rMTMyfDA7cz1NKzYwfDA7Qj1NKzU2fDA7ZD1NKzUyfDA7Yz1NKzQ4fDA7ZT1NKzQ0fDA7a1twPj4yXT1hO2tbcT4+Ml09YjtrW0E+PjJdPWtbKGtbcD4+Ml18MCkrMjQ+PjJdO2tbQz4+Ml09a1trW0E+PjJdPj4yXTtpZihrWyhrW3E+PjJdfDApKzQ+PjJdJjQpe2tbTD4+Ml09MTtMPWtbTD4+Ml18MDtyPU07cmV0dXJuIEx8MH1hPShrW3E+PjJdfDApKzR8MDtrW2E+PjJdPWtbYT4+Ml18NDtzd2l0Y2gobFtrW3E+PjJdPj4wXXwwKXtjYXNlIDU1OntLPWl6KGtbQz4+Ml18MCwwLDAsa1soa1txPj4yXXwwKSs4Pj4yXXwwLGtbQT4+Ml18MCxrW3E+PjJdfDApfDA7a1tMPj4yXT1LO0w9a1tMPj4yXXwwO3I9TTtyZXR1cm4gTHwwfWNhc2UgMTIyOntqeihrW0M+PjJdfDAsa1tBPj4yXXwwLDI5NTYxLDMyKTtrW2Y+PjJdPWtbKGtbcT4+Ml18MCkrMTY+PjJdO2lmKChsW2tbZj4+Ml0+PjBdfDApPT01NSl7a1tuPj4yXT0wO2tbbz4+Ml09a1soa1soa1txPj4yXXwwKSsxMj4+Ml18MCkrOD4+Ml07a1toPj4yXT1rWyhrW2Y+PjJdfDApKzg+PjJdfWVsc2V7a1tuPj4yXT1rWyhrWyhrW3E+PjJdfDApKzEyPj4yXXwwKSs4Pj4yXTtrW28+PjJdPWtbKGtbKGtbZj4+Ml18MCkrMTI+PjJdfDApKzg+PjJdO2tbaD4+Ml09a1soa1soa1tmPj4yXXwwKSsxNj4+Ml18MCkrOD4+Ml19Sz1peihrW0M+PjJdfDAsa1tuPj4yXXwwLGtbbz4+Ml18MCxrW2g+PjJdfDAsa1tBPj4yXXwwLGtbcT4+Ml18MCl8MDtrW0w+PjJdPUs7TD1rW0w+PjJdfDA7cj1NO3JldHVybiBMfDB9Y2FzZSAxNTE6e2tbej4+Ml09a1soa1txPj4yXXwwKSsyMD4+Ml07aWYoa1t6Pj4yXXwwKWM9a1trW3o+PjJdPj4yXXwwO2Vsc2UgYz0wO2tbdj4+Ml09YztrW3g+PjJdPTA7a1tJPj4yXT0wO2tbdT4+Ml09MDtpW3Q+PjBdPWlbKGtba1tDPj4yXT4+Ml18MCkrNjY+PjBdfDA7a1tKPj4yXT1rWyhrW3E+PjJdfDApKzg+PjJdO289VGYoa1tKPj4yXXwwKXwwO2tbdz4+Ml09bztvPXVpKGtba1tDPj4yXT4+Ml18MCxrW0o+PjJdfDAsa1t2Pj4yXXwwLGlbdD4+MF18MCwwKXwwO2tbeT4+Ml09bztkbyBpZighKGtbeT4+Ml18MCkpe0U9dWkoa1trW0M+PjJdPj4yXXwwLGtbSj4+Ml18MCwtMixpW3Q+PjBdfDAsMCl8MDtrW3k+PjJdPUU7aWYoIShrW3k+PjJdfDApKXtrW3g+PjJdPTE7YnJlYWt9ZWxzZXtrW0k+PjJdPTE7YnJlYWt9fWVsc2V7a1t1Pj4yXT0oa1soa1t5Pj4yXXwwKSsxNj4+Ml18MCkhPTAmMTtkbyBpZihtWyhrW3k+PjJdfDApKzI+PjFdJjEwMjQpe3Q9KGtbcT4+Ml18MCkrNHwwO2tbdD4+Ml09a1t0Pj4yXXwyNjYyNDA7aWYoKGtbdj4+Ml18MCkhPTIpe2tbKGtbcT4+Ml18MCkrMjg+PjJdPShpW2tbKGtbeT4+Ml18MCkrMjA+PjJdPj4wXXwwKT09MTE3PzgzODg2MDg6MTI1ODI5MTIwO2JyZWFrfXY9a3ooa1soa1soa1t6Pj4yXXwwKSs0Pj4yXXwwKSsyMD4+Ml18MCl8MDtrWyhrW3E+PjJdfDApKzI4Pj4yXT12O2lmKChrWyhrW3E+PjJdfDApKzI4Pj4yXXwwKTwwKXtPaChrW0M+PjJdfDAsMjk1NzgsRCk7RD0oa1tBPj4yXXwwKSsyNHwwO2tbRD4+Ml09KGtbRD4+Ml18MCkrMX19d2hpbGUoMCk7RD1reChrW0M+PjJdfDAsMzEsMCxrWyhrW3k+PjJdfDApKzIwPj4yXXwwLDApfDA7a1tzPj4yXT1EO2lmKGtbcz4+Ml18MCl7aWYoKGtbcz4+Ml18MCk9PTEpe0s9a1tDPj4yXXwwO2tbRT4+Ml09a1soa1t5Pj4yXXwwKSsyMD4+Ml07T2goSywyOTY0OSxFKTtLPShrW0E+PjJdfDApKzI0fDA7a1tLPj4yXT0oa1tLPj4yXXwwKSsxfWlba1txPj4yXT4+MF09MTAxO2tbTD4+Ml09MTtMPWtbTD4+Ml18MDtyPU07cmV0dXJuIEx8MH1lbHNle2lmKG1bKGtbeT4+Ml18MCkrMj4+MV0mMTAyNDApe0U9KGtbcT4+Ml18MCkrNHwwO2tbRT4+Ml09a1tFPj4yXXw1MjQyODh9aWYobVsoa1t5Pj4yXXwwKSsyPj4xXSYyMDQ4KWJyZWFrO2p6KGtbQz4+Ml18MCxrW0E+PjJdfDAsMjk2ODQsMzQpO2JyZWFrfX13aGlsZSgwKTtpZigoa1t1Pj4yXXwwKSE9MD8obVsoa1tBPj4yXXwwKSsyOD4+MV0mMXwwKT09MDowKXtJPWtbQz4+Ml18MDtKPWtbSj4+Ml18MDtrW0c+PjJdPWtbdz4+Ml07a1tHKzQ+PjJdPUo7T2goSSwyOTcxMixHKTtKPShrW0E+PjJdfDApKzI0fDA7a1tKPj4yXT0oa1tKPj4yXXwwKSsxO2tbdT4+Ml09MH1lbHNlIEs9MzE7ZG8gaWYoKEt8MCk9PTMxKXtpZigoa1t4Pj4yXXwwKSE9MD8obFsoa1trW0M+PjJdPj4yXXwwKSsxNDgrNT4+MF18MCk9PTA6MCl7Sz1rW0M+PjJdfDA7Sj1rW0o+PjJdfDA7a1tIPj4yXT1rW3c+PjJdO2tbSCs0Pj4yXT1KO09oKEssMjk3NDgsSCk7Sz0oa1tBPj4yXXwwKSsyNHwwO2tbSz4+Ml09KGtbSz4+Ml18MCkrMTticmVha31pZihrW0k+PjJdfDApe0s9a1tDPj4yXXwwO0o9a1tKPj4yXXwwO2tbRj4+Ml09a1t3Pj4yXTtrW0YrND4+Ml09SjtPaChLLDI5NzcxLEYpO0s9KGtbQT4+Ml18MCkrMjR8MDtrW0s+PjJdPShrW0s+PjJdfDApKzF9fXdoaWxlKDApO2lmKGtbdT4+Ml18MCl7Sz0oa1tBPj4yXXwwKSsyOHwwO2pbSz4+MV09bVtLPj4xXSYtMn1GeShrW3A+PjJdfDAsa1t6Pj4yXXwwKXwwO2lmKGtbdT4+Ml18MCl7a1tCPj4yXT1rW0E+PjJdO2lba1txPj4yXT4+MF09LTEwMztpWyhrW3E+PjJdfDApKzM4Pj4wXT0wO3doaWxlKDEpe2lmKCEoa1tCPj4yXXwwKSlicmVhaztpZighKChseihrW3E+PjJdfDAsa1soa1tCPj4yXXwwKSs0Pj4yXXwwKXwwKSE9MF4xKSlicmVhaztLPShrW3E+PjJdfDApKzM4fDA7aVtLPj4wXT0oaVtLPj4wXXwwKSsxPDwyND4+MjQ7a1tCPj4yXT1rWyhrW0I+PjJdfDApKzE2Pj4yXX1pZihrW0I+PjJdfDApe0s9KGtbQj4+Ml18MCkrMjh8MDtqW0s+PjFdPW1bSz4+MV18KDE2fG1bKGtbeT4+Ml18MCkrMj4+MV0mNDA5Nil9Sz0oa1tBPj4yXXwwKSsyOHwwO2pbSz4+MV09bVtLPj4xXXwxfWtbTD4+Ml09MTtMPWtbTD4+Ml18MDtyPU07cmV0dXJuIEx8MH1jYXNlIDMzOmNhc2UgMjA6Y2FzZSAxMTk6e2lmKChrWyhrW3E+PjJdfDApKzQ+PjJdJjIwNDh8MCkhPTA/KGtbZD4+Ml09a1soa1tBPj4yXXwwKSsyMD4+Ml0sanooa1tDPj4yXXwwLGtbQT4+Ml18MCwyOTgxNiwzOCksQ3koa1twPj4yXXwwLGtbKGtbcT4+Ml18MCkrMjA+PjJdfDApfDAsKGtbZD4+Ml18MCkhPShrWyhrW0E+PjJdfDApKzIwPj4yXXwwKSk6MCl7Sz0oa1txPj4yXXwwKSs0fDA7a1tLPj4yXT1rW0s+PjJdfDMyO0s9KGtbQT4+Ml18MCkrMjh8MDtqW0s+PjFdPW1bSz4+MV18NjR9YnJlYWt9Y2FzZSAxMzU6e2p6KGtbQz4+Ml18MCxrW0E+PjJdfDAsMjk4MjcsMzgpO2JyZWFrfWNhc2UgMTQ4OmNhc2UgMjk6Y2FzZSA0MTpjYXNlIDM4OmNhc2UgMzk6Y2FzZSA0MDpjYXNlIDM2OmNhc2UgMzc6e2lmKChpWyhrW2tbQz4+Ml0+PjJdfDApKzY5Pj4wXXwwKT09MD8oSz1teihrWyhrW3E+PjJdfDApKzEyPj4yXXwwKXwwLGtbYz4+Ml09SyxLPW16KGtbKGtbcT4+Ml18MCkrMTY+PjJdfDApfDAsa1tlPj4yXT1LLChrW2M+PjJdfDApIT0oa1tlPj4yXXwwKSk6MClPaChrW0M+PjJdfDAsMjk4MzgsZyk7YnJlYWt9ZGVmYXVsdDp7fX1pZihrWyhrW0M+PjJdfDApKzM2Pj4yXXwwKWM9MTtlbHNlIGM9KGxbKGtba1tDPj4yXT4+Ml18MCkrNjk+PjBdfDApIT0wO2tbTD4+Ml09Yz8yOjA7TD1rW0w+PjJdfDA7cj1NO3JldHVybiBMfDB9ZnVuY3Rpb24gSnkoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTAsbj0wLG89MCxwPTAscT0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wLEU9MDtFPXI7cj1yKzEyOHwwO0M9RSs4fDA7Qj1FO0Q9RSsxMTZ8MDtjPUUrMTEyfDA7eD1FKzEwOHwwO3M9RSsxMDR8MDt2PUUrNzJ8MDt5PUUrNjh8MDtmPUUrNjR8MDtBPUUrNjB8MDtlPUUrNTZ8MDtoPUUrNTJ8MDt6PUUrNDh8MDtkPUUrNDR8MDt0PUUrNDB8MDtuPUUrMzZ8MDtxPUUrMzJ8MDtnPUUrMjh8MDt3PUUrMjR8MDtvPUUrMjB8MDt1PUUrMTZ8MDtwPUUrMTJ8MDtrW2M+PjJdPWE7a1t4Pj4yXT1iO2lmKGtbKGtbeD4+Ml18MCkrOD4+Ml0mNCl7a1tEPj4yXT0xO0Q9a1tEPj4yXXwwO3I9RTtyZXR1cm4gRHwwfWtbcz4+Ml09a1soa1tjPj4yXXwwKSsyND4+Ml07a1tBPj4yXT1rW2tbYz4+Ml0+PjJdO2tbZD4+Ml09a1trW0E+PjJdPj4yXTtpZighKGtbKGtbeD4+Ml18MCkrOD4+Ml0mNjQpKXt3eShrW0E+PjJdfDAsa1t4Pj4yXXwwLGtbcz4+Ml18MCk7aWYoa1soa1tBPj4yXXwwKSszNj4+Ml18MCljPTE7ZWxzZSBjPShsWyhrW2Q+PjJdfDApKzY5Pj4wXXwwKSE9MDtrW0Q+PjJdPWM/MjoxO0Q9a1tEPj4yXXwwO3I9RTtyZXR1cm4gRHwwfWtbeT4+Ml09KGtbKGtbeD4+Ml18MCkrNDg+PjJdfDApIT0wJjE7a1tmPj4yXT0wO2tbej4+Ml09a1t4Pj4yXTthOndoaWxlKDEpe2lmKCEoa1t4Pj4yXXwwKSl7Yz02ODticmVha31hPShrW3g+PjJdfDApKzh8MDtrW2E+PjJdPWtbYT4+Ml18NDtrW3Y+PjJdPTA7a1t2KzQ+PjJdPTA7a1t2Kzg+PjJdPTA7a1t2KzEyPj4yXT0wO2tbdisxNj4+Ml09MDtrW3YrMjA+PjJdPTA7a1t2KzI0Pj4yXT0wO2tbdisyOD4+Ml09MDtrW3Y+PjJdPWtbQT4+Ml07aWYoS3kodixrWyhrW3g+PjJdfDApKzU2Pj4yXXwwKXwwKXtjPTExO2JyZWFrfWlmKEt5KHYsa1soa1t4Pj4yXXwwKSs2MD4+Ml18MCl8MCl7Yz0xMTticmVha31pZihrWyhrW3g+PjJdfDApKzg+PjJdJjY1NTM2KXtrW3Q+PjJdPWtbKGtbKGtbeD4+Ml18MCkrMjg+PjJdfDApKzgrMjA+PjJdO2tbKGtbdD4+Ml18MCkrNDQ+PjJdPWtbKGtbeD4+Ml18MCkrNDQ+PjJdO2tbKGtbeD4+Ml18MCkrNDQ+PjJdPTB9a1tlPj4yXT0wO3doaWxlKDEpe2lmKChrW2U+PjJdfDApPj0oa1trWyhrW3g+PjJdfDApKzI4Pj4yXT4+Ml18MCkpYnJlYWs7a1tuPj4yXT0oa1soa1t4Pj4yXXwwKSsyOD4+Ml18MCkrOCsoKGtbZT4+Ml18MCkqNzJ8MCk7aWYoa1soa1tuPj4yXXwwKSsyMD4+Ml18MCl7a1tnPj4yXT0wO2tbdz4+Ml09a1soa1tBPj4yXXwwKSs0NDg+PjJdO2tbcT4+Ml09a1tzPj4yXTt3aGlsZSgxKXtpZighKGtbcT4+Ml18MCkpYnJlYWs7a1tnPj4yXT0oa1tnPj4yXXwwKSsoa1soa1txPj4yXXwwKSsyMD4+Ml18MCk7a1txPj4yXT1rWyhrW3E+PjJdfDApKzE2Pj4yXX1pZihrWyhrW24+PjJdfDApKzg+PjJdfDApa1soa1tBPj4yXXwwKSs0NDg+PjJdPWtbKGtbbj4+Ml18MCkrOD4+Ml07eXkoa1tBPj4yXXwwLGtbKGtbbj4+Ml18MCkrMjA+PjJdfDAsa1tzPj4yXXwwKTtrWyhrW0E+PjJdfDApKzQ0OD4+Ml09a1t3Pj4yXTtpZihrWyhrW0E+PjJdfDApKzM2Pj4yXXwwKXtjPTI0O2JyZWFrIGF9aWYobFsoa1tkPj4yXXwwKSs2OT4+MF18MCl7Yz0yNDticmVhayBhfWtbcT4+Ml09a1tzPj4yXTt3aGlsZSgxKXtpZighKGtbcT4+Ml18MCkpYnJlYWs7a1tnPj4yXT0oa1tnPj4yXXwwKS0oa1soa1txPj4yXXwwKSsyMD4+Ml18MCk7a1txPj4yXT1rWyhrW3E+PjJdfDApKzE2Pj4yXX1hPShrW24+PjJdfDApKzM2KzF8MDtpW2E+PjBdPWlbYT4+MF0mLTl8KChrW2c+PjJdfDApIT0wJjEpPDwzJjI1NX1rW2U+PjJdPShrW2U+PjJdfDApKzF9alt2KzI4Pj4xXT0xO2tbdis0Pj4yXT1rWyhrW3g+PjJdfDApKzI4Pj4yXTtrW3YrMTY+PjJdPWtbcz4+Ml07aWYoTHkodixrW2tbeD4+Ml0+PjJdfDApfDApe2M9MzE7YnJlYWt9a1toPj4yXT1rWyhrW3g+PjJdfDApKzM2Pj4yXTtpZigoa1toPj4yXXwwKT09MD8obVt2KzI4Pj4xXSYxNnwwKT09MDowKXthPXYrMjh8MDtqW2E+PjFdPW1bYT4+MV0mLTJ9ZWxzZXthPShrW3g+PjJdfDApKzh8MDtrW2E+PjJdPWtbYT4+Ml18KDh8bVt2KzI4Pj4xXSY0MDk2KX1pZighKChrW2g+PjJdfDApIT0wPzE6KGtbKGtbeD4+Ml18MCkrNDA+PjJdfDApPT0wKSl7Yz0zNzticmVha31rW3YrOD4+Ml09a1trW3g+PjJdPj4yXTtpZihLeSh2LGtbKGtbeD4+Ml18MCkrNDA+PjJdfDApfDApe2M9Mzk7YnJlYWt9aWYoS3kodixrWyhrW3g+PjJdfDApKzMyPj4yXXwwKXwwKXtjPTQxO2JyZWFrfWtbZT4+Ml09MDt3aGlsZSgxKXtpZigoa1tlPj4yXXwwKT49KGtba1soa1t4Pj4yXXwwKSsyOD4+Ml0+PjJdfDApKWJyZWFrO2tbbz4+Ml09KGtbKGtbeD4+Ml18MCkrMjg+PjJdfDApKzgrKChrW2U+PjJdfDApKjcyfDApO2lmKCgobFsoa1tvPj4yXXwwKSszNisxPj4wXXwwKT4+PjImMXwwKSE9MD8oTHkodixrWyhrW28+PjJdfDApKzY0Pj4yXXwwKXwwKSE9MDowKXtjPTQ2O2JyZWFrIGF9a1tlPj4yXT0oa1tlPj4yXXwwKSsxfWtbdisxNj4+Ml09MDthPXYrMjh8MDtqW2E+PjFdPW1bYT4+MV18MTtpZihrWyhrW3g+PjJdfDApKzg+PjJdJjY1NTM2KXtrW3U+PjJdPWtbKGtbKGtbeD4+Ml18MCkrMjg+PjJdfDApKzgrMjA+PjJdO2tbKGtbeD4+Ml18MCkrNDQ+PjJdPWtbKGtbdT4+Ml18MCkrNDQ+PjJdO2tbKGtbdT4+Ml18MCkrNDQ+PjJdPTB9aWYoKGtbeT4+Ml18MCk8PShrW2Y+PjJdfDApPyhNeSh2LGtbeD4+Ml18MCxrWyhrW3g+PjJdfDApKzQ0Pj4yXXwwLDI5MDk5KXwwKSE9MDowKXtjPTUyO2JyZWFrfWlmKGlbKGtbZD4+Ml18MCkrNjk+PjBdfDApe2M9NTQ7YnJlYWt9YjpkbyBpZihrW2g+PjJdfDApe2lmKE15KHYsa1t4Pj4yXXwwLGtbaD4+Ml18MCwyOTEwNSl8MCl7Yz01ODticmVhayBhfWlmKGxbKGtbZD4+Ml18MCkrNjk+PjBdfDApe2M9NTg7YnJlYWsgYX1rW2U+PjJdPTA7a1twPj4yXT1rWyhrW2g+PjJdfDApKzQ+PjJdO3doaWxlKDEpe2lmKChrW2U+PjJdfDApPj0oa1trW2g+PjJdPj4yXXwwKSlicmVhayBiO2lmKGtbKGtba1twPj4yXT4+Ml18MCkrND4+Ml0mMil7Yz02MjticmVhayBhfWtbZT4+Ml09KGtbZT4+Ml18MCkrMTtrW3A+PjJdPShrW3A+PjJdfDApKzIwfX13aGlsZSgwKTtpZigoa1soa1t4Pj4yXXwwKSs1Mj4+Ml18MCkhPTA/KGtba1trW3g+PjJdPj4yXT4+Ml18MCkhPShrW2tba1soa1t4Pj4yXXwwKSs1Mj4+Ml0+PjJdPj4yXXwwKTowKXtjPTY2O2JyZWFrfWtbeD4+Ml09a1soa1t4Pj4yXXwwKSs0OD4+Ml07a1tmPj4yXT0oa1tmPj4yXXwwKSsxfXN3aXRjaChjfDApe2Nhc2UgMTE6e2tbRD4+Ml09MjtEPWtbRD4+Ml18MDtyPUU7cmV0dXJuIER8MH1jYXNlIDI0OntrW0Q+PjJdPTI7RD1rW0Q+PjJdfDA7cj1FO3JldHVybiBEfDB9Y2FzZSAzMTp7a1tEPj4yXT0yO0Q9a1tEPj4yXXwwO3I9RTtyZXR1cm4gRHwwfWNhc2UgMzc6e09oKGtbQT4+Ml18MCwyOTA1NSxCKTtrW0Q+PjJdPTI7RD1rW0Q+PjJdfDA7cj1FO3JldHVybiBEfDB9Y2FzZSAzOTp7a1tEPj4yXT0yO0Q9a1tEPj4yXXwwO3I9RTtyZXR1cm4gRHwwfWNhc2UgNDE6e2tbRD4+Ml09MjtEPWtbRD4+Ml18MDtyPUU7cmV0dXJuIER8MH1jYXNlIDQ2OntrW0Q+PjJdPTI7RD1rW0Q+PjJdfDA7cj1FO3JldHVybiBEfDB9Y2FzZSA1Mjp7a1tEPj4yXT0yO0Q9a1tEPj4yXXwwO3I9RTtyZXR1cm4gRHwwfWNhc2UgNTQ6e2tbRD4+Ml09MjtEPWtbRD4+Ml18MDtyPUU7cmV0dXJuIER8MH1jYXNlIDU4OntrW0Q+PjJdPTI7RD1rW0Q+PjJdfDA7cj1FO3JldHVybiBEfDB9Y2FzZSA2Mjp7T2goa1tBPj4yXXwwLDI5MTExLEMpO2tbRD4+Ml09MjtEPWtbRD4+Ml18MDtyPUU7cmV0dXJuIER8MH1jYXNlIDY2OntOeShrW0E+PjJdfDAsa1soa1t4Pj4yXXwwKSs1Mj4+Ml18MCk7a1tEPj4yXT0yO0Q9a1tEPj4yXXwwO3I9RTtyZXR1cm4gRHwwfWNhc2UgNjg6e2lmKChrW3k+PjJdfDApIT0wPyhPeShrW0E+PjJdfDAsa1t6Pj4yXXwwKXwwKSE9MDowKXtrW0Q+PjJdPTI7RD1rW0Q+PjJdfDA7cj1FO3JldHVybiBEfDB9a1tEPj4yXT0xO0Q9a1tEPj4yXXwwO3I9RTtyZXR1cm4gRHwwfX1yZXR1cm4gMH1mdW5jdGlvbiBLeShhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wLGg9MCxsPTA7bD1yO3I9cis0OHwwO2M9bCs0MHwwO2Q9bCszNnwwO2U9bCszMnwwO2c9bCs0NHwwO2g9bCs0fDA7Zj1sO2tbZD4+Ml09YTtrW2U+PjJdPWI7aWYoIShrW2U+PjJdfDApKXtrW2M+PjJdPTA7aD1rW2M+PjJdfDA7cj1sO3JldHVybiBofDB9a1tmPj4yXT1rW2tbZD4+Ml0+PjJdO2lmKGh6KGtbZj4+Ml18MCwoa1soa1tlPj4yXXwwKSsyND4+Ml18MCkrKGtbKGtba1tkPj4yXT4+Ml18MCkrNDE2Pj4yXXwwKXwwKXwwKXtrW2M+PjJdPTE7aD1rW2M+PjJdfDA7cj1sO3JldHVybiBofDB9Zj0oa1tmPj4yXXwwKSs0MTZ8MDtrW2Y+PjJdPShrW2Y+PjJdfDApKyhrWyhrW2U+PjJdfDApKzI0Pj4yXXwwKTtqW2c+PjFdPShtWyhrW2Q+PjJdfDApKzI4Pj4xXXwwKSY0MTEyO2Y9KGtbZD4+Ml18MCkrMjh8MDtqW2Y+PjFdPShtW2Y+PjFdfDApJi00MTEzO2tbaD4+Ml09a1trW2Q+PjJdPj4yXTtrW2grND4+Ml09MTkzO2tbaCs4Pj4yXT0xOTQ7a1toKzEyPj4yXT0wO2tbaCsxNj4+Ml09MDtpW2grMjA+PjBdPTA7a1toKzI0Pj4yXT1rW2Q+PjJdO0d5KGgsa1tlPj4yXXwwKXwwO2Y9KGtba1tkPj4yXT4+Ml18MCkrNDE2fDA7a1tmPj4yXT0oa1tmPj4yXXwwKS0oa1soa1tlPj4yXXwwKSsyND4+Ml18MCk7aWYoISgoa1soa1tkPj4yXXwwKSsyND4+Ml18MCk8PTA/KGtbKGtbaD4+Ml18MCkrMzY+PjJdfDApPD0wOjApKXtoPShrW2U+PjJdfDApKzR8MDtrW2g+PjJdPWtbaD4+Ml18OH1pZigobVsoa1tkPj4yXXwwKSsyOD4+MV18MCkmMTYpe2g9KGtbZT4+Ml18MCkrNHwwO2tbaD4+Ml09a1toPj4yXXwyfWg9KGtbZD4+Ml18MCkrMjh8MDtqW2g+PjFdPW1baD4+MV18MHwobVtnPj4xXXwwKTtrW2M+PjJdPShrWyhrW2U+PjJdfDApKzQ+PjJdJjh8MCkhPTAmMTtoPWtbYz4+Ml18MDtyPWw7cmV0dXJuIGh8MH1mdW5jdGlvbiBMeShhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wO2c9cjtyPXIrMTZ8MDtjPWcrMTJ8MDtkPWcrOHwwO2U9Zys0fDA7Zj1nO2tbZD4+Ml09YTtrW2U+PjJdPWI7YTpkbyBpZihrW2U+PjJdfDApe2tbZj4+Ml09MDt3aGlsZSgxKXtpZigoa1tmPj4yXXwwKT49KGtba1tlPj4yXT4+Ml18MCkpYnJlYWsgYTtpZihLeShrW2Q+PjJdfDAsa1soa1soa1tlPj4yXXwwKSs0Pj4yXXwwKSsoKGtbZj4+Ml18MCkqMjB8MCk+PjJdfDApfDApYnJlYWs7a1tmPj4yXT0oa1tmPj4yXXwwKSsxfWtbYz4+Ml09MjthPWtbYz4+Ml18MDtyPWc7cmV0dXJuIGF8MH13aGlsZSgwKTtrW2M+PjJdPTA7YT1rW2M+PjJdfDA7cj1nO3JldHVybiBhfDB9ZnVuY3Rpb24gTXkoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxzPTAsdD0wLHU9MCx2PTAsdz0wO3c9cjtyPXIrNjR8MDtlPXcrNDh8MDtmPXcrNDR8MDtnPXcrNDB8MDtoPXcrMzZ8MDtsPXcrMzJ8MDttPXcrMjh8MDtvPXcrMjR8MDtuPXcrMjB8MDt0PXcrMTZ8MDt1PXcrMTJ8MDtwPXcrOHwwO3E9dys0fDA7cz13O2tbZj4+Ml09YTtrW2c+PjJdPWI7a1toPj4yXT1jO2tbbD4+Ml09ZDtpZighKGtbaD4+Ml18MCkpe2tbZT4+Ml09MDt2PWtbZT4+Ml18MDtyPXc7cmV0dXJuIHZ8MH1rW3A+PjJdPWtba1trW2c+PjJdPj4yXT4+Ml07a1t1Pj4yXT1rW2tbZj4+Ml0+PjJdO2tbbT4+Ml09MDtrW3Q+PjJdPWtbKGtbaD4+Ml18MCkrND4+Ml07YTp3aGlsZSgxKXtpZigoa1ttPj4yXXwwKT49KGtba1toPj4yXT4+Ml18MCkpe3Y9MjA7YnJlYWt9a1txPj4yXT1rW2tbdD4+Ml0+PjJdO2Q9dXkoa1txPj4yXXwwKXwwO2tbcz4+Ml09ZDtpZigoaVtrW2w+PjJdPj4wXXwwKSE9NzE/KGQ9Unkoa1t1Pj4yXXwwLGtba1tnPj4yXT4+Ml18MCxrW3M+PjJdfDApfDAsa1tuPj4yXT1kLChrW24+PjJdfDApPjApOjApalsoa1t0Pj4yXXwwKSsxNj4+MV09a1tuPj4yXTtlbHNlIHY9ODtiOmRvIGlmKCh2fDApPT04KXt2PTA7aWYoUHkoa1tzPj4yXXwwLG4pfDApe2lmKChrW24+PjJdfDApPDF8KGtbbj4+Ml18MCk+NjU1MzUpe3Y9MTA7YnJlYWsgYX1qWyhrW3Q+PjJdfDApKzE2Pj4xXT1rW24+PjJdO2JyZWFrfWpbKGtbdD4+Ml18MCkrMTY+PjFdPTA7aWYoS3koa1tmPj4yXXwwLGtbcT4+Ml18MCl8MCl7dj0xMzticmVhayBhfWtbbz4+Ml09MDt3aGlsZSgxKXtpZigoa1tvPj4yXXwwKT49KGtba1trW2c+PjJdPj4yXT4+Ml18MCkpYnJlYWsgYjtpZighKFV5KGtbcT4+Ml18MCxrWyhrWyhrW2tbZz4+Ml0+PjJdfDApKzQ+PjJdfDApKygoa1tvPj4yXXwwKSoyMHwwKT4+Ml18MCwtMSl8MCkpalsoa1t0Pj4yXXwwKSsxNj4+MV09KGtbbz4+Ml18MCkrMTtrW28+PjJdPShrW28+PjJdfDApKzF9fXdoaWxlKDApO2tbbT4+Ml09KGtbbT4+Ml18MCkrMTtrW3Q+PjJdPShrW3Q+PjJdfDApKzIwfWlmKCh2fDApPT0xMCl7UXkoa1t1Pj4yXXwwLGtbbD4+Ml18MCwoa1ttPj4yXXwwKSsxfDAsa1twPj4yXXwwKTtrW2U+PjJdPTE7dj1rW2U+PjJdfDA7cj13O3JldHVybiB2fDB9ZWxzZSBpZigodnwwKT09MTMpe2tbZT4+Ml09MTt2PWtbZT4+Ml18MDtyPXc7cmV0dXJuIHZ8MH1lbHNlIGlmKCh2fDApPT0yMCl7dj1ieihrW3U+PjJdfDAsa1tnPj4yXXwwLGtbaD4+Ml18MCxrW2w+PjJdfDApfDA7a1tlPj4yXT12O3Y9a1tlPj4yXXwwO3I9dztyZXR1cm4gdnwwfXJldHVybiAwfWZ1bmN0aW9uIE55KGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MDtlPXI7cj1yKzMyfDA7ZD1lKzh8MDtmPWUrMTZ8MDtjPWUrMTJ8MDtrW2Y+PjJdPWE7a1tjPj4yXT1iO2I9a1tmPj4yXXwwO2lmKGtbKGtbYz4+Ml18MCkrOD4+Ml0mNTEyKXtPaChiLDI5MzIxLGUpO3I9ZTtyZXR1cm59ZWxzZXtmPWF6KGxbKGtbYz4+Ml18MCkrND4+MF18MCl8MDtrW2Q+PjJdPWY7T2goYiwyOTM2NyxkKTtyPWU7cmV0dXJufX1mdW5jdGlvbiBPeShhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wLGg9MCxtPTAsbj0wLG89MCxwPTAscT0wLHM9MCx0PTAsdT0wLHY9MCx3PTA7dz1yO3I9cis4MHwwO3Y9dys4fDA7cD13KzY0fDA7cT13KzYwfDA7Yz13KzU2fDA7cz13KzUyfDA7dT13KzQ4fDA7dD13KzQ0fDA7ZD13KzQwfDA7Zj13KzM2fDA7bT13KzMyfDA7ZT13KzI4fDA7aD13KzI0fDA7Zz13KzIwfDA7bj13KzE2fDA7bz13KzEyfDA7a1txPj4yXT1hO2tbYz4+Ml09YjtrW2Y+PjJdPTE7a1t1Pj4yXT1rWyhrW2M+PjJdfDApKzQ0Pj4yXTtpZighKGtbdT4+Ml18MCkpe2tbcD4+Ml09MDt2PWtbcD4+Ml18MDtyPXc7cmV0dXJuIHZ8MH1rW2Q+PjJdPWtba1txPj4yXT4+Ml07aWYoKGtba1t1Pj4yXT4+Ml18MCk+KGtbKGtbZD4+Ml18MCkrOTYrOD4+Ml18MCkpe09oKGtbcT4+Ml18MCwyOTE3MCx3KTtrW3A+PjJdPTE7dj1rW3A+PjJdfDA7cj13O3JldHVybiB2fDB9a1tzPj4yXT0wO3doaWxlKDEpe2lmKChrW3M+PjJdfDApPj0oa1trW3U+PjJdPj4yXXwwKSlicmVhaztiPShrWyhrW3U+PjJdfDApKzQ+PjJdfDApKygoa1tzPj4yXXwwKSoyMHwwKSsxM3wwO2lbYj4+MF09aVtiPj4wXSYtMjtrW3M+PjJdPShrW3M+PjJdfDApKzF9a1soa1tjPj4yXXwwKSs1Mj4+Ml09MDt3aGlsZSgxKXtpZighKGtbKGtbYz4+Ml18MCkrNDg+PjJdfDApKWJyZWFrO2tbKGtbKGtbYz4+Ml18MCkrNDg+PjJdfDApKzUyPj4yXT1rW2M+PjJdO2tbYz4+Ml09a1soa1tjPj4yXXwwKSs0OD4+Ml19YTp3aGlsZSgxKXtpZighKChrW2M+PjJdfDApIT0wPyhrW2Y+PjJdfDApIT0wOjApKXtjPTM2O2JyZWFrfWtbZj4+Ml09MDtrW3Q+PjJdPWtba1tjPj4yXT4+Ml07a1tzPj4yXT0wO2tbbT4+Ml09a1soa1t1Pj4yXXwwKSs0Pj4yXTt3aGlsZSgxKXtpZigoa1tzPj4yXXwwKT49KGtba1t1Pj4yXT4+Ml18MCkpYnJlYWs7a1tlPj4yXT0tMTtkbyBpZighKGlbKGtbbT4+Ml18MCkrMTM+PjBdJjEpKXtiPXV5KGtba1ttPj4yXT4+Ml18MCl8MDtrW2g+PjJdPWI7aWYoUHkoa1toPj4yXXwwLGUpfDApe2lmKChrW2U+PjJdfDApPD0wKXtjPTE4O2JyZWFrIGF9aWYoKGtbZT4+Ml18MCk+KGtba1t0Pj4yXT4+Ml18MCkpe2M9MTg7YnJlYWsgYX19ZWxzZXtiPVJ5KGtbcT4+Ml18MCxrW3Q+PjJdfDAsa1toPj4yXXwwKXwwO2tbZT4+Ml09YjtpZighKGtbZT4+Ml18MCkpe2I9U3koa1tkPj4yXXwwLGtbaD4+Ml18MCwwKXwwO2tbZz4+Ml09YjtpZighKGlbKGtbZD4+Ml18MCkrNjk+PjBdfDApKXtiPVR5KGtbcT4+Ml18MCxrW2M+PjJdfDAsa1tnPj4yXXwwKXwwO2tbZT4+Ml09Yn1zdihrW2Q+PjJdfDAsa1tnPj4yXXwwKX19aWYoKGtbZT4+Ml18MCk8PTApe2tbZj4+Ml09MTticmVha31iPWV3KGtbZD4+Ml18MCwxMzQsMCl8MDtrW24+PjJdPWI7aWYoIShrW24+PjJdfDApKXtjPTI1O2JyZWFrIGF9Yj0oa1tuPj4yXXwwKSs0fDA7a1tiPj4yXT1rW2I+PjJdfDEwMjQ7a1soa1tuPj4yXXwwKSs4Pj4yXT1rW2U+PjJdO2lmKChrW2tbbT4+Ml0+PjJdfDApPT0oa1toPj4yXXwwKSlrW2tbbT4+Ml0+PjJdPWtbbj4+Ml07ZWxzZXtrW28+PjJdPWtba1ttPj4yXT4+Ml07d2hpbGUoMSl7aWYoKGxba1soa1tvPj4yXXwwKSsxMj4+Ml0+PjBdfDApIT01MylicmVhaztrW28+PjJdPWtbKGtbbz4+Ml18MCkrMTI+PjJdfWtbKGtbbz4+Ml18MCkrMTI+PjJdPWtbbj4+Ml19c3Yoa1tkPj4yXXwwLGtbaD4+Ml18MCk7alsoa1ttPj4yXXwwKSsxNj4+MV09a1tlPj4yXTtiPShrW20+PjJdfDApKzEzfDA7aVtiPj4wXT1pW2I+PjBdJi0yfDF9d2hpbGUoMCk7a1tzPj4yXT0oa1tzPj4yXXwwKSsxO2tbbT4+Ml09KGtbbT4+Ml18MCkrMjB9a1tjPj4yXT1rWyhrW2M+PjJdfDApKzUyPj4yXX1pZigoY3wwKT09MTgpe1F5KGtbcT4+Ml18MCwyOTA5OSwoa1tzPj4yXXwwKSsxfDAsa1trW3Q+PjJdPj4yXXwwKTtrW3A+PjJdPTE7dj1rW3A+PjJdfDA7cj13O3JldHVybiB2fDB9ZWxzZSBpZigoY3wwKT09MjUpe2tbcD4+Ml09MTt2PWtbcD4+Ml18MDtyPXc7cmV0dXJuIHZ8MH1lbHNlIGlmKChjfDApPT0zNil7a1tzPj4yXT0wO3doaWxlKDEpe2lmKChrW3M+PjJdfDApPj0oa1trW3U+PjJdPj4yXXwwKSl7Yz00MTticmVha31pZighKGlbKGtbKGtbdT4+Ml18MCkrND4+Ml18MCkrKChrW3M+PjJdfDApKjIwfDApKzEzPj4wXSYxKSl7Yz0zOTticmVha31rW3M+PjJdPShrW3M+PjJdfDApKzF9aWYoKGN8MCk9PTM5KXt1PWtbcT4+Ml18MDtrW3Y+PjJdPShrW3M+PjJdfDApKzE7T2godSwyOTIwNCx2KTtrW3A+PjJdPTE7dj1rW3A+PjJdfDA7cj13O3JldHVybiB2fDB9ZWxzZSBpZigoY3wwKT09NDEpe2tbcD4+Ml09MDt2PWtbcD4+Ml18MDtyPXc7cmV0dXJuIHZ8MH19cmV0dXJuIDB9ZnVuY3Rpb24gUHkoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTA7aD1yO3I9ciszMnwwO2M9aCsxNnwwO2Q9aCsxMnwwO2U9aCs4fDA7Zj1oKzR8MDtnPWg7a1tkPj4yXT1hO2tbZT4+Ml09YjtrW2Y+PjJdPTA7YT1rW2Q+PjJdfDA7aWYoa1soa1tkPj4yXXwwKSs0Pj4yXSYxMDI0KXtrW2tbZT4+Ml0+PjJdPWtbYSs4Pj4yXTtrW2M+PjJdPTE7Zz1rW2M+PjJdfDA7cj1oO3JldHVybiBnfDB9c3dpdGNoKGxbYT4+MF18MHwwKXtjYXNlIDE1Njp7Zz1QeShrWyhrW2Q+PjJdfDApKzEyPj4yXXwwLGtbZT4+Ml18MCl8MDtrW2Y+PjJdPWc7YnJlYWt9Y2FzZSAxNTU6e2lmKFB5KGtbKGtbZD4+Ml18MCkrMTI+PjJdfDAsZyl8MCl7a1trW2U+PjJdPj4yXT0wLShrW2c+PjJdfDApO2tbZj4+Ml09MX1icmVha31kZWZhdWx0Ont9fWtbYz4+Ml09a1tmPj4yXTtnPWtbYz4+Ml18MDtyPWg7cmV0dXJuIGd8MH1mdW5jdGlvbiBReShhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGk9MCxqPTA7ZT1yO3I9ciszMnwwO2Y9ZTtqPWUrMjR8MDtpPWUrMjB8MDtnPWUrMTZ8MDtoPWUrMTJ8MDtrW2o+PjJdPWE7a1tpPj4yXT1iO2tbZz4+Ml09YztrW2g+PjJdPWQ7Yj1rW2o+PjJdfDA7ZD1rW2k+PjJdfDA7YT1rW2g+PjJdfDA7a1tmPj4yXT1rW2c+PjJdO2tbZis0Pj4yXT1kO2tbZis4Pj4yXT1hO09oKGIsMjkyNjUsZik7cj1lO3JldHVybn1mdW5jdGlvbiBSeShhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaT0wLGo9MDtqPXI7cj1yKzMyfDA7ZD1qKzI0fDA7ZT1qKzE2fDA7Zj1qKzEyfDA7Zz1qKzh8MDtpPWorNHwwO2g9ajtrW2orMjA+PjJdPWE7a1tlPj4yXT1iO2tbZj4+Ml09YzthOmRvIGlmKChsW2tbZj4+Ml0+PjBdfDB8MCk9PTU1KXtrW2k+PjJdPWtbKGtbZj4+Ml18MCkrOD4+Ml07a1tnPj4yXT0wO3doaWxlKDEpe2lmKChrW2c+PjJdfDApPj0oa1trW2U+PjJdPj4yXXwwKSlicmVhayBhO2tbaD4+Ml09a1soa1soa1tlPj4yXXwwKSs0Pj4yXXwwKSsoKGtbZz4+Ml18MCkqMjB8MCkrND4+Ml07aWYoKGtbaD4+Ml18MCkhPTA/KHNnKGtbaD4+Ml18MCxrW2k+PjJdfDApfDApPT0wOjApYnJlYWs7a1tnPj4yXT0oa1tnPj4yXXwwKSsxfWtbZD4+Ml09KGtbZz4+Ml18MCkrMTtpPWtbZD4+Ml18MDtyPWo7cmV0dXJuIGl8MH13aGlsZSgwKTtrW2Q+PjJdPTA7aT1rW2Q+PjJdfDA7cj1qO3JldHVybiBpfDB9ZnVuY3Rpb24gU3koYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTA7Zz1yO3I9cisxNnwwO2Q9Zys4fDA7ZT1nKzR8MDtmPWc7a1tkPj4yXT1hO2tbZT4+Ml09YjtrW2Y+PjJdPWM7aWYoIShrW2U+PjJdfDApKXtiPTA7cj1nO3JldHVybiBifDB9Yj1XeShrW2Q+PjJdfDAsa1tlPj4yXXwwLGtbZj4+Ml18MCwwKXwwO3I9ZztyZXR1cm4gYnwwfWZ1bmN0aW9uIFR5KGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MDtoPXI7cj1yKzgwfDA7Zz1oKzYwfDA7cD1oKzU2fDA7cT1oKzUyfDA7ZD1oKzQ4fDA7ZT1oKzQ0fDA7Zj1oKzQwfDA7bz1oKzh8MDttPWgrNHwwO2w9aDtuPWgrNjR8MDtrW3A+PjJdPWE7a1txPj4yXT1iO2tbZD4+Ml09YztrW2Y+PjJdPWtba1txPj4yXT4+Ml07a1tvPj4yXT0wO2tbbys0Pj4yXT0wO2tbbys4Pj4yXT0wO2tbbysxMj4+Ml09MDtrW28rMTY+PjJdPTA7a1tvKzIwPj4yXT0wO2tbbysyND4+Ml09MDtrW28rMjg+PjJdPTA7a1tvPj4yXT1rW3A+PjJdO2tbbys0Pj4yXT1rWyhrW3E+PjJdfDApKzI4Pj4yXTtrW28rOD4+Ml09a1tmPj4yXTtqW28rMjg+PjFdPTE7a1tvKzI0Pj4yXT0wO2tbbT4+Ml09a1trW3A+PjJdPj4yXTtpW24+PjBdPWlbKGtbbT4+Ml18MCkrNzM+PjBdfDA7aVsoa1ttPj4yXXwwKSs3Mz4+MF09MTtiPUt5KG8sa1tkPj4yXXwwKXwwO2tbbD4+Ml09YjtpWyhrW20+PjJdfDApKzczPj4wXT1pW24+PjBdfDA7aWYoa1tsPj4yXXwwKXtrW2c+PjJdPTA7cT1rW2c+PjJdfDA7cj1oO3JldHVybiBxfDB9a1tlPj4yXT0wO3doaWxlKDEpe2lmKChrW2U+PjJdfDApPj0oa1trW2Y+PjJdPj4yXXwwKSl7Yz04O2JyZWFrfXE9KFV5KGtbKGtbKGtbZj4+Ml18MCkrND4+Ml18MCkrKChrW2U+PjJdfDApKjIwfDApPj4yXXwwLGtbZD4+Ml18MCwtMSl8MCk8MjthPShrW2U+PjJdfDApKzF8MDtpZihxKXtjPTY7YnJlYWt9a1tlPj4yXT1hfWlmKChjfDApPT02KXtrW2c+PjJdPWE7cT1rW2c+PjJdfDA7cj1oO3JldHVybiBxfDB9ZWxzZSBpZigoY3wwKT09OCl7a1tnPj4yXT0wO3E9a1tnPj4yXXwwO3I9aDtyZXR1cm4gcXwwfXJldHVybiAwfWZ1bmN0aW9uIFV5KGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxpPTA7aT1yO3I9ciszMnwwO2Q9aSsxNnwwO2U9aSsxMnwwO2Y9aSs4fDA7Zz1pKzR8MDtoPWk7a1tlPj4yXT1hO2tbZj4+Ml09YjtrW2c+PjJdPWM7aWYoKGtbZT4+Ml18MCk9PTB8KGtbZj4+Ml18MCk9PTApe2tbZD4+Ml09KGtbZj4+Ml18MCk9PShrW2U+PjJdfDApPzA6MjtoPWtbZD4+Ml18MDtyPWk7cmV0dXJuIGh8MH1rW2g+PjJdPWtbKGtbZT4+Ml18MCkrND4+Ml18a1soa1tmPj4yXXwwKSs0Pj4yXTtjPWtbZT4+Ml18MDtpZihrW2g+PjJdJjEwMjQpe2lmKChrW2MrND4+Ml0ma1soa1tmPj4yXXwwKSs0Pj4yXSYxMDI0fDApIT0wPyhrWyhrW2U+PjJdfDApKzg+PjJdfDApPT0oa1soa1tmPj4yXXwwKSs4Pj4yXXwwKTowKXtrW2Q+PjJdPTA7aD1rW2Q+PjJdfDA7cj1pO3JldHVybiBofDB9a1tkPj4yXT0yO2g9a1tkPj4yXXwwO3I9aTtyZXR1cm4gaHwwfWE9bFtrW2U+PjJdPj4wXXwwO2lmKChsW2M+PjBdfDApIT0obFtrW2Y+PjJdPj4wXXwwKSl7aWYoKGF8MCk9PTUzPyhVeShrWyhrW2U+PjJdfDApKzEyPj4yXXwwLGtbZj4+Ml18MCxrW2c+PjJdfDApfDApPDI6MCl7a1tkPj4yXT0xO2g9a1tkPj4yXXwwO3I9aTtyZXR1cm4gaHwwfWlmKChsW2tbZj4+Ml0+PjBdfDApPT01Mz8oVXkoa1tlPj4yXXwwLGtbKGtbZj4+Ml18MCkrMTI+PjJdfDAsa1tnPj4yXXwwKXwwKTwyOjApe2tbZD4+Ml09MTtoPWtbZD4+Ml18MDtyPWk7cmV0dXJuIGh8MH1rW2Q+PjJdPTI7aD1rW2Q+PjJdfDA7cj1pO3JldHVybiBofDB9ZG8gaWYoKChhfDApIT0xNTI/KGxba1tlPj4yXT4+MF18MCkhPTE1NDowKT8oa1soa1tlPj4yXXwwKSs4Pj4yXXwwKSE9MDowKXtjPWtbKGtbZT4+Ml18MCkrOD4+Ml18MDthPWtbKGtbZj4+Ml18MCkrOD4+Ml18MDtpZigobFtrW2U+PjJdPj4wXXwwKT09MTUxKXtpZighKHNnKGMsYSl8MCkpYnJlYWs7a1tkPj4yXT0yO2g9a1tkPj4yXXwwO3I9aTtyZXR1cm4gaHwwfWVsc2V7aWYoIShyUihjLGEpfDApKWJyZWFrO2tbZD4+Ml09KGxba1tlPj4yXT4+MF18MCk9PTUzPzE6MjtoPWtbZD4+Ml18MDtyPWk7cmV0dXJuIGh8MH19d2hpbGUoMCk7aWYoKGtbKGtbZT4+Ml18MCkrND4+Ml0mMTZ8MCkhPShrWyhrW2Y+PjJdfDApKzQ+PjJdJjE2fDApKXtrW2Q+PjJdPTI7aD1rW2Q+PjJdfDA7cj1pO3JldHVybiBofDB9ZG8gaWYoIShrW2g+PjJdJjE2Mzg0KSl7aWYoa1toPj4yXSYyMDQ4KXtrW2Q+PjJdPTI7aD1rW2Q+PjJdfDA7cj1pO3JldHVybiBofDB9aWYoVXkoa1soa1tlPj4yXXwwKSsxMj4+Ml18MCxrWyhrW2Y+PjJdfDApKzEyPj4yXXwwLGtbZz4+Ml18MCl8MCl7a1tkPj4yXT0yO2g9a1tkPj4yXXwwO3I9aTtyZXR1cm4gaHwwfWlmKFV5KGtbKGtbZT4+Ml18MCkrMTY+PjJdfDAsa1soa1tmPj4yXXwwKSsxNj4+Ml18MCxrW2c+PjJdfDApfDApe2tbZD4+Ml09MjtoPWtbZD4+Ml18MDtyPWk7cmV0dXJuIGh8MH1pZihWeShrWyhrW2U+PjJdfDApKzIwPj4yXXwwLGtbKGtbZj4+Ml18MCkrMjA+PjJdfDAsa1tnPj4yXXwwKXwwKXtrW2Q+PjJdPTI7aD1rW2Q+PjJdfDA7cj1pO3JldHVybiBofDB9aWYoKGtbaD4+Ml0mODE5MnwwKT09MD8obFtrW2U+PjJdPj4wXXwwKSE9OTc6MCl7aWYoKGpbKGtbZT4+Ml18MCkrMzI+PjFdfDApIT0oalsoa1tmPj4yXXwwKSszMj4+MV18MCkpe2tbZD4+Ml09MjtoPWtbZD4+Ml18MDtyPWk7cmV0dXJuIGh8MH1pZigoa1soa1tlPj4yXXwwKSsyOD4+Ml18MCkhPShrWyhrW2Y+PjJdfDApKzI4Pj4yXXwwKSl7aWYoKGtbKGtbZT4+Ml18MCkrMjg+PjJdfDApPT0oa1tnPj4yXXwwKT8oa1soa1tmPj4yXXwwKSsyOD4+Ml18MCk8MDowKWJyZWFrO2tbZD4+Ml09MjtoPWtbZD4+Ml18MDtyPWk7cmV0dXJuIGh8MH19fXdoaWxlKDApO2tbZD4+Ml09MDtoPWtbZD4+Ml18MDtyPWk7cmV0dXJuIGh8MH1mdW5jdGlvbiBWeShhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaT0wLGo9MCxtPTA7bT1yO3I9ciszMnwwO2o9bSsyNHwwO2Q9bSsyMHwwO2U9bSsxNnwwO2Y9bSsxMnwwO2c9bSs4fDA7aD1tKzR8MDtpPW07a1tkPj4yXT1hO2tbZT4+Ml09YjtrW2Y+PjJdPWM7aWYoKGtbZD4+Ml18MCk9PTAmKGtbZT4+Ml18MCk9PTApe2tbaj4+Ml09MDtqPWtbaj4+Ml18MDtyPW07cmV0dXJuIGp8MH1pZigoa1tkPj4yXXwwKT09MHwoa1tlPj4yXXwwKT09MCl7a1tqPj4yXT0xO2o9a1tqPj4yXXwwO3I9bTtyZXR1cm4ganwwfWlmKChrW2tbZD4+Ml0+PjJdfDApIT0oa1trW2U+PjJdPj4yXXwwKSl7a1tqPj4yXT0xO2o9a1tqPj4yXXwwO3I9bTtyZXR1cm4ganwwfWtbZz4+Ml09MDt3aGlsZSgxKXtpZigoa1tnPj4yXXwwKT49KGtba1tkPj4yXT4+Ml18MCkpe2Q9MTQ7YnJlYWt9a1toPj4yXT1rWyhrWyhrW2Q+PjJdfDApKzQ+PjJdfDApKygoa1tnPj4yXXwwKSoyMHwwKT4+Ml07a1tpPj4yXT1rWyhrWyhrW2U+PjJdfDApKzQ+PjJdfDApKygoa1tnPj4yXXwwKSoyMHwwKT4+Ml07aWYoKGxbKGtbKGtbZD4+Ml18MCkrND4+Ml18MCkrKChrW2c+PjJdfDApKjIwfDApKzEyPj4wXXwwfDApIT0obFsoa1soa1tlPj4yXXwwKSs0Pj4yXXwwKSsoKGtbZz4+Ml18MCkqMjB8MCkrMTI+PjBdfDB8MCkpe2Q9MTA7YnJlYWt9aWYoVXkoa1toPj4yXXwwLGtbaT4+Ml18MCxrW2Y+PjJdfDApfDApe2Q9MTI7YnJlYWt9a1tnPj4yXT0oa1tnPj4yXXwwKSsxfWlmKChkfDApPT0xMCl7a1tqPj4yXT0xO2o9a1tqPj4yXXwwO3I9bTtyZXR1cm4ganwwfWVsc2UgaWYoKGR8MCk9PTEyKXtrW2o+PjJdPTE7aj1rW2o+PjJdfDA7cj1tO3JldHVybiBqfDB9ZWxzZSBpZigoZHwwKT09MTQpe2tbaj4+Ml09MDtqPWtbaj4+Ml18MDtyPW07cmV0dXJuIGp8MH1yZXR1cm4gMH1mdW5jdGlvbiBXeShhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGk9MCxqPTAsbT0wLG49MCxvPTAscD0wLHE9MCxzPTAsdD0wO3Q9cjtyPXIrNDh8MDtuPXQrNDR8MDtvPXQrNDB8MDttPXQrMzZ8MDtwPXQrMzJ8MDtxPXQrMjh8MDtzPXQrMjR8MDtpPXQrMjB8MDtnPXQrMTZ8MDtlPXQrMTJ8MDtoPXQrOHwwO2Y9dCs0fDA7aj10O2tbbj4+Ml09YTtrW28+PjJdPWI7a1ttPj4yXT1jO2tbcD4+Ml09ZDtpZihrW3A+PjJdfDApe2tbcz4+Ml09a1trW3A+PjJdPj4yXTtrW2k+PjJdPTMyNzY4fWVsc2V7Yj1rW24+PjJdfDA7ZD1YeShrW28+PjJdfDAsa1ttPj4yXXwwKXwwO2Q9ZHgoYixkLCgoZHwwKTwwKTw8MzE+PjMxKXwwO2tbcz4+Ml09ZDtrW2k+PjJdPTB9a1txPj4yXT1rW3M+PjJdO2lmKCEoa1txPj4yXXwwKSl7cz1rW3E+PjJdfDA7cj10O3JldHVybiBzfDB9ZD1ZeShrW28+PjJdfDAsa1ttPj4yXXwwKXwwO2tbZz4+Ml09ZDtrW2U+PjJdPWtbZz4+Ml0mNDA5NTtpZigoa1soa1tvPj4yXXwwKSs0Pj4yXSYxMDI0fDApPT0wPyhrWyhrW28+PjJdfDApKzg+PjJdfDApIT0wOjApe2Q9KFRmKGtbKGtbbz4+Ml18MCkrOD4+Ml18MCl8MCkrMXwwO2tbaD4+Ml09ZH1lbHNlIGtbaD4+Ml09MDtpZighKGtbbT4+Ml18MCkpe2Q9Wnkoa1tvPj4yXXwwKXwwO2tbZj4+Ml09ZDtiUyhrW3M+PjJdfDAsa1tvPj4yXXwwLGtbZj4+Ml18MCl8MDtpZigoa1tmPj4yXXwwKT4+PjA8NDgpZFMoKGtbcz4+Ml18MCkrKGtbZj4+Ml18MCl8MCwwLDQ4LShrW2Y+PjJdfDApfDApfDB9ZWxzZSBiUyhrW3M+PjJdfDAsa1tvPj4yXXwwLGtbZT4+Ml18MCl8MDtkPShrW3E+PjJdfDApKzR8MDtrW2Q+PjJdPWtbZD4+Ml0mLTEyMjg4MTtkPShrW3E+PjJdfDApKzR8MDtrW2Q+PjJdPWtbZD4+Ml18a1tnPj4yXSYyNDU3NjtkPShrW3E+PjJdfDApKzR8MDtrW2Q+PjJdPWtbZD4+Ml18a1tpPj4yXTtpZihrW2g+PjJdfDApe2k9KGtbcz4+Ml18MCkrKGtbZT4+Ml18MCl8MDtrWyhrW3E+PjJdfDApKzg+PjJdPWk7a1tqPj4yXT1pO2JTKGtbaj4+Ml18MCxrWyhrW28+PjJdfDApKzg+PjJdfDAsa1toPj4yXXwwKXwwfWRvIGlmKCEoKGtbKGtbbz4+Ml18MCkrND4+Ml18a1soa1txPj4yXXwwKSs0Pj4yXSkmODQwNDk5Mikpe2E9a1tuPj4yXXwwO2M9KGtbbz4+Ml18MCkrMjB8MDtpZihrWyhrW28+PjJdfDApKzQ+PjJdJjIwNDgpe2o9aXkoYSxrW2M+PjJdfDAsa1ttPj4yXXwwKXwwO2tbKGtbcT4+Ml18MCkrMjA+PjJdPWo7YnJlYWt9ZWxzZXtqPV95KGEsa1tjPj4yXXwwLGtbbT4+Ml18MCl8MDtrWyhrW3E+PjJdfDApKzIwPj4yXT1qO2JyZWFrfX13aGlsZSgwKTthPWtbbz4+Ml18MDtpZighKGtbKGtbcT4+Ml18MCkrND4+Ml0mMjQ1NzYpKXtpZihrW2ErND4+Ml0mODQwNDk5Mil7cz1rW3E+PjJdfDA7cj10O3JldHVybiBzfDB9aWYoKGxba1txPj4yXT4+MF18MHwwKT09MTU5KWtbKGtbcT4+Ml18MCkrMTI+PjJdPWtbKGtbbz4+Ml18MCkrMTI+PjJdO2Vsc2V7cz1TeShrW24+PjJdfDAsa1soa1tvPj4yXXwwKSsxMj4+Ml18MCwwKXwwO2tbKGtbcT4+Ml18MCkrMTI+PjJdPXN9cz1TeShrW24+PjJdfDAsa1soa1tvPj4yXXwwKSsxNj4+Ml18MCwwKXwwO2tbKGtbcT4+Ml18MCkrMTY+PjJdPXM7cz1rW3E+PjJdfDA7cj10O3JldHVybiBzfDB9bT0keShhLGtbbT4+Ml18MCl8MDtrW3M+PjJdPShrW3M+PjJdfDApK207aWYoIShrWyhrW3E+PjJdfDApKzQ+PjJdJjg0MDQ5OTIpKXtpZihrWyhrW28+PjJdfDApKzEyPj4yXXwwKWE9V3koa1tuPj4yXXwwLGtbKGtbbz4+Ml18MCkrMTI+PjJdfDAsMSxzKXwwO2Vsc2UgYT0wO2tbKGtbcT4+Ml18MCkrMTI+PjJdPWE7aWYoa1soa1tvPj4yXXwwKSsxNj4+Ml18MClhPVd5KGtbbj4+Ml18MCxrWyhrW28+PjJdfDApKzE2Pj4yXXwwLDEscyl8MDtlbHNlIGE9MDtrWyhrW3E+PjJdfDApKzE2Pj4yXT1hfWlmKCEoa1twPj4yXXwwKSl7cz1rW3E+PjJdfDA7cj10O3JldHVybiBzfDB9a1trW3A+PjJdPj4yXT1rW3M+PjJdO3M9a1txPj4yXXwwO3I9dDtyZXR1cm4gc3wwfWZ1bmN0aW9uIFh5KGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MDtmPXI7cj1yKzE2fDA7Yz1mKzh8MDtkPWYrNHwwO2U9ZjtrW2M+PjJdPWE7a1tkPj4yXT1iO2tbZT4+Ml09MDtpZighKGtbYz4+Ml18MCkpe2E9a1tlPj4yXXwwO3I9ZjtyZXR1cm4gYXwwfWE9JHkoa1tjPj4yXXwwLGtbZD4+Ml18MCl8MDtrW2U+PjJdPWE7aWYoIShrW2Q+PjJdJjEpKXthPWtbZT4+Ml18MDtyPWY7cmV0dXJuIGF8MH1hPVh5KGtbKGtbYz4+Ml18MCkrMTI+PjJdfDAsa1tkPj4yXXwwKXwwO2E9YSsoWHkoa1soa1tjPj4yXXwwKSsxNj4+Ml18MCxrW2Q+PjJdfDApfDApfDA7a1tlPj4yXT0oa1tlPj4yXXwwKSthO2E9a1tlPj4yXXwwO3I9ZjtyZXR1cm4gYXwwfWZ1bmN0aW9uIFl5KGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MDtlPXI7cj1yKzE2fDA7Yz1lKzh8MDtmPWUrNHwwO2Q9ZTtrW2M+PjJdPWE7a1tmPj4yXT1iO2RvIGlmKCEoa1tmPj4yXXwwKSlrW2Q+PjJdPTQ4O2Vsc2V7aWYoKGtbKGtbYz4+Ml18MCkrMTI+PjJdfDApPT0wPyhrWyhrW2M+PjJdfDApKzIwPj4yXXwwKT09MDowKXtrW2Q+PjJdPTE2Mzk2O2JyZWFrfWtbZD4+Ml09ODIyMH13aGlsZSgwKTtyPWU7cmV0dXJuIGtbZD4+Ml18MH1mdW5jdGlvbiBaeShhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTA7ZD1yO3I9cisxNnwwO2I9ZCs0fDA7Yz1kO2tbYz4+Ml09YTtkbyBpZighKGtbKGtbYz4+Ml18MCkrND4+Ml0mMTYzODQpKWlmKGtbKGtbYz4+Ml18MCkrND4+Ml0mODE5Mil7a1tiPj4yXT0yODticmVha31lbHNle2tbYj4+Ml09NDg7YnJlYWt9ZWxzZSBrW2I+PjJdPTEyO3doaWxlKDApO3I9ZDtyZXR1cm4ga1tiPj4yXXwwfWZ1bmN0aW9uIF95KGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsbT0wLG49MCxvPTAscD0wO3A9cjtyPXIrNDh8MDtkPXArMzJ8MDtlPXArMjh8MDtmPXArMjR8MDtnPXArMjB8MDttPXArMTZ8MDtqPXArMTJ8MDtvPXArOHwwO2g9cCs0fDA7bj1wO2tbZT4+Ml09YTtrW2Y+PjJdPWI7a1tnPj4yXT1jO2lmKCEoa1tmPj4yXXwwKSl7a1tkPj4yXT0wO289a1tkPj4yXXwwO3I9cDtyZXR1cm4gb3wwfWI9ZHgoa1tlPj4yXXwwLDgsMCl8MDtrW20+PjJdPWI7aWYoIShrW20+PjJdfDApKXtrW2Q+PjJdPTA7bz1rW2Q+PjJdfDA7cj1wO3JldHVybiBvfDB9Yj1rW2tbZj4+Ml0+PjJdfDA7a1toPj4yXT1iO2tba1ttPj4yXT4+Ml09YjthOmRvIGlmKCEoa1tnPj4yXSYxKSl7a1toPj4yXT0xO3doaWxlKDEpe2lmKChrW2g+PjJdfDApPj0oa1trW2Y+PjJdPj4yXXwwKSlicmVhayBhO2tbaD4+Ml09KGtbaD4+Ml18MCkrKGtbaD4+Ml18MCl9fXdoaWxlKDApO2I9ZHgoa1tlPj4yXXwwLChrW2g+PjJdfDApKjIwfDAsMCl8MDtrW2o+PjJdPWI7a1soa1ttPj4yXXwwKSs0Pj4yXT1iO2lmKCEoa1tqPj4yXXwwKSl7Ymcoa1tlPj4yXXwwLGtbbT4+Ml18MCk7a1tkPj4yXT0wO289a1tkPj4yXXwwO3I9cDtyZXR1cm4gb3wwfWtbbz4+Ml09a1soa1tmPj4yXXwwKSs0Pj4yXTtrW2g+PjJdPTA7d2hpbGUoMSl7aWYoKGtbaD4+Ml18MCk+PShrW2tbZj4+Ml0+PjJdfDApKWJyZWFrO2tbbj4+Ml09a1trW28+PjJdPj4yXTtiPVN5KGtbZT4+Ml18MCxrW24+PjJdfDAsa1tnPj4yXXwwKXwwO2tba1tqPj4yXT4+Ml09YjtiPUFoKGtbZT4+Ml18MCxrWyhrW28+PjJdfDApKzQ+PjJdfDApfDA7a1soa1tqPj4yXXwwKSs0Pj4yXT1iO2I9QWgoa1tlPj4yXXwwLGtbKGtbbz4+Ml18MCkrOD4+Ml18MCl8MDtrWyhrW2o+PjJdfDApKzg+PjJdPWI7aVsoa1tqPj4yXXwwKSsxMj4+MF09aVsoa1tvPj4yXXwwKSsxMj4+MF18MDtiPShrW2o+PjJdfDApKzEzfDA7aVtiPj4wXT1pW2I+PjBdJi0yO2I9KGtbaj4+Ml18MCkrMTN8MDtpW2I+PjBdPWlbYj4+MF0mLTN8KChsWyhrW28+PjJdfDApKzEzPj4wXXwwKT4+PjEmMSk8PDEmMjU1O2tbKGtbaj4+Ml18MCkrMTY+PjJdPWtbKGtbbz4+Ml18MCkrMTY+PjJdO2tbaD4+Ml09KGtbaD4+Ml18MCkrMTtrW2o+PjJdPShrW2o+PjJdfDApKzIwO2tbbz4+Ml09KGtbbz4+Ml18MCkrMjB9a1tkPj4yXT1rW20+PjJdO289a1tkPj4yXXwwO3I9cDtyZXR1cm4gb3wwfWZ1bmN0aW9uICR5KGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MDtlPXI7cj1yKzE2fDA7Yz1lKzh8MDtmPWUrNHwwO2Q9ZTtrW2M+PjJdPWE7a1tmPj4yXT1iO2E9KFl5KGtbYz4+Ml18MCxrW2Y+PjJdfDApfDApJjQwOTU7a1tkPj4yXT1hO2lmKChrWyhrW2M+PjJdfDApKzQ+PjJdJjEwMjR8MCk9PTA/KGtbKGtbYz4+Ml18MCkrOD4+Ml18MCkhPTA6MCl7Zj0oVGYoa1soa1tjPj4yXXwwKSs4Pj4yXXwwKXwwKSsxfDA7a1tkPj4yXT0oa1tkPj4yXXwwKStmfXI9ZTtyZXR1cm4gKGtbZD4+Ml18MCkrNyYtOHwwfWZ1bmN0aW9uIGF6KGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MDtjPXI7cj1yKzE2fDA7ZD1jKzR8MDtiPWM7a1tkPj4yXT1hO3N3aXRjaChrW2Q+PjJdfDApe2Nhc2UgMTE2OntrW2I+PjJdPTI5NDQ5O2JyZWFrfWNhc2UgMTE4OntrW2I+PjJdPTI5NDU5O2JyZWFrfWNhc2UgMTE3OntrW2I+PjJdPTI5NDY5O2JyZWFrfWRlZmF1bHQ6a1tiPj4yXT0yOTQ3Nn1yPWM7cmV0dXJuIGtbYj4+Ml18MH1mdW5jdGlvbiBieihhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGk9MCxuPTAsbz0wLHA9MCxxPTAscz0wLHQ9MDt0PXI7cj1yKzQ4fDA7Zz10O289dCszNnwwO2g9dCszMnwwO2U9dCsyOHwwO2k9dCsyNHwwO3A9dCsyMHwwO3E9dCsxNnwwO2Y9dCsxMnwwO3M9dCs4fDA7bj10KzR8MDtrW2g+PjJdPWE7a1tlPj4yXT1iO2tbaT4+Ml09YztrW3A+PjJdPWQ7a1tmPj4yXT1rW2tbaD4+Ml0+PjJdO2lmKChrW2k+PjJdfDApIT0wPyhsWyhrW2tbaD4+Ml0+PjJdfDApKzY5Pj4wXXwwKT09MDowKXtpZigoa1trW2k+PjJdPj4yXXwwKT4oa1soa1tmPj4yXXwwKSs5Nis4Pj4yXXwwKSl7cz1rW2g+PjJdfDA7a1tnPj4yXT1rW3A+PjJdO09oKHMsMjk0ODIsZyk7a1tvPj4yXT0xO3M9a1tvPj4yXXwwO3I9dDtyZXR1cm4gc3wwfWtbcz4+Ml09a1trW2U+PjJdPj4yXTtrW3E+PjJdPTA7a1tuPj4yXT1rWyhrW2k+PjJdfDApKzQ+PjJdO3doaWxlKDEpe2lmKChrW3E+PjJdfDApPj0oa1trW2k+PjJdPj4yXXwwKSl7ZT0xMzticmVha31pZihqWyhrW24+PjJdfDApKzE2Pj4xXXwwKXtmPWtbaD4+Ml18MDtpZigobVsoa1tuPj4yXXwwKSsxNj4+MV18MCk+KGtba1tzPj4yXT4+Ml18MCkpe2U9MTA7YnJlYWt9Y3ooZixrW3M+PjJdfDAsKG1bKGtbbj4+Ml18MCkrMTY+PjFdfDApLTF8MCxrW2tbbj4+Ml0+PjJdfDAsa1twPj4yXXwwLDApfWtbcT4+Ml09KGtbcT4+Ml18MCkrMTtrW24+PjJdPShrW24+PjJdfDApKzIwfWlmKChlfDApPT0xMCl7UXkoZixrW3A+PjJdfDAsKGtbcT4+Ml18MCkrMXwwLGtba1tzPj4yXT4+Ml18MCk7a1tvPj4yXT0xO3M9a1tvPj4yXXwwO3I9dDtyZXR1cm4gc3wwfWVsc2UgaWYoKGV8MCk9PTEzKXtrW28+PjJdPTA7cz1rW28+PjJdfDA7cj10O3JldHVybiBzfDB9fWtbbz4+Ml09MDtzPWtbbz4+Ml18MDtyPXQ7cmV0dXJuIHN8MH1mdW5jdGlvbiBjeihhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLG09MCxuPTAsbz0wLHA9MCxxPTAscz0wLHQ9MDtwPXI7cj1yKzQ4fDA7Zz1wKzMyfDA7dD1wKzI4fDA7cz1wKzI0fDA7bT1wKzIwfDA7aD1wKzE2fDA7aj1wKzEyfDA7cT1wKzh8MDtvPXArNHwwO249cDtrW2c+PjJdPWE7a1t0Pj4yXT1iO2tbcz4+Ml09YztrW20+PjJdPWQ7a1toPj4yXT1lO2tbaj4+Ml09ZjtrW3E+PjJdPWtbKGtbKGtbdD4+Ml18MCkrND4+Ml18MCkrKChrW3M+PjJdfDApKjIwfDApPj4yXTtrW24+PjJdPWtba1tnPj4yXT4+Ml07ZT1TeShrW24+PjJdfDAsa1txPj4yXXwwLDApfDA7a1tvPj4yXT1lO2lmKCEoa1tvPj4yXXwwKSl7cj1wO3JldHVybn1pZigoaVtrW2g+PjJdPj4wXXwwKSE9NzEpZHooa1tvPj4yXXwwLGtbaj4+Ml18MCk7aWYoKGxba1ttPj4yXT4+MF18MCk9PTUzKXt0PWV6KGtbZz4+Ml18MCxrW28+PjJdfDAsa1soa1ttPj4yXXwwKSs4Pj4yXXwwKXwwO2tbbz4+Ml09dH1nPShrW28+PjJdfDApKzR8MDtrW2c+PjJdPWtbZz4+Ml18NDE5NDMwNDtnPShrW20+PjJdfDApKzR8MDtrW2c+PjJdPWtbZz4+Ml18MzI3Njg7c3Yoa1tuPj4yXXwwLGtbbT4+Ml18MCk7Zz1rW20+PjJdfDA7aD1rW28+PjJdfDA7aj1nKzQ4fDA7ZG97a1tnPj4yXT1rW2g+PjJdO2c9Zys0fDA7aD1oKzR8MH13aGlsZSgoZ3wwKTwoanwwKSk7aWYoKGtbKGtbbT4+Ml18MCkrND4+Ml0mMTAyNHwwKT09MD8oa1soa1ttPj4yXXwwKSs4Pj4yXXwwKSE9MDowKXt0PUFoKGtbbj4+Ml18MCxrWyhrW20+PjJdfDApKzg+PjJdfDApfDA7a1soa1ttPj4yXXwwKSs4Pj4yXT10O3Q9KGtbbT4+Ml18MCkrNHwwO2tbdD4+Ml09a1t0Pj4yXXw2NTUzNn1iZyhrW24+PjJdfDAsa1tvPj4yXXwwKTtyPXA7cmV0dXJufWZ1bmN0aW9uIGR6KGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MDtmPXI7cj1yKzQ4fDA7Yz1mKzMyfDA7ZD1mKzI4fDA7ZT1mO2tbYz4+Ml09YTtrW2Q+PjJdPWI7aWYoKGtbZD4+Ml18MCk8PTApe3I9ZjtyZXR1cm59O2tbZT4+Ml09MDtrW2UrND4+Ml09MDtrW2UrOD4+Ml09MDtrW2UrMTI+PjJdPTA7a1tlKzE2Pj4yXT0wO2tbZSsyMD4+Ml09MDtrW2UrMjQ+PjJdPTA7a1tlKzQ+PjJdPTE5NTtrW2UrMjQ+PjJdPWtbZD4+Ml07R3koZSxrW2M+PjJdfDApfDA7cj1mO3JldHVybn1mdW5jdGlvbiBleihhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTA7ZD1yO3I9ciszMnwwO2c9ZCsxNnwwO2Y9ZCsxMnwwO2g9ZCs4fDA7ZT1kO2tbZz4+Ml09YTtrW2Y+PjJdPWI7a1toPj4yXT1jO2Z6KGUsa1toPj4yXXwwKTtjPXZ3KGtbZz4+Ml18MCxrW2Y+PjJdfDAsZSwwKXwwO3I9ZDtyZXR1cm4gY3wwfWZ1bmN0aW9uIGZ6KGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wO2M9cjtyPXIrMTZ8MDtkPWMrNHwwO2U9YztrW2Q+PjJdPWE7a1tlPj4yXT1iO2tba1tkPj4yXT4+Ml09a1tlPj4yXTtiPVRmKGtbZT4+Ml18MCl8MDtrWyhrW2Q+PjJdfDApKzQ+PjJdPWI7cj1jO3JldHVybn1mdW5jdGlvbiBneihhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MDtlPXI7cj1yKzE2fDA7Yz1lKzR8MDtkPWU7a1tjPj4yXT1hO2tbZD4+Ml09YjtpZigobFtrW2Q+PjJdPj4wXXwwfDApIT0xNTMpe3I9ZTtyZXR1cm4gMH1hPShrW2Q+PjJdfDApKzM4fDA7aVthPj4wXT0obFthPj4wXXwwKSsoa1soa1tjPj4yXXwwKSsyND4+Ml18MCk7cj1lO3JldHVybiAwfWZ1bmN0aW9uIGh6KGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wO2c9cjtyPXIrMzJ8MDtmPWc7Yz1nKzE2fDA7aD1nKzEyfDA7ZT1nKzh8MDtkPWcrNHwwO2tbYz4+Ml09YTtrW2g+PjJdPWI7a1tlPj4yXT0wO2tbZD4+Ml09a1soa1trW2M+PjJdPj4yXXwwKSs5NisxMj4+Ml07aWYoKGtbaD4+Ml18MCk8PShrW2Q+PjJdfDApKXtoPWtbZT4+Ml18MDtyPWc7cmV0dXJuIGh8MH1oPWtbYz4+Ml18MDtrW2Y+PjJdPWtbZD4+Ml07T2goaCwyOTUxMyxmKTtrW2U+PjJdPTE7aD1rW2U+PjJdfDA7cj1nO3JldHVybiBofDB9ZnVuY3Rpb24gaXooYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLG49MCxvPTAscD0wLHE9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MCxFPTAsRj0wLEc9MCxIPTAsST0wLEo9MCxLPTAsTT0wLE49MCxPPTAsUD0wLFE9MCxSPTAsUz0wLFQ9MCxVPTAsVj0wLFc9MCxYPTA7WD1yO3I9cisxNzZ8MDtXPVgrNDB8MDtWPVgrMjR8MDtDPVgrOHwwO0I9WDtIPVgrMTY0fDA7ST1YKzE2MHwwO2c9WCsxNTZ8MDtKPVgrMTUyfDA7Sz1YKzE0OHwwO009WCsxNDR8MDtOPVgrMTQwfDA7cD1YKzEzNnwwO3M9WCsxMzJ8MDtPPVgrMTI4fDA7bj1YKzEyNHwwO3Q9WCsxMjB8MDtQPVgrMTE2fDA7eD1YKzExMnwwO1M9WCsxMDh8MDtVPVgrMTA0fDA7VD1YKzEwMHwwO1E9WCs5NnwwO0E9WCs5MnwwO3Y9WCs4OHwwO3c9WCs4NHwwO3o9WCs4MHwwO289WCs3NnwwO0U9WCs3MnwwO3U9WCs2OHwwO3E9WCs2NHwwO0Q9WCs2MHwwO3k9WCs1NnwwO0c9WCs1MnwwO1I9WCs0OHwwO2tbST4+Ml09YTtrW2c+PjJdPWI7a1tKPj4yXT1jO2tbSz4+Ml09ZDtrW00+PjJdPWU7a1tOPj4yXT1mO2tbTz4+Ml09MDtrW24+PjJdPTA7a1t0Pj4yXT0wO2tbUD4+Ml09a1trW0k+PjJdPj4yXTtrW1M+PjJdPTA7a1tVPj4yXT1rW00+PjJdO2tbVD4+Ml09MDtrW1E+PjJdPTA7a1tBPj4yXT0wO2tbKGtbTj4+Ml18MCkrMjg+PjJdPS0xO2tbKGtbTj4+Ml18MCkrNDQ+PjJdPTA7YTpkbyBpZihrW2c+PjJdfDApe2lmKG1bKGtbTT4+Ml18MCkrMjg+PjFdJjYpe2tbZz4+Ml09MDticmVha31rW3A+PjJdPTA7d2hpbGUoMSl7aWYoKGtbcD4+Ml18MCk+PShrWyhrW1A+PjJdfDApKzIwPj4yXXwwKSlicmVhayBhO2M9KHNnKGtbKGtbKGtbUD4+Ml18MCkrMTY+PjJdfDApKyhrW3A+PjJdPDw0KT4+Ml18MCxrW2c+PjJdfDApfDApPT0wO2Y9a1twPj4yXXwwO2lmKGMpYnJlYWs7a1twPj4yXT1mKzF9a1tUPj4yXT1rWyhrWyhrW1A+PjJdfDApKzE2Pj4yXXwwKSsoZjw8NCkrMTI+PjJdfXdoaWxlKDApO2I6d2hpbGUoMSl7aWYoISgoa1tNPj4yXXwwKSE9MD8oa1tPPj4yXXwwKT09MDowKSl7Rj04OTticmVha31rW3o+PjJdPWtbKGtbTT4+Ml18MCkrND4+Ml07aWYoa1t6Pj4yXXwwKXtrW3A+PjJdPTA7a1t4Pj4yXT0oa1t6Pj4yXXwwKSs4O3doaWxlKDEpe2lmKChrW3A+PjJdfDApPj0oa1trW3o+PjJdPj4yXXwwKSlicmVhaztrW0E+PjJdPWtbKGtbeD4+Ml18MCkrMTY+PjJdO2lmKChrWyhrW3g+PjJdfDApKzIwPj4yXXwwKSE9MD8oa1soa1soa1t4Pj4yXXwwKSsyMD4+Ml18MCkrOD4+Ml0mMjA0OHwwKSE9MDowKXtrW28+PjJdPTA7a1t3Pj4yXT1rW2tbKGtbeD4+Ml18MCkrMjA+PjJdPj4yXTtrW3M+PjJdPTA7d2hpbGUoMSl7aWYoKGtbcz4+Ml18MCk+PShrW2tbdz4+Ml0+PjJdfDApKWJyZWFrO2lmKHB6KGtbKGtbKGtbdz4+Ml18MCkrND4+Ml18MCkrKChrW3M+PjJdfDApKjIwfDApKzg+PjJdfDAsa1tLPj4yXXwwLGtbSj4+Ml18MCxrW2c+PjJdfDApfDApe2tbTz4+Ml09KGtbTz4+Ml18MCkrMTtrW24+PjJdPTI7a1tTPj4yXT1rW3g+PjJdO2pbKGtbTj4+Ml18MCkrMzI+PjFdPWtbcz4+Ml07a1tvPj4yXT0xfWtbcz4+Ml09KGtbcz4+Ml18MCkrMX1pZighKChrW28+PjJdfDApIT0wfChrW0o+PjJdfDApPT0wKSlGPTIxfWVsc2UgRj0yMTtjOmRvIGlmKChGfDApPT0yMSl7Rj0wO2lmKChrW2c+PjJdfDApIT0wPyhrWyhrW0E+PjJdfDApKzY0Pj4yXXwwKSE9KGtbVD4+Ml18MCk6MClicmVhaztpZihrW0o+PjJdfDApe2lmKGtbKGtbeD4+Ml18MCkrMTI+PjJdfDApZj1rWyhrW3g+PjJdfDApKzEyPj4yXXwwO2Vsc2UgZj1rW2tbQT4+Ml0+PjJdfDA7a1tFPj4yXT1mO2lmKHNnKGtbRT4+Ml18MCxrW0o+PjJdfDApfDApYnJlYWt9Yz1rW24+PjJdfDA7a1tuPj4yXT1jKzE7aWYoIWMpa1tTPj4yXT1rW3g+PjJdO2tbcz4+Ml09MDtrW3Y+PjJdPWtbKGtbQT4+Ml18MCkrND4+Ml07d2hpbGUoMSl7aWYoKGtbcz4+Ml18MCk+PShqWyhrW0E+PjJdfDApKzM0Pj4xXXwwKSlicmVhayBjO2lmKCEoc2coa1trW3Y+PjJdPj4yXXwwLGtbSz4+Ml18MCl8MCkpe2lmKChrW08+PjJdfDApIT0xKWJyZWFrO2lmKChsWyhrW3g+PjJdfDApKzM2Pj4wXSY0fDApPT0wPyhxeihrWyhrW3g+PjJdfDApKzUyPj4yXXwwLGtbSz4+Ml18MCl8MCk9PTA6MClicmVha31rW3M+PjJdPShrW3M+PjJdfDApKzE7a1t2Pj4yXT0oa1t2Pj4yXXwwKSsxNn1rW08+PjJdPShrW08+PjJdfDApKzE7a1tTPj4yXT1rW3g+PjJdO2lmKChrW3M+PjJdfDApPT0oalsoa1tBPj4yXXwwKSszMj4+MV18MCkpZj0tMTtlbHNlIGY9KGtbcz4+Ml0mNjU1MzUpPDwxNj4+MTY7alsoa1tOPj4yXXwwKSszMj4+MV09Zn13aGlsZSgwKTtrW3A+PjJdPShrW3A+PjJdfDApKzE7a1t4Pj4yXT0oa1t4Pj4yXXwwKSs3Mn1pZihrW1M+PjJdfDApe2tbKGtbTj4+Ml18MCkrMjg+PjJdPWtbKGtbUz4+Ml18MCkrNDQ+PjJdO2tbKGtbTj4+Ml18MCkrNDQ+PjJdPWtbKGtbUz4+Ml18MCkrMTY+PjJdO2lmKGxbKGtbUz4+Ml18MCkrMzY+PjBdJjgpe2M9KGtbTj4+Ml18MCkrNHwwO2tbYz4+Ml09a1tjPj4yXXwxMDQ4NTc2fWtbVD4+Ml09a1soa1soa1tOPj4yXXwwKSs0ND4+Ml18MCkrNjQ+PjJdfX1pZigoa1tnPj4yXXwwKT09MCYoa1tKPj4yXXwwKSE9MCYoa1tuPj4yXXwwKT09MD8oa1soa1tJPj4yXXwwKSsxMjg+PjJdfDApIT0wOjApe2tbdT4+Ml09bFsoa1tJPj4yXXwwKSsxNDg+PjBdO2lmKChrW3U+PjJdfDApIT0xMDk/KHNnKDI5OTQwLGtbSj4+Ml18MCl8MCk9PTA6MCl7a1soa1tOPj4yXXwwKSsyOD4+Ml09MTtrW0E+PjJdPWtbKGtbST4+Ml18MCkrMTI4Pj4yXX1lbHNlIEY9NTA7ZG8gaWYoKEZ8MCk9PTUwKXtGPTA7aWYoKGtbdT4+Ml18MCkhPTEwOD8oc2coMjk5NDQsa1tKPj4yXXwwKXwwKT09MDowKXtrWyhrW04+PjJdfDApKzI4Pj4yXT0wO2tbQT4+Ml09a1soa1tJPj4yXXwwKSsxMjg+PjJdO2JyZWFrfWtbQT4+Ml09MH13aGlsZSgwKTtpZihrW0E+PjJdfDApe2tbVD4+Ml09a1soa1tBPj4yXXwwKSs2ND4+Ml07a1tuPj4yXT0oa1tuPj4yXXwwKSsxO2tbcT4+Ml09MDtrW3Y+PjJdPWtbKGtbQT4+Ml18MCkrND4+Ml07d2hpbGUoMSl7aWYoKGtbcT4+Ml18MCk+PShqWyhrW0E+PjJdfDApKzM0Pj4xXXwwKSlicmVhaztjPShzZyhrW2tbdj4+Ml0+PjJdfDAsa1tLPj4yXXwwKXwwKT09MDtoPWtbcT4+Ml18MDtpZihjKXtGPTU4O2JyZWFrfWtbcT4+Ml09aCsxO2tbdj4+Ml09KGtbdj4+Ml18MCkrMTZ9aWYoKEZ8MCk9PTU4PyhGPTAsKGh8MCk9PShqWyhrW0E+PjJdfDApKzMyPj4xXXwwKSk6MClrW3E+PjJdPS0xO2lmKCgoa1txPj4yXXwwKT49KGpbKGtbQT4+Ml18MCkrMzQ+PjFdfDApPyhFaShrW0s+PjJdfDApfDApIT0wOjApPyhsWyhrW0E+PjJdfDApKzQyPj4wXSY2NHwwKT09MDowKWtbcT4+Ml09LTE7aWYoKGtbcT4+Ml18MCk8KGpbKGtbQT4+Ml18MCkrMzQ+PjFdfDApKXtrW08+PjJdPShrW08+PjJdfDApKzE7Zj1rW04+PjJdfDA7ZG8gaWYoKGtbcT4+Ml18MCk+PTApe2U9KGtbcT4+Ml18MCk+PTMyPy0xOjE8PGtbcT4+Ml07YT1rW0k+PjJdfDA7aWYoIShrW2YrMjg+PjJdfDApKXtjPWErMTQwfDA7a1tjPj4yXT1rW2M+PjJdfGU7YnJlYWt9ZWxzZXtjPWErMTQ0fDA7a1tjPj4yXT1rW2M+PjJdfGU7YnJlYWt9fWVsc2UgaVtmKzE+PjBdPTY4O3doaWxlKDApO2pbKGtbTj4+Ml18MCkrMzI+PjFdPWtbcT4+Ml07a1soa1tOPj4yXXwwKSs0ND4+Ml09a1tBPj4yXTtrW1E+PjJdPTF9fX1pZigoKChrW08+PjJdfDApPT0wJihrW24+PjJdfDApPT0xJihrW1M+PjJdfDApIT0wPyhtWyhrW00+PjJdfDApKzI4Pj4xXSYzMnwwKT09MDowKT8oRWkoa1tLPj4yXXwwKXwwKSE9MDowKT8obFsoa1soa1tTPj4yXXwwKSsxNj4+Ml18MCkrNDI+PjBdJjY0fDApPT0wOjApe2tbTz4+Ml09MTtqWyhrW04+PjJdfDApKzMyPj4xXT0tMTtpWyhrW04+PjJdfDApKzE+PjBdPTY4fWM9a1soa1tNPj4yXXwwKSs4Pj4yXXwwO2tbdz4+Ml09YztkOmRvIGlmKChjfDApIT0wJihrW0o+PjJdfDApPT0wJihrW08+PjJdfDApPT0wKXtrW3M+PjJdPTA7d2hpbGUoMSl7aWYoKGtbcz4+Ml18MCk+PShrW2tbdz4+Ml0+PjJdfDApKWJyZWFrIGQ7a1tEPj4yXT1rWyhrWyhrW3c+PjJdfDApKzQ+PjJdfDApKygoa1tzPj4yXXwwKSoyMHwwKSs0Pj4yXTtpZigoa1tEPj4yXXwwKSE9MD8oc2coa1tEPj4yXXwwLGtbSz4+Ml18MCl8MCk9PTA6MCl7Rj04MjticmVhayBifWtbcz4+Ml09KGtbcz4+Ml18MCkrMX19d2hpbGUoMCk7aWYoa1tPPj4yXXwwKWNvbnRpbnVlO2tbTT4+Ml09a1soa1tNPj4yXXwwKSsxNj4+Ml07a1t0Pj4yXT0oa1t0Pj4yXXwwKSsxfWlmKChGfDApPT04Mil7a1t5Pj4yXT1rWyhrWyhrW3c+PjJdfDApKzQ+PjJdfDApKygoa1tzPj4yXXwwKSoyMHwwKT4+Ml07aWYoKG1bKGtbTT4+Ml18MCkrMjg+PjFdJjF8MCk9PTA/KGtbKGtbeT4+Ml18MCkrND4+Ml0mMnwwKSE9MDowKXtXPWtbST4+Ml18MDtrW0I+PjJdPWtbRD4+Ml07T2goVywyOTk0OCxCKTtrW0g+PjJdPTI7Vz1rW0g+PjJdfDA7cj1YO3JldHVybiBXfDB9Y3ooa1tJPj4yXXwwLGtbdz4+Ml18MCxrW3M+PjJdfDAsa1tOPj4yXXwwLDE4NDAyLGtbdD4+Ml18MCk7a1tPPj4yXT0xO2tbUz4+Ml09MH1lbHNlIGlmKChGfDApPT04OSl7aWYoKGtbTz4+Ml18MCk9PTAmKGtbSj4+Ml18MCk9PTA/KGtbKGtbTj4+Ml18MCkrND4+Ml0mNjR8MCkhPTA6MCl7aVtrW04+PjJdPj4wXT05NztrWyhrW04+PjJdfDApKzQ0Pj4yXT0wO2tbSD4+Ml09MTtXPWtbSD4+Ml18MDtyPVg7cmV0dXJuIFd8MH1pZigoa1tPPj4yXXwwKSE9MSl7a1tHPj4yXT0oa1tPPj4yXXwwKT09MD8yOTk3OToyOTk5NDtkbyBpZighKGtbZz4+Ml18MCkpe2U9a1tJPj4yXXwwO2Y9a1tHPj4yXXwwO2lmKGtbSj4+Ml18MCl7Sj1rW0o+PjJdfDA7Vz1rW0s+PjJdfDA7a1tWPj4yXT1mO2tbVis0Pj4yXT1KO2tbVis4Pj4yXT1XO09oKGUsMzAwMjksVik7YnJlYWt9ZWxzZXtWPWtbSz4+Ml18MDtrW1c+PjJdPWY7a1tXKzQ+PjJdPVY7T2goZSwzMDAzOSxXKTticmVha319ZWxzZXtXPWtbST4+Ml18MDtGPWtbZz4+Ml18MDtKPWtbSj4+Ml18MDtWPWtbSz4+Ml18MDtrW0M+PjJdPWtbRz4+Ml07a1tDKzQ+PjJdPUY7a1tDKzg+PjJdPUo7a1tDKzEyPj4yXT1WO09oKFcsMzAwMTYsQyl9d2hpbGUoMCk7aVsoa1tJPj4yXXwwKSsxNz4+MF09MTtXPShrW1U+PjJdfDApKzI0fDA7a1tXPj4yXT0oa1tXPj4yXXwwKSsxfWlmKChrW1M+PjJdfDApIT0wPyhqWyhrW04+PjJdfDApKzMyPj4xXXwwKT49MDowKXtXPWpbKGtbTj4+Ml18MCkrMzI+PjFdfDA7a1tSPj4yXT1XO2tbUj4+Ml09KGtbUj4+Ml18MCk+PTY0PzYzOlc7Uj1lUygxLDAsa1tSPj4yXXwwKXwwO1c9KGtbUz4+Ml18MCkrNTZ8MDtTPVc7Vj1rW1MrND4+Ml18TDtrW1c+PjJdPWtbUz4+Ml18UjtrW1crND4+Ml09Vn1zdihrW1A+PjJdfDAsa1soa1tOPj4yXXwwKSsxMj4+Ml18MCk7a1soa1tOPj4yXXwwKSsxMj4+Ml09MDtzdihrW1A+PjJdfDAsa1soa1tOPj4yXXwwKSsxNj4+Ml18MCk7a1soa1tOPj4yXXwwKSsxNj4+Ml09MDtpW2tbTj4+Ml0+PjBdPShrW1E+PjJdfDApIT0wPzg4OjE1Mn1pZigoa1tPPj4yXXwwKSE9MSl7a1tIPj4yXT0yO1c9a1tIPj4yXXwwO3I9WDtyZXR1cm4gV3wwfWlmKCEoa1soa1tOPj4yXXwwKSs0Pj4yXSY0MTk0MzA0KSlyeihrW0k+PjJdfDAsa1tOPj4yXXwwLGtbVD4+Ml18MCxrWyhrW00+PjJdfDApKzQ+PjJdfDApO3doaWxlKDEpe1c9KGtbVT4+Ml18MCkrMjB8MDtrW1c+PjJdPShrW1c+PjJdfDApKzE7aWYoKGtbVT4+Ml18MCk9PShrW00+PjJdfDApKWJyZWFrO2tbVT4+Ml09a1soa1tVPj4yXXwwKSsxNj4+Ml19a1tIPj4yXT0xO1c9a1tIPj4yXXwwO3I9WDtyZXR1cm4gV3wwfWZ1bmN0aW9uIGp6KGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaT0wLGo9MCxsPTA7aj1yO3I9ciszMnwwO2g9ajtlPWorMjR8MDtmPWorMjB8MDtnPWorMTZ8MDtsPWorMTJ8MDtpPWorOHwwO2tbZT4+Ml09YTtrW2Y+PjJdPWI7a1tnPj4yXT1jO2tbbD4+Ml09ZDtpZighKChtWyhrW2Y+PjJdfDApKzI4Pj4xXXwwKSZrW2w+PjJdKSl7cj1qO3JldHVybn1rW2k+PjJdPTI5ODU2O2lmKCEoKG1bKGtbZj4+Ml18MCkrMjg+PjFdfDApJjMyKSl7aWYoKG1bKGtbZj4+Ml18MCkrMjg+PjFdfDApJjQpa1tpPj4yXT0yOTkwMn1lbHNlIGtbaT4+Ml09Mjk4ODQ7bD1rW2U+PjJdfDA7Yz1rW2k+PjJdfDA7a1toPj4yXT1rW2c+PjJdO2tbaCs0Pj4yXT1jO09oKGwsMjk5MjAsaCk7cj1qO3JldHVybn1mdW5jdGlvbiBreihhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTAsZT0wO2U9cjtyPXIrMTZ8MDtiPWUrMTJ8MDtjPWUrOHwwO2Q9ZTtrW2M+PjJdPWE7cFtkPj4zXT0tMS4wO2lmKChsW2tbYz4+Ml0+PjBdfDB8MCkhPTEzMil7a1tiPj4yXT0tMTtkPWtbYj4+Ml18MDtyPWU7cmV0dXJuIGR8MH1hPWtbKGtbYz4+Ml18MCkrOD4+Ml18MDtveihhLGQsVGYoa1soa1tjPj4yXXwwKSs4Pj4yXXwwKXwwLDEpfDA7aWYoK3BbZD4+M10+MS4wKXtrW2I+PjJdPS0xO2Q9a1tiPj4yXXwwO3I9ZTtyZXR1cm4gZHwwfWVsc2V7a1tiPj4yXT1+figrcFtkPj4zXSoxMzQyMTc3MjguMCk7ZD1rW2I+PjJdfDA7cj1lO3JldHVybiBkfDB9cmV0dXJuIDB9ZnVuY3Rpb24gbHooYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MDtkPXI7cj1yKzQ4fDA7ZT1kKzQ0fDA7Zz1kKzQwfDA7Zj1kKzEyfDA7Yz1kO2tbZT4+Ml09YTtrW2c+PjJdPWI7a1tmPj4yXT0wO2tbZis0Pj4yXT0wO2tbZis4Pj4yXT0wO2tbZisxMj4+Ml09MDtrW2YrMTY+PjJdPTA7a1tmKzIwPj4yXT0wO2tbZisyND4+Ml09MDtrW2YrND4+Ml09MTk2O2tbZisyND4+Ml09YztrW2M+PjJdPWtbZz4+Ml07a1tjKzQ+PjJdPTA7a1tjKzg+PjJdPTA7RnkoZixrWyhrW2U+PjJdfDApKzIwPj4yXXwwKXwwO3I9ZDtyZXR1cm4gKChrW2MrND4+Ml18MCk+MD8xOihrW2MrOD4+Ml18MCk9PTApJjF8MH1mdW5jdGlvbiBteihhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTAsZT0wO2U9cjtyPXIrMTZ8MDtiPWUrNHwwO2M9ZTtkPWUrOHwwO2tbYz4+Ml09YTtpW2Q+PjBdPWlba1tjPj4yXT4+MF18MDtpZigobFtkPj4wXXwwfDApPT0xNTcpaVtkPj4wXT1pWyhrW2M+PjJdfDApKzM4Pj4wXXwwO2lmKChsW2Q+PjBdfDB8MCk9PTE1OCl7a1tiPj4yXT1rW2tbKGtbYz4+Ml18MCkrMjA+PjJdPj4yXTthPWtbYj4+Ml18MDtyPWU7cmV0dXJuIGF8MH1pZigobFtkPj4wXXwwfDApPT0xMTkpe2tbYj4+Ml09a1trW2tbKGtbYz4+Ml18MCkrMjA+PjJdPj4yXT4+Ml07YT1rW2I+PjJdfDA7cj1lO3JldHVybiBhfDB9ZWxzZXtrW2I+PjJdPTE7YT1rW2I+PjJdfDA7cj1lO3JldHVybiBhfDB9cmV0dXJuIDB9ZnVuY3Rpb24gbnooYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTAsaT0wO2k9cjtyPXIrMzJ8MDtjPWkrMjB8MDtkPWkrMTZ8MDtnPWkrMTJ8MDtlPWkrOHwwO2Y9aSs0fDA7aD1pO2tbYz4+Ml09YTtrW2Q+PjJdPWI7aWYoKGxba1tkPj4yXT4+MF18MHwwKSE9MTUyPyhsW2tbZD4+Ml0+PjBdfDB8MCkhPTE1NDowKXtyPWk7cmV0dXJuIDB9a1tlPj4yXT1rWyhrW2M+PjJdfDApKzI0Pj4yXTtrW2Y+PjJdPWtba1tlPj4yXT4+Ml07aWYoa1tmPj4yXXwwKWM9a1trW2Y+PjJdPj4yXXwwO2Vsc2UgYz0wO2tbaD4+Ml09YztrW2c+PjJdPTA7d2hpbGUoMSl7aWYoKGtbZz4+Ml18MCk+PShrW2g+PjJdfDApKWJyZWFrO2lmKChrWyhrW2Q+PjJdfDApKzI4Pj4yXXwwKT09KGtbKGtbZj4+Ml18MCkrOCsoKGtbZz4+Ml18MCkqNzJ8MCkrNDQ+PjJdfDApKWJyZWFrO2tbZz4+Ml09KGtbZz4+Ml18MCkrMX1jPWtbZT4+Ml18MDtpZigoa1tnPj4yXXwwKTwoa1toPj4yXXwwKSl7aD1jKzR8MDtrW2g+PjJdPShrW2g+PjJdfDApKzE7cj1pO3JldHVybiAwfWVsc2V7aD1jKzh8MDtrW2g+PjJdPShrW2g+PjJdfDApKzE7cj1pO3JldHVybiAwfXJldHVybiAwfWZ1bmN0aW9uIG96KGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3ZhciBlPTAsZj0wLjAsZz0wLjAsaD0wLGo9MCxtPTAsbj0wLG89MCxxPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQz0wLEQ9MCxFPTAsRj0wO0Y9cjtyPXIrOTZ8MDtFPUYrNzZ8MDt2PUYrNzJ8MDt3PUYrNjh8MDtlPUYrNjR8MDtoPUYrODB8MDtvPUYrNjB8MDtEPUYrNTZ8MDt0PUYrNTJ8MDtzPUYrMTZ8MDtuPUYrNDh8MDt5PUYrNDR8MDtxPUYrNDB8MDt4PUYrMzZ8MDtDPUYrOHwwO3o9RiszMnwwO0E9RisyOHwwO2o9RisyNHwwO3U9RjtrW3Y+PjJdPWE7a1t3Pj4yXT1iO2tbZT4+Ml09YztpW2g+PjBdPWQ7a1tEPj4yXT0oa1t2Pj4yXXwwKSsoa1tlPj4yXXwwKTtrW3Q+PjJdPTE7YT1zO2tbYT4+Ml09MDtrW2ErND4+Ml09MDtrW24+PjJdPTA7a1t5Pj4yXT0xO2tbcT4+Ml09MDtrW3g+PjJdPTE7a1t6Pj4yXT0wO2tbQT4+Ml09MDtwW2tbdz4+Ml0+PjNdPTAuMDtpZigobFtoPj4wXXwwKT09MSlrW28+PjJdPTE7ZWxzZXtrW28+PjJdPTI7a1tqPj4yXT0zLShsW2g+PjBdfDApO3doaWxlKDEpe2lmKChrW2o+PjJdfDApPj0oa1tlPj4yXXwwKSlicmVhaztpZihpWyhrW3Y+PjJdfDApKyhrW2o+PjJdfDApPj4wXXwwKWJyZWFrO2tbaj4+Ml09KGtbaj4+Ml18MCkrMn1rW0E+PjJdPShrW2o+PjJdfDApPChrW2U+PjJdfDApJjE7a1tEPj4yXT0oa1t2Pj4yXXwwKSsoa1tqPj4yXV4xKTtrW3Y+PjJdPShrW3Y+PjJdfDApKyhsW2g+PjBdJjEpfXdoaWxlKDEpe2lmKChrW3Y+PjJdfDApPj4+MD49KGtbRD4+Ml18MCk+Pj4wKWJyZWFrO2lmKCEobFsxODQwMysobFtrW3Y+PjJdPj4wXXwwKT4+MF0mMSkpYnJlYWs7a1t2Pj4yXT0oa1t2Pj4yXXwwKSsoa1tvPj4yXXwwKX1pZigoa1t2Pj4yXXwwKT4+PjA+PShrW0Q+PjJdfDApPj4+MCl7a1tFPj4yXT0wO0U9a1tFPj4yXXwwO3I9RjtyZXR1cm4gRXwwfWlmKChpW2tbdj4+Ml0+PjBdfDApIT00NSl7aWYoKGlba1t2Pj4yXT4+MF18MCk9PTQzKWtbdj4+Ml09KGtbdj4+Ml18MCkrKGtbbz4+Ml18MCl9ZWxzZXtrW3Q+PjJdPS0xO2tbdj4+Ml09KGtbdj4+Ml18MCkrKGtbbz4+Ml18MCl9d2hpbGUoMSl7aWYoKGtbdj4+Ml18MCk+Pj4wPj0oa1tEPj4yXXwwKT4+PjApYnJlYWs7YT1zO2I9a1thKzQ+PjJdfDA7aWYoISgobFsxODQwMysobFtrW3Y+PjJdPj4wXXwwKT4+MF0mNHwwKSE9MCYoKGJ8MCk8MjE0NzQ4MzY0fChifDApPT0yMTQ3NDgzNjQmKGtbYT4+Ml18MCk+Pj4wPDM0MzU5NzM4MzUpKSlicmVhazthPXM7YT1rUyhrW2E+PjJdfDAsa1thKzQ+PjJdfDAsMTAsMCl8MDtiPShpW2tbdj4+Ml0+PjBdfDApLTQ4fDA7Yj0kUihhfDAsTHwwLGJ8MCwoKGJ8MCk8MCk8PDMxPj4zMXwwKXwwO2E9cztrW2E+PjJdPWI7a1thKzQ+PjJdPUw7a1t2Pj4yXT0oa1t2Pj4yXXwwKSsoa1tvPj4yXXwwKTtrW3o+PjJdPShrW3o+PjJdfDApKzF9d2hpbGUoMSl7aWYoKGtbdj4+Ml18MCk+Pj4wPj0oa1tEPj4yXXwwKT4+PjApYnJlYWs7aWYoIShsWzE4NDAzKyhsW2tbdj4+Ml0+PjBdfDApPj4wXSY0KSlicmVhaztrW3Y+PjJdPShrW3Y+PjJdfDApKyhrW28+PjJdfDApO2tbej4+Ml09KGtbej4+Ml18MCkrMTtrW24+PjJdPShrW24+PjJdfDApKzF9YTpkbyBpZigoa1t2Pj4yXXwwKT4+PjA8KGtbRD4+Ml18MCk+Pj4wKXtiOmRvIGlmKChpW2tbdj4+Ml0+PjBdfDApPT00Nil7a1t2Pj4yXT0oa1t2Pj4yXXwwKSsoa1tvPj4yXXwwKTt3aGlsZSgxKXtpZigoa1t2Pj4yXXwwKT4+PjA+PShrW0Q+PjJdfDApPj4+MClicmVhayBiO2lmKCEobFsxODQwMysobFtrW3Y+PjJdPj4wXXwwKT4+MF0mNCkpYnJlYWsgYjthPXM7Yj1rW2ErND4+Ml18MDtpZigoYnwwKTwyMTQ3NDgzNjR8KGJ8MCk9PTIxNDc0ODM2NCYoa1thPj4yXXwwKT4+PjA8MzQzNTk3MzgzNSl7YT1zO2E9a1Moa1thPj4yXXwwLGtbYSs0Pj4yXXwwLDEwLDApfDA7Yj0oaVtrW3Y+PjJdPj4wXXwwKS00OHwwO2I9JFIoYXwwLEx8MCxifDAsKChifDApPDApPDwzMT4+MzF8MCl8MDthPXM7a1thPj4yXT1iO2tbYSs0Pj4yXT1MO2tbbj4+Ml09KGtbbj4+Ml18MCkrLTF9a1t2Pj4yXT0oa1t2Pj4yXXwwKSsoa1tvPj4yXXwwKTtrW3o+PjJdPShrW3o+PjJdfDApKzF9fXdoaWxlKDApO2lmKChrW3Y+PjJdfDApPj4+MDwoa1tEPj4yXXwwKT4+PjApe2lmKCEoKGlba1t2Pj4yXT4+MF18MCkhPTEwMT8oaVtrW3Y+PjJdPj4wXXwwKSE9Njk6MCkpbT0zNDtjOmRvIGlmKChtfDApPT0zNCl7a1t2Pj4yXT0oa1t2Pj4yXXwwKSsoa1tvPj4yXXwwKTtrW3g+PjJdPTA7aWYoKGtbdj4+Ml18MCk+Pj4wPj0oa1tEPj4yXXwwKT4+PjApYnJlYWsgYTtpZigoaVtrW3Y+PjJdPj4wXXwwKSE9NDUpe2lmKChpW2tbdj4+Ml0+PjBdfDApPT00MylrW3Y+PjJdPShrW3Y+PjJdfDApKyhrW28+PjJdfDApfWVsc2V7a1t5Pj4yXT0tMTtrW3Y+PjJdPShrW3Y+PjJdfDApKyhrW28+PjJdfDApfXdoaWxlKDEpe2lmKChrW3Y+PjJdfDApPj4+MD49KGtbRD4+Ml18MCk+Pj4wKWJyZWFrIGM7aWYoIShsWzE4NDAzKyhsW2tbdj4+Ml0+PjBdfDApPj4wXSY0KSlicmVhayBjO2lmKChrW3E+PjJdfDApPDFlNCllPSgoa1txPj4yXXwwKSoxMHwwKSsoKGlba1t2Pj4yXT4+MF18MCktNDgpfDA7ZWxzZSBlPTFlNDtrW3E+PjJdPWU7a1t2Pj4yXT0oa1t2Pj4yXXwwKSsoa1tvPj4yXXwwKTtrW3g+PjJdPTF9fXdoaWxlKDApO3doaWxlKDEpe2lmKChrW3Y+PjJdfDApPj4+MD49KGtbRD4+Ml18MCk+Pj4wKWJyZWFrIGE7aWYoIShsWzE4NDAzKyhsW2tbdj4+Ml0+PjBdfDApPj4wXSYxKSlicmVhayBhO2tbdj4+Ml09KGtbdj4+Ml18MCkrKGtbbz4+Ml18MCl9fX13aGlsZSgwKTtvPWhhKGtbcT4+Ml18MCxrW3k+PjJdfDApfDA7a1txPj4yXT1vKyhrW24+PjJdfDApO2lmKChrW3E+PjJdfDApPDApe2tbeT4+Ml09LTE7bz1oYShrW3E+PjJdfDAsLTEpfDA7a1txPj4yXT1vfWVsc2Uga1t5Pj4yXT0xO289cztkbyBpZighKChrW28+PjJdfDApPT0wJihrW28rND4+Ml18MCk9PTApKXt3aGlsZSgxKXtpZigoa1txPj4yXXwwKTw9MClicmVhaztoPXM7ZT1rW2g+PjJdfDA7aD1rW2grND4+Ml18MDtpZigoa1t5Pj4yXXwwKT4wKXtpZigoaHwwKT4yMTQ3NDgzNjR8KGh8MCk9PTIxNDc0ODM2NCZlPj4+MD49MzQzNTk3MzgzNilicmVhaztuPXM7bj1rUyhrW24+PjJdfDAsa1tuKzQ+PjJdfDAsMTAsMCl8MDtvPXM7a1tvPj4yXT1uO2tbbys0Pj4yXT1MfWVsc2V7bz1qUyhlfDAsaHwwLDEwLDApfDA7aWYoKG98MCkhPTB8KEx8MCkhPTApYnJlYWs7bj1zO249aVMoa1tuPj4yXXwwLGtbbis0Pj4yXXwwLDEwLDApfDA7bz1zO2tbbz4+Ml09bjtrW28rND4+Ml09TH1rW3E+PjJdPShrW3E+PjJdfDApKy0xfW49KGtbdD4+Ml18MCk8MDtvPXM7bT1rW28+PjJdfDA7bz1rW28rND4+Ml18MDthPV9SKDAsMCxtfDAsb3wwKXwwO3Q9cztrW3Q+PjJdPW4/YTptO2tbdCs0Pj4yXT1uP0w6bztpZighKGtbcT4+Ml18MCkpe3k9cztwW0M+PjNdPSsoKGtbeT4+Ml18MCk+Pj4wKSs0Mjk0OTY3Mjk2LjAqKyhrW3krND4+Ml18MCk7YnJlYWt9cFt1Pj4zXT0xLjA7aWYoKGtbcT4+Ml18MCk8PTMwNyl7d2hpbGUoMSl7aWYoISgoa1txPj4yXXwwKSUyMnwwKSlicmVhaztwW3U+PjNdPStwW3U+PjNdKjEwLjA7a1txPj4yXT0oa1txPj4yXXwwKS0xfXdoaWxlKDEpe2lmKChrW3E+PjJdfDApPD0wKWJyZWFrO3BbdT4+M109K3BbdT4+M10qMS4wZTIyO2tbcT4+Ml09KGtbcT4+Ml18MCktMjJ9dD1zO2c9Kygoa1t0Pj4yXXwwKT4+PjApKzQyOTQ5NjcyOTYuMCorKGtbdCs0Pj4yXXwwKTtmPStwW3U+PjNdO2lmKChrW3k+PjJdfDApPDApe3BbQz4+M109Zy9mO2JyZWFrfWVsc2V7cFtDPj4zXT1nKmY7YnJlYWt9fWlmKChrW3E+PjJdfDApPj0zNDIpe3U9cztmPSsoKGtbdT4+Ml18MCk+Pj4wKSs0Mjk0OTY3Mjk2LjAqKyhrW3UrND4+Ml18MCk7aWYoKGtbeT4+Ml18MCk8MCl7cFtDPj4zXT0wLjAqZjticmVha31lbHNle3BbQz4+M109QipmO2JyZWFrfX13aGlsZSgxKXtpZighKChrW3E+PjJdfDApJTMwOHwwKSlicmVhaztwW3U+PjNdPStwW3U+PjNdKjEwLjA7a1txPj4yXT0oa1txPj4yXXwwKS0xfXQ9cztnPSsoKGtbdD4+Ml18MCk+Pj4wKSs0Mjk0OTY3Mjk2LjAqKyhrW3QrND4+Ml18MCk7Zj0rcFt1Pj4zXTtpZigoa1t5Pj4yXXwwKTwwKXtwW0M+PjNdPWcvZjtwW0M+PjNdPStwW0M+PjNdLzEuZSszMDg7YnJlYWt9ZWxzZXtwW0M+PjNdPWcqZjtwW0M+PjNdPStwW0M+PjNdKjEuZSszMDg7YnJlYWt9fWVsc2UgcFtDPj4zXT0oa1t0Pj4yXXwwKTwwPy0wLjA6MC4wO3doaWxlKDApO3Bba1t3Pj4yXT4+M109K3BbQz4+M107aWYoKChrW3o+PjJdfDApPjA/KGtbdj4+Ml18MCk9PShrW0Q+PjJdfDApOjApJihrW3g+PjJdfDApIT0wKWU9KGtbQT4+Ml18MCk9PTA7ZWxzZSBlPTA7a1tFPj4yXT1lJjE7RT1rW0U+PjJdfDA7cj1GO3JldHVybiBFfDB9ZnVuY3Rpb24gcHooYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTAsbD0wLG09MDttPXI7cj1yKzMyfDA7ZT1tKzIwfDA7Zj1tKzE2fDA7Zz1tKzEyfDA7aD1tKzh8MDtqPW0rNHwwO2w9bTtrW2Y+PjJdPWE7a1tnPj4yXT1iO2tbaD4+Ml09YztrW2o+PjJdPWQ7a1tsPj4yXT0wO3doaWxlKDEpe2lmKCEoaVsoa1tmPj4yXXwwKSsoa1tsPj4yXXwwKT4+MF18MCkpYnJlYWs7aWYoKGlbKGtbZj4+Ml18MCkrKGtbbD4+Ml18MCk+PjBdfDApPT00NilicmVhaztrW2w+PjJdPShrW2w+PjJdfDApKzF9ZG8gaWYoa1tqPj4yXXwwKXtpZigoSmQoa1tmPj4yXXwwLGtbaj4+Ml18MCxrW2w+PjJdfDApfDApPT0wPyhpWyhrW2o+PjJdfDApKyhrW2w+PjJdfDApPj4wXXwwKT09MDowKWJyZWFrO2tbZT4+Ml09MDtjPWtbZT4+Ml18MDtyPW07cmV0dXJuIGN8MH13aGlsZSgwKTtrW2Y+PjJdPShrW2Y+PjJdfDApKygoa1tsPj4yXXwwKSsxKTtrW2w+PjJdPTA7d2hpbGUoMSl7aWYoIShpWyhrW2Y+PjJdfDApKyhrW2w+PjJdfDApPj4wXXwwKSlicmVhaztpZigoaVsoa1tmPj4yXXwwKSsoa1tsPj4yXXwwKT4+MF18MCk9PTQ2KWJyZWFrO2tbbD4+Ml09KGtbbD4+Ml18MCkrMX1kbyBpZihrW2g+PjJdfDApe2lmKChKZChrW2Y+PjJdfDAsa1toPj4yXXwwLGtbbD4+Ml18MCl8MCk9PTA/KGlbKGtbaD4+Ml18MCkrKGtbbD4+Ml18MCk+PjBdfDApPT0wOjApYnJlYWs7a1tlPj4yXT0wO2M9a1tlPj4yXXwwO3I9bTtyZXR1cm4gY3wwfXdoaWxlKDApO2tbZj4+Ml09KGtbZj4+Ml18MCkrKChrW2w+PjJdfDApKzEpO2lmKChrW2c+PjJdfDApIT0wPyhzZyhrW2Y+PjJdfDAsa1tnPj4yXXwwKXwwKSE9MDowKXtrW2U+PjJdPTA7Yz1rW2U+PjJdfDA7cj1tO3JldHVybiBjfDB9a1tlPj4yXT0xO2M9a1tlPj4yXXwwO3I9bTtyZXR1cm4gY3wwfWZ1bmN0aW9uIHF6KGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTA7Zz1yO3I9cisxNnwwO2M9ZysxMnwwO2Q9Zys4fDA7ZT1nKzR8MDtmPWc7a1tkPj4yXT1hO2tbZT4+Ml09YjthOmRvIGlmKGtbZD4+Ml18MCl7a1tmPj4yXT0wO3doaWxlKDEpe2lmKChrW2Y+PjJdfDApPj0oa1soa1tkPj4yXXwwKSs0Pj4yXXwwKSlicmVhayBhO2lmKCEoc2coa1soa1trW2Q+PjJdPj4yXXwwKSsoa1tmPj4yXTw8Myk+PjJdfDAsa1tlPj4yXXwwKXwwKSlicmVhaztrW2Y+PjJdPShrW2Y+PjJdfDApKzF9a1tjPj4yXT0xO2I9a1tjPj4yXXwwO3I9ZztyZXR1cm4gYnwwfXdoaWxlKDApO2tbYz4+Ml09MDtiPWtbYz4+Ml18MDtyPWc7cmV0dXJuIGJ8MH1mdW5jdGlvbiByeihhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscz0wLHQ9MDtzPXI7cj1yKzQ4fDA7Zj1zKzM2fDA7Zz1zKzMyfDA7ZT1zKzI4fDA7aD1zKzI0fDA7dD1zKzIwfDA7cD1zKzE2fDA7cT1zKzEyfDA7bz1zKzh8MDtuPXMrNHwwO209cztrW2Y+PjJdPWE7a1tnPj4yXT1iO2tbZT4+Ml09YztrW2g+PjJdPWQ7a1t0Pj4yXT1rW2tbZj4+Ml0+PjJdO2tbcD4+Ml09MDtpZighKGtbKGtbdD4+Ml18MCkrMjk2Pj4yXXwwKSl7cj1zO3JldHVybn10PVBoKGtba1tmPj4yXT4+Ml18MCxrW2U+PjJdfDApfDA7a1tuPj4yXT10O2lmKChrW24+PjJdfDApPDApe3I9cztyZXR1cm59YTpkbyBpZigobFtrW2c+PjJdPj4wXXwwKT09ODgpa1twPj4yXT1rWyhrW2Y+PjJdfDApKzEyOD4+Ml07ZWxzZXtrW28+PjJdPTA7d2hpbGUoMSl7aWYoKGtbbz4+Ml18MCk+PShrW2tbaD4+Ml0+PjJdfDApKWJyZWFrIGE7ZT1rW28+PjJdfDA7aWYoKGtbKGtbZz4+Ml18MCkrMjg+PjJdfDApPT0oa1soa1toPj4yXXwwKSs4Kygoa1tvPj4yXXwwKSo3MnwwKSs0ND4+Ml18MCkpYnJlYWs7a1tvPj4yXT1lKzF9a1twPj4yXT1rWyhrW2g+PjJdfDApKzgrKGUqNzJ8MCkrMTY+PjJdfXdoaWxlKDApO2tbbT4+Ml09alsoa1tnPj4yXXwwKSszMj4+MV07aWYoIShrW3A+PjJdfDApKXtyPXM7cmV0dXJufWRvIGlmKChrW20+PjJdfDApPDApaWYoKGpbKGtbcD4+Ml18MCkrMzI+PjFdfDApPj0wKXtrW3E+PjJdPWtbKGtbKGtbcD4+Ml18MCkrND4+Ml18MCkrKGpbKGtbcD4+Ml18MCkrMzI+PjFdPDw0KT4+Ml07YnJlYWt9ZWxzZXtrW3E+PjJdPTE5ODk1O2JyZWFrfWVsc2Uga1txPj4yXT1rWyhrWyhrW3A+PjJdfDApKzQ+PjJdfDApKyhrW20+PjJdPDw0KT4+Ml07d2hpbGUoMCk7aWYoMiE9KHN6KGtbZj4+Ml18MCxrW2tbcD4+Ml0+PjJdfDAsa1txPj4yXXwwLGtbbj4+Ml18MCl8MCkpe3I9cztyZXR1cm59aVtrW2c+PjJdPj4wXT0xMDE7cj1zO3JldHVybn1mdW5jdGlvbiBzeihhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MDtxPXI7cj1yKzY0fDA7bz1xKzE2fDA7bj1xO2U9cSs1MnwwO2Y9cSs0OHwwO2c9cSs0NHwwO2g9cSs0MHwwO2o9cSszNnwwO2w9cSszMnwwO3A9cSsyOHwwO209cSsyNHwwO2tbZj4+Ml09YTtrW2c+PjJdPWI7a1toPj4yXT1jO2tbaj4+Ml09ZDtrW2w+PjJdPWtba1tmPj4yXT4+Ml07a1twPj4yXT1rWyhrWyhrW2w+PjJdfDApKzE2Pj4yXXwwKSsoa1tqPj4yXTw8NCk+PjJdO2lmKGlbKGtbbD4+Ml18MCkrMTQ4KzU+PjBdfDApe2tbZT4+Ml09MDtwPWtbZT4+Ml18MDtyPXE7cmV0dXJuIHB8MH1iPWFjW2tbKGtbbD4+Ml18MCkrMjk2Pj4yXSYyNTVdKGtbKGtbbD4+Ml18MCkrMzAwPj4yXXwwLDIwLGtbZz4+Ml18MCxrW2g+PjJdfDAsa1twPj4yXXwwLGtbKGtbZj4+Ml18MCkrNDQ4Pj4yXXwwKXwwO2tbbT4+Ml09YjtpZigoa1ttPj4yXXwwKSE9MSl7aWYoKGtbbT4+Ml18MCkhPTImKGtbbT4+Ml18MCkhPTApbHgoa1tmPj4yXXwwKX1lbHNle2Q9a1tmPj4yXXwwO2lmKChrW2o+PjJdfDApIT0wPzE6KGtbKGtbbD4+Ml18MCkrMjA+PjJdfDApPjIpe2w9a1tnPj4yXXwwO289a1toPj4yXXwwO2tbbj4+Ml09a1twPj4yXTtrW24rND4+Ml09bDtrW24rOD4+Ml09bztPaChkLDMwMDQ2LG4pfWVsc2V7cD1rW2g+PjJdfDA7a1tvPj4yXT1rW2c+PjJdO2tbbys0Pj4yXT1wO09oKGQsMzAwNzksbyl9a1soa1tmPj4yXXwwKSsxMj4+Ml09MjN9a1tlPj4yXT1rW20+PjJdO3A9a1tlPj4yXXwwO3I9cTtyZXR1cm4gcHwwfVxuZnVuY3Rpb24gbE4oYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wLGU9MCxmPTA7Zj1yO3I9cisxNnwwO2Q9ZisxMnwwO2U9Zis4fDA7Yz1mKzR8MDtiPWY7a1tkPj4yXT1hO2tbZT4+Ml09a1soa1tkPj4yXXwwKSs0Pj4yXTtrW2M+PjJdPShrW2U+PjJdfDApKzcyO3doaWxlKDEpe2lmKCEoa1trW2M+PjJdPj4yXXwwKSlicmVhaztrW2I+PjJdPWtba1tjPj4yXT4+Ml07YT0oa1tiPj4yXXwwKSsxMnwwO2lmKChrW2tbYj4+Ml0+PjJdfDApIT0oa1tkPj4yXXwwKSl7a1tjPj4yXT1hO2NvbnRpbnVlfWtba1tjPj4yXT4+Ml09a1thPj4yXTtpZigoa1soa1tiPj4yXXwwKSs0Pj4yXXwwKT09MSljb250aW51ZTtVZChrW2I+PjJdfDApfWE9a1tlPj4yXXwwO2lmKChrWyhrW2U+PjJdfDApKzc2Pj4yXXwwKT09KGtbZD4+Ml18MCkpe2tbYSs3Nj4+Ml09MDtlPShrW2U+PjJdfDApKzIyfDA7altlPj4xXT0obVtlPj4xXXwwKSYtOTc7cj1mO3JldHVybn1pZigoa1thKzQwPj4yXXwwKSE9Mil7cj1mO3JldHVybn1lPShrW2U+PjJdfDApKzIyfDA7altlPj4xXT0obVtlPj4xXXwwKSYtNjU7cj1mO3JldHVybn1mdW5jdGlvbiBtTihhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxsPTA7bD1yO3I9ciszMnwwO2I9bCsyOHwwO2M9bCsyNHwwO2o9bCsyMHwwO2g9bCsxNnwwO2U9bCsxMnwwO2Y9bCs4fDA7ZD1sKzR8MDtnPWw7a1tjPj4yXT1hO2tbaj4+Ml09MDtrW2g+PjJdPWtba1tjPj4yXT4+Ml07aUsoa1tjPj4yXXwwKTtkbyBpZighKGlbKGtbYz4+Ml18MCkrMTg+PjBdfDApKXthPVRGKGtbYz4+Ml18MCl8MDtrW2c+PjJdPWE7YT1kRyhrW2M+PjJdfDAsa1tnPj4yXXwwKXwwO2lmKChhfDApIT0oa1tnPj4yXXwwKT8oa1tnPj4yXXwwKSE9KCgoKGtbMzg0XXwwKT4+PjApLygoa1soa1tjPj4yXXwwKSszMj4+Ml18MCk+Pj4wKXwwKSsxfDApOjApe2E9cXIoKGtbKGtbKGtbYz4+Ml18MCkrMTI+PjJdfDApKzU2Pj4yXXwwKSszNnwwKXwwO2tbZj4+Ml09YTthPWhLKGtbYz4+Ml18MCxrW2c+PjJdfDAsa1tmPj4yXXwwKXwwO2tbZT4+Ml09YTtpZigoa1tlPj4yXXwwKT4+PjA+KGtbZz4+Ml18MCk+Pj4wKXtqPV9qKDYxOTE5KXwwO2tbYj4+Ml09ajtqPWtbYj4+Ml18MDtyPWw7cmV0dXJuIGp8MH1pZigoa1tlPj4yXXwwKT4+PjA8KGtbZz4+Ml18MCk+Pj4wKXthPWZJKGtbYz4+Ml18MCwwLDApfDA7a1tqPj4yXT1hfWtbZD4+Ml09a1tnPj4yXTt3aGlsZSgxKXtpZighKChrW2Q+PjJdfDApPj4+MD4oa1tlPj4yXXwwKT4+PjA/KGtbaj4+Ml18MCk9PTA6MCkpYnJlYWs7YT1qSyhrW2M+PjJdfDAsa1tlPj4yXXwwLGtbZD4+Ml18MCwxKXwwO2tbaj4+Ml09YTtrW2Q+PjJdPShrW2Q+PjJdfDApKy0xfWlmKCgoa1tqPj4yXXwwKT09MTAxfChrW2o+PjJdfDApPT0wKSYoa1tmPj4yXXwwKT4+PjA+MCl7YT1RZyhrWyhrWyhrW2M+PjJdfDApKzEyPj4yXXwwKSs3Mj4+Ml18MCl8MDtrW2o+PjJdPWE7cHQoKGtbKGtbKGtbYz4+Ml18MCkrMTI+PjJdfDApKzU2Pj4yXXwwKSszMnwwLDApO3B0KChrWyhrWyhrW2M+PjJdfDApKzEyPj4yXXwwKSs1Nj4+Ml18MCkrMzZ8MCwwKTtwdCgoa1soa1soa1tjPj4yXXwwKSsxMj4+Ml18MCkrNTY+PjJdfDApKzI4fDAsa1tlPj4yXXwwKTtpWyhrW2M+PjJdfDApKzE5Pj4wXT0xO2tbKGtbYz4+Ml18MCkrNDQ+PjJdPWtbZT4+Ml19aWYoIShrW2o+PjJdfDApKWJyZWFrO0FyKGtbaD4+Ml18MCl8MDticmVha31qPV9qKDYxOTE0KXwwO2tbYj4+Ml09ajtqPWtbYj4+Ml18MDtyPWw7cmV0dXJuIGp8MH13aGlsZSgwKTtrW2I+PjJdPWtbaj4+Ml07aj1rW2I+PjJdfDA7cj1sO3JldHVybiBqfDB9ZnVuY3Rpb24gbk4oYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wLGU9MDtlPXI7cj1yKzE2fDA7Yj1lKzh8MDtjPWUrNHwwO2Q9ZTtrW2M+PjJdPWE7a1tkPj4yXT0wO2E9a1tjPj4yXXwwO2lmKGtbKGtbYz4+Ml18MCkrNDQ+PjJdfDApe2tbYj4+Ml09a1thKzQ0Pj4yXTtkPWtbYj4+Ml18MDtyPWU7cmV0dXJuIGR8MH1pZigoKGxbYSsxNz4+MF18MHwwKT09Mj8obFsoa1tjPj4yXXwwKSs0Pj4wXXwwfDApIT0wOjApPyhsWyhrW2M+PjJdfDApKzU+PjBdfDB8MCk9PTE6MCl7aVsoa1tjPj4yXXwwKSsxNz4+MF09MTtrW2I+PjJdPTA7ZD1rW2I+PjJdfDA7cj1lO3JldHVybiBkfDB9YT0oa1tjPj4yXXwwKSsxMDh8MDtrW2E+PjJdPShrW2E+PjJdfDApKzE7YT1CcihrW2M+PjJdfDAsbFsoa1tjPj4yXXwwKSsyMD4+MF18MCwxKXwwO2tbZD4+Ml09YTtkPXdyKGtbYz4+Ml18MCxrW2Q+PjJdfDApfDA7a1tiPj4yXT1kO2Q9a1tiPj4yXXwwO3I9ZTtyZXR1cm4gZHwwfWZ1bmN0aW9uIG9OKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MDtmPXI7cj1yKzE2fDA7Yz1mKzEyfDA7ZT1mKzR8MDtkPWY7a1tjPj4yXT1hO2tbZis4Pj4yXT1iO2tbZT4+Ml09MDtpZihpWyhrW2M+PjJdfDApKzE5Pj4wXXwwKXtlPWtbZT4+Ml18MDtyPWY7cmV0dXJuIGV8MH1pZigoa1soa1tjPj4yXXwwKSsyOD4+Ml18MCk+Pj4wPD0wKXtlPWtbZT4+Ml18MDtyPWY7cmV0dXJuIGV8MH1hPUZnKGtbYz4+Ml18MCwxLGQsMCl8MDtrW2U+PjJdPWE7aWYoIShrW2U+PjJdfDApKXthPVFnKGtbZD4+Ml18MCl8MDtrW2U+PjJdPWF9aWYoIShrW2U+PjJdfDApKXtMdChrW2Q+PjJdfDApO2lbKGtbYz4+Ml18MCkrMTk+PjBdPTF9SWcoa1tkPj4yXXwwKTtlPWtbZT4+Ml18MDtyPWY7cmV0dXJuIGV8MH1mdW5jdGlvbiBwTihhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsbT0wLG49MCxvPTAscD0wO249cjtyPXIrNDh8MDtjPW4rMzZ8MDtkPW4rMzJ8MDtlPW4rMjh8MDttPW4rMjR8MDtqPW4rMjB8MDtnPW4rOHwwO2g9bjtmPW4rMTZ8MDtrW2Q+PjJdPWE7a1tlPj4yXT1iO2tbZj4+Ml09MDtpZigoKGtbZT4+Ml18MCkhPTA/KGxbKGtbZD4+Ml18MCkrNT4+MF18MCkhPTQ6MCk/KGtba1soa1tkPj4yXXwwKSs2OD4+Ml0+PjJdfDApIT0wOjApe2lbKGtbZD4+Ml18MCkrMjA+PjBdPTE7a1tqPj4yXT0wO3doaWxlKDEpe2lmKCEoaVsoa1tlPj4yXXwwKSsoa1tqPj4yXXwwKT4+MF18MCkpYnJlYWs7a1tmPj4yXT0oa1tmPj4yXXwwKSsoaVsoa1tlPj4yXXwwKSsoa1tqPj4yXXwwKT4+MF18MCk7a1tqPj4yXT0oa1tqPj4yXXwwKSsxfWlmKGlbKGtbZD4+Ml18MCkrOD4+MF18MCl7YT16cyhrW2Q+PjJdfDApfDA7Yj0oa1tkPj4yXXwwKSs4MHwwO2tbYj4+Ml09YTtrW2IrND4+Ml09TH1vPShrW2Q+PjJdfDApKzgwfDA7YT1rW28rND4+Ml18MDtiPWc7a1tiPj4yXT1rW28+PjJdO2tbYis0Pj4yXT1hO2I9ZztiPSR0KGtbKGtbZD4+Ml18MCkrNjg+PjJdfDAsa1tiPj4yXXwwLGtbYis0Pj4yXXwwLCgoa1szODRdfDApLyhrWyhrW2Q+PjJdfDApKzE2MD4+Ml18MCl8MCkrMXwwKXwwO2tbbT4+Ml09YjtpZigoKCgwPT0oYnwwKT8ocD1rWyhrW2Q+PjJdfDApKzY4Pj4yXXwwLGE9a1tlPj4yXXwwLGI9a1tqPj4yXXwwLG89ZyxvPSRSKGtbbz4+Ml18MCxrW28rND4+Ml18MCw0LDApfDAsbz1TZyhwLGEsYixvLEwpfDAsa1ttPj4yXT1vLDA9PShvfDApKTowKT8obz1rWyhrW2Q+PjJdfDApKzY4Pj4yXXwwLGI9ZyxiPSRSKGtbYj4+Ml18MCxrW2IrND4+Ml18MCw0LDApfDAscD1rW2o+PjJdfDAscD0kUihifDAsTHwwLHB8MCwoKHB8MCk8MCk8PDMxPj4zMXwwKXwwLHA9JHQobyxwLEwsa1tqPj4yXXwwKXwwLGtbbT4+Ml09cCwwPT0ocHwwKSk6MCk/KG89a1soa1tkPj4yXXwwKSs2OD4+Ml18MCxiPWcsYj0kUihrW2I+PjJdfDAsa1tiKzQ+PjJdfDAsNCwwKXwwLHA9a1tqPj4yXXwwLHA9JFIoYnwwLEx8MCxwfDAsKChwfDApPDApPDwzMT4+MzF8MCl8MCxwPSRSKHB8MCxMfDAsNCwwKXwwLHA9JHQobyxwLEwsa1tmPj4yXXwwKXwwLGtbbT4+Ml09cCwwPT0ocHwwKSk6MCk/KG89a1soa1tkPj4yXXwwKSs2OD4+Ml18MCxiPWcsYj0kUihrW2I+PjJdfDAsa1tiKzQ+PjJdfDAsNCwwKXwwLHA9a1tqPj4yXXwwLHA9JFIoYnwwLEx8MCxwfDAsKChwfDApPDApPDwzMT4+MzF8MCl8MCxwPSRSKHB8MCxMfDAsOCwwKXwwLHA9U2cobywyNTkwMSw4LHAsTCl8MCxrW20+PjJdPXAsMD09KHB8MCkpOjApe289KGtbaj4+Ml18MCkrMjB8MDtwPShrW2Q+PjJdfDApKzgwfDA7Yj1wO289JFIoa1tiPj4yXXwwLGtbYis0Pj4yXXwwLG98MCwoKG98MCk8MCk8PDMxPj4zMXwwKXwwO2tbcD4+Ml09bztrW3ArND4+Ml09TDtwPWZqKGtbKGtbZD4+Ml18MCkrNjg+PjJdfDAsaCl8MDtrW20+PjJdPXA7aWYoMD09KHB8MCk/KG89aCxhPWtbbys0Pj4yXXwwLHA9KGtbZD4+Ml18MCkrODB8MCxiPWtbcCs0Pj4yXXwwLChhfDApPihifDApfCgoYXwwKT09KGJ8MCk/KGtbbz4+Ml18MCk+Pj4wPihrW3A+PjJdfDApPj4+MDowKSk6MCl7cD0oa1tkPj4yXXwwKSs4MHwwO3A9RXIoa1soa1tkPj4yXXwwKSs2OD4+Ml18MCxrW3A+PjJdfDAsa1twKzQ+PjJdfDApfDA7a1ttPj4yXT1wfWtbYz4+Ml09a1ttPj4yXTtwPWtbYz4+Ml18MDtyPW47cmV0dXJuIHB8MH1rW2M+PjJdPWtbbT4+Ml07cD1rW2M+PjJdfDA7cj1uO3JldHVybiBwfDB9a1tjPj4yXT0wO3A9a1tjPj4yXXwwO3I9bjtyZXR1cm4gcHwwfWZ1bmN0aW9uIHFOKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTAsbj0wLG89MCxwPTAscT0wLHM9MCx0PTAsdT0wO3U9cjtyPXIrNDh8MDtiPXUrNDR8MDtzPXUrNDB8MDtlPXUrMzZ8MDtxPXUrMzJ8MDtkPXUrMjh8MDtjPXUrMjR8MDtnPXUrMjB8MDtvPXUrMTZ8MDtmPXUrMTJ8MDtwPXUrOHwwO2g9dSs0fDA7bj11O2tbYj4+Ml09YTtrW3M+PjJdPTA7a1tkPj4yXT0wO2tbZz4+Ml09MDtrW28+PjJdPWtbKGtbYj4+Ml18MCkrMTY+PjJdO2tbZj4+Ml09KChrWyhrW28+PjJdfDApKzE1Nj4+Ml18MCk+Pj4wKS8oKGtbKGtbbz4+Ml18MCkrMTYwPj4yXXwwKT4+PjApfDA7YT0oa1tvPj4yXXwwKSsyMXwwO2lbYT4+MF09bFthPj4wXXwwfDQ7a1txPj4yXT0oKGtbKGtbYj4+Ml18MCkrMjA+PjJdfDApLTEmfigoa1tmPj4yXXwwKS0xKSkrMTtrW2U+PjJdPWtbKGtbbz4+Ml18MCkrMjg+PjJdO2RvIGlmKChrWyhrW2I+PjJdfDApKzIwPj4yXXwwKT4+PjA8PShrW2U+PjJdfDApPj4+MClpZigoKGtbcT4+Ml18MCkrKGtbZj4+Ml18MCktMXwwKT4+PjA+KGtbZT4+Ml18MCk+Pj4wKXtrW2Q+PjJdPShrW2U+PjJdfDApKzEtKGtbcT4+Ml18MCk7YnJlYWt9ZWxzZXtrW2Q+PjJdPWtbZj4+Ml07YnJlYWt9ZWxzZSBrW2Q+PjJdPShrWyhrW2I+PjJdfDApKzIwPj4yXXwwKS0oa1txPj4yXXwwKSsxO3doaWxlKDApO2tbYz4+Ml09MDt3aGlsZSgxKXtpZighKChrW2M+PjJdfDApPChrW2Q+PjJdfDApPyhrW3M+PjJdfDApPT0wOjApKWJyZWFrO2tbcD4+Ml09KGtbcT4+Ml18MCkrKGtbYz4+Ml18MCk7aWYoKGtbcD4+Ml18MCkhPShrWyhrW2I+PjJdfDApKzIwPj4yXXwwKT8oeGooa1soa1tvPj4yXXwwKSs2MD4+Ml18MCxrW3A+PjJdfDApfDApIT0wOjApe2E9cnMoa1tvPj4yXXwwLGtbcD4+Ml18MCl8MDtrW2g+PjJdPWE7aWYoYSl7aWYoKG1bKGtbaD4+Ml18MCkrMjQ+PjFdfDApJjgpa1tnPj4yXT0xO1RzKGtbaD4+Ml18MCl9fWVsc2UgdD0xMDtpZigoKHR8MCk9PTEwPyh0PTAsKGtbcD4+Ml18MCkhPSgoKGtbMzg0XXwwKS8oa1soa1tvPj4yXXwwKSsxNjA+PjJdfDApfDApKzF8MCkpOjApPyhhPUZnKGtbbz4+Ml18MCxrW3A+PjJdfDAsaCwwKXwwLGtbcz4+Ml09YSwoa1tzPj4yXXwwKT09MCk6MCl7YT1yTihrW2g+PjJdfDApfDA7a1tzPj4yXT1hO2lmKChtWyhrW2g+PjJdfDApKzI0Pj4xXXwwKSY4KWtbZz4+Ml09MTtUcyhrW2g+PjJdfDApfWtbYz4+Ml09KGtbYz4+Ml18MCkrMX1pZighKChrW3M+PjJdfDApPT0wJihrW2c+PjJdfDApIT0wKSl7dD1rW28+PjJdfDA7dD10KzIxfDA7cT1pW3Q+PjBdfDA7cT1xJjI1NTtxPXEmLTU7cT1xJjI1NTtpW3Q+PjBdPXE7dD1rW3M+PjJdfDA7cj11O3JldHVybiB0fDB9a1tjPj4yXT0wO3doaWxlKDEpe2lmKChrW2M+PjJdfDApPj0oa1tkPj4yXXwwKSlicmVhazt0PXJzKGtbbz4+Ml18MCwoa1txPj4yXXwwKSsoa1tjPj4yXXwwKXwwKXwwO2tbbj4+Ml09dDtpZihrW24+PjJdfDApe3Q9KGtbbj4+Ml18MCkrMjR8MDtqW3Q+PjFdPW1bdD4+MV18MHw4O1RzKGtbbj4+Ml18MCl9a1tjPj4yXT0oa1tjPj4yXXwwKSsxfXQ9a1tvPj4yXXwwO3Q9dCsyMXwwO3E9aVt0Pj4wXXwwO3E9cSYyNTU7cT1xJi01O3E9cSYyNTU7aVt0Pj4wXT1xO3Q9a1tzPj4yXXwwO3I9dTtyZXR1cm4gdHwwfWZ1bmN0aW9uIHJOKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MCxlPTAsZj0wO2Y9cjtyPXIrMTZ8MDtiPWYrMTJ8MDtjPWYrOHwwO2Q9Zis0fDA7ZT1mO2tbYz4+Ml09YTtrW2Q+PjJdPWtbKGtbYz4+Ml18MCkrMTY+PjJdO2tbZT4+Ml09MDtpZigobFsoa1tkPj4yXXwwKSsxNz4+MF18MHwwKT09Mj8oYT1zTihrW2Q+PjJdfDApfDAsa1tlPj4yXT1hLChrW2U+PjJdfDApIT0wKTowKXtrW2I+PjJdPWtbZT4+Ml07ZT1rW2I+PjJdfDA7cj1mO3JldHVybiBlfDB9dHMoa1tjPj4yXXwwKTtkbyBpZigoa1soa1tkPj4yXXwwKSs2MD4+Ml18MCkhPTA/KEFqKGtbKGtbZD4+Ml18MCkrNjA+PjJdfDAsa1soa1tjPj4yXXwwKSsyMD4+Ml18MCl8MCk9PTA6MCl7aWYoKGtbKGtbYz4+Ml18MCkrMjA+PjJdfDApPj4+MD4oa1soa1tkPj4yXXwwKSszMj4+Ml18MCk+Pj4wKXtpZigobFsoa1tkPj4yXXwwKSsxNz4+MF18MHwwKT09NClicmVhazthPShrW2M+PjJdfDApKzI0fDA7althPj4xXT1tW2E+PjFdfDB8ODticmVha31hPXROKGtbYz4+Ml18MCl8MDtrW2U+PjJdPWE7aWYoa1tlPj4yXXwwKXtrW2I+PjJdPWtbZT4+Ml07ZT1rW2I+PjJdfDA7cj1mO3JldHVybiBlfDB9fXdoaWxlKDApO2E9KGtbYz4+Ml18MCkrMjR8MDtqW2E+PjFdPW1bYT4+MV18MHw0O2lmKChrWyhrW2Q+PjJdfDApKzEwND4+Ml18MCk+MCl7YT1HdChrW2M+PjJdfDApfDA7a1tlPj4yXT1hfWlmKChrWyhrW2Q+PjJdfDApKzI4Pj4yXXwwKT4+PjA8KGtbKGtbYz4+Ml18MCkrMjA+PjJdfDApPj4+MClrWyhrW2Q+PjJdfDApKzI4Pj4yXT1rWyhrW2M+PjJdfDApKzIwPj4yXTtrW2I+PjJdPWtbZT4+Ml07ZT1rW2I+PjJdfDA7cj1mO3JldHVybiBlfDB9ZnVuY3Rpb24gc04oYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wLGU9MCxmPTAsZz0wLGg9MDtoPXI7cj1yKzMyfDA7ZT1oKzIwfDA7Zj1oKzE2fDA7Zz1oKzEyfDA7ZD1oKzh8MDtiPWgrNHwwO2M9aDtrW2Y+PjJdPWE7a1tnPj4yXT0wO2tbZD4+Ml09a1trW2Y+PjJdPj4yXTthPWtbZj4+Ml18MDtpZihrWyhrW2Y+PjJdfDApKzQ0Pj4yXXwwKXtrW2U+PjJdPWtbYSs0ND4+Ml07Zz1rW2U+PjJdfDA7cj1oO3JldHVybiBnfDB9aWYoKExyKGEpfDApPT0wPyhsWyhrW2Y+PjJdfDApKzU+PjBdfDApIT0yOjApe2E9dWooa1soa1tmPj4yXXwwKSsyOD4+Ml18MCl8MDtrWyhrW2Y+PjJdfDApKzYwPj4yXT1hO2lmKCEoa1soa1tmPj4yXXwwKSs2MD4+Ml18MCkpe2tbZT4+Ml09NztnPWtbZT4+Ml18MDtyPWg7cmV0dXJuIGd8MH1kbyBpZighKGtba1soa1tmPj4yXXwwKSs2OD4+Ml0+PjJdfDApKXtpZigobFsoa1tmPj4yXXwwKSs1Pj4wXXwwKT09NCl7dU4oa1soa1tmPj4yXXwwKSs2OD4+Ml18MCk7YnJlYWt9a1tiPj4yXT02O2E9a1tiPj4yXXwwO2lmKGlbKGtbZj4+Ml18MCkrMTM+PjBdfDApe2tbYj4+Ml09YXw0MTA0O2tbYz4+Ml09a1sxMV19ZWxzZXtrW2I+PjJdPWF8MjA0ODtrW2M+PjJdPTB9YT12TihrW2Y+PjJdfDApfDA7a1tnPj4yXT1hO2lmKCEoa1tnPj4yXXwwKSl7ZD1idShrW2Q+PjJdfDAsa1soa1tmPj4yXXwwKSsxODA+PjJdfDAsa1soa1tmPj4yXXwwKSs2OD4+Ml18MCxrW2I+PjJdfDAsa1tjPj4yXXwwKXwwO2tbZz4+Ml09ZH19d2hpbGUoMCk7aWYoIShrW2c+PjJdfDApKXtrWyhrW2Y+PjJdfDApKzQ4Pj4yXT0wO2Q9KGtbZj4+Ml18MCkrODB8MDtrW2Q+PjJdPTA7a1tkKzQ+PjJdPTA7aVsoa1tmPj4yXXwwKSsyMD4+MF09MDtkPShrW2Y+PjJdfDApKzg4fDA7a1tkPj4yXT0wO2tbZCs0Pj4yXT0wO2Q9TnQoa1tmPj4yXXwwKXwwO2tbZz4+Ml09ZH19YT1rW2Y+PjJdfDA7aWYoa1tnPj4yXXwwKXt6aihrW2ErNjA+PjJdfDApO2tbKGtbZj4+Ml18MCkrNjA+PjJdPTB9ZWxzZSBpW2ErMTc+PjBdPTM7a1tlPj4yXT1rW2c+PjJdO2c9a1tlPj4yXXwwO3I9aDtyZXR1cm4gZ3wwfWZ1bmN0aW9uIHROKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTAsaT0wLGw9MCxuPTAsbz0wO2k9cjtyPXIrMzJ8MDtiPWkrMjh8MDtjPWkrMjR8MDtnPWkrMjB8MDtoPWkrMTZ8MDtkPWkrMTJ8MDtmPWkrOHwwO2U9aTtrW2M+PjJdPWE7a1tnPj4yXT1rWyhrW2M+PjJdfDApKzE2Pj4yXTtuPShrW2c+PjJdfDApKzgwfDA7bD1rW24rND4+Ml18MDthPWU7a1thPj4yXT1rW24+PjJdO2tbYSs0Pj4yXT1sO2tbZj4+Ml09a1soa1tjPj4yXXwwKSs0Pj4yXTthPXFzKGtbZz4+Ml18MCxrW2Y+PjJdfDApfDA7a1tkPj4yXT1hO2E9KGtbYz4+Ml18MCkrMjR8MDtqW2E+PjFdPW1bYT4+MV18MHw4O2E9ZTthPSR0KGtbKGtbZz4+Ml18MCkrNjg+PjJdfDAsa1thPj4yXXwwLGtbYSs0Pj4yXXwwLGtbKGtbYz4+Ml18MCkrMjA+PjJdfDApfDA7a1toPj4yXT1hO2lmKGtbaD4+Ml18MCl7a1tiPj4yXT1rW2g+PjJdO249a1tiPj4yXXwwO3I9aTtyZXR1cm4gbnwwfW89a1soa1tnPj4yXXwwKSs2OD4+Ml18MDthPWtbZj4+Ml18MDtsPWtbKGtbZz4+Ml18MCkrMTYwPj4yXXwwO249ZTtuPSRSKGtbbj4+Ml18MCxrW24rND4+Ml18MCw0LDApfDA7bj1TZyhvLGEsbCxuLEwpfDA7a1toPj4yXT1uO2lmKGtbaD4+Ml18MCl7a1tiPj4yXT1rW2g+PjJdO289a1tiPj4yXXwwO3I9aTtyZXR1cm4gb3wwfW49a1soa1tnPj4yXXwwKSs2OD4+Ml18MDtsPWU7bz1rWyhrW2c+PjJdfDApKzE2MD4+Ml18MDtvPSRSKGtbbD4+Ml18MCxrW2wrND4+Ml18MCxvfDAsKChvfDApPDApPDwzMT4+MzF8MCl8MDtvPSRSKG98MCxMfDAsNCwwKXwwO289JHQobixvLEwsa1tkPj4yXXwwKXwwO2tbaD4+Ml09bztpZihrW2g+PjJdfDApe2tbYj4+Ml09a1toPj4yXTtvPWtbYj4+Ml18MDtyPWk7cmV0dXJuIG98MH1lbHNle249OCsoa1soa1tnPj4yXXwwKSsxNjA+PjJdfDApfDA7bz0oa1tnPj4yXXwwKSs4MHwwO2w9bztuPSRSKGtbbD4+Ml18MCxrW2wrND4+Ml18MCxufDAsKChufDApPDApPDwzMT4+MzF8MCl8MDtrW28+PjJdPW47a1tvKzQ+PjJdPUw7bz0oa1tnPj4yXXwwKSs0OHwwO2tbbz4+Ml09KGtbbz4+Ml18MCkrMTtvPXZqKGtbKGtbZz4+Ml18MCkrNjA+PjJdfDAsa1soa1tjPj4yXXwwKSsyMD4+Ml18MCl8MDtrW2g+PjJdPW87bz1hdShrW2c+PjJdfDAsa1soa1tjPj4yXXwwKSsyMD4+Ml18MCl8MDtrW2g+PjJdPWtbaD4+Ml18bztrW2I+PjJdPWtbaD4+Ml07bz1rW2I+PjJdfDA7cj1pO3JldHVybiBvfDB9cmV0dXJuIDB9ZnVuY3Rpb24gdU4oYSl7YT1hfDA7dmFyIGI9MCxjPTA7Yj1yO3I9cisxNnwwO2M9YjtrW2M+PjJdPWE7YnUoMCwwLGtbYz4+Ml18MCwwLC0xKXwwO3I9YjtyZXR1cm59ZnVuY3Rpb24gdk4oYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wLGU9MCxmPTA7Zj1yO3I9cisxNnwwO2I9ZisxMnwwO2M9Zis4fDA7ZD1mKzR8MDtlPWY7a1tjPj4yXT1hO2tbZD4+Ml09MDtpZihpWyhrW2M+PjJdfDApKzEzPj4wXXwwKXtrW2I+PjJdPTA7ZT1rW2I+PjJdfDA7cj1mO3JldHVybiBlfDB9aWYoIShrWyhrW2M+PjJdfDApKzI4Pj4yXXwwKSl7a1tiPj4yXT0wO2U9a1tiPj4yXXwwO3I9ZjtyZXR1cm4gZXwwfWE9S2koa1soa1tjPj4yXXwwKSs2ND4+Ml18MCwyMCxkKXwwO2tbZT4+Ml09YTtpZigoa1tlPj4yXXwwKSE9MTIpe2lmKChrW2U+PjJdfDApPT0wJihrW2Q+PjJdfDApIT0wKWtbZT4+Ml09MTAzMn1lbHNlIGtbZT4+Ml09MDtrW2I+PjJdPWtbZT4+Ml07ZT1rW2I+PjJdfDA7cj1mO3JldHVybiBlfDB9ZnVuY3Rpb24gd04oYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxpPTAsbD0wLG49MDtuPXI7cj1yKzMyfDA7ZT1uKzIwfDA7Zj1uKzE2fDA7Zz1uKzEyfDA7aD1uKzh8MDtpPW4rNHwwO2w9bjtrW2Y+PjJdPWE7a1tnPj4yXT1iO2tbaD4+Ml09YztrW2k+PjJdPWQ7Yz1rW2Y+PjJdfDA7ZG8gaWYoa1soa1tmPj4yXXwwKSsxNDQ+PjJdfDApe2Q9a1tjKzE0ND4+Ml18MDtrW2w+PjJdPWQ7a1trW2k+PjJdPj4yXT1kO2tbKGtbZj4+Ml18MCkrMTQ0Pj4yXT1rWyhrW2w+PjJdfDApKzEyPj4yXTtrWyhrW2w+PjJdfDApKzEyPj4yXT0wO2RTKGtbKGtbbD4+Ml18MCkrOD4+Ml18MCwwLG1bKGtbZj4+Ml18MCkrMTQ4Pj4xXXwwfDApfDB9ZWxzZXtkPXVnKDQwKyhtW2MrMTQ4Pj4xXXwwKXwwLDApfDA7a1tsPj4yXT1kO2tba1tpPj4yXT4+Ml09ZDtpZihrW2w+PjJdfDApe2tbKGtbbD4+Ml18MCkrOD4+Ml09KGtbbD4+Ml18MCkrNDA7alsoa1tsPj4yXXwwKSsyND4+MV09MzI7alsoa1tsPj4yXXwwKSsyNj4+MV09MTtrWyhrW2w+PjJdfDApKzE2Pj4yXT1rW2Y+PjJdO2JyZWFrfWk9a1soa1tmPj4yXXwwKSs2ND4+Ml18MDtsPWtbKGtbZj4+Ml18MCkrMTYwPj4yXXwwO2w9a1MoKGtbZz4+Ml18MCktMXwwLDAsbHwwLCgobHwwKTwwKTw8MzE+PjMxfDApfDA7V3MoaSxsLEwsa1toPj4yXXwwKXwwO2tbZT4+Ml09NztsPWtbZT4+Ml18MDtyPW47cmV0dXJuIGx8MH13aGlsZSgwKTtrWyhrW2w+PjJdfDApKzIwPj4yXT1rW2c+PjJdO2tbKGtbbD4+Ml18MCkrND4+Ml09a1toPj4yXTtsPShrW2Y+PjJdfDApKzEyOHwwO2tbbD4+Ml09KGtbbD4+Ml18MCkrMTtrW2U+PjJdPTA7bD1rW2U+PjJdfDA7cj1uO3JldHVybiBsfDB9ZnVuY3Rpb24geE4oYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGk9MCxuPTA7bj1yO3I9ciszMnwwO2Q9bisyMHwwO2U9bisxNnwwO2Y9bisxMnwwO2c9bis4fDA7aD1uKzR8MDtpPW47a1tlPj4yXT1hO2tbZj4+Ml09YjtrW2c+PjJdPWM7aWYoKGxbKGtbZT4+Ml18MCkrMzM+PjBdfDApPT0yKXtrW2Q+PjJdPTA7aT1rW2Q+PjJdfDA7cj1uO3JldHVybiBpfDB9Yz15TihrW2U+PjJdfDApfDA7aWYoKGN8MCk+KGtbKGtbZT4+Ml18MCkrMjA+PjJdfDApKXtrW2g+PjJdPWtbKGtbZT4+Ml18MCkrOD4+Ml07d2hpbGUoMSl7aWYoIShrW2g+PjJdfDApKWJyZWFrO2lmKChqWyhrW2g+PjJdfDApKzI2Pj4xXXwwKT09MD8obVsoa1toPj4yXXwwKSsyND4+MV0mOHwwKT09MDowKWJyZWFrO2tbaD4+Ml09a1soa1toPj4yXXwwKSszNj4+Ml19a1soa1tlPj4yXXwwKSs4Pj4yXT1rW2g+PjJdO2E6ZG8gaWYoIShrW2g+PjJdfDApKXtrW2g+PjJdPWtbKGtbZT4+Ml18MCkrND4+Ml07d2hpbGUoMSl7aWYoIShrW2g+PjJdfDApKWJyZWFrIGE7aWYoIShqWyhrW2g+PjJdfDApKzI2Pj4xXXwwKSlicmVhayBhO2tbaD4+Ml09a1soa1toPj4yXXwwKSszNj4+Ml19fXdoaWxlKDApO2lmKChrW2g+PjJdfDApIT0wPyhjPWdjW2tbKGtbZT4+Ml18MCkrMzY+PjJdJjI1NV0oa1soa1tlPj4yXXwwKSs0MD4+Ml18MCxrW2g+PjJdfDApfDAsa1tpPj4yXT1jLChrW2k+PjJdfDApIT0wJihrW2k+PjJdfDApIT01KTowKXtrW2Q+PjJdPWtbaT4+Ml07aT1rW2Q+PjJdfDA7cj1uO3JldHVybiBpfDB9fWk9WWJba1sxNDQ+PjJdJjI1NV0oa1soa1tlPj4yXXwwKSs0ND4+Ml18MCxrW2Y+PjJdfDAsMil8MDtrW2tbZz4+Ml0+PjJdPWk7a1tkPj4yXT0oa1trW2c+PjJdPj4yXXwwKT09MD83OjA7aT1rW2Q+PjJdfDA7cj1uO3JldHVybiBpfDB9ZnVuY3Rpb24geU4oYSl7YT1hfDA7dmFyIGI9MCxjPTA7Yj1yO3I9cisxNnwwO2M9YjtrW2M+PjJdPWE7YT1iY1trWzE0MD4+Ml0mMjU1XShrWyhrW2M+PjJdfDApKzQ0Pj4yXXwwKXwwO3I9YjtyZXR1cm4gYXwwfWZ1bmN0aW9uIHpOKGEpe2E9YXwwO3ZhciBiPTAsYz0wO2M9cjtyPXIrMTZ8MDtiPWM7a1tiPj4yXT1hO3I9YztyZXR1cm4ga1soa1tiPj4yXXwwKSsxMDg+PjJdfDB9ZnVuY3Rpb24gQU4oYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wLGU9MCxmPTAsZz0wLGg9MCxuPTAsbz0wLHA9MCxxPTA7cT1yO3I9cis0OHwwO2g9cSs0MHwwO249cSszNnwwO2Y9cSszMnwwO3A9cSsyOHwwO289cSsyNHwwO2M9cSsyMHwwO2U9cSsxMnwwO2c9cSs4fDA7ZD1xKzR8MDtiPXE7a1tuPj4yXT1hO2tbYz4+Ml09MDthPUJLKGtba1tuPj4yXT4+Ml18MCl8MDtrW2Y+PjJdPWE7aWYoa1tmPj4yXXwwKXtrW2g+PjJdPWtbZj4+Ml07cD1rW2g+PjJdfDA7cj1xO3JldHVybiBwfDB9YT1mRyhrW24+PjJdfDAsMSxwLDApfDA7a1tmPj4yXT1hO2lmKGtbZj4+Ml18MCl7a1toPj4yXT1rW2Y+PjJdO3A9a1toPj4yXXwwO3I9cTtyZXR1cm4gcHwwfWE9cXIoKGtbKGtbcD4+Ml18MCkrNTY+PjJdfDApKzI4fDApfDA7a1txKzE2Pj4yXT1hO2tbbz4+Ml09YTtQZyhrW2tbbj4+Ml0+PjJdfDAsYyk7aWYoISgoa1tvPj4yXXwwKSE9MD8ob1IoKGtbKGtbcD4+Ml18MCkrNTY+PjJdfDApKzI0fDAsKGtbKGtbcD4+Ml18MCkrNTY+PjJdfDApKzkyfDAsNCl8MCk9PTA6MCkpa1tvPj4yXT1rW2M+PjJdO2E6ZG8gaWYoKGtbbz4+Ml18MCk+MCl7a1tkPj4yXT1rWyhrW3A+PjJdfDApKzU2Pj4yXTtrW2Y+PjJdPTI2O2I6ZG8gaWYoIShvUihrW2Q+PjJdfDAsNDE3OTYsMTYpfDApKXtpZigobFsoa1tkPj4yXXwwKSsxOD4+MF18MHwwKT4yKXthPShrW24+PjJdfDApKzIyfDA7althPj4xXT1tW2E+PjFdfDB8MX1pZigobFsoa1tkPj4yXXwwKSsxOT4+MF18MHwwKTw9Mil7ZG8gaWYoKGxbKGtbZD4+Ml18MCkrMTk+PjBdfDB8MCk9PTI/KChtWyhrW24+PjJdfDApKzIyPj4xXXwwKSYxNnwwKT09MDowKXtrW2I+PjJdPTA7YT1ISyhrW2tbbj4+Ml0+PjJdfDAsYil8MDtrW2Y+PjJdPWE7aWYoa1tmPj4yXXwwKWJyZWFrIGI7aWYoa1tiPj4yXXwwKXtrW2Y+PjJdPTI2O2JyZWFrfV9CKGtbcD4+Ml18MCk7a1toPj4yXT0wO3A9a1toPj4yXXwwO3I9cTtyZXR1cm4gcHwwfXdoaWxlKDApO2lmKChvUigoa1tkPj4yXXwwKSsyMXwwLDQ0MDQ5LDMpfDApPT0wPyhrW2U+PjJdPShsWyhrW2Q+PjJdfDApKzE2Pj4wXXwwKTw8OHwobFsoa1tkPj4yXXwwKSsxNz4+MF18MCk8PDE2LCEoKChrW2U+PjJdfDApPj4+MD42NTUzNj8xOigoa1tlPj4yXXwwKS0xJmtbZT4+Ml18MCkhPTApfChrW2U+PjJdfDApPj4+MDw9MjU2KSk6MCl7a1tnPj4yXT0oa1tlPj4yXXwwKS0obFsoa1tkPj4yXXwwKSsyMD4+MF18MCk7aWYoKGtbZT4+Ml18MCkhPShrWyhrW24+PjJdfDApKzMyPj4yXXwwKSl7X0Ioa1twPj4yXXwwKTtrWyhrW24+PjJdfDApKzM2Pj4yXT1rW2c+PjJdO2tbKGtbbj4+Ml18MCkrMzI+PjJdPWtbZT4+Ml07Y2ooa1tuPj4yXXwwKTtwPWRqKGtba1tuPj4yXT4+Ml18MCwoa1tuPj4yXXwwKSszMnwwLChrW2U+PjJdfDApLShrW2c+PjJdfDApfDApfDA7a1tmPj4yXT1wO2tbaD4+Ml09a1tmPj4yXTtwPWtbaD4+Ml18MDtyPXE7cmV0dXJuIHB8MH1pZigoa1soa1soa1tuPj4yXXwwKSs0Pj4yXXwwKSsyND4+Ml0mNjU1MzZ8MCk9PTA/KGtbbz4+Ml18MCk+KGtbYz4+Ml18MCk6MCl7bz1faig2MTE5MSl8MDtrW2Y+PjJdPW87YnJlYWt9aWYoKGtbZz4+Ml18MCk+Pj4wPj00ODApe2tbKGtbbj4+Ml18MCkrMzI+PjJdPWtbZT4+Ml07a1soa1tuPj4yXXwwKSszNj4+Ml09a1tnPj4yXTtnPShxcigoa1tkPj4yXXwwKSs1MnwwKXwwKSE9MDtpWyhrW24+PjJdfDApKzE3Pj4wXT1nPzE6MDtnPShxcigoa1tkPj4yXXwwKSs2NHwwKXwwKSE9MDtpWyhrW24+PjJdfDApKzE4Pj4wXT1nPzE6MDticmVhayBhfX19fXdoaWxlKDApO19CKGtbcD4+Ml18MCk7a1soa1tuPj4yXXwwKSsxMj4+Ml09MDtrW2g+PjJdPWtbZj4+Ml07cD1rW2g+PjJdfDA7cj1xO3JldHVybiBwfDB9d2hpbGUoMCk7alsoa1tuPj4yXXwwKSsyND4+MV09KCgoa1soa1tuPj4yXXwwKSszNj4+Ml18MCktMTI8PDY+Pj4wKS8yNTV8MCktMjM7alsoa1tuPj4yXXwwKSsyNj4+MV09KCgoa1soa1tuPj4yXXwwKSszNj4+Ml18MCktMTI8PDU+Pj4wKS8yNTV8MCktMjM7alsoa1tuPj4yXXwwKSsyOD4+MV09KGtbKGtbbj4+Ml18MCkrMzY+PjJdfDApLTM1O2pbKGtbbj4+Ml18MCkrMzA+PjFdPSgoKGtbKGtbbj4+Ml18MCkrMzY+PjJdfDApLTEyPDw1Pj4+MCkvMjU1fDApLTIzO2I9a1tuPj4yXXwwO2lmKChtWyhrW24+PjJdfDApKzI0Pj4xXXwwfDApPjEyNylpW2IrMjE+PjBdPTEyNztlbHNlIGlbKGtbbj4+Ml18MCkrMjE+PjBdPWpbYisyND4+MV07a1soa1tuPj4yXXwwKSsxMj4+Ml09a1twPj4yXTtrWyhrW24+PjJdfDApKzQ0Pj4yXT1rW28+PjJdO2tbaD4+Ml09MDtwPWtbaD4+Ml18MDtyPXE7cmV0dXJuIHB8MH1mdW5jdGlvbiBCTihhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wO2o9cjtyPXIrMzJ8MDtlPWorMTZ8MDtmPWorMTJ8MDtnPWorOHwwO2Q9ais0fDA7aD1qO2tbZj4+Ml09YTtrW2c+PjJdPWI7a1tkPj4yXT1jO2tbaD4+Ml09MDtpZihrWyhrW2Y+PjJdfDApKzQ0Pj4yXXwwKXtrW2U+PjJdPWtbKGtbZj4+Ml18MCkrNDQ+PjJdO2g9a1tlPj4yXXwwO3I9ajtyZXR1cm4gaHwwfWlbKGtbZj4+Ml18MCkrMjI+PjBdPWtbZD4+Ml07aWYoKGxbKGtbZj4+Ml18MCkrMTc+PjBdfDB8MCk9PTEpe2M9KExyKGtbZj4+Ml18MCl8MCkhPTA7ZD1rW2Y+PjJdfDA7aWYoIWMpe2M9UXQoZCwyKXwwO2tbaD4+Ml09YztpZigoa1toPj4yXXwwKT09MCYoa1tnPj4yXXwwKSE9MCl7Zz1QdChrW2Y+PjJdfDAsNCl8MDtrW2g+PjJdPWd9fWVsc2V7ZG8gaWYoKGxbZCs0Pj4wXXwwfDApIT0wPyhPcihrWyhrW2Y+PjJdfDApKzIxNj4+Ml18MCwtMSl8MCkhPTA6MCl7Zz1RdChrW2Y+PjJdfDAsNCl8MDtrW2g+PjJdPWc7aWYoIShrW2g+PjJdfDApKXtPcihrWyhrW2Y+PjJdfDApKzIxNj4+Ml18MCwxKXwwO2JyZWFrfWtbZT4+Ml09a1toPj4yXTtoPWtbZT4+Ml18MDtyPWo7cmV0dXJuIGh8MH13aGlsZSgwKTtnPUNOKGtbKGtbZj4+Ml18MCkrMjE2Pj4yXXwwKXwwO2tbaD4+Ml09Z31pZighKGtbaD4+Ml18MCkpe2lbKGtbZj4+Ml18MCkrMTc+PjBdPTI7a1soa1tmPj4yXXwwKSs0MD4+Ml09a1soa1tmPj4yXXwwKSsyOD4+Ml07a1soa1tmPj4yXXwwKSszNj4+Ml09a1soa1tmPj4yXXwwKSsyOD4+Ml07a1soa1tmPj4yXXwwKSszMj4+Ml09a1soa1tmPj4yXXwwKSsyOD4+Ml07Zz0oa1tmPj4yXXwwKSs4MHwwO2tbZz4+Ml09MDtrW2crND4+Ml09MH19a1tlPj4yXT1rW2g+PjJdO2g9a1tlPj4yXXwwO3I9ajtyZXR1cm4gaHwwfWZ1bmN0aW9uIENOKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MCxlPTA7ZT1yO3I9cisxNnwwO2I9ZSs4fDA7Yz1lKzR8MDtkPWU7a1tjPj4yXT1hO2lmKGlbKGtbYz4+Ml18MCkrNDY+PjBdfDApe2tbYj4+Ml09ODtkPWtbYj4+Ml18MDtyPWU7cmV0dXJuIGR8MH1hPWZ0KGtbYz4+Ml18MCwwLDEpfDA7a1tkPj4yXT1hO2lmKGtbZD4+Ml18MCl7a1tiPj4yXT1rW2Q+PjJdO2Q9a1tiPj4yXXwwO3I9ZTtyZXR1cm4gZHwwfWlbKGtbYz4+Ml18MCkrNDQ+PjBdPTE7YT0oa1tjPj4yXXwwKSs1MnwwO2lmKG9SKGEsTnMoa1tjPj4yXXwwKXwwLDQ4KXwwKXtVcihrW2M+PjJdfDAsMCwxKTtpWyhrW2M+PjJdfDApKzQ0Pj4wXT0wO2tbZD4+Ml09NTE3fWtbYj4+Ml09a1tkPj4yXTtkPWtbYj4+Ml18MDtyPWU7cmV0dXJuIGR8MH1mdW5jdGlvbiBETihhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MDtlPXI7cj1yKzE2fDA7Yz1lKzR8MDtkPWU7a1tjPj4yXT1hO2tbZD4+Ml09YjtpZihrWyhrW2M+PjJdfDApKzI0ND4+Ml18MClFTihrWyhrW2M+PjJdfDApKzI0ND4+Ml18MCk7YUsoa1tjPj4yXXwwLGtbZD4+Ml18MCk7cj1lO3JldHVybn1mdW5jdGlvbiBFTihhKXthPWF8MDt2YXIgYj0wLGM9MDtiPXI7cj1yKzE2fDA7Yz1iO2tbYz4+Ml09YTtzaChrW2M+PjJdfDApO3I9YjtyZXR1cm59ZnVuY3Rpb24gRk4oYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaT0wLGo9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MCxFPTAsRj0wLEc9MCxIPTA7SD1yO3I9cis2MjR8MDtmPUgrOTJ8MDtnPUgrODh8MDtoPUgrODR8MDtpPUgrODB8MDtqPUgrNzZ8MDtsPUgrNzJ8MDt6PUgrNjh8MDtvPUgrNjR8MDt4PUgrNjB8MDtuPUgrNTZ8MDt3PUgrNTJ8MDtCPUgrNDh8MDttPUgrNDR8MDt0PUgrNDB8MDtzPUgrMzZ8MDtxPUgrMzJ8MDt2PUgrMjh8MDt1PUgrMjR8MDtDPUgrMjB8MDtGPUgrOTZ8MDtFPUgrMTZ8MDtBPUgrMTJ8MDt5PUgrOHwwO0Q9SCs0fDA7cD1IO2tbZz4+Ml09YTtrW2g+PjJdPWI7a1tpPj4yXT1jO2tbaj4+Ml09ZDtrW2w+PjJdPWU7a1t6Pj4yXT1rW2k+PjJdO2tbbz4+Ml09LTE7a1t4Pj4yXT0wO2tbbj4+Ml09a1tqPj4yXSYtMjU2O2tbQj4+Ml09MDtrW20+PjJdPTA7a1t0Pj4yXT1rW2o+PjJdJjE2O2tbcz4+Ml09a1tqPj4yXSY4O2tbcT4+Ml09a1tqPj4yXSY0O2tbdj4+Ml09a1tqPj4yXSYxO2tbdT4+Ml09a1tqPj4yXSYyO2lmKGtbcT4+Ml18MClpZigoa1tuPj4yXXwwKT09MTYzODR8KGtbbj4+Ml18MCk9PTIwNDgpZD0xO2Vsc2UgZD0oa1tuPj4yXXwwKT09NTI0Mjg4O2Vsc2UgZD0wO2tbQz4+Ml09ZCYxO2tbRT4+Ml09a1toPj4yXTtiPWtbMTcxOF18MDtpZigoYnwwKSE9KEVSKCl8MCkpe2I9RVIoKXwwO2tbMTcxOF09YjthZSgwLDApfWQ9a1t6Pj4yXXwwO2M9ZCs0NHwwO2Rve2tbZD4+Ml09MDtkPWQrNHwwfXdoaWxlKChkfDApPChjfDApKTtkPWtbRT4+Ml18MDtkbyBpZigoa1tuPj4yXXwwKSE9MjU2KXtpZighZCl7QT11TyhrWyhrW2c+PjJdfDApKzg+PjJdfDAsRil8MDtrW0I+PjJdPUE7aWYoIShrW0I+PjJdfDApKXtrW0U+PjJdPUY7YnJlYWt9a1tmPj4yXT1rW0I+PjJdO0c9a1tmPj4yXXwwO3I9SDtyZXR1cm4gR3wwfX1lbHNle0Y9TE8oZCxrW2o+PjJdfDApfDA7a1tBPj4yXT1GO2lmKCEoa1tBPj4yXXwwKSl7Rj1UZCgxMiwwKXwwO2tbQT4+Ml09RjtpZighKGtbQT4+Ml18MCkpe2tbZj4+Ml09NztHPWtbZj4+Ml18MDtyPUg7cmV0dXJuIEd8MH19ZWxzZSBrW28+PjJdPWtba1tBPj4yXT4+Ml07a1soa1t6Pj4yXXwwKSsyOD4+Ml09a1tBPj4yXX13aGlsZSgwKTtpZihrW3Y+PjJdfDApa1t4Pj4yXT1rW3g+PjJdO2lmKGtbdT4+Ml18MClrW3g+PjJdPWtbeD4+Ml18MjtpZihrW3E+PjJdfDApa1t4Pj4yXT1rW3g+PjJdfDY0O2lmKGtbdD4+Ml18MClrW3g+PjJdPWtbeD4+Ml18MTMxMjAwO2tbeD4+Ml09a1t4Pj4yXTtkbyBpZigoa1tvPj4yXXwwKTwwKXtGPU1PKGtbRT4+Ml18MCxrW2o+PjJdfDAseSxELHApfDA7a1tCPj4yXT1GO2lmKGtbQj4+Ml18MCl7a1tmPj4yXT1rW0I+PjJdO0c9a1tmPj4yXXwwO3I9SDtyZXR1cm4gR3wwfUY9cU8oa1tFPj4yXXwwLGtbeD4+Ml18MCxrW3k+PjJdfDApfDA7a1tvPj4yXT1GO2lmKChrW28+PjJdfDApPDA/KEY9TFEoKXwwLChrW0Y+PjJdfDApIT0yMSYoa1t1Pj4yXXwwKSE9MCk6MCl7a1tqPj4yXT1rW2o+PjJdJi03O2tbeD4+Ml09a1t4Pj4yXSYtNjc7a1tqPj4yXT1rW2o+PjJdfDE7a1t4Pj4yXT1rW3g+PjJdO2tbdj4+Ml09MTtGPXFPKGtbRT4+Ml18MCxrW3g+PjJdfDAsa1t5Pj4yXXwwKXwwO2tbbz4+Ml09Rn1pZigoa1tvPj4yXXwwKTwwKXtGPXl0KDM1MTg2KXwwO0Y9bU8oRiw0NDEyOCxrW0U+PjJdfDAsMzUxODYpfDA7a1tCPj4yXT1GO2JyZWFrfWlmKGtbaj4+Ml0mNTI2MzM2KXtOTyhrW28+PjJdfDAsa1tEPj4yXXwwLGtbcD4+Ml18MCl8MDtHPTM0fWVsc2UgRz0zNH1lbHNlIEc9MzQ7d2hpbGUoMCk7aWYoKEd8MCk9PTM0KXtpZihrW2w+PjJdfDApa1trW2w+PjJdPj4yXT1rW2o+PjJdO2lmKGtbKGtbej4+Ml18MCkrMjg+PjJdfDApe2tba1soa1t6Pj4yXXwwKSsyOD4+Ml0+PjJdPWtbbz4+Ml07a1soa1soa1t6Pj4yXXwwKSsyOD4+Ml18MCkrND4+Ml09a1tqPj4yXX1pZihrW3M+PjJdfDApYmNba1s2NjMyPj4yXSYyNTVdKGtbRT4+Ml18MCl8MDtpZihrW3M+PjJdfDApa1ttPj4yXT1rW20+PjJdfDMyO2lmKGtbdj4+Ml18MClrW20+PjJdPWtbbT4+Ml18MjtrW3c+PjJdPShrW24+PjJdfDApIT0yNTYmMTtpZihrW3c+PjJdfDApa1ttPj4yXT1rW20+PjJdfDEyODtpZihrW0M+PjJdfDApa1ttPj4yXT1rW20+PjJdfDg7aWYoa1tqPj4yXSY2NClrW20+PjJdPWtbbT4+Ml18NjQ7Rz1PTyhrW2c+PjJdfDAsa1tvPj4yXXwwLGtbaT4+Ml18MCxrW2g+PjJdfDAsa1ttPj4yXXwwKXwwO2tbQj4+Ml09R31pZihrW0I+PjJdfDApVWQoa1soa1t6Pj4yXXwwKSsyOD4+Ml18MCk7a1tmPj4yXT1rW0I+PjJdO0c9a1tmPj4yXXwwO3I9SDtyZXR1cm4gR3wwfWZ1bmN0aW9uIEdOKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxpPTA7aT1yO3I9ciszMnwwO2Q9aSsyMHwwO2U9aSsxMnwwO2Y9aSs4fDA7aD1pKzR8MDtnPWk7a1tpKzE2Pj4yXT1hO2tbZT4+Ml09YjtrW2Y+PjJdPWM7a1toPj4yXT0wO2lmKChiY1trWzY2MzI+PjJdJjI1NV0oa1tlPj4yXXwwKXwwKT09LTEpe2I9TFEoKXwwO2lmKChrW2I+PjJdfDApPT0yKWtbaD4+Ml09NTg5ODtlbHNle2I9bU8oMjU3MCw0NDIyNSxrW2U+PjJdfDAsMzUzMTIpfDA7a1toPj4yXT1ifWtbZD4+Ml09a1toPj4yXTtiPWtbZD4+Ml18MDtyPWk7cmV0dXJuIGJ8MH1kbyBpZihrW2Y+PjJdJjEpe2I9Z2Nba1s2NjQ0Pj4yXSYyNTVdKGtbZT4+Ml18MCxnKXwwO2tbaD4+Ml09YjtpZihrW2g+PjJdfDApe2tbaD4+Ml09MDticmVha31pZihCTyhrW2c+PjJdfDAsMCwwKXwwKXtiPW1PKDEyOTAsNDQ0NTksa1tlPj4yXXwwLDM1MzIyKXwwO2tbaD4+Ml09Yn1sTygwLGtbZz4+Ml18MCwzNTMyNCl9d2hpbGUoMCk7a1tkPj4yXT1rW2g+PjJdO2I9a1tkPj4yXXwwO3I9aTtyZXR1cm4gYnwwfWZ1bmN0aW9uIEhOKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaT0wO2g9cjtyPXIrOTZ8MDtlPWgrODR8MDtpPWgrODB8MDtmPWgrNzZ8MDtnPWg7a1toKzg4Pj4yXT1hO2tbZT4+Ml09YjtrW2k+PjJdPWM7a1tmPj4yXT1kO2lmKCEoa1tpPj4yXXwwKSl7aT0wPT0oZ2Nba1s2NDg4Pj4yXSYyNTVdKGtbZT4+Ml18MCxnKXwwKTtrW2tbZj4+Ml0+PjJdPShpPyhrW2crMzY+PjJdfDApPjA6MCkmMTtyPWg7cmV0dXJuIDB9ZWxzZXtpPShnY1trWzY0NjQ+PjJdJjI1NV0oa1tlPj4yXXwwLDYpfDApPT0wJjE7a1trW2Y+PjJdPj4yXT1pO3I9aDtyZXR1cm4gMH1yZXR1cm4gMH1mdW5jdGlvbiBJTihhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxzPTA7cT1yO3I9cisxMjh8MDtzPXErMTEyfDA7ZT1xKzEwOHwwO2Y9cSsxMDR8MDtvPXErMTAwfDA7bD1xKzk2fDA7bT1xKzkyfDA7bj1xKzg4fDA7cD1xKzg0fDA7Zz1xKzgwfDA7aD1xKzR8MDtqPXE7a1txKzExNj4+Ml09YTtrW3M+PjJdPWI7a1tlPj4yXT1jO2tbZj4+Ml09ZDtrW28+PjJdPTA7a1ttPj4yXT0xO2tbbj4+Ml09a1tzPj4yXTtrW3A+PjJdPTA7d2hpbGUoMSl7a1tnPj4yXT0wO2lmKGdjW2tbNjc2ND4+Ml0mMjU1XShrW24+PjJdfDAsaCl8MCl7cz1MUSgpfDA7aWYoKGtbcz4+Ml18MCkhPTIpe3M9eXQoMzU0MzYpfDA7cz1tTyhzLDQ0MzEzLGtbbj4+Ml18MCwzNTQzNil8MDtrW28+PjJdPXN9fWVsc2Uga1tnPj4yXT0oa1toKzEyPj4yXSY2MTQ0MHwwKT09NDA5NjAmMTtpZihrW2c+PjJdfDApe2lmKCEoa1twPj4yXXwwKSl7cz1TZChrW2U+PjJdfDApfDA7a1twPj4yXT1zO2lmKCEoa1twPj4yXXwwKSlrW28+PjJdPTd9ZWxzZXtzPShrW20+PjJdfDApKzF8MDtrW20+PjJdPXM7aWYoKHN8MCk+MTAwKXtzPXl0KDM1NDQ3KXwwO2tbbz4+Ml09c319ZG8gaWYoIShrW28+PjJdfDApKXtzPVliW2tbNjc1Mj4+Ml0mMjU1XShrW24+PjJdfDAsa1twPj4yXXwwLChrW2U+PjJdfDApLTF8MCl8MDtrW2w+PjJdPXM7aWYoKGtbbD4+Ml18MCk8MCl7cz15dCgzNTQ1Myl8MDtzPW1PKHMsNDQzMDQsa1tuPj4yXXwwLDM1NDUzKXwwO2tbbz4+Ml09czticmVha31kbyBpZigoaVtrW3A+PjJdPj4wXXwwKSE9NDcpe3M9VGYoa1tuPj4yXXwwKXwwO2tbaj4+Ml09czt3aGlsZSgxKXtpZigoa1tqPj4yXXwwKTw9MClicmVhaztpZigoaVsoa1tuPj4yXXwwKSsoKGtbaj4+Ml18MCktMSk+PjBdfDApPT00NylicmVhaztrW2o+PjJdPShrW2o+PjJdfDApKy0xfWlmKCgoa1tsPj4yXXwwKSsoa1tqPj4yXXwwKSsxfDApPihrW2U+PjJdfDApKXtzPXl0KDM1NDU5KXwwO2tbbz4+Ml09czticmVha31lbHNle2NTKChrW3A+PjJdfDApKyhrW2o+PjJdfDApfDAsa1twPj4yXXwwLChrW2w+PjJdfDApKzF8MCl8MDtiUyhrW3A+PjJdfDAsa1tuPj4yXXwwLGtbaj4+Ml18MCl8MDtrW2w+PjJdPShrW2w+PjJdfDApKyhrW2o+PjJdfDApO2JyZWFrfX13aGlsZSgwKTtpWyhrW3A+PjJdfDApKyhrW2w+PjJdfDApPj4wXT0wfXdoaWxlKDApO2tbbj4+Ml09a1twPj4yXX1pZigoa1tvPj4yXXwwKT09MD8oa1tuPj4yXXwwKSE9KGtbZj4+Ml18MCk6MCl7cz1LTyhrW24+PjJdfDAsa1tmPj4yXXwwLGtbZT4+Ml18MCl8MDtrW28+PjJdPXN9aWYoIShrW2c+PjJdfDApKXtlPTMwO2JyZWFrfWtbbj4+Ml09a1tmPj4yXTtpZihrW28+PjJdfDApe2U9MzA7YnJlYWt9fWlmKChlfDApPT0zMCl7VWQoa1twPj4yXXwwKTtyPXE7cmV0dXJuIGtbbz4+Ml18MH1yZXR1cm4gMH1mdW5jdGlvbiBKTihhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wO2o9cjtyPXIrMzJ8MDtkPWorMTZ8MDtlPWorMTJ8MDtmPWorOHwwO2c9ais0fDA7aD1qO2tbaisyMD4+Ml09YTtrW2Q+PjJdPWI7a1tlPj4yXT1jO2RTKGtbZT4+Ml18MCwwLGtbZD4+Ml18MCl8MDtjPUVSKCl8MDtrWzE3MThdPWM7Yz1xTyg0NDQ0NiwwLDApfDA7a1tmPj4yXT1jO2lmKChrW2Y+PjJdfDApPDApe09iKGh8MCl8MDtjPWtbZT4+Ml18MDtpW2M+PjBdPWlbaD4+MF18MDtpW2MrMT4+MF09aVtoKzE+PjBdfDA7aVtjKzI+PjBdPWlbaCsyPj4wXXwwO2lbYyszPj4wXT1pW2grMz4+MF18MDtjPShrW2U+PjJdfDApKzR8MDtpW2M+PjBdPWlbNjg3Ml18MDtpW2MrMT4+MF09aVs2ODczXXwwO2lbYysyPj4wXT1pWzY4NzRdfDA7aVtjKzM+PjBdPWlbNjg3NV18MDtrW2Q+PjJdPTg7Yz1rW2Q+PjJdfDA7cj1qO3JldHVybiBjfDB9ZG97Yz1ZYltrWzY1MzY+PjJdJjI1NV0oa1tmPj4yXXwwLGtbZT4+Ml18MCxrW2Q+PjJdfDApfDA7a1tnPj4yXT1jO2lmKChrW2c+PjJdfDApPj0wKWJyZWFrO2M9TFEoKXwwfXdoaWxlKChrW2M+PjJdfDApPT00KTtsTygwLGtbZj4+Ml18MCwzNTU4Myk7Yz1rW2Q+PjJdfDA7cj1qO3JldHVybiBjfDB9ZnVuY3Rpb24gS04oYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTA7ZD1yO3I9cisxNnwwO2U9ZCs0fDA7Yz1kO2tbZCs4Pj4yXT1hO2tbZT4+Ml09YjtrW2M+PjJdPSgoa1tlPj4yXXwwKSs5OTk5OTl8MCkvMWU2fDA7SlIoa1tjPj4yXXwwKXwwO3I9ZDtyZXR1cm4gKGtbYz4+Ml18MCkqMWU2fDB9ZnVuY3Rpb24gTE4oYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wO2Q9cjtyPXIrMzJ8MDtlPWQrMTJ8MDtmPWQ7Yz1kKzh8MDtrW2QrMTY+PjJdPWE7a1tlPj4yXT1iO2I9ZjtrW2I+PjJdPTA7a1tiKzQ+PjJdPTA7Yj1OTigwLGYpfDA7a1tjPj4yXT1iO2I9ZjtwW2tbZT4+Ml0+PjNdPSgrKChrW2I+PjJdfDApPj4+MCkrNDI5NDk2NzI5Ni4wKisoa1tiKzQ+PjJdfDApKS84NjQuMGU1O3I9ZDtyZXR1cm4ga1tjPj4yXXwwfWZ1bmN0aW9uIE1OKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wO2Q9cjtyPXIrMTZ8MDtrW2QrOD4+Ml09YTtrW2QrND4+Ml09YjtrW2Q+PjJdPWM7Yz1MUSgpfDA7cj1kO3JldHVybiBrW2M+PjJdfDB9ZnVuY3Rpb24gTk4oYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wO2Q9cjtyPXIrMzJ8MDtlPWQrMTJ8MDtjPWQrOHwwO2Y9ZDtrW2QrMTY+PjJdPWE7a1tlPj4yXT1iO2tbYz4+Ml09MDtRYihmfDAsMCl8MDtiPWtbZj4+Ml18MDtiPWtTKDFlMywwLGJ8MCwoKGJ8MCk8MCk8PDMxPj4zMXwwKXwwO2I9JFIoMTA0NTYzNTU4NCw0OTA5NixifDAsTHwwKXwwO2E9KGtbZis0Pj4yXXwwKS8xZTN8MDthPSRSKGJ8MCxMfDAsYXwwLCgoYXwwKTwwKTw8MzE+PjMxfDApfDA7Yj1rW2U+PjJdfDA7a1tiPj4yXT1hO2tbYis0Pj4yXT1MO3I9ZDtyZXR1cm4ga1tjPj4yXXwwfWZ1bmN0aW9uIE9OKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxpPTA7aT1yO3I9ciszMnwwO2Q9aSsxMnwwO2U9aSs4fDA7Zj1pKzR8MDtnPWk7a1tpKzE2Pj4yXT1hO2tbZD4+Ml09YjtrW2U+PjJdPWM7a1tnPj4yXT0xMjtpZighKGtbZD4+Ml18MCkpe2tbZz4+Ml09MDtrW2Y+PjJdPTA7d2hpbGUoMSl7aWYoKGtbZj4+Ml18MCk+Pj4wPj0yOClicmVhaztpZihrWzY0MzYrKChrW2Y+PjJdfDApKjEyfDApKzg+PjJdfDApa1s2NDM2Kygoa1tmPj4yXXwwKSoxMnwwKSs0Pj4yXT1rWzY0MzYrKChrW2Y+PjJdfDApKjEyfDApKzg+PjJdO2tbZj4+Ml09KGtbZj4+Ml18MCkrMX1oPWtbZz4+Ml18MDtyPWk7cmV0dXJuIGh8MH1rW2Y+PjJdPTA7d2hpbGUoMSl7aWYoKGtbZj4+Ml18MCk+Pj4wPj0yOCl7aD0xNjticmVha31iPShyUihrW2Q+PjJdfDAsa1s2NDM2Kygoa1tmPj4yXXwwKSoxMnwwKT4+Ml18MCl8MCk9PTA7Yz1rW2Y+PjJdfDA7aWYoYilicmVhaztrW2Y+PjJdPWMrMX1pZigoaHwwKT09MTYpe2g9a1tnPj4yXXwwO3I9aTtyZXR1cm4gaHwwfWlmKCEoa1s2NDM2KyhjKjEyfDApKzg+PjJdfDApKWtbNjQzNisoKGtbZj4+Ml18MCkqMTJ8MCkrOD4+Ml09a1s2NDM2Kygoa1tmPj4yXXwwKSoxMnwwKSs0Pj4yXTtrW2c+PjJdPTA7aWYoIShrW2U+PjJdfDApKWtbZT4+Ml09a1s2NDM2Kygoa1tmPj4yXXwwKSoxMnwwKSs4Pj4yXTtrWzY0MzYrKChrW2Y+PjJdfDApKjEyfDApKzQ+PjJdPWtbZT4+Ml07aD1rW2c+PjJdfDA7cj1pO3JldHVybiBofDB9ZnVuY3Rpb24gUE4oYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wO2Y9cjtyPXIrMTZ8MDtlPWYrMTJ8MDtjPWYrNHwwO2Q9ZjtrW2YrOD4+Ml09YTtrW2M+PjJdPWI7a1tkPj4yXT0wO3doaWxlKDEpe2lmKChrW2Q+PjJdfDApPj4+MD49Mjgpe2E9NjticmVha31hPShyUihrW2M+PjJdfDAsa1s2NDM2Kygoa1tkPj4yXXwwKSoxMnwwKT4+Ml18MCl8MCk9PTA7Yj1rW2Q+PjJdfDA7aWYoYSl7YT00O2JyZWFrfWtbZD4+Ml09YisxfWlmKChhfDApPT00KXtrW2U+PjJdPWtbNjQzNisoYioxMnwwKSs0Pj4yXTtlPWtbZT4+Ml18MDtyPWY7cmV0dXJuIGV8MH1lbHNlIGlmKChhfDApPT02KXtrW2U+PjJdPTA7ZT1rW2U+PjJdfDA7cj1mO3JldHVybiBlfDB9cmV0dXJuIDB9ZnVuY3Rpb24gUU4oYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wO2Y9cjtyPXIrMTZ8MDtlPWYrMTJ8MDtjPWYrNHwwO2Q9ZjtrW2YrOD4+Ml09YTtrW2M+PjJdPWI7a1tkPj4yXT0tMTthOmRvIGlmKGtbYz4+Ml18MCl7a1tkPj4yXT0wO3doaWxlKDEpe2lmKChrW2Q+PjJdfDApPj0yNylicmVhayBhO2lmKCEoclIoa1tjPj4yXXwwLGtbNjQzNisoKGtbZD4+Ml18MCkqMTJ8MCk+PjJdfDApfDApKWJyZWFrIGE7a1tkPj4yXT0oa1tkPj4yXXwwKSsxfX13aGlsZSgwKTtrW2Q+PjJdPShrW2Q+PjJdfDApKzE7d2hpbGUoMSl7aWYoKGtbZD4+Ml18MCk+PTI4KXtjPTExO2JyZWFrfWE9a1tkPj4yXXwwO2lmKGtbNjQzNisoKGtbZD4+Ml18MCkqMTJ8MCkrND4+Ml18MCl7Yz05O2JyZWFrfWtbZD4+Ml09YSsxfWlmKChjfDApPT05KXtrW2U+PjJdPWtbNjQzNisoYSoxMnwwKT4+Ml07ZT1rW2U+PjJdfDA7cj1mO3JldHVybiBlfDB9ZWxzZSBpZigoY3wwKT09MTEpe2tbZT4+Ml09MDtlPWtbZT4+Ml18MDtyPWY7cmV0dXJuIGV8MH1yZXR1cm4gMH1mdW5jdGlvbiBSTihhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTA7Yz1yO3I9cisxNnwwO2tbYys0Pj4yXT1hO2tbYz4+Ml09YjtyPWM7cmV0dXJuIDYzNjB9ZnVuY3Rpb24gU04oYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wO2I9cjtyPXIrMTZ8MDtjPWIrNHwwO2Q9YjtrW2M+PjJdPWE7a1tkPj4yXT1rW2M+PjJdO1pOKGtbYz4+Ml18MCwwKXwwO1VkKGtbKGtbZD4+Ml18MCkrMjQ+PjJdfDApO2E9RU8oa1tjPj4yXXwwKXwwO3I9YjtyZXR1cm4gYXwwfWZ1bmN0aW9uIFROKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGk9MCxqPTAsbD0wLG09MCxuPTA7bD1yO3I9ciszMnwwO2Y9bCsyOHwwO249bCsyNHwwO2c9bCsyMHwwO2g9bCsxNnwwO209bDtqPWwrMTJ8MDtpPWwrOHwwO2tbbj4+Ml09YTtrW2c+PjJdPWI7a1toPj4yXT1jO2I9bTtrW2I+PjJdPWQ7a1tiKzQ+PjJdPWU7a1tqPj4yXT1rW24+PjJdO2I9bTtiPURPKGtbaj4+Ml18MCxrW2I+PjJdfDAsa1tiKzQ+PjJdfDAsa1tnPj4yXXwwLGtbaD4+Ml18MCl8MDtrW2k+PjJdPWI7aWYoKGtbaT4+Ml18MCk9PShrW2g+PjJdfDApKXtrW2Y+PjJdPTA7bj1rW2Y+PjJdfDA7cj1sO3JldHVybiBufDB9aWYoKGtbaT4+Ml18MCk8MCl7a1tmPj4yXT0yNjY7bj1rW2Y+PjJdfDA7cj1sO3JldHVybiBufDB9ZWxzZXt6TyhrW2o+PjJdfDAsMCk7ZFMoKGtbZz4+Ml18MCkrKGtbaT4+Ml18MCl8MCwwLChrW2g+PjJdfDApLShrW2k+PjJdfDApfDApfDA7a1tmPj4yXT01MjI7bj1rW2Y+PjJdfDA7cj1sO3JldHVybiBufDB9cmV0dXJuIDB9ZnVuY3Rpb24gVU4oYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaT0wLGo9MCxsPTAsbT0wLG49MDttPXI7cj1yKzMyfDA7Zj1tKzI4fDA7bj1tKzI0fDA7Zz1tKzIwfDA7aD1tKzE2fDA7aT1tO2o9bSsxMnwwO2w9bSs4fDA7a1tuPj4yXT1hO2tbZz4+Ml09YjtrW2g+PjJdPWM7Yj1pO2tbYj4+Ml09ZDtrW2IrND4+Ml09ZTtrW2o+PjJdPWtbbj4+Ml07a1tsPj4yXT0wO3doaWxlKDEpe249aTtuPXhPKGtbaj4+Ml18MCxrW24+PjJdfDAsa1tuKzQ+PjJdfDAsa1tnPj4yXXwwLGtbaD4+Ml18MCl8MDtrW2w+PjJdPW47aWYoISgobnwwKTwoa1toPj4yXXwwKT8oa1tsPj4yXXwwKT4wOjApKWJyZWFrO2tbaD4+Ml09KGtbaD4+Ml18MCktKGtbbD4+Ml18MCk7Yj1rW2w+PjJdfDA7bj1pO2I9JFIoa1tuPj4yXXwwLGtbbis0Pj4yXXwwLGJ8MCwoKGJ8MCk8MCk8PDMxPj4zMXwwKXwwO249aTtrW24+PjJdPWI7a1tuKzQ+PjJdPUw7a1tnPj4yXT0oa1tnPj4yXXwwKSsoa1tsPj4yXXwwKX1pZigoa1toPj4yXXwwKTw9KGtbbD4+Ml18MCkpe2tbZj4+Ml09MDtuPWtbZj4+Ml18MDtyPW07cmV0dXJuIG58MH1pZigoa1tsPj4yXXwwKTwwPyhrWyhrW2o+PjJdfDApKzIwPj4yXXwwKSE9Mjg6MCl7a1tmPj4yXT03Nzg7bj1rW2Y+PjJdfDA7cj1tO3JldHVybiBufDB9ek8oa1tqPj4yXXwwLDApO2tbZj4+Ml09MTM7bj1rW2Y+PjJdfDA7cj1tO3JldHVybiBufDB9ZnVuY3Rpb24gVk4oYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGk9MDtoPXI7cj1yKzMyfDA7ZD1oKzIwfDA7aT1oKzE2fDA7ZT1oO2Y9aCsxMnwwO2c9aCs4fDA7a1tpPj4yXT1hO2E9ZTtrW2E+PjJdPWI7a1thKzQ+PjJdPWM7a1tmPj4yXT1rW2k+PjJdO2lmKChrWyhrW2Y+PjJdfDApKzQwPj4yXXwwKT4wKXtpPWU7YT1rWyhrW2Y+PjJdfDApKzQwPj4yXXwwO2E9JFIoa1tpPj4yXXwwLGtbaSs0Pj4yXXwwLGF8MCwoKGF8MCk8MCk8PDMxPj4zMXwwKXwwO2E9X1IoYXwwLEx8MCwxLDApfDA7aT1rWyhrW2Y+PjJdfDApKzQwPj4yXXwwO2k9aVMoYXwwLEx8MCxpfDAsKChpfDApPDApPDwzMT4+MzF8MCl8MDthPWtbKGtbZj4+Ml18MCkrNDA+PjJdfDA7YT1rUyhpfDAsTHwwLGF8MCwoKGF8MCk8MCk8PDMxPj4zMXwwKXwwO2k9ZTtrW2k+PjJdPWE7a1tpKzQ+PjJdPUx9aT1lO2k9Q08oa1soa1tmPj4yXXwwKSsxMj4+Ml18MCxrW2k+PjJdfDAsa1tpKzQ+PjJdfDApfDA7a1tnPj4yXT1pO2lmKGtbZz4+Ml18MCl7Zz1rW2Y+PjJdfDA7aT1MUSgpfDA7ek8oZyxrW2k+PjJdfDApO2k9bU8oMTU0Niw0NDE1MSxrWyhrW2Y+PjJdfDApKzMyPj4yXXwwLDMyOTk4KXwwO2tbZD4+Ml09aTtpPWtbZD4+Ml18MDtyPWg7cmV0dXJuIGl8MH1lbHNle2tbZD4+Ml09MDtpPWtbZD4+Ml18MDtyPWg7cmV0dXJuIGl8MH1yZXR1cm4gMH1mdW5jdGlvbiBXTihhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wLGg9MCxpPTAsbD0wLG49MDtnPXI7cj1yKzMyfDA7Yz1nKzI4fDA7bj1nKzI0fDA7bD1nKzIwfDA7Zj1nKzE2fDA7ZT1nKzEyfDA7aD1nKzh8MDtpPWcrNHwwO2Q9ZztrW24+PjJdPWE7a1tsPj4yXT1iO2tbZT4+Ml09a1tuPj4yXTtrW2g+PjJdPWtbbD4+Ml0mMTY7a1tpPj4yXT0oa1tsPj4yXSYxNXwwKT09MyYxO2I9Qk8oa1soa1tlPj4yXXwwKSsxMj4+Ml18MCxrW2k+PjJdfDAsa1toPj4yXXwwKXwwO2tbZj4+Ml09YjtiPWtbZT4+Ml18MDtpZihrW2Y+PjJdfDApe249TFEoKXwwO3pPKGIsa1tuPj4yXXwwKTtuPW1PKDEwMzQsNDQ0MzUsa1soa1tlPj4yXXwwKSszMj4+Ml18MCwzMjk1Myl8MDtrW2M+PjJdPW47bj1rW2M+PjJdfDA7cj1nO3JldHVybiBufDB9aWYoKG1bYisxOD4+MV18MCkmOCl7bj1nY1trWzY2NDQ+PjJdJjI1NV0oa1soa1tlPj4yXXwwKSszMj4+Ml18MCxkKXwwO2tbZj4+Ml09bjtpZighKGtbZj4+Ml18MCkpe0JPKGtbZD4+Ml18MCwwLDApfDA7bE8oa1tlPj4yXXwwLGtbZD4+Ml18MCwzMjk2Nyl9ZWxzZSBrW2Y+PjJdPTA7bj0oa1tlPj4yXXwwKSsxOHwwO2pbbj4+MV09KG1bbj4+MV18MCkmLTl9a1tjPj4yXT1rW2Y+PjJdO249a1tjPj4yXXwwO3I9ZztyZXR1cm4gbnwwfWZ1bmN0aW9uIFhOKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wO2c9cjtyPXIrOTZ8MDtjPWcrODh8MDtkPWcrODR8MDtlPWcrODB8MDtoPWcrNzZ8MDtmPWc7a1tkPj4yXT1hO2tbZT4+Ml09YjtiPWdjW2tbNjUwMD4+Ml0mMjU1XShrWyhrW2Q+PjJdfDApKzEyPj4yXXwwLGYpfDA7a1toPj4yXT1iO2lmKGtbaD4+Ml18MCl7Yj1rW2Q+PjJdfDA7aD1MUSgpfDA7ek8oYixrW2g+PjJdfDApO2tbYz4+Ml09MTgwMjtoPWtbYz4+Ml18MDtyPWc7cmV0dXJuIGh8MH1iPWtbZiszNj4+Ml18MDtoPWtbZT4+Ml18MDtrW2g+PjJdPWI7a1toKzQ+PjJdPSgoYnwwKTwwKTw8MzE+PjMxO2g9a1tlPj4yXXwwO2lmKChrW2g+PjJdfDApPT0xJihrW2grND4+Ml18MCk9PTApe2g9a1tlPj4yXXwwO2tbaD4+Ml09MDtrW2grND4+Ml09MH1rW2M+PjJdPTA7aD1rW2M+PjJdfDA7cj1nO3JldHVybiBofDB9ZnVuY3Rpb24gWU4oYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLG09MDtqPXI7cj1yKzMyfDA7Yz1qKzI0fDA7bT1qKzIwfDA7ZD1qKzE2fDA7ZT1qKzEyfDA7aD1qKzh8MDtmPWorNHwwO2c9ajtrW20+PjJdPWE7a1tkPj4yXT1iO2tbZT4+Ml09a1ttPj4yXTtrW2g+PjJdPWtbKGtbZT4+Ml18MCkrMjQ+PjJdO2tbZj4+Ml09MDtpZigobFsoa1tlPj4yXXwwKSsxNj4+MF18MHwwKT4wKXtpWyhrW2U+PjJdfDApKzE2Pj4wXT1rW2Q+PjJdO1FhKGtbaD4+Ml18MCwwKXwwO2tbYz4+Ml09MDttPWtbYz4+Ml18MDtyPWo7cmV0dXJuIG18MH1tPWdjW2tbNjY1Nj4+Ml0mMjU1XShrW2g+PjJdfDAsNTExKXwwO2tbZj4+Ml09bTtpZigoa1tmPj4yXXwwKT49MCl7aVsoa1tlPj4yXXwwKSsxNj4+MF09a1tkPj4yXTtrW2M+PjJdPWtbZj4+Ml07bT1rW2M+PjJdfDA7cj1qO3JldHVybiBtfDB9bT1MUSgpfDA7a1tnPj4yXT1rW20+PjJdO2lmKDE3IT0oa1tnPj4yXXwwKSl7bT1BTyhrW2c+PjJdfDAsMzg1MCl8MDtrW2Y+PjJdPW07aWYoKGtbZj4+Ml18MCkhPTUpek8oa1tlPj4yXXwwLGtbZz4+Ml18MCl9ZWxzZSBrW2Y+PjJdPTU7a1tjPj4yXT1rW2Y+PjJdO209a1tjPj4yXXwwO3I9ajtyZXR1cm4gbXwwfWZ1bmN0aW9uIFpOKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxtPTA7aj1yO3I9ciszMnwwO2M9aisyNHwwO209aisyMHwwO2Q9aisxNnwwO2U9aisxMnwwO2g9ais4fDA7Zj1qKzR8MDtnPWo7a1ttPj4yXT1hO2tbZD4+Ml09YjtrW2U+PjJdPWtbbT4+Ml07a1toPj4yXT1rWyhrW2U+PjJdfDApKzI0Pj4yXTtpZigobFsoa1tlPj4yXXwwKSsxNj4+MF18MHwwKT09KGtbZD4+Ml18MCkpe2tbYz4+Ml09MDttPWtbYz4+Ml18MDtyPWo7cmV0dXJuIG18MH1pZigoa1tkPj4yXXwwKT09MSl7aVsoa1tlPj4yXXwwKSsxNj4+MF09MTtrW2M+PjJdPTA7bT1rW2M+PjJdfDA7cj1qO3JldHVybiBtfDB9bT1iY1trWzY2Njg+PjJdJjI1NV0oa1toPj4yXXwwKXwwO2tbZj4+Ml09bTtpZigoa1tmPj4yXXwwKT49MCl7aVsoa1tlPj4yXXwwKSsxNj4+MF09MDtrW2M+PjJdPTA7bT1rW2M+PjJdfDA7cj1qO3JldHVybiBtfDB9bT1MUSgpfDA7a1tnPj4yXT1rW20+PjJdO2lmKChrW2c+PjJdfDApPT0yKWtbZj4+Ml09MDtlbHNle2tbZj4+Ml09MjA1ODt6TyhrW2U+PjJdfDAsa1tnPj4yXXwwKX1rW2M+PjJdPWtbZj4+Ml07bT1rW2M+PjJdfDA7cj1qO3JldHVybiBtfDB9ZnVuY3Rpb24gX04oYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTA7ZD1yO3I9ciszMnwwO2g9ZCsxNnwwO2U9ZCsxMnwwO2M9ZCs4fDA7Zj1kKzR8MDtnPWQ7a1toPj4yXT1hO2tbZT4+Ml09YjtrW2M+PjJdPTA7a1tmPj4yXT0wO2tbZz4+Ml09a1toPj4yXTtiPShnY1trWzY0NjQ+PjJdJjI1NV0oa1soa1tnPj4yXXwwKSsyND4+Ml18MCwwKXwwKT09MCYxO2tbZj4+Ml09YjtrW2tbZT4+Ml0+PjJdPWtbZj4+Ml07cj1kO3JldHVybiBrW2M+PjJdfDB9ZnVuY3Rpb24gJE4oYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGk9MCxqPTAsbT0wLG49MDtqPXI7cj1yKzMyfDA7aD1qO2Q9aisyOHwwO249aisyNHwwO209aisyMHwwO2U9aisxNnwwO2Y9aisxMnwwO2c9ais4fDA7aT1qKzR8MDtrW24+PjJdPWE7a1ttPj4yXT1iO2tbZT4+Ml09YztrW2Y+PjJdPWtbbj4+Ml07ZG8gc3dpdGNoKGtbbT4+Ml18MCl7Y2FzZSAxOntrW2tbZT4+Ml0+PjJdPWxbKGtbZj4+Ml18MCkrMTY+PjBdO2tbZD4+Ml09MDticmVha31jYXNlIDQ6e2tba1tlPj4yXT4+Ml09a1soa1tmPj4yXXwwKSsyMD4+Ml07a1tkPj4yXT0wO2JyZWFrfWNhc2UgNjp7a1soa1tmPj4yXXwwKSs0MD4+Ml09a1trW2U+PjJdPj4yXTtrW2Q+PjJdPTA7YnJlYWt9Y2FzZSA1OntuPWtbZT4+Ml18MDtuPXNPKGtbZj4+Ml18MCxrW24+PjJdfDAsa1tuKzQ+PjJdfDApfDA7a1tnPj4yXT1uO2tbZD4+Ml09a1tnPj4yXTticmVha31jYXNlIDEwOnt0TyhrW2Y+PjJdfDAsNCxrW2U+PjJdfDApO2tbZD4+Ml09MDticmVha31jYXNlIDEzOnt0TyhrW2Y+PjJdfDAsMTYsa1tlPj4yXXwwKTtrW2Q+PjJdPTA7YnJlYWt9Y2FzZSAxMjp7a1toPj4yXT1rWyhrWyhrW2Y+PjJdfDApKzQ+PjJdfDApKzE2Pj4yXTtuPVlkKDE4MzkxLGgpfDA7a1trW2U+PjJdPj4yXT1uO2tbZD4+Ml09MDticmVha31jYXNlIDE2OntuPWtbKGtbKGtbZj4+Ml18MCkrND4+Ml18MCkrOD4+Ml18MDtuPVRkKG4sKChufDApPDApPDwzMT4+MzEpfDA7a1tpPj4yXT1uO2lmKGtbaT4+Ml18MCl7dU8oa1soa1soa1tmPj4yXXwwKSs0Pj4yXXwwKSs4Pj4yXXwwLGtbaT4+Ml18MCl8MDtrW2tbZT4+Ml0+PjJdPWtbaT4+Ml19a1tkPj4yXT0wO2JyZWFrfWNhc2UgMjA6e249dk8oa1tmPj4yXXwwKXwwO2tba1tlPj4yXT4+Ml09bjtrW2Q+PjJdPTA7YnJlYWt9ZGVmYXVsdDprW2Q+PjJdPTEyfXdoaWxlKDApO3I9ajtyZXR1cm4ga1tkPj4yXXwwfWZ1bmN0aW9uIGFPKGEpe2E9YXwwO3ZhciBiPTA7Yj1yO3I9cisxNnwwO2tbYj4+Ml09YTtyPWI7cmV0dXJuIDQwOTZ9ZnVuY3Rpb24gYk8oYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wLGU9MDtjPXI7cj1yKzE2fDA7ZT1jKzh8MDtkPWMrNHwwO2I9YztrW2U+PjJdPWE7a1tkPj4yXT1rW2U+PjJdO2tbYj4+Ml09MDtpZighKChtWyhrW2Q+PjJdfDApKzE4Pj4xXXwwKSYxNikpe2U9a1tiPj4yXXwwO3I9YztyZXR1cm4gZXwwfWtbYj4+Ml09a1tiPj4yXXw0MDk2O2U9a1tiPj4yXXwwO3I9YztyZXR1cm4gZXwwfWZ1bmN0aW9uIGNPKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaT0wLGw9MCxuPTAsbz0wLHA9MCxxPTAscz0wLHQ9MCx1PTAsdj0wO3U9cjtyPXIrNDh8MDt2PXUrMzJ8MDtlPXUrMjh8MDtmPXUrMjR8MDtnPXUrMjB8MDtvPXUrMTZ8MDtuPXUrMTJ8MDtxPXUrOHwwO3A9dSs0fDA7cz11O2w9dSs0MHwwO2g9dSszOHwwO2k9dSszNnwwO2tbdj4+Ml09YTtrW2U+PjJdPWI7a1tmPj4yXT1jO2tbZz4+Ml09ZDtrW28+PjJdPWtbdj4+Ml07a1tuPj4yXT1rWyhrW28+PjJdfDApKzM2Pj4yXTtrW3A+PjJdPWtba1tuPj4yXT4+Ml07a1tzPj4yXT0wO2pbbD4+MV09KDE8PChrW2U+PjJdfDApKyhrW2Y+PjJdfDApKS0oMTw8a1tlPj4yXSk7aWYoa1tnPj4yXSYxKXtqW2g+PjFdPTA7a1txPj4yXT1rWyhrW3A+PjJdfDApKzMyPj4yXTt3aGlsZSgxKXtpZighKGtbcT4+Ml18MCkpYnJlYWs7aWYoKGtbcT4+Ml18MCkhPShrW24+PjJdfDApKWpbaD4+MV09bVtoPj4xXXwwfChtWyhrW3E+PjJdfDApKzEwPj4xXXwwKTtrW3E+PjJdPWtbKGtbcT4+Ml18MCkrND4+Ml19aWYoISgobVtsPj4xXXwwKSYobVtoPj4xXXwwKSkpe3Y9ck8oa1tvPj4yXXwwLDIsKGtbZT4+Ml18MCkrMTIwfDAsa1tmPj4yXXwwKXwwO2tbcz4+Ml09dn1lbHNlIGtbcz4+Ml09MDtpZihrW3M+PjJdfDApe3Y9a1tzPj4yXXwwO3I9dTtyZXR1cm4gdnwwfXY9KGtbbj4+Ml18MCkrMTJ8MDtqW3Y+PjFdPShtW3Y+PjFdfDApJn4obVtsPj4xXXwwKTt2PShrW24+PjJdfDApKzEwfDA7alt2Pj4xXT0obVt2Pj4xXXwwKSZ+KG1bbD4+MV18MCk7dj1rW3M+PjJdfDA7cj11O3JldHVybiB2fDB9aWYoIShrW2c+PjJdJjQpKXtrW3E+PjJdPWtbKGtbcD4+Ml18MCkrMzI+PjJdO3doaWxlKDEpe2lmKCEoa1txPj4yXXwwKSlicmVhaztpZigobVsoa1txPj4yXXwwKSsxMj4+MV18MCkmKG1bbD4+MV18MCkpe3Q9Mjg7YnJlYWt9aWYoKG1bKGtbcT4+Ml18MCkrMTA+PjFdfDApJihtW2w+PjFdfDApKXt0PTI4O2JyZWFrfWtbcT4+Ml09a1soa1txPj4yXXwwKSs0Pj4yXX1pZigodHwwKT09Mjgpa1tzPj4yXT01O2lmKGtbcz4+Ml18MCl7dj1rW3M+PjJdfDA7cj11O3JldHVybiB2fDB9dj1yTyhrW28+PjJdfDAsMSwoa1tlPj4yXXwwKSsxMjB8MCxrW2Y+PjJdfDApfDA7a1tzPj4yXT12O2lmKGtbcz4+Ml18MCl7dj1rW3M+PjJdfDA7cj11O3JldHVybiB2fDB9dj0oa1tuPj4yXXwwKSsxMnwwO2pbdj4+MV09bVt2Pj4xXXwwfChtW2w+PjFdfDApO3Y9a1tzPj4yXXwwO3I9dTtyZXR1cm4gdnwwfWpbaT4+MV09MDtrW3E+PjJdPWtbKGtbcD4+Ml18MCkrMzI+PjJdO3doaWxlKDEpe2lmKCEoa1txPj4yXXwwKSlicmVhaztpZigobVsoa1txPj4yXXwwKSsxMj4+MV18MCkmKG1bbD4+MV18MCkpe3Q9MTY7YnJlYWt9altpPj4xXT1tW2k+PjFdfDB8KG1bKGtbcT4+Ml18MCkrMTA+PjFdfDApO2tbcT4+Ml09a1soa1txPj4yXXwwKSs0Pj4yXX1pZigodHwwKT09MTYpa1tzPj4yXT01O2RvIGlmKCEoa1tzPj4yXXwwKSlpZighKChtW2k+PjFdfDApJihtW2w+PjFdfDApKSl7dj1yTyhrW28+PjJdfDAsMCwoa1tlPj4yXXwwKSsxMjB8MCxrW2Y+PjJdfDApfDA7a1tzPj4yXT12O2JyZWFrfWVsc2V7a1tzPj4yXT0wO2JyZWFrfXdoaWxlKDApO2lmKGtbcz4+Ml18MCl7dj1rW3M+PjJdfDA7cj11O3JldHVybiB2fDB9dj0oa1tuPj4yXXwwKSsxMHwwO2pbdj4+MV09bVt2Pj4xXXwwfChtW2w+PjFdfDApO3Y9a1tzPj4yXXwwO3I9dTtyZXR1cm4gdnwwfWZ1bmN0aW9uIGRPKGEpe2E9YXwwO3ZhciBiPTA7Yj1yO3I9cisxNnwwO2tbYj4+Ml09YTtoTygpO2pPKCk7cj1iO3JldHVybn1mdW5jdGlvbiBlTyhhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wLGg9MCxpPTAsaj0wO2k9cjtyPXIrMzJ8MDtjPWkrMjR8MDtqPWkrMjB8MDtkPWkrMTZ8MDtlPWkrMTJ8MDtnPWkrOHwwO2g9aSs0fDA7Zj1pO2tbaj4+Ml09YTtrW2Q+PjJdPWI7a1tmPj4yXT1rW2o+PjJdO2tbZT4+Ml09a1soa1tmPj4yXXwwKSszNj4+Ml07aWYoIShrW2U+PjJdfDApKXtrW2M+PjJdPTA7aj1rW2M+PjJdfDA7cj1pO3JldHVybiBqfDB9a1tnPj4yXT1rW2tbZT4+Ml0+PjJdO2tbaD4+Ml09KGtbZz4+Ml18MCkrMzI7d2hpbGUoMSl7aWYoKGtba1toPj4yXT4+Ml18MCk9PShrW2U+PjJdfDApKWJyZWFrO2tbaD4+Ml09KGtba1toPj4yXT4+Ml18MCkrNH1rW2tbaD4+Ml0+PjJdPWtbKGtbZT4+Ml18MCkrND4+Ml07VWQoa1tlPj4yXXwwKTtrWyhrW2Y+PjJdfDApKzM2Pj4yXT0wO2hPKCk7aj0oa1tnPj4yXXwwKSsyOHwwO2tbaj4+Ml09KGtbaj4+Ml18MCkrLTE7aWYoIShrWyhrW2c+PjJdfDApKzI4Pj4yXXwwKSl7aWYoKGtbZD4+Ml18MCkhPTA/KGtbKGtbZz4+Ml18MCkrMTI+PjJdfDApPj0wOjApYmNba1s2NjMyPj4yXSYyNTVdKGtbKGtbZz4+Ml18MCkrOD4+Ml18MCl8MDtpTyhrW2Y+PjJdfDApfWpPKCk7a1tjPj4yXT0wO2o9a1tjPj4yXXwwO3I9aTtyZXR1cm4ganwwfWZ1bmN0aW9uIGZPKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTA7Zj1yO3I9ciszMnwwO2c9Zis4fDA7a1tmKzE2Pj4yXT1hO2E9ZjtrW2E+PjJdPWI7a1thKzQ+PjJdPWM7a1tmKzEyPj4yXT1kO2tbZz4+Ml09ZTtrW2tbZz4+Ml0+PjJdPTA7cj1mO3JldHVybiAwfWZ1bmN0aW9uIGdPKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3ZhciBlPTA7ZT1yO3I9cisxNnwwO2tbZSsxMj4+Ml09YTthPWU7a1thPj4yXT1iO2tbYSs0Pj4yXT1jO2tbZSs4Pj4yXT1kO3I9ZTtyZXR1cm4gMH1mdW5jdGlvbiBoTygpe3JldHVybn1mdW5jdGlvbiBpTyhhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTAsZT0wLGY9MDtmPXI7cj1yKzE2fDA7Yj1mKzEyfDA7ZT1mKzh8MDtkPWYrNHwwO2M9ZjtrW2I+PjJdPWE7a1tlPj4yXT1rWyhrWyhrW2I+PjJdfDApKzg+PjJdfDApKzIwPj4yXTtpZighKGtbZT4+Ml18MCkpe3I9ZjtyZXR1cm59aWYoa1soa1tlPj4yXXwwKSsyOD4+Ml18MCl7cj1mO3JldHVybn1hPWtPKCl8MDtrW2Q+PjJdPWE7a1tjPj4yXT0wO3doaWxlKDEpe2E9a1tlPj4yXXwwO2lmKChrW2M+PjJdfDApPj0obVsoa1tlPj4yXXwwKSsyMD4+MV18MHwwKSlicmVhaztpZigoa1thKzEyPj4yXXwwKT49MClnY1trWzY3MTY+PjJdJjI1NV0oa1soa1soa1tlPj4yXXwwKSsyND4+Ml18MCkrKGtbYz4+Ml08PDIpPj4yXXwwLGtbKGtbZT4+Ml18MCkrMTY+PjJdfDApfDA7ZWxzZSBVZChrWyhrWyhrW2U+PjJdfDApKzI0Pj4yXXwwKSsoa1tjPj4yXTw8Mik+PjJdfDApO2tbYz4+Ml09KGtbYz4+Ml18MCkrKGtbZD4+Ml18MCl9VWQoa1thKzI0Pj4yXXwwKTtpZigoa1soa1tlPj4yXXwwKSsxMj4+Ml18MCk+PTApe2xPKGtbYj4+Ml18MCxrWyhrW2U+PjJdfDApKzEyPj4yXXwwLDMzNTc0KTtrWyhrW2U+PjJdfDApKzEyPj4yXT0tMX1rWyhrW2tbZT4+Ml0+PjJdfDApKzIwPj4yXT0wO1VkKGtbZT4+Ml18MCk7cj1mO3JldHVybn1mdW5jdGlvbiBqTygpe3JldHVybn1mdW5jdGlvbiBrTygpe3ZhciBhPTAsYj0wLGM9MCxkPTAsZT0wO2Q9cjtyPXIrMTZ8MDthPWQrOHwwO2M9ZCs0fDA7Yj1kO2tbYz4+Ml09MzI3Njg7ZT1aYltrWzY3NDA+PjJdJjI1NV0oKXwwO2tbYj4+Ml09ZTtpZigoa1tiPj4yXXwwKTwoa1tjPj4yXXwwKSl7a1thPj4yXT0xO2U9a1thPj4yXXwwO3I9ZDtyZXR1cm4gZXwwfWVsc2V7a1thPj4yXT0oa1tiPj4yXXwwKS8oa1tjPj4yXXwwKXwwO2U9a1thPj4yXXwwO3I9ZDtyZXR1cm4gZXwwfXJldHVybiAwfWZ1bmN0aW9uIGxPKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wO2Y9cjtyPXIrMTZ8MDtkPWYrOHwwO2c9Zis0fDA7ZT1mO2tbZD4+Ml09YTtrW2c+PjJdPWI7a1tlPj4yXT1jO2lmKCEoYmNba1s2NDUyPj4yXSYyNTVdKGtbZz4+Ml18MCl8MCkpe3I9ZjtyZXR1cm59aWYoa1tkPj4yXXwwKWQ9a1soa1tkPj4yXXwwKSszMj4+Ml18MDtlbHNlIGQ9MDttTyg0MTA2LDQ0MDkxLGQsa1tlPj4yXXwwKXwwO3I9ZjtyZXR1cm59ZnVuY3Rpb24gbU8oYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxpPTAsaj0wLGw9MCxtPTA7bT1yO3I9cis0OHwwO2o9bTtlPW0rNDB8MDtmPW0rMzZ8MDtnPW0rMzJ8MDtoPW0rMjh8MDtsPW0rMjR8MDtpPW0rMjB8MDtrW2U+PjJdPWE7a1tmPj4yXT1iO2tbZz4+Ml09YztrW2g+PjJdPWQ7Yz1MUSgpfDA7a1tpPj4yXT1rW2M+PjJdO2M9TVEoa1tpPj4yXXwwKXwwO2tbbD4+Ml09YztpZighKGtbZz4+Ml18MCkpa1tnPj4yXT0xODQwMjtjPWtbZT4+Ml18MDthPWtbaT4+Ml18MDtpPWtbZj4+Ml18MDtkPWtbZz4+Ml18MDtiPWtbbD4+Ml18MDtrW2o+PjJdPWtbaD4+Ml07a1tqKzQ+PjJdPWE7a1tqKzg+PjJdPWk7a1tqKzEyPj4yXT1kO2tbaisxNj4+Ml09YjskZChjLDQ0MDk3LGopO3I9bTtyZXR1cm4ga1tlPj4yXXwwfWZ1bmN0aW9uIG5PKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MDtkPXI7cj1yKzE2fDA7ZT1kO2g9ZCsxMnwwO2c9ZCs4fDA7Zj1kKzR8MDtrW2g+PjJdPWE7a1tnPj4yXT1iO2tbZj4+Ml09YztjPWtbaD4+Ml18MDthPWtbZz4+Ml18MDtrW2U+PjJdPWtbZj4+Ml07YT1PUShjLGEsZSl8MDtyPWQ7cmV0dXJuIGF8MH1mdW5jdGlvbiBvTyhhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsbD0wO2g9cjtyPXIrNTQ0fDA7aj1oO2M9aCsyMHwwO2w9aCsxNnwwO2Q9aCsxMnwwO2Y9aCs4fDA7ZT1oKzR8MDtnPWgrMjR8MDtrW2w+PjJdPWE7a1tkPj4yXT1iO2tbZT4+Ml09LTE7a1tqPj4yXT1rW2w+PjJdO19kKDUxMixnLDE4MzkxLGopfDA7YT11UihnKXwwO2tbZj4+Ml09YTt3aGlsZSgxKXtpZigoa1tmPj4yXXwwKTw9MClicmVhaztpZigoaVtnKyhrW2Y+PjJdfDApPj4wXXwwKT09NDcpYnJlYWs7a1tmPj4yXT0oa1tmPj4yXXwwKSstMX1pZigoa1tmPj4yXXwwKT4wKWlbZysoa1tmPj4yXXwwKT4+MF09MDtlbHNle2lmKChpW2c+PjBdfDApIT00NylpW2c+PjBdPTQ2O2lbZysxPj4wXT0wfWw9cU8oZywwLDApfDA7a1tlPj4yXT1sO2tba1tkPj4yXT4+Ml09a1tlPj4yXTtpZigoa1tlPj4yXXwwKT49MCl7a1tjPj4yXT0wO2w9a1tjPj4yXXwwO3I9aDtyZXR1cm4gbHwwfWVsc2V7bD1tTyh5dCgzMjkxMil8MCw0NDIzMixnLDMyOTEyKXwwO2tbYz4+Ml09bDtsPWtbYz4+Ml18MDtyPWg7cmV0dXJuIGx8MH1yZXR1cm4gMH1mdW5jdGlvbiBwTygpe3JldHVybiByYigzMCl8MH1mdW5jdGlvbiBxTyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaT0wLGo9MCxsPTA7bD1yO3I9cisxMTJ8MDtqPWw7ZD1sKzEwMHwwO2U9bCs5NnwwO2Y9bCs5MnwwO2c9bCs4OHwwO2g9bCs4NHwwO2k9bCs4fDA7a1tkPj4yXT1hO2tbZT4+Ml09YjtrW2Y+PjJdPWM7a1toPj4yXT0oa1tmPj4yXXwwKSE9MD9rW2Y+PjJdfDA6NDIwO3doaWxlKDEpe2E9WWJba1s2NDQwPj4yXSYyNTVdKGtbZD4+Ml18MCxrW2U+PjJdfDUyNDI4OCxrW2g+PjJdfDApfDA7a1tnPj4yXT1hO2lmKChrW2c+PjJdfDApPDApe2E9TFEoKXwwO2lmKChrW2E+PjJdfDApPT00KWNvbnRpbnVlO2Vsc2UgYnJlYWt9aWYoKGtbZz4+Ml18MCk+PTMpYnJlYWs7YmNba1s2NDUyPj4yXSYyNTVdKGtbZz4+Ml18MCl8MDthPWtbZz4+Ml18MDtrW2o+PjJdPWtbZD4+Ml07a1tqKzQ+PjJdPWE7JGQoMjgsNDQzMTksaik7a1tnPj4yXT0tMTtpZigoWWJba1s2NDQwPj4yXSYyNTVdKDQ0MzYyLGtbZT4+Ml18MCxrW2Y+PjJdfDApfDApPDApYnJlYWt9aWYoISgoa1tnPj4yXXwwKT49MCYoa1tmPj4yXXwwKSE9MCkpe2E9a1tnPj4yXXwwO3I9bDtyZXR1cm4gYXwwfWlmKGdjW2tbNjUwMD4+Ml0mMjU1XShrW2c+PjJdfDAsaSl8MCl7YT1rW2c+PjJdfDA7cj1sO3JldHVybiBhfDB9aWYoa1tpKzM2Pj4yXXwwKXthPWtbZz4+Ml18MDtyPWw7cmV0dXJuIGF8MH1pZigoa1tpKzEyPj4yXSY1MTF8MCk9PShrW2Y+PjJdfDApKXthPWtbZz4+Ml18MDtyPWw7cmV0dXJuIGF8MH1nY1trWzY2MDg+PjJdJjI1NV0oa1tnPj4yXXwwLGtbZj4+Ml18MCl8MDthPWtbZz4+Ml18MDtyPWw7cmV0dXJuIGF8MH1mdW5jdGlvbiByTyhhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGk9MCxsPTAsbT0wLG49MCxvPTA7bj1yO3I9cis0OHwwO209bjtvPW4rNDB8MDtlPW4rMzZ8MDtmPW4rMzJ8MDtnPW4rMjh8MDtpPW4rMjR8MDtoPW4rOHwwO2w9bis0fDA7a1tvPj4yXT1hO2tbZT4+Ml09YjtrW2Y+PjJdPWM7a1tnPj4yXT1kO2tbbD4+Ml09MDtrW2k+PjJdPWtbKGtbKGtbbz4+Ml18MCkrOD4+Ml18MCkrMjA+PjJdO2lmKChrWyhrW2k+PjJdfDApKzEyPj4yXXwwKTwwKXtvPWtbbD4+Ml18MDtyPW47cmV0dXJuIG98MH07a1toPj4yXT0wO2tbaCs0Pj4yXT0wO2tbaCs4Pj4yXT0wO2tbaCsxMj4+Ml09MDtqW2g+PjFdPWtbZT4+Ml07altoKzI+PjFdPTA7a1toKzQ+PjJdPWtbZj4+Ml07a1toKzg+PjJdPWtbZz4+Ml07YT1rWzE2MzFdfDA7bz1rWyhrW2k+PjJdfDApKzEyPj4yXXwwO2tbbT4+Ml09aDtvPVliW2EmMjU1XShvLDEzLG0pfDA7a1tsPj4yXT1vO2tbbD4+Ml09KGtbbD4+Ml18MCkhPS0xPzA6NTtvPWtbbD4+Ml18MDtyPW47cmV0dXJuIG98MH1mdW5jdGlvbiBzTyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaT0wLGo9MCxsPTAsbT0wO209cjtyPXIrMTI4fDA7ZD1tKzExMnwwO2U9bSsxMDh8MDtmPW0rMTZ8MDtqPW0rOHwwO2c9bSszMnwwO2k9bSsyOHwwO2w9bSsyNHwwO2g9bTtrW2U+PjJdPWE7YT1mO2tbYT4+Ml09YjtrW2ErND4+Ml09YzthOmRvIGlmKChrWyhrW2U+PjJdfDApKzQwPj4yXXwwKT4wKXtpZihnY1trWzY1MDA+PjJdJjI1NV0oa1soa1tlPj4yXXwwKSsxMj4+Ml18MCxnKXwwKXtrW2Q+PjJdPTE4MDI7YT1rW2Q+PjJdfDA7cj1tO3JldHVybiBhfDB9Yj1rWyhrW2U+PjJdfDApKzQwPj4yXXwwO2I9JFIoa1tmPj4yXXwwLGtbZis0Pj4yXXwwLGJ8MCwoKGJ8MCk8MCk8PDMxPj4zMXwwKXwwO2I9X1IoYnwwLEx8MCwxLDApfDA7Zj1rWyhrW2U+PjJdfDApKzQwPj4yXXwwO2Y9aVMoYnwwLEx8MCxmfDAsKChmfDApPDApPDwzMT4+MzF8MCl8MDtiPWtbKGtbZT4+Ml18MCkrNDA+PjJdfDA7Yj1rUyhmfDAsTHwwLGJ8MCwoKGJ8MCk8MCk8PDMxPj4zMXwwKXwwO2Y9ajtrW2Y+PjJdPWI7a1tmKzQ+PjJdPUw7Zj1qO2I9a1tmKzQ+PjJdfDA7YT1rW2crMzY+PjJdfDA7Yz0oKGF8MCk8MCk8PDMxPj4zMTtpZigoYnwwKT4oY3wwKXwoKGJ8MCk9PShjfDApPyhrW2Y+PjJdfDApPj4+MD5hPj4+MDowKSl7a1tpPj4yXT1rW2crNDA+PjJdO2tbbD4+Ml09MDtnPWhhKChrW2crMzY+PjJdfDApLyhrW2k+PjJdfDApfDAsa1tpPj4yXXwwKXwwO2c9Zysoa1tpPj4yXXwwKS0xfDA7YT1oO2tbYT4+Ml09ZztrW2ErND4+Ml09KChnfDApPDApPDwzMT4+MzE7d2hpbGUoMSl7Yz1oO2c9a1tjPj4yXXwwO2M9a1tjKzQ+PjJdfDA7Zj1qO2E9a1tpPj4yXXwwO2E9JFIoa1tmPj4yXXwwLGtbZis0Pj4yXXwwLGF8MCwoKGF8MCk8MCk8PDMxPj4zMXwwKXwwO2E9X1IoYXwwLEx8MCwxLDApfDA7Zj1MO2lmKCEoKGN8MCk8KGZ8MCl8KGN8MCk9PShmfDApJmc+Pj4wPGE+Pj4wKSlicmVhayBhO2c9aDtjPWtbZys0Pj4yXXwwO2E9ajtmPWtbYSs0Pj4yXXwwO2lmKChjfDApPihmfDApfCgoY3wwKT09KGZ8MCk/KGtbZz4+Ml18MCk+Pj4wPj0oa1thPj4yXXwwKT4+PjA6MCkpe2c9ajtnPV9SKGtbZz4+Ml18MCxrW2crND4+Ml18MCwxLDApfDA7YT1oO2tbYT4+Ml09ZztrW2ErND4+Ml09TH1hPWg7YT14TyhrW2U+PjJdfDAsa1thPj4yXXwwLGtbYSs0Pj4yXXwwLDE4NDAyLDEpfDA7a1tsPj4yXT1hO2lmKChrW2w+PjJdfDApIT0xKWJyZWFrO2c9a1tpPj4yXXwwO2E9aDtnPSRSKGtbYT4+Ml18MCxrW2ErND4+Ml18MCxnfDAsKChnfDApPDApPDwzMT4+MzF8MCl8MDthPWg7a1thPj4yXT1nO2tbYSs0Pj4yXT1MfWtbZD4+Ml09Nzc4O2E9a1tkPj4yXXwwO3I9bTtyZXR1cm4gYXwwfX13aGlsZSgwKTtrW2Q+PjJdPTA7YT1rW2Q+PjJdfDA7cj1tO3JldHVybiBhfDB9ZnVuY3Rpb24gdE8oYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTA7Zz1yO3I9cisxNnwwO2U9Zys0fDA7ZD1nKzh8MDtmPWc7a1tlPj4yXT1hO2lbZD4+MF09YjtrW2Y+PjJdPWM7aWYoKGtba1tmPj4yXT4+Ml18MCk8MCl7a1trW2Y+PjJdPj4yXT0oKG1bKGtbZT4+Ml18MCkrMTg+PjFdfDApJihsW2Q+PjBdfDApfDApIT0wJjE7cj1nO3JldHVybn1kPWxbZD4+MF18MDtpZighKGtba1tmPj4yXT4+Ml18MCkpe2Y9KGtbZT4+Ml18MCkrMTh8MDtqW2Y+PjFdPShtW2Y+PjFdfDApJn5kO3I9ZztyZXR1cm59ZWxzZXtmPShrW2U+PjJdfDApKzE4fDA7altmPj4xXT1tW2Y+PjFdfDB8ZDtyPWc7cmV0dXJufX1mdW5jdGlvbiB1TyhhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsbD0wLG09MCxuPTAsbz0wO2w9cjtyPXIrNjR8MDtnPWwrOHwwO2o9bCs0OHwwO2M9bCs0NHwwO2Q9bCs0MHwwO2g9bCszNnwwO2U9bCszMnwwO2Y9bDtrW2M+PjJdPWE7a1tkPj4yXT1iO2tbZT4+Ml09MDtpW2tbZD4+Ml0+PjBdPTA7Yj13TygpfDA7a1toPj4yXT1iO2lmKCEoa1toPj4yXXwwKSl7a1tqPj4yXT02NDEwO2o9a1tqPj4yXXwwO3I9bDtyZXR1cm4ganwwfXdoaWxlKDEpe2FlKDgsZik7aVsoa1tkPj4yXXwwKSsoKGtbYz4+Ml18MCktMik+PjBdPTA7YT1rW2M+PjJdfDA7Yj1rW2Q+PjJdfDA7bj1mO289a1tuPj4yXXwwO249a1tuKzQ+PjJdfDA7a1tnPj4yXT1rW2g+PjJdO209Zys4fDA7a1ttPj4yXT1vO2tbbSs0Pj4yXT1uO2tbZysxNj4+Ml09MDtfZChhLGIsNDQzNzIsZyl8MDtpZihpWyhrW2Q+PjJdfDApKygoa1tjPj4yXXwwKS0yKT4+MF18MCl7Yz01O2JyZWFrfW89a1tlPj4yXXwwO2tbZT4+Ml09bysxO2lmKChvfDApPjEwKXtjPTU7YnJlYWt9aWYoZ2Nba1s2NDY0Pj4yXSYyNTVdKGtbZD4+Ml18MCwwKXwwKXtjPTc7YnJlYWt9fWlmKChjfDApPT01KXtrW2o+PjJdPTE7bz1rW2o+PjJdfDA7cj1sO3JldHVybiBvfDB9ZWxzZSBpZigoY3wwKT09Nyl7a1tqPj4yXT0wO289a1tqPj4yXXwwO3I9bDtyZXR1cm4gb3wwfXJldHVybiAwfWZ1bmN0aW9uIHZPKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MDtkPXI7cj1yKzgwfDA7Yj1kKzc2fDA7Yz1kO2tbYj4+Ml09YTtpZighKGtbKGtbYj4+Ml18MCkrOD4+Ml18MCkpe2E9MDthPWEmMTtyPWQ7cmV0dXJuIGF8MH1pZihnY1trWzY0ODg+PjJdJjI1NV0oa1soa1tiPj4yXXwwKSszMj4+Ml18MCxjKXwwKXthPTE7YT1hJjE7cj1kO3JldHVybiBhfDB9YT0oa1tjKzcyPj4yXXwwKSE9KGtbKGtbKGtbYj4+Ml18MCkrOD4+Ml18MCkrND4+Ml18MCk7YT1hJjE7cj1kO3JldHVybiBhfDB9ZnVuY3Rpb24gd08oKXt2YXIgYT0wLGI9MCxjPTAsZD0wLGU9MCxmPTA7ZT1yO3I9cis5NnwwO2M9ZSs4NHwwO2I9ZSs4MHwwO2E9ZSs0fDA7ZD1lO2tbYj4+Ml09MDtrW2Q+PjJdPWtbMjQzXTtpZighKGtbMTY5M118MCkpe2Y9QWIoNDQzODkpfDA7a1sxNjkzXT1mfWlmKCEoa1sxNjk0XXwwKSl7Zj1BYig0NDQwMyl8MDtrWzE2OTRdPWZ9d2hpbGUoMSl7aWYoKCgoa1tkPj4yXXwwKSE9MD8oZ2Nba1s2NDg4Pj4yXSYyNTVdKGtbZD4+Ml18MCxhKXwwKT09MDowKT8oa1thKzEyPj4yXSY2MTQ0MHwwKT09MTYzODQ6MCk/KGdjW2tbNjQ2ND4+Ml0mMjU1XShrW2Q+PjJdfDAsMyl8MCk9PTA6MCl7YT05O2JyZWFrfWlmKChrW2I+PjJdfDApPj4+MD49Nil7YT0xMjticmVha31mPWtbYj4+Ml18MDtrW2I+PjJdPWYrMTtrW2Q+PjJdPWtbNjc3MisoZjw8Mik+PjJdfWlmKChhfDApPT05KXtrW2M+PjJdPWtbZD4+Ml07Zj1rW2M+PjJdfDA7cj1lO3JldHVybiBmfDB9ZWxzZSBpZigoYXwwKT09MTIpe2tbYz4+Ml09MDtmPWtbYz4+Ml18MDtyPWU7cmV0dXJuIGZ8MH1yZXR1cm4gMH1mdW5jdGlvbiB4TyhhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxpPTAsaj0wO2Y9cjtyPXIrMzJ8MDtnPWYrMTZ8MDtqPWY7aT1mKzEyfDA7aD1mKzh8MDtrW2c+PjJdPWE7YT1qO2tbYT4+Ml09YjtrW2ErND4+Ml09YztrW2k+PjJdPWQ7a1toPj4yXT1lO2Q9ajtkPXlPKGtbKGtbZz4+Ml18MCkrMTI+PjJdfDAsa1tkPj4yXXwwLGtbZCs0Pj4yXXwwLGtbaT4+Ml18MCxrW2g+PjJdfDAsKGtbZz4+Ml18MCkrMjB8MCl8MDtyPWY7cmV0dXJuIGR8MH1mdW5jdGlvbiB5TyhhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaT0wLGo9MCxsPTAsbT0wLG49MCxvPTAscD0wO3A9cjtyPXIrNDh8MDtnPXArMzJ8MDtoPXArOHwwO2k9cCsyOHwwO2o9cCsyNHwwO2w9cCsyMHwwO249cCsxNnwwO209cDtrW2c+PjJdPWE7YT1oO2tbYT4+Ml09YjtrW2ErND4+Ml09YztrW2k+PjJdPWQ7a1tqPj4yXT1lO2tbbD4+Ml09ZjtrW24+PjJdPTA7a1tqPj4yXT1rW2o+PjJdJjEzMTA3MTtkb3tkPUZSKGtbZz4+Ml18MCxrW2g+PjJdfDAsMCl8MDtmPW07a1tmPj4yXT1kO2tbZis0Pj4yXT0oKGR8MCk8MCk8PDMxPj4zMTtpZigoa1ttKzQ+PjJdfDApPDApe289MzticmVha31mPVliW2tbNjU3Mj4+Ml0mMjU1XShrW2c+PjJdfDAsa1tpPj4yXXwwLGtbaj4+Ml18MCl8MDtrW24+PjJdPWY7aWYoKGtbbj4+Ml18MCk+PTApYnJlYWs7Zj1MUSgpfDB9d2hpbGUoKGtbZj4+Ml18MCk9PTQpO2lmKChvfDApPT0zKWtbbj4+Ml09LTE7aWYoKGtbbj4+Ml18MCk+PTApe289a1tuPj4yXXwwO3I9cDtyZXR1cm4gb3wwfW89TFEoKXwwO2tba1tsPj4yXT4+Ml09a1tvPj4yXTtvPWtbbj4+Ml18MDtyPXA7cmV0dXJuIG98MH1mdW5jdGlvbiB6TyhhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MDtjPXI7cj1yKzE2fDA7ZD1jKzR8MDtlPWM7a1tkPj4yXT1hO2tbZT4+Ml09YjtrWyhrW2Q+PjJdfDApKzIwPj4yXT1rW2U+PjJdO3I9YztyZXR1cm59ZnVuY3Rpb24gQU8oYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wO2U9cjtyPXIrMTZ8MDtjPWUrOHwwO2Y9ZSs0fDA7ZD1lO2tbZj4+Ml09YTtrW2Q+PjJdPWI7c3dpdGNoKGtbZj4+Ml18MCl7Y2FzZSAzNzpjYXNlIDQ6Y2FzZSAxNjpjYXNlIDExMDpjYXNlIDExOmNhc2UgMTM6e2tbYz4+Ml09NTticmVha31jYXNlIDE6e2tbYz4+Ml09MzticmVha31kZWZhdWx0OmtbYz4+Ml09a1tkPj4yXX1yPWU7cmV0dXJuIGtbYz4+Ml18MH1mdW5jdGlvbiBCTyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wO2U9cjtyPXIrMTZ8MDtmPWUrMTJ8MDtkPWU7a1tmPj4yXT1hO2tbZSs4Pj4yXT1iO2tbZSs0Pj4yXT1jO2I9QVIoa1tmPj4yXXwwKXwwO2tbZD4+Ml09YjtyPWU7cmV0dXJuIGtbZD4+Ml18MH1mdW5jdGlvbiBDTyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MDtnPXI7cj1yKzE2fDA7ZD1nKzEyfDA7ZT1nO2Y9Zys4fDA7a1tkPj4yXT1hO2E9ZTtrW2E+PjJdPWI7a1thKzQ+PjJdPWM7d2hpbGUoMSl7YT1nY1trWzY1MTI+PjJdJjI1NV0oa1tkPj4yXXwwLGtbZT4+Ml18MCl8MDtrW2Y+PjJdPWE7aWYoKGtbZj4+Ml18MCk+PTApe2I9NDticmVha31hPUxRKCl8MDtpZigoa1thPj4yXXwwKSE9NCl7Yj00O2JyZWFrfX1pZigoYnwwKT09NCl7cj1nO3JldHVybiBrW2Y+PjJdfDB9cmV0dXJuIDB9ZnVuY3Rpb24gRE8oYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaT0wLGo9MCxsPTAsbT0wLG49MCxvPTAscD0wO3A9cjtyPXIrNDh8MDtmPXArMzZ8MDtnPXArMzJ8MDtoPXArOHwwO2k9cCsyOHwwO2o9cCsyNHwwO2w9cCsyMHwwO249cCsxNnwwO209cDtrW2c+PjJdPWE7YT1oO2tbYT4+Ml09YjtrW2ErND4+Ml09YztrW2k+PjJdPWQ7a1tqPj4yXT1lO2tbbj4+Ml09MDtkb3thPUZSKGtbKGtbZz4+Ml18MCkrMTI+PjJdfDAsa1toPj4yXXwwLDApfDA7ZD1tO2tbZD4+Ml09YTtrW2QrND4+Ml09KChhfDApPDApPDwzMT4+MzE7aWYoKGtbbSs0Pj4yXXwwKTwwKXtvPTM7YnJlYWt9ZD1ZYltrWzY1MzY+PjJdJjI1NV0oa1soa1tnPj4yXXwwKSsxMj4+Ml18MCxrW2k+PjJdfDAsa1tqPj4yXXwwKXwwO2tbbD4+Ml09ZDtpZigoa1tsPj4yXXwwKT09KGtbaj4+Ml18MCkpYnJlYWs7aWYoKGtbbD4+Ml18MCk+PTApe2lmKChrW2w+PjJdfDApPjApe2tbaj4+Ml09KGtbaj4+Ml18MCktKGtbbD4+Ml18MCk7YT1rW2w+PjJdfDA7ZD1oO2E9JFIoa1tkPj4yXXwwLGtbZCs0Pj4yXXwwLGF8MCwoKGF8MCk8MCk8PDMxPj4zMXwwKXwwO2Q9aDtrW2Q+PjJdPWE7a1tkKzQ+PjJdPUw7a1tuPj4yXT0oa1tuPj4yXXwwKSsoa1tsPj4yXXwwKTtrW2k+PjJdPShrW2k+PjJdfDApKyhrW2w+PjJdfDApfX1lbHNle2Q9TFEoKXwwO2lmKChrW2Q+PjJdfDApIT00KXtvPTg7YnJlYWt9a1tsPj4yXT0xfX13aGlsZSgoa1tsPj4yXXwwKT4wKTtpZigob3wwKT09Myl7bj1rW2c+PjJdfDA7bz1MUSgpfDA7ek8obixrW28+PjJdfDApO2tbZj4+Ml09LTE7bz1rW2Y+PjJdfDA7cj1wO3JldHVybiBvfDB9ZWxzZSBpZigob3wwKT09OCl7a1tuPj4yXT0wO2Q9a1tnPj4yXXwwO289TFEoKXwwO3pPKGQsa1tvPj4yXXwwKX1rW2Y+PjJdPShrW2w+PjJdfDApKyhrW24+PjJdfDApO289a1tmPj4yXXwwO3I9cDtyZXR1cm4gb3wwfWZ1bmN0aW9uIEVPKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MDtjPXI7cj1yKzE2fDA7ZD1jKzR8MDtiPWM7a1tkPj4yXT1hO2tbYj4+Ml09a1tkPj4yXTtpZigoa1soa1tiPj4yXXwwKSsxMj4+Ml18MCk+PTApe2xPKGtbYj4+Ml18MCxrWyhrW2I+PjJdfDApKzEyPj4yXXwwLDMxMzIxKTtrWyhrW2I+PjJdfDApKzEyPj4yXT0tMX1VZChrWyhrW2I+PjJdfDApKzI4Pj4yXXwwKTthPWtbYj4+Ml18MDtiPWErNDR8MDtkb3trW2E+PjJdPTA7YT1hKzR8MH13aGlsZSgoYXwwKTwoYnwwKSk7cj1jO3JldHVybiAwfWZ1bmN0aW9uIEZPKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MDtjPXI7cj1yKzE2fDA7a1tjKzQ+PjJdPWE7a1tjPj4yXT1iO3I9YztyZXR1cm4gNjc5Nn1mdW5jdGlvbiBHTyhhKXthPWF8MDt2YXIgYj0wLGM9MDtiPXI7cj1yKzE2fDA7Yz1iO2tbYz4+Ml09YTthPUVPKGtbYz4+Ml18MCl8MDtyPWI7cmV0dXJuIGF8MH1mdW5jdGlvbiBITyhhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTA7Yz1yO3I9cisxNnwwO2tbYys0Pj4yXT1hO2tbYz4+Ml09YjtyPWM7cmV0dXJuIDB9ZnVuY3Rpb24gSU8oYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wO2M9cjtyPXIrMTZ8MDtrW2MrND4+Ml09YTtrW2M+PjJdPWI7cj1jO3JldHVybiAwfWZ1bmN0aW9uIEpPKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTA7Yz1yO3I9cisxNnwwO2Q9YztrW2MrND4+Ml09YTtrW2Q+PjJdPWI7a1trW2Q+PjJdPj4yXT0wO3I9YztyZXR1cm4gMH1mdW5jdGlvbiBLTyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLGw9MCxtPTA7bT1yO3I9ciszMnwwO2w9bTtkPW0rMjR8MDtlPW0rMjB8MDtmPW0rMTZ8MDtnPW0rMTJ8MDtqPW0rOHwwO2g9bSs0fDA7a1tlPj4yXT1hO2tbZj4+Ml09YjtrW2c+PjJdPWM7YT1UZihrW2U+PjJdfDApfDA7a1tqPj4yXT1hO2tbaD4+Ml09MDtkbyBpZigoaVtrW2U+PjJdPj4wXXwwKSE9NDcpe2lmKGdjW2tbNjQ3Nj4+Ml0mMjU1XShrW2Y+PjJdfDAsKGtbZz4+Ml18MCktMnwwKXwwKXthPVRmKGtbZj4+Ml18MCl8MDtrW2g+PjJdPWE7YT1rW2g+PjJdfDA7a1toPj4yXT1hKzE7aVsoa1tmPj4yXXwwKSthPj4wXT00NzticmVha31hPXl0KDM1Mzc5KXwwO2E9bU8oYSw0NDEzMyxrW2U+PjJdfDAsMzUzNzkpfDA7a1tkPj4yXT1hO2E9a1tkPj4yXXwwO3I9bTtyZXR1cm4gYXwwfXdoaWxlKDApO2lmKCgoa1toPj4yXXwwKSsoa1tqPj4yXXwwKSsxfDApPihrW2c+PjJdfDApKXtpWyhrW2Y+PjJdfDApKyhrW2g+PjJdfDApPj4wXT0wO2E9eXQoMzUzODgpfDA7a1tkPj4yXT1hO2E9a1tkPj4yXXwwO3I9bTtyZXR1cm4gYXwwfWVsc2V7Yj0oa1tnPj4yXXwwKS0oa1toPj4yXXwwKXwwO2E9KGtbZj4+Ml18MCkrKGtbaD4+Ml18MCl8MDtrW2w+PjJdPWtbZT4+Ml07X2QoYixhLDE4MzkxLGwpfDA7a1tkPj4yXT0wO2E9a1tkPj4yXXwwO3I9bTtyZXR1cm4gYXwwfXJldHVybiAwfWZ1bmN0aW9uIExPKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wLGk9MDtoPXI7cj1yKzk2fDA7aT1oKzkyfDA7Yz1oKzg4fDA7ZT1oKzg0fDA7Zz1oKzh8MDtkPWgrNHwwO2Y9aDtrW2k+PjJdPWE7a1tjPj4yXT1iO2tbZT4+Ml09MDtpZihnY1trWzY0ODg+PjJdJjI1NV0oa1tpPj4yXXwwLGcpfDApe2k9a1tlPj4yXXwwO3I9aDtyZXR1cm4gaXwwfWhPKCk7a1tkPj4yXT1rWzE3MzhdO3doaWxlKDEpe2lmKGtbZD4+Ml18MClpZigoa1trW2Q+PjJdPj4yXXwwKSE9KGtbZz4+Ml18MCkpYT0xO2Vsc2UgYT0oa1soa1tkPj4yXXwwKSs0Pj4yXXwwKSE9KGtbZys3Mj4+Ml18MCk7ZWxzZSBhPTA7Yj1rW2Q+PjJdfDA7aWYoIWEpYnJlYWs7a1tkPj4yXT1rW2IrMzI+PjJdfWlmKGIpe2tbZj4+Ml09KGtbZD4+Ml18MCkrMjg7d2hpbGUoMSl7aWYoIShrW2tbZj4+Ml0+PjJdfDApKWJyZWFrO2lmKChrWyhrW2tbZj4+Ml0+PjJdfDApKzQ+PjJdfDApPT0oa1tjPj4yXXwwKSlicmVhaztrW2Y+PjJdPShrW2tbZj4+Ml0+PjJdfDApKzh9a1tlPj4yXT1rW2tbZj4+Ml0+PjJdO2lmKGtbZT4+Ml18MClrW2tbZj4+Ml0+PjJdPWtbKGtbZT4+Ml18MCkrOD4+Ml19ak8oKTtpPWtbZT4+Ml18MDtyPWg7cmV0dXJuIGl8MH1mdW5jdGlvbiBNTyhhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTA7cT1yO3I9cis1NjB8MDtmPXErMjh8MDtnPXErMjR8MDtoPXErMjB8MDtqPXErMTZ8MDtsPXErMTJ8MDtuPXErOHwwO3A9cSszMnwwO209cSs0fDA7bz1xO2tbZj4+Ml09YTtrW2c+PjJdPWI7a1toPj4yXT1jO2tbaj4+Ml09ZDtrW2w+PjJdPWU7a1tuPj4yXT0wO2tba1toPj4yXT4+Ml09MDtrW2tbaj4+Ml0+PjJdPTA7a1trW2w+PjJdPj4yXT0wO2lmKGtbZz4+Ml0mNTI2MzM2KXthPShUZihrW2Y+PjJdfDApfDApLTF8MDtrW20+PjJdPWE7d2hpbGUoMSl7aWYoKGlbKGtbZj4+Ml18MCkrKGtbbT4+Ml18MCk+PjBdfDApPT00NSlicmVhaztrW20+PjJdPShrW20+PjJdfDApKy0xfWJTKHB8MCxrW2Y+PjJdfDAsa1ttPj4yXXwwKXwwO2lbcCsoa1ttPj4yXXwwKT4+MF09MDthPWFQKHAsa1toPj4yXXwwLGtbaj4+Ml18MCxrW2w+PjJdfDApfDA7a1tuPj4yXT1hO2E9a1tuPj4yXXwwO3I9cTtyZXR1cm4gYXwwfWlmKGtbZz4+Ml0mOCl7a1trW2g+PjJdPj4yXT0zODQ7YT1rW24+PjJdfDA7cj1xO3JldHVybiBhfDB9aWYoIShrW2c+PjJdJjY0KSl7YT1rW24+PjJdfDA7cj1xO3JldHVybiBhfDB9YT1SZihrW2Y+PjJdfDAsNDQ2MDYpfDA7a1tvPj4yXT1hO2lmKCEoa1tvPj4yXXwwKSl7YT1rW24+PjJdfDA7cj1xO3JldHVybiBhfDB9YT1hUChrW28+PjJdfDAsa1toPj4yXXwwLGtbaj4+Ml18MCxrW2w+PjJdfDApfDA7a1tuPj4yXT1hO2E9a1tuPj4yXXwwO3I9cTtyZXR1cm4gYXwwfWZ1bmN0aW9uIE5PKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wO2c9cjtyPXIrMTZ8MDtkPWcrOHwwO2U9Zys0fDA7Zj1nO2tbZD4+Ml09YTtrW2U+PjJdPWI7a1tmPj4yXT1jO2lmKFpiW2tbNjY5Mj4+Ml0mMjU1XSgpfDApe2I9MDtyPWc7cmV0dXJuIGJ8MH1iPVliW2tbNjY4MD4+Ml0mMjU1XShrW2Q+PjJdfDAsa1tlPj4yXXwwLGtbZj4+Ml18MCl8MDtyPWc7cmV0dXJuIGJ8MH1mdW5jdGlvbiBPTyhhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxpPTAsbD0wLG49MCxvPTAscD0wLHE9MCxzPTAsdD0wLHU9MDt0PXI7cj1yKzQ4fDA7cT10O2Y9dCs0MHwwO2c9dCszNnwwO3U9dCszMnwwO2g9dCsyOHwwO2k9dCsyNHwwO249dCsyMHwwO289dCsxNnwwO3A9dCsxMnwwO3M9dCs4fDA7bD10KzR8MDtrW2Y+PjJdPWE7a1tnPj4yXT1iO2tbdT4+Ml09YztrW2g+PjJdPWQ7a1tpPj4yXT1lO2tbbz4+Ml09a1t1Pj4yXTtrW3A+PjJdPTA7a1soa1tvPj4yXXwwKSsxMj4+Ml09a1tnPj4yXTtrWyhrW28+PjJdfDApKzQ+PjJdPWtbZj4+Ml07a1soa1tvPj4yXXwwKSszMj4+Ml09a1toPj4yXTtqWyhrW28+PjJdfDApKzE4Pj4xXT1rW2k+PjJdJjI1NTtpZihTZigoa1tpPj4yXSY2NHwwKSE9MD9rW2g+PjJdfDA6MCw0NDQ2NSwxKXwwKXt1PShrW28+PjJdfDApKzE4fDA7alt1Pj4xXT1tW3U+PjFdfDB8MTZ9aWYoIShyUihrWyhrW2Y+PjJdfDApKzE2Pj4yXXwwLDQ0MDgxKXwwKSl7dT0oa1tvPj4yXXwwKSsxOHwwO2pbdT4+MV09bVt1Pj4xXXwwfDF9aWYoa1tpPj4yXSYxMjgpa1tuPj4yXT02Nzk2O2Vsc2V7dT1nY1trW2tbKGtbZj4+Ml18MCkrMjA+PjJdPj4yXSYyNTVdKGtbaD4+Ml18MCxrW28+PjJdfDApfDA7a1tuPj4yXT11fWlmKChrW24+PjJdfDApIT02ODc2KXtpZigoa1tuPj4yXXwwKT09NjM2MCl7dT0odVIoa1toPj4yXXwwKXwwKSs2fDA7a1tsPj4yXT11O3U9a1tsPj4yXXwwO3U9VGQodSwoKHV8MCk8MCk8PDMxPj4zMSl8MDtrW3M+PjJdPXU7aWYoIShrW3M+PjJdfDApKWtbcD4+Ml09NztlbHNle2Q9a1tsPj4yXXwwO3U9a1tzPj4yXXwwO2tbcT4+Ml09a1toPj4yXTtfZChkLHUsNDQ0NzAscSl8MH1rWyhrW28+PjJdfDApKzI0Pj4yXT1rW3M+PjJdfX1lbHNle2hPKCk7dT1QTyhrW28+PjJdfDAsKGtbbz4+Ml18MCkrOHwwKXwwO2tbcD4+Ml09dTtpZihrW3A+PjJdfDApe2xPKGtbbz4+Ml18MCxrW2c+PjJdfDAsMzQ2OTIpO2tbZz4+Ml09LTF9ak8oKX16TyhrW28+PjJdfDAsMCk7aWYoIShrW3A+PjJdfDApKXtrW2tbbz4+Ml0+PjJdPWtbbj4+Ml07UU8oa1tvPj4yXXwwKTt1PWtbcD4+Ml18MDtyPXQ7cmV0dXJuIHV8MH1pZigoa1tnPj4yXXwwKTwwKXt1PWtbcD4+Ml18MDtyPXQ7cmV0dXJuIHV8MH1sTyhrW28+PjJdfDAsa1tnPj4yXXwwLDM0Nzc3KTt1PWtbcD4+Ml18MDtyPXQ7cmV0dXJuIHV8MH1mdW5jdGlvbiBQTyhhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wLGg9MCxpPTAsaj0wLGw9MDtpPXI7cj1yKzExMnwwO2U9aSsxMDR8MDtjPWkrMTAwfDA7Zj1pKzk2fDA7aj1pKzkyfDA7bD1pKzg4fDA7Zz1pKzgwfDA7ZD1pKzR8MDtoPWk7a1tjPj4yXT1hO2tbZj4+Ml09YjtrW2g+PjJdPTA7a1tsPj4yXT1rWyhrW2M+PjJdfDApKzEyPj4yXTtiPWdjW2tbNjUwMD4+Ml0mMjU1XShrW2w+PjJdfDAsZCl8MDtrW2o+PjJdPWI7aWYoa1tqPj4yXXwwKXtqPWtbYz4+Ml18MDtsPUxRKCl8MDt6TyhqLGtbbD4+Ml18MCk7aWYoKGtbKGtbYz4+Ml18MCkrMjA+PjJdfDApPT03NSl7a1tlPj4yXT0yMjtsPWtbZT4+Ml18MDtyPWk7cmV0dXJuIGx8MH1lbHNle2tbZT4+Ml09MTA7bD1rW2U+PjJdfDA7cj1pO3JldHVybiBsfDB9fTtrW2c+PjJdPTA7a1tnKzQ+PjJdPTA7a1tnPj4yXT1rW2Q+PjJdO2tbZys0Pj4yXT1rW2QrNzI+PjJdO2tbaD4+Ml09a1sxNzM4XTt3aGlsZSgxKXtpZihrW2g+PjJdfDApYT0ob1IoZyxrW2g+PjJdfDAsOCl8MCkhPTA7ZWxzZSBhPTA7Yz1rW2g+PjJdfDA7aWYoIWEpYnJlYWs7a1toPj4yXT1rW2MrMzI+PjJdfWlmKCFjKXtsPVRkKDQwLDApfDA7a1toPj4yXT1sO2lmKCEoa1toPj4yXXwwKSl7a1tlPj4yXT03O2w9a1tlPj4yXXwwO3I9aTtyZXR1cm4gbHwwfWM9a1toPj4yXXwwO2E9Yys0MHwwO2Rve2tbYz4+Ml09MDtjPWMrNHwwfXdoaWxlKChjfDApPChhfDApKTtsPWtbaD4+Ml18MDtrW2w+PjJdPWtbZz4+Ml07a1tsKzQ+PjJdPWtbZys0Pj4yXTtrWyhrW2g+PjJdfDApKzE2Pj4yXT0xO2tbKGtbaD4+Ml18MCkrMzI+PjJdPWtbMTczOF07a1soa1toPj4yXXwwKSszNj4+Ml09MDtpZihrWzE3MzhdfDApa1soa1sxNzM4XXwwKSszNj4+Ml09a1toPj4yXTtrWzE3MzhdPWtbaD4+Ml19ZWxzZXtsPShrW2g+PjJdfDApKzE2fDA7a1tsPj4yXT0oa1tsPj4yXXwwKSsxfWtba1tmPj4yXT4+Ml09a1toPj4yXTtrW2U+PjJdPTA7bD1rW2U+PjJdfDA7cj1pO3JldHVybiBsfDB9ZnVuY3Rpb24gUU8oYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wLGU9MCxmPTAsZz0wLGg9MCxpPTA7aT1yO3I9cisxMTJ8MDtoPWkrMjR8MDtnPWkrMTZ8MDtkPWkrOHwwO2M9aTtlPWkrMTA4fDA7Zj1pKzMyfDA7Yj1pKzI4fDA7a1tlPj4yXT1hO2lmKChtWyhrW2U+PjJdfDApKzE4Pj4xXXwwKSYxMjgpe3I9aTtyZXR1cm59YT1nY1trWzY1MDA+PjJdJjI1NV0oa1soa1tlPj4yXXwwKSsxMj4+Ml18MCxmKXwwO2tbYj4+Ml09YTtpZihrW2I+PjJdfDApe2tbYz4+Ml09a1soa1tlPj4yXXwwKSszMj4+Ml07JGQoMjgsNDQ0NzgsYyk7cj1pO3JldHVybn1pZighKGtbZisxNj4+Ml18MCkpe2tbZD4+Ml09a1soa1tlPj4yXXwwKSszMj4+Ml07JGQoMjgsNDQ1MDIsZCk7cj1pO3JldHVybn1hPWtbZT4+Ml18MDtpZigoa1tmKzE2Pj4yXXwwKT4+PjA+MSl7a1tnPj4yXT1rW2ErMzI+PjJdOyRkKDI4LDQ0NTMxLGcpO3I9aTtyZXR1cm59aWYoISh2TyhhKXwwKSl7cj1pO3JldHVybn1rW2g+PjJdPWtbKGtbZT4+Ml18MCkrMzI+PjJdOyRkKDI4LDQ0NTU4LGgpO3I9aTtyZXR1cm59ZnVuY3Rpb24gUk8oYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wLGU9MDtlPXI7cj1yKzE2fDA7Yj1lKzh8MDtkPWUrNHwwO2M9ZTtrW2I+PjJdPWE7a1tkPj4yXT0wO2tbYz4+Ml09a1tiPj4yXTtRTyhrW2M+PjJdfDApO1RPKGtbYj4+Ml18MCwwKXwwO2hPKCk7aWYoKGtbKGtbYz4+Ml18MCkrOD4+Ml18MCkhPTA/KGtbKGtbKGtbYz4+Ml18MCkrOD4+Ml18MCkrMjQ+PjJdfDApIT0wOjApX08oa1tjPj4yXXwwKTskTyhrW2M+PjJdfDApO2M9RU8oa1tiPj4yXXwwKXwwO2tbZD4+Ml09YztqTygpO3I9ZTtyZXR1cm4ga1tkPj4yXXwwfWZ1bmN0aW9uIFNPKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wLG09MCxuPTAsbz0wLHA9MDtvPXI7cj1yKzQ4fDA7Zj1vKzQ0fDA7cD1vKzQwfDA7Zz1vKzM2fDA7bj1vKzMyfDA7aD1vKzI4fDA7bT1vKzI0fDA7ZD1vKzh8MDtlPW87a1twPj4yXT1hO2tbZz4+Ml09YjtrW24+PjJdPTA7a1toPj4yXT1rW3A+PjJdO2tbZT4+Ml09MDtpZigobFsoa1toPj4yXXwwKSsxNj4+MF18MHwwKT49KGtbZz4+Ml18MCkpe2tbZj4+Ml09MDtwPWtbZj4+Ml18MDtyPW87cmV0dXJuIHB8MH1oTygpO2tbbT4+Ml09a1soa1toPj4yXXwwKSs4Pj4yXTtpZigobFsoa1toPj4yXXwwKSsxNj4+MF18MHwwKSE9KGxbKGtbbT4+Ml18MCkrMTI+PjBdfDB8MCk/KChrW2c+PjJdfDApPjE/MToobFsoa1ttPj4yXXwwKSsxMj4+MF18MHwwKT49Myk6MClrW24+PjJdPTU7ZWxzZSBjPTY7YTpkbyBpZigoY3wwKT09Nil7ZG8gaWYoKGtbZz4+Ml18MCk9PTEpe2lmKChsWyhrW20+PjJdfDApKzEyPj4wXXwwfDApIT0xPyhsWyhrW20+PjJdfDApKzEyPj4wXXwwfDApIT0yOjApYnJlYWs7aVsoa1toPj4yXXwwKSsxNj4+MF09MTtwPShrW20+PjJdfDApKzh8MDtrW3A+PjJdPShrW3A+PjJdfDApKzE7cD0oa1ttPj4yXXwwKSsyNHwwO2tbcD4+Ml09KGtbcD4+Ml18MCkrMTticmVhayBhfXdoaWxlKDApO2tbZCs4Pj4yXT0xO2pbZCsyPj4xXT0wO2lmKChrW2c+PjJdfDApIT0xKXtpZigoa1tnPj4yXXwwKT09ND8obFsoa1toPj4yXXwwKSsxNj4+MF18MHwwKTwzOjApYz0xM31lbHNlIGM9MTM7aWYoKGN8MCk9PTEzPyhqW2Q+PjFdPShrW2c+PjJdfDApPT0xPzA6MSxrW2QrND4+Ml09a1szODRdLChZTyhrW2g+PjJdfDAsZCl8MCkhPTApOjApe3A9TFEoKXwwO2tbZT4+Ml09a1twPj4yXTtwPUFPKGtbZT4+Ml18MCwzODUwKXwwO2tbbj4+Ml09cDtpZigoa1tuPj4yXXwwKT09NSlicmVhazt6TyhrW2g+PjJdfDAsa1tlPj4yXXwwKTticmVha31kbyBpZigoa1tnPj4yXXwwKSE9MSl7aWYoKGtbZz4+Ml18MCk9PTQ/KGtbKGtbbT4+Ml18MCkrOD4+Ml18MCk+MTowKXtrW24+PjJdPTU7YnJlYWt9altkPj4xXT0xO2I9a1szODRdfDA7aWYoKGtbZz4+Ml18MCk9PTIpe2tbZCs0Pj4yXT1iKzE7a1tkKzg+PjJdPTF9ZWxzZXtrW2QrND4+Ml09YisyO2tbZCs4Pj4yXT01MTB9aWYoKFlPKGtbaD4+Ml18MCxkKXwwKSE9MD8ocD1MUSgpfDAsa1tlPj4yXT1rW3A+PjJdLHA9QU8oa1tlPj4yXXwwLDM4NTApfDAsa1tuPj4yXT1wLChrW24+PjJdfDApIT01KTowKXpPKGtbaD4+Ml18MCxrW2U+PjJdfDApfWVsc2V7a1tkKzQ+PjJdPShrWzM4NF18MCkrMjtrW2QrOD4+Ml09NTEwO2lmKFlPKGtbaD4+Ml18MCxkKXwwKXtwPUxRKCl8MDtrW2U+PjJdPWtbcD4+Ml07cD1BTyhrW2U+PjJdfDAsMzg1MCl8MDtrW24+PjJdPXB9a1tkKzQ+PjJdPWtbMzg0XTtrW2QrOD4+Ml09MTtqW2Q+PjFdPTI7cD0oWU8oa1toPj4yXXwwLGQpfDApIT0wO2lmKHAmKGtbbj4+Ml18MCk9PTApe3A9TFEoKXwwO2tbZT4+Ml09a1twPj4yXTtrW24+PjJdPTIwNTh9aWYoIShrW24+PjJdfDApKXtpWyhrW2g+PjJdfDApKzE2Pj4wXT0xO3A9KGtbbT4+Ml18MCkrMjR8MDtrW3A+PjJdPShrW3A+PjJdfDApKzE7a1soa1ttPj4yXXwwKSs4Pj4yXT0xO2JyZWFrfWlmKChrW24+PjJdfDApPT01KWJyZWFrIGE7ek8oa1toPj4yXXwwLGtbZT4+Ml18MCk7YnJlYWsgYX13aGlsZSgwKTtiPWtbZz4+Ml18MDtpZighKGtbbj4+Ml18MCkpe2lbKGtbaD4+Ml18MCkrMTY+PjBdPWI7aVsoa1ttPj4yXXwwKSsxMj4+MF09a1tnPj4yXTticmVha31pZigoYnwwKT09NCl7aVsoa1toPj4yXXwwKSsxNj4+MF09MztpWyhrW20+PjJdfDApKzEyPj4wXT0zfX13aGlsZSgwKTtqTygpO2tbZj4+Ml09a1tuPj4yXTtwPWtbZj4+Ml18MDtyPW87cmV0dXJuIHB8MH1mdW5jdGlvbiBUTyhhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MDtjPXI7cj1yKzE2fDA7ZT1jKzR8MDtkPWM7a1tlPj4yXT1hO2tbZD4+Ml09YjthPVhPKGtbZT4+Ml18MCxrW2Q+PjJdfDAsMCl8MDtyPWM7cmV0dXJuIGF8MH1mdW5jdGlvbiBVTyhhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wLGg9MCxtPTAsbj0wO209cjtyPXIrNDh8MDtoPW07bj1tKzQwfDA7Yz1tKzM2fDA7Zj1tKzMyfDA7Zz1tKzI4fDA7ZT1tKzI0fDA7ZD1tKzh8MDtrW24+PjJdPWE7a1tjPj4yXT1iO2tbZj4+Ml09MDtrW2c+PjJdPTA7a1tlPj4yXT1rW24+PjJdO2hPKCk7aWYoKGxbKGtbKGtbZT4+Ml18MCkrOD4+Ml18MCkrMTI+PjBdfDApPjEpa1tnPj4yXT0xO2RvIGlmKChrW2c+PjJdfDApPT0wPyhpWyhrWyhrW2U+PjJdfDApKzg+PjJdfDApKzEzPj4wXXwwKT09MDowKXtqW2QrMj4+MV09MDtrW2QrND4+Ml09KGtbMzg0XXwwKSsxO2tbZCs4Pj4yXT0xO2pbZD4+MV09MTtiPWtbMTYzMV18MDtuPWtbKGtbZT4+Ml18MCkrMTI+PjJdfDA7a1toPj4yXT1kO2lmKFliW2ImMjU1XShuLDEyLGgpfDApe2tbZj4+Ml09MzU5NDtoPWtbZT4+Ml18MDtuPUxRKCl8MDt6TyhoLGtbbj4+Ml18MCk7YnJlYWt9aWYoKGpbZD4+MV18MCkhPTIpa1tnPj4yXT0xfXdoaWxlKDApO2pPKCk7a1trW2M+PjJdPj4yXT1rW2c+PjJdO3I9bTtyZXR1cm4ga1tmPj4yXXwwfWZ1bmN0aW9uIFZPKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGk9MCxuPTAsbz0wLHA9MCxxPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTAsRT0wLEY9MDtFPXI7cj1yKzE2MHwwO3o9RSsxNTJ8MDtGPUUrMTQ4fDA7QT1FKzE0NHwwO2Y9RSsxNDB8MDtnPUUrMTM2fDA7Qj1FKzEzMnwwO3U9RSsxMjh8MDt0PUUrMTI0fDA7Qz1FKzEyMHwwO0Q9RSsxMTZ8MDtzPUUrMTEyfDA7cT1FKzEwOHwwO2g9RSsxMDR8MDtvPUUrMTAwfDA7dz1FKzI0fDA7bj1FKzIwfDA7eD1FKzE2fDA7eT1FKzEyfDA7cD1FKzh8MDtpPUUrNHwwO3Y9RTtrW0Y+PjJdPWE7a1tBPj4yXT1iO2tbZj4+Ml09YztrW2c+PjJdPWQ7a1tCPj4yXT1lO2tbdT4+Ml09a1tGPj4yXTtrW0Q+PjJdPTA7Yz1rTygpfDA7a1tzPj4yXT1jO2lmKChrWyhrW3U+PjJdfDApKzM2Pj4yXXwwKT09MD8oRj1XTyhrW3U+PjJdfDApfDAsa1tEPj4yXT1GLChrW0Q+PjJdfDApIT0wKTowKXtrW3o+PjJdPWtbRD4+Ml07Rj1rW3o+PjJdfDA7cj1FO3JldHVybiBGfDB9a1t0Pj4yXT1rWyhrW3U+PjJdfDApKzM2Pj4yXTtrW0M+PjJdPWtba1t0Pj4yXT4+Ml07Rj1oYSgoKGtbQT4+Ml18MCkrKGtbcz4+Ml18MCl8MCkvKGtbcz4+Ml18MCl8MCxrW3M+PjJdfDApfDA7a1txPj4yXT1GO2E6ZG8gaWYoKG1bKGtbQz4+Ml18MCkrMjA+PjFdfDB8MCk8KGtbcT4+Ml18MCkpe0Y9aGEoa1txPj4yXXwwLGtbZj4+Ml18MCl8MDtrW28+PjJdPUY7a1soa1tDPj4yXXwwKSsxNj4+Ml09a1tmPj4yXTtiOmRvIGlmKChrWyhrW0M+PjJdfDApKzEyPj4yXXwwKT49MCl7aWYoZ2Nba1s2NTAwPj4yXSYyNTVdKGtbKGtbQz4+Ml18MCkrMTI+PjJdfDAsdyl8MCl7a1tEPj4yXT00ODc0O2JyZWFrIGF9aWYoKGtbdyszNj4+Ml18MCk8KGtbbz4+Ml18MCkpe2lmKCEoa1tnPj4yXXwwKSlicmVhayBhO2tbbj4+Ml09KGtbdyszNj4+Ml18MCkvNDA5NnwwO3doaWxlKDEpe2lmKChrW24+PjJdfDApPj0oKGtbbz4+Ml18MCkvNDA5NnwwfDApKWJyZWFrIGI7a1t4Pj4yXT0wO0Y9KGtbbj4+Ml08PDEyKSs0MDk2LTF8MDtpZigoeU8oa1soa1tDPj4yXXwwKSsxMj4+Ml18MCxGLCgoRnwwKTwwKTw8MzE+PjMxLDE4NDAyLDEseCl8MCkhPTEpYnJlYWs7a1tuPj4yXT0oa1tuPj4yXXwwKSsxfWtbeT4+Ml09a1soa1tDPj4yXXwwKSs4Pj4yXTtGPW1PKDQ4NzQsNDQxODYsa1t5Pj4yXXwwLDMzODM5KXwwO2tbRD4+Ml09RjticmVhayBhfX13aGlsZSgwKTtGPVZkKGtbKGtbQz4+Ml18MCkrMjQ+PjJdfDAsa1txPj4yXTw8Mil8MDtrW2g+PjJdPUY7aWYoIShrW2g+PjJdfDApKXtrW0Q+PjJdPTMwODI7YnJlYWt9a1soa1tDPj4yXXwwKSsyND4+Ml09a1toPj4yXTt3aGlsZSgxKXtpZigobVsoa1tDPj4yXXwwKSsyMD4+MV18MHwwKT49KGtbcT4+Ml18MCkpYnJlYWsgYTtGPWhhKGtbZj4+Ml18MCxrW3M+PjJdfDApfDA7a1twPj4yXT1GO2lmKChrWyhrW0M+PjJdfDApKzEyPj4yXXwwKT49MCl7dz1rWzE2NzZdfDA7Yz1rW3A+PjJdfDA7eD0obFsoa1tDPj4yXXwwKSsyMj4+MF18MHwwKSE9MD8xOjM7eT1rWyhrW0M+PjJdfDApKzEyPj4yXXwwO0Y9a1tmPj4yXXwwO0Y9a1MoRnwwLCgoRnwwKTwwKTw8MzE+PjMxfDAsbVsoa1tDPj4yXXwwKSsyMD4+MV18MHwwLDApfDA7Rj1hY1t3JjI1NV0oMCxjLHgsMSx5LEYpfDA7a1t2Pj4yXT1GO2lmKChrW3Y+PjJdfDApPT0oLTF8MCkpe2Y9MjE7YnJlYWt9fWVsc2V7Rj1rW2Y+PjJdfDA7Rj1UZChGLCgoRnwwKTwwKTw8MzE+PjMxKXwwO2tbdj4+Ml09RjtpZighKGtbdj4+Ml18MCkpe2Y9MjM7YnJlYWt9ZFMoa1t2Pj4yXXwwLDAsa1tmPj4yXXwwKXwwfWtbaT4+Ml09MDt3aGlsZSgxKXtpZigoa1tpPj4yXXwwKT49KGtbcz4+Ml18MCkpYnJlYWs7Rj1oYShrW2Y+PjJdfDAsa1tpPj4yXXwwKXwwO2tbKGtbKGtbQz4+Ml18MCkrMjQ+PjJdfDApKygobVsoa1tDPj4yXXwwKSsyMD4+MV18MCkrKGtbaT4+Ml18MCk8PDIpPj4yXT0oa1t2Pj4yXXwwKStGO2tbaT4+Ml09KGtbaT4+Ml18MCkrMX1GPShrW0M+PjJdfDApKzIwfDA7altGPj4xXT0obVtGPj4xXXwwKSsoa1tzPj4yXXwwKX1pZigoZnwwKT09MjEpe0Y9bU8oNTM4Niw0NDI3MyxrWyhrW0M+PjJdfDApKzg+PjJdfDAsMzM4NjYpfDA7a1tEPj4yXT1GO2JyZWFrfWVsc2UgaWYoKGZ8MCk9PTIzKXtrW0Q+PjJdPTc7YnJlYWt9fXdoaWxlKDApO2lmKChtWyhrW0M+PjJdfDApKzIwPj4xXXwwfDApPihrW0E+PjJdfDApKWtba1tCPj4yXT4+Ml09a1soa1soa1tDPj4yXXwwKSsyND4+Ml18MCkrKGtbQT4+Ml08PDIpPj4yXTtlbHNlIGtba1tCPj4yXT4+Ml09MDtpZigoa1tEPj4yXXwwKT09MD8obFsoa1tDPj4yXXwwKSsyMj4+MF18MHwwKSE9MDowKWtbRD4+Ml09ODtrW3o+PjJdPWtbRD4+Ml07Rj1rW3o+PjJdfDA7cj1FO3JldHVybiBGfDB9ZnVuY3Rpb24gV08oYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsbT0wLG49MCxvPTAscD0wLHE9MDtxPXI7cj1yKzEyOHwwO249cTtiPXErMTE2fDA7Yz1xKzExMnwwO2Y9cSsxMDh8MDtoPXErMTA0fDA7aj1xKzEwMHwwO2c9cSs5NnwwO3A9cSs5MnwwO2Q9cSs4OHwwO209cSsxMnwwO289cSs4fDA7ZT1xKzR8MDtrW2M+PjJdPWE7a1tmPj4yXT0wO2E9VGQoMTYsMCl8MDtrW2Y+PjJdPWE7aWYoIShrW2Y+PjJdfDApKXtrW2I+PjJdPTc7cD1rW2I+PjJdfDA7cj1xO3JldHVybiBwfDB9YT1rW2Y+PjJdfDA7a1thPj4yXT0wO2tbYSs0Pj4yXT0wO2tbYSs4Pj4yXT0wO2tbYSsxMj4+Ml09MDtoTygpO2tbZz4+Ml09a1soa1tjPj4yXXwwKSs4Pj4yXTtrW2g+PjJdPWtbKGtbZz4+Ml18MCkrMjA+PjJdO2E6ZG8gaWYoIShrW2g+PjJdfDApKXtrW28+PjJdPWtbKGtbYz4+Ml18MCkrMzI+PjJdO2RvIGlmKCEoZ2Nba1s2NTAwPj4yXSYyNTVdKGtbKGtbYz4+Ml18MCkrMTI+PjJdfDAsbSl8MCkpe2E9NisodVIoa1tvPj4yXXwwKXwwKXwwO2tbZD4+Ml09YTthPVRkKDM2KyhrW2Q+PjJdfDApfDAsMCl8MDtrW2g+PjJdPWE7aWYoIShrW2g+PjJdfDApKXtrW2o+PjJdPTc7YnJlYWt9ZFMoa1toPj4yXXwwLDAsMzYrKGtbZD4+Ml18MCl8MCl8MDthPShrW2g+PjJdfDApKzM2fDA7a1soa1toPj4yXXwwKSs4Pj4yXT1hO2tbcD4+Ml09YTtkPWtbZD4+Ml18MDthPWtbcD4+Ml18MDtrW24+PjJdPWtbbz4+Ml07X2QoZCxhLDQ0NTg2LG4pfDA7a1soa1toPj4yXXwwKSsxMj4+Ml09LTE7a1soa1soa1tjPj4yXXwwKSs4Pj4yXXwwKSsyMD4+Ml09a1toPj4yXTtrW2tbaD4+Ml0+PjJdPWtbKGtbYz4+Ml18MCkrOD4+Ml07aWYoKGtbM118MCkhPTA/KGtbKGtbaD4+Ml18MCkrND4+Ml09OCwoa1soa1toPj4yXXwwKSs0Pj4yXXwwKT09MCk6MCl7a1tqPj4yXT03O2JyZWFrfWlmKGxbKGtbZz4+Ml18MCkrMTM+PjBdfDApYnJlYWsgYTtrW2U+PjJdPTY2O2lmKFNmKGtbKGtbYz4+Ml18MCkrMzI+PjJdfDAsNDQ1OTMsMCl8MCl7a1tlPj4yXT0wO2lbKGtbaD4+Ml18MCkrMjI+PjBdPTF9bz1xTyhrW3A+PjJdfDAsa1tlPj4yXXwwLGtbbSsxMj4+Ml0mNTExKXwwO2tbKGtbaD4+Ml18MCkrMTI+PjJdPW87aWYoKGtbKGtbaD4+Ml18MCkrMTI+PjJdfDApPDApe289eXQoMzM2OTEpfDA7cD1tTyhvLDQ0MTI4LGtbcD4+Ml18MCwzMzY5MSl8MDtrW2o+PjJdPXA7YnJlYWt9Tk8oa1soa1toPj4yXXwwKSsxMj4+Ml18MCxrW20rMjA+PjJdfDAsa1ttKzI0Pj4yXXwwKXwwO2tbaj4+Ml09MDtpZigock8oa1tjPj4yXXwwLDEsMTI4LDEpfDApPT0wPyhDTyhrWyhrW2g+PjJdfDApKzEyPj4yXXwwLDAsMCl8MCkhPTA6MCl7cD1tTyg0NjE4LDQ0MTUxLGtbcD4+Ml18MCwzMzcwNyl8MDtrW2o+PjJdPXB9aWYoIShrW2o+PjJdfDApKXtwPXJPKGtbYz4+Ml18MCwwLDEyOCwxKXwwO2tbaj4+Ml09cH1pZighKGtbaj4+Ml18MCkpYnJlYWsgYX1lbHNlIGtbaj4+Ml09MTgwMjt3aGlsZSgwKTtpTyhrW2M+PjJdfDApO1VkKGtbZj4+Ml18MCk7ak8oKTtrW2I+PjJdPWtbaj4+Ml07cD1rW2I+PjJdfDA7cj1xO3JldHVybiBwfDB9d2hpbGUoMCk7a1trW2Y+PjJdPj4yXT1rW2g+PjJdO3A9KGtbaD4+Ml18MCkrMjh8MDtrW3A+PjJdPShrW3A+PjJdfDApKzE7a1soa1tjPj4yXXwwKSszNj4+Ml09a1tmPj4yXTtqTygpO2tbKGtbZj4+Ml18MCkrND4+Ml09a1soa1toPj4yXXwwKSszMj4+Ml07a1soa1toPj4yXXwwKSszMj4+Ml09a1tmPj4yXTtrW2I+PjJdPTA7cD1rW2I+PjJdfDA7cj1xO3JldHVybiBwfDB9ZnVuY3Rpb24gWE8oYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLG09MCxuPTAsbz0wLHA9MDtvPXI7cj1yKzQ4fDA7ZD1vKzQ0fDA7cD1vKzQwfDA7ZT1vKzM2fDA7Zz1vKzI4fDA7aD1vKzI0fDA7Zj1vKzh8MDttPW87a1twPj4yXT1hO2tbZT4+Ml09YjtrW28rMzI+PjJdPWM7a1tnPj4yXT1rW3A+PjJdO2tbbT4+Ml09MDtpZigobFsoa1tnPj4yXXwwKSsxNj4+MF18MHwwKTw9KGtbZT4+Ml18MCkpe2tbZD4+Ml09MDtwPWtbZD4+Ml18MDtyPW87cmV0dXJuIHB8MH1oTygpO2tbaD4+Ml09a1soa1tnPj4yXXwwKSs4Pj4yXTtkbyBpZigobFsoa1tnPj4yXXwwKSsxNj4+MF18MHwwKT4xKXtpZigoa1tlPj4yXXwwKT09MT8oaltmPj4xXT0wLGpbZisyPj4xXT0wLGtbZis0Pj4yXT0oa1szODRdfDApKzIsa1tmKzg+PjJdPTUxMCwoWU8oa1tnPj4yXXwwLGYpfDApIT0wKTowKXtrW20+PjJdPTIzMTQ7YT1rW2c+PjJdfDA7cD1MUSgpfDA7ek8oYSxrW3A+PjJdfDApO2JyZWFrfWpbZj4+MV09MjtqW2YrMj4+MV09MDtrW2YrND4+Ml09a1szODRdO2tbZis4Pj4yXT0yO2lmKCEoWU8oa1tnPj4yXXwwLGYpfDApKXtpWyhrW2g+PjJdfDApKzEyPj4wXT0xO249MTA7YnJlYWt9ZWxzZXtrW20+PjJdPTIwNTg7YT1rW2c+PjJdfDA7cD1MUSgpfDA7ek8oYSxrW3A+PjJdfDApO2JyZWFrfX1lbHNlIG49MTA7d2hpbGUoMCk7aWYoKG58MCk9PTEwPyhrW2U+PjJdfDApPT0wOjApe3A9KGtbaD4+Ml18MCkrOHwwO2tbcD4+Ml09KGtbcD4+Ml18MCkrLTE7ZG8gaWYoIShrWyhrW2g+PjJdfDApKzg+PjJdfDApKXtqW2Y+PjFdPTI7altmKzI+PjFdPTA7a1tmKzg+PjJdPTA7a1tmKzQ+PjJdPTA7aWYoIShZTyhrW2c+PjJdfDAsZil8MCkpe2lbKGtbaD4+Ml18MCkrMTI+PjBdPTA7YnJlYWt9ZWxzZXtrW20+PjJdPTIwNTg7bj1rW2c+PjJdfDA7cD1MUSgpfDA7ek8obixrW3A+PjJdfDApO2lbKGtbaD4+Ml18MCkrMTI+PjBdPTA7aVsoa1tnPj4yXXwwKSsxNj4+MF09MDticmVha319d2hpbGUoMCk7cD0oa1toPj4yXXwwKSsyNHwwO2tbcD4+Ml09KGtbcD4+Ml18MCkrLTE7aWYoIShrWyhrW2g+PjJdfDApKzI0Pj4yXXwwKSlaTyhrW2c+PjJdfDApfWpPKCk7aWYoIShrW20+PjJdfDApKWlbKGtbZz4+Ml18MCkrMTY+PjBdPWtbZT4+Ml07a1tkPj4yXT1rW20+PjJdO3A9a1tkPj4yXXwwO3I9bztyZXR1cm4gcHwwfWZ1bmN0aW9uIFlPKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wLG49MCxvPTAscD0wO3A9cjtyPXIrNjR8MDtvPXArOHwwO249cDtjPXArNDh8MDtkPXArNDR8MDtlPXArNDB8MDtoPXArMzZ8MDtnPXArMzJ8MDtmPXArMTZ8MDtrW2Q+PjJdPWE7a1tlPj4yXT1iO2tbZz4+Ml09a1soa1tkPj4yXXwwKSs4Pj4yXTtkbyBpZigoKG1bKGtbZD4+Ml18MCkrMTg+PjFdfDApJjN8MCk9PTEpe2lmKGxbKGtbZz4+Ml18MCkrMTM+PjBdfDApe2tbaD4+Ml09MDticmVha31qW2YrMj4+MV09MDtrW2YrND4+Ml09KGtbMzg0XXwwKSsyO2tbZis4Pj4yXT01MTA7altmPj4xXT0xO2I9a1sxNjMxXXwwO289a1soa1tkPj4yXXwwKSsxMj4+Ml18MDtrW24+PjJdPWY7bz1ZYltiJjI1NV0obywxMyxuKXwwO2tbaD4+Ml09bztpZigoa1toPj4yXXwwKT49MCl7aVsoa1tnPj4yXXwwKSsxMz4+MF09MTtvPShrW2c+PjJdfDApKzI0fDA7a1tvPj4yXT0oa1tvPj4yXXwwKSsxO2JyZWFrfWtbYz4+Ml09a1toPj4yXTtvPWtbYz4+Ml18MDtyPXA7cmV0dXJuIG98MH1lbHNle2I9a1sxNjMxXXwwO249a1soa1tkPj4yXXwwKSsxMj4+Ml18MDtrW28+PjJdPWtbZT4+Ml07bz1ZYltiJjI1NV0obiwxMyxvKXwwO2tbaD4+Ml09b313aGlsZSgwKTtrW2M+PjJdPWtbaD4+Ml07bz1rW2M+PjJdfDA7cj1wO3JldHVybiBvfDB9ZnVuY3Rpb24gWk8oYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wLGU9MCxmPTA7Zj1yO3I9cisxNnwwO2I9ZisxMnwwO2Q9Zis4fDA7Yz1mKzR8MDtlPWY7a1tiPj4yXT1hO2tbZD4+Ml09a1soa1tiPj4yXXwwKSs4Pj4yXTtrW2M+PjJdPWtbKGtbZD4+Ml18MCkrMjg+PjJdO3doaWxlKDEpe2lmKCEoa1tjPj4yXXwwKSlicmVhaztrW2U+PjJdPWtbKGtbYz4+Ml18MCkrOD4+Ml07bE8oa1tiPj4yXXwwLGtba1tjPj4yXT4+Ml18MCwzMDU5Mik7VWQoa1tjPj4yXXwwKTtrW2M+PjJdPWtbZT4+Ml19a1soa1tkPj4yXXwwKSsyOD4+Ml09MDtyPWY7cmV0dXJufWZ1bmN0aW9uIF9PKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MCxlPTA7Yj1yO3I9cisxNnwwO2M9Yis4fDA7ZD1iKzR8MDtlPWI7a1tjPj4yXT1hO2tbZD4+Ml09a1soa1tjPj4yXXwwKSs4Pj4yXTtrW2U+PjJdPWtbKGtbYz4+Ml18MCkrMjg+PjJdO2tbKGtbZT4+Ml18MCkrOD4+Ml09a1soa1tkPj4yXXwwKSsyOD4+Ml07a1soa1tkPj4yXXwwKSsyOD4+Ml09a1tlPj4yXTtrWyhrW2M+PjJdfDApKzEyPj4yXT0tMTtrWyhrW2M+PjJdfDApKzI4Pj4yXT0wO3I9YjtyZXR1cm59ZnVuY3Rpb24gJE8oYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wO2Q9cjtyPXIrMTZ8MDtiPWQrNHwwO2M9ZDtrW2I+PjJdPWE7a1tjPj4yXT1rWyhrW2I+PjJdfDApKzg+PjJdO2lmKCEoa1tjPj4yXXwwKSl7cj1kO3JldHVybn1hPShrW2M+PjJdfDApKzE2fDA7a1thPj4yXT0oa1thPj4yXXwwKSstMTtpZihrWyhrW2M+PjJdfDApKzE2Pj4yXXwwKXtyPWQ7cmV0dXJufVpPKGtbYj4+Ml18MCk7Yj1rWyhrW2M+PjJdfDApKzMyPj4yXXwwO2lmKGtbKGtbYz4+Ml18MCkrMzY+PjJdfDApa1soa1soa1tjPj4yXXwwKSszNj4+Ml18MCkrMzI+PjJdPWI7ZWxzZSBrWzE3MzhdPWI7aWYoa1soa1tjPj4yXXwwKSszMj4+Ml18MClrWyhrWyhrW2M+PjJdfDApKzMyPj4yXXwwKSszNj4+Ml09a1soa1tjPj4yXXwwKSszNj4+Ml07VWQoa1tjPj4yXXwwKTtyPWQ7cmV0dXJufWZ1bmN0aW9uIGFQKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaT0wLGo9MCxsPTA7aj1yO3I9cis5NnwwO2w9ais5MnwwO2U9ais4OHwwO2Y9ais4NHwwO2c9ais4MHwwO2k9ais0fDA7aD1qO2tbbD4+Ml09YTtrW2U+PjJdPWI7a1tmPj4yXT1jO2tbZz4+Ml09ZDtrW2g+PjJdPTA7aWYoIShnY1trWzY0ODg+PjJdJjI1NV0oa1tsPj4yXXwwLGkpfDApKXtrW2tbZT4+Ml0+PjJdPWtbaSsxMj4+Ml0mNTExO2tba1tmPj4yXT4+Ml09a1tpKzIwPj4yXTtrW2tbZz4+Ml0+PjJdPWtbaSsyND4+Ml07bD1rW2g+PjJdfDA7cj1qO3JldHVybiBsfDB9ZWxzZXtrW2g+PjJdPTE4MDI7bD1rW2g+PjJdfDA7cj1qO3JldHVybiBsfDB9cmV0dXJuIDB9ZnVuY3Rpb24gYlAoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wO2M9cjtyPXIrMTZ8MDtrW2MrND4+Ml09YTtrW2M+PjJdPWI7cj1jO3JldHVybiA2ODc2fWZ1bmN0aW9uIGNQKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MCxlPTA7ZD1yO3I9cisxNnwwO2I9ZDtjPWQrOHwwO2tbYz4+Ml09YTtpZigoa1trW2M+PjJdPj4yXXwwKTw9KGtbKGtbYz4+Ml18MCkrND4+Ml18MCkpe2M9YjtrW2M+PjJdPTA7a1tjKzQ+PjJdPTA7Yz1iO2E9YzthPWtbYT4+Ml18MDtjPWMrNHwwO2M9a1tjPj4yXXwwO0w9YztyPWQ7cmV0dXJuIGF8MH1lbHNle2U9KGtbYz4+Ml18MCkrNHwwO2E9a1tlPj4yXXwwO2tbZT4+Ml09YSsxO2E9bmUoa1soa1soa1tjPj4yXXwwKSs4Pj4yXXwwKSsoYTw8Mik+PjJdfDApfDA7Yz1iO2tbYz4+Ml09YTtrW2MrND4+Ml09TDtjPWI7YT1jO2E9a1thPj4yXXwwO2M9Yys0fDA7Yz1rW2M+PjJdfDA7TD1jO3I9ZDtyZXR1cm4gYXwwfXJldHVybiAwfWZ1bmN0aW9uIGRQKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MCxlPTAuMCxmPTA7ZD1yO3I9cisxNnwwO2I9ZDtjPWQrOHwwO2tbYz4+Ml09YTtpZigoa1trW2M+PjJdPj4yXXwwKTw9KGtbKGtbYz4+Ml18MCkrND4+Ml18MCkpe3BbYj4+M109MC4wO2U9K3BbYj4+M107cj1kO3JldHVybiArZX1lbHNle2Y9KGtbYz4+Ml18MCkrNHwwO2E9a1tmPj4yXXwwO2tbZj4+Ml09YSsxO2U9K2xlKGtbKGtbKGtbYz4+Ml18MCkrOD4+Ml18MCkrKGE8PDIpPj4yXXwwKTtwW2I+PjNdPWU7ZT0rcFtiPj4zXTtyPWQ7cmV0dXJuICtlfXJldHVybiAwLjB9ZnVuY3Rpb24gZVAoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTA7aD1yO3I9ciszMnwwO2M9aCsyMHwwO2Q9aCsxNnwwO2U9aCsxMnwwO2c9aCs4fDA7Zj1oO2tbZD4+Ml09YTtrW2U+PjJdPWI7aWYoKGtba1tlPj4yXT4+Ml18MCk8PTApe2lbYz4+MF09NDg7YT1pW2M+PjBdfDA7cj1oO3JldHVybiBhfDB9ZWxzZXthPWtbZT4+Ml18MDtrW2E+PjJdPShrW2E+PjJdfDApKy0xO2tbZz4+Ml09fn4rcFtrW2Q+PjJdPj4zXTtwW2Y+PjNdPSsoa1tnPj4yXXwwKTtrW2c+PjJdPShrW2c+PjJdfDApKzQ4O3Bba1tkPj4yXT4+M109KCtwW2tbZD4+Ml0+PjNdLStwW2Y+PjNdKSoxMC4wO2lbYz4+MF09a1tnPj4yXTthPWlbYz4+MF18MDtyPWg7cmV0dXJuIGF8MH1yZXR1cm4gMH1mdW5jdGlvbiBmUChhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTAsZT0wO2Q9cjtyPXIrMTZ8MDtiPWQrNHwwO2M9ZDtrW2M+PjJdPWE7aWYoKGtba1tjPj4yXT4+Ml18MCk8PShrWyhrW2M+PjJdfDApKzQ+PjJdfDApKXtrW2I+PjJdPTA7YT1rW2I+PjJdfDA7cj1kO3JldHVybiBhfDB9ZWxzZXtlPShrW2M+PjJdfDApKzR8MDthPWtbZT4+Ml18MDtrW2U+PjJdPWErMTthPWplKGtbKGtbKGtbYz4+Ml18MCkrOD4+Ml18MCkrKGE8PDIpPj4yXXwwKXwwO2tbYj4+Ml09YTthPWtbYj4+Ml18MDtyPWQ7cmV0dXJuIGF8MH1yZXR1cm4gMH1mdW5jdGlvbiBnUChhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MDtnPXI7cj1yKzE2fDA7ZD1nKzR8MDtlPWc7Zj1nKzh8MDtrW2Q+PjJdPWE7a1tlPj4yXT1iO2lbZj4+MF09YzthPWtbZT4+Ml18MDthPSRSKGtbKGtbZD4+Ml18MCkrMTI+PjJdfDAsMCxhfDAsKChhfDApPDApPDwzMT4+MzF8MCl8MDtjPUw7aWYoKGN8MCk+MHwoKGN8MCk9PTA/YT4+PjA+PShrWyhrW2Q+PjJdfDApKzE2Pj4yXXwwKT4+PjA6MCk/KGE9RkEoa1tkPj4yXXwwLGtbZT4+Ml18MCl8MCxrW2U+PjJdPWEsKGF8MCk8PTApOjApe3I9ZztyZXR1cm59d2hpbGUoMSl7YT1rW2U+PjJdfDA7a1tlPj4yXT1hKy0xO2lmKChhfDApPD0wKWJyZWFrO2M9aVtmPj4wXXwwO2I9KGtbZD4+Ml18MCkrMTJ8MDthPWtbYj4+Ml18MDtrW2I+PjJdPWErMTtpWyhrWyhrW2Q+PjJdfDApKzg+PjJdfDApK2E+PjBdPWN9cj1nO3JldHVybn1mdW5jdGlvbiBoUChhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTA7Yz1yO3I9cisxNnwwO2I9YztrW2I+PjJdPWE7YT0yOTY7ZD1rW2ErND4+Ml18MDtpZigoZHwwKTwwfChkfDApPT0wJihrW2E+PjJdfDApPj4+MDw9MCl7cj1jO3JldHVybn1QZChrW2I+PjJdfDApfDA7cj1jO3JldHVybn1mdW5jdGlvbiBpUChhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wLGg9MDtnPXI7cj1yKzMyfDA7aD1nKzIwfDA7Yz1nKzE2fDA7ZD1nKzEyfDA7Zj1nKzh8MDtlPWc7a1toPj4yXT1hO2tbYz4+Ml09YjtiPWJjW2tbNjQ+PjJdJjI1NV0oa1toPj4yXXwwKXwwO2tbZD4+Ml09YjskaSg1LGtbaD4+Ml18MCk7Yj0yOTY7YT1rW2IrND4+Ml18MDtkbyBpZigoYXwwKT4wfChhfDApPT0wJihrW2I+PjJdfDApPj4+MD4wKXtiPWlnKDApfDA7YT1lO2tbYT4+Ml09YjtrW2ErND4+Ml09TDthPWU7Yj1rW2E+PjJdfDA7YT1rW2ErND4+Ml18MDtlPTI5NjtoPWtbZD4+Ml18MDtoPV9SKGtbZT4+Ml18MCxrW2UrND4+Ml18MCxofDAsKChofDApPDApPDwzMT4+MzF8MCl8MDtlPUw7aWYoKGF8MCk+KGV8MCl8KGF8MCk9PShlfDApJmI+Pj4wPj1oPj4+MCl7a1s3OV09MTtoUChrW2Q+PjJdfDApO2JyZWFrfWVsc2V7a1s3OV09MDticmVha319d2hpbGUoMCk7aD1iY1trWzQ4Pj4yXSYyNTVdKGtbZD4+Ml18MCl8MDtrW2Y+PjJdPWg7aWYoIShrW2Y+PjJdfDApKXtiPWtbZj4+Ml18MDtoPWtbYz4+Ml18MDtrW2g+PjJdPWI7aD1rW2Q+PjJdfDA7cj1nO3JldHVybiBofDB9Yj1rZyhrW2Y+PjJdfDApfDA7a1tkPj4yXT1iO2FqKDAsa1tkPj4yXXwwKTthaig5LDEpO2I9a1tmPj4yXXwwO2g9a1tjPj4yXXwwO2tbaD4+Ml09YjtoPWtbZD4+Ml18MDtyPWc7cmV0dXJuIGh8MH1mdW5jdGlvbiBqUCgpe2xQKDg3ODAsMyk7cmV0dXJufWZ1bmN0aW9uIGtQKCl7bFAoODU1Niw4KTtyZXR1cm59ZnVuY3Rpb24gbFAoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTAsaT0wLGo9MDtqPXI7cj1yKzMyfDA7Yz1qKzI0fDA7ZD1qKzIwfDA7Zj1qKzE2fDA7aD1qKzEyfDA7aT1qKzh8MDtnPWorNHwwO2U9ajtrW2M+PjJdPWE7a1tkPj4yXT1iO2tbZj4+Ml09MDt3aGlsZSgxKXtpZigoa1tmPj4yXXwwKT49KGtbZD4+Ml18MCkpYnJlYWs7a1tpPj4yXT1rWyhrW2M+PjJdfDApKygoa1tmPj4yXXwwKSoyOHwwKSsyMD4+Ml07Yj1UZihrW2k+PjJdfDApfDA7a1tnPj4yXT1iO2tbZT4+Ml09KChsWzE3NjEzKyhsW2tbaT4+Ml0+PjBdfDApPj4wXXwwKSsoa1tnPj4yXXwwKXwwKSUyM3wwO2I9cnUoa1tlPj4yXXwwLGtbaT4+Ml18MCl8MDtrW2g+PjJdPWI7aWYoa1toPj4yXXwwKXtrWyhrW2M+PjJdfDApKygoa1tmPj4yXXwwKSoyOHwwKSs4Pj4yXT1rWyhrW2g+PjJdfDApKzg+PjJdO2tbKGtbaD4+Ml18MCkrOD4+Ml09KGtbYz4+Ml18MCkrKChrW2Y+PjJdfDApKjI4fDApfWVsc2V7a1soa1tjPj4yXXwwKSsoKGtbZj4+Ml18MCkqMjh8MCkrOD4+Ml09MDtrWyhrW2M+PjJdfDApKygoa1tmPj4yXXwwKSoyOHwwKSsyND4+Ml09a1sxMDkyKyhrW2U+PjJdPDwyKT4+Ml07a1sxMDkyKyhrW2U+PjJdPDwyKT4+Ml09KGtbYz4+Ml18MCkrKChrW2Y+PjJdfDApKjI4fDApfWtbZj4+Ml09KGtbZj4+Ml18MCkrMX1yPWo7cmV0dXJufWZ1bmN0aW9uIG1QKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wO2Y9cjtyPXIrMTZ8MDtkPWYrMTJ8MDtnPWYrNHwwO2U9ZjtrW2Q+PjJdPWE7a1tmKzg+PjJdPWI7a1tnPj4yXT1jO2E9amUoa1trW2c+PjJdPj4yXXwwKXwwO2tbZT4+Ml09YTtpZighYSl7cj1mO3JldHVybn1nPWtbZD4+Ml18MDt0ZShnLElkKGtbZT4+Ml18MCl8MCk7cj1mO3JldHVybn1mdW5jdGlvbiBuUChhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MDtkPXI7cj1yKzE2fDA7Zj1kKzEyfDA7Zz1kKzR8MDtlPWQ7a1tmPj4yXT1hO2tbZCs4Pj4yXT1iO2tbZz4+Ml09YzthPW1lKGtba1tnPj4yXT4+Ml18MCl8MDtrW2U+PjJdPWE7YT1rW2Y+PjJdfDA7d2UoYSxLZChrW2U+PjJdfDApfDAsLTEsMCk7cj1kO3JldHVybn1mdW5jdGlvbiBvUChhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTA7ZD1yO3I9cisxNnwwO2U9ZCs4fDA7a1tlPj4yXT1hO2tbZCs0Pj4yXT1iO2tbZD4+Ml09YzthPWtbZT4+Ml18MDt3ZShhLHRmKCl8MCwtMSwwKTtyPWQ7cmV0dXJufWZ1bmN0aW9uIHBQKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsbT0wLG49MCxvPTAscD0wLHE9MCxzPTAsdD0wLHU9MCx2PTA7dj1yO3I9cis2NHwwO2Q9dis1MnwwO2U9dis0OHwwO2Y9dis0NHwwO3U9dis0MHwwO3Q9diszNnwwO3E9diszMnwwO2o9disyOHwwO209disyNHwwO2c9disyMHwwO2g9disxNnwwO3A9disxMnwwO3M9dis4fDA7bj12KzR8MDtvPXY7a1tkPj4yXT1hO2tbZT4+Ml09YjtrW2Y+PjJdPWM7a1tnPj4yXT0wO2tbaD4+Ml09MDtpZigob2Uoa1trW2Y+PjJdPj4yXXwwKXwwKT09NSl7cj12O3JldHVybn1hPWplKGtba1tmPj4yXT4+Ml18MCl8MDtrW3U+PjJdPWE7aWYoIShrW3U+PjJdfDApKXtyPXY7cmV0dXJufWE9a2Uoa1trW2Y+PjJdPj4yXXwwKXwwO2tbcT4+Ml09YTthOmRvIGlmKChrW2U+PjJdfDApIT0xKXthPWplKGtbKGtbZj4+Ml18MCkrND4+Ml18MCl8MDtrW3Q+PjJdPWE7aWYoIWEpe3I9djtyZXR1cm59a1tzPj4yXT1rW3Q+PjJdO2tbcD4+Ml09MDt3aGlsZSgxKXtpZighKGlba1tzPj4yXT4+MF18MCkpYnJlYWs7YT1rW3M+PjJdfDA7a1tzPj4yXT1hKzE7YjpkbyBpZigobFthPj4wXXwwKT49MTkyKXdoaWxlKDEpe2lmKChsW2tbcz4+Ml0+PjBdJjE5MnwwKSE9MTI4KWJyZWFrIGI7a1tzPj4yXT0oa1tzPj4yXXwwKSsxfXdoaWxlKDApO2tbcD4+Ml09KGtbcD4+Ml18MCkrMX1pZigoa1twPj4yXXwwKT4wKXtjPWtbZD4+Ml18MDthPWtbcD4+Ml18MDthPWtTKGF8MCwoKGF8MCk8MCk8PDMxPj4zMXwwLDUsMCl8MDthPVlQKGMsYSxMKXwwO2tbaD4+Ml09YTtpZighKGtbaD4+Ml18MCkpe3I9djtyZXR1cm59a1tnPj4yXT0oa1toPj4yXXwwKSsoa1twPj4yXTw8Mik7a1tzPj4yXT1rW3Q+PjJdO2tbcD4+Ml09MDt3aGlsZSgxKXtpZighKGlba1tzPj4yXT4+MF18MCkpYnJlYWsgYTtrWyhrW2g+PjJdfDApKyhrW3A+PjJdPDwyKT4+Ml09a1tzPj4yXTthPWtbcz4+Ml18MDtrW3M+PjJdPWErMTtjOmRvIGlmKChsW2E+PjBdfDApPj0xOTIpd2hpbGUoMSl7aWYoKGxba1tzPj4yXT4+MF0mMTkyfDApIT0xMjgpYnJlYWsgYztrW3M+PjJdPShrW3M+PjJdfDApKzF9d2hpbGUoMCk7aVsoa1tnPj4yXXwwKSsoa1twPj4yXXwwKT4+MF09KGtbcz4+Ml18MCktKGtbKGtbaD4+Ml18MCkrKGtbcD4+Ml08PDIpPj4yXXwwKTtrW3A+PjJdPShrW3A+PjJdfDApKzF9fX1lbHNle2tbcD4+Ml09MTtrW2c+PjJdPTQ1MjIwO2tbaD4+Ml09ODU1MjtrW3Q+PjJdPTB9d2hpbGUoMCk7aWYoKGtbcD4+Ml18MCk+MCl7cz1FZShrW2Q+PjJdfDApfDA7a1tqPj4yXT1zO2Q6ZG8gaWYoKGtbaj4+Ml0mMXwwKSE9MCYoa1txPj4yXXwwKT4wKWRve2tbbj4+Ml09MDtrW20+PjJdPTA7d2hpbGUoMSl7aWYoKGtbbT4+Ml18MCk+PShrW3A+PjJdfDApKWJyZWFrO2tbbj4+Ml09bFsoa1tnPj4yXXwwKSsoa1ttPj4yXXwwKT4+MF07aWYoKGtbbj4+Ml18MCk8PShrW3E+PjJdfDApPyhvUihrW3U+PjJdfDAsa1soa1toPj4yXXwwKSsoa1ttPj4yXTw8Mik+PjJdfDAsa1tuPj4yXXwwKXwwKT09MDowKWJyZWFrO2tbbT4+Ml09KGtbbT4+Ml18MCkrMX1pZigoa1ttPj4yXXwwKT49KGtbcD4+Ml18MCkpYnJlYWsgZDtrW3U+PjJdPShrW3U+PjJdfDApKyhrW24+PjJdfDApO2tbcT4+Ml09KGtbcT4+Ml18MCktKGtbbj4+Ml18MCl9d2hpbGUoKGtbcT4+Ml18MCk+MCk7d2hpbGUoMCk7ZTpkbyBpZigoa1tqPj4yXSYyfDApIT0wJihrW3E+PjJdfDApPjApZG97a1tvPj4yXT0wO2tbbT4+Ml09MDt3aGlsZSgxKXtpZigoa1ttPj4yXXwwKT49KGtbcD4+Ml18MCkpYnJlYWs7a1tvPj4yXT1sWyhrW2c+PjJdfDApKyhrW20+PjJdfDApPj4wXTtpZigoa1tvPj4yXXwwKTw9KGtbcT4+Ml18MCk/KG9SKChrW3U+PjJdfDApKygoa1txPj4yXXwwKS0oa1tvPj4yXXwwKSl8MCxrWyhrW2g+PjJdfDApKyhrW20+PjJdPDwyKT4+Ml18MCxrW28+PjJdfDApfDApPT0wOjApYnJlYWs7a1ttPj4yXT0oa1ttPj4yXXwwKSsxfWlmKChrW20+PjJdfDApPj0oa1twPj4yXXwwKSlicmVhayBlO2tbcT4+Ml09KGtbcT4+Ml18MCktKGtbbz4+Ml18MCl9d2hpbGUoKGtbcT4+Ml18MCk+MCk7d2hpbGUoMCk7aWYoa1t0Pj4yXXwwKVVkKGtbaD4+Ml18MCl9d2Uoa1tkPj4yXXwwLGtbdT4+Ml18MCxrW3E+PjJdfDAsLTEpO3I9djtyZXR1cm59ZnVuY3Rpb24gcVAoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGk9MCxqPTAsbD0wLG09MDttPXI7cj1yKzMyfDA7ZD1tKzI0fDA7ZT1tKzIwfDA7Zj1tKzE2fDA7Zz1tKzEyfDA7aT1tKzh8MDtoPW0rNHwwO2o9bTtrW2Q+PjJdPWE7a1tlPj4yXT1iO2tbZj4+Ml09YzthPShFZShrW2Q+PjJdfDApfDApPT0wO2tbaT4+Ml09YT8wOi0xO2E9WlAoa1tkPj4yXXwwKXwwO2tbaj4+Ml09YTtrW2g+PjJdPTA7aWYoKG9lKGtba1tmPj4yXT4+Ml18MCl8MCk9PTUpe3I9bTtyZXR1cm59a1tnPj4yXT0xO3doaWxlKDEpe2lmKChrW2c+PjJdfDApPj0oa1tlPj4yXXwwKSlicmVhaztpZigob2Uoa1soa1tmPj4yXXwwKSsoa1tnPj4yXTw8Mik+PjJdfDApfDApPT01KXtsPTk7YnJlYWt9YT1XSShrWyhrW2Y+PjJdfDApKyhrW2g+PjJdPDwyKT4+Ml18MCxrWyhrW2Y+PjJdfDApKyhrW2c+PjJdPDwyKT4+Ml18MCxrW2o+PjJdfDApfDA7aWYoKGFea1tpPj4yXXwwKT49MClrW2g+PjJdPWtbZz4+Ml07a1tnPj4yXT0oa1tnPj4yXXwwKSsxfWlmKChsfDApPT05KXtyPW07cmV0dXJufXllKGtbZD4+Ml18MCxrWyhrW2Y+PjJdfDApKyhrW2g+PjJdPDwyKT4+Ml18MCk7cj1tO3JldHVybn1mdW5jdGlvbiByUChhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaT0wLGw9MCxtPTA7bT1yO3I9ciszMnwwO2U9bSsyOHwwO2Q9bSsyMHwwO2g9bSsxNnwwO2k9bSsxMnwwO2c9bSs4fDA7Zj1tKzR8MDtsPW07a1tlPj4yXT1hO2tbbSsyND4+Ml09YjtrW2Q+PjJdPWM7a1toPj4yXT1rW2tbZD4+Ml0+PjJdO2E9R2Uoa1tlPj4yXXwwLDQwKXwwO2tbaT4+Ml09YTtpZighKGtbaT4+Ml18MCkpe3I9bTtyZXR1cm59YT0ob2Uoa1trW2Q+PjJdPj4yXXwwKXwwKT09NTtkPShqWyhrW2k+PjJdfDApKzg+PjFdfDApIT0wO2lmKGEpe2lmKCFkKXtyPW07cmV0dXJufV9QKGtbZT4+Ml18MCk7cj1tO3JldHVybn1iPWtbZT4+Ml18MDtpZighZCl7bD1GZShiKXwwO2tbKGtbaT4+Ml18MCkrMzI+PjJdPWw7dGgoa1tpPj4yXXwwLGtbaD4+Ml18MCl8MDtyPW07cmV0dXJufWE9WlAoYil8MDtrW2w+PjJdPWE7YT0oRWUoa1tlPj4yXXwwKXwwKSE9MCYxO2tbZz4+Ml09YTtsPVdJKGtbaT4+Ml18MCxrW2g+PjJdfDAsa1tsPj4yXXwwKXwwO2tbZj4+Ml09bDtpZighKChrW2c+PjJdfDApIT0wJihrW2Y+PjJdfDApPDApPyEoKGtbZz4+Ml18MCk9PTAmKGtbZj4+Ml18MCk+MCk6MCl7X1Aoa1tlPj4yXXwwKTtyPW07cmV0dXJufXRoKGtbaT4+Ml18MCxrW2g+PjJdfDApfDA7cj1tO3JldHVybn1mdW5jdGlvbiBzUChhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTA7ZD1yO3I9cisxNnwwO2I9ZCs0fDA7Yz1kO2tbYj4+Ml09YTthPUdlKGtbYj4+Ml18MCwwKXwwO2tbYz4+Ml09YTtpZighKGtbYz4+Ml18MCkpe3I9ZDtyZXR1cm59aWYoalsoa1tjPj4yXXwwKSs4Pj4xXXwwKXllKGtbYj4+Ml18MCxrW2M+PjJdfDApO2ZoKGtbYz4+Ml18MCk7cj1kO3JldHVybn1mdW5jdGlvbiB0UChhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MDtmPXI7cj1yKzE2fDA7ZD1mKzEyfDA7Zz1mKzR8MDtlPWY7a1tkPj4yXT1hO2tbZis4Pj4yXT1iO2tbZz4+Ml09YztrW2U+PjJdPTA7c3dpdGNoKG9lKGtba1tnPj4yXT4+Ml18MCl8MCl7Y2FzZSAxOntrW2U+PjJdPTM5NzEwO2JyZWFrfWNhc2UgMzp7a1tlPj4yXT00NTIxMDticmVha31jYXNlIDI6e2tbZT4+Ml09Mzk3MDU7YnJlYWt9Y2FzZSA0OntrW2U+PjJdPTQ1MjE1O2JyZWFrfWRlZmF1bHQ6a1tlPj4yXT0zOTcxOH13ZShrW2Q+PjJdfDAsa1tlPj4yXXwwLC0xLDApO3I9ZjtyZXR1cm59ZnVuY3Rpb24gdVAoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wO2g9cjtyPXIrMzJ8MDtkPWgrMTZ8MDtlPWgrOHwwO2Y9aCs0fDA7Zz1oO2tbZD4+Ml09YTtrW2grMTI+PjJdPWI7a1tlPj4yXT1jO3N3aXRjaChvZShrW2tbZT4+Ml0+PjJdfDApfDApe2Nhc2UgMjpjYXNlIDE6Y2FzZSA0Ont0ZShrW2Q+PjJdfDAsa2Uoa1trW2U+PjJdPj4yXXwwKXwwKTtyPWg7cmV0dXJufWNhc2UgMzp7YT1qZShrW2tbZT4+Ml0+PjJdfDApfDA7a1tnPj4yXT1hO2lmKCEoa1tnPj4yXXwwKSl7cj1oO3JldHVybn1rW2Y+PjJdPTA7YTp3aGlsZSgxKXtpZighKGlba1tnPj4yXT4+MF18MCkpYnJlYWs7a1tmPj4yXT0oa1tmPj4yXXwwKSsxO2E9a1tnPj4yXXwwO2tbZz4+Ml09YSsxO2lmKChsW2E+PjBdfDApPDE5Miljb250aW51ZTt3aGlsZSgxKXtpZigobFtrW2c+PjJdPj4wXSYxOTJ8MCkhPTEyOCljb250aW51ZSBhO2tbZz4+Ml09KGtbZz4+Ml18MCkrMX19dGUoa1tkPj4yXXwwLGtbZj4+Ml18MCk7cj1oO3JldHVybn1kZWZhdWx0Ont2ZShrW2Q+PjJdfDApO3I9aDtyZXR1cm59fX1mdW5jdGlvbiB2UChhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaT0wLGo9MCxtPTAsbj0wLG89MCxwPTA7cD1yO3I9cis0OHwwO2Q9cCs0MHwwO2U9cCszMnwwO249cCsyOHwwO289cCsyNHwwO2g9cCsyMHwwO2k9cCsxNnwwO2o9cCsxMnwwO209cCs4fDA7Zj1wKzR8MDtnPXA7a1tkPj4yXT1hO2tbcCszNj4+Ml09YjtrW2U+PjJdPWM7a1tmPj4yXT0xO2E9b2Uoa1trW2U+PjJdPj4yXXwwKXwwO2tbaj4+Ml09YTthPW9lKGtbKGtbZT4+Ml18MCkrND4+Ml18MCl8MDtrW20+PjJdPWE7aWYoKGtbaj4+Ml18MCk9PTV8KGtbbT4+Ml18MCk9PTUpe3I9cDtyZXR1cm59Yj1rZShrW2tbZT4+Ml0+PjJdfDApfDA7a1toPj4yXT1iO2I9a2Uoa1soa1tlPj4yXXwwKSs0Pj4yXXwwKXwwO2tbaT4+Ml09YjtiPWtba1tlPj4yXT4+Ml18MDtpZigoa1tqPj4yXXwwKT09NCYoa1ttPj4yXXwwKT09NCl7bT1pZShiKXwwO2tbbj4+Ml09bTttPWllKGtbKGtbZT4+Ml18MCkrND4+Ml18MCl8MDtrW28+PjJdPW07a1tnPj4yXT0wfWVsc2V7bT1qZShiKXwwO2tbbj4+Ml09bTttPWplKGtbKGtbZT4+Ml18MCkrND4+Ml18MCl8MDtrW28+PjJdPW07a1tnPj4yXT0xfWE6d2hpbGUoMSl7aWYoKGtbaT4+Ml18MCk+KGtbaD4+Ml18MCkpYnJlYWs7aWYoIShvUihrW24+PjJdfDAsa1tvPj4yXXwwLGtbaT4+Ml18MCl8MCkpYnJlYWs7a1tmPj4yXT0oa1tmPj4yXXwwKSsxO3doaWxlKDEpe2tbaD4+Ml09KGtbaD4+Ml18MCkrLTE7a1tuPj4yXT0oa1tuPj4yXXwwKSsxO2lmKCEoa1tnPj4yXXwwKSljb250aW51ZSBhO2lmKCgobFtrW24+PjJdPj4wXXwwKSYxOTJ8MCkhPTEyOCljb250aW51ZSBhfX1pZigoa1tpPj4yXXwwKT4oa1toPj4yXXwwKSlrW2Y+PjJdPTA7dGUoa1tkPj4yXXwwLGtbZj4+Ml18MCk7cj1wO3JldHVybn1mdW5jdGlvbiB3UChhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLGw9MCxtPTAsbj0wLG89MDtvPXI7cj1yKzgwfDA7bD1vO2Q9bys2NHwwO2U9bys2MHwwO2Y9bys1NnwwO209bys0NHwwO2o9bysxNnwwO249bysxMnwwO2g9bys4fDA7Zz1vKzR8MDtrW2Q+PjJdPWE7a1tlPj4yXT1iO2tbZj4+Ml09YzthPUZlKGtbZD4+Ml18MCl8MDtrW2c+PjJdPWE7aWYoKGtbZT4+Ml18MCk8MSl7cj1vO3JldHVybn1hPWplKGtba1tmPj4yXT4+Ml18MCl8MDtrW24+PjJdPWE7aWYoIWEpe3I9bztyZXR1cm59a1ttPj4yXT0oa1tlPj4yXXwwKS0xO2tbbSs0Pj4yXT0wO2tbbSs4Pj4yXT0oa1tmPj4yXXwwKSs0O25nKGosa1tnPj4yXXwwLDAsMCxrWyhrW2c+PjJdfDApKzk2Pj4yXXwwKTtpW2orMjU+PjBdPTI7bj1rW24+PjJdfDA7a1tsPj4yXT1tO0JBKGosbixsKTtrW2g+PjJdPWtbaisxMj4+Ml07bT1rW2Q+PjJdfDA7bj1wZyhqKXwwO3dlKG0sbixrW2g+PjJdfDAsMTcwKTtyPW87cmV0dXJufWZ1bmN0aW9uIHhQKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wO2Y9cjtyPXIrMTZ8MDtkPWYrMTJ8MDtnPWYrNHwwO2U9ZjtrW2Q+PjJdPWE7a1tmKzg+PjJdPWI7a1tnPj4yXT1jO2E9amUoa1trW2c+PjJdPj4yXXwwKXwwO2tbZT4+Ml09YTtpZighKGtbZT4+Ml18MCkpe3I9ZjtyZXR1cm59aWYoIShsW2tbZT4+Ml0+PjBdfDApKXtyPWY7cmV0dXJufWc9a1tkPj4yXXwwO3RlKGcsVEMoZSl8MCk7cj1mO3JldHVybn1mdW5jdGlvbiB5UChhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLGw9MCxtPTAsbj0wLG89MDtuPXI7cj1yKzQ4fDA7ZD1uKzMyfDA7ZT1uKzI4fDA7Zj1uKzI0fDA7bD1uKzIwfDA7bT1uKzE2fDA7aD1uKzEyfDA7aj1uO2c9bis4fDA7a1tkPj4yXT1hO2tbZT4+Ml09YjtrW2Y+PjJdPWM7YT0oa1tlPj4yXTw8MikrMXwwO2E9VGQoYSwoKGF8MCk8MCk8PDMxPj4zMSl8MDtrW2w+PjJdPWE7a1ttPj4yXT1hO2lmKCEoa1tsPj4yXXwwKSl7Q2Uoa1tkPj4yXXwwKTtyPW47cmV0dXJufWtbaD4+Ml09MDt3aGlsZSgxKXtpZigoa1toPj4yXXwwKT49KGtbZT4+Ml18MCkpYnJlYWs7bz1uZShrWyhrW2Y+PjJdfDApKyhrW2g+PjJdPDwyKT4+Ml18MCl8MDthPUw7Yz1qO2tbYz4+Ml09bztrW2MrND4+Ml09YTtjPWo7Yj1rW2MrND4+Ml18MDtjPShrW2orND4+Ml18MCk8MHwoKGJ8MCk+MHwoYnwwKT09MCYoa1tjPj4yXXwwKT4+PjA+MTExNDExMSk7Yj1qO2tbYj4+Ml09Yz82NTUzMzpvO2tbYis0Pj4yXT1jPzA6YTtrW2c+PjJdPWtbaj4+Ml0mMjA5NzE1MTtiPWtbZz4+Ml18MDtkbyBpZigoa1tnPj4yXXwwKT4+PjA+PTEyOCl7Yz1rW2c+PjJdfDA7aWYoYj4+PjA8MjA0OCl7YT1rW20+PjJdfDA7a1ttPj4yXT1hKzE7aVthPj4wXT0xOTIrKGM+Pj42JjMxKTthPTEyOCsoa1tnPj4yXSY2MykmMjU1O289a1ttPj4yXXwwO2tbbT4+Ml09bysxO2lbbz4+MF09YTticmVha31iPWtbZz4+Ml18MDtpZihjPj4+MDw2NTUzNil7bz1rW20+PjJdfDA7a1ttPj4yXT1vKzE7aVtvPj4wXT0yMjQrKGI+Pj4xMiYxNSk7bz0xMjgrKChrW2c+PjJdfDApPj4+NiY2MykmMjU1O2E9a1ttPj4yXXwwO2tbbT4+Ml09YSsxO2lbYT4+MF09bzthPTEyOCsoa1tnPj4yXSY2MykmMjU1O289a1ttPj4yXXwwO2tbbT4+Ml09bysxO2lbbz4+MF09YTticmVha31lbHNle2E9a1ttPj4yXXwwO2tbbT4+Ml09YSsxO2lbYT4+MF09MjQwKyhiPj4+MTgmNyk7YT0xMjgrKChrW2c+PjJdfDApPj4+MTImNjMpJjI1NTtvPWtbbT4+Ml18MDtrW20+PjJdPW8rMTtpW28+PjBdPWE7bz0xMjgrKChrW2c+PjJdfDApPj4+NiY2MykmMjU1O2E9a1ttPj4yXXwwO2tbbT4+Ml09YSsxO2lbYT4+MF09bzthPTEyOCsoa1tnPj4yXSY2MykmMjU1O289a1ttPj4yXXwwO2tbbT4+Ml09bysxO2lbbz4+MF09YTticmVha319ZWxzZXtvPWtbbT4+Ml18MDtrW20+PjJdPW8rMTtpW28+PjBdPWJ9d2hpbGUoMCk7a1toPj4yXT0oa1toPj4yXXwwKSsxfW89KGtbbT4+Ml18MCktKGtbbD4+Ml18MCl8MDt4ZShrW2Q+PjJdfDAsa1tsPj4yXXwwLG8sKChvfDApPDApPDwzMT4+MzEsMTQ4LDEpO3I9bjtyZXR1cm59ZnVuY3Rpb24gelAoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGk9MC4wO2g9cjtyPXIrMzJ8MDtkPWgrMjR8MDtlPWgrMTZ8MDtmPWgrOHwwO2c9aDtrW2Q+PjJdPWE7a1toKzIwPj4yXT1iO2tbZT4+Ml09Yztzd2l0Y2gob2Uoa1trW2U+PjJdPj4yXXwwKXwwKXtjYXNlIDE6e2E9bmUoa1trW2U+PjJdPj4yXXwwKXwwO2c9ZjtrW2c+PjJdPWE7a1tnKzQ+PjJdPUw7ZG8gaWYoKGtbZis0Pj4yXXwwKTwwKXtnPWY7aWYoISgoa1tnPj4yXXwwKT09MD8oa1tnKzQ+PjJdfDApPT0tMjE0NzQ4MzY0ODowKSl7YT1mO2E9X1IoMCwwLGtbYT4+Ml18MCxrW2ErND4+Ml18MCl8MDtnPWY7a1tnPj4yXT1hO2tbZys0Pj4yXT1MO2JyZWFrfXNlKGtbZD4+Ml18MCw0NTE2NSwtMSk7cj1oO3JldHVybn13aGlsZSgwKTtnPWY7dWUoa1tkPj4yXXwwLGtbZz4+Ml18MCxrW2crND4+Ml18MCk7cj1oO3JldHVybn1jYXNlIDU6e3ZlKGtbZD4+Ml18MCk7cj1oO3JldHVybn1kZWZhdWx0OntpPStsZShrW2tbZT4+Ml0+PjJdfDApO3BbZz4+M109aTtpZigrcFtnPj4zXTwwLjApcFtnPj4zXT0tK3BbZz4+M107cmUoa1tkPj4yXXwwLCtwW2c+PjNdKTtyPWg7cmV0dXJufX19ZnVuY3Rpb24gQVAoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGk9MCxqPTAsbD0wLG09MC4wO2o9cjtyPXIrNDh8MDtoPWorOHwwO2Q9ais0MHwwO2w9aiszNnwwO2U9aiszMnwwO2Y9aisyOHwwO2c9ajtpPWorMjR8MDtrW2Q+PjJdPWE7a1tsPj4yXT1iO2tbZT4+Ml09YztrW2Y+PjJdPTA7ZG8gaWYoKGtbbD4+Ml18MCk9PTIpaWYoNT09KG9lKGtbKGtbZT4+Ml18MCkrND4+Ml18MCl8MCkpe3I9ajtyZXR1cm59ZWxzZXtsPW1lKGtbKGtbZT4+Ml18MCkrND4+Ml18MCl8MDtrW2Y+PjJdPWw7bD0oa1tmPj4yXXwwKT4zMD8zMDpsO2tbZj4+Ml09bDtrW2Y+PjJdPShrW2Y+PjJdfDApPDA/MDpsO2JyZWFrfXdoaWxlKDApO2lmKChvZShrW2tbZT4+Ml0+PjJdfDApfDApPT01KXtyPWo7cmV0dXJufW09K2xlKGtba1tlPj4yXT4+Ml18MCk7cFtnPj4zXT1tO2RvIGlmKChrW2Y+PjJdfDApPT0wJitwW2c+PjNdPj0wLjAmK3BbZz4+M108OTIyMzM3MjAzNjg1NDc3NTgwOC4wKXttPStwW2c+PjNdKy41O209Kyh+fm0+Pj4wPj4+MCkrNDI5NDk2NzI5Ni4wKisoKCtXKG0pPj0xLjA/KG0+MC4wP35+K2lhKCtWKG0vNDI5NDk2NzI5Ni4wKSw0Mjk0OTY3Mjk1LjApPj4+MDp+fitnYSgobS0rKH5+bT4+PjApKS80Mjk0OTY3Mjk2LjApPj4+MCk6MCl8MCk7cFtnPj4zXT1tfWVsc2V7aWYoKGtbZj4+Ml18MCk9PTAmK3BbZz4+M108MC4wPy0rcFtnPj4zXTw5MjIzMzcyMDM2ODU0Nzc1ODA4LjA6MCl7bT0tK3BbZz4+M10rLjU7bT0tKCsofn5tPj4+MD4+PjApKzQyOTQ5NjcyOTYuMCorKCgrVyhtKT49MS4wPyhtPjAuMD9+fitpYSgrVihtLzQyOTQ5NjcyOTYuMCksNDI5NDk2NzI5NS4wKT4+PjA6fn4rZ2EoKG0tKyh+fm0+Pj4wKSkvNDI5NDk2NzI5Ni4wKT4+PjApOjApfDApKTtwW2c+PjNdPW07YnJlYWt9bT0rcFtnPj4zXTtrW2g+PjJdPWtbZj4+Ml07cFtoKzg+PjNdPW07bD1ZZCg0NTIwNSxoKXwwO2tbaT4+Ml09bDtpZihrW2k+PjJdfDApe2w9a1tpPj4yXXwwO296KGwsZyxUZihrW2k+PjJdfDApfDAsMSl8MDtVZChrW2k+PjJdfDApO2JyZWFrfUNlKGtbZD4+Ml18MCk7cj1qO3JldHVybn13aGlsZSgwKTtyZShrW2Q+PjJdfDAsK3BbZz4+M10pO3I9ajtyZXR1cm59ZnVuY3Rpb24gQlAoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxtPTA7aj1yO3I9ciszMnwwO2Q9aisyNHwwO209aisxNnwwO2c9aisxMnwwO2g9ais4fDA7ZT1qKzR8MDtmPWo7a1tkPj4yXT1hO2tbaisyMD4+Ml09YjtrW20+PjJdPWM7YT1qZShrW2tbbT4+Ml0+PjJdfDApfDA7a1toPj4yXT1hO2E9a2Uoa1trW20+PjJdPj4yXXwwKXwwO2tbZj4+Ml09YTtpZighKGtbaD4+Ml18MCkpe3I9ajtyZXR1cm59YT1rW2Q+PjJdfDA7bT1rW2Y+PjJdfDA7bT0kUihtfDAsKChtfDApPDApPDwzMT4+MzF8MCwxLDApfDA7bT1ZUChhLG0sTCl8MDtrW2c+PjJdPW07aWYoIShrW2c+PjJdfDApKXtyPWo7cmV0dXJufWtbZT4+Ml09MDt3aGlsZSgxKXtpZigoa1tlPj4yXXwwKT49KGtbZj4+Ml18MCkpYnJlYWs7aVsoa1tnPj4yXXwwKSsoa1tlPj4yXXwwKT4+MF09aVsoa1toPj4yXXwwKSsoa1tlPj4yXXwwKT4+MF0mfihsWzE4NDAzKyhsWyhrW2g+PjJdfDApKyhrW2U+PjJdfDApPj4wXXwwKT4+MF0mMzIpO2tbZT4+Ml09KGtbZT4+Ml18MCkrMX13ZShrW2Q+PjJdfDAsa1tnPj4yXXwwLGtbZj4+Ml18MCwxNDgpO3I9ajtyZXR1cm59ZnVuY3Rpb24gQ1AoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxtPTA7aj1yO3I9ciszMnwwO2Q9aisyNHwwO209aisxNnwwO2c9aisxMnwwO2g9ais4fDA7ZT1qKzR8MDtmPWo7a1tkPj4yXT1hO2tbaisyMD4+Ml09YjtrW20+PjJdPWM7YT1qZShrW2tbbT4+Ml0+PjJdfDApfDA7a1toPj4yXT1hO2E9a2Uoa1trW20+PjJdPj4yXXwwKXwwO2tbZj4+Ml09YTtpZighKGtbaD4+Ml18MCkpe3I9ajtyZXR1cm59YT1rW2Q+PjJdfDA7bT1rW2Y+PjJdfDA7bT0kUihtfDAsKChtfDApPDApPDwzMT4+MzF8MCwxLDApfDA7bT1ZUChhLG0sTCl8MDtrW2c+PjJdPW07aWYoIShrW2c+PjJdfDApKXtyPWo7cmV0dXJufWtbZT4+Ml09MDt3aGlsZSgxKXtpZigoa1tlPj4yXXwwKT49KGtbZj4+Ml18MCkpYnJlYWs7aVsoa1tnPj4yXXwwKSsoa1tlPj4yXXwwKT4+MF09aVsxNzYxMysobFsoa1toPj4yXXwwKSsoa1tlPj4yXXwwKT4+MF18MCk+PjBdfDA7a1tlPj4yXT0oa1tlPj4yXXwwKSsxfXdlKGtbZD4+Ml18MCxrW2c+PjJdfDAsa1tmPj4yXXwwLDE0OCk7cj1qO3JldHVybn1mdW5jdGlvbiBEUChhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLG09MCxuPTAsbz0wO249cjtyPXIrNDh8MDtkPW4rMjh8MDtvPW4rMjB8MDtmPW4rMTZ8MDtnPW4rMTJ8MDtoPW4rOHwwO209bis0fDA7aj1uO2U9biszMnwwO2tbZD4+Ml09YTtrW24rMjQ+PjJdPWI7a1tvPj4yXT1jO2M9aWUoa1trW28+PjJdPj4yXXwwKXwwO2tbaD4+Ml09YztjPWtlKGtba1tvPj4yXT4+Ml18MCl8MDtrW2c+PjJdPWM7Yz1rW2Q+PjJdfDA7YT1rW2c+PjJdfDA7YT1rUyhhfDAsKChhfDApPDApPDwzMT4+MzF8MCwyLDApfDA7YT0kUihhfDAsTHwwLDEsMCl8MDthPVlQKGMsYSxMKXwwO2tbbT4+Ml09YTtrW2o+PjJdPWE7aWYoIShrW20+PjJdfDApKXtyPW47cmV0dXJufWtbZj4+Ml09MDt3aGlsZSgxKXtpZigoa1tmPj4yXXwwKT49KGtbZz4+Ml18MCkpYnJlYWs7aVtlPj4wXT1pW2tbaD4+Ml0+PjBdfDA7bz1pWzQ1MTg5KygobFtlPj4wXXwwKT4+NCYxNSk+PjBdfDA7YT1rW2o+PjJdfDA7a1tqPj4yXT1hKzE7aVthPj4wXT1vO2E9aVs0NTE4OSsoKGxbZT4+MF18MCkmMTUpPj4wXXwwO289a1tqPj4yXXwwO2tbaj4+Ml09bysxO2lbbz4+MF09YTtrW2Y+PjJdPShrW2Y+PjJdfDApKzE7a1toPj4yXT0oa1toPj4yXXwwKSsxfWlba1tqPj4yXT4+MF09MDt3ZShrW2Q+PjJdfDAsa1ttPj4yXXwwLGtbZz4+Ml08PDEsMTQ4KTtyPW47cmV0dXJufWZ1bmN0aW9uIEVQKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTA7Zj1yO3I9ciszMnwwO2Q9ZisxNnwwO2U9ZjtrW2Q+PjJdPWE7a1tmKzEyPj4yXT1iO2tbZis4Pj4yXT1jO2FlKDgsZSk7aWYoKGtbZSs0Pj4yXXwwKTwwKXtjPWU7Yz1fUigwLDAsa1tjPj4yXXwwLGtbYys0Pj4yXSYyMTQ3NDgzNjQ3fDApfDA7YT1lO2tbYT4+Ml09YztrW2ErND4+Ml09TH11ZShrW2Q+PjJdfDAsa1tlPj4yXXwwLGtbZSs0Pj4yXXwwKTtyPWY7cmV0dXJufWZ1bmN0aW9uIEZQKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MDtnPXI7cj1yKzMyfDA7ZD1nKzE2fDA7aD1nKzh8MDtlPWcrNHwwO2Y9ZztrW2Q+PjJdPWE7a1tnKzEyPj4yXT1iO2tbaD4+Ml09YzthPW1lKGtba1toPj4yXT4+Ml18MCl8MDtrW2U+PjJdPWE7a1tlPj4yXT0oa1tlPj4yXXwwKTwxPzE6YTthPWtbZT4+Ml18MDthPVlQKGtbZD4+Ml18MCxhLCgoYXwwKTwwKTw8MzE+PjMxKXwwO2tbZj4+Ml09YTtpZighKGtbZj4+Ml18MCkpe3I9ZztyZXR1cm59YWUoa1tlPj4yXXwwLGtbZj4+Ml18MCk7cGUoa1tkPj4yXXwwLGtbZj4+Ml18MCxrW2U+PjJdfDAsMTQ4KTtyPWc7cmV0dXJufWZ1bmN0aW9uIEdQKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wO2Y9cjtyPXIrMTZ8MDtkPWYrMTJ8MDtlPWYrNHwwO2c9ZjtrW2Q+PjJdPWE7a1tmKzg+PjJdPWI7a1tlPj4yXT1jO2E9WlAoa1tkPj4yXXwwKXwwO2tbZz4+Ml09YTtpZighKFdJKGtba1tlPj4yXT4+Ml18MCxrWyhrW2U+PjJdfDApKzQ+PjJdfDAsa1tnPj4yXXwwKXwwKSl7cj1mO3JldHVybn15ZShrW2Q+PjJdfDAsa1trW2U+PjJdPj4yXXwwKTtyPWY7cmV0dXJufWZ1bmN0aW9uIEhQKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MDtkPXI7cj1yKzE2fDA7ZT1kKzh8MDtrW2U+PjJdPWE7a1tkKzQ+PjJdPWI7a1tkPj4yXT1jO2E9a1tlPj4yXXwwO3dlKGEsdWYoKXwwLC0xLDApO3I9ZDtyZXR1cm59ZnVuY3Rpb24gSVAoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MDtkPXI7cj1yKzE2fDA7ZT1kO2Y9ZCs0fDA7a1tkKzEyPj4yXT1hO2tbZCs4Pj4yXT1iO2tbZj4+Ml09YzthPW1lKGtba1tmPj4yXT4+Ml18MCl8MDtjPWplKGtbKGtbZj4+Ml18MCkrND4+Ml18MCl8MDtrW2U+PjJdPWM7JGQoYSwxODM5MSxlKTtyPWQ7cmV0dXJufWZ1bmN0aW9uIEpQKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsbT0wLG49MCxvPTAscT0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAuMDt5PXI7cj1yKzE0NHwwO3M9eSszMnwwO3E9eSsyNHwwO2Q9eSs4MHwwO2U9eSs3MnwwO249eSsxNnwwO289eSs4fDA7dz15Kzg0fDA7eD15KzY4fDA7dj15KzY0fDA7bT15KzYwfDA7Zj15KzU2fDA7Zz15KzUyfDA7aD15KzQ4fDA7aj15O3U9eSs0NHwwO3Q9eSs0MHwwO2tbZD4+Ml09YTtrW3krNzY+PjJdPWI7a1tlPj4yXT1jO3N3aXRjaChvZShrW2tbZT4+Ml0+PjJdfDApfDApe2Nhc2UgMjp7ej0rbGUoa1trW2U+PjJdPj4yXXwwKTtwW24+PjNdPXo7cFtxPj4zXT0rcFtuPj4zXTtfZCg1MCx3LDI4MjcxLHEpfDA7b3oodyxvLDIwLDEpfDA7aWYoK3Bbbj4+M10hPStwW28+PjNdKXtwW3M+PjNdPStwW24+PjNdO19kKDUwLHcsNDUxODIscyl8MH13ZShrW2Q+PjJdfDAsdywtMSwtMSk7cj15O3JldHVybn1jYXNlIDE6e3llKGtbZD4+Ml18MCxrW2tbZT4+Ml0+PjJdfDApO3I9eTtyZXR1cm59Y2FzZSA0OntrW3g+PjJdPTA7dT1pZShrW2tbZT4+Ml0+PjJdfDApfDA7a1t2Pj4yXT11O3U9a2Uoa1trW2U+PjJdPj4yXXwwKXwwO2tbbT4+Ml09dTt1PWtbZD4+Ml18MDt3PWtbbT4+Ml18MDt3PVlQKHUsJFIoa1MoMiwwLHd8MCwoKHd8MCk8MCk8PDMxPj4zMXwwKXwwLEx8MCw0LDApfDAsTCl8MDtrW3g+PjJdPXc7aWYoIShrW3g+PjJdfDApKXtyPXk7cmV0dXJufWtbZj4+Ml09MDt3aGlsZSgxKXtpZigoa1tmPj4yXXwwKT49KGtbbT4+Ml18MCkpYnJlYWs7aVsoa1t4Pj4yXXwwKSsoKGtbZj4+Ml08PDEpKzIpPj4wXT1pWzQ1MTg5KyhpWyhrW3Y+PjJdfDApKyhrW2Y+PjJdfDApPj4wXT4+NCYxNSk+PjBdfDA7aVsoa1t4Pj4yXXwwKSsoKGtbZj4+Ml08PDEpKzMpPj4wXT1pWzQ1MTg5KyhpWyhrW3Y+PjJdfDApKyhrW2Y+PjJdfDApPj4wXSYxNSk+PjBdfDA7a1tmPj4yXT0oa1tmPj4yXXwwKSsxfWlbKGtbeD4+Ml18MCkrKChrW20+PjJdPDwxKSsyKT4+MF09Mzk7aVsoa1t4Pj4yXXwwKSsoKGtbbT4+Ml08PDEpKzMpPj4wXT0wO2lba1t4Pj4yXT4+MF09ODg7aVsoa1t4Pj4yXXwwKSsxPj4wXT0zOTt3ZShrW2Q+PjJdfDAsa1t4Pj4yXXwwLC0xLC0xKTtVZChrW3g+PjJdfDApO3I9eTtyZXR1cm59Y2FzZSAzOnt4PWplKGtba1tlPj4yXT4+Ml18MCl8MDtrW3U+PjJdPXg7aWYoIShrW3U+PjJdfDApKXtyPXk7cmV0dXJufWtbZz4+Ml09MDt4PWo7a1t4Pj4yXT0wO2tbeCs0Pj4yXT0wO3doaWxlKDEpe2lmKCEoaVsoa1t1Pj4yXXwwKSsoa1tnPj4yXXwwKT4+MF18MCkpYnJlYWs7aWYoKGxbKGtbdT4+Ml18MCkrKGtbZz4+Ml18MCk+PjBdfDApPT0zOSl7dz1qO3c9JFIoa1t3Pj4yXXwwLGtbdys0Pj4yXXwwLDEsMCl8MDt4PWo7a1t4Pj4yXT13O2tbeCs0Pj4yXT1MfWtbZz4+Ml09KGtbZz4+Ml18MCkrMX13PWtbZD4+Ml18MDt2PWtbZz4+Ml18MDt4PWo7eD0kUih2fDAsKCh2fDApPDApPDwzMT4+MzF8MCxrW3g+PjJdfDAsa1t4KzQ+PjJdfDApfDA7eD0kUih4fDAsTHwwLDMsMCl8MDt4PVlQKHcseCxMKXwwO2tbdD4+Ml09eDtpZighKGtbdD4+Ml18MCkpe3I9eTtyZXR1cm59aVtrW3Q+PjJdPj4wXT0zOTtrW2c+PjJdPTA7a1toPj4yXT0xO3doaWxlKDEpe2lmKCEoaVsoa1t1Pj4yXXwwKSsoa1tnPj4yXXwwKT4+MF18MCkpYnJlYWs7dz1pWyhrW3U+PjJdfDApKyhrW2c+PjJdfDApPj4wXXwwO3g9a1toPj4yXXwwO2tbaD4+Ml09eCsxO2lbKGtbdD4+Ml18MCkreD4+MF09dztpZigobFsoa1t1Pj4yXXwwKSsoa1tnPj4yXXwwKT4+MF18MCk9PTM5KXt4PWtbaD4+Ml18MDtrW2g+PjJdPXgrMTtpWyhrW3Q+PjJdfDApK3g+PjBdPTM5fWtbZz4+Ml09KGtbZz4+Ml18MCkrMX14PWtbaD4+Ml18MDtrW2g+PjJdPXgrMTtpWyhrW3Q+PjJdfDApK3g+PjBdPTM5O2lbKGtbdD4+Ml18MCkrKGtbaD4+Ml18MCk+PjBdPTA7d2Uoa1tkPj4yXXwwLGtbdD4+Ml18MCxrW2g+PjJdfDAsMTQ4KTtyPXk7cmV0dXJufWRlZmF1bHQ6e3dlKGtbZD4+Ml18MCwzOTY5MSw0LDApO3I9eTtyZXR1cm59fX1mdW5jdGlvbiBLUChhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wO2Q9cjtyPXIrMTZ8MDtmPWQrMTJ8MDtlPWQ7a1tmPj4yXT1hO2tbZCs4Pj4yXT1iO2tbZCs0Pj4yXT1jO2M9RmUoa1tmPj4yXXwwKXwwO2tbZT4+Ml09YztjPWtbZj4+Ml18MDthPXpmKGtbZT4+Ml18MCl8MDt1ZShjLGEsTCk7cj1kO3JldHVybn1mdW5jdGlvbiBMUChhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wO2Q9cjtyPXIrMTZ8MDtmPWQrMTJ8MDtlPWQ7a1tmPj4yXT1hO2tbZCs4Pj4yXT1iO2tbZCs0Pj4yXT1jO2E9RmUoa1tmPj4yXXwwKXwwO2tbZT4+Ml09YTthPWtbZj4+Ml18MDt0ZShhLEFmKGtbZT4+Ml18MCl8MCk7cj1kO3JldHVybn1mdW5jdGlvbiBNUChhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wO2Q9cjtyPXIrMTZ8MDtmPWQrMTJ8MDtlPWQ7a1tmPj4yXT1hO2tbZCs4Pj4yXT1iO2tbZCs0Pj4yXT1jO2E9RmUoa1tmPj4yXXwwKXwwO2tbZT4+Ml09YTthPWtbZj4+Ml18MDt0ZShhLEJmKGtbZT4+Ml18MCl8MCk7cj1kO3JldHVybn1mdW5jdGlvbiBOUChhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLG09MCxuPTAsbz0wLHA9MCxxPTAscz0wLHQ9MCx1PTAsdj0wLHc9MDt3PXI7cj1yKzgwfDA7bz13KzY0fDA7ZD13KzU2fDA7dj13KzUyfDA7bT13KzQ4fDA7bj13KzQ0fDA7dT13KzQwfDA7cz13KzM2fDA7aD13KzMyfDA7aj13KzI4fDA7Zz13O2Y9dysyNHwwO3A9dysyMHwwO3E9dysxNnwwO3Q9dysxMnwwO2U9dys4fDA7a1tvPj4yXT1hO2tbdys2MD4+Ml09YjtrW2Q+PjJdPWM7YT1qZShrW2tbZD4+Ml0+PjJdfDApfDA7a1t2Pj4yXT1hO2lmKCEoa1t2Pj4yXXwwKSl7cj13O3JldHVybn1hPWtlKGtba1tkPj4yXT4+Ml18MCl8MDtrW3M+PjJdPWE7YT1qZShrWyhrW2Q+PjJdfDApKzQ+PjJdfDApfDA7a1ttPj4yXT1hO2lmKCEoa1ttPj4yXXwwKSl7cj13O3JldHVybn1pZighKGxba1ttPj4yXT4+MF18MCkpe3llKGtbbz4+Ml18MCxrW2tbZD4+Ml0+PjJdfDApO3I9dztyZXR1cm59YT1rZShrWyhrW2Q+PjJdfDApKzQ+PjJdfDApfDA7a1toPj4yXT1hO2E9amUoa1soa1tkPj4yXXwwKSs4Pj4yXXwwKXwwO2tbbj4+Ml09YTtpZighKGtbbj4+Ml18MCkpe3I9dztyZXR1cm59Yz1rZShrWyhrW2Q+PjJdfDApKzg+PjJdfDApfDA7a1tqPj4yXT1jO2M9KGtbcz4+Ml18MCkrMXwwO2E9ZztrW2E+PjJdPWM7a1thKzQ+PjJdPSgoY3wwKTwwKTw8MzE+PjMxO2E9ZzthPVlQKGtbbz4+Ml18MCxrW2E+PjJdfDAsa1thKzQ+PjJdfDApfDA7a1t1Pj4yXT1hO2lmKCEoa1t1Pj4yXXwwKSl7cj13O3JldHVybn1rW2Y+PjJdPShrW3M+PjJdfDApLShrW2g+PjJdfDApO2tbcT4+Ml09MDtrW3A+PjJdPTA7d2hpbGUoMSl7aWYoKGtbcD4+Ml18MCk+KGtbZj4+Ml18MCkpe2Q9MTg7YnJlYWt9aWYoKGxbKGtbdj4+Ml18MCkrKGtbcD4+Ml18MCk+PjBdfDB8MCk9PShsW2tbbT4+Ml0+PjBdfDB8MCk/KG9SKChrW3Y+PjJdfDApKyhrW3A+PjJdfDApfDAsa1ttPj4yXXwwLGtbaD4+Ml18MCl8MCk9PTA6MCl7ZD1GZShrW28+PjJdfDApfDA7a1tlPj4yXT1kO2Q9KGtbaj4+Ml18MCktKGtbaD4+Ml18MCl8MDtjPWc7ZD0kUihrW2M+PjJdfDAsa1tjKzQ+PjJdfDAsZHwwLCgoZHwwKTwwKTw8MzE+PjMxfDApfDA7Yz1nO2tbYz4+Ml09ZDtrW2MrND4+Ml09TDtjPWc7Yz1fUihrW2M+PjJdfDAsa1tjKzQ+PjJdfDAsMSwwKXwwO2Q9TDthPWtbKGtbZT4+Ml18MCkrOTY+PjJdfDA7Yj0oKGF8MCk8MCk8PDMxPj4zMTtpZigoZHwwKT4oYnwwKXwoZHwwKT09KGJ8MCkmYz4+PjA+YT4+PjApe2Q9MTM7YnJlYWt9a1t0Pj4yXT1rW3U+PjJdO2E9a1tnPj4yXXwwO2E9V2Qoa1t1Pj4yXXwwLGEsKChhfDApPDApPDwzMT4+MzEpfDA7a1t1Pj4yXT1hO2lmKCEoa1t1Pj4yXXwwKSl7ZD0xNTticmVha31iUygoa1t1Pj4yXXwwKSsoa1txPj4yXXwwKXwwLGtbbj4+Ml18MCxrW2o+PjJdfDApfDA7a1txPj4yXT0oa1txPj4yXXwwKSsoa1tqPj4yXXwwKTtrW3A+PjJdPShrW3A+PjJdfDApKygoa1toPj4yXXwwKS0xKX1lbHNle2M9aVsoa1t2Pj4yXXwwKSsoa1twPj4yXXwwKT4+MF18MDthPWtbcT4+Ml18MDtrW3E+PjJdPWErMTtpWyhrW3U+PjJdfDApK2E+PjBdPWN9a1twPj4yXT0oa1twPj4yXXwwKSsxfWlmKChkfDApPT0xMyl7QmUoa1tvPj4yXXwwKTtVZChrW3U+PjJdfDApO3I9dztyZXR1cm59ZWxzZSBpZigoZHwwKT09MTUpe0NlKGtbbz4+Ml18MCk7VWQoa1t0Pj4yXXwwKTtyPXc7cmV0dXJufWVsc2UgaWYoKGR8MCk9PTE4KXtiUygoa1t1Pj4yXXwwKSsoa1txPj4yXXwwKXwwLChrW3Y+PjJdfDApKyhrW3A+PjJdfDApfDAsKGtbcz4+Ml18MCktKGtbcD4+Ml18MCl8MCl8MDtrW3E+PjJdPShrW3E+PjJdfDApKygoa1tzPj4yXXwwKS0oa1twPj4yXXwwKSk7aVsoa1t1Pj4yXXwwKSsoa1txPj4yXXwwKT4+MF09MDt3ZShrW28+PjJdfDAsa1t1Pj4yXXwwLGtbcT4+Ml18MCwxNDgpO3I9dztyZXR1cm59fWZ1bmN0aW9uIE9QKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MDtmPXI7cj1yKzMyfDA7ZD1mKzIwfDA7aD1mKzEyfDA7Zz1mO2U9Zis4fDA7a1tkPj4yXT1hO2tbZisxNj4+Ml09YjtrW2g+PjJdPWM7aD1uZShrW2tbaD4+Ml0+PjJdfDApfDA7Yz1MO2I9ZztrW2I+PjJdPWg7a1tiKzQ+PjJdPWM7Yj0oa1tnKzQ+PjJdfDApPDA7YT1nO2tbYT4+Ml09Yj8wOmg7a1thKzQ+PjJdPWI/MDpjO2E9ZzthPXplKGtbZD4+Ml18MCxrW2E+PjJdfDAsa1thKzQ+PjJdfDApfDA7a1tlPj4yXT1hO2lmKCEoa1tlPj4yXXwwKSl7cj1mO3JldHVybn1BZShrW2Q+PjJdfDAsa1tlPj4yXXwwKTtyPWY7cmV0dXJufWZ1bmN0aW9uIFBQKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsbT0wLG49MCxvPTAscD0wLHE9MDtxPXI7cj1yKzQ4fDA7aj1xKzQ0fDA7ZD1xKzQwfDA7ZT1xKzM2fDA7bz1xKzMyfDA7cD1xKzI4fDA7Zj1xKzI0fDA7aD1xKzIwfDA7bT1xKzh8MDtuPXE7Zz1xKzE2fDA7a1tqPj4yXT1hO2tbZD4+Ml09YjtrW2U+PjJdPWM7a1tnPj4yXT0wO2lmKChvZShrWyhrW2U+PjJdfDApKzQ+PjJdfDApfDApPT01KXtyPXE7cmV0dXJufWlmKChrW2Q+PjJdfDApPT0zPyhvZShrWyhrW2U+PjJdfDApKzg+PjJdfDApfDApPT01OjApe3I9cTtyZXR1cm59YT1vZShrW2tbZT4+Ml0+PjJdfDApfDA7a1toPj4yXT1hO2E9bWUoa1soa1tlPj4yXXwwKSs0Pj4yXXwwKXwwO2I9bTtrW2I+PjJdPWE7a1tiKzQ+PjJdPSgoYXwwKTwwKTw8MzE+PjMxO2I9a1trW2U+PjJdPj4yXXwwO2E6ZG8gaWYoKGtbaD4+Ml18MCk9PTQpe2E9a2UoYil8MDtrW2Y+PjJdPWE7YT1pZShrW2tbZT4+Ml0+PjJdfDApfDA7a1tvPj4yXT1hO2lmKCEoa1tvPj4yXXwwKSl7cj1xO3JldHVybn19ZWxzZXthPWplKGIpfDA7a1tvPj4yXT1hO2lmKCEoa1tvPj4yXXwwKSl7cj1xO3JldHVybn1rW2Y+PjJdPTA7aWYoKGtbbSs0Pj4yXXwwKTwwKXtrW3A+PjJdPWtbbz4+Ml07d2hpbGUoMSl7aWYoIShpW2tbcD4+Ml0+PjBdfDApKWJyZWFrIGE7YT1rW3A+PjJdfDA7a1twPj4yXT1hKzE7YjpkbyBpZigobFthPj4wXXwwKT49MTkyKXdoaWxlKDEpe2lmKChsW2tbcD4+Ml0+PjBdJjE5MnwwKSE9MTI4KWJyZWFrIGI7a1twPj4yXT0oa1twPj4yXXwwKSsxfXdoaWxlKDApO2tbZj4+Ml09KGtbZj4+Ml18MCkrMX19fXdoaWxlKDApO2lmKChrW2Q+PjJdfDApPT0zKXtkPW1lKGtbKGtbZT4+Ml18MCkrOD4+Ml18MCl8MDtlPW47a1tlPj4yXT1kO2tbZSs0Pj4yXT0oKGR8MCk8MCk8PDMxPj4zMTtpZigoa1tuKzQ+PjJdfDApPDApe2Q9bjtkPV9SKDAsMCxrW2Q+PjJdfDAsa1tkKzQ+PjJdfDApfDA7ZT1uO2tbZT4+Ml09ZDtrW2UrND4+Ml09TDtrW2c+PjJdPTF9fWVsc2V7ZD0oRmUoa1tqPj4yXXwwKXwwKSs5NnwwO2Q9a1tkPj4yXXwwO2U9bjtrW2U+PjJdPWQ7a1tlKzQ+PjJdPSgoZHwwKTwwKTw8MzE+PjMxfWRvIGlmKChrW20rND4+Ml18MCk8MCl7ZD1rW2Y+PjJdfDA7ZT1tO2Q9JFIoa1tlPj4yXXwwLGtbZSs0Pj4yXXwwLGR8MCwoKGR8MCk8MCk8PDMxPj4zMXwwKXwwO2U9bTtrW2U+PjJdPWQ7a1tlKzQ+PjJdPUw7aWYoKGtbbSs0Pj4yXXwwKTwwKXtjPW07ZD1uO2M9JFIoa1tkPj4yXXwwLGtbZCs0Pj4yXXwwLGtbYz4+Ml18MCxrW2MrND4+Ml18MCl8MDtkPUw7YT1uO2tbYT4+Ml09YztrW2ErND4+Ml09ZDthPShrW24rND4+Ml18MCk8MDtlPW47a1tlPj4yXT1hPzA6YztrW2UrND4+Ml09YT8wOmQ7ZT1tO2tbZT4+Ml09MDtrW2UrND4+Ml09MH19ZWxzZXtlPW07ZD1rW2UrND4+Ml18MDtpZigoZHwwKT4wfChkfDApPT0wJihrW2U+PjJdfDApPj4+MD4wKXtkPW07ZD0kUihrW2Q+PjJdfDAsa1tkKzQ+PjJdfDAsLTEsLTEpfDA7ZT1tO2tbZT4+Ml09ZDtrW2UrND4+Ml09TDticmVha31lPW47ZD1rW2UrND4+Ml18MDtpZigoZHwwKT4wfChkfDApPT0wJihrW2U+PjJdfDApPj4+MD4wKXtkPW47ZD0kUihrW2Q+PjJdfDAsa1tkKzQ+PjJdfDAsLTEsLTEpfDA7ZT1uO2tbZT4+Ml09ZDtrW2UrND4+Ml09TH19d2hpbGUoMCk7aWYoKGtbZz4+Ml18MCkhPTA/KGU9bixnPW0sZT1fUihrW2c+PjJdfDAsa1tnKzQ+PjJdfDAsa1tlPj4yXXwwLGtbZSs0Pj4yXXwwKXwwLGc9bSxrW2c+PjJdPWUsa1tnKzQ+PjJdPUwsKGtbbSs0Pj4yXXwwKTwwKTowKXtlPW07Zz1uO2U9JFIoa1tnPj4yXXwwLGtbZys0Pj4yXXwwLGtbZT4+Ml18MCxrW2UrND4+Ml18MCl8MDtnPW47a1tnPj4yXT1lO2tbZys0Pj4yXT1MO2c9bTtrW2c+PjJdPTA7a1tnKzQ+PjJdPTB9aWYoKGtbaD4+Ml18MCk9PTQpe2U9bTtoPW47aD0kUihrW2U+PjJdfDAsa1tlKzQ+PjJdfDAsa1toPj4yXXwwLGtbaCs0Pj4yXXwwKXwwO2U9TDtwPWtbZj4+Ml18MDtnPSgocHwwKTwwKTw8MzE+PjMxO2lmKChlfDApPihnfDApfChlfDApPT0oZ3wwKSZoPj4+MD5wPj4+MCl7aD1rW2Y+PjJdfDA7Zj1tO2Y9X1IoaHwwLCgoaHwwKTwwKTw8MzE+PjMxfDAsa1tmPj4yXXwwLGtbZis0Pj4yXXwwKXwwO2g9TDtnPW47a1tnPj4yXT1mO2tbZys0Pj4yXT1oO2c9KGtbbis0Pj4yXXwwKTwwO3A9bjtrW3A+PjJdPWc/MDpmO2tbcCs0Pj4yXT1nPzA6aH1wPW47cWUoa1tqPj4yXXwwLChrW28+PjJdfDApKyhrW20+PjJdfDApfDAsa1twPj4yXXwwLGtbcCs0Pj4yXXwwLC0xKTtyPXE7cmV0dXJufXdoaWxlKDEpe2g9bTtiPWtbbz4+Ml18MDtpZighKChsW2tbbz4+Ml0+PjBdfDApIT0wPyhrW2g+PjJdfDApIT0wfChrW2grND4+Ml18MCkhPTA6MCkpYnJlYWs7a1tvPj4yXT1iKzE7YzpkbyBpZigobFtiPj4wXXwwKT49MTkyKXdoaWxlKDEpe2lmKChsW2tbbz4+Ml0+PjBdJjE5MnwwKSE9MTI4KWJyZWFrIGM7a1tvPj4yXT0oa1tvPj4yXXwwKSsxfXdoaWxlKDApO2c9bTtnPSRSKGtbZz4+Ml18MCxrW2crND4+Ml18MCwtMSwtMSl8MDtoPW07a1toPj4yXT1nO2tbaCs0Pj4yXT1MfWtbcD4+Ml09Yjt3aGlsZSgxKXttPW47aWYoISgobFtrW3A+PjJdPj4wXXwwKSE9MD8oa1ttPj4yXXwwKSE9MHwoa1ttKzQ+PjJdfDApIT0wOjApKWJyZWFrO209a1twPj4yXXwwO2tbcD4+Ml09bSsxO2Q6ZG8gaWYoKGxbbT4+MF18MCk+PTE5Mil3aGlsZSgxKXtpZigobFtrW3A+PjJdPj4wXSYxOTJ8MCkhPTEyOClicmVhayBkO2tbcD4+Ml09KGtbcD4+Ml18MCkrMX13aGlsZSgwKTtoPW47aD0kUihrW2g+PjJdfDAsa1toKzQ+PjJdfDAsLTEsLTEpfDA7bT1uO2tbbT4+Ml09aDtrW20rND4+Ml09TH1wPShrW3A+PjJdfDApLShrW28+PjJdfDApfDA7eGUoa1tqPj4yXXwwLGtbbz4+Ml18MCxwLCgocHwwKTwwKTw8MzE+PjMxLC0xLDEpO3I9cTtyZXR1cm59ZnVuY3Rpb24gUVAoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxtPTAuMDtoPXI7cj1yKzMyfDA7aj1oKzI0fDA7ZD1oKzE2fDA7ZT1oKzEyfDA7Zj1oKzh8MDtnPWg7a1tqPj4yXT1hO2tbaCsyMD4+Ml09YjtrW2Q+PjJdPWM7YT1HZShrW2o+PjJdfDAsMzIpfDA7a1tlPj4yXT1hO2E9YmYoa1trW2Q+PjJdPj4yXXwwKXwwO2tbZj4+Ml09YTtpZighKChrW2U+PjJdfDApIT0wJihrW2Y+PjJdfDApIT01KSl7cj1oO3JldHVybn1qPShrW2U+PjJdfDApKzE2fDA7YT1qO2E9JFIoa1thPj4yXXwwLGtbYSs0Pj4yXXwwLDEsMCl8MDtrW2o+PjJdPWE7a1tqKzQ+PjJdPUw7ZD1rW2tbZD4+Ml0+PjJdfDA7aWYoKGtbZj4+Ml18MCkhPTEpe209K2xlKGQpO2o9a1tlPj4yXXwwO3Bbaj4+M109K3Bbaj4+M10rbTtpWyhrW2U+PjJdfDApKzI1Pj4wXT0xO3I9aDtyZXR1cm59aj1uZShkKXwwO2Y9ZztrW2Y+PjJdPWo7a1tmKzQ+PjJdPUw7Zj1nO2o9a1tlPj4yXXwwO3Bbaj4+M109K3Bbaj4+M10rKCsoKGtbZj4+Ml18MCk+Pj4wKSs0Mjk0OTY3Mjk2LjAqKyhrW2YrND4+Ml18MCkpO2lmKGxbKGtbZT4+Ml18MCkrMjU+PjBdfDB8KGxbKGtbZT4+Ml18MCkrMjQ+PjBdfDApKXtyPWg7cmV0dXJufWo9ZztpZighKFNJKChrW2U+PjJdfDApKzh8MCxrW2o+PjJdfDAsa1tqKzQ+PjJdfDApfDApKXtyPWg7cmV0dXJufWlbKGtbZT4+Ml18MCkrMjQ+PjBdPTE7cj1oO3JldHVybn1mdW5jdGlvbiBSUChhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTAsZT0wO2Q9cjtyPXIrMTZ8MDtiPWQrNHwwO2M9ZDtrW2I+PjJdPWE7YT1HZShrW2I+PjJdfDAsMCl8MDtrW2M+PjJdPWE7aWYoIShrW2M+PjJdfDApKXtyPWQ7cmV0dXJufWE9KGtbYz4+Ml18MCkrMTZ8MDtlPWtbYSs0Pj4yXXwwO2lmKCEoKGV8MCk+MHwoZXwwKT09MCYoa1thPj4yXXwwKT4+PjA+MCkpe3I9ZDtyZXR1cm59aWYoaVsoa1tjPj4yXXwwKSsyND4+MF18MCl7c2Uoa1tiPj4yXXwwLDQ1MTY1LC0xKTtyPWQ7cmV0dXJufWI9a1tiPj4yXXwwO2E9a1tjPj4yXXwwO2lmKGlbKGtbYz4+Ml18MCkrMjU+PjBdfDApe3JlKGIsK3BbYT4+M10pO3I9ZDtyZXR1cm59ZWxzZXtlPWErOHwwO3VlKGIsa1tlPj4yXXwwLGtbZSs0Pj4yXXwwKTtyPWQ7cmV0dXJufX1mdW5jdGlvbiBTUChhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTAsZT0wLjA7Yz1yO3I9cisxNnwwO2Q9Yys0fDA7Yj1jO2tbZD4+Ml09YTthPUdlKGtbZD4+Ml18MCwwKXwwO2tbYj4+Ml09YTthPWtbZD4+Ml18MDtpZighKGtbYj4+Ml18MCkpe2U9MC4wO3JlKGEsZSk7cj1jO3JldHVybn1lPStwW2tbYj4+Ml0+PjNdO3JlKGEsZSk7cj1jO3JldHVybn1mdW5jdGlvbiBUUChhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTAsZT0wO2Q9cjtyPXIrMTZ8MDtiPWQrNHwwO2M9ZDtrW2I+PjJdPWE7YT1HZShrW2I+PjJdfDAsMCl8MDtrW2M+PjJdPWE7aWYoIShrW2M+PjJdfDApKXtyPWQ7cmV0dXJufWE9KGtbYz4+Ml18MCkrMTZ8MDtlPWtbYSs0Pj4yXXwwO2lmKCEoKGV8MCk+MHwoZXwwKT09MCYoa1thPj4yXXwwKT4+PjA+MCkpe3I9ZDtyZXR1cm59ZT0oa1tjPj4yXXwwKSsxNnwwO3JlKGtbYj4+Ml18MCwrcFtrW2M+PjJdPj4zXS8oKygoa1tlPj4yXXwwKT4+PjApKzQyOTQ5NjcyOTYuMCorKGtbZSs0Pj4yXXwwKSkpO3I9ZDtyZXR1cm59ZnVuY3Rpb24gVVAoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wO2Y9cjtyPXIrMTZ8MDtoPWYrMTJ8MDtnPWYrOHwwO2Q9Zis0fDA7ZT1mO2tbaD4+Ml09YTtrW2c+PjJdPWI7a1tkPj4yXT1jO2E9R2Uoa1toPj4yXXwwLDgpfDA7a1tlPj4yXT1hO2lmKCEoa1tnPj4yXXwwKSl7aWYoIShrW2U+PjJdfDApKXtyPWY7cmV0dXJufX1lbHNle2g9NSE9KG9lKGtba1tkPj4yXT4+Ml18MCl8MCk7aWYoIShoJihrW2U+PjJdfDApIT0wKSl7cj1mO3JldHVybn19aD1rW2U+PjJdfDA7Zz1oO2c9JFIoa1tnPj4yXXwwLGtbZys0Pj4yXXwwLDEsMCl8MDtrW2g+PjJdPWc7a1toKzQ+PjJdPUw7cj1mO3JldHVybn1mdW5jdGlvbiBWUChhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTA7Yz1yO3I9cisxNnwwO2Q9Yys0fDA7Yj1jO2tbZD4+Ml09YTthPUdlKGtbZD4+Ml18MCwwKXwwO2tbYj4+Ml09YTthPWtbZD4+Ml18MDtpZighKGtbYj4+Ml18MCkpe2I9MDtkPTA7dWUoYSxiLGQpO3I9YztyZXR1cm59ZD1rW2I+PjJdfDA7Yj1rW2Q+PjJdfDA7ZD1rW2QrND4+Ml18MDt1ZShhLGIsZCk7cj1jO3JldHVybn1mdW5jdGlvbiBXUChhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaT0wLGo9MCxsPTAsbT0wLG49MCxvPTA7bz1yO3I9cis0OHwwO2Q9byszNnwwO2U9byszMnwwO2Y9bysyOHwwO249bysyNHwwO2w9bysyMHwwO209bysxNnwwO2o9bysxMnwwO2k9bys4fDA7Zz1vKzR8MDtoPW87a1tkPj4yXT1hO2tbZT4+Ml09YjtrW2Y+PjJdPWM7aWYoKG9lKGtba1tmPj4yXT4+Ml18MCl8MCk9PTUpe3I9bztyZXR1cm59YT1HZShrW2Q+PjJdfDAsMjgpfDA7a1tsPj4yXT1hO2lmKCEoa1tsPj4yXXwwKSl7cj1vO3JldHVybn1hPUZlKGtbZD4+Ml18MCl8MDtrW2c+PjJdPWE7a1toPj4yXT0oa1soa1tsPj4yXXwwKSsyMD4+Ml18MCk9PTAmMTtrWyhrW2w+PjJdfDApKzIwPj4yXT1rWyhrW2c+PjJdfDApKzk2Pj4yXTtpZighKGtbaD4+Ml18MCkpe2lmKChrW2U+PjJdfDApPT0yKXtoPWplKGtbKGtbZj4+Ml18MCkrND4+Ml18MCl8MDtrW20+PjJdPWg7aD1rZShrWyhrW2Y+PjJdfDApKzQ+PjJdfDApfDA7a1tpPj4yXT1ofWVsc2V7a1ttPj4yXT0zNDcxMDtrW2k+PjJdPTF9aWYoa1tpPj4yXXwwKUNBKGtbbD4+Ml18MCxrW20+PjJdfDAsa1tpPj4yXXwwKX1tPWplKGtba1tmPj4yXT4+Ml18MCl8MDtrW24+PjJdPW07bT1rZShrW2tbZj4+Ml0+PjJdfDApfDA7a1tqPj4yXT1tO2lmKCEoa1tuPj4yXXwwKSl7cj1vO3JldHVybn1DQShrW2w+PjJdfDAsa1tuPj4yXXwwLGtbaj4+Ml18MCk7cj1vO3JldHVybn1mdW5jdGlvbiBYUChhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTA7ZD1yO3I9cisxNnwwO2I9ZCs0fDA7Yz1kO2tbYj4+Ml09YTthPUdlKGtbYj4+Ml18MCwwKXwwO2tbYz4+Ml09YTtpZighKGtbYz4+Ml18MCkpe3I9ZDtyZXR1cm59aWYoKGxbKGtbYz4+Ml18MCkrMjQ+PjBdfDB8MCk9PTIpe0JlKGtbYj4+Ml18MCk7cj1kO3JldHVybn1iPWtbYj4+Ml18MDtpZigobFsoa1tjPj4yXXwwKSsyND4+MF18MHwwKT09MSl7Q2UoYik7cj1kO3JldHVybn1lbHNle3dlKGIscGcoa1tjPj4yXXwwKXwwLC0xLDE0OCk7cj1kO3JldHVybn19ZnVuY3Rpb24gWVAoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGk9MDtnPXI7cj1yKzMyfDA7ZD1nKzE2fDA7ZT1nO2Y9ZysxMnwwO2k9Zys4fDA7a1tkPj4yXT1hO2g9ZTtrW2g+PjJdPWI7a1toKzQ+PjJdPWM7Yz1GZShrW2Q+PjJdfDApfDA7a1tpPj4yXT1jO2M9ZTtoPWtbYys0Pj4yXXwwO2E9a1soa1tpPj4yXXwwKSs5Nj4+Ml18MDtiPSgoYXwwKTwwKTw8MzE+PjMxO2lmKChofDApPihifDApfCgoaHwwKT09KGJ8MCk/KGtbYz4+Ml18MCk+Pj4wPmE+Pj4wOjApKXtCZShrW2Q+PjJdfDApO2tbZj4+Ml09MDtpPWtbZj4+Ml18MDtyPWc7cmV0dXJuIGl8MH1pPWU7aT1qZyhrW2k+PjJdfDAsa1tpKzQ+PjJdfDApfDA7a1tmPj4yXT1pO2lmKGtbZj4+Ml18MCl7aT1rW2Y+PjJdfDA7cj1nO3JldHVybiBpfDB9Q2Uoa1tkPj4yXXwwKTtpPWtbZj4+Ml18MDtyPWc7cmV0dXJuIGl8MH1mdW5jdGlvbiBaUChhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTA7Yz1yO3I9cisxNnwwO2Q9Yys0fDA7Yj1jO2tbZD4+Ml09YTtrW2I+PjJdPShrWyhrWyhrW2Q+PjJdfDApKzEyPj4yXXwwKSs4OD4+Ml18MCkrKCgoa1soa1tkPj4yXXwwKSsxNj4+Ml18MCktMXwwKSoyMHwwKTtyPWM7cmV0dXJuIGtbKGtbYj4+Ml18MCkrMTY+PjJdfDB9ZnVuY3Rpb24gX1AoYSl7YT1hfDA7dmFyIGI9MCxjPTA7Yj1yO3I9cisxNnwwO2M9YjtrW2M+PjJdPWE7aVsoa1tjPj4yXXwwKSsyND4+MF09MTtyPWI7cmV0dXJufWZ1bmN0aW9uICRQKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MDtmPXI7cj1yKzY0fDA7ZD1mKzU2fDA7aD1mKzUyfDA7Zz1mKzQ4fDA7ZT1mO2tbZD4+Ml09YTtrW2g+PjJdPWI7a1tnPj4yXT1jO2lmKGhRKGtbZD4+Ml18MCxrW2g+PjJdfDAsa1tnPj4yXXwwLGUpfDApe3I9ZjtyZXR1cm59aVEoZSk7aD1lO3JlKGtbZD4+Ml18MCwoKygoa1toPj4yXXwwKT4+PjApKzQyOTQ5NjcyOTYuMCorKGtbaCs0Pj4yXXwwKSkvODY0LjBlNSk7cj1mO3JldHVybn1mdW5jdGlvbiBhUShhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaT0wLGo9MDtoPXI7cj1yKzE3NnwwO2U9aCs0OHwwO2Q9aCs2OHwwO2o9aCs2NHwwO2k9aCs2MHwwO2Y9aDtnPWgrNzJ8MDtrW2Q+PjJdPWE7a1tqPj4yXT1iO2tbaT4+Ml09YztpZihoUShrW2Q+PjJdfDAsa1tqPj4yXXwwLGtbaT4+Ml18MCxmKXwwKXtyPWg7cmV0dXJufWtRKGYpO2k9a1tmKzEyPj4yXXwwO2o9a1tmKzE2Pj4yXXwwO2tbZT4+Ml09a1tmKzg+PjJdO2tbZSs0Pj4yXT1pO2tbZSs4Pj4yXT1qO19kKDEwMCxnLDQ1NTA2LGUpfDA7d2Uoa1tkPj4yXXwwLGcsLTEsLTEpO3I9aDtyZXR1cm59ZnVuY3Rpb24gYlEoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGk9MCxqPTA7aD1yO3I9cisxNzZ8MDtlPWgrNDh8MDtkPWgrNjh8MDtqPWgrNjR8MDtpPWgrNjB8MDtmPWg7Zz1oKzcyfDA7a1tkPj4yXT1hO2tbaj4+Ml09YjtrW2k+PjJdPWM7aWYoaFEoa1tkPj4yXXwwLGtbaj4+Ml18MCxrW2k+PjJdfDAsZil8MCl7cj1oO3JldHVybn1sUShmKTtpPWtbZisyND4+Ml18MDtqPX5+K3BbZiszMj4+M107a1tlPj4yXT1rW2YrMjA+PjJdO2tbZSs0Pj4yXT1pO2tbZSs4Pj4yXT1qO19kKDEwMCxnLDQ1NDkxLGUpfDA7d2Uoa1tkPj4yXXwwLGcsLTEsLTEpO3I9aDtyZXR1cm59ZnVuY3Rpb24gY1EoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGk9MCxqPTA7aD1yO3I9cisxOTJ8MDtlPWgrNDh8MDtkPWgrODB8MDtqPWgrNzZ8MDtpPWgrNzJ8MDtmPWg7Zz1oKzg0fDA7a1tkPj4yXT1hO2tbaj4+Ml09YjtrW2k+PjJdPWM7aWYoaFEoa1tkPj4yXXwwLGtbaj4+Ml18MCxrW2k+PjJdfDAsZil8MCl7cj1oO3JldHVybn1qUShmKTtiPWtbZisxMj4+Ml18MDtjPWtbZisxNj4+Ml18MDthPWtbZisyMD4+Ml18MDtpPWtbZisyND4+Ml18MDtqPX5+K3BbZiszMj4+M107a1tlPj4yXT1rW2YrOD4+Ml07a1tlKzQ+PjJdPWI7a1tlKzg+PjJdPWM7a1tlKzEyPj4yXT1hO2tbZSsxNj4+Ml09aTtrW2UrMjA+PjJdPWo7X2QoMTAwLGcsNDU0NjEsZSl8MDt3ZShrW2Q+PjJdfDAsZywtMSwtMSk7cj1oO3JldHVybn1mdW5jdGlvbiBkUShhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLGw9MCxtPTAsbj0wLG89MCxxPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTAsRT0wLEY9MCxHPTAsSD0wLEk9MDtJPXI7cj1yKzMzNnwwO3o9SSsxOTJ8MDt5PUkrMTg0fDA7eD1JKzE3NnwwO3c9SSsxNjh8MDt2PUkrMTYwfDA7dT1JKzE1MnwwO3Q9SSsxNDR8MDtCPUkrMTM2fDA7QT1JKzEyOHwwO3M9SSsxMjB8MDtxPUkrMTEyfDA7aj1JKzIzMnwwO2Q9SSsyMjh8MDtlPUkrMjI0fDA7RD1JKzY0fDA7Zz1JKzU2fDA7bD1JKzIyMHwwO209SSsyMTZ8MDtGPUkrMjEyfDA7Zj1JKzIwOHwwO0g9SSsyMDR8MDtHPUkrMjM2fDA7bz1JKzQ4fDA7bj1JKzIwMHwwO0U9STtDPUkrMTk2fDA7a1tqPj4yXT1hO2tbZD4+Ml09YjtrW2U+PjJdPWM7aWYoIShrW2Q+PjJdfDApKXtyPUk7cmV0dXJufWE9amUoa1trW2U+PjJdPj4yXXwwKXwwO2tbSD4+Ml09YTtpZighKGtbSD4+Ml18MCkpe3I9STtyZXR1cm59aWYoaFEoa1tqPj4yXXwwLChrW2Q+PjJdfDApLTF8MCwoa1tlPj4yXXwwKSs0fDAsRCl8MCl7cj1JO3JldHVybn1hPUZlKGtbaj4+Ml18MCl8MDtrW2Y+PjJdPWE7a1tsPj4yXT0wO2E9ZztrW2E+PjJdPTE7a1thKzQ+PjJdPTA7YTp3aGlsZSgxKXtpZighKGlbKGtbSD4+Ml18MCkrKGtbbD4+Ml18MCk+PjBdfDApKWJyZWFrO2lmKChpWyhrW0g+PjJdfDApKyhrW2w+PjJdfDApPj4wXXwwKT09Mzcpe3N3aXRjaChpWyhrW0g+PjJdfDApKygoa1tsPj4yXXwwKSsxKT4+MF18MCl7Y2FzZSA4NzpjYXNlIDgzOmNhc2UgNzc6Y2FzZSAxMDk6Y2FzZSA3MjpjYXNlIDEwMDp7Yz1nO2M9JFIoa1tjPj4yXXwwLGtbYys0Pj4yXXwwLDEsMCl8MDthPWc7a1thPj4yXT1jO2tbYSs0Pj4yXT1MO2JyZWFrfWNhc2UgMzc6Y2FzZSAxMTk6YnJlYWs7Y2FzZSAxMDI6e2M9ZztjPSRSKGtbYz4+Ml18MCxrW2MrND4+Ml18MCw4LDApfDA7YT1nO2tbYT4+Ml09YztrW2ErND4+Ml09TDticmVha31jYXNlIDEwNjp7Yz1nO2M9JFIoa1tjPj4yXXwwLGtbYys0Pj4yXXwwLDMsMCl8MDthPWc7a1thPj4yXT1jO2tbYSs0Pj4yXT1MO2JyZWFrfWNhc2UgODk6e2M9ZztjPSRSKGtbYz4+Ml18MCxrW2MrND4+Ml18MCw4LDApfDA7YT1nO2tbYT4+Ml09YztrW2ErND4+Ml09TDticmVha31jYXNlIDc0OmNhc2UgMTE1OntjPWc7Yz0kUihrW2M+PjJdfDAsa1tjKzQ+PjJdfDAsNTAsMCl8MDthPWc7a1thPj4yXT1jO2tbYSs0Pj4yXT1MO2JyZWFrfWRlZmF1bHQ6e2g9NDQ7YnJlYWsgYX19a1tsPj4yXT0oa1tsPj4yXXwwKSsxfWtbbD4+Ml09KGtbbD4+Ml18MCkrMTtjPWc7Yz0kUihrW2M+PjJdfDAsa1tjKzQ+PjJdfDAsMSwwKXwwO2E9ZztrW2E+PjJdPWM7a1thKzQ+PjJdPUx9aWYoKGh8MCk9PTQ0KXtyPUk7cmV0dXJufWg9ZzthPWtbaCs0Pj4yXXwwO2lmKCEoYT4+PjA8MHwoYXwwKT09MCYoa1toPj4yXXwwKT4+PjA8MTAwKSl7YT1nO2I9a1thKzQ+PjJdfDA7aD1rWyhrW2Y+PjJdfDApKzk2Pj4yXXwwO2M9KChofDApPDApPDwzMT4+MzE7aWYoYj4+PjA+Yz4+PjB8KChifDApPT0oY3wwKT8oa1thPj4yXXwwKT4+PjA+aD4+PjA6MCkpe0JlKGtbaj4+Ml18MCk7cj1JO3JldHVybn1oPWtbZz4+Ml18MDtoPWR4KGtbZj4+Ml18MCxoLCgoaHwwKTwwKTw8MzE+PjMxKXwwO2tbRj4+Ml09aDtpZighKGtbRj4+Ml18MCkpe0NlKGtbaj4+Ml18MCk7cj1JO3JldHVybn19ZWxzZSBrW0Y+PjJdPUc7aVEoRCk7alEoRCk7a1ttPj4yXT0wO2tbbD4+Ml09MDt3aGlsZSgxKXtpZighKGlbKGtbSD4+Ml18MCkrKGtbbD4+Ml18MCk+PjBdfDApKWJyZWFrO2Q9a1tsPj4yXXwwO2I6ZG8gaWYoKGlbKGtbSD4+Ml18MCkrKGtbbD4+Ml18MCk+PjBdfDApIT0zNyl7Zz1pWyhrW0g+PjJdfDApK2Q+PjBdfDA7aD1rW20+PjJdfDA7a1ttPj4yXT1oKzE7aVsoa1tGPj4yXXwwKStoPj4wXT1nfWVsc2V7a1tsPj4yXT1kKzE7ZG8gc3dpdGNoKGlbKGtbSD4+Ml18MCkrKGtbbD4+Ml18MCk+PjBdfDApe2Nhc2UgMTAwOntoPShrW0Y+PjJdfDApKyhrW20+PjJdfDApfDA7a1txPj4yXT1rW0QrMTY+PjJdO19kKDMsaCw0NTMwMyxxKXwwO2tbbT4+Ml09KGtbbT4+Ml18MCkrMjticmVhayBifWNhc2UgMTAyOntwW28+PjNdPStwW0QrMzI+PjNdO2lmKCtwW28+PjNdPjU5Ljk5OSlwW28+PjNdPTU5Ljk5OTtoPShrW0Y+PjJdfDApKyhrW20+PjJdfDApfDA7cFtzPj4zXT0rcFtvPj4zXTtfZCg3LGgsNDUzMDgscyl8MDtoPVRmKChrW0Y+PjJdfDApKyhrW20+PjJdfDApfDApfDA7a1ttPj4yXT0oa1ttPj4yXXwwKStoO2JyZWFrIGJ9Y2FzZSA3Mjp7aD0oa1tGPj4yXXwwKSsoa1ttPj4yXXwwKXwwO2tbQT4+Ml09a1tEKzIwPj4yXTtfZCgzLGgsNDUzMDMsQSl8MDtrW20+PjJdPShrW20+PjJdfDApKzI7YnJlYWsgYn1jYXNlIDEwNjpjYXNlIDg3OntkPUU7ZT1EO2I9ZCs0OHwwO2Rve2tbZD4+Ml09a1tlPj4yXTtkPWQrNHwwO2U9ZSs0fDB9d2hpbGUoKGR8MCk8KGJ8MCkpO2lbRSs0Mj4+MF09MDtrW0UrMTI+PjJdPTE7a1tFKzE2Pj4yXT0xO2lRKEUpO2c9RDtoPUU7aD1pUygkUihfUihrW2c+PjJdfDAsa1tnKzQ+PjJdfDAsa1toPj4yXXwwLGtbaCs0Pj4yXXwwKXwwLEx8MCw0MzJlNSwwKXwwLEx8MCw4NjRlNSwwKXwwO2tbbj4+Ml09aDtpZigoaVsoa1tIPj4yXXwwKSsoa1tsPj4yXXwwKT4+MF18MCk9PTg3KXtoPUQ7aD0kUihrW2g+PjJdfDAsa1toKzQ+PjJdfDAsNDMyZTUsMCl8MDtoPWlTKGh8MCxMfDAsODY0ZTUsMCl8MDtoPWpTKGh8MCxMfDAsNywwKXwwO2tbQz4+Ml09aDtoPShrW0Y+PjJdfDApKyhrW20+PjJdfDApfDA7a1tCPj4yXT0oKGtbbj4+Ml18MCkrNy0oa1tDPj4yXXwwKXwwKS83fDA7X2QoMyxoLDQ1MzAzLEIpfDA7a1ttPj4yXT0oa1ttPj4yXXwwKSsyO2JyZWFrIGJ9ZWxzZXtoPShrW0Y+PjJdfDApKyhrW20+PjJdfDApfDA7a1t0Pj4yXT0oa1tuPj4yXXwwKSsxO19kKDQsaCw0NTMxNSx0KXwwO2tbbT4+Ml09KGtbbT4+Ml18MCkrMzticmVhayBifX1jYXNlIDc0OntoPShrW0Y+PjJdfDApKyhrW20+PjJdfDApfDA7Zz1EO3BbdT4+M109KCsoKGtbZz4+Ml18MCk+Pj4wKSs0Mjk0OTY3Mjk2LjAqKyhrW2crND4+Ml18MCkpLzg2NC4wZTU7X2QoMjAsaCw0MTk0Nix1KXwwO2g9VGYoKGtbRj4+Ml18MCkrKGtbbT4+Ml18MCl8MCl8MDtrW20+PjJdPShrW20+PjJdfDApK2g7YnJlYWsgYn1jYXNlIDEwOTp7aD0oa1tGPj4yXXwwKSsoa1ttPj4yXXwwKXwwO2tbdj4+Ml09a1tEKzEyPj4yXTtfZCgzLGgsNDUzMDMsdil8MDtrW20+PjJdPShrW20+PjJdfDApKzI7YnJlYWsgYn1jYXNlIDc3OntoPShrW0Y+PjJdfDApKyhrW20+PjJdfDApfDA7a1t3Pj4yXT1rW0QrMjQ+PjJdO19kKDMsaCw0NTMwMyx3KXwwO2tbbT4+Ml09KGtbbT4+Ml18MCkrMjticmVhayBifWNhc2UgMTE1OntoPShrW0Y+PjJdfDApKyhrW20+PjJdfDApfDA7Zj1EO2Y9X1IoaVMoa1tmPj4yXXwwLGtbZis0Pj4yXXwwLDFlMywwKXwwLEx8MCw0MTMzNjI0OTYsNDkpfDA7Zz14O2tbZz4+Ml09ZjtrW2crND4+Ml09TDtfZCgzMCxoLDI4MjY2LHgpfDA7aD1UZigoa1tGPj4yXXwwKSsoa1ttPj4yXXwwKXwwKXwwO2tbbT4+Ml09KGtbbT4+Ml18MCkraDticmVhayBifWNhc2UgODM6e2g9KGtbRj4+Ml18MCkrKGtbbT4+Ml18MCl8MDtrW3k+PjJdPX5+K3BbRCszMj4+M107X2QoMyxoLDQ1MzAzLHkpfDA7a1ttPj4yXT0oa1ttPj4yXXwwKSsyO2JyZWFrIGJ9Y2FzZSAxMTk6e2c9RDtnPWpTKGlTKCRSKGtbZz4+Ml18MCxrW2crND4+Ml18MCwxMjk2ZTUsMCl8MCxMfDAsODY0ZTUsMCl8MCxMfDAsNywwKXwwO2g9a1ttPj4yXXwwO2tbbT4+Ml09aCsxO2lbKGtbRj4+Ml18MCkraD4+MF09KChnJjI1NSk8PDI0Pj4yNCkrNDg7YnJlYWsgYn1jYXNlIDg5OntoPShrW0Y+PjJdfDApKyhrW20+PjJdfDApfDA7a1t6Pj4yXT1rW0QrOD4+Ml07X2QoNSxoLDQ1MzIwLHopfDA7aD1UZigoa1tGPj4yXXwwKSsoa1ttPj4yXXwwKXwwKXwwO2tbbT4+Ml09KGtbbT4+Ml18MCkraDticmVhayBifWRlZmF1bHQ6e2g9a1ttPj4yXXwwO2tbbT4+Ml09aCsxO2lbKGtbRj4+Ml18MCkraD4+MF09Mzc7YnJlYWsgYn19d2hpbGUoMCl9d2hpbGUoMCk7a1tsPj4yXT0oa1tsPj4yXXwwKSsxfWlbKGtbRj4+Ml18MCkrKGtbbT4+Ml18MCk+PjBdPTA7d2Uoa1tqPj4yXXwwLGtbRj4+Ml18MCwtMSwoa1tGPj4yXXwwKT09KEd8MCk/LTE6MTcwKTtyPUk7cmV0dXJufWZ1bmN0aW9uIGVRKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MDtkPXI7cj1yKzE2fDA7ZT1kKzh8MDtrW2U+PjJdPWE7a1tkKzQ+PjJdPWI7a1tkPj4yXT1jO2JRKGtbZT4+Ml18MCwwLDApO3I9ZDtyZXR1cm59ZnVuY3Rpb24gZlEoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wO2Q9cjtyPXIrMTZ8MDtlPWQrOHwwO2tbZT4+Ml09YTtrW2QrND4+Ml09YjtrW2Q+PjJdPWM7Y1Eoa1tlPj4yXXwwLDAsMCk7cj1kO3JldHVybn1mdW5jdGlvbiBnUShhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTA7ZD1yO3I9cisxNnwwO2U9ZCs4fDA7a1tlPj4yXT1hO2tbZCs0Pj4yXT1iO2tbZD4+Ml09YzthUShrW2U+PjJdfDAsMCwwKTtyPWQ7cmV0dXJufWZ1bmN0aW9uIGhRKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGw9MCxtPTAsbj0wLG89MCxwPTAuMDtvPXI7cj1yKzMyfDA7bj1vKzI4fDA7ZT1vKzI0fDA7Zj1vKzIwfDA7Zz1vKzE2fDA7aD1vKzEyfDA7bD1vKzh8MDttPW8rNHwwO2o9bztrW2U+PjJdPWE7a1tmPj4yXT1iO2tbZz4+Ml09YztrW2g+PjJdPWQ7Yj1rW2g+PjJdfDA7Yz1iKzQ4fDA7ZG97a1tiPj4yXT0wO2I9Yis0fDB9d2hpbGUoKGJ8MCk8KGN8MCkpO2lmKCEoa1tmPj4yXXwwKSl7bT1tUShrW2U+PjJdfDAsa1toPj4yXXwwKXwwO2tbbj4+Ml09bTtuPWtbbj4+Ml18MDtyPW87cmV0dXJuIG58MH1kPW9lKGtba1tnPj4yXT4+Ml18MCl8MDtrW2o+PjJdPWQ7Yj1rW2tbZz4+Ml0+PjJdfDA7ZG8gaWYoKGR8MCk9PTJ8KGtbaj4+Ml18MCk9PTEpe3A9K2xlKGIpKjg2NC4wZTUrLjU7ZD0rVyhwKT49MS4wPyhwPjAuMD9+fitpYSgrVihwLzQyOTQ5NjcyOTYuMCksNDI5NDk2NzI5NS4wKT4+PjA6fn4rZ2EoKHAtKyh+fnA+Pj4wKSkvNDI5NDk2NzI5Ni4wKT4+PjApOjA7aj1rW2g+PjJdfDA7a1tqPj4yXT1+fnA+Pj4wO2tbais0Pj4yXT1kO2lbKGtbaD4+Ml18MCkrNDI+PjBdPTF9ZWxzZXtqPWplKGIpfDA7a1ttPj4yXT1qO2lmKChrW20+PjJdfDApIT0wPyhuUShrW2U+PjJdfDAsa1ttPj4yXXwwLGtbaD4+Ml18MCl8MCk9PTA6MClicmVhaztrW24+PjJdPTE7bj1rW24+PjJdfDA7cj1vO3JldHVybiBufDB9d2hpbGUoMCk7a1tsPj4yXT0xO3doaWxlKDEpe2lmKChrW2w+PjJdfDApPj0oa1tmPj4yXXwwKSl7Yj0xNDticmVha31qPWplKGtbKGtbZz4+Ml18MCkrKGtbbD4+Ml08PDIpPj4yXXwwKXwwO2tbbT4+Ml09ajtpZighKGtbbT4+Ml18MCkpe2I9MTI7YnJlYWt9aWYob1Eoa1tlPj4yXXwwLGtbbT4+Ml18MCxrW2g+PjJdfDApfDApe2I9MTI7YnJlYWt9a1tsPj4yXT0oa1tsPj4yXXwwKSsxfWlmKChifDApPT0xMil7a1tuPj4yXT0xO249a1tuPj4yXXwwO3I9bztyZXR1cm4gbnwwfWVsc2UgaWYoKGJ8MCk9PTE0KXtrW24+PjJdPTA7bj1rW24+PjJdfDA7cj1vO3JldHVybiBufDB9cmV0dXJuIDB9ZnVuY3Rpb24gaVEoYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsbD0wLG09MC4wO2w9cjtyPXIrMzJ8MDtiPWwrMjh8MDtqPWwrMjR8MDtmPWwrMjB8MDtlPWwrMTZ8MDtjPWwrMTJ8MDtkPWwrOHwwO2c9bCs0fDA7aD1sO2tbYj4+Ml09YTtpZihpWyhrW2I+PjJdfDApKzQyPj4wXXwwKXtyPWw7cmV0dXJufWlmKGlbKGtbYj4+Ml18MCkrNDA+PjBdfDApe2tbaj4+Ml09a1soa1tiPj4yXXwwKSs4Pj4yXTtrW2Y+PjJdPWtbKGtbYj4+Ml18MCkrMTI+PjJdO2tbZT4+Ml09a1soa1tiPj4yXXwwKSsxNj4+Ml19ZWxzZXtrW2o+PjJdPTJlMztrW2Y+PjJdPTE7a1tlPj4yXT0xfWlmKChrW2Y+PjJdfDApPD0yKXtrW2o+PjJdPShrW2o+PjJdfDApKy0xO2tbZj4+Ml09KGtbZj4+Ml18MCkrMTJ9a1tjPj4yXT0oa1tqPj4yXXwwKS8xMDB8MDtrW2Q+PjJdPTItKGtbYz4+Ml18MCkrKChrW2M+PjJdfDApLzR8MCk7a1tnPj4yXT0oKChrW2o+PjJdfDApKzQ3MTZ8MCkqMzY1MjV8MCkvMTAwfDA7a1toPj4yXT0oKChrW2Y+PjJdfDApKzF8MCkqMzA2MDAxfDApLzFlNHwwO209KCsoKGtbZz4+Ml18MCkrKGtbaD4+Ml18MCkrKGtbZT4+Ml18MCkrKGtbZD4+Ml18MCl8MCktMTUyNC41KSo4NjQuMGU1O2o9K1cobSk+PTEuMD8obT4wLjA/fn4raWEoK1YobS80Mjk0OTY3Mjk2LjApLDQyOTQ5NjcyOTUuMCk+Pj4wOn5+K2dhKChtLSsofn5tPj4+MCkpLzQyOTQ5NjcyOTYuMCk+Pj4wKTowO2E9a1tiPj4yXXwwO2tbYT4+Ml09fn5tPj4+MDtrW2ErND4+Ml09ajtpWyhrW2I+PjJdfDApKzQyPj4wXT0xO2lmKCEoaVsoa1tiPj4yXXwwKSs0MT4+MF18MCkpe3I9bDtyZXR1cm59aj1oYShrWyhrW2I+PjJdfDApKzIwPj4yXXwwLDM2ZTUpfDA7aj1qKygoa1soa1tiPj4yXXwwKSsyND4+Ml18MCkqNmU0fDApfDA7bT0rcFsoa1tiPj4yXXwwKSszMj4+M10qMS4wZTM7aj0kUihqfDAsKChqfDApPDApPDwzMT4+MzF8MCx+fm0+Pj4wfDAsKCtXKG0pPj0xLjA/KG0+MC4wP35+K2lhKCtWKG0vNDI5NDk2NzI5Ni4wKSw0Mjk0OTY3Mjk1LjApPj4+MDp+fitnYSgobS0rKH5+bT4+PjApKS80Mjk0OTY3Mjk2LjApPj4+MCk6MCl8MCl8MDthPWtbYj4+Ml18MDtoPWE7aj0kUihrW2g+PjJdfDAsa1toKzQ+PjJdfDAsanwwLEx8MCl8MDtrW2E+PjJdPWo7a1thKzQ+PjJdPUw7aWYoIShpWyhrW2I+PjJdfDApKzQzPj4wXXwwKSl7cj1sO3JldHVybn1qPShrWyhrW2I+PjJdfDApKzI4Pj4yXXwwKSo2ZTR8MDthPWtbYj4+Ml18MDtoPWE7aj1fUihrW2g+PjJdfDAsa1toKzQ+PjJdfDAsanwwLCgoanwwKTwwKTw8MzE+PjMxfDApfDA7a1thPj4yXT1qO2tbYSs0Pj4yXT1MO2lbKGtbYj4+Ml18MCkrNDA+PjBdPTA7aVsoa1tiPj4yXXwwKSs0MT4+MF09MDtpWyhrW2I+PjJdfDApKzQzPj4wXT0wO3I9bDtyZXR1cm59ZnVuY3Rpb24galEoYSl7YT1hfDA7dmFyIGI9MCxjPTA7Yj1yO3I9cisxNnwwO2M9YjtrW2M+PjJdPWE7a1Eoa1tjPj4yXXwwKTtsUShrW2M+PjJdfDApO3I9YjtyZXR1cm59ZnVuY3Rpb24ga1EoYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsbD0wO2w9cjtyPXIrMzJ8MDtiPWwrMjh8MDtqPWwrMjR8MDtjPWwrMjB8MDtkPWwrMTZ8MDtlPWwrMTJ8MDtmPWwrOHwwO2c9bCs0fDA7aD1sO2tbYj4+Ml09YTtpZihpWyhrW2I+PjJdfDApKzQwPj4wXXwwKXtyPWw7cmV0dXJufWE9a1tiPj4yXXwwO2lmKGlbKGtbYj4+Ml18MCkrNDI+PjBdfDApe2E9JFIoa1thPj4yXXwwLGtbYSs0Pj4yXXwwLDQzMmU1LDApfDA7YT1pUyhhfDAsTHwwLDg2NGU1LDApfDA7a1tqPj4yXT1hO2tbYz4+Ml09fn4oKCsoa1tqPj4yXXwwKS0xODY3MjE2LjI1KS8zNjUyNC4yNSk7a1tjPj4yXT0oa1tqPj4yXXwwKSsxKyhrW2M+PjJdfDApLSgoa1tjPj4yXXwwKS80fDApO2tbZD4+Ml09KGtbYz4+Ml18MCkrMTUyNDtrW2U+PjJdPX5+KCgrKGtbZD4+Ml18MCktMTIyLjEpLzM2NS4yNSk7a1tmPj4yXT0oKGtbZT4+Ml0mMzI3NjcpKjM2NTI1fDApLzEwMHwwO2tbZz4+Ml09fn4oKygoa1tkPj4yXXwwKS0oa1tmPj4yXXwwKXwwKS8zMC42MDAxKTtrW2g+PjJdPX5+KCsoa1tnPj4yXXwwKSozMC42MDAxKTtrWyhrW2I+PjJdfDApKzE2Pj4yXT0oa1tkPj4yXXwwKS0oa1tmPj4yXXwwKS0oa1toPj4yXXwwKTtqPWtbZz4+Ml18MDtrWyhrW2I+PjJdfDApKzEyPj4yXT0oa1tnPj4yXXwwKTwxND9qLTF8MDpqLTEzfDA7aj1rW2U+PjJdfDA7a1soa1tiPj4yXXwwKSs4Pj4yXT0oa1soa1tiPj4yXXwwKSsxMj4+Ml18MCk+Mj9qLTQ3MTZ8MDpqLTQ3MTV8MH1lbHNle2tbYSs4Pj4yXT0yZTM7a1soa1tiPj4yXXwwKSsxMj4+Ml09MTtrWyhrW2I+PjJdfDApKzE2Pj4yXT0xfWlbKGtbYj4+Ml18MCkrNDA+PjBdPTE7cj1sO3JldHVybn1mdW5jdGlvbiBsUShhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTA7ZD1yO3I9cisxNnwwO2I9ZCs0fDA7Yz1kO2tbYj4+Ml09YTtpZihpWyhrW2I+PjJdfDApKzQxPj4wXXwwKXtyPWQ7cmV0dXJufWlRKGtbYj4+Ml18MCk7YT1rW2I+PjJdfDA7YT0kUihrW2E+PjJdfDAsa1thKzQ+PjJdfDAsNDMyZTUsMCl8MDthPWpTKGF8MCxMfDAsODY0ZTUsMCl8MDtrW2M+PjJdPWE7cFsoa1tiPj4yXXwwKSszMj4+M109KyhrW2M+PjJdfDApLzEuMGUzO2tbYz4+Ml09fn4rcFsoa1tiPj4yXXwwKSszMj4+M107YT0oa1tiPj4yXXwwKSszMnwwO3BbYT4+M109K3BbYT4+M10tKyhrW2M+PjJdfDApO2tbKGtbYj4+Ml18MCkrMjA+PjJdPShrW2M+PjJdfDApLzM2MDB8MDtrW2M+PjJdPShrW2M+PjJdfDApLSgoa1soa1tiPj4yXXwwKSsyMD4+Ml18MCkqMzYwMHwwKTtrWyhrW2I+PjJdfDApKzI0Pj4yXT0oa1tjPj4yXXwwKS82MHwwO2E9KGtbYj4+Ml18MCkrMzJ8MDtwW2E+PjNdPStwW2E+PjNdKyArKChrW2M+PjJdfDApLSgoa1soa1tiPj4yXXwwKSsyND4+Ml18MCkqNjB8MCl8MCk7aVsoa1tiPj4yXXwwKSs0MT4+MF09MTtyPWQ7cmV0dXJufWZ1bmN0aW9uIG1RKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MDtlPXI7cj1yKzE2fDA7Yz1lKzh8MDtmPWUrNHwwO2Q9ZTtrW2Y+PjJdPWE7a1tkPj4yXT1iO2E9d1Eoa1tmPj4yXXwwKXwwO2I9a1tkPj4yXXwwO2tbYj4+Ml09YTtrW2IrND4+Ml09TDtiPWtbZD4+Ml18MDthPWtbYis0Pj4yXXwwO2lmKChhfDApPjB8KGF8MCk9PTAmKGtbYj4+Ml18MCk+Pj4wPjApe2lbKGtbZD4+Ml18MCkrNDI+PjBdPTE7a1tjPj4yXT0wO2Y9a1tjPj4yXXwwO3I9ZTtyZXR1cm4gZnwwfWVsc2V7a1tjPj4yXT0xO2Y9a1tjPj4yXXwwO3I9ZTtyZXR1cm4gZnwwfXJldHVybiAwfWZ1bmN0aW9uIG5RKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsbD0wLjA7aj1yO3I9ciszMnwwO2Q9aisyMHwwO2U9aisxNnwwO2Y9aisxMnwwO2c9ais4fDA7aD1qO2tbZT4+Ml09YTtrW2Y+PjJdPWI7a1tnPj4yXT1jO2lmKCEodlEoa1tmPj4yXXwwLGtbZz4+Ml18MCl8MCkpe2tbZD4+Ml09MDtiPWtbZD4+Ml18MDtyPWo7cmV0dXJuIGJ8MH1pZighKHJRKGtbZj4+Ml18MCxrW2c+PjJdfDApfDApKXtrW2Q+PjJdPTA7Yj1rW2Q+PjJdfDA7cj1qO3JldHVybiBifDB9aWYoIShzZyhrW2Y+PjJdfDAsNDU0NDUpfDApKXtiPW1RKGtbZT4+Ml18MCxrW2c+PjJdfDApfDA7a1tkPj4yXT1iO2I9a1tkPj4yXXwwO3I9ajtyZXR1cm4gYnwwfWI9a1tmPj4yXXwwO2lmKG96KGIsaCxUZihrW2Y+PjJdfDApfDAsMSl8MCl7bD0rcFtoPj4zXSo4NjQuMGU1Ky41O2g9K1cobCk+PTEuMD8obD4wLjA/fn4raWEoK1YobC80Mjk0OTY3Mjk2LjApLDQyOTQ5NjcyOTUuMCk+Pj4wOn5+K2dhKChsLSsofn5sPj4+MCkpLzQyOTQ5NjcyOTYuMCk+Pj4wKTowO2I9a1tnPj4yXXwwO2tbYj4+Ml09fn5sPj4+MDtrW2IrND4+Ml09aDtpWyhrW2c+PjJdfDApKzQyPj4wXT0xO2tbZD4+Ml09MDtiPWtbZD4+Ml18MDtyPWo7cmV0dXJuIGJ8MH1lbHNle2tbZD4+Ml09MTtiPWtbZD4+Ml18MDtyPWo7cmV0dXJuIGJ8MH1yZXR1cm4gMH1mdW5jdGlvbiBvUShhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLG09MCxuPTAsbz0wLHE9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MC4wO3o9cjtyPXIrMTYwfDA7ZD16KzEyNHwwO2U9eisxMjB8MDt3PXorMTE2fDA7eD16KzExMnwwO2g9eisxMDh8MDtqPXorODB8MDt5PXorMTA0fDA7Zz16KzcyfDA7Zj16KzY0fDA7bT16KzU2fDA7dj16KzEwMHwwO3U9eis4fDA7dD16O249eis5NnwwO289eis5MnwwO3E9eis4OHwwO2tbZD4+Ml09YTtrW2U+PjJdPWI7a1t3Pj4yXT1jO2tbeD4+Ml09MTtrW3k+PjJdPXorMTI4O2tbaD4+Ml09MDt3aGlsZSgxKXtpZigoa1toPj4yXXwwKTwyOSlhPShpWyhrW2U+PjJdfDApKyhrW2g+PjJdfDApPj4wXXwwKSE9MDtlbHNlIGE9MDtjPWtbaD4+Ml18MDtpZighYSlicmVhaztpWyhrW3k+PjJdfDApKyhrW2g+PjJdfDApPj4wXT1pWzE3NjEzKyhsWyhrW2U+PjJdfDApK2M+PjBdfDApPj4wXXwwO2tbaD4+Ml09KGtbaD4+Ml18MCkrMX1pWyhrW3k+PjJdfDApK2M+PjBdPTA7c3dpdGNoKGlba1t5Pj4yXT4+MF18MCl7Y2FzZSAxMDg6e2lmKHJSKGtbeT4+Ml18MCw0NTMyNSl8MCl7eT1rW3g+PjJdfDA7cj16O3JldHVybiB5fDB9aVEoa1t3Pj4yXXwwKTt2PXBRKGtbdz4+Ml18MCxrW2Q+PjJdfDAseCl8MDt5PWtbdz4+Ml18MDt1PXk7dj0kUihrW3U+PjJdfDAsa1t1KzQ+PjJdfDAsdnwwLEx8MCl8MDtrW3k+PjJdPXY7a1t5KzQ+PjJdPUw7cVEoa1t3Pj4yXXwwKTt5PWtbeD4+Ml18MDtyPXo7cmV0dXJuIHl8MH1jYXNlIDExNzp7aWYoKHJSKGtbeT4+Ml18MCw0NTMzNSl8MCk9PTA/KGlbKGtbdz4+Ml18MCkrNDI+PjBdfDApIT0wOjApe3Y9a1t3Pj4yXXwwO3Y9JFIoa1t2Pj4yXXwwLGtbdis0Pj4yXXwwLDQzMjAwLDApfDA7dj1pUyh2fDAsTHwwLDg2NDAwLDApfDA7dj0kUih2fDAsTHwwLDEwNDU2MzU1ODQsNDkwOTYpfDA7eT1rW3c+PjJdfDA7a1t5Pj4yXT12O2tbeSs0Pj4yXT1MO3FRKGtbdz4+Ml18MCk7a1t4Pj4yXT0wO3k9a1t4Pj4yXXwwO3I9ejtyZXR1cm4geXwwfWlmKHJSKGtbeT4+Ml18MCw0NTM0NSl8MCl7eT1rW3g+PjJdfDA7cj16O3JldHVybiB5fDB9aWYoaVsoa1t3Pj4yXXwwKSs0ND4+MF18MCl7a1t4Pj4yXT0wO3k9a1t4Pj4yXXwwO3I9ejtyZXR1cm4geXwwfWlRKGtbdz4+Ml18MCk7dj1wUShrW3c+PjJdfDAsa1tkPj4yXXwwLHgpfDA7eT1nO2tbeT4+Ml09djtrW3krND4+Ml09TDtpZighKGtbeD4+Ml18MCkpe3U9Zzt5PWtbdz4+Ml18MDt2PXk7dT1fUihrW3Y+PjJdfDAsa1t2KzQ+PjJdfDAsa1t1Pj4yXXwwLGtbdSs0Pj4yXXwwKXwwO2tbeT4+Ml09dTtrW3krND4+Ml09TDtxUShrW3c+PjJdfDApO3k9Zzt1PWtbeT4+Ml18MDt5PWtbeSs0Pj4yXXwwO3Y9cFEoa1t3Pj4yXXwwLGtbZD4+Ml18MCx4KXwwO3Y9X1IodXwwLHl8MCx2fDAsTHwwKXwwO3k9a1t3Pj4yXXwwO3U9eTt2PSRSKGtbdT4+Ml18MCxrW3UrND4+Ml18MCx2fDAsTHwwKXwwO2tbeT4+Ml09djtrW3krND4+Ml09TH1pWyhrW3c+PjJdfDApKzQ0Pj4wXT0xO3k9a1t4Pj4yXXwwO3I9ejtyZXR1cm4geXwwfWNhc2UgMTE5OntpZih2UihrW3k+PjJdfDAsNDUzNDksOCl8MCl7eT1rW3g+PjJdfDA7cj16O3JldHVybiB5fDB9aWYoIShveigoa1t5Pj4yXXwwKSs4fDAsaixUZigoa1t5Pj4yXXwwKSs4fDApfDAsMSl8MCkpe3k9a1t4Pj4yXXwwO3I9ejtyZXR1cm4geXwwfXk9fn4rcFtqPj4zXTtrW2g+PjJdPXk7aWYoISgoKGtbaD4+Ml18MCk+PTA/Kyh5fDApPT0rcFtqPj4zXTowKSYrcFtqPj4zXTw3LjApKXt5PWtbeD4+Ml18MDtyPXo7cmV0dXJuIHl8MH1qUShrW3c+PjJdfDApO2lbKGtbdz4+Ml18MCkrNDM+PjBdPTA7aVsoa1t3Pj4yXXwwKSs0Mj4+MF09MDtpUShrW3c+PjJdfDApO3Q9a1t3Pj4yXXwwO3Q9alMoaVMoJFIoa1t0Pj4yXXwwLGtbdCs0Pj4yXXwwLDEyOTZlNSwwKXwwLEx8MCw4NjRlNSwwKXwwLEx8MCw3LDApfDA7dj1mO2tbdj4+Ml09dDtrW3YrND4+Ml09TDt2PWY7dD1rW3YrND4+Ml18MDt5PWtbaD4+Ml18MDt1PSgoeXwwKTwwKTw8MzE+PjMxO2lmKCh0fDApPih1fDApfCgodHwwKT09KHV8MCk/KGtbdj4+Ml18MCk+Pj4wPnk+Pj4wOjApKXt2PWY7dj1fUihrW3Y+PjJdfDAsa1t2KzQ+PjJdfDAsNywwKXwwO3k9ZjtrW3k+PjJdPXY7a1t5KzQ+PjJdPUx9eT1rW2g+PjJdfDA7dj1mO3Y9a1MoX1IoeXwwLCgoeXwwKTwwKTw8MzE+PjMxfDAsa1t2Pj4yXXwwLGtbdis0Pj4yXXwwKXwwLEx8MCw4NjRlNSwwKXwwO3k9a1t3Pj4yXXwwO3U9eTt2PSRSKGtbdT4+Ml18MCxrW3UrND4+Ml18MCx2fDAsTHwwKXwwO2tbeT4+Ml09djtrW3krND4+Ml09TDtxUShrW3c+PjJdfDApO2tbeD4+Ml09MDt5PWtbeD4+Ml18MDtyPXo7cmV0dXJuIHl8MH1jYXNlIDExNTp7aWYodlIoa1t5Pj4yXXwwLDQ1MzU4LDkpfDApe3k9a1t4Pj4yXXwwO3I9ejtyZXR1cm4geXwwfWtbeT4+Ml09KGtbeT4+Ml18MCkrOTtrUShrW3c+PjJdfDApO2lbKGtbdz4+Ml18MCkrNDE+PjBdPTE7a1soa1t3Pj4yXXwwKSsyND4+Ml09MDtrWyhrW3c+PjJdfDApKzIwPj4yXT0wO3BbKGtbdz4+Ml18MCkrMzI+PjNdPTAuMDtpWyhrW3c+PjJdfDApKzQzPj4wXT0wO2lbKGtbdz4+Ml18MCkrNDI+PjBdPTA7aWYoIShyUihrW3k+PjJdfDAsNDUzNjgpfDApKXtrWyhrW3c+PjJdfDApKzE2Pj4yXT0xO2tbeD4+Ml09MDt5PWtbeD4+Ml18MDtyPXo7cmV0dXJuIHl8MH1pZighKHJSKGtbeT4+Ml18MCw0NTM3NCl8MCkpe2tRKGtbdz4+Ml18MCk7a1soa1t3Pj4yXXwwKSsxMj4+Ml09MTtrWyhrW3c+PjJdfDApKzE2Pj4yXT0xO2tbeD4+Ml09MDt5PWtbeD4+Ml18MDtyPXo7cmV0dXJuIHl8MH1pZihyUihrW3k+PjJdfDAsNDUzNzkpfDApe3k9a1t4Pj4yXXwwO3I9ejtyZXR1cm4geXwwfWtbeD4+Ml09MDt5PWtbeD4+Ml18MDtyPXo7cmV0dXJuIHl8MH1jYXNlIDU3OmNhc2UgNTY6Y2FzZSA1NTpjYXNlIDU0OmNhc2UgNTM6Y2FzZSA1MjpjYXNlIDUxOmNhc2UgNTA6Y2FzZSA0OTpjYXNlIDQ4OmNhc2UgNDU6Y2FzZSA0Mzp7a1toPj4yXT0xO3doaWxlKDEpe2lmKCEoaVsoa1t5Pj4yXXwwKSsoa1toPj4yXXwwKT4+MF18MCkpYnJlYWs7aWYoKGlbKGtbeT4+Ml18MCkrKGtbaD4+Ml18MCk+PjBdfDApPT01OClicmVhaztpZighKChsWzE4NDAzKyhsWyhrW3k+PjJdfDApKyhrW2g+PjJdfDApPj4wXXwwKT4+MF0mMXwwKSE9MF4xKSlicmVhaztrW2g+PjJdPShrW2g+PjJdfDApKzF9aWYoIShveihrW3k+PjJdfDAsaixrW2g+PjJdfDAsMSl8MCkpe2tbeD4+Ml09MTt5PWtbeD4+Ml18MDtyPXo7cmV0dXJuIHl8MH1pZigoaVsoa1t5Pj4yXXwwKSsoa1toPj4yXXwwKT4+MF18MCk9PTU4KXtrW3Y+PjJdPWtbeT4+Ml07aWYoIShsWzE4NDAzKyhsW2tbdj4+Ml0+PjBdfDApPj4wXSY0KSlrW3Y+PjJdPShrW3Y+PjJdfDApKzE7Yz11O2E9Yys0OHwwO2Rve2tbYz4+Ml09MDtjPWMrNHwwfXdoaWxlKChjfDApPChhfDApKTtpZihyUShrW3Y+PjJdfDAsdSl8MCl7eT1rW3g+PjJdfDA7cj16O3JldHVybiB5fDB9aVEodSk7dj11O3Y9X1Ioa1t2Pj4yXXwwLGtbdis0Pj4yXXwwLDQzMmU1LDApfDA7cz11O2tbcz4+Ml09djtrW3MrND4+Ml09TDtzPXU7cz1pUyhrW3M+PjJdfDAsa1tzKzQ+PjJdfDAsODY0ZTUsMCl8MDt2PXQ7a1t2Pj4yXT1zO2tbdis0Pj4yXT1MO3Q9a1Moa1t0Pj4yXXwwLGtbdCs0Pj4yXXwwLDg2NGU1LDApfDA7dj11O3Q9X1Ioa1t2Pj4yXXwwLGtbdis0Pj4yXXwwLHR8MCxMfDApfDA7dj11O2tbdj4+Ml09dDtrW3YrND4+Ml09TDtpZigoaVtrW3k+PjJdPj4wXXwwKT09NDUpe3Y9dTt2PV9SKDAsMCxrW3Y+PjJdfDAsa1t2KzQ+PjJdfDApfDA7eT11O2tbeT4+Ml09djtrW3krND4+Ml09TH1pUShrW3c+PjJdfDApO3FRKGtbdz4+Ml18MCk7dj11O3k9a1t3Pj4yXXwwO3c9eTt3PSRSKGtbdz4+Ml18MCxrW3crND4+Ml18MCxrW3Y+PjJdfDAsa1t2KzQ+PjJdfDApfDA7a1t5Pj4yXT13O2tbeSs0Pj4yXT1MO2tbeD4+Ml09MDt5PWtbeD4+Ml18MDtyPXo7cmV0dXJuIHl8MH1rW3k+PjJdPShrW3k+PjJdfDApKyhrW2g+PjJdfDApO3doaWxlKDEpe2M9a1t5Pj4yXXwwO2lmKCEobFsxODQwMysobFtrW3k+PjJdPj4wXXwwKT4+MF0mMSkpYnJlYWs7a1t5Pj4yXT1jKzF9dj1UZihjKXwwO2tbaD4+Ml09djtpZigoa1toPj4yXXwwKT4xMHwoa1toPj4yXXwwKTwzKXt5PWtbeD4+Ml18MDtyPXo7cmV0dXJuIHl8MH1pZigoaVsoa1t5Pj4yXXwwKSsoKGtbaD4+Ml18MCktMSk+PjBdfDApPT0xMTUpe2lbKGtbeT4+Ml18MCkrKChrW2g+PjJdfDApLTEpPj4wXT0wO2tbaD4+Ml09KGtbaD4+Ml18MCkrLTF9aVEoa1t3Pj4yXXwwKTtrW3g+PjJdPTA7cFttPj4zXT0rcFtqPj4zXTwwLjA/LS41Oi41O2lmKChrW2g+PjJdfDApPT0zPyhyUihrW3k+PjJdfDAsNDUzNzkpfDApPT0wOjApe0E9K3Bbaj4+M10qODY0LjBlNSsgK3BbbT4+M107dj0rVyhBKT49MS4wPyhBPjAuMD9+fitpYSgrVihBLzQyOTQ5NjcyOTYuMCksNDI5NDk2NzI5NS4wKT4+PjA6fn4rZ2EoKEEtKyh+fkE+Pj4wKSkvNDI5NDk2NzI5Ni4wKT4+PjApOjA7eT1rW3c+PjJdfDA7dT15O3Y9JFIoa1t1Pj4yXXwwLGtbdSs0Pj4yXXwwLH5+QT4+PjB8MCx2fDApfDA7a1t5Pj4yXT12O2tbeSs0Pj4yXT1MfWVsc2Ugcz01NDtkbyBpZigoc3wwKT09NTQpe2lmKChrW2g+PjJdfDApPT00PyhyUihrW3k+PjJdfDAsNDUzODMpfDApPT0wOjApe0E9K3Bbaj4+M10qMzYuMGU1KyArcFttPj4zXTt2PStXKEEpPj0xLjA/KEE+MC4wP35+K2lhKCtWKEEvNDI5NDk2NzI5Ni4wKSw0Mjk0OTY3Mjk1LjApPj4+MDp+fitnYSgoQS0rKH5+QT4+PjApKS80Mjk0OTY3Mjk2LjApPj4+MCk6MDt5PWtbdz4+Ml18MDt1PXk7dj0kUihrW3U+PjJdfDAsa1t1KzQ+PjJdfDAsfn5BPj4+MHwwLHZ8MCl8MDtrW3k+PjJdPXY7a1t5KzQ+PjJdPUw7YnJlYWt9aWYoKGtbaD4+Ml18MCk9PTY/KHJSKGtbeT4+Ml18MCw0NTM4OCl8MCk9PTA6MCl7QT0rcFtqPj4zXSo2LjBlNCsgK3BbbT4+M107dj0rVyhBKT49MS4wPyhBPjAuMD9+fitpYSgrVihBLzQyOTQ5NjcyOTYuMCksNDI5NDk2NzI5NS4wKT4+PjA6fn4rZ2EoKEEtKyh+fkE+Pj4wKSkvNDI5NDk2NzI5Ni4wKT4+PjApOjA7eT1rW3c+PjJdfDA7dT15O3Y9JFIoa1t1Pj4yXXwwLGtbdSs0Pj4yXXwwLH5+QT4+PjB8MCx2fDApfDA7a1t5Pj4yXT12O2tbeSs0Pj4yXT1MO2JyZWFrfWlmKChrW2g+PjJdfDApPT02PyhyUihrW3k+PjJdfDAsNDUzOTUpfDApPT0wOjApe0E9K3Bbaj4+M10qMS4wZTMrICtwW20+PjNdO3Y9K1coQSk+PTEuMD8oQT4wLjA/fn4raWEoK1YoQS80Mjk0OTY3Mjk2LjApLDQyOTQ5NjcyOTUuMCk+Pj4wOn5+K2dhKChBLSsofn5BPj4+MCkpLzQyOTQ5NjcyOTYuMCk+Pj4wKTowO3k9a1t3Pj4yXXwwO3U9eTt2PSRSKGtbdT4+Ml18MCxrW3UrND4+Ml18MCx+fkE+Pj4wfDAsdnwwKXwwO2tbeT4+Ml09djtrW3krND4+Ml09TDticmVha31pZigoa1toPj4yXXwwKT09NT8oclIoa1t5Pj4yXXwwLDQ1MzY4KXwwKT09MDowKXtqUShrW3c+PjJdfDApO3k9KGtbdz4+Ml18MCkrMTJ8MDtrW3k+PjJdPShrW3k+PjJdfDApK35+K3Bbaj4+M107eT1rWyhrW3c+PjJdfDApKzEyPj4yXXwwO2tbbj4+Ml09KCgoa1soa1t3Pj4yXXwwKSsxMj4+Ml18MCk+MD95LTF8MDp5LTEyfDApfDApLzEyfDA7eT0oa1t3Pj4yXXwwKSs4fDA7a1t5Pj4yXT0oa1t5Pj4yXXwwKSsoa1tuPj4yXXwwKTt5PShrW3c+PjJdfDApKzEyfDA7a1t5Pj4yXT0oa1t5Pj4yXXwwKS0oKGtbbj4+Ml18MCkqMTJ8MCk7aVsoa1t3Pj4yXXwwKSs0Mj4+MF09MDtpUShrW3c+PjJdfDApO2tbbz4+Ml09fn4rcFtqPj4zXTtpZighKCsoa1tvPj4yXXwwKSE9K3Bbaj4+M10pKWJyZWFrO0E9KCtwW2o+PjNdLSsoa1tvPj4yXXwwKSkqMzAuMCo4NjQuMGU1KyArcFttPj4zXTt2PStXKEEpPj0xLjA/KEE+MC4wP35+K2lhKCtWKEEvNDI5NDk2NzI5Ni4wKSw0Mjk0OTY3Mjk1LjApPj4+MDp+fitnYSgoQS0rKH5+QT4+PjApKS80Mjk0OTY3Mjk2LjApPj4+MCk6MDt5PWtbdz4+Ml18MDt1PXk7dj0kUihrW3U+PjJdfDAsa1t1KzQ+PjJdfDAsfn5BPj4+MHwwLHZ8MCl8MDtrW3k+PjJdPXY7a1t5KzQ+PjJdPUw7YnJlYWt9aWYoKGtbaD4+Ml18MCk9PTQ/KHJSKGtbeT4+Ml18MCw0NTM3NCl8MCk9PTA6MCl7a1txPj4yXT1+fitwW2o+PjNdO2pRKGtbdz4+Ml18MCk7eT0oa1t3Pj4yXXwwKSs4fDA7a1t5Pj4yXT0oa1t5Pj4yXXwwKSsoa1txPj4yXXwwKTtpWyhrW3c+PjJdfDApKzQyPj4wXT0wO2lRKGtbdz4+Ml18MCk7aWYoISgrKGtbcT4+Ml18MCkhPStwW2o+PjNdKSlicmVhaztBPSgrcFtqPj4zXS0rKGtbcT4+Ml18MCkpKjM2NS4wKjg2NC4wZTUrICtwW20+PjNdO3Y9K1coQSk+PTEuMD8oQT4wLjA/fn4raWEoK1YoQS80Mjk0OTY3Mjk2LjApLDQyOTQ5NjcyOTUuMCk+Pj4wOn5+K2dhKChBLSsofn5BPj4+MCkpLzQyOTQ5NjcyOTYuMCk+Pj4wKTowO3k9a1t3Pj4yXXwwO3U9eTt2PSRSKGtbdT4+Ml18MCxrW3UrND4+Ml18MCx+fkE+Pj4wfDAsdnwwKXwwO2tbeT4+Ml09djtrW3krND4+Ml09TDticmVha31rW3g+PjJdPTF9d2hpbGUoMCk7cVEoa1t3Pj4yXXwwKTt5PWtbeD4+Ml18MDtyPXo7cmV0dXJuIHl8MH1kZWZhdWx0Ont5PWtbeD4+Ml18MDtyPXo7cmV0dXJuIHl8MH19cmV0dXJuIDB9ZnVuY3Rpb24gcFEoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxsPTAsbT0wLG49MCxvPTA7bz1yO3I9cisxNzZ8MDtlPW8rOTZ8MDtkPW8rMTY0fDA7Zj1vKzE2MHwwO2c9bysxNTZ8MDttPW8rNDh8MDtuPW87bD1vKzE1MnwwO2o9bysxMDh8MDtoPW8rMTA0fDA7a1tkPj4yXT1hO2tbZj4+Ml09YjtrW2c+PjJdPWM7Yj1qO2M9Yis0NHwwO2Rve2tbYj4+Ml09MDtiPWIrNHwwfXdoaWxlKChifDApPChjfDApKTtiPW07YT1rW2Q+PjJdfDA7Yz1iKzQ4fDA7ZG97a1tiPj4yXT1rW2E+PjJdO2I9Yis0fDA7YT1hKzR8MH13aGlsZSgoYnwwKTwoY3wwKSk7alEobSk7aWYoKGtbbSs4Pj4yXXwwKT49MTk3MT8oa1ttKzg+PjJdfDApPDIwMzg6MCl7a1toPj4yXT1+figrcFttKzMyPj4zXSsuNSk7cFttKzMyPj4zXT0rKGtbaD4+Ml18MCl9ZWxzZXtrW20rOD4+Ml09MmUzO2tbbSsxMj4+Ml09MTtrW20rMTY+PjJdPTE7a1ttKzIwPj4yXT0wO2tbbSsyND4+Ml09MDtwW20rMzI+PjNdPTAuMH1rW20rMjg+PjJdPTA7aVttKzQyPj4wXT0wO2lRKG0pO2g9bTtoPWlTKGtbaD4+Ml18MCxrW2grND4+Ml18MCwxZTMsMCl8MDtoPV9SKGh8MCxMfDAsNDEzMzYyNDk2LDQ5KXwwO2tbbD4+Ml09aDtpZih1UShsLGopfDApe3NlKGtbZj4+Ml18MCw0NTQyMiwtMSk7a1trW2c+PjJdPj4yXT0xO209ZTtrW20+PjJdPTA7a1ttKzQ+PjJdPTA7bT1lO249bTtuPWtbbj4+Ml18MDttPW0rNHwwO209a1ttPj4yXXwwO0w9bTtyPW87cmV0dXJuIG58MH1lbHNle2tbbis4Pj4yXT0oa1tqKzIwPj4yXXwwKSsxOTAwO2tbbisxMj4+Ml09KGtbaisxNj4+Ml18MCkrMTtrW24rMTY+PjJdPWtbaisxMj4+Ml07a1tuKzIwPj4yXT1rW2orOD4+Ml07a1tuKzI0Pj4yXT1rW2orND4+Ml07cFtuKzMyPj4zXT0rKGtbaj4+Ml18MCk7aVtuKzQwPj4wXT0xO2lbbis0MT4+MF09MTtpW24rNDI+PjBdPTA7aVtuKzQzPj4wXT0wO2lRKG4pO2tba1tnPj4yXT4+Ml09MDtsPW47bj1tO249X1Ioa1tsPj4yXXwwLGtbbCs0Pj4yXXwwLGtbbj4+Ml18MCxrW24rND4+Ml18MCl8MDttPWU7a1ttPj4yXT1uO2tbbSs0Pj4yXT1MO209ZTtuPW07bj1rW24+PjJdfDA7bT1tKzR8MDttPWtbbT4+Ml18MDtMPW07cj1vO3JldHVybiBufDB9cmV0dXJuIDB9ZnVuY3Rpb24gcVEoYSl7YT1hfDA7dmFyIGI9MCxjPTA7Yj1yO3I9cisxNnwwO2M9YjtrW2M+PjJdPWE7aVsoa1tjPj4yXXwwKSs0MD4+MF09MDtpWyhrW2M+PjJdfDApKzQxPj4wXT0wO2lbKGtbYz4+Ml18MCkrNDM+PjBdPTA7cj1iO3JldHVybn1mdW5jdGlvbiByUShhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsbT0wLG49MCxvPTAscT0wO289cjtyPXIrNjR8MDtuPW8rMjR8MDtxPW8rMTZ8MDtjPW8rNDh8MDtkPW8rNDR8MDtlPW8rNDB8MDtmPW8rMzZ8MDtnPW8rMzJ8MDttPW8rMjh8MDtoPW8rOHwwO2o9bztrW2Q+PjJdPWE7a1tlPj4yXT1iO3BbaD4+M109MC4wO2E9a1tkPj4yXXwwO2tbcT4+Ml09ZjtrW3ErND4+Ml09ZztpZigoc1EoYSw0NTQwMixxKXwwKSE9Mil7a1tjPj4yXT0xO3E9a1tjPj4yXXwwO3I9bztyZXR1cm4gcXwwfWtbZD4+Ml09KGtbZD4+Ml18MCkrNTtpZigoaVtrW2Q+PjJdPj4wXXwwKT09NTgpe2tbZD4+Ml09KGtbZD4+Ml18MCkrMTtxPWtbZD4+Ml18MDtrW24+PjJdPW07aWYoKHNRKHEsNDU0MTAsbil8MCkhPTEpe2tbYz4+Ml09MTtxPWtbYz4+Ml18MDtyPW87cmV0dXJuIHF8MH1rW2Q+PjJdPShrW2Q+PjJdfDApKzI7aWYoKGlba1tkPj4yXT4+MF18MCk9PTQ2PyhsWzE4NDAzKyhsWyhrW2Q+PjJdfDApKzE+PjBdfDApPj4wXSY0fDApIT0wOjApe3Bbaj4+M109MS4wO2tbZD4+Ml09KGtbZD4+Ml18MCkrMTt3aGlsZSgxKXtpZighKGxbMTg0MDMrKGxba1tkPj4yXT4+MF18MCk+PjBdJjQpKWJyZWFrO3BbaD4+M109K3BbaD4+M10qMTAuMCsgKyhpW2tbZD4+Ml0+PjBdfDApLTQ4LjA7cFtqPj4zXT0rcFtqPj4zXSoxMC4wO2tbZD4+Ml09KGtbZD4+Ml18MCkrMX1wW2g+PjNdPStwW2g+PjNdLytwW2o+PjNdfX1lbHNlIGtbbT4+Ml09MDtpWyhrW2U+PjJdfDApKzQyPj4wXT0wO2lbKGtbZT4+Ml18MCkrNDE+PjBdPTE7a1soa1tlPj4yXXwwKSsyMD4+Ml09a1tmPj4yXTtrWyhrW2U+PjJdfDApKzI0Pj4yXT1rW2c+PjJdO3BbKGtbZT4+Ml18MCkrMzI+PjNdPSsoa1ttPj4yXXwwKSsgK3BbaD4+M107aWYodFEoa1tkPj4yXXwwLGtbZT4+Ml18MCl8MCl7a1tjPj4yXT0xO3E9a1tjPj4yXXwwO3I9bztyZXR1cm4gcXwwfWVsc2V7aVsoa1tlPj4yXXwwKSs0Mz4+MF09KGtbKGtbZT4+Ml18MCkrMjg+PjJdfDApIT0wPzE6MDtrW2M+PjJdPTA7cT1rW2M+PjJdfDA7cj1vO3JldHVybiBxfDB9cmV0dXJuIDB9ZnVuY3Rpb24gc1EoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLG49MCxvPTAscD0wLHE9MCxzPTA7cz1yO3I9cis0OHwwO2Q9cysyOHwwO2U9cysyNHwwO2c9cys4fDA7cT1zKzR8MDtvPXMrMzZ8MDtmPXMrMzV8MDtuPXMrMzR8MDtwPXM7aD1zKzMyfDA7a1tkPj4yXT1hO2tbZT4+Ml09YjtrW3E+PjJdPTA7a1tnPj4yXT1jO2E6d2hpbGUoMSl7aVtmPj4wXT0oaVtrW2U+PjJdPj4wXXwwKS00ODtpW24+PjBdPShpWyhrW2U+PjJdfDApKzE+PjBdfDApLTQ4O2tbcD4+Ml09MDtqW2g+PjFdPWpbMTY0MjIrKChpWyhrW2U+PjJdfDApKzI+PjBdfDApLTk3PDwxKT4+MV18MDtpW28+PjBdPWlbKGtbZT4+Ml18MCkrMz4+MF18MDtrW3A+PjJdPTA7d2hpbGUoMSl7Yj1pW2Y+PjBdfDA7aVtmPj4wXT1iKy0xPDwyND4+MjQ7aWYoIShiPDwyND4+MjQpKWJyZWFrO2lmKCEobFsxODQwMysobFtrW2Q+PjJdPj4wXXwwKT4+MF0mNCkpe2Q9MTE7YnJlYWsgYX1rW3A+PjJdPSgoa1twPj4yXXwwKSoxMHwwKSsoaVtrW2Q+PjJdPj4wXXwwKS00ODtrW2Q+PjJdPShrW2Q+PjJdfDApKzF9aWYoKGtbcD4+Ml18MCk8KGlbbj4+MF18MCkpe2Q9MTE7YnJlYWt9aWYoKGtbcD4+Ml18MCk+KG1baD4+MV18MCkpe2Q9MTE7YnJlYWt9aWYoKGlbbz4+MF18MCkhPTA/KGlbbz4+MF18MCkhPShpW2tbZD4+Ml0+PjBdfDApOjApe2Q9MTE7YnJlYWt9YT1rW3A+PjJdfDA7Yz0oa1tnPj4yXXwwKSsoNC0xKSZ+KDQtMSk7Yj1rW2M+PjJdfDA7a1tnPj4yXT1jKzQ7a1tiPj4yXT1hO2tbZD4+Ml09KGtbZD4+Ml18MCkrMTtrW3E+PjJdPShrW3E+PjJdfDApKzE7a1tlPj4yXT0oa1tlPj4yXXwwKSs0O2lmKCEoaVtvPj4wXXwwKSl7ZD0xMTticmVha319aWYoKGR8MCk9PTExKXtyPXM7cmV0dXJuIGtbcT4+Ml18MH1yZXR1cm4gMH1mdW5jdGlvbiB0UShhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsbT0wLG49MCxvPTA7bz1yO3I9cis0OHwwO209bztjPW8rMzJ8MDtkPW8rMjh8MDtlPW8rMjR8MDtqPW8rMjB8MDtnPW8rMTZ8MDtoPW8rMTJ8MDtmPW8rOHwwO2tbZD4+Ml09YTtrW2U+PjJdPWI7a1tqPj4yXT0wO3doaWxlKDEpe2lmKCEobFsxODQwMysobFtrW2Q+PjJdPj4wXXwwKT4+MF0mMSkpYnJlYWs7a1tkPj4yXT0oa1tkPj4yXXwwKSsxfWtbKGtbZT4+Ml18MCkrMjg+PjJdPTA7a1tmPj4yXT1pW2tbZD4+Ml0+PjBdO2RvIGlmKChrW2Y+PjJdfDApPT00NSl7a1tqPj4yXT0tMTtuPTExfWVsc2V7aWYoKGtbZj4+Ml18MCk9PTQzKXtrW2o+PjJdPTE7bj0xMTticmVha31pZigoa1tmPj4yXXwwKT09OTB8KGtbZj4+Ml18MCk9PTEyMil7a1tkPj4yXT0oa1tkPj4yXXwwKSsxO2JyZWFrfWtbYz4+Ml09KGtbZj4+Ml18MCkhPTAmMTtuPWtbYz4+Ml18MDtyPW87cmV0dXJuIG58MH13aGlsZSgwKTtkbyBpZigobnwwKT09MTEpe2tbZD4+Ml09KGtbZD4+Ml18MCkrMTtuPWtbZD4+Ml18MDtrW20+PjJdPWc7a1ttKzQ+PjJdPWg7aWYoKHNRKG4sNDU0MTQsbSl8MCk9PTIpe2tbZD4+Ml09KGtbZD4+Ml18MCkrNTtuPWhhKGtbaj4+Ml18MCwoa1toPj4yXXwwKSsoKGtbZz4+Ml18MCkqNjB8MCl8MCl8MDtrWyhrW2U+PjJdfDApKzI4Pj4yXT1uO2JyZWFrfWtbYz4+Ml09MTtuPWtbYz4+Ml18MDtyPW87cmV0dXJuIG58MH13aGlsZSgwKTt3aGlsZSgxKXtpZighKGxbMTg0MDMrKGxba1tkPj4yXT4+MF18MCk+PjBdJjEpKWJyZWFrO2tbZD4+Ml09KGtbZD4+Ml18MCkrMX1pWyhrW2U+PjJdfDApKzQ0Pj4wXT0xO2tbYz4+Ml09KGlba1tkPj4yXT4+MF18MCkhPTAmMTtuPWtbYz4+Ml18MDtyPW87cmV0dXJuIG58MH1mdW5jdGlvbiB1UShhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wO2Y9cjtyPXIrMTZ8MDtnPWYrMTJ8MDtjPWYrOHwwO2U9Zis0fDA7ZD1mO2tbZz4+Ml09YTtrW2M+PjJdPWI7YT1UYihrW2c+PjJdfDApfDA7a1tkPj4yXT1hO2tbZD4+Ml09KGtbNjldfDApIT0wPzA6YTtpZihrW2Q+PjJdfDApe2M9a1tjPj4yXXwwO2I9a1tkPj4yXXwwO2E9Yys0NHwwO2Rve2tbYz4+Ml09a1tiPj4yXTtjPWMrNHwwO2I9Yis0fDB9d2hpbGUoKGN8MCk8KGF8MCkpfWtbZT4+Ml09KGtbZD4+Ml18MCk9PTAmMTtyPWY7cmV0dXJuIGtbZT4+Ml18MH1mdW5jdGlvbiB2UShhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsbT0wLG49MDtuPXI7cj1yKzQ4fDA7Yz1uO2Q9biszNnwwO2U9biszMnwwO2Y9bisyOHwwO2o9bisyNHwwO2g9bisyMHwwO2c9bisxNnwwO209bisxMnwwO2tbZT4+Ml09YTtrW2Y+PjJdPWI7aWYoKGlba1tlPj4yXT4+MF18MCk9PTQ1KXtrW2U+PjJdPShrW2U+PjJdfDApKzE7a1ttPj4yXT0xfWVsc2Uga1ttPj4yXT0wO2E9a1tlPj4yXXwwO2tbYz4+Ml09ajtrW2MrND4+Ml09aDtrW2MrOD4+Ml09ZztpZigoc1EoYSw0NTQ0OSxjKXwwKSE9Myl7a1tkPj4yXT0xO209a1tkPj4yXXwwO3I9bjtyZXR1cm4gbXwwfWtbZT4+Ml09KGtbZT4+Ml18MCkrMTA7d2hpbGUoMSl7aWYobFsxODQwMysobFtrW2U+PjJdPj4wXXwwKT4+MF0mMSljPTE7ZWxzZSBjPTg0PT0obFtrW2U+PjJdPj4wXXwwKTtiPWtbZT4+Ml18MDtpZighYylicmVhaztrW2U+PjJdPWIrMX1kbyBpZihyUShiLGtbZj4+Ml18MCl8MCl7aWYoIShpW2tbZT4+Ml0+PjBdfDApKXtpWyhrW2Y+PjJdfDApKzQxPj4wXT0wO2JyZWFrfWtbZD4+Ml09MTttPWtbZD4+Ml18MDtyPW47cmV0dXJuIG18MH13aGlsZSgwKTtpWyhrW2Y+PjJdfDApKzQyPj4wXT0wO2lbKGtbZj4+Ml18MCkrNDA+PjBdPTE7aj1rW2o+PjJdfDA7a1soa1tmPj4yXXwwKSs4Pj4yXT0oa1ttPj4yXXwwKSE9MD8wLWp8MDpqO2tbKGtbZj4+Ml18MCkrMTI+PjJdPWtbaD4+Ml07a1soa1tmPj4yXXwwKSsxNj4+Ml09a1tnPj4yXTtpZihpWyhrW2Y+PjJdfDApKzQzPj4wXXwwKWlRKGtbZj4+Ml18MCk7a1tkPj4yXT0wO209a1tkPj4yXXwwO3I9bjtyZXR1cm4gbXwwfWZ1bmN0aW9uIHdRKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MCxlPTA7ZT1yO3I9cisxNnwwO2I9ZSs4fDA7ZD1lKzR8MDtjPWU7a1tiPj4yXT1hO2tbYz4+Ml09KGtbKGtbYj4+Ml18MCkrMTI+PjJdfDApKzU2O2E9a1tjPj4yXXwwO2lmKChrW2E+PjJdfDApPT0wJihrW2ErND4+Ml18MCk9PTA/KGE9QUkoa1trWyhrW2tbYj4+Ml0+PjJdfDApKzMyPj4yXT4+Ml18MCxrW2M+PjJdfDApfDAsa1tkPj4yXT1hLChrW2Q+PjJdfDApIT0wKTowKXtkPWtbYz4+Ml18MDtrW2Q+PjJdPTA7a1tkKzQ+PjJdPTB9ZD1rW2M+PjJdfDA7TD1rW2QrND4+Ml18MDtyPWU7cmV0dXJuIGtbZD4+Ml18MH1mdW5jdGlvbiB4UShhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHM9MDtxPXI7cj1yKzY0fDA7aj1xO2Q9cSs2MHwwO3M9cSs1MnwwO249cSs0OHwwO289cSs0NHwwO2g9cSs0MHwwO2c9cSszMnwwO2w9cSsyOHwwO2Y9cSsyNHwwO209cSsyMHwwO2U9cSsxNnwwO2tbZD4+Ml09YTtrW3ErNTY+PjJdPWI7a1tzPj4yXT1jO2E9amUoa1trW3M+PjJdPj4yXXwwKXwwO2tbbj4+Ml09YTthPWplKGtbKGtbcz4+Ml18MCkrND4+Ml18MCl8MDtrW28+PjJdPWE7a1tsPj4yXT1rW24+PjJdO2tbZj4+Ml09MDthPUZlKGtbZD4+Ml18MCl8MDtrW2U+PjJdPWE7aWYoIShrW24+PjJdfDApKXtyPXE7cmV0dXJufWRve2lmKCEoaVtrW2w+PjJdPj4wXXwwKSl7cD03O2JyZWFrfWtbZz4+Ml09a1tsPj4yXTtrW2crND4+Ml09a1tmPj4yXTtkb3trW2w+PjJdPShrW2w+PjJdfDApKyhrW2Y+PjJdfDApO3M9anYoa1tsPj4yXXwwLGgpfDA7a1tmPj4yXT1zfXdoaWxlKChrW2g+PjJdfDApPT0xNjIpfXdoaWxlKChrW2g+PjJdfDApIT0yMj8oa1toPj4yXXwwKSE9MTI1OjApO2lmKChwfDApPT03KXtyPXE7cmV0dXJufXM9a1tlPj4yXXwwO2w9a1tuPj4yXXwwO289a1tvPj4yXXwwO3A9KGtbZz4+Ml18MCkrKGtbZys0Pj4yXXwwKXwwO2tbaj4+Ml09KGtbZz4+Ml18MCktKGtbbj4+Ml18MCk7a1tqKzQ+PjJdPWw7a1tqKzg+PjJdPW87a1tqKzEyPj4yXT1wO3M9UWgocyw0NTU5NSxqKXwwO2tbbT4+Ml09czt3ZShrW2Q+PjJdfDAsa1ttPj4yXXwwLC0xLDE3MCk7cj1xO3JldHVybn1mdW5jdGlvbiB5UShhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHM9MCx0PTA7cz1yO3I9cis4MHwwO2w9cztkPXMrNjh8MDt0PXMrNjB8MDtvPXMrNTZ8MDtwPXMrNTJ8MDtqPXMrNDh8MDtoPXMrNDB8MDtmPXMrMzJ8MDttPXMrMjh8MDtnPXMrMjR8MDtuPXMrMjB8MDtlPXMrMTZ8MDtrW2Q+PjJdPWE7a1tzKzY0Pj4yXT1iO2tbdD4+Ml09YzthPWplKGtba1t0Pj4yXT4+Ml18MCl8MDtrW28+PjJdPWE7YT1qZShrWyhrW3Q+PjJdfDApKzQ+PjJdfDApfDA7a1twPj4yXT1hO2tbZj4+Ml09MztrW20+PjJdPWtbbz4+Ml07a1tnPj4yXT0wO2E9RmUoa1tkPj4yXXwwKXwwO2tbZT4+Ml09YTtpZighKGtbbz4+Ml18MCkpe3I9cztyZXR1cm59d2hpbGUoMSl7aWYoIShpW2tbbT4+Ml0+PjBdfDApKXtxPTg7YnJlYWt9a1toPj4yXT1rW20+PjJdO2tbaCs0Pj4yXT1rW2c+PjJdO2Rve2tbbT4+Ml09KGtbbT4+Ml18MCkrKGtbZz4+Ml18MCk7dD1qdihrW20+PjJdfDAsail8MDtrW2c+PjJdPXR9d2hpbGUoKGtbaj4+Ml18MCk9PTE2Mik7dD0oa1tmPj4yXXwwKSsxfDA7a1tmPj4yXT10O2tbZj4+Ml09KGtbaj4+Ml18MCk9PTEyMnwoa1tqPj4yXXwwKT09MTA3PzA6dDtpZigoa1tmPj4yXXwwKSE9Miljb250aW51ZTtpZighKChrW2o+PjJdfDApIT0xMzcmKGtbaj4+Ml18MCkhPTc0JihrW2o+PjJdfDApIT01KSlicmVha31pZigocXwwKT09OCl7cj1zO3JldHVybn10PWtbZT4+Ml18MDttPWtbbz4+Ml18MDtwPWtbcD4+Ml18MDtxPShrW2g+PjJdfDApKyhrW2grND4+Ml18MCl8MDtrW2w+PjJdPShrW2g+PjJdfDApLShrW28+PjJdfDApO2tbbCs0Pj4yXT1tO2tbbCs4Pj4yXT1wO2tbbCsxMj4+Ml09cTt0PVFoKHQsNDU1OTUsbCl8MDtrW24+PjJdPXQ7d2Uoa1tkPj4yXXwwLGtbbj4+Ml18MCwtMSwxNzApO3I9cztyZXR1cm59ZnVuY3Rpb24gelEoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxzPTAsdD0wLHU9MCx2PTA7dT1yO3I9cis4MHwwO2o9dSsxNnwwO2g9dTtkPXUrNzZ8MDt2PXUrNjh8MDtlPXUrNjR8MDtxPXUrNjB8MDt0PXUrNTZ8MDttPXUrNTJ8MDtvPXUrNDh8MDtuPXUrNDR8MDtsPXUrNDB8MDtmPXUrMzZ8MDtnPXUrMzJ8MDtzPXUrMjh8MDtwPXUrMjR8MDtrW2Q+PjJdPWE7a1t1KzcyPj4yXT1iO2tbdj4+Ml09YzthPUZlKGtbZD4+Ml18MCl8MDtrW2U+PjJdPWE7a1txPj4yXT0wO2E9amUoa1trW3Y+PjJdPj4yXXwwKXwwO2tbbT4+Ml09YTthPWplKGtbKGtbdj4+Ml18MCkrND4+Ml18MCl8MDtrW28+PjJdPWE7YT1qZShrWyhrW3Y+PjJdfDApKzg+PjJdfDApfDA7a1tuPj4yXT1hO2lmKChrW20+PjJdfDApPT0wfChrW28+PjJdfDApPT0wKXtyPXU7cmV0dXJufWtbbD4+Ml09a1ttPj4yXTt3aGlsZSgxKXtpZighKGlba1tsPj4yXT4+MF18MCkpYnJlYWs7dj1qdihrW2w+PjJdfDAsZyl8MDtrW2Y+PjJdPXY7aWYoKGtbZz4+Ml18MCk9PTEwNSl7ZG97a1tsPj4yXT0oa1tsPj4yXXwwKSsoa1tmPj4yXXwwKTt2PWp2KGtbbD4+Ml18MCxnKXwwO2tbZj4+Ml09dn13aGlsZSgoa1tnPj4yXXwwKT09MTYyKTtpZigoa1tnPj4yXXwwKT09MTYzKWJyZWFrO3Y9a1tmPj4yXXwwO3Y9Z3goa1tlPj4yXXwwLGtbbD4+Ml18MCx2LCgodnwwKTwwKTw8MzE+PjMxKXwwO2tbcz4+Ml09djtpZighKGtbcz4+Ml18MCkpYnJlYWs7aHgoa1tzPj4yXXwwKTtpZighKHNnKGtbbz4+Ml18MCxrW3M+PjJdfDApfDApKXt2PWtbZT4+Ml18MDtiPShrW2w+PjJdfDApLShrW20+PjJdfDApfDA7Yz1rW20+PjJdfDA7YT1rW24+PjJdfDA7a1toPj4yXT0oa1txPj4yXXwwKSE9MD9rW3E+PjJdfDA6MTg0MDI7a1toKzQ+PjJdPWI7a1toKzg+PjJdPWM7a1toKzEyPj4yXT1hO3Y9UWgodiw0NTU4NCxoKXwwO2tbcD4+Ml09djtiZyhrW2U+PjJdfDAsa1txPj4yXXwwKTtrW3E+PjJdPWtbcD4+Ml07a1ttPj4yXT0oa1tsPj4yXXwwKSsoa1tmPj4yXXwwKX1iZyhrW2U+PjJdfDAsa1tzPj4yXXwwKX1rW2w+PjJdPShrW2w+PjJdfDApKyhrW2Y+PjJdfDApfXY9a1tlPj4yXXwwO3M9a1ttPj4yXXwwO2tbaj4+Ml09KGtbcT4+Ml18MCkhPTA/a1txPj4yXXwwOjE4NDAyO2tbais0Pj4yXT1zO3Y9UWgodiwyNDcwNSxqKXwwO2tbdD4+Ml09djt3ZShrW2Q+PjJdfDAsa1t0Pj4yXXwwLC0xLDE3MCk7Ymcoa1tlPj4yXXwwLGtbcT4+Ml18MCk7cj11O3JldHVybn1mdW5jdGlvbiBBUShhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MDtjPXI7cj1yKzE2fDA7ZD1jKzR8MDtlPWM7a1tkPj4yXT1hO2tbZT4+Ml09YjthPXV1KGtbZD4+Ml18MCxrW2U+PjJdfDApfDA7Yj1rWyhrW2Q+PjJdfDApKzQ1Nj4+Ml18MDtrW2I+PjJdPShrW2I+PjJdfDApK2E7cj1jO3JldHVybn1mdW5jdGlvbiBCUShhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTA7aD1yO3I9cisxNnwwO2Q9aCsxMnwwO2U9aCs4fDA7Zj1oKzR8MDtnPWg7a1tkPj4yXT1hO2tbZT4+Ml09YjtrW2Y+PjJdPWM7aWYoIShrW2U+PjJdfDApKXtjPWtbZD4+Ml18MDtnPWtbZT4+Ml18MDtiZyhjLGcpO3I9aDtyZXR1cm59a1tnPj4yXT1rW2U+PjJdO3doaWxlKDEpe2lmKChrW2c+PjJdfDApPj4+MD49KChrW2U+PjJdfDApKygoa1tmPj4yXXwwKSoyMHwwKXwwKT4+PjApYnJlYWs7aWYoaVsoa1tnPj4yXXwwKSsxPj4wXXwwKVNBKGtbZD4+Ml18MCxpWyhrW2c+PjJdfDApKzE+PjBdfDAsa1soa1tnPj4yXXwwKSsxNj4+Ml18MCk7a1tnPj4yXT0oa1tnPj4yXXwwKSsyMH1jPWtbZD4+Ml18MDtnPWtbZT4+Ml18MDtiZyhjLGcpO3I9aDtyZXR1cm59ZnVuY3Rpb24gQ1EoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTAsaT0wO2k9cjtyPXIrMzJ8MDtjPWkrMTZ8MDtkPWkrMTJ8MDtlPWkrOHwwO2Y9aSs0fDA7Zz1pO2tbYz4+Ml09YTtrW2Q+PjJdPWI7a1tlPj4yXT1rWyhrW2Q+PjJdfDApKzg+PjJdO3doaWxlKDEpe2lmKCEoa1tlPj4yXXwwKSlicmVhaztrW2Y+PjJdPWtbKGtbZT4+Ml18MCkrMjA+PjJdO2lmKCEoKGtbYz4+Ml18MCkhPTA/KGtbKGtbYz4+Ml18MCkrNDU2Pj4yXXwwKSE9MDowKSloPTU7aWYoKGh8MCk9PTU/KGg9MCwoKGxbKGtbZD4+Ml18MCkrNDI+PjBdfDApJjE2fDApPT0wKTowKXtrW2c+PjJdPWtba1tlPj4yXT4+Ml07Y2soKGtbKGtbZT4+Ml18MCkrMjQ+PjJdfDApKzI0fDAsa1tnPj4yXXwwLDApfDB9UEgoa1tjPj4yXXwwLGtbZT4+Ml18MCk7a1tlPj4yXT1rW2Y+PjJdfURRKGtbYz4+Ml18MCxrW2Q+PjJdfDApO0tIKGtbYz4+Ml18MCxrW2Q+PjJdfDApO2JnKGtbYz4+Ml18MCxrW2tbZD4+Ml0+PjJdfDApO2JnKGtbYz4+Ml18MCxrWyhrW2Q+PjJdfDApKzIwPj4yXXwwKTtwdihrW2M+PjJdfDAsa1soa1tkPj4yXXwwKSsxMj4+Ml18MCk7b3Yoa1tjPj4yXXwwLGtbKGtbZD4+Ml18MCkrMjQ+PjJdfDApO0VRKGtbYz4+Ml18MCxrW2Q+PjJdfDApO2JnKGtbYz4+Ml18MCxrW2Q+PjJdfDApO3I9aTtyZXR1cm59ZnVuY3Rpb24gRFEoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTAsaT0wO2k9cjtyPXIrMzJ8MDtjPWkrMjB8MDtkPWkrMTZ8MDtmPWkrMTJ8MDtnPWkrOHwwO2U9aSs0fDA7aD1pO2tbYz4+Ml09YTtrW2Q+PjJdPWI7a1tmPj4yXT1rWyhrW2Q+PjJdfDApKzE2Pj4yXTt3aGlsZSgxKXtpZighKGtbZj4+Ml18MCkpYnJlYWs7aWYoISgoa1tjPj4yXXwwKSE9MD8oa1soa1tjPj4yXXwwKSs0NTY+PjJdfDApIT0wOjApKXthPWtbKGtbZj4+Ml18MCkrMTI+PjJdfDA7aWYoa1soa1tmPj4yXXwwKSsxNj4+Ml18MClrWyhrWyhrW2Y+PjJdfDApKzE2Pj4yXXwwKSsxMj4+Ml09YTtlbHNle2tbZT4+Ml09YTthPWtbZj4+Ml18MDtpZihrW2U+PjJdfDApYT1rWyhrW2ErMTI+PjJdfDApKzg+PjJdfDA7ZWxzZSBhPWtbYSs4Pj4yXXwwO2tbaD4+Ml09YTtjaygoa1soa1tkPj4yXXwwKSs2ND4+Ml18MCkrNTZ8MCxrW2g+PjJdfDAsa1tlPj4yXXwwKXwwfWlmKGtbKGtbZj4+Ml18MCkrMTI+PjJdfDApa1soa1soa1tmPj4yXXwwKSsxMj4+Ml18MCkrMTY+PjJdPWtbKGtbZj4+Ml18MCkrMTY+PjJdfUVHKGtbYz4+Ml18MCxrWyhrW2Y+PjJdfDApKzI4Pj4yXXwwKTtFRyhrW2M+PjJdfDAsa1soa1tmPj4yXXwwKSsyOCs0Pj4yXXwwKTtrW2c+PjJdPWtbKGtbZj4+Ml18MCkrND4+Ml07Ymcoa1tjPj4yXXwwLGtbZj4+Ml18MCk7a1tmPj4yXT1rW2c+PjJdfXI9aTtyZXR1cm59ZnVuY3Rpb24gRVEoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wO2Y9cjtyPXIrMTZ8MDtjPWYrOHwwO2Q9Zis0fDA7ZT1mO2tbYz4+Ml09YTtrW2Q+PjJdPWI7aWYoISgoa1tjPj4yXXwwKSE9MD8oa1soa1tjPj4yXXwwKSs0NTY+PjJdfDApIT0wOjApKWRLKDAsa1tkPj4yXXwwKXwwO2lmKCEoa1soa1tkPj4yXXwwKSs1Mj4+Ml18MCkpe3I9ZjtyZXR1cm59a1tlPj4yXT0wO3doaWxlKDEpe2lmKChrW2U+PjJdfDApPj0oa1soa1tkPj4yXXwwKSs0OD4+Ml18MCkpYnJlYWs7aWYoKGtbZT4+Ml18MCkhPTEpYmcoa1tjPj4yXXwwLGtbKGtbKGtbZD4+Ml18MCkrNTI+PjJdfDApKyhrW2U+PjJdPDwyKT4+Ml18MCk7a1tlPj4yXT0oa1tlPj4yXXwwKSsxfWJnKGtbYz4+Ml18MCxrWyhrW2Q+PjJdfDApKzUyPj4yXXwwKTtyPWY7cmV0dXJufWZ1bmN0aW9uIEZRKGEpe2E9YXwwO3JldHVybiAoKGF8MzIpKy05N3wwKT4+PjA8MjZ8MH1mdW5jdGlvbiBHUShhKXthPWF8MDtyZXR1cm4gKChhfDApPT0zMnwoYXwwKT09OSkmMXwwfWZ1bmN0aW9uIEhRKGEpe2E9YXwwO3JldHVybiAoYSstOTd8MCk+Pj4wPDI2fDB9ZnVuY3Rpb24gSVEoYSl7YT1hfDA7cmV0dXJuIChhKy02NXwwKT4+PjA8MjZ8MH1mdW5jdGlvbiBKUShhKXthPWF8MDt2YXIgYj0wO2I9KElRKGEpfDApPT0wO3JldHVybiAoYj9hOmF8MzIpfDB9ZnVuY3Rpb24gS1EoYSl7YT1hfDA7dmFyIGI9MDtiPShIUShhKXwwKT09MDtyZXR1cm4gKGI/YTphJjk1KXwwfWZ1bmN0aW9uIExRKCl7dmFyIGE9MDtpZighKGtbMjIxNl18MCkpYT04OTEyO2Vsc2V7YT0oemIoKXwwKSs2MHwwO2E9a1thPj4yXXwwfXJldHVybiBhfDB9ZnVuY3Rpb24gTVEoYSl7YT1hfDA7dmFyIGI9MCxjPTA7Yj0wO3doaWxlKDEpe2lmKChsWzQ1NzQwK2I+PjBdfDApPT0oYXwwKSl7Yz0yO2JyZWFrfWI9YisxfDA7aWYoKGJ8MCk9PTg3KXtiPTg3O2E9NDU4Mjg7Yz01O2JyZWFrfX1pZigoY3wwKT09MilpZighYilhPTQ1ODI4O2Vsc2V7YT00NTgyODtjPTV9aWYoKGN8MCk9PTUpd2hpbGUoMSl7Yz1hO3doaWxlKDEpe2E9YysxfDA7aWYoIShpW2M+PjBdfDApKWJyZWFrO2Vsc2UgYz1hfWI9YistMXwwO2lmKCFiKWJyZWFrO2Vsc2UgYz01fXJldHVybiBhfDB9ZnVuY3Rpb24gTlEoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGk9MCxqPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscz0wLHQ9MDtzPXI7cj1yKzE5MnwwO2g9cysxNTJ8MDtnPXMrMTM2fDA7cT1zKzEyMHwwO3A9cysxMDR8MDtvPXMrOTZ8MDtsPXMrODB8MDtqPXMrNjR8MDtlPXMrNDh8MDttPXMrMzJ8MDtmPXMrMTZ8MDtkPXM7dD1zKzE3NnwwO2k9cysxNjh8MDtrW3Q+PjJdPWM7Yz0oa1t0Pj4yXXwwKSsoNC0xKSZ+KDQtMSk7bj1rW2M+PjJdfDA7a1t0Pj4yXT1jKzQ7bj0oYnwwKT09ND9ufDMyNzY4Om47YTpkbyBzd2l0Y2goYnwwKXtjYXNlIDE0OntrW2Q+PjJdPWE7a1tkKzQ+PjJdPTE0O2tbZCs4Pj4yXT1uO2M9UVEodmIoMjIxLGR8MCl8MCl8MDticmVha31jYXNlIDk6e2tbZj4+Ml09YTtrW2YrND4+Ml09MTY7a1tmKzg+PjJdPWk7Yz12YigyMjEsZnwwKXwwO3N3aXRjaChjfDApe2Nhc2UgLTIyOntrW20+PjJdPWE7a1ttKzQ+PjJdPTk7a1ttKzg+PjJdPW47Yz12YigyMjEsbXwwKXwwO2JyZWFrIGF9Y2FzZSAwOntjPWtbaSs0Pj4yXXwwO2M9KGtbaT4+Ml18MCk9PTI/MC1jfDA6YzticmVhayBhfWRlZmF1bHQ6e2M9UVEoYyl8MDticmVhayBhfX19Y2FzZSAxMDMwOntrW2U+PjJdPWE7a1tlKzQ+PjJdPTEwMzA7a1tlKzg+PjJdPW47Yz12YigyMjEsZXwwKXwwO2lmKChjfDApIT0tMjIpe2lmKChjfDApPi0xKXtrW2o+PjJdPWM7a1tqKzQ+PjJdPTI7a1tqKzg+PjJdPTE7dmIoMjIxLGp8MCl8MH1jPVFRKGMpfDA7YnJlYWsgYX1rW2w+PjJdPWE7a1tsKzQ+PjJdPTEwMzA7a1tsKzg+PjJdPTA7Yz12YigyMjEsbHwwKXwwO2lmKChjfDApPT0tMjIpe2tbcD4+Ml09YTtrW3ArND4+Ml09MDtrW3ArOD4+Ml09bjtjPXZiKDIyMSxwfDApfDA7aWYoKGN8MCk+LTEpe2tbcT4+Ml09YztrW3ErND4+Ml09MjtrW3ErOD4+Ml09MTt2YigyMjEscXwwKXwwfWM9UVEoYyl8MDticmVhayBhfWVsc2V7aWYoKGN8MCk+LTEpe2tbbz4+Ml09YztMYig2LG98MCl8MH1jPVFRKC0yMil8MDticmVhayBhfX1kZWZhdWx0OmlmKChiKy0xMnwwKT4+PjA8NSl7a1tnPj4yXT1hO2tbZys0Pj4yXT1iO2tbZys4Pj4yXT1uO2M9UVEodmIoMjIxLGd8MCl8MCl8MDticmVhayBhfWVsc2V7a1toPj4yXT1hO2tbaCs0Pj4yXT1iO2tbaCs4Pj4yXT1uO2M9UVEodmIoMjIxLGh8MCl8MCl8MDticmVhayBhfX13aGlsZSgwKTtyPXM7cmV0dXJuIGN8MH1mdW5jdGlvbiBPUShhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MDtkPXI7cj1yKzMyfDA7ZT1kO2Y9ZCsxNnwwO2tbZj4+Ml09YztnPShrW2Y+PjJdfDApKyg0LTEpJn4oNC0xKTtjPWtbZz4+Ml18MDtrW2Y+PjJdPWcrNDtrW2U+PjJdPWE7a1tlKzQ+PjJdPWJ8MzI3Njg7a1tlKzg+PjJdPWM7Yz1RUShNYig1LGV8MCl8MCl8MDtyPWQ7cmV0dXJuIGN8MH1mdW5jdGlvbiBQUShhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wO2M9MDt3aGlsZSgxKXtpW2ErYz4+MF09aVs0NzYzMitjPj4wXXwwO2lmKChjfDApPT0xNClicmVhaztlbHNlIGM9YysxfDB9aWYoIWIpe2lbYSsxND4+MF09NDg7aVthKzE1Pj4wXT0wfWVsc2V7Yz0xNDtkPWI7d2hpbGUoMSl7Yz1jKzF8MDtpZihkPj4+MDwxMClicmVhaztlbHNlIGQ9KGQ+Pj4wKS8xMHwwfWlbYStjPj4wXT0wO3doaWxlKDEpe2M9YystMXwwO2lbYStjPj4wXT0oYj4+PjApJTEwfDB8NDg7aWYoYj4+PjA8MTApYnJlYWs7ZWxzZSBiPShiPj4+MCkvMTB8MH19cmV0dXJufWZ1bmN0aW9uIFFRKGEpe2E9YXwwO3ZhciBiPTA7aWYoYT4+PjA+NDI5NDk2MzIwMCl7Yj1MUSgpfDA7a1tiPj4yXT0wLWE7YT0tMX1yZXR1cm4gYXwwfWZ1bmN0aW9uIFJRKGEpe2E9K2E7cmV0dXJuICsoK2VhKCsoYSstMTQxNi4wOTk2ODk4ODM5NjgzKSkqMjI0NzExNjQxODU3Nzg5NDg4NDY2MTYzMS4wZTI4MyoyMjQ3MTE2NDE4NTc3ODk0ODg0NjYxNjMxLjBlMjgzKX1mdW5jdGlvbiBTUShhKXthPSthO3ZhciBiPTA7cFt0Pj4zXT1hO2I9YVMoa1t0Pj4yXXwwLGtbdCs0Pj4yXXwwLDUyKXwwO2I9YiYyMDQ3O2RvIGlmKGI+Pj4wPj0xMDI0KWlmKGI+Pj4wPDEwNDkpe2E9K2ZhKCsoYSoyLjAtMS4wLygrWCgrKGEqYSstMS4wKSkrYSkpKTticmVha31lbHNle2E9K2ZhKCthKSsuNjkzMTQ3MTgwNTU5OTQ1MzticmVha31lbHNle2E9YSstMS4wO2E9K1lRKGErICtYKCsoYSphK2EqMi4wKSkpfXdoaWxlKDApO3JldHVybiArYX1mdW5jdGlvbiBUUShhKXthPSthO3ZhciBiPTAsYz0wLGQ9MCxlPTAuMDtwW3Q+PjNdPWE7ZD1rW3Q+PjJdfDA7Yz1rW3QrND4+Ml18MDtiPWFTKGR8MCxjfDAsNTIpfDA7Yj1iJjIwNDc7a1t0Pj4yXT1kO2tbdCs0Pj4yXT1jJjIxNDc0ODM2NDc7YT0rcFt0Pj4zXTtkbyBpZihiPj4+MDw9MTA0OCl7aWYoYj4+PjA+MTAyMyl7YT0rZmEoKyhhKjIuMCsxLjAvKGErICtYKCsoYSphKzEuMCkpKSkpO2JyZWFrfWlmKGI+Pj4wPjk5Nil7ZT1hKmE7YT0rWVEoYStlLygrWCgrKGUrMS4wKSkrMS4wKSl9fWVsc2UgYT0rZmEoK2EpKy42OTMxNDcxODA1NTk5NDUzO3doaWxlKDApO3JldHVybiArKChjfDApPDA/LWE6YSl9ZnVuY3Rpb24gVVEoYSl7YT0rYTt2YXIgYj0wLGM9MCxkPTAsZT0wLjA7cFt0Pj4zXT1hO2Q9a1t0Pj4yXXwwO2M9a1t0KzQ+PjJdfDA7Yj1hUyhkfDAsY3wwLDUyKXwwO2I9YiYyMDQ3O2tbdD4+Ml09ZDtrW3QrND4+Ml09YyYyMTQ3NDgzNjQ3O2E9K3BbdD4+M107aWYoYj4+PjA8MTAyMil7aWYoYj4+PjA+PTk5MSl7ZT1hKjIuMDthPStZUShlK2EqZS8oMS4wLWEpKSouNX19ZWxzZSBhPStZUShhLygxLjAtYSkqMi4wKSouNTtyZXR1cm4gKygoY3wwKTwwPy1hOmEpfWZ1bmN0aW9uIFZRKGEpe2E9K2E7dmFyIGI9MDtwW3Q+PjNdPWE7Yj1rW3QrND4+Ml0mMjE0NzQ4MzY0NztrW3Q+PjJdPWtbdD4+Ml07a1t0KzQ+PjJdPWI7YT0rcFt0Pj4zXTtkbyBpZihiPj4+MDwxMDcyMDQ5NzMwKWlmKGI+Pj4wPDEwNDU0MzAyNzIpYT0xLjA7ZWxzZXthPStXUShhKTthPWEqYS8oKGErMS4wKSoyLjApKzEuMH1lbHNlIGlmKGI+Pj4wPDEwODI1MzU0OTApe2E9K2VhKCthKTthPShhKzEuMC9hKSouNTticmVha31lbHNle2E9K1JRKGEpO2JyZWFrfXdoaWxlKDApO3JldHVybiArYX1mdW5jdGlvbiBXUShhKXthPSthO3ZhciBiPTAuMCxjPTAuMCxkPTAsZT0wLGY9MCxnPTAsaD0wLjAsaT0wLGo9MC4wO3BbdD4+M109YTtkPWtbdD4+Ml18MDtlPWtbdCs0Pj4yXXwwO2Y9ZSYyMTQ3NDgzNjQ3O2c9YVMoZHwwLGV8MCw2Myl8MDtkbyBpZihmPj4+MD4xMDc4MTU5NDgxKXtmPWUmMjE0NzQ4MzY0NztpZighKGY+Pj4wPjIxNDY0MzUwNzJ8KGZ8MCk9PTIxNDY0MzUwNzImZD4+PjA+MCkpaWYoIWcpaWYoYT43MDkuNzgyNzEyODkzMzg0KWE9YSo4OTg4NDY1Njc0MzExNTc5NTM4NjQ2NTI1LjBlMjgzO2Vsc2UgaT0xMTtlbHNlIGE9LTEuMH1lbHNle2lmKGY+Pj4wPD0xMDcxMDAxMTU0KWlmKGY+Pj4wPDEwMTYwNzAxNDQpYnJlYWs7ZWxzZXtoPTAuMDtmPTA7aT0xNDticmVha31pZihmPj4+MDwxMDcyNzM0ODk4KWlmKCFnKXtiPWErLS42OTMxNDcxODAzNjkxMjM4O2Q9MTtjPTEuOTA4MjE0OTI5MjcwNTg3N2UtMTA7aT0xMjticmVha31lbHNle2I9YSsuNjkzMTQ3MTgwMzY5MTIzODtkPS0xO2M9LTEuOTA4MjE0OTI5MjcwNTg3N2UtMTA7aT0xMjticmVha31lbHNlIGk9MTF9d2hpbGUoMCk7aWYoKGl8MCk9PTExKXtkPX5+KGEqMS40NDI2OTUwNDA4ODg5NjM0KygoZ3wwKSE9MD8tLjU6LjUpKTtjPSsoZHwwKTtiPWEtYyouNjkzMTQ3MTgwMzY5MTIzODtjPWMqMS45MDgyMTQ5MjkyNzA1ODc3ZS0xMDtpPTEyfWlmKChpfDApPT0xMil7aD1iLWM7YT1oO2g9Yi1oLWM7Zj1kO2k9MTR9YTpkbyBpZigoaXwwKT09MTQpe2M9YSouNTtiPWEqYztqPWIqKGIqKGIqKGIqKDQuMDA4MjE3ODI3MzI5MzYyZS0wNi1iKjIuMDEwOTkyMTgxODM2MjQzN2UtMDcpKy03LjkzNjUwNzU3ODY3NDg4ZS0wNSkrMS41ODczMDE1ODcyNTQ4MTQ2ZS0wMykrLS4wMzMzMzMzMzMzMzMzMzMxMykrMS4wO2M9My4wLWMqajtjPWIqKChqLWMpLyg2LjAtYSpjKSk7aWYoIWYpe2E9YS0oYSpjLWIpO2JyZWFrfWI9YSooYy1oKS1oLWI7c3dpdGNoKGZ8MCl7Y2FzZSAtMTp7YT0oYS1iKSouNSstLjU7YnJlYWsgYX1jYXNlIDE6aWYoYTwtLjI1KXthPShiLShhKy41KSkqLTIuMDticmVhayBhfWVsc2V7YT0oYS1iKSoyLjArMS4wO2JyZWFrIGF9ZGVmYXVsdDp7Zz1lUyhmKzEwMjN8MCwwLDUyKXwwO2k9TDtrW3Q+PjJdPWc7a1t0KzQ+PjJdPWk7Yz0rcFt0Pj4zXTtpZihmPj4+MD41Nil7YT1hLWIrMS4wO2E9KChmfDApPT0xMDI0P2EqMi4wKjg5ODg0NjU2NzQzMTE1Nzk1Mzg2NDY1MjUuMGUyODM6YyphKSstMS4wO2JyZWFrIGF9ZD1lUygxMDIzLWZ8MCwwLDUyKXwwO2U9TDtpZigoZnwwKTwyMCl7a1t0Pj4yXT1kO2tbdCs0Pj4yXT1lO2E9MS4wLStwW3Q+PjNdKyhhLWIpfWVsc2V7a1t0Pj4yXT1kO2tbdCs0Pj4yXT1lO2E9YS0oK3BbdD4+M10rYikrMS4wfWE9YyphO2JyZWFrIGF9fX13aGlsZSgwKTtyZXR1cm4gK2F9ZnVuY3Rpb24gWFEoYSl7YT0rYTt2YXIgYj0wLGM9MCxkPTAsZT0wLGY9MC4wLGc9MC4wLGg9MC4wLGk9MC4wLGo9MC4wO3BbdD4+M109YTtjPWtbdD4+Ml18MDtiPWtbdCs0Pj4yXXwwO2Q9KGJ8MCk8MDtkbyBpZihkfGI+Pj4wPDEwNDg1NzYpe2lmKChjfDApPT0wJihiJjIxNDc0ODM2NDd8MCk9PTApe2E9LTEuMC8oYSphKTticmVha31pZihkKXthPShhLWEpLzAuMDticmVha31lbHNle3BbdD4+M109YSoxODAxNDM5ODUwOTQ4MTk4NC4wO2I9a1t0KzQ+PjJdfDA7ZD1rW3Q+PjJdfDA7Yz0tMTA3NztlPTk7YnJlYWt9fWVsc2UgaWYoYj4+PjA8PTIxNDY0MzUwNzEpaWYoKGN8MCk9PTAmMD09MCYoYnwwKT09MTA3MjY5MzI0OClhPTAuMDtlbHNle2Q9YztjPS0xMDIzO2U9OX13aGlsZSgwKTtpZigoZXwwKT09OSl7ZT1iKzYxNDI0MnwwO2tbdD4+Ml09ZDtrW3QrND4+Ml09KGUmMTA0ODU3NSkrMTA3MjA3OTAwNjtqPStwW3Q+PjNdKy0xLjA7YT1qKihqKi41KTtoPWovKGorMi4wKTtpPWgqaDtnPWkqaTtwW3Q+PjNdPWotYTtkPWtbdCs0Pj4yXXwwO2tbdD4+Ml09MDtrW3QrND4+Ml09ZDtmPStwW3Q+PjNdO2E9aCooYSsoZyooZyooZyouMTUzMTM4Mzc2OTkyMDkzNzMrLjIyMjIyMTk4NDMyMTQ5Nzg0KSsuMzk5OTk5OTk5OTk0MDk0MikraSooZyooZyooZyouMTQ3OTgxOTg2MDUxMTY1ODYrLjE4MTgzNTcyMTYxNjE4MDUpKy4yODU3MTQyODc0MzY2MjM5KSsuNjY2NjY2NjY2NjY2NjczNSkpKSsoai1mLWEpO2o9ZiouNDM0Mjk0NDgxODc4MTY4OTtnPSsoYysoZT4+PjIwKXwwKTtpPWcqLjMwMTAyOTk5NTY2MzYxMTc3O2g9aStqO2E9aCsoaisoaS1oKSsoYSouNDM0Mjk0NDgxODc4MTY4OSsoZyozLjY5NDIzOTA3NzE1ODkzMWUtMTMrKGYrYSkqMi41MDgyOTQ2NzExNjQ1Mjc1ZS0xMSkpKX1yZXR1cm4gK2F9ZnVuY3Rpb24gWVEoYSl7YT0rYTt2YXIgYj0wLGM9MC4wLGQ9MC4wLGU9MCxmPTAsZz0wLjAsaD0wLjAsaT0wLjAsaj0wLjA7cFt0Pj4zXT1hO2I9a1t0KzQ+PjJdfDA7ZG8gaWYoKGJ8MCk8MHxiPj4+MDwxMDcxMjg0ODU4KWlmKGI+Pj4wPD0zMjIwMTc2ODk1KXtmPWVTKGJ8MCwwLDEpfDA7aWYoZj4+PjA8MjAzNDIzNzQ0MClicmVhaztpZihiPj4+MDwzMjE4MjU5NjUzKXtkPTAuMDtjPTAuMDtlPTExO2JyZWFrfWVsc2V7ZT04O2JyZWFrfX1lbHNle2lmKGE9PS0xLjApe2E9LUI7YnJlYWt9YT0oYS1hKS8wLjA7YnJlYWt9ZWxzZSBpZihiPj4+MDw9MjE0NjQzNTA3MSllPTg7d2hpbGUoMCk7aWYoKGV8MCk9PTgpe2M9YSsxLjA7cFt0Pj4zXT1jO2I9KGtbdCs0Pj4yXXwwKSs2MTQyNDJ8MDtlPShiPj4+MjApKy0xMDIzfDA7aWYoKGV8MCk8NTQpYT0oKGV8MCk+MT8xLjAtKGMtYSk6YS0oYystMS4wKSkvYztlbHNlIGE9MC4wO2tbdD4+Ml09a1t0Pj4yXTtrW3QrND4+Ml09KGImMTA0ODU3NSkrMTA3MjA3OTAwNjtkPWE7YT0rcFt0Pj4zXSstMS4wO2M9KyhlfDApO2U9MTF9aWYoKGV8MCk9PTExKXtnPWEqKGEqLjUpO2o9YS8oYSsyLjApO2k9aipqO2g9aSppO2E9YyouNjkzMTQ3MTgwMzY5MTIzOCsoYSsoZCtjKjEuOTA4MjE0OTI5MjcwNTg3N2UtMTAraiooZysoaCooaCooaCouMTUzMTM4Mzc2OTkyMDkzNzMrLjIyMjIyMTk4NDMyMTQ5Nzg0KSsuMzk5OTk5OTk5OTk0MDk0MikraSooaCooaCooaCouMTQ3OTgxOTg2MDUxMTY1ODYrLjE4MTgzNTcyMTYxNjE4MDUpKy4yODU3MTQyODc0MzY2MjM5KSsuNjY2NjY2NjY2NjY2NjczNSkpKS1nKSl9cmV0dXJuICthfWZ1bmN0aW9uIFpRKGEpe2E9K2E7dmFyIGI9MC4wLGM9MC4wLGQ9MDtwW3Q+PjNdPWE7ZD1rW3QrND4+Ml18MDtjPShkfDApPDA/LS41Oi41O2Q9ZCYyMTQ3NDgzNjQ3O2tbdD4+Ml09a1t0Pj4yXTtrW3QrND4+Ml09ZDtiPStwW3Q+PjNdO2RvIGlmKGQ+Pj4wPDEwODI1MzU0OTApe2I9K1dRKGIpO2lmKGQ+Pj4wPj0xMDcyNjkzMjQ4KXthPWMqKGIrYi8oYisxLjApKTticmVha31pZihkPj4+MD49MTA0NTQzMDI3MilhPWMqKGIqMi4wLWIqYi8oYisxLjApKX1lbHNlIGE9YyoyLjAqK1JRKGIpO3doaWxlKDApO3JldHVybiArYX1mdW5jdGlvbiBfUShhKXthPSthO3ZhciBiPTAsYz0wO3BbdD4+M109YTtjPWtbdCs0Pj4yXXwwO2I9YyYyMTQ3NDgzNjQ3O2tbdD4+Ml09a1t0Pj4yXTtrW3QrND4+Ml09YjthPStwW3Q+PjNdO2RvIGlmKGI+Pj4wPjEwNzE3NDgwNzQpaWYoYj4+PjA+MTA3NzE0OTY5Nil7YT0xLjAtMC4wL2E7YnJlYWt9ZWxzZXthPTEuMC0yLjAvKCtXUShhKjIuMCkrMi4wKTticmVha31lbHNle2lmKGI+Pj4wPjEwNzA2MTg3OTgpe2E9K1dRKGEqMi4wKTthPWEvKGErMi4wKTticmVha31pZihiPj4+MD4xMDQ4NTc1KXthPStXUShhKi0yLjApO2E9LWEvKGErMi4wKX19d2hpbGUoMCk7cmV0dXJuICsoKGN8MCk8MD8tYTphKX1mdW5jdGlvbiAkUShhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaT0wO2k9cjtyPXIrMzJ8MDtnPWk7ZG8gaWYoKGYmNDA5NXwwKT09MCYoKChmfDApPDApPDwzMT4+MzEmLTQwOTZ8MCk9PTApe2lmKGI+Pj4wPjIxNDc0ODM2NDYpe2U9TFEoKXwwO2tbZT4+Ml09MTI7ZT0tMTticmVha31oPShkJjE2fDApIT0wO2lmKGgpUVIoLTEpO2tbZz4+Ml09YTtrW2crND4+Ml09YjtrW2crOD4+Ml09YztrW2crMTI+PjJdPWQ7a1tnKzE2Pj4yXT1lO2tbZysyMD4+Ml09Zj4+MTI7ZT1RUShsYigxOTIsZ3wwKXwwKXwwO2lmKGgpUlIoKX1lbHNle2U9TFEoKXwwO2tbZT4+Ml09MjI7ZT0tMX13aGlsZSgwKTtyPWk7cmV0dXJuIGV8MH1mdW5jdGlvbiBhUihhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wO2M9cjtyPXIrMTZ8MDtkPWM7UVIoLTEpO2tbZD4+Ml09YTtrW2QrND4+Ml09YjthPVFRKGViKDkxLGR8MCl8MCl8MDtSUigpO3I9YztyZXR1cm4gYXwwfWZ1bmN0aW9uIGJSKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTA7Zz1yO3I9cis2NHwwO2Y9ZysxNnwwO2U9Zys4fDA7Yz1nO2Q9ZysyNHwwO2tbYz4+Ml09YTtrW2MrND4+Ml09YjtjPXNiKDk0LGN8MCl8MDtpZigoY3wwKT09LTk/KGtbZT4+Ml09YSxrW2UrND4+Ml09MSwodmIoMjIxLGV8MCl8MCk+PTApOjApe1BRKGQsYSk7a1tmPj4yXT1kO2tbZis0Pj4yXT1iO2M9UVEoRmIoMTUsZnwwKXwwKXwwfWVsc2UgYz1RUShjKXwwO3I9ZztyZXR1cm4gY3wwfWZ1bmN0aW9uIGNSKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTA7Zz1yO3I9cis2NHwwO2Y9ZysxNnwwO2U9Zys4fDA7Yz1nO2Q9ZysyNHwwO2tbYz4+Ml09YTtrW2MrND4+Ml09YjtjPW1iKDE5NyxjfDApfDA7aWYoKGN8MCk9PS05PyhrW2U+PjJdPWEsa1tlKzQ+PjJdPTEsKHZiKDIyMSxlfDApfDApPj0wKTowKXtQUShkLGEpO2tbZj4+Ml09ZDtrW2YrND4+Ml09YjtjPVFRKG9iKDE5NSxmfDApfDApfDB9ZWxzZSBjPVFRKGMpfDA7cj1nO3JldHVybiBjfDB9ZnVuY3Rpb24gZFIoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MDtjPXI7cj1yKzE2fDA7ZD1jO2tbZD4+Ml09YTtrW2QrND4+Ml09YjthPVFRKG5iKDE5NixkfDApfDApfDA7cj1jO3JldHVybiBhfDB9ZnVuY3Rpb24gZVIoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MDtjPXI7cj1yKzE2fDA7ZD1jO2tbZD4+Ml09YTtrW2QrND4+Ml09YjthPVFRKGdiKDM5LGR8MCl8MCl8MDtyPWM7cmV0dXJuIGF8MH1mdW5jdGlvbiBmUihhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wO2M9cjtyPXIrMTZ8MDtkPWM7a1tkPj4yXT1hO2tbZCs0Pj4yXT1iO2E9UVEob2IoMTk1LGR8MCl8MCl8MDtyPWM7cmV0dXJuIGF8MH1mdW5jdGlvbiBnUihhKXthPWF8MDtyZXR1cm4gMH1mdW5jdGlvbiBoUihhKXthPWF8MDtyZXR1cm59ZnVuY3Rpb24gaVIoYSl7YT1hfDA7dmFyIGI9MCxjPTA7Yj1yO3I9cisxNnwwO2M9YjtrW2M+PjJdPWtbYSs2MD4+Ml07YT1RUShMYig2LGN8MCl8MCl8MDtyPWI7cmV0dXJuIGF8MH1mdW5jdGlvbiBqUihhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wO2U9cjtyPXIrMzJ8MDtmPWU7ZD1lKzIwfDA7a1tmPj4yXT1rW2ErNjA+PjJdO2tbZis0Pj4yXT0wO2tbZis4Pj4yXT1iO2tbZisxMj4+Ml09ZDtrW2YrMTY+PjJdPWM7aWYoKFFRKEViKDE0MCxmfDApfDApfDApPDApe2tbZD4+Ml09LTE7YT0tMX1lbHNlIGE9a1tkPj4yXXwwO3I9ZTtyZXR1cm4gYXwwfWZ1bmN0aW9uIGtSKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxpPTAsaj0wLGw9MCxtPTAsbj0wLG89MCxwPTA7cD1yO3I9cis0OHwwO209cCsxNnwwO2w9cDtkPXArMzJ8MDtuPWErMjh8MDtlPWtbbj4+Ml18MDtrW2Q+PjJdPWU7bz1hKzIwfDA7ZT0oa1tvPj4yXXwwKS1lfDA7a1tkKzQ+PjJdPWU7a1tkKzg+PjJdPWI7a1tkKzEyPj4yXT1jO2k9YSs2MHwwO2o9YSs0NHwwO2I9MjtlPWUrY3wwO3doaWxlKDEpe2lmKCEoa1syMjE2XXwwKSl7a1ttPj4yXT1rW2k+PjJdO2tbbSs0Pj4yXT1kO2tbbSs4Pj4yXT1iO2c9UVEoVmIoMTQ2LG18MCl8MCl8MH1lbHNle1VhKDE1NCxhfDApO2tbbD4+Ml09a1tpPj4yXTtrW2wrND4+Ml09ZDtrW2wrOD4+Ml09YjtnPVFRKFZiKDE0NixsfDApfDApfDA7TWEoMCl9aWYoKGV8MCk9PShnfDApKXtlPTY7YnJlYWt9aWYoKGd8MCk8MCl7ZT04O2JyZWFrfWU9ZS1nfDA7Zj1rW2QrND4+Ml18MDtpZihnPj4+MDw9Zj4+PjApaWYoKGJ8MCk9PTIpe2tbbj4+Ml09KGtbbj4+Ml18MCkrZztoPWY7Yj0yfWVsc2UgaD1mO2Vsc2V7aD1rW2o+PjJdfDA7a1tuPj4yXT1oO2tbbz4+Ml09aDtoPWtbZCsxMj4+Ml18MDtnPWctZnwwO2Q9ZCs4fDA7Yj1iKy0xfDB9a1tkPj4yXT0oa1tkPj4yXXwwKStnO2tbZCs0Pj4yXT1oLWd9aWYoKGV8MCk9PTYpe209a1tqPj4yXXwwO2tbYSsxNj4+Ml09bSsoa1thKzQ4Pj4yXXwwKTthPW07a1tuPj4yXT1hO2tbbz4+Ml09YX1lbHNlIGlmKChlfDApPT04KXtrW2ErMTY+PjJdPTA7a1tuPj4yXT0wO2tbbz4+Ml09MDtrW2E+PjJdPWtbYT4+Ml18MzI7aWYoKGJ8MCk9PTIpYz0wO2Vsc2UgYz1jLShrW2QrND4+Ml18MCl8MH1yPXA7cmV0dXJuIGN8MH1mdW5jdGlvbiBsUihhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTA7ZT1yO3I9cis4MHwwO2Q9ZTtrW2ErMzY+PjJdPTE2MztpZigoa1thPj4yXSY2NHwwKT09MD8oa1tkPj4yXT1rW2ErNjA+PjJdLGtbZCs0Pj4yXT0yMTUwNSxrW2QrOD4+Ml09ZSsxMiwoVGEoNTQsZHwwKXwwKSE9MCk6MClpW2ErNzU+PjBdPS0xO2Q9a1IoYSxiLGMpfDA7cj1lO3JldHVybiBkfDB9ZnVuY3Rpb24gbVIoYSl7YT1hfDA7dmFyIGI9MCxjPTA7ZG8gaWYoYSl7aWYoKGtbYSs3Nj4+Ml18MCk8PS0xKXtiPU5SKGEpfDA7YnJlYWt9Yz0oZ1IoYSl8MCk9PTA7Yj1OUihhKXwwO2lmKCFjKWhSKGEpfWVsc2V7aWYoIShrWzIyMjddfDApKWI9MDtlbHNlIGI9bVIoa1syMjI3XXwwKXwwO0tiKDg4OTIpO2E9a1syMjIyXXwwO2lmKGEpZG97aWYoKGtbYSs3Nj4+Ml18MCk+LTEpYz1nUihhKXwwO2Vsc2UgYz0wO2lmKChrW2ErMjA+PjJdfDApPj4+MD4oa1thKzI4Pj4yXXwwKT4+PjApYj1OUihhKXwwfGI7aWYoYyloUihhKTthPWtbYSs1Nj4+Ml18MH13aGlsZSgoYXwwKSE9MCk7RGIoODg5Mil9d2hpbGUoMCk7cmV0dXJuIGJ8MH1mdW5jdGlvbiBuUihhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGk9MCxqPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTA7cT1yO3I9cisyMDh8MDtuPXErOHwwO289cTtlPWhhKGMsYil8MDttPW87a1ttPj4yXT0xO2tbbSs0Pj4yXT0wO2lmKGUpe2g9ZS1jfDA7a1tuKzQ+PjJdPWM7a1tuPj4yXT1jO2Y9YztiPWM7Zz0yO3doaWxlKDEpe2I9YitjK2Z8MDtrW24rKGc8PDIpPj4yXT1iO2lmKGI+Pj4wPGU+Pj4wKXttPWY7Zj1iO2c9ZysxfDA7Yj1tfWVsc2UgYnJlYWt9bT0wLWN8MDtpPWEraHwwO2w9bys0fDA7aWYoKGh8MCk+MCl7aD1pO2U9MTtnPTE7d2hpbGUoMSl7ZG8gaWYoKGUmM3wwKT09Myl7T1IoYSxjLGQsZyxuKTtqPWtbbD4+Ml18MDtiPWo8PDMwfChrW28+PjJdfDApPj4+MjtrW28+PjJdPWI7a1tsPj4yXT1qPj4+MjtnPWcrMnwwfWVsc2V7Yj1nKy0xfDA7aWYoKGtbbisoYjw8Mik+PjJdfDApPj4+MDwoaC1hfDApPj4+MClPUihhLGMsZCxnLG4pO2Vsc2UgUFIoYSxjLGQsbyxnLDAsbik7aWYoKGd8MCk9PTEpe2I9a1tvPj4yXXwwO2tbbD4+Ml09Yj4+PjMxfGtbbD4+Ml08PDE7Yj1iPDwxO2tbbz4+Ml09YjtnPTA7YnJlYWt9aWYoYj4+PjA+MzEpe2U9a1tvPj4yXXwwO2tbbD4+Ml09ZTtrW28+PjJdPTA7Yj1nKy0zM3wwO2Y9MH1lbHNle2U9a1tsPj4yXXwwO2Y9a1tvPj4yXXwwfWtbbD4+Ml09Zj4+PigzMi1ifDApfGU8PGI7Yj1mPDxiO2tbbz4+Ml09YjtnPTF9d2hpbGUoMCk7ZT1ifDE7a1tvPj4yXT1lO2I9YStjfDA7aWYoYj4+PjA+PWk+Pj4wKXtlPWI7YnJlYWt9ZWxzZSBhPWJ9fWVsc2V7ZT1hO2c9MX1QUihlLGMsZCxvLGcsMCxuKTtqPW8rNHwwO2I9a1tvPj4yXXwwO2lmKCEoKGd8MCk9PTEmKGJ8MCk9PTEmKGtbaj4+Ml18MCk9PTApKXtmPWU7d2hpbGUoMSl7aWYoKGd8MCk8Mil7ZT1iKy0xfDA7ZG8gaWYoZSl7aWYoIShlJjEpKXtoPWU7ZT0wO2Rve2U9ZSsxfDA7aD1oPj4+MX13aGlsZSgoaCYxfDApPT0wKTtpZighZSlwPTI0fWVsc2UgcD0yNDtpZigocHwwKT09MjQpe3A9MDtpPWtbbD4+Ml18MDtpZighaSl7ZT02NDtwPTMwO2JyZWFrfWlmKCEoaSYxKSl7aD1pO2U9MH1lbHNle2E9MDtoPWk7ZT0wO2JyZWFrfXdoaWxlKDEpe2E9ZSsxfDA7aD1oPj4+MTtpZihoJjEpe2g9YTticmVha31lbHNlIGU9YX1pZighaCl7YT0wO2g9aTtlPTA7YnJlYWt9ZWxzZSBlPWUrMzN8MH1pZihlPj4+MD4zMSlwPTMwO2Vsc2V7YT1lO2g9a1tsPj4yXXwwfX1lbHNle2U9MzI7cD0zMH13aGlsZSgwKTtpZigocHwwKT09MzApe3A9MDtiPWtbbD4+Ml18MDtrW28+PjJdPWI7a1tsPj4yXT0wO2E9ZSstMzJ8MDtoPTB9a1tvPj4yXT1oPDwzMi1hfGI+Pj5hO2tbbD4+Ml09aD4+PmE7Zj1mK218MDtlPWUrZ3wwfWVsc2V7YT1iPj4+MzA7aT1hfGtbbD4+Ml08PDI7ZT1nKy0yfDA7a1tvPj4yXT0oYjw8MSYyMTQ3NDgzNjQ2fGE8PDMxKV4zO2tbbD4+Ml09aT4+PjE7UFIoZisoMC0oKGtbbisoZTw8Mik+PjJdfDApK2MpKXwwLGMsZCxvLGcrLTF8MCwxLG4pO2k9a1tvPj4yXXwwO2tbbD4+Ml09aT4+PjMxfGtbbD4+Ml08PDE7a1tvPj4yXT1pPDwxfDE7Zj1mK218MDtQUihmLGMsZCxvLGUsMSxuKX1iPWtbbz4+Ml18MDtpZigoZXwwKT09MSYoYnwwKT09MSYoa1tqPj4yXXwwKT09MClicmVhaztlbHNlIGc9ZX19fXI9cTtyZXR1cm59ZnVuY3Rpb24gb1IoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wO2E6ZG8gaWYoIWMpYz0wO2Vsc2V7ZT1jO2Q9YTt3aGlsZSgxKXthPWlbZD4+MF18MDtjPWlbYj4+MF18MDtpZihhPDwyND4+MjQhPWM8PDI0Pj4yNClicmVhaztlPWUrLTF8MDtpZighZSl7Yz0wO2JyZWFrIGF9ZWxzZXtkPWQrMXwwO2I9YisxfDB9fWM9KGEmMjU1KS0oYyYyNTUpfDB9d2hpbGUoMCk7cmV0dXJuIGN8MH1mdW5jdGlvbiBwUihhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wO2M9YjthOmRvIGlmKCEoKGNeYSkmMykpe2lmKGMmMylkb3tjPWlbYj4+MF18MDtpW2E+PjBdPWM7aWYoIShjPDwyND4+MjQpKWJyZWFrIGE7Yj1iKzF8MDthPWErMXwwfXdoaWxlKChiJjN8MCkhPTApO2M9a1tiPj4yXXwwO2lmKCEoKGMmLTIxMzkwNjIxNDReLTIxMzkwNjIxNDQpJmMrLTE2ODQzMDA5KSl7ZD1hO3doaWxlKDEpe2I9Yis0fDA7YT1kKzR8MDtrW2Q+PjJdPWM7Yz1rW2I+PjJdfDA7aWYoKGMmLTIxMzkwNjIxNDReLTIxMzkwNjIxNDQpJmMrLTE2ODQzMDA5KWJyZWFrO2Vsc2UgZD1hfX1kPTh9ZWxzZSBkPTg7d2hpbGUoMCk7aWYoKGR8MCk9PTgpe2Q9aVtiPj4wXXwwO2lbYT4+MF09ZDtpZihkPDwyND4+MjQpZG97Yj1iKzF8MDthPWErMXwwO2Q9aVtiPj4wXXwwO2lbYT4+MF09ZH13aGlsZShkPDwyND4+MjQhPTApfXJldHVybiBhfDB9ZnVuY3Rpb24gcVIoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MDtlPWI7ZG8gaWYoISgoZV5hKSYzKSl7ZD0oY3wwKSE9MDthOmRvIGlmKGQmKGUmM3wwKSE9MCl3aGlsZSgxKXtlPWlbYj4+MF18MDtpW2E+PjBdPWU7aWYoIShlPDwyND4+MjQpKWJyZWFrIGE7Yz1jKy0xfDA7Yj1iKzF8MDthPWErMXwwO2Q9KGN8MCkhPTA7aWYoIShkJihiJjN8MCkhPTApKXtmPTU7YnJlYWt9fWVsc2UgZj01O3doaWxlKDApO2lmKChmfDApPT01KWlmKCFkKXtjPTA7YnJlYWt9aWYoaVtiPj4wXXwwKXtiOmRvIGlmKGM+Pj4wPjMpZG97ZD1rW2I+PjJdfDA7aWYoKGQmLTIxMzkwNjIxNDReLTIxMzkwNjIxNDQpJmQrLTE2ODQzMDA5KWJyZWFrIGI7a1thPj4yXT1kO2M9YystNHwwO2I9Yis0fDA7YT1hKzR8MH13aGlsZShjPj4+MD4zKTt3aGlsZSgwKTtmPTExfX1lbHNlIGY9MTE7d2hpbGUoMCk7YzpkbyBpZigoZnwwKT09MTEpaWYoIWMpYz0wO2Vsc2Ugd2hpbGUoMSl7Zj1pW2I+PjBdfDA7aVthPj4wXT1mO2lmKCEoZjw8MjQ+PjI0KSlicmVhayBjO2M9YystMXwwO2E9YSsxfDA7aWYoIWMpe2M9MDticmVha31lbHNlIGI9YisxfDB9d2hpbGUoMCk7ZFMoYXwwLDAsY3wwKXwwO3JldHVybiBhfDB9ZnVuY3Rpb24gclIoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MDtkPWlbYT4+MF18MDtjPWlbYj4+MF18MDtpZihkPDwyND4+MjQ9PTA/MTpkPDwyND4+MjQhPWM8PDI0Pj4yNCliPWQ7ZWxzZXtkb3thPWErMXwwO2I9YisxfDA7ZD1pW2E+PjBdfDA7Yz1pW2I+PjBdfDB9d2hpbGUoIShkPDwyND4+MjQ9PTA/MTpkPDwyND4+MjQhPWM8PDI0Pj4yNCkpO2I9ZH1yZXR1cm4gKGImMjU1KS0oYyYyNTUpfDB9ZnVuY3Rpb24gc1IoYSxiKXthPWF8MDtiPWJ8MDtwUihhLGIpfDA7cmV0dXJuIGF8MH1mdW5jdGlvbiB0UihhKXthPWF8MDt2YXIgYj0wLGM9MDtjPSh1UihhKXwwKSsxfDA7Yj1UUihjKXwwO2lmKCFiKWI9MDtlbHNlIGJTKGJ8MCxhfDAsY3wwKXwwO3JldHVybiBifDB9ZnVuY3Rpb24gdVIoYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wO2Q9YTthOmRvIGlmKCEoZCYzKSljPTQ7ZWxzZXtiPWE7YT1kO3doaWxlKDEpe2lmKCEoaVtiPj4wXXwwKSlicmVhayBhO2I9YisxfDA7YT1iO2lmKCEoYSYzKSl7YT1iO2M9NDticmVha319fXdoaWxlKDApO2lmKChjfDApPT00KXt3aGlsZSgxKXtiPWtbYT4+Ml18MDtpZighKChiJi0yMTM5MDYyMTQ0Xi0yMTM5MDYyMTQ0KSZiKy0xNjg0MzAwOSkpYT1hKzR8MDtlbHNlIGJyZWFrfWlmKChiJjI1NSk8PDI0Pj4yNClkbyBhPWErMXwwO3doaWxlKChpW2E+PjBdfDApIT0wKX1yZXR1cm4gYS1kfDB9ZnVuY3Rpb24gdlIoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wO2lmKCFjKWI9MDtlbHNle2Q9aVthPj4wXXwwO2E6ZG8gaWYoIShkPDwyND4+MjQpKWQ9MDtlbHNlIHdoaWxlKDEpe2M9YystMXwwO2U9aVtiPj4wXXwwO2lmKCEoZDw8MjQ+PjI0PT1lPDwyND4+MjQmKChjfDApIT0wJmU8PDI0Pj4yNCE9MCkpKWJyZWFrIGE7YT1hKzF8MDtiPWIrMXwwO2Q9aVthPj4wXXwwO2lmKCEoZDw8MjQ+PjI0KSl7ZD0wO2JyZWFrfX13aGlsZSgwKTtiPShkJjI1NSktKGxbYj4+MF18MCl8MH1yZXR1cm4gYnwwfWZ1bmN0aW9uIHdSKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtxUihhLGIsYyl8MDtyZXR1cm4gYXwwfWZ1bmN0aW9uIHhSKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTA7Yz1yO3I9cisxNnwwO2Q9YztrW2Q+PjJdPWE7a1tkKzQ+PjJdPWI7YT1RUShCYigzMyxkfDApfDApfDA7cj1jO3JldHVybiBhfDB9ZnVuY3Rpb24geVIoYSl7YT1hfDA7dmFyIGI9MCxjPTA7Yj1yO3I9cisxNnwwO2M9YjtrW2M+PjJdPWE7YT1MYig2LGN8MCl8MDthPVFRKChhfDApPT0tND8tMTE1OmEpfDA7cj1iO3JldHVybiBhfDB9ZnVuY3Rpb24gelIoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wO2g9cjtyPXIrNjR8MDtnPWgrMjR8MDtmPWgrMTZ8MDtkPWg7ZT1oKzM2fDA7a1tkPj4yXT1hO2tbZCs0Pj4yXT1iO2tbZCs4Pj4yXT1jO2Q9VWIoMjA3LGR8MCl8MDtpZigoZHwwKT09LTk/KGtbZj4+Ml09YSxrW2YrND4+Ml09MSwodmIoMjIxLGZ8MCl8MCk+PTApOjApe1BRKGUsYSk7a1tnPj4yXT1lO2tbZys0Pj4yXT1iO2tbZys4Pj4yXT1jO2Q9UVEocWIoMjEyLGd8MCl8MCl8MH1lbHNlIGQ9UVEoZCl8MDtyPWg7cmV0dXJuIGR8MH1mdW5jdGlvbiBBUihhKXthPWF8MDt2YXIgYj0wLGM9MDtiPXI7cj1yKzE2fDA7Yz1iO2tbYz4+Ml09YTthPVFRKFhhKDExOCxjfDApfDApfDA7cj1iO3JldHVybiBhfDB9ZnVuY3Rpb24gQlIoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MDtjPXI7cj1yKzE2fDA7ZD1jO2tbZD4+Ml09YTtrW2QrND4+Ml09MDtrW2QrOD4+Ml09YjtrW2QrMTI+PjJdPSgoYnwwKTwwKTw8MzE+PjMxO2I9UVEocGIoMTk0LGR8MCl8MCl8MDtyPWM7cmV0dXJuIGJ8MH1mdW5jdGlvbiBDUihhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTA7Zj1yO3I9cis0MTEyfDA7ZD1mO2M9Zis4fDA7aWYoYSlpZighYil7YT1MUSgpfDA7a1thPj4yXT0yMjthPTB9ZWxzZSBlPTQ7ZWxzZXtiPTQwOTY7YT1jO2U9NH1pZigoZXwwKT09NCl7a1tkPj4yXT1hO2tbZCs0Pj4yXT1iO2lmKChRUShfYSgxODMsZHwwKXwwKXwwKT49MCl7aWYoKGF8MCk9PShjfDApKWE9dFIoYyl8MH1lbHNlIGE9MH1yPWY7cmV0dXJuIGF8MH1mdW5jdGlvbiBEUigpe3ZhciBhPTAsYj0wO2I9cjtyPXIrMTZ8MDthPXliKDIwMSxifDApfDA7cj1iO3JldHVybiBhfDB9ZnVuY3Rpb24gRVIoKXt2YXIgYT0wLGI9MDtiPXI7cj1yKzE2fDA7YT1aYSgyMCxifDApfDA7cj1iO3JldHVybiBhfDB9ZnVuY3Rpb24gRlIoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MDtlPXI7cj1yKzMyfDA7Zj1lO2Q9ZSsyMHwwO2tbZj4+Ml09YTtrW2YrND4+Ml09MDtrW2YrOD4+Ml09YjtrW2YrMTI+PjJdPWQ7a1tmKzE2Pj4yXT1jO2M9KFFRKEViKDE0MCxmfDApfDApfDApIT0wO3I9ZTtyZXR1cm4gKGM/LTE6a1tkPj4yXXwwKXwwfWZ1bmN0aW9uIEdSKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MDtkPXI7cj1yKzE2fDA7ZT1kO2tbZT4+Ml09YTtrW2UrND4+Ml09YjtrW2UrOD4+Ml09YzthPVFRKEpiKDMsZXwwKXwwKXwwO3I9ZDtyZXR1cm4gYXwwfWZ1bmN0aW9uIEhSKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MDtkPXI7cj1yKzE2fDA7ZT1kO2tbZT4+Ml09YTtrW2UrND4+Ml09YjtrW2UrOD4+Ml09YzthPVFRKE5hKDg1LGV8MCl8MCl8MDtyPWQ7cmV0dXJuIGF8MH1mdW5jdGlvbiBJUihhKXthPWF8MDt2YXIgYj0wLGM9MDtiPXI7cj1yKzE2fDA7Yz1iO2tbYz4+Ml09YTthPVFRKFdhKDQwLGN8MCl8MCl8MDtyPWI7cmV0dXJuIGF8MH1mdW5jdGlvbiBKUihhKXthPWF8MDt2YXIgYj0wLGM9MDtjPXI7cj1yKzE2fDA7Yj1jO2tbYj4+Ml09YTtrW2IrND4+Ml09MDthPSh0YihifDAsYnwwKXwwKT09MDtyPWM7cmV0dXJuIChhPzA6a1tiPj4yXXwwKXwwfWZ1bmN0aW9uIEtSKGEpe2E9YXwwO3ZhciBiPTAsYz0wO2I9cjtyPXIrMTZ8MDtjPWI7a1tjPj4yXT1hO2E9UVEoSGIoMTAsY3wwKXwwKXwwO3I9YjtyZXR1cm4gYXwwfWZ1bmN0aW9uIExSKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MDtkPXI7cj1yKzE2fDA7ZT1kO2tbZT4+Ml09YTtrW2UrND4+Ml09YjtrW2UrOD4+Ml09YzthPVFRKE5iKDQsZXwwKXwwKXwwO3I9ZDtyZXR1cm4gYXwwfWZ1bmN0aW9uIE1SKGEpe2E9YXwwO2lmKCEoa1thKzY4Pj4yXXwwKSloUihhKTtyZXR1cm59ZnVuY3Rpb24gTlIoYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wLGU9MCxmPTAsZz0wO2I9YSsyMHwwO2Y9YSsyOHwwO2lmKChrW2I+PjJdfDApPj4+MD4oa1tmPj4yXXwwKT4+PjA/KFliW2tbYSszNj4+Ml0mMjU1XShhLDAsMCl8MCwoa1tiPj4yXXwwKT09MCk6MCliPS0xO2Vsc2V7Zz1hKzR8MDtjPWtbZz4+Ml18MDtkPWErOHwwO2U9a1tkPj4yXXwwO2lmKGM+Pj4wPGU+Pj4wKVliW2tbYSs0MD4+Ml0mMjU1XShhLGMtZXwwLDEpfDA7a1thKzE2Pj4yXT0wO2tbZj4+Ml09MDtrW2I+PjJdPTA7a1tkPj4yXT0wO2tbZz4+Ml09MDtiPTB9cmV0dXJuIGJ8MH1mdW5jdGlvbiBPUihhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxpPTAsaj0wLGw9MCxtPTAsbj0wLG89MDtvPXI7cj1yKzI0MHwwO249bztrW24+PjJdPWE7YTpkbyBpZigoZHwwKT4xKXttPTAtYnwwO2Y9ZDtnPWE7aT1hO2o9MTt3aGlsZSgxKXthPWcrbXwwO2w9ZistMnwwO2g9ZysoMC0oKGtbZSsobDw8Mik+PjJdfDApK2IpKXwwO2lmKChnY1tjJjI1NV0oaSxoKXwwKT4tMT8oZ2NbYyYyNTVdKGksYSl8MCk+LTE6MCl7ZD1qO2JyZWFrIGF9ZD1qKzF8MDtnPW4rKGo8PDIpfDA7aWYoKGdjW2MmMjU1XShoLGEpfDApPi0xKXtrW2c+PjJdPWg7YT1oO2Y9ZistMXwwfWVsc2V7a1tnPj4yXT1hO2Y9bH1pZigoZnwwKTw9MSlicmVhayBhO2c9YTtpPWtbbj4+Ml18MDtqPWR9fWVsc2UgZD0xO3doaWxlKDApO1NSKGIsbixkKTtyPW87cmV0dXJufWZ1bmN0aW9uIFBSKGEsYixjLGQsZSxmLGcpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO3ZhciBoPTAsaT0wLGo9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MDtxPXI7cj1yKzI0MHwwO289cTtpPWtbZD4+Ml18MDtkPWtbZCs0Pj4yXXwwO2tbbz4+Ml09YTtuPTAtYnwwO2E6ZG8gaWYoKGR8MCkhPTB8KGl8MCkhPTE/KGg9YSsoMC0oa1tnKyhlPDwyKT4+Ml18MCkpfDAsKGdjW2MmMjU1XShoLGEpfDApPj0xKTowKXtmPShmfDApPT0wO209aDtqPWk7bD1kO2g9MTt3aGlsZSgxKXtpZihmJihlfDApPjEpe2Q9a1tnKyhlKy0yPDwyKT4+Ml18MDtpZigoZ2NbYyYyNTVdKGErbnwwLG0pfDApPi0xKXtmPWU7ZD1oO3A9MjA7YnJlYWsgYX1pZigoZ2NbYyYyNTVdKGErKDAtKGQrYikpfDAsbSl8MCk+LTEpe2Y9ZTtkPWg7cD0yMDticmVhayBhfX1kPWgrMXwwO2tbbysoaDw8Mik+PjJdPW07Zj1qKy0xfDA7ZG8gaWYoZil7aWYoIShmJjEpKXthPWY7Zj0wO2Rve2Y9ZisxfDA7YT1hPj4+MX13aGlsZSgoYSYxfDApPT0wKTtpZighZilwPTExfWVsc2UgcD0xMTtpZigocHwwKT09MTEpe3A9MDtpZighbCl7Zj02NDtwPTE2O2JyZWFrfWlmKCEobCYxKSl7YT1sO2Y9MH1lbHNle2k9MDthPWo7aD1sO2Y9MDticmVha313aGlsZSgxKXtoPWYrMXwwO2E9YT4+PjE7aWYoYSYxKXthPWg7YnJlYWt9ZWxzZSBmPWh9aWYoIWEpe2k9MDthPWo7aD1sO2Y9MDticmVha31lbHNlIGY9ZiszM3wwfWlmKGY+Pj4wPjMxKXA9MTY7ZWxzZXtpPWY7YT1qO2g9bH19ZWxzZXtmPTMyO3A9MTZ9d2hpbGUoMCk7aWYoKHB8MCk9PTE2KXtwPTA7aT1mKy0zMnwwO2E9bDtoPTB9aj1oPDwzMi1pfGE+Pj5pO2w9aD4+Pmk7Zj1mK2V8MDtpZighKChsfDApIT0wfChqfDApIT0xKSl7YT1tO3A9MjA7YnJlYWsgYX1hPW0rKDAtKGtbZysoZjw8Mik+PjJdfDApKXwwO2lmKChnY1tjJjI1NV0oYSxrW28+PjJdfDApfDApPDEpe2E9bTtlPWY7Zj0wO3A9MTk7YnJlYWt9ZWxzZXtpPW07ZT1mO2Y9MTttPWE7aD1kO2E9aX19fWVsc2V7ZD0xO3A9MTl9d2hpbGUoMCk7aWYoKHB8MCk9PTE5PyhmfDApPT0wOjApe2Y9ZTtwPTIwfWlmKChwfDApPT0yMCl7U1IoYixvLGQpO09SKGEsYixjLGYsZyl9cj1xO3JldHVybn1mdW5jdGlvbiBRUihhKXthPWF8MDtyZXR1cm59ZnVuY3Rpb24gUlIoKXtyZXR1cm59ZnVuY3Rpb24gU1IoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wO2c9cjtyPXIrMjU2fDA7ZD1nO2E6ZG8gaWYoKGN8MCk+PTI/KGY9YisoYzw8Mil8MCxrW2Y+PjJdPWQsKGF8MCkhPTApOjApd2hpbGUoMSl7ZT1hPj4+MD4yNTY/MjU2OmE7YlMoZHwwLGtbYj4+Ml18MCxlfDApfDA7ZD0wO2Rve2g9YisoZDw8Mil8MDtkPWQrMXwwO2JTKGtbaD4+Ml18MCxrW2IrKGQ8PDIpPj4yXXwwLGV8MCl8MDtrW2g+PjJdPShrW2g+PjJdfDApK2V9d2hpbGUoKGR8MCkhPShjfDApKTtpZigoYXwwKT09KGV8MCkpYnJlYWsgYTthPWEtZXwwO2Q9a1tmPj4yXXwwfXdoaWxlKDApO3I9ZztyZXR1cm59ZnVuY3Rpb24gVFIoYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wLGU9MCxmPTAsZz0wLGg9MCxpPTAsaj0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MCxFPTAsRj0wLEc9MCxIPTAsST0wLEo9MCxLPTAsTD0wLE09MDtkbyBpZihhPj4+MDwyNDUpe289YT4+PjA8MTE/MTY6YSsxMSYtODthPW8+Pj4zO2g9a1syMjU3XXwwO2M9aD4+PmE7aWYoYyYzKXthPShjJjFeMSkrYXwwO2Q9YTw8MTtjPTkwNjgrKGQ8PDIpfDA7ZD05MDY4KyhkKzI8PDIpfDA7ZT1rW2Q+PjJdfDA7Zj1lKzh8MDtnPWtbZj4+Ml18MDtkbyBpZigoY3wwKSE9KGd8MCkpe2lmKGc+Pj4wPChrWzIyNjFdfDApPj4+MClWYSgpO2I9ZysxMnwwO2lmKChrW2I+PjJdfDApPT0oZXwwKSl7a1tiPj4yXT1jO2tbZD4+Ml09ZzticmVha31lbHNlIFZhKCl9ZWxzZSBrWzIyNTddPWgmfigxPDxhKTt3aGlsZSgwKTtNPWE8PDM7a1tlKzQ+PjJdPU18MztNPWUrKE18NCl8MDtrW00+PjJdPWtbTT4+Ml18MTtNPWY7cmV0dXJuIE18MH1nPWtbMjI1OV18MDtpZihvPj4+MD5nPj4+MCl7aWYoYyl7ZD0yPDxhO2Q9Yzw8YSYoZHwwLWQpO2Q9KGQmMC1kKSstMXwwO2k9ZD4+PjEyJjE2O2Q9ZD4+Pmk7ZT1kPj4+NSY4O2Q9ZD4+PmU7Zj1kPj4+MiY0O2Q9ZD4+PmY7Yz1kPj4+MSYyO2Q9ZD4+PmM7YT1kPj4+MSYxO2E9KGV8aXxmfGN8YSkrKGQ+Pj5hKXwwO2Q9YTw8MTtjPTkwNjgrKGQ8PDIpfDA7ZD05MDY4KyhkKzI8PDIpfDA7Zj1rW2Q+PjJdfDA7aT1mKzh8MDtlPWtbaT4+Ml18MDtkbyBpZigoY3wwKSE9KGV8MCkpe2lmKGU+Pj4wPChrWzIyNjFdfDApPj4+MClWYSgpO2I9ZSsxMnwwO2lmKChrW2I+PjJdfDApPT0oZnwwKSl7a1tiPj4yXT1jO2tbZD4+Ml09ZTtqPWtbMjI1OV18MDticmVha31lbHNlIFZhKCl9ZWxzZXtrWzIyNTddPWgmfigxPDxhKTtqPWd9d2hpbGUoMCk7TT1hPDwzO2c9TS1vfDA7a1tmKzQ+PjJdPW98MztoPWYrb3wwO2tbZisob3w0KT4+Ml09Z3wxO2tbZitNPj4yXT1nO2lmKGope2U9a1syMjYyXXwwO2M9aj4+PjM7Yj1jPDwxO2Q9OTA2OCsoYjw8Mil8MDthPWtbMjI1N118MDtjPTE8PGM7aWYoYSZjKXthPTkwNjgrKGIrMjw8Mil8MDtiPWtbYT4+Ml18MDtpZihiPj4+MDwoa1syMjYxXXwwKT4+PjApVmEoKTtlbHNle2w9YTttPWJ9fWVsc2V7a1syMjU3XT1hfGM7bD05MDY4KyhiKzI8PDIpfDA7bT1kfWtbbD4+Ml09ZTtrW20rMTI+PjJdPWU7a1tlKzg+PjJdPW07a1tlKzEyPj4yXT1kfWtbMjI1OV09ZztrWzIyNjJdPWg7TT1pO3JldHVybiBNfDB9YT1rWzIyNThdfDA7aWYoYSl7Yz0oYSYwLWEpKy0xfDA7TD1jPj4+MTImMTY7Yz1jPj4+TDtLPWM+Pj41Jjg7Yz1jPj4+SztNPWM+Pj4yJjQ7Yz1jPj4+TTthPWM+Pj4xJjI7Yz1jPj4+YTtkPWM+Pj4xJjE7ZD1rWzkzMzIrKChLfEx8TXxhfGQpKyhjPj4+ZCk8PDIpPj4yXXwwO2M9KGtbZCs0Pj4yXSYtOCktb3wwO2E9ZDt3aGlsZSgxKXtiPWtbYSsxNj4+Ml18MDtpZighYil7Yj1rW2ErMjA+PjJdfDA7aWYoIWIpe2k9YzticmVha319YT0oa1tiKzQ+PjJdJi04KS1vfDA7TT1hPj4+MDxjPj4+MDtjPU0/YTpjO2E9YjtkPU0/YjpkfWY9a1syMjYxXXwwO2lmKGQ+Pj4wPGY+Pj4wKVZhKCk7aD1kK298MDtpZihkPj4+MD49aD4+PjApVmEoKTtnPWtbZCsyND4+Ml18MDtjPWtbZCsxMj4+Ml18MDtkbyBpZigoY3wwKT09KGR8MCkpe2E9ZCsyMHwwO2I9a1thPj4yXXwwO2lmKCFiKXthPWQrMTZ8MDtiPWtbYT4+Ml18MDtpZighYil7bj0wO2JyZWFrfX13aGlsZSgxKXtjPWIrMjB8MDtlPWtbYz4+Ml18MDtpZihlKXtiPWU7YT1jO2NvbnRpbnVlfWM9YisxNnwwO2U9a1tjPj4yXXwwO2lmKCFlKWJyZWFrO2Vsc2V7Yj1lO2E9Y319aWYoYT4+PjA8Zj4+PjApVmEoKTtlbHNle2tbYT4+Ml09MDtuPWI7YnJlYWt9fWVsc2V7ZT1rW2QrOD4+Ml18MDtpZihlPj4+MDxmPj4+MClWYSgpO2I9ZSsxMnwwO2lmKChrW2I+PjJdfDApIT0oZHwwKSlWYSgpO2E9Yys4fDA7aWYoKGtbYT4+Ml18MCk9PShkfDApKXtrW2I+PjJdPWM7a1thPj4yXT1lO249YzticmVha31lbHNlIFZhKCl9d2hpbGUoMCk7ZG8gaWYoZyl7Yj1rW2QrMjg+PjJdfDA7YT05MzMyKyhiPDwyKXwwO2lmKChkfDApPT0oa1thPj4yXXwwKSl7a1thPj4yXT1uO2lmKCFuKXtrWzIyNThdPWtbMjI1OF0mfigxPDxiKTticmVha319ZWxzZXtpZihnPj4+MDwoa1syMjYxXXwwKT4+PjApVmEoKTtiPWcrMTZ8MDtpZigoa1tiPj4yXXwwKT09KGR8MCkpa1tiPj4yXT1uO2Vsc2Uga1tnKzIwPj4yXT1uO2lmKCFuKWJyZWFrfWE9a1syMjYxXXwwO2lmKG4+Pj4wPGE+Pj4wKVZhKCk7a1tuKzI0Pj4yXT1nO2I9a1tkKzE2Pj4yXXwwO2RvIGlmKGIpaWYoYj4+PjA8YT4+PjApVmEoKTtlbHNle2tbbisxNj4+Ml09YjtrW2IrMjQ+PjJdPW47YnJlYWt9d2hpbGUoMCk7Yj1rW2QrMjA+PjJdfDA7aWYoYilpZihiPj4+MDwoa1syMjYxXXwwKT4+PjApVmEoKTtlbHNle2tbbisyMD4+Ml09YjtrW2IrMjQ+PjJdPW47YnJlYWt9fXdoaWxlKDApO2lmKGk+Pj4wPDE2KXtNPWkrb3wwO2tbZCs0Pj4yXT1NfDM7TT1kKyhNKzQpfDA7a1tNPj4yXT1rW00+PjJdfDF9ZWxzZXtrW2QrND4+Ml09b3wzO2tbZCsob3w0KT4+Ml09aXwxO2tbZCsoaStvKT4+Ml09aTtiPWtbMjI1OV18MDtpZihiKXtmPWtbMjI2Ml18MDtjPWI+Pj4zO2I9Yzw8MTtlPTkwNjgrKGI8PDIpfDA7YT1rWzIyNTddfDA7Yz0xPDxjO2lmKGEmYyl7Yj05MDY4KyhiKzI8PDIpfDA7YT1rW2I+PjJdfDA7aWYoYT4+PjA8KGtbMjI2MV18MCk+Pj4wKVZhKCk7ZWxzZXtwPWI7cT1hfX1lbHNle2tbMjI1N109YXxjO3A9OTA2OCsoYisyPDwyKXwwO3E9ZX1rW3A+PjJdPWY7a1txKzEyPj4yXT1mO2tbZis4Pj4yXT1xO2tbZisxMj4+Ml09ZX1rWzIyNTldPWk7a1syMjYyXT1ofU09ZCs4fDA7cmV0dXJuIE18MH1lbHNlIHE9b31lbHNlIHE9b31lbHNlIGlmKGE+Pj4wPD00Mjk0OTY3MjMxKXthPWErMTF8MDttPWEmLTg7bD1rWzIyNThdfDA7aWYobCl7Yz0wLW18MDthPWE+Pj44O2lmKGEpaWYobT4+PjA+MTY3NzcyMTUpaj0zMTtlbHNle3E9KGErMTA0ODMyMHwwKT4+PjE2Jjg7dj1hPDxxO3A9KHYrNTIwMTkyfDApPj4+MTYmNDt2PXY8PHA7aj0odisyNDU3NjB8MCk+Pj4xNiYyO2o9MTQtKHB8cXxqKSsodjw8aj4+PjE1KXwwO2o9bT4+PihqKzd8MCkmMXxqPDwxfWVsc2Ugaj0wO2E9a1s5MzMyKyhqPDwyKT4+Ml18MDthOmRvIGlmKCFhKXtlPTA7YT0wO3Y9ODZ9ZWxzZXtnPWM7ZT0wO2g9bTw8KChqfDApPT0zMT8wOjI1LShqPj4+MSl8MCk7aT1hO2E9MDt3aGlsZSgxKXtmPWtbaSs0Pj4yXSYtODtjPWYtbXwwO2lmKGM+Pj4wPGc+Pj4wKWlmKChmfDApPT0obXwwKSl7Zj1pO2E9aTt2PTkwO2JyZWFrIGF9ZWxzZSBhPWk7ZWxzZSBjPWc7dj1rW2krMjA+PjJdfDA7aT1rW2krMTYrKGg+Pj4zMTw8Mik+PjJdfDA7ZT0odnwwKT09MHwodnwwKT09KGl8MCk/ZTp2O2lmKCFpKXt2PTg2O2JyZWFrfWVsc2V7Zz1jO2g9aDw8MX19fXdoaWxlKDApO2lmKCh2fDApPT04Nil7aWYoKGV8MCk9PTAmKGF8MCk9PTApe2E9Mjw8ajthPWwmKGF8MC1hKTtpZighYSl7cT1tO2JyZWFrfWE9KGEmMC1hKSstMXwwO249YT4+PjEyJjE2O2E9YT4+Pm47bD1hPj4+NSY4O2E9YT4+Pmw7cD1hPj4+MiY0O2E9YT4+PnA7cT1hPj4+MSYyO2E9YT4+PnE7ZT1hPj4+MSYxO2U9a1s5MzMyKygobHxufHB8cXxlKSsoYT4+PmUpPDwyKT4+Ml18MDthPTB9aWYoIWUpe2g9YztpPWF9ZWxzZXtmPWU7dj05MH19aWYoKHZ8MCk9PTkwKXdoaWxlKDEpe3Y9MDtxPShrW2YrND4+Ml0mLTgpLW18MDtlPXE+Pj4wPGM+Pj4wO2M9ZT9xOmM7YT1lP2Y6YTtlPWtbZisxNj4+Ml18MDtpZihlKXtmPWU7dj05MDtjb250aW51ZX1mPWtbZisyMD4+Ml18MDtpZighZil7aD1jO2k9YTticmVha31lbHNlIHY9OTB9aWYoKGl8MCkhPTA/aD4+PjA8KChrWzIyNTldfDApLW18MCk+Pj4wOjApe2U9a1syMjYxXXwwO2lmKGk+Pj4wPGU+Pj4wKVZhKCk7Zz1pK218MDtpZihpPj4+MD49Zz4+PjApVmEoKTtmPWtbaSsyND4+Ml18MDtjPWtbaSsxMj4+Ml18MDtkbyBpZigoY3wwKT09KGl8MCkpe2E9aSsyMHwwO2I9a1thPj4yXXwwO2lmKCFiKXthPWkrMTZ8MDtiPWtbYT4+Ml18MDtpZighYil7bz0wO2JyZWFrfX13aGlsZSgxKXtjPWIrMjB8MDtkPWtbYz4+Ml18MDtpZihkKXtiPWQ7YT1jO2NvbnRpbnVlfWM9YisxNnwwO2Q9a1tjPj4yXXwwO2lmKCFkKWJyZWFrO2Vsc2V7Yj1kO2E9Y319aWYoYT4+PjA8ZT4+PjApVmEoKTtlbHNle2tbYT4+Ml09MDtvPWI7YnJlYWt9fWVsc2V7ZD1rW2krOD4+Ml18MDtpZihkPj4+MDxlPj4+MClWYSgpO2I9ZCsxMnwwO2lmKChrW2I+PjJdfDApIT0oaXwwKSlWYSgpO2E9Yys4fDA7aWYoKGtbYT4+Ml18MCk9PShpfDApKXtrW2I+PjJdPWM7a1thPj4yXT1kO289YzticmVha31lbHNlIFZhKCl9d2hpbGUoMCk7ZG8gaWYoZil7Yj1rW2krMjg+PjJdfDA7YT05MzMyKyhiPDwyKXwwO2lmKChpfDApPT0oa1thPj4yXXwwKSl7a1thPj4yXT1vO2lmKCFvKXtrWzIyNThdPWtbMjI1OF0mfigxPDxiKTticmVha319ZWxzZXtpZihmPj4+MDwoa1syMjYxXXwwKT4+PjApVmEoKTtiPWYrMTZ8MDtpZigoa1tiPj4yXXwwKT09KGl8MCkpa1tiPj4yXT1vO2Vsc2Uga1tmKzIwPj4yXT1vO2lmKCFvKWJyZWFrfWE9a1syMjYxXXwwO2lmKG8+Pj4wPGE+Pj4wKVZhKCk7a1tvKzI0Pj4yXT1mO2I9a1tpKzE2Pj4yXXwwO2RvIGlmKGIpaWYoYj4+PjA8YT4+PjApVmEoKTtlbHNle2tbbysxNj4+Ml09YjtrW2IrMjQ+PjJdPW87YnJlYWt9d2hpbGUoMCk7Yj1rW2krMjA+PjJdfDA7aWYoYilpZihiPj4+MDwoa1syMjYxXXwwKT4+PjApVmEoKTtlbHNle2tbbysyMD4+Ml09YjtrW2IrMjQ+PjJdPW87YnJlYWt9fXdoaWxlKDApO2I6ZG8gaWYoaD4+PjA+PTE2KXtrW2krND4+Ml09bXwzO2tbaSsobXw0KT4+Ml09aHwxO2tbaSsoaCttKT4+Ml09aDtiPWg+Pj4zO2lmKGg+Pj4wPDI1Nil7YT1iPDwxO2Q9OTA2OCsoYTw8Mil8MDtjPWtbMjI1N118MDtiPTE8PGI7aWYoYyZiKXtiPTkwNjgrKGErMjw8Mil8MDthPWtbYj4+Ml18MDtpZihhPj4+MDwoa1syMjYxXXwwKT4+PjApVmEoKTtlbHNle3M9Yjt0PWF9fWVsc2V7a1syMjU3XT1jfGI7cz05MDY4KyhhKzI8PDIpfDA7dD1kfWtbcz4+Ml09ZztrW3QrMTI+PjJdPWc7a1tpKyhtKzgpPj4yXT10O2tbaSsobSsxMik+PjJdPWQ7YnJlYWt9Yj1oPj4+ODtpZihiKWlmKGg+Pj4wPjE2Nzc3MjE1KWQ9MzE7ZWxzZXtMPShiKzEwNDgzMjB8MCk+Pj4xNiY4O009Yjw8TDtLPShNKzUyMDE5MnwwKT4+PjE2JjQ7TT1NPDxLO2Q9KE0rMjQ1NzYwfDApPj4+MTYmMjtkPTE0LShLfEx8ZCkrKE08PGQ+Pj4xNSl8MDtkPWg+Pj4oZCs3fDApJjF8ZDw8MX1lbHNlIGQ9MDtiPTkzMzIrKGQ8PDIpfDA7a1tpKyhtKzI4KT4+Ml09ZDtrW2krKG0rMjApPj4yXT0wO2tbaSsobSsxNik+PjJdPTA7YT1rWzIyNThdfDA7Yz0xPDxkO2lmKCEoYSZjKSl7a1syMjU4XT1hfGM7a1tiPj4yXT1nO2tbaSsobSsyNCk+PjJdPWI7a1tpKyhtKzEyKT4+Ml09ZztrW2krKG0rOCk+PjJdPWc7YnJlYWt9Yj1rW2I+PjJdfDA7YzpkbyBpZigoa1tiKzQ+PjJdJi04fDApIT0oaHwwKSl7ZD1oPDwoKGR8MCk9PTMxPzA6MjUtKGQ+Pj4xKXwwKTt3aGlsZSgxKXthPWIrMTYrKGQ+Pj4zMTw8Mil8MDtjPWtbYT4+Ml18MDtpZighYylicmVhaztpZigoa1tjKzQ+PjJdJi04fDApPT0oaHwwKSl7eT1jO2JyZWFrIGN9ZWxzZXtkPWQ8PDE7Yj1jfX1pZihhPj4+MDwoa1syMjYxXXwwKT4+PjApVmEoKTtlbHNle2tbYT4+Ml09ZztrW2krKG0rMjQpPj4yXT1iO2tbaSsobSsxMik+PjJdPWc7a1tpKyhtKzgpPj4yXT1nO2JyZWFrIGJ9fWVsc2UgeT1iO3doaWxlKDApO2I9eSs4fDA7YT1rW2I+PjJdfDA7TT1rWzIyNjFdfDA7aWYoYT4+PjA+PU0+Pj4wJnk+Pj4wPj1NPj4+MCl7a1thKzEyPj4yXT1nO2tbYj4+Ml09ZztrW2krKG0rOCk+PjJdPWE7a1tpKyhtKzEyKT4+Ml09eTtrW2krKG0rMjQpPj4yXT0wO2JyZWFrfWVsc2UgVmEoKX1lbHNle009aCttfDA7a1tpKzQ+PjJdPU18MztNPWkrKE0rNCl8MDtrW00+PjJdPWtbTT4+Ml18MX13aGlsZSgwKTtNPWkrOHwwO3JldHVybiBNfDB9ZWxzZSBxPW19ZWxzZSBxPW19ZWxzZSBxPS0xO3doaWxlKDApO2M9a1syMjU5XXwwO2lmKGM+Pj4wPj1xPj4+MCl7Yj1jLXF8MDthPWtbMjI2Ml18MDtpZihiPj4+MD4xNSl7a1syMjYyXT1hK3E7a1syMjU5XT1iO2tbYSsocSs0KT4+Ml09YnwxO2tbYStjPj4yXT1iO2tbYSs0Pj4yXT1xfDN9ZWxzZXtrWzIyNTldPTA7a1syMjYyXT0wO2tbYSs0Pj4yXT1jfDM7TT1hKyhjKzQpfDA7a1tNPj4yXT1rW00+PjJdfDF9TT1hKzh8MDtyZXR1cm4gTXwwfWE9a1syMjYwXXwwO2lmKGE+Pj4wPnE+Pj4wKXtMPWEtcXwwO2tbMjI2MF09TDtNPWtbMjI2M118MDtrWzIyNjNdPU0rcTtrW00rKHErNCk+PjJdPUx8MTtrW00rND4+Ml09cXwzO009TSs4fDA7cmV0dXJuIE18MH1kbyBpZighKGtbMjM3NV18MCkpe2E9cmIoMzApfDA7aWYoIShhKy0xJmEpKXtrWzIzNzddPWE7a1syMzc2XT1hO2tbMjM3OF09LTE7a1syMzc5XT0tMTtrWzIzODBdPTA7a1syMzY4XT0wO3k9KE9iKDApfDApJi0xNl4xNDMxNjU1NzY4O2tbMjM3NV09eTticmVha31lbHNlIFZhKCl9d2hpbGUoMCk7aT1xKzQ4fDA7aD1rWzIzNzddfDA7aj1xKzQ3fDA7Zz1oK2p8MDtoPTAtaHwwO2w9ZyZoO2lmKGw+Pj4wPD1xPj4+MCl7TT0wO3JldHVybiBNfDB9YT1rWzIzNjddfDA7aWYoKGF8MCkhPTA/KHQ9a1syMzY1XXwwLHk9dCtsfDAseT4+PjA8PXQ+Pj4wfHk+Pj4wPmE+Pj4wKTowKXtNPTA7cmV0dXJuIE18MH1kOmRvIGlmKCEoa1syMzY4XSY0KSl7YT1rWzIyNjNdfDA7ZTpkbyBpZihhKXtlPTk0NzY7d2hpbGUoMSl7Yz1rW2U+PjJdfDA7aWYoYz4+PjA8PWE+Pj4wPyhyPWUrNHwwLChjKyhrW3I+PjJdfDApfDApPj4+MD5hPj4+MCk6MCl7Zj1lO2E9cjticmVha31lPWtbZSs4Pj4yXXwwO2lmKCFlKXt2PTE3NDticmVhayBlfX1jPWctKGtbMjI2MF18MCkmaDtpZihjPj4+MDwyMTQ3NDgzNjQ3KXtlPWtiKGN8MCl8MDt5PShlfDApPT0oKGtbZj4+Ml18MCkrKGtbYT4+Ml18MCl8MCk7YT15P2M6MDtpZih5KXtpZigoZXwwKSE9KC0xfDApKXt3PWU7cD1hO3Y9MTk0O2JyZWFrIGR9fWVsc2Ugdj0xODR9ZWxzZSBhPTB9ZWxzZSB2PTE3NDt3aGlsZSgwKTtkbyBpZigodnwwKT09MTc0KXtmPWtiKDApfDA7aWYoKGZ8MCkhPSgtMXwwKSl7YT1mO2M9a1syMzc2XXwwO2U9YystMXwwO2lmKCEoZSZhKSljPWw7ZWxzZSBjPWwtYSsoZSthJjAtYyl8MDthPWtbMjM2NV18MDtlPWErY3wwO2lmKGM+Pj4wPnE+Pj4wJmM+Pj4wPDIxNDc0ODM2NDcpe3k9a1syMzY3XXwwO2lmKCh5fDApIT0wP2U+Pj4wPD1hPj4+MHxlPj4+MD55Pj4+MDowKXthPTA7YnJlYWt9ZT1rYihjfDApfDA7eT0oZXwwKT09KGZ8MCk7YT15P2M6MDtpZih5KXt3PWY7cD1hO3Y9MTk0O2JyZWFrIGR9ZWxzZSB2PTE4NH1lbHNlIGE9MH1lbHNlIGE9MH13aGlsZSgwKTtmOmRvIGlmKCh2fDApPT0xODQpe2Y9MC1jfDA7ZG8gaWYoaT4+PjA+Yz4+PjAmKGM+Pj4wPDIxNDc0ODM2NDcmKGV8MCkhPSgtMXwwKSk/KHU9a1syMzc3XXwwLHU9ai1jK3UmMC11LHU+Pj4wPDIxNDc0ODM2NDcpOjApaWYoKGtiKHV8MCl8MCk9PSgtMXwwKSl7a2IoZnwwKXwwO2JyZWFrIGZ9ZWxzZXtjPXUrY3wwO2JyZWFrfXdoaWxlKDApO2lmKChlfDApIT0oLTF8MCkpe3c9ZTtwPWM7dj0xOTQ7YnJlYWsgZH19d2hpbGUoMCk7a1syMzY4XT1rWzIzNjhdfDQ7dj0xOTF9ZWxzZXthPTA7dj0xOTF9d2hpbGUoMCk7aWYoKCgodnwwKT09MTkxP2w+Pj4wPDIxNDc0ODM2NDc6MCk/KHc9a2IobHwwKXwwLHg9a2IoMCl8MCx3Pj4+MDx4Pj4+MCYoKHd8MCkhPSgtMXwwKSYoeHwwKSE9KC0xfDApKSk6MCk/KHo9eC13fDAsQT16Pj4+MD4ocSs0MHwwKT4+PjAsQSk6MCl7cD1BP3o6YTt2PTE5NH1pZigodnwwKT09MTk0KXthPShrWzIzNjVdfDApK3B8MDtrWzIzNjVdPWE7aWYoYT4+PjA+KGtbMjM2Nl18MCk+Pj4wKWtbMjM2Nl09YTtnPWtbMjI2M118MDtnOmRvIGlmKGcpe2Y9OTQ3Njtkb3thPWtbZj4+Ml18MDtjPWYrNHwwO2U9a1tjPj4yXXwwO2lmKCh3fDApPT0oYStlfDApKXtCPWE7Qz1jO0Q9ZTtFPWY7dj0yMDQ7YnJlYWt9Zj1rW2YrOD4+Ml18MH13aGlsZSgoZnwwKSE9MCk7aWYoKCh2fDApPT0yMDQ/KGtbRSsxMj4+Ml0mOHwwKT09MDowKT9nPj4+MDx3Pj4+MCZnPj4+MD49Qj4+PjA6MCl7a1tDPj4yXT1EK3A7TT0oa1syMjYwXXwwKStwfDA7TD1nKzh8MDtMPShMJjd8MCk9PTA/MDowLUwmNztLPU0tTHwwO2tbMjI2M109ZytMO2tbMjI2MF09SztrW2crKEwrNCk+PjJdPUt8MTtrW2crKE0rNCk+PjJdPTQwO2tbMjI2NF09a1syMzc5XTticmVha31hPWtbMjI2MV18MDtpZih3Pj4+MDxhPj4+MCl7a1syMjYxXT13O2E9d31jPXcrcHwwO2Y9OTQ3Njt3aGlsZSgxKXtpZigoa1tmPj4yXXwwKT09KGN8MCkpe2U9ZjtjPWY7dj0yMTI7YnJlYWt9Zj1rW2YrOD4+Ml18MDtpZighZil7Yz05NDc2O2JyZWFrfX1pZigodnwwKT09MjEyKWlmKCEoa1tjKzEyPj4yXSY4KSl7a1tlPj4yXT13O249Yys0fDA7a1tuPj4yXT0oa1tuPj4yXXwwKStwO249dys4fDA7bj0obiY3fDApPT0wPzA6MC1uJjc7aj13KyhwKzgpfDA7aj0oaiY3fDApPT0wPzA6MC1qJjc7Yj13KyhqK3ApfDA7bT1uK3F8MDtvPXcrbXwwO2w9Yi0odytuKS1xfDA7a1t3KyhuKzQpPj4yXT1xfDM7aDpkbyBpZigoYnwwKSE9KGd8MCkpe2lmKChifDApPT0oa1syMjYyXXwwKSl7TT0oa1syMjU5XXwwKStsfDA7a1syMjU5XT1NO2tbMjI2Ml09bztrW3crKG0rNCk+PjJdPU18MTtrW3crKE0rbSk+PjJdPU07YnJlYWt9aD1wKzR8MDtjPWtbdysoaCtqKT4+Ml18MDtpZigoYyYzfDApPT0xKXtpPWMmLTg7Zj1jPj4+MztpOmRvIGlmKGM+Pj4wPj0yNTYpe2c9a1t3KygoanwyNCkrcCk+PjJdfDA7ZD1rW3crKHArMTIraik+PjJdfDA7ZG8gaWYoKGR8MCk9PShifDApKXtlPWp8MTY7ZD13KyhoK2UpfDA7Yz1rW2Q+PjJdfDA7aWYoIWMpe2Q9dysoZStwKXwwO2M9a1tkPj4yXXwwO2lmKCFjKXtKPTA7YnJlYWt9fXdoaWxlKDEpe2U9YysyMHwwO2Y9a1tlPj4yXXwwO2lmKGYpe2M9ZjtkPWU7Y29udGludWV9ZT1jKzE2fDA7Zj1rW2U+PjJdfDA7aWYoIWYpYnJlYWs7ZWxzZXtjPWY7ZD1lfX1pZihkPj4+MDxhPj4+MClWYSgpO2Vsc2V7a1tkPj4yXT0wO0o9YzticmVha319ZWxzZXtlPWtbdysoKGp8OCkrcCk+PjJdfDA7aWYoZT4+PjA8YT4+PjApVmEoKTthPWUrMTJ8MDtpZigoa1thPj4yXXwwKSE9KGJ8MCkpVmEoKTtjPWQrOHwwO2lmKChrW2M+PjJdfDApPT0oYnwwKSl7a1thPj4yXT1kO2tbYz4+Ml09ZTtKPWQ7YnJlYWt9ZWxzZSBWYSgpfXdoaWxlKDApO2lmKCFnKWJyZWFrO2E9a1t3KyhwKzI4K2opPj4yXXwwO2M9OTMzMisoYTw8Mil8MDtkbyBpZigoYnwwKSE9KGtbYz4+Ml18MCkpe2lmKGc+Pj4wPChrWzIyNjFdfDApPj4+MClWYSgpO2E9ZysxNnwwO2lmKChrW2E+PjJdfDApPT0oYnwwKSlrW2E+PjJdPUo7ZWxzZSBrW2crMjA+PjJdPUo7aWYoIUopYnJlYWsgaX1lbHNle2tbYz4+Ml09SjtpZihKKWJyZWFrO2tbMjI1OF09a1syMjU4XSZ+KDE8PGEpO2JyZWFrIGl9d2hpbGUoMCk7Yz1rWzIyNjFdfDA7aWYoSj4+PjA8Yz4+PjApVmEoKTtrW0orMjQ+PjJdPWc7Yj1qfDE2O2E9a1t3KyhiK3ApPj4yXXwwO2RvIGlmKGEpaWYoYT4+PjA8Yz4+PjApVmEoKTtlbHNle2tbSisxNj4+Ml09YTtrW2ErMjQ+PjJdPUo7YnJlYWt9d2hpbGUoMCk7Yj1rW3crKGgrYik+PjJdfDA7aWYoIWIpYnJlYWs7aWYoYj4+PjA8KGtbMjI2MV18MCk+Pj4wKVZhKCk7ZWxzZXtrW0orMjA+PjJdPWI7a1tiKzI0Pj4yXT1KO2JyZWFrfX1lbHNle2Q9a1t3Kygoanw4KStwKT4+Ml18MDtlPWtbdysocCsxMitqKT4+Ml18MDtjPTkwNjgrKGY8PDE8PDIpfDA7ZG8gaWYoKGR8MCkhPShjfDApKXtpZihkPj4+MDxhPj4+MClWYSgpO2lmKChrW2QrMTI+PjJdfDApPT0oYnwwKSlicmVhaztWYSgpfXdoaWxlKDApO2lmKChlfDApPT0oZHwwKSl7a1syMjU3XT1rWzIyNTddJn4oMTw8Zik7YnJlYWt9ZG8gaWYoKGV8MCk9PShjfDApKUY9ZSs4fDA7ZWxzZXtpZihlPj4+MDxhPj4+MClWYSgpO2E9ZSs4fDA7aWYoKGtbYT4+Ml18MCk9PShifDApKXtGPWE7YnJlYWt9VmEoKX13aGlsZSgwKTtrW2QrMTI+PjJdPWU7a1tGPj4yXT1kfXdoaWxlKDApO2I9dysoKGl8aikrcCl8MDtlPWkrbHwwfWVsc2UgZT1sO2I9Yis0fDA7a1tiPj4yXT1rW2I+PjJdJi0yO2tbdysobSs0KT4+Ml09ZXwxO2tbdysoZSttKT4+Ml09ZTtiPWU+Pj4zO2lmKGU+Pj4wPDI1Nil7YT1iPDwxO2Q9OTA2OCsoYTw8Mil8MDtjPWtbMjI1N118MDtiPTE8PGI7ZG8gaWYoIShjJmIpKXtrWzIyNTddPWN8YjtLPTkwNjgrKGErMjw8Mil8MDtMPWR9ZWxzZXtiPTkwNjgrKGErMjw8Mil8MDthPWtbYj4+Ml18MDtpZihhPj4+MD49KGtbMjI2MV18MCk+Pj4wKXtLPWI7TD1hO2JyZWFrfVZhKCl9d2hpbGUoMCk7a1tLPj4yXT1vO2tbTCsxMj4+Ml09bztrW3crKG0rOCk+PjJdPUw7a1t3KyhtKzEyKT4+Ml09ZDticmVha31iPWU+Pj44O2RvIGlmKCFiKWQ9MDtlbHNle2lmKGU+Pj4wPjE2Nzc3MjE1KXtkPTMxO2JyZWFrfUs9KGIrMTA0ODMyMHwwKT4+PjE2Jjg7TD1iPDxLO0o9KEwrNTIwMTkyfDApPj4+MTYmNDtMPUw8PEo7ZD0oTCsyNDU3NjB8MCk+Pj4xNiYyO2Q9MTQtKEp8S3xkKSsoTDw8ZD4+PjE1KXwwO2Q9ZT4+PihkKzd8MCkmMXxkPDwxfXdoaWxlKDApO2I9OTMzMisoZDw8Mil8MDtrW3crKG0rMjgpPj4yXT1kO2tbdysobSsyMCk+PjJdPTA7a1t3KyhtKzE2KT4+Ml09MDthPWtbMjI1OF18MDtjPTE8PGQ7aWYoIShhJmMpKXtrWzIyNThdPWF8YztrW2I+PjJdPW87a1t3KyhtKzI0KT4+Ml09YjtrW3crKG0rMTIpPj4yXT1vO2tbdysobSs4KT4+Ml09bzticmVha31iPWtbYj4+Ml18MDtqOmRvIGlmKChrW2IrND4+Ml0mLTh8MCkhPShlfDApKXtkPWU8PCgoZHwwKT09MzE/MDoyNS0oZD4+PjEpfDApO3doaWxlKDEpe2E9YisxNisoZD4+PjMxPDwyKXwwO2M9a1thPj4yXXwwO2lmKCFjKWJyZWFrO2lmKChrW2MrND4+Ml0mLTh8MCk9PShlfDApKXtNPWM7YnJlYWsgan1lbHNle2Q9ZDw8MTtiPWN9fWlmKGE+Pj4wPChrWzIyNjFdfDApPj4+MClWYSgpO2Vsc2V7a1thPj4yXT1vO2tbdysobSsyNCk+PjJdPWI7a1t3KyhtKzEyKT4+Ml09bztrW3crKG0rOCk+PjJdPW87YnJlYWsgaH19ZWxzZSBNPWI7d2hpbGUoMCk7Yj1NKzh8MDthPWtbYj4+Ml18MDtMPWtbMjI2MV18MDtpZihhPj4+MD49TD4+PjAmTT4+PjA+PUw+Pj4wKXtrW2ErMTI+PjJdPW87a1tiPj4yXT1vO2tbdysobSs4KT4+Ml09YTtrW3crKG0rMTIpPj4yXT1NO2tbdysobSsyNCk+PjJdPTA7YnJlYWt9ZWxzZSBWYSgpfWVsc2V7TT0oa1syMjYwXXwwKStsfDA7a1syMjYwXT1NO2tbMjI2M109bztrW3crKG0rNCk+PjJdPU18MX13aGlsZSgwKTtNPXcrKG58OCl8MDtyZXR1cm4gTXwwfWVsc2UgYz05NDc2O3doaWxlKDEpe2E9a1tjPj4yXXwwO2lmKGE+Pj4wPD1nPj4+MD8oYj1rW2MrND4+Ml18MCxkPWErYnwwLGQ+Pj4wPmc+Pj4wKTowKWJyZWFrO2M9a1tjKzg+PjJdfDB9ZT1hKyhiKy0zOSl8MDthPWErKGIrLTQ3KygoZSY3fDApPT0wPzA6MC1lJjcpKXwwO2U9ZysxNnwwO2E9YT4+PjA8ZT4+PjA/ZzphO2I9YSs4fDA7Yz13Kzh8MDtjPShjJjd8MCk9PTA/MDowLWMmNztNPXArLTQwLWN8MDtrWzIyNjNdPXcrYztrWzIyNjBdPU07a1t3KyhjKzQpPj4yXT1NfDE7a1t3KyhwKy0zNik+PjJdPTQwO2tbMjI2NF09a1syMzc5XTtjPWErNHwwO2tbYz4+Ml09Mjc7a1tiPj4yXT1rWzIzNjldO2tbYis0Pj4yXT1rWzIzNzBdO2tbYis4Pj4yXT1rWzIzNzFdO2tbYisxMj4+Ml09a1syMzcyXTtrWzIzNjldPXc7a1syMzcwXT1wO2tbMjM3Ml09MDtrWzIzNzFdPWI7Yj1hKzI4fDA7a1tiPj4yXT03O2lmKChhKzMyfDApPj4+MDxkPj4+MClkb3tNPWI7Yj1iKzR8MDtrW2I+PjJdPTd9d2hpbGUoKE0rOHwwKT4+PjA8ZD4+PjApO2lmKChhfDApIT0oZ3wwKSl7Zj1hLWd8MDtrW2M+PjJdPWtbYz4+Ml0mLTI7a1tnKzQ+PjJdPWZ8MTtrW2E+PjJdPWY7Yj1mPj4+MztpZihmPj4+MDwyNTYpe2E9Yjw8MTtkPTkwNjgrKGE8PDIpfDA7Yz1rWzIyNTddfDA7Yj0xPDxiO2lmKGMmYil7Yj05MDY4KyhhKzI8PDIpfDA7YT1rW2I+PjJdfDA7aWYoYT4+PjA8KGtbMjI2MV18MCk+Pj4wKVZhKCk7ZWxzZXtHPWI7SD1hfX1lbHNle2tbMjI1N109Y3xiO0c9OTA2OCsoYSsyPDwyKXwwO0g9ZH1rW0c+PjJdPWc7a1tIKzEyPj4yXT1nO2tbZys4Pj4yXT1IO2tbZysxMj4+Ml09ZDticmVha31iPWY+Pj44O2lmKGIpaWYoZj4+PjA+MTY3NzcyMTUpZD0zMTtlbHNle0w9KGIrMTA0ODMyMHwwKT4+PjE2Jjg7TT1iPDxMO0s9KE0rNTIwMTkyfDApPj4+MTYmNDtNPU08PEs7ZD0oTSsyNDU3NjB8MCk+Pj4xNiYyO2Q9MTQtKEt8THxkKSsoTTw8ZD4+PjE1KXwwO2Q9Zj4+PihkKzd8MCkmMXxkPDwxfWVsc2UgZD0wO2M9OTMzMisoZDw8Mil8MDtrW2crMjg+PjJdPWQ7a1tnKzIwPj4yXT0wO2tbZT4+Ml09MDtiPWtbMjI1OF18MDthPTE8PGQ7aWYoIShiJmEpKXtrWzIyNThdPWJ8YTtrW2M+PjJdPWc7a1tnKzI0Pj4yXT1jO2tbZysxMj4+Ml09ZztrW2crOD4+Ml09ZzticmVha31iPWtbYz4+Ml18MDtrOmRvIGlmKChrW2IrND4+Ml0mLTh8MCkhPShmfDApKXtkPWY8PCgoZHwwKT09MzE/MDoyNS0oZD4+PjEpfDApO3doaWxlKDEpe2E9YisxNisoZD4+PjMxPDwyKXwwO2M9a1thPj4yXXwwO2lmKCFjKWJyZWFrO2lmKChrW2MrND4+Ml0mLTh8MCk9PShmfDApKXtJPWM7YnJlYWsga31lbHNle2Q9ZDw8MTtiPWN9fWlmKGE+Pj4wPChrWzIyNjFdfDApPj4+MClWYSgpO2Vsc2V7a1thPj4yXT1nO2tbZysyND4+Ml09YjtrW2crMTI+PjJdPWc7a1tnKzg+PjJdPWc7YnJlYWsgZ319ZWxzZSBJPWI7d2hpbGUoMCk7Yj1JKzh8MDthPWtbYj4+Ml18MDtNPWtbMjI2MV18MDtpZihhPj4+MD49TT4+PjAmST4+PjA+PU0+Pj4wKXtrW2ErMTI+PjJdPWc7a1tiPj4yXT1nO2tbZys4Pj4yXT1hO2tbZysxMj4+Ml09STtrW2crMjQ+PjJdPTA7YnJlYWt9ZWxzZSBWYSgpfX1lbHNle009a1syMjYxXXwwO2lmKChNfDApPT0wfHc+Pj4wPE0+Pj4wKWtbMjI2MV09dztrWzIzNjldPXc7a1syMzcwXT1wO2tbMjM3Ml09MDtrWzIyNjZdPWtbMjM3NV07a1syMjY1XT0tMTtiPTA7ZG97TT1iPDwxO0w9OTA2OCsoTTw8Mil8MDtrWzkwNjgrKE0rMzw8Mik+PjJdPUw7a1s5MDY4KyhNKzI8PDIpPj4yXT1MO2I9YisxfDB9d2hpbGUoKGJ8MCkhPTMyKTtNPXcrOHwwO009KE0mN3wwKT09MD8wOjAtTSY3O0w9cCstNDAtTXwwO2tbMjI2M109dytNO2tbMjI2MF09TDtrW3crKE0rNCk+PjJdPUx8MTtrW3crKHArLTM2KT4+Ml09NDA7a1syMjY0XT1rWzIzNzldfXdoaWxlKDApO2I9a1syMjYwXXwwO2lmKGI+Pj4wPnE+Pj4wKXtMPWItcXwwO2tbMjI2MF09TDtNPWtbMjI2M118MDtrWzIyNjNdPU0rcTtrW00rKHErNCk+PjJdPUx8MTtrW00rND4+Ml09cXwzO009TSs4fDA7cmV0dXJuIE18MH19TT1MUSgpfDA7a1tNPj4yXT0xMjtNPTA7cmV0dXJuIE18MH1mdW5jdGlvbiBVUihhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wLGk9MCxqPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wO2lmKCFhKXJldHVybjtiPWErLTh8MDtoPWtbMjI2MV18MDtpZihiPj4+MDxoPj4+MClWYSgpO2M9a1thKy00Pj4yXXwwO2Q9YyYzO2lmKChkfDApPT0xKVZhKCk7bz1jJi04O3E9YSsobystOCl8MDtkbyBpZighKGMmMSkpe2I9a1tiPj4yXXwwO2lmKCFkKXJldHVybjtpPS04LWJ8MDtsPWEraXwwO209YitvfDA7aWYobD4+PjA8aD4+PjApVmEoKTtpZigobHwwKT09KGtbMjI2Ml18MCkpe2I9YSsobystNCl8MDtjPWtbYj4+Ml18MDtpZigoYyYzfDApIT0zKXt1PWw7Zj1tO2JyZWFrfWtbMjI1OV09bTtrW2I+PjJdPWMmLTI7a1thKyhpKzQpPj4yXT1tfDE7a1txPj4yXT1tO3JldHVybn1lPWI+Pj4zO2lmKGI+Pj4wPDI1Nil7ZD1rW2ErKGkrOCk+PjJdfDA7Yz1rW2ErKGkrMTIpPj4yXXwwO2I9OTA2OCsoZTw8MTw8Mil8MDtpZigoZHwwKSE9KGJ8MCkpe2lmKGQ+Pj4wPGg+Pj4wKVZhKCk7aWYoKGtbZCsxMj4+Ml18MCkhPShsfDApKVZhKCl9aWYoKGN8MCk9PShkfDApKXtrWzIyNTddPWtbMjI1N10mfigxPDxlKTt1PWw7Zj1tO2JyZWFrfWlmKChjfDApIT0oYnwwKSl7aWYoYz4+PjA8aD4+PjApVmEoKTtiPWMrOHwwO2lmKChrW2I+PjJdfDApPT0obHwwKSlnPWI7ZWxzZSBWYSgpfWVsc2UgZz1jKzh8MDtrW2QrMTI+PjJdPWM7a1tnPj4yXT1kO3U9bDtmPW07YnJlYWt9Zz1rW2ErKGkrMjQpPj4yXXwwO2Q9a1thKyhpKzEyKT4+Ml18MDtkbyBpZigoZHwwKT09KGx8MCkpe2M9YSsoaSsyMCl8MDtiPWtbYz4+Ml18MDtpZighYil7Yz1hKyhpKzE2KXwwO2I9a1tjPj4yXXwwO2lmKCFiKXtqPTA7YnJlYWt9fXdoaWxlKDEpe2Q9YisyMHwwO2U9a1tkPj4yXXwwO2lmKGUpe2I9ZTtjPWQ7Y29udGludWV9ZD1iKzE2fDA7ZT1rW2Q+PjJdfDA7aWYoIWUpYnJlYWs7ZWxzZXtiPWU7Yz1kfX1pZihjPj4+MDxoPj4+MClWYSgpO2Vsc2V7a1tjPj4yXT0wO2o9YjticmVha319ZWxzZXtlPWtbYSsoaSs4KT4+Ml18MDtpZihlPj4+MDxoPj4+MClWYSgpO2I9ZSsxMnwwO2lmKChrW2I+PjJdfDApIT0obHwwKSlWYSgpO2M9ZCs4fDA7aWYoKGtbYz4+Ml18MCk9PShsfDApKXtrW2I+PjJdPWQ7a1tjPj4yXT1lO2o9ZDticmVha31lbHNlIFZhKCl9d2hpbGUoMCk7aWYoZyl7Yj1rW2ErKGkrMjgpPj4yXXwwO2M9OTMzMisoYjw8Mil8MDtpZigobHwwKT09KGtbYz4+Ml18MCkpe2tbYz4+Ml09ajtpZighail7a1syMjU4XT1rWzIyNThdJn4oMTw8Yik7dT1sO2Y9bTticmVha319ZWxzZXtpZihnPj4+MDwoa1syMjYxXXwwKT4+PjApVmEoKTtiPWcrMTZ8MDtpZigoa1tiPj4yXXwwKT09KGx8MCkpa1tiPj4yXT1qO2Vsc2Uga1tnKzIwPj4yXT1qO2lmKCFqKXt1PWw7Zj1tO2JyZWFrfX1jPWtbMjI2MV18MDtpZihqPj4+MDxjPj4+MClWYSgpO2tbaisyND4+Ml09ZztiPWtbYSsoaSsxNik+PjJdfDA7ZG8gaWYoYilpZihiPj4+MDxjPj4+MClWYSgpO2Vsc2V7a1tqKzE2Pj4yXT1iO2tbYisyND4+Ml09ajticmVha313aGlsZSgwKTtiPWtbYSsoaSsyMCk+PjJdfDA7aWYoYilpZihiPj4+MDwoa1syMjYxXXwwKT4+PjApVmEoKTtlbHNle2tbaisyMD4+Ml09YjtrW2IrMjQ+PjJdPWo7dT1sO2Y9bTticmVha31lbHNle3U9bDtmPW19fWVsc2V7dT1sO2Y9bX19ZWxzZXt1PWI7Zj1vfXdoaWxlKDApO2lmKHU+Pj4wPj1xPj4+MClWYSgpO2I9YSsobystNCl8MDtjPWtbYj4+Ml18MDtpZighKGMmMSkpVmEoKTtpZighKGMmMikpe2lmKChxfDApPT0oa1syMjYzXXwwKSl7dD0oa1syMjYwXXwwKStmfDA7a1syMjYwXT10O2tbMjI2M109dTtrW3UrND4+Ml09dHwxO2lmKCh1fDApIT0oa1syMjYyXXwwKSlyZXR1cm47a1syMjYyXT0wO2tbMjI1OV09MDtyZXR1cm59aWYoKHF8MCk9PShrWzIyNjJdfDApKXt0PShrWzIyNTldfDApK2Z8MDtrWzIyNTldPXQ7a1syMjYyXT11O2tbdSs0Pj4yXT10fDE7a1t1K3Q+PjJdPXQ7cmV0dXJufWY9KGMmLTgpK2Z8MDtlPWM+Pj4zO2RvIGlmKGM+Pj4wPj0yNTYpe2c9a1thKyhvKzE2KT4+Ml18MDtiPWtbYSsob3w0KT4+Ml18MDtkbyBpZigoYnwwKT09KHF8MCkpe2M9YSsobysxMil8MDtiPWtbYz4+Ml18MDtpZighYil7Yz1hKyhvKzgpfDA7Yj1rW2M+PjJdfDA7aWYoIWIpe3A9MDticmVha319d2hpbGUoMSl7ZD1iKzIwfDA7ZT1rW2Q+PjJdfDA7aWYoZSl7Yj1lO2M9ZDtjb250aW51ZX1kPWIrMTZ8MDtlPWtbZD4+Ml18MDtpZighZSlicmVhaztlbHNle2I9ZTtjPWR9fWlmKGM+Pj4wPChrWzIyNjFdfDApPj4+MClWYSgpO2Vsc2V7a1tjPj4yXT0wO3A9YjticmVha319ZWxzZXtjPWtbYStvPj4yXXwwO2lmKGM+Pj4wPChrWzIyNjFdfDApPj4+MClWYSgpO2Q9YysxMnwwO2lmKChrW2Q+PjJdfDApIT0ocXwwKSlWYSgpO2U9Yis4fDA7aWYoKGtbZT4+Ml18MCk9PShxfDApKXtrW2Q+PjJdPWI7a1tlPj4yXT1jO3A9YjticmVha31lbHNlIFZhKCl9d2hpbGUoMCk7aWYoZyl7Yj1rW2ErKG8rMjApPj4yXXwwO2M9OTMzMisoYjw8Mil8MDtpZigocXwwKT09KGtbYz4+Ml18MCkpe2tbYz4+Ml09cDtpZighcCl7a1syMjU4XT1rWzIyNThdJn4oMTw8Yik7YnJlYWt9fWVsc2V7aWYoZz4+PjA8KGtbMjI2MV18MCk+Pj4wKVZhKCk7Yj1nKzE2fDA7aWYoKGtbYj4+Ml18MCk9PShxfDApKWtbYj4+Ml09cDtlbHNlIGtbZysyMD4+Ml09cDtpZighcClicmVha31jPWtbMjI2MV18MDtpZihwPj4+MDxjPj4+MClWYSgpO2tbcCsyND4+Ml09ZztiPWtbYSsobys4KT4+Ml18MDtkbyBpZihiKWlmKGI+Pj4wPGM+Pj4wKVZhKCk7ZWxzZXtrW3ArMTY+PjJdPWI7a1tiKzI0Pj4yXT1wO2JyZWFrfXdoaWxlKDApO2I9a1thKyhvKzEyKT4+Ml18MDtpZihiKWlmKGI+Pj4wPChrWzIyNjFdfDApPj4+MClWYSgpO2Vsc2V7a1twKzIwPj4yXT1iO2tbYisyND4+Ml09cDticmVha319fWVsc2V7ZD1rW2Erbz4+Ml18MDtjPWtbYSsob3w0KT4+Ml18MDtiPTkwNjgrKGU8PDE8PDIpfDA7aWYoKGR8MCkhPShifDApKXtpZihkPj4+MDwoa1syMjYxXXwwKT4+PjApVmEoKTtpZigoa1tkKzEyPj4yXXwwKSE9KHF8MCkpVmEoKX1pZigoY3wwKT09KGR8MCkpe2tbMjI1N109a1syMjU3XSZ+KDE8PGUpO2JyZWFrfWlmKChjfDApIT0oYnwwKSl7aWYoYz4+PjA8KGtbMjI2MV18MCk+Pj4wKVZhKCk7Yj1jKzh8MDtpZigoa1tiPj4yXXwwKT09KHF8MCkpbj1iO2Vsc2UgVmEoKX1lbHNlIG49Yys4fDA7a1tkKzEyPj4yXT1jO2tbbj4+Ml09ZH13aGlsZSgwKTtrW3UrND4+Ml09ZnwxO2tbdStmPj4yXT1mO2lmKCh1fDApPT0oa1syMjYyXXwwKSl7a1syMjU5XT1mO3JldHVybn19ZWxzZXtrW2I+PjJdPWMmLTI7a1t1KzQ+PjJdPWZ8MTtrW3UrZj4+Ml09Zn1iPWY+Pj4zO2lmKGY+Pj4wPDI1Nil7Yz1iPDwxO2U9OTA2OCsoYzw8Mil8MDtkPWtbMjI1N118MDtiPTE8PGI7aWYoZCZiKXtiPTkwNjgrKGMrMjw8Mil8MDtjPWtbYj4+Ml18MDtpZihjPj4+MDwoa1syMjYxXXwwKT4+PjApVmEoKTtlbHNle3I9YjtzPWN9fWVsc2V7a1syMjU3XT1kfGI7cj05MDY4KyhjKzI8PDIpfDA7cz1lfWtbcj4+Ml09dTtrW3MrMTI+PjJdPXU7a1t1Kzg+PjJdPXM7a1t1KzEyPj4yXT1lO3JldHVybn1iPWY+Pj44O2lmKGIpaWYoZj4+PjA+MTY3NzcyMTUpZT0zMTtlbHNle3I9KGIrMTA0ODMyMHwwKT4+PjE2Jjg7cz1iPDxyO3E9KHMrNTIwMTkyfDApPj4+MTYmNDtzPXM8PHE7ZT0ocysyNDU3NjB8MCk+Pj4xNiYyO2U9MTQtKHF8cnxlKSsoczw8ZT4+PjE1KXwwO2U9Zj4+PihlKzd8MCkmMXxlPDwxfWVsc2UgZT0wO2I9OTMzMisoZTw8Mil8MDtrW3UrMjg+PjJdPWU7a1t1KzIwPj4yXT0wO2tbdSsxNj4+Ml09MDtjPWtbMjI1OF18MDtkPTE8PGU7YTpkbyBpZihjJmQpe2I9a1tiPj4yXXwwO2I6ZG8gaWYoKGtbYis0Pj4yXSYtOHwwKSE9KGZ8MCkpe2U9Zjw8KChlfDApPT0zMT8wOjI1LShlPj4+MSl8MCk7d2hpbGUoMSl7Yz1iKzE2KyhlPj4+MzE8PDIpfDA7ZD1rW2M+PjJdfDA7aWYoIWQpYnJlYWs7aWYoKGtbZCs0Pj4yXSYtOHwwKT09KGZ8MCkpe3Q9ZDticmVhayBifWVsc2V7ZT1lPDwxO2I9ZH19aWYoYz4+PjA8KGtbMjI2MV18MCk+Pj4wKVZhKCk7ZWxzZXtrW2M+PjJdPXU7a1t1KzI0Pj4yXT1iO2tbdSsxMj4+Ml09dTtrW3UrOD4+Ml09dTticmVhayBhfX1lbHNlIHQ9Yjt3aGlsZSgwKTtiPXQrOHwwO2M9a1tiPj4yXXwwO3M9a1syMjYxXXwwO2lmKGM+Pj4wPj1zPj4+MCZ0Pj4+MD49cz4+PjApe2tbYysxMj4+Ml09dTtrW2I+PjJdPXU7a1t1Kzg+PjJdPWM7a1t1KzEyPj4yXT10O2tbdSsyND4+Ml09MDticmVha31lbHNlIFZhKCl9ZWxzZXtrWzIyNThdPWN8ZDtrW2I+PjJdPXU7a1t1KzI0Pj4yXT1iO2tbdSsxMj4+Ml09dTtrW3UrOD4+Ml09dX13aGlsZSgwKTt1PShrWzIyNjVdfDApKy0xfDA7a1syMjY1XT11O2lmKCF1KWI9OTQ4NDtlbHNlIHJldHVybjt3aGlsZSgxKXtiPWtbYj4+Ml18MDtpZighYilicmVhaztlbHNlIGI9Yis4fDB9a1syMjY1XT0tMTtyZXR1cm59ZnVuY3Rpb24gVlIoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wO2lmKGEpe2M9aGEoYixhKXwwO2lmKChifGEpPj4+MD42NTUzNSljPSgoYz4+PjApLyhhPj4+MCl8MHwwKT09KGJ8MCk/YzotMX1lbHNlIGM9MDtiPVRSKGMpfDA7aWYoIWIpcmV0dXJuIGJ8MDtpZighKGtbYistND4+Ml0mMykpcmV0dXJuIGJ8MDtkUyhifDAsMCxjfDApfDA7cmV0dXJuIGJ8MH1mdW5jdGlvbiBXUihhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wO2lmKCFhKXthPVRSKGIpfDA7cmV0dXJuIGF8MH1pZihiPj4+MD40Mjk0OTY3MjMxKXthPUxRKCl8MDtrW2E+PjJdPTEyO2E9MDtyZXR1cm4gYXwwfWM9WFIoYSstOHwwLGI+Pj4wPDExPzE2OmIrMTEmLTgpfDA7aWYoYyl7YT1jKzh8MDtyZXR1cm4gYXwwfWM9VFIoYil8MDtpZighYyl7YT0wO3JldHVybiBhfDB9ZD1rW2ErLTQ+PjJdfDA7ZD0oZCYtOCktKChkJjN8MCk9PTA/ODo0KXwwO2JTKGN8MCxhfDAsKGQ+Pj4wPGI+Pj4wP2Q6Yil8MCl8MDtVUihhKTthPWM7cmV0dXJuIGF8MH1mdW5jdGlvbiBYUihhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wLGg9MCxpPTAsaj0wLGw9MCxtPTAsbj0wLG89MCxwPTA7bz1hKzR8MDtwPWtbbz4+Ml18MDtpPXAmLTg7bD1hK2l8MDtoPWtbMjI2MV18MDtjPXAmMztpZighKChjfDApIT0xJmE+Pj4wPj1oPj4+MCZhPj4+MDxsPj4+MCkpVmEoKTtkPWErKGl8NCl8MDtlPWtbZD4+Ml18MDtpZighKGUmMSkpVmEoKTtpZighYyl7aWYoYj4+PjA8MjU2KXthPTA7cmV0dXJuIGF8MH1pZihpPj4+MD49KGIrNHwwKT4+PjA/KGktYnwwKT4+PjA8PWtbMjM3N108PDE+Pj4wOjApcmV0dXJuIGF8MDthPTA7cmV0dXJuIGF8MH1pZihpPj4+MD49Yj4+PjApe2M9aS1ifDA7aWYoYz4+PjA8PTE1KXJldHVybiBhfDA7a1tvPj4yXT1wJjF8YnwyO2tbYSsoYis0KT4+Ml09Y3wzO2tbZD4+Ml09a1tkPj4yXXwxO1lSKGErYnwwLGMpO3JldHVybiBhfDB9aWYoKGx8MCk9PShrWzIyNjNdfDApKXtjPShrWzIyNjBdfDApK2l8MDtpZihjPj4+MDw9Yj4+PjApe2E9MDtyZXR1cm4gYXwwfW49Yy1ifDA7a1tvPj4yXT1wJjF8YnwyO2tbYSsoYis0KT4+Ml09bnwxO2tbMjI2M109YStiO2tbMjI2MF09bjtyZXR1cm4gYXwwfWlmKChsfDApPT0oa1syMjYyXXwwKSl7ZD0oa1syMjU5XXwwKStpfDA7aWYoZD4+PjA8Yj4+PjApe2E9MDtyZXR1cm4gYXwwfWM9ZC1ifDA7aWYoYz4+PjA+MTUpe2tbbz4+Ml09cCYxfGJ8MjtrW2ErKGIrNCk+PjJdPWN8MTtrW2ErZD4+Ml09YztkPWErKGQrNCl8MDtrW2Q+PjJdPWtbZD4+Ml0mLTI7ZD1hK2J8MH1lbHNle2tbbz4+Ml09cCYxfGR8MjtkPWErKGQrNCl8MDtrW2Q+PjJdPWtbZD4+Ml18MTtkPTA7Yz0wfWtbMjI1OV09YztrWzIyNjJdPWQ7cmV0dXJuIGF8MH1pZihlJjIpe2E9MDtyZXR1cm4gYXwwfW09KGUmLTgpK2l8MDtpZihtPj4+MDxiPj4+MCl7YT0wO3JldHVybiBhfDB9bj1tLWJ8MDtmPWU+Pj4zO2RvIGlmKGU+Pj4wPj0yNTYpe2c9a1thKyhpKzI0KT4+Ml18MDtmPWtbYSsoaSsxMik+PjJdfDA7ZG8gaWYoKGZ8MCk9PShsfDApKXtkPWErKGkrMjApfDA7Yz1rW2Q+PjJdfDA7aWYoIWMpe2Q9YSsoaSsxNil8MDtjPWtbZD4+Ml18MDtpZighYyl7aj0wO2JyZWFrfX13aGlsZSgxKXtlPWMrMjB8MDtmPWtbZT4+Ml18MDtpZihmKXtjPWY7ZD1lO2NvbnRpbnVlfWU9YysxNnwwO2Y9a1tlPj4yXXwwO2lmKCFmKWJyZWFrO2Vsc2V7Yz1mO2Q9ZX19aWYoZD4+PjA8aD4+PjApVmEoKTtlbHNle2tbZD4+Ml09MDtqPWM7YnJlYWt9fWVsc2V7ZT1rW2ErKGkrOCk+PjJdfDA7aWYoZT4+PjA8aD4+PjApVmEoKTtjPWUrMTJ8MDtpZigoa1tjPj4yXXwwKSE9KGx8MCkpVmEoKTtkPWYrOHwwO2lmKChrW2Q+PjJdfDApPT0obHwwKSl7a1tjPj4yXT1mO2tbZD4+Ml09ZTtqPWY7YnJlYWt9ZWxzZSBWYSgpfXdoaWxlKDApO2lmKGcpe2M9a1thKyhpKzI4KT4+Ml18MDtkPTkzMzIrKGM8PDIpfDA7aWYoKGx8MCk9PShrW2Q+PjJdfDApKXtrW2Q+PjJdPWo7aWYoIWope2tbMjI1OF09a1syMjU4XSZ+KDE8PGMpO2JyZWFrfX1lbHNle2lmKGc+Pj4wPChrWzIyNjFdfDApPj4+MClWYSgpO2M9ZysxNnwwO2lmKChrW2M+PjJdfDApPT0obHwwKSlrW2M+PjJdPWo7ZWxzZSBrW2crMjA+PjJdPWo7aWYoIWopYnJlYWt9ZD1rWzIyNjFdfDA7aWYoaj4+PjA8ZD4+PjApVmEoKTtrW2orMjQ+PjJdPWc7Yz1rW2ErKGkrMTYpPj4yXXwwO2RvIGlmKGMpaWYoYz4+PjA8ZD4+PjApVmEoKTtlbHNle2tbaisxNj4+Ml09YztrW2MrMjQ+PjJdPWo7YnJlYWt9d2hpbGUoMCk7Yz1rW2ErKGkrMjApPj4yXXwwO2lmKGMpaWYoYz4+PjA8KGtbMjI2MV18MCk+Pj4wKVZhKCk7ZWxzZXtrW2orMjA+PjJdPWM7a1tjKzI0Pj4yXT1qO2JyZWFrfX19ZWxzZXtlPWtbYSsoaSs4KT4+Ml18MDtkPWtbYSsoaSsxMik+PjJdfDA7Yz05MDY4KyhmPDwxPDwyKXwwO2lmKChlfDApIT0oY3wwKSl7aWYoZT4+PjA8aD4+PjApVmEoKTtpZigoa1tlKzEyPj4yXXwwKSE9KGx8MCkpVmEoKX1pZigoZHwwKT09KGV8MCkpe2tbMjI1N109a1syMjU3XSZ+KDE8PGYpO2JyZWFrfWlmKChkfDApIT0oY3wwKSl7aWYoZD4+PjA8aD4+PjApVmEoKTtjPWQrOHwwO2lmKChrW2M+PjJdfDApPT0obHwwKSlnPWM7ZWxzZSBWYSgpfWVsc2UgZz1kKzh8MDtrW2UrMTI+PjJdPWQ7a1tnPj4yXT1lfXdoaWxlKDApO2lmKG4+Pj4wPDE2KXtrW28+PjJdPW18cCYxfDI7Yj1hKyhtfDQpfDA7a1tiPj4yXT1rW2I+PjJdfDE7cmV0dXJuIGF8MH1lbHNle2tbbz4+Ml09cCYxfGJ8MjtrW2ErKGIrNCk+PjJdPW58MztwPWErKG18NCl8MDtrW3A+PjJdPWtbcD4+Ml18MTtZUihhK2J8MCxuKTtyZXR1cm4gYXwwfXJldHVybiAwfVxuZnVuY3Rpb24genUoYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wLGU9MCxmPTA7Zj1yO3I9cisxNnwwO2U9ZisxMnwwO2I9Zis4fDA7Yz1mKzR8MDtkPWY7a1tiPj4yXT1hO2lmKGtbKGtbYj4+Ml18MCkrND4+Ml18MCl7a1tlPj4yXT0xO2U9a1tlPj4yXXwwO3I9ZjtyZXR1cm4gZXwwfWtbYz4+Ml09MDt3aGlsZSgxKXtpZigoa1tjPj4yXXwwKT49KGtbKGtbYj4+Ml18MCkrMjA+PjJdfDApKXtiPTk7YnJlYWt9a1tkPj4yXT1rWyhrWyhrW2I+PjJdfDApKzE2Pj4yXXwwKSsoa1tjPj4yXTw8NCkrND4+Ml07aWYoKGtbZD4+Ml18MCkhPTA/KEF1KGtbZD4+Ml18MCl8MCkhPTA6MCl7Yj03O2JyZWFrfWtbYz4+Ml09KGtbYz4+Ml18MCkrMX1pZigoYnwwKT09Nyl7a1tlPj4yXT0xO2U9a1tlPj4yXXwwO3I9ZjtyZXR1cm4gZXwwfWVsc2UgaWYoKGJ8MCk9PTkpe2tbZT4+Ml09MDtlPWtbZT4+Ml18MDtyPWY7cmV0dXJuIGV8MH1yZXR1cm4gMH1mdW5jdGlvbiBBdShhKXthPWF8MDt2YXIgYj0wLGM9MDtjPXI7cj1yKzE2fDA7Yj1jO2tbYj4+Ml09YTtyPWM7cmV0dXJuIChrWyhrW2I+PjJdfDApKzE2Pj4yXXwwKSE9MHwwfWZ1bmN0aW9uIEJ1KGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wLGk9MCxqPTA7aj1yO3I9ciszMnwwO2M9aisyNHwwO2Q9aisyMHwwO2Y9aisxNnwwO2U9aisxMnwwO2g9ais4fDA7Zz1qKzR8MDtpPWo7a1tjPj4yXT1hO2tbZD4+Ml09YjtpZighKGtbKGtbYz4+Ml18MCkrMzQwPj4yXXwwKSl7cj1qO3JldHVybn1rW2U+PjJdPWtbKGtbYz4+Ml18MCkrMzQwPj4yXTtrWyhrW2M+PjJdfDApKzM0MD4+Ml09MDtrW2Y+PjJdPTA7d2hpbGUoMSl7aWYoKGtbZj4+Ml18MCk+PShrWyhrW2M+PjJdfDApKzMxNj4+Ml18MCkpYnJlYWs7a1toPj4yXT1rWyhrW2U+PjJdfDApKyhrW2Y+PjJdPDwyKT4+Ml07a1tnPj4yXT1rWyhrW2g+PjJdfDApKzg+PjJdO2lmKChrW2c+PjJdfDApIT0wPyhrW2k+PjJdPWtbKGtba1tnPj4yXT4+Ml18MCkrKGtbZD4+Ml18MCk+PjJdLChrW2k+PjJdfDApIT0wKTowKWJjW2tbaT4+Ml0mMjU1XShrW2c+PjJdfDApfDA7a1soa1toPj4yXXwwKSsyMD4+Ml09MDtDdShrW2g+PjJdfDApO2tbZj4+Ml09KGtbZj4+Ml18MCkrMX1iZyhrW2M+PjJdfDAsa1tlPj4yXXwwKTtrWyhrW2M+PjJdfDApKzMxNj4+Ml09MDtyPWo7cmV0dXJufWZ1bmN0aW9uIEN1KGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MCxlPTA7ZT1yO3I9cisxNnwwO2I9ZSs4fDA7Yz1lKzR8MDtkPWU7a1tiPj4yXT1hO2tbYz4+Ml09a1trW2I+PjJdPj4yXTthPShrW2I+PjJdfDApKzEyfDA7a1thPj4yXT0oa1thPj4yXXwwKSstMTtpZihrWyhrW2I+PjJdfDApKzEyPj4yXXwwKXtyPWU7cmV0dXJufWtbZD4+Ml09a1soa1tiPj4yXXwwKSs4Pj4yXTtpZihrW2Q+PjJdfDApYmNba1soa1trW2Q+PjJdPj4yXXwwKSsxNj4+Ml0mMjU1XShrW2Q+PjJdfDApfDA7Ymcoa1tjPj4yXXwwLGtbYj4+Ml18MCk7cj1lO3JldHVybn1mdW5jdGlvbiBEdShhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wLGg9MDtnPXI7cj1yKzE2fDA7Yz1nKzEyfDA7aD1nKzh8MDtlPWcrNHwwO2Q9ZztrW2M+PjJdPWE7a1toPj4yXT1iO2tbZT4+Ml09KGtbaD4+Ml18MCkrNTY7d2hpbGUoMSl7aWYoIShrW2tbZT4+Ml0+PjJdfDApKXtmPTY7YnJlYWt9YT1rW2tbZT4+Ml0+PjJdfDA7aWYoKGtba1trW2U+PjJdPj4yXT4+Ml18MCk9PShrW2M+PjJdfDApKWJyZWFrO2tbZT4+Ml09YSsyNH1pZigoZnwwKT09Nil7cj1nO3JldHVybn1rW2Q+PjJdPWE7a1trW2U+PjJdPj4yXT1rWyhrW2Q+PjJdfDApKzI0Pj4yXTtDdShrW2Q+PjJdfDApO3I9ZztyZXR1cm59ZnVuY3Rpb24gRXUoYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wLGU9MDtlPXI7cj1yKzE2fDA7Yj1lKzh8MDtjPWUrNHwwO2Q9ZTtrW2I+PjJdPWE7a1tjPj4yXT1rWyhrW2I+PjJdfDApKzM0ND4+Ml07a1soa1tiPj4yXXwwKSszNDQ+PjJdPTA7aWYoIShrW2M+PjJdfDApKXtyPWU7cmV0dXJufWFpKGtbYj4+Ml18MCk7ZG97a1tkPj4yXT1rWyhrW2M+PjJdfDApKzI0Pj4yXTtDdShrW2M+PjJdfDApO2tbYz4+Ml09a1tkPj4yXX13aGlsZSgoa1tjPj4yXXwwKSE9MCk7cj1lO3JldHVybn1mdW5jdGlvbiBGdShhKXthPWF8MDt2YXIgYj0wLGM9MDtiPXI7cj1yKzE2fDA7Yz1iO2tbYz4+Ml09YTtfYltrWzE2ND4+Ml0mMjU1XShrWyhrW2M+PjJdfDApKzQ0Pj4yXXwwKTtyPWI7cmV0dXJufWZ1bmN0aW9uIEd1KGEpe2E9YXwwO3ZhciBiPTAsYz0wO2M9cjtyPXIrMTZ8MDtrW2M+PjJdPWE7YT0xNjI4O2I9YSsxMDB8MDtkb3trW2E+PjJdPTA7YT1hKzR8MH13aGlsZSgoYXwwKTwoYnwwKSk7a1s0MjFdPShrWzUzXXwwKT09MCYxO2lmKChrWzQyMV18MCkhPTAmKGtbNTVdfDApIT0wJihrWzUzXXwwKT09MCl7a1s0MjJdPWtbNTVdO2tbNDEwXT0xMDtrWzQyMF09MTtyPWM7cmV0dXJuIDB9ZWxzZXtrWzQyMl09MDtrWzQxMF09MTA7a1s0MjBdPTE7cj1jO3JldHVybiAwfXJldHVybiAwfWZ1bmN0aW9uIEh1KGEpe2E9YXwwO3ZhciBiPTAsYz0wO2M9cjtyPXIrMTZ8MDtrW2M+PjJdPWE7YT0xNjI4O2I9YSsxMDB8MDtkb3trW2E+PjJdPTA7YT1hKzR8MH13aGlsZSgoYXwwKTwoYnwwKSk7cj1jO3JldHVybn1mdW5jdGlvbiBJdShhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLG09MDtqPXI7cj1yKzMyfDA7ZD1qKzIwfDA7ZT1qKzE2fDA7Zj1qKzEyfDA7Zz1qKzh8MDtoPWorNHwwO209ajtrW2Q+PjJdPWE7a1tlPj4yXT1iO2tbZj4+Ml09YztrW20+PjJdPTYwKygoa1s0MjFdfDApKjUyfDApO2E9a1ttPj4yXXwwO2E9dWcoYSwoKGF8MCk8MCk8PDMxPj4zMSl8MDtrW2c+PjJdPWE7aWYoIShrW2c+PjJdfDApKXttPWtbZz4+Ml18MDtyPWo7cmV0dXJuIG18MH1pZihrWzQyMV18MCl7a1toPj4yXT0oa1tnPj4yXXwwKSs2MDtrWyhrW2g+PjJdfDApKzEyPj4yXT0xMH1lbHNlIGtbaD4+Ml09MTYyODtpZighKGxbKGtbaD4+Ml18MCkrMjArMTQ+PjBdfDApKXtpWyhrW2g+PjJdfDApKzIwKzE0Pj4wXT0xO209KGtbaD4+Ml18MCkrMjB8MDtrWyhrW2g+PjJdfDApKzIwKzI0Pj4yXT1tO2tbKGtbaD4+Ml18MCkrMjArMjg+PjJdPW19a1trW2c+PjJdPj4yXT1rW2g+PjJdO2tbKGtbZz4+Ml18MCkrND4+Ml09a1tkPj4yXTtrWyhrW2c+PjJdfDApKzg+PjJdPWtbZT4+Ml07a1soa1tnPj4yXXwwKSsxMj4+Ml09KGtbZD4+Ml18MCkrKGtbZT4+Ml18MCkrMzI7a1soa1tnPj4yXXwwKSsxNj4+Ml09KGtbZj4+Ml18MCkhPTA/MTowO1p1KGtbZz4+Ml18MCk7aWYoa1tmPj4yXXwwKXtrWyhrW2c+PjJdfDApKzIwPj4yXT0xMDttPShrW2g+PjJdfDApKzh8MDtrW20+PjJdPShrW20+PjJdfDApKyhrWyhrW2c+PjJdfDApKzIwPj4yXXwwKTtrWyhrW2g+PjJdfDApKzEyPj4yXT0oa1soa1toPj4yXXwwKSs0Pj4yXXwwKSsxMC0oa1soa1toPj4yXXwwKSs4Pj4yXXwwKX1pZihrWyhrW2c+PjJdfDApKzQ0Pj4yXXwwKXttPWtbZz4+Ml18MDtyPWo7cmV0dXJuIG18MH1QdShrW2c+PjJdfDApO2tbZz4+Ml09MDttPWtbZz4+Ml18MDtyPWo7cmV0dXJuIG18MH1mdW5jdGlvbiBKdShhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wO2Y9cjtyPXIrMTZ8MDtnPWYrMTJ8MDtjPWYrOHwwO2Q9Zis0fDA7ZT1mO2tbZz4+Ml09YTtrW2M+PjJdPWI7a1tkPj4yXT1rW2c+PjJdO2lmKCEoa1soa1tkPj4yXXwwKSsxNj4+Ml18MCkpe3I9ZjtyZXR1cm59a1tlPj4yXT1rW2tbZD4+Ml0+PjJdO2c9KGtbZT4+Ml18MCkrNHwwO2tbZz4+Ml09KGtbZz4+Ml18MCkrKChrW2M+PjJdfDApLShrWyhrW2Q+PjJdfDApKzI0Pj4yXXwwKSk7a1soa1tlPj4yXXwwKSsxMj4+Ml09KGtbKGtbZT4+Ml18MCkrND4+Ml18MCkrMTAtKGtbKGtbZT4+Ml18MCkrOD4+Ml18MCk7a1soa1tkPj4yXXwwKSsyND4+Ml09a1tjPj4yXTtrWyhrW2Q+PjJdfDApKzI4Pj4yXT0oKChrWyhrW2Q+PjJdfDApKzI0Pj4yXXwwKSo5fDApPj4+MCkvMTB8MDtSdShrW2Q+PjJdfDApO3I9ZjtyZXR1cm59ZnVuY3Rpb24gS3UoYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wLGU9MDtjPXI7cj1yKzE2fDA7ZT1jKzh8MDtiPWMrNHwwO2Q9YztrW2U+PjJdPWE7a1tkPj4yXT1rW2U+PjJdO2tbYj4+Ml09a1soa1tkPj4yXXwwKSs0MD4+Ml07cj1jO3JldHVybiBrW2I+PjJdfDB9ZnVuY3Rpb24gTHUoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTA7ZD1yO3I9cisxNnwwO2c9ZCs4fDA7Zj1kKzR8MDtlPWQ7a1tnPj4yXT1hO2tbZj4+Ml09YjtrW2U+PjJdPWM7YT1XdShrW2c+PjJdfDAsa1tmPj4yXXwwLGtbZT4+Ml18MCl8MDtyPWQ7cmV0dXJuIGF8MH1mdW5jdGlvbiBNdShhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLGw9MCxtPTA7aD1yO3I9ciszMnwwO209aCsyNHwwO2w9aCsyMHwwO2o9aCsxNnwwO2Q9aCsxMnwwO2Y9aCs4fDA7ZT1oKzR8MDtnPWg7a1ttPj4yXT1hO2tbbD4+Ml09YjtrW2o+PjJdPWM7a1tkPj4yXT1rW20+PjJdO2tbZj4+Ml09a1tsPj4yXTtrW2U+PjJdPWtba1tkPj4yXT4+Ml07aWYoKGtbaj4+Ml18MCk9PTA/KGtbKGtbZT4+Ml18MCkrMTY+PjJdfDApPj4+MDw9KGtbKGtbZT4+Ml18MCkrND4+Ml18MCk+Pj4wOjApe2tbZz4+Ml09KGtbZT4+Ml18MCkrMjArMjQ7a1soa1tmPj4yXXwwKSsyOD4+Ml09KGtbZT4+Ml18MCkrMjA7bD1rW2Y+PjJdfDA7bT1rW2tbZz4+Ml0+PjJdfDA7a1soa1tmPj4yXXwwKSsyND4+Ml09bTtrW20rMjg+PjJdPWw7a1trW2c+PjJdPj4yXT1rW2Y+PjJdO209KGtbZD4+Ml18MCkrMzZ8MDtrW20+PjJdPShrW20+PjJdfDApKzE7aVsoa1tmPj4yXXwwKSsxMj4+MF09MDtyPWg7cmV0dXJufVR1KGtbZj4+Ml18MCwxKTtyPWg7cmV0dXJufWZ1bmN0aW9uIE51KGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaT0wLGo9MCxsPTAsbT0wLG49MDtqPXI7cj1yKzMyfDA7bj1qKzI4fDA7bT1qKzI0fDA7bD1qKzIwfDA7ZT1qKzE2fDA7Zz1qKzEyfDA7aD1qKzh8MDtpPWorNHwwO2Y9ajtrW24+PjJdPWE7a1ttPj4yXT1iO2tbbD4+Ml09YztrW2U+PjJdPWQ7a1tnPj4yXT1rW24+PjJdO2tbaD4+Ml09a1ttPj4yXTtrW2Y+PjJdPSgoa1tsPj4yXXwwKT4+PjApJSgoa1soa1tnPj4yXXwwKSs0ND4+Ml18MCk+Pj4wKXwwO2tbaT4+Ml09KGtbKGtbZz4+Ml18MCkrNDg+PjJdfDApKyhrW2Y+PjJdPDwyKTt3aGlsZSgxKXtpZigoa1trW2k+PjJdPj4yXXwwKT09KGtbaD4+Ml18MCkpYnJlYWs7a1tpPj4yXT0oa1trW2k+PjJdPj4yXXwwKSsxNn1rW2tbaT4+Ml0+PjJdPWtbKGtbaD4+Ml18MCkrMTY+PjJdO2tbZj4+Ml09KChrW2U+PjJdfDApPj4+MCklKChrWyhrW2c+PjJdfDApKzQ0Pj4yXXwwKT4+PjApfDA7a1soa1toPj4yXXwwKSs4Pj4yXT1rW2U+PjJdO2tbKGtbaD4+Ml18MCkrMTY+PjJdPWtbKGtbKGtbZz4+Ml18MCkrNDg+PjJdfDApKyhrW2Y+PjJdPDwyKT4+Ml07a1soa1soa1tnPj4yXXwwKSs0OD4+Ml18MCkrKGtbZj4+Ml08PDIpPj4yXT1rW2g+PjJdO2lmKChrW2U+PjJdfDApPj4+MDw9KGtbKGtbZz4+Ml18MCkrMzI+PjJdfDApPj4+MCl7cj1qO3JldHVybn1rWyhrW2c+PjJdfDApKzMyPj4yXT1rW2U+PjJdO3I9ajtyZXR1cm59ZnVuY3Rpb24gT3UoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wO2U9cjtyPXIrMTZ8MDtmPWUrOHwwO2M9ZSs0fDA7ZD1lO2tbZj4+Ml09YTtrW2M+PjJdPWI7a1tkPj4yXT1rW2Y+PjJdO2lmKChrW2M+PjJdfDApPj4+MD4oa1soa1tkPj4yXXwwKSszMj4+Ml18MCk+Pj4wKXtyPWU7cmV0dXJufVZ1KGtbZD4+Ml18MCxrW2M+PjJdfDApO2tbKGtbZD4+Ml18MCkrMzI+PjJdPShrW2M+PjJdfDApLTE7cj1lO3JldHVybn1mdW5jdGlvbiBQdShhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTAsZT0wO2Q9cjtyPXIrMTZ8MDtlPWQrOHwwO2I9ZCs0fDA7Yz1kO2tbZT4+Ml09YTtrW2I+PjJdPWtbZT4+Ml07a1tjPj4yXT1rW2tbYj4+Ml0+PjJdO2lmKGtbKGtbYj4+Ml18MCkrNDA+PjJdfDApVnUoa1tiPj4yXXwwLDApO2U9KGtbYz4+Ml18MCkrNHwwO2tbZT4+Ml09KGtbZT4+Ml18MCktKGtbKGtbYj4+Ml18MCkrMjQ+PjJdfDApO2U9KGtbYz4+Ml18MCkrOHwwO2tbZT4+Ml09KGtbZT4+Ml18MCktKGtbKGtbYj4+Ml18MCkrMjA+PjJdfDApO2tbKGtbYz4+Ml18MCkrMTI+PjJdPShrWyhrW2M+PjJdfDApKzQ+PjJdfDApKzEwLShrWyhrW2M+PjJdfDApKzg+PjJdfDApO1J1KGtbYj4+Ml18MCk7VWQoa1soa1tiPj4yXXwwKSs1Nj4+Ml18MCk7VWQoa1soa1tiPj4yXXwwKSs0OD4+Ml18MCk7VWQoa1tiPj4yXXwwKTtyPWQ7cmV0dXJufWZ1bmN0aW9uIFF1KGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MCxlPTAsZj0wO2U9cjtyPXIrMTZ8MDtmPWUrMTJ8MDtiPWUrOHwwO2M9ZSs0fDA7ZD1lO2tbZj4+Ml09YTtrW2I+PjJdPWtbZj4+Ml07aWYoIShrWyhrW2I+PjJdfDApKzE2Pj4yXXwwKSl7cj1lO3JldHVybn1rW2M+PjJdPWtba1tiPj4yXT4+Ml07a1tkPj4yXT1rWyhrW2M+PjJdfDApKzQ+PjJdO2tbKGtbYz4+Ml18MCkrND4+Ml09MDtSdShrW2I+PjJdfDApO2tbKGtbYz4+Ml18MCkrND4+Ml09a1tkPj4yXTtyPWU7cmV0dXJufWZ1bmN0aW9uIFJ1KGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MCxlPTA7ZT1yO3I9cisxNnwwO2I9ZSs4fDA7ZD1lKzR8MDtjPWU7a1tiPj4yXT1hO2tbZD4+Ml09a1trW2I+PjJdPj4yXTt3aGlsZSgxKXtpZigoa1soa1tkPj4yXXwwKSsxNj4+Ml18MCk+Pj4wPD0oa1soa1tkPj4yXXwwKSs0Pj4yXXwwKT4+PjApYnJlYWs7YT1rWyhrW2Q+PjJdfDApKzIwKzI4Pj4yXXwwO2tbYz4+Ml09YTtpZihsW2ErMTQ+PjBdfDApYnJlYWs7U3Uoa1tjPj4yXXwwKXwwO1R1KGtbYz4+Ml18MCwxKX1pZihrWyhrW2I+PjJdfDApKzQwPj4yXXwwKXtyPWU7cmV0dXJufWlmKCEoa1soa1tiPj4yXXwwKSs1Nj4+Ml18MCkpe3I9ZTtyZXR1cm59VWQoa1soa1tiPj4yXXwwKSs1Nj4+Ml18MCk7a1soa1tiPj4yXXwwKSs1Mj4+Ml09MDtrWyhrW2I+PjJdfDApKzU2Pj4yXT0wO3I9ZTtyZXR1cm59ZnVuY3Rpb24gU3UoYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wO2M9cjtyPXIrMTZ8MDtiPWMrNHwwO2Q9YztrW2I+PjJdPWE7a1tkPj4yXT1rWyhrW2I+PjJdfDApKzIwPj4yXTtrWyhrWyhrW2I+PjJdfDApKzI4Pj4yXXwwKSsyND4+Ml09a1soa1tiPj4yXXwwKSsyND4+Ml07a1soa1soa1tiPj4yXXwwKSsyND4+Ml18MCkrMjg+PjJdPWtbKGtbYj4+Ml18MCkrMjg+PjJdO2tbKGtbYj4+Ml18MCkrMjQ+PjJdPTA7a1soa1tiPj4yXXwwKSsyOD4+Ml09MDtpWyhrW2I+PjJdfDApKzEyPj4wXT0xO2E9KGtbZD4+Ml18MCkrMzZ8MDtrW2E+PjJdPShrW2E+PjJdfDApKy0xO3I9YztyZXR1cm4ga1tiPj4yXXwwfWZ1bmN0aW9uIFR1KGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wO2c9cjtyPXIrMzJ8MDtjPWcrMTZ8MDtkPWcrMTJ8MDtoPWcrOHwwO2U9Zys0fDA7Zj1nO2tbYz4+Ml09YTtrW2Q+PjJdPWI7a1tlPj4yXT1rWyhrW2M+PjJdfDApKzIwPj4yXTtrW2g+PjJdPSgoa1soa1tjPj4yXXwwKSs4Pj4yXXwwKT4+PjApJSgoa1soa1tlPj4yXXwwKSs0ND4+Ml18MCk+Pj4wKXwwO2tbZj4+Ml09KGtbKGtbZT4+Ml18MCkrNDg+PjJdfDApKyhrW2g+PjJdPDwyKTt3aGlsZSgxKXtiPShrW2tbZj4+Ml0+PjJdfDApKzE2fDA7aWYoKGtba1tmPj4yXT4+Ml18MCk9PShrW2M+PjJdfDApKWJyZWFrO2tbZj4+Ml09Yn1rW2tbZj4+Ml0+PjJdPWtbYj4+Ml07aD0oa1tlPj4yXXwwKSs0MHwwO2tbaD4+Ml09KGtbaD4+Ml18MCkrLTE7aWYoIShrW2Q+PjJdfDApKXtyPWc7cmV0dXJufVV1KGtbYz4+Ml18MCk7cj1nO3JldHVybn1mdW5jdGlvbiBVdShhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTA7ZD1yO3I9cisxNnwwO2I9ZCs0fDA7Yz1kO2tbYj4+Ml09YTtrW2M+PjJdPWtbKGtbYj4+Ml18MCkrMjA+PjJdO2lmKGlbKGtbYj4+Ml18MCkrMTM+PjBdfDApe2tbKGtbYj4+Ml18MCkrMTY+PjJdPWtbKGtbYz4+Ml18MCkrNTI+PjJdO2tbKGtbYz4+Ml18MCkrNTI+PjJdPWtbYj4+Ml19ZWxzZSBsaihrW2tbYj4+Ml0+PjJdfDApO2lmKCEoa1soa1tjPj4yXXwwKSsxNj4+Ml18MCkpe3I9ZDtyZXR1cm59Yz0oa1trW2M+PjJdPj4yXXwwKSsxNnwwO2tbYz4+Ml09KGtbYz4+Ml18MCkrLTE7cj1kO3JldHVybn1mdW5jdGlvbiBWdShhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTA7aj1yO3I9ciszMnwwO2M9aisyMHwwO2Q9aisxNnwwO2U9aisxMnwwO2Y9ais4fDA7aD1qKzR8MDtnPWo7a1tjPj4yXT1hO2tbZD4+Ml09YjtpZigoKGtbKGtbYz4+Ml18MCkrMzI+PjJdfDApLShrW2Q+PjJdfDApfDApPj4+MDwoa1soa1tjPj4yXXwwKSs0ND4+Ml18MCk+Pj4wKXtrW2U+PjJdPSgoa1tkPj4yXXwwKT4+PjApJSgoa1soa1tjPj4yXXwwKSs0ND4+Ml18MCk+Pj4wKXwwO2tbZj4+Ml09KChrWyhrW2M+PjJdfDApKzMyPj4yXXwwKT4+PjApJSgoa1soa1tjPj4yXXwwKSs0ND4+Ml18MCk+Pj4wKXwwfWVsc2V7a1tlPj4yXT0oKGtbKGtbYz4+Ml18MCkrNDQ+PjJdfDApPj4+MCkvMnwwO2tbZj4+Ml09KGtbZT4+Ml18MCktMX13aGlsZSgxKXtrW2g+PjJdPShrWyhrW2M+PjJdfDApKzQ4Pj4yXXwwKSsoa1tlPj4yXTw8Mik7d2hpbGUoMSl7YT1rW2tbaD4+Ml0+PjJdfDA7a1tnPj4yXT1hO2lmKCFhKWJyZWFrO2lmKChrWyhrW2c+PjJdfDApKzg+PjJdfDApPj4+MDwoa1tkPj4yXXwwKT4+PjApe2tbaD4+Ml09KGtbZz4+Ml18MCkrMTY7Y29udGludWV9YT0oa1tjPj4yXXwwKSs0MHwwO2tbYT4+Ml09KGtbYT4+Ml18MCkrLTE7a1trW2g+PjJdPj4yXT1rWyhrW2c+PjJdfDApKzE2Pj4yXTtpZighKGlbKGtbZz4+Ml18MCkrMTI+PjBdfDApKVN1KGtbZz4+Ml18MCl8MDtVdShrW2c+PjJdfDApfWlmKChrW2U+PjJdfDApPT0oa1tmPj4yXXwwKSlicmVhaztrW2U+PjJdPSgoKGtbZT4+Ml18MCkrMXwwKT4+PjApJSgoa1soa1tjPj4yXXwwKSs0ND4+Ml18MCk+Pj4wKXwwfXI9ajtyZXR1cm59ZnVuY3Rpb24gV3UoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxsPTA7aj1yO3I9ciszMnwwO2c9aisyMHwwO2w9aisxNnwwO2Q9aisxMnwwO2U9ais4fDA7Zj1qKzR8MDtoPWo7a1tsPj4yXT1hO2tbZD4+Ml09YjtrW2U+PjJdPWM7a1tmPj4yXT1rW2w+PjJdO2tbaD4+Ml09MDtrW2g+PjJdPWtbKGtbKGtbZj4+Ml18MCkrNDg+PjJdfDApKygoKChrW2Q+PjJdfDApPj4+MCklKChrWyhrW2Y+PjJdfDApKzQ0Pj4yXXwwKT4+PjApfDApPDwyKT4+Ml07d2hpbGUoMSl7aWYoa1toPj4yXXwwKWI9KGtbKGtbaD4+Ml18MCkrOD4+Ml18MCkhPShrW2Q+PjJdfDApO2Vsc2UgYj0wO2M9a1toPj4yXXwwO2lmKCFiKWJyZWFrO2tbaD4+Ml09a1tjKzE2Pj4yXX1pZihjKXtjPWtbaD4+Ml18MDtpZihpWyhrW2g+PjJdfDApKzEyPj4wXXwwKXtrW2c+PjJdPWM7bD1rW2c+PjJdfDA7cj1qO3JldHVybiBsfDB9ZWxzZXtsPVN1KGMpfDA7a1tnPj4yXT1sO2w9a1tnPj4yXXwwO3I9ajtyZXR1cm4gbHwwfX1lbHNlIGlmKGtbZT4+Ml18MCl7bD1YdShrW2Y+PjJdfDAsa1tkPj4yXXwwLGtbZT4+Ml18MCl8MDtrW2c+PjJdPWw7bD1rW2c+PjJdfDA7cj1qO3JldHVybiBsfDB9ZWxzZXtrW2c+PjJdPTA7bD1rW2c+PjJdfDA7cj1qO3JldHVybiBsfDB9cmV0dXJuIDB9ZnVuY3Rpb24gWHUoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxsPTAsbT0wLG49MCxvPTA7bz1yO3I9cis0OHwwO2Q9byszMnwwO2U9bysyOHwwO2Y9bysyNHwwO2c9bysyMHwwO2o9bysxNnwwO2w9bysxMnwwO249bys4fDA7bT1vKzR8MDtoPW87a1tlPj4yXT1hO2tbZj4+Ml09YjtrW2c+PjJdPWM7a1tsPj4yXT1rW2tbZT4+Ml0+PjJdO2tbbj4+Ml09MDtrW2o+PjJdPShrWyhrW2U+PjJdfDApKzQwPj4yXXwwKS0oa1soa1tlPj4yXXwwKSszNj4+Ml18MCk7ZG8gaWYoKGtbZz4+Ml18MCk9PTEpe2lmKChrW2o+PjJdfDApPj4+MDwoa1soa1tsPj4yXXwwKSsxMj4+Ml18MCk+Pj4wPyhrW2o+PjJdfDApPj4+MDwoa1soa1tlPj4yXXwwKSsyOD4+Ml18MCk+Pj4wOjApe2lmKCEoWXUoa1tlPj4yXXwwKXwwKSlicmVhaztpZigoa1soa1tlPj4yXXwwKSszNj4+Ml18MCk+Pj4wPj0oa1tqPj4yXXwwKT4+PjApYnJlYWt9a1tkPj4yXT0wO249a1tkPj4yXXwwO3I9bztyZXR1cm4gbnwwfXdoaWxlKDApO2lmKChrWyhrW2U+PjJdfDApKzQwPj4yXXwwKT4+PjA+PShrWyhrW2U+PjJdfDApKzQ0Pj4yXXwwKT4+PjApWnUoa1tlPj4yXXwwKTtkbyBpZigoa1soa1tlPj4yXXwwKSsxNj4+Ml18MCkhPTA/KGlbKGtbKGtbbD4+Ml18MCkrMjArMjg+PjJdfDApKzE0Pj4wXXwwKT09MDowKXtpZigoKGtbKGtbZT4+Ml18MCkrNDA+PjJdfDApKzF8MCk+Pj4wPChrWyhrW2U+PjJdfDApKzI0Pj4yXXwwKT4+PjA/KFl1KGtbZT4+Ml18MCl8MCk9PTA6MClicmVhaztrW24+PjJdPWtbKGtbbD4+Ml18MCkrMjArMjg+PjJdO1R1KGtbbj4+Ml18MCwwKTtTdShrW24+PjJdfDApfDA7a1ttPj4yXT1rWyhrW24+PjJdfDApKzIwPj4yXTtpZigoa1soa1ttPj4yXXwwKSsxMj4+Ml18MCkhPShrWyhrW2U+PjJdfDApKzEyPj4yXXwwKSl7VXUoa1tuPj4yXXwwKTtrW24+PjJdPTA7YnJlYWt9ZWxzZXtsPShrW2w+PjJdfDApKzE2fDA7a1tsPj4yXT0oa1tsPj4yXXwwKS0oKGtbKGtbbT4+Ml18MCkrMTY+PjJdfDApLShrWyhrW2U+PjJdfDApKzE2Pj4yXXwwKSk7YnJlYWt9fXdoaWxlKDApO2lmKCEoa1tuPj4yXXwwKSl7bT1fdShrW2U+PjJdfDAsKGtbZz4+Ml18MCk9PTEmMSl8MDtrW24+PjJdPW19aWYoKGtbbj4+Ml18MCkhPTA/KGtbaD4+Ml09KChrW2Y+PjJdfDApPj4+MCklKChrWyhrW2U+PjJdfDApKzQ0Pj4yXXwwKT4+PjApfDAsbT0oa1tlPj4yXXwwKSs0MHwwLGtbbT4+Ml09KGtbbT4+Ml18MCkrMSxrWyhrW24+PjJdfDApKzg+PjJdPWtbZj4+Ml0sa1soa1tuPj4yXXwwKSsxNj4+Ml09a1soa1soa1tlPj4yXXwwKSs0OD4+Ml18MCkrKGtbaD4+Ml08PDIpPj4yXSxrWyhrW24+PjJdfDApKzIwPj4yXT1rW2U+PjJdLGtbKGtbbj4+Ml18MCkrMjg+PjJdPTAsa1soa1tuPj4yXXwwKSsyND4+Ml09MCxpWyhrW24+PjJdfDApKzEyPj4wXT0xLGtba1soa1tuPj4yXXwwKSs0Pj4yXT4+Ml09MCxrWyhrWyhrW2U+PjJdfDApKzQ4Pj4yXXwwKSsoa1toPj4yXTw8Mik+PjJdPWtbbj4+Ml0sKGtbZj4+Ml18MCk+Pj4wPihrWyhrW2U+PjJdfDApKzMyPj4yXXwwKT4+PjApOjApa1soa1tlPj4yXXwwKSszMj4+Ml09a1tmPj4yXTtrW2Q+PjJdPWtbbj4+Ml07bj1rW2Q+PjJdfDA7cj1vO3JldHVybiBufDB9ZnVuY3Rpb24gWXUoYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wO2M9cjtyPXIrMTZ8MDtiPWMrNHwwO2Q9YztrW2Q+PjJdPWE7aWYoKGtbNDI0XXwwKSE9MD8oKGtbKGtbZD4+Ml18MCkrND4+Ml18MCkrKGtbKGtbZD4+Ml18MCkrOD4+Ml18MCl8MCk8PShrWzQyM118MCk6MCl7a1tiPj4yXT1rWzQzMV07ZD1rW2I+PjJdfDA7cj1jO3JldHVybiBkfDB9ZD1hdigpfDA7a1tiPj4yXT1kO2Q9a1tiPj4yXXwwO3I9YztyZXR1cm4gZHwwfWZ1bmN0aW9uIFp1KGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTAsaT0wO2k9cjtyPXIrMzJ8MDtiPWkrMjR8MDtjPWkrMjB8MDtmPWkrMTZ8MDtlPWkrMTJ8MDtoPWkrOHwwO2c9aSs0fDA7ZD1pO2tbYj4+Ml09YTthPWtbKGtbYj4+Ml18MCkrNDQ+PjJdPDwxO2tbZj4+Ml09YTtrW2Y+PjJdPShrW2Y+PjJdfDApPj4+MDwyNTY/MjU2OmE7aWYoa1soa1tiPj4yXXwwKSs0ND4+Ml18MClnaygpO2E9dWcoa1tmPj4yXTw8MiwwKXwwO2tbYz4+Ml09YTtpZihrWyhrW2I+PjJdfDApKzQ0Pj4yXXwwKWhrKCk7aWYoIShrW2M+PjJdfDApKXtyPWk7cmV0dXJufWtbZT4+Ml09MDt3aGlsZSgxKXtpZigoa1tlPj4yXXwwKT4+PjA+PShrWyhrW2I+PjJdfDApKzQ0Pj4yXXwwKT4+PjApYnJlYWs7a1tnPj4yXT1rWyhrWyhrW2I+PjJdfDApKzQ4Pj4yXXwwKSsoa1tlPj4yXTw8Mik+PjJdO3doaWxlKDEpe2E9a1tnPj4yXXwwO2tbaD4+Ml09YTtpZighYSlicmVhaztrW2Q+PjJdPSgoa1soa1toPj4yXXwwKSs4Pj4yXXwwKT4+PjApJSgoa1tmPj4yXXwwKT4+PjApfDA7a1tnPj4yXT1rWyhrW2g+PjJdfDApKzE2Pj4yXTtrWyhrW2g+PjJdfDApKzE2Pj4yXT1rWyhrW2M+PjJdfDApKyhrW2Q+PjJdPDwyKT4+Ml07a1soa1tjPj4yXXwwKSsoa1tkPj4yXTw8Mik+PjJdPWtbaD4+Ml19a1tlPj4yXT0oa1tlPj4yXXwwKSsxfVVkKGtbKGtbYj4+Ml18MCkrNDg+PjJdfDApO2tbKGtbYj4+Ml18MCkrNDg+PjJdPWtbYz4+Ml07a1soa1tiPj4yXXwwKSs0ND4+Ml09a1tmPj4yXTtyPWk7cmV0dXJufWZ1bmN0aW9uIF91KGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MDtqPXI7cj1yKzMyfDA7Yz1qKzE2fDA7ZD1qKzEyfDA7ZT1qKzh8MDtmPWorNHwwO2c9ajtrW2Q+PjJdPWE7a1tlPj4yXT1iO2tbZj4+Ml09MDtkbyBpZihrWyhrW2Q+PjJdfDApKzUyPj4yXXwwKWg9NDtlbHNle2lmKChrWyhrW2Q+PjJdfDApKzQwPj4yXXwwKT09MD8oJHUoa1tkPj4yXXwwKXwwKSE9MDowKXtoPTQ7YnJlYWt9aWYoa1tlPj4yXXwwKWdrKCk7YT10aihrWyhrW2Q+PjJdfDApKzEyPj4yXXwwKXwwO2tbZz4+Ml09YTtrW2Y+PjJdPShrW2c+PjJdfDApKyhrWyhrW2Q+PjJdfDApKzQ+PjJdfDApO2lmKGtbZT4+Ml18MCloaygpO2lmKGtbZz4+Ml18MCl7a1trW2Y+PjJdPj4yXT1rW2c+PjJdO2tbKGtbZj4+Ml18MCkrND4+Ml09KGtbZj4+Ml18MCkrMzI7aVsoa1tmPj4yXXwwKSsxMz4+MF09MDtpWyhrW2Y+PjJdfDApKzE0Pj4wXT0wO2JyZWFrfWtbYz4+Ml09MDtoPWtbYz4+Ml18MDtyPWo7cmV0dXJuIGh8MH13aGlsZSgwKTtpZigoaHwwKT09NCl7a1tmPj4yXT1rWyhrW2Q+PjJdfDApKzUyPj4yXTtrWyhrW2Q+PjJdfDApKzUyPj4yXT1rWyhrW2Y+PjJdfDApKzE2Pj4yXTtrWyhrW2Y+PjJdfDApKzE2Pj4yXT0wfWlmKGtbKGtbZD4+Ml18MCkrMTY+PjJdfDApe2g9KGtba1tkPj4yXT4+Ml18MCkrMTZ8MDtrW2g+PjJdPShrW2g+PjJdfDApKzF9a1tjPj4yXT1rW2Y+PjJdO2g9a1tjPj4yXXwwO3I9ajtyZXR1cm4gaHwwfWZ1bmN0aW9uICR1KGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLGw9MCxtPTAsbj0wO2o9cjtyPXIrMzJ8MDtiPWorMjh8MDtjPWorMjR8MDtnPWo7aD1qKzIwfDA7ZT1qKzE2fDA7ZD1qKzEyfDA7Zj1qKzh8MDtrW2M+PjJdPWE7aWYoIShrWzQyMl18MCkpe2tbYj4+Ml09MDtoPWtbYj4+Ml18MDtyPWo7cmV0dXJuIGh8MH1pZigoa1soa1tjPj4yXXwwKSsyND4+Ml18MCk+Pj4wPDMpe2tbYj4+Ml09MDtoPWtbYj4+Ml18MDtyPWo7cmV0dXJuIGh8MH1naygpO2lmKChrWzQyMl18MCk+MCl7YT1rWyhrW2M+PjJdfDApKzEyPj4yXXwwO2w9a1s0MjJdfDA7bD1rUyhhfDAsKChhfDApPDApPDwzMT4+MzF8MCxsfDAsKChsfDApPDApPDwzMT4+MzF8MCl8MDthPWc7a1thPj4yXT1sO2tbYSs0Pj4yXT1MfWVsc2V7YT1rWzQyMl18MDthPWtTKC0xMDI0LC0xLGF8MCwoKGF8MCk8MCk8PDMxPj4zMXwwKXwwO2w9ZztrW2w+PjJdPWE7a1tsKzQ+PjJdPUx9bj1nO2E9a1tuPj4yXXwwO249a1tuKzQ+PjJdfDA7bD1rWyhrW2M+PjJdfDApKzEyPj4yXXwwO2w9a1MobHwwLCgobHwwKTwwKTw8MzE+PjMxfDAsa1soa1tjPj4yXXwwKSsyND4+Ml18MCwwKXwwO209TDtpZigobnwwKT4obXwwKXwobnwwKT09KG18MCkmYT4+PjA+bD4+PjApe209a1soa1tjPj4yXXwwKSsxMj4+Ml18MDttPWtTKG18MCwoKG18MCk8MCk8PDMxPj4zMXwwLGtbKGtbYz4+Ml18MCkrMjQ+PjJdfDAsMCl8MDtuPWc7a1tuPj4yXT1tO2tbbis0Pj4yXT1MfW49ZztuPWpnKGtbbj4+Ml18MCxrW24rND4+Ml18MCl8MDtrWyhrW2M+PjJdfDApKzU2Pj4yXT1uO2tbaD4+Ml09bjtoaygpO2E6ZG8gaWYoa1toPj4yXXwwKXtuPWtnKGtbaD4+Ml18MCl8MDtrW2U+PjJdPShufDApLyhrWyhrW2M+PjJdfDApKzEyPj4yXXwwKXwwO2tbZD4+Ml09MDt3aGlsZSgxKXtpZigoa1tkPj4yXXwwKT49KGtbZT4+Ml18MCkpYnJlYWsgYTtrW2Y+PjJdPShrW2g+PjJdfDApKyhrWyhrW2M+PjJdfDApKzQ+PjJdfDApO2tba1tmPj4yXT4+Ml09a1toPj4yXTtrWyhrW2Y+PjJdfDApKzQ+PjJdPShrW2Y+PjJdfDApKzMyO2lbKGtbZj4+Ml18MCkrMTM+PjBdPTE7aVsoa1tmPj4yXXwwKSsxND4+MF09MDtrWyhrW2Y+PjJdfDApKzE2Pj4yXT1rWyhrW2M+PjJdfDApKzUyPj4yXTtrWyhrW2M+PjJdfDApKzUyPj4yXT1rW2Y+PjJdO2tbaD4+Ml09KGtbaD4+Ml18MCkrKGtbKGtbYz4+Ml18MCkrMTI+PjJdfDApO2tbZD4+Ml09KGtbZD4+Ml18MCkrMX19d2hpbGUoMCk7a1tiPj4yXT0oa1soa1tjPj4yXXwwKSs1Mj4+Ml18MCkhPTAmMTtuPWtbYj4+Ml18MDtyPWo7cmV0dXJuIG58MH1mdW5jdGlvbiBhdigpe3JldHVybiBrWzc5XXwwfWZ1bmN0aW9uIGJ2KGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MCxlPTA7ZD1yO3I9cisxNnwwO2M9ZDtlPWQrOHwwO2I9ZCs0fDA7a1tlPj4yXT1hO2tbZT4+Ml09KGtbZT4+Ml18MCkrNyYtODthPVRSKChrW2U+PjJdfDApKzh8MCl8MDtrW2I+PjJdPWE7YT1rW2U+PjJdfDA7aWYoa1tiPj4yXXwwKXtlPWtbYj4+Ml18MDtrW2U+PjJdPWE7a1tlKzQ+PjJdPSgoYXwwKTwwKTw8MzE+PjMxO2tbYj4+Ml09KGtbYj4+Ml18MCkrODtlPWtbYj4+Ml18MDtyPWQ7cmV0dXJuIGV8MH1lbHNle2tbYz4+Ml09YTskZCg3LDI2Mzk5LGMpO2U9a1tiPj4yXXwwO3I9ZDtyZXR1cm4gZXwwfXJldHVybiAwfWZ1bmN0aW9uIGN2KGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MDtiPXI7cj1yKzE2fDA7ZD1iKzR8MDtjPWI7a1tkPj4yXT1hO2tbYz4+Ml09a1tkPj4yXTtrW2M+PjJdPShrW2M+PjJdfDApKy04O1VSKGtbYz4+Ml18MCk7cj1iO3JldHVybn1mdW5jdGlvbiBkdihhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wO2c9cjtyPXIrMzJ8MDtmPWc7Yz1nKzE2fDA7ZD1nKzEyfDA7ZT1nKzh8MDtrW2M+PjJdPWE7a1tkPj4yXT1iO2tbZT4+Ml09a1tjPj4yXTtrW2U+PjJdPShrW2U+PjJdfDApKy04O2E9V1Ioa1tlPj4yXXwwLChrW2Q+PjJdfDApKzh8MCl8MDtrW2U+PjJdPWE7aWYoa1tlPj4yXXwwKXthPWtbZD4+Ml18MDtmPWtbZT4+Ml18MDtrW2Y+PjJdPWE7a1tmKzQ+PjJdPSgoYXwwKTwwKTw8MzE+PjMxO2tbZT4+Ml09KGtbZT4+Ml18MCkrODtmPWtbZT4+Ml18MDtyPWc7cmV0dXJuIGZ8MH1lbHNle2I9ZXYoa1tjPj4yXXwwKXwwO2E9a1tkPj4yXXwwO2tbZj4+Ml09YjtrW2YrND4+Ml09YTskZCg3LDI2MzYzLGYpO2Y9a1tlPj4yXXwwO3I9ZztyZXR1cm4gZnwwfXJldHVybiAwfWZ1bmN0aW9uIGV2KGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MDtjPXI7cj1yKzE2fDA7ZD1jKzR8MDtiPWM7a1tkPj4yXT1hO2tbYj4+Ml09a1tkPj4yXTtrW2I+PjJdPShrW2I+PjJdfDApKy04O3I9YztyZXR1cm4ga1trW2I+PjJdPj4yXXwwfWZ1bmN0aW9uIGZ2KGEpe2E9YXwwO3ZhciBiPTAsYz0wO2M9cjtyPXIrMTZ8MDtiPWM7a1tiPj4yXT1hO3I9YztyZXR1cm4gKGtbYj4+Ml18MCkrNyYtOHwwfWZ1bmN0aW9uIGd2KGEpe2E9YXwwO3ZhciBiPTA7Yj1yO3I9cisxNnwwO2tbYj4+Ml09YTtyPWI7cmV0dXJuIDB9ZnVuY3Rpb24gaHYoYSl7YT1hfDA7dmFyIGI9MDtiPXI7cj1yKzE2fDA7a1tiPj4yXT1hO3I9YjtyZXR1cm59ZnVuY3Rpb24gaXYoYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wO2M9cjtyPXIrMTZ8MDtkPWMrNHwwO2I9YztrW2Q+PjJdPWE7YT1nY1trW2Q+PjJdJjI1NV0oMTYwOCwwKXwwO2tbYj4+Ml09YTtpZighKGtbYj4+Ml18MCkpe2Q9a1tiPj4yXXwwO3I9YztyZXR1cm4gZHwwfWtba1tiPj4yXT4+Ml09KGtbYj4+Ml18MCkrODtqWyhrW2I+PjJdfDApKzg+PjFdPTA7aVsoa1tiPj4yXXwwKSs4KzI+PjBdPTA7ZD1rW2I+PjJdfDA7cj1jO3JldHVybiBkfDB9ZnVuY3Rpb24ganYoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLG09MCxuPTA7bj1yO3I9ciszMnwwO209bisyNHwwO2o9bisyMHwwO2U9bisxNnwwO2g9bisxMnwwO2Y9bis4fDA7Yz1uKzR8MDtkPW47a1tqPj4yXT1hO2tbZT4+Ml09YjthOmRvIHN3aXRjaChsWzM5MjgyKyhsW2tbaj4+Ml0+PjBdfDApPj4wXXwwKXtjYXNlIDc6e2tbaD4+Ml09MTt3aGlsZSgxKXtpZighKGxbMTg0MDMrKGxbKGtbaj4+Ml18MCkrKGtbaD4+Ml18MCk+PjBdfDApPj4wXSYxKSlicmVhaztrW2g+PjJdPShrW2g+PjJdfDApKzF9a1trW2U+PjJdPj4yXT0xNjI7a1ttPj4yXT1rW2g+PjJdO209a1ttPj4yXXwwO3I9bjtyZXR1cm4gbXwwfWNhc2UgMTE6e2lmKChsWyhrW2o+PjJdfDApKzE+PjBdfDApIT00NSl7a1trW2U+PjJdPj4yXT00ODtrW20+PjJdPTE7bT1rW20+PjJdfDA7cj1uO3JldHVybiBtfDB9a1toPj4yXT0yO3doaWxlKDEpe2c9bFsoa1tqPj4yXXwwKSsoa1toPj4yXXwwKT4+MF18MDtrW2Y+PjJdPWc7aWYoISgoZ3wwKSE9MD8oa1tmPj4yXXwwKSE9MTA6MCkpYnJlYWs7a1toPj4yXT0oa1toPj4yXXwwKSsxfWtba1tlPj4yXT4+Ml09MTYyO2tbbT4+Ml09a1toPj4yXTttPWtbbT4+Ml18MDtyPW47cmV0dXJuIG18MH1jYXNlIDE3OntrW2tbZT4+Ml0+PjJdPTIyO2tbbT4+Ml09MTttPWtbbT4+Ml18MDtyPW47cmV0dXJuIG18MH1jYXNlIDE4OntrW2tbZT4+Ml0+PjJdPTIzO2tbbT4+Ml09MTttPWtbbT4+Ml18MDtyPW47cmV0dXJuIG18MH1jYXNlIDE5OntrW2tbZT4+Ml0+PjJdPTE7a1ttPj4yXT0xO209a1ttPj4yXXwwO3I9bjtyZXR1cm4gbXwwfWNhc2UgMjA6e2tba1tlPj4yXT4+Ml09NDc7a1ttPj4yXT0xO209a1ttPj4yXXwwO3I9bjtyZXR1cm4gbXwwfWNhc2UgMjE6e2tba1tlPj4yXT4+Ml09NDk7a1ttPj4yXT0xO209a1ttPj4yXXwwO3I9bjtyZXR1cm4gbXwwfWNhc2UgMTY6e2lmKChsWyhrW2o+PjJdfDApKzE+PjBdfDApPT00Mj8obFsoa1tqPj4yXXwwKSsyPj4wXXwwKSE9MDowKXtrW2g+PjJdPTM7a1tmPj4yXT1sWyhrW2o+PjJdfDApKzI+PjBdO3doaWxlKDEpe2lmKChrW2Y+PjJdfDApPT00Mj8obFsoa1tqPj4yXXwwKSsoa1toPj4yXXwwKT4+MF18MCk9PTQ3OjApYnJlYWs7Zz1sWyhrW2o+PjJdfDApKyhrW2g+PjJdfDApPj4wXXwwO2tbZj4+Ml09ZztpZighZylicmVhaztrW2g+PjJdPShrW2g+PjJdfDApKzF9aWYoa1tmPj4yXXwwKWtbaD4+Ml09KGtbaD4+Ml18MCkrMTtrW2tbZT4+Ml0+PjJdPTE2MjtrW20+PjJdPWtbaD4+Ml07bT1rW20+PjJdfDA7cj1uO3JldHVybiBtfDB9a1trW2U+PjJdPj4yXT01MDtrW20+PjJdPTE7bT1rW20+PjJdfDA7cj1uO3JldHVybiBtfDB9Y2FzZSAyMjp7a1trW2U+PjJdPj4yXT01MTtrW20+PjJdPTE7bT1rW20+PjJdfDA7cj1uO3JldHVybiBtfDB9Y2FzZSAxNDp7a1trW2U+PjJdPj4yXT0zNztrW20+PjJdPTErKChsWyhrW2o+PjJdfDApKzE+PjBdfDApPT02MSYxKTttPWtbbT4+Ml18MDtyPW47cmV0dXJuIG18MH1jYXNlIDEyOntqPWxbKGtbaj4+Ml18MCkrMT4+MF18MDtrW2Y+PjJdPWo7aWYoKGp8MCk9PTYxKXtrW2tbZT4+Ml0+PjJdPTM5O2tbbT4+Ml09MjttPWtbbT4+Ml18MDtyPW47cmV0dXJuIG18MH1pZigoa1tmPj4yXXwwKT09NjIpe2tba1tlPj4yXT4+Ml09MzY7a1ttPj4yXT0yO209a1ttPj4yXXwwO3I9bjtyZXR1cm4gbXwwfWM9a1tlPj4yXXwwO2lmKChrW2Y+PjJdfDApPT02MCl7a1tjPj4yXT00NTtrW20+PjJdPTI7bT1rW20+PjJdfDA7cj1uO3JldHVybiBtfDB9ZWxzZXtrW2M+PjJdPTQwO2tbbT4+Ml09MTttPWtbbT4+Ml18MDtyPW47cmV0dXJuIG18MH19Y2FzZSAxMzp7aj1sWyhrW2o+PjJdfDApKzE+PjBdfDA7a1tmPj4yXT1qO2lmKChqfDApPT02MSl7a1trW2U+PjJdPj4yXT00MTtrW20+PjJdPTI7bT1rW20+PjJdfDA7cj1uO3JldHVybiBtfDB9Yz1rW2U+PjJdfDA7aWYoKGtbZj4+Ml18MCk9PTYyKXtrW2M+PjJdPTQ2O2tbbT4+Ml09MjttPWtbbT4+Ml18MDtyPW47cmV0dXJuIG18MH1lbHNle2tbYz4+Ml09Mzg7a1ttPj4yXT0xO209a1ttPj4yXXwwO3I9bjtyZXR1cm4gbXwwfX1jYXNlIDE1OntjPWtbZT4+Ml18MDtpZigobFsoa1tqPj4yXXwwKSsxPj4wXXwwKSE9NjEpe2tbYz4+Ml09MTYzO2tbbT4+Ml09MTttPWtbbT4+Ml18MDtyPW47cmV0dXJuIG18MH1lbHNle2tbYz4+Ml09MzY7a1ttPj4yXT0yO209a1ttPj4yXXwwO3I9bjtyZXR1cm4gbXwwfX1jYXNlIDEwOntjPWtbZT4+Ml18MDtpZigobFsoa1tqPj4yXXwwKSsxPj4wXXwwKSE9MTI0KXtrW2M+PjJdPTQ0O2tbbT4+Ml09MTttPWtbbT4+Ml18MDtyPW47cmV0dXJuIG18MH1lbHNle2tbYz4+Ml09NTI7a1ttPj4yXT0yO209a1ttPj4yXXwwO3I9bjtyZXR1cm4gbXwwfX1jYXNlIDIzOntrW2tbZT4+Ml0+PjJdPTI2O2tbbT4+Ml09MTttPWtbbT4+Ml18MDtyPW47cmV0dXJuIG18MH1jYXNlIDI0OntrW2tbZT4+Ml0+PjJdPTQzO2tbbT4+Ml09MTttPWtbbT4+Ml18MDtyPW47cmV0dXJuIG18MH1jYXNlIDI1OntrW2tbZT4+Ml0+PjJdPTU0O2tbbT4+Ml09MTttPWtbbT4+Ml18MDtyPW47cmV0dXJuIG18MH1jYXNlIDg6e2tbYz4+Ml09bFtrW2o+PjJdPj4wXTtrW2g+PjJdPTE7d2hpbGUoMSl7Zz1sWyhrW2o+PjJdfDApKyhrW2g+PjJdfDApPj4wXXwwO2tbZj4+Ml09ZztpZighZylicmVhaztpZigoa1tmPj4yXXwwKT09KGtbYz4+Ml18MCkpe2lmKChsWyhrW2o+PjJdfDApKygoa1toPj4yXXwwKSsxKT4+MF18MCkhPShrW2M+PjJdfDApKWJyZWFrO2tbaD4+Ml09KGtbaD4+Ml18MCkrMX1rW2g+PjJdPShrW2g+PjJdfDApKzF9aWYoKGtbZj4+Ml18MCk9PTM5KXtrW2tbZT4+Ml0+PjJdPTk3O2tbbT4+Ml09KGtbaD4+Ml18MCkrMTttPWtbbT4+Ml18MDtyPW47cmV0dXJuIG18MH1jPWtbZT4+Ml18MDtpZihrW2Y+PjJdfDApe2tbYz4+Ml09NTU7a1ttPj4yXT0oa1toPj4yXXwwKSsxO209a1ttPj4yXXwwO3I9bjtyZXR1cm4gbXwwfWVsc2V7a1tjPj4yXT0xNjM7a1ttPj4yXT1rW2g+PjJdO209a1ttPj4yXXwwO3I9bjtyZXR1cm4gbXwwfX1jYXNlIDI2OntpZihsWzE4NDAzKyhsWyhrW2o+PjJdfDApKzE+PjBdfDApPj4wXSY0KWc9NjQ7ZWxzZXtrW2tbZT4+Ml0+PjJdPTEyMjtrW20+PjJdPTE7bT1rW20+PjJdfDA7cj1uO3JldHVybiBtfDB9YnJlYWt9Y2FzZSAzOntnPTY0O2JyZWFrfWNhc2UgOTp7a1toPj4yXT0xO2tbZj4+Ml09bFtrW2o+PjJdPj4wXTt3aGlsZSgxKXtpZigoa1tmPj4yXXwwKT09OTMpYnJlYWs7Zz1sWyhrW2o+PjJdfDApKyhrW2g+PjJdfDApPj4wXXwwO2tbZj4+Ml09ZztpZighZylicmVhaztrW2g+PjJdPShrW2g+PjJdfDApKzF9a1trW2U+PjJdPj4yXT0oa1tmPj4yXXwwKT09OTM/NTU6MTYzO2tbbT4+Ml09a1toPj4yXTttPWtbbT4+Ml18MDtyPW47cmV0dXJuIG18MH1jYXNlIDY6e2tba1tlPj4yXT4+Ml09MTM1O2tbaD4+Ml09MTt3aGlsZSgxKXtjPWtbaD4+Ml18MDtpZighKGxbMTg0MDMrKGxbKGtbaj4+Ml18MCkrKGtbaD4+Ml18MCk+PjBdfDApPj4wXSY0KSlicmVhaztrW2g+PjJdPWMrMX1rW20+PjJdPWM7bT1rW20+PjJdfDA7cj1uO3JldHVybiBtfDB9Y2FzZSA1OmNhc2UgNDp7a1tkPj4yXT0wO2tba1tlPj4yXT4+Ml09MTM1O2tbaD4+Ml09MTt3aGlsZSgxKXthPWxbKGtbaj4+Ml18MCkrKGtbaD4+Ml18MCk+PjBdfDA7a1tmPj4yXT1hO2lmKCFhKWJyZWFrO2lmKGxbMTg0MDMrKGtbZj4+Ml0mMjU1KT4+MF0mNzApa1tkPj4yXT0oa1tkPj4yXXwwKSsxO2Vsc2V7aWYoKGtbZj4+Ml18MCk9PTQwJihrW2Q+PjJdfDApPjApe2c9MTA3O2JyZWFrfWlmKChrW2Y+PjJdfDApIT01OClicmVhaztpZigobFsoa1tqPj4yXXwwKSsoKGtbaD4+Ml18MCkrMSk+PjBdfDApIT01OClicmVhaztrW2g+PjJdPShrW2g+PjJdfDApKzF9a1toPj4yXT0oa1toPj4yXXwwKSsxfWRvIGlmKChnfDApPT0xMDcpe3doaWxlKDEpe2tbaD4+Ml09KGtbaD4+Ml18MCkrMTtnPWxbKGtbaj4+Ml18MCkrKGtbaD4+Ml18MCk+PjBdfDA7a1tmPj4yXT1nO2lmKCFnKWJyZWFrO2lmKChrW2Y+PjJdfDApIT00MT8obFsxODQwMysoa1tmPj4yXSYyNTUpPj4wXSYxfDApPT0wOjApZz0xMDc7ZWxzZSBicmVha31pZigoa1tmPj4yXXwwKT09NDEpe2tbaD4+Ml09KGtbaD4+Ml18MCkrMTticmVha31lbHNle2tba1tlPj4yXT4+Ml09MTYzO2JyZWFrfX13aGlsZSgwKTtpZighKGtbZD4+Ml18MCkpa1trW2U+PjJdPj4yXT0xNjM7a1ttPj4yXT1rW2g+PjJdO209a1ttPj4yXXwwO3I9bjtyZXR1cm4gbXwwfWNhc2UgMTp7a1toPj4yXT0xO3doaWxlKDEpe2M9a1toPj4yXXwwO2lmKChsWzM5MjgyKyhsWyhrW2o+PjJdfDApKyhrW2g+PjJdfDApPj4wXXwwKT4+MF18MCk+MSlicmVhaztrW2g+PjJdPWMrMX1pZihsWzE4NDAzKyhsWyhrW2o+PjJdfDApK2M+PjBdfDApPj4wXSY3MCl7a1toPj4yXT0oa1toPj4yXXwwKSsxO2JyZWFrIGF9a1trW2U+PjJdPj4yXT01NTtqPWJqKGtbaj4+Ml18MCxrW2g+PjJdfDAsa1tlPj4yXXwwKXwwO2tbbT4+Ml09ajttPWtbbT4+Ml18MDtyPW47cmV0dXJuIG18MH1jYXNlIDA6e2lmKChsWyhrW2o+PjJdfDApKzE+PjBdfDApPT0zOSl7a1trW2U+PjJdPj4yXT0xMzM7a1toPj4yXT0yO3doaWxlKDEpe2M9a1toPj4yXXwwO2lmKCEobFsxODQwMysobFsoa1tqPj4yXXwwKSsoa1toPj4yXXwwKT4+MF18MCk+PjBdJjgpKWJyZWFrO2tbaD4+Ml09YysxfWlmKCEoKGxbKGtbaj4+Ml18MCkrYz4+MF18MCk9PTM5Pygoa1toPj4yXXwwKSUyfDB8MCk9PTA6MCkpZz0xMzE7YjpkbyBpZigoZ3wwKT09MTMxKXtrW2tbZT4+Ml0+PjJdPTE2Mzt3aGlsZSgxKXtpZighKGxbKGtbaj4+Ml18MCkrKGtbaD4+Ml18MCk+PjBdfDApKWJyZWFrIGI7aWYoKGxbKGtbaj4+Ml18MCkrKGtbaD4+Ml18MCk+PjBdfDApPT0zOSlicmVhayBiO2tbaD4+Ml09KGtbaD4+Ml18MCkrMX19d2hpbGUoMCk7aWYoaVsoa1tqPj4yXXwwKSsoa1toPj4yXXwwKT4+MF18MClrW2g+PjJdPShrW2g+PjJdfDApKzE7a1ttPj4yXT1rW2g+PjJdO209a1ttPj4yXXwwO3I9bjtyZXR1cm4gbXwwfWVsc2UgZz0xMzg7YnJlYWt9Y2FzZSAyOntnPTEzODticmVha31kZWZhdWx0OntrW2tbZT4+Ml0+PjJdPTE2MztrW20+PjJdPTE7bT1rW20+PjJdfDA7cj1uO3JldHVybiBtfDB9fXdoaWxlKDApO2lmKChnfDApPT02NCl7a1trW2U+PjJdPj4yXT0xMzQ7ZG8gaWYoKGxba1tqPj4yXT4+MF18MCk9PTQ4KXtpZigobFsoa1tqPj4yXXwwKSsxPj4wXXwwKSE9MTIwPyhsWyhrW2o+PjJdfDApKzE+PjBdfDApIT04ODowKWJyZWFrO2lmKGxbMTg0MDMrKGxbKGtbaj4+Ml18MCkrMj4+MF18MCk+PjBdJjgpe2tbaD4+Ml09Mzt3aGlsZSgxKXtjPWtbaD4+Ml18MDtpZighKGxbMTg0MDMrKGxbKGtbaj4+Ml18MCkrKGtbaD4+Ml18MCk+PjBdfDApPj4wXSY4KSlicmVhaztrW2g+PjJdPWMrMX1rW20+PjJdPWM7bT1rW20+PjJdfDA7cj1uO3JldHVybiBtfDB9fXdoaWxlKDApO2tbaD4+Ml09MDt3aGlsZSgxKXtjPWtbaD4+Ml18MDtpZighKGxbMTg0MDMrKGxbKGtbaj4+Ml18MCkrKGtbaD4+Ml18MCk+PjBdfDApPj4wXSY0KSlicmVhaztrW2g+PjJdPWMrMX1pZigobFsoa1tqPj4yXXwwKStjPj4wXXwwKT09NDYpe2tbaD4+Ml09KGtbaD4+Ml18MCkrMTt3aGlsZSgxKXtpZighKGxbMTg0MDMrKGxbKGtbaj4+Ml18MCkrKGtbaD4+Ml18MCk+PjBdfDApPj4wXSY0KSlicmVhaztrW2g+PjJdPShrW2g+PjJdfDApKzF9a1trW2U+PjJdPj4yXT0xMzJ9aWYoISgobFsoa1tqPj4yXXwwKSsoa1toPj4yXXwwKT4+MF18MCkhPTEwMT8obFsoa1tqPj4yXXwwKSsoa1toPj4yXXwwKT4+MF18MCkhPTY5OjApKWc9ODI7ZG8gaWYoKGd8MCk9PTgyKXtpZighKGxbMTg0MDMrKGxbKGtbaj4+Ml18MCkrKChrW2g+PjJdfDApKzEpPj4wXXwwKT4+MF0mNCkpe2lmKChsWyhrW2o+PjJdfDApKygoa1toPj4yXXwwKSsxKT4+MF18MCkhPTQzPyhsWyhrW2o+PjJdfDApKygoa1toPj4yXXwwKSsxKT4+MF18MCkhPTQ1OjApYnJlYWs7aWYoIShsWzE4NDAzKyhsWyhrW2o+PjJdfDApKygoa1toPj4yXXwwKSsyKT4+MF18MCk+PjBdJjQpKWJyZWFrfWtbaD4+Ml09KGtbaD4+Ml18MCkrMjt3aGlsZSgxKXtpZighKGxbMTg0MDMrKGxbKGtbaj4+Ml18MCkrKGtbaD4+Ml18MCk+PjBdfDApPj4wXSY0KSlicmVhaztrW2g+PjJdPShrW2g+PjJdfDApKzF9a1trW2U+PjJdPj4yXT0xMzJ9d2hpbGUoMCk7d2hpbGUoMSl7aWYoIShsWzE4NDAzKyhsWyhrW2o+PjJdfDApKyhrW2g+PjJdfDApPj4wXXwwKT4+MF0mNzApKWJyZWFrO2tba1tlPj4yXT4+Ml09MTYzO2tbaD4+Ml09KGtbaD4+Ml18MCkrMX1rW20+PjJdPWtbaD4+Ml07bT1rW20+PjJdfDA7cj1uO3JldHVybiBtfDB9ZWxzZSBpZigoZ3wwKT09MTM4KWtbaD4+Ml09MTt3aGlsZSgxKXtpZighKGxbMTg0MDMrKGxbKGtbaj4+Ml18MCkrKGtbaD4+Ml18MCk+PjBdfDApPj4wXSY3MCkpYnJlYWs7a1toPj4yXT0oa1toPj4yXXwwKSsxfWtba1tlPj4yXT4+Ml09NTU7a1ttPj4yXT1rW2g+PjJdO209a1ttPj4yXXwwO3I9bjtyZXR1cm4gbXwwfWZ1bmN0aW9uIGt2KGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaT0wLGo9MCxsPTAsbT0wO2o9cjtyPXIrNDh8MDtnPWorMzJ8MDttPWorMjh8MDtlPWorMjR8MDtsPWorMjB8MDtoPWorOHwwO2Y9ais0fDA7aT1qO2tbbT4+Ml09YTtrW2U+PjJdPWI7a1tsPj4yXT1kO2tbaT4+Ml09a1ttPj4yXTtrWyhrW2k+PjJdfDApKzQ+PjJdPWtbbD4+Ml07d2hpbGUoMSl7bT16dihrW2k+PjJdfDAsa1tlPj4yXSYyNTUpfDA7a1tmPj4yXT1tO2RvIGlmKChrW2Y+PjJdfDApPj4+MD45OTkpaWYoKGtbZj4+Ml18MCk+Pj4wPD0xMzMxKXtCdihrW2k+PjJdfDAsKGtbZj4+Ml18MCktMWUzfDApO2JyZWFrfWVsc2V7a1toPj4yXT1rW2M+PjJdO2tbaCs0Pj4yXT1rW2MrND4+Ml07bD1rW2k+PjJdfDA7bT1rW2U+PjJdfDA7a1tnPj4yXT1rW2M+PjJdO2tbZys0Pj4yXT1rW2MrND4+Ml07Q3YobCxtLGcpO3h2KGtbaT4+Ml18MCxrW2U+PjJdJjI1NSxoKTtrW2U+PjJdPTI1MjticmVha31lbHNle2E9a1tpPj4yXXwwO2w9a1tmPj4yXXwwO209a1tlPj4yXXwwO2tbZz4+Ml09a1tjPj4yXTtrW2crND4+Ml09a1tjKzQ+PjJdO0F2KGEsbCxtLGcpO2tbZT4+Ml09MjUyfXdoaWxlKDApO2lmKChrW2U+PjJdfDApPT0yNTIpe2U9OTticmVha31pZigoa1trW2k+PjJdPj4yXXwwKT4+PjA8PSgoa1tpPj4yXXwwKSs4fDApPj4+MCl7ZT05O2JyZWFrfX1pZigoZXwwKT09OSl7cj1qO3JldHVybn19ZnVuY3Rpb24gbHYoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wO2U9cjtyPXIrMTZ8MDtmPWUrOHwwO2M9ZSs0fDA7ZD1lO2tbZj4+Ml09YTtrW2M+PjJdPWI7a1tkPj4yXT1rW2Y+PjJdO3doaWxlKDEpe2lmKChrW2tbZD4+Ml0+PjJdfDApPj4+MDw9KChrW2Q+PjJdfDApKzh8MCk+Pj4wKWJyZWFrO3d2KGtbZD4+Ml18MCl9X2Jba1tjPj4yXSYyNTVdKGtbZD4+Ml18MCk7cj1lO3JldHVybn1mdW5jdGlvbiBtdihhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTA7ZD1yO3I9cisxNnwwO2I9ZCs0fDA7Yz1kO2tbYj4+Ml09YTtpZighKGtbYj4+Ml18MCkpe3I9ZDtyZXR1cm59a1tjPj4yXT1rW2tbYj4+Ml0+PjJdO2FnKGtbYz4+Ml18MCxrW2I+PjJdfDApO2E9a1soa1tiPj4yXXwwKSs4Pj4yXXwwO2lmKGtbKGtbYj4+Ml18MCkrND4+Ml18MClrWyhrWyhrW2I+PjJdfDApKzQ+PjJdfDApKzg+PjJdPWE7ZWxzZSBrWyhrW2M+PjJdfDApKzQ+PjJdPWE7aWYoa1soa1tiPj4yXXwwKSs4Pj4yXXwwKWtbKGtbKGtbYj4+Ml18MCkrOD4+Ml18MCkrND4+Ml09a1soa1tiPj4yXXwwKSs0Pj4yXTtrWyhrW2I+PjJdfDApKzIwPj4yXT0xNDQzMjgzOTEyO2tba1tiPj4yXT4+Ml09MDtiZyhrW2M+PjJdfDAsa1tiPj4yXXwwKTtyPWQ7cmV0dXJufWZ1bmN0aW9uIG52KGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTA7Zz1yO3I9cisxNnwwO2M9ZysxMnwwO2Q9Zys4fDA7ZT1nKzR8MDtmPWc7a1tjPj4yXT1hO2tbZD4+Ml09YjtpZighKGtbZD4+Ml18MCkpe3I9ZztyZXR1cm59a1tlPj4yXT0wO3doaWxlKDEpe2lmKChrW2U+PjJdfDApPj0oa1trW2Q+PjJdPj4yXXwwKSlicmVhaztrW2Y+PjJdPShrW2Q+PjJdfDApKzgrKGtbZT4+Ml08PDQpO292KGtbYz4+Ml18MCxrWyhrW2Y+PjJdfDApKzQ+PjJdfDApO3B2KGtbYz4+Ml18MCxrWyhrW2Y+PjJdfDApKzg+PjJdfDApO2JnKGtbYz4+Ml18MCxrW2tbZj4+Ml0+PjJdfDApO2tbZT4+Ml09KGtbZT4+Ml18MCkrMX1iZyhrW2M+PjJdfDAsa1tkPj4yXXwwKTtyPWc7cmV0dXJufWZ1bmN0aW9uIG92KGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wO2U9cjtyPXIrMTZ8MDtjPWUrNHwwO2Q9ZTtrW2M+PjJdPWE7a1tkPj4yXT1iO2lmKCEoa1tkPj4yXXwwKSl7cj1lO3JldHVybn12dihrW2M+PjJdfDAsa1tkPj4yXXwwKTtyPWU7cmV0dXJufWZ1bmN0aW9uIHB2KGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wO2U9cjtyPXIrMTZ8MDtjPWUrNHwwO2Q9ZTtrW2M+PjJdPWE7a1tkPj4yXT1iO2lmKCEoa1tkPj4yXXwwKSl7cj1lO3JldHVybn1xdihrW2M+PjJdfDAsa1tkPj4yXXwwLDEpO3I9ZTtyZXR1cm59ZnVuY3Rpb24gcXYoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wO2g9cjtyPXIrMTZ8MDtkPWgrMTJ8MDtlPWgrOHwwO2Y9aCs0fDA7Zz1oO2tbZD4+Ml09YTtrW2U+PjJdPWI7a1tmPj4yXT1jO3doaWxlKDEpe2lmKCEoa1tlPj4yXXwwKSlicmVhaztrW2c+PjJdPWtbKGtbZT4+Ml18MCkrNDg+PjJdO292KGtbZD4+Ml18MCxrW2tbZT4+Ml0+PjJdfDApO3J2KGtbZD4+Ml18MCxrWyhrW2U+PjJdfDApKzI4Pj4yXXwwKTtzdihrW2Q+PjJdfDAsa1soa1tlPj4yXXwwKSszMj4+Ml18MCk7b3Yoa1tkPj4yXXwwLGtbKGtbZT4+Ml18MCkrMzY+PjJdfDApO3N2KGtbZD4+Ml18MCxrWyhrW2U+PjJdfDApKzQwPj4yXXwwKTtvdihrW2Q+PjJdfDAsa1soa1tlPj4yXXwwKSs0ND4+Ml18MCk7c3Yoa1tkPj4yXXwwLGtbKGtbZT4+Ml18MCkrNTY+PjJdfDApO3N2KGtbZD4+Ml18MCxrWyhrW2U+PjJdfDApKzYwPj4yXXwwKTtpZihrWyhrW2U+PjJdfDApKzY0Pj4yXXwwKW52KGtbZD4+Ml18MCxrWyhrW2U+PjJdfDApKzY0Pj4yXXwwKTtpZihrW2Y+PjJdfDApYmcoa1tkPj4yXXwwLGtbZT4+Ml18MCk7a1tlPj4yXT1rW2c+PjJdO2tbZj4+Ml09MX1yPWg7cmV0dXJufWZ1bmN0aW9uIHJ2KGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTA7Zz1yO3I9cisxNnwwO2M9ZysxMnwwO2Q9Zys4fDA7ZT1nKzR8MDtmPWc7a1tjPj4yXT1hO2tbZD4+Ml09YjtpZighKGtbZD4+Ml18MCkpe3I9ZztyZXR1cm59a1tmPj4yXT0oa1tkPj4yXXwwKSs4O2tbZT4+Ml09MDt3aGlsZSgxKXthPWtbYz4+Ml18MDtpZigoa1tlPj4yXXwwKT49KGtba1tkPj4yXT4+Ml18MCkpYnJlYWs7YmcoYSxrWyhrW2Y+PjJdfDApKzQ+PjJdfDApO2JnKGtbYz4+Ml18MCxrWyhrW2Y+PjJdfDApKzg+PjJdfDApO2JnKGtbYz4+Ml18MCxrWyhrW2Y+PjJdfDApKzEyPj4yXXwwKTtpZigobFsoa1tmPj4yXXwwKSszNisxPj4wXXwwKT4+PjEmMSliZyhrW2M+PjJdfDAsa1soa1tmPj4yXXwwKSs2ND4+Ml18MCk7aWYoKGxbKGtbZj4+Ml18MCkrMzYrMT4+MF18MCk+Pj4yJjEpb3Yoa1tjPj4yXXwwLGtbKGtbZj4+Ml18MCkrNjQ+PjJdfDApOyRmKGtbYz4+Ml18MCxrWyhrW2Y+PjJdfDApKzE2Pj4yXXwwKTtwdihrW2M+PjJdfDAsa1soa1tmPj4yXXwwKSsyMD4+Ml18MCk7c3Yoa1tjPj4yXXwwLGtbKGtbZj4+Ml18MCkrNDg+PjJdfDApO3V2KGtbYz4+Ml18MCxrWyhrW2Y+PjJdfDApKzUyPj4yXXwwKTtrW2U+PjJdPShrW2U+PjJdfDApKzE7a1tmPj4yXT0oa1tmPj4yXXwwKSs3Mn1iZyhhLGtbZD4+Ml18MCk7cj1nO3JldHVybn1mdW5jdGlvbiBzdihhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MDtlPXI7cj1yKzE2fDA7Yz1lKzR8MDtkPWU7a1tjPj4yXT1hO2tbZD4+Ml09YjtpZighKGtbZD4+Ml18MCkpe3I9ZTtyZXR1cm59dHYoa1tjPj4yXXwwLGtbZD4+Ml18MCk7cj1lO3JldHVybn1mdW5jdGlvbiB0dihhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MDtlPXI7cj1yKzE2fDA7Yz1lKzR8MDtkPWU7a1tjPj4yXT1hO2tbZD4+Ml09YjtkbyBpZighKGtbKGtbZD4+Ml18MCkrND4+Ml0mODQwNDk5Mikpe2lmKChrWyhrW2Q+PjJdfDApKzEyPj4yXXwwKSE9MD8obFtrW2Q+PjJdPj4wXXwwfDApIT0xNTk6MCl0dihrW2M+PjJdfDAsa1soa1tkPj4yXXwwKSsxMj4+Ml18MCk7c3Yoa1tjPj4yXXwwLGtbKGtbZD4+Ml18MCkrMTY+PjJdfDApO2E9a1tjPj4yXXwwO2I9KGtbZD4+Ml18MCkrMjB8MDtpZihrWyhrW2Q+PjJdfDApKzQ+PjJdJjIwNDgpe3B2KGEsa1tiPj4yXXwwKTticmVha31lbHNle292KGEsa1tiPj4yXXwwKTticmVha319d2hpbGUoMCk7aWYoa1soa1tkPj4yXXwwKSs0Pj4yXSY2NTUzNiliZyhrW2M+PjJdfDAsa1soa1tkPj4yXXwwKSs4Pj4yXXwwKTtpZihrWyhrW2Q+PjJdfDApKzQ+PjJdJjMyNzY4KXtyPWU7cmV0dXJufWJnKGtbYz4+Ml18MCxrW2Q+PjJdfDApO3I9ZTtyZXR1cm59ZnVuY3Rpb24gdXYoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wO2Y9cjtyPXIrMTZ8MDtjPWYrOHwwO2Q9Zis0fDA7ZT1mO2tbYz4+Ml09YTtrW2Q+PjJdPWI7aWYoIShrW2Q+PjJdfDApKXtyPWY7cmV0dXJufWtbZT4+Ml09MDt3aGlsZSgxKXthPWtbYz4+Ml18MDtpZigoa1tlPj4yXXwwKT49KGtbKGtbZD4+Ml18MCkrND4+Ml18MCkpYnJlYWs7YmcoYSxrWyhrW2tbZD4+Ml0+PjJdfDApKyhrW2U+PjJdPDwzKT4+Ml18MCk7a1tlPj4yXT0oa1tlPj4yXXwwKSsxfWJnKGEsa1trW2Q+PjJdPj4yXXwwKTtiZyhrW2M+PjJdfDAsa1tkPj4yXXwwKTtyPWY7cmV0dXJufWZ1bmN0aW9uIHZ2KGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTA7Zz1yO3I9cisxNnwwO2M9ZysxMnwwO2Q9Zys4fDA7ZT1nKzR8MDtmPWc7a1tjPj4yXT1hO2tbZD4+Ml09YjtrW2Y+PjJdPWtbKGtbZD4+Ml18MCkrND4+Ml07a1tlPj4yXT0wO3doaWxlKDEpe2E9a1tjPj4yXXwwO2lmKChrW2U+PjJdfDApPj0oa1trW2Q+PjJdPj4yXXwwKSlicmVhaztzdihhLGtba1tmPj4yXT4+Ml18MCk7Ymcoa1tjPj4yXXwwLGtbKGtbZj4+Ml18MCkrND4+Ml18MCk7Ymcoa1tjPj4yXXwwLGtbKGtbZj4+Ml18MCkrOD4+Ml18MCk7a1tlPj4yXT0oa1tlPj4yXXwwKSsxO2tbZj4+Ml09KGtbZj4+Ml18MCkrMjB9YmcoYSxrWyhrW2Q+PjJdfDApKzQ+PjJdfDApO2JnKGtbYz4+Ml18MCxrW2Q+PjJdfDApO3I9ZztyZXR1cm59ZnVuY3Rpb24gd3YoYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wLGU9MDtiPXI7cj1yKzE2fDA7ZD1iKzR8MDtjPWI7a1tkPj4yXT1hO2U9a1tkPj4yXXwwO2E9a1tlPj4yXXwwO2tbZT4+Ml09YSstMTY7a1tjPj4yXT1hO3h2KGtbZD4+Ml18MCxpWyhrW2M+PjJdfDApKzI+PjBdfDAsKGtbYz4+Ml18MCkrNHwwKTtyPWI7cmV0dXJufWZ1bmN0aW9uIHh2KGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MDtmPXI7cj1yKzE2fDA7aD1mKzh8MDtnPWYrMTJ8MDtkPWYrNHwwO2U9ZjtrW2g+PjJdPWE7aVtnPj4wXT1iO2tbZD4+Ml09YztrW2U+PjJdPWtbKGtbaD4+Ml18MCkrND4+Ml07ZG8gc3dpdGNoKGxbZz4+MF18MHwwKXtjYXNlIDIwNjpjYXNlIDE5NTpjYXNlIDE5NDpjYXNlIDE2Mzp7cHYoa1trW2U+PjJdPj4yXXwwLGtba1tkPj4yXT4+Ml18MCk7cj1mO3JldHVybn1jYXNlIDE3MzpjYXNlIDE3Mjp7c3Yoa1trW2U+PjJdPj4yXXwwLGtba1tkPj4yXT4+Ml18MCk7cj1mO3JldHVybn1jYXNlIDIyNjpjYXNlIDIyNDpjYXNlIDIxODpjYXNlIDIwOTpjYXNlIDIwODpjYXNlIDIwNzpjYXNlIDIwNDpjYXNlIDIwMjpjYXNlIDE5OTpjYXNlIDE4NzpjYXNlIDE4NjpjYXNlIDE3Nzp7b3Yoa1trW2U+PjJdPj4yXXwwLGtba1tkPj4yXT4+Ml18MCk7cj1mO3JldHVybn1jYXNlIDIxMjpjYXNlIDIxMTpjYXNlIDIwMDpjYXNlIDE5Mzp7cnYoa1trW2U+PjJdPj4yXXwwLGtba1tkPj4yXT4+Ml18MCk7cj1mO3JldHVybn1jYXNlIDI1MDpjYXNlIDE5Njp7bnYoa1trW2U+PjJdPj4yXXwwLGtba1tkPj4yXT4+Ml18MCk7cj1mO3JldHVybn1jYXNlIDI0MTpjYXNlIDIzNjpjYXNlIDIyNzpjYXNlIDIyNTpjYXNlIDIxNTpjYXNlIDIwMzpjYXNlIDIwMTp7c3Yoa1trW2U+PjJdPj4yXXwwLGtba1tkPj4yXT4+Ml18MCk7cj1mO3JldHVybn1jYXNlIDIyMDpjYXNlIDIxNzpjYXNlIDIxNjp7dXYoa1trW2U+PjJdPj4yXXwwLGtba1tkPj4yXT4+Ml18MCk7cj1mO3JldHVybn1jYXNlIDIzNzpjYXNlIDIzMjp7eXYoa1trW2U+PjJdPj4yXXwwLGtba1tkPj4yXT4+Ml18MCk7cj1mO3JldHVybn1jYXNlIDIzNDp7dXYoa1trW2U+PjJdPj4yXXwwLGtbKGtbZD4+Ml18MCkrND4+Ml18MCk7cj1mO3JldHVybn1kZWZhdWx0OntyPWY7cmV0dXJufX13aGlsZSgwKX1mdW5jdGlvbiB5dihhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTA7Zj1yO3I9cisxNnwwO2M9Zis4fDA7ZD1mKzR8MDtlPWY7a1tjPj4yXT1hO2tbZD4+Ml09Yjt3aGlsZSgxKXtpZighKGtbZD4+Ml18MCkpYnJlYWs7a1tlPj4yXT1rW2Q+PjJdO2tbZD4+Ml09a1soa1tkPj4yXXwwKSsyOD4+Ml07c3Yoa1tjPj4yXXwwLGtbKGtbZT4+Ml18MCkrMTY+PjJdfDApO292KGtbYz4+Ml18MCxrWyhrW2U+PjJdfDApKzIwPj4yXXwwKTtwdihrW2M+PjJdfDAsa1soa1tlPj4yXXwwKSs4Pj4yXXwwKTt1dihrW2M+PjJdfDAsa1soa1tlPj4yXXwwKSsyND4+Ml18MCk7Ymcoa1tjPj4yXXwwLGtbZT4+Ml18MCl9cj1mO3JldHVybn1mdW5jdGlvbiB6dihhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wLGg9MCxuPTAsbz0wLHA9MDtvPXI7cj1yKzMyfDA7Yz1vKzE2fDA7cD1vKzEyfDA7ZD1vKzIxfDA7ZT1vKzh8MDtoPW8rNHwwO2Y9bysyMHwwO2c9bztrW3A+PjJdPWE7aVtkPj4wXT1iO2tbaD4+Ml09bVtrW2tbcD4+Ml0+PjJdPj4xXTtpZigoa1toPj4yXXwwKT49MWUzKXtrW2M+PjJdPWtbaD4+Ml07cD1rW2M+PjJdfDA7cj1vO3JldHVybiBwfDB9d2hpbGUoMSl7a1tlPj4yXT1qWzE0NTk0KyhrW2g+PjJdPDwxKT4+MV07a1tlPj4yXT0oa1tlPj4yXXwwKSsobFtkPj4wXXwwKTtpZighKChrW2U+PjJdfDApPDB8KGtbZT4+Ml18MCk+PTE1NjcpPyhsWzM3NjE5KyhrW2U+PjJdfDApPj4wXXwwKT09KGxbZD4+MF18MCk6MCl7bj0xMzticmVha31pZigobFtkPj4wXXwwKT4+PjA+PTk2KWJyZWFrO3A9aVszOTE4NisobFtkPj4wXXwwKT4+MF18MDtpW2Y+PjBdPXA7aWYoIShwJjI1NSkpYnJlYWs7aVtkPj4wXT1pW2Y+PjBdfDB9aWYoKG58MCk9PTEzKXtrW2M+PjJdPW1bMTE0NTYrKGtbZT4+Ml08PDEpPj4xXTtwPWtbYz4+Ml18MDtyPW87cmV0dXJuIHB8MH1rW2c+PjJdPShrW2U+PjJdfDApLShsW2Q+PjBdfDApKzk2O2lmKCgoa1tnPj4yXXwwKTwxNTY3PyhsWzM3NjE5KyhrW2c+PjJdfDApPj4wXXwwKT09OTY6MCk/KGxbZD4+MF18MCk+MDowKXtrW2M+PjJdPW1bMTE0NTYrKGtbZz4+Ml08PDEpPj4xXTtwPWtbYz4+Ml18MDtyPW87cmV0dXJuIHB8MH1rW2M+PjJdPW1bMTU1MDYrKGtbaD4+Ml08PDEpPj4xXTtwPWtbYz4+Ml18MDtyPW87cmV0dXJuIHB8MH1mdW5jdGlvbiBBdihhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGw9MDtsPXI7cj1yKzE2fDA7ZT1sKzEyfDA7Zj1sKzh8MDtnPWwrNHwwO2g9bDtrW2U+PjJdPWE7a1tmPj4yXT1iO2tbZz4+Ml09YzthPWtbZT4+Ml18MDtrW2E+PjJdPShrW2E+PjJdfDApKzE2O2lmKChrW2tbZT4+Ml0+PjJdfDApPj4+MD49KChrW2U+PjJdfDApKzgrMTYwMHwwKT4+PjApe0R2KGtbZT4+Ml18MCk7cj1sO3JldHVybn1pZigoa1tmPj4yXXwwKT40NTUpa1tmPj4yXT0oa1tmPj4yXXwwKSszMzI7a1toPj4yXT1rW2tbZT4+Ml0+PjJdO2pba1toPj4yXT4+MV09a1tmPj4yXTtpWyhrW2g+PjJdfDApKzI+PjBdPWtbZz4+Ml07aD0oa1toPj4yXXwwKSs0fDA7a1toPj4yXT1rW2Q+PjJdO2tbaCs0Pj4yXT1rW2QrND4+Ml07cj1sO3JldHVybn1mdW5jdGlvbiBCdihhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wLGg9MCxuPTAsbz0wLHA9MCxxPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTAsRT0wLEY9MCxHPTAsSD0wLEk9MCxKPTAsSz0wLEw9MCxNPTAsTj0wLE89MCxQPTAsUT0wLFI9MCxTPTAsVD0wLFU9MCxWPTAsVz0wLFg9MCxZPTAsWj0wLF89MCwkPTAsYWE9MCxiYT0wLGNhPTAsZGE9MCxlYT0wLGZhPTA7ZmE9cjtyPXIrMjg4fDA7Yz1mYSsyODB8MDtUPWZhKzQwfDA7Uz1mYSszMnwwO1Y9ZmErMjR8MDtVPWZhKzE2fDA7Wj1mYSs4fDA7Uj1mYTskPWZhKzI3NnwwO2FhPWZhKzI3MnwwO2NhPWZhKzI2OHwwO2JhPWZhKzI2NHwwO2RhPWZhKzI2MHwwO2VhPWZhKzI1NnwwO189ZmErMjUyfDA7WD1mYSsyNDB8MDtQPWZhKzIyOHwwO1E9ZmErMjE2fDA7Zz1mYSsxOTJ8MDtuPWZhKzE4OHwwO0Q9ZmErMTg0fDA7dj1mYSsxODB8MDtzPWZhKzE3NnwwO1c9ZmErMTY4fDA7RT1mYSsxNjR8MDt0PWZhKzE2MHwwO3A9ZmErMTU2fDA7Rj1mYSsxNTJ8MDt1PWZhKzE0OHwwO3E9ZmErMTQ0fDA7QT1mYSsxNDB8MDtCPWZhKzEzNnwwO0k9ZmErMTMyfDA7Sj1mYSsxMjh8MDtMPWZhKzEyNHwwO0s9ZmErMTIwfDA7TT1mYSsxMTZ8MDtOPWZhKzExMnwwO089ZmErMTA4fDA7aD1mYSsxMDR8MDtZPWZhKzk2fDA7dz1mYSs5MnwwO3k9ZmErODh8MDtlPWZhKzg0fDA7ej1mYSs4MHwwO2Y9ZmErNzZ8MDt4PWZhKzcyfDA7Qz1mYSs2OHwwO0g9ZmErNjR8MDtHPWZhKzYwfDA7bz1mYSs1NnwwO2Q9ZmErNDh8MDtrWyQ+PjJdPWE7a1thYT4+Ml09YjtrW18+PjJdPWtbKGtbJD4+Ml18MCkrND4+Ml07a1tkYT4+Ml09a1trWyQ+PjJdPj4yXTtpZigobFsyNjQ4Nisoa1thYT4+Ml08PDEpKzE+PjBdfDApPT0wPyhrW2tbJD4+Ml0+PjJdfDApPj4+MD49KChrWyQ+PjJdfDApKzgrMTU4NHwwKT4+PjA6MCl7RHYoa1skPj4yXXwwKTtyPWZhO3JldHVybn1hOmRvIHN3aXRjaChrW2FhPj4yXXwwKXtjYXNlIDA6e2lbKGtbXz4+Ml18MCkrNDA5Pj4wXT0xO2JyZWFrfWNhc2UgMTp7aVsoa1tfPj4yXXwwKSs0MDk+PjBdPTI7YnJlYWt9Y2FzZSAyOntFdihrW18+PjJdfDApO2JyZWFrfWNhc2UgMzp7RnYoa1tfPj4yXXwwLGtbKGtbZGE+PjJdfDApKy0xNis0Pj4yXXwwKTticmVha31jYXNlIDQ6e2tbKGtbZGE+PjJdfDApKzE2KzQ+PjJdPTc7YnJlYWt9Y2FzZSA3OmNhc2UgNjpjYXNlIDU6e2tbKGtbZGE+PjJdfDApKzQ+PjJdPWxbKGtbZGE+PjJdfDApKzI+PjBdO2JyZWFrfWNhc2UgOTpjYXNlIDg6e0d2KGtbXz4+Ml18MCk7YnJlYWt9Y2FzZSAxMDp7SHYoa1tfPj4yXXwwKTticmVha31jYXNlIDExOntJdihrW18+PjJdfDAsMCwoa1tkYT4+Ml18MCkrNHwwKTticmVha31jYXNlIDEyOntJdihrW18+PjJdfDAsMSwoa1tkYT4+Ml18MCkrNHwwKTticmVha31jYXNlIDEzOntJdihrW18+PjJdfDAsMiwoa1tkYT4+Ml18MCkrNHwwKTticmVha31jYXNlIDE0OntKdihrW18+PjJdfDAsKGtbZGE+PjJdfDApKy0xNis0fDAsKGtbZGE+PjJdfDApKzR8MCxrWyhrW2RhPj4yXXwwKSstNjQrND4+Ml18MCwwLDAsa1soa1tkYT4+Ml18MCkrLTMyKzQ+PjJdfDApO2JyZWFrfWNhc2UgMTU6e0t2KGtbXz4+Ml18MCk7YnJlYWt9Y2FzZSAyMTU6Y2FzZSA5MDpjYXNlIDc2OmNhc2UgNjc6Y2FzZSA1NzpjYXNlIDQyOmNhc2UgMjI6Y2FzZSAxOTpjYXNlIDE2OntrWyhrW2RhPj4yXXwwKSsxNis0Pj4yXT0wO2JyZWFrfWNhc2UgMTc6e2tbKGtbZGE+PjJdfDApKy0zMis0Pj4yXT0xO2JyZWFrfWNhc2UgNDM6Y2FzZSAxODp7a1soa1tkYT4+Ml18MCkrND4+Ml09MTticmVha31jYXNlIDIwOntMdihrW18+PjJdfDAsKGtbZGE+PjJdfDApKy0zMis0fDAsKGtbZGE+PjJdfDApKy0xNis0fDAsa1soa1tkYT4+Ml18MCkrND4+Ml0mMjU1LDApO2JyZWFrfWNhc2UgMjE6e0x2KGtbXz4+Ml18MCwwLDAsMCxrWyhrW2RhPj4yXXwwKSs0Pj4yXXwwKTtwdihrW2tbXz4+Ml0+PjJdfDAsa1soa1tkYT4+Ml18MCkrND4+Ml18MCk7YnJlYWt9Y2FzZSAyMzp7aWYoKGtbKGtbZGE+PjJdfDApKzQrND4+Ml18MCk9PTU/KEpkKGtbKGtbZGE+PjJdfDApKzQ+PjJdfDAsMjQ3NDUsNSl8MCk9PTA6MCl7a1soa1tkYT4+Ml18MCkrLTE2KzQ+PjJdPTk2O2JyZWFrIGF9a1soa1tkYT4+Ml18MCkrLTE2KzQ+PjJdPTA7Xz1rW18+PjJdfDA7Wj1rWyhrW2RhPj4yXXwwKSs0Pj4yXXwwO2tbUj4+Ml09a1soa1tkYT4+Ml18MCkrNCs0Pj4yXTtrW1IrND4+Ml09WjtPaChfLDI3MTUwLFIpO2JyZWFrfWNhc2UgMjQ6e012KGtbXz4+Ml18MCwoa1tkYT4+Ml18MCkrLTE2KzR8MCwoa1tkYT4+Ml18MCkrNHwwKTticmVha31jYXNlIDk2OmNhc2UgNjA6Y2FzZSAyNTp7a1soa1tkYT4+Ml18MCkrMTYrNCs0Pj4yXT0wO2tbKGtbZGE+PjJdfDApKzE2KzQ+PjJdPTA7YnJlYWt9Y2FzZSAyNjp7a1soa1tkYT4+Ml18MCkrLTQ4KzQrND4+Ml09KGtbKGtbZGE+PjJdfDApKzQ+PjJdfDApKyhrWyhrW2RhPj4yXXwwKSs0KzQ+PjJdfDApLShrWyhrW2RhPj4yXXwwKSstNDgrND4+Ml18MCk7YnJlYWt9Y2FzZSAyNzp7a1soa1tkYT4+Ml18MCkrLTgwKzQrND4+Ml09KGtbKGtbZGE+PjJdfDApKzQ+PjJdfDApKyhrWyhrW2RhPj4yXXwwKSs0KzQ+PjJdfDApLShrWyhrW2RhPj4yXXwwKSstODArND4+Ml18MCk7YnJlYWt9Y2FzZSAyODp7a1soa1tkYT4+Ml18MCkrLTE2KzQrND4+Ml09KGtbKGtbZGE+PjJdfDApKzQrND4+Ml18MCkrKChrWyhrW2RhPj4yXXwwKSs0Pj4yXXwwKS0oa1soa1tkYT4+Ml18MCkrLTE2KzQ+PjJdfDApKTticmVha31jYXNlIDYyOmNhc2UgMjk6e189KGtbXz4+Ml18MCkrODR8MDtaPShrW2RhPj4yXXwwKSs0fDA7a1tfPj4yXT1rW1o+PjJdO2tbXys0Pj4yXT1rW1orND4+Ml07YnJlYWt9Y2FzZSAzMjpjYXNlIDMwOntOdihrW18+PjJdfDAsKGtbZGE+PjJdfDApKzR8MCk7YnJlYWt9Y2FzZSAzMTp7TnYoa1tfPj4yXXwwLChrW2RhPj4yXXwwKSstMTYrNHwwKTticmVha31jYXNlIDMzOntaPU92KGtbXz4+Ml18MCwxNTUsa1soa1tkYT4+Ml18MCkrND4+Ml18MCwwLDApfDA7a1tQPj4yXT1aO2tbUCs0Pj4yXT1rWyhrW2RhPj4yXXwwKSstMTYrND4+Ml07a1tQKzg+PjJdPWtbKGtbZGE+PjJdfDApKzQrOD4+Ml07TnYoa1tfPj4yXXwwLFApO2JyZWFrfWNhc2UgMzQ6e1o9a1tfPj4yXXwwO1k9KGtbZGE+PjJdfDApKzR8MDtrW2M+PjJdPWtbWT4+Ml07a1tjKzQ+PjJdPWtbWSs0Pj4yXTtQdihRLFosOTcsYyk7TnYoa1tfPj4yXXwwLFEpO2JyZWFrfWNhc2UgMzU6e1F2KGtbXz4+Ml18MCxrWyhrW2RhPj4yXXwwKSs0Pj4yXXwwKTticmVha31jYXNlIDM2OntSdihrW18+PjJdfDAsMCxrWyhrW2RhPj4yXXwwKSstMTYrND4+Ml18MCxrWyhrW2RhPj4yXXwwKSs0Pj4yXXwwLGtbKGtbZGE+PjJdfDApKy0zMis0Pj4yXXwwKTticmVha31jYXNlIDM3OntTdihrW18+PjJdfDAsMCwwLDAsMCxrWyhrW2RhPj4yXXwwKSs0Pj4yXXwwLDAsMCwwLDAsMSk7YnJlYWt9Y2FzZSAzODp7VHYoa1tfPj4yXXwwLGtbKGtbZGE+PjJdfDApKy0xNis0Pj4yXXwwKTticmVha31jYXNlIDM5OntVdihrW18+PjJdfDAsMCwoa1tkYT4+Ml18MCkrLTMyKzR8MCxrWyhrW2RhPj4yXXwwKSstMTYrND4+Ml18MCxrWyhrW2RhPj4yXXwwKSs0Pj4yXXwwKTticmVha31jYXNlIDQwOntWdihrW18+PjJdfDAsa1soa1tkYT4+Ml18MCkrND4+Ml18MCk7YnJlYWt9Y2FzZSA0MTp7V3Yoa1tfPj4yXXwwLChrW2RhPj4yXXwwKSs0fDApO2JyZWFrfWNhc2UgNDQ6e2tbKGtbZGE+PjJdfDApKzE2KzQ+PjJdPTA7YnJlYWt9Y2FzZSA0NTp7a1soa1tkYT4+Ml18MCkrLTE2KzQ+PjJdPWtbKGtbZGE+PjJdfDApKy0xNis0Pj4yXSZ+a1soa1tkYT4+Ml18MCkrNCs0Pj4yXXxrWyhrW2RhPj4yXXwwKSs0Pj4yXTticmVha31jYXNlIDQ2OntrWyhrW2RhPj4yXXwwKSstMTYrND4+Ml09MDtrWyhrW2RhPj4yXXwwKSstMTYrNCs0Pj4yXT0wO2JyZWFrfWNhc2UgNDc6e2tbKGtbZGE+PjJdfDApKy0zMis0Pj4yXT0wO2tbKGtbZGE+PjJdfDApKy0zMis0KzQ+PjJdPTA7YnJlYWt9Y2FzZSA0ODp7a1soa1tkYT4+Ml18MCkrLTMyKzQ+PjJdPWtbKGtbZGE+PjJdfDApKzQ+PjJdO2tbKGtbZGE+PjJdfDApKy0zMis0KzQ+PjJdPTI1NTticmVha31jYXNlIDQ5OntrWyhrW2RhPj4yXXwwKSstMzIrND4+Ml09a1soa1tkYT4+Ml18MCkrND4+Ml08PDg7a1soa1tkYT4+Ml18MCkrLTMyKzQrND4+Ml09NjUyODA7YnJlYWt9Y2FzZSA1MDp7a1soa1tkYT4+Ml18MCkrLTE2KzQ+PjJdPTc7YnJlYWt9Y2FzZSA1MTp7a1soa1tkYT4+Ml18MCkrLTE2KzQ+PjJdPTg7YnJlYWt9Y2FzZSA1Mjp7a1soa1tkYT4+Ml18MCkrND4+Ml09OTticmVha31jYXNlIDUzOntrWyhrW2RhPj4yXXwwKSs0Pj4yXT02O2JyZWFrfWNhc2UgNTQ6e2tbKGtbZGE+PjJdfDApKy0xNis0Pj4yXT0wO2JyZWFrfWNhc2UgNTU6e2tbKGtbZGE+PjJdfDApKy0zMis0Pj4yXT0wO2JyZWFrfWNhc2UgMTQ0OmNhc2UgNzE6Y2FzZSA1Njp7a1soa1tkYT4+Ml18MCkrLTE2KzQ+PjJdPWtbKGtbZGE+PjJdfDApKzQ+PjJdO2JyZWFrfWNhc2UgMjE2OmNhc2UgMTkwOmNhc2UgMTg3OmNhc2UgNzU6Y2FzZSA1ODp7a1soa1tkYT4+Ml18MCkrLTE2KzQ+PjJdPTE7YnJlYWt9Y2FzZSA1OTp7a1soa1tkYT4+Ml18MCkrLTE2KzQ+PjJdPTA7YnJlYWt9Y2FzZSA2MTp7a1soa1tfPj4yXXwwKSs4NCs0Pj4yXT0wO2JyZWFrfWNhc2UgNjM6e1J2KGtbXz4+Ml18MCxrWyhrW2RhPj4yXXwwKSstNDgrND4+Ml18MCxrWyhrW2RhPj4yXXwwKSs0Pj4yXXwwLGtbKGtbZGE+PjJdfDApKy0zMis0Pj4yXXwwLDApO2JyZWFrfWNhc2UgNjQ6e1N2KGtbXz4+Ml18MCwwLDAsMCxrWyhrW2RhPj4yXXwwKSstMzIrND4+Ml18MCxrWyhrW2RhPj4yXXwwKSs0Pj4yXXwwLDAsMCwwLDAsMSk7YnJlYWt9Y2FzZSA2NTp7VHYoa1tfPj4yXXwwLGtbKGtbZGE+PjJdfDApKy0zMis0Pj4yXXwwKTticmVha31jYXNlIDY2OntVdihrW18+PjJdfDAsa1soa1tkYT4+Ml18MCkrLTk2KzQ+PjJdfDAsKGtbZGE+PjJdfDApKy00OCs0fDAsa1soa1tkYT4+Ml18MCkrLTMyKzQ+PjJdfDAsa1soa1tkYT4+Ml18MCkrLTE2KzQ+PjJdfDApO1Z2KGtbXz4+Ml18MCxrWyhrW2RhPj4yXXwwKSs0Pj4yXXwwKTticmVha31jYXNlIDcwOmNhc2UgNjg6e2tbKGtbZGE+PjJdfDApKzE2KzQ+PjJdPTEwO2JyZWFrfWNhc2UgNjk6e2tbKGtbZGE+PjJdfDApKy0zMis0Pj4yXT1rWyhrW2RhPj4yXXwwKSs0Pj4yXTticmVha31jYXNlIDcyOntrWyhrW2RhPj4yXXwwKSs0Pj4yXT00O2JyZWFrfWNhc2UgMTQ1OmNhc2UgNzM6e2tbKGtbZGE+PjJdfDApKzQ+PjJdPTU7YnJlYWt9Y2FzZSA3NDp7WHYoa1tfPj4yXXwwLGtbKGtbZGE+PjJdfDApKzQ+PjJdfDAsMCxrWyhrW2RhPj4yXXwwKSstMTYrND4+Ml18MCk7YnJlYWt9Y2FzZSA3Nzp7WXYoa1tfPj4yXXwwLChrW2RhPj4yXXwwKSstMTI4KzR8MCwoa1tkYT4+Ml18MCkrLTY0KzR8MCwoa1tkYT4+Ml18MCkrLTQ4KzR8MCxrWyhrW2RhPj4yXXwwKSstMzIrND4+Ml18MCxrWyhrW2RhPj4yXXwwKSs0Pj4yXXwwLGtbKGtbZGE+PjJdfDApKy0xMTIrND4+Ml18MCxrWyhrW2RhPj4yXXwwKSstODArND4+Ml18MCk7YnJlYWt9Y2FzZSA3ODp7WHYoa1tfPj4yXXwwLGtbKGtbZGE+PjJdfDApKzQ+PjJdfDAsMSxrWyhrW2RhPj4yXXwwKSstMTYrND4+Ml18MCk7YnJlYWt9Y2FzZSA3OTp7a1tnPj4yXT1rWzEwNjNdO2tbZys0Pj4yXT1rWzEwNjRdO2tbZys4Pj4yXT1rWzEwNjVdO2tbZysxMj4+Ml09a1sxMDY2XTtrW2crMTY+PjJdPWtbMTA2N107a1tnKzIwPj4yXT1rWzEwNjhdO1p2KGtbXz4+Ml18MCxrWyhrW2RhPj4yXXwwKSs0Pj4yXXwwLGcpfDA7cHYoa1trW18+PjJdPj4yXXwwLGtbKGtbZGE+PjJdfDApKzQ+PjJdfDApO2JyZWFrfWNhc2UgODA6e2tbbj4+Ml09a1soa1tkYT4+Ml18MCkrND4+Ml07aWYoa1tuPj4yXXwwKXtrWyhrW24+PjJdfDApKzY0Pj4yXT1rWyhrW2RhPj4yXXwwKSstMTYrND4+Ml07X3Yoa1tfPj4yXXwwLGtbbj4+Ml18MCl9ZWxzZSBudihrW2tbXz4+Ml0+PjJdfDAsa1soa1tkYT4+Ml18MCkrLTE2KzQ+PjJdfDApO2tbKGtbZGE+PjJdfDApKy0xNis0Pj4yXT1rW24+PjJdO2JyZWFrfWNhc2UgODE6e2tbRD4+Ml09a1soa1tkYT4+Ml18MCkrND4+Ml07a1t2Pj4yXT1rWyhrW2RhPj4yXXwwKSstMzIrND4+Ml07aWYoKGtbRD4+Ml18MCkhPTA/KGtbKGtbRD4+Ml18MCkrNDg+PjJdfDApIT0wOjApe2tbVys0Pj4yXT0wO192KGtbXz4+Ml18MCxrW0Q+PjJdfDApO1o9JHYoa1tfPj4yXXwwLDAsMCwwLFcsa1tEPj4yXXwwLDAsMCl8MDtrW3M+PjJdPVo7Wj1hdyhrW18+PjJdfDAsMCxrW3M+PjJdfDAsMCwwLDAsMCwwLDAsMCl8MDtrW0Q+PjJdPVp9aWYoa1tEPj4yXXwwKXtpWyhrW0Q+PjJdfDApKzQ+PjBdPWtbKGtbZGE+PjJdfDApKy0xNis0Pj4yXTtrWyhrW0Q+PjJdfDApKzQ4Pj4yXT1rW3Y+PjJdO2lmKGtbdj4+Ml18MCl7Wj0oa1t2Pj4yXXwwKSs4fDA7a1taPj4yXT1rW1o+PjJdJi0xMDI1fVo9KGtbRD4+Ml18MCkrOHwwO2tbWj4+Ml09a1taPj4yXSYtMTAyNTtpZigoa1soa1tkYT4+Ml18MCkrLTE2KzQ+PjJdfDApIT0xMTYpaVsoa1tfPj4yXXwwKSsyMj4+MF09MX1lbHNlIHB2KGtba1tfPj4yXT4+Ml18MCxrW3Y+PjJdfDApO2tbKGtbZGE+PjJdfDApKy0zMis0Pj4yXT1rW0Q+PjJdO2JyZWFrfWNhc2UgODQ6Y2FzZSA4Mjp7a1soa1tkYT4+Ml18MCkrND4+Ml09bFsoa1tkYT4+Ml18MCkrMj4+MF07YnJlYWt9Y2FzZSA4Mzp7a1soa1tkYT4+Ml18MCkrLTE2KzQ+PjJdPTExNjticmVha31jYXNlIDg1OntfPWF3KGtbXz4+Ml18MCxrWyhrW2RhPj4yXXwwKSstOTYrND4+Ml18MCxrWyhrW2RhPj4yXXwwKSstODArND4+Ml18MCxrWyhrW2RhPj4yXXwwKSstNjQrND4+Ml18MCxrWyhrW2RhPj4yXXwwKSstNDgrND4+Ml18MCxrWyhrW2RhPj4yXXwwKSstMzIrND4+Ml18MCxrWyhrW2RhPj4yXXwwKSstMTYrND4+Ml18MCxrWyhrW2RhPj4yXXwwKSstMTEyKzQ+PjJdfDAsa1soa1tkYT4+Ml18MCkrND4+Ml18MCxrWyhrW2RhPj4yXXwwKSs0KzQ+PjJdfDApfDA7a1soa1tkYT4+Ml18MCkrLTEyOCs0Pj4yXT1fO2JyZWFrfWNhc2UgODY6e189YXcoa1tfPj4yXXwwLGtbKGtbZGE+PjJdfDApKy0xNis0Pj4yXXwwLDAsMCwwLDAsMCw1MTIsMCwwKXwwO2tbKGtbZGE+PjJdfDApKy00OCs0Pj4yXT1fO2JyZWFrfWNhc2UgODc6e2tbdD4+Ml09a1soa1tkYT4+Ml18MCkrLTY0KzQ+PjJdO189YXcoa1tfPj4yXXwwLGtbKGtbZGE+PjJdfDApKy0xNis0Pj4yXXwwLDAsMCwwLDAsMCwxNTM2LDAsMCl8MDtrW0U+PjJdPV87aWYoa1t0Pj4yXXwwKXtfPShrW3Q+PjJdfDApKzh8MDtrW18+PjJdPWtbXz4+Ml0mLTEwMjV9aWYoa1tFPj4yXXwwKXtpWyhrW0U+PjJdfDApKzQ+PjBdPTExNjtrWyhrW0U+PjJdfDApKzQ4Pj4yXT1rW3Q+PjJdO2tbKGtbZGE+PjJdfDApKy02NCs0Pj4yXT1rW0U+PjJdO2JyZWFrIGF9ZWxzZXtrWyhrW2RhPj4yXXwwKSstNjQrND4+Ml09a1t0Pj4yXTticmVhayBhfX1jYXNlIDg4OntrWyhrW2RhPj4yXXwwKSs0Pj4yXT0xO2JyZWFrfWNhc2UgODk6e2tbKGtbZGE+PjJdfDApKzQ+PjJdPTI7YnJlYWt9Y2FzZSAyMTE6Y2FzZSAyMDY6Y2FzZSAyMDM6Y2FzZSAxMjY6Y2FzZSAxMTk6Y2FzZSA5MTp7a1soa1tkYT4+Ml18MCkrMTYrND4+Ml09MDticmVha31jYXNlIDkyOntaPWJ3KGtbXz4+Ml18MCxrWyhrW2RhPj4yXXwwKSstMzIrND4+Ml18MCxrWyhrW2RhPj4yXXwwKSstMTYrND4+Ml18MCl8MDtrWyhrW2RhPj4yXXwwKSstMzIrND4+Ml09WjtpZigoa1soa1tkYT4+Ml18MCkrNCs0Pj4yXXwwKT4+PjA+MCljdyhrW18+PjJdfDAsa1soa1tkYT4+Ml18MCkrLTMyKzQ+PjJdfDAsKGtbZGE+PjJdfDApKzR8MCwxKTtkdyhrW18+PjJdfDAsa1soa1tkYT4+Ml18MCkrLTMyKzQ+PjJdfDAsKGtbZGE+PjJdfDApKy0xNis0fDApO2JyZWFrfWNhc2UgOTM6e1o9ZXcoa1trW18+PjJdPj4yXXwwLDE2MCwwKXwwO2tbcD4+Ml09WjtfPWJ3KGtbXz4+Ml18MCxrWyhrW2RhPj4yXXwwKSstMTYrND4+Ml18MCxrW3A+PjJdfDApfDA7a1soa1tkYT4+Ml18MCkrLTE2KzQ+PjJdPV87YnJlYWt9Y2FzZSA5NDp7Wj1PdihrW18+PjJdfDAsMTYwLDAsMCwwKXwwO2tbRj4+Ml09WjtaPU92KGtbXz4+Ml18MCw1NSwwLDAsKGtbZGE+PjJdfDApKy0zMis0fDApfDA7a1t1Pj4yXT1aO1o9T3Yoa1tfPj4yXXwwLDEyMixrW3U+PjJdfDAsa1tGPj4yXXwwLDApfDA7a1txPj4yXT1aO189Yncoa1tfPj4yXXwwLGtbKGtbZGE+PjJdfDApKy00OCs0Pj4yXXwwLGtbcT4+Ml18MCl8MDtrWyhrW2RhPj4yXXwwKSstNDgrND4+Ml09XzticmVha31jYXNlIDIyNjpjYXNlIDIyNTpjYXNlIDEwNjpjYXNlIDk1OntfPShrW2RhPj4yXXwwKSstMTYrNHwwO1o9KGtbZGE+PjJdfDApKzR8MDtrW18+PjJdPWtbWj4+Ml07a1tfKzQ+PjJdPWtbWis0Pj4yXTticmVha31jYXNlIDk3OntfPUNoKGtba1tfPj4yXT4+Ml18MCw4MCwwKXwwO2tbKGtbZGE+PjJdfDApKzE2KzQ+PjJdPV87YnJlYWt9Y2FzZSA5ODp7a1soa1tkYT4+Ml18MCkrLTE2KzQ+PjJdPWtbKGtbZGE+PjJdfDApKzQ+PjJdO2Z3KGtbKGtbZGE+PjJdfDApKy0xNis0Pj4yXXwwKTticmVha31jYXNlIDk5OntpZigoa1soa1tkYT4+Ml18MCkrLTE2KzQ+PjJdfDApIT0wPyhrW2tbKGtbZGE+PjJdfDApKy0xNis0Pj4yXT4+Ml18MCk+MDowKWlbKGtbKGtbZGE+PjJdfDApKy0xNis0Pj4yXXwwKSs4KygoKGtba1soa1tkYT4+Ml18MCkrLTE2KzQ+PjJdPj4yXXwwKS0xfDApKjcyfDApKzM2Pj4wXT1rWyhrW2RhPj4yXXwwKSs0Pj4yXTticmVha31jYXNlIDEwMDp7a1soa1tkYT4+Ml18MCkrMTYrND4+Ml09MDticmVha31jYXNlIDEwMTp7Wj0kdihrW18+PjJdfDAsa1soa1tkYT4+Ml18MCkrLTk2KzQ+PjJdfDAsKGtbZGE+PjJdfDApKy04MCs0fDAsKGtbZGE+PjJdfDApKy02NCs0fDAsKGtbZGE+PjJdfDApKy00OCs0fDAsMCxrWyhrW2RhPj4yXXwwKSstMTYrND4+Ml18MCxrWyhrW2RhPj4yXXwwKSs0Pj4yXXwwKXwwO2tbKGtbZGE+PjJdfDApKy05Nis0Pj4yXT1aO2d3KGtbXz4+Ml18MCxrWyhrW2RhPj4yXXwwKSstOTYrND4+Ml18MCwoa1tkYT4+Ml18MCkrLTMyKzR8MCk7YnJlYWt9Y2FzZSAxMDI6e1o9JHYoa1tfPj4yXXwwLGtbKGtbZGE+PjJdfDApKy0xMjgrND4+Ml18MCwoa1tkYT4+Ml18MCkrLTExMis0fDAsKGtbZGE+PjJdfDApKy05Nis0fDAsKGtbZGE+PjJdfDApKy0zMis0fDAsMCxrWyhrW2RhPj4yXXwwKSstMTYrND4+Ml18MCxrWyhrW2RhPj4yXXwwKSs0Pj4yXXwwKXwwO2tbKGtbZGE+PjJdfDApKy0xMjgrND4+Ml09WjtodyhrW18+PjJdfDAsa1soa1tkYT4+Ml18MCkrLTEyOCs0Pj4yXXwwLGtbKGtbZGE+PjJdfDApKy02NCs0Pj4yXXwwKTticmVha31jYXNlIDEwMzp7Xz0kdihrW18+PjJdfDAsa1soa1tkYT4+Ml18MCkrLTk2KzQ+PjJdfDAsMCwwLChrW2RhPj4yXXwwKSstMzIrNHwwLGtbKGtbZGE+PjJdfDApKy02NCs0Pj4yXXwwLGtbKGtbZGE+PjJdfDApKy0xNis0Pj4yXXwwLGtbKGtbZGE+PjJdfDApKzQ+PjJdfDApfDA7a1soa1tkYT4+Ml18MCkrLTk2KzQ+PjJdPV87YnJlYWt9Y2FzZSAxMDQ6e2lmKCgoKGtbKGtbZGE+PjJdfDApKy05Nis0Pj4yXXwwKT09MD8oa1soa1tkYT4+Ml18MCkrLTMyKzQrND4+Ml18MCk9PTA6MCk/KGtbKGtbZGE+PjJdfDApKy0xNis0Pj4yXXwwKT09MDowKT8oa1soa1tkYT4+Ml18MCkrND4+Ml18MCk9PTA6MCl7a1soa1tkYT4+Ml18MCkrLTk2KzQ+PjJdPWtbKGtbZGE+PjJdfDApKy02NCs0Pj4yXTticmVhayBhfWlmKChrW2tbKGtbZGE+PjJdfDApKy02NCs0Pj4yXT4+Ml18MCkhPTEpe2Z3KGtbKGtbZGE+PjJdfDApKy02NCs0Pj4yXXwwKTtaPWF3KGtbXz4+Ml18MCwwLGtbKGtbZGE+PjJdfDApKy02NCs0Pj4yXXwwLDAsMCwwLDAsMjA0OCwwLDApfDA7a1tJPj4yXT1aO189JHYoa1tfPj4yXXwwLGtbKGtbZGE+PjJdfDApKy05Nis0Pj4yXXwwLDAsMCwoa1tkYT4+Ml18MCkrLTMyKzR8MCxrW0k+PjJdfDAsa1soa1tkYT4+Ml18MCkrLTE2KzQ+PjJdfDAsa1soa1tkYT4+Ml18MCkrND4+Ml18MCl8MDtrWyhrW2RhPj4yXXwwKSstOTYrND4+Ml09XzticmVhayBhfVo9JHYoa1tfPj4yXXwwLGtbKGtbZGE+PjJdfDApKy05Nis0Pj4yXXwwLDAsMCwoa1tkYT4+Ml18MCkrLTMyKzR8MCwwLGtbKGtbZGE+PjJdfDApKy0xNis0Pj4yXXwwLGtbKGtbZGE+PjJdfDApKzQ+PjJdfDApfDA7a1soa1tkYT4+Ml18MCkrLTk2KzQ+PjJdPVo7aWYoa1soa1tkYT4+Ml18MCkrLTk2KzQ+PjJdfDApe2tbQT4+Ml09KGtbKGtbZGE+PjJdfDApKy05Nis0Pj4yXXwwKSs4KygoKGtba1soa1tkYT4+Ml18MCkrLTk2KzQ+PjJdPj4yXXwwKS0xfDApKjcyfDApO2tbQj4+Ml09KGtbKGtbZGE+PjJdfDApKy02NCs0Pj4yXXwwKSs4O2tbKGtbQT4+Ml18MCkrOD4+Ml09a1soa1tCPj4yXXwwKSs4Pj4yXTtrWyhrW0E+PjJdfDApKzQ+PjJdPWtbKGtbQj4+Ml18MCkrND4+Ml07a1soa1tBPj4yXXwwKSsyMD4+Ml09a1soa1tCPj4yXXwwKSsyMD4+Ml07a1soa1tCPj4yXXwwKSs0Pj4yXT0wO2tbKGtbQj4+Ml18MCkrOD4+Ml09MDtrWyhrW0I+PjJdfDApKzIwPj4yXT0wfXJ2KGtba1tfPj4yXT4+Ml18MCxrWyhrW2RhPj4yXXwwKSstNjQrND4+Ml18MCk7YnJlYWt9Y2FzZSAxMTQ6Y2FzZSAxMDU6e2tbKGtbZGE+PjJdfDApKzE2KzQ+PjJdPTA7a1soa1tkYT4+Ml18MCkrMTYrNCs0Pj4yXT0wO2JyZWFrfWNhc2UgMTA3OntfPWl3KGtba1tfPj4yXT4+Ml18MCwwLChrW2RhPj4yXXwwKSstMTYrNHwwLChrW2RhPj4yXXwwKSs0fDApfDA7a1soa1tkYT4+Ml18MCkrLTE2KzQ+PjJdPV87YnJlYWt9Y2FzZSAxMDg6e2tbKGtbZGE+PjJdfDApKzQ+PjJdPTE7YnJlYWt9Y2FzZSAxMDk6e189ancoa1tfPj4yXXwwLChrW2RhPj4yXXwwKSstMTYrNHwwLDAsMCl8MDtrWyhrW2RhPj4yXXwwKSstMTYrND4+Ml09XzticmVha31jYXNlIDExMDp7Xz1qdyhrW18+PjJdfDAsKGtbZGE+PjJdfDApKy0zMis0fDAsKGtbZGE+PjJdfDApKy0xNis0fDAsMCl8MDtrWyhrW2RhPj4yXXwwKSstMzIrND4+Ml09XzticmVha31jYXNlIDExMTp7Xz1qdyhrW18+PjJdfDAsKGtbZGE+PjJdfDApKy00OCs0fDAsKGtbZGE+PjJdfDApKy0zMis0fDAsKGtbZGE+PjJdfDApKy0xNis0fDApfDA7a1soa1tkYT4+Ml18MCkrLTQ4KzQ+PjJdPV87YnJlYWt9Y2FzZSAxOTk6Y2FzZSAxMzY6Y2FzZSAxMjk6Y2FzZSAxMTI6e2tbKGtbZGE+PjJdfDApKy0xNis0Pj4yXT1rWyhrW2RhPj4yXXwwKSs0Pj4yXTticmVha31jYXNlIDIwMjpjYXNlIDIwMDpjYXNlIDEzNTpjYXNlIDEyODpjYXNlIDExMzp7a1soa1tkYT4+Ml18MCkrMTYrND4+Ml09MDticmVha31jYXNlIDExNTp7Xz0oa1tkYT4+Ml18MCkrLTMyKzR8MDtaPShrW2RhPj4yXXwwKSs0fDA7a1tfPj4yXT1rW1o+PjJdO2tbXys0Pj4yXT1rW1orND4+Ml07YnJlYWt9Y2FzZSAxMTY6e2tbKGtbZGE+PjJdfDApKy0xNis0Pj4yXT0wO2tbKGtbZGE+PjJdfDApKy0xNis0KzQ+PjJdPTE7YnJlYWt9Y2FzZSAxMTc6e2tbKGtbZGE+PjJdfDApKy00OCs0Pj4yXT1rWyhrW2RhPj4yXXwwKSstMTYrND4+Ml07YnJlYWt9Y2FzZSAxNDY6Y2FzZSAxMTg6e2tbKGtbZGE+PjJdfDApKzE2KzQ+PjJdPTA7YnJlYWt9Y2FzZSAxMjc6Y2FzZSAxMjA6e2tbKGtbZGE+PjJdfDApKy0zMis0Pj4yXT1rWyhrW2RhPj4yXXwwKSs0Pj4yXTticmVha31jYXNlIDEyMTp7Xz1idyhrW18+PjJdfDAsa1soa1tkYT4+Ml18MCkrLTQ4KzQ+PjJdfDAsa1soa1tkYT4+Ml18MCkrLTE2KzQ+PjJdfDApfDA7a1soa1tkYT4+Ml18MCkrLTQ4KzQ+PjJdPV87a3coa1soa1tkYT4+Ml18MCkrLTQ4KzQ+PjJdfDAsa1soa1tkYT4+Ml18MCkrND4+Ml18MCk7YnJlYWt9Y2FzZSAxMjI6e189Yncoa1tfPj4yXXwwLDAsa1soa1tkYT4+Ml18MCkrLTE2KzQ+PjJdfDApfDA7a1soa1tkYT4+Ml18MCkrLTE2KzQ+PjJdPV87a3coa1soa1tkYT4+Ml18MCkrLTE2KzQ+PjJdfDAsa1soa1tkYT4+Ml18MCkrND4+Ml18MCk7YnJlYWt9Y2FzZSAxMjM6e2tbKGtbZGE+PjJdfDApKzQ+PjJdPTA7YnJlYWt9Y2FzZSAxMjQ6e2tbKGtbZGE+PjJdfDApKzQ+PjJdPTE7YnJlYWt9Y2FzZSAxMjU6e2tbKGtbZGE+PjJdfDApKzE2KzQ+PjJdPS0xO2JyZWFrfWNhc2UgMTMwOntrWyhrW2RhPj4yXXwwKSsxNis0Pj4yXT0wO2tbKGtbZGE+PjJdfDApKzE2KzQrND4+Ml09MDticmVha31jYXNlIDEzMTp7a1soa1tkYT4+Ml18MCkrLTE2KzQ+PjJdPWtbKGtbZGE+PjJdfDApKzQ+PjJdO2tbKGtbZGE+PjJdfDApKy0xNis0KzQ+PjJdPTA7YnJlYWt9Y2FzZSAxMzI6e2tbKGtbZGE+PjJdfDApKy00OCs0Pj4yXT1rWyhrW2RhPj4yXXwwKSstMzIrND4+Ml07a1soa1tkYT4+Ml18MCkrLTQ4KzQrND4+Ml09a1soa1tkYT4+Ml18MCkrND4+Ml07YnJlYWt9Y2FzZSAxMzM6e2tbKGtbZGE+PjJdfDApKy00OCs0KzQ+PjJdPWtbKGtbZGE+PjJdfDApKy0zMis0Pj4yXTtrWyhrW2RhPj4yXXwwKSstNDgrND4+Ml09a1soa1tkYT4+Ml18MCkrND4+Ml07YnJlYWt9Y2FzZSAxMzQ6e2x3KGtbXz4+Ml18MCxrWyhrW2RhPj4yXXwwKSstODArND4+Ml18MCwxKTtndyhrW18+PjJdfDAsa1soa1tkYT4+Ml18MCkrLTMyKzQ+PjJdfDAsKGtbZGE+PjJdfDApKy0xNis0fDApO213KGtbXz4+Ml18MCxrWyhrW2RhPj4yXXwwKSstMzIrND4+Ml18MCxrWyhrW2RhPj4yXXwwKSs0Pj4yXXwwKTticmVha31jYXNlIDEzNzp7bHcoa1tfPj4yXXwwLGtbKGtbZGE+PjJdfDApKy0xMTIrND4+Ml18MCwxKTtndyhrW18+PjJdfDAsa1soa1tkYT4+Ml18MCkrLTY0KzQ+PjJdfDAsKGtbZGE+PjJdfDApKy00OCs0fDApO253KGtbXz4+Ml18MCxrWyhrW2RhPj4yXXwwKSstMTYrND4+Ml18MCwyNzE3Nyk7b3coa1tfPj4yXXwwLGtbKGtbZGE+PjJdfDApKy02NCs0Pj4yXXwwLGtbKGtbZGE+PjJdfDApKy0xNis0Pj4yXXwwLGtbKGtbZGE+PjJdfDApKzQ+PjJdfDAsa1soa1tkYT4+Ml18MCkrLTgwKzQ+PjJdfDApO2JyZWFrfWNhc2UgMTM4OntaPWJ3KGtbXz4+Ml18MCxrWyhrW2RhPj4yXXwwKSstNjQrND4+Ml18MCxrWyhrW2RhPj4yXXwwKSs0Pj4yXXwwKXwwO2tbKGtbZGE+PjJdfDApKy02NCs0Pj4yXT1aO2N3KGtbXz4+Ml18MCxrWyhrW2RhPj4yXXwwKSstNjQrND4+Ml18MCwoa1tkYT4+Ml18MCkrLTMyKzR8MCwxKTticmVha31jYXNlIDEzOTp7Xz1wdyhrW18+PjJdfDAsa1soa1tkYT4+Ml18MCkrLTk2KzQ+PjJdfDAsa1soa1tkYT4+Ml18MCkrLTQ4KzQ+PjJdfDAsa1soa1tkYT4+Ml18MCkrND4+Ml18MCl8MDtrWyhrW2RhPj4yXXwwKSstOTYrND4+Ml09XzticmVha31jYXNlIDE0MDp7Wj1idyhrW18+PjJdfDAsMCxrWyhrW2RhPj4yXXwwKSs0Pj4yXXwwKXwwO2tbWD4+Ml09WjtjdyhrW18+PjJdfDAsa1tYPj4yXXwwLChrW2RhPj4yXXwwKSstMzIrNHwwLDEpO2tbKGtbZGE+PjJdfDApKy0zMis0Pj4yXT1rW1g+PjJdO2JyZWFrfWNhc2UgMTQxOntfPXB3KGtbXz4+Ml18MCwwLGtbKGtbZGE+PjJdfDApKy00OCs0Pj4yXXwwLGtbKGtbZGE+PjJdfDApKzQ+PjJdfDApfDA7a1soa1tkYT4+Ml18MCkrLTY0KzQ+PjJdPV87YnJlYWt9Y2FzZSAxNDI6e2x3KGtbXz4+Ml18MCxrWyhrW2RhPj4yXXwwKSstODArND4+Ml18MCwxKTtxdyhrW18+PjJdfDAsa1soa1tkYT4+Ml18MCkrLTMyKzQ+PjJdfDAsa1soa1tkYT4+Ml18MCkrND4+Ml18MCxrWyhrW2RhPj4yXXwwKSstMTYrND4+Ml18MCxrWyhrW2RhPj4yXXwwKSstNjQrND4+Ml18MCk7YnJlYWt9Y2FzZSAxNDM6e2x3KGtbXz4+Ml18MCxrWyhrW2RhPj4yXXwwKSstOTYrND4+Ml18MCwxKTtxdyhrW18+PjJdfDAsa1soa1tkYT4+Ml18MCkrLTQ4KzQ+PjJdfDAsMCxrWyhrW2RhPj4yXXwwKSstMzIrND4+Ml18MCxrWyhrW2RhPj4yXXwwKSstODArND4+Ml18MCk7YnJlYWt9Y2FzZSAxNDc6e2tbKGtbZGE+PjJdfDApKy0zMis0Pj4yXT1rWyhrW2RhPj4yXXwwKSstMTYrND4+Ml07YnJlYWt9Y2FzZSAxNDg6e189cncoa1trW18+PjJdPj4yXXwwLGtbKGtbZGE+PjJdfDApKy0zMis0Pj4yXXwwLChrW2RhPj4yXXwwKSs0fDApfDA7a1soa1tkYT4+Ml18MCkrLTMyKzQ+PjJdPV87YnJlYWt9Y2FzZSAxNDk6e189cncoa1trW18+PjJdPj4yXXwwLDAsKGtbZGE+PjJdfDApKzR8MCl8MDtrWyhrW2RhPj4yXXwwKSs0Pj4yXT1fO2JyZWFrfWNhc2UgMTUwOntzdygoa1tkYT4+Ml18MCkrLTMyKzR8MCwoa1tkYT4+Ml18MCkrLTMyKzR8MCwoa1tkYT4+Ml18MCkrNHwwKTtrWyhrW2RhPj4yXXwwKSstMzIrND4+Ml09a1soa1tkYT4+Ml18MCkrLTE2KzQ+PjJdO2JyZWFrfWNhc2UgMTU3OmNhc2UgMTU2OmNhc2UgMTUxOntZPShrW2RhPj4yXXwwKSs0fDA7Wj1rW18+PjJdfDA7Xz1sWyhrW2RhPj4yXXwwKSsyPj4wXXwwO2I9KGtbZGE+PjJdfDApKzR8MDtrW2M+PjJdPWtbYj4+Ml07a1tjKzQ+PjJdPWtbYis0Pj4yXTtQdihZLFosXyxjKTticmVha31jYXNlIDE1MzpjYXNlIDE1Mjp7Wj0oa1tkYT4+Ml18MCkrNHwwO189a1tfPj4yXXwwO1k9KGtbZGE+PjJdfDApKzR8MDtrW2M+PjJdPWtbWT4+Ml07a1tjKzQ+PjJdPWtbWSs0Pj4yXTtQdihaLF8sNTUsYyk7YnJlYWt9Y2FzZSAxNTQ6e1o9dHcoa1trW18+PjJdPj4yXXwwLDU1LChrW2RhPj4yXXwwKSstMzIrNHwwLDEpfDA7a1tKPj4yXT1aO1o9dHcoa1trW18+PjJdPj4yXXwwLDU1LChrW2RhPj4yXXwwKSs0fDAsMSl8MDtrW0w+PjJdPVo7c3coKGtbZGE+PjJdfDApKy0zMis0fDAsKGtbZGE+PjJdfDApKy0zMis0fDAsKGtbZGE+PjJdfDApKzR8MCk7Xz1PdihrW18+PjJdfDAsMTIyLGtbSj4+Ml18MCxrW0w+PjJdfDAsMCl8MDtrWyhrW2RhPj4yXXwwKSstMzIrND4+Ml09XzticmVha31jYXNlIDE1NTp7Wj10dyhrW2tbXz4+Ml0+PjJdfDAsNTUsKGtbZGE+PjJdfDApKy02NCs0fDAsMSl8MDtrW0s+PjJdPVo7Wj10dyhrW2tbXz4+Ml0+PjJdfDAsNTUsKGtbZGE+PjJdfDApKy0zMis0fDAsMSl8MDtrW00+PjJdPVo7Wj10dyhrW2tbXz4+Ml0+PjJdfDAsNTUsKGtbZGE+PjJdfDApKzR8MCwxKXwwO2tbTj4+Ml09WjtaPU92KGtbXz4+Ml18MCwxMjIsa1tNPj4yXXwwLGtbTj4+Ml18MCwwKXwwO2tbTz4+Ml09Wjtzdygoa1tkYT4+Ml18MCkrLTY0KzR8MCwoa1tkYT4+Ml18MCkrLTY0KzR8MCwoa1tkYT4+Ml18MCkrNHwwKTtfPU92KGtbXz4+Ml18MCwxMjIsa1tLPj4yXXwwLGtbTz4+Ml18MCwwKXwwO2tbKGtbZGE+PjJdfDApKy02NCs0Pj4yXT1fO2JyZWFrfWNhc2UgMTU4OntfPXR3KGtba1tfPj4yXT4+Ml18MCwxMzQsKGtbZGE+PjJdfDApKzR8MCwxKXwwO2tbWD4+Ml09XztrW1grND4+Ml09a1soa1tkYT4+Ml18MCkrND4+Ml07a1tYKzg+PjJdPShrWyhrW2RhPj4yXXwwKSs0Pj4yXXwwKSsoa1soa1tkYT4+Ml18MCkrNCs0Pj4yXXwwKTtpZihrW1g+PjJdfDApe189KGtbWD4+Ml18MCkrNHwwO2tbXz4+Ml09a1tfPj4yXXw4Mzg4NjA4fV89KGtbZGE+PjJdfDApKzR8MDtrW18+PjJdPWtbWD4+Ml07a1tfKzQ+PjJdPWtbWCs0Pj4yXTtrW18rOD4+Ml09a1tYKzg+PjJdO2JyZWFrfWNhc2UgMTU5OntpZigoaVtrWyhrW2RhPj4yXXwwKSs0Pj4yXT4+MF18MCk9PTM1PyhsWzE4NDAzKyhsWyhrWyhrW2RhPj4yXXwwKSs0Pj4yXXwwKSsxPj4wXXwwKT4+MF0mNHwwKSE9MDowKXtjPShrW2RhPj4yXXwwKSs0fDA7a1tZPj4yXT1rW2M+PjJdO2tbWSs0Pj4yXT1rW2MrND4+Ml07c3coKGtbZGE+PjJdfDApKzR8MCxZLFkpO2M9a1tfPj4yXXwwO2lmKCEobFsoa1tfPj4yXXwwKSsxOD4+MF18MCkpe2tbWj4+Ml09WTtPaChjLDI2NDYyLFopO2tbKGtbZGE+PjJdfDApKzQ+PjJdPTA7YnJlYWsgYX1fPU92KGMsMTU3LDAsMCwwKXwwO2tbKGtbZGE+PjJdfDApKzQ+PjJdPV87aWYoIShrWyhrW2RhPj4yXXwwKSs0Pj4yXXwwKSlicmVhayBhO19pKChrW1k+PjJdfDApKzF8MCwoa1soa1tkYT4+Ml18MCkrND4+Ml18MCkrMjh8MCl8MDticmVhayBhfWtbaD4+Ml09a1soa1tkYT4+Ml18MCkrNCs0Pj4yXTtZPShrW2RhPj4yXXwwKSs0fDA7Wj1rW18+PjJdfDA7Yj0oa1tkYT4+Ml18MCkrNHwwO2tbYz4+Ml09a1tiPj4yXTtrW2MrND4+Ml09a1tiKzQ+PjJdO1B2KFksWiwxMzUsYyk7dXcoa1tfPj4yXXwwLGtbKGtbZGE+PjJdfDApKzQ+PjJdfDAsa1toPj4yXXwwKTticmVha31jYXNlIDE2MDp7Xz12dyhrW18+PjJdfDAsa1soa1tkYT4+Ml18MCkrLTMyKzQ+PjJdfDAsKGtbZGE+PjJdfDApKzR8MCwxKXwwO2tbKGtbZGE+PjJdfDApKy0zMis0Pj4yXT1fO2tbKGtbZGE+PjJdfDApKy0zMis0Kzg+PjJdPShrWyhrW2RhPj4yXXwwKSs0Pj4yXXwwKSsoa1soa1tkYT4+Ml18MCkrNCs0Pj4yXXwwKTticmVha31jYXNlIDE2MTp7c3coKGtbZGE+PjJdfDApKy04MCs0fDAsKGtbZGE+PjJdfDApKy04MCs0fDAsKGtbZGE+PjJdfDApKzR8MCk7Xz1PdihrW18+PjJdfDAsNjYsa1soa1tkYT4+Ml18MCkrLTQ4KzQ+PjJdfDAsMCwoa1tkYT4+Ml18MCkrLTE2KzR8MCl8MDtrWyhrW2RhPj4yXXwwKSstODArND4+Ml09XzticmVha31jYXNlIDE2Mjp7aWYoKGtbKGtbZGE+PjJdfDApKy0xNis0Pj4yXXwwKSE9MD8oa1trWyhrW2RhPj4yXXwwKSstMTYrND4+Ml0+PjJdfDApPihrWyhrW2tbXz4+Ml0+PjJdfDApKzk2KzI0Pj4yXXwwKTowKXtaPWtbXz4+Ml18MDtrW1U+PjJdPShrW2RhPj4yXXwwKSstNjQrNDtPaChaLDI3MTg2LFUpfV89d3coa1tfPj4yXXwwLGtbKGtbZGE+PjJdfDApKy0xNis0Pj4yXXwwLChrW2RhPj4yXXwwKSstNjQrNHwwKXwwO2tbWD4+Ml09XztzdyhYLChrW2RhPj4yXXwwKSstNjQrNHwwLChrW2RhPj4yXXwwKSs0fDApO2lmKChrWyhrW2RhPj4yXXwwKSstMzIrND4+Ml18MCk9PTE/KGtbWD4+Ml18MCkhPTA6MCl7Xz0oa1tYPj4yXXwwKSs0fDA7a1tfPj4yXT1rW18+PjJdfDE2fV89KGtbZGE+PjJdfDApKy02NCs0fDA7a1tfPj4yXT1rW1g+PjJdO2tbXys0Pj4yXT1rW1grND4+Ml07a1tfKzg+PjJdPWtbWCs4Pj4yXTticmVha31jYXNlIDE2Mzp7Xz13dyhrW18+PjJdfDAsMCwoa1tkYT4+Ml18MCkrLTQ4KzR8MCl8MDtrW1g+PjJdPV87c3coWCwoa1tkYT4+Ml18MCkrLTQ4KzR8MCwoa1tkYT4+Ml18MCkrNHwwKTtfPShrW2RhPj4yXXwwKSstNDgrNHwwO2tbXz4+Ml09a1tYPj4yXTtrW18rND4+Ml09a1tYKzQ+PjJdO2tbXys4Pj4yXT1rW1grOD4+Ml07YnJlYWt9Y2FzZSAxNjQ6e189d3coa1tfPj4yXXwwLDAsKGtbZGE+PjJdfDApKzR8MCl8MDtrW1g+PjJdPV87c3coWCwoa1tkYT4+Ml18MCkrNHwwLChrW2RhPj4yXXwwKSs0fDApO189KGtbZGE+PjJdfDApKzR8MDtrW18+PjJdPWtbWD4+Ml07a1tfKzQ+PjJdPWtbWCs0Pj4yXTtrW18rOD4+Ml09a1tYKzg+PjJdO2JyZWFrfWNhc2UgMTY1OntaPWJ3KGtbXz4+Ml18MCxrWyhrW2RhPj4yXXwwKSstNDgrND4+Ml18MCxrWyhrW2RhPj4yXXwwKSstMTYrND4+Ml18MCl8MDtrW3c+PjJdPVo7Wj1PdihrW18+PjJdfDAsMTU4LDAsMCwwKXwwO2tbWD4+Ml09WjtpZihrW1g+PjJdfDApe2tbKGtbWD4+Ml18MCkrMjA+PjJdPWtbdz4+Ml07c3coWCwoa1tkYT4+Ml18MCkrLTY0KzR8MCwoa1tkYT4+Ml18MCkrNHwwKX1lbHNlIG92KGtba1tfPj4yXT4+Ml18MCxrW3c+PjJdfDApO189KGtbZGE+PjJdfDApKy02NCs0fDA7a1tfPj4yXT1rW1g+PjJdO2tbXys0Pj4yXT1rW1grND4+Ml07a1tfKzg+PjJdPWtbWCs4Pj4yXTticmVha31jYXNlIDE3MzpjYXNlIDE3MjpjYXNlIDE3MTpjYXNlIDE3MDpjYXNlIDE2OTpjYXNlIDE2ODpjYXNlIDE2NzpjYXNlIDE2Njp7eHcoa1tfPj4yXXwwLGxbKGtbZGE+PjJdfDApKy0xNisyPj4wXXwwLChrW2RhPj4yXXwwKSstMzIrNHwwLChrW2RhPj4yXXwwKSs0fDApO2JyZWFrfWNhc2UgMTc0OntfPShrW2RhPj4yXXwwKSs0fDA7Wj0oa1tkYT4+Ml18MCkrNHwwO2tbXz4+Ml09a1taPj4yXTtrW18rND4+Ml09a1taKzQ+PjJdO2JyZWFrfWNhc2UgMTc1OntfPShrW2RhPj4yXXwwKSstMTYrNHwwO1o9KGtbZGE+PjJdfDApKzR8MDtrW18+PjJdPWtbWj4+Ml07a1tfKzQ+PjJdPWtbWis0Pj4yXTtfPShrW2RhPj4yXXwwKSstMTYrNCs0fDA7a1tfPj4yXT1rW18+PjJdfC0yMTQ3NDgzNjQ4O2JyZWFrfWNhc2UgMTc2OntrW2U+PjJdPWtbKGtbZGE+PjJdfDApKy0xNis0KzQ+PjJdJi0yMTQ3NDgzNjQ4O1o9KGtbZGE+PjJdfDApKy0xNis0KzR8MDtrW1o+PjJdPWtbWj4+Ml0mMjE0NzQ4MzY0NztaPWJ3KGtbXz4+Ml18MCwwLGtbKGtbZGE+PjJdfDApKzQ+PjJdfDApfDA7a1t5Pj4yXT1aO1o9Yncoa1tfPj4yXXwwLGtbeT4+Ml18MCxrWyhrW2RhPj4yXXwwKSstMzIrND4+Ml18MCl8MDtrW3k+PjJdPVo7Wj13dyhrW18+PjJdfDAsa1t5Pj4yXXwwLChrW2RhPj4yXXwwKSstMTYrNHwwKXwwO2tbKGtbZGE+PjJdfDApKy0zMis0Pj4yXT1aO3l3KGtbXz4+Ml18MCxrW2U+PjJdfDAsKGtbZGE+PjJdfDApKy0zMis0fDApO2tbKGtbZGE+PjJdfDApKy0zMis0Kzg+PjJdPWtbKGtbZGE+PjJdfDApKzQrOD4+Ml07aWYoa1soa1tkYT4+Ml18MCkrLTMyKzQ+PjJdfDApe189KGtbKGtbZGE+PjJdfDApKy0zMis0Pj4yXXwwKSs0fDA7a1tfPj4yXT1rW18+PjJdfDEyOH1icmVha31jYXNlIDE3Nzp7a1tmPj4yXT1rWyhrW2RhPj4yXXwwKSstNDgrNCs0Pj4yXSYtMjE0NzQ4MzY0ODtaPShrW2RhPj4yXXwwKSstNDgrNCs0fDA7a1taPj4yXT1rW1o+PjJdJjIxNDc0ODM2NDc7Wj1idyhrW18+PjJdfDAsMCxrWyhrW2RhPj4yXXwwKSstMzIrND4+Ml18MCl8MDtrW3o+PjJdPVo7Wj1idyhrW18+PjJdfDAsa1t6Pj4yXXwwLGtbKGtbZGE+PjJdfDApKy02NCs0Pj4yXXwwKXwwO2tbej4+Ml09WjtaPWJ3KGtbXz4+Ml18MCxrW3o+PjJdfDAsa1soa1tkYT4+Ml18MCkrND4+Ml18MCl8MDtrW3o+PjJdPVo7Wj13dyhrW18+PjJdfDAsa1t6Pj4yXXwwLChrW2RhPj4yXXwwKSstNDgrNHwwKXwwO2tbKGtbZGE+PjJdfDApKy02NCs0Pj4yXT1aO3l3KGtbXz4+Ml18MCxrW2Y+PjJdfDAsKGtbZGE+PjJdfDApKy02NCs0fDApO2tbKGtbZGE+PjJdfDApKy02NCs0Kzg+PjJdPWtbKGtbZGE+PjJdfDApKzQrOD4+Ml07aWYoa1soa1tkYT4+Ml18MCkrLTY0KzQ+PjJdfDApe189KGtbKGtbZGE+PjJdfDApKy02NCs0Pj4yXXwwKSs0fDA7a1tfPj4yXT1rW18+PjJdfDEyOH1icmVha31jYXNlIDE3ODp7encoa1tfPj4yXXwwLGxbKGtbZGE+PjJdfDApKzI+PjBdfDAsKGtbZGE+PjJdfDApKy0xNis0fDAsKGtbZGE+PjJdfDApKzR8MCk7YnJlYWt9Y2FzZSAxNzk6e3p3KGtbXz4+Ml18MCwzNSwoa1tkYT4+Ml18MCkrLTMyKzR8MCwoa1tkYT4+Ml18MCkrNHwwKTticmVha31jYXNlIDE4MDp7eHcoa1tfPj4yXXwwLDI5LChrW2RhPj4yXXwwKSstMzIrNHwwLChrW2RhPj4yXXwwKSs0fDApO0F3KGtbXz4+Ml18MCxrWyhrW2RhPj4yXXwwKSs0Pj4yXXwwLGtbKGtbZGE+PjJdfDApKy0zMis0Pj4yXXwwLDM0KTticmVha31jYXNlIDE4MTp7eHcoa1tfPj4yXXwwLDE0OCwoa1tkYT4+Ml18MCkrLTQ4KzR8MCwoa1tkYT4+Ml18MCkrNHwwKTtBdyhrW18+PjJdfDAsa1soa1tkYT4+Ml18MCkrND4+Ml18MCxrWyhrW2RhPj4yXXwwKSstNDgrND4+Ml18MCwzNSk7YnJlYWt9Y2FzZSAxODM6Y2FzZSAxODI6e0J3KChrW2RhPj4yXXwwKSstMTYrNHwwLGtbXz4+Ml18MCxsWyhrW2RhPj4yXXwwKSstMTYrMj4+MF18MCwoa1tkYT4+Ml18MCkrNHwwLChrW2RhPj4yXXwwKSstMTYrNHwwKTticmVha31jYXNlIDE4NDp7QncoKGtbZGE+PjJdfDApKy0xNis0fDAsa1tfPj4yXXwwLDE1NSwoa1tkYT4+Ml18MCkrNHwwLChrW2RhPj4yXXwwKSstMTYrNHwwKTticmVha31jYXNlIDE4NTp7QncoKGtbZGE+PjJdfDApKy0xNis0fDAsa1tfPj4yXXwwLDE1Niwoa1tkYT4+Ml18MCkrNHwwLChrW2RhPj4yXXwwKSstMTYrNHwwKTticmVha31jYXNlIDE4OTpjYXNlIDE4Njp7a1soa1tkYT4+Ml18MCkrND4+Ml09MDticmVha31jYXNlIDE4ODp7Wj1idyhrW18+PjJdfDAsMCxrWyhrW2RhPj4yXXwwKSstMzIrND4+Ml18MCl8MDtrW3g+PjJdPVo7Wj1idyhrW18+PjJdfDAsa1t4Pj4yXXwwLGtbKGtbZGE+PjJdfDApKzQ+PjJdfDApfDA7a1t4Pj4yXT1aO1o9T3Yoa1tfPj4yXXwwLDMyLGtbKGtbZGE+PjJdfDApKy02NCs0Pj4yXXwwLDAsMCl8MDtrWyhrW2RhPj4yXXwwKSstNjQrND4+Ml09WjtpZihrWyhrW2RhPj4yXXwwKSstNjQrND4+Ml18MClrWyhrWyhrW2RhPj4yXXwwKSstNjQrND4+Ml18MCkrMjA+PjJdPWtbeD4+Ml07ZWxzZSBvdihrW2tbXz4+Ml0+PjJdfDAsa1t4Pj4yXXwwKTt5dyhrW18+PjJdfDAsa1soa1tkYT4+Ml18MCkrLTQ4KzQ+PjJdfDAsKGtbZGE+PjJdfDApKy02NCs0fDApO2tbKGtbZGE+PjJdfDApKy02NCs0Kzg+PjJdPWtbKGtbZGE+PjJdfDApKzQrOD4+Ml07YnJlYWt9Y2FzZSAxOTE6e2RvIGlmKCEoa1soa1tkYT4+Ml18MCkrLTE2KzQ+PjJdfDApKXtzdihrW2tbXz4+Ml0+PjJdfDAsa1soa1tkYT4+Ml18MCkrLTY0KzQ+PjJdfDApO189T3Yoa1tfPj4yXXwwLDEzNCwwLDAsNDI3Nisoa1soa1tkYT4+Ml18MCkrLTQ4KzQ+PjJdPDwzKXwwKXwwO2tbKGtbZGE+PjJdfDApKy02NCs0Pj4yXT1ffWVsc2V7aWYoKGtba1soa1tkYT4+Ml18MCkrLTE2KzQ+PjJdPj4yXXwwKT09MSl7a1tDPj4yXT1rW2tbKGtbKGtbZGE+PjJdfDApKy0xNis0Pj4yXXwwKSs0Pj4yXT4+Ml07a1trWyhrWyhrW2RhPj4yXXwwKSstMTYrND4+Ml18MCkrND4+Ml0+PjJdPTA7b3Yoa1trW18+PjJdPj4yXXwwLGtbKGtbZGE+PjJdfDApKy0xNis0Pj4yXXwwKTtpZihrW0M+PjJdfDApe1o9KGtbQz4+Ml18MCkrNHwwO2tbWj4+Ml09a1taPj4yXSYtMjU3O1o9KGtbQz4+Ml18MCkrNHwwO2tbWj4+Ml09a1taPj4yXXw1MTJ9Xz1PdihrW18+PjJdfDAsKGtbKGtbZGE+PjJdfDApKy00OCs0Pj4yXXwwKSE9MD8zNjozNyxrWyhrW2RhPj4yXXwwKSstNjQrND4+Ml18MCxrW0M+PjJdfDAsMCl8MDtrWyhrW2RhPj4yXXwwKSstNjQrND4+Ml09XzticmVha31aPU92KGtbXz4+Ml18MCwzMyxrWyhrW2RhPj4yXXwwKSstNjQrND4+Ml18MCwwLDApfDA7a1soa1tkYT4+Ml18MCkrLTY0KzQ+PjJdPVo7aWYoa1soa1tkYT4+Ml18MCkrLTY0KzQ+PjJdfDApe2tbKGtbKGtbZGE+PjJdfDApKy02NCs0Pj4yXXwwKSsyMD4+Ml09a1soa1tkYT4+Ml18MCkrLTE2KzQ+PjJdO0N3KGtbXz4+Ml18MCxrWyhrW2RhPj4yXXwwKSstNjQrND4+Ml18MCl9ZWxzZSBvdihrW2tbXz4+Ml0+PjJdfDAsa1soa1tkYT4+Ml18MCkrLTE2KzQ+PjJdfDApO3l3KGtbXz4+Ml18MCxrWyhrW2RhPj4yXXwwKSstNDgrND4+Ml18MCwoa1tkYT4+Ml18MCkrLTY0KzR8MCl9d2hpbGUoMCk7a1soa1tkYT4+Ml18MCkrLTY0KzQrOD4+Ml09KGtbKGtbZGE+PjJdfDApKzQ+PjJdfDApKyhrWyhrW2RhPj4yXXwwKSs0KzQ+PjJdfDApO2JyZWFrfWNhc2UgMTkyOntzdygoa1tkYT4+Ml18MCkrLTMyKzR8MCwoa1tkYT4+Ml18MCkrLTMyKzR8MCwoa1tkYT4+Ml18MCkrNHwwKTtaPU92KGtbXz4+Ml18MCwxMTksMCwwLDApfDA7a1soa1tkYT4+Ml18MCkrLTMyKzQ+PjJdPVo7RHcoa1tfPj4yXXwwLGtbKGtbZGE+PjJdfDApKy0zMis0Pj4yXXwwLGtbKGtbZGE+PjJdfDApKy0xNis0Pj4yXXwwKTticmVha31jYXNlIDE5Mzp7Wj1PdihrW18+PjJdfDAsMzMsa1soa1tkYT4+Ml18MCkrLTY0KzQ+PjJdfDAsMCwwKXwwO2tbKGtbZGE+PjJdfDApKy02NCs0Pj4yXT1aO0R3KGtbXz4+Ml18MCxrWyhrW2RhPj4yXXwwKSstNjQrND4+Ml18MCxrWyhrW2RhPj4yXXwwKSstMTYrND4+Ml18MCk7eXcoa1tfPj4yXXwwLGtbKGtbZGE+PjJdfDApKy00OCs0Pj4yXXwwLChrW2RhPj4yXXwwKSstNjQrNHwwKTtrWyhrW2RhPj4yXXwwKSstNjQrNCs4Pj4yXT0oa1soa1tkYT4+Ml18MCkrND4+Ml18MCkrKGtbKGtbZGE+PjJdfDApKzQrND4+Ml18MCk7YnJlYWt9Y2FzZSAxOTQ6e1o9aXcoa1trW18+PjJdPj4yXXwwLDAsKGtbZGE+PjJdfDApKy0zMis0fDAsKGtbZGE+PjJdfDApKy0xNis0fDApfDA7a1tIPj4yXT1aO1o9YXcoa1tfPj4yXXwwLDAsa1tIPj4yXXwwLDAsMCwwLDAsMCwwLDApfDA7a1tHPj4yXT1aO2lmKGtbKGtbZGE+PjJdfDApKzQ+PjJdfDApaHcoa1tfPj4yXXwwLChrW0c+PjJdfDApIT0wP2tbSD4+Ml18MDowLGtbKGtbZGE+PjJdfDApKzQ+PjJdfDApO2M9T3Yoa1tfPj4yXXwwLDMzLGtbKGtbZGE+PjJdfDApKy02NCs0Pj4yXXwwLDAsMCl8MDtrWyhrW2RhPj4yXXwwKSstNjQrND4+Ml09YztEdyhrW18+PjJdfDAsa1soa1tkYT4+Ml18MCkrLTY0KzQ+PjJdfDAsa1tHPj4yXXwwKTt5dyhrW18+PjJdfDAsa1soa1tkYT4+Ml18MCkrLTQ4KzQ+PjJdfDAsKGtbZGE+PjJdfDApKy02NCs0fDApO2M9a1tkYT4+Ml18MDtpZihrWyhrW2RhPj4yXXwwKSstMTYrND4+Ml18MCljPShrWyhrW2RhPj4yXXwwKSstMTYrND4+Ml18MCkrKGtbYystMTYrNCs0Pj4yXXwwKXwwO2Vsc2UgYz0oa1soa1tkYT4+Ml18MCkrLTMyKzQ+PjJdfDApKyhrW2MrLTMyKzQrND4+Ml18MCl8MDtrWyhrW2RhPj4yXXwwKSstNjQrNCs4Pj4yXT1jO2JyZWFrfWNhc2UgMTk1Ontzdygoa1tkYT4+Ml18MCkrLTQ4KzR8MCwoa1tkYT4+Ml18MCkrLTQ4KzR8MCwoa1tkYT4+Ml18MCkrNHwwKTtaPU92KGtbXz4+Ml18MCwyMCwwLDAsMCl8MDtrWyhrW2RhPj4yXXwwKSstNDgrND4+Ml09WjtrW28+PjJdPVo7RHcoa1tfPj4yXXwwLGtbbz4+Ml18MCxrWyhrW2RhPj4yXXwwKSstMTYrND4+Ml18MCk7YnJlYWt9Y2FzZSAxOTY6e3N3KChrW2RhPj4yXXwwKSstNjQrNHwwLChrW2RhPj4yXXwwKSstNjQrNHwwLChrW2RhPj4yXXwwKSs0fDApO1o9T3Yoa1tfPj4yXXwwLDEzNixrWyhrW2RhPj4yXXwwKSstNDgrND4+Ml18MCwwLDApfDA7a1soa1tkYT4+Ml18MCkrLTY0KzQ+PjJdPVo7aWYoIShrWyhrW2RhPj4yXXwwKSstNjQrND4+Ml18MCkpe292KGtba1tfPj4yXT4+Ml18MCxrWyhrW2RhPj4yXXwwKSstMzIrND4+Ml18MCk7c3Yoa1trW18+PjJdPj4yXXwwLGtbKGtbZGE+PjJdfDApKy0xNis0Pj4yXXwwKTticmVhayBhfWlmKGtbKGtbZGE+PjJdfDApKy0xNis0Pj4yXXwwKWM9Yncoa1tfPj4yXXwwLGtbKGtbZGE+PjJdfDApKy0zMis0Pj4yXXwwLGtbKGtbZGE+PjJdfDApKy0xNis0Pj4yXXwwKXwwO2Vsc2UgYz1rWyhrW2RhPj4yXXwwKSstMzIrND4+Ml18MDtrWyhrWyhrW2RhPj4yXXwwKSstNjQrND4+Ml18MCkrMjA+PjJdPWM7Q3coa1tfPj4yXXwwLGtbKGtbZGE+PjJdfDApKy02NCs0Pj4yXXwwKTticmVha31jYXNlIDE5Nzp7Wj1idyhrW18+PjJdfDAsa1soa1tkYT4+Ml18MCkrLTY0KzQ+PjJdfDAsa1soa1tkYT4+Ml18MCkrLTMyKzQ+PjJdfDApfDA7a1soa1tkYT4+Ml18MCkrLTY0KzQ+PjJdPVo7Xz1idyhrW18+PjJdfDAsa1soa1tkYT4+Ml18MCkrLTY0KzQ+PjJdfDAsa1soa1tkYT4+Ml18MCkrND4+Ml18MCl8MDtrWyhrW2RhPj4yXXwwKSstNjQrND4+Ml09XzticmVha31jYXNlIDE5ODp7Wj1idyhrW18+PjJdfDAsMCxrWyhrW2RhPj4yXXwwKSstMzIrND4+Ml18MCl8MDtrWyhrW2RhPj4yXXwwKSstNDgrND4+Ml09WjtfPWJ3KGtbXz4+Ml18MCxrWyhrW2RhPj4yXXwwKSstNDgrND4+Ml18MCxrWyhrW2RhPj4yXXwwKSs0Pj4yXXwwKXwwO2tbKGtbZGE+PjJdfDApKy00OCs0Pj4yXT1fO2JyZWFrfWNhc2UgMjAxOntrWyhrW2RhPj4yXXwwKSs0Pj4yXT1rWyhrW2RhPj4yXXwwKSs0Pj4yXTticmVha31jYXNlIDIwNDp7Xz1idyhrW18+PjJdfDAsa1soa1tkYT4+Ml18MCkrLTMyKzQ+PjJdfDAsa1soa1tkYT4+Ml18MCkrND4+Ml18MCl8MDtrWyhrW2RhPj4yXXwwKSstMzIrND4+Ml09XzticmVha31jYXNlIDIwNTp7Xz1idyhrW18+PjJdfDAsMCxrWyhrW2RhPj4yXXwwKSs0Pj4yXXwwKXwwO2tbKGtbZGE+PjJdfDApKzQ+PjJdPV87YnJlYWt9Y2FzZSAyMTI6Y2FzZSAyMDc6e2tbKGtbZGE+PjJdfDApKy0zMis0Pj4yXT1rWyhrW2RhPj4yXXwwKSstMTYrND4+Ml07YnJlYWt9Y2FzZSAyMDg6e1N2KGtbXz4+Ml18MCwoa1tkYT4+Ml18MCkrLTExMis0fDAsKGtbZGE+PjJdfDApKy05Nis0fDAsaXcoa1trW18+PjJdPj4yXXwwLDAsKGtbZGE+PjJdfDApKy02NCs0fDAsMCl8MCxrWyhrW2RhPj4yXXwwKSstMzIrND4+Ml18MCxrWyhrW2RhPj4yXXwwKSstMTYwKzQ+PjJdfDAsKGtbZGE+PjJdfDApKy0xNzYrNHwwLGtbKGtbZGE+PjJdfDApKzQ+PjJdfDAsMCxrWyhrW2RhPj4yXXwwKSstMTI4KzQ+PjJdfDAsMCk7YnJlYWt9Y2FzZSAyNTA6Y2FzZSAyMDk6e2tbKGtbZGE+PjJdfDApKzQ+PjJdPTI7YnJlYWt9Y2FzZSAyMTA6e2tbKGtbZGE+PjJdfDApKzE2KzQ+PjJdPTA7YnJlYWt9Y2FzZSAyMTM6e189RXcoa1tfPj4yXXwwLGtbKGtbZGE+PjJdfDApKy02NCs0Pj4yXXwwLChrW2RhPj4yXXwwKSstMzIrNHwwLGtbKGtbZGE+PjJdfDApKy0xNis0Pj4yXXwwLGtbKGtbZGE+PjJdfDApKzQ+PjJdfDApfDA7a1soa1tkYT4+Ml18MCkrLTY0KzQ+PjJdPV87YnJlYWt9Y2FzZSAyMTQ6e189RXcoa1tfPj4yXXwwLDAsKGtbZGE+PjJdfDApKy0zMis0fDAsa1soa1tkYT4+Ml18MCkrLTE2KzQ+PjJdfDAsa1soa1tkYT4+Ml18MCkrND4+Ml18MCl8MDtrWyhrW2RhPj4yXXwwKSstMzIrND4+Ml09XzticmVha31jYXNlIDIxNzp7Rncoa1tfPj4yXXwwLGtbKGtbZGE+PjJdfDApKzQ+PjJdfDAsa1soa1tkYT4+Ml18MCkrLTE2KzQ+PjJdfDApO2JyZWFrfWNhc2UgMjE4OntHdyhrW18+PjJdfDAsMCk7YnJlYWt9Y2FzZSAyMTk6e0d3KGtbXz4+Ml18MCwoa1tkYT4+Ml18MCkrNHwwKTticmVha31jYXNlIDIyMDp7SHcoa1tfPj4yXXwwLChrW2RhPj4yXXwwKSstMTYrNHwwLChrW2RhPj4yXXwwKSs0fDAsMCwwKTticmVha31jYXNlIDIyMTp7SHcoa1tfPj4yXXwwLChrW2RhPj4yXXwwKSstNDgrNHwwLChrW2RhPj4yXXwwKSstMzIrNHwwLChrW2RhPj4yXXwwKSs0fDAsMCk7YnJlYWt9Y2FzZSAyMjI6e0h3KGtbXz4+Ml18MCwoa1tkYT4+Ml18MCkrLTY0KzR8MCwoa1tkYT4+Ml18MCkrLTQ4KzR8MCwoa1tkYT4+Ml18MCkrLTE2KzR8MCwwKTticmVha31jYXNlIDIyMzp7SHcoa1tfPj4yXXwwLChrW2RhPj4yXXwwKSstNDgrNHwwLChrW2RhPj4yXXwwKSstMzIrNHwwLChrW2RhPj4yXXwwKSs0fDAsMSk7YnJlYWt9Y2FzZSAyMjQ6e0h3KGtbXz4+Ml18MCwoa1tkYT4+Ml18MCkrLTY0KzR8MCwoa1tkYT4+Ml18MCkrLTQ4KzR8MCwoa1tkYT4+Ml18MCkrLTE2KzR8MCwxKTticmVha31jYXNlIDIyNzp7a1tkPj4yXT1rWyhrW2RhPj4yXXwwKSstNDgrND4+Ml07a1tkKzQ+PjJdPShrWyhrW2RhPj4yXXwwKSs0Pj4yXXwwKS0oa1soa1tkYT4+Ml18MCkrLTQ4KzQ+PjJdfDApKyhrWyhrW2RhPj4yXXwwKSs0KzQ+PjJdfDApO0l3KGtbXz4+Ml18MCxrWyhrW2RhPj4yXXwwKSstMTYrND4+Ml18MCxkKTticmVha31jYXNlIDIyODp7Sncoa1tfPj4yXXwwLChrW2RhPj4yXXwwKSstMTEyKzR8MCwoa1tkYT4+Ml18MCkrLTk2KzR8MCxrWyhrW2RhPj4yXXwwKSstODArND4+Ml18MCxrWyhrW2RhPj4yXXwwKSstNjQrND4+Ml18MCxrWyhrW2RhPj4yXXwwKSstNjQrNCs0Pj4yXXwwLGtbKGtbZGE+PjJdfDApKy0zMis0Pj4yXXwwLGtbKGtbZGE+PjJdfDApKzQ+PjJdfDAsa1soa1tkYT4+Ml18MCkrLTE2MCs0Pj4yXXwwLGtbKGtbZGE+PjJdfDApKy0xMjgrND4+Ml18MCk7Yz0oa1tkYT4+Ml18MCkrLTE2MCs0fDA7ZD1rW2RhPj4yXXwwO2lmKCEoa1soa1tkYT4+Ml18MCkrLTk2KzQrND4+Ml18MCkpe189ZCstMTEyKzR8MDtrW2M+PjJdPWtbXz4+Ml07a1tjKzQ+PjJdPWtbXys0Pj4yXTticmVhayBhfWVsc2V7Xz1kKy05Nis0fDA7a1tjPj4yXT1rW18+PjJdO2tbYys0Pj4yXT1rW18rND4+Ml07YnJlYWsgYX19Y2FzZSAyMjk6e2tbKGtbZGE+PjJdfDApKzQ+PjJdPTYzO2JyZWFrfWNhc2UgMjMwOntrWyhrW2RhPj4yXXwwKSs0Pj4yXT01OTticmVha31jYXNlIDIzMTp7a1soa1tkYT4+Ml18MCkrLTE2KzQ+PjJdPTc3O2JyZWFrfWNhc2UgMjMyOntrWyhrW2RhPj4yXXwwKSsxNis0Pj4yXT02MzticmVha31jYXNlIDIzNDpjYXNlIDIzMzp7a1soa1tkYT4+Ml18MCkrND4+Ml09bFsoa1tkYT4+Ml18MCkrMj4+MF07a1soa1tkYT4+Ml18MCkrNCs0Pj4yXT0wO2JyZWFrfWNhc2UgMjM1OntrWyhrW2RhPj4yXXwwKSstMzIrND4+Ml09MTEwO2tbKGtbZGE+PjJdfDApKy0zMis0KzQ+PjJdPWtbKGtbZGE+PjJdfDApKzQ+PjJdO2JyZWFrfWNhc2UgMjU1OmNhc2UgMjM2OntrWyhrW2RhPj4yXXwwKSsxNis0Pj4yXT0wO2JyZWFrfWNhc2UgMjU2OmNhc2UgMjM3OntrWyhrW2RhPj4yXXwwKSstMTYrND4+Ml09a1soa1tkYT4+Ml18MCkrND4+Ml07YnJlYWt9Y2FzZSAyMzg6e2tbKGtbKGtbKGtbZGE+PjJdfDApKy0zMis0Pj4yXXwwKSszMj4+Ml18MCkrMjg+PjJdPWtbKGtbZGE+PjJdfDApKy0xNis0Pj4yXTtrWyhrWyhrW2RhPj4yXXwwKSstMzIrND4+Ml18MCkrMzI+PjJdPWtbKGtbZGE+PjJdfDApKy0xNis0Pj4yXTticmVha31jYXNlIDIzOTp7a1soa1soa1tkYT4+Ml18MCkrLTE2KzQ+PjJdfDApKzMyPj4yXT1rWyhrW2RhPj4yXXwwKSstMTYrND4+Ml07YnJlYWt9Y2FzZSAyNDA6e1o9KGtbZGE+PjJdfDApKy0zMis0fDA7WT0oa1tkYT4+Ml18MCkrNHwwO2tbWj4+Ml09a1tZPj4yXTtrW1orND4+Ml09a1tZKzQ+PjJdO09oKGtbXz4+Ml18MCwyNzIyMCxWKTticmVha31jYXNlIDI0MTp7T2goa1tfPj4yXXwwLDI3MzE1LFMpO2JyZWFrfWNhc2UgMjQyOntPaChrW18+PjJdfDAsMjczOTksVCk7YnJlYWt9Y2FzZSAyNDM6e189S3coa1trW18+PjJdPj4yXXwwLChrW2RhPj4yXXwwKSstNjQrNHwwLGtbKGtbZGE+PjJdfDApKy0xNis0Pj4yXXwwLGtbKGtbZGE+PjJdfDApKzQ+PjJdfDAsa1soa1tkYT4+Ml18MCkrLTgwKzQ+PjJdJjI1NSl8MDtrWyhrW2RhPj4yXXwwKSstOTYrND4+Ml09XzticmVha31jYXNlIDI0NDp7Xz1MdyhrW2tbXz4+Ml0+PjJdfDAsKGtbZGE+PjJdfDApKy0zMis0fDAsa1soa1tkYT4+Ml18MCkrLTE2KzQ+PjJdfDAsa1soa1tkYT4+Ml18MCkrND4+Ml18MCxrWyhrW2RhPj4yXXwwKSstNjQrND4+Ml0mMjU1KXwwO2tbKGtbZGE+PjJdfDApKy02NCs0Pj4yXT1fO2JyZWFrfWNhc2UgMjQ1OntfPU13KGtba1tfPj4yXT4+Ml18MCwoa1tkYT4+Ml18MCkrLTMyKzR8MCxrWyhrW2RhPj4yXXwwKSs0Pj4yXXwwKXwwO2tbKGtbZGE+PjJdfDApKy02NCs0Pj4yXT1fO2JyZWFrfWNhc2UgMjQ2OntfPU53KGtba1tfPj4yXT4+Ml18MCxrWyhrW2RhPj4yXXwwKSs0Pj4yXXwwKXwwO2tbKGtbZGE+PjJdfDApKzQ+PjJdPV87YnJlYWt9Y2FzZSAyNDc6e3N3KChrW2RhPj4yXXwwKSstNDgrNHwwLChrW2RhPj4yXXwwKSstNDgrNHwwLChrW2RhPj4yXXwwKSs0fDApO189T3Yoa1tfPj4yXXwwLDgzLDAsMCwwKXwwO2tbKGtbZGE+PjJdfDApKy00OCs0Pj4yXT1fO2lmKGtbKGtbZGE+PjJdfDApKy00OCs0Pj4yXXwwKWlbKGtbKGtbZGE+PjJdfDApKy00OCs0Pj4yXXwwKSsxPj4wXT00O2JyZWFrfWNhc2UgMjQ4Ontzdygoa1tkYT4+Ml18MCkrLTgwKzR8MCwoa1tkYT4+Ml18MCkrLTgwKzR8MCwoa1tkYT4+Ml18MCkrNHwwKTtfPU92KGtbXz4+Ml18MCw4MywwLDAsKGtbZGE+PjJdfDApKy0xNis0fDApfDA7a1soa1tkYT4+Ml18MCkrLTgwKzQ+PjJdPV87aWYoa1soa1tkYT4+Ml18MCkrLTgwKzQ+PjJdfDApaVsoa1soa1tkYT4+Ml18MCkrLTgwKzQ+PjJdfDApKzE+PjBdPWtbKGtbZGE+PjJdfDApKy00OCs0Pj4yXTticmVha31jYXNlIDI0OTp7a1soa1tkYT4+Ml18MCkrND4+Ml09MTticmVha31jYXNlIDI1MTp7a1soa1tkYT4+Ml18MCkrND4+Ml09MzticmVha31jYXNlIDI1Mjp7T3coa1tfPj4yXXwwLGtbKGtbZGE+PjJdfDApKzQ+PjJdfDAsa1soa1tkYT4+Ml18MCkrLTE2KzQ+PjJdfDApO2JyZWFrfWNhc2UgMjUzOntQdyhrW18+PjJdfDAsa1soa1tkYT4+Ml18MCkrLTQ4KzQ+PjJdfDAsa1soa1tkYT4+Ml18MCkrLTE2KzQ+PjJdfDAsa1soa1tkYT4+Ml18MCkrND4+Ml18MCk7YnJlYWt9Y2FzZSAyNTQ6e1F3KGtbXz4+Ml18MCxrWyhrW2RhPj4yXXwwKSs0Pj4yXXwwKTticmVha31jYXNlIDI1Nzp7Uncoa1tfPj4yXXwwLDAsMCk7YnJlYWt9Y2FzZSAyNTg6e1J3KGtbXz4+Ml18MCwoa1tkYT4+Ml18MCkrLTE2KzR8MCwoa1tkYT4+Ml18MCkrNHwwKTticmVha31jYXNlIDI1OTp7U3coa1tfPj4yXXwwLDAsMCk7YnJlYWt9Y2FzZSAyNjA6e1N3KGtbXz4+Ml18MCwoa1tkYT4+Ml18MCkrLTE2KzR8MCwoa1tkYT4+Ml18MCkrNHwwKTticmVha31jYXNlIDI2MTp7VHcoa1tfPj4yXXwwLGtbKGtbZGE+PjJdfDApKy00OCs0Pj4yXXwwLChrW2RhPj4yXXwwKSs0fDApO2JyZWFrfWNhc2UgMjYyOntrWyhrW2RhPj4yXXwwKSstMTYrNCs0Pj4yXT0oa1soa1tfPj4yXXwwKSszOTI+PjJdfDApLShrWyhrW2RhPj4yXXwwKSstMTYrND4+Ml18MCkrKGtbKGtbXz4+Ml18MCkrMzkyKzQ+PjJdfDApO1V3KGtbXz4+Ml18MCwoa1tkYT4+Ml18MCkrLTE2KzR8MCk7YnJlYWt9Y2FzZSAyNjM6e0t2KGtbXz4+Ml18MCk7Vncoa1tfPj4yXXwwLGtbKGtbZGE+PjJdfDApKzQ+PjJdfDApO2JyZWFrfWNhc2UgMjY0OntXdyhrW18+PjJdfDAsMCk7YnJlYWt9Y2FzZSAyNjU6e1d3KGtbXz4+Ml18MCwoa1tkYT4+Ml18MCkrNHwwKTticmVha31jYXNlIDI2Njp7WHcoa1tfPj4yXXwwLChrW2RhPj4yXXwwKSstNDgrNHwwLChrW2RhPj4yXXwwKSstMzIrNHwwLChrW2RhPj4yXXwwKSs0fDAsa1soa1tkYT4+Ml18MCkrLTY0KzQ+PjJdfDApO2JyZWFrfWNhc2UgMjY3OntZdyhrW18+PjJdfDApO2JyZWFrfWNhc2UgMjcwOmNhc2UgMjY5OmNhc2UgMjY4OntadyhrW18+PjJdfDAsKGtbZGE+PjJdfDApKzR8MCk7YnJlYWt9Y2FzZSAyNzE6e2tbKGtbZGE+PjJdfDApKzE2KzQ+PjJdPTA7YnJlYWt9Y2FzZSAyNzI6e2tbKGtbZGE+PjJdfDApKy0xNis0Pj4yXT1rWyhrW2RhPj4yXXwwKSs0Pj4yXTticmVha31jYXNlIDI3Mzp7a1soa1tkYT4+Ml18MCkrLTMyKzQ+PjJdPWtbKGtbZGE+PjJdfDApKzQ+PjJdO2JyZWFrfWNhc2UgMjc0OntfPV93KGtbXz4+Ml18MCwwLChrW2RhPj4yXXwwKSstODArNHwwLGtbKGtbZGE+PjJdfDApKy02NCs0Pj4yXXwwLGtbKGtbZGE+PjJdfDApKy0xNis0Pj4yXXwwKXwwO2tbKGtbZGE+PjJdfDApKy04MCs0Pj4yXT1fO2JyZWFrfWNhc2UgMjc1OntfPV93KGtbXz4+Ml18MCxrWyhrW2RhPj4yXXwwKSstMTEyKzQ+PjJdfDAsKGtbZGE+PjJdfDApKy04MCs0fDAsa1soa1tkYT4+Ml18MCkrLTY0KzQ+PjJdfDAsa1soa1tkYT4+Ml18MCkrLTE2KzQ+PjJdfDApfDA7a1soa1tkYT4+Ml18MCkrLTExMis0Pj4yXT1fO2JyZWFrfWRlZmF1bHQ6e319d2hpbGUoMCk7a1tjYT4+Ml09bFsyNjQ4Nisoa1thYT4+Ml08PDEpPj4wXTtrW2VhPj4yXT1sWzI2NDg2KyhrW2FhPj4yXTw8MSkrMT4+MF07YWE9JHcobVsoa1tkYT4+Ml18MCkrKDAtKGtbZWE+PjJdfDApPDw0KT4+MV18MCxrW2NhPj4yXSYyNTUpfDA7a1tiYT4+Ml09YWE7aWYoKGtbYmE+PjJdfDApPjk5OSl7ZGE9a1skPj4yXXwwO2tbZGE+PjJdPShrW2RhPj4yXXwwKSsoMC0oa1tlYT4+Ml18MCk8PDQpO2F4KGtbJD4+Ml18MCk7cj1mYTtyZXR1cm59aWYoKGtbYmE+PjJdfDApPjQ1NSlrW2JhPj4yXT0oa1tiYT4+Ml18MCkrMzMyO2tbZGE+PjJdPShrW2RhPj4yXXwwKSsoMC0oKGtbZWE+PjJdfDApLTEpPDw0KTtrW2tbJD4+Ml0+PjJdPWtbZGE+PjJdO2pba1tkYT4+Ml0+PjFdPWtbYmE+PjJdO2lbKGtbZGE+PjJdfDApKzI+PjBdPWtbY2E+PjJdO3I9ZmE7cmV0dXJufWZ1bmN0aW9uIEN2KGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wO2Q9cjtyPXIrMTZ8MDtnPWQ7ZT1kKzEyfDA7Zj1kKzR8MDtrW2U+PjJdPWE7a1tkKzg+PjJdPWI7a1tmPj4yXT1rWyhrW2U+PjJdfDApKzQ+PjJdO2E9a1tmPj4yXXwwO2tbZz4+Ml09YztPaChhLDI2NDYyLGcpO2tbKGtbZT4+Ml18MCkrND4+Ml09a1tmPj4yXTtyPWQ7cmV0dXJufWZ1bmN0aW9uIER2KGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MCxlPTA7ZT1yO3I9cisxNnwwO2Q9ZTtiPWUrOHwwO2M9ZSs0fDA7a1tiPj4yXT1hO2tbYz4+Ml09a1soa1tiPj4yXXwwKSs0Pj4yXTthPWtbYj4+Ml18MDtrW2E+PjJdPShrW2E+PjJdfDApKy0xNjt3aGlsZSgxKXtpZigoa1trW2I+PjJdPj4yXXwwKT4+PjA8PSgoa1tiPj4yXXwwKSs4fDApPj4+MClicmVhazt3dihrW2I+PjJdfDApfU9oKGtbYz4+Ml18MCwzNzU5NyxkKTtrWyhrW2I+PjJdfDApKzQ+PjJdPWtbYz4+Ml07cj1lO3JldHVybn1mdW5jdGlvbiBFdihhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxtPTA7bT1yO3I9ciszMnwwO2I9bSsyOHwwO2M9bSsyNHwwO2g9bSsyMHwwO2U9bSsxNnwwO2Q9bSsxMnwwO2c9bSs4fDA7aj1tKzR8MDtmPW07a1tiPj4yXT1hO2tbYz4+Ml09a1trW2I+PjJdPj4yXTtpZihpWyhrW2I+PjJdfDApKzE4Pj4wXXwwKXtyPW07cmV0dXJufWlmKChsWyhrW2M+PjJdfDApKzY5Pj4wXXwwKT09MD8oa1soa1tiPj4yXXwwKSszNj4+Ml18MCk9PTA6MCl7YT1ueChrW2I+PjJdfDApfDA7a1toPj4yXT1hO2RvIGlmKChrW2g+PjJdfDApIT0wPyhweChrW2g+PjJdfDAsNzUpfDAsKGxbKGtbYz4+Ml18MCkrNjk+PjBdfDApPT0wKTowKXtpZigoa1soa1tiPj4yXXwwKSs5Nj4+Ml18MCk9PTA/KGtbKGtbYj4+Ml18MCkrODA+PjJdfDApPT0wOjApYnJlYWs7aEEoa1toPj4yXXwwLDApO2tbZT4+Ml09MDt3aGlsZSgxKXtpZigoa1tlPj4yXXwwKT49KGtbKGtbYz4+Ml18MCkrMjA+PjJdfDApKWJyZWFrO2lmKCgoa1soa1tiPj4yXXwwKSs5Nj4+Ml0mMTw8a1tlPj4yXXwwKSE9MHwwKSE9MD8oVmgoa1toPj4yXXwwLGtbZT4+Ml18MCksa1tnPj4yXT1rWyhrWyhrW2M+PjJdfDApKzE2Pj4yXXwwKSsoa1tlPj4yXTw8NCkrMTI+PjJdLFNoKGtbaD4+Ml18MCwyLGtbZT4+Ml18MCwoa1soa1tiPj4yXXwwKSs5Mj4+Ml0mMTw8a1tlPj4yXXwwKSE9MCYxLGtba1tnPj4yXT4+Ml18MCxrWyhrW2c+PjJdfDApKzQ+PjJdfDApfDAsKGxbKGtbYz4+Ml18MCkrMTQ4KzU+PjBdfDApPT0wKTowKVRoKGtbaD4+Ml18MCwxKTtrW2U+PjJdPShrW2U+PjJdfDApKzF9a1tkPj4yXT0wO3doaWxlKDEpe2lmKChrW2Q+PjJdfDApPj0oa1soa1tiPj4yXXwwKSs0MTI+PjJdfDApKWJyZWFrO2c9Y3koa1tjPj4yXXwwLGtbKGtbKGtbYj4+Ml18MCkrNDYwPj4yXXwwKSsoa1tkPj4yXTw8Mik+PjJdfDApfDA7a1tqPj4yXT1nO3d4KGtbaD4+Ml18MCwxNTIsMCwwLDAsa1tqPj4yXXwwLC0xMCl8MDtrW2Q+PjJdPShrW2Q+PjJdfDApKzF9a1soa1tiPj4yXXwwKSs0MTI+PjJdPTA7Wkgoa1tiPj4yXXwwKTtfSChrW2I+PjJdfDApO2E6ZG8gaWYoa1soa1tiPj4yXXwwKSs4MD4+Ml18MCl7a1tmPj4yXT1rWyhrW2I+PjJdfDApKzgwPj4yXTtpWyhrW2I+PjJdfDApKzIzPj4wXT0wO2tbZD4+Ml09MDt3aGlsZSgxKXtpZigoa1tkPj4yXXwwKT49KGtba1tmPj4yXT4+Ml18MCkpYnJlYWsgYTskQShrW2I+PjJdfDAsa1soa1soa1tmPj4yXXwwKSs0Pj4yXXwwKSsoKGtbZD4+Ml18MCkqMjB8MCk+PjJdfDAsa1soa1soa1tmPj4yXXwwKSs0Pj4yXXwwKSsoKGtbZD4+Ml18MCkqMjB8MCkrMTY+PjJdfDApO2tbZD4+Ml09KGtbZD4+Ml18MCkrMX19d2hpbGUoMCk7Z0Eoa1toPj4yXXwwLDEpfDB9d2hpbGUoMCk7aWYoKChrW2g+PjJdfDApIT0wPyhrWyhrW2I+PjJdfDApKzM2Pj4yXXwwKT09MDowKT8oaVsoa1tjPj4yXXwwKSs2OT4+MF18MCk9PTA6MCl7aWYoKGtbKGtbYj4+Ml18MCkrMTIwPj4yXXwwKSE9MD8oa1soa1tiPj4yXXwwKSs0MD4+Ml18MCk9PTA6MClrWyhrW2I+PjJdfDApKzQwPj4yXT0xO1hoKGtbaD4+Ml18MCxrW2I+PjJdfDApO2tbKGtbYj4+Ml18MCkrMTI+PjJdPTEwMTtyPW07cmV0dXJufWtbKGtbYj4+Ml18MCkrMTI+PjJdPTE7cj1tO3JldHVybn1pZihrWyhrW2I+PjJdfDApKzEyPj4yXXwwKXtyPW07cmV0dXJufWtbKGtbYj4+Ml18MCkrMTI+PjJdPTE7cj1tO3JldHVybn1mdW5jdGlvbiBGdihhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wLGg9MDtoPXI7cj1yKzMyfDA7Yz1oKzE2fDA7ZD1oKzEyfDA7ZT1oKzh8MDtnPWgrNHwwO2Y9aDtrW2M+PjJdPWE7a1tkPj4yXT1iO2tbZT4+Ml09a1trW2M+PjJdPj4yXTtpZihreChrW2M+PjJdfDAsMjIsMzc1MjcsMCwwKXwwKXtyPWg7cmV0dXJufWI9bngoa1tjPj4yXXwwKXwwO2tbZz4+Ml09YjtpZighKGtbZz4+Ml18MCkpe3I9aDtyZXR1cm59YTpkbyBpZigoa1tkPj4yXXwwKSE9Nyl7a1tmPj4yXT0wO3doaWxlKDEpe2lmKChrW2Y+PjJdfDApPj0oa1soa1tlPj4yXXwwKSsyMD4+Ml18MCkpYnJlYWsgYTtzeChrW2c+PjJdfDAsMixrW2Y+PjJdfDAsKChrW2Q+PjJdfDApPT05JjEpKzF8MCl8MDtWaChrW2c+PjJdfDAsa1tmPj4yXXwwKTtrW2Y+PjJdPShrW2Y+PjJdfDApKzF9fXdoaWxlKDApO3B4KGtbZz4+Ml18MCwxKXwwO3I9aDtyZXR1cm59ZnVuY3Rpb24gR3YoYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wO2Q9cjtyPXIrMTZ8MDtiPWQrNHwwO2M9ZDtrW2I+PjJdPWE7aWYoa3goa1tiPj4yXXwwLDIyLDM3NTUwLDAsMCl8MCl7cj1kO3JldHVybn1hPW54KGtbYj4+Ml18MCl8MDtrW2M+PjJdPWE7aWYoIShrW2M+PjJdfDApKXtyPWQ7cmV0dXJufWFBKGtbYz4+Ml18MCwxLDEpfDA7cj1kO3JldHVybn1mdW5jdGlvbiBIdihhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTA7ZD1yO3I9cisxNnwwO2I9ZCs0fDA7Yz1kO2tbYj4+Ml09YTtpZihreChrW2I+PjJdfDAsMjIsMzc1NDEsMCwwKXwwKXtyPWQ7cmV0dXJufWE9bngoa1tiPj4yXXwwKXwwO2tbYz4+Ml09YTtpZighKGtbYz4+Ml18MCkpe3I9ZDtyZXR1cm59c3goa1tjPj4yXXwwLDEsMSwxKXwwO3I9ZDtyZXR1cm59ZnVuY3Rpb24gSXYoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGk9MDtoPXI7cj1yKzMyfDA7ZD1oKzE2fDA7ZT1oKzEyfDA7aT1oKzh8MDtnPWgrNHwwO2Y9aDtrW2Q+PjJdPWE7a1tlPj4yXT1iO2tbaT4+Ml09YzthPWJ4KGtba1tkPj4yXT4+Ml18MCxrW2k+PjJdfDApfDA7a1tnPj4yXT1hO2lmKCEoa1tnPj4yXXwwKSl7cj1oO3JldHVybn1pPW54KGtbZD4+Ml18MCl8MDtrW2Y+PjJdPWk7aWYoKGtbZj4+Ml18MCkhPTA/KGt4KGtbZD4+Ml18MCwzMixrWzU1MTIrKGtbZT4+Ml08PDIpPj4yXXwwLGtbZz4+Ml18MCwwKXwwKT09MDowKXt3eChrW2Y+PjJdfDAsMCxrW2U+PjJdfDAsMCwwLGtbZz4+Ml18MCwtMSl8MDtyPWg7cmV0dXJufWJnKGtba1tkPj4yXT4+Ml18MCxrW2c+PjJdfDApO3I9aDtyZXR1cm59ZnVuY3Rpb24gSnYoYSxiLGMsZCxlLGYsZyl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7dmFyIGg9MCxtPTAsbj0wLG89MCxwPTAscT0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wLEU9MCxGPTAsRz0wLEg9MCxJPTAsSj0wO0o9cjtyPXIrMTEyfDA7dD1KKzE2fDA7Rz1KKzh8MDtzPUo7dz1KKzk2fDA7aD1KKzkyfDA7bT1KKzg4fDA7bj1KKzg0fDA7eD1KKzgwfDA7eT1KKzc2fDA7ej1KKzcyfDA7cT1KKzY4fDA7SD1KKzY0fDA7QT1KKzYwfDA7Rj1KKzU2fDA7ST1KKzUyfDA7Qj1KKzQ4fDA7dT1KKzQ0fDA7dj1KKzQwfDA7bz1KKzM2fDA7cD1KKzMyfDA7Qz1KKzI4fDA7RD1KKzI0fDA7RT1KKzIwfDA7a1t3Pj4yXT1hO2tbaD4+Ml09YjtrW20+PjJdPWM7a1tuPj4yXT1kO2tbeD4+Ml09ZTtrW3k+PjJdPWY7a1t6Pj4yXT1nO2tbSD4+Ml09MDtrW0E+PjJdPWtba1t3Pj4yXT4+Ml07aWYoKGxbKGtbQT4+Ml18MCkrMTQ4KzU+PjBdfDApIT0wPyhrWyhrW0E+PjJdfDApKzE0OD4+Ml18MCk9PTE6MCl7a1tJPj4yXT1sWyhrW0E+PjJdfDApKzE0OCs0Pj4wXTtzPUFoKGtbQT4+Ml18MCwoa1tJPj4yXXwwKT09MT8xOTkwNToxOTkyNCl8MDtrW0g+PjJdPXM7a1tCPj4yXT1rW2g+PjJdfWVsc2V7YT1ZeihrW3c+PjJdfDAsa1toPj4yXXwwLGtbbT4+Ml18MCxCKXwwO2tbST4+Ml09YTtpZigoa1tJPj4yXXwwKTwwKXtyPUo7cmV0dXJufWlmKChrW24+PjJdfDApIT0wPygoa1tJPj4yXXwwKSE9MT8oa1soa1ttPj4yXXwwKSs0Pj4yXXwwKT4+PjA+MDowKTowKXtPaChrW3c+PjJdfDAsMzc0MTcscyk7cj1KO3JldHVybn1pZihrW24+PjJdfDApa1tJPj4yXT0xO3M9Yngoa1tBPj4yXXwwLGtbQj4+Ml18MCl8MDtrW0g+PjJdPXN9cz0oa1t3Pj4yXXwwKSszODR8MDthPWtbQj4+Ml18MDtrW3M+PjJdPWtbYT4+Ml07a1tzKzQ+PjJdPWtbYSs0Pj4yXTtpZighKGtbSD4+Ml18MCkpe3I9SjtyZXR1cm59YTpkbyBpZighKGF5KGtbdz4+Ml18MCxrW0g+PjJdfDApfDApKXtpZigobFsoa1tBPj4yXXwwKSsxNDgrND4+MF18MCk9PTEpa1tuPj4yXT0xO2tbdT4+Ml09a1soa1soa1tBPj4yXXwwKSsxNj4+Ml18MCkrKGtbST4+Ml08PDQpPj4yXTtpZighKGt4KGtbdz4+Ml18MCwxOCwoa1tuPj4yXXwwKT09MT8xOTkwNToxOTkyNCwwLGtbdT4+Ml18MCl8MCkpe2lmKChrW3k+PjJdfDApPT0wPyhreChrW3c+PjJdfDAsbFszNzQ1OCsoKGtbbj4+Ml18MCkrKGtbeD4+Ml08PDEpKT4+MF18MCxrW0g+PjJdfDAsMCxrW3U+PjJdfDApfDApIT0wOjApYnJlYWs7ZG8gaWYoIShpWyhrW3c+PjJdfDApKzQxMD4+MF18MCkpe2tbdj4+Ml09a1soa1soa1tBPj4yXXwwKSsxNj4+Ml18MCkrKGtbST4+Ml08PDQpPj4yXTtpZihVeihrW3c+PjJdfDApfDApYnJlYWsgYTt1PURpKGtbQT4+Ml18MCxrW0g+PjJdfDAsa1t2Pj4yXXwwKXwwO2tbcT4+Ml09dTtpZighKGtbcT4+Ml18MCkpe2lmKCEoVWooa1tBPj4yXXwwLGtbSD4+Ml18MCxrW3Y+PjJdfDApfDApKWJyZWFrO0k9a1t3Pj4yXXwwO2tbdD4+Ml09a1tIPj4yXTtPaChJLDM3NDg2LHQpO2JyZWFrIGF9aD1rW3c+PjJdfDA7aWYoa1t6Pj4yXXwwKXtDeChoLGtbST4+Ml18MCk7YnJlYWsgYX1lbHNle2tbRz4+Ml09a1tCPj4yXTtPaChoLDM3NDYyLEcpO2JyZWFrIGF9fXdoaWxlKDApO0c9Q2goa1tBPj4yXXwwLDcyLDApfDA7a1txPj4yXT1HO2lmKCEoa1txPj4yXXwwKSl7a1soa1t3Pj4yXXwwKSsxMj4+Ml09NztJPShrW3c+PjJdfDApKzM2fDA7a1tJPj4yXT0oa1tJPj4yXXwwKSsxO2JyZWFrfWtba1txPj4yXT4+Ml09a1tIPj4yXTtqWyhrW3E+PjJdfDApKzMyPj4xXT0tMTtrWyhrW3E+PjJdfDApKzY0Pj4yXT1rWyhrWyhrW0E+PjJdfDApKzE2Pj4yXXwwKSsoa1tJPj4yXTw8NCkrMTI+PjJdO2pbKGtbcT4+Ml18MCkrMzY+PjFdPTE7alsoa1txPj4yXXwwKSszOD4+MV09MjAwO2tbKGtbdz4+Ml18MCkrNDQwPj4yXT1rW3E+PjJdO2lmKChpWyhrW3c+PjJdfDApKzE4Pj4wXXwwKT09MD8oclIoa1tIPj4yXXwwLDI4ODE3KXwwKT09MDowKWtbKGtbKGtbcT4+Ml18MCkrNjQ+PjJdfDApKzcyPj4yXT1rW3E+PjJdO2lmKGlbKGtbQT4+Ml18MCkrMTQ4KzU+PjBdfDApe3I9SjtyZXR1cm59SD1ueChrW3c+PjJdfDApfDA7a1tGPj4yXT1IO2lmKCFIKXtyPUo7cmV0dXJufUJ4KGtbdz4+Ml18MCwxLGtbST4+Ml18MCk7aWYoa1t5Pj4yXXwwKXB4KGtbRj4+Ml18MCwxNTIpfDA7SD0oa1t3Pj4yXXwwKSs0NHwwO2g9KGtbSD4+Ml18MCkrMXwwO2tbSD4+Ml09aDtrWyhrW3c+PjJdfDApKzEwMD4+Ml09aDtrW0M+PjJdPWg7aD0oa1t3Pj4yXXwwKSs0NHwwO0g9KGtbaD4+Ml18MCkrMXwwO2tbaD4+Ml09SDtrWyhrW3c+PjJdfDApKzEwND4+Ml09SDtrW0Q+PjJdPUg7SD0oa1t3Pj4yXXwwKSs0NHwwO2g9KGtbSD4+Ml18MCkrMXwwO2tbSD4+Ml09aDtrW0U+PjJdPWg7dHgoa1tGPj4yXXwwLDEwMSxrW0k+PjJdfDAsa1tFPj4yXXwwLDIpfDA7Vmgoa1tGPj4yXXwwLGtbST4+Ml18MCk7aD1hQShrW0Y+PjJdfDAsMjEsa1tFPj4yXXwwKXwwO2tbbz4+Ml09aDtrW3A+PjJdPShrWyhrW0E+PjJdfDApKzI0Pj4yXSYzMjc2OHwwKSE9MD8xOjQ7dHgoa1tGPj4yXXwwLDEwMixrW0k+PjJdfDAsMixrW3A+PjJdfDApfDA7dHgoa1tGPj4yXXwwLDEwMixrW0k+PjJdfDAsNSxsWyhrW0E+PjJdfDApKzY2Pj4wXXwwKXwwO2hBKGtbRj4+Ml18MCxrW28+PjJdfDApO2g9a1tGPj4yXXwwO2lmKChrW3g+PjJdfDApIT0wfChrW3k+PjJdfDApIT0wKXN4KGgsNzYsMCxrW0Q+PjJdfDApfDA7ZWxzZXtIPXN4KGgsMTM1LGtbST4+Ml18MCxrW0Q+PjJdfDApfDA7a1soa1t3Pj4yXXwwKSsxMzI+PjJdPUh9WUgoa1t3Pj4yXXwwLGtbST4+Ml18MCk7c3goa1tGPj4yXXwwLDExNCwwLGtbQz4+Ml18MCl8MDt3eChrW0Y+PjJdfDAsODEsNixrW0U+PjJdfDAsMCwzNzUyMSwtMil8MDt0eChrW0Y+PjJdfDAsMTE1LDAsa1tFPj4yXXwwLGtbQz4+Ml18MCl8MDtUaChrW0Y+PjJdfDAsOCk7cHgoa1tGPj4yXXwwLDExMSl8MDtyPUo7cmV0dXJufX13aGlsZSgwKTtiZyhrW0E+PjJdfDAsa1tIPj4yXXwwKTtyPUo7cmV0dXJufWZ1bmN0aW9uIEt2KGEpe2E9YXwwO3ZhciBiPTAsYz0wO2I9cjtyPXIrMTZ8MDtjPWI7a1tjPj4yXT1hO2E9KGtbYz4+Ml18MCkrMjR8MDtpW2E+PjBdPShpW2E+PjBdfDApKzE8PDI0Pj4yNDthPShrW2tbYz4+Ml0+PjJdfDApKzI1NnwwO2tbYT4+Ml09KGtbYT4+Ml18MCkrMTtyPWI7cmV0dXJufWZ1bmN0aW9uIEx2KGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTAsRT0wLEY9MCxHPTAsSD0wLEk9MCxKPTAsSz0wLEw9MCxNPTAsTj0wLE89MCxQPTAsUT0wLFI9MDtSPXI7cj1yKzIwOHwwO0s9Uis3MnwwO0k9Uis2NHwwO009UiszMnwwO0w9UisxNnwwO0o9Uis4fDA7SD1SO2Y9UisyMDB8MDtnPVIrMTk2fDA7aD1SKzE5MnwwO209UisyMDR8MDtuPVIrMTg4fDA7dz1SKzE4NHwwO3E9UisxODB8MDt0PVIrMTc2fDA7ej1SKzE3MnwwO3U9UisxNjh8MDtHPVIrMTY0fDA7UD1SKzE2MHwwO1E9UisxNTZ8MDtPPVIrMTUyfDA7cz1SKzEyOHwwO0Y9UisxMjB8MDtwPVIrMTE2fDA7RD1SKzExMnwwO0U9UisxMDh8MDtvPVIrMTA0fDA7Qz1SKzEwMHwwO3k9Uis5NnwwO3g9Uis5MnwwO0E9Uis4OHwwO0I9Uis4NHwwO049Uis4MHwwO3Y9Uis3NnwwO2tbZj4+Ml09YTtrW2c+PjJdPWI7a1toPj4yXT1jO2lbbT4+MF09ZDtrW24+PjJdPWU7a1txPj4yXT1rW2tbZj4+Ml0+PjJdO2lmKChrW2g+PjJdfDApPT0wJihrW24+PjJdfDApPT0wKXtyPVI7cmV0dXJufWtbdz4+Ml09a1soa1tmPj4yXXwwKSs0NDA+PjJdO2lmKCEoa1t3Pj4yXXwwKSl7cj1SO3JldHVybn1pZigoaVsoa1txPj4yXXwwKSsxNDgrNT4+MF18MCkhPTA/KGtbKGtbdz4+Ml18MCkrMjg+PjJdPWtbKGtbcT4+Ml18MCkrMTQ4Pj4yXSwoa1soa1t3Pj4yXXwwKSsyOD4+Ml18MCk9PTEpOjApe2Q9KGtbdz4+Ml18MCkrNDJ8MDtpW2Q+PjBdPWxbZD4+MF18MX1kbyBpZihsW20+PjBdJjMyKXtpZihsWyhrW3c+PjJdfDApKzQyPj4wXSY4KXtPaChrW2Y+PjJdfDAsMzcwOTgsSCk7cj1SO3JldHVybn1pZighKGxbKGtbdz4+Ml18MCkrNDI+PjBdJjQpKXtIPWtbZj4+Ml18MDtrW0o+PjJdPWtba1t3Pj4yXT4+Ml07T2goSCwzNzE0OCxKKTticmVha31lbHNle0o9KGtbdz4+Ml18MCkrNDJ8MDtpW0o+PjBdPWxbSj4+MF18OTY7U0goa1tmPj4yXXwwLGtbdz4+Ml18MCk7YnJlYWt9fXdoaWxlKDApO0o9UGgoa1txPj4yXXwwLGtbKGtbdz4+Ml18MCkrNjQ+PjJdfDApfDA7a1t0Pj4yXT1KO2lmKGtbKGtbdz4+Ml18MCkrMjQ+PjJdfDApTEgoa1tmPj4yXXwwLGtbdz4+Ml18MCw0LDAsa1soa1t3Pj4yXXwwKSsyND4+Ml18MCk7VEgoa1t3Pj4yXXwwKTtrW3o+PjJdPWtbKGtbdz4+Ml18MCkrOD4+Ml07d2hpbGUoMSl7aWYoIShrW3o+PjJdfDApKWJyZWFrO09IKGtbej4+Ml18MCk7a1t6Pj4yXT1rWyhrW3o+PjJdfDApKzIwPj4yXX1pZighKGlbKGtbcT4+Ml18MCkrMTQ4KzU+PjBdfDApKXtKPW54KGtbZj4+Ml18MCl8MDtrW0c+PjJdPUo7aWYoIShrW0c+PjJdfDApKXtyPVI7cmV0dXJufWFBKGtbRz4+Ml18MCwxMTEsMCl8MDtpZighKGtbKGtbdz4+Ml18MCkrMTI+PjJdfDApKXtrW1A+PjJdPTMyOTkzO2tbUT4+Ml09MzcxODB9ZWxzZXtrW1A+PjJdPTM2MDU4O2tbUT4+Ml09MzcxODZ9ZG8gaWYoa1tuPj4yXXwwKXtIPShrW2Y+PjJdfDApKzQ0fDA7Sj0oa1tIPj4yXXwwKSsxfDA7a1tIPj4yXT1KO2tbRj4+Ml09SjtKPShrW2Y+PjJdfDApKzQ0fDA7SD0oa1tKPj4yXXwwKSsxfDA7a1tKPj4yXT1IO2tbRD4+Ml09SDtIPShrW2Y+PjJdfDApKzQ0fDA7Sj0oa1tIPj4yXXwwKSsxfDA7a1tIPj4yXT1KO2tbRT4+Ml09SjtkeShrW2Y+PjJdfDApO3R4KGtbRz4+Ml18MCwxMDUsMSxrWyhrW2Y+PjJdfDApKzEwND4+Ml18MCxrW3Q+PjJdfDApfDA7VGgoa1tHPj4yXXwwLDE2KTtrWyhrW2Y+PjJdfDApKzQwPj4yXT0yO0o9KEd4KGtbRz4+Ml18MCl8MCkrMXwwO2tbcD4+Ml09Sjt0eChrW0c+PjJdfDAsMTUsa1tGPj4yXXwwLDAsa1twPj4yXXwwKXwwO0ZCKHMsMTMsa1tGPj4yXXwwKTtadihrW2Y+PjJdfDAsa1tuPj4yXXwwLHMpfDA7Z0Qoa1tHPj4yXXwwLGtbRj4+Ml18MCk7aEEoa1tHPj4yXXwwLChrW3A+PjJdfDApLTF8MCk7aWYoa1soa1tmPj4yXXwwKSszNj4+Ml18MCl7cj1SO3JldHVybn1KPWt5KGtbZj4+Ml18MCxrW24+PjJdfDApfDA7a1tDPj4yXT1KO2lmKCEoa1tDPj4yXXwwKSl7cj1SO3JldHVybn1lbHNle2pbKGtbdz4+Ml18MCkrMzQ+PjFdPWpbKGtbQz4+Ml18MCkrMzQ+PjFdfDA7a1soa1t3Pj4yXXwwKSs0Pj4yXT1rWyhrW0M+PjJdfDApKzQ+PjJdO2pbKGtbQz4+Ml18MCkrMzQ+PjFdPTA7a1soa1tDPj4yXXwwKSs0Pj4yXT0wOyRmKGtbcT4+Ml18MCxrW0M+PjJdfDApO0o9YUEoa1tHPj4yXXwwLDE2LGtbcys4Pj4yXXwwKXwwO2tbbz4+Ml09Sjt0eChrW0c+PjJdfDAsOTksa1tzKzEyPj4yXXwwLGtbcysxNj4+Ml18MCxrW0Q+PjJdfDApfDA7akQoa1tHPj4yXXwwLGtbdz4+Ml18MCwwKTtzeChrW0c+PjJdfDAsMTE0LDEsa1tFPj4yXXwwKXwwO3R4KGtbRz4+Ml18MCwxMTUsMSxrW0Q+PjJdfDAsa1tFPj4yXXwwKXwwO2dBKGtbRz4+Ml18MCxrW28+PjJdfDApfDA7aEEoa1tHPj4yXXwwLGtbbz4+Ml18MCk7YUEoa1tHPj4yXXwwLDExMSwxKXwwO2JyZWFrfX13aGlsZSgwKTtpZihrW24+PjJdfDApe1E9VUgoa1txPj4yXXwwLGtbdz4+Ml18MCl8MDtrW08+PjJdPVF9ZWxzZXtrW3k+PjJdPShsW20+PjBdfDApIT0wPyhrW2Y+PjJdfDApKzM5MnwwOmtbaD4+Ml18MDtrW3U+PjJdPShrW2tbeT4+Ml0+PjJdfDApLShrWyhrW2Y+PjJdfDApKzM4ND4+Ml18MCk7aWYoKGlba1trW3k+PjJdPj4yXT4+MF18MCkhPTU5KWtbdT4+Ml09KGtbdT4+Ml18MCkrKGtbKGtbeT4+Ml18MCkrND4+Ml18MCk7Sj1rW3E+PjJdfDA7ZD1rW3U+PjJdfDA7SD1rWyhrW2Y+PjJdfDApKzM4ND4+Ml18MDtrW0w+PjJdPWtbUT4+Ml07a1tMKzQ+PjJdPWQ7a1tMKzg+PjJdPUg7UT1RaChKLDM3MTkxLEwpfDA7a1tPPj4yXT1RfVE9a1tmPj4yXXwwO0U9KGtbdD4+Ml18MCk9PTE/MTk5MDU6MTk5MjQ7Rj1rW1A+PjJdfDA7ZD1rW2tbdz4+Ml0+PjJdfDA7SD1rW2tbdz4+Ml0+PjJdfDA7Sj1rWyhrW2Y+PjJdfDApKzEwND4+Ml18MDtMPWtbTz4+Ml18MDtQPWtbKGtbZj4+Ml18MCkrMTAwPj4yXXwwO2tbTT4+Ml09a1soa1soa1txPj4yXXwwKSsxNj4+Ml18MCkrKGtbdD4+Ml08PDQpPj4yXTtrW00rND4+Ml09RTtrW00rOD4+Ml09RjtrW00rMTI+PjJdPWQ7a1tNKzE2Pj4yXT1IO2tbTSsyMD4+Ml09SjtrW00rMjQ+PjJdPUw7a1tNKzI4Pj4yXT1QO214KFEsMzcyMDYsTSk7Ymcoa1txPj4yXXwwLGtbTz4+Ml18MCk7b3goa1tmPj4yXXwwLGtbdD4+Ml18MCk7aWYoKGxbKGtbdz4+Ml18MCkrNDI+PjBdJjh8MCkhPTA/KGtbeD4+Ml09KGtbKGtbcT4+Ml18MCkrMTY+PjJdfDApKyhrW3Q+PjJdPDw0KSwoa1soa1soa1t4Pj4yXXwwKSsxMj4+Ml18MCkrNzI+PjJdfDApPT0wKTowKXtRPWtbZj4+Ml18MDtrW0k+PjJdPWtba1t4Pj4yXT4+Ml07bXgoUSwzNzI5MyxJKX1PPWtbRz4+Ml18MDtQPWtbdD4+Ml18MDtRPWtbcT4+Ml18MDtrW0s+PjJdPWtba1t3Pj4yXT4+Ml07cXgoTyxQLFFoKFEsMzczMzUsSyl8MCl9aWYoIShpWyhrW3E+PjJdfDApKzE0OCs1Pj4wXXwwKSl7cj1SO3JldHVybn1rW0I+PjJdPWtbKGtbdz4+Ml18MCkrNjQ+PjJdO1E9Y2soKGtbQj4+Ml18MCkrOHwwLGtba1t3Pj4yXT4+Ml18MCxrW3c+PjJdfDApfDA7a1tBPj4yXT1RO2lmKGtbQT4+Ml18MCl7d2goa1txPj4yXXwwKTtyPVI7cmV0dXJufWtbKGtbZj4+Ml18MCkrNDQwPj4yXT0wO1E9KGtbcT4+Ml18MCkrMjR8MDtrW1E+PjJdPWtbUT4+Ml18MjtpZihrWyhrW3c+PjJdfDApKzEyPj4yXXwwKXtyPVI7cmV0dXJufWtbTj4+Ml09a1soa1tmPj4yXXwwKSszODQ+PjJdO2lmKCEoa1trW2c+PjJdPj4yXXwwKSlrW2c+PjJdPWtbaD4+Ml07a1t2Pj4yXT0oa1trW2c+PjJdPj4yXXwwKS0oa1tOPj4yXXwwKTtRPTEzKyhleShrW04+PjJdfDAsa1t2Pj4yXXwwKXwwKXwwO2tbKGtbdz4+Ml18MCkrNDQ+PjJdPVE7cj1SO3JldHVybn1mdW5jdGlvbiBNdihhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsbT0wLG49MCxvPTAscD0wLHE9MCxzPTAsdD0wLHU9MCx2PTA7dj1yO3I9cis2NHwwO3E9dis4fDA7cD12O2Q9dis0OHwwO2U9dis0NHwwO2Y9dis0MHwwO249diszNnwwO209diszMnwwO3M9disyOHwwO3Q9disyNHwwO289disyMHwwO2g9disxNnwwO2c9disxMnwwO2tbZD4+Ml09YTtrW2U+PjJdPWI7a1tmPj4yXT1jO2tbaD4+Ml09a1trW2Q+PjJdPj4yXTtjPWtbKGtbZD4+Ml18MCkrNDQwPj4yXXwwO2tbbj4+Ml09YztpZighYyl7cj12O3JldHVybn1pZigoKGpbKGtbbj4+Ml18MCkrMzQ+PjFdfDApKzF8MCk+KGtbKGtbaD4+Ml18MCkrOTYrOD4+Ml18MCkpe3U9a1tkPj4yXXwwO2tbcD4+Ml09a1trW24+PjJdPj4yXTtPaCh1LDM3MDQ5LHApO3I9djtyZXR1cm59cD1NaChrW2g+PjJdfDAsKGtbKGtbZT4+Ml18MCkrND4+Ml18MCkrKGtbKGtbZj4+Ml18MCkrND4+Ml18MCkrMnwwLDApfDA7a1tzPj4yXT1wO2lmKCEoa1tzPj4yXXwwKSl7cj12O3JldHVybn1iUyhrW3M+PjJdfDAsa1trW2U+PjJdPj4yXXwwLGtbKGtbZT4+Ml18MCkrND4+Ml18MCl8MDtpWyhrW3M+PjJdfDApKyhrWyhrW2U+PjJdfDApKzQ+PjJdfDApPj4wXT0wO2h4KGtbcz4+Ml18MCk7a1ttPj4yXT0wO3doaWxlKDEpe2lmKChrW20+PjJdfDApPj0oalsoa1tuPj4yXXwwKSszND4+MV18MCkpYnJlYWs7aWYoIShiZShrW3M+PjJdfDAsa1soa1soa1tuPj4yXXwwKSs0Pj4yXXwwKSsoa1ttPj4yXTw8NCk+PjJdfDApfDApKXt1PTg7YnJlYWt9a1ttPj4yXT0oa1ttPj4yXXwwKSsxfWlmKCh1fDApPT04KXt1PWtbZD4+Ml18MDtrW3E+PjJdPWtbcz4+Ml07T2godSwzNzA3MixxKTtiZyhrW2g+PjJdfDAsa1tzPj4yXXwwKTtyPXY7cmV0dXJufWRvIGlmKCEoalsoa1tuPj4yXXwwKSszND4+MV0mNykpe3U9Y3goa1toPj4yXXwwLGtbKGtbbj4+Ml18MCkrND4+Ml18MCwoalsoa1tuPj4yXXwwKSszND4+MV18MCkrODw8NCwwKXwwO2tbZz4+Ml09dTtpZihrW2c+PjJdfDApe2tbKGtbbj4+Ml18MCkrND4+Ml09a1tnPj4yXTticmVha31iZyhrW2g+PjJdfDAsa1tzPj4yXXwwKTtyPXY7cmV0dXJufXdoaWxlKDApO2tbbz4+Ml09KGtbKGtbbj4+Ml18MCkrND4+Ml18MCkrKGpbKGtbbj4+Ml18MCkrMzQ+PjFdPDw0KTt1PWtbbz4+Ml18MDtrW3U+PjJdPTA7a1t1KzQ+PjJdPTA7a1t1Kzg+PjJdPTA7a1t1KzEyPj4yXT0wO2tba1tvPj4yXT4+Ml09a1tzPj4yXTtpZighKGtbKGtbZj4+Ml18MCkrND4+Ml18MCkpe2lbKGtbbz4+Ml18MCkrMTM+PjBdPTY1O2lbKGtbbz4+Ml18MCkrMTQ+PjBdPTF9ZWxzZXt1PWtbcz4+Ml18MDt1PXUrKFRmKGtbcz4+Ml18MCl8MCkrMXwwO2tbdD4+Ml09dTtiUyhrW3Q+PjJdfDAsa1trW2Y+PjJdPj4yXXwwLGtbKGtbZj4+Ml18MCkrND4+Ml18MCl8MDtpWyhrW3Q+PjJdfDApKyhrWyhrW2Y+PjJdfDApKzQ+PjJdfDApPj4wXT0wO2h4KGtbdD4+Ml18MCk7dT1OeChrW3Q+PjJdfDAsKGtbbz4+Ml18MCkrMTR8MCl8MDtpWyhrW28+PjJdfDApKzEzPj4wXT11O3U9KGtbbz4+Ml18MCkrMTV8MDtpW3U+PjBdPWxbdT4+MF18NH11PShrW24+PjJdfDApKzM0fDA7alt1Pj4xXT0oalt1Pj4xXXwwKSsxPDwxNj4+MTY7a1soa1tkPj4yXXwwKSs4NCs0Pj4yXT0wO3I9djtyZXR1cm59ZnVuY3Rpb24gTnYoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTAsbD0wLG09MDttPXI7cj1yKzgwfDA7ZT1tO2M9bSs3MnwwO2Y9bSs2OHwwO2Q9bSs2NHwwO2g9bSs2MHwwO2c9bSs1NnwwO2w9bSs4fDA7a1tjPj4yXT1hO2tbZj4+Ml09YjtrW2c+PjJdPWtba1tjPj4yXT4+Ml07a1tkPj4yXT1rWyhrW2M+PjJdfDApKzQ0MD4+Ml07aWYoIShrW2Q+PjJdfDApKXtoPWtbZz4+Ml18MDtsPWtbZj4+Ml18MDtsPWtbbD4+Ml18MDtzdihoLGwpO3I9bTtyZXR1cm59a1toPj4yXT0oa1soa1tkPj4yXXwwKSs0Pj4yXXwwKSsoKGpbKGtbZD4+Ml18MCkrMzQ+PjFdfDApLTE8PDQpO2lmKFJIKGtba1tmPj4yXT4+Ml18MCxpWyhrW2c+PjJdfDApKzE0OCs1Pj4wXXwwKXwwKXtzdihrW2c+PjJdfDAsa1soa1toPj4yXXwwKSs0Pj4yXXwwKTtjPWw7ZD1jKzQ4fDA7ZG97a1tjPj4yXT0wO2M9Yys0fDB9d2hpbGUoKGN8MCk8KGR8MCkpO2lbbD4+MF09LTk1O2U9KGtbKGtbZj4+Ml18MCkrOD4+Ml18MCktKGtbKGtbZj4+Ml18MCkrND4+Ml18MCl8MDtlPWd4KGtbZz4+Ml18MCxrWyhrW2Y+PjJdfDApKzQ+PjJdfDAsZSwoKGV8MCk8MCk8PDMxPj4zMSl8MDtrW2wrOD4+Ml09ZTtrW2wrMTI+PjJdPWtba1tmPj4yXT4+Ml07a1tsKzQ+PjJdPTQwOTY7ZT1TeShrW2c+PjJdfDAsbCwxKXwwO2tbKGtbaD4+Ml18MCkrND4+Ml09ZTtiZyhrW2c+PjJdfDAsa1tsKzg+PjJdfDApO2g9a1tnPj4yXXwwO2w9a1tmPj4yXXwwO2w9a1tsPj4yXXwwO3N2KGgsbCk7cj1tO3JldHVybn1lbHNle2w9a1tjPj4yXXwwO2tbZT4+Ml09a1trW2g+PjJdPj4yXTtPaChsLDM3MDA0LGUpO2g9a1tnPj4yXXwwO2w9a1tmPj4yXXwwO2w9a1tsPj4yXXwwO3N2KGgsbCk7cj1tO3JldHVybn19ZnVuY3Rpb24gT3YoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaT0wLGo9MCxsPTAsbT0wO209cjtyPXIrMzJ8MDtmPW0rMjB8MDtnPW0rMTZ8MDtoPW0rMTJ8MDtpPW0rOHwwO2o9bSs0fDA7bD1tO2tbZj4+Ml09YTtrW2c+PjJdPWI7a1toPj4yXT1jO2tbaT4+Ml09ZDtrW2o+PjJdPWU7aWYoKGtbZz4+Ml18MCk9PTI4PyhrWyhrW2Y+PjJdfDApKzM2Pj4yXXwwKT09MDowKXtlPUd6KGtba1tmPj4yXT4+Ml18MCxrW2g+PjJdfDAsa1tpPj4yXXwwKXwwO2tbbD4+Ml09ZX1lbHNle2U9dHcoa1trW2Y+PjJdPj4yXXwwLGtbZz4+Ml0mMjU1LGtbaj4+Ml18MCwxKXwwO2tbbD4+Ml09ZTtJeihrW2tbZj4+Ml0+PjJdfDAsa1tsPj4yXXwwLGtbaD4+Ml18MCxrW2k+PjJdfDApfWlmKCEoa1tsPj4yXXwwKSl7ZT1rW2w+PjJdfDA7cj1tO3JldHVybiBlfDB9aHooa1tmPj4yXXwwLGtbKGtbbD4+Ml18MCkrMjQ+PjJdfDApfDA7ZT1rW2w+PjJdfDA7cj1tO3JldHVybiBlfDB9ZnVuY3Rpb24gUHYoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxtPTA7aD1yO3I9cisxNnwwO2U9aCsxMnwwO209aCs4fDA7Zj1oKzR8MDtnPWg7a1tlPj4yXT1hO2tbbT4+Ml09YjtrW2Y+PjJdPWM7Yj1keChrW2tbbT4+Ml0+PjJdfDAsNDgrKGtbZCs0Pj4yXXwwKSsxfDAsMCl8MDtrW2c+PjJdPWI7aWYoIShrW2c+PjJdfDApKXttPWtbZz4+Ml18MDtnPWtbZT4+Ml18MDtrW2c+PjJdPW07Zz1rW2Q+PjJdfDA7bT1rW2U+PjJdfDA7bT1tKzR8MDtrW20+PjJdPWc7bT1kKzR8MDttPWtbbT4+Ml18MDtkPWtbZD4+Ml18MDtkPWQrbXwwO209a1tlPj4yXXwwO209bSs4fDA7a1ttPj4yXT1kO3I9aDtyZXR1cm59Yz1rW2c+PjJdfDA7YT1jKzQ4fDA7ZG97a1tjPj4yXT0wO2M9Yys0fDB9d2hpbGUoKGN8MCk8KGF8MCkpO2lba1tnPj4yXT4+MF09a1tmPj4yXTtrWyhrW2c+PjJdfDApKzQ+PjJdPTgzODg2MDg7alsoa1tnPj4yXXwwKSszND4+MV09LTE7a1soa1tnPj4yXXwwKSs4Pj4yXT0oa1tnPj4yXXwwKSs0ODtiUyhrWyhrW2c+PjJdfDApKzg+PjJdfDAsa1tkPj4yXXwwLGtbZCs0Pj4yXXwwKXwwO2lbKGtbKGtbZz4+Ml18MCkrOD4+Ml18MCkrKGtbZCs0Pj4yXXwwKT4+MF09MDtpZihsWzE4NDAzKyhsW2tbKGtbZz4+Ml18MCkrOD4+Ml0+PjBdfDApPj4wXSYxMjgpe2lmKChpW2tbKGtbZz4+Ml18MCkrOD4+Ml0+PjBdfDApPT0zNCl7bT0oa1tnPj4yXXwwKSs0fDA7a1ttPj4yXT1rW20+PjJdfDY0fWh4KGtbKGtbZz4+Ml18MCkrOD4+Ml18MCl9a1soa1tnPj4yXXwwKSsyND4+Ml09MTttPWtbZz4+Ml18MDtnPWtbZT4+Ml18MDtrW2c+PjJdPW07Zz1rW2Q+PjJdfDA7bT1rW2U+PjJdfDA7bT1tKzR8MDtrW20+PjJdPWc7bT1kKzR8MDttPWtbbT4+Ml18MDtkPWtbZD4+Ml18MDtkPWQrbXwwO209a1tlPj4yXXwwO209bSs4fDA7a1ttPj4yXT1kO3I9aDtyZXR1cm59ZnVuY3Rpb24gUXYoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wO2U9cjtyPXIrMTZ8MDtmPWUrOHwwO2M9ZSs0fDA7ZD1lO2tbZj4+Ml09YTtrW2M+PjJdPWI7a1tkPj4yXT1rWyhrW2Y+PjJdfDApKzQ0MD4+Ml07aWYoIShrW2Q+PjJdfDApKXtyPWU7cmV0dXJufWlmKChqWyhrW2Q+PjJdfDApKzM0Pj4xXXwwKTwxKXtyPWU7cmV0dXJufWlbKGtbKGtbZD4+Ml18MCkrND4+Ml18MCkrKChqWyhrW2Q+PjJdfDApKzM0Pj4xXXwwKS0xPDw0KSsxMj4+MF09a1tjPj4yXTtyPWU7cmV0dXJufWZ1bmN0aW9uIFJ2KGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wO3k9cjtyPXIrNjR8MDt4PXkrOHwwO2Y9eTtzPXkrNTZ8MDt0PXkrNTJ8MDt1PXkrNDh8MDt2PXkrNDR8MDt3PXkrNDB8MDtwPXkrMzZ8MDtvPXkrMzJ8MDtoPXkrMjh8MDtnPXkrMjR8MDttPXkrMjB8MDtuPXkrMTZ8MDtxPXkrMTJ8MDtrW3M+PjJdPWE7a1t0Pj4yXT1iO2tbdT4+Ml09YztrW3Y+PjJdPWQ7a1t3Pj4yXT1lO2tbcD4+Ml09a1soa1tzPj4yXXwwKSs0NDA+PjJdO2tbbz4+Ml09MDtrW2g+PjJdPS0xO2lmKCEoa1twPj4yXXwwKSl7dz1rW3M+PjJdfDA7dz1rW3c+PjJdfDA7eD1rW3Q+PjJdfDA7b3Yodyx4KTtyPXk7cmV0dXJufWlmKGxbKGtbcD4+Ml18MCkrNDI+PjBdJjQpe3c9a1tzPj4yXXwwO2tbZj4+Ml09a1trW3A+PjJdPj4yXTtPaCh3LDM2OTA3LGYpO3c9a1tzPj4yXXwwO3c9a1t3Pj4yXXwwO3g9a1t0Pj4yXXwwO292KHcseCk7cj15O3JldHVybn1mPShrW3A+PjJdfDApKzQyfDA7aVtmPj4wXT1sW2Y+PjBdfDQ7YTpkbyBpZighKGtbdD4+Ml18MCkpe2tbaD4+Ml09KGpbKGtbcD4+Ml18MCkrMzQ+PjFdfDApLTE7a1tvPj4yXT0oa1soa1twPj4yXXwwKSs0Pj4yXXwwKSsoa1toPj4yXTw8NCk7cT0oa1tvPj4yXXwwKSsxNXwwO2lbcT4+MF09bFtxPj4wXXwxO2tbbT4+Ml09MX1lbHNle2tbbT4+Ml09a1trW3Q+PjJdPj4yXTtrW2c+PjJdPTA7d2hpbGUoMSl7aWYoKGtbZz4+Ml18MCk+PShrW20+PjJdfDApKWJyZWFrIGE7Zj11eShrWyhrWyhrW3Q+PjJdfDApKzQ+PjJdfDApKygoa1tnPj4yXXwwKSoyMHwwKT4+Ml18MCl8MDtrW24+PjJdPWY7TUgoa1tuPj4yXXwwKTtiOmRvIGlmKChsW2tbbj4+Ml0+PjBdfDApPT01NSl7a1txPj4yXT1rWyhrW24+PjJdfDApKzg+PjJdO2tbaD4+Ml09MDt3aGlsZSgxKXtpZigoa1toPj4yXXwwKT49KGpbKGtbcD4+Ml18MCkrMzQ+PjFdfDApKWJyZWFrIGI7Zj0oc2coa1txPj4yXXwwLGtbKGtbKGtbcD4+Ml18MCkrND4+Ml18MCkrKGtbaD4+Ml08PDQpPj4yXXwwKXwwKT09MDtkPWtbaD4+Ml18MDtpZihmKWJyZWFrO2tbaD4+Ml09ZCsxfWtbbz4+Ml09KGtbKGtbcD4+Ml18MCkrND4+Ml18MCkrKGQ8PDQpO2Y9KGtbbz4+Ml18MCkrMTV8MDtpW2Y+PjBdPWxbZj4+MF18MX13aGlsZSgwKTtrW2c+PjJdPShrW2c+PjJdfDApKzF9fXdoaWxlKDApO2lmKChrW20+PjJdfDApPT0xJihrW28+PjJdfDApIT0wPyhxPShzZyhGaShrW28+PjJdfDAsMTg0MDIpfDAsMTg3NTkpfDApPT0wLHEmKGtbdz4+Ml18MCkhPTEpOjApe2pbKGtbcD4+Ml18MCkrMzI+PjFdPWtbaD4+Ml07aVsoa1twPj4yXXwwKSs0Mz4+MF09a1t1Pj4yXTt4PShrW3A+PjJdfDApKzQyfDA7aVt4Pj4wXT1sW3g+PjBdfGtbdj4+Ml08PDM7aWYoIShrW3Q+PjJdfDApKXt3PWtbcz4+Ml18MDt3PWtbdz4+Ml18MDt4PWtbdD4+Ml18MDtvdih3LHgpO3I9eTtyZXR1cm59aVsoa1tzPj4yXXwwKSs0MDg+PjBdPWlbKGtbKGtbdD4+Ml18MCkrND4+Ml18MCkrMTI+PjBdfDA7dz1rW3M+PjJdfDA7dz1rW3c+PjJdfDA7eD1rW3Q+PjJdfDA7b3Yodyx4KTtyPXk7cmV0dXJufWQ9a1tzPj4yXXwwO2lmKGtbdj4+Ml18MCl7T2goZCwzNjk0OCx4KTt3PWtbcz4+Ml18MDt3PWtbdz4+Ml18MDt4PWtbdD4+Ml18MDtvdih3LHgpO3I9eTtyZXR1cm59ZWxzZXtTdihkLDAsMCwwLGtbdD4+Ml18MCxrW3U+PjJdfDAsMCwwLGtbdz4+Ml18MCwwLDIpO2tbdD4+Ml09MDt3PWtbcz4+Ml18MDt3PWtbdz4+Ml18MDt4PWtbdD4+Ml18MDtvdih3LHgpO3I9eTtyZXR1cm59fWZ1bmN0aW9uIFN2KGEsYixjLGQsZSxmLGcsaCxuLG8scCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7bj1ufDA7bz1vfDA7cD1wfDA7dmFyIHE9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MCxFPTAsRj0wLEc9MCxIPTAsST0wLEo9MCxLPTAsTD0wLE09MCxOPTAsTz0wLFA9MCxRPTAsUj0wLFM9MCxUPTAsVT0wLFY9MCxXPTAsWD0wLFk9MCxaPTAsXz0wLCQ9MCxhYT0wLGJhPTAsY2E9MCxkYT0wLGVhPTAsZmE9MCxnYT0wLGhhPTAsaWE9MCxqYT0wLGthPTAsbGE9MCxtYT0wLG5hPTAsb2E9MCxwYT0wLHFhPTAscmE9MCxzYT0wLHRhPTAsdWE9MCx2YT0wLHdhPTAseGE9MCx5YT0wLHphPTA7emE9cjtyPXIrMzUyfDA7Z2E9emErMTEyfDA7ZmE9emErODh8MDtlYT16YSs3MnwwO2RhPXphKzY0fDA7Y2E9emErNTZ8MDtDPXphKzQ4fDA7YmE9emErNDB8MDtCPXphKzMyfDA7QT16YSsyNHwwO0U9emErMTZ8MDtEPXphKzh8MDt6PXphO0c9emErMzMyfDA7cT16YSszMjh8MDtzPXphKzMyNHwwO3RhPXphKzMyMHwwO3VhPXphKzMxNnwwO25hPXphKzMxMnwwO0k9emErMzA4fDA7dmE9emErMzA0fDA7dD16YSszMDB8MDtKPXphKzI5NnwwO0g9emErMzM2fDA7cWE9emErMjkyfDA7eGE9emErMjg4fDA7eWE9emErMjg0fDA7Uz16YSsyODB8MDtLPXphKzI3NnwwO009emErMjcyfDA7eT16YSsyNDh8MDskPXphKzI0MHwwO3dhPXphKzIzNnwwO1Y9emErMjMyfDA7b2E9emErMjI4fDA7WT16YSsyMjR8MDtYPXphKzIyMHwwO1E9emErMjE2fDA7Uj16YSsyMTJ8MDtsYT16YSsyMDh8MDtaPXphKzIwNHwwO3U9emErMjAwfDA7dz16YSsxOTZ8MDtGPXphKzE5MnwwO3g9emErMTg0fDA7dj16YSsxODB8MDtUPXphKzE3NnwwO189emErMTcyfDA7a2E9emErMTY4fDA7VT16YSsxNjR8MDtQPXphKzE2MHwwO2hhPXphKzE1NnwwO1c9emErMTUyfDA7Tj16YSsxNDh8MDtpYT16YSsxNDR8MDtqYT16YSsxNDB8MDtwYT16YSsxMzZ8MDthYT16YSsxMzJ8MDttYT16YSsxMjh8MDtMPXphKzEyNHwwO089emErMTIwfDA7cmE9emErMTE2fDA7a1tHPj4yXT1hO2tbcT4+Ml09YjtrW3M+PjJdPWM7a1t0YT4+Ml09ZDtrW3VhPj4yXT1lO2tbbmE+PjJdPWY7a1tJPj4yXT1nO2tbdmE+PjJdPWg7a1t0Pj4yXT1uO2tbSj4+Ml09bztpW0g+PjBdPXA7a1txYT4+Ml09MDtrW3hhPj4yXT0wO2tbeWE+PjJdPTA7a1t3YT4+Ml09a1trW0c+PjJdPj4yXTtrW1k+PjJdPTA7a1tRPj4yXT0wO2tbbGE+PjJdPTA7a1taPj4yXT0wO2E6ZG8gaWYoKGxbKGtbd2E+PjJdfDApKzY5Pj4wXXwwKT09MD8oa1soa1tHPj4yXXwwKSszNj4+Ml18MCk8PTA6MCl7aWYoKGxbKGtbRz4+Ml18MCkrNDEwPj4wXXwwKSE9MD8obFtIPj4wXXwwKSE9MjowKWJyZWFrO2lmKCEoVXooa1tHPj4yXXwwKXwwKSl7cD1rW0c+PjJdfDA7aWYoa1t0YT4+Ml18MCl7cT1ZeihwLGtbcT4+Ml18MCxrW3M+PjJdfDAsWSl8MDtrW29hPj4yXT1xO2lmKChrW29hPj4yXXwwKTwwKWJyZWFrO2lmKCgoaVsoa1t3YT4+Ml18MCkrMTQ4KzU+PjBdfDApPT0wPyhxPWxDKGtbRz4+Ml18MCxrW3RhPj4yXXwwKXwwLGtbcWE+PjJdPXEsKGtbcWE+PjJdfDApIT0wPyhrWyhrW3M+PjJdfDApKzQ+PjJdfDApPT0wOjApOjApPyhrWyhrW3FhPj4yXXwwKSs2ND4+Ml18MCk9PShrWyhrWyhrW3dhPj4yXXwwKSsxNj4+Ml18MCkrMTYrMTI+PjJdfDApOjApa1tvYT4+Ml09MTttQyh5LGtbRz4+Ml18MCxrW29hPj4yXXwwLDMzMTU4LGtbWT4+Ml18MCk7bkMoeSxrW3RhPj4yXXwwKXwwO3k9engoa1tHPj4yXXwwLDAsKGtbdGE+PjJdfDApKzh8MCl8MDtrW3FhPj4yXT15O2lmKCEoa1txYT4+Ml18MCkpYnJlYWs7aWYoKGtbb2E+PjJdfDApPT0xPyhrWyhrWyhrW3dhPj4yXXwwKSsxNj4+Ml18MCkrKGtbb2E+PjJdPDw0KSsxMj4+Ml18MCkhPShrWyhrW3FhPj4yXXwwKSs2ND4+Ml18MCk6MCl7c2E9a1tHPj4yXXwwO2tbej4+Ml09a1trW3FhPj4yXT4+Ml07T2goc2EsMzY0NzMseik7YnJlYWt9aWYobFsoa1txYT4+Ml18MCkrNDI+PjBdJjMyKXt6PVRqKGtbcWE+PjJdfDApfDA7a1taPj4yXT16fX1lbHNle2tbcWE+PjJdPWtbcCs0NDA+PjJdO2lmKCEoa1txYT4+Ml18MCkpYnJlYWs7ej1QaChrW3dhPj4yXXwwLGtbKGtbcWE+PjJdfDApKzY0Pj4yXXwwKXwwO2tbb2E+PjJdPXp9a1tWPj4yXT0oa1soa1t3YT4+Ml18MCkrMTY+PjJdfDApKyhrW29hPj4yXTw8NCk7aWYoKChKZChrW2tbcWE+PjJdPj4yXXwwLDI3ODQ0LDcpfDApPT0wPyhsWyhrW3dhPj4yXXwwKSsxNDgrNT4+MF18MCk9PTA6MCk/KEpkKChrW2tbcWE+PjJdPj4yXXwwKSs3fDAsMzY1MjMsOSl8MCkhPTA6MCl7c2E9a1tHPj4yXXwwO2tbRD4+Ml09a1trW3FhPj4yXT4+Ml07T2goc2EsMzY1MzMsRCk7YnJlYWt9aWYoa1soa1txYT4+Ml18MCkrMTI+PjJdfDApe09oKGtbRz4+Ml18MCwzNjU2MSxFKTticmVha31pZihsWyhrW3FhPj4yXXwwKSs0Mj4+MF0mMTYpe09oKGtbRz4+Ml18MCwzNjU4NixBKTticmVha31pZihrW1k+PjJdfDApe0U9Yngoa1t3YT4+Ml18MCxrW1k+PjJdfDApfDA7a1t5YT4+Ml09RTtpZighKGtbeWE+PjJdfDApKWJyZWFrO2lmKGF5KGtbRz4+Ml18MCxrW3lhPj4yXXwwKXwwKWJyZWFrO2lmKChpWyhrW3dhPj4yXXwwKSsxNDgrNT4+MF18MCk9PTA/KERpKGtbd2E+PjJdfDAsa1t5YT4+Ml18MCwwKXwwKSE9MDowKXtzYT1rW0c+PjJdfDA7a1tCPj4yXT1rW3lhPj4yXTtPaChzYSwzNjYyMCxCKTticmVha31pZihVaihrW3dhPj4yXXwwLGtbeWE+PjJdfDAsa1trW1Y+PjJdPj4yXXwwKXwwKXtwPWtbRz4+Ml18MDtpZihrW0o+PjJdfDApe0N4KHAsa1tvYT4+Ml18MCk7YnJlYWt9ZWxzZXtrW2JhPj4yXT1rW3lhPj4yXTtPaChwLDM2NjU0LGJhKTticmVha319fWVsc2V7a1t3Pj4yXT1rWyhrW3FhPj4yXXwwKSs4Pj4yXTtrW3U+PjJdPTE7d2hpbGUoMSl7aWYoIShrW3c+PjJdfDApKWJyZWFrO2tbdz4+Ml09a1soa1t3Pj4yXXwwKSsyMD4+Ml07a1t1Pj4yXT0oa1t1Pj4yXXwwKSsxfWJhPWtbd2E+PjJdfDA7Sj1rW3U+PjJdfDA7a1tDPj4yXT1rW2tbcWE+PjJdPj4yXTtrW0MrND4+Ml09SjtiYT1RaChiYSwzNjY3OCxDKXwwO2tbeWE+PjJdPWJhO2lmKCEoa1t5YT4+Ml18MCkpYnJlYWs7aWYoaVsoa1tHPj4yXXwwKSs0MTA+PjBdfDApe2JhPShrW3lhPj4yXXwwKSs3fDA7aVtiYT4+MF09KGlbYmE+PjBdfDApKzE8PDI0Pj4yNH19a1tGPj4yXT1rW2tbVj4+Ml0+PjJdO2lmKChreChrW0c+PjJdfDAsMTgsKGtbb2E+PjJdfDApPT0xPzE5OTA1OjE5OTI0LDAsa1tGPj4yXXwwKXwwKT09MD8oa1tLPj4yXT0xLGtbSz4+Ml09KGtbb2E+PjJdfDApPT0xPzM6MSwoa3goa1tHPj4yXXwwLGtbSz4+Ml18MCxrW3lhPj4yXXwwLGtba1txYT4+Ml0+PjJdfDAsa1tGPj4yXXwwKXwwKT09MCk6MCl7aWYoIShrW3VhPj4yXXwwKSl7ZnooeCxrWyhrWyhrW3FhPj4yXXwwKSs0Pj4yXXwwKSsoKGpbKGtbcWE+PjJdfDApKzM0Pj4xXXwwKS0xPDw0KT4+Ml18MCk7YmE9a1tHPj4yXXwwO2JhPWJ3KGJhLDAsdHcoa1t3YT4+Ml18MCw1NSx4LDApfDApfDA7a1t1YT4+Ml09YmE7aWYoIShrW3VhPj4yXXwwKSlicmVhaztrdyhrW3VhPj4yXXwwLGtbdD4+Ml18MCl9ZWxzZSBudyhrW0c+PjJdfDAsa1t1YT4+Ml18MCwzMzE1OCk7a1tLPj4yXT0wO3doaWxlKDEpe2lmKChrW0s+PjJdfDApPj0oa1trW3VhPj4yXT4+Ml18MCkpYnJlYWs7a1t2Pj4yXT1rWyhrWyhrW3VhPj4yXXwwKSs0Pj4yXXwwKSsoKGtbSz4+Ml18MCkqMjB8MCk+PjJdO2lmKChsW2tbdj4+Ml0+PjBdfDApPT01Myl7YmE9MSsoVGYoa1soa1t2Pj4yXXwwKSs4Pj4yXXwwKXwwKXwwO2tbUT4+Ml09KGtbUT4+Ml18MCkrYmF9a1tLPj4yXT0oa1tLPj4yXXwwKSsxfWJhPVRmKGtbeWE+PjJdfDApfDA7a1tTPj4yXT1iYTtpZihrW1o+PjJdfDApcD1tWyhrW1o+PjJdfDApKzUwPj4xXXwwO2Vsc2UgcD0xO2tbUj4+Ml09cDtiYT11RShrW3dhPj4yXXwwLChrW2tbdWE+PjJdPj4yXXwwKSsoa1tSPj4yXXwwKSY2NTUzNSwoa1tTPj4yXXwwKSsoa1tRPj4yXXwwKSsxfDAsbGEpfDA7a1t4YT4+Ml09YmE7aWYoIShpWyhrW3dhPj4yXXwwKSs2OT4+MF18MCkpe2tba1t4YT4+Ml0+PjJdPWtbbGE+PjJdO2tbbGE+PjJdPShrW2xhPj4yXXwwKSsoKGtbUz4+Ml18MCkrMSk7YlMoa1trW3hhPj4yXT4+Ml18MCxrW3lhPj4yXXwwLChrW1M+PjJdfDApKzF8MCl8MDtrWyhrW3hhPj4yXXwwKSsxMj4+Ml09a1txYT4+Ml07aVsoa1t4YT4+Ml18MCkrNTQ+PjBdPWtbbmE+PjJdO2JhPShrW3hhPj4yXXwwKSs1NXwwO2lbYmE+PjBdPWlbYmE+PjBdJi05fCgoa1tuYT4+Ml18MCkhPTAmMSk8PDMmMjU1O2JhPShrW3hhPj4yXXwwKSs1NXwwO2lbYmE+PjBdPWlbYmE+PjBdJi00fGxbSD4+MF0mMztrWyhrW3hhPj4yXXwwKSsyND4+Ml09a1soa1soa1t3YT4+Ml18MCkrMTY+PjJdfDApKyhrW29hPj4yXTw8NCkrMTI+PjJdO2pbKGtbeGE+PjJdfDApKzUwPj4xXT1rW2tbdWE+PjJdPj4yXTtpZihrW3ZhPj4yXXwwKXtMSChrW0c+PjJdfDAsa1txYT4+Ml18MCwyLGtbdmE+PjJdfDAsMCk7a1soa1t4YT4+Ml18MCkrMzY+PjJdPWtbdmE+PjJdO2tbdmE+PjJdPTB9aWYoKGxbKGtbKGtbVj4+Ml18MCkrMTI+PjJdfDApKzc2Pj4wXXwwKT49NClrWyQ+PjJdPS0xO2Vsc2Uga1skPj4yXT0wO2tbSz4+Ml09MDtrW1g+PjJdPWtbKGtbdWE+PjJdfDApKzQ+PjJdO3doaWxlKDEpe2lmKChrW0s+PjJdfDApPj0oa1trW3VhPj4yXT4+Ml18MCkpYnJlYWs7TUgoa1trW1g+PjJdPj4yXXwwKTtMSChrW0c+PjJdfDAsa1txYT4+Ml18MCwzMixrW2tbWD4+Ml0+PjJdfDAsMCk7aWYoa1soa1tHPj4yXXwwKSszNj4+Ml18MClicmVhayBhO2JhPXV5KGtba1tYPj4yXT4+Ml18MCl8MDtrW1Q+PjJdPWJhO2lmKChsW2tbVD4+Ml0+PjBdfDApIT0xNTIpe2lmKChrW3FhPj4yXXwwKT09KGtbKGtbRz4+Ml18MCkrNDQwPj4yXXwwKSl7c2E9Njg7YnJlYWt9ZG8gaWYoIShrWyhrW3hhPj4yXXwwKSs0MD4+Ml18MCkpe2JhPV95KGtbd2E+PjJdfDAsa1t1YT4+Ml18MCwwKXwwO2tbVT4+Ml09YmE7a1soa1t4YT4+Ml18MCkrNDA+PjJdPWtbVT4+Ml07aWYoaVsoa1t3YT4+Ml18MCkrNjk+PjBdfDApYnJlYWs7a1tYPj4yXT0oa1soa1tVPj4yXXwwKSs0Pj4yXXwwKSsoKGtbSz4+Ml18MCkqMjB8MCl9d2hpbGUoMCk7a1tNPj4yXT0tMjtqWyhrWyhrW3hhPj4yXXwwKSs0Pj4yXXwwKSsoa1tLPj4yXTw8MSk+PjFdPS0yO2JhPShrW3hhPj4yXXwwKSs1NXwwO2lbYmE+PjBdPWlbYmE+PjBdJi05fWVsc2V7a1tNPj4yXT1qWyhrW1Q+PjJdfDApKzMyPj4xXTtkbyBpZigoa1tNPj4yXXwwKTwwKWtbTT4+Ml09alsoa1txYT4+Ml18MCkrMzI+PjFdO2Vsc2V7aWYobFsoa1soa1txYT4+Ml18MCkrND4+Ml18MCkrKGtbTT4+Ml08PDQpKzEyPj4wXXwwKWJyZWFrO2JhPShrW3hhPj4yXXwwKSs1NXwwO2lbYmE+PjBdPWlbYmE+PjBdJi05fXdoaWxlKDApO2pbKGtbKGtbeGE+PjJdfDApKzQ+PjJdfDApKyhrW0s+PjJdPDwxKT4+MV09a1tNPj4yXX1rW2thPj4yXT0wO2RvIGlmKChsW2tba1tYPj4yXT4+Ml0+PjBdfDApPT01Myl7a1trYT4+Ml09a1soa1trW1g+PjJdPj4yXXwwKSs4Pj4yXTtiYT0oVGYoa1trYT4+Ml18MCl8MCkrMXwwO2tbUD4+Ml09YmE7YlMoa1tsYT4+Ml18MCxrW2thPj4yXXwwLGtbUD4+Ml18MCl8MDtrW2thPj4yXT1rW2xhPj4yXTtrW2xhPj4yXT0oa1tsYT4+Ml18MCkrKGtbUD4+Ml18MCk7a1tRPj4yXT0oa1tRPj4yXXwwKS0oa1tQPj4yXXwwKX1lbHNle2lmKChrW00+PjJdfDApPDApYnJlYWs7a1trYT4+Ml09a1soa1soa1txYT4+Ml18MCkrND4+Ml18MCkrKGtbTT4+Ml08PDQpKzg+PjJdfXdoaWxlKDApO2lmKCEoa1trYT4+Ml18MCkpa1trYT4+Ml09MzQ4MzQ7aWYoKGlbKGtbd2E+PjJdfDApKzE0OCs1Pj4wXXwwKT09MD8oZkEoa1tHPj4yXXwwLGtba2E+PjJdfDApfDApPT0wOjApYnJlYWsgYTtrWyhrWyhrW3hhPj4yXXwwKSszMj4+Ml18MCkrKGtbSz4+Ml08PDIpPj4yXT1rW2thPj4yXTtrW18+PjJdPWxbKGtbWD4+Ml18MCkrMTI+PjBdJmtbJD4+Ml07aVsoa1soa1t4YT4+Ml18MCkrMjg+PjJdfDApKyhrW0s+PjJdfDApPj4wXT1rW18+PjJdO2tbSz4+Ml09KGtbSz4+Ml18MCkrMTtrW1g+PjJdPShrW1g+PjJdfDApKzIwfWlmKChzYXwwKT09Njgpe09oKGtbRz4+Ml18MCwzNjcwMSxjYSk7YnJlYWt9YjpkbyBpZihrW1o+PjJdfDApe2tbTT4+Ml09MDt3aGlsZSgxKXtpZigoa1tNPj4yXXwwKT49KG1bKGtbWj4+Ml18MCkrNTA+PjFdfDApKWJyZWFrIGI7a1toYT4+Ml09alsoa1soa1taPj4yXXwwKSs0Pj4yXXwwKSsoa1tNPj4yXTw8MSk+PjFdO2lmKE5IKGtbKGtbeGE+PjJdfDApKzQ+PjJdfDAsbVsoa1t4YT4+Ml18MCkrNTA+PjFdfDAsa1toYT4+Ml18MCl8MCl7bGE9KGtbeGE+PjJdfDApKzUyfDA7altsYT4+MV09KGpbbGE+PjFdfDApKy0xPDwxNj4+MTZ9ZWxzZXtqWyhrWyhrW3hhPj4yXXwwKSs0Pj4yXXwwKSsoa1tLPj4yXTw8MSk+PjFdPWtbaGE+PjJdO2tbKGtbKGtbeGE+PjJdfDApKzMyPj4yXXwwKSsoa1tLPj4yXTw8Mik+PjJdPWtbKGtbKGtbWj4+Ml18MCkrMzI+PjJdfDApKyhrW00+PjJdPDwyKT4+Ml07aVsoa1soa1t4YT4+Ml18MCkrMjg+PjJdfDApKyhrW0s+PjJdfDApPj4wXT1pWyhrWyhrW1o+PjJdfDApKzI4Pj4yXXwwKSsoa1tNPj4yXXwwKT4+MF18MDtrW0s+PjJdPShrW0s+PjJdfDApKzF9a1tNPj4yXT0oa1tNPj4yXXwwKSsxfX1lbHNle2pbKGtbKGtbeGE+PjJdfDApKzQ+PjJdfDApKyhrW0s+PjJdPDwxKT4+MV09LTE7a1soa1soa1t4YT4+Ml18MCkrMzI+PjJdfDApKyhrW0s+PjJdPDwyKT4+Ml09MzQ4MzR9d2hpbGUoMCk7U2ooa1t4YT4+Ml18MCk7aWYoIShrWyhrW0c+PjJdfDApKzQ0MD4+Ml18MCkpT0goa1t4YT4+Ml18MCk7YzpkbyBpZihrW3RhPj4yXXwwKXtpZigobVsoa1t4YT4+Ml18MCkrNTI+PjFdfDApPChqWyhrW3FhPj4yXXwwKSszND4+MV18MCkpYnJlYWs7bGE9KGtbeGE+PjJdfDApKzU1fDA7aVtsYT4+MF09aVtsYT4+MF0mLTMzfDMyO2tbTT4+Ml09MDt3aGlsZSgxKXtpZigoa1tNPj4yXXwwKT49KGpbKGtbcWE+PjJdfDApKzM0Pj4xXXwwKSlicmVhayBjO2lmKChrW00+PjJdfDApIT0oalsoa1txYT4+Ml18MCkrMzI+PjFdfDApPygoWUEoa1t4YT4+Ml18MCxrW00+PjJdJjY1NTM1KXwwKTw8MTY+PjE2fDApPDA6MClicmVhaztrW00+PjJdPShrW00+PjJdfDApKzF9bGE9KGtbeGE+PjJdfDApKzU1fDA7aVtsYT4+MF09aVtsYT4+MF0mLTMzfXdoaWxlKDApO2Q6ZG8gaWYoKGtbcWE+PjJdfDApPT0oa1soa1tHPj4yXXwwKSs0NDA+PjJdfDApKXtrW1c+PjJdPWtbKGtbcWE+PjJdfDApKzg+PjJdO3doaWxlKDEpe2lmKCEoa1tXPj4yXXwwKSlicmVhayBkO2lmKChtWyhrW1c+PjJdfDApKzUwPj4xXXwwKT09KG1bKGtbeGE+PjJdfDApKzUwPj4xXXwwKSl7a1tOPj4yXT0wO3doaWxlKDEpe2lmKChrW04+PjJdfDApPj0obVsoa1tXPj4yXXwwKSs1MD4+MV18MCkpYnJlYWs7aWYoKGpbKGtbKGtbVz4+Ml18MCkrND4+Ml18MCkrKGtbTj4+Ml08PDEpPj4xXXwwKSE9KGpbKGtbKGtbeGE+PjJdfDApKzQ+PjJdfDApKyhrW04+PjJdPDwxKT4+MV18MCkpYnJlYWs7a1tpYT4+Ml09a1soa1soa1tXPj4yXXwwKSszMj4+Ml18MCkrKGtbTj4+Ml08PDIpPj4yXTtrW2phPj4yXT1rWyhrWyhrW3hhPj4yXXwwKSszMj4+Ml18MCkrKGtbTj4+Ml08PDIpPj4yXTtpZihzZyhrW2lhPj4yXXwwLGtbamE+PjJdfDApfDApYnJlYWs7a1tOPj4yXT0oa1tOPj4yXXwwKSsxfWlmKChrW04+PjJdfDApPT0obVsoa1tXPj4yXXwwKSs1MD4+MV18MCkpYnJlYWt9a1tXPj4yXT1rWyhrW1c+PjJdfDApKzIwPj4yXX1kbyBpZigobFsoa1tXPj4yXXwwKSs1ND4+MF18MCkhPShsWyhrW3hhPj4yXXwwKSs1ND4+MF18MCkpe2RvIGlmKChsWyhrW1c+PjJdfDApKzU0Pj4wXXwwKSE9MTApe2lmKChsWyhrW3hhPj4yXXwwKSs1ND4+MF18MCk9PTEwKWJyZWFrO3NhPWtbRz4+Ml18MDtrW2RhPj4yXT0wO09oKHNhLDM2NzYyLGRhKX13aGlsZSgwKTtpZigobFsoa1tXPj4yXXwwKSs1ND4+MF18MCkhPTEwKWJyZWFrO2lbKGtbVz4+Ml18MCkrNTQ+PjBdPWlbKGtbeGE+PjJdfDApKzU0Pj4wXXwwfXdoaWxlKDApO2lmKChsW0g+PjBdfDApIT0yKWJyZWFrIGE7c2E9KGtbVz4+Ml18MCkrNTV8MDtpW3NhPj4wXT1pW3NhPj4wXSYtNHxsW0g+PjBdJjM7YnJlYWsgYX13aGlsZSgwKTtkbyBpZihpWyhrW3dhPj4yXXwwKSsxNDgrNT4+MF18MCl7cD1jaygoa1soa1t4YT4+Ml18MCkrMjQ+PjJdfDApKzI0fDAsa1trW3hhPj4yXT4+Ml18MCxrW3hhPj4yXXwwKXwwO2tbcGE+PjJdPXA7cD1rW3dhPj4yXXwwO2lmKGtbcGE+PjJdfDApe3doKHApO2JyZWFrIGF9cGE9cCsyNHwwO2tbcGE+PjJdPWtbcGE+PjJdfDI7aWYoIShrW3RhPj4yXXwwKSlicmVhaztrWyhrW3hhPj4yXXwwKSs0ND4+Ml09a1soa1t3YT4+Ml18MCkrMTQ4Pj4yXX1lbHNle2lmKCEoKGtbdGE+PjJdfDApIT0wPzE6KGxbKGtbcWE+PjJdfDApKzQyPj4wXSYzMnwwKT09MCkpYnJlYWs7bGE9KGtbRz4+Ml18MCkrNDR8MDtwYT0oa1tsYT4+Ml18MCkrMXwwO2tbbGE+PjJdPXBhO2tbTD4+Ml09cGE7cGE9bngoa1tHPj4yXXwwKXwwO2tbYWE+PjJdPXBhO2lmKCEoa1thYT4+Ml18MCkpYnJlYWsgYTtCeChrW0c+PjJdfDAsMSxrW29hPj4yXXwwKTtwYT1weChrW2FhPj4yXXwwLDE2MSl8MDtrWyhrW3hhPj4yXXwwKSs0ND4+Ml09cGE7c3goa1thYT4+Ml18MCwxMzQsa1tvYT4+Ml18MCxrW0w+PjJdfDApfDA7aWYoa1tJPj4yXXwwKXtrW08+PjJdPShrWyhrW0c+PjJdfDApKzM5Mj4+Ml18MCktKGtba1tZPj4yXT4+Ml18MCkrKGtbKGtbRz4+Ml18MCkrMzkyKzQ+PjJdfDApO2lmKChpWyhrW2tbWT4+Ml0+PjJdfDApKygoa1tPPj4yXXwwKS0xKT4+MF18MCk9PTU5KWtbTz4+Ml09KGtbTz4+Ml18MCkrLTE7cGE9a1t3YT4+Ml18MDtrYT1rW08+PjJdfDA7bGE9a1trW1k+PjJdPj4yXXwwO2tbZWE+PjJdPShrW25hPj4yXXwwKT09MD8xODQwMjozNjgwNDtrW2VhKzQ+PjJdPWthO2tbZWErOD4+Ml09bGE7cGE9UWgocGEsMzY4MTIsZWEpfDA7a1ttYT4+Ml09cGF9ZWxzZSBrW21hPj4yXT0wO3BhPWtbRz4+Ml18MDtoYT0oa1tvYT4+Ml18MCk9PTE/MTk5MDU6MTk5MjQ7aWE9a1trW3hhPj4yXT4+Ml18MDtqYT1rW2tbcWE+PjJdPj4yXXwwO2thPWtbTD4+Ml18MDtsYT1rW21hPj4yXXwwO2tbZmE+PjJdPWtbKGtbKGtbd2E+PjJdfDApKzE2Pj4yXXwwKSsoa1tvYT4+Ml08PDQpPj4yXTtrW2ZhKzQ+PjJdPWhhO2tbZmErOD4+Ml09aWE7a1tmYSsxMj4+Ml09amE7a1tmYSsxNj4+Ml09a2E7a1tmYSsyMD4+Ml09bGE7bXgocGEsMzY4MzIsZmEpO2JnKGtbd2E+PjJdfDAsa1ttYT4+Ml18MCk7aWYoa1t0YT4+Ml18MCl7d0Eoa1tHPj4yXXwwLGtbeGE+PjJdfDAsa1tMPj4yXXwwKTtveChrW0c+PjJdfDAsa1tvYT4+Ml18MCk7bWE9a1thYT4+Ml18MDtvYT1rW29hPj4yXXwwO3BhPWtbd2E+PjJdfDA7a1tnYT4+Ml09a1trW3hhPj4yXT4+Ml07cXgobWEsb2EsUWgocGEsMzY4ODAsZ2EpfDApO3B4KGtbYWE+PjJdfDAsMTUwKXwwfWhBKGtbYWE+PjJdfDAsa1soa1t4YT4+Ml18MCkrNDQ+PjJdfDApfXdoaWxlKDApO2lmKCEoKGtbdGE+PjJdfDApPT0wPzE6KGxbKGtbd2E+PjJdfDApKzE0OCs1Pj4wXXwwKSE9MCkpYnJlYWs7ZG8gaWYoKGtbbmE+PjJdfDApIT01KXNhPTE0MztlbHNle2lmKCEoa1soa1txYT4+Ml18MCkrOD4+Ml18MCkpe3NhPTE0MzticmVha31pZigobFsoa1soa1txYT4+Ml18MCkrOD4+Ml18MCkrNTQ+PjBdfDApPT01KXtzYT0xNDM7YnJlYWt9a1tyYT4+Ml09a1soa1txYT4+Ml18MCkrOD4+Ml07d2hpbGUoMSl7aWYoa1soa1tyYT4+Ml18MCkrMjA+PjJdfDApbz0obFsoa1soa1tyYT4+Ml18MCkrMjA+PjJdfDApKzU0Pj4wXXwwKSE9NTtlbHNlIG89MDtwPWtbKGtbcmE+PjJdfDApKzIwPj4yXXwwO2lmKCFvKWJyZWFrO2tbcmE+PjJdPXB9a1soa1t4YT4+Ml18MCkrMjA+PjJdPXA7a1soa1tyYT4+Ml18MCkrMjA+PjJdPWtbeGE+PjJdfXdoaWxlKDApO2lmKChzYXwwKT09MTQzKXtrWyhrW3hhPj4yXXwwKSsyMD4+Ml09a1soa1txYT4+Ml18MCkrOD4+Ml07a1soa1txYT4+Ml18MCkrOD4+Ml09a1t4YT4+Ml19a1t4YT4+Ml09MH19fX13aGlsZSgwKTtpZighKGtbeGE+PjJdfDApKXtzYT1rW3dhPj4yXXwwO3hhPWtbdmE+PjJdfDA7c3Yoc2EseGEpO3hhPWtbd2E+PjJdfDA7dmE9a1t1YT4+Ml18MDtvdih4YSx2YSk7dmE9a1t3YT4+Ml18MDt4YT1rW3RhPj4yXXwwO3J2KHZhLHhhKTt4YT1rW3dhPj4yXXwwO3lhPWtbeWE+PjJdfDA7YmcoeGEseWEpO3I9emE7cmV0dXJufVBIKGtbd2E+PjJdfDAsa1t4YT4+Ml18MCk7c2E9a1t3YT4+Ml18MDt4YT1rW3ZhPj4yXXwwO3N2KHNhLHhhKTt4YT1rW3dhPj4yXXwwO3ZhPWtbdWE+PjJdfDA7b3YoeGEsdmEpO3ZhPWtbd2E+PjJdfDA7eGE9a1t0YT4+Ml18MDtydih2YSx4YSk7eGE9a1t3YT4+Ml18MDt5YT1rW3lhPj4yXXwwO2JnKHhhLHlhKTtyPXphO3JldHVybn1mdW5jdGlvbiBUdihhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wO2c9cjtyPXIrMTZ8MDtjPWcrMTJ8MDtkPWcrOHwwO2Y9Zys0fDA7ZT1nO2tbYz4+Ml09YTtrW2Q+PjJdPWI7a1tmPj4yXT1rWyhrW2M+PjJdfDApKzQ0MD4+Ml07a1tlPj4yXT1rW2tbYz4+Ml0+PjJdO2lmKCgoa1tmPj4yXXwwKSE9MD8oaVsoa1tjPj4yXXwwKSs0MTA+PjBdfDApPT0wOjApPyhUaShrWyhrWyhrW2U+PjJdfDApKzE2Pj4yXXwwKSsobFsoa1tlPj4yXXwwKSsxNDgrND4+MF08PDQpKzQ+PjJdfDApfDApPT0wOjApe2E9Yncoa1tjPj4yXXwwLGtbKGtbZj4+Ml18MCkrMjQ+PjJdfDAsa1tkPj4yXXwwKXwwO2tbKGtbZj4+Ml18MCkrMjQ+PjJdPWE7aWYoIShrWyhrW2M+PjJdfDApKzg0KzQ+PjJdfDApKXtyPWc7cmV0dXJufWN3KGtbYz4+Ml18MCxrWyhrW2Y+PjJdfDApKzI0Pj4yXXwwLChrW2M+PjJdfDApKzg0fDAsMSk7cj1nO3JldHVybn1zdihrW2tbYz4+Ml0+PjJdfDAsa1tkPj4yXXwwKTtyPWc7cmV0dXJufWZ1bmN0aW9uIFV2KGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTAsRT0wO0U9cjtyPXIrOTZ8MDtCPUUrMTZ8MDtuPUUrOHwwO209RTtvPUUrODB8MDtwPUUrNzZ8MDtmPUUrNzJ8MDtxPUUrNjh8MDtzPUUrNjR8MDt0PUUrNjB8MDt6PUUrNTZ8MDtBPUUrNTJ8MDt5PUUrNDh8MDtoPUUrNDR8MDt1PUUrNDB8MDt4PUUrMzZ8MDtDPUUrMzJ8MDtnPUUrMjh8MDt2PUUrMjR8MDt3PUUrMjB8MDtrW28+PjJdPWE7a1twPj4yXT1iO2tbZj4+Ml09YztrW3E+PjJdPWQ7a1tzPj4yXT1lO2tbdD4+Ml09a1trW28+PjJdPj4yXTtrW3o+PjJdPTA7a1t5Pj4yXT1rWyhrW28+PjJdfDApKzQ0MD4+Ml07YTpkbyBpZigoa1t5Pj4yXXwwKSE9MD8obFsoa1tvPj4yXXwwKSs0MTA+PjBdfDApPT0wOjApe2lmKCEoa1twPj4yXXwwKSl7a1tnPj4yXT0oalsoa1t5Pj4yXXwwKSszND4+MV18MCktMTtpZigoa1tnPj4yXXwwKTwwKWJyZWFrO2lmKChrW3E+PjJdfDApIT0wPyhrW2tbcT4+Ml0+PjJdfDApIT0xOjApe0Q9a1tvPj4yXXwwO0M9a1tmPj4yXXwwO2tbbT4+Ml09a1soa1soa1t5Pj4yXXwwKSs0Pj4yXXwwKSsoa1tnPj4yXTw8NCk+PjJdO2tbbSs0Pj4yXT1DO09oKEQsMzYyNzAsbSk7YnJlYWt9a1t4Pj4yXT0xfWVsc2V7aWYoKGtbcT4+Ml18MCkhPTA/KGtba1txPj4yXT4+Ml18MCkhPShrW2tbcD4+Ml0+PjJdfDApOjApe09oKGtbbz4+Ml18MCwzNjMzMyxuKTticmVha31rW3g+PjJdPWtba1twPj4yXT4+Ml19a1toPj4yXT00NCsoKGtbeD4+Ml18MCktMTw8MykrKGtbKGtbZj4+Ml18MCkrND4+Ml18MCkrMTtiOmRvIGlmKGtbcT4+Ml18MCl7a1t1Pj4yXT0wO3doaWxlKDEpe2lmKChrW3U+PjJdfDApPj0oa1trW3E+PjJdPj4yXXwwKSlicmVhayBiO249KFRmKGtbKGtbKGtbcT4+Ml18MCkrND4+Ml18MCkrKChrW3U+PjJdfDApKjIwfDApKzQ+PjJdfDApfDApKzF8MDtrW2g+PjJdPShrW2g+PjJdfDApK247a1t1Pj4yXT0oa1t1Pj4yXXwwKSsxfX13aGlsZSgwKTtuPWtbaD4+Ml18MDtuPUNoKGtbdD4+Ml18MCxuLCgobnwwKTwwKTw8MzE+PjMxKXwwO2tbej4+Ml09bjtpZihrW3o+PjJdfDApe2tba1t6Pj4yXT4+Ml09a1t5Pj4yXTtrWyhrW3o+PjJdfDApKzQ+PjJdPWtbKGtbeT4+Ml18MCkrMTY+PjJdO2tbQz4+Ml09KGtbej4+Ml18MCkrMzYrKGtbeD4+Ml08PDMpO2tbKGtbej4+Ml18MCkrOD4+Ml09a1tDPj4yXTtiUyhrW0M+PjJdfDAsa1trW2Y+PjJdPj4yXXwwLGtbKGtbZj4+Ml18MCkrND4+Ml18MCl8MDtpWyhrW0M+PjJdfDApKyhrWyhrW2Y+PjJdfDApKzQ+PjJdfDApPj4wXT0wO2h4KGtbQz4+Ml18MCk7a1tDPj4yXT0oa1tDPj4yXXwwKSsoKGtbKGtbZj4+Ml18MCkrND4+Ml18MCkrMSk7a1soa1t6Pj4yXXwwKSsyMD4+Ml09a1t4Pj4yXTtjOmRvIGlmKCEoa1twPj4yXXwwKSlrWyhrW3o+PjJdfDApKzM2Pj4yXT0oalsoa1t5Pj4yXXwwKSszND4+MV18MCktMTtlbHNle2tbdT4+Ml09MDt3aGlsZSgxKXtpZigoa1t1Pj4yXXwwKT49KGtbeD4+Ml18MCkpYnJlYWsgYztrW3Y+PjJdPTA7d2hpbGUoMSl7aWYoKGtbdj4+Ml18MCk+PShqWyhrW3k+PjJdfDApKzM0Pj4xXXwwKSlicmVhaztuPShzZyhrWyhrWyhrW3k+PjJdfDApKzQ+PjJdfDApKyhrW3Y+PjJdPDw0KT4+Ml18MCxrWyhrWyhrW3A+PjJdfDApKzQ+PjJdfDApKygoa1t1Pj4yXXwwKSoyMHwwKSs0Pj4yXXwwKXwwKT09MDtmPWtbdj4+Ml18MDtpZihuKXtEPTI1O2JyZWFrfWtbdj4+Ml09ZisxfWlmKChEfDApPT0yNSl7RD0wO2tbKGtbej4+Ml18MCkrMzYrKGtbdT4+Ml08PDMpPj4yXT1mfWlmKChrW3Y+PjJdfDApPj0oalsoa1t5Pj4yXXwwKSszND4+MV18MCkpYnJlYWs7a1t1Pj4yXT0oa1t1Pj4yXXwwKSsxfUQ9a1tvPj4yXXwwO2tbQj4+Ml09a1soa1soa1twPj4yXXwwKSs0Pj4yXXwwKSsoKGtbdT4+Ml18MCkqMjB8MCkrND4+Ml07T2goRCwzNjQyNyxCKTticmVhayBhfXdoaWxlKDApO2Q6ZG8gaWYoa1txPj4yXXwwKXtrW3U+PjJdPTA7d2hpbGUoMSl7aWYoKGtbdT4+Ml18MCk+PShrW3g+PjJdfDApKWJyZWFrIGQ7RD1UZihrWyhrWyhrW3E+PjJdfDApKzQ+PjJdfDApKygoa1t1Pj4yXXwwKSoyMHwwKSs0Pj4yXXwwKXwwO2tbdz4+Ml09RDtrWyhrW3o+PjJdfDApKzM2KyhrW3U+PjJdPDwzKSs0Pj4yXT1rW0M+PjJdO2JTKGtbQz4+Ml18MCxrWyhrWyhrW3E+PjJdfDApKzQ+PjJdfDApKygoa1t1Pj4yXXwwKSoyMHwwKSs0Pj4yXXwwLGtbdz4+Ml18MCl8MDtpWyhrW0M+PjJdfDApKyhrW3c+PjJdfDApPj4wXT0wO2tbQz4+Ml09KGtbQz4+Ml18MCkrKChrW3c+PjJdfDApKzEpO2tbdT4+Ml09KGtbdT4+Ml18MCkrMX19d2hpbGUoMCk7aVsoa1t6Pj4yXXwwKSsyND4+MF09MDtpWyhrW3o+PjJdfDApKzI1Pj4wXT1rW3M+PjJdO2lbKGtbej4+Ml18MCkrMjUrMT4+MF09a1tzPj4yXT4+ODtEPWNrKChrWyhrW3k+PjJdfDApKzY0Pj4yXXwwKSs1NnwwLGtbKGtbej4+Ml18MCkrOD4+Ml18MCxrW3o+PjJdfDApfDA7a1tBPj4yXT1EO2lmKChrW0E+PjJdfDApPT0oa1t6Pj4yXXwwKSl7d2goa1t0Pj4yXXwwKTticmVha31pZihrW0E+PjJdfDApe2tbKGtbej4+Ml18MCkrMTI+PjJdPWtbQT4+Ml07a1soa1tBPj4yXXwwKSsxNj4+Ml09a1t6Pj4yXX1rWyhrW3k+PjJdfDApKzE2Pj4yXT1rW3o+PjJdO2tbej4+Ml09MH19d2hpbGUoMCk7Ymcoa1t0Pj4yXXwwLGtbej4+Ml18MCk7b3Yoa1t0Pj4yXXwwLGtbcD4+Ml18MCk7b3Yoa1t0Pj4yXXwwLGtbcT4+Ml18MCk7cj1FO3JldHVybn1mdW5jdGlvbiBWdihhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wO2Y9cjtyPXIrMTZ8MDtnPWYrMTJ8MDtjPWYrOHwwO2U9Zis0fDA7ZD1mO2tbZz4+Ml09YTtrW2M+PjJdPWI7YT1rWyhrW2c+PjJdfDApKzQ0MD4+Ml18MDtrW2U+PjJdPWE7aWYoIWEpe3I9ZjtyZXR1cm59Zz1rWyhrW2U+PjJdfDApKzE2Pj4yXXwwO2tbZD4+Ml09ZztpZighZyl7cj1mO3JldHVybn1pWyhrW2Q+PjJdfDApKzI0Pj4wXT1rW2M+PjJdO3I9ZjtyZXR1cm59ZnVuY3Rpb24gV3YoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTAsaT0wLGw9MDtsPXI7cj1yKzMyfDA7Yz1sKzI0fDA7ZD1sKzIwfDA7Zz1sKzE2fDA7Zj1sKzEyfDA7aT1sKzh8MDtlPWwrNHwwO2g9bDtrW2M+PjJdPWE7a1tkPj4yXT1iO2I9a1soa1tjPj4yXXwwKSs0NDA+PjJdfDA7a1tnPj4yXT1iO2lmKCFiKXtyPWw7cmV0dXJufWtbZj4+Ml09KGpbKGtbZz4+Ml18MCkrMzQ+PjFdfDApLTE7a1tlPj4yXT1rW2tbYz4+Ml0+PjJdO2I9Yngoa1tlPj4yXXwwLGtbZD4+Ml18MCl8MDtrW2k+PjJdPWI7aWYoIShrW2k+PjJdfDApKXtyPWw7cmV0dXJufWI9KGZBKGtbYz4+Ml18MCxrW2k+PjJdfDApfDApIT0wO2M9a1tlPj4yXXwwO2lmKCFiKXtiZyhjLGtbaT4+Ml18MCk7cj1sO3JldHVybn1iZyhjLGtbKGtbKGtbZz4+Ml18MCkrND4+Ml18MCkrKGtbZj4+Ml08PDQpKzg+PjJdfDApO2tbKGtbKGtbZz4+Ml18MCkrND4+Ml18MCkrKGtbZj4+Ml08PDQpKzg+PjJdPWtbaT4+Ml07a1toPj4yXT1rWyhrW2c+PjJdfDApKzg+PjJdO3doaWxlKDEpe2lmKCEoa1toPj4yXXwwKSlicmVhaztpZigoaltrWyhrW2g+PjJdfDApKzQ+PjJdPj4xXXwwKT09KGtbZj4+Ml18MCkpa1trWyhrW2g+PjJdfDApKzMyPj4yXT4+Ml09a1soa1soa1tnPj4yXXwwKSs0Pj4yXXwwKSsoa1tmPj4yXTw8NCkrOD4+Ml07a1toPj4yXT1rWyhrW2g+PjJdfDApKzIwPj4yXX1yPWw7cmV0dXJufWZ1bmN0aW9uIFh2KGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLG09MCxuPTAsbz0wLHA9MCxxPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTA7eD1yO3I9cis4MHwwO3Q9eCsxNnwwO3M9eCs4fDA7cT14O2U9eCs2NHwwO2Y9eCs2MHwwO2c9eCs1NnwwO2g9eCs1MnwwO289eCs0OHwwO3A9eCs0NHwwO209eCs0MHwwO249eCszNnwwO2o9eCszMnwwO3c9eCsyOHwwO3Y9eCsyNHwwO3U9eCsyMHwwO2tbZT4+Ml09YTtrW2Y+PjJdPWI7a1tnPj4yXT1jO2tbaD4+Ml09ZDtrW20+PjJdPWtba1tlPj4yXT4+Ml07ZG8gaWYoKGlbKGtbbT4+Ml18MCkrNjk+PjBdfDApPT0wPyhVeihrW2U+PjJdfDApfDApPT0wOjApe2lmKGtbaD4+Ml18MCl7YT0oa1ttPj4yXXwwKSs3M3wwO2lbYT4+MF09KGlbYT4+MF18MCkrMTw8MjQ+PjI0fWE9engoa1tlPj4yXXwwLGtbZz4+Ml18MCwoa1tmPj4yXXwwKSs4fDApfDA7a1tvPj4yXT1hO2lmKGtbaD4+Ml18MCl7YT0oa1ttPj4yXXwwKSs3M3wwO2lbYT4+MF09KGlbYT4+MF18MCkrLTE8PDI0Pj4yNH1pZighKGtbbz4+Ml18MCkpe2lmKCEoa1toPj4yXXwwKSlicmVhaztoQyhrW2U+PjJdfDAsa1soa1tmPj4yXXwwKSs4KzQ+PjJdfDApO2JyZWFrfWE9UGgoa1ttPj4yXXwwLGtbKGtbbz4+Ml18MCkrNjQ+PjJdfDApfDA7a1tuPj4yXT1hO2lmKChsWyhrW28+PjJdfDApKzQyPj4wXSYxNnwwKSE9MD8oYnkoa1tlPj4yXXwwLGtbbz4+Ml18MCl8MCkhPTA6MClicmVhaztrW3c+PjJdPShrW24+PjJdfDApPT0xPzE5OTA1OjE5OTI0O2tbdj4+Ml09a1soa1soa1ttPj4yXXwwKSsxNj4+Ml18MCkrKGtbbj4+Ml08PDQpPj4yXTtrW3U+PjJdPTA7aWYoIShreChrW2U+PjJdfDAsOSxrW3c+PjJdfDAsMCxrW3Y+PjJdfDApfDApKXtkbyBpZihrW2c+PjJdfDApaWYoKGtbbj4+Ml18MCk9PTEpe2tbaj4+Ml09MTU7YnJlYWt9ZWxzZXtrW2o+PjJdPTE3O2JyZWFrfWVsc2V7aWYobFsoa1tvPj4yXXwwKSs0Mj4+MF0mMTYpe2tbaj4+Ml09MzA7dz0oY3koa1ttPj4yXXwwLGtbbz4+Ml18MCl8MCkrNHwwO2tbdT4+Ml09a1soa1t3Pj4yXXwwKSs0Pj4yXTticmVha31pZigoa1tuPj4yXXwwKT09MSl7a1tqPj4yXT0xMzticmVha31lbHNle2tbaj4+Ml09MTE7YnJlYWt9fXdoaWxlKDApO2lmKChreChrW2U+PjJdfDAsa1tqPj4yXXwwLGtba1tvPj4yXT4+Ml18MCxrW3U+PjJdfDAsa1t2Pj4yXXwwKXwwKT09MD8oa3goa1tlPj4yXXwwLDksa1trW28+PjJdPj4yXXwwLDAsa1t2Pj4yXXwwKXwwKT09MDowKXtpZigoSmQoa1trW28+PjJdPj4yXXwwLDI3ODQ0LDcpfDApPT0wPyhKZChrW2tbbz4+Ml0+PjJdfDAsMzYwNjMsMTEpfDApIT0wOjApe3c9a1tlPj4yXXwwO2tbcT4+Ml09a1trW28+PjJdPj4yXTtPaCh3LDM2MDc1LHEpO2JyZWFrfWlmKChrW2c+PjJdfDApIT0wPyhrWyhrW28+PjJdfDApKzEyPj4yXXwwKT09MDowKXt3PWtbZT4+Ml18MDtrW3M+PjJdPWtba1tvPj4yXT4+Ml07T2godywzNjEwMyxzKTticmVha31pZigoa1tnPj4yXXwwKT09MD8oa1soa1tvPj4yXXwwKSsxMj4+Ml18MCkhPTA6MCl7dz1rW2U+PjJdfDA7a1t0Pj4yXT1rW2tbbz4+Ml0+PjJdO09oKHcsMzYxMzcsdCk7YnJlYWt9dz1ueChrW2U+PjJdfDApfDA7a1twPj4yXT13O2lmKGtbcD4+Ml18MCl7Qngoa1tlPj4yXXwwLDEsa1tuPj4yXXwwKTtfQyhrW2U+PjJdfDAsa1tuPj4yXXwwLDMwODU4LGtba1tvPj4yXT4+Ml18MCk7R0goa1tlPj4yXXwwLGtbZj4+Ml18MCxrW28+PjJdfDApO0hIKGtbZT4+Ml18MCxrW28+PjJdfDAsa1tuPj4yXXwwLGtbZz4+Ml18MCl9fX19d2hpbGUoMCk7cnYoa1ttPj4yXXwwLGtbZj4+Ml18MCk7cj14O3JldHVybn1mdW5jdGlvbiBZdihhLGIsYyxkLGUsZixnLGgpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO3ZhciBtPTAsbj0wLG89MCxwPTAscT0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wO0Q9cjtyPXIrOTZ8MDt3PUQrODh8MDttPUQrODR8MDtuPUQrODB8MDtvPUQrNzZ8MDt4PUQrNzJ8MDt5PUQrNjh8MDtwPUQrNjR8MDtxPUQrNjB8MDt0PUQrNTZ8MDtBPUQrNTJ8MDtDPUQrNDh8MDtCPUQrNDB8MDt2PUQrMTZ8MDt1PUQrMTJ8MDtzPUQrOHwwO3o9RCs0fDA7a1t3Pj4yXT1hO2tbbT4+Ml09YjtrW24+PjJdPWM7a1tvPj4yXT1kO2tbeD4+Ml09ZTtrW3k+PjJdPWY7a1twPj4yXT1nO2tbcT4+Ml09aDtrW3U+PjJdPTA7a1t6Pj4yXT1rW2tbdz4+Ml0+PjJdO2c9a1t3Pj4yXXwwO2lmKChqWyhrW3c+PjJdfDApKzQwMD4+MV18MCk8PTApe0p2KGcsa1tuPj4yXXwwLGtbbz4+Ml18MCxrW3A+PjJdfDAsMSwwLGtbcT4+Ml18MCk7a1t0Pj4yXT1rWyhrW3c+PjJdfDApKzQ0MD4+Ml07aWYoKCgoa1t0Pj4yXXwwKSE9MD8oa1soa1t3Pj4yXXwwKSszNj4+Ml18MCk9PTA6MCk/KFl6KGtbdz4+Ml18MCxrW24+PjJdfDAsa1tvPj4yXXwwLHUpfDAscT1QaChrW3o+PjJdfDAsa1soa1t0Pj4yXXwwKSs2ND4+Ml18MCl8MCxrW3M+PjJdPXEsbUModixrW3c+PjJdfDAsa1tzPj4yXXwwLDM2MDU4LGtbdT4+Ml18MCksKG9DKHYsa1t5Pj4yXXwwKXwwKT09MCk6MCk/KHY9aXkoa1t6Pj4yXXwwLGtbeT4+Ml18MCwxKXwwLGtbKGtbdD4+Ml18MCkrMTI+PjJdPXYsdj1feShrW3o+PjJdfDAsa1t4Pj4yXXwwLDEpfDAsa1soa1t0Pj4yXXwwKSsyND4+Ml09diwoaVsoa1t6Pj4yXXwwKSs2OT4+MF18MCk9PTApOjApe3Y9KGtbdz4+Ml18MCkrMzkyfDA7a1tCPj4yXT1rW3Y+PjJdO2tbQis0Pj4yXT1rW3YrND4+Ml07aWYoKGlba1tCPj4yXT4+MF18MCkhPTU5KWtbQj4+Ml09KGtbQj4+Ml18MCkrKGtbQis0Pj4yXXwwKTtrW0IrND4+Ml09MDtrW0E+PjJdPShrW0I+PjJdfDApLShrW2tbbT4+Ml0+PjJdfDApO2tbQz4+Ml09a1trW20+PjJdPj4yXTt3aGlsZSgxKXtnPWtbQT4+Ml18MDtpZighKGxbMTg0MDMrKGxbKGtbQz4+Ml18MCkrKChrW0E+PjJdfDApLTEpPj4wXXwwKT4+MF0mMSkpYnJlYWs7a1tBPj4yXT1nKy0xfWtbQj4+Ml09KGtbQz4+Ml18MCkrKGctMSk7a1tCKzQ+PjJdPTE7THYoa1t3Pj4yXXwwLDAsQiwwLDApfX1lbHNlIE9oKGcsMzYwMjIsRCk7cHYoa1t6Pj4yXXwwLGtbeT4+Ml18MCk7b3Yoa1t6Pj4yXXwwLGtbeD4+Ml18MCk7cj1EO3JldHVybn1mdW5jdGlvbiBadihhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsbj0wLG89MCxwPTAscT0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wLEU9MCxGPTAsRz0wLEg9MCxJPTAsSj0wLEs9MCxMPTAsTT0wLE49MCxPPTAsUD0wLFE9MCxSPTAsUz0wLFQ9MCxVPTAsVj0wLFc9MCxYPTAsWT0wLFo9MCxfPTAsJD0wLGFhPTAsYmE9MCxjYT0wLGRhPTAsZWE9MCxmYT0wLGdhPTAsaGE9MCxpYT0wLGphPTAsa2E9MCxsYT0wLG1hPTAsbmE9MCxvYT0wLHBhPTAscWE9MCxyYT0wLHNhPTAsdGE9MCx1YT0wLHZhPTAsd2E9MCx4YT0wLHlhPTAsemE9MCxBYT0wLEJhPTAsQ2E9MDtDYT1yO3I9cis0MzJ8MDt3PUNhO049Q2ErNDEyfDA7Tz1DYSs0MDh8MDtQPUNhKzQwNHwwO1E9Q2ErNDAwfDA7Xz1DYSszOTZ8MDtmYT1DYSszOTJ8MDtwYT1DYSszODh8MDtCYT1DYSszODR8MDtmPUNhKzM4MHwwO2thPUNhKzM3NnwwO29hPUNhKzM3MnwwO0w9Q2ErMzY4fDA7bGE9Q2ErMzY0fDA7bWE9Q2ErMzYwfDA7cmE9Q2ErMzU2fDA7eGE9Q2ErMzQ0fDA7eWE9Q2ErMzEyfDA7d2E9Q2ErMjY0fDA7Y2E9Q2ErMjYwfDA7WT1DYSsyNTZ8MDtkYT1DYSsyNTJ8MDtuPUNhKzI0OHwwO3E9Q2ErMjQ0fDA7Zz1DYSsyNDB8MDt0PUNhKzIzNnwwO289Q2ErMjMyfDA7ZT1DYSsyMDh8MDtzPUNhKzIwNHwwO2Q9Q2ErMjAwfDA7dj1DYSsxOTZ8MDtoPUNhKzE5MnwwO3U9Q2ErMTg4fDA7cD1DYSsxODR8MDt4PUNhKzQxNnwwO009Q2ErMTUyfDA7JD1DYSsxNDh8MDtiYT1DYSsxNDR8MDtlYT1DYSsxNDB8MDthYT1DYSsxMzZ8MDtaPUNhKzEzMnwwO1M9Q2ErMTI4fDA7QWE9Q2ErMTI0fDA7emE9Q2ErMTIwfDA7aWE9Q2ErMTE2fDA7ej1DYSsxMTJ8MDtBPUNhKzEwOHwwO25hPUNhKzEwNHwwO1I9Q2ErMTAwfDA7VD1DYSs5NnwwO3RhPUNhKzkyfDA7Vj1DYSs4OHwwO1g9Q2ErODR8MDtXPUNhKzgwfDA7VT1DYSs3NnwwO3ZhPUNhKzcyfDA7c2E9Q2ErNjh8MDt1YT1DYSs2NHwwO2dhPUNhKzYwfDA7aGE9Q2ErNTZ8MDtqYT1DYSs1MnwwO3FhPUNhKzQ4fDA7Rz1DYSs0NHwwO0s9Q2ErNDB8MDtEPUNhKzM2fDA7Qz1DYSszMnwwO0g9Q2ErMjh8MDtJPUNhKzI0fDA7Rj1DYSsyMHwwO0U9Q2ErMTZ8MDtKPUNhKzEyfDA7Qj1DYSs0MTh8MDtrW08+PjJdPWE7a1tQPj4yXT1iO2tbUT4+Ml09YztrW2thPj4yXT0wO2tbcmE+PjJdPTE7a1tkYT4+Ml09a1soa1tPPj4yXXwwKSs0MjA+PjJdO2M9KGtbTz4+Ml18MCkrNDI0fDA7YT1rW2M+PjJdfDA7a1tjPj4yXT1hKzE7a1soa1tPPj4yXXwwKSs0MjA+PjJdPWE7a1tZPj4yXT1rW2tbTz4+Ml0+PjJdO2lmKCgoa1tQPj4yXXwwKSE9MD8obFsoa1tZPj4yXXwwKSs2OT4+MF18MCk9PTA6MCk/KGtbKGtbTz4+Ml18MCkrMzY+PjJdfDApPT0wOjApe2lmKGt4KGtbTz4+Ml18MCwyMSwwLDAsMCl8MCl7a1tOPj4yXT0xO0JhPWtbTj4+Ml18MDtyPUNhO3JldHVybiBCYXwwfWI9d2E7Yz1iKzQ4fDA7ZG97a1tiPj4yXT0wO2I9Yis0fDB9d2hpbGUoKGJ8MCk8KGN8MCkpO2lmKChsW2tbUT4+Ml0+PjBdfDApPD04KXtvdihrW1k+PjJdfDAsa1soa1tQPj4yXXwwKSs0ND4+Ml18MCk7a1soa1tQPj4yXXwwKSs0ND4+Ml09MDthPShrW1A+PjJdfDApKzh8MDtrW2E+PjJdPWtbYT4+Ml0mLTJ9d3koa1tPPj4yXXwwLGtbUD4+Ml18MCwwKTtrW3lhPj4yXT0wO2tbeWErND4+Ml09MDtrW3lhKzg+PjJdPTA7a1t5YSsxMj4+Ml09MDtrW3lhKzE2Pj4yXT0wO2tbeWErMjA+PjJdPTA7a1t5YSsyND4+Ml09MDtrW3lhKzI4Pj4yXT0wO2tbeWE+PjJdPWtbKGtbUD4+Ml18MCkrNDQ+PjJdO2tbb2E+PjJdPWtbKGtbUD4+Ml18MCkrMjg+PjJdO2E6ZG8gaWYoKGtbKGtbTz4+Ml18MCkrMzY+PjJdfDApPT0wPyhsWyhrW1k+PjJdfDApKzY5Pj4wXXwwKT09MDowKXtrW2Y+PjJdPShrWyhrW1A+PjJdfDApKzg+PjJdJjh8MCkhPTAmMTtrW18+PjJdPTA7d2hpbGUoMSl7aWYoa1soa1tQPj4yXXwwKSs0OD4+Ml18MClicmVhaztpZigoa1tfPj4yXXwwKT49KGtba1tvYT4+Ml0+PjJdfDApKWJyZWFrO2tbbj4+Ml09KGtbb2E+PjJdfDApKzgrKChrW18+PjJdfDApKjcyfDApO2tbcT4+Ml09a1soa1tuPj4yXXwwKSsyMD4+Ml07a1t0Pj4yXT1rWyhrW24+PjJdfDApKzE2Pj4yXTtpZihrW3E+PjJdfDApe2lmKChqWyhrW3Q+PjJdfDApKzM0Pj4xXXwwKSE9KGtba1trW3E+PjJdPj4yXT4+Ml18MCkpe3k9MTY7YnJlYWt9a1tnPj4yXT0oa1soa1txPj4yXXwwKSs4Pj4yXSY4fDApIT0wJjE7aWYoT0coa1tPPj4yXXwwLGtbUD4+Ml18MCxrW18+PjJdfDAsa1tmPj4yXXwwLGtbZz4+Ml18MCl8MCl7aWYoa1tnPj4yXXwwKXtrW2Y+PjJdPTE7YT0oa1tQPj4yXXwwKSs4fDA7a1thPj4yXT1rW2E+PjJdfDh9a1tfPj4yXT0tMX1rW29hPj4yXT1rWyhrW1A+PjJdfDApKzI4Pj4yXTtpZihpWyhrW1k+PjJdfDApKzY5Pj4wXXwwKWJyZWFrIGE7aWYoKGxba1tRPj4yXT4+MF18MCk+OClrW3lhPj4yXT1rWyhrW1A+PjJdfDApKzQ0Pj4yXX1rW18+PjJdPShrW18+PjJdfDApKzF9aWYoKHl8MCk9PTE2KXtCYT1rW08+PjJdfDA7emE9a1trW3Q+PjJdPj4yXXwwO0FhPWtba1trW3E+PjJdPj4yXT4+Ml18MDtrW3c+PjJdPWpbKGtbdD4+Ml18MCkrMzQ+PjFdO2tbdys0Pj4yXT16YTtrW3crOD4+Ml09QWE7T2goQmEsMzU2MDksdyk7YnJlYWt9dz1ueChrW08+PjJdfDApfDA7a1tCYT4+Ml09dztpZihrW0JhPj4yXXwwKXtpZihrWyhrW1A+PjJdfDApKzQ4Pj4yXXwwKXtCYT1QRyhrW08+PjJdfDAsa1tQPj4yXXwwLGtbUT4+Ml18MCl8MDtrW3JhPj4yXT1CYTtrWyhrW08+PjJdfDApKzQyMD4+Ml09a1tkYT4+Ml07a1tOPj4yXT1rW3JhPj4yXTtCYT1rW04+PjJdfDA7cj1DYTtyZXR1cm4gQmF8MH1rW18+PjJdPTA7d2hpbGUoMSl7aWYoKGtbXz4+Ml18MCk+PShrW2tbb2E+PjJdPj4yXXwwKSlicmVhaztrW28+PjJdPShrW29hPj4yXXwwKSs4Kygoa1tfPj4yXXwwKSo3MnwwKTtrW3M+PjJdPWtbKGtbbz4+Ml18MCkrMjA+PjJdO2RvIGlmKGtbcz4+Ml18MCl7aWYoa1soa1tvPj4yXXwwKSsyND4+Ml18MCl7aWYoKGxbKGtbbz4+Ml18MCkrMzYrMT4+MF18MCk+Pj40JjEpYnJlYWs7c3goa1tCYT4+Ml18MCwxNCxrWyhrW28+PjJdfDApKzI4Pj4yXXwwLGtbKGtbbz4+Ml18MCkrMjQ+PjJdfDApfDA7YnJlYWt9dD1RRyhrW1A+PjJdfDApfDA7dz0oa1tPPj4yXXwwKSs0MTZ8MDtrW3c+PjJdPShrW3c+PjJdfDApK3Q7aWYoIShsWyhrW28+PjJdfDApKzM2Pj4wXSYzMikpUkcoa1tZPj4yXXwwLGtbcz4+Ml18MCxrWyhrW1A+PjJdfDApKzMyPj4yXXwwLGtbKGtbbz4+Ml18MCkrNDQ+PjJdfDApfDA7ZG8gaWYoIShrW18+PjJdfDApKXtpZigoa1trW29hPj4yXT4+Ml18MCkhPTE/KGxbKGtbb2E+PjJdfDApKzgrNzIrMzY+PjBdJjEwfDApPT0wOjApe3k9NDI7YnJlYWt9aWYoa1soa1tQPj4yXXwwKSs4Pj4yXSYyKXt5PTQyO2JyZWFrfWlmKG1bKGtbWT4+Ml18MCkrNjQ+PjFdJjI1Nil7eT00MjticmVha310PShHeChrW0JhPj4yXXwwKXwwKSsxfDA7a1tkPj4yXT10O3Q9KGtbTz4+Ml18MCkrNDR8MDt3PShrW3Q+PjJdfDApKzF8MDtrW3Q+PjJdPXc7a1soa1tvPj4yXXwwKSsyOD4+Ml09dzt0eChrW0JhPj4yXXwwLDE1LGtbKGtbbz4+Ml18MCkrMjg+PjJdfDAsMCxrW2Q+PjJdfDApfDA7a1soa1tvPj4yXXwwKSsyND4+Ml09a1tkPj4yXTtGQihlLDEzLGtbKGtbbz4+Ml18MCkrMjg+PjJdfDApO2lbKGtbbz4+Ml18MCkrNDA+PjBdPWtbKGtbTz4+Ml18MCkrNDI0Pj4yXTtadihrW08+PjJdfDAsa1tzPj4yXXwwLGUpfDA7alsoa1soa1tvPj4yXXwwKSsxNj4+Ml18MCkrMzg+PjFdPWpbKGtbcz4+Ml18MCkrNj4+MV18MDt3PShrW28+PjJdfDApKzM2KzF8MDtpW3c+PjBdPWlbdz4+MF0mLTE3fDE2O2tbKGtbbz4+Ml18MCkrMzI+PjJdPWtbZSsxMj4+Ml07Z0Qoa1tCYT4+Ml18MCxrWyhrW28+PjJdfDApKzI4Pj4yXXwwKTtoQShrW0JhPj4yXXwwLChrW2Q+PjJdfDApLTF8MCk7U0coa1tPPj4yXXwwKX1lbHNlIHk9NDI7d2hpbGUoMCk7aWYoKHl8MCk9PTQyKXt5PTA7a1toPj4yXT0wO3Q9KGtbTz4+Ml18MCkrNDR8MDt3PShrW3Q+PjJdfDApKzF8MDtrW3Q+PjJdPXc7a1soa1tvPj4yXXwwKSsyOD4+Ml09dzt3PXN4KGtbQmE+PjJdfDAsNzYsMCxrWyhrW28+PjJdfDApKzI4Pj4yXXwwKXwwO2tbdj4+Ml09dztrWyhrW28+PjJdfDApKzI0Pj4yXT0oa1t2Pj4yXXwwKSsxO2lmKCEoKGxbKGtbbz4+Ml18MCkrMzYrMT4+MF18MCk+Pj4zJjEpKXt3PXB4KGtbQmE+PjJdfDAsMjApfDA7a1toPj4yXT13fUZCKGUsMTIsa1soa1tvPj4yXXwwKSs0ND4+Ml18MCk7aVsoa1tvPj4yXXwwKSs0MD4+MF09a1soa1tPPj4yXXwwKSs0MjQ+PjJdO1p2KGtbTz4+Ml18MCxrW3M+PjJdfDAsZSl8MDtqWyhrWyhrW28+PjJdfDApKzE2Pj4yXXwwKSszOD4+MV09alsoa1tzPj4yXXwwKSs2Pj4xXXwwO2lmKGtbaD4+Ml18MCloQShrW0JhPj4yXXwwLGtbaD4+Ml18MCk7dz1hQShrW0JhPj4yXXwwLDcyLGtbKGtbbz4+Ml18MCkrMjg+PjJdfDApfDA7a1t1Pj4yXT13O2dFKGtbQmE+PjJdfDAsa1t2Pj4yXXwwLGtbdT4+Ml18MCk7U0coa1tPPj4yXXwwKX1pZihpWyhrW1k+PjJdfDApKzY5Pj4wXXwwKWJyZWFrIGE7dD1RRyhrW1A+PjJdfDApfDA7dz0oa1tPPj4yXXwwKSs0MTZ8MDtrW3c+PjJdPShrW3c+PjJdfDApLXR9d2hpbGUoMCk7a1tfPj4yXT0oa1tfPj4yXXwwKSsxfWtba2E+PjJdPWtba1tQPj4yXT4+Ml07a1tMPj4yXT1rWyhrW1A+PjJdfDApKzMyPj4yXTtrW2xhPj4yXT1rWyhrW1A+PjJdfDApKzM2Pj4yXTtrW21hPj4yXT1rWyhrW1A+PjJdfDApKzQwPj4yXTtpW3hhPj4wXT0oa1soa1tQPj4yXXwwKSs4Pj4yXSYxfDApIT0wO2lmKChrWyhrW1A+PjJdfDApKzg+PjJdJjl8MCk9PTE/KFZ5KGtbeWE+PjJdfDAsa1trYT4+Ml18MCwtMSl8MCk9PTA6MCl7eT0oa1tQPj4yXXwwKSs4fDA7a1t5Pj4yXT1rW3k+PjJdJi0yO3k9X3koa1tZPj4yXXwwLGtba2E+PjJdfDAsMCl8MDtrWyhrW1A+PjJdfDApKzM2Pj4yXT15O2tbbGE+PjJdPXl9aWYoa1t5YT4+Ml18MCl7dz1URyhrW08+PjJdfDAsa1t5YT4+Ml18MCwwLGtba1trYT4+Ml0+PjJdfDApfDA7a1twPj4yXT13O3c9KGtbTz4+Ml18MCkrNDB8MDt5PWtbdz4+Ml18MDtrW3c+PjJdPXkrMTtrW3lhKzg+PjJdPXk7eT13eChrW0JhPj4yXXwwLDEwNyxrW3lhKzg+PjJdfDAsKGtba1t5YT4+Ml0+PjJdfDApKzErKGtba1trYT4+Ml0+PjJdfDApfDAsMCxrW3A+PjJdfDAsLTYpfDA7a1t5YSsyMD4+Ml09eX1lbHNlIGtbeWErMjA+PjJdPS0xO2lmKChsW2tbUT4+Ml0+PjBdfDApPT0xMilzeChrW0JhPj4yXXwwLDEwNyxrWyhrW1E+PjJdfDApKzg+PjJdfDAsa1trW2thPj4yXT4+Ml18MCl8MDt5PWVBKGtbQmE+PjJdfDApfDA7a1tjYT4+Ml09eTtqWyhrW1A+PjJdfDApKzY+PjFdPTMyMDtVRyhrW08+PjJdfDAsa1tQPj4yXXwwLGtbY2E+PjJdfDApO2lmKChrWyhrW1A+PjJdfDApKzEyPj4yXXwwKT09MD8oa1t5YSsyMD4+Ml18MCk+PTA6MCl7Vkcoa1tCYT4+Ml18MCxrW3lhKzIwPj4yXXwwLDEwOCk7eT15YSsyOHwwO2lbeT4+MF09bFt5Pj4wXXwxfWlmKGtbKGtbUD4+Ml18MCkrOD4+Ml0mMSl7eT0oa1tPPj4yXXwwKSs0MHwwO3c9a1t5Pj4yXXwwO2tbeT4+Ml09dysxO2tbeGErND4+Ml09dzt3PWtbQmE+PjJdfDA7eT1rW3hhKzQ+PjJdfDA7eT13eCh3LDEwNyx5LDAsMCxURyhrW08+PjJdfDAsa1trW1A+PjJdPj4yXXwwLDAsMCl8MCwtNil8MDtrW3hhKzg+PjJdPXk7VGgoa1tCYT4+Ml18MCw4KTtpW3hhKzE+PjBdPTN9ZWxzZSBpW3hhKzE+PjBdPTA7aWYoKGtbZj4+Ml18MCk9PTAmKGtbbGE+PjJdfDApPT0wKXtqW3g+PjFdPShsW3hhPj4wXXwwKSE9MD8yNTY6MDtqW3g+PjFdPW1beD4+MV18a1soa1tQPj4yXXwwKSs4Pj4yXSYxNjM4NDtBYT1BRChrW08+PjJdfDAsa1tvYT4+Ml18MCxrW0w+PjJdfDAsa1t5YT4+Ml18MCxrW2tbUD4+Ml0+PjJdfDAsalt4Pj4xXXwwLGpbKGtbUD4+Ml18MCkrNj4+MV18MCl8MDtrW3BhPj4yXT1BYTtpZighKGtbcGE+PjJdfDApKWJyZWFrO0FhPShXRyhrW3BhPj4yXXwwKXwwKTw8MTY+PjE2O2lmKChBYXwwKTwoalsoa1tQPj4yXXwwKSs2Pj4xXXwwKSl7QWE9V0coa1twYT4+Ml18MCl8MDtqWyhrW1A+PjJdfDApKzY+PjFdPUFhfWRvIGlmKGxbeGE+PjBdfDApe2lmKCEoWEcoa1twYT4+Ml18MCl8MCkpYnJlYWs7QWE9KFhHKGtbcGE+PjJdfDApfDApJjI1NTtpW3hhKzE+PjBdPUFhfXdoaWxlKDApO2RvIGlmKGtbeWE+PjJdfDApe0FhPVlHKGtbcGE+PjJdfDApfDA7a1t5YSs0Pj4yXT1BYTtBYT0oWkcoa1twYT4+Ml18MCl8MCkmMjU1O2lbeWErMjk+PjBdPUFhO2lmKChrW3lhKzQ+PjJdfDApIT0oa1trW3lhPj4yXT4+Ml18MCkpYnJlYWs7a1t5YT4+Ml09MH13aGlsZSgwKTtkbyBpZigoa1t5YSsyMD4+Ml18MCk+PTApe2lmKGtbeWE+PjJdfDApYnJlYWs7UkEoa1tCYT4+Ml18MCxrW3lhKzIwPj4yXXwwKXwwfXdoaWxlKDApO3RhPWtbTz4+Ml18MDt1YT1rW1A+PjJdfDA7dmE9a1trYT4+Ml18MDt6YT1rW1E+PjJdfDA7QWE9X0coa1twYT4+Ml18MCl8MDthSCh0YSx1YSx2YSwtMSx5YSx4YSx6YSxBYSwkRyhrW3BhPj4yXXwwKXwwKTtCRChrW3BhPj4yXXwwKX1lbHNle2tbQWE+PjJdPTA7a1t6YT4+Ml09MDtrW2lhPj4yXT0wO2I9a1tQPj4yXXwwO2RvIGlmKGtbbGE+PjJdfDApe2tbej4+Ml09a1trW2I+PjJdPj4yXTtrW0E+PjJdPWtbKGtba1tQPj4yXT4+Ml18MCkrND4+Ml07d2hpbGUoMSl7aWYoKGtbej4+Ml18MCk8PTApYnJlYWs7alsoa1tBPj4yXXwwKSsxNisyPj4xXT0wO2tbej4+Ml09KGtbej4+Ml18MCkrLTE7a1tBPj4yXT0oa1tBPj4yXXwwKSsyMH1rW3o+PjJdPWtba1tsYT4+Ml0+PjJdO2tbQT4+Ml09a1soa1tsYT4+Ml18MCkrND4+Ml07d2hpbGUoMSl7aWYoKGtbej4+Ml18MCk8PTApYnJlYWs7alsoa1tBPj4yXXwwKSsxNisyPj4xXT0wO2tbej4+Ml09KGtbej4+Ml18MCkrLTE7a1tBPj4yXT0oa1tBPj4yXXwwKSsyMH1pZigoalsoa1tQPj4yXXwwKSs2Pj4xXXwwKTw9NjYpYnJlYWs7alsoa1tQPj4yXXwwKSs2Pj4xXT02Nn1lbHNlIGpbYis2Pj4xXT0wO3doaWxlKDApO2lmKCEoVnkoa1tsYT4+Ml18MCxrW3lhPj4yXXwwLC0xKXwwKSlrW2lhPj4yXT0xO0E9ZUEoa1tCYT4+Ml18MCl8MDtrW1M+PjJdPUE7a1tNPj4yXT0wO2tbTSs0Pj4yXT0wO2tbTSs4Pj4yXT0wO2tbTSsxMj4+Ml09MDtrW00rMTY+PjJdPTA7a1tNKzIwPj4yXT0wO2tbTSsyND4+Ml09MDtrW00rMjg+PjJdPTA7a1tNPj4yXT1rW08+PjJdO2tbTSs0Pj4yXT1rW29hPj4yXTtrW00rMTI+PjJdPXdhO2tbd2ErMTY+PjJdPShrWyhrW08+PjJdfDApKzQ0Pj4yXXwwKSsxO2lmKGtbbGE+PjJdfDApYj1rW2tbbGE+PjJdPj4yXXwwO2Vsc2UgYj0wO2tbd2ErMTI+PjJdPWI7a1t3YSsyND4+Ml09a1tsYT4+Ml07YkgoTSxrW2thPj4yXXwwKTtiSChNLGtbeWE+PjJdfDApO2lmKGtbbWE+PjJdfDApY0goTSxrW21hPj4yXXwwKTtrW3dhKzM2Pj4yXT1rW3dhKzMyPj4yXTtrW18+PjJdPTA7d2hpbGUoMSl7aWYoKGtbXz4+Ml18MCk+PShrW3dhKzQ0Pj4yXXwwKSlicmVhaztBPU0rMjh8MDtqW0E+PjFdPW1bQT4+MV18ODtiSChNLGtbKGtbKGtbd2ErNDA+PjJdfDApKyhrW18+PjJdPDw0KT4+Ml18MCkrMjA+PjJdfDApO0E9TSsyOHwwO2pbQT4+MV09bVtBPj4xXSYtOTtrW18+PjJdPShrW18+PjJdfDApKzF9a1t3YSsyMD4+Ml09a1soa1tPPj4yXXwwKSs0ND4+Ml07aWYoaVsoa1tZPj4yXXwwKSs2OT4+MF18MClicmVhaztpZihrW2xhPj4yXXwwKXtLPShrW08+PjJdfDApKzQwfDA7TT1rW0s+PjJdfDA7a1tLPj4yXT1NKzE7a1t3YSs0Pj4yXT1NO009VEcoa1tPPj4yXXwwLGtbbGE+PjJdfDAsMCxrW3dhKzMyPj4yXXwwKXwwO2tbbmE+PjJdPU07TT13eChrW0JhPj4yXXwwLDEwOCxrW3dhKzQ+PjJdfDAsa1t3YSsxMj4+Ml18MCwwLGtbbmE+PjJdfDAsLTYpfDA7a1tXPj4yXT1NO009KGtbTz4+Ml18MCkrNDR8MDtLPShrW00+PjJdfDApKzF8MDtrW00+PjJdPUs7a1tlYT4+Ml09SztLPShrW08+PjJdfDApKzQ0fDA7TT0oa1tLPj4yXXwwKSsxfDA7a1tLPj4yXT1NO2tbYWE+PjJdPU07TT0oa1tPPj4yXXwwKSs0NHwwO0s9KGtbTT4+Ml18MCkrMXwwO2tbTT4+Ml09SztrW3RhPj4yXT1LO0s9ZUEoa1tCYT4+Ml18MCl8MDtrW1Q+PjJdPUs7Sz0oa1tPPj4yXXwwKSs0NHwwO009KGtbSz4+Ml18MCkrMXwwO2tbSz4+Ml09TTtrW3ZhPj4yXT1NO009ZUEoa1tCYT4+Ml18MCl8MDtrW1U+PjJdPU07a1skPj4yXT0oa1soa1tPPj4yXXwwKSs0ND4+Ml18MCkrMTtNPShrW08+PjJdfDApKzQ0fDA7a1tNPj4yXT0oa1tNPj4yXXwwKSsoa1trW2xhPj4yXT4+Ml18MCk7a1tiYT4+Ml09KGtbKGtbTz4+Ml18MCkrNDQ+PjJdfDApKzE7TT0oa1tPPj4yXXwwKSs0NHwwO2tbTT4+Ml09KGtbTT4+Ml18MCkrKGtba1tsYT4+Ml0+PjJdfDApO3N4KGtbQmE+PjJdfDAsNzYsMCxrW2FhPj4yXXwwKXwwO3N4KGtbQmE+PjJdfDAsNzYsMCxrW2VhPj4yXXwwKXwwO3R4KGtbQmE+PjJdfDAsNzksMCxrWyQ+PjJdfDAsKGtbJD4+Ml18MCkrKGtba1tsYT4+Ml0+PjJdfDApLTF8MCl8MDtzeChrW0JhPj4yXXwwLDE0LGtbdmE+PjJdfDAsa1tVPj4yXXwwKXwwO009QUQoa1tPPj4yXXwwLGtbb2E+PjJdfDAsa1tMPj4yXXwwLGtbbGE+PjJdfDAsMCwoNjR8KChrW2lhPj4yXXwwKSE9MD81MTI6MCkpJjY1NTM1LDApfDA7a1twYT4+Ml09TTtpZighKGtbcGE+PjJdfDApKWJyZWFrO009WUcoa1twYT4+Ml18MCl8MDtpZigoTXwwKT09KGtba1tsYT4+Ml0+PjJdfDApKWtbWj4+Ml09MDtlbHNle2lmKGxbeGE+PjBdfDApYj0oa1soa1tQPj4yXXwwKSs4Pj4yXSYxfDApPT0wO2Vsc2UgYj0wO2RIKGtbTz4+Ml18MCxiPzM1NjQ5OjM1NjU4KTtrW1o+PjJdPTE7a1toYT4+Ml09a1trW2xhPj4yXT4+Ml07a1tnYT4+Ml09a1toYT4+Ml07a1tmYT4+Ml09a1toYT4+Ml07a1tfPj4yXT0wO3doaWxlKDEpe2lmKChrW18+PjJdfDApPj0oa1t3YSszMj4+Ml18MCkpYnJlYWs7aWYoKGtbKGtbd2ErMjg+PjJdfDApKygoa1tfPj4yXXwwKSoyNHwwKSsxMj4+Ml18MCk+PShrW2ZhPj4yXXwwKSl7a1tnYT4+Ml09KGtbZ2E+PjJdfDApKzE7a1tmYT4+Ml09KGtbZmE+PjJdfDApKzF9a1tfPj4yXT0oa1tfPj4yXXwwKSsxfU09TUEoa1tPPj4yXXwwLGtbZ2E+PjJdfDApfDA7a1tzYT4+Ml09TTtPQyhrW08+PjJdfDApO2tCKGtbTz4+Ml18MCxrW2xhPj4yXXwwLGtbc2E+PjJdfDAsMCwwKXwwO2tbZmE+PjJdPWtbaGE+PjJdO2tbXz4+Ml09MDt3aGlsZSgxKXtpZigoa1tfPj4yXXwwKT49KGtbd2ErMzI+PjJdfDApKWJyZWFrO2tbamE+PjJdPShrW3dhKzI4Pj4yXXwwKSsoKGtbXz4+Ml18MCkqMjR8MCk7aWYoKGtbKGtbamE+PjJdfDApKzEyPj4yXXwwKT49KGtbZmE+PjJdfDApKXtrW3FhPj4yXT0oa1tmYT4+Ml18MCkrKGtbc2E+PjJdfDApO2ZFKGtbTz4+Ml18MCxrW2tbamE+PjJdPj4yXXwwLGtbKGtbamE+PjJdfDApKzg+PjJdfDAsa1soa1tqYT4+Ml18MCkrND4+Ml18MCxrW3FhPj4yXXwwKTtrW2ZhPj4yXT0oa1tmYT4+Ml18MCkrMX1rW18+PjJdPShrW18+PjJdfDApKzF9cWE9Rngoa1tPPj4yXXwwKXwwO2tbdWE+PjJdPXFhO3R4KGtbQmE+PjJdfDAsOTksa1tzYT4+Ml18MCxrW2dhPj4yXXwwLGtbdWE+PjJdfDApfDA7c3goa1tCYT4+Ml18MCwxMjUsa1t3YSs0Pj4yXXwwLGtbdWE+PjJdfDApfDA7SHgoa1tPPj4yXXwwLGtbdWE+PjJdfDApO1BBKGtbTz4+Ml18MCxrW3NhPj4yXXwwLGtbZ2E+PjJdfDApO0JEKGtbcGE+PjJdfDApO3NhPShrW08+PjJdfDApKzQwfDA7dWE9a1tzYT4+Ml18MDtrW3NhPj4yXT11YSsxO2tbQWE+PjJdPXVhO2tbd2ErOD4+Ml09dWE7dWE9Rngoa1tPPj4yXXwwKXwwO2tbemE+PjJdPXVhO3R4KGtbQmE+PjJdfDAsMTEwLGtbQWE+PjJdfDAsa1t6YT4+Ml18MCxrW2dhPj4yXXwwKXwwO3N4KGtbQmE+PjJdfDAsNTUsa1t3YSs0Pj4yXXwwLGtbUz4+Ml18MCl8MDtpW3dhKzE+PjBdPTE7T0Moa1tPPj4yXXwwKX1kbyBpZihrW2lhPj4yXXwwKXtpZihtWyhrW1k+PjJdfDApKzY0Pj4xXSY0KWJyZWFrO2lmKChrW1o+PjJdfDApPT0wPyhlSChrW3BhPj4yXXwwKXwwKT09MDowKWJyZWFrO2tbeWE+PjJdPTA7UkEoa1tCYT4+Ml18MCxrW3lhKzIwPj4yXXwwKXwwfXdoaWxlKDApO3VhPUd4KGtbQmE+PjJdfDApfDA7a1tYPj4yXT11YTtPQyhrW08+PjJdfDApO2lmKGtbWj4+Ml18MCl0eChrW0JhPj4yXXwwLDEyMCxrW3dhKzQ+PjJdfDAsa1t6YT4+Ml18MCxrW0FhPj4yXXwwKXwwO2tbZmE+PjJdPTA7d2hpbGUoMSl7aWYoKGtbZmE+PjJdfDApPj0oa1trW2xhPj4yXT4+Ml18MCkpYnJlYWs7aWYoa1taPj4yXXwwKXR4KGtbQmE+PjJdfDAsOTYsa1tBYT4+Ml18MCxrW2ZhPj4yXXwwLChrW2JhPj4yXXwwKSsoa1tmYT4+Ml18MCl8MCl8MDtlbHNle2lbd2E+PjBdPTE7JEEoa1tPPj4yXXwwLGtbKGtbKGtbbGE+PjJdfDApKzQ+PjJdfDApKygoa1tmYT4+Ml18MCkqMjB8MCk+PjJdfDAsKGtbYmE+PjJdfDApKyhrW2ZhPj4yXXwwKXwwKX1rW2ZhPj4yXT0oa1tmYT4+Ml18MCkrMX1zYT1rW0JhPj4yXXwwO3VhPWtbJD4+Ml18MDt6YT1rW2JhPj4yXXwwO0FhPWtba1tsYT4+Ml0+PjJdfDA7d3goc2EsOTUsdWEsemEsQWEseEEoa1tuYT4+Ml18MCl8MCwtNil8MDtBYT1HeChrW0JhPj4yXXwwKXwwO2tbUj4+Ml09QWE7dHgoa1tCYT4+Ml18MCwxOCwoa1tSPj4yXXwwKSsxfDAsMCwoa1tSPj4yXXwwKSsxfDApfDA7Zkgoa1tPPj4yXXwwLGtbYmE+PjJdfDAsa1skPj4yXXwwLGtba1tsYT4+Ml0+PjJdfDApO3N4KGtbQmE+PjJdfDAsMTQsa1t0YT4+Ml18MCxrW1Q+PjJdfDApfDA7c3goa1tCYT4+Ml18MCw2NixrW2FhPj4yXXwwLGtbUz4+Ml18MCl8MDtzeChrW0JhPj4yXXwwLDE0LGtbdmE+PjJdfDAsa1tVPj4yXXwwKXwwO2hBKGtbQmE+PjJdfDAsa1tSPj4yXXwwKTtnSChrW08+PjJdfDAsd2EpO3N4KGtbQmE+PjJdfDAsNzYsMSxrW2VhPj4yXXwwKXwwO2lmKGtbWj4+Ml18MClzeChrW0JhPj4yXXwwLDMsa1t3YSs0Pj4yXXwwLGtbWD4+Ml18MCl8MDtlbHNle0JEKGtbcGE+PjJdfDApO1JBKGtbQmE+PjJdfDAsa1tXPj4yXXwwKXwwfXN4KGtbQmE+PjJdfDAsMTQsa1t0YT4+Ml18MCxrW1Q+PjJdfDApfDA7Z0Eoa1tCYT4+Ml18MCxrW1M+PjJdfDApfDA7QWE9R3goa1tCYT4+Ml18MCl8MDtrW1Y+PjJdPUFhO3N4KGtbQmE+PjJdfDAsNzYsMSxrW2FhPj4yXXwwKXwwO2FBKGtbQmE+PjJdfDAsNzIsa1t0YT4+Ml18MCl8MDtpQShrW0JhPj4yXXwwLGtbVD4+Ml18MCk7QWE9R3goa1tCYT4+Ml18MCl8MDtrW1Q+PjJdPUFhO3N4KGtbQmE+PjJdfDAsNjYsa1tlYT4+Ml18MCwoa1tUPj4yXXwwKSsyfDApfDA7YUEoa1tCYT4+Ml18MCw3MixrW3RhPj4yXXwwKXwwO2hIKGtbTz4+Ml18MCx3YSk7c0Ioa1tPPj4yXXwwLGtbbWE+PjJdfDAsKGtbVD4+Ml18MCkrMXwwLDE2KTthSChrW08+PjJdfDAsa1tQPj4yXXwwLGtba1tQPj4yXT4+Ml18MCwtMSx5YSx4YSxrW1E+PjJdfDAsKGtbVD4+Ml18MCkrMXwwLGtbVj4+Ml18MCk7YUEoa1tCYT4+Ml18MCw3MixrW3RhPj4yXXwwKXwwO2lBKGtbQmE+PjJdfDAsa1tVPj4yXXwwKTtpSChrW08+PjJdfDAsd2EpO2FBKGtbQmE+PjJdfDAsNzIsa1t2YT4+Ml18MCl8MH1lbHNle2tbRz4+Ml09MDtBYT1qSChrW1A+PjJdfDAsd2EpfDA7a1tLPj4yXT1BYTtpZihBYSl7emE9UGgoa1trW08+PjJdPj4yXXwwLGtbKGtbSz4+Ml18MCkrNjQ+PjJdfDApfDA7a1tEPj4yXT16YTt6YT0oa1tPPj4yXXwwKSs0MHwwO0FhPWtbemE+PjJdfDA7a1t6YT4+Ml09QWErMTtrW0M+PjJdPUFhO2tbST4+Ml09MDtrW0Y+PjJdPTA7a1tFPj4yXT1rWyhrW0s+PjJdfDApKzI4Pj4yXTtDeChrW08+PjJdfDAsa1tEPj4yXXwwKTtiQShrW08+PjJdfDAsa1tEPj4yXXwwLGtbKGtbSz4+Ml18MCkrMjg+PjJdfDAsMCxrW2tbSz4+Ml0+PjJdfDApO2lmKGxbKGtbSz4+Ml18MCkrNDI+PjBdJjMyKXtBYT1UaihrW0s+PjJdfDApfDA7a1tGPj4yXT1BYX1rW0g+PjJdPWtbKGtbSz4+Ml18MCkrOD4+Ml07d2hpbGUoMSl7aWYoIShrW0g+PjJdfDApKWJyZWFrO2RvIGlmKCEoKGxbKGtbSD4+Ml18MCkrNTU+PjBdfDApPj4+MiYxKSl7aWYoKGpbKGtbSD4+Ml18MCkrNDg+PjFdfDApPj0oalsoa1tLPj4yXXwwKSs0MD4+MV18MCkpYnJlYWs7aWYoa1soa1tIPj4yXXwwKSszNj4+Ml18MClicmVhaztpZigoa1tGPj4yXXwwKSE9MD8oalsoa1tIPj4yXXwwKSs0OD4+MV18MCk+PShqWyhrW0Y+PjJdfDApKzQ4Pj4xXXwwKTowKWJyZWFrO2tbRj4+Ml09a1tIPj4yXX13aGlsZSgwKTtrW0g+PjJdPWtbKGtbSD4+Ml18MCkrMjA+PjJdfWlmKGtbRj4+Ml18MCl7a1tFPj4yXT1rWyhrW0Y+PjJdfDApKzQ0Pj4yXTtBYT1yQShrW08+PjJdfDAsa1tGPj4yXXwwKXwwO2tbST4+Ml09QWF9U2goa1tCYT4+Ml18MCwxMDQsa1tDPj4yXXwwLGtbRT4+Ml18MCxrW0Q+PjJdfDAsMSl8MDtpZihrW0k+PjJdfDApV2goa1tCYT4+Ml18MCwtMSxrW0k+PjJdfDAsLTYpO3N4KGtbQmE+PjJdfDAsMTAwLGtbQz4+Ml18MCxrWyhrW3dhKzQwPj4yXXwwKSs4Pj4yXXwwKXwwO2FBKGtbQmE+PjJdfDAsMTExLGtbQz4+Ml18MCl8MDtrSChrW08+PjJdfDAsa1tLPj4yXXwwLGtbRj4+Ml18MCl9ZWxzZXtrW0o+PjJdPTA7aVtCPj4wXT0wO2lmKCEoa1soa1tQPj4yXXwwKSs0MD4+Ml18MCkpe0FhPWxIKHdhLEopfDA7aVtCPj4wXT1BYX1kbyBpZihpW0I+PjBdfDApe0FhPV95KGtbWT4+Ml18MCxrW0o+PjJdfDAsMCl8MDtrW0o+PjJdPUFhO2tbRz4+Ml09a1tKPj4yXTtpZihpWyhrW1k+PjJdfDApKzY5Pj4wXXwwKWJyZWFrO2lbKGtbKGtbSj4+Ml18MCkrND4+Ml18MCkrMTI+PjBdPShsW0I+PjBdfDApIT0xPzE6MDtpW2tba1soa1tKPj4yXXwwKSs0Pj4yXT4+Ml0+PjBdPS0xMDR9d2hpbGUoMCk7aUgoa1tPPj4yXXwwLHdhKTtBYT1BRChrW08+PjJdfDAsa1tvYT4+Ml18MCxrW0w+PjJdfDAsa1tKPj4yXXwwLDAsbFtCPj4wXXwwLDApfDA7a1twYT4+Ml09QWE7aWYoIShrW3BhPj4yXXwwKSl7b3Yoa1tZPj4yXXwwLGtbRz4+Ml18MCk7YnJlYWt9Z0goa1tPPj4yXXwwLHdhKTtpZigoWUcoa1twYT4+Ml18MCl8MCk+MCl7QWE9a1tCYT4+Ml18MDtnQShBYSwkRyhrW3BhPj4yXXwwKXwwKXwwfUJEKGtbcGE+PjJdfDApO2hIKGtbTz4+Ml18MCx3YSl9a1t5YT4+Ml09MDtzQihrW08+PjJdfDAsa1ttYT4+Ml18MCxrW1M+PjJdfDAsMTYpO2FIKGtbTz4+Ml18MCxrW1A+PjJdfDAsa1trW1A+PjJdPj4yXXwwLC0xLDAsMCxrW1E+PjJdfDAsa1tTPj4yXXwwLGtbUz4+Ml18MCk7b3Yoa1tZPj4yXXwwLGtbRz4+Ml18MCl9aUEoa1tCYT4+Ml18MCxrW1M+PjJdfDApfWlmKChsW3hhKzE+PjBdfDApPT0zKWRIKGtbTz4+Ml18MCwzNTY0OSk7aWYoa1t5YT4+Ml18MCl7ZEgoa1tPPj4yXXwwLChrW3lhKzQ+PjJdfDApPjA/MzU2Njc6MzU2OTApO21IKGtbTz4+Ml18MCxrW1A+PjJdfDAseWEsa1trW2thPj4yXT4+Ml18MCxrW1E+PjJdfDApfWlBKGtbQmE+PjJdfDAsa1tjYT4+Ml18MCk7a1tyYT4+Ml09KGtbKGtbTz4+Ml18MCkrMzY+PjJdfDApPjAmMX19d2hpbGUoMCk7a1soa1tPPj4yXXwwKSs0MjA+PjJdPWtbZGE+PjJdO2lmKChrW3JhPj4yXXwwKT09MD8obFtrW1E+PjJdPj4wXXwwKT09OTowKW5IKGtbTz4+Ml18MCxrW29hPj4yXXwwLGtba2E+PjJdfDApO2JnKGtbWT4+Ml18MCxrW3dhKzI4Pj4yXXwwKTtiZyhrW1k+PjJdfDAsa1t3YSs0MD4+Ml18MCk7a1tOPj4yXT1rW3JhPj4yXTtCYT1rW04+PjJdfDA7cj1DYTtyZXR1cm4gQmF8MH1rW04+PjJdPTE7QmE9a1tOPj4yXXwwO3I9Q2E7cmV0dXJuIEJhfDB9ZnVuY3Rpb24gX3YoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTAsaT0wLGo9MDtqPXI7cj1yKzMyfDA7aT1qO2M9aisyNHwwO2Q9aisyMHwwO2g9aisxNnwwO2c9aisxMnwwO2Y9ais4fDA7ZT1qKzR8MDtrW2M+PjJdPWE7a1tkPj4yXT1iO2lmKCEoa1soa1tkPj4yXXwwKSs0OD4+Ml18MCkpe3I9ajtyZXR1cm59a1toPj4yXT0wO2tbZT4+Ml09MDtrW2c+PjJdPWtbZD4+Ml07d2hpbGUoMSl7aWYoIShrW2c+PjJdfDApKWJyZWFrO2tbKGtbZz4+Ml18MCkrNTI+PjJdPWtbaD4+Ml07YT0oa1tnPj4yXXwwKSs4fDA7a1thPj4yXT1rW2E+PjJdfDI1NjtrW2g+PjJdPWtbZz4+Ml07a1tnPj4yXT1rWyhrW2c+PjJdfDApKzQ4Pj4yXTtrW2U+PjJdPShrW2U+PjJdfDApKzF9aWYoa1soa1tkPj4yXXwwKSs4Pj4yXSYxMDI0KXtyPWo7cmV0dXJufWE9a1soa1trW2M+PjJdPj4yXXwwKSs5NisxNj4+Ml18MDtrW2Y+PjJdPWE7aWYoKGF8MCk8PTApe3I9ajtyZXR1cm59aWYoKGtbZT4+Ml18MCk8PShrW2Y+PjJdfDApKXtyPWo7cmV0dXJufU9oKGtbYz4+Ml18MCwzNTU3NSxpKTtyPWo7cmV0dXJufWZ1bmN0aW9uICR2KGEsYixjLGQsZSxmLGcsaCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7dmFyIGk9MCxqPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTA7eD1yO3I9cis0OHwwO3Y9eDtpPXgrNDR8MDtqPXgrNDB8MDtsPXgrMzZ8MDttPXgrMzJ8MDtuPXgrMjh8MDtvPXgrMjR8MDtwPXgrMjB8MDtxPXgrMTZ8MDtzPXgrMTJ8MDt1PXgrOHwwO3Q9eCs0fDA7a1tqPj4yXT1hO2tbbD4+Ml09YjtrW20+PjJdPWM7a1tuPj4yXT1kO2tbbz4+Ml09ZTtrW3A+PjJdPWY7a1txPj4yXT1nO2tbcz4+Ml09aDtrW3Q+PjJdPWtba1tqPj4yXT4+Ml07aWYoKGtbbD4+Ml18MCk9PTA/KGtbcT4+Ml18MCkhPTB8KGtbcz4+Ml18MCkhPTA6MCl7aD1rW2o+PjJdfDA7a1t2Pj4yXT0oa1txPj4yXXwwKSE9MD8zNTUzMDozNTUzMztPaChoLDM1NTM5LHYpfWVsc2Ugdz00O2lmKCgod3wwKT09ND8odz1pdyhrW3Q+PjJdfDAsa1tsPj4yXXwwLGtbbT4+Ml18MCxrW24+PjJdfDApfDAsa1tsPj4yXT13LChrW2w+PjJdfDApIT0wKTowKT8oa1trW2w+PjJdPj4yXXwwKSE9MDowKXtrW3U+PjJdPShrW2w+PjJdfDApKzgrKCgoa1trW2w+PjJdPj4yXXwwKS0xfDApKjcyfDApO2lmKGtbKGtbbz4+Ml18MCkrND4+Ml18MCl7dz1ieChrW3Q+PjJdfDAsa1tvPj4yXXwwKXwwO2tbKGtbdT4+Ml18MCkrMTI+PjJdPXd9a1soa1t1Pj4yXXwwKSsyMD4+Ml09a1twPj4yXTtrWyhrW3U+PjJdfDApKzQ4Pj4yXT1rW3E+PjJdO2tbKGtbdT4+Ml18MCkrNTI+PjJdPWtbcz4+Ml07a1tpPj4yXT1rW2w+PjJdO3c9a1tpPj4yXXwwO3I9eDtyZXR1cm4gd3wwfXN2KGtbdD4+Ml18MCxrW3E+PjJdfDApO3V2KGtbdD4+Ml18MCxrW3M+PjJdfDApO3B2KGtbdD4+Ml18MCxrW3A+PjJdfDApO2tbaT4+Ml09MDt3PWtbaT4+Ml18MDtyPXg7cmV0dXJuIHd8MH1mdW5jdGlvbiBhdyhhLGIsYyxkLGUsZixnLGgsbCxtKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtsPWx8MDttPW18MDt2YXIgbj0wLG89MCxwPTAscT0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MDtCPXI7cj1yKzEyOHwwO249QisxMTJ8MDtvPUIrMTA4fDA7cD1CKzEwNHwwO3E9QisxMDB8MDtzPUIrOTZ8MDt0PUIrOTJ8MDt1PUIrODh8MDt2PUIrODR8MDt3PUIrODB8MDt4PUIrNzZ8MDt6PUIrNzJ8MDtBPUIrNHwwO3k9QjtrW24+PjJdPWE7a1tvPj4yXT1iO2tbcD4+Ml09YztrW3E+PjJdPWQ7a1tzPj4yXT1lO2tbdD4+Ml09ZjtrW3U+PjJdPWc7a1t2Pj4yXT1oO2tbdz4+Ml09bDtrW3g+PjJdPW07a1t5Pj4yXT1rW2tbbj4+Ml0+PjJdO2g9ZHgoa1t5Pj4yXXwwLDY4LDApfDA7a1t6Pj4yXT1oO2tbej4+Ml09KGtbej4+Ml18MCk9PTA/QTpoO2lmKCEoa1tvPj4yXXwwKSl7aD1rW24+PjJdfDA7aD1idyhoLDAsZXcoa1t5Pj4yXXwwLDE2MCwwKXwwKXwwO2tbbz4+Ml09aH1rW2tbej4+Ml0+PjJdPWtbbz4+Ml07aVsoa1t6Pj4yXXwwKSs0Pj4wXT0xMTk7a1soa1t6Pj4yXXwwKSs4Pj4yXT1rW3Y+PjJdO2tbKGtbej4+Ml18MCkrMTI+PjJdPTA7a1soa1t6Pj4yXXwwKSsxNj4+Ml09MDtrWyhrW3o+PjJdfDApKzIwPj4yXT0tMTtrWyhrW3o+PjJdfDApKzIwKzQ+PjJdPS0xO2pbKGtbej4+Ml18MCkrNj4+MV09MDtpZighKGtbcD4+Ml18MCkpe2g9Q2goa1t5Pj4yXXwwLDgwLDApfDA7a1twPj4yXT1ofWtbKGtbej4+Ml18MCkrMjg+PjJdPWtbcD4+Ml07a1soa1t6Pj4yXXwwKSszMj4+Ml09a1txPj4yXTtrWyhrW3o+PjJdfDApKzM2Pj4yXT1rW3M+PjJdO2tbKGtbej4+Ml18MCkrNDA+PjJdPWtbdD4+Ml07a1soa1t6Pj4yXXwwKSs0ND4+Ml09a1t1Pj4yXTtrWyhrW3o+PjJdfDApKzQ4Pj4yXT0wO2tbKGtbej4+Ml18MCkrNTI+PjJdPTA7a1soa1t6Pj4yXXwwKSs1Nj4+Ml09a1t3Pj4yXTtrWyhrW3o+PjJdfDApKzYwPj4yXT1rW3g+PjJdO2tbKGtbej4+Ml18MCkrNjQ+PjJdPTA7aWYoIShpWyhrW3k+PjJdfDApKzY5Pj4wXXwwKSl7QT1rW3o+PjJdfDA7cj1CO3JldHVybiBBfDB9cXYoa1t5Pj4yXXwwLGtbej4+Ml18MCwoa1t6Pj4yXXwwKSE9KEF8MCkmMSk7a1t6Pj4yXT0wO0E9a1t6Pj4yXXwwO3I9QjtyZXR1cm4gQXwwfWZ1bmN0aW9uIGJ3KGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxpPTAsaj0wLGw9MDtqPXI7cj1yKzMyfDA7ZT1qKzI0fDA7bD1qKzIwfDA7Zj1qKzE2fDA7Zz1qKzEyfDA7aD1qKzh8MDtkPWorNHwwO2k9ajtrW2w+PjJdPWE7a1tmPj4yXT1iO2tbZz4+Ml09YztrW2g+PjJdPWtba1tsPj4yXT4+Ml07aWYoIShrW2Y+PjJdfDApKXtsPWR4KGtbaD4+Ml18MCw4LDApfDA7a1tmPj4yXT1sO2lmKChrW2Y+PjJdfDApIT0wPyhrW2tbZj4+Ml0+PjJdPTAsbD1keChrW2g+PjJdfDAsMjAsMCl8MCxrWyhrW2Y+PjJdfDApKzQ+PjJdPWwsKGtbKGtbZj4+Ml18MCkrND4+Ml18MCkhPTApOjApZD03O2Vsc2UgZD04fWVsc2UgaWYoIShrW2tbZj4+Ml0+PjJdJihrW2tbZj4+Ml0+PjJdfDApLTEpKXtsPWN4KGtbaD4+Ml18MCxrWyhrW2Y+PjJdfDApKzQ+PjJdfDAsKGtba1tmPj4yXT4+Ml08PDEpKjIwfDAsMCl8MDtrW2Q+PjJdPWw7aWYoIShrW2Q+PjJdfDApKWQ9ODtlbHNle2tbKGtbZj4+Ml18MCkrND4+Ml09a1tkPj4yXTtkPTd9fWVsc2UgZD03O2lmKChkfDApPT03KXtoPWtbZj4+Ml18MDtsPWtbaD4+Ml18MDtrW2g+PjJdPWwrMTtrW2k+PjJdPShrWyhrW2Y+PjJdfDApKzQ+PjJdfDApKyhsKjIwfDApO2w9a1tpPj4yXXwwO2tbbD4+Ml09MDtrW2wrND4+Ml09MDtrW2wrOD4+Ml09MDtrW2wrMTI+PjJdPTA7a1tsKzE2Pj4yXT0wO2tba1tpPj4yXT4+Ml09a1tnPj4yXTtrW2U+PjJdPWtbZj4+Ml07bD1rW2U+PjJdfDA7cj1qO3JldHVybiBsfDB9ZWxzZSBpZigoZHwwKT09OCl7c3Yoa1toPj4yXXwwLGtbZz4+Ml18MCk7b3Yoa1toPj4yXXwwLGtbZj4+Ml18MCk7a1tlPj4yXT0wO2w9a1tlPj4yXXwwO3I9ajtyZXR1cm4gbHwwfXJldHVybiAwfWZ1bmN0aW9uIGN3KGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaT0wLGo9MDtqPXI7cj1yKzMyfDA7ZT1qKzE2fDA7Zj1qKzEyfDA7Zz1qKzh8MDtoPWorNHwwO2k9ajtrW2U+PjJdPWE7a1tmPj4yXT1iO2tbZz4+Ml09YztrW2g+PjJdPWQ7aWYoIShrW2Y+PjJdfDApKXtyPWo7cmV0dXJufWtbaT4+Ml09KGtbKGtbZj4+Ml18MCkrND4+Ml18MCkrKCgoa1trW2Y+PjJdPj4yXXwwKS0xfDApKjIwfDApO2E9Z3goa1trW2U+PjJdPj4yXXwwLGtba1tnPj4yXT4+Ml18MCxrWyhrW2c+PjJdfDApKzQ+PjJdfDAsMCl8MDtrWyhrW2k+PjJdfDApKzQ+PjJdPWE7aWYoIShrW2g+PjJdfDApKXtyPWo7cmV0dXJufWh4KGtbKGtbaT4+Ml18MCkrND4+Ml18MCk7cj1qO3JldHVybn1mdW5jdGlvbiBkdyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaT0wO2g9cjtyPXIrMzJ8MDtpPWgrMTZ8MDtkPWgrMTJ8MDtlPWgrOHwwO2Y9aCs0fDA7Zz1oO2tbaT4+Ml09YTtrW2Q+PjJdPWI7a1tlPj4yXT1jO2tbZj4+Ml09a1trW2k+PjJdPj4yXTtpZighKGtbZD4+Ml18MCkpe3I9aDtyZXR1cm59a1tnPj4yXT0oa1soa1tkPj4yXXwwKSs0Pj4yXXwwKSsoKChrW2tbZD4+Ml0+PjJdfDApLTF8MCkqMjB8MCk7Ymcoa1tmPj4yXXwwLGtbKGtbZz4+Ml18MCkrOD4+Ml18MCk7aT0oa1soa1tlPj4yXXwwKSs4Pj4yXXwwKS0oa1soa1tlPj4yXXwwKSs0Pj4yXXwwKXwwO2k9Z3goa1tmPj4yXXwwLGtbKGtbZT4+Ml18MCkrND4+Ml18MCxpLCgoaXwwKTwwKTw8MzE+PjMxKXwwO2tbKGtbZz4+Ml18MCkrOD4+Ml09aTtyPWg7cmV0dXJufWZ1bmN0aW9uIGV3KGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MDtoPXI7cj1yKzMyfDA7ZT1oKzE2fDA7Zj1oKzEyfDA7ZD1oKzh8MDtnPWg7a1tlPj4yXT1hO2tbZj4+Ml09YjtrW2Q+PjJdPWM7a1tnPj4yXT1rW2Q+PjJdO2lmKGtbZD4+Ml18MClkPVRmKGtbZD4+Ml18MCl8MDtlbHNlIGQ9MDtrW2crND4+Ml09ZDtnPXR3KGtbZT4+Ml18MCxrW2Y+PjJdfDAsZywwKXwwO3I9aDtyZXR1cm4gZ3wwfWZ1bmN0aW9uIGZ3KGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MDtkPXI7cj1yKzE2fDA7Yj1kKzR8MDtjPWQ7a1tiPj4yXT1hO2lmKCEoa1tiPj4yXXwwKSl7cj1kO3JldHVybn1rW2M+PjJdPShrW2tbYj4+Ml0+PjJdfDApLTE7d2hpbGUoMSl7aWYoKGtbYz4+Ml18MCk8PTApYnJlYWs7aVsoa1tiPj4yXXwwKSs4Kygoa1tjPj4yXXwwKSo3MnwwKSszNj4+MF09aVsoa1tiPj4yXXwwKSs4KygoKGtbYz4+Ml18MCktMXwwKSo3MnwwKSszNj4+MF18MDtrW2M+PjJdPShrW2M+PjJdfDApKy0xfWlbKGtbYj4+Ml18MCkrOCszNj4+MF09MDtyPWQ7cmV0dXJufWZ1bmN0aW9uIGd3KGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MDtoPXI7cj1yKzE2fDA7ZD1oKzEyfDA7ZT1oKzh8MDtmPWgrNHwwO2c9aDtrW2Q+PjJdPWE7a1tlPj4yXT1iO2tbZj4+Ml09YztpZighKGtbZT4+Ml18MCkpe3I9aDtyZXR1cm59aWYoKGtba1tlPj4yXT4+Ml18MCk8PTApe3I9aDtyZXR1cm59a1tnPj4yXT0oa1tlPj4yXXwwKSs4KygoKGtba1tlPj4yXT4+Ml18MCktMXwwKSo3MnwwKTtpZigoa1soa1tmPj4yXXwwKSs0Pj4yXXwwKT09MT8oa1trW2Y+PjJdPj4yXXwwKT09MDowKXthPShrW2c+PjJdfDApKzM2KzF8MDtpW2E+PjBdPWlbYT4+MF0mLTJ8MTtyPWg7cmV0dXJufWE9Yngoa1trW2Q+PjJdPj4yXXwwLGtbZj4+Ml18MCl8MDtrWyhrW2c+PjJdfDApKzY0Pj4yXT1hO2E9KGtbZz4+Ml18MCkrMzYrMXwwO2lbYT4+MF09aVthPj4wXSYtM3woKGtbKGtbZz4+Ml18MCkrNjQ+PjJdfDApIT0wJjEpPDwxJjI1NTtyPWg7cmV0dXJufWZ1bmN0aW9uIGh3KGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MDtoPXI7cj1yKzE2fDA7ZD1oKzEyfDA7ZT1oKzh8MDtmPWgrNHwwO2c9aDtrW2Q+PjJdPWE7a1tlPj4yXT1iO2tbZj4+Ml09YztpZihrW2U+PjJdfDApe2tbZz4+Ml09KGtbZT4+Ml18MCkrOCsoKChrW2tbZT4+Ml0+PjJdfDApLTF8MCkqNzJ8MCk7a1soa1tnPj4yXXwwKSs2ND4+Ml09a1tmPj4yXTthPShrW2c+PjJdfDApKzM2KzF8MDtpW2E+PjBdPWlbYT4+MF0mLTV8NDtyPWg7cmV0dXJufWVsc2V7b3Yoa1trW2Q+PjJdPj4yXXwwLGtbZj4+Ml18MCk7cj1oO3JldHVybn19ZnVuY3Rpb24gaXcoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTAsbD0wLG09MCxuPTA7bj1yO3I9ciszMnwwO2U9bisyNHwwO2Y9bisyMHwwO2c9bisxNnwwO2g9bisxMnwwO2o9bis4fDA7bD1uKzR8MDttPW47a1tmPj4yXT1hO2tbZz4+Ml09YjtrW2g+PjJdPWM7a1tqPj4yXT1kO2RvIGlmKCEoa1tnPj4yXXwwKSl7Yz1keChrW2Y+PjJdfDAsODAsMCl8MDtrW2c+PjJdPWM7aWYoa1tnPj4yXXwwKXtrWyhrW2c+PjJdfDApKzQ+PjJdPTE7a1trW2c+PjJdPj4yXT0wO2JyZWFrfWtbZT4+Ml09MDttPWtbZT4+Ml18MDtyPW47cmV0dXJuIG18MH13aGlsZSgwKTtjPU5HKGtbZj4+Ml18MCxrW2c+PjJdfDAsMSxrW2tbZz4+Ml0+PjJdfDApfDA7a1tnPj4yXT1jO2lmKGlbKGtbZj4+Ml18MCkrNjk+PjBdfDApe3J2KGtbZj4+Ml18MCxrW2c+PjJdfDApO2tbZT4+Ml09MDttPWtbZT4+Ml18MDtyPW47cmV0dXJuIG18MH1rW2w+PjJdPShrW2c+PjJdfDApKzgrKCgoa1trW2c+PjJdPj4yXXwwKS0xfDApKjcyfDApO2lmKChrW2o+PjJdfDApIT0wPyhrW2tbaj4+Ml0+PjJdfDApPT0wOjApa1tqPj4yXT0wO2lmKGtbaj4+Ml18MCl7a1ttPj4yXT1rW2o+PjJdO2tbaj4+Ml09a1toPj4yXTtrW2g+PjJdPWtbbT4+Ml19bT1ieChrW2Y+PjJdfDAsa1toPj4yXXwwKXwwO2tbKGtbbD4+Ml18MCkrOD4+Ml09bTttPWJ4KGtbZj4+Ml18MCxrW2o+PjJdfDApfDA7a1soa1tsPj4yXXwwKSs0Pj4yXT1tO2tbZT4+Ml09a1tnPj4yXTttPWtbZT4+Ml18MDtyPW47cmV0dXJuIG18MH1mdW5jdGlvbiBqdyhhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGk9MCxqPTAsbT0wLG49MCxvPTAscD0wLHE9MCxzPTAsdD0wLHU9MDt1PXI7cj1yKzgwfDA7cT11KzE2fDA7cD11O2U9dSs2NHwwO2Y9dSs2MHwwO2c9dSs1NnwwO2g9dSs1MnwwO249dSs0OHwwO2k9dSszNnwwO289dSszMnwwO2o9dSsyOHwwO209dSsyNHwwO3M9dSsyMHwwO2tbZT4+Ml09YTtrW2Y+PjJdPWI7a1tnPj4yXT1jO2tbaD4+Ml09ZDtrW24+PjJdPTA7a1tpPj4yXT1rW2Y+PjJdO2tbaSs0Pj4yXT1rW2c+PjJdO2tbaSs4Pj4yXT1rW2g+PjJdO2tbaj4+Ml09MDt3aGlsZSgxKXtpZigoa1tqPj4yXXwwKT49MylicmVhaztpZighKGtbaSsoa1tqPj4yXTw8Mik+PjJdfDApKWJyZWFrO2tbbz4+Ml09a1tpKyhrW2o+PjJdPDwyKT4+Ml07a1ttPj4yXT0wO3doaWxlKDEpe2lmKChrW20+PjJdfDApPj03KWJyZWFrO2lmKChrWyhrW28+PjJdfDApKzQ+PjJdfDApPT0obFszNTM3NCsoKGtbbT4+Ml18MCkqM3wwKSsxPj4wXXwwfDApPyhKZChrW2tbbz4+Ml0+PjJdfDAsMzUzOTUrKGxbMzUzNzQrKChrW20+PjJdfDApKjN8MCk+PjBdfDApfDAsa1soa1tvPj4yXXwwKSs0Pj4yXXwwKXwwKT09MDowKXt0PTg7YnJlYWt9a1ttPj4yXT0oa1ttPj4yXXwwKSsxfWlmKCh0fDApPT04KXt0PTA7a1tuPj4yXT1rW24+PjJdfChsWzM1Mzc0Kygoa1ttPj4yXXwwKSozfDApKzI+PjBdfDApfWlmKChrW20+PjJdfDApPj03KXt0PTExO2JyZWFrfWtbaj4+Ml09KGtbaj4+Ml18MCkrMX1pZigodHwwKT09MTEpa1tuPj4yXT1rW24+PjJdfDY0O2lmKChrW24+PjJdJjMzfDApIT0zMz8oa1tuPj4yXSY2NHwwKT09MDowKXtpZighKGtbbj4+Ml0mMzIpKXt0PWtbbj4+Ml18MDtyPXU7cmV0dXJuIHR8MH1pZigoa1tuPj4yXSYyNHwwKT09OCl7dD1rW24+PjJdfDA7cj11O3JldHVybiB0fDB9T2goa1tlPj4yXXwwLDM1NDc1LHEpO2tbbj4+Ml09MTt0PWtbbj4+Ml18MDtyPXU7cmV0dXJuIHR8MH1rW3M+PjJdPTM1NDI5O2lmKCEoa1toPj4yXXwwKSlrW3M+PjJdPShrW3M+PjJdfDApKzE7dD1rW2U+PjJdfDA7YT1rW2c+PjJdfDA7cT1rW3M+PjJdfDA7cz1rW2g+PjJdfDA7a1twPj4yXT1rW2Y+PjJdO2tbcCs0Pj4yXT1hO2tbcCs4Pj4yXT1xO2tbcCsxMj4+Ml09cztPaCh0LDM1NDMxLHApO2tbbj4+Ml09MTt0PWtbbj4+Ml18MDtyPXU7cmV0dXJuIHR8MH1mdW5jdGlvbiBrdyhhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MDtlPXI7cj1yKzE2fDA7Yz1lKzR8MDtkPWU7a1tjPj4yXT1hO2tbZD4+Ml09YjtpZigoa1tjPj4yXXwwKT09MHwoa1tkPj4yXXwwKTwwKXtyPWU7cmV0dXJufWlbKGtbKGtbYz4+Ml18MCkrND4+Ml18MCkrKCgoa1trW2M+PjJdPj4yXXwwKS0xfDApKjIwfDApKzEyPj4wXT1rW2Q+PjJdO3I9ZTtyZXR1cm59ZnVuY3Rpb24gbHcoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTA7Zz1yO3I9cisxNnwwO2Q9Zys0fDA7ZT1nO2Y9Zys4fDA7a1tkPj4yXT1hO2tbZT4+Ml09YjtpW2Y+PjBdPWM7aWYoIShrW2U+PjJdfDApKXtyPWc7cmV0dXJufWtbKGtbZT4+Ml18MCkrND4+Ml09a1soa1tkPj4yXXwwKSs0NzI+PjJdO2tbKGtbZD4+Ml18MCkrNDcyPj4yXT1rW2U+PjJdO2lmKCEoaVtmPj4wXXwwKSl7cj1nO3JldHVybn1rWyhrW2Q+PjJdfDApKzQ3Nj4+Ml09a1tlPj4yXTtyPWc7cmV0dXJufWZ1bmN0aW9uIG13KGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxuPTAsbz0wLHA9MCxxPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTAsRT0wLEY9MCxHPTAsSD0wLEk9MCxKPTAsSz0wLEw9MCxNPTAsTj0wLE89MCxQPTAsUT0wLFI9MCxTPTAsVD0wLFU9MCxWPTAsVz0wLFg9MDtYPXI7cj1yKzE5MnwwO0c9WCsxNzZ8MDtIPVgrMTcyfDA7ST1YKzE2OHwwO1c9WCsxNjR8MDtVPVgrMTYwfDA7TT1YKzE1NnwwO0Y9WCsxNTJ8MDtTPVgrMTQ4fDA7aD1YKzE0NHwwO049WCsxNDB8MDtQPVgrMTM2fDA7bj1YKzEzMnwwO0w9WCsxMjh8MDtWPVgrMTIwfDA7cT1YKzg4fDA7Zj1YKzg0fDA7Uj1YKzgwfDA7cD1YKzc2fDA7eT1YKzcyfDA7dj1YKzY0fDA7Sj1YKzYwfDA7VD1YKzU2fDA7Zz1YKzUyfDA7bz1YKzE4NHwwO0E9WCs0OHwwO0M9WCsxODJ8MDtPPVgrNDR8MDtCPVgrNDB8MDt1PVgrMzZ8MDtLPVgrMzJ8MDtkPVgrMjh8MDt3PVgrMjR8MDtRPVgrMjB8MDtEPVgrMTZ8MDtzPVgrMTgwfDA7ZT1YKzEyfDA7RT1YKzh8MDt4PVgrNHwwO3o9WDtrW0c+PjJdPWE7a1tIPj4yXT1iO2tbST4+Ml09YztrW04+PjJdPTA7a1tQPj4yXT0wO2tbUj4+Ml09LTE7a1tKPj4yXT0wO2tbZz4+Ml09MDtqW28+PjFdPTE7a1tPPj4yXT0wO2tbQj4+Ml09MDtrW3U+PjJdPTA7a1tLPj4yXT0wO2tbZD4+Ml09MDtrW1Y+PjJdPTA7a1tWKzQ+PjJdPTA7a1tMPj4yXT1rW2tbRz4+Ml0+PjJdO2E6ZG8gaWYoKChrWyhrW0c+PjJdfDApKzM2Pj4yXXwwKT09MD8obFsoa1tMPj4yXXwwKSs2OT4+MF18MCk9PTA6MCk/KGM9bEMoa1tHPj4yXXwwLGtbSD4+Ml18MCl8MCxrW1U+PjJdPWMsKGtbVT4+Ml18MCkhPTApOjApe2M9YkQoa1tHPj4yXXwwLGtbVT4+Ml18MCwxMDksMCwwKXwwO2tbRD4+Ml09YztrW1E+PjJdPShrWyhrW1U+PjJdfDApKzEyPj4yXXwwKSE9MCYxO2lmKGtbRD4+Ml18MClhPTE7ZWxzZSBhPSh2RihrW0c+PjJdfDAsa1tVPj4yXXwwLDAsMCl8MCkhPTA7a1t3Pj4yXT1hJjE7aWYoKChieShrW0c+PjJdfDAsa1tVPj4yXXwwKXwwKT09MD8oY0Qoa1tHPj4yXXwwLGtbVT4+Ml18MCwoa1tEPj4yXXwwKSE9MD8xOjApfDApPT0wOjApPyhjPVBoKGtbTD4+Ml18MCxrWyhrW1U+PjJdfDApKzY0Pj4yXXwwKXwwLGtbZj4+Ml09YyxjPWt4KGtbRz4+Ml18MCw5LGtba1tVPj4yXT4+Ml18MCwwLGtbKGtbKGtbTD4+Ml18MCkrMTY+PjJdfDApKyhrW2Y+PjJdPDw0KT4+Ml18MCl8MCxrW3A+PjJdPWMsKGtbcD4+Ml18MCkhPTEpOjApe2I9KGtbRz4+Ml18MCkrNDB8MDtjPWtbYj4+Ml18MDtrW2I+PjJdPWMrMTtrWyhrW0g+PjJdfDApKzgrNDQ+PjJdPWM7a1toPj4yXT1jO2tbbj4+Ml09MDtrW1M+PjJdPWtbKGtbVT4+Ml18MCkrOD4+Ml07d2hpbGUoMSl7aWYoIShrW1M+PjJdfDApKWJyZWFrO2M9KGtbRz4+Ml18MCkrNDB8MDtrW2M+PjJdPShrW2M+PjJdfDApKzE7a1tTPj4yXT1rWyhrW1M+PjJdfDApKzIwPj4yXTtrW24+PjJdPShrW24+PjJdfDApKzF9aWYoa1tRPj4yXXwwKUlHKGtbRz4+Ml18MCxWLGtba1tVPj4yXT4+Ml18MCk7Yz1ueChrW0c+PjJdfDApfDA7a1tXPj4yXT1jO2lmKGtbVz4+Ml18MCl7aWYoIShsWyhrW0c+PjJdfDApKzE4Pj4wXXwwKSlkRChrW1c+PjJdfDApO0J4KGtbRz4+Ml18MCwxLGtbZj4+Ml18MCk7aWYoa1tRPj4yXXwwKXtKRyhrW0c+PjJdfDAsa1tVPj4yXXwwLGtbST4+Ml18MCxrW2g+PjJdfDApO2M9a1toPj4yXXwwO2tbUD4+Ml09YztrW04+PjJdPWN9O2tbcT4+Ml09MDtrW3ErND4+Ml09MDtrW3ErOD4+Ml09MDtrW3ErMTI+PjJdPTA7a1txKzE2Pj4yXT0wO2tbcSsyMD4+Ml09MDtrW3ErMjQ+PjJdPTA7a1txKzI4Pj4yXT0wO2tbcT4+Ml09a1tHPj4yXTtrW3ErND4+Ml09a1tIPj4yXTtpZighKEt5KHEsa1tJPj4yXXwwKXwwKSl7aWYoa1soa1tMPj4yXXwwKSsyND4+Ml0mMTI4KXtiPShrW0c+PjJdfDApKzQ0fDA7Yz0oa1tiPj4yXXwwKSsxfDA7a1tiPj4yXT1jO2tbUj4+Ml09YztzeChrW1c+PjJdfDAsNzYsMCxrW1I+PjJdfDApfDB9YjpkbyBpZighKChrW3A+PjJdfDApPT0wJihrW0k+PjJdfDApPT0wXjF8KGtbdz4+Ml18MCkhPTApPyhsWyhrW1U+PjJdfDApKzQyPj4wXSYxNnwwKT09MDowKXtiQShrW0c+PjJdfDAsa1tmPj4yXXwwLGtbKGtbVT4+Ml18MCkrMjg+PjJdfDAsMSxrW2tbVT4+Ml0+PjJdfDApO2lmKCEobFsoa1tVPj4yXXwwKSs0Mj4+MF0mMzIpKXd4KGtbVz4+Ml18MCwxMzEsa1soa1tVPj4yXXwwKSsyOD4+Ml18MCxrW2Y+PjJdfDAsa1tSPj4yXXwwLGtba1tVPj4yXT4+Ml18MCwtMil8MDtrW1M+PjJdPWtbKGtbVT4+Ml18MCkrOD4+Ml07d2hpbGUoMSl7aWYoIShrW1M+PjJdfDApKWJyZWFrIGI7c3goa1tXPj4yXXwwLDEzMSxrWyhrW1M+PjJdfDApKzQ0Pj4yXXwwLGtbZj4+Ml18MCl8MDtrW1M+PjJdPWtbKGtbUz4+Ml18MCkrMjA+PjJdfX1lbHNlIHQ9Mjk7d2hpbGUoMCk7YzpkbyBpZigodHwwKT09Mjkpe2pbcz4+MV09MTA0NDtpZihtW3ErMjg+PjFdJjY0KWtbdz4+Ml09MTtqW3M+PjFdPW1bcz4+MV18KChrW3c+PjJdfDApIT0wPzA6OCk7aWYoIShsWyhrW1U+PjJdfDApKzQyPj4wXSYzMikpe2tbVD4+Ml09MDtqW28+PjFdPTE7cT0oa1tHPj4yXXwwKSs0NHwwO3Q9KGtbcT4+Ml18MCkrMXwwO2tbcT4+Ml09dDtrW0I+PjJdPXQ7c3goa1tXPj4yXXwwLDc5LDAsa1tCPj4yXXwwKXwwfWVsc2V7cT1UaihrW1U+PjJdfDApfDA7a1tUPj4yXT1xO2pbbz4+MV09alsoa1tUPj4yXXwwKSs1MD4+MV18MDtrW2c+PjJdPShrWyhrW0c+PjJdfDApKzQ0Pj4yXXwwKSsxO3E9KGtbRz4+Ml18MCkrNDR8MDtrW3E+PjJdPShrW3E+PjJdfDApKyhqW28+PjFdfDApO3E9KGtbRz4+Ml18MCkrNDB8MDt0PWtbcT4+Ml18MDtrW3E+PjJdPXQrMTtrW08+PjJdPXQ7dD1zeChrW1c+PjJdfDAsMTA3LGtbTz4+Ml18MCxqW28+PjFdfDApfDA7a1tkPj4yXT10O2RBKGtbRz4+Ml18MCxrW1Q+PjJdfDApfXQ9QUQoa1tHPj4yXXwwLGtbSD4+Ml18MCxrW0k+PjJdfDAsMCwwLGpbcz4+MV18MCwoa1toPj4yXXwwKSsxfDApfDA7a1tGPj4yXT10O2lmKCEoa1tGPj4yXXwwKSlicmVhayBhO3Q9TEcoa1tGPj4yXXwwLHYpfDA7a1t5Pj4yXT10O2lmKGtbKGtbTD4+Ml18MCkrMjQ+PjJdJjEyOClzeChrW1c+PjJdfDAsOTEsa1tSPj4yXXwwLDEpfDA7ZG8gaWYoa1tUPj4yXXwwKXtrW00+PjJdPTA7d2hpbGUoMSl7aWYoKGtbTT4+Ml18MCk+PShqW28+PjFdfDApKWJyZWFrO1hBKGtbVz4+Ml18MCxrW1U+PjJdfDAsa1toPj4yXXwwLGpbKGtbKGtbVD4+Ml18MCkrND4+Ml18MCkrKGtbTT4+Ml08PDEpPj4xXXwwLChrW2c+PjJdfDApKyhrW00+PjJdfDApfDApO2tbTT4+Ml09KGtbTT4+Ml18MCkrMX1rW0E+PjJdPWtbZz4+Ml19ZWxzZXtrW0E+PjJdPShrWyhrW0c+PjJdfDApKzQ0Pj4yXXwwKSsxO3Q9YkIoa1tHPj4yXXwwLGtbVT4+Ml18MCwtMSxrW2g+PjJdfDAsa1tBPj4yXXwwLDApfDA7a1tBPj4yXT10O2lmKChrW0E+PjJdfDApPD0oa1soa1tHPj4yXXwwKSs0ND4+Ml18MCkpYnJlYWs7a1soa1tHPj4yXXwwKSs0ND4+Ml09a1tBPj4yXX13aGlsZSgwKTtkbyBpZighKGtbeT4+Ml18MCkpaWYoa1tUPj4yXXwwKXtwPShrW0c+PjJdfDApKzQ0fDA7bj0oa1twPj4yXXwwKSsxfDA7a1twPj4yXT1uO2tbQT4+Ml09bjtqW0M+PjFdPTA7bj1rW1c+PjJdfDA7cD1rW2c+PjJdfDA7cT1qW28+PjFdfDA7cz1rW0E+PjJdfDA7dD1NQyhrW2tbRz4+Ml0+PjJdfDAsa1tUPj4yXXwwKXwwO3d4KG4sOTkscCxxLHMsdCxqW28+PjFdfDApfDA7c3goa1tXPj4yXXwwLDEyNixrW08+PjJdfDAsa1tBPj4yXXwwKXwwO2JyZWFrfWVsc2V7altDPj4xXT0xO3N4KGtbVz4+Ml18MCwxNDIsa1tCPj4yXXwwLGtbQT4+Ml18MCl8MDticmVha31lbHNle2pbQz4+MV09altvPj4xXXwwO3Q9KGtbbj4+Ml18MCkrMnwwO3Q9ZHgoa1tMPj4yXXwwLHQsKCh0fDApPDApPDwzMT4+MzEpfDA7a1tKPj4yXT10O2lmKCEoa1tKPj4yXXwwKSl7QkQoa1tGPj4yXXwwKTticmVhayBhfWRTKGtbSj4+Ml18MCwxLChrW24+PjJdfDApKzF8MCl8MDtpWyhrW0o+PjJdfDApKygoa1tuPj4yXXwwKSsxKT4+MF09MDtpZigoa1t2Pj4yXXwwKT49MClpWyhrW0o+PjJdfDApKygoa1t2Pj4yXXwwKS0oa1toPj4yXXwwKSk+PjBdPTA7aWYoKGtbdis0Pj4yXXwwKT49MClpWyhrW0o+PjJdfDApKygoa1t2KzQ+PjJdfDApLShrW2g+PjJdfDApKT4+MF09MDtpZighKGtbZD4+Ml18MCkpYnJlYWs7UkEoa1tXPj4yXXwwLGtbZD4+Ml18MCl8MH13aGlsZSgwKTtpZihrW3k+PjJdfDApe3Q9ZUEoa1tXPj4yXXwwKXwwO2tbdT4+Ml09dH1lbHNlIEJEKGtbRj4+Ml18MCk7ZG8gaWYoIShrW1E+PjJdfDApKXtrW2U+PjJdPTA7aWYoKGtbeT4+Ml18MCk9PTIpe3Q9cHgoa1tXPj4yXXwwLDIwKXwwO2tbZT4+Ml09dH1QQyhrW0c+PjJdfDAsa1tVPj4yXXwwLDEwNSw4LGtbaD4+Ml18MCxrW0o+PjJdfDAsTixQKXwwO2lmKChrW3k+PjJdfDApIT0yKWJyZWFrO2hBKGtbVz4+Ml18MCxrW2U+PjJdfDApfXdoaWxlKDApO2RvIGlmKCEoa1t5Pj4yXXwwKSl7YT1rW1c+PjJdfDA7aWYoa1tUPj4yXXwwKXtCPWFBKGEsNTcsa1tPPj4yXXwwKXwwO2tbSz4+Ml09QjtzeChrW1c+PjJdfDAsMTIxLGtbTz4+Ml18MCxrW0E+PjJdfDApfDA7YnJlYWt9ZWxzZXtCPXR4KGEsNjIsa1tCPj4yXXwwLDAsa1tBPj4yXXwwKXwwO2tbSz4+Ml09QjticmVha319ZWxzZXtpZihsWyhrW1U+PjJdfDApKzQyPj4wXSYxNilicmVhaztpZighKGxbKGtbSj4+Ml18MCkrKChrW04+PjJdfDApLShrW2g+PjJdfDApKT4+MF18MCkpYnJlYWs7U2goa1tXPj4yXXwwLDMwLGtbTj4+Ml18MCxrW3U+PjJdfDAsa1tBPj4yXXwwLGpbQz4+MV18MCl8MH13aGlsZSgwKTtkbyBpZihsWyhrW1U+PjJdfDApKzQyPj4wXSYxNil7RD1jeShrW0w+PjJdfDAsa1tVPj4yXXwwKXwwO2tbRT4+Ml09RDtuRChrW0c+PjJdfDAsa1tVPj4yXXwwKTt3eChrW1c+PjJdfDAsMTIsMCwxLGtbQT4+Ml18MCxrW0U+PjJdfDAsLTEwKXwwO1RoKGtbVz4+Ml18MCwyKTtkeShrW0c+PjJdfDApO2lmKChrW3k+PjJdfDApIT0xKWJyZWFrO2lmKGtbKGtbRz4+Ml18MCkrMTI0Pj4yXXwwKWJyZWFrO2lbKGtbRz4+Ml18MCkrMjA+PjBdPTB9ZWxzZXtrW3g+PjJdPShsWyhrW0c+PjJdfDApKzE4Pj4wXXwwKT09MCYxO2tbej4+Ml09LTE7ZG8gaWYoIShrW3c+PjJdfDApKXtpZigoa1t2KzQ+PjJdfDApPT0oa1tOPj4yXXwwKSlicmVhaztrW3o+PjJdPWtbdis0Pj4yXX13aGlsZSgwKTt4RihrW0c+PjJdfDAsa1tVPj4yXXwwLGtbRD4+Ml18MCxrW04+PjJdfDAsa1tQPj4yXXwwLGtbQT4+Ml18MCxqW0M+PjFdfDAsa1t4Pj4yXSYyNTUsMTAsa1t5Pj4yXSYyNTUsa1t6Pj4yXXwwKX13aGlsZSgwKTtkbyBpZighKGtbeT4+Ml18MCkpe2E9a1tXPj4yXXwwO2lmKGtbVD4+Ml18MCl7c3goYSw3LGtbTz4+Ml18MCwoa1tLPj4yXXwwKSsxfDApfDA7aEEoa1tXPj4yXXwwLGtbSz4+Ml18MCk7YnJlYWt9ZWxzZXtnQShhLGtbSz4+Ml18MCl8MDtoQShrW1c+PjJdfDAsa1tLPj4yXXwwKTticmVha319ZWxzZXtpQShrW1c+PjJdfDAsa1t1Pj4yXXwwKTtCRChrW0Y+PjJdfDApfXdoaWxlKDApO2lmKGtbUT4+Ml18MClicmVhaztpZihsWyhrW1U+PjJdfDApKzQyPj4wXSYxNilicmVhaztpZighKGtbVD4+Ml18MCkpYUEoa1tXPj4yXXwwLDExMSxrW04+PjJdfDApfDA7a1tNPj4yXT0wO2tbUz4+Ml09a1soa1tVPj4yXXwwKSs4Pj4yXTt3aGlsZSgxKXtpZighKGtbUz4+Ml18MCkpYnJlYWsgYzthQShrW1c+PjJdfDAsMTExLChrW1A+PjJdfDApKyhrW00+PjJdfDApfDApfDA7a1tNPj4yXT0oa1tNPj4yXXwwKSsxO2tbUz4+Ml09a1soa1tTPj4yXXwwKSsyMD4+Ml19fXdoaWxlKDApO2lmKChsWyhrW0c+PjJdfDApKzE4Pj4wXXwwKT09MD8oa1soa1tHPj4yXXwwKSsxMjg+PjJdfDApPT0wOjApckQoa1tHPj4yXXwwKTtpZigoKGtbKGtbTD4+Ml18MCkrMjQ+PjJdJjEyOHwwKSE9MD8oaVsoa1tHPj4yXXwwKSsxOD4+MF18MCk9PTA6MCk/KGtbKGtbRz4+Ml18MCkrMTI4Pj4yXXwwKT09MDowKXtzeChrW1c+PjJdfDAsODcsa1tSPj4yXXwwLDEpfDA7d0Moa1tXPj4yXXwwLDEpO3hDKGtbVz4+Ml18MCwwLDAsMzUzNjEsMCl8MH19fX19d2hpbGUoMCk7TUcoVik7cnYoa1tMPj4yXXwwLGtbSD4+Ml18MCk7c3Yoa1tMPj4yXXwwLGtbST4+Ml18MCk7Ymcoa1tMPj4yXXwwLGtbSj4+Ml18MCk7cj1YO3JldHVybn1mdW5jdGlvbiBudyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaT0wO2k9cjtyPXIrMzJ8MDtoPWk7ZD1pKzE2fDA7ZT1pKzEyfDA7Zj1pKzh8MDtnPWkrNHwwO2tbZD4+Ml09YTtrW2U+PjJdPWI7a1tmPj4yXT1jO2tbZz4+Ml09a1soa1trW2Q+PjJdPj4yXXwwKSs5Nis4Pj4yXTtpZighKGtbZT4+Ml18MCkpe3I9aTtyZXR1cm59aWYoKGtba1tlPj4yXT4+Ml18MCk8PShrW2c+PjJdfDApKXtyPWk7cmV0dXJufWM9a1tkPj4yXXwwO2tbaD4+Ml09a1tmPj4yXTtPaChjLDM1MzM4LGgpO3I9aTtyZXR1cm59ZnVuY3Rpb24gb3coYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsbj0wLG89MCxwPTAscT0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wLEU9MCxGPTAsRz0wLEg9MCxJPTAsSj0wLEs9MCxMPTAsTT0wLE49MCxPPTAsUD0wLFE9MCxSPTAsUz0wLFQ9MCxVPTAsVj0wLFc9MCxYPTAsWT0wLFo9MCxfPTAsJD0wLGFhPTAsYmE9MCxjYT0wLGRhPTAsZWE9MCxmYT0wLGdhPTAsaGE9MCxpYT0wLGphPTAsa2E9MCxsYT0wLG1hPTAsbmE9MCxvYT0wO29hPXI7cj1yKzI1NnwwO3A9b2E7WD1vYSsyNDR8MDtZPW9hKzI0MHwwO1o9b2ErMjM2fDA7Xz1vYSsyMzJ8MDtLPW9hKzIyOHwwO2RhPW9hKzIyNHwwO0M9b2ErMjIwfDA7a2E9b2ErMjE2fDA7YmE9b2ErMjEyfDA7eD1vYSsyMDh8MDtuYT1vYSsyMDR8MDtpYT1vYSsyMDB8MDtqYT1vYSsxOTZ8MDt2PW9hKzE5MnwwO3Q9b2ErMTg4fDA7ZWE9b2ErMTg0fDA7Z2E9b2ErMTgwfDA7Y2E9b2ErMTc2fDA7TD1vYSsxNzJ8MDthYT1vYSsxNjh8MDskPW9hKzE2NHwwO3k9b2ErMjU0fDA7Qj1vYSsyNTN8MDtPPW9hKzI1MnwwO3o9b2ErMTYwfDA7bWE9b2ErMTUyfDA7bz1vYSsxMjB8MDtmPW9hKzExMnwwO1I9b2ErMTA4fDA7UD1vYSsxMDR8MDtoYT1vYSsxMDB8MDtXPW9hKzk2fDA7SD1vYSs5MnwwO1M9b2ErODh8MDtHPW9hKzg0fDA7RD1vYSs4MHwwO2ZhPW9hKzc2fDA7UT1vYSs3MnwwO3M9b2ErNjR8MDtsYT1vYSs1NnwwO1Y9b2ErNTJ8MDtVPW9hKzQ4fDA7ST1vYSs0NHwwO0Y9b2ErNDB8MDtBPW9hKzM2fDA7VD1vYSszMnwwO2g9b2ErMjh8MDtuPW9hKzI0fDA7Zz1vYSsyNTB8MDt1PW9hKzIwfDA7dz1vYSsyNDh8MDtxPW9hKzE2fDA7RT1vYSsxMnwwO009b2ErOHwwO049b2ErNHwwO2tbWD4+Ml09YTtrW1k+PjJdPWI7a1taPj4yXT1jO2tbXz4+Ml09ZDtrW0s+PjJdPWU7a1tiYT4+Ml09MDtrW0w+PjJdPTA7a1thYT4+Ml09MDtrW3o+PjJdPTA7a1tmYT4+Ml09MDtrW1E+PjJdPTA7a1tsYT4+Ml09MDtrW1Y+PjJdPTA7a1tVPj4yXT0wO2tbST4+Ml09MDtrW0Y+PjJdPTA7a1tBPj4yXT0wO2tbVD4+Ml09MDtrW21hPj4yXT0wO2tbbWErND4+Ml09MDtrW2NhPj4yXT1rW2tbWD4+Ml0+PjJdO2lmKGtbKGtbWD4+Ml18MCkrMzY+PjJdfDApe01HKG1hKTtuYT1rW2NhPj4yXXwwO21hPWtbYWE+PjJdfDA7YmcobmEsbWEpO21hPWtbY2E+PjJdfDA7bmE9a1tZPj4yXXwwO3J2KG1hLG5hKTtuYT1rW2NhPj4yXXwwO21hPWtbWj4+Ml18MDtvdihuYSxtYSk7bWE9a1tjYT4+Ml18MDtuYT1rW18+PjJdfDA7c3YobWEsbmEpO3I9b2E7cmV0dXJufWlmKGxbKGtbY2E+PjJdfDApKzY5Pj4wXXwwKXtNRyhtYSk7bmE9a1tjYT4+Ml18MDttYT1rW2FhPj4yXXwwO2JnKG5hLG1hKTttYT1rW2NhPj4yXXwwO25hPWtbWT4+Ml18MDtydihtYSxuYSk7bmE9a1tjYT4+Ml18MDttYT1rW1o+PjJdfDA7b3YobmEsbWEpO21hPWtbY2E+PjJdfDA7bmE9a1tfPj4yXXwwO3N2KG1hLG5hKTtyPW9hO3JldHVybn1kPWxDKGtbWD4+Ml18MCxrW1k+PjJdfDApfDA7a1trYT4+Ml09ZDtpZighKGtba2E+PjJdfDApKXtNRyhtYSk7bmE9a1tjYT4+Ml18MDttYT1rW2FhPj4yXXwwO2JnKG5hLG1hKTttYT1rW2NhPj4yXXwwO25hPWtbWT4+Ml18MDtydihtYSxuYSk7bmE9a1tjYT4+Ml18MDttYT1rW1o+PjJdfDA7b3YobmEsbWEpO21hPWtbY2E+PjJdfDA7bmE9a1tfPj4yXXwwO3N2KG1hLG5hKTtyPW9hO3JldHVybn1kPVBoKGtba1tYPj4yXT4+Ml18MCxrWyhrW2thPj4yXXwwKSs2ND4+Ml18MCl8MDtrW2Y+PjJdPWQ7ZD1iRChrW1g+PjJdfDAsa1trYT4+Ml18MCwxMTAsa1taPj4yXXwwLEcpfDA7a1tTPj4yXT1kO2tbSD4+Ml09KGtbKGtba2E+PjJdfDApKzEyPj4yXXwwKSE9MCYxO2lmKGJ5KGtbWD4+Ml18MCxrW2thPj4yXXwwKXwwKXtNRyhtYSk7bmE9a1tjYT4+Ml18MDttYT1rW2FhPj4yXXwwO2JnKG5hLG1hKTttYT1rW2NhPj4yXXwwO25hPWtbWT4+Ml18MDtydihtYSxuYSk7bmE9a1tjYT4+Ml18MDttYT1rW1o+PjJdfDA7b3YobmEsbWEpO21hPWtbY2E+PjJdfDA7bmE9a1tfPj4yXXwwO3N2KG1hLG5hKTtyPW9hO3JldHVybn1pZihjRChrW1g+PjJdfDAsa1trYT4+Ml18MCxrW0c+PjJdfDApfDApe01HKG1hKTtuYT1rW2NhPj4yXXwwO21hPWtbYWE+PjJdfDA7YmcobmEsbWEpO21hPWtbY2E+PjJdfDA7bmE9a1tZPj4yXXwwO3J2KG1hLG5hKTtuYT1rW2NhPj4yXXwwO21hPWtbWj4+Ml18MDtvdihuYSxtYSk7bWE9a1tjYT4+Ml18MDtuYT1rW18+PjJdfDA7c3YobWEsbmEpO3I9b2E7cmV0dXJufWI9KGtbWD4+Ml18MCkrNDB8MDtkPWtbYj4+Ml18MDtrW2I+PjJdPWQrMTtrW2VhPj4yXT1kO2tbdD4+Ml09ZDtrWyhrW1k+PjJdfDApKzgrNDQ+PjJdPWQ7a1tnYT4+Ml09KGtbZWE+PjJdfDApKzE7aWYoIShsWyhrW2thPj4yXXwwKSs0Mj4+MF0mMzIpKWU9MDtlbHNlIGU9VGooa1trYT4+Ml18MCl8MDtrW2phPj4yXT1lO2tbdj4+Ml09MDtrW2lhPj4yXT1rWyhrW2thPj4yXXwwKSs4Pj4yXTt3aGlsZSgxKXtpZighKGtbaWE+PjJdfDApKWJyZWFrO2lmKChrW2phPj4yXXwwKSE9MD8oaVsoa1tpYT4+Ml18MCkrNTU+PjBdJjN8MCk9PTI6MCl7a1tlYT4+Ml09a1soa1tYPj4yXXwwKSs0MD4+Ml07a1soa1tZPj4yXXwwKSs4KzQ0Pj4yXT1rW2VhPj4yXX1kPShrW1g+PjJdfDApKzQwfDA7a1tkPj4yXT0oa1tkPj4yXXwwKSsxO2tbaWE+PjJdPWtbKGtbaWE+PjJdfDApKzIwPj4yXTtrW3Y+PjJdPShrW3Y+PjJdfDApKzF9ZD1keChrW2NhPj4yXXwwLCgoalsoa1trYT4+Ml18MCkrMzQ+PjFdfDApKyhrW3Y+PjJdfDApPDwyKSsoa1t2Pj4yXXwwKSsyfDAsMCl8MDtrW2FhPj4yXT1kO2lmKCEoa1thYT4+Ml18MCkpe01HKG1hKTtuYT1rW2NhPj4yXXwwO21hPWtbYWE+PjJdfDA7YmcobmEsbWEpO21hPWtbY2E+PjJdfDA7bmE9a1tZPj4yXXwwO3J2KG1hLG5hKTtuYT1rW2NhPj4yXXwwO21hPWtbWj4+Ml18MDtvdihuYSxtYSk7bWE9a1tjYT4+Ml18MDtuYT1rW18+PjJdfDA7c3YobWEsbmEpO3I9b2E7cmV0dXJufWtbTD4+Ml09KGtbYWE+PjJdfDApKyhqWyhrW2thPj4yXXwwKSszND4+MV08PDIpO2tbJD4+Ml09KGtbTD4+Ml18MCkrKGtbdj4+Ml08PDIpO2RTKGtbJD4+Ml18MCwxLChrW3Y+PjJdfDApKzF8MCl8MDtpWyhrWyQ+PjJdfDApKygoa1t2Pj4yXXwwKSsxKT4+MF09MDtrW2RhPj4yXT0wO3doaWxlKDEpe2lmKChrW2RhPj4yXXwwKT49KGpbKGtba2E+PjJdfDApKzM0Pj4xXXwwKSlicmVhaztrWyhrW2FhPj4yXXwwKSsoa1tkYT4+Ml08PDIpPj4yXT0tMTtrW2RhPj4yXT0oa1tkYT4+Ml18MCkrMX1rW28+PjJdPTA7a1tvKzQ+PjJdPTA7a1tvKzg+PjJdPTA7a1tvKzEyPj4yXT0wO2tbbysxNj4+Ml09MDtrW28rMjA+PjJdPTA7a1tvKzI0Pj4yXT0wO2tbbysyOD4+Ml09MDtrW28+PjJdPWtbWD4+Ml07a1tvKzQ+PjJdPWtbWT4+Ml07aVt5Pj4wXT0wO2lbQj4+MF09MDtrW2RhPj4yXT0wO3doaWxlKDEpe2lmKChrW2RhPj4yXXwwKT49KGtba1taPj4yXT4+Ml18MCkpe0o9NDE7YnJlYWt9aWYoS3kobyxrWyhrWyhrW1o+PjJdfDApKzQ+PjJdfDApKygoa1tkYT4+Ml18MCkqMjB8MCk+PjJdfDApfDApe0o9MTg1O2JyZWFrfWtbQz4+Ml09MDt3aGlsZSgxKXtpZigoa1tDPj4yXXwwKT49KGpbKGtba2E+PjJdfDApKzM0Pj4xXXwwKSlicmVhaztkPShzZyhrWyhrWyhrW2thPj4yXXwwKSs0Pj4yXXwwKSsoa1tDPj4yXTw8NCk+PjJdfDAsa1soa1soa1taPj4yXXwwKSs0Pj4yXXwwKSsoKGtbZGE+PjJdfDApKjIwfDApKzQ+PjJdfDApfDApPT0wO2U9a1tDPj4yXXwwO2lmKGQpe0o9MjM7YnJlYWt9a1tDPj4yXT1lKzF9aWYoKEp8MCk9PTIzKXtKPTA7aWYoKGV8MCkhPShqWyhrW2thPj4yXXwwKSszMj4+MV18MCkpe2lmKChrW2phPj4yXXwwKSE9MD8obFsoa1soa1trYT4+Ml18MCkrND4+Ml18MCkrKGtbQz4+Ml08PDQpKzE1Pj4wXSYxfDApIT0wOjApaVt5Pj4wXT0xfWVsc2V7aVtCPj4wXT0xO2tbej4+Ml09a1soa1soa1taPj4yXXwwKSs0Pj4yXXwwKSsoKGtbZGE+PjJdfDApKjIwfDApPj4yXX1rWyhrW2FhPj4yXXwwKSsoa1tDPj4yXTw8Mik+PjJdPWtbZGE+PjJdfWlmKChrW0M+PjJdfDApPj0oalsoa1trYT4+Ml18MCkrMzQ+PjFdfDApKXtpZihrW2phPj4yXXwwKXtKPTM0O2JyZWFrfWlmKCEoRWkoa1soa1soa1taPj4yXXwwKSs0Pj4yXXwwKSsoKGtbZGE+PjJdfDApKjIwfDApKzQ+PjJdfDApfDApKXtKPTM0O2JyZWFrfWtbQz4+Ml09LTE7aVtCPj4wXT0xO2tbej4+Ml09a1soa1soa1taPj4yXXwwKSs0Pj4yXXwwKSsoKGtbZGE+PjJdfDApKjIwfDApPj4yXX1pZigoa1tDPj4yXXwwKTwwKWU9MTk4OTU7ZWxzZSBlPWtbKGtbKGtba2E+PjJdfDApKzQ+PjJdfDApKyhrW0M+PjJdPDw0KT4+Ml18MDtkPWt4KGtbWD4+Ml18MCwyMyxrW2tba2E+PjJdPj4yXXwwLGUsa1soa1soa1tjYT4+Ml18MCkrMTY+PjJdfDApKyhrW2Y+PjJdPDw0KT4+Ml18MCl8MDtrW2g+PjJdPWQ7aWYoKGtbaD4+Ml18MCk9PTEpe0o9MTg1O2JyZWFrfWlmKChrW2g+PjJdfDApPT0yKWtbKGtbYWE+PjJdfDApKyhrW0M+PjJdPDwyKT4+Ml09LTE7a1tkYT4+Ml09KGtbZGE+PjJdfDApKzF9aWYoKEp8MCk9PTM0KXtuYT1rW1g+PjJdfDA7a1twPj4yXT1rWyhrWyhrW1o+PjJdfDApKzQ+PjJdfDApKygoa1tkYT4+Ml18MCkqMjB8MCkrND4+Ml07T2gobmEsMjQxNDQscCk7aVsoa1tYPj4yXXwwKSsxNz4+MF09MTtNRyhtYSk7bmE9a1tjYT4+Ml18MDttYT1rW2FhPj4yXXwwO2JnKG5hLG1hKTttYT1rW2NhPj4yXXwwO25hPWtbWT4+Ml18MDtydihtYSxuYSk7bmE9a1tjYT4+Ml18MDttYT1rW1o+PjJdfDA7b3YobmEsbWEpO21hPWtbY2E+PjJdfDA7bmE9a1tfPj4yXXwwO3N2KG1hLG5hKTtyPW9hO3JldHVybn1lbHNlIGlmKChKfDApPT00MSl7aVtPPj4wXT0obFtCPj4wXXwwKSsobFt5Pj4wXXwwKTtoPShsWyhrW2thPj4yXXwwKSs0Mj4+MF0mMTZ8MCkhPTA7cD0oa1tZPj4yXXwwKSs4KzU2fDA7a1twPj4yXT1oPy0xOjA7a1twKzQ+PjJdPWg/LTE6MDtwPXZGKGtbWD4+Ml18MCxrW2thPj4yXXwwLGtbYWE+PjJdfDAsbFtPPj4wXXwwKXwwO2tbUD4+Ml09cDtrW0M+PjJdPTA7a1tpYT4+Ml09a1soa1trYT4+Ml18MCkrOD4+Ml07d2hpbGUoMSl7aWYoIShrW2lhPj4yXXwwKSlicmVhazthOmRvIGlmKCghKChsW08+PjBdfDApIT0wfChrW1A+PjJdfDApIT0wKT8oa1soa1tpYT4+Ml18MCkrMzY+PjJdfDApPT0wOjApPyhrW2lhPj4yXXwwKSE9KGtbamE+PjJdfDApOjApe2tbbj4+Ml09MDtrW2RhPj4yXT0wO3doaWxlKDEpe2lmKChrW2RhPj4yXXwwKT49KG1bKGtbaWE+PjJdfDApKzUwPj4xXXwwKSlicmVhayBhO2pbZz4+MV09alsoa1soa1tpYT4+Ml18MCkrND4+Ml18MCkrKGtbZGE+PjJdPDwxKT4+MV18MDtpZigoaltnPj4xXXwwKTwwKWJyZWFrO2lmKChrWyhrW2FhPj4yXXwwKSsoaltnPj4xXTw8Mik+PjJdfDApPj0wKWJyZWFrO2tbZGE+PjJdPShrW2RhPj4yXXwwKSsxfWg9KGtbWD4+Ml18MCkrNDR8MDtwPShrW2g+PjJdfDApKzF8MDtrW2g+PjJdPXA7a1tuPj4yXT1wfWVsc2UgSj00Njt3aGlsZSgwKTtpZigoSnwwKT09NDYpe0o9MDtoPShrW1g+PjJdfDApKzQ0fDA7cD0oa1toPj4yXXwwKSsxfDA7a1toPj4yXT1wO2tbbj4+Ml09cH1pZighKGtbbj4+Ml18MCkpaVsoa1skPj4yXXwwKSsoKGtbQz4+Ml18MCkrMSk+PjBdPTA7a1soa1tMPj4yXXwwKSsoa1tDPj4yXTw8Mik+PjJdPWtbbj4+Ml07a1tpYT4+Ml09a1soa1tpYT4+Ml18MCkrMjA+PjJdO2tbQz4+Ml09KGtbQz4+Ml18MCkrMX1wPW54KGtbWD4+Ml18MCl8MDtrW25hPj4yXT1wO2lmKCEoa1tuYT4+Ml18MCkpe01HKG1hKTtuYT1rW2NhPj4yXXwwO21hPWtbYWE+PjJdfDA7YmcobmEsbWEpO21hPWtbY2E+PjJdfDA7bmE9a1tZPj4yXXwwO3J2KG1hLG5hKTtuYT1rW2NhPj4yXXwwO21hPWtbWj4+Ml18MDtvdihuYSxtYSk7bWE9a1tjYT4+Ml18MDtuYT1rW18+PjJdfDA7c3YobWEsbmEpO3I9b2E7cmV0dXJufWlmKCEobFsoa1tYPj4yXXwwKSsxOD4+MF18MCkpZEQoa1tuYT4+Ml18MCk7Qngoa1tYPj4yXXwwLDEsa1tmPj4yXXwwKTtpZighKGxbKGtba2E+PjJdfDApKzQyPj4wXSYxNikpe3A9KGtbWD4+Ml18MCkrNDR8MDtuPShrW3A+PjJdfDApKzF8MDtrW3A+PjJdPW47a1tBPj4yXT1uO249KGtbWD4+Ml18MCkrNDR8MDtwPShrW24+PjJdfDApKzF8MDtrW24+PjJdPXA7a1tVPj4yXT1wO2tbVj4+Ml09cDtpZigobFt5Pj4wXXwwKSE9MHwoa1tTPj4yXXwwKSE9MHwoa1tQPj4yXXwwKSE9MCl7a1tGPj4yXT0oa1soa1tYPj4yXXwwKSs0ND4+Ml18MCkrMTtwPShrW1g+PjJdfDApKzQ0fDA7a1twPj4yXT0oa1twPj4yXXwwKSsoalsoa1trYT4+Ml18MCkrMzQ+PjFdfDApfWlmKChsW08+PjBdfDApIT0wfChrW1M+PjJdfDApIT0wfChrW1A+PjJdfDApIT0wKXtuPShrW1g+PjJdfDApKzQ0fDA7cD0oa1tuPj4yXXwwKSsxfDA7a1tuPj4yXT1wO2tbVT4+Ml09cH1rW0k+PjJdPShrWyhrW1g+PjJdfDApKzQ0Pj4yXXwwKSsxO3A9KGtbWD4+Ml18MCkrNDR8MDtrW3A+PjJdPShrW3A+PjJdfDApKyhqWyhrW2thPj4yXXwwKSszND4+MV18MCl9aWYoa1tIPj4yXXwwKUlHKGtbWD4+Ml18MCxtYSxrW2tba2E+PjJdPj4yXXwwKTtpZihrW0g+PjJdfDApSkcoa1tYPj4yXXwwLGtba2E+PjJdfDAsa1tfPj4yXXwwLGtbZWE+PjJdfDApO2lmKEt5KG8sa1tfPj4yXXwwKXwwKXtNRyhtYSk7bmE9a1tjYT4+Ml18MDttYT1rW2FhPj4yXXwwO2JnKG5hLG1hKTttYT1rW2NhPj4yXXwwO25hPWtbWT4+Ml18MDtydihtYSxuYSk7bmE9a1tjYT4+Ml18MDttYT1rW1o+PjJdfDA7b3YobmEsbWEpO21hPWtbY2E+PjJdfDA7bmE9a1tfPj4yXXwwO3N2KG1hLG5hKTtyPW9hO3JldHVybn1pZihsWyhrW2thPj4yXXwwKSs0Mj4+MF0mMTYpe0tHKGtbWD4+Ml18MCxrW1k+PjJdfDAsa1trYT4+Ml18MCxrW1o+PjJdfDAsa1t6Pj4yXXwwLGtbYWE+PjJdfDAsa1tfPj4yXXwwLGtbSz4+Ml18MCk7TUcobWEpO25hPWtbY2E+PjJdfDA7bWE9a1thYT4+Ml18MDtiZyhuYSxtYSk7bWE9a1tjYT4+Ml18MDtuYT1rW1k+PjJdfDA7cnYobWEsbmEpO25hPWtbY2E+PjJdfDA7bWE9a1taPj4yXXwwO292KG5hLG1hKTttYT1rW2NhPj4yXXwwO25hPWtbXz4+Ml18MDtzdihtYSxuYSk7cj1vYTtyZXR1cm59aWYoIShsWyhrW2thPj4yXXwwKSs0Mj4+MF0mMzIpKXt0eChrW25hPj4yXXwwLDc5LDAsa1tBPj4yXXwwLGtbVj4+Ml18MCl8MDt3PUFEKGtbWD4+Ml18MCxrW1k+PjJdfDAsa1tfPj4yXXwwLDAsMCwxMDI4LGtbZ2E+PjJdfDApfDA7a1t4Pj4yXT13O2lmKCEoa1t4Pj4yXXwwKSl7TUcobWEpO25hPWtbY2E+PjJdfDA7bWE9a1thYT4+Ml18MDtiZyhuYSxtYSk7bWE9a1tjYT4+Ml18MDtuYT1rW1k+PjJdfDA7cnYobWEsbmEpO25hPWtbY2E+PjJdfDA7bWE9a1taPj4yXXwwO292KG5hLG1hKTttYT1rW2NhPj4yXXwwO25hPWtbXz4+Ml18MDtzdihtYSxuYSk7cj1vYTtyZXR1cm59dz1MRyhrW3g+PjJdfDAscyl8MDtrW1I+PjJdPXc7c3goa1tuYT4+Ml18MCwxMjMsa1tlYT4+Ml18MCxrW1Y+PjJdfDApfDA7aWYoIShrW1I+PjJdfDApKXN4KGtbbmE+PjJdfDAsMTQyLGtbQT4+Ml18MCxrW1Y+PjJdfDApfDA7QkQoa1t4Pj4yXXwwKX1lbHNle2pbdz4+MV09alsoa1tqYT4+Ml18MCkrNTA+PjFdfDA7a1t1Pj4yXT0oa1soa1tYPj4yXXwwKSs0ND4+Ml18MCkrMTtwPShrW1g+PjJdfDApKzQ0fDA7a1twPj4yXT0oa1twPj4yXXwwKSsoalt3Pj4xXXwwKTtwPShrW1g+PjJdfDApKzQ0fDA7bz0oa1twPj4yXXwwKSsxfDA7a1twPj4yXT1vO2tbVD4+Ml09bztvPShrW1g+PjJdfDApKzQwfDA7cD1rW28+PjJdfDA7a1tvPj4yXT1wKzE7a1tmYT4+Ml09cDtzeChrW25hPj4yXXwwLDc5LDAsa1t1Pj4yXXwwKXwwO3A9c3goa1tuYT4+Ml18MCwxMDcsa1tmYT4+Ml18MCxqW3c+PjFdfDApfDA7a1txPj4yXT1wO2RBKGtbWD4+Ml18MCxrW2phPj4yXXwwKTtwPUFEKGtbWD4+Ml18MCxrW1k+PjJdfDAsa1tfPj4yXXwwLDAsMCw0LGtbZ2E+PjJdfDApfDA7a1t4Pj4yXT1wO2lmKCEoa1t4Pj4yXXwwKSl7TUcobWEpO25hPWtbY2E+PjJdfDA7bWE9a1thYT4+Ml18MDtiZyhuYSxtYSk7bWE9a1tjYT4+Ml18MDtuYT1rW1k+PjJdfDA7cnYobWEsbmEpO25hPWtbY2E+PjJdfDA7bWE9a1taPj4yXXwwO292KG5hLG1hKTttYT1rW2NhPj4yXXwwO25hPWtbXz4+Ml18MDtzdihtYSxuYSk7cj1vYTtyZXR1cm59cD1MRyhrW3g+PjJdfDAscyl8MDtrW1I+PjJdPXA7a1tkYT4+Ml09MDt3aGlsZSgxKXtpZigoa1tkYT4+Ml18MCk+PShqW3c+PjFdfDApKWJyZWFrO1hBKGtbbmE+PjJdfDAsa1trYT4+Ml18MCxrW2VhPj4yXXwwLGpbKGtbKGtbamE+PjJdfDApKzQ+PjJdfDApKyhrW2RhPj4yXTw8MSk+PjFdfDAsKGtbdT4+Ml18MCkrKGtbZGE+PjJdfDApfDApO2tbZGE+PjJdPShrW2RhPj4yXXwwKSsxfWU9a1tuYT4+Ml18MDtpZihrW1I+PjJdfDApe1JBKGUsa1txPj4yXXwwKXwwO2tbUT4+Ml09alt3Pj4xXTtrW1Q+PjJdPWtbdT4+Ml19ZWxzZXtvPWtbdT4+Ml18MDtwPWpbdz4+MV18MDtxPWtbVD4+Ml18MDt1PU1DKGtbY2E+PjJdfDAsa1tqYT4+Ml18MCl8MDt3eChlLDk5LG8scCxxLHUsalt3Pj4xXXwwKXwwO3N4KGtbbmE+PjJdfDAsMTI2LGtbZmE+PjJdfDAsa1tUPj4yXXwwKXwwfUJEKGtbeD4+Ml18MCl9aWYoKGtbKGtbY2E+PjJdfDApKzI0Pj4yXSYxMjh8MCkhPTA/KGtbKGtbWD4+Ml18MCkrMTI4Pj4yXXwwKT09MDowKXt3PShrW1g+PjJdfDApKzQ0fDA7eD0oa1t3Pj4yXXwwKSsxfDA7a1t3Pj4yXT14O2tbbGE+PjJdPXg7c3goa1tuYT4+Ml18MCw3NiwwLGtbbGE+PjJdfDApfDB9eD1lQShrW25hPj4yXXwwKXwwO2tbaGE+PjJdPXg7aWYoIShrW0g+PjJdfDApKXtiOmRvIGlmKChrW0s+PjJdfDApPT01KWRTKGtbJD4+Ml18MCwxLChrW3Y+PjJdfDApKzF8MCl8MDtlbHNle2tbaWE+PjJdPWtbKGtba2E+PjJdfDApKzg+PjJdO3doaWxlKDEpe2lmKCEoa1tpYT4+Ml18MCkpYnJlYWsgYjtpZigobFsoa1tpYT4+Ml18MCkrNTQ+PjBdfDApPT01KWJyZWFrO2tbaWE+PjJdPWtbKGtbaWE+PjJdfDApKzIwPj4yXX1kUyhrWyQ+PjJdfDAsMSwoa1t2Pj4yXXwwKSsxfDApfDB9d2hpbGUoMCk7ZG8gaWYoa1tSPj4yXXwwKXtpZigoa1tzPj4yXXwwKT49MClpWyhrWyQ+PjJdfDApKygoa1tzPj4yXXwwKS0oa1t0Pj4yXXwwKSk+PjBdPTA7aWYoKGtbcys0Pj4yXXwwKTwwKWJyZWFrO2lbKGtbJD4+Ml18MCkrKChrW3MrND4+Ml18MCktKGtbdD4+Ml18MCkpPj4wXT0wfXdoaWxlKDApO1BDKGtbWD4+Ml18MCxrW2thPj4yXXwwLDEwNSwwLGtbdD4+Ml18MCxrWyQ+PjJdfDAsMCwwKXwwfWRvIGlmKCEoa1tSPj4yXXwwKSl7ZT1rW25hPj4yXXwwO2lmKGtbamE+PjJdfDApe0E9ZUEoZSl8MDtrW1c+PjJdPUE7c3goa1tuYT4+Ml18MCw1NyxrW2ZhPj4yXXwwLGtbaGE+PjJdfDApfDA7QT1zeChrW25hPj4yXXwwLDEyMSxrW2ZhPj4yXXwwLGtbVD4+Ml18MCl8MDtrW2JhPj4yXT1BO1NoKGtbbmE+PjJdfDAsMzAsa1tlYT4+Ml18MCxrW1c+PjJdfDAsa1tUPj4yXXwwLDApfDA7YnJlYWt9ZWxzZXtBPXR4KGUsNjIsa1tBPj4yXXwwLGtbaGE+PjJdfDAsa1tWPj4yXXwwKXwwO2tbVz4+Ml09QTt0eChrW25hPj4yXXwwLDMzLGtbZWE+PjJdfDAsa1tXPj4yXXwwLGtbVj4+Ml18MCl8MDticmVha319ZWxzZXtpZighKChrW0g+PjJdfDApIT0wPzE6KGxbKGtbJD4+Ml18MCkrKChrW2VhPj4yXXwwKS0oa1t0Pj4yXXwwKSk+PjBdfDApPT0wKSlTaChrW25hPj4yXXwwLDMwLGtbZWE+PjJdfDAsa1toYT4+Ml18MCxrW1Q+PjJdfDAsa1tRPj4yXXwwKXwwO2tbVz4+Ml09a1toYT4+Ml07c3goa1tuYT4+Ml18MCwzNCwoa1tqYT4+Ml18MCkhPTA/a1tUPj4yXXwwOmtbVj4+Ml18MCxrW2hhPj4yXXwwKXwwfXdoaWxlKDApO2lmKGlbQj4+MF18MCl7JEEoa1tYPj4yXXwwLGtbej4+Ml18MCxrW1U+PjJdfDApO2FBKGtbbmE+PjJdfDAsMTcsa1tVPj4yXXwwKXwwfWRvIGlmKChsW3k+PjBdfDApIT0wfChrW1A+PjJdfDApIT0wfChrW1M+PjJdfDApIT0wKXtpZihrW1A+PjJdfDApZT1BRihrW1g+PjJdfDAsa1trYT4+Ml18MCl8MDtlbHNlIGU9MDtrW0U+PjJdPWU7QT16RihrW1g+PjJdfDAsa1tTPj4yXXwwLGtbWj4+Ml18MCwwLDMsa1trYT4+Ml18MCxrW0s+PjJdfDApfDA7a1tFPj4yXT1rW0U+PjJdfEE7a1tkYT4+Ml09MDt3aGlsZSgxKXtpZigoa1tkYT4+Ml18MCk+PShqWyhrW2thPj4yXXwwKSszND4+MV18MCkpYnJlYWs7ZG8gaWYoKGtbRT4+Ml18MCk9PS0xKUo9MTIwO2Vsc2V7aWYoKGtbZGE+PjJdfDApPDMyPyhrW0U+PjJdJjE8PGtbZGE+PjJdfDApIT0wOjApe0o9MTIwO2JyZWFrfWlmKGxbKGtbKGtba2E+PjJdfDApKzQ+PjJdfDApKyhrW2RhPj4yXTw8NCkrMTU+PjBdJjEpe0o9MTIwO2JyZWFrfXN4KGtbbmE+PjJdfDAsNzksMCwoa1tGPj4yXXwwKSsoa1tkYT4+Ml18MCl8MCl8MH13aGlsZSgwKTtpZigoSnwwKT09MTIwKXtKPTA7WEEoa1tuYT4+Ml18MCxrW2thPj4yXXwwLGtbZWE+PjJdfDAsa1tkYT4+Ml18MCwoa1tGPj4yXXwwKSsoa1tkYT4+Ml18MCl8MCl9a1tkYT4+Ml09KGtbZGE+PjJdfDApKzF9aWYoISgobFtCPj4wXXwwKT09MCYoa1tqYT4+Ml18MCk9PTApKWJyZWFrO3N4KGtbbmE+PjJdfDAsODQsa1tWPj4yXXwwLGtbVT4+Ml18MCl8MH13aGlsZSgwKTtGPXpGKGtbWD4+Ml18MCxrW1M+PjJdfDAsa1taPj4yXXwwLDEsMSxrW2thPj4yXXwwLGtbSz4+Ml18MCl8MDtrW0Q+PjJdPUY7a1tkYT4+Ml09MDt3aGlsZSgxKXtpZigoa1tkYT4+Ml18MCk+PShqWyhrW2thPj4yXXwwKSszND4+MV18MCkpYnJlYWs7YzpkbyBpZigoa1tkYT4+Ml18MCk9PShqWyhrW2thPj4yXXwwKSszMj4+MV18MCkpc3goa1tuYT4+Ml18MCw3OSwwLChrW0k+PjJdfDApKyhrW2RhPj4yXXwwKXwwKXwwO2Vsc2V7a1tDPj4yXT1rWyhrW2FhPj4yXXwwKSsoa1tkYT4+Ml08PDIpPj4yXTtpZigoa1tDPj4yXXwwKT49MCl7JEEoa1tYPj4yXXwwLGtbKGtbKGtbWj4+Ml18MCkrND4+Ml18MCkrKChrW0M+PjJdfDApKjIwfDApPj4yXXwwLChrW0k+PjJdfDApKyhrW2RhPj4yXXwwKXwwKTticmVha31kbyBpZighKChrW2RhPj4yXXwwKT4zMT8xOjA9PShrW0c+PjJdJjF8MCkpKXtpZihrW0Q+PjJdJjE8PGtbZGE+PjJdKWJyZWFrO3N4KGtbbmE+PjJdfDAsNzksMCwoa1tJPj4yXXwwKSsoa1tkYT4+Ml18MCl8MCl8MDticmVhayBjfXdoaWxlKDApO2ZFKGtbWD4+Ml18MCxrW2thPj4yXXwwLGtbZGE+PjJdfDAsa1tlYT4+Ml18MCwoa1tJPj4yXXwwKSsoa1tkYT4+Ml18MCl8MCl9d2hpbGUoMCk7a1tkYT4+Ml09KGtbZGE+PjJdfDApKzF9ZDpkbyBpZihrW0c+PjJdJjEpe2pEKGtbbmE+PjJdfDAsa1trYT4+Ml18MCxrW0k+PjJdfDApO2tEKGtbWD4+Ml18MCxrW1M+PjJdfDAsMTEwLGtbWj4+Ml18MCwxLGtba2E+PjJdfDAsa1tWPj4yXXwwLGtbSz4+Ml18MCxrW1c+PjJdfDApO2U9a1tuYT4+Ml18MDtjPWtbZWE+PjJdfDA7YT1rW1c+PjJdfDA7aWYoa1tqYT4+Ml18MClTaChlLDMwLGMsYSxrW1Q+PjJdfDAsa1tRPj4yXXwwKXwwO2Vsc2UgdHgoZSwzMyxjLGEsa1tWPj4yXXwwKXwwO2tbZGE+PjJdPTA7d2hpbGUoMSl7aWYoKGtbZGE+PjJdfDApPj0oalsoa1trYT4+Ml18MCkrMzQ+PjFdfDApKWJyZWFrIGQ7ZG8gaWYoKGtbKGtbYWE+PjJdfDApKyhrW2RhPj4yXTw8Mik+PjJdfDApPDApe2lmKChrW2RhPj4yXXwwKT09KGpbKGtba2E+PjJdfDApKzMyPj4xXXwwKSlicmVhaztYQShrW25hPj4yXXwwLGtba2E+PjJdfDAsa1tlYT4+Ml18MCxrW2RhPj4yXXwwLChrW0k+PjJdfDApKyhrW2RhPj4yXXwwKXwwKX13aGlsZSgwKTtrW2RhPj4yXT0oa1tkYT4+Ml18MCkrMX19d2hpbGUoMCk7ZG8gaWYoIShrW0g+PjJdfDApKXtrW00+PjJdPTA7a1tOPj4yXT0wO29EKGtbWD4+Ml18MCxrW2thPj4yXXwwLGtbTD4+Ml18MCxrW2VhPj4yXXwwLGtbZ2E+PjJdfDAsa1tVPj4yXXwwLGtbVj4+Ml18MCxpW08+PjBdfDAsa1tLPj4yXSYyNTUsa1tXPj4yXXwwLE4sa1thYT4+Ml18MCk7aWYoa1tQPj4yXXwwKXBEKGtbWD4+Ml18MCxrW2thPj4yXXwwLGtbVj4+Ml18MCwwLGtbYWE+PjJdfDAsbFtPPj4wXXwwKTtpZighKChrW04+PjJdfDApPT0wPyhsW08+PjBdfDApPT0wOjApKUo9MTUxO2RvIGlmKChKfDApPT0xNTEpe2U9a1tuYT4+Ml18MDtjPWtbZWE+PjJdfDA7aWYoa1tqYT4+Ml18MCl7VD1TaChlLDMwLGMsMCxrW1Q+PjJdfDAsa1tRPj4yXXwwKXwwO2tbTT4+Ml09VDticmVha31lbHNle1Q9dHgoZSwzMyxjLDAsa1tWPj4yXXwwKXwwO2tbTT4+Ml09VDticmVha319d2hpbGUoMCk7eUYoa1tYPj4yXXwwLGtba2E+PjJdfDAsa1tlYT4+Ml18MCxrW2dhPj4yXXwwLGtbTD4+Ml18MCwtMSk7aWYoISgoa1tQPj4yXXwwKT09MD8hKChsW08+PjBdfDApIT0wfChrW2phPj4yXXwwKSE9MCk6MCkpc3goa1tuYT4+Ml18MCwxMTcsa1tlYT4+Ml18MCwwKXwwO2lmKCEoKGtbTj4+Ml18MCk9PTA/KGxbTz4+MF18MCk9PTA6MCkpaEEoa1tuYT4+Ml18MCxrW00+PjJdfDApO2lmKGtbUD4+Ml18MClwRChrW1g+PjJdfDAsa1trYT4+Ml18MCwwLGtbVT4+Ml18MCxrW2FhPj4yXXwwLGxbTz4+MF18MCk7cUQoa1tYPj4yXXwwLGtba2E+PjJdfDAsa1tlYT4+Ml18MCxrW2dhPj4yXXwwLGtbVT4+Ml18MCxrW0w+PjJdfDAsMSwwLDApO2lmKCEoa1tQPj4yXXwwKSlicmVhaztCRihrW1g+PjJdfDAsa1trYT4+Ml18MCxrW1o+PjJdfDAsa1tWPj4yXXwwLGtbYWE+PjJdfDAsbFtPPj4wXXwwKX13aGlsZSgwKTtkbyBpZihrWyhrW2NhPj4yXXwwKSsyND4+Ml0mMTI4KXtpZihrWyhrW1g+PjJdfDApKzEyOD4+Ml18MClicmVhaztzeChrW25hPj4yXXwwLDkxLGtbbGE+PjJdfDAsMSl8MH13aGlsZSgwKTtrRChrW1g+PjJdfDAsa1tTPj4yXXwwLDExMCxrW1o+PjJdfDAsMixrW2thPj4yXXwwLGtbVj4+Ml18MCxrW0s+PjJdfDAsa1tXPj4yXXwwKTtkbyBpZighKGtbUj4+Ml18MCkpe2M9a1tuYT4+Ml18MDtlPWtbVz4+Ml18MDtpZihrW2phPj4yXXwwKXtpQShjLGUpO3N4KGtbbmE+PjJdfDAsNyxrW2ZhPj4yXXwwLGtbYmE+PjJdfDApfDA7YnJlYWt9ZWxzZXtnQShjLGUpfDA7YnJlYWt9fXdoaWxlKDApO2lBKGtbbmE+PjJdfDAsa1toYT4+Ml18MCk7a1tkYT4+Ml09MDtrW2lhPj4yXT1rWyhrW2thPj4yXXwwKSs4Pj4yXTt3aGlsZSgxKXtpZighKGtbaWE+PjJdfDApKWJyZWFrO2lmKGlbKGtbJD4+Ml18MCkrKChrW2RhPj4yXXwwKSsxKT4+MF18MClzeChrW25hPj4yXXwwLDExMSwoa1tnYT4+Ml18MCkrKGtbZGE+PjJdfDApfDAsMCl8MDtrW2lhPj4yXT1rWyhrW2lhPj4yXXwwKSsyMD4+Ml07a1tkYT4+Ml09KGtbZGE+PjJdfDApKzF9aWYoKGtbZWE+PjJdfDApPChrW2dhPj4yXXwwKSlzeChrW25hPj4yXXwwLDExMSxrW2VhPj4yXXwwLDApfDA7ZG8gaWYoIShsWyhrW1g+PjJdfDApKzE4Pj4wXXwwKSl7aWYoa1soa1tYPj4yXXwwKSsxMjg+PjJdfDApYnJlYWs7ckQoa1tYPj4yXXwwKX13aGlsZSgwKTtpZighKGtbKGtbY2E+PjJdfDApKzI0Pj4yXSYxMjgpKXtNRyhtYSk7bmE9a1tjYT4+Ml18MDttYT1rW2FhPj4yXXwwO2JnKG5hLG1hKTttYT1rW2NhPj4yXXwwO25hPWtbWT4+Ml18MDtydihtYSxuYSk7bmE9a1tjYT4+Ml18MDttYT1rW1o+PjJdfDA7b3YobmEsbWEpO21hPWtbY2E+PjJdfDA7bmE9a1tfPj4yXXwwO3N2KG1hLG5hKTtyPW9hO3JldHVybn1pZihrWyhrW1g+PjJdfDApKzEyOD4+Ml18MCl7TUcobWEpO25hPWtbY2E+PjJdfDA7bWE9a1thYT4+Ml18MDtiZyhuYSxtYSk7bWE9a1tjYT4+Ml18MDtuYT1rW1k+PjJdfDA7cnYobWEsbmEpO25hPWtbY2E+PjJdfDA7bWE9a1taPj4yXXwwO292KG5hLG1hKTttYT1rW2NhPj4yXXwwO25hPWtbXz4+Ml18MDtzdihtYSxuYSk7cj1vYTtyZXR1cm59aWYoaVsoa1tYPj4yXXwwKSsxOD4+MF18MCl7TUcobWEpO25hPWtbY2E+PjJdfDA7bWE9a1thYT4+Ml18MDtiZyhuYSxtYSk7bWE9a1tjYT4+Ml18MDtuYT1rW1k+PjJdfDA7cnYobWEsbmEpO25hPWtbY2E+PjJdfDA7bWE9a1taPj4yXXwwO292KG5hLG1hKTttYT1rW2NhPj4yXXwwO25hPWtbXz4+Ml18MDtzdihtYSxuYSk7cj1vYTtyZXR1cm59c3goa1tuYT4+Ml18MCw4NyxrW2xhPj4yXXwwLDEpfDA7d0Moa1tuYT4+Ml18MCwxKTt4QyhrW25hPj4yXXwwLDAsMCwzNTMyNSwwKXwwO01HKG1hKTtuYT1rW2NhPj4yXXwwO21hPWtbYWE+PjJdfDA7YmcobmEsbWEpO21hPWtbY2E+PjJdfDA7bmE9a1tZPj4yXXwwO3J2KG1hLG5hKTtuYT1rW2NhPj4yXXwwO21hPWtbWj4+Ml18MDtvdihuYSxtYSk7bWE9a1tjYT4+Ml18MDtuYT1rW18+PjJdfDA7c3YobWEsbmEpO3I9b2E7cmV0dXJufWVsc2UgaWYoKEp8MCk9PTE4NSl7TUcobWEpO25hPWtbY2E+PjJdfDA7bWE9a1thYT4+Ml18MDtiZyhuYSxtYSk7bWE9a1tjYT4+Ml18MDtuYT1rW1k+PjJdfDA7cnYobWEsbmEpO25hPWtbY2E+PjJdfDA7bWE9a1taPj4yXXwwO292KG5hLG1hKTttYT1rW2NhPj4yXXwwO25hPWtbXz4+Ml18MDtzdihtYSxuYSk7cj1vYTtyZXR1cm59fWZ1bmN0aW9uIHB3KGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaT0wLGo9MCxtPTAsbj0wLG89MCxwPTAscT0wO3E9cjtyPXIrNDh8MDtwPXE7ZT1xKzQwfDA7Zj1xKzM2fDA7Zz1xKzMyfDA7aD1xKzI4fDA7aT1xKzI0fDA7bj1xKzIwfDA7aj1xKzE2fDA7bT1xKzEyfDA7bz1xKzh8MDtrW2U+PjJdPWE7a1tmPj4yXT1iO2tbZz4+Ml09YztrW2g+PjJdPWQ7a1tpPj4yXT1rW2tbZT4+Ml0+PjJdO2lmKGtbZj4+Ml18MCljPWtba1tmPj4yXT4+Ml18MDtlbHNlIGM9MDtrW20+PjJdPWM7ZG8gaWYoISgoa1tnPj4yXXwwKT09MHwoa1toPj4yXXwwKT09MCkpe2E9bXooa1toPj4yXXwwKXwwO2tbbj4+Ml09YTtpZigoa1soa1tnPj4yXXwwKSs0Pj4yXXwwKSE9KGtbbj4+Ml18MCkpe289a1tlPj4yXXwwO249a1tuPj4yXXwwO2tbcD4+Ml09a1soa1tnPj4yXXwwKSs0Pj4yXTtrW3ArND4+Ml09bjtPaChvLDM1Mjk1LHApO2JyZWFrfWtbaj4+Ml09MDt3aGlsZSgxKXtpZigoa1tqPj4yXXwwKT49KGtbbj4+Ml18MCkpYnJlYWs7cD1tRihrW2U+PjJdfDAsa1toPj4yXXwwLGtbaj4+Ml18MCl8MDtrW28+PjJdPXA7cD1idyhrW2U+PjJdfDAsa1tmPj4yXXwwLGtbbz4+Ml18MCl8MDtrW2Y+PjJdPXA7aWYoa1tmPj4yXXwwKXtrWyhrWyhrW2Y+PjJdfDApKzQ+PjJdfDApKygoKGtba1tmPj4yXT4+Ml18MCktMXwwKSoyMHwwKSs0Pj4yXT1rWyhrW2tbZz4+Ml0+PjJdfDApKyhrW2o+PjJdPDwzKT4+Ml07a1soa1trW2c+PjJdPj4yXXwwKSsoa1tqPj4yXTw8Myk+PjJdPTB9a1tqPj4yXT0oa1tqPj4yXXwwKSsxfWlmKCgoa1tmPj4yXXwwKSE9MD8obFtrW2g+PjJdPj4wXXwwfDApPT0xMTk6MCk/KGtbKGtbKGtbZj4+Ml18MCkrND4+Ml18MCkrKChrW20+PjJdfDApKjIwfDApPj4yXXwwKSE9MDowKXtrWyhrWyhrWyhrW2Y+PjJdfDApKzQ+PjJdfDApKygoa1ttPj4yXXwwKSoyMHwwKT4+Ml18MCkrMTY+PjJdPWtbaD4+Ml07a1toPj4yXT0wfX13aGlsZSgwKTtzdihrW2k+PjJdfDAsa1toPj4yXXwwKTt1dihrW2k+PjJdfDAsa1tnPj4yXXwwKTtyPXE7cmV0dXJuIGtbZj4+Ml18MH1cbmZ1bmN0aW9uIGFJKGEsYixjLGQsZSxmLGcpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO3ZhciBoPTAsaj0wLG09MCxuPTAsbz0wLHA9MCxxPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTAsRT0wLEY9MCxHPTAsSD0wLEk9MDtJPXI7cj1yKzU3NnwwO0c9SSsxNnwwO3M9SSs4fDA7bT1JO0M9SSs1NzJ8MDt1PUkrNTY4fDA7bz1JKzU2NHwwO3Y9SSs1NjB8MDtoPUkrNTU2fDA7dz1JKzU1MnwwO3A9SSs1NDh8MDtIPUkrNTQ0fDA7RT1JKzU0MHwwO3g9SSs1MzZ8MDtGPUkrNTZ8MDtqPUkrNDh8MDtuPUkrNDR8MDt0PUkrNDB8MDtxPUkrMzZ8MDt5PUkrMzJ8MDt6PUkrMjh8MDtBPUkrMjR8MDtEPUkrMjB8MDtrW0M+PjJdPWE7a1t1Pj4yXT1iO2tbbz4+Ml09YztrW3Y+PjJdPWQ7a1toPj4yXT1lO2tbdz4+Ml09ZjtrW3A+PjJdPWc7a1tIPj4yXT0wO2tbRT4+Ml09MDtkUyhGfDAsMCwxNTIpfDA7YT1GKzQwMHwwO2M9YSs4MHwwO2Rve2lbYT4+MF09MDthPWErMXwwfXdoaWxlKChhfDApPChjfDApKTtrW0YrNDMyPj4yXT1rW2g+PjJdO2tbeD4+Ml09MDt3aGlsZSgxKXtpZigoa1t4Pj4yXXwwKT49KGtbKGtbQz4+Ml18MCkrMjA+PjJdfDApKWJyZWFrO2tbaj4+Ml09a1soa1soa1tDPj4yXXwwKSsxNj4+Ml18MCkrKGtbeD4+Ml08PDQpKzQ+PjJdO2lmKChrW2o+PjJdfDApIT0wPyhoPWJJKGtbaj4+Ml18MCl8MCxrW0U+PjJdPWgsKGtbRT4+Ml18MCkhPTApOjApe0I9NTticmVha31rW3g+PjJdPShrW3g+PjJdfDApKzF9aWYoKEJ8MCk9PTUpe2tbbj4+Ml09a1soa1soa1tDPj4yXXwwKSsxNj4+Ml18MCkrKGtbeD4+Ml08PDQpPj4yXTtIPWtbQz4+Ml18MDtHPWtbRT4+Ml18MDtrW20+PjJdPWtbbj4+Ml07dGcoSCxHLDM5NTkxLG0pO1poKEYpO0c9a1tDPj4yXXwwO0g9a1tFPj4yXXwwO0g9Y2goRyxIKXwwO2tbRT4+Ml09SDtIPWtbRT4+Ml18MDtyPUk7cmV0dXJuIEh8MH1FdShrW0M+PjJdfDApO2tbRj4+Ml09a1tDPj4yXTtkbyBpZigoa1tvPj4yXXwwKT49MCl7aWYoKGtbbz4+Ml18MCkhPTA/KGlbKGtbdT4+Ml18MCkrKChrW28+PjJdfDApLTEpPj4wXXwwKT09MDowKXtCPTE1O2JyZWFrfWtbcT4+Ml09a1soa1tDPj4yXXwwKSs5Nis0Pj4yXTthPWtbQz4+Ml18MDtpZigoa1tvPj4yXXwwKT4oa1txPj4yXXwwKSl7dGcoYSwxOCwzOTYyMSxzKTtHPWNoKGtbQz4+Ml18MCwxOCl8MDtrW0U+PjJdPUc7WmgoRik7Rz1rW0M+PjJdfDA7SD1rW0U+PjJdfDA7SD1jaChHLEgpfDA7a1tFPj4yXT1IO0g9a1tFPj4yXXwwO3I9STtyZXR1cm4gSHwwfXM9a1tvPj4yXXwwO3M9Z3goYSxrW3U+PjJdfDAscywoKHN8MCk8MCk8PDMxPj4zMSl8MDtrW3Q+PjJdPXM7aWYoa1t0Pj4yXXwwKXtnaShGLGtbdD4+Ml18MCxIKXwwO2tbRis0MzY+PjJdPShrW3U+PjJdfDApKygoa1tGKzQzNj4+Ml18MCktKGtbdD4+Ml18MCkpO2JnKGtbQz4+Ml18MCxrW3Q+PjJdfDApO2JyZWFrfWVsc2V7a1tGKzQzNj4+Ml09KGtbdT4+Ml18MCkrKGtbbz4+Ml18MCk7YnJlYWt9fWVsc2UgQj0xNTt3aGlsZSgwKTtpZigoQnwwKT09MTUpZ2koRixrW3U+PjJdfDAsSCl8MDtpZigoa1tGKzEyPj4yXXwwKT09MTAxKWtbRisxMj4+Ml09MDtpZihpW0YrMTc+PjBdfDApY0koRik7aWYoaVsoa1tDPj4yXXwwKSs2OT4+MF18MClrW0YrMTI+PjJdPTc7aWYoa1twPj4yXXwwKWtba1twPj4yXT4+Ml09a1tGKzQzNj4+Ml07a1tFPj4yXT1rW0YrMTI+PjJdO2E6ZG8gaWYoKChrW0U+PjJdfDApPT0wPyhrW0YrOD4+Ml18MCkhPTA6MCk/KGxbRis0MDk+PjBdfDApIT0wOjApe2E9a1tGKzg+PjJdfDA7aWYoKGxbRis0MDk+PjBdfDApPT0yKXt3QyhhLDQpO2tbeT4+Ml09ODtrW3o+PjJdPTEyfWVsc2V7d0MoYSw4KTtrW3k+PjJdPTA7a1t6Pj4yXT04fWtbeD4+Ml09a1t5Pj4yXTt3aGlsZSgxKXtpZigoa1t4Pj4yXXwwKT49KGtbej4+Ml18MCkpYnJlYWsgYTt4QyhrW0YrOD4+Ml18MCwoa1t4Pj4yXXwwKS0oa1t5Pj4yXXwwKXwwLDAsa1s1NTI0KyhrW3g+PjJdPDwyKT4+Ml18MCwwKXwwO2tbeD4+Ml09KGtbeD4+Ml18MCkrMX19d2hpbGUoMCk7aWYoIShsWyhrW0M+PjJdfDApKzE0OCs1Pj4wXXwwKSl7a1tBPj4yXT1rW0YrOD4+Ml07ZEkoa1tBPj4yXXwwLGtbdT4+Ml18MCwoa1tGKzQzNj4+Ml18MCktKGtbdT4+Ml18MCl8MCxrW3Y+PjJdfDApfWRvIGlmKGtbRis4Pj4yXXwwKXtpZigoa1tFPj4yXXwwKT09MD8obFsoa1tDPj4yXXwwKSs2OT4+MF18MCk9PTA6MCl7Qj0zOTticmVha31iaChrW0YrOD4+Ml18MCl8MH1lbHNlIEI9Mzk7d2hpbGUoMCk7aWYoKEJ8MCk9PTM5KWtba1t3Pj4yXT4+Ml09a1tGKzg+PjJdO2E9a1tDPj4yXXwwO2M9a1tFPj4yXXwwO2lmKGtbSD4+Ml18MCl7a1tHPj4yXT1rW0g+PjJdO3RnKGEsYywxODM5MSxHKTtiZyhrW0M+PjJdfDAsa1tIPj4yXXwwKX1lbHNlIHZnKGEsYyk7d2hpbGUoMSl7aWYoIShrW0YrNDY4Pj4yXXwwKSlicmVhaztrW0Q+PjJdPWtbRis0Njg+PjJdO2tbRis0Njg+PjJdPWtbKGtbRD4+Ml18MCkrND4+Ml07Ymcoa1tDPj4yXXwwLGtbRD4+Ml18MCl9WmgoRik7Rz1rW0M+PjJdfDA7SD1rW0U+PjJdfDA7SD1jaChHLEgpfDA7a1tFPj4yXT1IO0g9a1tFPj4yXXwwO3I9STtyZXR1cm4gSHwwfWZ1bmN0aW9uIGJJKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MDtjPXI7cj1yKzE2fDA7ZD1jKzR8MDtiPWM7a1tkPj4yXT1hO3dnKGtbZD4+Ml18MCk7YT1lSShrW2Q+PjJdfDAsMSwxKXwwO2tbYj4+Ml09YTtyPWM7cmV0dXJuIGtbYj4+Ml18MH1mdW5jdGlvbiBjSShhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wLGk9MDtpPXI7cj1yKzMyfDA7Yj1pKzI0fDA7ZD1pKzIwfDA7ZT1pKzE2fDA7aD1pKzEyfDA7Yz1pKzh8MDtmPWkrNHwwO2c9aTtrW2I+PjJdPWE7a1tkPj4yXT1rW2tbYj4+Ml0+PjJdO2tbZT4+Ml09MDt3aGlsZSgxKXtpZigoa1tlPj4yXXwwKT49KGtbKGtbZD4+Ml18MCkrMjA+PjJdfDApKXtiPTE0O2JyZWFrfWtbZj4+Ml09MDtrW2c+PjJdPWtbKGtbKGtbZD4+Ml18MCkrMTY+PjJdfDApKyhrW2U+PjJdPDw0KSs0Pj4yXTtpZihrW2c+PjJdfDApe2lmKCEoeWcoa1tnPj4yXXwwKXwwKSl7YT16ZyhrW2c+PjJdfDAsMCl8MDtrW2g+PjJdPWE7aWYoKGtbaD4+Ml18MCk9PTd8KGtbaD4+Ml18MCk9PTMwODIpd2goa1tkPj4yXXwwKTtpZihrW2g+PjJdfDApe2I9MTQ7YnJlYWt9a1tmPj4yXT0xfUJnKGtbZz4+Ml18MCwxLGMpO2lmKChrW2M+PjJdfDApIT0oa1trWyhrWyhrW2Q+PjJdfDApKzE2Pj4yXXwwKSsoa1tlPj4yXTw8NCkrMTI+PjJdPj4yXXwwKSl7R2ooa1tkPj4yXXwwLGtbZT4+Ml18MCk7a1soa1tiPj4yXXwwKSsxMj4+Ml09MTd9aWYoa1tmPj4yXXwwKVFqKGtbZz4+Ml18MCl8MH1rW2U+PjJdPShrW2U+PjJdfDApKzF9aWYoKGJ8MCk9PTE0KXtyPWk7cmV0dXJufX1mdW5jdGlvbiBkSShhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGk9MDtpPXI7cj1yKzE2fDA7ZT1pKzEyfDA7Zj1pKzh8MDtnPWkrNHwwO2g9aTtrW2U+PjJdPWE7a1tmPj4yXT1iO2tbZz4+Ml09YztrW2g+PjJdPWQ7aWYoIShrW2U+PjJdfDApKXtyPWk7cmV0dXJufWI9a1tnPj4yXXwwO2I9Z3goa1trW2U+PjJdPj4yXXwwLGtbZj4+Ml18MCxiLCgoYnwwKTwwKTw8MzE+PjMxKXwwO2tbKGtbZT4+Ml18MCkrMTc2Pj4yXT1iO2I9KGtbZT4+Ml18MCkrMTQ0fDA7altiPj4xXT1qW2I+PjFdJi01MTN8KGtbaD4+Ml0mMSk8PDkmNjU1MzU7cj1pO3JldHVybn1mdW5jdGlvbiBlSShhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsbj0wLG89MCxwPTA7cD1yO3I9ciszMnwwO2Q9cCsxNnwwO2U9cCsxMnwwO2Y9cCs4fDA7Zz1wKzIwfDA7aD1wKzR8MDtuPXA7a1tlPj4yXT1hO2tbZj4+Ml09YjtpW2c+PjBdPWM7a1toPj4yXT1rWyhrW2U+PjJdfDApKzQ+PjJdO2lmKCEoaVsoa1tlPj4yXXwwKSs5Pj4wXXwwKSl7a1tkPj4yXT0wO289a1tkPj4yXXwwO3I9cDtyZXR1cm4gb3wwfWlmKChrWyhrW2g+PjJdfDApKzc2Pj4yXXwwKSE9KGtbZT4+Ml18MCk/KG1bKGtbaD4+Ml18MCkrMjI+PjFdJjMyfDApIT0wOjApe2tbZD4+Ml09MjYyO289a1tkPj4yXXwwO3I9cDtyZXR1cm4gb3wwfWtbbj4+Ml09a1soa1toPj4yXXwwKSs3Mj4+Ml07d2hpbGUoMSl7aWYoIShrW24+PjJdfDApKXtvPTE1O2JyZWFrfWlmKCgoa1trW24+PjJdPj4yXXwwKSE9KGtbZT4+Ml18MCk/KGtbKGtbbj4+Ml18MCkrND4+Ml18MCk9PShrW2Y+PjJdfDApOjApPyhsWyhrW24+PjJdfDApKzg+PjBdfDApIT0obFtnPj4wXXwwKTowKWJyZWFrO2tbbj4+Ml09a1soa1tuPj4yXXwwKSsxMj4+Ml19aWYoKG98MCk9PTE1KXtrW2Q+PjJdPTA7bz1rW2Q+PjJdfDA7cj1wO3JldHVybiBvfDB9aWYoKGxbZz4+MF18MCk9PTIpe289KGtbaD4+Ml18MCkrMjJ8MDtqW28+PjFdPW1bbz4+MV18NjR9a1tkPj4yXT0yNjI7bz1rW2Q+PjJdfDA7cj1wO3JldHVybiBvfDB9ZnVuY3Rpb24gZkkoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MDtoPXI7cj1yKzMyfDA7ZD1oKzE2fDA7aj1oKzEyfDA7ZT1oKzh8MDtmPWgrNHwwO2c9aDtrW2o+PjJdPWE7a1tlPj4yXT1iO2tbZj4+Ml09YztrW2c+PjJdPWtbKGtbaj4+Ml18MCkrOD4+Ml07d2hpbGUoMSl7aWYoIShrW2c+PjJdfDApKWJyZWFrO2lmKChrW2c+PjJdfDApIT0oa1tmPj4yXXwwKSl7aWYoIShrW2U+PjJdfDApKWJyZWFrO2lmKChrWyhrW2c+PjJdfDApKzUyPj4yXXwwKT09KGtbZT4+Ml18MCkpYnJlYWt9a1tnPj4yXT1rWyhrW2c+PjJdfDApKzg+PjJdfWlmKGtbZz4+Ml18MCl7aj1nSShrW2c+PjJdfDAsa1tlPj4yXXwwLGtbZj4+Ml18MCl8MDtrW2Q+PjJdPWo7aj1rW2Q+PjJdfDA7cj1oO3JldHVybiBqfDB9aWYoa1tmPj4yXXwwKXtqPShrW2Y+PjJdfDApKzY0fDA7aVtqPj4wXT0obFtqPj4wXXwwKSYtMzN9a1tkPj4yXT0wO2o9a1tkPj4yXXwwO3I9aDtyZXR1cm4ganwwfWZ1bmN0aW9uIGdJKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxpPTA7aT1yO3I9ciszMnwwO2c9aSsxNnwwO2Q9aSsxMnwwO2U9aSs4fDA7Zj1pKzR8MDtoPWk7a1tkPj4yXT1hO2tbZT4+Ml09YjtrW2Y+PjJdPWM7YTp3aGlsZSgxKXtkbyBpZigoa1tkPj4yXXwwKSE9KGtbZj4+Ml18MCkpe2lmKDAhPShrW2U+PjJdfDApPyhrWyhrW2Q+PjJdfDApKzUyPj4yXXwwKSE9KGtbZT4+Ml18MCk6MClicmVhaztpZigobFsoa1tkPj4yXXwwKSs2Nj4+MF18MHwwKSE9MT8obFsoa1tkPj4yXXwwKSs2Nj4+MF18MHwwKSE9MjowKXtpSShrW2Q+PjJdfDApO2JyZWFrfWM9aEkoa1tkPj4yXXwwKXwwO2tbaD4+Ml09YztpZihrW2g+PjJdfDApe2Q9ODticmVhayBhfX13aGlsZSgwKTtrW2Q+PjJdPWtbKGtbZD4+Ml18MCkrOD4+Ml07aWYoIShrW2Q+PjJdfDApKXtkPTExO2JyZWFrfX1pZigoZHwwKT09OCl7a1tnPj4yXT1rW2g+PjJdO2g9a1tnPj4yXXwwO3I9aTtyZXR1cm4gaHwwfWVsc2UgaWYoKGR8MCk9PTExKXtrW2c+PjJdPTA7aD1rW2c+PjJdfDA7cj1pO3JldHVybiBofDB9cmV0dXJuIDB9ZnVuY3Rpb24gaEkoYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wO2Q9cjtyPXIrMTZ8MDtiPWQrNHwwO2M9ZDtrW2I+PjJdPWE7YT1rW2I+PjJdfDA7aWYoKGxbKGtbYj4+Ml18MCkrNjY+PjBdfDB8MCk9PTIpaVthKzY2Pj4wXT0xO2Vsc2Uga1thKzYwPj4yXT0wO2E9akkoa1tiPj4yXXwwKXwwO2tbYz4+Ml09YTtpZighKGtbYz4+Ml18MCkpe2lJKGtbYj4+Ml18MCk7aVsoa1tiPj4yXXwwKSs2Nj4+MF09M31iPShrW2I+PjJdfDApKzY0fDA7aVtiPj4wXT0obFtiPj4wXXwwKSYtMTU7cj1kO3JldHVybiBrW2M+PjJdfDB9ZnVuY3Rpb24gaUkoYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wO2Q9cjtyPXIrMTZ8MDtiPWQrNHwwO2M9ZDtrW2I+PjJdPWE7a1tjPj4yXT0wO3doaWxlKDEpe2lmKChrW2M+PjJdfDApPihpWyhrW2I+PjJdfDApKzY4Pj4wXXwwKSlicmVhaztfQihrWyhrW2I+PjJdfDApKzEyMCsoa1tjPj4yXTw8Mik+PjJdfDApO2tbKGtbYj4+Ml18MCkrMTIwKyhrW2M+PjJdPDwyKT4+Ml09MDtrW2M+PjJdPShrW2M+PjJdfDApKzF9aVsoa1tiPj4yXXwwKSs2OD4+MF09LTE7cj1kO3JldHVybn1mdW5jdGlvbiBqSShhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTAsZT0wLGY9MDtlPXI7cj1yKzE2fDA7Yz1lKzh8MDtkPWUrNHwwO2I9ZTtrW2M+PjJdPWE7a1tkPj4yXT0wO2E9a1tjPj4yXXwwO2lmKGlbKGtbYz4+Ml18MCkrNjk+PjBdfDApe2I9a0koYSl8MDtjPShrW2M+PjJdfDApKzQwfDA7a1tjPj4yXT1iO2tbYys0Pj4yXT1MO2Q9a1tkPj4yXXwwO3I9ZTtyZXR1cm4gZHwwfWY9bEkoYSl8MDthPShrW2M+PjJdfDApKzQwfDA7a1thPj4yXT1mO2tbYSs0Pj4yXT0wO2E9KGtbYz4+Ml18MCkrNDB8MDthPWpnKGtbYT4+Ml18MCxrW2ErND4+Ml18MCl8MDtrW2I+PjJdPWE7aWYoIShrW2I+PjJdfDApKXtrW2Q+PjJdPTc7Zj1rW2Q+PjJdfDA7cj1lO3JldHVybiBmfDB9YT1tSShrW2M+PjJdfDAsMCxrWyhrW2M+PjJdfDApKzQwPj4yXXwwLGtbYj4+Ml18MCl8MDtrW2Q+PjJdPWE7YT1rW2I+PjJdfDA7aWYoIShrW2Q+PjJdfDApKXtrWyhrW2M+PjJdfDApKzQ4Pj4yXT1hO2Y9a1tkPj4yXXwwO3I9ZTtyZXR1cm4gZnwwfWVsc2V7VWQoYSk7Zj1rW2Q+PjJdfDA7cj1lO3JldHVybiBmfDB9cmV0dXJuIDB9ZnVuY3Rpb24ga0koYSl7YT1hfDA7dmFyIGI9MCxjPTA7Yj1yO3I9cisxNnwwO2M9YjtrW2M+PjJdPWE7YUcoa1tjPj4yXXwwKTthPShrW2M+PjJdfDApKzE2fDA7TD1rW2ErND4+Ml18MDtyPWI7cmV0dXJuIGtbYT4+Ml18MH1mdW5jdGlvbiBsSShhKXthPWF8MDt2YXIgYj0wLGM9MDtjPXI7cj1yKzE2fDA7Yj1jO2tbYj4+Ml09YTthRyhrW2I+PjJdfDApO3I9YztyZXR1cm4ga1soa1tiPj4yXXwwKSsxNisxMj4+Ml18MH1mdW5jdGlvbiBtSShhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGk9MDtlPXI7cj1yKzE2fDA7aT1lKzEyfDA7aD1lKzh8MDtnPWUrNHwwO2Y9ZTtrW2k+PjJdPWE7a1toPj4yXT1iO2tbZz4+Ml09YztrW2Y+PjJdPWQ7YT0kRihrW2k+PjJdfDAsa1toPj4yXXwwLGtbZz4+Ml18MCxrW2Y+PjJdfDAsMCl8MDtyPWU7cmV0dXJuIGF8MH1mdW5jdGlvbiBuSShhKXthPWF8MDt2YXIgYj0wLGM9MDtiPXI7cj1yKzE2fDA7Yz1iO2tbYz4+Ml09YTt3ZyhrW2tbYz4+Ml0+PjJdfDApO3I9YjtyZXR1cm59ZnVuY3Rpb24gb0koYSl7YT1hfDA7dmFyIGI9MCxjPTA7Yj1yO3I9cisxNnwwO2M9YjtrW2M+PjJdPWE7YT0oa1tjPj4yXXwwKSs2NHwwO2lbYT4+MF09bFthPj4wXXwwfDE2O2lbKGtba1tjPj4yXT4+Ml18MCkrMTE+PjBdPTE7cj1iO3JldHVybn1mdW5jdGlvbiBwSShhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MDtnPXI7cj1yKzE2fDA7ZD1nKzh8MDtlPWcrNHwwO2Y9ZztrW2Q+PjJdPWE7a1tlPj4yXT1iO2tbZj4+Ml09YztpZihrW2U+PjJdfDApe2Y9a1tlPj4yXXwwO3I9ZztyZXR1cm4gZnwwfWtbZj4+Ml09KGtbZj4+Ml18MCkrNyYtODtjPWtbZj4+Ml18MDthPWtbZD4+Ml18MDtpZigoa1tmPj4yXXwwKTw9KGtbKGtbZD4+Ml18MCkrND4+Ml18MCkpe2Y9YSs0fDA7a1tmPj4yXT0oa1tmPj4yXXwwKS1jO2tbZT4+Ml09KGtba1tkPj4yXT4+Ml18MCkrKGtbKGtbZD4+Ml18MCkrND4+Ml18MCk7Zj1rW2U+PjJdfDA7cj1nO3JldHVybiBmfDB9ZWxzZXtmPWErOHwwO2tbZj4+Ml09KGtbZj4+Ml18MCkrYztmPWtbZT4+Ml18MDtyPWc7cmV0dXJuIGZ8MH1yZXR1cm4gMH1mdW5jdGlvbiBxSShhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MDtqPXI7cj1yKzE2fDA7ZT1qKzEyfDA7Zj1qKzh8MDtnPWorNHwwO2g9ajtrW2U+PjJdPWE7a1tmPj4yXT1iO2tbZz4+Ml09YztrW2g+PjJdPWQ7aWYoaVsoa1tmPj4yXXwwKSsxPj4wXXwwKXtTQShrW2tbZT4+Ml0+PjJdfDAsaVsoa1tmPj4yXXwwKSsxPj4wXXwwLGtbKGtbZj4+Ml18MCkrMTY+PjJdfDApO2lbKGtbZj4+Ml18MCkrMT4+MF09MDtrWyhrW2Y+PjJdfDApKzE2Pj4yXT0wfWlmKChrW2g+PjJdfDApPDApe1doKGtbZT4+Ml18MCwoKGtbZj4+Ml18MCktKGtbKGtbZT4+Ml18MCkrODg+PjJdfDApfDApLzIwfDAsa1tnPj4yXXwwLGtbaD4+Ml18MCk7cj1qO3JldHVybn1pZighKGtbaD4+Ml18MCkpe2M9VGYoa1tnPj4yXXwwKXwwO2tbaD4+Ml09Y31jPWtbaD4+Ml18MDtjPWd4KGtba1tlPj4yXT4+Ml18MCxrW2c+PjJdfDAsYywoKGN8MCk8MCk8PDMxPj4zMSl8MDtrWyhrW2Y+PjJdfDApKzE2Pj4yXT1jO2lbKGtbZj4+Ml18MCkrMT4+MF09LTE7cj1qO3JldHVybn1mdW5jdGlvbiBySShhKXthPWF8MDt2YXIgYj0wLGM9MDtiPXI7cj1yKzE2fDA7Yz1iO2tbYz4+Ml09YTthPShrW2M+PjJdfDApKzEyfDA7a1thPj4yXT0oa1thPj4yXXwwKSsxO3I9YjtyZXR1cm59ZnVuY3Rpb24gc0koYSl7YT1hfDA7dmFyIGI9MCxjPTA7Yz1yO3I9cisxNnwwO2I9YztrW2I+PjJdPWE7cj1jO3JldHVybiBsWyhrW2I+PjJdfDApKzk+PjBdfDB8MH1mdW5jdGlvbiB0SShhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wLGg9MCxtPTAsbj0wLG89MCxwPTA7cD1yO3I9cis0OHwwO249cDtjPXArMzJ8MDtkPXArMjh8MDtlPXArMjR8MDtnPXArMjB8MDtoPXArMTZ8MDtvPXArMTJ8MDttPXArOHwwO2Y9cCs0fDA7a1tkPj4yXT1hO2tbZT4+Ml09YjtrW2c+PjJdPWtba1tlPj4yXT4+Ml07a1tvPj4yXT0wO2tbZj4+Ml09a1trW2Q+PjJdPj4yXTtpZihrWyhrW2U+PjJdfDApKzE2Pj4yXXwwKXtrW2M+PjJdPTE7bz1rW2M+PjJdfDA7cj1wO3JldHVybiBvfDB9aWYoKGtbKGtbZz4+Ml18MCkrND4+Ml18MCkhPTA/KGtbKGtbZz4+Ml18MCkrND4+Ml18MCkhPShrWyhrW2c+PjJdfDApKzg+PjJdfDApOjApe2tbYz4+Ml09MDtvPWtbYz4+Ml18MDtyPXA7cmV0dXJuIG98MH1hPUNoKGtbZj4+Ml18MCw3MiwwKXwwO2tbaD4+Ml09YTtpZighKGtbaD4+Ml18MCkpe2tbYz4+Ml09MDtvPWtbYz4+Ml18MDtyPXA7cmV0dXJuIG98MH1hPUFoKGtbZj4+Ml18MCxrWyhrW2U+PjJdfDApKzQ+PjJdfDApfDA7a1trW2g+PjJdPj4yXT1hO2lmKCEoa1trW2g+PjJdPj4yXXwwKSl7Ymcoa1tmPj4yXXwwLGtbaD4+Ml18MCk7a1tjPj4yXT0wO289a1tjPj4yXXwwO3I9cDtyZXR1cm4gb3wwfWtbKGtbZT4+Ml18MCkrMTY+PjJdPWtbaD4+Ml07alsoa1toPj4yXXwwKSszNj4+MV09MTtrWyhrW2g+PjJdfDApKzY0Pj4yXT1rWyhrWyhrW2Y+PjJdfDApKzE2Pj4yXXwwKSsxMj4+Ml07YT0oa1toPj4yXXwwKSs0MnwwO2lbYT4+MF09bFthPj4wXXwwfDE2O2tbKGtbaD4+Ml18MCkrNDg+PjJdPTA7alsoa1toPj4yXXwwKSszMj4+MV09LTE7YT1rW2Y+PjJdfDA7Yj1rW2g+PjJdfDA7angoYSxiLEFoKGtbZj4+Ml18MCxrW2tbaD4+Ml0+PjJdfDApfDApO2p4KGtbZj4+Ml18MCxrW2g+PjJdfDAsMCk7Yj1rW2Y+PjJdfDA7YT1rW2g+PjJdfDA7angoYixhLEFoKGtbZj4+Ml18MCxrW2tbaD4+Ml0+PjJdfDApfDApO2g9VHooa1tmPj4yXXwwLGtbaD4+Ml18MCxrW2U+PjJdfDAsa1soa1tnPj4yXXwwKSs4Pj4yXXwwLG8pfDA7a1ttPj4yXT1oO2lmKGtbbT4+Ml18MCl7bT1rW2Q+PjJdfDA7a1tuPj4yXT1rW28+PjJdO09oKG0sMTgzOTEsbik7Ymcoa1tmPj4yXXwwLGtbbz4+Ml18MCk7dUkoa1tmPj4yXXwwLGtbZT4+Ml18MCk7a1tjPj4yXT0wO289a1tjPj4yXXwwO3I9cDtyZXR1cm4gb3wwfWVsc2V7a1tjPj4yXT0xO289a1tjPj4yXXwwO3I9cDtyZXR1cm4gb3wwfXJldHVybiAwfWZ1bmN0aW9uIHVJKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MDtmPXI7cj1yKzE2fDA7Yz1mKzh8MDtkPWYrNHwwO2U9ZjtrW2M+PjJdPWE7a1tkPj4yXT1iO2tbZT4+Ml09a1soa1tkPj4yXXwwKSsxNj4+Ml07aWYoIShrW2U+PjJdfDApKXtyPWY7cmV0dXJufWI9KGtbZT4+Ml18MCkrNDJ8MDtpW2I+PjBdPWxbYj4+MF18MHwyOyRmKGtbYz4+Ml18MCxrW2U+PjJdfDApO2tbKGtbZD4+Ml18MCkrMTY+PjJdPTA7cj1mO3JldHVybn1mdW5jdGlvbiB2SShhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTA7aj1yO3I9ciszMnwwO2M9aisxNnwwO2Q9aisxMnwwO2c9ais4fDA7Zj1qKzR8MDtlPWo7a1tjPj4yXT1hO2tbZD4+Ml09YjtrW2Y+PjJdPTA7a1trW2Q+PjJdPj4yXT0wO3doaWxlKDEpe2lmKCEoaVtrW2M+PjJdPj4wXXwwKSl7aD02O2JyZWFrfWI9anYoa1tjPj4yXXwwLGcpfDA7a1tlPj4yXT1iO2I9a1tlPj4yXXwwO2lmKChrW2c+PjJdfDApPT0xMzUpYnJlYWs7a1tmPj4yXT0oa1tmPj4yXXwwKStiO2tbYz4+Ml09KGtbYz4+Ml18MCkrKGtbZT4+Ml18MCl9aWYoKGh8MCk9PTYpe2g9a1tmPj4yXXwwO3I9ajtyZXR1cm4gaHwwfWtba1tkPj4yXT4+Ml09YjtoPWtbZj4+Ml18MDtyPWo7cmV0dXJuIGh8MH1mdW5jdGlvbiB3SShhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MDtlPXI7cj1yKzE2fDA7Yz1lKzR8MDtkPWU7a1tjPj4yXT1hO2tbZD4+Ml09YjtmaChrW2M+PjJdfDApO2I9a1tjPj4yXXwwO2E9a1tkPj4yXXwwO2M9Yis0MHwwO2Rve2tbYj4+Ml09a1thPj4yXTtiPWIrNHwwO2E9YSs0fDB9d2hpbGUoKGJ8MCk8KGN8MCkpO2pbKGtbZD4+Ml18MCkrOD4+MV09MTtrWyhrW2Q+PjJdfDApKzI0Pj4yXT0wO3I9ZTtyZXR1cm59ZnVuY3Rpb24geEkoKXtyZXR1cm4gMzIwfWZ1bmN0aW9uIHlJKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wO2M9cjtyPXIrMjI0fDA7ZD1jKzIyMHwwO2U9YysyMTZ8MDtoPWM7Zz1jKzIxMnwwO2Y9YysyMDh8MDtrW2Q+PjJdPWE7a1tlPj4yXT1iO2JTKGh8MCxrW2Q+PjJdfDAsMjA4KXwwO2JTKGtbZD4+Ml18MCxrW2U+PjJdfDAsMjA4KXwwO2JTKGtbZT4+Ml18MCxofDAsMjA4KXwwO2tbZz4+Ml09a1soa1tkPj4yXXwwKSs4Pj4yXTtrWyhrW2Q+PjJdfDApKzg+PjJdPWtbKGtbZT4+Ml18MCkrOD4+Ml07a1soa1tlPj4yXXwwKSs4Pj4yXT1rW2c+PjJdO2tbZz4+Ml09a1soa1tkPj4yXXwwKSs0Pj4yXTtrWyhrW2Q+PjJdfDApKzQ+PjJdPWtbKGtbZT4+Ml18MCkrND4+Ml07a1soa1tlPj4yXXwwKSs0Pj4yXT1rW2c+PjJdO2tbZj4+Ml09a1soa1tkPj4yXXwwKSsxNzY+PjJdO2tbKGtbZD4+Ml18MCkrMTc2Pj4yXT1rWyhrW2U+PjJdfDApKzE3Nj4+Ml07a1soa1tlPj4yXXwwKSsxNzY+PjJdPWtbZj4+Ml07Yj0oa1tlPj4yXXwwKSsxNDR8MDtqW2I+PjFdPWpbYj4+MV0mLTUxM3woKG1bKGtbZD4+Ml18MCkrMTQ0Pj4xXXwwKT4+PjkmMSk8PDkmNjU1MzU7cj1jO3JldHVybn1mdW5jdGlvbiB6SShhKXthPWF8MDt2YXIgYj0wLGM9MDtiPXI7cj1yKzE2fDA7Yz1iO2tbYz4+Ml09YTtrWyhrW2M+PjJdfDApKzQwPj4yXT0wO3I9YjtyZXR1cm59ZnVuY3Rpb24gQUkoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTAuMDtnPXI7cj1yKzMyfDA7Yz1nKzE2fDA7ZD1nKzEyfDA7Zj1nKzh8MDtlPWc7a1tjPj4yXT1hO2tbZD4+Ml09YjtpZigoa1trW2M+PjJdPj4yXXwwKT49Mj8oa1soa1tjPj4yXXwwKSs3Mj4+Ml18MCkhPTA6MCl7ZT1nY1trWyhrW2M+PjJdfDApKzcyPj4yXSYyNTVdKGtbYz4+Ml18MCxrW2Q+PjJdfDApfDA7a1tmPj4yXT1lO2Y9a1tmPj4yXXwwO3I9ZztyZXR1cm4gZnwwfWE9Z2Nba1soa1tjPj4yXXwwKSs2ND4+Ml0mMjU1XShrW2M+PjJdfDAsZSl8MDtrW2Y+PjJdPWE7aD0rcFtlPj4zXSo4NjQuMGU1O2E9K1coaCk+PTEuMD8oaD4wLjA/fn4raWEoK1YoaC80Mjk0OTY3Mjk2LjApLDQyOTQ5NjcyOTUuMCk+Pj4wOn5+K2dhKChoLSsofn5oPj4+MCkpLzQyOTQ5NjcyOTYuMCk+Pj4wKTowO2U9a1tkPj4yXXwwO2tbZT4+Ml09fn5oPj4+MDtrW2UrND4+Ml09YTtmPWtbZj4+Ml18MDtyPWc7cmV0dXJuIGZ8MH1mdW5jdGlvbiBCSShhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wLG49MCxvPTAscD0wLHE9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wO3k9cjtyPXIrODB8MDt3PXkrOHwwO3A9eTtxPXkrNjh8MDtzPXkrNjR8MDtoPXkrNjB8MDtuPXkrNTZ8MDtiPXkrNTJ8MDtvPXkrNDh8MDtjPXkrNDR8MDtkPXkrNDB8MDt2PXkrMzZ8MDt0PXkrMzJ8MDt4PXkrMjh8MDt1PXkrMjR8MDtlPXkrMjB8MDtnPXkrMTZ8MDtmPXkrMTJ8MDtrW3M+PjJdPWE7a1tuPj4yXT0wO2tbYj4+Ml09MDtrW28+PjJdPTA7a1tjPj4yXT1rW2tbcz4+Ml0+PjJdO2tbdj4+Ml09MDtrW3Q+PjJdPShrWyhrW3M+PjJdfDApKzkyPj4yXXwwKSs0MDtZQyhrW3Q+PjJdfDAsOCk7a1soa1tzPj4yXXwwKSsxMDQ+PjJdPTA7aWYoKGtbKGtbcz4+Ml18MCkrNDA+PjJdfDApPT03KXt3aChrW2M+PjJdfDApO2tbcT4+Ml09MTt4PWtbcT4+Ml18MDtyPXk7cmV0dXJuIHh8MH1rW2g+PjJdPWtbKGtbcz4+Ml18MCkrMTM2Pj4yXTthOmRvIGlmKCgobVsoa1tzPj4yXXwwKSsxNDQ+PjFdfDApPj4+MiYzfDApPT0xKXtrW28+PjJdPShrWyhrW3M+PjJdfDApKzkyPj4yXXwwKSszNjA7aWYobVsoa1tvPj4yXXwwKSs4Pj4xXSYxNil7a1tuPj4yXT0oKGtbKGtbbz4+Ml18MCkrMTI+PjJdfDApPj4+MCkvNHwwO2tbYj4+Ml09a1soa1tvPj4yXXwwKSsxNj4+Ml19a1tkPj4yXT0wO3doaWxlKDEpe2lmKChrW2Q+PjJdfDApPj0oa1tuPj4yXXwwKSlicmVhayBhO2tbaD4+Ml09KGtbaD4+Ml18MCkrKGtbKGtbKGtbYj4+Ml18MCkrKGtbZD4+Ml08PDIpPj4yXXwwKSs0Pj4yXXwwKTtrW2Q+PjJdPShrW2Q+PjJdfDApKzF9fXdoaWxlKDApO2Rve3o9KGtbcz4+Ml18MCkrMzZ8MDthPWtbej4+Ml18MDtrW3o+PjJdPWErMTtrW2Q+PjJdPWE7aWYoKGtbZD4+Ml18MCk+PShrW2g+PjJdfDApKWJyZWFrO2lmKCgobVsoa1tzPj4yXXwwKSsxNDQ+PjFdfDApPj4+MiYzfDApIT0yKWJyZWFrfXdoaWxlKChsWyhrWyhrW3M+PjJdfDApKzg4Pj4yXXwwKSsoKGtbZD4+Ml18MCkqMjB8MCk+PjBdfDApIT0xNjIpO2RvIGlmKChrW2Q+PjJdfDApPj0oa1toPj4yXXwwKSl7a1soa1tzPj4yXXwwKSs0MD4+Ml09MDtrW3Y+PjJdPTEwMX1lbHNle2lmKGtbKGtbYz4+Ml18MCkrMjQ4Pj4yXXwwKXtrWyhrW3M+PjJdfDApKzQwPj4yXT05O2tbdj4+Ml09MTt6PWtbcz4+Ml18MDtLSSh6LHZoKGtbKGtbcz4+Ml18MCkrNDA+PjJdfDApfDAscCk7YnJlYWt9aWYoKGtbZD4+Ml18MCk8KGtbKGtbcz4+Ml18MCkrMTM2Pj4yXXwwKSlrW3U+PjJdPShrWyhrW3M+PjJdfDApKzg4Pj4yXXwwKSsoKGtbZD4+Ml18MCkqMjB8MCk7ZWxzZXtrW2Q+PjJdPShrW2Q+PjJdfDApLShrWyhrW3M+PjJdfDApKzEzNj4+Ml18MCk7a1tlPj4yXT0wO3doaWxlKDEpe2lmKChrW2Q+PjJdfDApPChrWyhrWyhrW2I+PjJdfDApKyhrW2U+PjJdPDwyKT4+Ml18MCkrND4+Ml18MCkpYnJlYWs7a1tkPj4yXT0oa1tkPj4yXXwwKS0oa1soa1soa1tiPj4yXXwwKSsoa1tlPj4yXTw8Mik+PjJdfDApKzQ+PjJdfDApO2tbZT4+Ml09KGtbZT4+Ml18MCkrMX1rW3U+PjJdPShrW2tbKGtbYj4+Ml18MCkrKGtbZT4+Ml08PDIpPj4yXT4+Ml18MCkrKChrW2Q+PjJdfDApKjIwfDApfWlmKCgobVsoa1tzPj4yXXwwKSsxNDQ+PjFdfDApPj4+MiYzfDApPT0xPyhqWyhrW3Q+PjJdfDApKzg+PjFdPTQscD1rW2Q+PjJdfDAsej1rW3Q+PjJdfDAsa1t6Pj4yXT1wLGtbeis0Pj4yXT0oKHB8MCk8MCk8PDMxPj4zMSxrW3Q+PjJdPShrW3Q+PjJdfDApKzQwLGpbKGtbdD4+Ml18MCkrOD4+MV09MjU2Mix6PSRNKGxba1t1Pj4yXT4+MF18MCl8MCxrWyhrW3Q+PjJdfDApKzE2Pj4yXT16LHo9VGYoa1soa1t0Pj4yXXwwKSsxNj4+Ml18MCl8MCxrWyhrW3Q+PjJdfDApKzEyPj4yXT16LGlbKGtbdD4+Ml18MCkrMTA+PjBdPTEsa1t0Pj4yXT0oa1t0Pj4yXXwwKSs0MCwoaVsoa1t1Pj4yXXwwKSsxPj4wXXwwKT09LTE4KTowKXtrW2c+PjJdPShrW24+PjJdfDApKzE8PDI7a1tmPj4yXT0wO3doaWxlKDEpe2lmKChrW2Y+PjJdfDApPj0oa1tuPj4yXXwwKSlicmVhaztpZigoa1soa1tiPj4yXXwwKSsoa1tmPj4yXTw8Mik+PjJdfDApPT0oa1soa1t1Pj4yXXwwKSsxNj4+Ml18MCkpYnJlYWs7a1tmPj4yXT0oa1tmPj4yXXwwKSsxfWlmKChrW2Y+PjJdfDApPT0oa1tuPj4yXXwwKT8wPT0oWXgoa1tvPj4yXXwwLGtbZz4+Ml18MCwoa1tuPj4yXXwwKSE9MCYxKXwwKTowKXtrW2I+PjJdPWtbKGtbbz4+Ml18MCkrMTY+PjJdO3A9a1soa1t1Pj4yXXwwKSsxNj4+Ml18MDt6PWtbbj4+Ml18MDtrW24+PjJdPXorMTtrWyhrW2I+PjJdfDApKyh6PDwyKT4+Ml09cDt6PShrW28+PjJdfDApKzh8MDtqW3o+PjFdPW1bej4+MV18MTY7a1soa1tvPj4yXXwwKSsxMj4+Ml09a1tuPj4yXTw8Mn19alsoa1t0Pj4yXXwwKSs4Pj4xXT00O3A9a1soa1t1Pj4yXXwwKSs0Pj4yXXwwO3o9a1t0Pj4yXXwwO2tbej4+Ml09cDtrW3orND4+Ml09KChwfDApPDApPDwzMT4+MzE7a1t0Pj4yXT0oa1t0Pj4yXXwwKSs0MDtqWyhrW3Q+PjJdfDApKzg+PjFdPTQ7ej1rWyhrW3U+PjJdfDApKzg+PjJdfDA7cD1rW3Q+PjJdfDA7a1twPj4yXT16O2tbcCs0Pj4yXT0oKHp8MCk8MCk8PDMxPj4zMTtrW3Q+PjJdPShrW3Q+PjJdfDApKzQwO2pbKGtbdD4+Ml18MCkrOD4+MV09NDtwPWtbKGtbdT4+Ml18MCkrMTI+PjJdfDA7ej1rW3Q+PjJdfDA7a1t6Pj4yXT1wO2tbeis0Pj4yXT0oKHB8MCk8MCk8PDMxPj4zMTtrW3Q+PjJdPShrW3Q+PjJdfDApKzQwO2lmKFh4KGtbdD4+Ml18MCwxMDApfDApe2tbcT4+Ml09MTt6PWtbcT4+Ml18MDtyPXk7cmV0dXJuIHp8MH1qWyhrW3Q+PjJdfDApKzg+PjFdPTUxNDtiPWFOKGtbdT4+Ml18MCxrWyhrW3Q+PjJdfDApKzE2Pj4yXXwwLGtbKGtbdD4+Ml18MCkrMjQ+PjJdfDApfDA7a1t4Pj4yXT1iO2I9a1t0Pj4yXXwwO2lmKChrW3g+PjJdfDApIT0oa1soa1t0Pj4yXXwwKSsxNj4+Ml18MCkpe2tbYisxMj4+Ml09MDtxaChrW3Q+PjJdfDAsa1t4Pj4yXXwwLC0xLDEsMCl8MH1lbHNle3o9VGYoa1tiKzE2Pj4yXXwwKXwwO2tbKGtbdD4+Ml18MCkrMTI+PjJdPXo7aVsoa1t0Pj4yXXwwKSsxMD4+MF09MX1rW3Q+PjJdPShrW3Q+PjJdfDApKzQwO2RvIGlmKCgobVsoa1tzPj4yXXwwKSsxNDQ+PjFdfDApPj4+MiYzfDApPT0xKXtpZighKFh4KGtbdD4+Ml18MCw0KXwwKSl7alsoa1t0Pj4yXXwwKSs4Pj4xXT01MTQ7a1soa1t0Pj4yXXwwKSsxMj4+Ml09Mjt6PWtbKGtbdD4+Ml18MCkrMTY+PjJdfDA7a1t3Pj4yXT1sWyhrW3U+PjJdfDApKzM+PjBdO19kKDMseiw0MTkxMCx3KXwwO2lbKGtbdD4+Ml18MCkrMTA+PjBdPTE7a1t0Pj4yXT0oa1t0Pj4yXXwwKSs0MDtqWyhrW3Q+PjJdfDApKzg+PjFdPTE7YnJlYWt9a1txPj4yXT0xO3o9a1txPj4yXXwwO3I9eTtyZXR1cm4genwwfXdoaWxlKDApO2pbKGtbcz4+Ml18MCkrMTQwPj4xXT04LSgoKG1bKGtbcz4+Ml18MCkrMTQ0Pj4xXXwwKT4+PjImMyktMTw8Mik7a1soa1tzPj4yXXwwKSsxMDQ+PjJdPShrWyhrW3M+PjJdfDApKzkyPj4yXXwwKSs0MDtrWyhrW3M+PjJdfDApKzQwPj4yXT0wO2tbdj4+Ml09MTAwfXdoaWxlKDApO2tbcT4+Ml09a1t2Pj4yXTt6PWtbcT4+Ml18MDtyPXk7cmV0dXJuIHp8MH1mdW5jdGlvbiBDSShhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wLG49MCxvPTAscT0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wLEU9MCxGPTAsRz0wLEg9MCxJPTAsSj0wLEs9MCxNPTAsTj0wLE89MCxQPTAsUT0wLFI9MCxTPTAsVD0wLFU9MCxYPTAsWT0wLFo9MCxfPTAsJD0wLGFhPTAsYmE9MCxjYT0wLGRhPTAsZWE9MCxmYT0wLGhhPTAsamE9MCxrYT0wLGxhPTAsbWE9MCxuYT0wLG9hPTAscGE9MCxxYT0wLHJhPTAsc2E9MCx0YT0wLHVhPTAsdmE9MCx3YT0wLHhhPTAseWE9MCx6YT0wLEFhPTAsQmE9MCxDYT0wLERhPTAsRWE9MCxGYT0wLEdhPTAsSGE9MCxJYT0wLEphPTAsS2E9MCxMYT0wLE1hPTAsTmE9MCxPYT0wLFBhPTAsUWE9MCxSYT0wLFNhPTAsVGE9MCxVYT0wLFZhPTAsV2E9MCxYYT0wLFlhPTAsWmE9MCxfYT0wLCRhPTAsYWI9MCxiYj0wLGNiPTAsZGI9MCxlYj0wLGZiPTAsZ2I9MCxoYj0wLGliPTAsamI9MCxrYj0wLGxiPTAsbWI9MCxuYj0wLG9iPTAscGI9MCxxYj0wLHJiPTAsc2I9MCx0Yj0wLHViPTAsdmI9MCx3Yj0wLHhiPTAseWI9MCx6Yj0wLEFiPTAsQmI9MCxDYj0wLERiPTAsRWI9MCxGYj0wLEdiPTAsSGI9MCxJYj0wLEpiPTAsS2I9MCxMYj0wLE1iPTAsTmI9MCxPYj0wLFBiPTAsUWI9MCxSYj0wLFNiPTAsVGI9MCxVYj0wLFZiPTAsV2I9MCxYYj0wLFpiPTAsX2I9MCxhYz0wLGRjPTAsaWM9MCxqYz0wLGtjPTAsbGM9MCxtYz0wLG5jPTAsb2M9MCxwYz0wLHFjPTAscmM9MCxzYz0wLHRjPTAsdWM9MCx2Yz0wLHdjPTAseGM9MCx5Yz0wLHpjPTAsQWM9MCxCYz0wLENjPTAsRGM9MCxFYz0wLEZjPTAsR2M9MCxIYz0wLEljPTAsSmM9MCxLYz0wLExjPTAsTWM9MCxOYz0wLE9jPTAsUGM9MCxRYz0wLFJjPTAsU2M9MCxUYz0wLFVjPTAsVmM9MCxXYz0wLFhjPTAsWWM9MCxaYz0wLF9jPTAsJGM9MCxhZD0wLGJkPTAsY2Q9MCxkZD0wLGVkPTAsZmQ9MCxnZD0wLGhkPTAsaWQ9MCxqZD0wLGtkPTAsbGQ9MCxtZD0wLG5kPTAsb2Q9MCxwZD0wLHFkPTAscmQ9MCxzZD0wLHRkPTAsdWQ9MCx2ZD0wLHdkPTAseGQ9MCx5ZD0wLHpkPTAsQWQ9MCxCZD0wLENkPTAsRGQ9MCxFZD0wLEZkPTAsR2Q9MCxIZD0wLElkPTAsSmQ9MCxLZD0wLExkPTAsTWQ9MCxOZD0wLE9kPTAsUGQ9MCxRZD0wLFJkPTAsU2Q9MCxUZD0wLFZkPTAsV2Q9MCxYZD0wLFlkPTAsWmQ9MCxfZD0wLGJlPTAsY2U9MCxkZT0wLGVlPTAsZmU9MCxnZT0wLGhlPTAsaWU9MCxrZT0wLGxlPTAsbWU9MCxuZT0wLG9lPTAscGU9MCxxZT0wLHJlPTAsc2U9MCx0ZT0wLHVlPTAsdmU9MCx3ZT0wLHhlPTAseWU9MCx6ZT0wLEFlPTAsQmU9MCxDZT0wLERlPTAsRWU9MCxGZT0wLEdlPTAsSGU9MCxJZT0wLEplPTAsS2U9MCxMZT0wLE1lPTAsTmU9MCxPZT0wLFBlPTAsUWU9MCxSZT0wLFNlPTAsVGU9MCxVZT0wLFZlPTAsV2U9MCxYZT0wLFllPTAsWmU9MCxfZT0wLCRlPTAsYWY9MCxiZj0wLGNmPTAsZGY9MCxlZj0wLGZmPTAsZ2Y9MCxoZj0wLGpmPTAsbGY9MCxtZj0wLG5mPTAsb2Y9MCxwZj0wLHFmPTAscmY9MCxzZj0wLHRmPTAsdWY9MCx2Zj0wLHdmPTAseGY9MC4wLHlmPTA7dmY9cjtyPXIrMTg3MnwwO0llPXZmKzUzNnwwO0hlPXZmKzUyOHwwO0dlPXZmKzUyMHwwO2hmPXZmKzUwNHwwO2dmPXZmKzQ5NnwwO0ZlPXZmKzQ4OHwwO0VlPXZmKzQ4MHwwO0RlPXZmKzQ3MnwwO0NlPXZmKzQ2NHwwO0JlPXZmKzQ1NnwwO0FlPXZmKzQ0MHwwO2ZmPXZmKzQzMnwwO3plPXZmKzQyNHwwO3llPXZmKzQxNnwwO3hlPXZmKzQwOHwwO3dlPXZmKzQwMHwwO3ZlPXZmKzM5MnwwO29mPXZmKzM3NnwwO25mPXZmKzM2OHwwO21mPXZmKzM2MHwwO2xmPXZmKzM1MnwwO3FmPXZmKzE2NTZ8MDtkZj12ZisxNjUyfDA7cGY9dmYrMTY0OHwwO3VmPXZmKzE2NDR8MDtyZj12ZisxNjQwfDA7ZWY9dmYrMTg2MnwwO0Y9dmYrMTg2MXwwO2NhPXZmKzE2MzZ8MDt0Zj12ZisxNjMyfDA7X2E9dmYrMTYyOHwwO2U9dmYrMTYyNHwwO0pjPXZmKzE2MjB8MDtLYz12ZisxNjE2fDA7TGM9dmYrMTYxMnwwO2RkPXZmKzE2MDh8MDtnPXZmKzE2MDR8MDtzZj12ZiszNDR8MDtiPXZmKzE2MDB8MDtTYj12ZisxNTk2fDA7Q2Q9dmYrMTU5MnwwO0JjPXZmKzE1ODh8MDtqZj12ZisxNTg0fDA7QT12ZisxNTgwfDA7ZGI9dmYrMTY3MHwwO3NkPXZmKzE1NzZ8MDtFYT12ZisxNTcyfDA7a2I9dmYrMTU2OHwwO29iPXZmKzE1NjR8MDtGYT12ZisxNTYwfDA7UmM9dmYrMTU1NnwwO089dmYrMTU1MnwwO01hPXZmKzMzNnwwO3c9dmYrMTg2MHwwO0o9dmYrMTY2OHwwO25lPXZmKzE2NjZ8MDtvZT12ZisxNjY0fDA7Xz12ZiszMjh8MDthYT12ZiszMjB8MDtLZD12ZiszMTJ8MDtMZD12ZiszMDR8MDtHYT12ZisxNTQ4fDA7ZGM9dmYrMTU0NHwwO1U9dmYrMTU0MHwwO2ljPXZmKzE1MzZ8MDskPXZmKzI5NnwwO3BlPXZmKzI4OHwwO2JhPXZmKzI4MHwwO2hiPXZmKzE4NTl8MDtNZD12ZisxNTMyfDA7UGQ9dmYrMTUyOHwwO3E9dmYrMTg1OHwwO0s9dmYrMTY2MnwwO009dmYrMTY2MHwwO0lhPXZmKzE1MjR8MDtYPXZmKzE1MjB8MDtuYj12ZisxNTE2fDA7cGI9dmYrMTUxMnwwO05jPXZmKzE1MDh8MDt1YT12ZisxNTA0fDA7VGI9dmYrMTUwMHwwO3g9dmYrMTQ5NnwwO3JlPXZmKzE0OTJ8MDtzZT12ZisxNDg4fDA7eT12ZisxNDg0fDA7cWI9dmYrMTQ4MHwwO3hiPXZmKzE0NzZ8MDtVYj12ZisxNDcyfDA7Zj12ZisxNDY4fDA7Q2E9dmYrMTQ2NHwwO1E9dmYrMTQ2MHwwO3ljPXZmKzE0NTZ8MDtlZT12ZisyNDB8MDtUZT12ZisxNDUyfDA7WWU9dmYrMTQ0OHwwO1dlPXZmKzE0NDR8MDtmYj12ZisxNDQwfDA7Z2I9dmYrMjMyfDA7dj12ZisxNDM2fDA7aWU9dmYrMTQzMnwwO2lkPXZmKzE0Mjh8MDtSZT12ZisxNDI0fDA7ej12ZisxODU3fDA7JGU9dmYrMTQyMHwwO2hkPXZmKzE0MTZ8MDtRYT12ZisyMjR8MDtXYT12ZisxNDEyfDA7TmE9dmYrMjE2fDA7YmI9dmYrMjA4fDA7YWI9dmYrMTQwOHwwO2hlPXZmKzE0MDR8MDt1Yz12ZisxNDAwfDA7UWM9dmYrMTM5NnwwO1RhPXZmKzEzOTJ8MDtTZT12ZisxMzg4fDA7ST12ZisxMzg0fDA7VD12ZisxMzgwfDA7QmE9dmYrMTM3NnwwO0RhPXZmKzEzNzJ8MDtSYT12ZisyMDB8MDtWYj12ZisxMzY4fDA7bWI9dmYrMTM2NHwwO19lPXZmKzEzNjB8MDtaYT12ZisxMzU2fDA7Y2Q9dmYrMTM1MnwwO2tkPXZmKzEzNDh8MDtvZD12ZisxMzQ0fDA7c2E9dmYrMTM0MHwwO3ZhPXZmKzEzMzZ8MDt6YT12ZisxMzMyfDA7eWE9dmYrMTMyOHwwO0M9dmYrMTMyNHwwO3JhPXZmKzEzMjB8MDt0Yj12ZisxMzE2fDA7bmE9dmYrMTMxMnwwO2thPXZmKzEzMDh8MDtvYT12ZisxMzA0fDA7ZWE9dmYrMTMwMHwwO2RhPXZmKzEyOTZ8MDt2Yz12ZisxMjkyfDA7VWE9dmYrMTI4OHwwO09jPXZmKzEyODR8MDtyYj12ZisxMjgwfDA7ZmE9dmYrMTI3NnwwO0tlPXZmKzEyNzJ8MDtBZD12ZisxMjY4fDA7bGM9dmYrMTI2NHwwO3djPXZmKzEyNjB8MDtxYz12ZisxMjU2fDA7UGM9dmYrMTI1MnwwO0RkPXZmKzEyNDh8MDtyYz12ZisxMjQ0fDA7eWI9dmYrMTI0MHwwO3NjPXZmKzEyMzZ8MDtRZD12ZisxMjMyfDA7ZWI9dmYrMTIyOHwwO3piPXZmKzEyMjR8MDtHZD12ZisxMjA4fDA7VmE9dmYrMTIwMHwwO2xhPXZmKzE5MnwwO0c9dmYrMTE5NnwwO3M9dmYrMTE5MnwwO21lPXZmKzExODh8MDt3YT12ZisxMTg0fDA7QWI9dmYrMTE4MHwwO1JkPXZmKzExNzZ8MDtHYz12ZisxMTcyfDA7SGM9dmYrMTE2OHwwO0hkPXZmKzExNTJ8MDtvPXZmKzE2NzR8MDtCYj12ZisxMTQ4fDA7V2I9dmYrMTE0NHwwO1NkPXZmKzExNDB8MDttYT12ZisxODR8MDtxZT12ZisxNzZ8MDtDYj12ZisxMTM2fDA7VGQ9dmYrMTEzMnwwO0I9dmYrMTEyOHwwO1NjPXZmKzExMjR8MDtDYz12ZisxMTIwfDA7dGM9dmYrMTExNnwwO01jPXZmKzExMTJ8MDtEYj12ZisxMTA4fDA7Z2U9dmYrMTEwNHwwO1VlPXZmKzExMDB8MDtsZD12ZisxMDk2fDA7aWI9dmYrMTA5MnwwO0xlPXZmKzE0NHwwO0ViPXZmKzEwODh8MDtWZT12ZisxMDg0fDA7bWQ9dmYrMTA4MHwwO2piPXZmKzEwNzZ8MDtGYj12ZisxMDcyfDA7VmQ9dmYrMTA2OHwwO1hhPXZmKzEwNjR8MDtHYj12ZisxMDYwfDA7SGI9dmYrMTA1NnwwO1hiPXZmKzEwNTJ8MDtIYT12ZisxMDQ4fDA7SWI9dmYrMTA0NHwwO3RlPXZmKzEzNnwwO3RkPXZmKzEwNDB8MDtYYz12ZisxMDM2fDA7SmI9dmYrMTAzMnwwO0tiPXZmKzEwMjh8MDtaYj12ZisxMDI0fDA7V2Q9dmYrMTAyMHwwO0xiPXZmKzEwMTZ8MDtfYj12ZisxMDEyfDA7WGQ9dmYrMTAwOHwwO01iPXZmKzEwMDR8MDtZZD12ZisxZTN8MDtOYj12Zis5OTZ8MDtOZT12ZisxMDR8MDtPYj12Zis5OTJ8MDthYz12Zis5ODh8MDtaZD12Zis5ODR8MDtJZD12Zis5Njh8MDtQYj12Zis5NjR8MDtuZD12Zis5NjB8MDtiZT12Zis5NnwwO1FiPXZmKzk1NnwwO19kPXZmKzk1MnwwO0pkPXZmKzkzNnwwO3BhPXZmKzkzMnwwO2hhPXZmKzkyOHwwO1BhPXZmKzkyNHwwO1JiPXZmKzkyMHwwO0VkPXZmKzkxNnwwO049dmYrOTEyfDA7eGM9dmYrOTA4fDA7amE9dmYrOTA0fDA7WmU9dmYrOTAwfDA7YWY9dmYrODk2fDA7eGE9dmYrODgwfDA7JGE9dmYrODcyfDA7bj12Zis4Njh8MDtTYT12Zis4NjR8MDtPZT12Zis4NjB8MDtGZD12Zis4NTZ8MDt1ZT12Zis4OHwwO3RhPXZmKzg1MnwwO0g9dmYrODQ4fDA7WWE9dmYrODQ0fDA7T2E9dmYrODQwfDA7amQ9dmYrODM2fDA7VGM9dmYrODMyfDA7QWM9dmYrODI4fDA7RGM9dmYrODI0fDA7ZmQ9dmYrODIwfDA7a2U9dmYrODE2fDA7RWM9dmYrODEyfDA7SWM9dmYrODA4fDA7RmM9dmYrODA0fDA7SmE9dmYrODAwfDA7amM9dmYrNzk2fDA7WT12Zis3OTJ8MDtrYz12Zis3ODh8MDtVYz12Zis3ODR8MDtsZT12Zis0OHwwO1ZjPXZmKzc4MHwwO1o9dmYrNzc2fDA7aD12Zis3NjR8MDtXYz12Zis3NjB8MDt2Yj12Zis3NTZ8MDtlZD12Zis3NTJ8MDtEPXZmKzc0OHwwO0U9dmYrNzQ0fDA7WGU9dmYrNzQwfDA7d2I9dmYrNzM2fDA7QWE9dmYrMTY3M3wwO2xiPXZmKzczMnwwO1BlPXZmKzcyOHwwO3JkPXZmKzcyNHwwO2ZlPXZmKzh8MDtiZj12Zis3MjB8MDttYz12Zis3MTZ8MDtwZD12Zis3MTJ8MDt1ZD12Zis3MDh8MDtZYz12Zis3MDR8MDtLYT12Zis3MDB8MDtxYT12Zis2OTZ8MDtaYz12Zis2OTJ8MDtnZD12Zis2ODh8MDtzYj12Zis2ODR8MDtxZD12Zis2ODB8MDt2ZD12Zis2NzZ8MDtuYz12Zis2NzJ8MDtOZD12Zis2Njh8MDtQPXZmKzY2NHwwO3Q9dmYrNjYwfDA7d2Q9dmYrNjU2fDA7X2M9dmYrNjUyfDA7emM9dmYrNjQ4fDA7ZGU9dmYrNjE2fDA7b2M9dmYrNjEyfDA7eGQ9dmYrNjA4fDA7JGM9dmYrNjA0fDA7T2Q9dmYrNjAwfDA7cGM9dmYrNTk2fDA7eWQ9dmYrNTkyfDA7YmQ9dmYrNTg4fDA7emQ9dmYrNTg0fDA7YWQ9dmYrNTgwfDA7TGE9dmYrNTc2fDA7Uj12Zis1NzJ8MDtjZT12Zjt1PXZmKzU2OHwwO0JkPXZmKzU2NHwwO0plPXZmKzE2NzJ8MDtjYj12Zis1NjB8MDt1Yj12Zis1NTZ8MDtjZj12Zis1NTJ8MDtTPXZmKzU0OHwwO01lPXZmKzU0NHwwO1FlPXZmKzU0MHwwO2tbcWY+PjJdPWE7a1tkZj4+Ml09a1soa1txZj4+Ml18MCkrODg+PjJdO2tbcGY+PjJdPWtbZGY+PjJdO2tbdWY+PjJdPTA7a1tyZj4+Ml09a1trW3FmPj4yXT4+Ml07aVtlZj4+MF09MDtpW0Y+PjBdPWlbKGtbcmY+PjJdfDApKzY2Pj4wXXwwO2tbY2E+PjJdPTA7a1t0Zj4+Ml09MDtrW19hPj4yXT0wO2tbZT4+Ml09a1soa1txZj4+Ml18MCkrOTI+PjJdO2tbSmM+PjJdPTA7a1tLYz4+Ml09MDtrW0xjPj4yXT0wO2tbZGQ+PjJdPTA7a1tnPj4yXT0wO3dmPShrW3JmPj4yXXwwKSszMnwwO2E9a1t3Zis0Pj4yXXwwO2M9c2Y7a1tjPj4yXT1rW3dmPj4yXTtrW2MrND4+Ml09YTtISShrW3FmPj4yXXwwKTthOmRvIGlmKChrWyhrW3FmPj4yXXwwKSs0MD4+Ml18MCk9PTcpZD04ODk7ZWxzZXtrWyhrW3FmPj4yXXwwKSs0MD4+Ml09MDt3Zj0oa1txZj4+Ml18MCkrNTZ8MDtrW3dmPj4yXT0wO2tbd2YrND4+Ml09MDtrWyhrW3FmPj4yXXwwKSsxMDQ+PjJdPTA7a1soa1tyZj4+Ml18MCkrMzgwKzg+PjJdPTA7YjpkbyBpZighKGtbKGtbcmY+PjJdfDApKzI0OD4+Ml18MCkpe2lmKGtbKGtbcmY+PjJdfDApKzMwND4+Ml18MCl7a1tiPj4yXT1rWyhrW3FmPj4yXXwwKSsxNTYrMTY+PjJdO2tbX2E+PjJdPShrWyhrW3JmPj4yXXwwKSszMTI+PjJdfDApLSgoKGtbYj4+Ml18MCk+Pj4wKSUoKGtbKGtbcmY+PjJdfDApKzMxMj4+Ml18MCk+Pj4wKXwwKX1rW3BmPj4yXT0oa1tkZj4+Ml18MCkrKChrWyhrW3FmPj4yXXwwKSszNj4+Ml18MCkqMjB8MCk7Yzp3aGlsZSgxKXtrW3RmPj4yXT0oa1t0Zj4+Ml18MCkrMTtkOmRvIHN3aXRjaChsW2tbcGY+PjJdPj4wXXwwKXtjYXNlIDg3OntkPTY0O2JyZWFrIGN9Y2FzZSAxOntkPTM5MzticmVhayBjfWNhc2UgMTM6e2Q9NzticmVha31jYXNlIDE0OntrW0pjPj4yXT0oa1tlPj4yXXwwKSsoKGtbKGtbcGY+PjJdfDApKzQ+PjJdfDApKjQwfDApO2pbKGtbSmM+PjJdfDApKzg+PjFdPTQ7d2Y9KChrW3BmPj4yXXwwKS0oa1tkZj4+Ml18MCl8MCkvMjB8MDtkPWtbSmM+PjJdfDA7a1tkPj4yXT13ZjtrW2QrND4+Ml09KCh3ZnwwKTwwKTw8MzE+PjMxO2Q9MTQ7YnJlYWt9Y2FzZSA3Mjp7a1tKYz4+Ml09KGtbZT4+Ml18MCkrKChrWyhrW3BmPj4yXXwwKSs0Pj4yXXwwKSo0MHwwKTtrW3BmPj4yXT0oa1tkZj4+Ml18MCkrKChrW2tbSmM+PjJdPj4yXXwwKSoyMHwwKTtqWyhrW0pjPj4yXXwwKSs4Pj4xXT0xMjg7YnJlYWt9Y2FzZSAxNTp7a1tkZD4+Ml09KGtbZT4+Ml18MCkrKChrWyhrW3BmPj4yXXwwKSs0Pj4yXXwwKSo0MHwwKTtjPShrWyhrW3BmPj4yXXwwKSsxMj4+Ml18MCktMXwwO3dmPWtbZGQ+PjJdfDA7a1t3Zj4+Ml09YztrW3dmKzQ+PjJdPSgoY3wwKTwwKTw8MzE+PjMxO2pbKGtbZGQ+PjJdfDApKzg+PjFdPTQ7aWYoa1soa1twZj4+Ml18MCkrOD4+Ml18MClkPTE0O2JyZWFrfWNhc2UgNzM6e2tbSmM+PjJdPShrW2U+PjJdfDApKygoa1soa1twZj4+Ml18MCkrND4+Ml18MCkqNDB8MCk7a1tTYj4+Ml09KGtbZGY+PjJdfDApKygoa1trW0pjPj4yXT4+Ml18MCkqMjB8MCk7a1twZj4+Ml09KGtbZGY+PjJdfDApKygoKGtbKGtbU2I+PjJdfDApKzg+PjJdfDApLTF8MCkqMjB8MCk7alsoa1tKYz4+Ml18MCkrOD4+MV09MTI4O2JyZWFrfWNhc2UgMTY6e2tbSmM+PjJdPShrW2U+PjJdfDApKygoa1soa1twZj4+Ml18MCkrND4+Ml18MCkqNDB8MCk7alsoa1tKYz4+Ml18MCkrOD4+MV09NDtrW0NkPj4yXT1rW2tbSmM+PjJdPj4yXTtjPSgoa1twZj4+Ml18MCktKGtbZGY+PjJdfDApfDApLzIwfDA7d2Y9a1tKYz4+Ml18MDtrW3dmPj4yXT1jO2tbd2YrND4+Ml09KChjfDApPDApPDwzMT4+MzE7a1twZj4+Ml09KGtbZGY+PjJdfDApKygoa1tDZD4+Ml18MCkqMjB8MCk7YnJlYWt9Y2FzZSA3NDp7a1tMYz4+Ml09KGtbZT4+Ml18MCkrKChrWyhrW3BmPj4yXXwwKSsxMj4+Ml18MCkqNDB8MCk7aWYobVsoa1tMYz4+Ml18MCkrOD4+MV0mMSlkPTIwO2JyZWFrfWNhc2UgNzU6e2Q9MjA7YnJlYWt9Y2FzZSA3Njp7Yz1NSShrW3FmPj4yXXwwLGtbcGY+PjJdfDApfDA7a1tkZD4+Ml09YztjPWtbKGtbcGY+PjJdfDApKzQ+PjJdfDA7d2Y9a1tkZD4+Ml18MDtrW3dmPj4yXT1jO2tbd2YrND4+Ml09KChjfDApPDApPDwzMT4+MzE7YnJlYWt9Y2FzZSA3Nzp7YT1NSShrW3FmPj4yXXwwLGtbcGY+PjJdfDApfDA7a1tkZD4+Ml09YTthPWtbKGtbcGY+PjJdfDApKzE2Pj4yXXwwO2M9a1thKzQ+PjJdfDA7d2Y9a1tkZD4+Ml18MDtrW3dmPj4yXT1rW2E+PjJdO2tbd2YrND4+Ml09YzticmVha31jYXNlIDEzMjp7d2Y9TUkoa1txZj4+Ml18MCxrW3BmPj4yXXwwKXwwO2tbZGQ+PjJdPXdmO2pbKGtbZGQ+PjJdfDApKzg+PjFdPTg7cFtrW2RkPj4yXT4+M109K3Bba1soa1twZj4+Ml18MCkrMTY+PjJdPj4zXTticmVha31jYXNlIDk3Ont3Zj1NSShrW3FmPj4yXXwwLGtbcGY+PjJdfDApfDA7a1tkZD4+Ml09d2Y7aVtrW3BmPj4yXT4+MF09Nzg7d2Y9VGYoa1soa1twZj4+Ml18MCkrMTY+PjJdfDApfDA7a1soa1twZj4+Ml18MCkrND4+Ml09d2Y7aWYoKGxbRj4+MF18MCkhPTEpe3dmPXFoKGtbZGQ+PjJdfDAsa1soa1twZj4+Ml18MCkrMTY+PjJdfDAsLTEsMSwwKXwwO2tbdWY+PjJdPXdmO2lmKHN1KGtbZGQ+PjJdfDAsbFtGPj4wXXwwKXwwKXtkPTg4OTticmVhayBhfWtbKGtbZGQ+PjJdfDApKzI0Pj4yXT0wO3dmPShrW2RkPj4yXXwwKSs4fDA7alt3Zj4+MV09bVt3Zj4+MV18MjA0ODtpZigoaVsoa1twZj4+Ml18MCkrMT4+MF18MCk9PS0xKWJnKGtbcmY+PjJdfDAsa1soa1twZj4+Ml18MCkrMTY+PjJdfDApO2lbKGtbcGY+PjJdfDApKzE+PjBdPS0xO2tbKGtbcGY+PjJdfDApKzE2Pj4yXT1rWyhrW2RkPj4yXXwwKSsxNj4+Ml07a1soa1twZj4+Ml18MCkrND4+Ml09a1soa1tkZD4+Ml18MCkrMTI+PjJdfWlmKChrWyhrW3BmPj4yXXwwKSs0Pj4yXXwwKT4oa1soa1tyZj4+Ml18MCkrOTY+PjJdfDApKXtkPTg4ODticmVhayBjfWVsc2UgZD00MzticmVha31jYXNlIDc4OntkPTQzO2JyZWFrfWNhc2UgNzk6e3dmPU1JKGtbcWY+PjJdfDAsa1twZj4+Ml18MCl8MDtrW2RkPj4yXT13ZjtrW0E+PjJdPShrWyhrW3BmPj4yXXwwKSsxMj4+Ml18MCktKGtbKGtbcGY+PjJdfDApKzg+PjJdfDApO3dmPSgoa1soa1twZj4+Ml18MCkrND4+Ml18MCkhPTA/MjU3OjEpJjY1NTM1O2pbZGI+PjFdPXdmO2pbKGtbZGQ+PjJdfDApKzg+PjFdPXdmO2tbKGtbZGQ+PjJdfDApKzEyPj4yXT0wO3doaWxlKDEpe2lmKChrW0E+PjJdfDApPD0wKWJyZWFrIGQ7a1tkZD4+Ml09KGtbZGQ+PjJdfDApKzQwO3NoKGtbZGQ+PjJdfDApO2pbKGtbZGQ+PjJdfDApKzg+PjFdPWpbZGI+PjFdfDA7a1soa1tkZD4+Ml18MCkrMTI+PjJdPTA7a1tBPj4yXT0oa1tBPj4yXXwwKSstMX19Y2FzZSA4MDp7a1tkZD4+Ml09KGtbZT4+Ml18MCkrKChrWyhrW3BmPj4yXXwwKSs0Pj4yXXwwKSo0MHwwKTtqWyhrW2RkPj4yXXwwKSs4Pj4xXT0obVsoa1tkZD4+Ml18MCkrOD4+MV18MSkmLTEyOTticmVha31jYXNlIDgxOnt3Zj1NSShrW3FmPj4yXXwwLGtbcGY+PjJdfDApfDA7a1tkZD4+Ml09d2Y7cWgoa1tkZD4+Ml18MCxrWyhrW3BmPj4yXXwwKSsxNj4+Ml18MCxrWyhrW3BmPj4yXXwwKSs0Pj4yXXwwLDAsMCl8MDtpWyhrW2RkPj4yXXwwKSsxMD4+MF09aVtGPj4wXXwwO2JyZWFrfWNhc2UgODI6e2tbc2Q+PjJdPShrWyhrW3FmPj4yXXwwKSsxMTY+PjJdfDApKygoKGtbKGtbcGY+PjJdfDApKzQ+PjJdfDApLTF8MCkqNDB8MCk7aWYoTkkoa1tzZD4+Ml18MCl8MCl7ZD04ODg7YnJlYWsgY313Zj1NSShrW3FmPj4yXXwwLGtbcGY+PjJdfDApfDA7a1tkZD4+Ml09d2Y7dUcoa1tkZD4+Ml18MCxrW3NkPj4yXXwwLDIwNDgpO2JyZWFrfWNhc2UgODM6e2tbRWE+PjJdPWtbKGtbcGY+PjJdfDApKzEyPj4yXTtrW2tiPj4yXT1rWyhrW3BmPj4yXXwwKSs0Pj4yXTtrW29iPj4yXT1rWyhrW3BmPj4yXXwwKSs4Pj4yXTtrW0pjPj4yXT0oa1tlPj4yXXwwKSsoKGtba2I+PjJdfDApKjQwfDApO2tbZGQ+PjJdPShrW2U+PjJdfDApKygoa1tvYj4+Ml18MCkqNDB8MCk7ZG97d0koa1tkZD4+Ml18MCxrW0pjPj4yXXwwKTtpZigobVsoa1tkZD4+Ml18MCkrOD4+MV0mNDA5NnwwKSE9MD8obGgoa1tkZD4+Ml18MCl8MCkhPTA6MCl7ZD04ODk7YnJlYWsgYX1rW0pjPj4yXT0oa1tKYz4+Ml18MCkrNDA7a1tkZD4+Ml09KGtbZGQ+PjJdfDApKzQwO3dmPShrW0VhPj4yXXwwKSstMXwwO2tbRWE+PjJdPXdmfXdoaWxlKCh3ZnwwKSE9MCk7YnJlYWt9Y2FzZSA4NDp7a1tGYT4+Ml09a1soa1twZj4+Ml18MCkrMTI+PjJdO2tbSmM+PjJdPShrW2U+PjJdfDApKygoa1soa1twZj4+Ml18MCkrND4+Ml18MCkqNDB8MCk7a1tkZD4+Ml09KGtbZT4+Ml18MCkrKChrWyhrW3BmPj4yXXwwKSs4Pj4yXXwwKSo0MHwwKTt3aGlsZSgxKXt1RyhrW2RkPj4yXXwwLGtbSmM+PjJdfDAsNDA5Nik7aWYoKG1bKGtbZGQ+PjJdfDApKzg+PjFdJjQwOTZ8MCkhPTA/KGxoKGtbZGQ+PjJdfDApfDApIT0wOjApe2Q9ODg5O2JyZWFrIGF9d2Y9a1tGYT4+Ml18MDtrW0ZhPj4yXT13ZistMTtpZighd2YpYnJlYWsgZDtrW2RkPj4yXT0oa1tkZD4+Ml18MCkrNDA7a1tKYz4+Ml09KGtbSmM+PjJdfDApKzQwfX1jYXNlIDg1OntrW0pjPj4yXT0oa1tlPj4yXXwwKSsoKGtbKGtbcGY+PjJdfDApKzQ+PjJdfDApKjQwfDApO2tbZGQ+PjJdPShrW2U+PjJdfDApKygoa1soa1twZj4+Ml18MCkrOD4+Ml18MCkqNDB8MCk7dUcoa1tkZD4+Ml18MCxrW0pjPj4yXXwwLDQwOTYpO2JyZWFrfWNhc2UgODY6e2tbSmM+PjJdPShrW2U+PjJdfDApKygoa1soa1twZj4+Ml18MCkrND4+Ml18MCkqNDB8MCk7a1tkZD4+Ml09KGtbZT4+Ml18MCkrKChrWyhrW3BmPj4yXXwwKSs4Pj4yXXwwKSo0MHwwKTt3Zj1rW0pjPj4yXXwwO3JoKGtbZGQ+PjJdfDAsa1t3Zj4+Ml18MCxrW3dmKzQ+PjJdfDApO2JyZWFrfWNhc2UgNTI6e2tbSmM+PjJdPShrW2U+PjJdfDApKygoa1soa1twZj4+Ml18MCkrND4+Ml18MCkqNDB8MCk7a1tLYz4+Ml09KGtbZT4+Ml18MCkrKChrWyhrW3BmPj4yXXwwKSs4Pj4yXXwwKSo0MHwwKTtrW2RkPj4yXT0oa1tlPj4yXXwwKSsoKGtbKGtbcGY+PjJdfDApKzEyPj4yXXwwKSo0MHwwKTtpZigobVsoa1tKYz4+Ml18MCkrOD4+MV18bVsoa1tLYz4+Ml18MCkrOD4+MV0pJjEpe3NoKGtbZGQ+PjJdfDApO2JyZWFrIGR9aWYoKG1bKGtbSmM+PjJdfDApKzg+PjFdJjE2Mzg0fDApIT0wPyhnaChrW0pjPj4yXXwwKXwwKSE9MDowKXtkPTg4OTticmVhayBhfWlmKChtWyhrW0tjPj4yXXwwKSs4Pj4xXSYxNjM4NHwwKSE9MD8oZ2goa1tLYz4+Ml18MCl8MCkhPTA6MCl7ZD04ODk7YnJlYWsgYX1pZigobVsoa1tKYz4+Ml18MCkrOD4+MV0mMTh8MCk9PTA/KFd4KGtbSmM+PjJdfDAsaVtGPj4wXXwwLDApfDApIT0wOjApe2Q9ODg5O2JyZWFrIGF9aWYoKG1bKGtbS2M+PjJdfDApKzg+PjFdJjE4fDApPT0wPyhXeChrW0tjPj4yXXwwLGlbRj4+MF18MCwwKXwwKSE9MDowKXtkPTg4OTticmVhayBhfWI9KGtbKGtbSmM+PjJdfDApKzEyPj4yXXwwKSsoa1soa1tLYz4+Ml18MCkrMTI+PjJdfDApfDA7Yz1NYTtrW2M+PjJdPWI7a1tjKzQ+PjJdPSgoYnwwKTwwKTw8MzE+PjMxO2M9TWE7Yj1rW2MrND4+Ml18MDt3Zj1rWyhrW3JmPj4yXXwwKSs5Nj4+Ml18MDthPSgod2Z8MCk8MCk8PDMxPj4zMTtpZigoYnwwKT4oYXwwKXwoKGJ8MCk9PShhfDApPyhrW2M+PjJdfDApPj4+MD53Zj4+PjA6MCkpe2Q9ODg4O2JyZWFrIGN9aWYoWXgoa1tkZD4+Ml18MCwoa1tNYT4+Ml18MCkrMnwwLChrW2RkPj4yXXwwKT09KGtbS2M+PjJdfDApJjEpfDApe2Q9ODg5O2JyZWFrIGF9alsoa1tkZD4+Ml18MCkrOD4+MV09bVsoa1tkZD4+Ml18MCkrOD4+MV0mLTQ5NjY0fDI7aWYoKGtbZGQ+PjJdfDApIT0oa1tLYz4+Ml18MCkpYlMoa1soa1tkZD4+Ml18MCkrMTY+PjJdfDAsa1soa1tLYz4+Ml18MCkrMTY+PjJdfDAsa1soa1tLYz4+Ml18MCkrMTI+PjJdfDApfDA7YlMoKGtbKGtbZGQ+PjJdfDApKzE2Pj4yXXwwKSsoa1soa1tLYz4+Ml18MCkrMTI+PjJdfDApfDAsa1soa1tKYz4+Ml18MCkrMTY+PjJdfDAsa1soa1tKYz4+Ml18MCkrMTI+PjJdfDApfDA7aVsoa1soa1tkZD4+Ml18MCkrMTY+PjJdfDApKyhrW01hPj4yXXwwKT4+MF09MDt3Zj1NYTt3Zj0kUihrW3dmPj4yXXwwLGtbd2YrND4+Ml18MCwxLDApfDA7aVsoa1soa1tkZD4+Ml18MCkrMTY+PjJdfDApK3dmPj4wXT0wO3dmPShrW2RkPj4yXXwwKSs4fDA7alt3Zj4+MV09bVt3Zj4+MV18NTEyO2tbKGtbZGQ+PjJdfDApKzEyPj4yXT1rW01hPj4yXTtpWyhrW2RkPj4yXXwwKSsxMD4+MF09aVtGPj4wXXwwO2JyZWFrfWNhc2UgNTE6Y2FzZSA1MDpjYXNlIDQ5OmNhc2UgNDg6Y2FzZSA0Nzp7a1tKYz4+Ml09KGtbZT4+Ml18MCkrKChrWyhrW3BmPj4yXXwwKSs0Pj4yXXwwKSo0MHwwKTt3Zj1SSShrW0pjPj4yXXwwKXwwO2pbbmU+PjFdPXdmO2tbS2M+PjJdPShrW2U+PjJdfDApKygoa1soa1twZj4+Ml18MCkrOD4+Ml18MCkqNDB8MCk7d2Y9Ukkoa1tLYz4+Ml18MCl8MDtqW29lPj4xXT13ZjtrW2RkPj4yXT0oa1tlPj4yXXwwKSsoKGtbKGtbcGY+PjJdfDApKzEyPj4yXXwwKSo0MHwwKTtqW0o+PjFdPW1bKGtbSmM+PjJdfDApKzg+PjFdfG1bKGtbS2M+PjJdfDApKzg+PjFdO2U6ZG8gaWYoIShtW0o+PjFdJjEpKXtmOmRvIGlmKG1bbmU+PjFdJm1bb2U+PjFdJjQpe3dmPWtbSmM+PjJdfDA7Yz1rW3dmKzQ+PjJdfDA7YT1fO2tbYT4+Ml09a1t3Zj4+Ml07a1thKzQ+PjJdPWM7YT1rW0tjPj4yXXwwO2M9a1thKzQ+PjJdfDA7d2Y9YWE7a1t3Zj4+Ml09a1thPj4yXTtrW3dmKzQ+PjJdPWM7aVt3Pj4wXT0xO3N3aXRjaChsW2tbcGY+PjJdPj4wXXwwKXtjYXNlIDQ3Ont3Zj1fO2lmKFNJKGFhLGtbd2Y+PjJdfDAsa1t3Zis0Pj4yXXwwKXwwKWJyZWFrIGY7YnJlYWt9Y2FzZSA0ODp7d2Y9XztpZihUSShhYSxrW3dmPj4yXXwwLGtbd2YrND4+Ml18MCl8MClicmVhayBmO2JyZWFrfWNhc2UgNDk6e3dmPV87aWYoVUkoYWEsa1t3Zj4+Ml18MCxrW3dmKzQ+PjJdfDApfDApYnJlYWsgZjticmVha31jYXNlIDUwOnt3Zj1fO2lmKChrW3dmPj4yXXwwKT09MCYoa1t3Zis0Pj4yXXwwKT09MClicmVhayBlO2M9Xzt3Zj1hYTtpZigoKGtbYz4+Ml18MCk9PS0xPyhrW2MrND4+Ml18MCk9PS0xOjApJigoa1t3Zj4+Ml18MCk9PTA/KGtbd2YrND4+Ml18MCk9PS0yMTQ3NDgzNjQ4OjApKWJyZWFrIGY7Yz1fO3dmPWFhO2M9aVMoa1t3Zj4+Ml18MCxrW3dmKzQ+PjJdfDAsa1tjPj4yXXwwLGtbYys0Pj4yXXwwKXwwO3dmPWFhO2tbd2Y+PjJdPWM7a1t3Zis0Pj4yXT1MO2JyZWFrfWRlZmF1bHQ6e3dmPV87aWYoKGtbd2Y+PjJdfDApPT0wJihrW3dmKzQ+PjJdfDApPT0wKWJyZWFrIGU7d2Y9XztpZigoa1t3Zj4+Ml18MCk9PS0xPyhrW3dmKzQ+PjJdfDApPT0tMTowKXt3Zj1fO2tbd2Y+PjJdPTE7a1t3Zis0Pj4yXT0wfWM9Xzt3Zj1hYTtjPWpTKGtbd2Y+PjJdfDAsa1t3Zis0Pj4yXXwwLGtbYz4+Ml18MCxrW2MrND4+Ml18MCl8MDt3Zj1hYTtrW3dmPj4yXT1jO2tbd2YrND4+Ml09TH19YT1hYTtjPWtbYSs0Pj4yXXwwO3dmPWtbZGQ+PjJdfDA7a1t3Zj4+Ml09a1thPj4yXTtrW3dmKzQ+PjJdPWM7alsoa1tkZD4+Ml18MCkrOD4+MV09bVsoa1tkZD4+Ml18MCkrOD4+MV0mLTQ5NjY0fDQ7YnJlYWsgZH1lbHNlIGlbdz4+MF09MDt3aGlsZSgwKTt4Zj0ramgoa1tKYz4+Ml18MCk7cFtLZD4+M109eGY7eGY9K2poKGtbS2M+PjJdfDApO3BbTGQ+PjNdPXhmO3N3aXRjaChsW2tbcGY+PjJdPj4wXXwwKXtjYXNlIDQ3OntwW0xkPj4zXT0rcFtMZD4+M10rICtwW0tkPj4zXTticmVha31jYXNlIDQ4OntwW0xkPj4zXT0rcFtMZD4+M10tK3BbS2Q+PjNdO2JyZWFrfWNhc2UgNDk6e3BbTGQ+PjNdPStwW0xkPj4zXSorcFtLZD4+M107YnJlYWt9Y2FzZSA1MDp7aWYoK3BbS2Q+PjNdPT0wLjApYnJlYWsgZTtwW0xkPj4zXT0rcFtMZD4+M10vK3BbS2Q+PjNdO2JyZWFrfWRlZmF1bHQ6e3hmPStwW0tkPj4zXTt3Zj0rVyh4Zik+PTEuMD8oeGY+MC4wP35+K2lhKCtWKHhmLzQyOTQ5NjcyOTYuMCksNDI5NDk2NzI5NS4wKT4+PjA6fn4rZ2EoKHhmLSsofn54Zj4+PjApKS80Mjk0OTY3Mjk2LjApPj4+MCk6MDtjPV87a1tjPj4yXT1+fnhmPj4+MDtrW2MrND4+Ml09d2Y7eGY9K3BbTGQ+PjNdO2M9K1coeGYpPj0xLjA/KHhmPjAuMD9+fitpYSgrVih4Zi80Mjk0OTY3Mjk2LjApLDQyOTQ5NjcyOTUuMCk+Pj4wOn5+K2dhKCh4Zi0rKH5+eGY+Pj4wKSkvNDI5NDk2NzI5Ni4wKT4+PjApOjA7d2Y9YWE7a1t3Zj4+Ml09fn54Zj4+PjA7a1t3Zis0Pj4yXT1jO3dmPV87aWYoKGtbd2Y+PjJdfDApPT0wJihrW3dmKzQ+PjJdfDApPT0wKWJyZWFrIGU7d2Y9XztpZigoa1t3Zj4+Ml18MCk9PS0xPyhrW3dmKzQ+PjJdfDApPT0tMTowKXt3Zj1fO2tbd2Y+PjJdPTE7a1t3Zis0Pj4yXT0wfWM9YWE7d2Y9Xzt3Zj1qUyhrW2M+PjJdfDAsa1tjKzQ+PjJdfDAsa1t3Zj4+Ml18MCxrW3dmKzQ+PjJdfDApfDA7cFtMZD4+M109Kyh3Zj4+PjApKzQyOTQ5NjcyOTYuMCorKEx8MCl9fWlmKCEoQUcoK3BbTGQ+PjNdKXwwKSl7cFtrW2RkPj4yXT4+M109K3BbTGQ+PjNdO2pbKGtbZGQ+PjJdfDApKzg+PjFdPW1bKGtbZGQ+PjJdfDApKzg+PjFdJi00OTY2NHw4O2lmKChpW3c+PjBdfDApIT0wPzE6KChtW25lPj4xXXxtW29lPj4xXSkmOHwwKSE9MClicmVhayBkO1R4KGtbZGQ+PjJdfDApO2JyZWFrIGR9fXdoaWxlKDApO3NoKGtbZGQ+PjJdfDApO2JyZWFrfWNhc2UgODg6e2lmKGtbKGtbcGY+PjJdfDApKzQ+PjJdfDApcmgoKGtbZT4+Ml18MCkrKChrWyhrW3BmPj4yXXwwKSs0Pj4yXXwwKSo0MHwwKXwwLDAsMCk7YnJlYWt9Y2FzZSA4OTp7a1tHYT4+Ml09bFsoa1twZj4+Ml18MCkrMz4+MF07d2Y9ZHgoa1tyZj4+Ml18MCwzMisoKGtbR2E+PjJdfDApLTE8PDIpfDAsMCl8MDtrW2RjPj4yXT13ZjtpZighKGtbZGM+PjJdfDApKXtkPTg4OTticmVhayBhfWtba1tkYz4+Ml0+PjJdPTA7a1soa1tkYz4+Ml18MCkrND4+Ml09a1soa1twZj4+Ml18MCkrMTY+PjJdO2tbKGtbZGM+PjJdfDApKzE2Pj4yXT0oKGtbcGY+PjJdfDApLShrW2RmPj4yXXwwKXwwKS8yMHwwO2tbKGtbZGM+PjJdfDApKzEyPj4yXT1rW3FmPj4yXTtpWyhrW2RjPj4yXXwwKSsyNj4+MF09a1tHYT4+Ml07aVsoa1twZj4+Ml18MCkrMT4+MF09LTIxO2tbKGtbcGY+PjJdfDApKzE2Pj4yXT1rW2RjPj4yXTtpW2tbcGY+PjJdPj4wXT05MDtkPTEyNjticmVha31jYXNlIDkwOntkPTEyNjticmVha31jYXNlIDQ2OmNhc2UgNDU6Y2FzZSA0NDpjYXNlIDQzOntrW0pjPj4yXT0oa1tlPj4yXXwwKSsoKGtbKGtbcGY+PjJdfDApKzQ+PjJdfDApKjQwfDApO2tbS2M+PjJdPShrW2U+PjJdfDApKygoa1soa1twZj4+Ml18MCkrOD4+Ml18MCkqNDB8MCk7a1tkZD4+Ml09KGtbZT4+Ml18MCkrKChrWyhrW3BmPj4yXXwwKSsxMj4+Ml18MCkqNDB8MCk7aWYoKG1bKGtbSmM+PjJdfDApKzg+PjFdfG1bKGtbS2M+PjJdfDApKzg+PjFdKSYxKXtzaChrW2RkPj4yXXwwKTticmVhayBkfXdmPWtoKGtbS2M+PjJdfDApfDA7Yz0kO2tbYz4+Ml09d2Y7a1tjKzQ+PjJdPUw7Yz1raChrW0pjPj4yXXwwKXwwO3dmPWJhO2tbd2Y+PjJdPWM7a1t3Zis0Pj4yXT1MO2lbaGI+PjBdPWlba1twZj4+Ml0+PjBdfDA7ZG8gaWYoKGxbaGI+PjBdfDApIT00Myl7YT1iYTtiPWtbYT4+Ml18MDthPWtbYSs0Pj4yXXwwO2lmKChsW2hiPj4wXXwwKT09NDQpe3lmPSQ7Yz1rW3lmKzQ+PjJdfGE7d2Y9JDtrW3dmPj4yXT1rW3lmPj4yXXxiO2tbd2YrND4+Ml09YzticmVha31pZigoYnwwKSE9MHwoYXwwKSE9MCl7aWYoKGtbYmErND4+Ml18MCk8MCl7aVtoYj4+MF09OTEtKGxbaGI+PjBdfDApO3dmPWJhO2M9a1t3Zis0Pj4yXXwwO3dmPShjfDApPi0xfChjfDApPT0tMSYoa1t3Zj4+Ml18MCk+Pj4wPjQyOTQ5NjcyMzI7Yz1iYTtjPV9SKDAsMCxrW2M+PjJdfDAsa1tjKzQ+PjJdfDApfDA7eWY9YmE7a1t5Zj4+Ml09d2Y/Yzo2NDtrW3lmKzQ+PjJdPXdmP0w6MH15Zj1iYTt3Zj1rW3lmKzQ+PjJdfDA7aWYoKHdmfDApPjB8KHdmfDApPT0wJihrW3lmPj4yXXwwKT4+PjA+PTY0KXt5Zj0kO3dmPWtbeWYrND4+Ml18MDtpZigod2Z8MCk+MHwod2Z8MCk9PTAmKGtbeWY+PjJdfDApPj4+MD49MCliPTE7ZWxzZSBiPShsW2hiPj4wXXwwKT09NDU7d2Y9Yj8wOi0xO3lmPSQ7a1t5Zj4+Ml09d2Y7a1t5Zis0Pj4yXT0oKHdmfDApPDApPDwzMT4+MzE7YnJlYWt9O2tbcGU+PjJdPWtbJD4+Ml07a1twZSs0Pj4yXT1rWyQrND4+Ml07Yj1rW2JhPj4yXXwwO2M9cGU7YT1rW2M+PjJdfDA7Yz1rW2MrND4+Ml18MDtpZigobFtoYj4+MF18MCkhPTQ1KXt3Zj1hUyhhfDAsY3wwLGJ8MCl8MDt5Zj1wZTtrW3lmPj4yXT13ZjtrW3lmKzQ+PjJdPUw7aWYoKGtbJCs0Pj4yXXwwKTwwKXtjPWJhO2M9X1IoNjQsMCxrW2M+PjJdfDAsa1tjKzQ+PjJdfDApfDA7Yz1lUygtMSwtMSxjfDApfDA7YT1wZTt3Zj1rW2ErND4+Ml18TDt5Zj1wZTtrW3lmPj4yXT1rW2E+PjJdfGM7a1t5Zis0Pj4yXT13Zn19ZWxzZXt3Zj1lUyhhfDAsY3wwLGJ8MCl8MDt5Zj1wZTtrW3lmPj4yXT13ZjtrW3lmKzQ+PjJdPUx9O2tbJD4+Ml09a1twZT4+Ml07a1skKzQ+PjJdPWtbcGUrND4+Ml19fWVsc2V7Yz1iYTthPSQ7d2Y9a1thKzQ+PjJdJmtbYys0Pj4yXTt5Zj0kO2tbeWY+PjJdPWtbYT4+Ml0ma1tjPj4yXTtrW3lmKzQ+PjJdPXdmfXdoaWxlKDApO2M9JDt3Zj1rW2MrND4+Ml18MDt5Zj1rW2RkPj4yXXwwO2tbeWY+PjJdPWtbYz4+Ml07a1t5Zis0Pj4yXT13ZjtqWyhrW2RkPj4yXXwwKSs4Pj4xXT1tWyhrW2RkPj4yXXwwKSs4Pj4xXSYtNDk2NjR8NDticmVha31jYXNlIDkxOntrW0pjPj4yXT0oa1tlPj4yXXwwKSsoKGtbKGtbcGY+PjJdfDApKzQ+PjJdfDApKjQwfDApO194KGtbSmM+PjJdfDApfDA7d2Y9a1soa1twZj4+Ml18MCkrOD4+Ml18MDt5Zj1rW0pjPj4yXXwwO2M9eWY7d2Y9JFIoa1tjPj4yXXwwLGtbYys0Pj4yXXwwLHdmfDAsKCh3ZnwwKTwwKTw8MzE+PjMxfDApfDA7a1t5Zj4+Ml09d2Y7a1t5Zis0Pj4yXT1MO2JyZWFrfWNhc2UgMTc6e2tbSmM+PjJdPShrW2U+PjJdfDApKygoa1soa1twZj4+Ml18MCkrND4+Ml18MCkqNDB8MCk7aWYoKG1bKGtbSmM+PjJdfDApKzg+PjFdJjR8MCk9PTA/KFZ4KGtbSmM+PjJdfDAsNjcsaVtGPj4wXXwwKSwobVsoa1tKYz4+Ml18MCkrOD4+MV0mNHwwKT09MCk6MClpZighKGtbKGtbcGY+PjJdfDApKzg+PjJdfDApKXtkPTE1OTticmVhayBjfWVsc2V7ZD0xNDticmVhayBkfWpbKGtbSmM+PjJdfDApKzg+PjFdPW1bKGtbSmM+PjJdfDApKzg+PjFdJi00OTY2NHw0O2JyZWFrfWNhc2UgOTI6e2tbSmM+PjJdPShrW2U+PjJdfDApKygoa1soa1twZj4+Ml18MCkrND4+Ml18MCkqNDB8MCk7aWYobVsoa1tKYz4+Ml18MCkrOD4+MV0mNCkkeChrW0pjPj4yXXwwKXwwO2JyZWFrfWNhc2UgOTM6e2tbSmM+PjJdPShrW2U+PjJdfDApKygoa1soa1twZj4+Ml18MCkrND4+Ml18MCkqNDB8MCk7aWYobVsoa1tKYz4+Ml18MCkrOD4+MV0mMTYzODQpYj1naChrW0pjPj4yXXwwKXwwO2Vsc2UgYj0wO2tbdWY+PjJdPWI7T3goa1tKYz4+Ml18MCxrWyhrW3BmPj4yXXwwKSs4Pj4yXSYyNTUsaVtGPj4wXXwwKTtpZihrW3VmPj4yXXwwKWJyZWFrIGE7YnJlYWt9Y2FzZSA0MTpjYXNlIDM4OmNhc2UgMzk6Y2FzZSA0MDpjYXNlIDM2OmNhc2UgMzc6e2tbSmM+PjJdPShrW2U+PjJdfDApKygoa1soa1twZj4+Ml18MCkrND4+Ml18MCkqNDB8MCk7a1tMYz4+Ml09KGtbZT4+Ml18MCkrKChrWyhrW3BmPj4yXXwwKSsxMj4+Ml18MCkqNDB8MCk7altLPj4xXT1qWyhrW0pjPj4yXXwwKSs4Pj4xXXwwO2pbTT4+MV09alsoa1tMYz4+Ml18MCkrOD4+MV18MDtiPWxbKGtbcGY+PjJdfDApKzM+PjBdfDA7ZG8gaWYoKG1bSz4+MV18bVtNPj4xXSkmMSl7aWYoIShiJjEyOCkpe2I9a1twZj4+Ml18MDtpZighKGxbKGtbcGY+PjJdfDApKzM+PjBdJjMyKSlpZihsW2IrMz4+MF0mMTYpe2Q9MTQ7YnJlYWsgZH1lbHNlIGJyZWFrIGQ7ZWxzZXtrW2RkPj4yXT0oa1tlPj4yXXwwKSsoKGtbYis4Pj4yXXwwKSo0MHwwKTtrW2NhPj4yXT0xO2pbKGtbZGQ+PjJdfDApKzg+PjFdPW1bKGtbZGQ+PjJdfDApKzg+PjFdJi00OTY2NHwxO2JyZWFrIGR9fWlmKCgobVtLPj4xXSYxfDApIT0wPyhtW00+PjFdJjF8MCkhPTA6MCk/KG1bTT4+MV0mMjU2fDApPT0wOjApe2tbTWQ+PjJdPTA7YnJlYWt9a1tNZD4+Ml09MX1lbHNle2lbcT4+MF09YiY3MTtpZigoaVtxPj4wXXwwKT49Njcpe2lmKChtW0s+PjFdfG1bTT4+MV0pJjIpe2lmKChtW0s+PjFdJjE0fDApPT0yKXtMaChrW0pjPj4yXXwwLDApO2pbTT4+MV09alsoa1tMYz4+Ml18MCkrOD4+MV18MH1pZigobVtNPj4xXSYxNHwwKT09MilMaChrW0xjPj4yXXwwLDApfWlmKG1bKGtbSmM+PjJdfDApKzg+PjFdJm1bKGtbTGM+PjJdfDApKzg+PjFdJjQpe3dmPWtbTGM+PjJdfDA7YT1rW3dmKzQ+PjJdfDA7eWY9a1tKYz4+Ml18MDtjPWtbeWYrND4+Ml18MDtpZigoYXwwKT4oY3wwKXwoKGF8MCk9PShjfDApPyhrW3dmPj4yXXwwKT4+PjA+KGtbeWY+PjJdfDApPj4+MDowKSl7a1tNZD4+Ml09MTticmVha313Zj1rW0xjPj4yXXwwO2E9a1t3Zis0Pj4yXXwwO3lmPWtbSmM+PjJdfDA7Yz1rW3lmKzQ+PjJdfDA7aWYoKGF8MCk8KGN8MCl8KChhfDApPT0oY3wwKT8oa1t3Zj4+Ml18MCk+Pj4wPChrW3lmPj4yXXwwKT4+PjA6MCkpe2tbTWQ+PjJdPS0xO2JyZWFrfWVsc2V7a1tNZD4+Ml09MDticmVha319fWVsc2UgaWYoKGlbcT4+MF18MCk9PTY2KXtpZigobVtLPj4xXSYyfDApPT0wPyhtW0s+PjFdJjEyfDApIT0wOjApe1d4KGtbSmM+PjJdfDAsaVtGPj4wXXwwLDEpfDA7altLPj4xXT1tWyhrW0pjPj4yXXwwKSs4Pj4xXSYtMzMyODB8bVtLPj4xXSYzMzI3OX1pZigobVtNPj4xXSYyfDApPT0wPyhtW00+PjFdJjEyfDApIT0wOjApe1d4KGtbTGM+PjJdfDAsaVtGPj4wXXwwLDEpfDA7altNPj4xXT1tWyhrW0xjPj4yXXwwKSs4Pj4xXSYtMzMyODB8bVtNPj4xXSYzMzI3OX19eWY9V0koa1tMYz4+Ml18MCxrW0pjPj4yXXwwLGtbKGtbcGY+PjJdfDApKzE2Pj4yXXwwKXwwO2tbTWQ+PjJdPXlmfXdoaWxlKDApO3N3aXRjaChsW2tbcGY+PjJdPj4wXXwwKXtjYXNlIDM3OntrW1BkPj4yXT0oa1tNZD4+Ml18MCk9PTAmMTticmVha31jYXNlIDM2OntrW1BkPj4yXT1rW01kPj4yXTticmVha31jYXNlIDQwOntrW1BkPj4yXT0oa1tNZD4+Ml18MCk8MCYxO2JyZWFrfWNhc2UgMzk6e2tbUGQ+PjJdPShrW01kPj4yXXwwKTw9MCYxO2JyZWFrfWNhc2UgMzg6e2tbUGQ+PjJdPShrW01kPj4yXXwwKT4wJjE7YnJlYWt9ZGVmYXVsdDprW1BkPj4yXT0oa1tNZD4+Ml18MCk+PTAmMX1qWyhrW0pjPj4yXXwwKSs4Pj4xXT1qW0s+PjFdfDA7alsoa1tMYz4+Ml18MCkrOD4+MV09altNPj4xXXwwO2lmKCEobFsoa1twZj4+Ml18MCkrMz4+MF0mMzIpKWlmKGtbUGQ+PjJdfDApe2Q9MTQ7YnJlYWsgZH1lbHNlIGJyZWFrIGQ7a1tkZD4+Ml09KGtbZT4+Ml18MCkrKChrWyhrW3BmPj4yXXwwKSs4Pj4yXXwwKSo0MHwwKTtrW2NhPj4yXT1rW01kPj4yXTtrW1BkPj4yXT0oa1tQZD4+Ml18MCkhPTAmMTtpZigobFsoa1twZj4+Ml18MCkrMz4+MF0mOHwwKSE9MD8oKGxba1twZj4+Ml0+PjBdfDApPT0zN3wwKT09KGtbUGQ+PjJdfDApOjApYnJlYWsgZDtqWyhrW2RkPj4yXXwwKSs4Pj4xXT1tWyhrW2RkPj4yXXwwKSs4Pj4xXSYtNDk2NjR8NDt3Zj1rW1BkPj4yXXwwO3lmPWtbZGQ+PjJdfDA7a1t5Zj4+Ml09d2Y7a1t5Zis0Pj4yXT0oKHdmfDApPDApPDwzMT4+MzE7YnJlYWt9Y2FzZSA0Mjp7aWYoa1tjYT4+Ml18MClkPTE0O2JyZWFrfWNhc2UgOTQ6e2tbZz4+Ml09KGtbKGtbcGY+PjJdfDApKzE2Pj4yXXwwKSs0O2JyZWFrfWNhc2UgOTU6e2lmKCEobFsoa1twZj4+Ml18MCkrMz4+MF0mMSkpa1tnPj4yXT0wO2tbSWE+PjJdPWtbKGtbcGY+PjJdfDApKzEyPj4yXTtrW05jPj4yXT1rWyhrW3BmPj4yXXwwKSsxNj4+Ml07a1tuYj4+Ml09a1soa1twZj4+Ml18MCkrND4+Ml07a1twYj4+Ml09a1soa1twZj4+Ml18MCkrOD4+Ml07a1tYPj4yXT0wO3doaWxlKDEpe2lmKChrW1g+PjJdfDApPj0oa1tJYT4+Ml18MCkpYnJlYWs7Yj1rW1g+PjJdfDA7aWYoa1tnPj4yXXwwKWI9a1soa1tnPj4yXXwwKSsoYjw8Mik+PjJdfDA7a1t1YT4+Ml09YjtrW1RiPj4yXT1rWyhrW05jPj4yXXwwKSsyMCsoa1tYPj4yXTw8Mik+PjJdO2tbeD4+Ml09bFsoa1soa1tOYz4+Ml18MCkrMTY+PjJdfDApKyhrW1g+PjJdfDApPj4wXTt5Zj1XSSgoa1tlPj4yXXwwKSsoKChrW25iPj4yXXwwKSsoa1t1YT4+Ml18MCl8MCkqNDB8MCl8MCwoa1tlPj4yXXwwKSsoKChrW3BiPj4yXXwwKSsoa1t1YT4+Ml18MCl8MCkqNDB8MCl8MCxrW1RiPj4yXXwwKXwwO2tbY2E+PjJdPXlmO2lmKGtbY2E+PjJdfDApe2Q9MjE3O2JyZWFrfWtbWD4+Ml09KGtbWD4+Ml18MCkrMX1pZigoZHwwKT09MjE3PyhkPTAsKGtbeD4+Ml18MCkhPTApOjApa1tjYT4+Ml09MC0oa1tjYT4+Ml18MCk7a1tnPj4yXT0wO2JyZWFrfWNhc2UgMTg6e2lmKChrW2NhPj4yXXwwKTwwKXtrW3BmPj4yXT0oa1tkZj4+Ml18MCkrKCgoa1soa1twZj4+Ml18MCkrND4+Ml18MCktMXwwKSoyMHwwKTticmVhayBkfWI9a1twZj4+Ml18MDtpZighKGtbY2E+PjJdfDApKXtrW3BmPj4yXT0oa1tkZj4+Ml18MCkrKCgoa1tiKzg+PjJdfDApLTF8MCkqMjB8MCk7YnJlYWsgZH1lbHNle2tbcGY+PjJdPShrW2RmPj4yXXwwKSsoKChrW2IrMTI+PjJdfDApLTF8MCkqMjB8MCk7YnJlYWsgZH19Y2FzZSAyNzpjYXNlIDI4OntrW0pjPj4yXT0oa1tlPj4yXXwwKSsoKGtbKGtbcGY+PjJdfDApKzQ+PjJdfDApKjQwfDApO2lmKG1bKGtbSmM+PjJdfDApKzg+PjFdJjEpa1tyZT4+Ml09MjtlbHNle3lmPWtoKGtbSmM+PjJdfDApfDA7a1tyZT4+Ml09KCh5ZnwwKSE9MHwoTHwwKSE9MCkmMX1rW0tjPj4yXT0oa1tlPj4yXXwwKSsoKGtbKGtbcGY+PjJdfDApKzg+PjJdfDApKjQwfDApO2lmKG1bKGtbS2M+PjJdfDApKzg+PjFdJjEpa1tzZT4+Ml09MjtlbHNle3lmPWtoKGtbS2M+PjJdfDApfDA7a1tzZT4+Ml09KCh5ZnwwKSE9MHwoTHwwKSE9MCkmMX1iPSgoa1tyZT4+Ml18MCkqM3wwKSsoa1tzZT4+Ml18MCl8MDtpZigobFtrW3BmPj4yXT4+MF18MCk9PTI4KWtbcmU+PjJdPWxbMzk5MjUrYj4+MF07ZWxzZSBrW3JlPj4yXT1sWzM5OTM0K2I+PjBdO2tbZGQ+PjJdPShrW2U+PjJdfDApKygoa1soa1twZj4+Ml18MCkrMTI+PjJdfDApKjQwfDApO2lmKChrW3JlPj4yXXwwKT09Mil7alsoa1tkZD4+Ml18MCkrOD4+MV09bVsoa1tkZD4+Ml18MCkrOD4+MV0mLTQ5NjY0fDE7YnJlYWsgZH1lbHNle3dmPWtbcmU+PjJdfDA7eWY9a1tkZD4+Ml18MDtrW3lmPj4yXT13ZjtrW3lmKzQ+PjJdPSgod2Z8MCk8MCk8PDMxPj4zMTtqWyhrW2RkPj4yXXwwKSs4Pj4xXT1tWyhrW2RkPj4yXXwwKSs4Pj4xXSYtNDk2NjR8NDticmVhayBkfX1jYXNlIDE5OntrW0pjPj4yXT0oa1tlPj4yXXwwKSsoKGtbKGtbcGY+PjJdfDApKzQ+PjJdfDApKjQwfDApO2tbZGQ+PjJdPShrW2U+PjJdfDApKygoa1soa1twZj4+Ml18MCkrOD4+Ml18MCkqNDB8MCk7c2goa1tkZD4+Ml18MCk7aWYoIShtWyhrW0pjPj4yXXwwKSs4Pj4xXSYxKSl7alsoa1tkZD4+Ml18MCkrOD4+MV09NDt3Zj1raChrW0pjPj4yXXwwKXwwO3dmPSgoKHdmfDApIT0wfChMfDApIT0wKV4xKSYxO3lmPWtbZGQ+PjJdfDA7a1t5Zj4+Ml09d2Y7a1t5Zis0Pj4yXT0oKHdmfDApPDApPDwzMT4+MzF9YnJlYWt9Y2FzZSA1NDp7a1tKYz4+Ml09KGtbZT4+Ml18MCkrKChrWyhrW3BmPj4yXXwwKSs0Pj4yXXwwKSo0MHwwKTtrW2RkPj4yXT0oa1tlPj4yXXwwKSsoKGtbKGtbcGY+PjJdfDApKzg+PjJdfDApKjQwfDApO3NoKGtbZGQ+PjJdfDApO2lmKCEobVsoa1tKYz4+Ml18MCkrOD4+MV0mMSkpe2pbKGtbZGQ+PjJdfDApKzg+PjFdPTQ7d2Y9a2goa1tKYz4+Ml18MCl8MDt5Zj1rW2RkPj4yXXwwO2tbeWY+PjJdPX53ZjtrW3lmKzQ+PjJdPX5MfWJyZWFrfWNhc2UgMjA6e2lmKChrWyhrWyhrW3FmPj4yXXwwKSs4OD4+Ml18MCkrND4+Ml18MCk9PShrWyhrW3BmPj4yXXwwKSs0Pj4yXXwwKSlkPTE0O2Vsc2Uga1soa1twZj4+Ml18MCkrND4+Ml09a1soa1soa1txZj4+Ml18MCkrODg+PjJdfDApKzQ+PjJdO2JyZWFrfWNhc2UgMjI6Y2FzZSAyMTp7a1tKYz4+Ml09KGtbZT4+Ml18MCkrKChrWyhrW3BmPj4yXXwwKSs0Pj4yXXwwKSo0MHwwKTtpZighKG1bKGtbSmM+PjJdfDApKzg+PjFdJjEpKXt5Zj0ramgoa1tKYz4+Ml18MCkhPTAuMCYxO2tbeT4+Ml09eWY7aWYoKGxba1twZj4+Ml0+PjBdfDApPT0yMilrW3k+PjJdPSgoa1t5Pj4yXXwwKSE9MF4xKSYxfWVsc2Uga1t5Pj4yXT1rWyhrW3BmPj4yXXwwKSsxMj4+Ml07aWYoa1t5Pj4yXXwwKWQ9MTQ7YnJlYWt9Y2FzZSAzNDp7a1tKYz4+Ml09KGtbZT4+Ml18MCkrKChrWyhrW3BmPj4yXXwwKSs0Pj4yXXwwKSo0MHwwKTtpZihtWyhrW0pjPj4yXXwwKSs4Pj4xXSYxKWQ9MTQ7YnJlYWt9Y2FzZSAzNTp7a1tKYz4+Ml09KGtbZT4+Ml18MCkrKChrWyhrW3BmPj4yXXwwKSs0Pj4yXXwwKSo0MHwwKTtpZighKG1bKGtbSmM+PjJdfDApKzg+PjFdJjEpKWQ9MTQ7YnJlYWt9Y2FzZSA5Njp7a1t4Yj4+Ml09a1soa1soa1txZj4+Ml18MCkrMTEyPj4yXXwwKSsoa1soa1twZj4+Ml18MCkrND4+Ml08PDIpPj4yXTtrW3FiPj4yXT1rWyhrW3BmPj4yXXwwKSs4Pj4yXTt5Zj1YSSh4YixxYil8MDtrW3VmPj4yXT15ZjtpZihrW3VmPj4yXXwwKWJyZWFrIGE7a1t5Yz4+Ml09KGtbZT4+Ml18MCkrKChrWyhrW3BmPj4yXXwwKSsxMj4+Ml18MCkqNDB8MCk7a1tmPj4yXT1rWyhrW3hiPj4yXXwwKSs3Nj4+Ml07a1tVYj4+Ml09a1soa1t4Yj4+Ml18MCkrMTY+PjJdO2RvIGlmKChrWyhrW3hiPj4yXXwwKSs1Nj4+Ml18MCkhPShrWyhrW3FmPj4yXXwwKSszMj4+Ml18MCkpe2RvIGlmKGlbKGtbeGI+PjJdfDApKzI+PjBdfDApaWYoKGxba1t4Yj4+Ml0+PjBdfDApPT0zKXtrW2lkPj4yXT0oa1tlPj4yXXwwKSsoKGtbKGtbeGI+PjJdfDApKzE2Pj4yXXwwKSo0MHwwKTt5Zj1rWyhrW2lkPj4yXXwwKSsxMj4+Ml18MDtrW3Y+PjJdPXlmO2tbKGtbeGI+PjJdfDApKzY0Pj4yXT15ZjtrWyhrW3hiPj4yXXwwKSs2MD4+Ml09eWY7a1soa1t4Yj4+Ml18MCkrNzI+PjJdPWtbKGtbaWQ+PjJdfDApKzE2Pj4yXTticmVha31lbHNle3NoKGtbeWM+PjJdfDApO2JyZWFrIGR9ZWxzZXtiPWxJKGtbVWI+PjJdfDApfDA7a1soa1t4Yj4+Ml18MCkrNjA+PjJdPWI7Yj1ZSShrW1ViPj4yXXwwLHYpfDA7a1soa1t4Yj4+Ml18MCkrNzI+PjJdPWI7Yj1rWyhrW3hiPj4yXXwwKSs2MD4+Ml18MDtpZigoa1soa1t4Yj4+Ml18MCkrNjA+PjJdfDApPj4+MDw9KGtbdj4+Ml18MCk+Pj4wKXtrWyhrW3hiPj4yXXwwKSs2ND4+Ml09YjticmVha31pZihiPj4+MD4oa1soa1tyZj4+Ml18MCkrOTY+PjJdfDApPj4+MCl7ZD04ODg7YnJlYWsgY31rWyhrW3hiPj4yXXwwKSs2ND4+Ml09a1t2Pj4yXX13aGlsZSgwKTtrWyhrW3hiPj4yXXwwKSs1Nj4+Ml09a1soa1txZj4+Ml18MCkrMzI+PjJdO2I9a1soa1t4Yj4+Ml18MCkrNzI+PjJdfDA7aWYoKGxba1soa1t4Yj4+Ml18MCkrNzI+PjJdPj4wXXwwKTwxMjgpe2tbZmI+PjJdPWxbYj4+MF07Yj0xfWVsc2UgYj0obEcoYixmYil8MCkmMjU1O2tbKGtbeGI+PjJdfDApKzY4Pj4yXT1iJjI1NTtqWyhrW3hiPj4yXXwwKSsxND4+MV09MDtrW2tbZj4+Ml0+PjJdPWtbZmI+PjJdO2lmKChrW3Y+PjJdfDApPj4+MDwoa1tmYj4+Ml18MCk+Pj4wKXtrWyhrW3hiPj4yXXwwKSs3Mj4+Ml09MDtrWyhrW3hiPj4yXXwwKSs2ND4+Ml09MDtpZigoa1tmYj4+Ml18MCk+Pj4wPjk4MzA3KXtkPTI2NzticmVhayBjfWlmKChrW2ZiPj4yXXwwKT4+PjA+KGtbKGtbeGI+PjJdfDApKzYwPj4yXXwwKT4+PjApe2Q9MjY3O2JyZWFrIGN9ZWxzZXtkPTI3MDticmVha319ZWxzZXtpZigoa1tmYj4+Ml18MCk+Pj4wPD0wKXtkPTI3MDticmVha31rW1RlPj4yXT1rWyhrW3hiPj4yXXwwKSs3Mj4+Ml07ZD0yNzY7YnJlYWt9fWVsc2UgZD0yNzA7d2hpbGUoMCk7ZG8gaWYoKGR8MCk9PTI3MCl7ZD0wO2lmKChtWyhrW3hiPj4yXXwwKSsxND4+MV18MCk+KGtbcWI+PjJdfDApKXtrW2llPj4yXT1rWyhrW3hiPj4yXXwwKSs4MCsoa1txYj4+Ml08PDIpPj4yXTticmVha31pZigoa1soa1t4Yj4+Ml18MCkrNjg+PjJdfDApPj4+MD49KGtba1tmPj4yXT4+Ml18MCk+Pj4wKXtrW2llPj4yXT0wO2Q9MjkyO2JyZWFrfWlmKGtbKGtbeGI+PjJdfDApKzcyPj4yXXwwKXtrW1RlPj4yXT1rWyhrW3hiPj4yXXwwKSs3Mj4+Ml07ZD0yNzY7YnJlYWt9Yj1lZTthPWIrNDB8MDtkb3trW2I+PjJdPTA7Yj1iKzR8MH13aGlsZSgoYnwwKTwoYXwwKSk7eWY9Wkkoa1tVYj4+Ml18MCwwLGtba1tmPj4yXT4+Ml18MCwoKGlbKGtbeGI+PjJdfDApKzQ+PjBdfDApIT0wXjEpJjEsZWUpfDA7a1t1Zj4+Ml09eWY7aWYoa1t1Zj4+Ml18MClicmVhayBhO2tbVGU+PjJdPWtbZWUrMTY+PjJdO2Q9Mjc2fXdoaWxlKDApO2lmKChkfDApPT0yNzYpe2tbUT4+Ml09bVsoa1t4Yj4+Ml18MCkrMTQ+PjFdO3lmPWdiO2tbeWY+PjJdPWtbKGtbZj4+Ml18MCkrKGtbUT4+Ml08PDIpPj4yXTtrW3lmKzQ+PjJdPTA7a1tZZT4+Ml09KGtbVGU+PjJdfDApKyhrWyhrW3hiPj4yXXwwKSs2OD4+Ml18MCk7a1tXZT4+Ml09KGtbVGU+PjJdfDApKyhrW2tbZj4+Ml0+PjJdfDApO2Rve3lmPWxba1tZZT4+Ml0+PjBdfDA7a1tpZT4+Ml09eWY7Yj1rW1llPj4yXXwwO2lmKHlmPj4+MDwxMjgpe2tbWWU+PjJdPWIrMTt3Zj0oX0koa1tpZT4+Ml0mMjU1KXwwKSYyNTU7eWY9Z2I7d2Y9JFIoa1t5Zj4+Ml18MCxrW3lmKzQ+PjJdfDAsd2Z8MCwwKXwwO3lmPWdiO2tbeWY+PjJdPXdmO2tbeWYrND4+Ml09TH1lbHNle3dmPShsRyhiLGllKXwwKSYyNTU7a1tZZT4+Ml09KGtbWWU+PjJdfDApK3dmO3dmPW1HKGtbaWU+PjJdfDApfDA7eWY9Z2I7d2Y9JFIoa1t5Zj4+Ml18MCxrW3lmKzQ+PjJdfDAsd2Z8MCwwKXwwO3lmPWdiO2tbeWY+PjJdPXdmO2tbeWYrND4+Ml09TH13Zj1rW2llPj4yXXwwO3lmPWtbUT4+Ml18MDtrW1E+PjJdPXlmKzE7a1soa1t4Yj4+Ml18MCkrODArKHlmPDwyKT4+Ml09d2Y7a1soa1tmPj4yXXwwKSsoa1tRPj4yXTw8Mik+PjJdPWtbZ2I+PjJdO2lmKChrW1E+PjJdfDApPihrW3FiPj4yXXwwKSlicmVha313aGlsZSgoa1tZZT4+Ml18MCk+Pj4wPChrW1dlPj4yXXwwKT4+PjApO2lmKChrW1llPj4yXXwwKT4+PjA+PShrW1dlPj4yXXwwKT4+PjApe2lmKChrW1llPj4yXXwwKT4+PjA+KGtbV2U+PjJdfDApPj4+MCl7ZD0yODY7YnJlYWsgY315Zj1nYjtpZigoa1t5Zis0Pj4yXXwwKSE9MD8xOihrW3lmPj4yXXwwKSE9KGtbKGtbeGI+PjJdfDApKzYwPj4yXXwwKSl7ZD0yODY7YnJlYWsgY319eWY9Z2I7d2Y9a1t5Zis0Pj4yXXwwO2lmKHdmPj4+MD4wfCgod2Z8MCk9PTA/KGtbeWY+PjJdfDApPj4+MD4oa1soa1t4Yj4+Ml18MCkrNjA+PjJdfDApPj4+MDowKSl7ZD0yODY7YnJlYWsgY31qWyhrW3hiPj4yXXwwKSsxND4+MV09a1tRPj4yXTtrWyhrW3hiPj4yXXwwKSs2OD4+Ml09KGtbWWU+PjJdfDApLShrW1RlPj4yXXwwKTtpZighKGtbKGtbeGI+PjJdfDApKzcyPj4yXXwwKSl7ZmgoZWUpO2Q9MjkyfWVsc2UgZD0yOTJ9aWYoKGR8MCk9PTI5Mj8oZD0wLChtWyhrW3hiPj4yXXwwKSsxND4+MV18MCk8PShrW3FiPj4yXXwwKSk6MCl7Yj1rW3ljPj4yXXwwO2lmKChpWyhrW3BmPj4yXXwwKSsxPj4wXXwwKT09LTgpe3VHKGIsa1soa1twZj4+Ml18MCkrMTY+PjJdfDAsMjA0OCk7YnJlYWsgZH1lbHNle3NoKGIpO2JyZWFrIGR9fWlmKG1bKGtbeWM+PjJdfDApKzg+PjFdJjkzMTIpc2goa1t5Yz4+Ml18MCk7aWYoKGtbKGtbeGI+PjJdfDApKzY0Pj4yXXwwKT4+PjA+PShrWyhrW2Y+PjJdfDApKygoa1txYj4+Ml18MCkrMTw8Mik+PjJdfDApPj4+MCl7a1tUZT4+Ml09KGtbKGtbeGI+PjJdfDApKzcyPj4yXXwwKSsoa1soa1tmPj4yXXwwKSsoa1txYj4+Ml08PDIpPj4yXXwwKTtpZigoa1tpZT4+Ml18MCk+Pj4wPDEyKXtuRyhrW1RlPj4yXXwwLGtbaWU+PjJdfDAsa1t5Yz4+Ml18MCl8MDticmVhayBkfWI9KCgoa1tpZT4+Ml18MCktMTJ8MCk+Pj4wKS8yfDA7a1tDYT4+Ml09YjtrWyhrW3ljPj4yXXwwKSsxMj4+Ml09YjtpWyhrW3ljPj4yXXwwKSsxMD4+MF09aVtGPj4wXXwwO2I9a1t5Yz4+Ml18MDtpZigoa1soa1t5Yz4+Ml18MCkrMjQ+PjJdfDApPCgoa1tDYT4+Ml18MCkrMnwwKSl7altiKzg+PjFdPTE7aWYoWXgoa1t5Yz4+Ml18MCwoa1tDYT4+Ml18MCkrMnwwLDApfDApe2Q9ODg5O2JyZWFrIGF9fWVsc2Uga1soa1t5Yz4+Ml18MCkrMTY+PjJdPWtbYisyMD4+Ml07YlMoa1soa1t5Yz4+Ml18MCkrMTY+PjJdfDAsa1tUZT4+Ml18MCxrW0NhPj4yXXwwKXwwO2lbKGtbKGtbeWM+PjJdfDApKzE2Pj4yXXwwKSsoa1tDYT4+Ml18MCk+PjBdPTA7aVsoa1soa1t5Yz4+Ml18MCkrMTY+PjJdfDApKygoa1tDYT4+Ml18MCkrMSk+PjBdPTA7alsoa1t5Yz4+Ml18MCkrOD4+MV09alsxNjQxOCsoKGtbaWU+PjJdJjEpPDwxKT4+MV18MDticmVhayBkfWlbKGtbeWM+PjJdfDApKzEwPj4wXT1pW0Y+PjBdfDA7ZG8gaWYobFsoa1twZj4+Ml18MCkrMz4+MF0mMTkyKXtpZigoa1tpZT4+Ml18MCk+Pj4wPj0xMj8oa1tpZT4+Ml0mMXwwKT09MDowKWJyZWFrO2lmKCEobFsoa1twZj4+Ml18MCkrMz4+MF0mMTI4KSlkPTMxMH1lbHNlIGQ9MzEwO3doaWxlKDApO2lmKChkfDApPT0zMTA/KGQ9MCx5Zj1tRyhrW2llPj4yXXwwKXwwLGtbQ2E+PjJdPXlmLCh5ZnwwKSE9MCk6MCl7eWY9Wkkoa1tVYj4+Ml18MCxrWyhrW2Y+PjJdfDApKyhrW3FiPj4yXTw8Mik+PjJdfDAsa1tDYT4+Ml18MCwoKGlbKGtbeGI+PjJdfDApKzQ+PjBdfDApIT0wXjEpJjEsa1t5Yz4+Ml18MCl8MDtrW3VmPj4yXT15ZjtpZihrW3VmPj4yXXwwKWJyZWFrIGE7bkcoa1soa1t5Yz4+Ml18MCkrMTY+PjJdfDAsa1tpZT4+Ml18MCxrW3ljPj4yXXwwKXwwO3lmPShrW3ljPj4yXXwwKSs4fDA7alt5Zj4+MV09bVt5Zj4+MV0mLTQwOTc7YnJlYWsgZH1uRygzOTk0MyxrW2llPj4yXXwwLGtbeWM+PjJdfDApfDA7YnJlYWt9Y2FzZSA5ODp7a1tSZT4+Ml09a1soa1twZj4+Ml18MCkrMTY+PjJdO2tbSmM+PjJdPShrW2U+PjJdfDApKygoa1soa1twZj4+Ml18MCkrND4+Ml18MCkqNDB8MCk7d2hpbGUoMSl7eWY9a1tSZT4+Ml18MDtrW1JlPj4yXT15ZisxO3lmPWlbeWY+PjBdfDA7aVt6Pj4wXT15ZjtpZighKHlmPDwyND4+MjQpKWJyZWFrIGQ7Vngoa1tKYz4+Ml18MCxpW3o+PjBdfDAsaVtGPj4wXXwwKTtrW0pjPj4yXT0oa1tKYz4+Ml18MCkrNDB9fWNhc2UgOTk6e3lmPVFhO2tbeWY+PjJdPTA7a1t5Zis0Pj4yXT0wO2tbV2E+PjJdPTA7eWY9YmI7a1t5Zj4+Ml09MDtrW3lmKzQ+PjJdPTA7a1tUYT4+Ml09a1soa1twZj4+Ml18MCkrND4+Ml07a1tTZT4+Ml09a1soa1twZj4+Ml18MCkrMTY+PjJdO2tbdWM+PjJdPShrW2U+PjJdfDApKygoa1tUYT4+Ml18MCkqNDB8MCk7a1tUYT4+Ml09a1soa1twZj4+Ml18MCkrOD4+Ml07a1tRYz4+Ml09KGtbdWM+PjJdfDApKygoKGtbVGE+PjJdfDApLTF8MCkqNDB8MCk7a1tJPj4yXT1sWyhrW3FmPj4yXXwwKSsxNDM+PjBdO2tbZGQ+PjJdPShrW2U+PjJdfDApKygoa1soa1twZj4+Ml18MCkrMTI+PjJdfDApKjQwfDApO2lmKGtbU2U+PjJdfDApe2tbaGQ+PjJdPWtbdWM+PjJdO2Rve3dmPWtbaGQ+PjJdfDA7a1toZD4+Ml09d2YrNDA7eWY9a1tTZT4+Ml18MDtrW1NlPj4yXT15ZisxO1Z4KHdmLGlbeWY+PjBdfDAsaVtGPj4wXXwwKX13aGlsZSgoaVtrW1NlPj4yXT4+MF18MCkhPTApfWtbaGQ+PjJdPWtbUWM+PjJdO3doaWxlKDEpe3lmPSRJKGtbaGQ+PjJdfDAsa1tJPj4yXXwwLERhKXwwO2tbaGU+PjJdPXlmO2tbKGtbaGQ+PjJdfDApKzI4Pj4yXT15ZjtkbyBpZihtWyhrW2hkPj4yXXwwKSs4Pj4xXSYxNjM4NCl7eWY9UWE7Yj1rW2hkPj4yXXwwO2lmKChrW3lmPj4yXXwwKSE9MHwoa1t5Zis0Pj4yXXwwKSE9MClpZihnaChiKXwwKXtkPTg4OTticmVhayBhfWVsc2UgYnJlYWs7ZWxzZXt3Zj1rW2I+PjJdfDA7eWY9YmI7d2Y9JFIoa1t5Zj4+Ml18MCxrW3lmKzQ+PjJdfDAsd2Z8MCwoKHdmfDApPDApPDwzMT4+MzF8MCl8MDt5Zj1iYjtrW3lmPj4yXT13ZjtrW3lmKzQ+PjJdPUw7a1tEYT4+Ml09KGtbRGE+PjJdfDApLShrW2tbaGQ+PjJdPj4yXXwwKTticmVha319d2hpbGUoMCk7d2Y9UWE7d2Y9JFIoa1t3Zj4+Ml18MCxrW3dmKzQ+PjJdfDAsa1tEYT4+Ml18MCwwKXwwO3lmPVFhO2tbeWY+PjJdPXdmO2tbeWYrND4+Ml09TDtpZigoa1toZT4+Ml18MCk+Pj4wPD0xMjcpYj0xO2Vsc2UgYj1zRyhrW2hlPj4yXXwwLDApfDA7a1tXYT4+Ml09KGtbV2E+PjJdfDApK2I7aWYoKGtbaGQ+PjJdfDApPT0oa1t1Yz4+Ml18MCkpYnJlYWs7a1toZD4+Ml09KGtbaGQ+PjJdfDApKy00MH1iPWtbV2E+PjJdfDA7aWYoKGtbV2E+PjJdfDApPjEyNil7d2Y9c0coYiwoKGJ8MCk8MCk8PDMxPj4zMSl8MDtrW2FiPj4yXT13ZjtrW1dhPj4yXT0oa1tXYT4+Ml18MCkrKGtbYWI+PjJdfDApO3dmPWtbYWI+PjJdfDA7eWY9a1tXYT4+Ml18MDtpZigod2Z8MCk8KHNHKHlmLCgoeWZ8MCk8MCk8PDMxPj4zMSl8MCkpa1tXYT4+Ml09KGtbV2E+PjJdfDApKzF9ZWxzZSBrW1dhPj4yXT1iKzE7YT1rW1dhPj4yXXwwO3dmPVFhO3dmPSRSKGF8MCwoKGF8MCk8MCk8PDMxPj4zMXwwLGtbd2Y+PjJdfDAsa1t3Zis0Pj4yXXwwKXwwO2E9TmE7a1thPj4yXT13ZjtrW2ErND4+Ml09TDthPU5hO3dmPWJiO3dmPSRSKGtbYT4+Ml18MCxrW2ErND4+Ml18MCxrW3dmPj4yXXwwLGtbd2YrND4+Ml18MCl8MDthPUw7eWY9a1soa1tyZj4+Ml18MCkrOTY+PjJdfDA7Yz0oKHlmfDApPDApPDwzMT4+MzE7aWYoKGF8MCk+KGN8MCl8KGF8MCk9PShjfDApJndmPj4+MD55Zj4+PjApe2Q9ODg4O2JyZWFrIGN9aWYoWHgoa1tkZD4+Ml18MCxrW05hPj4yXXwwKXwwKXtkPTg4OTticmVhayBhfWtbJGU+PjJdPWtbKGtbZGQ+PjJdfDApKzE2Pj4yXTtpZigoa1tXYT4+Ml18MCk+Pj4wPDEyOCl7aVtrWyRlPj4yXT4+MF09a1tXYT4+Ml07Yj0xfWVsc2V7Yj1rW1dhPj4yXXwwO2I9YUooa1skZT4+Ml18MCxiLCgoYnwwKTwwKTw8MzE+PjMxKXwwfWtbVD4+Ml09YiYyNTU7a1tCYT4+Ml09a1tXYT4+Ml07a1toZD4+Ml09a1t1Yz4+Ml07ZG97a1toZT4+Ml09a1soa1toZD4+Ml18MCkrMjg+PjJdO2lmKChrW2hlPj4yXXwwKT4+PjA8MTI4KXtpWyhrWyRlPj4yXXwwKSsoa1tUPj4yXXwwKT4+MF09a1toZT4+Ml07Yj0xfWVsc2UgYj1hSigoa1skZT4+Ml18MCkrKGtbVD4+Ml18MCl8MCxrW2hlPj4yXXwwLDApfDA7a1tUPj4yXT0oa1tUPj4yXXwwKSsoYiYyNTUpO3lmPWJKKChrWyRlPj4yXXwwKSsoa1tCYT4+Ml18MCl8MCxrW2hkPj4yXXwwLGtbaGU+PjJdfDApfDA7a1tCYT4+Ml09KGtbQmE+PjJdfDApK3lmO3lmPShrW2hkPj4yXXwwKSs0MHwwO2tbaGQ+PjJdPXlmfXdoaWxlKHlmPj4+MDw9KGtbUWM+PjJdfDApPj4+MCk7a1soa1tkZD4+Ml18MCkrMTI+PjJdPWtbTmE+PjJdO2pbKGtbZGQ+PjJdfDApKzg+PjFdPTE2O3lmPWJiO2lmKChrW3lmPj4yXXwwKSE9MHwoa1t5Zis0Pj4yXXwwKSE9MCl7a1trW2RkPj4yXT4+Ml09a1tiYj4+Ml07eWY9KGtbZGQ+PjJdfDApKzh8MDtqW3lmPj4xXT1tW3lmPj4xXXwxNjM4NH1pWyhrW2RkPj4yXXwwKSsxMD4+MF09MTticmVha31jYXNlIDEwMDp7a1tWYj4+Ml09a1soa1soa1soa1txZj4+Ml18MCkrMTEyPj4yXXwwKSsoa1soa1twZj4+Ml18MCkrND4+Ml08PDIpPj4yXXwwKSsxNj4+Ml07eWY9UmE7a1t5Zj4+Ml09MDtrW3lmKzQ+PjJdPTA7eWY9Y0ooa1tWYj4+Ml18MCxSYSl8MDtrW3VmPj4yXT15ZjtpZihrW3VmPj4yXXwwKWJyZWFrIGE7Yz1NSShrW3FmPj4yXXwwLGtbcGY+PjJdfDApfDA7a1tkZD4+Ml09YztjPVJhO3dmPWtbYys0Pj4yXXwwO3lmPWtbZGQ+PjJdfDA7a1t5Zj4+Ml09a1tjPj4yXTtrW3lmKzQ+PjJdPXdmO2JyZWFrfWNhc2UgMDp7a1ttYj4+Ml09a1soa1twZj4+Ml18MCkrND4+Ml07a1tfZT4+Ml09a1soa1twZj4+Ml18MCkrMTY+PjJdO2RvIGlmKCEoa1ttYj4+Ml18MCkpe2lmKChrWyhrW3JmPj4yXXwwKSsxNjQ+PjJdfDApPjApe0tJKGtbcWY+PjJdfDAsMzk5NTEsd2UpO2tbdWY+PjJdPTU7YnJlYWt9eWY9VGYoa1tfZT4+Ml18MCl8MDtrW1phPj4yXT15Zjt5Zj1kSihrW3JmPj4yXXwwLDAsKGtbKGtbcmY+PjJdfDApKzQzNj4+Ml18MCkrKGtbKGtbcmY+PjJdfDApKzQzMj4+Ml18MCl8MCl8MDtrW3VmPj4yXT15ZjtpZihrW3VmPj4yXXwwKWJyZWFrIGE7eWY9ZHgoa1tyZj4+Ml18MCwzMisoa1taYT4+Ml18MCkrMXwwLDApfDA7a1tjZD4+Ml09eWY7aWYoa1tjZD4+Ml18MCl7a1trW2NkPj4yXT4+Ml09KGtbY2Q+PjJdfDApKzMyO2JTKGtba1tjZD4+Ml0+PjJdfDAsa1tfZT4+Ml18MCwoa1taYT4+Ml18MCkrMXwwKXwwO2I9a1tyZj4+Ml18MDtpZihpWyhrW3JmPj4yXXwwKSs2Nz4+MF18MCl7aVtiKzY3Pj4wXT0wO2lbKGtbcmY+PjJdfDApKzc1Pj4wXT0xfWVsc2V7eWY9Yis0MzJ8MDtrW3lmPj4yXT0oa1t5Zj4+Ml18MCkrMX1rWyhrW2NkPj4yXXwwKSsyND4+Ml09a1soa1tyZj4+Ml18MCkrNDI0Pj4yXTtrWyhrW3JmPj4yXXwwKSs0MjQ+PjJdPWtbY2Q+PjJdO3lmPShrW3JmPj4yXXwwKSs0NDB8MDt3Zj1rW3lmKzQ+PjJdfDA7Yz0oa1tjZD4+Ml18MCkrOHwwO2tbYz4+Ml09a1t5Zj4+Ml07a1tjKzQ+PjJdPXdmO2M9KGtbcmY+PjJdfDApKzQ0OHwwO3dmPWtbYys0Pj4yXXwwO3lmPShrW2NkPj4yXXwwKSsxNnwwO2tbeWY+PjJdPWtbYz4+Ml07a1t5Zis0Pj4yXT13Zn19ZWxzZXtrW3NhPj4yXT0wO2tba2Q+PjJdPWtbKGtbcmY+PjJdfDApKzQyND4+Ml07d2hpbGUoMSl7aWYoIShrW2tkPj4yXXwwKSlicmVhaztpZighKHNnKGtba1trZD4+Ml0+PjJdfDAsa1tfZT4+Ml18MCl8MCkpYnJlYWs7a1tzYT4+Ml09KGtbc2E+PjJdfDApKzE7a1trZD4+Ml09a1soa1trZD4+Ml18MCkrMjQ+PjJdfWlmKCEoa1trZD4+Ml18MCkpe3lmPWtbcWY+PjJdfDA7a1t4ZT4+Ml09a1tfZT4+Ml07S0koeWYsNDAwMDIseGUpO2tbdWY+PjJdPTE7YnJlYWt9aWYoKGtbbWI+PjJdfDApPT0xPyhrWyhrW3JmPj4yXXwwKSsxNjQ+PjJdfDApPjA6MCl7S0koa1txZj4+Ml18MCw0MDAyNCx5ZSk7a1t1Zj4+Ml09NTticmVha31pZighKGtbKGtba2Q+PjJdfDApKzI0Pj4yXXwwKSliPShsWyhrW3JmPj4yXXwwKSs3NT4+MF18MCkhPTA7ZWxzZSBiPTA7a1t6YT4+Ml09YiYxO2lmKCEoKGtbemE+PjJdfDApIT0wJihrW21iPj4yXXwwKT09MSkpe2tbc2E+PjJdPShrWyhrW3JmPj4yXXwwKSs0MzI+PjJdfDApLShrW3NhPj4yXXwwKS0xO2c6ZG8gaWYoKGtbbWI+PjJdfDApPT0yKXtrW3lhPj4yXT0oa1soa1tyZj4+Ml18MCkrMjQ+PjJdJjJ8MCkhPTAmMTtrW3ZhPj4yXT0wO3doaWxlKDEpe2lmKChrW3ZhPj4yXXwwKT49KGtbKGtbcmY+PjJdfDApKzIwPj4yXXwwKSlicmVhayBnO3lmPWVKKGtbKGtbKGtbcmY+PjJdfDApKzE2Pj4yXXwwKSsoa1t2YT4+Ml08PDQpKzQ+PjJdfDAsNTE2LChrW3lhPj4yXXwwKT09MCYxKXwwO2tbdWY+PjJdPXlmO2lmKGtbdWY+PjJdfDApYnJlYWsgYTtrW3ZhPj4yXT0oa1t2YT4+Ml18MCkrMX19ZWxzZSBrW3lhPj4yXT0wO3doaWxlKDApO2tbdmE+PjJdPTA7d2hpbGUoMSl7aWYoKGtbdmE+PjJdfDApPj0oa1soa1tyZj4+Ml18MCkrMjA+PjJdfDApKWJyZWFrO3lmPWZKKGtbKGtbKGtbcmY+PjJdfDApKzE2Pj4yXXwwKSsoa1t2YT4+Ml08PDQpKzQ+PjJdfDAsa1ttYj4+Ml18MCxrW3NhPj4yXXwwKXwwO2tbdWY+PjJdPXlmO2lmKGtbdWY+PjJdfDApYnJlYWsgYTtrW3ZhPj4yXT0oa1t2YT4+Ml18MCkrMX1pZihrW3lhPj4yXXwwKXthaShrW3JmPj4yXXwwKTtNZyhrW3JmPj4yXXwwKTtrWyhrW3JmPj4yXXwwKSsyND4+Ml09a1soa1tyZj4+Ml18MCkrMjQ+PjJdfDJ9fWVsc2V7eWY9T0koa1txZj4+Ml18MCwxKXwwO2tbdWY+PjJdPXlmO2lmKHlmKXtkPTg4NzticmVhayBjfWlbKGtbcmY+PjJdfDApKzY3Pj4wXT0xO2lmKChMSShrW3FmPj4yXXwwKXwwKT09NSl7ZD0zNzA7YnJlYWsgY31pWyhrW3JmPj4yXXwwKSs3NT4+MF09MDtrW3VmPj4yXT1rWyhrW3FmPj4yXXwwKSs0MD4+Ml19d2hpbGUoMSl7aWYoKGtbKGtbcmY+PjJdfDApKzQyND4+Ml18MCk9PShrW2tkPj4yXXwwKSlicmVhaztrW29kPj4yXT1rWyhrW3JmPj4yXXwwKSs0MjQ+PjJdO2tbKGtbcmY+PjJdfDApKzQyND4+Ml09a1soa1tvZD4+Ml18MCkrMjQ+PjJdO2JnKGtbcmY+PjJdfDAsa1tvZD4+Ml18MCk7eWY9KGtbcmY+PjJdfDApKzQzMnwwO2tbeWY+PjJdPShrW3lmPj4yXXwwKSstMX1iPWtba2Q+PjJdfDA7aWYoKGtbbWI+PjJdfDApPT0xKXtrWyhrW3JmPj4yXXwwKSs0MjQ+PjJdPWtbYisyND4+Ml07Ymcoa1tyZj4+Ml18MCxrW2tkPj4yXXwwKTtpZighKGtbemE+PjJdfDApKXt5Zj0oa1tyZj4+Ml18MCkrNDMyfDA7a1t5Zj4+Ml09KGtbeWY+PjJdfDApKy0xfX1lbHNle3lmPWIrOHwwO3dmPWtbeWYrND4+Ml18MDtjPShrW3JmPj4yXXwwKSs0NDB8MDtrW2M+PjJdPWtbeWY+PjJdO2tbYys0Pj4yXT13ZjtjPShrW2tkPj4yXXwwKSsxNnwwO3dmPWtbYys0Pj4yXXwwO3lmPShrW3JmPj4yXXwwKSs0NDh8MDtrW3lmPj4yXT1rW2M+PjJdO2tbeWYrND4+Ml09d2Z9aWYoKGtbemE+PjJdfDApPT0wfChrW21iPj4yXXwwKT09Mil7eWY9ZEooa1tyZj4+Ml18MCxrW21iPj4yXXwwLGtbc2E+PjJdfDApfDA7a1t1Zj4+Ml09eWY7aWYoKGtbdWY+PjJdfDApIT0wfChrW3VmPj4yXXwwKSE9MClicmVhayBhO2Vsc2UgYnJlYWsgZH19d2hpbGUoMCk7aWYoa1t1Zj4+Ml18MClicmVhayBhO2JyZWFrfWNhc2UgMjp7aWYoKGtbKGtbcGY+PjJdfDApKzg+PjJdfDApIT0wPyhrWyhrW3JmPj4yXXwwKSsyND4+Ml0mNjcxMDg4NjR8MCkhPTA6MCl7ZD00MTE7YnJlYWsgY31rW3RiPj4yXT1rWyhrWyhrW3JmPj4yXXwwKSsxNj4+Ml18MCkrKGtbKGtbcGY+PjJdfDApKzQ+PjJdPDw0KSs0Pj4yXTtpZihrW3RiPj4yXXwwKXt5Zj16ZyhrW3RiPj4yXXwwLGtbKGtbcGY+PjJdfDApKzg+PjJdfDApfDA7a1t1Zj4+Ml09eWY7aWYoa1t1Zj4+Ml18MCl7ZD00MTQ7YnJlYWsgY31kbyBpZigoa1soa1twZj4+Ml18MCkrOD4+Ml18MCkhPTA/KChtWyhrW3FmPj4yXXwwKSsxNDQ+PjFdfDApPj4+NiYxfDApIT0wOjApe2lmKChsWyhrW3JmPj4yXXwwKSs2Nz4+MF18MCkhPTA/KGtbKGtbcmY+PjJdfDApKzE2MD4+Ml18MCk8PTE6MClicmVhaztpZighKGtbKGtbcWY+PjJdfDApKzQ4Pj4yXXwwKSl7eWY9KGtbcmY+PjJdfDApKzQzNnwwO2tbeWY+PjJdPShrW3lmPj4yXXwwKSsxO2tbKGtbcWY+PjJdfDApKzQ4Pj4yXT0oa1soa1tyZj4+Ml18MCkrNDMyPj4yXXwwKSsoa1soa1tyZj4+Ml18MCkrNDM2Pj4yXXwwKX15Zj1kSihrW3JmPj4yXXwwLDAsKGtbKGtbcWY+PjJdfDApKzQ4Pj4yXXwwKS0xfDApfDA7a1t1Zj4+Ml09eWY7aWYoIShrW3VmPj4yXXwwKSl7eWY9aUooa1t0Yj4+Ml18MCxrWyhrW3FmPj4yXXwwKSs0OD4+Ml18MCl8MDtrW3VmPj4yXT15Zn15Zj0oa1tyZj4+Ml18MCkrNDQwfDA7d2Y9a1t5Zis0Pj4yXXwwO2M9KGtbcWY+PjJdfDApKzcyfDA7a1tjPj4yXT1rW3lmPj4yXTtrW2MrND4+Ml09d2Y7Yz0oa1tyZj4+Ml18MCkrNDQ4fDA7d2Y9a1tjKzQ+PjJdfDA7eWY9KGtbcWY+PjJdfDApKzgwfDA7a1t5Zj4+Ml09a1tjPj4yXTtrW3lmKzQ+PjJdPXdmfXdoaWxlKDApO0JnKGtbdGI+PjJdfDAsMSxuYSk7a1trYT4+Ml09a1soa1soa1soa1tyZj4+Ml18MCkrMTY+PjJdfDApKyhrWyhrW3BmPj4yXXwwKSs0Pj4yXTw8NCkrMTI+PjJdfDApKzQ+PjJdfWVsc2V7a1tuYT4+Ml09MDtrW2thPj4yXT0wfWRvIGlmKGxbKGtbcGY+PjJdfDApKzM+PjBdfDApe2lmKChrW25hPj4yXXwwKT09KGtbKGtbcGY+PjJdfDApKzEyPj4yXXwwKT8oa1trYT4+Ml18MCk9PShrWyhrW3BmPj4yXXwwKSsxNj4+Ml18MCk6MClicmVhaztiZyhrW3JmPj4yXXwwLGtbKGtbcWY+PjJdfDApKzEwOD4+Ml18MCk7eWY9QWgoa1tyZj4+Ml18MCw0MDI2NSl8MDtrWyhrW3FmPj4yXXwwKSsxMDg+PjJdPXlmO2lmKChrW2tbKGtbKGtbcmY+PjJdfDApKzE2Pj4yXXwwKSsoa1soa1twZj4+Ml18MCkrND4+Ml08PDQpKzEyPj4yXT4+Ml18MCkhPShrW25hPj4yXXwwKSlHaihrW3JmPj4yXXwwLGtbKGtbcGY+PjJdfDApKzQ+PjJdfDApO3lmPShrW3FmPj4yXXwwKSsxNDR8MDtqW3lmPj4xXT1qW3lmPj4xXSYtMnwxO2tbdWY+PjJdPTE3fXdoaWxlKDApO2lmKGtbdWY+PjJdfDApYnJlYWsgYTticmVha31jYXNlIDEwMTp7a1tlYT4+Ml09a1soa1twZj4+Ml18MCkrND4+Ml07a1tkYT4+Ml09a1soa1twZj4+Ml18MCkrMTI+PjJdO0JnKGtbKGtbKGtbcmY+PjJdfDApKzE2Pj4yXXwwKSsoa1tlYT4+Ml08PDQpKzQ+PjJdfDAsa1tkYT4+Ml18MCxvYSk7d2Y9TUkoa1txZj4+Ml18MCxrW3BmPj4yXXwwKXwwO2tbZGQ+PjJdPXdmO3dmPWtbb2E+PjJdfDA7eWY9a1tkZD4+Ml18MDtrW3lmPj4yXT13ZjtrW3lmKzQ+PjJdPSgod2Z8MCk8MCk8PDMxPj4zMTticmVha31jYXNlIDEwMjp7a1t2Yz4+Ml09KGtbKGtbcmY+PjJdfDApKzE2Pj4yXXwwKSsoa1soa1twZj4+Ml18MCkrND4+Ml08PDQpO2I9TGcoa1soa1t2Yz4+Ml18MCkrND4+Ml18MCxrWyhrW3BmPj4yXXwwKSs4Pj4yXXwwLGtbKGtbcGY+PjJdfDApKzEyPj4yXXwwKXwwO2tbdWY+PjJdPWI7Yj1rW3BmPj4yXXwwO2lmKChrWyhrW3BmPj4yXXwwKSs4Pj4yXXwwKSE9MSl7aWYoKGtbYis4Pj4yXXwwKT09MilpWyhrWyhrW3ZjPj4yXXwwKSsxMj4+Ml18MCkrNzY+PjBdPWtbKGtbcGY+PjJdfDApKzEyPj4yXX1lbHNle2tba1soa1t2Yz4+Ml18MCkrMTI+PjJdPj4yXT1rW2IrMTI+PjJdO3lmPShrW3JmPj4yXXwwKSsyNHwwO2tbeWY+PjJdPWtbeWY+PjJdfDJ9aWYoKGtbKGtbcGY+PjJdfDApKzQ+PjJdfDApPT0xKXthaShrW3JmPj4yXXwwKTt5Zj0oa1txZj4+Ml18MCkrMTQ0fDA7alt5Zj4+MV09alt5Zj4+MV0mLTJ9aWYoa1t1Zj4+Ml18MClicmVhayBhO2JyZWFrfWNhc2UgMTAzOntrW2xjPj4yXT1rWyhrWyhrW3FmPj4yXXwwKSsxMTI+PjJdfDApKyhrWyhrW3BmPj4yXXwwKSs0Pj4yXTw8Mik+PjJdO2lmKChrW2xjPj4yXXwwKSE9MD8oa1soa1tsYz4+Ml18MCkrOD4+Ml18MCk9PShrWyhrW3BmPj4yXXwwKSs4Pj4yXXwwKTowKWQ9NDU4O2Vsc2UgZD00NDQ7YnJlYWt9Y2FzZSAxMDU6Y2FzZSAxMDQ6e2Q9NDQ0O2JyZWFrfWNhc2UgMTA3OmNhc2UgMTA2Ont5Zj1qSihrW3FmPj4yXXwwLGtbKGtbcGY+PjJdfDApKzQ+PjJdfDAsa1soa1twZj4+Ml18MCkrOD4+Ml18MCwtMSwwKXwwO2tbcWM+PjJdPXlmO2lmKCEoa1txYz4+Ml18MCkpe2Q9ODg5O2JyZWFrIGF9aVsoa1txYz4+Ml18MCkrMj4+MF09MTt5Zj0oa1txYz4+Ml18MCkrNXwwO2lbeWY+PjBdPWlbeWY+PjBdJi0yfDE7eWY9bGsoa1trW3JmPj4yXT4+Ml18MCwwLGtbcmY+PjJdfDAsKGtbcWM+PjJdfDApKzIwfDAsNXxsWyhrW3BmPj4yXXwwKSszPj4wXSwxMDU0KXwwO2tbdWY+PjJdPXlmO2lmKCEoa1t1Zj4+Ml18MCkpe3lmPXpnKGtbKGtbcWM+PjJdfDApKzIwPj4yXXwwLDEpfDA7a1t1Zj4+Ml09eWZ9ZG8gaWYoIShrW3VmPj4yXXwwKSl7eWY9a1soa1twZj4+Ml18MCkrMTY+PjJdfDA7a1tQYz4+Ml09eWY7Yj1rWyhrW3FjPj4yXXwwKSsyMD4+Ml18MDtpZigheWYpe3lmPWtKKGIsMSw0LDAsa1soa1txYz4+Ml18MCkrMTY+PjJdfDApfDA7a1t1Zj4+Ml09eWY7aVsoa1txYz4+Ml18MCkrND4+MF09MTticmVha315Zj1tSihiLERkLDJ8bFsoa1twZj4+Ml18MCkrMz4+MF0pfDA7a1t1Zj4+Ml09eWY7aWYoIShrW3VmPj4yXXwwKSl7a1soa1txYz4+Ml18MCkrMjQ+PjJdPWtbUGM+PjJdO3lmPWtKKGtbKGtbcWM+PjJdfDApKzIwPj4yXXwwLGtbRGQ+PjJdfDAsNCxrW1BjPj4yXXwwLGtbKGtbcWM+PjJdfDApKzE2Pj4yXXwwKXwwO2tbdWY+PjJdPXlmfWlbKGtbcWM+PjJdfDApKzQ+PjBdPTB9d2hpbGUoMCk7aWYoa1t1Zj4+Ml18MClicmVhayBhO3lmPShrW3FjPj4yXXwwKSs1fDA7aVt5Zj4+MF09aVt5Zj4+MF0mLTV8KChsWyhrW3BmPj4yXXwwKSszPj4wXXwwKSE9OCYxKTw8MiYyNTU7YnJlYWt9Y2FzZSAxMDg6e3lmPWpKKGtbcWY+PjJdfDAsa1soa1twZj4+Ml18MCkrND4+Ml18MCxrWyhrW3BmPj4yXXwwKSs4Pj4yXXwwLC0xLDEpfDA7a1tyYz4+Ml09eWY7aWYoIShrW3JjPj4yXXwwKSl7ZD04ODk7YnJlYWsgYX1rWyhrW3JjPj4yXXwwKSsyND4+Ml09a1soa1twZj4+Ml18MCkrMTY+PjJdO3lmPW5KKGtbcmY+PjJdfDAsa1soa1twZj4+Ml18MCkrMTI+PjJdfDAsa1tyYz4+Ml18MCl8MDtrW3VmPj4yXT15ZjtpZihrW3VmPj4yXXwwKWJyZWFrIGE7YnJlYWt9Y2FzZSAxMDk6e2tbeWI+PjJdPWtbKGtbKGtbcWY+PjJdfDApKzExMj4+Ml18MCkrKGtbKGtbcGY+PjJdfDApKzQ+PjJdPDwyKT4+Ml07Yz0oa1t5Yj4+Ml18MCkrMzJ8MDt5Zj1jO3dmPWtbeWY+PjJdfDA7eWY9a1t5Zis0Pj4yXXwwO2E9JFIod2Z8MCx5ZnwwLDEsMCl8MDtrW2M+PjJdPWE7a1tjKzQ+PjJdPUw7aWYoKHdmfDApPT0wJih5ZnwwKT09MClkPTE0O2JyZWFrfWNhc2UgMTEwOnt5Zj1qSihrW3FmPj4yXXwwLGtbKGtbcGY+PjJdfDApKzQ+PjJdfDAsa1soa1twZj4+Ml18MCkrMTI+PjJdfDAsLTEsMyl8MDtrW3NjPj4yXT15ZjtpZighKGtbc2M+PjJdfDApKXtkPTg4OTticmVhayBhfWlbKGtbc2M+PjJdfDApKzI+PjBdPTE7a1soa1tzYz4+Ml18MCkrMTY+PjJdPWtbKGtbcGY+PjJdfDApKzg+PjJdO2lbKGtbc2M+PjJdfDApKzQ+PjBdPTE7YnJlYWt9Y2FzZSAxMTE6e29KKGtbcWY+PjJdfDAsa1soa1soa1txZj4+Ml18MCkrMTEyPj4yXXwwKSsoa1soa1twZj4+Ml18MCkrND4+Ml08PDIpPj4yXXwwKTtrWyhrWyhrW3FmPj4yXXwwKSsxMTI+PjJdfDApKyhrWyhrW3BmPj4yXXwwKSs0Pj4yXTw8Mik+PjJdPTA7YnJlYWt9Y2FzZSAyNjpjYXNlIDI1OmNhc2UgMjQ6Y2FzZSAyMzp7a1t6Yj4+Ml09a1soa1soa1txZj4+Ml18MCkrMTEyPj4yXXwwKSsoa1soa1twZj4+Ml18MCkrND4+Ml08PDIpPj4yXTtrW2ViPj4yXT1sW2tbcGY+PjJdPj4wXTtrW0c+PjJdPTA7aVsoa1t6Yj4+Ml18MCkrMj4+MF09MDtpZihpWyhrW3piPj4yXXwwKSs0Pj4wXXwwKXtrW0xjPj4yXT0oa1tlPj4yXXwwKSsoKGtbKGtbcGY+PjJdfDApKzEyPj4yXXwwKSo0MHwwKTtpZigobVsoa1tMYz4+Ml18MCkrOD4+MV0mMTR8MCk9PTIpTGgoa1tMYz4+Ml18MCwwKTt3Zj1raChrW0xjPj4yXXwwKXwwO3lmPWxhO2tbeWY+PjJdPXdmO2tbeWYrND4+Ml09TDtkbyBpZighKG1bKGtbTGM+PjJdfDApKzg+PjFdJjQpKXtpZighKG1bKGtbTGM+PjJdfDApKzg+PjFdJjgpKXtkPTE0O2JyZWFrIGR9eWY9bGE7aWYoK3Bba1tMYz4+Ml0+PjNdPCsoKGtbeWY+PjJdfDApPj4+MCkrNDI5NDk2NzI5Ni4wKisoa1t5Zis0Pj4yXXwwKSl7aWYoa1tlYj4+Ml0mMSlicmVhaztrW2ViPj4yXT0oa1tlYj4+Ml18MCkrLTE7YnJlYWt9eWY9bGE7aWYoK3Bba1tMYz4+Ml0+PjNdPisoKGtbeWY+PjJdfDApPj4+MCkrNDI5NDk2NzI5Ni4wKisoa1t5Zis0Pj4yXXwwKT8oa1tlYj4+Ml0mMXwwKT09MTowKWtbZWI+PjJdPShrW2ViPj4yXXwwKSsxfXdoaWxlKDApO2M9bGE7Yz1ZRihrWyhrW3piPj4yXXwwKSsxNj4+Ml18MCwwLGtbYz4+Ml18MCxrW2MrND4+Ml18MCwwLFFkKXwwO2tbdWY+PjJdPWM7Yz1sYTt3Zj1rW2MrND4+Ml18MDt5Zj0oa1t6Yj4+Ml18MCkrNDB8MDtrW3lmPj4yXT1rW2M+PjJdO2tbeWYrND4+Ml09d2Y7aWYoa1t1Zj4+Ml18MClicmVhayBhO2Vsc2UgZD00OTN9ZWxzZXtpZihwSihrWyhrW3piPj4yXXwwKSsxNj4+Ml18MCwyKXwwKWtbRz4+Ml09MTtrW1ZhPj4yXT1rWyhrW3BmPj4yXXwwKSsxNj4+Ml07a1tHZD4+Ml09a1soa1t6Yj4+Ml18MCkrMjQ+PjJdO2pbR2QrOD4+MV09a1tWYT4+Ml07aVtHZCsxMD4+MF09KDEmKGtbZWI+PjJdfDApLTIzfDApIT0wPy0xOjE7a1tHZCs0Pj4yXT0oa1tlPj4yXXwwKSsoKGtbKGtbcGY+PjJdfDApKzEyPj4yXXwwKSo0MHwwKTtpW0dkKzE0Pj4wXT0wO3lmPVlGKGtbKGtbemI+PjJdfDApKzE2Pj4yXXwwLEdkLDAsMCwwLFFkKXwwO2tbdWY+PjJdPXlmO2lmKGtbdWY+PjJdfDApYnJlYWsgYTtpZighKChrW0c+PjJdfDApIT0wPyhsW0dkKzE0Pj4wXXwwKT09MDowKSlkPTQ5M31kbyBpZigoZHwwKT09NDkzKXtkPTA7aVsoa1t6Yj4+Ml18MCkrMz4+MF09MDtrWyhrW3piPj4yXXwwKSs1Nj4+Ml09MDtiPWtbUWQ+PjJdfDA7aWYoKGtbZWI+PjJdfDApPj0yNSl7aWYoKGJ8MCk+PTA/ISgoa1tRZD4+Ml18MCk9PTAmKGtbZWI+PjJdfDApPT0yNik6MCl7a1tRZD4+Ml09MDticmVha31rW1FkPj4yXT0wO3lmPUxGKGtbKGtbemI+PjJdfDApKzE2Pj4yXXwwLFFkKXwwO2tbdWY+PjJdPXlmO2lmKGtbdWY+PjJdfDApYnJlYWsgYTtlbHNlIGJyZWFrfWVsc2V7aWYoKGJ8MCk8PTA/ISgoa1tRZD4+Ml18MCk9PTAmKGtbZWI+PjJdfDApPT0yMyk6MCl7eWY9cUooa1soa1t6Yj4+Ml18MCkrMTY+PjJdfDApfDA7a1tRZD4+Ml09eWY7YnJlYWt9a1tRZD4+Ml09MDt5Zj1NRihrWyhrW3piPj4yXXwwKSsxNj4+Ml18MCxRZCl8MDtrW3VmPj4yXT15ZjtpZihrW3VmPj4yXXwwKWJyZWFrIGE7ZWxzZSBicmVha319d2hpbGUoMCk7aWYoIShrW1FkPj4yXXwwKSl7aWYoa1tHPj4yXXwwKWtbcGY+PjJdPShrW3BmPj4yXXwwKSsyMH1lbHNlIGQ9MTQ7YnJlYWt9Y2FzZSAzMTpjYXNlIDMwOmNhc2UgMjk6e2tbQWI+PjJdPWtbKGtbKGtbcWY+PjJdfDApKzExMj4+Ml18MCkrKGtbKGtbcGY+PjJdfDApKzQ+PjJdPDwyKT4+Ml07a1tMYz4+Ml09KGtbZT4+Ml18MCkrKChrWyhrW3BmPj4yXXwwKSsxMj4+Ml18MCkqNDB8MCk7a1tHYz4+Ml09MDtiPWtbKGtbQWI+PjJdfDApKzI0Pj4yXXwwO2lmKChrWyhrW3BmPj4yXXwwKSsxNj4+Ml18MCk+MCl7a1tIZD4+Ml09YjtqW0hkKzg+PjFdPWtbKGtbcGY+PjJdfDApKzE2Pj4yXTtrW0hkKzQ+PjJdPWtbTGM+PjJdO2tbSGM+PjJdPUhkfWVsc2V7eWY9V0YoYixvLDE4MyxHYyl8MDtrW0hjPj4yXT15ZjtpZighKGtbSGM+PjJdfDApKXtkPTg4OTticmVhayBhfWlmKG1bKGtbTGM+PjJdfDApKzg+PjFdJjE2Mzg0KWdoKGtbTGM+PjJdfDApfDA7WEYoa1soa1tBYj4+Ml18MCkrMjQ+PjJdfDAsa1soa1tMYz4+Ml18MCkrMTI+PjJdfDAsa1soa1tMYz4+Ml18MCkrMTY+PjJdfDAsa1tIYz4+Ml18MCl9aVsoa1tIYz4+Ml18MCkrMTA+PjBdPTA7a1ttZT4+Ml09MDtoOmRvIGlmKChsW2tbcGY+PjJdPj4wXXwwKT09Mjkpe2tbd2E+PjJdPTA7d2hpbGUoMSl7aWYoKGtbd2E+PjJdfDApPj0obVsoa1tIYz4+Ml18MCkrOD4+MV18MCkpYnJlYWsgaDtpZihtWyhrWyhrW0hjPj4yXXwwKSs0Pj4yXXwwKSsoKGtbd2E+PjJdfDApKjQwfDApKzg+PjFdJjEpYnJlYWs7a1t3YT4+Ml09KGtbd2E+PjJdfDApKzF9a1ttZT4+Ml09MX13aGlsZSgwKTt5Zj1ZRihrWyhrW0FiPj4yXXwwKSsxNj4+Ml18MCxrW0hjPj4yXXwwLDAsMCwwLFJkKXwwO2tbdWY+PjJdPXlmO2JnKGtbcmY+PjJdfDAsa1tHYz4+Ml18MCk7aWYoa1t1Zj4+Ml18MClicmVhayBhO2tbKGtbQWI+PjJdfDApKzI4Pj4yXT1rW1JkPj4yXTtrW3M+PjJdPShrW1JkPj4yXXwwKT09MCYxO2lbKGtbQWI+PjJdfDApKzI+PjBdPTEtKGtbcz4+Ml18MCk7aVsoa1tBYj4+Ml18MCkrMz4+MF09MDtrWyhrW0FiPj4yXXwwKSs1Nj4+Ml09MDtpZigobFtrW3BmPj4yXT4+MF18MCk9PTMxKWlmKGtbcz4+Ml18MCl7ZD0xNDticmVhayBkfWVsc2UgYnJlYWsgZDtlbHNlIGlmKChrW21lPj4yXXwwKT09MCYoa1tzPj4yXXwwKSE9MClicmVhayBkO2Vsc2V7ZD0xNDticmVhayBkfX1jYXNlIDMyOntrW0xjPj4yXT0oa1tlPj4yXXwwKSsoKGtbKGtbcGY+PjJdfDApKzEyPj4yXXwwKSo0MHwwKTtpZigobVsoa1tMYz4+Ml18MCkrOD4+MV0mNHwwKT09MD8oVngoa1tMYz4+Ml18MCw2NyxpW0Y+PjBdfDApLChtWyhrW0xjPj4yXXwwKSs4Pj4xXSY0fDApPT0wKTowKWQ9MTQ7ZWxzZSBkPTUyMzticmVha31jYXNlIDMzOntkPTUyMzticmVha31jYXNlIDExMzp7eWY9TUkoa1txZj4+Ml18MCxrW3BmPj4yXXwwKXwwO2tbZGQ+PjJdPXlmO3lmPShrWyhrWyhrW3FmPj4yXXwwKSsxMTI+PjJdfDApKyhrWyhrW3BmPj4yXXwwKSs0Pj4yXTw8Mik+PjJdfDApKzMyfDA7d2Y9eWY7Yz1rW3dmPj4yXXwwO3dmPWtbd2YrND4+Ml18MDthPSRSKGN8MCx3ZnwwLDEsMCl8MDtrW3lmPj4yXT1hO2tbeWYrND4+Ml09TDt5Zj1rW2RkPj4yXXwwO2tbeWY+PjJdPWM7a1t5Zis0Pj4yXT13ZjticmVha31jYXNlIDExNDp7eWY9cWU7a1t5Zj4+Ml09MDtrW3lmKzQ+PjJdPTA7a1tUZD4+Ml09MDt5Zj1NSShrW3FmPj4yXXwwLGtbcGY+PjJdfDApfDA7a1tkZD4+Ml09eWY7a1tDYj4+Ml09a1soa1soa1txZj4+Ml18MCkrMTEyPj4yXXwwKSsoa1soa1twZj4+Ml18MCkrND4+Ml08PDIpPj4yXTtkbyBpZighKChsWyhrW0NiPj4yXXwwKSs1Pj4wXXwwKT4+PjEmMSkpe3lmPXJKKGtbKGtbQ2I+PjJdfDApKzE2Pj4yXXwwLFRkKXwwO2tbdWY+PjJdPXlmO2lmKGtbdWY+PjJdfDApYnJlYWsgYTtpZihrW1RkPj4yXXwwKXt5Zj1xZTtrW3lmPj4yXT0xO2tbeWYrND4+Ml09MDticmVha313Zj1rSShrWyhrW0NiPj4yXXwwKSsxNj4+Ml18MCl8MDt5Zj1xZTtrW3lmPj4yXT13ZjtrW3lmKzQ+PjJdPUw7eWY9cWU7d2Y9a1t5Zis0Pj4yXXwwO2lmKCh3ZnwwKT4yMTQ3NDgzNjQ3fCh3ZnwwKT09MjE0NzQ4MzY0NyYoa1t5Zj4+Ml18MCk+Pj4wPj00Mjk0OTY3Mjk1KXt5Zj0oa1tDYj4+Ml18MCkrNXwwO2lbeWY+PjBdPWlbeWY+PjBdJi0zfDI7YnJlYWt9ZWxzZXt3Zj1xZTt3Zj0kUihrW3dmPj4yXXwwLGtbd2YrND4+Ml18MCwxLDApfDA7eWY9cWU7a1t5Zj4+Ml09d2Y7a1t5Zis0Pj4yXT1MO2JyZWFrfX13aGlsZSgwKTtpZihrWyhrW3BmPj4yXXwwKSsxMj4+Ml18MCl7aWYoa1soa1txZj4+Ml18MCkrMTg0Pj4yXXwwKXtrW0NjPj4yXT1rWyhrW3FmPj4yXXwwKSsxODQ+PjJdO3doaWxlKDEpe2lmKCEoa1soa1tDYz4+Ml18MCkrND4+Ml18MCkpYnJlYWs7a1tDYz4+Ml09a1soa1tDYz4+Ml18MCkrND4+Ml19a1tTYz4+Ml09KGtbKGtbQ2M+PjJdfDApKzE2Pj4yXXwwKSsoKGtbKGtbcGY+PjJdfDApKzEyPj4yXXwwKSo0MHwwKX1lbHNlIGtbU2M+PjJdPShrW2U+PjJdfDApKygoa1soa1twZj4+Ml18MCkrMTI+PjJdfDApKjQwfDApO194KGtbU2M+PjJdfDApfDA7eWY9a1tTYz4+Ml18MDtpZigoa1t5Zj4+Ml18MCk9PS0xPyhrW3lmKzQ+PjJdfDApPT0yMTQ3NDgzNjQ3OjApe2Q9NTQ0O2JyZWFrIGN9aWYoKGxbKGtbQ2I+PjJdfDApKzU+PjBdfDApPj4+MSYxKXtkPTU0NDticmVhayBjfWE9cWU7d2Y9a1thPj4yXXwwO2E9a1thKzQ+PjJdfDA7eWY9a1tTYz4+Ml18MDt5Zj0kUihrW3lmPj4yXXwwLGtbeWYrND4+Ml18MCwxLDApfDA7Yz1MO2lmKChhfDApPChjfDApfChhfDApPT0oY3wwKSZ3Zj4+PjA8eWY+Pj4wKXt3Zj1rW1NjPj4yXXwwO3dmPSRSKGtbd2Y+PjJdfDAsa1t3Zis0Pj4yXXwwLDEsMCl8MDt5Zj1xZTtrW3lmPj4yXT13ZjtrW3lmKzQ+PjJdPUx9Yz1xZTt3Zj1rW2MrND4+Ml18MDt5Zj1rW1NjPj4yXXwwO2tbeWY+PjJdPWtbYz4+Ml07a1t5Zis0Pj4yXT13Zn1pZigobFsoa1tDYj4+Ml18MCkrNT4+MF18MCk+Pj4xJjEpe2tbQj4+Ml09MDtkb3thZSg4LHFlKTtjPXFlO3lmPWtbYys0Pj4yXSYxMDczNzQxODIzO3dmPXFlO2tbd2Y+PjJdPWtbYz4+Ml07a1t3Zis0Pj4yXT15Zjt3Zj1xZTt3Zj0kUihrW3dmPj4yXXwwLGtbd2YrND4+Ml18MCwxLDApfDA7eWY9cWU7a1t5Zj4+Ml09d2Y7a1t5Zis0Pj4yXT1MO3lmPXFlO3lmPVlGKGtbKGtbQ2I+PjJdfDApKzE2Pj4yXXwwLDAsa1t5Zj4+Ml18MCxrW3lmKzQ+PjJdfDAsMCxUZCl8MDtrW3VmPj4yXT15ZjtpZighKCh5ZnwwKT09MCYoa1tUZD4+Ml18MCk9PTApKWJyZWFrO3lmPShrW0I+PjJdfDApKzF8MDtrW0I+PjJdPXlmfXdoaWxlKCh5ZnwwKTwxMDApO2lmKGtbdWY+PjJdfDApYnJlYWsgYTtpZighKGtbVGQ+PjJdfDApKXtkPTU1NDticmVhayBjfX1pWyhrW0NiPj4yXXwwKSszPj4wXT0wO2tbKGtbQ2I+PjJdfDApKzU2Pj4yXT0wO2M9cWU7d2Y9a1tjKzQ+PjJdfDA7eWY9a1tkZD4+Ml18MDtrW3lmPj4yXT1rW2M+PjJdO2tbeWYrND4+Ml09d2Y7YnJlYWt9Y2FzZSAxMTY6Y2FzZSAxMTU6e2tbaWI+PjJdPTA7a1t0Yz4+Ml09KGtbZT4+Ml18MCkrKChrWyhrW3BmPj4yXXwwKSs4Pj4yXXwwKSo0MHwwKTtrW0RiPj4yXT1rWyhrWyhrW3FmPj4yXXwwKSsxMTI+PjJdfDApKyhrWyhrW3BmPj4yXXwwKSs0Pj4yXTw8Mik+PjJdO2I9a1soa1twZj4+Ml18MCkrMTI+PjJdfDA7aWYoKGxba1twZj4+Ml0+PjBdfDApPT0xMTUpe2tbTWM+PjJdPShrW2U+PjJdfDApKyhiKjQwfDApO2M9a1tNYz4+Ml18MDt3Zj1rW2MrND4+Ml18MDt5Zj1MZSs4fDA7a1t5Zj4+Ml09a1tjPj4yXTtrW3lmKzQ+PjJdPXdmfWVsc2V7eWY9TGUrOHwwO2tbeWY+PjJdPWI7a1t5Zis0Pj4yXT0oKGJ8MCk8MCk8PDMxPj4zMX1pZigoaVsoa1twZj4+Ml18MCkrMT4+MF18MCk9PS0yMD8oa1soa1tyZj4+Ml18MCkrMjIwPj4yXXwwKSE9MDowKXtrW1VlPj4yXT1rWyhrWyhrW3JmPj4yXXwwKSsxNj4+Ml18MCkrKGlbKGtbRGI+PjJdfDApKzE+PjBdPDw0KT4+Ml07a1tsZD4+Ml09a1soa1twZj4+Ml18MCkrMTY+PjJdO2tbaWI+PjJdPShsWyhrW3BmPj4yXXwwKSszPj4wXSY0fDApIT0wPzIzOjE4fWVsc2V7a1tsZD4+Ml09MDtrW1VlPj4yXT0wfWlmKGxbKGtbcGY+PjJdfDApKzM+PjBdJjEpe3lmPShrW3FmPj4yXXwwKSs0NHwwO2tbeWY+PjJdPShrW3lmPj4yXXwwKSsxfWlmKGxbKGtbcGY+PjJdfDApKzM+PjBdJjIpe3dmPUxlKzh8MDtjPWtbd2Y+PjJdfDA7d2Y9a1t3Zis0Pj4yXXwwO3lmPXNmO2tbeWY+PjJdPWM7a1t5Zis0Pj4yXT13Zjt5Zj0oa1tyZj4+Ml18MCkrMzJ8MDtrW3lmPj4yXT1jO2tbeWYrND4+Ml09d2Z9aWYobVsoa1t0Yz4+Ml18MCkrOD4+MV0mMSl7a1tMZSsxNj4+Ml09MDtrW0xlKzIwPj4yXT0wfWVsc2V7a1tMZSsxNj4+Ml09a1soa1t0Yz4+Ml18MCkrMTY+PjJdO2tbTGUrMjA+PjJdPWtbKGtbdGM+PjJdfDApKzEyPj4yXX1pZihsWyhrW3BmPj4yXXwwKSszPj4wXSYxNiliPWtbKGtbRGI+PjJdfDApKzI4Pj4yXXwwO2Vsc2UgYj0wO2tbZ2U+PjJdPWI7aWYobVsoa1t0Yz4+Ml18MCkrOD4+MV0mMTYzODQpa1tMZSsyND4+Ml09a1trW3RjPj4yXT4+Ml07ZWxzZSBrW0xlKzI0Pj4yXT0wO2tbTGU+PjJdPTA7eWY9c0ooa1soa1tEYj4+Ml18MCkrMTY+PjJdfDAsTGUsKGxbKGtbcGY+PjJdfDApKzM+PjBdJjh8MCkhPTAmMSxrW2dlPj4yXXwwKXwwO2tbdWY+PjJdPXlmO2lbKGtbRGI+PjJdfDApKzM+PjBdPTA7a1soa1tEYj4+Ml18MCkrNTY+PjJdPTA7aWYoa1t1Zj4+Ml18MClicmVhayBhO2lmKChrW2liPj4yXXwwKSE9MD8oa1soa1tyZj4+Ml18MCkrMjIwPj4yXXwwKSE9MDowKXt5Zj1MZSs4fDA7ZmNba1soa1tyZj4+Ml18MCkrMjIwPj4yXSYyNTVdKGtbKGtbcmY+PjJdfDApKzIxNj4+Ml18MCxrW2liPj4yXXwwLGtbVWU+PjJdfDAsa1trW2xkPj4yXT4+Ml18MCxrW3lmPj4yXXwwLGtbeWYrND4+Ml18MCl9YnJlYWt9Y2FzZSAxMTc6e2tbamI+PjJdPWtbKGtbcGY+PjJdfDApKzg+PjJdO2tbRWI+PjJdPWtbKGtbKGtbcWY+PjJdfDApKzExMj4+Ml18MCkrKGtbKGtbcGY+PjJdfDApKzQ+PjJdPDwyKT4+Ml07aWYoKGlbKGtbcGY+PjJdfDApKzE+PjBdfDApPT0tMjA/KGtbKGtbcmY+PjJdfDApKzIyMD4+Ml18MCkhPTA6MCl7a1tWZT4+Ml09a1soa1soa1tyZj4+Ml18MCkrMTY+PjJdfDApKyhpWyhrW0ViPj4yXXwwKSsxPj4wXTw8NCk+PjJdO2tbbWQ+PjJdPWtbKGtbcGY+PjJdfDApKzE2Pj4yXTtpZigobFsoa1twZj4+Ml18MCkrMz4+MF0mMnwwKSE9MD8obFsoa1tFYj4+Ml18MCkrND4+MF18MCkhPTA6MCl7d2Y9a0koa1soa1tFYj4+Ml18MCkrMTY+PjJdfDApfDA7eWY9KGtbRWI+PjJdfDApKzQwfDA7a1t5Zj4+Ml09d2Y7a1t5Zis0Pj4yXT1MfX1lbHNle2tbVmU+PjJdPTA7a1ttZD4+Ml09MH15Zj10SihrWyhrW0ViPj4yXXwwKSsxNj4+Ml18MCxpWyhrW3BmPj4yXXwwKSszPj4wXXwwKXwwO2tbdWY+PjJdPXlmO2tbKGtbRWI+PjJdfDApKzU2Pj4yXT0wO2lmKGtbdWY+PjJdfDApYnJlYWsgYTtpZigoKGtbamI+PjJdJjF8MCkhPTA/KHlmPShrW3FmPj4yXXwwKSs0NHwwLGtbeWY+PjJdPShrW3lmPj4yXXwwKSsxLChrWyhrW3JmPj4yXXwwKSsyMjA+PjJdfDApIT0wKTowKT8obFsoa1ttZD4+Ml18MCkrNDI+PjBdJjMyfDApPT0wOjApe3lmPShrW0ViPj4yXXwwKSs0MHwwO2ZjW2tbKGtbcmY+PjJdfDApKzIyMD4+Ml0mMjU1XShrWyhrW3JmPj4yXXwwKSsyMTY+PjJdfDAsOSxrW1ZlPj4yXXwwLGtba1ttZD4+Ml0+PjJdfDAsa1t5Zj4+Ml18MCxrW3lmKzQ+PjJdfDApfWJyZWFrfWNhc2UgMTE4OntJSShrW3JmPj4yXXwwLGtbKGtbcWY+PjJdfDApKzQ0Pj4yXXwwKTtrWyhrW3FmPj4yXXwwKSs0ND4+Ml09MDticmVha31jYXNlIDExOTp7a1tGYj4+Ml09a1soa1soa1txZj4+Ml18MCkrMTEyPj4yXXwwKSsoa1soa1twZj4+Ml18MCkrND4+Ml08PDIpPj4yXTtrW0xjPj4yXT0oa1tlPj4yXXwwKSsoKGtbKGtbcGY+PjJdfDApKzEyPj4yXXwwKSo0MHwwKTtrW1hhPj4yXT1rWyhrW3BmPj4yXXwwKSsxNj4+Ml07a1tWZD4+Ml09MDt5Zj11SihrW0ZiPj4yXXwwLGtbTGM+PjJdfDAsa1tYYT4+Ml18MCxWZCl8MDtrW3VmPj4yXT15ZjtpZihrW3VmPj4yXXwwKWJyZWFrIGE7aWYoa1tWZD4+Ml18MClkPTE0O2JyZWFrfWNhc2UgMTIwOntrW2RkPj4yXT0oa1tlPj4yXXwwKSsoKGtbKGtbcGY+PjJdfDApKzg+PjJdfDApKjQwfDApO2tbR2I+PjJdPWtbKGtbKGtbcWY+PjJdfDApKzExMj4+Ml18MCkrKGtbKGtbcGY+PjJdfDApKzQ+PjJdPDwyKT4+Ml07eWY9dkooa1tHYj4+Ml18MCxrW2RkPj4yXXwwKXwwO2tbdWY+PjJdPXlmO2lmKGtbdWY+PjJdfDApYnJlYWsgYTtrWyhrWyhrWyhrW3FmPj4yXXwwKSsxMTI+PjJdfDApKyhrWyhrW3BmPj4yXXwwKSsxMj4+Ml08PDIpPj4yXXwwKSs1Nj4+Ml09MDticmVha31jYXNlIDEyMjpjYXNlIDEyMTp7a1tkZD4+Ml09KGtbZT4+Ml18MCkrKChrWyhrW3BmPj4yXXwwKSs4Pj4yXXwwKSo0MHwwKTtrW0hiPj4yXT1rWyhrWyhrW3FmPj4yXXwwKSsxMTI+PjJdfDApKyhrWyhrW3BmPj4yXXwwKSs0Pj4yXTw8Mik+PjJdO2tbWGI+PjJdPWtbKGtbSGI+PjJdfDApKzE2Pj4yXTt5Zj1sSShrW1hiPj4yXXwwKXwwO2tbSGE+PjJdPXlmO2lmKChrW0hhPj4yXXwwKT4+PjA+KGtbKGtbcmY+PjJdfDApKzk2Pj4yXXwwKT4+PjApe2Q9ODg4O2JyZWFrIGN9aWYoWHgoa1tkZD4+Ml18MCwoa1tIYT4+Ml18MCk+Pj4wPjMyP2tbSGE+PjJdfDA6MzIpfDApe2Q9ODg5O2JyZWFrIGF9a1soa1tkZD4+Ml18MCkrMTI+PjJdPWtbSGE+PjJdO2pbKGtbZGQ+PjJdfDApKzg+PjFdPW1bKGtbZGQ+PjJdfDApKzg+PjFdJi00OTY2NHwxNjtiPWtbWGI+PjJdfDA7YT1rW0hhPj4yXXwwO2M9a1soa1tkZD4+Ml18MCkrMTY+PjJdfDA7aWYoIShsWyhrW0hiPj4yXXwwKSs0Pj4wXXwwKSl7eWY9bUkoYiwwLGEsYyl8MDtrW3VmPj4yXT15Zn1lbHNle3lmPV9oKGIsMCxhLGMpfDA7a1t1Zj4+Ml09eWZ9aWYoa1t1Zj4+Ml18MClicmVhayBhO2lbKGtbZGQ+PjJdfDApKzEwPj4wXT0xO2JyZWFrfWNhc2UgMTIzOnt5Zj1NSShrW3FmPj4yXXwwLGtbcGY+PjJdfDApfDA7a1tkZD4+Ml09eWY7a1tJYj4+Ml09a1soa1soa1txZj4+Ml18MCkrMTEyPj4yXXwwKSsoa1soa1twZj4+Ml18MCkrND4+Ml08PDIpPj4yXTtpZihpWyhrW0liPj4yXXwwKSsyPj4wXXwwKXtqWyhrW2RkPj4yXXwwKSs4Pj4xXT0xO2JyZWFrIGR9Yj1rW0liPj4yXXwwO2RvIGlmKCEoaVsoa1tJYj4+Ml18MCkrMz4+MF18MCkpe2E9a1tJYj4+Ml18MDtpZigobFtiPj4wXXwwKT09Mil7a1t0ZD4+Ml09a1trW2ErMTY+PjJdPj4yXTtrW1hjPj4yXT1rW2tbdGQ+PjJdPj4yXTt5Zj1nY1trWyhrW1hjPj4yXXwwKSs0OD4+Ml0mMjU1XShrWyhrW0liPj4yXXwwKSsxNj4+Ml18MCx0ZSl8MDtrW3VmPj4yXT15Zjt3SihrW3FmPj4yXXwwLGtbdGQ+PjJdfDApO2lmKGtbdWY+PjJdfDApYnJlYWsgYTtlbHNlIGJyZWFrfXlmPXhKKGEpfDA7a1t1Zj4+Ml09eWY7aWYoa1t1Zj4+Ml18MClicmVhayBhO2lmKGlbKGtbSWI+PjJdfDApKzI+PjBdfDApe2pbKGtbZGQ+PjJdfDApKzg+PjFdPTE7YnJlYWsgZH1lbHNle3dmPWtJKGtbKGtbSWI+PjJdfDApKzE2Pj4yXXwwKXwwO3lmPXRlO2tbeWY+PjJdPXdmO2tbeWYrND4+Ml09TDticmVha319ZWxzZXtjPWIrNDB8MDt3Zj1rW2MrND4+Ml18MDt5Zj10ZTtrW3lmPj4yXT1rW2M+PjJdO2tbeWYrND4+Ml09d2Z9d2hpbGUoMCk7Yz10ZTt3Zj1rW2MrND4+Ml18MDt5Zj1rW2RkPj4yXXwwO2tbeWY+PjJdPWtbYz4+Ml07a1t5Zis0Pj4yXT13ZjticmVha31jYXNlIDEyNDp7a1tKYj4+Ml09a1soa1soa1txZj4+Ml18MCkrMTEyPj4yXXwwKSsoa1soa1twZj4+Ml18MCkrND4+Ml08PDIpPj4yXTtpWyhrW0piPj4yXXwwKSsyPj4wXT0xO2tbKGtbSmI+PjJdfDApKzU2Pj4yXT0wO2lmKCEobFtrW0piPj4yXT4+MF18MCkpWkIoa1soa1tKYj4+Ml18MCkrMTY+PjJdfDApO2JyZWFrfWNhc2UgNTM6e2tbS2I+PjJdPWtbKGtbKGtbcWY+PjJdfDApKzExMj4+Ml18MCkrKGtbKGtbcGY+PjJdfDApKzQ+PjJdPDwyKT4+Ml07a1taYj4+Ml09a1soa1tLYj4+Ml18MCkrMTY+PjJdO2tbV2Q+PjJdPTA7eWY9ckooa1taYj4+Ml18MCxXZCl8MDtrW3VmPj4yXT15ZjtpWyhrW0tiPj4yXXwwKSsyPj4wXT1rW1dkPj4yXTtpWyhrW0tiPj4yXXwwKSszPj4wXT0wO2tbKGtbS2I+PjJdfDApKzU2Pj4yXT0wO2tbKGtbS2I+PjJdfDApKzI4Pj4yXT1rWyhrW3BmPj4yXXwwKSsxMj4+Ml07aWYoa1t1Zj4+Ml18MClicmVhayBhO2lmKChrW1dkPj4yXXwwKSE9MD8oa1soa1twZj4+Ml18MCkrOD4+Ml18MCk+MDowKWQ9MTQ7YnJlYWt9Y2FzZSA1NjpjYXNlIDU1OntkPShrW3FmPj4yXXwwKSsxNTYrOHwwO2tbZD4+Ml09KGtbZD4+Ml18MCkrMTtkPTYxNzticmVha31jYXNlIDU3OntkPTYxNzticmVha31jYXNlIDM6e2tbTWI+PjJdPWtbKGtbKGtbcWY+PjJdfDApKzExMj4+Ml18MCkrKGtbKGtbcGY+PjJdfDApKzQ+PjJdPDwyKT4+Ml07a1tZZD4+Ml09MDtkPUFKKGtbcmY+PjJdfDAsa1tNYj4+Ml18MCxZZCl8MDtrW3VmPj4yXT1kO2Q9NjI1O2JyZWFrfWNhc2UgNTpjYXNlIDQ6e2lmKGtbKGtbKGtbcWY+PjJdfDApKzExMj4+Ml18MCkrKGtbKGtbcGY+PjJdfDApKzQ+PjJdPDwyKT4+Ml18MClkPTYyNDticmVha31jYXNlIDc6Y2FzZSA2OntkPTYyNDticmVha31jYXNlIDEyNjpjYXNlIDEyNTp7a1tOYj4+Ml09a1soa1soa1txZj4+Ml18MCkrMTEyPj4yXXwwKSsoa1soa1twZj4+Ml18MCkrND4+Ml08PDIpPj4yXTtrW0tjPj4yXT0oa1tlPj4yXXwwKSsoKGtbKGtbcGY+PjJdfDApKzg+PjJdfDApKjQwfDApO2lmKGxbKGtbcGY+PjJdfDApKzM+PjBdJjEpe3lmPShrW3FmPj4yXXwwKSs0NHwwO2tbeWY+PjJdPShrW3lmPj4yXXwwKSsxfWlmKG1bKGtbS2M+PjJdfDApKzg+PjFdJjE2Mzg0KWI9Z2goa1tLYz4+Ml18MCl8MDtlbHNlIGI9MDtrW3VmPj4yXT1iO2lmKGtbdWY+PjJdfDApYnJlYWsgYTtpZigobFtrW3BmPj4yXT4+MF18MCk9PTEyNSl7eWY9Qkooa1tOYj4+Ml18MCxrW0tjPj4yXXwwKXwwO2tbdWY+PjJdPXlmfWVsc2V7d2Y9a1soa1tLYz4+Ml18MCkrMTI+PjJdfDA7eWY9TmUrOHwwO2tbeWY+PjJdPXdmO2tbeWYrND4+Ml09KCh3ZnwwKTwwKTw8MzE+PjMxO2tbTmU+PjJdPWtbKGtbS2M+PjJdfDApKzE2Pj4yXTtpZihsWyhrW3BmPj4yXXwwKSszPj4wXSYxNiliPWtbKGtbTmI+PjJdfDApKzI4Pj4yXXwwO2Vsc2UgYj0wO3lmPXNKKGtbKGtbTmI+PjJdfDApKzE2Pj4yXXwwLE5lLGtbKGtbcGY+PjJdfDApKzEyPj4yXXwwLGIpfDA7a1t1Zj4+Ml09eWY7a1soa1tOYj4+Ml18MCkrNTY+PjJdPTB9aWYoa1t1Zj4+Ml18MClicmVhayBhO2JyZWFrfWNhc2UgMTI3OntrW09iPj4yXT1rWyhrWyhrW3FmPj4yXXwwKSsxMTI+PjJdfDApKyhrWyhrW3BmPj4yXXwwKSs0Pj4yXTw8Mik+PjJdO2tbYWM+PjJdPWtbKGtbT2I+PjJdfDApKzE2Pj4yXTtrW0lkPj4yXT1rWyhrW09iPj4yXXwwKSsyND4+Ml07altJZCs4Pj4xXT1rWyhrW3BmPj4yXXwwKSsxMj4+Ml07aVtJZCsxMD4+MF09MDtrW0lkKzQ+PjJdPShrW2U+PjJdfDApKygoa1soa1twZj4+Ml18MCkrOD4+Ml18MCkqNDB8MCk7eWY9WUYoa1thYz4+Ml18MCxJZCwwLDAsMCxaZCl8MDtrW3VmPj4yXT15ZjtpZihrW3VmPj4yXXwwKWJyZWFrIGE7aWYoKGtbWmQ+PjJdfDApPT0wPyh5Zj10SihrW2FjPj4yXXwwLDQpfDAsa1t1Zj4+Ml09eWYsKGtbdWY+PjJdfDApIT0wKTowKWJyZWFrIGE7a1soa1tPYj4+Ml18MCkrNTY+PjJdPTA7YnJlYWt9Y2FzZSAxMjk6Y2FzZSAxMjg6e2tbUGI+PjJdPWtbKGtbKGtbcWY+PjJdfDApKzExMj4+Ml18MCkrKGtbKGtbcGY+PjJdfDApKzQ+PjJdPDwyKT4+Ml07eWY9eEooa1tQYj4+Ml18MCl8MDtrW3VmPj4yXT15ZjtpZihrW3VmPj4yXXwwKWJyZWFrIGE7aWYoaVsoa1tQYj4+Ml18MCkrMj4+MF18MCl7c2goKGtbZT4+Ml18MCkrKChrWyhrW3BmPj4yXXwwKSs4Pj4yXXwwKSo0MHwwKXwwKTticmVhayBkfXlmPWJlO2tbeWY+PjJdPTA7a1t5Zis0Pj4yXT0wO3lmPUNKKGtbcmY+PjJdfDAsa1soa1tQYj4+Ml18MCkrMTY+PjJdfDAsYmUpfDA7a1t1Zj4+Ml09eWY7aWYoa1t1Zj4+Ml18MClicmVhayBhO2lmKChsW2tbcGY+PjJdPj4wXXwwKT09MTI4KXtrW25kPj4yXT1rWyhrWyhrW3FmPj4yXXwwKSsxMTI+PjJdfDApKyhrWyhrW3BmPj4yXXwwKSsxMj4+Ml08PDIpPj4yXTtpWyhrW25kPj4yXXwwKSsyPj4wXT0wO2M9YmU7d2Y9a1tjKzQ+PjJdfDA7eWY9KGtbbmQ+PjJdfDApKzQwfDA7a1t5Zj4+Ml09a1tjPj4yXTtrW3lmKzQ+PjJdPXdmO2lbKGtbbmQ+PjJdfDApKzM+PjBdPTE7a1soa1tuZD4+Ml18MCkrNTI+PjJdPWtbKGtbcGY+PjJdfDApKzE2Pj4yXTtrWyhrW25kPj4yXXwwKSs0OD4+Ml09a1tQYj4+Ml07YnJlYWsgZH1lbHNle2M9TUkoa1txZj4+Ml18MCxrW3BmPj4yXXwwKXwwO2tbZGQ+PjJdPWM7Yz1iZTt3Zj1rW2MrND4+Ml18MDt5Zj1rW2RkPj4yXXwwO2tbeWY+PjJdPWtbYz4+Ml07a1t5Zis0Pj4yXT13ZjtqWyhrW2RkPj4yXXwwKSs4Pj4xXT00O2JyZWFrIGR9fWNhc2UgNjE6Y2FzZSA2MDpjYXNlIDU5OmNhc2UgNTg6e2tbUWI+PjJdPWtbKGtbKGtbcWY+PjJdfDApKzExMj4+Ml18MCkrKGtbKGtbcGY+PjJdfDApKzQ+PjJdPDwyKT4+Ml07a1tKZD4+Ml09a1soa1tRYj4+Ml18MCkrMjQ+PjJdO2pbSmQrOD4+MV09a1soa1twZj4+Ml18MCkrMTY+PjJdO2I9SmQrMTB8MDtpZigobFtrW3BmPj4yXT4+MF18MCk8NjApaVtiPj4wXT0tMTtlbHNlIGlbYj4+MF09MDtrW0pkKzQ+PjJdPShrW2U+PjJdfDApKygoa1soa1twZj4+Ml18MCkrMTI+PjJdfDApKjQwfDApO2tbX2Q+PjJdPTA7Yj1ESihrW3JmPj4yXXwwLGtbUWI+PjJdfDAsSmQsX2QpfDA7a1t1Zj4+Ml09YjtiPWtbX2Q+PjJdfDA7aWYoIShsW2tbcGY+PjJdPj4wXSYxKSlrW19kPj4yXT0wLWI7ZWxzZSBrW19kPj4yXT1iKzE7aWYoa1t1Zj4+Ml18MClicmVhayBhO2lmKChrW19kPj4yXXwwKT4wKWQ9MTQ7YnJlYWt9Y2FzZSAxMzA6e3lmPU1JKGtbcWY+PjJdfDAsa1twZj4+Ml18MCl8MDtrW2RkPj4yXT15ZjtqWyhrW2RkPj4yXXwwKSs4Pj4xXT0xO2lmKChrWyhrW3JmPj4yXXwwKSsxNjA+PjJdfDApPigoa1soa1tyZj4+Ml18MCkrMTcyPj4yXXwwKSsxfDApKXtkPTY2MDticmVhayBjfWtbaGE+PjJdPWtbKGtbcGY+PjJdfDApKzEyPj4yXTtrW3BhPj4yXT0wO3dmPUVKKGtbKGtbKGtbcmY+PjJdfDApKzE2Pj4yXXwwKSsoa1toYT4+Ml08PDQpKzQ+PjJdfDAsa1soa1twZj4+Ml18MCkrND4+Ml18MCxwYSl8MDtrW3VmPj4yXT13ZjtqWyhrW2RkPj4yXXwwKSs4Pj4xXT00O3dmPWtbcGE+PjJdfDA7eWY9a1tkZD4+Ml18MDtrW3lmPj4yXT13ZjtrW3lmKzQ+PjJdPSgod2Z8MCk8MCk8PDMxPj4zMTtpZihrW3VmPj4yXXwwKWJyZWFrIGE7aWYoa1twYT4+Ml18MCl7Rkooa1tyZj4+Ml18MCxrW2hhPj4yXXwwLGtbcGE+PjJdfDAsa1soa1twZj4+Ml18MCkrND4+Ml18MCk7aVtlZj4+MF09KGtbaGE+PjJdfDApKzF9YnJlYWt9Y2FzZSAxMzE6e2tbUGE+PjJdPTA7eWY9R0ooa1soa1soa1tyZj4+Ml18MCkrMTY+PjJdfDApKyhrWyhrW3BmPj4yXXwwKSs4Pj4yXTw8NCkrND4+Ml18MCxrWyhrW3BmPj4yXXwwKSs0Pj4yXXwwLChrWyhrW3BmPj4yXXwwKSsxMj4+Ml18MCkhPTA/UGE6MCl8MDtrW3VmPj4yXT15ZjtpZigoa1soa1twZj4+Ml18MCkrMTI+PjJdfDApIT0wPyh5Zj0oa1txZj4+Ml18MCkrNDR8MCxrW3lmPj4yXT0oa1t5Zj4+Ml18MCkrKGtbUGE+PjJdfDApLChrWyhrW3BmPj4yXXwwKSsxMj4+Ml18MCk+MCk6MCl7d2Y9a1tQYT4+Ml18MDt5Zj0oa1tlPj4yXXwwKSsoKGtbKGtbcGY+PjJdfDApKzEyPj4yXXwwKSo0MHwwKXwwO2M9eWY7d2Y9JFIoa1tjPj4yXXwwLGtbYys0Pj4yXXwwLHdmfDAsKCh3ZnwwKTwwKTw8MzE+PjMxfDApfDA7a1t5Zj4+Ml09d2Y7a1t5Zis0Pj4yXT1MfWlmKGtbdWY+PjJdfDApYnJlYWsgYTticmVha31jYXNlIDEzMzp7a1tSYj4+Ml09a1soa1soa1txZj4+Ml18MCkrMTEyPj4yXXwwKSsoa1soa1twZj4+Ml18MCkrND4+Ml08PDIpPj4yXTtpZigobFtrW1JiPj4yXT4+MF18MCkhPTEpe3lmPUlKKGtbKGtbUmI+PjJdfDApKzE2Pj4yXXwwKXwwO2tbdWY+PjJdPXlmO2lmKGtbdWY+PjJdfDApYnJlYWsgYTtlbHNlIGJyZWFrIGR9ZWxzZXtISihrW3JmPj4yXXwwLGtbKGtbUmI+PjJdfDApKzE2Pj4yXXwwKTticmVhayBkfX1jYXNlIDEzNTpjYXNlIDEzNDp7eWY9TUkoa1txZj4+Ml18MCxrW3BmPj4yXXwwKXwwO2tbZGQ+PjJdPXlmO2tbRWQ+PjJdPTA7a1t4Yz4+Ml09KGtbKGtbcmY+PjJdfDApKzE2Pj4yXXwwKSsoa1soa1twZj4+Ml18MCkrND4+Ml08PDQpO2lmKChsW2tbcGY+PjJdPj4wXXwwKT09MTM1KWtbTj4+Ml09MTtlbHNlIGtbTj4+Ml09Mjt5Zj1tSihrWyhrW3hjPj4yXXwwKSs0Pj4yXXwwLEVkLGtbTj4+Ml18MCl8MDtrW3VmPj4yXT15ZjtpZihrW3VmPj4yXXwwKWJyZWFrIGE7d2Y9a1tFZD4+Ml18MDt5Zj1rW2RkPj4yXXwwO2tbeWY+PjJdPXdmO2tbeWYrND4+Ml09KCh3ZnwwKTwwKTw8MzE+PjMxO2JyZWFrfWNhc2UgMTM2OntrW2phPj4yXT1rWyhrW3BmPj4yXXwwKSs0Pj4yXTtrW1plPj4yXT0oa1tqYT4+Ml18MCk9PTE/MTk5MDU6MTk5MjQ7a1t4YT4+Ml09a1tyZj4+Ml07a1t4YSs4Pj4yXT1rWyhrW3BmPj4yXXwwKSs0Pj4yXTtrW3hhKzQ+PjJdPShrW3FmPj4yXXwwKSsxMDg7eWY9a1tyZj4+Ml18MDtjPWtbWmU+PjJdfDA7d2Y9a1soa1twZj4+Ml18MCkrMTY+PjJdfDA7a1tBZT4+Ml09a1soa1soa1tyZj4+Ml18MCkrMTY+PjJdfDApKyhrW2phPj4yXTw8NCk+PjJdO2tbQWUrND4+Ml09YztrW0FlKzg+PjJdPXdmO3lmPVFoKHlmLDQwMjkzLEFlKXwwO2tbYWY+PjJdPXlmO2lmKCEoa1thZj4+Ml18MCkpa1t1Zj4+Ml09NztlbHNle2lbKGtbcmY+PjJdfDApKzE0OCs1Pj4wXT0xO2tbeGErMTI+PjJdPTA7eWY9a2Yoa1tyZj4+Ml18MCxrW2FmPj4yXXwwLDE0MCx4YSwwKXwwO2tbdWY+PjJdPXlmO2lmKCEoa1t1Zj4+Ml18MCkpa1t1Zj4+Ml09a1t4YSsxMj4+Ml07Ymcoa1tyZj4+Ml18MCxrW2FmPj4yXXwwKTtpWyhrW3JmPj4yXXwwKSsxNDgrNT4+MF09MH1pZihrW3VmPj4yXXwwKXtkPTY4MjticmVhayBjfWJyZWFrfWNhc2UgMTM3Ont5Zj1QaihrW3JmPj4yXXwwLGtbKGtbcGY+PjJdfDApKzQ+PjJdfDApfDA7a1t1Zj4+Ml09eWY7aWYoa1t1Zj4+Ml18MClicmVhayBhO2JyZWFrfWNhc2UgMTM4OntKSihrW3JmPj4yXXwwLGtbKGtbcGY+PjJdfDApKzQ+PjJdfDAsa1soa1twZj4+Ml18MCkrMTY+PjJdfDApO2JyZWFrfWNhc2UgMTM5OntLSihrW3JmPj4yXXwwLGtbKGtbcGY+PjJdfDApKzQ+PjJdfDAsa1soa1twZj4+Ml18MCkrMTY+PjJdfDApO2JyZWFrfWNhc2UgMTQwOntMSihrW3JmPj4yXXwwLGtbKGtbcGY+PjJdfDApKzQ+PjJdfDAsa1soa1twZj4+Ml18MCkrMTY+PjJdfDApO2JyZWFrfWNhc2UgMTQxOntrWyRhPj4yXT1rWyhrW3BmPj4yXXwwKSs4Pj4yXTtrW24+PjJdPWtbKGtbcGY+PjJdfDApKzE2Pj4yXTtrW0ZkPj4yXT0oa1tlPj4yXXwwKSsoKGtbKGtbcGY+PjJdfDApKzEyPj4yXXwwKSo0MHwwKTtrW0pjPj4yXT0oa1tlPj4yXXwwKSsoKGtbKGtbcGY+PjJdfDApKzQ+PjJdfDApKjQwfDApO3dmPU1KKGtbKGtbKGtbcmY+PjJdfDApKzE2Pj4yXXwwKSsobFsoa1twZj4+Ml18MCkrMz4+MF08PDQpKzQ+PjJdfDAsa1tuPj4yXXwwLGtbJGE+PjJdfDAsa1trW0ZkPj4yXT4+Ml18MCxTYSl8MDtrW09lPj4yXT13Zjt3Zj1rW1NhPj4yXXwwO3lmPWtbRmQ+PjJdfDA7Yz15Zjt3Zj1fUihrW2M+PjJdfDAsa1tjKzQ+PjJdfDAsd2Z8MCwoKHdmfDApPDApPDwzMT4+MzF8MCl8MDtrW3lmPj4yXT13ZjtrW3lmKzQ+PjJdPUw7c2goa1tKYz4+Ml18MCk7aWYoa1tTYT4+Ml18MCl7aWYoIShrW09lPj4yXXwwKSl7ZD04ODk7YnJlYWsgYX1xaChrW0pjPj4yXXwwLGtbT2U+PjJdfDAsLTEsMSwxNDgpfDB9c3Uoa1tKYz4+Ml18MCxsW0Y+PjBdfDApfDA7YnJlYWt9Y2FzZSAxNDI6e2tbSmM+PjJdPShrW2U+PjJdfDApKygoa1soa1twZj4+Ml18MCkrND4+Ml18MCkqNDB8MCk7a1tLYz4+Ml09KGtbZT4+Ml18MCkrKChrWyhrW3BmPj4yXXwwKSs4Pj4yXXwwKSo0MHwwKTtpZigobVsoa1tKYz4+Ml18MCkrOD4+MV0mMzJ8MCk9PTA/KE5KKGtbSmM+PjJdfDApLChtWyhrW0pjPj4yXXwwKSs4Pj4xXSYzMnwwKT09MCk6MCl7ZD04ODk7YnJlYWsgYX15Zj1rW0tjPj4yXXwwO09KKGtba1tKYz4+Ml0+PjJdfDAsa1t5Zj4+Ml18MCxrW3lmKzQ+PjJdfDApO2JyZWFrfWNhc2UgNjI6e2tbSmM+PjJdPShrW2U+PjJdfDApKygoa1soa1twZj4+Ml18MCkrND4+Ml18MCkqNDB8MCk7aWYoKG1bKGtbSmM+PjJdfDApKzg+PjFdJjMyfDApIT0wPyhQSihrW2tbSmM+PjJdPj4yXXwwLHVlKXwwKSE9MDowKXtkPXVlO3JoKChrW2U+PjJdfDApKygoa1soa1twZj4+Ml18MCkrMTI+PjJdfDApKjQwfDApfDAsa1tkPj4yXXwwLGtbZCs0Pj4yXXwwKTtkPTg7YnJlYWsgZH1zaChrW0pjPj4yXXwwKTtkPTc7YnJlYWt9Y2FzZSA2Mzp7a1tKYz4+Ml09KGtbZT4+Ml18MCkrKChrWyhrW3BmPj4yXXwwKSs0Pj4yXXwwKSo0MHwwKTtrW0xjPj4yXT0oa1tlPj4yXXwwKSsoKGtbKGtbcGY+PjJdfDApKzEyPj4yXXwwKSo0MHwwKTtrW3RhPj4yXT1rWyhrW3BmPj4yXXwwKSsxNj4+Ml07aWYoKG1bKGtbSmM+PjJdfDApKzg+PjFdJjMyfDApPT0wPyhOSihrW0pjPj4yXXwwKSwobVsoa1tKYz4+Ml18MCkrOD4+MV0mMzJ8MCk9PTApOjApe2Q9ODg5O2JyZWFrIGF9aWYoKGtbdGE+PjJdfDApIT0wPyh5Zj1rW0xjPj4yXXwwLHlmPVFKKGtba1tKYz4+Ml0+PjJdfDAsa1t0YT4+Ml18MCxrW3lmPj4yXXwwLGtbeWYrND4+Ml18MCl8MCxrW0g+PjJdPXlmLChrW0g+PjJdfDApIT0wKTowKXtkPTE0O2JyZWFrIGR9aWYoKGtbdGE+PjJdfDApPj0wKXt5Zj1rW0xjPj4yXXwwO09KKGtba1tKYz4+Ml0+PjJdfDAsa1t5Zj4+Ml18MCxrW3lmKzQ+PjJdfDApfWJyZWFrfWNhc2UgNjQ6e2tbZmQ+PjJdPWtbKGtbcGY+PjJdfDApKzE2Pj4yXTtrW2pkPj4yXT0oa1tlPj4yXXwwKSsoKGtbKGtbcGY+PjJdfDApKzEyPj4yXXwwKSo0MHwwKTtpZihpWyhrW3BmPj4yXXwwKSszPj4wXXwwKXtrW2tlPj4yXT1rWyhrW2ZkPj4yXXwwKSsxNj4+Ml07a1tEYz4+Ml09a1soa1txZj4+Ml18MCkrMTg0Pj4yXTt3aGlsZSgxKXtpZighKGtbRGM+PjJdfDApKWJyZWFrO2lmKChrWyhrW0RjPj4yXXwwKSsyND4+Ml18MCk9PShrW2tlPj4yXXwwKSlicmVhaztrW0RjPj4yXT1rWyhrW0RjPj4yXXwwKSs0Pj4yXX1pZihrW0RjPj4yXXwwKWJyZWFrIGR9aWYoKGtbKGtbcWY+PjJdfDApKzE5Mj4+Ml18MCk+PShrWyhrW3JmPj4yXXwwKSs5Nis0MD4+Ml18MCkpe2Q9NzExO2JyZWFrIGN9aTpkbyBpZighKG1bKGtbamQ+PjJdfDApKzg+PjFdJjY0KSl7a1tZYT4+Ml09KGtbKGtbZmQ+PjJdfDApKzg+PjJdfDApKyhrWyhrW2ZkPj4yXXwwKSsxMj4+Ml18MCk7aWYoIShrWyhrW2ZkPj4yXXwwKSsxMj4+Ml18MCkpa1tZYT4+Ml09KGtbWWE+PjJdfDApKzE7a1tPYT4+Ml09ODArKChrW1lhPj4yXXwwKSo0MHwwKSsoa1soa1tmZD4+Ml18MCkrMTI+PjJdPDwyKTt5Zj1rW09hPj4yXXwwO3lmPUNoKGtbcmY+PjJdfDAseWYsKCh5ZnwwKTwwKTw8MzE+PjMxKXwwO2tbRGM+PjJdPXlmO2lmKCEoa1tEYz4+Ml18MCkpe2Q9ODg5O2JyZWFrIGF9Zmgoa1tqZD4+Ml18MCk7alsoa1tqZD4+Ml18MCkrOD4+MV09NjQ7a1trW2pkPj4yXT4+Ml09a1tEYz4+Ml07a1trW0RjPj4yXT4+Ml09a1txZj4+Ml07a1soa1tEYz4+Ml18MCkrNjA+PjJdPWtbWWE+PjJdO2tbKGtbRGM+PjJdfDApKzY0Pj4yXT1rWyhrW2ZkPj4yXXwwKSsxMj4+Ml07a1soa1tEYz4+Ml18MCkrNDg+PjJdPSgoa1twZj4+Ml18MCktKGtbZGY+PjJdfDApfDApLzIwfDA7a1soa1tEYz4+Ml18MCkrMTY+PjJdPWtbKGtbcWY+PjJdfDApKzkyPj4yXTtrWyhrW0RjPj4yXXwwKSs1Nj4+Ml09a1soa1txZj4+Ml18MCkrMjQ+PjJdO2tbKGtbRGM+PjJdfDApKzIwPj4yXT1rWyhrW3FmPj4yXXwwKSsxMTI+PjJdO2tbKGtbRGM+PjJdfDApKzQ0Pj4yXT1rWyhrW3FmPj4yXXwwKSsyOD4+Ml07a1soa1tEYz4+Ml18MCkrOD4+Ml09a1soa1txZj4+Ml18MCkrODg+PjJdO2tbKGtbRGM+PjJdfDApKzUyPj4yXT1rWyhrW3FmPj4yXXwwKSsxMzY+PjJdO2tbKGtbRGM+PjJdfDApKzI0Pj4yXT1rWyhrW2ZkPj4yXXwwKSsxNj4+Ml07a1tBYz4+Ml09KGtbRGM+PjJdfDApKzgwKygoa1soa1tEYz4+Ml18MCkrNjA+PjJdfDApKjQwfDApO2tbVGM+PjJdPShrW0RjPj4yXXwwKSs4MDt3aGlsZSgxKXtpZigoa1tUYz4+Ml18MCk9PShrW0FjPj4yXXwwKSlicmVhayBpO2pbKGtbVGM+PjJdfDApKzg+PjFdPTEyODtrWyhrW1RjPj4yXXwwKSszMj4+Ml09a1tyZj4+Ml07a1tUYz4+Ml09KGtbVGM+PjJdfDApKzQwfX1lbHNlIGtbRGM+PjJdPWtba1tqZD4+Ml0+PjJdO3doaWxlKDApO2M9KGtbcWY+PjJdfDApKzE5MnwwO2tbYz4+Ml09KGtbYz4+Ml18MCkrMTtrWyhrW0RjPj4yXXwwKSs0Pj4yXT1rWyhrW3FmPj4yXXwwKSsxODQ+PjJdO2M9c2Y7d2Y9a1tjKzQ+PjJdfDA7eWY9KGtbRGM+PjJdfDApKzMyfDA7a1t5Zj4+Ml09a1tjPj4yXTtrW3lmKzQ+PjJdPXdmO2tbKGtbRGM+PjJdfDApKzY4Pj4yXT1rWyhrW3FmPj4yXXwwKSs0ND4+Ml07a1soa1tEYz4+Ml18MCkrNzI+PjJdPWtbKGtba1txZj4+Ml0+PjJdfDApKzg4Pj4yXTtrWyhrW0RjPj4yXXwwKSs0MD4+Ml09a1soa1txZj4+Ml18MCkrMjA0Pj4yXTtrWyhrW3FmPj4yXXwwKSsyMDQ+PjJdPTA7a1soa1txZj4+Ml18MCkrNDQ+PjJdPTA7a1soa1txZj4+Ml18MCkrMTg0Pj4yXT1rW0RjPj4yXTt5Zj0oa1tEYz4+Ml18MCkrODB8MDtrW2U+PjJdPXlmO2tbKGtbcWY+PjJdfDApKzkyPj4yXT15ZjtrWyhrW3FmPj4yXXwwKSsyND4+Ml09a1soa1tEYz4+Ml18MCkrNjA+PjJdO2tbKGtbcWY+PjJdfDApKzI4Pj4yXT1rWyhrW0RjPj4yXXwwKSs2ND4+Ml0mNjU1MzU7a1soa1txZj4+Ml18MCkrMTEyPj4yXT0oa1tlPj4yXXwwKSsoKGtbKGtbcWY+PjJdfDApKzI0Pj4yXXwwKSo0MHwwKTt5Zj1rW2tbZmQ+PjJdPj4yXXwwO2tbZGY+PjJdPXlmO2tbKGtbcWY+PjJdfDApKzg4Pj4yXT15ZjtrWyhrW3FmPj4yXXwwKSsxMzY+PjJdPWtbKGtbZmQ+PjJdfDApKzQ+PjJdO2tbcGY+PjJdPShrW2RmPj4yXXwwKSstMjA7YnJlYWt9Y2FzZSAxNDM6e3lmPU1JKGtbcWY+PjJdfDAsa1twZj4+Ml18MCl8MDtrW2RkPj4yXT15ZjtrW0VjPj4yXT1rWyhrW3FmPj4yXXwwKSsxODQ+PjJdO2tbSWM+PjJdPShrWyhrW0VjPj4yXXwwKSsxNj4+Ml18MCkrKCgoa1soa1twZj4+Ml18MCkrND4+Ml18MCkrKGtbKGtbKGtbRWM+PjJdfDApKzg+PjJdfDApKygoa1soa1tFYz4+Ml18MCkrNDg+PjJdfDApKjIwfDApKzQ+PjJdfDApfDApKjQwfDApO3VHKGtbZGQ+PjJdfDAsa1tJYz4+Ml18MCw0MDk2KTticmVha31jYXNlIDE0NDp7Yj1rW3BmPj4yXXwwO2lmKGtbKGtbcmY+PjJdfDApKzI0Pj4yXSYzMzU1NDQzMil7d2Y9a1tiKzg+PjJdfDA7eWY9KGtbcmY+PjJdfDApKzQ0OHwwO2M9eWY7d2Y9JFIoa1tjPj4yXXwwLGtbYys0Pj4yXXwwLHdmfDAsKCh3ZnwwKTwwKTw8MzE+PjMxfDApfDA7a1t5Zj4+Ml09d2Y7a1t5Zis0Pj4yXT1MO2JyZWFrIGR9YT1rWyhrW3BmPj4yXXwwKSs4Pj4yXXwwO2M9KChhfDApPDApPDwzMT4+MzE7aWYoa1tiKzQ+PjJdfDApe3lmPShrW3JmPj4yXXwwKSs0NDB8MDt3Zj15Zjt3Zj0kUihrW3dmPj4yXXwwLGtbd2YrND4+Ml18MCxhfDAsY3wwKXwwO2tbeWY+PjJdPXdmO2tbeWYrND4+Ml09TDticmVhayBkfWVsc2V7eWY9KGtbcWY+PjJdfDApKzY0fDA7d2Y9eWY7d2Y9JFIoa1t3Zj4+Ml18MCxrW3dmKzQ+PjJdfDAsYXwwLGN8MCl8MDtrW3lmPj4yXT13ZjtrW3lmKzQ+PjJdPUw7YnJlYWsgZH19Y2FzZSA2NTppZihrWyhrW3BmPj4yXXwwKSs0Pj4yXXwwKXt5Zj0oa1tyZj4+Ml18MCkrNDQwfDA7aWYoISgoa1t5Zj4+Ml18MCk9PTAmKGtbeWYrND4+Ml18MCk9PTApKWJyZWFrIGQ7eWY9KGtbcmY+PjJdfDApKzQ0OHwwO2lmKChrW3lmPj4yXXwwKT09MCYoa1t5Zis0Pj4yXXwwKT09MCl7ZD0xNDticmVhayBkfWVsc2UgYnJlYWsgZH1lbHNle3lmPShrW3FmPj4yXXwwKSs2NHwwO2lmKCEoKGtbeWY+PjJdfDApPT0wJihrW3lmKzQ+PjJdfDApPT0wKSlicmVhayBkO3lmPShrW3JmPj4yXXwwKSs0NDh8MDtpZigoa1t5Zj4+Ml18MCk9PTAmKGtbeWYrND4+Ml18MCk9PTApe2Q9MTQ7YnJlYWsgZH1lbHNlIGJyZWFrIGR9Y2FzZSAxNDU6e2lmKGtbKGtbcWY+PjJdfDApKzE4ND4+Ml18MCl7a1tGYz4+Ml09a1soa1txZj4+Ml18MCkrMTg0Pj4yXTt3aGlsZSgxKXtpZighKGtbKGtbRmM+PjJdfDApKzQ+PjJdfDApKWJyZWFrO2tbRmM+PjJdPWtbKGtbRmM+PjJdfDApKzQ+PjJdfWtbSmM+PjJdPShrWyhrW0ZjPj4yXXwwKSsxNj4+Ml18MCkrKChrWyhrW3BmPj4yXXwwKSs0Pj4yXXwwKSo0MHwwKX1lbHNlIGtbSmM+PjJdPShrW2U+PjJdfDApKygoa1soa1twZj4+Ml18MCkrND4+Ml18MCkqNDB8MCk7X3goa1tKYz4+Ml18MCl8MDtrW0tjPj4yXT0oa1tlPj4yXXwwKSsoKGtbKGtbcGY+PjJdfDApKzg+PjJdfDApKjQwfDApO194KGtbS2M+PjJdfDApfDA7d2Y9a1tKYz4+Ml18MDthPWtbd2YrND4+Ml18MDt5Zj1rW0tjPj4yXXwwO2M9a1t5Zis0Pj4yXXwwO2lmKChhfDApPChjfDApfCgoYXwwKT09KGN8MCk/KGtbd2Y+PjJdfDApPj4+MDwoa1t5Zj4+Ml18MCk+Pj4wOjApKXtjPWtbS2M+PjJdfDA7d2Y9a1tjKzQ+PjJdfDA7eWY9a1tKYz4+Ml18MDtrW3lmPj4yXT1rW2M+PjJdO2tbeWYrND4+Ml09d2Z9YnJlYWt9Y2FzZSA2Njp7a1tKYz4+Ml09KGtbZT4+Ml18MCkrKChrWyhrW3BmPj4yXXwwKSs0Pj4yXXwwKSo0MHwwKTt5Zj1rW0pjPj4yXXwwO3dmPWtbeWYrND4+Ml18MDtpZigod2Z8MCk+MHwod2Z8MCk9PTAmKGtbeWY+PjJdfDApPj4+MD4wKXt5Zj1rWyhrW3BmPj4yXXwwKSsxMj4+Ml18MDtkPWtbSmM+PjJdfDA7d2Y9ZDt5Zj1fUihrW3dmPj4yXXwwLGtbd2YrND4+Ml18MCx5ZnwwLCgoeWZ8MCk8MCk8PDMxPj4zMXwwKXwwO2tbZD4+Ml09eWY7a1tkKzQ+PjJdPUw7ZD0xNH1icmVha31jYXNlIDE0Njp7a1tKYz4+Ml09KGtbZT4+Ml18MCkrKChrWyhrW3BmPj4yXXwwKSs0Pj4yXXwwKSo0MHwwKTtrW0xjPj4yXT0oa1tlPj4yXXwwKSsoKGtbKGtbcGY+PjJdfDApKzEyPj4yXXwwKSo0MHwwKTt5Zj1NSShrW3FmPj4yXXwwLGtbcGY+PjJdfDApfDA7a1tkZD4+Ml09eWY7eWY9a1tKYz4+Ml18MDt3Zj1rW3lmKzQ+PjJdfDA7aWYoKHdmfDApPDB8KHdmfDApPT0wJihrW3lmPj4yXXwwKT4+PjA8PTApe2I9LTE7YT0tMX1lbHNle2I9a1tKYz4+Ml18MDt5Zj1rW0xjPj4yXXwwO3dmPWtbeWYrND4+Ml18MDtpZigod2Z8MCk+MHwod2Z8MCk9PTAmKGtbeWY+PjJdfDApPj4+MD4wKXtjPWtbTGM+PjJdfDA7YT1rW2M+PjJdfDA7Yz1rW2MrND4+Ml18MH1lbHNle2E9MDtjPTB9Yj0kUihrW2I+PjJdfDAsa1tiKzQ+PjJdfDAsYXwwLGN8MCl8MDthPUx9eWY9a1tkZD4+Ml18MDtrW3lmPj4yXT1iO2tbeWYrND4+Ml09YTticmVha31jYXNlIDY3OntrW0pjPj4yXT0oa1tlPj4yXXwwKSsoKGtbKGtbcGY+PjJdfDApKzQ+PjJdfDApKjQwfDApO3lmPWtbSmM+PjJdfDA7aWYoKGtbeWY+PjJdfDApIT0wfChrW3lmKzQ+PjJdfDApIT0wKXt5Zj1rWyhrW3BmPj4yXXwwKSsxMj4+Ml18MDtkPWtbSmM+PjJdfDA7d2Y9ZDt5Zj1fUihrW3dmPj4yXXwwLGtbd2YrND4+Ml18MCx5ZnwwLCgoeWZ8MCk8MCk8PDMxPj4zMXwwKXwwO2tbZD4+Ml09eWY7a1tkKzQ+PjJdPUw7ZD0xNH1icmVha31jYXNlIDY4OntrW0pjPj4yXT0oa1tlPj4yXXwwKSsoKGtbKGtbcGY+PjJdfDApKzQ+PjJdfDApKjQwfDApO3lmPWtbSmM+PjJdfDA7d2Y9eWY7d2Y9JFIoa1t3Zj4+Ml18MCxrW3dmKzQ+PjJdfDAsLTEsLTEpfDA7a1t5Zj4+Ml09d2Y7a1t5Zis0Pj4yXT1MO3lmPWtbSmM+PjJdfDA7aWYoKGtbeWY+PjJdfDApPT0wJihrW3lmKzQ+PjJdfDApPT0wKWQ9MTQ7YnJlYWt9Y2FzZSAxNDc6e2tbSmE+PjJdPWxbKGtbcGY+PjJdfDApKzM+PjBdO3lmPWR4KGtbcmY+PjJdfDAsMzIrKChrW0phPj4yXXwwKS0xPDwyKXwwLDApfDA7a1tqYz4+Ml09eWY7aWYoIShrW2pjPj4yXXwwKSl7ZD04ODk7YnJlYWsgYX1rWyhrW2pjPj4yXXwwKSs4Pj4yXT0wO2tbKGtbamM+PjJdfDApKzQ+PjJdPWtbKGtbcGY+PjJdfDApKzE2Pj4yXTtrWyhrW2pjPj4yXXwwKSsxNj4+Ml09KChrW3BmPj4yXXwwKS0oa1tkZj4+Ml18MCl8MCkvMjB8MDtrWyhrW2pjPj4yXXwwKSsxMj4+Ml09a1txZj4+Ml07aVsoa1tqYz4+Ml18MCkrMjY+PjBdPWtbSmE+PjJdO2lbKGtbcGY+PjJdfDApKzE+PjBdPS0yMTtrWyhrW3BmPj4yXXwwKSsxNj4+Ml09a1tqYz4+Ml07aVtrW3BmPj4yXT4+MF09LTEwODtkPTc1MjticmVha31jYXNlIDE0ODp7ZD03NTI7YnJlYWt9Y2FzZSAxNDk6e2tbVmM+PjJdPShrW2U+PjJdfDApKygoa1soa1twZj4+Ml18MCkrND4+Ml18MCkqNDB8MCk7eWY9eEcoa1tWYz4+Ml18MCxrWyhrW3BmPj4yXXwwKSsxNj4+Ml18MCl8MDtrW3VmPj4yXT15ZjtpZihrW3VmPj4yXXwwKXtkPTc2NDticmVhayBjfXN1KGtbVmM+PjJdfDAsbFtGPj4wXXwwKXwwO2lmKE5JKGtbVmM+PjJdfDApfDApe2Q9ODg4O2JyZWFrIGN9YnJlYWt9Y2FzZSA4OntrW2g+PjJdPTA7a1toKzg+PjJdPS0xO2tbaCs0Pj4yXT0tMTt5Zj15aShrW3JmPj4yXXwwLGtbKGtbcGY+PjJdfDApKzQ+PjJdfDAsa1soa1twZj4+Ml18MCkrOD4+Ml18MCxoKzR8MCxoKzh8MCl8MDtrW3VmPj4yXT15ZjtpZihrW3VmPj4yXXwwKXtpZigoa1t1Zj4+Ml18MCkhPTUpYnJlYWsgYTtrW3VmPj4yXT0wO2tbaD4+Ml09MX1rW1o+PjJdPTA7a1tXYz4+Ml09KGtbZT4+Ml18MCkrKChrWyhrW3BmPj4yXXwwKSsxMj4+Ml18MCkqNDB8MCk7d2hpbGUoMSl7aWYoKGtbWj4+Ml18MCk+PTMpYnJlYWsgZDt5Zj1rW2grKGtbWj4+Ml08PDIpPj4yXXwwO3JoKGtbV2M+PjJdfDAseWYsKCh5ZnwwKTwwKTw8MzE+PjMxKTtrW1o+PjJdPShrW1o+PjJdfDApKzE7a1tXYz4+Ml09KGtbV2M+PjJdfDApKzQwfX1jYXNlIDk6e3lmPU1JKGtbcWY+PjJdfDAsa1twZj4+Ml18MCl8MDtrW2RkPj4yXT15ZjtrW0Q+PjJdPWtbKGtbcGY+PjJdfDApKzEyPj4yXTtrW3ZiPj4yXT1rWyhrWyhrW3JmPj4yXXwwKSsxNj4+Ml18MCkrKGtbKGtbcGY+PjJdfDApKzQ+PjJdPDw0KSs0Pj4yXTt5Zj1aZihrW3ZiPj4yXXwwKXwwO2tbZWQ+PjJdPXlmO3lmPURnKGtbZWQ+PjJdfDApfDA7a1tFPj4yXT15ZjtpZigoa1tEPj4yXXwwKT09LTEpa1tEPj4yXT1rW0U+PjJdO2lmKCEoUkooa1tlZD4+Ml18MCl8MCkpa1tEPj4yXT1rW0U+PjJdO3lmPVVpKGtbZWQ+PjJdfDAsMSl8MDtrW1hlPj4yXT15ZjtkbyBpZigoa1tEPj4yXXwwKT09NSl7aWYoKFRmKGtbWGU+PjJdfDApfDApIT0wPyhTSihrW2VkPj4yXXwwKXwwKSE9MDowKWJyZWFrO2tbRD4+Ml09a1tFPj4yXX13aGlsZSgwKTtpZigoa1tEPj4yXXwwKSE9KGtbRT4+Ml18MCk/KGtbRT4+Ml18MCk9PTV8KGtbRD4+Ml18MCk9PTU6MCl7aWYoIShpWyhrW3JmPj4yXXwwKSs2Nz4+MF18MCkpe2Q9Nzg0O2JyZWFrIGN9aWYoKGtbKGtbcmY+PjJdfDApKzE2MD4+Ml18MCk+MSl7ZD03ODQ7YnJlYWsgY31pZigoa1tFPj4yXXwwKT09NSl7eWY9VEooa1tlZD4+Ml18MCl8MDtrW3VmPj4yXT15ZjtpZighKGtbdWY+PjJdfDApKVVKKGtbZWQ+PjJdfDAsa1tEPj4yXXwwKXwwfWVsc2UgaWYoKGtbRT4+Ml18MCk9PTQpVUooa1tlZD4+Ml18MCwyKXwwO2lmKCEoa1t1Zj4+Ml18MCkpe3lmPU5nKGtbdmI+PjJdfDAsKGtbRD4+Ml18MCk9PTU/MjoxKXwwO2tbdWY+PjJdPXlmfX1pZihrW3VmPj4yXXwwKWtbRD4+Ml09a1tFPj4yXTt5Zj1VSihrW2VkPj4yXXwwLGtbRD4+Ml18MCl8MDtrW0Q+PjJdPXlmO2pbKGtbZGQ+PjJdfDApKzg+PjFdPTI1NjI7eWY9ekMoa1tEPj4yXXwwKXwwO2tbKGtbZGQ+PjJdfDApKzE2Pj4yXT15Zjt5Zj1UZihrWyhrW2RkPj4yXXwwKSsxNj4+Ml18MCl8MDtrWyhrW2RkPj4yXXwwKSsxMj4+Ml09eWY7aVsoa1tkZD4+Ml18MCkrMTA+PjBdPTE7c3Uoa1tkZD4+Ml18MCxsW0Y+PjBdfDApfDA7aWYoa1t1Zj4+Ml18MClicmVhayBhO2JyZWFrfWNhc2UgMTA6e3lmPVZKKChrW3FmPj4yXXwwKSsxMDh8MCxrW3JmPj4yXXwwLGtbKGtbcGY+PjJdfDApKzQ+PjJdfDApfDA7a1t1Zj4+Ml09eWY7aWYoa1t1Zj4+Ml18MClicmVhayBhO2JyZWFrfWNhc2UgNjk6e2tbd2I+PjJdPWtbKGtbKGtbcmY+PjJdfDApKzE2Pj4yXXwwKSsoa1soa1twZj4+Ml18MCkrND4+Ml08PDQpKzQ+PjJdO3lmPVdKKGtbd2I+PjJdfDApfDA7a1t1Zj4+Ml09eWY7aWYoa1t1Zj4+Ml18MCl7aWYoKGtbdWY+PjJdfDApIT0xMDEpYnJlYWsgYTtrW3VmPj4yXT0wO2Q9MTR9YnJlYWt9Y2FzZSAxNTA6aWYoa1soa1twZj4+Ml18MCkrND4+Ml18MCl7eWY9KGtbcWY+PjJdfDApKzE0NHwwO2pbeWY+PjFdPWpbeWY+PjFdJi0yfDE7YnJlYWsgZH1lbHNle2FpKGtbcmY+PjJdfDApO2JyZWFrIGR9Y2FzZSAxNTE6e2lbQWE+PjBdPWtbKGtbcGY+PjJdfDApKzEyPj4yXTtpZigobFtBYT4+MF18MCk9PTA/MCE9KGtbKGtbcmY+PjJdfDApKzI0Pj4yXSYxNjM4NHwwKTowKWJyZWFrIGQ7a1tsYj4+Ml09a1soa1twZj4+Ml18MCkrND4+Ml07eWY9WEooa1soa1soa1tyZj4+Ml18MCkrMTY+PjJdfDApKyhrW2xiPj4yXTw8NCkrND4+Ml18MCxrWyhrW3BmPj4yXXwwKSs4Pj4yXXwwLGlbQWE+PjBdfDApfDA7a1t1Zj4+Ml09eWY7aWYoa1t1Zj4+Ml18MCl7ZD04MDU7YnJlYWsgY31icmVha31jYXNlIDE1Mjp7a1tyZD4+Ml09a1soa1twZj4+Ml18MCkrMTY+PjJdO3lmPVlKKGtbcmY+PjJdfDAsa1tyZD4+Ml18MCl8MDtrW3VmPj4yXT15ZjtpZihrW3JkPj4yXXwwKXdKKGtbcWY+PjJdfDAsa1soa1tyZD4+Ml18MCkrOD4+Ml18MCk7aWYoa1t1Zj4+Ml18MClicmVhayBhO2JyZWFrfWNhc2UgMTUzOntiPWZlO2E9Yis0MHwwO2Rve2tbYj4+Ml09MDtiPWIrNHwwfXdoaWxlKChifDApPChhfDApKTtrW2ZlKzMyPj4yXT1rW3JmPj4yXTt5Zj10aChmZSwoa1tlPj4yXXwwKSsoKGtbKGtbcGY+PjJdfDApKzg+PjJdfDApKjQwfDApfDApfDA7a1t1Zj4+Ml09eWY7eWY9amUoZmUpfDA7a1tiZj4+Ml09eWY7aWYoa1tiZj4+Ml18MCl7eWY9Wkooa1tyZj4+Ml18MCxrWyhrW3BmPj4yXXwwKSs0Pj4yXXwwLGtbYmY+PjJdfDAsKGtbcWY+PjJdfDApKzEwOHwwKXwwO2tbdWY+PjJdPXlmfWZoKGZlKTtpZihrW3VmPj4yXXwwKWJyZWFrIGE7YnJlYWt9Y2FzZSAxNTQ6e3lmPShrW3JmPj4yXXwwKSsxNzJ8MDtrW3lmPj4yXT0oa1t5Zj4+Ml18MCkrMTt5Zj1fSihrW3JmPj4yXXwwLGtbKGtbcGY+PjJdfDApKzQ+PjJdfDAsa1soa1twZj4+Ml18MCkrMTY+PjJdfDApfDA7a1t1Zj4+Ml09eWY7eWY9KGtbcmY+PjJdfDApKzE3MnwwO2tbeWY+PjJdPShrW3lmPj4yXXwwKSstMTtpZihrW3VmPj4yXXwwKWJyZWFrIGE7YnJlYWt9Y2FzZSAxNTU6e2tbbWM+PjJdPTA7a1twZD4+Ml09MDtrW3VkPj4yXT1rWyhrWyhrW3BmPj4yXXwwKSsxNj4+Ml18MCkrOD4+Ml07aWYoIShrW3VkPj4yXXwwKSl7ZD04MTY7YnJlYWsgY31pZighKGtba1t1ZD4+Ml0+PjJdfDApKXtkPTgxNjticmVhayBjfWtbWWM+PjJdPWtba1t1ZD4+Ml0+PjJdO3lmPWdjW2tbKGtbWWM+PjJdfDApKzI0Pj4yXSYyNTVdKGtbdWQ+PjJdfDAscGQpfDA7a1t1Zj4+Ml09eWY7d0ooa1txZj4+Ml18MCxrW3VkPj4yXXwwKTtpZihrW3VmPj4yXXwwKWJyZWFrIGE7a1trW3BkPj4yXT4+Ml09a1t1ZD4+Ml07eWY9akooa1txZj4+Ml18MCxrWyhrW3BmPj4yXXwwKSs0Pj4yXXwwLDAsLTEsMil8MDtrW21jPj4yXT15ZjtpZighKGtbbWM+PjJdfDApKXtkPTgyMDticmVhayBjfWtbKGtbbWM+PjJdfDApKzE2Pj4yXT1rW3BkPj4yXTt5Zj0oa1t1ZD4+Ml18MCkrNHwwO2tbeWY+PjJdPShrW3lmPj4yXXwwKSsxO2JyZWFrfWNhc2UgMTE6e2tbZ2Q+PjJdPShrW2U+PjJdfDApKygoa1soa1twZj4+Ml18MCkrMTI+PjJdfDApKjQwfDApO2tbc2I+PjJdPShrW2dkPj4yXXwwKSs0MDtrW25jPj4yXT1rWyhrWyhrW3FmPj4yXXwwKSsxMTI+PjJdfDApKyhrWyhrW3BmPj4yXXwwKSs0Pj4yXTw8Mik+PjJdO2tbcWQ+PjJdPWtbKGtbbmM+PjJdfDApKzE2Pj4yXTtrW3ZkPj4yXT1rW2tbcWQ+PjJdPj4yXTtrW1pjPj4yXT1rW2tbdmQ+PjJdPj4yXTtrW0thPj4yXT1rW2tbc2I+PjJdPj4yXTtrW3FhPj4yXT1rW2tbZ2Q+PjJdPj4yXTtrW05kPj4yXT0wO2tbdD4+Ml09a1soa1txZj4+Ml18MCkrOTY+PjJdO2tbUD4+Ml09MDt3aGlsZSgxKXtpZigoa1tQPj4yXXwwKT49KGtbS2E+PjJdfDApKWJyZWFrO2tbKGtbdD4+Ml18MCkrKGtbUD4+Ml08PDIpPj4yXT0oa1tzYj4+Ml18MCkrKCgoa1tQPj4yXXwwKSsxfDApKjQwfDApO2tbUD4+Ml09KGtbUD4+Ml18MCkrMX15Zj1oY1trWyhrW1pjPj4yXXwwKSszMj4+Ml0mMjU1XShrW3FkPj4yXXwwLGtbcWE+PjJdfDAsa1soa1twZj4+Ml18MCkrMTY+PjJdfDAsa1tLYT4+Ml18MCxrW3Q+PjJdfDApfDA7a1t1Zj4+Ml09eWY7d0ooa1txZj4+Ml18MCxrW3ZkPj4yXXwwKTtpZihrW3VmPj4yXXwwKWJyZWFrIGE7eWY9YmNba1soa1taYz4+Ml18MCkrNDA+PjJdJjI1NV0oa1txZD4+Ml18MCl8MDtrW05kPj4yXT15ZjtpWyhrW25jPj4yXXwwKSsyPj4wXT0wO2lmKGtbTmQ+PjJdfDApZD0xNDticmVha31jYXNlIDE1Njp7a1tvYz4+Ml09a1soa1soa1txZj4+Ml18MCkrMTEyPj4yXXwwKSsoa1soa1twZj4+Ml18MCkrND4+Ml08PDIpPj4yXTtrW3pjPj4yXT0oa1tlPj4yXXwwKSsoKGtbKGtbcGY+PjJdfDApKzEyPj4yXXwwKSo0MHwwKTtpZihpWyhrW29jPj4yXXwwKSsyPj4wXXwwKXtzaChrW3pjPj4yXXwwKTticmVhayBkfWtbd2Q+PjJdPWtba1soa1tvYz4+Ml18MCkrMTY+PjJdPj4yXTtrW19jPj4yXT1rW2tbd2Q+PjJdPj4yXTtrW2RlPj4yXT0wO2tbZGUrND4+Ml09MDtrW2RlKzg+PjJdPTA7a1tkZSsxMj4+Ml09MDtrW2RlKzE2Pj4yXT0wO2tbZGUrMjA+PjJdPTA7a1tkZSsyND4+Ml09MDtrW2RlKzI4Pj4yXT0wO2tbZGU+PjJdPWtbemM+PjJdO2pbKGtbemM+PjJdfDApKzg+PjFdPW1bKGtbemM+PjJdfDApKzg+PjFdJi00OTY2NHwxO3lmPVliW2tbKGtbX2M+PjJdfDApKzQ0Pj4yXSYyNTVdKGtbKGtbb2M+PjJdfDApKzE2Pj4yXXwwLGRlLGtbKGtbcGY+PjJdfDApKzg+PjJdfDApfDA7a1t1Zj4+Ml09eWY7d0ooa1txZj4+Ml18MCxrW3dkPj4yXXwwKTtpZihrW2RlKzIwPj4yXXwwKWtbdWY+PjJdPWtbZGUrMjA+PjJdO3N1KGtbemM+PjJdfDAsbFtGPj4wXXwwKXwwO2lmKE5JKGtbemM+PjJdfDApfDApe2Q9ODg4O2JyZWFrIGN9aWYoa1t1Zj4+Ml18MClicmVhayBhO2JyZWFrfWNhc2UgNzA6e2tbT2Q+PjJdPTA7a1twYz4+Ml09a1soa1soa1txZj4+Ml18MCkrMTEyPj4yXXwwKSsoa1soa1twZj4+Ml18MCkrND4+Ml08PDIpPj4yXTtpZighKGlbKGtbcGM+PjJdfDApKzI+PjBdfDApKXtrW3hkPj4yXT1rW2tbKGtbcGM+PjJdfDApKzE2Pj4yXT4+Ml07a1skYz4+Ml09a1trW3hkPj4yXT4+Ml07eWY9YmNba1soa1skYz4+Ml18MCkrMzY+PjJdJjI1NV0oa1soa1twYz4+Ml18MCkrMTY+PjJdfDApfDA7a1t1Zj4+Ml09eWY7d0ooa1txZj4+Ml18MCxrW3hkPj4yXXwwKTtpZihrW3VmPj4yXXwwKWJyZWFrIGE7eWY9YmNba1soa1skYz4+Ml18MCkrNDA+PjJdJjI1NV0oa1soa1twYz4+Ml18MCkrMTY+PjJdfDApfDA7a1tPZD4+Ml09eWY7aWYoa1tPZD4+Ml18MClkPTg7ZWxzZSBkPTd9YnJlYWt9Y2FzZSAxNTc6e2tbeWQ+PjJdPWtbKGtbKGtbcGY+PjJdfDApKzE2Pj4yXXwwKSs4Pj4yXTtrW2JkPj4yXT0oa1tlPj4yXXwwKSsoKGtbKGtbcGY+PjJdfDApKzQ+PjJdfDApKjQwfDApO3lmPXN1KGtbYmQ+PjJdfDAsMSl8MDtrW3VmPj4yXT15ZjtpZihrW3VmPj4yXXwwKWJyZWFrIGE7eWY9Z2Nba1soa1trW3lkPj4yXT4+Ml18MCkrNzY+PjJdJjI1NV0oa1t5ZD4+Ml18MCxrWyhrW2JkPj4yXXwwKSsxNj4+Ml18MCl8MDtrW3VmPj4yXT15Zjt3SihrW3FmPj4yXXwwLGtbeWQ+PjJdfDApO3lmPShrW3FmPj4yXXwwKSsxNDR8MDtqW3lmPj4xXT1qW3lmPj4xXSYtMjtpZihrW3VmPj4yXXwwKWJyZWFrIGE7YnJlYWt9Y2FzZSAxMjp7a1t6ZD4+Ml09a1soa1soa1twZj4+Ml18MCkrMTY+PjJdfDApKzg+PjJdO2lmKCEoa1t6ZD4+Ml18MCkpe2Q9ODM5O2JyZWFrIGN9aWYoIShrW2tbemQ+PjJdPj4yXXwwKSl7ZD04Mzk7YnJlYWsgY31rW2FkPj4yXT1rW2tbemQ+PjJdPj4yXTtrW0xhPj4yXT1rWyhrW3BmPj4yXXwwKSs4Pj4yXTtpZihrWyhrW2FkPj4yXXwwKSs1Mj4+Ml18MCl7aVtKZT4+MF09aVsoa1tyZj4+Ml18MCkrNzQ+PjBdfDA7a1t1Pj4yXT1rWyhrW3FmPj4yXXwwKSs5Nj4+Ml07a1tCZD4+Ml09KGtbZT4+Ml18MCkrKChrWyhrW3BmPj4yXXwwKSsxMj4+Ml18MCkqNDB8MCk7a1tSPj4yXT0wO3doaWxlKDEpe2lmKChrW1I+PjJdfDApPj0oa1tMYT4+Ml18MCkpYnJlYWs7a1soa1t1Pj4yXXwwKSsoa1tSPj4yXTw8Mik+PjJdPWtbQmQ+PjJdO2tbQmQ+PjJdPShrW0JkPj4yXXwwKSs0MDtrW1I+PjJdPShrW1I+PjJdfDApKzF9aVsoa1tyZj4+Ml18MCkrNzQ+PjBdPWlbKGtbcGY+PjJdfDApKzM+PjBdfDA7eWY9ZWNba1soa1thZD4+Ml18MCkrNTI+PjJdJjI1NV0oa1t6ZD4+Ml18MCxrW0xhPj4yXXwwLGtbdT4+Ml18MCxjZSl8MDtrW3VmPj4yXT15ZjtpWyhrW3JmPj4yXXwwKSs3ND4+MF09aVtKZT4+MF18MDt3SihrW3FmPj4yXXwwLGtbemQ+PjJdfDApO2lmKChrW3VmPj4yXXwwKT09MD8oa1soa1twZj4+Ml18MCkrND4+Ml18MCkhPTA6MCl7d2Y9Y2U7Yz1rW3dmPj4yXXwwO3dmPWtbd2YrND4+Ml18MDt5Zj1zZjtrW3lmPj4yXT1jO2tbeWYrND4+Ml09d2Y7eWY9KGtbcmY+PjJdfDApKzMyfDA7a1t5Zj4+Ml09YztrW3lmKzQ+PjJdPXdmfWRvIGlmKChrW3VmPj4yXSYyNTV8MCk9PTE5PyhsWyhrWyhrW3BmPj4yXXwwKSsxNj4+Ml18MCkrMTY+PjBdfDApIT0wOjApe2lmKChsWyhrW3BmPj4yXXwwKSszPj4wXXwwKT09NCl7a1t1Zj4+Ml09MDticmVha31pZigobFsoa1twZj4+Ml18MCkrMz4+MF18MCk9PTUpYj0yO2Vsc2UgYj1sWyhrW3BmPj4yXXwwKSszPj4wXXwwO2lbKGtbcWY+PjJdfDApKzE0Mj4+MF09Yn1lbHNlIGQ9ODU0O3doaWxlKDApO2lmKChkfDApPT04NTQpe2Q9MDt5Zj0oa1txZj4+Ml18MCkrNDR8MDtrW3lmPj4yXT0oa1t5Zj4+Ml18MCkrMX1pZihrW3VmPj4yXXwwKWJyZWFrIGF9YnJlYWt9Y2FzZSAxNTg6e3dmPU1JKGtbcWY+PjJdfDAsa1twZj4+Ml18MCl8MDtrW2RkPj4yXT13Zjt3Zj1FZyhrWyhrWyhrW3JmPj4yXXwwKSsxNj4+Ml18MCkrKGtbKGtbcGY+PjJdfDApKzQ+PjJdPDw0KSs0Pj4yXXwwKXwwO3lmPWtbZGQ+PjJdfDA7a1t5Zj4+Ml09d2Y7a1t5Zis0Pj4yXT0wO2JyZWFrfWNhc2UgMTU5Ont5Zj1NSShrW3FmPj4yXXwwLGtbcGY+PjJdfDApfDA7a1tkZD4+Ml09eWY7a1t1Yj4+Ml09a1soa1soa1tyZj4+Ml18MCkrMTY+PjJdfDApKyhrWyhrW3BmPj4yXXwwKSs0Pj4yXTw8NCkrND4+Ml07a1tjYj4+Ml09MDtpZigoa1soa1twZj4+Ml18MCkrMTI+PjJdfDApIT0wPyh5Zj1FZyhrW3ViPj4yXXwwKXwwLGtbY2I+PjJdPXlmLChrW2NiPj4yXXwwKT4+PjA8KGtbKGtbcGY+PjJdfDApKzEyPj4yXXwwKT4+PjApOjApa1tjYj4+Ml09a1soa1twZj4+Ml18MCkrMTI+PjJdO3dmPSRKKGtbdWI+PjJdfDAsa1tjYj4+Ml18MCl8MDt5Zj1rW2RkPj4yXXwwO2tbeWY+PjJdPXdmO2tbeWYrND4+Ml09KCh3ZnwwKTwwKTw8MzE+PjMxO2JyZWFrfWNhc2UgNzE6e2RvIGlmKChsWyhrW3JmPj4yXXwwKSs3Nj4+MF0mMTI5fDApIT0wPygobVsoa1txZj4+Ml18MCkrMTQ0Pj4xXXwwKT4+PjEmMXwwKT09MDowKXtpZihrWyhrW3BmPj4yXXwwKSsxNj4+Ml18MCliPWtbKGtbcGY+PjJdfDApKzE2Pj4yXXwwO2Vsc2UgYj1rWyhrW3FmPj4yXXwwKSsxNzY+PjJdfDA7a1tjZj4+Ml09YjtpZihiKXtiPWtbKGtbcmY+PjJdfDApKzE4ND4+Ml18MDtpZihsWyhrW3JmPj4yXXwwKSs3Nj4+MF0mMTI4KXtrW01lPj4yXT1iO3lmPUtoKGtbcWY+PjJdfDAsa1tjZj4+Ml18MCl8MDtrW1FlPj4yXT15ZjskYltrW01lPj4yXSYyNTVdKGtbKGtbcmY+PjJdfDApKzE4OD4+Ml18MCxrW1FlPj4yXXwwKTtVZChrW1FlPj4yXXwwKTticmVha31lbHNle2VjW2ImMjU1XSgxLGtbKGtbcmY+PjJdfDApKzE4OD4+Ml18MCxrW3FmPj4yXXwwLGtbY2Y+PjJdfDApfDA7YnJlYWt9fX13aGlsZSgwKTtpZigoa1soa1twZj4+Ml18MCkrND4+Ml18MCk+PShrWzcwXXwwKSl7a1tTPj4yXT0xO3doaWxlKDEpe2lmKChrW1M+PjJdfDApPj0oa1soa1txZj4+Ml18MCkrMTM2Pj4yXXwwKSlicmVhaztpZigobFsoa1soa1txZj4+Ml18MCkrODg+PjJdfDApKygoa1tTPj4yXXwwKSoyMHwwKT4+MF18MCk9PTIwKWtbKGtbKGtbcWY+PjJdfDApKzg4Pj4yXXwwKSsoKGtbUz4+Ml18MCkqMjB8MCkrND4+Ml09MDtrW1M+PjJdPShrW1M+PjJdfDApKzF9a1soa1twZj4+Ml18MCkrND4+Ml09MH1kPShrW3BmPj4yXXwwKSs0fDA7a1tkPj4yXT0oa1tkPj4yXXwwKSsxO2Q9MTQ7YnJlYWt9ZGVmYXVsdDp7fX13aGlsZSgwKTtkbyBpZigoZHwwKT09MjApe2Q9MDtrW2pmPj4yXT0oKGtbcGY+PjJdfDApLShrW2RmPj4yXXwwKXwwKS8yMHwwO2lmKGtbKGtbcGY+PjJdfDApKzQ+PjJdfDApe2Q9MjU7YnJlYWsgY31pZighKGtbKGtbcWY+PjJdfDApKzE4ND4+Ml18MCkpe2Q9MjU7YnJlYWsgY31rW0JjPj4yXT1rWyhrW3FmPj4yXXwwKSsxODQ+PjJdO2tbKGtbcWY+PjJdfDApKzE4ND4+Ml09a1soa1tCYz4+Ml18MCkrND4+Ml07Yz0oa1txZj4+Ml18MCkrMTkyfDA7a1tjPj4yXT0oa1tjPj4yXXwwKSstMTtJSShrW3JmPj4yXXwwLGtbKGtbcWY+PjJdfDApKzQ0Pj4yXXwwKTtjPUpJKGtbQmM+PjJdfDApfDA7a1tqZj4+Ml09YztjPShrW3JmPj4yXXwwKSszMnwwO3dmPWtbYys0Pj4yXXwwO3lmPXNmO2tbeWY+PjJdPWtbYz4+Ml07a1t5Zis0Pj4yXT13ZjtpZigoa1soa1twZj4+Ml18MCkrOD4+Ml18MCk9PTQpa1tqZj4+Ml09KGtbKGtbKGtbcWY+PjJdfDApKzg4Pj4yXXwwKSsoKGtbamY+PjJdfDApKjIwfDApKzg+PjJdfDApLTE7a1tkZj4+Ml09a1soa1txZj4+Ml18MCkrODg+PjJdO2tbZT4+Ml09a1soa1txZj4+Ml18MCkrOTI+PjJdO2tbcGY+PjJdPShrW2RmPj4yXXwwKSsoKGtbamY+PjJdfDApKjIwfDApfWVsc2UgaWYoKGR8MCk9PTQzKXtkPTA7eWY9TUkoa1txZj4+Ml18MCxrW3BmPj4yXXwwKXwwO2tbZGQ+PjJdPXlmO2pbKGtbZGQ+PjJdfDApKzg+PjFdPTI1NjI7a1soa1tkZD4+Ml18MCkrMTY+PjJdPWtbKGtbcGY+PjJdfDApKzE2Pj4yXTtrWyhrW2RkPj4yXXwwKSsxMj4+Ml09a1soa1twZj4+Ml18MCkrND4+Ml07aVsoa1tkZD4+Ml18MCkrMTA+PjBdPWlbRj4+MF18MDtpZigoa1soa1twZj4+Ml18MCkrMTI+PjJdfDApPjA/KGtbTGM+PjJdPShrW2U+PjJdfDApKygoa1soa1twZj4+Ml18MCkrMTI+PjJdfDApKjQwfDApLHlmPWtbTGM+PjJdfDAsKGtbeWYrND4+Ml18MCk9PTA/KGtbeWY+PjJdfDApPT0obFsoa1twZj4+Ml18MCkrMz4+MF18MCk6MCk6MClqWyhrW2RkPj4yXXwwKSs4Pj4xXT0yNTc2fWVsc2UgaWYoKGR8MCk9PTEyNil7ZD0wO2tbaWM+PjJdPWtbKGtbcGY+PjJdfDApKzE2Pj4yXTtrW2RkPj4yXT0oa1tlPj4yXXwwKSsoKGtbKGtbcGY+PjJdfDApKzEyPj4yXXwwKSo0MHwwKTtqOmRvIGlmKChrW2tbaWM+PjJdPj4yXXwwKSE9KGtbZGQ+PjJdfDApKXtrW2tbaWM+PjJdPj4yXT1rW2RkPj4yXTtrW1U+PjJdPShsWyhrW2ljPj4yXXwwKSsyNj4+MF18MCktMTt3aGlsZSgxKXtpZigoa1tVPj4yXXwwKTwwKWJyZWFrIGo7a1soa1tpYz4+Ml18MCkrMjgrKGtbVT4+Ml08PDIpPj4yXT0oa1tlPj4yXXwwKSsoKChrWyhrW3BmPj4yXXwwKSs4Pj4yXXwwKSsoa1tVPj4yXXwwKXwwKSo0MHwwKTtrW1U+PjJdPShrW1U+PjJdfDApKy0xfX13aGlsZSgwKTtqWyhrW2tbaWM+PjJdPj4yXXwwKSs4Pj4xXT1tWyhrW2tbaWM+PjJdPj4yXXwwKSs4Pj4xXSYtNDk2NjR8MTtpWyhrW2ljPj4yXXwwKSsyNT4+MF09MDt5Zj1zZjt3Zj1rW3lmKzQ+PjJdfDA7Yz0oa1tyZj4+Ml18MCkrMzJ8MDtrW2M+PjJdPWtbeWY+PjJdO2tbYys0Pj4yXT13ZjtjY1trWyhrWyhrW2ljPj4yXXwwKSs0Pj4yXXwwKSsxMj4+Ml0mMjU1XShrW2ljPj4yXXwwLGxbKGtbaWM+PjJdfDApKzI2Pj4wXXwwLChrW2ljPj4yXXwwKSsyOHwwKTtjPShrW3JmPj4yXXwwKSszMnwwO3dmPWtbYys0Pj4yXXwwO3lmPXNmO2tbeWY+PjJdPWtbYz4+Ml07a1t5Zis0Pj4yXT13ZjtpZihpWyhrW2ljPj4yXXwwKSsyNT4+MF18MCl7aWYoa1soa1tpYz4+Ml18MCkrMjA+PjJdfDApe3lmPWtbcWY+PjJdfDA7d2Y9amUoa1trW2ljPj4yXT4+Ml18MCl8MDtrW3ZlPj4yXT13ZjtLSSh5ZiwxODM5MSx2ZSk7a1t1Zj4+Ml09a1soa1tpYz4+Ml18MCkrMjA+PjJdfVZJKGtbcmY+PjJdfDAsKGtbcWY+PjJdfDApKzIwNHwwLGtbKGtbaWM+PjJdfDApKzE2Pj4yXXwwLGtbKGtbcGY+PjJdfDApKzQ+PjJdfDApO2lmKGtbdWY+PjJdfDApYnJlYWsgYX1pZigobVsoa1tkZD4+Ml18MCkrOD4+MV0mMTh8MCkhPTA/KHN1KGtba1tpYz4+Ml0+PjJdfDAsbFtGPj4wXXwwKXwwLChOSShrW2tbaWM+PjJdPj4yXXwwKXwwKSE9MCk6MCl7ZD04ODg7YnJlYWsgY319ZWxzZSBpZigoZHwwKT09NDQ0KXtpZihqWyhrW3FmPj4yXXwwKSsxNDQ+PjFdJjEpe2Q9NDQ1O2JyZWFrIGN9a1tVYT4+Ml09MDtrW09jPj4yXT0wO2tbcmI+PjJdPWtbKGtbcGY+PjJdfDApKzg+PjJdO2tbZmE+PjJdPWtbKGtbcGY+PjJdfDApKzEyPj4yXTtrW3djPj4yXT0oa1soa1tyZj4+Ml18MCkrMTY+PjJdfDApKyhrW2ZhPj4yXTw8NCk7a1tBZD4+Ml09a1soa1t3Yz4+Ml18MCkrND4+Ml07aWYoKGxba1twZj4+Ml0+PjBdfDApPT0xMDUpe2tbS2U+PjJdPTR8bFsoa1twZj4+Ml18MCkrMz4+MF0mODtpZigobFsoa1soa1t3Yz4+Ml18MCkrMTI+PjJdfDApKzc2Pj4wXXwwKTwobFsoa1txZj4+Ml18MCkrMTQzPj4wXXwwKSlpWyhrW3FmPj4yXXwwKSsxNDM+PjBdPWlbKGtbKGtbd2M+PjJdfDApKzEyPj4yXXwwKSs3Nj4+MF18MH1lbHNlIGtbS2U+PjJdPTA7aWYobFsoa1twZj4+Ml18MCkrMz4+MF0mMTYpe2tbS2M+PjJdPShrW2U+PjJdfDApKygoa1tyYj4+Ml18MCkqNDB8MCk7X3goa1tLYz4+Ml18MCl8MDtrW3JiPj4yXT1rW2tbS2M+PjJdPj4yXX1iPWtbcGY+PjJdfDA7aWYoKGlbKGtbcGY+PjJdfDApKzE+PjBdfDApIT0tNil7aWYoKGlbYisxPj4wXXwwKT09LTE0KWtbVWE+PjJdPWtbKGtbcGY+PjJdfDApKzE2Pj4yXX1lbHNle2tbT2M+PjJdPWtbYisxNj4+Ml07a1tVYT4+Ml09KG1bKGtbT2M+PjJdfDApKzY+PjFdfDApKyhtWyhrW09jPj4yXXwwKSs4Pj4xXXwwKX15Zj1qSihrW3FmPj4yXXwwLGtbKGtbcGY+PjJdfDApKzQ+PjJdfDAsa1tVYT4+Ml18MCxrW2ZhPj4yXXwwLDApfDA7a1tsYz4+Ml09eWY7aWYoIShrW2xjPj4yXXwwKSl7ZD04ODk7YnJlYWsgYX1pWyhrW2xjPj4yXXwwKSsyPj4wXT0xO2Q9KGtbbGM+PjJdfDApKzV8MDtpW2Q+PjBdPWlbZD4+MF0mLTV8NDtrWyhrW2xjPj4yXXwwKSs4Pj4yXT1rW3JiPj4yXTtkPWtKKGtbQWQ+PjJdfDAsa1tyYj4+Ml18MCxrW0tlPj4yXXwwLGtbT2M+PjJdfDAsa1soa1tsYz4+Ml18MCkrMTY+PjJdfDApfDA7a1t1Zj4+Ml09ZDtrWyhrW2xjPj4yXXwwKSsyND4+Ml09a1tPYz4+Ml07aVsoa1tsYz4+Ml18MCkrND4+MF09KGlbKGtbcGY+PjJdfDApKzE+PjBdfDApIT0tNjtkPTQ1OH1lbHNlIGlmKChkfDApPT01MjMpe2Q9MDtrW0xjPj4yXT0oa1tlPj4yXXwwKSsoKGtbKGtbcGY+PjJdfDApKzEyPj4yXXwwKSo0MHwwKTtrW0JiPj4yXT1rWyhrWyhrW3FmPj4yXXwwKSsxMTI+PjJdfDApKyhrWyhrW3BmPj4yXXwwKSs0Pj4yXTw8Mik+PjJdO2tbV2I+PjJdPWtbKGtbQmI+PjJdfDApKzE2Pj4yXTtrW1NkPj4yXT0wO3lmPWtbTGM+PjJdfDA7d2Y9a1t5Zis0Pj4yXXwwO2M9bWE7a1tjPj4yXT1rW3lmPj4yXTtrW2MrND4+Ml09d2Y7Yz1tYTtjPVlGKGtbV2I+PjJdfDAsMCxrW2M+PjJdfDAsa1tjKzQ+PjJdfDAsMCxTZCl8MDtrW3VmPj4yXT1jO2M9bWE7d2Y9a1tjKzQ+PjJdfDA7eWY9KGtbQmI+PjJdfDApKzQwfDA7a1t5Zj4+Ml09a1tjPj4yXTtrW3lmKzQ+PjJdPXdmO2lbKGtbQmI+PjJdfDApKzI+PjBdPTA7a1soa1tCYj4+Ml18MCkrNTY+PjJdPTA7aVsoa1tCYj4+Ml18MCkrMz4+MF09MDtrWyhrW0JiPj4yXXwwKSsyOD4+Ml09a1tTZD4+Ml07aWYoa1tTZD4+Ml18MCl7aWYoa1soa1twZj4+Ml18MCkrOD4+Ml18MCl7ZD0xNDticmVha315Zj1faig4MTQ1OCl8MDtrW3VmPj4yXT15Zn1pZihrW3VmPj4yXXwwKWJyZWFrIGF9ZWxzZSBpZigoZHwwKT09NjE3KXtkPTA7a1tMYj4+Ml09a1soa1soa1txZj4+Ml18MCkrMTEyPj4yXXwwKSsoa1soa1twZj4+Ml18MCkrND4+Ml08PDIpPj4yXTtrW1hkPj4yXT0xO2I9a1tMYj4+Ml18MDtpZigobFtrW0xiPj4yXT4+MF18MCk9PTEpe3lmPXlKKGIsWGQpfDA7a1t1Zj4+Ml09eWZ9ZWxzZXtrW19iPj4yXT1rW2IrMTY+PjJdO3lmPXpKKGtbX2I+PjJdfDAsWGQpfDA7a1t1Zj4+Ml09eWY7aVsoa1tMYj4+Ml18MCkrMz4+MF09MDtrWyhrW0xiPj4yXXwwKSs1Nj4+Ml09MH1pZihrW3VmPj4yXXwwKWJyZWFrIGE7aVsoa1tMYj4+Ml18MCkrMj4+MF09a1tYZD4+Ml07aWYoa1tYZD4+Ml18MClkPTE0fWVsc2UgaWYoKGR8MCk9PTYyNCl7a1tNYj4+Ml09a1soa1soa1txZj4+Ml18MCkrMTEyPj4yXXwwKSsoa1soa1twZj4+Ml18MCkrND4+Ml08PDIpPj4yXTtrW1lkPj4yXT1rWyhrW3BmPj4yXXwwKSsxMj4+Ml07eWY9Z2Nba1soa1twZj4+Ml18MCkrMTY+PjJdJjI1NV0oa1soa1tNYj4+Ml18MCkrMTY+PjJdfDAsWWQpfDA7a1t1Zj4+Ml09eWY7ZD02MjV9ZWxzZSBpZigoZHwwKT09NzUyKXtkPTA7a1trYz4+Ml09a1soa1twZj4+Ml18MCkrMTY+PjJdO2tbVWM+PjJdPShrW2U+PjJdfDApKygoa1soa1twZj4+Ml18MCkrMTI+PjJdfDApKjQwfDApO2s6ZG8gaWYoKGtbKGtba2M+PjJdfDApKzg+PjJdfDApIT0oa1tVYz4+Ml18MCkpe2tbKGtba2M+PjJdfDApKzg+PjJdPWtbVWM+PjJdO2tbWT4+Ml09KGxbKGtba2M+PjJdfDApKzI2Pj4wXXwwKS0xO3doaWxlKDEpe2lmKChrW1k+PjJdfDApPDApYnJlYWsgaztrWyhrW2tjPj4yXXwwKSsyOCsoa1tZPj4yXTw8Mik+PjJdPShrW2U+PjJdfDApKygoKGtbKGtbcGY+PjJdfDApKzg+PjJdfDApKyhrW1k+PjJdfDApfDApKjQwfDApO2tbWT4+Ml09KGtbWT4+Ml18MCkrLTF9fXdoaWxlKDApO3lmPShrW1VjPj4yXXwwKSsxMnwwO2tbeWY+PjJdPShrW3lmPj4yXXwwKSsxO3RHKGxlLGtbcmY+PjJdfDAsMSk7a1trW2tjPj4yXT4+Ml09bGU7aVsoa1trYz4+Ml18MCkrMjU+PjBdPTA7aVsoa1trYz4+Ml18MCkrMjQ+PjBdPTA7Y2Nba1soa1soa1trYz4+Ml18MCkrND4+Ml18MCkrMTI+PjJdJjI1NV0oa1trYz4+Ml18MCxsWyhrW2tjPj4yXXwwKSsyNj4+MF18MCwoa1trYz4+Ml18MCkrMjh8MCk7aWYoaVsoa1trYz4+Ml18MCkrMjU+PjBdfDApe2lmKGtbKGtba2M+PjJdfDApKzIwPj4yXXwwKXt5Zj1rW3FmPj4yXXwwO3dmPWplKGxlKXwwO2tbQ2U+PjJdPXdmO0tJKHlmLDE4MzkxLENlKTtrW3VmPj4yXT1rWyhrW2tjPj4yXXwwKSsyMD4+Ml19ZmgobGUpO2lmKGtbdWY+PjJdfDApYnJlYWsgYX1pZigoaVsoa1trYz4+Ml18MCkrMjQ+PjBdfDApIT0wPyhrW1k+PjJdPWtbKGtbcGY+PjJdfDApKy0yMCs0Pj4yXSwoa1tZPj4yXXwwKSE9MCk6MClyaCgoa1tlPj4yXXwwKSsoKGtbWT4+Ml18MCkqNDB8MCl8MCwxLDApfXdoaWxlKDApO2RvIGlmKChkfDApPT0xNCl7ZD0wO2tbcGY+PjJdPShrW2RmPj4yXXwwKSsoKChrWyhrW3BmPj4yXXwwKSs4Pj4yXXwwKS0xfDApKjIwfDApfWVsc2UgaWYoKGR8MCk9PTQ1OCl7ZD0wO2xKKGtbKGtbbGM+PjJdfDApKzE2Pj4yXXwwLGxbKGtbcGY+PjJdfDApKzM+PjBdJjMpO2lmKGtbdWY+PjJdfDApYnJlYWsgYX1lbHNlIGlmKChkfDApPT02MjUpe2Q9MDtrWyhrW01iPj4yXXwwKSs1Nj4+Ml09MDtpZihrW3VmPj4yXXwwKWJyZWFrIGE7Yj0oa1tNYj4+Ml18MCkrMnwwO2lmKCEoa1tZZD4+Ml18MCkpe2lbYj4+MF09MDtkPShrW3FmPj4yXXwwKSsxNTYrKGxbKGtbcGY+PjJdfDApKzM+PjBdPDwyKXwwO2tbZD4+Ml09KGtbZD4+Ml18MCkrMTtkPTc7YnJlYWt9ZWxzZXtpW2I+PjBdPTE7ZD04O2JyZWFrfX13aGlsZSgwKTtpZigoZHwwKT09Nyl7a1twZj4+Ml09KGtbZGY+PjJdfDApKygoKGtbKGtbcGY+PjJdfDApKzg+PjJdfDApLTF8MCkqMjB8MCk7ZD04fWlmKChkfDApPT04KXtkPTA7aWYoa1soa1tyZj4+Ml18MCkrMjQ4Pj4yXXwwKWJyZWFrIGI7aWYoKChrWyhrW3JmPj4yXXwwKSszMDQ+PjJdfDApIT0wPyhrW3RmPj4yXXwwKT4+PjA+PShrW19hPj4yXXwwKT4+PjA6MCk/KGtbX2E+PjJdPShrW3RmPj4yXXwwKSsoa1soa1tyZj4+Ml18MCkrMzEyPj4yXXwwKS0oKChrW3RmPj4yXXwwKT4+PjApJSgoa1soa1tyZj4+Ml18MCkrMzEyPj4yXXwwKT4+PjApfDApLChiY1trWyhrW3JmPj4yXXwwKSszMDQ+PjJdJjI1NV0oa1soa1tyZj4+Ml18MCkrMzA4Pj4yXXwwKXwwKSE9MCk6MCl7ZD0xMjticmVha319a1twZj4+Ml09KGtbcGY+PjJdfDApKzIwfXN3aXRjaChkfDApe2Nhc2UgMTI6e2tbdWY+PjJdPTk7YnJlYWsgYX1jYXNlIDI1OntrWyhrW3FmPj4yXXwwKSs0MD4+Ml09a1soa1twZj4+Ml18MCkrND4+Ml07aVsoa1txZj4+Ml18MCkrMTQyPj4wXT1rWyhrW3BmPj4yXXwwKSs4Pj4yXTtrWyhrW3FmPj4yXXwwKSszNj4+Ml09a1tqZj4+Ml07aWYoa1soa1txZj4+Ml18MCkrNDA+PjJdfDApe2I9a1txZj4+Ml18MDthPWtbcGY+PjJdfDA7aWYoaVsoa1twZj4+Ml18MCkrMz4+MF18MCl7a1tsZj4+Ml09a1s1NTcyKygobFthKzM+PjBdfDApLTE8PDIpPj4yXTtLSShiLDM5ODczLGxmKTtpZihrWyhrW3BmPj4yXXwwKSsxNj4+Ml18MCl7eWY9a1tyZj4+Ml18MDt3Zj1rWyhrW3BmPj4yXXwwKSsxNj4+Ml18MDtrW21mPj4yXT1rWyhrW3FmPj4yXXwwKSsxMDg+PjJdO2tbbWYrND4+Ml09d2Y7eWY9UWgoeWYsMzk4OTQsbWYpfDA7a1soa1txZj4+Ml18MCkrMTA4Pj4yXT15Zn19ZWxzZXtrW25mPj4yXT1rW2ErMTY+PjJdO0tJKGIsMTgzOTEsbmYpfXlmPWtbKGtbcGY+PjJdfDApKzQ+PjJdfDA7cGY9a1soa1txZj4+Ml18MCkrMTc2Pj4yXXwwO3dmPWtbKGtbcWY+PjJdfDApKzEwOD4+Ml18MDtrW29mPj4yXT1rW2pmPj4yXTtrW29mKzQ+PjJdPXBmO2tbb2YrOD4+Ml09d2Y7JGQoeWYsMzk5MDEsb2YpfWI9TEkoa1txZj4+Ml18MCl8MDtrW3VmPj4yXT1iO2I9KGtbcWY+PjJdfDApKzQwfDA7aWYoKGtbdWY+PjJdfDApPT01KXtrW2I+PjJdPTU7eWY9c2Y7cGY9eWY7cGY9a1twZj4+Ml18MDt5Zj15Zis0fDA7eWY9a1t5Zj4+Ml18MDt3Zj1rW3JmPj4yXXwwO3dmPXdmKzMyfDA7c2Y9d2Y7a1tzZj4+Ml09cGY7d2Y9d2YrNHwwO2tbd2Y+PjJdPXlmO3dmPWtbdGY+PjJdfDA7eWY9a1txZj4+Ml18MDt5Zj15ZisxNTZ8MDt5Zj15ZisxNnwwO3RmPWtbeWY+PjJdfDA7d2Y9dGYrd2Z8MDtrW3lmPj4yXT13Zjt5Zj1rW3VmPj4yXXwwO3I9dmY7cmV0dXJuIHlmfDB9ZWxzZXtrW3VmPj4yXT0oa1tiPj4yXXwwKSE9MD8xOjEwMTt5Zj1zZjtwZj15ZjtwZj1rW3BmPj4yXXwwO3lmPXlmKzR8MDt5Zj1rW3lmPj4yXXwwO3dmPWtbcmY+PjJdfDA7d2Y9d2YrMzJ8MDtzZj13ZjtrW3NmPj4yXT1wZjt3Zj13Zis0fDA7a1t3Zj4+Ml09eWY7d2Y9a1t0Zj4+Ml18MDt5Zj1rW3FmPj4yXXwwO3lmPXlmKzE1NnwwO3lmPXlmKzE2fDA7dGY9a1t5Zj4+Ml18MDt3Zj10Zit3ZnwwO2tbeWY+PjJdPXdmO3lmPWtbdWY+PjJdfDA7cj12ZjtyZXR1cm4geWZ8MH19Y2FzZSA2NDp7aWYoKChrWyhrW3JmPj4yXXwwKSszMDQ+PjJdfDApIT0wPyhrW3RmPj4yXXwwKT4+PjA+PShrW19hPj4yXXwwKT4+PjA6MCk/KGJjW2tbKGtbcmY+PjJdfDApKzMwND4+Ml0mMjU1XShrWyhrW3JmPj4yXXwwKSszMDg+PjJdfDApfDApIT0wOjApe2tbdWY+PjJdPTk7YnJlYWsgYX15Zj1PSShrW3FmPj4yXXwwLDApfDA7a1t1Zj4+Ml09eWY7aWYoeWYpYnJlYWsgYTt5Zj1QSShrW3FmPj4yXXwwLDEpfDA7a1t1Zj4+Ml09eWY7a1soa1txZj4+Ml18MCkrMzI+PjJdPShrWyhrW3FmPj4yXXwwKSszMj4+Ml18MCkrMnwxO3lmPShrW2U+PjJdfDApKygoa1soa1twZj4+Ml18MCkrND4+Ml18MCkqNDB8MCl8MDtrWyhrW3FmPj4yXXwwKSsxMDQ+PjJdPXlmO2tbUmM+PjJdPXlmO2tbTz4+Ml09MDt3aGlsZSgxKXtpZigoa1tPPj4yXXwwKT49KGtbKGtbcGY+PjJdfDApKzg+PjJdfDApKWJyZWFrO2lmKChtWyhrW1JjPj4yXXwwKSsoKGtbTz4+Ml18MCkqNDB8MCkrOD4+MV0mNDA5NnwwKSE9MD8obGgoKGtbUmM+PjJdfDApKygoa1tPPj4yXXwwKSo0MHwwKXwwKXwwKSE9MDowKXtkPTg4OTticmVhayBhfVFJKChrW1JjPj4yXXwwKSsoKGtbTz4+Ml18MCkqNDB8MCl8MCl8MDtrW08+PjJdPShrW08+PjJdfDApKzF9aWYoaVsoa1tyZj4+Ml18MCkrNjk+PjBdfDApe2Q9ODg5O2JyZWFrIGF9aWYobFsoa1tyZj4+Ml18MCkrNzY+PjBdJjQpZWNba1soa1tyZj4+Ml18MCkrMTg0Pj4yXSYyNTVdKDQsa1soa1tyZj4+Ml18MCkrMTg4Pj4yXXwwLGtbcWY+PjJdfDAsMCl8MDtrWyhrW3FmPj4yXXwwKSszNj4+Ml09KCgoa1twZj4+Ml18MCktKGtbZGY+PjJdfDApfDApLzIwfDApKzE7a1t1Zj4+Ml09MTAwO3lmPXNmO3BmPXlmO3BmPWtbcGY+PjJdfDA7eWY9eWYrNHwwO3lmPWtbeWY+PjJdfDA7d2Y9a1tyZj4+Ml18MDt3Zj13ZiszMnwwO3NmPXdmO2tbc2Y+PjJdPXBmO3dmPXdmKzR8MDtrW3dmPj4yXT15Zjt3Zj1rW3RmPj4yXXwwO3lmPWtbcWY+PjJdfDA7eWY9eWYrMTU2fDA7eWY9eWYrMTZ8MDt0Zj1rW3lmPj4yXXwwO3dmPXRmK3dmfDA7a1t5Zj4+Ml09d2Y7eWY9a1t1Zj4+Ml18MDtyPXZmO3JldHVybiB5ZnwwfWNhc2UgMTU5OntrW3VmPj4yXT0yMDticmVhayBhfWNhc2UgMjY3Ont5Zj1faig3OTgzNSl8MDtrW3VmPj4yXT15ZjticmVhayBhfWNhc2UgMjg2OntpZighKGtbKGtbeGI+PjJdfDApKzcyPj4yXXwwKSlmaChlZSk7eWY9X2ooNzk4OTQpfDA7a1t1Zj4+Ml09eWY7YnJlYWsgYX1jYXNlIDM3MDp7a1soa1txZj4+Ml18MCkrMzY+PjJdPSgoa1twZj4+Ml18MCktKGtbZGY+PjJdfDApfDApLzIwfDA7aVsoa1tyZj4+Ml18MCkrNjc+PjBdPTA7a1t1Zj4+Ml09NTtrWyhrW3FmPj4yXXwwKSs0MD4+Ml09NTt5Zj1zZjtwZj15ZjtwZj1rW3BmPj4yXXwwO3lmPXlmKzR8MDt5Zj1rW3lmPj4yXXwwO3dmPWtbcmY+PjJdfDA7d2Y9d2YrMzJ8MDtzZj13ZjtrW3NmPj4yXT1wZjt3Zj13Zis0fDA7a1t3Zj4+Ml09eWY7d2Y9a1t0Zj4+Ml18MDt5Zj1rW3FmPj4yXXwwO3lmPXlmKzE1NnwwO3lmPXlmKzE2fDA7dGY9a1t5Zj4+Ml18MDt3Zj10Zit3ZnwwO2tbeWY+PjJdPXdmO3lmPWtbdWY+PjJdfDA7cj12ZjtyZXR1cm4geWZ8MH1jYXNlIDM5Mzp7a1tDPj4yXT1rWyhrW3BmPj4yXXwwKSs0Pj4yXTtrW3JhPj4yXT1rWyhrW3BmPj4yXXwwKSs4Pj4yXTtpZigoa1tDPj4yXXwwKT09KGxbKGtbcmY+PjJdfDApKzY3Pj4wXXwwKSl7aWYoa1tDPj4yXXwwKWI9KGtbcmE+PjJdfDApIT0wPzQwMTMzOjQwMTc2O2Vsc2UgYj00MDIxNztLSShrW3FmPj4yXXwwLGIsZmYpO2tbdWY+PjJdPTE7YnJlYWsgYX1kbyBpZighKGtbcmE+PjJdfDApKXtpZigoa1tDPj4yXXwwKSE9MD8oa1soa1tyZj4+Ml18MCkrMTY0Pj4yXXwwKT4wOjApe0tJKGtbcWY+PjJdfDAsNDAwNzgsemUpO2tbdWY+PjJdPTU7YnJlYWsgYX15Zj1PSShrW3FmPj4yXXwwLDEpfDA7a1t1Zj4+Ml09eWY7aWYoeWYpe3lmPXNmO3BmPXlmO3BmPWtbcGY+PjJdfDA7eWY9eWYrNHwwO3lmPWtbeWY+PjJdfDA7d2Y9a1tyZj4+Ml18MDt3Zj13ZiszMnwwO3NmPXdmO2tbc2Y+PjJdPXBmO3dmPXdmKzR8MDtrW3dmPj4yXT15Zjt3Zj1rW3RmPj4yXXwwO3lmPWtbcWY+PjJdfDA7eWY9eWYrMTU2fDA7eWY9eWYrMTZ8MDt0Zj1rW3lmPj4yXXwwO3dmPXRmK3dmfDA7a1t5Zj4+Ml09d2Y7eWY9a1t1Zj4+Ml18MDtyPXZmO3JldHVybiB5ZnwwfWVsc2V7aVsoa1tyZj4+Ml18MCkrNjc+PjBdPWtbQz4+Ml07YnJlYWt9fWVsc2V7Z0ooa1tyZj4+Ml18MCw1MTYpO2lbKGtbcmY+PjJdfDApKzY3Pj4wXT0xfXdoaWxlKDApO2lmKChMSShrW3FmPj4yXXwwKXwwKT09NSl7a1soa1txZj4+Ml18MCkrMzY+PjJdPSgoa1twZj4+Ml18MCktKGtbZGY+PjJdfDApfDApLzIwfDA7aVsoa1tyZj4+Ml18MCkrNjc+PjBdPTEtKGtbQz4+Ml18MCk7a1t1Zj4+Ml09NTtrWyhrW3FmPj4yXXwwKSs0MD4+Ml09NTt5Zj1zZjtwZj15ZjtwZj1rW3BmPj4yXXwwO3lmPXlmKzR8MDt5Zj1rW3lmPj4yXXwwO3dmPWtbcmY+PjJdfDA7d2Y9d2YrMzJ8MDtzZj13ZjtrW3NmPj4yXT1wZjt3Zj13Zis0fDA7a1t3Zj4+Ml09eWY7d2Y9a1t0Zj4+Ml18MDt5Zj1rW3FmPj4yXXwwO3lmPXlmKzE1NnwwO3lmPXlmKzE2fDA7dGY9a1t5Zj4+Ml18MDt3Zj10Zit3ZnwwO2tbeWY+PjJdPXdmO3lmPWtbdWY+PjJdfDA7cj12ZjtyZXR1cm4geWZ8MH1oSihrW3JmPj4yXXwwKTtpZighKGtbKGtbcWY+PjJdfDApKzQwPj4yXXwwKSl7a1t1Zj4+Ml09MTAxO3lmPXNmO3BmPXlmO3BmPWtbcGY+PjJdfDA7eWY9eWYrNHwwO3lmPWtbeWY+PjJdfDA7d2Y9a1tyZj4+Ml18MDt3Zj13ZiszMnwwO3NmPXdmO2tbc2Y+PjJdPXBmO3dmPXdmKzR8MDtrW3dmPj4yXT15Zjt3Zj1rW3RmPj4yXXwwO3lmPWtbcWY+PjJdfDA7eWY9eWYrMTU2fDA7eWY9eWYrMTZ8MDt0Zj1rW3lmPj4yXXwwO3dmPXRmK3dmfDA7a1t5Zj4+Ml09d2Y7eWY9a1t1Zj4+Ml18MDtyPXZmO3JldHVybiB5ZnwwfWVsc2V7a1t1Zj4+Ml09MTt5Zj1zZjtwZj15ZjtwZj1rW3BmPj4yXXwwO3lmPXlmKzR8MDt5Zj1rW3lmPj4yXXwwO3dmPWtbcmY+PjJdfDA7d2Y9d2YrMzJ8MDtzZj13ZjtrW3NmPj4yXT1wZjt3Zj13Zis0fDA7a1t3Zj4+Ml09eWY7d2Y9a1t0Zj4+Ml18MDt5Zj1rW3FmPj4yXXwwO3lmPXlmKzE1NnwwO3lmPXlmKzE2fDA7dGY9a1t5Zj4+Ml18MDt3Zj10Zit3ZnwwO2tbeWY+PjJdPXdmO3lmPWtbdWY+PjJdfDA7cj12ZjtyZXR1cm4geWZ8MH19Y2FzZSA0MTE6e2tbdWY+PjJdPTg7YnJlYWsgYX1jYXNlIDQxNDp7aWYoKGtbdWY+PjJdJjI1NXwwKSE9NSlicmVhayBhO2tbKGtbcWY+PjJdfDApKzM2Pj4yXT0oKGtbcGY+PjJdfDApLShrW2RmPj4yXXwwKXwwKS8yMHwwO2tbKGtbcWY+PjJdfDApKzQwPj4yXT1rW3VmPj4yXTt5Zj1zZjtwZj15ZjtwZj1rW3BmPj4yXXwwO3lmPXlmKzR8MDt5Zj1rW3lmPj4yXXwwO3dmPWtbcmY+PjJdfDA7d2Y9d2YrMzJ8MDtzZj13ZjtrW3NmPj4yXT1wZjt3Zj13Zis0fDA7a1t3Zj4+Ml09eWY7d2Y9a1t0Zj4+Ml18MDt5Zj1rW3FmPj4yXXwwO3lmPXlmKzE1NnwwO3lmPXlmKzE2fDA7dGY9a1t5Zj4+Ml18MDt3Zj10Zit3ZnwwO2tbeWY+PjJdPXdmO3lmPWtbdWY+PjJdfDA7cj12ZjtyZXR1cm4geWZ8MH1jYXNlIDQ0NTp7a1t1Zj4+Ml09NTE2O2JyZWFrIGF9Y2FzZSA1NDQ6e2tbdWY+PjJdPTEzO2JyZWFrIGF9Y2FzZSA1NTQ6e2tbdWY+PjJdPTEzO2JyZWFrIGF9Y2FzZSA2NjA6e2tbdWY+PjJdPTY7aVsoa1txZj4+Ml18MCkrMTQyPj4wXT0yO2JyZWFrIGF9Y2FzZSA2ODI6e01nKGtbcmY+PjJdfDApO2lmKChrW3VmPj4yXXwwKT09Nyl7ZD04ODk7YnJlYWsgYX1lbHNlIGJyZWFrIGF9Y2FzZSA3MTE6e2tbdWY+PjJdPTE7S0koa1txZj4+Ml18MCw0MDM1NyxCZSk7YnJlYWsgYX1jYXNlIDc2NDp7eWY9a1txZj4+Ml18MDt3Zj1qZShrW1ZjPj4yXXwwKXwwO2tbRGU+PjJdPXdmO0tJKHlmLDE4MzkxLERlKTticmVhayBhfWNhc2UgNzg0OntrW3VmPj4yXT0xO3lmPWtbcWY+PjJdfDA7a1tFZT4+Ml09KGtbRD4+Ml18MCk9PTU/NDAzOTQ6NDAzOTk7S0koeWYsNDA0MDYsRWUpO2JyZWFrIGF9Y2FzZSA4MDU6e2lmKChrW3VmPj4yXSYyNTV8MCkhPTYpYnJlYWsgYTtrW1BlPj4yXT1rWyhrW3BmPj4yXXwwKSsxNj4+Ml07eWY9a1txZj4+Ml18MDtrW0ZlPj4yXT1rW1BlPj4yXTtLSSh5Ziw0MDQ1OCxGZSk7YnJlYWsgYX1jYXNlIDgxNjp7a1t1Zj4+Ml09NjticmVhayBhfWNhc2UgODIwOntiY1trWyhrW1ljPj4yXXwwKSsyOD4+Ml0mMjU1XShrW3BkPj4yXXwwKXwwO2Q9ODg5O2JyZWFrIGF9Y2FzZSA4Mzk6e2tbdWY+PjJdPTY7YnJlYWsgYX1jYXNlIDg4Nzp7eWY9c2Y7cGY9eWY7cGY9a1twZj4+Ml18MDt5Zj15Zis0fDA7eWY9a1t5Zj4+Ml18MDt3Zj1rW3JmPj4yXXwwO3dmPXdmKzMyfDA7c2Y9d2Y7a1tzZj4+Ml09cGY7d2Y9d2YrNHwwO2tbd2Y+PjJdPXlmO3dmPWtbdGY+PjJdfDA7eWY9a1txZj4+Ml18MDt5Zj15ZisxNTZ8MDt5Zj15ZisxNnwwO3RmPWtbeWY+PjJdfDA7d2Y9dGYrd2Z8MDtrW3lmPj4yXT13Zjt5Zj1rW3VmPj4yXXwwO3I9dmY7cmV0dXJuIHlmfDB9Y2FzZSA4ODg6e0tJKGtbcWY+PjJdfDAsMTgxNzAsR2UpO2tbdWY+PjJdPTE4O2JyZWFrIGF9fX13aGlsZSgwKTtrW3VmPj4yXT0obFsoa1tyZj4+Ml18MCkrNjk+PjBdfDApIT0wPzc6OTtrWyhrW3FmPj4yXXwwKSs0MD4+Ml09a1t1Zj4+Ml07eWY9a1txZj4+Ml18MDt3Zj12aChrW3VmPj4yXXwwKXwwO2tbSWU+PjJdPXdmO0tJKHlmLDE4MzkxLEllKX13aGlsZSgwKTtpZigoZHwwKT09ODg5KXt3aChrW3JmPj4yXXwwKTtLSShrW3FmPj4yXXwwLDI1MDE2LEhlKTtrW3VmPj4yXT03fWlmKGlbKGtbcmY+PjJdfDApKzY5Pj4wXXwwKWtbdWY+PjJdPTc7aWYoKGtbdWY+PjJdfDApIT0zMDgyPyhrWyhrW3FmPj4yXXwwKSsxMDg+PjJdfDApPT0wOjApe3lmPWtbcWY+PjJdfDA7d2Y9dmgoa1t1Zj4+Ml18MCl8MDtrW2dmPj4yXT13ZjtLSSh5ZiwxODM5MSxnZil9a1soa1txZj4+Ml18MCkrNDA+PjJdPWtbdWY+PjJdO2FLKGtbcmY+PjJdfDAsa1t1Zj4+Ml18MCk7eWY9a1t1Zj4+Ml18MDtvZj1rWyhrW3FmPj4yXXwwKSsxNzY+PjJdfDA7d2Y9a1soa1txZj4+Ml18MCkrMTA4Pj4yXXwwO2tbaGY+PjJdPSgoa1twZj4+Ml18MCktKGtbZGY+PjJdfDApfDApLzIwfDA7a1toZis0Pj4yXT1vZjtrW2hmKzg+PjJdPXdmOyRkKHlmLDQwNDg3LGhmKTtMSShrW3FmPj4yXXwwKXwwO2lmKChrW3VmPj4yXXwwKT09MzA4Mil3aChrW3JmPj4yXXwwKTtrW3VmPj4yXT0xO2lmKChsW2VmPj4wXXwwKTw9MCl7eWY9c2Y7cGY9eWY7cGY9a1twZj4+Ml18MDt5Zj15Zis0fDA7eWY9a1t5Zj4+Ml18MDt3Zj1rW3JmPj4yXXwwO3dmPXdmKzMyfDA7c2Y9d2Y7a1tzZj4+Ml09cGY7d2Y9d2YrNHwwO2tbd2Y+PjJdPXlmO3dmPWtbdGY+PjJdfDA7eWY9a1txZj4+Ml18MDt5Zj15ZisxNTZ8MDt5Zj15ZisxNnwwO3RmPWtbeWY+PjJdfDA7d2Y9dGYrd2Z8MDtrW3lmPj4yXT13Zjt5Zj1rW3VmPj4yXXwwO3I9dmY7cmV0dXJuIHlmfDB9R2ooa1tyZj4+Ml18MCwobFtlZj4+MF18MCktMXwwKTt5Zj1zZjtwZj15ZjtwZj1rW3BmPj4yXXwwO3lmPXlmKzR8MDt5Zj1rW3lmPj4yXXwwO3dmPWtbcmY+PjJdfDA7d2Y9d2YrMzJ8MDtzZj13ZjtrW3NmPj4yXT1wZjt3Zj13Zis0fDA7a1t3Zj4+Ml09eWY7d2Y9a1t0Zj4+Ml18MDt5Zj1rW3FmPj4yXXwwO3lmPXlmKzE1NnwwO3lmPXlmKzE2fDA7dGY9a1t5Zj4+Ml18MDt3Zj10Zit3ZnwwO2tbeWY+PjJdPXdmO3lmPWtbdWY+PjJdfDA7cj12ZjtyZXR1cm4geWZ8MH1mdW5jdGlvbiBESShhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTAsZT0wLGY9MCxnPTA7Zz1yO3I9ciszMnwwO2I9ZysxNnwwO2Y9ZysxMnwwO2M9Zys4fDA7ZT1nKzR8MDtkPWc7a1tiPj4yXT1hO2tbZj4+Ml09MDtrW2M+PjJdPTA7d2hpbGUoMSl7aWYoKGtbYz4+Ml18MCk+PShrWyhrW2I+PjJdfDApKzIwPj4yXXwwKSlicmVhaztrW2U+PjJdPWtbKGtbKGtbYj4+Ml18MCkrMTY+PjJdfDApKyhrW2M+PjJdPDw0KSs0Pj4yXTtpZigoa1tlPj4yXXwwKSE9MD8od2coa1tlPj4yXXwwKSxhPUZJKFpmKGtbZT4+Ml18MCl8MCl8MCxrW2Q+PjJdPWEsKChrW2Q+PjJdfDApPjA/KGtbKGtbYj4+Ml18MCkrMjI0Pj4yXXwwKSE9MDowKSYoa1tmPj4yXXwwKT09MCk6MCl7YT1lY1trWyhrW2I+PjJdfDApKzIyND4+Ml0mMjU1XShrWyhrW2I+PjJdfDApKzIyOD4+Ml18MCxrW2I+PjJdfDAsa1soa1soa1tiPj4yXXwwKSsxNj4+Ml18MCkrKGtbYz4+Ml08PDQpPj4yXXwwLGtbZD4+Ml18MCl8MDtrW2Y+PjJdPWF9a1tjPj4yXT0oa1tjPj4yXXwwKSsxfXI9ZztyZXR1cm4ga1tmPj4yXXwwfWZ1bmN0aW9uIEVJKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MCxlPTA7ZT1yO3I9cisxNnwwO2I9ZSs4fDA7Yz1lKzR8MDtkPWU7a1tiPj4yXT1hO2tbYz4+Ml09a1trW2I+PjJdPj4yXTtrW2Q+PjJdPWtbKGtbYj4+Ml18MCkrNDA+PjJdO2E9a1tjPj4yXXwwO2lmKCEoa1soa1tiPj4yXXwwKSsxMDg+PjJdfDApKXt2ZyhhLGtbZD4+Ml18MCk7ZD1rW2Q+PjJdfDA7cj1lO3JldHVybiBkfDB9YT1hKzcwfDA7aVthPj4wXT0oaVthPj4wXXwwKSsxPDwyND4+MjQ7Z2soKTtpZighKGtbKGtbYz4+Ml18MCkrMjQ0Pj4yXXwwKSl7YT1oaShrW2M+PjJdfDApfDA7a1soa1tjPj4yXXwwKSsyNDQ+PjJdPWF9aWkoa1soa1tjPj4yXXwwKSsyNDQ+PjJdfDAsLTEsa1soa1tiPj4yXXwwKSsxMDg+PjJdfDAsMSwtMSk7aGsoKTtiPShrW2M+PjJdfDApKzcwfDA7aVtiPj4wXT0oaVtiPj4wXXwwKSstMTw8MjQ+PjI0O2tbKGtbYz4+Ml18MCkrNTI+PjJdPWtbZD4+Ml07ZD1rW2Q+PjJdfDA7cj1lO3JldHVybiBkfDB9ZnVuY3Rpb24gRkkoYSl7YT1hfDA7dmFyIGI9MCxjPTA7Yj1yO3I9cisxNnwwO2M9YjtrW2M+PjJdPWE7YT1HSShrWyhrW2M+PjJdfDApKzIxNj4+Ml18MCl8MDtyPWI7cmV0dXJuIGF8MH1mdW5jdGlvbiBHSShhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTA7ZD1yO3I9cisxNnwwO2I9ZCs0fDA7Yz1kO2tbYj4+Ml09YTtrW2M+PjJdPTA7aWYoIShrW2I+PjJdfDApKXtjPWtbYz4+Ml18MDtyPWQ7cmV0dXJuIGN8MH1rW2M+PjJdPWtbKGtbYj4+Ml18MCkrMTI+PjJdO2tbKGtbYj4+Ml18MCkrMTI+PjJdPTA7Yz1rW2M+PjJdfDA7cj1kO3JldHVybiBjfDB9ZnVuY3Rpb24gSEkoYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wLGU9MCxmPTAsZz0wO2c9cjtyPXIrMzJ8MDtiPWcrMTZ8MDtlPWcrMTJ8MDtkPWcrOHwwO2M9Zys0fDA7Zj1nO2tbYj4+Ml09YTtpZighKGtbKGtbYj4+Ml18MCkrMTUyPj4yXXwwKSl7cj1nO3JldHVybn1rW2Q+PjJdPWtba1tiPj4yXT4+Ml07a1tjPj4yXT1rWyhrW2Q+PjJdfDApKzE2Pj4yXTtrW2Y+PjJdPWtbKGtbZD4+Ml18MCkrMjA+PjJdO2tbZT4+Ml09MDt3aGlsZSgxKXtpZigoa1tlPj4yXXwwKT49KGtbZj4+Ml18MCkpYnJlYWs7aWYoKChrW2U+PjJdfDApIT0xPyhrWyhrW2I+PjJdfDApKzE1Mj4+Ml0mMTw8a1tlPj4yXXwwKSE9MDowKT8oa1soa1tjPj4yXXwwKSsoa1tlPj4yXTw8NCkrND4+Ml18MCkhPTA6MCl3ZyhrWyhrW2M+PjJdfDApKyhrW2U+PjJdPDw0KSs0Pj4yXXwwKTtrW2U+PjJdPShrW2U+PjJdfDApKzF9cj1nO3JldHVybn1mdW5jdGlvbiBJSShhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MDtjPXI7cj1yKzE2fDA7ZT1jKzR8MDtkPWM7a1tlPj4yXT1hO2tbZD4+Ml09YjtrWyhrW2U+PjJdfDApKzg4Pj4yXT1rW2Q+PjJdO2I9KGtbZT4+Ml18MCkrOTJ8MDtrW2I+PjJdPShrW2I+PjJdfDApKyhrW2Q+PjJdfDApO3I9YztyZXR1cm59ZnVuY3Rpb24gSkkoYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wLGU9MCxmPTA7Yz1yO3I9cisxNnwwO2I9Yys0fDA7ZD1jO2tbYj4+Ml09YTtrW2Q+PjJdPWtba1tiPj4yXT4+Ml07Wk0oa1tkPj4yXXwwKTtrWyhrW2Q+PjJdfDApKzg4Pj4yXT1rWyhrW2I+PjJdfDApKzg+PjJdO2tbKGtbZD4+Ml18MCkrMTM2Pj4yXT1rWyhrW2I+PjJdfDApKzUyPj4yXTtrWyhrW2Q+PjJdfDApKzkyPj4yXT1rWyhrW2I+PjJdfDApKzE2Pj4yXTtrWyhrW2Q+PjJdfDApKzI0Pj4yXT1rWyhrW2I+PjJdfDApKzU2Pj4yXTtrWyhrW2Q+PjJdfDApKzExMj4+Ml09a1soa1tiPj4yXXwwKSsyMD4+Ml07a1soa1tkPj4yXXwwKSsyOD4+Ml09a1soa1tiPj4yXXwwKSs0ND4+Ml07Zj0oa1tiPj4yXXwwKSszMnwwO2U9a1tmKzQ+PjJdfDA7YT0oa1trW2Q+PjJdPj4yXXwwKSszMnwwO2tbYT4+Ml09a1tmPj4yXTtrW2ErND4+Ml09ZTtrWyhrW2Q+PjJdfDApKzQ0Pj4yXT1rWyhrW2I+PjJdfDApKzY4Pj4yXTtrWyhrW2tbZD4+Ml0+PjJdfDApKzg4Pj4yXT1rWyhrW2I+PjJdfDApKzcyPj4yXTtWSShrW2tbZD4+Ml0+PjJdfDAsKGtbZD4+Ml18MCkrMjA0fDAsLTEsMCk7a1soa1tkPj4yXXwwKSsyMDQ+PjJdPWtbKGtbYj4+Ml18MCkrNDA+PjJdO2tbKGtbYj4+Ml18MCkrNDA+PjJdPTA7cj1jO3JldHVybiBrWyhrW2I+PjJdfDApKzQ4Pj4yXXwwfWZ1bmN0aW9uIEtJKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wO2Q9cjtyPXIrMzJ8MDtlPWQrMjB8MDtnPWQrMTZ8MDtmPWQ7a1tlPj4yXT1hO2tbZz4+Ml09YjtiZyhrW2tbZT4+Ml0+PjJdfDAsa1soa1tlPj4yXXwwKSsxMDg+PjJdfDApO2tbZj4+Ml09YztiPXl4KGtba1tlPj4yXT4+Ml18MCxrW2c+PjJdfDAsZil8MDtrWyhrW2U+PjJdfDApKzEwOD4+Ml09YjtyPWQ7cmV0dXJufWZ1bmN0aW9uIExJKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLG49MDtuPXI7cj1yKzMyfDA7Zj1uKzI0fDA7Zz1uKzIwfDA7ZD1uKzE2fDA7aD1uKzEyfDA7Yz1uKzh8MDtqPW4rNHwwO2I9bjtrW2c+PjJdPWE7a1toPj4yXT1rW2tbZz4+Ml0+PjJdO2lmKGlbKGtbaD4+Ml18MCkrNjk+PjBdfDApa1soa1tnPj4yXXwwKSs0MD4+Ml09NztUTShrW2c+PjJdfDApO2lmKChrWyhrW2c+PjJdfDApKzIwPj4yXXwwKSE9NzcwODM3OTIzKXtrW2Y+PjJdPTA7aj1rW2Y+PjJdfDA7cj1uO3JldHVybiBqfDB9aWYoKGtbKGtbZz4+Ml18MCkrMzY+PjJdfDApPj0wPygobVsoa1tnPj4yXXwwKSsxNDQ+PjFdfDApPj4+OCYxfDApIT0wOjApe2tbaj4+Ml09MDtISShrW2c+PjJdfDApO2tbYz4+Ml09a1soa1tnPj4yXXwwKSs0MD4+Ml0mMjU1O2lmKChrW2M+PjJdfDApPT03fChrW2M+PjJdfDApPT0xMHwoa1tjPj4yXXwwKT09OSlhPTE7ZWxzZSBhPShrW2M+PjJdfDApPT0xMztrW2I+PjJdPWEmMTtkbyBpZigoa1tiPj4yXXwwKSE9MD8oKGtbYz4+Ml18MCkhPTk/MTooKG1bKGtbZz4+Ml18MCkrMTQ0Pj4xXXwwKT4+PjcmMXwwKT09MCk6MCl7aWYoKGtbYz4+Ml18MCk9PTd8KGtbYz4+Ml18MCk9PTEzPygobVsoa1tnPj4yXXwwKSsxNDQ+PjFdfDApPj4+NiYxfDApIT0wOjApe2tbaj4+Ml09MjticmVha31nSihrW2g+PjJdfDAsNTE2KTtoSihrW2g+PjJdfDApO2lbKGtbaD4+Ml18MCkrNjc+PjBdPTE7a1soa1tnPj4yXXwwKSs0ND4+Ml09MH13aGlsZSgwKTtpZighKGtbKGtbZz4+Ml18MCkrNDA+PjJdfDApKU9JKGtbZz4+Ml18MCwwKXwwO2lmKChrWyhrW2g+PjJdfDApKzMxNj4+Ml18MCk+MD8oa1soa1toPj4yXXwwKSszNDA+PjJdfDApPT0wOjApZT0zNjtlbHNlIGlmKChsWyhrW2g+PjJdfDApKzY3Pj4wXXwwKSE9MD8oa1soa1toPj4yXXwwKSsxNjQ+PjJdfDApPT0oKChtWyhrW2c+PjJdfDApKzE0ND4+MV18MCk+Pj43JjF8MCk9PTB8MCk6MCl7aWYoKGtbKGtbZz4+Ml18MCkrNDA+PjJdfDApIT0wPygoa1tiPj4yXXwwKSE9MD8xOihsWyhrW2c+PjJdfDApKzE0Mj4+MF18MCkhPTMpOjApe2dKKGtbaD4+Ml18MCwwKTtrWyhrW2c+PjJdfDApKzQ0Pj4yXT0wfWVsc2UgZT0yMztkbyBpZigoZXwwKT09MjMpe2M9T0koa1tnPj4yXXwwLDEpfDA7a1tkPj4yXT1jO2RvIGlmKGtbZD4+Ml18MCl7aWYoISgobVsoa1tnPj4yXXwwKSsxNDQ+PjFdfDApPj4+NyYxKSl7a1tkPj4yXT03ODc7YnJlYWt9a1tmPj4yXT0xO2o9a1tmPj4yXXwwO3I9bjtyZXR1cm4ganwwfWVsc2V7Yz1VTShrW2g+PjJdfDAsa1tnPj4yXXwwKXwwO2tbZD4+Ml09Y313aGlsZSgwKTtpZigoa1tkPj4yXXwwKT09NT8oKG1bKGtbZz4+Ml18MCkrMTQ0Pj4xXXwwKT4+PjcmMXwwKSE9MDowKXtrW2Y+PjJdPTU7aj1rW2Y+PjJdfDA7cj1uO3JldHVybiBqfDB9aWYoa1tkPj4yXXwwKXtrWyhrW2c+PjJdfDApKzQwPj4yXT1rW2Q+PjJdO2dKKGtbaD4+Ml18MCwwKTtrWyhrW2c+PjJdfDApKzQ0Pj4yXT0wO2JyZWFrfWVsc2V7Yz0oa1toPj4yXXwwKSs0NDB8MDtrW2M+PjJdPTA7a1tjKzQ+PjJdPTA7Yz0oa1toPj4yXXwwKSs0NDh8MDtrW2M+PjJdPTA7a1tjKzQ+PjJdPTA7Yz0oa1toPj4yXXwwKSsyNHwwO2tbYz4+Ml09a1tjPj4yXSYtMzM1NTQ0MzM7SGooa1toPj4yXXwwKTticmVha319d2hpbGUoMCk7a1soa1toPj4yXXwwKSs0MzY+PjJdPTB9ZWxzZSBlPTM2O2RvIGlmKChlfDApPT0zNj8oa1tqPj4yXXwwKT09MDowKXtpZigoa1soa1tnPj4yXXwwKSs0MD4+Ml18MCkhPTA/KGxbKGtbZz4+Ml18MCkrMTQyPj4wXXwwKSE9MzowKWlmKChsWyhrW2c+PjJdfDApKzE0Mj4+MF18MCk9PTIpe2tbaj4+Ml09MjticmVha31lbHNle2dKKGtbaD4+Ml18MCw1MTYpO2hKKGtbaD4+Ml18MCk7aVsoa1toPj4yXXwwKSs2Nz4+MF09MTtrWyhrW2c+PjJdfDApKzQ0Pj4yXT0wO2JyZWFrfWtbaj4+Ml09MX13aGlsZSgwKTtpZigoa1tqPj4yXXwwKSE9MD8oZT1QSShrW2c+PjJdfDAsa1tqPj4yXXwwKXwwLGtbZD4+Ml09ZSwoa1tkPj4yXXwwKSE9MCk6MCl7aWYoISgoa1soa1tnPj4yXXwwKSs0MD4+Ml18MCkhPTA/KGtbKGtbZz4+Ml18MCkrNDA+PjJdJjI1NXwwKSE9MTk6MCkpe2tbKGtbZz4+Ml18MCkrNDA+PjJdPWtbZD4+Ml07Ymcoa1toPj4yXXwwLGtbKGtbZz4+Ml18MCkrMTA4Pj4yXXwwKTtrWyhrW2c+PjJdfDApKzEwOD4+Ml09MH1nSihrW2g+PjJdfDAsNTE2KTtoSihrW2g+PjJdfDApO2lbKGtbaD4+Ml18MCkrNjc+PjBdPTE7a1soa1tnPj4yXXwwKSs0ND4+Ml09MH1pZigobVsoa1tnPj4yXXwwKSsxNDQ+PjFdfDApPj4+NCYxKXthPWtbaD4+Ml18MDtpZigoa1tqPj4yXXwwKSE9MilJSShhLGtbKGtbZz4+Ml18MCkrNDQ+PjJdfDApO2Vsc2UgSUkoYSwwKTtrWyhrW2c+PjJdfDApKzQ0Pj4yXT0wfX1pZigoa1soa1tnPj4yXXwwKSszNj4+Ml18MCk+PTApe2o9KGtbaD4+Ml18MCkrMTU2fDA7a1tqPj4yXT0oa1tqPj4yXXwwKSstMTtpZighKChtWyhrW2c+PjJdfDApKzE0ND4+MV18MCk+Pj43JjEpKXtqPShrW2g+PjJdfDApKzE2NHwwO2tbaj4+Ml09KGtbaj4+Ml18MCkrLTF9aWYoKG1bKGtbZz4+Ml18MCkrMTQ0Pj4xXXwwKT4+PjgmMSl7aj0oa1toPj4yXXwwKSsxNjB8MDtrW2o+PjJdPShrW2o+PjJdfDApKy0xfX1rWyhrW2c+PjJdfDApKzIwPj4yXT04MzIzMTc4MTE7aWYoaVsoa1toPj4yXXwwKSs2OT4+MF18MClrWyhrW2c+PjJdfDApKzQwPj4yXT03O2tbZj4+Ml09KGtbKGtbZz4+Ml18MCkrNDA+PjJdfDApPT01PzU6MDtqPWtbZj4+Ml18MDtyPW47cmV0dXJuIGp8MH1mdW5jdGlvbiBNSShhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wO2U9cjtyPXIrMTZ8MDtjPWUrMTJ8MDtnPWUrOHwwO2Y9ZSs0fDA7ZD1lO2tbZz4+Ml09YTtrW2Y+PjJdPWI7a1tkPj4yXT0oa1soa1tnPj4yXXwwKSs5Mj4+Ml18MCkrKChrWyhrW2Y+PjJdfDApKzg+PjJdfDApKjQwfDApO2E9a1tkPj4yXXwwO2lmKChtWyhrW2Q+PjJdfDApKzg+PjFdfDApJjkzMTIpe2c9U00oYSl8MDtrW2M+PjJdPWc7Zz1rW2M+PjJdfDA7cj1lO3JldHVybiBnfDB9ZWxzZXtqW2ErOD4+MV09NDtrW2M+PjJdPWtbZD4+Ml07Zz1rW2M+PjJdfDA7cj1lO3JldHVybiBnfDB9cmV0dXJuIDB9ZnVuY3Rpb24gTkkoYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wLGU9MDtlPXI7cj1yKzE2fDA7Yj1lKzh8MDtjPWUrNHwwO2Q9ZTtrW2M+PjJdPWE7aWYoISgobVsoa1tjPj4yXXwwKSs4Pj4xXXwwKSYxOCkpe2tbYj4+Ml09MDthPWtbYj4+Ml18MDtyPWU7cmV0dXJuIGF8MH1rW2Q+PjJdPWtbKGtbYz4+Ml18MCkrMTI+PjJdO2lmKChtWyhrW2M+PjJdfDApKzg+PjFdfDApJjE2Mzg0KWtbZD4+Ml09KGtbZD4+Ml18MCkrKGtba1tjPj4yXT4+Ml18MCk7a1tiPj4yXT0oa1tkPj4yXXwwKT4oa1soa1soa1tjPj4yXXwwKSszMj4+Ml18MCkrOTY+PjJdfDApJjE7YT1rW2I+PjJdfDA7cj1lO3JldHVybiBhfDB9ZnVuY3Rpb24gT0koYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wO2o9cjtyPXIrMzJ8MDtnPWo7Yz1qKzE2fDA7ZD1qKzEyfDA7ZT1qKzh8MDtmPWorNHwwO2tbZD4+Ml09YTtrW2U+PjJdPWI7a1tmPj4yXT1rW2tbZD4+Ml0+PjJdO2lmKCEoKGtbZT4+Ml18MCkhPTA/KGI9KGtbZj4+Ml18MCkrNDQwfDAsYT0oa1tmPj4yXXwwKSs0NDh8MCxhPSRSKGtbYj4+Ml18MCxrW2IrND4+Ml18MCxrW2E+PjJdfDAsa1thKzQ+PjJdfDApfDAsYj1MLChifDApPjB8KGJ8MCk9PTAmYT4+PjA+MCk6MCkpaD0zO2RvIGlmKChofDApPT0zKXtpZigoa1tlPj4yXXwwKT09MD8oaD0oa1tkPj4yXXwwKSs2NHwwLGE9a1toKzQ+PjJdfDAsKGF8MCk+MHwoYXwwKT09MCYoa1toPj4yXXwwKT4+PjA+MCk6MClicmVhaztrW2M+PjJdPTA7aD1rW2M+PjJdfDA7cj1qO3JldHVybiBofDB9d2hpbGUoMCk7a1soa1tkPj4yXXwwKSs0MD4+Ml09Nzg3O2lbKGtbZD4+Ml18MCkrMTQyPj4wXT0yO0tJKGtbZD4+Ml18MCwzNTE4OSxnKTtrW2M+PjJdPTE7aD1rW2M+PjJdfDA7cj1qO3JldHVybiBofDB9ZnVuY3Rpb24gUEkoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTAsaT0wLGo9MCxsPTA7bD1yO3I9ciszMnwwO2M9bCsyOHwwO2Q9bCsyNHwwO2U9bCsyMHwwO2k9bCsxNnwwO2Y9bCsxMnwwO2c9bCs4fDA7aj1sKzR8MDtoPWw7a1tjPj4yXT1hO2tbZD4+Ml09YjtrW2U+PjJdPWtba1tjPj4yXT4+Ml07a1tpPj4yXT0wO2lmKCEoa1soa1tlPj4yXXwwKSs0MzY+PjJdfDApKXtqPWtbaT4+Ml18MDtyPWw7cmV0dXJuIGp8MH1pZighKGtbKGtbYz4+Ml18MCkrNDg+PjJdfDApKXtqPWtbaT4+Ml18MDtyPWw7cmV0dXJuIGp8MH1rW2c+PjJdPShrWyhrW2M+PjJdfDApKzQ4Pj4yXXwwKS0xO2tbZj4+Ml09MDt3aGlsZSgxKXtpZigoa1tmPj4yXXwwKT49KGtbKGtbZT4+Ml18MCkrMjA+PjJdfDApKWJyZWFrO2tbaj4+Ml09MDtrW2g+PjJdPWtbKGtbKGtbZT4+Ml18MCkrMTY+PjJdfDApKyhrW2Y+PjJdPDw0KSs0Pj4yXTtpZihrW2g+PjJdfDApe2lmKChrW2Q+PjJdfDApPT0yKXthPWZKKGtbaD4+Ml18MCwyLGtbZz4+Ml18MCl8MDtrW2o+PjJdPWF9aWYoIShrW2o+PjJdfDApKXthPWZKKGtbaD4+Ml18MCwxLGtbZz4+Ml18MCl8MDtrW2o+PjJdPWF9aWYoIShrW2k+PjJdfDApKWtbaT4+Ml09a1tqPj4yXX1rW2Y+PjJdPShrW2Y+PjJdfDApKzF9aj0oa1tlPj4yXXwwKSs0MzZ8MDtrW2o+PjJdPShrW2o+PjJdfDApKy0xO2tbKGtbYz4+Ml18MCkrNDg+PjJdPTA7aWYoIShrW2k+PjJdfDApKXtpZigoa1tkPj4yXXwwKT09Mil7aj1kSihrW2U+PjJdfDAsMixrW2c+PjJdfDApfDA7a1tpPj4yXT1qfWlmKCEoa1tpPj4yXXwwKSl7aj1kSihrW2U+PjJdfDAsMSxrW2c+PjJdfDApfDA7a1tpPj4yXT1qfX1pZigoa1tkPj4yXXwwKSE9Mil7aj1rW2k+PjJdfDA7cj1sO3JldHVybiBqfDB9aj0oa1tjPj4yXXwwKSs3MnwwO2g9a1tqKzQ+PjJdfDA7YT0oa1tlPj4yXXwwKSs0NDB8MDtrW2E+PjJdPWtbaj4+Ml07a1thKzQ+PjJdPWg7YT0oa1tjPj4yXXwwKSs4MHwwO2g9a1thKzQ+PjJdfDA7aj0oa1tlPj4yXXwwKSs0NDh8MDtrW2o+PjJdPWtbYT4+Ml07a1tqKzQ+PjJdPWg7aj1rW2k+PjJdfDA7cj1sO3JldHVybiBqfDB9ZnVuY3Rpb24gUUkoYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wO2Q9cjtyPXIrMTZ8MDtiPWQrNHwwO2M9ZDtrW2M+PjJdPWE7aWYoKChtWyhrW2M+PjJdfDApKzg+PjFdfDApJjUxNHwwKSE9Mil7a1tiPj4yXT0wO2E9a1tiPj4yXXwwO3I9ZDtyZXR1cm4gYXwwfWVsc2V7YT1STShrW2M+PjJdfDApfDA7a1tiPj4yXT1hO2E9a1tiPj4yXXwwO3I9ZDtyZXR1cm4gYXwwfXJldHVybiAwfWZ1bmN0aW9uIFJJKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MDtkPXI7cj1yKzE2fDA7Yj1kKzR8MDtjPWQ7a1tjPj4yXT1hO2E9bVsoa1tjPj4yXXwwKSs4Pj4xXXwwO2RvIGlmKCEoKG1bKGtbYz4+Ml18MCkrOD4+MV18MCkmMTIpKWlmKGEmMTgpe2M9UU0oa1tjPj4yXXwwKXwwO2pbYj4+MV09YzticmVha31lbHNle2pbYj4+MV09MDticmVha31lbHNlIGpbYj4+MV09YSYxMjt3aGlsZSgwKTtyPWQ7cmV0dXJuIGpbYj4+MV18MH1mdW5jdGlvbiBTSShhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaT0wO2g9cjtyPXIrMzJ8MDtkPWgrMjB8MDtlPWgrMTZ8MDtmPWgrOHwwO2c9aDtrW2U+PjJdPWE7aT1mO2tbaT4+Ml09YjtrW2krND4+Ml09YztiPWtbZT4+Ml18MDtpPWtbYis0Pj4yXXwwO2E9ZztrW2E+PjJdPWtbYj4+Ml07a1thKzQ+PjJdPWk7YT1mO2k9a1thKzQ+PjJdfDA7Yj1nO2M9a1tiKzQ+PjJdfDA7aWYoKGl8MCk+MHwoaXwwKT09MCYoa1thPj4yXXwwKT4+PjA+PTApe2lmKChjfDApPjB8KGN8MCk9PTAmKGtbYj4+Ml18MCk+Pj4wPjA/KGcsZz1fUigtMSwyMTQ3NDgzNjQ3LGtbZz4+Ml18MCxrW2crND4+Ml18MCl8MCxjPUwsaT1mLGE9a1tpKzQ+PjJdfDAsKGN8MCk8KGF8MCl8KChjfDApPT0oYXwwKT9nPj4+MDwoa1tpPj4yXXwwKT4+PjA6MCkpOjApe2tbZD4+Ml09MTtpPWtbZD4+Ml18MDtyPWg7cmV0dXJuIGl8MH19ZWxzZSBpZigoY3wwKTwwPyhnLGc9JFIoa1tnPj4yXXwwLGtbZys0Pj4yXXwwLC0xLDIxNDc0ODM2NDcpfDAsZz1fUigwLDAsZ3wwLEx8MCl8MCxjPUwsaT1mLGk9JFIoa1tpPj4yXXwwLGtbaSs0Pj4yXXwwLDEsMCl8MCxhPUwsKGN8MCk+KGF8MCl8KGN8MCk9PShhfDApJmc+Pj4wPmk+Pj4wKTowKXtrW2Q+PjJdPTE7aT1rW2Q+PjJdfDA7cj1oO3JldHVybiBpfDB9Zz1mO2k9a1tlPj4yXXwwO2Y9aTtnPSRSKGtbZj4+Ml18MCxrW2YrND4+Ml18MCxrW2c+PjJdfDAsa1tnKzQ+PjJdfDApfDA7a1tpPj4yXT1nO2tbaSs0Pj4yXT1MO2tbZD4+Ml09MDtpPWtbZD4+Ml18MDtyPWg7cmV0dXJuIGl8MH1mdW5jdGlvbiBUSShhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MDtnPXI7cj1yKzE2fDA7ZD1nKzEyfDA7ZT1nKzh8MDtmPWc7a1tlPj4yXT1hO2E9ZjtrW2E+PjJdPWI7a1thKzQ+PjJdPWM7YT1mO2I9a1tlPj4yXXwwO2lmKCEoKGtbYT4+Ml18MCk9PTA/KGtbYSs0Pj4yXXwwKT09LTIxNDc0ODM2NDg6MCkpe2Y9X1IoMCwwLGtbZj4+Ml18MCxrW2YrND4+Ml18MCl8MDtmPVNJKGIsZixMKXwwO2tbZD4+Ml09ZjtmPWtbZD4+Ml18MDtyPWc7cmV0dXJuIGZ8MH1hPWI7Yz1rW2ErND4+Ml18MDtpZigoY3wwKT4wfChjfDApPT0wJihrW2E+PjJdfDApPj4+MD49MCl7a1tkPj4yXT0xO2Y9a1tkPj4yXXwwO3I9ZztyZXR1cm4gZnwwfWVsc2V7YT1mO2Y9a1tlPj4yXXwwO2U9ZjtlPV9SKGtbZT4+Ml18MCxrW2UrND4+Ml18MCxrW2E+PjJdfDAsa1thKzQ+PjJdfDApfDA7a1tmPj4yXT1lO2tbZis0Pj4yXT1MO2tbZD4+Ml09MDtmPWtbZD4+Ml18MDtyPWc7cmV0dXJuIGZ8MH1yZXR1cm4gMH1mdW5jdGlvbiBVSShhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaT0wO2g9cjtyPXIrMzJ8MDtkPWgrMjB8MDtlPWgrMTZ8MDtmPWgrOHwwO2c9aDtrW2U+PjJdPWE7YT1mO2tbYT4+Ml09YjtrW2ErND4+Ml09YztiPWtbZT4+Ml18MDtjPWtbYis0Pj4yXXwwO2E9ZztrW2E+PjJdPWtbYj4+Ml07a1thKzQ+PjJdPWM7YT1mO2M9a1thKzQ+PjJdfDA7ZG8gaWYoKGN8MCk+MHwoY3wwKT09MCYoa1thPj4yXXwwKT4+PjA+MCl7aT1nO2M9a1tpPj4yXXwwO2k9a1tpKzQ+PjJdfDA7YT1mO2E9aVMoLTEsMjE0NzQ4MzY0NyxrW2E+PjJdfDAsa1thKzQ+PjJdfDApfDA7Yj1MO2lmKChpfDApPihifDApfChpfDApPT0oYnwwKSZjPj4+MD5hPj4+MCl7a1tkPj4yXT0xO2k9a1tkPj4yXXwwO3I9aDtyZXR1cm4gaXwwfWI9ZzthPWtbYj4+Ml18MDtiPWtbYis0Pj4yXXwwO2k9ZjtpPWlTKDAsLTIxNDc0ODM2NDgsa1tpPj4yXXwwLGtbaSs0Pj4yXXwwKXwwO2M9TDtpZigoYnwwKTwoY3wwKXwoYnwwKT09KGN8MCkmYT4+PjA8aT4+PjApe2tbZD4+Ml09MTtpPWtbZD4+Ml18MDtyPWg7cmV0dXJuIGl8MH19ZWxzZSBpZigoa1tmKzQ+PjJdfDApPDApe2k9ZzthPWtbaSs0Pj4yXXwwO2lmKChhfDApPjB8KGF8MCk9PTAmKGtbaT4+Ml18MCk+Pj4wPjApe2I9ZjthPWtbYj4+Ml18MDtiPWtbYis0Pj4yXXwwO2k9ZztpPWlTKDAsLTIxNDc0ODM2NDgsa1tpPj4yXXwwLGtbaSs0Pj4yXXwwKXwwO2M9TDtpZighKChifDApPChjfDApfChifDApPT0oY3wwKSZhPj4+MDxpPj4+MCkpYnJlYWs7a1tkPj4yXT0xO2k9a1tkPj4yXXwwO3I9aDtyZXR1cm4gaXwwfWlmKChrW2crND4+Ml18MCk8MCl7aT1mO2lmKChrW2k+PjJdfDApPT0wPyhrW2krND4+Ml18MCk9PS0yMTQ3NDgzNjQ4OjApe2tbZD4+Ml09MTtpPWtbZD4+Ml18MDtyPWg7cmV0dXJuIGl8MH1pPWc7aWYoKGtbaT4+Ml18MCk9PTA/KGtbaSs0Pj4yXXwwKT09LTIxNDc0ODM2NDg6MCl7a1tkPj4yXT0xO2k9a1tkPj4yXXwwO3I9aDtyZXR1cm4gaXwwfWE9ZzthPV9SKDAsMCxrW2E+PjJdfDAsa1thKzQ+PjJdfDApfDA7Yj1MO2k9ZjtpPV9SKDAsMCxrW2k+PjJdfDAsa1tpKzQ+PjJdfDApfDA7aT1pUygtMSwyMTQ3NDgzNjQ3LGl8MCxMfDApfDA7Yz1MO2lmKChifDApPihjfDApfChifDApPT0oY3wwKSZhPj4+MD5pPj4+MCl7a1tkPj4yXT0xO2k9a1tkPj4yXXwwO3I9aDtyZXR1cm4gaXwwfX19d2hpbGUoMCk7aT1nO2E9ZjthPWtTKGtbaT4+Ml18MCxrW2krND4+Ml18MCxrW2E+PjJdfDAsa1thKzQ+PjJdfDApfDA7aT1rW2U+PjJdfDA7a1tpPj4yXT1hO2tbaSs0Pj4yXT1MO2tbZD4+Ml09MDtpPWtbZD4+Ml18MDtyPWg7cmV0dXJuIGl8MH1mdW5jdGlvbiBWSShhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGk9MCxqPTA7aj1yO3I9ciszMnwwO2U9aisxNnwwO2Y9aisxMnwwO2c9ais4fDA7aD1qKzR8MDtpPWo7a1tlPj4yXT1hO2tbZj4+Ml09YjtrW2c+PjJdPWM7a1toPj4yXT1kO2E6d2hpbGUoMSl7aWYoIShrW2tbZj4+Ml0+PjJdfDApKWJyZWFrO2tbaT4+Ml09a1trW2Y+PjJdPj4yXTtkbyBpZigoa1tnPj4yXXwwKT49MCl7aWYoKGtba1tpPj4yXT4+Ml18MCk9PShrW2c+PjJdfDApKXtpZigoa1soa1tpPj4yXXwwKSs0Pj4yXXwwKT4zMSlicmVhaztpZighKGtbaD4+Ml0mMTw8a1soa1tpPj4yXXwwKSs0Pj4yXSkpYnJlYWt9a1tmPj4yXT0oa1tpPj4yXXwwKSsxNjtjb250aW51ZSBhfXdoaWxlKDApO2lmKGtbKGtbaT4+Ml18MCkrMTI+PjJdfDApX2Jba1soa1tpPj4yXXwwKSsxMj4+Ml0mMjU1XShrWyhrW2k+PjJdfDApKzg+PjJdfDApO2tba1tmPj4yXT4+Ml09a1soa1tpPj4yXXwwKSsxNj4+Ml07Ymcoa1tlPj4yXXwwLGtbaT4+Ml18MCl9cj1qO3JldHVybn1mdW5jdGlvbiBXSShhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaT0wLGo9MCxsPTA7bD1yO3I9ciszMnwwO2Q9bCsyNHwwO2U9bCsyMHwwO2Y9bCsxNnwwO2c9bCsxMnwwO2k9bCs4fDA7aj1sKzR8MDtoPWw7a1tlPj4yXT1hO2tbZj4+Ml09YjtrW2c+PjJdPWM7a1tpPj4yXT1tWyhrW2U+PjJdfDApKzg+PjFdO2tbaj4+Ml09bVsoa1tmPj4yXXwwKSs4Pj4xXTtrW2g+PjJdPWtbaT4+Ml18a1tqPj4yXTtkbyBpZighKGtbaD4+Ml0mMSkpe2lmKCEoa1toPj4yXSYxMikpe2lmKGtbaD4+Ml0mMil7aWYoIShrW2k+PjJdJjIpKXtrW2Q+PjJdPTE7YnJlYWt9aWYoIShrW2o+PjJdJjIpKXtrW2Q+PjJdPS0xO2JyZWFrfWlmKGtbZz4+Ml18MCl7Yj1xRyhrW2U+PjJdfDAsa1tmPj4yXXwwLGtbZz4+Ml18MCwwKXwwO2tbZD4+Ml09YjticmVha319Yj1QTShrW2U+PjJdfDAsa1tmPj4yXXwwKXwwO2tbZD4+Ml09YjticmVha31pZihrW2k+PjJdJmtbaj4+Ml0mNCl7YT1rW2U+PjJdfDA7aj1rW2ErND4+Ml18MDtiPWtbZj4+Ml18MDtjPWtbYis0Pj4yXXwwO2lmKChqfDApPChjfDApfCgoanwwKT09KGN8MCk/KGtbYT4+Ml18MCk+Pj4wPChrW2I+PjJdfDApPj4+MDowKSl7a1tkPj4yXT0tMTticmVha31hPWtbZT4+Ml18MDtqPWtbYSs0Pj4yXXwwO2I9a1tmPj4yXXwwO2M9a1tiKzQ+PjJdfDA7aWYoKGp8MCk+KGN8MCl8KChqfDApPT0oY3wwKT8oa1thPj4yXXwwKT4+PjA+KGtbYj4+Ml18MCk+Pj4wOjApKXtrW2Q+PjJdPTE7YnJlYWt9ZWxzZXtrW2Q+PjJdPTA7YnJlYWt9fWlmKGtbaT4+Ml0ma1tqPj4yXSY4KXtpZigrcFtrW2U+PjJdPj4zXTwrcFtrW2Y+PjJdPj4zXSl7a1tkPj4yXT0tMTticmVha31pZigrcFtrW2U+PjJdPj4zXT4rcFtrW2Y+PjJdPj4zXSl7a1tkPj4yXT0xO2JyZWFrfWVsc2V7a1tkPj4yXT0wO2JyZWFrfX1pZihrW2k+PjJdJjQpaWYoa1tqPj4yXSY4KXtiPWtbZT4+Ml18MDtiPW9HKGtbYj4+Ml18MCxrW2IrND4+Ml18MCwrcFtrW2Y+PjJdPj4zXSl8MDtrW2Q+PjJdPWI7YnJlYWt9ZWxzZXtrW2Q+PjJdPS0xO2JyZWFrfWlmKCEoa1tpPj4yXSY4KSl7a1tkPj4yXT0xO2JyZWFrfWlmKGtbaj4+Ml0mNCl7Yj1rW2Y+PjJdfDA7Yj0wLShvRyhrW2I+PjJdfDAsa1tiKzQ+PjJdfDAsK3Bba1tlPj4yXT4+M10pfDApfDA7a1tkPj4yXT1iO2JyZWFrfWVsc2V7a1tkPj4yXT0tMTticmVha319ZWxzZSBrW2Q+PjJdPShrW2o+PjJdJjEpLShrW2k+PjJdJjEpO3doaWxlKDApO3I9bDtyZXR1cm4ga1tkPj4yXXwwfWZ1bmN0aW9uIFhJKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wO2g9cjtyPXIrMzJ8MDtjPWgrMTZ8MDtkPWgrMTJ8MDtlPWgrOHwwO2c9aCs0fDA7Zj1oO2tbZD4+Ml09YTtrW2U+PjJdPWI7a1tnPj4yXT1rW2tbZD4+Ml0+PjJdO2RvIGlmKCEobFtrW2c+PjJdPj4wXXwwKSl7Yj1rW2c+PjJdfDA7aWYoIShpWyhrW2c+PjJdfDApKzM+PjBdfDApKXtpZighKGNNKGtbYisxNj4+Ml18MCl8MCkpYnJlYWs7Zz1kTShrW2c+PjJdfDApfDA7a1tjPj4yXT1nO2c9a1tjPj4yXXwwO3I9aDtyZXR1cm4gZ3wwfWlmKChrW2IrNTI+PjJdfDApIT0wPyhhPWtbKGtbKGtbZz4+Ml18MCkrNTI+PjJdfDApKygxKyhrW2tbZT4+Ml0+PjJdfDApPDwyKT4+Ml18MCxrW2Y+PjJdPWEsKGF8MCk+MCk6MCl7a1trW2Q+PjJdPj4yXT1rWyhrW2c+PjJdfDApKzQ4Pj4yXTtrW2tbZT4+Ml0+PjJdPShrW2Y+PjJdfDApLTE7a1tjPj4yXT0wO2c9a1tjPj4yXXwwO3I9aDtyZXR1cm4gZ3wwfWc9T00oa1tnPj4yXXwwKXwwO2tbYz4+Ml09ZztnPWtbYz4+Ml18MDtyPWg7cmV0dXJuIGd8MH13aGlsZSgwKTtrW2M+PjJdPTA7Zz1rW2M+PjJdfDA7cj1oO3JldHVybiBnfDB9ZnVuY3Rpb24gWUkoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTA7Yz1yO3I9cisxNnwwO2U9Yys0fDA7ZD1jO2tbZT4+Ml09YTtrW2Q+PjJdPWI7YT1OTShrW2U+PjJdfDAsa1tkPj4yXXwwKXwwO3I9YztyZXR1cm4gYXwwfWZ1bmN0aW9uIFpJKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGk9MCxsPTAsbT0wLG49MCxvPTAscD0wO289cjtyPXIrMzJ8MDtmPW8rMjh8MDtnPW8rMjR8MDtoPW8rMjB8MDtpPW8rMTZ8MDtsPW8rMTJ8MDtuPW8rOHwwO3A9bys0fDA7bT1vO2tbZj4+Ml09YTtrW2c+PjJdPWI7a1toPj4yXT1jO2tbaT4+Ml09ZDtrW2w+PjJdPWU7a1twPj4yXT0wO2tbbT4+Ml09MDtlPVlJKGtbZj4+Ml18MCxwKXwwO2tbbj4+Ml09ZTtpZigoKGtbZz4+Ml18MCkrKGtbaD4+Ml18MCl8MCk+Pj4wPD0oa1twPj4yXXwwKT4+PjApe2tbKGtbbD4+Ml18MCkrMTY+PjJdPShrW24+PjJdfDApKyhrW2c+PjJdfDApO2pbKGtbbD4+Ml18MCkrOD4+MV09NDExMjtrWyhrW2w+PjJdfDApKzEyPj4yXT1rW2g+PjJdO3A9a1ttPj4yXXwwO3I9bztyZXR1cm4gcHwwfWVsc2V7cD1NTShrW2Y+PjJdfDAsa1tnPj4yXXwwLGtbaD4+Ml18MCxrW2k+PjJdfDAsa1tsPj4yXXwwKXwwO2tbbT4+Ml09cDtwPWtbbT4+Ml18MDtyPW87cmV0dXJuIHB8MH1yZXR1cm4gMH1mdW5jdGlvbiBfSShhKXthPWF8MDt2YXIgYj0wLGM9MDtjPXI7cj1yKzE2fDA7Yj1jO2lbYj4+MF09YTtyPWM7cmV0dXJuIGlbMzUwNjErKGxbYj4+MF18MCk+PjBdfDB9ZnVuY3Rpb24gJEkoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGk9MCxqPTAsbD0wLG49MDtuPXI7cj1yKzQ4fDA7bD1uKzM2fDA7ZD1uKzMyfDA7aD1uKzI4fDA7Zz1uKzI0fDA7ZT1uKzIwfDA7Zj1uKzE2fDA7aT1uKzh8MDtqPW47a1tkPj4yXT1hO2tbaD4+Ml09YjtrW2c+PjJdPWM7a1tlPj4yXT1tWyhrW2Q+PjJdfDApKzg+PjFdO2lmKGtbZT4+Ml0mMSl7a1trW2c+PjJdPj4yXT0wO2tbbD4+Ml09MDtsPWtbbD4+Ml18MDtyPW47cmV0dXJuIGx8MH1pZighKGtbZT4+Ml0mNCkpe2lmKGtbZT4+Ml0mOCl7a1trW2c+PjJdPj4yXT04O2tbbD4+Ml09NztsPWtbbD4+Ml18MDtyPW47cmV0dXJuIGx8MH1rW2Y+PjJdPWtbKGtbZD4+Ml18MCkrMTI+PjJdO2lmKGtbZT4+Ml0mMTYzODQpa1tmPj4yXT0oa1tmPj4yXXwwKSsoa1trW2Q+PjJdPj4yXXwwKTtrW2tbZz4+Ml0+PjJdPWtbZj4+Ml07a1tsPj4yXT0oa1tmPj4yXTw8MSkrMTIrKChrW2U+PjJdJjJ8MCkhPTAmMSk7bD1rW2w+PjJdfDA7cj1uO3JldHVybiBsfDB9YT1rW2Q+PjJdfDA7ZD1rW2ErND4+Ml18MDtiPWk7a1tiPj4yXT1rW2E+PjJdO2tbYis0Pj4yXT1kO2I9aTtkPWtbYj4+Ml18MDtiPWtbYis0Pj4yXXwwO2lmKChrW2krND4+Ml18MCk8MCl7YT1qO2tbYT4+Ml09fmQ7a1thKzQ+PjJdPX5ifWVsc2V7YT1qO2tbYT4+Ml09ZDtrW2ErND4+Ml09Yn1hPWo7Yz1rW2ErND4+Ml18MDtpZihjPj4+MDwwfChjfDApPT0wJihrW2E+PjJdfDApPj4+MDw9MTI3KXthPWk7ZD1rW2c+PjJdfDA7aWYoKDA9PShrW2ErND4+Ml18MCk/KGtbaT4+Ml0mMXwwKT09KGtbYT4+Ml18MCk6MCkmKGtbaD4+Ml18MCk+PTQpe2tbZD4+Ml09MDtrW2w+PjJdPTgrKGtbaj4+Ml18MCk7bD1rW2w+PjJdfDA7cj1uO3JldHVybiBsfDB9ZWxzZXtrW2Q+PjJdPTE7a1tsPj4yXT0xO2w9a1tsPj4yXXwwO3I9bjtyZXR1cm4gbHwwfX1pPWo7aD1rW2krND4+Ml18MDtpZihoPj4+MDwwfChofDApPT0wJihrW2k+PjJdfDApPj4+MDw9MzI3Njcpe2tba1tnPj4yXT4+Ml09MjtrW2w+PjJdPTI7bD1rW2w+PjJdfDA7cj1uO3JldHVybiBsfDB9aT1qO2g9a1tpKzQ+PjJdfDA7aWYoaD4+PjA8MHwoaHwwKT09MCYoa1tpPj4yXXwwKT4+PjA8PTgzODg2MDcpe2tba1tnPj4yXT4+Ml09MztrW2w+PjJdPTM7bD1rW2w+PjJdfDA7cj1uO3JldHVybiBsfDB9aT1qO2g9a1tpKzQ+PjJdfDA7aWYoaD4+PjA8MHwoaHwwKT09MCYoa1tpPj4yXXwwKT4+PjA8PTIxNDc0ODM2NDcpe2tba1tnPj4yXT4+Ml09NDtrW2w+PjJdPTQ7bD1rW2w+PjJdfDA7cj1uO3JldHVybiBsfDB9aT1rW2orND4+Ml18MDtkPWtbZz4+Ml18MDtpZihpPj4+MDwzMjc2N3woaXwwKT09MzI3NjcmKGtbaj4+Ml18MCk+Pj4wPD00Mjk0OTY3Mjk1KXtrW2Q+PjJdPTY7a1tsPj4yXT01O2w9a1tsPj4yXXwwO3I9bjtyZXR1cm4gbHwwfWVsc2V7a1tkPj4yXT04O2tbbD4+Ml09NjtsPWtbbD4+Ml18MDtyPW47cmV0dXJuIGx8MH1yZXR1cm4gMH1mdW5jdGlvbiBhSihhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTA7Zz1yO3I9cisxNnwwO2Q9ZysxMnwwO2U9Zys4fDA7Zj1nO2tbZT4+Ml09YTthPWY7a1thPj4yXT1iO2tbYSs0Pj4yXT1jO2E9ZjtoPWtbYSs0Pj4yXXwwO2M9ZjtiPWtbYz4+Ml18MDtjPWtbYys0Pj4yXXwwO2lmKGg+Pj4wPDB8KGh8MCk9PTAmKGtbYT4+Ml18MCk+Pj4wPD0xMjcpe2lba1tlPj4yXT4+MF09YiYxMjc7a1tkPj4yXT0xO2g9a1tkPj4yXXwwO3I9ZztyZXR1cm4gaHwwfWlmKGM+Pj4wPDB8KGN8MCk9PTAmYj4+PjA8PTE2MzgzKXtoPWY7aD1hUyhrW2g+PjJdfDAsa1toKzQ+PjJdfDAsNyl8MDtpW2tbZT4+Ml0+PjBdPWgmMTI3fDEyODtpWyhrW2U+PjJdfDApKzE+PjBdPWtbZj4+Ml0mMTI3O2tbZD4+Ml09MjtoPWtbZD4+Ml18MDtyPWc7cmV0dXJuIGh8MH1lbHNle2g9ZjtoPUxNKGtbZT4+Ml18MCxrW2g+PjJdfDAsa1toKzQ+PjJdfDApfDA7a1tkPj4yXT1oO2g9a1tkPj4yXXwwO3I9ZztyZXR1cm4gaHwwfXJldHVybiAwfWZ1bmN0aW9uIGJKKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsbT0wLG49MDtuPXI7cj1yKzMyfDA7ZD1uKzI4fDA7ZT1uKzI0fDA7Zj1uKzIwfDA7Zz1uKzE2fDA7aj1uKzEyfDA7bT1uO2g9bis4fDA7a1tlPj4yXT1hO2tbZj4+Ml09YjtrW2c+PjJdPWM7YT1rW2c+PjJdfDA7aWYoKGtbZz4+Ml18MCk+Pj4wPD03JihrW2c+PjJdfDApPj4+MD4wKXtpZigoYXwwKT09Nyl7Zj1rW2Y+PjJdfDA7a1ttPj4yXT1rW2Y+PjJdO2tbbSs0Pj4yXT1rW2YrND4+Ml19ZWxzZXtiPWtbZj4+Ml18MDtjPWtbYis0Pj4yXXwwO2Y9bTtrW2Y+PjJdPWtbYj4+Ml07a1tmKzQ+PjJdPWN9Zz1sWzM1MDYxKyhrW2c+PjJdfDApPj4wXXwwO2tbaD4+Ml09ZztrW2o+PjJdPWc7ZG97Zz1rW20+PjJdJjI1NTtmPShrW2g+PjJdfDApKy0xfDA7a1toPj4yXT1mO2lbKGtbZT4+Ml18MCkrZj4+MF09ZztmPW07Zj1hUyhrW2Y+PjJdfDAsa1tmKzQ+PjJdfDAsOCl8MDtnPW07a1tnPj4yXT1mO2tbZys0Pj4yXT1MfXdoaWxlKChrW2g+PjJdfDApIT0wKTtrW2Q+PjJdPWtbaj4+Ml07bT1rW2Q+PjJdfDA7cj1uO3JldHVybiBtfDB9ZWxzZXtpZihhPj4+MDwxMil7a1tkPj4yXT0wO209a1tkPj4yXXwwO3I9bjtyZXR1cm4gbXwwfWtbaj4+Ml09a1soa1tmPj4yXXwwKSsxMj4+Ml07aWYoKGtbaj4+Ml18MCk+Pj4wPjApYlMoa1tlPj4yXXwwLGtbKGtbZj4+Ml18MCkrMTY+PjJdfDAsa1tqPj4yXXwwKXwwO2tbZD4+Ml09a1tqPj4yXTttPWtbZD4+Ml18MDtyPW47cmV0dXJuIG18MH1yZXR1cm4gMH1mdW5jdGlvbiBjSihhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wLGg9MCxuPTAsbz0wO289cjtyPXIrMzJ8MDtlPW8rMjh8MDtmPW8rMjR8MDtnPW8rMjB8MDtoPW87bj1vKzE2fDA7Yz1vKzEyfDA7ZD1vKzh8MDtrW2Y+PjJdPWE7a1tnPj4yXT1iO2I9aDtrW2I+PjJdPTA7a1tiKzQ+PjJdPTA7aWYoIShrWyhrW2Y+PjJdfDApKzUyPj4yXXwwKSl7bj1rW2c+PjJdfDA7a1tuPj4yXT0wO2tbbis0Pj4yXT0wO2tbZT4+Ml09MDtuPWtbZT4+Ml18MDtyPW87cmV0dXJuIG58MH1iPV9GKGtbZj4+Ml18MCl8MDtrW24+PjJdPWI7YTp3aGlsZSgxKXtpZihrW24+PjJdfDApe2E9MTY7YnJlYWt9a1tkPj4yXT1rWyhrW2Y+PjJdfDApKzEyMCsoaVsoa1tmPj4yXXwwKSs2OD4+MF08PDIpPj4yXTtpZighKChsWyhrW2Q+PjJdfDApKzQ+PjBdfDApPT0wPyhpWyhrW2Q+PjJdfDApKzI+PjBdfDApIT0wOjApKXthPWg7YT0kUihrW2E+PjJdfDAsa1thKzQ+PjJdfDAsbVsoa1tkPj4yXXwwKSsxOD4+MV18MCwwKXwwO2I9aDtrW2I+PjJdPWE7a1tiKzQ+PjJdPUx9aWYoaVsoa1tkPj4yXXwwKSs0Pj4wXXwwKXtkb3tpZighKGlbKGtbZj4+Ml18MCkrNjg+PjBdfDApKXthPTEwO2JyZWFrIGF9UkYoa1tmPj4yXXwwKX13aGlsZSgobVsoa1tmPj4yXXwwKSs4MCsoaVsoa1tmPj4yXXwwKSs2OD4+MF08PDEpPj4xXXwwKT49KG1bKGtbKGtbZj4+Ml18MCkrMTIwKyhpWyhrW2Y+PjJdfDApKzY4Pj4wXTw8Mik+PjJdfDApKzE4Pj4xXXwwKSk7Yj0oa1tmPj4yXXwwKSs4MCsoaVsoa1tmPj4yXXwwKSs2OD4+MF08PDEpfDA7altiPj4xXT0oaltiPj4xXXwwKSsxPDwxNj4+MTY7a1tkPj4yXT1rWyhrW2Y+PjJdfDApKzEyMCsoaVsoa1tmPj4yXXwwKSs2OD4+MF08PDIpPj4yXX1rW2M+PjJdPW1bKGtbZj4+Ml18MCkrODArKGlbKGtbZj4+Ml18MCkrNjg+PjBdPDwxKT4+MV07YT1rW2Y+PjJdfDA7Yj1rW2Q+PjJdfDA7aWYoKGtbYz4+Ml18MCk9PShtWyhrW2Q+PjJdfDApKzE4Pj4xXXwwKSl7Yj1QRihhLHFyKChrWyhrW2Q+PjJdfDApKzU2Pj4yXXwwKSsoKGxbYis1Pj4wXXwwKSs4KXwwKXwwKXwwO2tbbj4+Ml09Yjtjb250aW51ZX1lbHNle2I9UEYoYSxxcigoa1tiKzU2Pj4yXXwwKSsobVsoa1tkPj4yXXwwKSsyMD4+MV0mKGxbKGtbKGtbZD4+Ml18MCkrNjQ+PjJdfDApKyhrW2M+PjJdPDwxKT4+MF08PDh8bFsoa1soa1tkPj4yXXwwKSs2ND4+Ml18MCkrKGtbYz4+Ml08PDEpKzE+PjBdKSl8MCl8MCl8MDtrW24+PjJdPWI7Y29udGludWV9fWlmKChhfDApPT0xMCl7ZD1oO2g9a1tkKzQ+PjJdfDA7bj1rW2c+PjJdfDA7a1tuPj4yXT1rW2Q+PjJdO2tbbis0Pj4yXT1oO249X0Yoa1tmPj4yXXwwKXwwO2tbZT4+Ml09bjtuPWtbZT4+Ml18MDtyPW87cmV0dXJuIG58MH1lbHNlIGlmKChhfDApPT0xNil7a1tlPj4yXT1rW24+PjJdO249a1tlPj4yXXwwO3I9bztyZXR1cm4gbnwwfXJldHVybiAwfWZ1bmN0aW9uIGRKKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxpPTAsaj0wLGw9MCxtPTA7bT1yO3I9ciszMnwwO2Q9bSsyOHwwO2U9bSsyNHwwO2Y9bSsyMHwwO2w9bSsxNnwwO2c9bSsxMnwwO2k9bSs4fDA7aD1tKzR8MDtqPW07a1tkPj4yXT1hO2tbZT4+Ml09YjtrW2Y+PjJdPWM7a1tsPj4yXT0wO2lmKCEoa1soa1tkPj4yXXwwKSszNDA+PjJdfDApKXtsPWtbbD4+Ml18MDtyPW07cmV0dXJuIGx8MH1rW2c+PjJdPTA7d2hpbGUoMSl7aWYoa1tsPj4yXXwwKXtkPTE1O2JyZWFrfWlmKChrW2c+PjJdfDApPj0oa1soa1tkPj4yXXwwKSszMTY+PjJdfDApKXtkPTE1O2JyZWFrfWtbaT4+Ml09a1soa1soa1tkPj4yXXwwKSszNDA+PjJdfDApKyhrW2c+PjJdPDwyKT4+Ml07a1toPj4yXT1rW2tbKGtbaT4+Ml18MCkrND4+Ml0+PjJdO2lmKChrWyhrW2k+PjJdfDApKzg+PjJdfDApIT0wPyhrW2tbaD4+Ml0+PjJdfDApPj0yOjApe3N3aXRjaChrW2U+PjJdfDApe2Nhc2UgMDp7a1tqPj4yXT1rWyhrW2g+PjJdfDApKzgwPj4yXTtrWyhrW2k+PjJdfDApKzIwPj4yXT0oa1tmPj4yXXwwKSsxO2JyZWFrfWNhc2UgMjp7a1tqPj4yXT1rWyhrW2g+PjJdfDApKzg4Pj4yXTticmVha31kZWZhdWx0Omtbaj4+Ml09a1soa1toPj4yXXwwKSs4ND4+Ml19aWYoKGtbaj4+Ml18MCkhPTA/KGtbKGtbaT4+Ml18MCkrMjA+PjJdfDApPihrW2Y+PjJdfDApOjApe2I9Z2Nba1tqPj4yXSYyNTVdKGtbKGtbaT4+Ml18MCkrOD4+Ml18MCxrW2Y+PjJdfDApfDA7a1tsPj4yXT1ifX1rW2c+PjJdPShrW2c+PjJdfDApKzF9aWYoKGR8MCk9PTE1KXtsPWtbbD4+Ml18MDtyPW07cmV0dXJuIGx8MH1yZXR1cm4gMH1mdW5jdGlvbiBlSihhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLG09MCxuPTA7bj1yO3I9ciszMnwwO2Q9bisyMHwwO2U9bisxNnwwO2Y9bisxMnwwO2g9bis4fDA7aj1uKzR8MDtnPW47a1tkPj4yXT1hO2tbZT4+Ml09YjtrW2Y+PjJdPWM7a1tqPj4yXT0wO2lmKCEoa1tkPj4yXXwwKSl7bT1rW2o+PjJdfDA7cj1uO3JldHVybiBtfDB9d2coa1tkPj4yXXwwKTtrW2g+PjJdPWtbKGtbKGtbZD4+Ml18MCkrND4+Ml18MCkrOD4+Ml07YTp3aGlsZSgxKXtpZighKGtbaD4+Ml18MCkpe209MTU7YnJlYWt9ZG8gaWYoKGtbZj4+Ml18MCkhPTA/KGxbKGtbaD4+Ml18MCkrNjQ+PjBdJjF8MCk9PTA6MCl7aWYoKGxbKGtbaD4+Ml18MCkrNjY+PjBdfDApIT0xPyhsWyhrW2g+PjJdfDApKzY2Pj4wXXwwKSE9MjowKWJyZWFrO2M9aEkoa1toPj4yXXwwKXwwO2tbaj4+Ml09YztpZihrW2o+PjJdfDApYnJlYWsgYX1lbHNlIG09MTA7d2hpbGUoMCk7aWYoKG18MCk9PTEwKXttPTA7WkIoa1toPj4yXXwwKTtpWyhrW2g+PjJdfDApKzY2Pj4wXT00O2tbKGtbaD4+Ml18MCkrNjA+PjJdPWtbZT4+Ml19a1tnPj4yXT0wO3doaWxlKDEpe2lmKChrW2c+PjJdfDApPihpWyhrW2g+PjJdfDApKzY4Pj4wXXwwKSlicmVhaztfQihrWyhrW2g+PjJdfDApKzEyMCsoa1tnPj4yXTw8Mik+PjJdfDApO2tbKGtbaD4+Ml18MCkrMTIwKyhrW2c+PjJdPDwyKT4+Ml09MDtrW2c+PjJdPShrW2c+PjJdfDApKzF9a1toPj4yXT1rWyhrW2g+PjJdfDApKzg+PjJdfWlmKChtfDApPT0xNSl7bT1rW2o+PjJdfDA7cj1uO3JldHVybiBtfDB9ZUooa1tkPj4yXXwwLGtbaj4+Ml18MCwwKXwwO209a1tqPj4yXXwwO3I9bjtyZXR1cm4gbXwwfWZ1bmN0aW9uIGZKKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxpPTA7aT1yO3I9ciszMnwwO2Q9aSsxNnwwO2U9aSsxMnwwO2Y9aSs4fDA7aD1pKzR8MDtnPWk7a1tkPj4yXT1hO2tbZT4+Ml09YjtrW2Y+PjJdPWM7a1toPj4yXT0wO2lmKCEoa1tkPj4yXXwwKSl7aD1rW2g+PjJdfDA7cj1pO3JldHVybiBofDB9aWYoKGxbKGtbZD4+Ml18MCkrOD4+MF18MHwwKSE9Mil7aD1rW2g+PjJdfDA7cj1pO3JldHVybiBofDB9a1tnPj4yXT1rWyhrW2Q+PjJdfDApKzQ+PjJdO3dnKGtbZD4+Ml18MCk7YT1kcyhrW2tbZz4+Ml0+PjJdfDAsa1tlPj4yXXwwLGtbZj4+Ml18MCl8MDtrW2g+PjJdPWE7aWYoa1toPj4yXXwwKXtoPWtbaD4+Ml18MDtyPWk7cmV0dXJuIGh8MH1pZigoa1tmPj4yXXwwKTwwPygobVsoa1tnPj4yXXwwKSsyMj4+MV18MCkmOHwwKSE9MDowKWtbKGtbZz4+Ml18MCkrNDQ+PjJdPTA7YT1LTShrW2c+PjJdfDApfDA7a1toPj4yXT1hO2E9cXIoKGtbKGtbKGtbZz4+Ml18MCkrMTI+PjJdfDApKzU2Pj4yXXwwKSsyOHwwKXwwO2tbKGtbZz4+Ml18MCkrNDQ+PjJdPWE7aD1rW2g+PjJdfDA7cj1pO3JldHVybiBofDB9ZnVuY3Rpb24gZ0ooYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wO2o9cjtyPXIrMzJ8MDtjPWorMjB8MDtkPWorMTZ8MDtlPWorMTJ8MDtmPWorOHwwO2g9ais0fDA7Zz1qO2tbYz4+Ml09YTtrW2Q+PjJdPWI7a1tmPj4yXT0wO2drKCk7WWYoa1tjPj4yXXwwKTtpZihrWyhrW2M+PjJdfDApKzI0Pj4yXSYyKWE9KGxbKGtbYz4+Ml18MCkrMTQ4KzU+PjBdfDApPT0wO2Vsc2UgYT0wO2tbaD4+Ml09YSYxO2tbZT4+Ml09MDt3aGlsZSgxKXtpZigoa1tlPj4yXXwwKT49KGtbKGtbYz4+Ml18MCkrMjA+PjJdfDApKWJyZWFrO2tbZz4+Ml09a1soa1soa1tjPj4yXXwwKSsxNj4+Ml18MCkrKGtbZT4+Ml08PDQpKzQ+PjJdO2lmKGtbZz4+Ml18MCl7aWYocGkoa1tnPj4yXXwwKXwwKWtbZj4+Ml09MTtaZyhrW2c+PjJdfDAsa1tkPj4yXXwwLCgoa1toPj4yXXwwKSE9MF4xKSYxKXwwfWtbZT4+Ml09KGtbZT4+Ml18MCkrMX15dShrW2M+PjJdfDApfDA7aGsoKTtpZigoa1soa1tjPj4yXXwwKSsyND4+Ml0mMnwwKSE9MD8obFsoa1tjPj4yXXwwKSsxNDgrNT4+MF18MCk9PTA6MCl7YWkoa1tjPj4yXXwwKTtNZyhrW2M+PjJdfDApfWg9KGtbYz4+Ml18MCkrNDQwfDA7a1toPj4yXT0wO2tbaCs0Pj4yXT0wO2g9KGtbYz4+Ml18MCkrNDQ4fDA7a1toPj4yXT0wO2tbaCs0Pj4yXT0wO2g9KGtbYz4+Ml18MCkrMjR8MDtrW2g+PjJdPWtbaD4+Ml0mLTMzNTU0NDMzO2lmKCEoa1soa1tjPj4yXXwwKSsyMTI+PjJdfDApKXtyPWo7cmV0dXJufWlmKChrW2Y+PjJdfDApPT0wPyhpWyhrW2M+PjJdfDApKzY3Pj4wXXwwKSE9MDowKXtyPWo7cmV0dXJufV9iW2tbKGtbYz4+Ml18MCkrMjEyPj4yXSYyNTVdKGtbKGtbYz4+Ml18MCkrMjA4Pj4yXXwwKTtyPWo7cmV0dXJufWZ1bmN0aW9uIGhKKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MDtkPXI7cj1yKzE2fDA7Yj1kKzR8MDtjPWQ7a1tiPj4yXT1hO3doaWxlKDEpe2E9a1tiPj4yXXwwO2lmKCEoa1soa1tiPj4yXXwwKSs0MjQ+PjJdfDApKWJyZWFrO2tbYz4+Ml09a1thKzQyND4+Ml07a1soa1tiPj4yXXwwKSs0MjQ+PjJdPWtbKGtbYz4+Ml18MCkrMjQ+PjJdO2JnKGtbYj4+Ml18MCxrW2M+PjJdfDApfWtbYSs0MzI+PjJdPTA7a1soa1tiPj4yXXwwKSs0MzY+PjJdPTA7aVsoa1tiPj4yXXwwKSs3NT4+MF09MDtyPWQ7cmV0dXJufWZ1bmN0aW9uIGlKKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTA7ZD1yO3I9cisxNnwwO2c9ZCsxMnwwO2U9ZCs4fDA7Yz1kKzR8MDtmPWQ7a1tnPj4yXT1hO2tbZT4+Ml09YjtrW2Y+PjJdPWtbKGtbZz4+Ml18MCkrND4+Ml07d2coa1tnPj4yXXwwKTthPUhNKGtba1tmPj4yXT4+Ml18MCxrW2U+PjJdfDApfDA7a1tjPj4yXT1hO3I9ZDtyZXR1cm4ga1tjPj4yXXwwfWZ1bmN0aW9uIGpKKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscz0wO3M9cjtyPXIrMzJ8MDtmPXMrMjR8MDtnPXMrMjB8MDttPXMrMTZ8MDtuPXMrMTJ8MDtvPXMrMjh8MDtxPXMrOHwwO2g9cys0fDA7cD1zO2tbZj4+Ml09YTtrW2c+PjJdPWI7a1ttPj4yXT1jO2tbbj4+Ml09ZDtpW28+PjBdPWU7ZT1rW2Y+PjJdfDA7aWYoKGtbZz4+Ml18MCk+MCllPShrWyhrW2Y+PjJdfDApKzkyPj4yXXwwKSsoKChrW2UrMjQ+PjJdfDApLShrW2c+PjJdfDApfDApKjQwfDApfDA7ZWxzZSBlPWtbZSs5Mj4+Ml18MDtrW3E+PjJdPWU7a1twPj4yXT0wO2U9ODgrKGtbbT4+Ml08PDMpfDA7aWYoIShsW28+PjBdfDApKWI9Rk0oKXwwO2Vsc2UgYj0wO2tbaD4+Ml09ZStiO2lmKGtbKGtbKGtbZj4+Ml18MCkrMTEyPj4yXXwwKSsoa1tnPj4yXTw8Mik+PjJdfDApe29KKGtbZj4+Ml18MCxrWyhrWyhrW2Y+PjJdfDApKzExMj4+Ml18MCkrKGtbZz4+Ml08PDIpPj4yXXwwKTtrWyhrWyhrW2Y+PjJdfDApKzExMj4+Ml18MCkrKGtbZz4+Ml08PDIpPj4yXT0wfWlmKFh4KGtbcT4+Ml18MCxrW2g+PjJdfDApfDApe3E9a1twPj4yXXwwO3I9cztyZXR1cm4gcXwwfWU9a1soa1txPj4yXXwwKSsxNj4+Ml18MDtrW3A+PjJdPWU7a1soa1soa1tmPj4yXXwwKSsxMTI+PjJdfDApKyhrW2c+PjJdPDwyKT4+Ml09ZTtlPWtbcD4+Ml18MDtiPWUrODh8MDtkb3trW2U+PjJdPTA7ZT1lKzR8MH13aGlsZSgoZXwwKTwoYnwwKSk7aVtrW3A+PjJdPj4wXT1pW28+PjBdfDA7aVsoa1twPj4yXXwwKSsxPj4wXT1rW24+PjJdO2pbKGtbcD4+Ml18MCkrMTI+PjFdPWtbbT4+Ml07a1soa1twPj4yXXwwKSs3Nj4+Ml09KGtbcD4+Ml18MCkrODArKGtbbT4+Ml08PDIpO2lmKGxbbz4+MF18MCl7cT1rW3A+PjJdfDA7cj1zO3JldHVybiBxfDB9a1soa1twPj4yXXwwKSsxNj4+Ml09KGtbKGtbcT4+Ml18MCkrMTY+PjJdfDApKyg4OCsoa1ttPj4yXTw8MykpO0dNKGtbKGtbcD4+Ml18MCkrMTY+PjJdfDApO3E9a1twPj4yXXwwO3I9cztyZXR1cm4gcXwwfWZ1bmN0aW9uIGtKKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGk9MCxqPTAsbD0wLG09MDttPXI7cj1yKzMyfDA7Zj1tKzIwfDA7Zz1tKzE2fDA7aD1tKzEyfDA7aT1tKzh8MDtqPW0rNHwwO2w9bTtrW2Y+PjJdPWE7a1tnPj4yXT1iO2tbaD4+Ml09YztrW2k+PjJdPWQ7a1tqPj4yXT1lO2lmKChrW2c+PjJdfDApPDEpe2M9X2ooNjI0MTApfDA7a1tsPj4yXT1jO2M9a1tsPj4yXXwwO3I9bTtyZXR1cm4gY3wwfWVsc2V7d2coa1tmPj4yXXwwKTtjPURNKGtbZj4+Ml18MCxrW2c+PjJdfDAsa1toPj4yXXwwLGtbaT4+Ml18MCxrW2o+PjJdfDApfDA7a1tsPj4yXT1jO2M9a1tsPj4yXXwwO3I9bTtyZXR1cm4gY3wwfXJldHVybiAwfWZ1bmN0aW9uIGxKKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wO2M9cjtyPXIrMTZ8MDtkPWMrNHwwO2U9YztrW2Q+PjJdPWE7a1tlPj4yXT1iO2lbKGtbZD4+Ml18MCkrNjc+PjBdPWtbZT4+Ml07cj1jO3JldHVybn1mdW5jdGlvbiBtSihhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTA7ZT1yO3I9cisxNnwwO2g9ZSsxMnwwO2c9ZSs4fDA7Zj1lKzR8MDtkPWU7a1toPj4yXT1hO2tbZz4+Ml09YjtrW2Y+PjJdPWM7d2coa1toPj4yXXwwKTtiPUNNKGtbaD4+Ml18MCxrW2c+PjJdfDAsa1tmPj4yXXwwKXwwO2tbZD4+Ml09YjtyPWU7cmV0dXJuIGtbZD4+Ml18MH1mdW5jdGlvbiBuSihhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsbj0wLG89MCxwPTAscT0wLHM9MCx0PTAsdT0wLHY9MCx3PTA7dz1yO3I9cis2NHwwO3E9dys1MnwwO2Q9dys0OHwwO2U9dys0NHwwO3U9dys0MHwwO2Y9dyszNnwwO3Q9dyszMnwwO3M9dysyOHwwO249dysyNHwwO2g9dysyMHwwO3Y9dysxNnwwO2c9dysxMnwwO3A9dztvPXcrOHwwO2tbcT4+Ml09YTtrW2Q+PjJdPWI7a1tlPj4yXT1jO2tbdj4+Ml09MDtrW24+PjJdPTI0KygobVsoa1soa1tlPj4yXXwwKSsyND4+Ml18MCkrNj4+MV18MCktMTw8Mik7a1toPj4yXT0xMzY7Yz0oa1toPj4yXXwwKSsoa1tuPj4yXXwwKXwwO2M9Q2goa1txPj4yXXwwLGMsKChjfDApPDApPDwzMT4+MzEpfDA7a1t0Pj4yXT1jO2tbKGtbZT4+Ml18MCkrMTY+PjJdPWtbdD4+Ml07aWYoIShrW3Q+PjJdfDApKXtrW3Y+PjJdPTc7dj1rW3Y+PjJdfDA7cj13O3JldHVybiB2fDB9aD0oa1t0Pj4yXXwwKSsoa1toPj4yXXwwKXwwO2tbcz4+Ml09aDtrWyhrW3Q+PjJdfDApKzI4Pj4yXT1oO2JTKGtbcz4+Ml18MCxrWyhrW2U+PjJdfDApKzI0Pj4yXXwwLGtbbj4+Ml18MCl8MDtrWyhrW3M+PjJdfDApKzEyPj4yXT0wO2lmKGtbZD4+Ml18MCl7bj0oa1tzPj4yXXwwKSs4fDA7altuPj4xXT0obVtuPj4xXXwwKSsoKG1bKGtbcz4+Ml18MCkrNj4+MV18MCktKGtbZD4+Ml18MCkpO2pbKGtbcz4+Ml18MCkrNj4+MV09a1tkPj4yXX1uPUNnKGtbKGtbKGtbcT4+Ml18MCkrMTY+PjJdfDApKzQ+PjJdfDApfDA7a1t1Pj4yXT1uO2tbKGtbdD4+Ml18MCkrMTI+PjJdPW47aVsoa1t0Pj4yXXwwKSs1OT4+MF09MTtpWyhrW3Q+PjJdfDApKzU4Pj4wXT0tMTtpWyhrW3Q+PjJdfDApKzU3Pj4wXT0obFsoa1t0Pj4yXXwwKSs1OT4+MF18MHwwKT4xO2tbKGtbdD4+Ml18MCkrMjQ+PjJdPWtbcT4+Ml07a1tmPj4yXT0wO3doaWxlKDEpe2lmKChrW2Y+PjJdfDApPj0obFsoa1t0Pj4yXXwwKSs1OT4+MF18MHwwKSlicmVhaztrW2c+PjJdPShrW3Q+PjJdfDApKzY0Kygoa1tmPj4yXXwwKSo3MnwwKTtrWyhrW2c+PjJdfDApKzg+PjJdPWtbdD4+Ml07a1tmPj4yXT0oa1tmPj4yXXwwKSsxfWlmKCEoaHIoa1txPj4yXXwwKXwwKSl7a1tvPj4yXT1rWzU4XTtkPWhhKGtbbz4+Ml18MCxrW3U+PjJdfDApfDA7a1trW3Q+PjJdPj4yXT1kO2Q9a1soa1soa1soa1txPj4yXXwwKSsxNj4+Ml18MCkrMTI+PjJdfDApKzgwPj4yXXwwO2U9cDtrW2U+PjJdPWQ7a1tlKzQ+PjJdPSgoZHwwKTwwKTw8MzE+PjMxO2U9cDtkPWtbZT4+Ml18MDtlPWtbZSs0Pj4yXXwwO2lmKChrW3ArND4+Ml18MCk8MCl7bj1rUyhkfDAsZXwwLC0xMDI0LC0xKXwwO289cDtrW28+PjJdPW47a1tvKzQ+PjJdPUx9ZWxzZXtuPWtbdT4+Ml18MDtuPWtTKGR8MCxlfDAsbnwwLCgobnwwKTwwKTw8MzE+PjMxfDApfDA7bz1wO2tbbz4+Ml09bjtrW28rND4+Ml09TH1nPXA7aD1rW2crND4+Ml18MDtnPShofDApPDB8KGh8MCk9PTAmKGtbZz4+Ml18MCk+Pj4wPDUzNjg3MDkxMjtoPXA7bj1nP2tbaCs0Pj4yXXwwOjA7bz1wO2tbbz4+Ml09Zz9rW2g+PjJdfDA6NTM2ODcwOTEyO2tbbys0Pj4yXT1uO2lmKChrW2tbdD4+Ml0+PjJdfDApPihrW3A+PjJdfDApKWQ9a1trW3Q+PjJdPj4yXXwwO2Vsc2UgZD1rW3A+PjJdfDA7a1soa1t0Pj4yXXwwKSs0Pj4yXT1kO2lmKChrWzUwXXwwKT09MD8oa1soa1t0Pj4yXXwwKSs1Mj4+Ml09a1t1Pj4yXSx1PWtbdT4+Ml18MCx1PWpnKHUsKCh1fDApPDApPDwzMT4+MzEpfDAsa1soa1t0Pj4yXXwwKSszNis0Pj4yXT11LChrWyhrW3Q+PjJdfDApKzM2KzQ+PjJdfDApPT0wKTowKWtbdj4+Ml09N31pZigoKG1bKGtbcz4+Ml18MCkrNj4+MV18MCkrKG1bKGtbcz4+Ml18MCkrOD4+MV18MCl8MCk+PTEzKXt2PWtbdj4+Ml18MDtyPXc7cmV0dXJuIHZ8MH1pZigoa1soa1tzPj4yXXwwKSsyMD4+Ml18MCkhPTA/KGtbKGtbcz4+Ml18MCkrMjA+PjJdfDApIT0oa1soa1txPj4yXXwwKSs4Pj4yXXwwKTowKXt2PWtbdj4+Ml18MDtyPXc7cmV0dXJuIHZ8MH1pWyhrW3Q+PjJdfDApKzYwPj4wXT0zO3Y9a1t2Pj4yXXwwO3I9dztyZXR1cm4gdnwwfWZ1bmN0aW9uIG9KKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTA7Zz1yO3I9cisxNnwwO2M9ZysxMnwwO2Y9Zys4fDA7ZT1nKzR8MDtkPWc7a1tjPj4yXT1hO2tbZj4+Ml09YjtpZighKGtbZj4+Ml18MCkpe3I9ZztyZXR1cm59c3dpdGNoKGxba1tmPj4yXT4+MF18MHwwKXtjYXNlIDE6e0JNKGtba1tjPj4yXT4+Ml18MCxrW2Y+PjJdfDApO3I9ZztyZXR1cm59Y2FzZSAwOntjPWtbZj4+Ml18MDtpZihrWyhrW2Y+PjJdfDApKzIwPj4yXXwwKXtWQihrW2MrMjA+PjJdfDApfDA7cj1nO3JldHVybn1lbHNle1hCKGtbYysxNj4+Ml18MCl8MDtyPWc7cmV0dXJufX1jYXNlIDI6e2tbZT4+Ml09a1soa1tmPj4yXXwwKSsxNj4+Ml07a1tkPj4yXT1rW2tba1tlPj4yXT4+Ml0+PjJdO2Y9KGtba1tlPj4yXT4+Ml18MCkrNHwwO2tbZj4+Ml09KGtbZj4+Ml18MCkrLTE7YmNba1soa1tkPj4yXXwwKSsyOD4+Ml0mMjU1XShrW2U+PjJdfDApfDA7cj1nO3JldHVybn1kZWZhdWx0OntyPWc7cmV0dXJufX19ZnVuY3Rpb24gcEooYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTA7ZT1yO3I9cisxNnwwO2Q9ZSs0fDA7Yz1lO2tbZD4+Ml09YTtrW2M+PjJdPWI7cj1lO3JldHVybiAoKGxbKGtbZD4+Ml18MCkrNjc+PjBdfDApJmtbYz4+Ml18MCkhPTB8MH1mdW5jdGlvbiBxSihhKXthPWF8MDt2YXIgYj0wLGM9MDtjPXI7cj1yKzE2fDA7Yj1jO2tbYj4+Ml09YTtyPWM7cmV0dXJuIDEhPShsWyhrW2I+PjJdfDApKzY2Pj4wXXwwfDApfDB9ZnVuY3Rpb24gckooYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MDtnPXI7cj1yKzE2fDA7ZT1nKzEyfDA7ZD1nKzh8MDtjPWcrNHwwO2Y9ZztrW2Q+PjJdPWE7a1tjPj4yXT1iO2lmKDE9PShsWyhrW2Q+PjJdfDApKzY2Pj4wXXwwfDApPygobFsoa1tkPj4yXXwwKSs2ND4+MF18MCkmOHwwKSE9MDowKXtrW2U+PjJdPTA7Zj1rW2U+PjJdfDA7cj1nO3JldHVybiBmfDB9Yj1fRihrW2Q+PjJdfDApfDA7a1tmPj4yXT1iO2RvIGlmKCEoa1tmPj4yXXwwKSl7Yz1rW2M+PjJdfDA7aWYoIShsWyhrW2Q+PjJdfDApKzY2Pj4wXXwwKSl7a1tjPj4yXT0xO2JyZWFrfWtbYz4+Ml09MDtjPVFGKGtbZD4+Ml18MCl8MDtrW2Y+PjJdPWM7Yz0oa1tkPj4yXXwwKSs2NHwwO2E9bFtjPj4wXXwwO2lmKCEoa1tmPj4yXXwwKSl7aVtjPj4wXT1hfDg7YnJlYWt9ZWxzZXtpW2M+PjBdPWEmLTk7YnJlYWt9fXdoaWxlKDApO2tbZT4+Ml09a1tmPj4yXTtmPWtbZT4+Ml18MDtyPWc7cmV0dXJuIGZ8MH1mdW5jdGlvbiBzSihhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLG49MCxvPTAscD0wLHE9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wO3k9cjtyPXIrNjR8MDtlPXkrNTJ8MDtmPXkrNDh8MDtnPXkrNDR8MDtoPXkrNDB8MDt6PXkrMzZ8MDt2PXkrMzJ8MDtvPXkrMjh8MDt3PXkrMjR8MDtuPXkrMjB8MDt1PXkrMTZ8MDtzPXkrMTJ8MDt0PXkrOHwwO3E9eSs0fDA7cD15O3g9eSs1NnwwO2tbZj4+Ml09YTtrW2c+PjJdPWI7a1toPj4yXT1jO2tbej4+Ml09ZDtrW28+PjJdPWtbej4+Ml07a1t3Pj4yXT0wO2tbcz4+Ml09a1trW2Y+PjJdPj4yXTtrW3Q+PjJdPWtbKGtbcz4+Ml18MCkrND4+Ml07a1twPj4yXT0wO2M9a1tmPj4yXXwwO2lmKChsWyhrW2Y+PjJdfDApKzY2Pj4wXXwwKT09NCl7a1tlPj4yXT1rW2MrNjA+PjJdO3o9a1tlPj4yXXwwO3I9eTtyZXR1cm4genwwfWlmKChsW2MrNjQ+PjBdJjMyfDApIT0wPyh6PWZJKGtbdD4+Ml18MCxrWyhrW2Y+PjJdfDApKzUyPj4yXXwwLGtbZj4+Ml18MCl8MCxrW3Y+PjJdPXosKGtbdj4+Ml18MCkhPTApOjApe2tbZT4+Ml09a1t2Pj4yXTt6PWtbZT4+Ml18MDtyPXk7cmV0dXJuIHp8MH1kbyBpZighKGtbKGtbZj4+Ml18MCkrNzI+PjJdfDApKXt6PShrW2c+PjJdfDApKzh8MDtoTChrW3M+PjJdfDAsa1t6Pj4yXXwwLGtbeis0Pj4yXXwwLDApO2lmKCgobFsoa1tmPj4yXXwwKSs2ND4+MF0mMnwwKSE9MD8oej0oa1tnPj4yXXwwKSs4fDAscz1rW3orND4+Ml18MCwoc3wwKT4wfChzfDApPT0wJihrW3o+PjJdfDApPj4+MD4wKTowKT8oej0oa1tmPj4yXXwwKSsxNnwwLGQ9a1t6Pj4yXXwwLHo9a1t6KzQ+PjJdfDAscz0oa1tnPj4yXXwwKSs4fDAscz1fUihrW3M+PjJdfDAsa1tzKzQ+PjJdfDAsMSwwKXwwLChkfDApPT0oc3wwKSYoenwwKT09KEx8MCkpOjApe2tbbz4+Ml09LTE7YnJlYWt9aWYoKGtbbz4+Ml18MCk9PTA/KHo9KGtbZz4+Ml18MCkrOHwwLHo9WUYoa1tmPj4yXXwwLDAsa1t6Pj4yXXwwLGtbeis0Pj4yXXwwLGtbaD4+Ml18MCxvKXwwLGtbdj4+Ml09eiwoa1t2Pj4yXXwwKSE9MCk6MCl7a1tlPj4yXT1rW3Y+PjJdO3o9a1tlPj4yXXwwO3I9eTtyZXR1cm4genwwfX1lbHNlIGlmKChrW28+PjJdfDApPT0wPyh6PShrW2c+PjJdfDApKzh8MCx6PVZGKGtbZj4+Ml18MCxrW2tbZz4+Ml0+PjJdfDAsa1t6Pj4yXXwwLGtbeis0Pj4yXXwwLGtbaD4+Ml18MCxvKXwwLGtbdj4+Ml09eiwoa1t2Pj4yXXwwKSE9MCk6MCl7a1tlPj4yXT1rW3Y+PjJdO3o9a1tlPj4yXXwwO3I9eTtyZXR1cm4genwwfXdoaWxlKDApO2tbdT4+Ml09a1soa1tmPj4yXXwwKSsxMjArKGlbKGtbZj4+Ml18MCkrNjg+PjBdPDwyKT4+Ml07a1twPj4yXT1rWyhrW3Q+PjJdfDApKzgwPj4yXTt6PUFNKGtbdT4+Ml18MCxrW3A+PjJdfDAsa1tnPj4yXXwwLHcpfDA7a1t2Pj4yXT16O2RvIGlmKCEoa1t2Pj4yXXwwKSl7a1tuPj4yXT1tWyhrW2Y+PjJdfDApKzgwKyhpWyhrW2Y+PjJdfDApKzY4Pj4wXTw8MSk+PjFdO2lmKCEoa1tvPj4yXXwwKSl7ej1RZyhrWyhrW3U+PjJdfDApKzcyPj4yXXwwKXwwO2tbdj4+Ml09ejtpZihrW3Y+PjJdfDApYnJlYWs7a1txPj4yXT0oa1soa1t1Pj4yXXwwKSs1Nj4+Ml18MCkrKG1bKGtbdT4+Ml18MCkrMjA+PjFdJihsWyhrWyhrW3U+PjJdfDApKzY0Pj4yXXwwKSsoa1tuPj4yXTw8MSk+PjBdPDw4fGxbKGtbKGtbdT4+Ml18MCkrNjQ+PjJdfDApKyhrW24+PjJdPDwxKSsxPj4wXSkpO2lmKCEoaVsoa1t1Pj4yXXwwKSs0Pj4wXXwwKSl7ej1rW3A+PjJdfDA7dD1rW3E+PjJdfDA7aVt6Pj4wXT1pW3Q+PjBdfDA7aVt6KzE+PjBdPWlbdCsxPj4wXXwwO2lbeisyPj4wXT1pW3QrMj4+MF18MDtpW3orMz4+MF09aVt0KzM+PjBdfDB9ej1qTChrW3U+PjJdfDAsa1txPj4yXXwwLHgpfDA7a1t2Pj4yXT16O2dNKGtbdT4+Ml18MCxrW24+PjJdfDAsbVt4Pj4xXXwwLHYpO2lmKGtbdj4+Ml18MClicmVha31lbHNlIGlmKChrW28+PjJdfDApPDA/KG1bKGtbdT4+Ml18MCkrMTg+PjFdfDApPjA6MCl7eD0oa1tmPj4yXXwwKSs4MCsoaVsoa1tmPj4yXXwwKSs2OD4+MF08PDEpfDA7ej0oalt4Pj4xXXwwKSsxPDwxNj4+MTY7alt4Pj4xXT16O2tbbj4+Ml09eiY2NTUzNX1oTShrW3U+PjJdfDAsa1tuPj4yXXwwLGtbcD4+Ml18MCxrW3c+PjJdfDAsMCwwLHYpO2pbKGtbZj4+Ml18MCkrMTYrMTg+PjFdPTA7aWYoaVsoa1t1Pj4yXXwwKSsxPj4wXXwwKXt6PShrW2Y+PjJdfDApKzY0fDA7aVt6Pj4wXT1sW3o+PjBdJi0zO3o9aU0oa1tmPj4yXXwwKXwwO2tbdj4+Ml09ejtpWyhrWyhrW2Y+PjJdfDApKzEyMCsoaVsoa1tmPj4yXXwwKSs2OD4+MF08PDIpPj4yXXwwKSsxPj4wXT0wO2lbKGtbZj4+Ml18MCkrNjY+PjBdPTB9fXdoaWxlKDApO2tbZT4+Ml09a1t2Pj4yXTt6PWtbZT4+Ml18MDtyPXk7cmV0dXJuIHp8MH1mdW5jdGlvbiB0SihhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wLGg9MCxuPTAsbz0wLHA9MCxxPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTA7ej1yO3I9cis2NHwwO3Q9eis1NnwwO3U9eis1MnwwO0E9eis2M3wwO2Y9eis0OHwwO2c9eis0NHwwO3k9eis0MHwwO3g9eiszNnwwO2g9eiszMnwwO3c9eisyOHwwO3Y9eisyNHwwO3A9eis2MHwwO3M9eisyMHwwO3E9eis2MnwwO2U9eisxNnwwO249eisxMnwwO2Q9eis4fDA7Yz16KzR8MDtvPXo7a1t1Pj4yXT1hO2lbQT4+MF09YjtrW2Y+PjJdPWtba1t1Pj4yXT4+Ml07a1tnPj4yXT1rWyhrW2Y+PjJdfDApKzQ+PjJdO2tbcz4+Ml09MDtpW3E+PjBdPWxbQT4+MF0mMjtrW3Y+PjJdPWlbKGtbdT4+Ml18MCkrNjg+PjBdO2tbdz4+Ml09bVsoa1t1Pj4yXXwwKSs4MCsoa1t2Pj4yXTw8MSk+PjFdO2tbeD4+Ml09a1soa1t1Pj4yXXwwKSsxMjArKGtbdj4+Ml08PDIpPj4yXTtrW2g+PjJdPShrWyhrW3g+PjJdfDApKzU2Pj4yXXwwKSsobVsoa1t4Pj4yXXwwKSsyMD4+MV0mKGxbKGtbKGtbeD4+Ml18MCkrNjQ+PjJdfDApKyhrW3c+PjJdPDwxKT4+MF08PDh8bFsoa1soa1t4Pj4yXXwwKSs2ND4+Ml18MCkrKGtbdz4+Ml08PDEpKzE+PjBdKSk7ZG8gaWYoaVtxPj4wXXwwKXtpZigoaVsoa1t4Pj4yXXwwKSs0Pj4wXXwwKSE9MD8oQT1tWyhrW3g+PjJdfDApKzE2Pj4xXXwwLEE9QSsoKGd1KGtbeD4+Ml18MCxrW2g+PjJdfDApfDApJjY1NTM1KSsyfDAsKEF8MCk8PSgoa1soa1tnPj4yXXwwKSszNj4+Ml08PDE+Pj4wKS8zfDB8MCkpOjApe2tbcz4+Ml09MTticmVha31BPWpJKGtbdT4+Ml18MCl8MDtrW3k+PjJdPUE7aWYoa1t5Pj4yXXwwKXtrW3Q+PjJdPWtbeT4+Ml07QT1rW3Q+PjJdfDA7cj16O3JldHVybiBBfDB9fXdoaWxlKDApO2lmKChpWyhrW3g+PjJdfDApKzQ+PjBdfDApPT0wPyhrW2U+PjJdPTAsQT1NRihrW3U+PjJdfDAsZSl8MCxrW3k+PjJdPUEsKGtbeT4+Ml18MCkhPTApOjApe2tbdD4+Ml09a1t5Pj4yXTtBPWtbdD4+Ml18MDtyPXo7cmV0dXJuIEF8MH1pZigobFsoa1t1Pj4yXXwwKSs2ND4+MF0mMzJ8MCkhPTA/KEE9Zkkoa1tnPj4yXXwwLGtbKGtbdT4+Ml18MCkrNTI+PjJdfDAsa1t1Pj4yXXwwKXwwLGtbeT4+Ml09QSwoa1t5Pj4yXXwwKSE9MCk6MCl7a1t0Pj4yXT1rW3k+PjJdO0E9a1t0Pj4yXXwwO3I9ejtyZXR1cm4gQXwwfWlmKCEoa1soa1t1Pj4yXXwwKSs3Mj4+Ml18MCkpe0E9KGtbdT4+Ml18MCkrMTZ8MDtoTChrW2Y+PjJdfDAsa1tBPj4yXXwwLGtbQSs0Pj4yXXwwLDApfUE9UWcoa1soa1t4Pj4yXXwwKSs3Mj4+Ml18MCl8MDtrW3k+PjJdPUE7aWYoa1t5Pj4yXXwwKXtrW3Q+PjJdPWtbeT4+Ml07QT1rW3Q+PjJdfDA7cj16O3JldHVybiBBfDB9QT1qTChrW3g+PjJdfDAsa1toPj4yXXwwLHApfDA7a1t5Pj4yXT1BO2dNKGtbeD4+Ml18MCxrW3c+PjJdfDAsbVtwPj4xXXwwLHkpO2lmKGtbeT4+Ml18MCl7a1t0Pj4yXT1rW3k+PjJdO0E9a1t0Pj4yXXwwO3I9ejtyZXR1cm4gQXwwfWlmKCEoaVsoa1t4Pj4yXXwwKSs0Pj4wXXwwKSl7a1tuPj4yXT1rWyhrW3U+PjJdfDApKzEyMCsoaVsoa1t1Pj4yXXwwKSs2OD4+MF08PDIpPj4yXTtrW2M+PjJdPWtbKGtbKGtbdT4+Ml18MCkrMTIwKygoa1t2Pj4yXXwwKSsxPDwyKT4+Ml18MCkrODQ+PjJdO2tbaD4+Ml09KGtbKGtbbj4+Ml18MCkrNTY+PjJdfDApKyhtWyhrW24+PjJdfDApKzIwPj4xXSYobFsoa1soa1tuPj4yXXwwKSs2ND4+Ml18MCkrKChtWyhrW24+PjJdfDApKzE4Pj4xXXwwKS0xPDwxKT4+MF08PDh8bFsoa1soa1tuPj4yXXwwKSs2ND4+Ml18MCkrKChtWyhrW24+PjJdfDApKzE4Pj4xXXwwKS0xPDwxKSsxPj4wXSkpO2lmKChrW2g+PjJdfDApPj4+MDwoKGtbKGtbbj4+Ml18MCkrNTY+PjJdfDApKzR8MCk+Pj4wKXtBPV9qKDY2NDQ5KXwwO2tbdD4+Ml09QTtBPWtbdD4+Ml18MDtyPXo7cmV0dXJuIEF8MH1BPShnY1trWyhrW24+PjJdfDApKzc2Pj4yXSYyNTVdKGtbbj4+Ml18MCxrW2g+PjJdfDApfDApJjY1NTM1O2tbZD4+Ml09QTtrW28+PjJdPWtbKGtbZz4+Ml18MCkrODA+PjJdO0E9UWcoa1soa1tuPj4yXXwwKSs3Mj4+Ml18MCl8MDtrW3k+PjJdPUE7aWYoIShrW3k+PjJdfDApKWhNKGtbeD4+Ml18MCxrW3c+PjJdfDAsKGtbaD4+Ml18MCkrLTR8MCwoa1tkPj4yXXwwKSs0fDAsa1tvPj4yXXwwLGtbYz4+Ml18MCx5KTtnTShrW24+PjJdfDAsKG1bKGtbbj4+Ml18MCkrMTg+PjFdfDApLTF8MCxrW2Q+PjJdfDAseSk7aWYoa1t5Pj4yXXwwKXtrW3Q+PjJdPWtbeT4+Ml07QT1rW3Q+PjJdfDA7cj16O3JldHVybiBBfDB9fUE9aU0oa1t1Pj4yXXwwKXwwO2tbeT4+Ml09QTtpZigoa1t5Pj4yXXwwKT09MD8oaVsoa1t1Pj4yXXwwKSs2OD4+MF18MCk+KGtbdj4+Ml18MCk6MCl7d2hpbGUoMSl7Yj1rW3U+PjJdfDA7aWYoKGlbKGtbdT4+Ml18MCkrNjg+PjBdfDApPD0oa1t2Pj4yXXwwKSlicmVhaztwPWIrNjh8MDtBPWlbcD4+MF18MDtpW3A+PjBdPUErLTE8PDI0Pj4yNDtfQihrWyhrW3U+PjJdfDApKzEyMCsoQTw8MjQ+PjI0PDwyKT4+Ml18MCl9QT1pTShiKXwwO2tbeT4+Ml09QX1kbyBpZighKGtbeT4+Ml18MCkpe2I9a1t1Pj4yXXwwO2lmKCEoa1tzPj4yXXwwKSl7QT1fRihiKXwwO2tbeT4+Ml09QTtpZighKGlbcT4+MF18MCkpYnJlYWs7aVsoa1t1Pj4yXXwwKSs2Nj4+MF09MzticmVha31pW2IrNjY+PjBdPTI7Yj0oa1t1Pj4yXXwwKSs2MHwwO2lmKChrW3c+PjJdfDApPj0obVsoa1t4Pj4yXXwwKSsxOD4+MV18MCkpe2tbYj4+Ml09LTE7alsoa1t1Pj4yXXwwKSs4MCsoa1t2Pj4yXTw8MSk+PjFdPShtWyhrW3g+PjJdfDApKzE4Pj4xXXwwKS0xO2JyZWFrfWVsc2V7a1tiPj4yXT0xO2JyZWFrfX13aGlsZSgwKTtrW3Q+PjJdPWtbeT4+Ml07QT1rW3Q+PjJdfDA7cj16O3JldHVybiBBfDB9ZnVuY3Rpb24gdUooYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxpPTAsbD0wLG49MCxvPTAscD0wLHE9MCxzPTAsdD0wO3M9cjtyPXIrNDh8MDtuPXMrNDR8MDt0PXMrNDB8MDtvPXMrMzZ8MDtlPXMrMzJ8MDtwPXMrMjh8MDtsPXMrMjR8MDtxPXMrMjB8MDtpPXMrMTZ8MDtmPXMrMTJ8MDtoPXMrOHwwO2c9cys0fDA7a1t0Pj4yXT1hO2tbbz4+Ml09YjtrW2U+PjJdPWM7a1twPj4yXT1kO2tbbD4+Ml09a1soa1t0Pj4yXXwwKSsxNj4+Ml07a1txPj4yXT1rWyhrW2w+PjJdfDApKzMyPj4yXTtrW2k+PjJdPWtbKGtbdD4+Ml18MCkrMjQ+PjJdO2RvIGlmKCEoa1txPj4yXXwwKSl7dD1XRihrW2k+PjJdfDAsMCwwLHMpfDA7a1soa1tsPj4yXXwwKSszMj4+Ml09dDtrW3E+PjJdPXQ7aWYoa1txPj4yXXwwKXtqWyhrW3E+PjJdfDApKzg+PjFdPWtbZT4+Ml07YnJlYWt9a1tuPj4yXT03O3Q9a1tuPj4yXXwwO3I9cztyZXR1cm4gdHwwfXdoaWxlKDApO3Q9Zk0oa1tsPj4yXXwwLGcpfDA7a1toPj4yXT10O1hGKGtbaT4+Ml18MCxrW2c+PjJdfDAsa1toPj4yXXwwLGtbcT4+Ml18MCk7a1tmPj4yXT0wO3doaWxlKDEpe2lmKChrW2Y+PjJdfDApPj0oa1tlPj4yXXwwKSl7ZT0xMDticmVha31pZigobVsoa1soa1txPj4yXXwwKSs0Pj4yXXwwKSsoKGtbZj4+Ml18MCkqNDB8MCkrOD4+MV18MCkmMSl7ZT04O2JyZWFrfWtbZj4+Ml09KGtbZj4+Ml18MCkrMX1pZigoZXwwKT09OCl7a1trW3A+PjJdPj4yXT0tMTtrW24+PjJdPTA7dD1rW24+PjJdfDA7cj1zO3JldHVybiB0fDB9ZWxzZSBpZigoZXwwKT09MTApe3Q9akcoa1soa1tvPj4yXXwwKSsxMj4+Ml18MCxrWyhrW28+PjJdfDApKzE2Pj4yXXwwLGtbcT4+Ml18MCl8MDtrW2tbcD4+Ml0+PjJdPXQ7a1tuPj4yXT0wO3Q9a1tuPj4yXXwwO3I9cztyZXR1cm4gdHwwfXJldHVybiAwfWZ1bmN0aW9uIHZKKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wLGk9MDtnPXI7cj1yKzMyfDA7Yz1nKzIwfDA7aT1nKzE2fDA7ZD1nKzEyfDA7aD1nKzh8MDtmPWcrNHwwO2U9ZztrW2k+PjJdPWE7a1tkPj4yXT1iO2tbaD4+Ml09a1soa1tpPj4yXXwwKSsxNj4+Ml07Yj1mTShrW2g+PjJdfDAsZSl8MDtrW2Y+PjJdPWI7aWYoWHgoa1tkPj4yXXwwLGtbZT4+Ml18MCl8MCl7a1tjPj4yXT03O2k9a1tjPj4yXXwwO3I9ZztyZXR1cm4gaXwwfWVsc2V7a1soa1tkPj4yXXwwKSsxMj4+Ml09a1tlPj4yXTtqWyhrW2Q+PjJdfDApKzg+PjFdPShtWyhrW2Q+PjJdfDApKzg+PjFdfDApJi00OTY2NHwxNjtiUyhrWyhrW2Q+PjJdfDApKzE2Pj4yXXwwLGtbZj4+Ml18MCxrW2U+PjJdfDApfDA7a1tjPj4yXT0wO2k9a1tjPj4yXXwwO3I9ZztyZXR1cm4gaXwwfXJldHVybiAwfWZ1bmN0aW9uIHdKKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MDtmPXI7cj1yKzE2fDA7Yz1mKzh8MDtkPWYrNHwwO2U9ZjtrW2M+PjJdPWE7a1tkPj4yXT1iO2lmKCEoa1soa1tkPj4yXXwwKSs4Pj4yXXwwKSl7cj1mO3JldHVybn1rW2U+PjJdPWtba1tjPj4yXT4+Ml07Ymcoa1tlPj4yXXwwLGtbKGtbYz4+Ml18MCkrMTA4Pj4yXXwwKTtiPUFoKGtbZT4+Ml18MCxrWyhrW2Q+PjJdfDApKzg+PjJdfDApfDA7a1soa1tjPj4yXXwwKSsxMDg+PjJdPWI7VWQoa1soa1tkPj4yXXwwKSs4Pj4yXXwwKTtrWyhrW2Q+PjJdfDApKzg+PjJdPTA7cj1mO3JldHVybn1mdW5jdGlvbiB4SihhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTA7ZD1yO3I9cisxNnwwO2I9ZCs0fDA7Yz1kO2tbYz4+Ml09YTtpZihjTShrWyhrW2M+PjJdfDApKzE2Pj4yXXwwKXwwKXthPWRNKGtbYz4+Ml18MCl8MDtrW2I+PjJdPWE7YT1rW2I+PjJdfDA7cj1kO3JldHVybiBhfDB9ZWxzZXtrW2I+PjJdPTA7YT1rW2I+PjJdfDA7cj1kO3JldHVybiBhfDB9cmV0dXJuIDB9ZnVuY3Rpb24geUooYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTA7Zz1yO3I9ciszMnwwO2Q9ZysxNnwwO2g9ZysxMnwwO2M9Zys4fDA7ZT1nKzR8MDtmPWc7a1toPj4yXT1hO2tbYz4+Ml09YjtrW2Y+PjJdPTA7a1tlPj4yXT1rWyhrW2g+PjJdfDApKzE2Pj4yXTtiPWtbZT4+Ml18MDtpZihsWyhrW2U+PjJdfDApKzU2Pj4wXXwwKXtoPXRMKGIpfDA7a1tmPj4yXT1oO2tbZj4+Ml09a1tmPj4yXTtpZighKGtbZj4+Ml18MCkpe2g9U0woa1tlPj4yXXwwKXwwO2tbZj4+Ml09aDtrW2tbYz4+Ml0+PjJdPTB9a1tkPj4yXT1rW2Y+PjJdO2g9a1tkPj4yXXwwO3I9ZztyZXR1cm4gaHwwfWE9a1tjPj4yXXwwO2lmKGtbYiszNj4+Ml18MCl7a1thPj4yXT0wO2g9d0woKGtbZT4+Ml18MCkrNjR8MCwoa1tlPj4yXXwwKSszNnwwKXwwO2tbZj4+Ml09aH1lbHNlIGtbYT4+Ml09MTtrW2Q+PjJdPWtbZj4+Ml07aD1rW2Q+PjJdfDA7cj1nO3JldHVybiBofDB9ZnVuY3Rpb24gekooYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wO2Y9cjtyPXIrMTZ8MDtkPWYrOHwwO2M9Zis0fDA7ZT1mO2tbZD4+Ml09YTtrW2M+PjJdPWI7Yj1fRihrW2Q+PjJdfDApfDA7a1tlPj4yXT1iO2RvIGlmKCEoa1tlPj4yXXwwKSl7Yz1rW2M+PjJdfDA7aWYoIShsWyhrW2Q+PjJdfDApKzY2Pj4wXXwwKSl7a1tjPj4yXT0xO2JyZWFrfWVsc2V7a1tjPj4yXT0wO2Q9Q0coa1tkPj4yXXwwKXwwO2tbZT4+Ml09ZDticmVha319d2hpbGUoMCk7cj1mO3JldHVybiBrW2U+PjJdfDB9ZnVuY3Rpb24gQUooYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxsPTA7aj1yO3I9ciszMnwwO2Q9aisyMHwwO2w9aisxNnwwO2U9aisxMnwwO2c9ais4fDA7aD1qKzR8MDtmPWo7a1tkPj4yXT1hO2tbbD4+Ml09YjtrW2U+PjJdPWM7a1tnPj4yXT1rWyhrW2w+PjJdfDApKzE2Pj4yXTthPWtbZz4+Ml18MDtpZihpWyhrW2c+PjJdfDApKzU2Pj4wXXwwKXtsPUpMKGtbYSsyMD4+Ml18MCxrW2U+PjJdfDApfDA7a1toPj4yXT1sO2w9a1toPj4yXXwwO3I9ajtyZXR1cm4gbHwwfWtbZj4+Ml09a1thKzM2Pj4yXTtrWyhrW2c+PjJdfDApKzM2Pj4yXT1rWyhrW2Y+PjJdfDApKzQ+PjJdO2tbKGtbZj4+Ml18MCkrND4+Ml09MDtpZighKGtbKGtbZz4+Ml18MCkrMzYrND4+Ml18MCkpZEwoa1tkPj4yXXwwLGtbZj4+Ml18MCk7a1trW2U+PjJdPj4yXT0oKGtbKGtbZz4+Ml18MCkrMzY+PjJdfDApIT0wXjEpJjE7a1toPj4yXT0wO2w9a1toPj4yXXwwO3I9ajtyZXR1cm4gbHwwfWZ1bmN0aW9uIEJKKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxtPTAsbj0wLG89MCxwPTAscT0wLHM9MCx0PTAsdT0wO3Q9cjtyPXIrNjR8MDtmPXQrNTJ8MDt1PXQrNDh8MDtnPXQrNDR8MDtxPXQrNDB8MDtzPXQrMzZ8MDtwPXQrMzJ8MDtkPXQrMjh8MDtvPXQrMjR8MDtlPXQrMjB8MDtjPXQrMTZ8MDttPXQrMTJ8MDtoPXQrOHwwO2o9dCs0fDA7bj10O2tbdT4+Ml09YTtrW2c+PjJdPWI7a1tzPj4yXT0wO2tbcT4+Ml09a1soa1t1Pj4yXXwwKSsxNj4+Ml07YT0oa1soa1tnPj4yXXwwKSsxNj4+Ml18MCkrMXwwO2lmKChsWyhrWyhrW2c+PjJdfDApKzE2Pj4yXXwwKSsxPj4wXXwwfDApPDEyOClrW2M+PjJdPWxbYT4+MF07ZWxzZSBsRyhhLGMpfDA7ZG8gaWYoKGtbYz4+Ml18MCk+MCYoa1tjPj4yXXwwKTwxMCYoa1tjPj4yXXwwKSE9Nyl7dT0oa1txPj4yXXwwKSs2MHwwO2lbdT4+MF09KGxbdT4+MF18MCkmMX1lbHNle2lmKChrW2M+PjJdfDApPjEwPyhrW2M+PjJdJjF8MCkhPTA6MCl7dT0oa1txPj4yXXwwKSs2MHwwO2lbdT4+MF09KGxbdT4+MF18MCkmMjticmVha31pWyhrW3E+PjJdfDApKzYwPj4wXT0wfXdoaWxlKDApO2tbbz4+Ml09KGtbKGtbZz4+Ml18MCkrMTI+PjJdfDApKzg7Yz1rWyhrW2c+PjJdfDApKzEyPj4yXXwwO3U9a1soa1tnPj4yXXwwKSsxMj4+Ml18MDt1PWMrKHNHKHUsKCh1fDApPDApPDwzMT4+MzEpfDApfDA7a1tlPj4yXT11O2lmKGtbKGtbcT4+Ml18MCkrND4+Ml18MCl7YT1rW3E+PjJdfDA7aWYoa1soa1txPj4yXXwwKSszNis0Pj4yXXwwKXtpZihrW2ErNDg+PjJdfDApYT0oKGtbKGtbcT4+Ml18MCkrNDg+PjJdfDApKyhrW28+PjJdfDApfDApPihrWyhrW3E+PjJdfDApKzQ+PjJdfDApO2Vsc2UgYT0wO2tbZD4+Ml09YSYxfWVsc2V7aWYoKGtbYSszNis4Pj4yXXwwKTw9KGtbKGtbcT4+Ml18MCkrND4+Ml18MCkpaWYoKGtbKGtbcT4+Ml18MCkrMzYrOD4+Ml18MCk+KGtba1txPj4yXT4+Ml18MCkpYT0oYXYoKXwwKSE9MDtlbHNlIGE9MDtlbHNlIGE9MTtrW2Q+PjJdPWEmMX1pZihrW2Q+PjJdfDApe3U9dEwoa1txPj4yXXwwKXwwO2tbcz4+Ml09dTtrWyhrW3E+PjJdfDApKzM2Kzg+PjJdPTA7a1soa1txPj4yXXwwKSs0OD4+Ml09MH19dT0oa1txPj4yXXwwKSszNis4fDA7a1t1Pj4yXT0oa1t1Pj4yXXwwKSsoa1tlPj4yXXwwKTtpZigoa1tlPj4yXXwwKT4oa1soa1txPj4yXXwwKSs4Pj4yXXwwKSlrWyhrW3E+PjJdfDApKzg+PjJdPWtbZT4+Ml07ZG8gaWYoa1soa1txPj4yXXwwKSszNis0Pj4yXXwwKXtrW20+PjJdPShrWyhrW3E+PjJdfDApKzQ4Pj4yXXwwKSsoa1tvPj4yXXwwKTtkbyBpZigoa1ttPj4yXXwwKT4oa1soa1txPj4yXXwwKSs1Mj4+Ml18MCkpe2tbaj4+Ml09KGtbKGtbcT4+Ml18MCkrMzY+PjJdfDApLShrWyhrW3E+PjJdfDApKzM2KzQ+PjJdfDApO2tbbj4+Ml09a1soa1txPj4yXXwwKSs1Mj4+Ml08PDE7d2hpbGUoMSl7YT1rW24+PjJdfDA7aWYoKGtbbj4+Ml18MCk+PShrW20+PjJdfDApKWJyZWFrO2tbbj4+Ml09YTw8MX1pZigoYXwwKT4oa1soa1txPj4yXXwwKSs0Pj4yXXwwKSlrW24+PjJdPWtbKGtbcT4+Ml18MCkrND4+Ml07aWYoKGtbbj4+Ml18MCk8KGtbbT4+Ml18MCkpa1tuPj4yXT1rW20+PjJdO3U9a1tuPj4yXXwwO3U9bWcoa1soa1txPj4yXXwwKSszNis0Pj4yXXwwLHUsKCh1fDApPDApPDwzMT4+MzEpfDA7a1toPj4yXT11O2lmKGtbaD4+Ml18MCl7a1soa1txPj4yXXwwKSszNj4+Ml09KGtbaD4+Ml18MCkrKGtbaj4+Ml18MCk7a1soa1txPj4yXXwwKSszNis0Pj4yXT1rW2g+PjJdO2tbKGtbcT4+Ml18MCkrNTI+PjJdPWtbbj4+Ml07YnJlYWt9a1tmPj4yXT03O3U9a1tmPj4yXXwwO3I9dDtyZXR1cm4gdXwwfXdoaWxlKDApO2tbcD4+Ml09KGtbKGtbcT4+Ml18MCkrMzYrND4+Ml18MCkrKGtbKGtbcT4+Ml18MCkrNDg+PjJdfDApO3U9KGtbcT4+Ml18MCkrNDh8MDtrW3U+PjJdPShrW3U+PjJdfDApKygoa1tvPj4yXXwwKSs3Ji04KTtpZihrWyhrW3E+PjJdfDApKzM2Pj4yXXwwKWtbKGtbcD4+Ml18MCkrND4+Ml09KGtbKGtbcT4+Ml18MCkrMzY+PjJdfDApLShrWyhrW3E+PjJdfDApKzM2KzQ+PjJdfDApfWVsc2V7dT1rW28+PjJdfDA7dT1qZyh1LCgodXwwKTwwKTw8MzE+PjMxKXwwO2tbcD4+Ml09dTtpZihrW3A+PjJdfDApe2tbKGtbcD4+Ml18MCkrND4+Ml09a1soa1txPj4yXXwwKSszNj4+Ml07YnJlYWt9a1tmPj4yXT03O3U9a1tmPj4yXXwwO3I9dDtyZXR1cm4gdXwwfXdoaWxlKDApO2JTKChrW3A+PjJdfDApKzh8MCxrWyhrW2c+PjJdfDApKzE2Pj4yXXwwLGtbKGtbZz4+Ml18MCkrMTI+PjJdfDApfDA7a1trW3A+PjJdPj4yXT1rWyhrW2c+PjJdfDApKzEyPj4yXTtrWyhrW3E+PjJdfDApKzM2Pj4yXT1rW3A+PjJdO2tbZj4+Ml09a1tzPj4yXTt1PWtbZj4+Ml18MDtyPXQ7cmV0dXJuIHV8MH1mdW5jdGlvbiBDSihhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaT0wLGo9MCxtPTAsbj0wLG89MCxwPTAscT0wO249cjtyPXIrMTI4fDA7ZT1uKzExNnwwO3E9bisxMTJ8MDtwPW4rMTA4fDA7Zj1uKzEwNHwwO289bis4MHwwO2Q9bisxMDB8MDtpPW4rOTZ8MDtqPW4rOTJ8MDtnPW4rODh8MDtoPW4rNDB8MDttPW47a1txPj4yXT1hO2tbcD4+Ml09YjtrW2Y+PjJdPWM7Yj1vO2tbYj4+Ml09MDtrW2IrND4+Ml09MDtiPWxJKGtbcD4+Ml18MCl8MDtjPW87a1tjPj4yXT1iO2tbYys0Pj4yXT0wO3RHKGgsa1txPj4yXXwwLDApO2M9Wkkoa1twPj4yXXwwLDAsa1tvPj4yXXwwLDEsaCl8MDtrW2Q+PjJdPWM7aWYoa1tkPj4yXXwwKXtrW2U+PjJdPWtbZD4+Ml07cT1rW2U+PjJdfDA7cj1uO3JldHVybiBxfDB9YT1rW2grMTY+PjJdfDA7aWYoKGxba1toKzE2Pj4yXT4+MF18MHwwKTwxMjgpa1tpPj4yXT1sW2E+PjBdO2Vsc2UgbEcoYSxpKXwwO2lmKChrW2k+PjJdfDApPj4+MD49Mz8oa1tpPj4yXXwwKTw9KGtbaCsxMj4+Ml18MCk6MCl7YT0oa1toKzE2Pj4yXXwwKSsoKGtbaT4+Ml18MCktMSl8MDtpZigobFsoa1toKzE2Pj4yXXwwKSsoKGtbaT4+Ml18MCktMSk+PjBdfDB8MCk8MTI4KWtbaj4+Ml09bFthPj4wXTtlbHNlIGxHKGEsail8MDtpZighKChrW2o+PjJdfDApPj4+MDwxfChrW2o+PjJdfDApPj4+MD45fChrW2o+PjJdfDApPT03KT8oa1tnPj4yXT1sWzM1MDYxKyhrW2o+PjJdfDApPj4wXSwoa1toKzEyPj4yXXwwKT4+PjA+PSgoa1tpPj4yXXwwKSsoa1tnPj4yXXwwKXwwKT4+PjApOjApe25HKChrW2grMTY+PjJdfDApKygoa1toKzEyPj4yXXwwKS0oa1tnPj4yXXwwKSl8MCxrW2o+PjJdfDAsbSl8MDtvPW07cD1rW28rND4+Ml18MDtxPWtbZj4+Ml18MDtrW3E+PjJdPWtbbz4+Ml07a1txKzQ+PjJdPXA7ZmgoaCk7a1tlPj4yXT0wO3E9a1tlPj4yXXwwO3I9bjtyZXR1cm4gcXwwfX1maChoKTtxPV9qKDc0ODkwKXwwO2tbZT4+Ml09cTtxPWtbZT4+Ml18MDtyPW47cmV0dXJuIHF8MH1mdW5jdGlvbiBESihhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGk9MCxqPTAsbD0wLG09MCxuPTAsbz0wO249cjtyPXIrODB8MDtlPW4rNzJ8MDtmPW4rNjh8MDtvPW4rNjR8MDtnPW4rNjB8MDtoPW4rNTZ8MDtqPW4rNDB8MDttPW4rNTJ8MDtsPW4rNDh8MDtpPW47a1tmPj4yXT1hO2tbbz4+Ml09YjtrW2c+PjJdPWM7a1toPj4yXT1kO2E9ajtrW2E+PjJdPTA7a1thKzQ+PjJdPTA7a1tsPj4yXT1rWyhrW28+PjJdfDApKzE2Pj4yXTthPWxJKGtbbD4+Ml18MCl8MDtiPWo7a1tiPj4yXT1hO2tbYis0Pj4yXT0wO2I9ajthPWtbYis0Pj4yXXwwO2Q9ajtjPWtbZCs0Pj4yXXwwO2lmKChhfDApPDB8KGF8MCk9PTAmKGtbYj4+Ml18MCk+Pj4wPD0wfCgoY3wwKT4wfChjfDApPT0wJihrW2Q+PjJdfDApPj4+MD4yMTQ3NDgzNjQ3KSl7a1trW2g+PjJdPj4yXT0wO289X2ooNzQ5MjMpfDA7a1tlPj4yXT1vO289a1tlPj4yXXwwO3I9bjtyZXR1cm4gb3wwfXRHKGksa1tmPj4yXXwwLDApO289Wkkoa1tsPj4yXXwwLDAsa1tqPj4yXXwwLDEsaSl8MDtrW20+PjJdPW87aWYoa1ttPj4yXXwwKXtrW2U+PjJdPWtbbT4+Ml07bz1rW2U+PjJdfDA7cj1uO3JldHVybiBvfDB9ZWxzZXtvPWpHKGtbaSsxMj4+Ml18MCxrW2krMTY+PjJdfDAsa1tnPj4yXXwwKXwwO2tba1toPj4yXT4+Ml09bztmaChpKTtrW2U+PjJdPTA7bz1rW2U+PjJdfDA7cj1uO3JldHVybiBvfDB9cmV0dXJuIDB9ZnVuY3Rpb24gRUooYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wO2U9cjtyPXIrMTZ8MDtoPWUrMTJ8MDtnPWUrOHwwO2Y9ZSs0fDA7ZD1lO2tbaD4+Ml09YTtrW2c+PjJdPWI7a1tmPj4yXT1jO3dnKGtbaD4+Ml18MCk7Yz1zTChrW2g+PjJdfDAsa1tnPj4yXXwwLGtbZj4+Ml18MCl8MDtrW2Q+PjJdPWM7cj1lO3JldHVybiBrW2Q+PjJdfDB9XG5mdW5jdGlvbiB1RChhLGIsYyxkLGUsZixnLGgsbSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7bT1tfDA7dmFyIG49MCxvPTAscD0wLHE9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MCxFPTAsRj0wLEc9MCxIPTAsST0wLEo9MCxLPTA7Sz1yO3I9cis5NnwwO249Sys4NHwwO289Sys4MHwwO3A9Sys3NnwwO3E9Sys3MnwwO3M9Sys2OHwwO3Q9Sys2NHwwO3U9Sys2MHwwO3Y9Sys1NnwwO3c9Sys1MnwwO3g9Sys0OHwwO0o9Sys0NHwwO3o9Sys0MHwwO0M9SyszNnwwO0U9SyszMnwwO0I9SysyOHwwO0g9SysyNHwwO0Y9SysyMHwwO0k9SysxNnwwO0c9SysxMnwwO0E9Sys4fDA7eT1LKzR8MDtEPUs7a1tuPj4yXT1hO2tbbz4+Ml09YjtrW3A+PjJdPWM7a1txPj4yXT1kO2tbcz4+Ml09ZTtrW3Q+PjJdPWY7a1t1Pj4yXT1nO2tbdj4+Ml09aDtrW3c+PjJdPW07Zz1ueChrW24+PjJdfDApfDA7a1tKPj4yXT1nO2tbej4+Ml09KGtbKGtbbj4+Ml18MCkrNDA+PjJdfDApLTE7Zz1lQShrW0o+PjJdfDApfDA7a1tDPj4yXT1nO2lmKChrW3Y+PjJdfDApPDApc3goa1tKPj4yXXwwLDY1LGxbKGtbcz4+Ml18MCkrMjQ+PjBdfDAsa1tDPj4yXXwwKXwwO2tbeD4+Ml09MDt3aGlsZSgxKXtpZigoa1t4Pj4yXXwwKT49KGtbKGtbcz4+Ml18MCkrMjA+PjJdfDApKWJyZWFrO2tbRT4+Ml09KGtbKGtbdD4+Ml18MCkrKGtbeD4+Ml08PDIpPj4yXXwwKSsoa1t1Pj4yXXwwKSsxO3N4KGtbSj4+Ml18MCwzNCxrW0U+PjJdfDAsa1tDPj4yXXwwKXwwO2tbeD4+Ml09KGtbeD4+Ml18MCkrMX1kbyBpZighKGtbdz4+Ml18MCkpe2lmKCEoa1txPj4yXXwwKSl7ST1GeChrW24+PjJdfDApfDA7a1tIPj4yXT1JO3N4KGtbSj4+Ml18MCw4NSwoa1trW3Q+PjJdPj4yXXwwKSsxKyhrW3U+PjJdfDApfDAsa1tIPj4yXXwwKXwwO0k9c3goa1tKPj4yXXwwLDE3LGtbSD4+Ml18MCwwKXwwO2tbQj4+Ml09STtpZigoa1t2Pj4yXXwwKT09MT8oa1twPj4yXXwwKT09KGtba1tzPj4yXT4+Ml18MCk6MCl7dHgoa1tKPj4yXXwwLDM3LGtbdT4+Ml18MCxrW0M+PjJdfDAsa1tIPj4yXXwwKXwwO1RoKGtbSj4+Ml18MCwtMTEyKX1jQShrW24+PjJdfDAsa1t6Pj4yXXwwLGtbbz4+Ml18MCxrW3A+PjJdfDAsMTA0KTt0eChrW0o+PjJdfDAsMzMsa1t6Pj4yXXwwLDAsa1tIPj4yXXwwKXwwO2dBKGtbSj4+Ml18MCxrW0M+PjJdfDApfDA7ST1rW0o+PjJdfDA7aEEoSSwoR3goa1tKPj4yXXwwKXwwKS0yfDApO2hBKGtbSj4+Ml18MCxrW0I+PjJdfDApO0h4KGtbbj4+Ml18MCxrW0g+PjJdfDApO2JyZWFrfWtbRj4+Ml09a1soa1tzPj4yXXwwKSsyMD4+Ml07SD1NQShrW24+PjJdfDAsa1tGPj4yXXwwKXwwO2tbST4+Ml09SDtIPUZ4KGtbbj4+Ml18MCl8MDtrW0c+PjJdPUg7dHgoa1tKPj4yXXwwLDEwNCxrW3o+PjJdfDAsa1soa1txPj4yXXwwKSs0ND4+Ml18MCxrW28+PjJdfDApfDA7ZEEoa1tuPj4yXXwwLGtbcT4+Ml18MCk7a1t4Pj4yXT0wO3doaWxlKDEpe2lmKChrW3g+PjJdfDApPj0oa1tGPj4yXXwwKSlicmVhaztzeChrW0o+PjJdfDAsODQsKGtbKGtbdD4+Ml18MCkrKGtbeD4+Ml08PDIpPj4yXXwwKSsxKyhrW3U+PjJdfDApfDAsKGtbST4+Ml18MCkrKGtbeD4+Ml18MCl8MCl8MDtrW3g+PjJdPShrW3g+PjJdfDApKzF9aWYoKGtbdj4+Ml18MCk9PTE/KGtbcD4+Ml18MCk9PShrW2tbcz4+Ml0+PjJdfDApOjApe0g9R3goa1tKPj4yXXwwKXwwO2tbQT4+Ml09SCsoa1tGPj4yXXwwKSsxO2tbeD4+Ml09MDt3aGlsZSgxKXtpZigoa1t4Pj4yXXwwKT49KGtbRj4+Ml18MCkpYnJlYWs7a1t5Pj4yXT0oa1soa1t0Pj4yXXwwKSsoa1t4Pj4yXTw8Mik+PjJdfDApKzErKGtbdT4+Ml18MCk7a1tEPj4yXT0oalsoa1soa1txPj4yXXwwKSs0Pj4yXXwwKSsoa1t4Pj4yXTw8MSk+PjFdfDApKzErKGtbdT4+Ml18MCk7aWYoKGpbKGtbKGtbcT4+Ml18MCkrND4+Ml18MCkrKGtbeD4+Ml08PDEpPj4xXXwwKT09KGpbKGtbcD4+Ml18MCkrMzI+PjFdfDApKWtbRD4+Ml09a1t1Pj4yXTt0eChrW0o+PjJdfDAsMzYsa1t5Pj4yXXwwLGtbQT4+Ml18MCxrW0Q+PjJdfDApfDA7VGgoa1tKPj4yXXwwLDE2KTtrW3g+PjJdPShrW3g+PjJdfDApKzF9Z0Eoa1tKPj4yXXwwLGtbQz4+Ml18MCl8MH1kPWtbSj4+Ml18MDthPWtbST4+Ml18MDtjPWtbRj4+Ml18MDtnPWtbRz4+Ml18MDtIPU1DKGtba1tuPj4yXT4+Ml18MCxrW3E+PjJdfDApfDA7d3goZCw5OSxhLGMsZyxILGtbRj4+Ml18MCl8MDtTaChrW0o+PjJdfDAsMzEsa1t6Pj4yXXwwLGtbQz4+Ml18MCxrW0c+PjJdfDAsMCl8MDtIeChrW24+PjJdfDAsa1tHPj4yXXwwKTtQQShrW24+PjJdfDAsa1tJPj4yXXwwLGtbRj4+Ml18MCl9d2hpbGUoMCk7aWYoKCgoaVsoa1tzPj4yXXwwKSsyND4+MF18MCk9PTA/KGtbKGtba1tuPj4yXT4+Ml18MCkrMjQ+PjJdJjMzNTU0NDMyfDApPT0wOjApPyhrWyhrW24+PjJdfDApKzEyND4+Ml18MCk9PTA6MCk/KGlbKGtbbj4+Ml18MCkrMjA+PjBdfDApPT0wOjApe0RBKGtbbj4+Ml18MCw3ODcsMiwwLC0yLDQpO0g9a1tKPj4yXXwwO0k9a1tDPj4yXXwwO2lBKEgsSSk7ST1rW0o+PjJdfDA7Sj1rW3o+PjJdfDA7YUEoSSwxMTEsSil8MDtyPUs7cmV0dXJufWlmKChrW3Y+PjJdfDApPjA/KGxbKGtbcz4+Ml18MCkrMjQ+PjBdfDApPT0wOjApZHkoa1tuPj4yXXwwKTtzeChrW0o+PjJdfDAsMTQ0LGxbKGtbcz4+Ml18MCkrMjQ+PjBdfDAsa1t2Pj4yXXwwKXwwO0g9a1tKPj4yXXwwO0k9a1tDPj4yXXwwO2lBKEgsSSk7ST1rW0o+PjJdfDA7Sj1rW3o+PjJdfDA7YUEoSSwxMTEsSil8MDtyPUs7cmV0dXJufWZ1bmN0aW9uIHZEKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wO2c9cjtyPXIrMzJ8MDtjPWcrMTZ8MDtoPWcrMTJ8MDtkPWcrOHwwO2Y9Zys0fDA7ZT1nO2tbaD4+Ml09YTtrW2Q+PjJdPWI7Yj1rW2g+PjJdfDA7aWYoa1soa1toPj4yXXwwKSsxMjQ+PjJdfDApYj1rW2IrMTI0Pj4yXXwwO2tbZj4+Ml09YjtkbyBpZihrWyhrW2Y+PjJdfDApKzQ2OD4+Ml18MCl7a1tlPj4yXT1rW2tbKGtbZj4+Ml18MCkrNDY4Pj4yXT4+Ml07aWYoISgoa1tlPj4yXXwwKT09KGtbKGtbZD4+Ml18MCkrMjg+PjJdfDApPyhsWyhrW2Q+PjJdfDApKzI1Pj4wXXwwfDApPT03OjApKXtpZigoa1tlPj4yXXwwKSE9KGtbKGtbZD4+Ml18MCkrMjgrND4+Ml18MCkpYnJlYWs7aWYoKGxbKGtbZD4+Ml18MCkrMjUrMT4+MF18MHwwKSE9NylicmVha31rW2M+PjJdPTE7aD1rW2M+PjJdfDA7cj1nO3JldHVybiBofDB9d2hpbGUoMCk7a1tjPj4yXT0wO2g9a1tjPj4yXXwwO3I9ZztyZXR1cm4gaHwwfWZ1bmN0aW9uIHdEKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaT0wLG09MCxuPTAsbz0wLHA9MCxxPTAscz0wO3M9cjtyPXIrNDh8MDtlPXMrMzJ8MDtmPXMrMjh8MDtnPXMrMjR8MDtoPXMrMjB8MDtpPXMrMTZ8MDttPXMrMTJ8MDtwPXMrOHwwO249cys0fDA7bz1zO2tbZj4+Ml09YTtrW2c+PjJdPWI7a1toPj4yXT1jO2tbaT4+Ml09ZDtrW20+PjJdPTA7YTp3aGlsZSgxKXtpZigoa1ttPj4yXXwwKT49KGtbKGtbZz4+Ml18MCkrMjA+PjJdfDApKXtxPTE0O2JyZWFrfWtbcD4+Ml09a1soa1tnPj4yXXwwKSszNisoa1ttPj4yXTw8MykrND4+Ml07a1tuPj4yXT0wO3doaWxlKDEpe2lmKChrW24+PjJdfDApPj0oalsoa1tmPj4yXXwwKSszND4+MV18MCkpYnJlYWs7aWYoISgoa1soa1toPj4yXXwwKSsoa1tuPj4yXTw8Mik+PjJdfDApPDA/ISgoa1tpPj4yXXwwKSE9MD8oa1tuPj4yXXwwKT09KGpbKGtbZj4+Ml18MCkrMzI+PjFdfDApOjApOjApKXE9NztkbyBpZigocXwwKT09Nyl7cT0wO2tbbz4+Ml09KGtbKGtbZj4+Ml18MCkrND4+Ml18MCkrKGtbbj4+Ml08PDQpO2M9a1tvPj4yXXwwO2lmKGtbcD4+Ml18MClpZighKHNnKGtbYz4+Ml18MCxrW3A+PjJdfDApfDApKXtxPTk7YnJlYWsgYX1lbHNlIGJyZWFrO2Vsc2UgaWYobFtjKzE1Pj4wXSYxKXtxPTExO2JyZWFrIGF9ZWxzZSBicmVha313aGlsZSgwKTtrW24+PjJdPShrW24+PjJdfDApKzF9a1ttPj4yXT0oa1ttPj4yXXwwKSsxfWlmKChxfDApPT05KXtrW2U+PjJdPTE7cT1rW2U+PjJdfDA7cj1zO3JldHVybiBxfDB9ZWxzZSBpZigocXwwKT09MTEpe2tbZT4+Ml09MTtxPWtbZT4+Ml18MDtyPXM7cmV0dXJuIHF8MH1lbHNlIGlmKChxfDApPT0xNCl7a1tlPj4yXT0wO3E9a1tlPj4yXXwwO3I9cztyZXR1cm4gcXwwfXJldHVybiAwfWZ1bmN0aW9uIHhEKGEsYixjLGQsZSxmLGcsaCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7dmFyIGk9MCxuPTAsbz0wLHA9MCxxPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTAsRT0wLEY9MCxHPTAsSD0wLEk9MCxKPTAsSz0wLEw9MCxNPTAsTj0wLE89MDtPPXI7cj1yKzE0NHwwO2k9TysxMjh8MDtuPU8rMTI0fDA7bz1PKzEyMHwwO3A9TysxMTZ8MDtxPU8rMTEyfDA7cz1PKzEwOHwwO3Q9TysxMDR8MDt1PU8rMTAwfDA7dj1PKzk2fDA7dz1PKzkyfDA7Sz1PKzg4fDA7TD1PKzU2fDA7Sj1PKzQ4fDA7ej1PKzQ0fDA7TT1PKzQwfDA7RD1PKzM2fDA7SD1PKzMyfDA7Qj1PKzI4fDA7eD1PKzEzNHwwO049TysyNHwwO0Y9TysyMHwwO0U9TysxNnwwO0k9TysxMnwwO0M9Tys4fDA7QT1PKzR8MDtHPU87eT1PKzEzMnwwO2tbaT4+Ml09YTtrW24+PjJdPWI7a1tvPj4yXT1jO2tbcD4+Ml09ZDtrW3E+PjJdPWU7a1tzPj4yXT1mO2tbdD4+Ml09ZztrW3U+PjJdPWg7a1t2Pj4yXT1rW2tbaT4+Ml0+PjJdO2tbSz4+Ml09MDtrW3o+PjJdPTA7Zz1ueChrW2k+PjJdfDApfDA7a1tNPj4yXT1nO2lmKChrW3U+PjJdfDApPDApe2c9c3goa1tNPj4yXXwwLDY1LGxbKGtbcT4+Ml18MCkrMjQ+PjBdfDAsMCl8MDtrW3o+PjJdPWd9a1t3Pj4yXT0wO3doaWxlKDEpe2lmKChrW3c+PjJdfDApPj0oa1soa1txPj4yXXwwKSsyMD4+Ml18MCkpYnJlYWs7aWYoa1twPj4yXXwwKWY9alsoa1soa1twPj4yXXwwKSs0Pj4yXXwwKSsoa1t3Pj4yXTw8MSk+PjFdfDA7ZWxzZSBmPS0xO2pbeD4+MV09ZjtnPXlEKGtbaT4+Ml18MCxrW28+PjJdfDAsa1t0Pj4yXXwwLGpbeD4+MV18MCl8MDtrW0Q+PjJdPWc7aWYoa1tzPj4yXXwwKWY9a1soa1tzPj4yXXwwKSsoa1t3Pj4yXTw8Mik+PjJdfDA7ZWxzZSBmPWtbKGtbcT4+Ml18MCkrMzY+PjJdfDA7alt4Pj4xXT1mO2tbTj4+Ml09a1soa1soa1trW3E+PjJdPj4yXXwwKSs0Pj4yXXwwKSsoalt4Pj4xXTw8NCk+PjJdO2c9ZXcoa1t2Pj4yXXwwLDU1LGtbTj4+Ml18MCl8MDtrW0g+PjJdPWc7Zz1PdihrW2k+PjJdfDAsMzcsa1tEPj4yXXwwLGtbSD4+Ml18MCwwKXwwO2tbQj4+Ml09ZztnPUd6KGtbdj4+Ml18MCxrW0s+PjJdfDAsa1tCPj4yXXwwKXwwO2tbSz4+Ml09ZztrW3c+PjJdPShrW3c+PjJdfDApKzF9aWYoKGtbdT4+Ml18MCk+MD8oa1tvPj4yXXwwKT09KGtba1txPj4yXT4+Ml18MCk6MCl7aWYoIShsWyhrW28+PjJdfDApKzQyPj4wXSYzMikpe049eUQoa1tpPj4yXXwwLGtbbz4+Ml18MCxrW3Q+PjJdfDAsLTEpfDA7a1tFPj4yXT1OO049ekQoa1t2Pj4yXXwwLGtbbz4+Ml18MCxrWyhrW24+PjJdfDApKzgrNDQ+PjJdfDAsLTEpfDA7a1tJPj4yXT1OO049T3Yoa1tpPj4yXXwwLDM2LGtbRT4+Ml18MCxrW0k+PjJdfDAsMCl8MDtrW0Y+PjJdPU59ZWxzZXtrW0E+PjJdPTA7Tj1UaihrW28+PjJdfDApfDA7a1tHPj4yXT1OO2tbdz4+Ml09MDt3aGlsZSgxKXtpZigoa1t3Pj4yXXwwKT49KG1bKGtbRz4+Ml18MCkrNTA+PjFdfDApKWJyZWFrO2pbeT4+MV09alsoa1soa1twPj4yXXwwKSs0Pj4yXXwwKSsoa1t3Pj4yXTw8MSk+PjFdfDA7Tj15RChrW2k+PjJdfDAsa1tvPj4yXXwwLGtbdD4+Ml18MCxqW3k+PjFdfDApfDA7a1tFPj4yXT1OO049ekQoa1t2Pj4yXXwwLGtbbz4+Ml18MCxrWyhrW24+PjJdfDApKzgrNDQ+PjJdfDAsalt5Pj4xXXwwKXwwO2tbST4+Ml09TjtOPU92KGtbaT4+Ml18MCwzNyxrW0U+PjJdfDAsa1tJPj4yXXwwLDApfDA7a1tDPj4yXT1OO049R3ooa1t2Pj4yXXwwLGtbQT4+Ml18MCxrW0M+PjJdfDApfDA7a1tBPj4yXT1OO2tbdz4+Ml09KGtbdz4+Ml18MCkrMX1OPU92KGtbaT4+Ml18MCwxOSxrW0E+PjJdfDAsMCwwKXwwO2tbRj4+Ml09Tn1OPUd6KGtbdj4+Ml18MCxrW0s+PjJdfDAsa1tGPj4yXXwwKXwwO2tbSz4+Ml09Tn07a1tMPj4yXT0wO2tbTCs0Pj4yXT0wO2tbTCs4Pj4yXT0wO2tbTCsxMj4+Ml09MDtrW0wrMTY+PjJdPTA7a1tMKzIwPj4yXT0wO2tbTCsyND4+Ml09MDtrW0wrMjg+PjJdPTA7a1tMKzQ+PjJdPWtbbj4+Ml07a1tMPj4yXT1rW2k+PjJdO0t5KEwsa1tLPj4yXXwwKXwwO049QUQoa1tpPj4yXXwwLGtbbj4+Ml18MCxrW0s+PjJdfDAsMCwwLDAsMCl8MDtrW0o+PjJdPU47c3goa1tNPj4yXXwwLDE0NCxsWyhrW3E+PjJdfDApKzI0Pj4wXXwwLGtbdT4+Ml18MCl8MDtpZihrW0o+PjJdfDApQkQoa1tKPj4yXXwwKTtzdihrW3Y+PjJdfDAsa1tLPj4yXXwwKTtpZighKGtbej4+Ml18MCkpe3I9TztyZXR1cm59aEEoa1tNPj4yXXwwLGtbej4+Ml18MCk7cj1PO3JldHVybn1mdW5jdGlvbiB5RChhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGw9MCxtPTAsbj0wLG89MCxwPTA7cD1yO3I9ciszMnwwO2U9cCsyNHwwO2Y9cCsyMHwwO2c9cCsxNnwwO2g9cCsyOHwwO249cCsxMnwwO209cCs4fDA7bz1wKzR8MDtsPXA7a1tlPj4yXT1hO2tbZj4+Ml09YjtrW2c+PjJdPWM7altoPj4xXT1kO2tbbD4+Ml09a1trW2U+PjJdPj4yXTtjPWV3KGtbbD4+Ml18MCwxNTcsMCl8MDtrW24+PjJdPWM7aWYoIShrW24+PjJdfDApKXtvPWtbbj4+Ml18MDtyPXA7cmV0dXJuIG98MH1pZigoaltoPj4xXXwwKT49MD8oaltoPj4xXXwwKSE9KGpbKGtbZj4+Ml18MCkrMzI+PjFdfDApOjApe2tbbT4+Ml09KGtbKGtbZj4+Ml18MCkrND4+Ml18MCkrKGpbaD4+MV08PDQpO2tbKGtbbj4+Ml18MCkrMjg+PjJdPShrW2c+PjJdfDApKyhqW2g+PjFdfDApKzE7aVsoa1tuPj4yXXwwKSsxPj4wXT1pWyhrW20+PjJdfDApKzEzPj4wXXwwO2tbbz4+Ml09a1soa1ttPj4yXXwwKSs4Pj4yXTtpZighKGtbbz4+Ml18MCkpa1tvPj4yXT1rW2tbKGtbbD4+Ml18MCkrOD4+Ml0+PjJdO289ZXooa1tlPj4yXXwwLGtbbj4+Ml18MCxrW28+PjJdfDApfDA7a1tuPj4yXT1vO289a1tuPj4yXXwwO3I9cDtyZXR1cm4gb3wwfWtbKGtbbj4+Ml18MCkrMjg+PjJdPWtbZz4+Ml07aVsoa1tuPj4yXXwwKSsxPj4wXT02ODtvPWtbbj4+Ml18MDtyPXA7cmV0dXJuIG98MH1mdW5jdGlvbiB6RChhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGk9MCxsPTA7aT1yO3I9ciszMnwwO2w9aSsxMnwwO2U9aSs4fDA7Zj1pKzR8MDtnPWkrMTZ8MDtoPWk7a1tsPj4yXT1hO2tbZT4+Ml09YjtrW2Y+PjJdPWM7altnPj4xXT1kO2I9ZXcoa1tsPj4yXXwwLDE1MiwwKXwwO2tbaD4+Ml09YjtpZighKGtbaD4+Ml18MCkpe2w9a1toPj4yXXwwO3I9aTtyZXR1cm4gbHwwfWtbKGtbaD4+Ml18MCkrNDQ+PjJdPWtbZT4+Ml07a1soa1toPj4yXXwwKSsyOD4+Ml09a1tmPj4yXTtqWyhrW2g+PjJdfDApKzMyPj4xXT1qW2c+PjFdfDA7bD1rW2g+PjJdfDA7cj1pO3JldHVybiBsfDB9ZnVuY3Rpb24gQUQoYSxiLGMsZCxlLGYsZyl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7dmFyIGg9MCxuPTAsbz0wLHA9MCxxPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTAsRT0wLEY9MCxHPTAsSD0wLEk9MCxKPTAsSz0wLE09MCxOPTAsTz0wLFA9MCxRPTAsUj0wLFM9MCxUPTAsVT0wLFY9MCxXPTAsWD0wLFk9MCxaPTAsXz0wLCQ9MCxhYT0wLGJhPTAsY2E9MDtjYT1yO3I9cisxOTJ8MDtoPWNhKzI0fDA7cD1jYSsxODB8MDtxPWNhKzE3NnwwO3M9Y2ErMTcyfDA7bj1jYSsxNjh8MDt0PWNhKzE2NHwwO3U9Y2ErMTYwfDA7dj1jYSsxODR8MDt3PWNhKzE1NnwwO289Y2ErMTUyfDA7SD1jYSsxNDh8MDtXPWNhKzE0NHwwO189Y2ErMTQwfDA7ST1jYSsxNnwwO1k9Y2ErMTIwfDA7Uj1jYSsxMTZ8MDtQPWNhKzExMnwwO1E9Y2ErMTA4fDA7Rj1jYSsxMDR8MDtCPWNhKzEwMHwwO1g9Y2ErOTZ8MDt6PWNhKzE4NnwwO1o9Y2ErOHwwO1U9Y2ErOTJ8MDtNPWNhKzg4fDA7JD1jYSs4NHwwO0E9Y2ErODB8MDtTPWNhKzc2fDA7RD1jYSs3MnwwO1Q9Y2ErNjh8MDtWPWNhKzY0fDA7Qz1jYSs2MHwwO0o9Y2ErNTZ8MDt5PWNhO0c9Y2ErNTJ8MDtOPWNhKzQ4fDA7RT1jYSs0NHwwO0s9Y2ErNDB8MDtPPWNhKzM2fDA7eD1jYSszMnwwO2FhPWNhKzI4fDA7a1txPj4yXT1hO2tbcz4+Ml09YjtrW24+PjJdPWM7a1t0Pj4yXT1kO2tbdT4+Ml09ZTtqW3Y+PjFdPWY7a1t3Pj4yXT1nO2tbXz4+Ml09a1soa1txPj4yXXwwKSs4Pj4yXTtpW3o+PjBdPTA7a1tCPj4yXT1rW2tbcT4+Ml0+PjJdO2tbWT4+Ml09MDtrW1krND4+Ml09MDtrW1krOD4+Ml09MDtrW1krMTI+PjJdPTA7a1tZKzE2Pj4yXT0wO2lmKChrW3Q+PjJdfDApIT0wPyhrW2tbdD4+Ml0+PjJdfDApPj02NDowKWtbdD4+Ml09MDtrW1krOD4+Ml09a1t0Pj4yXTtpZihtWyhrW0I+PjJdfDApKzY0Pj4xXSYzMilqW3Y+PjFdPW1bdj4+MV0mLTI1NztpZigoa1trW3M+PjJdPj4yXXwwKT42NCl7YmE9a1txPj4yXXwwO2tbaD4+Ml09NjQ7T2goYmEsMzQ0MDQsaCk7a1twPj4yXT0wO2JhPWtbcD4+Ml18MDtyPWNhO3JldHVybiBiYXwwfWlmKG1bdj4+MV0mMzIpZz0xO2Vsc2UgZz1rW2tbcz4+Ml0+PjJdfDA7a1tIPj4yXT1nO2tbbz4+Ml09ODMyKygoKGtbSD4+Ml18MCktMXwwKSo4MHwwKSs3Ji04O2Y9ZHgoa1tCPj4yXXwwLChrW28+PjJdfDApKzcyfDAsMCl8MDtrW1c+PjJdPWY7YTpkbyBpZighKGlbKGtbQj4+Ml18MCkrNjk+PjBdfDApKXtrW2tbVz4+Ml0+PjJdPWtbcT4+Ml07a1soa1tXPj4yXXwwKSs0Pj4yXT1rW3M+PjJdO2tbKGtbVz4+Ml18MCkrOD4+Ml09a1t0Pj4yXTtrWyhrW1c+PjJdfDApKzEyPj4yXT1rW3U+PjJdO2tbKGtbVz4+Ml18MCkrMjArND4+Ml09LTE7a1soa1tXPj4yXXwwKSsyMD4+Ml09LTE7aVsoa1tXPj4yXXwwKSs0Mj4+MF09a1tIPj4yXTtnPWVBKGtbXz4+Ml18MCl8MDtrWyhrW1c+PjJdfDApKzI4Pj4yXT1nO2tbKGtbVz4+Ml18MCkrMzI+PjJdPWc7alsoa1tXPj4yXXwwKSs0MD4+MV09alt2Pj4xXXwwO2pbKGtbVz4+Ml18MCkrMTY+PjFdPWtbdz4+Ml07a1soa1tXPj4yXXwwKSszNj4+Ml09a1soa1txPj4yXXwwKSsxMzY+PjJdO2c9KGtbVz4+Ml18MCkrNDN8MDtlPWcrMzd8MDtkb3tpW2c+PjBdPTA7Zz1nKzF8MH13aGlsZSgoZ3wwKTwoZXwwKSk7ZFMoKGtbVz4+Ml18MCkrNzUyfDAsMCw3MisoKGtbSD4+Ml18MCkqODB8MCl8MCl8MDtrW1I+PjJdPShrW1c+PjJdfDApKzQ4ODtrW1k+PjJdPWtbVz4+Ml07a1tZKzQ+PjJdPShrW1c+PjJdfDApKzgwO2tbWSsxMj4+Ml09KGtbVz4+Ml18MCkrKGtbbz4+Ml18MCk7SUQoa1tZKzEyPj4yXXwwKTtrW2tbUj4+Ml0+PjJdPTA7TEQoKGtbVz4+Ml18MCkrODB8MCxrW1c+PjJdfDApO01EKChrW1c+PjJdfDApKzgwfDAsa1tuPj4yXXwwLDI4KTtrW0Y+PjJdPTA7d2hpbGUoMSl7Zz0oa1tIPj4yXXwwKT09MDtpZigoa1tGPj4yXXwwKT49KGtbKGtbWSs0Pj4yXXwwKSsxMj4+Ml18MCkpYnJlYWs7aWYoISghZz8oTEIoa1soa1soa1tZKzQ+PjJdfDApKzIwPj4yXXwwKSsoKGtbRj4+Ml18MCkqNDh8MCk+PjJdfDApfDApPT0wOjApKXtzQihrW3E+PjJdfDAsa1soa1soa1tZKzQ+PjJdfDApKzIwPj4yXXwwKSsoKGtbRj4+Ml18MCkqNDh8MCk+PjJdfDAsa1soa1tXPj4yXXwwKSszMj4+Ml18MCwxNik7bz0oa1soa1tZKzQ+PjJdfDApKzIwPj4yXXwwKSsoKGtbRj4+Ml18MCkqNDh8MCkrMTB8MDtqW28+PjFdPW1bbz4+MV18NH1rW0Y+PjJdPShrW0Y+PjJdfDApKzF9aWYoZyl7aWYoa1t0Pj4yXXwwKWlbKGtbVz4+Ml18MCkrNDM+PjBdPWtba1t0Pj4yXT4+Ml07aWYobVt2Pj4xXSYyNTYpaVsoa1tXPj4yXXwwKSs0Nz4+MF09MX1rW0Y+PjJdPTA7d2hpbGUoMSl7aWYoKGtbRj4+Ml18MCk+PShrW2tbcz4+Ml0+PjJdfDApKWJyZWFrO05EKGtbUj4+Ml18MCxrWyhrW3M+PjJdfDApKzgrKChrW0Y+PjJdfDApKjcyfDApKzQ0Pj4yXXwwKTtPRChrW3E+PjJdfDAsKGtbcz4+Ml18MCkrOCsoKGtbRj4+Ml18MCkqNzJ8MCl8MCwoa1tXPj4yXXwwKSs4MHwwKTtrW0Y+PjJdPShrW0Y+PjJdfDApKzF9UEQoa1tzPj4yXXwwLChrW1c+PjJdfDApKzgwfDApO2lmKCEoaVsoa1tCPj4yXXwwKSs2OT4+MF18MCkpe2RvIGlmKG1bdj4+MV0mMjU2KXtpZihRRChrW3E+PjJdfDAsa1tzPj4yXXwwLChrW1c+PjJdfDApKzgwfDAsa1t1Pj4yXXwwKXwwKXtpWyhrW1c+PjJdfDApKzQ3Pj4wXT0xO2JyZWFrfWlmKCEoa1t0Pj4yXXwwKSl7dD0oa1tXPj4yXXwwKSs0MHwwO2pbdD4+MV09bVt0Pj4xXXwxMjg7a1soa1tXPj4yXXwwKSs4Pj4yXT1rW3U+PjJdfX13aGlsZSgwKTtpZighKChrW0g+PjJdfDApPT0xPyhSRChZKXwwKSE9MDowKSl7dD1TRChZKXwwO2tbWD4+Ml09dDtpZihrW1g+PjJdfDApYnJlYWs7VEQoa1tXPj4yXXwwLDApfDA7aWYoaVsoa1tCPj4yXXwwKSs2OT4+MF18MClicmVhaztpZigoa1soa1tXPj4yXXwwKSs4Pj4yXXwwKSE9MD8oVEQoa1tXPj4yXXwwLChqWyhrW1c+PjJdfDApKzcyPj4xXXwwKSsxJjY1NTM1KXwwLChpWyhrW0I+PjJdfDApKzY5Pj4wXXwwKSE9MCk6MClicmVha31pZigoa1soa1tXPj4yXXwwKSs4Pj4yXXwwKT09MD8oa1soa1tCPj4yXXwwKSsyND4+Ml0mMTMxMDcyfDApIT0wOjApe1g9KGtbVz4+Ml18MCkrNjR8MDtrW1g+PjJdPS0xO2tbWCs0Pj4yXT0tMX1pZigoa1soa1txPj4yXXwwKSszNj4+Ml18MCk9PTA/KGxbKGtbQj4+Ml18MCkrNjk+PjBdfDApPT0wOjApe2I6ZG8gaWYoKChrW3U+PjJdfDApIT0wPyhsWyhrW1c+PjJdfDApKzQyPj4wXXwwKT49MjowKT8obVsoa1tCPj4yXXwwKSs2ND4+MV0mMTAyNHwwKT09MDowKXt1PVVEKGtbUj4+Ml18MCxrW3U+PjJdfDApfDA7WD1aO2tbWD4+Ml09dTtrW1grND4+Ml09TDtpZihrW1krOD4+Ml18MCl7dT1VRChrW1I+PjJdfDAsa1tZKzg+PjJdfDApfDA7dD1aO1I9a1t0KzQ+PjJdfEw7WD1aO2tbWD4+Ml09a1t0Pj4yXXx1O2tbWCs0Pj4yXT1SfXdoaWxlKDEpe2lmKChsWyhrW1c+PjJdfDApKzQyPj4wXXwwKTwyKWJyZWFrIGI7a1tRPj4yXT1rWyhrW1c+PjJdfDApKzc1MisoKChsWyhrW1c+PjJdfDApKzQyPj4wXXwwKS0xfDApKjgwfDApKzY0Pj4yXTtpZighKGxbKGtbKGtbVz4+Ml18MCkrND4+Ml18MCkrOCsoKGxbKGtbUT4+Ml18MCkrMTY+PjBdfDApKjcyfDApKzM2Pj4wXSY4KSlicmVhayBiO2lmKChtW3Y+PjFdJjI1NnwwKT09MD8oa1soa1tRPj4yXXwwKSszNj4+Ml0mNDA5NnwwKT09MDowKWJyZWFrIGI7Uj1aO1g9KGtbUT4+Ml18MCkrOHwwO2lmKChrW1I+PjJdJmtbWD4+Ml18MCkhPTA/MTooa1tSKzQ+PjJdJmtbWCs0Pj4yXXwwKSE9MClicmVhayBiO2tbTT4+Ml09KGtbKGtbWSs0Pj4yXXwwKSsyMD4+Ml18MCkrKChrWyhrW1krND4+Ml18MCkrMTI+PjJdfDApKjQ4fDApO2tbVT4+Ml09a1soa1tZKzQ+PjJdfDApKzIwPj4yXTt3aGlsZSgxKXtpZigoa1tVPj4yXXwwKT4+PjA+PShrW00+PjJdfDApPj4+MClicmVhaztSPShrW1U+PjJdfDApKzQwfDA7WD0oa1tRPj4yXXwwKSs4fDA7aWYoKChrW1I+PjJdJmtbWD4+Ml18MCkhPTA/MTooa1tSKzQ+PjJdJmtbWCs0Pj4yXXwwKSE9MCk/KGtbKGtba1tVPj4yXT4+Ml18MCkrND4+Ml0mMXwwKT09MDowKWJyZWFrO2tbVT4+Ml09KGtbVT4+Ml18MCkrNDh9aWYoKGtbVT4+Ml18MCk+Pj4wPChrW00+PjJdfDApPj4+MClicmVhayBiO1g9KGtbVz4+Ml18MCkrNDJ8MDtpW1g+PjBdPShpW1g+PjBdfDApKy0xPDwyND4+MjQ7a1tIPj4yXT0oa1tIPj4yXXwwKSstMX19d2hpbGUoMCk7Wj0oa1trW1c+PjJdPj4yXXwwKSsxMzZ8MDtrW1o+PjJdPShrW1o+PjJdfDApKyhqWyhrW1c+PjJdfDApKzcyPj4xXXwwKTtkbyBpZihtW3Y+PjFdJjQpe2tbJD4+Ml09a1soa1soa1tXPj4yXXwwKSs3NTIrNjQ+PjJdfDApKzM2Pj4yXTtrW0E+PjJdPShrWyQ+PjJdJjQwOTZ8MCkhPTAmMTtpZighKGtbQT4+Ml18MCkpe2lmKCEobVt2Pj4xXSY4KSlicmVhaztpZihrWyQ+PjJdJjEwMjQpYnJlYWt9aVsoa1tXPj4yXXwwKSs0NT4+MF09KGtbQT4+Ml18MCkhPTA/MToyO2lmKChsWyhrWyhrW3M+PjJdfDApKzgrMTY+PjJdfDApKzQyPj4wXSYzMnwwKT09MD8oa1skPj4yXSY2NHwwKSE9MDowKXtpZihtW3Y+PjFdJjgpaVt6Pj4wXT04O2tbKGtbKGtbVz4+Ml18MCkrNzUyKzY0Pj4yXXwwKSszNj4+Ml09a1skPj4yXSYtNjV9fXdoaWxlKDApO2tbRj4+Ml09MDtrW1A+PjJdPShrW1c+PjJdfDApKzc1Mjt3aGlsZSgxKXtpZigoa1tGPj4yXXwwKT49KGtbSD4+Ml18MCkpYnJlYWs7a1tUPj4yXT0oa1tzPj4yXXwwKSs4KygobFsoa1tQPj4yXXwwKSs0ND4+MF18MCkqNzJ8MCk7a1tTPj4yXT1rWyhrW1Q+PjJdfDApKzE2Pj4yXTskPVBoKGtbQj4+Ml18MCxrWyhrW1M+PjJdfDApKzY0Pj4yXXwwKXwwO2tbRD4+Ml09JDtrW1E+PjJdPWtbKGtbUD4+Ml18MCkrNjQ+PjJdO2M6ZG8gaWYoKGxbKGtbUz4+Ml18MCkrNDI+PjBdJjJ8MCk9PTA/KGtbKGtbUz4+Ml18MCkrMTI+PjJdfDApPT0wOjApe2lmKGtbKGtbUT4+Ml18MCkrMzY+PjJdJjEwMjQpeyQ9Y3koa1tCPj4yXXwwLGtbUz4+Ml18MCl8MDtrW1Y+PjJdPSQ7a1tDPj4yXT1rWyhrW1Q+PjJdfDApKzQ0Pj4yXTt3eChrW18+PjJdfDAsMTU1LGtbQz4+Ml18MCwwLDAsa1tWPj4yXXwwLC0xMCl8MDticmVha31pZihsWyhrW1M+PjJdfDApKzQyPj4wXSYxNilicmVhaztkbyBpZighKGtbKGtbUT4+Ml18MCkrMzY+PjJdJjY0KSl7aWYobVt2Pj4xXSYzMilicmVhaztrW0o+PjJdPTEwNDtpZihsWyhrW1c+PjJdfDApKzQ1Pj4wXXwwKXtrW0o+PjJdPTEwNTtrWyhrW1c+PjJdfDApKzIwPj4yXT1rWyhrW1Q+PjJdfDApKzQ0Pj4yXX1jQShrW3E+PjJdfDAsa1soa1tUPj4yXXwwKSs0ND4+Ml18MCxrW0Q+PjJdfDAsa1tTPj4yXXwwLGtbSj4+Ml18MCk7ZG8gaWYoIShsWyhrW1c+PjJdfDApKzQ1Pj4wXXwwKSl7aWYoKGpbKGtbUz4+Ml18MCkrMzQ+PjFdfDApPj02NClicmVhaztpZihsWyhrW1M+PjJdfDApKzQyPj4wXSYzMilicmVhaztZPShrW1Q+PjJdfDApKzU2fDA7Wj1rW1krND4+Ml18MDskPXk7a1skPj4yXT1rW1k+PjJdO2tbJCs0Pj4yXT1aO2tbRz4+Ml09MDt3aGlsZSgxKXskPXk7aWYoISgoa1skPj4yXXwwKSE9MHwoa1skKzQ+PjJdfDApIT0wKSlicmVhaztaPXk7Wj1hUyhrW1o+PjJdfDAsa1taKzQ+PjJdfDAsMSl8MDskPXk7a1skPj4yXT1aO2tbJCs0Pj4yXT1MO2tbRz4+Ml09KGtbRz4+Ml18MCkrMX1XaChrW18+PjJdfDAsLTEsa1tHPj4yXXwwLC0xNCl9d2hpbGUoMCk7VGgoa1tfPj4yXXwwLGlbej4+MF18MCk7YnJlYWsgY313aGlsZSgwKTtiQShrW3E+PjJdfDAsa1tEPj4yXXwwLGtbKGtbUz4+Ml18MCkrMjg+PjJdfDAsMCxrW2tbUz4+Ml0+PjJdfDApfXdoaWxlKDApO2RvIGlmKGtbKGtbUT4+Ml18MCkrMzY+PjJdJjUxMil7a1tOPj4yXT1rWyhrW1E+PjJdfDApKzI0Kzg+PjJdO2tbSz4+Ml09MTA0O2RvIGlmKCEobFsoa1tTPj4yXXwwKSs0Mj4+MF0mMzIpKWJhPTkzO2Vsc2V7aWYoKGlbKGtbTj4+Ml18MCkrNTU+PjBdJjN8MCkhPTIpe2JhPTkzO2JyZWFrfWlmKCEobVt2Pj4xXSYzMikpe2JhPTkzO2JyZWFrfWtbRT4+Ml09a1soa1tQPj4yXXwwKSs0Pj4yXTtrW0s+PjJdPTB9d2hpbGUoMCk7ZDpkbyBpZigoYmF8MCk9PTkzKXtiYT0wO2lmKCEobFsoa1tXPj4yXXwwKSs0NT4+MF18MCkpe2RvIGlmKGtbdz4+Ml18MCl7aWYoIShtW3Y+PjFdJjMyKSlicmVhaztrW0U+PjJdPWtbdz4+Ml07a1tLPj4yXT0xMDM7YnJlYWsgZH13aGlsZSgwKTtaPShrW3E+PjJdfDApKzQwfDA7JD1rW1o+PjJdfDA7a1taPj4yXT0kKzE7a1tFPj4yXT0kO2JyZWFrfWtbTz4+Ml09a1soa1soa1tUPj4yXXwwKSsxNj4+Ml18MCkrOD4+Ml07a1tFPj4yXT1rW3c+PjJdO3doaWxlKDEpe2lmKCEoa1tPPj4yXXwwKSlicmVhaztpZigoa1tPPj4yXXwwKT09KGtbTj4+Ml18MCkpYnJlYWs7a1tFPj4yXT0oa1tFPj4yXXwwKSsxO2tbTz4+Ml09a1soa1tPPj4yXXwwKSsyMD4+Ml19a1tLPj4yXT0xMDU7a1soa1tXPj4yXXwwKSsyMCs0Pj4yXT1rW0U+PjJdfXdoaWxlKDApO2tbKGtbUD4+Ml18MCkrOD4+Ml09a1tFPj4yXTtpZighKGtbSz4+Ml18MCkpYnJlYWs7dHgoa1tfPj4yXXwwLGtbSz4+Ml18MCxrW0U+PjJdfDAsa1soa1tOPj4yXXwwKSs0ND4+Ml18MCxrW0Q+PjJdfDApfDA7ZEEoa1txPj4yXXwwLGtbTj4+Ml18MCk7aWYoIShrWyhrW1E+PjJdfDApKzM2Pj4yXSYxNSkpYnJlYWs7aWYoa1soa1tRPj4yXXwwKSszNj4+Ml0mMzI3NzApYnJlYWs7aWYobVsoa1tXPj4yXXwwKSs0MD4+MV0mMSlicmVhaztUaChrW18+PjJdfDAsMil9d2hpbGUoMCk7aWYoKGtbRD4+Ml18MCk+PTApQ3goa1txPj4yXXwwLGtbRD4+Ml18MCk7a1tGPj4yXT0oa1tGPj4yXXwwKSsxO2tbUD4+Ml09KGtbUD4+Ml18MCkrODB9YmE9R3goa1tfPj4yXXwwKXwwO2tbKGtbVz4+Ml18MCkrNTI+PjJdPWJhO2lmKCEoaVsoa1tCPj4yXXwwKSs2OT4+MF18MCkpe2JhPUk7a1tiYT4+Ml09LTE7a1tiYSs0Pj4yXT0tMTtrW0Y+PjJdPTA7d2hpbGUoMSl7aWYoKGtbRj4+Ml18MCk+PShrW0g+PjJdfDApKWJyZWFrO2tbUD4+Ml09KGtbVz4+Ml18MCkrNzUyKygoa1tGPj4yXXwwKSo4MHwwKTtrW2FhPj4yXT1rWyhrWyhrW1A+PjJdfDApKzY0Pj4yXXwwKSszNj4+Ml07aWYoKGtbKGtbKGtbUD4+Ml18MCkrNjQ+PjJdfDApKzM2Pj4yXSYxNjM4NHwwKSE9MD8oYmE9SSxWRChrW3E+PjJdfDAsKGtbVz4+Ml18MCkrODB8MCwoa1tzPj4yXXwwKSs4KygobFsoa1tQPj4yXXwwKSs0ND4+MF18MCkqNzJ8MCl8MCxrW2JhPj4yXXwwLGtbYmErND4+Ml18MCxrW1A+PjJdfDApLChpWyhrW0I+PjJdfDApKzY5Pj4wXXwwKSE9MCk6MClicmVhayBhOyQ9V0Qoa1txPj4yXXwwLGtbcz4+Ml18MCxrW1A+PjJdfDAsa1tGPj4yXXwwLGxbKGtbUD4+Ml18MCkrNDQ+PjBdfDAsalt2Pj4xXXwwKXwwO2tbeD4+Ml09JDskPUd4KGtbXz4+Ml18MCl8MDtrWyhrW1A+PjJdfDApKzMyPj4yXT0kOyQ9STskPVhEKGtbVz4+Ml18MCxrW0Y+PjJdfDAsa1skPj4yXXwwLGtbJCs0Pj4yXXwwKXwwO2JhPUk7a1tiYT4+Ml09JDtrW2JhKzQ+PjJdPUw7a1soa1tXPj4yXXwwKSsyOD4+Ml09a1soa1tQPj4yXXwwKSsyND4+Ml07ZG8gaWYoKGtbYWE+PjJdJjgxOTJ8MCk9PTA/KG1bdj4+MV0mMzJ8MCkhPTA6MClicmVhazt3aGlsZSgwKTtrW0Y+PjJdPShrW0Y+PjJdfDApKzF9a1twPj4yXT1rW1c+PjJdO2JhPWtbcD4+Ml18MDtyPWNhO3JldHVybiBiYXwwfX19fWVsc2V7Ymcoa1tCPj4yXXwwLGtbVz4+Ml18MCk7a1tXPj4yXT0wfXdoaWxlKDApO2lmKGtbVz4+Ml18MCl7a1soa1txPj4yXXwwKSsxMzY+PjJdPWtbKGtbVz4+Ml18MCkrMzY+PjJdO0REKGtbQj4+Ml18MCxrW1c+PjJdfDApfWtbcD4+Ml09MDtiYT1rW3A+PjJdfDA7cj1jYTtyZXR1cm4gYmF8MH1mdW5jdGlvbiBCRChhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wLG49MCxvPTAscD0wLHE9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MCxFPTA7RT1yO3I9cis5NnwwO2c9RSs4MHwwO3Y9RSs3NnwwO0E9RSs3MnwwO249RSs2OHwwO3M9RSs2NHwwO3Q9RSs2MHwwO3o9RSs1NnwwO2g9RSs1MnwwO2M9RSs0OHwwO2U9RSs0NHwwO2Q9RSs0MHwwO2Y9RSszNnwwO289RSszMnwwO3A9RSsyOHwwO3U9RSsyNHwwO3E9RSsyMHwwO3k9RSsxNnwwO3g9RSsxMnwwO0I9RSs4fDA7Qz1FKzR8MDt3PUU7a1tnPj4yXT1hO2tbdj4+Ml09a1trW2c+PjJdPj4yXTtrW0E+PjJdPWtbKGtbdj4+Ml18MCkrOD4+Ml07a1t6Pj4yXT1rWyhrW2c+PjJdfDApKzQ+PjJdO2tbaD4+Ml09a1trW3Y+PjJdPj4yXTtPQyhrW3Y+PjJdfDApO2tbbj4+Ml09KGxbKGtbZz4+Ml18MCkrNDI+PjBdfDApLTE7d2hpbGUoMSl7aWYoKGtbbj4+Ml18MCk8MClicmVhaztrW3M+PjJdPShrW2c+PjJdfDApKzc1MisoKGtbbj4+Ml18MCkqODB8MCk7a1t0Pj4yXT1rWyhrW3M+PjJdfDApKzY0Pj4yXTtpQShrW0E+PjJdfDAsa1soa1tzPj4yXXwwKSsyND4+Ml18MCk7aWYoKGxbKGtbcz4+Ml18MCkrNDU+PjBdfDApIT0xNjEpe3R4KGtbQT4+Ml18MCxsWyhrW3M+PjJdfDApKzQ1Pj4wXXwwLGtbKGtbcz4+Ml18MCkrNDg+PjJdfDAsa1soa1tzPj4yXXwwKSs1Mj4+Ml18MCxsWyhrW3M+PjJdfDApKzQ2Pj4wXXwwKXwwO1RoKGtbQT4+Ml18MCxpWyhrW3M+PjJdfDApKzQ3Pj4wXXwwKX1hOmRvIGlmKChrWyhrW3Q+PjJdfDApKzM2Pj4yXSYyMDQ4fDApIT0wPyhrWyhrW3M+PjJdfDApKzU2Pj4yXXwwKT4wOjApe2lBKGtbQT4+Ml18MCxrWyhrW3M+PjJdfDApKzE2Pj4yXXwwKTtrW2Q+PjJdPWtbKGtbcz4+Ml18MCkrNTY+PjJdO2tbZT4+Ml09KGtbKGtbcz4+Ml18MCkrNTYrND4+Ml18MCkrKCgoa1tkPj4yXXwwKS0xfDApKjEyfDApO3doaWxlKDEpe2lmKChrW2Q+PjJdfDApPD0wKWJyZWFrIGE7aEEoa1tBPj4yXXwwLChrWyhrW2U+PjJdfDApKzQ+PjJdfDApKzF8MCk7aWYoKGxbKGtbZT4+Ml18MCkrOD4+MF18MCkhPTE2MSlzeChrW0E+PjJdfDAsbFsoa1tlPj4yXXwwKSs4Pj4wXXwwLGtba1tlPj4yXT4+Ml18MCxrWyhrW2U+PjJdfDApKzQ+PjJdfDApfDA7aEEoa1tBPj4yXXwwLChrWyhrW2U+PjJdfDApKzQ+PjJdfDApLTF8MCk7a1tkPj4yXT0oa1tkPj4yXXwwKSstMTtrW2U+PjJdPShrW2U+PjJdfDApKy0xMn19d2hpbGUoMCk7aUEoa1tBPj4yXXwwLGtbKGtbcz4+Ml18MCkrMTI+PjJdfDApO2lmKGtbKGtbcz4+Ml18MCkrMjA+PjJdfDApe2dBKGtbQT4+Ml18MCxrWyhrW3M+PjJdfDApKzIwPj4yXXwwKXwwO2hBKGtbQT4+Ml18MCxrWyhrW3M+PjJdfDApKzIwPj4yXXwwKTtoQShrW0E+PjJdfDAsKGtbKGtbcz4+Ml18MCkrMjA+PjJdfDApLTJ8MCl9aWYoa1soa1tzPj4yXXwwKSs0MD4+Ml18MClzeChrW0E+PjJdfDAsNjgsKGtbKGtbcz4+Ml18MCkrMzY+PjJdfDApPj4+MSxrWyhrW3M+PjJdfDApKzQwPj4yXXwwKXwwO2lmKGtba1tzPj4yXT4+Ml18MCl7a1tmPj4yXT1rWyhrW3Q+PjJdfDApKzM2Pj4yXTtiPWFBKGtbQT4+Ml18MCw2NixrW2tbcz4+Ml0+PjJdfDApfDA7a1tjPj4yXT1iO2lmKCEoa1tmPj4yXSY2NCkpYUEoa1tBPj4yXXwwLDEyNCxrWyhrW3o+PjJdfDApKzgrKChrW24+PjJdfDApKjcyfDApKzQ0Pj4yXXwwKXwwO2lmKCEoa1tmPj4yXSY1MTIpKXtpZigoa1tmPj4yXSY4MTkyfDApIT0wPyhrWyhrW3M+PjJdfDApKzU2Pj4yXXwwKSE9MDowKUQ9MjJ9ZWxzZSBEPTIyO2lmKChEfDApPT0yMil7RD0wO2FBKGtbQT4+Ml18MCwxMjQsa1soa1tzPj4yXXwwKSs4Pj4yXXwwKXwwfWE9a1tBPj4yXXwwO2I9a1tzPj4yXXwwO2lmKChsWyhrW3M+PjJdfDApKzQ1Pj4wXXwwKT09NzIpc3goYSwxNCxrW2IrNDg+PjJdfDAsa1soa1tzPj4yXXwwKSsyOD4+Ml18MCl8MDtlbHNlIGdBKGEsa1tiKzI4Pj4yXXwwKXwwO2hBKGtbQT4+Ml18MCxrW2M+PjJdfDApfWtbbj4+Ml09KGtbbj4+Ml18MCkrLTF9aUEoa1tBPj4yXXwwLGtbKGtbZz4+Ml18MCkrMzI+PjJdfDApO2tbbj4+Ml09MDtrW3M+PjJdPShrW2c+PjJdfDApKzc1Mjt3aGlsZSgxKXtpZigoa1tuPj4yXXwwKT49KGxbKGtbZz4+Ml18MCkrNDI+PjBdfDApKWJyZWFrO2tbcT4+Ml09MDtrW3k+PjJdPShrW3o+PjJdfDApKzgrKChsWyhrW3M+PjJdfDApKzQ0Pj4wXXwwKSo3MnwwKTtrW3g+PjJdPWtbKGtbeT4+Ml18MCkrMTY+PjJdO2tbdD4+Ml09a1soa1tzPj4yXXwwKSs2ND4+Ml07aWYoKChsWyhrW3k+PjJdfDApKzM2KzE+PjBdfDApPj4+NCYxfDApIT0wPyhpWyhrW2g+PjJdfDApKzY5Pj4wXXwwKT09MDowKUNEKGtbQT4+Ml18MCxrWyhrW3M+PjJdfDApKzMyPj4yXXwwLGtbKGtbcz4+Ml18MCkrND4+Ml18MCxrWyhrW3k+PjJdfDApKzMyPj4yXXwwLDApO2Vsc2UgRD0zMztiOmRvIGlmKChEfDApPT0zMyl7RD0wO2lmKCgobFsoa1t4Pj4yXXwwKSs0Mj4+MF0mMnwwKT09MD8oa1soa1t4Pj4yXXwwKSsxMj4+Ml18MCk9PTA6MCk/KG1bKGtbZz4+Ml18MCkrNDA+PjFdJjMyfDApPT0wOjApe2tbQj4+Ml09a1soa1t0Pj4yXXwwKSszNj4+Ml07aWYoKGxbKGtbZz4+Ml18MCkrNDU+PjBdfDApPT0wPyhrW0I+PjJdJjY0fDApPT0wOjApYUEoa1tBPj4yXXwwLDExMSxrWyhrW3k+PjJdfDApKzQ0Pj4yXXwwKXwwO2lmKCgoa1tCPj4yXSY1MTJ8MCkhPTA/KGtbQj4+Ml0mMTY2NDB8MCk9PTA6MCk/KGtbKGtbcz4+Ml18MCkrOD4+Ml18MCkhPShrWyhrW2c+PjJdfDApKzIwKzQ+PjJdfDApOjApYUEoa1tBPj4yXXwwLDExMSxrWyhrW3M+PjJdfDApKzg+PjJdfDApfDB9YT1rW3Q+PjJdfDA7aWYoIShrWyhrW3Q+PjJdfDApKzM2Pj4yXSY1NzYpKXtpZihrW2ErMzY+PjJdJjgxOTIpa1txPj4yXT1rWyhrW3M+PjJdfDApKzU2Pj4yXX1lbHNlIGtbcT4+Ml09a1thKzI0Kzg+PjJdO2lmKGtbcT4+Ml18MCl7aWYoKGxbKGtbZz4+Ml18MCkrNDU+PjBdfDApIT0wPyhsWyhrWyhrW3E+PjJdfDApKzEyPj4yXXwwKSs0Mj4+MF0mMzJ8MCk9PTA6MClicmVhaztpZighKGlbKGtbaD4+Ml18MCkrNjk+PjBdfDApKXtmPUd4KGtbQT4+Ml18MCl8MDtrW3A+PjJdPWY7a1tvPj4yXT1rWyhrW3M+PjJdfDApKzMyPj4yXTtmPW9BKGtbQT4+Ml18MCxrW28+PjJdfDApfDA7a1t1Pj4yXT1mO3doaWxlKDEpe2lmKChrW28+PjJdfDApPj0oa1twPj4yXXwwKSlicmVhayBiO2RvIGlmKChrWyhrW3U+PjJdfDApKzQ+PjJdfDApPT0oa1soa1tzPj4yXXwwKSs0Pj4yXXwwKSl7YT1rW3U+PjJdfDA7aWYoKGxba1t1Pj4yXT4+MF18MCkhPTk2KXtpZigobFthPj4wXXwwKSE9MTIzKWJyZWFrO2tbKGtbdT4+Ml18MCkrND4+Ml09a1soa1tzPj4yXXwwKSs4Pj4yXTtpW2tbdT4+Ml0+PjBdPS0xMjc7YnJlYWt9a1tDPj4yXT1rW2ErOD4+Ml07aWYobFsoa1t4Pj4yXXwwKSs0Mj4+MF0mMzIpe2Y9VGooa1t4Pj4yXXwwKXwwO2tbdz4+Ml09ZjtrW0M+PjJdPWpbKGtbKGtbdz4+Ml18MCkrND4+Ml18MCkrKGtbQz4+Ml08PDEpPj4xXX1mPShZQShrW3E+PjJdfDAsa1tDPj4yXSY2NTUzNSl8MCk8PDE2Pj4xNjtrW0M+PjJdPWY7aWYoKGtbQz4+Ml18MCk+PTApe2tbKGtbdT4+Ml18MCkrOD4+Ml09a1tDPj4yXTtrWyhrW3U+PjJdfDApKzQ+PjJdPWtbKGtbcz4+Ml18MCkrOD4+Ml19fXdoaWxlKDApO2tbbz4+Ml09KGtbbz4+Ml18MCkrMTtrW3U+PjJdPShrW3U+PjJdfDApKzIwfX19fXdoaWxlKDApO2tbbj4+Ml09KGtbbj4+Ml18MCkrMTtrW3M+PjJdPShrW3M+PjJdfDApKzgwfWtbKGtbdj4+Ml18MCkrMTM2Pj4yXT1rWyhrW2c+PjJdfDApKzM2Pj4yXTtERChrW2g+PjJdfDAsa1tnPj4yXXwwKTtyPUU7cmV0dXJufWZ1bmN0aW9uIENEKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxtPTAsbj0wLG89MCxwPTA7bz1yO3I9ciszMnwwO3A9bysyNHwwO2Y9bysyMHwwO2c9bysxNnwwO2g9bysxMnwwO2o9bys4fDA7bj1vKzR8MDttPW87a1twPj4yXT1hO2tbZj4+Ml09YjtrW2c+PjJdPWM7a1toPj4yXT1kO2tbaj4+Ml09ZTthPW9BKGtbcD4+Ml18MCxrW2Y+PjJdfDApfDA7a1tuPj4yXT1hO2E9R3goa1twPj4yXXwwKXwwO2tbbT4+Ml09YTt3aGlsZSgxKXtpZigoa1tmPj4yXXwwKT49KGtbbT4+Ml18MCkpYnJlYWs7ZG8gaWYoKGtbKGtbbj4+Ml18MCkrND4+Ml18MCk9PShrW2c+PjJdfDApKXtlPWtbbj4+Ml18MDtpZigobFtrW24+PjJdPj4wXXwwfDApPT05Nil7aVtlPj4wXT04NDtrWyhrW24+PjJdfDApKzQ+PjJdPShrWyhrW24+PjJdfDApKzg+PjJdfDApKyhrW2g+PjJdfDApO2tbKGtbbj4+Ml18MCkrOD4+Ml09a1soa1tuPj4yXXwwKSsxMj4+Ml07a1soa1tuPj4yXXwwKSsxMj4+Ml09MDticmVha31pZigobFtlPj4wXXwwfDApPT0xMjMpe2U9a1tuPj4yXXwwO2lmKGtbaj4+Ml18MCl7aVtlPj4wXT05MTtrWyhrW24+PjJdfDApKzQ+PjJdPWtbKGtbbj4+Ml18MCkrOD4+Ml07a1soa1tuPj4yXXwwKSs4Pj4yXT0xO2JyZWFrfWVsc2V7aVtlPj4wXT03OTtrWyhrW24+PjJdfDApKzQ+PjJdPTA7a1soa1tuPj4yXXwwKSsxMj4+Ml09MDticmVha319fXdoaWxlKDApO2tbZj4+Ml09KGtbZj4+Ml18MCkrMTtrW24+PjJdPShrW24+PjJdfDApKzIwfXI9bztyZXR1cm59ZnVuY3Rpb24gREQoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTA7aD1yO3I9ciszMnwwO2M9aCsxNnwwO2Q9aCsxMnwwO2U9aCs4fDA7Zz1oKzR8MDtmPWg7a1tjPj4yXT1hO2tbZD4+Ml09YjtpZighKGtbZD4+Ml18MCkpe3I9aDtyZXR1cm59a1tlPj4yXT0wO3doaWxlKDEpe2lmKChrW2U+PjJdfDApPj0obFsoa1tkPj4yXXwwKSs0Mj4+MF18MHwwKSlicmVhaztrW2c+PjJdPShrW2Q+PjJdfDApKzc1MisoKGtbZT4+Ml18MCkqODB8MCk7aWYoKGtbKGtbZz4+Ml18MCkrNjQ+PjJdfDApIT0wPyhrWyhrWyhrW2c+PjJdfDApKzY0Pj4yXXwwKSszNj4+Ml0mMjA0OHwwKSE9MDowKWJnKGtbYz4+Ml18MCxrWyhrW2c+PjJdfDApKzU2KzQ+PjJdfDApO2tbZT4+Ml09KGtbZT4+Ml18MCkrMX1FRCgoa1tkPj4yXXwwKSs4MHwwKTt3aGlsZSgxKXtpZighKGtbKGtbZD4+Ml18MCkrNTY+PjJdfDApKWJyZWFrO2tbZj4+Ml09a1soa1tkPj4yXXwwKSs1Nj4+Ml07a1soa1tkPj4yXXwwKSs1Nj4+Ml09a1soa1tmPj4yXXwwKSs1Mj4+Ml07RkQoa1tjPj4yXXwwLGtbZj4+Ml18MCl9Ymcoa1tjPj4yXXwwLGtbZD4+Ml18MCk7cj1oO3JldHVybn1mdW5jdGlvbiBFRChhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTAsZT0wLGY9MDtmPXI7cj1yKzE2fDA7Yj1mKzEyfDA7ZT1mKzh8MDtjPWYrNHwwO2Q9ZjtrW2I+PjJdPWE7a1tkPj4yXT1rW2tba1trW2I+PjJdPj4yXT4+Ml0+PjJdO2tbZT4+Ml09KGtbKGtbYj4+Ml18MCkrMTI+PjJdfDApLTE7a1tjPj4yXT1rWyhrW2I+PjJdfDApKzIwPj4yXTt3aGlsZSgxKXtpZigoa1tlPj4yXXwwKTwwKWJyZWFrO2lmKChtWyhrW2M+PjJdfDApKzEwPj4xXXwwKSYxKXN2KGtbZD4+Ml18MCxrW2tbYz4+Ml0+PjJdfDApO2lmKCEoKG1bKGtbYz4+Ml18MCkrMTA+PjFdfDApJjE2KSl7aWYoKG1bKGtbYz4+Ml18MCkrMTA+PjFdfDApJjMyKUtEKGtbZD4+Ml18MCxrWyhrW2M+PjJdfDApKzI4Pj4yXXwwKX1lbHNlIEpEKGtbZD4+Ml18MCxrWyhrW2M+PjJdfDApKzI4Pj4yXXwwKTtrW2U+PjJdPShrW2U+PjJdfDApKy0xO2tbYz4+Ml09KGtbYz4+Ml18MCkrNDh9aWYoKGtbKGtbYj4+Ml18MCkrMjA+PjJdfDApPT0oKGtbYj4+Ml18MCkrMjR8MCkpe3I9ZjtyZXR1cm59Ymcoa1tkPj4yXXwwLGtbKGtbYj4+Ml18MCkrMjA+PjJdfDApO3I9ZjtyZXR1cm59ZnVuY3Rpb24gRkQoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTA7Yz1yO3I9cisxNnwwO2U9Yys0fDA7ZD1jO2tbZT4+Ml09YTtrW2Q+PjJdPWI7R0Qoa1tlPj4yXXwwLGtbZD4+Ml18MCk7Ymcoa1tlPj4yXXwwLGtbZD4+Ml18MCk7cj1jO3JldHVybn1mdW5jdGlvbiBHRChhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MDtlPXI7cj1yKzE2fDA7Yz1lKzR8MDtkPWU7a1tjPj4yXT1hO2tbZD4+Ml09YjtpZigoa1soa1tkPj4yXXwwKSs0OD4+Ml18MCkhPSgoa1tkPj4yXXwwKSs1NnwwKSliZyhrW2M+PjJdfDAsa1soa1tkPj4yXXwwKSs0OD4+Ml18MCk7SEQoa1tjPj4yXXwwLGtbZD4+Ml18MCk7SUQoa1tkPj4yXXwwKTtyPWU7cmV0dXJufWZ1bmN0aW9uIEhEKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wO2U9cjtyPXIrMTZ8MDtjPWUrNHwwO2Q9ZTtrW2M+PjJdPWE7a1tkPj4yXT1iO2lmKCEoa1soa1tkPj4yXXwwKSszNj4+Ml0mMTc0MDgpKXtyPWU7cmV0dXJufWlmKChrWyhrW2Q+PjJdfDApKzM2Pj4yXSYxMDI0fDApIT0wPyhsWyhrW2Q+PjJdfDApKzI0KzQ+PjBdfDB8MCkhPTA6MCl7VWQoa1soa1tkPj4yXXwwKSsyNCs4Pj4yXXwwKTtpWyhrW2Q+PjJdfDApKzI0KzQ+PjBdPTA7a1soa1tkPj4yXXwwKSsyNCs4Pj4yXT0wO3I9ZTtyZXR1cm59aWYoIShrWyhrW2Q+PjJdfDApKzM2Pj4yXSYxNjM4NCkpe3I9ZTtyZXR1cm59aWYoIShrWyhrW2Q+PjJdfDApKzI0Kzg+PjJdfDApKXtyPWU7cmV0dXJufWJnKGtbYz4+Ml18MCxrWyhrWyhrW2Q+PjJdfDApKzI0Kzg+PjJdfDApKzE2Pj4yXXwwKTtiZyhrW2M+PjJdfDAsa1soa1tkPj4yXXwwKSsyNCs4Pj4yXXwwKTtrWyhrW2Q+PjJdfDApKzI0Kzg+PjJdPTA7cj1lO3JldHVybn1mdW5jdGlvbiBJRChhKXthPWF8MDt2YXIgYj0wLGM9MDtiPXI7cj1yKzE2fDA7Yz1iO2tbYz4+Ml09YTtrWyhrW2M+PjJdfDApKzQ4Pj4yXT0oa1tjPj4yXXwwKSs1NjtqWyhrW2M+PjJdfDApKzQwPj4xXT0wO2pbKGtbYz4+Ml18MCkrNDQ+PjFdPTM7a1soa1tjPj4yXXwwKSszNj4+Ml09MDtyPWI7cmV0dXJufWZ1bmN0aW9uIEpEKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wO2M9cjtyPXIrMTZ8MDtlPWMrNHwwO2Q9YztrW2U+PjJdPWE7a1tkPj4yXT1iO0VEKGtbZD4+Ml18MCk7Ymcoa1tlPj4yXXwwLGtbZD4+Ml18MCk7cj1jO3JldHVybn1mdW5jdGlvbiBLRChhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MDtjPXI7cj1yKzE2fDA7ZT1jKzR8MDtkPWM7a1tlPj4yXT1hO2tbZD4+Ml09YjtFRChrW2Q+PjJdfDApO2JnKGtbZT4+Ml18MCxrW2Q+PjJdfDApO3I9YztyZXR1cm59ZnVuY3Rpb24gTEQoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTA7Yz1yO3I9cisxNnwwO2Q9Yys0fDA7ZT1jO2tbZD4+Ml09YTtrW2U+PjJdPWI7a1trW2Q+PjJdPj4yXT1rW2U+PjJdO2tbKGtbZD4+Ml18MCkrND4+Ml09MDtrWyhrW2Q+PjJdfDApKzEyPj4yXT0wO2tbKGtbZD4+Ml18MCkrMTY+PjJdPTg7a1soa1tkPj4yXXwwKSsyMD4+Ml09KGtbZD4+Ml18MCkrMjQ7cj1jO3JldHVybn1mdW5jdGlvbiBNRChhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTA7aD1yO3I9cisxNnwwO2Q9aCs4fDA7ZT1oKzR8MDtmPWgrMTJ8MDtnPWg7a1tkPj4yXT1hO2tbZT4+Ml09YjtpW2Y+PjBdPWM7YT11eShrW2U+PjJdfDApfDA7a1tnPj4yXT1hO2lbKGtbZD4+Ml18MCkrOD4+MF09aVtmPj4wXXwwO2lmKCEoa1tnPj4yXXwwKSl7cj1oO3JldHVybn1jPWtbZD4+Ml18MDtpZigobFtrW2c+PjJdPj4wXXwwfDApIT0obFtmPj4wXXwwfDApKXtlRihjLGtbZT4+Ml18MCwwKXwwO3I9aDtyZXR1cm59ZWxzZXtNRChjLGtbKGtbZz4+Ml18MCkrMTI+PjJdfDAsaVtmPj4wXXwwKTtNRChrW2Q+PjJdfDAsa1soa1tnPj4yXXwwKSsxNj4+Ml18MCxpW2Y+PjBdfDApO3I9aDtyZXR1cm59fWZ1bmN0aW9uIE5EKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wO2M9cjtyPXIrMTZ8MDtkPWMrNHwwO2U9YztrW2Q+PjJdPWE7a1tlPj4yXT1iO2I9a1tlPj4yXXwwO2U9a1tkPj4yXXwwO2E9a1tlPj4yXXwwO2tbZT4+Ml09YSsxO2tbKGtbZD4+Ml18MCkrNCsoYTw8Mik+PjJdPWI7cj1jO3JldHVybn1mdW5jdGlvbiBPRChhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaT0wLG09MCxuPTAsbz0wLHA9MCxxPTA7cT1yO3I9cis0OHwwO3A9cTtkPXErNDB8MDtlPXErMzZ8MDtmPXErMzJ8MDtvPXErMjh8MDtuPXErMjR8MDtnPXErMjB8MDtoPXErMTZ8MDtpPXErMTJ8MDttPXErOHwwO2tbZD4+Ml09YTtrW2U+PjJdPWI7a1tmPj4yXT1jO2lmKCEoKGxbKGtbZT4+Ml18MCkrMzYrMT4+MF18MCk+Pj4yJjEpKXtyPXE7cmV0dXJufWtbbz4+Ml09a1soa1tlPj4yXXwwKSsxNj4+Ml07a1toPj4yXT1rWyhrW2U+PjJdfDApKzY0Pj4yXTtpZighKGtbaD4+Ml18MCkpe3I9cTtyZXR1cm59a1tnPj4yXT0wO2tbbj4+Ml09MDt3aGlsZSgxKXtpZigoa1tuPj4yXXwwKT49KGtba1toPj4yXT4+Ml18MCkpe2I9MTM7YnJlYWt9d2hpbGUoMSl7aWYoKGtbZz4+Ml18MCk8KGpbKGtbbz4+Ml18MCkrMzQ+PjFdfDApKWI9KGxbKGtbKGtbbz4+Ml18MCkrND4+Ml18MCkrKGtbZz4+Ml08PDQpKzE1Pj4wXSYyfDApPT0wO2Vsc2UgYj0wO2E9a1tnPj4yXXwwO2lmKCFiKWJyZWFrO2tbZz4+Ml09YSsxfWM9a1tkPj4yXXwwO2lmKChhfDApPj0oalsoa1tvPj4yXXwwKSszND4+MV18MCkpe2I9MTA7YnJlYWt9Yz10dyhrW2M+PjJdfDAsMTUyLDAsMCl8MDtrW2k+PjJdPWM7aWYoIShrW2k+PjJdfDApKXtiPTEzO2JyZWFrfWtbKGtbaT4+Ml18MCkrMjg+PjJdPWtbKGtbZT4+Ml18MCkrNDQ+PjJdO2E9a1tnPj4yXXwwO2tbZz4+Ml09YSsxO2pbKGtbaT4+Ml18MCkrMzI+PjFdPWE7a1soa1tpPj4yXXwwKSs0ND4+Ml09a1tvPj4yXTthPWtbZD4+Ml18MDtjPWtbaT4+Ml18MDtjPU92KGEsMzcsYyxTeShrW2tbZD4+Ml0+PjJdfDAsa1soa1soa1toPj4yXXwwKSs0Pj4yXXwwKSsoKGtbbj4+Ml18MCkqMjB8MCk+PjJdfDAsMCl8MCwwKXwwO2tbbT4+Ml09YztlRihrW2Y+PjJdfDAsa1ttPj4yXXwwLDEpfDA7a1tuPj4yXT0oa1tuPj4yXXwwKSsxfWlmKChifDApPT0xMCl7bj1rW24+PjJdfDA7a1twPj4yXT1rW2tbbz4+Ml0+PjJdO2tbcCs0Pj4yXT1uO09oKGMsMzQ4NDgscCk7cj1xO3JldHVybn1lbHNlIGlmKChifDApPT0xMyl7cj1xO3JldHVybn19ZnVuY3Rpb24gUEQoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wO2Y9cjtyPXIrMTZ8MDtjPWYrOHwwO2Q9Zis0fDA7ZT1mO2tbYz4+Ml09YTtrW2Q+PjJdPWI7a1tlPj4yXT0oa1soa1tkPj4yXXwwKSsxMj4+Ml18MCktMTt3aGlsZSgxKXtpZigoa1tlPj4yXXwwKTwwKWJyZWFrO2FGKGtbYz4+Ml18MCxrW2Q+PjJdfDAsa1tlPj4yXXwwKTtrW2U+PjJdPShrW2U+PjJdfDApKy0xfXI9ZjtyZXR1cm59ZnVuY3Rpb24gUUQoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxpPTAsbj0wLG89MCxwPTAscT0wLHM9MCx0PTAsdT0wO3U9cjtyPXIrNDh8MDtlPXUrMzZ8MDtmPXUrMzJ8MDtnPXUrMjh8MDtoPXUrMjR8MDtpPXUrMjB8MDtzPXUrMTZ8MDtxPXUrMTJ8MDtuPXUrOHwwO289dSs0fDA7cD11O2tbZj4+Ml09YTtrW2c+PjJdPWI7a1toPj4yXT1jO2tbaT4+Ml09ZDtpZigoa1trW2c+PjJdPj4yXXwwKSE9MSl7a1tlPj4yXT0wO3Q9a1tlPj4yXXwwO3I9dTtyZXR1cm4gdHwwfWtbbz4+Ml09a1soa1tnPj4yXXwwKSs4KzQ0Pj4yXTtrW3M+PjJdPWtbKGtbZz4+Ml18MCkrOCsxNj4+Ml07a1tuPj4yXT0wO3doaWxlKDEpe2lmKChrW24+PjJdfDApPj0oa1trW2k+PjJdPj4yXXwwKSlicmVhaztjPXV5KGtbKGtbKGtbaT4+Ml18MCkrND4+Ml18MCkrKChrW24+PjJdfDApKjIwfDApPj4yXXwwKXwwO2tbcD4+Ml09YztpZigoKGxba1twPj4yXT4+MF18MCk9PTE1Mj8oa1soa1twPj4yXXwwKSsyOD4+Ml18MCk9PShrW28+PjJdfDApOjApPyhqWyhrW3A+PjJdfDApKzMyPj4xXXwwKTwwOjApe3Q9ODticmVha31rW24+PjJdPShrW24+PjJdfDApKzF9aWYoKHR8MCk9PTgpe2tbZT4+Ml09MTt0PWtbZT4+Ml18MDtyPXU7cmV0dXJuIHR8MH1rW3E+PjJdPWtbKGtbcz4+Ml18MCkrOD4+Ml07d2hpbGUoMSl7aWYoIShrW3E+PjJdfDApKXt0PTIyO2JyZWFrfWlmKGxbKGtbcT4+Ml18MCkrNTQ+PjBdfDApe2tbbj4+Ml09MDt3aGlsZSgxKXtpZigoa1tuPj4yXXwwKT49KG1bKGtbcT4+Ml18MCkrNTA+PjFdfDApKWJyZWFrO2lmKCEoaEUoa1toPj4yXXwwLGtbbz4+Ml18MCxrW24+PjJdfDAsLTEsLTEsMixrW3E+PjJdfDApfDApKXtpZigoJEUoa1tmPj4yXXwwLGtbaT4+Ml18MCxrW28+PjJdfDAsa1txPj4yXXwwLGtbbj4+Ml18MCl8MCk8MClicmVhaztpZighKFJFKGtbcT4+Ml18MCxrW24+PjJdfDApfDApKWJyZWFrfWtbbj4+Ml09KGtbbj4+Ml18MCkrMX1pZigoa1tuPj4yXXwwKT09KG1bKGtbcT4+Ml18MCkrNTA+PjFdfDApKXt0PTIwO2JyZWFrfX1rW3E+PjJdPWtbKGtbcT4+Ml18MCkrMjA+PjJdfWlmKCh0fDApPT0yMCl7a1tlPj4yXT0xO3Q9a1tlPj4yXXwwO3I9dTtyZXR1cm4gdHwwfWVsc2UgaWYoKHR8MCk9PTIyKXtrW2U+PjJdPTA7dD1rW2U+PjJdfDA7cj11O3JldHVybiB0fDB9cmV0dXJuIDB9ZnVuY3Rpb24gUkQoYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wLGU9MCxmPTAsZz0wLGg9MCxuPTAsbz0wLHA9MCxxPTAscz0wLHQ9MDt0PXI7cj1yKzQ4fDA7Yj10KzQ0fDA7Yz10KzQwfDA7cz10KzM2fDA7aD10KzMyfDA7cT10KzI4fDA7cD10KzI0fDA7bj10KzIwfDA7ZD10KzE2fDA7ZT10KzEyfDA7bz10Kzh8MDtnPXQrNHwwO2Y9dDtrW2M+PjJdPWE7a1tzPj4yXT1rW2tbYz4+Ml0+PjJdO2lmKChtWyhrW3M+PjJdfDApKzQwPj4xXXwwKSYzMil7a1tiPj4yXT0wO3M9a1tiPj4yXXwwO3I9dDtyZXR1cm4gc3wwfWtbaD4+Ml09KGtbKGtbcz4+Ml18MCkrND4+Ml18MCkrODtrW28+PjJdPWtbKGtbaD4+Ml18MCkrMTY+PjJdO2lmKChsWyhrW28+PjJdfDApKzQyPj4wXXwwKSYxNil7a1tiPj4yXT0wO3M9a1tiPj4yXXwwO3I9dDtyZXR1cm4gc3wwfWlmKChsWyhrW2g+PjJdfDApKzM2KzE+PjBdfDApPj4+MSYxKXtrW2I+PjJdPTA7cz1rW2I+PjJdfDA7cj10O3JldHVybiBzfDB9a1tkPj4yXT1rWyhrW2g+PjJdfDApKzQ0Pj4yXTtrW3E+PjJdPShrW3M+PjJdfDApKzgwO2tbbj4+Ml09a1soa1tjPj4yXXwwKSsxMj4+Ml07a1soa1tuPj4yXXwwKSszNj4+Ml09MDtqWyhrW24+PjJdfDApKzQyPj4xXT0wO2E9aEUoa1txPj4yXXwwLGtbZD4+Ml18MCwtMSwwLDAsMTMwLDApfDA7a1twPj4yXT1hO2E6ZG8gaWYoa1twPj4yXXwwKXtrWyhrW24+PjJdfDApKzM2Pj4yXT00MzUzO2tba1soa1tuPj4yXXwwKSs0OD4+Ml0+PjJdPWtbcD4+Ml07alsoa1tuPj4yXXwwKSs0MD4+MV09MTtqWyhrW24+PjJdfDApKzI0Pj4xXT0xO2pbKGtbbj4+Ml18MCkrMjA+PjFdPTMzfWVsc2V7a1tnPj4yXT1rWyhrW28+PjJdfDApKzg+PjJdO3doaWxlKDEpe2lmKCEoa1tnPj4yXXwwKSlicmVhayBhO2lmKCgobFsoa1tnPj4yXXwwKSs1ND4+MF18MHwwKSE9MD8oa1soa1tnPj4yXXwwKSszNj4+Ml18MCk9PTA6MCk/KG1bKGtbZz4+Ml18MCkrNTA+PjFdfDB8MCk8PTM6MCl7a1tmPj4yXT0oKGxbKGtbZz4+Ml18MCkrNTU+PjBdfDApPj4+MyYxfDApIT0wPzEzMDoyO2tbZT4+Ml09MDt3aGlsZSgxKXtpZigoa1tlPj4yXXwwKT49KG1bKGtbZz4+Ml18MCkrNTA+PjFdfDB8MCkpYnJlYWs7bz1oRShrW3E+PjJdfDAsa1tkPj4yXXwwLGtbZT4+Ml18MCwwLDAsa1tmPj4yXXwwLGtbZz4+Ml18MCl8MDtrW3A+PjJdPW87aWYoIShrW3A+PjJdfDApKWJyZWFrO2tbKGtbKGtbbj4+Ml18MCkrNDg+PjJdfDApKyhrW2U+PjJdPDwyKT4+Ml09a1twPj4yXTtrW2U+PjJdPShrW2U+PjJdfDApKzF9aWYoKGtbZT4+Ml18MCk9PShtWyhrW2c+PjJdfDApKzUwPj4xXXwwfDApKWJyZWFrfWtbZz4+Ml09a1soa1tnPj4yXXwwKSsyMD4+Ml19a1soa1tuPj4yXXwwKSszNj4+Ml09NDYwOTtpZighKCgobFsoa1tnPj4yXXwwKSs1NT4+MF18MCk+Pj41JjF8MCk9PTA/KHE9KGtbaD4+Ml18MCkrNTZ8MCxvPWtbcT4+Ml18MCxxPWtbcSs0Pj4yXXwwLHA9T0Uoa1tnPj4yXXwwKXwwLCEoKG8mfnB8MCk9PTAmKHEmfkx8MCk9PTApKTowKSl7cT0oa1tuPj4yXXwwKSszNnwwO2tbcT4+Ml09a1txPj4yXXw2NH1qWyhrW24+PjJdfDApKzQwPj4xXT1rW2U+PjJdO2pbKGtbbj4+Ml18MCkrMjQ+PjFdPWtbZT4+Ml07a1soa1tuPj4yXXwwKSsyNCs4Pj4yXT1rW2c+PjJdO2pbKGtbbj4+Ml18MCkrMjA+PjFdPTM5fXdoaWxlKDApO2lmKCEoa1soa1tuPj4yXXwwKSszNj4+Ml18MCkpe2tbYj4+Ml09MDtzPWtbYj4+Ml18MDtyPXQ7cmV0dXJuIHN8MH1qWyhrW24+PjJdfDApKzIyPj4xXT0xO2tbKGtbcz4+Ml18MCkrNzUyKzY0Pj4yXT1rW24+PjJdO3A9WUQoKGtbcz4+Ml18MCkrNDg4fDAsa1tkPj4yXXwwKXwwO3E9KGtbbj4+Ml18MCkrOHwwO2tbcT4+Ml09cDtrW3ErND4+Ml09TDtrWyhrW3M+PjJdfDApKzc1Mis0Pj4yXT1rW2Q+PjJdO2pbKGtbcz4+Ml18MCkrNzI+PjFdPTE7aWYoa1soa1tzPj4yXXwwKSs4Pj4yXXwwKWlbKGtbcz4+Ml18MCkrNDM+PjBdPWtba1soa1tzPj4yXXwwKSs4Pj4yXT4+Ml07aWYoKG1bKGtbcz4+Ml18MCkrNDA+PjFdfDApJjI1NilpWyhrW3M+PjJdfDApKzQ3Pj4wXT0xO2tbYj4+Ml09MTtzPWtbYj4+Ml18MDtyPXQ7cmV0dXJuIHN8MH1mdW5jdGlvbiBTRChhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxtPTAsbj0wLG89MCxwPTAscT0wLHM9MCx0PTAsdT0wLHY9MDtzPXI7cj1yKzgwfDA7Yj1zKzYwfDA7bT1zKzU2fDA7ZD1zKzE2fDA7ZT1zKzh8MDtjPXMrNTJ8MDt0PXMrNDh8MDtqPXMrNDR8MDtoPXMrNDB8MDtvPXMrMzZ8MDtxPXMrMzJ8MDtwPXMrMjh8MDtuPXMrNjR8MDtmPXM7Zz1zKzI0fDA7a1tiPj4yXT1hO2tbbT4+Ml09a1trW2I+PjJdPj4yXTthPWQ7a1thPj4yXT0wO2tbYSs0Pj4yXT0wO2E9ZTtrW2E+PjJdPTA7a1thKzQ+PjJdPTA7a1t0Pj4yXT1rWyhrW20+PjJdfDApKzQ+PjJdO2tbaD4+Ml09KGtbdD4+Ml18MCkrOCsoKGxbKGtbbT4+Ml18MCkrNDI+PjBdfDApKjcyfDApO2tbbz4+Ml09a1trW2tbbT4+Ml0+PjJdPj4yXTtrW3E+PjJdPTA7aVtuPj4wXT0wO2tbcD4+Ml09a1soa1tiPj4yXXwwKSsxMj4+Ml07SUQoa1twPj4yXXwwKTtrW2M+PjJdPTA7a1tqPj4yXT0oa1t0Pj4yXXwwKSs4O3doaWxlKDEpe2lmKChrW2o+PjJdfDApPj4+MD49KGtbaD4+Ml18MCk+Pj4wKXtiPTE5O2JyZWFrfWE9ZjtrW2E+PjJdPTA7a1thKzQ+PjJdPTA7aVsoa1twPj4yXXwwKSsxNj4+MF09a1tjPj4yXTthPVlEKChrW20+PjJdfDApKzQ4OHwwLGtbKGtbaj4+Ml18MCkrNDQ+PjJdfDApfDA7dD0oa1twPj4yXXwwKSs4fDA7a1t0Pj4yXT1hO2tbdCs0Pj4yXT1MO2lmKChsWyhrW2o+PjJdfDApKzM2Pj4wXXwwfChsW24+PjBdfDApKSYxMCl7dT1lO2E9a1t1KzQ+PjJdfDA7dD1kO2tbdD4+Ml09a1t1Pj4yXTtrW3QrND4+Ml09YX1pW24+PjBdPWlbKGtbaj4+Ml18MCkrMzY+PjBdfDA7aWYoKGxbKGtbKGtbaj4+Ml18MCkrMTY+PjJdfDApKzQyPj4wXXwwKSYxNil7a1tnPj4yXT0oa1tqPj4yXXwwKSs3Mjt3aGlsZSgxKXtpZigoa1tnPj4yXXwwKT4+PjA+PShrW2g+PjJdfDApPj4+MClicmVhazt1PWY7aWYoISghKChrW3U+PjJdfDApIT0wfChrW3UrND4+Ml18MCkhPTApPygobFsoa1tnPj4yXXwwKSszNj4+MF18MCkmMTB8MCk9PTA6MCkpe2E9WUQoKGtbbT4+Ml18MCkrNDg4fDAsa1soa1tnPj4yXXwwKSs0ND4+Ml18MCl8MDt2PWY7dD1rW3YrND4+Ml18TDt1PWY7a1t1Pj4yXT1rW3Y+PjJdfGE7a1t1KzQ+PjJdPXR9a1tnPj4yXT0oa1tnPj4yXXwwKSs3Mn11PWQ7dj1mO3Y9QkUoa1tiPj4yXXwwLGtbdT4+Ml18MCxrW3UrND4+Ml18MCxrW3Y+PjJdfDAsa1t2KzQ+PjJdfDApfDA7a1txPj4yXT12fWVsc2V7dj1kO3Y9Q0Uoa1tiPj4yXXwwLGtbdj4+Ml18MCxrW3YrND4+Ml18MCl8MDtrW3E+PjJdPXZ9aWYoIShrW3E+PjJdfDApKXt1PWQ7dj1mO3Y9REUoa1tiPj4yXXwwLGtbdT4+Ml18MCxrW3UrND4+Ml18MCxrW3Y+PjJdfDAsa1t2KzQ+PjJdfDApfDA7a1txPj4yXT12fXQ9KGtbcD4+Ml18MCkrOHwwO2E9ZTt1PWtbYSs0Pj4yXXxrW3QrND4+Ml07dj1lO2tbdj4+Ml09a1thPj4yXXxrW3Q+PjJdO2tbdis0Pj4yXT11O2lmKGtbcT4+Ml18MCl7Yj0xOTticmVha31pZihsWyhrW28+PjJdfDApKzY5Pj4wXXwwKXtiPTE5O2JyZWFrfWtbYz4+Ml09KGtbYz4+Ml18MCkrMTtrW2o+PjJdPShrW2o+PjJdfDApKzcyfWlmKChifDApPT0xOSl7R0Qoa1tvPj4yXXwwLGtbcD4+Ml18MCk7cj1zO3JldHVybiBrW3E+PjJdfDB9cmV0dXJuIDB9ZnVuY3Rpb24gVEQoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTAsbj0wLG89MCxwPTAscT0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wLEU9MCxGPTAsRz0wLEg9MCxJPTAsSj0wLEs9MCxMPTAsTT0wLE49MCxPPTAsUD0wLFE9MCxSPTAsUz0wLFQ9MCxVPTAsVj0wLFc9MCxYPTA7WD1yO3I9cisxNzZ8MDtFPVgrNDB8MDtNPVgrMTQ4fDA7Tj1YKzE0NHwwO0c9WCsxNjJ8MDtxPVgrMTQwfDA7UT1YKzEzNnwwO3o9WCsxMzJ8MDtPPVgrMTI4fDA7SD1YKzEyNHwwO2g9WCsxMjB8MDtvPVgrMTE2fDA7dD1YKzExMnwwO3c9WCsxMDh8MDtzPVgrMTYwfDA7dT1YKzE1OHwwO3k9WCsxMDR8MDt2PVgrMTAwfDA7ZT1YKzk2fDA7Zz1YKzkyfDA7Uz1YKzg4fDA7QT1YKzg0fDA7Sz1YKzgwfDA7ZD1YKzc2fDA7Zj1YKzcyfDA7VD1YKzY4fDA7Yz1YKzY0fDA7eD1YKzE1NnwwO0I9WCsxNTR8MDtDPVgrMTUyfDA7bj1YKzE2NHwwO3A9WCszMnwwO0Q9WCsyNHwwO0o9WCs2MHwwO0k9WCsxNnwwO0w9WCs1NnwwO1c9WCs1MnwwO1A9WCs4fDA7VT1YKzQ4fDA7Vj1YO1I9WCs0NHwwO2tbTj4+Ml09YTtqW0c+PjFdPWI7a1t0Pj4yXT0wO2pbcz4+MV09MDtqW3U+PjFdPTA7a1tmPj4yXT0wO2tbej4+Ml09a1trW04+PjJdPj4yXTtrW08+PjJdPWtba1t6Pj4yXT4+Ml07a1tRPj4yXT1sWyhrW04+PjJdfDApKzQyPj4wXTtpZigoa1tRPj4yXXwwKTw9MSliPTE7ZWxzZSBiPShrW1E+PjJdfDApPT0yPzU6MTA7a1txPj4yXT1iO2lmKChrWyhrW04+PjJdfDApKzg+PjJdfDApIT0wPyhqW0c+PjFdfDApIT0wOjApa1t3Pj4yXT1rW2tbKGtbTj4+Ml18MCkrOD4+Ml0+PjJdO2Vsc2Uga1t3Pj4yXT0wO2E9KGhhKDMyKyhrW1E+PjJdPDwyKXwwLGtbcT4+Ml18MCl8MCk8PDE7a1tjPj4yXT1hO2tbYz4+Ml09KGtbYz4+Ml18MCkrKGtbdz4+Ml08PDEpO2M9a1tjPj4yXXwwO2M9ZHgoa1tPPj4yXXwwLGMsKChjfDApPDApPDwzMT4+MzEpfDA7a1tUPj4yXT1jO2lmKCEoa1tUPj4yXXwwKSl7a1tNPj4yXT03O1c9a1tNPj4yXXwwO3I9WDtyZXR1cm4gV3wwfWtbZz4+Ml09a1tUPj4yXTtrW2U+PjJdPShrW2c+PjJdfDApKyhrW3E+PjJdPDw1KTtjPWtbZT4+Ml18MDtrW2M+PjJdPTA7a1tjKzQ+PjJdPTA7a1tjKzg+PjJdPTA7a1tjKzEyPj4yXT0wO2tbYysxNj4+Ml09MDtrW2MrMjA+PjJdPTA7a1tjKzI0Pj4yXT0wO2tbYysyOD4+Ml09MDtrW2Q+PjJdPShrW2U+PjJdfDApKyhrW3E+PjJdPDw1KTtrW2g+PjJdPWtbcT4+Ml08PDE7a1tTPj4yXT1rW2c+PjJdO3doaWxlKDEpe2lmKChrW2g+PjJdfDApPD0wKWJyZWFrO2tbKGtbUz4+Ml18MCkrMjQ+PjJdPWtbZD4+Ml07a1toPj4yXT0oa1toPj4yXXwwKSstMTtrW1M+PjJdPShrW1M+PjJdfDApKzMyO2tbZD4+Ml09KGtbZD4+Ml18MCkrKGtbUT4+Ml08PDIpfWlmKGtbdz4+Ml18MCl7a1tmPj4yXT1rW2Q+PjJdO2RTKGtbZj4+Ml18MCwwLGtbdz4+Ml08PDF8MCl8MH1pZigoa1soa1t6Pj4yXXwwKSsxMzY+PjJdfDApPj4+MDw0OCliPWtbKGtbej4+Ml18MCkrMTM2Pj4yXXwwO2Vsc2UgYj00ODtqWyhrW2U+PjJdfDApKzE2Pj4xXT1iO2tbdj4+Ml09MTtpZihrW3c+PjJdfDApaVsoa1tlPj4yXXwwKSsyMj4+MF09KGtbUT4+Ml18MCk+MD8tMTprW3c+PjJdfDA7a1tIPj4yXT0wO3doaWxlKDEpe2lmKChrW0g+PjJdfDApPj0oa1tRPj4yXXwwKSlicmVhaztrW3k+PjJdPTA7a1toPj4yXT0wO2tbUz4+Ml09a1tlPj4yXTt3aGlsZSgxKXtpZigoa1toPj4yXXwwKT49KGtbdj4+Ml18MCkpYnJlYWs7a1tLPj4yXT1rWyhrW04+PjJdfDApKzU2Pj4yXTt3aGlsZSgxKXtpZighKGtbSz4+Ml18MCkpYnJlYWs7aVtuPj4wXT1pWyhrW1M+PjJdfDApKzIyPj4wXXwwO2M9RDtrW2M+PjJdPTA7a1tjKzQ+PjJdPTA7Yz1rW0s+PjJdfDA7ZD1rW1M+PjJdfDA7YTpkbyBpZighKChrW2M+PjJdJn5rW2Q+PjJdfDApIT0wPzE6KGtbYys0Pj4yXSZ+a1tkKzQ+PjJdfDApIT0wKT8oYz0oa1tLPj4yXXwwKSs4fDAsZD1rW1M+PjJdfDAsISgoa1tjPj4yXSZrW2Q+PjJdfDApIT0wPzE6KGtbYys0Pj4yXSZrW2QrND4+Ml18MCkhPTApKTowKXtpZigoa1soa1tLPj4yXXwwKSszNj4+Ml0mMTYzODR8MCkhPTA/KGpbKGtbUz4+Ml18MCkrMTY+PjFdfDApPDEwOjApYnJlYWs7Yj14RShqWyhrW0s+PjJdfDApKzE4Pj4xXXwwLChqWyhrW0s+PjJdfDApKzIwPj4xXXwwKSsoalsoa1tTPj4yXXwwKSsxNj4+MV18MCkmNjU1MzUpfDA7altDPj4xXT1iO2I9eEUoaltDPj4xXXwwLGpbKGtbUz4+Ml18MCkrMjA+PjFdfDApfDA7altDPj4xXT1iO2pbeD4+MV09KGpbKGtbUz4+Ml18MCkrMTY+PjFdfDApKyhqWyhrW0s+PjJdfDApKzIyPj4xXXwwKTtiPWtbUz4+Ml18MDthPShrW0s+PjJdfDApKzh8MDtjPWtbYis0Pj4yXXxrW2ErND4+Ml07ZD1wO2tbZD4+Ml09a1tiPj4yXXxrW2E+PjJdO2tbZCs0Pj4yXT1jO2lmKChpW24+PjBdfDApPDApe2Q9eUUoa1tOPj4yXXwwLGtbKGtbTj4+Ml18MCkrOD4+Ml18MCxrW1M+PjJdfDAsalsoa1tOPj4yXXwwKSs0MD4+MV18MCxrW0g+PjJdJjY1NTM1LGtbSz4+Ml18MCxEKXwwO2lbbj4+MF09ZH1lbHNle2E9KGtbUz4+Ml18MCkrOHwwO2M9a1thKzQ+PjJdfDA7ZD1EO2tbZD4+Ml09a1thPj4yXTtrW2QrND4+Ml09Y31pZigoaVtuPj4wXXwwKT49MD8oaVtuPj4wXXwwKTwoa1t3Pj4yXXwwKTowKXtpZighKGpbKGtbZj4+Ml18MCkrKGlbbj4+MF08PDEpPj4xXXwwKSl7ZD16RShrW04+PjJdfDAsaltHPj4xXXwwLGtbdz4+Ml18MCxpW24+PjBdfDApfDA7alsoa1tmPj4yXXwwKSsoaVtuPj4wXTw8MSk+PjFdPWR9ZD14RShqW0M+PjFdfDAsalsoa1tmPj4yXXwwKSsoaVtuPj4wXTw8MSk+PjFdfDApfDA7altCPj4xXT1kfWVsc2UgaltCPj4xXT1qW0M+PjFdfDA7a1tvPj4yXT0wO2tbQT4+Ml09a1tnPj4yXTt3aGlsZSgxKXtpZigoa1tvPj4yXXwwKT49KGtbeT4+Ml18MCkpYnJlYWs7Yz1rW0E+PjJdfDA7ZD1wO2lmKCgoa1tjPj4yXXwwKT09KGtbZD4+Ml18MCk/KGtbYys0Pj4yXXwwKT09KGtbZCs0Pj4yXXwwKTowKT8oKGlbKGtbQT4+Ml18MCkrMjI+PjBdXmlbbj4+MF0pJjEyOHwwKT09MDowKWJyZWFrO2tbbz4+Ml09KGtbbz4+Ml18MCkrMTtrW0E+PjJdPShrW0E+PjJdfDApKzMyfWRvIGlmKChrW28+PjJdfDApPChrW3k+PjJdfDApKXtpZigoalsoa1tBPj4yXXwwKSsxOD4+MV18MCk8KGpbQj4+MV18MCkpYnJlYWsgYTtpZigoalsoa1tBPj4yXXwwKSsxOD4+MV18MCkhPShqW0I+PjFdfDApKWJyZWFrO2lmKChqWyhrW0E+PjJdfDApKzE2Pj4xXXwwKTw9KGpbeD4+MV18MCkpYnJlYWsgYX1lbHNle2RvIGlmKChrW3k+PjJdfDApPj0oa1txPj4yXXwwKSl7aWYoKGpbQj4+MV18MCk+KGpbcz4+MV18MCkpYnJlYWsgYTtpZigoaltCPj4xXXwwKSE9KGpbcz4+MV18MCkpYnJlYWs7aWYoKGpbQz4+MV18MCk+PShqW3U+PjFdfDApKWJyZWFrIGF9d2hpbGUoMCk7aWYoKGtbeT4+Ml18MCk8KGtbcT4+Ml18MCkpe2Q9a1t5Pj4yXXwwO2tbeT4+Ml09ZCsxO2tbbz4+Ml09ZH1lbHNlIGtbbz4+Ml09a1t0Pj4yXTtrW0E+PjJdPShrW2c+PjJdfDApKyhrW28+PjJdPDw1KX13aGlsZSgwKTtiPWtbUz4+Ml18MDtkPShrW0s+PjJdfDApKzh8MDtjPWtbYis0Pj4yXXxrW2QrND4+Ml07YT1rW0E+PjJdfDA7a1thPj4yXT1rW2I+PjJdfGtbZD4+Ml07a1thKzQ+PjJdPWM7YT1EO2M9a1thKzQ+PjJdfDA7ZD0oa1tBPj4yXXwwKSs4fDA7a1tkPj4yXT1rW2E+PjJdO2tbZCs0Pj4yXT1jO2pbKGtbQT4+Ml18MCkrMTY+PjFdPWpbeD4+MV18MDtqWyhrW0E+PjJdfDApKzE4Pj4xXT1qW0I+PjFdfDA7alsoa1tBPj4yXXwwKSsyMD4+MV09altDPj4xXXwwO2lbKGtbQT4+Ml18MCkrMjI+PjBdPWlbbj4+MF18MDtiUyhrWyhrW0E+PjJdfDApKzI0Pj4yXXwwLGtbKGtbUz4+Ml18MCkrMjQ+PjJdfDAsa1tIPj4yXTw8MnwwKXwwO2tbKGtbKGtbQT4+Ml18MCkrMjQ+PjJdfDApKyhrW0g+PjJdPDwyKT4+Ml09a1tLPj4yXTtpZigoa1t5Pj4yXXwwKT49KGtbcT4+Ml18MCkpe2tbdD4+Ml09MDtqW3M+PjFdPWpbKGtbZz4+Ml18MCkrMTg+PjFdfDA7alt1Pj4xXT1qWyhrW2c+PjJdfDApKzE2Pj4xXXwwO2tbbz4+Ml09MTtrW0E+PjJdPShrW2c+PjJdfDApKzMyO3doaWxlKDEpe2lmKChrW28+PjJdfDApPj0oa1txPj4yXXwwKSlicmVhayBhO2RvIGlmKChqWyhrW0E+PjJdfDApKzE4Pj4xXXwwKTw9KGpbcz4+MV18MCkpe2lmKChqWyhrW0E+PjJdfDApKzE4Pj4xXXwwKSE9KGpbcz4+MV18MCkpYnJlYWs7aWYoKGpbKGtbQT4+Ml18MCkrMjA+PjFdfDApPihqW3U+PjFdfDApKUY9NjB9ZWxzZSBGPTYwO3doaWxlKDApO2lmKChGfDApPT02MCl7Rj0wO2pbcz4+MV09alsoa1tBPj4yXXwwKSsxOD4+MV18MDtqW3U+PjFdPWpbKGtbQT4+Ml18MCkrMjA+PjFdfDA7a1t0Pj4yXT1rW28+PjJdfWtbbz4+Ml09KGtbbz4+Ml18MCkrMTtrW0E+PjJdPShrW0E+PjJdfDApKzMyfX19d2hpbGUoMCk7a1tLPj4yXT1rWyhrW0s+PjJdfDApKzUyPj4yXX1rW2g+PjJdPShrW2g+PjJdfDApKzE7a1tTPj4yXT0oa1tTPj4yXXwwKSszMn1rW1M+PjJdPWtbZz4+Ml07a1tnPj4yXT1rW2U+PjJdO2tbZT4+Ml09a1tTPj4yXTtrW3Y+PjJdPWtbeT4+Ml07a1tIPj4yXT0oa1tIPj4yXXwwKSsxfWlmKCEoa1t2Pj4yXXwwKSl7T2goa1t6Pj4yXXwwLDM0NzU2LEUpO2JnKGtbTz4+Ml18MCxrW1Q+PjJdfDApO2tbTT4+Ml09MTtXPWtbTT4+Ml18MDtyPVg7cmV0dXJuIFd8MH1rW1M+PjJdPWtbZT4+Ml07a1toPj4yXT0xO3doaWxlKDEpe2lmKChrW2g+PjJdfDApPj0oa1t2Pj4yXXwwKSlicmVhaztpZigoalsoa1tTPj4yXXwwKSsxOD4+MV18MCk+KGpbKGtbZT4+Ml18MCkrKGtbaD4+Ml08PDUpKzE4Pj4xXXwwKSlrW1M+PjJdPShrW2U+PjJdfDApKyhrW2g+PjJdPDw1KTtrW2g+PjJdPShrW2g+PjJdfDApKzF9a1tIPj4yXT0wO3doaWxlKDEpe2I9a1tOPj4yXXwwO2lmKChrW0g+PjJdfDApPj0oa1tRPj4yXXwwKSlicmVhaztrW0o+PjJdPWIrNzUyKygoa1tIPj4yXXwwKSo4MHwwKTtGPWtbKGtbKGtbUz4+Ml18MCkrMjQ+PjJdfDApKyhrW0g+PjJdPDwyKT4+Ml18MDtrW0s+PjJdPUY7a1soa1tKPj4yXXwwKSs2ND4+Ml09RjtpWyhrW0o+PjJdfDApKzQ0Pj4wXT1pWyhrW0s+PjJdfDApKzE2Pj4wXXwwO2tbKGtbSj4+Ml18MCkrND4+Ml09a1soa1soa1tOPj4yXXwwKSs0Pj4yXXwwKSs4KygobFsoa1tKPj4yXXwwKSs0ND4+MF18MCkqNzJ8MCkrNDQ+PjJdO2tbSD4+Ml09KGtbSD4+Ml18MCkrMX1pZigoKCgobVtiKzQwPj4xXSYyNTZ8MCkhPTA/KG1bKGtbTj4+Ml18MCkrNDA+PjFdJjEyOHwwKT09MDowKT8obFsoa1tOPj4yXXwwKSs0Nz4+MF18MCk9PTA6MCk/KGpbRz4+MV18MCkhPTA6MCk/KEs9KHlFKGtbTj4+Ml18MCxrWyhrW04+PjJdfDApKzEyPj4yXXwwLGtbUz4+Ml18MCwxMjgsKGtbUT4+Ml18MCktMSY2NTUzNSxrWyhrWyhrW1M+PjJdfDApKzI0Pj4yXXwwKSsoKGtbUT4+Ml18MCktMTw8Mik+PjJdfDAsSSl8MCk8PDI0Pj4yNCxrW0w+PjJdPUssKGtbTD4+Ml18MCk9PShrW2tbKGtbTj4+Ml18MCkrMTI+PjJdPj4yXXwwKSk6MClpWyhrW04+PjJdfDApKzQ3Pj4wXT0yO2lmKGtbKGtbTj4+Ml18MCkrOD4+Ml18MCl7Yj1pWyhrW1M+PjJdfDApKzIyPj4wXXwwO2lmKG1bKGtbTj4+Ml18MCkrNDA+PjFdJjEyOCl7aWYoKGI8PDI0Pj4yNHwwKT09KGtba1soa1tOPj4yXXwwKSs4Pj4yXT4+Ml18MCkpaVsoa1tOPj4yXXwwKSs0Nz4+MF09Mn1lbHNle2lbKGtbTj4+Ml18MCkrNDM+PjBdPWI7Sj0oa1tTPj4yXXwwKSs4fDA7Sz1rW0orND4+Ml18MDtMPShrW04+PjJdfDApKzY0fDA7a1tMPj4yXT1rW0o+PjJdO2tbTCs0Pj4yXT1LO2lmKCgoKChpWyhrW04+PjJdfDApKzQzPj4wXXwwKTw9MD8oaVsoa1tOPj4yXXwwKSs0Mz4+MF09MCwoa1tRPj4yXXwwKT4wKTowKT8oa1tXPj4yXT1rWyhrWyhrWyhrW1M+PjJdfDApKzI0Pj4yXXwwKSsoKGtbUT4+Ml18MCktMTw8Mik+PjJdfDApKzM2Pj4yXSwoa1tXPj4yXSY0MDk2fDApPT0wKTowKT8oa1tXPj4yXSYyNjB8MCkhPTI2MDowKT8oVz1QLGtbVz4+Ml09MCxrW1crND4+Ml09MCxXPSh5RShrW04+PjJdfDAsa1soa1tOPj4yXXwwKSs4Pj4yXXwwLGtbUz4+Ml18MCwyMDQ4LChrW1E+PjJdfDApLTEmNjU1MzUsa1soa1soa1tTPj4yXXwwKSsyND4+Ml18MCkrKChrW1E+PjJdfDApLTE8PDIpPj4yXXwwLFApfDApPDwyND4+MjQsa1tVPj4yXT1XLChrW1U+PjJdfDApPT0oa1trWyhrW04+PjJdfDApKzg+PjJdPj4yXXwwKSk6MCl7aVsoa1tOPj4yXXwwKSs0OD4+MF09MTtVPWtbUCs0Pj4yXXwwO1c9KGtbTj4+Ml18MCkrNjR8MDtrW1c+PjJdPWtbUD4+Ml07a1tXKzQ+PjJdPVV9fWlmKCgobVsoa1tOPj4yXXwwKSs0MD4+MV0mNTEyfDApIT0wPygoa1tRPj4yXXwwKT4wPyhpWyhrW04+PjJdfDApKzQzPj4wXXwwKT09KGtba1soa1tOPj4yXXwwKSs4Pj4yXT4+Ml18MCk6MCk6MCk/KFc9VixrW1c+PjJdPTAsa1tXKzQ+PjJdPTAsVz0oeUUoa1tOPj4yXXwwLGtbKGtbTj4+Ml18MCkrOD4+Ml18MCxrW1M+PjJdfDAsMCwoa1tRPj4yXXwwKS0xJjY1NTM1LGtbKGtbKGtbUz4+Ml18MCkrMjQ+PjJdfDApKygoa1tRPj4yXXwwKS0xPDwyKT4+Ml18MCxWKXwwKTw8MjQ+PjI0LGtbUj4+Ml09Vywoa1tSPj4yXXwwKT09KGtba1soa1tOPj4yXXwwKSs4Pj4yXT4+Ml18MCkpOjApe2lbKGtbTj4+Ml18MCkrNDQ+PjBdPTE7VT1WO1Y9a1tVKzQ+PjJdfDA7Vz0oa1tOPj4yXXwwKSs2NHwwO2tbVz4+Ml09a1tVPj4yXTtrW1crND4+Ml09Vn19alsoa1tOPj4yXXwwKSs3Mj4+MV09alsoa1tTPj4yXXwwKSsxNj4+MV18MDtiZyhrW08+PjJdfDAsa1tUPj4yXXwwKTtrW00+PjJdPTA7Vz1rW00+PjJdfDA7cj1YO3JldHVybiBXfDB9ZnVuY3Rpb24gVUQoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTAsaT0wO2c9cjtyPXIrMzJ8MDtjPWcrMTZ8MDtkPWcrMTJ8MDtlPWcrOHwwO2Y9ZztrW2M+PjJdPWE7a1tkPj4yXT1iO2E9ZjtrW2E+PjJdPTA7a1thKzQ+PjJdPTA7aWYoIShrW2Q+PjJdfDApKXtiPWY7YT1iO2E9a1thPj4yXXwwO2I9Yis0fDA7Yj1rW2I+PjJdfDA7TD1iO3I9ZztyZXR1cm4gYXwwfWtbZT4+Ml09MDt3aGlsZSgxKXtpZigoa1tlPj4yXXwwKT49KGtba1tkPj4yXT4+Ml18MCkpYnJlYWs7aD12RShrW2M+PjJdfDAsa1soa1soa1tkPj4yXXwwKSs0Pj4yXXwwKSsoKGtbZT4+Ml18MCkqMjB8MCk+PjJdfDApfDA7aT1mO2I9a1tpKzQ+PjJdfEw7YT1mO2tbYT4+Ml09a1tpPj4yXXxoO2tbYSs0Pj4yXT1iO2tbZT4+Ml09KGtbZT4+Ml18MCkrMX1oPWY7aT1oO2k9a1tpPj4yXXwwO2g9aCs0fDA7aD1rW2g+PjJdfDA7TD1oO3I9ZztyZXR1cm4gaXwwfWZ1bmN0aW9uIFZEKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxuPTAsbz0wLHA9MCxxPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTAsRT0wLEY9MCxHPTAsSD0wLEk9MCxKPTAsSz0wLE09MCxOPTAsTz0wLFA9MCxRPTAsUj0wLFM9MCxUPTAsVT0wLFY9MCxXPTAsWD0wLFk9MDtZPXI7cj1yKzE3NnwwO3A9WSs0MHwwO049WSsxNjB8MDt0PVkrMTU2fDA7dT1ZKzE1MnwwO3Y9WSszMnwwO089WSsxNDh8MDtEPVkrMTQ0fDA7ST1ZKzE0MHwwO0o9WSsxMzZ8MDtGPVkrMTMyfDA7WD1ZKzEyOHwwO1E9WSsxMjR8MDtIPVkrMTIwfDA7Uj1ZKzExNnwwO1c9WSsxMTJ8MDtTPVkrMTA4fDA7eT1ZKzEwNHwwO0M9WSsxMDB8MDtFPVkrOTZ8MDtHPVkrOTJ8MDtzPVkrODh8MDtCPVkrMjR8MDt4PVkrMTZ8MDtvPVkrMTY0fDA7VD1ZKzg0fDA7QT1ZKzgwfDA7VT1ZKzc2fDA7UD1ZKzcyfDA7Vj1ZKzY4fDA7bj1ZKzY0fDA7aD1ZKzYwfDA7Zz1ZKzh8MDt6PVkrNTZ8MDt3PVk7Sz1ZKzUyfDA7TT1ZKzQ4fDA7a1tOPj4yXT1hO2tbdD4+Ml09YjtrW3U+PjJdPWM7Yj12O2tbYj4+Ml09ZDtrW2IrND4+Ml09ZTtrW08+PjJdPWY7aVtvPj4wXT0wO2tbVD4+Ml09MDtrW0E+PjJdPTA7a1tQPj4yXT0wO2tbWD4+Ml09a1soa1tOPj4yXXwwKSs4Pj4yXTtiPXB4KGtbWD4+Ml18MCwyMCl8MDtrW1E+PjJdPWI7a1tEPj4yXT0wO2tbSD4+Ml09a1soa1t1Pj4yXXwwKSsxNj4+Ml07a1tKPj4yXT0oa1soa1t0Pj4yXXwwKSsyMD4+Ml18MCkrKChrWyhrW3Q+PjJdfDApKzEyPj4yXXwwKSo0OHwwKTtrW0c+PjJdPWtbKGtbTz4+Ml18MCkrNjQ+PjJdO2I9QjtrW2I+PjJdPTA7a1tiKzQ+PjJdPTA7a1tJPj4yXT1rWyhrW3Q+PjJdfDApKzIwPj4yXTt3aGlsZSgxKXtpZigoa1tJPj4yXXwwKT4+PjA+PShrW0o+PjJdfDApPj4+MClicmVhaztrW24+PjJdPWtba1tJPj4yXT4+Ml07Yj1rW0c+PjJdfDA7aWYoKCgoa1tiPj4yXXwwKT09MCYoa1tiKzQ+PjJdfDApPT0wPyhtWyhrW0k+PjJdfDApKzEwPj4xXSYyfDApPT0wOjApPyhrWyhrW24+PjJdfDApKzQ+PjJdJjF8MCk9PTA6MCk/KHJFKGtbbj4+Ml18MCxrWyhrW3U+PjJdfDApKzQ0Pj4yXXwwKXwwKSE9MDowKXtjPWtba1tOPj4yXT4+Ml18MDtiPWtbVD4+Ml18MDtiPUd6KGMsYixTeShrW2tbTj4+Ml0+PjJdfDAsa1tuPj4yXXwwLDApfDApfDA7a1tUPj4yXT1ifWI9djtpZihzRShrW0k+PjJdfDAsa1t1Pj4yXXwwLGtbYj4+Ml18MCxrW2IrND4+Ml18MCl8MCl7a1toPj4yXT1rWyhrW0k+PjJdfDApKzI4Pj4yXTtpZigoa1toPj4yXXwwKT49NjQpe2Q9MDtlPS0yMTQ3NDgzNjQ4fWVsc2V7ZD1lUygxLDAsa1toPj4yXXwwKXwwO2U9TH1iPWc7a1tiPj4yXT1kO2tbYis0Pj4yXT1lO2lmKCEoaVtvPj4wXXwwKSl7Yj1rWyhrWyhrW0g+PjJdfDApKzQ+PjJdfDApKyhrW2g+PjJdPDw0KT4+Ml18MDtrW3A+PjJdPWtba1tIPj4yXT4+Ml07a1twKzQ+PjJdPWI7JGQoMjg0LDM0NzE5LHApO2lbbz4+MF09MX1jPUI7Yj1nO2lmKChrW2M+PjJdJmtbYj4+Ml18MCk9PTA/KGtbYys0Pj4yXSZrW2IrND4+Ml18MCk9PTA6MCl7aWYodEUoa1trW04+PjJdPj4yXXwwLGtbRz4+Ml18MCwoa1tEPj4yXXwwKSsxfDApfDApe3E9NTc7YnJlYWt9Zj1rW0k+PjJdfDA7YT1rW0Q+PjJdfDA7a1tEPj4yXT1hKzE7a1soa1soa1tHPj4yXXwwKSs0OD4+Ml18MCkrKGE8PDIpPj4yXT1mO2E9ZztmPUI7Yz1rW2YrND4+Ml18a1thKzQ+PjJdO2I9QjtrW2I+PjJdPWtbZj4+Ml18a1thPj4yXTtrW2IrND4+Ml09Y319a1tJPj4yXT0oa1tJPj4yXXwwKSs0OH1pZigocXwwKT09NTcpe1c9a1tOPj4yXXwwO1c9a1tXPj4yXXwwO1g9a1tUPj4yXXwwO3N2KFcsWCk7cj1ZO3JldHVybn1uPWtbRD4+Ml0mNjU1MzU7alsoa1tHPj4yXXwwKSs0MD4+MV09bjtqWyhrW0c+PjJdfDApKzI0Pj4xXT1uO2tbKGtbRz4+Ml18MCkrMzY+PjJdPTE2OTYxO249KGtbdT4+Ml18MCkrNTZ8MDtvPUI7cD1rW24rND4+Ml0mKH5rW28rND4+Ml18LTIxNDc0ODM2NDgpO3E9eDtrW3E+PjJdPWtbbj4+Ml0mfmtbbz4+Ml07a1txKzQ+PjJdPXA7aWYoNjM8KGpbKGtbSD4+Ml18MCkrMzQ+PjFdfDApKWQ9NjM7ZWxzZSBkPWpbKGtbSD4+Ml18MCkrMzQ+PjFdfDA7a1tDPj4yXT1kO2tbeT4+Ml09MDt3aGlsZSgxKXtpZigoa1t5Pj4yXXwwKT49KGtbQz4+Ml18MCkpYnJlYWs7cT14O289a1txPj4yXXwwO3E9a1txKzQ+PjJdfDA7cD1lUygxLDAsa1t5Pj4yXXwwKXwwO2lmKChvJnB8MCkhPTB8KHEmTHwwKSE9MClrW0Q+PjJdPShrW0Q+PjJdfDApKzE7a1t5Pj4yXT0oa1t5Pj4yXXwwKSsxfWlmKDAhPTA/MTooa1soa1t1Pj4yXXwwKSs1Nis0Pj4yXSYtMjE0NzQ4MzY0OHwwKSE9MClrW0Q+PjJdPShrW0Q+PjJdfDApKygoalsoa1tIPj4yXXwwKSszND4+MV18MCktNjQrMSk7cz11RShrW2tbTj4+Ml0+PjJdfDAsKGtbRD4+Ml18MCkrMSY2NTUzNSwwLHMpfDA7a1tGPj4yXT1zO2lmKCEoa1tGPj4yXXwwKSl7Vz1rW04+PjJdfDA7Vz1rW1c+PjJdfDA7WD1rW1Q+PjJdfDA7c3YoVyxYKTtyPVk7cmV0dXJufWtbKGtbRz4+Ml18MCkrMjQrOD4+Ml09a1tGPj4yXTtrW2tbRj4+Ml0+PjJdPTM0NzQ1O2tbKGtbRj4+Ml18MCkrMTI+PjJdPWtbSD4+Ml07a1tTPj4yXT0wO3M9QjtrW3M+PjJdPTA7a1tzKzQ+PjJdPTA7a1tJPj4yXT1rWyhrW3Q+PjJdfDApKzIwPj4yXTt3aGlsZSgxKXtpZigoa1tJPj4yXXwwKT4+PjA+PShrW0o+PjJdfDApPj4+MClicmVhaztzPXY7aWYoc0Uoa1tJPj4yXXwwLGtbdT4+Ml18MCxrW3M+PjJdfDAsa1tzKzQ+PjJdfDApfDApe2tbej4+Ml09a1soa1tJPj4yXXwwKSsyOD4+Ml07aWYoKGtbej4+Ml18MCk+PTY0KXtkPTA7ZT0tMjE0NzQ4MzY0OH1lbHNle2Q9ZVMoMSwwLGtbej4+Ml18MCl8MDtlPUx9cT13O2tbcT4+Ml09ZDtrW3ErND4+Ml09ZTtxPUI7cz13O2lmKChrW3E+PjJdJmtbcz4+Ml18MCk9PTA/KGtbcSs0Pj4yXSZrW3MrND4+Ml18MCk9PTA6MCl7a1tLPj4yXT1rW2tbST4+Ml0+PjJdO3A9dztvPUI7cT1rW28rND4+Ml18a1twKzQ+PjJdO3M9QjtrW3M+PjJdPWtbbz4+Ml18a1twPj4yXTtrW3MrND4+Ml09cTtqWyhrWyhrW0Y+PjJdfDApKzQ+PjJdfDApKyhrW1M+PjJdPDwxKT4+MV09a1soa1tJPj4yXXwwKSsyOD4+Ml07cz1DQihrW04+PjJdfDAsa1soa1tLPj4yXXwwKSsxMj4+Ml18MCxrWyhrW0s+PjJdfDApKzE2Pj4yXXwwKXwwO2tbRT4+Ml09cztpZihrW0U+PjJdfDApZD1rW2tbRT4+Ml0+PjJdfDA7ZWxzZSBkPTM0ODM0O2tbKGtbKGtbRj4+Ml18MCkrMzI+PjJdfDApKyhrW1M+PjJdPDwyKT4+Ml09ZDtrW1M+PjJdPShrW1M+PjJdfDApKzF9fWtbST4+Ml09KGtbST4+Ml18MCkrNDh9a1t5Pj4yXT0wO3doaWxlKDEpe2lmKChrW3k+PjJdfDApPj0oa1tDPj4yXXwwKSlicmVhaztLPXg7ST1rW0s+PjJdfDA7Sz1rW0srND4+Ml18MDtKPWVTKDEsMCxrW3k+PjJdfDApfDA7aWYoKEkmSnwwKSE9MHwoSyZMfDApIT0wKXtqWyhrWyhrW0Y+PjJdfDApKzQ+PjJdfDApKyhrW1M+PjJdPDwxKT4+MV09a1t5Pj4yXTtrWyhrWyhrW0Y+PjJdfDApKzMyPj4yXXwwKSsoa1tTPj4yXTw8Mik+PjJdPTM0ODM0O2tbUz4+Ml09KGtbUz4+Ml18MCkrMX1rW3k+PjJdPShrW3k+PjJdfDApKzF9YTpkbyBpZigwIT0wPzE6KGtbKGtbdT4+Ml18MCkrNTYrND4+Ml0mLTIxNDc0ODM2NDh8MCkhPTApe2tbeT4+Ml09NjM7d2hpbGUoMSl7aWYoKGtbeT4+Ml18MCk+PShqWyhrW0g+PjJdfDApKzM0Pj4xXXwwKSlicmVhayBhO2pbKGtbKGtbRj4+Ml18MCkrND4+Ml18MCkrKGtbUz4+Ml08PDEpPj4xXT1rW3k+PjJdO2tbKGtbKGtbRj4+Ml18MCkrMzI+PjJdfDApKyhrW1M+PjJdPDwyKT4+Ml09MzQ4MzQ7a1tTPj4yXT0oa1tTPj4yXXwwKSsxO2tbeT4+Ml09KGtbeT4+Ml18MCkrMX19d2hpbGUoMCk7alsoa1soa1tGPj4yXXwwKSs0Pj4yXXwwKSsoa1tTPj4yXTw8MSk+PjFdPS0xO2tbKGtbKGtbRj4+Ml18MCkrMzI+PjJdfDApKyhrW1M+PjJdPDwyKT4+Ml09MzQ4MzQ7Sj0oa1tOPj4yXXwwKSs0MHwwO0s9a1tKPj4yXXwwO2tbSj4+Ml09SysxO2tbKGtbTz4+Ml18MCkrOD4+Ml09SztzeChrW1g+PjJdfDAsMTA2LGtbKGtbTz4+Ml18MCkrOD4+Ml18MCwoa1tEPj4yXXwwKSsxfDApfDA7ZEEoa1tOPj4yXXwwLGtbRj4+Ml18MCk7S0Eoa1tOPj4yXXwwKTtrW1U+PjJdPShrWyhrW2tbdD4+Ml0+PjJdfDApKzQ+PjJdfDApKzgrKChsWyhrW08+PjJdfDApKzQ0Pj4wXXwwKSo3MnwwKTtpZigobFsoa1tVPj4yXXwwKSszNisxPj4wXXwwKT4+PjQmMSl7a1tNPj4yXT1rWyhrW1U+PjJdfDApKzI4Pj4yXTtLPXN4KGtbWD4+Ml18MCw3NiwwLDApfDA7a1tQPj4yXT1LO3R4KGtbWD4+Ml18MCwxNSxrW00+PjJdfDAsMCxrWyhrW1U+PjJdfDApKzI0Pj4yXXwwKXwwO009YUEoa1tYPj4yXXwwLDE2LGtbTT4+Ml18MCl8MDtrW1I+PjJdPU19ZWxzZXtNPWFBKGtbWD4+Ml18MCw1NyxrWyhrW08+PjJdfDApKzQ+PjJdfDApfDA7a1tSPj4yXT1NfWlmKGtbVD4+Ml18MCl7TT1lQShrW1g+PjJdfDApfDA7a1tBPj4yXT1NO3NCKGtbTj4+Ml18MCxrW1Q+PjJdfDAsa1tBPj4yXXwwLDE2KTtNPShrW0c+PjJdfDApKzM2fDA7a1tNPj4yXT1rW00+PjJdfDEzMTA3Mn1NPUZ4KGtbTj4+Ml18MCl8MDtrW1c+PjJdPU07TT15QShrW04+PjJdfDAsa1tGPj4yXXwwLGtbKGtbTz4+Ml18MCkrND4+Ml18MCxrW1c+PjJdfDAsMCwwLDAsMCl8MDtrW1Y+PjJdPU07c3goa1tYPj4yXXwwLDEyNixrWyhrW08+PjJdfDApKzg+PjJdfDAsa1tXPj4yXXwwKXwwO1RoKGtbWD4+Ml18MCwxNik7aWYoa1tUPj4yXXwwKWlBKGtbWD4+Ml18MCxrW0E+PjJdfDApO2Q9a1tYPj4yXXwwO2lmKChsWyhrW1U+PjJdfDApKzM2KzE+PjBdfDApPj4+NCYxKXtuQShkLGtbUD4+Ml18MCwoa1tWPj4yXXwwKSsoa1tTPj4yXXwwKXwwKTtDRChrW1g+PjJdfDAsa1tSPj4yXXwwLGtbKGtbTz4+Ml18MCkrND4+Ml18MCxrWyhrW1U+PjJdfDApKzMyPj4yXXwwLDEpO2dBKGtbWD4+Ml18MCxrW1I+PjJdfDApfDA7Vj0oa1tVPj4yXXwwKSszNisxfDA7aVtWPj4wXT1pW1Y+PjBdJi0xN31lbHNlIHN4KGQsNyxrWyhrW08+PjJdfDApKzQ+PjJdfDAsKGtbUj4+Ml18MCkrMXwwKXwwO1RoKGtbWD4+Ml18MCwzKTtoQShrW1g+PjJdfDAsa1tSPj4yXXwwKTtIeChrW04+PjJdfDAsa1tXPj4yXXwwKTtJQShrW04+PjJdfDApO2hBKGtbWD4+Ml18MCxrW1E+PjJdfDApO1c9a1tOPj4yXXwwO1c9a1tXPj4yXXwwO1g9a1tUPj4yXXwwO3N2KFcsWCk7cj1ZO3JldHVybn1mdW5jdGlvbiBXRChhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsbj0wLG89MCxwPTAscT0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wLEU9MCxGPTAsRz0wLEg9MCxJPTAsSj0wLEs9MCxMPTAsTT0wLE49MCxPPTA7Tz1yO3I9cisyNTZ8MDtIPU8rNDB8MDtHPU8rMzJ8MDtKPU8rMjR8MDtJPU8rMTZ8MDtGPU8rOHwwO0U9TztzPU8rMTQ0fDA7Zz1PKzE0MHwwO2g9TysxMzZ8MDtuPU8rMTMyfDA7dD1PKzEyOHwwO3U9TysxMjR8MDtvPU8rMTQ4fDA7Qj1PKzEyMHwwO3o9TysxMTZ8MDtEPU8rMTEyfDA7cD1PKzEwOHwwO3c9TysxMDR8MDt4PU8rMTAwfDA7QT1PKzk2fDA7dj1PKzkyfDA7TD1PKzg4fDA7Qz1PKzYwfDA7cT1PKzE1MnwwO0s9Tys1NnwwO3k9Tys1MnwwO009Tys0OHwwO2tbZz4+Ml09YTtrW2g+PjJdPWI7a1tuPj4yXT1jO2tbdD4+Ml09ZDtrW3U+PjJdPWU7altvPj4xXT1mO2tbQj4+Ml09MDtkbyBpZigobFsoa1tnPj4yXXwwKSs0MDk+PjBdfDB8MCk9PTIpe2tbej4+Ml09KGtbaD4+Ml18MCkrOCsoKGxbKGtbbj4+Ml18MCkrNDQ+PjBdfDApKjcyfDApO2tbRD4+Ml09a1soa1tnPj4yXXwwKSs4Pj4yXTtrW3A+PjJdPWtba1tnPj4yXT4+Ml07a1t3Pj4yXT1rWyhrW2c+PjJdfDApKzQyMD4+Ml07a1tBPj4yXT1rWyhrW24+PjJdfDApKzY0Pj4yXTtrW3Y+PjJdPWtbKGtbQT4+Ml18MCkrMzY+PjJdO2lmKChrW3Y+PjJdJjgxOTJ8MCk9PTA/KChtW28+PjFdfDApJjMyfDApPT0wOjApe2RvIGlmKGtbdj4+Ml0mNDgpZz0xO2Vsc2V7aWYoKGtbdj4+Ml0mMTAyNHwwKT09MD8obVsoa1tBPj4yXXwwKSsyND4+MV18MHwwKT4wOjApe2c9MTticmVha31nPSgobVtvPj4xXXwwKSYzfDApIT0wfXdoaWxlKDApO2tbeD4+Ml09ZyYxO25nKEMsa1twPj4yXXwwLHEsMTAwLDFlOSk7bkUoQywoa1t4Pj4yXXwwKSE9MD8zNDQ1MjozNDQ1OSk7Zz1rW3o+PjJdfDA7aWYoa1soa1t6Pj4yXXwwKSsyMD4+Ml18MCl7a1tFPj4yXT1sW2crNDA+PjBdO0JBKEMsMzQ0NjQsRSl9ZWxzZXtrW0Y+PjJdPWtbZys4Pj4yXTtCQShDLDM0NDc3LEYpfWlmKGtbKGtbej4+Ml18MCkrMTI+PjJdfDApe2tbST4+Ml09a1soa1t6Pj4yXXwwKSsxMj4+Ml07QkEoQywzNDQ4NyxJKX1kbyBpZighKGtbdj4+Ml0mMTI4MCkpe2tbSz4+Ml09MDtrW3k+PjJdPWtbKGtbQT4+Ml18MCkrMjQrOD4+Ml07aWYoKChsWyhrWyhrW3o+PjJdfDApKzE2Pj4yXXwwKSs0Mj4+MF18MCkmMzJ8MCkhPTA/KGlbKGtbeT4+Ml18MCkrNTU+PjBdJjN8MCk9PTI6MCl7aWYoa1t4Pj4yXXwwKWtbSz4+Ml09MzQ0OTR9ZWxzZSBOPTE5O2RvIGlmKChOfDApPT0xOSl7aWYoa1t2Pj4yXSYxMzEwNzIpe2tbSz4+Ml09MzQ1MDY7YnJlYWt9aWYoa1t2Pj4yXSYxNjM4NCl7a1tLPj4yXT0zNDUzOTticmVha31pZihrW3Y+PjJdJjY0KXtrW0s+PjJdPTM0NTY0O2JyZWFrfWVsc2V7a1tLPj4yXT0zNDU4MjticmVha319d2hpbGUoMCk7aWYoa1tLPj4yXXwwKXtDQShDLDM0NTkxLDcpO049a1tLPj4yXXwwO2tbSj4+Ml09a1trW3k+PjJdPj4yXTtCQShDLE4sSik7b0UoQyxrW0E+PjJdfDApfX1lbHNle2lmKChrW3Y+PjJdJjI1NnwwKSE9MD8oa1t2Pj4yXSYxNXwwKSE9MDowKXtkbyBpZighKGtbdj4+Ml0mNSkpe2lmKChrW3Y+PjJdJjQ4fDApPT00OCl7a1tNPj4yXT0zNDYwMTticmVha31pZihrW3Y+PjJdJjMyKXtrW00+PjJdPTM0NjE1O2JyZWFrfWVsc2V7a1tNPj4yXT0zNDYxNzticmVha319ZWxzZSBrW00+PjJdPTM0NTk5O3doaWxlKDApO2tbRz4+Ml09a1tNPj4yXTtCQShDLDM0NjE5LEcpO2JyZWFrfWlmKGtbdj4+Ml0mMTAyNCl7Tj1rWyhrW0E+PjJdfDApKzI0Kzg+PjJdfDA7a1tIPj4yXT1rWyhrW0E+PjJdfDApKzI0Pj4yXTtrW0grND4+Ml09TjtCQShDLDM0NjU3LEgpfX13aGlsZSgwKTtOPXBnKEMpfDA7a1tMPj4yXT1OO049d3goa1tEPj4yXXwwLDE2MixrW3c+PjJdfDAsa1t0Pj4yXXwwLGtbdT4+Ml18MCxrW0w+PjJdfDAsLTEpfDA7a1tCPj4yXT1OO2JyZWFrfWtbcz4+Ml09MDtOPWtbcz4+Ml18MDtyPU87cmV0dXJuIE58MH13aGlsZSgwKTtrW3M+PjJdPWtbQj4+Ml07Tj1rW3M+PjJdfDA7cj1PO3JldHVybiBOfDB9ZnVuY3Rpb24gWEQoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxuPTAsbz0wLHA9MCxxPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTAsRT0wLEY9MCxHPTAsSD0wLEk9MCxKPTAsSz0wLE09MCxOPTAsTz0wLFA9MCxRPTAsUj0wLFM9MCxUPTAsVT0wLFY9MCxXPTAsWD0wLFk9MCxaPTAsXz0wLCQ9MCxhYT0wLGJhPTAsY2E9MCxkYT0wLGVhPTAsZmE9MCxnYT0wLGhhPTAsaWE9MCxqYT0wLGthPTAsbGE9MCxtYT0wLG5hPTAsb2E9MCxwYT0wLHFhPTAscmE9MCxzYT0wLHRhPTAsdWE9MCx2YT0wLHdhPTAseGE9MCx5YT0wLHphPTAsQWE9MCxCYT0wLENhPTAsRGE9MCxFYT0wLEZhPTAsR2E9MCxIYT0wLElhPTAsSmE9MCxLYT0wLExhPTAsTWE9MCxOYT0wLE9hPTAsUGE9MCxRYT0wLFJhPTAsU2E9MCxUYT0wLFVhPTAsVmE9MCxXYT0wLFhhPTAsWWE9MCxaYT0wLF9hPTAsJGE9MCxhYj0wLGJiPTAsY2I9MCxkYj0wLGViPTAsZmI9MCxnYj0wLGhiPTA7aGI9cjtyPXIrNDQ4fDA7U2E9aGIrOHwwO1RhPWhiKzQzMnwwO009aGIrNDI4fDA7VWE9aGI7WGE9aGIrNDI0fDA7UmE9aGIrNDIwfDA7V2E9aGIrNDE2fDA7cmE9aGIrNDEyfDA7emE9aGIrNDA4fDA7UGE9aGIrNDA0fDA7JGE9aGIrNDAwfDA7T2E9aGIrMzk2fDA7Y2I9aGIrMzkyfDA7YmI9aGIrMzg4fDA7YWI9aGIrMzg0fDA7UWE9aGIrMzgwfDA7ZmI9aGIrMzc2fDA7Rz1oYiszNzJ8MDtGPWhiKzM2OHwwO1ZhPWhiKzM2NHwwO05hPWhiKzM2MHwwO249aGIrMzU2fDA7ZT1oYiszNTJ8MDtoPWhiKzM0OHwwO2Y9aGIrMzQ0fDA7cD1oYiszNDB8MDtnPWhiKzMzNnwwO289aGIrMzMyfDA7dD1oYiszMjh8MDtxPWhiKzMyNHwwO3U9aGIrMzIwfDA7cz1oYiszMTZ8MDtFPWhiKzMxMnwwO0Q9aGIrMzA4fDA7dj1oYiszMDR8MDt5PWhiKzMwMHwwO3g9aGIrMjk2fDA7ej1oYisyOTJ8MDtCPWhiKzI4OHwwO0M9aGIrMjg0fDA7dz1oYisyODB8MDtBPWhiKzI3NnwwO3hhPWhiKzQ0MnwwO3ZhPWhiKzQ0MHwwO3lhPWhiKzQzOHwwO0hhPWhiKzI3MnwwO0VhPWhiKzI2OHwwO0RhPWhiKzI2NHwwO0lhPWhiKzI2MHwwO3VhPWhiKzI1NnwwO0phPWhiKzI1MnwwO3dhPWhiKzI0OHwwO0JhPWhiKzI0NHwwO01hPWhiKzI0MHwwO0g9aGIrMjM2fDA7QWE9aGIrMjMyfDA7TGE9aGIrMjI4fDA7S2E9aGIrMjI0fDA7c2E9aGIrNDQ3fDA7dGE9aGIrNDQ2fDA7ST1oYisyMjB8MDtKPWhiKzQ0NXwwO0s9aGIrNDQ0fDA7RmE9aGIrMjE2fDA7R2E9aGIrMjEyfDA7Q2E9aGIrMjA4fDA7ZWE9aGIrMjA0fDA7Y2E9aGIrMjAwfDA7JD1oYisxOTZ8MDtQPWhiKzE5MnwwO2xhPWhiKzE4OHwwO25hPWhiKzE4NHwwO21hPWhiKzE4MHwwO1E9aGIrMTc2fDA7Uz1oYisxNzJ8MDtvYT1oYisxNjh8MDtWPWhiKzE2NHwwO3BhPWhiKzQzNnwwO189aGIrMTYwfDA7amE9aGIrMTU2fDA7WD1oYisxNTJ8MDtaPWhiKzE0OHwwO2dhPWhiKzE0NHwwO1U9aGIrMTQwfDA7YWE9aGIrMTM2fDA7ZGE9aGIrMTMyfDA7aWE9aGIrMTI4fDA7YmE9aGIrMTI0fDA7Vz1oYisxMjB8MDtoYT1oYisxMTZ8MDtOPWhiKzExMnwwO2thPWhiKzEwOHwwO1Q9aGIrMTA0fDA7ZmE9aGIrMTAwfDA7WT1oYis5NnwwO1I9aGIrOTJ8MDtPPWhiKzg4fDA7WmE9aGIrODR8MDtlYj1oYis4MHwwO2diPWhiKzc2fDA7X2E9aGIrNzJ8MDtkYj1oYisyNHwwO1lhPWhiKzE2fDA7a1tUYT4+Ml09YTtrW00+PjJdPWI7Yj1VYTtrW2I+PjJdPWM7a1tiKzQ+PjJdPWQ7a1tOYT4+Ml09MDtrW24+PjJdPTA7a1thYj4+Ml09a1trW1RhPj4yXT4+Ml07a1tmYj4+Ml09a1soa1thYj4+Ml18MCkrOD4+Ml07a1tjYj4+Ml09KGtbVGE+PjJdfDApKzgwO2tbUWE+PjJdPWtba1thYj4+Ml0+PjJdO2tbJGE+PjJdPShrW1RhPj4yXXwwKSs3NTIrKChrW00+PjJdfDApKjgwfDApO2tbT2E+PjJdPWtbKGtbJGE+PjJdfDApKzY0Pj4yXTtrW0c+PjJdPShrWyhrW1RhPj4yXXwwKSs0Pj4yXXwwKSs4KygobFsoa1skYT4+Ml18MCkrNDQ+PjBdfDApKjcyfDApO2tbV2E+PjJdPWtbKGtbRz4+Ml18MCkrNDQ+PjJdO2I9VWE7Yz1rW2I+PjJdfDA7Yj1rW2IrND4+Ml18MDtkPVlEKChrW1RhPj4yXXwwKSs0ODh8MCxrW1dhPj4yXXwwKXwwO2E9KGtbJGE+PjJdfDApKzcyfDA7a1thPj4yXT1jJn5kO2tbYSs0Pj4yXT1iJn5MO2E9KGtbVGE+PjJdfDApKzY0fDA7YT1hUyhrW2E+PjJdfDAsa1thKzQ+PjJdfDAsa1tNPj4yXXwwKXwwO2tbUGE+PjJdPWEmMTtpZihrWyhrW09hPj4yXXwwKSszNj4+Ml0mNjQpYz0obVsoa1tUYT4+Ml18MCkrNDA+PjFdJjMyfDApPT0wO2Vsc2UgYz0wO2tbemE+PjJdPWMmMTthPWVBKGtbZmI+PjJdfDApfDA7a1soa1skYT4+Ml18MCkrMTY+PjJdPWE7a1soa1skYT4+Ml18MCkrMTI+PjJdPWE7a1tGPj4yXT1hO2E9ZUEoa1tmYj4+Ml18MCl8MDtrWyhrWyRhPj4yXXwwKSsyND4+Ml09YTtrW1ZhPj4yXT1hO2lmKChsWyhrWyRhPj4yXXwwKSs0ND4+MF18MCk+MD8obFsoa1tHPj4yXXwwKSszNj4+MF0mOHwwKSE9MDowKXtiPShrW2FiPj4yXXwwKSs0NHwwO2E9KGtbYj4+Ml18MCkrMXwwO2tbYj4+Ml09YTtrW2tbJGE+PjJdPj4yXT1hO3N4KGtbZmI+PjJdfDAsNzYsMCxrW2tbJGE+PjJdPj4yXXwwKXwwfWRvIGlmKChsWyhrW0c+PjJdfDApKzM2KzE+PjBdfDApPj4+NCYxKXtrW2U+PjJdPWtbKGtbRz4+Ml18MCkrMjg+PjJdO3R4KGtbZmI+PjJdfDAsMTUsa1tlPj4yXXwwLDAsa1soa1tHPj4yXXwwKSsyND4+Ml18MCl8MDtSYT1zeChrW2ZiPj4yXXwwLDE2LGtbZT4+Ml18MCxrW0Y+PjJdfDApfDA7a1soa1skYT4+Ml18MCkrNTI+PjJdPVJhO2lbKGtbJGE+PjJdfDApKzQ1Pj4wXT0xM31lbHNle2M9a1tPYT4+Ml18MDtpZihrWyhrW09hPj4yXXwwKSszNj4+Ml0mMTAyNCl7a1twPj4yXT1tW2MrNDA+PjFdO0tBKGtbYWI+PjJdfDApO1JhPU1BKGtbYWI+PjJdfDAsKGtbcD4+Ml18MCkrMnwwKXwwO2tbaD4+Ml09UmE7a1tmPj4yXT1rWyhrWyRhPj4yXXwwKSsxMj4+Ml07a1tYYT4+Ml09MDt3aGlsZSgxKXtpZigoa1tYYT4+Ml18MCk+PShrW3A+PjJdfDApKWJyZWFrO2tbbz4+Ml09KGtbaD4+Ml18MCkrKGtbWGE+PjJdfDApKzI7a1tiYj4+Ml09a1soa1soa1tPYT4+Ml18MCkrNDg+PjJdfDApKyhrW1hhPj4yXTw8Mik+PjJdO2RvIGlmKGtbYmI+PjJdfDApaWYobVsoa1tiYj4+Ml18MCkrMTI+PjFdJjEpe1pEKGtbYWI+PjJdfDAsa1tiYj4+Ml18MCxrWyRhPj4yXXwwLGtbWGE+PjJdfDAsa1tQYT4+Ml18MCxrW28+PjJdfDApfDA7a1tmPj4yXT1rWyhrWyRhPj4yXXwwKSsxNj4+Ml07YnJlYWt9ZWxzZXtrW3Q+PjJdPWtbKGtba1tiYj4+Ml0+PjJdfDApKzE2Pj4yXTtfRChrW2FiPj4yXXwwLGtbdD4+Ml18MCxrW28+PjJdfDAsMSk7YnJlYWt9d2hpbGUoMCk7a1tYYT4+Ml09KGtbWGE+PjJdfDApKzF9c3goa1tmYj4+Ml18MCw3NixrWyhrW09hPj4yXXwwKSsyND4+Ml18MCxrW2g+PjJdfDApfDA7c3goa1tmYj4+Ml18MCw3NixrW3A+PjJdfDAsKGtbaD4+Ml18MCkrMXwwKXwwO3d4KGtbZmI+PjJdfDAsMTEsa1tXYT4+Ml18MCxrW2Y+PjJdfDAsa1toPj4yXXwwLGtbKGtbT2E+PjJdfDApKzI0Kzg+PjJdfDAsKGxbKGtbT2E+PjJdfDApKzI0KzQ+PjBdfDApIT0wPy0xMTotMil8MDtpWyhrW09hPj4yXXwwKSsyNCs0Pj4wXT0wO2tbKGtbJGE+PjJdfDApKzQ4Pj4yXT1rW1dhPj4yXTtpWyhrWyRhPj4yXXwwKSs0NT4+MF09KGxbKGtbVGE+PjJdfDApKzQ1Pj4wXXwwKSE9MD8xNjE6NzA7UmE9R3goa1tmYj4+Ml18MCl8MDtrWyhrWyRhPj4yXXwwKSs1Mj4+Ml09UmE7a1tnPj4yXT1rWyhrWyRhPj4yXXwwKSs1Nj4+Ml07a1tYYT4+Ml09KGtbcD4+Ml18MCktMTt3aGlsZSgxKXtpZigoa1tYYT4+Ml18MCk8MClicmVhaztrW2JiPj4yXT1rWyhrWyhrW09hPj4yXXwwKSs0OD4+Ml18MCkrKGtbWGE+PjJdPDwyKT4+Ml07aWYoKGtbWGE+PjJdfDApPDE2PyhtWyhrW09hPj4yXXwwKSsyNCs2Pj4xXT4+a1tYYT4+Ml0mMXwwKSE9MDowKSREKGtbJGE+PjJdfDAsa1tiYj4+Ml18MCk7ZWxzZSBxYT0yMTtpZigocWF8MCk9PTIxPyhxYT0wLChtWyhrW2JiPj4yXXwwKSsxMj4+MV0mMXwwKSE9MCk6MCl7aWYoIShpWyhrW1FhPj4yXXwwKSs2OT4+MF18MCkpe1BhPWtbZmI+PjJdfDA7UmE9KGtbZz4+Ml18MCkrLTF8MDtrW2c+PjJdPVJhO1JhPW9BKFBhLGtbKGtbKGtbJGE+PjJdfDApKzU2KzQ+PjJdfDApKyhSYSoxMnwwKSs0Pj4yXXwwKXwwO2tbcz4+Ml09UmE7dHgoa1tmYj4+Ml18MCxsW2tbcz4+Ml0+PjBdfDAsa1soa1tzPj4yXXwwKSs0Pj4yXXwwLGtbKGtbcz4+Ml18MCkrOD4+Ml18MCxrWyhrW3M+PjJdfDApKzEyPj4yXXwwKXwwfVJhPU92KGtbYWI+PjJdfDAsMzcsMCwwLDApfDA7a1txPj4yXT1SYTtpZihrW3E+PjJdfDApe2tbKGtbcT4+Ml18MCkrMTI+PjJdPWtbKGtba1tiYj4+Ml0+PjJdfDApKzEyPj4yXTtSYT1ldyhrW1FhPj4yXXwwLDE1NywwKXwwO2tbdT4+Ml09UmE7a1soa1txPj4yXXwwKSsxNj4+Ml09UmE7aWYoa1t1Pj4yXXwwKXtrWyhrW3U+PjJdfDApKzI4Pj4yXT0oa1toPj4yXXwwKSsoa1tYYT4+Ml18MCkrMjtzQihrW2FiPj4yXXwwLGtbcT4+Ml18MCxrWyhrWyRhPj4yXXwwKSsyND4+Ml18MCwwKX1rWyhrW3E+PjJdfDApKzEyPj4yXT0wO3N2KGtbUWE+PjJdfDAsa1txPj4yXXwwKX19a1tYYT4+Ml09KGtbWGE+PjJdfDApKy0xfUlBKGtbYWI+PjJdfDApO2JyZWFrfWlmKChrW2MrMzY+PjJdJjI1NnwwKSE9MD8oa1soa1tPYT4+Ml18MCkrMzY+PjJdJjV8MCkhPTA6MCl7a1tiYj4+Ml09a1trWyhrW09hPj4yXXwwKSs0OD4+Ml0+PjJdO1FhPShrW2FiPj4yXXwwKSs0NHwwO1JhPShrW1FhPj4yXXwwKSsxfDA7a1tRYT4+Ml09UmE7a1tuPj4yXT1SYTtSYT1aRChrW2FiPj4yXXwwLGtbYmI+PjJdfDAsa1skYT4+Ml18MCwwLGtbUGE+PjJdfDAsa1tuPj4yXXwwKXwwO2tbTmE+PjJdPVJhO2lmKChrW05hPj4yXXwwKSE9KGtbbj4+Ml18MCkpSHgoa1thYj4+Ml18MCxrW24+PjJdfDApO2tbcmE+PjJdPWtbKGtbJGE+PjJdfDApKzE2Pj4yXTt0eChrW2ZiPj4yXXwwLDMyLGtbV2E+PjJdfDAsa1tyYT4+Ml18MCxrW05hPj4yXXwwKXwwO2VCKGtbYWI+PjJdfDAsa1tOYT4+Ml18MCwxKTtRQihrW2FiPj4yXXwwLGtbV2E+PjJdfDAsLTEsa1tOYT4+Ml18MCk7aVsoa1skYT4+Ml18MCkrNDU+PjBdPS05NTticmVha31pZigoa1soa1tPYT4+Ml18MCkrMzY+PjJdJjI1NnwwKSE9MD8oa1soa1tPYT4+Ml18MCkrMzY+PjJdJjJ8MCkhPTA6MCl7a1tFPj4yXT0xNjE7a1t2Pj4yXT0wO2tbWGE+PjJdPTA7a1t4Pj4yXT0wO2tbeT4+Ml09MDtpZihrWyhrW09hPj4yXXwwKSszNj4+Ml0mMzIpe1JhPWtbWGE+PjJdfDA7a1tYYT4+Ml09UmErMTtrW3k+PjJdPWtbKGtbKGtbT2E+PjJdfDApKzQ4Pj4yXXwwKSsoUmE8PDIpPj4yXX1pZihrWyhrW09hPj4yXXwwKSszNj4+Ml0mMTYpe1JhPWtbWGE+PjJdfDA7a1tYYT4+Ml09UmErMTtrW3g+PjJdPWtbKGtbKGtbT2E+PjJdfDApKzQ4Pj4yXXwwKSsoUmE8PDIpPj4yXX1pZihrW1BhPj4yXXwwKXtrW2JiPj4yXT1rW3k+PjJdO2tbeT4+Ml09a1t4Pj4yXTtrW3g+PjJdPWtbYmI+PjJdfWlmKGtbeT4+Ml18MCl7a1t6Pj4yXT1rW2tbeT4+Ml0+PjJdO1JhPShmQihrWyhrW3o+PjJdfDApKzE2Pj4yXXwwKXwwKSE9MDtjPWtbYWI+PjJdfDA7aWYoUmEpe1JhPUZ4KGMpfDA7a1tDPj4yXT1SYTtrW0I+PjJdPVJhO19EKGtbYWI+PjJdfDAsa1soa1t6Pj4yXXwwKSsxNj4+Ml18MCxrW0I+PjJdfDAsMSk7a1t3Pj4yXT1sWzM0NDMyKygobFtrW3o+PjJdPj4wXXwwKS0zOHwxKT4+MF19ZWxzZXtSYT1oQihjLGtbKGtbej4+Ml18MCkrMTY+PjJdfDAsQyl8MDtrW0I+PjJdPVJhOyREKGtbJGE+PjJdfDAsa1t5Pj4yXXwwKTtrW3c+PjJdPWxbMzQ0MzIrKChsW2tbej4+Ml0+PjBdfDApLTM4KT4+MF19dHgoa1tmYj4+Ml18MCxrW3c+PjJdfDAsa1tXYT4+Ml18MCxrW0Y+PjJdfDAsa1tCPj4yXXwwKXwwO2VCKGtbYWI+PjJdfDAsa1tCPj4yXXwwLDEpO0h4KGtbYWI+PjJdfDAsa1tDPj4yXXwwKX1lbHNlIHN4KGtbZmI+PjJdfDAsKGtbUGE+PjJdfDApIT0wPzUzOjU3LGtbV2E+PjJdfDAsa1tGPj4yXXwwKXwwO2lmKGtbeD4+Ml18MCl7a1tBPj4yXT1rW2tbeD4+Ml0+PjJdO1FhPShrW2FiPj4yXXwwKSs0NHwwO1JhPShrW1FhPj4yXXwwKSsxfDA7a1tRYT4+Ml09UmE7a1t2Pj4yXT1SYTtfRChrW2FiPj4yXXwwLGtbKGtbQT4+Ml18MCkrMTY+PjJdfDAsa1t2Pj4yXXwwLDEpO2RvIGlmKCEoZkIoa1soa1tBPj4yXXwwKSsxNj4+Ml18MCl8MCkpe2lmKChsW2tbQT4+Ml0+PjBdfDApIT00MD8obFtrW0E+PjJdPj4wXXwwKSE9Mzg6MCl7cWE9NTQ7YnJlYWt9a1tFPj4yXT0oa1tQYT4+Ml18MCkhPTA/Mzk6NDF9ZWxzZSBxYT01NDt3aGlsZSgwKTtpZigocWF8MCk9PTU0KWtbRT4+Ml09KGtbUGE+PjJdfDApIT0wPzQwOjM4O2lmKCEoZkIoa1soa1tBPj4yXXwwKSsxNj4+Ml18MCl8MCkpJEQoa1skYT4+Ml18MCxrW3g+PjJdfDApfVJhPUd4KGtbZmI+PjJdfDApfDA7a1tEPj4yXT1SYTtpWyhrWyRhPj4yXXwwKSs0NT4+MF09KGtbUGE+PjJdfDApIT0wPzY6NztrWyhrWyRhPj4yXXwwKSs0OD4+Ml09a1tXYT4+Ml07a1soa1skYT4+Ml18MCkrNTI+PjJdPWtbRD4+Ml07aWYoKGtbRT4+Ml18MCk9PTE2MSlicmVhaztRYT0oa1thYj4+Ml18MCkrNDR8MDtSYT0oa1tRYT4+Ml18MCkrMXwwO2tbUWE+PjJdPVJhO2tbTmE+PjJdPVJhO3N4KGtbZmI+PjJdfDAsMTIzLGtbV2E+PjJdfDAsa1tOYT4+Ml18MCl8MDtRQihrW2FiPj4yXXwwLGtbV2E+PjJdfDAsLTEsa1tOYT4+Ml18MCk7dHgoa1tmYj4+Ml18MCxrW0U+PjJdfDAsa1t2Pj4yXXwwLGtbRj4+Ml18MCxrW05hPj4yXXwwKXwwO1RoKGtbZmI+PjJdfDAsODMpO2JyZWFrfWM9a1tPYT4+Ml18MDtpZighKGtbKGtbT2E+PjJdfDApKzM2Pj4yXSY1MTIpKXtpZighKGtbYyszNj4+Ml0mODE5MikpaWYoKGxbKGtbRz4+Ml18MCkrMzYrMT4+MF18MCk+Pj41JjEpe2lbKGtbJGE+PjJdfDApKzQ1Pj4wXT0tOTU7YnJlYWt9ZWxzZXtpWyhrWyRhPj4yXXwwKSs0NT4+MF09aVszNDQ0OCsoa1tQYT4+Ml18MCk+PjBdfDA7a1soa1skYT4+Ml18MCkrNDg+PjJdPWtbV2E+PjJdO1JhPTErKHN4KGtbZmI+PjJdfDAsbFszNDQ1MCsoa1tQYT4+Ml18MCk+PjBdfDAsa1tXYT4+Ml18MCxrW0Y+PjJdfDApfDApfDA7a1soa1skYT4+Ml18MCkrNTI+PjJdPVJhO2lbKGtbJGE+PjJdfDApKzQ3Pj4wXT0xO2JyZWFrfWtbJD4+Ml09MDtjPShrW2FiPj4yXXwwKSs0MHwwO1BhPWtbYz4+Ml18MDtrW2M+PjJdPVBhKzE7a1tQPj4yXT1QYTtQYT0oa1thYj4+Ml18MCkrNDR8MDtjPShrW1BhPj4yXXwwKSsxfDA7a1tQYT4+Ml09YztrW2xhPj4yXT1jO2tbbmE+PjJdPTA7a1ttYT4+Ml09MDtjPWVBKGtbZmI+PjJdfDApfDA7a1tRPj4yXT1jO2tbb2E+PjJdPTA7a1tfPj4yXT0wO2tbamE+PjJdPWtbKGtbRz4+Ml18MCkrMTY+PjJdO2tbYmI+PjJdPWtba1soa1tPYT4+Ml18MCkrNDg+PjJdPj4yXTtrW2VhPj4yXT1rWyhrW2JiPj4yXXwwKSsyOD4+Ml07aVsoa1skYT4+Ml18MCkrNDU+PjBdPTcyO2tbKGtbJGE+PjJdfDApKzQ4Pj4yXT1rW2xhPj4yXTtjPWtbVGE+PjJdfDA7YTpkbyBpZigobFsoa1tUYT4+Ml18MCkrNDI+PjBdfDApPjEpe2tbWD4+Ml09KGxbYys0Mj4+MF18MCktKGtbTT4+Ml18MCktMTtQYT1NaChrW1FhPj4yXXwwLDgwKygoa1tYPj4yXXwwKSo3MnwwKXwwLDApfDA7a1tjYT4+Ml09UGE7aWYoIShrW2NhPj4yXXwwKSl7ZWI9VWE7Z2I9a1tlYis0Pj4yXXwwO2ZiPVNhO2tbZmI+PjJdPWtbZWI+PjJdO2tbZmIrND4+Ml09Z2I7ZmI9U2E7Z2I9ZmI7Z2I9a1tnYj4+Ml18MDtmYj1mYis0fDA7ZmI9a1tmYj4+Ml18MDtMPWZiO3I9aGI7cmV0dXJuIGdifDB9a1soa1tjYT4+Ml18MCkrND4+Ml09KGtbWD4+Ml18MCkrMSYyNTU7a1trW2NhPj4yXT4+Ml09a1soa1tjYT4+Ml18MCkrND4+Ml07Yj0oa1tjYT4+Ml18MCkrOHwwO2M9a1tHPj4yXXwwO2Q9Yis3MnwwO2Rve2tbYj4+Ml09a1tjPj4yXTtiPWIrNHwwO2M9Yys0fDB9d2hpbGUoKGJ8MCk8KGR8MCkpO2tbWj4+Ml09KGtbKGtbVGE+PjJdfDApKzQ+PjJdfDApKzg7a1tSYT4+Ml09MTt3aGlsZSgxKXtpZigoa1tSYT4+Ml18MCk+KGtbWD4+Ml18MCkpYnJlYWsgYTtiPShrW2NhPj4yXXwwKSs4Kygoa1tSYT4+Ml18MCkqNzJ8MCl8MDtjPShrW1o+PjJdfDApKygobFsoa1skYT4+Ml18MCkrKChrW1JhPj4yXXwwKSo4MHwwKSs0ND4+MF18MCkqNzJ8MCl8MDtkPWIrNzJ8MDtkb3trW2I+PjJdPWtbYz4+Ml07Yj1iKzR8MDtjPWMrNHwwfXdoaWxlKChifDApPChkfDApKTtrW1JhPj4yXT0oa1tSYT4+Ml18MCkrMX19ZWxzZSBrW2NhPj4yXT1rW2MrND4+Ml07d2hpbGUoMCk7aWYoIShtWyhrW1RhPj4yXXwwKSs0MD4+MV0mMTYpKXtpZighKGxbKGtbamE+PjJdfDApKzQyPj4wXSYzMikpe1BhPShrW2FiPj4yXXwwKSs0NHwwO1JhPShrW1BhPj4yXXwwKSsxfDA7a1tQYT4+Ml09UmE7a1tuYT4+Ml09UmE7c3goa1tmYj4+Ml18MCw3OSwwLGtbbmE+PjJdfDApfDB9ZWxzZXtQYT1UaihrW2phPj4yXXwwKXwwO2tbZ2E+PjJdPVBhO1BhPShrW2FiPj4yXXwwKSs0MHwwO1JhPWtbUGE+PjJdfDA7a1tQYT4+Ml09UmErMTtrW25hPj4yXT1SYTtzeChrW2ZiPj4yXXwwLDEwNyxrW25hPj4yXXwwLG1bKGtbZ2E+PjJdfDApKzUwPj4xXXwwKXwwO2RBKGtbYWI+PjJdfDAsa1tnYT4+Ml18MCl9UGE9KGtbYWI+PjJdfDApKzQ0fDA7UmE9KGtbUGE+PjJdfDApKzF8MDtrW1BhPj4yXT1SYTtrW21hPj4yXT1SYX1SYT1zeChrW2ZiPj4yXXwwLDc2LDAsa1tsYT4+Ml18MCl8MDtrW1M+PjJdPVJhO2lmKChrWyhrW2NiPj4yXXwwKSsxMj4+Ml18MCk+MSl7a1tVPj4yXT0wO3doaWxlKDEpe2lmKChrW1U+PjJdfDApPj0oa1soa1tjYj4+Ml18MCkrMTI+PjJdfDApKWJyZWFrO2tbYWE+PjJdPWtbKGtbKGtbY2I+PjJdfDApKzIwPj4yXXwwKSsoKGtbVT4+Ml18MCkqNDh8MCk+PjJdO2RvIGlmKCgoKGtbKGtbY2I+PjJdfDApKzIwPj4yXXwwKSsoKGtbVT4+Ml18MCkqNDh8MCl8MCkhPShrW2JiPj4yXXwwKT8oa1soa1thYT4+Ml18MCkrND4+Ml0mMXwwKT09MDowKT8obVsoa1soa1tjYj4+Ml18MCkrMjA+PjJdfDApKygoa1tVPj4yXXwwKSo0OHwwKSsxMD4+MV0mNnwwKT09MDowKXtpZighKG1bKGtbKGtbY2I+PjJdfDApKzIwPj4yXXwwKSsoKGtbVT4+Ml18MCkqNDh8MCkrMTI+PjFdJjgxOTEpKWJyZWFrO1JhPVN5KGtbUWE+PjJdfDAsa1thYT4+Ml18MCwwKXwwO2tbYWE+PjJdPVJhO1JhPUd6KGtbUWE+PjJdfDAsa1tfPj4yXXwwLGtbYWE+PjJdfDApfDA7a1tfPj4yXT1SYX13aGlsZSgwKTtrW1U+PjJdPShrW1U+PjJdfDApKzF9aWYoa1tfPj4yXXwwKXtSYT1PdihrW2FiPj4yXXwwLDI4NCwwLGtbXz4+Ml18MCwwKXwwO2tbXz4+Ml09UmF9fWpbcGE+PjFdPTMyfG1bKGtbVGE+PjJdfDApKzQwPj4xXSYxMDI0O2tbVj4+Ml09MDt3aGlsZSgxKXtpZigoa1tWPj4yXXwwKT49KGtbKGtbZWE+PjJdfDApKzEyPj4yXXwwKSlicmVhaztrW2RhPj4yXT0oa1soa1tlYT4+Ml18MCkrMjA+PjJdfDApKygoa1tWPj4yXXwwKSo0OHwwKTtpZighKChrWyhrW2RhPj4yXXwwKSsyMD4+Ml18MCkhPShrW1dhPj4yXXwwKT8obVsoa1tkYT4+Ml18MCkrMTI+PjFdJjEwMjR8MCk9PTA6MCkpe2tbYmE+PjJdPWtba1tkYT4+Ml0+PjJdO2tbVz4+Ml09MDtpZigoa1tfPj4yXXwwKSE9MD8oa1soa1tiYT4+Ml18MCkrND4+Ml0mMXwwKT09MDowKXtrWyhrW18+PjJdfDApKzEyPj4yXT1rW2JhPj4yXTtrW2JhPj4yXT1rW18+PjJdfVJhPUFEKGtbYWI+PjJdfDAsa1tjYT4+Ml18MCxrW2JhPj4yXXwwLDAsMCxqW3BhPj4xXXwwLGtbUD4+Ml18MCl8MDtrW2lhPj4yXT1SYTtpZihrW2lhPj4yXXwwKXtSYT1XRChrW2FiPj4yXXwwLGtbY2E+PjJdfDAsKGtbaWE+PjJdfDApKzc1MnwwLGtbTT4+Ml18MCxsWyhrWyRhPj4yXXwwKSs0ND4+MF18MCwwKXwwO2tbTj4+Ml09UmE7ZG8gaWYoIShtWyhrW1RhPj4yXXwwKSs0MD4+MV0mMTYpKXtrW1Q+PjJdPShrW1Y+PjJdfDApPT0oKGtbKGtbZWE+PjJdfDApKzEyPj4yXXwwKS0xfDApPy0xOmtbVj4+Ml18MDtpZighKGxbKGtbamE+PjJdfDApKzQyPj4wXSYzMikpe1JhPWJCKGtbYWI+PjJdfDAsa1tqYT4+Ml18MCwtMSxrW1dhPj4yXXwwLGtbbWE+PjJdfDAsMCl8MDtrW2thPj4yXT1SYTtSYT1TaChrW2ZiPj4yXXwwLDYzLGtbbmE+PjJdfDAsMCxrW2thPj4yXXwwLGtbVD4+Ml18MCl8MDtrW1c+PjJdPVJhO2JyZWFrfVJhPVRqKGtbamE+PjJdfDApfDA7a1tmYT4+Ml09UmE7a1tZPj4yXT1tWyhrW2ZhPj4yXXwwKSs1MD4+MV07UmE9TUEoa1thYj4+Ml18MCxrW1k+PjJdfDApfDA7a1trYT4+Ml09UmE7a1tSPj4yXT0wO3doaWxlKDEpe2lmKChrW1I+PjJdfDApPj0oa1tZPj4yXXwwKSlicmVhaztrW08+PjJdPWpbKGtbKGtbZmE+PjJdfDApKzQ+PjJdfDApKyhrW1I+PjJdPDwxKT4+MV07ZkUoa1thYj4+Ml18MCxrW2phPj4yXXwwLGtbTz4+Ml18MCxrW1dhPj4yXXwwLChrW2thPj4yXXwwKSsoa1tSPj4yXXwwKXwwKTtrW1I+PjJdPShrW1I+PjJdfDApKzF9aWYoa1tUPj4yXXwwKXtSYT1TaChrW2ZiPj4yXXwwLDMxLGtbbmE+PjJdfDAsMCxrW2thPj4yXXwwLGtbWT4+Ml18MCl8MDtrW1c+PjJdPVJhfWRvIGlmKChrW1Q+PjJdfDApPj0wKXt0eChrW2ZiPj4yXXwwLDk5LGtba2E+PjJdfDAsa1tZPj4yXXwwLGtbbWE+PjJdfDApfDA7dHgoa1tmYj4+Ml18MCwxMjYsa1tuYT4+Ml18MCxrW21hPj4yXXwwLDApfDA7aWYoIShrW1Q+PjJdfDApKWJyZWFrO1RoKGtbZmI+PjJdfDAsMTYpfXdoaWxlKDApO1BBKGtbYWI+PjJdfDAsa1trYT4+Ml18MCxrW1k+PjJdfDApfXdoaWxlKDApO3N4KGtbZmI+PjJdfDAsMTQsa1tsYT4+Ml18MCxrW1E+PjJdfDApfDA7aWYoa1tXPj4yXXwwKWhBKGtbZmI+PjJdfDAsa1tXPj4yXXwwKTtpZihpWyhrW2lhPj4yXXwwKSs0Nj4+MF18MClrW29hPj4yXT0xO2tbaGE+PjJdPWtbKGtbaWE+PjJdfDApKzc1Mis2ND4+Ml07ZG8gaWYoa1soa1toYT4+Ml18MCkrMzY+PjJdJjUxMil7aWYoKGtbVj4+Ml18MCkhPTA/KGtbKGtbaGE+PjJdfDApKzI0Kzg+PjJdfDApIT0oa1skPj4yXXwwKTowKXtxYT0xOTM7YnJlYWt9aWYoKGxbKGtbamE+PjJdfDApKzQyPj4wXSYzMnwwKSE9MD8oaVsoa1soa1toYT4+Ml18MCkrMjQrOD4+Ml18MCkrNTU+PjBdJjN8MCk9PTI6MCl7cWE9MTkzO2JyZWFrfWtbJD4+Ml09a1soa1toYT4+Ml18MCkrMjQrOD4+Ml19ZWxzZSBxYT0xOTM7d2hpbGUoMCk7aWYoKHFhfDApPT0xOTMpe3FhPTA7a1skPj4yXT0wfUJEKGtbaWE+PjJdfDApfX1rW1Y+PjJdPShrW1Y+PjJdfDApKzF9a1soa1skYT4+Ml18MCkrNTY+PjJdPWtbJD4+Ml07aWYoa1skPj4yXXwwKWtbKGtbJGE+PjJdfDApKzg+PjJdPWtbUD4+Ml07aWYoa1tfPj4yXXwwKXtrWyhrW18+PjJdfDApKzEyPj4yXT0wO3N2KGtbUWE+PjJdfDAsa1tfPj4yXXwwKX1QYT1rW2ZiPj4yXXwwO1JhPWtbUz4+Ml18MDtnRShQYSxSYSxHeChrW2ZiPj4yXXwwKXwwKTtnQShrW2ZiPj4yXXwwLGtbKGtbJGE+PjJdfDApKzEyPj4yXXwwKXwwO2lBKGtbZmI+PjJdfDAsa1tRPj4yXXwwKTtpZigobFsoa1tUYT4+Ml18MCkrNDI+PjBdfDApPjEpYmcoa1tRYT4+Ml18MCxrW2NhPj4yXXwwKTtpZihrW29hPj4yXXwwKWJyZWFrOyREKGtbJGE+PjJdfDAsa1tiYj4+Ml18MCk7YnJlYWt9alt4YT4+MV09altjKzI0Pj4xXXwwO2pbdmE+PjFdPWpbKGtbT2E+PjJdfDApKzI0KzI+PjFdfDA7alt5YT4+MV09alsoa1tPYT4+Ml18MCkrMjQrND4+MV18MDtrW0VhPj4yXT0wO2tbRGE+PjJdPTA7a1tIPj4yXT0wO2tbS2E+PjJdPTA7aVtzYT4+MF09MDtpW3RhPj4wXT0wO2tbQmE+PjJdPWtbKGtbT2E+PjJdfDApKzI0Kzg+PjJdO2tbTWE+PjJdPWtbKGtbJGE+PjJdfDApKzg+PjJdO2lmKCgobVsoa1tUYT4+Ml18MCkrNDA+PjFdJjF8MCkhPTA/KGlbKGtbVGE+PjJdfDApKzQzPj4wXXwwKT4wOjApPyhtWyhrW0JhPj4yXXwwKSs1MD4+MV18MCk+KG1beGE+PjFdfDApOjApe2lbc2E+PjBdPTE7a1tIPj4yXT0xfWtbWGE+PjJdPW1beGE+PjFdO2lmKGtbKGtbT2E+PjJdfDApKzM2Pj4yXSYzMil7cWE9a1tYYT4+Ml18MDtrW1hhPj4yXT1xYSsxO2tbRWE+PjJdPWtbKGtbKGtbT2E+PjJdfDApKzQ4Pj4yXXwwKSsocWE8PDIpPj4yXTtpZigoa1tIPj4yXXwwKT4obVsoa1tPYT4+Ml18MCkrMjQrMj4+MV18MCkpYz1rW0g+PjJdfDA7ZWxzZSBjPW1bKGtbT2E+PjJdfDApKzI0KzI+PjFdfDA7a1tIPj4yXT1jfWRvIGlmKGtbKGtbT2E+PjJdfDApKzM2Pj4yXSYxNil7cWE9a1tYYT4+Ml18MDtrW1hhPj4yXT1xYSsxO2tbRGE+PjJdPWtbKGtbKGtbT2E+PjJdfDApKzQ4Pj4yXXwwKSsocWE8PDIpPj4yXTtpZigoa1tIPj4yXXwwKT4obVsoa1tPYT4+Ml18MCkrMjQrND4+MV18MCkpYz1rW0g+PjJdfDA7ZWxzZSBjPW1bKGtbT2E+PjJdfDApKzI0KzQ+PjFdfDA7a1tIPj4yXT1jO2lmKG1bKGtbRGE+PjJdfDApKzEwPj4xXSYyNTYpe3BhPShrW2FiPj4yXXwwKSs0NHwwO3FhPShrW3BhPj4yXXwwKSsxfDA7a1twYT4+Ml09cWE7a1soa1skYT4+Ml18MCkrMzY+PjJdPXFhO3N4KGtbZmI+PjJdfDAsNzYsMSxrWyhrWyRhPj4yXXwwKSszNj4+Ml18MCl8MDtxYT1HeChrW2ZiPj4yXXwwKXwwO2tbKGtbJGE+PjJdfDApKzQwPj4yXT1xYTtxYT0oa1skYT4+Ml18MCkrMzZ8MDtrW3FhPj4yXT1rW3FhPj4yXTw8MTtxYT0oa1skYT4+Ml18MCkrMzZ8MDtrW3FhPj4yXT1rW3FhPj4yXXxrW1BhPj4yXV4obFsoa1soa1tCYT4+Ml18MCkrMjg+PjJdfDApKyhtW3hhPj4xXXwwKT4+MF18MCk9PTF9aWYoIShrW0VhPj4yXXwwKSl7a1tYYT4+Ml09alsoa1soa1tCYT4+Ml18MCkrND4+Ml18MCkrKG1beGE+PjFdPDwxKT4+MV07Yz1rW1hhPj4yXXwwO2lmKChrW1hhPj4yXXwwKT49MCl7aWYoISgoa1tYYT4+Ml18MCk9PS0yPzE6KGxbKGtbKGtbKGtbQmE+PjJdfDApKzEyPj4yXXwwKSs0Pj4yXXwwKSsoYzw8NCkrMTI+PjBdfDApPT0wKSlicmVha31lbHNlIGlmKChjfDApIT0tMilicmVhaztpW3NhPj4wXT0xfX13aGlsZSgwKTtpZigobVt4YT4+MV18MCk8KG1bKGtbQmE+PjJdfDApKzUwPj4xXXwwKT8oa1tQYT4+Ml18MCk9PSgobFsoa1soa1tCYT4+Ml18MCkrMjg+PjJdfDApKyhtW3hhPj4xXXwwKT4+MF18MCk9PTB8MCk6MClxYT04NDtlbHNlIHFhPTgyO2lmKCgocWF8MCk9PTgyPyhrW1BhPj4yXXwwKSE9MDowKT8obVsoa1tCYT4+Ml18MCkrNTA+PjFdfDApPT0obVt4YT4+MV18MCk6MClxYT04NDtpZigocWF8MCk9PTg0KXtrW0k+PjJdPWtbRGE+PjJdO2tbRGE+PjJdPWtbRWE+PjJdO2tbRWE+PjJdPWtbST4+Ml07aVtKPj4wXT1pW3NhPj4wXXwwO2lbc2E+PjBdPWlbdGE+PjBdfDA7aVt0YT4+MF09aVtKPj4wXXwwO2lbSz4+MF09alt2YT4+MV07alt2YT4+MV09alt5YT4+MV18MDtqW3lhPj4xXT1sW0s+PjBdfDB9cWE9YUUoa1thYj4+Ml18MCxrWyRhPj4yXXwwLGtbUGE+PjJdfDAsa1tIPj4yXXwwLExhKXwwO2tbSGE+PjJdPXFhO2lmKChrW0xhPj4yXXwwKSE9MD8obVt5YT4+MV18MCkhPTA6MCl7cWE9QWgoa1tRYT4+Ml18MCwoa1tMYT4+Ml18MCkrKG1beGE+PjFdfDApfDApfDA7a1tLYT4+Ml09cWF9a1tyYT4+Ml09a1soa1skYT4+Ml18MCkrMTY+PjJdO2lmKGtbRWE+PjJdfDApYz0obVsoa1tFYT4+Ml18MCkrMTI+PjFdJjQwfDApIT0wO2Vsc2UgYz0xO2tbSWE+PjJdPWMmMTtpZihrW0RhPj4yXXwwKWM9KG1bKGtbRGE+PjJdfDApKzEyPj4xXSY0MHwwKSE9MDtlbHNlIGM9MTtrW3VhPj4yXT1jJjE7aWYoa1tFYT4+Ml18MCljPTE7ZWxzZSBjPShtW3hhPj4xXXwwKT4wO2tbSmE+PjJdPWMmMTtrW3dhPj4yXT1tW3hhPj4xXTtpZighKGtbRWE+PjJdfDApKXtpZihpW3NhPj4wXXwwKXtzeChrW2ZiPj4yXXwwLDc5LDAsKGtbSGE+PjJdfDApKyhtW3hhPj4xXXwwKXwwKXwwO2tbd2E+PjJdPShrW3dhPj4yXXwwKSsxO2tbSWE+PjJdPTA7a1tKYT4+Ml09MX19ZWxzZXtrW0ZhPj4yXT1rWyhrW2tbRWE+PjJdPj4yXXwwKSsxNj4+Ml07X0Qoa1thYj4+Ml18MCxrW0ZhPj4yXXwwLChrW0hhPj4yXXwwKSsobVt4YT4+MV18MCl8MCxtW3ZhPj4xXXwwKTtiRShrW2ZiPj4yXXwwLGtbJGE+PjJdfDAsa1tFYT4+Ml18MCk7ZG8gaWYoIShtWyhrW0VhPj4yXXwwKSsxMD4+MV0mMCkpe2lmKCEoeUIoa1tGYT4+Ml18MCl8MCkpYnJlYWs7c3goa1tmYj4+Ml18MCwzNCwoa1tIYT4+Ml18MCkrKG1beGE+PjFdfDApfDAsa1tyYT4+Ml18MCl8MH13aGlsZSgwKTtpZihrW0xhPj4yXXwwKWNFKGtbRmE+PjJdfDAsbVt2YT4+MV18MCwoa1tMYT4+Ml18MCkrKG1beGE+PjFdfDApfDApO2tbd2E+PjJdPShrW3dhPj4yXXwwKSsobVt2YT4+MV18MCk7aWYoIShmQihrW0ZhPj4yXXwwKXwwKSkkRChrWyRhPj4yXXwwLGtbRWE+PjJdfDApO2Vsc2Uga1tJYT4+Ml09MTtpW3NhPj4wXT0wfWRFKGtbYWI+PjJdfDAsa1tIYT4+Ml18MCwoa1t3YT4+Ml18MCktKGxbc2E+PjBdfDApfDAsa1tMYT4+Ml18MCk7aWYoISgobVsoa1tPYT4+Ml18MCkrNDI+PjFdfDApPjA/KGtbd2E+PjJdfDApPT0obVsoa1tPYT4+Ml18MCkrNDI+PjFdfDApOjApKXtrW0FhPj4yXT1sWzM0NDM2Kygoa1tKYT4+Ml08PDIpKyhrW0lhPj4yXTw8MSkrKGtbUGE+PjJdfDApKT4+MF07U2goa1tmYj4+Ml18MCxrW0FhPj4yXXwwLGtbTWE+PjJdfDAsa1tyYT4+Ml18MCxrW0hhPj4yXXwwLGtbd2E+PjJdfDApfDB9a1t3YT4+Ml09bVt4YT4+MV07ZG8gaWYoa1tEYT4+Ml18MCl7a1tHYT4+Ml09a1soa1trW0RhPj4yXT4+Ml18MCkrMTY+PjJdO1FBKGtbYWI+PjJdfDAsKGtbSGE+PjJdfDApKyhtW3hhPj4xXXwwKXwwLDEpO19EKGtbYWI+PjJdfDAsa1tHYT4+Ml18MCwoa1tIYT4+Ml18MCkrKG1beGE+PjFdfDApfDAsbVt5YT4+MV18MCk7YkUoa1tmYj4+Ml18MCxrWyRhPj4yXXwwLGtbRGE+PjJdfDApO2RvIGlmKCEobVsoa1tEYT4+Ml18MCkrMTA+PjFdJjApKXtpZighKHlCKGtbR2E+PjJdfDApfDApKWJyZWFrO3N4KGtbZmI+PjJdfDAsMzQsKGtbSGE+PjJdfDApKyhtW3hhPj4xXXwwKXwwLGtbcmE+PjJdfDApfDB9d2hpbGUoMCk7aWYoa1tLYT4+Ml18MCl7Y0Uoa1tHYT4+Ml18MCxtW3lhPj4xXXwwLGtbS2E+PjJdfDApO2RFKGtbYWI+PjJdfDAsKGtbSGE+PjJdfDApKyhtW3hhPj4xXXwwKXwwLG1beWE+PjFdfDAsa1tLYT4+Ml18MCl9a1t3YT4+Ml09KGtbd2E+PjJdfDApKyhtW3lhPj4xXXwwKTtpZighKGZCKGtbR2E+PjJdfDApfDApKXskRChrWyRhPj4yXXwwLGtbRGE+PjJdfDApO2JyZWFrfWVsc2V7a1t1YT4+Ml09MTticmVha319ZWxzZXtpZighKGlbdGE+PjBdfDApKWJyZWFrO3N4KGtbZmI+PjJdfDAsNzksMCwoa1tIYT4+Ml18MCkrKG1beGE+PjFdfDApfDApfDA7a1t1YT4+Ml09MDtrW3dhPj4yXT0oa1t3YT4+Ml18MCkrMX13aGlsZSgwKTtiZyhrW1FhPj4yXXwwLGtbTGE+PjJdfDApO2JnKGtbUWE+PjJdfDAsa1tLYT4+Ml18MCk7UWE9R3goa1tmYj4+Ml18MCl8MDtrWyhrWyRhPj4yXXwwKSs1Mj4+Ml09UWE7aWYoa1t3YT4+Ml18MCl7a1tBYT4+Ml09bFszNDQ0NCsoKGtbUGE+PjJdPDwxKSsoa1t1YT4+Ml18MCkpPj4wXTtTaChrW2ZiPj4yXXwwLGtbQWE+PjJdfDAsa1tNYT4+Ml18MCxrW3JhPj4yXXwwLGtbSGE+PjJdfDAsa1t3YT4+Ml18MCl8MH1kbyBpZighKGtbemE+PjJdfDApKXtpZighKGxbKGtbKGtbQmE+PjJdfDApKzEyPj4yXXwwKSs0Mj4+MF0mMzIpKWlmKG1bKGtbVGE+PjJdfDApKzQwPj4xXSYxMDI0KXtRYT0oa1thYj4+Ml18MCkrNDR8MDtSYT0oa1tRYT4+Ml18MCkrMXwwO2tbUWE+PjJdPVJhO2tbTmE+PjJdPVJhO3N4KGtbZmI+PjJdfDAsMTI5LGtbTWE+PjJdfDAsa1tOYT4+Ml18MCl8MDtRQihrW2FiPj4yXXwwLGtbV2E+PjJdfDAsLTEsa1tOYT4+Ml18MCk7dHgoa1tmYj4+Ml18MCwzMyxrW1dhPj4yXXwwLDAsa1tOYT4+Ml18MCl8MDticmVha31lbHNle2VFKGtbVGE+PjJdfDAsa1tCYT4+Ml18MCxrW1dhPj4yXXwwLGtbTWE+PjJdfDApO2JyZWFrfWlmKChrW1dhPj4yXXwwKT09KGtbTWE+PjJdfDApKWJyZWFrO1FhPVRqKGtbKGtbQmE+PjJdfDApKzEyPj4yXXwwKXwwO2tbQ2E+PjJdPVFhO1FhPU1BKGtbYWI+PjJdfDAsbVsoa1tDYT4+Ml18MCkrNTA+PjFdfDApfDA7a1tOYT4+Ml09UWE7a1tYYT4+Ml09MDt3aGlsZSgxKXtpZigoa1tYYT4+Ml18MCk+PShtWyhrW0NhPj4yXXwwKSs1MD4+MV18MCkpYnJlYWs7UWE9KFlBKGtbQmE+PjJdfDAsalsoa1soa1tDYT4+Ml18MCkrND4+Ml18MCkrKGtbWGE+PjJdPDwxKT4+MV18MCl8MCk8PDE2Pj4xNjtrW1JhPj4yXT1RYTt0eChrW2ZiPj4yXXwwLDk2LGtbTWE+PjJdfDAsa1tSYT4+Ml18MCwoa1tOYT4+Ml18MCkrKGtbWGE+PjJdfDApfDApfDA7a1tYYT4+Ml09KGtbWGE+PjJdfDApKzF9U2goa1tmYj4+Ml18MCwzMCxrW1dhPj4yXXwwLGtbVmE+PjJdfDAsa1tOYT4+Ml18MCxtWyhrW0NhPj4yXXwwKSs1MD4+MV18MCl8MH13aGlsZSgwKTtkbyBpZighKGtbKGtbT2E+PjJdfDApKzM2Pj4yXSY0MDk2KSl7Yz0oa1skYT4+Ml18MCkrNDV8MDtpZihrW1BhPj4yXXwwKXtpW2M+PjBdPTY7YnJlYWt9ZWxzZXtpW2M+PjBdPTc7YnJlYWt9fWVsc2UgaVsoa1skYT4+Ml18MCkrNDU+PjBdPS05NTt3aGlsZSgwKTtrWyhrWyRhPj4yXXwwKSs0OD4+Ml09a1tNYT4+Ml07aVsoa1skYT4+Ml18MCkrNDY+PjBdPShrWyhrW09hPj4yXXwwKSszNj4+Ml0mNjU1MzZ8MCkhPTA/MTowO2lmKGtbKGtbT2E+PjJdfDApKzM2Pj4yXSYxNSlicmVhaztpWyhrWyRhPj4yXXwwKSs0Nz4+MF09MX13aGlsZSgwKTtrW2JiPj4yXT1rWyhrW2NiPj4yXXwwKSsyMD4+Ml07a1tYYT4+Ml09a1soa1tjYj4+Ml18MCkrMTI+PjJdO3doaWxlKDEpe2lmKChrW1hhPj4yXXwwKTw9MClicmVhaztrW2ViPj4yXT0wO2RvIGlmKCEobVsoa1tiYj4+Ml18MCkrMTA+PjFdJjYpKXtRYT0oa1tiYj4+Ml18MCkrNDB8MDtSYT0oa1skYT4+Ml18MCkrNzJ8MDtpZigoa1tRYT4+Ml0ma1tSYT4+Ml18MCkhPTA/MTooa1tRYSs0Pj4yXSZrW1JhKzQ+PjJdfDApIT0wKXtpWyhrW1RhPj4yXXwwKSs0Nj4+MF09MTticmVha31rW1phPj4yXT1rW2tbYmI+PjJdPj4yXTtpZigoa1trWyRhPj4yXT4+Ml18MCkhPTA/KGtbKGtbWmE+PjJdfDApKzQ+PjJdJjF8MCk9PTA6MClicmVhaztpZihtWyhrW2JiPj4yXXwwKSsxMD4+MV0mNTEyKXtrW2diPj4yXT1rWyhrWyRhPj4yXXwwKSszNj4+Ml07UmE9YUEoa1tmYj4+Ml18MCwoa1tnYj4+Ml0mMXwwKSE9MD8yMjoyMSwoa1tnYj4+Ml18MCk+Pj4xKXwwO2tbZWI+PjJdPVJhfXNCKGtbYWI+PjJdfDAsa1taYT4+Ml18MCxrW1ZhPj4yXXwwLDE2KTtpZihrW2ViPj4yXXwwKWhBKGtbZmI+PjJdfDAsa1tlYj4+Ml18MCk7UmE9KGtbYmI+PjJdfDApKzEwfDA7altSYT4+MV09bVtSYT4+MV18NH13aGlsZSgwKTtrW1hhPj4yXT0oa1tYYT4+Ml18MCkrLTE7a1tiYj4+Ml09KGtbYmI+PjJdfDApKzQ4fWtbYmI+PjJdPWtbKGtbY2I+PjJdfDApKzIwPj4yXTtrW1hhPj4yXT1rWyhrW2NiPj4yXXwwKSsxMj4+Ml07d2hpbGUoMSl7aWYoKGtbWGE+PjJdfDApPD0wKWJyZWFrO2lmKCgoKCgoKG1bKGtbYmI+PjJdfDApKzEwPj4xXSY2fDApPT0wPyhtWyhrW2JiPj4yXXwwKSsxMj4+MV0mMTMwfDApIT0wOjApPyhtWyhrW2JiPj4yXXwwKSsxMj4+MV0mMjA0OHwwKSE9MDowKT8oa1soa1tiYj4+Ml18MCkrMjA+PjJdfDApPT0oa1tXYT4+Ml18MCk6MCk/KGtba1skYT4+Ml0+PjJdfDApPT0wOjApPyhrW19hPj4yXT1rW2tbYmI+PjJdPj4yXSxnYj1VYSxnYj1oRShrW2NiPj4yXXwwLGtbV2E+PjJdfDAsa1soa1tiYj4+Ml18MCkrMjg+PjJdfDAsa1tnYj4+Ml18MCxrW2diKzQ+PjJdfDAsMTMxLDApfDAsa1tZYT4+Ml09Z2IsKGtbWWE+PjJdfDApIT0wKTowKT8obVsoa1tZYT4+Ml18MCkrMTA+PjFdJjR8MCk9PTA6MCl7Yj1kYjtjPWtba1tZYT4+Ml0+PjJdfDA7ZD1iKzQ4fDA7ZG97a1tiPj4yXT1rW2M+PjJdO2I9Yis0fDA7Yz1jKzR8MH13aGlsZSgoYnwwKTwoZHwwKSk7a1tkYisxMj4+Ml09a1soa1tfYT4+Ml18MCkrMTI+PjJdO3NCKGtbYWI+PjJdfDAsZGIsa1tWYT4+Ml18MCwxNil9a1tYYT4+Ml09KGtbWGE+PjJdfDApKy0xO2tbYmI+PjJdPShrW2JiPj4yXXwwKSs0OH1iOmRvIGlmKGtba1skYT4+Ml0+PjJdfDApe2diPUd4KGtbZmI+PjJdfDApfDA7a1soa1skYT4+Ml18MCkrMjg+PjJdPWdiO3N4KGtbZmI+PjJdfDAsNzYsMSxrW2tbJGE+PjJdPj4yXXwwKXwwO09DKGtbYWI+PjJdfDApO2tbYmI+PjJdPWtbKGtbY2I+PjJdfDApKzIwPj4yXTtrW1hhPj4yXT0wO3doaWxlKDEpe2lmKChrW1hhPj4yXXwwKT49KGtbKGtbY2I+PjJdfDApKzEyPj4yXXwwKSlicmVhayBiO2lmKChtWyhrW2JiPj4yXXwwKSsxMD4+MV0mNnwwKT09MD8oZmI9KGtbYmI+PjJdfDApKzQwfDAsZ2I9KGtbJGE+PjJdfDApKzcyfDAsISgoa1tmYj4+Ml0ma1tnYj4+Ml18MCkhPTA/MTooa1tmYis0Pj4yXSZrW2diKzQ+PjJdfDApIT0wKSk6MCl7c0Ioa1thYj4+Ml18MCxrW2tbYmI+PjJdPj4yXXwwLGtbVmE+PjJdfDAsMTYpO2diPShrW2JiPj4yXXwwKSsxMHwwO2pbZ2I+PjFdPW1bZ2I+PjFdfDR9a1tYYT4+Ml09KGtbWGE+PjJdfDApKzE7a1tiYj4+Ml09KGtbYmI+PjJdfDApKzQ4fX13aGlsZSgwKTtlYj0oa1skYT4+Ml18MCkrNzJ8MDtnYj1rW2ViKzQ+PjJdfDA7ZmI9U2E7a1tmYj4+Ml09a1tlYj4+Ml07a1tmYis0Pj4yXT1nYjtmYj1TYTtnYj1mYjtnYj1rW2diPj4yXXwwO2ZiPWZiKzR8MDtmYj1rW2ZiPj4yXXwwO0w9ZmI7cj1oYjtyZXR1cm4gZ2J8MH1mdW5jdGlvbiBZRChhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wO2c9cjtyPXIrMzJ8MDtmPWc7Yz1nKzE2fDA7ZD1nKzEyfDA7ZT1nKzh8MDtrW2M+PjJdPWE7a1tkPj4yXT1iO2tbZT4+Ml09MDt3aGlsZSgxKXtpZigoa1tlPj4yXXwwKT49KGtba1tjPj4yXT4+Ml18MCkpe2I9NjticmVha31hPWtbZT4+Ml18MDtpZigoa1soa1tjPj4yXXwwKSs0KyhrW2U+PjJdPDwyKT4+Ml18MCk9PShrW2Q+PjJdfDApKXtiPTQ7YnJlYWt9a1tlPj4yXT1hKzF9aWYoKGJ8MCk9PTQpe2Q9ZVMoMSwwLGF8MCl8MDtlPWY7a1tlPj4yXT1kO2tbZSs0Pj4yXT1MO2U9ZjtmPWU7Zj1rW2Y+PjJdfDA7ZT1lKzR8MDtlPWtbZT4+Ml18MDtMPWU7cj1nO3JldHVybiBmfDB9ZWxzZSBpZigoYnwwKT09Nil7ZT1mO2tbZT4+Ml09MDtrW2UrND4+Ml09MDtlPWY7Zj1lO2Y9a1tmPj4yXXwwO2U9ZSs0fDA7ZT1rW2U+PjJdfDA7TD1lO3I9ZztyZXR1cm4gZnwwfXJldHVybiAwfWZ1bmN0aW9uIFpEKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxuPTAsbz0wLHA9MCxxPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTAsRT0wLEY9MCxHPTAsSD0wLEk9MCxKPTAsSz0wLEw9MCxNPTAsTj0wLE89MCxQPTAsUT0wLFI9MCxTPTA7Uz1yO3I9cisxMjh8MDt6PVMrMTIwfDA7QT1TKzExNnwwO0I9UysxMTJ8MDtDPVMrMTA4fDA7RD1TKzEwNHwwO0U9UysxMDB8MDtnPVMrOTZ8MDtQPVMrOTJ8MDtRPVMrODh8MDtMPVMrODR8MDtHPVMrODB8MDtNPVMrNzZ8MDtOPVMrNzJ8MDtPPVMrNjh8MDtIPVMrNjR8MDtzPVMrNjB8MDtGPVMrNTZ8MDt5PVMrNTJ8MDtoPVMrNDh8MDt3PVMrNDR8MDt2PVMrNDB8MDt4PVMrMzZ8MDt1PVMrMzJ8MDtuPVMrMjh8MDtwPVMrMjR8MDtvPVMrMjB8MDt0PVMrMTZ8MDtxPVMrMTJ8MDtKPVMrOHwwO0s9Uys0fDA7ST1TO2tbQT4+Ml09YTtrW0I+PjJdPWI7a1tDPj4yXT1jO2tbRD4+Ml09ZDtrW0U+PjJdPWU7a1tnPj4yXT1mO2tbUD4+Ml09a1trW0I+PjJdPj4yXTtrW1E+PjJdPWtbKGtbQT4+Ml18MCkrOD4+Ml07ZG8gaWYoKGxba1tQPj4yXT4+MF18MCkhPTM3PyhsW2tbUD4+Ml0+PjBdfDApIT0yOTowKXtpZigobFtrW1A+PjJdPj4wXXwwKT09MzQpe2tbTD4+Ml09a1tnPj4yXTtzeChrW1E+PjJdfDAsNzksMCxrW0w+PjJdfDApfDA7YnJlYWt9a1tHPj4yXT01O2tbTz4+Ml09a1soa1tDPj4yXXwwKSs2ND4+Ml07a1tzPj4yXT0wO2tbRj4+Ml09MDtpZigoKGtbKGtbTz4+Ml18MCkrMzY+PjJdJjEwMjR8MCk9PTA/KGtbKGtbTz4+Ml18MCkrMjQrOD4+Ml18MCkhPTA6MCk/KGxbKGtbKGtbKGtbTz4+Ml18MCkrMjQrOD4+Ml18MCkrMjg+PjJdfDApKyhrW0Q+PjJdfDApPj4wXXwwKSE9MDowKWtbRT4+Ml09KChrW0U+PjJdfDApIT0wXjEpJjE7a1tMPj4yXT1rW2c+PjJdO2tbSD4+Ml09MDt3aGlsZSgxKXtpZigoa1tIPj4yXXwwKT49KGtbRD4+Ml18MCkpYnJlYWs7aWYoKGtbKGtbKGtbTz4+Ml18MCkrNDg+PjJdfDApKyhrW0g+PjJdPDwyKT4+Ml18MCkhPTA/KGtba1soa1soa1tPPj4yXXwwKSs0OD4+Ml18MCkrKGtbSD4+Ml08PDIpPj4yXT4+Ml18MCk9PShrW1A+PjJdfDApOjApe1I9MTQ7YnJlYWt9a1tIPj4yXT0oa1tIPj4yXXwwKSsxfWlmKChSfDApPT0xNCl7JEQoa1tDPj4yXXwwLGtbQj4+Ml18MCk7a1t6Pj4yXT1rW2c+PjJdO1I9a1t6Pj4yXXwwO3I9UztyZXR1cm4gUnwwfWtbSD4+Ml09a1tEPj4yXTt3aGlsZSgxKXtpZigoa1tIPj4yXXwwKT49KG1bKGtbTz4+Ml18MCkrNDA+PjFdfDApKWJyZWFrO2lmKChrWyhrWyhrW08+PjJdfDApKzQ4Pj4yXXwwKSsoa1tIPj4yXTw8Mik+PjJdfDApIT0wPyhrW2tbKGtbKGtbTz4+Ml18MCkrNDg+PjJdfDApKyhrW0g+PjJdPDwyKT4+Ml0+PjJdfDApPT0oa1tQPj4yXXwwKTowKWtbcz4+Ml09KGtbcz4+Ml18MCkrMTtrW0g+PjJdPShrW0g+PjJdfDApKzF9aWYoKGtbKGtbUD4+Ml18MCkrND4+Ml0mMjA0OHwwKSE9MD8oa1trW2tbKGtbUD4+Ml18MCkrMjA+PjJdPj4yXT4+Ml18MCkhPTE6MCl7a1t5Pj4yXT1rWyhrW1A+PjJdfDApKzIwPj4yXTtrW2g+PjJdPWtba1tBPj4yXT4+Ml07a1t3Pj4yXT1rW2tbeT4+Ml0+PjJdO2tbdj4+Ml09a1soa1soa1tQPj4yXXwwKSsxMj4+Ml18MCkrMjA+PjJdO2tbeD4+Ml09MDtrW3U+PjJdPTA7a1tIPj4yXT1rW0Q+PjJdO3doaWxlKDEpe2lmKChrW0g+PjJdfDApPj0obVsoa1tPPj4yXXwwKSs0MD4+MV18MCkpYnJlYWs7aWYoKGtba1soa1soa1tPPj4yXXwwKSs0OD4+Ml18MCkrKGtbSD4+Ml08PDIpPj4yXT4+Ml18MCk9PShrW1A+PjJdfDApKXtrW24+PjJdPShrWyhrWyhrWyhrW08+PjJdfDApKzQ4Pj4yXXwwKSsoa1tIPj4yXTw8Mik+PjJdfDApKzI0Pj4yXXwwKS0xO2I9U3koa1toPj4yXXwwLGtbKGtbKGtbdz4+Ml18MCkrND4+Ml18MCkrKChrW24+PjJdfDApKjIwfDApPj4yXXwwLDApfDA7a1twPj4yXT1iO2I9U3koa1toPj4yXXwwLGtbKGtbKGtbdj4+Ml18MCkrND4+Ml18MCkrKChrW24+PjJdfDApKjIwfDApPj4yXXwwLDApfDA7a1tvPj4yXT1iO2I9Yncoa1tBPj4yXXwwLGtbeD4+Ml18MCxrW3A+PjJdfDApfDA7a1t4Pj4yXT1iO2I9Yncoa1tBPj4yXXwwLGtbdT4+Ml18MCxrW28+PjJdfDApfDA7a1t1Pj4yXT1ifWtbSD4+Ml09KGtbSD4+Ml18MCkrMX1pZighKGlbKGtbaD4+Ml18MCkrNjk+PjBdfDApKXtrW3Q+PjJdPWtbKGtbUD4+Ml18MCkrMTI+PjJdO2E6ZG8gaWYoa1soa1t5Pj4yXXwwKSs0ND4+Ml18MCl7a1txPj4yXT1rWyhrW3k+PjJdfDApKzQ0Pj4yXTtrW0g+PjJdPTA7d2hpbGUoMSl7aWYoKGtbSD4+Ml18MCk+PShrW2tbcT4+Ml0+PjJdfDApKWJyZWFrIGE7alsoa1soa1txPj4yXXwwKSs0Pj4yXXwwKSsoKGtbSD4+Ml18MCkqMjB8MCkrMTY+PjFdPTA7a1tIPj4yXT0oa1tIPj4yXXwwKSsxfX13aGlsZSgwKTtnPWtbdT4+Ml18MDtpZigoa1trW3U+PjJdPj4yXXwwKT09MSlrWyhrW1A+PjJdfDApKzEyPj4yXT1rW2tbZys0Pj4yXT4+Ml07ZWxzZXtrWyhrW3Q+PjJdfDApKzIwPj4yXT1nO2I9Q2goa1trW0E+PjJdPj4yXXwwLGtbcz4+Ml08PDIsMCl8MDtrW0Y+PjJdPWJ9a1trW3k+PjJdPj4yXT1rW3g+PjJdO2I9eEIoa1tBPj4yXXwwLGtbUD4+Ml18MCw0LDAsa1tGPj4yXXwwKXwwO2tbRz4+Ml09YjtrW2tbeT4+Ml0+PjJdPWtbdz4+Ml07a1soa1t0Pj4yXXwwKSsyMD4+Ml09a1t2Pj4yXTtrWyhrW1A+PjJdfDApKzEyPj4yXT1rW3Q+PjJdfW92KGtba1tBPj4yXT4+Ml18MCxrW3U+PjJdfDApO292KGtba1tBPj4yXT4+Ml18MCxrW3g+PjJdfDApfWVsc2V7eT14QihrW0E+PjJdfDAsa1tQPj4yXXwwLDQsMCwwKXwwO2tbRz4+Ml09eX1pZigoa1tHPj4yXXwwKT09NClrW0U+PjJdPSgoa1tFPj4yXXwwKSE9MF4xKSYxO2tbTT4+Ml09a1soa1tQPj4yXXwwKSsyOD4+Ml07c3goa1tRPj4yXXwwLChrW0U+PjJdfDApIT0wPzUzOjU3LGtbTT4+Ml18MCwwKXwwO3k9KGtbTz4+Ml18MCkrMzZ8MDtrW3k+PjJdPWtbeT4+Ml18MjA0ODtpZighKGtbKGtbQz4+Ml18MCkrNTY+PjJdfDApKXt5PWVBKGtbUT4+Ml18MCl8MDtrWyhrW0M+PjJdfDApKzE2Pj4yXT15fWtbSD4+Ml09a1soa1tDPj4yXXwwKSs1Nj4+Ml07eT0oa1tDPj4yXXwwKSs1NnwwO2tbeT4+Ml09KGtbeT4+Ml18MCkrKGtbcz4+Ml18MCk7eT1aeChrW2tbQT4+Ml0+PjJdfDAsa1soa1tDPj4yXXwwKSs1Nis0Pj4yXXwwLChrWyhrW0M+PjJdfDApKzU2Pj4yXXwwKSoxMnwwLDApfDA7a1soa1tDPj4yXXwwKSs1Nis0Pj4yXT15O2tbTj4+Ml09a1soa1tDPj4yXXwwKSs1Nis0Pj4yXTtiOmRvIGlmKGtbTj4+Ml18MCl7a1tKPj4yXT0wO2tbTj4+Ml09KGtbTj4+Ml18MCkrKChrW0g+PjJdfDApKjEyfDApO2tbSD4+Ml09a1tEPj4yXTt3aGlsZSgxKXtpZigoa1tIPj4yXXwwKT49KG1bKGtbTz4+Ml18MCkrNDA+PjFdfDApKWJyZWFrIGI7aWYoKGtba1soa1soa1tPPj4yXXwwKSs0OD4+Ml18MCkrKGtbSD4+Ml08PDIpPj4yXT4+Ml18MCk9PShrW1A+PjJdfDApKXtrW0s+PjJdPShrW0w+PjJdfDApKyhrW0g+PjJdfDApLShrW0Q+PjJdfDApO2lmKChrW0c+PjJdfDApPT0xKXt5PXN4KGtbUT4+Ml18MCwxMjMsa1tNPj4yXXwwLGtbSz4+Ml18MCl8MDtrWyhrW04+PjJdfDApKzQ+PjJdPXl9ZWxzZXtpZihrW0Y+PjJdfDApe2c9a1tKPj4yXXwwO2tbSj4+Ml09ZysxO2c9a1soa1tGPj4yXXwwKSsoZzw8Mik+PjJdfDB9ZWxzZSBnPTA7a1tJPj4yXT1nO3k9dHgoa1tRPj4yXXwwLDk2LGtbTT4+Ml18MCxrW0k+PjJdfDAsa1tLPj4yXXwwKXwwO2tbKGtbTj4+Ml18MCkrND4+Ml09eX1hQShrW1E+PjJdfDAsMzQsa1tLPj4yXXwwKXwwO2lmKChrW0g+PjJdfDApPT0oa1tEPj4yXXwwKSl7a1trW04+PjJdPj4yXT1rW00+PjJdO2lbKGtbTj4+Ml18MCkrOD4+MF09KGtbRT4+Ml18MCkhPTA/NDo1fWVsc2UgaVsoa1tOPj4yXXwwKSs4Pj4wXT0tOTU7a1tOPj4yXT0oa1tOPj4yXXwwKSsxMn1rW0g+PjJdPShrW0g+PjJdfDApKzF9fWVsc2Uga1soa1tDPj4yXXwwKSs1Nj4+Ml09MDt3aGlsZSgwKTtiZyhrW2tbQT4+Ml0+PjJdfDAsa1tGPj4yXXwwKX1lbHNlIFI9Mzt3aGlsZSgwKTtpZigoUnwwKT09Myl7Uj1hQihrW0E+PjJdfDAsa1soa1tQPj4yXXwwKSsxNj4+Ml18MCxrW2c+PjJdfDApfDA7a1tMPj4yXT1SfSREKGtbQz4+Ml18MCxrW0I+PjJdfDApO2tbej4+Ml09a1tMPj4yXTtSPWtbej4+Ml18MDtyPVM7cmV0dXJuIFJ8MH1mdW5jdGlvbiBfRChhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGk9MCxqPTAsbD0wLG09MCxuPTA7bj1yO3I9ciszMnwwO2U9bisyOHwwO2Y9bisyNHwwO2c9bisyMHwwO2g9bisxNnwwO209bisxMnwwO2o9bis4fDA7aT1uKzR8MDtsPW47a1tlPj4yXT1hO2tbZj4+Ml09YjtrW2c+PjJdPWM7a1toPj4yXT1kO2lmKCEoZkIoa1tmPj4yXXwwKXwwKSl7JEEoa1tlPj4yXXwwLGtbZj4+Ml18MCxrW2c+PjJdfDApO3I9bjtyZXR1cm59aWYoa1soa1tmPj4yXXwwKSs0Pj4yXSYyMDQ4KXtrW20+PjJdPWtbKGtbZT4+Ml18MCkrOD4+Ml07YT1uQihrW2U+PjJdfDAsa1tmPj4yXXwwLDAsMCl8MDtrW2o+PjJdPWE7dHgoa1ttPj4yXXwwLDg0LGtbaj4+Ml18MCxrW2c+PjJdfDAsKGtbaD4+Ml18MCktMXwwKXwwO3I9bjtyZXR1cm59a1tsPj4yXT1rWyhrW2Y+PjJdfDApKzIwPj4yXTtrW2k+PjJdPTA7d2hpbGUoMSl7aWYoKGtbaT4+Ml18MCk+PShrW2g+PjJdfDApKWJyZWFrOyRBKGtbZT4+Ml18MCxrWyhrWyhrW2w+PjJdfDApKzQ+PjJdfDApKygoa1tpPj4yXXwwKSoyMHwwKT4+Ml18MCwoa1tnPj4yXXwwKSsoa1tpPj4yXXwwKXwwKTtrW2k+PjJdPShrW2k+PjJdfDApKzF9cj1uO3JldHVybn1mdW5jdGlvbiAkRChhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTA7Zj1yO3I9cisxNnwwO2M9Zis4fDA7ZD1mKzR8MDtlPWY7a1tjPj4yXT1hO2tbZD4+Ml09YjtrW2U+PjJdPTA7d2hpbGUoMSl7aWYoIShrW2Q+PjJdfDApKXtjPTE0O2JyZWFrfWlmKChtWyhrW2Q+PjJdfDApKzEwPj4xXXwwKSY0KXtjPTE0O2JyZWFrfWlmKChrW2tbYz4+Ml0+PjJdfDApIT0wPyhrWyhrW2tbZD4+Ml0+PjJdfDApKzQ+PjJdJjF8MCk9PTA6MCl7Yz0xNDticmVha31hPShrW2M+PjJdfDApKzcyfDA7Yj0oa1tkPj4yXXwwKSs0MHwwO2lmKCEoKGtbYT4+Ml0ma1tiPj4yXXwwKT09MD8oa1thKzQ+PjJdJmtbYis0Pj4yXXwwKT09MDowKSl7Yz0xNDticmVha31pZigoa1tlPj4yXXwwKSE9MD8oKG1bKGtbZD4+Ml18MCkrMTA+PjFdfDApJjEwMjR8MCkhPTA6MCl7Yj0oa1tkPj4yXXwwKSsxMHwwO2pbYj4+MV09bVtiPj4xXXwwfDUxMn1lbHNle2I9KGtbZD4+Ml18MCkrMTB8MDtqW2I+PjFdPW1bYj4+MV18MHw0fWlmKChrWyhrW2Q+PjJdfDApKzE2Pj4yXXwwKTwwKXtjPTE0O2JyZWFrfWtbZD4+Ml09KGtbKGtbKGtbZD4+Ml18MCkrND4+Ml18MCkrMjA+PjJdfDApKygoa1soa1tkPj4yXXwwKSsxNj4+Ml18MCkqNDh8MCk7Yj0oa1tkPj4yXXwwKSsxNHwwO2lbYj4+MF09KGlbYj4+MF18MCkrLTE8PDI0Pj4yNDtpZihsWyhrW2Q+PjJdfDApKzE0Pj4wXXwwKXtjPTE0O2JyZWFrfWtbZT4+Ml09KGtbZT4+Ml18MCkrMX1pZigoY3wwKT09MTQpe3I9ZjtyZXR1cm59fWZ1bmN0aW9uIGFFKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGw9MCxuPTAsbz0wLHA9MCxxPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MDtBPXI7cj1yKzgwfDA7aD1BKzYwfDA7bD1BKzU2fDA7bj1BKzUyfDA7Qz1BKzQ4fDA7bz1BKzQ0fDA7cT1BKzY2fDA7Zz1BKzY0fDA7eT1BKzQwfDA7Qj1BKzM2fDA7dj1BKzMyfDA7dD1BKzI4fDA7cD1BKzI0fDA7eD1BKzIwfDA7cz1BKzE2fDA7ej1BKzEyfDA7Zj1BKzh8MDt3PUErNHwwO3U9QTtrW2g+PjJdPWE7a1tsPj4yXT1iO2tbbj4+Ml09YztrW0M+PjJdPWQ7a1tvPj4yXT1lO2tbeT4+Ml09a1soa1toPj4yXXwwKSs4Pj4yXTtrW3Q+PjJdPWtbKGtbbD4+Ml18MCkrNjQ+PjJdO2pbcT4+MV09alsoa1t0Pj4yXXwwKSsyND4+MV18MDtqW2c+PjFdPWpbKGtbdD4+Ml18MCkrNDI+PjFdfDA7a1tCPj4yXT1rWyhrW3Q+PjJdfDApKzI0Kzg+PjJdO2tbeD4+Ml09KGtbKGtbaD4+Ml18MCkrNDQ+PjJdfDApKzE7a1tzPj4yXT0obVsoa1t0Pj4yXXwwKSsyND4+MV18MCkrKGtbQz4+Ml18MCk7ZT0oa1toPj4yXXwwKSs0NHwwO2tbZT4+Ml09KGtbZT4+Ml18MCkrKGtbcz4+Ml18MCk7ZT1rW2tbaD4+Ml0+PjJdfDA7ZT1BaChlLE1DKGtba1toPj4yXT4+Ml18MCxrW0I+PjJdfDApfDApfDA7a1t6Pj4yXT1lO2E6ZG8gaWYoaltnPj4xXXwwKXtrW2Y+PjJdPWtbKGtbbD4+Ml18MCkrOD4+Ml07YUEoa1t5Pj4yXXwwLChrW24+PjJdfDApIT0wPzUzOjU3LGtbZj4+Ml18MCl8MDtDPXB4KGtbeT4+Ml18MCwxMyl8MDtrW3A+PjJdPUM7Qz1TaChrW3k+PjJdfDAsKGtbbj4+Ml18MCkhPTA/MjM6MjYsa1tmPj4yXXwwLDAsa1t4Pj4yXXwwLG1bZz4+MV18MCl8MDtrWyhrW2w+PjJdfDApKzIwPj4yXT1DO2hBKGtbeT4+Ml18MCxrW3A+PjJdfDApO2tbcD4+Ml09MDt3aGlsZSgxKXtpZigoa1twPj4yXXwwKT49KG1bZz4+MV18MCkpYnJlYWsgYTt0eChrW3k+PjJdfDAsOTYsa1tmPj4yXXwwLGtbcD4+Ml18MCwoa1t4Pj4yXXwwKSsoa1twPj4yXXwwKXwwKXwwO2tbcD4+Ml09KGtbcD4+Ml18MCkrMX19d2hpbGUoMCk7a1twPj4yXT1tW2c+PjFdO3doaWxlKDEpe2lmKChrW3A+PjJdfDApPj0obVtxPj4xXXwwKSlicmVhaztrW3Y+PjJdPWtbKGtbKGtbdD4+Ml18MCkrNDg+PjJdfDApKyhrW3A+PjJdPDwyKT4+Ml07Qz1aRChrW2g+PjJdfDAsa1t2Pj4yXXwwLGtbbD4+Ml18MCxrW3A+PjJdfDAsa1tuPj4yXXwwLChrW3g+PjJdfDApKyhrW3A+PjJdfDApfDApfDA7a1t3Pj4yXT1DO2RvIGlmKChrW3c+PjJdfDApIT0oKGtbeD4+Ml18MCkrKGtbcD4+Ml18MCl8MCkpaWYoKGtbcz4+Ml18MCk9PTEpe0h4KGtbaD4+Ml18MCxrW3g+PjJdfDApO2tbeD4+Ml09a1t3Pj4yXTticmVha31lbHNle3N4KGtbeT4+Ml18MCw4NSxrW3c+PjJdfDAsKGtbeD4+Ml18MCkrKGtbcD4+Ml18MCl8MCl8MDticmVha313aGlsZSgwKTtjPWtbdj4+Ml18MDtpZihtWyhrW3Y+PjJdfDApKzEyPj4xXSYxKXtpZigoa1t6Pj4yXXwwKSE9MD8oa1soa1tjPj4yXXwwKSs0Pj4yXSYyMDQ4fDApIT0wOjApaVsoa1t6Pj4yXXwwKSsoa1twPj4yXXwwKT4+MF09NjV9ZWxzZSBpZighKG1bYysxMj4+MV0mMjU2KSl7a1t1Pj4yXT1rWyhrW2tbdj4+Ml0+PjJdfDApKzE2Pj4yXTtpZigobVsoa1t2Pj4yXXwwKSsxMD4+MV0mMjA0OHwwKT09MD8oeUIoa1t1Pj4yXXwwKXwwKSE9MDowKXN4KGtbeT4+Ml18MCwzNCwoa1t4Pj4yXXwwKSsoa1twPj4yXXwwKXwwLGtbKGtbbD4+Ml18MCkrMTI+PjJdfDApfDA7aWYoa1t6Pj4yXXwwKXtpZigoKEJCKGtbdT4+Ml18MCxpWyhrW3o+PjJdfDApKyhrW3A+PjJdfDApPj4wXXwwKXwwKTw8MjQ+PjI0fDApPT02NSlpWyhrW3o+PjJdfDApKyhrW3A+PjJdfDApPj4wXT02NTtpZihtRShrW3U+PjJdfDAsaVsoa1t6Pj4yXXwwKSsoa1twPj4yXXwwKT4+MF18MCl8MClpWyhrW3o+PjJdfDApKyhrW3A+PjJdfDApPj4wXT02NX19a1twPj4yXT0oa1twPj4yXXwwKSsxfWtba1tvPj4yXT4+Ml09a1t6Pj4yXTtyPUE7cmV0dXJuIGtbeD4+Ml18MH1mdW5jdGlvbiBiRShhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTA7Zz1yO3I9cisxNnwwO2Q9ZysxMnwwO2U9Zys4fDA7aD1nKzR8MDtmPWc7a1tkPj4yXT1hO2tbZT4+Ml09YjtrW2g+PjJdPWM7aWYoISgobVsoa1toPj4yXXwwKSsxMD4+MV18MCkmMjU2KSl7cj1nO3JldHVybn1oPW9BKGtbZD4+Ml18MCwtMSl8MDtrW2Y+PjJdPWg7a1soa1tmPj4yXXwwKSsxMj4+Ml09KGtbKGtbZT4+Ml18MCkrMzY+PjJdfDApPj4+MTtpWyhrW2Y+PjJdfDApKzM+PjBdPWtbKGtbZT4+Ml18MCkrMzY+PjJdJjE7cj1nO3JldHVybn1mdW5jdGlvbiBjRShhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wO2o9cjtyPXIrMzJ8MDtkPWorMTZ8MDtlPWorMTJ8MDtmPWorOHwwO2c9ais0fDA7aD1qO2tbZD4+Ml09YTtrW2U+PjJdPWI7a1tmPj4yXT1jO2tbZz4+Ml09MDt3aGlsZSgxKXtpZigoa1tnPj4yXXwwKT49KGtbZT4+Ml18MCkpYnJlYWs7Yz16QihrW2Q+PjJdfDAsa1tnPj4yXXwwKXwwO2tbaD4+Ml09YztpZighKCgoQkIoa1toPj4yXXwwLGlbKGtbZj4+Ml18MCkrKGtbZz4+Ml18MCk+PjBdfDApfDApPDwyND4+MjR8MCkhPTY1PyhtRShrW2g+PjJdfDAsaVsoa1tmPj4yXXwwKSsoa1tnPj4yXXwwKT4+MF18MCl8MCk9PTA6MCkpaVsoa1tmPj4yXXwwKSsoa1tnPj4yXXwwKT4+MF09NjU7a1tnPj4yXT0oa1tnPj4yXXwwKSsxfXI9ajtyZXR1cm59ZnVuY3Rpb24gZEUoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTAsbD0wO2w9cjtyPXIrMzJ8MDtlPWwrMTZ8MDtmPWwrMTJ8MDtnPWwrOHwwO2g9bCs0fDA7aj1sO2tbZT4+Ml09YTtrW2Y+PjJdPWI7a1tnPj4yXT1jO2tbaD4+Ml09ZDtrW2o+PjJdPWtbKGtbZT4+Ml18MCkrOD4+Ml07aWYoIShrW2g+PjJdfDApKXtyPWw7cmV0dXJufXdoaWxlKDEpe2lmKChrW2c+PjJdfDApPD0wKWJyZWFrO2lmKChpW2tbaD4+Ml0+PjBdfDApIT02NSlicmVhaztrW2c+PjJdPShrW2c+PjJdfDApKy0xO2tbZj4+Ml09KGtbZj4+Ml18MCkrMTtrW2g+PjJdPShrW2g+PjJdfDApKzF9d2hpbGUoMSl7aWYoKGtbZz4+Ml18MCk+MSljPShpWyhrW2g+PjJdfDApKygoa1tnPj4yXXwwKS0xKT4+MF18MCk9PTY1O2Vsc2UgYz0wO2I9a1tnPj4yXXwwO2lmKCFjKWJyZWFrO2tbZz4+Ml09YistMX1pZigoYnwwKTw9MCl7cj1sO3JldHVybn13eChrW2o+PjJdfDAsOTgsa1tmPj4yXXwwLGtbZz4+Ml18MCwwLGtbaD4+Ml18MCxrW2c+PjJdfDApfDA7ZUIoa1tlPj4yXXwwLGtbZj4+Ml18MCxrW2c+PjJdfDApO3I9bDtyZXR1cm59ZnVuY3Rpb24gZUUoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxpPTAsbD0wLG49MCxvPTAscD0wLHE9MDtuPXI7cj1yKzQ4fDA7bz1uKzMyfDA7ZT1uKzI4fDA7cD1uKzI0fDA7cT1uKzIwfDA7aD1uKzE2fDA7bD1uKzEyfDA7Zz1uKzh8MDtpPW4rNHwwO2Y9bjtrW28+PjJdPWE7a1tlPj4yXT1iO2tbcD4+Ml09YztrW3E+PjJdPWQ7a1toPj4yXT1rW2tbbz4+Ml0+PjJdO2tbbD4+Ml09a1soa1toPj4yXXwwKSs4Pj4yXTt0eChrW2w+PjJdfDAsMTI4LGtbcT4+Ml18MCwwLGtbcD4+Ml18MCl8MDtpZighKG1bKGtbbz4+Ml18MCkrNDA+PjFdJjMyKSl7cj1uO3JldHVybn1jPWtbaD4+Ml18MDtpZihrWyhrW2g+PjJdfDApKzEyND4+Ml18MCljPWtbYysxMjQ+PjJdfDA7aWYoa1tjKzkyPj4yXXwwKXtyPW47cmV0dXJufWtbaT4+Ml09a1soa1tlPj4yXXwwKSsxMj4+Ml07cT1DaChrW2tbaD4+Ml0+PjJdfDAsKGpbKGtbaT4+Ml18MCkrMzQ+PjFdfDApKzE8PDIsMCl8MDtrW2Y+PjJdPXE7aWYoIShrW2Y+PjJdfDApKXtyPW47cmV0dXJufWtba1tmPj4yXT4+Ml09alsoa1tpPj4yXXwwKSszND4+MV07a1tnPj4yXT0wO3doaWxlKDEpe2lmKChrW2c+PjJdfDApPj0oKG1bKGtbZT4+Ml18MCkrNTI+PjFdfDApLTF8MCkpYnJlYWs7aWYoKGpbKGtbKGtbZT4+Ml18MCkrND4+Ml18MCkrKGtbZz4+Ml08PDEpPj4xXXwwKT49MClrWyhrW2Y+PjJdfDApKygoalsoa1soa1tlPj4yXXwwKSs0Pj4yXXwwKSsoa1tnPj4yXTw8MSk+PjFdfDApKzE8PDIpPj4yXT0oa1tnPj4yXXwwKSsxO2tbZz4+Ml09KGtbZz4+Ml18MCkrMX1XaChrW2w+PjJdfDAsLTEsa1tmPj4yXXwwLC0xNSk7cj1uO3JldHVybn1mdW5jdGlvbiBmRShhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxpPTAsaj0wLGw9MCxtPTA7aT1yO3I9ciszMnwwO2Y9aSsyMHwwO209aSsxNnwwO2w9aSsxMnwwO2o9aSs4fDA7Zz1pKzR8MDtoPWk7a1tmPj4yXT1hO2tbbT4+Ml09YjtrW2w+PjJdPWM7a1tqPj4yXT1kO2tbZz4+Ml09ZTtiPWJCKGtbZj4+Ml18MCxrW20+PjJdfDAsa1tsPj4yXXwwLGtbaj4+Ml18MCxrW2c+PjJdfDAsMCl8MDtrW2g+PjJdPWI7aWYoKGtbaD4+Ml18MCk9PShrW2c+PjJdfDApKXtyPWk7cmV0dXJufXN4KGtbKGtbZj4+Ml18MCkrOD4+Ml18MCw4NSxrW2g+PjJdfDAsa1tnPj4yXXwwKXwwO3I9aTtyZXR1cm59ZnVuY3Rpb24gZ0UoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTA7ZD1yO3I9cisxNnwwO2Y9ZCs4fDA7ZT1kKzR8MDtnPWQ7a1tmPj4yXT1hO2tbZT4+Ml09YjtrW2c+PjJdPWM7YT1rW2c+PjJdfDA7Yz0ob0Eoa1tmPj4yXXwwLGtbZT4+Ml18MCl8MCkrNHwwO2tbYz4+Ml09YTtyPWQ7cmV0dXJufWZ1bmN0aW9uIGhFKGEsYixjLGQsZSxmLGcpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO3ZhciBoPTAsaT0wLGo9MCxsPTAsbj0wLG89MCxwPTAscT0wLHM9MCx0PTAsdT0wO3A9cjtyPXIrMTQ0fDA7bD1wKzEzMnwwO3U9cCsxMjh8MDt0PXArMTI0fDA7cz1wKzEyMHwwO2g9cDtpPXArMTE2fDA7cT1wKzExMnwwO289cCsxMDh8MDtuPXArMTA0fDA7aj1wKzh8MDtrW3U+PjJdPWE7a1t0Pj4yXT1iO2tbcz4+Ml09YzthPWg7a1thPj4yXT1kO2tbYSs0Pj4yXT1lO2tbaT4+Ml09ZjtrW3E+PjJdPWc7a1tvPj4yXT0wO2E9aUUoaixrW3U+PjJdfDAsa1t0Pj4yXXwwLGtbcz4+Ml18MCxrW2k+PjJdfDAsa1txPj4yXXwwKXwwO2tbbj4+Ml09YTtrW2k+PjJdPWtbaT4+Ml0mMTMwO3doaWxlKDEpe2lmKCEoa1tuPj4yXXwwKSl7ZD0xMDticmVha310PShrW24+PjJdfDApKzMyfDA7dT1oO2lmKChrW3Q+PjJdJmtbdT4+Ml18MCk9PTA/KGtbdCs0Pj4yXSZrW3UrND4+Ml18MCk9PTA6MCl7dT0oa1tuPj4yXXwwKSszMnwwO2lmKChrW3U+PjJdfDApPT0wJihrW3UrND4+Ml18MCk9PTA/KChtWyhrW24+PjJdfDApKzEyPj4xXXwwKSZrW2k+PjJdfDApIT0wOjApe2Q9NjticmVha31pZighKGtbbz4+Ml18MCkpa1tvPj4yXT1rW24+PjJdfXU9akUoail8MDtrW24+PjJdPXV9aWYoKGR8MCk9PTYpe2tbbD4+Ml09a1tuPj4yXTt1PWtbbD4+Ml18MDtyPXA7cmV0dXJuIHV8MH1lbHNlIGlmKChkfDApPT0xMCl7a1tsPj4yXT1rW28+PjJdO3U9a1tsPj4yXXwwO3I9cDtyZXR1cm4gdXwwfXJldHVybiAwfWZ1bmN0aW9uIGlFKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MDtwPXI7cj1yKzMyfDA7Zz1wKzI0fDA7cT1wKzIwfDA7aD1wKzE2fDA7bD1wKzEyfDA7bT1wKzh8MDtuPXArNHwwO289cDtrW2c+PjJdPWE7a1txPj4yXT1iO2tbaD4+Ml09YztrW2w+PjJdPWQ7a1ttPj4yXT1lO2tbbj4+Ml09ZjtrW28+PjJdPTA7a1trW2c+PjJdPj4yXT1rW3E+PjJdO2tbKGtbZz4+Ml18MCkrND4+Ml09a1txPj4yXTtrWyhrW2c+PjJdfDApKzEyPj4yXT0wO2lmKGtbbj4+Ml18MCl7a1tvPj4yXT1rW2w+PjJdO2tbbD4+Ml09alsoa1soa1tuPj4yXXwwKSs0Pj4yXXwwKSsoa1tvPj4yXTw8MSk+PjFdO2lmKChrW2w+PjJdfDApPT0tMilrWyhrW2c+PjJdfDApKzEyPj4yXT1rWyhrWyhrWyhrW24+PjJdfDApKzQwPj4yXXwwKSs0Pj4yXXwwKSsoKGtbbz4+Ml18MCkqMjB8MCk+PjJdO2lmKChrW2w+PjJdfDApPT0oalsoa1soa1tuPj4yXXwwKSsxMj4+Ml18MCkrMzI+PjFdfDApKWtbbD4+Ml09LTF9aWYoKGtbbj4+Ml18MCkhPTAmKGtbbD4+Ml18MCk+PTApe2lbKGtbZz4+Ml18MCkrMTY+PjBdPWlbKGtbKGtbKGtbbj4+Ml18MCkrMTI+PjJdfDApKzQ+PjJdfDApKyhrW2w+PjJdPDw0KSsxMz4+MF18MDtrWyhrW2c+PjJdfDApKzg+PjJdPWtbKGtbKGtbbj4+Ml18MCkrMzI+PjJdfDApKyhrW28+PjJdPDwyKT4+Ml19ZWxzZXtpWyhrW2c+PjJdfDApKzE2Pj4wXT0wO2tbKGtbZz4+Ml18MCkrOD4+Ml09MH1rWyhrW2c+PjJdfDApKzIwPj4yXT1rW20+PjJdO2tbKGtbZz4+Ml18MCkrMjQ+PjJdPTA7a1soa1tnPj4yXXwwKSsyOD4+Ml09a1toPj4yXTtqWyhrW2c+PjJdfDApKzcyPj4xXT1rW2w+PjJdO2lbKGtbZz4+Ml18MCkrMTc+PjBdPTE7aVsoa1tnPj4yXXwwKSsxOD4+MF09MTtxPWpFKGtbZz4+Ml18MCl8MDtyPXA7cmV0dXJuIHF8MH1mdW5jdGlvbiBqRShhKXthPWF8MDt2YXIgYj0wLGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wLG49MCxvPTAscD0wLHE9MCxzPTA7cz1yO3I9cis0OHwwO249cyszNnwwO289cyszMnwwO2M9cysyOHwwO2I9cys0MHwwO2g9cysyNHwwO2c9cysyMHwwO3E9cysxNnwwO3A9cysxMnwwO2Q9cys4fDA7ZT1zKzR8MDtmPXM7a1tvPj4yXT1hO2tbcD4+Ml09a1soa1tvPj4yXXwwKSsyND4+Ml07YTp3aGlsZSgxKXtpZigobFsoa1tvPj4yXXwwKSsxOD4+MF18MCk+KGxbKGtbbz4+Ml18MCkrMTc+PjBdfDApKXtiPTQwO2JyZWFrfWtbYz4+Ml09a1soa1tvPj4yXXwwKSsyOCsoKGxbKGtbbz4+Ml18MCkrMTg+PjBdfDApLTE8PDIpPj4yXTtqW2I+PjFdPWpbKGtbbz4+Ml18MCkrNzIrKChsWyhrW28+PjJdfDApKzE4Pj4wXXwwKS0xPDwxKT4+MV18MDtpZigoaltiPj4xXXwwKT09LTI/KGtbKGtbbz4+Ml18MCkrMTI+PjJdfDApPT0wOjApe2I9NTticmVha313aGlsZSgxKXthPWtbKGtbbz4+Ml18MCkrND4+Ml18MDtrW2c+PjJdPWE7aWYoIWEpYnJlYWs7a1txPj4yXT0oa1soa1tnPj4yXXwwKSsyMD4+Ml18MCkrKChrW3A+PjJdfDApKjQ4fDApO3doaWxlKDEpe2lmKChrW3A+PjJdfDApPj0oa1soa1tnPj4yXXwwKSsxMj4+Ml18MCkpYnJlYWs7ZG8gaWYoKGtbKGtbcT4+Ml18MCkrMjA+PjJdfDApPT0oa1tjPj4yXXwwKT8oa1soa1txPj4yXXwwKSsyOD4+Ml18MCk9PShqW2I+PjFdfDApOjApe2lmKChqW2I+PjFdfDApPT0tMj8oVXkoa1soa1trW3E+PjJdPj4yXXwwKSsxMj4+Ml18MCxrWyhrW28+PjJdfDApKzEyPj4yXXwwLGtbYz4+Ml18MCl8MCkhPTA6MClicmVhaztpZigobFsoa1tvPj4yXXwwKSsxOD4+MF18MCk+MT8oa1soa1trW3E+PjJdPj4yXXwwKSs0Pj4yXSYxfDApIT0wOjApYnJlYWs7aWYoKChtWyhrW3E+PjJdfDApKzEyPj4xXSYyMDQ4fDApIT0wPyhsWyhrW28+PjJdfDApKzE3Pj4wXXwwKTwxMTowKT8oYT11eShrWyhrW2tbcT4+Ml0+PjJdfDApKzE2Pj4yXXwwKXwwLGtbaD4+Ml09YSwobFthPj4wXXwwKT09MTUyKTowKXtrW2Q+PjJdPTA7d2hpbGUoMSl7aWYoKGtbZD4+Ml18MCk+PShsWyhrW28+PjJdfDApKzE3Pj4wXXwwKSlicmVhaztpZigoa1soa1tvPj4yXXwwKSsyOCsoa1tkPj4yXTw8Mik+PjJdfDApPT0oa1soa1toPj4yXXwwKSsyOD4+Ml18MCk/KGpbKGtbbz4+Ml18MCkrNzIrKGtbZD4+Ml08PDEpPj4xXXwwKT09KGpbKGtbaD4+Ml18MCkrMzI+PjFdfDApOjApYnJlYWs7a1tkPj4yXT0oa1tkPj4yXXwwKSsxfWlmKChrW2Q+PjJdfDApPT0obFsoa1tvPj4yXXwwKSsxNz4+MF18MCkpe2tbKGtbbz4+Ml18MCkrMjgrKGtbZD4+Ml08PDIpPj4yXT1rWyhrW2g+PjJdfDApKzI4Pj4yXTtqWyhrW28+PjJdfDApKzcyKyhrW2Q+PjJdPDwxKT4+MV09alsoa1toPj4yXXwwKSszMj4+MV18MDthPShrW28+PjJdfDApKzE3fDA7aVthPj4wXT0oaVthPj4wXXwwKSsxPDwyND4+MjR9fWlmKG1bKGtbcT4+Ml18MCkrMTI+PjFdJmtbKGtbbz4+Ml18MCkrMjA+PjJdKXtpZigoa1soa1tvPj4yXXwwKSs4Pj4yXXwwKSE9MD8obVsoa1txPj4yXXwwKSsxMj4+MV0mMjU2fDApPT0wOjApe2tbZj4+Ml09a1trW2tbZz4+Ml0+PjJdPj4yXTtrW2g+PjJdPWtba1txPj4yXT4+Ml07aWYoIShrRShrW2g+PjJdfDAsaVsoa1tvPj4yXXwwKSsxNj4+MF18MCl8MCkpYnJlYWs7YT1DQihrW2Y+PjJdfDAsa1soa1toPj4yXXwwKSsxMj4+Ml18MCxrWyhrW2g+PjJdfDApKzE2Pj4yXXwwKXwwO2tbZT4+Ml09YTtpZighKGtbZT4+Ml18MCkpa1tlPj4yXT1rWyhrW2tbZj4+Ml0+PjJdfDApKzg+PjJdO2lmKHNnKGtba1tlPj4yXT4+Ml18MCxrWyhrW28+PjJdfDApKzg+PjJdfDApfDApYnJlYWt9aWYoIShtWyhrW3E+PjJdfDApKzEyPj4xXSYxMzApKXtiPTM2O2JyZWFrIGF9YT1rWyhrW2tbcT4+Ml0+PjJdfDApKzE2Pj4yXXwwO2tbaD4+Ml09YTtpZigobFthPj4wXXwwKSE9MTUyKXtiPTM2O2JyZWFrIGF9aWYoKGtbKGtbaD4+Ml18MCkrMjg+PjJdfDApIT0oa1soa1tvPj4yXXwwKSsyOD4+Ml18MCkpe2I9MzY7YnJlYWsgYX1pZigoalsoa1toPj4yXXwwKSszMj4+MV18MCkhPShqWyhrW28+PjJdfDApKzcyPj4xXXwwKSl7Yj0zNjticmVhayBhfX19d2hpbGUoMCk7a1twPj4yXT0oa1twPj4yXXwwKSsxO2tbcT4+Ml09KGtbcT4+Ml18MCkrNDh9a1soa1tvPj4yXXwwKSs0Pj4yXT1rWyhrWyhrW28+PjJdfDApKzQ+PjJdfDApKzQ+PjJdO2tbcD4+Ml09MH1rWyhrW28+PjJdfDApKzQ+PjJdPWtba1tvPj4yXT4+Ml07a1twPj4yXT0wO2E9KGtbbz4+Ml18MCkrMTh8MDtpW2E+PjBdPShpW2E+PjBdfDApKzE8PDI0Pj4yNH1pZigoYnwwKT09NSl7a1tuPj4yXT0wO3E9a1tuPj4yXXwwO3I9cztyZXR1cm4gcXwwfWVsc2UgaWYoKGJ8MCk9PTM2KXtrWyhrW28+PjJdfDApKzI0Pj4yXT0oa1twPj4yXXwwKSsxO2tbbj4+Ml09a1txPj4yXTtxPWtbbj4+Ml18MDtyPXM7cmV0dXJuIHF8MH1lbHNlIGlmKChifDApPT00MCl7a1tuPj4yXT0wO3E9a1tuPj4yXXwwO3I9cztyZXR1cm4gcXwwfXJldHVybiAwfWZ1bmN0aW9uIGtFKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTA7ZT1yO3I9cisxNnwwO2M9ZSs0fDA7Zz1lO2Q9ZSs5fDA7Zj1lKzh8MDtrW2c+PjJdPWE7aVtkPj4wXT1iO2E9bEUoa1tnPj4yXXwwKXwwO2lbZj4+MF09YTtzd2l0Y2goaVtmPj4wXXwwKXtjYXNlIDY1OntrW2M+PjJdPTE7YnJlYWt9Y2FzZSA2Njp7a1tjPj4yXT0oaVtkPj4wXXwwKT09NjYmMTticmVha31kZWZhdWx0OmtbYz4+Ml09KGlbZD4+MF18MCk+PTY3JjF9cj1lO3JldHVybiBrW2M+PjJdfDB9ZnVuY3Rpb24gbEUoYSl7YT1hfDA7dmFyIGI9MCxjPTAsZD0wO2Q9cjtyPXIrMTZ8MDtiPWQ7Yz1kKzR8MDtrW2I+PjJdPWE7YT1veShrWyhrW2I+PjJdfDApKzEyPj4yXXwwKXwwO2lbYz4+MF09YTthPWtbYj4+Ml18MDtpZihrWyhrW2I+PjJdfDApKzE2Pj4yXXwwKXtiPUJCKGtbYSsxNj4+Ml18MCxpW2M+PjBdfDApfDA7aVtjPj4wXT1iO2M9aVtjPj4wXXwwO3I9ZDtyZXR1cm4gY3wwfWlmKGtbYSs0Pj4yXSYyMDQ4KXtiPUJCKGtba1soa1trWyhrW2I+PjJdfDApKzIwPj4yXT4+Ml18MCkrND4+Ml0+PjJdfDAsaVtjPj4wXXwwKXwwO2lbYz4+MF09YjtjPWlbYz4+MF18MDtyPWQ7cmV0dXJuIGN8MH1pZihpW2M+PjBdfDApe2M9aVtjPj4wXXwwO3I9ZDtyZXR1cm4gY3wwfWlbYz4+MF09NjU7Yz1pW2M+PjBdfDA7cj1kO3JldHVybiBjfDB9ZnVuY3Rpb24gbUUoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MDtnPXI7cj1yKzE2fDA7Zj1nKzR8MDtjPWc7ZD1nKzl8MDtlPWcrOHwwO2tbYz4+Ml09YTtpW2Q+PjBdPWI7YTpkbyBpZigoaVtkPj4wXXwwKT09NjUpa1tmPj4yXT0xO2Vsc2V7d2hpbGUoMSl7aWYoKGxba1tjPj4yXT4+MF18MCk9PTE1NilhPTE7ZWxzZSBhPShsW2tbYz4+Ml0+PjBdfDApPT0xNTU7Yj1rW2M+PjJdfDA7aWYoIWEpYnJlYWs7a1tjPj4yXT1rW2IrMTI+PjJdfWlbZT4+MF09aVtiPj4wXXwwO2lmKChsW2U+PjBdfDApPT0xNTcpaVtlPj4wXT1pWyhrW2M+PjJdfDApKzM4Pj4wXXwwO3N3aXRjaChsW2U+PjBdfDApe2Nhc2UgMTM0OntpZigoaVtkPj4wXXwwKT09NjgpYj0xO2Vsc2UgYj0oaVtkPj4wXXwwKT09Njc7a1tmPj4yXT1iJjE7YnJlYWsgYX1jYXNlIDEzMjp7aWYoKGlbZD4+MF18MCk9PTY5KWI9MTtlbHNlIGI9KGlbZD4+MF18MCk9PTY3O2tbZj4+Ml09YiYxO2JyZWFrIGF9Y2FzZSA5Nzp7a1tmPj4yXT0oaVtkPj4wXXwwKT09NjYmMTticmVhayBhfWNhc2UgMTMzOntrW2Y+PjJdPTE7YnJlYWsgYX1jYXNlIDE1Mjp7aWYoKGpbKGtbYz4+Ml18MCkrMzI+PjFdfDApPDApaWYoKGlbZD4+MF18MCk9PTY4KWI9MTtlbHNlIGI9KGlbZD4+MF18MCk9PTY3O2Vsc2UgYj0wO2tbZj4+Ml09YiYxO2JyZWFrIGF9ZGVmYXVsdDp7a1tmPj4yXT0wO2JyZWFrIGF9fX13aGlsZSgwKTtyPWc7cmV0dXJuIGtbZj4+Ml18MH1mdW5jdGlvbiBuRShhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MDtjPXI7cj1yKzE2fDA7ZT1jKzR8MDtkPWM7a1tlPj4yXT1hO2tbZD4+Ml09YjthPWtbZT4+Ml18MDtiPWtbZD4+Ml18MDtDQShhLGIsVGYoa1tkPj4yXXwwKXwwKTtyPWM7cmV0dXJufWZ1bmN0aW9uIG9FKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wLGk9MCxsPTAsbj0wLG89MDtvPXI7cj1yKzMyfDA7bD1vO2M9bysyNHwwO2Q9bysyMHwwO2k9bysxNnwwO2c9byszMHwwO2g9bysyOHwwO2U9bysxMnwwO2Y9bys4fDA7bj1vKzR8MDtrW2M+PjJdPWE7a1tkPj4yXT1iO2tbaT4+Ml09a1soa1tkPj4yXXwwKSsyNCs4Pj4yXTtqW2c+PjFdPWpbKGtbZD4+Ml18MCkrMjQ+PjFdfDA7altoPj4xXT1qWyhrW2Q+PjJdfDApKzQyPj4xXXwwO2lmKChtW2c+PjFdfDB8MCk9PTA/KGtbKGtbZD4+Ml18MCkrMzY+PjJdJjQ4fDApPT0wOjApe3I9bztyZXR1cm59Q0Eoa1tjPj4yXXwwLDM0Njg0LDIpO2tbZT4+Ml09MDt3aGlsZSgxKXtpZigoa1tlPj4yXXwwKT49KG1bZz4+MV18MHwwKSlicmVhazthPXBFKGtbaT4+Ml18MCxrW2U+PjJdfDApfDA7a1tuPj4yXT1hO2lmKGtbZT4+Ml18MClDQShrW2M+PjJdfDAsMzQ2ODcsNSk7Yj1rW2M+PjJdfDA7YT0oa1tlPj4yXXwwKT49KG1baD4+MV18MHwwKT8zNDY5MzozNDY5ODtrW2w+PjJdPWtbbj4+Ml07QkEoYixhLGwpO2tbZT4+Ml09KGtbZT4+Ml18MCkrMX1rW2Y+PjJdPWtbZT4+Ml07aWYoa1soa1tkPj4yXXwwKSszNj4+Ml0mMzIpe3FFKGtbYz4+Ml18MCxrW2k+PjJdfDAsbVsoa1tkPj4yXXwwKSsyNCsyPj4xXXwwLGtbZj4+Ml18MCxrW2U+PjJdfDAsMzQ2MTUpO2tbZT4+Ml09MX1pZihrWyhrW2Q+PjJdfDApKzM2Pj4yXSYxNilxRShrW2M+PjJdfDAsa1tpPj4yXXwwLG1bKGtbZD4+Ml18MCkrMjQrND4+MV18MCxrW2Y+PjJdfDAsa1tlPj4yXXwwLDM0NjE3KTtDQShrW2M+PjJdfDAsMzQ3MDYsMSk7cj1vO3JldHVybn1mdW5jdGlvbiBwRShhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTA7Zj1yO3I9cisxNnwwO2M9Zis4fDA7ZD1mKzR8MDtlPWY7a1tkPj4yXT1hO2tbZT4+Ml09YjtrW2U+PjJdPWpbKGtbKGtbZD4+Ml18MCkrND4+Ml18MCkrKGtbZT4+Ml08PDEpPj4xXTtpZigoa1tlPj4yXXwwKT09LTIpe2tbYz4+Ml09MzQ3MTI7YT1rW2M+PjJdfDA7cj1mO3JldHVybiBhfDB9aWYoKGtbZT4+Ml18MCk9PS0xKXtrW2M+PjJdPTI0NzQ1O2E9a1tjPj4yXXwwO3I9ZjtyZXR1cm4gYXwwfWVsc2V7a1tjPj4yXT1rWyhrWyhrWyhrW2Q+PjJdfDApKzEyPj4yXXwwKSs0Pj4yXXwwKSsoa1tlPj4yXTw8NCk+PjJdO2E9a1tjPj4yXXwwO3I9ZjtyZXR1cm4gYXwwfXJldHVybiAwfWZ1bmN0aW9uIHFFKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxpPTAsaj0wLGw9MCxtPTAsbj0wLG89MDtuPXI7cj1yKzMyfDA7Zz1uKzI0fDA7aD1uKzIwfDA7aT1uKzE2fDA7aj1uKzEyfDA7bz1uKzh8MDtsPW4rNHwwO209bjtrW2c+PjJdPWE7a1toPj4yXT1iO2tbaT4+Ml09YztrW2o+PjJdPWQ7a1tvPj4yXT1lO2tbbD4+Ml09ZjtpZihrW28+PjJdfDApQ0Eoa1tnPj4yXXwwLDM0Njg3LDUpO2lmKChrW2k+PjJdfDApPjEpQ0Eoa1tnPj4yXXwwLDM0NzA4LDEpO2tbbT4+Ml09MDt3aGlsZSgxKXtpZigoa1ttPj4yXXwwKT49KGtbaT4+Ml18MCkpYnJlYWs7aWYoa1ttPj4yXXwwKUNBKGtbZz4+Ml18MCwzNDcxMCwxKTtvPWtbZz4+Ml18MDtuRShvLHBFKGtbaD4+Ml18MCwoa1tqPj4yXXwwKSsoa1ttPj4yXXwwKXwwKXwwKTtrW20+PjJdPShrW20+PjJdfDApKzF9aWYoKGtbaT4+Ml18MCk+MSlDQShrW2c+PjJdfDAsMzQ3MDYsMSk7Q0Eoa1tnPj4yXXwwLGtbbD4+Ml18MCwxKTtpZigoa1tpPj4yXXwwKT4xKUNBKGtbZz4+Ml18MCwzNDcwOCwxKTtrW20+PjJdPTA7d2hpbGUoMSl7aWYoKGtbbT4+Ml18MCk+PShrW2k+PjJdfDApKWJyZWFrO2lmKGtbbT4+Ml18MClDQShrW2c+PjJdfDAsMzQ3MTAsMSk7Q0Eoa1tnPj4yXXwwLDIwMjc1LDEpO2tbbT4+Ml09KGtbbT4+Ml18MCkrMX1pZigoa1tpPj4yXXwwKTw9MSl7cj1uO3JldHVybn1DQShrW2c+PjJdfDAsMzQ3MDYsMSk7cj1uO3JldHVybn1mdW5jdGlvbiByRShhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MDtjPXI7cj1yKzE2fDA7ZT1jKzR8MDtkPWM7a1tlPj4yXT1hO2tbZD4+Ml09YjthPUhCKGtbZT4+Ml18MCwzLGtbZD4+Ml18MCl8MDtyPWM7cmV0dXJuIGF8MH1mdW5jdGlvbiBzRShhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MCxsPTA7bD1yO3I9ciszMnwwO2U9bCsxNnwwO2Y9bCsxMnwwO2c9bCs4fDA7aD1sO2o9bCsyMHwwO2tbZj4+Ml09YTtrW2c+PjJdPWI7YT1oO2tbYT4+Ml09YztrW2ErND4+Ml09ZDtpZigoa1soa1tmPj4yXXwwKSsyMD4+Ml18MCkhPShrWyhrW2c+PjJdfDApKzQ0Pj4yXXwwKSl7a1tlPj4yXT0wO2E9a1tlPj4yXXwwO3I9bDtyZXR1cm4gYXwwfWlmKCEoKG1bKGtbZj4+Ml18MCkrMTI+PjFdfDApJjEzMCkpe2tbZT4+Ml09MDthPWtbZT4+Ml18MDtyPWw7cmV0dXJuIGF8MH1iPShrW2Y+PjJdfDApKzMyfDA7YT1oO2lmKChrW2I+PjJdJmtbYT4+Ml18MCkhPTA/MTooa1tiKzQ+PjJdJmtbYSs0Pj4yXXwwKSE9MCl7a1tlPj4yXT0wO2E9a1tlPj4yXXwwO3I9bDtyZXR1cm4gYXwwfWlmKChrWyhrW2Y+PjJdfDApKzI4Pj4yXXwwKTwwKXtrW2U+PjJdPTA7YT1rW2U+PjJdfDA7cj1sO3JldHVybiBhfDB9aVtqPj4wXT1pWyhrWyhrWyhrW2c+PjJdfDApKzE2Pj4yXXwwKSs0Pj4yXXwwKSsoa1soa1tmPj4yXXwwKSsyOD4+Ml08PDQpKzEzPj4wXXwwO2lmKGtFKGtba1tmPj4yXT4+Ml18MCxpW2o+PjBdfDApfDApe2tbZT4+Ml09MTthPWtbZT4+Ml18MDtyPWw7cmV0dXJuIGF8MH1lbHNle2tbZT4+Ml09MDthPWtbZT4+Ml18MDtyPWw7cmV0dXJuIGF8MH1yZXR1cm4gMH1mdW5jdGlvbiB0RShhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaT0wO2k9cjtyPXIrMzJ8MDtkPWkrMTZ8MDtlPWkrMTJ8MDtmPWkrOHwwO2c9aSs0fDA7aD1pO2tbZT4+Ml09YTtrW2Y+PjJdPWI7a1tnPj4yXT1jO2lmKChtWyhrW2Y+PjJdfDApKzQ0Pj4xXXwwfDApPj0oa1tnPj4yXXwwKSl7a1tkPj4yXT0wO2g9a1tkPj4yXXwwO3I9aTtyZXR1cm4gaHwwfWtbZz4+Ml09KGtbZz4+Ml18MCkrNyYtODtiPWR4KGtbZT4+Ml18MCxrW2c+PjJdPDwyLDApfDA7a1toPj4yXT1iO2lmKCEoa1toPj4yXXwwKSl7a1tkPj4yXT03O2g9a1tkPj4yXXwwO3I9aTtyZXR1cm4gaHwwfWJTKGtbaD4+Ml18MCxrWyhrW2Y+PjJdfDApKzQ4Pj4yXXwwLChtWyhrW2Y+PjJdfDApKzQ0Pj4xXXwwKTw8MnwwKXwwO2lmKChrWyhrW2Y+PjJdfDApKzQ4Pj4yXXwwKSE9KChrW2Y+PjJdfDApKzU2fDApKWJnKGtbZT4+Ml18MCxrWyhrW2Y+PjJdfDApKzQ4Pj4yXXwwKTtrWyhrW2Y+PjJdfDApKzQ4Pj4yXT1rW2g+PjJdO2pbKGtbZj4+Ml18MCkrNDQ+PjFdPWtbZz4+Ml07a1tkPj4yXT0wO2g9a1tkPj4yXXwwO3I9aTtyZXR1cm4gaHwwfWZ1bmN0aW9uIHVFKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaT0wLGw9MCxtPTAsbj0wO2w9cjtyPXIrMzJ8MDttPWwrMjB8MDtlPWwrMjR8MDtuPWwrMTZ8MDtmPWwrMTJ8MDtoPWwrOHwwO2c9bCs0fDA7aT1sO2tbbT4+Ml09YTtqW2U+PjFdPWI7a1tuPj4yXT1jO2tbZj4+Ml09ZDtrW2c+PjJdPTU2KygoaltlPj4xXTw8MikrNyYtOCkrKCgoaltlPj4xXXwwKSsxPDwxKSsoaltlPj4xXTw8MSkrKGpbZT4+MV18MCkrNyYtOCk7ZD0oa1tnPj4yXXwwKSsoa1tuPj4yXXwwKXwwO2Q9Q2goa1ttPj4yXXwwLGQsKChkfDApPDApPDwzMT4+MzEpfDA7a1toPj4yXT1kO2lmKCEoa1toPj4yXXwwKSl7bj1rW2g+PjJdfDA7cj1sO3JldHVybiBufDB9a1tpPj4yXT0oa1toPj4yXXwwKSs1NjtrWyhrW2g+PjJdfDApKzMyPj4yXT1rW2k+PjJdO2tbaT4+Ml09KGtbaT4+Ml18MCkrKChqW2U+PjFdPDwyKSs3Ji04KTtrWyhrW2g+PjJdfDApKzg+PjJdPWtbaT4+Ml07a1tpPj4yXT0oa1tpPj4yXXwwKSsoKGpbZT4+MV18MCkrMTw8MSk7a1soa1toPj4yXXwwKSs0Pj4yXT1rW2k+PjJdO2tbaT4+Ml09KGtbaT4+Ml18MCkrKGpbZT4+MV08PDEpO2tbKGtbaD4+Ml18MCkrMjg+PjJdPWtbaT4+Ml07alsoa1toPj4yXXwwKSs1Mj4+MV09altlPj4xXXwwO2pbKGtbaD4+Ml18MCkrNTA+PjFdPShqW2U+PjFdfDApLTE7a1trW2Y+PjJdPj4yXT0oa1toPj4yXXwwKSsoa1tnPj4yXXwwKTtuPWtbaD4+Ml18MDtyPWw7cmV0dXJuIG58MH1mdW5jdGlvbiB2RShhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wLGg9MCxpPTA7Zz1yO3I9ciszMnwwO2M9Zys4fDA7ZD1nKzIwfDA7ZT1nKzE2fDA7Zj1nO2tbZD4+Ml09YTtrW2U+PjJdPWI7aWYoIShrW2U+PjJdfDApKXtlPWM7a1tlPj4yXT0wO2tbZSs0Pj4yXT0wO2U9YztmPWU7Zj1rW2Y+PjJdfDA7ZT1lKzR8MDtlPWtbZT4+Ml18MDtMPWU7cj1nO3JldHVybiBmfDB9aWYoKGxba1tlPj4yXT4+MF18MHwwKT09MTUyKXtlPVlEKGtbZD4+Ml18MCxrWyhrW2U+PjJdfDApKzI4Pj4yXXwwKXwwO2Q9ZjtrW2Q+PjJdPWU7a1tkKzQ+PjJdPUw7ZD1mO2Y9a1tkKzQ+PjJdfDA7ZT1jO2tbZT4+Ml09a1tkPj4yXTtrW2UrND4+Ml09ZjtlPWM7Zj1lO2Y9a1tmPj4yXXwwO2U9ZSs0fDA7ZT1rW2U+PjJdfDA7TD1lO3I9ZztyZXR1cm4gZnwwfWlmKGtbKGtbZT4+Ml18MCkrMTY+PjJdfDApe2I9dkUoa1tkPj4yXXwwLGtbKGtbZT4+Ml18MCkrMTY+PjJdfDApfDA7YT1MfWVsc2V7Yj0wO2E9MH1oPWY7a1toPj4yXT1iO2tbaCs0Pj4yXT1hO2lmKGtbKGtbZT4+Ml18MCkrMTI+PjJdfDApe2I9dkUoa1tkPj4yXXwwLGtbKGtbZT4+Ml18MCkrMTI+PjJdfDApfDA7aT1mO2E9a1tpKzQ+PjJdfEw7aD1mO2tbaD4+Ml09a1tpPj4yXXxiO2tbaCs0Pj4yXT1hfWlmKCEoa1soa1tlPj4yXXwwKSs0Pj4yXSYyMDQ4KSl7aWYoa1soa1tlPj4yXXwwKSsyMD4+Ml18MCl7ZT1VRChrW2Q+PjJdfDAsa1soa1tlPj4yXXwwKSsyMD4+Ml18MCl8MDtkPWY7aD1rW2QrND4+Ml18TDtpPWY7a1tpPj4yXT1rW2Q+PjJdfGU7a1tpKzQ+PjJdPWh9fWVsc2V7ZT13RShrW2Q+PjJdfDAsa1soa1tlPj4yXXwwKSsyMD4+Ml18MCl8MDtkPWY7aD1rW2QrND4+Ml18TDtpPWY7a1tpPj4yXT1rW2Q+PjJdfGU7a1tpKzQ+PjJdPWh9aT1rW2YrND4+Ml18MDtoPWM7a1toPj4yXT1rW2Y+PjJdO2tbaCs0Pj4yXT1pO2g9YztpPWg7aT1rW2k+PjJdfDA7aD1oKzR8MDtoPWtbaD4+Ml18MDtMPWg7cj1nO3JldHVybiBpfDB9ZnVuY3Rpb24gd0UoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTAsaT0wLGo9MDtoPXI7cj1yKzMyfDA7Yz1oKzIwfDA7ZD1oKzE2fDA7Zj1oO2c9aCsxMnwwO2U9aCs4fDA7a1tjPj4yXT1hO2tbZD4+Ml09YjtiPWY7a1tiPj4yXT0wO2tbYis0Pj4yXT0wO3doaWxlKDEpe2lmKCEoa1tkPj4yXXwwKSlicmVhaztrW2c+PjJdPWtbKGtbZD4+Ml18MCkrMjg+PjJdO2k9VUQoa1tjPj4yXXwwLGtba1tkPj4yXT4+Ml18MCl8MDtqPWY7YT1rW2orND4+Ml18TDtiPWY7a1tiPj4yXT1rW2o+PjJdfGk7a1tiKzQ+PjJdPWE7Yj1VRChrW2M+PjJdfDAsa1soa1tkPj4yXXwwKSszNj4+Ml18MCl8MDthPWY7aT1rW2ErND4+Ml18TDtqPWY7a1tqPj4yXT1rW2E+PjJdfGI7a1tqKzQ+PjJdPWk7aj1VRChrW2M+PjJdfDAsa1soa1tkPj4yXXwwKSs0ND4+Ml18MCl8MDtpPWY7Yj1rW2krND4+Ml18TDthPWY7a1thPj4yXT1rW2k+PjJdfGo7a1thKzQ+PjJdPWI7YT12RShrW2M+PjJdfDAsa1soa1tkPj4yXXwwKSszMj4+Ml18MCl8MDtiPWY7aj1rW2IrND4+Ml18TDtpPWY7a1tpPj4yXT1rW2I+PjJdfGE7a1tpKzQ+PjJdPWo7aT12RShrW2M+PjJdfDAsa1soa1tkPj4yXXwwKSs0MD4+Ml18MCl8MDtqPWY7YT1rW2orND4+Ml18TDtiPWY7a1tiPj4yXT1rW2o+PjJdfGk7a1tiKzQ+PjJdPWE7YTpkbyBpZihrW2c+PjJdfDApe2tbZT4+Ml09MDt3aGlsZSgxKXtpZigoa1tlPj4yXXwwKT49KGtba1tnPj4yXT4+Ml18MCkpYnJlYWsgYTtpPXdFKGtbYz4+Ml18MCxrWyhrW2c+PjJdfDApKzgrKChrW2U+PjJdfDApKjcyfDApKzIwPj4yXXwwKXwwO2o9ZjthPWtbais0Pj4yXXxMO2I9ZjtrW2I+PjJdPWtbaj4+Ml18aTtrW2IrND4+Ml09YTtiPXZFKGtbYz4+Ml18MCxrWyhrW2c+PjJdfDApKzgrKChrW2U+PjJdfDApKjcyfDApKzQ4Pj4yXXwwKXwwO2E9ZjtpPWtbYSs0Pj4yXXxMO2o9ZjtrW2o+PjJdPWtbYT4+Ml18YjtrW2orND4+Ml09aTtrW2U+PjJdPShrW2U+PjJdfDApKzF9fXdoaWxlKDApO2tbZD4+Ml09a1soa1tkPj4yXXwwKSs0OD4+Ml19aj1mO0w9a1tqKzQ+PjJdfDA7cj1oO3JldHVybiBrW2o+PjJdfDB9ZnVuY3Rpb24geEUoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wO2Y9cjtyPXIrMTZ8MDtjPWYrNHwwO2Q9ZisyfDA7ZT1mO2pbZD4+MV09YTtqW2U+PjFdPWI7aWYoKGpbZD4+MV18MCk+PShqW2U+PjFdfDApKXthPWpbZD4+MV18MDtpZigoaltkPj4xXXwwKT4oKGpbZT4+MV18MCkrNDl8MCkpe2pbYz4+MV09YTtlPWpbYz4+MV18MDtyPWY7cmV0dXJuIGV8MH1iPWpbZD4+MV18MDtpZigoYTw8MTY+PjE2fDApPigoaltlPj4xXXwwKSszMXwwKSl7altjPj4xXT1iKzE7ZT1qW2M+PjFdfDA7cj1mO3JldHVybiBlfDB9ZWxzZXtqW2M+PjFdPWIrKGxbMzQ3NzQrKChqW2Q+PjFdfDApLShqW2U+PjFdfDApKT4+MF18MCk7ZT1qW2M+PjFdfDA7cj1mO3JldHVybiBlfDB9fWVsc2V7YT1qW2U+PjFdfDA7aWYoKGpbZT4+MV18MCk+KChqW2Q+PjFdfDApKzQ5fDApKXtqW2M+PjFdPWE7ZT1qW2M+PjFdfDA7cj1mO3JldHVybiBlfDB9Yj1qW2U+PjFdfDA7aWYoKGE8PDE2Pj4xNnwwKT4oKGpbZD4+MV18MCkrMzF8MCkpe2pbYz4+MV09YisxO2U9altjPj4xXXwwO3I9ZjtyZXR1cm4gZXwwfWVsc2V7altjPj4xXT1iKyhsWzM0Nzc0KygoaltlPj4xXXwwKS0oaltkPj4xXXwwKSk+PjBdfDApO2U9altjPj4xXXwwO3I9ZjtyZXR1cm4gZXwwfX1yZXR1cm4gMH1mdW5jdGlvbiB5RShhLGIsYyxkLGUsZixnKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDt2YXIgaD0wLG49MCxvPTAscD0wLHE9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MCxFPTAsRj0wLEc9MCxIPTAsST0wLEo9MCxLPTAsTT0wLE49MCxPPTAsUD0wLFE9MCxSPTAsUz0wLFQ9MCxVPTAsVj0wLFc9MCxYPTAsWT0wLFo9MCxfPTAsJD0wLGFhPTAsYmE9MCxjYT0wO2NhPXI7cj1yKzE2MHwwO1o9Y2ErMTQ5fDA7aD1jYSsxMjR8MDtuPWNhKzEyMHwwO289Y2ErMTE2fDA7cD1jYSsxNDB8MDtxPWNhKzEzOHwwO3M9Y2ErMTEyfDA7dD1jYSsxMDh8MDtXPWNhKzE0OHwwO1U9Y2ErMTQ3fDA7Vj1jYSsxNDZ8MDtEPWNhKzE0NXwwO3c9Y2ErMTQ0fDA7Qz1jYSsxNDN8MDt5PWNhKzEzNnwwO0g9Y2ErMTM0fDA7Rz1jYSsxMzJ8MDtJPWNhKzEzMHwwO0I9Y2ErMTA0fDA7Xz1jYSsxMDB8MDtFPWNhKzk2fDA7QT1jYSs5MnwwO3o9Y2ErODh8MDtQPWNhKzg0fDA7Uj1jYSs4MHwwO1E9Y2ErNzZ8MDtOPWNhKzcyfDA7Tz1jYSs2OHwwO3Y9Y2ErNjR8MDthYT1jYSs0MHwwO0o9Y2ErMzJ8MDtLPWNhKzI0fDA7VD1jYSsxNnwwO1g9Y2ErNjB8MDtZPWNhKzU2fDA7dT1jYSsxNDJ8MDt4PWNhKzEyOHwwO1M9Y2ErNTJ8MDtNPWNhKzQ4fDA7Rj1jYSs4fDA7JD1jYTtrW2g+PjJdPWE7a1tuPj4yXT1iO2tbbz4+Ml09YztqW3A+PjFdPWQ7altxPj4xXT1lO2tbcz4+Ml09ZjtrW3Q+PjJdPWc7a1tQPj4yXT0wO2tbdj4+Ml09a1trW2tbaD4+Ml0+PjJdPj4yXTtkPWFhO2tbZD4+Ml09MDtrW2QrND4+Ml09MDtpZigobVtxPj4xXXwwKSE9MD8obVsoa1t2Pj4yXXwwKSs2ND4+MV0mMTI4fDApIT0wOjApe2lbWj4+MF09MDtiYT1pW1o+PjBdfDA7cj1jYTtyZXR1cm4gYmF8MH1qW0k+PjFdPWtba1tuPj4yXT4+Ml07aWYoKG1bST4+MV18MCk+NjMpe2lbWj4+MF09MDtiYT1pW1o+PjBdfDA7cj1jYTtyZXR1cm4gYmF8MH1pW0Q+PjBdPTE7YT1lUygxLDAsbVtJPj4xXXwwKXwwO2E9X1IoYXwwLEx8MCwxLDApfDA7ZD1KO2tbZD4+Ml09YTtrW2QrND4+Ml09TDtkPUs7a1tkPj4yXT0wO2tbZCs0Pj4yXT0wO2Q9VDtrW2Q+PjJdPTA7a1tkKzQ+PjJdPTA7alt5Pj4xXT0zODY7aWYobVtwPj4xXSYyMDQ4KWpbeT4+MV09bVt5Pj4xXXwxO2tbQj4+Ml09MDthOndoaWxlKDEpe2lmKCEobFtEPj4wXXwwKSlicmVhazthPWFhO2M9a1thKzQ+PjJdfDA7ZD1KO2c9a1tkKzQ+PjJdfDA7aWYoIShjPj4+MDxnPj4+MHwoKGN8MCk9PShnfDApPyhrW2E+PjJdfDApPj4+MDwoa1tkPj4yXXwwKT4+PjA6MCkpKWJyZWFrO2lmKChrW0I+PjJdfDApPihtW3E+PjFdfDApKWJyZWFrO2lmKChrW0I+PjJdfDApPjApe2c9KGtbUD4+Ml18MCkrOHwwO2M9VDthPWtbYys0Pj4yXXxrW2crND4+Ml07ZD1UO2tbZD4+Ml09a1tjPj4yXXxrW2c+PjJdO2tbZCs0Pj4yXT1hfWlmKChrW0I+PjJdfDApPChtW3E+PjFdfDApKXtrW1A+PjJdPWtbKGtbKGtbbz4+Ml18MCkrMjQ+PjJdfDApKyhrW0I+PjJdPDwyKT4+Ml07aWYoIShtW3A+PjFdJjIwNDgpKWJhPTE3fWVsc2V7a1tQPj4yXT1rW3M+PjJdO2JhPTE3fWI6ZG8gaWYoKGJhfDApPT0xNyl7YmE9MDtlPWtbUD4+Ml18MDtpZihrWyhrW1A+PjJdfDApKzM2Pj4yXSYxMDI0KXtiYT0xODticmVhayBhfWtbQT4+Ml09a1soa1soa1toPj4yXXwwKSs0Pj4yXXwwKSs4KygobFtlKzE2Pj4wXXwwKSo3MnwwKSs0ND4+Ml07a1tfPj4yXT0wO3doaWxlKDEpe2lmKChrW18+PjJdfDApPj0obVtJPj4xXXwwKSlicmVhazthPWVTKDEsMCxrW18+PjJdfDApfDA7ZD1hYTtjOmRvIGlmKCgoISgoYSZrW2Q+PjJdfDApIT0wPzE6KEwma1tkKzQ+PjJdfDApIT0wKT8oZD11eShrWyhrWyhrW24+PjJdfDApKzQ+PjJdfDApKygoa1tfPj4yXXwwKSoyMHwwKT4+Ml18MCl8MCxrW1E+PjJdPWQsKGxba1tRPj4yXT4+MF18MCk9PTE1Mik6MCk/KGtbKGtbUT4+Ml18MCkrMjg+PjJdfDApPT0oa1tBPj4yXXwwKTowKT8oZD1ULGQ9aEUoKGtbaD4+Ml18MCkrODB8MCxrW0E+PjJdfDAsalsoa1tRPj4yXXwwKSszMj4+MV18MCx+a1tkPj4yXSx+a1tkKzQ+PjJdLG1beT4+MV18MCwwKXwwLGtbUj4+Ml09ZCwoa1tSPj4yXXwwKSE9MCk6MCl7aWYoKG1bKGtbUj4+Ml18MCkrMTI+PjFdfDApPT0xKXtrW0U+PjJdPTA7d2hpbGUoMSl7aWYoKGtbRT4+Ml18MCk+PShtWyhrW1A+PjJdfDApKzQwPj4xXXwwKSlicmVhaztpZigoa1tSPj4yXXwwKT09KGtbKGtbKGtbUD4+Ml18MCkrNDg+PjJdfDApKyhrW0U+PjJdPDwyKT4+Ml18MCkpYnJlYWs7a1tFPj4yXT0oa1tFPj4yXXwwKSsxfWlmKChrW0U+PjJdfDApPj0obVsoa1tQPj4yXXwwKSs0MD4+MV18MCkpYnJlYWt9ZG8gaWYobVsoa1tSPj4yXXwwKSsxMj4+MV0mMTMwKXtpZigoalsoa1tRPj4yXXwwKSszMj4+MV18MCk8MClicmVhaztkPXB5KGtba1toPj4yXT4+Ml18MCxrWyhrWyhrW24+PjJdfDApKzQ+PjJdfDApKygoa1tfPj4yXXwwKSoyMHwwKT4+Ml18MCl8MDtrW04+PjJdPWQ7aWYoIShrW04+PjJdfDApKWtbTj4+Ml09a1soa1t2Pj4yXXwwKSs4Pj4yXTtrW1g+PjJdPWtba1tOPj4yXT4+Ml07ZD1weShrW2tbaD4+Ml0+PjJdfDAsa1trW1I+PjJdPj4yXXwwKXwwO2tbTj4+Ml09ZDtpZighKGtbTj4+Ml18MCkpa1tOPj4yXT1rWyhrW3Y+PjJdfDApKzg+PjJdO2tbWT4+Ml09a1trW04+PjJdPj4yXTtpZihzZyhrW1g+PjJdfDAsa1tZPj4yXXwwKXwwKWJyZWFrIGN9d2hpbGUoMCk7Zz1lUygxLDAsa1tfPj4yXXwwKXwwO2M9YWE7YT1rW2MrND4+Ml18TDtkPWFhO2tbZD4+Ml09a1tjPj4yXXxnO2tbZCs0Pj4yXT1hfXdoaWxlKDApO2tbXz4+Ml09KGtbXz4+Ml18MCkrMX1pZighKGtbKGtbUD4+Ml18MCkrMzY+PjJdJjQwOTYpKXtpZihrWyhrW1A+PjJdfDApKzM2Pj4yXSYyNTYpe2tbTz4+Ml09MDtqW0g+PjFdPTA7altHPj4xXT0xfWVsc2V7ZD1rWyhrW1A+PjJdfDApKzI0Kzg+PjJdfDA7a1tPPj4yXT1kO2lmKCFkKXtiYT00NjticmVhayBhfWlmKChsWyhrW08+PjJdfDApKzU1Pj4wXXwwKT4+PjImMSl7YmE9NDY7YnJlYWsgYX1qW0g+PjFdPWpbKGtbTz4+Ml18MCkrNTA+PjFdfDA7altHPj4xXT1qWyhrW08+PjJdfDApKzUyPj4xXXwwO2lbRD4+MF09KGxbKGtbTz4+Ml18MCkrNTQ+PjBdfDApIT0wfWlbVz4+MF09MDtpW1U+PjBdPTA7aVt3Pj4wXT0wO2tbRT4+Ml09MDt3aGlsZSgxKXtpZigoa1tFPj4yXXwwKT49KG1bRz4+MV18MCkpYnJlYWs7aVt1Pj4wXT0xO2Q6ZG8gaWYoKGtbRT4+Ml18MCk8KG1bKGtbUD4+Ml18MCkrMjQ+PjFdfDApPyhrW0U+PjJdfDApPj0obVsoa1tQPj4yXXwwKSs0Mj4+MV18MCk6MCl7alt4Pj4xXT1qWyhrWyhrWyhrW1A+PjJdfDApKzQ4Pj4yXXwwKSsoa1tFPj4yXTw8Mik+PjJdfDApKzEyPj4xXXwwO2U9bVt4Pj4xXXwwO2lmKG1beD4+MV0mbVt5Pj4xXSl7aWYoIShlJjI1NikpYnJlYWs7aVtEPj4wXT0wO2JyZWFrfWlmKCEoZSYxKSl7YmE9NjE7YnJlYWt9a1tTPj4yXT1rW2tbKGtbKGtbUD4+Ml18MCkrNDg+PjJdfDApKyhrW0U+PjJdPDwyKT4+Ml0+PjJdO2tbXz4+Ml09KGtbRT4+Ml18MCkrMTt3aGlsZSgxKXtpZigoa1tfPj4yXXwwKT49KG1bKGtbUD4+Ml18MCkrMjQ+PjFdfDApKXtiYT02MTticmVhayBkfWlmKChrW2tbKGtbKGtbUD4+Ml18MCkrNDg+PjJdfDApKyhrW18+PjJdPDwyKT4+Ml0+PjJdfDApPT0oa1tTPj4yXXwwKSlicmVhaztrW18+PjJdPShrW18+PjJdfDApKzF9aVt1Pj4wXT0wO2JhPTYxfWVsc2UgYmE9NjE7d2hpbGUoMCk7aWYoKGJhfDApPT02MSl7YmE9MDtkbyBpZihrW08+PjJdfDApe2tbej4+Ml09alsoa1soa1tPPj4yXXwwKSs0Pj4yXXwwKSsoa1tFPj4yXTw8MSk+PjFdO2lbVj4+MF09aVsoa1soa1tPPj4yXXwwKSsyOD4+Ml18MCkrKGtbRT4+Ml18MCk+PjBdfDA7aWYoKGtbej4+Ml18MCkhPShqWyhrWyhrW08+PjJdfDApKzEyPj4yXXwwKSszMj4+MV18MCkpYnJlYWs7a1t6Pj4yXT0tMX1lbHNle2tbej4+Ml09LTE7aVtWPj4wXT0wfXdoaWxlKDApO2RvIGlmKChsW0Q+PjBdfDApIT0wJihrW3o+PjJdfDApPj0wKXtpZigoa1tFPj4yXXwwKTwobVsoa1tQPj4yXXwwKSsyND4+MV18MCkpYnJlYWs7aWYobFsoa1soa1soa1tPPj4yXXwwKSsxMj4+Ml18MCkrND4+Ml18MCkrKGtbej4+Ml08PDQpKzEyPj4wXXwwKWJyZWFrO2lbRD4+MF09MH13aGlsZSgwKTtpW0M+PjBdPTA7a1tfPj4yXT0wO2U6d2hpbGUoMSl7aWYoIShsW3U+PjBdfDApKWJyZWFrO2lmKChrW18+PjJdfDApPj0obVtJPj4xXXwwKSlicmVhazthPWVTKDEsMCxrW18+PjJdfDApfDA7ZD1hYTtkbyBpZighKChhJmtbZD4+Ml18MCkhPTA/MTooTCZrW2QrND4+Ml18MCkhPTApKXtkPXV5KGtbKGtbKGtbbj4+Ml18MCkrND4+Ml18MCkrKChrW18+PjJdfDApKjIwfDApPj4yXXwwKXwwO2tbUT4+Ml09ZDtpZighKG1bcD4+MV0mMTkyKSlpW3U+PjBdPTA7ZT1rW1E+PjJdfDA7aWYoKGtbej4+Ml18MCk+PS0xKXtpZigobFtlPj4wXXwwKSE9MTUyKWJyZWFrO2lmKChrWyhrW1E+PjJdfDApKzI4Pj4yXXwwKSE9KGtbQT4+Ml18MCkpYnJlYWs7aWYoKGpbKGtbUT4+Ml18MCkrMzI+PjFdfDApIT0oa1t6Pj4yXXwwKSlicmVha31lbHNlIGlmKFV5KGUsa1soa1soa1soa1tPPj4yXXwwKSs0MD4+Ml18MCkrND4+Ml18MCkrKChrW0U+PjJdfDApKjIwfDApPj4yXXwwLGtbQT4+Ml18MCl8MClicmVhaztpZigoa1t6Pj4yXXwwKTwwKXtiYT04NDticmVhayBlfWQ9cHkoa1trW2g+PjJdPj4yXXwwLGtbKGtbKGtbbj4+Ml18MCkrND4+Ml18MCkrKChrW18+PjJdfDApKjIwfDApPj4yXXwwKXwwO2tbTj4+Ml09ZDtpZighKGtbTj4+Ml18MCkpa1tOPj4yXT1rWyhrW3Y+PjJdfDApKzg+PjJdO2lmKCEoc2coa1trW04+PjJdPj4yXXwwLGtbKGtbKGtbTz4+Ml18MCkrMzI+PjJdfDApKyhrW0U+PjJdPDwyKT4+Ml18MCl8MCkpe2JhPTg0O2JyZWFrIGV9fXdoaWxlKDApO2tbXz4+Ml09KGtbXz4+Ml18MCkrMX1pZigoYmF8MCk9PTg0KXtiYT0wO2lbQz4+MF09MX1kbyBpZihsW0M+PjBdfDApe2lmKG1bcD4+MV0mNjQpYnJlYWs7aWYoaVtXPj4wXXwwKXtpZigobFtVPj4wXV5sW1Y+PjBdfDApPT0obFsoa1soa1tuPj4yXXwwKSs0Pj4yXXwwKSsoKGtbXz4+Ml18MCkqMjB8MCkrMTI+PjBdfDApKWJyZWFrO2lbQz4+MF09MDticmVha31pW1U+PjBdPWxbVj4+MF1ebFsoa1soa1tuPj4yXXwwKSs0Pj4yXXwwKSsoKGtbXz4+Ml18MCkqMjB8MCkrMTI+PjBdO2lmKGlbVT4+MF18MCl7Zz1lUygxLDAsa1tCPj4yXXwwKXwwO2Q9a1t0Pj4yXXwwO2M9ZDthPWtbYys0Pj4yXXxMO2tbZD4+Ml09a1tjPj4yXXxnO2tbZCs0Pj4yXT1hfWlbVz4+MF09MX13aGlsZSgwKTtpZighKGlbQz4+MF18MCkpe2JhPTk4O2JyZWFrfWlmKChrW3o+PjJdfDApPT0tMSlpW3c+PjBdPTE7Zz1lUygxLDAsa1tfPj4yXXwwKXwwO2M9YWE7YT1rW2MrND4+Ml18TDtkPWFhO2tbZD4+Ml09a1tjPj4yXXxnO2tbZCs0Pj4yXT1hfWtbRT4+Ml09KGtbRT4+Ml18MCkrMX1kbyBpZigoYmF8MCk9PTk4KXtiYT0wO2lmKChrW0U+PjJdfDApIT0wPyhrW0U+PjJdfDApPj0obVtIPj4xXXwwKTowKWJyZWFrO2lbRD4+MF09MH13aGlsZSgwKTtpZihpW3c+PjBdfDApaVtEPj4wXT0xfWlmKGlbRD4+MF18MCl7Zz0oa1tQPj4yXXwwKSs4fDA7Yz1LO2E9a1tjKzQ+PjJdfGtbZys0Pj4yXTtkPUs7a1tkPj4yXT1rW2M+PjJdfGtbZz4+Ml07a1tkKzQ+PjJdPWE7a1tfPj4yXT0wO3doaWxlKDEpe2lmKChrW18+PjJdfDApPj0obVtJPj4xXXwwKSlicmVhayBiO2E9ZVMoMSwwLGtbXz4+Ml18MCl8MDtkPWFhO2RvIGlmKCEoKGEma1tkPj4yXXwwKSE9MD8xOihMJmtbZCs0Pj4yXXwwKSE9MCkpe2tbTT4+Ml09a1soa1soa1tuPj4yXXwwKSs0Pj4yXXwwKSsoKGtbXz4+Ml18MCkqMjB8MCk+PjJdO2E9dkUoKGtbaD4+Ml18MCkrNDg4fDAsa1tNPj4yXXwwKXwwO2Q9RjtrW2Q+PjJdPWE7a1tkKzQ+PjJdPUw7ZD1GO2lmKChrW2Q+PjJdfDApPT0wJihrW2QrND4+Ml18MCk9PTA/KGpCKGtbTT4+Ml18MCl8MCk9PTA6MClicmVhazthPUY7ZD1LO2lmKChrW2E+PjJdJn5rW2Q+PjJdfDApPT0wPyhrW2ErND4+Ml0mfmtbZCs0Pj4yXXwwKT09MDowKXtnPWVTKDEsMCxrW18+PjJdfDApfDA7Yz1hYTthPWtbYys0Pj4yXXxMO2Q9YWE7a1tkPj4yXT1rW2M+PjJdfGc7a1tkKzQ+PjJdPWF9fXdoaWxlKDApO2tbXz4+Ml09KGtbXz4+Ml18MCkrMX19fXdoaWxlKDApO2tbQj4+Ml09KGtbQj4+Ml18MCkrMX1pZigoYmF8MCk9PTE4KXtpZihpW2UrMjQrNT4+MF18MCl7WD1KO1k9a1tYKzQ+PjJdfDA7YmE9YWE7a1tiYT4+Ml09a1tYPj4yXTtrW2JhKzQ+PjJdPVl9fWVsc2UgaWYoKGJhfDApPT00Nil7aVtaPj4wXT0wO2JhPWlbWj4+MF18MDtyPWNhO3JldHVybiBiYXwwfVk9YWE7YmE9SjtpZigoa1tZPj4yXXwwKT09KGtbYmE+PjJdfDApPyhrW1krND4+Ml18MCk9PShrW2JhKzQ+PjJdfDApOjApe2lbWj4+MF09altJPj4xXTtiYT1pW1o+PjBdfDA7cj1jYTtyZXR1cm4gYmF8MH1pZihpW0Q+PjBdfDApe2lbWj4+MF09LTE7YmE9aVtaPj4wXXwwO3I9Y2E7cmV0dXJuIGJhfDB9a1tfPj4yXT0obVtJPj4xXXwwKS0xO3doaWxlKDEpe2lmKChrW18+PjJdfDApPD0wKXtiYT0xMjI7YnJlYWt9WT1lUygxLDAsa1tfPj4yXXwwKXwwO1k9X1IoWXwwLEx8MCwxLDApfDA7WD0kO2tbWD4+Ml09WTtrW1grND4+Ml09TDtYPWFhO1k9JDtiYT0kO2U9a1tfPj4yXXwwO2lmKChrW1g+PjJdJmtbWT4+Ml18MCk9PShrW2JhPj4yXXwwKT8oa1tYKzQ+PjJdJmtbWSs0Pj4yXXwwKT09KGtbYmErND4+Ml18MCk6MCl7YmE9MTIwO2JyZWFrfWtbXz4+Ml09ZSstMX1pZigoYmF8MCk9PTEyMCl7aVtaPj4wXT1lO2JhPWlbWj4+MF18MDtyPWNhO3JldHVybiBiYXwwfWVsc2UgaWYoKGJhfDApPT0xMjIpe2lbWj4+MF09MDtiYT1pW1o+PjBdfDA7cj1jYTtyZXR1cm4gYmF8MH1yZXR1cm4gMH1mdW5jdGlvbiB6RShhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGk9MCxsPTAsbj0wO2g9cjtyPXIrMzJ8MDtlPWgrOHwwO2Y9aCsxNnwwO2w9aCs0fDA7bj1oO2k9aCsxNHwwO2c9aCsxMnwwO2tbZT4+Ml09YTtqW2Y+PjFdPWI7a1tsPj4yXT1jO2tbbj4+Ml09ZDthPSgoKGtbbD4+Ml18MCktKGtbbj4+Ml18MCl8MCkqMTAwfDApLyhrW2w+PjJdfDApfDA7YT0oKFdqKGEsKChhfDApPDApPDwzMT4+MzEpfDApPDwxNj4+MTYpLTY2JjY1NTM1O2pbaT4+MV09YTtqW2c+PjFdPShqW2Y+PjFdfDApKyhqW2k+PjFdfDApKzE2O2lmKChtWyhrW2U+PjJdfDApKzQwPj4xXSYxNjM4NHwwKSE9MD8oalsoa1tlPj4yXXwwKSsxNj4+MV18MCk8KGpbZj4+MV18MCk6MClqW2Y+PjFdPWpbKGtbZT4+Ml18MCkrMTY+PjFdfDA7bj0oQUUoaltmPj4xXXwwKXwwKTw8MTY+PjE2O2pbZz4+MV09KGpbZz4+MV18MCkrbjtyPWg7cmV0dXJuIGpbZz4+MV18MH1mdW5jdGlvbiBBRShhKXthPWF8MDt2YXIgYj0wLGM9MDtjPXI7cj1yKzE2fDA7Yj1jO2pbYj4+MV09YTtpZigoaltiPj4xXXwwKTw9MTApe2E9MDthPWEmNjU1MzU7cj1jO3JldHVybiBhfDB9YT1qW2I+PjFdfDA7YT0oKFdqKGEsKChhfDApPDApPDwzMT4+MzEpfDApPDwxNj4+MTYpLTMzfDA7YT1hJjY1NTM1O3I9YztyZXR1cm4gYXwwfWZ1bmN0aW9uIEJFKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTAsRT0wLEY9MCxHPTA7RD1yO3I9cisxMjh8MDtmPUQrMTA4fDA7Zz1EKzEwNHwwO2g9RCs0OHwwO0Y9RCs0MHwwO0E9RCsxMDB8MDtHPUQrOTZ8MDt5PUQrOTJ8MDt6PUQrODh8MDtFPUQrODR8MDt3PUQrODB8MDt2PUQrNzZ8MDttPUQrNzJ8MDt4PUQrNjh8MDtvPUQrMzJ8MDtzPUQrMTEyfDA7Qj1EKzY0fDA7Qz1EKzYwfDA7dD1EKzI0fDA7cD1EKzE2fDA7bj1EKzU2fDA7cT1EKzh8MDt1PUQ7a1tnPj4yXT1hO2E9aDtrW2E+PjJdPWI7a1thKzQ+PjJdPWM7YT1GO2tbYT4+Ml09ZDtrW2ErND4+Ml09ZTtrW0E+PjJdPTA7a1tHPj4yXT1rW2tbZz4+Ml0+PjJdO2tbeT4+Ml09a1trW0c+PjJdPj4yXTtrW3o+PjJdPWtbKGtbZz4+Ml18MCkrND4+Ml07a1t4Pj4yXT1rWyhrW2c+PjJdfDApKzEyPj4yXTtrW0U+PjJdPShrWyhrW0c+PjJdfDApKzQ+PjJdfDApKzgrKChsWyhrW3g+PjJdfDApKzE2Pj4wXXwwKSo3MnwwKTthPUY7YT1YRShrW3k+PjJdfDAsa1t6Pj4yXXwwLGtbYT4+Ml18MCxrW2ErND4+Ml18MCxrW0U+PjJdfDAsa1soa1tnPj4yXXwwKSs4Pj4yXXwwLHMpfDA7a1t3Pj4yXT1hO2lmKCEoa1t3Pj4yXXwwKSl7a1tmPj4yXT03O0c9a1tmPj4yXXwwO3I9RDtyZXR1cm4gR3wwfWpbKGtbeD4+Ml18MCkrMTg+PjFdPTA7a1soa1t4Pj4yXXwwKSszNj4+Ml09MTAyNDtqWyhrW3g+PjJdfDApKzQwPj4xXT0wO2lbKGtbeD4+Ml18MCkrMjQrND4+MF09MDtrW3Y+PjJdPWtba1t3Pj4yXT4+Ml07aWYodEUoa1trW3k+PjJdPj4yXXwwLGtbeD4+Ml18MCxrW3Y+PjJdfDApfDApe2JnKGtba1t5Pj4yXT4+Ml18MCxrW3c+PjJdfDApO2tbZj4+Ml09NztHPWtbZj4+Ml18MDtyPUQ7cmV0dXJuIEd8MH1HPWg7Rz1ZRShrW2c+PjJdfDAsa1tHPj4yXXwwLGtbRys0Pj4yXXwwLC0xLC0xLDAsa1t3Pj4yXXwwLGpbcz4+MV18MCxtKXwwO2tbQT4+Ml09RztpZigoa1tBPj4yXXwwKT09MD8oRT1rW3g+PjJdfDAsRz1oLEY9a1tFPj4yXSZ+a1tHPj4yXSxHPWtbRSs0Pj4yXSZ+a1tHKzQ+PjJdLEU9byxrW0U+PjJdPUYsa1tFKzQ+PjJdPUcsKEZ8MCkhPTB8KEd8MCkhPTApOjApe2tbQj4+Ml09MDtrW0M+PjJdPTA7Rz10O2tbRz4+Ml09MDtrW0crND4+Ml09MDtHPXA7a1tHPj4yXT0wO2tbRys0Pj4yXT0wO2lmKChrW20+PjJdfDApIT0wPyhhPWgsYT1ZRShrW2c+PjJdfDAsa1thPj4yXXwwLGtbYSs0Pj4yXXwwLC0xLC0xLDEsa1t3Pj4yXXwwLGpbcz4+MV18MCxtKXwwLGtbQT4+Ml09YSxhPWtbeD4+Ml18MCxFPWgsRj1rW2ErND4+Ml0mfmtbRSs0Pj4yXSxHPXAsa1tHPj4yXT1rW2E+PjJdJn5rW0U+PjJdLGtbRys0Pj4yXT1GLEc9cCwoa1tHPj4yXXwwKT09MCYoa1tHKzQ+PjJdfDApPT0wKTowKXtrW0I+PjJdPTE7a1tDPj4yXT0xfXdoaWxlKDEpe2lmKGtbQT4+Ml18MClicmVhaztHPXE7a1tHPj4yXT0tMTtrW0crND4+Ml09LTE7a1tuPj4yXT0wO3doaWxlKDEpe2lmKChrW24+PjJdfDApPj0oa1t2Pj4yXXwwKSlicmVhaztFPShrWyhrW3o+PjJdfDApKzIwPj4yXXwwKSsoKGtbKGtbKGtbdz4+Ml18MCkrND4+Ml18MCkrKChrW24+PjJdfDApKjEyfDApKzg+PjJdfDApKjQ4fDApKzMyfDA7Rz1oO2E9a1tFKzQ+PjJdJn5rW0crND4+Ml07Rj11O2tbRj4+Ml09a1tFPj4yXSZ+a1tHPj4yXTtrW0YrND4+Ml09YTtGPXU7YT1rW0YrND4+Ml18MDtHPXQ7RT1rW0crND4+Ml18MDtpZihhPj4+MD5FPj4+MHwoKGF8MCk9PShFfDApPyhrW0Y+PjJdfDApPj4+MD4oa1tHPj4yXXwwKT4+PjA6MCk/KEY9dSxhPWtbRis0Pj4yXXwwLEc9cSxFPWtbRys0Pj4yXXwwLGE+Pj4wPEU+Pj4wfCgoYXwwKT09KEV8MCk/KGtbRj4+Ml18MCk+Pj4wPChrW0c+PjJdfDApPj4+MDowKSk6MCl7RT11O0Y9a1tFKzQ+PjJdfDA7Rz1xO2tbRz4+Ml09a1tFPj4yXTtrW0crND4+Ml09Rn1rW24+PjJdPShrW24+PjJdfDApKzF9RT1xO0Y9a1tFKzQ+PjJdfDA7Rz10O2tbRz4+Ml09a1tFPj4yXTtrW0crND4+Ml09RjtHPXE7aWYoKGtbRz4+Ml18MCk9PS0xPyhrW0crND4+Ml18MCk9PS0xOjApYnJlYWs7Rj1xO0c9bztpZigoa1tGPj4yXXwwKT09KGtbRz4+Ml18MCk/KGtbRis0Pj4yXXwwKT09KGtbRys0Pj4yXXwwKTowKWNvbnRpbnVlO0Y9cTtHPXA7aWYoKGtbRj4+Ml18MCk9PShrW0c+PjJdfDApPyhrW0YrND4+Ml18MCk9PShrW0crND4+Ml18MCk6MCljb250aW51ZTtFPWg7Rz1xO0Y9aDtGPVlFKGtbZz4+Ml18MCxrW0U+PjJdfDAsa1tFKzQ+PjJdfDAsa1tHPj4yXXxrW0Y+PjJdLGtbRys0Pj4yXXxrW0YrND4+Ml0sMCxrW3c+PjJdfDAsaltzPj4xXXwwLG0pfDA7a1tBPj4yXT1GO0Y9a1t4Pj4yXXwwO0c9aDtpZighKChrW0Y+PjJdfDApPT0oa1tHPj4yXXwwKT8oa1tGKzQ+PjJdfDApPT0oa1tHKzQ+PjJdfDApOjApKWNvbnRpbnVlO2tbQj4+Ml09MTtpZihrW20+PjJdfDApY29udGludWU7a1tDPj4yXT0xfWlmKChrW0E+PjJdfDApPT0wJihrW0I+PjJdfDApPT0wPyhGPWgsRz1oLEc9WUUoa1tnPj4yXXwwLGtbRj4+Ml18MCxrW0YrND4+Ml18MCxrW0c+PjJdfDAsa1tHKzQ+PjJdfDAsMCxrW3c+PjJdfDAsaltzPj4xXXwwLG0pfDAsa1tBPj4yXT1HLChrW20+PjJdfDApPT0wKTowKWtbQz4+Ml09MTtpZigoa1tBPj4yXXwwKT09MCYoa1tDPj4yXXwwKT09MCl7Rj1oO0c9aDtHPVlFKGtbZz4+Ml18MCxrW0Y+PjJdfDAsa1tGKzQ+PjJdfDAsa1tHPj4yXXwwLGtbRys0Pj4yXXwwLDEsa1t3Pj4yXXwwLGpbcz4+MV18MCxtKXwwO2tbQT4+Ml09R319aWYoa1soa1t3Pj4yXXwwKSsyOD4+Ml18MClVZChrWyhrW3c+PjJdfDApKzI0Pj4yXXwwKTtiZyhrW2tbeT4+Ml0+PjJdfDAsa1t3Pj4yXXwwKTtrW2Y+PjJdPWtbQT4+Ml07Rz1rW2Y+PjJdfDA7cj1EO3JldHVybiBHfDB9ZnVuY3Rpb24gQ0UoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLG49MCxvPTAscD0wLHE9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MCxFPTAsRj0wLEc9MCxIPTAsST0wLEo9MDtJPXI7cj1yKzE2MHwwO2Q9SSsxNDR8MDtlPUkrOHwwO0Q9SSsxNDB8MDt2PUkrMTM2fDA7Rz1JKzgwfDA7Zz1JKzE1NnwwO2Y9SSsxNTR8MDtKPUkrNzJ8MDt3PUkrNjh8MDt1PUkrNjR8MDtIPUkrNjB8MDtvPUkrNTZ8MDtoPUkrNTJ8MDtGPUkrMTUyfDA7RT1JKzE1MHwwO0E9SSs0OHwwO3g9SSs0NHwwO3Q9SSs0MHwwO3k9SSszNnwwO0M9SSszMnwwO3E9STtzPUkrMTQ4fDA7cD1JKzI4fDA7bj1JKzI0fDA7Qj1JKzIwfDA7ej1JKzE2fDA7a1tkPj4yXT1hO2E9ZTtrW2E+PjJdPWI7a1thKzQ+PjJdPWM7altmPj4xXT0tMTtrW0g+PjJdPTA7a1tvPj4yXT0xO2tbdT4+Ml09a1soa1tkPj4yXXwwKSsxMj4+Ml07a1tEPj4yXT1rW2tbZD4+Ml0+PjJdO2tbSj4+Ml09a1soa1tEPj4yXXwwKSs0Pj4yXTtrW3c+PjJdPShrW0o+PjJdfDApKzgrKChsWyhrW3U+PjJdfDApKzE2Pj4wXXwwKSo3MnwwKTtrW3g+PjJdPWtbKGtbdz4+Ml18MCkrMTY+PjJdO2tbQT4+Ml09a1soa1tkPj4yXXwwKSs0Pj4yXTtkbyBpZihrWyhrW3c+PjJdfDApKzY4Pj4yXXwwKWtbdj4+Ml09a1soa1t3Pj4yXXwwKSs2OD4+Ml07ZWxzZXtpZihsWyhrW3g+PjJdfDApKzQyPj4wXSYzMil7a1t2Pj4yXT1rWyhrW3g+PjJdfDApKzg+PjJdO2JyZWFrfWI9RztjPWIrNTZ8MDtkb3trW2I+PjJdPTA7Yj1iKzR8MH13aGlsZSgoYnwwKTwoY3wwKSk7altHKzUwPj4xXT0xO2pbRys1Mj4+MV09MTtrW0crND4+Ml09ZjtrW0crOD4+Ml09ZztpW0crNTQ+PjBdPTU7a1tHKzEyPj4yXT1rW3g+PjJdO2pbRys0OD4+MV09alsoa1t4Pj4yXXwwKSs0MD4+MV18MDtqW2c+PjFdPWpbKGtbeD4+Ml18MCkrMzg+PjFdfDA7altnKzI+PjFdPTA7a1t0Pj4yXT1rWyhrWyhrW3c+PjJdfDApKzE2Pj4yXXwwKSs4Pj4yXTtpZighKGlbKGtbdz4+Ml18MCkrMzYrMT4+MF0mMSkpa1tHKzIwPj4yXT1rW3Q+PjJdO2tbdj4+Ml09R313aGlsZSgwKTtqW0Y+PjFdPWpbKGtbeD4+Ml18MCkrMzg+PjFdfDA7Sj1BRShqW0Y+PjFdfDApfDA7altFPj4xXT1KO2E6ZG8gaWYoKCgoKCgoKGtbKGtbZD4+Ml18MCkrMTY+PjJdfDApPT0wPyhtWyhrW0Q+PjJdfDApKzQwPj4xXSYzMnwwKT09MDowKT8oa1soa1trW2tbRD4+Ml0+PjJdPj4yXXwwKSsyND4+Ml0mMTA0ODU3NnwwKSE9MDowKT8oa1soa1t3Pj4yXXwwKSs2OD4+Ml18MCk9PTA6MCk/KGlbKGtbdz4+Ml18MCkrMzYrMT4+MF0mMXwwKT09MDowKT8obFsoa1t4Pj4yXXwwKSs0Mj4+MF0mMzJ8MCk9PTA6MCk/KChsWyhrW3c+PjJdfDApKzM2KzE+PjBdfDApPj4+MyYxfDApPT0wOjApPygobFsoa1t3Pj4yXXwwKSszNisxPj4wXXwwKT4+PjUmMXwwKT09MDowKXtrW0M+PjJdPShrWyhrW0E+PjJdfDApKzIwPj4yXXwwKSsoKGtbKGtbQT4+Ml18MCkrMTI+PjJdfDApKjQ4fDApO2tbeT4+Ml09a1soa1tBPj4yXXwwKSsyMD4+Ml07d2hpbGUoMSl7aWYoa1tIPj4yXXwwKWJyZWFrIGE7aWYoKGtbeT4+Ml18MCk+Pj4wPj0oa1tDPj4yXXwwKT4+PjApYnJlYWsgYTtHPShrW3k+PjJdfDApKzMyfDA7Sj0oa1t1Pj4yXXwwKSs4fDA7aWYoISgoa1tHPj4yXSZrW0o+PjJdfDApIT0wPzE6KGtbRys0Pj4yXSZrW0orND4+Ml18MCkhPTApPyhzRShrW3k+PjJdfDAsa1t3Pj4yXXwwLDAsMCl8MCkhPTA6MCl7alsoa1t1Pj4yXXwwKSsyND4+MV09MTtqWyhrW3U+PjJdfDApKzQyPj4xXT0wO2tbKGtbdT4+Ml18MCkrMjQrOD4+Ml09MDtqWyhrW3U+PjJdfDApKzQwPj4xXT0xO2tba1soa1t1Pj4yXXwwKSs0OD4+Ml0+PjJdPWtbeT4+Ml07alsoa1t1Pj4yXXwwKSsxOD4+MV09KGpbRT4+MV18MCkrKGpbRj4+MV18MCkrNDtpZigoa1soa1t4Pj4yXXwwKSsxMj4+Ml18MCk9PTA/KGxbKGtbeD4+Ml18MCkrNDI+PjBdJjJ8MCk9PTA6MCl7Sj0oa1t1Pj4yXXwwKSsxOHwwO2pbSj4+MV09KGpbSj4+MV18MCkrMjR9aWYoKGpbKGtbdT4+Ml18MCkrMTg+PjFdfDApPDApalsoa1t1Pj4yXXwwKSsxOD4+MV09MDtqWyhrW3U+PjJdfDApKzIyPj4xXT00MztnPXhFKGpbRT4+MV18MCxqWyhrW3U+PjJdfDApKzIyPj4xXXwwKXwwO2pbKGtbdT4+Ml18MCkrMjA+PjFdPWc7a1soa1t1Pj4yXXwwKSszNj4+Ml09MTYzODQ7Zz1lO3Q9KGtbeT4+Ml18MCkrMzJ8MDtHPWtbZys0Pj4yXXxrW3QrND4+Ml07Sj1rW3U+PjJdfDA7a1tKPj4yXT1rW2c+PjJdfGtbdD4+Ml07a1tKKzQ+PjJdPUc7Sj1HRShrW2Q+PjJdfDAsa1t1Pj4yXXwwKXwwO2tbSD4+Ml09Sn1rW3k+PjJdPShrW3k+PjJdfDApKzQ4fX13aGlsZSgwKTtiOndoaWxlKDEpe2lmKCEoKGtbSD4+Ml18MCk9PTA/KGtbdj4+Ml18MCkhPTA6MCkpe2I9NTc7YnJlYWt9aWYoISgoa1soa1t2Pj4yXXwwKSszNj4+Ml18MCkhPTA/KExFKGtbKGtbdz4+Ml18MCkrNDQ+PjJdfDAsa1tBPj4yXXwwLGtbKGtbdj4+Ml18MCkrMzY+PjJdfDApfDApPT0wOjApKXtqW0Y+PjFdPWpba1soa1t2Pj4yXXwwKSs4Pj4yXT4+MV18MDtqWyhrW3U+PjJdfDApKzI0Pj4xXT0wO2pbKGtbdT4+Ml18MCkrMjQrMj4+MV09MDtqWyhrW3U+PjJdfDApKzI0KzQ+PjFdPTA7alsoa1t1Pj4yXXwwKSs0Mj4+MV09MDtqWyhrW3U+PjJdfDApKzQwPj4xXT0wO2lbKGtbdT4+Ml18MCkrMTc+PjBdPTA7alsoa1t1Pj4yXXwwKSsxOD4+MV09MDtFPWU7Rz1rW0UrND4+Ml18MDtKPWtbdT4+Ml18MDtrW0o+PjJdPWtbRT4+Ml07a1tKKzQ+PjJdPUc7alsoa1t1Pj4yXXwwKSsyMj4+MV09altGPj4xXXwwO2tbKGtbdT4+Ml18MCkrMjQrOD4+Ml09a1t2Pj4yXTtKPU1FKGtbZD4+Ml18MCxrW3Y+PjJdfDAsa1soa1t3Pj4yXXwwKSs0ND4+Ml18MCl8MDtrW2g+PjJdPUo7ZG8gaWYoKGtbKGtbdj4+Ml18MCkrNDQ+PjJdfDApPD0wKXtrWyhrW3U+PjJdfDApKzM2Pj4yXT0yNTY7aVsoa1t1Pj4yXXwwKSsxNz4+MF09KGtbaD4+Ml18MCkhPTA/a1tvPj4yXXwwOjA7alsoa1t1Pj4yXXwwKSsyMD4+MV09KGpbRj4+MV18MCkrMTY7TkUoa1tBPj4yXXwwLGtbdT4+Ml18MCxqW0Y+PjFdfDApO0o9R0Uoa1tkPj4yXXwwLGtbdT4+Ml18MCl8MDtrW0g+PjJdPUo7alsoa1t1Pj4yXXwwKSsyMj4+MV09altGPj4xXXwwO2lmKGtbSD4+Ml18MCl7Yj01NzticmVhayBifX1lbHNle2lmKChsWyhrW3Y+PjJdfDApKzU1Pj4wXXwwKT4+PjUmMSl7a1soa1t1Pj4yXXwwKSszNj4+Ml09NTc2O0o9cTtrW0o+PjJdPTA7a1tKKzQ+PjJdPTB9ZWxzZXtHPShrW3c+PjJdfDApKzU2fDA7Qz1rW0c+PjJdfDA7Rz1rW0crND4+Ml18MDtFPU9FKGtbdj4+Ml18MCl8MDtKPXE7a1tKPj4yXT1DJn5FO2tbSis0Pj4yXT1HJn5MO0o9cTtrWyhrW3U+PjJdfDApKzM2Pj4yXT0oa1tKPj4yXXwwKT09MCYoa1tKKzQ+PjJdfDApPT0wPzU3Njo1MTJ9aWYoKChrW2g+PjJdfDApPT0wPyhsWyhrW3g+PjJdfDApKzQyPj4wXSYzMnwwKT09MDowKT8oa1soa1t2Pj4yXXwwKSszNj4+Ml18MCk9PTA6MCl7Sj1xO2lmKCEoKGtbSj4+Ml18MCk9PTAmKGtbSis0Pj4yXXwwKT09MCkpYnJlYWs7aWYoKGxbKGtbdj4+Ml18MCkrNTU+PjBdfDApPj4+MiYxKWJyZWFrO2lmKChqWyhrW3Y+PjJdfDApKzQ4Pj4xXXwwKT49KGpbKGtbeD4+Ml18MCkrNDA+PjFdfDApKWJyZWFrO2lmKCEoKGtbNl18MCkhPTA/KG1bKGtbRD4+Ml18MCkrNDA+PjFdJjR8MCk9PTA6MCkpYnJlYWs7aWYobVsoa1trW2tbRD4+Ml0+PjJdPj4yXXwwKSs2ND4+MV0mNjQpYnJlYWt9aVsoa1t1Pj4yXXwwKSsxNz4+MF09KGtbaD4+Ml18MCkhPTA/a1tvPj4yXXwwOjA7alsoa1t1Pj4yXXwwKSsyMD4+MV09KGpbRj4+MV18MCkrMSsoKChqWyhrW3Y+PjJdfDApKzQ4Pj4xXXwwKSoxNXwwKS8oalsoa1t4Pj4yXXwwKSs0MD4+MV18MCl8MCk7Sj1xO2lmKChrW0o+PjJdfDApIT0wfChrW0orND4+Ml18MCkhPTApe2pbcz4+MV09KGpbRj4+MV18MCkrMTY7a1tuPj4yXT1rWyhrW3c+PjJdfDApKzQ0Pj4yXTtrW0I+PjJdPShrW0Q+PjJdfDApKzgwO2tbcD4+Ml09MDt3aGlsZSgxKXtpZigoa1twPj4yXXwwKT49KGtbKGtbQj4+Ml18MCkrMTI+PjJdfDApKWJyZWFrO2tbej4+Ml09KGtbKGtbQj4+Ml18MCkrMjA+PjJdfDApKygoa1twPj4yXXwwKSo0OHwwKTtpZighKFBFKGtba1t6Pj4yXT4+Ml18MCxrW24+PjJdfDAsa1t2Pj4yXXwwKXwwKSlicmVhaztpZigoalsoa1t6Pj4yXXwwKSs4Pj4xXXwwKT4wKXtqW3M+PjFdPShqW3M+PjFdfDApKy0xPDwxNj4+MTY7aWYobVsoa1t6Pj4yXXwwKSsxMj4+MV0mMTMwKWpbcz4+MV09KGpbcz4+MV18MCktMTl9ZWxzZSBqW3M+PjFdPShqW3M+PjFdfDApKyhqWyhrW3o+PjJdfDApKzg+PjFdfDApO2tbcD4+Ml09KGtbcD4+Ml18MCkrMX1KPXhFKGpbKGtbdT4+Ml18MCkrMjA+PjFdfDAsaltzPj4xXXwwKXwwO2pbKGtbdT4+Ml18MCkrMjA+PjFdPUp9TkUoa1tBPj4yXXwwLGtbdT4+Ml18MCxqW0Y+PjFdfDApO0o9R0Uoa1tkPj4yXXwwLGtbdT4+Ml18MCl8MDtrW0g+PjJdPUo7alsoa1t1Pj4yXXwwKSsyMj4+MV09altGPj4xXXwwO2lmKGtbSD4+Ml18MCl7Yj01NzticmVhayBifX13aGlsZSgwKTtKPVFFKGtbZD4+Ml18MCxrW3c+PjJdfDAsa1t2Pj4yXXwwLDApfDA7a1tIPj4yXT1KO2lmKGtbKGtbdz4+Ml18MCkrNjg+PjJdfDApe2I9NTc7YnJlYWt9fWtbdj4+Ml09a1soa1t2Pj4yXXwwKSsyMD4+Ml07a1tvPj4yXT0oa1tvPj4yXXwwKSsxfWlmKChifDApPT01Nyl7cj1JO3JldHVybiBrW0g+PjJdfDB9cmV0dXJuIDB9ZnVuY3Rpb24gREUoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsbj0wLG89MCxwPTAscT0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wLEU9MCxGPTAsRz0wLEg9MCxJPTA7ST1yO3I9cis2NzJ8MDtnPUkrNjY4fDA7aD1JKzU4NHwwO249SSs1NzZ8MDtmPUkrNjY0fDA7ej1JKzY2MHwwO3U9SSs2NTZ8MDt5PUkrNjUyfDA7QT1JKzY0OHwwO0I9SSs2NDR8MDtwPUkrNjQwfDA7Rz1JKzE2OHwwO0U9SSs2MjB8MDtGPUkrMTEyfDA7Qz1JKzU2fDA7dD1JKzYxNnwwO3c9SSs2MTJ8MDt4PUkrNjA4fDA7dj1JKzYwNHwwO3M9SSs2MDB8MDtvPUkrNTk2fDA7cT1JKzU5MnwwO0Q9STtrW2c+PjJdPWE7YT1oO2tbYT4+Ml09YjtrW2ErND4+Ml09YztiPW47a1tiPj4yXT1kO2tbYis0Pj4yXT1lO2tbZj4+Ml09a1trW2c+PjJdPj4yXTtrW0I+PjJdPTA7a1t6Pj4yXT1rWyhrW2c+PjJdfDApKzQ+PjJdO2tbQT4+Ml09KGtbKGtbej4+Ml18MCkrMjA+PjJdfDApKygoa1soa1t6Pj4yXXwwKSsxMj4+Ml18MCkqNDh8MCk7a1t1Pj4yXT1rWyhrW2c+PjJdfDApKzEyPj4yXTtiPUY7Yz1iKzU2fDA7ZG97a1tiPj4yXT0wO2I9Yis0fDB9d2hpbGUoKGJ8MCk8KGN8MCkpO2tbdD4+Ml09KGtbKGtbZj4+Ml18MCkrND4+Ml18MCkrOCsoKGxbKGtbdT4+Ml18MCkrMTY+PjBdfDApKjcyfDApO2tbcD4+Ml09a1soa1t0Pj4yXXwwKSs0ND4+Ml07a1t5Pj4yXT1rWyhrW3o+PjJdfDApKzIwPj4yXTt3aGlsZSgxKXtpZighKChrW3k+PjJdfDApPj4+MDwoa1tBPj4yXXwwKT4+PjA/KGtbQj4+Ml18MCk9PTA6MCkpYnJlYWs7YTpkbyBpZigobVsoa1t5Pj4yXXwwKSsxMj4+MV0mNTEyfDApIT0wPyhhPShrWyhrW3k+PjJdfDApKzI4Pj4yXXwwKSs0MDh8MCxmPShrW3U+PjJdfDApKzh8MCwoa1thPj4yXSZrW2Y+PjJdfDApIT0wPzE6KGtbYSs0Pj4yXSZrW2YrND4+Ml18MCkhPTApOjApe2tbdz4+Ml09a1soa1t5Pj4yXXwwKSsyOD4+Ml07a1t4Pj4yXT0oa1soa1t3Pj4yXXwwKSsyMD4+Ml18MCkrKChrWyhrW3c+PjJdfDApKzEyPj4yXXwwKSo0OHwwKTtrW3M+PjJdPTE7Zj1rW2c+PjJdfDA7a1tFPj4yXT1rW2Y+PjJdO2tbRSs0Pj4yXT1rW2YrND4+Ml07a1tFKzg+PjJdPWtbZis4Pj4yXTtrW0UrMTI+PjJdPWtbZisxMj4+Ml07a1tFKzE2Pj4yXT1rW2YrMTY+PjJdO2tbRSs4Pj4yXT0wO2tbRSsxNj4+Ml09QztrW3Y+PjJdPWtbKGtbdz4+Ml18MCkrMjA+PjJdO2I6d2hpbGUoMSl7aWYoKGtbdj4+Ml18MCk+Pj4wPj0oa1t4Pj4yXXwwKT4+PjApYnJlYWs7Yj1rW3Y+PjJdfDA7aWYoIShtWyhrW3Y+PjJdfDApKzEyPj4xXSYxMDI0KSl7aWYoKGtbYisyMD4+Ml18MCk9PShrW3A+PjJdfDApKXtrW0c+PjJdPWtba1t6Pj4yXT4+Ml07a1tHKzQ+PjJdPWtbej4+Ml07aVtHKzg+PjBdPTI4O2tbRysxMj4+Ml09MTtrW0crMjA+PjJdPWtbdj4+Ml07a1tFKzQ+PjJdPUc7SD0xMX19ZWxzZXtrW0UrND4+Ml09a1tiKzI4Pj4yXTtIPTExfWM6ZG8gaWYoKEh8MCk9PTExKXtIPTA7altDPj4xXT0wO2M9aDtiPWtbYz4+Ml18MDtjPWtbYys0Pj4yXXwwO2lmKGxbKGtbKGtbdD4+Ml18MCkrMTY+PjJdfDApKzQyPj4wXSYxNil7Zj1uO2Y9QkUoRSxiLGMsa1tmPj4yXXwwLGtbZis0Pj4yXXwwKXwwO2tbQj4+Ml09Zn1lbHNle2Y9Q0UoRSxiLGMpfDA7a1tCPj4yXT1mfWlmKCEoa1tCPj4yXXwwKSl7YT1oO2Y9bjtmPURFKEUsa1thPj4yXXwwLGtbYSs0Pj4yXXwwLGtbZj4+Ml18MCxrW2YrND4+Ml18MCl8MDtrW0I+PjJdPWZ9aWYoIShtW0M+PjFdfDApKXtIPTE3O2JyZWFrIGJ9aWYoa1tzPj4yXXwwKXtFRShGLEMpO2tbcz4+Ml09MDticmVha31FRShELEYpO2pbRj4+MV09MDtrW28+PjJdPTA7d2hpbGUoMSl7aWYoKGtbbz4+Ml18MCk+PShtW0Q+PjFdfDApKWJyZWFrIGM7a1txPj4yXT0wO3doaWxlKDEpe2I9a1tvPj4yXXwwO2lmKChrW3E+PjJdfDApPj0obVtDPj4xXXwwKSlicmVhaztmPUQrOCsoYjw8NCl8MDthPUMrOCsoa1txPj4yXTw8NCl8MDtlPWtbZj4+Ml18a1thPj4yXTthPWtbZis0Pj4yXXxrW2ErND4+Ml07Zj14RShqW0QrOCsoa1tvPj4yXTw8NCkrOD4+MV18MCxqW0MrOCsoa1txPj4yXTw8NCkrOD4+MV18MCl8MDtGRShGLGUsYSxmLHhFKGpbRCs4KyhrW28+PjJdPDw0KSsxMD4+MV18MCxqW0MrOCsoa1txPj4yXTw8NCkrMTA+PjFdfDApfDApfDA7a1txPj4yXT0oa1txPj4yXXwwKSsxfWtbbz4+Ml09YisxfX13aGlsZSgwKTtrW3Y+PjJdPShrW3Y+PjJdfDApKzQ4fWlmKChIfDApPT0xNyl7SD0wO2pbRj4+MV09MH1qWyhrW3U+PjJdfDApKzQwPj4xXT0xO2tba1soa1t1Pj4yXXwwKSs0OD4+Ml0+PjJdPWtbeT4+Ml07a1soa1t1Pj4yXXwwKSszNj4+Ml09ODE5MjtqWyhrW3U+PjJdfDApKzE4Pj4xXT0wO2lbKGtbdT4+Ml18MCkrMTc+PjBdPTA7Zj0oa1t1Pj4yXXwwKSsyNHwwO2tbZj4+Ml09MDtrW2YrND4+Ml09MDtrW2YrOD4+Ml09MDtrW28+PjJdPTA7d2hpbGUoMSl7aWYoa1tCPj4yXXwwKWJyZWFrIGE7aWYoKGtbbz4+Ml18MCk+PShtW0Y+PjFdfDApKWJyZWFrIGE7alsoa1t1Pj4yXXwwKSsyMD4+MV09KGpbRis4KyhrW28+PjJdPDw0KSs4Pj4xXXwwKSsxO2pbKGtbdT4+Ml18MCkrMjI+PjFdPWpbRis4KyhrW28+PjJdPDw0KSsxMD4+MV18MDtlPUYrOCsoa1tvPj4yXTw8NCl8MDthPWtbZSs0Pj4yXXwwO2Y9a1t1Pj4yXXwwO2tbZj4+Ml09a1tlPj4yXTtrW2YrND4+Ml09YTtmPUdFKGtbZz4+Ml18MCxrW3U+PjJdfDApfDA7a1tCPj4yXT1mO2tbbz4+Ml09KGtbbz4+Ml18MCkrMX19d2hpbGUoMCk7a1t5Pj4yXT0oa1t5Pj4yXXwwKSs0OH1yPUk7cmV0dXJuIGtbQj4+Ml18MH1mdW5jdGlvbiBFRShhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MDtjPXI7cj1yKzE2fDA7ZD1jKzR8MDtlPWM7a1tkPj4yXT1hO2tbZT4+Ml09YjtqW2tbZD4+Ml0+PjFdPWpba1tlPj4yXT4+MV18MDtiUygoa1tkPj4yXXwwKSs4fDAsKGtbZT4+Ml18MCkrOHwwLChtW2tbZD4+Ml0+PjFdfDApPDw0fDApfDA7cj1jO3JldHVybn1mdW5jdGlvbiBGRShhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxpPTAsbD0wLG49MCxvPTAscD0wLHE9MDtxPXI7cj1yKzMyfDA7Zz1xKzE2fDA7aD1xKzEyfDA7aT1xO2w9cSsyNHwwO249cSsyMnwwO289cSsyMHwwO3A9cSs4fDA7a1toPj4yXT1hO2E9aTtrW2E+PjJdPWI7a1thKzQ+PjJdPWM7altsPj4xXT1kO2pbbj4+MV09ZTtqW28+PjFdPWpba1toPj4yXT4+MV18MDtrW3A+PjJdPShrW2g+PjJdfDApKzg7d2hpbGUoMSl7aWYoKG1bbz4+MV18MCk8PTApe2Y9OTticmVha31pZigoaltsPj4xXXwwKTw9KGpbKGtbcD4+Ml18MCkrOD4+MV18MCk/KGU9aSxhPWtbcD4+Ml18MCxkPWksKGtbZT4+Ml0ma1thPj4yXXwwKT09KGtbZD4+Ml18MCk/KGtbZSs0Pj4yXSZrW2ErND4+Ml18MCk9PShrW2QrND4+Ml18MCk6MCk6MClicmVhaztpZigoalsoa1twPj4yXXwwKSs4Pj4xXXwwKTw9KGpbbD4+MV18MCk/KGU9a1twPj4yXXwwLGE9aSxkPWtbcD4+Ml18MCwoa1tlPj4yXSZrW2E+PjJdfDApPT0oa1tkPj4yXXwwKT8oa1tlKzQ+PjJdJmtbYSs0Pj4yXXwwKT09KGtbZCs0Pj4yXXwwKTowKTowKXtmPTc7YnJlYWt9altvPj4xXT0oaltvPj4xXXwwKSstMTw8MTY+PjE2O2tbcD4+Ml09KGtbcD4+Ml18MCkrMTZ9aWYoKGZ8MCk9PTcpe2tbZz4+Ml09MDtwPWtbZz4+Ml18MDtyPXE7cmV0dXJuIHB8MH1kbyBpZigoZnwwKT09OSl7Yj1rW2g+PjJdfDA7aWYoKG1ba1toPj4yXT4+MV18MCk8Myl7bz1qW2I+PjFdfDA7altiPj4xXT1vKzE8PDE2Pj4xNjtrW3A+PjJdPShrW2g+PjJdfDApKzgrKChvJjY1NTM1KTw8NCk7alsoa1twPj4yXXwwKSsxMD4+MV09altuPj4xXXwwO2JyZWFrfWtbcD4+Ml09Yis4O2pbbz4+MV09MTt3aGlsZSgxKXtiPWpbKGtbcD4+Ml18MCkrOD4+MV18MDtpZigobVtvPj4xXXwwKT49KG1ba1toPj4yXT4+MV18MCkpYnJlYWs7aWYoKGJ8MCk+KGpbKGtbaD4+Ml18MCkrOCsobVtvPj4xXTw8NCkrOD4+MV18MCkpa1twPj4yXT0oa1toPj4yXXwwKSs4KyhtW28+PjFdPDw0KTtqW28+PjFdPShqW28+PjFdfDApKzE8PDE2Pj4xNn1pZigoYnwwKTw9KGpbbD4+MV18MCkpe2tbZz4+Ml09MDtwPWtbZz4+Ml18MDtyPXE7cmV0dXJuIHB8MH19d2hpbGUoMCk7aD1pO2k9a1toKzQ+PjJdfDA7bz1rW3A+PjJdfDA7a1tvPj4yXT1rW2g+PjJdO2tbbys0Pj4yXT1pO2pbKGtbcD4+Ml18MCkrOD4+MV09altsPj4xXXwwO2lmKChqWyhrW3A+PjJdfDApKzEwPj4xXXwwKT4oaltuPj4xXXwwKSlqWyhrW3A+PjJdfDApKzEwPj4xXT1qW24+PjFdfDA7a1tnPj4yXT0xO3A9a1tnPj4yXXwwO3I9cTtyZXR1cm4gcHwwfWZ1bmN0aW9uIEdFKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wLGk9MCxsPTAsbT0wLG49MCxvPTAscD0wO3A9cjtyPXIrNDh8MDtjPXArNDB8MDtkPXArMzZ8MDtlPXArMzJ8MDttPXArMjh8MDtnPXArMjR8MDtsPXArMjB8MDtmPXArMTZ8MDtvPXArMTJ8MDtuPXArOHwwO2k9cCs0fDA7aD1wO2tbZD4+Ml09YTtrW2U+PjJdPWI7a1tsPj4yXT1rW2tbZD4+Ml0+PjJdO2tbZj4+Ml09a1trW2tbbD4+Ml0+PjJdPj4yXTtpZihrWyhrW2Q+PjJdfDApKzE2Pj4yXXwwKXtpZihqWyhrW2U+PjJdfDApKzQwPj4xXXwwKXtvPWtbZT4+Ml18MDtGRShrWyhrW2Q+PjJdfDApKzE2Pj4yXXwwLGtbbz4+Ml18MCxrW28rND4+Ml18MCxqWyhrW2U+PjJdfDApKzIwPj4xXXwwLGpbKGtbZT4+Ml18MCkrMjI+PjFdfDApfDB9a1tjPj4yXT0wO289a1tjPj4yXXwwO3I9cDtyZXR1cm4gb3wwfUhFKGtbKGtbbD4+Ml18MCkrNTY+PjJdfDAsa1tlPj4yXXwwKTtsPUlFKChrW2w+PjJdfDApKzU2fDAsa1tlPj4yXXwwKXwwO2tbbT4+Ml09bDtpZighKGtbbT4+Ml18MCkpe2tbYz4+Ml09MDtvPWtbYz4+Ml18MDtyPXA7cmV0dXJuIG98MH1rW2c+PjJdPWtba1ttPj4yXT4+Ml07YTpkbyBpZighKGtbZz4+Ml18MCkpe249ZHgoa1tmPj4yXXwwLDcyLDApfDA7a1tnPj4yXT1uO2tba1ttPj4yXT4+Ml09bjtpZihrW2c+PjJdfDApe0lEKGtbZz4+Ml18MCk7a1soa1tnPj4yXXwwKSs1Mj4+Ml09MDticmVha31rW2M+PjJdPTc7bz1rW2M+PjJdfDA7cj1wO3JldHVybiBvfDB9ZWxzZXtrW24+PjJdPShrW2c+PjJdfDApKzUyO3doaWxlKDEpe2lmKCEoa1trW24+PjJdPj4yXXwwKSlicmVhayBhO209SUUoa1tuPj4yXXwwLGtbZT4+Ml18MCl8MDtrW24+PjJdPW07aWYoIShrW24+PjJdfDApKWJyZWFrIGE7a1tpPj4yXT1rW2tbbj4+Ml0+PjJdO2lmKCEoa1tpPj4yXXwwKSlicmVhayBhO2tba1tuPj4yXT4+Ml09a1soa1tpPj4yXXwwKSs1Mj4+Ml07RkQoa1tmPj4yXXwwLGtbaT4+Ml18MCl9fXdoaWxlKDApO249SkUoa1tmPj4yXXwwLGtbZz4+Ml18MCxrW2U+PjJdfDApfDA7a1tvPj4yXT1uO2lmKCgoa1soa1tnPj4yXXwwKSszNj4+Ml0mMTAyNHwwKT09MD8oa1toPj4yXT1rWyhrW2c+PjJdfDApKzI0Kzg+PjJdLChrW2g+PjJdfDApIT0wKTowKT8oa1soa1toPj4yXXwwKSs0ND4+Ml18MCk9PTA6MClrWyhrW2c+PjJdfDApKzI0Kzg+PjJdPTA7a1tjPj4yXT1rW28+PjJdO289a1tjPj4yXXwwO3I9cDtyZXR1cm4gb3wwfWZ1bmN0aW9uIEhFKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wO2U9cjtyPXIrMTZ8MDtjPWUrNHwwO2Q9ZTtrW2M+PjJdPWE7a1tkPj4yXT1iO2lmKCEoKGtbYz4+Ml18MCkhPTA/KGtbKGtbZD4+Ml18MCkrMzY+PjJdJjUxMnwwKSE9MDowKSl7cj1lO3JldHVybn1kb3tkbyBpZigobFsoa1tjPj4yXXwwKSsxNj4+MF18MCk9PShsWyhrW2Q+PjJdfDApKzE2Pj4wXXwwKT8oa1soa1tjPj4yXXwwKSszNj4+Ml0mNTEyfDApIT0wOjApe2lmKEtFKGtbYz4+Ml18MCxrW2Q+PjJdfDApfDApe2pbKGtbZD4+Ml18MCkrMjA+PjFdPWpbKGtbYz4+Ml18MCkrMjA+PjFdfDA7alsoa1tkPj4yXXwwKSsyMj4+MV09KGpbKGtbYz4+Ml18MCkrMjI+PjFdfDApLTE7YnJlYWt9aWYoS0Uoa1tkPj4yXXwwLGtbYz4+Ml18MCl8MCl7alsoa1tkPj4yXXwwKSsyMD4+MV09alsoa1tjPj4yXXwwKSsyMD4+MV18MDtqWyhrW2Q+PjJdfDApKzIyPj4xXT0oalsoa1tjPj4yXXwwKSsyMj4+MV18MCkrMX19d2hpbGUoMCk7a1tjPj4yXT1rWyhrW2M+PjJdfDApKzUyPj4yXX13aGlsZSgoa1tjPj4yXXwwKSE9MCk7cj1lO3JldHVybn1mdW5jdGlvbiBJRShhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTAsZz0wLGg9MDtnPXI7cj1yKzE2fDA7ZT1nKzEyfDA7Zj1nKzh8MDtjPWcrNHwwO2Q9ZztrW2Y+PjJdPWE7a1tjPj4yXT1iO2tbZD4+Ml09a1trW2Y+PjJdPj4yXTt3aGlsZSgxKXtpZighKGtbZD4+Ml18MCkpe2M9MTk7YnJlYWt9aWYoKGxbKGtbZD4+Ml18MCkrMTY+PjBdfDApPT0obFsoa1tjPj4yXXwwKSsxNj4+MF18MCk/KGxbKGtbZD4+Ml18MCkrMTc+PjBdfDApPT0obFsoa1tjPj4yXXwwKSsxNz4+MF18MCk6MCl7aWYoKCgoKGtbKGtbZD4+Ml18MCkrMzY+PjJdJjE2Mzg0fDApIT0wPyhtWyhrW2M+PjJdfDApKzQyPj4xXXwwKT09MDowKT8oa1soa1tjPj4yXXwwKSszNj4+Ml0mNTEyfDApIT0wOjApPyhrWyhrW2M+PjJdfDApKzM2Pj4yXSYxfDApIT0wOjApPyhoPWtbZD4+Ml18MCxiPWtbYz4+Ml18MCxhPWtbYz4+Ml18MCwoa1toPj4yXSZrW2I+PjJdfDApPT0oa1thPj4yXXwwKT8oa1toKzQ+PjJdJmtbYis0Pj4yXXwwKT09KGtbYSs0Pj4yXXwwKTowKTowKXtjPTE5O2JyZWFrfWI9a1tkPj4yXXwwO2E9a1tjPj4yXXwwO2g9a1tkPj4yXXwwO2lmKCgoKChrW2I+PjJdJmtbYT4+Ml18MCk9PShrW2g+PjJdfDApPyhrW2IrND4+Ml0ma1thKzQ+PjJdfDApPT0oa1toKzQ+PjJdfDApOjApPyhqWyhrW2Q+PjJdfDApKzE4Pj4xXXwwKTw9KGpbKGtbYz4+Ml18MCkrMTg+PjFdfDApOjApPyhqWyhrW2Q+PjJdfDApKzIwPj4xXXwwKTw9KGpbKGtbYz4+Ml18MCkrMjA+PjFdfDApOjApPyhqWyhrW2Q+PjJdfDApKzIyPj4xXXwwKTw9KGpbKGtbYz4+Ml18MCkrMjI+PjFdfDApOjApe2M9MTQ7YnJlYWt9Yj1rW2Q+PjJdfDA7YT1rW2M+PjJdfDA7aD1rW2M+PjJdfDA7aWYoKCgoa1tiPj4yXSZrW2E+PjJdfDApPT0oa1toPj4yXXwwKT8oa1tiKzQ+PjJdJmtbYSs0Pj4yXXwwKT09KGtbaCs0Pj4yXXwwKTowKT8oalsoa1tkPj4yXXwwKSsyMD4+MV18MCk+PShqWyhrW2M+PjJdfDApKzIwPj4xXXwwKTowKT8oalsoa1tkPj4yXXwwKSsyMj4+MV18MCk+PShqWyhrW2M+PjJdfDApKzIyPj4xXXwwKTowKXtjPTE5O2JyZWFrfX1rW2Y+PjJdPShrW2Q+PjJdfDApKzUyO2tbZD4+Ml09a1trW2Y+PjJdPj4yXX1pZigoY3wwKT09MTQpe2tbZT4+Ml09MDtoPWtbZT4+Ml18MDtyPWc7cmV0dXJuIGh8MH1lbHNlIGlmKChjfDApPT0xOSl7a1tlPj4yXT1rW2Y+PjJdO2g9a1tlPj4yXXwwO3I9ZztyZXR1cm4gaHwwfXJldHVybiAwfWZ1bmN0aW9uIEpFKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MDtnPXI7cj1yKzE2fDA7ZT1nKzEyfDA7aD1nKzh8MDtkPWcrNHwwO2Y9ZztrW2g+PjJdPWE7a1tkPj4yXT1iO2tbZj4+Ml09YztIRChrW2g+PjJdfDAsa1tkPj4yXXwwKTtiPSh0RShrW2g+PjJdfDAsa1tkPj4yXXwwLG1bKGtbZj4+Ml18MCkrNDA+PjFdfDApfDApIT0wO2E9a1tkPj4yXXwwO2lmKGIpe2g9YSsyNHwwO2tbaD4+Ml09MDtrW2grND4+Ml09MDtrW2grOD4+Ml09MDtrW2U+PjJdPTc7aD1rW2U+PjJdfDA7cj1nO3JldHVybiBofDB9Yz1rW2Y+PjJdfDA7Yj1hKzQ0fDA7ZG97a1thPj4yXT1rW2M+PjJdO2E9YSs0fDA7Yz1jKzR8MH13aGlsZSgoYXwwKTwoYnwwKSk7YlMoa1soa1tkPj4yXXwwKSs0OD4+Ml18MCxrWyhrW2Y+PjJdfDApKzQ4Pj4yXXwwLChtWyhrW2Q+PjJdfDApKzQwPj4xXXwwKTw8MnwwKXwwO2E9a1tmPj4yXXwwO2lmKCEoa1soa1tmPj4yXXwwKSszNj4+Ml0mMTAyNCkpe2lmKGtbYSszNj4+Ml0mMTYzODQpa1soa1tmPj4yXXwwKSsyNCs4Pj4yXT0wfWVsc2UgaVthKzI0KzQ+PjBdPTA7a1tlPj4yXT0wO2g9a1tlPj4yXXwwO3I9ZztyZXR1cm4gaHwwfWZ1bmN0aW9uIEtFKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTAsaD0wO2g9cjtyPXIrMzJ8MDtnPWgrMTZ8MDtjPWgrMTJ8MDtkPWgrOHwwO2U9aCs0fDA7Zj1oO2tbYz4+Ml09YTtrW2Q+PjJdPWI7aWYoKChtWyhrW2M+PjJdfDApKzQwPj4xXXwwKS0obVsoa1tjPj4yXXwwKSs0Mj4+MV18MCl8MCk+PSgobVsoa1tkPj4yXXwwKSs0MD4+MV18MCktKG1bKGtbZD4+Ml18MCkrNDI+PjFdfDApfDApKXtrW2c+PjJdPTA7Zz1rW2c+PjJdfDA7cj1oO3JldHVybiBnfDB9aWYoKG1bKGtbZD4+Ml18MCkrNDI+PjFdfDApPihtWyhrW2M+PjJdfDApKzQyPj4xXXwwKSl7a1tnPj4yXT0wO2c9a1tnPj4yXXwwO3I9aDtyZXR1cm4gZ3wwfWlmKChqWyhrW2M+PjJdfDApKzIwPj4xXXwwKT49KGpbKGtbZD4+Ml18MCkrMjA+PjFdfDApKXtpZigoalsoa1tjPj4yXXwwKSsyMD4+MV18MCk+KGpbKGtbZD4+Ml18MCkrMjA+PjFdfDApKXtrW2c+PjJdPTA7Zz1rW2c+PjJdfDA7cj1oO3JldHVybiBnfDB9aWYoKGpbKGtbYz4+Ml18MCkrMjI+PjFdfDApPihqWyhrW2Q+PjJdfDApKzIyPj4xXXwwKSl7a1tnPj4yXT0wO2c9a1tnPj4yXXwwO3I9aDtyZXR1cm4gZ3wwfX1rW2U+PjJdPShtWyhrW2M+PjJdfDApKzQwPj4xXXwwKS0xO3doaWxlKDEpe2lmKChrW2U+PjJdfDApPDApe2M9MjA7YnJlYWt9aWYoa1soa1soa1tjPj4yXXwwKSs0OD4+Ml18MCkrKGtbZT4+Ml08PDIpPj4yXXwwKXtrW2Y+PjJdPShtWyhrW2Q+PjJdfDApKzQwPj4xXXwwKS0xO3doaWxlKDEpe2lmKChrW2Y+PjJdfDApPDApYnJlYWs7aWYoKGtbKGtbKGtbZD4+Ml18MCkrNDg+PjJdfDApKyhrW2Y+PjJdPDwyKT4+Ml18MCk9PShrWyhrWyhrW2M+PjJdfDApKzQ4Pj4yXXwwKSsoa1tlPj4yXTw8Mik+PjJdfDApKWJyZWFrO2tbZj4+Ml09KGtbZj4+Ml18MCkrLTF9aWYoKGtbZj4+Ml18MCk8MCl7Yz0xODticmVha319a1tlPj4yXT0oa1tlPj4yXXwwKSstMX1pZigoY3wwKT09MTgpe2tbZz4+Ml09MDtnPWtbZz4+Ml18MDtyPWg7cmV0dXJuIGd8MH1lbHNlIGlmKChjfDApPT0yMCl7a1tnPj4yXT0xO2c9a1tnPj4yXXwwO3I9aDtyZXR1cm4gZ3wwfXJldHVybiAwfWZ1bmN0aW9uIExFKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxpPTAsbT0wLG49MCxvPTA7bz1yO3I9ciszMnwwO2Q9bysyNHwwO2U9bysyMHwwO2Y9bysxNnwwO2c9bysxMnwwO2g9bys4fDA7bT1vKzR8MDtpPW87a1tlPj4yXT1hO2tbZj4+Ml09YjtrW2c+PjJdPWM7d2hpbGUoMSl7aWYoKGxba1tnPj4yXT4+MF18MCkhPTI4KWJyZWFrO2lmKCEoTEUoa1tlPj4yXXwwLGtbZj4+Ml18MCxrWyhrW2c+PjJdfDApKzEyPj4yXXwwKXwwKSl7bj00O2JyZWFrfWtbZz4+Ml09a1soa1tnPj4yXXwwKSsxNj4+Ml19aWYoKG58MCk9PTQpe2tbZD4+Ml09MDtuPWtbZD4+Ml18MDtyPW87cmV0dXJuIG58MH1rW2g+PjJdPTA7a1ttPj4yXT1rWyhrW2Y+PjJdfDApKzIwPj4yXTt3aGlsZSgxKXtpZigoa1toPj4yXXwwKT49KGtbKGtbZj4+Ml18MCkrMTI+PjJdfDApKXtuPTEzO2JyZWFrfWtbaT4+Ml09a1trW20+PjJdPj4yXTtpZihXRShrW2k+PjJdfDAsa1tnPj4yXXwwLGtbZT4+Ml18MCl8MCl7aWYoIShrWyhrW2k+PjJdfDApKzQ+PjJdJjEpKXtuPTExO2JyZWFrfWlmKChqWyhrW2k+PjJdfDApKzM2Pj4xXXwwKT09KGtbZT4+Ml18MCkpe249MTE7YnJlYWt9fWtbaD4+Ml09KGtbaD4+Ml18MCkrMTtrW20+PjJdPShrW20+PjJdfDApKzQ4fWlmKChufDApPT0xMSl7a1tkPj4yXT0xO249a1tkPj4yXXwwO3I9bztyZXR1cm4gbnwwfWVsc2UgaWYoKG58MCk9PTEzKXtrW2Q+PjJdPTA7bj1rW2Q+PjJdfDA7cj1vO3JldHVybiBufDB9cmV0dXJuIDB9ZnVuY3Rpb24gTUUoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGk9MCxuPTAsbz0wLHA9MCxxPTAscz0wO3M9cjtyPXIrNDh8MDtkPXMrMzJ8MDtlPXMrMjh8MDtmPXMrMjR8MDtnPXMrMjB8MDtwPXMrMTZ8MDtoPXMrMTJ8MDtpPXMrOHwwO249cys0fDA7bz1zO2tbZT4+Ml09YTtrW2Y+PjJdPWI7a1tnPj4yXT1jO2lmKChsWyhrW2Y+PjJdfDApKzU1Pj4wXXwwKT4+PjImMSl7a1tkPj4yXT0wO3E9a1tkPj4yXXwwO3I9cztyZXR1cm4gcXwwfWI9a1soa1trW2U+PjJdPj4yXXwwKSs4Pj4yXXwwO2tbcD4+Ml09YjtpZighYil7a1tkPj4yXT0wO3E9a1tkPj4yXXwwO3I9cztyZXR1cm4gcXwwfWtbaT4+Ml09MDthOndoaWxlKDEpe2lmKChrW2k+PjJdfDApPj0oa1trW3A+PjJdPj4yXXwwKSl7cT0yNDticmVha31iPXV5KGtbKGtbKGtbcD4+Ml18MCkrND4+Ml18MCkrKChrW2k+PjJdfDApKjIwfDApPj4yXXwwKXwwO2tbbz4+Ml09YjtiOmRvIGlmKChsW2tbbz4+Ml0+PjBdfDApPT0xNTI/KGtbKGtbbz4+Ml18MCkrMjg+PjJdfDApPT0oa1tnPj4yXXwwKTowKXtpZigoalsoa1tvPj4yXXwwKSszMj4+MV18MCk8MCl7cT0xMDticmVhayBhfWtbbj4+Ml09MDt3aGlsZSgxKXtpZigoa1tuPj4yXXwwKT49KG1bKGtbZj4+Ml18MCkrNTA+PjFdfDApKWJyZWFrIGI7aWYoKGpbKGtbbz4+Ml18MCkrMzI+PjFdfDApPT0oalsoa1soa1tmPj4yXXwwKSs0Pj4yXXwwKSsoa1tuPj4yXTw8MSk+PjFdfDApKXtxPTE0O2JyZWFrIGF9a1tuPj4yXT0oa1tuPj4yXXwwKSsxfX1lbHNlIHE9MTY7d2hpbGUoMCk7YzpkbyBpZigocXwwKT09MTY/KHE9MCxiPWtbKGtbZj4+Ml18MCkrNDA+PjJdfDAsa1toPj4yXT1iLChifDApIT0wKTowKXtrW24+PjJdPTA7d2hpbGUoMSl7aWYoKGtbbj4+Ml18MCk+PShtWyhrW2Y+PjJdfDApKzUwPj4xXXwwKSlicmVhayBjO2lmKChqWyhrWyhrW2Y+PjJdfDApKzQ+PjJdfDApKyhrW24+PjJdPDwxKT4+MV18MCk9PS0yPyhVeShrW28+PjJdfDAsa1soa1soa1toPj4yXXwwKSs0Pj4yXXwwKSsoKGtbbj4+Ml18MCkqMjB8MCk+PjJdfDAsa1tnPj4yXXwwKXwwKT09MDowKXtxPTIxO2JyZWFrIGF9a1tuPj4yXT0oa1tuPj4yXXwwKSsxfX13aGlsZSgwKTtrW2k+PjJdPShrW2k+PjJdfDApKzF9aWYoKHF8MCk9PTEwKXtrW2Q+PjJdPTE7cT1rW2Q+PjJdfDA7cj1zO3JldHVybiBxfDB9ZWxzZSBpZigocXwwKT09MTQpe2tbZD4+Ml09MTtxPWtbZD4+Ml18MDtyPXM7cmV0dXJuIHF8MH1lbHNlIGlmKChxfDApPT0yMSl7a1tkPj4yXT0xO3E9a1tkPj4yXXwwO3I9cztyZXR1cm4gcXwwfWVsc2UgaWYoKHF8MCk9PTI0KXtrW2Q+PjJdPTA7cT1rW2Q+PjJdfDA7cj1zO3JldHVybiBxfDB9cmV0dXJuIDB9ZnVuY3Rpb24gTkUoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGk9MCxsPTAsbj0wLG89MCxwPTAscT0wLHM9MCx0PTA7cz1yO3I9cis0OHwwO2Q9cyszNnwwO2U9cyszMnwwO2Y9cys0MnwwO3A9cysyOHwwO3E9cysyNHwwO249cztnPXMrMjB8MDtpPXMrMTZ8MDtsPXMrMTJ8MDtoPXMrNDB8MDtvPXMrOHwwO2tbZD4+Ml09YTtrW2U+PjJdPWI7altmPj4xXT1jO3Q9a1tlPj4yXXwwO2M9KGtbZT4+Ml18MCkrOHwwO2I9fihrW3QrND4+Ml18a1tjKzQ+PjJdKTthPW47a1thPj4yXT1+KGtbdD4+Ml18a1tjPj4yXSk7a1thKzQ+PjJdPWI7altoPj4xXT0wO2tbZz4+Ml09a1soa1tkPj4yXXwwKSsxMj4+Ml07a1twPj4yXT1rWyhrW2Q+PjJdfDApKzIwPj4yXTt3aGlsZSgxKXtpZigoa1tnPj4yXXwwKTw9MClicmVhaztpZihtWyhrW3A+PjJdfDApKzEwPj4xXSYyKWJyZWFrO2E9KGtbcD4+Ml18MCkrNDB8MDt0PShrW2U+PjJdfDApKzh8MDtkbyBpZighKChrW2E+PjJdJmtbdD4+Ml18MCk9PTA/KGtbYSs0Pj4yXSZrW3QrND4+Ml18MCk9PTA6MCk/KGE9KGtbcD4+Ml18MCkrNDB8MCx0PW4sISgoa1thPj4yXSZrW3Q+PjJdfDApIT0wPzE6KGtbYSs0Pj4yXSZrW3QrND4+Ml18MCkhPTApKTowKXtrW2k+PjJdPShtWyhrW2U+PjJdfDApKzQwPj4xXXwwKS0xO3doaWxlKDEpe2lmKChrW2k+PjJdfDApPDApYnJlYWs7a1txPj4yXT1rWyhrWyhrW2U+PjJdfDApKzQ4Pj4yXXwwKSsoa1tpPj4yXTw8Mik+PjJdO2lmKGtbcT4+Ml18MCl7aWYoKGtbcT4+Ml18MCk9PShrW3A+PjJdfDApKWJyZWFrO2lmKChrWyhrW3E+PjJdfDApKzE2Pj4yXXwwKT49MD8oKGtbKGtbZD4+Ml18MCkrMjA+PjJdfDApKygoa1soa1txPj4yXXwwKSsxNj4+Ml18MCkqNDh8MCl8MCk9PShrW3A+PjJdfDApOjApYnJlYWt9a1tpPj4yXT0oa1tpPj4yXXwwKSstMX1pZigoa1tpPj4yXXwwKTwwKXtpZigoalsoa1twPj4yXXwwKSs4Pj4xXXwwKTw9MCl7dD0oa1tlPj4yXXwwKSsyMnwwO2pbdD4+MV09KGpbdD4+MV18MCkrKGpbKGtbcD4+Ml18MCkrOD4+MV18MCk7YnJlYWt9dD0oa1tlPj4yXXwwKSsyMnwwO2pbdD4+MV09KGpbdD4+MV18MCkrLTE8PDE2Pj4xNjtpZihtWyhrW3A+PjJdfDApKzEyPj4xXSYxMzApe2tbbz4+Ml09a1soa1trW3A+PjJdPj4yXXwwKSsxNj4+Ml07dD0oUHkoa1tvPj4yXXwwLGwpfDApIT0wO2lmKHQmKGtbbD4+Ml18MCk+PS0xJihrW2w+PjJdfDApPD0xKWtbbD4+Ml09MTA7ZWxzZSBrW2w+PjJdPTIwO2lmKChqW2g+PjFdfDApPChrW2w+PjJdfDApKWpbaD4+MV09a1tsPj4yXX19fXdoaWxlKDApO2tbZz4+Ml09KGtbZz4+Ml18MCkrLTE7a1twPj4yXT0oa1twPj4yXXwwKSs0OH1pZigoalsoa1tlPj4yXXwwKSsyMj4+MV18MCk8PSgoaltmPj4xXXwwKS0oaltoPj4xXXwwKXwwKSl7cj1zO3JldHVybn1qWyhrW2U+PjJdfDApKzIyPj4xXT0oaltmPj4xXXwwKS0oaltoPj4xXXwwKTtyPXM7cmV0dXJufWZ1bmN0aW9uIE9FKGEpe2E9YXwwO3ZhciBiPTAsYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTAsaT0wO2Y9cjtyPXIrMzJ8MDtiPWYrMTZ8MDtkPWY7Yz1mKzEyfDA7ZT1mKzh8MDtrW2I+PjJdPWE7YT1kO2tbYT4+Ml09MDtrW2ErND4+Ml09MDtrW2M+PjJdPShtWyhrW2I+PjJdfDApKzUyPj4xXXwwKS0xO3doaWxlKDEpe2lmKChrW2M+PjJdfDApPDApYnJlYWs7a1tlPj4yXT1qWyhrWyhrW2I+PjJdfDApKzQ+PjJdfDApKyhrW2M+PjJdPDwxKT4+MV07aWYoKGtbZT4+Ml18MCk+PTAmKGtbZT4+Ml18MCk8NjMpe2g9ZVMoMSwwLGtbZT4+Ml18MCl8MDtpPWQ7Zz1rW2krND4+Ml18TDthPWQ7a1thPj4yXT1rW2k+PjJdfGg7a1thKzQ+PjJdPWd9a1tjPj4yXT0oa1tjPj4yXXwwKSstMX1pPWQ7TD1rW2krND4+Ml18MDtyPWY7cmV0dXJuIGtbaT4+Ml18MH1mdW5jdGlvbiBQRShhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wO2U9cjtyPXIrNDh8MDtmPWUrNDR8MDtqPWUrNDB8MDtoPWUrMzZ8MDtkPWUrOHwwO2c9ZTtrW2Y+PjJdPWE7a1tqPj4yXT1iO2tbaD4+Ml09YztrW2Q+PjJdPTA7a1tkKzQ+PjJdPTA7a1tkKzg+PjJdPTA7a1tkKzEyPj4yXT0wO2tbZCsxNj4+Ml09MDtrW2QrMjA+PjJdPTA7a1tkKzI0Pj4yXT0wO2tbZys0Pj4yXT1rW2o+PjJdO2tbZz4+Ml09a1toPj4yXTtrW2QrND4+Ml09MTk5O2tbZCsyND4+Ml09ZztHeShkLGtbZj4+Ml18MCl8MDtyPWU7cmV0dXJuICgoaVtkKzIwPj4wXXwwKSE9MF4xKSYxfDB9ZnVuY3Rpb24gUUUoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxuPTAsbz0wLHA9MCxxPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTAsRT0wLEY9MCxHPTAsSD0wLEk9MCxKPTAsSz0wLEw9MCxNPTAsTj0wLE89MCxQPTAsUT0wLFI9MCxTPTA7Uj1yO3I9cisyMjR8MDtmPVIrMTgwfDA7Zz1SKzE3NnwwO2g9UisxNzJ8MDtuPVIrMTY4fDA7bz1SKzIwOHwwO1M9UisxNjR8MDtCPVIrMTYwfDA7cD1SKzE1NnwwO0E9UisxNTJ8MDtDPVIrMTQ4fDA7ZT1SKzE0NHwwO1E9Uis0OHwwO089UjtLPVIrMjA2fDA7Sj1SKzIwNHwwO0k9UisyMDJ8MDtOPVIrMjAwfDA7TT1SKzE5OHwwO1A9Uis0MHwwO0w9UisxOTZ8MDtIPVIrMzZ8MDtHPVIrMTk0fDA7Rj1SKzE5MnwwO0Q9UiszMnwwO3k9UisyOHwwO3E9UisxOTB8MDtFPVIrMTg4fDA7eD1SKzE4NnwwO3Y9UisyNHwwO3o9UisyMHwwO3M9UisxNnwwO3Q9UisxMnwwO3U9Uis4fDA7dz1SKzE4NHwwO2tbZz4+Ml09YTtrW2g+PjJdPWI7a1tuPj4yXT1jO2pbbz4+MV09ZDtrW1M+PjJdPWtba1tnPj4yXT4+Ml07a1tCPj4yXT1rW2tbUz4+Ml0+PjJdO2tbcD4+Ml09a1trW0I+PjJdPj4yXTtrW0g+PjJdPTA7a1tEPj4yXT0wO2tbeT4+Ml09MDtrW0E+PjJdPWtbKGtbZz4+Ml18MCkrMTI+PjJdO2lmKGlbKGtbcD4+Ml18MCkrNjk+PjBdfDApe2tbZj4+Ml09NztTPWtbZj4+Ml18MDtyPVI7cmV0dXJuIFN8MH1pZihrWyhrW0E+PjJdfDApKzM2Pj4yXSYzMilrW2U+PjJdPTI0O2Vsc2Uga1tlPj4yXT00NDc7aWYoKGxbKGtbbj4+Ml18MCkrNTU+PjBdfDApPj4+MiYxKWtbZT4+Ml09a1tlPj4yXSYtNjE7altKPj4xXT1qWyhrW0E+PjJdfDApKzI0Pj4xXXwwO2pbST4+MV09alsoa1tBPj4yXXwwKSsyNCsyPj4xXXwwO2pbTj4+MV09alsoa1tBPj4yXXwwKSsyNCs0Pj4xXXwwO2pbTT4+MV09alsoa1tBPj4yXXwwKSs0Mj4+MV18MDtqW0s+PjFdPWpbKGtbQT4+Ml18MCkrNDA+PjFdfDA7a1tQPj4yXT1rWyhrW0E+PjJdfDApKzM2Pj4yXTtjPWtbQT4+Ml18MDtiPWtbYys0Pj4yXXwwO1M9TztrW1M+PjJdPWtbYz4+Ml07a1tTKzQ+PjJdPWI7altMPj4xXT1qWyhrW0E+PjJdfDApKzIyPj4xXXwwO1M9aUUoUSxrWyhrW2c+PjJdfDApKzQ+PjJdfDAsa1soa1toPj4yXXwwKSs0ND4+Ml18MCxtW0o+PjFdfDAsa1tlPj4yXXwwLGtbbj4+Ml18MCl8MDtrW0M+PjJdPVM7alsoa1tBPj4yXXwwKSsxOD4+MV09MDtqW0c+PjFdPWpba1soa1tuPj4yXXwwKSs4Pj4yXT4+MV18MDtTPUFFKGpbRz4+MV18MCl8MDtqW0Y+PjFdPVM7YTp3aGlsZSgxKXtpZighKChrW0g+PjJdfDApPT0wPyhrW0M+PjJdfDApIT0wOjApKWJyZWFrO2pbcT4+MV09alsoa1tDPj4yXXwwKSsxMj4+MV18MDtrW3Y+PjJdPTA7aWYoKG1bcT4+MV18MCkhPTI1Nj8obVsoa1tDPj4yXXwwKSsxMD4+MV0mMHwwKT09MDowKWQ9MTM7ZWxzZSBkPTEyO2lmKChkfDApPT0xMj8oZD0wLChSRShrW24+PjJdfDAsbVtKPj4xXXwwKXwwKT09MCk6MClkPTEzO2RvIGlmKChkfDApPT0xMz8oMCxiPShrW0M+PjJdfDApKzMyfDAsUz0oa1tBPj4yXXwwKSs4fDAsISgoa1tiPj4yXSZrW1M+PjJdfDApIT0wPzE6KGtbYis0Pj4yXSZrW1MrND4+Ml18MCkhPTApKTowKXtpZigobVsoa1tDPj4yXXwwKSsxMD4+MV0mMjU2fDApIT0wPyhtWyhrW0M+PjJdfDApKzEyPj4xXXwwKT09MTY6MClicmVhaztpZigoKGxbKGtbaD4+Ml18MCkrMzY+PjBdJjh8MCkhPTA/KGtbKGtba1tDPj4yXT4+Ml18MCkrND4+Ml0mMXwwKT09MDowKT8obVtxPj4xXSYzODR8MCkhPTA6MClicmVhaztrWyhrW0E+PjJdfDApKzM2Pj4yXT1rW1A+PjJdO2pbKGtbQT4+Ml18MCkrMjQ+PjFdPWpbSj4+MV18MDtqWyhrW0E+PjJdfDApKzI0KzI+PjFdPWpbST4+MV18MDtqWyhrW0E+PjJdfDApKzI0KzQ+PjFdPWpbTj4+MV18MDtqWyhrW0E+PjJdfDApKzQwPj4xXT1qW0s+PjFdfDA7aWYodEUoa1twPj4yXXwwLGtbQT4+Ml18MCwobVsoa1tBPj4yXXwwKSs0MD4+MV18MCkrMXwwKXwwKWJyZWFrIGE7YT1rW0M+PjJdfDA7Yz0oa1tBPj4yXXwwKSs0MHwwO2U9altjPj4xXXwwO2pbYz4+MV09ZSsxPDwxNj4+MTY7a1soa1soa1tBPj4yXXwwKSs0OD4+Ml18MCkrKChlJjY1NTM1KTw8Mik+PjJdPWE7ZT1PO2E9KGtbQz4+Ml18MCkrMzJ8MDtjPShrW0E+PjJdfDApKzh8MDtiPShrW2UrND4+Ml18a1thKzQ+PjJdKSZ+a1tjKzQ+PjJdO1M9a1tBPj4yXXwwO2tbUz4+Ml09KGtbZT4+Ml18a1thPj4yXSkmfmtbYz4+Ml07a1tTKzQ+PjJdPWI7YjpkbyBpZighKG1bcT4+MV0mMSkpe2lmKG1bcT4+MV0mMTMwKXtrW3Q+PjJdPWpbKGtbKGtbbj4+Ml18MCkrND4+Ml18MCkrKG1bSj4+MV08PDEpPj4xXTtTPShrW0E+PjJdfDApKzM2fDA7a1tTPj4yXT1rW1M+PjJdfDE7aWYoKGtbdD4+Ml18MCkhPS0xKXtpZigoa1t0Pj4yXXwwKTw9MClicmVhaztpZihqW28+PjFdfDApYnJlYWs7aWYoKG1bSj4+MV18MCkhPSgobVsoa1tuPj4yXXwwKSs1MD4+MV18MCktMXwwKSlicmVha31pZigoa1t0Pj4yXXwwKT49MD8oKGxbKGtbbj4+Ml18MCkrNTU+PjBdfDApPj4+MyYxfDApPT0wOjApe1M9KGtbQT4+Ml18MCkrMzZ8MDtrW1M+PjJdPWtbUz4+Ml18NjU1MzY7YnJlYWt9Uz0oa1tBPj4yXXwwKSszNnwwO2tbUz4+Ml09a1tTPj4yXXw0MDk2O2JyZWFrfWlmKG1bcT4+MV0mMjU2KXtTPShrW0E+PjJdfDApKzM2fDA7a1tTPj4yXT1rW1M+PjJdfDg7YnJlYWt9ZD0oa1tBPj4yXXwwKSszNnwwO2U9a1tkPj4yXXwwO2lmKG1bcT4+MV0mMzYpe2tbZD4+Ml09ZXwzNDtTPShTRShrW0I+PjJdfDAsa1soa1toPj4yXXwwKSs0ND4+Ml18MCxrW24+PjJdfDAsbVtKPj4xXXwwLGtbQz4+Ml18MCl8MCkmNjU1MzU7alsoa1tBPj4yXXwwKSsyNCsyPj4xXT1TO2tbeT4+Ml09a1tDPj4yXTtrW0Q+PjJdPTA7aWYoIShtWyhrW0M+PjJdfDApKzEwPj4xXSYyNTYpKWJyZWFrO2tbRD4+Ml09KGtbQz4+Ml18MCkrNDg7aWYodEUoa1twPj4yXXwwLGtbQT4+Ml18MCwobVsoa1tBPj4yXXwwKSs0MD4+MV18MCkrMXwwKXwwKWJyZWFrIGE7Yj1rW0Q+PjJdfDA7Yz0oa1tBPj4yXXwwKSs0MHwwO1M9altjPj4xXXwwO2pbYz4+MV09UysxPDwxNj4+MTY7a1soa1soa1tBPj4yXXwwKSs0OD4+Ml18MCkrKChTJjY1NTM1KTw8Mik+PjJdPWI7Uz0oa1tBPj4yXXwwKSszNnwwO2tbUz4+Ml09a1tTPj4yXXwxNjtqWyhrW0E+PjJdfDApKzI0KzQ+PjFdPTE7YnJlYWt9ZWxzZXtrW2Q+PjJdPWV8MTg7Uz0oU0Uoa1tCPj4yXXwwLGtbKGtbaD4+Ml18MCkrNDQ+PjJdfDAsa1tuPj4yXXwwLG1bSj4+MV18MCxrW0M+PjJdfDApfDApJjY1NTM1O2pbKGtbQT4+Ml18MCkrMjQrND4+MV09UztrW0Q+PjJdPWtbQz4+Ml07aWYoa1soa1tBPj4yXXwwKSszNj4+Ml0mMzIpZD1rWyhrWyhrW0E+PjJdfDApKzQ4Pj4yXXwwKSsoKG1bKGtbQT4+Ml18MCkrNDA+PjFdfDApLTI8PDIpPj4yXXwwO2Vsc2UgZD0wO2tbeT4+Ml09ZDticmVha319ZWxzZXtrW3o+PjJdPWtba1tDPj4yXT4+Ml07Uz0oa1tBPj4yXXwwKSszNnwwO2tbUz4+Ml09a1tTPj4yXXw0O2lmKCEoa1soa1t6Pj4yXXwwKSs0Pj4yXSYyMDQ4KSl7aWYoIShrWyhrW3o+PjJdfDApKzIwPj4yXXwwKSlicmVhaztpZighKGtba1soa1t6Pj4yXXwwKSsyMD4+Ml0+PjJdfDApKWJyZWFrO1M9a1trWyhrW3o+PjJdfDApKzIwPj4yXT4+Ml18MDtTPShXaihTLCgoU3wwKTwwKTw8MzE+PjMxKXwwKTw8MTY+PjE2O2tbdj4+Ml09UzticmVha31rW3Y+PjJdPTQ2O2tbcz4+Ml09MDt3aGlsZSgxKXtpZigoa1tzPj4yXXwwKT49KChtWyhrW0E+PjJdfDApKzQwPj4xXXwwKS0xfDApKWJyZWFrIGI7aWYoKGtbKGtbKGtbQT4+Ml18MCkrNDg+PjJdfDApKyhrW3M+PjJdPDwyKT4+Ml18MCkhPTA/KGtba1soa1soa1tBPj4yXXwwKSs0OD4+Ml18MCkrKGtbcz4+Ml08PDIpPj4yXT4+Ml18MCk9PShrW3o+PjJdfDApOjApa1t2Pj4yXT0wO2tbcz4+Ml09KGtbcz4+Ml18MCkrMX19d2hpbGUoMCk7ZG8gaWYoIShrWyhrW0E+PjJdfDApKzM2Pj4yXSYyKSl7Yj0oa1tBPj4yXXwwKSsyNHwwO1M9KGpbYj4+MV18MCkrMTw8MTY+PjE2O2pbYj4+MV09UztrW3U+PjJdPVMmNjU1MzU7aWYoKGpbKGtbQz4+Ml18MCkrOD4+MV18MCk8PTA/KGpbKGtbKGtbbj4+Ml18MCkrND4+Ml18MCkrKG1bSj4+MV08PDEpPj4xXXwwKT49MDowKXtTPShrW0E+PjJdfDApKzIyfDA7altTPj4xXT0oaltTPj4xXXwwKSsoalsoa1tDPj4yXXwwKSs4Pj4xXXwwKTtTPShrW0E+PjJdfDApKzIyfDA7altTPj4xXT0oaltTPj4xXXwwKS0oa1t2Pj4yXXwwKTticmVha31TPShrW0E+PjJdfDApKzIyfDA7altTPj4xXT0oaltTPj4xXXwwKSsoKGpbKGtbKGtbbj4+Ml18MCkrOD4+Ml18MCkrKGtbdT4+Ml08PDEpPj4xXXwwKS0oalsoa1soa1tuPj4yXXwwKSs4Pj4yXXwwKSsoKGtbdT4+Ml18MCktMTw8MSk+PjFdfDApKTtpZihtW3E+PjFdJjI1Nil7Uz0oa1tBPj4yXXwwKSsyMnwwO2pbUz4+MV09KGpbUz4+MV18MCkrMTB9fWVsc2UgVEUoa1tCPj4yXXwwLGtbZz4+Ml18MCxrW3k+PjJdfDAsa1tEPj4yXXwwLGtbQT4+Ml18MCl8MDt3aGlsZSgwKTtqW0U+PjFdPShqWyhrW0E+PjJdfDApKzIyPj4xXXwwKSsxKygoKGpbKGtbbj4+Ml18MCkrNDg+PjFdfDApKjE1fDApLyhqWyhrWyhrW2g+PjJdfDApKzE2Pj4yXXwwKSs0MD4+MV18MCl8MCk7Uz14RShqW0Y+PjFdfDAsaltFPj4xXXwwKXwwO2pbKGtbQT4+Ml18MCkrMjA+PjFdPVM7aWYoIShrWyhrW0E+PjJdfDApKzM2Pj4yXSYzMjApKXtTPXhFKGpbKGtbQT4+Ml18MCkrMjA+PjFdfDAsKGpbKGtbQT4+Ml18MCkrMjI+PjFdfDApKzE2JjY1NTM1KXwwO2pbKGtbQT4+Ml18MCkrMjA+PjFdPVN9alt4Pj4xXT1qWyhrW0E+PjJdfDApKzIyPj4xXXwwO1M9KGtbQT4+Ml18MCkrMjB8MDtqW1M+PjFdPShqW1M+PjFdfDApKygoaltvPj4xXXwwKSsoa1t2Pj4yXXwwKSk7Uz0oa1tBPj4yXXwwKSsyMnwwO2pbUz4+MV09KGpbUz4+MV18MCkrKChqW28+PjFdfDApKyhrW3Y+PjJdfDApKTtORShrWyhrW2c+PjJdfDApKzQ+PjJdfDAsa1tBPj4yXXwwLGpbRz4+MV18MCk7Uz1HRShrW2c+PjJdfDAsa1tBPj4yXXwwKXwwO2tbSD4+Ml09UztpZihrWyhrW0E+PjJdfDApKzM2Pj4yXSYyKWpbKGtbQT4+Ml18MCkrMjI+PjFdPWpbTD4+MV18MDtlbHNlIGpbKGtbQT4+Ml18MCkrMjI+PjFdPWpbeD4+MV18MDtpZigoa1soa1tBPj4yXXwwKSszNj4+Ml0mMTZ8MCk9PTA/KG1bKGtbQT4+Ml18MCkrMjQ+PjFdfDApPChtWyhrW24+PjJdfDApKzUyPj4xXXwwKTowKVFFKGtbZz4+Ml18MCxrW2g+PjJdfDAsa1tuPj4yXXwwLChqW28+PjFdfDApKyhrW3Y+PjJdfDApJjY1NTM1KXwwO2pbKGtbQT4+Ml18MCkrMjI+PjFdPWpbTD4+MV18MH13aGlsZSgwKTtTPWpFKFEpfDA7a1tDPj4yXT1TfVE9a1tPKzQ+PjJdfDA7Uz1rW0E+PjJdfDA7a1tTPj4yXT1rW08+PjJdO2tbUys0Pj4yXT1RO2pbKGtbQT4+Ml18MCkrMjQ+PjFdPWpbSj4+MV18MDtqWyhrW0E+PjJdfDApKzI0KzI+PjFdPWpbST4+MV18MDtqWyhrW0E+PjJdfDApKzI0KzQ+PjFdPWpbTj4+MV18MDtqWyhrW0E+PjJdfDApKzQyPj4xXT1qW00+PjFdfDA7a1soa1tBPj4yXXwwKSszNj4+Ml09a1tQPj4yXTtqWyhrW0E+PjJdfDApKzIyPj4xXT1qW0w+PjFdfDA7alsoa1tBPj4yXXwwKSs0MD4+MV09altLPj4xXXwwO2lmKCgoKChtW0o+PjFdfDApPT0obVtNPj4xXXwwKT8oKG1bSj4+MV18MCkrMXwwKTwobVsoa1tuPj4yXXwwKSs1MD4+MV18MCk6MCk/KChsWyhrW24+PjJdfDApKzU1Pj4wXXwwKT4+PjYmMXwwKT09MDowKT8oalsoa1soa1tuPj4yXXwwKSs4Pj4yXXwwKSsoKG1bSj4+MV18MCkrMTw8MSk+PjFdfDApPj00MjowKT8oUz10RShrW3A+PjJdfDAsa1tBPj4yXXwwLChtWyhrW0E+PjJdfDApKzQwPj4xXXwwKSsxfDApfDAsa1tIPj4yXT1TLChTfDApPT0wKTowKXtRPShrW0E+PjJdfDApKzI0fDA7altRPj4xXT0oaltRPj4xXXwwKSsxPDwxNj4+MTY7UT0oa1tBPj4yXXwwKSs0MnwwO2pbUT4+MV09KGpbUT4+MV18MCkrMTw8MTY+PjE2O1E9KGtbQT4+Ml18MCkrNDB8MDtTPWpbUT4+MV18MDtqW1E+PjFdPVMrMTw8MTY+PjE2O2tbKGtbKGtbQT4+Ml18MCkrNDg+PjJdfDApKygoUyY2NTUzNSk8PDIpPj4yXT0wO1M9KGtbQT4+Ml18MCkrMzZ8MDtrW1M+PjJdPWtbUz4+Ml18MzI3Njg7alt3Pj4xXT0oalsoa1soa1tuPj4yXXwwKSs4Pj4yXXwwKSsobVtKPj4xXTw8MSk+PjFdfDApLShqWyhrWyhrW24+PjJdfDApKzg+PjJdfDApKygobVtKPj4xXXwwKSsxPDwxKT4+MV18MCk7Uz0oa1tBPj4yXXwwKSsyMnwwO2pbUz4+MV09KGpbUz4+MV18MCktKGpbdz4+MV18MCk7alt3Pj4xXT0oalt3Pj4xXXwwKSs1O1FFKGtbZz4+Ml18MCxrW2g+PjJdfDAsa1tuPj4yXXwwLChqW3c+PjFdfDApKyhqW28+PjFdfDApJjY1NTM1KXwwO2pbKGtbQT4+Ml18MCkrMjI+PjFdPWpbTD4+MV18MDtqWyhrW0E+PjJdfDApKzI0Pj4xXT1qW0o+PjFdfDA7alsoa1tBPj4yXXwwKSs0Mj4+MV09altNPj4xXXwwO2tbKGtbQT4+Ml18MCkrMzY+PjJdPWtbUD4+Ml19a1tmPj4yXT1rW0g+PjJdO1M9a1tmPj4yXXwwO3I9UjtyZXR1cm4gU3wwfWZ1bmN0aW9uIFJFKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGM9MCxkPTAsZT0wLGY9MCxnPTA7ZT1yO3I9cisxNnwwO2M9ZSsxMnwwO2Q9ZSs4fDA7Zz1lKzR8MDtmPWU7a1tkPj4yXT1hO2tbZz4+Ml09YjtrW2Y+PjJdPWpbKGtbKGtbZD4+Ml18MCkrND4+Ml18MCkrKGtbZz4+Ml08PDEpPj4xXTtiPWtbZj4+Ml18MDtpZigoa1tmPj4yXXwwKT49MCl7a1tjPj4yXT1sWyhrWyhrWyhrW2Q+PjJdfDApKzEyPj4yXXwwKSs0Pj4yXXwwKSsoYjw8NCkrMTI+PjBdO2c9a1tjPj4yXXwwO3I9ZTtyZXR1cm4gZ3wwfWlmKChifDApPT0tMSl7a1tjPj4yXT0xO2c9a1tjPj4yXXwwO3I9ZTtyZXR1cm4gZ3wwfWVsc2V7a1tjPj4yXT0wO2c9a1tjPj4yXXwwO3I9ZTtyZXR1cm4gZ3wwfXJldHVybiAwfWZ1bmN0aW9uIFNFKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLG49MCxvPTAscD0wLHE9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MDt4PXI7cj1yKzQ4fDA7Zj14KzM2fDA7Zz14KzMyfDA7aD14KzI4fDA7bj14KzI0fDA7bz14KzIwfDA7cz14KzE2fDA7dz14KzEyfDA7cD14KzQxfDA7cT14KzQwfDA7dD14Kzh8MDt1PXgrNHwwO3Y9eDtrW2Y+PjJdPWE7a1tnPj4yXT1iO2tbaD4+Ml09YztrW24+PjJdPWQ7a1tvPj4yXT1lO2U9bXooa1soa1trW28+PjJdPj4yXXwwKSsxMj4+Ml18MCl8MDtrW3M+PjJdPWU7aWYoKGtbcz4+Ml18MCk8KChtWyhrW2g+PjJdfDApKzUyPj4xXXwwKS0oa1tuPj4yXXwwKXwwKSliPWtbcz4+Ml18MDtlbHNlIGI9KG1bKGtbaD4+Ml18MCkrNTI+PjFdfDApLShrW24+PjJdfDApfDA7a1tzPj4yXT1iO2tbdz4+Ml09MTt3aGlsZSgxKXtpZigoa1t3Pj4yXXwwKT49KGtbcz4+Ml18MCkpe2I9MTc7YnJlYWt9aVtxPj4wXT0wO2tbdT4+Ml09a1soa1soa1soa1soa1trW28+PjJdPj4yXXwwKSsxMj4+Ml18MCkrMjA+PjJdfDApKzQ+PjJdfDApKygoa1t3Pj4yXXwwKSoyMHwwKT4+Ml07a1t2Pj4yXT1rWyhrW2tbbz4+Ml0+PjJdfDApKzE2Pj4yXTtiPWtbdz4+Ml18MDtkPShrW3Y+PjJdfDApKzIwfDA7aWYoa1soa1t2Pj4yXXwwKSs0Pj4yXSYyMDQ4KWtbdj4+Ml09a1soa1soa1trW2Q+PjJdPj4yXXwwKSs0Pj4yXXwwKSsoYioyMHwwKT4+Ml07ZWxzZSBrW3Y+PjJdPWtbKGtbKGtbZD4+Ml18MCkrND4+Ml18MCkrKGIqMjB8MCk+PjJdO2lmKChsW2tbdT4+Ml0+PjBdfDApIT0xNTIpe2I9MTc7YnJlYWt9aWYoKGtbKGtbdT4+Ml18MCkrMjg+PjJdfDApIT0oa1tnPj4yXXwwKSl7Yj0xNzticmVha31pZigoalsoa1t1Pj4yXXwwKSszMj4+MV18MCkhPShqWyhrWyhrW2g+PjJdfDApKzQ+PjJdfDApKygoa1t3Pj4yXXwwKSsoa1tuPj4yXXwwKTw8MSk+PjFdfDApKXtiPTE3O2JyZWFrfWlmKChsWyhrWyhrW2g+PjJdfDApKzI4Pj4yXXwwKSsoKGtbdz4+Ml18MCkrKGtbbj4+Ml18MCkpPj4wXXwwKSE9KGxbKGtbKGtbaD4+Ml18MCkrMjg+PjJdfDApKyhrW24+PjJdfDApPj4wXXwwKSl7Yj0xNzticmVha31lPWtbdj4+Ml18MDtlPUJCKGUsb3koa1t1Pj4yXXwwKXwwKXwwO2lbcD4+MF09ZTtlPXZ5KGtbKGtbaD4+Ml18MCkrMTI+PjJdfDAsalsoa1t1Pj4yXXwwKSszMj4+MV18MCl8MDtpW3E+PjBdPWU7aWYoKGlbcD4+MF18MCkhPShpW3E+PjBdfDApKXtiPTE3O2JyZWFrfWU9Q0Ioa1tmPj4yXXwwLGtbdT4+Ml18MCxrW3Y+PjJdfDApfDA7a1t0Pj4yXT1lO2lmKCEoa1t0Pj4yXXwwKSl7Yj0xNzticmVha31pZihzZyhrW2tbdD4+Ml0+PjJdfDAsa1soa1soa1toPj4yXXwwKSszMj4+Ml18MCkrKChrW3c+PjJdfDApKyhrW24+PjJdfDApPDwyKT4+Ml18MCl8MCl7Yj0xNzticmVha31rW3c+PjJdPShrW3c+PjJdfDApKzF9aWYoKGJ8MCk9PTE3KXtyPXg7cmV0dXJuIGtbdz4+Ml18MH1yZXR1cm4gMH1mdW5jdGlvbiBURShhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxpPTAsbD0wLG09MCxuPTA7bj1yO3I9ciszMnwwO2Y9bisxNnwwO2c9bisxMnwwO2g9bis4fDA7bT1uKzR8MDtsPW47aT1uKzI4fDA7a1tuKzI0Pj4yXT1hO2tbbisyMD4+Ml09YjtrW2Y+PjJdPWM7a1tnPj4yXT1kO2tbaD4+Ml09ZTtrW20+PjJdPTA7a1tsPj4yXT1qWyhrW2g+PjJdfDApKzIyPj4xXTtkPVVFKGtbZj4+Ml18MCxrW2w+PjJdJjY1NTM1KXwwO2pbaT4+MV09ZDtkPVVFKGtbZz4+Ml18MCxqW2k+PjFdfDApfDA7altpPj4xXT1kO2lmKCgoa1tmPj4yXXwwKSE9MD8oKGtbZz4+Ml18MCkhPTA/KGpbKGtbZj4+Ml18MCkrOD4+MV18MCk+MDowKTowKT8oalsoa1tnPj4yXXwwKSs4Pj4xXXwwKT4wOjApaltpPj4xXT0oaltpPj4xXXwwKS0yMDtrW2w+PjJdPShrW2w+PjJdfDApLSgoKGtbZj4+Ml18MCkhPTAmMSkrKChrW2c+PjJdfDApIT0wJjEpKTtpZigoaltpPj4xXXwwKTwxMClqW2k+PjFdPTEwO2lmKChqW2k+PjFdfDApPj0oa1tsPj4yXXwwKSl7YT1rW2w+PjJdfDA7YT1hJjY1NTM1O2Q9a1toPj4yXXwwO2Q9ZCsyMnwwO2pbZD4+MV09YTttPWtbbT4+Ml18MDtyPW47cmV0dXJuIG18MH1rW2w+PjJdPWpbaT4+MV07YT1rW2w+PjJdfDA7YT1hJjY1NTM1O2Q9a1toPj4yXXwwO2Q9ZCsyMnwwO2pbZD4+MV09YTttPWtbbT4+Ml18MDtyPW47cmV0dXJuIG18MH1mdW5jdGlvbiBVRShhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTA7ZT1yO3I9cisxNnwwO2M9ZTtmPWUrNnwwO2Q9ZSs0fDA7a1tjPj4yXT1hO2pbZj4+MV09YjtqW2Q+PjFdPWpbZj4+MV18MDtkbyBpZihrW2M+PjJdfDApe2I9a1tjPj4yXXwwO2lmKChqWyhrW2M+PjJdfDApKzg+PjFdfDApPD0wKXtqW2Q+PjFdPShqW2Q+PjFdfDApKyhqW2IrOD4+MV18MCk7YnJlYWt9aWYoIShtW2IrMTA+PjFdJjApKWpbZD4+MV09KGpbZD4+MV18MCktMjB9d2hpbGUoMCk7cj1lO3JldHVybiBqW2Q+PjFdfDB9ZnVuY3Rpb24gVkUoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wO2Y9cjtyPXIrMTZ8MDtjPWYrOHwwO2Q9Zis0fDA7ZT1mO2tbZD4+Ml09YTtrW2U+PjJdPWI7aWYoKChsW2tbZT4+Ml0+PjBdfDB8MCk9PTE1Mj8oa1soa1tlPj4yXXwwKSsyOD4+Ml18MCk9PShrWyhrWyhrW2Q+PjJdfDApKzI0Pj4yXXwwKSs0Pj4yXXwwKTowKT8oKFlBKGtba1soa1tkPj4yXXwwKSsyND4+Ml0+PjJdfDAsalsoa1tlPj4yXXwwKSszMj4+MV18MCl8MCk8PDE2Pj4xNnwwKTwwOjApe2lbKGtbZD4+Ml18MCkrMjA+PjBdPTE7a1tjPj4yXT0yO2E9a1tjPj4yXXwwO3I9ZjtyZXR1cm4gYXwwfWtbYz4+Ml09MDthPWtbYz4+Ml18MDtyPWY7cmV0dXJuIGF8MH1mdW5jdGlvbiBXRShhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTA7aD1yO3I9cisxNnwwO2Q9aCsxMnwwO2U9aCs4fDA7Zj1oKzR8MDtnPWg7a1tlPj4yXT1hO2tbZj4+Ml09YjtrW2c+PjJdPWM7aWYoIShVeShrW2U+PjJdfDAsa1tmPj4yXXwwLGtbZz4+Ml18MCl8MCkpe2tbZD4+Ml09MTtiPWtbZD4+Ml18MDtyPWg7cmV0dXJuIGJ8MH1kbyBpZigobFtrW2Y+PjJdPj4wXXwwfDApPT0yNyl7aWYoKFdFKGtbZT4+Ml18MCxrWyhrW2Y+PjJdfDApKzEyPj4yXXwwLGtbZz4+Ml18MCl8MCk9PTA/KFdFKGtbZT4+Ml18MCxrWyhrW2Y+PjJdfDApKzE2Pj4yXXwwLGtbZz4+Ml18MCl8MCk9PTA6MClicmVhaztrW2Q+PjJdPTE7Yj1rW2Q+PjJdfDA7cj1oO3JldHVybiBifDB9d2hpbGUoMCk7aWYoKCgobFtrW2Y+PjJdPj4wXXwwfDApPT0zNT8oVXkoa1soa1tlPj4yXXwwKSsxMj4+Ml18MCxrWyhrW2Y+PjJdfDApKzEyPj4yXXwwLGtbZz4+Ml18MCl8MCk9PTA6MCk/KGxba1tlPj4yXT4+MF18MHwwKSE9MzQ6MCk/KGxba1tlPj4yXT4+MF18MHwwKSE9Mjk6MCl7a1tkPj4yXT0xO2I9a1tkPj4yXXwwO3I9aDtyZXR1cm4gYnwwfWtbZD4+Ml09MDtiPWtbZD4+Ml18MDtyPWg7cmV0dXJuIGJ8MH1mdW5jdGlvbiBYRShhLGIsYyxkLGUsZixnKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDt2YXIgaD0wLG49MCxvPTAscD0wLHE9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MCxFPTAsRj0wLEc9MCxIPTAsST0wLEo9MDtKPXI7cj1yKzk2fDA7ST1KKzh8MDtoPUorODB8MDtuPUorNzZ8MDtvPUorNzJ8MDtwPUo7cT1KKzY4fDA7cz1KKzY0fDA7dD1KKzYwfDA7dT1KKzU2fDA7dj1KKzUyfDA7ej1KKzQ4fDA7RD1KKzQ0fDA7Rj1KKzQwfDA7SD1KKzM2fDA7Rz1KKzMyfDA7eT1KKzI4fDA7RT1KKzI0fDA7dz1KKzg0fDA7eD1KKzIwfDA7Qj1KKzE2fDA7QT1KKzg2fDA7Qz1KKzEyfDA7a1tuPj4yXT1hO2tbbz4+Ml09YjtiPXA7a1tiPj4yXT1jO2tbYis0Pj4yXT1kO2tbcT4+Ml09ZTtrW3M+PjJdPWY7a1t0Pj4yXT1nO2pbdz4+MV09MDtrW3o+PjJdPTA7a1t1Pj4yXT0wO2tbRz4+Ml09a1soa1tvPj4yXXwwKSsyMD4+Ml07d2hpbGUoMSl7aWYoKGtbdT4+Ml18MCk+PShrWyhrW28+PjJdfDApKzEyPj4yXXwwKSlicmVhaztpZigoKChrWyhrW0c+PjJdfDApKzIwPj4yXXwwKT09KGtbKGtbcT4+Ml18MCkrNDQ+PjJdfDApPyhiPShrW0c+PjJdfDApKzMyfDAsZz1wLCEoKGtbYj4+Ml0ma1tnPj4yXXwwKSE9MD8xOihrW2IrND4+Ml0ma1tnKzQ+PjJdfDApIT0wKSk6MCk/KG1bKGtbRz4+Ml18MCkrMTI+PjFdJi0yNDMzfDApIT0wOjApPyhtWyhrW0c+PjJdfDApKzEwPj4xXSYwfDApPT0wOjApa1t6Pj4yXT0oa1t6Pj4yXXwwKSsxO2tbdT4+Ml09KGtbdT4+Ml18MCkrMTtrW0c+PjJdPShrW0c+PjJdfDApKzQ4fWtbeT4+Ml09MDtpZihrW3M+PjJdfDApe2tbeD4+Ml09a1trW3M+PjJdPj4yXTtrW3U+PjJdPTA7d2hpbGUoMSl7aWYoKGtbdT4+Ml18MCk+PShrW3g+PjJdfDApKWJyZWFrO2tbQj4+Ml09a1soa1soa1tzPj4yXXwwKSs0Pj4yXXwwKSsoKGtbdT4+Ml18MCkqMjB8MCk+PjJdO2lmKChsW2tbQj4+Ml0+PjBdfDApIT0xNTIpYnJlYWs7aWYoKGtbKGtbQj4+Ml18MCkrMjg+PjJdfDApIT0oa1soa1txPj4yXXwwKSs0ND4+Ml18MCkpYnJlYWs7a1t1Pj4yXT0oa1t1Pj4yXXwwKSsxfWlmKChrW3U+PjJdfDApPT0oa1t4Pj4yXXwwKSlrW3k+PjJdPWtbeD4+Ml19Zz1DaChrW2tbbj4+Ml0+PjJdfDAsNzIrKChrW3o+PjJdfDApKjIwfDApKyhrW3k+PjJdPDwzKXwwLDApfDA7a1tFPj4yXT1nO2lmKCEoa1tFPj4yXXwwKSl7T2goa1tuPj4yXXwwLDI1MDE2LEkpO2tbaD4+Ml09MDtJPWtbaD4+Ml18MDtyPUo7cmV0dXJuIEl8MH1rW0Q+PjJdPShrW0U+PjJdfDApKzcyO2tbRj4+Ml09KGtbRD4+Ml18MCkrKChrW3o+PjJdfDApKjEyfDApO2tbSD4+Ml09KGtbRj4+Ml18MCkrKGtbeT4+Ml08PDMpO2tba1tFPj4yXT4+Ml09a1t6Pj4yXTtrWyhrW0U+PjJdfDApKzg+PjJdPWtbeT4+Ml07a1soa1tFPj4yXXwwKSs0Pj4yXT1rW0Q+PjJdO2tbKGtbRT4+Ml18MCkrMTI+PjJdPWtbRj4+Ml07a1soa1tFPj4yXXwwKSsxNj4+Ml09a1tIPj4yXTtrW3Y+PjJdPTA7a1t1Pj4yXT0wO2tbRz4+Ml09a1soa1tvPj4yXXwwKSsyMD4+Ml07d2hpbGUoMSl7aWYoKGtbdT4+Ml18MCk+PShrWyhrW28+PjJdfDApKzEyPj4yXXwwKSlicmVhaztpZigoKChrWyhrW0c+PjJdfDApKzIwPj4yXXwwKT09KGtbKGtbcT4+Ml18MCkrNDQ+PjJdfDApPyhnPShrW0c+PjJdfDApKzMyfDAsST1wLCEoKGtbZz4+Ml0ma1tJPj4yXXwwKSE9MD8xOihrW2crND4+Ml0ma1tJKzQ+PjJdfDApIT0wKSk6MCk/KG1bKGtbRz4+Ml18MCkrMTI+PjFdJi0yNDMzfDApIT0wOjApPyhtWyhrW0c+PjJdfDApKzEwPj4xXSYwfDApPT0wOjApe2tbKGtbRD4+Ml18MCkrKChrW3Y+PjJdfDApKjEyfDApPj4yXT1rWyhrW0c+PjJdfDApKzI4Pj4yXTtrWyhrW0Q+PjJdfDApKygoa1t2Pj4yXXwwKSoxMnwwKSs4Pj4yXT1rW3U+PjJdO0k9alsoa1tHPj4yXXwwKSsxMj4+MV0mMjU1O2lbQT4+MF09STtpW0E+PjBdPShsW0E+PjBdfDApPT0xPzI6STtpZigobFtBPj4wXXwwKT09NjQpaVtBPj4wXT1pWyhrW0c+PjJdfDApKzE1Pj4wXXwwO2lbKGtbRD4+Ml18MCkrKChrW3Y+PjJdfDApKjEyfDApKzQ+PjBdPWlbQT4+MF18MDtpZigobFtBPj4wXSY2MHwwKSE9MD8oZkIoa1soa1trW0c+PjJdPj4yXXwwKSsxNj4+Ml18MCl8MCkhPTA6MCl7aWYoKGtbdT4+Ml18MCk8MTYpalt3Pj4xXT1tW3c+PjFdfDE8PGtbdT4+Ml07aWYoKGxbQT4+MF18MCk9PTE2KWlbKGtbRD4+Ml18MCkrKChrW3Y+PjJdfDApKjEyfDApKzQ+PjBdPTg7aWYoKGxbQT4+MF18MCk9PTQpaVsoa1tEPj4yXXwwKSsoKGtbdj4+Ml18MCkqMTJ8MCkrND4+MF09MzJ9a1t2Pj4yXT0oa1t2Pj4yXXwwKSsxfWtbdT4+Ml09KGtbdT4+Ml18MCkrMTtrW0c+PjJdPShrW0c+PjJdfDApKzQ4fWtbdT4+Ml09MDt3aGlsZSgxKXtpZigoa1t1Pj4yXXwwKT49KGtbeT4+Ml18MCkpYnJlYWs7a1tDPj4yXT1rWyhrWyhrW3M+PjJdfDApKzQ+PjJdfDApKygoa1t1Pj4yXXwwKSoyMHwwKT4+Ml07a1soa1tGPj4yXXwwKSsoa1t1Pj4yXTw8Myk+PjJdPWpbKGtbQz4+Ml18MCkrMzI+PjFdO2lbKGtbRj4+Ml18MCkrKGtbdT4+Ml08PDMpKzQ+PjBdPWlbKGtbKGtbcz4+Ml18MCkrND4+Ml18MCkrKChrW3U+PjJdfDApKjIwfDApKzEyPj4wXXwwO2tbdT4+Ml09KGtbdT4+Ml18MCkrMX1qW2tbdD4+Ml0+PjFdPWpbdz4+MV18MDtrW2g+PjJdPWtbRT4+Ml07ST1rW2g+PjJdfDA7cj1KO3JldHVybiBJfDB9ZnVuY3Rpb24gWUUoYSxiLGMsZCxlLGYsZyxoLG4pe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO249bnwwO3ZhciBvPTAscT0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wLEU9MCxGPTAsRz0wLEg9MCxJPTAsSj0wLEs9MCxMPTAsTT0wLE49MCxPPTA7Tj1yO3I9cis5NnwwO0c9TisxNnwwO0k9Tis4OHwwO0o9Tis4NHwwO089Tis4fDA7cz1OO3Q9Tis5NHwwO0s9Tis4MHwwO289Tis5MnwwO3E9Tis3NnwwO0Y9Tis3MnwwO3o9Tis2OHwwO0U9Tis2NHwwO3U9Tis2MHwwO3g9Tis1NnwwO009Tis1MnwwO0w9Tis0OHwwO0E9Tis0NHwwO0I9Tis0MHwwO3k9TiszNnwwO0M9TiszMnwwO3Y9TisyOHwwO0Q9TisyNHwwO3c9TisyMHwwO2tbSj4+Ml09YTthPU87a1thPj4yXT1iO2tbYSs0Pj4yXT1jO2E9cztrW2E+PjJdPWQ7a1thKzQ+PjJdPWU7alt0Pj4xXT1mO2tbSz4+Ml09ZztqW28+PjFdPWg7a1txPj4yXT1uO2tbRj4+Ml09a1soa1tKPj4yXXwwKSs0Pj4yXTtrW0U+PjJdPWtbKGtbSz4+Ml18MCkrMTY+PjJdO2tbTT4+Ml09MDtrW0w+PjJdPWtbKGtbSj4+Ml18MCkrMTI+PjJdO2tbQT4+Ml09a1trW2tbSj4+Ml0+PjJdPj4yXTtrW0I+PjJdPShrWyhrW2tbSj4+Ml0+PjJdfDApKzQ+PjJdfDApKzgrKChsWyhrW0w+PjJdfDApKzE2Pj4wXXwwKSo3MnwwKTtrW3k+PjJdPWtba1tLPj4yXT4+Ml07a1trW3E+PjJdPj4yXT0wO2E9TztnPWtbYSs0Pj4yXXwwO249a1tMPj4yXXwwO2tbbj4+Ml09a1thPj4yXTtrW24rND4+Ml09ZztrW3o+PjJdPWtbKGtbSz4+Ml18MCkrND4+Ml07a1t1Pj4yXT0wO3doaWxlKDEpe2lmKChrW3U+PjJdfDApPj0oa1t5Pj4yXXwwKSlicmVhaztrW0M+PjJdPShrWyhrW0Y+PjJdfDApKzIwPj4yXXwwKSsoKGtbKGtbej4+Ml18MCkrOD4+Ml18MCkqNDh8MCk7aVsoa1t6Pj4yXXwwKSs1Pj4wXT0wO2c9KGtbQz4+Ml18MCkrMzJ8MDtuPXM7Tz0oa1tDPj4yXXwwKSszMnwwO2lmKCgoa1tnPj4yXSZrW24+PjJdfDApPT0oa1tPPj4yXXwwKT8oa1tnKzQ+PjJdJmtbbis0Pj4yXXwwKT09KGtbTys0Pj4yXXwwKTowKT8obVsoa1tDPj4yXXwwKSsxMj4+MV0mbVt0Pj4xXXwwKT09MDowKWlbKGtbej4+Ml18MCkrNT4+MF09MTtrW3U+PjJdPShrW3U+PjJdfDApKzE7a1t6Pj4yXT0oa1t6Pj4yXXwwKSsxMn1kUyhrW0U+PjJdfDAsMCxrW3k+PjJdPDwzfDApfDA7a1soa1tLPj4yXXwwKSsyND4+Ml09MDtrWyhrW0s+PjJdfDApKzIwPj4yXT0wO2tbKGtbSz4+Ml18MCkrMzI+PjJdPTA7cFsoa1tLPj4yXXwwKSs0MD4+M109NS5lKzk4O0M9KGtbSz4+Ml18MCkrNDh8MDtrW0M+PjJdPTI1O2tbQys0Pj4yXT0wO2tbKGtbSz4+Ml18MCkrNTY+PjJdPTA7Qz0oa1tCPj4yXXwwKSs1NnwwO249a1tDKzQ+PjJdfDA7Tz0oa1tLPj4yXXwwKSs2NHwwO2tbTz4+Ml09a1tDPj4yXTtrW08rND4+Ml09bjtPPVpFKGtbQT4+Ml18MCxrWyhrW0I+PjJdfDApKzE2Pj4yXXwwLGtbSz4+Ml18MCl8MDtrW00+PjJdPU87aWYoa1tNPj4yXXwwKXtrW0k+PjJdPWtbTT4+Ml07Tz1rW0k+PjJdfDA7cj1OO3JldHVybiBPfDB9a1t4Pj4yXT0tMTtrW3U+PjJdPTA7d2hpbGUoMSl7aWYoKGtbdT4+Ml18MCk+PShrW3k+PjJdfDApKWJyZWFrO2tbKGtbKGtbTD4+Ml18MCkrNDg+PjJdfDApKyhrW3U+PjJdPDwyKT4+Ml09MDtrW3U+PjJdPShrW3U+PjJdfDApKzF9alsoa1tMPj4yXXwwKSsyNCs2Pj4xXT0wO2tbej4+Ml09a1soa1tLPj4yXXwwKSs0Pj4yXTtrW3U+PjJdPTA7d2hpbGUoMSl7aWYoKGtbdT4+Ml18MCk+PShrW3k+PjJdfDApKWJyZWFrO089KGtbKGtbRT4+Ml18MCkrKGtbdT4+Ml08PDMpPj4yXXwwKS0xfDA7a1t2Pj4yXT1PO2lmKChPfDApPj0wKXtrW3c+PjJdPWtbKGtbej4+Ml18MCkrOD4+Ml07aWYoKGtbdz4+Ml18MCk8MD8xOihrW3Y+PjJdfDApPj0oa1t5Pj4yXXwwKSl7SD0xOTticmVha31pZigoa1t3Pj4yXXwwKT49KGtbKGtbRj4+Ml18MCkrMTI+PjJdfDApKXtIPTE5O2JyZWFrfWlmKGtbKGtbKGtbTD4+Ml18MCkrNDg+PjJdfDApKyhrW3Y+PjJdPDwyKT4+Ml18MCl7SD0xOTticmVha31pZighKGxbKGtbej4+Ml18MCkrNT4+MF18MCkpe0g9MTk7YnJlYWt9a1tEPj4yXT0oa1soa1tGPj4yXXwwKSsyMD4+Ml18MCkrKChrW3c+PjJdfDApKjQ4fDApO0M9KGtbRD4+Ml18MCkrMzJ8MDtPPWtbTD4+Ml18MDtnPU87bj1rW2crND4+Ml18a1tDKzQ+PjJdO2tbTz4+Ml09a1tnPj4yXXxrW0M+PjJdO2tbTys0Pj4yXT1uO2tbKGtbKGtbTD4+Ml18MCkrNDg+PjJdfDApKyhrW3Y+PjJdPDwyKT4+Ml09a1tEPj4yXTtpZigoa1t2Pj4yXXwwKT4oa1t4Pj4yXXwwKSlrW3g+PjJdPWtbdj4+Ml07aWYoKGtbdj4+Ml18MCk8MTY/KGxbKGtbRT4+Ml18MCkrKGtbdT4+Ml08PDMpKzQ+PjBdfDApIT0wOjApe089KGtbTD4+Ml18MCkrMjQrNnwwO2pbTz4+MV09bVtPPj4xXXwxPDxrW3Y+PjJdfWlmKG1bKGtbRD4+Ml18MCkrMTI+PjFdJjEpe2tbKGtbSz4+Ml18MCkrMzI+PjJdPTA7Tz0oa1tLPj4yXXwwKSs1NnwwO2tbTz4+Ml09a1tPPj4yXSYtMjtrW2tbcT4+Ml0+PjJdPTF9fWtbdT4+Ml09KGtbdT4+Ml18MCkrMTtrW3o+PjJdPShrW3o+PjJdfDApKzEyfWlmKChIfDApPT0xOSl7a1tNPj4yXT0xO089a1tBPj4yXXwwO2tbRz4+Ml09a1trWyhrW0I+PjJdfDApKzE2Pj4yXT4+Ml07T2goTywzNDgwNixHKTtrW0k+PjJdPWtbTT4+Ml07Tz1rW0k+PjJdfDA7cj1OO3JldHVybiBPfDB9Tz0oa1tMPj4yXXwwKSsyNCs2fDA7altPPj4xXT1tW08+PjFdJn5tW28+PjFdO2pbKGtbTD4+Ml18MCkrNDA+PjFdPShrW3g+PjJdfDApKzE7a1soa1tMPj4yXXwwKSsyND4+Ml09a1soa1tLPj4yXXwwKSsyMD4+Ml07aVsoa1tMPj4yXXwwKSsyNCs0Pj4wXT1rWyhrW0s+PjJdfDApKzI4Pj4yXTtrWyhrW0s+PjJdfDApKzI4Pj4yXT0wO2tbKGtbTD4+Ml18MCkrMjQrOD4+Ml09a1soa1tLPj4yXXwwKSsyND4+Ml07aWYoa1soa1tLPj4yXXwwKSszMj4+Ml18MCliPWtbKGtbSz4+Ml18MCkrOD4+Ml18MDtlbHNlIGI9MDtpWyhrW0w+PjJdfDApKzI0KzU+PjBdPWI7alsoa1tMPj4yXXwwKSsxOD4+MV09MDtiPV9FKCtwWyhrW0s+PjJdfDApKzQwPj4zXSl8MDtqWyhrW0w+PjJdfDApKzIwPj4xXT1iO2I9KGtbSz4+Ml18MCkrNDh8MDtiPVdqKGtbYj4+Ml18MCxrW2IrND4+Ml18MCl8MDtqWyhrW0w+PjJdfDApKzIyPj4xXT1iO2I9KGtbTD4+Ml18MCkrMzZ8MDtjPWtbYj4+Ml18MDtpZihrWyhrW0s+PjJdfDApKzU2Pj4yXSYxKWtbYj4+Ml09Y3w0MDk2O2Vsc2Uga1tiPj4yXT1jJi00MDk3O089R0Uoa1tKPj4yXXwwLGtbTD4+Ml18MCl8MDtrW00+PjJdPU87aWYoaVsoa1tMPj4yXXwwKSsyNCs0Pj4wXXwwKXtVZChrWyhrW0w+PjJdfDApKzI0Kzg+PjJdfDApO2lbKGtbTD4+Ml18MCkrMjQrND4+MF09MH1rW0k+PjJdPWtbTT4+Ml07Tz1rW0k+PjJdfDA7cj1OO3JldHVybiBPfDB9ZnVuY3Rpb24gWkUoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGk9MCxqPTAsbD0wO2k9cjtyPXIrMzJ8MDtoPWkrOHwwO2c9aTtkPWkrMjh8MDtsPWkrMjR8MDtqPWkrMjB8MDtlPWkrMTZ8MDtmPWkrMTJ8MDtrW2Q+PjJdPWE7a1tsPj4yXT1iO2tbaj4+Ml09YztiPShjeShrW2tbZD4+Ml0+PjJdfDAsa1tsPj4yXXwwKXwwKSs4fDA7a1tlPj4yXT1rW2I+PjJdO2I9Z2Nba1soa1trW2U+PjJdPj4yXXwwKSsxMj4+Ml0mMjU1XShrW2U+PjJdfDAsa1tqPj4yXXwwKXwwO2tbZj4+Ml09YjtkbyBpZihrW2Y+PjJdfDApe2lmKChrW2Y+PjJdfDApPT03KXt3aChrW2tbZD4+Ml0+PjJdfDApO2JyZWFrfWM9a1tkPj4yXXwwO2lmKGtbKGtbZT4+Ml18MCkrOD4+Ml18MCl7a1toPj4yXT1rWyhrW2U+PjJdfDApKzg+PjJdO09oKGMsMTgzOTEsaCk7YnJlYWt9ZWxzZXtsPXZoKGtbZj4+Ml18MCl8MDtrW2c+PjJdPWw7T2goYywxODM5MSxnKTticmVha319d2hpbGUoMCk7VWQoa1soa1tlPj4yXXwwKSs4Pj4yXXwwKTtrWyhrW2U+PjJdfDApKzg+PjJdPTA7cj1pO3JldHVybiBrWyhrW2Q+PjJdfDApKzM2Pj4yXXwwfWZ1bmN0aW9uIF9FKGEpe2E9K2E7dmFyIGI9MCxjPTAsZD0wLGU9MCxmPTA7Zj1yO3I9ciszMnwwO2I9ZisxOHwwO2M9Zis4fDA7ZD1mO2U9ZisxNnwwO3BbYz4+M109YTtpZigrcFtjPj4zXTw9MS4wKXtqW2I+PjFdPTA7ZT1qW2I+PjFdfDA7cj1mO3JldHVybiBlfDB9aWYoK3BbYz4+M108PTIuMGU5KXthPStwW2M+PjNdO2U9V2oofn5hPj4+MCwrVyhhKT49MS4wPyhhPjAuMD9+fitpYSgrVihhLzQyOTQ5NjcyOTYuMCksNDI5NDk2NzI5NS4wKT4+PjA6fn4rZ2EoKGEtKyh+fmE+Pj4wKSkvNDI5NDk2NzI5Ni4wKT4+PjApOjApfDA7altiPj4xXT1lO2U9altiPj4xXXwwO3I9ZjtyZXR1cm4gZXwwfWVsc2V7a1tkPj4yXT1rW2M+PjJdO2tbZCs0Pj4yXT1rW2MrND4+Ml07ZD1hUyhrW2Q+PjJdfDAsa1tkKzQ+PjJdfDAsNTIpfDA7ZD1fUihkfDAsTHwwLDEwMjIsMCl8MDtqW2U+PjFdPWQ7altiPj4xXT0oaltlPj4xXXwwKSoxMDtlPWpbYj4+MV18MDtyPWY7cmV0dXJuIGV8MH1yZXR1cm4gMH1mdW5jdGlvbiAkRShhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxpPTAsbT0wLG49MCxvPTAscD0wLHE9MCxzPTAsdD0wO3Q9cjtyPXIrNDh8MDtxPXQrMzZ8MDtmPXQrMzJ8MDtnPXQrMjh8MDtoPXQrMjR8MDtpPXQrMjB8MDttPXQrMTZ8MDtzPXQrMTJ8MDtwPXQrOHwwO249dCs0fDA7bz10O2tbZj4+Ml09YTtrW2c+PjJdPWI7a1toPj4yXT1jO2tbaT4+Ml09ZDtrW20+PjJdPWU7a1twPj4yXT1rWyhrWyhrW2k+PjJdfDApKzMyPj4yXXwwKSsoa1ttPj4yXTw8Mik+PjJdO2tbcz4+Ml09MDt3aGlsZSgxKXtpZigoa1tzPj4yXXwwKT49KGtba1tnPj4yXT4+Ml18MCkpe2Y9MTA7YnJlYWt9YT11eShrWyhrWyhrW2c+PjJdfDApKzQ+PjJdfDApKygoa1tzPj4yXXwwKSoyMHwwKT4+Ml18MCl8MDtrW24+PjJdPWE7aWYoKCgoKGxba1tuPj4yXT4+MF18MCk9PTE1Mj8oalsoa1tuPj4yXXwwKSszMj4+MV18MCk9PShqWyhrWyhrW2k+PjJdfDApKzQ+PjJdfDApKyhrW20+PjJdPDwxKT4+MV18MCk6MCk/KGtbKGtbbj4+Ml18MCkrMjg+PjJdfDApPT0oa1toPj4yXXwwKTowKT8oYT1weShrW2Y+PjJdfDAsa1soa1soa1tnPj4yXXwwKSs0Pj4yXXwwKSsoKGtbcz4+Ml18MCkqMjB8MCk+PjJdfDApfDAsa1tvPj4yXT1hLChrW28+PjJdfDApIT0wKTowKT8wPT0oc2coa1trW28+PjJdPj4yXXwwLGtbcD4+Ml18MCl8MCk6MCl7Zj04O2JyZWFrfWtbcz4+Ml09KGtbcz4+Ml18MCkrMX1pZigoZnwwKT09OCl7a1txPj4yXT1rW3M+PjJdO3M9a1txPj4yXXwwO3I9dDtyZXR1cm4gc3wwfWVsc2UgaWYoKGZ8MCk9PTEwKXtrW3E+PjJdPS0xO3M9a1txPj4yXXwwO3I9dDtyZXR1cm4gc3wwfXJldHVybiAwfVxuZnVuY3Rpb24gWVIoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wLGc9MCxoPTAsaT0wLGo9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MDtxPWErYnwwO2M9a1thKzQ+PjJdfDA7ZG8gaWYoIShjJjEpKXtqPWtbYT4+Ml18MDtpZighKGMmMykpcmV0dXJuO249YSsoMC1qKXwwO209aitifDA7aT1rWzIyNjFdfDA7aWYobj4+PjA8aT4+PjApVmEoKTtpZigobnwwKT09KGtbMjI2Ml18MCkpe2Q9YSsoYis0KXwwO2M9a1tkPj4yXXwwO2lmKChjJjN8MCkhPTMpe3Q9bjtnPW07YnJlYWt9a1syMjU5XT1tO2tbZD4+Ml09YyYtMjtrW2ErKDQtaik+PjJdPW18MTtrW3E+PjJdPW07cmV0dXJufWY9aj4+PjM7aWYoaj4+PjA8MjU2KXtlPWtbYSsoOC1qKT4+Ml18MDtkPWtbYSsoMTItaik+PjJdfDA7Yz05MDY4KyhmPDwxPDwyKXwwO2lmKChlfDApIT0oY3wwKSl7aWYoZT4+PjA8aT4+PjApVmEoKTtpZigoa1tlKzEyPj4yXXwwKSE9KG58MCkpVmEoKX1pZigoZHwwKT09KGV8MCkpe2tbMjI1N109a1syMjU3XSZ+KDE8PGYpO3Q9bjtnPW07YnJlYWt9aWYoKGR8MCkhPShjfDApKXtpZihkPj4+MDxpPj4+MClWYSgpO2M9ZCs4fDA7aWYoKGtbYz4+Ml18MCk9PShufDApKWg9YztlbHNlIFZhKCl9ZWxzZSBoPWQrOHwwO2tbZSsxMj4+Ml09ZDtrW2g+PjJdPWU7dD1uO2c9bTticmVha31oPWtbYSsoMjQtaik+PjJdfDA7ZT1rW2ErKDEyLWopPj4yXXwwO2RvIGlmKChlfDApPT0obnwwKSl7ZT0xNi1qfDA7ZD1hKyhlKzQpfDA7Yz1rW2Q+PjJdfDA7aWYoIWMpe2Q9YStlfDA7Yz1rW2Q+PjJdfDA7aWYoIWMpe2w9MDticmVha319d2hpbGUoMSl7ZT1jKzIwfDA7Zj1rW2U+PjJdfDA7aWYoZil7Yz1mO2Q9ZTtjb250aW51ZX1lPWMrMTZ8MDtmPWtbZT4+Ml18MDtpZighZilicmVhaztlbHNle2M9ZjtkPWV9fWlmKGQ+Pj4wPGk+Pj4wKVZhKCk7ZWxzZXtrW2Q+PjJdPTA7bD1jO2JyZWFrfX1lbHNle2Y9a1thKyg4LWopPj4yXXwwO2lmKGY+Pj4wPGk+Pj4wKVZhKCk7Yz1mKzEyfDA7aWYoKGtbYz4+Ml18MCkhPShufDApKVZhKCk7ZD1lKzh8MDtpZigoa1tkPj4yXXwwKT09KG58MCkpe2tbYz4+Ml09ZTtrW2Q+PjJdPWY7bD1lO2JyZWFrfWVsc2UgVmEoKX13aGlsZSgwKTtpZihoKXtjPWtbYSsoMjgtaik+PjJdfDA7ZD05MzMyKyhjPDwyKXwwO2lmKChufDApPT0oa1tkPj4yXXwwKSl7a1tkPj4yXT1sO2lmKCFsKXtrWzIyNThdPWtbMjI1OF0mfigxPDxjKTt0PW47Zz1tO2JyZWFrfX1lbHNle2lmKGg+Pj4wPChrWzIyNjFdfDApPj4+MClWYSgpO2M9aCsxNnwwO2lmKChrW2M+PjJdfDApPT0obnwwKSlrW2M+PjJdPWw7ZWxzZSBrW2grMjA+PjJdPWw7aWYoIWwpe3Q9bjtnPW07YnJlYWt9fWU9a1syMjYxXXwwO2lmKGw+Pj4wPGU+Pj4wKVZhKCk7a1tsKzI0Pj4yXT1oO2M9MTYtanwwO2Q9a1thK2M+PjJdfDA7ZG8gaWYoZClpZihkPj4+MDxlPj4+MClWYSgpO2Vsc2V7a1tsKzE2Pj4yXT1kO2tbZCsyND4+Ml09bDticmVha313aGlsZSgwKTtjPWtbYSsoYys0KT4+Ml18MDtpZihjKWlmKGM+Pj4wPChrWzIyNjFdfDApPj4+MClWYSgpO2Vsc2V7a1tsKzIwPj4yXT1jO2tbYysyND4+Ml09bDt0PW47Zz1tO2JyZWFrfWVsc2V7dD1uO2c9bX19ZWxzZXt0PW47Zz1tfX1lbHNle3Q9YTtnPWJ9d2hpbGUoMCk7aT1rWzIyNjFdfDA7aWYocT4+PjA8aT4+PjApVmEoKTtjPWErKGIrNCl8MDtkPWtbYz4+Ml18MDtpZighKGQmMikpe2lmKChxfDApPT0oa1syMjYzXXwwKSl7cz0oa1syMjYwXXwwKStnfDA7a1syMjYwXT1zO2tbMjI2M109dDtrW3QrND4+Ml09c3wxO2lmKCh0fDApIT0oa1syMjYyXXwwKSlyZXR1cm47a1syMjYyXT0wO2tbMjI1OV09MDtyZXR1cm59aWYoKHF8MCk9PShrWzIyNjJdfDApKXtzPShrWzIyNTldfDApK2d8MDtrWzIyNTldPXM7a1syMjYyXT10O2tbdCs0Pj4yXT1zfDE7a1t0K3M+PjJdPXM7cmV0dXJufWc9KGQmLTgpK2d8MDtmPWQ+Pj4zO2RvIGlmKGQ+Pj4wPj0yNTYpe2g9a1thKyhiKzI0KT4+Ml18MDtlPWtbYSsoYisxMik+PjJdfDA7ZG8gaWYoKGV8MCk9PShxfDApKXtkPWErKGIrMjApfDA7Yz1rW2Q+PjJdfDA7aWYoIWMpe2Q9YSsoYisxNil8MDtjPWtbZD4+Ml18MDtpZighYyl7cD0wO2JyZWFrfX13aGlsZSgxKXtlPWMrMjB8MDtmPWtbZT4+Ml18MDtpZihmKXtjPWY7ZD1lO2NvbnRpbnVlfWU9YysxNnwwO2Y9a1tlPj4yXXwwO2lmKCFmKWJyZWFrO2Vsc2V7Yz1mO2Q9ZX19aWYoZD4+PjA8aT4+PjApVmEoKTtlbHNle2tbZD4+Ml09MDtwPWM7YnJlYWt9fWVsc2V7Zj1rW2ErKGIrOCk+PjJdfDA7aWYoZj4+PjA8aT4+PjApVmEoKTtjPWYrMTJ8MDtpZigoa1tjPj4yXXwwKSE9KHF8MCkpVmEoKTtkPWUrOHwwO2lmKChrW2Q+PjJdfDApPT0ocXwwKSl7a1tjPj4yXT1lO2tbZD4+Ml09ZjtwPWU7YnJlYWt9ZWxzZSBWYSgpfXdoaWxlKDApO2lmKGgpe2M9a1thKyhiKzI4KT4+Ml18MDtkPTkzMzIrKGM8PDIpfDA7aWYoKHF8MCk9PShrW2Q+PjJdfDApKXtrW2Q+PjJdPXA7aWYoIXApe2tbMjI1OF09a1syMjU4XSZ+KDE8PGMpO2JyZWFrfX1lbHNle2lmKGg+Pj4wPChrWzIyNjFdfDApPj4+MClWYSgpO2M9aCsxNnwwO2lmKChrW2M+PjJdfDApPT0ocXwwKSlrW2M+PjJdPXA7ZWxzZSBrW2grMjA+PjJdPXA7aWYoIXApYnJlYWt9ZD1rWzIyNjFdfDA7aWYocD4+PjA8ZD4+PjApVmEoKTtrW3ArMjQ+PjJdPWg7Yz1rW2ErKGIrMTYpPj4yXXwwO2RvIGlmKGMpaWYoYz4+PjA8ZD4+PjApVmEoKTtlbHNle2tbcCsxNj4+Ml09YztrW2MrMjQ+PjJdPXA7YnJlYWt9d2hpbGUoMCk7Yz1rW2ErKGIrMjApPj4yXXwwO2lmKGMpaWYoYz4+PjA8KGtbMjI2MV18MCk+Pj4wKVZhKCk7ZWxzZXtrW3ArMjA+PjJdPWM7a1tjKzI0Pj4yXT1wO2JyZWFrfX19ZWxzZXtlPWtbYSsoYis4KT4+Ml18MDtkPWtbYSsoYisxMik+PjJdfDA7Yz05MDY4KyhmPDwxPDwyKXwwO2lmKChlfDApIT0oY3wwKSl7aWYoZT4+PjA8aT4+PjApVmEoKTtpZigoa1tlKzEyPj4yXXwwKSE9KHF8MCkpVmEoKX1pZigoZHwwKT09KGV8MCkpe2tbMjI1N109a1syMjU3XSZ+KDE8PGYpO2JyZWFrfWlmKChkfDApIT0oY3wwKSl7aWYoZD4+PjA8aT4+PjApVmEoKTtjPWQrOHwwO2lmKChrW2M+PjJdfDApPT0ocXwwKSlvPWM7ZWxzZSBWYSgpfWVsc2Ugbz1kKzh8MDtrW2UrMTI+PjJdPWQ7a1tvPj4yXT1lfXdoaWxlKDApO2tbdCs0Pj4yXT1nfDE7a1t0K2c+PjJdPWc7aWYoKHR8MCk9PShrWzIyNjJdfDApKXtrWzIyNTldPWc7cmV0dXJufX1lbHNle2tbYz4+Ml09ZCYtMjtrW3QrND4+Ml09Z3wxO2tbdCtnPj4yXT1nfWM9Zz4+PjM7aWYoZz4+PjA8MjU2KXtkPWM8PDE7Zj05MDY4KyhkPDwyKXwwO2U9a1syMjU3XXwwO2M9MTw8YztpZihlJmMpe2M9OTA2OCsoZCsyPDwyKXwwO2Q9a1tjPj4yXXwwO2lmKGQ+Pj4wPChrWzIyNjFdfDApPj4+MClWYSgpO2Vsc2V7cj1jO3M9ZH19ZWxzZXtrWzIyNTddPWV8YztyPTkwNjgrKGQrMjw8Mil8MDtzPWZ9a1tyPj4yXT10O2tbcysxMj4+Ml09dDtrW3QrOD4+Ml09cztrW3QrMTI+PjJdPWY7cmV0dXJufWM9Zz4+Pjg7aWYoYylpZihnPj4+MD4xNjc3NzIxNSlmPTMxO2Vsc2V7cj0oYysxMDQ4MzIwfDApPj4+MTYmODtzPWM8PHI7cT0ocys1MjAxOTJ8MCk+Pj4xNiY0O3M9czw8cTtmPShzKzI0NTc2MHwwKT4+PjE2JjI7Zj0xNC0ocXxyfGYpKyhzPDxmPj4+MTUpfDA7Zj1nPj4+KGYrN3wwKSYxfGY8PDF9ZWxzZSBmPTA7Yz05MzMyKyhmPDwyKXwwO2tbdCsyOD4+Ml09ZjtrW3QrMjA+PjJdPTA7a1t0KzE2Pj4yXT0wO2Q9a1syMjU4XXwwO2U9MTw8ZjtpZighKGQmZSkpe2tbMjI1OF09ZHxlO2tbYz4+Ml09dDtrW3QrMjQ+PjJdPWM7a1t0KzEyPj4yXT10O2tbdCs4Pj4yXT10O3JldHVybn1jPWtbYz4+Ml18MDthOmRvIGlmKChrW2MrND4+Ml0mLTh8MCkhPShnfDApKXtmPWc8PCgoZnwwKT09MzE/MDoyNS0oZj4+PjEpfDApO3doaWxlKDEpe2Q9YysxNisoZj4+PjMxPDwyKXwwO2U9a1tkPj4yXXwwO2lmKCFlKWJyZWFrO2lmKChrW2UrND4+Ml0mLTh8MCk9PShnfDApKXtjPWU7YnJlYWsgYX1lbHNle2Y9Zjw8MTtjPWV9fWlmKGQ+Pj4wPChrWzIyNjFdfDApPj4+MClWYSgpO2tbZD4+Ml09dDtrW3QrMjQ+PjJdPWM7a1t0KzEyPj4yXT10O2tbdCs4Pj4yXT10O3JldHVybn13aGlsZSgwKTtkPWMrOHwwO2U9a1tkPj4yXXwwO3M9a1syMjYxXXwwO2lmKCEoZT4+PjA+PXM+Pj4wJmM+Pj4wPj1zPj4+MCkpVmEoKTtrW2UrMTI+PjJdPXQ7a1tkPj4yXT10O2tbdCs4Pj4yXT1lO2tbdCsxMj4+Ml09YztrW3QrMjQ+PjJdPTA7cmV0dXJufWZ1bmN0aW9uIFpSKCl7fWZ1bmN0aW9uIF9SKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2Q9Yi1kLShjPj4+MD5hPj4+MHwwKT4+PjA7cmV0dXJuIChMPWQsYS1jPj4+MHwwKXwwfWZ1bmN0aW9uICRSKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2M9YStjPj4+MDtyZXR1cm4gKEw9YitkKyhjPj4+MDxhPj4+MHwwKT4+PjAsY3wwKXwwfWZ1bmN0aW9uIGFTKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtpZigoY3wwKTwzMil7TD1iPj4+YztyZXR1cm4gYT4+PmN8KGImKDE8PGMpLTEpPDwzMi1jfUw9MDtyZXR1cm4gYj4+PmMtMzJ8MH1mdW5jdGlvbiBiUyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MDtpZigoY3wwKT49NDA5NilyZXR1cm4gdWIoYXwwLGJ8MCxjfDApfDA7ZD1hfDA7aWYoKGEmMyk9PShiJjMpKXt3aGlsZShhJjMpe2lmKCFjKXJldHVybiBkfDA7aVthPj4wXT1pW2I+PjBdfDA7YT1hKzF8MDtiPWIrMXwwO2M9Yy0xfDB9d2hpbGUoKGN8MCk+PTQpe2tbYT4+Ml09a1tiPj4yXTthPWErNHwwO2I9Yis0fDA7Yz1jLTR8MH19d2hpbGUoKGN8MCk+MCl7aVthPj4wXT1pW2I+PjBdfDA7YT1hKzF8MDtiPWIrMXwwO2M9Yy0xfDB9cmV0dXJuIGR8MH1mdW5jdGlvbiBjUyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7dmFyIGQ9MDtpZigoYnwwKTwoYXwwKSYoYXwwKTwoYitjfDApKXtkPWE7Yj1iK2N8MDthPWErY3wwO3doaWxlKChjfDApPjApe2E9YS0xfDA7Yj1iLTF8MDtjPWMtMXwwO2lbYT4+MF09aVtiPj4wXXwwfWE9ZH1lbHNlIGJTKGEsYixjKXwwO3JldHVybiBhfDB9ZnVuY3Rpb24gZFMoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wLGY9MCxnPTA7ZD1hK2N8MDtpZigoY3wwKT49MjApe2I9YiYyNTU7Zj1hJjM7Zz1ifGI8PDh8Yjw8MTZ8Yjw8MjQ7ZT1kJn4zO2lmKGYpe2Y9YSs0LWZ8MDt3aGlsZSgoYXwwKTwoZnwwKSl7aVthPj4wXT1iO2E9YSsxfDB9fXdoaWxlKChhfDApPChlfDApKXtrW2E+PjJdPWc7YT1hKzR8MH19d2hpbGUoKGF8MCk8KGR8MCkpe2lbYT4+MF09YjthPWErMXwwfXJldHVybiBhLWN8MH1mdW5jdGlvbiBlUyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7aWYoKGN8MCk8MzIpe0w9Yjw8Y3woYSYoMTw8YyktMTw8MzItYyk+Pj4zMi1jO3JldHVybiBhPDxjfUw9YTw8Yy0zMjtyZXR1cm4gMH1mdW5jdGlvbiBmUyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7aWYoKGN8MCk8MzIpe0w9Yj4+YztyZXR1cm4gYT4+PmN8KGImKDE8PGMpLTEpPDwzMi1jfUw9KGJ8MCk8MD8tMTowO3JldHVybiBiPj5jLTMyfDB9ZnVuY3Rpb24gZ1MoYSl7YT1hfDA7dmFyIGI9MDtiPWlbdisoYSYyNTUpPj4wXXwwO2lmKChifDApPDgpcmV0dXJuIGJ8MDtiPWlbdisoYT4+OCYyNTUpPj4wXXwwO2lmKChifDApPDgpcmV0dXJuIGIrOHwwO2I9aVt2KyhhPj4xNiYyNTUpPj4wXXwwO2lmKChifDApPDgpcmV0dXJuIGIrMTZ8MDtyZXR1cm4gKGlbdisoYT4+PjI0KT4+MF18MCkrMjR8MH1mdW5jdGlvbiBoUyhhLGIpe2E9YXwwO2I9YnwwO3ZhciBjPTAsZD0wLGU9MCxmPTA7Zj1hJjY1NTM1O2U9YiY2NTUzNTtjPWhhKGUsZil8MDtkPWE+Pj4xNjthPShjPj4+MTYpKyhoYShlLGQpfDApfDA7ZT1iPj4+MTY7Yj1oYShlLGYpfDA7cmV0dXJuIChMPShhPj4+MTYpKyhoYShlLGQpfDApKygoKGEmNjU1MzUpK2J8MCk+Pj4xNil8MCxhK2I8PDE2fGMmNjU1MzV8MCl8MH1mdW5jdGlvbiBpUyhhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGk9MCxqPTA7aj1iPj4zMXwoKGJ8MCk8MD8tMTowKTw8MTtpPSgoYnwwKTwwPy0xOjApPj4zMXwoKGJ8MCk8MD8tMTowKTw8MTtmPWQ+PjMxfCgoZHwwKTwwPy0xOjApPDwxO2U9KChkfDApPDA/LTE6MCk+PjMxfCgoZHwwKTwwPy0xOjApPDwxO2g9X1Ioal5hLGleYixqLGkpfDA7Zz1MO2E9Zl5qO2I9ZV5pO3JldHVybiBfUigoblMoaCxnLF9SKGZeYyxlXmQsZixlKXwwLEwsMCl8MCleYSxMXmIsYSxiKXwwfWZ1bmN0aW9uIGpTKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaT0wLGo9MDtlPXI7cj1yKzE2fDA7aD1lfDA7Zz1iPj4zMXwoKGJ8MCk8MD8tMTowKTw8MTtmPSgoYnwwKTwwPy0xOjApPj4zMXwoKGJ8MCk8MD8tMTowKTw8MTtqPWQ+PjMxfCgoZHwwKTwwPy0xOjApPDwxO2k9KChkfDApPDA/LTE6MCk+PjMxfCgoZHwwKTwwPy0xOjApPDwxO2E9X1IoZ15hLGZeYixnLGYpfDA7Yj1MO25TKGEsYixfUihqXmMsaV5kLGosaSl8MCxMLGgpfDA7ZD1fUihrW2g+PjJdXmcsa1toKzQ+PjJdXmYsZyxmKXwwO2M9TDtyPWU7cmV0dXJuIChMPWMsZCl8MH1mdW5jdGlvbiBrUyhhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDt2YXIgZT0wLGY9MDtlPWE7Zj1jO2M9aFMoZSxmKXwwO2E9TDtyZXR1cm4gKEw9KGhhKGIsZil8MCkrKGhhKGQsZSl8MCkrYXxhJjAsY3wwfDApfDB9ZnVuY3Rpb24gbFMoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7cmV0dXJuIG5TKGEsYixjLGQsMCl8MH1mdW5jdGlvbiBtUyhhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDt2YXIgZT0wLGY9MDtmPXI7cj1yKzE2fDA7ZT1mfDA7blMoYSxiLGMsZCxlKXwwO3I9ZjtyZXR1cm4gKEw9a1tlKzQ+PjJdfDAsa1tlPj4yXXwwKXwwfWZ1bmN0aW9uIG5TKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGk9MCxqPTAsbD0wLG09MCxuPTAsbz0wLHA9MDtsPWE7aT1iO2o9aTtnPWM7bj1kO2g9bjtpZighail7Zj0oZXwwKSE9MDtpZighaCl7aWYoZil7a1tlPj4yXT0obD4+PjApJShnPj4+MCk7a1tlKzQ+PjJdPTB9bj0wO2U9KGw+Pj4wKS8oZz4+PjApPj4+MDtyZXR1cm4gKEw9bixlKXwwfWVsc2V7aWYoIWYpe249MDtlPTA7cmV0dXJuIChMPW4sZSl8MH1rW2U+PjJdPWF8MDtrW2UrND4+Ml09YiYwO249MDtlPTA7cmV0dXJuIChMPW4sZSl8MH19Zj0oaHwwKT09MDtkbyBpZihnKXtpZighZil7Zj0oamEoaHwwKXwwKS0oamEoanwwKXwwKXwwO2lmKGY+Pj4wPD0zMSl7bT1mKzF8MDtoPTMxLWZ8MDtiPWYtMzE+PjMxO2c9bTthPWw+Pj4obT4+PjApJmJ8ajw8aDtiPWo+Pj4obT4+PjApJmI7Zj0wO2g9bDw8aDticmVha31pZighZSl7bj0wO2U9MDtyZXR1cm4gKEw9bixlKXwwfWtbZT4+Ml09YXwwO2tbZSs0Pj4yXT1pfGImMDtuPTA7ZT0wO3JldHVybiAoTD1uLGUpfDB9Zj1nLTF8MDtpZihmJmcpe2g9KGphKGd8MCl8MCkrMzMtKGphKGp8MCl8MCl8MDtwPTY0LWh8MDttPTMyLWh8MDtpPW0+PjMxO289aC0zMnwwO2I9bz4+MzE7Zz1oO2E9bS0xPj4zMSZqPj4+KG8+Pj4wKXwoajw8bXxsPj4+KGg+Pj4wKSkmYjtiPWImaj4+PihoPj4+MCk7Zj1sPDxwJmk7aD0oajw8cHxsPj4+KG8+Pj4wKSkmaXxsPDxtJmgtMzM+PjMxO2JyZWFrfWlmKGUpe2tbZT4+Ml09ZiZsO2tbZSs0Pj4yXT0wfWlmKChnfDApPT0xKXtvPWl8YiYwO3A9YXwwfDA7cmV0dXJuIChMPW8scCl8MH1lbHNle3A9Z1MoZ3wwKXwwO289aj4+PihwPj4+MCl8MDtwPWo8PDMyLXB8bD4+PihwPj4+MCl8MDtyZXR1cm4gKEw9byxwKXwwfX1lbHNle2lmKGYpe2lmKGUpe2tbZT4+Ml09KGo+Pj4wKSUoZz4+PjApO2tbZSs0Pj4yXT0wfW89MDtwPShqPj4+MCkvKGc+Pj4wKT4+PjA7cmV0dXJuIChMPW8scCl8MH1pZighbCl7aWYoZSl7a1tlPj4yXT0wO2tbZSs0Pj4yXT0oaj4+PjApJShoPj4+MCl9bz0wO3A9KGo+Pj4wKS8oaD4+PjApPj4+MDtyZXR1cm4gKEw9byxwKXwwfWY9aC0xfDA7aWYoIShmJmgpKXtpZihlKXtrW2U+PjJdPWF8MDtrW2UrND4+Ml09ZiZqfGImMH1vPTA7cD1qPj4+KChnUyhofDApfDApPj4+MCk7cmV0dXJuIChMPW8scCl8MH1mPShqYShofDApfDApLShqYShqfDApfDApfDA7aWYoZj4+PjA8PTMwKXtiPWYrMXwwO2g9MzEtZnwwO2c9YjthPWo8PGh8bD4+PihiPj4+MCk7Yj1qPj4+KGI+Pj4wKTtmPTA7aD1sPDxoO2JyZWFrfWlmKCFlKXtvPTA7cD0wO3JldHVybiAoTD1vLHApfDB9a1tlPj4yXT1hfDA7a1tlKzQ+PjJdPWl8YiYwO289MDtwPTA7cmV0dXJuIChMPW8scCl8MH13aGlsZSgwKTtpZighZyl7aj1oO2k9MDtoPTB9ZWxzZXttPWN8MHwwO2w9bnxkJjA7aj0kUihtfDAsbHwwLC0xLC0xKXwwO2M9TDtpPWg7aD0wO2Rve2Q9aTtpPWY+Pj4zMXxpPDwxO2Y9aHxmPDwxO2Q9YTw8MXxkPj4+MzF8MDtuPWE+Pj4zMXxiPDwxfDA7X1IoaixjLGQsbil8MDtwPUw7bz1wPj4zMXwoKHB8MCk8MD8tMTowKTw8MTtoPW8mMTthPV9SKGQsbixvJm0sKCgocHwwKTwwPy0xOjApPj4zMXwoKHB8MCk8MD8tMTowKTw8MSkmbCl8MDtiPUw7Zz1nLTF8MH13aGlsZSgoZ3wwKSE9MCk7aj1pO2k9MH1nPTA7aWYoZSl7a1tlPj4yXT1hO2tbZSs0Pj4yXT1ifW89KGZ8MCk+Pj4zMXwoanxnKTw8MXwoZzw8MXxmPj4+MzEpJjB8aTtwPShmPDwxfDA+Pj4zMSkmLTJ8aDtyZXR1cm4gKEw9byxwKXwwfWZ1bmN0aW9uIG9TKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3JldHVybiBZYlthJjI1NV0oYnwwLGN8MCxkfDApfDB9ZnVuY3Rpb24gcFMoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3JldHVybiBuYSgwLGF8MCxifDAsY3wwKXwwfWZ1bmN0aW9uIHFTKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtyZXR1cm4gbmEoMSxhfDAsYnwwLGN8MCl8MH1mdW5jdGlvbiByUyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7cmV0dXJuIG5hKDIsYXwwLGJ8MCxjfDApfDB9ZnVuY3Rpb24gc1MoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3JldHVybiBuYSgzLGF8MCxifDAsY3wwKXwwfWZ1bmN0aW9uIHRTKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtyZXR1cm4gbmEoNCxhfDAsYnwwLGN8MCl8MH1mdW5jdGlvbiB1UyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7cmV0dXJuIG5hKDUsYXwwLGJ8MCxjfDApfDB9ZnVuY3Rpb24gdlMoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3JldHVybiBuYSg2LGF8MCxifDAsY3wwKXwwfWZ1bmN0aW9uIHdTKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtyZXR1cm4gbmEoNyxhfDAsYnwwLGN8MCl8MH1mdW5jdGlvbiB4UyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7cmV0dXJuIG5hKDgsYXwwLGJ8MCxjfDApfDB9ZnVuY3Rpb24geVMoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3JldHVybiBuYSg5LGF8MCxifDAsY3wwKXwwfWZ1bmN0aW9uIHpTKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtyZXR1cm4gbmEoMTAsYXwwLGJ8MCxjfDApfDB9ZnVuY3Rpb24gQVMoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3JldHVybiBuYSgxMSxhfDAsYnwwLGN8MCl8MH1mdW5jdGlvbiBCUyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7cmV0dXJuIG5hKDEyLGF8MCxifDAsY3wwKXwwfWZ1bmN0aW9uIENTKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtyZXR1cm4gbmEoMTMsYXwwLGJ8MCxjfDApfDB9ZnVuY3Rpb24gRFMoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3JldHVybiBuYSgxNCxhfDAsYnwwLGN8MCl8MH1mdW5jdGlvbiBFUyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7cmV0dXJuIG5hKDE1LGF8MCxifDAsY3wwKXwwfWZ1bmN0aW9uIEZTKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtyZXR1cm4gbmEoMTYsYXwwLGJ8MCxjfDApfDB9ZnVuY3Rpb24gR1MoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3JldHVybiBuYSgxNyxhfDAsYnwwLGN8MCl8MH1mdW5jdGlvbiBIUyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7cmV0dXJuIG5hKDE4LGF8MCxifDAsY3wwKXwwfWZ1bmN0aW9uIElTKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtyZXR1cm4gbmEoMTksYXwwLGJ8MCxjfDApfDB9ZnVuY3Rpb24gSlMoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3JldHVybiBuYSgyMCxhfDAsYnwwLGN8MCl8MH1mdW5jdGlvbiBLUyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7cmV0dXJuIG5hKDIxLGF8MCxifDAsY3wwKXwwfWZ1bmN0aW9uIExTKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtyZXR1cm4gbmEoMjIsYXwwLGJ8MCxjfDApfDB9ZnVuY3Rpb24gTVMoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3JldHVybiBuYSgyMyxhfDAsYnwwLGN8MCl8MH1mdW5jdGlvbiBOUyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7cmV0dXJuIG5hKDI0LGF8MCxifDAsY3wwKXwwfWZ1bmN0aW9uIE9TKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtyZXR1cm4gbmEoMjUsYXwwLGJ8MCxjfDApfDB9ZnVuY3Rpb24gUFMoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3JldHVybiBuYSgyNixhfDAsYnwwLGN8MCl8MH1mdW5jdGlvbiBRUyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7cmV0dXJuIG5hKDI3LGF8MCxifDAsY3wwKXwwfWZ1bmN0aW9uIFJTKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtyZXR1cm4gbmEoMjgsYXwwLGJ8MCxjfDApfDB9ZnVuY3Rpb24gU1MoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3JldHVybiBuYSgyOSxhfDAsYnwwLGN8MCl8MH1mdW5jdGlvbiBUUyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7cmV0dXJuIG5hKDMwLGF8MCxifDAsY3wwKXwwfWZ1bmN0aW9uIFVTKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtyZXR1cm4gbmEoMzEsYXwwLGJ8MCxjfDApfDB9ZnVuY3Rpb24gVlMoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3JldHVybiBuYSgzMixhfDAsYnwwLGN8MCl8MH1mdW5jdGlvbiBXUyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7cmV0dXJuIG5hKDMzLGF8MCxifDAsY3wwKXwwfWZ1bmN0aW9uIFhTKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtyZXR1cm4gbmEoMzQsYXwwLGJ8MCxjfDApfDB9ZnVuY3Rpb24gWVMoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3JldHVybiBuYSgzNSxhfDAsYnwwLGN8MCl8MH1mdW5jdGlvbiBaUyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7cmV0dXJuIG5hKDM2LGF8MCxifDAsY3wwKXwwfWZ1bmN0aW9uIF9TKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtyZXR1cm4gbmEoMzcsYXwwLGJ8MCxjfDApfDB9ZnVuY3Rpb24gJFMoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3JldHVybiBuYSgzOCxhfDAsYnwwLGN8MCl8MH1mdW5jdGlvbiBhVChhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7cmV0dXJuIG5hKDM5LGF8MCxifDAsY3wwKXwwfWZ1bmN0aW9uIGJUKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtyZXR1cm4gbmEoNDAsYXwwLGJ8MCxjfDApfDB9ZnVuY3Rpb24gY1QoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3JldHVybiBuYSg0MSxhfDAsYnwwLGN8MCl8MH1mdW5jdGlvbiBkVChhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7cmV0dXJuIG5hKDQyLGF8MCxifDAsY3wwKXwwfWZ1bmN0aW9uIGVUKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtyZXR1cm4gbmEoNDMsYXwwLGJ8MCxjfDApfDB9ZnVuY3Rpb24gZlQoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3JldHVybiBuYSg0NCxhfDAsYnwwLGN8MCl8MH1mdW5jdGlvbiBnVChhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7cmV0dXJuIG5hKDQ1LGF8MCxifDAsY3wwKXwwfWZ1bmN0aW9uIGhUKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtyZXR1cm4gbmEoNDYsYXwwLGJ8MCxjfDApfDB9ZnVuY3Rpb24gaVQoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3JldHVybiBuYSg0NyxhfDAsYnwwLGN8MCl8MH1mdW5jdGlvbiBqVChhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7cmV0dXJuIG5hKDQ4LGF8MCxifDAsY3wwKXwwfWZ1bmN0aW9uIGtUKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtyZXR1cm4gbmEoNDksYXwwLGJ8MCxjfDApfDB9ZnVuY3Rpb24gbFQoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3JldHVybiBuYSg1MCxhfDAsYnwwLGN8MCl8MH1mdW5jdGlvbiBtVChhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7cmV0dXJuIG5hKDUxLGF8MCxifDAsY3wwKXwwfWZ1bmN0aW9uIG5UKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtyZXR1cm4gbmEoNTIsYXwwLGJ8MCxjfDApfDB9ZnVuY3Rpb24gb1QoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3JldHVybiBuYSg1MyxhfDAsYnwwLGN8MCl8MH1mdW5jdGlvbiBwVChhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7cmV0dXJuIG5hKDU0LGF8MCxifDAsY3wwKXwwfWZ1bmN0aW9uIHFUKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtyZXR1cm4gbmEoNTUsYXwwLGJ8MCxjfDApfDB9ZnVuY3Rpb24gclQoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3JldHVybiBuYSg1NixhfDAsYnwwLGN8MCl8MH1mdW5jdGlvbiBzVChhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7cmV0dXJuIG5hKDU3LGF8MCxifDAsY3wwKXwwfWZ1bmN0aW9uIHRUKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtyZXR1cm4gbmEoNTgsYXwwLGJ8MCxjfDApfDB9ZnVuY3Rpb24gdVQoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3JldHVybiBuYSg1OSxhfDAsYnwwLGN8MCl8MH1mdW5jdGlvbiB2VChhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7cmV0dXJuIG5hKDYwLGF8MCxifDAsY3wwKXwwfWZ1bmN0aW9uIHdUKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtyZXR1cm4gbmEoNjEsYXwwLGJ8MCxjfDApfDB9ZnVuY3Rpb24geFQoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3JldHVybiBuYSg2MixhfDAsYnwwLGN8MCl8MH1mdW5jdGlvbiB5VChhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7cmV0dXJuIG5hKDYzLGF8MCxifDAsY3wwKXwwfWZ1bmN0aW9uIHpUKGEpe2E9YXwwO3JldHVybiBaYlthJjI1NV0oKXwwfWZ1bmN0aW9uIEFUKCl7cmV0dXJuIHBhKDApfDB9ZnVuY3Rpb24gQlQoKXtyZXR1cm4gcGEoMSl8MH1mdW5jdGlvbiBDVCgpe3JldHVybiBwYSgyKXwwfWZ1bmN0aW9uIERUKCl7cmV0dXJuIHBhKDMpfDB9ZnVuY3Rpb24gRVQoKXtyZXR1cm4gcGEoNCl8MH1mdW5jdGlvbiBGVCgpe3JldHVybiBwYSg1KXwwfWZ1bmN0aW9uIEdUKCl7cmV0dXJuIHBhKDYpfDB9ZnVuY3Rpb24gSFQoKXtyZXR1cm4gcGEoNyl8MH1mdW5jdGlvbiBJVCgpe3JldHVybiBwYSg4KXwwfWZ1bmN0aW9uIEpUKCl7cmV0dXJuIHBhKDkpfDB9ZnVuY3Rpb24gS1QoKXtyZXR1cm4gcGEoMTApfDB9ZnVuY3Rpb24gTFQoKXtyZXR1cm4gcGEoMTEpfDB9ZnVuY3Rpb24gTVQoKXtyZXR1cm4gcGEoMTIpfDB9ZnVuY3Rpb24gTlQoKXtyZXR1cm4gcGEoMTMpfDB9ZnVuY3Rpb24gT1QoKXtyZXR1cm4gcGEoMTQpfDB9ZnVuY3Rpb24gUFQoKXtyZXR1cm4gcGEoMTUpfDB9ZnVuY3Rpb24gUVQoKXtyZXR1cm4gcGEoMTYpfDB9ZnVuY3Rpb24gUlQoKXtyZXR1cm4gcGEoMTcpfDB9ZnVuY3Rpb24gU1QoKXtyZXR1cm4gcGEoMTgpfDB9ZnVuY3Rpb24gVFQoKXtyZXR1cm4gcGEoMTkpfDB9ZnVuY3Rpb24gVVQoKXtyZXR1cm4gcGEoMjApfDB9ZnVuY3Rpb24gVlQoKXtyZXR1cm4gcGEoMjEpfDB9ZnVuY3Rpb24gV1QoKXtyZXR1cm4gcGEoMjIpfDB9ZnVuY3Rpb24gWFQoKXtyZXR1cm4gcGEoMjMpfDB9ZnVuY3Rpb24gWVQoKXtyZXR1cm4gcGEoMjQpfDB9ZnVuY3Rpb24gWlQoKXtyZXR1cm4gcGEoMjUpfDB9ZnVuY3Rpb24gX1QoKXtyZXR1cm4gcGEoMjYpfDB9ZnVuY3Rpb24gJFQoKXtyZXR1cm4gcGEoMjcpfDB9ZnVuY3Rpb24gYVUoKXtyZXR1cm4gcGEoMjgpfDB9ZnVuY3Rpb24gYlUoKXtyZXR1cm4gcGEoMjkpfDB9ZnVuY3Rpb24gY1UoKXtyZXR1cm4gcGEoMzApfDB9ZnVuY3Rpb24gZFUoKXtyZXR1cm4gcGEoMzEpfDB9ZnVuY3Rpb24gZVUoKXtyZXR1cm4gcGEoMzIpfDB9ZnVuY3Rpb24gZlUoKXtyZXR1cm4gcGEoMzMpfDB9ZnVuY3Rpb24gZ1UoKXtyZXR1cm4gcGEoMzQpfDB9ZnVuY3Rpb24gaFUoKXtyZXR1cm4gcGEoMzUpfDB9ZnVuY3Rpb24gaVUoKXtyZXR1cm4gcGEoMzYpfDB9ZnVuY3Rpb24galUoKXtyZXR1cm4gcGEoMzcpfDB9ZnVuY3Rpb24ga1UoKXtyZXR1cm4gcGEoMzgpfDB9ZnVuY3Rpb24gbFUoKXtyZXR1cm4gcGEoMzkpfDB9ZnVuY3Rpb24gbVUoKXtyZXR1cm4gcGEoNDApfDB9ZnVuY3Rpb24gblUoKXtyZXR1cm4gcGEoNDEpfDB9ZnVuY3Rpb24gb1UoKXtyZXR1cm4gcGEoNDIpfDB9ZnVuY3Rpb24gcFUoKXtyZXR1cm4gcGEoNDMpfDB9ZnVuY3Rpb24gcVUoKXtyZXR1cm4gcGEoNDQpfDB9ZnVuY3Rpb24gclUoKXtyZXR1cm4gcGEoNDUpfDB9ZnVuY3Rpb24gc1UoKXtyZXR1cm4gcGEoNDYpfDB9ZnVuY3Rpb24gdFUoKXtyZXR1cm4gcGEoNDcpfDB9ZnVuY3Rpb24gdVUoKXtyZXR1cm4gcGEoNDgpfDB9ZnVuY3Rpb24gdlUoKXtyZXR1cm4gcGEoNDkpfDB9ZnVuY3Rpb24gd1UoKXtyZXR1cm4gcGEoNTApfDB9ZnVuY3Rpb24geFUoKXtyZXR1cm4gcGEoNTEpfDB9ZnVuY3Rpb24geVUoKXtyZXR1cm4gcGEoNTIpfDB9ZnVuY3Rpb24gelUoKXtyZXR1cm4gcGEoNTMpfDB9ZnVuY3Rpb24gQVUoKXtyZXR1cm4gcGEoNTQpfDB9ZnVuY3Rpb24gQlUoKXtyZXR1cm4gcGEoNTUpfDB9ZnVuY3Rpb24gQ1UoKXtyZXR1cm4gcGEoNTYpfDB9ZnVuY3Rpb24gRFUoKXtyZXR1cm4gcGEoNTcpfDB9ZnVuY3Rpb24gRVUoKXtyZXR1cm4gcGEoNTgpfDB9ZnVuY3Rpb24gRlUoKXtyZXR1cm4gcGEoNTkpfDB9ZnVuY3Rpb24gR1UoKXtyZXR1cm4gcGEoNjApfDB9ZnVuY3Rpb24gSFUoKXtyZXR1cm4gcGEoNjEpfDB9ZnVuY3Rpb24gSVUoKXtyZXR1cm4gcGEoNjIpfDB9ZnVuY3Rpb24gSlUoKXtyZXR1cm4gcGEoNjMpfDB9ZnVuY3Rpb24gS1UoYSxiKXthPWF8MDtiPWJ8MDtfYlthJjI1NV0oYnwwKX1mdW5jdGlvbiBMVShhKXthPWF8MDtyYSgwLGF8MCl9ZnVuY3Rpb24gTVUoYSl7YT1hfDA7cmEoMSxhfDApfWZ1bmN0aW9uIE5VKGEpe2E9YXwwO3JhKDIsYXwwKX1mdW5jdGlvbiBPVShhKXthPWF8MDtyYSgzLGF8MCl9ZnVuY3Rpb24gUFUoYSl7YT1hfDA7cmEoNCxhfDApfWZ1bmN0aW9uIFFVKGEpe2E9YXwwO3JhKDUsYXwwKX1mdW5jdGlvbiBSVShhKXthPWF8MDtyYSg2LGF8MCl9ZnVuY3Rpb24gU1UoYSl7YT1hfDA7cmEoNyxhfDApfWZ1bmN0aW9uIFRVKGEpe2E9YXwwO3JhKDgsYXwwKX1mdW5jdGlvbiBVVShhKXthPWF8MDtyYSg5LGF8MCl9ZnVuY3Rpb24gVlUoYSl7YT1hfDA7cmEoMTAsYXwwKX1mdW5jdGlvbiBXVShhKXthPWF8MDtyYSgxMSxhfDApfWZ1bmN0aW9uIFhVKGEpe2E9YXwwO3JhKDEyLGF8MCl9ZnVuY3Rpb24gWVUoYSl7YT1hfDA7cmEoMTMsYXwwKX1mdW5jdGlvbiBaVShhKXthPWF8MDtyYSgxNCxhfDApfWZ1bmN0aW9uIF9VKGEpe2E9YXwwO3JhKDE1LGF8MCl9ZnVuY3Rpb24gJFUoYSl7YT1hfDA7cmEoMTYsYXwwKX1mdW5jdGlvbiBhVihhKXthPWF8MDtyYSgxNyxhfDApfWZ1bmN0aW9uIGJWKGEpe2E9YXwwO3JhKDE4LGF8MCl9ZnVuY3Rpb24gY1YoYSl7YT1hfDA7cmEoMTksYXwwKX1mdW5jdGlvbiBkVihhKXthPWF8MDtyYSgyMCxhfDApfWZ1bmN0aW9uIGVWKGEpe2E9YXwwO3JhKDIxLGF8MCl9ZnVuY3Rpb24gZlYoYSl7YT1hfDA7cmEoMjIsYXwwKX1mdW5jdGlvbiBnVihhKXthPWF8MDtyYSgyMyxhfDApfWZ1bmN0aW9uIGhWKGEpe2E9YXwwO3JhKDI0LGF8MCl9ZnVuY3Rpb24gaVYoYSl7YT1hfDA7cmEoMjUsYXwwKX1mdW5jdGlvbiBqVihhKXthPWF8MDtyYSgyNixhfDApfWZ1bmN0aW9uIGtWKGEpe2E9YXwwO3JhKDI3LGF8MCl9ZnVuY3Rpb24gbFYoYSl7YT1hfDA7cmEoMjgsYXwwKX1mdW5jdGlvbiBtVihhKXthPWF8MDtyYSgyOSxhfDApfWZ1bmN0aW9uIG5WKGEpe2E9YXwwO3JhKDMwLGF8MCl9ZnVuY3Rpb24gb1YoYSl7YT1hfDA7cmEoMzEsYXwwKX1mdW5jdGlvbiBwVihhKXthPWF8MDtyYSgzMixhfDApfWZ1bmN0aW9uIHFWKGEpe2E9YXwwO3JhKDMzLGF8MCl9ZnVuY3Rpb24gclYoYSl7YT1hfDA7cmEoMzQsYXwwKX1mdW5jdGlvbiBzVihhKXthPWF8MDtyYSgzNSxhfDApfWZ1bmN0aW9uIHRWKGEpe2E9YXwwO3JhKDM2LGF8MCl9ZnVuY3Rpb24gdVYoYSl7YT1hfDA7cmEoMzcsYXwwKX1mdW5jdGlvbiB2VihhKXthPWF8MDtyYSgzOCxhfDApfWZ1bmN0aW9uIHdWKGEpe2E9YXwwO3JhKDM5LGF8MCl9ZnVuY3Rpb24geFYoYSl7YT1hfDA7cmEoNDAsYXwwKX1mdW5jdGlvbiB5VihhKXthPWF8MDtyYSg0MSxhfDApfWZ1bmN0aW9uIHpWKGEpe2E9YXwwO3JhKDQyLGF8MCl9ZnVuY3Rpb24gQVYoYSl7YT1hfDA7cmEoNDMsYXwwKX1mdW5jdGlvbiBCVihhKXthPWF8MDtyYSg0NCxhfDApfWZ1bmN0aW9uIENWKGEpe2E9YXwwO3JhKDQ1LGF8MCl9ZnVuY3Rpb24gRFYoYSl7YT1hfDA7cmEoNDYsYXwwKX1mdW5jdGlvbiBFVihhKXthPWF8MDtyYSg0NyxhfDApfWZ1bmN0aW9uIEZWKGEpe2E9YXwwO3JhKDQ4LGF8MCl9ZnVuY3Rpb24gR1YoYSl7YT1hfDA7cmEoNDksYXwwKX1mdW5jdGlvbiBIVihhKXthPWF8MDtyYSg1MCxhfDApfWZ1bmN0aW9uIElWKGEpe2E9YXwwO3JhKDUxLGF8MCl9ZnVuY3Rpb24gSlYoYSl7YT1hfDA7cmEoNTIsYXwwKX1mdW5jdGlvbiBLVihhKXthPWF8MDtyYSg1MyxhfDApfWZ1bmN0aW9uIExWKGEpe2E9YXwwO3JhKDU0LGF8MCl9ZnVuY3Rpb24gTVYoYSl7YT1hfDA7cmEoNTUsYXwwKX1mdW5jdGlvbiBOVihhKXthPWF8MDtyYSg1NixhfDApfWZ1bmN0aW9uIE9WKGEpe2E9YXwwO3JhKDU3LGF8MCl9ZnVuY3Rpb24gUFYoYSl7YT1hfDA7cmEoNTgsYXwwKX1mdW5jdGlvbiBRVihhKXthPWF8MDtyYSg1OSxhfDApfWZ1bmN0aW9uIFJWKGEpe2E9YXwwO3JhKDYwLGF8MCl9ZnVuY3Rpb24gU1YoYSl7YT1hfDA7cmEoNjEsYXwwKX1mdW5jdGlvbiBUVihhKXthPWF8MDtyYSg2MixhfDApfWZ1bmN0aW9uIFVWKGEpe2E9YXwwO3JhKDYzLGF8MCl9ZnVuY3Rpb24gVlYoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwOyRiW2EmMjU1XShifDAsY3wwKX1mdW5jdGlvbiBXVihhLGIpe2E9YXwwO2I9YnwwO3RhKDAsYXwwLGJ8MCl9ZnVuY3Rpb24gWFYoYSxiKXthPWF8MDtiPWJ8MDt0YSgxLGF8MCxifDApfWZ1bmN0aW9uIFlWKGEsYil7YT1hfDA7Yj1ifDA7dGEoMixhfDAsYnwwKX1mdW5jdGlvbiBaVihhLGIpe2E9YXwwO2I9YnwwO3RhKDMsYXwwLGJ8MCl9ZnVuY3Rpb24gX1YoYSxiKXthPWF8MDtiPWJ8MDt0YSg0LGF8MCxifDApfWZ1bmN0aW9uICRWKGEsYil7YT1hfDA7Yj1ifDA7dGEoNSxhfDAsYnwwKX1mdW5jdGlvbiBhVyhhLGIpe2E9YXwwO2I9YnwwO3RhKDYsYXwwLGJ8MCl9ZnVuY3Rpb24gYlcoYSxiKXthPWF8MDtiPWJ8MDt0YSg3LGF8MCxifDApfWZ1bmN0aW9uIGNXKGEsYil7YT1hfDA7Yj1ifDA7dGEoOCxhfDAsYnwwKX1mdW5jdGlvbiBkVyhhLGIpe2E9YXwwO2I9YnwwO3RhKDksYXwwLGJ8MCl9ZnVuY3Rpb24gZVcoYSxiKXthPWF8MDtiPWJ8MDt0YSgxMCxhfDAsYnwwKX1mdW5jdGlvbiBmVyhhLGIpe2E9YXwwO2I9YnwwO3RhKDExLGF8MCxifDApfWZ1bmN0aW9uIGdXKGEsYil7YT1hfDA7Yj1ifDA7dGEoMTIsYXwwLGJ8MCl9ZnVuY3Rpb24gaFcoYSxiKXthPWF8MDtiPWJ8MDt0YSgxMyxhfDAsYnwwKX1mdW5jdGlvbiBpVyhhLGIpe2E9YXwwO2I9YnwwO3RhKDE0LGF8MCxifDApfWZ1bmN0aW9uIGpXKGEsYil7YT1hfDA7Yj1ifDA7dGEoMTUsYXwwLGJ8MCl9ZnVuY3Rpb24ga1coYSxiKXthPWF8MDtiPWJ8MDt0YSgxNixhfDAsYnwwKX1mdW5jdGlvbiBsVyhhLGIpe2E9YXwwO2I9YnwwO3RhKDE3LGF8MCxifDApfWZ1bmN0aW9uIG1XKGEsYil7YT1hfDA7Yj1ifDA7dGEoMTgsYXwwLGJ8MCl9ZnVuY3Rpb24gblcoYSxiKXthPWF8MDtiPWJ8MDt0YSgxOSxhfDAsYnwwKX1mdW5jdGlvbiBvVyhhLGIpe2E9YXwwO2I9YnwwO3RhKDIwLGF8MCxifDApfWZ1bmN0aW9uIHBXKGEsYil7YT1hfDA7Yj1ifDA7dGEoMjEsYXwwLGJ8MCl9ZnVuY3Rpb24gcVcoYSxiKXthPWF8MDtiPWJ8MDt0YSgyMixhfDAsYnwwKX1mdW5jdGlvbiByVyhhLGIpe2E9YXwwO2I9YnwwO3RhKDIzLGF8MCxifDApfWZ1bmN0aW9uIHNXKGEsYil7YT1hfDA7Yj1ifDA7dGEoMjQsYXwwLGJ8MCl9ZnVuY3Rpb24gdFcoYSxiKXthPWF8MDtiPWJ8MDt0YSgyNSxhfDAsYnwwKX1mdW5jdGlvbiB1VyhhLGIpe2E9YXwwO2I9YnwwO3RhKDI2LGF8MCxifDApfWZ1bmN0aW9uIHZXKGEsYil7YT1hfDA7Yj1ifDA7dGEoMjcsYXwwLGJ8MCl9ZnVuY3Rpb24gd1coYSxiKXthPWF8MDtiPWJ8MDt0YSgyOCxhfDAsYnwwKX1mdW5jdGlvbiB4VyhhLGIpe2E9YXwwO2I9YnwwO3RhKDI5LGF8MCxifDApfWZ1bmN0aW9uIHlXKGEsYil7YT1hfDA7Yj1ifDA7dGEoMzAsYXwwLGJ8MCl9ZnVuY3Rpb24gelcoYSxiKXthPWF8MDtiPWJ8MDt0YSgzMSxhfDAsYnwwKX1mdW5jdGlvbiBBVyhhLGIpe2E9YXwwO2I9YnwwO3RhKDMyLGF8MCxifDApfWZ1bmN0aW9uIEJXKGEsYil7YT1hfDA7Yj1ifDA7dGEoMzMsYXwwLGJ8MCl9ZnVuY3Rpb24gQ1coYSxiKXthPWF8MDtiPWJ8MDt0YSgzNCxhfDAsYnwwKX1mdW5jdGlvbiBEVyhhLGIpe2E9YXwwO2I9YnwwO3RhKDM1LGF8MCxifDApfWZ1bmN0aW9uIEVXKGEsYil7YT1hfDA7Yj1ifDA7dGEoMzYsYXwwLGJ8MCl9ZnVuY3Rpb24gRlcoYSxiKXthPWF8MDtiPWJ8MDt0YSgzNyxhfDAsYnwwKX1mdW5jdGlvbiBHVyhhLGIpe2E9YXwwO2I9YnwwO3RhKDM4LGF8MCxifDApfWZ1bmN0aW9uIEhXKGEsYil7YT1hfDA7Yj1ifDA7dGEoMzksYXwwLGJ8MCl9ZnVuY3Rpb24gSVcoYSxiKXthPWF8MDtiPWJ8MDt0YSg0MCxhfDAsYnwwKX1mdW5jdGlvbiBKVyhhLGIpe2E9YXwwO2I9YnwwO3RhKDQxLGF8MCxifDApfWZ1bmN0aW9uIEtXKGEsYil7YT1hfDA7Yj1ifDA7dGEoNDIsYXwwLGJ8MCl9ZnVuY3Rpb24gTFcoYSxiKXthPWF8MDtiPWJ8MDt0YSg0MyxhfDAsYnwwKX1mdW5jdGlvbiBNVyhhLGIpe2E9YXwwO2I9YnwwO3RhKDQ0LGF8MCxifDApfWZ1bmN0aW9uIE5XKGEsYil7YT1hfDA7Yj1ifDA7dGEoNDUsYXwwLGJ8MCl9ZnVuY3Rpb24gT1coYSxiKXthPWF8MDtiPWJ8MDt0YSg0NixhfDAsYnwwKX1mdW5jdGlvbiBQVyhhLGIpe2E9YXwwO2I9YnwwO3RhKDQ3LGF8MCxifDApfWZ1bmN0aW9uIFFXKGEsYil7YT1hfDA7Yj1ifDA7dGEoNDgsYXwwLGJ8MCl9ZnVuY3Rpb24gUlcoYSxiKXthPWF8MDtiPWJ8MDt0YSg0OSxhfDAsYnwwKX1mdW5jdGlvbiBTVyhhLGIpe2E9YXwwO2I9YnwwO3RhKDUwLGF8MCxifDApfWZ1bmN0aW9uIFRXKGEsYil7YT1hfDA7Yj1ifDA7dGEoNTEsYXwwLGJ8MCl9ZnVuY3Rpb24gVVcoYSxiKXthPWF8MDtiPWJ8MDt0YSg1MixhfDAsYnwwKX1mdW5jdGlvbiBWVyhhLGIpe2E9YXwwO2I9YnwwO3RhKDUzLGF8MCxifDApfWZ1bmN0aW9uIFdXKGEsYil7YT1hfDA7Yj1ifDA7dGEoNTQsYXwwLGJ8MCl9ZnVuY3Rpb24gWFcoYSxiKXthPWF8MDtiPWJ8MDt0YSg1NSxhfDAsYnwwKX1mdW5jdGlvbiBZVyhhLGIpe2E9YXwwO2I9YnwwO3RhKDU2LGF8MCxifDApfWZ1bmN0aW9uIFpXKGEsYil7YT1hfDA7Yj1ifDA7dGEoNTcsYXwwLGJ8MCl9ZnVuY3Rpb24gX1coYSxiKXthPWF8MDtiPWJ8MDt0YSg1OCxhfDAsYnwwKX1mdW5jdGlvbiAkVyhhLGIpe2E9YXwwO2I9YnwwO3RhKDU5LGF8MCxifDApfWZ1bmN0aW9uIGFYKGEsYil7YT1hfDA7Yj1ifDA7dGEoNjAsYXwwLGJ8MCl9ZnVuY3Rpb24gYlgoYSxiKXthPWF8MDtiPWJ8MDt0YSg2MSxhfDAsYnwwKX1mdW5jdGlvbiBjWChhLGIpe2E9YXwwO2I9YnwwO3RhKDYyLGF8MCxifDApfWZ1bmN0aW9uIGRYKGEsYil7YT1hfDA7Yj1ifDA7dGEoNjMsYXwwLGJ8MCl9ZnVuY3Rpb24gZVgoYSxiLGMsZCxlLGYsZyl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7cmV0dXJuIGFjW2EmMjU1XShifDAsY3wwLGR8MCxlfDAsZnwwLGd8MCl8MH1mdW5jdGlvbiBmWChhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7cmV0dXJuIHZhKDAsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfDB9ZnVuY3Rpb24gZ1goYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3JldHVybiB2YSgxLGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKXwwfWZ1bmN0aW9uIGhYKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtyZXR1cm4gdmEoMixhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCl8MH1mdW5jdGlvbiBpWChhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7cmV0dXJuIHZhKDMsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfDB9ZnVuY3Rpb24galgoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3JldHVybiB2YSg0LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKXwwfWZ1bmN0aW9uIGtYKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtyZXR1cm4gdmEoNSxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCl8MH1mdW5jdGlvbiBsWChhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7cmV0dXJuIHZhKDYsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfDB9ZnVuY3Rpb24gbVgoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3JldHVybiB2YSg3LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKXwwfWZ1bmN0aW9uIG5YKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtyZXR1cm4gdmEoOCxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCl8MH1mdW5jdGlvbiBvWChhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7cmV0dXJuIHZhKDksYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfDB9ZnVuY3Rpb24gcFgoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3JldHVybiB2YSgxMCxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCl8MH1mdW5jdGlvbiBxWChhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7cmV0dXJuIHZhKDExLGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKXwwfWZ1bmN0aW9uIHJYKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtyZXR1cm4gdmEoMTIsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfDB9ZnVuY3Rpb24gc1goYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3JldHVybiB2YSgxMyxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCl8MH1mdW5jdGlvbiB0WChhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7cmV0dXJuIHZhKDE0LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKXwwfWZ1bmN0aW9uIHVYKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtyZXR1cm4gdmEoMTUsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfDB9ZnVuY3Rpb24gdlgoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3JldHVybiB2YSgxNixhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCl8MH1mdW5jdGlvbiB3WChhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7cmV0dXJuIHZhKDE3LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKXwwfWZ1bmN0aW9uIHhYKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtyZXR1cm4gdmEoMTgsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfDB9ZnVuY3Rpb24geVgoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3JldHVybiB2YSgxOSxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCl8MH1mdW5jdGlvbiB6WChhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7cmV0dXJuIHZhKDIwLGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKXwwfWZ1bmN0aW9uIEFYKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtyZXR1cm4gdmEoMjEsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfDB9ZnVuY3Rpb24gQlgoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3JldHVybiB2YSgyMixhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCl8MH1mdW5jdGlvbiBDWChhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7cmV0dXJuIHZhKDIzLGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKXwwfWZ1bmN0aW9uIERYKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtyZXR1cm4gdmEoMjQsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfDB9ZnVuY3Rpb24gRVgoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3JldHVybiB2YSgyNSxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCl8MH1mdW5jdGlvbiBGWChhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7cmV0dXJuIHZhKDI2LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKXwwfWZ1bmN0aW9uIEdYKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtyZXR1cm4gdmEoMjcsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfDB9ZnVuY3Rpb24gSFgoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3JldHVybiB2YSgyOCxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCl8MH1mdW5jdGlvbiBJWChhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7cmV0dXJuIHZhKDI5LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKXwwfWZ1bmN0aW9uIEpYKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtyZXR1cm4gdmEoMzAsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfDB9ZnVuY3Rpb24gS1goYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3JldHVybiB2YSgzMSxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCl8MH1mdW5jdGlvbiBMWChhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7cmV0dXJuIHZhKDMyLGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKXwwfWZ1bmN0aW9uIE1YKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtyZXR1cm4gdmEoMzMsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfDB9ZnVuY3Rpb24gTlgoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3JldHVybiB2YSgzNCxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCl8MH1mdW5jdGlvbiBPWChhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7cmV0dXJuIHZhKDM1LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKXwwfWZ1bmN0aW9uIFBYKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtyZXR1cm4gdmEoMzYsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfDB9ZnVuY3Rpb24gUVgoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3JldHVybiB2YSgzNyxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCl8MH1mdW5jdGlvbiBSWChhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7cmV0dXJuIHZhKDM4LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKXwwfWZ1bmN0aW9uIFNYKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtyZXR1cm4gdmEoMzksYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfDB9ZnVuY3Rpb24gVFgoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3JldHVybiB2YSg0MCxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCl8MH1mdW5jdGlvbiBVWChhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7cmV0dXJuIHZhKDQxLGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKXwwfWZ1bmN0aW9uIFZYKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtyZXR1cm4gdmEoNDIsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfDB9ZnVuY3Rpb24gV1goYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3JldHVybiB2YSg0MyxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCl8MH1mdW5jdGlvbiBYWChhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7cmV0dXJuIHZhKDQ0LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKXwwfWZ1bmN0aW9uIFlYKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtyZXR1cm4gdmEoNDUsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfDB9ZnVuY3Rpb24gWlgoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3JldHVybiB2YSg0NixhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCl8MH1mdW5jdGlvbiBfWChhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7cmV0dXJuIHZhKDQ3LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKXwwfWZ1bmN0aW9uICRYKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtyZXR1cm4gdmEoNDgsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfDB9ZnVuY3Rpb24gYVkoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3JldHVybiB2YSg0OSxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCl8MH1mdW5jdGlvbiBiWShhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7cmV0dXJuIHZhKDUwLGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKXwwfWZ1bmN0aW9uIGNZKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtyZXR1cm4gdmEoNTEsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfDB9ZnVuY3Rpb24gZFkoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3JldHVybiB2YSg1MixhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCl8MH1mdW5jdGlvbiBlWShhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7cmV0dXJuIHZhKDUzLGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKXwwfWZ1bmN0aW9uIGZZKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtyZXR1cm4gdmEoNTQsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfDB9ZnVuY3Rpb24gZ1koYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3JldHVybiB2YSg1NSxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCl8MH1mdW5jdGlvbiBoWShhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7cmV0dXJuIHZhKDU2LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKXwwfWZ1bmN0aW9uIGlZKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtyZXR1cm4gdmEoNTcsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfDB9ZnVuY3Rpb24galkoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3JldHVybiB2YSg1OCxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCl8MH1mdW5jdGlvbiBrWShhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7cmV0dXJuIHZhKDU5LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKXwwfWZ1bmN0aW9uIGxZKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtyZXR1cm4gdmEoNjAsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfDB9ZnVuY3Rpb24gbVkoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3JldHVybiB2YSg2MSxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCl8MH1mdW5jdGlvbiBuWShhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7cmV0dXJuIHZhKDYyLGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKXwwfWZ1bmN0aW9uIG9ZKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtyZXR1cm4gdmEoNjMsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfDB9ZnVuY3Rpb24gcFkoYSxiKXthPWF8MDtiPWJ8MDtyZXR1cm4gYmNbYSYyNTVdKGJ8MCl8MH1mdW5jdGlvbiBxWShhKXthPWF8MDtyZXR1cm4geGEoMCxhfDApfDB9ZnVuY3Rpb24gclkoYSl7YT1hfDA7cmV0dXJuIHhhKDEsYXwwKXwwfWZ1bmN0aW9uIHNZKGEpe2E9YXwwO3JldHVybiB4YSgyLGF8MCl8MH1mdW5jdGlvbiB0WShhKXthPWF8MDtyZXR1cm4geGEoMyxhfDApfDB9ZnVuY3Rpb24gdVkoYSl7YT1hfDA7cmV0dXJuIHhhKDQsYXwwKXwwfWZ1bmN0aW9uIHZZKGEpe2E9YXwwO3JldHVybiB4YSg1LGF8MCl8MH1mdW5jdGlvbiB3WShhKXthPWF8MDtyZXR1cm4geGEoNixhfDApfDB9ZnVuY3Rpb24geFkoYSl7YT1hfDA7cmV0dXJuIHhhKDcsYXwwKXwwfWZ1bmN0aW9uIHlZKGEpe2E9YXwwO3JldHVybiB4YSg4LGF8MCl8MH1mdW5jdGlvbiB6WShhKXthPWF8MDtyZXR1cm4geGEoOSxhfDApfDB9ZnVuY3Rpb24gQVkoYSl7YT1hfDA7cmV0dXJuIHhhKDEwLGF8MCl8MH1mdW5jdGlvbiBCWShhKXthPWF8MDtyZXR1cm4geGEoMTEsYXwwKXwwfWZ1bmN0aW9uIENZKGEpe2E9YXwwO3JldHVybiB4YSgxMixhfDApfDB9ZnVuY3Rpb24gRFkoYSl7YT1hfDA7cmV0dXJuIHhhKDEzLGF8MCl8MH1mdW5jdGlvbiBFWShhKXthPWF8MDtyZXR1cm4geGEoMTQsYXwwKXwwfWZ1bmN0aW9uIEZZKGEpe2E9YXwwO3JldHVybiB4YSgxNSxhfDApfDB9ZnVuY3Rpb24gR1koYSl7YT1hfDA7cmV0dXJuIHhhKDE2LGF8MCl8MH1mdW5jdGlvbiBIWShhKXthPWF8MDtyZXR1cm4geGEoMTcsYXwwKXwwfWZ1bmN0aW9uIElZKGEpe2E9YXwwO3JldHVybiB4YSgxOCxhfDApfDB9ZnVuY3Rpb24gSlkoYSl7YT1hfDA7cmV0dXJuIHhhKDE5LGF8MCl8MH1mdW5jdGlvbiBLWShhKXthPWF8MDtyZXR1cm4geGEoMjAsYXwwKXwwfWZ1bmN0aW9uIExZKGEpe2E9YXwwO3JldHVybiB4YSgyMSxhfDApfDB9ZnVuY3Rpb24gTVkoYSl7YT1hfDA7cmV0dXJuIHhhKDIyLGF8MCl8MH1mdW5jdGlvbiBOWShhKXthPWF8MDtyZXR1cm4geGEoMjMsYXwwKXwwfWZ1bmN0aW9uIE9ZKGEpe2E9YXwwO3JldHVybiB4YSgyNCxhfDApfDB9ZnVuY3Rpb24gUFkoYSl7YT1hfDA7cmV0dXJuIHhhKDI1LGF8MCl8MH1mdW5jdGlvbiBRWShhKXthPWF8MDtyZXR1cm4geGEoMjYsYXwwKXwwfWZ1bmN0aW9uIFJZKGEpe2E9YXwwO3JldHVybiB4YSgyNyxhfDApfDB9ZnVuY3Rpb24gU1koYSl7YT1hfDA7cmV0dXJuIHhhKDI4LGF8MCl8MH1mdW5jdGlvbiBUWShhKXthPWF8MDtyZXR1cm4geGEoMjksYXwwKXwwfWZ1bmN0aW9uIFVZKGEpe2E9YXwwO3JldHVybiB4YSgzMCxhfDApfDB9ZnVuY3Rpb24gVlkoYSl7YT1hfDA7cmV0dXJuIHhhKDMxLGF8MCl8MH1mdW5jdGlvbiBXWShhKXthPWF8MDtyZXR1cm4geGEoMzIsYXwwKXwwfWZ1bmN0aW9uIFhZKGEpe2E9YXwwO3JldHVybiB4YSgzMyxhfDApfDB9ZnVuY3Rpb24gWVkoYSl7YT1hfDA7cmV0dXJuIHhhKDM0LGF8MCl8MH1mdW5jdGlvbiBaWShhKXthPWF8MDtyZXR1cm4geGEoMzUsYXwwKXwwfWZ1bmN0aW9uIF9ZKGEpe2E9YXwwO3JldHVybiB4YSgzNixhfDApfDB9ZnVuY3Rpb24gJFkoYSl7YT1hfDA7cmV0dXJuIHhhKDM3LGF8MCl8MH1mdW5jdGlvbiBhWihhKXthPWF8MDtyZXR1cm4geGEoMzgsYXwwKXwwfWZ1bmN0aW9uIGJaKGEpe2E9YXwwO3JldHVybiB4YSgzOSxhfDApfDB9ZnVuY3Rpb24gY1ooYSl7YT1hfDA7cmV0dXJuIHhhKDQwLGF8MCl8MH1mdW5jdGlvbiBkWihhKXthPWF8MDtyZXR1cm4geGEoNDEsYXwwKXwwfWZ1bmN0aW9uIGVaKGEpe2E9YXwwO3JldHVybiB4YSg0MixhfDApfDB9ZnVuY3Rpb24gZlooYSl7YT1hfDA7cmV0dXJuIHhhKDQzLGF8MCl8MH1mdW5jdGlvbiBnWihhKXthPWF8MDtyZXR1cm4geGEoNDQsYXwwKXwwfWZ1bmN0aW9uIGhaKGEpe2E9YXwwO3JldHVybiB4YSg0NSxhfDApfDB9ZnVuY3Rpb24gaVooYSl7YT1hfDA7cmV0dXJuIHhhKDQ2LGF8MCl8MH1mdW5jdGlvbiBqWihhKXthPWF8MDtyZXR1cm4geGEoNDcsYXwwKXwwfWZ1bmN0aW9uIGtaKGEpe2E9YXwwO3JldHVybiB4YSg0OCxhfDApfDB9ZnVuY3Rpb24gbFooYSl7YT1hfDA7cmV0dXJuIHhhKDQ5LGF8MCl8MH1mdW5jdGlvbiBtWihhKXthPWF8MDtyZXR1cm4geGEoNTAsYXwwKXwwfWZ1bmN0aW9uIG5aKGEpe2E9YXwwO3JldHVybiB4YSg1MSxhfDApfDB9ZnVuY3Rpb24gb1ooYSl7YT1hfDA7cmV0dXJuIHhhKDUyLGF8MCl8MH1mdW5jdGlvbiBwWihhKXthPWF8MDtyZXR1cm4geGEoNTMsYXwwKXwwfWZ1bmN0aW9uIHFaKGEpe2E9YXwwO3JldHVybiB4YSg1NCxhfDApfDB9ZnVuY3Rpb24gclooYSl7YT1hfDA7cmV0dXJuIHhhKDU1LGF8MCl8MH1mdW5jdGlvbiBzWihhKXthPWF8MDtyZXR1cm4geGEoNTYsYXwwKXwwfWZ1bmN0aW9uIHRaKGEpe2E9YXwwO3JldHVybiB4YSg1NyxhfDApfDB9ZnVuY3Rpb24gdVooYSl7YT1hfDA7cmV0dXJuIHhhKDU4LGF8MCl8MH1mdW5jdGlvbiB2WihhKXthPWF8MDtyZXR1cm4geGEoNTksYXwwKXwwfWZ1bmN0aW9uIHdaKGEpe2E9YXwwO3JldHVybiB4YSg2MCxhfDApfDB9ZnVuY3Rpb24geFooYSl7YT1hfDA7cmV0dXJuIHhhKDYxLGF8MCl8MH1mdW5jdGlvbiB5WihhKXthPWF8MDtyZXR1cm4geGEoNjIsYXwwKXwwfWZ1bmN0aW9uIHpaKGEpe2E9YXwwO3JldHVybiB4YSg2MyxhfDApfDB9ZnVuY3Rpb24gQVooYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7Y2NbYSYyNTVdKGJ8MCxjfDAsZHwwKX1mdW5jdGlvbiBCWihhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7emEoMCxhfDAsYnwwLGN8MCl9ZnVuY3Rpb24gQ1ooYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3phKDEsYXwwLGJ8MCxjfDApfWZ1bmN0aW9uIERaKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt6YSgyLGF8MCxifDAsY3wwKX1mdW5jdGlvbiBFWihhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7emEoMyxhfDAsYnwwLGN8MCl9ZnVuY3Rpb24gRlooYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3phKDQsYXwwLGJ8MCxjfDApfWZ1bmN0aW9uIEdaKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt6YSg1LGF8MCxifDAsY3wwKX1mdW5jdGlvbiBIWihhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7emEoNixhfDAsYnwwLGN8MCl9ZnVuY3Rpb24gSVooYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3phKDcsYXwwLGJ8MCxjfDApfWZ1bmN0aW9uIEpaKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt6YSg4LGF8MCxifDAsY3wwKX1mdW5jdGlvbiBLWihhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7emEoOSxhfDAsYnwwLGN8MCl9ZnVuY3Rpb24gTFooYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3phKDEwLGF8MCxifDAsY3wwKX1mdW5jdGlvbiBNWihhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7emEoMTEsYXwwLGJ8MCxjfDApfWZ1bmN0aW9uIE5aKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt6YSgxMixhfDAsYnwwLGN8MCl9ZnVuY3Rpb24gT1ooYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3phKDEzLGF8MCxifDAsY3wwKX1mdW5jdGlvbiBQWihhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7emEoMTQsYXwwLGJ8MCxjfDApfWZ1bmN0aW9uIFFaKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt6YSgxNSxhfDAsYnwwLGN8MCl9ZnVuY3Rpb24gUlooYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3phKDE2LGF8MCxifDAsY3wwKX1mdW5jdGlvbiBTWihhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7emEoMTcsYXwwLGJ8MCxjfDApfWZ1bmN0aW9uIFRaKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt6YSgxOCxhfDAsYnwwLGN8MCl9ZnVuY3Rpb24gVVooYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3phKDE5LGF8MCxifDAsY3wwKX1mdW5jdGlvbiBWWihhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7emEoMjAsYXwwLGJ8MCxjfDApfWZ1bmN0aW9uIFdaKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt6YSgyMSxhfDAsYnwwLGN8MCl9ZnVuY3Rpb24gWFooYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3phKDIyLGF8MCxifDAsY3wwKX1mdW5jdGlvbiBZWihhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7emEoMjMsYXwwLGJ8MCxjfDApfWZ1bmN0aW9uIFpaKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt6YSgyNCxhfDAsYnwwLGN8MCl9ZnVuY3Rpb24gX1ooYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3phKDI1LGF8MCxifDAsY3wwKX1mdW5jdGlvbiAkWihhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7emEoMjYsYXwwLGJ8MCxjfDApfWZ1bmN0aW9uIGFfKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt6YSgyNyxhfDAsYnwwLGN8MCl9ZnVuY3Rpb24gYl8oYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3phKDI4LGF8MCxifDAsY3wwKX1mdW5jdGlvbiBjXyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7emEoMjksYXwwLGJ8MCxjfDApfWZ1bmN0aW9uIGRfKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt6YSgzMCxhfDAsYnwwLGN8MCl9ZnVuY3Rpb24gZV8oYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3phKDMxLGF8MCxifDAsY3wwKX1mdW5jdGlvbiBmXyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7emEoMzIsYXwwLGJ8MCxjfDApfWZ1bmN0aW9uIGdfKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt6YSgzMyxhfDAsYnwwLGN8MCl9ZnVuY3Rpb24gaF8oYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3phKDM0LGF8MCxifDAsY3wwKX1mdW5jdGlvbiBpXyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7emEoMzUsYXwwLGJ8MCxjfDApfWZ1bmN0aW9uIGpfKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt6YSgzNixhfDAsYnwwLGN8MCl9ZnVuY3Rpb24ga18oYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3phKDM3LGF8MCxifDAsY3wwKX1mdW5jdGlvbiBsXyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7emEoMzgsYXwwLGJ8MCxjfDApfWZ1bmN0aW9uIG1fKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt6YSgzOSxhfDAsYnwwLGN8MCl9ZnVuY3Rpb24gbl8oYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3phKDQwLGF8MCxifDAsY3wwKX1mdW5jdGlvbiBvXyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7emEoNDEsYXwwLGJ8MCxjfDApfWZ1bmN0aW9uIHBfKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt6YSg0MixhfDAsYnwwLGN8MCl9ZnVuY3Rpb24gcV8oYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3phKDQzLGF8MCxifDAsY3wwKX1mdW5jdGlvbiByXyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7emEoNDQsYXwwLGJ8MCxjfDApfWZ1bmN0aW9uIHNfKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt6YSg0NSxhfDAsYnwwLGN8MCl9ZnVuY3Rpb24gdF8oYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3phKDQ2LGF8MCxifDAsY3wwKX1mdW5jdGlvbiB1XyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7emEoNDcsYXwwLGJ8MCxjfDApfWZ1bmN0aW9uIHZfKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt6YSg0OCxhfDAsYnwwLGN8MCl9ZnVuY3Rpb24gd18oYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3phKDQ5LGF8MCxifDAsY3wwKX1mdW5jdGlvbiB4XyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7emEoNTAsYXwwLGJ8MCxjfDApfWZ1bmN0aW9uIHlfKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt6YSg1MSxhfDAsYnwwLGN8MCl9ZnVuY3Rpb24gel8oYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3phKDUyLGF8MCxifDAsY3wwKX1mdW5jdGlvbiBBXyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7emEoNTMsYXwwLGJ8MCxjfDApfWZ1bmN0aW9uIEJfKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt6YSg1NCxhfDAsYnwwLGN8MCl9ZnVuY3Rpb24gQ18oYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3phKDU1LGF8MCxifDAsY3wwKX1mdW5jdGlvbiBEXyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7emEoNTYsYXwwLGJ8MCxjfDApfWZ1bmN0aW9uIEVfKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt6YSg1NyxhfDAsYnwwLGN8MCl9ZnVuY3Rpb24gRl8oYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3phKDU4LGF8MCxifDAsY3wwKX1mdW5jdGlvbiBHXyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7emEoNTksYXwwLGJ8MCxjfDApfWZ1bmN0aW9uIEhfKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt6YSg2MCxhfDAsYnwwLGN8MCl9ZnVuY3Rpb24gSV8oYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3phKDYxLGF8MCxifDAsY3wwKX1mdW5jdGlvbiBKXyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7emEoNjIsYXwwLGJ8MCxjfDApfWZ1bmN0aW9uIEtfKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDt6YSg2MyxhfDAsYnwwLGN8MCl9ZnVuY3Rpb24gTF8oYSl7YT1hfDA7ZGNbYSYyNTVdKCl9ZnVuY3Rpb24gTV8oKXtCYSgwKX1mdW5jdGlvbiBOXygpe0JhKDEpfWZ1bmN0aW9uIE9fKCl7QmEoMil9ZnVuY3Rpb24gUF8oKXtCYSgzKX1mdW5jdGlvbiBRXygpe0JhKDQpfWZ1bmN0aW9uIFJfKCl7QmEoNSl9ZnVuY3Rpb24gU18oKXtCYSg2KX1mdW5jdGlvbiBUXygpe0JhKDcpfWZ1bmN0aW9uIFVfKCl7QmEoOCl9ZnVuY3Rpb24gVl8oKXtCYSg5KX1mdW5jdGlvbiBXXygpe0JhKDEwKX1mdW5jdGlvbiBYXygpe0JhKDExKX1mdW5jdGlvbiBZXygpe0JhKDEyKX1mdW5jdGlvbiBaXygpe0JhKDEzKX1mdW5jdGlvbiBfXygpe0JhKDE0KX1mdW5jdGlvbiAkXygpe0JhKDE1KX1mdW5jdGlvbiBhJCgpe0JhKDE2KX1mdW5jdGlvbiBiJCgpe0JhKDE3KX1mdW5jdGlvbiBjJCgpe0JhKDE4KX1mdW5jdGlvbiBkJCgpe0JhKDE5KX1mdW5jdGlvbiBlJCgpe0JhKDIwKX1mdW5jdGlvbiBmJCgpe0JhKDIxKX1mdW5jdGlvbiBnJCgpe0JhKDIyKX1mdW5jdGlvbiBoJCgpe0JhKDIzKX1mdW5jdGlvbiBpJCgpe0JhKDI0KX1mdW5jdGlvbiBqJCgpe0JhKDI1KX1mdW5jdGlvbiBrJCgpe0JhKDI2KX1mdW5jdGlvbiBsJCgpe0JhKDI3KX1mdW5jdGlvbiBtJCgpe0JhKDI4KX1mdW5jdGlvbiBuJCgpe0JhKDI5KX1mdW5jdGlvbiBvJCgpe0JhKDMwKX1mdW5jdGlvbiBwJCgpe0JhKDMxKX1mdW5jdGlvbiBxJCgpe0JhKDMyKX1mdW5jdGlvbiByJCgpe0JhKDMzKX1mdW5jdGlvbiBzJCgpe0JhKDM0KX1mdW5jdGlvbiB0JCgpe0JhKDM1KX1mdW5jdGlvbiB1JCgpe0JhKDM2KX1mdW5jdGlvbiB2JCgpe0JhKDM3KX1mdW5jdGlvbiB3JCgpe0JhKDM4KX1mdW5jdGlvbiB4JCgpe0JhKDM5KX1mdW5jdGlvbiB5JCgpe0JhKDQwKX1mdW5jdGlvbiB6JCgpe0JhKDQxKX1mdW5jdGlvbiBBJCgpe0JhKDQyKX1mdW5jdGlvbiBCJCgpe0JhKDQzKX1mdW5jdGlvbiBDJCgpe0JhKDQ0KX1mdW5jdGlvbiBEJCgpe0JhKDQ1KX1mdW5jdGlvbiBFJCgpe0JhKDQ2KX1mdW5jdGlvbiBGJCgpe0JhKDQ3KX1mdW5jdGlvbiBHJCgpe0JhKDQ4KX1mdW5jdGlvbiBIJCgpe0JhKDQ5KX1mdW5jdGlvbiBJJCgpe0JhKDUwKX1mdW5jdGlvbiBKJCgpe0JhKDUxKX1mdW5jdGlvbiBLJCgpe0JhKDUyKX1mdW5jdGlvbiBMJCgpe0JhKDUzKX1mdW5jdGlvbiBNJCgpe0JhKDU0KX1mdW5jdGlvbiBOJCgpe0JhKDU1KX1mdW5jdGlvbiBPJCgpe0JhKDU2KX1mdW5jdGlvbiBQJCgpe0JhKDU3KX1mdW5jdGlvbiBRJCgpe0JhKDU4KX1mdW5jdGlvbiBSJCgpe0JhKDU5KX1mdW5jdGlvbiBTJCgpe0JhKDYwKX1mdW5jdGlvbiBUJCgpe0JhKDYxKX1mdW5jdGlvbiBVJCgpe0JhKDYyKX1mdW5jdGlvbiBWJCgpe0JhKDYzKX1mdW5jdGlvbiBXJChhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3JldHVybiBlY1thJjI1NV0oYnwwLGN8MCxkfDAsZXwwKXwwfWZ1bmN0aW9uIFgkKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3JldHVybiBEYSgwLGF8MCxifDAsY3wwLGR8MCl8MH1mdW5jdGlvbiBZJChhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtyZXR1cm4gRGEoMSxhfDAsYnwwLGN8MCxkfDApfDB9ZnVuY3Rpb24gWiQoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7cmV0dXJuIERhKDIsYXwwLGJ8MCxjfDAsZHwwKXwwfWZ1bmN0aW9uIF8kKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3JldHVybiBEYSgzLGF8MCxifDAsY3wwLGR8MCl8MH1mdW5jdGlvbiAkJChhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtyZXR1cm4gRGEoNCxhfDAsYnwwLGN8MCxkfDApfDB9ZnVuY3Rpb24gYTAoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7cmV0dXJuIERhKDUsYXwwLGJ8MCxjfDAsZHwwKXwwfWZ1bmN0aW9uIGIwKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3JldHVybiBEYSg2LGF8MCxifDAsY3wwLGR8MCl8MH1mdW5jdGlvbiBjMChhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtyZXR1cm4gRGEoNyxhfDAsYnwwLGN8MCxkfDApfDB9ZnVuY3Rpb24gZDAoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7cmV0dXJuIERhKDgsYXwwLGJ8MCxjfDAsZHwwKXwwfWZ1bmN0aW9uIGUwKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3JldHVybiBEYSg5LGF8MCxifDAsY3wwLGR8MCl8MH1mdW5jdGlvbiBmMChhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtyZXR1cm4gRGEoMTAsYXwwLGJ8MCxjfDAsZHwwKXwwfWZ1bmN0aW9uIGcwKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3JldHVybiBEYSgxMSxhfDAsYnwwLGN8MCxkfDApfDB9ZnVuY3Rpb24gaDAoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7cmV0dXJuIERhKDEyLGF8MCxifDAsY3wwLGR8MCl8MH1mdW5jdGlvbiBpMChhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtyZXR1cm4gRGEoMTMsYXwwLGJ8MCxjfDAsZHwwKXwwfWZ1bmN0aW9uIGowKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3JldHVybiBEYSgxNCxhfDAsYnwwLGN8MCxkfDApfDB9ZnVuY3Rpb24gazAoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7cmV0dXJuIERhKDE1LGF8MCxifDAsY3wwLGR8MCl8MH1mdW5jdGlvbiBsMChhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtyZXR1cm4gRGEoMTYsYXwwLGJ8MCxjfDAsZHwwKXwwfWZ1bmN0aW9uIG0wKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3JldHVybiBEYSgxNyxhfDAsYnwwLGN8MCxkfDApfDB9ZnVuY3Rpb24gbjAoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7cmV0dXJuIERhKDE4LGF8MCxifDAsY3wwLGR8MCl8MH1mdW5jdGlvbiBvMChhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtyZXR1cm4gRGEoMTksYXwwLGJ8MCxjfDAsZHwwKXwwfWZ1bmN0aW9uIHAwKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3JldHVybiBEYSgyMCxhfDAsYnwwLGN8MCxkfDApfDB9ZnVuY3Rpb24gcTAoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7cmV0dXJuIERhKDIxLGF8MCxifDAsY3wwLGR8MCl8MH1mdW5jdGlvbiByMChhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtyZXR1cm4gRGEoMjIsYXwwLGJ8MCxjfDAsZHwwKXwwfWZ1bmN0aW9uIHMwKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3JldHVybiBEYSgyMyxhfDAsYnwwLGN8MCxkfDApfDB9ZnVuY3Rpb24gdDAoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7cmV0dXJuIERhKDI0LGF8MCxifDAsY3wwLGR8MCl8MH1mdW5jdGlvbiB1MChhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtyZXR1cm4gRGEoMjUsYXwwLGJ8MCxjfDAsZHwwKXwwfWZ1bmN0aW9uIHYwKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3JldHVybiBEYSgyNixhfDAsYnwwLGN8MCxkfDApfDB9ZnVuY3Rpb24gdzAoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7cmV0dXJuIERhKDI3LGF8MCxifDAsY3wwLGR8MCl8MH1mdW5jdGlvbiB4MChhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtyZXR1cm4gRGEoMjgsYXwwLGJ8MCxjfDAsZHwwKXwwfWZ1bmN0aW9uIHkwKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3JldHVybiBEYSgyOSxhfDAsYnwwLGN8MCxkfDApfDB9ZnVuY3Rpb24gejAoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7cmV0dXJuIERhKDMwLGF8MCxifDAsY3wwLGR8MCl8MH1mdW5jdGlvbiBBMChhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtyZXR1cm4gRGEoMzEsYXwwLGJ8MCxjfDAsZHwwKXwwfWZ1bmN0aW9uIEIwKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3JldHVybiBEYSgzMixhfDAsYnwwLGN8MCxkfDApfDB9ZnVuY3Rpb24gQzAoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7cmV0dXJuIERhKDMzLGF8MCxifDAsY3wwLGR8MCl8MH1mdW5jdGlvbiBEMChhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtyZXR1cm4gRGEoMzQsYXwwLGJ8MCxjfDAsZHwwKXwwfWZ1bmN0aW9uIEUwKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3JldHVybiBEYSgzNSxhfDAsYnwwLGN8MCxkfDApfDB9ZnVuY3Rpb24gRjAoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7cmV0dXJuIERhKDM2LGF8MCxifDAsY3wwLGR8MCl8MH1mdW5jdGlvbiBHMChhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtyZXR1cm4gRGEoMzcsYXwwLGJ8MCxjfDAsZHwwKXwwfWZ1bmN0aW9uIEgwKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3JldHVybiBEYSgzOCxhfDAsYnwwLGN8MCxkfDApfDB9ZnVuY3Rpb24gSTAoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7cmV0dXJuIERhKDM5LGF8MCxifDAsY3wwLGR8MCl8MH1mdW5jdGlvbiBKMChhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtyZXR1cm4gRGEoNDAsYXwwLGJ8MCxjfDAsZHwwKXwwfWZ1bmN0aW9uIEswKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3JldHVybiBEYSg0MSxhfDAsYnwwLGN8MCxkfDApfDB9ZnVuY3Rpb24gTDAoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7cmV0dXJuIERhKDQyLGF8MCxifDAsY3wwLGR8MCl8MH1mdW5jdGlvbiBNMChhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtyZXR1cm4gRGEoNDMsYXwwLGJ8MCxjfDAsZHwwKXwwfWZ1bmN0aW9uIE4wKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3JldHVybiBEYSg0NCxhfDAsYnwwLGN8MCxkfDApfDB9ZnVuY3Rpb24gTzAoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7cmV0dXJuIERhKDQ1LGF8MCxifDAsY3wwLGR8MCl8MH1mdW5jdGlvbiBQMChhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtyZXR1cm4gRGEoNDYsYXwwLGJ8MCxjfDAsZHwwKXwwfWZ1bmN0aW9uIFEwKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3JldHVybiBEYSg0NyxhfDAsYnwwLGN8MCxkfDApfDB9ZnVuY3Rpb24gUjAoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7cmV0dXJuIERhKDQ4LGF8MCxifDAsY3wwLGR8MCl8MH1mdW5jdGlvbiBTMChhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtyZXR1cm4gRGEoNDksYXwwLGJ8MCxjfDAsZHwwKXwwfWZ1bmN0aW9uIFQwKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3JldHVybiBEYSg1MCxhfDAsYnwwLGN8MCxkfDApfDB9ZnVuY3Rpb24gVTAoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7cmV0dXJuIERhKDUxLGF8MCxifDAsY3wwLGR8MCl8MH1mdW5jdGlvbiBWMChhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtyZXR1cm4gRGEoNTIsYXwwLGJ8MCxjfDAsZHwwKXwwfWZ1bmN0aW9uIFcwKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3JldHVybiBEYSg1MyxhfDAsYnwwLGN8MCxkfDApfDB9ZnVuY3Rpb24gWDAoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7cmV0dXJuIERhKDU0LGF8MCxifDAsY3wwLGR8MCl8MH1mdW5jdGlvbiBZMChhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtyZXR1cm4gRGEoNTUsYXwwLGJ8MCxjfDAsZHwwKXwwfWZ1bmN0aW9uIFowKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3JldHVybiBEYSg1NixhfDAsYnwwLGN8MCxkfDApfDB9ZnVuY3Rpb24gXzAoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7cmV0dXJuIERhKDU3LGF8MCxifDAsY3wwLGR8MCl8MH1mdW5jdGlvbiAkMChhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtyZXR1cm4gRGEoNTgsYXwwLGJ8MCxjfDAsZHwwKXwwfWZ1bmN0aW9uIGExKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3JldHVybiBEYSg1OSxhfDAsYnwwLGN8MCxkfDApfDB9ZnVuY3Rpb24gYjEoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7cmV0dXJuIERhKDYwLGF8MCxifDAsY3wwLGR8MCl8MH1mdW5jdGlvbiBjMShhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtyZXR1cm4gRGEoNjEsYXwwLGJ8MCxjfDAsZHwwKXwwfWZ1bmN0aW9uIGQxKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3JldHVybiBEYSg2MixhfDAsYnwwLGN8MCxkfDApfDB9ZnVuY3Rpb24gZTEoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7cmV0dXJuIERhKDYzLGF8MCxifDAsY3wwLGR8MCl8MH1mdW5jdGlvbiBmMShhLGIsYyxkLGUsZixnKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtmY1thJjI1NV0oYnwwLGN8MCxkfDAsZXwwLGZ8MCxnfDApfWZ1bmN0aW9uIGcxKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtGYSgwLGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKX1mdW5jdGlvbiBoMShhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7RmEoMSxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCl9ZnVuY3Rpb24gaTEoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO0ZhKDIsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfWZ1bmN0aW9uIGoxKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtGYSgzLGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKX1mdW5jdGlvbiBrMShhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7RmEoNCxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCl9ZnVuY3Rpb24gbDEoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO0ZhKDUsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfWZ1bmN0aW9uIG0xKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtGYSg2LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKX1mdW5jdGlvbiBuMShhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7RmEoNyxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCl9ZnVuY3Rpb24gbzEoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO0ZhKDgsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfWZ1bmN0aW9uIHAxKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtGYSg5LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKX1mdW5jdGlvbiBxMShhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7RmEoMTAsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfWZ1bmN0aW9uIHIxKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtGYSgxMSxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCl9ZnVuY3Rpb24gczEoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO0ZhKDEyLGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKX1mdW5jdGlvbiB0MShhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7RmEoMTMsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfWZ1bmN0aW9uIHUxKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtGYSgxNCxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCl9ZnVuY3Rpb24gdjEoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO0ZhKDE1LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKX1mdW5jdGlvbiB3MShhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7RmEoMTYsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfWZ1bmN0aW9uIHgxKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtGYSgxNyxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCl9ZnVuY3Rpb24geTEoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO0ZhKDE4LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKX1mdW5jdGlvbiB6MShhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7RmEoMTksYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfWZ1bmN0aW9uIEExKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtGYSgyMCxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCl9ZnVuY3Rpb24gQjEoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO0ZhKDIxLGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKX1mdW5jdGlvbiBDMShhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7RmEoMjIsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfWZ1bmN0aW9uIEQxKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtGYSgyMyxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCl9ZnVuY3Rpb24gRTEoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO0ZhKDI0LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKX1mdW5jdGlvbiBGMShhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7RmEoMjUsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfWZ1bmN0aW9uIEcxKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtGYSgyNixhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCl9ZnVuY3Rpb24gSDEoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO0ZhKDI3LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKX1mdW5jdGlvbiBJMShhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7RmEoMjgsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfWZ1bmN0aW9uIEoxKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtGYSgyOSxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCl9ZnVuY3Rpb24gSzEoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO0ZhKDMwLGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKX1mdW5jdGlvbiBMMShhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7RmEoMzEsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfWZ1bmN0aW9uIE0xKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtGYSgzMixhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCl9ZnVuY3Rpb24gTjEoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO0ZhKDMzLGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKX1mdW5jdGlvbiBPMShhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7RmEoMzQsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfWZ1bmN0aW9uIFAxKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtGYSgzNSxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCl9ZnVuY3Rpb24gUTEoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO0ZhKDM2LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKX1mdW5jdGlvbiBSMShhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7RmEoMzcsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfWZ1bmN0aW9uIFMxKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtGYSgzOCxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCl9ZnVuY3Rpb24gVDEoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO0ZhKDM5LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKX1mdW5jdGlvbiBVMShhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7RmEoNDAsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfWZ1bmN0aW9uIFYxKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtGYSg0MSxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCl9ZnVuY3Rpb24gVzEoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO0ZhKDQyLGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKX1mdW5jdGlvbiBYMShhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7RmEoNDMsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfWZ1bmN0aW9uIFkxKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtGYSg0NCxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCl9ZnVuY3Rpb24gWjEoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO0ZhKDQ1LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKX1mdW5jdGlvbiBfMShhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7RmEoNDYsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfWZ1bmN0aW9uICQxKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtGYSg0NyxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCl9ZnVuY3Rpb24gYTIoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO0ZhKDQ4LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKX1mdW5jdGlvbiBiMihhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7RmEoNDksYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfWZ1bmN0aW9uIGMyKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtGYSg1MCxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCl9ZnVuY3Rpb24gZDIoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO0ZhKDUxLGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKX1mdW5jdGlvbiBlMihhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7RmEoNTIsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfWZ1bmN0aW9uIGYyKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtGYSg1MyxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCl9ZnVuY3Rpb24gZzIoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO0ZhKDU0LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKX1mdW5jdGlvbiBoMihhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7RmEoNTUsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfWZ1bmN0aW9uIGkyKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtGYSg1NixhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCl9ZnVuY3Rpb24gajIoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO0ZhKDU3LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKX1mdW5jdGlvbiBrMihhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7RmEoNTgsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfWZ1bmN0aW9uIGwyKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtGYSg1OSxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCl9ZnVuY3Rpb24gbTIoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO0ZhKDYwLGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKX1mdW5jdGlvbiBuMihhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7RmEoNjEsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfWZ1bmN0aW9uIG8yKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtGYSg2MixhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCl9ZnVuY3Rpb24gcDIoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO0ZhKDYzLGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKX1mdW5jdGlvbiBxMihhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7cmV0dXJuIGdjW2EmMjU1XShifDAsY3wwKXwwfWZ1bmN0aW9uIHIyKGEsYil7YT1hfDA7Yj1ifDA7cmV0dXJuIEhhKDAsYXwwLGJ8MCl8MH1mdW5jdGlvbiBzMihhLGIpe2E9YXwwO2I9YnwwO3JldHVybiBIYSgxLGF8MCxifDApfDB9ZnVuY3Rpb24gdDIoYSxiKXthPWF8MDtiPWJ8MDtyZXR1cm4gSGEoMixhfDAsYnwwKXwwfWZ1bmN0aW9uIHUyKGEsYil7YT1hfDA7Yj1ifDA7cmV0dXJuIEhhKDMsYXwwLGJ8MCl8MH1mdW5jdGlvbiB2MihhLGIpe2E9YXwwO2I9YnwwO3JldHVybiBIYSg0LGF8MCxifDApfDB9ZnVuY3Rpb24gdzIoYSxiKXthPWF8MDtiPWJ8MDtyZXR1cm4gSGEoNSxhfDAsYnwwKXwwfWZ1bmN0aW9uIHgyKGEsYil7YT1hfDA7Yj1ifDA7cmV0dXJuIEhhKDYsYXwwLGJ8MCl8MH1mdW5jdGlvbiB5MihhLGIpe2E9YXwwO2I9YnwwO3JldHVybiBIYSg3LGF8MCxifDApfDB9ZnVuY3Rpb24gejIoYSxiKXthPWF8MDtiPWJ8MDtyZXR1cm4gSGEoOCxhfDAsYnwwKXwwfWZ1bmN0aW9uIEEyKGEsYil7YT1hfDA7Yj1ifDA7cmV0dXJuIEhhKDksYXwwLGJ8MCl8MH1mdW5jdGlvbiBCMihhLGIpe2E9YXwwO2I9YnwwO3JldHVybiBIYSgxMCxhfDAsYnwwKXwwfWZ1bmN0aW9uIEMyKGEsYil7YT1hfDA7Yj1ifDA7cmV0dXJuIEhhKDExLGF8MCxifDApfDB9ZnVuY3Rpb24gRDIoYSxiKXthPWF8MDtiPWJ8MDtyZXR1cm4gSGEoMTIsYXwwLGJ8MCl8MH1mdW5jdGlvbiBFMihhLGIpe2E9YXwwO2I9YnwwO3JldHVybiBIYSgxMyxhfDAsYnwwKXwwfWZ1bmN0aW9uIEYyKGEsYil7YT1hfDA7Yj1ifDA7cmV0dXJuIEhhKDE0LGF8MCxifDApfDB9ZnVuY3Rpb24gRzIoYSxiKXthPWF8MDtiPWJ8MDtyZXR1cm4gSGEoMTUsYXwwLGJ8MCl8MH1mdW5jdGlvbiBIMihhLGIpe2E9YXwwO2I9YnwwO3JldHVybiBIYSgxNixhfDAsYnwwKXwwfWZ1bmN0aW9uIEkyKGEsYil7YT1hfDA7Yj1ifDA7cmV0dXJuIEhhKDE3LGF8MCxifDApfDB9ZnVuY3Rpb24gSjIoYSxiKXthPWF8MDtiPWJ8MDtyZXR1cm4gSGEoMTgsYXwwLGJ8MCl8MH1mdW5jdGlvbiBLMihhLGIpe2E9YXwwO2I9YnwwO3JldHVybiBIYSgxOSxhfDAsYnwwKXwwfWZ1bmN0aW9uIEwyKGEsYil7YT1hfDA7Yj1ifDA7cmV0dXJuIEhhKDIwLGF8MCxifDApfDB9ZnVuY3Rpb24gTTIoYSxiKXthPWF8MDtiPWJ8MDtyZXR1cm4gSGEoMjEsYXwwLGJ8MCl8MH1mdW5jdGlvbiBOMihhLGIpe2E9YXwwO2I9YnwwO3JldHVybiBIYSgyMixhfDAsYnwwKXwwfWZ1bmN0aW9uIE8yKGEsYil7YT1hfDA7Yj1ifDA7cmV0dXJuIEhhKDIzLGF8MCxifDApfDB9ZnVuY3Rpb24gUDIoYSxiKXthPWF8MDtiPWJ8MDtyZXR1cm4gSGEoMjQsYXwwLGJ8MCl8MH1mdW5jdGlvbiBRMihhLGIpe2E9YXwwO2I9YnwwO3JldHVybiBIYSgyNSxhfDAsYnwwKXwwfWZ1bmN0aW9uIFIyKGEsYil7YT1hfDA7Yj1ifDA7cmV0dXJuIEhhKDI2LGF8MCxifDApfDB9ZnVuY3Rpb24gUzIoYSxiKXthPWF8MDtiPWJ8MDtyZXR1cm4gSGEoMjcsYXwwLGJ8MCl8MH1mdW5jdGlvbiBUMihhLGIpe2E9YXwwO2I9YnwwO3JldHVybiBIYSgyOCxhfDAsYnwwKXwwfWZ1bmN0aW9uIFUyKGEsYil7YT1hfDA7Yj1ifDA7cmV0dXJuIEhhKDI5LGF8MCxifDApfDB9ZnVuY3Rpb24gVjIoYSxiKXthPWF8MDtiPWJ8MDtyZXR1cm4gSGEoMzAsYXwwLGJ8MCl8MH1mdW5jdGlvbiBXMihhLGIpe2E9YXwwO2I9YnwwO3JldHVybiBIYSgzMSxhfDAsYnwwKXwwfWZ1bmN0aW9uIFgyKGEsYil7YT1hfDA7Yj1ifDA7cmV0dXJuIEhhKDMyLGF8MCxifDApfDB9ZnVuY3Rpb24gWTIoYSxiKXthPWF8MDtiPWJ8MDtyZXR1cm4gSGEoMzMsYXwwLGJ8MCl8MH1mdW5jdGlvbiBaMihhLGIpe2E9YXwwO2I9YnwwO3JldHVybiBIYSgzNCxhfDAsYnwwKXwwfWZ1bmN0aW9uIF8yKGEsYil7YT1hfDA7Yj1ifDA7cmV0dXJuIEhhKDM1LGF8MCxifDApfDB9ZnVuY3Rpb24gJDIoYSxiKXthPWF8MDtiPWJ8MDtyZXR1cm4gSGEoMzYsYXwwLGJ8MCl8MH1mdW5jdGlvbiBhMyhhLGIpe2E9YXwwO2I9YnwwO3JldHVybiBIYSgzNyxhfDAsYnwwKXwwfWZ1bmN0aW9uIGIzKGEsYil7YT1hfDA7Yj1ifDA7cmV0dXJuIEhhKDM4LGF8MCxifDApfDB9ZnVuY3Rpb24gYzMoYSxiKXthPWF8MDtiPWJ8MDtyZXR1cm4gSGEoMzksYXwwLGJ8MCl8MH1mdW5jdGlvbiBkMyhhLGIpe2E9YXwwO2I9YnwwO3JldHVybiBIYSg0MCxhfDAsYnwwKXwwfWZ1bmN0aW9uIGUzKGEsYil7YT1hfDA7Yj1ifDA7cmV0dXJuIEhhKDQxLGF8MCxifDApfDB9ZnVuY3Rpb24gZjMoYSxiKXthPWF8MDtiPWJ8MDtyZXR1cm4gSGEoNDIsYXwwLGJ8MCl8MH1mdW5jdGlvbiBnMyhhLGIpe2E9YXwwO2I9YnwwO3JldHVybiBIYSg0MyxhfDAsYnwwKXwwfWZ1bmN0aW9uIGgzKGEsYil7YT1hfDA7Yj1ifDA7cmV0dXJuIEhhKDQ0LGF8MCxifDApfDB9ZnVuY3Rpb24gaTMoYSxiKXthPWF8MDtiPWJ8MDtyZXR1cm4gSGEoNDUsYXwwLGJ8MCl8MH1mdW5jdGlvbiBqMyhhLGIpe2E9YXwwO2I9YnwwO3JldHVybiBIYSg0NixhfDAsYnwwKXwwfWZ1bmN0aW9uIGszKGEsYil7YT1hfDA7Yj1ifDA7cmV0dXJuIEhhKDQ3LGF8MCxifDApfDB9ZnVuY3Rpb24gbDMoYSxiKXthPWF8MDtiPWJ8MDtyZXR1cm4gSGEoNDgsYXwwLGJ8MCl8MH1mdW5jdGlvbiBtMyhhLGIpe2E9YXwwO2I9YnwwO3JldHVybiBIYSg0OSxhfDAsYnwwKXwwfWZ1bmN0aW9uIG4zKGEsYil7YT1hfDA7Yj1ifDA7cmV0dXJuIEhhKDUwLGF8MCxifDApfDB9ZnVuY3Rpb24gbzMoYSxiKXthPWF8MDtiPWJ8MDtyZXR1cm4gSGEoNTEsYXwwLGJ8MCl8MH1mdW5jdGlvbiBwMyhhLGIpe2E9YXwwO2I9YnwwO3JldHVybiBIYSg1MixhfDAsYnwwKXwwfWZ1bmN0aW9uIHEzKGEsYil7YT1hfDA7Yj1ifDA7cmV0dXJuIEhhKDUzLGF8MCxifDApfDB9ZnVuY3Rpb24gcjMoYSxiKXthPWF8MDtiPWJ8MDtyZXR1cm4gSGEoNTQsYXwwLGJ8MCl8MH1mdW5jdGlvbiBzMyhhLGIpe2E9YXwwO2I9YnwwO3JldHVybiBIYSg1NSxhfDAsYnwwKXwwfWZ1bmN0aW9uIHQzKGEsYil7YT1hfDA7Yj1ifDA7cmV0dXJuIEhhKDU2LGF8MCxifDApfDB9ZnVuY3Rpb24gdTMoYSxiKXthPWF8MDtiPWJ8MDtyZXR1cm4gSGEoNTcsYXwwLGJ8MCl8MH1mdW5jdGlvbiB2MyhhLGIpe2E9YXwwO2I9YnwwO3JldHVybiBIYSg1OCxhfDAsYnwwKXwwfWZ1bmN0aW9uIHczKGEsYil7YT1hfDA7Yj1ifDA7cmV0dXJuIEhhKDU5LGF8MCxifDApfDB9ZnVuY3Rpb24geDMoYSxiKXthPWF8MDtiPWJ8MDtyZXR1cm4gSGEoNjAsYXwwLGJ8MCl8MH1mdW5jdGlvbiB5MyhhLGIpe2E9YXwwO2I9YnwwO3JldHVybiBIYSg2MSxhfDAsYnwwKXwwfWZ1bmN0aW9uIHozKGEsYil7YT1hfDA7Yj1ifDA7cmV0dXJuIEhhKDYyLGF8MCxifDApfDB9ZnVuY3Rpb24gQTMoYSxiKXthPWF8MDtiPWJ8MDtyZXR1cm4gSGEoNjMsYXwwLGJ8MCl8MH1mdW5jdGlvbiBCMyhhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7cmV0dXJuIGhjW2EmMjU1XShifDAsY3wwLGR8MCxlfDAsZnwwKXwwfWZ1bmN0aW9uIEMzKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7cmV0dXJuIEphKDAsYXwwLGJ8MCxjfDAsZHwwLGV8MCl8MH1mdW5jdGlvbiBEMyhhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3JldHVybiBKYSgxLGF8MCxifDAsY3wwLGR8MCxlfDApfDB9ZnVuY3Rpb24gRTMoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtyZXR1cm4gSmEoMixhfDAsYnwwLGN8MCxkfDAsZXwwKXwwfWZ1bmN0aW9uIEYzKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7cmV0dXJuIEphKDMsYXwwLGJ8MCxjfDAsZHwwLGV8MCl8MH1mdW5jdGlvbiBHMyhhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3JldHVybiBKYSg0LGF8MCxifDAsY3wwLGR8MCxlfDApfDB9ZnVuY3Rpb24gSDMoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtyZXR1cm4gSmEoNSxhfDAsYnwwLGN8MCxkfDAsZXwwKXwwfWZ1bmN0aW9uIEkzKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7cmV0dXJuIEphKDYsYXwwLGJ8MCxjfDAsZHwwLGV8MCl8MH1mdW5jdGlvbiBKMyhhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3JldHVybiBKYSg3LGF8MCxifDAsY3wwLGR8MCxlfDApfDB9ZnVuY3Rpb24gSzMoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtyZXR1cm4gSmEoOCxhfDAsYnwwLGN8MCxkfDAsZXwwKXwwfWZ1bmN0aW9uIEwzKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7cmV0dXJuIEphKDksYXwwLGJ8MCxjfDAsZHwwLGV8MCl8MH1mdW5jdGlvbiBNMyhhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3JldHVybiBKYSgxMCxhfDAsYnwwLGN8MCxkfDAsZXwwKXwwfWZ1bmN0aW9uIE4zKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7cmV0dXJuIEphKDExLGF8MCxifDAsY3wwLGR8MCxlfDApfDB9ZnVuY3Rpb24gTzMoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtyZXR1cm4gSmEoMTIsYXwwLGJ8MCxjfDAsZHwwLGV8MCl8MH1mdW5jdGlvbiBQMyhhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3JldHVybiBKYSgxMyxhfDAsYnwwLGN8MCxkfDAsZXwwKXwwfWZ1bmN0aW9uIFEzKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7cmV0dXJuIEphKDE0LGF8MCxifDAsY3wwLGR8MCxlfDApfDB9ZnVuY3Rpb24gUjMoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtyZXR1cm4gSmEoMTUsYXwwLGJ8MCxjfDAsZHwwLGV8MCl8MH1mdW5jdGlvbiBTMyhhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3JldHVybiBKYSgxNixhfDAsYnwwLGN8MCxkfDAsZXwwKXwwfWZ1bmN0aW9uIFQzKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7cmV0dXJuIEphKDE3LGF8MCxifDAsY3wwLGR8MCxlfDApfDB9ZnVuY3Rpb24gVTMoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtyZXR1cm4gSmEoMTgsYXwwLGJ8MCxjfDAsZHwwLGV8MCl8MH1mdW5jdGlvbiBWMyhhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3JldHVybiBKYSgxOSxhfDAsYnwwLGN8MCxkfDAsZXwwKXwwfWZ1bmN0aW9uIFczKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7cmV0dXJuIEphKDIwLGF8MCxifDAsY3wwLGR8MCxlfDApfDB9ZnVuY3Rpb24gWDMoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtyZXR1cm4gSmEoMjEsYXwwLGJ8MCxjfDAsZHwwLGV8MCl8MH1mdW5jdGlvbiBZMyhhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3JldHVybiBKYSgyMixhfDAsYnwwLGN8MCxkfDAsZXwwKXwwfWZ1bmN0aW9uIFozKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7cmV0dXJuIEphKDIzLGF8MCxifDAsY3wwLGR8MCxlfDApfDB9ZnVuY3Rpb24gXzMoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtyZXR1cm4gSmEoMjQsYXwwLGJ8MCxjfDAsZHwwLGV8MCl8MH1mdW5jdGlvbiAkMyhhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3JldHVybiBKYSgyNSxhfDAsYnwwLGN8MCxkfDAsZXwwKXwwfWZ1bmN0aW9uIGE0KGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7cmV0dXJuIEphKDI2LGF8MCxifDAsY3wwLGR8MCxlfDApfDB9ZnVuY3Rpb24gYjQoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtyZXR1cm4gSmEoMjcsYXwwLGJ8MCxjfDAsZHwwLGV8MCl8MH1mdW5jdGlvbiBjNChhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3JldHVybiBKYSgyOCxhfDAsYnwwLGN8MCxkfDAsZXwwKXwwfWZ1bmN0aW9uIGQ0KGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7cmV0dXJuIEphKDI5LGF8MCxifDAsY3wwLGR8MCxlfDApfDB9ZnVuY3Rpb24gZTQoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtyZXR1cm4gSmEoMzAsYXwwLGJ8MCxjfDAsZHwwLGV8MCl8MH1mdW5jdGlvbiBmNChhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3JldHVybiBKYSgzMSxhfDAsYnwwLGN8MCxkfDAsZXwwKXwwfWZ1bmN0aW9uIGc0KGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7cmV0dXJuIEphKDMyLGF8MCxifDAsY3wwLGR8MCxlfDApfDB9ZnVuY3Rpb24gaDQoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtyZXR1cm4gSmEoMzMsYXwwLGJ8MCxjfDAsZHwwLGV8MCl8MH1mdW5jdGlvbiBpNChhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3JldHVybiBKYSgzNCxhfDAsYnwwLGN8MCxkfDAsZXwwKXwwfWZ1bmN0aW9uIGo0KGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7cmV0dXJuIEphKDM1LGF8MCxifDAsY3wwLGR8MCxlfDApfDB9ZnVuY3Rpb24gazQoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtyZXR1cm4gSmEoMzYsYXwwLGJ8MCxjfDAsZHwwLGV8MCl8MH1mdW5jdGlvbiBsNChhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3JldHVybiBKYSgzNyxhfDAsYnwwLGN8MCxkfDAsZXwwKXwwfWZ1bmN0aW9uIG00KGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7cmV0dXJuIEphKDM4LGF8MCxifDAsY3wwLGR8MCxlfDApfDB9ZnVuY3Rpb24gbjQoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtyZXR1cm4gSmEoMzksYXwwLGJ8MCxjfDAsZHwwLGV8MCl8MH1mdW5jdGlvbiBvNChhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3JldHVybiBKYSg0MCxhfDAsYnwwLGN8MCxkfDAsZXwwKXwwfWZ1bmN0aW9uIHA0KGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7cmV0dXJuIEphKDQxLGF8MCxifDAsY3wwLGR8MCxlfDApfDB9ZnVuY3Rpb24gcTQoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtyZXR1cm4gSmEoNDIsYXwwLGJ8MCxjfDAsZHwwLGV8MCl8MH1mdW5jdGlvbiByNChhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3JldHVybiBKYSg0MyxhfDAsYnwwLGN8MCxkfDAsZXwwKXwwfWZ1bmN0aW9uIHM0KGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7cmV0dXJuIEphKDQ0LGF8MCxifDAsY3wwLGR8MCxlfDApfDB9ZnVuY3Rpb24gdDQoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtyZXR1cm4gSmEoNDUsYXwwLGJ8MCxjfDAsZHwwLGV8MCl8MH1mdW5jdGlvbiB1NChhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3JldHVybiBKYSg0NixhfDAsYnwwLGN8MCxkfDAsZXwwKXwwfWZ1bmN0aW9uIHY0KGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7cmV0dXJuIEphKDQ3LGF8MCxifDAsY3wwLGR8MCxlfDApfDB9ZnVuY3Rpb24gdzQoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtyZXR1cm4gSmEoNDgsYXwwLGJ8MCxjfDAsZHwwLGV8MCl8MH1mdW5jdGlvbiB4NChhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3JldHVybiBKYSg0OSxhfDAsYnwwLGN8MCxkfDAsZXwwKXwwfWZ1bmN0aW9uIHk0KGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7cmV0dXJuIEphKDUwLGF8MCxifDAsY3wwLGR8MCxlfDApfDB9ZnVuY3Rpb24gejQoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtyZXR1cm4gSmEoNTEsYXwwLGJ8MCxjfDAsZHwwLGV8MCl8MH1mdW5jdGlvbiBBNChhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3JldHVybiBKYSg1MixhfDAsYnwwLGN8MCxkfDAsZXwwKXwwfWZ1bmN0aW9uIEI0KGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7cmV0dXJuIEphKDUzLGF8MCxifDAsY3wwLGR8MCxlfDApfDB9ZnVuY3Rpb24gQzQoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtyZXR1cm4gSmEoNTQsYXwwLGJ8MCxjfDAsZHwwLGV8MCl8MH1mdW5jdGlvbiBENChhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3JldHVybiBKYSg1NSxhfDAsYnwwLGN8MCxkfDAsZXwwKXwwfWZ1bmN0aW9uIEU0KGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7cmV0dXJuIEphKDU2LGF8MCxifDAsY3wwLGR8MCxlfDApfDB9ZnVuY3Rpb24gRjQoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtyZXR1cm4gSmEoNTcsYXwwLGJ8MCxjfDAsZHwwLGV8MCl8MH1mdW5jdGlvbiBHNChhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3JldHVybiBKYSg1OCxhfDAsYnwwLGN8MCxkfDAsZXwwKXwwfWZ1bmN0aW9uIEg0KGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7cmV0dXJuIEphKDU5LGF8MCxifDAsY3wwLGR8MCxlfDApfDB9ZnVuY3Rpb24gSTQoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtyZXR1cm4gSmEoNjAsYXwwLGJ8MCxjfDAsZHwwLGV8MCl8MH1mdW5jdGlvbiBKNChhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3JldHVybiBKYSg2MSxhfDAsYnwwLGN8MCxkfDAsZXwwKXwwfWZ1bmN0aW9uIEs0KGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7cmV0dXJuIEphKDYyLGF8MCxifDAsY3wwLGR8MCxlfDApfDB9ZnVuY3Rpb24gTDQoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtyZXR1cm4gSmEoNjMsYXwwLGJ8MCxjfDAsZHwwLGV8MCl8MH1mdW5jdGlvbiBNNChhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2ljW2EmMjU1XShifDAsY3wwLGR8MCxlfDApfWZ1bmN0aW9uIE40KGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO0xhKDAsYXwwLGJ8MCxjfDAsZHwwKX1mdW5jdGlvbiBPNChhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtMYSgxLGF8MCxifDAsY3wwLGR8MCl9ZnVuY3Rpb24gUDQoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7TGEoMixhfDAsYnwwLGN8MCxkfDApfWZ1bmN0aW9uIFE0KGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO0xhKDMsYXwwLGJ8MCxjfDAsZHwwKX1mdW5jdGlvbiBSNChhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtMYSg0LGF8MCxifDAsY3wwLGR8MCl9ZnVuY3Rpb24gUzQoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7TGEoNSxhfDAsYnwwLGN8MCxkfDApfWZ1bmN0aW9uIFQ0KGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO0xhKDYsYXwwLGJ8MCxjfDAsZHwwKX1mdW5jdGlvbiBVNChhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtMYSg3LGF8MCxifDAsY3wwLGR8MCl9ZnVuY3Rpb24gVjQoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7TGEoOCxhfDAsYnwwLGN8MCxkfDApfWZ1bmN0aW9uIFc0KGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO0xhKDksYXwwLGJ8MCxjfDAsZHwwKX1mdW5jdGlvbiBYNChhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtMYSgxMCxhfDAsYnwwLGN8MCxkfDApfWZ1bmN0aW9uIFk0KGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO0xhKDExLGF8MCxifDAsY3wwLGR8MCl9ZnVuY3Rpb24gWjQoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7TGEoMTIsYXwwLGJ8MCxjfDAsZHwwKX1mdW5jdGlvbiBfNChhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtMYSgxMyxhfDAsYnwwLGN8MCxkfDApfWZ1bmN0aW9uICQ0KGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO0xhKDE0LGF8MCxifDAsY3wwLGR8MCl9ZnVuY3Rpb24gYTUoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7TGEoMTUsYXwwLGJ8MCxjfDAsZHwwKX1mdW5jdGlvbiBiNShhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtMYSgxNixhfDAsYnwwLGN8MCxkfDApfWZ1bmN0aW9uIGM1KGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO0xhKDE3LGF8MCxifDAsY3wwLGR8MCl9ZnVuY3Rpb24gZDUoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7TGEoMTgsYXwwLGJ8MCxjfDAsZHwwKX1mdW5jdGlvbiBlNShhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtMYSgxOSxhfDAsYnwwLGN8MCxkfDApfWZ1bmN0aW9uIGY1KGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO0xhKDIwLGF8MCxifDAsY3wwLGR8MCl9ZnVuY3Rpb24gZzUoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7TGEoMjEsYXwwLGJ8MCxjfDAsZHwwKX1mdW5jdGlvbiBoNShhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtMYSgyMixhfDAsYnwwLGN8MCxkfDApfWZ1bmN0aW9uIGk1KGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO0xhKDIzLGF8MCxifDAsY3wwLGR8MCl9ZnVuY3Rpb24gajUoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7TGEoMjQsYXwwLGJ8MCxjfDAsZHwwKX1mdW5jdGlvbiBrNShhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtMYSgyNSxhfDAsYnwwLGN8MCxkfDApfWZ1bmN0aW9uIGw1KGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO0xhKDI2LGF8MCxifDAsY3wwLGR8MCl9ZnVuY3Rpb24gbTUoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7TGEoMjcsYXwwLGJ8MCxjfDAsZHwwKX1mdW5jdGlvbiBuNShhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtMYSgyOCxhfDAsYnwwLGN8MCxkfDApfWZ1bmN0aW9uIG81KGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO0xhKDI5LGF8MCxifDAsY3wwLGR8MCl9ZnVuY3Rpb24gcDUoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7TGEoMzAsYXwwLGJ8MCxjfDAsZHwwKX1mdW5jdGlvbiBxNShhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtMYSgzMSxhfDAsYnwwLGN8MCxkfDApfWZ1bmN0aW9uIHI1KGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO0xhKDMyLGF8MCxifDAsY3wwLGR8MCl9ZnVuY3Rpb24gczUoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7TGEoMzMsYXwwLGJ8MCxjfDAsZHwwKX1mdW5jdGlvbiB0NShhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtMYSgzNCxhfDAsYnwwLGN8MCxkfDApfWZ1bmN0aW9uIHU1KGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO0xhKDM1LGF8MCxifDAsY3wwLGR8MCl9ZnVuY3Rpb24gdjUoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7TGEoMzYsYXwwLGJ8MCxjfDAsZHwwKX1mdW5jdGlvbiB3NShhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtMYSgzNyxhfDAsYnwwLGN8MCxkfDApfWZ1bmN0aW9uIHg1KGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO0xhKDM4LGF8MCxifDAsY3wwLGR8MCl9ZnVuY3Rpb24geTUoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7TGEoMzksYXwwLGJ8MCxjfDAsZHwwKX1mdW5jdGlvbiB6NShhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtMYSg0MCxhfDAsYnwwLGN8MCxkfDApfWZ1bmN0aW9uIEE1KGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO0xhKDQxLGF8MCxifDAsY3wwLGR8MCl9ZnVuY3Rpb24gQjUoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7TGEoNDIsYXwwLGJ8MCxjfDAsZHwwKX1mdW5jdGlvbiBDNShhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtMYSg0MyxhfDAsYnwwLGN8MCxkfDApfWZ1bmN0aW9uIEQ1KGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO0xhKDQ0LGF8MCxifDAsY3wwLGR8MCl9ZnVuY3Rpb24gRTUoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7TGEoNDUsYXwwLGJ8MCxjfDAsZHwwKX1mdW5jdGlvbiBGNShhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtMYSg0NixhfDAsYnwwLGN8MCxkfDApfWZ1bmN0aW9uIEc1KGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO0xhKDQ3LGF8MCxifDAsY3wwLGR8MCl9ZnVuY3Rpb24gSDUoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7TGEoNDgsYXwwLGJ8MCxjfDAsZHwwKX1mdW5jdGlvbiBJNShhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtMYSg0OSxhfDAsYnwwLGN8MCxkfDApfWZ1bmN0aW9uIEo1KGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO0xhKDUwLGF8MCxifDAsY3wwLGR8MCl9ZnVuY3Rpb24gSzUoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7TGEoNTEsYXwwLGJ8MCxjfDAsZHwwKX1mdW5jdGlvbiBMNShhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtMYSg1MixhfDAsYnwwLGN8MCxkfDApfWZ1bmN0aW9uIE01KGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO0xhKDUzLGF8MCxifDAsY3wwLGR8MCl9ZnVuY3Rpb24gTjUoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7TGEoNTQsYXwwLGJ8MCxjfDAsZHwwKX1mdW5jdGlvbiBPNShhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtMYSg1NSxhfDAsYnwwLGN8MCxkfDApfWZ1bmN0aW9uIFA1KGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO0xhKDU2LGF8MCxifDAsY3wwLGR8MCl9ZnVuY3Rpb24gUTUoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7TGEoNTcsYXwwLGJ8MCxjfDAsZHwwKX1mdW5jdGlvbiBSNShhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtMYSg1OCxhfDAsYnwwLGN8MCxkfDApfWZ1bmN0aW9uIFM1KGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO0xhKDU5LGF8MCxifDAsY3wwLGR8MCl9ZnVuY3Rpb24gVDUoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7TGEoNjAsYXwwLGJ8MCxjfDAsZHwwKX1mdW5jdGlvbiBVNShhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtMYSg2MSxhfDAsYnwwLGN8MCxkfDApfWZ1bmN0aW9uIFY1KGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO0xhKDYyLGF8MCxifDAsY3wwLGR8MCl9ZnVuY3Rpb24gVzUoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7TGEoNjMsYXwwLGJ8MCxjfDAsZHwwKX1mdW5jdGlvbiBYNShhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7a2EoMCk7cmV0dXJuIDB9ZnVuY3Rpb24gWTUoKXtrYSgxKTtyZXR1cm4gMH1mdW5jdGlvbiBaNShhKXthPWF8MDtrYSgyKX1mdW5jdGlvbiBfNShhLGIpe2E9YXwwO2I9YnwwO2thKDMpfWZ1bmN0aW9uICQ1KGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtrYSg0KTtyZXR1cm4gMH1mdW5jdGlvbiBhNihhKXthPWF8MDtrYSg1KTtyZXR1cm4gMH1mdW5jdGlvbiBiNihhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7a2EoNil9ZnVuY3Rpb24gYzYoKXtrYSg3KX1mdW5jdGlvbiBkNihhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtrYSg4KTtyZXR1cm4gMH1mdW5jdGlvbiBlNihhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7a2EoOSl9ZnVuY3Rpb24gZjYoYSxiKXthPWF8MDtiPWJ8MDtrYSgxMCk7cmV0dXJuIDB9ZnVuY3Rpb24gZzYoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtrYSgxMSk7cmV0dXJuIDB9ZnVuY3Rpb24gaDYoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7a2EoMTIpfVxuXG4vLyBFTVNDUklQVEVOX0VORF9GVU5DU1xudmFyIFliPVtYNSxYNSxwUyxYNSxxUyxYNSxyUyxYNSxzUyxYNSx0UyxYNSx1UyxYNSx2UyxYNSx3UyxYNSx4UyxYNSx5UyxYNSx6UyxYNSxBUyxYNSxCUyxYNSxDUyxYNSxEUyxYNSxFUyxYNSxGUyxYNSxHUyxYNSxIUyxYNSxJUyxYNSxKUyxYNSxLUyxYNSxMUyxYNSxNUyxYNSxOUyxYNSxPUyxYNSxQUyxYNSxRUyxYNSxSUyxYNSxTUyxYNSxUUyxYNSxVUyxYNSxWUyxYNSxXUyxYNSxYUyxYNSxZUyxYNSxaUyxYNSxfUyxYNSwkUyxYNSxhVCxYNSxiVCxYNSxjVCxYNSxkVCxYNSxlVCxYNSxmVCxYNSxnVCxYNSxoVCxYNSxpVCxYNSxqVCxYNSxrVCxYNSxsVCxYNSxtVCxYNSxuVCxYNSxvVCxYNSxwVCxYNSxxVCxYNSxyVCxYNSxzVCxYNSx0VCxYNSx1VCxYNSx2VCxYNSx3VCxYNSx4VCxYNSx5VCxYNSxHTixKTixNTixPTixobCxKayxvcSxFcSxUcSxXcSxacixJdSxMdSxWTiwkTixuTyxOUSxHUixMUix6UixIUixsUixqUiwkbixXbSxabSxYbixWbixlbyxsbyxoRyxpRyxqRyxrUixYNSxYNSxYNSxYNSxYNSxYNSxYNSxYNSxYNSxYNSxYNSxYNSxYNSxYNSxYNSxYNSxYNSxYNSxYNSxYNSxYNSxYNSxYNSxYNSxYNSxYNSxYNSxYNSxYNSxYNSxYNSxYNSxYNSxYNSxYNSxYNSxYNSxYNSxYNSxYNSxYNSxYNSxYNSxYNSxYNSxYNSxYNSxYNSxYNSxYNSxYNSxYNSxYNSxYNSxYNSxYNSxYNSxYNSxYNSxYNSxYNSxYNSxYNSxYNSxYNSxYNSxYNSxYNSxYNSxYNSxYNSxYNSxYNSxYNSxYNSxYNSxYNSxYNSxYNSxYNSxYNSxYNSxYNSxYNSxYNSxYNSxYNSxYNSxYNSxYNSxYNSxYNV07dmFyIFpiPVtZNSxZNSxBVCxZNSxCVCxZNSxDVCxZNSxEVCxZNSxFVCxZNSxGVCxZNSxHVCxZNSxIVCxZNSxJVCxZNSxKVCxZNSxLVCxZNSxMVCxZNSxNVCxZNSxOVCxZNSxPVCxZNSxQVCxZNSxRVCxZNSxSVCxZNSxTVCxZNSxUVCxZNSxVVCxZNSxWVCxZNSxXVCxZNSxYVCxZNSxZVCxZNSxaVCxZNSxfVCxZNSwkVCxZNSxhVSxZNSxiVSxZNSxjVSxZNSxkVSxZNSxlVSxZNSxmVSxZNSxnVSxZNSxoVSxZNSxpVSxZNSxqVSxZNSxrVSxZNSxsVSxZNSxtVSxZNSxuVSxZNSxvVSxZNSxwVSxZNSxxVSxZNSxyVSxZNSxzVSxZNSx0VSxZNSx1VSxZNSx2VSxZNSx3VSxZNSx4VSxZNSx5VSxZNSx6VSxZNSxBVSxZNSxCVSxZNSxDVSxZNSxEVSxZNSxFVSxZNSxGVSxZNSxHVSxZNSxIVSxZNSxJVSxZNSxKVSxZNSxEUixwTyxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNSxZNV07dmFyIF9iPVtaNSxaNSxMVSxaNSxNVSxaNSxOVSxaNSxPVSxaNSxQVSxaNSxRVSxaNSxSVSxaNSxTVSxaNSxUVSxaNSxVVSxaNSxWVSxaNSxXVSxaNSxYVSxaNSxZVSxaNSxaVSxaNSxfVSxaNSwkVSxaNSxhVixaNSxiVixaNSxjVixaNSxkVixaNSxlVixaNSxmVixaNSxnVixaNSxoVixaNSxpVixaNSxqVixaNSxrVixaNSxsVixaNSxtVixaNSxuVixaNSxvVixaNSxwVixaNSxxVixaNSxyVixaNSxzVixaNSx0VixaNSx1VixaNSx2VixaNSx3VixaNSx4VixaNSx5VixaNSx6VixaNSxBVixaNSxCVixaNSxDVixaNSxEVixaNSxFVixaNSxGVixaNSxHVixaNSxIVixaNSxJVixaNSxKVixaNSxLVixaNSxMVixaNSxNVixaNSxOVixaNSxPVixaNSxQVixaNSxRVixaNSxSVixaNSxTVixaNSxUVixaNSxVVixaNSxlZCxmZCxoZCxpZCxqZCxrZCxIdSxQdSxRdSxjdixodixkTyxzUCxSUCxTUCxUUCxWUCxYUCxVZCxqcixJaix4ayxfbixxQSxNUixaNSxaNSxaNSxaNSxaNSxaNSxaNSxaNSxaNSxaNSxaNSxaNSxaNSxaNSxaNSxaNSxaNSxaNSxaNSxaNSxaNSxaNSxaNSxaNSxaNSxaNSxaNSxaNSxaNSxaNSxaNSxaNSxaNSxaNSxaNSxaNSxaNSxaNSxaNSxaNSxaNSxaNSxaNSxaNSxaNSxaNSxaNSxaNSxaNSxaNSxaNSxaNSxaNSxaNSxaNSxaNSxaNSxaNSxaNSxaNSxaNSxaNSxaNSxaNSxaNSxaNSxaNSxaNSxaNSxaNSxaNSxaNSxaNSxaNSxaNSxaNSxaNSxaNSxaNSxaNSxaNSxaNSxaNSxaNSxaNSxaNSxaNSxaNSxaNSxaNSxaNSxaNSxaNSxaNSxaNSxaNSxaNSxaNSxaNSxaNSxaNV07dmFyICRiPVtfNSxfNSxXVixfNSxYVixfNSxZVixfNSxaVixfNSxfVixfNSwkVixfNSxhVyxfNSxiVyxfNSxjVyxfNSxkVyxfNSxlVyxfNSxmVyxfNSxnVyxfNSxoVyxfNSxpVyxfNSxqVyxfNSxrVyxfNSxsVyxfNSxtVyxfNSxuVyxfNSxvVyxfNSxwVyxfNSxxVyxfNSxyVyxfNSxzVyxfNSx0VyxfNSx1VyxfNSx2VyxfNSx3VyxfNSx4VyxfNSx5VyxfNSx6VyxfNSxBVyxfNSxCVyxfNSxDVyxfNSxEVyxfNSxFVyxfNSxGVyxfNSxHVyxfNSxIVyxfNSxJVyxfNSxKVyxfNSxLVyxfNSxMVyxfNSxNVyxfNSxOVyxfNSxPVyxfNSxQVyxfNSxRVyxfNSxSVyxfNSxTVyxfNSxUVyxfNSxVVyxfNSxWVyxfNSxXVyxfNSxYVyxfNSxZVyxfNSxaVyxfNSxfVyxfNSwkVyxfNSxhWCxfNSxiWCxfNSxjWCxfNSxkWCxfNSxKdSxPdSx2eixBeSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNSxfNV07dmFyIGFjPVskNSwkNSxmWCwkNSxnWCwkNSxoWCwkNSxpWCwkNSxqWCwkNSxrWCwkNSxsWCwkNSxtWCwkNSxuWCwkNSxvWCwkNSxwWCwkNSxxWCwkNSxyWCwkNSxzWCwkNSx0WCwkNSx1WCwkNSx2WCwkNSx3WCwkNSx4WCwkNSx5WCwkNSx6WCwkNSxBWCwkNSxCWCwkNSxDWCwkNSxEWCwkNSxFWCwkNSxGWCwkNSxHWCwkNSxIWCwkNSxJWCwkNSxKWCwkNSxLWCwkNSxMWCwkNSxNWCwkNSxOWCwkNSxPWCwkNSxQWCwkNSxRWCwkNSxSWCwkNSxTWCwkNSxUWCwkNSxVWCwkNSxWWCwkNSxXWCwkNSxYWCwkNSxZWCwkNSxaWCwkNSxfWCwkNSwkWCwkNSxhWSwkNSxiWSwkNSxjWSwkNSxkWSwkNSxlWSwkNSxmWSwkNSxnWSwkNSxoWSwkNSxpWSwkNSxqWSwkNSxrWSwkNSxsWSwkNSxtWSwkNSxuWSwkNSxvWSwkNSxaayxfayxCayxzcSxJcSxMcSxfcSwkUSxFTCxGTCxHTCwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNSwkNV07dmFyIGJjPVthNixhNixxWSxhNixyWSxhNixzWSxhNix0WSxhNix1WSxhNix2WSxhNix3WSxhNix4WSxhNix5WSxhNix6WSxhNixBWSxhNixCWSxhNixDWSxhNixEWSxhNixFWSxhNixGWSxhNixHWSxhNixIWSxhNixJWSxhNixKWSxhNixLWSxhNixMWSxhNixNWSxhNixOWSxhNixPWSxhNixQWSxhNixRWSxhNixSWSxhNixTWSxhNixUWSxhNixVWSxhNixWWSxhNixXWSxhNixYWSxhNixZWSxhNixaWSxhNixfWSxhNiwkWSxhNixhWixhNixiWixhNixjWixhNixkWixhNixlWixhNixmWixhNixnWixhNixoWixhNixpWixhNixqWixhNixrWixhNixsWixhNixtWixhNixuWixhNixvWixhNixwWixhNixxWixhNixyWixhNixzWixhNix0WixhNix1WixhNix2WixhNix3WixhNix4WixhNix5WixhNix6WixhNixhbCxibCxkbCxmbCxnbCxrbCxsbCxtbCxubCxEayxGayxIayxJayxwcSxycSxGcSxIcSxOcSxQcSxScSxTcSxYcSxacSxXcixHdSxLdSxidixldixmdixndixTTixhTyxiTyx5UixLUixJUixHTyxSTyxpUixqZSxrZyxucix3cSx4cSxCcSxhNixhNixhNixhNixhNixhNixhNixhNixhNixhNixhNixhNixhNixhNixhNixhNixhNixhNixhNixhNixhNixhNixhNixhNixhNixhNixhNixhNixhNixhNixhNixhNixhNixhNixhNixhNixhNixhNixhNixhNixhNixhNixhNixhNixhNixhNixhNixhNixhNixhNixhNixhNixhNixhNixhNixhNixhNixhNixhNixhNixhNixhNixhNixhNixhNixhNixhNixhNixhNixhNixhNixhNixhNixhNixhNixhNixhNixhNixhNixhNixhNl07dmFyIGNjPVtiNixiNixCWixiNixDWixiNixEWixiNixFWixiNixGWixiNixHWixiNixIWixiNixJWixiNixKWixiNixLWixiNixMWixiNixNWixiNixOWixiNixPWixiNixQWixiNixRWixiNixSWixiNixTWixiNixUWixiNixVWixiNixWWixiNixXWixiNixYWixiNixZWixiNixaWixiNixfWixiNiwkWixiNixhXyxiNixiXyxiNixjXyxiNixkXyxiNixlXyxiNixmXyxiNixnXyxiNixoXyxiNixpXyxiNixqXyxiNixrXyxiNixsXyxiNixtXyxiNixuXyxiNixvXyxiNixwXyxiNixxXyxiNixyXyxiNixzXyxiNix0XyxiNix1XyxiNix2XyxiNix3XyxiNix4XyxiNix5XyxiNix6XyxiNixBXyxiNixCXyxiNixDXyxiNixEXyxiNixFXyxiNixGXyxiNixHXyxiNixIXyxiNixJXyxiNixKXyxiNixLXyxiNix0Yyx1Yyx2Yyx3Yyx4Yyx5Yyx6YyxBYyxCYyxDYyxEYyxFYyxGYyxHYyxIYyxJYyxKYyxLYyxMYyxNYyxOYyxPYyxQYyxRYyxSYyxTYyxUYyxVYyxWYyxXYyxYYyxZYyxaYyxfYywkYyxhZCxiZCxjZCxkZCxnZCxCbSxDbSxEbSxFbSxNdSxwQSxsQSxrQSxVQixiQyxtUCxuUCxvUCxwUCxxUCxyUCx0UCx1UCx2UCx3UCx4UCx5UCx6UCxBUCxCUCxDUCxEUCxFUCxGUCxHUCxIUCxJUCxKUCxLUCxMUCxNUCxOUCxPUCxQUCxRUCxVUCxXUCxSQywkUCxhUSxiUSxjUSxkUSxlUSxmUSxnUSx4USx5USx6USx2aSxpcSxodSxqdSxrdSxiNixiNixiNixiNixiNixiNixiNixiNixiNixiNixiNixiNixiNixiNixiNixiNixiNixiNixiNixiNixiNixiNixiNixiNixiNixiNixiNl07dmFyIGRjPVtjNixjNixNXyxjNixOXyxjNixPXyxjNixQXyxjNixRXyxjNixSXyxjNixTXyxjNixUXyxjNixVXyxjNixWXyxjNixXXyxjNixYXyxjNixZXyxjNixaXyxjNixfXyxjNiwkXyxjNixhJCxjNixiJCxjNixjJCxjNixkJCxjNixlJCxjNixmJCxjNixnJCxjNixoJCxjNixpJCxjNixqJCxjNixrJCxjNixsJCxjNixtJCxjNixuJCxjNixvJCxjNixwJCxjNixxJCxjNixyJCxjNixzJCxjNix0JCxjNix1JCxjNix2JCxjNix3JCxjNix4JCxjNix5JCxjNix6JCxjNixBJCxjNixCJCxjNixDJCxjNixEJCxjNixFJCxjNixGJCxjNixHJCxjNixIJCxjNixJJCxjNixKJCxjNixLJCxjNixMJCxjNixNJCxjNixOJCxjNixPJCxjNixQJCxjNixRJCxjNixSJCxjNixTJCxjNixUJCxjNixVJCxjNixWJCxjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNixjNl07dmFyIGVjPVtkNixkNixYJCxkNixZJCxkNixaJCxkNixfJCxkNiwkJCxkNixhMCxkNixiMCxkNixjMCxkNixkMCxkNixlMCxkNixmMCxkNixnMCxkNixoMCxkNixpMCxkNixqMCxkNixrMCxkNixsMCxkNixtMCxkNixuMCxkNixvMCxkNixwMCxkNixxMCxkNixyMCxkNixzMCxkNix0MCxkNix1MCxkNix2MCxkNix3MCxkNix4MCxkNix5MCxkNix6MCxkNixBMCxkNixCMCxkNixDMCxkNixEMCxkNixFMCxkNixGMCxkNixHMCxkNixIMCxkNixJMCxkNixKMCxkNixLMCxkNixMMCxkNixNMCxkNixOMCxkNixPMCxkNixQMCxkNixRMCxkNixSMCxkNixTMCxkNixUMCxkNixVMCxkNixWMCxkNixXMCxkNixYMCxkNixZMCxkNixaMCxkNixfMCxkNiwkMCxkNixhMSxkNixiMSxkNixjMSxkNixkMSxkNixlMSxkNixITixJTixqbCxxcSxHcSxZcSxjTyxnTyxfaCx3aSxMaixSaixVayxWayxkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNixkNl07dmFyIGZjPVtlNixlNixnMSxlNixoMSxlNixpMSxlNixqMSxlNixrMSxlNixsMSxlNixtMSxlNixuMSxlNixvMSxlNixwMSxlNixxMSxlNixyMSxlNixzMSxlNix0MSxlNix1MSxlNix2MSxlNix3MSxlNix4MSxlNix5MSxlNix6MSxlNixBMSxlNixCMSxlNixDMSxlNixEMSxlNixFMSxlNixGMSxlNixHMSxlNixIMSxlNixJMSxlNixKMSxlNixLMSxlNixMMSxlNixNMSxlNixOMSxlNixPMSxlNixQMSxlNixRMSxlNixSMSxlNixTMSxlNixUMSxlNixVMSxlNixWMSxlNixXMSxlNixYMSxlNixZMSxlNixaMSxlNixfMSxlNiwkMSxlNixhMixlNixiMixlNixjMixlNixkMixlNixlMixlNixmMixlNixnMixlNixoMixlNixpMixlNixqMixlNixrMixlNixsMixlNixtMixlNixuMixlNixvMixlNixwMixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNixlNl07dmFyIGdjPVtmNixmNixyMixmNixzMixmNix0MixmNix1MixmNix2MixmNix3MixmNix4MixmNix5MixmNix6MixmNixBMixmNixCMixmNixDMixmNixEMixmNixFMixmNixGMixmNixHMixmNixIMixmNixJMixmNixKMixmNixLMixmNixMMixmNixNMixmNixOMixmNixPMixmNixQMixmNixRMixmNixSMixmNixTMixmNixUMixmNixVMixmNixWMixmNixXMixmNixYMixmNixZMixmNixaMixmNixfMixmNiwkMixmNixhMyxmNixiMyxmNixjMyxmNixkMyxmNixlMyxmNixmMyxmNixnMyxmNixoMyxmNixpMyxmNixqMyxmNixrMyxmNixsMyxmNixtMyxmNixuMyxmNixvMyxmNixwMyxmNixxMyxmNixyMyxmNixzMyxmNix0MyxmNix1MyxmNix2MyxmNix3MyxmNix4MyxmNix5MyxmNix6MyxmNixBMyxmNixLTixMTixOTixQTixRTiwkayxjbCxpbCxwbCxxbCxybCxzbCxDayxFayxLayxNcSxPcSxVcSxfciwkcixkdixiUCxGTyxSTixXTixYTixZTixaTixfTixlTyx4UixDUixmUixjUixCUixiUixvTyxlUixhUixkUixITyxJTyxKTyxTTyxUTyxVTyx1ZCx2ZCxzaSxqZyxXayxYayxZbCxabCxhbSxBbSxFdCxJcyxndSxpdSxCeSx0eix1eixJeSxKeSxneixueixJQixKQixWRSxHRyxMRixNRixySCxzSCxmNixmNixmNixmNixmNixmNixmNixmNixmNixmNixmNixmNixmNixmNixmNixmNixmNixmNixmNixmNixmNixmNixmNixmNixmNixmNixmNixmNixmNixmNixmNixmNixmNixmNixmNixmNixmNixmNixmNixmNixmNixmNixmNixmNixmNixmNixmNixmNixmNixmNixmNl07dmFyIGhjPVtnNixnNixDMyxnNixEMyxnNixFMyxnNixGMyxnNixHMyxnNixIMyxnNixJMyxnNixKMyxnNixLMyxnNixMMyxnNixNMyxnNixOMyxnNixPMyxnNixQMyxnNixRMyxnNixSMyxnNixTMyxnNixUMyxnNixVMyxnNixWMyxnNixXMyxnNixYMyxnNixZMyxnNixaMyxnNixfMyxnNiwkMyxnNixhNCxnNixiNCxnNixjNCxnNixkNCxnNixlNCxnNixmNCxnNixnNCxnNixoNCxnNixpNCxnNixqNCxnNixrNCxnNixsNCxnNixtNCxnNixuNCxnNixvNCxnNixwNCxnNixxNCxnNixyNCxnNixzNCxnNix0NCxnNix1NCxnNix2NCxnNix3NCxnNix4NCxnNix5NCxnNix6NCxnNixBNCxnNixCNCxnNixDNCxnNixENCxnNixFNCxnNixGNCxnNixHNCxnNixINCxnNixJNCxnNixKNCxnNixLNCxnNixMNCxnNixGTixlbCxvbCxHayxRcSxYcixZcixUTixVTixmTyxWTyxpayxqayxnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNixnNl07dmFyIGljPVtoNixoNixONCxoNixPNCxoNixQNCxoNixRNCxoNixSNCxoNixTNCxoNixUNCxoNixVNCxoNixWNCxoNixXNCxoNixYNCxoNixZNCxoNixaNCxoNixfNCxoNiwkNCxoNixhNSxoNixiNSxoNixjNSxoNixkNSxoNixlNSxoNixmNSxoNixnNSxoNixoNSxoNixpNSxoNixqNSxoNixrNSxoNixsNSxoNixtNSxoNixuNSxoNixvNSxoNixwNSxoNixxNSxoNixyNSxoNixzNSxoNix0NSxoNix1NSxoNix2NSxoNix3NSxoNix4NSxoNix5NSxoNix6NSxoNixBNSxoNixCNSxoNixDNSxoNixENSxoNixFNSxoNixGNSxoNixHNSxoNixINSxoNixJNSxoNixKNSxoNixLNSxoNixMNSxoNixNNSxoNixONSxoNixPNSxoNixQNSxoNixRNSxoNixSNSxoNixTNSxoNixUNSxoNixVNSxoNixWNSxoNixXNSxoNixOdSxGZCxIZCxzQix0QixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNixoNl07cmV0dXJue19zcWxpdGUzX3ZhbHVlX2Jsb2I6aWUsX3NxbGl0ZTNfY29sdW1uX25hbWU6UmUsX3NxbGl0ZTNfcmVzZXQ6Z2UsX3NxbGl0ZTNfY29sdW1uX3R5cGU6UWUsX3NxbGl0ZTNfZXhlYzprZixfc3FsaXRlM19yZXN1bHRfbnVsbDp2ZSxfc3FsaXRlM19zdGVwOkRlLF9iaXRzaGlmdDY0THNocjphUyxfc3FsaXRlM19wcmVwYXJlX3YyOmxmLF9zcWxpdGUzX2Nsb3NlX3YyOkRmLF9zcWxpdGUzX29wZW46UGYsX2JpdHNoaWZ0NjRTaGw6ZVMsX3NxbGl0ZTNfcmVzdWx0X3RleHQ6d2UsX2ZmbHVzaDptUixfc3FsaXRlM19jb2x1bW5fYnl0ZXM6S2UsX3NxbGl0ZTNfYmluZF9pbnQ6VWUsX3NxbGl0ZTNfYmluZF9ibG9iOlNlLF9tZW1zZXQ6ZFMsX3NxbGl0ZTNfdmFsdWVfZG91YmxlOmxlLF9tZW1jcHk6YlMsX3NxbGl0ZTNfcmVzdWx0X2RvdWJsZTpyZSxfc3FsaXRlM192YWx1ZV90ZXh0OmplLF9zcWxpdGUzX2NoYW5nZXM6QWYsX3NxbGl0ZTNfY29sdW1uX2Jsb2I6SmUsX3NxbGl0ZTNfYmluZF9wYXJhbWV0ZXJfaW5kZXg6JGUsX3NxbGl0ZTNfdmFsdWVfdHlwZTpvZSxfaTY0U3VidHJhY3Q6X1IsX3NxbGl0ZTNfY29sdW1uX3RleHQ6T2UsX2k2NEFkZDokUixfc3FsaXRlM192YWx1ZV9ieXRlczprZSxfc3FsaXRlM19maW5hbGl6ZTpmZSxfc3FsaXRlM19jb2x1bW5fZG91YmxlOkxlLF9zcWxpdGUzX2NyZWF0ZV9mdW5jdGlvbl92MjpIZixfc3FsaXRlM19mcmVlOlVkLF9zcWxpdGUzX3ZhbHVlX2ludDptZSxfc3FsaXRlM19kYXRhX2NvdW50OkllLF9zcWxpdGUzX2JpbmRfdGV4dDpYZSxfc3FsaXRlM19iaW5kX2RvdWJsZTpUZSxfX19lcnJub19sb2NhdGlvbjpMUSxfUmVnaXN0ZXJFeHRlbnNpb25GdW5jdGlvbnM6c2MsX2ZyZWU6VVIsX21lbW1vdmU6Y1MsX3NxbGl0ZTNfZXJybXNnOm1mLF9zcWxpdGUzX2NsZWFyX2JpbmRpbmdzOmhlLF9tYWxsb2M6VFIscnVuUG9zdFNldHM6WlIsX2Vtc2NyaXB0ZW5fcmVwbGFjZV9tZW1vcnk6WGIsc3RhY2tBbGxvYzpqYyxzdGFja1NhdmU6a2Msc3RhY2tSZXN0b3JlOmxjLGVzdGFibGlzaFN0YWNrU3BhY2U6bWMsc2V0VGhyZXc6bmMsc2V0VGVtcFJldDA6cWMsZ2V0VGVtcFJldDA6cmMsZHluQ2FsbF9paWlpOm9TLGR5bkNhbGxfaTp6VCxkeW5DYWxsX3ZpOktVLGR5bkNhbGxfdmlpOlZWLGR5bkNhbGxfaWlpaWlpaTplWCxkeW5DYWxsX2lpOnBZLGR5bkNhbGxfdmlpaTpBWixkeW5DYWxsX3Y6TF8sZHluQ2FsbF9paWlpaTpXJCxkeW5DYWxsX3ZpaWlpaWk6ZjEsZHluQ2FsbF9paWk6cTIsZHluQ2FsbF9paWlpaWk6QjMsZHluQ2FsbF92aWlpaTpNNH19KVxuXG5cbi8vIEVNU0NSSVBURU5fRU5EX0FTTVxuKGYubWIsZi5uYixidWZmZXIpO2YuX3NxbGl0ZTNfdmFsdWVfYmxvYj1YLl9zcWxpdGUzX3ZhbHVlX2Jsb2I7Zi5fc3FsaXRlM19jb2x1bW5fbmFtZT1YLl9zcWxpdGUzX2NvbHVtbl9uYW1lO2YuX3NxbGl0ZTNfcmVzZXQ9WC5fc3FsaXRlM19yZXNldDtmLl9zcWxpdGUzX2NvbHVtbl90eXBlPVguX3NxbGl0ZTNfY29sdW1uX3R5cGU7Zi5fc3FsaXRlM19leGVjPVguX3NxbGl0ZTNfZXhlYztmLl9zcWxpdGUzX3Jlc3VsdF9udWxsPVguX3NxbGl0ZTNfcmVzdWx0X251bGw7Zi5fc3FsaXRlM19zdGVwPVguX3NxbGl0ZTNfc3RlcDt2YXIgWGM9Zi5fYml0c2hpZnQ2NExzaHI9WC5fYml0c2hpZnQ2NExzaHI7Zi5fc3FsaXRlM19wcmVwYXJlX3YyPVguX3NxbGl0ZTNfcHJlcGFyZV92MjtmLl9zcWxpdGUzX2Nsb3NlX3YyPVguX3NxbGl0ZTNfY2xvc2VfdjI7Zi5fc3FsaXRlM19vcGVuPVguX3NxbGl0ZTNfb3BlbjtcbnZhciBmZD1mLl9iaXRzaGlmdDY0U2hsPVguX2JpdHNoaWZ0NjRTaGw7Zi5fc3FsaXRlM19yZXN1bHRfdGV4dD1YLl9zcWxpdGUzX3Jlc3VsdF90ZXh0O2YuX2ZmbHVzaD1YLl9mZmx1c2g7Zi5fc3FsaXRlM19jb2x1bW5fYnl0ZXM9WC5fc3FsaXRlM19jb2x1bW5fYnl0ZXM7Zi5fc3FsaXRlM19iaW5kX2ludD1YLl9zcWxpdGUzX2JpbmRfaW50O2YuX3NxbGl0ZTNfYmluZF9ibG9iPVguX3NxbGl0ZTNfYmluZF9ibG9iO3ZhciBlZD1mLl9tZW1zZXQ9WC5fbWVtc2V0O2YuX3NxbGl0ZTNfdmFsdWVfZG91YmxlPVguX3NxbGl0ZTNfdmFsdWVfZG91YmxlO3ZhciBiZD1mLl9tZW1jcHk9WC5fbWVtY3B5O2YuX3NxbGl0ZTNfcmVzdWx0X2RvdWJsZT1YLl9zcWxpdGUzX3Jlc3VsdF9kb3VibGU7Zi5fc3FsaXRlM192YWx1ZV90ZXh0PVguX3NxbGl0ZTNfdmFsdWVfdGV4dDtmLl9zcWxpdGUzX2NoYW5nZXM9WC5fc3FsaXRlM19jaGFuZ2VzO2YuX3NxbGl0ZTNfY29sdW1uX2Jsb2I9WC5fc3FsaXRlM19jb2x1bW5fYmxvYjtcbmYuX3NxbGl0ZTNfYmluZF9wYXJhbWV0ZXJfaW5kZXg9WC5fc3FsaXRlM19iaW5kX3BhcmFtZXRlcl9pbmRleDtmLl9zcWxpdGUzX3ZhbHVlX3R5cGU9WC5fc3FsaXRlM192YWx1ZV90eXBlO3ZhciBEYj1mLl9pNjRTdWJ0cmFjdD1YLl9pNjRTdWJ0cmFjdDtmLl9zcWxpdGUzX2NvbHVtbl90ZXh0PVguX3NxbGl0ZTNfY29sdW1uX3RleHQ7dmFyIEViPWYuX2k2NEFkZD1YLl9pNjRBZGQ7Zi5fc3FsaXRlM192YWx1ZV9ieXRlcz1YLl9zcWxpdGUzX3ZhbHVlX2J5dGVzO2YuX3NxbGl0ZTNfZmluYWxpemU9WC5fc3FsaXRlM19maW5hbGl6ZTtmLl9zcWxpdGUzX2NvbHVtbl9kb3VibGU9WC5fc3FsaXRlM19jb2x1bW5fZG91YmxlO2YuX3NxbGl0ZTNfY3JlYXRlX2Z1bmN0aW9uX3YyPVguX3NxbGl0ZTNfY3JlYXRlX2Z1bmN0aW9uX3YyO2YuX3NxbGl0ZTNfZnJlZT1YLl9zcWxpdGUzX2ZyZWU7Zi5fc3FsaXRlM192YWx1ZV9pbnQ9WC5fc3FsaXRlM192YWx1ZV9pbnQ7XG5mLl9zcWxpdGUzX2RhdGFfY291bnQ9WC5fc3FsaXRlM19kYXRhX2NvdW50O2YuX3NxbGl0ZTNfYmluZF90ZXh0PVguX3NxbGl0ZTNfYmluZF90ZXh0O2YuX3NxbGl0ZTNfYmluZF9kb3VibGU9WC5fc3FsaXRlM19iaW5kX2RvdWJsZTtmLl9fX2Vycm5vX2xvY2F0aW9uPVguX19fZXJybm9fbG9jYXRpb247Zi5fUmVnaXN0ZXJFeHRlbnNpb25GdW5jdGlvbnM9WC5fUmVnaXN0ZXJFeHRlbnNpb25GdW5jdGlvbnM7dmFyIFJhPWYuX2ZyZWU9WC5fZnJlZTtmLnJ1blBvc3RTZXRzPVgucnVuUG9zdFNldHM7dmFyIGNkPWYuX21lbW1vdmU9WC5fbWVtbW92ZTtmLl9zcWxpdGUzX2Vycm1zZz1YLl9zcWxpdGUzX2Vycm1zZztmLl9zcWxpdGUzX2NsZWFyX2JpbmRpbmdzPVguX3NxbGl0ZTNfY2xlYXJfYmluZGluZ3M7dmFyIElhPWYuX21hbGxvYz1YLl9tYWxsb2MsYWI9Zi5fZW1zY3JpcHRlbl9yZXBsYWNlX21lbW9yeT1YLl9lbXNjcmlwdGVuX3JlcGxhY2VfbWVtb3J5O1xuZi5keW5DYWxsX2lpaWk9WC5keW5DYWxsX2lpaWk7Zi5keW5DYWxsX2k9WC5keW5DYWxsX2k7Zi5keW5DYWxsX3ZpPVguZHluQ2FsbF92aTtmLmR5bkNhbGxfdmlpPVguZHluQ2FsbF92aWk7Zi5keW5DYWxsX2lpaWlpaWk9WC5keW5DYWxsX2lpaWlpaWk7Zi5keW5DYWxsX2lpPVguZHluQ2FsbF9paTtmLmR5bkNhbGxfdmlpaT1YLmR5bkNhbGxfdmlpaTtmLmR5bkNhbGxfdj1YLmR5bkNhbGxfdjtmLmR5bkNhbGxfaWlpaWk9WC5keW5DYWxsX2lpaWlpO2YuZHluQ2FsbF92aWlpaWlpPVguZHluQ2FsbF92aWlpaWlpO2YuZHluQ2FsbF9paWk9WC5keW5DYWxsX2lpaTtmLmR5bkNhbGxfaWlpaWlpPVguZHluQ2FsbF9paWlpaWk7Zi5keW5DYWxsX3ZpaWlpPVguZHluQ2FsbF92aWlpaTtsLlI9WC5zdGFja0FsbG9jO2wucWE9WC5zdGFja1NhdmU7bC5nYT1YLnN0YWNrUmVzdG9yZTtsLndlPVguZXN0YWJsaXNoU3RhY2tTcGFjZTtsLlFiPVguc2V0VGVtcFJldDA7bC5BYj1YLmdldFRlbXBSZXQwO1xuZnVuY3Rpb24gbGEoYSl7dGhpcy5uYW1lPVwiRXhpdFN0YXR1c1wiO3RoaXMubWVzc2FnZT1cIlByb2dyYW0gdGVybWluYXRlZCB3aXRoIGV4aXQoXCIrYStcIilcIjt0aGlzLnN0YXR1cz1hfWxhLnByb3RvdHlwZT1FcnJvcigpO2xhLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1sYTt2YXIgWmQ9bnVsbCx6Yj1mdW5jdGlvbiAkZCgpe2YuY2FsbGVkUnVufHxhZSgpO2YuY2FsbGVkUnVufHwoemI9JGQpfTtcbmYuY2FsbE1haW49Zi50ZT1mdW5jdGlvbihhKXtmdW5jdGlvbiBiKCl7Zm9yKHZhciBhPTA7Mz5hO2ErKylkLnB1c2goMCl9YXNzZXJ0KDA9PXhiLFwiY2Fubm90IGNhbGwgbWFpbiB3aGVuIGFzeW5jIGRlcGVuZGVuY2llcyByZW1haW4hIChsaXN0ZW4gb24gX19BVE1BSU5fXylcIik7YXNzZXJ0KDA9PWZiLmxlbmd0aCxcImNhbm5vdCBjYWxsIG1haW4gd2hlbiBwcmVSdW4gZnVuY3Rpb25zIHJlbWFpbiB0byBiZSBjYWxsZWRcIik7YT1hfHxbXTtMYXx8KExhPSEwLGViKGdiKSk7dmFyIGM9YS5sZW5ndGgrMSxkPVt6KEQoZi50aGlzUHJvZ3JhbSksXCJpOFwiLDApXTtiKCk7Zm9yKHZhciBlPTA7ZTxjLTE7ZSs9MSlkLnB1c2goeihEKGFbZV0pLFwiaThcIiwwKSksYigpO2QucHVzaCgwKTtkPXooZCxcImkzMlwiLDApO3RyeXt2YXIgZz1mLl9tYWluKGMsZCwwKTtiZShnLCEwKX1jYXRjaChoKXtpZighKGggaW5zdGFuY2VvZiBsYSkpaWYoXCJTaW11bGF0ZUluZmluaXRlTG9vcFwiPT1oKWYubm9FeGl0UnVudGltZT1cbiEwO2Vsc2UgdGhyb3cgaCYmXCJvYmplY3RcIj09PXR5cGVvZiBoJiZoLnN0YWNrJiZmLmZhKFwiZXhjZXB0aW9uIHRocm93bjogXCIrW2gsaC5zdGFja10pLGg7fWZpbmFsbHl7fX07XG5mdW5jdGlvbiBhZShhKXtmdW5jdGlvbiBiKCl7aWYoIWYuY2FsbGVkUnVuJiYoZi5jYWxsZWRSdW49ITAsIXBhKSl7TGF8fChMYT0hMCxlYihnYikpO2ViKGhiKTtpZihmLm9uUnVudGltZUluaXRpYWxpemVkKWYub25SdW50aW1lSW5pdGlhbGl6ZWQoKTtmLl9tYWluJiZjZSYmZi5jYWxsTWFpbihhKTtpZihmLnBvc3RSdW4pZm9yKFwiZnVuY3Rpb25cIj09dHlwZW9mIGYucG9zdFJ1biYmKGYucG9zdFJ1bj1bZi5wb3N0UnVuXSk7Zi5wb3N0UnVuLmxlbmd0aDspbGIoZi5wb3N0UnVuLnNoaWZ0KCkpO2ViKGpiKX19YT1hfHxmLmFyZ3VtZW50cztudWxsPT09WmQmJihaZD1EYXRlLm5vdygpKTtpZighKDA8eGIpKXtpZihmLnByZVJ1bilmb3IoXCJmdW5jdGlvblwiPT10eXBlb2YgZi5wcmVSdW4mJihmLnByZVJ1bj1bZi5wcmVSdW5dKTtmLnByZVJ1bi5sZW5ndGg7KWtiKGYucHJlUnVuLnNoaWZ0KCkpO2ViKGZiKTswPHhifHxmLmNhbGxlZFJ1bnx8KGYuc2V0U3RhdHVzPyhmLnNldFN0YXR1cyhcIlJ1bm5pbmcuLi5cIiksXG5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7c2V0VGltZW91dChmdW5jdGlvbigpe2Yuc2V0U3RhdHVzKFwiXCIpfSwxKTtiKCl9LDEpKTpiKCkpfX1mLnJ1bj1mLnJ1bj1hZTtmdW5jdGlvbiBiZShhLGIpe2lmKCFifHwhZi5ub0V4aXRSdW50aW1lKXtpZighZi5ub0V4aXRSdW50aW1lJiYocGE9ITAsaz12b2lkIDAsZWIoaWIpLGYub25FeGl0KSlmLm9uRXhpdChhKTtmYT8ocHJvY2Vzcy5zdGRvdXQub25jZShcImRyYWluXCIsZnVuY3Rpb24oKXtwcm9jZXNzLmV4aXQoYSl9KSxjb25zb2xlLmxvZyhcIiBcIiksc2V0VGltZW91dChmdW5jdGlvbigpe3Byb2Nlc3MuZXhpdChhKX0sNTAwKSk6Z2EmJlwiZnVuY3Rpb25cIj09PXR5cGVvZiBxdWl0JiZxdWl0KGEpO3Rocm93IG5ldyBsYShhKTt9fWYuZXhpdD1mLmV4aXQ9YmU7dmFyIGRlPVtdO1xuZnVuY3Rpb24gcShhKXt2b2lkIDAhPT1hPyhmLnByaW50KGEpLGYuZmEoYSksYT1KU09OLnN0cmluZ2lmeShhKSk6YT1cIlwiO3BhPSEwO3ZhciBiPVwiYWJvcnQoXCIrYStcIikgYXQgXCIrU2EoKStcIlxcbklmIHRoaXMgYWJvcnQoKSBpcyB1bmV4cGVjdGVkLCBidWlsZCB3aXRoIC1zIEFTU0VSVElPTlM9MSB3aGljaCBjYW4gZ2l2ZSBtb3JlIGluZm9ybWF0aW9uLlwiO2RlJiZkZS5mb3JFYWNoKGZ1bmN0aW9uKGMpe2I9YyhiLGEpfSk7dGhyb3cgYjt9Zi5hYm9ydD1mLmFib3J0PXE7aWYoZi5wcmVJbml0KWZvcihcImZ1bmN0aW9uXCI9PXR5cGVvZiBmLnByZUluaXQmJihmLnByZUluaXQ9W2YucHJlSW5pdF0pOzA8Zi5wcmVJbml0Lmxlbmd0aDspZi5wcmVJbml0LnBvcCgpKCk7dmFyIGNlPSEwO2Yubm9Jbml0aWFsUnVuJiYoY2U9ITEpO2FlKCk7XG52YXIgRGF0YWJhc2UsZWUsZmUsWSxnZSxaLGhlLGllLGplLGtlLGxlLG1lLG5lLG9lLHBlLHFlLHJlLHNlLHRlLHVlLHZlLHdlLHhlLHllLHplLEFlLEJlLENlLERlLEVlLEZlLEdlLEhlLEllLEplLEtlLExlLE1lLE5lLE9lLGw9Zi5SdW50aW1lO1o9bC5SKDQpO1k9e307XG5nZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGEoYSxjKXt0aGlzLnU9YTt0aGlzLmRiPWM7dGhpcy5LPTE7dGhpcy52YT1bXX1hLnByb3RvdHlwZS5iaW5kPWZ1bmN0aW9uKGEpe2lmKCF0aGlzLnUpdGhyb3dcIlN0YXRlbWVudCBjbG9zZWRcIjt0aGlzLnJlc2V0KCk7cmV0dXJuIEFycmF5LmlzQXJyYXkoYSk/dGhpcy5wYihhKTp0aGlzLnFiKGEpfTthLnByb3RvdHlwZS5zdGVwPWZ1bmN0aW9uKCl7dmFyIGE7aWYoIXRoaXMudSl0aHJvd1wiU3RhdGVtZW50IGNsb3NlZFwiO3RoaXMuSz0xO3N3aXRjaChhPUllKHRoaXMudSkpe2Nhc2UgWS5oYjpyZXR1cm4hMDtjYXNlIFkuRE9ORTpyZXR1cm4hMTtkZWZhdWx0OnJldHVybiB0aGlzLmRiLmhhbmRsZUVycm9yKGEpfX07YS5wcm90b3R5cGUueWI9ZnVuY3Rpb24oYSl7bnVsbD09YSYmKGE9dGhpcy5LKyspO3JldHVybiBzZSh0aGlzLnUsYSl9O2EucHJvdG90eXBlLnpiPWZ1bmN0aW9uKGEpe251bGw9PWEmJihhPXRoaXMuSysrKTtyZXR1cm4gdWUodGhpcy51LFxuYSl9O2EucHJvdG90eXBlLmdldEJsb2I9ZnVuY3Rpb24oYSl7dmFyIGMsZCxlLGc7bnVsbD09YSYmKGE9dGhpcy5LKyspO2c9cmUodGhpcy51LGEpO2Q9cWUodGhpcy51LGEpO2U9bmV3IFVpbnQ4QXJyYXkoZyk7Zm9yKGE9Yz0wOzA8PWc/YzxnOmM+ZzthPTA8PWc/KytjOi0tYyllW2FdPXdbZCthXTtyZXR1cm4gZX07YS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKGEpe3ZhciBjLGQsZTtudWxsIT1hJiZ0aGlzLmJpbmQoYSkmJnRoaXMuc3RlcCgpO2U9W107YT1jPTA7Zm9yKGQ9eGUodGhpcy51KTswPD1kP2M8ZDpjPmQ7YT0wPD1kPysrYzotLWMpc3dpdGNoKHZlKHRoaXMudSxhKSl7Y2FzZSBZLmdiOmNhc2UgWS5GTE9BVDplLnB1c2godGhpcy55YihhKSk7YnJlYWs7Y2FzZSBZLmliOmUucHVzaCh0aGlzLnpiKGEpKTticmVhaztjYXNlIFkuY2I6ZS5wdXNoKHRoaXMuZ2V0QmxvYihhKSk7YnJlYWs7ZGVmYXVsdDplLnB1c2gobnVsbCl9cmV0dXJuIGV9O2EucHJvdG90eXBlLmdldENvbHVtbk5hbWVzPVxuZnVuY3Rpb24oKXt2YXIgYSxjLGQsZTtlPVtdO2E9Yz0wO2ZvcihkPXhlKHRoaXMudSk7MDw9ZD9jPGQ6Yz5kO2E9MDw9ZD8rK2M6LS1jKWUucHVzaCh0ZSh0aGlzLnUsYSkpO3JldHVybiBlfTthLnByb3RvdHlwZS5nZXRBc09iamVjdD1mdW5jdGlvbihhKXt2YXIgYyxkLGUsZyxoLG07bT10aGlzLmdldChhKTtnPXRoaXMuZ2V0Q29sdW1uTmFtZXMoKTtoPXt9O2E9Yz0wO2ZvcihkPWcubGVuZ3RoO2M8ZDthPSsrYyllPWdbYV0saFtlXT1tW2FdO3JldHVybiBofTthLnByb3RvdHlwZS5ydW49ZnVuY3Rpb24oYSl7bnVsbCE9YSYmdGhpcy5iaW5kKGEpO3RoaXMuc3RlcCgpO3JldHVybiB0aGlzLnJlc2V0KCl9O2EucHJvdG90eXBlLnRiPWZ1bmN0aW9uKGEsYyl7dmFyIGQsZTtudWxsPT1jJiYoYz10aGlzLksrKyk7ZD1EKGEpO3RoaXMudmEucHVzaChlPXooZCxcImk4XCIsMCkpO3RoaXMuZGIuaGFuZGxlRXJyb3IobWUodGhpcy51LGMsZSxkLmxlbmd0aC0xLDApKX07YS5wcm90b3R5cGUub2I9XG5mdW5jdGlvbihhLGMpe3ZhciBkO251bGw9PWMmJihjPXRoaXMuSysrKTt0aGlzLnZhLnB1c2goZD16KGEsXCJpOFwiLDApKTt0aGlzLmRiLmhhbmRsZUVycm9yKGllKHRoaXMudSxjLGQsYS5sZW5ndGgsMCkpfTthLnByb3RvdHlwZS5zYj1mdW5jdGlvbihhLGMpe251bGw9PWMmJihjPXRoaXMuSysrKTt0aGlzLmRiLmhhbmRsZUVycm9yKChhPT09KGF8MCk/a2U6amUpKHRoaXMudSxjLGEpKX07YS5wcm90b3R5cGUucmI9ZnVuY3Rpb24oYSl7bnVsbD09YSYmKGE9dGhpcy5LKyspO2llKHRoaXMudSxhLDAsMCwwKX07YS5wcm90b3R5cGUuTmE9ZnVuY3Rpb24oYSxjKXtudWxsPT1jJiYoYz10aGlzLksrKyk7c3dpdGNoKHR5cGVvZiBhKXtjYXNlIFwic3RyaW5nXCI6dGhpcy50YihhLGMpO2JyZWFrO2Nhc2UgXCJudW1iZXJcIjpjYXNlIFwiYm9vbGVhblwiOnRoaXMuc2IoYSswLGMpO2JyZWFrO2Nhc2UgXCJvYmplY3RcIjppZihudWxsPT09YSl7dGhpcy5yYihjKTticmVha31pZihudWxsIT1hLmxlbmd0aCl7dGhpcy5vYihhLFxuYyk7YnJlYWt9dGhyb3dcIldyb25nIEFQSSB1c2UgOiB0cmllZCB0byBiaW5kIGEgdmFsdWUgb2YgYW4gdW5rbm93biB0eXBlIChcIithK1wiKS5cIjt9fTthLnByb3RvdHlwZS5xYj1mdW5jdGlvbihhKXt2YXIgYyxkLGU7Zm9yKGMgaW4gYSllPWFbY10sZD1sZSh0aGlzLnUsYyksMCE9PWQmJnRoaXMuTmEoZSxkKTtyZXR1cm4hMH07YS5wcm90b3R5cGUucGI9ZnVuY3Rpb24oYSl7dmFyIGMsZCxlLGc7ZT1jPTA7Zm9yKGQ9YS5sZW5ndGg7YzxkO2U9KytjKWc9YVtlXSx0aGlzLk5hKGcsZSsxKTtyZXR1cm4hMH07YS5wcm90b3R5cGUucmVzZXQ9ZnVuY3Rpb24oKXt0aGlzLmZyZWVtZW0oKTtyZXR1cm4gb2UodGhpcy51KT09PVkua2EmJkVlKHRoaXMudSk9PT1ZLmthfTthLnByb3RvdHlwZS5mcmVlbWVtPWZ1bmN0aW9uKCl7Zm9yKHZhciBhO2E9dGhpcy52YS5wb3AoKTspUmEoYSk7cmV0dXJuIG51bGx9O2EucHJvdG90eXBlLmZyZWU9ZnVuY3Rpb24oKXt2YXIgYTt0aGlzLmZyZWVtZW0oKTtcbmE9QWUodGhpcy51KT09PVkua2E7ZGVsZXRlIHRoaXMuZGIucmFbdGhpcy51XTt0aGlzLnU9ZWU7cmV0dXJuIGF9O3JldHVybiBhfSgpO1xuRGF0YWJhc2U9ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGEpe3RoaXMuZmlsZW5hbWU9XCJkYmZpbGVfXCIrKDQyOTQ5NjcyOTUqTWF0aC5yYW5kb20oKT4+PjApO251bGwhPWEmJktjKFwiL1wiLHRoaXMuZmlsZW5hbWUsYSwhMCwhMCk7dGhpcy5oYW5kbGVFcnJvcihCZSh0aGlzLmZpbGVuYW1lLFopKTt0aGlzLmRiPUhhKFosXCJpMzJcIik7ZmUodGhpcy5kYik7dGhpcy5yYT17fX1hLnByb3RvdHlwZS5ydW49ZnVuY3Rpb24oYSxjKXt2YXIgZDtpZighdGhpcy5kYil0aHJvd1wiRGF0YWJhc2UgY2xvc2VkXCI7Yz8oZD10aGlzLnByZXBhcmUoYSxjKSxkLnN0ZXAoKSxkLmZyZWUoKSk6dGhpcy5oYW5kbGVFcnJvcih6ZSh0aGlzLmRiLGEsMCwwLFopKTtyZXR1cm4gdGhpc307YS5wcm90b3R5cGUuZXhlYz1mdW5jdGlvbihhKXt2YXIgYyxkLGUsZyxoO2lmKCF0aGlzLmRiKXRocm93XCJEYXRhYmFzZSBjbG9zZWRcIjtnPWwucWEoKTtkPWwuUihhLmxlbmd0aDw8Myk7eGEoYSxkKTthPWwuUig0KTtmb3IoZT1cbltdO0hhKGQsXCJpOFwiKSE9PWVlOylpZih6YShaLDAsXCJpMzJcIiksemEoYSwwLFwiaTMyXCIpLHRoaXMuaGFuZGxlRXJyb3IoRGUodGhpcy5kYixkLC0xLFosYSkpLGM9SGEoWixcImkzMlwiKSxkPUhhKGEsXCJpMzJcIiksYyE9PWVlKXtoPW5ldyBnZShjLHRoaXMpO2ZvcihjPW51bGw7aC5zdGVwKCk7KW51bGw9PT1jJiYoYz17Y29sdW1uczpoLmdldENvbHVtbk5hbWVzKCksdmFsdWVzOltdfSxlLnB1c2goYykpLGMudmFsdWVzLnB1c2goaC5nZXQoKSk7aC5mcmVlKCl9bC5nYShnKTtyZXR1cm4gZX07YS5wcm90b3R5cGUuZWFjaD1mdW5jdGlvbihhLGMsZCxlKXtcImZ1bmN0aW9uXCI9PT10eXBlb2YgYyYmKGU9ZCxkPWMsYz12b2lkIDApO2ZvcihhPXRoaXMucHJlcGFyZShhLGMpO2Euc3RlcCgpOylkKGEuZ2V0QXNPYmplY3QoKSk7YS5mcmVlKCk7aWYoXCJmdW5jdGlvblwiPT09dHlwZW9mIGUpcmV0dXJuIGUoKX07YS5wcm90b3R5cGUucHJlcGFyZT1mdW5jdGlvbihhLGMpe3ZhciBkLGU7emEoWiwwLFxuXCJpMzJcIik7dGhpcy5oYW5kbGVFcnJvcihDZSh0aGlzLmRiLGEsLTEsWixlZSkpO2Q9SGEoWixcImkzMlwiKTtpZihkPT09ZWUpdGhyb3dcIk5vdGhpbmcgdG8gcHJlcGFyZVwiO2U9bmV3IGdlKGQsdGhpcyk7bnVsbCE9YyYmZS5iaW5kKGMpO3JldHVybiB0aGlzLnJhW2RdPWV9O2EucHJvdG90eXBlW1wiZXhwb3J0XCJdPWZ1bmN0aW9uKCl7dmFyIGEsYyxkLGU7ZD10aGlzLnJhO2ZvcihhIGluIGQpZT1kW2FdLGUuZnJlZSgpO3RoaXMuaGFuZGxlRXJyb3IocGUodGhpcy5kYikpO2U9dGhpcy5maWxlbmFtZTthPWE9e2VuY29kaW5nOlwiYmluYXJ5XCJ9O2EuZmxhZ3M9YS5mbGFnc3x8XCJyXCI7YS5lbmNvZGluZz1hLmVuY29kaW5nfHxcImJpbmFyeVwiO2lmKFwidXRmOFwiIT09YS5lbmNvZGluZyYmXCJiaW5hcnlcIiE9PWEuZW5jb2RpbmcpdGhyb3cgRXJyb3IoJ0ludmFsaWQgZW5jb2RpbmcgdHlwZSBcIicrYS5lbmNvZGluZysnXCInKTtkPUFjKGUsYS5mbGFncyk7ZT12YyhlKS5zaXplO3ZhciBnPW5ldyBVaW50OEFycmF5KGUpO1xuRWMoZCxnLDAsZSwwKTtcInV0ZjhcIj09PWEuZW5jb2Rpbmc/Yz1OYShnLDApOlwiYmluYXJ5XCI9PT1hLmVuY29kaW5nJiYoYz1nKTtDYyhkKTt0aGlzLmhhbmRsZUVycm9yKEJlKHRoaXMuZmlsZW5hbWUsWikpO3RoaXMuZGI9SGEoWixcImkzMlwiKTtyZXR1cm4gY307YS5wcm90b3R5cGUuY2xvc2U9ZnVuY3Rpb24oKXt2YXIgYSxjLGQ7Yz10aGlzLnJhO2ZvcihhIGluIGMpZD1jW2FdLGQuZnJlZSgpO3RoaXMuaGFuZGxlRXJyb3IocGUodGhpcy5kYikpO3VjKFwiL1wiK3RoaXMuZmlsZW5hbWUpO3JldHVybiB0aGlzLmRiPW51bGx9O2EucHJvdG90eXBlLmhhbmRsZUVycm9yPWZ1bmN0aW9uKGEpe2lmKGE9PT1ZLmthKXJldHVybiBudWxsO2E9eWUodGhpcy5kYik7dGhyb3cgRXJyb3IoYSk7fTthLnByb3RvdHlwZS5nZXRSb3dzTW9kaWZpZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gbmUodGhpcy5kYil9O2EucHJvdG90eXBlLmNyZWF0ZV9mdW5jdGlvbj1mdW5jdGlvbihhLGMpe3ZhciBkO2Q9bC5MYShmdW5jdGlvbihhLFxuYixkKXt2YXIgbSx0LHIseCx2O3Q9W107Zm9yKG09cj0wOzA8PWI/cjw9YjpyPj1iO209MDw9Yj8rK3I6LS1yKXg9SGEoZCs0Km0sXCJpMzJcIiksdj1PZSh4KSxtPWZ1bmN0aW9uKCl7c3dpdGNoKCExKXtjYXNlIDEhPT12OnJldHVybiBNZTtjYXNlIDIhPT12OnJldHVybiBMZTtjYXNlIDMhPT12OnJldHVybiBOZTtjYXNlIDQhPT12OnJldHVybiBmdW5jdGlvbihhKXt2YXIgYixjLGQsZTtlPUtlKGEpO2I9SmUoYSk7YT1uZXcgVWludDhBcnJheShlKTtmb3IoYz1kPTA7MDw9ZT9kPGU6ZD5lO2M9MDw9ZT8rK2Q6LS1kKWFbY109d1tiK2NdO3JldHVybiBhfTtkZWZhdWx0OnJldHVybiBmdW5jdGlvbigpe3JldHVybiBudWxsfX19KCksbT1tKHgpLHQucHVzaChtKTtpZihiPWMuYXBwbHkobnVsbCx0KSlzd2l0Y2godHlwZW9mIGIpe2Nhc2UgXCJudW1iZXJcIjpyZXR1cm4gRmUoYSxiKTtjYXNlIFwic3RyaW5nXCI6cmV0dXJuIEhlKGEsYiwtMSwtMSl9ZWxzZSByZXR1cm4gR2UoYSl9KTt0aGlzLmhhbmRsZUVycm9yKHdlKHRoaXMuZGIsXG5hLGMubGVuZ3RoLFkuamIsMCxkLDAsMCwwKSk7cmV0dXJuIHRoaXN9O3JldHVybiBhfSgpO0JlPWYuY3dyYXAoXCJzcWxpdGUzX29wZW5cIixcIm51bWJlclwiLFtcInN0cmluZ1wiLFwibnVtYmVyXCJdKTtwZT1mLmN3cmFwKFwic3FsaXRlM19jbG9zZV92MlwiLFwibnVtYmVyXCIsW1wibnVtYmVyXCJdKTt6ZT1mLmN3cmFwKFwic3FsaXRlM19leGVjXCIsXCJudW1iZXJcIixbXCJudW1iZXJcIixcInN0cmluZ1wiLFwibnVtYmVyXCIsXCJudW1iZXJcIixcIm51bWJlclwiXSk7Zi5jd3JhcChcInNxbGl0ZTNfZnJlZVwiLFwiXCIsW1wibnVtYmVyXCJdKTtuZT1mLmN3cmFwKFwic3FsaXRlM19jaGFuZ2VzXCIsXCJudW1iZXJcIixbXCJudW1iZXJcIl0pO0NlPWYuY3dyYXAoXCJzcWxpdGUzX3ByZXBhcmVfdjJcIixcIm51bWJlclwiLFtcIm51bWJlclwiLFwic3RyaW5nXCIsXCJudW1iZXJcIixcIm51bWJlclwiLFwibnVtYmVyXCJdKTtEZT1mLmN3cmFwKFwic3FsaXRlM19wcmVwYXJlX3YyXCIsXCJudW1iZXJcIixbXCJudW1iZXJcIixcIm51bWJlclwiLFwibnVtYmVyXCIsXCJudW1iZXJcIixcIm51bWJlclwiXSk7XG5tZT1mLmN3cmFwKFwic3FsaXRlM19iaW5kX3RleHRcIixcIm51bWJlclwiLFtcIm51bWJlclwiLFwibnVtYmVyXCIsXCJudW1iZXJcIixcIm51bWJlclwiLFwibnVtYmVyXCJdKTtpZT1mLmN3cmFwKFwic3FsaXRlM19iaW5kX2Jsb2JcIixcIm51bWJlclwiLFtcIm51bWJlclwiLFwibnVtYmVyXCIsXCJudW1iZXJcIixcIm51bWJlclwiLFwibnVtYmVyXCJdKTtqZT1mLmN3cmFwKFwic3FsaXRlM19iaW5kX2RvdWJsZVwiLFwibnVtYmVyXCIsW1wibnVtYmVyXCIsXCJudW1iZXJcIixcIm51bWJlclwiXSk7a2U9Zi5jd3JhcChcInNxbGl0ZTNfYmluZF9pbnRcIixcIm51bWJlclwiLFtcIm51bWJlclwiLFwibnVtYmVyXCIsXCJudW1iZXJcIl0pO2xlPWYuY3dyYXAoXCJzcWxpdGUzX2JpbmRfcGFyYW1ldGVyX2luZGV4XCIsXCJudW1iZXJcIixbXCJudW1iZXJcIixcInN0cmluZ1wiXSk7SWU9Zi5jd3JhcChcInNxbGl0ZTNfc3RlcFwiLFwibnVtYmVyXCIsW1wibnVtYmVyXCJdKTt5ZT1mLmN3cmFwKFwic3FsaXRlM19lcnJtc2dcIixcInN0cmluZ1wiLFtcIm51bWJlclwiXSk7XG54ZT1mLmN3cmFwKFwic3FsaXRlM19kYXRhX2NvdW50XCIsXCJudW1iZXJcIixbXCJudW1iZXJcIl0pO3NlPWYuY3dyYXAoXCJzcWxpdGUzX2NvbHVtbl9kb3VibGVcIixcIm51bWJlclwiLFtcIm51bWJlclwiLFwibnVtYmVyXCJdKTt1ZT1mLmN3cmFwKFwic3FsaXRlM19jb2x1bW5fdGV4dFwiLFwic3RyaW5nXCIsW1wibnVtYmVyXCIsXCJudW1iZXJcIl0pO3FlPWYuY3dyYXAoXCJzcWxpdGUzX2NvbHVtbl9ibG9iXCIsXCJudW1iZXJcIixbXCJudW1iZXJcIixcIm51bWJlclwiXSk7cmU9Zi5jd3JhcChcInNxbGl0ZTNfY29sdW1uX2J5dGVzXCIsXCJudW1iZXJcIixbXCJudW1iZXJcIixcIm51bWJlclwiXSk7dmU9Zi5jd3JhcChcInNxbGl0ZTNfY29sdW1uX3R5cGVcIixcIm51bWJlclwiLFtcIm51bWJlclwiLFwibnVtYmVyXCJdKTt0ZT1mLmN3cmFwKFwic3FsaXRlM19jb2x1bW5fbmFtZVwiLFwic3RyaW5nXCIsW1wibnVtYmVyXCIsXCJudW1iZXJcIl0pO0VlPWYuY3dyYXAoXCJzcWxpdGUzX3Jlc2V0XCIsXCJudW1iZXJcIixbXCJudW1iZXJcIl0pO1xub2U9Zi5jd3JhcChcInNxbGl0ZTNfY2xlYXJfYmluZGluZ3NcIixcIm51bWJlclwiLFtcIm51bWJlclwiXSk7QWU9Zi5jd3JhcChcInNxbGl0ZTNfZmluYWxpemVcIixcIm51bWJlclwiLFtcIm51bWJlclwiXSk7d2U9Zi5jd3JhcChcInNxbGl0ZTNfY3JlYXRlX2Z1bmN0aW9uX3YyXCIsXCJudW1iZXJcIixcIm51bWJlciBzdHJpbmcgbnVtYmVyIG51bWJlciBudW1iZXIgbnVtYmVyIG51bWJlciBudW1iZXIgbnVtYmVyXCIuc3BsaXQoXCIgXCIpKTtPZT1mLmN3cmFwKFwic3FsaXRlM192YWx1ZV90eXBlXCIsXCJudW1iZXJcIixbXCJudW1iZXJcIl0pO0tlPWYuY3dyYXAoXCJzcWxpdGUzX3ZhbHVlX2J5dGVzXCIsXCJudW1iZXJcIixbXCJudW1iZXJcIl0pO05lPWYuY3dyYXAoXCJzcWxpdGUzX3ZhbHVlX3RleHRcIixcInN0cmluZ1wiLFtcIm51bWJlclwiXSk7TWU9Zi5jd3JhcChcInNxbGl0ZTNfdmFsdWVfaW50XCIsXCJudW1iZXJcIixbXCJudW1iZXJcIl0pO0plPWYuY3dyYXAoXCJzcWxpdGUzX3ZhbHVlX2Jsb2JcIixcIm51bWJlclwiLFtcIm51bWJlclwiXSk7XG5MZT1mLmN3cmFwKFwic3FsaXRlM192YWx1ZV9kb3VibGVcIixcIm51bWJlclwiLFtcIm51bWJlclwiXSk7RmU9Zi5jd3JhcChcInNxbGl0ZTNfcmVzdWx0X2RvdWJsZVwiLFwiXCIsW1wibnVtYmVyXCIsXCJudW1iZXJcIl0pO0dlPWYuY3dyYXAoXCJzcWxpdGUzX3Jlc3VsdF9udWxsXCIsXCJcIixbXCJudW1iZXJcIl0pO0hlPWYuY3dyYXAoXCJzcWxpdGUzX3Jlc3VsdF90ZXh0XCIsXCJcIixbXCJudW1iZXJcIixcInN0cmluZ1wiLFwibnVtYmVyXCIsXCJudW1iZXJcIl0pO2ZlPWYuY3dyYXAoXCJSZWdpc3RlckV4dGVuc2lvbkZ1bmN0aW9uc1wiLFwibnVtYmVyXCIsW1wibnVtYmVyXCJdKTt0aGlzLlNRTD17RGF0YWJhc2U6RGF0YWJhc2V9O2ZvcihoZSBpbiB0aGlzLlNRTClmW2hlXT10aGlzLlNRTFtoZV07ZWU9MDtZLmthPTA7WS5FUlJPUj0xO1kuJGQ9MjtZLmplPTM7WS5VYj00O1kuV2I9NTtZLmNlPTY7WS5OT01FTT03O1kubWU9ODtZLmFlPTk7WS5iZT0xMDtZLlpiPTExO1kuTk9URk9VTkQ9MTI7WS5ZZD0xMztZLlhiPTE0O1kua2U9MTU7XG5ZLkVNUFRZPTE2O1kubmU9MTc7WS5wZT0xODtZLlliPTE5O1kuZGU9MjA7WS5lZT0yMTtZLmZlPTIyO1kuVmI9MjM7WS5YZD0yNDtZLmxlPTI1O1kuZ2U9MjY7WS5oZT0yNztZLnFlPTI4O1kuaGI9MTAwO1kuRE9ORT0xMDE7WS5nYj0xO1kuRkxPQVQ9MjtZLmliPTM7WS5jYj00O1kuaWU9NTtZLmpiPTE7XG5cbnJldHVybiB0aGlzWydTUUwnXTtcbn0pKCk7XG5pZiAodHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcpIG1vZHVsZS5leHBvcnRzID0gU1FMO1xuaWYgKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicpIGRlZmluZShTUUwpO1xuIiwiLy8gVGhpcyBwcmV2ZW50cyBwb2xsdXRpb24gb2YgdGhlIGdsb2JhbCBuYW1lc3BhY2VcbnZhciBTUUwgPSAoZnVuY3Rpb24gKCkge1xudmFyIGY7Znx8KGY9ZXZhbChcIihmdW5jdGlvbigpIHsgdHJ5IHsgcmV0dXJuIE1vZHVsZSB8fCB7fSB9IGNhdGNoKGUpIHsgcmV0dXJuIHt9IH0gfSkoKVwiKSk7dmFyIGFhPXt9LGJhO2ZvcihiYSBpbiBmKWYuaGFzT3duUHJvcGVydHkoYmEpJiYoYWFbYmFdPWZbYmFdKTt2YXIgY2E9XCJvYmplY3RcIj09PXR5cGVvZiB3aW5kb3csZGE9XCJmdW5jdGlvblwiPT09dHlwZW9mIGltcG9ydFNjcmlwdHMsZWE9XCJvYmplY3RcIj09PXR5cGVvZiBwcm9jZXNzJiZcImZ1bmN0aW9uXCI9PT10eXBlb2YgcmVxdWlyZSYmIWNhJiYhZGEsZmE9IWNhJiYhZWEmJiFkYTtcbmlmKGVhKXtmLnByaW50fHwoZi5wcmludD1mdW5jdGlvbihhKXtwcm9jZXNzLnN0ZG91dC53cml0ZShhK1wiXFxuXCIpfSk7Zi5wcmludEVycnx8KGYucHJpbnRFcnI9ZnVuY3Rpb24oYSl7cHJvY2Vzcy5zdGRlcnIud3JpdGUoYStcIlxcblwiKX0pO3ZhciBnYT1yZXF1aXJlKFwiZnNcIiksaWE9cmVxdWlyZShcInBhdGhcIik7Zi5yZWFkPWZ1bmN0aW9uKGEsYil7YT1pYS5ub3JtYWxpemUoYSk7dmFyIGM9Z2EucmVhZEZpbGVTeW5jKGEpO2N8fGE9PWlhLnJlc29sdmUoYSl8fChhPXBhdGguam9pbihfX2Rpcm5hbWUsXCIuLlwiLFwic3JjXCIsYSksYz1nYS5yZWFkRmlsZVN5bmMoYSkpO2MmJiFiJiYoYz1jLnRvU3RyaW5nKCkpO3JldHVybiBjfTtmLnJlYWRCaW5hcnk9ZnVuY3Rpb24oYSl7YT1mLnJlYWQoYSwhMCk7YS5idWZmZXJ8fChhPW5ldyBVaW50OEFycmF5KGEpKTthc3NlcnQoYS5idWZmZXIpO3JldHVybiBhfTtmLmxvYWQ9ZnVuY3Rpb24oYSl7amEocmVhZChhKSl9O2YudGhpc1Byb2dyYW18fChmLnRoaXNQcm9ncmFtPVxuMTxwcm9jZXNzLmFyZ3YubGVuZ3RoP3Byb2Nlc3MuYXJndlsxXS5yZXBsYWNlKC9cXFxcL2csXCIvXCIpOlwidW5rbm93bi1wcm9ncmFtXCIpO2YuYXJndW1lbnRzPXByb2Nlc3MuYXJndi5zbGljZSgyKTtcInVuZGVmaW5lZFwiIT09dHlwZW9mIG1vZHVsZSYmKG1vZHVsZS5leHBvcnRzPWYpO3Byb2Nlc3Mub24oXCJ1bmNhdWdodEV4Y2VwdGlvblwiLGZ1bmN0aW9uKGEpe2lmKCEoYSBpbnN0YW5jZW9mIGthKSl0aHJvdyBhO30pO2YuaW5zcGVjdD1mdW5jdGlvbigpe3JldHVyblwiW0Vtc2NyaXB0ZW4gTW9kdWxlIG9iamVjdF1cIn19ZWxzZSBpZihmYSlmLnByaW50fHwoZi5wcmludD1wcmludCksXCJ1bmRlZmluZWRcIiE9dHlwZW9mIHByaW50RXJyJiYoZi5wcmludEVycj1wcmludEVyciksZi5yZWFkPVwidW5kZWZpbmVkXCIhPXR5cGVvZiByZWFkP3JlYWQ6ZnVuY3Rpb24oKXt0aHJvd1wibm8gcmVhZCgpIGF2YWlsYWJsZSAoanNjPylcIjt9LGYucmVhZEJpbmFyeT1mdW5jdGlvbihhKXtpZihcImZ1bmN0aW9uXCI9PT1cbnR5cGVvZiByZWFkYnVmZmVyKXJldHVybiBuZXcgVWludDhBcnJheShyZWFkYnVmZmVyKGEpKTthPXJlYWQoYSxcImJpbmFyeVwiKTthc3NlcnQoXCJvYmplY3RcIj09PXR5cGVvZiBhKTtyZXR1cm4gYX0sXCJ1bmRlZmluZWRcIiE9dHlwZW9mIHNjcmlwdEFyZ3M/Zi5hcmd1bWVudHM9c2NyaXB0QXJnczpcInVuZGVmaW5lZFwiIT10eXBlb2YgYXJndW1lbnRzJiYoZi5hcmd1bWVudHM9YXJndW1lbnRzKSxldmFsKFwiaWYgKHR5cGVvZiBnYyA9PT0gJ2Z1bmN0aW9uJyAmJiBnYy50b1N0cmluZygpLmluZGV4T2YoJ1tuYXRpdmUgY29kZV0nKSA+IDApIHZhciBnYyA9IHVuZGVmaW5lZFwiKTtlbHNlIGlmKGNhfHxkYSlmLnJlYWQ9ZnVuY3Rpb24oYSl7dmFyIGI9bmV3IFhNTEh0dHBSZXF1ZXN0O2Iub3BlbihcIkdFVFwiLGEsITEpO2Iuc2VuZChudWxsKTtyZXR1cm4gYi5yZXNwb25zZVRleHR9LFwidW5kZWZpbmVkXCIhPXR5cGVvZiBhcmd1bWVudHMmJihmLmFyZ3VtZW50cz1hcmd1bWVudHMpLFwidW5kZWZpbmVkXCIhPT1cbnR5cGVvZiBjb25zb2xlPyhmLnByaW50fHwoZi5wcmludD1mdW5jdGlvbihhKXtjb25zb2xlLmxvZyhhKX0pLGYucHJpbnRFcnJ8fChmLnByaW50RXJyPWZ1bmN0aW9uKGEpe2NvbnNvbGUubG9nKGEpfSkpOmYucHJpbnR8fChmLnByaW50PWZ1bmN0aW9uKCl7fSksZGEmJihmLmxvYWQ9aW1wb3J0U2NyaXB0cyksXCJ1bmRlZmluZWRcIj09PXR5cGVvZiBmLnNldFdpbmRvd1RpdGxlJiYoZi5zZXRXaW5kb3dUaXRsZT1mdW5jdGlvbihhKXtkb2N1bWVudC50aXRsZT1hfSk7ZWxzZSB0aHJvd1wiVW5rbm93biBydW50aW1lIGVudmlyb25tZW50LiBXaGVyZSBhcmUgd2U/XCI7ZnVuY3Rpb24gamEoYSl7ZXZhbC5jYWxsKG51bGwsYSl9IWYubG9hZCYmZi5yZWFkJiYoZi5sb2FkPWZ1bmN0aW9uKGEpe2phKGYucmVhZChhKSl9KTtmLnByaW50fHwoZi5wcmludD1mdW5jdGlvbigpe30pO2YucHJpbnRFcnJ8fChmLnByaW50RXJyPWYucHJpbnQpO2YuYXJndW1lbnRzfHwoZi5hcmd1bWVudHM9W10pO1xuZi50aGlzUHJvZ3JhbXx8KGYudGhpc1Byb2dyYW09XCIuL3RoaXMucHJvZ3JhbVwiKTtmLnByaW50PWYucHJpbnQ7Zi5mYT1mLnByaW50RXJyO2YucHJlUnVuPVtdO2YucG9zdFJ1bj1bXTtmb3IoYmEgaW4gYWEpYWEuaGFzT3duUHJvcGVydHkoYmEpJiYoZltiYV09YWFbYmFdKTtcbnZhciBsPXtRYjpmdW5jdGlvbihhKXtsYT1hfSxBYjpmdW5jdGlvbigpe3JldHVybiBsYX0scWE6ZnVuY3Rpb24oKXtyZXR1cm4ga30sZ2E6ZnVuY3Rpb24oYSl7az1hfSxYYTpmdW5jdGlvbihhKXtzd2l0Y2goYSl7Y2FzZSBcImkxXCI6Y2FzZSBcImk4XCI6cmV0dXJuIDE7Y2FzZSBcImkxNlwiOnJldHVybiAyO2Nhc2UgXCJpMzJcIjpyZXR1cm4gNDtjYXNlIFwiaTY0XCI6cmV0dXJuIDg7Y2FzZSBcImZsb2F0XCI6cmV0dXJuIDQ7Y2FzZSBcImRvdWJsZVwiOnJldHVybiA4O2RlZmF1bHQ6cmV0dXJuXCIqXCI9PT1hW2EubGVuZ3RoLTFdP2wuTTpcImlcIj09PWFbMF0/KGE9cGFyc2VJbnQoYS5zdWJzdHIoMSkpLGFzc2VydCgwPT09YSU4KSxhLzgpOjB9fSx4YjpmdW5jdGlvbihhKXtyZXR1cm4gTWF0aC5tYXgobC5YYShhKSxsLk0pfSxvZToxNixLZTpmdW5jdGlvbihhLGIpe1wiZG91YmxlXCI9PT1ifHxcImk2NFwiPT09Yj9hJjcmJihhc3NlcnQoND09PShhJjcpKSxhKz00KTphc3NlcnQoMD09PShhJjMpKTtyZXR1cm4gYX0sXG55ZTpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGN8fFwiaTY0XCIhPWEmJlwiZG91YmxlXCIhPWE/YT9NYXRoLm1pbihifHwoYT9sLnhiKGEpOjApLGwuTSk6TWF0aC5taW4oYiw4KTo4fSxUOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gYyYmYy5sZW5ndGg/KGMuc3BsaWNlfHwoYz1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChjKSksYy5zcGxpY2UoMCwwLGIpLGZbXCJkeW5DYWxsX1wiK2FdLmFwcGx5KG51bGwsYykpOmZbXCJkeW5DYWxsX1wiK2FdLmNhbGwobnVsbCxiKX0sQTpbbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsXG5udWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsXSxMYTpmdW5jdGlvbihhKXtmb3IodmFyIGI9MDtiPGwuQS5sZW5ndGg7YisrKWlmKCFsLkFbYl0pcmV0dXJuIGwuQVtiXT1hLDIqKDErYik7dGhyb3dcIkZpbmlzaGVkIHVwIGFsbCByZXNlcnZlZCBmdW5jdGlvbiBwb2ludGVycy4gVXNlIGEgaGlnaGVyIHZhbHVlIGZvciBSRVNFUlZFRF9GVU5DVElPTl9QT0lOVEVSUy5cIjt9LE1iOmZ1bmN0aW9uKGEpe2wuQVsoYS0yKS8yXT1udWxsfSxYOmZ1bmN0aW9uKGEpe2wuWC5GYXx8KGwuWC5GYT17fSk7bC5YLkZhW2FdfHwobC5YLkZhW2FdPTEsZi5mYShhKSl9LHlhOnt9LEJlOmZ1bmN0aW9uKGEsYil7YXNzZXJ0KGIpO2wueWFbYl18fChsLnlhW2JdPXt9KTt2YXIgYz1sLnlhW2JdO2NbYV18fChjW2FdPWZ1bmN0aW9uKCl7cmV0dXJuIGwuVChiLGEsYXJndW1lbnRzKX0pO3JldHVybiBjW2FdfSx6ZTpmdW5jdGlvbigpe3Rocm93XCJZb3UgbXVzdCBidWlsZCB3aXRoIC1zIFJFVEFJTl9DT01QSUxFUl9TRVRUSU5HUz0xIGZvciBSdW50aW1lLmdldENvbXBpbGVyU2V0dGluZyBvciBlbXNjcmlwdGVuX2dldF9jb21waWxlcl9zZXR0aW5nIHRvIHdvcmtcIjtcbn0sUjpmdW5jdGlvbihhKXt2YXIgYj1rO2s9aythfDA7az1rKzE1Ji0xNjtyZXR1cm4gYn0sYmI6ZnVuY3Rpb24oYSl7dmFyIGI9bWE7bWE9bWErYXwwO21hPW1hKzE1Ji0xNjtyZXR1cm4gYn0sYmE6ZnVuY3Rpb24oYSl7dmFyIGI9bjtuPW4rYXwwO249bisxNSYtMTY7aWYoYT1uPj1uYSlwKFwiQ2Fubm90IGVubGFyZ2UgbWVtb3J5IGFycmF5cy4gRWl0aGVyICgxKSBjb21waWxlIHdpdGggIC1zIFRPVEFMX01FTU9SWT1YICB3aXRoIFggaGlnaGVyIHRoYW4gdGhlIGN1cnJlbnQgdmFsdWUgXCIrbmErXCIsICgyKSBjb21waWxlIHdpdGggIC1zIEFMTE9XX01FTU9SWV9HUk9XVEg9MSAgd2hpY2ggYWRqdXN0cyB0aGUgc2l6ZSBhdCBydW50aW1lIGJ1dCBwcmV2ZW50cyBzb21lIG9wdGltaXphdGlvbnMsICgzKSBzZXQgTW9kdWxlLlRPVEFMX01FTU9SWSB0byBhIGhpZ2hlciB2YWx1ZSBiZWZvcmUgdGhlIHByb2dyYW0gcnVucywgb3IgaWYgeW91IHdhbnQgbWFsbG9jIHRvIHJldHVybiBOVUxMICgwKSBpbnN0ZWFkIG9mIHRoaXMgYWJvcnQsIGNvbXBpbGUgd2l0aCAgLXMgQUJPUlRJTkdfTUFMTE9DPTAgXCIpLFxuYT0hMDtyZXR1cm4gYT8obj1iLDApOmJ9LHRhOmZ1bmN0aW9uKGEsYil7cmV0dXJuIE1hdGguY2VpbChhLyhiP2I6MTYpKSooYj9iOjE2KX0sSGU6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBjPysoYT4+PjApKzQyOTQ5NjcyOTYqKyhiPj4+MCk6KyhhPj4+MCkrNDI5NDk2NzI5NiorKGJ8MCl9LGFhOjgsTTo0LHJlOjB9O2YuUnVudGltZT1sO2wuYWRkRnVuY3Rpb249bC5MYTtsLnJlbW92ZUZ1bmN0aW9uPWwuTWI7dmFyIG9hPSExLHBhLHFhLGxhO2Z1bmN0aW9uIGFzc2VydChhLGIpe2F8fHAoXCJBc3NlcnRpb24gZmFpbGVkOiBcIitiKX1mdW5jdGlvbiByYShhKXt2YXIgYj1mW1wiX1wiK2FdO2lmKCFiKXRyeXtiPWV2YWwoXCJfXCIrYSl9Y2F0Y2goYyl7fWFzc2VydChiLFwiQ2Fubm90IGNhbGwgdW5rbm93biBmdW5jdGlvbiBcIithK1wiIChwZXJoYXBzIExMVk0gb3B0aW1pemF0aW9ucyBvciBjbG9zdXJlIHJlbW92ZWQgaXQ/KVwiKTtyZXR1cm4gYn12YXIgc2EsdGE7XG4oZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGEpe2E9YS50b1N0cmluZygpLm1hdGNoKGQpLnNsaWNlKDEpO3JldHVybnthcmd1bWVudHM6YVswXSxib2R5OmFbMV0scmV0dXJuVmFsdWU6YVsyXX19dmFyIGI9e3N0YWNrU2F2ZTpmdW5jdGlvbigpe2wucWEoKX0sc3RhY2tSZXN0b3JlOmZ1bmN0aW9uKCl7bC5nYSgpfSxhcnJheVRvQzpmdW5jdGlvbihhKXt2YXIgYj1sLlIoYS5sZW5ndGgpO3VhKGEsYik7cmV0dXJuIGJ9LHN0cmluZ1RvQzpmdW5jdGlvbihhKXt2YXIgYj0wO251bGwhPT1hJiZ2b2lkIDAhPT1hJiYwIT09YSYmKGI9bC5SKChhLmxlbmd0aDw8MikrMSksd2EoYSxiKSk7cmV0dXJuIGJ9fSxjPXtzdHJpbmc6Yi5zdHJpbmdUb0MsYXJyYXk6Yi5hcnJheVRvQ307dGE9ZnVuY3Rpb24oYSxiLGQsZSxnKXthPXJhKGEpO3ZhciB2PVtdLEc9MDtpZihlKWZvcih2YXIgST0wO0k8ZS5sZW5ndGg7SSsrKXt2YXIgWT1jW2RbSV1dO1k/KDA9PT1HJiYoRz1sLnFhKCkpLHZbSV09WShlW0ldKSk6XG52W0ldPWVbSV19ZD1hLmFwcGx5KG51bGwsdik7XCJzdHJpbmdcIj09PWImJihkPXEoZCkpO2lmKDAhPT1HKXtpZihnJiZnLmFzeW5jKXt4YS5zZS5wdXNoKGZ1bmN0aW9uKCl7bC5nYShHKX0pO3JldHVybn1sLmdhKEcpfXJldHVybiBkfTt2YXIgZD0vXmZ1bmN0aW9uXFxzKlxcKChbXildKilcXClcXHMqe1xccyooW14qXSo/KVtcXHM7XSooPzpyZXR1cm5cXHMqKC4qPylbO1xcc10qKT99JC8sZT17fSxnO2ZvcihnIGluIGIpYi5oYXNPd25Qcm9wZXJ0eShnKSYmKGVbZ109YShiW2ddKSk7c2E9ZnVuY3Rpb24oYixjLGQpe2Q9ZHx8W107dmFyIGc9cmEoYik7Yj1kLmV2ZXJ5KGZ1bmN0aW9uKGEpe3JldHVyblwibnVtYmVyXCI9PT1hfSk7dmFyIHg9XCJzdHJpbmdcIiE9PWM7aWYoeCYmYilyZXR1cm4gZzt2YXIgdj1kLm1hcChmdW5jdGlvbihhLGIpe3JldHVyblwiJFwiK2J9KTtjPVwiKGZ1bmN0aW9uKFwiK3Yuam9pbihcIixcIikrXCIpIHtcIjt2YXIgRz1kLmxlbmd0aDtpZighYil7Yys9XCJ2YXIgc3RhY2sgPSBcIitlLnN0YWNrU2F2ZS5ib2R5K1xuXCI7XCI7Zm9yKHZhciBJPTA7STxHO0krKyl7dmFyIFk9dltJXSx2YT1kW0ldO1wibnVtYmVyXCIhPT12YSYmKHZhPWVbdmErXCJUb0NcIl0sYys9XCJ2YXIgXCIrdmEuYXJndW1lbnRzK1wiID0gXCIrWStcIjtcIixjKz12YS5ib2R5K1wiO1wiLGMrPVkrXCI9XCIrdmEucmV0dXJuVmFsdWUrXCI7XCIpfX1kPWEoZnVuY3Rpb24oKXtyZXR1cm4gZ30pLnJldHVyblZhbHVlO2MrPVwidmFyIHJldCA9IFwiK2QrXCIoXCIrdi5qb2luKFwiLFwiKStcIik7XCI7eHx8KGQ9YShmdW5jdGlvbigpe3JldHVybiBxfSkucmV0dXJuVmFsdWUsYys9XCJyZXQgPSBcIitkK1wiKHJldCk7XCIpO2J8fChjKz1lLnN0YWNrUmVzdG9yZS5ib2R5LnJlcGxhY2UoXCIoKVwiLFwiKHN0YWNrKVwiKStcIjtcIik7cmV0dXJuIGV2YWwoYytcInJldHVybiByZXR9KVwiKX19KSgpO2YuY2NhbGw9dGE7Zi5jd3JhcD1zYTtcbmZ1bmN0aW9uIHlhKGEsYixjKXtjPWN8fFwiaThcIjtcIipcIj09PWMuY2hhckF0KGMubGVuZ3RoLTEpJiYoYz1cImkzMlwiKTtzd2l0Y2goYyl7Y2FzZSBcImkxXCI6dVthPj4wXT1iO2JyZWFrO2Nhc2UgXCJpOFwiOnVbYT4+MF09YjticmVhaztjYXNlIFwiaTE2XCI6emFbYT4+MV09YjticmVhaztjYXNlIFwiaTMyXCI6d1thPj4yXT1iO2JyZWFrO2Nhc2UgXCJpNjRcIjpxYT1bYj4+PjAsKHBhPWIsMTw9K0FhKHBhKT8wPHBhPyhCYSgrQ2EocGEvNDI5NDk2NzI5NiksNDI5NDk2NzI5NSl8MCk+Pj4wOn5+K0RhKChwYS0rKH5+cGE+Pj4wKSkvNDI5NDk2NzI5Nik+Pj4wOjApXTt3W2E+PjJdPXFhWzBdO3dbYSs0Pj4yXT1xYVsxXTticmVhaztjYXNlIFwiZmxvYXRcIjpFYVthPj4yXT1iO2JyZWFrO2Nhc2UgXCJkb3VibGVcIjpGYVthPj4zXT1iO2JyZWFrO2RlZmF1bHQ6cChcImludmFsaWQgdHlwZSBmb3Igc2V0VmFsdWU6IFwiK2MpfX1mLnNldFZhbHVlPXlhO1xuZnVuY3Rpb24geShhLGIpe2I9Ynx8XCJpOFwiO1wiKlwiPT09Yi5jaGFyQXQoYi5sZW5ndGgtMSkmJihiPVwiaTMyXCIpO3N3aXRjaChiKXtjYXNlIFwiaTFcIjpyZXR1cm4gdVthPj4wXTtjYXNlIFwiaThcIjpyZXR1cm4gdVthPj4wXTtjYXNlIFwiaTE2XCI6cmV0dXJuIHphW2E+PjFdO2Nhc2UgXCJpMzJcIjpyZXR1cm4gd1thPj4yXTtjYXNlIFwiaTY0XCI6cmV0dXJuIHdbYT4+Ml07Y2FzZSBcImZsb2F0XCI6cmV0dXJuIEVhW2E+PjJdO2Nhc2UgXCJkb3VibGVcIjpyZXR1cm4gRmFbYT4+M107ZGVmYXVsdDpwKFwiaW52YWxpZCB0eXBlIGZvciBzZXRWYWx1ZTogXCIrYil9cmV0dXJuIG51bGx9Zi5nZXRWYWx1ZT15O2YuQUxMT0NfTk9STUFMPTA7Zi5BTExPQ19TVEFDSz0xO2YuQUxMT0NfU1RBVElDPTI7Zi5BTExPQ19EWU5BTUlDPTM7Zi5BTExPQ19OT05FPTQ7XG5mdW5jdGlvbiB6KGEsYixjLGQpe3ZhciBlLGc7XCJudW1iZXJcIj09PXR5cGVvZiBhPyhlPSEwLGc9YSk6KGU9ITEsZz1hLmxlbmd0aCk7dmFyIGg9XCJzdHJpbmdcIj09PXR5cGVvZiBiP2I6bnVsbDtjPTQ9PWM/ZDpbR2EsbC5SLGwuYmIsbC5iYV1bdm9pZCAwPT09Yz8yOmNdKE1hdGgubWF4KGcsaD8xOmIubGVuZ3RoKSk7aWYoZSl7ZD1jO2Fzc2VydCgwPT0oYyYzKSk7Zm9yKGE9YysoZyYtNCk7ZDxhO2QrPTQpd1tkPj4yXT0wO2ZvcihhPWMrZztkPGE7KXVbZCsrPj4wXT0wO3JldHVybiBjfWlmKFwiaThcIj09PWgpcmV0dXJuIGEuc3ViYXJyYXl8fGEuc2xpY2U/QS5zZXQoYSxjKTpBLnNldChuZXcgVWludDhBcnJheShhKSxjKSxjO2Q9MDtmb3IodmFyIG0sdDtkPGc7KXt2YXIgcj1hW2RdO1wiZnVuY3Rpb25cIj09PXR5cGVvZiByJiYocj1sLkNlKHIpKTtlPWh8fGJbZF07MD09PWU/ZCsrOihcImk2NFwiPT1lJiYoZT1cImkzMlwiKSx5YShjK2QscixlKSx0IT09ZSYmKG09bC5YYShlKSx0PWUpLGQrPVxubSl9cmV0dXJuIGN9Zi5hbGxvY2F0ZT16O2YuZ2V0TWVtb3J5PWZ1bmN0aW9uKGEpe3JldHVybiBIYT9cInVuZGVmaW5lZFwiIT09dHlwZW9mIElhJiYhSWEuVmF8fCFKYT9sLmJhKGEpOkdhKGEpOmwuYmIoYSl9O2Z1bmN0aW9uIHEoYSxiKXtpZigwPT09Ynx8IWEpcmV0dXJuXCJcIjtmb3IodmFyIGM9MCxkLGU9MDs7KXtkPUFbYStlPj4wXTtjfD1kO2lmKDA9PWQmJiFiKWJyZWFrO2UrKztpZihiJiZlPT1iKWJyZWFrfWJ8fChiPWUpO2Q9XCJcIjtpZigxMjg+Yyl7Zm9yKDswPGI7KWM9U3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShTdHJpbmcsQS5zdWJhcnJheShhLGErTWF0aC5taW4oYiwxMDI0KSkpLGQ9ZD9kK2M6YyxhKz0xMDI0LGItPTEwMjQ7cmV0dXJuIGR9cmV0dXJuIGYuVVRGOFRvU3RyaW5nKGEpfWYuUG9pbnRlcl9zdHJpbmdpZnk9cTtmLkFzY2lpVG9TdHJpbmc9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPVwiXCI7Oyl7dmFyIGM9dVthKys+PjBdO2lmKCFjKXJldHVybiBiO2IrPVN0cmluZy5mcm9tQ2hhckNvZGUoYyl9fTtcbmYuc3RyaW5nVG9Bc2NpaT1mdW5jdGlvbihhLGIpe3JldHVybiBLYShhLGIsITEpfTtcbmZ1bmN0aW9uIExhKGEsYil7Zm9yKHZhciBjLGQsZSxnLGgsbSx0PVwiXCI7Oyl7Yz1hW2IrK107aWYoIWMpcmV0dXJuIHQ7YyYxMjg/KGQ9YVtiKytdJjYzLDE5Mj09KGMmMjI0KT90Kz1TdHJpbmcuZnJvbUNoYXJDb2RlKChjJjMxKTw8NnxkKTooZT1hW2IrK10mNjMsMjI0PT0oYyYyNDApP2M9KGMmMTUpPDwxMnxkPDw2fGU6KGc9YVtiKytdJjYzLDI0MD09KGMmMjQ4KT9jPShjJjcpPDwxOHxkPDwxMnxlPDw2fGc6KGg9YVtiKytdJjYzLDI0OD09KGMmMjUyKT9jPShjJjMpPDwyNHxkPDwxOHxlPDwxMnxnPDw2fGg6KG09YVtiKytdJjYzLGM9KGMmMSk8PDMwfGQ8PDI0fGU8PDE4fGc8PDEyfGg8PDZ8bSkpKSw2NTUzNj5jP3QrPVN0cmluZy5mcm9tQ2hhckNvZGUoYyk6KGMtPTY1NTM2LHQrPVN0cmluZy5mcm9tQ2hhckNvZGUoNTUyOTZ8Yz4+MTAsNTYzMjB8YyYxMDIzKSkpKTp0Kz1TdHJpbmcuZnJvbUNoYXJDb2RlKGMpfX1mLlVURjhBcnJheVRvU3RyaW5nPUxhO1xuZi5VVEY4VG9TdHJpbmc9ZnVuY3Rpb24oYSl7cmV0dXJuIExhKEEsYSl9O1xuZnVuY3Rpb24gTWEoYSxiLGMsZCl7aWYoISgwPGQpKXJldHVybiAwO3ZhciBlPWM7ZD1jK2QtMTtmb3IodmFyIGc9MDtnPGEubGVuZ3RoOysrZyl7dmFyIGg9YS5jaGFyQ29kZUF0KGcpOzU1Mjk2PD1oJiY1NzM0Mz49aCYmKGg9NjU1MzYrKChoJjEwMjMpPDwxMCl8YS5jaGFyQ29kZUF0KCsrZykmMTAyMyk7aWYoMTI3Pj1oKXtpZihjPj1kKWJyZWFrO2JbYysrXT1ofWVsc2V7aWYoMjA0Nz49aCl7aWYoYysxPj1kKWJyZWFrO2JbYysrXT0xOTJ8aD4+Nn1lbHNle2lmKDY1NTM1Pj1oKXtpZihjKzI+PWQpYnJlYWs7YltjKytdPTIyNHxoPj4xMn1lbHNle2lmKDIwOTcxNTE+PWgpe2lmKGMrMz49ZClicmVhaztiW2MrK109MjQwfGg+PjE4fWVsc2V7aWYoNjcxMDg4NjM+PWgpe2lmKGMrND49ZClicmVhaztiW2MrK109MjQ4fGg+PjI0fWVsc2V7aWYoYys1Pj1kKWJyZWFrO2JbYysrXT0yNTJ8aD4+MzA7YltjKytdPTEyOHxoPj4yNCY2M31iW2MrK109MTI4fGg+PjE4JjYzfWJbYysrXT0xMjh8XG5oPj4xMiY2M31iW2MrK109MTI4fGg+PjYmNjN9YltjKytdPTEyOHxoJjYzfX1iW2NdPTA7cmV0dXJuIGMtZX1mLnN0cmluZ1RvVVRGOEFycmF5PU1hO2Yuc3RyaW5nVG9VVEY4PWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gTWEoYSxBLGIsYyl9O2Z1bmN0aW9uIE5hKGEpe2Zvcih2YXIgYj0wLGM9MDtjPGEubGVuZ3RoOysrYyl7dmFyIGQ9YS5jaGFyQ29kZUF0KGMpOzU1Mjk2PD1kJiY1NzM0Mz49ZCYmKGQ9NjU1MzYrKChkJjEwMjMpPDwxMCl8YS5jaGFyQ29kZUF0KCsrYykmMTAyMyk7MTI3Pj1kPysrYjpiPTIwNDc+PWQ/YisyOjY1NTM1Pj1kP2IrMzoyMDk3MTUxPj1kP2IrNDo2NzEwODg2Mz49ZD9iKzU6Yis2fXJldHVybiBifWYubGVuZ3RoQnl0ZXNVVEY4PU5hO2YuVVRGMTZUb1N0cmluZz1mdW5jdGlvbihhKXtmb3IodmFyIGI9MCxjPVwiXCI7Oyl7dmFyIGQ9emFbYSsyKmI+PjFdO2lmKDA9PWQpcmV0dXJuIGM7KytiO2MrPVN0cmluZy5mcm9tQ2hhckNvZGUoZCl9fTtcbmYuc3RyaW5nVG9VVEYxNj1mdW5jdGlvbihhLGIsYyl7dm9pZCAwPT09YyYmKGM9MjE0NzQ4MzY0Nyk7aWYoMj5jKXJldHVybiAwO2MtPTI7dmFyIGQ9YjtjPWM8MiphLmxlbmd0aD9jLzI6YS5sZW5ndGg7Zm9yKHZhciBlPTA7ZTxjOysrZSl6YVtiPj4xXT1hLmNoYXJDb2RlQXQoZSksYis9Mjt6YVtiPj4xXT0wO3JldHVybiBiLWR9O2YubGVuZ3RoQnl0ZXNVVEYxNj1mdW5jdGlvbihhKXtyZXR1cm4gMiphLmxlbmd0aH07Zi5VVEYzMlRvU3RyaW5nPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYj0wLGM9XCJcIjs7KXt2YXIgZD13W2ErNCpiPj4yXTtpZigwPT1kKXJldHVybiBjOysrYjs2NTUzNjw9ZD8oZD1kLTY1NTM2LGMrPVN0cmluZy5mcm9tQ2hhckNvZGUoNTUyOTZ8ZD4+MTAsNTYzMjB8ZCYxMDIzKSk6Yys9U3RyaW5nLmZyb21DaGFyQ29kZShkKX19O1xuZi5zdHJpbmdUb1VURjMyPWZ1bmN0aW9uKGEsYixjKXt2b2lkIDA9PT1jJiYoYz0yMTQ3NDgzNjQ3KTtpZig0PmMpcmV0dXJuIDA7dmFyIGQ9YjtjPWQrYy00O2Zvcih2YXIgZT0wO2U8YS5sZW5ndGg7KytlKXt2YXIgZz1hLmNoYXJDb2RlQXQoZSk7aWYoNTUyOTY8PWcmJjU3MzQzPj1nKXZhciBoPWEuY2hhckNvZGVBdCgrK2UpLGc9NjU1MzYrKChnJjEwMjMpPDwxMCl8aCYxMDIzO3dbYj4+Ml09ZztiKz00O2lmKGIrND5jKWJyZWFrfXdbYj4+Ml09MDtyZXR1cm4gYi1kfTtmLmxlbmd0aEJ5dGVzVVRGMzI9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPTAsYz0wO2M8YS5sZW5ndGg7KytjKXt2YXIgZD1hLmNoYXJDb2RlQXQoYyk7NTUyOTY8PWQmJjU3MzQzPj1kJiYrK2M7Yis9NH1yZXR1cm4gYn07XG5mdW5jdGlvbiBPYShhKXtmdW5jdGlvbiBiKGMsZCxlKXtkPWR8fEluZmluaXR5O3ZhciBnPVwiXCIsaD1bXSx2O2lmKFwiTlwiPT09YVttXSl7bSsrO1wiS1wiPT09YVttXSYmbSsrO2Zvcih2PVtdO1wiRVwiIT09YVttXTspaWYoXCJTXCI9PT1hW21dKXttKys7dmFyIEY9YS5pbmRleE9mKFwiX1wiLG0pO3YucHVzaChyW2Euc3Vic3RyaW5nKG0sRil8fDBdfHxcIj9cIik7bT1GKzF9ZWxzZSBpZihcIkNcIj09PWFbbV0pdi5wdXNoKHZbdi5sZW5ndGgtMV0pLG0rPTI7ZWxzZXt2YXIgRj1wYXJzZUludChhLnN1YnN0cihtKSksaGE9Ri50b1N0cmluZygpLmxlbmd0aDtpZighRnx8IWhhKXttLS07YnJlYWt9dmFyIGxjPWEuc3Vic3RyKG0raGEsRik7di5wdXNoKGxjKTtyLnB1c2gobGMpO20rPWhhK0Z9bSsrO3Y9di5qb2luKFwiOjpcIik7ZC0tO2lmKDA9PT1kKXJldHVybiBjP1t2XTp2fWVsc2UgaWYoKFwiS1wiPT09YVttXXx8eCYmXCJMXCI9PT1hW21dKSYmbSsrLEY9cGFyc2VJbnQoYS5zdWJzdHIobSkpKWhhPUYudG9TdHJpbmcoKS5sZW5ndGgsXG52PWEuc3Vic3RyKG0raGEsRiksbSs9aGErRjt4PSExO1wiSVwiPT09YVttXT8obSsrLEY9YighMCksaGE9YighMCwxLCEwKSxnKz1oYVswXStcIiBcIit2K1wiPFwiK0Yuam9pbihcIiwgXCIpK1wiPlwiKTpnPXY7YTpmb3IoO208YS5sZW5ndGgmJjA8ZC0tOylpZih2PWFbbSsrXSx2IGluIHQpaC5wdXNoKHRbdl0pO2Vsc2Ugc3dpdGNoKHYpe2Nhc2UgXCJQXCI6aC5wdXNoKGIoITAsMSwhMClbMF0rXCIqXCIpO2JyZWFrO2Nhc2UgXCJSXCI6aC5wdXNoKGIoITAsMSwhMClbMF0rXCImXCIpO2JyZWFrO2Nhc2UgXCJMXCI6bSsrO0Y9YS5pbmRleE9mKFwiRVwiLG0pLW07aC5wdXNoKGEuc3Vic3RyKG0sRikpO20rPUYrMjticmVhaztjYXNlIFwiQVwiOkY9cGFyc2VJbnQoYS5zdWJzdHIobSkpO20rPUYudG9TdHJpbmcoKS5sZW5ndGg7aWYoXCJfXCIhPT1hW21dKXRocm93XCI/XCI7bSsrO2gucHVzaChiKCEwLDEsITApWzBdK1wiIFtcIitGK1wiXVwiKTticmVhaztjYXNlIFwiRVwiOmJyZWFrIGE7ZGVmYXVsdDpnKz1cIj9cIit2O2JyZWFrIGF9ZXx8XG4xIT09aC5sZW5ndGh8fFwidm9pZFwiIT09aFswXXx8KGg9W10pO3JldHVybiBjPyhnJiZoLnB1c2goZytcIj9cIiksaCk6ZysoXCIoXCIraC5qb2luKFwiLCBcIikrXCIpXCIpfXZhciBjPSEhZi5fX19jeGFfZGVtYW5nbGU7aWYoYyl0cnl7dmFyIGQ9R2EoYS5sZW5ndGgpO3dhKGEuc3Vic3RyKDEpLGQpO3ZhciBlPUdhKDQpLGc9Zi5fX19jeGFfZGVtYW5nbGUoZCwwLDAsZSk7aWYoMD09PXkoZSxcImkzMlwiKSYmZylyZXR1cm4gcShnKX1jYXRjaChoKXt9ZmluYWxseXtkJiZQYShkKSxlJiZQYShlKSxnJiZQYShnKX12YXIgbT0zLHQ9e3Y6XCJ2b2lkXCIsYjpcImJvb2xcIixjOlwiY2hhclwiLHM6XCJzaG9ydFwiLGk6XCJpbnRcIixsOlwibG9uZ1wiLGY6XCJmbG9hdFwiLGQ6XCJkb3VibGVcIix3Olwid2NoYXJfdFwiLGE6XCJzaWduZWQgY2hhclwiLGg6XCJ1bnNpZ25lZCBjaGFyXCIsdDpcInVuc2lnbmVkIHNob3J0XCIsajpcInVuc2lnbmVkIGludFwiLG06XCJ1bnNpZ25lZCBsb25nXCIseDpcImxvbmcgbG9uZ1wiLHk6XCJ1bnNpZ25lZCBsb25nIGxvbmdcIixcbno6XCIuLi5cIn0scj1bXSx4PSEwLGQ9YTt0cnl7aWYoXCJPYmplY3QuX21haW5cIj09YXx8XCJfbWFpblwiPT1hKXJldHVyblwibWFpbigpXCI7XCJudW1iZXJcIj09PXR5cGVvZiBhJiYoYT1xKGEpKTtpZihcIl9cIiE9PWFbMF18fFwiX1wiIT09YVsxXXx8XCJaXCIhPT1hWzJdKXJldHVybiBhO3N3aXRjaChhWzNdKXtjYXNlIFwiblwiOnJldHVyblwib3BlcmF0b3IgbmV3KClcIjtjYXNlIFwiZFwiOnJldHVyblwib3BlcmF0b3IgZGVsZXRlKClcIn1kPWIoKX1jYXRjaCh2KXtkKz1cIj9cIn0wPD1kLmluZGV4T2YoXCI/XCIpJiYhYyYmbC5YKFwid2FybmluZzogYSBwcm9ibGVtIG9jY3VycmVkIGluIGJ1aWx0aW4gQysrIG5hbWUgZGVtYW5nbGluZzsgYnVpbGQgd2l0aCAgLXMgREVNQU5HTEVfU1VQUE9SVD0xICB0byBsaW5rIGluIGxpYmN4eGFiaSBkZW1hbmdsaW5nXCIpO3JldHVybiBkfVxuZnVuY3Rpb24gUWEoKXtyZXR1cm4gUmEoKS5yZXBsYWNlKC9fX1pbXFx3XFxkX10rL2csZnVuY3Rpb24oYSl7dmFyIGI9T2EoYSk7cmV0dXJuIGE9PT1iP2E6YStcIiBbXCIrYitcIl1cIn0pfWZ1bmN0aW9uIFJhKCl7dmFyIGE9RXJyb3IoKTtpZighYS5zdGFjayl7dHJ5e3Rocm93IEVycm9yKDApO31jYXRjaChiKXthPWJ9aWYoIWEuc3RhY2spcmV0dXJuXCIobm8gc3RhY2sgdHJhY2UgYXZhaWxhYmxlKVwifXJldHVybiBhLnN0YWNrLnRvU3RyaW5nKCl9Zi5zdGFja1RyYWNlPWZ1bmN0aW9uKCl7cmV0dXJuIFFhKCl9O2Z1bmN0aW9uIFNhKCl7dmFyIGE9bjswPGElNDA5NiYmKGErPTQwOTYtYSU0MDk2KTtyZXR1cm4gYX1cbmZvcih2YXIgdSxBLHphLFRhLHcsVWEsRWEsRmEsVmE9MCxtYT0wLEhhPSExLFdhPTAsaz0wLFhhPTAsWWE9MCxuPTAsWmE9Zi5UT1RBTF9TVEFDS3x8NTI0Mjg4MCxuYT1mLlRPVEFMX01FTU9SWXx8MTY3NzcyMTYsJGE9NjU1MzY7JGE8bmF8fCRhPDIqWmE7KSRhPTE2Nzc3MjE2PiRhPzIqJGE6JGErMTY3NzcyMTY7JGEhPT1uYSYmKG5hPSRhKTthc3NlcnQoXCJ1bmRlZmluZWRcIiE9PXR5cGVvZiBJbnQzMkFycmF5JiZcInVuZGVmaW5lZFwiIT09dHlwZW9mIEZsb2F0NjRBcnJheSYmISEobmV3IEludDMyQXJyYXkoMSkpLnN1YmFycmF5JiYhIShuZXcgSW50MzJBcnJheSgxKSkuc2V0LFwiSlMgZW5naW5lIGRvZXMgbm90IHByb3ZpZGUgZnVsbCB0eXBlZCBhcnJheSBzdXBwb3J0XCIpO3ZhciBidWZmZXI7YnVmZmVyPW5ldyBBcnJheUJ1ZmZlcihuYSk7dT1uZXcgSW50OEFycmF5KGJ1ZmZlcik7emE9bmV3IEludDE2QXJyYXkoYnVmZmVyKTt3PW5ldyBJbnQzMkFycmF5KGJ1ZmZlcik7QT1uZXcgVWludDhBcnJheShidWZmZXIpO1xuVGE9bmV3IFVpbnQxNkFycmF5KGJ1ZmZlcik7VWE9bmV3IFVpbnQzMkFycmF5KGJ1ZmZlcik7RWE9bmV3IEZsb2F0MzJBcnJheShidWZmZXIpO0ZhPW5ldyBGbG9hdDY0QXJyYXkoYnVmZmVyKTt3WzBdPTI1NTthc3NlcnQoMjU1PT09QVswXSYmMD09PUFbM10sXCJUeXBlZCBhcnJheXMgMiBtdXN0IGJlIHJ1biBvbiBhIGxpdHRsZS1lbmRpYW4gc3lzdGVtXCIpO2YuSEVBUD12b2lkIDA7Zi5idWZmZXI9YnVmZmVyO2YuSEVBUDg9dTtmLkhFQVAxNj16YTtmLkhFQVAzMj13O2YuSEVBUFU4PUE7Zi5IRUFQVTE2PVRhO2YuSEVBUFUzMj1VYTtmLkhFQVBGMzI9RWE7Zi5IRUFQRjY0PUZhO1xuZnVuY3Rpb24gYWIoYSl7Zm9yKDswPGEubGVuZ3RoOyl7dmFyIGI9YS5zaGlmdCgpO2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIGIpYigpO2Vsc2V7dmFyIGM9Yi52YjtcIm51bWJlclwiPT09dHlwZW9mIGM/dm9pZCAwPT09Yi5sYT9sLlQoXCJ2XCIsYyk6bC5UKFwidmlcIixjLFtiLmxhXSk6Yyh2b2lkIDA9PT1iLmxhP251bGw6Yi5sYSl9fX12YXIgYmI9W10sY2I9W10sZGI9W10sZWI9W10sZmI9W10sSmE9ITE7ZnVuY3Rpb24gZ2IoYSl7YmIudW5zaGlmdChhKX1mLmFkZE9uUHJlUnVuPWdiO2YuYWRkT25Jbml0PWZ1bmN0aW9uKGEpe2NiLnVuc2hpZnQoYSl9O2YuYWRkT25QcmVNYWluPWZ1bmN0aW9uKGEpe2RiLnVuc2hpZnQoYSl9O2YuYWRkT25FeGl0PWZ1bmN0aW9uKGEpe2ViLnVuc2hpZnQoYSl9O2Z1bmN0aW9uIGhiKGEpe2ZiLnVuc2hpZnQoYSl9Zi5hZGRPblBvc3RSdW49aGI7XG5mdW5jdGlvbiBCKGEsYixjKXtjPUFycmF5KDA8Yz9jOk5hKGEpKzEpO2E9TWEoYSxjLDAsYy5sZW5ndGgpO2ImJihjLmxlbmd0aD1hKTtyZXR1cm4gY31mLmludEFycmF5RnJvbVN0cmluZz1CO2YuaW50QXJyYXlUb1N0cmluZz1mdW5jdGlvbihhKXtmb3IodmFyIGI9W10sYz0wO2M8YS5sZW5ndGg7YysrKXt2YXIgZD1hW2NdOzI1NTxkJiYoZCY9MjU1KTtiLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShkKSl9cmV0dXJuIGIuam9pbihcIlwiKX07ZnVuY3Rpb24gd2EoYSxiLGMpe2E9QihhLGMpO2ZvcihjPTA7YzxhLmxlbmd0aDspdVtiK2M+PjBdPWFbY10sYys9MX1mLndyaXRlU3RyaW5nVG9NZW1vcnk9d2E7ZnVuY3Rpb24gdWEoYSxiKXtmb3IodmFyIGM9MDtjPGEubGVuZ3RoO2MrKyl1W2IrKz4+MF09YVtjXX1mLndyaXRlQXJyYXlUb01lbW9yeT11YTtcbmZ1bmN0aW9uIEthKGEsYixjKXtmb3IodmFyIGQ9MDtkPGEubGVuZ3RoOysrZCl1W2IrKz4+MF09YS5jaGFyQ29kZUF0KGQpO2N8fCh1W2I+PjBdPTApfWYud3JpdGVBc2NpaVRvTWVtb3J5PUthO01hdGguaW11bCYmLTU9PT1NYXRoLmltdWwoNDI5NDk2NzI5NSw1KXx8KE1hdGguaW11bD1mdW5jdGlvbihhLGIpe3ZhciBjPWEmNjU1MzUsZD1iJjY1NTM1O3JldHVybiBjKmQrKChhPj4+MTYpKmQrYyooYj4+PjE2KTw8MTYpfDB9KTtNYXRoLkRlPU1hdGguaW11bDtNYXRoLmNsejMyfHwoTWF0aC5jbHozMj1mdW5jdGlvbihhKXthPWE+Pj4wO2Zvcih2YXIgYj0wOzMyPmI7YisrKWlmKGEmMTw8MzEtYilyZXR1cm4gYjtyZXR1cm4gMzJ9KTtNYXRoLnVlPU1hdGguY2x6MzI7XG52YXIgQWE9TWF0aC5hYnMsaWI9TWF0aC5jb3MsamI9TWF0aC5zaW4sa2I9TWF0aC50YW4sbGI9TWF0aC5hY29zLG1iPU1hdGguYXNpbixuYj1NYXRoLmF0YW4sb2I9TWF0aC5hdGFuMixwYj1NYXRoLmV4cCxxYj1NYXRoLmxvZyxyYj1NYXRoLnNxcnQsRGE9TWF0aC5jZWlsLENhPU1hdGguZmxvb3Isc2I9TWF0aC5wb3csQmE9TWF0aC5taW4sdGI9MCx1Yj1udWxsLHZiPW51bGw7ZnVuY3Rpb24gd2IoKXt0YisrO2YubW9uaXRvclJ1bkRlcGVuZGVuY2llcyYmZi5tb25pdG9yUnVuRGVwZW5kZW5jaWVzKHRiKX1mLmFkZFJ1bkRlcGVuZGVuY3k9d2I7ZnVuY3Rpb24geGIoKXt0Yi0tO2YubW9uaXRvclJ1bkRlcGVuZGVuY2llcyYmZi5tb25pdG9yUnVuRGVwZW5kZW5jaWVzKHRiKTtpZigwPT10YiYmKG51bGwhPT11YiYmKGNsZWFySW50ZXJ2YWwodWIpLHViPW51bGwpLHZiKSl7dmFyIGE9dmI7dmI9bnVsbDthKCl9fWYucmVtb3ZlUnVuRGVwZW5kZW5jeT14YjtcbmYucHJlbG9hZGVkSW1hZ2VzPXt9O2YucHJlbG9hZGVkQXVkaW9zPXt9O1ZhPTg7bWE9VmErNDg2ODg7Y2IucHVzaCgpO1xueihbMSwwLDAsMCwxLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDI1NCwyNTUsMjU1LDEyNywwLDAsMCwwLDEyOCwwLDAsMCwyNDQsMSwwLDAsMCwwLDEsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDEwMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMjUwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsXG4wLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDI1NCwyNTUsMjU1LDEyNywwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDUwLDY0LDAsMCwxLDAsMSwwLDEzMCwwLDAsMCw1NSw2NCwwLDAsMSwwLDEsMCwxMzEsMCwwLDAsNjAsNjQsMCwwLDEsMCwxLDAsMTMyLDAsMCwwLDY1LDY0LDAsMCwyLDAsMSwwLDEzMywwLDAsMCw3MCw2NCwwLDAsMiwwLDEsMCwxMzMsMCwwLDAsNzYsNjQsMCwwLDEsMCwxLDAsMTM0LDAsMCwwLDgyLDY0LDAsMCwxLDAsMSwwLDEzNSwwLDAsMCw4OCw2NCwwLDAsMSwwLDEsMCwxMzYsMCwwLDAsOTQsNjQsMCwwLDIsMCwxLDAsMTM3LDAsMCwwLDEwNSw2NCwwLDAsMSwwLDEsMCxcbjEzOCwwLDAsMCwxMTMsNjQsMCwwLDEsMCwxLDAsMTM5LDAsMCwwLDEyMSw2NCwwLDAsMSwwLDEsMCwxNDAsMCwwLDAsMTI1LDY0LDAsMCwxLDAsMSwwLDE0MSwwLDAsMCwxMjksNjQsMCwwLDEsMCwxLDAsMTQyLDAsMCwwLDEzMyw2NCwwLDAsMSwwLDEsMCwxNDMsMCwwLDAsMTM3LDY0LDAsMCwxLDAsMSwwLDE0NCwwLDAsMCwxNDIsNjQsMCwwLDEsMCwxLDAsMTQ1LDAsMCwwLDE0Nyw2NCwwLDAsMSwwLDEsMCwxNDYsMCwwLDAsMTUyLDY0LDAsMCwxLDAsMSwwLDE0NywwLDAsMCwxNTcsNjQsMCwwLDEsMCwxLDAsMTQ4LDAsMCwwLDE0Myw5OCwwLDAsMSwwLDEsMCwxNDksMCwwLDAsMTYxLDY0LDAsMCwxLDAsMSwwLDE1MCwwLDAsMCwxNjcsNjQsMCwwLDIsMCwxLDAsMTUxLDAsMCwwLDE3Myw2NCwwLDAsMSwwLDEsMCwxNTIsMCwwLDAsMTc4LDY0LDAsMCwxLDAsMSwwLDE1MywwLDAsMCwxODMsNjQsMCwwLDEsMCwxLDAsMTU0LDAsMCwwLDE5MCw2NCwwLDAsMSwwLDEsMCwxNTUsMCwwLFxuMCwxOTUsNjQsMCwwLDEsMCwxLDAsMTU2LDAsMCwwLDIwMSw2NCwwLDAsMCwwLDEsMSwxNTcsMCwwLDAsMjA0LDY0LDAsMCwyLDAsMSwwLDE1OCwwLDAsMCwyMTQsNjQsMCwwLDIsMCwxLDAsMTU5LDAsMCwwLDIxNCw2NCwwLDAsMywwLDEsMCwxNTksMCwwLDAsMjI0LDY0LDAsMCwyLDAsMSwwLDE2MCwwLDAsMCwyMzIsNjQsMCwwLDIsMCwxLDAsMTYxLDAsMCwwLDI0MSw2NCwwLDAsMSwwLDEsMCwxNjIsMCwwLDAsMjQ5LDY0LDAsMCwxLDAsMSwwLDE2MywwLDAsMCwwLDY1LDAsMCwyLDAsMSwwLDE2NCwwLDAsMCw1LDY1LDAsMCwyLDAsMSwwLDE2NSwwLDAsMCwxMCw2NSwwLDAsMiwwLDEsMCwxNjYsMCwwLDAsMTUsNjUsMCwwLDIsMCwxLDAsMTY3LDAsMCwwLDI1LDY1LDAsMCwxLDAsMCwwLDE2OCwwLDAsMCwxMzAsMCwwLDAsMzEsNjUsMCwwLDEsMCwwLDAsMTY4LDAsMCwwLDEzMSwwLDAsMCwyMjEsMTAxLDAsMCwxLDAsMCwwLDE2OSwwLDAsMCwxMzIsMCwwLDAsNDAsNjUsMCwwLDEsXG4wLDAsMCwxNjksMCwwLDAsMTMzLDAsMCwwLDQ3LDY1LDAsMCwxLDAsMCwwLDE2OSwwLDAsMCwxMzQsMCwwLDAsNjIsNjUsMCwwLDEsMCwwLDAsMTY5LDAsMCwwLDEzNSwwLDAsMCwwLDAsMCwwLDEyOCw0OCwwLDAsMTI4LDMyLDE0LDAsMTI4LDMyLDIwMCwzLDAsMCwwLDAsMTI4LDI1NSwyNTUsMjU1LDAsMjQ4LDI1NSwyNTUsMCwwLDI1NSwyNTUsMSwwLDAsMCwwLDAsMCwwLDQ1LDE3OCwwLDAsNjYsMTc4LDAsMCw3OCwxNzgsMCwwLDkwLDE3OCwwLDAsMTE0LDE3OCwwLDAsMTI1LDE3OCwwLDAsMTQ1LDE3OCwwLDAsMTU5LDE3OCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsXG4wLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMywwLDAsMCw0NCwwLDAsMCwwLDIsMCwwLDAsMCwwLDAsMjEsMTcyLDAsMCwyMDQsMjQsMCwwLDEzMCwwLDAsMCwxMzAsMCwwLDAsMTMwLDAsMCwwLDEzMSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDEzMSwwLDAsMCwxMzAsMCwwLDAsMTMxLDAsMCwwLDEzMiwwLDAsMCwxMzIsMCwwLDAsMTMzLDAsMCwwLDEzMywwLDAsMCwxMzQsMCwwLDAsMywwLDAsMCw0NCwwLDAsMCwwLDIsMCwwLDAsMCwwLDAsMjYsMTcyLDAsMCwyMDgsMjQsMCwwLDEzMCwwLDAsMCwxMzAsMCwwLDAsMTMwLDAsMCwwLDEzMSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDEzMSwwLDAsMCwxMzAsXG4wLDAsMCwxMzEsMCwwLDAsMTMyLDAsMCwwLDEzMiwwLDAsMCwxMzMsMCwwLDAsMTMzLDAsMCwwLDEzNCwwLDAsMCwzLDAsMCwwLDQ0LDAsMCwwLDAsMiwwLDAsMCwwLDAsMCwzNiwxNzIsMCwwLDIxMiwyNCwwLDAsMTMwLDAsMCwwLDEzMCwwLDAsMCwxMzAsMCwwLDAsMTMxLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMTMxLDAsMCwwLDEzMCwwLDAsMCwxMzEsMCwwLDAsMTMyLDAsMCwwLDEzMiwwLDAsMCwxMzMsMCwwLDAsMTMzLDAsMCwwLDEzNCwwLDAsMCwzLDAsMCwwLDQ0LDAsMCwwLDAsMiwwLDAsMCwwLDAsMCw0OSwxNzIsMCwwLDIwNCwyNCwwLDAsMTMwLDAsMCwwLDEzMCwwLDAsMCwxMzAsMCwwLDAsMTMxLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMTMxLDAsMCwwLDEzMCwwLDAsMCwxMzEsMCwwLDAsMTMyLDAsMCwwLDEzMiwwLDAsMCwxMzMsMCwwLDAsMTMzLDAsMCwwLDEzNCwwLDAsMCwwLDAsMCw2NCwwLDAsMCwwLDAsMCxcbjAsMCwyMzQsMywwLDAsMCwwLDgsMCwyMzUsMywwLDAsMCwwLDAsMSwyMzYsMywwLDAsMCwwLDAsNjQsMjM3LDMsMCwwLDAsMCw2NCwwLDAsMjAyLDE1NCw1OSwwLDIwMiwxNTQsNTksMjA4LDcsMCwwLDIzMiwzLDAsMCwyNDQsMSwwLDAsMTY4LDk3LDAsMCwxMjcsMCwwLDAsMTAsMCwwLDAsODAsMTk1LDAsMCwyMzEsMywwLDAsMjMyLDMsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwxMzAsMCwwLDAsMTMxLDAsMCwwLDEzNSwwLDAsMCwxMzAsMCwwLDAsMTMxLDAsMCwwLDEzNiwwLDAsMCwxMzIsMCwwLDAsMTMxLFxuMCwwLDAsMTMzLDAsMCwwLDEzNCwwLDAsMCwxMzQsMCwwLDAsMTM3LDAsMCwwLDEzMiwwLDAsMCwxMzUsMCwwLDAsMTM2LDAsMCwwLDEzNywwLDAsMCwxMzgsMCwwLDAsMTMyLDAsMCwwLDEzOCwwLDAsMCwxMzksMCwwLDAsMTQwLDAsMCwwLDE0MSwwLDAsMCwwLDAsMCwwLDEzMiwwLDAsMCwxMzIsMCwwLDAsMTQyLDAsMCwwLDEzOSwwLDAsMCwxMzksMCwwLDAsMTQzLDAsMCwwLDE0MCwwLDAsMCwxMzMsMCwwLDAsMTQxLDAsMCwwLDE0MiwwLDAsMCwxMzUsMCwwLDAsMTQ0LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMTQwLDgxLDAsMCwxODQsODEsMCwwLDI1Miw4MSwwLDAsMjQsODIsMCwwLDUzLDgyLDAsMCw4MCw4MiwwLDAsMTA4LDgyLDAsMCwxMzMsODIsMCwwLDE1Nyw4MiwwLDAsMjIyLDgyLDAsMCwyNSw4MywwLDAsOTMsODMsMCwwLDE0MSw4MywwLDAsMjUzLDgzLDAsXG4wLDEzMiw4NCwwLDAsMTg0LDg0LDAsMCwyNTAsODQsMCwwLDM3LDg1LDAsMCw5Niw4NSwwLDAsMTM1LDg1LDAsMCwxNzksODUsMCwwLDIyMCw4NSwwLDAsMTEsODYsMCwwLDUzLDg2LDAsMCwyMjYsNzEsMCwwLDIyNiw3MSwwLDAsOTEsODYsMCwwLDE0Niw4NiwwLDAsMjA3LDg2LDAsMCw3MCw4NywwLDAsMTczLDg3LDAsMCwyMjgsODcsMCwwLDMwLDg4LDAsMCwxMzcsODgsMCwwLDIxNiw4OCwwLDAsMjUsODksMCwwLDg1LDg5LDAsMCwxMzMsODksMCwwLDIzOSw4OSwwLDAsNTYsOTAsMCwwLDYsODAsMCwwLDE3MCwwLDAsMCwxNCw4MCwwLDAsMTcxLDAsMCwwLDMyLDgwLDAsMCwxNzIsMCwwLDAsMjIsODAsMCwwLDE3MywwLDAsMCwwLDkzLDAsMCwyLDAsNCwwLDMsOTMsMCwwLDMsMSwzLDAsNyw5MywwLDAsMywxLDIsMCwxMSw5MywwLDAsNCwwLDEsMCwyMiw4MCwwLDAsOSwwLDAsMCwyMzYsOTYsMCwwLDYsMCwwLDAsOTksOTQsMCwwLDgsMCwwLDAsMTA4LDk0LDAsMCwxMCwwLDAsMCxcbjI0Myw5NiwwLDAsNSwwLDAsMCwzNyw5NCwwLDAsNywwLDAsMCwyNDksOTYsMCwwLDEwLDAsMCwwLDQsOTcsMCwwLDEwLDAsMCwwLDAsMCwwLDAsMTM2LDAsMCwwLDE0MywwLDAsMCwxMzMsMCwwLDAsMTQ0LDAsMCwwLDEzMywwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMTM3LDAsMCwwLDE0NSwwLDAsMCwxMzQsMCwwLDAsMTQ2LDAsMCwwLDEzNCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMTM1LDAsMCwwLDEzNSwwLDAsMCwxNDUsMCwwLDAsMTQ3LDAsMCwwLDE0NywwLDAsMCwxNDYsMCwwLDAsMTQ4LDAsMCwwLDEzNCwwLDAsMCwxNDksMCwwLDAsMTUwLDAsMCwwLDEzOCwwLDAsMCwxNDcsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDEzOSwwLDAsMCwxNTEsMCwwLDAsMTM1LDAsMCwwLDE1MiwwLDAsMCwxMzYsMCwwLDAsMCwwLDAsMCwyNTUsMjU1LDI1NSwyNTUsMjU1LFxuMjU1LDAsMjUyLDEsMCwwLDI0OCwxLDAsMCwyNDgsNDgsMCwwLDAsNywyMzIsMCwwLDYsMTA4LDEsMCw0NywyMzYsMSwwLDcsMTcyLDIsMCwxLDIwOCwyLDAsMywyMTYsMiwwLDEsMjM2LDIsMCwxLDI1MiwyLDAsMSw5MiwzLDAsMSwyMjAsMywwLDQsOCwxMSwwLDE0LDcyLDExLDAsNywxNDgsMTEsMCwxLDE4MCwxMSwwLDEyOSwxODgsMTEsMCwxLDIxMiwxMywwLDEsMjQ4LDEzLDAsMiwxNiwxNCwwLDEsMjgsMTQsMCwxLDIxNiwxNSwwLDgsOCwxOCwwLDYsMTA0LDIxLDAsMiwzNiwyMiwwLDEsNjAsMjIsMCw1NSw2OCwyMiwwLDIsMjA0LDIzLDAsNSwwLDI0LDAsMjIsMjQsMjQsMCwyLDEyMCwyNCwwLDIxLDQ0LDI1LDAsNCwxNjgsMjUsMCwxLDE5MiwyNSwwLDEsODAsMjcsMCwxNSw4OCwyNywwLDcsMTU2LDI3LDAsMiwyNDQsMjcsMCwxNCwwLDI4LDAsMSw2MCwyOCwwLDEsNjgsMjgsMCwyNywxOTIsMjgsMCwxMSwxNTIsMzAsMCw5LDE3MiwzMSwwLDQsMjE2LDMxLDAsNCw4OCwzMiwwLFxuOSwxMDgsMzIsMCwzLDE0OCwzMiwwLDUsMTY0LDMyLDAsMTUsMTkyLDMyLDAsMywxMDAsMzMsMCwxLDEyMCwzMywwLDI3LDE0NCwzNSwwLDQsMCwzNiwwLDMsMjMyLDM2LDAsMTgsMjQ4LDM2LDAsNyw2OCwzNywwLDQsMTM2LDM3LDAsMSwxOTIsMzcsMCwzLDQsMzgsMCwxLDI0MCwzOCwwLDcsMjQ4LDM4LDAsMiwyOCwzOSwwLDMsNDQsMzksMCwxLDkyLDM5LDAsMiwxMzYsMzksMCwyLDIwMCwzOSwwLDIsMjMyLDM5LDAsMyw0LDQwLDAsMSwyNDAsNDAsMCw1LDI0OCw0MCwwLDIsMjgsNDEsMCwzLDQ0LDQxLDAsMSw2OCw0MSwwLDIsMTkyLDQxLDAsMSwyMTIsNDEsMCwzLDQsNDIsMCwxLDI0MCw0MiwwLDgsMjQ4LDQyLDAsMywyOCw0MywwLDMsNDQsNDMsMCwyLDEzNiw0MywwLDIsMTkyLDQzLDAsMyw0LDQ0LDAsMSwyNDAsNDQsMCw3LDI0OCw0NCwwLDIsMjgsNDUsMCwzLDQ0LDQ1LDAsMiw4OCw0NSwwLDIsMTM2LDQ1LDAsMSwxOTIsNDUsMCwxLDgsNDYsMCw1LDI0OCw0NiwwLDMsMjQsXG40NywwLDQsNDAsNDcsMCwxLDkyLDQ3LDAsOCwyMDQsNDcsMCwzLDQsNDgsMCw3LDI0OCw0OCwwLDMsMjQsNDksMCw0LDQwLDQ5LDAsMiw4NCw0OSwwLDIsMTM2LDQ5LDAsMSwyNTIsNDksMCwyLDgsNTAsMCwxLDI0MCw1MCwwLDcsMjQ4LDUwLDAsMywyNCw1MSwwLDQsNDAsNTEsMCwyLDg0LDUxLDAsMiwxMzYsNTEsMCwyLDgsNTIsMCw3LDI0OCw1MiwwLDMsMjQsNTMsMCw0LDQwLDUzLDAsMSw5Miw1MywwLDIsMTM2LDUzLDAsMSwyMjgsNTMsMCwyLDgsNTQsMCwxLDQwLDU1LDAsNiw2MCw1NSwwLDEsODgsNTUsMCw4LDk2LDU1LDAsMywyMDAsNTUsMCwxLDE5Niw1NiwwLDcsMjA4LDU2LDAsMSwyNTIsNTYsMCw5LDI4LDU3LDAsMiwxMDQsNTcsMCwxLDE5Niw1OCwwLDYsMjA4LDU4LDAsMiwyMzYsNTgsMCw2LDMyLDU5LDAsMzEsNCw2MCwwLDEyLDIwOCw2MCwwLDIzLDE5Niw2MSwwLDExLDUyLDYyLDAsMzYsMTAwLDYyLDAsMTUsMjQ4LDYyLDAsMTMsNTYsNjMsMCwyMCwxNzIsNjQsMCxcbjYsNDAsNjUsMCw0LDg4LDY1LDAsMywxMjAsNjUsMCwzLDEzNiw2NSwwLDcsMTU2LDY1LDAsNCwxOTYsNjUsMCwxMiw4LDY2LDAsMSw2MCw2NiwwLDYsMTA0LDY2LDAsMSwyMzYsNjcsMCwxMiwxMTYsNzcsMCwxMCw2NCw3OCwwLDEsMCw4MCwwLDIsMTgwLDg5LDAsMSwwLDkwLDAsMiwxMDgsOTAsMCwzLDE3Miw5MSwwLDMsNzIsOTIsMCw1LDIwMCw5MiwwLDIsNzIsOTMsMCwyLDIwMCw5MywwLDM1LDIwOCw5NCwwLDQsOTYsOTUsMCwxLDExNiw5NSwwLDE1LDAsOTYsMCwxLDE2NCw5OCwwLDEyLDEyOCwxMDAsMCwxMiwxOTIsMTAwLDAsMSwwLDEwMSwwLDIsMTYsMTAxLDAsMTcsMTkyLDEwMiwwLDIsMzIsMTAzLDAsMzQsMTIwLDEwMywwLDUsOTIsMTA0LDAsMiwxMjAsMTA0LDAsMTAsODQsMTA1LDAsMjksMTI4LDEwNSwwLDEsMjUyLDEwNSwwLDcsMTI4LDEwNiwwLDYsMTYwLDEwNiwwLDUsMCwxMDgsMCwxNywyMDgsMTA4LDAsMzUsMTA0LDEwOSwwLDMsMCwxMTAsMCwxMywxMzIsMTEwLFxuMCwxNCwxNTIsMTExLDAsNCwyNDAsMTExLDAsMjAsMTQ0LDExMiwwLDUsMjM2LDExMiwwLDIsMjQ4LDExMywwLDgsMCwxMTUsMCwyNSw2NCwxMTUsMCwxLDE4MCwxMTUsMCwzLDIwMCwxMTUsMCwzOSwwLDExOSwwLDQsMjQwLDExOSwwLDEsMjQ0LDEyNiwwLDMsMjUyLDEyNiwwLDMsNTIsMTI3LDAsMywxMTYsMTI3LDAsMywxODAsMTI3LDAsMiwyNDQsMTI3LDAsMTAxLDAsMTI4LDAsNiwxNjgsMTI5LDAsNSwyMzIsMTI5LDAsNSw0MCwxMzAsMCwyNiwxMjgsMTMwLDAsMzMsNjQsMTMxLDAsMiwwLDEzMiwwLDQsMTIsMTMyLDAsMiwzMiwxMzIsMCwxLDgwLDEzMiwwLDMsODgsMTMyLDAsNiwxMjAsMTMyLDAsMSwxNDgsMTMyLDAsMSwxNTYsMTMyLDAsMSwxNjQsMTMyLDAsMSwxODQsMTMyLDAsMiwyMzIsMTMyLDAsNSwwLDEzMywwLDQsNDAsMTMzLDAsMSw2MCwxMzMsMCwxMDAsNjYsMTM0LDAsMzksMCwxNDQsMCwxMSwwLDE0NSwwLDc4LDExMiwxNDYsMCwwLDIsMTQ4LDAsMTE3LDQsMTU2LFxuMCwxODUsODMsMTU4LDAsMTAsNjQsMTczLDAsNiwxNDgsMTc5LDAsMywxODgsMTc5LDAsNCwyMjgsMTc5LDAsMiwyNDgsMTc5LDAsMSwxOTIsMTgxLDAsMSwyNTIsMTgxLDAsNzksMTI4LDE4MywwLDEyLDE5MiwxODQsMCwyNiwwLDE4NiwwLDg5LDEwOCwxODYsMCwyMTQsMCwxODgsMCwxMiwxOTIsMTkxLDAsNSwwLDE5MiwwLDI1LDMyLDE5MiwwLDcsMTY4LDE5MiwwLDIsMjE2LDE5MiwwLDMsMjQ0LDE5MiwwLDQsMTAwLDE5NCwwLDEsMTI4LDE5NCwwLDEsMjM2LDE5NSwwLDIsNjQsMTk4LDAsMTAsODgsMTk4LDAsMzYsMCwxOTksMCwzMSwwLDIwMCwwLDMwLDE2OCwyMDAsMCwxLDY0LDIwMSwwLDMyLDEyOCwyMDEsMCwzOSw0MCwyMDIsMCw2MywwLDIwMywwLDAsMSwyMDQsMCw2NCwwLDU1LDEsNTUsNjQsMTQ2LDIsMiwyNDgsMTQ3LDIsMyw1MiwxNTIsMiwxNiwxODgsMTUzLDIsMSwxMjQsMTU0LDIsOCwxOTIsMTU1LDIsMjMsMCwxNTYsMiwyLDEyOCwxNTYsMiwyLDM2LDE1OCwyLDEsXG44LDE2MCwyLDEsMjQsMTYwLDIsMSw0NCwxNjAsMiw5LDE0MCwxNjAsMiw0LDIxNiwxNjAsMiw0LDIwOCwxNjEsMiwyLDAsMTYyLDIsMTcsMjA4LDE2MiwyLDIsNTYsMTYzLDIsMTgsMTI4LDE2MywyLDMsMjI0LDE2MywyLDEwLDE1MiwxNjQsMiwxMywyOCwxNjUsMiwxLDEyNCwxNjUsMiw0LDAsMTY2LDIsMjcsMjA0LDE2NiwyLDIsMTIwLDE2NywyLDE0LDE2NCwxNjgsMiwxLDEyLDE2OSwyLDIsNDgsMTY5LDIsNCwxMTIsMTY5LDIsMywyMjAsMTY5LDIsMSwyMzYsMTY5LDIsMSwxOTIsMTcwLDIsMywyMDAsMTcwLDIsMiwyMjAsMTcwLDIsMiwyNDgsMTcwLDIsMSw0LDE3MSwyLDIsMTIwLDE3MSwyLDcsMTcyLDE3MSwyLDIsMjEyLDE3MSwyLDExLDE0MCwxNzUsMiwxLDAsOTYsMywyLDI1MiwxMDksMywyLDI1MiwxMTEsMywxLDI1MiwxMjcsMywxLDEyMCwyMzYsMywxLDE2NCwyMzYsMywxNiwyMDAsMjM4LDMsMiwyNDgsMjQ0LDMsMiwyNDAsMjQ3LDMsMjYsMCwyNDgsMyw3LDEyOCwyNDgsXG4zLDM1LDE5MiwyNDgsMywxOSw4MCwyNDksMyw0LDE2MCwyNDksMywxLDI1MiwyNTEsMywxNSw0LDI1MiwzLDcsMTA0LDI1MiwzLDYsMjM2LDI1MiwzLDExLDEwOCwyNTMsMyw3LDEyOCwyNTUsMyw3LDE2MCwyNTUsMyw1LDIyOCwyNTUsMywzLDAsNCw0LDksMjIwLDQsNCwxNywyMjgsNSw0LDEyLDY0LDYsNCw0Niw2NCw3LDQsMSwxMjQsMTQsNCwxLDY0LDE1LDQsMSw5MiwzMyw0LDEsMTI0LDM2LDQsMSwyNTIsMzYsNCwzLDQsNDAsNCwyLDIwLDQwLDQsNCw0OCw0MCw0LDMsMjI0LDQwLDQsMSwyNTIsNDAsNCw5LDY0LDQxLDQsMSwyNTIsNDEsNCw3LDIyOCw0NCw0LDMsMCw2NCw0LDIyLDIyNCw2NCw0LDMsMCw2Niw0LDE4LDE5Miw2Niw0LDMsMCw2OCw0LDE0LDE1Niw2OCw0LDQsMCw2OSw0LDMsMCw3MCw0LDE0LDIwNCw3MCw0LDQsMjAsNzEsNCwxMywxNzIsOTAsNCw0LDE5MiwxNDUsNCw0Niw2OCwxODksNSw0LDYwLDE5MCw1LDI0NiwwLDY0LDcsMzksMCw2OCw3LDE4MSwxNjQsNjgsXG43LDcwLDAsNzIsNyw4NywwLDc2LDcsMSw0LDkxLDcsMSwxMDgsOTEsNywxLDIzNiw5MSw3LDEsODQsOTIsNywxLDIxMiw5Miw3LDEsNjAsOTMsNywxLDE4OCw5Myw3LDEsMzYsOTQsNywxLDE2NCw5NCw3LDEsMTIsOTUsNywyLDE5MiwxODcsNyw0NCwwLDE5Miw3LDEwMCwxOTIsMTkyLDcsMTUsMTI4LDE5NCw3LDE0LDE5NiwxOTQsNywxNSw0LDE5NSw3LDE1LDY4LDE5NSw3LDMxLDY0LDE5Niw3LDYwLDE5MiwxOTYsNyw0MywxOTIsMTk3LDcsMjksMTUyLDE5OSw3LDQzLDY0LDIwMCw3LDksMCwyMDEsNywyLDY0LDIwMSw3LDMzLDAsMjA0LDcsNiwxOTIsMjA0LDcsNzAsMjIwLDIwNCw3LDIwLDAsMjA2LDcsMzcsMTI4LDIwNiw3LDUsMjQsMjA3LDcsMTcsMTI4LDIwNyw3LDYzLDAsMjA4LDcsMSwwLDIwOSw3LDE4Miw4LDIwOSw3LDQsMjI4LDIxMSw3LDYyLDAsMjEyLDcsNCwwLDIxMyw3LDI0LDY0LDIxMyw3LDcwLDIzNiwyMTUsNywxMSwyMCwyMTcsNyw3MCwwLDIxOCw3LDExNiwwLDIyMCxcbjcsMSw0LDAsNTYsOTYsMTI4LDAsNTYsMjQwLDAsNCw1NiwwLDAsMCwwLDEsMCwwLDAsMTUzLDAsMCwwLDEzNSwwLDAsMCwxMzYsMCwwLDAsMTQwLDAsMCwwLDE0OCwwLDAsMCwxNDksMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNTQsMTAyLDAsMCwwLDAsMiwwLDYxLDEwMiwwLDAsMCwwLDQsMCwwLDAsMCwwLDAsMCwwLDAsMzcsMTAyLDAsMCwxLDAsMCwwLDQwLDEwMiwwLDAsMiwwLDAsMCw0MywxMDIsMCwwLDYsMCwwLDAsNDcsMTAyLDAsMCwxMjgsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsMCwwLDAsMCwxNTQsMCwwLDAsMTM2LDAsMCwwLDE0MSwwLDAsMCwxMzAsMCwwLDAsMTU1LDAsMCwwLDE0MiwwLDAsMCwxNzQsMCwwLDAsMTMwLDAsMCwwLDEzMSwwLDAsMCwxMzcsMCwwLDAsMTM4LDAsMCwwLDE1NiwwLDAsMCwxMzksMCwwLDAsMTUwLFxuMCwwLDAsMTU3LDAsMCwwLDE1OCwwLDAsMCwxNTksMCwwLDAsMTQwLDAsMCwwLDAsMCwwLDAsOSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMTQ1LDEzMywwLDAsMSwwLDAsMCwyMjYsNzcsMCwwLDEsMCwwLDAsMiwwLDEsMCwwLDAsMCwwLDAsMCwwLDAsMTc1LDAsMCwwLDAsMCwwLDAsMTg1LDEyMCwwLDAsMCwwLDAsMCwyLDAsMSwwLDAsMCwwLDAsMCwwLDAsMCwxNzYsMCwwLDAsMCwwLDAsMCwxNzUsMTIwLDAsMCwwLDAsMCwwLDEsMCwxLDAsMCwwLDAsMCwwLDAsMCwwLDE3NywwLDAsMCwwLDAsMCwwLDE1NSwxMjAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDE5NSw3OCwwLDAsMjQ4LDEyMCwwLDAsNSwxMjEsMCwwLDAsMCwwLDAsMTgsMTIxLDAsMCwwLDAsMCwwLDEsMCwxLDAsMCwwLDAsMCwwLDAsMCwwLDE3OCwwLDAsMCwwLDAsMCwwLDg1LDEyMiwwLDAsMCwwLDAsMCwzLDAsMSwwLDAsMCwwLFxuMCwwLDAsMCwwLDE3OSwwLDAsMCwwLDAsMCwwLDIxMCwxMjIsMCwwLDAsMCwwLDAsMjMsMTMwLDAsMCwwLDAsMCwwLDgsMCwwLDAsMjQ3LDEyNSwwLDAsMSwxLDAsMCwwLDAsMCwwLDM4LDEzMCwwLDAsMiwwLDAsMCwwLDAsMTYsMCw1NCwxMzAsMCwwLDMsMCwwLDAsMCwwLDAsMCwxMTQsMTI1LDAsMCw0LDEsMCwwLDAsMCwwLDAsMjMsMTI2LDAsMCw1LDAsMCwwLDAsMCwwLDAsNjcsMTMwLDAsMCw2LDAsMCwwLDAsMCwwLDAsODcsMTMwLDAsMCwyLDAsMCwwLDAsMCwwLDMyLDEwMywxMzAsMCwwLDIsMCwwLDAsMTYsMCwwLDAsMTI0LDEzMCwwLDAsNywwLDAsMCwwLDAsMCwwLDEzOSwxMzAsMCwwLDgsMCwwLDAsMCwwLDAsMCwxNTUsMTMwLDAsMCwyLDAsMCwwLDEyOCwwLDAsMCwxNjksMTMwLDAsMCwwLDIsMCwwLDE1LDAsMCwwLDE4MiwxMzAsMCwwLDEwLDEsMCwwLDAsMCwwLDAsMTk2LDEzMCwwLDAsMTEsMSwwLDAsMCwwLDAsMCwyMTUsMTMwLDAsMCwyLDAsMCwwLDAsMCwwLDIsMjM0LFxuMTMwLDAsMCwyLDAsMCwwLDAsMSwwLDAsMTI2LDEyNywwLDAsMTIsMCwwLDAsMCwwLDAsMCwxLDEzMSwwLDAsMTMsMSwwLDAsMCwwLDAsMCwxOSwxMzEsMCwwLDE0LDEsMCwwLDAsMCwwLDAsMzYsMTMxLDAsMCwyLDAsMCwwLDAsMCw4LDAsNDksMTMxLDAsMCwwLDIsMCwwLDAsMCwwLDAsNjQsMTMxLDAsMCwyLDAsMCwwLDQsMCwwLDAsODIsMTMxLDAsMCwyLDAsMCwwLDgsMCwwLDAsOTIsMTMxLDAsMCwyLDAsMCwwLDAsMzIsMCwwLDExNywxMzEsMCwwLDE1LDEsMCwwLDAsMCwwLDAsMTM2LDEzMSwwLDAsMTYsMSwwLDAsMCwwLDAsMCwxNDcsMTMxLDAsMCwxNywxLDAsMCwwLDAsMCwwLDE1OCwxMzEsMCwwLDE2LDEsMCwwLDEsMCwwLDAsMjIxLDEyNiwwLDAsMTgsMSwwLDAsMCwwLDAsMCwyMTUsMTI1LDAsMCwxOSwxLDAsMCwwLDAsMCwwLDIyOCwxMjUsMCwwLDIwLDAsMCwwLDAsMCwwLDAsMTcwLDEzMSwwLDAsMiwwLDAsMCwwLDEyOCwwLDAsMjAyLDEyNSwwLDAsMjIsMCwwLDAsMCwwLFxuMCwwLDE4OSwxMzEsMCwwLDIzLDEsMCwwLDAsMCwwLDAsMzUsMTI2LDAsMCwyNCwwLDAsMCwwLDAsMCwwLDIwNCwxMzEsMCwwLDIzLDEsMCwwLDAsMCwwLDAsMTYxLDEyNSwwLDAsMjUsMCwwLDAsMCwwLDAsMCwyMTUsMTMxLDAsMCwyLDAsMCwwLDAsMCwwLDQsMjI2LDEzMSwwLDAsMTgsMSwwLDAsMCwwLDAsMCwyMzgsMTMxLDAsMCwyLDAsMCwwLDAsNjQsMCwwLDI1NSwxMzEsMCwwLDIsMCwwLDAsMCwwLDQsMCwxOCwxMzIsMCwwLDIsMCwwLDAsMCwwLDIsMCw0NCwxMzIsMCwwLDAsMCwwLDAsMSwwLDAsMCwxNzEsMTI1LDAsMCwyNiwwLDAsMCwwLDAsMCwwLDU5LDEzMiwwLDAsMiwwLDAsMCw2NCwwLDAsMCw3OCwxMzIsMCwwLDI3LDAsMCwwLDAsMCwwLDAsMjQ0LDEyNywwLDAsMjgsMCwwLDAsMCwwLDAsMCw5MiwxMzIsMCwwLDI5LDEsMCwwLDAsMCwwLDAsMTAyLDEyNiwwLDAsMzAsMSwwLDAsMCwwLDAsMCw5OCwxMzIsMCwwLDMxLDEsMCwwLDAsMCwwLDAsNDUsMTI2LDAsMCwzMiwwLFxuMCwwLDAsMCwwLDAsNTYsMTI2LDAsMCwzMywwLDAsMCwwLDAsMCwwLDQsMTI4LDAsMCwzNCwwLDAsMCwwLDAsMCwwLDEwOSwxMzIsMCwwLDAsMCwwLDAsNiwwLDAsMCwyMTcsMTI3LDAsMCwzNSwwLDAsMCwwLDAsMCwwLDEyMiwxMzIsMCwwLDM2LDEsMCwwLDAsMCwwLDAsMTM3LDEzMiwwLDAsMiwwLDAsMCwwLDgsMSwwLDEyMSwxMjksMCwwLDc2LDEyOSwwLDAsMTUzLDEyOSwwLDAsMTU4LDEyOSwwLDAsMTY2LDEyOSwwLDAsOTAsMTI5LDAsMCwyMjUsMTI4LDAsMCwxMzQsMTI5LDAsMCwxNDAsMTI5LDAsMCwxNDYsMTI5LDAsMCwxMTUsMTI5LDAsMCwxMjEsMTI5LDAsMCw3NiwxMjksMCwwLDksOTQsMCwwLDEyNSwxMjksMCwwLDEzMCwxMjksMCwwLDM4LDEyOSwwLDAsNzYsMTI5LDAsMCw5MywxMjksMCwwLDEwMCwxMjksMCwwLDEwNywxMjksMCwwLDg2LDEyOSwwLDAsODgsMTI5LDAsMCw5MCwxMjksMCwwLDM4LDEyOSwwLDAsNzYsMTI5LDAsMCw4MSwxMjksMCwwLDM4LDEyOSwwLDAsXG43NiwxMjksMCwwLDM1LDEyOSwwLDAsMzgsMTI5LDAsMCwyMjUsMTI4LDAsMCw0MiwxMjksMCwwLDQ3LDEyOSwwLDAsNTAsMTI5LDAsMCw2MCwxMjksMCwwLDcwLDEyOSwwLDAsMjI1LDEyOCwwLDAsMTY5LDk2LDAsMCwyMzEsMTI4LDAsMCwyMzgsMTI4LDAsMCwzMCwxMjgsMCwwLDEsMCwwLDAsMzUsMTI4LDAsMCwxLDAsMCwwLDQxLDEyOCwwLDAsMiwwLDAsMCw1MCwxMjgsMCwwLDMsMCwwLDAsNTksMTI4LDAsMCwyLDAsMCwwLDY3LDEyOCwwLDAsMywwLDAsMCw3NSwxMjgsMCwwLDAsMCwwLDAsODIsMTI4LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwxMiwxMjgsMCwwLDE0Myw5OCwwLDAsMTcsMTI4LDAsMCwwLDEzMCwwLDAsNywxMzAsMCwwLDE1LDEzMCwwLDAsMjA4LDEyNywwLDAsNDcsMTAyLDAsMCwxOSwxMzAsMCwwLDcwLDEyOSwwLDAsNjQsMCwwLDAsOTcsMTI4LDAsMCw2NiwwLDAsMCw5MiwxMjgsMCwwLDY1LDAsMCwwLDI1LDEzNiwwLDAsNjcsMCwwLDAsMjQ4LDExNixcbjAsMCwzLDAsMCwwLDI0NCwxMTYsMCwwLDMsMCwwLDAsMjI2LDcxLDAsMCwxOSwxNDYsMCwwLDI1LDE0NiwwLDAsMzAsMTQ2LDAsMCwzNSwxNDYsMCwwLDE1MSwxNDYsMCwwLDE1NywxNDYsMCwwLDE2NSwxNDYsMCwwLDIxNiwxNTQsMCwwLDIyMSwxNTQsMCwwLDIyOCwxNTQsMCwwLDIzMSwxNTQsMCwwLDIzNCwxNTQsMCwwLDIzNywxNTQsMCwwLDI0MCwxNTQsMCwwLDI0MywxNTQsMCwwLDI1MSwxNTQsMCwwLDI0Myw5NiwwLDAsNDIsMTI5LDAsMCw0LDE1NSwwLDAsMTQ4LDE2MywwLDAsMTU3LDE2MywwLDAsMTY0LDE2MywwLDAsMTcwLDE2MywwLDAsMjUzLDE2MywwLDAsNywxNjQsMCwwLDE4LDE2NCwwLDAsMzAsMTY0LDAsMCw0MSwxNjQsMCwwLDUyLDE2NCwwLDAsNjMsMTY0LDAsMCw2OCwxNjQsMCwwLDczLDE2NCwwLDAsODQsMTY0LDAsMCw5NiwxNjQsMCwwLDEwMywxNjQsMCwwLDExMSwxNjQsMCwwLDExOSwxNjQsMCwwLDEyNCwxNjQsMCwwLDEzMCwxNjQsMCwwLDE0NCwxNjQsMCxcbjAsMTUwLDE2NCwwLDAsMTYwLDE2NCwwLDAsMTY1LDE2NCwwLDAsMTY5LDE2NCwwLDAsMTc0LDE2NCwwLDAsMTc3LDE2NCwwLDAsMTgzLDE2NCwwLDAsMTkwLDE2NCwwLDAsMTk3LDE2NCwwLDAsMjA0LDE2NCwwLDAsMjExLDE2NCwwLDAsMjE0LDE2NCwwLDAsMjE4LDE2NCwwLDAsMjI5LDE2NCwwLDAsMjM4LDE2NCwwLDAsMjQ0LDE2NCwwLDAsMjU0LDE2NCwwLDAsOCwxNjUsMCwwLDE1LDE2NSwwLDAsMjMsMTY1LDAsMCwyNiwxNjUsMCwwLDI5LDE2NSwwLDAsMzIsMTY1LDAsMCwzNSwxNjUsMCwwLDM4LDE2NSwwLDAsNDEsMTY1LDAsMCw1MSwxNjUsMCwwLDU4LDE2NSwwLDAsNjQsMTY1LDAsMCw3NCwxNjUsMCwwLDg1LDE2NSwwLDAsODksMTY1LDAsMCw5OCwxNjUsMCwwLDEwNywxNjUsMCwwLDExNCwxNjUsMCwwLDEyNCwxNjUsMCwwLDEzMSwxNjUsMCwwLDEzNiwxNjUsMCwwLDE0MywxNjUsMCwwLDE1NCwxNjUsMCwwLDE1OSwxNjUsMCwwLDE2NiwxNjUsMCwwLDE3MiwxNjUsMCwwLFxuMTc4LDE2NSwwLDAsMTg0LDE2NSwwLDAsMTkwLDE2NSwwLDAsMjAxLDE2NSwwLDAsMjEyLDE2NSwwLDAsMjIwLDE2NSwwLDAsMjI5LDE2NSwwLDAsMjM1LDE2NSwwLDAsMjQ1LDE2NSwwLDAsMiwxNjYsMCwwLDEzLDE2NiwwLDAsMTksMTY2LDAsMCwyNCwxNjYsMCwwLDMxLDE2NiwwLDAsNDQsMTY2LDAsMCw1NSwxNjYsMCwwLDYwLDE2NiwwLDAsNjgsMTY2LDAsMCw3NCwxNjYsMCwwLDgxLDE2NiwwLDAsODYsMTY2LDAsMCw5NSwxNjYsMCwwLDEwMCwxNjYsMCwwLDEwOSwxNjYsMCwwLDExNCwxNjYsMCwwLDExOSwxNjYsMCwwLDEyNSwxNjYsMCwwLDEzMywxNjYsMCwwLDE0MywxNjYsMCwwLDE1MSwxNjYsMCwwLDE2MSwxNjYsMCwwLDE3MCwxNjYsMCwwLDE3NywxNjYsMCwwLDE5MCwxNjYsMCwwLDE5NSwxNjYsMCwwLDIwNywxNjYsMCwwLDIxNSwxNjYsMCwwLDIyMiwxNjYsMCwwLDIzMCwxNjYsMCwwLDIzOSwxNjYsMCwwLDI1MCwxNjYsMCwwLDAsMTY3LDAsMCwxMSwxNjcsMCwwLDIxLFxuMTY3LDAsMCwzMSwxNjcsMCwwLDQwLDE2NywwLDAsNTAsMTY3LDAsMCw2NCwxNjcsMCwwLDc4LDE2NywwLDAsODksMTY3LDAsMCwxMDIsMTY3LDAsMCwxMTMsMTY3LDAsMCwxMTksMTY3LDAsMCwxMzEsMTY3LDAsMCwxNDAsMTY3LDAsMCwxNDksMTY3LDAsMCwxNTYsMTY3LDAsMCwxNjYsMTY3LDAsMCwxNzMsMTY3LDAsMCwxODQsMTY3LDAsMCwxOTgsMTY3LDAsMCwyMDksMTY3LDAsMCwyMTYsMTY3LDAsMCwyMjQsMTY3LDAsMCwyMzAsMTY3LDAsMCwyMzgsMTY3LDAsMCwyNTEsMTY3LDAsMCw1LDE2OCwwLDAsMTUsMTY4LDAsMCwyMCwxNjgsMCwwLDI5LDE2OCwwLDAsMzcsMTY4LDAsMCw0MywxNjgsMCwwLDQ4LDE2OCwwLDAsNjAsMTY4LDAsMCw3MiwxNjgsMCwwLDg0LDE2OCwwLDAsOTYsMTY4LDAsMCwxMDksMTY4LDAsMCwxMTksMTY4LDAsMCwxMjksMTY4LDAsMCwxNDEsMTY4LDAsMCwxNTMsMTY4LDAsMCwxNjMsMTY4LDAsMCwxNjksMTY4LDAsMCwxNzksMTY4LDAsMCwxODYsMTY4LFxuMCwwLDE5OCwxNjgsMCwwLDIwNywxNjgsMCwwLDIxNSwxNjgsMCwwLDIyNCwxNjgsMCwwLDIzMSwxNjgsMCwwLDI0MSwxNjgsMCwwLDI0OCwxNjgsMCwwLDAsMTY5LDAsMCw5LDE2OSwwLDAsMTUsMTY5LDAsMCwyMywxNjksMCwwLDMxLDE2OSwwLDAsNDEsMTY5LDAsMCw1MCwxNjksMCwwLDYxLDE2OSwwLDAsNjYsMTY5LDAsMCwxNTAsMTY5LDAsMCwxNjMsMTY5LDAsMCwwLDAsMCwwLDE5OSwxNjksMCwwLDIyNCwxNjksMCwwLDI1NSwxNjksMCwwLDE4LDE3MCwwLDAsMTg0LDk3LDAsMCw0MywxNzAsMCwwLDgwLDE3MCwwLDAsOTIsMTcwLDAsMCwxMDcsMTcwLDAsMCwxNDAsMTcwLDAsMCwxNTgsMTcwLDAsMCwxODMsMTcwLDAsMCwyMTIsMTcwLDAsMCwyMjksMTcwLDAsMCw3MywxNTcsMCwwLDI1MCw3MCwwLDAsMjUyLDE3MCwwLDAsMTQsMTcxLDAsMCwzMiwxNzEsMCwwLDcxLDE3MSwwLDAsMTAyLDE3MSwwLDAsMTIzLDE3MSwwLDAsMTU1LDE3MSwwLDAsMTg5LDE3MSwwLDAsMTUxLDAsXG4wLDAsMTUyLDAsMCwwLDE1MywwLDAsMCwxLDAsMCwwLDE2MCwwLDAsMCwxMzcsMCwwLDAsMTM4LDAsMCwwLDE0MywwLDAsMCwxNTQsMCwwLDAsMTU1LDAsMCwwLDE1NiwwLDAsMCwxNTcsMCwwLDAsMTU4LDAsMCwwLDE0NCwwLDAsMCwxNjEsMCwwLDAsMTYyLDAsMCwwLDAsMCwwLDAsMTM2LDAsMCwwLDE0MSwwLDAsMCwxNTksMCwwLDAsMTM5LDAsMCwwLDEzNywwLDAsMCw5NiwxNzIsMCwwLDE0NSwwLDAsMCwwLDAsMCwwLDU5LDE3MiwwLDAsMTYzLDAsMCwwLDAsMCwwLDAsMjI2LDEwMSwwLDAsMTYwLDAsMCwwLDAsMCwwLDAsMTAxLDE3MiwwLDAsMTYxLDAsMCwwLDAsMCwwLDAsMTA4LDE3MiwwLDAsMTYyLDAsMCwwLDAsMCwwLDAsMTEzLDE3MiwwLDAsMTYzLDAsMCwwLDAsMCwwLDAsMTE5LDE3MiwwLDAsMTY0LDAsMCwwLDAsMCwwLDAsMTI5LDE3MiwwLDAsMTQ2LDAsMCwwLDAsMCwwLDAsMTM1LDE3MiwwLDAsMTQ3LDAsMCwwLDAsMCwwLDAsMTQwLDE3MiwwLDAsMCwwLDAsMCwwLDAsXG4wLDAsMTQ2LDE3MiwwLDAsMCwwLDAsMCwwLDAsMCwwLDE1NCwxNzIsMCwwLDE0OCwwLDAsMCwwLDAsMCwwLDE2MCwxNzIsMCwwLDAsMCwwLDAsMCwwLDAsMCwxNjcsMTcyLDAsMCwwLDAsMCwwLDAsMCwwLDAsMTc2LDE3MiwwLDAsMTY1LDAsMCwwLDAsMCwwLDAsMTgzLDE3MiwwLDAsMCwwLDAsMCwwLDAsMCwwLDE5MywxNzIsMCwwLDE2NCwwLDAsMCwwLDAsMCwwLDIwMCwxNzIsMCwwLDE2NiwwLDAsMCwwLDAsMCwwLDIxNCwxNzIsMCwwLDE2NywwLDAsMCwwLDAsMCwwLDIyMCwxNzIsMCwwLDE2NSwwLDAsMCwwLDAsMCwwLDIyNiwxNzIsMCwwLDE0OSwwLDAsMCwwLDAsMCwwLDIzMywxNzIsMCwwLDEzMCwwLDAsMCwwLDAsMCwwLDI0MSwxNzIsMCwwLDEzNywwLDAsMCwwLDAsMCwwLDI0NiwxNzIsMCwwLDE2OCwwLDAsMCwwLDAsMCwwLDI1MywxNzIsMCwwLDAsMCwwLDAsMCwwLDAsMCw0LDE3MywwLDAsMTMxLDAsMCwwLDAsMCwwLDAsMTYsMTczLDAsMCwxNTAsMCwwLDAsMCwwLDAsMCxcbjI1LDE3MywwLDAsMTY5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDEyMiwxNzMsMCwwLDEzMSwxNzMsMCwwLDE0MCwxNzMsMCwwLDE0NSwxNzMsMCwwLDMsMCwwLDAsMTY2LDAsMCwwLDEzNywwLDAsMCwxMzgsMCwwLDAsMTQzLDAsMCwwLDE1NCwwLDAsMCwxNTUsMCwwLDAsMTcwLDAsMCwwLDE3MSwwLDAsMCwxNzIsMCwwLDAsMTQ0LDAsMCwwLDE2MSwwLDAsMCwxNjIsMCwwLDAsMCwwLDAsMCwxMzYsMCwwLDAsMTQxLDAsMCwwLDE1OSwwLDAsMCwxMzksMCwwLDAsMTM3LDAsMCwwLDAsMCwwLDAsMywwLDAsMCwxNjcsMCwwLDAsMTM3LDAsMCwwLDEzOCwwLDAsMCwxNDMsMCwwLDAsMTU0LDAsMCwwLDE1NSwwLDAsMCwxNzMsMCwwLDAsMTc0LDAsMCwwLDE3NSwwLDAsMCwxNDQsMCwwLDAsMTYxLDAsMCwwLDE2MiwwLDAsMCwxNDAsMCwwLDAsMTM2LDAsMCwwLDE0MSwwLDAsMCwxNTksMCwwLDAsMTM5LDAsMCwwLDEzNywwLDAsMCwwLDAsMCwwLDEsMCwxLDMyLDAsMCwwLDAsMCxcbjAsMCwwLDE4MCwwLDAsMCwwLDAsMCwwLDE3LDE3NSwwLDAsMCwwLDAsMCwxLDAsMSwzMiwwLDAsMCwwLDAsMCwwLDAsMTgxLDAsMCwwLDAsMCwwLDAsNDMsMTc1LDAsMCwwLDAsMCwwLDEsMCwxLDEyLDAsMCwwLDAsMCwwLDAsMCwxODIsMCwwLDAsMCwwLDAsMCw2OCwxNzUsMCwwLDAsMCwwLDAsMiwwLDEsMTIsMCwwLDAsMCwwLDAsMCwwLDE4MiwwLDAsMCwwLDAsMCwwLDc3LDE3NSwwLDAsMCwwLDAsMCwxLDAsMSwxMiwwLDAsMCwwLDAsMCwwLDAsMTgyLDAsMCwwLDAsMCwwLDAsODgsMTc1LDAsMCwwLDAsMCwwLDEsMCwxLDgsMSwwLDAsMCwwLDAsMCwwLDE4MywwLDAsMCwwLDAsMCwwLDk1LDE3NSwwLDAsMCwwLDAsMCwyLDAsMSw4LDEsMCwwLDAsMCwwLDAsMCwxODMsMCwwLDAsMCwwLDAsMCw5NSwxNzUsMCwwLDAsMCwwLDAsMSwwLDEsOCwyLDAsMCwwLDAsMCwwLDAsMTgzLDAsMCwwLDAsMCwwLDAsMTAxLDE3NSwwLDAsMCwwLDAsMCwyLDAsMSw4LDIsMCwwLDAsMCwwLDAsMCwxODMsXG4wLDAsMCwwLDAsMCwwLDEwMSwxNzUsMCwwLDAsMCwwLDAsMSwwLDEsOCwzLDAsMCwwLDAsMCwwLDAsMTgzLDAsMCwwLDAsMCwwLDAsMTA3LDE3NSwwLDAsMCwwLDAsMCwyLDAsMSw4LDMsMCwwLDAsMCwwLDAsMCwxODMsMCwwLDAsMCwwLDAsMCwxMDcsMTc1LDAsMCwwLDAsMCwwLDI1NSwwLDMzLDgsMCwwLDAsMCwwLDAsMCwwLDE4NCwwLDAsMCwwLDAsMCwwLDEyNCwxMzksMCwwLDAsMCwwLDAsMCwwLDMzLDgsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwxMjQsMTM5LDAsMCwwLDAsMCwwLDEsMCwzMywxNiwwLDAsMCwwLDAsMCwwLDAsMTg1LDAsMCwwLDE0MiwwLDAsMCwxMjQsMTM5LDAsMCwwLDAsMCwwLDI1NSwwLDMzLDgsMSwwLDAsMCwwLDAsMCwwLDE4NCwwLDAsMCwwLDAsMCwwLDEyOCwxMzksMCwwLDAsMCwwLDAsMCwwLDMzLDgsMSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwxMjgsMTM5LDAsMCwwLDAsMCwwLDEsMCwzMywxNiwxLDAsMCwwLDAsMCwwLDAsXG4xODUsMCwwLDAsMTQyLDAsMCwwLDEyOCwxMzksMCwwLDAsMCwwLDAsMSwwLDEyOSw4LDAsMCwwLDAsMCwwLDAsMCwxODYsMCwwLDAsMCwwLDAsMCwxMTIsMTc1LDAsMCwwLDAsMCwwLDEsMCw2NSw4LDAsMCwwLDAsMCwwLDAsMCwxODcsMCwwLDAsMCwwLDAsMCwxMTksMTc1LDAsMCwwLDAsMCwwLDIsMCwxLDgsMCwwLDAsMCwwLDAsMCwwLDE4OCwwLDAsMCwwLDAsMCwwLDEyNiwxNzUsMCwwLDAsMCwwLDAsMjU1LDAsMSw4LDAsMCwwLDAsMCwwLDAsMCwxODksMCwwLDAsMCwwLDAsMCwxMzIsMTc1LDAsMCwwLDAsMCwwLDEsMCwxLDgsMCwwLDAsMCwwLDAsMCwwLDE5MCwwLDAsMCwwLDAsMCwwLDEzOSwxNzUsMCwwLDAsMCwwLDAsMjU1LDAsMSw4LDAsMCwwLDAsMCwwLDAsMCwxOTEsMCwwLDAsMCwwLDAsMCwxNDcsMTc1LDAsMCwwLDAsMCwwLDEsMCwxLDgsMCwwLDAsMCwwLDAsMCwwLDE5MiwwLDAsMCwwLDAsMCwwLDE1MiwxNzUsMCwwLDAsMCwwLDAsMSwwLDEsOCwwLDAsMCwwLDAsMCxcbjAsMCwxOTMsMCwwLDAsMCwwLDAsMCwxNTYsMTc1LDAsMCwwLDAsMCwwLDIsMCwxLDgsMCwwLDAsMCwwLDAsMCwwLDE5MywwLDAsMCwwLDAsMCwwLDE1NiwxNzUsMCwwLDAsMCwwLDAsMSwwLDEsOCwwLDAsMCwwLDAsMCwwLDAsMTk0LDAsMCwwLDAsMCwwLDAsMTYyLDE3NSwwLDAsMCwwLDAsMCwxLDAsMSw4LDAsMCwwLDAsMCwwLDAsMCwxOTUsMCwwLDAsMCwwLDAsMCwxNjgsMTc1LDAsMCwwLDAsMCwwLDEsMCwxLDgsMCwwLDAsMCwwLDAsMCwwLDE5NiwwLDAsMCwwLDAsMCwwLDE3NCwxNzUsMCwwLDAsMCwwLDAsMiwwLDEsMTAsMCwwLDAsMCwwLDAsMCwwLDE4MiwwLDAsMCwwLDAsMCwwLDE3OCwxNzUsMCwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsMCwwLDAsMCwwLDAsMTk3LDAsMCwwLDAsMCwwLDAsMTg1LDE3NSwwLDAsMCwwLDAsMCwxLDAsMSwwLDAsMCwwLDAsMCwwLDAsMCwxOTgsMCwwLDAsMCwwLDAsMCwxOTIsMTc1LDAsMCwwLDAsMCwwLDIsMCwzMyw4LDAsMCwwLDAsMCwwLDAsMCxcbjE5OSwwLDAsMCwwLDAsMCwwLDIwMywxNzUsMCwwLDAsMCwwLDAsMCwwLDEsMzIsMCwwLDAsMCwwLDAsMCwwLDE4MiwwLDAsMCwwLDAsMCwwLDIxMCwxNzUsMCwwLDAsMCwwLDAsMCwwLDEsMzIsMCwwLDAsMCwwLDAsMCwwLDIwMCwwLDAsMCwwLDAsMCwwLDIyNSwxNzUsMCwwLDAsMCwwLDAsMiwwLDEsOCwwLDAsMCwwLDAsMCwwLDAsMjAxLDAsMCwwLDAsMCwwLDAsMjQyLDE3NSwwLDAsMCwwLDAsMCwxLDAsMSw4LDAsMCwwLDAsMCwwLDAsMCwyMDIsMCwwLDAsMCwwLDAsMCwyNTMsMTc1LDAsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDAsMCwwLDAsMCwwLDIwMywwLDAsMCwwLDAsMCwwLDMsMTc2LDAsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDAsMCwwLDAsMCwwLDIwNCwwLDAsMCwwLDAsMCwwLDIxLDE3NiwwLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwwLDAsMCwwLDAsMCwyMDUsMCwwLDAsMCwwLDAsMCwyOSwxNzYsMCwwLDAsMCwwLDAsMywwLDEsOCwwLDAsMCwwLDAsMCwwLDAsMjA2LDAsMCxcbjAsMCwwLDAsMCw0MywxNzYsMCwwLDAsMCwwLDAsMSwwLDEsOCwwLDAsMCwwLDAsMCwwLDAsMjA3LDAsMCwwLDAsMCwwLDAsNTEsMTc2LDAsMCwwLDAsMCwwLDIsMCwxLDgsMCwwLDAsMCwwLDAsMCwwLDIwOCwwLDAsMCwwLDAsMCwwLDYwLDE3NiwwLDAsMCwwLDAsMCwzLDAsMSw4LDAsMCwwLDAsMCwwLDAsMCwyMDgsMCwwLDAsMCwwLDAsMCw2MCwxNzYsMCwwLDAsMCwwLDAsMSwwLDEsMCwwLDAsMCwwLDAsMCwwLDAsMjA5LDAsMCwwLDE0MywwLDAsMCw2NywxNzYsMCwwLDAsMCwwLDAsMSwwLDEsMCwwLDAsMCwwLDAsMCwwLDAsMjA5LDAsMCwwLDE0NCwwLDAsMCw3MSwxNzYsMCwwLDAsMCwwLDAsMSwwLDEsMCwwLDAsMCwwLDAsMCwwLDAsMjA5LDAsMCwwLDE0NSwwLDAsMCw3NywxNzYsMCwwLDAsMCwwLDAsMCwwLDEsMSwwLDAsMCwwLDAsMCwwLDAsMjEwLDAsMCwwLDE0NiwwLDAsMCw4MSwxNzYsMCwwLDAsMCwwLDAsMSwwLDEsMCwwLDAsMCwwLDAsMCwwLDAsMjEwLDAsMCwwLDE0NixcbjAsMCwwLDgxLDE3NiwwLDAsMCwwLDAsMCwxLDAsMSwwLDAsMCwwLDAsMCwwLDAsMCwyMTEsMCwwLDAsMTQ3LDAsMCwwLDg3LDE3NiwwLDAsMCwwLDAsMCwyLDAsMSwwLDAsMCwwLDAsMCwwLDAsMCwyMTEsMCwwLDAsMTQ3LDAsMCwwLDg3LDE3NiwwLDAsMCwwLDAsMCwyLDAsMTMsOCwyMTgsNzEsMCwwLDAsMCwwLDAsMjEyLDAsMCwwLDAsMCwwLDAsOTcsMTI4LDAsMCwwLDAsMCwwLDIsMCw1LDgsMjIyLDcxLDAsMCwwLDAsMCwwLDIxMiwwLDAsMCwwLDAsMCwwLDkyLDEyOCwwLDAsMCwwLDAsMCwzLDAsNSw4LDIyMiw3MSwwLDAsMCwwLDAsMCwyMTIsMCwwLDAsMCwwLDAsMCw5MiwxMjgsMCwwLDAsMCwwLDAsMSwwLDEsOCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDEwMCwxNzYsMCwwLDAsMCwwLDAsMCwwLDEsOCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDEwMCwxNzYsMCwwLDAsMCwwLDAsMjU1LDAsMSwxMCwwLDAsMCwwLDAsMCwwLDAsMTgyLDAsMCwwLFxuMCwwLDAsMCwxMDAsMTc2LDAsMCwwLDAsMCwwLDEwMSwxMzgsMCwwLDI1NSwwLDEsMzIsMCwwLDAsMCwwLDAsMCwwLDIxMywwLDAsMCwwLDAsMCwwLDE2NSwxNzYsMCwwLDAsMCwwLDAsMjU1LDAsMSwzMiwwLDAsMCwwLDAsMCwwLDAsMjE0LDAsMCwwLDAsMCwwLDAsMTc1LDE3NiwwLDAsMCwwLDAsMCwyNTUsMCwxLDMyLDAsMCwwLDAsMCwwLDAsMCwyMTUsMCwwLDAsMCwwLDAsMCwxODAsMTc2LDAsMCwwLDAsMCwwLDI1NSwwLDEsMzIsMCwwLDAsMCwwLDAsMCwwLDIxNiwwLDAsMCwwLDAsMCwwLDE4NSwxNzYsMCwwLDAsMCwwLDAsMjU1LDAsMSwzMiwwLDAsMCwwLDAsMCwwLDAsMjE3LDAsMCwwLDAsMCwwLDAsMTk0LDE3NiwwLDAsMCwwLDAsMCwwLDAsMSwzMiwwLDAsMCwwLDAsMCwwLDAsMjE4LDAsMCwwLDAsMCwwLDAsMjAzLDE3NiwwLDAsMCwwLDAsMCwwLDAsMSwzMiwwLDAsMCwwLDAsMCwwLDAsMjE5LDAsMCwwLDAsMCwwLDAsMjE2LDE3NiwwLDAsMCwwLDAsMCwwLDAsMSwzMiwwLFxuMCwwLDAsMCwwLDAsMCwyMjAsMCwwLDAsMCwwLDAsMCwyMzQsMTc2LDAsMCwwLDAsMCwwLDIsMCwxLDgsMCwwLDAsMCwwLDAsMCwwLDIyMSwwLDAsMCwwLDAsMCwwLDIwOSwxNzcsMCwwLDAsMCwwLDAsMiwwLDEsOCwwLDAsMCwwLDAsMCwwLDAsMjIyLDAsMCwwLDAsMCwwLDAsMjI5LDE3NywwLDAsMCwwLDAsMCwzLDAsMSw4LDAsMCwwLDAsMCwwLDAsMCwyMjMsMCwwLDAsMCwwLDAsMCwyNTEsMTc3LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwyMTIsMzQsMCwwLDAsMCwwLDAsNSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMTY4LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwxNTEsMCwwLDAsMTUyLDAsMCwwLDM5LDE4NiwwLDAsMCw0LDAsMCwwLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLFxuMCwxMCwyNTUsMjU1LDI1NSwyNTUsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsXG4wLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsXG4wLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwyLDAsMiwwLDgsMCw5LDAsMTQsMCwxNiwwLDIwLDAsMjMsMCwyNSwwLDI1LDAsMjksMCwzMywwLDM2LDAsNDEsMCw0NiwwLDQ4LDAsNTMsMCw1NCwwLDU5LDAsNjIsMCw2NSwwLDY3LDAsNjksMCw3OCwwLDgxLDAsODYsMCw5MSwwLDk1LDAsOTYsMCwxMDEsMCwxMDUsMCwxMDksMCwxMTcsMCwxMjIsMCwxMjgsMCwxMzYsMCwxNDIsMCwxNTIsMCwxNTksMCwxNjIsMCwxNjIsMCwxNjUsMCwxNjcsMCwxNjcsMCwxNzEsMCwxNzYsMCwxNzksMCwxODQsMCwxODQsMCwxODgsMCwxOTIsMCwxOTksMCwyMDQsMCwyMDksMCwyMTIsMCwyMTgsMCwyMjEsMCwyMjUsMCwyMzQsMCwyNDAsMCwyNDAsMCwyNDAsMCwyNDMsMCwyNDYsMCwyNTAsMCwyNTEsMCwyNTUsMCw1LDEsOSwxLDE2LDEsMjIsMSwzNCwxLDQwLDEsNDksMSw1MSwxLDU3LDEsNjIsMSw2NCwxLDcxLFxuMSw3NiwxLDgxLDEsODcsMSw5MywxLDk4LDEsMTAyLDEsMTA1LDEsMTExLDEsMTE1LDEsMTIyLDEsMTI0LDEsMTMxLDEsMTMzLDEsMTM1LDEsMTQ0LDEsMTQ4LDEsMTU0LDEsMTYwLDEsMTY4LDEsMTczLDEsMTczLDEsMTg5LDEsMTk2LDEsMjAzLDEsMjA0LDEsMjExLDEsMjE1LDEsMjE5LDEsMjIzLDEsMjI3LDEsMjMwLDEsMjMyLDEsMjM0LDEsMjQwLDEsMjQ0LDEsMjUyLDEsMSwyLDksMiwxMiwyLDE3LDIsMjIsMiwyOCwyLDMyLDIsMzcsMiwzMywwLDMyLDAsMzAsMCwyOCwwLDI2LDAsMCwwLDIsMCwzLDAsNSwwLDYsMCw3LDAsOCwwLDksMCw2NSwwLDE0LDI2LDE4MSwwLDY0LDEsMTkyLDAsMTQsMjMsMjE2LDAsMTQsNywwLDEsMSw0OCw1MCwxLDEsNiw1NywxLDEsMTYsNzQsMSwxLDQ2LDEyMCwxLDExNiwxLDEyMSwxLDEsNiwxMjcsMSwxMDQsMSwxMjksMSw1MCwxLDEzMCwxLDEsNCwxMzQsMSw0NCwxLDEzNSwxLDAsMSwxMzcsMSw0MiwyLDEzOSwxLDAsMSwxNDIsMSwzMiwxLDE0MyxcbjEsMzgsMSwxNDQsMSw0MCwxLDE0NSwxLDAsMSwxNDcsMSw0MiwxLDE0OCwxLDQ2LDEsMTUwLDEsNTIsMSwxNTEsMSw0OCwxLDE1MiwxLDAsMSwxNTYsMSw1MiwxLDE1NywxLDU0LDEsMTU5LDEsNTYsMSwxNjAsMSwxLDYsMTY2LDEsNjAsMSwxNjcsMSwwLDEsMTY5LDEsNjAsMSwxNzIsMSwwLDEsMTc0LDEsNjAsMSwxNzUsMSwwLDEsMTc3LDEsNTgsMiwxNzksMSwxLDQsMTgzLDEsNjIsMSwxODQsMSwwLDEsMTg4LDEsMCwxLDE5NiwxLDIsMSwxOTcsMSwwLDEsMTk5LDEsMiwxLDIwMCwxLDAsMSwyMDIsMSwyLDEsMjAzLDEsMSwxOCwyMjIsMSwxLDE4LDI0MSwxLDIsMSwyNDIsMSwxLDQsMjQ2LDEsMTIyLDEsMjQ3LDEsMTM0LDEsMjQ4LDEsMSw0MCwzMiwyLDExMCwxLDM0LDIsMSwxOCw1OCwyLDcwLDEsNTksMiwwLDEsNjEsMiwxMDgsMSw2MiwyLDY4LDEsNjUsMiwwLDEsNjcsMiwxMDYsMSw2OCwyLDI4LDEsNjksMiwzMCwxLDcwLDIsMSwxMCw2OSwzLDM2LDEsMTEyLDMsMSw0LDExOCxcbjMsMCwxLDEzNCwzLDE4LDEsMTM2LDMsMTYsMywxNDAsMywyNiwxLDE0MiwzLDI0LDIsMTQ1LDMsMTQsMTcsMTYzLDMsMTQsOSwxOTQsMywwLDEsMjA3LDMsNCwxLDIwOCwzLDE0MCwxLDIwOSwzLDE0MiwxLDIxMywzLDE0NiwxLDIxNCwzLDE0NCwxLDIxNiwzLDEsMjQsMjQwLDMsMTM2LDEsMjQxLDMsMTM4LDEsMjQ0LDMsMTMwLDEsMjQ1LDMsMTI4LDEsMjQ3LDMsMCwxLDI0OSwzLDE1MiwxLDI1MCwzLDAsMSwyNTMsMywxMTAsMywwLDQsMzQsMTYsMTYsNCwxNCwzMiw5Niw0LDEsMzQsMTM4LDQsMSw1NCwxOTIsNCw2LDEsMTkzLDQsMSwxNCwyMDgsNCwxLDg4LDQ5LDUsMjIsMzgsMTYwLDE2LDY2LDM4LDE5OSwxNiw2NiwxLDIwNSwxNiw2NiwxLDAsMzAsMSwxNTAsMTU1LDMwLDEzMiwxLDE1OCwzMCw5NiwxLDE2MCwzMCwxLDk2LDgsMzEsMTUwLDgsMjQsMzEsMTUwLDYsNDAsMzEsMTUwLDgsNTYsMzEsMTUwLDgsNzIsMzEsMTUwLDYsODksMzEsMTUxLDgsMTA0LDMxLDE1MCw4LDEzNixcbjMxLDE1MCw4LDE1MiwzMSwxNTAsOCwxNjgsMzFdLFwiaThcIiw0LGwuYWEpO1xueihbMTUwLDgsMTg0LDMxLDE1MCwyLDE4NiwzMSwxMjYsMiwxODgsMzEsMTQ4LDEsMTkwLDMxLDEwMCwxLDIwMCwzMSwxMjQsNCwyMDQsMzEsMTQ4LDEsMjE2LDMxLDE1MCwyLDIxOCwzMSwxMjAsMiwyMzIsMzEsMTUwLDIsMjM0LDMxLDExOCwyLDIzNiwzMSwxNTIsMSwyNDgsMzEsMTEyLDIsMjUwLDMxLDExNCwyLDI1MiwzMSwxNDgsMSwzOCwzMyw5OCwxLDQyLDMzLDkyLDEsNDMsMzMsOTQsMSw1MCwzMywxMiwxLDk2LDMzLDgsMTYsMTMxLDMzLDAsMSwxODIsMzYsMTAsMjYsMCw0NCwyMiw0Nyw5Niw0NCwwLDEsOTgsNDQsODgsMSw5OSw0NCwxMDIsMSwxMDAsNDQsOTAsMSwxMDMsNDQsMSw2LDEwOSw0NCw4NCwxLDExMCw0NCw4NiwxLDExMSw0NCw4MCwxLDExMiw0NCw4MiwxLDExNCw0NCwwLDEsMTE3LDQ0LDAsMSwxMjYsNDQsNzgsMiwxMjgsNDQsMSwxMDAsMjM1LDQ0LDEsNCwyNDIsNDQsMCwxLDY0LDE2NiwxLDQ2LDEyOCwxNjYsMSwyNCwzNCwxNjcsMSwxNCw1MCwxNjcsMSw2MixcbjEyMSwxNjcsMSw0LDEyNSwxNjcsNzYsMSwxMjYsMTY3LDEsMTAsMTM5LDE2NywwLDEsMTQxLDE2Nyw3NCwxLDE0NCwxNjcsMSw0LDE2MCwxNjcsMSwxMCwxNzAsMTY3LDcyLDEsMzMsMjU1LDE0LDI2LDEsMCwyLDAsOCwwLDE1LDAsMTYsMCwyNiwwLDI4LDAsMzIsMCwzNywwLDM4LDAsNDAsMCw0OCwwLDYzLDAsNjQsMCw2OSwwLDcxLDAsNzksMCw4MCwwLDExNiwwLDIwMiwwLDIwMywwLDIwNSwwLDIwNiwwLDIwNywwLDIwOSwwLDIxMCwwLDIxMSwwLDIxMywwLDIxNCwwLDIxNywwLDIxOCwwLDIxOSwwLDcsMyw5NiwyOCw0MCw0Miw0Myw0MiwxODgsOTAsMjE2LDkwLDI1MiwxMTcsMTkzLDIxMywyMjUsMjEzLDIyNiwyMTMsMjI4LDIxMywzLDIxNCw5LDIxNCwyNSwyMTQsNjUsMjIzLDE4NiwyMjMsNjUsMjI2LDE2MywyMjYsMjUxLDIyNywyNiwyNDEsMjQ0LDI1NCw2MSwyNTUsOTMsMjU1LDEyNiwyNTUsMTI4LDI1NSwxMzAsMjU1LDEzNSwyNTUsMTQ0LDI1NSwxNTYsMjU1LDE1OSwyNTUsXG4xNzAsMjU1LDE4MiwyNTUsMTkyLDI1NSwxOTYsMjU1LDE5OCwyNTUsMjAwLDI1NSwyMDIsMjU1LDIwOCwyNTUsMjI2LDI1NSwyMzEsMjU1LDIzNCwyNTUsMjQxLDI1NSwyNDcsMjU1LDI0OCwyNTUsMjQ5LDI1NSwwLDAsNSw3LDU2LDcsNjcsNyw5OSw3LDEzNiw3LDE0OCw3LDIwMyw3LDIzMiw3LDI0OCw3LDEyLDgsNjIsOCwxMjAsOCwxNTgsOCwyMTYsOCwyMzgsOCw0MCw5LDc5LDksMTY4LDksMTg0LDksMjEyLDksMzYsMTAsMTA4LDEwLDE3MiwxMCwyMjIsMTAsMjYsMTEsNzgsMTEsMTM4LDExLDE2OCwxMSwxODQsMTEsMjEyLDExLDgsMTMsMTI4LDEzLDExMiwxNCwxMjgsMTQsMTQ0LDE0LDE2MCwxNCw1NiwxNSw3MiwxNSw4OCwxNSwxMjgsMTUsMTY4LDE1LDIwMCwxNSwxMCwxNiw0MiwxNiw3NCwxNiwxMDYsMTYsMTM4LDE2LDE3MCwxNiwyMDAsMTYsMjE2LDE2LDI0OCwxNiw1NiwxNyw3MiwxNywxMjAsMTcsMTUyLDE3LDQsMjQsNTQsMjQsMTIwLDI0LDEzNiwyNCwyMTYsMjQsMjksXG4yNSwxMDUsMjUsMTI5LDI1LDgsMjQwLDI4LDI0MCw5NCwyNDAsMTUyLDI0MCwyMDIsMjQwLDI0OCwyNDAsOCwyNDEsMzAsMjQxLDg4LDI0MSwxMDQsMjQxLDE0MCwyNDEsMTg0LDI0MSwyMTgsMjQxLDI1MiwyNDEsNDYsMjQyLDE3MCwyNDIsMjAyLDI0MiwyNDgsMjQyLDEwLDI0Myw5NCwyNDMsMTU2LDI0MywyMzQsMjQzLDE0LDI0NCw3MiwyNDQsOTAsMjQ0LDEyMCwyNDQsMTQwLDI0NCwxNzYsMjQ0LDE4NCwyNDQsMTkyLDI0NCwyMDAsMjQ0LDEwLDI0NSwyMDQsMjQ1LDc0LDI0NiwxMDYsMjQ2LDQyLDI0NywxNTgsMjQ3LDIyNywyNTUsNTQsMiwxMywyLDkzLDIsMjA3LDI1NSw1MSwxLDIzNSwxLDIxLDIsMTU2LDIsMTc5LDEsODksMiwxMzIsMiwxNDgsMCwyMzUsMiwxOCwzLDI3LDMsMTYzLDEsMjAsMyw1OSwzLDIyLDMsMTk4LDEsNjQsMywxMjEsMywyMzksMSw1NiwzLDIyMiwyLDc2LDAsNzYsMCw3NiwwLDc2LDAsNzYsMCw3NiwwLDc2LDAsNzYsMCw3NiwwLDc2LDAsNzYsMCw3NixcbjAsNzYsMCw3NiwwLDc2LDAsNzYsMCw3NiwwLDc2LDAsNzYsMCw3NiwwLDc2LDAsNzYsMCw3NiwwLDc2LDAsNzYsMCw3NiwwLDc2LDAsNzYsMCw3NiwwLDc2LDAsNzYsMCw3NiwwLDE1LDMsMTMwLDMsMTM3LDMsMTM5LDMsMTQzLDMsMTUzLDMsMTY1LDMsMTY4LDMsMTcyLDMsMTc1LDMsMTc5LDMsMTgyLDMsMTg0LDMsMTg3LDMsMTkwLDMsMTk0LDMsMTk3LDMsMjAxLDMsMjA2LDMsMjA5LDMsMjEyLDMsMjE2LDMsMjIwLDMsMjIzLDMsMjI1LDMsMjI4LDMsMjMxLDMsMjM0LDMsMjM4LDMsMjQyLDMsMjUwLDMsMjUzLDMsMCw0LDQsNCw4LDQsMTAsNCwxMiw0LDE2LDQsMjIsNCwyNyw0LDM0LDQsMzgsNCw0MCw0LDQ0LDQsNDYsNCw0OSw0LDc2LDAsNzYsMCw3NiwwLDc2LDAsNzYsMCw3NiwwLDc2LDAsNzYsMCw3NiwwLDg3LDMsMzYsMCwxMSwyLDIzNSwwLDE2MCwxLDksMyw3NiwwLDIyLDEsNzYsMCw3NiwwLDc2LDAsNzYsMCwxODgsMiwxODgsMiwxODgsMiwxNTAsMCwyMjAsMCwxNDcsMCxcbjIxNywwLDIyMSwwLDUwLDEsNTAsMSw5OSwyLDUsMCwyMywyLDQ0LDIsMTA4LDIsMjA4LDIsMTA0LDMsMTI5LDMsMTE2LDAsOTYsMyw5MywxLDExLDQsMTMsNCwxNDgsMSwyMyw0LDIyNCwzLDEyNywyNTUsMjYsNCwyMzYsMSw2MiwwLDIxMCwyLDExMSwzLDQ4LDQsNjUsNCw0MCwzLDQyLDQsNzAsNCw3MSw0LDcyLDQsNzMsNCw3NCw0LDgsMywzMCw0LDQ1LDIsNTcsMCwxMTIsMCwxMzEsMCwxNjcsMCwxODIsMCwyNTAsMCwxNiwxLDM1LDEsNzUsMSwxMDgsMSwxODIsMSwyNDEsMSw1LDIsNzksMiwxNDEsMiwxNzgsMiwyMjcsMiw3LDMsMzAsMywxMjQsMywxNDAsMywxNTYsMywxNjIsMywyNDcsMywzOSw0LDQ1LDQsOTksMSwxNiwzLDMxLDMsMjEzLDMsNzcsNCwxNTgsMywxMjcsNCwxMzcsNCwxMzgsNCwxNzcsMywxNDAsNCwxNDIsNCwxMDQsNCwxNDQsNCwxNDcsNCwxNDgsNCwyNTAsMCwxNDksNCwxNTAsNCwxNTEsNCwxNTQsNCwxNTYsNCwxNTcsNCw2NCw0LDc4LDQsOTUsNCwxMDAsNCxcbjEwMiw0LDE1OCwzLDEwNyw0LDExNSw0LDE2NCw0LDExNiw0LDEwNSw0LDEwNiw0LDc5LDQsMTIwLDQsODMsNCwxNTUsNCwxMzIsNCwxNDMsNCwxNTgsNCwxMTAsNCw5OCw0LDE1OSw0LDE2MCw0LDEyNiw0LDEyOSw0LDE3Myw0LDg3LDQsMTc4LDQsMTc5LDQsOTksNCwxMDEsNCwxODEsNCwxMjMsNCwxNjEsNCwxNDUsNCwxNjIsNCwxNjYsNCwxNjcsNCwxNjgsNCwxODksNCwxOTMsNCwxNjksNCwxMzMsNCwxNzIsNCwxNzQsNCwxNzAsNCwxOTYsNCwxOTQsNCwxMjEsNCwxMzAsNCwyMDUsNCwyMDcsNCwyMDksNCwxOTIsNCwyMTMsNCwyMTYsNCwyMTcsNCwyMjAsNCwxOTgsNCwyMDMsNCwyMDYsNCwyMDgsNCwxOTksNCwyMTEsNCwyMTIsNCwyMjEsNCwyMjUsNCwyMDIsNCwyMjYsNCwyMzAsNCwxNzUsNCwxNzcsNCwxODAsNCwxODMsNCwxODUsNCwxODcsNCwxOTAsNCwxODgsNCwyMzEsNCwxODQsNCwyMzUsNCwxOTEsNCwyMzIsNCwxNzYsNCwxODIsNCwyMzYsNCwyMjMsNCwyMzcsNCwyMzksXG40LDIzOCw0LDI0Miw0LDI1NCw0LDIsNSwxMiw1LDE0LDUsMTcsNSwxOCw1LDE5LDUsMjAsNSwxOTcsNCwyMDAsNCwyMDQsNCw4LDUsMTEsNSwyNTIsNCwyNTMsNCwxNSw1LDY5LDEsNjQsMyw5NSwxLDU3LDMsNSwwLDIwMywwLDIwMywwLDUxLDMsOTksMCwxMDAsMCw5MCwwLDc0LDMsNzQsMyw4NiwzLDg5LDMsNzgsMyw3OCwzLDk3LDAsOTcsMCw5OCwwLDk4LDAsOTgsMCw5OCwwLDQ1LDEsOTYsMCw5NiwwLDk2LDAsOTYsMCw5NSwwLDk1LDAsOTQsMCw5NCwwLDk0LDAsOTMsMCw5NSwxLDY5LDEsMjA5LDMsMjA5LDMsNTYsMyw1NiwzLDU4LDMsMTc5LDMsOTgsMSw5OSwwLDEwMCwwLDkwLDAsNzQsMyw3NCwzLDg2LDMsODksMyw3OCwzLDc4LDMsOTcsMCw5NywwLDk4LDAsOTgsMCw5OCwwLDk4LDAsODIsMSw5NiwwLDk2LDAsOTYsMCw5NiwwLDk1LDAsOTUsMCw5NCwwLDk0LDAsOTQsMCw5MywwLDk1LDEsOTUsMCw5NSwwLDk0LDAsOTQsMCw5NCwwLDkzLDAsOTUsMSwyMywzLDIwOSwzLDIwOSxcbjMsNjksMSw5NCwwLDk0LDAsOTQsMCw5MywwLDk1LDEsMjQsMyw3NSwwLDk5LDAsMTAwLDAsOTAsMCw3NCwzLDc0LDMsODYsMyw4OSwzLDc4LDMsNzgsMyw5NywwLDk3LDAsOTgsMCw5OCwwLDk4LDAsOTgsMCwxOTQsMSw5NiwwLDk2LDAsOTYsMCw5NiwwLDk1LDAsOTUsMCw5NCwwLDk0LDAsOTQsMCw5MywwLDk1LDEsNTMsNSwxNTUsMCwxNTUsMCwyLDAsNjksMSwxOSwxLDE0NiwwLDEzMiwwLDUyLDAsNTIsMCw5MywwLDk1LDEsOTksMCwxMDAsMCw5MCwwLDc0LDMsNzQsMyw4NiwzLDg5LDMsNzgsMyw3OCwzLDk3LDAsOTcsMCw5OCwwLDk4LDAsOTgsMCw5OCwwLDEwMSwwLDk2LDAsOTYsMCw5NiwwLDk2LDAsOTUsMCw5NSwwLDk0LDAsOTQsMCw5NCwwLDkzLDAsOTUsMSwxOTAsMywxOTAsMyw2OSwxLDEyLDEsMTcyLDEsMTU3LDEsMTU1LDEsNjEsMCwyNDAsMiwyNDAsMiw5OSwwLDEwMCwwLDkwLDAsNzQsMyw3NCwzLDg2LDMsODksMyw3OCwzLDc4LDMsOTcsMCw5NywwLDk4LDAsOTgsMCxcbjk4LDAsOTgsMCw2MCwwLDk2LDAsOTYsMCw5NiwwLDk2LDAsOTUsMCw5NSwwLDk0LDAsOTQsMCw5NCwwLDkzLDAsOTUsMSw2OSwxLDE0LDEsNzMsMSwxNywxLDIxLDEsMTkxLDMsMTkyLDMsMjUwLDAsOTksMCwxMDAsMCw5MCwwLDc0LDMsNzQsMyw4NiwzLDg5LDMsNzgsMyw3OCwzLDk3LDAsOTcsMCw5OCwwLDk4LDAsOTgsMCw5OCwwLDQ1LDEsOTYsMCw5NiwwLDk2LDAsOTYsMCw5NSwwLDk1LDAsOTQsMCw5NCwwLDk0LDAsOTMsMCw5NSwxLDY5LDEsMTcwLDMsNDYsNSwxODYsMiwxOTQsMiw0Niw1LDI0MiwwLDE1NiwxLDk5LDAsMTAwLDAsOTAsMCw3NCwzLDc0LDMsODYsMyw4OSwzLDc4LDMsNzgsMyw5NywwLDk3LDAsOTgsMCw5OCwwLDk4LDAsOTgsMCw5MSwxLDk2LDAsOTYsMCw5NiwwLDk2LDAsOTUsMCw5NSwwLDk0LDAsOTQsMCw5NCwwLDkzLDAsOTUsMSw2OSwxLDE3MCwzLDQ3LDUsMTI4LDEsMTg3LDIsNDcsNSwxMjUsMSwxMjMsMSw5OSwwLDEwMCwwLDkwLDAsNzQsMyw3NCwzLFxuODYsMyw4OSwzLDc4LDMsNzgsMyw5NywwLDk3LDAsOTgsMCw5OCwwLDk4LDAsOTgsMCwxODksMiw5NiwwLDk2LDAsOTYsMCw5NiwwLDk1LDAsOTUsMCw5NCwwLDk0LDAsOTQsMCw5MywwLDk1LDEsNjksMSw5MiwwLDg5LDAsMTc4LDAsNjUsMywxNjgsMywxMTcsMSwxODgsMiw5OSwwLDEwMCwwLDkwLDAsNzQsMyw3NCwzLDg2LDMsODksMyw3OCwzLDc4LDMsOTcsMCw5NywwLDk4LDAsOTgsMCw5OCwwLDk4LDAsMTE5LDEsOTYsMCw5NiwwLDk2LDAsOTYsMCw5NSwwLDk1LDAsOTQsMCw5NCwwLDk0LDAsOTMsMCw5NSwxLDY5LDEsMjUyLDQsMTc5LDMsOTgsMSw1MCwzLDE2OCwzLDIyNywyLDIyNywyLDk5LDAsMTAwLDAsOTAsMCw3NCwzLDc0LDMsODYsMyw4OSwzLDc4LDMsNzgsMyw5NywwLDk3LDAsOTgsMCw5OCwwLDk4LDAsOTgsMCwyMzAsMCw5NiwwLDk2LDAsOTYsMCw5NiwwLDk1LDAsOTUsMCw5NCwwLDk0LDAsOTQsMCw5MywwLDk1LDEsNjksMSwyMDEsMywyMjcsMCw5MiwwLDg5LDAsXG4xNzgsMCwxMTcsMSw0NCwxLDk5LDAsMTAwLDAsOTAsMCw3NCwzLDc0LDMsODYsMyw4OSwzLDc4LDMsNzgsMyw5NywwLDk3LDAsOTgsMCw5OCwwLDk4LDAsOTgsMCwxNTMsMyw5NiwwLDk2LDAsOTYsMCw5NiwwLDk1LDAsOTUsMCw5NCwwLDk0LDAsOTQsMCw5MywwLDk1LDEsNjksMSwxOTMsMSwxOTEsMSwxOTEsMSwxOTEsMSwxNDcsMCwyMjUsMiwyMjUsMiw5OSwwLDEwMCwwLDkwLDAsNzQsMyw3NCwzLDg2LDMsODksMyw3OCwzLDc4LDMsOTcsMCw5NywwLDk4LDAsOTgsMCw5OCwwLDk4LDAsNDAsMSw5NiwwLDk2LDAsOTYsMCw5NiwwLDk1LDAsOTUsMCw5NCwwLDk0LDAsOTQsMCw5MywwLDk1LDEsNjksMSwxNjMsMSwyMzEsMCwxOTAsMywxOTAsMywxNTgsMCwyNSwwLDE2NiwxLDk5LDAsMTAwLDAsOTAsMCw3NCwzLDc0LDMsODYsMyw4OSwzLDc4LDMsNzgsMyw5NywwLDk3LDAsOTgsMCw5OCwwLDk4LDAsOTgsMCwxOTQsMSw5NiwwLDk2LDAsOTYsMCw5NiwwLDk1LDAsOTUsMCw5NCwwLDk0LFxuMCw5NCwwLDkzLDAsOTUsMSwxODcsMSwyMjQsMCwyMjQsMCwxNjQsMSwxOTAsMywxOTAsMywxOTQsMyw2OSwxLDUyLDAsNTIsMCwxOTEsMywxOTIsMywxNzYsMCwxNTksMSw3OCwwLDk5LDAsMTAwLDAsOTAsMCw3NCwzLDc0LDMsODYsMyw4OSwzLDc4LDMsNzgsMyw5NywwLDk3LDAsOTgsMCw5OCwwLDk4LDAsOTgsMCwxMjMsMSw5NiwwLDk2LDAsOTYsMCw5NiwwLDk1LDAsOTUsMCw5NCwwLDk0LDAsOTQsMCw5MywwLDk1LDEsNjksMSwxNzIsMSwxNjIsMSw0MiwxLDE5MSwzLDE5MiwzLDE5NCwzLDgxLDAsOTksMCw4OCwwLDkwLDAsNzQsMyw3NCwzLDg2LDMsODksMyw3OCwzLDc4LDMsOTcsMCw5NywwLDk4LDAsOTgsMCw5OCwwLDk4LDAsMjA1LDIsOTYsMCw5NiwwLDk2LDAsOTYsMCw5NSwwLDk1LDAsOTQsMCw5NCwwLDk0LDAsOTMsMCw5NSwxLDY5LDEsNzUsMyw3NSwzLDg3LDMsOTAsMywyMjgsMyw2MiwxLDg3LDEsMTIzLDEsMTAwLDAsOTAsMCw3NCwzLDc0LDMsODYsMyw4OSwzLDc4LFxuMyw3OCwzLDk3LDAsOTcsMCw5OCwwLDk4LDAsOTgsMCw5OCwwLDE5NCwxLDk2LDAsOTYsMCw5NiwwLDk2LDAsOTUsMCw5NSwwLDk0LDAsOTQsMCw5NCwwLDkzLDAsOTUsMSw2OSwxLDk0LDEsOTQsMSw5NCwxLDQsMSwxMjEsMSw4NCwxLDE2MSwzLDUyLDAsNTIsMCw5MCwwLDc0LDMsNzQsMyw4NiwzLDg5LDMsNzgsMyw3OCwzLDk3LDAsOTcsMCw5OCwwLDk4LDAsOTgsMCw5OCwwLDEwNSwxLDk2LDAsOTYsMCw5NiwwLDk2LDAsOTUsMCw5NSwwLDk0LDAsOTQsMCw5NCwwLDkzLDAsOTUsMSw4NiwwLDE4OSwxLDc5LDMsMywwLDE3OSw0LDEwNSwxLDEwNCwxLDEyMiwxLDg4LDEsNDUsMywxOTAsMywxOTAsMywyMCw1LDg2LDAsMTg5LDEsMjE3LDIsMywwLDIxMiwwLDE2OSwwLDMxLDEsMTQ5LDEsMjYsMSwxNDgsMSwxOTksMCwyMzIsMCwxOTQsMSw0NCwxLDI0OCwyLDgzLDAsODQsMCwyNCwxLDI0NSwwLDYsMSwxMDksMSwyNTEsMCw4NSwwLDk2LDEsOTYsMSw5MiwwLDg5LDAsMTc4LDAsODMsXG4wLDg0LDAsMjQyLDAsMTU2LDEsNTIsMCw1MiwwLDE5MiwxLDg1LDAsOTYsMSw5NiwxLDI0NiwwLDE5MSwzLDE5MiwzLDE5NCwwLDE5OSwxLDE1OCwyLDE0NiwxLDE0MywxLDE0MiwxLDE5MiwxLDI0MywwLDIyMSwwLDExNCwwLDE3OCwxLDgsMywxMDUsMSwxOTQsMSwxNDEsMSwxMiwxLDIzNSwyLDIyNCwwLDIyNCwwLDEzMiwwLDEzMiwwLDE5OCwwLDY0LDMsMTc4LDEsMTk2LDEsMTk1LDEsMTcyLDEsMTcxLDEsNTEsMywxNTksMSwyMjIsMiwyMDEsMiwxMzIsMCw1MiwwLDUyLDAsNjQsMywxMiwxLDE5NiwxLDE5NSwxLDIyMiwyLDE5NCwwLDUxLDMsMTA3LDEsMTQ2LDEsMTQzLDEsMTQyLDEsMTk0LDEsMjQ3LDQsMjQ3LDQsMjMsMCwxOTAsMywxOTAsMyw4NiwwLDE4OSwxLDE0MSwxLDMsMCwyMjgsMCwxNzMsMSwxMjcsMyw1NiwzLDU2LDMsNTgsMyw1OSwzLDE5LDAsMjAzLDAsMjA4LDIsNTIsMCw1MiwwLDE3MiwxLDE1MiwxLDE4MywxLDI0OSwwLDU2LDMsNTYsMyw1OCwzLDU5LDMsMTksXG4wLDIyOSwwLDE0NywxLDE1MywwLDgzLDAsODQsMCwyNDksMiwxNzcsMCwyNDEsMCwxOTQsMSwyMDksMiw4NSwwLDk2LDEsOTYsMSwxMjAsMCwxNTcsMCwxOTEsMywxOTIsMyw1OCwwLDIwOSwzLDE1MywxLDk5LDEsNzQsMSwxOTIsMSwxMiwxLDE3MiwxLDE3NCwxLDY0LDEsMjIsMywzMiwwLDMyLDAsODYsMCwxODksMSw4LDMsMywwLDg1LDEsOTgsMCw5OCwwLDk4LDAsOTgsMCwxNzgsMSw5NiwwLDk2LDAsOTYsMCw5NiwwLDk1LDAsOTUsMCw5NCwwLDk0LDAsOTQsMCw5MywwLDk1LDEsNjQsMywxMjAsMCwxOTYsMSwxOTUsMSw0NSwzLDExOSwzLDUxLDMsODMsMCw4NCwwLDIwOSwzLDQ1LDMsMTMyLDAsMTU0LDEsMTUyLDMsODUsMCw5NiwxLDk2LDEsMTMyLDAsMTUxLDEsMjEsMywxOTAsMywxOTAsMyw5MiwwLDg5LDAsMTc4LDAsMTQ5LDMsMTkyLDEsNiwxLDExNCwxLDUsMSw4MiwwLDE0NiwzLDgwLDAsNiwxLDExNCwxLDUsMSw4LDMsNTYsMyw1NiwzLDU4LDMsNTksMywxOSwwLDE2NixcbjMsMTc4LDEsOTYsMCw5NiwwLDk2LDAsOTYsMCw5NSwwLDk1LDAsOTQsMCw5NCwwLDk0LDAsOTMsMCw5NSwxLDY0LDMsNzQsMCwxOTYsMSwxOTUsMSwxOTAsMywxOTAsMyw1MSwzLDE5MSwzLDE5MiwzLDEyMCwwLDkyLDAsODksMCwxNzgsMCwxNzcsMywyLDAsMTUwLDMsMTk3LDMsMTIsMSwxLDAsMjA4LDMsNzYsMCwxODksMSwyNTAsMiwzLDAsMTk2LDIsMTMzLDMsMTMzLDMsMTMxLDEsMTkwLDMsMTkwLDMsMjQ1LDIsMTUxLDMsMTE1LDEsMjI4LDIsMTAsMywyNDQsMiwxLDEsNTYsMyw1NiwzLDU4LDMsNTksMywxOSwwLDE2MSwxLDIyOSwyLDE5NCwxLDI0LDAsMTkxLDMsMTkyLDMsODMsMCw4NCwwLDExMywxLDE5MCwzLDE5MCwzLDE3NywwLDIyNiwwLDg1LDAsOTYsMSw5NiwxLDExNywzLDU5LDEsNTgsMSw1NywxLDIxNSwwLDU1LDEsMTAsMCwxMCwwLDE3MSwyLDE5MiwxLDkzLDEsOTIsMSwxOTEsMywxOTIsMywxNDEsMyw5LDMsMTU3LDAsMTIwLDAsMTkwLDMsMTkwLDMsODEsMSw4LFxuMywxNjAsMSwxOTksMiw1NCwxLDE5NCwxLDE3OCwxLDE5NCwxLDY1LDEsMTk0LDEsMjMsMywxMDMsMCwyMDAsMCwxNzUsMCwxOTQsMSwxOTEsMywxOTIsMywxNDAsMyw2NCwzLDI0LDMsMTk2LDEsMTk1LDEsOSwwLDksMCw1MSwzLDEwLDAsMTAsMCw1MiwwLDUyLDAsNTEsMCw1MSwwLDE4MCwwLDIwNCwyLDI0OCwwLDEwLDAsMTAsMCwxNzEsMCwxNzAsMCwxNjcsMCw4MywxLDE5MSwzLDE5MiwzLDI0NywwLDIxNiwzLDE5MCwyLDE5MCwyLDE5NCwxLDIwMywyLDIzMywwLDE3NCwyLDIxNCwzLDEyMSwzLDIxNSwzLDE4MiwwLDE0NiwzLDU2LDMsNTYsMyw1OCwzLDU5LDMsMTksMCwxODMsMCwwLDEsMTY3LDEsMTMyLDAsMTgxLDAsMTM4LDEsMTAsMCwxMCwwLDEyMSwzLDEyMywzLDIzNywyLDE5MCwzLDE5MCwzLDE0OSwzLDEyLDEsMjE3LDMsMTk4LDAsMjE3LDMsOTMsMSw5MiwxLDE2OSwxLDE1OSwxLDQzLDEsNDksMyw2NCwzLDcwLDEsNTcsMywxMjAsMCw3NiwxLDEzMywwLDUxLDMsMTIsXG4xLDk4LDAsOTgsMCw5OCwwLDk4LDAsOTEsMCw5NiwwLDk2LDAsOTYsMCw5NiwwLDk1LDAsOTUsMCw5NCwwLDk0LDAsOTQsMCw5MywwLDk1LDEsMTU3LDAsNDIsMywxMTUsMSwxMjYsMSwxMDMsMSwxOTEsMywxOTIsMywxMDIsMSwxMiwxLDE5NCwxLDE1MCwzLDExMiwxLDY4LDEsNTYsMyw1NiwzLDU4LDMsMTk0LDEsMTk3LDIsMTk0LDEsOCwxLDEyNCwxLDEyMSwzLDE5NCwxLDEwOSwzLDIzNCwyLDI1MywwLDE1MSwzLDI1NSwwLDE3NywxLDM2LDAsMzYsMCwyMzQsMCwxOTQsMSwyMzQsMCwxMjAsMCwxMywxLDM3LDAsMzcsMCwxMiwwLDEyLDAsNzgsMSwxNiwxLDI3LDAsMjcsMCwxOTQsMSw3NCwxLDExOCwwLDE5NCwxLDE2MiwwLDIzMCwyLDI0LDEsMTk0LDEsMzgsMCwzOCwwLDE5NCwxLDIxNywzLDEwMCwxLDIxNywzLDE5NCwxLDE5NywyLDE4Niw0LDE5NCwxLDEzMiwwLDE5NCwxLDM5LDAsMzksMCwxOTQsMSw0MCwwLDQwLDAsMTk0LDEsMTA2LDEsNDEsMCw0MSwwLDE5NCwxLDQyLDAsXG40MiwwLDE5NCwxLDI1NCwwLDI4LDAsMjgsMCwxOTQsMSwyOSwwLDI5LDAsMzEsMCwzMSwwLDE5NCwxLDQzLDAsNDMsMCwxOTQsMSw0NCwwLDQ0LDAsMTk0LDEsMjAyLDIsNDUsMCw0NSwwLDE5NCwxLDExLDAsMTEsMCwyNTUsMiwxOTQsMSw0NiwwLDQ2LDAsMTk0LDEsMTIsMSwxOTQsMSwxMDUsMCwxMDUsMCwxOTQsMSw0NywwLDQ3LDAsMTk0LDEsNDgsMCw0OCwwLDE5NCwxLDIzNywwLDMzLDAsMzMsMCwxOTQsMSwxNzIsMCw0OSwwLDQ5LDAsMTk0LDEsNTAsMCw1MCwwLDM0LDAsMzQsMCwxOCwxLDEyMiwwLDEyMiwwLDE5NCwxLDEyMywwLDEyMywwLDE5NCwxLDEyNCwwLDEyNCwwLDE5NCwxLDEzMCwzLDU2LDAsNTYsMCwxOTQsMSwxMjksMywzNSwwLDM1LDAsMTk0LDEsMTEsMSwxOTQsMSw0OSwzLDE5NCwxLDQ5LDMsMTA2LDAsMTA2LDAsMTk0LDEsNTMsMCw1MywwLDEyOSwxLDEwNywwLDEwNywwLDE5NCwxLDQ5LDMsMTA4LDAsMTA4LDAsNDksMywxOTQsMSwxMDQsMCwxMDQsMCwxMjEsXG4wLDEyMSwwLDExOSwwLDExOSwwLDE5NCwxLDExNywwLDExMiwwLDExMiwwLDE5NCwxLDIwLDEsMTk0LDEsMjI1LDAsMTExLDAsMTExLDAsMTk0LDEsMjE4LDIsMTk0LDEsMTA5LDAsMTA5LDAsMTk0LDEsMTYxLDIsMTYyLDIsMTYzLDIsMTQ0LDMsMTEwLDAsMTEwLDAsNjEsMSwyMzAsMyw1NSwwLDU1LDAsNTcsMCw1NywwLDE4MCwyLDc1LDEsNTQsMCw1NCwwLDI2LDAsMjYsMCwxODQsMiwzMCwwLDMwLDAsNjEsMSwxNjksMywxOTcsMCwxOTYsMCwxOTUsMCw3OSwxLDI1LDEsODAsMSwxOTAsMSw3NSwxLDIzMywyLDE3NywyLDE4MCwxLDE4NCwxLDE4OCwxLDEyMCwwLDcyLDAsMTMwLDEsMjIzLDAsMTc1LDAsODksMSwyNDUsMiwxNjUsMywyMCwwLDMwLDEsNjMsMSwyNDQsMiw0NywzLDExNiwxLDExOCwxLDIwMiwwLDIwMiwwLDIwMiwwLDcsMSwxMzksMSwyOSwxLDc0LDAsMjA4LDAsMjEsMCwxODQsMiwyMDcsMiwyMDYsMiwxMTYsMywxMjAsMCwxMjAsMCwxMjAsMCwxMjAsMCwxMjAsMCxcbjI0MiwyLDIyLDEsNjAsMyw3NywwLDc0LDAsMjE0LDIsMjE1LDIsMTcsMywxNSwzLDExMiwzLDIwMiwwLDIzMSwzLDIwOCwwLDEyNiwzLDEyNSwzLDEyNiwzLDEyNSwzLDE4MiwyLDQ4LDMsMjUxLDIsMTE2LDAsNiwzLDEwLDUsMTc1LDEsMTc2LDEsNDYsMSwyMzEsMywxMzQsMSw0NywxLDU1LDMsMTg1LDIsMTc5LDIsMTY4LDIsMTU5LDAsMzMsMSwxNjcsMiwxMTYsMywxNjksMiwxODQsMywzNSwxLDIxOCwwLDM3LDEsNywwLDYwLDEsNjAsMywxNzMsMCwzNywzLDMsMSwxMDgsMSwyNTIsMCwxNDMsMywxMjAsMSwyMDEsMiwzOSwxLDE3OSwxLDUyLDEsMTY4LDAsMTg3LDMsMjI1LDMsMTM1LDAsMTQ0LDEsMjIyLDMsMjgsMSwxMTQsMywxMTMsMywyMDUsMCwxNjAsMywxNTgsMyw1OSwwLDc3LDEsNjIsMCwxNDQsMCwxNTYsMCwxMzAsMCw3MiwwLDM0LDMsMTEwLDEsMTExLDEsMTM3LDEsMTM3LDAsMTg1LDAsMTg5LDAsMTYwLDAsMTM5LDAsMTI3LDEsNjcsMCwxMjgsMywxNDAsMCwxNDEsMCxcbjE0MiwwLDE0OCwwLDEzMywxLDQ0LDMsNywzLDEwLDEsMjE5LDAsMTkwLDAsMTU0LDAsMTM1LDEsMTQ1LDMsMTA4LDMsMTUsMSwxNTAsMSwxOTEsMCw2NiwxLDE3MCwyLDIyMSwyLDE5MiwwLDg2LDEsMjIwLDIsMjEyLDIsMjE5LDIsMTk5LDIsMjExLDIsMTY1LDEsMTkzLDIsNzEsMCw2NywxLDYsMCwyMDQsMCwzLDMsMzIsMSw3OSwwLDQxLDEsOTAsMSw0LDMsMTkyLDIsMzQsMSwyNywxLDE5MSwyLDIsMywzNiwxLDM4LDEsMTk5LDMsMjM5LDAsMSwzLDEwMiwwLDk0LDMsMTgyLDEsMTcwLDEsMjQwLDAsMTY4LDEsMTg2LDEsNzMsMCwyMTMsMCwxNzYsMiwyMzgsMCwyMiwwLDE5NywxLDE4NSwzLDIxNCwwLDIxNywwLDIxNiwwLDE5OCwxLDE2NSwyLDE2NCwyLDE1OSwyLDI0MSwyLDEyNSwwLDExNSwwLDIzNSwwLDEyNiwwLDE1NywyLDk3LDEsMTY2LDAsMTI3LDAsMjQ0LDAsMTc5LDAsMTAxLDEsNTAsMSw0OCwxLDQ5LDEsNTEsMSwxMTMsMCwxMjQsMyw3MSwxLDEyMiwzLDQzLDMsNzIsMSxcbjEzNCwwLDEyOCwwLDEzNiwwLDEzOCwwLDIzMSwyLDIsMSwxMzksMywxODQsMCwxNDMsMCwxMjksMCwxNDIsMywxODYsMCw2MywwLDY0LDAsMTQ1LDAsMTg3LDAsMTM4LDMsNjUsMCw4LDAsNjYsMCwxMywwLDE4OCwwLDIwMiwwLDEzMSwzLDksMSwxNDksMCwyMTksMywxMzIsMSwxNTAsMCwxNzMsMiwxNjEsMCwxMzYsMSwyOSwxLDE5MywwLDIzLDEsMTQwLDEsMTUxLDAsMTQ1LDEsNjgsMCwxNCwwLDE1LDAsMjEwLDIsNjksMCwyMzYsMCw2MywzLDEzMSwwLDYyLDMsOTIsMyw3MCwwLDIzOSwyLDE2LDAsMTU4LDEsMjQzLDIsNCwwLDE3NCwwLDIyMCwwLDIyMiwwLDE2LDMsMjAxLDAsMTUyLDAsMTEsMyw3NywwLDc0LDAsMTcsMCwxOCwwLDEwNywzLDkzLDMsOTEsMywxNDgsMyw5NiwzLDE0NywzLDIwNywwLDIwNiwwLDE3NCwzLDE2MywwLDE4MSwxLDE4MCwzLDE3NSwzLDE2NCwwLDIwOSwwLDIzNCwzLDE4NSwxLDk1LDMsMTY1LDAsMjEwLDAsNjEsMywxODMsMiw4NywwLDU2LDEsMjExLFxuMCwxMiw1LDExLDUsNTMsMSwxNiwxNiwyLDE2LDQwLDAsODcsMiwxMzYsMywxMDAsMiwyNDgsMiwyNDgsMiwyNDgsMiwyNDgsMiwyMTMsMiwyMzcsMjU1LDE2LDAsMTYsMCwxMDAsMCwyNDgsMiwyNDgsMiwyNDgsMiwyNDgsMiwyNDgsMiwyNDgsMiwyNDgsMiwxMDgsMywxMDgsMyw2MSwyLDMwLDIsMjA3LDIsODgsMiw2MSwwLDEzNywwLDE3MiwwLDIwNywwLDI0MiwwLDIxLDEsNTYsMSw5MSwxLDEyNiwxLDE2MSwxLDIwMywxLDIwMywxLDIwMywxLDIwMywxLDIwMywxLDIwMywxLDIwMywxLDIwMywxLDIwMywxLDIwMywxLDIwMywxLDIwMywxLDIwMywxLDIwMywxLDIwMywxLDIwMywxLDIwMywxLDIzOCwxLDIwMywxLDE3LDIsNTIsMiw1MiwyLDE5MywyLDI0OCwyLDI0OCwyLDI0OCwyLDI0OCwyLDI0OCwyLDI0OCwyLDI0OCwyLDI0OCwyLDI0OCwyLDI0OCwyLDI0OCwyLDI0OCwyLDI0OCwyLDI0OCwyLDI0OCwyLDI0OCwyLDI0OCwyLDI0OCwyLDI0OCwyLDI0OCwyLDI0OCwyLDI0OCwyLFxuMjQ4LDIsMjQ4LDIsMjQ4LDIsMjQ4LDIsMjQ4LDIsMjQ4LDIsMjQ4LDIsMjQ4LDIsMjQ4LDIsODgsMywyNDgsMiwyNDgsMiwyNDgsMiwyNDgsMiwyNDgsMiwyNDgsMiwyNDgsMiwyNDgsMiwyNDgsMiwyNDgsMiwyNDgsMiwyNDgsMiwyNDgsMiwyMTksMywyMzQsMiwyMzQsMiwyMzQsMiwyMzQsMiwyMzQsMiwzMywzLDIzLDAsMzIsMCwxODEsMywxOTMsMywyMTEsMywxOTYsMywxOTYsMywxODEsMyw3MywwLDExMywwLDIwNSwyNTUsMzEsNiwzMSw2LDMxLDYsMjQsMiwyNCwyLDI0LDIsOTksMCw5OSwwLDQ1LDMsNDUsMywxNTUsMiwyMDUsMCwyNDAsMCwxODEsMywxODEsMywxODEsMywxODEsMywxODEsMywxODEsMywxODEsMywxODEsMywxODEsMywxODEsMywxODEsMywxODEsMywxODEsMywxODEsMywxODEsMywxODEsMywxODEsMywxODEsMywxODEsMywxODEsMyw3NiwxLDI0MywzLDE2NiwxLDE2NiwxLDExMywwLDMwLDAsMzAsMCwzMCwwLDMwLDAsMzAsMCwzMCwwLDMxLDYsMzEsNiwzMSxcbjYsMTU0LDMsMTYyLDI1NSwxNjIsMjU1LDEyOCwxLDEwMSwyLDYwLDMsMTY0LDEsMjUzLDIsMzYsMyw4MywzLDE4MSwzLDE4MSwzLDE4MSwzLDE4MSwzLDE4MSwzLDE4MSwzLDE4MSwzLDE4MSwzLDE4MSwzLDE4MSwzLDE4MSwzLDE4MSwzLDE4MSwzLDE4MSwzLDE4MSwzLDE4MSwzLDE2MCwyLDE2MCwyLDE2MCwyLDE4MSwzLDE4MSwzLDE0NSwyLDE4MSwzLDE4MSwzLDE4MSwzLDIzOCwyNTUsMTgxLDMsMTgxLDMsMjI2LDMsMTgxLDMsMTgxLDMsMTgxLDMsMTgxLDMsMTgxLDMsMTgxLDMsMTgxLDMsMTgxLDMsMTgxLDMsMTgxLDMsNCwzLDk0LDQsMjAwLDIsMjAwLDIsMjAwLDIsNDIsMyw0NSwwLDEsMywxOTUsNCwxMDksNCwxNjIsMSwxNjIsMSw1NywyLDEwOSw0LDU3LDIsNjIsMyw5NSwyLDE1MSwyLDExNCwzLDE2MiwxLDE4MSwyLDExNCwzLDExNCwzLDgwLDMsMTI4LDQsNDEsNCw2LDUsMjE0LDQsMjE0LDQsNyw1LDcsNSwyMTQsNCw2NCw1LDYxLDUsMjE1LDQsNzMsNSw3Myw1LDczLFxuNSw3Myw1LDIxNCw0LDc1LDUsMjE1LDQsNjQsNSw2MSw1LDYxLDUsMjE1LDQsMjE0LDQsNzUsNSwyMTksNCwzMiw1LDIxNCw0LDIxNCw0LDc1LDUsOTAsNSwyMTQsNCw3NSw1LDIxNCw0LDc1LDUsOTAsNSwxMCw1LDEwLDUsMTAsNSw0Nyw1LDkwLDUsMTAsNSwyMSw1LDEwLDUsNDcsNSwxMCw1LDEwLDUsNCw1LDI0LDUsNCw1LDI0LDUsNCw1LDI0LDUsNCw1LDI0LDUsMjE0LDQsMTExLDUsMjE0LDQsMCw1LDkwLDUsODYsNSw4Niw1LDkwLDUsMjIsNSwyOCw1LDMwLDUsMjksNSwyMTUsNCwxMzQsNSwxMzYsNSwxNTEsNSwxNTEsNSwxNjAsNSwxNjAsNSwxNjAsNSwxNjAsNSwzMSw2LDMxLDYsMzEsNiwzMSw2LDMxLDYsMzEsNiwzMSw2LDMxLDYsNywyLDIxMCwzLDE4Niw0LDIwMSw0LDEwNCwwLDExNyw0LDE2NSw0LDIyMiw0LDIyNCw0LDIyNyw0LDIyOCw0LDIyOSw0LDIzMyw0LDIzNCw0LDI0OSw0LDIzNSwzLDE2Myw0LDEzLDUsMTQ2LDQsMjQ4LDQsMjU1LDQsMjEwLDQsMSw1LDE1Miw0LFxuMTUzLDQsOSw1LDIxOCw0LDE3MSw0LDE3Myw1LDE3NSw1LDE1Nyw1LDM5LDUsMTY3LDUsODksNSwxNzIsNSwxNjYsNSwxNjgsNSw3Miw1LDY1LDUsODQsNSw3NCw1LDE3OCw1LDc2LDUsMTgzLDUsMTk5LDUsNzksNSw3Nyw1LDE2OSw1LDE3MCw1LDE3NCw1LDE3Niw1LDkyLDUsMTQ4LDUsMTQxLDUsODcsNSwyMDksNSwyMDcsNSwxOTIsNSwxMDgsNSw3OCw1LDEzNyw1LDE5MCw1LDEzOSw1LDEzMyw1LDE0OSw1LDExNSw1LDIwMCw1LDIwMyw1LDIwNiw1LDExNCw1LDEyMiw1LDIwOCw1LDE1MCw1LDIxMCw1LDIxMSw1LDIwNSw1LDIxMiw1LDE1Miw1LDE3Nyw1LDIxNCw1LDE1OCw1LDE3MSw1LDIxNSw1LDIxNyw1LDIxOCw1LDIxNiw1LDEyNyw1LDIyMiw1LDIyMyw1LDIyNSw1LDIxOSw1LDEyNiw1LDIyNiw1LDIyNyw1LDE5NSw1LDE4OCw1LDIzMSw1LDEzMCw1LDIyOSw1LDE5Myw1LDIzMCw1LDE5NCw1LDIzNiw1LDIyOSw1LDIzNyw1LDIzOCw1LDIzOSw1LDI0MCw1LDI0MSw1LDI0Myw1LFxuMjUyLDUsMjQ0LDUsMjQ2LDUsMjQ1LDUsMjQ3LDUsMjQ4LDUsMjUwLDUsMjUxLDUsMjQ3LDUsMjUzLDUsMjU1LDUsMCw2LDEsNiwzLDYsMTU2LDUsMTYxLDUsMTYyLDUsMTYzLDUsNyw2LDExLDYsMTMsNiwxLDUsMjQ3LDQsMjQ3LDQsMjQ3LDQsMTc5LDQsMTc5LDQsMTc5LDQsMTc5LDQsMjQ3LDQsNzIsNCwxMDEsNCwxMDEsNCwyMzEsNCw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSwxNzgsNCw1Miw1LDUyLDUsNTIsNSw1Miw1LDI0Nyw0LDc2LDQsMTA3LDQsNTIsNSw1Miw1LDUyLDUsNTIsNSwxODAsNCwxODEsNCw1Miw1LDUyLDUsNTIsNSwyMzAsNCwyMzIsNCwxMTcsNCwxMTYsNCwxMTUsNCwxMTQsNCwyMTMsNCw4OCw0LDExMiw0LDEwNSw0LDEwOSw0LDE4MCw0LDE3NCw0LDE3NSw0LDE3Myw0LDE3Nyw0LDE4MSw0LDUyLDUsMTA4LDQsMTQzLDQsMTU4LDQsMTQyLDQsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsXG41Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDE1Miw0LDE1Nyw0LDE2NCw0LDE1Niw0LDE1Myw0LDE0NSw0LDE0NCw0LDE0Niw0LDE0Nyw0LDUyLDUsMjUxLDMsNDMsNCw1Miw1LDUyLDUsNTIsNSwxNDgsNCw1Miw1LDE0OSw0LDE2MSw0LDE2MCw0LDE1OSw0LDIzOCw0LDksNSw4LDUsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsMSw1LDI0Nyw0LDEsNCwxLDQsNTIsNSwyNDcsNCwyNDcsNCwyNDcsNCwyNDcsNCwyNDcsNCwyNDcsNCwyNDMsXG40LDc2LDQsNjcsNCw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsMjM1LDQsMjMzLDQsNTIsNSwxOTQsNCw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsNzIsNCw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSwzLDUsNTIsNSwyMDgsNCw3Miw0LDcyLDQsNzIsNCw3NCw0LDU2LDQsNjYsNCwyMzYsMywxMTEsNCw5MCw0LDkwLDQsNDEsNSwxMTEsNCw0MSw1LDE4LDQsMjMsNSwxNSw0LDEwMSw0LDkwLDQsMTc2LDQsMTAxLDQsMTAxLDQsNzMsNCw2Niw0LDUyLDUsNDQsNSw4MSw0LDgxLDQsNDMsNSw0Myw1LDgxLDQsMTIyLDQsNDYsNCwxMTEsNCw1Miw0LDUyLDQsNTIsNCw1Miw0LDgxLDQsMjQ4LDMsMTExLDQsMTIyLDQsNDYsNCw0Niw0LDExMSxcbjQsODEsNCwyNDgsMywyMTIsNCwzOCw1LDgxLDQsODEsNCwyNDgsMywxODcsNCw4MSw0LDI0OCwzLDgxLDQsMjQ4LDMsMTg3LDQsNDQsNCw0NCw0LDQ0LDQsMzMsNCwxODcsNCw0NCw0LDE4LDQsNDQsNCwzMyw0LDQ0LDQsNDQsNCw5NCw0LDg5LDQsOTQsNCw4OSw0LDk0LDQsODksNCw5NCw0LDg5LDQsODEsNCwxODIsNCw4MSw0LDUyLDUsMTg3LDQsMTkxLDQsMTkxLDQsMTg3LDQsMTA2LDQsOTUsNCwxMDQsNCwxMDIsNCwxMTEsNCwyNTQsMywzNiw0LDYsNSw2LDUsMiw1LDIsNSwyLDUsMiw1LDQ5LDUsNDksNSwyNDMsNCwxOCw1LDE4LDUsMjAsNCwyMCw0LDE4LDUsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsMTMsNSw1Miw1LDE5Niw0LDUyLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDEyOCw0LDUyLDUsMjMyLDMsMjQwLDQsNTIsNSw1Miw1LDIzOSw0LDUyLDUsNTIsXG41LDUyLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDQwLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsMjExLDQsMjEwLDQsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDU4LDQsNTIsNSw1Miw1LDUyLDUsMjcsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDEwMyw0LDUyLDUsOTYsNCw1Miw1LDUyLDUsMzEsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSw1Miw1LDI0OSw0LDUyLDUsNTIsNSw1Miw1LDI0OCw0LDUyLDUsNTIsNSw1Miw1LDUyLDUsNTIsNSwxMzAsNCw1Miw1LDEyOSw0LDEzMyw0LDUyLDUsMjQyLDMsNTIsNSwxNiwwLDIsMiwxMiwwLDE0LFxuMCwyNCwwLDMxLDAsNTksMCwxNSwzOSw5Nyw5OSwxMTEsMTE1LDAsOTcsMTE1LDEwNSwxMTAsMCw5NywxMTYsOTcsMTEwLDAsOTcsMTE2LDExMCw1MCwwLDk3LDExNiw5NywxMTAsNTAsMCw5Nyw5OSwxMTEsMTE1LDEwNCwwLDk3LDExNSwxMDUsMTEwLDEwNCwwLDk3LDExNiw5NywxMTAsMTA0LDAsMTAwLDEwNSwxMDIsMTAyLDEwMSwxMTQsMTAxLDExMCw5OSwxMDEsMCwxMDAsMTAxLDEwMywxMTQsMTAxLDEwMSwxMTUsMCwxMTQsOTcsMTAwLDEwNSw5NywxMTAsMTE1LDAsOTksMTExLDExNSwwLDExNSwxMDUsMTEwLDAsMTE2LDk3LDExMCwwLDk5LDExMSwxMTYsMCw5OSwxMTEsMTE1LDEwNCwwLDExNSwxMDUsMTEwLDEwNCwwLDExNiw5NywxMTAsMTA0LDAsOTksMTExLDExNiwxMDQsMCwxMDEsMTIwLDExMiwwLDEwOCwxMTEsMTAzLDQ5LDQ4LDAsMTEyLDExMSwxMTksMTAxLDExNCwwLDExNSwxMDUsMTAzLDExMCwwLDExNSwxMTMsMTE0LDExNiwwLDExNSwxMTMsMTE3LDk3LDExNCwxMDEsXG4wLDk5LDEwMSwxMDUsMTA4LDAsMTAyLDEwOCwxMTEsMTExLDExNCwwLDExMiwxMDUsMCwxMTQsMTAxLDExMiwxMDgsMTA1LDk5LDk3LDExNiwxMDEsMCw5OSwxMDQsOTcsMTE0LDEwNSwxMTAsMTAwLDEwMSwxMjAsMCwxMDgsMTAxLDEwMiwxMTYsMTE1LDExNiwxMTQsMCwxMTQsMTA1LDEwMywxMDQsMTE2LDExNSwxMTYsMTE0LDAsMTE0LDEwMSwxMTgsMTAxLDExNCwxMTUsMTAxLDAsMTEyLDExNCwxMTEsMTEyLDEwMSwxMTQsMCwxMTIsOTcsMTAwLDEwOCwwLDExMiw5NywxMDAsMTE0LDAsMTEyLDk3LDEwMCw5OSwwLDExNSwxMTYsMTE0LDEwMiwxMDUsMTA4LDExNiwxMDEsMTE0LDAsMTE1LDExNiwxMDAsMTAxLDExOCwwLDExOCw5NywxMTQsMTA1LDk3LDExMCw5OSwxMDEsMCwxMDksMTAxLDEwMCwxMDUsOTcsMTEwLDAsMTA4LDExMSwxMTksMTAxLDExNCw5NSwxMTMsMTE3LDk3LDExNCwxMTYsMTA1LDEwOCwxMDEsMCwxMTcsMTEyLDExMiwxMDEsMTE0LDk1LDExMywxMTcsOTcsMTE0LFxuMTE2LDEwNSwxMDgsMTAxLDAsMTAyLDExMSwxMTQsMzIsMTEwLDExMSwxMDAsMTAxLDAsOTcsMTE0LDEwMyw5OSw2MSw2MSw0OSwwLDk5LDQ3LDEwMSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDQ1LDEwMiwxMTcsMTEwLDk5LDExNiwxMDUsMTExLDExMCwxMTUsNDYsOTksMCw5Nyw5OSwxMTEsMTE1LDcwLDExNywxMTAsOTksMCw5NywxMTUsMTA1LDExMCw3MCwxMTcsMTEwLDk5LDAsOTcsMTE2LDk3LDExMCw3MCwxMTcsMTEwLDk5LDAsOTcsMTE0LDEwMyw5OSw2MSw2MSw1MCwwLDk3LDExNiwxMTAsNTAsNzAsMTE3LDExMCw5OSwwLDk3LDk5LDExMSwxMTUsMTA0LDcwLDExNywxMTAsOTksMCw5NywxMTUsMTA1LDExMCwxMDQsNzAsMTE3LDExMCw5OSwwLDk3LDExNiw5NywxMTAsMTA0LDcwLDExNywxMTAsOTksMCwxMDAsMTA1LDEwMiwxMDIsMTAxLDExNCwxMDEsMTEwLDk5LDEwMSw3MCwxMTcsMTEwLDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLFxuMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwxLDIsMywwLDEsMiwwLDAsMiwyLDQsNSw1LDAsMSwyLDYsMiwzLDAsMSwwLDIsMCwyLDAsMCwwLDAsMCwwLDAsMSwyLDMsMCwxLDIsMCwwLDIsMiw0LDUsNSwwLDEsMiw2LDIsMywwLDEsMCwyLDAsMiwwLDAsMCwwLDAsNjMsNDgsNDgsNDgsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNCw0LDQsNCw0LFxuNCw0LDQsNCw0LDQsNCw0LDQsNCw0LDQsNCw0LDQsNCw0LDQsNCw0LDQsNCw0LDQsNCw0LDQsNCw0LDQsNCw0LDQsNCw0LDQsNCw0LDQsNCw0LDQsNCw0LDQsNCw0LDQsNCw0LDQsNCw0LDQsNCw0LDQsNCw0LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDMsMywzLDMsMywzLDMsMyw0LDQsNCw0LDQsNCw0LDQsMTE0LDk3LDEwMCw1MCwxMDAsMTAxLDEwMyw3MCwxMTcsMTEwLDk5LDAsMTAwLDEwMSwxMDMsNTAsMTE0LDk3LDEwMCw3MCwxMTcsMTEwLDk5LDAsOTksMTExLDExNSw3MCwxMTcsMTEwLDk5LDAsMTE1LDEwNSwxMTAsNzAsMTE3LDExMCw5OSwwLDExNiw5NywxMTAsNzAsMTE3LDExMCw5OSwwLDk5LDExMSwxMTYsNzAsMTE3LDExMCw5OSwwLDk5LDExMSwxMTUsMTA0LDcwLDExNywxMTAsOTksMCwxMTUsMTA1LDExMCwxMDQsNzAsMTE3LDExMCw5OSwwLFxuMTE2LDk3LDExMCwxMDQsNzAsMTE3LDExMCw5OSwwLDk5LDExMSwxMTYsMTA0LDcwLDExNywxMTAsOTksMCwxMDEsMTIwLDExMiw3MCwxMTcsMTEwLDk5LDAsMTA4LDExMSwxMDMsNzAsMTE3LDExMCw5OSwwLDEwOCwxMTEsMTAzLDQ5LDQ4LDcwLDExNywxMTAsOTksMCwxMTIsMTExLDExOSwxMDEsMTE0LDcwLDExNywxMTAsOTksMCwxMTUsMTA1LDEwMywxMTAsNzAsMTE3LDExMCw5OSwwLDExNSwxMTMsMTE0LDExNiw3MCwxMTcsMTEwLDk5LDAsMTE1LDExMywxMTcsOTcsMTE0LDEwMSw3MCwxMTcsMTEwLDk5LDAsOTksMTAxLDEwNSwxMDgsNzAsMTE3LDExMCw5OSwwLDEwMiwxMDgsMTExLDExMSwxMTQsNzAsMTE3LDExMCw5OSwwLDEwMCwxMTEsMTA5LDk3LDEwNSwxMTAsMzIsMTAxLDExNCwxMTQsMTExLDExNCwwLDk3LDExNCwxMDMsOTksNjEsNjEsNTEsMzIsMTI0LDEyNCw5NywxMTQsMTAzLDk5LDYxLDYxLDUwLDAsOTksMTA0LDk3LDExNCwxMDUsMTEwLDEwMCwxMDEsMTIwLDcwLFxuMTE3LDExMCw5OSwwLDEwOCwxMDEsMTAyLDExNiw3MCwxMTcsMTEwLDk5LDAsMTE0LDEwNSwxMDMsMTA0LDExNiw3MCwxMTcsMTEwLDk5LDAsNDksNjEsNjEsOTcsMTE0LDEwMyw5OSwwLDExNCwxMDEsMTE4LDEwMSwxMTQsMTE1LDEwMSw3MCwxMTcsMTEwLDk5LDAsMTEyLDExNCwxMTEsMTEyLDEwMSwxMTQsNzAsMTE3LDExMCw5OSwwLDExMiw5NywxMDAsMTA4LDcwLDExNywxMTAsOTksMCwxMjIsNjAsNjEsMTIyLDg0LDEwMSwxMTQsMTA5LDAsMTE1LDExMywxMDgsMTA1LDExNiwxMDEsNTEsODUsMTE2LDEwMiw1Niw2NywxMDQsOTcsMTE0LDc2LDEwMSwxMTAsMCwxMTIsOTcsMTAwLDExNCw3MCwxMTcsMTEwLDk5LDAsMTEyLDk3LDEwMCw5OSw3MCwxMTcsMTEwLDk5LDAsMTE1LDExNiwxMTQsMTAyLDEwNSwxMDgsMTE2LDEwMSwxMTQsNzAsMTE3LDExMCw5OSwwLDExOCw5NywxMTQsMTA1LDk3LDExMCw5OSwxMDEsODMsMTE2LDEwMSwxMTIsMCwxMDksMTExLDEwMCwxMDEsODMsMTE2LFxuMTAxLDExMiwwLDUxLDQ2LDQ5LDUzLDQ2LDQ5LDAsODMsODEsNzYsNzMsODQsNjksOTUsMCwwLDEsMiwzLDQsNSw2LDcsOCw5LDEwLDExLDEyLDEzLDE0LDE1LDE2LDE3LDE4LDE5LDIwLDIxLDIyLDIzLDI0LDI1LDI2LDI3LDI4LDI5LDMwLDMxLDMyLDMzLDM0LDM1LDM2LDM3LDM4LDM5LDQwLDQxLDQyLDQzLDQ0LDQ1LDQ2LDQ3LDQ4LDQ5LDUwLDUxLDUyLDUzLDU0LDU1LDU2LDU3LDU4LDU5LDYwLDYxLDYyLDYzLDY0LDk3LDk4LDk5LDEwMCwxMDEsMTAyLDEwMywxMDQsMTA1LDEwNiwxMDcsMTA4LDEwOSwxMTAsMTExLDExMiwxMTMsMTE0LDExNSwxMTYsMTE3LDExOCwxMTksMTIwLDEyMSwxMjIsOTEsOTIsOTMsOTQsOTUsOTYsOTcsOTgsOTksMTAwLDEwMSwxMDIsMTAzLDEwNCwxMDUsMTA2LDEwNywxMDgsMTA5LDExMCwxMTEsMTEyLDExMywxMTQsMTE1LDExNiwxMTcsMTE4LDExOSwxMjAsMTIxLDEyMiwxMjMsMTI0LDEyNSwxMjYsMTI3LDEyOCwxMjksMTMwLDEzMSwxMzIsMTMzLFxuMTM0LDEzNSwxMzYsMTM3LDEzOCwxMzksMTQwLDE0MSwxNDIsMTQzLDE0NCwxNDUsMTQ2LDE0NywxNDgsMTQ5LDE1MCwxNTEsMTUyLDE1MywxNTQsMTU1LDE1NiwxNTcsMTU4LDE1OSwxNjAsMTYxLDE2MiwxNjMsMTY0LDE2NSwxNjYsMTY3LDE2OCwxNjksMTcwLDE3MSwxNzIsMTczLDE3NCwxNzUsMTc2LDE3NywxNzgsMTc5LDE4MCwxODEsMTgyLDE4MywxODQsMTg1LDE4NiwxODcsMTg4LDE4OSwxOTAsMTkxLDE5MiwxOTMsMTk0LDE5NSwxOTYsMTk3LDE5OCwxOTksMjAwLDIwMSwyMDIsMjAzLDIwNCwyMDUsMjA2LDIwNywyMDgsMjA5LDIxMCwyMTEsMjEyLDIxMywyMTQsMjE1LDIxNiwyMTcsMjE4LDIxOSwyMjAsMjIxLDIyMiwyMjMsMjI0LDIyNSwyMjYsMjI3LDIyOCwyMjksMjMwLDIzMSwyMzIsMjMzLDIzNCwyMzUsMjM2LDIzNywyMzgsMjM5LDI0MCwyNDEsMjQyLDI0MywyNDQsMjQ1LDI0NiwyNDcsMjQ4LDI0OSwyNTAsMjUxLDI1MiwyNTMsMjU0LDI1NSwwLDEsMSwwLDAsMCwwLFxuMSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLFxuMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDQsNSwzLDUsMSw1LDEsNSwyLDUsMiw1LDEsNSwxLDUsNCw1LDMsNSwxLDUsMSw1LDIsNSwyLDUsMSw1LDEsNSwxMTUsMTE2LDExNCwxMDUsMTEwLDEwMywzMiwxMTEsMTE0LDMyLDk4LDEwOCwxMTEsOTgsMzIsMTE2LDExMSwxMTEsMzIsOTgsMTA1LDEwMywwLDk5LDk3LDExMCwxMTAsMTExLDExNiwzMiwxMTEsMTEyLDEwMSwxMTAsMzIsMTE4LDEwNSwxMTQsMTE2LDExNyw5NywxMDgsMzIsMTE2LDk3LDk4LDEwOCwxMDEsNTgsMzIsMzcsMTE1LDAsOTksOTcsMTEwLDExMCwxMTEsMTE2LDMyLDExMSwxMTIsMTAxLDExMCwzMiwxMTYsOTcsOTgsMTA4LDEwMSwzMiwxMTksMTA1LDExNiwxMDQsMTExLDExNywxMTYsMzIsMTE0LDExMSwxMTksMTA1LDEwMCw1OCwzMiwzNywxMTUsMCw5OSw5NywxMTAsMTEwLDExMSwxMTYsMzIsMTExLDExMiwxMDEsMTEwLDMyLDExOCwxMDUsMTAxLDExOSw1OCwzMiwzNywxMTUsMCwxMTAsMTExLDMyLDExNSwxMTcsXG45OSwxMDQsMzIsOTksMTExLDEwOCwxMTcsMTA5LDExMCw1OCwzMiwzNCwzNywxMTUsMzQsMCwxMDIsMTExLDExNCwxMDEsMTA1LDEwMywxMTAsMzIsMTA3LDEwMSwxMjEsMCwxMDUsMTEwLDEwMCwxMDEsMTIwLDEwMSwxMDAsMCw5OSw5NywxMTAsMTEwLDExMSwxMTYsMzIsMTExLDExMiwxMDEsMTEwLDMyLDM3LDExNSwzMiw5OSwxMTEsMTA4LDExNywxMDksMTEwLDMyLDEwMiwxMTEsMTE0LDMyLDExOSwxMTQsMTA1LDExNiwxMDUsMTEwLDEwMywwLDE1MSwwLDAsMCwxMDQsMCwwLDAsODIsMSwxLDAsMzMsMCw3LDEsOTYsMCwwLDEsODcsMSwwLDAsMTMsMCwyLDAsMTExLDAsMCwwLDc1LDAsMCwwLDM3LDExNSwwLDQyLDYzLDkxLDAsMzcsOTUsMCwxLDAsMCwwLDAsMCwwLDAsMCwwLDAsMSwxLDEsMSwxLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDEsMCwxMjgsMCw2NCwwLDAsMTI4LDAsMCwwLDAsMCwwLDAsMCwxMiwxMiwxMiwxMiwxMiwxMiwxMiwxMiwxMiwxMixcbjAsMCwwLDAsMCwwLDAsMTAsMTAsMTAsMTAsMTAsMTAsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDEyOCwwLDAsMCw2NCwxMjgsNDIsNDIsNDIsNDIsNDIsNDIsMzQsMzQsMzQsMzQsMzQsMzQsMzQsMzQsMzQsMzQsMzQsMzQsMzQsMzQsMzQsMzQsMzQsMzQsMzQsMzQsMCwwLDAsMCwwLDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LDY0LFxuNjQsNjQsNjQsNjQsNjQsNjQsNjQsNjQsNjQsNjQsNjQsNjQsNjQsNjQsNjQsNjQsNjQsNjQsNjQsNjQsMSw0LDMsMiw1LDExNiwxMTQsMTA1LDEwMywxMDMsMTAxLDExNCwwLDExNiwxMDEsMTA5LDExMiwwLDUwLDQ4LDQ5LDU0LDQ1LDQ5LDQ5LDQ1LDQ4LDUyLDMyLDQ5LDUwLDU4LDQ4LDU2LDU4LDUyLDU3LDMyLDQ5LDQ5LDUxLDU0LDU2LDU0LDUxLDk5LDU1LDU0LDUzLDU1LDU0LDQ5LDQ5LDQ4LDEwMSw1NSw0OSw0OCwxMDAsMTAwLDUzLDEwMCw1NCw1Nyw5Nyw5OCw1NCw5OCwxMDIsNTEsNTIsNTUsOTksNTQsNTMsMTAxLDUxLDU0LDAsMTE3LDExMCwxMDcsMTEwLDExMSwxMTksMTEwLDMyLDEwMCw5NywxMTYsOTcsOTgsOTcsMTE1LDEwMSw1OCwzMiwzNywxMTUsMCw3Myw3OCw4NCw2OSw3MSw2OSw4MiwwLDU3LDUwLDUwLDUxLDUxLDU1LDUwLDQ4LDUxLDU0LDU2LDUzLDUyLDU1LDU1LDUzLDU2LDQ4LDAsMiwyLDMsNSwzLDQsNSw0LDAsMSwyLDQsOSwxMiwxNSwyMCwxMTEsMTEwLFxuMTExLDEwMiwxMDIsOTcsMTA4LDExNSwxMDEsMTIxLDEwMSwxMTUsMTE2LDExNCwxMTcsMTAxLDEyMCwxMTYsMTE0LDk3LDEwMiwxMTcsMTA4LDEwOCwwLDEsMCwwLDAsMSwxLDMsMiw3NiwxMDUsMTE3LDc0LDAsNDUsMCwwLDgyLDAsNzcsMCwwLDQyLDEyLDc4LDE1LDAsMTE2LDg1LDU0LDExMiwwLDE5LDAsMCwxMjEsMCwxMTksMTE1LDAsMjIsOTMsMCw5LDAsMCw3MCw3MSwwLDY5LDYsMCw0OCw5MCwxMDIsMCwxMTgsMTAxLDAsMCw0NCwwLDEwMywyNCwwLDE3LDAsMTIyLDUzLDIzLDAsNSwxMTAsMjUsOTYsMCwwLDEyNCwxMDYsNjAsMTIzLDU3LDI4LDU1LDAsOTEsMCwxMDAsMjYsMCw5OSwwLDAsMCw5NSw5Miw5Nyw4OCwxMDksMTQsMzksMTA4LDAsODEsMCwxOCw4OSwxMTEsMzIsMCwxMjAsODAsMTEzLDYyLDQ2LDg0LDAsMCw5NCw0MCw1OSwxMTQsMCwzNiwwLDAsMjksMCw4Niw2Myw2NCwwLDIwLDYxLDAsNTYsNyw3LDUsNCw2LDQsNSwzLDYsNywzLDYsNiw3LDcsMyw4LDIsNiw1LFxuNCw0LDMsMTAsNCw2LDExLDYsMiw3LDUsNSw5LDYsOSw5LDcsMTAsMTAsNCw2LDIsMyw5LDQsMiw2LDUsNyw0LDUsNyw2LDYsNSw2LDUsNSw5LDcsNywzLDIsNCw0LDcsMyw2LDQsNyw2LDEyLDYsOSw0LDYsNSw0LDcsNiw1LDYsNyw1LDQsNSw2LDUsNywzLDcsMTMsMiwyLDQsNiw2LDgsNSwxNywxMiw3LDgsOCwyLDQsNCw0LDQsNCwyLDIsNiw1LDgsNSw4LDMsNSw1LDYsNCw5LDMsODIsNjksNzMsNzgsNjgsNjksODgsNjksNjgsNjksODMsNjcsNjUsODAsNjksNjUsNjcsNzIsNjksNjcsNzUsNjksODksNjYsNjksNzAsNzksODIsNjksNzMsNzEsNzgsNzksODIsNjksNzEsNjksODgsODAsNzYsNjUsNzMsNzgsODMsODQsNjksNjUsNjgsNjgsNjUsODQsNjUsNjYsNjUsODMsNjksNzYsNjksNjcsODQsNjUsNjYsNzYsNjksNzAsODQsNzIsNjksNzgsNjgsNjksNzAsNjksODIsODIsNjUsNjYsNzYsNjksNzYsODMsNjksODgsNjcsNjksODAsODQsODIsNjUsNzgsODMsNjUsNjcsODQsNzMsXG43OSw3OCw2NSw4NCw4NSw4Miw2NSw3Niw4NCw2OSw4Miw2NSw3Myw4Myw2OSw4OCw2Nyw3Niw4NSw4Myw3Myw4Niw2OSw4OCw3Myw4Myw4NCw4Myw2NSw4Niw2OSw4MCw3OSw3Myw3OCw4NCw2OSw4Miw4Myw2OSw2Nyw4NCw4Miw3Myw3MSw3MSw2OSw4Miw2OSw3MCw2OSw4Miw2OSw3OCw2Nyw2OSw4Myw2Nyw3OSw3OCw4Myw4NCw4Miw2NSw3Myw3OCw4NCw3OSw3MCw3MCw4Myw2OSw4NCw2OSw3Nyw4MCw3OSw4Miw2NSw4Miw4OSw4NSw3OCw3Myw4MSw4NSw2OSw4Miw4OSw4Nyw3Myw4NCw3Miw3OSw4NSw4NCw2OSw4Miw2OSw3Niw2OSw2NSw4Myw2OSw2NSw4NCw4NCw2NSw2Nyw3Miw2NSw4Niw3Myw3OCw3MSw4Miw3OSw4NSw4MCw2OCw2NSw4NCw2OSw2Niw2OSw3MSw3Myw3OCw3OCw2OSw4Miw2OSw2Nyw4NSw4Miw4Myw3Myw4Niw2OSw2Niw2OSw4NCw4Nyw2OSw2OSw3OCw3OSw4NCw3OCw4NSw3Niw3Niw3Myw3NSw2OSw2Nyw2NSw4Myw2Nyw2NSw2OCw2OSw3Niw2OSw4NCw2OSw2NyxcbjY1LDgzLDY5LDY3LDc5LDc2LDc2LDY1LDg0LDY5LDY3LDgyLDY5LDY1LDg0LDY5LDY3LDg1LDgyLDgyLDY5LDc4LDg0LDk1LDY4LDY1LDg0LDY5LDY4LDY5LDg0LDY1LDY3LDcyLDczLDc3LDc3LDY5LDY4LDczLDY1LDg0LDY5LDc0LDc5LDczLDc4LDgzLDY5LDgyLDg0LDc3LDY1LDg0LDY3LDcyLDgwLDc2LDY1LDc4LDY1LDc2LDg5LDkwLDY5LDgwLDgyLDY1LDcxLDc3LDY1LDY2LDc5LDgyLDg0LDg2LDY1LDc2LDg1LDY5LDgzLDg2LDczLDgyLDg0LDg1LDY1LDc2LDczLDc3LDczLDg0LDg3LDcyLDY5LDc4LDg3LDcyLDY5LDgyLDY5LDc4LDY1LDc3LDY5LDY1LDcwLDg0LDY5LDgyLDY5LDgwLDc2LDY1LDY3LDY5LDY1LDc4LDY4LDY5LDcwLDY1LDg1LDc2LDg0LDY1LDg1LDg0LDc5LDczLDc4LDY3LDgyLDY5LDc3LDY5LDc4LDg0LDY3LDY1LDgzLDg0LDY3LDc5LDc2LDg1LDc3LDc4LDY3LDc5LDc3LDc3LDczLDg0LDY3LDc5LDc4LDcwLDc2LDczLDY3LDg0LDY3LDgyLDc5LDgzLDgzLFxuNjcsODUsODIsODIsNjksNzgsODQsOTUsODQsNzMsNzcsNjksODMsODQsNjUsNzcsODAsODIsNzMsNzcsNjUsODIsODksNjgsNjksNzAsNjksODIsODIsNjksNjgsNzMsODMsODQsNzMsNzgsNjcsODQsNjgsODIsNzksODAsNzAsNjUsNzMsNzYsNzAsODIsNzksNzcsNzAsODUsNzYsNzYsNzEsNzYsNzksNjYsODksNzMsNzAsNzMsODMsNzgsODUsNzYsNzYsNzksODIsNjgsNjksODIsNjksODMsODQsODIsNzMsNjcsODQsODIsNzMsNzEsNzIsODQsODIsNzksNzYsNzYsNjYsNjUsNjcsNzUsODIsNzksODcsODUsNzgsNzMsNzksNzgsODUsODMsNzMsNzgsNzEsODYsNjUsNjcsODUsODUsNzcsODYsNzMsNjksODcsNzMsNzgsNzMsODQsNzMsNjUsNzYsNzYsODksOTMsNTYsMTQwLDcwLDQyLDcyLDEwNCw3OSw2MywxMTMsNzQsNzUsMzEsMiw3NywxNDIsNjksMjQsMTE5LDE2LDk4LDEzOCwxMSwxMTIsMTM5LDExNyw2LDU4LDEwNyw5OCwxNDEsODMsOSwyMCwxMywxMTgsODgsMTA1LDk5LDEzMSxcbjgxLDgwLDExMSwyMSwyMSwyNywxMDMsMywyNSw5Miw5OCwxNCw2MiwxMjgsMTI3LDExMCw1LDk4LDg0LDMyLDM1LDE5LDc4LDEwMSwzMSw2NSw2MSwxMDksMTM2LDUzLDE3LDk1LDcxLDgsMTI0LDEwOCwzMCw0LDYwLDgyLDU3LDEyMCw5MSwxMjksMTM3LDEzMCw5NCw1OSw4NSwyOCwxMDAsMTA2LDE1LDMzLDY2LDY3LDEwLDY4LDk4LDk1LDk1LDEwMiw3LDEyMSwyOSwxMTQsNzMsMTIzLDk4LDMxLDY0LDE4LDM0LDEyNiw4Niw5OCwxMiw4NywxMTUsMTI1LDg5LDkwLDc2LDExNiwwLDAsMCwwLDQsMCwwLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwwLDAsMCwxMywwLDAsMCwwLDAsNywwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwzMywwLDIxLDAsMCwwLDAsMCw1MCwwLDQzLDMsNDcsMCwwLDAsMCwzMCwwLDU4LDAsMzgsMCwwLDAsMSw2NiwwLDAsNjcsMCw0MSwwLDAsMCwwLDAsMCw0OSw2NSwwLDAsMCwwLDMxLDUyLDE2LDM0LDEwLDAsMCwwLDAsMCwwLDAsMTEsNzIsNzksMCw4LFxuMCwxMDQsOTgsMCwxMDcsMCw4NywwLDc1LDUxLDAsMjcsMzcsNzMsODMsMCwzNSw2OCwwLDAsOTUsODIsNzksODcsNzMsNjgsOTUsMCw4Miw3OSw4Nyw3Myw2OCwwLDc5LDczLDY4LDAsMTE1LDExMywxMDgsMTA1LDExNiwxMDEsOTUsMTE2LDEwMSwxMDksMTEyLDk1LDEwOSw5NywxMTUsMTE2LDEwMSwxMTQsMCwxMTUsMTEzLDEwOCwxMDUsMTE2LDEwMSw5NSwxMDksOTcsMTE1LDExNiwxMDEsMTE0LDAsNDksMCw2Nyw4Miw2OSw2NSw4NCw2OSwzMiw4NCw2NSw2Niw3Niw2OSwzMiwxMjAsNDAsMTE2LDEyMSwxMTIsMTAxLDMyLDExNiwxMDEsMTIwLDExNiw0NCwxMTAsOTcsMTA5LDEwMSwzMiwxMTYsMTAxLDEyMCwxMTYsNDQsMTE2LDk4LDEwOCw5NSwxMTAsOTcsMTA5LDEwMSwzMiwxMTYsMTAxLDEyMCwxMTYsNDQsMTE0LDExMSwxMTEsMTE2LDExMiw5NywxMDMsMTAxLDMyLDEwNSwxMTAsMTE2LDEwMSwxMDMsMTAxLDExNCw0NCwxMTUsMTEzLDEwOCwzMiwxMTYsMTAxLDEyMCwxMTYsXG40MSwwLDk3LDExNiwxMTYsOTcsOTksMTA0LDEwMSwxMDAsMzIsMTAwLDk3LDExNiw5Nyw5OCw5NywxMTUsMTAxLDExNSwzMiwxMDksMTE3LDExNSwxMTYsMzIsMTE3LDExNSwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDk3LDEwOSwxMDEsMzIsMTE2LDEwMSwxMjAsMTE2LDMyLDEwMSwxMTAsOTksMTExLDEwMCwxMDUsMTEwLDEwMywzMiw5NywxMTUsMzIsMTA5LDk3LDEwNSwxMTAsMzIsMTAwLDk3LDExNiw5Nyw5OCw5NywxMTUsMTAxLDAsMTE3LDExMCwxMTUsMTE3LDExMiwxMTIsMTExLDExNCwxMTYsMTAxLDEwMCwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTAyLDExMSwxMTQsMTA5LDk3LDExNiwwLDgzLDY5LDc2LDY5LDY3LDg0LDMyLDExMCw5NywxMDksMTAxLDQ0LDMyLDExNCwxMTEsMTExLDExNiwxMTIsOTcsMTAzLDEwMSw0NCwzMiwxMTUsMTEzLDEwOCwzMiw3MCw4Miw3OSw3NywzMiwzNCwzNywxMTksMzQsNDYsMzcsMTE1LDMyLDc5LDgyLDY4LDY5LDgyLDMyLDY2LDg5LDMyLFxuMTE0LDExMSwxMTksMTA1LDEwMCwwLDExNSwxMTMsMTA4LDEwNSwxMTYsMTAxLDk1LDExNSwxMTYsOTcsMTE2LDQ5LDAsODMsNjksNzYsNjksNjcsODQsMzIsMTE2LDk4LDEwOCw0NCwxMDUsMTAwLDEyMCw0NCwxMTUsMTE2LDk3LDExNiwzMiw3MCw4Miw3OSw3NywzMiwzNyw4MSw0NiwxMTUsMTEzLDEwOCwxMDUsMTE2LDEwMSw5NSwxMTUsMTE2LDk3LDExNiw0OSwwLDExNywxMTAsMTExLDExNCwxMDAsMTAxLDExNCwxMDEsMTAwLDQyLDAsMTE1LDEyMiw2MSw5MSw0OCw0NSw1Nyw5Myw0MiwwLDExMCwxMTEsMTE1LDEwNywxMDUsMTEyLDExNSw5OSw5NywxMTAsNDIsMCw5OSwxMTQsMTAxLDk3LDExNiwxMDEsMzIsMCwxMDUsMTEwLDExOCw5NywxMDgsMTA1LDEwMCwzMiwxMTQsMTExLDExMSwxMTYsMTEyLDk3LDEwMywxMDEsMCw2MywwLDEwOSw5NywxMDgsMTAyLDExMSwxMTQsMTA5LDEwMSwxMDAsMzIsMTAwLDk3LDExNiw5Nyw5OCw5NywxMTUsMTAxLDMyLDExNSw5OSwxMDQsMTAxLFxuMTA5LDk3LDMyLDQwLDM3LDExNSw0MSwwLDM3LDEyMiwzMiw0NSwzMiwzNywxMTUsMCwxMDAsOTcsMTE2LDk3LDk4LDk3LDExNSwxMDEsMzIsOTksMTExLDExNCwxMTQsMTE3LDExMiwxMTYsMTA1LDExMSwxMTAsMCwzNywxMTUsMzIsOTcsMTE2LDMyLDEwOCwxMDUsMTEwLDEwMSwzMiwzNywxMDAsMzIsMTExLDEwMiwzMiw5MSwzNyw0Niw0OSw0OCwxMTUsOTMsMCwxMTcsMTEwLDk3LDk4LDEwOCwxMDEsMzIsMTE2LDExMSwzMiwxMDAsMTAxLDEwOCwxMDEsMTE2LDEwMSw0NywxMDksMTExLDEwMCwxMDUsMTAyLDEyMSwzMiw5OSwxMTEsMTA4LDEwOCw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTE1LDEwMSwxMTMsMTE3LDEwMSwxMTAsOTksMTAxLDMyLDEwMCwxMTcsMTAxLDMyLDExNiwxMTEsMzIsOTcsOTksMTE2LDEwNSwxMTgsMTAxLDMyLDExNSwxMTYsOTcsMTE2LDEwMSwxMDksMTAxLDExMCwxMTYsMTE1LDAsNzgsNzksNjcsNjUsODMsNjksMCw4Miw4NCw4Miw3Myw3NywwLDEwOSw5NyxcbjEwNSwxMTAsMCwxMTUsMTA1LDEwOSwxMTIsMTA4LDEwMSwwLDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDAsMTE3LDExMCwxMDUsOTksMTExLDEwMCwxMDEsNTQsNDksMCwxMDIsMTE2LDExNSw1MSw5NSwxMTYsMTExLDEwNywxMDEsMTEwLDEwNSwxMjIsMTAxLDExNCwwLDExNSwxMTBdLFwiaThcIiw0LGwuYWErMTAyNDApO1xueihbMTA1LDExMiwxMTIsMTAxLDExNiwwLDExMSwxMDIsMTAyLDExNSwxMDEsMTE2LDExNSwwLDEwOSw5NywxMTYsOTksMTA0LDEwNSwxMTAsMTAyLDExMSwwLDExMSwxMTIsMTE2LDEwNSwxMDksMTA1LDEyMiwxMDEsMCwxMDIsMTE2LDExNSw1MSwwLDEwMiwxMTYsMTE1LDUyLDAsMTAyLDExNiwxMTUsNTEsMTE2LDExMSwxMDcsMTAxLDExMCwxMDUsMTIyLDEwMSwwLDY3LDgyLDY5LDY1LDg0LDY5LDMyLDg0LDY1LDY2LDc2LDY5LDMyLDEyMCw0MCwxMDUsMTEwLDExMiwxMTcsMTE2LDQ0LDMyLDExNiwxMTEsMTA3LDEwMSwxMTAsNDQsMzIsMTE1LDExNiw5NywxMTQsMTE2LDQ0LDMyLDEwMSwxMTAsMTAwLDQ0LDMyLDExMiwxMTEsMTE1LDEwNSwxMTYsMTA1LDExMSwxMTAsNDEsMCwxMTcsMTEwLDEwNywxMTAsMTExLDExOSwxMTAsMzIsMTE2LDExMSwxMDcsMTAxLDExMCwxMDUsMTIyLDEwMSwxMTQsNTgsMzIsMzcsMTE1LDAsNjUsNzYsODQsNjksODIsMzIsODQsNjUsNjYsNzYsNjksXG4zMiwzNyw4MSw0NiwzOSwzNywxMTMsOTUsOTksMTExLDExMCwxMTYsMTAxLDExMCwxMTYsMzksMzIsMzIsODIsNjksNzgsNjUsNzcsNjksMzIsODQsNzksMzIsMzksMzcsMTEzLDk1LDk5LDExMSwxMTAsMTE2LDEwMSwxMTAsMTE2LDM5LDU5LDAsNjUsNzYsODQsNjksODIsMzIsODQsNjUsNjYsNzYsNjksMzIsMzcsODEsNDYsMzksMzcsMTEzLDk1LDEwMCwxMTEsOTksMTE1LDEwNSwxMjIsMTAxLDM5LDMyLDMyLDgyLDY5LDc4LDY1LDc3LDY5LDMyLDg0LDc5LDMyLDM5LDM3LDExMyw5NSwxMDAsMTExLDk5LDExNSwxMDUsMTIyLDEwMSwzOSw1OSwwLDY1LDc2LDg0LDY5LDgyLDMyLDg0LDY1LDY2LDc2LDY5LDMyLDM3LDgxLDQ2LDM5LDM3LDExMyw5NSwxMTUsMTE2LDk3LDExNiwzOSwzMiwzMiw4Miw2OSw3OCw2NSw3Nyw2OSwzMiw4NCw3OSwzMiwzOSwzNywxMTMsOTUsMTE1LDExNiw5NywxMTYsMzksNTksMCw2NSw3Niw4NCw2OSw4MiwzMiw4NCw2NSw2Niw3Niw2OSwzMiwzNyw4MSxcbjQ2LDM5LDM3LDExMyw5NSwxMTUsMTAxLDEwMywxMDksMTAxLDExMCwxMTYsMTE1LDM5LDMyLDgyLDY5LDc4LDY1LDc3LDY5LDMyLDg0LDc5LDMyLDM5LDM3LDExMyw5NSwxMTUsMTAxLDEwMywxMDksMTAxLDExMCwxMTYsMTE1LDM5LDU5LDAsNjUsNzYsODQsNjksODIsMzIsODQsNjUsNjYsNzYsNjksMzIsMzcsODEsNDYsMzksMzcsMTEzLDk1LDExNSwxMDEsMTAzLDEwMCwxMDUsMTE0LDM5LDMyLDMyLDMyLDgyLDY5LDc4LDY1LDc3LDY5LDMyLDg0LDc5LDMyLDM5LDM3LDExMyw5NSwxMTUsMTAxLDEwMywxMDAsMTA1LDExNCwzOSw1OSwwLDY4LDY5LDc2LDY5LDg0LDY5LDMyLDcwLDgyLDc5LDc3LDMyLDM3LDgxLDQ2LDM5LDM3LDExMyw5NSw5OSwxMTEsMTEwLDExNiwxMDEsMTEwLDExNiwzOSwzMiw4Nyw3Miw2OSw4Miw2OSwzMiwxMTQsMTExLDExOSwxMDUsMTAwLDMyLDYxLDMyLDYzLDAsODMsNjksNzYsNjksNjcsODQsMzIsNzgsNzksODQsMzIsNjksODgsNzMsODMsODQsODMsNDAsXG44Myw2OSw3Niw2OSw2Nyw4NCwzMiwxMDAsMTExLDk5LDEwNSwxMDAsMzIsNzAsODIsNzksNzcsMzIsMzcsODEsNDYsMzksMzcsMTEzLDk1LDk5LDExMSwxMTAsMTE2LDEwMSwxMTAsMTE2LDM5LDMyLDg3LDcyLDY5LDgyLDY5LDMyLDExNCwxMTEsMTE5LDEwNSwxMDAsMzMsNjEsNjMsNDEsMCw2OCw2OSw3Niw2OSw4NCw2OSwzMiw3MCw4Miw3OSw3NywzMiwzNyw4MSw0NiwzOSwzNywxMTMsOTUsOTksMTExLDExMCwxMTYsMTAxLDExMCwxMTYsMzksMCw2OCw2OSw3Niw2OSw4NCw2OSwzMiw3MCw4Miw3OSw3NywzMiwzNyw4MSw0NiwzOSwzNywxMTMsOTUsMTE1LDEwMSwxMDMsMTA5LDEwMSwxMTAsMTE2LDExNSwzOSwwLDY4LDY5LDc2LDY5LDg0LDY5LDMyLDcwLDgyLDc5LDc3LDMyLDM3LDgxLDQ2LDM5LDM3LDExMyw5NSwxMTUsMTAxLDEwMywxMDAsMTA1LDExNCwzOSwwLDY4LDY5LDc2LDY5LDg0LDY5LDMyLDcwLDgyLDc5LDc3LDMyLDM3LDgxLDQ2LDM5LDM3LDExMyw5NSwxMDAsMTExLFxuOTksMTE1LDEwNSwxMjIsMTAxLDM5LDAsNjgsNjksNzYsNjksODQsNjksMzIsNzAsODIsNzksNzcsMzIsMzcsODEsNDYsMzksMzcsMTEzLDk1LDExNSwxMTYsOTcsMTE2LDM5LDAsODMsNjksNzYsNjksNjcsODQsMzIsMzcsMTE1LDMyLDg3LDcyLDY5LDgyLDY5LDMyLDExNCwxMTEsMTE5LDEwNSwxMDAsNjEsNjMsMCw4Myw2OSw3Niw2OSw2Nyw4NCwzMiw0MCw4Myw2OSw3Niw2OSw2Nyw4NCwzMiwxMDksOTcsMTIwLDQwLDEwNSwxMDAsMTIwLDQxLDMyLDcwLDgyLDc5LDc3LDMyLDM3LDgxLDQ2LDM5LDM3LDExMyw5NSwxMTUsMTAxLDEwMywxMDAsMTA1LDExNCwzOSwzMiw4Nyw3Miw2OSw4Miw2OSwzMiwxMDgsMTAxLDExOCwxMDEsMTA4LDMyLDYxLDMyLDYzLDQxLDMyLDQzLDMyLDQ5LDAsODIsNjksODAsNzYsNjUsNjcsNjksMzIsNzMsNzgsODQsNzksMzIsMzcsODEsNDYsMzksMzcsMTEzLDk1LDExNSwxMDEsMTAzLDEwOSwxMDEsMTEwLDExNiwxMTUsMzksNDAsOTgsMTA4LDExMSw5OSxcbjEwNywxMDUsMTAwLDQ0LDMyLDk4LDEwOCwxMTEsOTksMTA3LDQxLDMyLDg2LDY1LDc2LDg1LDY5LDgzLDQwLDYzLDQ0LDMyLDYzLDQxLDAsODMsNjksNzYsNjksNjcsODQsMzIsOTksMTExLDk3LDEwOCwxMDEsMTE1LDk5LDEwMSw0MCw0MCw4Myw2OSw3Niw2OSw2Nyw4NCwzMiwxMDksOTcsMTIwLDQwLDk4LDEwOCwxMTEsOTksMTA3LDEwNSwxMDAsNDEsMzIsNzAsODIsNzksNzcsMzIsMzcsODEsNDYsMzksMzcsMTEzLDk1LDExNSwxMDEsMTAzLDEwOSwxMDEsMTEwLDExNiwxMTUsMzksNDEsMzIsNDMsMzIsNDksNDQsMzIsNDksNDEsMCw4Miw2OSw4MCw3Niw2NSw2Nyw2OSwzMiw3Myw3OCw4NCw3OSwzMiwzNyw4MSw0NiwzOSwzNywxMTMsOTUsMTE1LDEwMSwxMDMsMTAwLDEwNSwxMTQsMzksMzIsODYsNjUsNzYsODUsNjksODMsNDAsNjMsNDQsNjMsNDQsNjMsNDQsNjMsNDQsNjMsNDQsNjMsNDEsMCw4Myw2OSw3Niw2OSw2Nyw4NCwzMiwxMDUsMTAwLDEyMCw0NCwzMiwxMTUsMTE2LFxuOTcsMTE0LDExNiw5NSw5OCwxMDgsMTExLDk5LDEwNyw0NCwzMiwxMDgsMTAxLDk3LDExOCwxMDEsMTE1LDk1LDEwMSwxMTAsMTAwLDk1LDk4LDEwOCwxMTEsOTksMTA3LDQ0LDMyLDEwMSwxMTAsMTAwLDk1LDk4LDEwOCwxMTEsOTksMTA3LDQ0LDMyLDExNCwxMTEsMTExLDExNiwzMiw3MCw4Miw3OSw3NywzMiwzNyw4MSw0NiwzOSwzNywxMTMsOTUsMTE1LDEwMSwxMDMsMTAwLDEwNSwxMTQsMzksMzIsODcsNzIsNjksODIsNjksMzIsMTA4LDEwMSwxMTgsMTAxLDEwOCwzMiw2MSwzMiw2MywzMiw3OSw4Miw2OCw2OSw4MiwzMiw2Niw4OSwzMiwxMDUsMTAwLDEyMCwzMiw2NSw4Myw2NywwLDgzLDY5LDc2LDY5LDY3LDg0LDMyLDEwNSwxMDAsMTIwLDQ0LDMyLDExNSwxMTYsOTcsMTE0LDExNiw5NSw5OCwxMDgsMTExLDk5LDEwNyw0NCwzMiwxMDgsMTAxLDk3LDExOCwxMDEsMTE1LDk1LDEwMSwxMTAsMTAwLDk1LDk4LDEwOCwxMTEsOTksMTA3LDQ0LDMyLDEwMSwxMTAsMTAwLDk1LDk4LFxuMTA4LDExMSw5OSwxMDcsNDQsMzIsMTE0LDExMSwxMTEsMTE2LDMyLDcwLDgyLDc5LDc3LDMyLDM3LDgxLDQ2LDM5LDM3LDExMyw5NSwxMTUsMTAxLDEwMywxMDAsMTA1LDExNCwzOSwzMiw4Nyw3Miw2OSw4Miw2OSwzMiwxMDgsMTAxLDExOCwxMDEsMTA4LDMyLDY2LDY5LDg0LDg3LDY5LDY5LDc4LDMyLDYzLDMyLDY1LDc4LDY4LDMyLDYzLDc5LDgyLDY4LDY5LDgyLDMyLDY2LDg5LDMyLDEwOCwxMDEsMTE4LDEwMSwxMDgsMzIsNjgsNjksODMsNjcsNDQsMzIsMTA1LDEwMCwxMjAsMzIsNjUsODMsNjcsMCw4Myw2OSw3Niw2OSw2Nyw4NCwzMiw5OSwxMTEsMTE3LDExMCwxMTYsNDAsNDIsNDEsMzIsNzAsODIsNzksNzcsMzIsMzcsODEsNDYsMzksMzcsMTEzLDk1LDExNSwxMDEsMTAzLDEwMCwxMDUsMTE0LDM5LDMyLDg3LDcyLDY5LDgyLDY5LDMyLDEwOCwxMDEsMTE4LDEwMSwxMDgsMzIsNjEsMzIsNjMsMCw4Myw2OSw3Niw2OSw2Nyw4NCwzMiwxMDksOTcsMTIwLDQwLDEwOCwxMDEsXG4xMTgsMTAxLDEwOCw0MSwzMiw3MCw4Miw3OSw3NywzMiwzNyw4MSw0NiwzOSwzNywxMTMsOTUsMTE1LDEwMSwxMDMsMTAwLDEwNSwxMTQsMzksMzIsODcsNzIsNjksODIsNjksMzIsMTA4LDEwMSwxMTgsMTAxLDEwOCwzMiw2Niw2OSw4NCw4Nyw2OSw2OSw3OCwzMiw2MywzMiw2NSw3OCw2OCwzMiw2MywwLDY4LDY5LDc2LDY5LDg0LDY5LDMyLDcwLDgyLDc5LDc3LDMyLDM3LDgxLDQ2LDM5LDM3LDExMyw5NSwxMTUsMTAxLDEwMywxMDAsMTA1LDExNCwzOSwzMiw4Nyw3Miw2OSw4Miw2OSwzMiwxMDgsMTAxLDExOCwxMDEsMTA4LDMyLDYxLDMyLDYzLDAsNjgsNjksNzYsNjksODQsNjksMzIsNzAsODIsNzksNzcsMzIsMzcsODEsNDYsMzksMzcsMTEzLDk1LDExNSwxMDEsMTAzLDEwOSwxMDEsMTEwLDExNiwxMTUsMzksMzIsODcsNzIsNjksODIsNjksMzIsOTgsMTA4LDExMSw5OSwxMDcsMTA1LDEwMCwzMiw2Niw2OSw4NCw4Nyw2OSw2OSw3OCwzMiw2MywzMiw2NSw3OCw2OCwzMiw2MyxcbjAsNzMsNzgsODMsNjksODIsODQsMzIsNzMsNzgsODQsNzksMzIsMzcsODEsNDYsMzksMzcsMTEzLDk1LDk5LDExMSwxMTAsMTE2LDEwMSwxMTAsMTE2LDM5LDMyLDg2LDY1LDc2LDg1LDY5LDgzLDQwLDM3LDExNSw0MSwwLDY4LDY5LDc2LDY5LDg0LDY5LDMyLDcwLDgyLDc5LDc3LDMyLDM3LDgxLDQ2LDM5LDM3LDExMyw5NSwxMDAsMTExLDk5LDExNSwxMDUsMTIyLDEwMSwzOSwzMiw4Nyw3Miw2OSw4Miw2OSwzMiwxMDAsMTExLDk5LDEwNSwxMDAsMzIsNjEsMzIsNjMsMCw4Miw2OSw4MCw3Niw2NSw2Nyw2OSwzMiw3Myw3OCw4NCw3OSwzMiwzNyw4MSw0NiwzOSwzNywxMTMsOTUsMTAwLDExMSw5OSwxMTUsMTA1LDEyMiwxMDEsMzksMzIsODYsNjUsNzYsODUsNjksODMsNDAsNjMsNDQsNjMsNDEsMCw4Myw2OSw3Niw2OSw2Nyw4NCwzMiwxMTUsMTA1LDEyMiwxMDEsMzIsNzAsODIsNzksNzcsMzIsMzcsODEsNDYsMzksMzcsMTEzLDk1LDEwMCwxMTEsOTksMTE1LDEwNSwxMjIsMTAxLFxuMzksMzIsODcsNzIsNjksODIsNjksMzIsMTAwLDExMSw5OSwxMDUsMTAwLDYxLDYzLDAsODMsNjksNzYsNjksNjcsODQsMzIsMTE4LDk3LDEwOCwxMTcsMTAxLDMyLDcwLDgyLDc5LDc3LDMyLDM3LDgxLDQ2LDM5LDM3LDExMyw5NSwxMTUsMTE2LDk3LDExNiwzOSwzMiw4Nyw3Miw2OSw4Miw2OSwzMiwxMDUsMTAwLDYxLDYzLDAsODIsNjksODAsNzYsNjUsNjcsNjksMzIsNzMsNzgsODQsNzksMzIsMzcsODEsNDYsMzksMzcsMTEzLDk1LDExNSwxMTYsOTcsMTE2LDM5LDMyLDg2LDY1LDc2LDg1LDY5LDgzLDQwLDYzLDQ0LDYzLDQxLDAsNjgsNjksNzYsNjksODQsNjksMzIsNzAsODIsNzksNzcsMzIsMzcsODEsNDYsMzksMzcsMTEzLDk1LDExNSwxMDEsMTAzLDEwMCwxMDUsMTE0LDM5LDMyLDg3LDcyLDY5LDgyLDY5LDMyLDEwOCwxMDEsMTE4LDEwMSwxMDgsMzIsNjYsNjksODQsODcsNjksNjksNzgsMzIsNjMsMzIsNjUsNzgsNjgsMzIsNjMsMCw4Myw2OSw3Niw2OSw2Nyw4NCwzMiw2MyxcbjMyLDg1LDc4LDczLDc5LDc4LDMyLDgzLDY5LDc2LDY5LDY3LDg0LDMyLDEwOCwxMDEsMTE4LDEwMSwxMDgsMzIsNDcsMzIsNDAsNDksNDgsNTAsNTIsMzIsNDIsMzIsNjMsNDEsMzIsNzAsODIsNzksNzcsMzIsMzcsODEsNDYsMzksMzcsMTEzLDk1LDExNSwxMDEsMTAzLDEwMCwxMDUsMTE0LDM5LDAsODMsNjksNzYsNjksNjcsODQsMzIsMTA4LDEwMSwxMTgsMTAxLDEwOCw0NCwzMiw5OSwxMTEsMTE3LDExMCwxMTYsNDAsNDIsNDEsMzIsNjUsODMsMzIsOTksMTEwLDExNiwzMiw3MCw4Miw3OSw3NywzMiwzNyw4MSw0NiwzOSwzNywxMTMsOTUsMTE1LDEwMSwxMDMsMTAwLDEwNSwxMTQsMzksMzIsMzIsMzIsNzEsODIsNzksODUsODAsMzIsNjYsODksMzIsMTA4LDEwMSwxMTgsMTAxLDEwOCwzMiw3Miw2NSw4Niw3Myw3OCw3MSwzMiw5OSwxMTAsMTE2LDYyLDYxLDYzLDMyLDMyLDc5LDgyLDY4LDY5LDgyLDMyLDY2LDg5LDMyLDQwLDEwOCwxMDEsMTE4LDEwMSwxMDgsMzIsMzcsMzcsMzIsXG40OSw0OCw1MCw1Miw0MSwzMiw2NSw4Myw2NywzMiw3Niw3Myw3Nyw3Myw4NCwzMiw0OSwwLDgzLDY5LDc2LDY5LDY3LDg0LDMyLDUwLDMyLDQyLDMyLDExNiwxMTEsMTE2LDk3LDEwOCw0MCw0OSwzMiw0MywzMiwxMDgsMTAxLDk3LDExOCwxMDEsMTE1LDk1LDEwMSwxMTAsMTAwLDk1LDk4LDEwOCwxMTEsOTksMTA3LDMyLDQ1LDMyLDExNSwxMTYsOTcsMTE0LDExNiw5NSw5OCwxMDgsMTExLDk5LDEwNyw0MSwzMiwzMiwzMiw3MCw4Miw3OSw3NywzMiwzNyw4MSw0NiwzOSwzNywxMTMsOTUsMTE1LDEwMSwxMDMsMTAwLDEwNSwxMTQsMzksMzIsODcsNzIsNjksODIsNjksMzIsMTA4LDEwMSwxMTgsMTAxLDEwOCwzMiw2MSwzMiw2MywzMiw2NSw3OCw2OCwzMiwxMDUsMTAwLDEyMCwzMiw2MCwzMiw2MywwLDY4LDY5LDc2LDY5LDg0LDY5LDMyLDcwLDgyLDc5LDc3LDMyLDM3LDgxLDQ2LDM5LDM3LDExMyw5NSwxMTUsMTAxLDEwMywxMDAsMTA1LDExNCwzOSwzMiw4Nyw3Miw2OSw4Miw2OSxcbjMyLDEwOCwxMDEsMTE4LDEwMSwxMDgsMzIsNjEsMzIsNjMsMzIsNjUsNzgsNjgsMzIsMTA1LDEwMCwxMjAsMzIsNjEsMzIsNjMsMCw4NSw4MCw2OCw2NSw4NCw2OSwzMiwzNyw4MSw0NiwzOSwzNywxMTMsOTUsMTE1LDEwMSwxMDMsMTAwLDEwNSwxMTQsMzksMzIsODMsNjksODQsMzIsMTA1LDEwMCwxMjAsMzIsNjEsMzIsNjMsMzIsODcsNzIsNjksODIsNjksMzIsMTA4LDEwMSwxMTgsMTAxLDEwOCw2MSw2MywzMiw2NSw3OCw2OCwzMiwxMDUsMTAwLDEyMCw2MSw2MywwLDgzLDY5LDc2LDY5LDY3LDg0LDMyLDEwNSwxMDAsMTIwLDQ0LDMyLDExNSwxMTYsOTcsMTE0LDExNiw5NSw5OCwxMDgsMTExLDk5LDEwNyw0NCwzMiwxMDgsMTAxLDk3LDExOCwxMDEsMTE1LDk1LDEwMSwxMTAsMTAwLDk1LDk4LDEwOCwxMTEsOTksMTA3LDQ0LDMyLDEwMSwxMTAsMTAwLDk1LDk4LDEwOCwxMTEsOTksMTA3LDQ0LDMyLDExNCwxMTEsMTExLDExNiwzMiw3MCw4Miw3OSw3NywzMiwzNyw4MSw0NiwzOSxcbjM3LDExMyw5NSwxMTUsMTAxLDEwMywxMDAsMTA1LDExNCwzOSwzMiw4Nyw3Miw2OSw4Miw2OSwzMiwxMDgsMTAxLDExOCwxMDEsMTA4LDMyLDYxLDMyLDYzLDMyLDY1LDc4LDY4LDMyLDEwNSwxMDAsMTIwLDMyLDYxLDMyLDYzLDAsODUsODAsNjgsNjUsODQsNjksMzIsMzcsODEsNDYsMzksMzcsMTEzLDk1LDExNSwxMDEsMTAzLDEwMCwxMDUsMTE0LDM5LDMyLDgzLDY5LDg0LDMyLDExNSwxMTYsOTcsMTE0LDExNiw5NSw5OCwxMDgsMTExLDk5LDEwNywzMiw2MSwzMiw2Myw0NCwzMiwxMTQsMTExLDExMSwxMTYsMzIsNjEsMzIsNjMsODcsNzIsNjksODIsNjksMzIsMTA4LDEwMSwxMTgsMTAxLDEwOCwzMiw2MSwzMiw2MywzMiw2NSw3OCw2OCwzMiwxMDUsMTAwLDEyMCwzMiw2MSwzMiw2MywwLDgzLDY5LDc2LDY5LDY3LDg0LDMyLDQ5LDMyLDcwLDgyLDc5LDc3LDMyLDM3LDgxLDQ2LDM5LDM3LDExMyw5NSwxMTUsMTAxLDEwMywxMDksMTAxLDExMCwxMTYsMTE1LDM5LDMyLDg3LDcyLFxuNjksODIsNjksMzIsOTgsMTA4LDExMSw5OSwxMDcsMTA1LDEwMCw2MSw2MywzMiw2NSw3OCw2OCwzMiw5OCwxMDgsMTExLDk5LDEwNywzMiw3Myw4MywzMiw3OCw4NSw3Niw3NiwwLDgzLDY5LDc2LDY5LDY3LDg0LDMyLDEwNSwxMDAsMTIwLDMyLDcwLDgyLDc5LDc3LDMyLDM3LDgxLDQ2LDM5LDM3LDExMyw5NSwxMTUsMTAxLDEwMywxMDAsMTA1LDExNCwzOSwzMiw4Nyw3Miw2OSw4Miw2OSwzMiwxMDgsMTAxLDExOCwxMDEsMTA4LDYxLDYzLDMyLDc5LDgyLDY4LDY5LDgyLDMyLDY2LDg5LDMyLDQ5LDMyLDY1LDgzLDY3LDAsODMsNjksNzYsNjksNjcsODQsMzIsMTA5LDk3LDEyMCw0MCwzMiwxMDgsMTAxLDExOCwxMDEsMTA4LDMyLDM3LDM3LDMyLDQ5LDQ4LDUwLDUyLDMyLDQxLDMyLDcwLDgyLDc5LDc3LDMyLDM3LDgxLDQ2LDM5LDM3LDExMyw5NSwxMTUsMTAxLDEwMywxMDAsMTA1LDExNCwzOSwwLDgzLDY5LDc2LDY5LDY3LDg0LDMyLDEwOCwxMDEsMTE4LDEwMSwxMDgsNDQsMzIsXG4xMDUsMTAwLDEyMCw0NCwzMiwxMDEsMTEwLDEwMCw5NSw5OCwxMDgsMTExLDk5LDEwNywzMiw3MCw4Miw3OSw3NywzMiwzNyw4MSw0NiwzOSwzNywxMTMsOTUsMTE1LDEwMSwxMDMsMTAwLDEwNSwxMTQsMzksMzIsODcsNzIsNjksODIsNjksMzIsMTA4LDEwMSwxMTgsMTAxLDEwOCwzMiw2Niw2OSw4NCw4Nyw2OSw2OSw3OCwzMiw2MywzMiw2NSw3OCw2OCwzMiw2MywzMiw3OSw4Miw2OCw2OSw4MiwzMiw2Niw4OSwzMiwxMDgsMTAxLDExOCwxMDEsMTA4LDMyLDY4LDY5LDgzLDY3LDQ0LDMyLDEwNSwxMDAsMTIwLDMyLDY1LDgzLDY3LDAsODUsODAsNjgsNjUsODQsNjksMzIsNzksODIsMzIsNzAsNjUsNzMsNzYsMzIsMzcsODEsNDYsMzksMzcsMTEzLDk1LDExNSwxMDEsMTAzLDEwMCwxMDUsMTE0LDM5LDMyLDgzLDY5LDg0LDMyLDEwOCwxMDEsMTE4LDEwMSwxMDgsNjEsNDUsNDksNDQsMTA1LDEwMCwxMjAsNjEsNjMsMzIsODcsNzIsNjksODIsNjksMzIsMTA4LDEwMSwxMTgsMTAxLDEwOCxcbjYxLDYzLDMyLDY1LDc4LDY4LDMyLDEwNSwxMDAsMTIwLDYxLDYzLDAsODUsODAsNjgsNjUsODQsNjksMzIsNzksODIsMzIsNzAsNjUsNzMsNzYsMzIsMzcsODEsNDYsMzksMzcsMTEzLDk1LDExNSwxMDEsMTAzLDEwMCwxMDUsMTE0LDM5LDMyLDgzLDY5LDg0LDMyLDEwOCwxMDEsMTE4LDEwMSwxMDgsNjEsNjMsMzIsODcsNzIsNjksODIsNjksMzIsMTA4LDEwMSwxMTgsMTAxLDEwOCw2MSw0NSw0OSwwLDM3LDEwOCwxMDgsMTAwLDMyLDM3LDEwOCwxMDgsMTAwLDAsMzcsMTE1LDk1LDExNSwxMDEsMTAzLDEwOSwxMDEsMTEwLDExNiwxMTUsMCw5OCwxMDgsMTExLDk5LDEwNywwLDgzLDY5LDc2LDY5LDY3LDg0LDMyLDQ5LDMyLDcwLDgyLDc5LDc3LDMyLDM3LDgxLDQ2LDExNSwxMTMsMTA4LDEwNSwxMTYsMTAxLDk1LDEwOSw5NywxMTUsMTE2LDEwMSwxMTQsMzIsODcsNzIsNjksODIsNjksMzIsMTE2LDk4LDEwOCw5NSwxMTAsOTcsMTA5LDEwMSw2MSwzOSwzNywxMTMsOTUsMTE1LDExNixcbjk3LDExNiwzOSwwLDExMiw5OSwxMjAsMCw4Myw2OSw3Niw2OSw2Nyw4NCwzMiwzNywxMTUsMzIsODcsNzIsNjksODIsNjksMzIsMTE0LDExMSwxMTksMTA1LDEwMCwzMiw2MSwzMiw2MywwLDExNywxMTAsMTE0LDEwMSw5OSwxMTEsMTAzLDExMCwxMDUsMTIyLDEwMSwxMDAsMzIsMTA5LDk3LDExNiw5OSwxMDQsMTA1LDExMCwxMDIsMTExLDMyLDExNCwxMDEsMTEzLDExNywxMDEsMTE1LDExNiw1OCwzMiwzNyw5OSwwLDEwNSwxMDgsMTA4LDEwMSwxMDMsOTcsMTA4LDMyLDEwMiwxMDUsMTE0LDExNSwxMTYsMzIsOTcsMTE0LDEwMywxMTcsMTA5LDEwMSwxMTAsMTE2LDMyLDExNiwxMTEsMzIsMzcsMTE1LDAsNzMsMTEwLDEwMCwxMDEsMTIwLDMyLDExMSwxMTIsMTE2LDEwNSwxMDksMTA1LDEyMiwxMDEsMTAwLDAsNzMsMTEwLDEwMCwxMDEsMTIwLDMyLDk3LDEwOCwxMTQsMTAxLDk3LDEwMCwxMjEsMzIsMTExLDExMiwxMTYsMTA1LDEwOSw5NywxMDgsMCw4Myw2NSw4Niw2OSw4MCw3OSxcbjczLDc4LDg0LDMyLDEwMiwxMTYsMTE1LDUxLDAsODIsNjksNzYsNjksNjUsODMsNjksMzIsMTAyLDExNiwxMTUsNTEsMCw4Miw3OSw3Niw3Niw2Niw2NSw2Nyw3NSwzMiw4NCw3OSwzMiwxMDIsMTE2LDExNSw1MSwwLDM3LDEwMCwzMiwzNywxMDAsMzIsMzcsMTAwLDMyLDM3LDEwMCwzMiwwLDYwLDk4LDYyLDAsNjAsNDcsOTgsNjIsMCw2MCw5OCw2Miw0Niw0Niw0Niw2MCw0Nyw5OCw2MiwwLDExOSwxMTQsMTExLDExMCwxMDMsMzIsMTEwLDExNywxMDksOTgsMTAxLDExNCwzMiwxMTEsMTAyLDMyLDk3LDExNCwxMDMsMTE3LDEwOSwxMDEsMTEwLDExNiwxMTUsMzIsMTE2LDExMSwzMiwxMDIsMTE3LDExMCw5OSwxMTYsMTA1LDExMSwxMTAsMzIsMTE1LDExMCwxMDUsMTEyLDExMiwxMDEsMTE2LDQwLDQxLDAsMTE0LDEwMSw5OCwxMTcsMTA1LDEwOCwxMDAsMCwxMDUsMTEwLDExNiwxMDEsMTAzLDExNCwxMDUsMTE2LDEyMSw0NSw5OSwxMDQsMTAxLDk5LDEwNywwLDEwOSwxMDEsMTE0LFxuMTAzLDEwMSw2MSwwLDk3LDExNywxMTYsMTExLDEwOSwxMDEsMTE0LDEwMywxMDEsNjEsMCw2Nyw4Miw2OSw2NSw4NCw2OSwzMiw4NCw2NSw2Niw3Niw2OSwzMiw3Myw3MCwzMiw3OCw3OSw4NCwzMiw2OSw4OCw3Myw4Myw4NCw4MywzMiwzNyw4MSw0NiwzOSwzNywxMTMsOTUsMTE1LDExNiw5NywxMTYsMzksNDAsMTA1LDEwMCwzMiw3Myw3OCw4NCw2OSw3MSw2OSw4MiwzMiw4MCw4Miw3Myw3Nyw2NSw4Miw4OSwzMiw3NSw2OSw4OSw0NCwzMiwxMTgsOTcsMTA4LDExNywxMDEsMzIsNjYsNzYsNzksNjYsNDEsNTksMCw4Myw2OSw3Niw2OSw2Nyw4NCwzMiwzNywxMTUsMCw2OCw2OSw4Myw2NywwLDY1LDgzLDY3LDAsODMsNjksNzYsNjksNjcsODQsMzIsMzcsMTE1LDMyLDg3LDcyLDY5LDgyLDY5LDMyLDExNCwxMTEsMTE5LDEwNSwxMDAsMzIsNjYsNjksODQsODcsNjksNjksNzgsMzIsMzcsMTA4LDEwOCwxMDAsMzIsNjUsNzgsNjgsMzIsMzcsMTA4LDEwOCwxMDAsMzIsNzksODIsNjgsXG42OSw4MiwzMiw2Niw4OSwzMiwxMTQsMTExLDExOSwxMDUsMTAwLDMyLDM3LDExNSwwLDgzLDY5LDc2LDY5LDY3LDg0LDMyLDM3LDExNSwzMiw3OSw4Miw2OCw2OSw4MiwzMiw2Niw4OSwzMiwxMTQsMTExLDExOSwxMDUsMTAwLDMyLDM3LDExNSwwLDcwLDg0LDgzLDMyLDEwMSwxMjAsMTEyLDExNCwxMDEsMTE1LDExNSwxMDUsMTExLDExMCwzMiwxMTYsMTE0LDEwMSwxMDEsMzIsMTA1LDExNSwzMiwxMTYsMTExLDExMSwzMiwxMDgsOTcsMTE0LDEwMywxMDEsMzIsNDAsMTA5LDk3LDEyMCwxMDUsMTA5LDExNywxMDksMzIsMTAwLDEwMSwxMTIsMTE2LDEwNCwzMiwzNywxMDAsNDEsMCwxMDksOTcsMTA4LDEwMiwxMTEsMTE0LDEwOSwxMDEsMTAwLDMyLDc3LDY1LDg0LDY3LDcyLDMyLDEwMSwxMjAsMTEyLDExNCwxMDEsMTE1LDExNSwxMDUsMTExLDExMCw1OCwzMiw5MSwzNywxMTUsOTMsMCw3OSw4MiwwLDY1LDc4LDY4LDAsNzgsNzksODQsMCw3OCw2OSw2NSw4MiwwLDY4LDgyLDc5LDgwLFxuMzIsODQsNjUsNjYsNzYsNjksMzIsNzMsNzAsMzIsNjksODgsNzMsODMsODQsODMsMzIsMzcsODEsNDYsMzksMzcsMTEzLDk1LDk5LDExMSwxMTAsMTE2LDEwMSwxMTAsMTE2LDM5LDAsNjgsODIsNzksODAsMzIsODQsNjUsNjYsNzYsNjksMzIsNzMsNzAsMzIsNjksODgsNzMsODMsODQsODMsMzIsMzcsODEsNDYsMzksMzcsMTEzLDk1LDExNSwxMDEsMTAzLDEwOSwxMDEsMTEwLDExNiwxMTUsMzksMCw2OCw4Miw3OSw4MCwzMiw4NCw2NSw2Niw3Niw2OSwzMiw3Myw3MCwzMiw2OSw4OCw3Myw4Myw4NCw4MywzMiwzNyw4MSw0NiwzOSwzNywxMTMsOTUsMTE1LDEwMSwxMDMsMTAwLDEwNSwxMTQsMzksMCw2OCw4Miw3OSw4MCwzMiw4NCw2NSw2Niw3Niw2OSwzMiw3Myw3MCwzMiw2OSw4OCw3Myw4Myw4NCw4MywzMiwzNyw4MSw0NiwzOSwzNywxMTMsOTUsMTAwLDExMSw5OSwxMTUsMTA1LDEyMiwxMDEsMzksMCw2OCw4Miw3OSw4MCwzMiw4NCw2NSw2Niw3Niw2OSwzMiw3Myw3MCwzMiw2OSxcbjg4LDczLDgzLDg0LDgzLDMyLDM3LDgxLDQ2LDM5LDM3LDExMyw5NSwxMTUsMTE2LDk3LDExNiwzOSwwLDExNiwxMTEsMTA3LDEwMSwxMTAsMTA1LDEyMiwxMDEsMCwxMTcsMTEwLDExNCwxMDEsOTksMTExLDEwMywxMTAsMTA1LDEyMiwxMDEsMTAwLDMyLDExMiw5NywxMTQsOTcsMTA5LDEwMSwxMTYsMTAxLDExNCw1OCwzMiwzNywxMTUsMCwxMTcsMTEwLDExNCwxMDEsOTksMTExLDEwMywxMTAsMTA1LDEyMiwxMDEsMTAwLDMyLDEwOSw5NywxMTYsOTksMTA0LDEwNSwxMTAsMTAyLDExMSw1OCwzMiwzNywxMTUsMCw5NywxMTUsOTksMCwxMDAsMTAxLDExNSw5OSwwLDExNywxMTAsMTE0LDEwMSw5OSwxMTEsMTAzLDExMCwxMDUsMTIyLDEwMSwxMDAsMzIsMTExLDExNCwxMDAsMTAxLDExNCw1OCwzMiwzNywxMTUsMCw5OSwxMTEsMTEwLDExNiwxMDEsMTEwLDExNiwwLDEwMSwxMTQsMTE0LDExMSwxMTQsMzIsMTEyLDk3LDExNCwxMTUsMTA1LDExMCwxMDMsMzIsMTEyLDExNCwxMDEsMTAyLFxuMTA1LDEyMCwzMiwxMTIsOTcsMTE0LDk3LDEwOSwxMDEsMTE2LDEwMSwxMTQsNTgsMzIsMzcsMTE1LDAsMTEwLDExMSwzMiwxMTUsMTE3LDk5LDEwNCwzMiw5OSwxMTEsMTA4LDExNywxMDksMTEwLDU4LDMyLDM3LDExNSwwLDk5LDExMSwxMDksMTEyLDExNCwxMDEsMTE1LDExNSwwLDExNywxMTAsOTksMTExLDEwOSwxMTIsMTE0LDEwMSwxMTUsMTE1LDAsMTA5LDEwNSwxMTUsMTE1LDEwNSwxMTAsMTAzLDMyLDM3LDExNSwzMiwxMTIsOTcsMTE0LDk3LDEwOSwxMDEsMTE2LDEwMSwxMTQsMzIsMTA1LDExMCwzMiwxMDIsMTE2LDExNSw1MiwzMiw5OSwxMTEsMTEwLDExNSwxMTYsMTE0LDExNyw5OSwxMTYsMTExLDExNCwwLDk1LDk1LDEwOCw5NywxMTAsMTAzLDEwNSwxMDAsMCwzNyw4MSw0NCwzMiwwLDM3LDEyMiwzNyw4MSw0NCwzMiwwLDY3LDgyLDY5LDY1LDg0LDY5LDMyLDg0LDY1LDY2LDc2LDY5LDMyLDEyMCw0MCwzNywxMTUsMzIsMzcsODEsMzIsNzIsNzMsNjgsNjgsNjksNzgsXG40NCwzMiwxMDAsMTExLDk5LDEwNSwxMDAsMzIsNzIsNzMsNjgsNjgsNjksNzgsNDQsMzIsMzcsODEsMzIsNzIsNzMsNjgsNjgsNjksNzgsNDEsMCw4MCw4Miw2NSw3MSw3Nyw2NSwzMiwzNyw4MSw0NiwxMTIsOTcsMTAzLDEwMSw5NSwxMTUsMTA1LDEyMiwxMDEsMCwxMDAsMTExLDk5LDEwNSwxMDAsMzIsNzMsNzgsODQsNjksNzEsNjksODIsMzIsODAsODIsNzMsNzcsNjUsODIsODksMzIsNzUsNjksODksMCwzNywxMjIsNDQsMzIsMzksOTksMzcsMTAwLDM3LDExMywzOSwwLDM3LDEyMiw0NCwzMiwxMDgsOTcsMTEwLDEwMywxMDUsMTAwLDAsNjcsODIsNjksNjUsODQsNjksMzIsODQsNjUsNjYsNzYsNjksMzIsMzcsODEsNDYsMzksMzcsMTEzLDk1LDk5LDExMSwxMTAsMTE2LDEwMSwxMTAsMTE2LDM5LDQwLDM3LDExNSw0MSwwLDY3LDgyLDY5LDY1LDg0LDY5LDMyLDg0LDY1LDY2LDc2LDY5LDMyLDM3LDgxLDQ2LDM5LDM3LDExMyw5NSwxMTUsMTAxLDEwMywxMDksMTAxLDExMCwxMTYsXG4xMTUsMzksNDAsOTgsMTA4LDExMSw5OSwxMDcsMTA1LDEwMCwzMiw3Myw3OCw4NCw2OSw3MSw2OSw4MiwzMiw4MCw4Miw3Myw3Nyw2NSw4Miw4OSwzMiw3NSw2OSw4OSw0NCwzMiw5OCwxMDgsMTExLDk5LDEwNywzMiw2Niw3Niw3OSw2Niw0MSw1OSwwLDY3LDgyLDY5LDY1LDg0LDY5LDMyLDg0LDY1LDY2LDc2LDY5LDMyLDM3LDgxLDQ2LDM5LDM3LDExMyw5NSwxMTUsMTAxLDEwMywxMDAsMTA1LDExNCwzOSw0MCwxMDgsMTAxLDExOCwxMDEsMTA4LDMyLDczLDc4LDg0LDY5LDcxLDY5LDgyLDQ0LDEwNSwxMDAsMTIwLDMyLDczLDc4LDg0LDY5LDcxLDY5LDgyLDQ0LDExNSwxMTYsOTcsMTE0LDExNiw5NSw5OCwxMDgsMTExLDk5LDEwNywzMiw3Myw3OCw4NCw2OSw3MSw2OSw4Miw0NCwxMDgsMTAxLDk3LDExOCwxMDEsMTE1LDk1LDEwMSwxMTAsMTAwLDk1LDk4LDEwOCwxMTEsOTksMTA3LDMyLDczLDc4LDg0LDY5LDcxLDY5LDgyLDQ0LDEwMSwxMTAsMTAwLDk1LDk4LDEwOCwxMTEsOTksXG4xMDcsMzIsNzMsNzgsODQsNjksNzEsNjksODIsNDQsMTE0LDExMSwxMTEsMTE2LDMyLDY2LDc2LDc5LDY2LDQ0LDgwLDgyLDczLDc3LDY1LDgyLDg5LDMyLDc1LDY5LDg5LDQwLDEwOCwxMDEsMTE4LDEwMSwxMDgsNDQsMzIsMTA1LDEwMCwxMjAsNDEsNDEsNTksMCw2Nyw4Miw2OSw2NSw4NCw2OSwzMiw4NCw2NSw2Niw3Niw2OSwzMiwzNyw4MSw0NiwzOSwzNywxMTMsOTUsMTAwLDExMSw5OSwxMTUsMTA1LDEyMiwxMDEsMzksNDAsMTAwLDExMSw5OSwxMDUsMTAwLDMyLDczLDc4LDg0LDY5LDcxLDY5LDgyLDMyLDgwLDgyLDczLDc3LDY1LDgyLDg5LDMyLDc1LDY5LDg5LDQ0LDMyLDExNSwxMDUsMTIyLDEwMSwzMiw2Niw3Niw3OSw2Niw0MSw1OSwwLDQ0LDM3LDExNSw0MCw2Myw0MSwwLDQ0LDMyLDYzLDAsMzcsMTE1LDM3LDExNSwwLDEwMCwxMTEsOTksMTA1LDEwMCwwLDQ0LDM3LDExNSw0MCwxMjAsNDYsMzksOTksMzcsMTAwLDM3LDExMywzOSw0MSwwLDQ0LDMyLDEyMCw0NiwzNyxcbjgxLDAsMTA4LDk3LDExMCwxMDMsMTA1LDEwMCwwLDExNCwxMTEsMTE5LDEwNSwxMDAsMCw0NCwzMiwxMjAsNDYsMzksMzcsMTEzLDM5LDAsOTUsOTksMTExLDExMCwxMTYsMTAxLDExMCwxMTYsMCwzMiw3MCw4Miw3OSw3NywzMiwzOSwzNywxMTMsMzksNDYsMzksMzcsMTEzLDM3LDExNSwzOSwzMiw2NSw4MywzMiwxMjAsMCw4Myw2OSw3Niw2OSw2Nyw4NCwzMiw0MiwzMiw3MCw4Miw3OSw3NywzMiwzNyw4MSw0NiwzNyw4MSwwLDExMiwxMTQsMTAxLDEwMiwxMDUsMTIwLDAsMTExLDExNCwxMDAsMTAxLDExNCwwLDEwOCw5NywxMTAsMTAzLDExNyw5NywxMDMsMTAxLDEwNSwxMDAsMCwxMTAsMTExLDExNiwxMDUsMTEwLDEwMCwxMDEsMTIwLDEwMSwxMDAsMCwxMTcsMTEwLDEwNywxMTAsMTExLDExOSwxMTAsMzIsMTE2LDExMSwxMDcsMTAxLDExMCwxMDUsMTIyLDEwMSwxMTQsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCxcbjAsMCwwLDAsMCwwLDEsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDEsMSwxLDEsMSwxLDEsMSwxLDEsMCwwLDAsMCwwLDAsMCwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMCwwLDAsMCwxLDAsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDAsMCwwLDAsMCw5NywxMTQsMTAzLDExNywxMDksMTAxLDExMCwxMTYsMzIsMTE2LDEyMSwxMTIsMTAxLDMyLDEwOSwxMDUsMTE1LDEwOSw5NywxMTYsOTksMTA0LDAsMTExLDExNywxMTYsMzIsMTExLDEwMiwzMiwxMDksMTAxLDEwOSwxMTEsMTE0LDEyMSwwLDEwMiwxMTYsMTE1LDUxLDExNiwxMTEsMTA3LDEwMSwxMTAsMTA1LDEyMiwxMDEsMzIsMTAwLDEwNSwxMTUsOTcsOTgsMTA4LDEwMSwxMDAsMCwxLDEsMSwxLDEsMSwxLDEsMSwxLDAsMCwwLDAsMCwwLDAsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLFxuMCwwLDAsMCwxLDAsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDAsMCwwLDAsMCwxMTUsMTAxLDExNSwxMTUsMCwxMTUsMTE1LDAsMTE1LDEwMSwxMDUsMCwxMDUsMCwxMDAsMTAxLDEwMSwwLDEwMSwxMDEsMCwxMDMsMTEwLDEwNSwwLDEwMCwxMDEsMCwxMTYsOTcsMCw5NywxMTYsMTAxLDAsMTA4LDk4LDAsOTgsMTA4LDEwMSwwLDEyMiwxMDUsMCwxMDUsMTIyLDEwMSwwLDEwOCw5NywxMTAsMTExLDEwNSwxMTYsOTcsMCwxMDgsOTcsMTEwLDExMSwxMDUsMTE2LDAsMTE2LDEwNSwxMTEsMTEwLDAsMTA1LDk5LDExMCwxMDEsMCwxMDEsMTEwLDk5LDEwMSwwLDEwNSw5OSwxMTAsOTcsMCw5NywxMTAsOTksMTAxLDAsMTE0LDEwMSwxMjIsMTA1LDAsMTA1LDEwMywxMTEsMTA4LDAsMTA4LDExMSwxMDMsMCwxMDUsMTA4LDk4LDAsMTA1LDEwOCwxMDgsOTcsMCw5NywxMDgsMCwxMDUsMTA4LDExNiwxMTAsMTAxLDAsMTAxLDExMCwxMTYsMCwxMDUsXG4xMDgsMTAxLDAsMTAxLDAsMTA1LDEwOCwxMTUsMTE3LDExMSwwLDExMSwxMTcsMTE1LDAsMTEwLDExMSwxMDUsMTE2LDk3LDEyMiwxMDUsMCwxMTAsMTExLDEwNSwxMTYsOTcsMCwxMTQsMTExLDExNiw5NywwLDEwOSwxMTUsMTA1LDEwOCw5NywwLDExNSwxMTUsMTAxLDExMCwxMDEsMTE4LDEwNSwwLDEwNSwxMTgsMTAxLDAsMTE1LDExNSwxMDEsMTEwLDEwOCwxMTcsMTAyLDAsMTAyLDExNywxMDgsMCwxMTUsMTE1LDEwMSwxMTAsMTE1LDExNywxMTEsMCwxMDUsMTE2LDEwNSwxMDgsOTcsMCwxMDUsMTE2LDEwNSwxMTgsMTA1LDAsMTA1LDExNiwxMDUsMTA4LDEwNSw5OCwwLDEwMSwxMTYsOTcsOTksMTA1LDAsMTA1LDk5LDAsMTAxLDExOCwxMDUsMTE2LDk3LDAsMTAxLDEyMiwxMDUsMTA4LDk3LDAsMTA1LDExNiwxMDUsOTksMTA1LDAsMTA4LDk3LDk5LDEwNSwwLDEwOCwxMTcsMTAyLDAsMTE1LDExNSwxMDEsMTEwLDAsMTE2LDExMCwxMDEsMTA5LDEwMSwwLDExNiwxMTAsMTAxLDEwOSxcbjAsMTE2LDExMCwxMDEsMCwxMTAsMTExLDEwNSwwLDEwMSwxMTYsOTcsMCwxMDUsMTE2LDEwNSwwLDAsMSwxLDEsMCwxLDEsMSwwLDEsMSwxLDEsMSwwLDEsMSwxLDEsMSwwLDEsMSwxLDIsMSwxMDIsMTE2LDExNSw1Miw5NywxMTcsMTIwLDAsNDIsMCw2Nyw4Miw2OSw2NSw4NCw2OSwzMiw4NCw2NSw2Niw3Niw2OSwzMiwxMjAsNDAsMTE2LDEwMSwxMTQsMTA5LDQ0LDMyLDk5LDExMSwxMDgsNDQsMzIsMTAwLDExMSw5OSwxMTcsMTA5LDEwMSwxMTAsMTE2LDExNSw0NCwzMiwxMTEsOTksOTksMTE3LDExNCwxMTQsMTAxLDExMCw5OSwxMDEsMTE1LDQ0LDMyLDEwOCw5NywxMTAsMTAzLDExNyw5NywxMDMsMTAxLDEwNSwxMDAsMzIsNzIsNzMsNjgsNjgsNjksNzgsNDEsMCwxMDUsMTEwLDExOCw5NywxMDgsMTA1LDEwMCwzMiw5NywxMTQsMTAzLDExNywxMDksMTAxLDExMCwxMTYsMTE1LDMyLDExNiwxMTEsMzIsMTAyLDExNiwxMTUsNTIsOTcsMTE3LDEyMCwzMiw5OSwxMTEsMTEwLDExNSxcbjExNiwxMTQsMTE3LDk5LDExNiwxMTEsMTE0LDAsMCwxLDIsMyw0LDUsNiw3LDgsOSwxMCwxMSwxMiwxMywxNCwxNSwxNiwxNywxOCwxOSwyMCwyMSwyMiwyMywyNCwyNSwyNiwyNywyOCwyOSwzMCwzMSwwLDEsMiwzLDQsNSw2LDcsOCw5LDEwLDExLDEyLDEzLDE0LDE1LDAsMSwyLDMsNCw1LDYsNywwLDEsMiwzLDAsMSwwLDAsMCw5Nyw5OSwxMDEsMTA1LDExMCwxMTEsMTE3LDEyMSwxMjEsOTcsOTksMTAwLDEwMSwxMDEsMTAzLDEwNCwxMDUsMTA2LDEwNywxMDgsMTEwLDExMSwxMTQsMTE1LDExNiwxMTcsMTE3LDExOSwxMjEsMTIyLDExMSwxMTcsOTcsMTA1LDExMSwxMTcsMTAzLDEwNywxMTEsMTA2LDEwMywxMTAsOTcsMTAxLDEwNSwxMTEsMTE0LDExNywxMTUsMTE2LDEwNCw5NywxMDEsMTExLDEyMSwwLDAsMCwwLDAsMCwwLDAsOTcsOTgsMTAwLDEwMCwxMDEsMTAyLDEwMywxMDQsMTA0LDEwNSwxMDcsMTA4LDEwOCwxMDksMTEwLDExMiwxMTQsMTE0LDExNSwxMTYsMTE3LDExOCxcbjExOSwxMTksMTIwLDEyMSwxMjIsMTA0LDExNiwxMTksMTIxLDk3LDEwMSwxMDUsMTExLDExNywxMjEsMTE0LDEwMSwxMDksMTExLDExOCwxMDEsOTUsMTAwLDEwNSw5Nyw5OSwxMTQsMTA1LDExNiwxMDUsOTksMTE1LDYxLDQ5LDAsMTE0LDEwMSwxMDksMTExLDExOCwxMDEsOTUsMTAwLDEwNSw5Nyw5OSwxMTQsMTA1LDExNiwxMDUsOTksMTE1LDYxLDQ4LDAsMTE2LDExMSwxMDcsMTAxLDExMCw5OSwxMDQsOTcsMTE0LDExNSw2MSwwLDExNSwxMDEsMTEyLDk3LDExNCw5NywxMTYsMTExLDExNCwxMTUsNjEsMCw5NywxMTcsMTE2LDExMSwxMDksOTcsMTE2LDEwNSw5OSwzMiwxMDEsMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCwzMiwxMDgsMTExLDk3LDEwMCwxMDUsMTEwLDEwMywzMiwxMDIsOTcsMTA1LDEwOCwxMDEsMTAwLDU4LDMyLDM3LDExNSwwLDc3LDY1LDg0LDY3LDcyLDAsNTgsMTA5LDEwMSwxMDksMTExLDExNCwxMjEsNTgsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLFxuMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMTE0LDEwMSw5OSwxMTEsMTE4LDEwMSwxMTQsMTAxLDEwMCwzMiwzNywxMDAsMzIsMTEyLDk3LDEwMywxMDEsMTE1LDMyLDEwMiwxMTQsMTExLDEwOSwzMiwzNywxMTUsMCwyMTcsMjEzLDUsMjQ5LDMyLDE2MSw5OSwyMTUsOTksOTcsMTEwLDExMCwxMTEsMTE2LDMyLDEwOCwxMDUsMTA5LDEwNSwxMTYsMzIsODcsNjUsNzYsMzIsMTE1LDEwNSwxMjIsMTAxLDU4LDMyLDM3LDExNSwwLDk5LDk3LDExMCwxMTAsMTExLDExNiwzMiwxMTEsMTEyLDEwMSwxMTAsMzIsMTAyLDEwNSwxMDgsMTAxLDAsMTE0LDEwMSw5OSwxMTEsMTE4LDEwMSwxMTQsMTAxLDEwMCwzMiwzNywxMDAsMzIsMTAyLDExNCw5NywxMDksMTAxLDExNSwzMiwxMDIsMTE0LDExMSwxMDksMzIsODcsNjUsNzYsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDM3LDExNSwwLDQ1LDEwNiwxMTEsMTE3LDExNCwxMTAsOTcsMTA4LDAsMCw0NSwxMTksOTcsMTA4LDAsMCwxMTAsXG4xMTEsMTA4LDExMSw5OSwxMDcsMCwxMDUsMTA5LDEwOSwxMTcsMTE2LDk3LDk4LDEwOCwxMDEsMCwwLDEwMiwxMDUsMTA4LDEwMSw1OCwwLDEwOCwxMTEsOTksOTcsMTA4LDEwNCwxMTEsMTE1LDExNiwwLDEwNSwxMTAsMTE4LDk3LDEwOCwxMDUsMTAwLDMyLDExNywxMTQsMTA1LDMyLDk3LDExNywxMTYsMTA0LDExMSwxMTQsMTA1LDExNiwxMjEsNTgsMzIsMzcsNDYsNDIsMTE1LDAsMTE4LDEwMiwxMTUsMCw5OSw5Nyw5OSwxMDQsMTAxLDAsMTA5LDExMSwxMDAsMTAxLDAsOTcsOTksOTksMTAxLDExNSwxMTUsMCwxMTAsMTExLDMyLDExNSwxMTcsOTksMTA0LDMyLDM3LDExNSwzMiwxMDksMTExLDEwMCwxMDEsNTgsMzIsMzcsMTE1LDAsMzcsMTE1LDMyLDEwOSwxMTEsMTAwLDEwMSwzMiwxMTAsMTExLDExNiwzMiw5NywxMDgsMTA4LDExMSwxMTksMTAxLDEwMCw1OCwzMiwzNywxMTUsMCwxMTAsMTExLDMyLDExNSwxMTcsOTksMTA0LDMyLDExOCwxMDIsMTE1LDU4LDMyLDM3LDExNSxcbjAsMTE0LDExMSwwLDExNCwxMTksMCwxMTQsMTE5LDk5LDAsMTA5LDEwMSwxMDksMTExLDExNCwxMjEsMCwxMTUsMTA0LDk3LDExNCwxMDEsMTAwLDAsMTEyLDExNCwxMDUsMTE4LDk3LDExNiwxMDEsMCwxMTcsMTEwLDk3LDk4LDEwOCwxMDEsMzIsMTE2LDExMSwzMiwxMTcsMTE1LDEwMSwzMiwxMDIsMTE3LDExMCw5OSwxMTYsMTA1LDExMSwxMTAsMzIsMzcsMTE1LDMyLDEwNSwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTE0LDEwMSwxMTMsMTE3LDEwMSwxMTUsMTE2LDEwMSwxMDAsMzIsOTksMTExLDExMCwxMTYsMTAxLDEyMCwxMTYsMCwxMTcsMTEwLDk3LDk4LDEwOCwxMDEsMzIsMTE2LDExMSwzMiwxMDAsMTAxLDEwOCwxMDEsMTE2LDEwMSw0NywxMDksMTExLDEwMCwxMDUsMTAyLDEyMSwzMiwxMTcsMTE1LDEwMSwxMTQsNDUsMTAyLDExNywxMTAsOTksMTE2LDEwNSwxMTEsMTEwLDMyLDEwMCwxMTcsMTAxLDMyLDExNiwxMTEsMzIsOTcsOTksMTE2LDEwNSwxMTgsMTAxLDMyLDExNSxcbjExNiw5NywxMTYsMTAxLDEwOSwxMDEsMTEwLDExNiwxMTUsMCwxMTcsMTEwLDk3LDk4LDEwOCwxMDEsMzIsMTE2LDExMSwzMiw5OSwxMDgsMTExLDExNSwxMDEsMzIsMTAwLDExNywxMDEsMzIsMTE2LDExMSwzMiwxMTcsMTEwLDEwMiwxMDUsMTEwLDk3LDEwOCwxMDUsMTIyLDEwMSwxMDAsMzIsMTE1LDExNiw5NywxMTYsMTAxLDEwOSwxMDEsMTEwLDExNiwxMTUsMzIsMTExLDExNCwzMiwxMTcsMTEwLDEwMiwxMDUsMTEwLDEwNSwxMTUsMTA0LDEwMSwxMDAsMzIsOTgsOTcsOTksMTA3LDExNywxMTIsMTE1LDAsMTAyLDk3LDEwNSwxMDgsMTAxLDEwMCwzMiwxMDksMTAxLDEwOSwxMTEsMTE0LDEyMSwzMiwxMTQsMTAxLDExNSwxMDUsMTIyLDEwMSwzMiwzNywxMTcsMzIsMTE2LDExMSwzMiwzNywxMTcsMzIsOTgsMTIxLDExNiwxMDEsMTE1LDAsMTAyLDk3LDEwNSwxMDgsMTAxLDEwMCwzMiwxMTYsMTExLDMyLDk3LDEwOCwxMDgsMTExLDk5LDk3LDExNiwxMDEsMzIsMzcsMTE3LDMyLFxuOTgsMTIxLDExNiwxMDEsMTE1LDMyLDExMSwxMDIsMzIsMTA5LDEwMSwxMDksMTExLDExNCwxMjEsMCwxMTcsMTEwLDExNCwxMDEsOTksMTExLDEwMywxMTAsMTA1LDEyMiwxMDEsMTAwLDMyLDExNiwxMTEsMTA3LDEwMSwxMTAsNTgsMzIsMzQsMzcsODQsMzQsMCwxMTAsMTAxLDk3LDExNCwzMiwzNCwzNyw4NCwzNCw1OCwzMiwxMTUsMTIxLDExMCwxMTYsOTcsMTIwLDMyLDEwMSwxMTQsMTE0LDExMSwxMTQsMCwxNDcsMSwxNDcsMywxNDgsMSwxNDksMywxNTAsMCwxNTAsMSwxNTAsMSwxNTAsMSwxNDksMiwxNDksMiwxNDksMiwxNDksMiwxNDksMywxNDksNSwxNTQsNiwxNTYsMSwxNTgsMCwxNTgsMywxNTcsMSwxNTcsMCwxNTUsNSwxNTUsMiwxNjIsMCwxNjIsMiwxNjQsMiwxNjYsMCwxNjYsNCwxNjYsNiwxNjcsMiwxNzEsMiwxNzEsMiwxNzEsNCwxNzEsMywxNzEsMywxNzEsMiwxNzEsMywxNzEsNSwxNzEsMiwxNzEsNCwxNzEsNCwxNzEsMSwxNzEsMiwxNzYsMCwxNzYsMSwxNzgsXG4wLDE3OCwyLDE4MCwyLDE4MCwzLDE4MCwzLDE4MCwzLDE4MSwyLDE4MSwyLDE4MSwxLDE4MSwxLDE4MSwyLDE3OSwzLDE3OSwyLDE4MiwwLDE4MiwyLDE4MiwyLDE2MSwwLDE4NCwxLDE4NSwyLDE4NSw3LDE4NSw1LDE4NSw1LDE4NSwxMCwxODgsMCwxNzQsMCwxNzQsMywxODksMCwxODksMiwxOTAsMSwxOTAsMSwxNDksNCwxOTIsMiwxOTIsMCwxNDksOSwxNDksNCwxNDksMSwxNjMsMiwxOTQsMywxOTcsMSwxOTcsMiwxOTcsMSwxOTUsOSwyMDYsNCwyMDYsNSwxOTgsMSwxOTgsMSwxOTgsMCwyMDksMCwxOTksMywxOTksMiwxOTksNCwyMTAsMiwyMTAsMCwyMDAsMCwyMDAsMiwyMTIsMiwyMTIsMCwyMTEsNywyMTEsOSwyMTEsNywyMTEsNywxNTksMCwxNTksMiwxOTMsMiwyMTMsMSwyMTMsMiwyMTMsMywyMTMsNCwyMTUsMiwyMTUsMCwyMTQsMCwyMTQsMywyMTQsMiwyMTYsNCwyMTYsMCwyMDQsMCwyMDQsMywxODYsNCwxODYsMiwxNzUsMSwxNzUsMSwxNzUsMCwyMDIsMCwyMDIsMyxcbjIwMywwLDIwMywyLDIwNSwwLDIwNSwyLDIwNSw0LDIwNSw0LDE0OSw2LDIwMSwwLDIwMSwyLDE0OSw4LDIxOCw1LDIxOCw3LDIxOCwzLDIxOCw1LDE0OSw2LDE0OSw3LDIxOSwyLDIxOSwxLDIyMCwwLDIyMCwzLDIxNywzLDIxNywxLDE3MywzLDE3MiwxLDE3MywxLDE3MywxLDE3MywzLDE3Myw1LDE3MiwxLDE3MiwxLDE3MiwxLDE3MywxLDE3MywzLDE3Myw2LDE3Myw1LDE3Myw0LDE3MiwxLDE3Myw1LDE3MywzLDE3MywzLDE3MywzLDE3MywzLDE3MywzLDE3MywzLDE3MywzLDE3MywzLDIyMSwxLDIyMSwyLDE3MywzLDE3Myw1LDE3MywyLDE3MywzLDE3MywzLDE3Myw0LDE3MywyLDE3MywyLDE3MywyLDE3MywyLDIyMiwxLDIyMiwyLDE3Myw1LDIyMywxLDIyMywyLDE3Myw1LDE3MywzLDE3Myw1LDE3Myw1LDE3Myw0LDE3Myw1LDIyNiw1LDIyNiw0LDIyNywyLDIyNywwLDIyNSwxLDIyNSwwLDIwOCwwLDIwNywzLDIwNywxLDIyNCwwLDIyNCwzLDE0OSwxMiwyMjgsMSwyMjgsMCwxNzcsXG4wLDE3NywzLDE4Nyw1LDE4NywzLDIyOSwwLDIyOSwyLDE0OSw0LDE0OSwxLDE0OSwyLDE0OSwzLDE0OSw1LDE0OSw2LDE0OSw1LDE0OSw2LDE2OSwyLDE3MCwyLDE0OSw1LDIzMSwxMSwyMzMsMSwyMzMsMSwyMzMsMiwyMzMsMCwyMzQsMSwyMzQsMSwyMzQsMywyMzYsMCwyMzYsMiwyMzIsMywyMzIsMiwyMzgsMywyMzksMywyMzksMiwyMzcsNywyMzcsNSwyMzcsNSwyMzcsMSwxNzMsNCwxNzMsNiwxOTEsMSwxOTEsMSwxOTEsMSwxNDksNCwxNDksNiwxNDksMywyNDEsMCwyNDEsMiwxNDksMSwxNDksMywxNDksMSwxNDksMywxNDksNiwxNDksNywyNDIsMSwxNDksMSwxNDksNCwyNDQsOCwyNDYsMCwyNDcsMSwyNDcsMywyNDgsMSwxOTYsMCwxOTYsMiwxOTYsMywyNTAsNiwyNTAsOCwxNDQsMSwxNDUsMiwxNDUsMSwxNDYsMSwxNDYsMywxNDcsMCwxNTEsMCwxNTEsMSwxNTEsMiwxNTMsMSwxNTMsMCwxNDksMiwxNjAsNCwxNjAsMiwxNTIsMSwxNTIsMSwxNTIsMSwxNjYsMSwxNjcsMSxcbjE2OCwxLDE2OCwxLDE2NSwyLDE2NSwwLDE3MSwyLDE2MSwyLDE4MywzLDE4MywxLDE4NCwwLDE4OCwxLDE5MCwxLDE5NCwxLDE5NSwxLDIwOSwyLDIxMCwxLDE3MywxLDIwOCwxLDIzMCwxLDIzMCwxLDIzMCwxLDIzMCwxLDIzMCwxLDE2OSwxLDIzNSwwLDIzNSwzLDIzOCwxLDIzOSwwLDI0MCwxLDI0MCwwLDI0MywwLDI0MywxLDI0NSwxLDI0NSwzLDI0NiwyLDI0OSwwLDI0OSw0LDI0OSwyLDExNywxMTAsMTA3LDExMCwxMTEsMTE5LDExMCwzMiwxMTYsOTcsOTgsMTA4LDEwMSwzMiwxMTEsMTEyLDExNiwxMDUsMTExLDExMCw1OCwzMiwzNyw0Niw0MiwxMTUsMCwxMTUsMTAxLDExNiwzMiwxMDgsMTA1LDExNSwxMTYsMCwxMTYsMTExLDExMSwzMiwxMDksOTcsMTEwLDEyMSwzMiw5NywxMTQsMTAzLDExNywxMDksMTAxLDExMCwxMTYsMTE1LDMyLDExMSwxMTAsMzIsMTAyLDExNywxMTAsOTksMTE2LDEwNSwxMTEsMTEwLDMyLDM3LDg0LDAsMTEzLDExNyw5NywxMDgsMTA1LDEwMiwxMDUsXG4xMDEsMTAwLDMyLDExNiw5Nyw5OCwxMDgsMTAxLDMyLDExMCw5NywxMDksMTAxLDExNSwzMiw5NywxMTQsMTAxLDMyLDExMCwxMTEsMTE2LDMyLDk3LDEwOCwxMDgsMTExLDExOSwxMDEsMTAwLDMyLDExMSwxMTAsMzIsNzMsNzgsODMsNjksODIsODQsNDQsMzIsODUsODAsNjgsNjUsODQsNjksNDQsMzIsOTcsMTEwLDEwMCwzMiw2OCw2OSw3Niw2OSw4NCw2OSwzMiwxMTUsMTE2LDk3LDExNiwxMDEsMTA5LDEwMSwxMTAsMTE2LDExNSwzMiwxMTksMTA1LDExNiwxMDQsMTA1LDExMCwzMiwxMTYsMTE0LDEwNSwxMDMsMTAzLDEwMSwxMTQsMTE1LDAsMTE2LDEwNCwxMDEsMzIsNzMsNzgsNjgsNjksODgsNjksNjgsMzIsNjYsODksMzIsOTksMTA4LDk3LDExNywxMTUsMTAxLDMyLDEwNSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsOTcsMTA4LDEwOCwxMTEsMTE5LDEwMSwxMDAsMzIsMTExLDExMCwzMiw4NSw4MCw2OCw2NSw4NCw2OSwzMiwxMTEsMTE0LDMyLDY4LDY5LDc2LDY5LDg0LDY5LDMyLFxuMTE1LDExNiw5NywxMTYsMTAxLDEwOSwxMDEsMTEwLDExNiwxMTUsMzIsMTE5LDEwNSwxMTYsMTA0LDEwNSwxMTAsMzIsMTE2LDExNCwxMDUsMTAzLDEwMywxMDEsMTE0LDExNSwwLDExNiwxMDQsMTAxLDMyLDc4LDc5LDg0LDMyLDczLDc4LDY4LDY5LDg4LDY5LDY4LDMyLDk5LDEwOCw5NywxMTcsMTE1LDEwMSwzMiwxMDUsMTE1LDMyLDExMCwxMTEsMTE2LDMyLDk3LDEwOCwxMDgsMTExLDExOSwxMDEsMTAwLDMyLDExMSwxMTAsMzIsODUsODAsNjgsNjUsODQsNjksMzIsMTExLDExNCwzMiw2OCw2OSw3Niw2OSw4NCw2OSwzMiwxMTUsMTE2LDk3LDExNiwxMDEsMTA5LDEwMSwxMTAsMTE2LDExNSwzMiwxMTksMTA1LDExNiwxMDQsMTA1LDExMCwzMiwxMTYsMTE0LDEwNSwxMDMsMTAzLDEwMSwxMTQsMTE1LDAsMTAwLDExNywxMTIsMTA4LDEwNSw5OSw5NywxMTYsMTAxLDMyLDg3LDczLDg0LDcyLDMyLDExNiw5Nyw5OCwxMDgsMTAxLDMyLDExMCw5NywxMDksMTAxLDU4LDMyLDM3LDExNSxcbjAsMTEwLDExMSwxMTYsMzIsOTcsMTE3LDExNiwxMDQsMTExLDExNCwxMDUsMTIyLDEwMSwxMDAsMCw5NywxMTcsMTE2LDEwNCwxMTEsMTE0LDEwNSwxMjIsMTAxLDExNCwzMiwxMDksOTcsMTA4LDEwMiwxMTcsMTEwLDk5LDExNiwxMDUsMTExLDExMCwwLDY3LDgyLDY5LDY1LDg0LDY5LDMyLDg2LDczLDgyLDg0LDg1LDY1LDc2LDMyLDg0LDY1LDY2LDc2LDY5LDMyLDM3LDg0LDAsODUsODAsNjgsNjUsODQsNjksMzIsMzcsODEsNDYsMzcsMTE1LDMyLDgzLDY5LDg0LDMyLDExNiwxMjEsMTEyLDEwMSw2MSwzOSwxMTYsOTcsOTgsMTA4LDEwMSwzOSw0NCwzMiwxMTAsOTcsMTA5LDEwMSw2MSwzNyw4MSw0NCwzMiwxMTYsOTgsMTA4LDk1LDExMCw5NywxMDksMTAxLDYxLDM3LDgxLDQ0LDMyLDExNCwxMTEsMTExLDExNiwxMTIsOTcsMTAzLDEwMSw2MSw0OCw0NCwzMiwxMTUsMTEzLDEwOCw2MSwzNyw4MSwzMiw4Nyw3Miw2OSw4Miw2OSwzMiwxMTQsMTExLDExOSwxMDUsMTAwLDYxLDM1LFxuMzcsMTAwLDAsMTEwLDk3LDEwOSwxMDEsNjEsMzksMzcsMTEzLDM5LDMyLDY1LDc4LDY4LDMyLDExNiwxMjEsMTEyLDEwMSw2MSwzOSwxMTYsOTcsOTgsMTA4LDEwMSwzOSwwLDExOCwxMDUsMTE0LDExNiwxMTcsOTcsMTA4LDMyLDExNiw5Nyw5OCwxMDgsMTAxLDExNSwzMiwxMDksOTcsMTIxLDMyLDExMCwxMTEsMTE2LDMyLDk4LDEwMSwzMiw5NywxMDgsMTE2LDEwMSwxMTQsMTAxLDEwMCwwLDY3LDk3LDExMCwxMTAsMTExLDExNiwzMiw5NywxMDAsMTAwLDMyLDk3LDMyLDk5LDExMSwxMDgsMTE3LDEwOSwxMTAsMzIsMTE2LDExMSwzMiw5NywzMiwxMTgsMTA1LDEwMSwxMTksMCwxMTUsMTEzLDEwOCwxMDUsMTE2LDEwMSw5NSw5NywxMDgsMTE2LDEwMSwxMTQsMTE2LDk3LDk4LDk1LDM3LDExNSwwLDExNywxMTAsOTcsOTgsMTA4LDEwMSwzMiwxMTYsMTExLDMyLDExMSwxMTIsMTAxLDExMCwzMiw5NywzMiwxMTYsMTAxLDEwOSwxMTIsMTExLDExNCw5NywxMTQsMTIxLDMyLDEwMCw5NyxcbjExNiw5Nyw5OCw5NywxMTUsMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMDIsMTExLDExNCwzMiwxMTUsMTE2LDExMSwxMTQsMTA1LDExMCwxMDMsMzIsMTE2LDEwMSwxMDksMTEyLDExMSwxMTQsOTcsMTE0LDEyMSwzMiwxMTYsOTcsOTgsMTA4LDEwMSwxMTUsMCwxMTUsMTEzLDEwOCwxMDUsMTE2LDEwMSw5NSwwLDExNiw5Nyw5OCwxMDgsMTAxLDMyLDM3LDExNSwzMiwxMDksOTcsMTIxLDMyLDExMCwxMTEsMTE2LDMyLDk4LDEwMSwzMiw5NywxMDgsMTE2LDEwMSwxMTQsMTAxLDEwMCwwLDY3LDk3LDExMCwxMTAsMTExLDExNiwzMiw5NywxMDAsMTAwLDMyLDk3LDMyLDgwLDgyLDczLDc3LDY1LDgyLDg5LDMyLDc1LDY5LDg5LDMyLDk5LDExMSwxMDgsMTE3LDEwOSwxMTAsMCw2Nyw5NywxMTAsMTEwLDExMSwxMTYsMzIsOTcsMTAwLDEwMCwzMiw5NywzMiw4NSw3OCw3Myw4MSw4NSw2OSwzMiw5OSwxMTEsMTA4LDExNywxMDksMTEwLDAsNjcsOTcsMTEwLDExMCwxMTEsMTE2LDMyLFxuOTcsMTAwLDEwMCwzMiw5NywzMiw4Miw2OSw3MCw2OSw4Miw2OSw3OCw2Nyw2OSw4MywzMiw5OSwxMTEsMTA4LDExNywxMDksMTEwLDMyLDExOSwxMDUsMTE2LDEwNCwzMiwxMTAsMTExLDExMCw0NSw3OCw4NSw3Niw3NiwzMiwxMDAsMTAxLDEwMiw5NywxMTcsMTA4LDExNiwzMiwxMTgsOTcsMTA4LDExNywxMDEsMCw2Nyw5NywxMTAsMTEwLDExMSwxMTYsMzIsOTcsMTAwLDEwMCwzMiw5NywzMiw3OCw3OSw4NCwzMiw3OCw4NSw3Niw3NiwzMiw5OSwxMTEsMTA4LDExNywxMDksMTEwLDMyLDExOSwxMDUsMTE2LDEwNCwzMiwxMDAsMTAxLDEwMiw5NywxMTcsMTA4LDExNiwzMiwxMTgsOTcsMTA4LDExNywxMDEsMzIsNzgsODUsNzYsNzYsMCw2Nyw5NywxMTAsMTEwLDExMSwxMTYsMzIsOTcsMTAwLDEwMCwzMiw5NywzMiw5OSwxMTEsMTA4LDExNywxMDksMTEwLDMyLDExOSwxMDUsMTE2LDEwNCwzMiwxMTAsMTExLDExMCw0NSw5OSwxMTEsMTEwLDExNSwxMTYsOTcsMTEwLDExNiwzMiwxMDAsXG4xMDEsMTAyLDk3LDExNywxMDgsMTE2LDAsODUsODAsNjgsNjUsODQsNjksMzIsMzQsMzcsMTE5LDM0LDQ2LDM3LDExNSwzMiw4Myw2OSw4NCwzMiwxMTUsMTEzLDEwOCwzMiw2MSwzMiwxMTUsMTE3LDk4LDExNSwxMTYsMTE0LDQwLDExNSwxMTMsMTA4LDQ0LDQ5LDQ0LDM3LDEwMCw0MSwzMiwxMjQsMTI0LDMyLDM5LDQ0LDMyLDM5LDMyLDEyNCwxMjQsMzIsMzcsODEsMzIsMTI0LDEyNCwzMiwxMTUsMTE3LDk4LDExNSwxMTYsMTE0LDQwLDExNSwxMTMsMTA4LDQ0LDM3LDEwMCw0MSwzMiw4Nyw3Miw2OSw4Miw2OSwzMiwxMTYsMTIxLDExMiwxMDEsMzIsNjEsMzIsMzksMTE2LDk3LDk4LDEwOCwxMDEsMzksMzIsNjUsNzgsNjgsMzIsMTEwLDk3LDEwOSwxMDEsMzIsNjEsMzIsMzcsODEsMCwxMTYsOTgsMTA4LDk1LDExMCw5NywxMDksMTAxLDYxLDM3LDgxLDAsMTE2LDEyMSwxMTIsMTAxLDYxLDM5LDExNiwxMTQsMTA1LDEwMywxMDMsMTAxLDExNCwzOSwzMiw2NSw3OCw2OCwzMiw0MCxcbjM3LDExNSw0MSwwLDExMCw5NywxMDksMTAxLDYxLDM3LDgxLDAsMzcsMTE1LDMyLDc5LDgyLDMyLDExMCw5NywxMDksMTAxLDYxLDM3LDgxLDAsNDUsMCwzNywxMDgsMTA4LDEwMCwwLDM3LDMzLDQ2LDQ5LDUzLDEwMywwLDExNiwxMDQsMTAxLDExNCwxMDEsMzIsMTA1LDExNSwzMiw5NywxMDgsMTE0LDEwMSw5NywxMDAsMTIxLDMyLDk3LDExMCwxMTEsMTE2LDEwNCwxMDEsMTE0LDMyLDExNiw5Nyw5OCwxMDgsMTAxLDMyLDExMSwxMTQsMzIsMTA1LDExMCwxMDAsMTAxLDEyMCwzMiwxMTksMTA1LDExNiwxMDQsMzIsMTE2LDEwNCwxMDUsMTE1LDMyLDExMCw5NywxMDksMTAxLDU4LDMyLDM3LDExNSwwLDExOCwxMDUsMTAxLDExOSwzMiwzNywxMTUsMzIsMTA5LDk3LDEyMSwzMiwxMTAsMTExLDExNiwzMiw5OCwxMDEsMzIsOTcsMTA4LDExNiwxMDEsMTE0LDEwMSwxMDAsMCw4NSw4MCw2OCw2NSw4NCw2OSwzMiwzNCwzNywxMTksMzQsNDYsMzcsMTE1LDMyLDgzLDY5LDg0LDMyLDExNSxcbjExMywxMDgsMzIsNjEsMzIsMTE1LDExMywxMDgsMTA1LDExNiwxMDEsOTUsMTE0LDEwMSwxMTAsOTcsMTA5LDEwMSw5NSwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDQwLDExNSwxMTMsMTA4LDQ0LDMyLDM3LDgxLDQ0LDMyLDM3LDgxLDQxLDMyLDg3LDcyLDY5LDgyLDY5LDMyLDM3LDExNSw1OSwwLDg1LDgwLDY4LDY1LDg0LDY5LDMyLDM3LDgxLDQ2LDM3LDExNSwzMiw4Myw2OSw4NCwzMiwxMTUsMTEzLDEwOCwzMiw2MSwzMiw2Nyw2NSw4Myw2OSwzMiw4Nyw3Miw2OSw3OCwzMiwxMTYsMTIxLDExMiwxMDEsMzIsNjEsMzIsMzksMTE2LDExNCwxMDUsMTAzLDEwMywxMDEsMTE0LDM5LDMyLDg0LDcyLDY5LDc4LDMyLDExNSwxMTMsMTA4LDEwNSwxMTYsMTAxLDk1LDExNCwxMDEsMTEwLDk3LDEwOSwxMDEsOTUsMTE2LDExNCwxMDUsMTAzLDEwMywxMDEsMTE0LDQwLDExNSwxMTMsMTA4LDQ0LDMyLDM3LDgxLDQxLDY5LDc2LDgzLDY5LDMyLDExNSwxMTMsMTA4LDEwNSwxMTYsMTAxLDk1LFxuMTE0LDEwMSwxMTAsOTcsMTA5LDEwMSw5NSwxMTYsOTcsOTgsMTA4LDEwMSw0MCwxMTUsMTEzLDEwOCw0NCwzMiwzNyw4MSw0MSwzMiw2OSw3OCw2OCw0NCwzMiwxMTYsOTgsMTA4LDk1LDExMCw5NywxMDksMTAxLDMyLDYxLDMyLDM3LDgxLDQ0LDMyLDExMCw5NywxMDksMTAxLDMyLDYxLDMyLDY3LDY1LDgzLDY5LDMyLDg3LDcyLDY5LDc4LDMyLDExNiwxMjEsMTEyLDEwMSw2MSwzOSwxMTYsOTcsOTgsMTA4LDEwMSwzOSwzMiw4NCw3Miw2OSw3OCwzMiwzNyw4MSwzMiw4Nyw3Miw2OSw3OCwzMiwxMTAsOTcsMTA5LDEwMSwzMiw3Niw3Myw3NSw2OSwzMiwzOSwxMTUsMTEzLDEwOCwxMDUsMTE2LDEwMSw5NSw5NywxMTcsMTE2LDExMSwxMDUsMTEwLDEwMCwxMDEsMTIwLDM3LDM3LDM5LDMyLDY1LDc4LDY4LDMyLDExNiwxMjEsMTEyLDEwMSw2MSwzOSwxMDUsMTEwLDEwMCwxMDEsMTIwLDM5LDMyLDg0LDcyLDY5LDc4LDMyLDM5LDExNSwxMTMsMTA4LDEwNSwxMTYsMTAxLDk1LDk3LDExNyxcbjExNiwxMTEsMTA1LDExMCwxMDAsMTAxLDEyMCw5NSwzOSwzMiwxMjQsMTI0LDMyLDM3LDgxLDMyLDEyNCwxMjQsMzIsMTE1LDExNyw5OCwxMTUsMTE2LDExNCw0MCwxMTAsOTcsMTA5LDEwMSw0NCwzNywxMDAsNDMsNDksNTYsNDEsMzIsNjksNzYsODMsNjksMzIsMTEwLDk3LDEwOSwxMDEsMzIsNjksNzgsNjgsMzIsODcsNzIsNjksODIsNjksMzIsMTE2LDk4LDEwOCw5NSwxMTAsOTcsMTA5LDEwMSw2MSwzNyw4MSwzMiw2Nyw3OSw3Niw3Niw2NSw4NCw2OSwzMiwxMTAsMTExLDk5LDk3LDExNSwxMDEsMzIsNjUsNzgsNjgsMzIsNDAsMTE2LDEyMSwxMTIsMTAxLDYxLDM5LDExNiw5Nyw5OCwxMDgsMTAxLDM5LDMyLDc5LDgyLDMyLDExNiwxMjEsMTEyLDEwMSw2MSwzOSwxMDUsMTEwLDEwMCwxMDEsMTIwLDM5LDMyLDc5LDgyLDMyLDExNiwxMjEsMTEyLDEwMSw2MSwzOSwxMTYsMTE0LDEwNSwxMDMsMTAzLDEwMSwxMTQsMzksNDEsNTksMCwxMTUsMTEzLDEwOCwxMDUsMTE2LDEwMSw5NSxcbjExNSwxMDEsMTEzLDExNywxMDEsMTEwLDk5LDEwMSwwLDg1LDgwLDY4LDY1LDg0LDY5LDMyLDM0LDM3LDExOSwzNCw0NiwxMTUsMTEzLDEwOCwxMDUsMTE2LDEwMSw5NSwxMTUsMTAxLDExMywxMTcsMTAxLDExMCw5OSwxMDEsMzIsMTE1LDEwMSwxMTYsMzIsMTEwLDk3LDEwOSwxMDEsMzIsNjEsMzIsMzcsODEsMzIsODcsNzIsNjksODIsNjksMzIsMTEwLDk3LDEwOSwxMDEsMzIsNjEsMzIsMzcsODEsMCw4NSw4MCw2OCw2NSw4NCw2OSwzMiwxMTUsMTEzLDEwOCwxMDUsMTE2LDEwMSw5NSwxMTYsMTAxLDEwOSwxMTIsOTUsMTA5LDk3LDExNSwxMTYsMTAxLDExNCwzMiw4Myw2OSw4NCwzMiwxMTUsMTEzLDEwOCwzMiw2MSwzMiwxMTUsMTEzLDEwOCwxMDUsMTE2LDEwMSw5NSwxMTQsMTAxLDExMCw5NywxMDksMTAxLDk1LDExNiwxMTQsMTA1LDEwMywxMDMsMTAxLDExNCw0MCwxMTUsMTEzLDEwOCw0NCwzMiwzNyw4MSw0MSw0NCwzMiwxMTYsOTgsMTA4LDk1LDExMCw5NywxMDksMTAxLFxuMzIsNjEsMzIsMzcsODEsMzIsODcsNzIsNjksODIsNjksMzIsMzcsMTE1LDU5LDAsMTE4LDEwNSwxMDEsMTE5LDMyLDM3LDExNSwzMiwxMDUsMTE1LDMyLDk5LDEwNSwxMTQsOTksMTE3LDEwOCw5NywxMTQsMTA4LDEyMSwzMiwxMDAsMTAxLDEwMiwxMDUsMTEwLDEwMSwxMDAsMCwxMTAsMTExLDMyLDExNSwxMTcsOTksMTA0LDMyLDk5LDExMSwxMDgsMTA4LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMTUsMTAxLDExMywxMTcsMTAxLDExMCw5OSwxMDEsNTgsMzIsMzcsMTE1LDAsMywyLDEsMzcsNDYsNDIsMTIyLDU4LDM3LDExNywwLDk3LDMyLDcxLDgyLDc5LDg1LDgwLDMyLDY2LDg5LDMyLDk5LDEwOCw5NywxMTcsMTE1LDEwMSwzMiwxMDUsMTE1LDMyLDExNCwxMDEsMTEzLDExNywxMDUsMTE0LDEwMSwxMDAsMzIsOTgsMTAxLDEwMiwxMTEsMTE0LDEwMSwzMiw3Miw2NSw4Niw3Myw3OCw3MSwwLDc5LDgyLDY4LDY5LDgyLDAsNzEsODIsNzksODUsODAsMCw5NywxMDMsMTAzLDExNCwxMDEsXG4xMDMsOTcsMTE2LDEwMSwzMiwxMDIsMTE3LDExMCw5OSwxMTYsMTA1LDExMSwxMTAsMTE1LDMyLDk3LDExNCwxMDEsMzIsMTEwLDExMSwxMTYsMzIsOTcsMTA4LDEwOCwxMTEsMTE5LDEwMSwxMDAsMzIsMTA1LDExMCwzMiwxMTYsMTA0LDEwMSwzMiw3MSw4Miw3OSw4NSw4MCwzMiw2Niw4OSwzMiw5OSwxMDgsOTcsMTE3LDExNSwxMDEsMCwxMTYsMTExLDExMSwzMiwxMDksOTcsMTEwLDEyMSwzMiwxMTYsMTAxLDExNCwxMDksMTE1LDMyLDEwNSwxMTAsMzIsNzksODIsNjgsNjksODIsMzIsNjYsODksMzIsOTksMTA4LDk3LDExNywxMTUsMTAxLDAsMzcsMTE0LDMyLDc5LDgyLDY4LDY5LDgyLDMyLDY2LDg5LDMyLDExNiwxMDEsMTE0LDEwOSwzMiwxMDAsMTExLDEwMSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsMTA5LDk3LDExNiw5OSwxMDQsMzIsOTcsMTEwLDEyMSwzMiw5OSwxMTEsMTA4LDExNywxMDksMTEwLDMyLDEwNSwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTE0LDEwMSwxMTUsMTE3LFxuMTA4LDExNiwzMiwxMTUsMTAxLDExNiwwLDM3LDExNCwzMiwzNywxMTUsMzIsNjYsODksMzIsMTE2LDEwMSwxMTQsMTA5LDMyLDExMSwxMTcsMTE2LDMyLDExMSwxMDIsMzIsMTE0LDk3LDExMCwxMDMsMTAxLDMyLDQ1LDMyLDExNSwxMDQsMTExLDExNywxMDgsMTAwLDMyLDk4LDEwMSwzMiw5OCwxMDEsMTE2LDExOSwxMDEsMTAxLDExMCwzMiw0OSwzMiw5NywxMTAsMTAwLDMyLDM3LDEwMCwwLDk3LDEwOCwxMDgsMzIsODYsNjUsNzYsODUsNjksODMsMzIsMTA5LDExNywxMTUsMTE2LDMyLDEwNCw5NywxMTgsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDExNSw5NywxMDksMTAxLDMyLDExMCwxMTcsMTA5LDk4LDEwMSwxMTQsMzIsMTExLDEwMiwzMiwxMTYsMTAxLDExNCwxMDksMTE1LDAsODMsNjksNzYsNjksNjcsODQsMTE1LDMyLDExNiwxMTEsMzIsMTE2LDEwNCwxMDEsMzIsMTA4LDEwMSwxMDIsMTE2LDMyLDk3LDExMCwxMDAsMzIsMTE0LDEwNSwxMDMsMTA0LDExNiwzMiwxMTEsMTAyLFxuMzIsMzcsMTE1LDMyLDEwMCwxMTEsMzIsMTEwLDExMSwxMTYsMzIsMTA0LDk3LDExOCwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDk3LDEwOSwxMDEsMzIsMTEwLDExNywxMDksOTgsMTAxLDExNCwzMiwxMTEsMTAyLDMyLDExNCwxMDEsMTE1LDExNywxMDgsMTE2LDMyLDk5LDExMSwxMDgsMTE3LDEwOSwxMTAsMTE1LDAsODUsNzgsNzMsNzksNzgsMzIsNjUsNzYsNzYsMCw3Myw3OCw4NCw2OSw4Miw4Myw2OSw2Nyw4NCwwLDY5LDg4LDY3LDY5LDgwLDg0LDAsODUsNzgsNzMsNzksNzgsMCwxMTYsMTExLDExMSwzMiwxMDksOTcsMTEwLDEyMSwzMiwxMTYsMTAxLDExNCwxMDksMTE1LDMyLDEwNSwxMTAsMzIsMzcsMTE1LDMyLDY2LDg5LDMyLDk5LDEwOCw5NywxMTcsMTE1LDEwMSwwLDY5LDEyMCwxMTIsMTE0LDEwMSwxMTUsMTE1LDEwNSwxMTEsMTEwLDMyLDExNiwxMTQsMTAxLDEwMSwzMiwxMDUsMTE1LDMyLDExNiwxMTEsMTExLDMyLDEwOCw5NywxMTQsMTAzLDEwMSwzMiw0MCwxMDksXG45NywxMjAsMTA1LDEwOSwxMTcsMTA5LDMyLDEwMCwxMDEsMTEyLDExNiwxMDQsMzIsMzcsMTAwLDQxLDAsMTE2LDEwNCwxMDEsMzIsMzQsNDYsMzQsMzIsMTExLDExMiwxMDEsMTE0LDk3LDExNiwxMTEsMTE0LDAsMTE1LDEwMSw5OSwxMTEsMTEwLDEwMCwzMiw5NywxMTQsMTAzLDExNywxMDksMTAxLDExMCwxMTYsMzIsMTE2LDExMSwzMiwxMDgsMTA1LDEwNywxMDEsMTA4LDEwNSwxMDQsMTExLDExMSwxMDAsNDAsNDEsMzIsMTA5LDExNywxMTUsMTE2LDMyLDk4LDEwMSwzMiw5NywzMiw5OSwxMTEsMTEwLDExNSwxMTYsOTcsMTEwLDExNiwzMiw5OCwxMDEsMTE2LDExOSwxMDEsMTAxLDExMCwzMiw0OCw0Niw0OCwzMiw5NywxMTAsMTAwLDMyLDQ5LDQ2LDQ4LDAsMTEwLDExMSwxMTYsMzIsOTcsMTE3LDExNiwxMDQsMTExLDExNCwxMDUsMTIyLDEwMSwxMDAsMzIsMTE2LDExMSwzMiwxMTcsMTE1LDEwMSwzMiwxMDIsMTE3LDExMCw5OSwxMTYsMTA1LDExMSwxMTAsNTgsMzIsMzcsMTE1LFxuMCwxMTAsMTExLDExMCw0NSwxMDAsMTAxLDExNiwxMDEsMTE0LDEwOSwxMDUsMTEwLDEwNSwxMTUsMTE2LDEwNSw5OSwzMiwxMDIsMTE3LDExMCw5OSwxMTYsMTA1LDExMSwxMTAsMTE1LDAsMTA5LDEwNSwxMTUsMTE3LDExNSwxMDEsMzIsMTExLDEwMiwzMiw5NywxMDMsMTAzLDExNCwxMDEsMTAzLDk3LDExNiwxMDEsMzIsMTAyLDExNywxMTAsOTksMTE2LDEwNSwxMTEsMTEwLDMyLDM3LDQ2LDQyLDExNSw0MCw0MSwwLDExMCwxMTEsMzIsMTE1LDExNyw5OSwxMDQsMzIsMTAyLDExNywxMTAsOTksMTE2LDEwNSwxMTEsMTEwLDU4LDMyLDM3LDQ2LDQyLDExNSwwLDExOSwxMTQsMTExLDExMCwxMDMsMzIsMTEwLDExNywxMDksOTgsMTAxLDExNCwzMiwxMTEsMTAyLDMyLDk3LDExNCwxMDMsMTE3LDEwOSwxMDEsMTEwLDExNiwxMTUsMzIsMTE2LDExMSwzMiwxMDIsMTE3LDExMCw5OSwxMTYsMTA1LDExMSwxMTAsMzIsMzcsNDYsNDIsMTE1LDQwLDQxLDAsMTE1LDExNyw5OCwxMTMsMTE3LFxuMTAxLDExNCwxMDUsMTAxLDExNSwwLDExMiw5NywxMTQsOTcsMTA5LDEwMSwxMTYsMTAxLDExNCwxMTUsMCwxMTQsMTExLDExOSwzMiwxMTgsOTcsMTA4LDExNywxMDEsMzIsMTA5LDEwNSwxMTUsMTE3LDExNSwxMDEsMTAwLDAsMTEyLDk3LDExNCwxMTYsMTA1LDk3LDEwOCwzMiwxMDUsMTEwLDEwMCwxMDEsMTIwLDMyLDg3LDcyLDY5LDgyLDY5LDMyLDk5LDEwOCw5NywxMTcsMTE1LDEwMSwxMTUsMCwxMDUsMTEwLDEwMCwxMDEsMTIwLDMyLDEwMSwxMjAsMTEyLDExNCwxMDEsMTE1LDExNSwxMDUsMTExLDExMCwxMTUsMCw2Nyw3Miw2OSw2Nyw3NSwzMiw5OSwxMTEsMTEwLDExNSwxMTYsMTE0LDk3LDEwNSwxMTAsMTE2LDExNSwwLDM3LDExNSwzMiwxMTIsMTE0LDExMSwxMDQsMTA1LDk4LDEwNSwxMTYsMTAxLDEwMCwzMiwxMDUsMTEwLDMyLDM3LDExNSwwLDExMCwxMDEsMTE5LDAsMTExLDEwOCwxMDAsMCwxMDksMTA1LDExNSwxMTcsMTE1LDEwMSwzMiwxMTEsMTAyLDMyLDk3LDEwOCxcbjEwNSw5NywxMTUsMTAxLDEwMCwzMiw5NywxMDMsMTAzLDExNCwxMDEsMTAzLDk3LDExNiwxMDEsMzIsMzcsMTE1LDAsMTEwLDExMSwzMiwxMTUsMTE3LDk5LDEwNCwzMiw5OSwxMTEsMTA4LDExNywxMDksMTEwLDAsOTcsMTA5LDk4LDEwNSwxMDMsMTE3LDExMSwxMTcsMTE1LDMyLDk5LDExMSwxMDgsMTE3LDEwOSwxMTAsMzIsMTEwLDk3LDEwOSwxMDEsMCwzNywxMTUsNTgsMzIsMzcsMTE1LDQ2LDM3LDExNSw0NiwzNywxMTUsMCwzNywxMTUsNTgsMzIsMzcsMTE1LDQ2LDM3LDExNSwwLDM3LDExNSw1OCwzMiwzNywxMTUsMCw5Nyw5OSw5OSwxMDEsMTE1LDExNSwzMiwxMTYsMTExLDMyLDM3LDExNSw0NiwzNywxMTUsNDYsMzcsMTE1LDMyLDEwNSwxMTUsMzIsMTEyLDExNCwxMTEsMTA0LDEwNSw5OCwxMDUsMTE2LDEwMSwxMDAsMCw5Nyw5OSw5OSwxMDEsMTE1LDExNSwzMiwxMTYsMTExLDMyLDM3LDExNSw0NiwzNywxMTUsMzIsMTA1LDExNSwzMiwxMTIsMTE0LDExMSwxMDQsMTA1LFxuOTgsMTA1LDExNiwxMDEsMTAwLDAsMTE1LDExMywxMDgsMTA1LDExNiwxMDEsOTUsMTE1LDExMyw5NSwzNywxMTIsMCwxMTYsMTExLDExMSwzMiwxMDksOTcsMTEwLDEyMSwzMiwxMTQsMTAxLDEwMiwxMDEsMTE0LDEwMSwxMTAsOTksMTAxLDExNSwzMiwxMTYsMTExLDMyLDM0LDM3LDExNSwzNCw1OCwzMiwxMDksOTcsMTIwLDMyLDU0LDUzLDUzLDUxLDUzLDAsMzcsMTE1LDQ2LDM3LDExNSwwLDM3LDExNSw0NiwzNywxMTUsNDYsMzcsMTE1LDAsMTEwLDExMSwzMiwxMTUsMTE3LDk5LDEwNCwzMiwxMTYsOTcsOTgsMTA4LDEwMSw1OCwzMiwzNywxMTUsMCwxMTAsMTExLDMyLDExNiw5Nyw5OCwxMDgsMTAxLDExNSwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSwxMDEsMTAwLDAsMTE2LDExMSwxMTEsMzIsMTA5LDk3LDExMCwxMjEsMzIsOTksMTExLDEwOCwxMTcsMTA5LDExMCwxMTUsMzIsMTA1LDExMCwzMiwxMTQsMTAxLDExNSwxMTcsMTA4LDExNiwzMiwxMTUsMTAxLDExNiwwLFxuOTcsMzIsNzgsNjUsODQsODUsODIsNjUsNzYsMzIsMTA2LDExMSwxMDUsMTEwLDMyLDEwOSw5NywxMjEsMzIsMTEwLDExMSwxMTYsMzIsMTA0LDk3LDExOCwxMDEsMzIsOTcsMTEwLDMyLDc5LDc4LDMyLDExMSwxMTQsMzIsODUsODMsNzMsNzgsNzEsMzIsOTksMTA4LDk3LDExNywxMTUsMTAxLDAsOTksOTcsMTEwLDExMCwxMTEsMTE2LDMyLDEwNCw5NywxMTgsMTAxLDMyLDk4LDExMSwxMTYsMTA0LDMyLDc5LDc4LDMyLDk3LDExMCwxMDAsMzIsODUsODMsNzMsNzgsNzEsMzIsOTksMTA4LDk3LDExNywxMTUsMTAxLDExNSwzMiwxMDUsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDExNSw5NywxMDksMTAxLDMyLDEwNiwxMTEsMTA1LDExMCwwLDk5LDk3LDExMCwxMTAsMTExLDExNiwzMiwxMDYsMTExLDEwNSwxMTAsMzIsMTE3LDExNSwxMDUsMTEwLDEwMywzMiw5OSwxMTEsMTA4LDExNywxMDksMTEwLDMyLDM3LDExNSwzMiw0NSwzMiw5OSwxMTEsMTA4LDExNywxMDksMTEwLDMyLDExMCwxMTEsXG4xMTYsMzIsMTEyLDExNCwxMDEsMTE1LDEwMSwxMTAsMTE2LDMyLDEwNSwxMTAsMzIsOTgsMTExLDExNiwxMDQsMzIsMTE2LDk3LDk4LDEwOCwxMDEsMTE1LDAsMTEwLDExMSwzMiwxMTUsMTE3LDk5LDEwNCwzMiwxMDUsMTEwLDEwMCwxMDEsMTIwLDU4LDMyLDM3LDExNSwwLDM5LDM3LDExNSwzOSwzMiwxMDUsMTE1LDMyLDExMCwxMTEsMTE2LDMyLDk3LDMyLDEwMiwxMTcsMTEwLDk5LDExNiwxMDUsMTExLDExMCwwLDEwOSwxMTcsMTA4LDExNiwxMDUsMTEyLDEwOCwxMDEsMzIsMTE0LDEwMSwxMDIsMTAxLDExNCwxMDEsMTEwLDk5LDEwMSwxMTUsMzIsMTE2LDExMSwzMiwxMTQsMTAxLDk5LDExNywxMTQsMTE1LDEwNSwxMTgsMTAxLDMyLDExNiw5Nyw5OCwxMDgsMTAxLDU4LDMyLDM3LDExNSwwLDk5LDEwNSwxMTQsOTksMTE3LDEwOCw5NywxMTQsMzIsMTE0LDEwMSwxMDIsMTAxLDExNCwxMDEsMTEwLDk5LDEwMSw1OCwzMiwzNywxMTUsMCwxMTYsOTcsOTgsMTA4LDEwMSwzMiwzNyxcbjExNSwzMiwxMDQsOTcsMTE1LDMyLDM3LDEwMCwzMiwxMTgsOTcsMTA4LDExNywxMDEsMTE1LDMyLDEwMiwxMTEsMTE0LDMyLDM3LDEwMCwzMiw5OSwxMTEsMTA4LDExNywxMDksMTEwLDExNSwwLDEwOSwxMTcsMTA4LDExNiwxMDUsMTEyLDEwOCwxMDEsMzIsMTE0LDEwMSw5OSwxMTcsMTE0LDExNSwxMDUsMTE4LDEwMSwzMiwxMTQsMTAxLDEwMiwxMDEsMTE0LDEwMSwxMTAsOTksMTAxLDExNSw1OCwzMiwzNywxMTUsMCwxMTQsMTAxLDk5LDExNywxMTQsMTE1LDEwNSwxMTgsMTAxLDMyLDExNCwxMDEsMTAyLDEwMSwxMTQsMTAxLDExMCw5OSwxMDEsMzIsMTA1LDExMCwzMiw5NywzMiwxMTUsMTE3LDk4LDExMywxMTcsMTAxLDExNCwxMjEsNTgsMzIsMzcsMTE1LDAsMTEwLDExMSwzMiwxMTUsMTE3LDk5LDEwNCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw1OCwzMiwzNywxMTUsMCwxMTgsMTE2LDk3LDk4LDEwOCwxMDEsMzIsOTksMTExLDExMCwxMTUsMTE2LDExNCwxMTcsOTksMTE2LFxuMTExLDExNCwzMiw5OSw5NywxMDgsMTA4LDEwMSwxMDAsMzIsMTE0LDEwMSw5OSwxMTcsMTE0LDExNSwxMDUsMTE4LDEwMSwxMDgsMTIxLDU4LDMyLDM3LDExNSwwLDExOCwxMTYsOTcsOTgsMTA4LDEwMSwzMiw5OSwxMTEsMTEwLDExNSwxMTYsMTE0LDExNyw5OSwxMTYsMTExLDExNCwzMiwxMDIsOTcsMTA1LDEwOCwxMDEsMTAwLDU4LDMyLDM3LDExNSwwLDExOCwxMTYsOTcsOTgsMTA4LDEwMV0sXCJpOFwiLDQsbC5hYSsyMDQ4MCk7XG56KFszMiw5OSwxMTEsMTEwLDExNSwxMTYsMTE0LDExNyw5OSwxMTYsMTExLDExNCwzMiwxMDAsMTA1LDEwMCwzMiwxMTAsMTExLDExNiwzMiwxMDAsMTAxLDk5LDEwOCw5NywxMTQsMTAxLDMyLDExNSw5OSwxMDQsMTAxLDEwOSw5Nyw1OCwzMiwzNywxMTUsMCwxMDQsMTA1LDEwMCwxMDAsMTAxLDExMCwwLDExMSw5OCwxMDYsMTAxLDk5LDExNiwzMiwxMTAsOTcsMTA5LDEwMSwzMiwxMTQsMTAxLDExNSwxMDEsMTE0LDExOCwxMDEsMTAwLDMyLDEwMiwxMTEsMTE0LDMyLDEwNSwxMTAsMTE2LDEwMSwxMTQsMTEwLDk3LDEwOCwzMiwxMTcsMTE1LDEwMSw1OCwzMiwzNywxMTUsMCw5OSwxMTEsMTE0LDExNCwxMTcsMTEyLDExNiwzMiwxMDAsOTcsMTE2LDk3LDk4LDk3LDExNSwxMDEsMCwxMTcsMTEwLDEwNywxMTAsMTExLDExOSwxMTAsMzIsMTAwLDk3LDExNiw5Nyw5OCw5NywxMTUsMTAxLDMyLDM3LDg0LDAsMTA1LDEwMCwxMjAsMCwxMTYsOTgsMTA4LDAsMTE1LDExMywxMDgsMTA1LDExNixcbjEwMSw5NSwzNywwLDY2LDY2LDY2LDAsMTE1LDExNiw5NywxMTYsOTUsMTAzLDEwMSwxMTYsMCwzNywxMDgsMTA4LDExNywwLDMyLDM3LDEwOCwxMDgsMTE3LDAsMTE1LDExNiw5NywxMTYsOTUsMTEyLDExNywxMTUsMTA0LDAsMTE1LDExNiw5NywxMTYsOTUsMTA1LDExMCwxMDUsMTE2LDAsNjcsODIsNjksNjUsODQsNjksMzIsODQsNjUsNjYsNzYsNjksMzIsMzcsODEsNDYsMzcsMTE1LDQwLDM3LDExNSw0MSwwLDY4LDY5LDc2LDY5LDg0LDY5LDMyLDcwLDgyLDc5LDc3LDMyLDM3LDgxLDQ2LDM3LDExNSwzMiw4Nyw3Miw2OSw4Miw2OSwzMiwzNywxMTUsNjEsMzcsODEsMCwxMTYsOTgsMTA4LDQ0LDEwNSwxMDAsMTIwLDQ0LDExNSwxMTYsOTcsMTE2LDAsMTE1LDExMywxMDgsMTA1LDExNiwxMDEsOTUsMTE1LDExNiw5NywxMTYsNTEsMCwxMTUsMTEzLDEwOCwxMDUsMTE2LDEwMSw5NSwxMTUsMTE2LDk3LDExNiw1MiwwLDExNywxMTAsOTcsOTgsMTA4LDEwMSwzMiwxMTYsMTExLDMyLFxuMTA1LDEwMCwxMDEsMTEwLDExNiwxMDUsMTAyLDEyMSwzMiwxMTYsMTA0LDEwMSwzMiwxMTEsOTgsMTA2LDEwMSw5OSwxMTYsMzIsMTE2LDExMSwzMiw5OCwxMDEsMzIsMTE0LDEwMSwxMDUsMTEwLDEwMCwxMDEsMTIwLDEwMSwxMDAsMCwxMDUsMTEwLDEwMCwxMDEsMTIwLDMyLDM5LDM3LDExMywzOSwwLDQ0LDMyLDAsMTA5LDEwNSwxMTUsMTE3LDExNSwxMDEsMzIsMTExLDEwMiwzMiw5NywxMDMsMTAzLDExNCwxMDEsMTAzLDk3LDExNiwxMDEsNTgsMzIsMzcsMTE1LDQwLDQxLDAsMTE3LDExMCwxMDcsMTEwLDExMSwxMTksMTEwLDMyLDEwMiwxMTcsMTEwLDk5LDExNiwxMDUsMTExLDExMCw1OCwzMiwzNywxMTUsNDAsNDEsMCw4Miw2NSw3Myw4Myw2OSw0MCw0MSwzMiwxMDksOTcsMTIxLDMyLDExMSwxMTAsMTA4LDEyMSwzMiw5OCwxMDEsMzIsMTE3LDExNSwxMDEsMTAwLDMyLDExOSwxMDUsMTE2LDEwNCwxMDUsMTEwLDMyLDk3LDMyLDExNiwxMTQsMTA1LDEwMywxMDMsMTAxLDExNCxcbjQ1LDExMiwxMTQsMTExLDEwMywxMTQsOTcsMTA5LDAsODUsODMsNzMsNzgsNzEsMzIsNzMsNzgsNjgsNjksODgsMzIsMzcsMTE1LDMyLDcwLDc5LDgyLDMyLDczLDc4LDQ1LDc5LDgwLDY5LDgyLDY1LDg0LDc5LDgyLDAsNjcsNzksODIsODIsNjksNzYsNjUsODQsNjksNjgsMzIsMCw3Niw3Myw4Myw4NCwwLDgzLDY3LDY1LDc2LDY1LDgyLDAsNjksODgsNjksNjcsODUsODQsNjksMzIsMzcsMTE1LDM3LDExNSwzMiw4Myw4NSw2Niw4MSw4NSw2OSw4Miw4OSwzMiwzNywxMDAsMCwxMTUsMTE3LDk4LDQ1LDExNSwxMDEsMTA4LDEwMSw5OSwxMTYsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMTE1LDMyLDM3LDEwMCwzMiw5OSwxMTEsMTA4LDExNywxMDksMTEwLDExNSwzMiw0NSwzMiwxMDEsMTIwLDExMiwxMDEsOTksMTE2LDEwMSwxMDAsMzIsMzcsMTAwLDAsNDgsMTIwLDAsMTA0LDEwMSwxMjAsMzIsMTA4LDEwNSwxMTYsMTAxLDExNCw5NywxMDgsMzIsMTE2LDExMSwxMTEsMzIsOTgsXG4xMDUsMTAzLDU4LDMyLDM3LDExNSwwLDExNSwxMTMsMTA4LDEwNSwxMTYsMTAxLDk1LDEwMCwxMDEsMTE2LDk3LDk5LDEwNCwwLDExMCwxMTEsMzIsMTE1LDExNyw5OSwxMDQsMzIsMTAwLDk3LDExNiw5Nyw5OCw5NywxMTUsMTAxLDU4LDMyLDM3LDExNSwwLDk5LDk3LDExMCwxMTAsMTExLDExNiwzMiwxMDAsMTAxLDExNiw5Nyw5OSwxMDQsMzIsMTAwLDk3LDExNiw5Nyw5OCw5NywxMTUsMTAxLDMyLDM3LDExNSwwLDk5LDk3LDExMCwxMTAsMTExLDExNiwzMiw2OCw2OSw4NCw2NSw2Nyw3MiwzMiwxMDAsOTcsMTE2LDk3LDk4LDk3LDExNSwxMDEsMzIsMTE5LDEwNSwxMTYsMTA0LDEwNSwxMTAsMzIsMTE2LDExNCw5NywxMTAsMTE1LDk3LDk5LDExNiwxMDUsMTExLDExMCwwLDEwMCw5NywxMTYsOTcsOTgsOTcsMTE1LDEwMSwzMiwzNywxMTUsMzIsMTA1LDExNSwzMiwxMDgsMTExLDk5LDEwNywxMDEsMTAwLDAsMTE1LDExMywxMDgsMTA1LDExNiwxMDEsOTUsOTcsMTE2LDExNiw5Nyxcbjk5LDEwNCwwLDExNiwxMTEsMTExLDMyLDEwOSw5NywxMTAsMTIxLDMyLDk3LDExNiwxMTYsOTcsOTksMTA0LDEwMSwxMDAsMzIsMTAwLDk3LDExNiw5Nyw5OCw5NywxMTUsMTAxLDExNSwzMiw0NSwzMiwxMDksOTcsMTIwLDMyLDM3LDEwMCwwLDk5LDk3LDExMCwxMTAsMTExLDExNiwzMiw2NSw4NCw4NCw2NSw2Nyw3MiwzMiwxMDAsOTcsMTE2LDk3LDk4LDk3LDExNSwxMDEsMzIsMTE5LDEwNSwxMTYsMTA0LDEwNSwxMTAsMzIsMTE2LDExNCw5NywxMTAsMTE1LDk3LDk5LDExNiwxMDUsMTExLDExMCwwLDEwMCw5NywxMTYsOTcsOTgsOTcsMTE1LDEwMSwzMiwzNywxMTUsMzIsMTA1LDExNSwzMiw5NywxMDgsMTE0LDEwMSw5NywxMDAsMTIxLDMyLDEwNSwxMTAsMzIsMTE3LDExNSwxMDEsMCwxMDAsOTcsMTE2LDk3LDk4LDk3LDExNSwxMDEsMzIsMTA1LDExNSwzMiw5NywxMDgsMTE0LDEwMSw5NywxMDAsMTIxLDMyLDk3LDExNiwxMTYsOTcsOTksMTA0LDEwMSwxMDAsMCwxMTcsMTEwLFxuOTcsOTgsMTA4LDEwMSwzMiwxMTYsMTExLDMyLDExMSwxMTIsMTAxLDExMCwzMiwxMDAsOTcsMTE2LDk3LDk4LDk3LDExNSwxMDEsNTgsMzIsMzcsMTE1LDAsMTEwLDExMSwzMiwxMTUsMTE3LDk5LDEwNCwzMiwxMTYsMTE0LDEwNSwxMDMsMTAzLDEwMSwxMTQsNTgsMzIsMzcsODMsMCw2OCw2OSw3Niw2OSw4NCw2OSwzMiw3MCw4Miw3OSw3NywzMiwzNyw4MSw0NiwzNywxMTUsMzIsODcsNzIsNjksODIsNjksMzIsMTEwLDk3LDEwOSwxMDEsNjEsMzcsODEsMzIsNjUsNzgsNjgsMzIsMTE2LDEyMSwxMTIsMTAxLDYxLDM5LDExNiwxMTQsMTA1LDEwMywxMDMsMTAxLDExNCwzOSwwLDExNiwxMDEsMTA5LDExMiwxMTEsMTE0LDk3LDExNCwxMjEsMzIsMTE2LDExNCwxMDUsMTAzLDEwMywxMDEsMTE0LDMyLDEwOSw5NywxMjEsMzIsMTEwLDExMSwxMTYsMzIsMTA0LDk3LDExOCwxMDEsMzIsMTEzLDExNyw5NywxMDgsMTA1LDEwMiwxMDUsMTAxLDEwMCwzMiwxMTAsOTcsMTA5LDEwMSwwLDk5LFxuOTcsMTEwLDExMCwxMTEsMTE2LDMyLDk5LDExNCwxMDEsOTcsMTE2LDEwMSwzMiwxMTYsMTE0LDEwNSwxMDMsMTAzLDEwMSwxMTQsMTE1LDMyLDExMSwxMTAsMzIsMTE4LDEwNSwxMTQsMTE2LDExNyw5NywxMDgsMzIsMTE2LDk3LDk4LDEwOCwxMDEsMTE1LDAsMTE2LDExNCwxMDUsMTAzLDEwMywxMDEsMTE0LDMyLDM3LDg0LDMyLDk3LDEwOCwxMTQsMTAxLDk3LDEwMCwxMjEsMzIsMTAxLDEyMCwxMDUsMTE1LDExNiwxMTUsMCw5OSw5NywxMTAsMTEwLDExMSwxMTYsMzIsOTksMTE0LDEwMSw5NywxMTYsMTAxLDMyLDExNiwxMTQsMTA1LDEwMywxMDMsMTAxLDExNCwzMiwxMTEsMTEwLDMyLDExNSwxMjEsMTE1LDExNiwxMDEsMTA5LDMyLDExNiw5Nyw5OCwxMDgsMTAxLDAsNjYsNjksNzAsNzksODIsNjksMCw2NSw3MCw4NCw2OSw4MiwwLDk5LDk3LDExMCwxMTAsMTExLDExNiwzMiw5OSwxMTQsMTAxLDk3LDExNiwxMDEsMzIsMzcsMTE1LDMyLDExNiwxMTQsMTA1LDEwMywxMDMsMTAxLFxuMTE0LDMyLDExMSwxMTAsMzIsMTE4LDEwNSwxMDEsMTE5LDU4LDMyLDM3LDgzLDAsOTksOTcsMTEwLDExMCwxMTEsMTE2LDMyLDk5LDExNCwxMDEsOTcsMTE2LDEwMSwzMiw3Myw3OCw4Myw4NCw2OSw2NSw2OCwzMiw3OSw3MCwzMiwxMTYsMTE0LDEwNSwxMDMsMTAzLDEwMSwxMTQsMzIsMTExLDExMCwzMiwxMTYsOTcsOTgsMTA4LDEwMSw1OCwzMiwzNyw4MywwLDM3LDExNSwzMiwzNyw4NCwzMiw5OSw5NywxMTAsMTEwLDExMSwxMTYsMzIsMTE0LDEwMSwxMDIsMTAxLDExNCwxMDEsMTEwLDk5LDEwMSwzMiwxMTEsOTgsMTA2LDEwMSw5OSwxMTYsMTE1LDMyLDEwNSwxMTAsMzIsMTAwLDk3LDExNiw5Nyw5OCw5NywxMTUsMTAxLDMyLDM3LDExNSwwLDM3LDExNSwzMiw5OSw5NywxMTAsMTEwLDExMSwxMTYsMzIsMTE3LDExNSwxMDEsMzIsMTE4LDk3LDExNCwxMDUsOTcsOTgsMTA4LDEwMSwxMTUsMCw3Myw3OCw4Myw2OSw4Miw4NCwzMiw3Myw3OCw4NCw3OSwzMiwzNyw4MSw0NiwzNywxMTUsXG4zMiw4Niw2NSw3Niw4NSw2OSw4Myw0MCwzOSwxMTYsMTE0LDEwNSwxMDMsMTAzLDEwMSwxMTQsMzksNDQsMzcsODEsNDQsMzcsODEsNDQsNDgsNDQsMzksNjcsODIsNjksNjUsODQsNjksMzIsODQsODIsNzMsNzEsNzEsNjksODIsMzIsMzcsMTEzLDM5LDQxLDAsMTE2LDEyMSwxMTIsMTAxLDYxLDM5LDExNiwxMTQsMTA1LDEwMywxMDMsMTAxLDExNCwzOSwzMiw2NSw3OCw2OCwzMiwxMTAsOTcsMTA5LDEwMSw2MSwzOSwzNywxMTMsMzksMCw0NSwzNyw4NCwwLDExNCwxMDEsMTE1LDExNywxMDgsMTE2LDAsOTksOTcsOTksMTA0LDEwMSw5NSwxMTUsMTA1LDEyMiwxMDEsMCwyLDAsMCwwLDEwMSwwLDEsMyw2NiwxLDgsMCw3NiwwLDIsMCw0OCwxLDIsMSw2NiwxLDgsMCw3NiwwLDEsMCwxNjEsMCwwLDAsODcsMSwxLDAsMTEyLDk3LDEwMywxMDEsOTUsMTE1LDEwNSwxMjIsMTAxLDAsMTE1LDEwMSw5OSwxMTcsMTE0LDEwMSw5NSwxMDAsMTAxLDEwOCwxMDEsMTE2LDEwMSwwLDExMCwxMTEsXG4xMTQsMTA5LDk3LDEwOCwwLDEwMSwxMjAsOTksMTA4LDExNywxMTUsMTA1LDExOCwxMDEsMCwxMDgsMTExLDk5LDEwNywxMDUsMTEwLDEwMyw5NSwxMDksMTExLDEwMCwxMDEsMCwxMDYsMTExLDExNywxMTQsMTEwLDk3LDEwOCw5NSwxMDksMTExLDEwMCwxMDEsMCwxMDYsMTExLDExNywxMTQsMTEwLDk3LDEwOCw5NSwxMTUsMTA1LDEyMiwxMDEsOTUsMTA4LDEwNSwxMDksMTA1LDExNiwwLDk3LDExNywxMTYsMTExLDk1LDExOCw5Nyw5OSwxMTcsMTE3LDEwOSwwLDIsMCwxLDAsMTAxLDAsMSw0LDIxLDEsMCwwLDc1LDAsMiwwLDEwMiwwLDcsMCw5OSw5Nyw5OSwxMDQsMTAxLDk1LDExNSwxMTIsMTA1LDEwOCwxMDgsMCwxMDksMTA5LDk3LDExMiw5NSwxMTUsMTA1LDEyMiwxMDEsMCwxMTYsMTAxLDEwOSwxMTIsOTUsMTE1LDExNiwxMTEsMTE0LDEwMSwwLDExNiwxMDEsMTA5LDExMiw5NSwxMTUsMTE2LDExMSwxMTQsMTAxLDk1LDEwMCwxMDUsMTE0LDEwMSw5OSwxMTYsMTExLDExNCxcbjEyMSwwLDExMCwxMTEsMTE2LDMyLDk3LDMyLDExOSwxMTQsMTA1LDExNiw5Nyw5OCwxMDgsMTAxLDMyLDEwMCwxMDUsMTE0LDEwMSw5OSwxMTYsMTExLDExNCwxMjEsMCwxMTUsMTIxLDExMCw5OSwxMDQsMTE0LDExMSwxMTAsMTExLDExNywxMTUsMCw4Myw5NywxMDIsMTAxLDExNiwxMjEsMzIsMTA4LDEwMSwxMTgsMTAxLDEwOCwzMiwxMDksOTcsMTIxLDMyLDExMCwxMTEsMTE2LDMyLDk4LDEwMSwzMiw5OSwxMDQsOTcsMTEwLDEwMywxMDEsMTAwLDMyLDEwNSwxMTAsMTE1LDEwNSwxMDAsMTAxLDMyLDk3LDMyLDExNiwxMTQsOTcsMTEwLDExNSw5Nyw5OSwxMTYsMTA1LDExMSwxMTAsMCwxMDUsMTE1LDExNSwxMDUsMTE1LDEwNSwwLDExNSwxMTUsMTA1LDEwNSwwLDExNSwxMDUsMTA1LDAsMTA1LDEwNSwxMTUsMCwxMDUsMTE1LDEwNSwwLDEwNSwxMTUsMTA1LDExNSwxMDUsMCwxMDUsMTE1LDExNSwwLDEwNSwxMTUsMCwxMDUsMTA1LDExNSwxMTUsMTE1LDExNSwxMTUsMTE1LDAsNzgsXG43OSw3OCw2OSwwLDExNSwxMDUsMCwxMDUsMTEwLDExNiwxMDEsMTAzLDExNCwxMDUsMTE2LDEyMSw5NSw5OSwxMDQsMTAxLDk5LDEwNywwLDQyLDQyLDQyLDMyLDEwNSwxMTAsMzIsMTAwLDk3LDExNiw5Nyw5OCw5NywxMTUsMTAxLDMyLDM3LDExNSwzMiw0Miw0Miw0MiwxMCwwLDc4LDg1LDc2LDc2LDMyLDExOCw5NywxMDgsMTE3LDEwMSwzMiwxMDUsMTEwLDMyLDM3LDExNSw0NiwzNywxMTUsMCwxMTQsMTExLDExOSwzMiwwLDMyLDEwOSwxMDUsMTE1LDExNSwxMDUsMTEwLDEwMywzMiwxMDIsMTE0LDExMSwxMDksMzIsMTA1LDExMCwxMDAsMTAxLDEyMCwzMiwwLDExMCwxMTEsMTEwLDQ1LDExNywxMTAsMTA1LDExMywxMTcsMTAxLDMyLDEwMSwxMTAsMTE2LDExNCwxMjEsMzIsMTA1LDExMCwzMiwxMDUsMTEwLDEwMCwxMDEsMTIwLDMyLDAsMTE5LDExNCwxMTEsMTEwLDEwMywzMiwzNSwzMiwxMTEsMTAyLDMyLDEwMSwxMTAsMTE2LDExNCwxMDUsMTAxLDExNSwzMiwxMDUsMTEwLDMyLFxuMTA1LDExMCwxMDAsMTAxLDEyMCwzMiwwLDkxLDEsMCwwLDIxLDEsNCwwLDk3LDAsMywwLDg3LDMsMSwwLDExMSwxMDcsMCwxMDEsMTEwLDk5LDExMSwxMDAsMTA1LDExMCwxMDMsMCwxMTcsMTEwLDExNSwxMTcsMTEyLDExMiwxMTEsMTE0LDExNiwxMDEsMTAwLDMyLDEwMSwxMTAsOTksMTExLDEwMCwxMDUsMTEwLDEwMyw1OCwzMiwzNywxMTUsMCwyLDAsMSwwLDEwMiwwLDAsMCwyLDAsMCwwLDEwMSwwLDEsMCw4NywxLDEsMCw5OSwxMTEsMTA5LDExMiwxMDUsMTA4LDEwMSw5NSwxMTEsMTEyLDExNiwxMDUsMTExLDExMCwwLDEwMiwxMTcsMTA4LDEwOCwwLDExNCwxMDEsMTE1LDExNiw5NywxMTQsMTE2LDAsMTE2LDExNCwxMTcsMTEwLDk5LDk3LDExNiwxMDEsMCwxMTksOTcsMTA4LDk1LDk3LDExNywxMTYsMTExLDk5LDEwNCwxMDEsOTksMTA3LDExMiwxMTEsMTA1LDExMCwxMTYsMCwxMTYsMTA1LDEwOSwxMDEsMTExLDExNywxMTYsMCwxMTUsMTExLDEwMiwxMTYsOTUsMTA0LDEwMSxcbjk3LDExMiw5NSwxMDgsMTA1LDEwOSwxMDUsMTE2LDAsMTE2LDEwNCwxMTQsMTAxLDk3LDEwMCwxMTUsMCw5OCwxMTcsMTE1LDEyMSwwLDk5LDEwNCwxMDEsOTksMTA3LDExMiwxMTEsMTA1LDExMCwxMTYsMTAxLDEwMCwwLDg1LDg0LDcwLDU2LDAsODUsODQsNzAsNDUsNTYsMCw4NSw4NCw3MCw0NSw0OSw1NCwxMDgsMTAxLDAsODUsODQsNzAsNDUsNDksNTQsOTgsMTAxLDAsODUsODQsNzAsNDksNTQsMTA4LDEwMSwwLDg1LDg0LDcwLDQ5LDU0LDk4LDEwMSwwLDg1LDg0LDcwLDQ1LDQ5LDU0LDAsODUsODQsNzAsNDksNTQsMCwzNyw5NSwwLDAsMTA4LDEwNSwxMDcsMTAxLDAsMTAzLDEwOCwxMTEsOTgsMCw3Niw3Myw3NSw2OSwzMiwxMTEsMTE0LDMyLDcxLDc2LDc5LDY2LDMyLDExMiw5NywxMTYsMTE2LDEwMSwxMTQsMTEwLDMyLDExNiwxMTEsMTExLDMyLDk5LDExMSwxMDksMTEyLDEwOCwxMDEsMTIwLDAsNjksODMsNjcsNjUsODAsNjksMzIsMTAxLDEyMCwxMTIsMTE0LDEwMSwxMTUsXG4xMTUsMTA1LDExMSwxMTAsMzIsMTA5LDExNywxMTUsMTE2LDMyLDk4LDEwMSwzMiw5NywzMiwxMTUsMTA1LDExMCwxMDMsMTA4LDEwMSwzMiw5OSwxMDQsOTcsMTE0LDk3LDk5LDExNiwxMDEsMTE0LDAsMTAyLDExMSwxMTQsMTAxLDEwNSwxMDMsMTEwLDMyLDEwNywxMDEsMTIxLDMyLDEwOSwxMDUsMTE1LDEwOSw5NywxMTYsOTksMTA0LDMyLDQ1LDMyLDM0LDM3LDExOSwzNCwzMiwxMTQsMTAxLDEwMiwxMDEsMTE0LDEwMSwxMTAsOTksMTA1LDExMCwxMDMsMzIsMzQsMzcsMTE5LDM0LDAsMTE2LDk3LDk4LDEwOCwxMDEsMCwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDAsMTAyLDEwNywxMDUsMTAwLDAsODMsNjksODQsMzIsNzgsODUsNzYsNzYsMCw4Myw2OSw4NCwzMiw2OCw2OSw3MCw2NSw4NSw3Niw4NCwwLDY3LDY1LDgzLDY3LDY1LDY4LDY5LDAsODIsNjksODMsODQsODIsNzMsNjcsODQsMCw3OCw3OSwzMiw2NSw2Nyw4NCw3Myw3OSw3OCwwLDEwNSwxMDAsMCwxMTUsMTAxLDExMyxcbjAsMTAyLDExNCwxMTEsMTA5LDAsMTE2LDExMSwwLDExMSwxMTAsOTUsMTE3LDExMiwxMDAsOTcsMTE2LDEwMSwwLDExMSwxMTAsOTUsMTAwLDEwMSwxMDgsMTAxLDExNiwxMDEsMCwxMDksOTcsMTE2LDk5LDEwNCwwLDExMCw5NywxMDksMTAxLDAsMTAyLDEwNSwxMDgsMTAxLDAsOTksMCwxMTcsMCwxMTIsMTA3LDAsMTE3LDExMCwxMDUsMTEzLDExNywxMDEsMCwxMTEsMTE0LDEwNSwxMDMsMTA1LDExMCwwLDExMiw5NywxMTQsMTE2LDEwNSw5NywxMDgsMCwxMTUsMTAxLDExMywxMTAsMTExLDAsOTksMTA1LDEwMCwwLDk5LDExMSwxMDgsMTA4LDAsMTA3LDEwMSwxMjEsMCwxMDUsMTEwLDEwMCwxMDEsMTIwLDAsMTE5LDEwNSwxMDAsMTE2LDEwNCwwLDEwNCwxMDEsMTA1LDEwMywxMDQsMTE2LDAsMTE2LDEyMSwxMTIsMTAxLDAsMTEwLDExMSwxMTYsMTEwLDExNywxMDgsMTA4LDAsMTAwLDEwMiwxMDgsMTE2LDk1LDExOCw5NywxMDgsMTE3LDEwMSwwLDExNiwxMDEsMTA5LDExMiwxMTEsXG4xMTQsOTcsMTE0LDEyMSwzMiwxMTUsMTE2LDExMSwxMTQsOTcsMTAzLDEwMSwzMiw5OSw5NywxMTAsMTEwLDExMSwxMTYsMzIsOTgsMTAxLDMyLDk5LDEwNCw5NywxMTAsMTAzLDEwMSwxMDAsMzIsMTAyLDExNCwxMTEsMTA5LDMyLDExOSwxMDUsMTE2LDEwNCwxMDUsMTEwLDMyLDk3LDMyLDExNiwxMTQsOTcsMTEwLDExNSw5Nyw5OSwxMTYsMTA1LDExMSwxMTAsMCwxMTAsMTExLDExMCwxMDEsMCwxMDUsMTEwLDk5LDExNCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDEwOCwwLDEwMCwxMDEsMTA4LDEwMSwxMTYsMTAxLDAsMTEyLDEwMSwxMTQsMTE1LDEwNSwxMTUsMTE2LDAsMTExLDEwMiwxMDIsMCwxMTksOTcsMTA4LDAsOTcsMTEyLDExMiwxMDgsMTA1LDk5LDk3LDExNiwxMDUsMTExLDExMCw5NSwxMDUsMTAwLDAsOTcsMTE3LDExNiwxMTEsMTA5LDk3LDExNiwxMDUsOTksOTUsMTA1LDExMCwxMDAsMTAxLDEyMCwwLDk4LDExNywxMTUsMTIxLDk1LDExNiwxMDUsMTA5LDEwMSwxMTEsXG4xMTcsMTE2LDAsOTksOTcsMTE1LDEwMSw5NSwxMTUsMTAxLDExMCwxMTUsMTA1LDExNiwxMDUsMTE4LDEwMSw5NSwxMDgsMTA1LDEwNywxMDEsMCw5OSwxMDEsMTA4LDEwOCw5NSwxMTUsMTA1LDEyMiwxMDEsOTUsOTksMTA0LDEwMSw5OSwxMDcsMCw5OSwxMDQsMTAxLDk5LDEwNywxMTIsMTExLDEwNSwxMTAsMTE2LDk1LDEwMiwxMTcsMTA4LDEwOCwxMDIsMTE1LDEyMSwxMTAsOTksMCw5OSwxMTEsMTA4LDEwOCw5NywxMTYsMTA1LDExMSwxMTAsOTUsMTA4LDEwNSwxMTUsMTE2LDAsOTksMTExLDEwOSwxMTIsMTA1LDEwOCwxMDEsOTUsMTExLDExMiwxMTYsMTA1LDExMSwxMTAsMTE1LDAsOTksMTExLDExNywxMTAsMTE2LDk1LDk5LDEwNCw5NywxMTAsMTAzLDEwMSwxMTUsMCwxMDAsOTcsMTE2LDk3LDk1LDExOCwxMDEsMTE0LDExNSwxMDUsMTExLDExMCwwLDEwMCw5NywxMTYsOTcsOTgsOTcsMTE1LDEwMSw5NSwxMDgsMTA1LDExNSwxMTYsMCwxMDAsMTAxLDEwMiw5NywxMTcsMTA4LFxuMTE2LDk1LDk5LDk3LDk5LDEwNCwxMDEsOTUsMTE1LDEwNSwxMjIsMTAxLDAsMTAwLDEwMSwxMDIsMTAxLDExNCw5NSwxMDIsMTExLDExNCwxMDEsMTA1LDEwMywxMTAsOTUsMTA3LDEwMSwxMjEsMTE1LDAsMTAxLDEwOSwxMTIsMTE2LDEyMSw5NSwxMTQsMTAxLDExNSwxMTcsMTA4LDExNiw5NSw5OSw5NywxMDgsMTA4LDk4LDk3LDk5LDEwNywxMTUsMCwxMDIsMTExLDExNCwxMDEsMTA1LDEwMywxMTAsOTUsMTA3LDEwMSwxMjEsOTUsOTksMTA0LDEwMSw5OSwxMDcsMCwxMDIsMTExLDExNCwxMDEsMTA1LDEwMywxMTAsOTUsMTA3LDEwMSwxMjEsOTUsMTA4LDEwNSwxMTUsMTE2LDAsMTAyLDExMSwxMTQsMTAxLDEwNSwxMDMsMTEwLDk1LDEwNywxMDEsMTIxLDExNSwwLDEwMiwxMTQsMTAxLDEwMSwxMDgsMTA1LDExNSwxMTYsOTUsOTksMTExLDExNywxMTAsMTE2LDAsMTAyLDExNywxMDgsMTA4LDk1LDk5LDExMSwxMDgsMTE3LDEwOSwxMTAsOTUsMTEwLDk3LDEwOSwxMDEsMTE1LDAsXG4xMDIsMTE3LDEwOCwxMDgsMTAyLDExNSwxMjEsMTEwLDk5LDAsMTA1LDEwMywxMTAsMTExLDExNCwxMDEsOTUsOTksMTA0LDEwMSw5OSwxMDcsOTUsOTksMTExLDExMCwxMTUsMTE2LDExNCw5NywxMDUsMTEwLDExNiwxMTUsMCwxMDUsMTEwLDk5LDExNCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDEwOCw5NSwxMTgsOTcsOTksMTE3LDExNywxMDksMCwxMDUsMTEwLDEwMCwxMDEsMTIwLDk1LDEwNSwxMTAsMTAyLDExMSwwLDEwNSwxMTAsMTAwLDEwMSwxMjAsOTUsMTA4LDEwNSwxMTUsMTE2LDAsMTA1LDExMCwxMDAsMTAxLDEyMCw5NSwxMjAsMTA1LDExMCwxMDIsMTExLDAsMTA4LDEwMSwxMDMsOTcsOTksMTIxLDk1LDEwMiwxMDUsMTA4LDEwMSw5NSwxMDIsMTExLDExNCwxMDksOTcsMTE2LDAsMTA5LDk3LDEyMCw5NSwxMTIsOTcsMTAzLDEwMSw5NSw5OSwxMTEsMTE3LDExMCwxMTYsMCwxMTIsOTcsMTAzLDEwMSw5NSw5OSwxMTEsMTE3LDExMCwxMTYsMCwxMTMsMTE3LDEwMSwxMTQsXG4xMjEsOTUsMTExLDExMCwxMDgsMTIxLDAsMTEzLDExNywxMDUsOTksMTA3LDk1LDk5LDEwNCwxMDEsOTksMTA3LDAsMTE0LDEwMSw5NywxMDAsOTUsMTE3LDExMCw5OSwxMTEsMTA5LDEwOSwxMDUsMTE2LDExNiwxMDEsMTAwLDAsMTE0LDEwMSw5OSwxMTcsMTE0LDExNSwxMDUsMTE4LDEwMSw5NSwxMTYsMTE0LDEwNSwxMDMsMTAzLDEwMSwxMTQsMTE1LDAsMTE0LDEwMSwxMTgsMTAxLDExNCwxMTUsMTAxLDk1LDExNywxMTAsMTExLDExNCwxMDAsMTAxLDExNCwxMDEsMTAwLDk1LDExNSwxMDEsMTA4LDEwMSw5OSwxMTYsMTE1LDAsMTE1LDk5LDEwNCwxMDEsMTA5LDk3LDk1LDExOCwxMDEsMTE0LDExNSwxMDUsMTExLDExMCwwLDExNSwxMDQsMTExLDExNCwxMTYsOTUsOTksMTExLDEwOCwxMTcsMTA5LDExMCw5NSwxMTAsOTcsMTA5LDEwMSwxMTUsMCwxMTUsMTA0LDExNCwxMDUsMTEwLDEwNyw5NSwxMDksMTAxLDEwOSwxMTEsMTE0LDEyMSwwLDExNSwxMTYsOTcsMTE2LDExNSwwLDExNixcbjk3LDk4LDEwOCwxMDEsOTUsMTA1LDExMCwxMDIsMTExLDAsMTE3LDExNSwxMDEsMTE0LDk1LDExOCwxMDEsMTE0LDExNSwxMDUsMTExLDExMCwwLDExOSw5NywxMDgsOTUsOTksMTA0LDEwMSw5OSwxMDcsMTEyLDExMSwxMDUsMTEwLDExNiwwLDExOSwxMTQsMTA1LDExNiw5Nyw5OCwxMDgsMTAxLDk1LDExNSw5OSwxMDQsMTAxLDEwOSw5NywwLDExMCwxMTEsMzIsMTE1LDExNyw5OSwxMDQsMzIsMTA1LDExMCwxMDAsMTAxLDEyMCw1OCwzMiwzNyw4MywwLDEwNSwxMTAsMTAwLDEwMSwxMjAsMzIsOTcsMTE1LDExNSwxMTEsOTksMTA1LDk3LDExNiwxMDEsMTAwLDMyLDExOSwxMDUsMTE2LDEwNCwzMiw4NSw3OCw3Myw4MSw4NSw2OSwzMiwxMTEsMTE0LDMyLDgwLDgyLDczLDc3LDY1LDgyLDg5LDMyLDc1LDY5LDg5LDMyLDk5LDExMSwxMTAsMTE1LDExNiwxMTQsOTcsMTA1LDExMCwxMTYsMzIsOTksOTcsMTEwLDExMCwxMTEsMTE2LDMyLDk4LDEwMSwzMiwxMDAsMTE0LDExMSwxMTIsMTEyLFxuMTAxLDEwMCwwLDY4LDY5LDc2LDY5LDg0LDY5LDMyLDcwLDgyLDc5LDc3LDMyLDM3LDgxLDQ2LDM3LDExNSwzMiw4Nyw3Miw2OSw4Miw2OSwzMiwxMTAsOTcsMTA5LDEwMSw2MSwzNyw4MSwzMiw2NSw3OCw2OCwzMiwxMTYsMTIxLDExMiwxMDEsNjEsMzksMTA1LDExMCwxMDAsMTAxLDEyMCwzOSwwLDg1LDgwLDY4LDY1LDg0LDY5LDMyLDM3LDgxLDQ2LDM3LDExNSwzMiw4Myw2OSw4NCwzMiwxMTQsMTExLDExMSwxMTYsMTEyLDk3LDEwMywxMDEsNjEsMzcsMTAwLDMyLDg3LDcyLDY5LDgyLDY5LDMyLDM1LDM3LDEwMCwzMiw2NSw3OCw2OCwzMiwxMTQsMTExLDExMSwxMTYsMTEyLDk3LDEwMywxMDEsNjEsMzUsMzcsMTAwLDAsMTE1LDExMywxMDgsMTA1LDExNiwxMDEsOTUsMTE1LDExNiw5NywxMTYsMzcsMTAwLDAsMTE1LDEyMSwxMTAsMTE2LDk3LDEyMCwzMiwxMDEsMTE0LDExNCwxMTEsMTE0LDMyLDk3LDEwMiwxMTYsMTAxLDExNCwzMiw5OSwxMTEsMTA4LDExNywxMDksMTEwLDMyLFxuMTEwLDk3LDEwOSwxMDEsMzIsMzQsMzcsNDYsNDIsMTE1LDM0LDAsNDgsMCwxMTgsOTcsMTE0LDEwNSw5Nyw5OCwxMDgsMTAxLDMyLDExMCwxMTcsMTA5LDk4LDEwMSwxMTQsMzIsMTA5LDExNywxMTUsMTE2LDMyLDk4LDEwMSwzMiw5OCwxMDEsMTE2LDExOSwxMDEsMTAxLDExMCwzMiw2Myw0OSwzMiw5NywxMTAsMTAwLDMyLDYzLDM3LDEwMCwwLDExNiwxMTEsMTExLDMyLDEwOSw5NywxMTAsMTIxLDMyLDgzLDgxLDc2LDMyLDExOCw5NywxMTQsMTA1LDk3LDk4LDEwOCwxMDEsMTE1LDAsMTE2LDk3LDk4LDEwOCwxMDEsMzIsMzcsODMsMzIsMTA0LDk3LDExNSwzMiwxMTAsMTExLDMyLDk5LDExMSwxMDgsMTE3LDEwOSwxMTAsMzIsMTEwLDk3LDEwOSwxMDEsMTAwLDMyLDM3LDExNSwwLDExNiw5Nyw5OCwxMDgsMTAxLDMyLDM3LDgzLDMyLDEwNCw5NywxMTUsMzIsMzcsMTAwLDMyLDk5LDExMSwxMDgsMTE3LDEwOSwxMTAsMTE1LDMyLDk4LDExNywxMTYsMzIsMzcsMTAwLDMyLDExOCw5NyxcbjEwOCwxMTcsMTAxLDExNSwzMiwxMTksMTAxLDExNCwxMDEsMzIsMTE1LDExNywxMTIsMTEyLDEwOCwxMDUsMTAxLDEwMCwwLDM3LDEwMCwzMiwxMTgsOTcsMTA4LDExNywxMDEsMTE1LDMyLDEwMiwxMTEsMTE0LDMyLDM3LDEwMCwzMiw5OSwxMTEsMTA4LDExNywxMDksMTEwLDExNSwwLDExNCwxMTEsMTE5LDExNSwzMiwxMDUsMTEwLDExNSwxMDEsMTE0LDExNiwxMDEsMTAwLDAsMzUsMCwyLDAsMTE0LDAsMCwwLDk5LDAsMiwwLDExNSwwLDAsMCwxMTEsMCwwLDAsOTcsMTE2LDMyLDEwOSwxMTEsMTE1LDExNiwzMiwzNywxMDAsMzIsMTE2LDk3LDk4LDEwOCwxMDEsMTE1LDMyLDEwNSwxMTAsMzIsOTcsMzIsMTA2LDExMSwxMDUsMTEwLDAsMjYsMjQsMjMsMjUsMCwwLDU3LDUzLDI2LDIzLDI1LDI0LDYxLDU5LDU4LDYwLDcsNiw1Nyw1Myw4Myw2OSw2NSw4Miw2Nyw3MiwwLDgzLDY3LDY1LDc4LDAsMzIsODMsODUsNjYsODEsODUsNjksODIsODksMzIsMzcsMTAwLDAsMzIsODQsNjUsNjYsXG43Niw2OSwzMiwzNywxMTUsMCwzMiw2NSw4MywzMiwzNywxMTUsMCw4MCw4Miw3Myw3Nyw2NSw4Miw4OSwzMiw3NSw2OSw4OSwwLDY1LDg1LDg0LDc5LDc3LDY1LDg0LDczLDY3LDMyLDgwLDY1LDgyLDg0LDczLDY1LDc2LDMyLDY3LDc5LDg2LDY5LDgyLDczLDc4LDcxLDMyLDczLDc4LDY4LDY5LDg4LDAsNjUsODUsODQsNzksNzcsNjUsODQsNzMsNjcsMzIsNjcsNzksODYsNjksODIsNzMsNzgsNzEsMzIsNzMsNzgsNjgsNjksODgsMCw2Nyw3OSw4Niw2OSw4Miw3Myw3OCw3MSwzMiw3Myw3OCw2OCw2OSw4OCwzMiwzNywxMTUsMCw3Myw3OCw2OCw2OSw4OCwzMiwzNywxMTUsMCwzMiw4NSw4Myw3Myw3OCw3MSwzMiwwLDYxLDAsNjIsNjMsMzIsNjUsNzgsNjgsMzIsMTE0LDExMSwxMTksMTA1LDEwMCw2MCwwLDYyLDAsNjAsMCwzMiw4NSw4Myw3Myw3OCw3MSwzMiw3Myw3OCw4NCw2OSw3MSw2OSw4MiwzMiw4MCw4Miw3Myw3Nyw2NSw4Miw4OSwzMiw3NSw2OSw4OSwzMiw0MCwxMTQsMTExLFxuMTE5LDEwNSwxMDAsMzcsMTE1LDYzLDQxLDAsMzIsODYsNzMsODIsODQsODUsNjUsNzYsMzIsODQsNjUsNjYsNzYsNjksMzIsNzMsNzgsNjgsNjksODgsMzIsMzcsMTAwLDU4LDM3LDExNSwwLDMyLDQwLDAsMzIsNjUsNzgsNjgsMzIsMCwzNywxMTUsNjEsNjMsMCw2NSw3OCw4OSw0MCwzNywxMTUsNDEsMCw0MSwwLDQwLDAsNDQsMCw2MCwxMDEsMTIwLDExMiwxMTQsNjIsMCw5NywxMTcsMTE2LDExMSwxMDksOTcsMTE2LDEwNSw5OSwzMiwxMDUsMTEwLDEwMCwxMDEsMTIwLDMyLDExMSwxMTAsMzIsMzcsMTE1LDQwLDM3LDExNSw0MSwwLDk3LDExNywxMTYsMTExLDQ1LDEwNSwxMTAsMTAwLDEwMSwxMjAsMCwxMTAsMTExLDMyLDExMywxMTcsMTAxLDExNCwxMjEsMzIsMTE1LDExMSwxMDgsMTE3LDExNiwxMDUsMTExLDExMCwwLDEwLDEwLDksOSw4LDgsNyw3LDcsNiw2LDYsNSw1LDUsNCw0LDQsNCwzLDMsMywzLDMsMywyLDIsMiwyLDIsMiwyLDM3LDExNSw0NiwxMjAsNjYsMTAxLDExNSxcbjExNiw3MywxMTAsMTAwLDEwMSwxMjAsMzIsMTA5LDk3LDEwOCwxMDIsMTE3LDExMCw5OSwxMTYsMTA1LDExMSwxMTAsMCw0MSwzOSw2Niw3Myw3OCw2NSw4Miw4OSwwLDExNCwxMDEsMTAzLDEwMSwxMjAsMTEyLDAsMTE2LDExMSwxMTEsMzIsMTA5LDk3LDExMCwxMjEsMzIsOTcsMTE0LDEwMywxMTcsMTA5LDEwMSwxMTAsMTE2LDExNSwzMiwxMTEsMTEwLDMyLDM3LDExNSw0MCw0MSwzMiw0NSwzMiwxMDksOTcsMTIwLDMyLDM3LDEwMCwwLDQ1LDQ1LDMyLDg0LDgyLDczLDcxLDcxLDY5LDgyLDMyLDM3LDExNSwwLDAsMCwwLDEsMSwxLDEsMSwwLDE2LDAsMSwwLDEsMSwxLDMsMywxLDE4LDEsMywzLDksOSw5LDksMzgsMzgsOSw5LDksOSw5LDMsMywxMSwxMSwxMSwxMSwxMSwxMSwxLDM4LDM4LDM4LDM4LDM4LDM4LDM4LDM4LDM4LDM4LDEsMTgsMSwxLDEsMSwxLDEsMSwzNSwxMSwxLDEsMywzLDMsMSwxLDEsMiwyLDgsMCwxNiwxNiwxNiwxNiwwLDE2LDE2LDAsMCwxNiwxNiwwLDAsMCxcbjAsMiwyLDIsMCwwLDAsMTYsMCwwLDE2LDE2LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwxNiwxNiwwLDAsMCwwLDAsMCwwLDAsMTYsMCw0LDQsMCwwLDE2LDE2LDAsMTYsMCwxNiwxNiwwLDAsMCwwLDAsMCw2LDE2LDAsNCwyNiwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMTYsMTYsMCwwLDAsMCwxLDIsMyw0LDYsOCw4LDAsMCwwLDAsMCwwLDEsMSwyLDIsMywzLDQsNCw1LDUsNiw2LDcsNyw4LDgsOSw5LDEwLDEwLDExLDExLDEyLDEyLDEzLDEzLDE0LDE0LDE1LDE1LDE2LDE2LDE3LDE3LDE4LDE4LDE5LDE5LDIwLDIwLDIxLDIxLDIyLDIyLDIzLDIzLDI0LDI0LDI1LDI1LDI2LDI2LDI3LDI3LDI4LDI4LDI5LDI5LDMwLDMwLDMxLDMxLDMyLDMyLDMzLDMzLDM0LDM0LDM1LDM1LDM2LDM2LDM3LDM3LDM4LDM4LDM5LDM5LDQwLDQwLDQxLDQxLDQyLDQyLDQzLDQzLDQ0LDQ0LDQ1LDQ1LDQ2LDQ2LDQ3LDQ3LDQ4LDQ4LDQ5LDQ5LDUwLDUwLDUxLDUxLDUyLDUyLDUzLDUzLDU0LDU0LDU1LDU1LFxuNTYsNTYsNTcsNTcsNzAsNzksODIsNjksNzMsNzEsNzgsMzIsNzUsNjksODksMzIsOTksMTExLDExMCwxMTUsMTE2LDExNCw5NywxMDUsMTEwLDExNiwzMiwxMDIsOTcsMTA1LDEwOCwxMDEsMTAwLDAsMzcsMTE1LDQ2LDExNCwxMTEsMTE5LDEwNSwxMDAsMCwxMTYsOTcsOTgsMTA4LDEwMSwzMiwzNywxMTUsMzIsMTA5LDk3LDEyMSwzMiwxMTAsMTExLDExNiwzMiw5OCwxMDEsMzIsMTA5LDExMSwxMDAsMTA1LDEwMiwxMDUsMTAxLDEwMCwwLDk5LDk3LDExMCwxMTAsMTExLDExNiwzMiwxMDksMTExLDEwMCwxMDUsMTAyLDEyMSwzMiwzNywxMTUsMzIsOTgsMTAxLDk5LDk3LDExNywxMTUsMTAxLDMyLDEwNSwxMTYsMzIsMTA1LDExNSwzMiw5NywzMiwxMTgsMTA1LDEwMSwxMTksMCwzNywxMDAsMzIsOTksMTExLDEwOCwxMTcsMTA5LDExMCwxMTUsMzIsOTcsMTE1LDExNSwxMDUsMTAzLDExMCwxMDEsMTAwLDMyLDM3LDEwMCwzMiwxMTgsOTcsMTA4LDExNywxMDEsMTE1LDAsMTE0LDExMSxcbjExOSwxMTUsMzIsMTE3LDExMiwxMDAsOTcsMTE2LDEwMSwxMDAsMCwxMTYsMTExLDExMSwzMiwxMDksOTcsMTEwLDEyMSwzMiw5OSwxMTEsMTA4LDExNywxMDksMTEwLDExNSwzMiwxMDUsMTEwLDMyLDM3LDExNSwwLDExNCwxMTEsMTE5LDExNSwzMiwxMDAsMTAxLDEwOCwxMDEsMTE2LDEwMSwxMDAsMCwwLDcsNCw2LDQsNDAsMTAsNSwzMiwxNCw1LDQ4LDE5LDQsNTYsMjMsNSwxLDI4LDUsMywxMTAsOTcsMTE2LDExNywxMTQsOTcsMTA4LDEwMSwxMDIsMTE2LDExMSwxMTcsMTE2LDEwMSwxMTQsMTA1LDEwMywxMDQsMTE2LDEwMiwxMTcsMTA4LDEwOCwxMDUsMTEwLDExMCwxMDEsMTE0LDk5LDExNCwxMTEsMTE1LDExNSwwLDMyLDAsMTE3LDExMCwxMDcsMTEwLDExMSwxMTksMTEwLDMyLDExMSwxMTQsMzIsMTE3LDExMCwxMTUsMTE3LDExMiwxMTIsMTExLDExNCwxMTYsMTAxLDEwMCwzMiwxMDYsMTExLDEwNSwxMTAsMzIsMTE2LDEyMSwxMTIsMTAxLDU4LDMyLDM3LDg0LDMyLDM3LFxuODQsMzcsMTE1LDM3LDg0LDAsODIsNzMsNzEsNzIsODQsMzIsOTcsMTEwLDEwMCwzMiw3MCw4NSw3Niw3NiwzMiw3OSw4NSw4NCw2OSw4MiwzMiw3NCw3OSw3Myw3OCwxMTUsMzIsOTcsMTE0LDEwMSwzMiwxMTAsMTExLDExNiwzMiw5OSwxMTcsMTE0LDExNCwxMDEsMTEwLDExNiwxMDgsMTIxLDMyLDExNSwxMTcsMTEyLDExMiwxMTEsMTE0LDExNiwxMDEsMTAwLDAsNzksNzgsMCw4NSw4Myw3Myw3OCw3MSwwLDk3LDMyLDc0LDc5LDczLDc4LDMyLDk5LDEwOCw5NywxMTcsMTE1LDEwMSwzMiwxMDUsMTE1LDMyLDExNCwxMDEsMTEzLDExNywxMDUsMTE0LDEwMSwxMDAsMzIsOTgsMTAxLDEwMiwxMTEsMTE0LDEwMSwzMiwzNywxMTUsMCwxMTYsMTExLDExMSwzMiwxMDksOTcsMTEwLDEyMSwzMiwxMTYsMTAxLDExNCwxMDksMTE1LDMyLDEwNSwxMTAsMzIsOTksMTExLDEwOSwxMTIsMTExLDExNywxMTAsMTAwLDMyLDgzLDY5LDc2LDY5LDY3LDg0LDAsMTAxLDEyMCwxMTIsMTAxLDk5LDExNixcbjEwMSwxMDAsMzIsMzcsMTAwLDMyLDk5LDExMSwxMDgsMTE3LDEwOSwxMTAsMTE1LDMyLDEwMiwxMTEsMTE0LDMyLDM5LDM3LDExNSwzOSwzMiw5OCwxMTcsMTE2LDMyLDEwMywxMTEsMTE2LDMyLDM3LDEwMCwwLDY4LDczLDgzLDg0LDczLDc4LDY3LDg0LDAsNzEsODIsNzksODUsODAsMzIsNjYsODksMCw4Miw3Myw3MSw3Miw4NCwzMiw4MCw2NSw4Miw4NCwzMiw3OSw3MCwzMiw3OSw4Miw2OCw2OSw4MiwzMiw2Niw4OSwwLDc5LDgyLDY4LDY5LDgyLDMyLDY2LDg5LDAsOTksMTExLDEwOCwxMTcsMTA5LDExMCwzNywxMDAsMCwxMDksMTA1LDExMCwwLDEwOSw5NywxMjAsMCwzMiw4NSw4Myw3Myw3OCw3MSwzMiw2Nyw3OSw4Niw2OSw4Miw3Myw3OCw3MSwzMiw3Myw3OCw2OCw2OSw4OCwzMiwwLDgzLDY3LDY1LDc4LDMyLDg0LDY1LDY2LDc2LDY5LDMyLDM3LDExNSwzNywxMTUsMzcsMTE1LDAsNjgsNzMsODMsODQsNzMsNzgsNjcsODQsMzIsOTcsMTAzLDEwMywxMTQsMTAxLDEwMyw5NyxcbjExNiwxMDEsMTE1LDMyLDEwOSwxMTcsMTE1LDExNiwzMiwxMDQsOTcsMTE4LDEwMSwzMiwxMDEsMTIwLDk3LDk5LDExNiwxMDgsMTIxLDMyLDExMSwxMTAsMTAxLDMyLDk3LDExNCwxMDMsMTE3LDEwOSwxMDEsMTEwLDExNiwwLDg1LDgzLDY5LDMyLDg0LDY5LDc3LDgwLDMyLDY2LDQ1LDg0LDgyLDY5LDY5LDMyLDcwLDc5LDgyLDMyLDM3LDExNSwwLDc5LDgyLDY4LDY5LDgyLDMyLDY2LDg5LDMyLDk5LDEwOCw5NywxMTcsMTE1LDEwMSwzMiwxMTUsMTA0LDExMSwxMTcsMTA4LDEwMCwzMiw5OSwxMTEsMTA5LDEwMSwzMiw5NywxMDIsMTE2LDEwMSwxMTQsMzIsMzcsMTE1LDMyLDExMCwxMTEsMTE2LDMyLDk4LDEwMSwxMDIsMTExLDExNCwxMDEsMCw3Niw3Myw3Nyw3Myw4NCwzMiw5OSwxMDgsOTcsMTE3LDExNSwxMDEsMzIsMTE1LDEwNCwxMTEsMTE3LDEwOCwxMDAsMzIsOTksMTExLDEwOSwxMDEsMzIsOTcsMTAyLDExNiwxMDEsMTE0LDMyLDM3LDExNSwzMiwxMTAsMTExLDExNiwzMixcbjk4LDEwMSwxMDIsMTExLDExNCwxMDEsMCw4NSw4Myw3Myw3OCw3MSwzMiw4NCw2OSw3Nyw4MCwzMiw2Niw0NSw4NCw4Miw2OSw2OSwzMiwwLDY3LDc5LDc3LDgwLDc5LDg1LDc4LDY4LDMyLDgzLDg1LDY2LDgxLDg1LDY5LDgyLDczLDY5LDgzLDMyLDM3LDEwMCwzMiw2NSw3OCw2OCwzMiwzNywxMDAsMzIsMzcsMTE1LDQwLDM3LDExNSw0MSwwLDExNCwxMDEsOTksMTE3LDExNCwxMTUsMTA1LDExOCwxMDEsMzIsOTcsMTAzLDEwMywxMTQsMTAxLDEwMyw5NywxMTYsMTAxLDMyLDExMywxMTcsMTAxLDExNCwxMDUsMTAxLDExNSwzMiwxMTAsMTExLDExNiwzMiwxMTUsMTE3LDExMiwxMTIsMTExLDExNCwxMTYsMTAxLDEwMCwwLDExMiw5NywxMTQsOTcsMTA5LDEwMSwxMTYsMTAxLDExNCwxMTUsMzIsOTcsMTE0LDEwMSwzMiwxMTAsMTExLDExNiwzMiw5NywxMDgsMTA4LDExMSwxMTksMTAxLDEwMCwzMiwxMDUsMTEwLDMyLDExOCwxMDUsMTAxLDExOSwxMTUsMCwxMTgsMTA1LDEwMSwxMTksXG4wLDExNSwxMTMsMTA4LDEwNSwxMTYsMTAxLDk1LDExNSwxMTYsOTcsMTE2LDAsMTE2LDk3LDk4LDEwOCwxMDEsMzIsMzcsMTE1LDMyLDEwOSw5NywxMjEsMzIsMTEwLDExMSwxMTYsMzIsOTgsMTAxLDMyLDEwMCwxMTQsMTExLDExMiwxMTIsMTAxLDEwMCwwLDExNywxMTUsMTAxLDMyLDY4LDgyLDc5LDgwLDMyLDg0LDY1LDY2LDc2LDY5LDMyLDExNiwxMTEsMzIsMTAwLDEwMSwxMDgsMTAxLDExNiwxMDEsMzIsMTE2LDk3LDk4LDEwOCwxMDEsMzIsMzcsMTE1LDAsMTE3LDExNSwxMDEsMzIsNjgsODIsNzksODAsMzIsODYsNzMsNjksODcsMzIsMTE2LDExMSwzMiwxMDAsMTAxLDEwOCwxMDEsMTE2LDEwMSwzMiwxMTgsMTA1LDEwMSwxMTksMzIsMzcsMTE1LDAsNjgsNjksNzYsNjksODQsNjksMzIsNzAsODIsNzksNzcsMzIsMzcsODEsNDYsMTE1LDExMywxMDgsMTA1LDExNiwxMDEsOTUsMTE1LDEwMSwxMTMsMTE3LDEwMSwxMTAsOTksMTAxLDMyLDg3LDcyLDY5LDgyLDY5LDMyLDExMCxcbjk3LDEwOSwxMDEsNjEsMzcsODEsMCw2OCw2OSw3Niw2OSw4NCw2OSwzMiw3MCw4Miw3OSw3NywzMiwzNyw4MSw0NiwzNywxMTUsMzIsODcsNzIsNjksODIsNjksMzIsMTE2LDk4LDEwOCw5NSwxMTAsOTcsMTA5LDEwMSw2MSwzNyw4MSwzMiw5NywxMTAsMTAwLDMyLDExNiwxMjEsMTEyLDEwMSwzMyw2MSwzOSwxMTYsMTE0LDEwNSwxMDMsMTAzLDEwMSwxMTQsMzksMCwxMDIsMTExLDExNCwxMDEsMTA1LDEwMywxMTAsMzIsMTA3LDEwMSwxMjEsMzIsMTExLDExMCwzMiwzNywxMTUsMzIsMTE1LDEwNCwxMTEsMTE3LDEwOCwxMDAsMzIsMTE0LDEwMSwxMDIsMTAxLDExNCwxMDEsMTEwLDk5LDEwMSwzMiwxMTEsMTEwLDEwOCwxMjEsMzIsMTExLDExMCwxMDEsMzIsOTksMTExLDEwOCwxMTcsMTA5LDExMCwzMiwxMTEsMTAyLDMyLDExNiw5Nyw5OCwxMDgsMTAxLDMyLDM3LDg0LDAsMTEwLDExNywxMDksOTgsMTAxLDExNCwzMiwxMTEsMTAyLDMyLDk5LDExMSwxMDgsMTE3LDEwOSwxMTAsMTE1LFxuMzIsMTA1LDExMCwzMiwxMDIsMTExLDExNCwxMDEsMTA1LDEwMywxMTAsMzIsMTA3LDEwMSwxMjEsMzIsMTAwLDExMSwxMDEsMTE1LDMyLDExMCwxMTEsMTE2LDMyLDEwOSw5NywxMTYsOTksMTA0LDMyLDExNiwxMDQsMTAxLDMyLDExMCwxMTcsMTA5LDk4LDEwMSwxMTQsMzIsMTExLDEwMiwzMiw5OSwxMTEsMTA4LDExNywxMDksMTEwLDExNSwzMiwxMDUsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDExNCwxMDEsMTAyLDEwMSwxMTQsMTAxLDExMCw5OSwxMDEsMTAwLDMyLDExNiw5Nyw5OCwxMDgsMTAxLDAsMTE3LDExMCwxMDcsMTEwLDExMSwxMTksMTEwLDMyLDk5LDExMSwxMDgsMTE3LDEwOSwxMTAsMzIsMzQsMzcsMTE1LDM0LDMyLDEwNSwxMTAsMzIsMTAyLDExMSwxMTQsMTAxLDEwNSwxMDMsMTEwLDMyLDEwNywxMDEsMTIxLDMyLDEwMCwxMDEsMTAyLDEwNSwxMTAsMTA1LDExNiwxMDUsMTExLDExMCwwLDk5LDk3LDExMCwxMTAsMTExLDExNiwzMiw5OSwxMTQsMTAxLDk3LDExNiwxMDEsXG4zMiw5NywzMiw4NCw2OSw3Nyw4MCwzMiwxMDUsMTEwLDEwMCwxMDEsMTIwLDMyLDExMSwxMTAsMzIsMTEwLDExMSwxMTAsNDUsODQsNjksNzcsODAsMzIsMTE2LDk3LDk4LDEwOCwxMDEsMzIsMzQsMzcsMTE1LDM0LDAsOTcsMTA4LDExNiwxMDEsMTE0LDExNiw5Nyw5OCw5NSwwLDExNiw5Nyw5OCwxMDgsMTAxLDMyLDM3LDExNSwzMiwxMDksOTcsMTIxLDMyLDExMCwxMTEsMTE2LDMyLDk4LDEwMSwzMiwxMDUsMTEwLDEwMCwxMDEsMTIwLDEwMSwxMDAsMCwxMTgsMTA1LDEwMSwxMTksMTE1LDMyLDEwOSw5NywxMjEsMzIsMTEwLDExMSwxMTYsMzIsOTgsMTAxLDMyLDEwNSwxMTAsMTAwLDEwMSwxMjAsMTAxLDEwMCwwLDExOCwxMDUsMTE0LDExNiwxMTcsOTcsMTA4LDMyLDExNiw5Nyw5OCwxMDgsMTAxLDExNSwzMiwxMDksOTcsMTIxLDMyLDExMCwxMTEsMTE2LDMyLDk4LDEwMSwzMiwxMDUsMTEwLDEwMCwxMDEsMTIwLDEwMSwxMDAsMCwxMTYsMTA0LDEwMSwxMTQsMTAxLDMyLDEwNSxcbjExNSwzMiw5NywxMDgsMTE0LDEwMSw5NywxMDAsMTIxLDMyLDk3LDMyLDExNiw5Nyw5OCwxMDgsMTAxLDMyLDExMCw5NywxMDksMTAxLDEwMCwzMiwzNywxMTUsMCwxMDUsMTEwLDEwMCwxMDEsMTIwLDMyLDM3LDExNSwzMiw5NywxMDgsMTE0LDEwMSw5NywxMDAsMTIxLDMyLDEwMSwxMjAsMTA1LDExNSwxMTYsMTE1LDAsMTE1LDExMywxMDgsMTA1LDExNiwxMDEsOTUsOTcsMTE3LDExNiwxMTEsMTA1LDExMCwxMDAsMTAxLDEyMCw5NSwzNywxMTUsOTUsMzcsMTAwLDAsMTAxLDEyMCwxMTIsMTE0LDEwMSwxMTUsMTE1LDEwNSwxMTEsMTEwLDExNSwzMiwxMTIsMTE0LDExMSwxMDQsMTA1LDk4LDEwNSwxMTYsMTAxLDEwMCwzMiwxMDUsMTEwLDMyLDgwLDgyLDczLDc3LDY1LDgyLDg5LDMyLDc1LDY5LDg5LDMyLDk3LDExMCwxMDAsMzIsODUsNzgsNzMsODEsODUsNjksMzIsOTksMTExLDExMCwxMTUsMTE2LDExNCw5NywxMDUsMTEwLDExNiwxMTUsMCw5OSwxMTEsMTEwLDEwMiwxMDgsMTA1LFxuOTksMTE2LDEwNSwxMTAsMTAzLDMyLDc5LDc4LDMyLDY3LDc5LDc4LDcwLDc2LDczLDY3LDg0LDMyLDk5LDEwOCw5NywxMTcsMTE1LDEwMSwxMTUsMzIsMTE1LDExMiwxMDEsOTksMTA1LDEwMiwxMDUsMTAxLDEwMCwwLDMyLDg1LDc4LDczLDgxLDg1LDY5LDAsNjcsODIsNjksNjUsODQsNjksMzcsMTE1LDMyLDczLDc4LDY4LDY5LDg4LDMyLDM3LDQ2LDQyLDExNSwwLDczLDc4LDgzLDY5LDgyLDg0LDMyLDczLDc4LDg0LDc5LDMyLDM3LDgxLDQ2LDM3LDExNSwzMiw4Niw2NSw3Niw4NSw2OSw4Myw0MCwzOSwxMDUsMTEwLDEwMCwxMDEsMTIwLDM5LDQ0LDM3LDgxLDQ0LDM3LDgxLDQ0LDM1LDM3LDEwMCw0NCwzNyw4MSw0MSw1OSwwLDExMCw5NywxMDksMTAxLDYxLDM5LDM3LDExMywzOSwzMiw2NSw3OCw2OCwzMiwxMTYsMTIxLDExMiwxMDEsNjEsMzksMTA1LDExMCwxMDAsMTAxLDEyMCwzOSwwLDExNiw5Nyw5OCwxMDgsMTAxLDMyLDM0LDM3LDExNSwzNCwzMiwxMDQsOTcsMTE1LDMyLFxuMTA5LDExMSwxMTQsMTAxLDMyLDExNiwxMDQsOTcsMTEwLDMyLDExMSwxMTAsMTAxLDMyLDExMiwxMTQsMTA1LDEwOSw5NywxMTQsMTIxLDMyLDEwNywxMDEsMTIxLDAsNjUsODUsODQsNzksNzMsNzgsNjcsODIsNjksNzcsNjksNzgsODQsMzIsMTA1LDExNSwzMiwxMTEsMTEwLDEwOCwxMjEsMzIsOTcsMTA4LDEwOCwxMTEsMTE5LDEwMSwxMDAsMzIsMTExLDExMCwzMiw5NywxMTAsMzIsNzMsNzgsODQsNjksNzEsNjksODIsMzIsODAsODIsNzMsNzcsNjUsODIsODksMzIsNzUsNjksODksMCwxMDAsMTAxLDEwMiw5NywxMTcsMTA4LDExNiwzMiwxMTgsOTcsMTA4LDExNywxMDEsMzIsMTExLDEwMiwzMiw5OSwxMTEsMTA4LDExNywxMDksMTEwLDMyLDkxLDM3LDExNSw5MywzMiwxMDUsMTE1LDMyLDExMCwxMTEsMTE2LDMyLDk5LDExMSwxMTAsMTE1LDExNiw5NywxMTAsMTE2LDAsMTE2LDExMSwxMTEsMzIsMTA5LDk3LDExMCwxMjEsMzIsOTksMTExLDEwOCwxMTcsMTA5LDExMCwxMTUsXG4zMiwxMTEsMTEwLDMyLDM3LDExNSwwLDEwMCwxMTcsMTEyLDEwOCwxMDUsOTksOTcsMTE2LDEwMSwzMiw5OSwxMTEsMTA4LDExNywxMDksMTEwLDMyLDExMCw5NywxMDksMTAxLDU4LDMyLDM3LDExNSwwLDY1LDg1LDg0LDc5LDczLDc4LDY3LDgyLDY5LDc3LDY5LDc4LDg0LDMyLDExMCwxMTEsMTE2LDMyLDk3LDEwOCwxMDgsMTExLDExOSwxMDEsMTAwLDMyLDExMSwxMTAsMzIsODcsNzMsODQsNzIsNzksODUsODQsMzIsODIsNzksODcsNzMsNjgsMzIsMTE2LDk3LDk4LDEwOCwxMDEsMTE1LDAsODAsODIsNzMsNzcsNjUsODIsODksMzIsNzUsNjksODksMzIsMTA5LDEwNSwxMTUsMTE1LDEwNSwxMTAsMTAzLDMyLDExMSwxMTAsMzIsMTE2LDk3LDk4LDEwOCwxMDEsMzIsMzcsMTE1LDAsODQsNjUsNjYsNzYsNjksMCw4Niw3Myw2OSw4NywwLDY3LDgyLDY5LDY1LDg0LDY5LDMyLDM3LDExNSwzMiwzNyw0Niw0MiwxMTUsMCw4NSw4MCw2OCw2NSw4NCw2OSwzMiwzNyw4MSw0NiwzNywxMTUsXG4zMiw4Myw2OSw4NCwzMiwxMTYsMTIxLDExMiwxMDEsNjEsMzksMzcsMTE1LDM5LDQ0LDMyLDExMCw5NywxMDksMTAxLDYxLDM3LDgxLDQ0LDMyLDExNiw5OCwxMDgsOTUsMTEwLDk3LDEwOSwxMDEsNjEsMzcsODEsNDQsMzIsMTE0LDExMSwxMTEsMTE2LDExMiw5NywxMDMsMTAxLDYxLDM1LDM3LDEwMCw0NCwzMiwxMTUsMTEzLDEwOCw2MSwzNyw4MSwzMiw4Nyw3Miw2OSw4Miw2OSwzMiwxMTQsMTExLDExOSwxMDUsMTAwLDYxLDM1LDM3LDEwMCwwLDY3LDgyLDY5LDY1LDg0LDY5LDMyLDg0LDY1LDY2LDc2LDY5LDMyLDM3LDgxLDQ2LDExNSwxMTMsMTA4LDEwNSwxMTYsMTAxLDk1LDExNSwxMDEsMTEzLDExNywxMDEsMTEwLDk5LDEwMSw0MCwxMTAsOTcsMTA5LDEwMSw0NCwxMTUsMTAxLDExMyw0MSwwLDExNiw5OCwxMDgsOTUsMTEwLDk3LDEwOSwxMDEsNjEsMzksMzcsMTEzLDM5LDMyLDY1LDc4LDY4LDMyLDExNiwxMjEsMTEyLDEwMSwzMyw2MSwzOSwxMTYsMTE0LDEwNSwxMDMsMTAzLFxuMTAxLDExNCwzOSwwLDEwLDMyLDMyLDAsNDQsMTAsMzIsMzIsMCwxMCw0MSwwLDY3LDgyLDY5LDY1LDg0LDY5LDMyLDg0LDY1LDY2LDc2LDY5LDMyLDAsMzIsODQsNjksODgsODQsMCwzMiw3OCw4NSw3NywwLDMyLDczLDc4LDg0LDAsMzIsODIsNjksNjUsNzYsMCwxMTYsMTAxLDEwOSwxMTIsMTExLDExNCw5NywxMTQsMTIxLDMyLDExNiw5Nyw5OCwxMDgsMTAxLDMyLDExMCw5NywxMDksMTAxLDMyLDEwOSwxMTcsMTE1LDExNiwzMiw5OCwxMDEsMzIsMTE3LDExMCwxMTMsMTE3LDk3LDEwOCwxMDUsMTAyLDEwNSwxMDEsMTAwLDAsMiw0LDgsNiwxMTYsOTcsOTgsMTA4LDEwMSwzMiwzNyw4NCwzMiw5NywxMDgsMTE0LDEwMSw5NywxMDAsMTIxLDMyLDEwMSwxMjAsMTA1LDExNSwxMTYsMTE1LDAsMTE2LDEwNCwxMDEsMTE0LDEwMSwzMiwxMDUsMTE1LDMyLDk3LDEwOCwxMTQsMTAxLDk3LDEwMCwxMjEsMzIsOTcsMTEwLDMyLDEwNSwxMTAsMTAwLDEwMSwxMjAsMzIsMTEwLDk3LDEwOSwxMDEsXG4xMDAsMzIsMzcsMTE1LDAsNiwwLDAsMCwwLDAsNjYsNjksNzEsNzMsNzgsMCw4Miw2OSw3Niw2OSw2NSw4Myw2OSwwLDgyLDc5LDc2LDc2LDY2LDY1LDY3LDc1LDAsNjcsNzksNzcsNzcsNzMsODQsMCw3OSwwLDAsMCw1NywwLDksMCw5NiwwLDAsMCwzNiwwLDcsMCwxMjMsMCwwLDAsOTYsMCwxLDAsMTMsMCw5LDAsNywwLDIsMCw3NiwwLDAsMCwxMTEsMCwwLDAsMTEyLDk3LDExNCwxMTUsMTAxLDExNCwzMiwxMTUsMTE2LDk3LDk5LDEwNywzMiwxMTEsMTE4LDEwMSwxMTQsMTAyLDEwOCwxMTEsMTE5LDAsMTksOTUsNTMsOTcsMjIsMjQsMjQsMTAxLDI3LDI4LDI5LDMwLDMxLDMyLDMzLDM0LDM1LDM2LDM3LDM4LDM5LDQwLDQxLDE1Miw0Myw0NCw0NSw0Niw0Nyw0OCw0OSw1MCw1MSw1Miw1MywxOSw1NSw1NSwxMzIsMTMzLDEzNCwxLDIsMjcsMjgsMjksMzAsMzEsMzIsMzMsMzQsMzUsMzYsMzcsMzgsMzksNDAsNDEsMTg3LDQzLDQ0LDQ1LDQ2LDQ3LDQ4LDQ5LDUwLDUxLDUyLDUzLDQ3LFxuNDgsNDksNTAsNTEsNTIsNTMsNjEsOTcsOTcsMTksNDksNTAsNTEsNTIsNTMsNzAsMjYsMjcsMjgsMjksMzAsMzEsMzIsMzMsMzQsMzUsMzYsMzcsMzgsMzksNDAsNDEsMTUyLDQzLDQ0LDQ1LDQ2LDQ3LDQ4LDQ5LDUwLDUxLDUyLDUzLDE0NCwxNDUsMTQ2LDE0NywxOSwxNiwyMiw5MiwxNzIsMTczLDUyLDUzLDI3LDI4LDI5LDMwLDMxLDMyLDMzLDM0LDM1LDM2LDM3LDM4LDM5LDQwLDQxLDgxLDQzLDQ0LDQ1LDQ2LDQ3LDQ4LDQ5LDUwLDUxLDUyLDUzLDU1LDU2LDE5LDE1MiwyMDcsMjA4LDExNSwyNCwxMTcsMTE4LDI3LDI4LDI5LDMwLDMxLDMyLDMzLDM0LDM1LDM2LDM3LDM4LDM5LDQwLDQxLDc5LDQzLDQ0LDQ1LDQ2LDQ3LDQ4LDQ5LDUwLDUxLDUyLDUzLDE5LDg4LDE1Nyw5MCwyMyw5Nyw5OCwxOTMsMjcsMjgsMjksMzAsMzEsMzIsMzMsMzQsMzUsMzYsMzcsMzgsMzksNDAsNDEsMTUyLDQzLDQ0LDQ1LDQ2LDQ3LDQ4LDQ5LDUwLDUxLDUyLDUzLDE5LDIyLDIzLDE3MiwyMywyNiwxMTksXG4xMjAsMjcsMjgsMjksMzAsMzEsMzIsMzMsMzQsMzUsMzYsMzcsMzgsMzksNDAsNDEsMTg3LDQzLDQ0LDQ1LDQ2LDQ3LDQ4LDQ5LDUwLDUxLDUyLDUzLDE5LDIyLDIzLDIyOCwyMywyNiwyMzEsMTUyLDI3LDI4LDI5LDMwLDMxLDMyLDMzLDM0LDM1LDM2LDM3LDM4LDM5LDQwLDQxLDE3Miw0Myw0NCw0NSw0Niw0Nyw0OCw0OSw1MCw1MSw1Miw1MywxOSwyMjEsMjIyLDIyMywyMyw5NiwxNTIsMTcyLDI3LDI4LDI5LDMwLDMxLDMyLDMzLDM0LDM1LDM2LDM3LDM4LDM5LDQwLDQxLDE1Miw0Myw0NCw0NSw0Niw0Nyw0OCw0OSw1MCw1MSw1Miw1MywxOSwwLDEsMiwyMyw5NiwxOTAsMTkxLDI3LDI4LDI5LDMwLDMxLDMyLDMzLDM0LDM1LDM2LDM3LDM4LDM5LDQwLDQxLDIzOCw0Myw0NCw0NSw0Niw0Nyw0OCw0OSw1MCw1MSw1Miw1MywxOSwxODUsMjE4LDIyMSwyMjIsMjIzLDE1MiwxNTIsMjcsMjgsMjksMzAsMzEsMzIsMzMsMzQsMzUsMzYsMzcsMzgsMzksNDAsNDEsMjQxLDQzLDQ0LDQ1LDQ2LFxuNDcsNDgsNDksNTAsNTEsNTIsNTMsMTksMTUyLDE2OCwxNjksMTcwLDIyLDE5MCwxOTEsMjcsMjgsMjksMzAsMzEsMzIsMzMsMzQsMzUsMzYsMzcsMzgsMzksNDAsNDEsMTUyLDQzLDQ0LDQ1LDQ2LDQ3LDQ4LDQ5LDUwLDUxLDUyLDUzLDE5LDE5LDIxOCw1NSw1NiwyNCwyMiwxNTIsMjcsMjgsMjksMzAsMzEsMzIsMzMsMzQsMzUsMzYsMzcsMzgsMzksNDAsNDEsMTUyLDQzLDQ0LDQ1LDQ2LDQ3LDQ4LDQ5LDUwLDUxLDUyLDUzLDI1MCwxOTQsMTk1LDU2LDU1LDU2LDU1LDE5LDE3MiwxNzMsOTcsOTgsMTUyLDIwNiwxMzgsMjcsMjgsMjksMzAsMzEsMzIsMzMsMzQsMzUsMzYsMzcsMzgsMzksNDAsNDEsMTUyLDQzLDQ0LDQ1LDQ2LDQ3LDQ4LDQ5LDUwLDUxLDUyLDUzLDE5LDIwNywyMDgsMTUyLDk3LDk4LDk3LDEzOCwyNywyOCwyOSwzMCwzMSwzMiwzMywzNCwzNSwzNiwzNywzOCwzOSw0MCw0MSwxODEsNDMsNDQsNDUsNDYsNDcsNDgsNDksNTAsNTEsNTIsNTMsMTksMzAsMzEsMzIsMzMsXG4yNDcsMjQ4LDE5LDE1MiwyOCwyOSwzMCwzMSwzMiwzMywzNCwzNSwzNiwzNywzOCwzOSw0MCw0MSwxNTIsNDMsNDQsNDUsNDYsNDcsNDgsNDksNTAsNTEsNTIsNTMsMTksMTY4LDE2OSwxNzAsMjM4LDE5LDUzLDE1MiwxNzIsMTczLDI5LDMwLDMxLDMyLDMzLDM0LDM1LDM2LDM3LDM4LDM5LDQwLDQxLDE1Miw0Myw0NCw0NSw0Niw0Nyw0OCw0OSw1MCw1MSw1Miw1MywxOSwyMCwxMDEsMjIsMjMsMTY5LDE3MCw1NiwyMDcsODUsNTUsNTYsMjMsMTksMjAsMjYsMjIsOTksMTAwLDEwMSwxMDIsMTAzLDEwNCwxMDUsMjM4LDE1MiwxNTIsMjEwLDQ3LDQ4LDExMiwxNTIsMTA4LDEwOSwxMTAsNTQsNTUsNTYsMjIxLDIyMiwyMjMsNDcsNDgsMTE5LDEyMCwxNzIsMTczLDY2LDU0LDU1LDU2LDE1Miw5Nyw5OCw5OSwxNDgsMTQ5LDEwMiwxMDMsMTA0LDY2LDE1NCwyMywxNTYsODMsMjYsMjMwLDE1MiwxMTMsMTUyLDE2MywxOTQsMTk1LDkyLDkyLDMwLDk1LDgzLDk3LDk4LDIwNywyMDgsMTAxLDIwNixcbjE3OSwxODAsOTIsMTcyLDE3Myw5NSwxNTIsOTcsOTgsMTg4LDk5LDEwMSwyMTksMTAyLDEwMywxMDQsMTUyLDExOSwxMjAsMTk2LDU1LDU2LDE5LDIwLDExMywyMiwxOTMsMTYzLDExLDEzMiwxMzMsMTM0LDEzNSwxMzYsMjQsNjUsMTcyLDE3MywyMDcsMjA4LDI1MCwxNTIsMTMyLDEzMywxMzQsMTM1LDEzNiwxOTMsNzgsODQsNDcsNDgsNDksOTgsMTk5LDE1Miw4Niw1NCw1NSw1NiwxOTYsMTUyLDk3LDk4LDIwOSw1NSwxNjMsMjQ0LDEwNyw2NiwxNTIsMjA3LDIwOCwxNjQsMTc1LDE3MiwxNzMsMTksMjAsMTI0LDIyLDExMSwzOCwzOSw0MCw0MSw4Myw0Myw0NCw0NSw0Niw0Nyw0OCw0OSw1MCw1MSw1Miw1Myw5NSwxOTYsOTcsOTgsODUsMTUyLDEwMSw0Nyw0OCw5Nyw4NSw5MiwyMDcsMTkzLDU0LDU1LDU2LDkyLDQ5LDE3NSw1NSw1NiwyMjEsMjIyLDIyMywxMiw2NiwxMDgsMTA5LDExMCwxMzcsMTYzLDEzOSwxMDgsMTA5LDExMCwyNiwxMzIsMTMzLDEzNCwxMzUsMTM2LDE1Miw4MyxcbjQzLDQ0LDQ1LDQ2LDQ3LDQ4LDQ5LDUwLDUxLDUyLDUzLDk1LDI2LDk3LDk4LDU1LDU2LDEwMSw5Nyw5OCwxOTYsMjIxLDIyMiwyMjMsMTQ2LDE0Nyw1NywxNzEsMTUyLDIyLDI2LDE5LDIwLDQ5LDIyLDE3OSwxMDgsMTA5LDExMCw1NSw1NiwxMTYsNzMsMjE5LDc1LDEyNCwxMjEsMTUyLDEzMiwxMzMsMTM0LDEzNSwxMzYsMTYzLDg1LDE1MiwyMzIsOTcsOTgsNDcsNDgsMjM3LDU1LDU2LDk4LDUsNTQsNTUsNTYsMTkzLDEwLDExLDEyLDEzLDE0LDE3MiwxNzMsMTcsNjYsNDcsNDgsOTcsOTgsMTUyLDEyNCwxNTIsMTk2LDU1LDU2LDE4NiwxMjQsMTUyLDEwNiwxNjAsMTUyLDgzLDE1MiwxNjQsMTUyLDYxLDIyLDIxMSwyMTIsMTUyLDk3LDk4LDE1Miw5NSw3MCw5Nyw5OCwxNzIsMTczLDEwMSwxNzIsMTczLDE3MiwxNzMsMTcyLDE3Myw2MCwxODEsNjIsMTcyLDE3Myw0Nyw0OCwxMjMsMTg2LDk3LDk4LDcxLDEwMCw1NSw1NiwxNTIsMTgxLDE4NiwyMSwxMDcsMTUyLDEwOSw4MiwxNjMsMTMyLFxuMTMzLDEzNCwxMzUsMTM2LDg5LDE2LDIwNyw5Miw5MywxOSwxNzIsMTczLDE2OSwxNzAsMTk1LDU1LDU2LDEyLDE1MiwxMzIsMzAsMTM0LDQ3LDQ4LDE4NiwyMDYsMjI1LDE1Miw5NSwxMTQsOTcsMTk2LDI0NSwyNDYsMTAxLDE1MiwzOCwzOSw0MCw0MSw0Miw0Myw0NCw0NSw0Niw0Nyw0OCw0OSw1MCw1MSw1Miw1MywxNTIsMTYzLDIxOSwxNTIsMTQxLDk3LDk4LDE5MywxNTIsMTUyLDU3LDkxLDE2NCwxMzIsMTMzLDEzNCwxNTIsNTUsMTUyLDE1MiwyMzcsMjMwLDE1MiwxMDMsMTkzLDg4LDczLDkwLDc1LDE3MiwxNzMsMTgzLDE1MiwxODUsMTk2LDE1MiwxNzIsMTczLDE3MiwxNzMsMjE3LDE1MiwxNzIsMTczLDE1MiwxMDcsMjIsMTUyLDI0LDE5MywxMTIsMTUyLDE3MiwxNzMsMTUyLDEzMiwyNDIsMTM0LDE1Miw5NywxNDAsMTUyLDkyLDE1MiwxNzIsMTczLDE1MiwxNzIsMTczLDE1MiwxMDAsMTcyLDE3MywxNTIsMTcyLDE3MywxNTIsMTQwLDE3MiwxNzMsMTUyLDE3MiwxNzMsMTcyLFxuMTczLDE1MiwxNzIsMTczLDE1MiwxNzIsMTczLDE1MiwxNTIsMTcyLDE3MywxNTIsMTcyLDE3MywyMTMsMTUyLDE3MiwxNzMsMTUyLDE1MiwxNTIsMTcyLDE3MywxNTIsMTcyLDE3MywxNTIsMTcyLDE3MywxNTIsMjEwLDE3MiwxNzMsMTUyLDI2LDE3MiwxNzMsMTUyLDE3MiwxNzMsMTcyLDE3MywxNTIsMTcyLDE3MywxNTIsMTcyLDE3MywxNTIsMTcyLDE3MywxNTIsNTksMTcyLDE3MywxNTIsNjMsMTcyLDE3MywxNTIsMTkzLDE1MiwxNTIsMTUyLDE1MiwxNzIsMTczLDE1MiwxNzIsMTczLDc3LDE3MiwxNzMsMTUyLDE1MiwxNzIsMTczLDE1MiwxNTIsMTcyLDE3MywxNzIsMTczLDE3MiwxNzMsMTUyLDIyLDE3MiwxNzMsMTUyLDE1MiwxNTIsMjIsMTcyLDE3MywxNTIsMTUyLDE1MiwxNzIsMTczLDE1Miw3LDgsOSwxNjMsMTcyLDE3MywyMiwyMywxNzIsMTczLDE3MiwxNzMsMTY2LDE2NywxNzIsMTczLDE3MiwxNzMsNTUsMTcyLDE3MywyMiwyMywxMDgsMTA5LDExMCwyMTcsMTUyLDIxNyxcbjE2NiwxNjcsMTYzLDE2MywxNjMsMTYzLDE2MywxOTYsMTMwLDIxNywyMTEsMjEyLDIxNywxMTYsMjMsMjIsMTAxLDI2LDEyMSwyMywyMywyMywyNiwyNiwyNiwyMywyMywxMTIsMjYsMjYsMzcsOTcsMTAwLDEwMSw1NSwxOTYsMTk2LDE5NiwxOTYsMTk2LDIzLDIzLDU1LDI2LDI2LDcsOCwyMywxNTIsMjMsMjYsOTYsMjYsMTMyLDEzMiwxMzQsMTM0LDIzLDE1MiwxNTIsMjYsMTUyLDEyMiwxNTIsMTkxLDE1Miw5NiwyMzQsMTUyLDE1MiwxNTIsMTUyLDE1MiwxOTcsMjEwLDE1Miw5NywxNTIsMTUyLDIxMCwyMzMsMjEwLDE5OCwxNTAsOTcsMTg0LDIwMSwyMzksMjE0LDIxNCwyMDEsMjM5LDE4MCwyMTQsMjI3LDIwMCwxOTgsMTU1LDY3LDI0MywxNzYsNjksMTc1LDE3NSwxNzUsMTIyLDE1OSwxNTksMjQwLDE1OSwyNDAsMjIsMjIwLDI3LDEzMCwyMDEsMTgsMTU5LDE4LDE4OSwxNTgsMTU4LDIyMCwxOTIsMTU5LDEzNywyMzYsMTkyLDE5MiwxOTIsMTg5LDc0LDE4OSwxNTksMjM1LDE1OSxcbjE1OCwyMiwxNzcsMjAxLDIwMSwxNTksMTA3LDE1OCwxNzcsMTU5LDE3NCwxNTgsNzYsMTc0LDE4MiwxNzQsMTA2LDE4MiwxMjUsMTc0LDEwNywxNzcsMjIsMTU5LDIxNiwyMTUsMTM3LDE1OSw1MywyMTYsMTc2LDIxNSwxNzQsMTc0LDIxNiwyMTUsMjE1LDE3NCwyMjksMjE2LDEyOSwyMjQsMTc3LDEyNiwyMjksMTI3LDE3NywxMjgsMjUsMTYyLDIyNiwyNiwxNjEsMTMsMTUzLDYsMTUzLDE1MSwxNTEsMTUxLDE1MSwyMDUsMTY1LDE3OCwxNzgsMTY1LDQsMywyMiwxNjUsMTQyLDE1LDk0LDIwMiwyMDQsMjAzLDIwMSwxNiwyMywyNDksMjMsMTIwLDI0OSwyNDYsMTExLDEzMSwxMjMsMjAsMTYsMSwxMjUsMTIzLDExMSw1Niw2NCwzNywzNywxMzEsMTIyLDEsMzcsNSwzNywyMiwxMDcsMjYsODAsMTQwLDgwLDg3LDcyLDEwNywyMCwyNCwxOSwxMTIsMTA1LDIzLDc5LDIyLDc5LDIyLDIyLDIyLDU4LDIyLDc5LDIzLDY4LDIzLDIzLDI2LDExNiwyMiwyNiwyMywyMiwxMjIsMjMsMjMsNTYsNjQsXG4yMiwxMjQsMjYsMjYsNjQsNjQsMjMsMjMsMjMsMjMsMTEsMjMsMjIsMjYsMjMsMjIsMjQsMSwyMywyMiwyNiwyNTEsMjQsMjMsMjIsMTIyLDIzLDIzLDIyLDE1LDEyMiwxMjIsMTIyLDIzLDAsMCw1NSw1NSw1NSw1NSwwLDU1LDU1LDU1LDAsNTUsNTUsNTUsNTUsMCwwLDAsNTUsMCwwLDU1LDAsMCwwLDU1LDAsMCwwLDAsNTUsNTUsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw1NSw1NSw1NSw1NSw1NSw1NSw1NSw1NSw1NSw1NSw1NSw1NSw1NSw1NSw1NSw1NSw1NSw1NSw1NSw1NSw1NSw1NSw1NSw1NSw1NSw1NSw1NSw1NSw1NSw1NSw1NSw1NSw1NSw1NSw1NSw1NSw1NSw1NSw1NSwyNywyNywyNywyNywyNywyNywyNywyNywyNyw3LDcsMjcsNyw3LDI3LDI3LDI3LDI3LDI3LDI3LDI3LDI3LDI3LDI3LDI3LDI3LDI3LDI3LDI3LDI3LDI3LDI3LDcsMTUsOCw1LDQsMjIsMjQsOCwxNywxOCwyMSwyMCwyMywxMSwyNiwxNiwzLDMsMywzLDMsMyxcbjMsMywzLDMsNSwxOSwxMiwxNCwxMyw2LDUsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDAsMSwxLDksMjcsMjcsMjcsMSw4LDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwxLDEsMSwwLDEsMSwyNywxMCwyNywyNSwyNywyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMiwyLDIsMTA1LDExMCwxMTgsOTcsMTA4LDEwNSwxMDAsMCw2NSw4MCw3MywzMiw5OSw5NywxMDgsMTA4LDMyLDExOSwxMDUsMTE2LDEwNCwzMiwzNywxMTUsMzIsXG4xMDAsOTcsMTE2LDk3LDk4LDk3LDExNSwxMDEsMzIsOTksMTExLDExMCwxMTAsMTAxLDk5LDExNiwxMDUsMTExLDExMCwzMiwxMTIsMTExLDEwNSwxMTAsMTE2LDEwMSwxMTQsMCwxMDAsOTcsMTE2LDk3LDk4LDk3LDExNSwxMDEsMzIsMTE1LDk5LDEwNCwxMDEsMTA5LDk3LDMyLDEwNSwxMTUsMzIsMTA4LDExMSw5OSwxMDcsMTAxLDEwMCw1OCwzMiwzNywxMTUsMCwxMTUsMTE2LDk3LDExNiwxMDEsMTA5LDEwMSwxMTAsMTE2LDMyLDExNiwxMTEsMTExLDMyLDEwOCwxMTEsMTEwLDEwMywwLDk3LDEwMCwxMDAsMTE0LDAsMTExLDExMiw5OSwxMTEsMTAwLDEwMSwwLDExMiw0OSwwLDExMiw1MCwwLDExMiw1MSwwLDExMiw1MiwwLDExMiw1MywwLDk5LDExMSwxMDksMTA5LDEwMSwxMTAsMTE2LDAsMTE1LDEwMSwxMDgsMTAxLDk5LDExNiwxMDUsMTAwLDAsMTAwLDEwMSwxMTYsOTcsMTA1LDEwOCwwLDc4LDg1LDc2LDc2LDAsMTE3LDExMCwxMTEsMTEyLDEwMSwxMTAsMTAxLDEwMCwwLDExNCxcbjEwMSw5NywxMDgsMCwxMDUsMTEwLDExNiwxMDEsMTAzLDEwMSwxMTQsMCwxMTAsMTE3LDEwOCwxMDgsMCw5OSw5NywxMTAsMTEwLDExMSwxMTYsMzIsMTExLDExMiwxMDEsMTEwLDMyLDExOCw5NywxMDgsMTE3LDEwMSwzMiwxMTEsMTAyLDMyLDExNiwxMjEsMTEyLDEwMSwzMiwzNywxMTUsMCwxMTAsMTExLDMyLDExNSwxMTcsOTksMTA0LDMyLDExNCwxMTEsMTE5LDEwNSwxMDAsNTgsMzIsMzcsMTA4LDEwOCwxMDAsMCwxMTAsMTExLDMyLDExNSwxMTcsOTksMTA0LDMyLDExOCwxMDUsMTAxLDExOSwwLDExMCwxMTEsMzIsMTE1LDExNyw5OSwxMDQsMzIsMTE2LDk3LDk4LDEwOCwxMDEsMCw0NSw0NSwzMiwwLDM5LDM3LDQ2LDQyLDExMywzOSwwLDEyMiwxMDEsMTE0LDExMSw5OCwxMDgsMTExLDk4LDQwLDM3LDEwMCw0MSwwLDEyMCwzOSwwLDM3LDQ4LDUwLDEyMCwwLDM5LDAsOTgsMTA1LDExMCwxMDAsMzIsMTExLDExMCwzMiw5NywzMiw5OCwxMTcsMTE1LDEyMSwzMiwxMTIsMTE0LFxuMTAxLDExMiw5NywxMTQsMTAxLDEwMCwzMiwxMTUsMTE2LDk3LDExNiwxMDEsMTA5LDEwMSwxMTAsMTE2LDU4LDMyLDkxLDM3LDExNSw5MywwLDM3LDExNSwzMiw5OSwxMTEsMTEwLDExNSwxMTYsMTE0LDk3LDEwNSwxMTAsMTE2LDMyLDEwMiw5NywxMDUsMTA4LDEwMSwxMDAsMCwzNywxMjIsNTgsMzIsMzcsMTE1LDAsOTcsOTgsMTExLDExNCwxMTYsMzIsOTcsMTE2LDMyLDM3LDEwMCwzMiwxMDUsMTEwLDMyLDkxLDM3LDExNSw5Myw1OCwzMiwzNywxMTUsMCwwLDAsMCwwLDEsMiwwLDIsMiwwLDEsMiwxLDEsMSwyLDEsMiwwLDAsMCwwLDAsMCwwLDAsOTksOTcsMTEwLDExMCwxMTEsMTE2LDMyLDExMSwxMTIsMTAxLDExMCwzMiwxMTUsOTcsMTE4LDEwMSwxMTIsMTExLDEwNSwxMTAsMTE2LDMyLDQ1LDMyLDgzLDgxLDc2LDMyLDExNSwxMTYsOTcsMTE2LDEwMSwxMDksMTAxLDExMCwxMTYsMTE1LDMyLDEwNSwxMTAsMzIsMTEyLDExNCwxMTEsMTAzLDExNCwxMDEsMTE1LDExNSwwLDExMCxcbjExMSwzMiwxMTUsMTE3LDk5LDEwNCwzMiwxMTUsOTcsMTE4LDEwMSwxMTIsMTExLDEwNSwxMTAsMTE2LDU4LDMyLDM3LDExNSwwLDk5LDk3LDExMCwxMTAsMTExLDExNiwzMiwxMTQsMTAxLDEwOCwxMDEsOTcsMTE1LDEwMSwzMiwxMTUsOTcsMTE4LDEwMSwxMTIsMTExLDEwNSwxMTAsMTE2LDMyLDQ1LDMyLDgzLDgxLDc2LDMyLDExNSwxMTYsOTcsMTE2LDEwMSwxMDksMTAxLDExMCwxMTYsMTE1LDMyLDEwNSwxMTAsMzIsMTEyLDExNCwxMTEsMTAzLDExNCwxMDEsMTE1LDExNSwwLDk5LDk3LDExMCwxMTAsMTExLDExNiwzMiw5OSwxMTEsMTA5LDEwOSwxMDUsMTE2LDMyLDExNiwxMTQsOTcsMTEwLDExNSw5Nyw5OSwxMTYsMTA1LDExMSwxMTAsMzIsNDUsMzIsODMsODEsNzYsMzIsMTE1LDExNiw5NywxMTYsMTAxLDEwOSwxMDEsMTEwLDExNiwxMTUsMzIsMTA1LDExMCwzMiwxMTIsMTE0LDExMSwxMDMsMTE0LDEwMSwxMTUsMTE1LDAsOTksOTcsMTEwLDExMCwxMTEsMTE2LDMyLDExNCxcbjExMSwxMDgsMTA4LDk4LDk3LDk5LDEwNywzMiw0NSwzMiwxMTAsMTExLDMyLDExNiwxMTQsOTcsMTEwLDExNSw5Nyw5OSwxMTYsMTA1LDExMSwxMTAsMzIsMTA1LDExNSwzMiw5Nyw5OSwxMTYsMTA1LDExOCwxMDEsMCw5OSw5NywxMTAsMTEwLDExMSwxMTYsMzIsOTksMTExLDEwOSwxMDksMTA1LDExNiwzMiw0NSwzMiwxMTAsMTExLDMyLDExNiwxMTQsOTcsMTEwLDExNSw5Nyw5OSwxMTYsMTA1LDExMSwxMTAsMzIsMTA1LDExNSwzMiw5Nyw5OSwxMTYsMTA1LDExOCwxMDEsMCw5OSw5NywxMTAsMTEwLDExMSwxMTYsMzIsMTE1LDExNiw5NywxMTQsMTE2LDMyLDk3LDMyLDExNiwxMTQsOTcsMTEwLDExNSw5Nyw5OSwxMTYsMTA1LDExMSwxMTAsMzIsMTE5LDEwNSwxMTYsMTA0LDEwNSwxMTAsMzIsOTcsMzIsMTE2LDExNCw5NywxMTAsMTE1LDk3LDk5LDExNiwxMDUsMTExLDExMCwwLDEwMCw5NywxMTYsOTcsOTgsOTcsMTE1LDEwMSwzMiwxMTUsOTksMTA0LDEwMSwxMDksOTcsMzIsMTA0LFxuOTcsMTE1LDMyLDk5LDEwNCw5NywxMTAsMTAzLDEwMSwxMDAsMCw4Myw2OSw3Niw2OSw2Nyw4NCwzMiwxMTAsOTcsMTA5LDEwMSw0NCwzMiwxMTQsMTExLDExMSwxMTYsMTEyLDk3LDEwMywxMDEsNDQsMzIsMTE1LDExMywxMDgsMzIsNzAsODIsNzksNzcsMzIsMzksMzcsMTEzLDM5LDQ2LDM3LDExNSwzMiw4Nyw3Miw2OSw4Miw2OSwzMiwzNywxMTUsMzIsNzksODIsNjgsNjksODIsMzIsNjYsODksMzIsMTE0LDExMSwxMTksMTA1LDEwMCwwLDExNiwxMTEsMTExLDMyLDEwOSw5NywxMTAsMTIxLDMyLDEwOCwxMDEsMTE4LDEwMSwxMDgsMTE1LDMyLDExMSwxMDIsMzIsMTE2LDExNCwxMDUsMTAzLDEwMywxMDEsMTE0LDMyLDExNCwxMDEsOTksMTE3LDExNCwxMTUsMTA1LDExMSwxMTAsMCwxMDUsMTEwLDExNiwxMTEsMCwxMTEsMTE3LDExNiwzMiwxMTEsMTAyLDAsOTksOTcsMTEwLDExMCwxMTEsMTE2LDMyLDk5LDEwNCw5NywxMTAsMTAzLDEwMSwzMiwzNywxMTUsMzIsMTE5LDk3LDEwOCxcbjMyLDEwOSwxMTEsMTAwLDEwMSwzMiwxMDIsMTE0LDExMSwxMDksMzIsMTE5LDEwNSwxMTYsMTA0LDEwNSwxMTAsMzIsOTcsMzIsMTE2LDExNCw5NywxMTAsMTE1LDk3LDk5LDExNiwxMDUsMTExLDExMCwwLDEwMCw5NywxMTYsOTcsOTgsOTcsMTE1LDEwMSwzMiwxMTYsOTcsOTgsMTA4LDEwMSwzMiwxMDUsMTE1LDMyLDEwOCwxMTEsOTksMTA3LDEwMSwxMDAsNTgsMzIsMzcsMTE1LDAsMTE1LDExNiw5NywxMTYsMTAxLDEwOSwxMDEsMTEwLDExNiwzMiw5Nyw5OCwxMTEsMTE0LDExNiwxMTUsMzIsOTcsMTE2LDMyLDM3LDEwMCw1OCwzMiw5MSwzNywxMTUsOTMsMzIsMzcsMTE1LDAsOTksOTcsMTEwLDExMCwxMTEsMTE2LDMyLDg2LDY1LDY3LDg1LDg1LDc3LDMyLDEwMiwxMTQsMTExLDEwOSwzMiwxMTksMTA1LDExNiwxMDQsMTA1LDExMCwzMiw5NywzMiwxMTYsMTE0LDk3LDExMCwxMTUsOTcsOTksMTE2LDEwNSwxMTEsMTEwLDAsOTksOTcsMTEwLDExMCwxMTEsMTE2LDMyLDg2LDY1LFxuNjcsODUsODUsNzcsMzIsNDUsMzIsODMsODEsNzYsMzIsMTE1LDExNiw5NywxMTYsMTAxLDEwOSwxMDEsMTEwLDExNiwxMTUsMzIsMTA1LDExMCwzMiwxMTIsMTE0LDExMSwxMDMsMTE0LDEwMSwxMTUsMTE1LDAsNjUsODQsODQsNjUsNjcsNzIsMzksMzksNjUsODMsMzIsMTE4LDk3LDk5LDExNywxMTcsMTA5LDk1LDEwMCw5OCwwLDgzLDY5LDc2LDY5LDY3LDg0LDMyLDExNSwxMTMsMTA4LDMyLDcwLDgyLDc5LDc3LDMyLDM0LDM3LDExOSwzNCw0NiwxMTUsMTEzLDEwOCwxMDUsMTE2LDEwMSw5NSwxMDksOTcsMTE1LDExNiwxMDEsMTE0LDMyLDg3LDcyLDY5LDgyLDY5LDMyLDExNiwxMjEsMTEyLDEwMSw2MSwzOSwxMTYsOTcsOTgsMTA4LDEwMSwzOSw2NSw3OCw2OCwzMiwxMTAsOTcsMTA5LDEwMSw2MCw2MiwzOSwxMTUsMTEzLDEwOCwxMDUsMTE2LDEwMSw5NSwxMTUsMTAxLDExMywxMTcsMTAxLDExMCw5OSwxMDEsMzksMzIsNjUsNzgsNjgsMzIsOTksMTExLDk3LDEwOCwxMDEsMTE1LFxuOTksMTAxLDQwLDExNCwxMTEsMTExLDExNiwxMTIsOTcsMTAzLDEwMSw0NCw0OSw0MSw2Miw0OCwwLDgzLDY5LDc2LDY5LDY3LDg0LDMyLDExNSwxMTMsMTA4LDMyLDcwLDgyLDc5LDc3LDMyLDM0LDM3LDExOSwzNCw0NiwxMTUsMTEzLDEwOCwxMDUsMTE2LDEwMSw5NSwxMDksOTcsMTE1LDExNiwxMDEsMTE0LDMyLDg3LDcyLDY5LDgyLDY5LDMyLDExNiwxMjEsMTEyLDEwMSw2MSwzOSwxMDUsMTEwLDEwMCwxMDEsMTIwLDM5LDMyLDY1LDc4LDY4LDMyLDEwOCwxMDEsMTEwLDEwMywxMTYsMTA0LDQwLDExNSwxMTMsMTA4LDQxLDYyLDQ5LDQ4LDAsODMsNjksNzYsNjksNjcsODQsMzksNzMsNzgsODMsNjksODIsODQsMzIsNzMsNzgsODQsNzksMzIsMTE4LDk3LDk5LDExNywxMTcsMTA5LDk1LDEwMCw5OCw0NiwzOSwxMjQsMTI0LDExMywxMTcsMTExLDExNiwxMDEsNDAsMTEwLDk3LDEwOSwxMDEsNDEsMTI0LDEyNCwzOSwzMiw4Myw2OSw3Niw2OSw2Nyw4NCw0Miw3MCw4Miw3OSw3NywzNCxcbjM3LDExOSwzNCw0NiwzOSwxMjQsMTI0LDExMywxMTcsMTExLDExNiwxMDEsNDAsMTEwLDk3LDEwOSwxMDEsNDEsNzAsODIsNzksNzcsMzIsMTE4LDk3LDk5LDExNywxMTcsMTA5LDk1LDEwMCw5OCw0NiwxMTUsMTEzLDEwOCwxMDUsMTE2LDEwMSw5NSwxMDksOTcsMTE1LDExNiwxMDEsMTE0LDMyLDg3LDcyLDY5LDgyLDY5LDMyLDExNiwxMjEsMTEyLDEwMSw2MSwzOSwxMTYsOTcsOTgsMTA4LDEwMSwzOSw2NSw3OCw2OCwzMiw5OSwxMTEsOTcsMTA4LDEwMSwxMTUsOTksMTAxLDQwLDExNCwxMTEsMTExLDExNiwxMTIsOTcsMTAzLDEwMSw0NCw0OSw0MSw2Miw0OCwwLDczLDc4LDgzLDY5LDgyLDg0LDMyLDczLDc4LDg0LDc5LDMyLDExOF0sXCJpOFwiLDQsbC5hYSszMDcyMCk7XG56KFs5Nyw5OSwxMTcsMTE3LDEwOSw5NSwxMDAsOTgsNDYsMTE1LDExMywxMDgsMTA1LDExNiwxMDEsOTUsMTA5LDk3LDExNSwxMTYsMTAxLDExNCwzMiw4Myw2OSw3Niw2OSw2Nyw4NCw0Miw3MCw4Miw3OSw3NywzMiwzNCwzNywxMTksMzQsNDYsMTE1LDExMywxMDgsMTA1LDExNiwxMDEsOTUsMTA5LDk3LDExNSwxMTYsMTAxLDExNCwzMiw4Nyw3Miw2OSw4Miw2OSwzMiwxMTYsMTIxLDExMiwxMDEsMzIsNzMsNzgsNDAsMzksMTE4LDEwNSwxMDEsMTE5LDM5LDQ0LDM5LDExNiwxMTQsMTA1LDEwMywxMDMsMTAxLDExNCwzOSw0MSwzMiw3OSw4Miw0MCwxMTYsMTIxLDExMiwxMDEsNjEsMzksMTE2LDk3LDk4LDEwOCwxMDEsMzksNjUsNzgsNjgsMzIsMTE0LDExMSwxMTEsMTE2LDExMiw5NywxMDMsMTAxLDYxLDQ4LDQxLDAsMSwxLDMsMCw1LDAsNiwwLDgsMCw3Nyw5NywxMDUsMTEwLDMyLDEwMiwxMTQsMTAxLDEwMSwxMDgsMTA1LDExNSwxMTYsNTgsMzIsMCw4MCw5NywxMDMsMTAxLDMyLFxuMzcsMTAwLDMyLDEwNSwxMTUsMzIsMTEwLDEwMSwxMTgsMTAxLDExNCwzMiwxMTcsMTE1LDEwMSwxMDAsMCw4MCwxMTEsMTA1LDExMCwxMTYsMTAxLDExNCwzMiwxMDksOTcsMTEyLDMyLDExMiw5NywxMDMsMTAxLDMyLDM3LDEwMCwzMiwxMDUsMTE1LDMyLDExNCwxMDEsMTAyLDEwMSwxMTQsMTAxLDExMCw5OSwxMDEsMTAwLDAsMTAsMCw4MCw5NywxMDMsMTAxLDMyLDM3LDEwMCw1OCwzMiwwLDExNywxMTAsOTcsOTgsMTA4LDEwMSwzMiwxMTYsMTExLDMyLDEwMywxMDEsMTE2LDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMDMsMTAxLDQ2LDMyLDEwMSwxMTQsMTE0LDExMSwxMTQsMzIsOTksMTExLDEwMCwxMDEsNjEsMzcsMTAwLDAsOTgsMTE2LDExNCwxMDEsMTAxLDczLDExMCwxMDUsMTE2LDgwLDk3LDEwMywxMDEsNDAsNDEsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMTE1LDMyLDEwMSwxMTQsMTE0LDExMSwxMTQsMzIsOTksMTExLDEwMCwxMDEsMzIsMzcsMTAwLDAsNzksXG4xMTAsMzIsMTE2LDExNCwxMDEsMTAxLDMyLDExMiw5NywxMDMsMTAxLDMyLDM3LDEwMCwzMiw5OSwxMDEsMTA4LDEwOCwzMiwzNywxMDAsNTgsMzIsMCw3OSwxMTAsMzIsMTEyLDk3LDEwMywxMDEsMzIsMzcsMTAwLDMyLDk3LDExNiwzMiwxMTQsMTA1LDEwMywxMDQsMTE2LDMyLDk5LDEwNCwxMDUsMTA4LDEwMCw1OCwzMiwwLDc5LDEwMiwxMDIsMTE1LDEwMSwxMTYsMzIsMzcsMTAwLDMyLDExMSwxMTcsMTE2LDMyLDExMSwxMDIsMzIsMTE0LDk3LDExMCwxMDMsMTAxLDMyLDM3LDEwMCw0Niw0NiwzNywxMDAsMCw2OSwxMjAsMTE2LDEwMSwxMTAsMTAwLDExNSwzMiwxMTEsMTAyLDEwMiwzMiwxMDEsMTEwLDEwMCwzMiwxMTEsMTAyLDMyLDExMiw5NywxMDMsMTAxLDAsODIsMTExLDExOSwxMDUsMTAwLDMyLDM3LDEwOCwxMDgsMTAwLDMyLDExMSwxMTcsMTE2LDMyLDExMSwxMDIsMzIsMTExLDExNCwxMDAsMTAxLDExNCwwLDY3LDEwNCwxMDUsMTA4LDEwMCwzMiwxMTIsOTcsMTAzLDEwMSxcbjMyLDEwMCwxMDEsMTEyLDExNiwxMDQsMzIsMTAwLDEwNSwxMDIsMTAyLDEwMSwxMTQsMTE1LDAsNzcsMTE3LDEwOCwxMTYsMTA1LDExMiwxMDgsMTAxLDMyLDExNywxMTUsMTAxLDExNSwzMiwxMDIsMTExLDExNCwzMiw5OCwxMjEsMTE2LDEwMSwzMiwzNywxMTcsMzIsMTExLDEwMiwzMiwxMTIsOTcsMTAzLDEwMSwzMiwzNywxMDAsMCw3MCwxMTQsOTcsMTAzLDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwzMiwzNywxMDAsMzIsOTgsMTIxLDExNiwxMDEsMTE1LDMyLDExNCwxMDEsMTEyLDExMSwxMTQsMTE2LDEwMSwxMDAsMzIsOTcsMTE1LDMyLDM3LDEwMCwzMiwxMTEsMTEwLDMyLDExMiw5NywxMDMsMTAxLDMyLDM3LDEwMCwwLDEwNSwxMTAsMTE4LDk3LDEwOCwxMDUsMTAwLDMyLDExMiw5NywxMDMsMTAxLDMyLDExMCwxMTcsMTA5LDk4LDEwMSwxMTQsMzIsMzcsMTAwLDAsNTAsMTEwLDEwMCwzMiwxMTQsMTAxLDEwMiwxMDEsMTE0LDEwMSwxMTAsXG45OSwxMDEsMzIsMTE2LDExMSwzMiwxMTIsOTcsMTAzLDEwMSwzMiwzNywxMDAsMCw3MCw5NywxMDUsMTA4LDEwMSwxMDAsMzIsMTE2LDExMSwzMiwxMTQsMTAxLDk3LDEwMCwzMiwxMTIsMTE2LDExNCwxMDksOTcsMTEyLDMyLDEwNywxMDEsMTIxLDYxLDM3LDEwMCwwLDY2LDk3LDEwMCwzMiwxMTIsMTE2LDExNCwzMiwxMDksOTcsMTEyLDMyLDEwMSwxMTAsMTE2LDExNCwxMjEsMzIsMTA3LDEwMSwxMjEsNjEsMzcsMTAwLDMyLDEwMSwxMjAsMTEyLDEwMSw5OSwxMTYsMTAxLDEwMCw2MSw0MCwzNywxMDAsNDQsMzcsMTAwLDQxLDMyLDEwMywxMTEsMTE2LDYxLDQwLDM3LDEwMCw0NCwzNywxMDAsNDEsMCwzNywxMDAsMzIsMTExLDEwMiwzMiwzNywxMDAsMzIsMTEyLDk3LDEwMywxMDEsMTE1LDMyLDEwOSwxMDUsMTE1LDExNSwxMDUsMTEwLDEwMywzMiwxMDIsMTE0LDExMSwxMDksMzIsMTExLDExOCwxMDEsMTE0LDEwMiwxMDgsMTExLDExOSwzMiwxMDgsMTA1LDExNSwxMTYsMzIsMTE1LFxuMTE2LDk3LDExNCwxMTYsMTA1LDExMCwxMDMsMzIsOTcsMTE2LDMyLDM3LDEwMCwwLDEwMiw5NywxMDUsMTA4LDEwMSwxMDAsMzIsMTE2LDExMSwzMiwxMDMsMTAxLDExNiwzMiwxMTIsOTcsMTAzLDEwMSwzMiwzNywxMDAsMCwxMDIsMTE0LDEwMSwxMDEsMTA4LDEwNSwxMTUsMTE2LDMyLDEwOCwxMDEsOTcsMTAyLDMyLDk5LDExMSwxMTcsMTEwLDExNiwzMiwxMTYsMTExLDExMSwzMiw5OCwxMDUsMTAzLDMyLDExMSwxMTAsMzIsMTEyLDk3LDEwMywxMDEsMzIsMzcsMTAwLDAsMTAyLDExNCwxMDEsMTAxLDQ1LDExMiw5NywxMDMsMTAxLDMyLDk5LDExMSwxMTcsMTEwLDExNiwzMiwxMDUsMTEwLDMyLDEwNCwxMDEsOTcsMTAwLDEwMSwxMTQsMzIsMTA1LDExNSwzMiwxMTYsMTExLDExMSwzMiwxMTUsMTA5LDk3LDEwOCwxMDgsMCwwLDEsMiwzLDQsNiw4LDgzLDgxLDc2LDEwNSwxMTYsMTAxLDMyLDEwMiwxMTEsMTE0LDEwOSw5NywxMTYsMzIsNTEsMCwxLDEsMCwxLDAsMCwzNywxMTUsXG40NSwxMDksMTA2LDg4LDg4LDg4LDg4LDg4LDg4LDU3LDg4LDg4LDEyMiwwLDc3LDc0LDMyLDEwMCwxMDEsMTA4LDEwMSwxMTYsMTAxLDU4LDMyLDM3LDExNSwwLDc3LDc0LDMyLDk5LDExMSwxMDgsMTA4LDEwNSwxMDAsMTAxLDU4LDMyLDM3LDExNSwwLDQ1LDEwOSwxMDYsMzcsNDgsNTQsODgsNTcsMzcsNDgsNTAsODgsMCw3OCw3OSw4NCwzMiw3OCw4NSw3Niw3NiwwLDg1LDc4LDczLDgxLDg1LDY5LDAsNjcsNzIsNjksNjcsNzUsMCw3MCw3OSw4Miw2OSw3Myw3MSw3OCwzMiw3NSw2OSw4OSwwLDM3LDQ2LDUwLDEyMCwwLDEwNyw0MCwzNywxMDAsMCw2NiwwLDQ0LDM3LDExNSwzNywxMTUsMCw0MCwzNyw0Niw1MCw0OCwxMTUsNDEsMCwzNywxMTUsNDAsMzcsMTAwLDQxLDAsMzcsMTAwLDAsMzcsNDYsNDksNTQsMTAzLDAsNDAsOTgsMTA4LDExMSw5OCw0MSwwLDExOCwxMTYsOTcsOTgsNTgsMzcsMTEyLDAsNDQsMzcsMTAwLDAsOTMsMCwxMTIsMTE0LDExMSwxMDMsMTE0LDk3LDEwOSxcbjAsODMsOTcsMTE4LDEwMSwxMTIsMTExLDEwNSwxMTAsMTE2LDAsNjUsMTE3LDExNiwxMTEsNjcsMTExLDEwOSwxMDksMTA1LDExNiwwLDg0LDExNCw5NywxMTAsMTE1LDk3LDk5LDExNiwxMDUsMTExLDExMCwwLDgzLDExMSwxMTQsMTE2LDEwMSwxMTQsNzgsMTAxLDEyMCwxMTYsMCw4MCwxMTQsMTAxLDExOCw3MywxMDIsNzksMTEyLDEwMSwxMTAsMCw3OCwxMDEsMTIwLDExNiw3MywxMDIsNzksMTEyLDEwMSwxMTAsMCw4MCwxMTQsMTAxLDExOCwwLDc4LDEwMSwxMjAsMTE2LDAsNjcsMTA0LDEwMSw5OSwxMDcsMTEyLDExMSwxMDUsMTEwLDExNiwwLDc0LDExMSwxMTcsMTE0LDExMCw5NywxMDgsNzcsMTExLDEwMCwxMDEsMCw4Niw5Nyw5OSwxMTcsMTE3LDEwOSwwLDg2LDcwLDEwNSwxMDgsMTE2LDEwMSwxMTQsMCw4Niw4NSwxMTIsMTAwLDk3LDExNiwxMDEsMCw3MSwxMTEsMTE2LDExMSwwLDcxLDExMSwxMTUsMTE3LDk4LDAsNzMsMTEwLDEwNSwxMTYsNjcsMTExLDExNCwxMTEsMTE3LFxuMTE2LDEwNSwxMTAsMTAxLDAsODksMTA1LDEwMSwxMDgsMTAwLDAsNzcsMTE3LDExNSwxMTYsNjYsMTAxLDczLDExMCwxMTYsMCw3NCwxMTcsMTA5LDExMiwwLDc4LDExMSwxMTYsMCw3OSwxMTAsOTksMTAxLDAsNzMsMTAyLDAsNzMsMTAyLDc4LDExMSwxMTYsMCw4MywxMDEsMTAxLDEwNyw3Niw4NCwwLDgzLDEwMSwxMDEsMTA3LDc2LDY5LDAsODMsMTAxLDEwMSwxMDcsNzEsNjksMCw4MywxMDEsMTAxLDEwNyw3MSw4NCwwLDc5LDExNCwwLDY1LDExMCwxMDAsMCw3OCwxMTEsNjcsMTExLDExMCwxMDIsMTA4LDEwNSw5OSwxMTYsMCw3OCwxMTEsMTE2LDcwLDExMSwxMTcsMTEwLDEwMCwwLDcwLDExMSwxMTcsMTEwLDEwMCwwLDgzLDEwMSwxMDEsMTA3LDgyLDExMSwxMTksMTA1LDEwMCwwLDc4LDExMSwxMTYsNjksMTIwLDEwNSwxMTUsMTE2LDExNSwwLDczLDExNSw3OCwxMTcsMTA4LDEwOCwwLDc4LDExMSwxMTYsNzgsMTE3LDEwOCwxMDgsMCw3OCwxMDEsMCw2OSwxMTMsMCw3MSwxMTYsXG4wLDc2LDEwMSwwLDc2LDExNiwwLDcxLDEwMSwwLDY5LDEwOCwxMTUsMTAxLDc4LDExMSwxMTYsNjksMTEzLDAsNjYsMTA1LDExNiw2NSwxMTAsMTAwLDAsNjYsMTA1LDExNiw3OSwxMTQsMCw4MywxMDQsMTA1LDEwMiwxMTYsNzYsMTAxLDEwMiwxMTYsMCw4MywxMDQsMTA1LDEwMiwxMTYsODIsMTA1LDEwMywxMDQsMTE2LDAsNjUsMTAwLDEwMCwwLDgzLDExNyw5OCwxMTYsMTE0LDk3LDk5LDExNiwwLDc3LDExNywxMDgsMTE2LDEwNSwxMTIsMTA4LDEyMSwwLDY4LDEwNSwxMTgsMTA1LDEwMCwxMDEsMCw4MiwxMDEsMTA5LDk3LDEwNSwxMTAsMTAwLDEwMSwxMTQsMCw2NywxMTEsMTEwLDk5LDk3LDExNiwwLDc2LDk3LDExNSwxMTYsMCw2NiwxMDUsMTE2LDc4LDExMSwxMTYsMCw4MywxMTEsMTE0LDExNiwxMDEsMTE0LDgzLDExMSwxMTQsMTE2LDAsODMsMTExLDExNCwxMTYsMCw4MiwxMDEsMTE5LDEwNSwxMTAsMTAwLDAsNzMsMTAwLDEyMCw3Niw2OSwwLDczLDEwMCwxMjAsNzEsODQsXG4wLDczLDEwMCwxMjAsNzYsODQsMCw3MywxMDAsMTIwLDcxLDY5LDAsODIsMTExLDExOSw4MywxMDEsMTE2LDgyLDEwMSw5NywxMDAsMCw4MiwxMTEsMTE5LDgzLDEwMSwxMTYsODQsMTAxLDExNSwxMTYsMCw4MCwxMTQsMTExLDEwMywxMTQsOTcsMTA5LDAsNzAsMTA3LDczLDEwMiw5MCwxMDEsMTE0LDExMSwwLDczLDEwMiw4MCwxMTEsMTE1LDAsNzMsMTAyLDc4LDExMSwxMTYsOTAsMTAxLDExNCwxMTEsMCw2OCwxMDEsOTksMTE0LDc0LDExNywxMDksMTEyLDkwLDEwMSwxMTQsMTExLDAsNzMsMTEwLDk5LDExNCw4Niw5Nyw5OSwxMTcsMTE3LDEwOSwwLDg2LDc4LDEwMSwxMjAsMTE2LDAsNzMsMTEwLDEwNSwxMTYsMCw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDAsNjksMTEwLDEwMCw2NywxMTEsMTE0LDExMSwxMTcsMTE2LDEwNSwxMTAsMTAxLDAsNzIsOTcsMTA4LDExNiw3MywxMDIsNzgsMTE3LDEwOCwxMDgsMCw3Miw5NywxMDgsMTE2LDAsNzMsMTEwLDExNiwxMDEsMTAzLDEwMSxcbjExNCwwLDczLDExMCwxMTYsNTQsNTIsMCw4MywxMTYsMTE0LDEwNSwxMTAsMTAzLDAsNzgsMTE3LDEwOCwxMDgsMCw4MywxMTEsMTAyLDExNiw3OCwxMTcsMTA4LDEwOCwwLDY2LDEwOCwxMTEsOTgsMCw4Niw5NywxMTQsMTA1LDk3LDk4LDEwOCwxMDEsMCw3NywxMTEsMTE4LDEwMSwwLDY3LDExMSwxMTIsMTIxLDAsODMsNjcsMTExLDExMiwxMjEsMCw3MywxMTAsMTE2LDY3LDExMSwxMTIsMTIxLDAsODIsMTAxLDExNSwxMTcsMTA4LDExNiw4MiwxMTEsMTE5LDAsNjcsMTExLDEwOCwxMDgsODMsMTAxLDExMywwLDcwLDExNywxMTAsOTksMTE2LDEwNSwxMTEsMTEwLDQ4LDAsNzAsMTE3LDExMCw5OSwxMTYsMTA1LDExMSwxMTAsMCw2NSwxMDAsMTAwLDczLDEwOSwxMDksMCw4MiwxMDEsOTcsMTA4LDY1LDEwMiwxMDIsMTA1LDExMCwxMDUsMTE2LDEyMSwwLDY3LDk3LDExNSwxMTYsMCw4MCwxMDEsMTE0LDEwOSwxMTcsMTE2LDk3LDExNiwxMDUsMTExLDExMCwwLDY3LDExMSwxMDksMTEyLFxuOTcsMTE0LDEwMSwwLDY3LDExMSwxMDgsMTE3LDEwOSwxMTAsMCw4MywxMTYsMTE0LDEwNSwxMTAsMTAzLDU2LDAsNjUsMTAyLDEwMiwxMDUsMTEwLDEwNSwxMTYsMTIxLDAsNzcsOTcsMTA3LDEwMSw4MiwxMDEsOTksMTExLDExNCwxMDAsMCw2NywxMTEsMTE3LDExMCwxMTYsMCw4MiwxMDEsOTcsMTAwLDY3LDExMSwxMTEsMTA3LDEwNSwxMDEsMCw4MywxMDEsMTE2LDY3LDExMSwxMTEsMTA3LDEwNSwxMDEsMCw4MiwxMDEsMTExLDExMiwxMDEsMTEwLDczLDEwMCwxMjAsMCw3OSwxMTIsMTAxLDExMCw4MiwxMDEsOTcsMTAwLDAsNzksMTEyLDEwMSwxMTAsODcsMTE0LDEwNSwxMTYsMTAxLDAsNzksMTEyLDEwMSwxMTAsNjUsMTE3LDExNiwxMTEsMTA1LDExMCwxMDAsMTAxLDEyMCwwLDc5LDExMiwxMDEsMTEwLDY5LDExMiwxMDQsMTAxLDEwOSwxMDEsMTE0LDk3LDEwOCwwLDgzLDExMSwxMTQsMTE2LDEwMSwxMTQsNzksMTEyLDEwMSwxMTAsMCw4MywxMDEsMTEzLDExNywxMDEsMTEwLFxuOTksMTAxLDg0LDEwMSwxMTUsMTE2LDAsNzksMTEyLDEwMSwxMTAsODAsMTE1LDEwMSwxMTcsMTAwLDExMSwwLDY3LDEwOCwxMTEsMTE1LDEwMSwwLDY3LDExMSwxMDgsMTE3LDEwOSwxMTAsMTE1LDg1LDExNSwxMDEsMTAwLDAsODMsMTAxLDExMywxMTcsMTAxLDExMCw5OSwxMDEsMCw3OCwxMDEsMTE5LDgyLDExMSwxMTksMTA1LDEwMCwwLDczLDExMCwxMTUsMTAxLDExNCwxMTYsMCw3MywxMTAsMTE1LDEwMSwxMTQsMTE2LDczLDExMCwxMTYsMCw2OCwxMDEsMTA4LDEwMSwxMTYsMTAxLDAsODIsMTAxLDExNSwxMDEsMTE2LDY3LDExMSwxMTcsMTEwLDExNiwwLDgzLDExMSwxMTQsMTE2LDEwMSwxMTQsNjcsMTExLDEwOSwxMTIsOTcsMTE0LDEwMSwwLDgzLDExMSwxMTQsMTE2LDEwMSwxMTQsNjgsOTcsMTE2LDk3LDAsODIsMTExLDExOSw3NSwxMDEsMTIxLDAsODIsMTExLDExOSw2OCw5NywxMTYsOTcsMCw4MiwxMTEsMTE5LDEwNSwxMDAsMCw3OCwxMTcsMTA4LDEwOCw4MiwxMTEsXG4xMTksMCw4MywxMTEsMTE0LDExNiwxMDEsMTE0LDczLDExMCwxMTUsMTAxLDExNCwxMTYsMCw3MywxMDAsMTIwLDczLDExMCwxMTUsMTAxLDExNCwxMTYsMCw3MywxMDAsMTIwLDY4LDEwMSwxMDgsMTAxLDExNiwxMDEsMCw4MywxMDEsMTAxLDEwNywwLDczLDEwMCwxMjAsODIsMTExLDExOSwxMDUsMTAwLDAsNjgsMTAxLDExNSwxMTYsMTE0LDExMSwxMjEsMCw2NywxMDgsMTAxLDk3LDExNCwwLDgyLDEwMSw5NywxMDgsMCw4MiwxMDEsMTE1LDEwMSwxMTYsODMsMTExLDExNCwxMTYsMTAxLDExNCwwLDY3LDExNCwxMDEsOTcsMTE2LDEwMSw3MywxMTAsMTAwLDEwMSwxMjAsMCw2NywxMTQsMTAxLDk3LDExNiwxMDEsODQsOTcsOTgsMTA4LDEwMSwwLDgwLDk3LDExNCwxMTUsMTAxLDgzLDk5LDEwNCwxMDEsMTA5LDk3LDAsNzYsMTExLDk3LDEwMCw2NSwxMTAsOTcsMTA4LDEyMSwxMTUsMTA1LDExNSwwLDY4LDExNCwxMTEsMTEyLDg0LDk3LDk4LDEwOCwxMDEsMCw2OCwxMTQsMTExLDExMixcbjczLDExMCwxMDAsMTAxLDEyMCwwLDY4LDExNCwxMTEsMTEyLDg0LDExNCwxMDUsMTAzLDEwMywxMDEsMTE0LDAsNzMsMTEwLDExNiwxMDEsMTAzLDExNCwxMDUsMTE2LDEyMSw2NywxMDcsMCw4MiwxMTEsMTE5LDgzLDEwMSwxMTYsNjUsMTAwLDEwMCwwLDgwLDk3LDExNCw5NywxMDksMCw3MCwxMDcsNjcsMTExLDExNywxMTAsMTE2LDEwMSwxMTQsMCw3NywxMDEsMTA5LDc3LDk3LDEyMCwwLDc5LDEwMiwxMDIsMTE1LDEwMSwxMTYsNzYsMTA1LDEwOSwxMDUsMTE2LDAsNjUsMTAzLDEwMyw4MywxMTYsMTAxLDExMiw0OCwwLDY1LDEwMywxMDMsODMsMTE2LDEwMSwxMTIsMCw2NSwxMDMsMTAzLDcwLDEwNSwxMTAsOTcsMTA4LDAsNjksMTIwLDExMiwxMDUsMTE0LDEwMSwwLDg0LDk3LDk4LDEwOCwxMDEsNzYsMTExLDk5LDEwNywwLDg2LDY2LDEwMSwxMDMsMTA1LDExMCwwLDg2LDY3LDExNCwxMDEsOTcsMTE2LDEwMSwwLDg2LDY4LDEwMSwxMTUsMTE2LDExNCwxMTEsMTIxLDAsODYsNzksXG4xMTIsMTAxLDExMCwwLDg2LDY3LDExMSwxMDgsMTE3LDEwOSwxMTAsMCw4Niw4MiwxMDEsMTEwLDk3LDEwOSwxMDEsMCw4MCw5NywxMDMsMTAxLDk5LDExMSwxMTcsMTEwLDExNiwwLDc3LDk3LDEyMCw4MCwxMDMsOTksMTEwLDExNiwwLDY3LDExNywxMTQsMTE1LDExMSwxMTQsNzIsMTA1LDExMCwxMTYsMCw3OCwxMTEsMTExLDExMiwwLDY5LDEyMCwxMTIsMTA4LDk3LDEwNSwxMTAsMCw2NSw4MCw3MywzMiw5OSw5NywxMDgsMTA4LDEwMSwxMDAsMzIsMTE5LDEwNSwxMTYsMTA0LDMyLDc4LDg1LDc2LDc2LDMyLDExMiwxMTQsMTAxLDExMiw5NywxMTQsMTAxLDEwMCwzMiwxMTUsMTE2LDk3LDExNiwxMDEsMTA5LDEwMSwxMTAsMTE2LDAsMTE3LDExMCwxMDcsMTEwLDExMSwxMTksMTEwLDMyLDEwMSwxMTQsMTE0LDExMSwxMTQsMCw5Nyw5OCwxMTEsMTE0LDExNiwzMiwxMDAsMTE3LDEwMSwzMiwxMTYsMTExLDMyLDgyLDc5LDc2LDc2LDY2LDY1LDY3LDc1LDAsMTEwLDExMSwxMTYsMzIsXG45NywxMTAsMzIsMTAxLDExNCwxMTQsMTExLDExNCwwLDgzLDgxLDc2LDMyLDEwOCwxMTEsMTAzLDEwNSw5OSwzMiwxMDEsMTE0LDExNCwxMTEsMTE0LDMyLDExMSwxMTQsMzIsMTA5LDEwNSwxMTUsMTE1LDEwNSwxMTAsMTAzLDMyLDEwMCw5NywxMTYsOTcsOTgsOTcsMTE1LDEwMSwwLDk3LDk5LDk5LDEwMSwxMTUsMTE1LDMyLDExMiwxMDEsMTE0LDEwOSwxMDUsMTE1LDExNSwxMDUsMTExLDExMCwzMiwxMDAsMTAxLDExMCwxMDUsMTAxLDEwMCwwLDk5LDk3LDEwOCwxMDgsOTgsOTcsOTksMTA3LDMyLDExNCwxMDEsMTEzLDExNywxMDEsMTE1LDExNiwxMDEsMTAwLDMyLDExMywxMTcsMTAxLDExNCwxMjEsMzIsOTcsOTgsMTExLDExNCwxMTYsMCwxMDAsOTcsMTE2LDk3LDk4LDk3LDExNSwxMDEsMzIsMTA1LDExNSwzMiwxMDgsMTExLDk5LDEwNywxMDEsMTAwLDAsMTAwLDk3LDExNiw5Nyw5OCw5NywxMTUsMTAxLDMyLDExNiw5Nyw5OCwxMDgsMTAxLDMyLDEwNSwxMTUsMzIsMTA4LDExMSxcbjk5LDEwNywxMDEsMTAwLDAsOTcsMTE2LDExNiwxMDEsMTA5LDExMiwxMTYsMzIsMTE2LDExMSwzMiwxMTksMTE0LDEwNSwxMTYsMTAxLDMyLDk3LDMyLDExNCwxMDEsOTcsMTAwLDExMSwxMTAsMTA4LDEyMSwzMiwxMDAsOTcsMTE2LDk3LDk4LDk3LDExNSwxMDEsMCwxMDUsMTEwLDExNiwxMDEsMTE0LDExNCwxMTcsMTEyLDExNiwxMDEsMTAwLDAsMTAwLDEwNSwxMTUsMTA3LDMyLDczLDQ3LDc5LDMyLDEwMSwxMTQsMTE0LDExMSwxMTQsMCwxMDAsOTcsMTE2LDk3LDk4LDk3LDExNSwxMDEsMzIsMTAwLDEwNSwxMTUsMTA3LDMyLDEwNSwxMDksOTcsMTAzLDEwMSwzMiwxMDUsMTE1LDMyLDEwOSw5NywxMDgsMTAyLDExMSwxMTQsMTA5LDEwMSwxMDAsMCwxMTcsMTEwLDEwNywxMTAsMTExLDExOSwxMTAsMzIsMTExLDExMiwxMDEsMTE0LDk3LDExNiwxMDUsMTExLDExMCwwLDEwMCw5NywxMTYsOTcsOTgsOTcsMTE1LDEwMSwzMiwxMTEsMTE0LDMyLDEwMCwxMDUsMTE1LDEwNywzMiwxMDUsXG4xMTUsMzIsMTAyLDExNywxMDgsMTA4LDAsMTE3LDExMCw5Nyw5OCwxMDgsMTAxLDMyLDExNiwxMTEsMzIsMTExLDExMiwxMDEsMTEwLDMyLDEwMCw5NywxMTYsOTcsOTgsOTcsMTE1LDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsMCwxMDgsMTExLDk5LDEwNywxMDUsMTEwLDEwMywzMiwxMTIsMTE0LDExMSwxMTYsMTExLDk5LDExMSwxMDgsMCwxMTYsOTcsOTgsMTA4LDEwMSwzMiw5OSwxMTEsMTEwLDExNiw5NywxMDUsMTEwLDExNSwzMiwxMTAsMTExLDMyLDEwMCw5NywxMTYsOTcsMCw5OSwxMTEsMTEwLDExNSwxMTYsMTE0LDk3LDEwNSwxMTAsMTE2LDMyLDEwMiw5NywxMDUsMTA4LDEwMSwxMDAsMCwxMDAsOTcsMTE2LDk3LDExNiwxMjEsMTEyLDEwMSwzMiwxMDksMTA1LDExNSwxMDksOTcsMTE2LDk5LDEwNCwwLDEwOCwxMDUsOTgsMTE0LDk3LDExNCwxMjEsMzIsMTE0LDExMSwxMTcsMTE2LDEwNSwxMTAsMTAxLDMyLDk5LDk3LDEwOCwxMDgsMTAxLDEwMCwzMiwxMTEsMTE3LDExNixcbjMyLDExMSwxMDIsMzIsMTE1LDEwMSwxMTMsMTE3LDEwMSwxMTAsOTksMTAxLDAsMTA4LDk3LDExNCwxMDMsMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMTUsMTE3LDExMiwxMTIsMTExLDExNCwxMTYsMzIsMTA1LDExNSwzMiwxMDAsMTA1LDExNSw5Nyw5OCwxMDgsMTAxLDEwMCwwLDk3LDExNywxMTYsMTA0LDExMSwxMTQsMTA1LDEyMiw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTAwLDEwMSwxMTAsMTA1LDEwMSwxMDAsMCw5NywxMTcsMTIwLDEwNSwxMDgsMTA1LDk3LDExNCwxMjEsMzIsMTAwLDk3LDExNiw5Nyw5OCw5NywxMTUsMTAxLDMyLDEwMiwxMTEsMTE0LDEwOSw5NywxMTYsMzIsMTAxLDExNCwxMTQsMTExLDExNCwwLDk4LDEwNSwxMTAsMTAwLDMyLDExMSwxMTQsMzIsOTksMTExLDEwOCwxMTcsMTA5LDExMCwzMiwxMDUsMTEwLDEwMCwxMDEsMTIwLDMyLDExMSwxMTcsMTE2LDMyLDExMSwxMDIsMzIsMTE0LDk3LDExMCwxMDMsMTAxLDAsMTAyLDEwNSwxMDgsMTAxLDMyLFxuMTA1LDExNSwzMiwxMDEsMTEwLDk5LDExNCwxMjEsMTEyLDExNiwxMDEsMTAwLDMyLDExMSwxMTQsMzIsMTA1LDExNSwzMiwxMTAsMTExLDExNiwzMiw5NywzMiwxMDAsOTcsMTE2LDk3LDk4LDk3LDExNSwxMDEsMCw2NSw4MCw3MywzMiw5OSw5NywxMDgsMTA4LDEwMSwxMDAsMzIsMTE5LDEwNSwxMTYsMTA0LDMyLDEwMiwxMDUsMTEwLDk3LDEwOCwxMDUsMTIyLDEwMSwxMDAsMzIsMTEyLDExNCwxMDEsMTEyLDk3LDExNCwxMDEsMTAwLDMyLDExNSwxMTYsOTcsMTE2LDEwMSwxMDksMTAxLDExMCwxMTYsMCw2NCwzMiwzMiwwLDExNywxMTAsMTA1LDEyMCwwLDExNywxMTAsMTA1LDEyMCw0NSwxMTAsMTExLDExMCwxMDEsMCwxMTcsMTEwLDEwNSwxMjAsNDUsMTAwLDExMSwxMTYsMTAyLDEwNSwxMDgsMTAxLDAsMTE3LDExMCwxMDUsMTIwLDQ1LDEwMSwxMjAsOTksMTA4LDAsOTksMTA4LDExMSwxMTUsMTAxLDAsMTExLDExNSw5NSwxMTcsMTEwLDEwNSwxMjAsNDYsOTksNTgsMzcsMTAwLFxuNTgsMzIsNDAsMzcsMTAwLDQxLDMyLDM3LDExNSw0MCwzNywxMTUsNDEsMzIsNDUsMzIsMzcsMTE1LDAsMTExLDExMiwxMDEsMTEwLDAsMTAzLDEwMSwxMTYsOTksMTE5LDEwMCwwLDExNSwxMTYsOTcsMTE2LDAsMTAyLDExNSwxMTYsOTcsMTE2LDAsMTAyLDExNiwxMTQsMTE3LDExMCw5OSw5NywxMTYsMTAxLDAsMTAyLDk5LDExMCwxMTYsMTA4LDAsMTE0LDEwMSw5NywxMDAsMCwxMTIsMTE0LDEwMSw5NywxMDAsMCwxMTIsMTE0LDEwMSw5NywxMDAsNTQsNTIsMCwxMTksMTE0LDEwNSwxMTYsMTAxLDAsMTEyLDExOSwxMTQsMTA1LDExNiwxMDEsMCwxMTIsMTE5LDExNCwxMDUsMTE2LDEwMSw1NCw1MiwwLDEwMiw5OSwxMDQsMTA5LDExMSwxMDAsMCwxMDIsOTcsMTA4LDEwOCwxMTEsOTksOTcsMTE2LDEwMSwwLDExNywxMTAsMTA4LDEwNSwxMTAsMTA3LDAsMTExLDExMiwxMDEsMTEwLDY4LDEwNSwxMTQsMTAxLDk5LDExNiwxMTEsMTE0LDEyMSwwLDEwOSwxMDcsMTAwLDEwNSwxMTQsXG4wLDExNCwxMDksMTAwLDEwNSwxMTQsMCwxMDIsOTksMTA0LDExMSwxMTksMTEwLDAsMTAzLDEwMSwxMTYsMTAxLDExNywxMDUsMTAwLDAsMTA5LDEwOSw5NywxMTIsMCwxMDksMTE3LDExMCwxMDksOTcsMTEyLDAsMTA5LDExNCwxMDEsMTA5LDk3LDExMiwwLDEwMywxMDEsMTE2LDExMiw5NywxMDMsMTAxLDExNSwxMDUsMTIyLDEwMSwwLDExNCwxMDEsOTcsMTAwLDEwOCwxMDUsMTEwLDEwNywwLDEwOCwxMTUsMTE2LDk3LDExNiwwLDk3LDExNiwxMTYsMTAxLDEwOSwxMTIsMTE2LDMyLDExNiwxMTEsMzIsMTExLDExMiwxMDEsMTEwLDMyLDM0LDM3LDExNSwzNCwzMiw5NywxMTUsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDEwMCwxMDEsMTE1LDk5LDExNCwxMDUsMTEyLDExNiwxMTEsMTE0LDMyLDM3LDEwMCwwLDQ3LDEwMCwxMDEsMTE4LDQ3LDExMCwxMTcsMTA4LDEwOCwwLDM3LDExNSw0NywxMDEsMTE2LDEwNSwxMDgsMTEzLDExNSw5NSwzNywxMDgsMTA4LDEyMCwzNyw5OSwwLDgzLDgxLFxuNzYsNzMsODQsNjksOTUsODQsNzcsODAsNjgsNzMsODIsMCw4NCw3Nyw4MCw2OCw3Myw4MiwwLDQ3LDExOCw5NywxMTQsNDcsMTE2LDEwOSwxMTIsMCw0NywxMTcsMTE1LDExNCw0NywxMTYsMTA5LDExMiwwLDQ3LDExNiwxMDksMTEyLDAsNDYsMCwxMDIsMTE3LDEwOCwxMDgsOTUsMTAyLDExNSwxMjEsMTEwLDk5LDAsNDcsMTAwLDEwMSwxMTgsNDcsMTE3LDExNCw5NywxMTAsMTAwLDExMSwxMDksMCwxMDIsMTE1LDEyMSwxMTAsOTksMCwxMTIsMTE1LDExMSwxMTksMCwzNywxMTUsNDYsMTA4LDExMSw5OSwxMDcsMCw5OSw5NywxMTAsMTEwLDExMSwxMTYsMzIsMTAyLDExNSwxMTYsOTcsMTE2LDMyLDEwMCw5OCwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMzcsMTE1LDAsMTAyLDEwNSwxMDgsMTAxLDMyLDExNywxMTAsMTA4LDEwNSwxMTAsMTA3LDEwMSwxMDAsMzIsMTE5LDEwNCwxMDUsMTA4LDEwMSwzMiwxMTEsMTEyLDEwMSwxMTAsNTgsMzIsMzcsMTE1LDAsMTA5LDExNywxMDgsMTE2LFxuMTA1LDExMiwxMDgsMTAxLDMyLDEwOCwxMDUsMTEwLDEwNywxMTUsMzIsMTE2LDExMSwzMiwxMDIsMTA1LDEwOCwxMDEsNTgsMzIsMzcsMTE1LDAsMTAyLDEwNSwxMDgsMTAxLDMyLDExNCwxMDEsMTEwLDk3LDEwOSwxMDEsMTAwLDMyLDExOSwxMDQsMTA1LDEwOCwxMDEsMzIsMTExLDExMiwxMDEsMTEwLDU4LDMyLDM3LDExNSwwLDM3LDExNSw0NSwxMTUsMTA0LDEwOSwwLDExNCwxMDEsOTcsMTAwLDExMSwxMTAsMTA4LDEyMSw5NSwxMTUsMTA0LDEwOSwwLDEwOSwxMTEsMTAwLDEwMSwxMTEsMTAyLDAsMzcsMCwxMDAsMTAsMSwwLDAsMCwxMTUsMCw0LDUsMCwwLDEwMywwLDEsMywzMCwwLDEyMiwwLDQsNiwwLDAsMTEzLDAsNCw5LDAsMCw4MSwwLDQsMTAsMCwwLDExOSwwLDQsMTQsMCwwLDk5LDAsMCw4LDAsMCwxMTEsOCwwLDAsMCwyLDExNywxMCwwLDAsMCwwLDEyMCwxNiwwLDAsMTYsMSw4OCwxNiwwLDAsMCw0LDEwMiwwLDEsMSwwLDAsMTAxLDAsMSwyLDMwLDAsNjksMCwxLDIsXG4xNCwwLDcxLDAsMSwzLDE0LDAsMTA1LDEwLDEsMCwwLDAsMTEwLDAsMCw0LDAsMCwzNywwLDAsNywwLDAsMTEyLDE2LDAsMTMsMCwxLDg0LDAsMiwxMSwwLDAsODMsMCwyLDEyLDAsMCwxMTQsMTAsMywxNSwwLDAsMTE2LDEwNCwxMTUsMTE2LDExMCwxMDAsMTE0LDEwMCwwLDQ4LDQ5LDUwLDUxLDUyLDUzLDU0LDU1LDU2LDU3LDY1LDY2LDY3LDY4LDY5LDcwLDQ4LDQ5LDUwLDUxLDUyLDUzLDU0LDU1LDU2LDU3LDk3LDk4LDk5LDEwMCwxMDEsMTAyLDAsNDUsMTIwLDQ4LDAsODgsNDgsMCw3OCw5Nyw3OCwwLDczLDExMCwxMDIsMCw0MCw3OCw4NSw3Niw3Niw0MSwwLDExNSwxMTMsMTA4LDEwNSwxMTYsMTAxLDk1LDk5LDExMSwxMDksMTEyLDEwNSwxMDgsMTAxLDExMSwxMTIsMTE2LDEwNSwxMTEsMTEwLDk1LDExNywxMTUsMTAxLDEwMCwwLDExNSwxMTMsMTA4LDEwNSwxMTYsMTAxLDk1LDk5LDExMSwxMDksMTEyLDEwNSwxMDgsMTAxLDExMSwxMTIsMTE2LDEwNSwxMTEsMTEwLDk1LDEwMyxcbjEwMSwxMTYsMCwxMTcsMTEwLDEwOCwxMDUsMTA3LDEwMSwxMDgsMTIxLDAsMTA4LDEwNSwxMDcsMTAxLDEwOCwxMDUsMTA0LDExMSwxMTEsMTAwLDAsMTA4LDEwNSwxMDcsMTAxLDEwOCwxMjEsMCwxMDgsMTE2LDExNCwxMDUsMTA5LDAsMTE0LDExNiwxMTQsMTA1LDEwOSwwLDExNiwxMTQsMTA1LDEwOSwwLDExNiwxMjEsMTEyLDEwMSwxMTEsMTAyLDAsMTA4LDEwMSwxMTAsMTAzLDExNiwxMDQsMCwxMDUsMTEwLDExNSwxMTYsMTE0LDAsMTEyLDExNCwxMDUsMTEwLDExNiwxMDIsMCwxMTcsMTEwLDEwNSw5OSwxMTEsMTAwLDEwMSwwLDk5LDEwNCw5NywxMTQsMCw5Nyw5OCwxMTUsMCwxMTQsMTExLDExNywxMTAsMTAwLDAsMTE3LDExMiwxMTIsMTAxLDExNCwwLDEwOCwxMTEsMTE5LDEwMSwxMTQsMCwxMDQsMTAxLDEyMCwwLDEwNSwxMDIsMTEwLDExNywxMDgsMTA4LDAsMTE0LDk3LDExMCwxMDAsMTExLDEwOSwwLDExNCw5NywxMTAsMTAwLDExMSwxMDksOTgsMTA4LDExMSw5OCwwLFxuMTEwLDExNywxMDgsMTA4LDEwNSwxMDIsMCwxMTUsMTEzLDEwOCwxMDUsMTE2LDEwMSw5NSwxMTgsMTAxLDExNCwxMTUsMTA1LDExMSwxMTAsMCwxMTUsMTEzLDEwOCwxMDUsMTE2LDEwMSw5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLDk1LDEwNSwxMDAsMCwxMTUsMTEzLDEwOCwxMDUsMTE2LDEwMSw5NSwxMDgsMTExLDEwMywwLDExMywxMTcsMTExLDExNiwxMDEsMCwxMDgsOTcsMTE1LDExNiw5NSwxMDUsMTEwLDExNSwxMDEsMTE0LDExNiw5NSwxMTQsMTExLDExOSwxMDUsMTAwLDAsOTksMTA0LDk3LDExMCwxMDMsMTAxLDExNSwwLDExNiwxMTEsMTE2LDk3LDEwOCw5NSw5OSwxMDQsOTcsMTEwLDEwMywxMDEsMTE1LDAsMTE0LDEwMSwxMTIsMTA4LDk3LDk5LDEwMSwwLDEyMiwxMDEsMTE0LDExMSw5OCwxMDgsMTExLDk4LDAsMTE1LDExNyw5OCwxMTUsMTE2LDExNCwwLDExNSwxMTcsMTA5LDAsMTE2LDExMSwxMTYsOTcsMTA4LDAsOTcsMTE4LDEwMywwLDk5LDExMSwxMTcsMTEwLFxuMTE2LDAsMTAzLDExNCwxMTEsMTE3LDExMiw5NSw5OSwxMTEsMTEwLDk5LDk3LDExNiwwLDk5LDExMSw5NywxMDgsMTAxLDExNSw5OSwxMDEsMCwxMDUsMTEwLDExNiwxMDEsMTAzLDEwMSwxMTQsMzIsMTExLDExOCwxMDEsMTE0LDEwMiwxMDgsMTExLDExOSwwLDM3LDMzLDQ2LDUwLDQ4LDEwMSwwLDQ4LDQ5LDUwLDUxLDUyLDUzLDU0LDU1LDU2LDU3LDY1LDY2LDY3LDY4LDY5LDcwLDM3LDQ2LDQyLDEwMiwwLDExNiwxMDEsMTIwLDExNiwwLDk4LDEwOCwxMTEsOTgsMCwxLDEwNiwxMTcsMTA4LDEwNSw5NywxMTAsMTAwLDk3LDEyMSwwLDEwMCw5NywxMTYsMTAxLDAsMTE2LDEwNSwxMDksMTAxLDAsMTAwLDk3LDExNiwxMDEsMTE2LDEwNSwxMDksMTAxLDAsMTE1LDExNiwxMTQsMTAyLDExNiwxMDUsMTA5LDEwMSwwLDk5LDExNywxMTQsMTE0LDEwMSwxMTAsMTE2LDk1LDExNiwxMDUsMTA5LDEwMSwwLDk5LDExNywxMTQsMTE0LDEwMSwxMTAsMTE2LDk1LDExNiwxMDUsMTA5LDEwMSwxMTUsXG4xMTYsOTcsMTA5LDExMiwwLDk5LDExNywxMTQsMTE0LDEwMSwxMTAsMTE2LDk1LDEwMCw5NywxMTYsMTAxLDAsMzcsNDgsNTAsMTAwLDAsMzcsNDgsNTQsNDYsNTEsMTAyLDAsMzcsNDgsNTEsMTAwLDAsMzcsNDgsNTIsMTAwLDAsMTA4LDExMSw5OSw5NywxMDgsMTE2LDEwNSwxMDksMTAxLDAsMTE3LDExMCwxMDUsMTIwLDEwMSwxMTIsMTExLDk5LDEwNCwwLDExNywxMTYsOTksMCwxMTksMTAxLDEwMSwxMDcsMTAwLDk3LDEyMSwzMiwwLDExNSwxMTYsOTcsMTE0LDExNiwzMiwxMTEsMTAyLDMyLDAsMTA5LDExMSwxMTAsMTE2LDEwNCwwLDEyMSwxMDEsOTcsMTE0LDAsMTAwLDk3LDEyMSwwLDEwNCwxMTEsMTE3LDExNCwwLDEwOSwxMDUsMTEwLDExNywxMTYsMTAxLDAsMTE1LDEwMSw5OSwxMTEsMTEwLDEwMCwwLDUwLDQ4LDk5LDU4LDUwLDQ4LDEwMSwwLDUwLDQ4LDEwMSwwLDUwLDQ4LDk4LDU4LDUwLDQ4LDEwMSwwLDEwOCwxMTEsOTksOTcsMTA4LDMyLDExNiwxMDUsMTA5LDEwMSxcbjMyLDExNywxMTAsOTcsMTE4LDk3LDEwNSwxMDgsOTcsOTgsMTA4LDEwMSwwLDExMCwxMTEsMTE5LDAsNTIsNDgsMTAyLDQ1LDUwLDQ5LDk3LDQ1LDUwLDQ5LDEwMCwwLDM3LDQ4LDUyLDEwMCw0NSwzNyw0OCw1MCwxMDAsNDUsMzcsNDgsNTAsMTAwLDMyLDM3LDQ4LDUwLDEwMCw1OCwzNyw0OCw1MCwxMDAsNTgsMzcsNDgsNTAsMTAwLDAsMzcsNDgsNTAsMTAwLDU4LDM3LDQ4LDUwLDEwMCw1OCwzNyw0OCw1MCwxMDAsMCwzNyw0OCw1MiwxMDAsNDUsMzcsNDgsNTAsMTAwLDQ1LDM3LDQ4LDUwLDEwMCwwLDExNSwxMTMsMTA4LDEwNSwxMTYsMTAxLDk1LDExNCwxMDEsMTEwLDk3LDEwOSwxMDEsOTUsMTE2LDk3LDk4LDEwOCwxMDEsMCwxMTUsMTEzLDEwOCwxMDUsMTE2LDEwMSw5NSwxMTQsMTAxLDExMCw5NywxMDksMTAxLDk1LDExNiwxMTQsMTA1LDEwMywxMDMsMTAxLDExNCwwLDExNSwxMTMsMTA4LDEwNSwxMTYsMTAxLDk1LDExNCwxMDEsMTEwLDk3LDEwOSwxMDEsOTUsMTEyLDk3LFxuMTE0LDEwMSwxMTAsMTE2LDAsMzcsMTE1LDM3LDQ2LDQyLDExNSwzNCwzNywxMTksMzQsMCwzNyw0Niw0MiwxMTUsMzQsMzcsMTE5LDM0LDM3LDExNSwwLDEwOSwxMDUsMTE1LDExNywxMTUsMTAxLDAsNjcsNzksNzcsODAsNzMsNzYsNjksODIsNjEsOTksMTA4LDk3LDExMCwxMDMsNDUsNTEsNDYsNTUsNDYsNDgsMCw2OCw3Myw4Myw2NSw2Niw3Niw2OSw5NSw3Niw3MCw4MywwLDY5LDc4LDY1LDY2LDc2LDY5LDk1LDcwLDg0LDgzLDUxLDAsNjksNzgsNjUsNjYsNzYsNjksOTUsNzAsODQsODMsNTEsOTUsODAsNjUsODIsNjksNzgsODQsNzIsNjksODMsNzMsODMsMCw3Myw3OCw4NCw1NCw1Miw5NSw4NCw4OSw4MCw2OSwwLDc5LDc3LDczLDg0LDk1LDc2LDc5LDY1LDY4LDk1LDY5LDg4LDg0LDY5LDc4LDgzLDczLDc5LDc4LDAsODMsODksODMsODQsNjksNzcsOTUsNzcsNjUsNzYsNzYsNzksNjcsMCw4NCw3Miw4Miw2OSw2NSw2OCw4Myw2NSw3MCw2OSw2MSw0OCwwLDg0LDMzLDM0LDI1LFxuMTMsMSwyLDMsMTcsNzUsMjgsMTIsMTYsNCwxMSwyOSwxOCwzMCwzOSwxMDQsMTEwLDExMSwxMTIsMTEzLDk4LDMyLDUsNiwxNSwxOSwyMCwyMSwyNiw4LDIyLDcsNDAsMzYsMjMsMjQsOSwxMCwxNCwyNywzMSwzNywzNSwxMzEsMTMwLDEyNSwzOCw0Miw0Myw2MCw2MSw2Miw2Myw2Nyw3MSw3NCw3Nyw4OCw4OSw5MCw5MSw5Miw5Myw5NCw5NSw5Niw5Nyw5OSwxMDAsMTAxLDEwMiwxMDMsMTA1LDEwNiwxMDcsMTA4LDExNCwxMTUsMTE2LDEyMSwxMjIsMTIzLDEyNCwwLDczLDEwOCwxMDgsMTAxLDEwMyw5NywxMDgsMzIsOTgsMTIxLDExNiwxMDEsMzIsMTE1LDEwMSwxMTMsMTE3LDEwMSwxMTAsOTksMTAxLDAsNjgsMTExLDEwOSw5NywxMDUsMTEwLDMyLDEwMSwxMTQsMTE0LDExMSwxMTQsMCw4MiwxMDEsMTE1LDExNywxMDgsMTE2LDMyLDExMCwxMTEsMTE2LDMyLDExNCwxMDEsMTEyLDExNCwxMDEsMTE1LDEwMSwxMTAsMTE2LDk3LDk4LDEwOCwxMDEsMCw3OCwxMTEsMTE2LDMyLDk3LFxuMzIsMTE2LDExNiwxMjEsMCw4MCwxMDEsMTE0LDEwOSwxMDUsMTE1LDExNSwxMDUsMTExLDExMCwzMiwxMDAsMTAxLDExMCwxMDUsMTAxLDEwMCwwLDc5LDExMiwxMDEsMTE0LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMTAsMTExLDExNiwzMiwxMTIsMTAxLDExNCwxMDksMTA1LDExNiwxMTYsMTAxLDEwMCwwLDc4LDExMSwzMiwxMTUsMTE3LDk5LDEwNCwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTExLDExNCwzMiwxMDAsMTA1LDExNCwxMDEsOTksMTE2LDExMSwxMTQsMTIxLDAsNzgsMTExLDMyLDExNSwxMTcsOTksMTA0LDMyLDExMiwxMTQsMTExLDk5LDEwMSwxMTUsMTE1LDAsNzAsMTA1LDEwOCwxMDEsMzIsMTAxLDEyMCwxMDUsMTE1LDExNiwxMTUsMCw4Niw5NywxMDgsMTE3LDEwMSwzMiwxMTYsMTExLDExMSwzMiwxMDgsOTcsMTE0LDEwMywxMDEsMzIsMTAyLDExMSwxMTQsMzIsMTAwLDk3LDExNiw5NywzMiwxMTYsMTIxLDExMiwxMDEsMCw3OCwxMTEsMzIsMTE1LDExMiw5Nyw5OSxcbjEwMSwzMiwxMDgsMTAxLDEwMiwxMTYsMzIsMTExLDExMCwzMiwxMDAsMTAxLDExOCwxMDUsOTksMTAxLDAsNzksMTE3LDExNiwzMiwxMTEsMTAyLDMyLDEwOSwxMDEsMTA5LDExMSwxMTQsMTIxLDAsODIsMTAxLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMzIsOTgsMTE3LDExNSwxMjEsMCw3MywxMTAsMTE2LDEwMSwxMTQsMTE0LDExNywxMTIsMTE2LDEwMSwxMDAsMzIsMTE1LDEyMSwxMTUsMTE2LDEwMSwxMDksMzIsOTksOTcsMTA4LDEwOCwwLDgyLDEwMSwxMTUsMTExLDExNywxMTQsOTksMTAxLDMyLDExNiwxMDEsMTA5LDExMiwxMTEsMTE0LDk3LDExNCwxMDUsMTA4LDEyMSwzMiwxMTcsMTEwLDk3LDExOCw5NywxMDUsMTA4LDk3LDk4LDEwOCwxMDEsMCw3MywxMTAsMTE4LDk3LDEwOCwxMDUsMTAwLDMyLDExNSwxMDEsMTAxLDEwNywwLDY3LDExNCwxMTEsMTE1LDExNSw0NSwxMDAsMTAxLDExOCwxMDUsOTksMTAxLDMyLDEwOCwxMDUsMTEwLDEwNywwLDgyLDEwMSw5NywxMDAsNDUsXG4xMTEsMTEwLDEwOCwxMjEsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDExNSwxMjEsMTE1LDExNiwxMDEsMTA5LDAsNjgsMTA1LDExNCwxMDEsOTksMTE2LDExMSwxMTQsMTIxLDMyLDExMCwxMTEsMTE2LDMyLDEwMSwxMDksMTEyLDExNiwxMjEsMCw2NywxMTEsMTEwLDExMCwxMDEsOTksMTE2LDEwNSwxMTEsMTEwLDMyLDExNCwxMDEsMTE1LDEwMSwxMTYsMzIsOTgsMTIxLDMyLDExMiwxMDEsMTAxLDExNCwwLDc5LDExMiwxMDEsMTE0LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMTYsMTA1LDEwOSwxMDEsMTAwLDMyLDExMSwxMTcsMTE2LDAsNjcsMTExLDExMCwxMTAsMTAxLDk5LDExNiwxMDUsMTExLDExMCwzMiwxMTQsMTAxLDEwMiwxMTcsMTE1LDEwMSwxMDAsMCw3MiwxMTEsMTE1LDExNiwzMiwxMDUsMTE1LDMyLDEwMCwxMTEsMTE5LDExMCwwLDcyLDExMSwxMTUsMTE2LDMyLDEwNSwxMTUsMzIsMTE3LDExMCwxMTQsMTAxLDk3LDk5LDEwNCw5Nyw5OCwxMDgsMTAxLDAsNjUsMTAwLDEwMCxcbjExNCwxMDEsMTE1LDExNSwzMiwxMDUsMTEwLDMyLDExNywxMTUsMTAxLDAsNjYsMTE0LDExMSwxMDcsMTAxLDExMCwzMiwxMTIsMTA1LDExMiwxMDEsMCw3Myw0Nyw3OSwzMiwxMDEsMTE0LDExNCwxMTEsMTE0LDAsNzgsMTExLDMyLDExNSwxMTcsOTksMTA0LDMyLDEwMCwxMDEsMTE4LDEwNSw5OSwxMDEsMzIsMTExLDExNCwzMiw5NywxMDAsMTAwLDExNCwxMDEsMTE1LDExNSwwLDY2LDEwOCwxMTEsOTksMTA3LDMyLDEwMCwxMDEsMTE4LDEwNSw5OSwxMDEsMzIsMTE0LDEwMSwxMTMsMTE3LDEwNSwxMTQsMTAxLDEwMCwwLDc4LDExMSwzMiwxMTUsMTE3LDk5LDEwNCwzMiwxMDAsMTAxLDExOCwxMDUsOTksMTAxLDAsNzgsMTExLDExNiwzMiw5NywzMiwxMDAsMTA1LDExNCwxMDEsOTksMTE2LDExMSwxMTQsMTIxLDAsNzMsMTE1LDMyLDk3LDMyLDEwMCwxMDUsMTE0LDEwMSw5OSwxMTYsMTExLDExNCwxMjEsMCw4NCwxMDEsMTIwLDExNiwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsOTgsMTE3LFxuMTE1LDEyMSwwLDY5LDEyMCwxMDEsOTksMzIsMTAyLDExMSwxMTQsMTA5LDk3LDExNiwzMiwxMDEsMTE0LDExNCwxMTEsMTE0LDAsNzMsMTEwLDExOCw5NywxMDgsMTA1LDEwMCwzMiw5NywxMTQsMTAzLDExNywxMDksMTAxLDExMCwxMTYsMCw2NSwxMTQsMTAzLDExNywxMDksMTAxLDExMCwxMTYsMzIsMTA4LDEwNSwxMTUsMTE2LDMyLDExNiwxMTEsMTExLDMyLDEwOCwxMTEsMTEwLDEwMywwLDgzLDEyMSwxMDksOTgsMTExLDEwOCwxMDUsOTksMzIsMTA4LDEwNSwxMTAsMTA3LDMyLDEwOCwxMTEsMTExLDExMiwwLDcwLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDMyLDExNiwxMTEsMTExLDMyLDEwOCwxMTEsMTEwLDEwMywwLDg0LDExMSwxMTEsMzIsMTA5LDk3LDExMCwxMjEsMzIsMTExLDExMiwxMDEsMTEwLDMyLDEwMiwxMDUsMTA4LDEwMSwxMTUsMzIsMTA1LDExMCwzMiwxMTUsMTIxLDExNSwxMTYsMTAxLDEwOSwwLDc4LDExMSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTAwLFxuMTAxLDExNSw5OSwxMTQsMTA1LDExMiwxMTYsMTExLDExNCwxMTUsMzIsOTcsMTE4LDk3LDEwNSwxMDgsOTcsOTgsMTA4LDEwMSwwLDY2LDk3LDEwMCwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTAwLDEwMSwxMTUsOTksMTE0LDEwNSwxMTIsMTE2LDExMSwxMTQsMCw3OCwxMTEsMzIsOTksMTA0LDEwNSwxMDgsMTAwLDMyLDExMiwxMTQsMTExLDk5LDEwMSwxMTUsMTE1LDAsNjYsOTcsMTAwLDMyLDk3LDEwMCwxMDAsMTE0LDEwMSwxMTUsMTE1LDAsNzAsMTA1LDEwOCwxMDEsMzIsMTE2LDExMSwxMTEsMzIsMTA4LDk3LDExNCwxMDMsMTAxLDAsODQsMTExLDExMSwzMiwxMDksOTcsMTEwLDEyMSwzMiwxMDgsMTA1LDExMCwxMDcsMTE1LDAsNzgsMTExLDMyLDEwOCwxMTEsOTksMTA3LDExNSwzMiw5NywxMTgsOTcsMTA1LDEwOCw5Nyw5OCwxMDgsMTAxLDAsODIsMTAxLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMzIsMTAwLDEwMSw5NywxMDAsMTA4LDExMSw5OSwxMDcsMzIsMTE5LDExMSwxMTcsXG4xMDgsMTAwLDMyLDExMSw5OSw5OSwxMTcsMTE0LDAsODMsMTE2LDk3LDExNiwxMDEsMzIsMTEwLDExMSwxMTYsMzIsMTE0LDEwMSw5OSwxMTEsMTE4LDEwMSwxMTQsOTcsOTgsMTA4LDEwMSwwLDgwLDExNCwxMDEsMTE4LDEwNSwxMTEsMTE3LDExNSwzMiwxMTEsMTE5LDExMCwxMDEsMTE0LDMyLDEwMCwxMDUsMTAxLDEwMCwwLDc5LDExMiwxMDEsMTE0LDk3LDExNiwxMDUsMTExLDExMCwzMiw5OSw5NywxMTAsOTksMTAxLDEwOCwxMDEsMTAwLDAsNzAsMTE3LDExMCw5OSwxMTYsMTA1LDExMSwxMTAsMzIsMTEwLDExMSwxMTYsMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsMTAxLDEwMCwwLDc4LDExMSwzMiwxMDksMTAxLDExNSwxMTUsOTcsMTAzLDEwMSwzMiwxMTEsMTAyLDMyLDEwMCwxMDEsMTE1LDEwNSwxMTQsMTAxLDEwMCwzMiwxMTYsMTIxLDExMiwxMDEsMCw3MywxMDAsMTAxLDExMCwxMTYsMTA1LDEwMiwxMDUsMTAxLDExNCwzMiwxMTQsMTAxLDEwOSxcbjExMSwxMTgsMTAxLDEwMCwwLDY4LDEwMSwxMTgsMTA1LDk5LDEwMSwzMiwxMTAsMTExLDExNiwzMiw5NywzMiwxMTUsMTE2LDExNCwxMDEsOTcsMTA5LDAsNzgsMTExLDMyLDEwMCw5NywxMTYsOTcsMzIsOTcsMTE4LDk3LDEwNSwxMDgsOTcsOTgsMTA4LDEwMSwwLDY4LDEwMSwxMTgsMTA1LDk5LDEwMSwzMiwxMTYsMTA1LDEwOSwxMDEsMTExLDExNywxMTYsMCw3OSwxMTcsMTE2LDMyLDExMSwxMDIsMzIsMTE1LDExNiwxMTQsMTAxLDk3LDEwOSwxMTUsMzIsMTE0LDEwMSwxMTUsMTExLDExNywxMTQsOTksMTAxLDExNSwwLDc2LDEwNSwxMTAsMTA3LDMyLDEwNCw5NywxMTUsMzIsOTgsMTAxLDEwMSwxMTAsMzIsMTE1LDEwMSwxMTgsMTAxLDExNCwxMDEsMTAwLDAsODAsMTE0LDExMSwxMTYsMTExLDk5LDExMSwxMDgsMzIsMTAxLDExNCwxMTQsMTExLDExNCwwLDY2LDk3LDEwMCwzMiwxMDksMTAxLDExNSwxMTUsOTcsMTAzLDEwMSwwLDcwLDEwNSwxMDgsMTAxLDMyLDEwMCwxMDEsMTE1LFxuOTksMTE0LDEwNSwxMTIsMTE2LDExMSwxMTQsMzIsMTA1LDExMCwzMiw5OCw5NywxMDAsMzIsMTE1LDExNiw5NywxMTYsMTAxLDAsNzgsMTExLDExNiwzMiw5NywzMiwxMTUsMTExLDk5LDEwNywxMDEsMTE2LDAsNjgsMTAxLDExNSwxMTYsMTA1LDExMCw5NywxMTYsMTA1LDExMSwxMTAsMzIsOTcsMTAwLDEwMCwxMTQsMTAxLDExNSwxMTUsMzIsMTE0LDEwMSwxMTMsMTE3LDEwNSwxMTQsMTAxLDEwMCwwLDc3LDEwMSwxMTUsMTE1LDk3LDEwMywxMDEsMzIsMTE2LDExMSwxMTEsMzIsMTA4LDk3LDExNCwxMDMsMTAxLDAsODAsMTE0LDExMSwxMTYsMTExLDk5LDExMSwxMDgsMzIsMTE5LDExNCwxMTEsMTEwLDEwMywzMiwxMTYsMTIxLDExMiwxMDEsMzIsMTAyLDExMSwxMTQsMzIsMTE1LDExMSw5OSwxMDcsMTAxLDExNiwwLDgwLDExNCwxMTEsMTE2LDExMSw5OSwxMTEsMTA4LDMyLDExMCwxMTEsMTE2LDMyLDk3LDExOCw5NywxMDUsMTA4LDk3LDk4LDEwOCwxMDEsMCw4MCwxMTQsMTExLFxuMTE2LDExMSw5OSwxMTEsMTA4LDMyLDExMCwxMTEsMTE2LDMyLDExNSwxMTcsMTEyLDExMiwxMTEsMTE0LDExNiwxMDEsMTAwLDAsODMsMTExLDk5LDEwNywxMDEsMTE2LDMyLDExNiwxMjEsMTEyLDEwMSwzMiwxMTAsMTExLDExNiwzMiwxMTUsMTE3LDExMiwxMTIsMTExLDExNCwxMTYsMTAxLDEwMCwwLDc4LDExMSwxMTYsMzIsMTE1LDExNywxMTIsMTEyLDExMSwxMTQsMTE2LDEwMSwxMDAsMCw4MCwxMTQsMTExLDExNiwxMTEsOTksMTExLDEwOCwzMiwxMDIsOTcsMTA5LDEwNSwxMDgsMTIxLDMyLDExMCwxMTEsMTE2LDMyLDExNSwxMTcsMTEyLDExMiwxMTEsMTE0LDExNiwxMDEsMTAwLDAsNjUsMTAwLDEwMCwxMTQsMTAxLDExNSwxMTUsMzIsMTAyLDk3LDEwOSwxMDUsMTA4LDEyMSwzMiwxMTAsMTExLDExNiwzMiwxMTUsMTE3LDExMiwxMTIsMTExLDExNCwxMTYsMTAxLDEwMCwzMiw5OCwxMjEsMzIsMTEyLDExNCwxMTEsMTE2LDExMSw5OSwxMTEsMTA4LDAsNjUsMTAwLDEwMCwxMTQsXG4xMDEsMTE1LDExNSwzMiwxMTAsMTExLDExNiwzMiw5NywxMTgsOTcsMTA1LDEwOCw5Nyw5OCwxMDgsMTAxLDAsNzgsMTAxLDExNiwxMTksMTExLDExNCwxMDcsMzIsMTA1LDExNSwzMiwxMDAsMTExLDExOSwxMTAsMCw3OCwxMDEsMTE2LDExOSwxMTEsMTE0LDEwNywzMiwxMTcsMTEwLDExNCwxMDEsOTcsOTksMTA0LDk3LDk4LDEwOCwxMDEsMCw2NywxMTEsMTEwLDExMCwxMDEsOTksMTE2LDEwNSwxMTEsMTEwLDMyLDExNCwxMDEsMTE1LDEwMSwxMTYsMzIsOTgsMTIxLDMyLDExMCwxMDEsMTE2LDExOSwxMTEsMTE0LDEwNywwLDY3LDExMSwxMTAsMTEwLDEwMSw5OSwxMTYsMTA1LDExMSwxMTAsMzIsOTcsOTgsMTExLDExNCwxMTYsMTAxLDEwMCwwLDc4LDExMSwzMiw5OCwxMTcsMTAyLDEwMiwxMDEsMTE0LDMyLDExNSwxMTIsOTcsOTksMTAxLDMyLDk3LDExOCw5NywxMDUsMTA4LDk3LDk4LDEwOCwxMDEsMCw4MywxMTEsOTksMTA3LDEwMSwxMTYsMzIsMTA1LDExNSwzMiw5OSwxMTEsXG4xMTAsMTEwLDEwMSw5OSwxMTYsMTAxLDEwMCwwLDgzLDExMSw5OSwxMDcsMTAxLDExNiwzMiwxMTAsMTExLDExNiwzMiw5OSwxMTEsMTEwLDExMCwxMDEsOTksMTE2LDEwMSwxMDAsMCw2Nyw5NywxMTAsMTEwLDExMSwxMTYsMzIsMTE1LDEwMSwxMTAsMTAwLDMyLDk3LDEwMiwxMTYsMTAxLDExNCwzMiwxMTUsMTExLDk5LDEwNywxMDEsMTE2LDMyLDExNSwxMDQsMTE3LDExNiwxMDAsMTExLDExOSwxMTAsMCw3OSwxMTIsMTAxLDExNCw5NywxMTYsMTA1LDExMSwxMTAsMzIsOTcsMTA4LDExNCwxMDEsOTcsMTAwLDEyMSwzMiwxMDUsMTEwLDMyLDExMiwxMTQsMTExLDEwMywxMTQsMTAxLDExNSwxMTUsMCw3OSwxMTIsMTAxLDExNCw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTA1LDExMCwzMiwxMTIsMTE0LDExMSwxMDMsMTE0LDEwMSwxMTUsMTE1LDAsODMsMTE2LDk3LDEwOCwxMDEsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDEwNCw5NywxMTAsMTAwLDEwOCwxMDEsMCw4MiwxMDEsMTA5LDExMSxcbjExNiwxMDEsMzIsNzMsNDcsNzksMzIsMTAxLDExNCwxMTQsMTExLDExNCwwLDgxLDExNywxMTEsMTE2LDk3LDMyLDEwMSwxMjAsOTksMTAxLDEwMSwxMDAsMTAxLDEwMCwwLDc4LDExMSwzMiwxMDksMTAxLDEwMCwxMDUsMTE3LDEwOSwzMiwxMDIsMTExLDExNywxMTAsMTAwLDAsODcsMTE0LDExMSwxMTAsMTAzLDMyLDEwOSwxMDEsMTAwLDEwNSwxMTcsMTA5LDMyLDExNiwxMjEsMTEyLDEwMSwwLDc4LDExMSwzMiwxMDEsMTE0LDExNCwxMTEsMTE0LDMyLDEwNSwxMTAsMTAyLDExMSwxMTQsMTA5LDk3LDExNiwxMDUsMTExLDExMCwwLDAsNDcsMTEyLDExNCwxMTEsOTksNDcsMTE1LDEwMSwxMDgsMTAyLDQ3LDEwMiwxMDAsNDddLFwiaThcIiw0LGwuYWErNDA5NjApO3ZhciB5Yj1sLnRhKHooMTIsXCJpOFwiLDIpLDgpO2Fzc2VydCgwPT15YiU4KTtmLl9pNjRTdWJ0cmFjdD16YjtmLl9pNjRBZGQ9QWI7XG52YXIgRD17SDoxLEo6MixLZDozLEdjOjQsTzo1LEthOjYsJGI6NyxkZDo4LEw6OSxuYzoxMCxHYToxMSxVZDoxMSxJYToxMixZOjEzLHpjOjE0LHJkOjE1LFo6MTYsSGE6MTcsVmQ6MTgsaGE6MTksaWE6MjAsUzoyMSxwOjIyLFpjOjIzLGViOjI0LCQ6MjUsUmQ6MjYsQWM6MjcsbmQ6MjgsamE6MjksSGQ6MzAsU2M6MzEsQmQ6MzIsd2M6MzMsZmI6MzQsamQ6NDIsRGM6NDMsb2M6NDQsSmM6NDUsS2M6NDYsTGM6NDcsUmM6NDgsU2Q6NDksYmQ6NTAsSWM6NTEsdGM6MzUsZWQ6MzcsZmM6NTIsaWM6NTMsV2Q6NTQsJGM6NTUsamM6NTYsa2M6NTcsdWM6MzUsbGM6NTkscGQ6NjAsY2Q6NjEsT2Q6NjIsb2Q6NjMsa2Q6NjQsbGQ6NjUsR2Q6NjYsZ2Q6NjcsY2M6NjgsTGQ6NjkscGM6NzAsQ2Q6NzEsVWM6NzIseGM6NzMsaGM6NzQsd2Q6NzYsZ2M6NzcsRmQ6NzgsTWM6NzksTmM6ODAsUWM6ODEsUGM6ODIsT2M6ODMscWQ6MzgsSmE6MzksVmM6MzYsc2E6NDAseGQ6OTUsQWQ6OTYsc2M6MTA0LGFkOjEwNSxcbmRjOjk3LEVkOjkxLHVkOjg4LG1kOjkyLElkOjEwOCxyYzoxMTEsYWM6OTgscWM6MTAzLFljOjEwMSxXYzoxMDAsUGQ6MTEwLEJjOjExMixDYzoxMTMsRmM6MTE1LGVjOjExNCx2Yzo4OSxUYzo5MCxEZDo5MyxKZDo5NCxiYzo5OSxYYzoxMDIsSGM6MTA2LHNkOjEwNyxRZDoxMDksVGQ6ODcseWM6MTIyLE1kOjExNix2ZDo5NSxoZDoxMjMsRWM6ODQseWQ6NzUsbWM6MTI1LHRkOjEzMSx6ZDoxMzAsTmQ6ODZ9LEJiPXswOlwiU3VjY2Vzc1wiLDE6XCJOb3Qgc3VwZXItdXNlclwiLDI6XCJObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5XCIsMzpcIk5vIHN1Y2ggcHJvY2Vzc1wiLDQ6XCJJbnRlcnJ1cHRlZCBzeXN0ZW0gY2FsbFwiLDU6XCJJL08gZXJyb3JcIiw2OlwiTm8gc3VjaCBkZXZpY2Ugb3IgYWRkcmVzc1wiLDc6XCJBcmcgbGlzdCB0b28gbG9uZ1wiLDg6XCJFeGVjIGZvcm1hdCBlcnJvclwiLDk6XCJCYWQgZmlsZSBudW1iZXJcIiwxMDpcIk5vIGNoaWxkcmVuXCIsMTE6XCJObyBtb3JlIHByb2Nlc3Nlc1wiLDEyOlwiTm90IGVub3VnaCBjb3JlXCIsXG4xMzpcIlBlcm1pc3Npb24gZGVuaWVkXCIsMTQ6XCJCYWQgYWRkcmVzc1wiLDE1OlwiQmxvY2sgZGV2aWNlIHJlcXVpcmVkXCIsMTY6XCJNb3VudCBkZXZpY2UgYnVzeVwiLDE3OlwiRmlsZSBleGlzdHNcIiwxODpcIkNyb3NzLWRldmljZSBsaW5rXCIsMTk6XCJObyBzdWNoIGRldmljZVwiLDIwOlwiTm90IGEgZGlyZWN0b3J5XCIsMjE6XCJJcyBhIGRpcmVjdG9yeVwiLDIyOlwiSW52YWxpZCBhcmd1bWVudFwiLDIzOlwiVG9vIG1hbnkgb3BlbiBmaWxlcyBpbiBzeXN0ZW1cIiwyNDpcIlRvbyBtYW55IG9wZW4gZmlsZXNcIiwyNTpcIk5vdCBhIHR5cGV3cml0ZXJcIiwyNjpcIlRleHQgZmlsZSBidXN5XCIsMjc6XCJGaWxlIHRvbyBsYXJnZVwiLDI4OlwiTm8gc3BhY2UgbGVmdCBvbiBkZXZpY2VcIiwyOTpcIklsbGVnYWwgc2Vla1wiLDMwOlwiUmVhZCBvbmx5IGZpbGUgc3lzdGVtXCIsMzE6XCJUb28gbWFueSBsaW5rc1wiLDMyOlwiQnJva2VuIHBpcGVcIiwzMzpcIk1hdGggYXJnIG91dCBvZiBkb21haW4gb2YgZnVuY1wiLDM0OlwiTWF0aCByZXN1bHQgbm90IHJlcHJlc2VudGFibGVcIixcbjM1OlwiRmlsZSBsb2NraW5nIGRlYWRsb2NrIGVycm9yXCIsMzY6XCJGaWxlIG9yIHBhdGggbmFtZSB0b28gbG9uZ1wiLDM3OlwiTm8gcmVjb3JkIGxvY2tzIGF2YWlsYWJsZVwiLDM4OlwiRnVuY3Rpb24gbm90IGltcGxlbWVudGVkXCIsMzk6XCJEaXJlY3Rvcnkgbm90IGVtcHR5XCIsNDA6XCJUb28gbWFueSBzeW1ib2xpYyBsaW5rc1wiLDQyOlwiTm8gbWVzc2FnZSBvZiBkZXNpcmVkIHR5cGVcIiw0MzpcIklkZW50aWZpZXIgcmVtb3ZlZFwiLDQ0OlwiQ2hhbm5lbCBudW1iZXIgb3V0IG9mIHJhbmdlXCIsNDU6XCJMZXZlbCAyIG5vdCBzeW5jaHJvbml6ZWRcIiw0NjpcIkxldmVsIDMgaGFsdGVkXCIsNDc6XCJMZXZlbCAzIHJlc2V0XCIsNDg6XCJMaW5rIG51bWJlciBvdXQgb2YgcmFuZ2VcIiw0OTpcIlByb3RvY29sIGRyaXZlciBub3QgYXR0YWNoZWRcIiw1MDpcIk5vIENTSSBzdHJ1Y3R1cmUgYXZhaWxhYmxlXCIsNTE6XCJMZXZlbCAyIGhhbHRlZFwiLDUyOlwiSW52YWxpZCBleGNoYW5nZVwiLDUzOlwiSW52YWxpZCByZXF1ZXN0IGRlc2NyaXB0b3JcIixcbjU0OlwiRXhjaGFuZ2UgZnVsbFwiLDU1OlwiTm8gYW5vZGVcIiw1NjpcIkludmFsaWQgcmVxdWVzdCBjb2RlXCIsNTc6XCJJbnZhbGlkIHNsb3RcIiw1OTpcIkJhZCBmb250IGZpbGUgZm10XCIsNjA6XCJEZXZpY2Ugbm90IGEgc3RyZWFtXCIsNjE6XCJObyBkYXRhIChmb3Igbm8gZGVsYXkgaW8pXCIsNjI6XCJUaW1lciBleHBpcmVkXCIsNjM6XCJPdXQgb2Ygc3RyZWFtcyByZXNvdXJjZXNcIiw2NDpcIk1hY2hpbmUgaXMgbm90IG9uIHRoZSBuZXR3b3JrXCIsNjU6XCJQYWNrYWdlIG5vdCBpbnN0YWxsZWRcIiw2NjpcIlRoZSBvYmplY3QgaXMgcmVtb3RlXCIsNjc6XCJUaGUgbGluayBoYXMgYmVlbiBzZXZlcmVkXCIsNjg6XCJBZHZlcnRpc2UgZXJyb3JcIiw2OTpcIlNybW91bnQgZXJyb3JcIiw3MDpcIkNvbW11bmljYXRpb24gZXJyb3Igb24gc2VuZFwiLDcxOlwiUHJvdG9jb2wgZXJyb3JcIiw3MjpcIk11bHRpaG9wIGF0dGVtcHRlZFwiLDczOlwiQ3Jvc3MgbW91bnQgcG9pbnQgKG5vdCByZWFsbHkgZXJyb3IpXCIsNzQ6XCJUcnlpbmcgdG8gcmVhZCB1bnJlYWRhYmxlIG1lc3NhZ2VcIixcbjc1OlwiVmFsdWUgdG9vIGxhcmdlIGZvciBkZWZpbmVkIGRhdGEgdHlwZVwiLDc2OlwiR2l2ZW4gbG9nLiBuYW1lIG5vdCB1bmlxdWVcIiw3NzpcImYuZC4gaW52YWxpZCBmb3IgdGhpcyBvcGVyYXRpb25cIiw3ODpcIlJlbW90ZSBhZGRyZXNzIGNoYW5nZWRcIiw3OTpcIkNhbiAgIGFjY2VzcyBhIG5lZWRlZCBzaGFyZWQgbGliXCIsODA6XCJBY2Nlc3NpbmcgYSBjb3JydXB0ZWQgc2hhcmVkIGxpYlwiLDgxOlwiLmxpYiBzZWN0aW9uIGluIGEub3V0IGNvcnJ1cHRlZFwiLDgyOlwiQXR0ZW1wdGluZyB0byBsaW5rIGluIHRvbyBtYW55IGxpYnNcIiw4MzpcIkF0dGVtcHRpbmcgdG8gZXhlYyBhIHNoYXJlZCBsaWJyYXJ5XCIsODQ6XCJJbGxlZ2FsIGJ5dGUgc2VxdWVuY2VcIiw4NjpcIlN0cmVhbXMgcGlwZSBlcnJvclwiLDg3OlwiVG9vIG1hbnkgdXNlcnNcIiw4ODpcIlNvY2tldCBvcGVyYXRpb24gb24gbm9uLXNvY2tldFwiLDg5OlwiRGVzdGluYXRpb24gYWRkcmVzcyByZXF1aXJlZFwiLDkwOlwiTWVzc2FnZSB0b28gbG9uZ1wiLDkxOlwiUHJvdG9jb2wgd3JvbmcgdHlwZSBmb3Igc29ja2V0XCIsXG45MjpcIlByb3RvY29sIG5vdCBhdmFpbGFibGVcIiw5MzpcIlVua25vd24gcHJvdG9jb2xcIiw5NDpcIlNvY2tldCB0eXBlIG5vdCBzdXBwb3J0ZWRcIiw5NTpcIk5vdCBzdXBwb3J0ZWRcIiw5NjpcIlByb3RvY29sIGZhbWlseSBub3Qgc3VwcG9ydGVkXCIsOTc6XCJBZGRyZXNzIGZhbWlseSBub3Qgc3VwcG9ydGVkIGJ5IHByb3RvY29sIGZhbWlseVwiLDk4OlwiQWRkcmVzcyBhbHJlYWR5IGluIHVzZVwiLDk5OlwiQWRkcmVzcyBub3QgYXZhaWxhYmxlXCIsMTAwOlwiTmV0d29yayBpbnRlcmZhY2UgaXMgbm90IGNvbmZpZ3VyZWRcIiwxMDE6XCJOZXR3b3JrIGlzIHVucmVhY2hhYmxlXCIsMTAyOlwiQ29ubmVjdGlvbiByZXNldCBieSBuZXR3b3JrXCIsMTAzOlwiQ29ubmVjdGlvbiBhYm9ydGVkXCIsMTA0OlwiQ29ubmVjdGlvbiByZXNldCBieSBwZWVyXCIsMTA1OlwiTm8gYnVmZmVyIHNwYWNlIGF2YWlsYWJsZVwiLDEwNjpcIlNvY2tldCBpcyBhbHJlYWR5IGNvbm5lY3RlZFwiLDEwNzpcIlNvY2tldCBpcyBub3QgY29ubmVjdGVkXCIsMTA4OlwiQ2FuJ3Qgc2VuZCBhZnRlciBzb2NrZXQgc2h1dGRvd25cIixcbjEwOTpcIlRvbyBtYW55IHJlZmVyZW5jZXNcIiwxMTA6XCJDb25uZWN0aW9uIHRpbWVkIG91dFwiLDExMTpcIkNvbm5lY3Rpb24gcmVmdXNlZFwiLDExMjpcIkhvc3QgaXMgZG93blwiLDExMzpcIkhvc3QgaXMgdW5yZWFjaGFibGVcIiwxMTQ6XCJTb2NrZXQgYWxyZWFkeSBjb25uZWN0ZWRcIiwxMTU6XCJDb25uZWN0aW9uIGFscmVhZHkgaW4gcHJvZ3Jlc3NcIiwxMTY6XCJTdGFsZSBmaWxlIGhhbmRsZVwiLDEyMjpcIlF1b3RhIGV4Y2VlZGVkXCIsMTIzOlwiTm8gbWVkaXVtIChpbiB0YXBlIGRyaXZlKVwiLDEyNTpcIk9wZXJhdGlvbiBjYW5jZWxlZFwiLDEzMDpcIlByZXZpb3VzIG93bmVyIGRpZWRcIiwxMzE6XCJTdGF0ZSBub3QgcmVjb3ZlcmFibGVcIn07ZnVuY3Rpb24gQ2IoYSl7Zi5fX19lcnJub19sb2NhdGlvbiYmKHdbZi5fX19lcnJub19sb2NhdGlvbigpPj4yXT1hKTtyZXR1cm4gYX1cbmZ1bmN0aW9uIERiKGEsYil7Zm9yKHZhciBjPTAsZD1hLmxlbmd0aC0xOzA8PWQ7ZC0tKXt2YXIgZT1hW2RdO1wiLlwiPT09ZT9hLnNwbGljZShkLDEpOlwiLi5cIj09PWU/KGEuc3BsaWNlKGQsMSksYysrKTpjJiYoYS5zcGxpY2UoZCwxKSxjLS0pfWlmKGIpZm9yKDtjLS07YylhLnVuc2hpZnQoXCIuLlwiKTtyZXR1cm4gYX1mdW5jdGlvbiBFYihhKXt2YXIgYj1cIi9cIj09PWEuY2hhckF0KDApLGM9XCIvXCI9PT1hLnN1YnN0cigtMSk7KGE9RGIoYS5zcGxpdChcIi9cIikuZmlsdGVyKGZ1bmN0aW9uKGEpe3JldHVybiEhYX0pLCFiKS5qb2luKFwiL1wiKSl8fGJ8fChhPVwiLlwiKTthJiZjJiYoYSs9XCIvXCIpO3JldHVybihiP1wiL1wiOlwiXCIpK2F9XG5mdW5jdGlvbiBGYihhKXt2YXIgYj0vXihcXC8/fCkoW1xcc1xcU10qPykoKD86XFwuezEsMn18W15cXC9dKz98KShcXC5bXi5cXC9dKnwpKSg/OltcXC9dKikkLy5leGVjKGEpLnNsaWNlKDEpO2E9YlswXTtiPWJbMV07aWYoIWEmJiFiKXJldHVyblwiLlwiO2ImJihiPWIuc3Vic3RyKDAsYi5sZW5ndGgtMSkpO3JldHVybiBhK2J9ZnVuY3Rpb24gR2IoYSl7aWYoXCIvXCI9PT1hKXJldHVyblwiL1wiO3ZhciBiPWEubGFzdEluZGV4T2YoXCIvXCIpO3JldHVybi0xPT09Yj9hOmEuc3Vic3RyKGIrMSl9ZnVuY3Rpb24gSGIoKXt2YXIgYT1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMCk7cmV0dXJuIEViKGEuam9pbihcIi9cIikpfWZ1bmN0aW9uIEUoYSxiKXtyZXR1cm4gRWIoYStcIi9cIitiKX1cbmZ1bmN0aW9uIEliKCl7Zm9yKHZhciBhPVwiXCIsYj0hMSxjPWFyZ3VtZW50cy5sZW5ndGgtMTstMTw9YyYmIWI7Yy0tKXtiPTA8PWM/YXJndW1lbnRzW2NdOlwiL1wiO2lmKFwic3RyaW5nXCIhPT10eXBlb2YgYil0aHJvdyBuZXcgVHlwZUVycm9yKFwiQXJndW1lbnRzIHRvIHBhdGgucmVzb2x2ZSBtdXN0IGJlIHN0cmluZ3NcIik7aWYoIWIpcmV0dXJuXCJcIjthPWIrXCIvXCIrYTtiPVwiL1wiPT09Yi5jaGFyQXQoMCl9YT1EYihhLnNwbGl0KFwiL1wiKS5maWx0ZXIoZnVuY3Rpb24oYSl7cmV0dXJuISFhfSksIWIpLmpvaW4oXCIvXCIpO3JldHVybihiP1wiL1wiOlwiXCIpK2F8fFwiLlwifXZhciBKYj1bXTtmdW5jdGlvbiBLYihhLGIpe0piW2FdPXtpbnB1dDpbXSxvdXRwdXQ6W10sVzpifTtMYihhLE1iKX1cbnZhciBNYj17b3BlbjpmdW5jdGlvbihhKXt2YXIgYj1KYlthLmcucmRldl07aWYoIWIpdGhyb3cgbmV3IEgoRC5oYSk7YS50dHk9YjthLnNlZWthYmxlPSExfSxjbG9zZTpmdW5jdGlvbihhKXthLnR0eS5XLmZsdXNoKGEudHR5KX0sZmx1c2g6ZnVuY3Rpb24oYSl7YS50dHkuVy5mbHVzaChhLnR0eSl9LHJlYWQ6ZnVuY3Rpb24oYSxiLGMsZCl7aWYoIWEudHR5fHwhYS50dHkuVy5ZYSl0aHJvdyBuZXcgSChELkthKTtmb3IodmFyIGU9MCxnPTA7ZzxkO2crKyl7dmFyIGg7dHJ5e2g9YS50dHkuVy5ZYShhLnR0eSl9Y2F0Y2gobSl7dGhyb3cgbmV3IEgoRC5PKTt9aWYodm9pZCAwPT09aCYmMD09PWUpdGhyb3cgbmV3IEgoRC5HYSk7aWYobnVsbD09PWh8fHZvaWQgMD09PWgpYnJlYWs7ZSsrO2JbYytnXT1ofWUmJihhLmcudGltZXN0YW1wPURhdGUubm93KCkpO3JldHVybiBlfSx3cml0ZTpmdW5jdGlvbihhLGIsYyxkKXtpZighYS50dHl8fCFhLnR0eS5XLkNhKXRocm93IG5ldyBIKEQuS2EpO1xuZm9yKHZhciBlPTA7ZTxkO2UrKyl0cnl7YS50dHkuVy5DYShhLnR0eSxiW2MrZV0pfWNhdGNoKGcpe3Rocm93IG5ldyBIKEQuTyk7fWQmJihhLmcudGltZXN0YW1wPURhdGUubm93KCkpO3JldHVybiBlfX0sTmI9e1lhOmZ1bmN0aW9uKGEpe2lmKCFhLmlucHV0Lmxlbmd0aCl7dmFyIGI9bnVsbDtpZihlYSl7dmFyIGM9bmV3IEJ1ZmZlcigyNTYpLGQ9MCxlPXByb2Nlc3Muc3RkaW4uZmQsZz0hMTt0cnl7ZT1mcy5vcGVuU3luYyhcIi9kZXYvc3RkaW5cIixcInJcIiksZz0hMH1jYXRjaChoKXt9ZD1mcy5yZWFkU3luYyhlLGMsMCwyNTYsbnVsbCk7ZyYmZnMuY2xvc2VTeW5jKGUpOzA8ZD9iPWMuc2xpY2UoMCxkKS50b1N0cmluZyhcInV0Zi04XCIpOmI9bnVsbH1lbHNlXCJ1bmRlZmluZWRcIiE9dHlwZW9mIHdpbmRvdyYmXCJmdW5jdGlvblwiPT10eXBlb2Ygd2luZG93LnByb21wdD8oYj13aW5kb3cucHJvbXB0KFwiSW5wdXQ6IFwiKSxudWxsIT09YiYmKGIrPVwiXFxuXCIpKTpcImZ1bmN0aW9uXCI9PXR5cGVvZiByZWFkbGluZSYmXG4oYj1yZWFkbGluZSgpLG51bGwhPT1iJiYoYis9XCJcXG5cIikpO2lmKCFiKXJldHVybiBudWxsO2EuaW5wdXQ9QihiLCEwKX1yZXR1cm4gYS5pbnB1dC5zaGlmdCgpfSxDYTpmdW5jdGlvbihhLGIpe251bGw9PT1ifHwxMD09PWI/KGYucHJpbnQoTGEoYS5vdXRwdXQsMCkpLGEub3V0cHV0PVtdKTowIT1iJiZhLm91dHB1dC5wdXNoKGIpfSxmbHVzaDpmdW5jdGlvbihhKXthLm91dHB1dCYmMDxhLm91dHB1dC5sZW5ndGgmJihmLnByaW50KExhKGEub3V0cHV0LDApKSxhLm91dHB1dD1bXSl9fSxPYj17Q2E6ZnVuY3Rpb24oYSxiKXtudWxsPT09Ynx8MTA9PT1iPyhmLnByaW50RXJyKExhKGEub3V0cHV0LDApKSxhLm91dHB1dD1bXSk6MCE9YiYmYS5vdXRwdXQucHVzaChiKX0sZmx1c2g6ZnVuY3Rpb24oYSl7YS5vdXRwdXQmJjA8YS5vdXRwdXQubGVuZ3RoJiYoZi5wcmludEVycihMYShhLm91dHB1dCwwKSksYS5vdXRwdXQ9W10pfX0sSj17STpudWxsLEQ6ZnVuY3Rpb24oKXtyZXR1cm4gSi5jcmVhdGVOb2RlKG51bGwsXG5cIi9cIiwxNjg5NSwwKX0sY3JlYXRlTm9kZTpmdW5jdGlvbihhLGIsYyxkKXtpZigyNDU3Nj09PShjJjYxNDQwKXx8NDA5Nj09PShjJjYxNDQwKSl0aHJvdyBuZXcgSChELkgpO0ouSXx8KEouST17ZGlyOntnOntHOkouay5HLEI6Si5rLkIsbG9va3VwOkouay5sb29rdXAsZGE6Si5rLmRhLHJlbmFtZTpKLmsucmVuYW1lLHVubGluazpKLmsudW5saW5rLHJtZGlyOkouay5ybWRpcixyZWFkZGlyOkouay5yZWFkZGlyLHN5bWxpbms6Si5rLnN5bWxpbmt9LHN0cmVhbTp7TjpKLm4uTn19LGZpbGU6e2c6e0c6Si5rLkcsQjpKLmsuQn0sc3RyZWFtOntOOkoubi5OLHJlYWQ6Si5uLnJlYWQsd3JpdGU6Si5uLndyaXRlLE1hOkoubi5NYSxvYTpKLm4ub2EscGE6Si5uLnBhfX0sbGluazp7Zzp7RzpKLmsuRyxCOkouay5CLHJlYWRsaW5rOkouay5yZWFkbGlua30sc3RyZWFtOnt9fSxRYTp7Zzp7RzpKLmsuRyxCOkouay5CfSxzdHJlYW06UGJ9fSk7Yz1RYihhLGIsYyxkKTtLKGMubW9kZSk/KGMuaz1cbkouSS5kaXIuZyxjLm49Si5JLmRpci5zdHJlYW0sYy5lPXt9KTozMjc2OD09PShjLm1vZGUmNjE0NDApPyhjLms9Si5JLmZpbGUuZyxjLm49Si5JLmZpbGUuc3RyZWFtLGMucT0wLGMuZT1udWxsKTo0MDk2MD09PShjLm1vZGUmNjE0NDApPyhjLms9Si5JLmxpbmsuZyxjLm49Si5JLmxpbmsuc3RyZWFtKTo4MTkyPT09KGMubW9kZSY2MTQ0MCkmJihjLms9Si5JLlFhLmcsYy5uPUouSS5RYS5zdHJlYW0pO2MudGltZXN0YW1wPURhdGUubm93KCk7YSYmKGEuZVtiXT1jKTtyZXR1cm4gY30sd2I6ZnVuY3Rpb24oYSl7aWYoYS5lJiZhLmUuc3ViYXJyYXkpe2Zvcih2YXIgYj1bXSxjPTA7YzxhLnE7KytjKWIucHVzaChhLmVbY10pO3JldHVybiBifXJldHVybiBhLmV9LEFlOmZ1bmN0aW9uKGEpe3JldHVybiBhLmU/YS5lLnN1YmFycmF5P2EuZS5zdWJhcnJheSgwLGEucSk6bmV3IFVpbnQ4QXJyYXkoYS5lKTpuZXcgVWludDhBcnJheX0sU2E6ZnVuY3Rpb24oYSxiKXthLmUmJmEuZS5zdWJhcnJheSYmXG5iPmEuZS5sZW5ndGgmJihhLmU9Si53YihhKSxhLnE9YS5lLmxlbmd0aCk7aWYoIWEuZXx8YS5lLnN1YmFycmF5KXt2YXIgYz1hLmU/YS5lLmJ1ZmZlci5ieXRlTGVuZ3RoOjA7Yz49Ynx8KGI9TWF0aC5tYXgoYixjKigxMDQ4NTc2PmM/MjoxLjEyNSl8MCksMCE9YyYmKGI9TWF0aC5tYXgoYiwyNTYpKSxjPWEuZSxhLmU9bmV3IFVpbnQ4QXJyYXkoYiksMDxhLnEmJmEuZS5zZXQoYy5zdWJhcnJheSgwLGEucSksMCkpfWVsc2UgZm9yKCFhLmUmJjA8YiYmKGEuZT1bXSk7YS5lLmxlbmd0aDxiOylhLmUucHVzaCgwKX0sTmI6ZnVuY3Rpb24oYSxiKXtpZihhLnEhPWIpaWYoMD09YilhLmU9bnVsbCxhLnE9MDtlbHNle2lmKCFhLmV8fGEuZS5zdWJhcnJheSl7dmFyIGM9YS5lO2EuZT1uZXcgVWludDhBcnJheShuZXcgQXJyYXlCdWZmZXIoYikpO2MmJmEuZS5zZXQoYy5zdWJhcnJheSgwLE1hdGgubWluKGIsYS5xKSkpfWVsc2UgaWYoYS5lfHwoYS5lPVtdKSxhLmUubGVuZ3RoPmIpYS5lLmxlbmd0aD1cbmI7ZWxzZSBmb3IoO2EuZS5sZW5ndGg8YjspYS5lLnB1c2goMCk7YS5xPWJ9fSxrOntHOmZ1bmN0aW9uKGEpe3ZhciBiPXt9O2IuZGV2PTgxOTI9PT0oYS5tb2RlJjYxNDQwKT9hLmlkOjE7Yi5pbm89YS5pZDtiLm1vZGU9YS5tb2RlO2Iubmxpbms9MTtiLnVpZD0wO2IuZ2lkPTA7Yi5yZGV2PWEucmRldjtLKGEubW9kZSk/Yi5zaXplPTQwOTY6MzI3Njg9PT0oYS5tb2RlJjYxNDQwKT9iLnNpemU9YS5xOjQwOTYwPT09KGEubW9kZSY2MTQ0MCk/Yi5zaXplPWEubGluay5sZW5ndGg6Yi5zaXplPTA7Yi5hdGltZT1uZXcgRGF0ZShhLnRpbWVzdGFtcCk7Yi5tdGltZT1uZXcgRGF0ZShhLnRpbWVzdGFtcCk7Yi5jdGltZT1uZXcgRGF0ZShhLnRpbWVzdGFtcCk7Yi5QPTQwOTY7Yi5ibG9ja3M9TWF0aC5jZWlsKGIuc2l6ZS9iLlApO3JldHVybiBifSxCOmZ1bmN0aW9uKGEsYil7dm9pZCAwIT09Yi5tb2RlJiYoYS5tb2RlPWIubW9kZSk7dm9pZCAwIT09Yi50aW1lc3RhbXAmJihhLnRpbWVzdGFtcD1cbmIudGltZXN0YW1wKTt2b2lkIDAhPT1iLnNpemUmJkouTmIoYSxiLnNpemUpfSxsb29rdXA6ZnVuY3Rpb24oKXt0aHJvdyBSYltELkpdO30sZGE6ZnVuY3Rpb24oYSxiLGMsZCl7cmV0dXJuIEouY3JlYXRlTm9kZShhLGIsYyxkKX0scmVuYW1lOmZ1bmN0aW9uKGEsYixjKXtpZihLKGEubW9kZSkpe3ZhciBkO3RyeXtkPVNiKGIsYyl9Y2F0Y2goZSl7fWlmKGQpZm9yKHZhciBnIGluIGQuZSl0aHJvdyBuZXcgSChELkphKTt9ZGVsZXRlIGEucGFyZW50LmVbYS5uYW1lXTthLm5hbWU9YztiLmVbY109YTthLnBhcmVudD1ifSx1bmxpbms6ZnVuY3Rpb24oYSxiKXtkZWxldGUgYS5lW2JdfSxybWRpcjpmdW5jdGlvbihhLGIpe3ZhciBjPVNiKGEsYiksZDtmb3IoZCBpbiBjLmUpdGhyb3cgbmV3IEgoRC5KYSk7ZGVsZXRlIGEuZVtiXX0scmVhZGRpcjpmdW5jdGlvbihhKXt2YXIgYj1bXCIuXCIsXCIuLlwiXSxjO2ZvcihjIGluIGEuZSlhLmUuaGFzT3duUHJvcGVydHkoYykmJmIucHVzaChjKTtyZXR1cm4gYn0sXG5zeW1saW5rOmZ1bmN0aW9uKGEsYixjKXthPUouY3JlYXRlTm9kZShhLGIsNDE0NzEsMCk7YS5saW5rPWM7cmV0dXJuIGF9LHJlYWRsaW5rOmZ1bmN0aW9uKGEpe2lmKDQwOTYwIT09KGEubW9kZSY2MTQ0MCkpdGhyb3cgbmV3IEgoRC5wKTtyZXR1cm4gYS5saW5rfX0sbjp7cmVhZDpmdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBnPWEuZy5lO2lmKGU+PWEuZy5xKXJldHVybiAwO2E9TWF0aC5taW4oYS5nLnEtZSxkKTthc3NlcnQoMDw9YSk7aWYoODxhJiZnLnN1YmFycmF5KWIuc2V0KGcuc3ViYXJyYXkoZSxlK2EpLGMpO2Vsc2UgZm9yKGQ9MDtkPGE7ZCsrKWJbYytkXT1nW2UrZF07cmV0dXJuIGF9LHdyaXRlOmZ1bmN0aW9uKGEsYixjLGQsZSxnKXtpZighZClyZXR1cm4gMDthPWEuZzthLnRpbWVzdGFtcD1EYXRlLm5vdygpO2lmKGIuc3ViYXJyYXkmJighYS5lfHxhLmUuc3ViYXJyYXkpKXtpZihnKXJldHVybiBhLmU9Yi5zdWJhcnJheShjLGMrZCksYS5xPWQ7aWYoMD09PWEucSYmMD09PVxuZSlyZXR1cm4gYS5lPW5ldyBVaW50OEFycmF5KGIuc3ViYXJyYXkoYyxjK2QpKSxhLnE9ZDtpZihlK2Q8PWEucSlyZXR1cm4gYS5lLnNldChiLnN1YmFycmF5KGMsYytkKSxlKSxkfUouU2EoYSxlK2QpO2lmKGEuZS5zdWJhcnJheSYmYi5zdWJhcnJheSlhLmUuc2V0KGIuc3ViYXJyYXkoYyxjK2QpLGUpO2Vsc2UgZm9yKGc9MDtnPGQ7ZysrKWEuZVtlK2ddPWJbYytnXTthLnE9TWF0aC5tYXgoYS5xLGUrZCk7cmV0dXJuIGR9LE46ZnVuY3Rpb24oYSxiLGMpezE9PT1jP2IrPWEucG9zaXRpb246Mj09PWMmJjMyNzY4PT09KGEuZy5tb2RlJjYxNDQwKSYmKGIrPWEuZy5xKTtpZigwPmIpdGhyb3cgbmV3IEgoRC5wKTtyZXR1cm4gYn0sTWE6ZnVuY3Rpb24oYSxiLGMpe0ouU2EoYS5nLGIrYyk7YS5nLnE9TWF0aC5tYXgoYS5nLnEsYitjKX0sb2E6ZnVuY3Rpb24oYSxiLGMsZCxlLGcsaCl7aWYoMzI3NjghPT0oYS5nLm1vZGUmNjE0NDApKXRocm93IG5ldyBIKEQuaGEpO2M9YS5nLmU7aWYoaCZcbjJ8fGMuYnVmZmVyIT09YiYmYy5idWZmZXIhPT1iLmJ1ZmZlcil7aWYoMDxlfHxlK2Q8YS5nLnEpYy5zdWJhcnJheT9jPWMuc3ViYXJyYXkoZSxlK2QpOmM9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYyxlLGUrZCk7YT0hMDtkPUdhKGQpO2lmKCFkKXRocm93IG5ldyBIKEQuSWEpO2Iuc2V0KGMsZCl9ZWxzZSBhPSExLGQ9Yy5ieXRlT2Zmc2V0O3JldHVybntLYjpkLHVhOmF9fSxwYTpmdW5jdGlvbihhLGIsYyxkLGUpe2lmKDMyNzY4IT09KGEuZy5tb2RlJjYxNDQwKSl0aHJvdyBuZXcgSChELmhhKTtpZihlJjIpcmV0dXJuIDA7Si5uLndyaXRlKGEsYiwwLGQsYywhMSk7cmV0dXJuIDB9fX0sTD17bmE6ITEsUmI6ZnVuY3Rpb24oKXtMLm5hPSEhcHJvY2Vzcy5wbGF0Zm9ybS5tYXRjaCgvXndpbi8pfSxEOmZ1bmN0aW9uKGEpe2Fzc2VydChlYSk7cmV0dXJuIEwuY3JlYXRlTm9kZShudWxsLFwiL1wiLEwuV2EoYS5CYS5yb290KSwwKX0sY3JlYXRlTm9kZTpmdW5jdGlvbihhLGIsYyl7aWYoIUsoYykmJlxuMzI3NjghPT0oYyY2MTQ0MCkmJjQwOTYwIT09KGMmNjE0NDApKXRocm93IG5ldyBIKEQucCk7YT1RYihhLGIsYyk7YS5rPUwuazthLm49TC5uO3JldHVybiBhfSxXYTpmdW5jdGlvbihhKXt2YXIgYjt0cnl7Yj1mcy5sc3RhdFN5bmMoYSksTC5uYSYmKGIubW9kZT1iLm1vZGV8KGIubW9kZSYxNDYpPj4xKX1jYXRjaChjKXtpZighYy5jb2RlKXRocm93IGM7dGhyb3cgbmV3IEgoRFtjLmNvZGVdKTt9cmV0dXJuIGIubW9kZX0sRjpmdW5jdGlvbihhKXtmb3IodmFyIGI9W107YS5wYXJlbnQhPT1hOyliLnB1c2goYS5uYW1lKSxhPWEucGFyZW50O2IucHVzaChhLkQuQmEucm9vdCk7Yi5yZXZlcnNlKCk7cmV0dXJuIEhiLmFwcGx5KG51bGwsYil9LFRhOnswOlwiclwiLDE6XCJyK1wiLDI6XCJyK1wiLDY0OlwiclwiLDY1OlwicitcIiw2NjpcInIrXCIsMTI5OlwicngrXCIsMTkzOlwicngrXCIsNTE0OlwidytcIiw1Nzc6XCJ3XCIsNTc4OlwidytcIiw3MDU6XCJ3eFwiLDcwNjpcInd4K1wiLDEwMjQ6XCJhXCIsMTAyNTpcImFcIiwxMDI2OlwiYStcIixcbjEwODk6XCJhXCIsMTA5MDpcImErXCIsMTE1MzpcImF4XCIsMTE1NDpcImF4K1wiLDEyMTc6XCJheFwiLDEyMTg6XCJheCtcIiw0MDk2OlwicnNcIiw0MDk4OlwicnMrXCJ9LHViOmZ1bmN0aW9uKGEpe2EmPS0zMjc2OTtpZihhIGluIEwuVGEpcmV0dXJuIEwuVGFbYV07dGhyb3cgbmV3IEgoRC5wKTt9LGs6e0c6ZnVuY3Rpb24oYSl7YT1MLkYoYSk7dmFyIGI7dHJ5e2I9ZnMubHN0YXRTeW5jKGEpfWNhdGNoKGMpe2lmKCFjLmNvZGUpdGhyb3cgYzt0aHJvdyBuZXcgSChEW2MuY29kZV0pO31MLm5hJiYhYi5QJiYoYi5QPTQwOTYpO0wubmEmJiFiLmJsb2NrcyYmKGIuYmxvY2tzPShiLnNpemUrYi5QLTEpL2IuUHwwKTtyZXR1cm57ZGV2OmIuZGV2LGlubzpiLmlubyxtb2RlOmIubW9kZSxubGluazpiLm5saW5rLHVpZDpiLnVpZCxnaWQ6Yi5naWQscmRldjpiLnJkZXYsc2l6ZTpiLnNpemUsYXRpbWU6Yi5hdGltZSxtdGltZTpiLm10aW1lLGN0aW1lOmIuY3RpbWUsUDpiLlAsYmxvY2tzOmIuYmxvY2tzfX0sQjpmdW5jdGlvbihhLFxuYil7dmFyIGM9TC5GKGEpO3RyeXt2b2lkIDAhPT1iLm1vZGUmJihmcy5jaG1vZFN5bmMoYyxiLm1vZGUpLGEubW9kZT1iLm1vZGUpLHZvaWQgMCE9PWIuc2l6ZSYmZnMudHJ1bmNhdGVTeW5jKGMsYi5zaXplKX1jYXRjaChkKXtpZighZC5jb2RlKXRocm93IGQ7dGhyb3cgbmV3IEgoRFtkLmNvZGVdKTt9fSxsb29rdXA6ZnVuY3Rpb24oYSxiKXt2YXIgYz1FKEwuRihhKSxiKSxjPUwuV2EoYyk7cmV0dXJuIEwuY3JlYXRlTm9kZShhLGIsYyl9LGRhOmZ1bmN0aW9uKGEsYixjLGQpe2E9TC5jcmVhdGVOb2RlKGEsYixjLGQpO2I9TC5GKGEpO3RyeXtLKGEubW9kZSk/ZnMubWtkaXJTeW5jKGIsYS5tb2RlKTpmcy53cml0ZUZpbGVTeW5jKGIsXCJcIix7bW9kZTphLm1vZGV9KX1jYXRjaChlKXtpZighZS5jb2RlKXRocm93IGU7dGhyb3cgbmV3IEgoRFtlLmNvZGVdKTt9cmV0dXJuIGF9LHJlbmFtZTpmdW5jdGlvbihhLGIsYyl7YT1MLkYoYSk7Yj1FKEwuRihiKSxjKTt0cnl7ZnMucmVuYW1lU3luYyhhLFxuYil9Y2F0Y2goZCl7aWYoIWQuY29kZSl0aHJvdyBkO3Rocm93IG5ldyBIKERbZC5jb2RlXSk7fX0sdW5saW5rOmZ1bmN0aW9uKGEsYil7dmFyIGM9RShMLkYoYSksYik7dHJ5e2ZzLnVubGlua1N5bmMoYyl9Y2F0Y2goZCl7aWYoIWQuY29kZSl0aHJvdyBkO3Rocm93IG5ldyBIKERbZC5jb2RlXSk7fX0scm1kaXI6ZnVuY3Rpb24oYSxiKXt2YXIgYz1FKEwuRihhKSxiKTt0cnl7ZnMucm1kaXJTeW5jKGMpfWNhdGNoKGQpe2lmKCFkLmNvZGUpdGhyb3cgZDt0aHJvdyBuZXcgSChEW2QuY29kZV0pO319LHJlYWRkaXI6ZnVuY3Rpb24oYSl7YT1MLkYoYSk7dHJ5e3JldHVybiBmcy5yZWFkZGlyU3luYyhhKX1jYXRjaChiKXtpZighYi5jb2RlKXRocm93IGI7dGhyb3cgbmV3IEgoRFtiLmNvZGVdKTt9fSxzeW1saW5rOmZ1bmN0aW9uKGEsYixjKXthPUUoTC5GKGEpLGIpO3RyeXtmcy5zeW1saW5rU3luYyhjLGEpfWNhdGNoKGQpe2lmKCFkLmNvZGUpdGhyb3cgZDt0aHJvdyBuZXcgSChEW2QuY29kZV0pO1xufX0scmVhZGxpbms6ZnVuY3Rpb24oYSl7dmFyIGI9TC5GKGEpO3RyeXtyZXR1cm4gYj1mcy5yZWFkbGlua1N5bmMoYiksYj1UYi5yZWxhdGl2ZShUYi5yZXNvbHZlKGEuRC5CYS5yb290KSxiKX1jYXRjaChjKXtpZighYy5jb2RlKXRocm93IGM7dGhyb3cgbmV3IEgoRFtjLmNvZGVdKTt9fX0sbjp7b3BlbjpmdW5jdGlvbihhKXt2YXIgYj1MLkYoYS5nKTt0cnl7MzI3Njg9PT0oYS5nLm1vZGUmNjE0NDApJiYoYS5lYT1mcy5vcGVuU3luYyhiLEwudWIoYS5mbGFncykpKX1jYXRjaChjKXtpZighYy5jb2RlKXRocm93IGM7dGhyb3cgbmV3IEgoRFtjLmNvZGVdKTt9fSxjbG9zZTpmdW5jdGlvbihhKXt0cnl7MzI3Njg9PT0oYS5nLm1vZGUmNjE0NDApJiZhLmVhJiZmcy5jbG9zZVN5bmMoYS5lYSl9Y2F0Y2goYil7aWYoIWIuY29kZSl0aHJvdyBiO3Rocm93IG5ldyBIKERbYi5jb2RlXSk7fX0scmVhZDpmdW5jdGlvbihhLGIsYyxkLGUpe2lmKDA9PT1kKXJldHVybiAwO3ZhciBnPW5ldyBCdWZmZXIoZCksXG5oO3RyeXtoPWZzLnJlYWRTeW5jKGEuZWEsZywwLGQsZSl9Y2F0Y2gobSl7dGhyb3cgbmV3IEgoRFttLmNvZGVdKTt9aWYoMDxoKWZvcihhPTA7YTxoO2ErKyliW2MrYV09Z1thXTtyZXR1cm4gaH0sd3JpdGU6ZnVuY3Rpb24oYSxiLGMsZCxlKXtiPW5ldyBCdWZmZXIoYi5zdWJhcnJheShjLGMrZCkpO3ZhciBnO3RyeXtnPWZzLndyaXRlU3luYyhhLmVhLGIsMCxkLGUpfWNhdGNoKGgpe3Rocm93IG5ldyBIKERbaC5jb2RlXSk7fXJldHVybiBnfSxOOmZ1bmN0aW9uKGEsYixjKXtpZigxPT09YyliKz1hLnBvc2l0aW9uO2Vsc2UgaWYoMj09PWMmJjMyNzY4PT09KGEuZy5tb2RlJjYxNDQwKSl0cnl7Yis9ZnMuZnN0YXRTeW5jKGEuZWEpLnNpemV9Y2F0Y2goZCl7dGhyb3cgbmV3IEgoRFtkLmNvZGVdKTt9aWYoMD5iKXRocm93IG5ldyBIKEQucCk7cmV0dXJuIGJ9fX07eigxLFwiaTMyKlwiLDIpO3ooMSxcImkzMipcIiwyKTt6KDEsXCJpMzIqXCIsMik7XG52YXIgVWI9bnVsbCxWYj1bbnVsbF0sTT1bXSxXYj0xLFhiPW51bGwsWWI9ITAsTj17fSxIPW51bGwsUmI9e307XG5mdW5jdGlvbiBPKGEsYil7YT1JYihcIi9cIixhKTtiPWJ8fHt9O2lmKCFhKXJldHVybntwYXRoOlwiXCIsZzpudWxsfTt2YXIgYz17VWE6ITAsRGE6MH0sZDtmb3IoZCBpbiBjKXZvaWQgMD09PWJbZF0mJihiW2RdPWNbZF0pO2lmKDg8Yi5EYSl0aHJvdyBuZXcgSChELnNhKTt2YXIgYz1EYihhLnNwbGl0KFwiL1wiKS5maWx0ZXIoZnVuY3Rpb24oYSl7cmV0dXJuISFhfSksITEpLGU9VWI7ZD1cIi9cIjtmb3IodmFyIGc9MDtnPGMubGVuZ3RoO2crKyl7dmFyIGg9Zz09PWMubGVuZ3RoLTE7aWYoaCYmYi5wYXJlbnQpYnJlYWs7ZT1TYihlLGNbZ10pO2Q9RShkLGNbZ10pO2UuVSYmKCFofHxoJiZiLlVhKSYmKGU9ZS5VLnJvb3QpO2lmKCFofHxiLlEpZm9yKGg9MDs0MDk2MD09PShlLm1vZGUmNjE0NDApOylpZihlPVpiKGQpLGQ9SWIoRmIoZCksZSksZT1PKGQse0RhOmIuRGF9KS5nLDQwPGgrKyl0aHJvdyBuZXcgSChELnNhKTt9cmV0dXJue3BhdGg6ZCxnOmV9fVxuZnVuY3Rpb24gUChhKXtmb3IodmFyIGI7Oyl7aWYoYT09PWEucGFyZW50KXJldHVybiBhPWEuRC4kYSxiP1wiL1wiIT09YVthLmxlbmd0aC0xXT9hK1wiL1wiK2I6YStiOmE7Yj1iP2EubmFtZStcIi9cIitiOmEubmFtZTthPWEucGFyZW50fX1mdW5jdGlvbiAkYihhLGIpe2Zvcih2YXIgYz0wLGQ9MDtkPGIubGVuZ3RoO2QrKyljPShjPDw1KS1jK2IuY2hhckNvZGVBdChkKXwwO3JldHVybihhK2M+Pj4wKSVYYi5sZW5ndGh9ZnVuY3Rpb24gYWMoYSl7dmFyIGI9JGIoYS5wYXJlbnQuaWQsYS5uYW1lKTthLlY9WGJbYl07WGJbYl09YX1mdW5jdGlvbiBiYyhhKXt2YXIgYj0kYihhLnBhcmVudC5pZCxhLm5hbWUpO2lmKFhiW2JdPT09YSlYYltiXT1hLlY7ZWxzZSBmb3IoYj1YYltiXTtiOyl7aWYoYi5WPT09YSl7Yi5WPWEuVjticmVha31iPWIuVn19XG5mdW5jdGlvbiBTYihhLGIpe3ZhciBjO2lmKGM9KGM9Y2MoYSxcInhcIikpP2M6YS5rLmxvb2t1cD8wOkQuWSl0aHJvdyBuZXcgSChjLGEpO2ZvcihjPVhiWyRiKGEuaWQsYildO2M7Yz1jLlYpe3ZhciBkPWMubmFtZTtpZihjLnBhcmVudC5pZD09PWEuaWQmJmQ9PT1iKXJldHVybiBjfXJldHVybiBhLmsubG9va3VwKGEsYil9XG5mdW5jdGlvbiBRYihhLGIsYyxkKXtkY3x8KGRjPWZ1bmN0aW9uKGEsYixjLGQpe2F8fChhPXRoaXMpO3RoaXMucGFyZW50PWE7dGhpcy5EPWEuRDt0aGlzLlU9bnVsbDt0aGlzLmlkPVdiKys7dGhpcy5uYW1lPWI7dGhpcy5tb2RlPWM7dGhpcy5rPXt9O3RoaXMubj17fTt0aGlzLnJkZXY9ZH0sZGMucHJvdG90eXBlPXt9LE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGRjLnByb3RvdHlwZSx7cmVhZDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDM2NT09PSh0aGlzLm1vZGUmMzY1KX0sc2V0OmZ1bmN0aW9uKGEpe2E/dGhpcy5tb2RlfD0zNjU6dGhpcy5tb2RlJj0tMzY2fX0sd3JpdGU6e2dldDpmdW5jdGlvbigpe3JldHVybiAxNDY9PT0odGhpcy5tb2RlJjE0Nil9LHNldDpmdW5jdGlvbihhKXthP3RoaXMubW9kZXw9MTQ2OnRoaXMubW9kZSY9LTE0N319LEZiOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gSyh0aGlzLm1vZGUpfX0sRWI6e2dldDpmdW5jdGlvbigpe3JldHVybiA4MTkyPT09KHRoaXMubW9kZSZcbjYxNDQwKX19fSkpO2E9bmV3IGRjKGEsYixjLGQpO2FjKGEpO3JldHVybiBhfWZ1bmN0aW9uIEsoYSl7cmV0dXJuIDE2Mzg0PT09KGEmNjE0NDApfXZhciBlYz17cjowLHJzOjEwNTI2NzIsXCJyK1wiOjIsdzo1Nzcsd3g6NzA1LHh3OjcwNSxcIncrXCI6NTc4LFwid3grXCI6NzA2LFwieHcrXCI6NzA2LGE6MTA4OSxheDoxMjE3LHhhOjEyMTcsXCJhK1wiOjEwOTAsXCJheCtcIjoxMjE4LFwieGErXCI6MTIxOH07ZnVuY3Rpb24gY2MoYSxiKXtpZihZYilyZXR1cm4gMDtpZigtMT09PWIuaW5kZXhPZihcInJcIil8fGEubW9kZSYyOTIpe2lmKC0xIT09Yi5pbmRleE9mKFwid1wiKSYmIShhLm1vZGUmMTQ2KXx8LTEhPT1iLmluZGV4T2YoXCJ4XCIpJiYhKGEubW9kZSY3MykpcmV0dXJuIEQuWX1lbHNlIHJldHVybiBELlk7cmV0dXJuIDB9ZnVuY3Rpb24gZmMoYSxiKXt0cnl7cmV0dXJuIFNiKGEsYiksRC5IYX1jYXRjaChjKXt9cmV0dXJuIGNjKGEsXCJ3eFwiKX1cbmZ1bmN0aW9uIGdjKGEsYixjKXt2YXIgZDt0cnl7ZD1TYihhLGIpfWNhdGNoKGUpe3JldHVybiBlLm99aWYoYT1jYyhhLFwid3hcIikpcmV0dXJuIGE7aWYoYyl7aWYoIUsoZC5tb2RlKSlyZXR1cm4gRC5pYTtpZihkPT09ZC5wYXJlbnR8fFwiL1wiPT09UChkKSlyZXR1cm4gRC5afWVsc2UgaWYoSyhkLm1vZGUpKXJldHVybiBELlM7cmV0dXJuIDB9ZnVuY3Rpb24gaGMoYSl7dmFyIGI7Yj00MDk2O2ZvcihhPWF8fDA7YTw9YjthKyspaWYoIU1bYV0pcmV0dXJuIGE7dGhyb3cgbmV3IEgoRC5lYik7fVxuZnVuY3Rpb24gaWMoYSxiKXtqY3x8KGpjPWZ1bmN0aW9uKCl7fSxqYy5wcm90b3R5cGU9e30sT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoamMucHJvdG90eXBlLHtvYmplY3Q6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmd9LHNldDpmdW5jdGlvbihhKXt0aGlzLmc9YX19LEZlOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gMSE9PSh0aGlzLmZsYWdzJjIwOTcxNTUpfX0sR2U6e2dldDpmdW5jdGlvbigpe3JldHVybiAwIT09KHRoaXMuZmxhZ3MmMjA5NzE1NSl9fSxFZTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZmxhZ3MmMTAyNH19fSkpO3ZhciBjPW5ldyBqYyxkO2ZvcihkIGluIGEpY1tkXT1hW2RdO2E9YztjPWhjKGIpO2EuZmQ9YztyZXR1cm4gTVtjXT1hfXZhciBQYj17b3BlbjpmdW5jdGlvbihhKXthLm49VmJbYS5nLnJkZXZdLm47YS5uLm9wZW4mJmEubi5vcGVuKGEpfSxOOmZ1bmN0aW9uKCl7dGhyb3cgbmV3IEgoRC5qYSk7fX07XG5mdW5jdGlvbiBMYihhLGIpe1ZiW2FdPXtuOmJ9fWZ1bmN0aW9uIGtjKGEsYil7dmFyIGM9XCIvXCI9PT1iLGQ9IWIsZTtpZihjJiZVYil0aHJvdyBuZXcgSChELlopO2lmKCFjJiYhZCl7ZT1PKGIse1VhOiExfSk7Yj1lLnBhdGg7ZT1lLmc7aWYoZS5VKXRocm93IG5ldyBIKEQuWik7aWYoIUsoZS5tb2RlKSl0aHJvdyBuZXcgSChELmlhKTt9dmFyIGQ9e3R5cGU6YSxCYTp7fSwkYTpiLEpiOltdfSxnPWEuRChkKTtnLkQ9ZDtkLnJvb3Q9ZztjP1ViPWc6ZSYmKGUuVT1kLGUuRCYmZS5ELkpiLnB1c2goZCkpfWZ1bmN0aW9uIG1jKGEsYixjKXt2YXIgZD1PKGEse3BhcmVudDohMH0pLmc7YT1HYihhKTtpZighYXx8XCIuXCI9PT1hfHxcIi4uXCI9PT1hKXRocm93IG5ldyBIKEQucCk7dmFyIGU9ZmMoZCxhKTtpZihlKXRocm93IG5ldyBIKGUpO2lmKCFkLmsuZGEpdGhyb3cgbmV3IEgoRC5IKTtyZXR1cm4gZC5rLmRhKGQsYSxiLGMpfVxuZnVuY3Rpb24gbmMoYSxiKXtiPSh2b2lkIDAhPT1iP2I6NDM4KSY0MDk1O2J8PTMyNzY4O3JldHVybiBtYyhhLGIsMCl9ZnVuY3Rpb24gUShhLGIpe2I9KHZvaWQgMCE9PWI/Yjo1MTEpJjEwMjM7Ynw9MTYzODQ7cmV0dXJuIG1jKGEsYiwwKX1mdW5jdGlvbiBvYyhhLGIsYyl7XCJ1bmRlZmluZWRcIj09PXR5cGVvZiBjJiYoYz1iLGI9NDM4KTtyZXR1cm4gbWMoYSxifDgxOTIsYyl9ZnVuY3Rpb24gcGMoYSxiKXtpZighSWIoYSkpdGhyb3cgbmV3IEgoRC5KKTt2YXIgYz1PKGIse3BhcmVudDohMH0pLmc7aWYoIWMpdGhyb3cgbmV3IEgoRC5KKTt2YXIgZD1HYihiKSxlPWZjKGMsZCk7aWYoZSl0aHJvdyBuZXcgSChlKTtpZighYy5rLnN5bWxpbmspdGhyb3cgbmV3IEgoRC5IKTtyZXR1cm4gYy5rLnN5bWxpbmsoYyxkLGEpfVxuZnVuY3Rpb24gcWMoYSl7dmFyIGI9TyhhLHtwYXJlbnQ6ITB9KS5nLGM9R2IoYSksZD1TYihiLGMpLGU9Z2MoYixjLCExKTtpZihlKXRocm93IGU9PT1ELlMmJihlPUQuSCksbmV3IEgoZSk7aWYoIWIuay51bmxpbmspdGhyb3cgbmV3IEgoRC5IKTtpZihkLlUpdGhyb3cgbmV3IEgoRC5aKTt0cnl7Ti53aWxsRGVsZXRlUGF0aCYmTi53aWxsRGVsZXRlUGF0aChhKX1jYXRjaChnKXtjb25zb2xlLmxvZyhcIkZTLnRyYWNraW5nRGVsZWdhdGVbJ3dpbGxEZWxldGVQYXRoJ10oJ1wiK2ErXCInKSB0aHJldyBhbiBleGNlcHRpb246IFwiK2cubWVzc2FnZSl9Yi5rLnVubGluayhiLGMpO2JjKGQpO3RyeXtpZihOLm9uRGVsZXRlUGF0aClOLm9uRGVsZXRlUGF0aChhKX1jYXRjaChoKXtjb25zb2xlLmxvZyhcIkZTLnRyYWNraW5nRGVsZWdhdGVbJ29uRGVsZXRlUGF0aCddKCdcIithK1wiJykgdGhyZXcgYW4gZXhjZXB0aW9uOiBcIitoLm1lc3NhZ2UpfX1cbmZ1bmN0aW9uIFpiKGEpe2E9TyhhKS5nO2lmKCFhKXRocm93IG5ldyBIKEQuSik7aWYoIWEuay5yZWFkbGluayl0aHJvdyBuZXcgSChELnApO3JldHVybiBJYihQKGEucGFyZW50KSxhLmsucmVhZGxpbmsoYSkpfWZ1bmN0aW9uIHJjKGEsYil7dmFyIGM9TyhhLHtROiFifSkuZztpZighYyl0aHJvdyBuZXcgSChELkopO2lmKCFjLmsuRyl0aHJvdyBuZXcgSChELkgpO3JldHVybiBjLmsuRyhjKX1mdW5jdGlvbiBzYyhhKXtyZXR1cm4gcmMoYSwhMCl9ZnVuY3Rpb24gdGMoYSxiKXt2YXIgYztcInN0cmluZ1wiPT09dHlwZW9mIGE/Yz1PKGEse1E6ITB9KS5nOmM9YTtpZighYy5rLkIpdGhyb3cgbmV3IEgoRC5IKTtjLmsuQihjLHttb2RlOmImNDA5NXxjLm1vZGUmLTQwOTYsdGltZXN0YW1wOkRhdGUubm93KCl9KX1cbmZ1bmN0aW9uIHVjKGEpe3ZhciBiO1wic3RyaW5nXCI9PT10eXBlb2YgYT9iPU8oYSx7UTohMH0pLmc6Yj1hO2lmKCFiLmsuQil0aHJvdyBuZXcgSChELkgpO2Iuay5CKGIse3RpbWVzdGFtcDpEYXRlLm5vdygpfSl9ZnVuY3Rpb24gdmMoYSxiKXtpZigwPmIpdGhyb3cgbmV3IEgoRC5wKTt2YXIgYztcInN0cmluZ1wiPT09dHlwZW9mIGE/Yz1PKGEse1E6ITB9KS5nOmM9YTtpZighYy5rLkIpdGhyb3cgbmV3IEgoRC5IKTtpZihLKGMubW9kZSkpdGhyb3cgbmV3IEgoRC5TKTtpZigzMjc2OCE9PShjLm1vZGUmNjE0NDApKXRocm93IG5ldyBIKEQucCk7dmFyIGQ9Y2MoYyxcIndcIik7aWYoZCl0aHJvdyBuZXcgSChkKTtjLmsuQihjLHtzaXplOmIsdGltZXN0YW1wOkRhdGUubm93KCl9KX1cbmZ1bmN0aW9uIHdjKGEsYixjLGQpe2lmKFwiXCI9PT1hKXRocm93IG5ldyBIKEQuSik7aWYoXCJzdHJpbmdcIj09PXR5cGVvZiBiKXt2YXIgZT1lY1tiXTtpZihcInVuZGVmaW5lZFwiPT09dHlwZW9mIGUpdGhyb3cgRXJyb3IoXCJVbmtub3duIGZpbGUgb3BlbiBtb2RlOiBcIitiKTtiPWV9Yz1iJjY0PyhcInVuZGVmaW5lZFwiPT09dHlwZW9mIGM/NDM4OmMpJjQwOTV8MzI3Njg6MDt2YXIgZztpZihcIm9iamVjdFwiPT09dHlwZW9mIGEpZz1hO2Vsc2V7YT1FYihhKTt0cnl7Zz1PKGEse1E6IShiJjEzMTA3Mil9KS5nfWNhdGNoKGgpe319ZT0hMTtpZihiJjY0KWlmKGcpe2lmKGImMTI4KXRocm93IG5ldyBIKEQuSGEpO31lbHNlIGc9bWMoYSxjLDApLGU9ITA7aWYoIWcpdGhyb3cgbmV3IEgoRC5KKTs4MTkyPT09KGcubW9kZSY2MTQ0MCkmJihiJj0tNTEzKTtpZihiJjY1NTM2JiYhSyhnLm1vZGUpKXRocm93IG5ldyBIKEQuaWEpO2lmKCFlJiYoZz80MDk2MD09PShnLm1vZGUmNjE0NDApP2M9RC5zYTpLKGcubW9kZSkmJlxuKDAhPT0oYiYyMDk3MTU1KXx8YiY1MTIpP2M9RC5TOihjPVtcInJcIixcIndcIixcInJ3XCJdW2ImM10sYiY1MTImJihjKz1cIndcIiksYz1jYyhnLGMpKTpjPUQuSixjKSl0aHJvdyBuZXcgSChjKTtiJjUxMiYmdmMoZywwKTtiJj0tNjQxO2Q9aWMoe2c6ZyxwYXRoOlAoZyksZmxhZ3M6YixzZWVrYWJsZTohMCxwb3NpdGlvbjowLG46Zy5uLFNiOltdLGVycm9yOiExfSxkKTtkLm4ub3BlbiYmZC5uLm9wZW4oZCk7IWYubG9nUmVhZEZpbGVzfHxiJjF8fCh4Y3x8KHhjPXt9KSxhIGluIHhjfHwoeGNbYV09MSxmLnByaW50RXJyKFwicmVhZCBmaWxlOiBcIithKSkpO3RyeXtOLm9uT3BlbkZpbGUmJihnPTAsMSE9PShiJjIwOTcxNTUpJiYoZ3w9MSksMCE9PShiJjIwOTcxNTUpJiYoZ3w9MiksTi5vbk9wZW5GaWxlKGEsZykpfWNhdGNoKG0pe2NvbnNvbGUubG9nKFwiRlMudHJhY2tpbmdEZWxlZ2F0ZVsnb25PcGVuRmlsZSddKCdcIithK1wiJywgZmxhZ3MpIHRocmV3IGFuIGV4Y2VwdGlvbjogXCIrbS5tZXNzYWdlKX1yZXR1cm4gZH1cbmZ1bmN0aW9uIHljKGEpe2EuemEmJihhLnphPW51bGwpO3RyeXthLm4uY2xvc2UmJmEubi5jbG9zZShhKX1jYXRjaChiKXt0aHJvdyBiO31maW5hbGx5e01bYS5mZF09bnVsbH19ZnVuY3Rpb24gemMoYSxiLGMpe2lmKCFhLnNlZWthYmxlfHwhYS5uLk4pdGhyb3cgbmV3IEgoRC5qYSk7YS5wb3NpdGlvbj1hLm4uTihhLGIsYyk7YS5TYj1bXX1mdW5jdGlvbiBBYyhhLGIsYyxkLGUpe2lmKDA+ZHx8MD5lKXRocm93IG5ldyBIKEQucCk7aWYoMT09PShhLmZsYWdzJjIwOTcxNTUpKXRocm93IG5ldyBIKEQuTCk7aWYoSyhhLmcubW9kZSkpdGhyb3cgbmV3IEgoRC5TKTtpZighYS5uLnJlYWQpdGhyb3cgbmV3IEgoRC5wKTt2YXIgZz0hMDtpZihcInVuZGVmaW5lZFwiPT09dHlwZW9mIGUpZT1hLnBvc2l0aW9uLGc9ITE7ZWxzZSBpZighYS5zZWVrYWJsZSl0aHJvdyBuZXcgSChELmphKTtiPWEubi5yZWFkKGEsYixjLGQsZSk7Z3x8KGEucG9zaXRpb24rPWIpO3JldHVybiBifVxuZnVuY3Rpb24gQmMoYSxiLGMsZCxlLGcpe2lmKDA+ZHx8MD5lKXRocm93IG5ldyBIKEQucCk7aWYoMD09PShhLmZsYWdzJjIwOTcxNTUpKXRocm93IG5ldyBIKEQuTCk7aWYoSyhhLmcubW9kZSkpdGhyb3cgbmV3IEgoRC5TKTtpZighYS5uLndyaXRlKXRocm93IG5ldyBIKEQucCk7YS5mbGFncyYxMDI0JiZ6YyhhLDAsMik7dmFyIGg9ITA7aWYoXCJ1bmRlZmluZWRcIj09PXR5cGVvZiBlKWU9YS5wb3NpdGlvbixoPSExO2Vsc2UgaWYoIWEuc2Vla2FibGUpdGhyb3cgbmV3IEgoRC5qYSk7Yj1hLm4ud3JpdGUoYSxiLGMsZCxlLGcpO2h8fChhLnBvc2l0aW9uKz1iKTt0cnl7aWYoYS5wYXRoJiZOLm9uV3JpdGVUb0ZpbGUpTi5vbldyaXRlVG9GaWxlKGEucGF0aCl9Y2F0Y2gobSl7Y29uc29sZS5sb2coXCJGUy50cmFja2luZ0RlbGVnYXRlWydvbldyaXRlVG9GaWxlJ10oJ1wiK3BhdGgrXCInKSB0aHJldyBhbiBleGNlcHRpb246IFwiK20ubWVzc2FnZSl9cmV0dXJuIGJ9XG5mdW5jdGlvbiBDYygpe0h8fChIPWZ1bmN0aW9uKGEsYil7dGhpcy5nPWI7dGhpcy5QYj1mdW5jdGlvbihhKXt0aGlzLm89YTtmb3IodmFyIGIgaW4gRClpZihEW2JdPT09YSl7dGhpcy5jb2RlPWI7YnJlYWt9fTt0aGlzLlBiKGEpO3RoaXMubWVzc2FnZT1CYlthXX0sSC5wcm90b3R5cGU9RXJyb3IoKSxILnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1ILFtELkpdLmZvckVhY2goZnVuY3Rpb24oYSl7UmJbYV09bmV3IEgoYSk7UmJbYV0uc3RhY2s9XCI8Z2VuZXJpYyBlcnJvciwgbm8gc3RhY2s+XCJ9KSl9dmFyIERjO2Z1bmN0aW9uIEVjKGEsYil7dmFyIGM9MDthJiYoY3w9MzY1KTtiJiYoY3w9MTQ2KTtyZXR1cm4gY31mdW5jdGlvbiBGYyhhLGIsYyxkKXthPUUoXCJzdHJpbmdcIj09PXR5cGVvZiBhP2E6UChhKSxiKTtyZXR1cm4gbmMoYSxFYyhjLGQpKX1cbmZ1bmN0aW9uIEdjKGEsYixjLGQsZSxnKXthPWI/RShcInN0cmluZ1wiPT09dHlwZW9mIGE/YTpQKGEpLGIpOmE7ZD1FYyhkLGUpO2U9bmMoYSxkKTtpZihjKXtpZihcInN0cmluZ1wiPT09dHlwZW9mIGMpe2E9QXJyYXkoYy5sZW5ndGgpO2I9MDtmb3IodmFyIGg9Yy5sZW5ndGg7YjxoOysrYilhW2JdPWMuY2hhckNvZGVBdChiKTtjPWF9dGMoZSxkfDE0Nik7YT13YyhlLFwid1wiKTtCYyhhLGMsMCxjLmxlbmd0aCwwLGcpO3ljKGEpO3RjKGUsZCl9cmV0dXJuIGV9XG5mdW5jdGlvbiBIYyhhLGIsYyxkKXthPUUoXCJzdHJpbmdcIj09PXR5cGVvZiBhP2E6UChhKSxiKTtiPUVjKCEhYywhIWQpO0hjLlphfHwoSGMuWmE9NjQpO3ZhciBlPUhjLlphKys8PDh8MDtMYihlLHtvcGVuOmZ1bmN0aW9uKGEpe2Euc2Vla2FibGU9ITF9LGNsb3NlOmZ1bmN0aW9uKCl7ZCYmZC5idWZmZXImJmQuYnVmZmVyLmxlbmd0aCYmZCgxMCl9LHJlYWQ6ZnVuY3Rpb24oYSxiLGQsZSl7Zm9yKHZhciByPTAseD0wO3g8ZTt4Kyspe3ZhciB2O3RyeXt2PWMoKX1jYXRjaChHKXt0aHJvdyBuZXcgSChELk8pO31pZih2b2lkIDA9PT12JiYwPT09cil0aHJvdyBuZXcgSChELkdhKTtpZihudWxsPT09dnx8dm9pZCAwPT09dilicmVhaztyKys7YltkK3hdPXZ9ciYmKGEuZy50aW1lc3RhbXA9RGF0ZS5ub3coKSk7cmV0dXJuIHJ9LHdyaXRlOmZ1bmN0aW9uKGEsYixjLGUpe2Zvcih2YXIgcj0wO3I8ZTtyKyspdHJ5e2QoYltjK3JdKX1jYXRjaCh4KXt0aHJvdyBuZXcgSChELk8pO31lJiYoYS5nLnRpbWVzdGFtcD1cbkRhdGUubm93KCkpO3JldHVybiByfX0pO3JldHVybiBvYyhhLGIsZSl9XG5mdW5jdGlvbiBJYyhhKXtpZihhLkVifHxhLkZifHxhLmxpbmt8fGEuZSlyZXR1cm4hMDt2YXIgYj0hMDtpZihcInVuZGVmaW5lZFwiIT09dHlwZW9mIFhNTEh0dHBSZXF1ZXN0KXRocm93IEVycm9yKFwiTGF6eSBsb2FkaW5nIHNob3VsZCBoYXZlIGJlZW4gcGVyZm9ybWVkIChjb250ZW50cyBzZXQpIGluIGNyZWF0ZUxhenlGaWxlLCBidXQgaXQgd2FzIG5vdC4gTGF6eSBsb2FkaW5nIG9ubHkgd29ya3MgaW4gd2ViIHdvcmtlcnMuIFVzZSAtLWVtYmVkLWZpbGUgb3IgLS1wcmVsb2FkLWZpbGUgaW4gZW1jYyBvbiB0aGUgbWFpbiB0aHJlYWQuXCIpO2lmKGYucmVhZCl0cnl7YS5lPUIoZi5yZWFkKGEudXJsKSwhMCksYS5xPWEuZS5sZW5ndGh9Y2F0Y2goYyl7Yj0hMX1lbHNlIHRocm93IEVycm9yKFwiQ2Fubm90IGxvYWQgd2l0aG91dCByZWFkKCkgb3IgWE1MSHR0cFJlcXVlc3QuXCIpO2J8fENiKEQuTyk7cmV0dXJuIGJ9dmFyIFI9e30sZGMsamMseGMsSmM9e307XG5mdW5jdGlvbiBLYyhhLGIsYyl7dHJ5e3ZhciBkPWEoYil9Y2F0Y2goZSl7aWYoZSYmZS5nJiZFYihiKSE9PUViKFAoZS5nKSkpcmV0dXJuLUQuaWE7dGhyb3cgZTt9d1tjPj4yXT1kLmRldjt3W2MrND4+Ml09MDt3W2MrOD4+Ml09ZC5pbm87d1tjKzEyPj4yXT1kLm1vZGU7d1tjKzE2Pj4yXT1kLm5saW5rO3dbYysyMD4+Ml09ZC51aWQ7d1tjKzI0Pj4yXT1kLmdpZDt3W2MrMjg+PjJdPWQucmRldjt3W2MrMzI+PjJdPTA7d1tjKzM2Pj4yXT1kLnNpemU7d1tjKzQwPj4yXT00MDk2O3dbYys0ND4+Ml09ZC5ibG9ja3M7d1tjKzQ4Pj4yXT1kLmF0aW1lLmdldFRpbWUoKS8xRTN8MDt3W2MrNTI+PjJdPTA7d1tjKzU2Pj4yXT1kLm10aW1lLmdldFRpbWUoKS8xRTN8MDt3W2MrNjA+PjJdPTA7d1tjKzY0Pj4yXT1kLmN0aW1lLmdldFRpbWUoKS8xRTN8MDt3W2MrNjg+PjJdPTA7d1tjKzcyPj4yXT1kLmlubztyZXR1cm4gMH12YXIgUz0wO1xuZnVuY3Rpb24gVCgpe1MrPTQ7cmV0dXJuIHdbUy00Pj4yXX1mdW5jdGlvbiBVKCl7cmV0dXJuIHEoVCgpKX1mdW5jdGlvbiBMYygpe3ZhciBhO2E9VCgpO2E9TVthXTtpZighYSl0aHJvdyBuZXcgSChELkwpO3JldHVybiBhfXZhciB4YT12b2lkIDA7ZnVuY3Rpb24gTWMoYSl7YT1hLzFFMztpZigoY2F8fGRhKSYmc2VsZi5wZXJmb3JtYW5jZSYmc2VsZi5wZXJmb3JtYW5jZS5ub3cpZm9yKHZhciBiPXNlbGYucGVyZm9ybWFuY2Uubm93KCk7c2VsZi5wZXJmb3JtYW5jZS5ub3coKS1iPGE7KTtlbHNlIGZvcihiPURhdGUubm93KCk7RGF0ZS5ub3coKS1iPGE7KTtyZXR1cm4gMH1mLl91c2xlZXA9TWM7dmFyIE5jPXooNDQsXCJpOFwiLDIpO3ooQihcIkdNVFwiKSxcImk4XCIsMik7dmFyIE9jPXooOCxcImkzMipcIiwyKSxQYz16KDEsXCJpMzIqXCIsMiksUWM9eigxLFwiaTMyKlwiLDIpO1xuZnVuY3Rpb24gUmMoKXtmdW5jdGlvbiBhKGEpe3JldHVybihhPWEudG9UaW1lU3RyaW5nKCkubWF0Y2goL1xcKChbQS1aYS16IF0rKVxcKSQvKSk/YVsxXTpcIkdNVFwifWlmKCFSYy5DKXtSYy5DPSEwO3dbUWM+PjJdPTYwKi0obmV3IERhdGUpLmdldFRpbWV6b25lT2Zmc2V0KCk7dmFyIGI9bmV3IERhdGUoMkUzLDAsMSksYz1uZXcgRGF0ZSgyRTMsNiwxKTt3W1BjPj4yXT1OdW1iZXIoYi5nZXRUaW1lem9uZU9mZnNldCgpIT1jLmdldFRpbWV6b25lT2Zmc2V0KCkpO3ZhciBkPWEoYiksZT1hKGMpLGQ9eihCKGQpLFwiaThcIiwwKSxlPXooQihlKSxcImk4XCIsMCk7Yy5nZXRUaW1lem9uZU9mZnNldCgpPGIuZ2V0VGltZXpvbmVPZmZzZXQoKT8od1tPYz4+Ml09ZCx3W09jKzQ+PjJdPWUpOih3W09jPj4yXT1lLHdbT2MrND4+Ml09ZCl9fVxuZnVuY3Rpb24gU2MoYSxiKXtSYygpO3ZhciBjPW5ldyBEYXRlKDFFMyp3W2E+PjJdKTt3W2I+PjJdPWMuZ2V0U2Vjb25kcygpO3dbYis0Pj4yXT1jLmdldE1pbnV0ZXMoKTt3W2IrOD4+Ml09Yy5nZXRIb3VycygpO3dbYisxMj4+Ml09Yy5nZXREYXRlKCk7d1tiKzE2Pj4yXT1jLmdldE1vbnRoKCk7d1tiKzIwPj4yXT1jLmdldEZ1bGxZZWFyKCktMTkwMDt3W2IrMjQ+PjJdPWMuZ2V0RGF5KCk7dmFyIGQ9bmV3IERhdGUoYy5nZXRGdWxsWWVhcigpLDAsMSk7d1tiKzI4Pj4yXT0oYy5nZXRUaW1lKCktZC5nZXRUaW1lKCkpLzg2NEU1fDA7d1tiKzM2Pj4yXT0tKDYwKmMuZ2V0VGltZXpvbmVPZmZzZXQoKSk7Yz1jLmdldFRpbWV6b25lT2Zmc2V0KCk9PU1hdGgubWluKGQuZ2V0VGltZXpvbmVPZmZzZXQoKSwobmV3IERhdGUoMkUzLDYsMSkpLmdldFRpbWV6b25lT2Zmc2V0KCkpfDA7d1tiKzMyPj4yXT1jO3dbYis0MD4+Ml09d1tPYysoYz9sLk06MCk+PjJdO3JldHVybiBifVxuZi5fYml0c2hpZnQ2NExzaHI9VGM7ZnVuY3Rpb24gVWMoYSxiKXtlYi5wdXNoKGZ1bmN0aW9uKCl7bC5UKFwidmlcIixhLFtiXSl9KTtVYy5sZXZlbD1lYi5sZW5ndGh9dmFyIFZjPXooMSxcImkzMipcIiwyKTtcbmZ1bmN0aW9uIFdjKGEpe3ZhciBiLGM7V2MuQz8oYz13W1ZjPj4yXSxiPXdbYz4+Ml0pOihXYy5DPSEwLFYuVVNFUj1WLkxPR05BTUU9XCJ3ZWJfdXNlclwiLFYuUEFUSD1cIi9cIixWLlBXRD1cIi9cIixWLkhPTUU9XCIvaG9tZS93ZWJfdXNlclwiLFYuTEFORz1cIkNcIixWLl89Zi50aGlzUHJvZ3JhbSxiPXooMTAyNCxcImk4XCIsMiksYz16KDI1NixcImk4KlwiLDIpLHdbYz4+Ml09Yix3W1ZjPj4yXT1jKTt2YXIgZD1bXSxlPTAsZztmb3IoZyBpbiBhKWlmKFwic3RyaW5nXCI9PT10eXBlb2YgYVtnXSl7dmFyIGg9ZytcIj1cIithW2ddO2QucHVzaChoKTtlKz1oLmxlbmd0aH1pZigxMDI0PGUpdGhyb3cgRXJyb3IoXCJFbnZpcm9ubWVudCBzaXplIGV4Y2VlZGVkIFRPVEFMX0VOVl9TSVpFIVwiKTtmb3IoYT0wO2E8ZC5sZW5ndGg7YSsrKWg9ZFthXSxLYShoLGIpLHdbYys0KmE+PjJdPWIsYis9aC5sZW5ndGgrMTt3W2MrNCpkLmxlbmd0aD4+Ml09MH12YXIgVj17fTtcbmZ1bmN0aW9uIFhjKGEpe2lmKDA9PT1hKXJldHVybiAwO2E9cShhKTtpZighVi5oYXNPd25Qcm9wZXJ0eShhKSlyZXR1cm4gMDtYYy5DJiZQYShYYy5DKTtYYy5DPXooQihWW2FdKSxcImk4XCIsMCk7cmV0dXJuIFhjLkN9Zi5fbWVtY3B5PVljO2Z1bmN0aW9uIElhKGEpe0lhLlZhfHwobj1TYSgpLElhLlZhPSEwLGFzc2VydChsLmJhKSxJYS5HYj1sLmJhLGwuYmE9ZnVuY3Rpb24oKXtwKFwiY2Fubm90IGR5bmFtaWNhbGx5IGFsbG9jYXRlLCBzYnJrIG5vdyBoYXMgY29udHJvbFwiKX0pO3ZhciBiPW47cmV0dXJuIDA9PWF8fElhLkdiKGEpP2I6NDI5NDk2NzI5NX1mLl9tZW1tb3ZlPVpjO2Z1bmN0aW9uICRjKGEsYil7Uz1iO3JldHVybiAwfWYuX21lbXNldD1hZDtmLl9iaXRzaGlmdDY0U2hsPWJkO3ZhciBjZD1DYTtcbmZ1bmN0aW9uIGRkKGEsYil7ZWQ9YTtmZD1iO2lmKCFnZClyZXR1cm4gMTtpZigwPT1hKWhkPWZ1bmN0aW9uKCl7c2V0VGltZW91dChpZCxiKX0samQ9XCJ0aW1lb3V0XCI7ZWxzZSBpZigxPT1hKWhkPWZ1bmN0aW9uKCl7a2QoaWQpfSxqZD1cInJBRlwiO2Vsc2UgaWYoMj09YSl7aWYoIXdpbmRvdy5zZXRJbW1lZGlhdGUpe3ZhciBjPVtdO3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLGZ1bmN0aW9uKGEpe2Euc291cmNlPT09d2luZG93JiZcIl9fZW1jY1wiPT09YS5kYXRhJiYoYS5zdG9wUHJvcGFnYXRpb24oKSxjLnNoaWZ0KCkoKSl9LCEwKTt3aW5kb3cuc2V0SW1tZWRpYXRlPWZ1bmN0aW9uKGEpe2MucHVzaChhKTt3aW5kb3cucG9zdE1lc3NhZ2UoXCJfX2VtY2NcIixcIipcIil9fWhkPWZ1bmN0aW9uKCl7d2luZG93LnNldEltbWVkaWF0ZShpZCl9O2pkPVwiaW1tZWRpYXRlXCJ9cmV0dXJuIDB9XG5mdW5jdGlvbiBsZChhLGIsYyxkLGUpe2Yubm9FeGl0UnVudGltZT0hMDthc3NlcnQoIWdkLFwiZW1zY3JpcHRlbl9zZXRfbWFpbl9sb29wOiB0aGVyZSBjYW4gb25seSBiZSBvbmUgbWFpbiBsb29wIGZ1bmN0aW9uIGF0IG9uY2U6IGNhbGwgZW1zY3JpcHRlbl9jYW5jZWxfbWFpbl9sb29wIHRvIGNhbmNlbCB0aGUgcHJldmlvdXMgb25lIGJlZm9yZSBzZXR0aW5nIGEgbmV3IG9uZSB3aXRoIGRpZmZlcmVudCBwYXJhbWV0ZXJzLlwiKTtnZD1hO21kPWQ7dmFyIGc9bmQ7aWQ9ZnVuY3Rpb24oKXtpZighb2EpaWYoMDxvZC5sZW5ndGgpe3ZhciBiPURhdGUubm93KCksYz1vZC5zaGlmdCgpO2MudmIoYy5sYSk7aWYocGQpe3ZhciBlPXBkLHI9MD09ZSUxP2UtMTpNYXRoLmZsb29yKGUpO3BkPWMudmU/cjooOCplKyhyKy41KSkvOX1jb25zb2xlLmxvZygnbWFpbiBsb29wIGJsb2NrZXIgXCInK2MubmFtZSsnXCIgdG9vayAnKyhEYXRlLm5vdygpLWIpK1wiIG1zXCIpO3FkKCk7c2V0VGltZW91dChpZCxcbjApfWVsc2UgZzxuZHx8KHJkPXJkKzF8MCwxPT1lZCYmMTxmZCYmMCE9cmQlZmQ/aGQoKTooXCJ0aW1lb3V0XCI9PT1qZCYmZi53YSYmKGYuZmEoXCJMb29rcyBsaWtlIHlvdSBhcmUgcmVuZGVyaW5nIHdpdGhvdXQgdXNpbmcgcmVxdWVzdEFuaW1hdGlvbkZyYW1lIGZvciB0aGUgbWFpbiBsb29wLiBZb3Ugc2hvdWxkIHVzZSAwIGZvciB0aGUgZnJhbWUgcmF0ZSBpbiBlbXNjcmlwdGVuX3NldF9tYWluX2xvb3AgaW4gb3JkZXIgdG8gdXNlIHJlcXVlc3RBbmltYXRpb25GcmFtZSwgYXMgdGhhdCBjYW4gZ3JlYXRseSBpbXByb3ZlIHlvdXIgZnJhbWUgcmF0ZXMhXCIpLGpkPVwiXCIpLHNkKGZ1bmN0aW9uKCl7XCJ1bmRlZmluZWRcIiE9PXR5cGVvZiBkP2wuVChcInZpXCIsYSxbZF0pOmwuVChcInZcIixhKX0pLGc8bmR8fChcIm9iamVjdFwiPT09dHlwZW9mIFNETCYmU0RMLmF1ZGlvJiZTREwuYXVkaW8uTGImJlNETC5hdWRpby5MYigpLGhkKCkpKSl9O2V8fChiJiYwPGI/ZGQoMCwxRTMvYik6ZGQoMSwxKSxoZCgpKTtcbmlmKGMpdGhyb3dcIlNpbXVsYXRlSW5maW5pdGVMb29wXCI7fXZhciBoZD1udWxsLGpkPVwiXCIsbmQ9MCxnZD1udWxsLG1kPTAsZWQ9MCxmZD0wLHJkPTAsb2Q9W107ZnVuY3Rpb24gcWQoKXtpZihmLnNldFN0YXR1cyl7dmFyIGE9Zi5zdGF0dXNNZXNzYWdlfHxcIlBsZWFzZSB3YWl0Li4uXCIsYj1wZCxjPXRkLnhlO2I/YjxjP2Yuc2V0U3RhdHVzKGErXCIgKFwiKyhjLWIpK1wiL1wiK2MrXCIpXCIpOmYuc2V0U3RhdHVzKGEpOmYuc2V0U3RhdHVzKFwiXCIpfX1mdW5jdGlvbiBzZChhKXtpZighKG9hfHxmLnByZU1haW5Mb29wJiYhMT09PWYucHJlTWFpbkxvb3AoKSkpe3RyeXthKCl9Y2F0Y2goYil7aWYoYiBpbnN0YW5jZW9mIGthKXJldHVybjtiJiZcIm9iamVjdFwiPT09dHlwZW9mIGImJmIuc3RhY2smJmYuZmEoXCJleGNlcHRpb24gdGhyb3duOiBcIitbYixiLnN0YWNrXSk7dGhyb3cgYjt9Zi5wb3N0TWFpbkxvb3AmJmYucG9zdE1haW5Mb29wKCl9fXZhciB0ZD17fSxpZCxwZCx1ZD0hMSx2ZD0hMSx3ZD1bXTtcbmZ1bmN0aW9uIHhkKCl7ZnVuY3Rpb24gYSgpe3ZkPWRvY3VtZW50LnBvaW50ZXJMb2NrRWxlbWVudD09PWN8fGRvY3VtZW50Lm1velBvaW50ZXJMb2NrRWxlbWVudD09PWN8fGRvY3VtZW50LndlYmtpdFBvaW50ZXJMb2NrRWxlbWVudD09PWN8fGRvY3VtZW50Lm1zUG9pbnRlckxvY2tFbGVtZW50PT09Y31mLnByZWxvYWRQbHVnaW5zfHwoZi5wcmVsb2FkUGx1Z2lucz1bXSk7aWYoIXlkKXt5ZD0hMDt0cnl7emQ9ITB9Y2F0Y2goYil7emQ9ITEsY29uc29sZS5sb2coXCJ3YXJuaW5nOiBubyBibG9iIGNvbnN0cnVjdG9yLCBjYW5ub3QgY3JlYXRlIGJsb2JzIHdpdGggbWltZXR5cGVzXCIpfUFkPVwidW5kZWZpbmVkXCIhPXR5cGVvZiBNb3pCbG9iQnVpbGRlcj9Nb3pCbG9iQnVpbGRlcjpcInVuZGVmaW5lZFwiIT10eXBlb2YgV2ViS2l0QmxvYkJ1aWxkZXI/V2ViS2l0QmxvYkJ1aWxkZXI6emQ/bnVsbDpjb25zb2xlLmxvZyhcIndhcm5pbmc6IG5vIEJsb2JCdWlsZGVyXCIpO0JkPVwidW5kZWZpbmVkXCIhPVxudHlwZW9mIHdpbmRvdz93aW5kb3cuVVJMP3dpbmRvdy5VUkw6d2luZG93LndlYmtpdFVSTDp2b2lkIDA7Zi5hYnx8XCJ1bmRlZmluZWRcIiE9PXR5cGVvZiBCZHx8KGNvbnNvbGUubG9nKFwid2FybmluZzogQnJvd3NlciBkb2VzIG5vdCBzdXBwb3J0IGNyZWF0aW5nIG9iamVjdCBVUkxzLiBCdWlsdC1pbiBicm93c2VyIGltYWdlIGRlY29kaW5nIHdpbGwgbm90IGJlIGF2YWlsYWJsZS5cIiksZi5hYj0hMCk7Zi5wcmVsb2FkUGx1Z2lucy5wdXNoKHtjYW5IYW5kbGU6ZnVuY3Rpb24oYSl7cmV0dXJuIWYuYWImJi9cXC4oanBnfGpwZWd8cG5nfGJtcCkkL2kudGVzdChhKX0saGFuZGxlOmZ1bmN0aW9uKGEsYixjLGgpe3ZhciBtPW51bGw7aWYoemQpdHJ5e209bmV3IEJsb2IoW2FdLHt0eXBlOkNkKGIpfSksbS5zaXplIT09YS5sZW5ndGgmJihtPW5ldyBCbG9iKFsobmV3IFVpbnQ4QXJyYXkoYSkpLmJ1ZmZlcl0se3R5cGU6Q2QoYil9KSl9Y2F0Y2godCl7bC5YKFwiQmxvYiBjb25zdHJ1Y3RvciBwcmVzZW50IGJ1dCBmYWlsczogXCIrXG50K1wiOyBmYWxsaW5nIGJhY2sgdG8gYmxvYiBidWlsZGVyXCIpfW18fChtPW5ldyBBZCxtLmFwcGVuZCgobmV3IFVpbnQ4QXJyYXkoYSkpLmJ1ZmZlciksbT1tLmdldEJsb2IoKSk7dmFyIHI9QmQuY3JlYXRlT2JqZWN0VVJMKG0pLHg9bmV3IEltYWdlO3gub25sb2FkPWZ1bmN0aW9uKCl7YXNzZXJ0KHguY29tcGxldGUsXCJJbWFnZSBcIitiK1wiIGNvdWxkIG5vdCBiZSBkZWNvZGVkXCIpO3ZhciBoPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJjYW52YXNcIik7aC53aWR0aD14LndpZHRoO2guaGVpZ2h0PXguaGVpZ2h0O2guZ2V0Q29udGV4dChcIjJkXCIpLmRyYXdJbWFnZSh4LDAsMCk7Zi5wcmVsb2FkZWRJbWFnZXNbYl09aDtCZC5yZXZva2VPYmplY3RVUkwocik7YyYmYyhhKX07eC5vbmVycm9yPWZ1bmN0aW9uKCl7Y29uc29sZS5sb2coXCJJbWFnZSBcIityK1wiIGNvdWxkIG5vdCBiZSBkZWNvZGVkXCIpO2gmJmgoKX07eC5zcmM9cn19KTtmLnByZWxvYWRQbHVnaW5zLnB1c2goe2NhbkhhbmRsZTpmdW5jdGlvbihhKXtyZXR1cm4hZi5KZSYmXG5hLnN1YnN0cigtNClpbntcIi5vZ2dcIjoxLFwiLndhdlwiOjEsXCIubXAzXCI6MX19LGhhbmRsZTpmdW5jdGlvbihhLGIsYyxoKXtmdW5jdGlvbiBtKGgpe3J8fChyPSEwLGYucHJlbG9hZGVkQXVkaW9zW2JdPWgsYyYmYyhhKSl9ZnVuY3Rpb24gdCgpe3J8fChyPSEwLGYucHJlbG9hZGVkQXVkaW9zW2JdPW5ldyBBdWRpbyxoJiZoKCkpfXZhciByPSExO2lmKHpkKXt0cnl7dmFyIHg9bmV3IEJsb2IoW2FdLHt0eXBlOkNkKGIpfSl9Y2F0Y2godil7cmV0dXJuIHQoKX12YXIgeD1CZC5jcmVhdGVPYmplY3RVUkwoeCksRz1uZXcgQXVkaW87Ry5hZGRFdmVudExpc3RlbmVyKFwiY2FucGxheXRocm91Z2hcIixmdW5jdGlvbigpe20oRyl9LCExKTtHLm9uZXJyb3I9ZnVuY3Rpb24oKXtpZighcil7Y29uc29sZS5sb2coXCJ3YXJuaW5nOiBicm93c2VyIGNvdWxkIG5vdCBmdWxseSBkZWNvZGUgYXVkaW8gXCIrYitcIiwgdHJ5aW5nIHNsb3dlciBiYXNlNjQgYXBwcm9hY2hcIik7Zm9yKHZhciBjPVwiXCIsZz0wLGg9MCxcbng9MDt4PGEubGVuZ3RoO3grKylmb3IoZz1nPDw4fGFbeF0saCs9ODs2PD1oOyl2YXIgdj1nPj5oLTYmNjMsaD1oLTYsYz1jK1wiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrL1wiW3ZdOzI9PWg/KGMrPVwiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrL1wiWyhnJjMpPDw0XSxjKz1cIj09XCIpOjQ9PWgmJihjKz1cIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky9cIlsoZyYxNSk8PDJdLGMrPVwiPVwiKTtHLnNyYz1cImRhdGE6YXVkaW8veC1cIitiLnN1YnN0cigtMykrXCI7YmFzZTY0LFwiK2M7bShHKX19O0cuc3JjPXg7RGQoZnVuY3Rpb24oKXttKEcpfSl9ZWxzZSByZXR1cm4gdCgpfX0pO3ZhciBjPWYuY2FudmFzO2MmJihjLkVhPWMucmVxdWVzdFBvaW50ZXJMb2NrfHxjLm1velJlcXVlc3RQb2ludGVyTG9ja3x8XG5jLndlYmtpdFJlcXVlc3RQb2ludGVyTG9ja3x8Yy5tc1JlcXVlc3RQb2ludGVyTG9ja3x8ZnVuY3Rpb24oKXt9LGMuUmE9ZG9jdW1lbnQuZXhpdFBvaW50ZXJMb2NrfHxkb2N1bWVudC5tb3pFeGl0UG9pbnRlckxvY2t8fGRvY3VtZW50LndlYmtpdEV4aXRQb2ludGVyTG9ja3x8ZG9jdW1lbnQubXNFeGl0UG9pbnRlckxvY2t8fGZ1bmN0aW9uKCl7fSxjLlJhPWMuUmEuYmluZChkb2N1bWVudCksZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcInBvaW50ZXJsb2NrY2hhbmdlXCIsYSwhMSksZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcIm1venBvaW50ZXJsb2NrY2hhbmdlXCIsYSwhMSksZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcIndlYmtpdHBvaW50ZXJsb2NrY2hhbmdlXCIsYSwhMSksZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcIm1zcG9pbnRlcmxvY2tjaGFuZ2VcIixhLCExKSxmLmVsZW1lbnRQb2ludGVyTG9jayYmYy5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIixmdW5jdGlvbihhKXshdmQmJlxuYy5FYSYmKGMuRWEoKSxhLnByZXZlbnREZWZhdWx0KCkpfSwhMSkpfX1mdW5jdGlvbiBFZChhLGIsYyxkKXtpZihiJiZmLndhJiZhPT1mLmNhbnZhcylyZXR1cm4gZi53YTt2YXIgZSxnO2lmKGIpe2c9e2FudGlhbGlhczohMSxhbHBoYTohMX07aWYoZClmb3IodmFyIGggaW4gZClnW2hdPWRbaF07aWYoZz1HTC5jcmVhdGVDb250ZXh0KGEsZykpZT1HTC5nZXRDb250ZXh0KGcpLlpkO2Euc3R5bGUuYmFja2dyb3VuZENvbG9yPVwiYmxhY2tcIn1lbHNlIGU9YS5nZXRDb250ZXh0KFwiMmRcIik7aWYoIWUpcmV0dXJuIG51bGw7YyYmKGJ8fGFzc2VydChcInVuZGVmaW5lZFwiPT09dHlwZW9mIEdMY3R4LFwiY2Fubm90IHNldCBpbiBtb2R1bGUgaWYgR0xjdHggaXMgdXNlZCwgYnV0IHdlIGFyZSBhIG5vbi1HTCBjb250ZXh0IHRoYXQgd291bGQgcmVwbGFjZSBpdFwiKSxmLndhPWUsYiYmR0wuSWUoZyksZi5MZT1iLHdkLmZvckVhY2goZnVuY3Rpb24oYSl7YSgpfSkseGQoKSk7cmV0dXJuIGV9XG52YXIgRmQ9ITEsR2Q9dm9pZCAwLEhkPXZvaWQgMDtcbmZ1bmN0aW9uIElkKGEsYixjKXtmdW5jdGlvbiBkKCl7dWQ9ITE7dmFyIGE9ZS5wYXJlbnROb2RlOyhkb2N1bWVudC53ZWJraXRGdWxsU2NyZWVuRWxlbWVudHx8ZG9jdW1lbnQud2Via2l0RnVsbHNjcmVlbkVsZW1lbnR8fGRvY3VtZW50Lm1vekZ1bGxTY3JlZW5FbGVtZW50fHxkb2N1bWVudC5tb3pGdWxsc2NyZWVuRWxlbWVudHx8ZG9jdW1lbnQuZnVsbFNjcmVlbkVsZW1lbnR8fGRvY3VtZW50LmZ1bGxzY3JlZW5FbGVtZW50fHxkb2N1bWVudC5tc0Z1bGxTY3JlZW5FbGVtZW50fHxkb2N1bWVudC5tc0Z1bGxzY3JlZW5FbGVtZW50fHxkb2N1bWVudC53ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnQpPT09YT8oZS5QYT1kb2N1bWVudC5jYW5jZWxGdWxsU2NyZWVufHxkb2N1bWVudC5tb3pDYW5jZWxGdWxsU2NyZWVufHxkb2N1bWVudC53ZWJraXRDYW5jZWxGdWxsU2NyZWVufHxkb2N1bWVudC5tc0V4aXRGdWxsc2NyZWVufHxkb2N1bWVudC5leGl0RnVsbHNjcmVlbnx8ZnVuY3Rpb24oKXt9LFxuZS5QYT1lLlBhLmJpbmQoZG9jdW1lbnQpLEdkJiZlLkVhKCksdWQ9ITAsSGQmJkpkKCkpOihhLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGUsYSksYS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGEpLEhkJiZLZCgpKTtpZihmLm9uRnVsbFNjcmVlbilmLm9uRnVsbFNjcmVlbih1ZCk7TGQoZSl9R2Q9YTtIZD1iO01kPWM7XCJ1bmRlZmluZWRcIj09PXR5cGVvZiBHZCYmKEdkPSEwKTtcInVuZGVmaW5lZFwiPT09dHlwZW9mIEhkJiYoSGQ9ITEpO1widW5kZWZpbmVkXCI9PT10eXBlb2YgTWQmJihNZD1udWxsKTt2YXIgZT1mLmNhbnZhcztGZHx8KEZkPSEwLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJmdWxsc2NyZWVuY2hhbmdlXCIsZCwhMSksZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcIm1vemZ1bGxzY3JlZW5jaGFuZ2VcIixkLCExKSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwid2Via2l0ZnVsbHNjcmVlbmNoYW5nZVwiLGQsITEpLGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJNU0Z1bGxzY3JlZW5DaGFuZ2VcIixcbmQsITEpKTt2YXIgZz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO2UucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZyxlKTtnLmFwcGVuZENoaWxkKGUpO2cuQz1nLnJlcXVlc3RGdWxsU2NyZWVufHxnLm1velJlcXVlc3RGdWxsU2NyZWVufHxnLm1zUmVxdWVzdEZ1bGxzY3JlZW58fChnLndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuP2Z1bmN0aW9uKCl7Zy53ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbihFbGVtZW50LkFMTE9XX0tFWUJPQVJEX0lOUFVUKX06bnVsbCk7Yz9nLkMoe01lOmN9KTpnLkMoKX12YXIgTmQ9MDtmdW5jdGlvbiBPZChhKXt2YXIgYj1EYXRlLm5vdygpO2lmKDA9PT1OZClOZD1iKzFFMy82MDtlbHNlIGZvcig7YisyPj1OZDspTmQrPTFFMy82MDtiPU1hdGgubWF4KE5kLWIsMCk7c2V0VGltZW91dChhLGIpfVxuZnVuY3Rpb24ga2QoYSl7XCJ1bmRlZmluZWRcIj09PXR5cGVvZiB3aW5kb3c/T2QoYSk6KHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWV8fCh3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lPXdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWV8fHdpbmRvdy5tb3pSZXF1ZXN0QW5pbWF0aW9uRnJhbWV8fHdpbmRvdy53ZWJraXRSZXF1ZXN0QW5pbWF0aW9uRnJhbWV8fHdpbmRvdy5tc1JlcXVlc3RBbmltYXRpb25GcmFtZXx8d2luZG93Lm9SZXF1ZXN0QW5pbWF0aW9uRnJhbWV8fE9kKSx3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGEpKX1mdW5jdGlvbiBEZChhKXtmLm5vRXhpdFJ1bnRpbWU9ITA7c2V0VGltZW91dChmdW5jdGlvbigpe29hfHxhKCl9LDFFNCl9XG5mdW5jdGlvbiBDZChhKXtyZXR1cm57anBnOlwiaW1hZ2UvanBlZ1wiLGpwZWc6XCJpbWFnZS9qcGVnXCIscG5nOlwiaW1hZ2UvcG5nXCIsYm1wOlwiaW1hZ2UvYm1wXCIsb2dnOlwiYXVkaW8vb2dnXCIsd2F2OlwiYXVkaW8vd2F2XCIsbXAzOlwiYXVkaW8vbXBlZ1wifVthLnN1YnN0cihhLmxhc3RJbmRleE9mKFwiLlwiKSsxKV19ZnVuY3Rpb24gUGQoYSxiLGMpe3ZhciBkPW5ldyBYTUxIdHRwUmVxdWVzdDtkLm9wZW4oXCJHRVRcIixhLCEwKTtkLnJlc3BvbnNlVHlwZT1cImFycmF5YnVmZmVyXCI7ZC5vbmxvYWQ9ZnVuY3Rpb24oKXsyMDA9PWQuc3RhdHVzfHwwPT1kLnN0YXR1cyYmZC5yZXNwb25zZT9iKGQucmVzcG9uc2UpOmMoKX07ZC5vbmVycm9yPWM7ZC5zZW5kKG51bGwpfVxuZnVuY3Rpb24gUWQoYSxiLGMpe1BkKGEsZnVuY3Rpb24oYyl7YXNzZXJ0KGMsJ0xvYWRpbmcgZGF0YSBmaWxlIFwiJythKydcIiBmYWlsZWQgKG5vIGFycmF5QnVmZmVyKS4nKTtiKG5ldyBVaW50OEFycmF5KGMpKTt4YigpfSxmdW5jdGlvbigpe2lmKGMpYygpO2Vsc2UgdGhyb3cnTG9hZGluZyBkYXRhIGZpbGUgXCInK2ErJ1wiIGZhaWxlZC4nO30pO3diKCl9dmFyIFJkPVtdO2Z1bmN0aW9uIFNkKCl7dmFyIGE9Zi5jYW52YXM7UmQuZm9yRWFjaChmdW5jdGlvbihiKXtiKGEud2lkdGgsYS5oZWlnaHQpfSl9ZnVuY3Rpb24gSmQoKXtpZihcInVuZGVmaW5lZFwiIT10eXBlb2YgU0RMKXt2YXIgYT1VYVtTREwuc2NyZWVuKzAqbC5NPj4yXTt3W1NETC5zY3JlZW4rMCpsLk0+PjJdPWF8ODM4ODYwOH1TZCgpfVxuZnVuY3Rpb24gS2QoKXtpZihcInVuZGVmaW5lZFwiIT10eXBlb2YgU0RMKXt2YXIgYT1VYVtTREwuc2NyZWVuKzAqbC5NPj4yXTt3W1NETC5zY3JlZW4rMCpsLk0+PjJdPWEmLTgzODg2MDl9U2QoKX1cbmZ1bmN0aW9uIExkKGEsYixjKXtiJiZjPyhhLlRiPWIsYS5DYj1jKTooYj1hLlRiLGM9YS5DYik7dmFyIGQ9YixlPWM7Zi5mb3JjZWRBc3BlY3RSYXRpbyYmMDxmLmZvcmNlZEFzcGVjdFJhdGlvJiYoZC9lPGYuZm9yY2VkQXNwZWN0UmF0aW8/ZD1NYXRoLnJvdW5kKGUqZi5mb3JjZWRBc3BlY3RSYXRpbyk6ZT1NYXRoLnJvdW5kKGQvZi5mb3JjZWRBc3BlY3RSYXRpbykpO2lmKChkb2N1bWVudC53ZWJraXRGdWxsU2NyZWVuRWxlbWVudHx8ZG9jdW1lbnQud2Via2l0RnVsbHNjcmVlbkVsZW1lbnR8fGRvY3VtZW50Lm1vekZ1bGxTY3JlZW5FbGVtZW50fHxkb2N1bWVudC5tb3pGdWxsc2NyZWVuRWxlbWVudHx8ZG9jdW1lbnQuZnVsbFNjcmVlbkVsZW1lbnR8fGRvY3VtZW50LmZ1bGxzY3JlZW5FbGVtZW50fHxkb2N1bWVudC5tc0Z1bGxTY3JlZW5FbGVtZW50fHxkb2N1bWVudC5tc0Z1bGxzY3JlZW5FbGVtZW50fHxkb2N1bWVudC53ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnQpPT09XG5hLnBhcmVudE5vZGUmJlwidW5kZWZpbmVkXCIhPXR5cGVvZiBzY3JlZW4pdmFyIGc9TWF0aC5taW4oc2NyZWVuLndpZHRoL2Qsc2NyZWVuLmhlaWdodC9lKSxkPU1hdGgucm91bmQoZCpnKSxlPU1hdGgucm91bmQoZSpnKTtIZD8oYS53aWR0aCE9ZCYmKGEud2lkdGg9ZCksYS5oZWlnaHQhPWUmJihhLmhlaWdodD1lKSxcInVuZGVmaW5lZFwiIT10eXBlb2YgYS5zdHlsZSYmKGEuc3R5bGUucmVtb3ZlUHJvcGVydHkoXCJ3aWR0aFwiKSxhLnN0eWxlLnJlbW92ZVByb3BlcnR5KFwiaGVpZ2h0XCIpKSk6KGEud2lkdGghPWImJihhLndpZHRoPWIpLGEuaGVpZ2h0IT1jJiYoYS5oZWlnaHQ9YyksXCJ1bmRlZmluZWRcIiE9dHlwZW9mIGEuc3R5bGUmJihkIT1ifHxlIT1jPyhhLnN0eWxlLnNldFByb3BlcnR5KFwid2lkdGhcIixkK1wicHhcIixcImltcG9ydGFudFwiKSxhLnN0eWxlLnNldFByb3BlcnR5KFwiaGVpZ2h0XCIsZStcInB4XCIsXCJpbXBvcnRhbnRcIikpOihhLnN0eWxlLnJlbW92ZVByb3BlcnR5KFwid2lkdGhcIiksYS5zdHlsZS5yZW1vdmVQcm9wZXJ0eShcImhlaWdodFwiKSkpKX1cbnZhciB5ZCx6ZCxBZCxCZCxNZCxUZD1EYTtDYygpO1hiPUFycmF5KDQwOTYpO2tjKEosXCIvXCIpO1EoXCIvdG1wXCIpO1EoXCIvaG9tZVwiKTtRKFwiL2hvbWUvd2ViX3VzZXJcIik7XG4oZnVuY3Rpb24oKXtRKFwiL2RldlwiKTtMYigyNTkse3JlYWQ6ZnVuY3Rpb24oKXtyZXR1cm4gMH0sd3JpdGU6ZnVuY3Rpb24oYSxiLGUsZyl7cmV0dXJuIGd9fSk7b2MoXCIvZGV2L251bGxcIiwyNTkpO0tiKDEyODAsTmIpO0tiKDE1MzYsT2IpO29jKFwiL2Rldi90dHlcIiwxMjgwKTtvYyhcIi9kZXYvdHR5MVwiLDE1MzYpO3ZhciBhO2lmKFwidW5kZWZpbmVkXCIhPT10eXBlb2YgY3J5cHRvKXt2YXIgYj1uZXcgVWludDhBcnJheSgxKTthPWZ1bmN0aW9uKCl7Y3J5cHRvLmdldFJhbmRvbVZhbHVlcyhiKTtyZXR1cm4gYlswXX19ZWxzZSBhPWVhP2Z1bmN0aW9uKCl7cmV0dXJuIHJlcXVpcmUoXCJjcnlwdG9cIikucmFuZG9tQnl0ZXMoMSlbMF19OmZ1bmN0aW9uKCl7cmV0dXJuIDI1NipNYXRoLnJhbmRvbSgpfDB9O0hjKFwiL2RldlwiLFwicmFuZG9tXCIsYSk7SGMoXCIvZGV2XCIsXCJ1cmFuZG9tXCIsYSk7UShcIi9kZXYvc2htXCIpO1EoXCIvZGV2L3NobS90bXBcIil9KSgpO1EoXCIvcHJvY1wiKTtRKFwiL3Byb2Mvc2VsZlwiKTtcblEoXCIvcHJvYy9zZWxmL2ZkXCIpO2tjKHtEOmZ1bmN0aW9uKCl7dmFyIGE9UWIoXCIvcHJvYy9zZWxmXCIsXCJmZFwiLDE2ODk1LDczKTthLms9e2xvb2t1cDpmdW5jdGlvbihhLGMpe3ZhciBkPU1bK2NdO2lmKCFkKXRocm93IG5ldyBIKEQuTCk7dmFyIGU9e3BhcmVudDpudWxsLEQ6eyRhOlwiZmFrZVwifSxrOntyZWFkbGluazpmdW5jdGlvbigpe3JldHVybiBkLnBhdGh9fX07cmV0dXJuIGUucGFyZW50PWV9fTtyZXR1cm4gYX19LFwiL3Byb2Mvc2VsZi9mZFwiKTtcbmNiLnVuc2hpZnQoZnVuY3Rpb24oKXtpZighZi5ub0ZTSW5pdCYmIURjKXthc3NlcnQoIURjLFwiRlMuaW5pdCB3YXMgcHJldmlvdXNseSBjYWxsZWQuIElmIHlvdSB3YW50IHRvIGluaXRpYWxpemUgbGF0ZXIgd2l0aCBjdXN0b20gcGFyYW1ldGVycywgcmVtb3ZlIGFueSBlYXJsaWVyIGNhbGxzIChub3RlIHRoYXQgb25lIGlzIGF1dG9tYXRpY2FsbHkgYWRkZWQgdG8gdGhlIGdlbmVyYXRlZCBjb2RlKVwiKTtEYz0hMDtDYygpO2Yuc3RkaW49Zi5zdGRpbjtmLnN0ZG91dD1mLnN0ZG91dDtmLnN0ZGVycj1mLnN0ZGVycjtmLnN0ZGluP0hjKFwiL2RldlwiLFwic3RkaW5cIixmLnN0ZGluKTpwYyhcIi9kZXYvdHR5XCIsXCIvZGV2L3N0ZGluXCIpO2Yuc3Rkb3V0P0hjKFwiL2RldlwiLFwic3Rkb3V0XCIsbnVsbCxmLnN0ZG91dCk6cGMoXCIvZGV2L3R0eVwiLFwiL2Rldi9zdGRvdXRcIik7Zi5zdGRlcnI/SGMoXCIvZGV2XCIsXCJzdGRlcnJcIixudWxsLGYuc3RkZXJyKTpwYyhcIi9kZXYvdHR5MVwiLFwiL2Rldi9zdGRlcnJcIik7XG52YXIgYT13YyhcIi9kZXYvc3RkaW5cIixcInJcIik7YXNzZXJ0KDA9PT1hLmZkLFwiaW52YWxpZCBoYW5kbGUgZm9yIHN0ZGluIChcIithLmZkK1wiKVwiKTthPXdjKFwiL2Rldi9zdGRvdXRcIixcIndcIik7YXNzZXJ0KDE9PT1hLmZkLFwiaW52YWxpZCBoYW5kbGUgZm9yIHN0ZG91dCAoXCIrYS5mZCtcIilcIik7YT13YyhcIi9kZXYvc3RkZXJyXCIsXCJ3XCIpO2Fzc2VydCgyPT09YS5mZCxcImludmFsaWQgaGFuZGxlIGZvciBzdGRlcnIgKFwiK2EuZmQrXCIpXCIpfX0pO2RiLnB1c2goZnVuY3Rpb24oKXtZYj0hMX0pO2ViLnB1c2goZnVuY3Rpb24oKXtEYz0hMTt2YXIgYT1mLl9mZmx1c2g7YSYmYSgwKTtmb3IoYT0wO2E8TS5sZW5ndGg7YSsrKXt2YXIgYj1NW2FdO2ImJnljKGIpfX0pO2YuRlNfY3JlYXRlRm9sZGVyPWZ1bmN0aW9uKGEsYixjLGQpe2E9RShcInN0cmluZ1wiPT09dHlwZW9mIGE/YTpQKGEpLGIpO3JldHVybiBRKGEsRWMoYyxkKSl9O1xuZi5GU19jcmVhdGVQYXRoPWZ1bmN0aW9uKGEsYil7YT1cInN0cmluZ1wiPT09dHlwZW9mIGE/YTpQKGEpO2Zvcih2YXIgYz1iLnNwbGl0KFwiL1wiKS5yZXZlcnNlKCk7Yy5sZW5ndGg7KXt2YXIgZD1jLnBvcCgpO2lmKGQpe3ZhciBlPUUoYSxkKTt0cnl7UShlKX1jYXRjaChnKXt9YT1lfX1yZXR1cm4gZX07Zi5GU19jcmVhdGVEYXRhRmlsZT1HYztcbmYuRlNfY3JlYXRlUHJlbG9hZGVkRmlsZT1mdW5jdGlvbihhLGIsYyxkLGUsZyxoLG0sdCxyKXtmdW5jdGlvbiB4KGMpe2Z1bmN0aW9uIHgoYyl7ciYmcigpO218fEdjKGEsYixjLGQsZSx0KTtnJiZnKCk7eGIoKX12YXIgWT0hMTtmLnByZWxvYWRQbHVnaW5zLmZvckVhY2goZnVuY3Rpb24oYSl7IVkmJmEuY2FuSGFuZGxlKHYpJiYoYS5oYW5kbGUoYyx2LHgsZnVuY3Rpb24oKXtoJiZoKCk7eGIoKX0pLFk9ITApfSk7WXx8eChjKX14ZCgpO3ZhciB2PWI/SWIoRShhLGIpKTphO3diKCk7XCJzdHJpbmdcIj09dHlwZW9mIGM/UWQoYyxmdW5jdGlvbihhKXt4KGEpfSxoKTp4KGMpfTtcbmYuRlNfY3JlYXRlTGF6eUZpbGU9ZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZyxoO2Z1bmN0aW9uIG0oKXt0aGlzLkFhPSExO3RoaXMubWE9W119bS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKGEpe2lmKCEoYT50aGlzLmxlbmd0aC0xfHwwPmEpKXt2YXIgYj1hJXRoaXMuY2h1bmtTaXplO3JldHVybiB0aGlzLkJiKGEvdGhpcy5jaHVua1NpemV8MClbYl19fTttLnByb3RvdHlwZS5PYj1mdW5jdGlvbihhKXt0aGlzLkJiPWF9O20ucHJvdG90eXBlLk9hPWZ1bmN0aW9uKCl7dmFyIGE9bmV3IFhNTEh0dHBSZXF1ZXN0O2Eub3BlbihcIkhFQURcIixjLCExKTthLnNlbmQobnVsbCk7aWYoISgyMDA8PWEuc3RhdHVzJiYzMDA+YS5zdGF0dXN8fDMwND09PWEuc3RhdHVzKSl0aHJvdyBFcnJvcihcIkNvdWxkbid0IGxvYWQgXCIrYytcIi4gU3RhdHVzOiBcIithLnN0YXR1cyk7dmFyIGI9TnVtYmVyKGEuZ2V0UmVzcG9uc2VIZWFkZXIoXCJDb250ZW50LWxlbmd0aFwiKSksZCxlPTEwNDg1NzY7KGQ9YS5nZXRSZXNwb25zZUhlYWRlcihcIkFjY2VwdC1SYW5nZXNcIikpJiZcblwiYnl0ZXNcIj09PWR8fChlPWIpO3ZhciBnPXRoaXM7Zy5PYihmdW5jdGlvbihhKXt2YXIgZD1hKmUsaD0oYSsxKSplLTEsaD1NYXRoLm1pbihoLGItMSk7aWYoXCJ1bmRlZmluZWRcIj09PXR5cGVvZiBnLm1hW2FdKXt2YXIgbT1nLm1hO2lmKGQ+aCl0aHJvdyBFcnJvcihcImludmFsaWQgcmFuZ2UgKFwiK2QrXCIsIFwiK2grXCIpIG9yIG5vIGJ5dGVzIHJlcXVlc3RlZCFcIik7aWYoaD5iLTEpdGhyb3cgRXJyb3IoXCJvbmx5IFwiK2IrXCIgYnl0ZXMgYXZhaWxhYmxlISBwcm9ncmFtbWVyIGVycm9yIVwiKTt2YXIgcj1uZXcgWE1MSHR0cFJlcXVlc3Q7ci5vcGVuKFwiR0VUXCIsYywhMSk7YiE9PWUmJnIuc2V0UmVxdWVzdEhlYWRlcihcIlJhbmdlXCIsXCJieXRlcz1cIitkK1wiLVwiK2gpO1widW5kZWZpbmVkXCIhPXR5cGVvZiBVaW50OEFycmF5JiYoci5yZXNwb25zZVR5cGU9XCJhcnJheWJ1ZmZlclwiKTtyLm92ZXJyaWRlTWltZVR5cGUmJnIub3ZlcnJpZGVNaW1lVHlwZShcInRleHQvcGxhaW47IGNoYXJzZXQ9eC11c2VyLWRlZmluZWRcIik7XG5yLnNlbmQobnVsbCk7aWYoISgyMDA8PXIuc3RhdHVzJiYzMDA+ci5zdGF0dXN8fDMwND09PXIuc3RhdHVzKSl0aHJvdyBFcnJvcihcIkNvdWxkbid0IGxvYWQgXCIrYytcIi4gU3RhdHVzOiBcIityLnN0YXR1cyk7ZD12b2lkIDAhPT1yLnJlc3BvbnNlP25ldyBVaW50OEFycmF5KHIucmVzcG9uc2V8fFtdKTpCKHIucmVzcG9uc2VUZXh0fHxcIlwiLCEwKTttW2FdPWR9aWYoXCJ1bmRlZmluZWRcIj09PXR5cGVvZiBnLm1hW2FdKXRocm93IEVycm9yKFwiZG9YSFIgZmFpbGVkIVwiKTtyZXR1cm4gZy5tYVthXX0pO3RoaXMubGI9Yjt0aGlzLmtiPWU7dGhpcy5BYT0hMH07aWYoXCJ1bmRlZmluZWRcIiE9PXR5cGVvZiBYTUxIdHRwUmVxdWVzdCl7aWYoIWRhKXRocm93XCJDYW5ub3QgZG8gc3luY2hyb25vdXMgYmluYXJ5IFhIUnMgb3V0c2lkZSB3ZWJ3b3JrZXJzIGluIG1vZGVybiBicm93c2Vycy4gVXNlIC0tZW1iZWQtZmlsZSBvciAtLXByZWxvYWQtZmlsZSBpbiBlbWNjXCI7Zz1uZXcgbTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZyxcblwibGVuZ3RoXCIse2dldDpmdW5jdGlvbigpe3RoaXMuQWF8fHRoaXMuT2EoKTtyZXR1cm4gdGhpcy5sYn19KTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZyxcImNodW5rU2l6ZVwiLHtnZXQ6ZnVuY3Rpb24oKXt0aGlzLkFhfHx0aGlzLk9hKCk7cmV0dXJuIHRoaXMua2J9fSk7aD12b2lkIDB9ZWxzZSBoPWMsZz12b2lkIDA7dmFyIHQ9RmMoYSxiLGQsZSk7Zz90LmU9ZzpoJiYodC5lPW51bGwsdC51cmw9aCk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJ1c2VkQnl0ZXNcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZS5sZW5ndGh9fSk7dmFyIHI9e307T2JqZWN0LmtleXModC5uKS5mb3JFYWNoKGZ1bmN0aW9uKGEpe3ZhciBiPXQublthXTtyW2FdPWZ1bmN0aW9uKCl7aWYoIUljKHQpKXRocm93IG5ldyBIKEQuTyk7cmV0dXJuIGIuYXBwbHkobnVsbCxhcmd1bWVudHMpfX0pO3IucmVhZD1mdW5jdGlvbihhLGIsYyxkLGUpe2lmKCFJYyh0KSl0aHJvdyBuZXcgSChELk8pO2E9YS5nLmU7aWYoZT49XG5hLmxlbmd0aClyZXR1cm4gMDtkPU1hdGgubWluKGEubGVuZ3RoLWUsZCk7YXNzZXJ0KDA8PWQpO2lmKGEuc2xpY2UpZm9yKHZhciBnPTA7ZzxkO2crKyliW2MrZ109YVtlK2ddO2Vsc2UgZm9yKGc9MDtnPGQ7ZysrKWJbYytnXT1hLmdldChlK2cpO3JldHVybiBkfTt0Lm49cjtyZXR1cm4gdH07Zi5GU19jcmVhdGVMaW5rPWZ1bmN0aW9uKGEsYixjKXthPUUoXCJzdHJpbmdcIj09PXR5cGVvZiBhP2E6UChhKSxiKTtyZXR1cm4gcGMoYyxhKX07Zi5GU19jcmVhdGVEZXZpY2U9SGM7Zi5GU191bmxpbms9cWM7Y2IudW5zaGlmdChmdW5jdGlvbigpe30pO2ViLnB1c2goZnVuY3Rpb24oKXt9KTtpZihlYSl7dmFyIGZzPXJlcXVpcmUoXCJmc1wiKSxUYj1yZXF1aXJlKFwicGF0aFwiKTtMLlJiKCl9V2MoVik7Zi5yZXF1ZXN0RnVsbFNjcmVlbj1mdW5jdGlvbihhLGIsYyl7SWQoYSxiLGMpfTtmLnJlcXVlc3RBbmltYXRpb25GcmFtZT1mdW5jdGlvbihhKXtrZChhKX07XG5mLnNldENhbnZhc1NpemU9ZnVuY3Rpb24oYSxiLGMpe0xkKGYuY2FudmFzLGEsYik7Y3x8U2QoKX07Zi5wYXVzZU1haW5Mb29wPWZ1bmN0aW9uKCl7aGQ9bnVsbDtuZCsrfTtmLnJlc3VtZU1haW5Mb29wPWZ1bmN0aW9uKCl7bmQrKzt2YXIgYT1lZCxiPWZkLGM9Z2Q7Z2Q9bnVsbDtsZChjLDAsITEsbWQsITApO2RkKGEsYik7aGQoKX07Zi5nZXRVc2VyTWVkaWE9ZnVuY3Rpb24oKXt3aW5kb3cuQ3x8KHdpbmRvdy5DPW5hdmlnYXRvci5nZXRVc2VyTWVkaWF8fG5hdmlnYXRvci5tb3pHZXRVc2VyTWVkaWEpO3dpbmRvdy5DKHZvaWQgMCl9O2YuY3JlYXRlQ29udGV4dD1mdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4gRWQoYSxiLGMsZCl9O1dhPWs9bC50YShtYSk7SGE9ITA7WGE9V2ErWmE7WWE9bj1sLnRhKFhhKTthc3NlcnQoWWE8bmEsXCJUT1RBTF9NRU1PUlkgbm90IGJpZyBlbm91Z2ggZm9yIHN0YWNrXCIpO1xudmFyIFVkPXooWzgsMCwxLDAsMiwwLDEsMCwzLDAsMSwwLDIsMCwxLDAsNCwwLDEsMCwyLDAsMSwwLDMsMCwxLDAsMiwwLDEsMCw1LDAsMSwwLDIsMCwxLDAsMywwLDEsMCwyLDAsMSwwLDQsMCwxLDAsMiwwLDEsMCwzLDAsMSwwLDIsMCwxLDAsNiwwLDEsMCwyLDAsMSwwLDMsMCwxLDAsMiwwLDEsMCw0LDAsMSwwLDIsMCwxLDAsMywwLDEsMCwyLDAsMSwwLDUsMCwxLDAsMiwwLDEsMCwzLDAsMSwwLDIsMCwxLDAsNCwwLDEsMCwyLDAsMSwwLDMsMCwxLDAsMiwwLDEsMCw3LDAsMSwwLDIsMCwxLDAsMywwLDEsMCwyLDAsMSwwLDQsMCwxLDAsMiwwLDEsMCwzLDAsMSwwLDIsMCwxLDAsNSwwLDEsMCwyLDAsMSwwLDMsMCwxLDAsMiwwLDEsMCw0LDAsMSwwLDIsMCwxLDAsMywwLDEsMCwyLDAsMSwwLDYsMCwxLDAsMiwwLDEsMCwzLDAsMSwwLDIsMCwxLDAsNCwwLDEsMCwyLDAsMSwwLDMsMCwxLDAsMiwwLDEsMCw1LDAsMSwwLDIsMCwxLDAsMywwLDEsMCwyLDAsMSwwLDQsMCwxLDAsMiwwLFxuMSwwLDMsMCwxLDAsMiwwLDEsMF0sXCJpOFwiLDMpO2YubWI9e01hdGg6TWF0aCxJbnQ4QXJyYXk6SW50OEFycmF5LEludDE2QXJyYXk6SW50MTZBcnJheSxJbnQzMkFycmF5OkludDMyQXJyYXksVWludDhBcnJheTpVaW50OEFycmF5LFVpbnQxNkFycmF5OlVpbnQxNkFycmF5LFVpbnQzMkFycmF5OlVpbnQzMkFycmF5LEZsb2F0MzJBcnJheTpGbG9hdDMyQXJyYXksRmxvYXQ2NEFycmF5OkZsb2F0NjRBcnJheSxOYU46TmFOLEluZmluaXR5OkluZmluaXR5fTtcbmYubmI9e2Fib3J0OnAsYXNzZXJ0OmFzc2VydCxpbnZva2VfaWlpaTpmdW5jdGlvbihhLGIsYyxkKXt0cnl7cmV0dXJuIGYuZHluQ2FsbF9paWlpKGEsYixjLGQpfWNhdGNoKGUpe2lmKFwibnVtYmVyXCIhPT10eXBlb2YgZSYmXCJsb25nam1wXCIhPT1lKXRocm93IGU7Vy5zZXRUaHJldygxLDApfX0sanNDYWxsX2lpaWk6ZnVuY3Rpb24oYSxiLGMsZCl7cmV0dXJuIGwuQVthXShiLGMsZCl9LGludm9rZV9pOmZ1bmN0aW9uKGEpe3RyeXtyZXR1cm4gZi5keW5DYWxsX2koYSl9Y2F0Y2goYil7aWYoXCJudW1iZXJcIiE9PXR5cGVvZiBiJiZcImxvbmdqbXBcIiE9PWIpdGhyb3cgYjtXLnNldFRocmV3KDEsMCl9fSxqc0NhbGxfaTpmdW5jdGlvbihhKXtyZXR1cm4gbC5BW2FdKCl9LGludm9rZV92aTpmdW5jdGlvbihhLGIpe3RyeXtmLmR5bkNhbGxfdmkoYSxiKX1jYXRjaChjKXtpZihcIm51bWJlclwiIT09dHlwZW9mIGMmJlwibG9uZ2ptcFwiIT09Yyl0aHJvdyBjO1cuc2V0VGhyZXcoMSwwKX19LGpzQ2FsbF92aTpmdW5jdGlvbihhLFxuYil7bC5BW2FdKGIpfSxpbnZva2VfdmlpOmZ1bmN0aW9uKGEsYixjKXt0cnl7Zi5keW5DYWxsX3ZpaShhLGIsYyl9Y2F0Y2goZCl7aWYoXCJudW1iZXJcIiE9PXR5cGVvZiBkJiZcImxvbmdqbXBcIiE9PWQpdGhyb3cgZDtXLnNldFRocmV3KDEsMCl9fSxqc0NhbGxfdmlpOmZ1bmN0aW9uKGEsYixjKXtsLkFbYV0oYixjKX0saW52b2tlX2lpaWlpaWk6ZnVuY3Rpb24oYSxiLGMsZCxlLGcsaCl7dHJ5e3JldHVybiBmLmR5bkNhbGxfaWlpaWlpaShhLGIsYyxkLGUsZyxoKX1jYXRjaChtKXtpZihcIm51bWJlclwiIT09dHlwZW9mIG0mJlwibG9uZ2ptcFwiIT09bSl0aHJvdyBtO1cuc2V0VGhyZXcoMSwwKX19LGpzQ2FsbF9paWlpaWlpOmZ1bmN0aW9uKGEsYixjLGQsZSxnLGgpe3JldHVybiBsLkFbYV0oYixjLGQsZSxnLGgpfSxpbnZva2VfaWk6ZnVuY3Rpb24oYSxiKXt0cnl7cmV0dXJuIGYuZHluQ2FsbF9paShhLGIpfWNhdGNoKGMpe2lmKFwibnVtYmVyXCIhPT10eXBlb2YgYyYmXCJsb25nam1wXCIhPT1jKXRocm93IGM7XG5XLnNldFRocmV3KDEsMCl9fSxqc0NhbGxfaWk6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbC5BW2FdKGIpfSxpbnZva2VfdmlpaTpmdW5jdGlvbihhLGIsYyxkKXt0cnl7Zi5keW5DYWxsX3ZpaWkoYSxiLGMsZCl9Y2F0Y2goZSl7aWYoXCJudW1iZXJcIiE9PXR5cGVvZiBlJiZcImxvbmdqbXBcIiE9PWUpdGhyb3cgZTtXLnNldFRocmV3KDEsMCl9fSxqc0NhbGxfdmlpaTpmdW5jdGlvbihhLGIsYyxkKXtsLkFbYV0oYixjLGQpfSxpbnZva2VfdjpmdW5jdGlvbihhKXt0cnl7Zi5keW5DYWxsX3YoYSl9Y2F0Y2goYil7aWYoXCJudW1iZXJcIiE9PXR5cGVvZiBiJiZcImxvbmdqbXBcIiE9PWIpdGhyb3cgYjtXLnNldFRocmV3KDEsMCl9fSxqc0NhbGxfdjpmdW5jdGlvbihhKXtsLkFbYV0oKX0saW52b2tlX2lpaWlpOmZ1bmN0aW9uKGEsYixjLGQsZSl7dHJ5e3JldHVybiBmLmR5bkNhbGxfaWlpaWkoYSxiLGMsZCxlKX1jYXRjaChnKXtpZihcIm51bWJlclwiIT09dHlwZW9mIGcmJlwibG9uZ2ptcFwiIT09Zyl0aHJvdyBnO1xuVy5zZXRUaHJldygxLDApfX0sanNDYWxsX2lpaWlpOmZ1bmN0aW9uKGEsYixjLGQsZSl7cmV0dXJuIGwuQVthXShiLGMsZCxlKX0saW52b2tlX3ZpaWlpaWk6ZnVuY3Rpb24oYSxiLGMsZCxlLGcsaCl7dHJ5e2YuZHluQ2FsbF92aWlpaWlpKGEsYixjLGQsZSxnLGgpfWNhdGNoKG0pe2lmKFwibnVtYmVyXCIhPT10eXBlb2YgbSYmXCJsb25nam1wXCIhPT1tKXRocm93IG07Vy5zZXRUaHJldygxLDApfX0sanNDYWxsX3ZpaWlpaWk6ZnVuY3Rpb24oYSxiLGMsZCxlLGcsaCl7bC5BW2FdKGIsYyxkLGUsZyxoKX0saW52b2tlX2lpaTpmdW5jdGlvbihhLGIsYyl7dHJ5e3JldHVybiBmLmR5bkNhbGxfaWlpKGEsYixjKX1jYXRjaChkKXtpZihcIm51bWJlclwiIT09dHlwZW9mIGQmJlwibG9uZ2ptcFwiIT09ZCl0aHJvdyBkO1cuc2V0VGhyZXcoMSwwKX19LGpzQ2FsbF9paWk6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBsLkFbYV0oYixjKX0saW52b2tlX2lpaWlpaTpmdW5jdGlvbihhLGIsYyxkLGUsZyl7dHJ5e3JldHVybiBmLmR5bkNhbGxfaWlpaWlpKGEsXG5iLGMsZCxlLGcpfWNhdGNoKGgpe2lmKFwibnVtYmVyXCIhPT10eXBlb2YgaCYmXCJsb25nam1wXCIhPT1oKXRocm93IGg7Vy5zZXRUaHJldygxLDApfX0sanNDYWxsX2lpaWlpaTpmdW5jdGlvbihhLGIsYyxkLGUsZyl7cmV0dXJuIGwuQVthXShiLGMsZCxlLGcpfSxpbnZva2VfdmlpaWk6ZnVuY3Rpb24oYSxiLGMsZCxlKXt0cnl7Zi5keW5DYWxsX3ZpaWlpKGEsYixjLGQsZSl9Y2F0Y2goZyl7aWYoXCJudW1iZXJcIiE9PXR5cGVvZiBnJiZcImxvbmdqbXBcIiE9PWcpdGhyb3cgZztXLnNldFRocmV3KDEsMCl9fSxqc0NhbGxfdmlpaWk6ZnVuY3Rpb24oYSxiLGMsZCxlKXtsLkFbYV0oYixjLGQsZSl9LF9wdGhyZWFkX2NsZWFudXBfcG9wOmZ1bmN0aW9uKCl7YXNzZXJ0KFVjLmxldmVsPT1lYi5sZW5ndGgsXCJjYW5ub3QgcG9wIGlmIHNvbWV0aGluZyBlbHNlIGFkZGVkIG1lYW53aGlsZSFcIik7ZWIucG9wKCk7VWMubGV2ZWw9ZWIubGVuZ3RofSxfX19zeXNjYWxsODU6ZnVuY3Rpb24oYSxiKXtTPWI7XG50cnl7dmFyIGM9VSgpLGQ9VCgpLGU7dmFyIGc9VCgpO2lmKDA+PWcpZT0tRC5wO2Vsc2V7dmFyIGg9WmIoYyksaD1oLnNsaWNlKDAsTWF0aC5tYXgoMCxnKSk7d2EoaCxkLCEwKTtlPWgubGVuZ3RofXJldHVybiBlfWNhdGNoKG0pe3JldHVyblwidW5kZWZpbmVkXCIhPT10eXBlb2YgUiYmbSBpbnN0YW5jZW9mIEh8fHAobSksLW0ub319LF9zaW46amIsX2V4cDpwYixfdXRpbWVzOmZ1bmN0aW9uKGEsYil7dmFyIGM7Yj8oYz0xRTMqd1tiKzg+PjJdLGMrPXdbYisxMj4+Ml0vMUUzKTpjPURhdGUubm93KCk7YT1xKGEpO3RyeXt2YXIgZD1jLGU9TyhhLHtROiEwfSkuZztlLmsuQihlLHt0aW1lc3RhbXA6TWF0aC5tYXgoZCxjKX0pO3JldHVybiAwfWNhdGNoKGcpe2lmKCEoZyBpbnN0YW5jZW9mIEgpKXRocm93IGcrXCIgOiBcIitRYSgpO0NiKGcubyk7cmV0dXJuLTF9fSxfbGx2bV9wb3dfZjY0OnNiLF9hY29zOmxiLF9fX3N5c2NhbGw1NDpmdW5jdGlvbihhLGIpe1M9Yjt0cnl7dmFyIGM9TGMoKSxcbmQ9VCgpO3N3aXRjaChkKXtjYXNlIDIxNTA1OnJldHVybiBjLnR0eT8wOi1ELiQ7Y2FzZSAyMTUwNjpyZXR1cm4gYy50dHk/MDotRC4kO2Nhc2UgMjE1MTk6aWYoIWMudHR5KXJldHVybi1ELiQ7dmFyIGU9VCgpO3JldHVybiB3W2U+PjJdPTA7Y2FzZSAyMTUyMDpyZXR1cm4gYy50dHk/LUQucDotRC4kO2Nhc2UgMjE1MzE6ZT1UKCk7aWYoIWMubi5EYil0aHJvdyBuZXcgSChELiQpO3JldHVybiBjLm4uRGIoYyxkLGUpO2RlZmF1bHQ6cChcImJhZCBpb2N0bCBzeXNjYWxsIFwiK2QpfX1jYXRjaChnKXtyZXR1cm5cInVuZGVmaW5lZFwiIT09dHlwZW9mIFImJmcgaW5zdGFuY2VvZiBIfHxwKGcpLC1nLm99fSxfcHRocmVhZF9jbGVhbnVwX3B1c2g6VWMsX2Fib3J0OmZ1bmN0aW9uKCl7Zi5hYm9ydCgpfSxfX19zeXNjYWxsNDA6ZnVuY3Rpb24oYSxiKXtTPWI7dHJ5e3ZhciBjPVUoKSxkPU8oYyx7cGFyZW50OiEwfSkuZyxlPUdiKGMpLGc9U2IoZCxlKSxoPWdjKGQsZSwhMCk7aWYoaCl0aHJvdyBuZXcgSChoKTtcbmlmKCFkLmsucm1kaXIpdGhyb3cgbmV3IEgoRC5IKTtpZihnLlUpdGhyb3cgbmV3IEgoRC5aKTt0cnl7Ti53aWxsRGVsZXRlUGF0aCYmTi53aWxsRGVsZXRlUGF0aChjKX1jYXRjaChtKXtjb25zb2xlLmxvZyhcIkZTLnRyYWNraW5nRGVsZWdhdGVbJ3dpbGxEZWxldGVQYXRoJ10oJ1wiK2MrXCInKSB0aHJldyBhbiBleGNlcHRpb246IFwiK20ubWVzc2FnZSl9ZC5rLnJtZGlyKGQsZSk7YmMoZyk7dHJ5e2lmKE4ub25EZWxldGVQYXRoKU4ub25EZWxldGVQYXRoKGMpfWNhdGNoKHQpe2NvbnNvbGUubG9nKFwiRlMudHJhY2tpbmdEZWxlZ2F0ZVsnb25EZWxldGVQYXRoJ10oJ1wiK2MrXCInKSB0aHJldyBhbiBleGNlcHRpb246IFwiK3QubWVzc2FnZSl9cmV0dXJuIDB9Y2F0Y2gocil7cmV0dXJuXCJ1bmRlZmluZWRcIiE9PXR5cGVvZiBSJiZyIGluc3RhbmNlb2YgSHx8cChyKSwtci5vfX0sX19fc3lzY2FsbDExODpmdW5jdGlvbihhLGIpe1M9Yjt0cnl7cmV0dXJuIExjKCksMH1jYXRjaChjKXtyZXR1cm5cInVuZGVmaW5lZFwiIT09XG50eXBlb2YgUiYmYyBpbnN0YW5jZW9mIEh8fHAoYyksLWMub319LF9fX3NldEVyck5vOkNiLF9fX3N5c2NhbGwyMDpmdW5jdGlvbihhLGIpe1M9YjtyZXR1cm4gNDJ9LF9fX3N5c2NhbGwxODM6ZnVuY3Rpb24oYSxiKXtTPWI7dHJ5e3ZhciBjPVQoKSxkPVQoKTtpZigwPT09ZClyZXR1cm4tRC5wO2lmKDI+ZClyZXR1cm4tRC5mYjtLYShcIi9cIixjKTtyZXR1cm4gY31jYXRjaChlKXtyZXR1cm5cInVuZGVmaW5lZFwiIT09dHlwZW9mIFImJmUgaW5zdGFuY2VvZiBIfHxwKGUpLC1lLm99fSxfX19hc3NlcnRfZmFpbDpmdW5jdGlvbihhLGIsYyxkKXtvYT0hMDt0aHJvd1wiQXNzZXJ0aW9uIGZhaWxlZDogXCIrcShhKStcIiwgYXQ6IFwiK1tiP3EoYik6XCJ1bmtub3duIGZpbGVuYW1lXCIsYyxkP3EoZCk6XCJ1bmtub3duIGZ1bmN0aW9uXCJdK1wiIGF0IFwiK1FhKCk7fSxfdXNsZWVwOk1jLF9hc2luOm1iLF9fX2J1aWxkRW52aXJvbm1lbnQ6V2MsX19fc3lzY2FsbDIwMjokYyxfX19zeXNjYWxsOTE6ZnVuY3Rpb24oYSxcbmIpe1M9Yjt0cnl7dmFyIGM9VCgpLGQ9VCgpLGU9SmNbY107aWYoIWUpcmV0dXJuIDA7aWYoZD09PWUuSGIpe3ZhciBnPU1bZS5mZF0saD1lLmZsYWdzLG09bmV3IFVpbnQ4QXJyYXkoQS5zdWJhcnJheShjLGMrZCkpO2cmJmcubi5wYSYmZy5uLnBhKGcsbSwwLGQsaCk7SmNbY109bnVsbDtlLnVhJiZQYShlLkliKX1yZXR1cm4gMH1jYXRjaCh0KXtyZXR1cm5cInVuZGVmaW5lZFwiIT09dHlwZW9mIFImJnQgaW5zdGFuY2VvZiBIfHxwKHQpLC10Lm99fSxfY29zOmliLF9fX3N5c2NhbGwzOTpmdW5jdGlvbihhLGIpe1M9Yjt0cnl7dmFyIGM9VSgpLGQ9VCgpLGM9RWIoYyk7XCIvXCI9PT1jW2MubGVuZ3RoLTFdJiYoYz1jLnN1YnN0cigwLGMubGVuZ3RoLTEpKTtRKGMsZCk7cmV0dXJuIDB9Y2F0Y2goZSl7cmV0dXJuXCJ1bmRlZmluZWRcIiE9PXR5cGVvZiBSJiZlIGluc3RhbmNlb2YgSHx8cChlKSwtZS5vfX0sX2xvY2FsdGltZV9yOlNjLF90enNldDpSYyxfZW1zY3JpcHRlbl9zZXRfbWFpbl9sb29wX3RpbWluZzpkZCxcbl9zYnJrOklhLF9fX3N5c2NhbGwxOTI6ZnVuY3Rpb24oYSxiKXtTPWI7dHJ5e3ZhciBjPVQoKSxkPVQoKSxlPVQoKSxnPVQoKSxoPVQoKSxtPVQoKSxtPW08PDEyLHQscj0hMTtpZigtMT09PWgpe3Q9R2EoZCk7aWYoIXQpcmV0dXJuLUQuSWE7YWQodCwwLGQpO3I9ITB9ZWxzZXt2YXIgeD1NW2hdO2lmKCF4KXJldHVybi1ELkw7dmFyIHYsRz1BO2lmKDE9PT0oeC5mbGFncyYyMDk3MTU1KSl0aHJvdyBuZXcgSChELlkpO2lmKCF4Lm4ub2EpdGhyb3cgbmV3IEgoRC5oYSk7dj14Lm4ub2EoeCxHLGMsZCxtLGUsZyk7dD12LktiO3I9di51YX1KY1t0XT17SWI6dCxIYjpkLHVhOnIsZmQ6aCxmbGFnczpnfTtyZXR1cm4gdH1jYXRjaChJKXtyZXR1cm5cInVuZGVmaW5lZFwiIT09dHlwZW9mIFImJkkgaW5zdGFuY2VvZiBIfHxwKEkpLC1JLm99fSxfX19zeXNjYWxsMTk3OmZ1bmN0aW9uKGEsYil7Uz1iO3RyeXt2YXIgYz1MYygpLGQ9VCgpO3JldHVybiBLYyhyYyxjLnBhdGgsZCl9Y2F0Y2goZSl7cmV0dXJuXCJ1bmRlZmluZWRcIiE9PVxudHlwZW9mIFImJmUgaW5zdGFuY2VvZiBIfHxwKGUpLC1lLm99fSxfX19zeXNjYWxsMTk2OmZ1bmN0aW9uKGEsYil7Uz1iO3RyeXt2YXIgYz1VKCksZD1UKCk7cmV0dXJuIEtjKHNjLGMsZCl9Y2F0Y2goZSl7cmV0dXJuXCJ1bmRlZmluZWRcIiE9PXR5cGVvZiBSJiZlIGluc3RhbmNlb2YgSHx8cChlKSwtZS5vfX0sX19fc3lzY2FsbDE5NTpmdW5jdGlvbihhLGIpe1M9Yjt0cnl7dmFyIGM9VSgpLGQ9VCgpO3JldHVybiBLYyhyYyxjLGQpfWNhdGNoKGUpe3JldHVyblwidW5kZWZpbmVkXCIhPT10eXBlb2YgUiYmZSBpbnN0YW5jZW9mIEh8fHAoZSksLWUub319LF9fX3N5c2NhbGwxOTQ6ZnVuY3Rpb24oYSxiKXtTPWI7dHJ5e3ZhciBjPVQoKTthc3NlcnQoMD09PVQoKSk7dmFyIGQ9VCgpLGU9VCgpOzA8PWQ/YXNzZXJ0KDA9PT1lKTphc3NlcnQoLTE9PT1lKTt2YXIgZz1NW2NdO2lmKCFnKXRocm93IG5ldyBIKEQuTCk7aWYoMD09PShnLmZsYWdzJjIwOTcxNTUpKXRocm93IG5ldyBIKEQucCk7dmMoZy5nLFxuZCk7cmV0dXJuIDB9Y2F0Y2goaCl7cmV0dXJuXCJ1bmRlZmluZWRcIiE9PXR5cGVvZiBSJiZoIGluc3RhbmNlb2YgSHx8cChoKSwtaC5vfX0sX19fc3lzY2FsbDIxMjpmdW5jdGlvbihhLGIpe1M9Yjt0cnl7dmFyIGM9VSgpO1QoKTtUKCk7dWMoYyk7cmV0dXJuIDB9Y2F0Y2goZCl7cmV0dXJuXCJ1bmRlZmluZWRcIiE9PXR5cGVvZiBSJiZkIGluc3RhbmNlb2YgSHx8cChkKSwtZC5vfX0sX3N5c2NvbmY6ZnVuY3Rpb24oYSl7c3dpdGNoKGEpe2Nhc2UgMzA6cmV0dXJuIDQwOTY7Y2FzZSA4NTpyZXR1cm4gJGEvNDA5NjtjYXNlIDEzMjpjYXNlIDEzMzpjYXNlIDEyOmNhc2UgMTM3OmNhc2UgMTM4OmNhc2UgMTU6Y2FzZSAyMzU6Y2FzZSAxNjpjYXNlIDE3OmNhc2UgMTg6Y2FzZSAxOTpjYXNlIDIwOmNhc2UgMTQ5OmNhc2UgMTM6Y2FzZSAxMDpjYXNlIDIzNjpjYXNlIDE1MzpjYXNlIDk6Y2FzZSAyMTpjYXNlIDIyOmNhc2UgMTU5OmNhc2UgMTU0OmNhc2UgMTQ6Y2FzZSA3NzpjYXNlIDc4OmNhc2UgMTM5OmNhc2UgODA6Y2FzZSA4MTpjYXNlIDgyOmNhc2UgNjg6Y2FzZSA2NzpjYXNlIDE2NDpjYXNlIDExOmNhc2UgMjk6Y2FzZSA0NzpjYXNlIDQ4OmNhc2UgOTU6Y2FzZSA1MjpjYXNlIDUxOmNhc2UgNDY6cmV0dXJuIDIwMDgwOTtcbmNhc2UgNzk6cmV0dXJuIDA7Y2FzZSAyNzpjYXNlIDI0NjpjYXNlIDEyNzpjYXNlIDEyODpjYXNlIDIzOmNhc2UgMjQ6Y2FzZSAxNjA6Y2FzZSAxNjE6Y2FzZSAxODE6Y2FzZSAxODI6Y2FzZSAyNDI6Y2FzZSAxODM6Y2FzZSAxODQ6Y2FzZSAyNDM6Y2FzZSAyNDQ6Y2FzZSAyNDU6Y2FzZSAxNjU6Y2FzZSAxNzg6Y2FzZSAxNzk6Y2FzZSA0OTpjYXNlIDUwOmNhc2UgMTY4OmNhc2UgMTY5OmNhc2UgMTc1OmNhc2UgMTcwOmNhc2UgMTcxOmNhc2UgMTcyOmNhc2UgOTc6Y2FzZSA3NjpjYXNlIDMyOmNhc2UgMTczOmNhc2UgMzU6cmV0dXJuLTE7Y2FzZSAxNzY6Y2FzZSAxNzc6Y2FzZSA3OmNhc2UgMTU1OmNhc2UgODpjYXNlIDE1NzpjYXNlIDEyNTpjYXNlIDEyNjpjYXNlIDkyOmNhc2UgOTM6Y2FzZSAxMjk6Y2FzZSAxMzA6Y2FzZSAxMzE6Y2FzZSA5NDpjYXNlIDkxOnJldHVybiAxO2Nhc2UgNzQ6Y2FzZSA2MDpjYXNlIDY5OmNhc2UgNzA6Y2FzZSA0OnJldHVybiAxMDI0O2Nhc2UgMzE6Y2FzZSA0MjpjYXNlIDcyOnJldHVybiAzMjtcbmNhc2UgODc6Y2FzZSAyNjpjYXNlIDMzOnJldHVybiAyMTQ3NDgzNjQ3O2Nhc2UgMzQ6Y2FzZSAxOnJldHVybiA0NzgzOTtjYXNlIDM4OmNhc2UgMzY6cmV0dXJuIDk5O2Nhc2UgNDM6Y2FzZSAzNzpyZXR1cm4gMjA0ODtjYXNlIDA6cmV0dXJuIDIwOTcxNTI7Y2FzZSAzOnJldHVybiA2NTUzNjtjYXNlIDI4OnJldHVybiAzMjc2ODtjYXNlIDQ0OnJldHVybiAzMjc2NztjYXNlIDc1OnJldHVybiAxNjM4NDtjYXNlIDM5OnJldHVybiAxRTM7Y2FzZSA4OTpyZXR1cm4gNzAwO2Nhc2UgNzE6cmV0dXJuIDI1NjtjYXNlIDQwOnJldHVybiAyNTU7Y2FzZSAyOnJldHVybiAxMDA7Y2FzZSAxODA6cmV0dXJuIDY0O2Nhc2UgMjU6cmV0dXJuIDIwO2Nhc2UgNTpyZXR1cm4gMTY7Y2FzZSA2OnJldHVybiA2O2Nhc2UgNzM6cmV0dXJuIDQ7Y2FzZSA4NDpyZXR1cm5cIm9iamVjdFwiPT09dHlwZW9mIG5hdmlnYXRvcj9uYXZpZ2F0b3IuaGFyZHdhcmVDb25jdXJyZW5jeXx8MToxfUNiKEQucCk7cmV0dXJuLTF9LFxuX19fc3lzY2FsbDk0OmZ1bmN0aW9uKGEsYil7Uz1iO3RyeXt2YXIgYz1UKCksZD1UKCksZT1NW2NdO2lmKCFlKXRocm93IG5ldyBIKEQuTCk7dGMoZS5nLGQpO3JldHVybiAwfWNhdGNoKGcpe3JldHVyblwidW5kZWZpbmVkXCIhPT10eXBlb2YgUiYmZyBpbnN0YW5jZW9mIEh8fHAoZyksLWcub319LF9uYW5vc2xlZXA6ZnVuY3Rpb24oYSxiKXt2YXIgYz13W2E+PjJdLGQ9d1thKzQ+PjJdOzAhPT1iJiYod1tiPj4yXT0wLHdbYis0Pj4yXT0wKTtyZXR1cm4gTWMoMUU2KmMrZC8xRTMpfSxfZW1zY3JpcHRlbl9tZW1jcHlfYmlnOmZ1bmN0aW9uKGEsYixjKXtBLnNldChBLnN1YmFycmF5KGIsYitjKSxhKTtyZXR1cm4gYX0sX19fc3lzY2FsbDIyMTpmdW5jdGlvbihhLGIpe1M9Yjt0cnl7dmFyIGM9TGMoKTtzd2l0Y2goVCgpKXtjYXNlIDA6dmFyIGQ9VCgpO3JldHVybiAwPmQ/LUQucDp3YyhjLnBhdGgsYy5mbGFncywwLGQpLmZkO2Nhc2UgMTpjYXNlIDI6cmV0dXJuIDA7Y2FzZSAzOnJldHVybiBjLmZsYWdzO1xuY2FzZSA0OnJldHVybiBkPVQoKSxjLmZsYWdzfD1kLDA7Y2FzZSAxMjpjYXNlIDEyOnJldHVybiBkPVQoKSx6YVtkKzA+PjFdPTIsMDtjYXNlIDEzOmNhc2UgMTQ6Y2FzZSAxMzpjYXNlIDE0OnJldHVybiAwO2Nhc2UgMTY6Y2FzZSA4OnJldHVybi1ELnA7Y2FzZSA5OnJldHVybiBDYihELnApLC0xO2RlZmF1bHQ6cmV0dXJuLUQucH19Y2F0Y2goZSl7cmV0dXJuXCJ1bmRlZmluZWRcIiE9PXR5cGVvZiBSJiZlIGluc3RhbmNlb2YgSHx8cChlKSwtZS5vfX0sX2Zsb29yOmNkLF9hdGFuOm5iLF9fX3N5c2NhbGwyMDE6ZnVuY3Rpb24oKXtyZXR1cm4gJGMuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxfcHRocmVhZF9zZWxmOmZ1bmN0aW9uKCl7cmV0dXJuIDB9LF9nZXRlbnY6WGMsX19fc3lzY2FsbDMzOmZ1bmN0aW9uKGEsYil7Uz1iO3RyeXt2YXIgYz1VKCksZDt2YXIgZT1UKCk7aWYoZSYtOClkPS1ELnA7ZWxzZXt2YXIgZztnPU8oYyx7UTohMH0pLmc7Yz1cIlwiO2UmNCYmKGMrPVwiclwiKTtlJjImJlxuKGMrPVwid1wiKTtlJjEmJihjKz1cInhcIik7ZD1jJiZjYyhnLGMpPy1ELlk6MH1yZXR1cm4gZH1jYXRjaChoKXtyZXR1cm5cInVuZGVmaW5lZFwiIT09dHlwZW9mIFImJmggaW5zdGFuY2VvZiBIfHxwKGgpLC1oLm99fSxfbG9nOnFiLF9fX3VubG9jazpmdW5jdGlvbigpe30sX19fc3lzY2FsbDE0MDpmdW5jdGlvbihhLGIpe1M9Yjt0cnl7dmFyIGM9TGMoKSxkPVQoKSxlPVQoKSxnPVQoKSxoPVQoKTthc3NlcnQoMD09PWQpO3pjKGMsZSxoKTt3W2c+PjJdPWMucG9zaXRpb247Yy56YSYmMD09PWUmJjA9PT1oJiYoYy56YT1udWxsKTtyZXR1cm4gMH1jYXRjaChtKXtyZXR1cm5cInVuZGVmaW5lZFwiIT09dHlwZW9mIFImJm0gaW5zdGFuY2VvZiBIfHxwKG0pLC1tLm99fSxfX19zeXNjYWxsMTU6ZnVuY3Rpb24oYSxiKXtTPWI7dHJ5e3ZhciBjPVUoKSxkPVQoKTt0YyhjLGQpO3JldHVybiAwfWNhdGNoKGUpe3JldHVyblwidW5kZWZpbmVkXCIhPT10eXBlb2YgUiYmZSBpbnN0YW5jZW9mIEh8fHAoZSksLWUub319LFxuX2Vtc2NyaXB0ZW5fc2V0X21haW5fbG9vcDpsZCxfX19zeXNjYWxsMTA6ZnVuY3Rpb24oYSxiKXtTPWI7dHJ5e3ZhciBjPVUoKTtxYyhjKTtyZXR1cm4gMH1jYXRjaChkKXtyZXR1cm5cInVuZGVmaW5lZFwiIT09dHlwZW9mIFImJmQgaW5zdGFuY2VvZiBIfHxwKGQpLC1kLm99fSxfdGFuOmtiLF9fX3N5c2NhbGwzOmZ1bmN0aW9uKGEsYil7Uz1iO3RyeXt2YXIgYz1MYygpLGQ9VCgpLGU9VCgpO3JldHVybiBBYyhjLHUsZCxlKX1jYXRjaChnKXtyZXR1cm5cInVuZGVmaW5lZFwiIT09dHlwZW9mIFImJmcgaW5zdGFuY2VvZiBIfHxwKGcpLC1nLm99fSxfX19sb2NrOmZ1bmN0aW9uKCl7fSxfX19zeXNjYWxsNjpmdW5jdGlvbihhLGIpe1M9Yjt0cnl7dmFyIGM9TGMoKTt5YyhjKTtyZXR1cm4gMH1jYXRjaChkKXtyZXR1cm5cInVuZGVmaW5lZFwiIT09dHlwZW9mIFImJmQgaW5zdGFuY2VvZiBIfHxwKGQpLC1kLm99fSxfX19zeXNjYWxsNTpmdW5jdGlvbihhLGIpe1M9Yjt0cnl7dmFyIGM9VSgpLGQ9XG5UKCksZT1UKCk7cmV0dXJuIHdjKGMsZCxlKS5mZH1jYXRjaChnKXtyZXR1cm5cInVuZGVmaW5lZFwiIT09dHlwZW9mIFImJmcgaW5zdGFuY2VvZiBIfHxwKGcpLC1nLm99fSxfX19zeXNjYWxsNDpmdW5jdGlvbihhLGIpe1M9Yjt0cnl7dmFyIGM9TGMoKSxkPVQoKSxlPVQoKTtyZXR1cm4gQmMoYyx1LGQsZSl9Y2F0Y2goZyl7cmV0dXJuXCJ1bmRlZmluZWRcIiE9PXR5cGVvZiBSJiZnIGluc3RhbmNlb2YgSHx8cChnKSwtZy5vfX0sX3RpbWU6ZnVuY3Rpb24oYSl7dmFyIGI9RGF0ZS5ub3coKS8xRTN8MDthJiYod1thPj4yXT1iKTtyZXR1cm4gYn0sX2F0YW4yOm9iLF9nZXR0aW1lb2ZkYXk6ZnVuY3Rpb24oYSl7dmFyIGI9RGF0ZS5ub3coKTt3W2E+PjJdPWIvMUUzfDA7d1thKzQ+PjJdPWIlMUUzKjFFM3wwO3JldHVybiAwfSxfY2VpbDpUZCxfc3FydDpyYixfbG9jYWx0aW1lOmZ1bmN0aW9uKGEpe3JldHVybiBTYyhhLE5jKX0sX19fc3lzY2FsbDIwNzpmdW5jdGlvbihhLGIpe1M9Yjt0cnl7dmFyIGM9XG5UKCk7VCgpO1QoKTt2YXIgZD1NW2NdO2lmKCFkKXRocm93IG5ldyBIKEQuTCk7dWMoZC5nKTtyZXR1cm4gMH1jYXRjaChlKXtyZXR1cm5cInVuZGVmaW5lZFwiIT09dHlwZW9mIFImJmUgaW5zdGFuY2VvZiBIfHxwKGUpLC1lLm99fSxfX19zeXNjYWxsMTQ2OmZ1bmN0aW9uKGEsYil7Uz1iO3RyeXt2YXIgYz1MYygpLGQ9VCgpLGU7YTp7Zm9yKHZhciBnPVQoKSxoPTAsbT0wO208ZzttKyspe3ZhciB0PUJjKGMsdSx3W2QrOCptPj4yXSx3W2QrKDgqbSs0KT4+Ml0sdm9pZCAwKTtpZigwPnQpe2U9LTE7YnJlYWsgYX1oKz10fWU9aH1yZXR1cm4gZX1jYXRjaChyKXtyZXR1cm5cInVuZGVmaW5lZFwiIT09dHlwZW9mIFImJnIgaW5zdGFuY2VvZiBIfHxwKHIpLC1yLm99fSxTVEFDS1RPUDprLFNUQUNLX01BWDpYYSx0ZW1wRG91YmxlUHRyOnliLEFCT1JUOm9hLGN0dHpfaTg6VWR9Oy8vIEVNU0NSSVBURU5fU1RBUlRfQVNNXG5cbnZhciBXPShmdW5jdGlvbihnbG9iYWwsZW52LGJ1ZmZlcikge1xuXCJ1c2UgYXNtXCI7dmFyIGE9bmV3IGdsb2JhbC5JbnQ4QXJyYXkoYnVmZmVyKTt2YXIgYj1uZXcgZ2xvYmFsLkludDE2QXJyYXkoYnVmZmVyKTt2YXIgYz1uZXcgZ2xvYmFsLkludDMyQXJyYXkoYnVmZmVyKTt2YXIgZD1uZXcgZ2xvYmFsLlVpbnQ4QXJyYXkoYnVmZmVyKTt2YXIgZT1uZXcgZ2xvYmFsLlVpbnQxNkFycmF5KGJ1ZmZlcik7dmFyIGY9bmV3IGdsb2JhbC5VaW50MzJBcnJheShidWZmZXIpO3ZhciBnPW5ldyBnbG9iYWwuRmxvYXQzMkFycmF5KGJ1ZmZlcik7dmFyIGg9bmV3IGdsb2JhbC5GbG9hdDY0QXJyYXkoYnVmZmVyKTt2YXIgaT1lbnYuU1RBQ0tUT1B8MDt2YXIgaj1lbnYuU1RBQ0tfTUFYfDA7dmFyIGs9ZW52LnRlbXBEb3VibGVQdHJ8MDt2YXIgbD1lbnYuQUJPUlR8MDt2YXIgbT1lbnYuY3R0el9pOHwwO3ZhciBuPTA7dmFyIG89MDt2YXIgcD0wO3ZhciBxPTA7dmFyIHI9Z2xvYmFsLk5hTixzPWdsb2JhbC5JbmZpbml0eTt2YXIgdD0wLHU9MCx2PTAsdz0wLHg9MC4wLHk9MCx6PTAsQT0wLEI9MC4wO3ZhciBDPTA7dmFyIEQ9MDt2YXIgRT0wO3ZhciBGPTA7dmFyIEc9MDt2YXIgSD0wO3ZhciBJPTA7dmFyIEo9MDt2YXIgSz0wO3ZhciBMPTA7dmFyIE09Z2xvYmFsLk1hdGguZmxvb3I7dmFyIE49Z2xvYmFsLk1hdGguYWJzO3ZhciBPPWdsb2JhbC5NYXRoLnNxcnQ7dmFyIFA9Z2xvYmFsLk1hdGgucG93O3ZhciBRPWdsb2JhbC5NYXRoLmNvczt2YXIgUj1nbG9iYWwuTWF0aC5zaW47dmFyIFM9Z2xvYmFsLk1hdGgudGFuO3ZhciBUPWdsb2JhbC5NYXRoLmFjb3M7dmFyIFU9Z2xvYmFsLk1hdGguYXNpbjt2YXIgVj1nbG9iYWwuTWF0aC5hdGFuO3ZhciBXPWdsb2JhbC5NYXRoLmF0YW4yO3ZhciBYPWdsb2JhbC5NYXRoLmV4cDt2YXIgWT1nbG9iYWwuTWF0aC5sb2c7dmFyIFo9Z2xvYmFsLk1hdGguY2VpbDt2YXIgXz1nbG9iYWwuTWF0aC5pbXVsO3ZhciAkPWdsb2JhbC5NYXRoLm1pbjt2YXIgYWE9Z2xvYmFsLk1hdGguY2x6MzI7dmFyIGJhPWVudi5hYm9ydDt2YXIgY2E9ZW52LmFzc2VydDt2YXIgZGE9ZW52Lmludm9rZV9paWlpO3ZhciBlYT1lbnYuanNDYWxsX2lpaWk7dmFyIGZhPWVudi5pbnZva2VfaTt2YXIgZ2E9ZW52LmpzQ2FsbF9pO3ZhciBoYT1lbnYuaW52b2tlX3ZpO3ZhciBpYT1lbnYuanNDYWxsX3ZpO3ZhciBqYT1lbnYuaW52b2tlX3ZpaTt2YXIga2E9ZW52LmpzQ2FsbF92aWk7dmFyIGxhPWVudi5pbnZva2VfaWlpaWlpaTt2YXIgbWE9ZW52LmpzQ2FsbF9paWlpaWlpO3ZhciBuYT1lbnYuaW52b2tlX2lpO3ZhciBvYT1lbnYuanNDYWxsX2lpO3ZhciBwYT1lbnYuaW52b2tlX3ZpaWk7dmFyIHFhPWVudi5qc0NhbGxfdmlpaTt2YXIgcmE9ZW52Lmludm9rZV92O3ZhciBzYT1lbnYuanNDYWxsX3Y7dmFyIHRhPWVudi5pbnZva2VfaWlpaWk7dmFyIHVhPWVudi5qc0NhbGxfaWlpaWk7dmFyIHZhPWVudi5pbnZva2VfdmlpaWlpaTt2YXIgd2E9ZW52LmpzQ2FsbF92aWlpaWlpO3ZhciB4YT1lbnYuaW52b2tlX2lpaTt2YXIgeWE9ZW52LmpzQ2FsbF9paWk7dmFyIHphPWVudi5pbnZva2VfaWlpaWlpO3ZhciBBYT1lbnYuanNDYWxsX2lpaWlpaTt2YXIgQmE9ZW52Lmludm9rZV92aWlpaTt2YXIgQ2E9ZW52LmpzQ2FsbF92aWlpaTt2YXIgRGE9ZW52Ll9wdGhyZWFkX2NsZWFudXBfcG9wO3ZhciBFYT1lbnYuX19fc3lzY2FsbDg1O3ZhciBGYT1lbnYuX3Npbjt2YXIgR2E9ZW52Ll9leHA7dmFyIEhhPWVudi5fdXRpbWVzO3ZhciBJYT1lbnYuX2xsdm1fcG93X2Y2NDt2YXIgSmE9ZW52Ll9hY29zO3ZhciBLYT1lbnYuX19fc3lzY2FsbDU0O3ZhciBMYT1lbnYuX3B0aHJlYWRfY2xlYW51cF9wdXNoO3ZhciBNYT1lbnYuX2Fib3J0O3ZhciBOYT1lbnYuX19fc3lzY2FsbDQwO3ZhciBPYT1lbnYuX19fc3lzY2FsbDExODt2YXIgUGE9ZW52Ll9fX3NldEVyck5vO3ZhciBRYT1lbnYuX19fc3lzY2FsbDIwO3ZhciBSYT1lbnYuX19fc3lzY2FsbDE4Mzt2YXIgU2E9ZW52Ll9fX2Fzc2VydF9mYWlsO3ZhciBUYT1lbnYuX3VzbGVlcDt2YXIgVWE9ZW52Ll9hc2luO3ZhciBWYT1lbnYuX19fYnVpbGRFbnZpcm9ubWVudDt2YXIgV2E9ZW52Ll9fX3N5c2NhbGwyMDI7dmFyIFhhPWVudi5fX19zeXNjYWxsOTE7dmFyIFlhPWVudi5fY29zO3ZhciBaYT1lbnYuX19fc3lzY2FsbDM5O3ZhciBfYT1lbnYuX2xvY2FsdGltZV9yO3ZhciAkYT1lbnYuX3R6c2V0O3ZhciBhYj1lbnYuX2Vtc2NyaXB0ZW5fc2V0X21haW5fbG9vcF90aW1pbmc7dmFyIGJiPWVudi5fc2Jyazt2YXIgY2I9ZW52Ll9fX3N5c2NhbGwxOTI7dmFyIGRiPWVudi5fX19zeXNjYWxsMTk3O3ZhciBlYj1lbnYuX19fc3lzY2FsbDE5Njt2YXIgZmI9ZW52Ll9fX3N5c2NhbGwxOTU7dmFyIGdiPWVudi5fX19zeXNjYWxsMTk0O3ZhciBoYj1lbnYuX19fc3lzY2FsbDIxMjt2YXIgaWI9ZW52Ll9zeXNjb25mO3ZhciBqYj1lbnYuX19fc3lzY2FsbDk0O3ZhciBrYj1lbnYuX25hbm9zbGVlcDt2YXIgbGI9ZW52Ll9lbXNjcmlwdGVuX21lbWNweV9iaWc7dmFyIG1iPWVudi5fX19zeXNjYWxsMjIxO3ZhciBuYj1lbnYuX2Zsb29yO3ZhciBvYj1lbnYuX2F0YW47dmFyIHBiPWVudi5fX19zeXNjYWxsMjAxO3ZhciBxYj1lbnYuX3B0aHJlYWRfc2VsZjt2YXIgcmI9ZW52Ll9nZXRlbnY7dmFyIHNiPWVudi5fX19zeXNjYWxsMzM7dmFyIHRiPWVudi5fbG9nO3ZhciB1Yj1lbnYuX19fdW5sb2NrO3ZhciB2Yj1lbnYuX19fc3lzY2FsbDE0MDt2YXIgd2I9ZW52Ll9fX3N5c2NhbGwxNTt2YXIgeGI9ZW52Ll9lbXNjcmlwdGVuX3NldF9tYWluX2xvb3A7dmFyIHliPWVudi5fX19zeXNjYWxsMTA7dmFyIHpiPWVudi5fdGFuO3ZhciBBYj1lbnYuX19fc3lzY2FsbDM7dmFyIEJiPWVudi5fX19sb2NrO3ZhciBDYj1lbnYuX19fc3lzY2FsbDY7dmFyIERiPWVudi5fX19zeXNjYWxsNTt2YXIgRWI9ZW52Ll9fX3N5c2NhbGw0O3ZhciBGYj1lbnYuX3RpbWU7dmFyIEdiPWVudi5fYXRhbjI7dmFyIEhiPWVudi5fZ2V0dGltZW9mZGF5O3ZhciBJYj1lbnYuX2NlaWw7dmFyIEpiPWVudi5fc3FydDt2YXIgS2I9ZW52Ll9sb2NhbHRpbWU7dmFyIExiPWVudi5fX19zeXNjYWxsMjA3O3ZhciBNYj1lbnYuX19fc3lzY2FsbDE0Njt2YXIgTmI9MC4wO1xuLy8gRU1TQ1JJUFRFTl9TVEFSVF9GVU5DU1xuZnVuY3Rpb24ganooYixlKXtiPWJ8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTA7cj1pO2k9aSs0OHwwO2w9cis0NHwwO2Y9cis0MHwwO209ciszNnwwO2o9ciszMnwwO289cisyOHwwO2s9cisyNHwwO249cisyMHwwO2c9cisxNnwwO3A9cisxMnwwO3E9cis4fDA7aD1yO2NbZj4+Ml09YjtjW20+PjJdPWU7aWYoIShjWyhjW20+PjJdfDApKzQ4Pj4yXXwwKSl7Y1tsPj4yXT0wO3E9Y1tsPj4yXXwwO2k9cjtyZXR1cm4gcXwwfWlmKCEoY1soY1ttPj4yXXwwKSs0ND4+Ml18MCkpe2NbbD4+Ml09MDtxPWNbbD4+Ml18MDtpPXI7cmV0dXJuIHF8MH1jW2s+PjJdPWNbbT4+Ml07d2hpbGUoMSl7aWYoIShjW2s+PjJdfDApKWJyZWFrO2lmKChkWyhjW2s+PjJdfDApKzQ+PjBdfDB8MCkhPTExNj8oZFsoY1trPj4yXXwwKSs0Pj4wXXwwfDApIT0xMTk6MClicmVhaztjW2s+PjJdPWNbKGNbaz4+Ml18MCkrNDg+PjJdfWlmKCEoY1trPj4yXXwwKSl7Y1tsPj4yXT0wO3E9Y1tsPj4yXXwwO2k9cjtyZXR1cm4gcXwwfWNbZz4+Ml09Y1soY1soY1ttPj4yXXwwKSs0ND4+Ml18MCkrND4+Ml07Y1tqPj4yXT0oY1tjWyhjW20+PjJdfDApKzQ0Pj4yXT4+Ml18MCktMTt3aGlsZSgxKXtpZigoY1tqPj4yXXwwKTwwKWJyZWFrO2lmKGNbKGNbKGNbZz4+Ml18MCkrKChjW2o+PjJdfDApKjIwfDApPj4yXXwwKSs0Pj4yXSYyNTYpYnJlYWs7Y1tqPj4yXT0oY1tqPj4yXXwwKSstMX1pZigoY1tqPj4yXXwwKTwwKXtjW2w+PjJdPTA7cT1jW2w+PjJdfDA7aT1yO3JldHVybiBxfDB9Y1txPj4yXT1jW2NbZj4+Ml0+PjJdO2Nbbj4+Ml09Y1tjW3E+PjJdPj4yXTtjW28+PjJdPXNoKGNbbj4+Ml18MCw2OCwwKXwwO2lmKCEoY1tvPj4yXXwwKSl7Y1tsPj4yXT0yO3E9Y1tsPj4yXXwwO2k9cjtyZXR1cm4gcXwwfTtjW2g+PjJdPTA7Y1toKzQ+PjJdPTA7Y1twPj4yXT1SdihjW3E+PjJdfDAsMCwwLDAsaCxjW28+PjJdfDAsMCwwKXwwO2lmKCEoY1twPj4yXXwwKSl7Y1tsPj4yXT0yO3E9Y1tsPj4yXXwwO2k9cjtyZXR1cm4gcXwwfWVsc2V7Zj1jW28+PjJdfDA7Zz1jW20+PjJdfDA7aD1mKzY4fDA7ZG97Y1tmPj4yXT1jW2c+PjJdO2Y9Zis0fDA7Zz1nKzR8MH13aGlsZSgoZnwwKTwoaHwwKSk7Y1soY1ttPj4yXXwwKSsyOD4+Ml09Y1twPj4yXTtxPWNbcT4+Ml18MDtxPVR2KHEsMCxXdihjW24+PjJdfDAsMTYwLDApfDApfDA7Y1tjW20+PjJdPj4yXT1xO2FbKGNbbT4+Ml18MCkrND4+MF09MTE5O2NbKGNbbT4+Ml18MCkrMzI+PjJdPTA7Y1soY1tvPj4yXXwwKSszNj4+Ml09MDtjWyhjW28+PjJdfDApKzQwPj4yXT0wO2NbKGNbbz4+Ml18MCkrNDQ+PjJdPTA7Y1soY1ttPj4yXXwwKSs0OD4+Ml09MDtjWyhjW20+PjJdfDApKzUyPj4yXT0wO2NbKGNbbT4+Ml18MCkrNjQ+PjJdPTA7cT0oY1ttPj4yXXwwKSs4fDA7Y1txPj4yXT1jW3E+PjJdJi0yNTc7cT0oY1ttPj4yXXwwKSs4fDA7Y1txPj4yXT1jW3E+PjJdfDY1NTM2O2NbKGNbKGNbbz4+Ml18MCkrNDg+PjJdfDApKzUyPj4yXT1jW28+PjJdO2NbKGNbbz4+Ml18MCkrNTY+PjJdPTA7Y1soY1tvPj4yXXwwKSs2MD4+Ml09MDtjW2w+PjJdPTA7cT1jW2w+PjJdfDA7aT1yO3JldHVybiBxfDB9cmV0dXJuIDB9ZnVuY3Rpb24ga3ooZixnKXtmPWZ8MDtnPWd8MDt2YXIgaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wLEU9MCxGPTAsRz0wLEg9MCxJPTAsSj0wLEs9MCxMPTAsTT0wLE49MCxPPTAsUD0wLFE9MCxSPTAsUz0wLFQ9MCxVPTAsVj0wLFc9MCxYPTAsWT0wO1k9aTtpPWkrMjA4fDA7UT1ZKzU2fDA7UD1ZKzQ4fDA7Tz1ZKzQwfDA7Tj1ZKzI0fDA7Uj1ZKzE2fDA7cD1ZKzh8MDttPVk7cT1ZKzE5NnwwO2g9WSsxOTJ8MDtyPVkrMTg4fDA7Rj1ZKzE4NHwwO3U9WSsxODB8MDt3PVkrMTc2fDA7eD1ZKzE3MnwwO0o9WSsxNjh8MDtBPVkrMTY0fDA7Qz1ZKzE2MHwwO3Q9WSsxNTZ8MDt6PVkrMTUyfDA7Rz1ZKzE0OHwwO0I9WSsxNDR8MDtsPVkrMjAyfDA7bz1ZKzE0MHwwO2s9WSsxMzZ8MDtqPVkrMjAwfDA7cz1ZKzEzMnwwO0U9WSsxMjh8MDtuPVkrMTI0fDA7eT1ZKzEyMHwwO009WSsxMTZ8MDtWPVkrMTEyfDA7ST1ZKzEwOHwwO0g9WSsxMDR8MDtXPVkrMTAwfDA7VT1ZKzk2fDA7dj1ZKzkyfDA7VD1ZKzg4fDA7Uz1ZKzg0fDA7WD1ZKzgwfDA7TD1ZKzcyfDA7RD1ZKzY0fDA7Sz1ZKzYwfDA7Y1toPj4yXT1mO2Nbcj4+Ml09ZztjW0Y+PjJdPWNbY1toPj4yXT4+Ml07Y1t0Pj4yXT1jW2NbRj4+Ml0+PjJdO2JbbD4+MV09Y1soY1tyPj4yXXwwKSs4Pj4yXTtmPShjW3I+PjJdfDApKzh8MDtjW2Y+PjJdPWNbZj4+Ml18NjQ7aWYoYVsoY1t0Pj4yXXwwKSs2OT4+MF18MCl7Y1txPj4yXT0yO1g9Y1txPj4yXXwwO2k9WTtyZXR1cm4gWHwwfWlmKChjWyhjW3I+PjJdfDApKzI4Pj4yXXwwKSE9MD8oZVtsPj4xXSY2NHwwKT09MDowKXtjW0o+PjJdPWNbKGNbcj4+Ml18MCkrMjg+PjJdO2NbQT4+Ml09Y1tjW3I+PjJdPj4yXTtpZigoY1soY1toPj4yXXwwKSsxMj4+Ml18MCk9PTEzMil7bD1jW0Y+PjJdfDA7YncobCxjWyhteihjW3I+PjJdfDApfDApKzY0Pj4yXXwwLDApfSR4KGNbRj4+Ml18MCxjW0o+PjJdfDApO2NbdT4+Ml09MDtjW0M+PjJdPShjW0o+PjJdfDApKzg7YTp3aGlsZSgxKXtpZigoY1t1Pj4yXXwwKT49KGNbY1tKPj4yXT4+Ml18MCkpe2o9Mzg7YnJlYWt9aWYoISgoZFsoY1tDPj4yXXwwKSszNisxPj4wXXwwKT4+PjUmMSkpe2lmKG56KGNbaD4+Ml18MCxjW0M+PjJdfDApfDApe2o9MTI7YnJlYWt9ZG8gaWYoIShjWyhjW0M+PjJdfDApKzE2Pj4yXXwwKSl7aWYoIShjWyhjW0M+PjJdfDApKzg+PjJdfDApKXtjW2s+PjJdPWNbKGNbQz4+Ml18MCkrMjA+PjJdO2lmKHN5KGNbaD4+Ml18MCxjW2s+PjJdfDApfDApe2o9MTY7YnJlYWsgYX1sPXNoKGNbdD4+Ml18MCw3MiwwKXwwO2Nbbz4+Ml09bDtjWyhjW0M+PjJdfDApKzE2Pj4yXT1sO2lmKCEoY1tvPj4yXXwwKSl7aj0xODticmVhayBhfWJbKGNbbz4+Ml18MCkrMzY+PjFdPTE7bD1jW3Q+PjJdfDA7Y1ttPj4yXT1jW28+PjJdO2w9R2gobCwzMDEwOSxtKXwwO2NbY1tvPj4yXT4+Ml09bDt3aGlsZSgxKXtpZighKGNbKGNbaz4+Ml18MCkrNDg+PjJdfDApKWJyZWFrO2Nbaz4+Ml09Y1soY1trPj4yXXwwKSs0OD4+Ml19YnkoY1tGPj4yXXwwLGNbY1trPj4yXT4+Ml18MCwoY1tvPj4yXXwwKSszNHwwLChjW28+PjJdfDApKzR8MCl8MDtiWyhjW28+PjJdfDApKzMyPj4xXT0tMTtiWyhjW28+PjJdfDApKzM4Pj4xXT0yMDA7bD0oY1tvPj4yXXwwKSs0MnwwO2FbbD4+MF09ZFtsPj4wXXwyO2JyZWFrfWw9cHgoY1tGPj4yXXwwLDAsY1tDPj4yXXwwKXwwO2Nbbz4+Ml09bDtjWyhjW0M+PjJdfDApKzE2Pj4yXT1sO2lmKCEoY1tvPj4yXXwwKSl7aj0yNDticmVhayBhfWlmKChlWyhjW28+PjJdfDApKzM2Pj4xXXwwKT09NjU1MzUpe2o9MjY7YnJlYWsgYX1sPShjW28+PjJdfDApKzM2fDA7YltsPj4xXT0oYltsPj4xXXwwKSsxPDwxNj4+MTY7aWYoKGRbKGNbbz4+Ml18MCkrNDI+PjBdJjE2fDApPT0wPyhveihjW0Y+PjJdfDAsY1tDPj4yXXwwKXwwKSE9MDowKXtqPTI5O2JyZWFrIGF9aWYoKGRbKGNbbz4+Ml18MCkrNDI+PjBdJjE2fDApPT0wPyhjWyhjW28+PjJdfDApKzEyPj4yXXwwKT09MDowKWJyZWFrO2lmKFR4KGNbRj4+Ml18MCxjW28+PjJdfDApfDApe2o9MzM7YnJlYWsgYX1sPV94KGNbdD4+Ml18MCxjWyhjW28+PjJdfDApKzEyPj4yXXwwLDApfDA7Y1soY1tDPj4yXXwwKSsyMD4+Ml09bDtiW2o+PjFdPWJbKGNbbz4+Ml18MCkrMzQ+PjFdfDA7YlsoY1tvPj4yXXwwKSszND4+MV09LTE7c3koY1toPj4yXXwwLGNbKGNbQz4+Ml18MCkrMjA+PjJdfDApfDA7YlsoY1tvPj4yXXwwKSszND4+MV09YltqPj4xXXwwfXdoaWxlKDApO2lmKHB6KGNbRj4+Ml18MCxjW0M+PjJdfDApfDApe2o9MzY7YnJlYWt9fWNbdT4+Ml09KGNbdT4+Ml18MCkrMTtjW0M+PjJdPShjW0M+PjJdfDApKzcyfWlmKChqfDApPT0xMil7Y1txPj4yXT0yO1g9Y1txPj4yXXwwO2k9WTtyZXR1cm4gWHwwfWVsc2UgaWYoKGp8MCk9PTE2KXtjW3E+PjJdPTI7WD1jW3E+PjJdfDA7aT1ZO3JldHVybiBYfDB9ZWxzZSBpZigoanwwKT09MTgpe2NbcT4+Ml09MjtYPWNbcT4+Ml18MDtpPVk7cmV0dXJuIFh8MH1lbHNlIGlmKChqfDApPT0yNCl7Y1txPj4yXT0yO1g9Y1txPj4yXXwwO2k9WTtyZXR1cm4gWHwwfWVsc2UgaWYoKGp8MCk9PTI2KXtYPWNbRj4+Ml18MDtjW3A+PjJdPWNbY1tvPj4yXT4+Ml07RWgoWCwzMDEyMixwKTtjWyhjW0M+PjJdfDApKzE2Pj4yXT0wO2NbcT4+Ml09MjtYPWNbcT4+Ml18MDtpPVk7cmV0dXJuIFh8MH1lbHNlIGlmKChqfDApPT0yOSl7Y1txPj4yXT0yO1g9Y1txPj4yXXwwO2k9WTtyZXR1cm4gWHwwfWVsc2UgaWYoKGp8MCk9PTMzKXtjW3E+PjJdPTI7WD1jW3E+PjJdfDA7aT1ZO3JldHVybiBYfDB9ZWxzZSBpZigoanwwKT09MzYpe2NbcT4+Ml09MjtYPWNbcT4+Ml18MDtpPVk7cmV0dXJuIFh8MH1lbHNlIGlmKChqfDApPT0zOCl7aWYoKGRbKGNbdD4+Ml18MCkrNjk+PjBdfDApPT0wPyhxeihjW0Y+PjJdfDAsY1tyPj4yXXwwKXwwKT09MDowKXtjW3g+PjJdPTA7d2hpbGUoMSl7aWYoKGNbeD4+Ml18MCk+PShjW2NbQT4+Ml0+PjJdfDApKWJyZWFrO2Nbej4+Ml09Y1soY1soY1tBPj4yXXwwKSs0Pj4yXXwwKSsoKGNbeD4+Ml18MCkqMjB8MCk+PjJdO2lmKChkW2Nbej4+Ml0+PjBdfDApPT0xNjApYnJlYWs7aWYoKGRbY1t6Pj4yXT4+MF18MCk9PTEyMj8oZFtjWyhjW3o+PjJdfDApKzE2Pj4yXT4+MF18MCk9PTE2MDowKWJyZWFrO2NbeD4+Ml09KGNbeD4+Ml18MCkrMX1pZigoY1t4Pj4yXXwwKTwoY1tjW0E+PjJdPj4yXXwwKSl7Y1tzPj4yXT1jWyhjW0E+PjJdfDApKzQ+PjJdO2NbRT4+Ml09MDtjW24+PjJdPWNbKGNbY1tGPj4yXT4+Ml18MCkrMjQ+PjJdO2lmKGNbbj4+Ml0mNCloPShjW24+PjJdJjY0fDApPT0wO2Vsc2UgaD0wO2NbeT4+Ml09aCYxO2NbeD4+Ml09MDt3aGlsZSgxKXtpZigoY1t4Pj4yXXwwKT49KGNbY1tBPj4yXT4+Ml18MCkpYnJlYWs7Y1t6Pj4yXT1jWyhjW3M+PjJdfDApKygoY1t4Pj4yXXwwKSoyMHwwKT4+Ml07Y1tHPj4yXT1jWyhjW3o+PjJdfDApKzE2Pj4yXTtkbyBpZigoZFtjW3o+PjJdPj4wXXwwKSE9MTYwKXtpZigoZFtjW3o+PjJdPj4wXXwwKT09MTIyPyhkW2NbRz4+Ml0+PjBdfDApPT0xNjA6MCl7aj01ODticmVha31jW0U+PjJdPVR2KGNbRj4+Ml18MCxjW0U+PjJdfDAsY1soY1tzPj4yXXwwKSsoKGNbeD4+Ml18MCkqMjB8MCk+PjJdfDApfDA7aWYoY1tFPj4yXXwwKXtjWyhjWyhjW0U+PjJdfDApKzQ+PjJdfDApKygoKGNbY1tFPj4yXT4+Ml18MCktMXwwKSoyMHwwKSs0Pj4yXT1jWyhjW3M+PjJdfDApKygoY1t4Pj4yXXwwKSoyMHwwKSs0Pj4yXTtjWyhjWyhjW0U+PjJdfDApKzQ+PjJdfDApKygoKGNbY1tFPj4yXT4+Ml18MCktMXwwKSoyMHwwKSs4Pj4yXT1jWyhjW3M+PjJdfDApKygoY1t4Pj4yXXwwKSoyMHwwKSs4Pj4yXTtjWyhjW3M+PjJdfDApKygoY1t4Pj4yXXwwKSoyMHwwKSs0Pj4yXT0wO2NbKGNbcz4+Ml18MCkrKChjW3g+PjJdfDApKjIwfDApKzg+PjJdPTB9Y1soY1tzPj4yXXwwKSsoKGNbeD4+Ml18MCkqMjB8MCk+PjJdPTB9ZWxzZSBqPTU4O3doaWxlKDApO2RvIGlmKChqfDApPT01OCl7aj0wO2NbTT4+Ml09MDtjW1Y+PjJdPTA7aWYoKGRbY1t6Pj4yXT4+MF18MCk9PTEyMiljW1Y+PjJdPWNbKGNbKGNbej4+Ml18MCkrMTI+PjJdfDApKzg+PjJdO2NbdT4+Ml09MDtjW0M+PjJdPShjW0o+PjJdfDApKzg7d2hpbGUoMSl7aWYoKGNbdT4+Ml18MCk+PShjW2NbSj4+Ml0+PjJdfDApKWJyZWFrO2NbST4+Ml09Y1soY1tDPj4yXXwwKSsxNj4+Ml07Y1tIPj4yXT1jWyhjW0M+PjJdfDApKzIwPj4yXTtjW1c+PjJdPWNbKGNbQz4+Ml18MCkrMTI+PjJdO2NbVT4+Ml09MDtpZighKGNbVz4+Ml18MCkpY1tXPj4yXT1jW2NbST4+Ml0+PjJdO2lmKGFbKGNbdD4+Ml18MCkrNjk+PjBdfDApYnJlYWs7aWYoKGNbSD4+Ml18MCkhPTA/KGNbKGNbSD4+Ml18MCkrOD4+Ml0mMjA0OHwwKSE9MDowKWo9NzI7ZWxzZSBqPTY3O2RvIGlmKChqfDApPT02Nyl7aj0wO2NbSD4+Ml09MDtpZigoY1tWPj4yXXwwKSE9MD8oaWcoY1tWPj4yXXwwLGNbVz4+Ml18MCl8MCkhPTA6MClicmVhaztjW3Y+PjJdPUZoKGNbdD4+Ml18MCxjWyhjW0k+PjJdfDApKzY0Pj4yXXwwKXwwO2lmKChjW3Y+PjJdfDApPj0wKWg9Y1soY1soY1t0Pj4yXXwwKSsxNj4+Ml18MCkrKGNbdj4+Ml08PDQpPj4yXXwwO2Vsc2UgaD0yNTQ1MTtjW1U+PjJdPWg7aj03Mn13aGlsZSgwKTtiOmRvIGlmKChqfDApPT03Mil7aj0wO2Nbdz4+Ml09MDt3aGlsZSgxKXtpZigoY1t3Pj4yXXwwKT49KGJbKGNbST4+Ml18MCkrMzQ+PjFdfDApKWJyZWFrIGI7Y1tUPj4yXT1jWyhjWyhjW0k+PjJdfDApKzQ+PjJdfDApKyhjW3c+PjJdPDw0KT4+Ml07aWYoISgoY1tWPj4yXXwwKSE9MCYoY1tIPj4yXXwwKSE9MD8oZnooY1soY1soY1tjW0g+PjJdPj4yXXwwKSs0Pj4yXXwwKSsoKGNbdz4+Ml18MCkqMjB8MCkrOD4+Ml18MCwwLGNbVj4+Ml18MCwwKXwwKT09MDowKSlqPTc2O2RvIGlmKChqfDApPT03Nil7aj0wO2lmKChjWyhjW3I+PjJdfDApKzg+PjJdJjEzMTA3MnwwKT09MD8oZFsoY1soY1tJPj4yXXwwKSs0Pj4yXXwwKSsoY1t3Pj4yXTw8NCkrMTU+PjBdJjJ8MCkhPTA6MClicmVhaztjW00+PjJdPTE7aWYoKGNbdT4+Ml18MCk+MCYoY1tWPj4yXXwwKT09MCl7aWYoKGRbKGNbQz4+Ml18MCkrMzY+PjBdJjR8MCkhPTA/KHJ6KGNbSj4+Ml18MCxjW3U+PjJdfDAsY1tUPj4yXXwwLDAsMCl8MCkhPTA6MClicmVhaztpZigoc3ooY1soY1tDPj4yXXwwKSs1Mj4+Ml18MCxjW1Q+PjJdfDApfDApPj0wKWJyZWFrfWNbRz4+Ml09V3YoY1t0Pj4yXXwwLDU1LGNbVD4+Ml18MCl8MDtjW1M+PjJdPWNbVD4+Ml07Y1tYPj4yXT0wO2RvIGlmKGNbeT4+Ml18MClqPTg0O2Vsc2V7aWYoKGNbY1tKPj4yXT4+Ml18MCk+MSl7aj04NDticmVha31jW0I+PjJdPWNbRz4+Ml19d2hpbGUoMCk7ZG8gaWYoKGp8MCk9PTg0KXtqPTA7Y1tEPj4yXT1XdihjW3Q+PjJdfDAsNTUsY1tXPj4yXXwwKXwwO2NbQj4+Ml09RXYoY1tGPj4yXXwwLDEyMixjW0Q+PjJdfDAsY1tHPj4yXXwwLDApfDA7aWYoY1tVPj4yXXwwKXtjW0Q+PjJdPVd2KGNbdD4+Ml18MCw1NSxjW1U+PjJdfDApfDA7Y1tCPj4yXT1FdihjW0Y+PjJdfDAsMTIyLGNbRD4+Ml18MCxjW0I+PjJdfDAsMCl8MH1pZighKGNbeT4+Ml18MCkpYnJlYWs7cD1jW3Q+PjJdfDA7bz1jW1Q+PjJdfDA7Y1tSPj4yXT1jW1c+PjJdO2NbUis0Pj4yXT1vO2NbUz4+Ml09R2gocCwzMDE2MSxSKXwwO2NbWD4+Ml09Y1tTPj4yXX13aGlsZSgwKTtjW0U+PjJdPVR2KGNbRj4+Ml18MCxjW0U+PjJdfDAsY1tCPj4yXXwwKXwwO1h5KEwsY1tTPj4yXXwwKTtVdihjW0Y+PjJdfDAsY1tFPj4yXXwwLEwsMCk7ZG8gaWYoY1tFPj4yXXwwKXtpZighKGNbKGNbcj4+Ml18MCkrOD4+Ml0mMjA0OCkpYnJlYWs7Y1tLPj4yXT0oY1soY1tFPj4yXXwwKSs0Pj4yXXwwKSsoKChjW2NbRT4+Ml0+PjJdfDApLTF8MCkqMjB8MCk7aD1jW3Q+PjJdfDA7aWYoY1tIPj4yXXwwKXtwPXFoKGgsY1soY1soY1tjW0g+PjJdPj4yXXwwKSs0Pj4yXXwwKSsoKGNbdz4+Ml18MCkqMjB8MCkrOD4+Ml18MCl8MDtjWyhjW0s+PjJdfDApKzg+PjJdPXB9ZWxzZXtvPWNbVz4+Ml18MDtwPWNbUz4+Ml18MDtjW04+PjJdPWNbVT4+Ml07Y1tOKzQ+PjJdPW87Y1tOKzg+PjJdPXA7cD1HaChoLDMwMTY3LE4pfDA7Y1soY1tLPj4yXXwwKSs4Pj4yXT1wfXA9KGNbSz4+Ml18MCkrMTN8MDthW3A+PjBdPWFbcD4+MF0mLTN8Mn13aGlsZSgwKTtUZihjW3Q+PjJdfDAsY1tYPj4yXXwwKX13aGlsZSgwKTtjW3c+PjJdPShjW3c+PjJdfDApKzF9fXdoaWxlKDApO2NbdT4+Ml09KGNbdT4+Ml18MCkrMTtjW0M+PjJdPShjW0M+PjJdfDApKzcyfWlmKCEoY1tNPj4yXXwwKSl7aD1jW0Y+PjJdfDA7aWYoY1tWPj4yXXwwKXtjW08+PjJdPWNbVj4+Ml07RWgoaCwzMDE3NixPKTticmVha31lbHNle0VoKGgsMzAxOTQsUCk7YnJlYWt9fX13aGlsZSgwKTtjW3g+PjJdPShjW3g+PjJdfDApKzF9ZXYoY1t0Pj4yXXwwLGNbQT4+Ml18MCk7Y1tjW3I+PjJdPj4yXT1jW0U+PjJdfWlmKChjW2Nbcj4+Ml0+PjJdfDApIT0wPyhjW2NbY1tyPj4yXT4+Ml0+PjJdfDApPihjWyhjW3Q+PjJdfDApKzk2Kzg+PjJdfDApOjApe0VoKGNbRj4+Ml18MCwzMDIxNCxRKTtjW3E+PjJdPTI7WD1jW3E+PjJdfDA7aT1ZO3JldHVybiBYfDB9Y1txPj4yXT0wO1g9Y1txPj4yXXwwO2k9WTtyZXR1cm4gWHwwfWNbcT4+Ml09MjtYPWNbcT4+Ml18MDtpPVk7cmV0dXJuIFh8MH19Y1txPj4yXT0xO1g9Y1txPj4yXXwwO2k9WTtyZXR1cm4gWHwwfWZ1bmN0aW9uIGx6KGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTA7Zj1pO2k9aSsxNnwwO2g9ZisxMnwwO2c9Zis4fDA7ZD1mKzR8MDtlPWY7Y1toPj4yXT1hO2NbZz4+Ml09YjtjW2Q+PjJdPWNbY1toPj4yXT4+Ml07Y1tlPj4yXT1jWyhteihjW2c+PjJdfDApfDApKzY0Pj4yXTtpZighKGNbZT4+Ml18MCkpe2k9ZjtyZXR1cm59Y1soY1tkPj4yXXwwKSs0NzI+PjJdPWNbKGNbZT4+Ml18MCkrND4+Ml07aT1mO3JldHVybn1mdW5jdGlvbiBteihhKXthPWF8MDt2YXIgYj0wLGQ9MDtkPWk7aT1pKzE2fDA7Yj1kO2NbYj4+Ml09YTt3aGlsZSgxKXthPWNbYj4+Ml18MDtpZighKGNbKGNbYj4+Ml18MCkrNTI+PjJdfDApKWJyZWFrO2NbYj4+Ml09Y1thKzUyPj4yXX1pPWQ7cmV0dXJuIGF8MH1mdW5jdGlvbiBueihmLGcpe2Y9ZnwwO2c9Z3wwO3ZhciBoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wO0I9aTtpPWkrOTZ8MDt1PUIrMTZ8MDtvPUIrOHwwO2o9Qjt2PUIrODh8MDt3PUIrODR8MDtrPUIrODB8MDt5PUIrNzZ8MDtoPUIrNzJ8MDt4PUIrNjh8MDtwPUIrNjR8MDt0PUIrNjB8MDtyPUIrNTZ8MDtBPUIrNTJ8MDtzPUIrNDh8MDtxPUIrNDR8MDt6PUIrNDB8MDtsPUIrMzZ8MDtuPUIrMzJ8MDttPUIrMjh8MDtjW3c+PjJdPWY7Y1trPj4yXT1nO2NbeT4+Ml09Y1tjW3c+PjJdPj4yXTtjW2g+PjJdPWNbY1t5Pj4yXT4+Ml07Y1t4Pj4yXT1GeihjWyhjW3k+PjJdfDApKzQ3Mj4+Ml18MCxjW2s+PjJdfDAscCl8MDtpZihjW3g+PjJdfDApe2c9Y1t5Pj4yXXwwO2lmKGNbKGNbeD4+Ml18MCkrMTI+PjJdfDApe0E9Y1soY1t4Pj4yXXwwKSsxMj4+Ml18MDtjW2o+PjJdPWNbY1t4Pj4yXT4+Ml07RWgoZyxBLGopO2Nbdj4+Ml09MTtBPWNbdj4+Ml18MDtpPUI7cmV0dXJuIEF8MH1pZihveihnLGNbaz4+Ml18MCl8MCl7Y1t2Pj4yXT0xO0E9Y1t2Pj4yXXwwO2k9QjtyZXR1cm4gQXwwfWo9c2goY1toPj4yXXwwLDcyLDApfDA7Y1t0Pj4yXT1qO2NbKGNbaz4+Ml18MCkrMTY+PjJdPWo7aWYoIShjW3Q+PjJdfDApKXtjW3Y+PjJdPTI7QT1jW3Y+PjJdfDA7aT1CO3JldHVybiBBfDB9YlsoY1t0Pj4yXXwwKSszNj4+MV09MTtqPXFoKGNbaD4+Ml18MCxjW2NbeD4+Ml0+PjJdfDApfDA7Y1tjW3Q+PjJdPj4yXT1qO2JbKGNbdD4+Ml18MCkrMzI+PjFdPS0xO2JbKGNbdD4+Ml18MCkrMzg+PjFdPTIwMDtqPShjW3Q+PjJdfDApKzQyfDA7YVtqPj4wXT1kW2o+PjBdfDY2O2o9X3goY1toPj4yXXwwLGNbKGNbeD4+Ml18MCkrOD4+Ml18MCwwKXwwO2NbKGNbaz4+Ml18MCkrMjA+PjJdPWo7aWYoYVsoY1toPj4yXXwwKSs2OT4+MF18MCl7Y1t2Pj4yXT03O0E9Y1t2Pj4yXXwwO2k9QjtyZXR1cm4gQXwwfWNbQT4+Ml09Y1soY1trPj4yXXwwKSsyMD4+Ml07aWYoKGRbKGNbQT4+Ml18MCkrND4+MF18MCk9PTExNilnPTE7ZWxzZSBnPShkWyhjW0E+PjJdfDApKzQ+PjBdfDApPT0xMTU7Y1txPj4yXT1nJjE7YTpkbyBpZihjW3E+PjJdfDApe2Nbbj4+Ml09Y1soY1soY1trPj4yXXwwKSsyMD4+Ml18MCkrMjg+PjJdO2NbbD4+Ml09MDt3aGlsZSgxKXtpZigoY1tsPj4yXXwwKT49KGNbY1tuPj4yXT4+Ml18MCkpYnJlYWsgYTtjW20+PjJdPShjW24+PjJdfDApKzgrKChjW2w+PjJdfDApKjcyfDApO2lmKCgoY1soY1ttPj4yXXwwKSs0Pj4yXXwwKT09MD8oY1soY1ttPj4yXXwwKSs4Pj4yXXwwKSE9MDowKT8wPT0oaWcoY1soY1ttPj4yXXwwKSs4Pj4yXXwwLGNbY1t4Pj4yXT4+Ml18MCl8MCk6MCl7Y1soY1ttPj4yXXwwKSsxNj4+Ml09Y1t0Pj4yXTtrPShjW20+PjJdfDApKzM2KzF8MDthW2s+PjBdPWFbaz4+MF0mLTMzfDMyO2s9KGNbdD4+Ml18MCkrMzZ8MDtiW2s+PjFdPShiW2s+PjFdfDApKzE8PDE2Pj4xNjtrPShjW0E+PjJdfDApKzh8MDtjW2s+PjJdPWNbaz4+Ml18ODE5Mn1jW2w+PjJdPShjW2w+PjJdfDApKzF9fXdoaWxlKDApO2lmKChlWyhjW3Q+PjJdfDApKzM2Pj4xXXwwKT4yKXtBPWNbeT4+Ml18MDtjW28+PjJdPWNbY1t4Pj4yXT4+Ml07RWgoQSwzMDQ1NSxvKTtjW3Y+PjJdPTE7QT1jW3Y+PjJdfDA7aT1CO3JldHVybiBBfDB9Y1soY1t4Pj4yXXwwKSsxMj4+Ml09MzA0OTg7Y1t6Pj4yXT1jWyhjW3k+PjJdfDApKzQ3Mj4+Ml07Y1soY1t5Pj4yXXwwKSs0NzI+PjJdPWNbcD4+Ml07Zz1jW0E+PjJdfDA7aWYoY1txPj4yXXwwKWc9Y1tnKzQ4Pj4yXXwwO3N5KGNbdz4+Ml18MCxnKXwwO2NbKGNbeT4+Ml18MCkrNDcyPj4yXT1jW3A+PjJdO2Nbcz4+Ml09Y1tBPj4yXTt3aGlsZSgxKXtnPWNbcz4+Ml18MDtpZighKGNbKGNbcz4+Ml18MCkrNDg+PjJdfDApKWJyZWFrO2Nbcz4+Ml09Y1tnKzQ4Pj4yXX1jW3I+PjJdPWNbZz4+Ml07aWYoY1soY1t4Pj4yXXwwKSs0Pj4yXXwwKXtpZigoY1tyPj4yXXwwKSE9MD8oY1tjW3I+PjJdPj4yXXwwKSE9KGNbY1soY1t4Pj4yXXwwKSs0Pj4yXT4+Ml18MCk6MCl7QT1jW3k+PjJdfDA7dD1jW2Nbcj4+Ml0+PjJdfDA7dz1jW2NbKGNbeD4+Ml18MCkrND4+Ml0+PjJdfDA7Y1t1Pj4yXT1jW2NbeD4+Ml0+PjJdO2NbdSs0Pj4yXT10O2NbdSs4Pj4yXT13O0VoKEEsMzA1MjEsdSk7Y1soY1t5Pj4yXXwwKSs0NzI+PjJdPWNbej4+Ml07Y1t2Pj4yXT0xO0E9Y1t2Pj4yXXwwO2k9QjtyZXR1cm4gQXwwfWNbcj4+Ml09Y1soY1t4Pj4yXXwwKSs0Pj4yXX1ieShjW3k+PjJdfDAsY1tyPj4yXXwwLChjW3Q+PjJdfDApKzM0fDAsKGNbdD4+Ml18MCkrNHwwKXwwO2lmKGNbcT4+Ml18MCl7Zz0oY1t4Pj4yXXwwKSsxMnwwO2lmKGNbKGNbQT4+Ml18MCkrOD4+Ml0mODE5MiljW2c+PjJdPTMwNTU5O2Vsc2UgY1tnPj4yXT0zMDU5MztzeShjW3c+PjJdfDAsY1tBPj4yXXwwKXwwfWNbKGNbeD4+Ml18MCkrMTI+PjJdPTA7Y1soY1t5Pj4yXXwwKSs0NzI+PjJdPWNbej4+Ml19Y1t2Pj4yXT0wO0E9Y1t2Pj4yXXwwO2k9QjtyZXR1cm4gQXwwfWZ1bmN0aW9uIG96KGEsYil7YT1hfDA7Yj1ifDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTA7aj1pO2k9aSsxNnwwO2g9ajtlPWorMTJ8MDtmPWorOHwwO2c9ais0fDA7Y1tmPj4yXT1hO2NbZz4+Ml09YjtpZigoZFsoY1tnPj4yXXwwKSszNisxPj4wXXwwKT4+PjImMSl7YT1jW2Y+PjJdfDA7Y1toPj4yXT1jWyhjW2c+PjJdfDApKzg+PjJdO0VoKGEsMzA0MzIsaCk7Y1tlPj4yXT0xO2g9Y1tlPj4yXXwwO2k9ajtyZXR1cm4gaHwwfWVsc2V7Y1tlPj4yXT0wO2g9Y1tlPj4yXXwwO2k9ajtyZXR1cm4gaHwwfXJldHVybiAwfWZ1bmN0aW9uIHB6KGIsZSl7Yj1ifDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTA7bj1pO2k9aSszMnwwO2w9bjtmPW4rMjh8MDtnPW4rMjR8MDtoPW4rMjB8MDtrPW4rMTZ8MDttPW4rMTJ8MDtqPW4rOHwwO2NbZz4+Ml09YjtjW2g+PjJdPWU7ZG8gaWYoKGNbKGNbaD4+Ml18MCkrMTY+PjJdfDApIT0wPygoZFsoY1toPj4yXXwwKSszNisxPj4wXXwwKT4+PjEmMXwwKSE9MDowKXtjW2s+PjJdPWNbKGNbaD4+Ml18MCkrMTY+PjJdO2NbbT4+Ml09Y1soY1toPj4yXXwwKSs2ND4+Ml07Y1tqPj4yXT1jWyhjW2s+PjJdfDApKzg+PjJdO3doaWxlKDEpe2lmKCEoY1tqPj4yXXwwKSlicmVhaztpZighKGlnKGNbY1tqPj4yXT4+Ml18MCxjW20+PjJdfDApfDApKWJyZWFrO2Nbaj4+Ml09Y1soY1tqPj4yXXwwKSsyMD4+Ml19aWYoY1tqPj4yXXwwKXtjWyhjW2g+PjJdfDApKzY4Pj4yXT1jW2o+PjJdO2JyZWFrfWs9Y1tnPj4yXXwwO2NbbD4+Ml09Y1ttPj4yXTtjW2wrND4+Ml09MDtFaChrLDMwNDE0LGwpO2FbKGNbZz4+Ml18MCkrMTc+PjBdPTE7Y1tmPj4yXT0xO209Y1tmPj4yXXwwO2k9bjtyZXR1cm4gbXwwfXdoaWxlKDApO2NbZj4+Ml09MDttPWNbZj4+Ml18MDtpPW47cmV0dXJuIG18MH1mdW5jdGlvbiBxeihhLGUpe2E9YXwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wO0M9aTtpPWkrOTZ8MDtBPUMrMTZ8MDt6PUMrOHwwO3k9Qzt3PUMrOTJ8MDt4PUMrODh8MDtmPUMrODR8MDt1PUMrODB8MDtnPUMrNzZ8MDtvPUMrNzJ8MDtwPUMrNjh8MDtzPUMrNjR8MDtxPUMrNjB8MDt0PUMrNTZ8MDtuPUMrNTJ8MDt2PUMrNDh8MDtoPUMrNDR8MDtrPUMrNDB8MDtyPUMrMzZ8MDtCPUMrMzJ8MDtqPUMrMjh8MDtsPUMrMjR8MDttPUMrMjB8MDtjW3g+PjJdPWE7Y1tmPj4yXT1lO2NbdT4+Ml09Y1soY1tmPj4yXXwwKSsyOD4+Ml07Y1twPj4yXT0oY1t1Pj4yXXwwKSs4O2Nbcz4+Ml09KGNbcD4+Ml18MCkrNzI7Y1tnPj4yXT0wO2E6d2hpbGUoMSl7aWYoKGNbZz4+Ml18MCk+PSgoY1tjW3U+PjJdPj4yXXwwKS0xfDApKXtmPTI4O2JyZWFrfWNbcT4+Ml09Y1soY1twPj4yXXwwKSsxNj4+Ml07Y1t0Pj4yXT1jWyhjW3M+PjJdfDApKzE2Pj4yXTtiOmRvIGlmKCEoKGNbcT4+Ml18MCk9PTB8KGNbdD4+Ml18MCk9PTApKXtjW24+PjJdPShkWyhjW3M+PjJdfDApKzM2Pj4wXSYzMnwwKSE9MCYxO2M6ZG8gaWYoZFsoY1tzPj4yXXwwKSszNj4+MF0mNCl7aWYoY1soY1tzPj4yXXwwKSs0OD4+Ml18MCl7Zj03O2JyZWFrIGF9aWYoY1soY1tzPj4yXXwwKSs1Mj4+Ml18MCl7Zj03O2JyZWFrIGF9Y1tvPj4yXT0wO3doaWxlKDEpe2lmKChjW28+PjJdfDApPj0oYlsoY1t0Pj4yXXwwKSszND4+MV18MCkpYnJlYWsgYztjW3Y+PjJdPWNbKGNbKGNbdD4+Ml18MCkrND4+Ml18MCkrKGNbbz4+Ml08PDQpPj4yXTtpZihyeihjW3U+PjJdfDAsKGNbZz4+Ml18MCkrMXwwLGNbdj4+Ml18MCxoLGspfDApdXooY1t4Pj4yXXwwLGNbdT4+Ml18MCxjW2g+PjJdfDAsY1trPj4yXXwwLChjW2c+PjJdfDApKzF8MCxjW28+PjJdfDAsY1tuPj4yXXwwLChjW2Y+PjJdfDApKzMyfDApO2Nbbz4+Ml09KGNbbz4+Ml18MCkrMX19d2hpbGUoMCk7aWYoKGNbKGNbcz4+Ml18MCkrNDg+PjJdfDApIT0wPyhjWyhjW3M+PjJdfDApKzUyPj4yXXwwKSE9MDowKXtmPTE1O2JyZWFrIGF9aWYoY1soY1tzPj4yXXwwKSs0OD4+Ml18MCl7aWYoY1tuPj4yXXwwKXZ6KGNbKGNbcz4+Ml18MCkrNDg+PjJdfDAsY1soY1tzPj4yXXwwKSs0ND4+Ml18MCk7YT13eihjW2NbeD4+Ml0+PjJdfDAsY1soY1tmPj4yXXwwKSszMj4+Ml18MCxjWyhjW3M+PjJdfDApKzQ4Pj4yXXwwKXwwO2NbKGNbZj4+Ml18MCkrMzI+PjJdPWE7Y1soY1tzPj4yXXwwKSs0OD4+Ml09MH1pZihjWyhjW3M+PjJdfDApKzUyPj4yXXwwKXtjW3I+PjJdPWNbKGNbcz4+Ml18MCkrNTI+PjJdO2Nbbz4+Ml09MDt3aGlsZSgxKXtpZigoY1tvPj4yXXwwKT49KGNbKGNbcj4+Ml18MCkrND4+Ml18MCkpYnJlYWsgYjtjW0I+PjJdPWNbKGNbY1tyPj4yXT4+Ml18MCkrKGNbbz4+Ml08PDMpPj4yXTtjW20+PjJdPXR6KGNbdD4+Ml18MCxjW0I+PjJdfDApfDA7aWYoKGNbbT4+Ml18MCk8MCl7Zj0yNTticmVhayBhfWlmKCEocnooY1t1Pj4yXXwwLChjW2c+PjJdfDApKzF8MCxjW0I+PjJdfDAsaixsKXwwKSl7Zj0yNTticmVhayBhfXV6KGNbeD4+Ml18MCxjW3U+PjJdfDAsY1tqPj4yXXwwLGNbbD4+Ml18MCwoY1tnPj4yXXwwKSsxfDAsY1ttPj4yXXwwLGNbbj4+Ml18MCwoY1tmPj4yXXwwKSszMnwwKTtjW28+PjJdPShjW28+PjJdfDApKzF9fX13aGlsZSgwKTtjW2c+PjJdPShjW2c+PjJdfDApKzE7Y1tzPj4yXT0oY1tzPj4yXXwwKSs3MjtjW3A+PjJdPShjW3A+PjJdfDApKzcyfWlmKChmfDApPT03KXtCPWNbeD4+Ml18MDtjW3k+PjJdPTA7RWgoQiwzMDI0NSx5KTtjW3c+PjJdPTE7Qj1jW3c+PjJdfDA7aT1DO3JldHVybiBCfDB9ZWxzZSBpZigoZnwwKT09MTUpe0VoKGNbeD4+Ml18MCwzMDI5NSx6KTtjW3c+PjJdPTE7Qj1jW3c+PjJdfDA7aT1DO3JldHVybiBCfDB9ZWxzZSBpZigoZnwwKT09MjUpe3o9Y1t4Pj4yXXwwO2NbQT4+Ml09Y1tCPj4yXTtFaCh6LDMwMzUwLEEpO2Nbdz4+Ml09MTtCPWNbdz4+Ml18MDtpPUM7cmV0dXJuIEJ8MH1lbHNlIGlmKChmfDApPT0yOCl7Y1t3Pj4yXT0wO0I9Y1t3Pj4yXXwwO2k9QztyZXR1cm4gQnwwfXJldHVybiAwfWZ1bmN0aW9uIHJ6KGEsYixkLGUsZil7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MDtxPWk7aT1pKzMyfDA7Zz1xKzI4fDA7aD1xKzI0fDA7aj1xKzIwfDA7az1xKzE2fDA7bD1xKzEyfDA7bT1xKzh8MDtuPXErNHwwO289cTtjW2g+PjJdPWE7Y1tqPj4yXT1iO2Nbaz4+Ml09ZDtjW2w+PjJdPWU7Y1ttPj4yXT1mO2Nbbj4+Ml09MDt3aGlsZSgxKXtpZigoY1tuPj4yXXwwKT49KGNbaj4+Ml18MCkpe3A9ODticmVha31jW28+PjJdPXR6KGNbKGNbaD4+Ml18MCkrOCsoKGNbbj4+Ml18MCkqNzJ8MCkrMTY+PjJdfDAsY1trPj4yXXwwKXwwO2lmKChjW28+PjJdfDApPj0wKWJyZWFrO2Nbbj4+Ml09KGNbbj4+Ml18MCkrMX1pZigocHwwKT09OCl7Y1tnPj4yXT0wO3A9Y1tnPj4yXXwwO2k9cTtyZXR1cm4gcHwwfWlmKGNbbD4+Ml18MCl7Y1tjW2w+PjJdPj4yXT1jW24+PjJdO2NbY1ttPj4yXT4+Ml09Y1tvPj4yXX1jW2c+PjJdPTE7cD1jW2c+PjJdfDA7aT1xO3JldHVybiBwfDB9ZnVuY3Rpb24gc3ooYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MDtoPWk7aT1pKzE2fDA7Zz1oKzEyfDA7ZD1oKzh8MDtlPWgrNHwwO2Y9aDtjW2Q+PjJdPWE7Y1tlPj4yXT1iO2lmKCEoY1tkPj4yXXwwKSl7Y1tnPj4yXT0tMTtnPWNbZz4+Ml18MDtpPWg7cmV0dXJuIGd8MH1jW2Y+PjJdPTA7d2hpbGUoMSl7aWYoKGNbZj4+Ml18MCk+PShjWyhjW2Q+PjJdfDApKzQ+PjJdfDApKXthPTg7YnJlYWt9YT0oaWcoY1soY1tjW2Q+PjJdPj4yXXwwKSsoY1tmPj4yXTw8Myk+PjJdfDAsY1tlPj4yXXwwKXwwKT09MDtiPWNbZj4+Ml18MDtpZihhKXthPTY7YnJlYWt9Y1tmPj4yXT1iKzF9aWYoKGF8MCk9PTYpe2NbZz4+Ml09YjtnPWNbZz4+Ml18MDtpPWg7cmV0dXJuIGd8MH1lbHNlIGlmKChhfDApPT04KXtjW2c+PjJdPS0xO2c9Y1tnPj4yXXwwO2k9aDtyZXR1cm4gZ3wwfXJldHVybiAwfWZ1bmN0aW9uIHR6KGEsZCl7YT1hfDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTA7aj1pO2k9aSsxNnwwO2g9aisxMnwwO2U9ais4fDA7Zj1qKzR8MDtnPWo7Y1tlPj4yXT1hO2NbZj4+Ml09ZDtjW2c+PjJdPTA7d2hpbGUoMSl7aWYoKGNbZz4+Ml18MCk+PShiWyhjW2U+PjJdfDApKzM0Pj4xXXwwKSl7YT02O2JyZWFrfWE9KGlnKGNbKGNbKGNbZT4+Ml18MCkrND4+Ml18MCkrKGNbZz4+Ml08PDQpPj4yXXwwLGNbZj4+Ml18MCl8MCk9PTA7ZD1jW2c+PjJdfDA7aWYoYSl7YT00O2JyZWFrfWNbZz4+Ml09ZCsxfWlmKChhfDApPT00KXtjW2g+PjJdPWQ7aD1jW2g+PjJdfDA7aT1qO3JldHVybiBofDB9ZWxzZSBpZigoYXwwKT09Nil7Y1toPj4yXT0tMTtoPWNbaD4+Ml18MDtpPWo7cmV0dXJuIGh8MH1yZXR1cm4gMH1mdW5jdGlvbiB1eihhLGQsZSxmLGcsaCxqLGspe2E9YXwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO2s9a3wwO3ZhciBsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTA7cD1pO2k9aSs0OHwwO3M9cCs0NHwwO3Y9cCs0MHwwO3g9cCszNnwwO3c9cCszMnwwO3U9cCsyOHwwO3Q9cCsyNHwwO3E9cCsyMHwwO2w9cCsxNnwwO209cCsxMnwwO3I9cCs4fDA7bj1wKzR8MDtvPXA7Y1tzPj4yXT1hO2Nbdj4+Ml09ZDtjW3g+PjJdPWU7Y1t3Pj4yXT1mO2NbdT4+Ml09ZztjW3Q+PjJdPWg7Y1txPj4yXT1qO2NbbD4+Ml09aztjW20+PjJdPWNbY1tzPj4yXT4+Ml07Y1tyPj4yXT1FeihjW20+PjJdfDAsY1t2Pj4yXXwwLGNbeD4+Ml18MCxjW3c+PjJdfDApfDA7Y1tuPj4yXT1FeihjW20+PjJdfDAsY1t2Pj4yXXwwLGNbdT4+Ml18MCxjW3Q+PjJdfDApfDA7Y1tvPj4yXT1FdihjW3M+PjJdfDAsMzcsY1tyPj4yXXwwLGNbbj4+Ml18MCwwKXwwO2lmKCEoKGNbbz4+Ml18MCkhPTAmKGNbcT4+Ml18MCkhPTApKXt2PWNbbT4+Ml18MDt4PWNbbD4+Ml18MDt4PWNbeD4+Ml18MDt3PWNbbz4+Ml18MDt3PXd6KHYseCx3KXwwO3g9Y1tsPj4yXXwwO2NbeD4+Ml09dztpPXA7cmV0dXJufXY9KGNbbz4+Ml18MCkrNHwwO2Nbdj4+Ml09Y1t2Pj4yXXwxO2JbKGNbbz4+Ml18MCkrMzY+PjFdPWNbKGNbbj4+Ml18MCkrMjg+PjJdO3Y9Y1ttPj4yXXwwO3g9Y1tsPj4yXXwwO3g9Y1t4Pj4yXXwwO3c9Y1tvPj4yXXwwO3c9d3oodix4LHcpfDA7eD1jW2w+PjJdfDA7Y1t4Pj4yXT13O2k9cDtyZXR1cm59ZnVuY3Rpb24gdnooYSxlKXthPWF8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wO2o9aTtpPWkrMTZ8MDtmPWorOHwwO2c9ais0fDA7aD1qO2NbZj4+Ml09YTtjW2c+PjJdPWU7d2hpbGUoMSl7aWYoIShjW2Y+PjJdfDApKWJyZWFrO2E9KGNbZj4+Ml18MCkrNHwwO2NbYT4+Ml09Y1thPj4yXXwxO2JbKGNbZj4+Ml18MCkrMzY+PjFdPWNbZz4+Ml07YTpkbyBpZigoZFtjW2Y+PjJdPj4wXXwwfDApPT0xNTE/KGNbKGNbZj4+Ml18MCkrMjA+PjJdfDApIT0wOjApe2NbaD4+Ml09MDt3aGlsZSgxKXtpZigoY1toPj4yXXwwKT49KGNbY1soY1tmPj4yXXwwKSsyMD4+Ml0+PjJdfDApKWJyZWFrIGE7dnooY1soY1soY1soY1tmPj4yXXwwKSsyMD4+Ml18MCkrND4+Ml18MCkrKChjW2g+PjJdfDApKjIwfDApPj4yXXwwLGNbZz4+Ml18MCk7Y1toPj4yXT0oY1toPj4yXXwwKSsxfX13aGlsZSgwKTt2eihjWyhjW2Y+PjJdfDApKzEyPj4yXXwwLGNbZz4+Ml18MCk7Y1tmPj4yXT1jWyhjW2Y+PjJdfDApKzE2Pj4yXX1pPWo7cmV0dXJufWZ1bmN0aW9uIHd6KGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTA7az1pO2k9aSszMnwwO2U9aysxNnwwO2Y9aysxMnwwO2c9ays4fDA7aD1rKzR8MDtqPWs7Y1tmPj4yXT1hO2NbZz4+Ml09YjtjW2g+PjJdPWQ7YT1jW2g+PjJdfDA7aWYoIShjW2c+PjJdfDApKXtjW2U+PjJdPWE7aj1jW2U+PjJdfDA7aT1rO3JldHVybiBqfDB9Yj1jW2c+PjJdfDA7aWYoIWEpe2NbZT4+Ml09YjtqPWNbZT4+Ml18MDtpPWs7cmV0dXJuIGp8MH1pZigoeHooYil8MCk9PTA/KHh6KGNbaD4+Ml18MCl8MCk9PTA6MCl7Y1tqPj4yXT1qdyhjW2Y+PjJdfDAsMjgsMCwwKXwwO3l6KGNbZj4+Ml18MCxjW2o+PjJdfDAsY1tnPj4yXXwwLGNbaD4+Ml18MCk7Y1tlPj4yXT1jW2o+PjJdO2o9Y1tlPj4yXXwwO2k9aztyZXR1cm4ganwwfWl2KGNbZj4+Ml18MCxjW2c+PjJdfDApO2l2KGNbZj4+Ml18MCxjW2g+PjJdfDApO2NbZT4+Ml09ancoY1tmPj4yXXwwLDEzNCw0Mjc2LDApfDA7aj1jW2U+PjJdfDA7aT1rO3JldHVybiBqfDB9ZnVuY3Rpb24geHooYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MDtmPWk7aT1pKzE2fDA7Yj1mKzh8MDtkPWYrNHwwO2U9ZjtjW2Q+PjJdPWE7Y1tlPj4yXT0wO2RvIGlmKCEoY1soY1tkPj4yXXwwKSs0Pj4yXSYxKSlpZihGeShjW2Q+PjJdfDAsZSl8MCl7Y1tiPj4yXT0oY1tlPj4yXXwwKT09MCYxO2JyZWFrfWVsc2V7Y1tiPj4yXT0wO2JyZWFrfWVsc2UgY1tiPj4yXT0wO3doaWxlKDApO2k9ZjtyZXR1cm4gY1tiPj4yXXwwfWZ1bmN0aW9uIHl6KGEsYixkLGUpe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wO2s9aTtpPWkrMTZ8MDtmPWsrMTJ8MDtnPWsrOHwwO2g9ays0fDA7aj1rO2NbZj4+Ml09YTtjW2c+PjJdPWI7Y1toPj4yXT1kO2Nbaj4+Ml09ZTtpZighKGNbZz4+Ml18MCkpe2l2KGNbZj4+Ml18MCxjW2g+PjJdfDApO2l2KGNbZj4+Ml18MCxjW2o+PjJdfDApO2k9aztyZXR1cm59aWYoY1tqPj4yXXwwKXtjWyhjW2c+PjJdfDApKzE2Pj4yXT1jW2o+PjJdO2I9KGNbZz4+Ml18MCkrNHwwO2NbYj4+Ml09Y1tiPj4yXXwyMDk3NDA4JmNbKGNbaj4+Ml18MCkrND4+Ml19aWYoY1toPj4yXXwwKXtjWyhjW2c+PjJdfDApKzEyPj4yXT1jW2g+PjJdO2I9KGNbZz4+Ml18MCkrNHwwO2NbYj4+Ml09Y1tiPj4yXXwyMDk3NDA4JmNbKGNbaD4+Ml18MCkrND4+Ml19enooY1tnPj4yXXwwKTtpPWs7cmV0dXJufWZ1bmN0aW9uIHp6KGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTA7ZT1pO2k9aSsxNnwwO2I9ZSs0fDA7ZD1lO2NbYj4+Ml09YTtjW2Q+PjJdPTA7QXooY1soY1tiPj4yXXwwKSsxMj4+Ml18MCxkKTtBeihjWyhjW2I+PjJdfDApKzE2Pj4yXXwwLGQpO2E9KGNbYj4+Ml18MCkrMjB8MDtpZighKGNbKGNbYj4+Ml18MCkrND4+Ml0mMjA0OCkpe2lmKGNbYT4+Ml18MCl7Q3ooY1soY1tiPj4yXXwwKSsyMD4+Ml18MCxkKTtmPTIwOTc0MDgmKER6KGNbKGNbYj4+Ml18MCkrMjA+PjJdfDApfDApO2E9KGNbYj4+Ml18MCkrNHwwO2NbYT4+Ml09Y1thPj4yXXxmfX1lbHNlIEJ6KGNbYT4+Ml18MCxkKTtjWyhjW2I+PjJdfDApKzI0Pj4yXT0oY1tkPj4yXXwwKSsxO2k9ZTtyZXR1cm59ZnVuY3Rpb24gQXooYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTA7Zj1pO2k9aSsxNnwwO2Q9Zis0fDA7ZT1mO2NbZD4+Ml09YTtjW2U+PjJdPWI7aWYoIShjW2Q+PjJdfDApKXtpPWY7cmV0dXJufWlmKChjWyhjW2Q+PjJdfDApKzI0Pj4yXXwwKTw9KGNbY1tlPj4yXT4+Ml18MCkpe2k9ZjtyZXR1cm59Y1tjW2U+PjJdPj4yXT1jWyhjW2Q+PjJdfDApKzI0Pj4yXTtpPWY7cmV0dXJufWZ1bmN0aW9uIEJ6KGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wO2Y9aTtpPWkrMTZ8MDtkPWYrNHwwO2U9ZjtjW2Q+PjJdPWE7Y1tlPj4yXT1iO2lmKCEoY1tkPj4yXXwwKSl7aT1mO3JldHVybn1BeihjWyhjW2Q+PjJdfDApKzMyPj4yXXwwLGNbZT4+Ml18MCk7QXooY1soY1tkPj4yXXwwKSs0MD4+Ml18MCxjW2U+PjJdfDApO0F6KGNbKGNbZD4+Ml18MCkrNTY+PjJdfDAsY1tlPj4yXXwwKTtBeihjWyhjW2Q+PjJdfDApKzYwPj4yXXwwLGNbZT4+Ml18MCk7Q3ooY1tjW2Q+PjJdPj4yXXwwLGNbZT4+Ml18MCk7Q3ooY1soY1tkPj4yXXwwKSszNj4+Ml18MCxjW2U+PjJdfDApO0N6KGNbKGNbZD4+Ml18MCkrNDQ+PjJdfDAsY1tlPj4yXXwwKTtCeihjWyhjW2Q+PjJdfDApKzQ4Pj4yXXwwLGNbZT4+Ml18MCk7aT1mO3JldHVybn1mdW5jdGlvbiBDeihhLGIpe2E9YXwwO2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTA7Zz1pO2k9aSsxNnwwO2Q9Zys4fDA7ZT1nKzR8MDtmPWc7Y1tkPj4yXT1hO2NbZT4+Ml09YjtpZighKGNbZD4+Ml18MCkpe2k9ZztyZXR1cm59Y1tmPj4yXT0wO3doaWxlKDEpe2lmKChjW2Y+PjJdfDApPj0oY1tjW2Q+PjJdPj4yXXwwKSlicmVhaztBeihjWyhjWyhjW2Q+PjJdfDApKzQ+PjJdfDApKygoY1tmPj4yXXwwKSoyMHwwKT4+Ml18MCxjW2U+PjJdfDApO2NbZj4+Ml09KGNbZj4+Ml18MCkrMX1pPWc7cmV0dXJufWZ1bmN0aW9uIER6KGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTAsZz0wO2c9aTtpPWkrMTZ8MDtiPWcrMTJ8MDtkPWcrOHwwO2U9Zys0fDA7Zj1nO2NbYj4+Ml09YTtjW2U+PjJdPTA7aWYoIShjW2I+PjJdfDApKXthPWNbZT4+Ml18MDtpPWc7cmV0dXJuIGF8MH1jW2Q+PjJdPTA7d2hpbGUoMSl7aWYoKGNbZD4+Ml18MCk+PShjW2NbYj4+Ml0+PjJdfDApKWJyZWFrO2NbZj4+Ml09Y1soY1soY1tiPj4yXXwwKSs0Pj4yXXwwKSsoKGNbZD4+Ml18MCkqMjB8MCk+PjJdO2NbZT4+Ml09Y1tlPj4yXXxjWyhjW2Y+PjJdfDApKzQ+PjJdO2NbZD4+Ml09KGNbZD4+Ml18MCkrMX1hPWNbZT4+Ml18MDtpPWc7cmV0dXJuIGF8MH1mdW5jdGlvbiBFeihhLGQsZSxmKXthPWF8MDtkPWR8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wO209aTtpPWkrMzJ8MDtuPW0rMjB8MDtnPW0rMTZ8MDtoPW0rMTJ8MDtqPW0rOHwwO2s9bSs0fDA7bD1tO2Nbbj4+Ml09YTtjW2c+PjJdPWQ7Y1toPj4yXT1lO2Nbaj4+Ml09ZjtjW2s+PjJdPWp3KGNbbj4+Ml18MCwxNTIsMCwwKXwwO2lmKCEoY1trPj4yXXwwKSl7bj1jW2s+PjJdfDA7aT1tO3JldHVybiBufDB9Y1tsPj4yXT0oY1tnPj4yXXwwKSs4KygoY1toPj4yXXwwKSo3MnwwKTtjWyhjW2s+PjJdfDApKzQ0Pj4yXT1jWyhjW2w+PjJdfDApKzE2Pj4yXTtjWyhjW2s+PjJdfDApKzI4Pj4yXT1jWyhjW2w+PjJdfDApKzQ0Pj4yXTtpZigoYlsoY1soY1trPj4yXXwwKSs0ND4+Ml18MCkrMzI+PjFdfDApPT0oY1tqPj4yXXwwKSliWyhjW2s+PjJdfDApKzMyPj4xXT0tMTtlbHNle2JbKGNbaz4+Ml18MCkrMzI+PjFdPWNbaj4+Ml07ZT1XUigxLDAsKChjW2o+PjJdfDApPj02ND82MzpjW2o+PjJdfDApfDApfDA7bj0oY1tsPj4yXXwwKSs1NnwwO2w9bjtkPWNbbCs0Pj4yXXxDO2Nbbj4+Ml09Y1tsPj4yXXxlO2Nbbis0Pj4yXT1kfW49KGNbaz4+Ml18MCkrNHwwO2Nbbj4+Ml09Y1tuPj4yXXw0O249Y1trPj4yXXwwO2k9bTtyZXR1cm4gbnwwfWZ1bmN0aW9uIEZ6KGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MDttPWk7aT1pKzMyfDA7ZT1tKzI0fDA7Zj1tKzIwfDA7Zz1tKzE2fDA7aD1tKzEyfDA7bD1tKzh8MDtrPW0rNHwwO2o9bTtjW2Y+PjJdPWE7Y1tnPj4yXT1iO2NbaD4+Ml09ZDthOmRvIGlmKChjWyhjW2c+PjJdfDApKzQ+PjJdfDApPT0wPyhkPWNbKGNbZz4+Ml18MCkrOD4+Ml18MCxjW2w+PjJdPWQsKGR8MCkhPTApOjApe2Nbaz4+Ml09Y1tmPj4yXTtiOndoaWxlKDEpe2lmKCEoY1trPj4yXXwwKSlicmVhayBhO2Nbaj4+Ml09MDt3aGlsZSgxKXtpZigoY1tqPj4yXXwwKT49KGNbY1trPj4yXT4+Ml18MCkpYnJlYWs7aWYoIShpZyhjW2w+PjJdfDAsY1soY1trPj4yXXwwKSs4KyhjW2o+PjJdPDw0KT4+Ml18MCl8MCkpYnJlYWsgYjtjW2o+PjJdPShjW2o+PjJdfDApKzF9Y1trPj4yXT1jWyhjW2s+PjJdfDApKzQ+PjJdfWNbY1toPj4yXT4+Ml09Y1trPj4yXTtjW2U+PjJdPShjW2s+PjJdfDApKzgrKGNbaj4+Ml08PDQpO2w9Y1tlPj4yXXwwO2k9bTtyZXR1cm4gbHwwfXdoaWxlKDApO2NbZT4+Ml09MDtsPWNbZT4+Ml18MDtpPW07cmV0dXJuIGx8MH1mdW5jdGlvbiBHeihhLGUsZil7YT1hfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTA7cj1pO2k9aSs0OHwwO2c9ciszNnwwO2g9ciszMnwwO2o9cisyOHwwO2s9cisyNHwwO249cisyMHwwO2w9cisxNnwwO209cisxMnwwO289cis4fDA7cD1yKzR8MDtxPXI7Y1toPj4yXT1hO2Nbaj4+Ml09ZTtjW2s+PjJdPWY7aWYoIShjW2o+PjJdfDApKXtjW2c+PjJdPTA7cT1jW2c+PjJdfDA7aT1yO3JldHVybiBxfDB9aWYoKGNbY1tqPj4yXT4+Ml18MCk+MClhPSgoY1tjW2o+PjJdPj4yXXwwKS0xfDApKjcyfDA7ZWxzZSBhPTA7Y1ttPj4yXT04MCthO209Y1ttPj4yXXwwO2Nbbj4+Ml09VncoY1toPj4yXXwwLG0sKChtfDApPDApPDwzMT4+MzEpfDA7aWYoIShjW24+PjJdfDApKXtjW2c+PjJdPTA7cT1jW2c+PjJdfDA7aT1yO3JldHVybiBxfDB9bT1jW2Nbaj4+Ml0+PjJdfDA7Y1soY1tuPj4yXXwwKSs0Pj4yXT1tO2NbY1tuPj4yXT4+Ml09bTtjW2w+PjJdPTA7d2hpbGUoMSl7aWYoKGNbbD4+Ml18MCk+PShjW2Nbaj4+Ml0+PjJdfDApKWJyZWFrO2Nbbz4+Ml09KGNbbj4+Ml18MCkrOCsoKGNbbD4+Ml18MCkqNzJ8MCk7Y1twPj4yXT0oY1tqPj4yXXwwKSs4KygoY1tsPj4yXXwwKSo3MnwwKTtjW2Nbbz4+Ml0+PjJdPWNbY1twPj4yXT4+Ml07bT1xaChjW2g+PjJdfDAsY1soY1twPj4yXXwwKSs0Pj4yXXwwKXwwO2NbKGNbbz4+Ml18MCkrND4+Ml09bTttPXFoKGNbaD4+Ml18MCxjWyhjW3A+PjJdfDApKzg+PjJdfDApfDA7Y1soY1tvPj4yXXwwKSs4Pj4yXT1tO209cWgoY1toPj4yXXwwLGNbKGNbcD4+Ml18MCkrMTI+PjJdfDApfDA7Y1soY1tvPj4yXXwwKSsxMj4+Ml09bTtjWyhjW28+PjJdfDApKzM2Pj4yXT1jWyhjW3A+PjJdfDApKzM2Pj4yXTtjWyhjW28+PjJdfDApKzQ0Pj4yXT1jWyhjW3A+PjJdfDApKzQ0Pj4yXTtjWyhjW28+PjJdfDApKzI0Pj4yXT1jWyhjW3A+PjJdfDApKzI0Pj4yXTtjWyhjW28+PjJdfDApKzI4Pj4yXT1jWyhjW3A+PjJdfDApKzI4Pj4yXTtpZigoZFsoY1tvPj4yXXwwKSszNisxPj4wXXwwKT4+PjEmMSl7bT1xaChjW2g+PjJdfDAsY1soY1twPj4yXXwwKSs2ND4+Ml18MCl8MDtjWyhjW28+PjJdfDApKzY0Pj4yXT1tfWNbKGNbbz4+Ml18MCkrNjg+PjJdPWNbKGNbcD4+Ml18MCkrNjg+PjJdO2lmKChkWyhjW28+PjJdfDApKzM2KzE+PjBdfDApPj4+MiYxKXttPVF5KGNbaD4+Ml18MCxjWyhjW3A+PjJdfDApKzY0Pj4yXXwwLGNbaz4+Ml18MCl8MDtjWyhjW28+PjJdfDApKzY0Pj4yXT1tfW09Y1soY1twPj4yXXwwKSsxNj4+Ml18MDtjWyhjW28+PjJdfDApKzE2Pj4yXT1tO2NbcT4+Ml09bTtpZihjW3E+PjJdfDApe209KGNbcT4+Ml18MCkrMzZ8MDtiW20+PjFdPShiW20+PjFdfDApKzE8PDE2Pj4xNn1mPV94KGNbaD4+Ml18MCxjWyhjW3A+PjJdfDApKzIwPj4yXXwwLGNbaz4+Ml18MCl8MDtjWyhjW28+PjJdfDApKzIwPj4yXT1mO2Y9SXkoY1toPj4yXXwwLGNbKGNbcD4+Ml18MCkrNDg+PjJdfDAsY1trPj4yXXwwKXwwO2NbKGNbbz4+Ml18MCkrNDg+PjJdPWY7Zj1JeihjW2g+PjJdfDAsY1soY1twPj4yXXwwKSs1Mj4+Ml18MCl8MDtjWyhjW28+PjJdfDApKzUyPj4yXT1mO2Y9KGNbcD4+Ml18MCkrNTZ8MDtlPWNbZis0Pj4yXXwwO209KGNbbz4+Ml18MCkrNTZ8MDtjW20+PjJdPWNbZj4+Ml07Y1ttKzQ+PjJdPWU7Y1tsPj4yXT0oY1tsPj4yXXwwKSsxfWNbZz4+Ml09Y1tuPj4yXTtxPWNbZz4+Ml18MDtpPXI7cmV0dXJuIHF8MH1mdW5jdGlvbiBIeihhLGIpe2E9YXwwO2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MDtqPWk7aT1pKzMyfDA7ZD1qKzE2fDA7ZT1qKzEyfDA7aD1qKzh8MDtnPWorNHwwO2Y9ajtjW2Q+PjJdPWE7Y1tlPj4yXT1iO2NbaD4+Ml09MDtpZighKGNbZT4+Ml18MCkpe2g9Y1toPj4yXXwwO2k9ajtyZXR1cm4gaHwwfWNbZz4+Ml09MjQrKChjW2NbZT4+Ml0+PjJdfDApLTE8PDQpO2I9Y1tnPj4yXXwwO2NbaD4+Ml09c2goY1tkPj4yXXwwLGIsKChifDApPDApPDwzMT4+MzEpfDA7aWYoIShjW2g+PjJdfDApKXtoPWNbaD4+Ml18MDtpPWo7cmV0dXJuIGh8MH1jW2NbaD4+Ml0+PjJdPWNbY1tlPj4yXT4+Ml07Y1tmPj4yXT0wO3doaWxlKDEpe2lmKChjW2Y+PjJdfDApPj0oY1tjW2U+PjJdPj4yXXwwKSlicmVhaztiPV94KGNbZD4+Ml18MCxjWyhjW2U+PjJdfDApKzgrKGNbZj4+Ml08PDQpKzg+PjJdfDAsMCl8MDtjWyhjW2g+PjJdfDApKzgrKGNbZj4+Ml08PDQpKzg+PjJdPWI7Yj1ReShjW2Q+PjJdfDAsY1soY1tlPj4yXXwwKSs4KyhjW2Y+PjJdPDw0KSs0Pj4yXXwwLDApfDA7Y1soY1toPj4yXXwwKSs4KyhjW2Y+PjJdPDw0KSs0Pj4yXT1iO2I9cWgoY1tkPj4yXXwwLGNbKGNbZT4+Ml18MCkrOCsoY1tmPj4yXTw8NCk+PjJdfDApfDA7Y1soY1toPj4yXXwwKSs4KyhjW2Y+PjJdPDw0KT4+Ml09YjtjW2Y+PjJdPShjW2Y+PjJdfDApKzF9aD1jW2g+PjJdfDA7aT1qO3JldHVybiBofDB9ZnVuY3Rpb24gSXooYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MDtsPWk7aT1pKzMyfDA7ZD1sKzI0fDA7ZT1sKzIwfDA7Zj1sKzE2fDA7aD1sKzEyfDA7Zz1sKzh8MDtqPWwrNHwwO2s9bDtjW2U+PjJdPWE7Y1tmPj4yXT1iO2lmKCEoY1tmPj4yXXwwKSl7Y1tkPj4yXT0wO2s9Y1tkPj4yXXwwO2k9bDtyZXR1cm4ga3wwfWNbaD4+Ml09VncoY1tlPj4yXXwwLDgsMCl8MDtpZighKGNbaD4+Ml18MCkpe2NbZD4+Ml09MDtrPWNbZD4+Ml18MDtpPWw7cmV0dXJuIGt8MH1jWyhjW2g+PjJdfDApKzQ+PjJdPWNbKGNbZj4+Ml18MCkrND4+Ml07Yj1WdyhjW2U+PjJdfDAsY1soY1tmPj4yXXwwKSs0Pj4yXTw8MywwKXwwO2NbY1toPj4yXT4+Ml09YjtpZighKGNbY1toPj4yXT4+Ml18MCkpe1RmKGNbZT4+Ml18MCxjW2g+PjJdfDApO2NbZD4+Ml09MDtrPWNbZD4+Ml18MDtpPWw7cmV0dXJuIGt8MH1jW2c+PjJdPTA7d2hpbGUoMSl7aWYoKGNbZz4+Ml18MCk+PShjWyhjW2Y+PjJdfDApKzQ+PjJdfDApKWJyZWFrO2Nbaj4+Ml09KGNbY1toPj4yXT4+Ml18MCkrKGNbZz4+Ml08PDMpO2Nbaz4+Ml09KGNbY1tmPj4yXT4+Ml18MCkrKGNbZz4+Ml08PDMpO2I9cWgoY1tlPj4yXXwwLGNbY1trPj4yXT4+Ml18MCl8MDtjW2Nbaj4+Ml0+PjJdPWI7Y1soY1tqPj4yXXwwKSs0Pj4yXT1jWyhjW2s+PjJdfDApKzQ+PjJdO2NbZz4+Ml09KGNbZz4+Ml18MCkrMX1jW2Q+PjJdPWNbaD4+Ml07az1jW2Q+PjJdfDA7aT1sO3JldHVybiBrfDB9ZnVuY3Rpb24gSnooZSxmLGcsaCxqKXtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDt2YXIgaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MCxFPTAsRj0wLEc9MCxIPTAsST0wLEo9MCxLPTAsTD0wLE09MCxOPTA7Tj1pO2k9aSsxNDR8MDtCPU4rMzJ8MDtLPU4rMjR8MDtKPU4rMTZ8MDttPU4rOHwwO2w9TjtFPU4rMTMyfDA7Rj1OKzEyOHwwO289TisxMjR8MDtwPU4rMTIwfDA7cT1OKzExNnwwO0c9TisxMTJ8MDtBPU4rOTZ8MDtIPU4rOTJ8MDtJPU4rODh8MDtyPU4rODR8MDt3PU4rODB8MDtMPU4rNzZ8MDtNPU4rNzJ8MDt1PU4rNjh8MDtrPU4rNjR8MDtDPU4rNjB8MDt0PU4rNTZ8MDt6PU4rMTM2fDA7RD1OKzUyfDA7eT1OKzQ4fDA7cz1OKzQ0fDA7dj1OKzQwfDA7eD1OKzM2fDA7Y1tGPj4yXT1lO2Nbbz4+Ml09ZjtjW3A+PjJdPWc7Y1txPj4yXT1oO2NbRz4+Ml09ajtjW3I+PjJdPWNbKGNbbz4+Ml18MCkrNTI+PjJdO2Nbdz4+Ml09Y1soY1tvPj4yXXwwKSs0OD4+Ml07Y1tMPj4yXT0wO2Nbaz4+Ml09Y1soY1tGPj4yXXwwKSszMzY+PjJdO3doaWxlKDEpe2lmKCEoY1trPj4yXXwwKSlicmVhaztpZigoY1soY1trPj4yXXwwKSs0Pj4yXXwwKT09KGNbbz4+Ml18MCkpe249NDticmVha31jW2s+PjJdPWNbKGNbaz4+Ml18MCkrOD4+Ml19aWYoKG58MCk9PTQpe009Y1tGPj4yXXwwO2NbbD4+Ml09Y1tjW28+PjJdPj4yXTtNPUdoKE0sMzA2NTAsbCl8MDtjW2NbRz4+Ml0+PjJdPU07Y1tFPj4yXT02O009Y1tFPj4yXXwwO2k9TjtyZXR1cm4gTXwwfW49Y1tGPj4yXXwwO2NbbT4+Ml09Y1tjW28+PjJdPj4yXTtjW00+PjJdPUdoKG4sMTgzOTEsbSl8MDtpZighKGNbTT4+Ml18MCkpe2NbRT4+Ml09NztNPWNbRT4+Ml18MDtpPU47cmV0dXJuIE18MH1jW0g+PjJdPXNoKGNbRj4+Ml18MCwyOCwwKXwwO2U9Y1tGPj4yXXwwO2lmKCEoY1tIPj4yXXwwKSl7VGYoZSxjW00+PjJdfDApO2NbRT4+Ml09NztNPWNbRT4+Ml18MDtpPU47cmV0dXJuIE18MH1jW2NbSD4+Ml0+PjJdPWU7Y1soY1tIPj4yXXwwKSs0Pj4yXT1jW3A+PjJdO2NbdT4+Ml09RmgoY1tGPj4yXXwwLGNbKGNbbz4+Ml18MCkrNjQ+PjJdfDApfDA7Y1soY1soY1tvPj4yXXwwKSs1Mj4+Ml18MCkrND4+Ml09Y1soY1soY1tGPj4yXXwwKSsxNj4+Ml18MCkrKGNbdT4+Ml08PDQpPj4yXTtjW0ErND4+Ml09Y1tvPj4yXTtjW0E+PjJdPWNbSD4+Ml07Y1tBKzg+PjJdPWNbKGNbRj4+Ml18MCkrMzM2Pj4yXTtjW0ErMTI+PjJdPTA7Y1soY1tGPj4yXXwwKSszMzY+PjJdPUE7Y1tJPj4yXT1TYltjW3E+PjJdJjI1NV0oY1tGPj4yXXwwLGNbKGNbcD4+Ml18MCkrOD4+Ml18MCxjW3c+PjJdfDAsY1tyPj4yXXwwLChjW0g+PjJdfDApKzh8MCxMKXwwO2NbKGNbRj4+Ml18MCkrMzM2Pj4yXT1jW0ErOD4+Ml07aWYoKGNbST4+Ml18MCk9PTcpbWgoY1tGPj4yXXwwKTthOmRvIGlmKCEoY1tJPj4yXXwwKSl7aWYoY1soY1tIPj4yXXwwKSs4Pj4yXXwwKXtMPWNbKGNbSD4+Ml18MCkrOD4+Ml18MDtjW0w+PjJdPTA7Y1tMKzQ+PjJdPTA7Y1tMKzg+PjJdPTA7Y1tjWyhjW0g+PjJdfDApKzg+PjJdPj4yXT1jW2NbcD4+Ml0+PjJdO2NbKGNbSD4+Ml18MCkrMTI+PjJdPTE7aWYoIShjW0ErMTI+PjJdfDApKXtjW0M+PjJdPTMwNzIyO0s9Y1tGPj4yXXwwO0w9Y1tDPj4yXXwwO2NbQj4+Ml09Y1tjW28+PjJdPj4yXTtMPUdoKEssTCxCKXwwO2NbY1tHPj4yXT4+Ml09TDtzdShjW0g+PjJdfDApO2NbST4+Ml09MTticmVha31hW3o+PjBdPTA7Y1soY1tIPj4yXXwwKSsyND4+Ml09Y1soY1tvPj4yXXwwKSs1Nj4+Ml07Y1soY1tvPj4yXXwwKSs1Nj4+Ml09Y1tIPj4yXTtjW3Q+PjJdPTA7d2hpbGUoMSl7aWYoKGNbdD4+Ml18MCk+PShiWyhjW28+PjJdfDApKzM0Pj4xXXwwKSlicmVhayBhO2NbRD4+Ml09dmkoKGNbKGNbbz4+Ml18MCkrND4+Ml18MCkrKGNbdD4+Ml08PDQpfDAsMTg0MDIpfDA7Y1tzPj4yXT0wO2NbeT4+Ml09SmYoY1tEPj4yXXwwKXwwO2Nbcz4+Ml09MDtiOndoaWxlKDEpe2lmKChjW3M+PjJdfDApPj0oY1t5Pj4yXXwwKSlicmVhaztkbyBpZighKHpkKDMwNzY4LChjW0Q+PjJdfDApKyhjW3M+PjJdfDApfDAsNil8MCkpe2lmKChjW3M+PjJdfDApIT0wPyhhWyhjW0Q+PjJdfDApKygoY1tzPj4yXXwwKS0xKT4+MF18MCkhPTMyOjApYnJlYWs7aWYoIShhWyhjW0Q+PjJdfDApKygoY1tzPj4yXXwwKSs2KT4+MF18MCkpYnJlYWsgYjtpZigoYVsoY1tEPj4yXXwwKSsoKGNbcz4+Ml18MCkrNik+PjBdfDApPT0zMilicmVhayBifXdoaWxlKDApO2Nbcz4+Ml09KGNbcz4+Ml18MCkrMX1pZigoY1tzPj4yXXwwKTwoY1t5Pj4yXXwwKSl7Y1t4Pj4yXT02KygoYVsoY1tEPj4yXXwwKSsoKGNbcz4+Ml18MCkrNik+PjBdfDApIT0wPzE6MCk7Y1t2Pj4yXT1jW3M+PjJdO3doaWxlKDEpe2lmKCgoY1t2Pj4yXXwwKSsoY1t4Pj4yXXwwKXwwKT4oY1t5Pj4yXXwwKSlicmVhazthWyhjW0Q+PjJdfDApKyhjW3Y+PjJdfDApPj4wXT1hWyhjW0Q+PjJdfDApKygoY1t2Pj4yXXwwKSsoY1t4Pj4yXXwwKSk+PjBdfDA7Y1t2Pj4yXT0oY1t2Pj4yXXwwKSsxfWlmKChjW3M+PjJdfDApPjA/KGFbKGNbRD4+Ml18MCkrKGNbcz4+Ml18MCk+PjBdfDApPT0wOjApYVsoY1tEPj4yXXwwKSsoKGNbcz4+Ml18MCktMSk+PjBdPTA7TD0oY1soY1tvPj4yXXwwKSs0Pj4yXXwwKSsoY1t0Pj4yXTw8NCkrMTV8MDthW0w+PjBdPWRbTD4+MF18MjthW3o+PjBdPS0xMjh9ZWxzZXtMPShjW28+PjJdfDApKzQyfDA7YVtMPj4wXT1kW0w+PjBdfGRbej4+MF19Y1t0Pj4yXT0oY1t0Pj4yXXwwKSsxfX19ZWxzZXtlPWNbRj4+Ml18MDtpZighKGNbTD4+Ml18MCkpe2NbSj4+Ml09Y1tNPj4yXTtMPUdoKGUsMzA2OTIsSil8MDtjW2NbRz4+Ml0+PjJdPUx9ZWxzZXtjW0s+PjJdPWNbTD4+Ml07Sz1HaChlLDE4MzkxLEspfDA7Y1tjW0c+PjJdPj4yXT1LO0tkKGNbTD4+Ml18MCl9VGYoY1tGPj4yXXwwLGNbSD4+Ml18MCl9d2hpbGUoMCk7VGYoY1tGPj4yXXwwLGNbTT4+Ml18MCk7Y1tFPj4yXT1jW0k+PjJdO009Y1tFPj4yXXwwO2k9TjtyZXR1cm4gTXwwfWZ1bmN0aW9uIEt6KGIpe2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTA7Zz1pO2k9aSsxNnwwO2Q9Zys4fDA7Zj1nKzR8MDtlPWc7Y1tkPj4yXT1iO2NbZj4+Ml09MDtjW2U+PjJdPWNbY1tkPj4yXT4+Ml07aWYoIShhWyhjW2U+PjJdfDApKzE0OCs1Pj4wXXwwKSljW2Y+PjJdPXNpKGNbZT4+Ml18MCwoY1tkPj4yXXwwKSs0fDApfDA7aWYoIShjW2Y+PjJdfDApKXtmPWNbZj4+Ml18MDtpPWc7cmV0dXJuIGZ8MH1jWyhjW2Q+PjJdfDApKzEyPj4yXT1jW2Y+PjJdO2I9KGNbZD4+Ml18MCkrMzZ8MDtjW2I+PjJdPShjW2I+PjJdfDApKzE7Zj1jW2Y+PjJdfDA7aT1nO3JldHVybiBmfDB9ZnVuY3Rpb24gTHooYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wO2w9aTtpPWkrNDh8MDtkPWwrMzJ8MDtlPWwrMjh8MDtuPWwrMjR8MDttPWwrMjB8MDtqPWwrMTZ8MDtnPWwrMTJ8MDtmPWwrOHwwO2g9bCs0fDA7az1sO2NbZD4+Ml09YTtjW2U+PjJdPWI7Y1tuPj4yXT1jW2NbZD4+Ml0+PjJdO2NbbT4+Ml09Y1soY1soY1tuPj4yXXwwKSsxNj4+Ml18MCkrKGNbZT4+Ml08PDQpKzEyPj4yXTtyeChjW2Q+PjJdfDAsMCxjW2U+PjJdfDApO2NbZz4+Ml09Y1soY1tkPj4yXXwwKSs0MD4+Ml07YT0oY1tkPj4yXXwwKSs0MHwwO2NbYT4+Ml09KGNbYT4+Ml18MCkrMztQeihjW2Q+PjJdfDAsY1tlPj4yXXwwLGNbZz4+Ml18MCwwLDApO2NbZj4+Ml09KGNbKGNbZD4+Ml18MCkrNDQ+PjJdfDApKzE7Y1toPj4yXT1jWyhjW2Q+PjJdfDApKzQwPj4yXTtjW2o+PjJdPWNbKGNbbT4+Ml18MCkrOCs4Pj4yXTt3aGlsZSgxKXtpZighKGNbaj4+Ml18MCkpYnJlYWs7Y1trPj4yXT1jWyhjW2o+PjJdfDApKzg+PjJdO1F6KGNbZD4+Ml18MCxjW2s+PjJdfDAsMCxjW2c+PjJdfDAsY1tmPj4yXXwwLGNbaD4+Ml18MCk7Y1tqPj4yXT1jW2Nbaj4+Ml0+PjJdfVJ6KGNbZD4+Ml18MCxjW2U+PjJdfDApO2k9bDtyZXR1cm59ZnVuY3Rpb24gTXooYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MDtlPWk7aT1pKzE2fDA7Zz1lKzEyfDA7aD1lKzh8MDtkPWUrNHwwO2Y9ZTtjW2c+PjJdPWE7Y1toPj4yXT1iO2NbZj4+Ml09VHcoY1tnPj4yXXwwLGNbaD4+Ml18MCl8MDtjW2Q+PjJdPW5pKGNbZz4+Ml18MCxjW2Y+PjJdfDApfDA7VGYoY1tnPj4yXXwwLGNbZj4+Ml18MCk7aT1lO3JldHVybiBjW2Q+PjJdfDB9ZnVuY3Rpb24gTnooYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MDtrPWk7aT1pKzMyfDA7ZT1rKzE2fDA7Zj1rKzEyfDA7Zz1rKzh8MDtoPWsrNHwwO2o9aztjW2U+PjJdPWE7Y1tmPj4yXT1iO2NbZz4+Ml09ZDtjW2g+PjJdPUZoKGNbY1tlPj4yXT4+Ml18MCxjWyhjW2Y+PjJdfDApKzY0Pj4yXXwwKXwwO3J4KGNbZT4+Ml18MCwwLGNbaD4+Ml18MCk7Y1tqPj4yXT1jWyhjW2U+PjJdfDApKzQwPj4yXTtkPShjW2U+PjJdfDApKzQwfDA7Y1tkPj4yXT0oY1tkPj4yXXwwKSszO2Q9Y1tlPj4yXXwwO2E9Y1toPj4yXXwwO2I9Y1tqPj4yXXwwO2lmKGNbZz4+Ml18MClQeihkLGEsYixjW2NbZz4+Ml0+PjJdfDAsMzA4NTQpO2Vsc2UgUHooZCxhLGIsY1tjW2Y+PjJdPj4yXXwwLDMwODU4KTtReihjW2U+PjJdfDAsY1tmPj4yXXwwLGNbZz4+Ml18MCxjW2o+PjJdfDAsKGNbKGNbZT4+Ml18MCkrNDQ+PjJdfDApKzF8MCxjWyhjW2U+PjJdfDApKzQwPj4yXXwwKTtSeihjW2U+PjJdfDAsY1toPj4yXXwwKTtpPWs7cmV0dXJufWZ1bmN0aW9uIE96KGIsZSxmLGcpe2I9YnwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO3ZhciBoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTA7cj1pO2k9aSs0OHwwO3E9cis4fDA7cD1yO2g9ciszNnwwO2o9ciszMnwwO2s9cisyOHwwO2w9cisyNHwwO209cisyMHwwO289cisxNnwwO249cisxMnwwO2Nbaj4+Ml09YjtjW2s+PjJdPWU7Y1tsPj4yXT1mO2NbbT4+Ml09ZztjW24+PjJdPWNbY1tqPj4yXT4+Ml07ZT0oY1tuPj4yXXwwKSsxNDh8MDtpZigoY1soY1tsPj4yXXwwKSs0Pj4yXXwwKT4+PjA+MCl7aWYoYVtlKzU+PjBdfDApe0VoKGNbaj4+Ml18MCwzMDgxNyxwKTtjW2g+PjJdPS0xO3E9Y1toPj4yXXwwO2k9cjtyZXR1cm4gcXwwfWNbY1ttPj4yXT4+Ml09Y1tsPj4yXTtjW28+PjJdPU16KGNbbj4+Ml18MCxjW2s+PjJdfDApfDA7aWYoKGNbbz4+Ml18MCk8MCl7cD1jW2o+PjJdfDA7Y1txPj4yXT1jW2s+PjJdO0VoKHAsMzA4MzQscSk7Y1toPj4yXT0tMTtxPWNbaD4+Ml18MDtpPXI7cmV0dXJuIHF8MH19ZWxzZXtjW28+PjJdPWRbZSs0Pj4wXTtjW2NbbT4+Ml0+PjJdPWNbaz4+Ml19Y1toPj4yXT1jW28+PjJdO3E9Y1toPj4yXXwwO2k9cjtyZXR1cm4gcXwwfWZ1bmN0aW9uIFB6KGIsZCxlLGYsZyl7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7dmFyIGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MDt4PWk7aT1pKzk2fDA7dj14KzE2fDA7dT14O2g9eCs4NHwwO2o9eCs4MHwwO2s9eCs3NnwwO2w9eCs3MnwwO209eCs2OHwwO3E9eCs2NHwwO3A9eCs2MHwwO3I9eCs1NnwwO3Q9eCs1MnwwO289eCs0MHwwO249eCs4OHwwO3c9eCszNnwwO3M9eCszMnwwO2NbaD4+Ml09YjtjW2o+PjJdPWQ7Y1trPj4yXT1lO2NbbD4+Ml09ZjtjW20+PjJdPWc7Y1twPj4yXT1jW2NbaD4+Ml0+PjJdO2NbdD4+Ml09ZHgoY1toPj4yXXwwKXwwO2lmKCEoY1t0Pj4yXXwwKSl7aT14O3JldHVybn1jW3I+PjJdPShjWyhjW3A+PjJdfDApKzE2Pj4yXXwwKSsoY1tqPj4yXTw8NCk7Y1txPj4yXT0wO3doaWxlKDEpe2lmKChjW3E+PjJdfDApPj0zKWJyZWFrO2Nbdz4+Ml09Y1s0Mzk2KyhjW3E+PjJdPDwzKT4+Ml07Zz10aShjW3A+PjJdfDAsY1t3Pj4yXXwwLGNbY1tyPj4yXT4+Ml18MCl8MDtjW3M+PjJdPWc7ZG8gaWYoIWcpe2lmKGNbNDM5NisoY1txPj4yXTw8MykrND4+Ml18MCl7Zz1jW2g+PjJdfDA7Yj1jW3c+PjJdfDA7Zj1jWzQzOTYrKGNbcT4+Ml08PDMpKzQ+PjJdfDA7Y1t1Pj4yXT1jW2Nbcj4+Ml0+PjJdO2NbdSs0Pj4yXT1iO2NbdSs4Pj4yXT1mO2N4KGcsMzA5MTUsdSk7Y1tvKyhjW3E+PjJdPDwyKT4+Ml09Y1soY1toPj4yXXwwKSsxMDQ+PjJdO2FbbisoY1txPj4yXXwwKT4+MF09MTZ9fWVsc2V7Y1tvKyhjW3E+PjJdPDwyKT4+Ml09Y1soY1tzPj4yXXwwKSsyOD4+Ml07YVtuKyhjW3E+PjJdfDApPj4wXT0wO1R6KGNbaD4+Ml18MCxjW2o+PjJdfDAsY1tvKyhjW3E+PjJdPDwyKT4+Ml18MCwxLGNbdz4+Ml18MCk7aWYoY1tsPj4yXXwwKXtnPWNbaD4+Ml18MDtlPWNbdz4+Ml18MDtiPWNbbT4+Ml18MDtmPWNbbD4+Ml18MDtjW3Y+PjJdPWNbY1tyPj4yXT4+Ml07Y1t2KzQ+PjJdPWU7Y1t2Kzg+PjJdPWI7Y1t2KzEyPj4yXT1mO2N4KGcsMzA5Mzgsdik7YnJlYWt9ZWxzZXtpeChjW3Q+PjJdfDAsMTMxLGNbbysoY1txPj4yXTw8Mik+PjJdfDAsY1tqPj4yXXwwKXwwO2JyZWFrfX13aGlsZSgwKTtjW3E+PjJdPShjW3E+PjJdfDApKzF9Y1txPj4yXT0wO3doaWxlKDEpe2lmKCEoY1s0Mzk2KyhjW3E+PjJdPDwzKSs0Pj4yXXwwKSlicmVhaztJaChjW3Q+PjJdfDAsMTA1LChjW2s+PjJdfDApKyhjW3E+PjJdfDApfDAsY1tvKyhjW3E+PjJdPDwyKT4+Ml18MCxjW2o+PjJdfDAsMyl8MDtKaChjW3Q+PjJdfDAsYVtuKyhjW3E+PjJdfDApPj4wXXwwKTtjW3E+PjJdPShjW3E+PjJdfDApKzF9aT14O3JldHVybn1mdW5jdGlvbiBReihiLGYsZyxoLGosayl7Yj1ifDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7dmFyIGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MCxFPTAsRj0wLEc9MCxIPTAsST0wLEo9MCxLPTAsTD0wLE09MCxOPTAsTz0wLFA9MCxRPTAsUj0wO1I9aTtpPWkrMTI4fDA7bj1SKzExNnwwO289UisxMTJ8MDtwPVIrMTA4fDA7cT1SKzEwNHwwO2w9UisxMDB8MDttPVIrOTZ8MDt1PVIrOTJ8MDtGPVIrODh8MDt5PVIrODR8MDt6PVIrODB8MDtPPVIrNzZ8MDt3PVIrNzJ8MDtBPVIrNjh8MDt4PVIrNjR8MDtEPVIrMTIwfDA7ST1SKzYwfDA7TD1SKzU2fDA7Rz1SKzUyfDA7Tj1SKzQ4fDA7TT1SKzQ0fDA7SD1SKzQwfDA7Sz1SKzM2fDA7Sj1SKzMyfDA7Qj1SKzI4fDA7dD1SKzI0fDA7cz1SKzIwfDA7UD1SKzE2fDA7Qz1SKzEyfDA7dj1SKzh8MDtyPVIrNHwwO0U9UjtjW24+PjJdPWI7Y1tvPj4yXT1mO2NbcD4+Ml09ZztjW3E+PjJdPWg7Y1tsPj4yXT1qO2NbbT4+Ml09aztjW3U+PjJdPWNbY1tuPj4yXT4+Ml07Y1tBPj4yXT0tMTthW0Q+PjBdPTE7Zj1jW2w+PjJdfDA7Y1tsPj4yXT1mKzE7Y1tJPj4yXT1mO2Y9Y1tsPj4yXXwwO2NbbD4+Ml09ZisxO2NbTD4+Ml09ZjtmPWNbbD4+Ml18MDtjW2w+PjJdPWYrMTtjW0c+PjJdPWY7Zj1jW2w+PjJdfDA7Y1tsPj4yXT1mKzE7Y1tOPj4yXT1mO2Y9Y1tsPj4yXXwwO2NbbD4+Ml09ZisxO2NbTT4+Ml09ZjtmPWNbbD4+Ml18MDtjW2w+PjJdPWYrMTtjW0g+PjJdPWY7Zj1jW2w+PjJdfDA7Y1tsPj4yXT1mKzE7Y1tLPj4yXT1mO2NbSj4+Ml09Y1tsPj4yXTtpZigoY1soY1tuPj4yXXwwKSs0ND4+Ml18MCk+KGNbbD4+Ml18MCkpbD1jWyhjW24+PjJdfDApKzQ0Pj4yXXwwO2Vsc2UgbD1jW2w+PjJdfDA7Y1soY1tuPj4yXXwwKSs0ND4+Ml09bDtjW08+PjJdPWR4KGNbbj4+Ml18MCl8MDtpZigoY1tPPj4yXXwwKT09MHwoY1tvPj4yXXwwKT09MCl7aT1SO3JldHVybn1pZighKGNbKGNbbz4+Ml18MCkrMjg+PjJdfDApKXtpPVI7cmV0dXJufWlmKCEoX2UoMzA4NjIsY1tjW28+PjJdPj4yXXwwLDApfDApKXtpPVI7cmV0dXJufWNbeD4+Ml09RmgoY1t1Pj4yXXwwLGNbKGNbbz4+Ml18MCkrNjQ+PjJdfDApfDA7aWYoYXgoY1tuPj4yXXwwLDI4LGNbY1tvPj4yXT4+Ml18MCwwLGNbKGNbKGNbdT4+Ml18MCkrMTY+PjJdfDApKyhjW3g+PjJdPDw0KT4+Ml18MCl8MCl7aT1SO3JldHVybn1UeihjW24+PjJdfDAsY1t4Pj4yXXwwLGNbKGNbbz4+Ml18MCkrMjg+PjJdfDAsMCxjW2Nbbz4+Ml0+PjJdfDApO2Y9Y1ttPj4yXXwwO2NbbT4+Ml09ZisxO2Nbej4+Ml09ZjtmPWNbbT4+Ml18MDtjW20+PjJdPWYrMTtjW3k+PjJdPWY7aWYoKGNbKGNbbj4+Ml18MCkrNDA+PjJdfDApPihjW20+PjJdfDApKWw9Y1soY1tuPj4yXXwwKSs0MD4+Ml18MDtlbHNlIGw9Y1ttPj4yXXwwO2NbKGNbbj4+Ml18MCkrNDA+PjJdPWw7VXooY1tuPj4yXXwwLGNbej4+Ml18MCxjW3g+PjJdfDAsY1tvPj4yXXwwLDEwNCk7aHgoY1tPPj4yXXwwLGNbTT4+Ml18MCxjW2Nbbz4+Ml0+PjJdfDApfDA7Y1tGPj4yXT1jWyhjW28+PjJdfDApKzg+PjJdO3doaWxlKDEpe2w9Y1twPj4yXXwwO2lmKCEoY1tGPj4yXXwwKSlicmVhaztpZighKChsfDApIT0wPyhjW3A+PjJdfDApIT0oY1tGPj4yXXwwKTowKSlRPTE1O2RvIGlmKChRfDApPT0xNSl7UT0wO2lmKCEoY1soY1tGPj4yXXwwKSszNj4+Ml18MCkpYVtEPj4wXT0wO2lmKCgoZFsoY1tvPj4yXXwwKSs0Mj4+MF18MCkmMzJ8MCkhPTA/KGFbKGNbRj4+Ml18MCkrNTU+PjBdJjN8MCk9PTI6MCl7Y1tCPj4yXT1lWyhjW0Y+PjJdfDApKzUwPj4xXTtjW1A+PjJdPWNbY1tvPj4yXT4+Ml07Y1tDPj4yXT0oY1tCPj4yXXwwKS0xfWVsc2V7Y1tCPj4yXT1lWyhjW0Y+PjJdfDApKzUyPj4xXTtjW1A+PjJdPWNbY1tGPj4yXT4+Ml07aWYoKGRbKGNbRj4+Ml18MCkrNTU+PjBdfDApPj4+MyYxKWw9ZVsoY1tGPj4yXXwwKSs1MD4+MV18MDtlbHNlIGw9Y1tCPj4yXXwwO2NbQz4+Ml09bC0xfWh4KGNbTz4+Ml18MCxjW0g+PjJdfDAsY1tQPj4yXXwwKXwwO2lmKChjWyhjW24+PjJdfDApKzQ0Pj4yXXwwKT4oKGNbSj4+Ml18MCkrKGNbQz4+Ml18MCl8MCkpbD1jWyhjW24+PjJdfDApKzQ0Pj4yXXwwO2Vsc2UgbD0oY1tKPj4yXXwwKSsoY1tDPj4yXXwwKXwwO2NbKGNbbj4+Ml18MCkrNDQ+PjJdPWw7angoY1tPPj4yXXwwLDEwNCxjW3k+PjJdfDAsY1soY1tGPj4yXXwwKSs0ND4+Ml18MCxjW3g+PjJdfDApfDA7VnooY1tuPj4yXXwwLGNbRj4+Ml18MCk7aXgoY1tPPj4yXXwwLDc2LGNbQj4+Ml18MCwoY1tMPj4yXXwwKSsxfDApfDA7aXgoY1tPPj4yXXwwLDc2LGVbKGNbRj4+Ml18MCkrNTA+PjFdfDAsKGNbTD4+Ml18MCkrMnwwKXwwO214KGNbTz4+Ml18MCw4OSwwLChjW0w+PjJdfDApKzF8MCxjW0w+PjJdfDAsNDI5MiwtNSl8MDtKaChjW08+PjJdfDAsMik7Y1t0Pj4yXT1TeihjW08+PjJdfDAsNTcsY1t5Pj4yXXwwKXwwO2l4KGNbTz4+Ml18MCw3NiwwLGNbRz4+Ml18MCl8MDtjW3M+PjJdPXd4KGNbTz4+Ml18MCl8MDtpZigoY1tDPj4yXXwwKT4wKXtjW3Y+PjJdPVd6KGNbTz4+Ml18MCl8MDtjW3I+PjJdPVZ3KGNbdT4+Ml18MCxjW0M+PjJdPDwyLDApfDA7aWYoIShjW3I+PjJdfDApKWJyZWFrO2Z4KGNbTz4+Ml18MCwxMyl8MDtjW3M+PjJdPXd4KGNbTz4+Ml18MCl8MDtpZigoKGNbQz4+Ml18MCk9PTE/KGVbKGNbRj4+Ml18MCkrNTA+PjFdfDB8MCk9PTE6MCk/KGRbKGNbRj4+Ml18MCkrNTQ+PjBdfDB8MCkhPTA6MClpeChjW08+PjJdfDAsMzUsY1tKPj4yXXwwLGNbdj4+Ml18MCl8MDtjW3c+PjJdPTA7d2hpbGUoMSl7aWYoKGNbdz4+Ml18MCk+PShjW0M+PjJdfDApKWJyZWFrO2NbRT4+Ml09WHooY1tuPj4yXXwwLGNbKGNbKGNbRj4+Ml18MCkrMzI+PjJdfDApKyhjW3c+PjJdPDwyKT4+Ml18MCl8MDtpeChjW08+PjJdfDAsNzYsY1t3Pj4yXXwwLGNbRz4+Ml18MCl8MDtqeChjW08+PjJdfDAsOTYsY1t5Pj4yXXwwLGNbdz4+Ml18MCxjW04+PjJdfDApfDA7bT1teChjW08+PjJdfDAsMzYsY1tOPj4yXXwwLDAsKGNbSj4+Ml18MCkrKGNbdz4+Ml18MCl8MCxjW0U+PjJdfDAsLTQpfDA7Y1soY1tyPj4yXXwwKSsoY1t3Pj4yXTw8Mik+PjJdPW07SmgoY1tPPj4yXXwwLC0xMjgpO2Nbdz4+Ml09KGNbdz4+Ml18MCkrMX1peChjW08+PjJdfDAsNzYsY1tDPj4yXXwwLGNbRz4+Ml18MCl8MDtZeihjW08+PjJdfDAsY1t2Pj4yXXwwKXwwO1p6KGNbTz4+Ml18MCwoY1tzPj4yXXwwKS0xfDApO2Nbdz4+Ml09MDt3aGlsZSgxKXtsPWNbTz4+Ml18MDtpZigoY1t3Pj4yXXwwKT49KGNbQz4+Ml18MCkpYnJlYWs7WnoobCxjWyhjW3I+PjJdfDApKyhjW3c+PjJdPDwyKT4+Ml18MCk7angoY1tPPj4yXXwwLDk2LGNbeT4+Ml18MCxjW3c+PjJdfDAsKGNbSj4+Ml18MCkrKGNbdz4+Ml18MCl8MCl8MDtjW3c+PjJdPShjW3c+PjJdfDApKzF9X3oobCxjW3Y+PjJdfDApO1RmKGNbdT4+Ml18MCxjW3I+PjJdfDApfW14KGNbTz4+Ml18MCw4OSwxLGNbTD4+Ml18MCxjW04+PjJdfDAsNDMyMCwtNSl8MDtKaChjW08+PjJdfDAsMik7aXgoY1tPPj4yXXwwLDcsY1t5Pj4yXXwwLGNbcz4+Ml18MCl8MDskeihjW08+PjJdfDAsY1tMPj4yXXwwLDAsY1tLPj4yXXwwKTtteChjW08+PjJdfDAsOTksY1tNPj4yXXwwLDMsY1tOPj4yXXwwLDMwODcxLDApfDA7aXgoY1tPPj4yXXwwLDExNCxjW3E+PjJdfDAsY1tJPj4yXXwwKXwwO2p4KGNbTz4+Ml18MCwxMTUsY1txPj4yXXwwLGNbTj4+Ml18MCxjW0k+PjJdfDApfDA7SmgoY1tPPj4yXXwwLDgpO1p6KGNbTz4+Ml18MCxjW3Q+PjJdfDApfXdoaWxlKDApO2NbRj4+Ml09Y1soY1tGPj4yXXwwKSsyMD4+Ml19aWYobCl7aT1SO3JldHVybn1pZighKGRbRD4+MF18MCkpe2k9UjtyZXR1cm59aXgoY1tPPj4yXXwwLDEwMCxjW3o+PjJdfDAsY1tLPj4yXXwwKXwwO2NbQT4+Ml09U3ooY1tPPj4yXXwwLDIyLGNbSz4+Ml18MCl8MDtpeChjW08+PjJdfDAsNzksMCxjW0g+PjJdfDApfDA7bXgoY1tPPj4yXXwwLDk5LGNbTT4+Ml18MCwzLGNbTj4+Ml18MCwzMDg3MSwwKXwwO2l4KGNbTz4+Ml18MCwxMTQsY1txPj4yXXwwLGNbST4+Ml18MCl8MDtqeChjW08+PjJdfDAsMTE1LGNbcT4+Ml18MCxjW04+PjJdfDAsY1tJPj4yXXwwKXwwO0poKGNbTz4+Ml18MCw4KTtaeihjW08+PjJdfDAsY1tBPj4yXXwwKTtpPVI7cmV0dXJufWZ1bmN0aW9uIFJ6KGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MDtmPWk7aT1pKzE2fDA7Zz1mKzh8MDtkPWYrNHwwO2U9ZjtjW2c+PjJdPWE7Y1tkPj4yXT1iO2NbZT4+Ml09ZHgoY1tnPj4yXXwwKXwwO2lmKCEoY1tlPj4yXXwwKSl7aT1mO3JldHVybn1TeihjW2U+PjJdfDAsMTM3LGNbZD4+Ml18MCl8MDtpPWY7cmV0dXJufWZ1bmN0aW9uIFN6KGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wO2U9aTtpPWkrMTZ8MDtoPWUrOHwwO2c9ZSs0fDA7Zj1lO2NbaD4+Ml09YTtjW2c+PjJdPWI7Y1tmPj4yXT1kO2Q9angoY1toPj4yXXwwLGNbZz4+Ml18MCxjW2Y+PjJdfDAsMCwwKXwwO2k9ZTtyZXR1cm4gZHwwfWZ1bmN0aW9uIFR6KGIsZSxmLGcsaCl7Yj1ifDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7dmFyIGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTA7cz1pO2k9aSs0OHwwO3Q9cysyOHwwO209cysyNHwwO249cysyMHwwO289cyszMnwwO3A9cysxNnwwO3E9cysxMnwwO2o9cys4fDA7az1zKzR8MDtyPXM7Y1t0Pj4yXT1iO2NbbT4+Ml09ZTtjW24+PjJdPWY7YVtvPj4wXT1nO2NbcD4+Ml09aDtlPWNbdD4+Ml18MDtpZihjWyhjW3Q+PjJdfDApKzEyND4+Ml18MCllPWNbZSsxMjQ+PjJdfDA7Y1txPj4yXT1lO2Nbaj4+Ml09MDt3aGlsZSgxKXtpZigoY1tqPj4yXXwwKT49KGNbKGNbcT4+Ml18MCkrMTEyPj4yXXwwKSlicmVhaztjW3I+PjJdPShjWyhjW3E+PjJdfDApKzExNj4+Ml18MCkrKGNbaj4+Ml08PDQpO2lmKChjW2Nbcj4+Ml0+PjJdfDApPT0oY1ttPj4yXXwwKT8oY1soY1tyPj4yXXwwKSs0Pj4yXXwwKT09KGNbbj4+Ml18MCk6MCl7bD03O2JyZWFrfWNbaj4+Ml09KGNbaj4+Ml18MCkrMX1pZigobHwwKT09Nyl7aWYoZFsoY1tyPj4yXXwwKSs4Pj4wXXwwKWU9MTtlbHNlIGU9KGRbbz4+MF18MHwwKSE9MDthWyhjW3I+PjJdfDApKzg+PjBdPWUmMTtpPXM7cmV0dXJufWNbaz4+Ml09KGNbKGNbcT4+Ml18MCkrMTEyPj4yXXwwKSsxPDw0O2U9Y1trPj4yXXwwO2U9UHgoY1tjW3E+PjJdPj4yXXwwLGNbKGNbcT4+Ml18MCkrMTE2Pj4yXXwwLGUsKChlfDApPDApPDwzMT4+MzEpfDA7Y1soY1txPj4yXXwwKSsxMTY+PjJdPWU7ZT0oY1txPj4yXXwwKSsxMTJ8MDtpZihjWyhjW3E+PjJdfDApKzExNj4+Ml18MCl7dD1jW2U+PjJdfDA7Y1tlPj4yXT10KzE7Y1tyPj4yXT0oY1soY1txPj4yXXwwKSsxMTY+PjJdfDApKyh0PDw0KTtjW2Nbcj4+Ml0+PjJdPWNbbT4+Ml07Y1soY1tyPj4yXXwwKSs0Pj4yXT1jW24+PjJdO2FbKGNbcj4+Ml18MCkrOD4+MF09YVtvPj4wXXwwO2NbKGNbcj4+Ml18MCkrMTI+PjJdPWNbcD4+Ml07aT1zO3JldHVybn1lbHNle2NbZT4+Ml09MDttaChjW2NbcT4+Ml0+PjJdfDApO2k9cztyZXR1cm59fWZ1bmN0aW9uIFV6KGEsZSxmLGcsaCl7YT1hfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7dmFyIGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTA7cT1pO2k9aSszMnwwO2o9cSsyNHwwO2s9cSsyMHwwO2w9cSsxNnwwO209cSsxMnwwO249cSs4fDA7cD1xKzR8MDtvPXE7Y1tqPj4yXT1hO2Nbaz4+Ml09ZTtjW2w+PjJdPWY7Y1ttPj4yXT1nO2Nbbj4+Ml09aDtjW3A+PjJdPWR4KGNbaj4+Ml18MCl8MDtUeihjW2o+PjJdfDAsY1tsPj4yXXwwLGNbKGNbbT4+Ml18MCkrMjg+PjJdfDAsKChjW24+PjJdfDApPT0xMDU/MTowKSYyNTUsY1tjW20+PjJdPj4yXXwwKTtpZighKGRbKGNbbT4+Ml18MCkrNDI+PjBdJjMyKSl7SWgoY1twPj4yXXwwLGNbbj4+Ml18MCxjW2s+PjJdfDAsY1soY1ttPj4yXXwwKSsyOD4+Ml18MCxjW2w+PjJdfDAsYlsoY1ttPj4yXXwwKSszND4+MV18MCl8MDtpPXE7cmV0dXJufWVsc2V7Y1tvPj4yXT1KaihjW20+PjJdfDApfDA7angoY1twPj4yXXwwLGNbbj4+Ml18MCxjW2s+PjJdfDAsY1soY1tvPj4yXXwwKSs0ND4+Ml18MCxjW2w+PjJdfDApfDA7VnooY1tqPj4yXXwwLGNbbz4+Ml18MCk7aT1xO3JldHVybn19ZnVuY3Rpb24gVnooYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wO2Q9aTtpPWkrMTZ8MDtmPWQrOHwwO2U9ZCs0fDA7Zz1kO2NbZj4+Ml09YTtjW2U+PjJdPWI7Y1tnPj4yXT1jWyhjW2Y+PjJdfDApKzg+PjJdO2E9Y1tnPj4yXXwwO01oKGEsLTEsaEEoY1tmPj4yXXwwLGNbZT4+Ml18MCl8MCwtNik7aT1kO3JldHVybn1mdW5jdGlvbiBXeihhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wO2U9aTtpPWkrMTZ8MDtmPWUrOHwwO2Q9ZSs0fDA7Yj1lO2NbZj4+Ml09YTtjW2Q+PjJdPWNbKGNbZj4+Ml18MCkrMTI+PjJdO2Y9KGNbZD4+Ml18MCkrNzJ8MDthPWNbZj4+Ml18MDtjW2Y+PjJdPWErMTtjW2I+PjJdPWE7aWYoIShjW2I+PjJdJihjW2I+PjJdfDApLTEpKXtmPVB4KGNbY1tkPj4yXT4+Ml18MCxjWyhjW2Q+PjJdfDApKzc2Pj4yXXwwLChjW2I+PjJdPDwxKSsxPDwyLDApfDA7Y1soY1tkPj4yXXwwKSs3Nj4+Ml09Zn1pZighKGNbKGNbZD4+Ml18MCkrNzY+PjJdfDApKXtmPWNbYj4+Ml18MDtmPS0xLWZ8MDtpPWU7cmV0dXJuIGZ8MH1jWyhjWyhjW2Q+PjJdfDApKzc2Pj4yXXwwKSsoY1tiPj4yXTw8Mik+PjJdPS0xO2Y9Y1tiPj4yXXwwO2Y9LTEtZnwwO2k9ZTtyZXR1cm4gZnwwfWZ1bmN0aW9uIFh6KGIsZSl7Yj1ifDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MDtrPWk7aT1pKzMyfDA7Zj1rKzEyfDA7Zz1rKzh8MDttPWsrNHwwO2g9aysxN3wwO2w9aysxNnwwO2o9aztjW2Y+PjJdPWI7Y1tnPj4yXT1lO2NbbT4+Ml09Y1tjW2Y+PjJdPj4yXTthW2g+PjBdPWFbKGNbbT4+Ml18MCkrNjY+PjBdfDA7YVtsPj4wXT1hWyhjW20+PjJdfDApKzE0OCs1Pj4wXXwwO2Nbaj4+Ml09U2ooY1ttPj4yXXwwLGFbaD4+MF18MCxjW2c+PjJdfDAsZFtsPj4wXXwwKXwwO2lmKGFbbD4+MF18MCl7bT1jW2o+PjJdfDA7aT1rO3JldHVybiBtfDB9aWYoKGNbaj4+Ml18MCkhPTA/KGNbKGNbaj4+Ml18MCkrMTI+PjJdfDApIT0wOjApe209Y1tqPj4yXXwwO2k9aztyZXR1cm4gbXwwfWNbaj4+Ml09Z3koY1tmPj4yXXwwLGFbaD4+MF18MCxjW2o+PjJdfDAsY1tnPj4yXXwwKXwwO209Y1tqPj4yXXwwO2k9aztyZXR1cm4gbXwwfWZ1bmN0aW9uIFl6KGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wO2Q9aTtpPWkrMTZ8MDtmPWQrNHwwO2U9ZDtjW2Y+PjJdPWE7Y1tlPj4yXT1iO2E9angoY1tmPj4yXXwwLDEzLDAsY1tlPj4yXXwwLDApfDA7aT1kO3JldHVybiBhfDB9ZnVuY3Rpb24gWnooYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTA7ZD1pO2k9aSsxNnwwO2U9ZCs0fDA7Zj1kO2NbZT4+Ml09YTtjW2Y+PjJdPWI7ZEEoY1tlPj4yXXwwLGNbZj4+Ml18MCxjWyhjW2U+PjJdfDApKzEzNj4+Ml18MCk7aT1kO3JldHVybn1mdW5jdGlvbiBfeihhLGIpe2E9YXwwO2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wO2c9aTtpPWkrMTZ8MDtkPWcrMTJ8MDtoPWcrOHwwO2Y9Zys0fDA7ZT1nO2NbZD4+Ml09YTtjW2g+PjJdPWI7Y1tmPj4yXT1jWyhjW2Q+PjJdfDApKzEyPj4yXTtjW2U+PjJdPS0xLShjW2g+PjJdfDApO2lmKCEoY1soY1tmPj4yXXwwKSs3Nj4+Ml18MCkpe2k9ZztyZXR1cm59Y1soY1soY1tmPj4yXXwwKSs3Nj4+Ml18MCkrKGNbZT4+Ml08PDIpPj4yXT1jWyhjW2Q+PjJdfDApKzEzNj4+Ml07aT1nO3JldHVybn1mdW5jdGlvbiAkeihhLGIsZCxlKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wO2Y9aTtpPWkrMTZ8MDtnPWYrMTJ8MDtqPWYrOHwwO2g9ZjtjW2c+PjJdPWE7Y1tqPj4yXT1iO2NbZis0Pj4yXT1kO2NbaD4+Ml09ZTtteChjW2c+PjJdfDAsODksMCxjW2o+PjJdfDAsY1toPj4yXXwwLDQzNDgsLTUpfDA7SmgoY1tnPj4yXXwwLDEpO2k9ZjtyZXR1cm59ZnVuY3Rpb24gYUEoYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wO289aTtpPWkrNjR8MDtsPW8rMjR8MDtrPW8rMTZ8MDtlPW8rNTZ8MDtwPW8rNDh8MDtqPW8rNDR8MDttPW8rNDB8MDtmPW8rMzZ8MDtuPW8rMzJ8MDtoPW8rOHwwO2c9bztjW2U+PjJdPWE7Y1tvKzUyPj4yXT1iO2NbcD4+Ml09ZDtjW2o+PjJdPV9kKGNbY1twPj4yXT4+Ml18MCl8MDthPSgoY1soY1tqPj4yXXwwKSsxMj4+Ml18MCkrMXwwKSoyNXwwO2Nbbj4+Ml09a2coYSwoKGF8MCk8MCk8PDMxPj4zMSl8MDtpZighKGNbbj4+Ml18MCkpe3NlKGNbZT4+Ml18MCk7aT1vO3JldHVybn1wPWNbbj4+Ml18MDthPWs7Y1thPj4yXT1jW2Nbaj4+Ml0+PjJdO2NbYSs0Pj4yXT0wO1FkKDI0LHAsMzA4ODQsayl8MDtwPWNbbj4+Ml18MDtjW20+PjJdPXArKEpmKGNbbj4+Ml18MCl8MCk7Y1tmPj4yXT0wO3doaWxlKDEpe2lmKChjW2Y+PjJdfDApPj0oY1soY1tqPj4yXXwwKSsxMj4+Ml18MCkpYnJlYWs7cD1oO2NbcD4+Ml09KGNbKGNbKGNbaj4+Ml18MCkrMjArND4+Ml18MCkrKGNbZj4+Ml08PDIpPj4yXXwwKSsxO2NbcCs0Pj4yXT0wO3A9aDtwPVJSKGNbY1tqPj4yXT4+Ml18MCwwLGNbcD4+Ml18MCxjW3ArND4+Ml18MCl8MDtwPVFSKHB8MCxDfDAsMSwwKXwwO2Q9aDtkPWJTKHB8MCxDfDAsY1tkPj4yXXwwLGNbZCs0Pj4yXXwwKXwwO3A9ZztjW3A+PjJdPWQ7Y1twKzQ+PjJdPUM7cD1jW20+PjJdfDA7ZD1nO2E9Y1tkKzQ+PjJdfDA7az1sO2Nbaz4+Ml09Y1tkPj4yXTtjW2srND4+Ml09YTtRZCgyNCxwLDMwODg5LGwpfDA7cD1KZihjW20+PjJdfDApfDA7Y1ttPj4yXT0oY1ttPj4yXXwwKStwO2NbZj4+Ml09KGNbZj4+Ml18MCkrMX1tZShjW2U+PjJdfDAsY1tuPj4yXXwwLC0xLDE0OCk7aT1vO3JldHVybn1mdW5jdGlvbiBiQShhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTA7aD1pO2k9aSszMnwwO2o9aCsxMnwwO2U9aCs4fDA7Zz1oKzR8MDtmPWg7Y1toKzIwPj4yXT1hO2NbaCsxNj4+Ml09YjtjW2o+PjJdPWQ7Y1tnPj4yXT1fZChjW2Nbaj4+Ml0+PjJdfDApfDA7Y1tmPj4yXT1jZShjWyhjW2o+PjJdfDApKzQ+PjJdfDApfDA7aWYoIShjW2NbZz4+Ml0+PjJdfDApKXtjW2U+PjJdPTA7d2hpbGUoMSl7aWYoKGNbZT4+Ml18MCk+PShjWyhjW2c+PjJdfDApKzg+PjJdfDApKWJyZWFrO2NbKGNbKGNbZz4+Ml18MCkrMjA+PjJdfDApKyhjW2U+PjJdPDwyKT4+Ml09MTtjW2U+PjJdPShjW2U+PjJdfDApKzF9aj1jW2c+PjJdfDA7Zz1jW2o+PjJdfDA7Zz1nKzF8MDtjW2o+PjJdPWc7aT1oO3JldHVybn1jQShjW2c+PjJdfDAsY1tmPj4yXXwwKTtjW2U+PjJdPTA7d2hpbGUoMSl7aWYoKGNbZT4+Ml18MCk+PShjW2Y+PjJdfDApKWJyZWFrO2o9KGNbKGNbZz4+Ml18MCkrMjA+PjJdfDApKyhjW2U+PjJdPDwyKXwwO2Nbaj4+Ml09KGNbaj4+Ml18MCkrMTtjW2U+PjJdPShjW2U+PjJdfDApKzF9Y1tlPj4yXT1jW2Y+PjJdO3doaWxlKDEpe2lmKChjW2U+PjJdfDApPj0oY1soY1tnPj4yXXwwKSs4Pj4yXXwwKSlicmVhaztqPShjWyhjW2c+PjJdfDApKzIwKzQ+PjJdfDApKyhjW2U+PjJdPDwyKXwwO2Nbaj4+Ml09KGNbaj4+Ml18MCkrMTtjWyhjWyhjW2c+PjJdfDApKzIwPj4yXXwwKSsoY1tlPj4yXTw8Mik+PjJdPTE7Y1tlPj4yXT0oY1tlPj4yXXwwKSsxfWo9Y1tnPj4yXXwwO2c9Y1tqPj4yXXwwO2c9ZysxfDA7Y1tqPj4yXT1nO2k9aDtyZXR1cm59ZnVuY3Rpb24gY0EoYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wO2Q9aTtpPWkrMTZ8MDtjW2QrND4+Ml09YTtjW2Q+PjJdPWI7aT1kO3JldHVybn1mdW5jdGlvbiBkQShhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MDtlPWk7aT1pKzE2fDA7Zz1lKzh8MDtmPWUrNHwwO2g9ZTtjW2c+PjJdPWE7Y1tmPj4yXT1iO2NbaD4+Ml09ZDtkPWNbaD4+Ml18MDtjWyhlQShjW2c+PjJdfDAsY1tmPj4yXXwwKXwwKSs4Pj4yXT1kO2k9ZTtyZXR1cm59ZnVuY3Rpb24gZUEoYixkKXtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wO2g9aTtpPWkrMTZ8MDtlPWgrOHwwO2Y9aCs0fDA7Zz1oO2NbZj4+Ml09YjtjW2c+PjJdPWQ7aWYoKGNbZz4+Ml18MCk8MCljW2c+PjJdPShjWyhjW2Y+PjJdfDApKzEzNj4+Ml18MCktMTtpZihhWyhjW2NbZj4+Ml0+PjJdfDApKzY5Pj4wXXwwKXtjW2U+PjJdPTQzNzY7Yj1jW2U+PjJdfDA7aT1oO3JldHVybiBifDB9ZWxzZXtjW2U+PjJdPShjWyhjW2Y+PjJdfDApKzg4Pj4yXXwwKSsoKGNbZz4+Ml18MCkqMjB8MCk7Yj1jW2U+PjJdfDA7aT1oO3JldHVybiBifDB9cmV0dXJuIDB9ZnVuY3Rpb24gZkEoYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MDtsPWk7aT1pKzQ4fDA7ZT1sKzMyfDA7bj1sKzI0fDA7az1sKzIwfDA7Zz1sKzE2fDA7aj1sKzEyfDA7aD1sKzh8MDttPWwrNHwwO2Y9bDtjW2U+PjJdPWE7Y1tsKzI4Pj4yXT1iO2Nbbj4+Ml09ZDtjW2c+PjJdPWNlKGNbY1tuPj4yXT4+Ml18MCl8MDtjW2g+PjJdPShjW2c+PjJdfDApKzEmLTI7Y1tqPj4yXT1jZShjWyhjW24+PjJdfDApKzQ+PjJdfDApfDA7Y1ttPj4yXT01NisoY1toPj4yXTw8MikrKGNbaD4+Ml08PDIpO2NbZj4+Ml09dmUoY1tlPj4yXXwwKXwwO2E9Y1ttPj4yXXwwO2Nbaz4+Ml09c2goY1tmPj4yXXwwLGEsKChhfDApPDApPDwzMT4+MzEpfDA7aWYoIShjW2s+PjJdfDApKXtzZShjW2U+PjJdfDApO2k9bDtyZXR1cm59ZWxzZXtjWyhjW2s+PjJdfDApKzUyPj4yXT1jW2Y+PjJdO2NbY1trPj4yXT4+Ml09MDtjWyhjW2s+PjJdfDApKzg+PjJdPWNbZz4+Ml07Y1soY1trPj4yXXwwKSsxMj4+Ml09Y1tqPj4yXTtjWyhjW2s+PjJdfDApKzIwKzQ+PjJdPShjW2s+PjJdfDApKzU2O2NbKGNbaz4+Ml18MCkrMjA+PjJdPShjWyhjW2s+PjJdfDApKzIwKzQ+PjJdfDApKyhjW2g+PjJdPDwyKTtmZShjW2U+PjJdfDAsY1trPj4yXXwwLDU2LDE1Myk7aT1sO3JldHVybn19ZnVuY3Rpb24gZ0EoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wO2I9aTtpPWkrMTZ8MDtlPWIrNHwwO2Q9YjtjW2U+PjJdPWE7Y1tkPj4yXT1jW2U+PjJdO1RmKGNbKGNbZD4+Ml18MCkrNTI+PjJdfDAsY1tkPj4yXXwwKTtpPWI7cmV0dXJufWZ1bmN0aW9uIGhBKGIsZil7Yj1ifDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wO3A9aTtpPWkrMzJ8MDtoPXArMjh8MDtqPXArMjR8MDtrPXArMjB8MDtsPXArMTZ8MDttPXArMTJ8MDtnPXArOHwwO249cCs0fDA7bz1wO2Nbaj4+Ml09YjtjW2s+PjJdPWY7Y1ttPj4yXT1lWyhjW2s+PjJdfDApKzUyPj4xXTtjW2c+PjJdPWVbKGNbaz4+Ml18MCkrNTA+PjFdO2lmKGNbKGNbaj4+Ml18MCkrMzY+PjJdfDApe2NbaD4+Ml09MDtvPWNbaD4+Ml18MDtpPXA7cmV0dXJuIG98MH1mPWNbY1tqPj4yXT4+Ml18MDtpZigoZFsoY1trPj4yXXwwKSs1NT4+MF18MCk+Pj4zJjEpY1tuPj4yXT1pQShmLGNbZz4+Ml18MCwoY1ttPj4yXXwwKS0oY1tnPj4yXXwwKXwwKXwwO2Vsc2UgY1tuPj4yXT1pQShmLGNbbT4+Ml18MCwwKXwwO2lmKGNbbj4+Ml18MCl7Y1tsPj4yXT0wO3doaWxlKDEpe2lmKChjW2w+PjJdfDApPj0oY1ttPj4yXXwwKSlicmVhaztjW28+PjJdPWNbKGNbKGNbaz4+Ml18MCkrMzI+PjJdfDApKyhjW2w+PjJdPDwyKT4+Ml07aWYoKGNbbz4+Ml18MCk9PTM0ODM0KWY9MDtlbHNlIGY9WHooY1tqPj4yXXwwLGNbbz4+Ml18MCl8MDtjWyhjW24+PjJdfDApKzIwKyhjW2w+PjJdPDwyKT4+Ml09ZjthWyhjWyhjW24+PjJdfDApKzE2Pj4yXXwwKSsoY1tsPj4yXXwwKT4+MF09YVsoY1soY1trPj4yXXwwKSsyOD4+Ml18MCkrKGNbbD4+Ml18MCk+PjBdfDA7Y1tsPj4yXT0oY1tsPj4yXXwwKSsxfWlmKGNbKGNbaj4+Ml18MCkrMzY+PjJdfDApe2pBKGNbbj4+Ml18MCk7Y1tuPj4yXT0wfX1jW2g+PjJdPWNbbj4+Ml07bz1jW2g+PjJdfDA7aT1wO3JldHVybiBvfDB9ZnVuY3Rpb24gaUEoZCxlLGYpe2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wLG09MDttPWk7aT1pKzMyfDA7Zz1tKzE2fDA7aD1tKzEyfDA7aj1tKzh8MDtrPW0rNHwwO2w9bTtjW2c+PjJdPWQ7Y1toPj4yXT1lO2Nbaj4+Ml09ZjtjW2s+PjJdPSgoY1toPj4yXXwwKSsoY1tqPj4yXXwwKXwwKSo1O2NbbD4+Ml09VncoY1tnPj4yXXwwLDI0KyhjW2s+PjJdfDApfDAsMCl8MDtpZihjW2w+PjJdfDApe2NbKGNbbD4+Ml18MCkrMTY+PjJdPShjW2w+PjJdfDApKzIwKygoY1toPj4yXXwwKSsoY1tqPj4yXXwwKTw8Mik7YlsoY1tsPj4yXXwwKSs2Pj4xXT1jW2g+PjJdO2JbKGNbbD4+Ml18MCkrOD4+MV09Y1tqPj4yXTthWyhjW2w+PjJdfDApKzQ+PjBdPWFbKGNbZz4+Ml18MCkrNjY+PjBdfDA7Y1soY1tsPj4yXXwwKSsxMj4+Ml09Y1tnPj4yXTtjW2NbbD4+Ml0+PjJdPTE7VlIoKGNbbD4+Ml18MCkrMjR8MCwwLGNbaz4+Ml18MCl8MDtsPWNbbD4+Ml18MDtpPW07cmV0dXJuIGx8MH1lbHNle21oKGNbZz4+Ml18MCk7bD1jW2w+PjJdfDA7aT1tO3JldHVybiBsfDB9cmV0dXJuIDB9ZnVuY3Rpb24gakEoYSl7YT1hfDA7dmFyIGI9MCxkPTA7ZD1pO2k9aSsxNnwwO2I9ZDtjW2I+PjJdPWE7aWYoIShjW2I+PjJdfDApKXtpPWQ7cmV0dXJufWE9Y1tiPj4yXXwwO2NbYT4+Ml09KGNbYT4+Ml18MCkrLTE7aWYoY1tjW2I+PjJdPj4yXXwwKXtpPWQ7cmV0dXJufVRmKGNbKGNbYj4+Ml18MCkrMTI+PjJdfDAsY1tiPj4yXXwwKTtpPWQ7cmV0dXJufWZ1bmN0aW9uIGtBKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTA7bD1pO2k9aSszMnwwO2Q9bCsyNHwwO2U9bCsyMHwwO2o9bCsxNnwwO2c9bCsxMnwwO2Y9bCs4fDA7aD1sKzR8MDtrPWw7Y1tkPj4yXT1hO2NbZT4+Ml09YjtjW2Y+PjJdPWNbY1tkPj4yXT4+Ml07Y1tnPj4yXT0wO2Nbaj4+Ml09Y1soY1tmPj4yXXwwKSsxNj4+Ml07d2hpbGUoMSl7aWYoKGNbZz4+Ml18MCk+PShjWyhjW2Y+PjJdfDApKzIwPj4yXXwwKSlicmVhaztjW2g+PjJdPWNbKGNbKGNbaj4+Ml18MCkrMTI+PjJdfDApKzgrOD4+Ml07d2hpbGUoMSl7aWYoIShjW2g+PjJdfDApKWJyZWFrO2Nbaz4+Ml09Y1soY1toPj4yXXwwKSs4Pj4yXTtsQShjW2Q+PjJdfDAsY1trPj4yXXwwLGNbZT4+Ml18MCk7Y1toPj4yXT1jW2NbaD4+Ml0+PjJdfWNbZz4+Ml09KGNbZz4+Ml18MCkrMTtjW2o+PjJdPShjW2o+PjJdfDApKzE2fWk9bDtyZXR1cm59ZnVuY3Rpb24gbEEoYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MDtrPWk7aT1pKzMyfDA7ZT1rKzE2fDA7Zj1rKzEyfDA7Zz1rKzh8MDtqPWsrNHwwO2g9aztjW2U+PjJdPWE7Y1tmPj4yXT1iO2NbZz4+Ml09ZDtjW2o+PjJdPWNbKGNbZj4+Ml18MCkrOD4+Ml07d2hpbGUoMSl7aWYoIShjW2o+PjJdfDApKWJyZWFrO2lmKCEoKGNbZz4+Ml18MCkhPTA/KEhCKGNbZz4+Ml18MCxjW2o+PjJdfDApfDApPT0wOjApKXtjW2g+PjJdPUZoKGNbY1tlPj4yXT4+Ml18MCxjWyhjW2Y+PjJdfDApKzY0Pj4yXXwwKXwwO3J4KGNbZT4+Ml18MCwwLGNbaD4+Ml18MCk7bUEoY1tlPj4yXXwwLGNbaj4+Ml18MCwtMSl9Y1tqPj4yXT1jWyhjW2o+PjJdfDApKzIwPj4yXX1pPWs7cmV0dXJufWZ1bmN0aW9uIG1BKGEsYixmKXthPWF8MDtiPWJ8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTA7eD1pO2k9aSs4MHwwO249eCs2NHwwO289eCs2MHwwO2c9eCs1NnwwO2w9eCs1MnwwO3Q9eCs0OHwwO3I9eCs0NHwwO3M9eCs0MHwwO3A9eCszNnwwO3E9eCszMnwwO209eCsyOHwwO2o9eCsyNHwwO3c9eCsyMHwwO2s9eCsxNnwwO3Y9eCsxMnwwO3k9eCs4fDA7aD14KzR8MDt1PXg7Y1tuPj4yXT1hO2Nbbz4+Ml09YjtjW2c+PjJdPWY7Y1tsPj4yXT1jWyhjW28+PjJdfDApKzEyPj4yXTthPShjW24+PjJdfDApKzQwfDA7Yj1jW2E+PjJdfDA7Y1thPj4yXT1iKzE7Y1t0Pj4yXT1iO2I9KGNbbj4+Ml18MCkrNDB8MDthPWNbYj4+Ml18MDtjW2I+PjJdPWErMTtjW3I+PjJdPWE7Y1t5Pj4yXT1jW2Nbbj4+Ml0+PjJdO2NbaD4+Ml09RmgoY1t5Pj4yXXwwLGNbKGNbbz4+Ml18MCkrMjQ+PjJdfDApfDA7aWYoYXgoY1tuPj4yXXwwLDI3LGNbY1tvPj4yXT4+Ml18MCwwLGNbKGNbKGNbeT4+Ml18MCkrMTY+PjJdfDApKyhjW2g+PjJdPDw0KT4+Ml18MCl8MCl7aT14O3JldHVybn1UeihjW24+PjJdfDAsY1toPj4yXXwwLGNbKGNbbD4+Ml18MCkrMjg+PjJdfDAsMSxjW2NbbD4+Ml0+PjJdfDApO2Nbdz4+Ml09ZHgoY1tuPj4yXXwwKXwwO2lmKCEoY1t3Pj4yXXwwKSl7aT14O3JldHVybn1pZigoY1tnPj4yXXwwKT49MCljW20+PjJdPWNbZz4+Ml07ZWxzZSBjW20+PjJdPWNbKGNbbz4+Ml18MCkrNDQ+PjJdO2Nbaz4+Ml09aEEoY1tuPj4yXXwwLGNbbz4+Ml18MCl8MDthPShjW24+PjJdfDApKzQwfDA7Yj1jW2E+PjJdfDA7Y1thPj4yXT1iKzE7Y1tzPj4yXT1iO2I9Y1t3Pj4yXXwwO2E9Y1tzPj4yXXwwO3k9ZVsoY1tvPj4yXXwwKSs1MD4+MV18MDtteChiLDEwOCxhLDAseSxuQShjW2s+PjJdfDApfDAsLTYpfDA7VXooY1tuPj4yXXwwLGNbdD4+Ml18MCxjW2g+PjJdfDAsY1tsPj4yXXwwLDEwNCk7Y1twPj4yXT1peChjW3c+PjJdfDAsNTcsY1t0Pj4yXXwwLDApfDA7Y1t2Pj4yXT12eChjW24+PjJdfDApfDA7b0EoY1tuPj4yXXwwLGNbbz4+Ml18MCxjW3Q+PjJdfDAsY1t2Pj4yXXwwLDAsaiwwLDApfDA7aXgoY1t3Pj4yXXwwLDEyNSxjW3M+PjJdfDAsY1t2Pj4yXXwwKXwwO3BBKGNbbj4+Ml18MCxjW2o+PjJdfDApO2l4KGNbdz4+Ml18MCw3LGNbdD4+Ml18MCwoY1twPj4yXXwwKSsxfDApfDA7WnooY1t3Pj4yXXwwLGNbcD4+Ml18MCk7aWYoKGNbZz4+Ml18MCk8MClpeChjW3c+PjJdfDAsMTMxLGNbbT4+Ml18MCxjW2g+PjJdfDApfDA7bXgoY1t3Pj4yXXwwLDEwNSxjW3I+PjJdfDAsY1ttPj4yXXwwLGNbaD4+Ml18MCxjW2s+PjJdfDAsLTYpfDA7SmgoY1t3Pj4yXXwwLCgxfCgoY1tnPj4yXXwwKT49MD8xNjowKSkmMjU1KTtjW3A+PjJdPWl4KGNbdz4+Ml18MCw1NSxjW3M+PjJdfDAsMCl8MDt5PShkWyhjW28+PjJdfDApKzU0Pj4wXXwwfDApIT0wO2c9d3goY1t3Pj4yXXwwKXwwO2lmKHkpe2NbdT4+Ml09ZyszO1l6KGNbdz4+Ml18MCxjW3U+PjJdfDApfDA7Y1txPj4yXT13eChjW3c+PjJdfDApfDA7SWgoY1t3Pj4yXXwwLDExOSxjW3M+PjJdfDAsY1t1Pj4yXXwwLGNbdj4+Ml18MCxlWyhjW28+PjJdfDApKzUwPj4xXXwwKXwwO3FBKGNbbj4+Ml18MCwyLGNbbz4+Ml18MCl9ZWxzZSBjW3E+PjJdPWc7angoY1t3Pj4yXXwwLDEyMCxjW3M+PjJdfDAsY1t2Pj4yXXwwLGNbcj4+Ml18MCl8MDtqeChjW3c+PjJdfDAsNTMsY1tyPj4yXXwwLDAsLTEpfDA7angoY1t3Pj4yXXwwLDEyNixjW3I+PjJdfDAsY1t2Pj4yXXwwLDApfDA7SmgoY1t3Pj4yXXwwLDE2KTt4eChjW24+PjJdfDAsY1t2Pj4yXXwwKTtpeChjW3c+PjJdfDAsMyxjW3M+PjJdfDAsY1txPj4yXXwwKXwwO1p6KGNbdz4+Ml18MCxjW3A+PjJdfDApO1N6KGNbdz4+Ml18MCwxMTEsY1t0Pj4yXXwwKXwwO1N6KGNbdz4+Ml18MCwxMTEsY1tyPj4yXXwwKXwwO1N6KGNbdz4+Ml18MCwxMTEsY1tzPj4yXXwwKXwwO2k9eDtyZXR1cm59ZnVuY3Rpb24gbkEoYSl7YT1hfDA7dmFyIGI9MCxkPTA7ZD1pO2k9aSsxNnwwO2I9ZDtjW2I+PjJdPWE7aWYoY1tiPj4yXXwwKXthPWNbYj4+Ml18MDtjW2E+PjJdPShjW2E+PjJdfDApKzF9aT1kO3JldHVybiBjW2I+PjJdfDB9ZnVuY3Rpb24gb0EoYSxlLGYsZyxoLGosayxsKXthPWF8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDtrPWt8MDtsPWx8MDt2YXIgbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wO3k9aTtpPWkrNDh8MDtvPXkrNDR8MDtwPXkrNDB8MDtxPXkrMzZ8MDtyPXkrMzJ8MDttPXkrMjh8MDtuPXkrMjR8MDtzPXkrMjB8MDt0PXkrMTZ8MDt4PXkrMTJ8MDt1PXkrOHwwO3c9eSs0fDA7dj15O2Nbbz4+Ml09YTtjW3A+PjJdPWU7Y1txPj4yXT1mO2Nbcj4+Ml09ZztjW20+PjJdPWg7Y1tuPj4yXT1qO2Nbcz4+Ml09aztjW3Q+PjJdPWw7Y1t4Pj4yXT1jWyhjW28+PjJdfDApKzg+PjJdO2RvIGlmKGNbbj4+Ml18MClpZihjWyhjW3A+PjJdfDApKzM2Pj4yXXwwKXtsPVd6KGNbeD4+Ml18MCl8MDtjW2Nbbj4+Ml0+PjJdPWw7Y1soY1tvPj4yXXwwKSs2MD4+Ml09Y1txPj4yXTtBQShjW28+PjJdfDApO0JBKGNbbz4+Ml18MCxjWyhjW3A+PjJdfDApKzM2Pj4yXXwwLGNbY1tuPj4yXT4+Ml18MCwxNik7YnJlYWt9ZWxzZXtjW2Nbbj4+Ml0+PjJdPTA7YnJlYWt9d2hpbGUoMCk7aWYoKGNbbT4+Ml18MCkhPTA/KChkWyhjW3A+PjJdfDApKzU1Pj4wXXwwKT4+PjMmMXwwKSE9MDowKW09YlsoY1twPj4yXXwwKSs1MD4+MV18MDtlbHNlIG09YlsoY1twPj4yXXwwKSs1Mj4+MV18MDtjW3Y+PjJdPW0mNjU1MzU7Y1t3Pj4yXT1DQShjW28+PjJdfDAsY1t2Pj4yXXwwKXwwO2RvIGlmKGNbcz4+Ml18MCl7aWYoKGNbdz4+Ml18MCk9PShjW3Q+PjJdfDApPyhjWyhjW3M+PjJdfDApKzM2Pj4yXXwwKT09MDowKWJyZWFrO2Nbcz4+Ml09MH13aGlsZSgwKTtjW3U+PjJdPTA7d2hpbGUoMSl7aWYoKGNbdT4+Ml18MCk+PShjW3Y+PjJdfDApKWJyZWFrO2lmKCEoKChjW3M+PjJdfDApIT0wPyhiWyhjWyhjW3M+PjJdfDApKzQ+PjJdfDApKyhjW3U+PjJdPDwxKT4+MV18MCk9PShiWyhjWyhjW3A+PjJdfDApKzQ+PjJdfDApKyhjW3U+PjJdPDwxKT4+MV18MCk6MCk/KGJbKGNbKGNbcz4+Ml18MCkrND4+Ml18MCkrKGNbdT4+Ml08PDEpPj4xXXwwKSE9LTI6MCkpe0RBKGNbbz4+Ml18MCxjW3A+PjJdfDAsY1txPj4yXXwwLGNbdT4+Ml18MCwoY1t3Pj4yXXwwKSsoY1t1Pj4yXXwwKXwwKTtFQShjW3g+PjJdfDAsOTIpfDB9Y1t1Pj4yXT0oY1t1Pj4yXXwwKSsxfWlmKCEoY1tyPj4yXXwwKSl7dD1jW28+PjJdfDA7dT1jW3c+PjJdfDA7eD1jW3Y+PjJdfDA7RkEodCx1LHgpO3g9Y1t3Pj4yXXwwO2k9eTtyZXR1cm4geHwwfWp4KGNbeD4+Ml18MCw5OSxjW3c+PjJdfDAsY1t2Pj4yXXwwLGNbcj4+Ml18MCl8MDt0PWNbbz4+Ml18MDt1PWNbdz4+Ml18MDt4PWNbdj4+Ml18MDtGQSh0LHUseCk7eD1jW3c+PjJdfDA7aT15O3JldHVybiB4fDB9ZnVuY3Rpb24gcEEoYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTA7Zj1pO2k9aSsxNnwwO2Q9Zis0fDA7ZT1mO2NbZD4+Ml09YTtjW2U+PjJdPWI7aWYoIShjW2U+PjJdfDApKXtpPWY7cmV0dXJufV96KGNbKGNbZD4+Ml18MCkrOD4+Ml18MCxjW2U+PjJdfDApO3lBKGNbZD4+Ml18MCk7aT1mO3JldHVybn1mdW5jdGlvbiBxQShkLGYsZyl7ZD1kfDA7Zj1mfDA7Zz1nfDA7dmFyIGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTA7cz1pO2k9aSs4MHwwO3A9cys4fDA7bz1zO2g9cys2OHwwO2o9cys2NHwwO2s9cys2MHwwO3I9cys1NnwwO209cys1MnwwO2w9cysyNHwwO249cysyMHwwO3E9cysxNnwwO2NbaD4+Ml09ZDtjW2o+PjJdPWY7Y1trPj4yXT1nO2Nbbj4+Ml09Y1soY1trPj4yXXwwKSsxMj4+Ml07ZGcobCxjW2NbaD4+Ml0+PjJdfDAsMCwwLDIwMCk7aWYoY1soY1trPj4yXXwwKSs0MD4+Ml18MCl7Y1tvPj4yXT1jW2Nbaz4+Ml0+PjJdO3JBKGwsMzEwNTMsbyk7bz1mZyhsKXwwO2Nbcj4+Ml09bztvPWNbaD4+Ml18MDtwPWNbaz4+Ml18MDtwPXArNTV8MDtwPWFbcD4+MF18MDtwPXAmMztwPXAmMjU1O3A9KHB8MCk9PTI7cD1wPzE1NTU6MjA2NztxPWNbaj4+Ml18MDtyPWNbcj4+Ml18MDt0QShvLHAscSxyLC0xLDIpO2k9cztyZXR1cm59Y1ttPj4yXT0wO3doaWxlKDEpe2lmKChjW20+PjJdfDApPj0oZVsoY1trPj4yXXwwKSs1MD4+MV18MCkpYnJlYWs7Y1txPj4yXT1jWyhjWyhjW24+PjJdfDApKzQ+PjJdfDApKyhiWyhjWyhjW2s+PjJdfDApKzQ+PjJdfDApKyhjW20+PjJdPDwxKT4+MV08PDQpPj4yXTtpZihjW20+PjJdfDApc0EobCwzMTA2NCwyKTtvPWNbcT4+Ml18MDtjW3A+PjJdPWNbY1tuPj4yXT4+Ml07Y1twKzQ+PjJdPW87ckEobCwzMDE2MSxwKTtjW20+PjJdPShjW20+PjJdfDApKzF9bz1mZyhsKXwwO2Nbcj4+Ml09bztvPWNbaD4+Ml18MDtwPWNbaz4+Ml18MDtwPXArNTV8MDtwPWFbcD4+MF18MDtwPXAmMztwPXAmMjU1O3A9KHB8MCk9PTI7cD1wPzE1NTU6MjA2NztxPWNbaj4+Ml18MDtyPWNbcj4+Ml18MDt0QShvLHAscSxyLC0xLDIpO2k9cztyZXR1cm59ZnVuY3Rpb24gckEoYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTA7ZT1pO2k9aSszMnwwO2g9ZSsyMHwwO2c9ZSsxNnwwO2Y9ZTtjW2g+PjJdPWE7Y1tnPj4yXT1iO2NbZj4+Ml09ZDtlZyhjW2g+PjJdfDAsY1tnPj4yXXwwLGYpO2k9ZTtyZXR1cm59ZnVuY3Rpb24gc0EoYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTA7aD1pO2k9aSsxNnwwO2U9aCs4fDA7Zj1oKzR8MDtnPWg7Y1tlPj4yXT1hO2NbZj4+Ml09YjtjW2c+PjJdPWQ7aWYoKChjWyhjW2U+PjJdfDApKzEyPj4yXXwwKSsoY1tnPj4yXXwwKXwwKT4+PjA+PShjWyhjW2U+PjJdfDApKzE2Pj4yXXwwKT4+PjApe3VBKGNbZT4+Ml18MCxjW2Y+PjJdfDAsY1tnPj4yXXwwKTtpPWg7cmV0dXJufWVsc2V7Yj0oY1tlPj4yXXwwKSsxMnwwO2NbYj4+Ml09KGNbYj4+Ml18MCkrKGNbZz4+Ml18MCk7VFIoKGNbKGNbZT4+Ml18MCkrOD4+Ml18MCkrKChjWyhjW2U+PjJdfDApKzEyPj4yXXwwKS0oY1tnPj4yXXwwKSl8MCxjW2Y+PjJdfDAsY1tnPj4yXXwwKXwwO2k9aDtyZXR1cm59fWZ1bmN0aW9uIHRBKGIsZCxlLGYsZyxoKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDt2YXIgaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MDtxPWk7aT1pKzMyfDA7aj1xKzE2fDA7az1xKzEyfDA7bD1xKzh8MDttPXErNHwwO249cSsyMXwwO289cSsyMHwwO3A9cTtjW2o+PjJdPWI7Y1trPj4yXT1kO2NbbD4+Ml09ZTtjW20+PjJdPWY7YVtuPj4wXT1nO2Fbbz4+MF09aDtjW3A+PjJdPWR4KGNbaj4+Ml18MCl8MDtpZigoY1tsPj4yXXwwKT09MilWeChjW2o+PjJdfDApO214KGNbcD4+Ml18MCw3NSxjW2s+PjJdfDAsY1tsPj4yXXwwLDAsY1ttPj4yXXwwLGFbbj4+MF18MCl8MDtKaChjW3A+PjJdfDAsYVtvPj4wXXwwKTtpPXE7cmV0dXJufWZ1bmN0aW9uIHVBKGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wO2g9aTtpPWkrMTZ8MDtlPWgrOHwwO2Y9aCs0fDA7Zz1oO2NbZT4+Ml09YTtjW2Y+PjJdPWI7Y1tnPj4yXT1kO2NbZz4+Ml09dkEoY1tlPj4yXXwwLGNbZz4+Ml18MCl8MDtpZigoY1tnPj4yXXwwKTw9MCl7aT1oO3JldHVybn1UUigoY1soY1tlPj4yXXwwKSs4Pj4yXXwwKSsoY1soY1tlPj4yXXwwKSsxMj4+Ml18MCl8MCxjW2Y+PjJdfDAsY1tnPj4yXXwwKXwwO2I9KGNbZT4+Ml18MCkrMTJ8MDtjW2I+PjJdPShjW2I+PjJdfDApKyhjW2c+PjJdfDApO2k9aDtyZXR1cm59ZnVuY3Rpb24gdkEoYixlKXtiPWJ8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wO209aTtpPWkrMzJ8MDtoPW0rMjR8MDtqPW0rMjB8MDtrPW0rMTZ8MDtsPW0rMTJ8MDtnPW0rOHwwO2Y9bTtjW2o+PjJdPWI7Y1trPj4yXT1lO2lmKGFbKGNbaj4+Ml18MCkrMjQ+PjBdfDApe2NbaD4+Ml09MDtsPWNbaD4+Ml18MDtpPW07cmV0dXJuIGx8MH1lPWNbaj4+Ml18MDtpZighKGNbKGNbaj4+Ml18MCkrMjA+PjJdfDApKXtjW2s+PjJdPShjW2UrMTY+PjJdfDApLShjWyhjW2o+PjJdfDApKzEyPj4yXXwwKS0xO3dBKGNbaj4+Ml18MCwyKTtjW2g+PjJdPWNbaz4+Ml07bD1jW2g+PjJdfDA7aT1tO3JldHVybiBsfDB9aWYoZFtlKzI1Pj4wXSY0KWU9Y1soY1tqPj4yXXwwKSs4Pj4yXXwwO2Vsc2UgZT0wO2NbZz4+Ml09ZTtlPWY7Y1tlPj4yXT1jWyhjW2o+PjJdfDApKzEyPj4yXTtjW2UrND4+Ml09MDtlPShjW2s+PjJdfDApKzF8MDtiPWY7ZT1SUihjW2I+PjJdfDAsY1tiKzQ+PjJdfDAsZXwwLCgoZXwwKTwwKTw8MzE+PjMxfDApfDA7Yj1mO2NbYj4+Ml09ZTtjW2IrND4+Ml09QztiPWY7Yj1SUihjW2I+PjJdfDAsY1tiKzQ+PjJdfDAsY1soY1tqPj4yXXwwKSsxMj4+Ml18MCwwKXwwO2U9QztpZigoZXwwKTwwfCgoZXwwKT09MD9iPj4+MDw9KGNbKGNbaj4+Ml18MCkrMjA+PjJdfDApPj4+MDowKSl7ZT1mO2U9UlIoY1tlPj4yXXwwLGNbZSs0Pj4yXXwwLGNbKGNbaj4+Ml18MCkrMTI+PjJdfDAsMCl8MDtiPWY7Y1tiPj4yXT1lO2NbYis0Pj4yXT1DfWI9ZjtlPWNbYis0Pj4yXXwwO2lmKChlfDApPjB8KChlfDApPT0wPyhjW2I+PjJdfDApPj4+MD4oY1soY1tqPj4yXXwwKSsyMD4+Ml18MCk+Pj4wOjApKXt4QShjW2o+PjJdfDApO3dBKGNbaj4+Ml18MCwyKTtjW2g+PjJdPTA7bD1jW2g+PjJdfDA7aT1tO3JldHVybiBsfDB9Y1soY1tqPj4yXXwwKSsxNj4+Ml09Y1tmPj4yXTtpZihjW2Nbaj4+Ml0+PjJdfDApY1tsPj4yXT1VdyhjW2Nbaj4+Ml0+PjJdfDAsY1tnPj4yXXwwLGNbKGNbaj4+Ml18MCkrMTY+PjJdfDAsMCl8MDtlbHNlIGNbbD4+Ml09TWQoY1tnPj4yXXwwLGNbKGNbaj4+Ml18MCkrMTY+PjJdfDAsMCl8MDtlPWNbaj4+Ml18MDtpZighKGNbbD4+Ml18MCkpe3hBKGUpO3dBKGNbaj4+Ml18MCwxKTtjW2g+PjJdPTA7bD1jW2g+PjJdfDA7aT1tO3JldHVybiBsfDB9aWYoKGRbZSsyNT4+MF0mNHwwKT09MD8oY1soY1tqPj4yXXwwKSsxMj4+Ml18MCk+Pj4wPjA6MClUUihjW2w+PjJdfDAsY1soY1tqPj4yXXwwKSs4Pj4yXXwwLGNbKGNbaj4+Ml18MCkrMTI+PjJdfDApfDA7Y1soY1tqPj4yXXwwKSs4Pj4yXT1jW2w+PjJdO2w9a3UoY1tjW2o+PjJdPj4yXXwwLGNbbD4+Ml18MCl8MDtjWyhjW2o+PjJdfDApKzE2Pj4yXT1sO2w9KGNbaj4+Ml18MCkrMjV8MDthW2w+PjBdPWRbbD4+MF18NDtjW2g+PjJdPWNbaz4+Ml07bD1jW2g+PjJdfDA7aT1tO3JldHVybiBsfDB9ZnVuY3Rpb24gd0EoYixkKXtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTA7ZT1pO2k9aSsxNnwwO2Y9ZTtnPWUrNHwwO2NbZj4+Ml09YjthW2c+PjBdPWQ7YVsoY1tmPj4yXXwwKSsyND4+MF09YVtnPj4wXXwwO2NbKGNbZj4+Ml18MCkrMTY+PjJdPTA7aT1lO3JldHVybn1mdW5jdGlvbiB4QShiKXtiPWJ8MDt2YXIgZT0wLGY9MDtmPWk7aT1pKzE2fDA7ZT1mO2NbZT4+Ml09YjtpZighKChkWyhjW2U+PjJdfDApKzI1Pj4wXXwwKSY0KSl7Yj1jW2U+PjJdfDA7Yj1iKzh8MDtjW2I+PjJdPTA7aT1mO3JldHVybn1UZihjW2NbZT4+Ml0+PjJdfDAsY1soY1tlPj4yXXwwKSs4Pj4yXXwwKTtiPShjW2U+PjJdfDApKzI1fDA7YVtiPj4wXT0oZFtiPj4wXXwwKSYtNTtiPWNbZT4+Ml18MDtiPWIrOHwwO2NbYj4+Ml09MDtpPWY7cmV0dXJufWZ1bmN0aW9uIHlBKGEpe2E9YXwwO3ZhciBiPTAsZT0wLGY9MDtmPWk7aT1pKzE2fDA7Yj1mKzR8MDtlPWY7Y1tiPj4yXT1hO2NbZT4+Ml09MDthPShjW2I+PjJdfDApKzY0fDA7Y1thPj4yXT0oY1thPj4yXXwwKSstMTt3aGlsZSgxKXtpZigoY1tlPj4yXXwwKT49KGRbKGNbYj4+Ml18MCkrMjU+PjBdfDB8MCkpYnJlYWs7aWYoKGNbKGNbYj4+Ml18MCkrMTUyKygoY1tlPj4yXXwwKSoyMHwwKSs4Pj4yXXwwKT4oY1soY1tiPj4yXXwwKSs2ND4+Ml18MCkpe3pBKGNbYj4+Ml18MCxjW2U+PjJdfDApO2NvbnRpbnVlfWVsc2V7Y1tlPj4yXT0oY1tlPj4yXXwwKSsxO2NvbnRpbnVlfX1pPWY7cmV0dXJufWZ1bmN0aW9uIHpBKGIsZSl7Yj1ifDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MDtoPWk7aT1pKzE2fDA7Zj1oKzR8MDtnPWg7Y1tmPj4yXT1iO2NbZz4+Ml09ZTtpZigoYVsoY1tmPj4yXXwwKSsxNTIrKChjW2c+PjJdfDApKjIwfDApKzY+PjBdfDApIT0wPyhkWyhjW2Y+PjJdfDApKzE5Pj4wXXwwKTw4OjApe2U9Y1soY1tmPj4yXXwwKSsxNTIrKChjW2c+PjJdfDApKjIwfDApKzEyPj4yXXwwO2o9KGNbZj4+Ml18MCkrMTl8MDtiPWFbaj4+MF18MDthW2o+PjBdPWIrMTw8MjQ+PjI0O2NbKGNbZj4+Ml18MCkrMzUyKygoYiYyNTUpPDwyKT4+Ml09ZX1qPShjW2Y+PjJdfDApKzI1fDA7YVtqPj4wXT0oYVtqPj4wXXwwKSstMTw8MjQ+PjI0O2lmKChjW2c+PjJdfDApPj0oZFsoY1tmPj4yXXwwKSsyNT4+MF18MCkpe2k9aDtyZXR1cm59aj0oY1tmPj4yXXwwKSsxNTIrKChjW2c+PjJdfDApKjIwfDApfDA7Yj0oY1tmPj4yXXwwKSsxNTIrKChkWyhjW2Y+PjJdfDApKzI1Pj4wXXwwKSoyMHwwKXwwO2Nbaj4+Ml09Y1tiPj4yXTtjW2orND4+Ml09Y1tiKzQ+PjJdO2Nbais4Pj4yXT1jW2IrOD4+Ml07Y1tqKzEyPj4yXT1jW2IrMTI+PjJdO2NbaisxNj4+Ml09Y1tiKzE2Pj4yXTtpPWg7cmV0dXJufWZ1bmN0aW9uIEFBKGEpe2E9YXwwO3ZhciBiPTAsZD0wO2I9aTtpPWkrMTZ8MDtkPWI7Y1tkPj4yXT1hO2E9KGNbZD4+Ml18MCkrNjR8MDtjW2E+PjJdPShjW2E+PjJdfDApKzE7aT1iO3JldHVybn1mdW5jdGlvbiBCQShhLGIsZSxmKXthPWF8MDtiPWJ8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wO209aTtpPWkrMzJ8MDtnPW0rMjB8MDtuPW0rMTZ8MDtoPW0rMTJ8MDtqPW0rOHwwO2s9bSs0fDA7bD1tO2NbZz4+Ml09YTtjW24+PjJdPWI7Y1toPj4yXT1lO2Nbaj4+Ml09ZjtjW2s+PjJdPWNbY1tnPj4yXT4+Ml07Y1tsPj4yXT1JeShjW2s+PjJdfDAsY1tuPj4yXXwwLDApfDA7aWYoZFsoY1trPj4yXXwwKSs2OT4+MF18MCl7YT1jW2s+PjJdfDA7bj1jW2w+PjJdfDA7aXYoYSxuKTtpPW07cmV0dXJufWlCKGNbZz4+Ml18MCxjW2w+PjJdfDAsY1toPj4yXXwwLGNbaj4+Ml18MCk7YT1jW2s+PjJdfDA7bj1jW2w+PjJdfDA7aXYoYSxuKTtpPW07cmV0dXJufWZ1bmN0aW9uIENBKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wO2o9aTtpPWkrMzJ8MDtkPWorMTZ8MDtlPWorMTJ8MDtmPWorOHwwO2c9ais0fDA7aD1qO2NbZT4+Ml09YTtjW2Y+PjJdPWI7Yj1jW2U+PjJdfDA7aWYoKGNbZj4+Ml18MCk9PTEpe2NbZD4+Ml09dngoYil8MDtoPWNbZD4+Ml18MDtpPWo7cmV0dXJuIGh8MH1jW2c+PjJdPWNbYiszMj4+Ml07Y1toPj4yXT1jWyhjW2U+PjJdfDApKzI4Pj4yXTtpZigoY1tmPj4yXXwwKTw9KGNbaD4+Ml18MCkpe2g9KGNbZT4+Ml18MCkrMzJ8MDtjW2g+PjJdPShjW2g+PjJdfDApKyhjW2Y+PjJdfDApO2g9KGNbZT4+Ml18MCkrMjh8MDtjW2g+PjJdPShjW2g+PjJdfDApLShjW2Y+PjJdfDApfWVsc2V7Y1tnPj4yXT0oY1soY1tlPj4yXXwwKSs0ND4+Ml18MCkrMTtoPShjW2U+PjJdfDApKzQ0fDA7Y1toPj4yXT0oY1toPj4yXXwwKSsoY1tmPj4yXXwwKX1jW2Q+PjJdPWNbZz4+Ml07aD1jW2Q+PjJdfDA7aT1qO3JldHVybiBofDB9ZnVuY3Rpb24gREEoYSxkLGUsZixnKXthPWF8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDt2YXIgaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wO289aTtpPWkrMzJ8MDtoPW8rMTZ8MDtqPW8rMTJ8MDtrPW8rOHwwO2w9bys0fDA7bT1vO249bysyMHwwO2NbaD4+Ml09YTtjW2o+PjJdPWQ7Y1trPj4yXT1lO2NbbD4+Ml09ZjtjW20+PjJdPWc7YltuPj4xXT1iWyhjWyhjW2o+PjJdfDApKzQ+PjJdfDApKyhjW2w+PjJdPDwxKT4+MV18MDtpZigoYltuPj4xXXwwKT09LTIpe2NbKGNbaD4+Ml18MCkrNjA+PjJdPWNbaz4+Ml07TUEoY1toPj4yXXwwLGNbKGNbKGNbKGNbaj4+Ml18MCkrNDA+PjJdfDApKzQ+PjJdfDApKygoY1tsPj4yXXwwKSoyMHwwKT4+Ml18MCxjW20+PjJdfDApO2k9bztyZXR1cm59ZWxzZXtOQShjWyhjW2g+PjJdfDApKzg+PjJdfDAsY1soY1tqPj4yXXwwKSsxMj4+Ml18MCxjW2s+PjJdfDAsYltuPj4xXXwwLGNbbT4+Ml18MCk7aT1vO3JldHVybn19ZnVuY3Rpb24gRUEoYixlKXtiPWJ8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wO2g9aTtpPWkrMTZ8MDtmPWgrNHwwO2c9aDtqPWgrOHwwO2NbZz4+Ml09YjthW2o+PjBdPWU7aWYoKGNbKGNbZz4+Ml18MCkrMTM2Pj4yXXwwKT4wPyhkWyhjWyhjW2c+PjJdfDApKzg4Pj4yXXwwKSsoKChjWyhjW2c+PjJdfDApKzEzNj4+Ml18MCktMXwwKSoyMHwwKT4+MF18MHwwKT09KGRbaj4+MF18MHwwKTowKXtjW2Y+PjJdPUhBKGNbZz4+Ml18MCwoY1soY1tnPj4yXXwwKSsxMzY+PjJdfDApLTF8MCl8MDtqPWNbZj4+Ml18MDtpPWg7cmV0dXJuIGp8MH1jW2Y+PjJdPTA7aj1jW2Y+PjJdfDA7aT1oO3JldHVybiBqfDB9ZnVuY3Rpb24gRkEoYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTA7aD1pO2k9aSsxNnwwO2U9aCs4fDA7Zj1oKzR8MDtnPWg7Y1tlPj4yXT1hO2NbZj4+Ml09YjtjW2c+PjJdPWQ7Yj1jW2U+PjJdfDA7ZD1jW2Y+PjJdfDA7aWYoKGNbZz4+Ml18MCk9PTEpe3h4KGIsZCk7aT1oO3JldHVybn1HQShiLGQsY1tnPj4yXXwwKTtpZigoY1tnPj4yXXwwKTw9KGNbKGNbZT4+Ml18MCkrMjg+PjJdfDApKXtpPWg7cmV0dXJufWNbKGNbZT4+Ml18MCkrMjg+PjJdPWNbZz4+Ml07Y1soY1tlPj4yXXwwKSszMj4+Ml09Y1tmPj4yXTtpPWg7cmV0dXJufWZ1bmN0aW9uIEdBKGEsYixlKXthPWF8MDtiPWJ8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTA7bD1pO2k9aSszMnwwO2Y9bCsxNnwwO2c9bCsxMnwwO2g9bCs4fDA7aj1sKzR8MDtrPWw7Y1tmPj4yXT1hO2NbZz4+Ml09YjtjW2g+PjJdPWU7Y1tqPj4yXT0wO3doaWxlKDEpe2lmKChjW2o+PjJdfDApPj0oZFsoY1tmPj4yXXwwKSsyNT4+MF18MHwwKSlicmVhaztjW2s+PjJdPShjW2Y+PjJdfDApKzE1MisoKGNbaj4+Ml18MCkqMjB8MCk7aWYoKGNbKGNbaz4+Ml18MCkrMTI+PjJdfDApPj0oY1tnPj4yXXwwKT8oY1soY1trPj4yXXwwKSsxMj4+Ml18MCk8KChjW2c+PjJdfDApKyhjW2g+PjJdfDApfDApOjApe3pBKGNbZj4+Ml18MCxjW2o+PjJdfDApO2NvbnRpbnVlfWNbaj4+Ml09KGNbaj4+Ml18MCkrMX1pPWw7cmV0dXJufWZ1bmN0aW9uIEhBKGIsZCl7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTA7aj1pO2k9aSsxNnwwO2U9aisxMnwwO2Y9ais4fDA7Zz1qKzR8MDtoPWo7Y1tmPj4yXT1iO2NbZz4+Ml09ZDtpZihhWyhjW2NbZj4+Ml0+PjJdfDApKzY5Pj4wXXwwKXtjW2U+PjJdPTA7aD1jW2U+PjJdfDA7aT1qO3JldHVybiBofDB9ZWxzZXtjW2g+PjJdPShjWyhjW2Y+PjJdfDApKzg4Pj4yXXwwKSsoKGNbZz4+Ml18MCkqMjB8MCk7SUEoY1tjW2Y+PjJdPj4yXXwwLGFbKGNbaD4+Ml18MCkrMT4+MF18MCxjWyhjW2g+PjJdfDApKzE2Pj4yXXwwKTthWyhjW2g+PjJdfDApKzE+PjBdPTA7Y1soY1toPj4yXXwwKSsxNj4+Ml09MDthW2NbaD4+Ml0+PjBdPS05NTtjW2U+PjJdPTE7aD1jW2U+PjJdfDA7aT1qO3JldHVybiBofDB9cmV0dXJuIDB9ZnVuY3Rpb24gSUEoYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTA7Zz1pO2k9aSsxNnwwO2U9Zys4fDA7aD1nKzR8MDtmPWc7Y1tlPj4yXT1hO2NbaD4+Ml09YjtjW2Y+PjJdPWQ7YTpkbyBzd2l0Y2goY1toPj4yXXwwKXtjYXNlIC0yMTp7SkEoY1tlPj4yXXwwLGNbZj4+Ml18MCk7YnJlYWt9Y2FzZSAtMTU6Y2FzZSAtMTpjYXNlIC0xMzpjYXNlIC0xMjp7VGYoY1tlPj4yXXwwLGNbZj4+Ml18MCk7YnJlYWt9Y2FzZSAtNjp7aWYoIShjWyhjW2U+PjJdfDApKzQ1Nj4+Ml18MCkpakEoY1tmPj4yXXwwKTticmVha31jYXNlIC0xMTp7aWYoIShjWyhjW2U+PjJdfDApKzQ1Nj4+Ml18MCkpS2QoY1tmPj4yXXwwKTticmVha31jYXNlIC01OntLQShjW2U+PjJdfDAsY1tmPj4yXXwwKTticmVha31jYXNlIC04OmlmKCEoY1soY1tlPj4yXXwwKSs0NTY+PjJdfDApKXtjaChjW2Y+PjJdfDApO2JyZWFrIGF9ZWxzZXtMQShjW2U+PjJdfDAsY1tmPj4yXXwwKTticmVhayBhfWNhc2UgLTEwOntpZighKGNbKGNbZT4+Ml18MCkrNDU2Pj4yXXwwKSlzdShjW2Y+PjJdfDApO2JyZWFrfWRlZmF1bHQ6e319d2hpbGUoMCk7aT1nO3JldHVybn1mdW5jdGlvbiBKQShhLGIpe2E9YXwwO2I9YnwwO3ZhciBkPTAsZT0wLGY9MDtkPWk7aT1pKzE2fDA7Zj1kKzR8MDtlPWQ7Y1tmPj4yXT1hO2NbZT4+Ml09YjtLQShjW2Y+PjJdfDAsY1soY1tlPj4yXXwwKSs0Pj4yXXwwKTtUZihjW2Y+PjJdfDAsY1tlPj4yXXwwKTtpPWQ7cmV0dXJufWZ1bmN0aW9uIEtBKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MCxmPTAsZz0wO2c9aTtpPWkrMTZ8MDtkPWcrNHwwO2Y9ZztjW2Q+PjJdPWE7Y1tmPj4yXT1iO2lmKCEoKGVbKGNbZj4+Ml18MCkrMj4+MV18MCkmMTYpKXtpPWc7cmV0dXJufVRmKGNbZD4+Ml18MCxjW2Y+PjJdfDApO2k9ZztyZXR1cm59ZnVuY3Rpb24gTEEoYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTA7Zj1pO2k9aSsxNnwwO2Q9Zis0fDA7ZT1mO2NbZD4+Ml09YTtjW2U+PjJdPWI7aWYoY1soY1tlPj4yXXwwKSsyND4+Ml18MClUZihjW2Q+PjJdfDAsY1soY1tlPj4yXXwwKSsyMD4+Ml18MCk7VGYoY1tkPj4yXXwwLGNbZT4+Ml18MCk7aT1mO3JldHVybn1mdW5jdGlvbiBNQShiLGQsZSl7Yj1ifDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTA7az1pO2k9aSsxNnwwO2Y9aysxMnwwO2c9ays4fDA7aD1rKzR8MDtqPWs7Y1tmPj4yXT1iO2NbZz4+Ml09ZDtjW2g+PjJdPWU7Y1tqPj4yXT1jW2NbZj4+Ml0+PjJdO2NbZz4+Ml09SXkoY1tqPj4yXXwwLGNbZz4+Ml18MCwwKXwwO2lmKGFbKGNbaj4+Ml18MCkrNjk+PjBdfDApe2I9Y1tqPj4yXXwwO2U9Y1tnPj4yXXwwO2l2KGIsZSk7aT1rO3JldHVybn1SQShjW2Y+PjJdfDAsY1tnPj4yXXwwLGNbaD4+Ml18MCk7Yj1jW2o+PjJdfDA7ZT1jW2c+PjJdfDA7aXYoYixlKTtpPWs7cmV0dXJufWZ1bmN0aW9uIE5BKGEsZSxmLGcsaCl7YT1hfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7dmFyIGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTA7cT1pO2k9aSszMnwwO2o9cSsyNHwwO2s9cSsyMHwwO2w9cSsxNnwwO209cSsxMnwwO249cSs4fDA7bz1xKzR8MDtwPXE7Y1tqPj4yXT1hO2Nbaz4+Ml09ZTtjW2w+PjJdPWY7Y1ttPj4yXT1nO2Nbbj4+Ml09aDtpZigoY1ttPj4yXXwwKT49MD8oY1ttPj4yXXwwKSE9KGJbKGNbaz4+Ml18MCkrMzI+PjFdfDApOjApe2Nbbz4+Ml09KGRbKGNbaz4+Ml18MCkrNDI+PjBdJjE2fDApIT0wPzE1Njo5NjtjW3A+PjJdPWNbbT4+Ml07aWYoKGRbKGNbaz4+Ml18MCkrNDI+PjBdJjMyfDApIT0wPyhkWyhjW2s+PjJdfDApKzQyPj4wXSYxNnwwKT09MDowKXthPUpqKGNbaz4+Ml18MCl8MDtjW3A+PjJdPShPQShhLGNbbT4+Ml0mNjU1MzUpfDApPDwxNj4+MTZ9angoY1tqPj4yXXwwLGNbbz4+Ml18MCxjW2w+PjJdfDAsY1twPj4yXXwwLGNbbj4+Ml18MCl8MH1lbHNlIGl4KGNbaj4+Ml18MCwxMjMsY1tsPj4yXXwwLGNbbj4+Ml18MCl8MDtpZigoY1ttPj4yXXwwKTwwKXtpPXE7cmV0dXJufVBBKGNbaj4+Ml18MCxjW2s+PjJdfDAsY1ttPj4yXXwwLGNbbj4+Ml18MCk7aT1xO3JldHVybn1mdW5jdGlvbiBPQShhLGQpe2E9YXwwO2Q9ZHwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wO2s9aTtpPWkrMTZ8MDtqPWsrMTB8MDtmPWsrNHwwO2c9ays4fDA7aD1rO2NbZj4+Ml09YTtiW2c+PjFdPWQ7Y1toPj4yXT0wO3doaWxlKDEpe2lmKChjW2g+PjJdfDApPj0oZVsoY1tmPj4yXXwwKSs1Mj4+MV18MCkpe2Q9NjticmVha31hPWNbaD4+Ml18MDtpZigoYltnPj4xXXwwKT09KGJbKGNbKGNbZj4+Ml18MCkrND4+Ml18MCkrKGNbaD4+Ml08PDEpPj4xXXwwKSl7ZD00O2JyZWFrfWNbaD4+Ml09YSsxfWlmKChkfDApPT00KXtiW2o+PjFdPWE7aj1iW2o+PjFdfDA7aT1rO3JldHVybiBqfDB9ZWxzZSBpZigoZHwwKT09Nil7YltqPj4xXT0tMTtqPWJbaj4+MV18MDtpPWs7cmV0dXJuIGp8MH1yZXR1cm4gMH1mdW5jdGlvbiBQQShiLGQsZSxmKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MDtvPWk7aT1pKzMyfDA7Zz1vKzIwfDA7aD1vKzE2fDA7aj1vKzEyfDA7az1vKzh8MDtuPW8rNHwwO2w9bysyNHwwO209bztjW2c+PjJdPWI7Y1toPj4yXT1kO2Nbaj4+Ml09ZTtjW2s+PjJdPWY7aWYoY1soY1toPj4yXXwwKSsxMj4+Ml18MCl7aT1vO3JldHVybn1jW24+PjJdPTA7YVtsPj4wXT1hWyhRQShjW2c+PjJdfDApfDApKzY2Pj4wXXwwO2NbbT4+Ml09KGNbKGNbaD4+Ml18MCkrND4+Ml18MCkrKGNbaj4+Ml08PDQpO2I9UUEoY1tnPj4yXXwwKXwwO3V4KGIsY1soY1ttPj4yXXwwKSs0Pj4yXXwwLGFbbD4+MF18MCxhWyhjW20+PjJdfDApKzEzPj4wXXwwLG4pfDA7aWYoY1tuPj4yXXwwKU1oKGNbZz4+Ml18MCwtMSxjW24+PjJdfDAsLTgpO2lmKChhWyhjWyhjW2g+PjJdfDApKzQ+PjJdfDApKyhjW2o+PjJdPDw0KSsxMz4+MF18MCkhPTY5KXtpPW87cmV0dXJufVN6KGNbZz4+Ml18MCw5MixjW2s+PjJdfDApfDA7aT1vO3JldHVybn1mdW5jdGlvbiBRQShhKXthPWF8MDt2YXIgYj0wLGQ9MDtkPWk7aT1pKzE2fDA7Yj1kO2NbYj4+Ml09YTtpPWQ7cmV0dXJuIGNbY1tiPj4yXT4+Ml18MH1mdW5jdGlvbiBSQShhLGIsZSl7YT1hfDA7Yj1ifDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTA7az1pO2k9aSsxNnwwO2Y9aysxMnwwO2c9ays4fDA7aD1rKzR8MDtqPWs7Y1tmPj4yXT1hO2NbZz4+Ml09YjtjW2g+PjJdPWU7aWYoKGNbZz4+Ml18MCkhPTA/KGRbY1tnPj4yXT4+MF18MHwwKT09MTU3OjApe2l4KGNbKGNbZj4+Ml18MCkrOD4+Ml18MCw4NCxjWyhjW2c+PjJdfDApKzI4Pj4yXXwwLGNbaD4+Ml18MCl8MDtpPWs7cmV0dXJufWNbaj4+Ml09U0EoY1tmPj4yXXwwLGNbZz4+Ml18MCxjW2g+PjJdfDApfDA7aWYoKGNbaj4+Ml18MCk9PShjW2g+PjJdfDApKXtpPWs7cmV0dXJufWlmKCEoY1soY1tmPj4yXXwwKSs4Pj4yXXwwKSl7aT1rO3JldHVybn1peChjWyhjW2Y+PjJdfDApKzg+PjJdfDAsODUsY1tqPj4yXXwwLGNbaD4+Ml18MCl8MDtpPWs7cmV0dXJufWZ1bmN0aW9uIFNBKGYsZyxoKXtmPWZ8MDtnPWd8MDtoPWh8MDt2YXIgaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTAsRT0wLEY9MCxHPTAsSD0wLEk9MCxKPTAsSz0wLEw9MCxNPTAsTj0wLE89MCxQPTAsUT0wLFI9MCxTPTAsVD0wLFU9MCxWPTAsVz0wLFg9MCxZPTAsWj0wLCQ9MCxhYT0wLGJhPTAsY2E9MCxkYT0wLGVhPTAsZmE9MCxnYT0wLGhhPTAsaWE9MCxqYT0wO2phPWk7aT1pKzMyMHwwO3g9amErMjR8MDt3PWphKzE2fDA7Rj1qYSs4fDA7dj1qYTtnYT1qYSszMDR8MDtoYT1qYSszMDB8MDtPPWphKzI5NnwwO2lhPWphKzI5MnwwO2VhPWphKzI4OHwwO0I9amErMjg0fDA7YmE9amErMjgwfDA7Y2E9amErMjc2fDA7ZGE9amErMjcyfDA7Uj1qYSsyNjh8MDtFPWphKzI2NHwwO1M9amErMjE2fDA7Qz1qYSsyMDh8MDtxPWphKzIwNHwwO3I9amErMjAwfDA7bT1qYSsxOTZ8MDtuPWphKzE5MnwwO3k9amErMTg4fDA7ej1qYSsxODR8MDtEPWphKzE4MHwwO3Q9amErMTc2fDA7aj1qYSsxNzJ8MDtzPWphKzE2OHwwO1E9amErMTY0fDA7UD1qYSsxNjB8MDtOPWphKzE1NnwwO0c9amErMTUyfDA7SD1qYSsxNDh8MDtMPWphKzE0NHwwO0k9amErMTQwfDA7QT1qYSszMDl8MDtNPWphKzEzNnwwO0o9amErMTMyfDA7Sz1qYSszMDh8MDtvPWphKzEyOHwwO2s9amErMTI0fDA7bD1qYSsxMjB8MDt1PWphKzExNnwwO3A9amErMTEyfDA7VT1qYSsxMDh8MDtYPWphKzEwNHwwO1c9amErMTAwfDA7Vj1qYSs5NnwwO1o9amErOTJ8MDtUPWphKzg4fDA7WT1qYSs0MHwwO2FhPWphKzMyfDA7JD1qYSsyOHwwO2NbaGE+PjJdPWY7Y1tPPj4yXT1nO2NbaWE+PjJdPWg7Y1tlYT4+Ml09Y1soY1toYT4+Ml18MCkrOD4+Ml07Y1tiYT4+Ml09Y1tpYT4+Ml07Y1tjYT4+Ml09MDtjW2RhPj4yXT0wO2NbQz4+Ml09MDtpZighKGNbZWE+PjJdfDApKXtjW2dhPj4yXT0wO2lhPWNbZ2E+PjJdfDA7aT1qYTtyZXR1cm4gaWF8MH1pZighKGNbTz4+Ml18MCkpY1tCPj4yXT0xMDE7ZWxzZSBjW0I+PjJdPWRbY1tPPj4yXT4+MF07YTpkbyBzd2l0Y2goY1tCPj4yXXwwKXtjYXNlIDE1NDp7Y1txPj4yXT1jWyhjW08+PjJdfDApKzQwPj4yXTtjW3I+PjJdPShjWyhjW3E+PjJdfDApKzI4Pj4yXXwwKSsoKGJbKGNbTz4+Ml18MCkrMzQ+PjFdfDApKjI0fDApO2lmKCEoYVtjW3E+PjJdPj4wXXwwKSl7Y1tnYT4+Ml09Y1soY1tyPj4yXXwwKSsxNj4+Ml07aWE9Y1tnYT4+Ml18MDtpPWphO3JldHVybiBpYXwwfWlmKGFbKGNbcT4+Ml18MCkrMT4+MF18MCl7angoY1tlYT4+Ml18MCw5NixjWyhjW3E+PjJdfDApKzg+PjJdfDAsY1soY1tyPj4yXXwwKSsxMj4+Ml18MCxjW2lhPj4yXXwwKXwwO2NbZ2E+PjJdPWNbaWE+PjJdO2lhPWNbZ2E+PjJdfDA7aT1qYTtyZXR1cm4gaWF8MH1lbHNlIGZhPTExO2JyZWFrfWNhc2UgMTUyOntmYT0xMTticmVha31jYXNlIDEzNDp7VUEoY1toYT4+Ml18MCxjW08+PjJdfDAsMCxjW2lhPj4yXXwwKTtjW2dhPj4yXT1jW2lhPj4yXTtpYT1jW2dhPj4yXXwwO2k9amE7cmV0dXJuIGlhfDB9Y2FzZSAxMzI6e1ZBKGNbZWE+PjJdfDAsY1soY1tPPj4yXXwwKSs4Pj4yXXwwLDAsY1tpYT4+Ml18MCk7Y1tnYT4+Ml09Y1tpYT4+Ml07aWE9Y1tnYT4+Ml18MDtpPWphO3JldHVybiBpYXwwfWNhc2UgOTc6e2h4KGNbZWE+PjJdfDAsY1tpYT4+Ml18MCxjWyhjW08+PjJdfDApKzg+PjJdfDApfDA7Y1tnYT4+Ml09Y1tpYT4+Ml07aWE9Y1tnYT4+Ml18MDtpPWphO3JldHVybiBpYXwwfWNhc2UgMTAxOntpeChjW2VhPj4yXXwwLDc5LDAsY1tpYT4+Ml18MCl8MDtjW2dhPj4yXT1jW2lhPj4yXTtpYT1jW2dhPj4yXXwwO2k9amE7cmV0dXJuIGlhfDB9Y2FzZSAxMzM6e2NbeT4+Ml09KGNbKGNbTz4+Ml18MCkrOD4+Ml18MCkrMjtjW24+PjJdPShKZihjW3k+PjJdfDApfDApLTE7Y1t6Pj4yXT1JeChRQShjW2VhPj4yXXwwKXwwLGNbeT4+Ml18MCxjW24+PjJdfDApfDA7bXgoY1tlYT4+Ml18MCw4MSwoY1tuPj4yXXwwKS8yfDAsY1tpYT4+Ml18MCwwLGNbej4+Ml18MCwtMSl8MDtjW2dhPj4yXT1jW2lhPj4yXTtpYT1jW2dhPj4yXXwwO2k9amE7cmV0dXJuIGlhfDB9Y2FzZSAxMzU6e2l4KGNbZWE+PjJdfDAsODIsYlsoY1tPPj4yXXwwKSszMj4+MV18MCxjW2lhPj4yXXwwKXwwO2lmKGFbKGNbKGNbTz4+Ml18MCkrOD4+Ml18MCkrMT4+MF18MClNaChjW2VhPj4yXXwwLC0xLGNbKGNbKGNbaGE+PjJdfDApKzQyOD4+Ml18MCkrKChiWyhjW08+PjJdfDApKzMyPj4xXXwwKS0xPDwyKT4+Ml18MCwtMik7Y1tnYT4+Ml09Y1tpYT4+Ml07aWE9Y1tnYT4+Ml18MDtpPWphO3JldHVybiBpYXwwfWNhc2UgMTU3OntjW2dhPj4yXT1jWyhjW08+PjJdfDApKzI4Pj4yXTtpYT1jW2dhPj4yXXwwO2k9amE7cmV0dXJuIGlhfDB9Y2FzZSA2Njp7Y1tiYT4+Ml09U0EoY1toYT4+Ml18MCxjWyhjW08+PjJdfDApKzEyPj4yXXwwLGNbaWE+PjJdfDApfDA7aWYoKGNbYmE+PjJdfDApIT0oY1tpYT4+Ml18MCkpe2l4KGNbZWE+PjJdfDAsODUsY1tiYT4+Ml18MCxjW2lhPj4yXXwwKXwwO2NbYmE+PjJdPWNbaWE+PjJdfWl4KGNbZWE+PjJdfDAsOTMsY1tpYT4+Ml18MCwoRHgoY1soY1tPPj4yXXwwKSs4Pj4yXXwwLDApfDApPDwyND4+MjQpfDA7V0EoY1toYT4+Ml18MCxjW2JhPj4yXXwwLDEpO2NbZ2E+PjJdPWNbYmE+PjJdO2lhPWNbZ2E+PjJdfDA7aT1qYTtyZXR1cm4gaWF8MH1jYXNlIDE0ODpjYXNlIDI5OntjW0I+PjJdPShjW0I+PjJdfDApPT0yOT8zNzozNjtjW0M+PjJdPTEyODtmYT0yOTticmVha31jYXNlIDM3OmNhc2UgMzY6Y2FzZSA0MTpjYXNlIDM4OmNhc2UgMzk6Y2FzZSA0MDp7ZmE9Mjk7YnJlYWt9Y2FzZSA1MjpjYXNlIDQ2OmNhc2UgNDU6Y2FzZSA1MDpjYXNlIDQ0OmNhc2UgNDM6Y2FzZSA1MTpjYXNlIDQ4OmNhc2UgNDk6Y2FzZSA0NzpjYXNlIDI3OmNhc2UgMjg6e2NbUj4+Ml09WkEoY1toYT4+Ml18MCxjWyhjW08+PjJdfDApKzEyPj4yXXwwLGNhKXwwO2NbRT4+Ml09WkEoY1toYT4+Ml18MCxjWyhjW08+PjJdfDApKzE2Pj4yXXwwLGRhKXwwO2p4KGNbZWE+PjJdfDAsY1tCPj4yXXwwLGNbRT4+Ml18MCxjW1I+PjJdfDAsY1tpYT4+Ml18MCl8MDticmVha31jYXNlIDE1NTp7Y1t0Pj4yXT1jWyhjW08+PjJdfDApKzEyPj4yXTtpZigoZFtjW3Q+PjJdPj4wXXwwKT09MTM0KXtVQShjW2hhPj4yXXwwLGNbdD4+Ml18MCwxLGNbaWE+PjJdfDApO2NbZ2E+PjJdPWNbaWE+PjJdO2lhPWNbZ2E+PjJdfDA7aT1qYTtyZXR1cm4gaWF8MH1pZigoZFtjW3Q+PjJdPj4wXXwwKSE9MTMyKXthW1M+PjBdPS0xMjI7Y1tTKzQ+PjJdPTE3NDA4O2NbUys4Pj4yXT0wO2NbUj4+Ml09WkEoY1toYT4+Ml18MCxTLGNhKXwwO2NbRT4+Ml09WkEoY1toYT4+Ml18MCxjWyhjW08+PjJdfDApKzEyPj4yXXwwLGRhKXwwO2p4KGNbZWE+PjJdfDAsNDgsY1tFPj4yXXwwLGNbUj4+Ml18MCxjW2lhPj4yXXwwKXwwO2JyZWFrIGF9VkEoY1tlYT4+Ml18MCxjWyhjW3Q+PjJdfDApKzg+PjJdfDAsMSxjW2lhPj4yXXwwKTtjW2dhPj4yXT1jW2lhPj4yXTtpYT1jW2dhPj4yXXwwO2k9amE7cmV0dXJuIGlhfDB9Y2FzZSAxOTpjYXNlIDU0OntjW1I+PjJdPVpBKGNbaGE+PjJdfDAsY1soY1tPPj4yXXwwKSsxMj4+Ml18MCxjYSl8MDtpeChjW2VhPj4yXXwwLGNbQj4+Ml18MCxjW1I+PjJdfDAsY1tiYT4+Ml18MCl8MDticmVha31jYXNlIDM1OmNhc2UgMzQ6e2l4KGNbZWE+PjJdfDAsNzYsMSxjW2lhPj4yXXwwKXwwO2NbUj4+Ml09WkEoY1toYT4+Ml18MCxjWyhjW08+PjJdfDApKzEyPj4yXXwwLGNhKXwwO2Nbaj4+Ml09U3ooY1tlYT4+Ml18MCxjW0I+PjJdfDAsY1tSPj4yXXwwKXwwO2l4KGNbZWE+PjJdfDAsNzYsMCxjW2lhPj4yXXwwKXwwO1p6KGNbZWE+PjJdfDAsY1tqPj4yXXwwKTticmVha31jYXNlIDE1Mzp7Y1tzPj4yXT1jWyhjW08+PjJdfDApKzQwPj4yXTtpZighKGNbcz4+Ml18MCkpe2lhPWNbaGE+PjJdfDA7Y1t2Pj4yXT1jWyhjW08+PjJdfDApKzg+PjJdO0VoKGlhLDMxMDY3LHYpO2JyZWFrIGF9Y1tnYT4+Ml09Y1soY1soY1tzPj4yXXwwKSs0MD4+Ml18MCkrKGJbKGNbTz4+Ml18MCkrMzQ+PjFdPDw0KSs4Pj4yXTtpYT1jW2dhPj4yXXwwO2k9amE7cmV0dXJuIGlhfDB9Y2FzZSAxNTE6e2NbSD4+Ml09MDtjW0k+PjJdPWNbY1toYT4+Ml0+PjJdO2FbQT4+MF09YVsoY1tJPj4yXXwwKSs2Nj4+MF18MDtjW00+PjJdPTA7aWYoY1soY1tPPj4yXXwwKSs0Pj4yXSYxNjM4NCljW1E+PjJdPTA7ZWxzZSBjW1E+PjJdPWNbKGNbTz4+Ml18MCkrMjA+PjJdO2lmKGNbUT4+Ml18MClqPWNbY1tRPj4yXT4+Ml18MDtlbHNlIGo9MDtjW1A+PjJdPWo7Y1tHPj4yXT1jWyhjW08+PjJdfDApKzg+PjJdO2NbTj4+Ml09a2koY1tJPj4yXXwwLGNbRz4+Ml18MCxjW1A+PjJdfDAsYVtBPj4wXXwwLDApfDA7aWYoKGNbTj4+Ml18MCkhPTA/KGNbKGNbTj4+Ml18MCkrMTY+PjJdfDApPT0wOjApe2lmKGVbKGNbTj4+Ml18MCkrMj4+MV0mNTEyKXtjW0o+PjJdPVd6KGNbZWE+PjJdfDApfDA7UkEoY1toYT4+Ml18MCxjW2NbKGNbUT4+Ml18MCkrND4+Ml0+PjJdfDAsY1tpYT4+Ml18MCk7Y1tMPj4yXT0xO3doaWxlKDEpe2o9Y1tlYT4+Ml18MDtpZigoY1tMPj4yXXwwKT49KGNbUD4+Ml18MCkpYnJlYWs7aXgoaiwzNSxjW2lhPj4yXXwwLGNbSj4+Ml18MCl8MDtHQShjW2hhPj4yXXwwLGNbaWE+PjJdfDAsMSk7QUEoY1toYT4+Ml18MCk7UkEoY1toYT4+Ml18MCxjWyhjWyhjW1E+PjJdfDApKzQ+PjJdfDApKygoY1tMPj4yXXwwKSoyMHwwKT4+Ml18MCxjW2lhPj4yXXwwKTt5QShjW2hhPj4yXXwwKTtjW0w+PjJdPShjW0w+PjJdfDApKzF9X3ooaixjW0o+PjJdfDApO2JyZWFrIGF9aWYoZVsoY1tOPj4yXXwwKSsyPj4xXSYxMDI0KXtjW2dhPj4yXT1TQShjW2hhPj4yXXwwLGNbY1soY1tRPj4yXXwwKSs0Pj4yXT4+Ml18MCxjW2lhPj4yXXwwKXwwO2lhPWNbZ2E+PjJdfDA7aT1qYTtyZXR1cm4gaWF8MH1jW0w+PjJdPTA7d2hpbGUoMSl7aWYoKGNbTD4+Ml18MCk+PShjW1A+PjJdfDApKWJyZWFrO2lmKChjW0w+PjJdfDApPDMyPygkQShjWyhjWyhjW1E+PjJdfDApKzQ+PjJdfDApKygoY1tMPj4yXXwwKSoyMHwwKT4+Ml18MCl8MCkhPTA6MCljW0g+PjJdPWNbSD4+Ml18MTw8Y1tMPj4yXTtpZighKChjW00+PjJdfDApIT0wPzE6KGVbKGNbTj4+Ml18MCkrMj4+MV0mMzJ8MCk9PTApKWNbTT4+Ml09ZnkoY1toYT4+Ml18MCxjWyhjWyhjW1E+PjJdfDApKzQ+PjJdfDApKygoY1tMPj4yXXwwKSoyMHwwKT4+Ml18MCl8MDtjW0w+PjJdPShjW0w+PjJdfDApKzF9aWYoY1tRPj4yXXwwKXtqPWNbaGE+PjJdfDA7aWYoY1tIPj4yXXwwKXtjW1I+PjJdPShjW2orNDQ+PjJdfDApKzE7ZGE9KGNbaGE+PjJdfDApKzQ0fDA7Y1tkYT4+Ml09KGNbZGE+PjJdfDApKyhjW1A+PjJdfDApfWVsc2UgY1tSPj4yXT1DQShqLGNbUD4+Ml18MCl8MDtkbyBpZihlWyhjW04+PjJdfDApKzI+PjFdJjE5Mil7YVtLPj4wXT1hW2NbY1soY1tRPj4yXXwwKSs0Pj4yXT4+Ml0+PjBdfDA7aWYoKGRbSz4+MF18MCkhPTE1Mj8oZFtLPj4wXXwwKSE9MTU0OjApYnJlYWs7YVsoY1tjWyhjW1E+PjJdfDApKzQ+PjJdPj4yXXwwKSszOD4+MF09ZVsoY1tOPj4yXXwwKSsyPj4xXSYxOTJ9d2hpbGUoMCk7QUEoY1toYT4+Ml18MCk7YUIoY1toYT4+Ml18MCxjW1E+PjJdfDAsY1tSPj4yXXwwLDAsMyl8MDt5QShjW2hhPj4yXXwwKX1lbHNlIGNbUj4+Ml09MDtpZigoY1tQPj4yXXwwKT49Mj8oY1soY1tPPj4yXXwwKSs0Pj4yXSYxMjh8MCkhPTA6MCljW04+PjJdPWJCKGNbST4+Ml18MCxjW04+PjJdfDAsY1tQPj4yXXwwLGNbKGNbKGNbUT4+Ml18MCkrND4+Ml18MCkrMjA+PjJdfDApfDA7ZWxzZSBmYT03OTtpZigoZmF8MCk9PTc5PyhjW1A+PjJdfDApPjA6MCljW04+PjJdPWJCKGNbST4+Ml18MCxjW04+PjJdfDAsY1tQPj4yXXwwLGNbY1soY1tRPj4yXXwwKSs0Pj4yXT4+Ml18MCl8MDtpZihlWyhjW04+PjJdfDApKzI+PjFdJjMyKXtpZighKGNbTT4+Ml18MCkpY1tNPj4yXT1jWyhjW0k+PjJdfDApKzg+PjJdO214KGNbZWE+PjJdfDAsODgsMCwwLDAsY1tNPj4yXXwwLC00KXwwfW14KGNbZWE+PjJdfDAsODksY1tIPj4yXXwwLGNbUj4+Ml18MCxjW2lhPj4yXXwwLGNbTj4+Ml18MCwtNSl8MDtKaChjW2VhPj4yXXwwLGNbUD4+Ml0mMjU1KTtpZigoY1tQPj4yXXwwKSE9MCYoY1tIPj4yXXwwKT09MClGQShjW2hhPj4yXXwwLGNbUj4+Ml18MCxjW1A+PjJdfDApO2NbZ2E+PjJdPWNbaWE+PjJdO2lhPWNbZ2E+PjJdfDA7aT1qYTtyZXR1cm4gaWF8MH1pYT1jW2hhPj4yXXwwO2NbRj4+Ml09Y1tHPj4yXTtFaChpYSwzMTA5MyxGKTticmVha31jYXNlIDExOTpjYXNlIDIwOntpZigoY1tCPj4yXXwwKT09MTE5PyhpYT1jW2NbY1soY1tPPj4yXXwwKSsyMD4+Ml0+PjJdPj4yXXwwLGNbbz4+Ml09aWEsKGlhfDApIT0xKTowKXtjQihjW2hhPj4yXXwwLGNbbz4+Ml18MCwxKTticmVhayBhfWNbZ2E+PjJdPWRCKGNbaGE+PjJdfDAsY1tPPj4yXXwwLDAsMCl8MDtpYT1jW2dhPj4yXXwwO2k9amE7cmV0dXJuIGlhfDB9Y2FzZSAxNTk6e2lmKCEoY1soY1soY1tPPj4yXXwwKSsxMj4+Ml18MCkrMjg+PjJdfDApKXtpYT1kQihjW2hhPj4yXXwwLGNbKGNbTz4+Ml18MCkrMTI+PjJdfDAsMCwwKXwwO2NbKGNbKGNbTz4+Ml18MCkrMTI+PjJdfDApKzI4Pj4yXT1pYX1jW2dhPj4yXT0oY1soY1soY1tPPj4yXXwwKSsxMj4+Ml18MCkrMjg+PjJdfDApKyhiWyhjW08+PjJdfDApKzMyPj4xXXwwKTtpYT1jW2dhPj4yXXwwO2k9amE7cmV0dXJuIGlhfDB9Y2FzZSAzMzp7Y1trPj4yXT1XeihjW2VhPj4yXXwwKXwwO2NbbD4+Ml09V3ooY1tlYT4+Ml18MCl8MDtpeChjW2VhPj4yXXwwLDc5LDAsY1tpYT4+Ml18MCl8MDtlQihjW2hhPj4yXXwwLGNbTz4+Ml18MCxjW2s+PjJdfDAsY1tsPj4yXXwwKTtpeChjW2VhPj4yXXwwLDc2LDEsY1tpYT4+Ml18MCl8MDtfeihjW2VhPj4yXXwwLGNbaz4+Ml18MCk7aXgoY1tlYT4+Ml18MCw5MSxjW2lhPj4yXXwwLDApfDA7X3ooY1tlYT4+Ml18MCxjW2w+PjJdfDApO2NbZ2E+PjJdPWNbaWE+PjJdO2lhPWNbZ2E+PjJdfDA7aT1qYTtyZXR1cm4gaWF8MH1jYXNlIDMyOntmQihjW2hhPj4yXXwwLGNbTz4+Ml18MCxjW2lhPj4yXXwwLDAsMCk7Y1tnYT4+Ml09Y1tpYT4+Ml07aWE9Y1tnYT4+Ml18MDtpPWphO3JldHVybiBpYXwwfWNhc2UgMTU2OmNhc2UgNTM6Y2FzZSAxNjE6e2NbZ2E+PjJdPVNBKGNbaGE+PjJdfDAsY1soY1tPPj4yXXwwKSsxMj4+Ml18MCxjW2lhPj4yXXwwKXwwO2lhPWNbZ2E+PjJdfDA7aT1qYTtyZXR1cm4gaWF8MH1jYXNlIDg4OntjW3U+PjJdPWNbKGNbTz4+Ml18MCkrNDQ+PjJdO2NbcD4+Ml09KF8oY1soY1tPPj4yXXwwKSsyOD4+Ml18MCwoYlsoY1t1Pj4yXXwwKSszND4+MV18MCkrMXwwKXwwKSsxKyhiWyhjW08+PjJdfDApKzMyPj4xXXwwKTtpeChjW2VhPj4yXXwwLDE0MyxjW3A+PjJdfDAsY1tpYT4+Ml18MCl8MDtpZigoYlsoY1tPPj4yXXwwKSszMj4+MV18MCk+PTA/KGFbKGNbKGNbdT4+Ml18MCkrND4+Ml18MCkrKGJbKGNbTz4+Ml18MCkrMzI+PjFdPDw0KSsxMz4+MF18MCk9PTY5OjApU3ooY1tlYT4+Ml18MCw5MixjW2lhPj4yXXwwKXwwO2JyZWFrfWNhc2UgMTU4OntFaChjW2hhPj4yXXwwLDI5ODM4LHcpO2JyZWFrfWNhc2UgODM6e2lmKCEoY1soY1toYT4+Ml18MCkrMTI4Pj4yXXwwKSl7RWgoY1toYT4+Ml18MCwzMTExNix4KTtjW2dhPj4yXT0wO2lhPWNbZ2E+PjJdfDA7aT1qYTtyZXR1cm4gaWF8MH1pZigoYVsoY1tPPj4yXXwwKSsxPj4wXXwwKT09MilWeChjW2hhPj4yXXwwKTtpZigoYVsoY1tPPj4yXXwwKSsxPj4wXXwwKT09NCl7bXgoY1tlYT4+Ml18MCw3NSwwLDQsMCxjWyhjW08+PjJdfDApKzg+PjJdfDAsMCl8MDticmVhayBhfWVsc2V7dEEoY1toYT4+Ml18MCwxODExLGFbKGNbTz4+Ml18MCkrMT4+MF18MCxjWyhjW08+PjJdfDApKzg+PjJdfDAsMCwwKTticmVhayBhfX1kZWZhdWx0OntjWyQ+PjJdPTA7Y1taPj4yXT1jWyhjW08+PjJdfDApKzIwPj4yXTtjW1Q+PjJdPWNbKGNbWj4+Ml18MCkrND4+Ml07Y1tXPj4yXT1jW2NbWj4+Ml0+PjJdO2NbVT4+Ml09V3ooY1tlYT4+Ml18MCl8MDtSPWNbKGNbTz4+Ml18MCkrMTI+PjJdfDA7Y1thYT4+Ml09UjtpZihSKXtqPVM7az1jW2FhPj4yXXwwO2w9ais0OHwwO2Rve2Nbaj4+Ml09Y1trPj4yXTtqPWorNHwwO2s9ays0fDB9d2hpbGUoKGp8MCk8KGx8MCkpO2hCKFMsZ0IoY1toYT4+Ml18MCxTLGNhKXwwKTtqPVk7bD1qKzQ4fDA7ZG97Y1tqPj4yXT0wO2o9ais0fDB9d2hpbGUoKGp8MCk8KGx8MCkpO2FbWT4+MF09Mzc7Y1tZKzEyPj4yXT1TO2NbJD4+Ml09WTtjW2NhPj4yXT0wfWNbVj4+Ml09MDt3aGlsZSgxKXtpZigoY1tWPj4yXXwwKT49KChjW1c+PjJdfDApLTF8MCkpYnJlYWs7QUEoY1toYT4+Ml18MCk7aj1jWyhjW1Q+PjJdfDApKygoY1tWPj4yXXwwKSoyMHwwKT4+Ml18MDtpZihjW2FhPj4yXXwwKWNbWSsxNj4+Ml09ajtlbHNlIGNbJD4+Ml09ajtjW1g+PjJdPVd6KGNbZWE+PjJdfDApfDA7aUIoY1toYT4+Ml18MCxjWyQ+PjJdfDAsY1tYPj4yXXwwLDE2KTtSQShjW2hhPj4yXXwwLGNbKGNbVD4+Ml18MCkrKCgoY1tWPj4yXXwwKSsxfDApKjIwfDApPj4yXXwwLGNbaWE+PjJdfDApO1l6KGNbZWE+PjJdfDAsY1tVPj4yXXwwKXwwO3lBKGNbaGE+PjJdfDApO196KGNbZWE+PjJdfDAsY1tYPj4yXXwwKTtjW1Y+PjJdPShjW1Y+PjJdfDApKzJ9aWYoY1tXPj4yXSYxKXtBQShjW2hhPj4yXXwwKTtSQShjW2hhPj4yXXwwLGNbKGNbKGNbWj4+Ml18MCkrND4+Ml18MCkrKCgoY1tXPj4yXXwwKS0xfDApKjIwfDApPj4yXXwwLGNbaWE+PjJdfDApO3lBKGNbaGE+PjJdfDApfWVsc2UgaXgoY1tlYT4+Ml18MCw3OSwwLGNbaWE+PjJdfDApfDA7X3ooY1tlYT4+Ml18MCxjW1U+PjJdfDApfX13aGlsZSgwKTtkbyBpZigoZmF8MCk9PTExKXtjW20+PjJdPWNbKGNbTz4+Ml18MCkrMjg+PjJdO2RvIGlmKChjW20+PjJdfDApPDApe2lmKChjWyhjW2hhPj4yXXwwKSs1Nj4+Ml18MCk8PTApe2NbbT4+Ml09Y1soY1toYT4+Ml18MCkrNjA+PjJdO2JyZWFrfWNbZ2E+PjJdPShiWyhjW08+PjJdfDApKzMyPj4xXXwwKSsoY1soY1toYT4+Ml18MCkrNTY+PjJdfDApO2lhPWNbZ2E+PjJdfDA7aT1qYTtyZXR1cm4gaWF8MH13aGlsZSgwKTtjW2dhPj4yXT1UQShjW2hhPj4yXXwwLGNbKGNbTz4+Ml18MCkrNDQ+PjJdfDAsYlsoY1tPPj4yXXwwKSszMj4+MV18MCxjW20+PjJdfDAsY1tpYT4+Ml18MCxhWyhjW08+PjJdfDApKzM4Pj4wXXwwKXwwO2lhPWNbZ2E+PjJdfDA7aT1qYTtyZXR1cm4gaWF8MH1lbHNlIGlmKChmYXwwKT09Mjkpe2NbRD4+Ml09Y1soY1tPPj4yXXwwKSsxMj4+Ml07ZmE9KFhBKGNbRD4+Ml18MCl8MCkhPTA7aj1jW2hhPj4yXXwwO2lmKGZhKXtZQShqLGNbTz4+Ml18MCxjW2lhPj4yXXwwLGNbQj4+Ml0mMjU1LGNbQz4+Ml0mMjU1KTticmVha31lbHNle2NbUj4+Ml09WkEoaixjW0Q+PjJdfDAsY2EpfDA7Y1tFPj4yXT1aQShjW2hhPj4yXXwwLGNbKGNbTz4+Ml18MCkrMTY+PjJdfDAsZGEpfDA7X0EoY1toYT4+Ml18MCxjW0Q+PjJdfDAsY1soY1tPPj4yXXwwKSsxNj4+Ml18MCxjW0I+PjJdfDAsY1tSPj4yXXwwLGNbRT4+Ml18MCxjW2JhPj4yXXwwLDMyfGNbQz4+Ml0pfDA7YnJlYWt9fXdoaWxlKDApO3h4KGNbaGE+PjJdfDAsY1tjYT4+Ml18MCk7eHgoY1toYT4+Ml18MCxjW2RhPj4yXXwwKTtjW2dhPj4yXT1jW2JhPj4yXTtpYT1jW2dhPj4yXXwwO2k9amE7cmV0dXJuIGlhfDB9ZnVuY3Rpb24gVEEoZSxmLGcsaCxqLGspe2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO2s9a3wwO3ZhciBsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MDt3PWk7aT1pKzQ4fDA7bD13KzMyfDA7bT13KzI4fDA7bj13KzI0fDA7bz13KzIwfDA7cD13KzE2fDA7cT13KzEyfDA7cj13KzM2fDA7dT13Kzh8MDtzPXcrNHwwO3Q9dztjW20+PjJdPWU7Y1tuPj4yXT1mO2Nbbz4+Ml09ZztjW3A+PjJdPWg7Y1txPj4yXT1qO2Fbcj4+MF09aztjW3U+PjJdPWNbKGNbbT4+Ml18MCkrOD4+Ml07Y1tzPj4yXT0wO2NbdD4+Ml09KGNbbT4+Ml18MCkrMTUyO3doaWxlKDEpe2lmKChjW3M+PjJdfDApPj0oZFsoY1ttPj4yXXwwKSsyNT4+MF18MCkpYnJlYWs7aWYoKGNbY1t0Pj4yXT4+Ml18MCk9PShjW3A+PjJdfDApPyhiWyhjW3Q+PjJdfDApKzQ+PjFdfDApPT0oY1tvPj4yXXwwKTowKXt2PTU7YnJlYWt9Y1tzPj4yXT0oY1tzPj4yXXwwKSsxO2NbdD4+Ml09KGNbdD4+Ml18MCkrMjB9aWYoKHZ8MCk9PTUpe3U9KGNbbT4+Ml18MCkrNjh8MDt2PWNbdT4+Ml18MDtjW3U+PjJdPXYrMTtjWyhjW3Q+PjJdfDApKzE2Pj4yXT12O0ZCKGNbbT4+Ml18MCxjWyhjW3Q+PjJdfDApKzEyPj4yXXwwKTtjW2w+PjJdPWNbKGNbdD4+Ml18MCkrMTI+PjJdO3Y9Y1tsPj4yXXwwO2k9dztyZXR1cm4gdnwwfU5BKGNbdT4+Ml18MCxjW24+PjJdfDAsY1twPj4yXXwwLGNbbz4+Ml18MCxjW3E+PjJdfDApO2lmKGFbcj4+MF18MClKaChjW3U+PjJdfDAsYVtyPj4wXXwwKTtlbHNlIEdCKGNbbT4+Ml18MCxjW3A+PjJdfDAsY1tvPj4yXXwwLGNbcT4+Ml18MCk7Y1tsPj4yXT1jW3E+PjJdO3Y9Y1tsPj4yXXwwO2k9dztyZXR1cm4gdnwwfWZ1bmN0aW9uIFVBKGEsYixkLGUpe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wO3A9aTtpPWkrNDh8MDtuPXArOHwwO2Y9cCs0MHwwO3E9cCszNnwwO2c9cCszMnwwO2g9cCsyOHwwO2w9cCsyNHwwO2s9cCsyMHwwO2o9cCsxNnwwO209cDtvPXArMTJ8MDtjW2Y+PjJdPWE7Y1txPj4yXT1iO2NbZz4+Ml09ZDtjW2g+PjJdPWU7Y1tsPj4yXT1jWyhjW2Y+PjJdfDApKzg+PjJdO2U9KGNbcT4+Ml18MCkrOHwwO2lmKGNbKGNbcT4+Ml18MCkrND4+Ml0mMTAyNCl7Y1trPj4yXT1jW2U+PjJdO2lmKGNbZz4+Ml18MCljW2s+PjJdPTAtKGNbaz4+Ml18MCk7aXgoY1tsPj4yXXwwLDc2LGNbaz4+Ml18MCxjW2g+PjJdfDApfDA7aT1wO3JldHVybn1jW28+PjJdPWNbZT4+Ml07Y1tqPj4yXT1IaShjW28+PjJdfDAsbSl8MDtpZigoY1tqPj4yXXwwKSE9MD8hKChjW2o+PjJdfDApPT0yJihjW2c+PjJdfDApIT0wKTowKWlmKCEoemQoY1tvPj4yXXwwLDMxMjkwLDIpfDApKXtxPWNbZj4+Ml18MDtjW24+PjJdPWNbbz4+Ml07RWgocSwzMTI5MyxuKTtpPXA7cmV0dXJufWVsc2V7VkEoY1tsPj4yXXwwLGNbbz4+Ml18MCxjW2c+PjJdfDAsY1toPj4yXXwwKTtpPXA7cmV0dXJufWlmKGNbZz4+Ml18MCl7bz0oY1tqPj4yXXwwKT09MjtuPW07bj1RUigwLDAsY1tuPj4yXXwwLGNbbis0Pj4yXXwwKXwwO3E9bTtjW3E+PjJdPW8/MDpuO2NbcSs0Pj4yXT1vPy0yMTQ3NDgzNjQ4OkN9RUIoY1tsPj4yXXwwLDc3LDAsY1toPj4yXXwwLDAsbSwtMTMpfDA7aT1wO3JldHVybn1mdW5jdGlvbiBWQShhLGIsZCxlKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxqPTAsaz0wLGw9MCxtPTA7bT1pO2k9aSszMnwwO2Y9bSsyMHwwO2c9bSsxNnwwO2o9bSsxMnwwO2s9bSs4fDA7bD1tO2NbZj4+Ml09YTtjW2c+PjJdPWI7Y1tqPj4yXT1kO2Nbaz4+Ml09ZTtpZighKGNbZz4+Ml18MCkpe2k9bTtyZXR1cm59Yj1jW2c+PjJdfDA7ZXooYixsLEpmKGNbZz4+Ml18MCl8MCwxKXwwO2lmKGNbaj4+Ml18MCloW2w+PjNdPS0raFtsPj4zXTtFQihjW2Y+PjJdfDAsMTMyLDAsY1trPj4yXXwwLDAsbCwtMTIpfDA7aT1tO3JldHVybn1mdW5jdGlvbiBXQShhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MDtlPWk7aT1pKzE2fDA7aD1lKzh8MDtnPWUrNHwwO2Y9ZTtjW2g+PjJdPWE7Y1tnPj4yXT1iO2NbZj4+Ml09ZDtHQShjW2g+PjJdfDAsY1tnPj4yXXwwLGNbZj4+Ml18MCk7aT1lO3JldHVybn1mdW5jdGlvbiBYQShhKXthPWF8MDt2YXIgYj0wLGQ9MDtiPWk7aT1pKzE2fDA7ZD1iO2NbZD4+Ml09YTthPShjeihjW2Q+PjJdfDApfDApPjEmMTtpPWI7cmV0dXJuIGF8MH1mdW5jdGlvbiBZQShiLGUsZixnLGgpe2I9YnwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO3ZhciBqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MDtDPWk7aT1pKzgwfDA7aj1DKzY0fDA7RD1DKzYwfDA7az1DKzU2fDA7bD1DKzcwfDA7bT1DKzY5fDA7Qj1DKzUyfDA7cz1DKzQ4fDA7dT1DKzQ0fDA7cD1DKzQwfDA7bz1DKzM2fDA7ej1DKzMyfDA7QT1DKzI4fDA7cT1DKzY4fDA7bj1DKzI0fDA7eD1DKzIwfDA7eT1DKzE2fDA7cj1DKzEyfDA7dD1DKzh8MDt2PUMrNHwwO3c9QztjW2o+PjJdPWI7Y1tEPj4yXT1lO2Nbaz4+Ml09ZjthW2w+PjBdPWc7YVttPj4wXT1oO2NbQj4+Ml09Y1soY1tqPj4yXXwwKSs4Pj4yXTtjW3M+PjJdPWNbKGNbRD4+Ml18MCkrMTI+PjJdO2NbdT4+Ml09Y1soY1tEPj4yXXwwKSsxNj4+Ml07Y1twPj4yXT1jeihjW3M+PjJdfDApfDA7Y1t6Pj4yXT0wO2NbQT4+Ml09MDthW3E+PjBdPWFbbD4+MF18MDtjW24+PjJdPVd6KGNbQj4+Ml18MCl8MDthW20+PjBdPWRbbT4+MF18MHwzMjtpZigoZFtxPj4wXXwwfDApPT0zOSlhW3E+PjBdPTQwO2lmKChkW3E+PjBdfDB8MCk9PTQxKWFbcT4+MF09Mzg7Y1t6Pj4yXT1DQihjW2o+PjJdfDAsY1tzPj4yXXwwKXwwO2NbQT4+Ml09Q0IoY1tqPj4yXXwwLGNbdT4+Ml18MCl8MDtjW28+PjJdPTA7d2hpbGUoMSl7Y1t4Pj4yXT0wO2NbeT4+Ml09MDtpZigoY1tvPj4yXXwwKT4wKUFBKGNbaj4+Ml18MCk7Y1t2Pj4yXT1EQihjW2o+PjJdfDAsY1tzPj4yXXwwLGNbbz4+Ml18MCxjW3o+PjJdfDAscix4KXwwO2Nbdz4+Ml09REIoY1tqPj4yXXwwLGNbdT4+Ml18MCxjW28+PjJdfDAsY1tBPj4yXXwwLHQseSl8MDtfQShjW2o+PjJdfDAsY1tyPj4yXXwwLGNbdD4+Ml18MCxkW3E+PjBdfDAsY1t2Pj4yXXwwLGNbdz4+Ml18MCxjW2s+PjJdfDAsZFttPj4wXXwwKXwwO3h4KGNbaj4+Ml18MCxjW3g+PjJdfDApO3h4KGNbaj4+Ml18MCxjW3k+PjJdfDApO2lmKChjW28+PjJdfDApPjApeUEoY1tqPj4yXXwwKTtpZigoY1tvPj4yXXwwKT09KChjW3A+PjJdfDApLTF8MCkpYnJlYWs7ZG8gaWYoKGRbcT4+MF18MHwwKSE9Mzcpe2Y9Y1tCPj4yXXwwO2lmKChkW3E+PjBdfDB8MCk9PTM2KXtpeChmLDIxLGNbaz4+Ml18MCxjW24+PjJdfDApfDA7YVttPj4wXT1kW20+PjBdfDB8ODticmVha31peChmLDQyLDAsY1tuPj4yXXwwKXwwO2lmKChjW28+PjJdfDApPT0oKGNbcD4+Ml18MCktMnwwKSlhW3E+PjBdPWFbbD4+MF18MH1lbHNle2l4KGNbQj4+Ml18MCwyMixjW2s+PjJdfDAsY1tuPj4yXXwwKXwwO2FbbT4+MF09ZFttPj4wXXwwfDh9d2hpbGUoMCk7Y1tvPj4yXT0oY1tvPj4yXXwwKSsxfV96KGNbQj4+Ml18MCxjW24+PjJdfDApO2k9QztyZXR1cm59ZnVuY3Rpb24gWkEoYSxiLGUpe2E9YXwwO2I9YnwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wO3E9aTtpPWkrNDh8MDtmPXErMzJ8MDtnPXErMjh8MDtoPXErMjR8MDtqPXErMjB8MDtvPXErMTZ8MDtsPXErMTJ8MDtrPXErOHwwO209cSs0fDA7bj1xO2NbZz4+Ml09YTtjW2g+PjJdPWI7Y1tqPj4yXT1lO2NbaD4+Ml09a3koY1toPj4yXXwwKXwwO2lmKCgoZFsoY1tnPj4yXXwwKSsyMz4+MF18MHwwKSE9MD8oZFtjW2g+PjJdPj4wXXwwfDApIT0xNTc6MCk/KEJCKGNbaD4+Ml18MCl8MCkhPTA6MCl7Y1tsPj4yXT1jWyhjW2c+PjJdfDApKzgwPj4yXTtjW2Nbaj4+Ml0+PjJdPTA7YTpkbyBpZihjW2w+PjJdfDApe2NbbT4+Ml09Y1soY1tsPj4yXXwwKSs0Pj4yXTtjW2s+PjJdPWNbY1tsPj4yXT4+Ml07d2hpbGUoMSl7aWYoKGNbaz4+Ml18MCk8PTApYnJlYWsgYTtpZigoKGRbKGNbbT4+Ml18MCkrMTM+PjBdfDApPj4+MiYxfDApIT0wPyhLeShjW2NbbT4+Ml0+PjJdfDAsY1toPj4yXXwwLC0xKXwwKT09MDowKWJyZWFrO2NbbT4+Ml09KGNbbT4+Ml18MCkrMjA7Y1trPj4yXT0oY1trPj4yXXwwKSstMX1jW2Y+PjJdPWNbKGNbbT4+Ml18MCkrMTY+PjJdO3A9Y1tmPj4yXXwwO2k9cTtyZXR1cm4gcHwwfXdoaWxlKDApO2U9KGNbZz4+Ml18MCkrNDR8MDtuPShjW2U+PjJdfDApKzF8MDtjW2U+PjJdPW47Y1tvPj4yXT1uO3dCKGNbZz4+Ml18MCxjW2g+PjJdfDAsY1tvPj4yXXwwLDEpfWVsc2UgcD0xMjtkbyBpZigocHwwKT09MTIpe2Nbbj4+Ml09dngoY1tnPj4yXXwwKXwwO2Nbbz4+Ml09U0EoY1tnPj4yXXwwLGNbaD4+Ml18MCxjW24+PjJdfDApfDA7aWYoKGNbbz4+Ml18MCk9PShjW24+PjJdfDApKXtjW2Nbaj4+Ml0+PjJdPWNbbj4+Ml07YnJlYWt9ZWxzZXt4eChjW2c+PjJdfDAsY1tuPj4yXXwwKTtjW2Nbaj4+Ml0+PjJdPTA7YnJlYWt9fXdoaWxlKDApO2NbZj4+Ml09Y1tvPj4yXTtwPWNbZj4+Ml18MDtpPXE7cmV0dXJuIHB8MH1mdW5jdGlvbiBfQShhLGIsZCxlLGYsZyxoLGope2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO3ZhciBrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MDtsPWk7aT1pKzQ4fDA7bj1sKzQwfDA7dj1sKzM2fDA7dT1sKzMyfDA7cz1sKzI4fDA7cD1sKzI0fDA7cj1sKzIwfDA7cT1sKzE2fDA7dD1sKzEyfDA7bT1sKzh8MDtrPWwrNHwwO289bDtjW24+PjJdPWE7Y1t2Pj4yXT1iO2NbdT4+Ml09ZDtjW3M+PjJdPWU7Y1twPj4yXT1mO2Nbcj4+Ml09ZztjW3E+PjJdPWg7Y1t0Pj4yXT1qO2Nbbz4+Ml09c0IoY1tuPj4yXXwwLGNbdj4+Ml18MCxjW3U+PjJdfDApfDA7Y1ttPj4yXT0oQUIoY1t2Pj4yXXwwLGNbdT4+Ml18MCxjW3Q+PjJdfDApfDApJjI1NTtjW2s+PjJdPW14KGNbKGNbbj4+Ml18MCkrOD4+Ml18MCxjW3M+PjJdfDAsY1tyPj4yXXwwLGNbcT4+Ml18MCxjW3A+PjJdfDAsY1tvPj4yXXwwLC00KXwwO0poKGNbKGNbbj4+Ml18MCkrOD4+Ml18MCxjW20+PjJdJjI1NSk7aT1sO3JldHVybiBjW2s+PjJdfDB9ZnVuY3Rpb24gJEEoYSl7YT1hfDA7dmFyIGI9MCxkPTA7Yj1pO2k9aSsxNnwwO2Q9YjtjW2Q+PjJdPWE7YT14QihjW2Q+PjJdfDAsMSwwKXwwO2k9YjtyZXR1cm4gYXwwfWZ1bmN0aW9uIGFCKGIsZixnLGgsail7Yj1ifDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7dmFyIGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MDt6PWk7aT1pKzY0fDA7az16KzQ0fDA7bD16KzQwfDA7bT16KzM2fDA7bj16KzMyfDA7bz16KzQ5fDA7dj16KzI4fDA7cT16KzI0fDA7cz16KzIwfDA7dD16KzE2fDA7cD16KzQ4fDA7eD16KzEyfDA7dT16Kzh8MDtyPXorNHwwO3c9ejtjW2s+PjJdPWI7Y1tsPj4yXT1mO2NbbT4+Ml09ZztjW24+PjJdPWg7YVtvPj4wXT1qO2FbcD4+MF09KGRbbz4+MF0mMXwwKSE9MD84NDo4NTtjW3g+PjJdPWNbKGNbaz4+Ml18MCkrOD4+Ml07Y1t0Pj4yXT1jW2NbbD4+Ml0+PjJdO2lmKCEoYVsoY1trPj4yXXwwKSsyMz4+MF18MCkpYVtvPj4wXT1kW28+PjBdJi0zO2Nbdj4+Ml09Y1soY1tsPj4yXXwwKSs0Pj4yXTtjW3E+PjJdPTA7d2hpbGUoMSl7aWYoKGNbcT4+Ml18MCk+PShjW3Q+PjJdfDApKWJyZWFrO2NbdT4+Ml09Y1tjW3Y+PjJdPj4yXTtpZigoZFtvPj4wXSY0fDApIT0wPyhnPWVbKGNbKGNbbD4+Ml18MCkrND4+Ml18MCkrKChjW3E+PjJdfDApKjIwfDApKzE2Pj4xXXwwLGNbcz4+Ml09ZywoZ3wwKT4wKTowKWl4KGNbeD4+Ml18MCxkW3A+PjBdfDAsKGNbcz4+Ml18MCkrKGNbbj4+Ml18MCktMXwwLChjW20+PjJdfDApKyhjW3E+PjJdfDApfDApfDA7ZWxzZSB5PTg7ZG8gaWYoKHl8MCk9PTgpe3k9MDtpZigoZFtvPj4wXSYyfDApIT0wPygkQShjW3U+PjJdfDApfDApIT0wOjApe3dCKGNbaz4+Ml18MCxjW3U+PjJdfDAsKGNbbT4+Ml18MCkrKGNbcT4+Ml18MCl8MCwwKTticmVha31jW3I+PjJdPVNBKGNbaz4+Ml18MCxjW3U+PjJdfDAsKGNbbT4+Ml18MCkrKGNbcT4+Ml18MCl8MCl8MDtpZigoY1tyPj4yXXwwKSE9KChjW20+PjJdfDApKyhjW3E+PjJdfDApfDApKXtpZigoKChkW3A+PjBdfDApPT04ND8oZz1lQShjW3g+PjJdfDAsLTEpfDAsY1t3Pj4yXT1nLChkW2c+PjBdfDApPT04NCk6MCk/KChjWyhjW3c+PjJdfDApKzQ+PjJdfDApKyhjWyhjW3c+PjJdfDApKzEyPj4yXXwwKSsxfDApPT0oY1tyPj4yXXwwKTowKT8oKGNbKGNbdz4+Ml18MCkrOD4+Ml18MCkrKGNbKGNbdz4+Ml18MCkrMTI+PjJdfDApKzF8MCk9PSgoY1ttPj4yXXwwKSsoY1txPj4yXXwwKXwwKTowKXtnPShjW3c+PjJdfDApKzEyfDA7Y1tnPj4yXT0oY1tnPj4yXXwwKSsxO2JyZWFrfWl4KGNbeD4+Ml18MCxkW3A+PjBdfDAsY1tyPj4yXXwwLChjW20+PjJdfDApKyhjW3E+PjJdfDApfDApfDB9fXdoaWxlKDApO2NbcT4+Ml09KGNbcT4+Ml18MCkrMTtjW3Y+PjJdPShjW3Y+PjJdfDApKzIwfWk9ejtyZXR1cm4gY1t0Pj4yXXwwfWZ1bmN0aW9uIGJCKGYsZyxoLGope2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO3ZhciBrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MDt5PWk7aT1pKzY0fDA7az15KzUyfDA7bD15KzQ4fDA7bT15KzQ0fDA7bj15KzQwfDA7bz15KzM2fDA7cz15KzMyfDA7dD15KzI4fDA7cT15KzI0fDA7dj15KzIwfDA7cD15KzE2fDA7cj15KzEyfDA7dT15Kzh8MDt4PXkrNHwwO3c9eTtjW2w+PjJdPWY7Y1ttPj4yXT1nO2Nbbj4+Ml09aDtjW28+PjJdPWo7Y1t2Pj4yXT0wO2NbcD4+Ml09MDtjW3U+PjJdPTA7aWYoIShjW28+PjJdfDApKXtjW2s+PjJdPWNbbT4+Ml07eD1jW2s+PjJdfDA7aT15O3JldHVybiB4fDB9aWYoKGRbY1tvPj4yXT4+MF18MCkhPTE1Mil7Y1trPj4yXT1jW20+PjJdO3g9Y1trPj4yXXwwO2k9eTtyZXR1cm4geHwwfWNbcz4+Ml09Y1soY1tvPj4yXXwwKSs0ND4+Ml07aWYoIShjW3M+PjJdfDApKXtjW2s+PjJdPWNbbT4+Ml07eD1jW2s+PjJdfDA7aT15O3JldHVybiB4fDB9aWYoIShkWyhjW3M+PjJdfDApKzQyPj4wXSYxNikpe2Nbaz4+Ml09Y1ttPj4yXTt4PWNbaz4+Ml18MDtpPXk7cmV0dXJuIHh8MH1jW3Q+PjJdPWNbKFV4KGNbbD4+Ml18MCxjW3M+PjJdfDApfDApKzg+PjJdO2NbcT4+Ml09Y1tjW3Q+PjJdPj4yXTtpZighKGNbKGNbcT4+Ml18MCkrNzI+PjJdfDApKXtjW2s+PjJdPWNbbT4+Ml07eD1jW2s+PjJdfDA7aT15O3JldHVybiB4fDB9Y1t4Pj4yXT1xaChjW2w+PjJdfDAsY1soY1ttPj4yXXwwKSsyMD4+Ml18MCl8MDtpZihjW3g+PjJdfDApe2Nbdz4+Ml09Y1t4Pj4yXTt3aGlsZSgxKXtpZighKGFbY1t3Pj4yXT4+MF18MCkpYnJlYWs7YVtjW3c+PjJdPj4wXT1hWzE3NjEzKyhkW2Nbdz4+Ml0+PjBdfDApPj4wXXwwO2Nbdz4+Ml09KGNbdz4+Ml18MCkrMX1jW3U+PjJdPVpiW2NbKGNbcT4+Ml18MCkrNzI+PjJdJjI1NV0oY1t0Pj4yXXwwLGNbbj4+Ml18MCxjW3g+PjJdfDAsdixwKXwwO1RmKGNbbD4+Ml18MCxjW3g+PjJdfDApfWlmKCEoY1t1Pj4yXXwwKSl7Y1trPj4yXT1jW20+PjJdO3g9Y1trPj4yXXwwO2k9eTtyZXR1cm4geHwwfXg9Y1tsPj4yXXwwO2Nbcj4+Ml09c2goeCwyOCsoSmYoY1soY1ttPj4yXXwwKSsyMD4+Ml18MCl8MCkrMXwwLDApfDA7aWYoIShjW3I+PjJdfDApKXtjW2s+PjJdPWNbbT4+Ml07eD1jW2s+PjJdfDA7aT15O3JldHVybiB4fDB9ZWxzZXt3PWNbcj4+Ml18MDt4PWNbbT4+Ml18MDtjW3c+PjJdPWNbeD4+Ml07Y1t3KzQ+PjJdPWNbeCs0Pj4yXTtjW3crOD4+Ml09Y1t4Kzg+PjJdO2NbdysxMj4+Ml09Y1t4KzEyPj4yXTtjW3crMTY+PjJdPWNbeCsxNj4+Ml07Y1t3KzIwPj4yXT1jW3grMjA+PjJdO2NbdysyND4+Ml09Y1t4KzI0Pj4yXTtjWyhjW3I+PjJdfDApKzIwPj4yXT0oY1tyPj4yXXwwKSsyODt3PShjW3I+PjJdfDApKzI4fDA7eD1jWyhjW20+PjJdfDApKzIwPj4yXXwwO1RSKHd8MCx4fDAsKEpmKGNbKGNbbT4+Ml18MCkrMjA+PjJdfDApfDApKzF8MCl8MDtjWyhjW3I+PjJdfDApKzEyPj4yXT1jW3Y+PjJdO2NbKGNbcj4+Ml18MCkrND4+Ml09Y1twPj4yXTt4PShjW3I+PjJdfDApKzJ8MDtiW3g+PjFdPWVbeD4+MV18MTY7Y1trPj4yXT1jW3I+PjJdO3g9Y1trPj4yXXwwO2k9eTtyZXR1cm4geHwwfXJldHVybiAwfWZ1bmN0aW9uIGNCKGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTA7ZT1pO2k9aSszMnwwO2Y9ZTtrPWUrMjB8MDtnPWUrMTZ8MDtoPWUrMTJ8MDtqPWUrOHwwO2Nbaz4+Ml09YTtjW2c+PjJdPWI7Y1toPj4yXT1kO2Nbaj4+Ml09MzEyNDY7ZD1jW2s+PjJdfDA7YT1jW2o+PjJdfDA7Yj1jW2g+PjJdfDA7Y1tmPj4yXT1jW2c+PjJdO2NbZis0Pj4yXT1iO0VoKGQsYSxmKTtpPWU7cmV0dXJufWZ1bmN0aW9uIGRCKGIsZSxmLGcpe2I9YnwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO3ZhciBoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTAsRT0wLEY9MCxHPTAsSD0wLEk9MCxKPTAsSz0wLEw9MCxNPTAsTj0wLE89MDtPPWk7aT1pKzE3NnwwO2g9TztIPU8rMTY4fDA7ST1PKzE2NHwwO0o9TysxNjB8MDtLPU8rMTU2fDA7dj1PKzE1MnwwO0w9TysxNDh8MDtNPU8rMTQ0fDA7Tj1PKzE0MHwwO2o9TysxMzZ8MDt3PU8rMTMyfDA7cz1PKzEyOHwwO0M9TysxMjR8MDtwPU8rMTIwfDA7dT1PKzExNnwwO3I9TysxMTJ8MDtuPU8rODh8MDtvPU8rODB8MDtxPU8rNzZ8MDt4PU8rMTcyfDA7eT1PKzcyfDA7dD1PKzY4fDA7Qj1PKzY0fDA7RD1PKzYwfDA7RT1PKzU2fDA7Rj1PKzUyfDA7QT1PKzQ4fDA7ej1PKzQ0fDA7bT1PKzQwfDA7az1PKzE2fDA7bD1PKzEyfDA7Y1tJPj4yXT1iO2NbSj4+Ml09ZTtjW0s+PjJdPWY7Y1t2Pj4yXT1nO2NbTD4+Ml09LTE7Y1tNPj4yXT0wO2NbTj4+Ml09ZHgoY1tJPj4yXXwwKXwwO2lmKCEoY1tOPj4yXXwwKSl7Y1tIPj4yXT0wO049Y1tIPj4yXXwwO2k9TztyZXR1cm4gTnwwfUFBKGNbST4+Ml18MCk7aWYoIShjWyhjW0o+PjJdfDApKzQ+PjJdJjMyKSljW0w+PjJdPWZ4KGNbTj4+Ml18MCwyMCl8MDtpZigoZFsoY1tJPj4yXXwwKSs0MDk+PjBdfDApPT0yKXtmPWNbY1tJPj4yXT4+Ml18MDtlPShkW2NbSj4+Ml0+PjBdfDApPT0zMz8zMTIwOTozMTIxNDtiPWNbKGNbST4+Ml18MCkrNDI0Pj4yXXwwO2NbaD4+Ml09KGNbTD4+Ml18MCk+PTA/MTg0MDI6MzExOTc7Y1toKzQ+PjJdPWU7Y1toKzg+PjJdPWI7Y1tqPj4yXT1HaChmLDMxMjIxLGgpfDA7bXgoY1tOPj4yXXwwLDE2MixjWyhjW0k+PjJdfDApKzQyMD4+Ml18MCwwLDAsY1tqPj4yXXwwLC0xKXwwfWc9Y1tKPj4yXXwwO2RvIGlmKChkW2NbSj4+Ml0+PjBdfDApPT0zMyl7Y1tzPj4yXT1jW2crMTI+PjJdO2NbQz4+Ml09MDtjW3A+PjJdPWN6KGNbcz4+Ml18MCl8MDtsPShjW0k+PjJdfDApKzQwfDA7bT1jW2w+PjJdfDA7Y1tsPj4yXT1tKzE7Y1soY1tKPj4yXXwwKSsyOD4+Ml09bTtjW3c+PjJdPWl4KGNbTj4+Ml18MCwxMDcsY1soY1tKPj4yXXwwKSsyOD4+Ml18MCwoY1t2Pj4yXXwwKSE9MD8wOmNbcD4+Ml18MCl8MDtpZihjW3Y+PjJdfDApZz0wO2Vsc2UgZz1pQShjW2NbST4+Ml0+PjJdfDAsY1twPj4yXXwwLDEpfDA7Y1tDPj4yXT1nO2c9KGNbSj4+Ml18MCkrMjB8MDthOmRvIGlmKGNbKGNbSj4+Ml18MCkrND4+Ml0mMjA0OCl7Y1t1Pj4yXT1jW2c+PjJdO2Nbcj4+Ml09Y1tjW3U+PjJdPj4yXTtpZigoY1tjW3I+PjJdPj4yXXwwKT09KGNbcD4+Ml18MCkpe3ZCKG4sMTEsY1soY1tKPj4yXXwwKSsyOD4+Ml18MCk7Y1tuKzQ+PjJdPW1CKGNbST4+Ml18MCxjW0o+PjJdfDApfDA7Y1soY1t1Pj4yXXwwKSsxMj4+Ml09MDtHPShQdihjW0k+PjJdfDAsY1t1Pj4yXXwwLG4pfDApIT0wO1RmKGNbY1tJPj4yXT4+Ml18MCxjW24rND4+Ml18MCk7aWYoRyl7akEoY1tDPj4yXXwwKTtjW0g+PjJdPTA7Tj1jW0g+PjJdfDA7aT1PO3JldHVybiBOfDB9Y1tvPj4yXT0wO3doaWxlKDEpe2lmKChjW28+PjJdfDApPj0oY1twPj4yXXwwKSlicmVhayBhO2NbcT4+Ml09cEIoY1tzPj4yXXwwLGNbbz4+Ml18MCl8MDtHPXNCKGNbST4+Ml18MCxjW3E+PjJdfDAsY1soY1soY1tyPj4yXXwwKSs0Pj4yXXwwKSsoKGNbbz4+Ml18MCkqMjB8MCk+PjJdfDApfDA7Y1soY1tDPj4yXXwwKSsyMCsoY1tvPj4yXTw8Mik+PjJdPUc7Y1tvPj4yXT0oY1tvPj4yXXwwKSsxfX19ZWxzZSBpZihjW2c+PjJdfDApe2NbdD4+Ml09Y1soY1tKPj4yXXwwKSsyMD4+Ml07dT1leShjW3M+PjJdfDApfDA7YVt4Pj4wXT11O2FbeD4+MF09KGFbeD4+MF18MCkhPTA/dTo2NTtpZihjW0M+PjJdfDApe3U9ZnkoY1tJPj4yXXwwLGNbKGNbSj4+Ml18MCkrMTI+PjJdfDApfDA7Y1soY1tDPj4yXXwwKSsyMD4+Ml09dX1jW0Q+PjJdPXZ4KGNbST4+Ml18MCl8MDtjW0U+PjJdPXZ4KGNbST4+Ml18MCl8MDtpZihjW3Y+PjJdfDApaXgoY1tOPj4yXXwwLDc5LDAsY1tFPj4yXXwwKXwwO2NbeT4+Ml09Y1tjW3Q+PjJdPj4yXTtjW0I+PjJdPWNbKGNbdD4+Ml18MCkrND4+Ml07d2hpbGUoMSl7aWYoKGNbeT4+Ml18MCk8PTApYnJlYWs7Y1tBPj4yXT1jW2NbQj4+Ml0+PjJdO2lmKChjW0w+PjJdfDApPj0wPygkQShjW0E+PjJdfDApfDApPT0wOjApe0hBKGNbTj4+Ml18MCxjW0w+PjJdfDApfDA7Y1tMPj4yXT0tMX1pZigoY1t2Pj4yXXwwKSE9MD8oRnkoY1tBPj4yXXwwLHopfDApIT0wOjApangoY1tOPj4yXXwwLDExNixjWyhjW0o+PjJdfDApKzI4Pj4yXXwwLGNbRT4+Ml18MCxjW3o+PjJdfDApfDA7ZWxzZSBHPTMwO2RvIGlmKChHfDApPT0zMCl7Rz0wO2NbRj4+Ml09U0EoY1tJPj4yXXwwLGNbQT4+Ml18MCxjW0Q+PjJdfDApfDA7Zz1jW04+PjJdfDA7ZT1jW0Y+PjJdfDA7aWYoY1t2Pj4yXXwwKXtpeChnLDE3LGUsKHd4KGNbTj4+Ml18MCl8MCkrMnwwKXwwO2p4KGNbTj4+Ml18MCwxMTUsY1soY1tKPj4yXXwwKSsyOD4+Ml18MCxjW0U+PjJdfDAsY1tGPj4yXXwwKXwwO2JyZWFrfWVsc2V7bXgoZyw5OSxlLDEsY1tFPj4yXXwwLHgsMSl8MDtXQShjW0k+PjJdfDAsY1tGPj4yXXwwLDEpO2l4KGNbTj4+Ml18MCwxMjYsY1soY1tKPj4yXXwwKSsyOD4+Ml18MCxjW0U+PjJdfDApfDA7YnJlYWt9fXdoaWxlKDApO2NbeT4+Ml09KGNbeT4+Ml18MCkrLTE7Y1tCPj4yXT0oY1tCPj4yXXwwKSsyMH14eChjW0k+PjJdfDAsY1tEPj4yXXwwKTt4eChjW0k+PjJdfDAsY1tFPj4yXXwwKX13aGlsZSgwKTtpZihjW0M+PjJdfDApTWgoY1tOPj4yXXwwLGNbdz4+Ml18MCxjW0M+PjJdfDAsLTYpfWVsc2V7Y1ttPj4yXT1jW2crMjA+PjJdO2lmKChkW2NbSj4+Ml0+PjBdfDApPT0xMTkpZz1jW2NbY1ttPj4yXT4+Ml0+PjJdfDA7ZWxzZSBnPTE7Y1tsPj4yXT1nO3ZCKGssMCwoY1soY1tJPj4yXXwwKSs0ND4+Ml18MCkrMXwwKTtHPShjW0k+PjJdfDApKzQ0fDA7Y1tHPj4yXT0oY1tHPj4yXXwwKSsoY1tsPj4yXXwwKTtpZigoZFtjW0o+PjJdPj4wXXwwKT09MTE5KXthW2s+PjBdPTEwO2NbaysxMj4+Ml09Y1trKzg+PjJdO2NbaysxNj4+Ml09Y1tsPj4yXTtqeChjW04+PjJdfDAsNzksMCxjW2srOD4+Ml18MCwoY1trKzg+PjJdfDApKyhjW2w+PjJdfDApLTF8MCl8MH1lbHNle2Fbaz4+MF09MztpeChjW04+PjJdfDAsNzYsMCxjW2srOD4+Ml18MCl8MH1pdihjW2NbST4+Ml0+PjJdfDAsY1soY1ttPj4yXXwwKSs1Nj4+Ml18MCk7Rz1qdyhjW2NbST4+Ml0+PjJdfDAsMTM0LDQyODQsMCl8MDtjWyhjW20+PjJdfDApKzU2Pj4yXT1HO2NbKGNbbT4+Ml18MCkrMTI+PjJdPTA7Rz0oY1ttPj4yXXwwKSs4fDA7Y1tHPj4yXT1jW0c+PjJdJi0xMDI1O2lmKCEoUHYoY1tJPj4yXXwwLGNbbT4+Ml18MCxrKXwwKSl7Y1tNPj4yXT1jW2srOD4+Ml07YnJlYWt9Y1tIPj4yXT0wO049Y1tIPj4yXXwwO2k9TztyZXR1cm4gTnwwfXdoaWxlKDApO2lmKGNbSz4+Ml18MCl0QihjW04+PjJdfDAsY1soY1tKPj4yXXwwKSsyOD4+Ml18MCxjW0s+PjJdfDApO2lmKChjW0w+PjJdfDApPj0wKVp6KGNbTj4+Ml18MCxjW0w+PjJdfDApO3lBKGNbST4+Ml18MCk7Y1tIPj4yXT1jW00+PjJdO049Y1tIPj4yXXwwO2k9TztyZXR1cm4gTnwwfWZ1bmN0aW9uIGVCKGIsZCxlLGYpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wLEU9MCxGPTAsRz0wLEg9MCxJPTAsSj0wLEs9MCxMPTA7TD1pO2k9aSsxMjh8MDtyPUwrMTIwfDA7cz1MKzExNnwwO3Q9TCsxMTJ8MDt1PUwrMTA4fDA7ST1MKzEwNHwwO3E9TCsxMDB8MDtHPUwrOTZ8MDtIPUwrOTJ8MDtKPUwrODh8MDt4PUwrODR8MDtLPUwrODB8MDtCPUwrNzZ8MDtFPUwrNjh8MDtBPUwrNjR8MDtnPUwrNjB8MDt6PUwrNTZ8MDt3PUwrNTJ8MDt5PUwrNDh8MDt2PUwrNDR8MDttPUwrNDB8MDtsPUwrMzZ8MDtqPUwrMzJ8MDtuPUwrMjh8MDtwPUwrMjR8MDtvPUwrMjB8MDtoPUwrMTZ8MDtrPUwrMTJ8MDtDPUwrOHwwO0Q9TCs0fDA7Rj1MO2Nbcj4+Ml09YjtjW3M+PjJdPWQ7Y1t0Pj4yXT1lO2NbdT4+Ml09ZjtjW0k+PjJdPTA7Y1t4Pj4yXT0wO2NbSz4+Ml09MDtjW3o+PjJdPTA7Y1tFPj4yXT1jWyhjW3M+PjJdfDApKzEyPj4yXTtpZihsQihjW3I+PjJdfDAsY1tzPj4yXXwwKXwwKXtpPUw7cmV0dXJufWNbSz4+Ml09bUIoY1tyPj4yXXwwLGNbcz4+Ml18MCl8MDtjW0I+PjJdPWN6KGNbKGNbcz4+Ml18MCkrMTI+PjJdfDApfDA7Y1t4Pj4yXT1zaChjW2Nbcj4+Ml0+PjJdfDAsKChjW0I+PjJdfDApKjV8MCkrMXwwLDApfDA7aWYoIShhWyhjW2Nbcj4+Ml0+PjJdfDApKzY5Pj4wXXwwKSl7Y1tKPj4yXT1jWyhjW3I+PjJdfDApKzg+PjJdO2NbcT4+Ml09bkIoY1tyPj4yXXwwLGNbcz4+Ml18MCwzLChjW3Q+PjJdfDApPT0oY1t1Pj4yXXwwKT8wOkksY1t4Pj4yXXwwKXwwO0FBKGNbcj4+Ml18MCk7Y1tIPj4yXT1nQihjW3I+PjJdfDAsY1tFPj4yXXwwLEwrNzJ8MCl8MDtjW0E+PjJdPTA7d2hpbGUoMSl7aWYoKGNbQT4+Ml18MCk+PShjW0I+PjJdfDApKWJyZWFrO2lmKChjWyhjW3g+PjJdfDApKyhjW0E+PjJdPDwyKT4+Ml18MCkhPShjW0E+PjJdfDApKWJyZWFrO2NbQT4+Ml09KGNbQT4+Ml18MCkrMX1hOmRvIGlmKChjW0E+PjJdfDApPT0oY1tCPj4yXXwwKSljW0c+PjJdPWNbSD4+Ml07ZWxzZXtjW0c+PjJdPUNBKGNbcj4+Ml18MCxjW0I+PjJdfDApfDA7Y1tBPj4yXT0wO3doaWxlKDEpe2lmKChjW0E+PjJdfDApPj0oY1tCPj4yXXwwKSlicmVhayBhO2p4KGNbSj4+Ml18MCw4NCwoY1tIPj4yXXwwKSsoY1tBPj4yXXwwKXwwLChjW0c+PjJdfDApKyhjWyhjW3g+PjJdfDApKyhjW0E+PjJdPDwyKT4+Ml18MCl8MCwwKXwwO2NbQT4+Ml09KGNbQT4+Ml18MCkrMX19d2hpbGUoMCk7YjpkbyBpZigoY1txPj4yXXwwKT09NSl7Y1ttPj4yXT1jWyhjW3M+PjJdfDApKzIwPj4yXTtjW2w+PjJdPWZ5KGNbcj4+Ml18MCxjWyhjW3M+PjJdfDApKzEyPj4yXXwwKXwwO2Nbaj4+Ml09V3ooY1tKPj4yXXwwKXwwO2Nbbz4+Ml09MDtpZigoY1t1Pj4yXXwwKSE9KGNbdD4+Ml18MCkpe2Nbbz4+Ml09dngoY1tyPj4yXXwwKXwwO2p4KGNbSj4+Ml18MCw0MyxjW0c+PjJdfDAsY1tHPj4yXXwwLGNbbz4+Ml18MCl8MH1jW2g+PjJdPTA7d2hpbGUoMSl7aWYoKGNbaD4+Ml18MCk+PShjW2NbbT4+Ml0+PjJdfDApKWJyZWFrO2Nbbj4+Ml09WkEoY1tyPj4yXXwwLGNbKGNbKGNbbT4+Ml18MCkrND4+Ml18MCkrKChjW2g+PjJdfDApKjIwfDApPj4yXXwwLHApfDA7aWYoKGNbbz4+Ml18MCkhPTA/KG9CKGNbKGNbKGNbbT4+Ml18MCkrND4+Ml18MCkrKChjW2g+PjJdfDApKjIwfDApPj4yXXwwKXwwKSE9MDowKWp4KGNbSj4+Ml18MCw0MyxjW28+PjJdfDAsY1tuPj4yXXwwLGNbbz4+Ml18MCl8MDtpZigoY1toPj4yXXwwKT49KChjW2NbbT4+Ml0+PjJdfDApLTF8MCk/KGNbdT4+Ml18MCk9PShjW3Q+PjJdfDApOjApe214KGNbSj4+Ml18MCwzNixjW0c+PjJdfDAsY1t0Pj4yXXwwLGNbbj4+Ml18MCxjW2w+PjJdfDAsLTQpfDA7SmgoY1tKPj4yXXwwLChhW2NbSz4+Ml0+PjBdfDE2KSYyNTUpfWVsc2V7bXgoY1tKPj4yXXwwLDM3LGNbRz4+Ml18MCxjW2o+PjJdfDAsY1tuPj4yXXwwLGNbbD4+Ml18MCwtNCl8MDtKaChjW0o+PjJdfDAsYVtjW0s+PjJdPj4wXXwwKX14eChjW3I+PjJdfDAsY1twPj4yXXwwKTtjW2g+PjJdPShjW2g+PjJdfDApKzF9aWYoY1tvPj4yXXwwKXtpeChjW0o+PjJdfDAsMzQsY1tvPj4yXXwwLGNbdT4+Ml18MCl8MDtZeihjW0o+PjJdfDAsY1t0Pj4yXXwwKXwwfV96KGNbSj4+Ml18MCxjW2o+PjJdfDApO3h4KGNbcj4+Ml18MCxjW28+PjJdfDApfWVsc2V7aWYoKGNbdT4+Ml18MCk9PShjW3Q+PjJdfDApKWNbZz4+Ml09Y1t0Pj4yXTtlbHNle3A9V3ooY1tKPj4yXXwwKXwwO2Nbej4+Ml09cDtjW2c+PjJdPXB9Y1tBPj4yXT0wO3doaWxlKDEpe2lmKChjW0E+PjJdfDApPj0oY1tCPj4yXXwwKSlicmVhaztjW2s+PjJdPXBCKGNbKGNbcz4+Ml18MCkrMTI+PjJdfDAsY1tBPj4yXXwwKXwwO2lmKG9CKGNbaz4+Ml18MCl8MClpeChjW0o+PjJdfDAsMzQsKGNbRz4+Ml18MCkrKGNbQT4+Ml18MCl8MCxjW2c+PjJdfDApfDA7Y1tBPj4yXT0oY1tBPj4yXXwwKSsxfWU9Y1tKPj4yXXwwO2RvIGlmKChjW3E+PjJdfDApIT0xKXtteChlLDk4LGNbRz4+Ml18MCxjW0I+PjJdfDAsMCxjW0s+PjJdfDAsY1tCPj4yXXwwKXwwO2U9Y1tKPj4yXXwwO2Y9Y1soY1tzPj4yXXwwKSsyOD4+Ml18MDtpZigoY1t0Pj4yXXwwKT09KGNbdT4+Ml18MCkpe0loKGUsMzAsZixjW3Q+PjJdfDAsY1tHPj4yXXwwLGNbQj4+Ml18MCl8MDticmVhayBifWVsc2V7Y1t3Pj4yXT1JaChlLDMxLGYsMCxjW0c+PjJdfDAsY1tCPj4yXXwwKXwwO2JyZWFrfX1lbHNle2p4KGUsMzIsY1soY1tzPj4yXXwwKSsyOD4+Ml18MCxjW3Q+PjJdfDAsY1tHPj4yXXwwKXwwO2Nbdz4+Ml09ZngoY1tKPj4yXXwwLDEzKXwwfXdoaWxlKDApO2lmKChjW0k+PjJdfDApIT0wJihjW0I+PjJdfDApPT0xKWl4KGNbSj4+Ml18MCwzNSxjW0k+PjJdfDAsY1t0Pj4yXXwwKXwwO2lmKChjW3Q+PjJdfDApPT0oY1t1Pj4yXXwwKSlZeihjW0o+PjJdfDAsY1t0Pj4yXXwwKXwwO2lmKGNbej4+Ml18MClfeihjW0o+PjJdfDAsY1t6Pj4yXXwwKTtjW3Y+PjJdPWl4KGNbSj4+Ml18MCw1NyxjWyhjW3M+PjJdfDApKzI4Pj4yXXwwLGNbdD4+Ml18MCl8MDtpZigoY1tCPj4yXXwwKT4xKWNbeT4+Ml09V3ooY1tKPj4yXXwwKXwwO2Vsc2UgY1t5Pj4yXT1jW3Q+PjJdO2NbQT4+Ml09MDt3aGlsZSgxKXtpZigoY1tBPj4yXXwwKT49KGNbQj4+Ml18MCkpYnJlYWs7Y1tGPj4yXT12eChjW3I+PjJdfDApfDA7Y1tDPj4yXT1wQihjW0U+PjJdfDAsY1tBPj4yXXwwKXwwO2NbRD4+Ml09ZnkoY1tyPj4yXXwwLGNbQz4+Ml18MCl8MDtqeChjW0o+PjJdfDAsOTYsY1soY1tzPj4yXXwwKSsyOD4+Ml18MCxjW0E+PjJdfDAsY1tGPj4yXXwwKXwwO214KGNbSj4+Ml18MCwzNiwoY1tHPj4yXXwwKSsoY1tBPj4yXXwwKXwwLGNbeT4+Ml18MCxjW0Y+PjJdfDAsY1tEPj4yXXwwLC00KXwwO3h4KGNbcj4+Ml18MCxjW0Y+PjJdfDApO2NbQT4+Ml09KGNbQT4+Ml18MCkrMX1peChjW0o+PjJdfDAsMTMsMCxjW3U+PjJdfDApfDA7aWYoKGNbQj4+Ml18MCk+MSl7X3ooY1tKPj4yXXwwLGNbeT4+Ml18MCk7aXgoY1tKPj4yXXwwLDcsY1soY1tzPj4yXXwwKSsyOD4+Ml18MCwoY1t2Pj4yXXwwKSsxfDApfDA7aXgoY1tKPj4yXXwwLDEzLDAsY1t0Pj4yXXwwKXwwfVp6KGNbSj4+Ml18MCxjW3c+PjJdfDApfXdoaWxlKDApO2lmKChjW0c+PjJdfDApIT0oY1tIPj4yXXwwKSl4eChjW3I+PjJdfDAsY1tHPj4yXXwwKTt5QShjW3I+PjJdfDApfVRmKGNbY1tyPj4yXT4+Ml18MCxjW3g+PjJdfDApO1RmKGNbY1tyPj4yXT4+Ml18MCxjW0s+PjJdfDApO2k9TDtyZXR1cm59ZnVuY3Rpb24gZkIoYixkLGUsZixnKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDt2YXIgaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MDtzPWk7aT1pKzIyNHwwO2g9cysyMTZ8MDtqPXMrMjEyfDA7az1zKzIwOHwwO2w9cysyMDR8MDttPXMrMjAwfDA7cD1zKzE1MnwwO249cysxMDR8MDtvPXMrNTZ8MDtxPXMrOHwwO3I9cztjW2g+PjJdPWI7Y1tqPj4yXT1kO2Nbaz4+Ml09ZTtjW2w+PjJdPWY7Y1ttPj4yXT1nO2Nbcj4+Ml09MDtlPW47ZD1lKzQ4fDA7ZG97Y1tlPj4yXT0wO2U9ZSs0fDB9d2hpbGUoKGV8MCk8KGR8MCkpO2U9bztkPWUrNDh8MDtkb3tjW2U+PjJdPTA7ZT1lKzR8MH13aGlsZSgoZXwwKTwoZHwwKSk7ZT1wO2Q9ZSs0OHwwO2Rve2NbZT4+Ml09MDtlPWUrNHwwfXdoaWxlKChlfDApPChkfDApKTtlPXE7Zz1jWyhjW2o+PjJdfDApKzEyPj4yXXwwO2Q9ZSs0OHwwO2Rve2NbZT4+Ml09Y1tnPj4yXTtlPWUrNHwwO2c9Zys0fDB9d2hpbGUoKGV8MCk8KGR8MCkpO2FbcD4+MF09Mjg7Y1twKzEyPj4yXT1uO2NbcCsxNj4+Ml09bzthW24+PjBdPTQxO2NbbisxMj4+Ml09cTtjW24rMTY+PjJdPWNbY1soY1soY1tqPj4yXXwwKSsyMD4+Ml18MCkrND4+Ml0+PjJdO2Fbbz4+MF09Mzk7Y1tvKzEyPj4yXT1xO2NbbysxNj4+Ml09Y1soY1soY1soY1tqPj4yXXwwKSsyMD4+Ml18MCkrND4+Ml18MCkrMjA+PjJdO2hCKHEsZ0IoY1toPj4yXXwwLHEscil8MCk7aWYoY1tsPj4yXXwwKXtfYltjW2w+PjJdJjI1NV0oY1toPj4yXXwwLHAsY1trPj4yXXwwLGNbbT4+Ml18MCk7cT1jW2g+PjJdfDA7cj1jW3I+PjJdfDA7eHgocSxyKTtpPXM7cmV0dXJufWVsc2V7cT1xKzR8MDtjW3E+PjJdPWNbcT4+Ml18MTtTQShjW2g+PjJdfDAscCxjW2s+PjJdfDApfDA7cT1jW2g+PjJdfDA7cj1jW3I+PjJdfDA7eHgocSxyKTtpPXM7cmV0dXJufX1mdW5jdGlvbiBnQihhLGIsZSl7YT1hfDA7Yj1ifDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MDttPWk7aT1pKzMyfDA7Zz1tKzIwfDA7aD1tKzE2fDA7Zj1tKzEyfDA7az1tKzh8MDtsPW0rNHwwO2o9bTtjW2c+PjJdPWE7Y1toPj4yXT1iO2NbZj4+Ml09ZTtjW2w+PjJdPWN6KGNbaD4+Ml18MCl8MDtpZigoY1tsPj4yXXwwKT09MSl7Y1trPj4yXT1aQShjW2c+PjJdfDAsY1toPj4yXXwwLGNbZj4+Ml18MCl8MDtsPWNbaz4+Ml18MDtpPW07cmV0dXJuIGx8MH1jW2NbZj4+Ml0+PjJdPTA7Zj1jW2c+PjJdfDA7aWYoKGRbY1toPj4yXT4+MF18MHwwKT09MTE5KXtjW2s+PjJdPWRCKGYsY1toPj4yXXwwLDAsMCl8MDtsPWNbaz4+Ml18MDtpPW07cmV0dXJuIGx8MH1jW2s+PjJdPShjW2YrNDQ+PjJdfDApKzE7ZT0oY1tnPj4yXXwwKSs0NHwwO2NbZT4+Ml09KGNbZT4+Ml18MCkrKGNbbD4+Ml18MCk7Y1tqPj4yXT0wO3doaWxlKDEpe2lmKChjW2o+PjJdfDApPj0oY1tsPj4yXXwwKSlicmVhaztSQShjW2c+PjJdfDAsY1soY1soY1soY1toPj4yXXwwKSsyMD4+Ml18MCkrND4+Ml18MCkrKChjW2o+PjJdfDApKjIwfDApPj4yXXwwLChjW2o+PjJdfDApKyhjW2s+PjJdfDApfDApO2Nbaj4+Ml09KGNbaj4+Ml18MCkrMX1sPWNbaz4+Ml18MDtpPW07cmV0dXJuIGx8MH1mdW5jdGlvbiBoQihiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MDtlPWk7aT1pKzE2fDA7Zj1lKzR8MDtnPWU7Y1tmPj4yXT1iO2NbZz4+Ml09ZDthWyhjW2Y+PjJdfDApKzM4Pj4wXT1hW2NbZj4+Ml0+PjBdfDA7YVtjW2Y+PjJdPj4wXT0tOTk7Y1soY1tmPj4yXXwwKSsyOD4+Ml09Y1tnPj4yXTtiPShjW2Y+PjJdfDApKzR8MDtjW2I+PjJdPWNbYj4+Ml0mLTQwOTc7aT1lO3JldHVybn1mdW5jdGlvbiBpQihhLGIsZSxmKXthPWF8MDtiPWJ8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MDt1PWk7aT1pKzQ4fDA7Zz11KzQ0fDA7aD11KzQwfDA7aj11KzM2fDA7az11KzMyfDA7cz11KzI4fDA7bj11KzI0fDA7cT11KzIwfDA7cj11KzE2fDA7bz11KzEyfDA7cD11Kzh8MDtsPXUrNHwwO209dTtjW2c+PjJdPWE7Y1toPj4yXT1iO2Nbaj4+Ml09ZTtjW2s+PjJdPWY7Y1tzPj4yXT1jWyhjW2c+PjJdfDApKzg+PjJdO2Nbbj4+Ml09MDtjW3E+PjJdPTA7Y1tyPj4yXT0wO2lmKChjW3M+PjJdfDApPT0wfChjW2g+PjJdfDApPT0wKXtpPXU7cmV0dXJufWNbbj4+Ml09KChkW2NbaD4+Ml0+PjBdfDApKzBeMSktMDthOmRvIHN3aXRjaChkW2NbaD4+Ml0+PjBdfDB8MCl7Y2FzZSAyODp7aUIoY1tnPj4yXXwwLGNbKGNbaD4+Ml18MCkrMTI+PjJdfDAsY1tqPj4yXXwwLGNbaz4+Ml18MCk7QUEoY1tnPj4yXXwwKTtpQihjW2c+PjJdfDAsY1soY1toPj4yXXwwKSsxNj4+Ml18MCxjW2o+PjJdfDAsY1trPj4yXXwwKTt5QShjW2c+PjJdfDApO2JyZWFrfWNhc2UgMjc6e2NbbD4+Ml09V3ooY1tzPj4yXXwwKXwwO2pCKGNbZz4+Ml18MCxjWyhjW2g+PjJdfDApKzEyPj4yXXwwLGNbbD4+Ml18MCxjW2s+PjJdXjE2KTtBQShjW2c+PjJdfDApO2lCKGNbZz4+Ml18MCxjWyhjW2g+PjJdfDApKzE2Pj4yXXwwLGNbaj4+Ml18MCxjW2s+PjJdfDApO196KGNbcz4+Ml18MCxjW2w+PjJdfDApO3lBKGNbZz4+Ml18MCk7YnJlYWt9Y2FzZSAxOTp7akIoY1tnPj4yXXwwLGNbKGNbaD4+Ml18MCkrMTI+PjJdfDAsY1tqPj4yXXwwLGNbaz4+Ml18MCk7YnJlYWt9Y2FzZSAxNDg6Y2FzZSAyOTp7Y1tuPj4yXT0oZFtjW2g+PjJdPj4wXXwwfDApPT0yOT8zNjozNztjW2s+PjJdPTEyODt0PTc7YnJlYWt9Y2FzZSAzNzpjYXNlIDM2OmNhc2UgNDE6Y2FzZSAzODpjYXNlIDM5OmNhc2UgNDA6e3Q9NzticmVha31jYXNlIDM1OmNhc2UgMzQ6e2Nbbz4+Ml09WkEoY1tnPj4yXXwwLGNbKGNbaD4+Ml18MCkrMTI+PjJdfDAscSl8MDtpeChjW3M+PjJdfDAsY1tuPj4yXXwwLGNbbz4+Ml18MCxjW2o+PjJdfDApfDA7YnJlYWt9Y2FzZSAzMjp7ZkIoY1tnPj4yXXwwLGNbaD4+Ml18MCxjW2o+PjJdfDAsMTMzLGNbaz4+Ml18MCk7YnJlYWt9Y2FzZSAzMzppZihjW2s+PjJdfDApe2VCKGNbZz4+Ml18MCxjW2g+PjJdfDAsY1tqPj4yXXwwLGNbaj4+Ml18MCk7YnJlYWsgYX1lbHNle2NbbT4+Ml09V3ooY1tzPj4yXXwwKXwwO2VCKGNbZz4+Ml18MCxjW2g+PjJdfDAsY1tqPj4yXXwwLGNbbT4+Ml18MCk7X3ooY1tzPj4yXXwwLGNbbT4+Ml18MCk7YnJlYWsgYX1kZWZhdWx0OnQ9MTR9d2hpbGUoMCk7aWYoKHR8MCk9PTcpaWYoWEEoY1soY1toPj4yXXwwKSsxMj4+Ml18MCl8MCl0PTE0O2Vsc2V7Y1tvPj4yXT1aQShjW2c+PjJdfDAsY1soY1toPj4yXXwwKSsxMj4+Ml18MCxxKXwwO2NbcD4+Ml09WkEoY1tnPj4yXXwwLGNbKGNbaD4+Ml18MCkrMTY+PjJdfDAscil8MDtfQShjW2c+PjJdfDAsY1soY1toPj4yXXwwKSsxMj4+Ml18MCxjWyhjW2g+PjJdfDApKzE2Pj4yXXwwLGNbbj4+Ml18MCxjW28+PjJdfDAsY1twPj4yXXwwLGNbaj4+Ml18MCxjW2s+PjJdfDApfDB9ZG8gaWYoKHR8MCk9PTE0KXtpZih4eihjW2g+PjJdfDApfDApe1l6KGNbcz4+Ml18MCxjW2o+PjJdfDApfDA7YnJlYWt9aWYoIShrQihjW2g+PjJdfDApfDApKXtjW28+PjJdPVpBKGNbZz4+Ml18MCxjW2g+PjJdfDAscSl8MDtqeChjW3M+PjJdfDAsMjIsY1tvPj4yXXwwLGNbaj4+Ml18MCwoY1trPj4yXXwwKSE9MCYxKXwwfX13aGlsZSgwKTt4eChjW2c+PjJdfDAsY1txPj4yXXwwKTt4eChjW2c+PjJdfDAsY1tyPj4yXXwwKTtpPXU7cmV0dXJufWZ1bmN0aW9uIGpCKGEsYixlLGYpe2E9YXwwO2I9YnwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MDt2PWk7aT1pKzY0fDA7Zz12KzQ4fDA7aD12KzQ0fDA7aj12KzQwfDA7az12KzM2fDA7dD12KzMyfDA7bz12KzI4fDA7cj12KzI0fDA7cz12KzIwfDA7cD12KzE2fDA7cT12KzEyfDA7bD12Kzh8MDttPXYrNHwwO249djtjW2c+PjJdPWE7Y1toPj4yXT1iO2Nbaj4+Ml09ZTtjW2s+PjJdPWY7Y1t0Pj4yXT1jWyhjW2c+PjJdfDApKzg+PjJdO2Nbbz4+Ml09MDtjW3I+PjJdPTA7Y1tzPj4yXT0wO2lmKChjW3Q+PjJdfDApPT0wfChjW2g+PjJdfDApPT0wKXtpPXY7cmV0dXJufWNbbz4+Ml09ZFtjW2g+PjJdPj4wXTtzd2l0Y2goY1tvPj4yXXwwKXtjYXNlIDI4OntjW2w+PjJdPVd6KGNbdD4+Ml18MCl8MDtpQihjW2c+PjJdfDAsY1soY1toPj4yXXwwKSsxMj4+Ml18MCxjW2w+PjJdfDAsY1trPj4yXV4xNik7QUEoY1tnPj4yXXwwKTtqQihjW2c+PjJdfDAsY1soY1toPj4yXXwwKSsxNj4+Ml18MCxjW2o+PjJdfDAsY1trPj4yXXwwKTtfeihjW3Q+PjJdfDAsY1tsPj4yXXwwKTt5QShjW2c+PjJdfDApO2JyZWFrfWNhc2UgMjc6e2pCKGNbZz4+Ml18MCxjWyhjW2g+PjJdfDApKzEyPj4yXXwwLGNbaj4+Ml18MCxjW2s+PjJdfDApO0FBKGNbZz4+Ml18MCk7akIoY1tnPj4yXXwwLGNbKGNbaD4+Ml18MCkrMTY+PjJdfDAsY1tqPj4yXXwwLGNbaz4+Ml18MCk7eUEoY1tnPj4yXXwwKTticmVha31jYXNlIDE5OntpQihjW2c+PjJdfDAsY1soY1toPj4yXXwwKSsxMj4+Ml18MCxjW2o+PjJdfDAsY1trPj4yXXwwKTticmVha31jYXNlIDE0ODpjYXNlIDI5OntjW28+PjJdPShjW28+PjJdfDApPT0yOT8zNzozNjtjW2s+PjJdPTEyODt1PTc7YnJlYWt9Y2FzZSAzNzpjYXNlIDM2OmNhc2UgNDE6Y2FzZSAzODpjYXNlIDM5OmNhc2UgNDA6e3U9NzticmVha31jYXNlIDM1OmNhc2UgMzQ6e2NbcD4+Ml09WkEoY1tnPj4yXXwwLGNbKGNbaD4+Ml18MCkrMTI+PjJdfDAscil8MDtpeChjW3Q+PjJdfDAsY1tvPj4yXXwwLGNbcD4+Ml18MCxjW2o+PjJdfDApfDA7YnJlYWt9Y2FzZSAzMjp7ZkIoY1tnPj4yXXwwLGNbaD4+Ml18MCxjW2o+PjJdfDAsMTM0LGNbaz4+Ml18MCk7YnJlYWt9Y2FzZSAzMzp7Y1ttPj4yXT1XeihjW3Q+PjJdfDApfDA7Y1tuPj4yXT0oY1trPj4yXXwwKSE9MD9jW2o+PjJdfDA6Y1ttPj4yXXwwO2VCKGNbZz4+Ml18MCxjW2g+PjJdfDAsY1ttPj4yXXwwLGNbbj4+Ml18MCk7WXooY1t0Pj4yXXwwLGNbaj4+Ml18MCl8MDtfeihjW3Q+PjJdfDAsY1ttPj4yXXwwKTticmVha31kZWZhdWx0OnU9MTJ9aWYoKHV8MCk9PTcpaWYoWEEoY1soY1toPj4yXXwwKSsxMj4+Ml18MCl8MCl1PTEyO2Vsc2V7Y1twPj4yXT1aQShjW2c+PjJdfDAsY1soY1toPj4yXXwwKSsxMj4+Ml18MCxyKXwwO2NbcT4+Ml09WkEoY1tnPj4yXXwwLGNbKGNbaD4+Ml18MCkrMTY+PjJdfDAscyl8MDtfQShjW2c+PjJdfDAsY1soY1toPj4yXXwwKSsxMj4+Ml18MCxjWyhjW2g+PjJdfDApKzE2Pj4yXXwwLGNbbz4+Ml18MCxjW3A+PjJdfDAsY1txPj4yXXwwLGNbaj4+Ml18MCxjW2s+PjJdfDApfDB9ZG8gaWYoKHV8MCk9PTEyKXtpZihrQihjW2g+PjJdfDApfDApe1l6KGNbdD4+Ml18MCxjW2o+PjJdfDApfDA7YnJlYWt9aWYoISh4eihjW2g+PjJdfDApfDApKXtjW3A+PjJdPVpBKGNbZz4+Ml18MCxjW2g+PjJdfDAscil8MDtqeChjW3Q+PjJdfDAsMjEsY1twPj4yXXwwLGNbaj4+Ml18MCwoY1trPj4yXXwwKSE9MCYxKXwwfX13aGlsZSgwKTt4eChjW2c+PjJdfDAsY1tyPj4yXXwwKTt4eChjW2c+PjJdfDAsY1tzPj4yXXwwKTtpPXY7cmV0dXJufWZ1bmN0aW9uIGtCKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTA7Zj1pO2k9aSsxNnwwO2I9Zis4fDA7ZD1mKzR8MDtlPWY7Y1tkPj4yXT1hO2NbZT4+Ml09MDtkbyBpZighKGNbKGNbZD4+Ml18MCkrND4+Ml0mMSkpaWYoRnkoY1tkPj4yXXwwLGUpfDApe2NbYj4+Ml09KGNbZT4+Ml18MCkhPTAmMTticmVha31lbHNle2NbYj4+Ml09MDticmVha31lbHNlIGNbYj4+Ml09MDt3aGlsZSgwKTtpPWY7cmV0dXJuIGNbYj4+Ml18MH1mdW5jdGlvbiBsQihhLGIpe2E9YXwwO2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MDtqPWk7aT1pKzMyfDA7aD1qO2U9aisxNnwwO2Q9aisxMnwwO2Y9ais4fDA7Zz1qKzR8MDtjW2Q+PjJdPWE7Y1tmPj4yXT1iO2NbZz4+Ml09Y3ooY1soY1tmPj4yXXwwKSsxMj4+Ml18MCl8MDtiPWNbZz4+Ml18MDtpZihjWyhjW2Y+PjJdfDApKzQ+PjJdJjIwNDgpe2lmKChifDApIT0oY1tjW2NbKGNbZj4+Ml18MCkrMjA+PjJdPj4yXT4+Ml18MCkpe2NCKGNbZD4+Ml18MCxjW2NbY1soY1tmPj4yXXwwKSsyMD4+Ml0+PjJdPj4yXXwwLGNbZz4+Ml18MCk7Y1tlPj4yXT0xO2g9Y1tlPj4yXXwwO2k9ajtyZXR1cm4gaHwwfX1lbHNlIGlmKChifDApIT0xKXtiPWNbZD4+Ml18MDtpZihjWyhjWyhjW2Y+PjJdfDApKzEyPj4yXXwwKSs0Pj4yXSYyMDQ4KWNCKGIsY1tnPj4yXXwwLDEpO2Vsc2UgRWgoYiwyOTgzOCxoKTtjW2U+PjJdPTE7aD1jW2U+PjJdfDA7aT1qO3JldHVybiBofDB9Y1tlPj4yXT0wO2g9Y1tlPj4yXXwwO2k9ajtyZXR1cm4gaHwwfWZ1bmN0aW9uIG1CKGIsZCl7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MDtvPWk7aT1pKzQ4fDA7Zj1vKzI4fDA7ZT1vKzI0fDA7bD1vKzIwfDA7aj1vKzE2fDA7bT1vKzEyfDA7bj1vKzh8MDtoPW8rNHwwO2s9bztnPW8rMzJ8MDtjW2Y+PjJdPWI7Y1tlPj4yXT1kO2NbbD4+Ml09Y1soY1tlPj4yXXwwKSsxMj4+Ml07Y1tqPj4yXT1jeihjW2w+PjJdfDApfDA7aWYoY1soY1tlPj4yXXwwKSs0Pj4yXSYyMDQ4KWU9Y1soY1tlPj4yXXwwKSsyMD4+Ml18MDtlbHNlIGU9MDtjW20+PjJdPWU7Yj0oY1tqPj4yXXwwKSsxfDA7Y1tuPj4yXT1zaChjW2NbZj4+Ml0+PjJdfDAsYiwoKGJ8MCk8MCk8PDMxPj4zMSl8MDtpZighKGNbbj4+Ml18MCkpe249Y1tuPj4yXXwwO2k9bztyZXR1cm4gbnwwfWNbaD4+Ml09MDt3aGlsZSgxKXtpZigoY1toPj4yXXwwKT49KGNbaj4+Ml18MCkpYnJlYWs7Y1trPj4yXT1wQihjW2w+PjJdfDAsY1toPj4yXXwwKXwwO2FbZz4+MF09ZXkoY1trPj4yXXwwKXwwO2lmKGNbbT4+Ml18MCl7Zj1yQihjWyhjWyhjW2NbbT4+Ml0+PjJdfDApKzQ+PjJdfDApKygoY1toPj4yXXwwKSoyMHwwKT4+Ml18MCxhW2c+PjBdfDApfDA7YVsoY1tuPj4yXXwwKSsoY1toPj4yXXwwKT4+MF09Zn1lbHNlIGFbKGNbbj4+Ml18MCkrKGNbaD4+Ml18MCk+PjBdPWFbZz4+MF18MDtjW2g+PjJdPShjW2g+PjJdfDApKzF9YVsoY1tuPj4yXXwwKSsoY1tqPj4yXXwwKT4+MF09MDtuPWNbbj4+Ml18MDtpPW87cmV0dXJuIG58MH1mdW5jdGlvbiBuQihmLGcsaCxqLGspe2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO2s9a3wwO3ZhciBsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEQ9MCxFPTAsRj0wLEc9MCxIPTAsST0wLEo9MCxLPTAsTD0wLE09MCxOPTAsTz0wLFA9MCxRPTAsUj0wLFM9MCxUPTAsVT0wLFY9MCxXPTAsWD0wO1g9aTtpPWkrMTYwfDA7Vz1YKzE2fDA7bD1YKzE0MHwwO209WCsxMzZ8MDtuPVgrMTMyfDA7bz1YKzEyOHwwO3A9WCsxMjR8MDtLPVgrMTIwfDA7dT1YKzExNnwwO0Q9WCsxMTJ8MDtIPVgrMTA4fDA7Vj1YKzEwNHwwO3Y9WCsxMDB8MDtMPVgrOTZ8MDt0PVgrOTJ8MDtTPVgrODh8MDtCPVgrMTQ0fDA7TT1YKzg0fDA7Sj1YKzgwfDA7eT1YKzc2fDA7Tj1YKzcyfDA7cT1YKzY4fDA7dz1YKzY0fDA7Tz1YKzYwfDA7QT1YKzU2fDA7RT1YKzE0N3wwO3I9WCsxNDZ8MDtzPVgrOHwwO0c9WDtQPVgrNTJ8MDtSPVgrNDh8MDtRPVgrNDR8MDtGPVgrNDB8MDt6PVgrMzZ8MDtVPVgrMzJ8MDtUPVgrMjh8MDt4PVgrMjR8MDtJPVgrMjB8MDtjW2w+PjJdPWY7Y1ttPj4yXT1nO2Nbbj4+Ml09aDtjW28+PjJdPWo7Y1twPj4yXT1rO2NbdT4+Ml09MDtnPShjW2w+PjJdfDApKzQwfDA7aj1jW2c+PjJdfDA7Y1tnPj4yXT1qKzE7Y1tEPj4yXT1qO2NbVj4+Ml09ZHgoY1tsPj4yXXwwKXwwO2NbSD4+Ml09KGNbbj4+Ml0mNHwwKSE9MCYxO2lmKChjW28+PjJdfDApIT0wPyhjWyhjW20+PjJdfDApKzQ+PjJdJjIwNDh8MCkhPTA6MCl7Y1tMPj4yXT1jW2NbKGNbbT4+Ml18MCkrMjA+PjJdPj4yXTtjW3Y+PjJdPTA7d2hpbGUoMSl7aWYoKGNbdj4+Ml18MCk+PShjW2NbTD4+Ml0+PjJdfDApKWJyZWFrO2lmKG9CKGNbKGNbKGNbTD4+Ml18MCkrND4+Ml18MCkrKChjW3Y+PjJdfDApKjIwfDApPj4yXXwwKXwwKWJyZWFrO2Nbdj4+Ml09KGNbdj4+Ml18MCkrMX1pZigoY1t2Pj4yXXwwKT09KGNbY1tMPj4yXT4+Ml18MCkpY1tvPj4yXT0wfWE6ZG8gaWYoKGNbKGNbbD4+Ml18MCkrMzY+PjJdfDApPT0wPyhqPXFCKGNbbT4+Ml18MCl8MCxjW0s+PjJdPWosKGp8MCkhPTApOjApe2NbdD4+Ml09Y1tjW2w+PjJdPj4yXTtjW00+PjJdPWNbY1tLPj4yXT4+Ml07Y1tKPj4yXT1jW2NbTT4+Ml0+PjJdO2NbUz4+Ml09Y1soY1soY1tLPj4yXXwwKSsyOD4+Ml18MCkrOCsxNj4+Ml07YltCPj4xXT1GaChjW3Q+PjJdfDAsY1soY1tTPj4yXXwwKSs2ND4+Ml18MCl8MDtzeChjW2w+PjJdfDAsYltCPj4xXXwwKTtUeihjW2w+PjJdfDAsYltCPj4xXXwwLGNbKGNbUz4+Ml18MCkrMjg+PjJdfDAsMCxjW2NbUz4+Ml0+PjJdfDApO2lmKChjW0o+PjJdfDApPT0xPyhiWyhjW2NbKGNbTT4+Ml18MCkrND4+Ml0+PjJdfDApKzMyPj4xXXwwKTwwOjApe2NbeT4+Ml09ZngoY1tWPj4yXXwwLDIwKXwwO1V6KGNbbD4+Ml18MCxjW0Q+PjJdfDAsYltCPj4xXXwwLGNbUz4+Ml18MCwxMDQpO2NbdT4+Ml09MTtaeihjW1Y+PjJdfDAsY1t5Pj4yXXwwKTticmVha31jW3E+PjJdPTE7Y1t3Pj4yXT0wO3doaWxlKDEpe2lmKCEoKGNbdz4+Ml18MCk8KGNbSj4+Ml18MCk/KGNbcT4+Ml18MCkhPTA6MCkpYnJlYWs7Y1tPPj4yXT1wQihjWyhjW20+PjJdfDApKzEyPj4yXXwwLGNbdz4+Ml18MCl8MDtjW0E+PjJdPWJbKGNbKGNbKGNbTT4+Ml18MCkrND4+Ml18MCkrKChjW3c+PjJdfDApKjIwfDApPj4yXXwwKSszMj4+MV07YVtFPj4wXT1seShjW1M+PjJdfDAsY1tBPj4yXXwwKXwwO2Fbcj4+MF09ckIoY1tPPj4yXXwwLGFbRT4+MF18MCl8MDtpZigoKGFbcj4+MF18MCkrLTY1fDApPj4+MD49MiljW3E+PjJdPShhW0U+PjBdfDApPj02NyYxO2Nbdz4+Ml09KGNbdz4+Ml18MCkrMX1pZihjW3E+PjJdfDApe2NbTj4+Ml09Y1soY1tTPj4yXXwwKSs4Pj4yXTt3aGlsZSgxKXtpZighKChjW04+PjJdfDApIT0wPyhjW3U+PjJdfDApPT0wOjApKWJyZWFrIGE7ZG8gaWYoKGVbKGNbTj4+Ml18MCkrNTI+PjFdfDApPj0oY1tKPj4yXXwwKT8oZVsoY1tOPj4yXXwwKSs1Mj4+MV18MCk8NjM6MCl7aWYoY1tIPj4yXXwwKXtpZigoZVsoY1tOPj4yXXwwKSs1MD4+MV18MCk+KGNbSj4+Ml18MCkpYnJlYWs7aWYoKGVbKGNbTj4+Ml18MCkrNTI+PjFdfDApPihjW0o+PjJdfDApPyhkWyhjW04+PjJdfDApKzU0Pj4wXXwwKT09MDowKWJyZWFrfWo9cztjW2o+PjJdPTA7Y1tqKzQ+PjJdPTA7Y1t3Pj4yXT0wO3doaWxlKDEpe2lmKChjW3c+PjJdfDApPj0oY1tKPj4yXXwwKSlicmVhaztjW1A+PjJdPXBCKGNbKGNbbT4+Ml18MCkrMTI+PjJdfDAsY1t3Pj4yXXwwKXwwO2NbUj4+Ml09Y1soY1soY1tNPj4yXXwwKSs0Pj4yXXwwKSsoKGNbdz4+Ml18MCkqMjB8MCk+PjJdO2NbUT4+Ml09c0IoY1tsPj4yXXwwLGNbUD4+Ml18MCxjW1I+PjJdfDApfDA7Y1tGPj4yXT0wO3doaWxlKDEpe2lmKChjW0Y+PjJdfDApPj0oY1tKPj4yXXwwKSlicmVhaztpZigoYlsoY1soY1tOPj4yXXwwKSs0Pj4yXXwwKSsoY1tGPj4yXTw8MSk+PjFdfDApPT0oYlsoY1tSPj4yXXwwKSszMj4+MV18MCkpe2lmKCEoY1tRPj4yXXwwKSlicmVhaztpZighKGlnKGNbY1tRPj4yXT4+Ml18MCxjWyhjWyhjW04+PjJdfDApKzMyPj4yXXwwKSsoY1tGPj4yXTw8Mik+PjJdfDApfDApKWJyZWFrfWNbRj4+Ml09KGNbRj4+Ml18MCkrMX1pZigoY1tGPj4yXXwwKT09KGNbSj4+Ml18MCkpYnJlYWs7aj1XUigxLDAsY1tGPj4yXXwwKXwwO2c9RztjW2c+PjJdPWo7Y1tnKzQ+PjJdPUM7Zz1HO2o9cztpZigoY1tnPj4yXSZjW2o+PjJdfDApIT0wPzE6KGNbZys0Pj4yXSZjW2orND4+Ml18MCkhPTApYnJlYWs7Uz1HO2Y9cztnPWNbZis0Pj4yXXxjW1MrND4+Ml07aj1zO2Nbaj4+Ml09Y1tmPj4yXXxjW1M+PjJdO2Nbais0Pj4yXT1nO2lmKGNbcD4+Ml18MCljWyhjW3A+PjJdfDApKyhjW3c+PjJdPDwyKT4+Ml09Y1tGPj4yXTtjW3c+PjJdPShjW3c+PjJdfDApKzF9aj1zO1M9Y1tqPj4yXXwwO2o9Y1tqKzQ+PjJdfDA7Zz1XUigxLDAsY1tKPj4yXXwwKXwwO2c9UVIoZ3wwLEN8MCwxLDApfDA7aWYoKFN8MCk9PShnfDApJihqfDApPT0oQ3wwKSl7Y1t6Pj4yXT1meChjW1Y+PjJdfDAsMjApfDA7Zz1jW1Y+PjJdfDA7aj1jW3Q+PjJdfDA7Y1tXPj4yXT1jW2NbTj4+Ml0+PjJdO214KGcsMTYyLDAsMCwwLEdoKGosMzExNjYsVyl8MCwtMSl8MDtqeChjW1Y+PjJdfDAsMTA0LGNbRD4+Ml18MCxjWyhjW04+PjJdfDApKzQ0Pj4yXXwwLGJbQj4+MV18MCl8MDtWeihjW2w+PjJdfDAsY1tOPj4yXXwwKTtjW3U+PjJdPTMrKGRbY1soY1tOPj4yXXwwKSsyOD4+Ml0+PjBdfDApO2lmKChjW28+PjJdfDApIT0wPyhnPShjW2w+PjJdfDApKzQ0fDAsaj0oY1tnPj4yXXwwKSsxfDAsY1tnPj4yXT1qLGNbY1tvPj4yXT4+Ml09aiwoY1tKPj4yXXwwKT09MSk6MCl0QihjW1Y+PjJdfDAsY1tEPj4yXXwwLGNbY1tvPj4yXT4+Ml18MCk7WnooY1tWPj4yXXwwLGNbej4+Ml18MCl9fXdoaWxlKDApO2NbTj4+Ml09Y1soY1tOPj4yXXwwKSsyMD4+Ml19fX13aGlsZSgwKTtkbyBpZigoKGNbdT4+Ml18MCk9PTA/KGNbbj4+Ml0mMXwwKSE9MDowKT8oY1soY1ttPj4yXXwwKSs0Pj4yXSYyMDQ4fDApPT0wOjApe2lmKCh1QihjW20+PjJdfDApfDApIT0wPyhjW2NbKGNbbT4+Ml18MCkrMjA+PjJdPj4yXXwwKT4yOjApYnJlYWs7Y1t1Pj4yXT01fXdoaWxlKDApO2lmKCEoY1t1Pj4yXXwwKSl7Y1tVPj4yXT1jWyhjW2w+PjJdfDApKzEzNj4+Ml07Y1tUPj4yXT0wO2NbdT4+Ml09MjtpZihjW24+PjJdJjQpe2NbKGNbbD4+Ml18MCkrMTM2Pj4yXT0wO2lmKChiWyhjWyhjW20+PjJdfDApKzEyPj4yXXwwKSszMj4+MV18MCk8MD8oY1soY1ttPj4yXXwwKSs0Pj4yXSYyMDQ4fDApPT0wOjApY1t1Pj4yXT0xfWVsc2UgaWYoY1tvPj4yXXwwKXtWPShjW2w+PjJdfDApKzQ0fDA7Vz0oY1tWPj4yXXwwKSsxfDA7Y1tWPj4yXT1XO2NbVD4+Ml09VztjW2Nbbz4+Ml0+PjJdPVd9ZEIoY1tsPj4yXXwwLGNbbT4+Ml18MCxjW1Q+PjJdfDAsKGNbdT4+Ml18MCk9PTEmMSl8MDtjWyhjW2w+PjJdfDApKzEzNj4+Ml09Y1tVPj4yXX1lbHNlIGNbKGNbbT4+Ml18MCkrMjg+PjJdPWNbRD4+Ml07aWYoISgoY1twPj4yXXwwKSE9MCYoY1t1Pj4yXXwwKSE9MyYoY1t1Pj4yXXwwKSE9NCkpe1c9Y1t1Pj4yXXwwO2k9WDtyZXR1cm4gV3wwfWNbST4+Ml09Y3ooY1soY1ttPj4yXXwwKSsxMj4+Ml18MCl8MDtjW3g+PjJdPTA7d2hpbGUoMSl7aWYoKGNbeD4+Ml18MCk+PShjW0k+PjJdfDApKWJyZWFrO2NbKGNbcD4+Ml18MCkrKGNbeD4+Ml08PDIpPj4yXT1jW3g+PjJdO2NbeD4+Ml09KGNbeD4+Ml18MCkrMX1XPWNbdT4+Ml18MDtpPVg7cmV0dXJuIFd8MH1mdW5jdGlvbiBvQihlKXtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MDtrPWk7aT1pKzE2fDA7aj1rKzR8MDtnPWs7aD1rKzh8MDtjW2c+PjJdPWU7d2hpbGUoMSl7aWYoKGRbY1tnPj4yXT4+MF18MCk9PTE1NilmPTE7ZWxzZSBmPShkW2NbZz4+Ml0+PjBdfDApPT0xNTU7ZT1jW2c+PjJdfDA7aWYoIWYpYnJlYWs7Y1tnPj4yXT1jW2UrMTI+PjJdfWFbaD4+MF09YVtlPj4wXXwwO2lmKChkW2g+PjBdfDApPT0xNTcpYVtoPj4wXT1hWyhjW2c+PjJdfDApKzM4Pj4wXXwwO3N3aXRjaChkW2g+PjBdfDApe2Nhc2UgMTMzOmNhc2UgMTMyOmNhc2UgOTc6Y2FzZSAxMzQ6e2Nbaj4+Ml09MDtqPWNbaj4+Ml18MDtpPWs7cmV0dXJuIGp8MH1jYXNlIDE1Mjp7aWYoIShjWyhjW2c+PjJdfDApKzQ+PjJdJjEwNDg1NzYpKWlmKChiWyhjW2c+PjJdfDApKzMyPj4xXXwwKT49MCllPShkWyhjWyhjWyhjW2c+PjJdfDApKzQ0Pj4yXXwwKSs0Pj4yXXwwKSsoYlsoY1tnPj4yXXwwKSszMj4+MV08PDQpKzEyPj4wXXwwKT09MDtlbHNlIGU9MDtlbHNlIGU9MTtjW2o+PjJdPWUmMTtqPWNbaj4+Ml18MDtpPWs7cmV0dXJuIGp8MH1kZWZhdWx0OntjW2o+PjJdPTE7aj1jW2o+PjJdfDA7aT1rO3JldHVybiBqfDB9fXJldHVybiAwfWZ1bmN0aW9uIHBCKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGU9MCxmPTAsZz0wLGg9MDtoPWk7aT1pKzE2fDA7ZT1oKzh8MDtmPWgrNHwwO2c9aDtjW2Y+PjJdPWE7Y1tnPj4yXT1iO2E9KFhBKGNbZj4+Ml18MCl8MCkhPTA7Yj1jW2Y+PjJdfDA7aWYoIWEpe2NbZT4+Ml09YjtnPWNbZT4+Ml18MDtpPWg7cmV0dXJuIGd8MH1pZigoZFtiPj4wXXwwfDApIT0xMTk/KGRbKGNbZj4+Ml18MCkrMzg+PjBdfDB8MCkhPTExOTowKXtjW2U+PjJdPWNbKGNbKGNbKGNbZj4+Ml18MCkrMjA+PjJdfDApKzQ+PjJdfDApKygoY1tnPj4yXXwwKSoyMHwwKT4+Ml07Zz1jW2U+PjJdfDA7aT1oO3JldHVybiBnfDB9Y1tlPj4yXT1jWyhjWyhjW2NbKGNbZj4+Ml18MCkrMjA+PjJdPj4yXXwwKSs0Pj4yXXwwKSsoKGNbZz4+Ml18MCkqMjB8MCk+PjJdO2c9Y1tlPj4yXXwwO2k9aDtyZXR1cm4gZ3wwfWZ1bmN0aW9uIHFCKGEpe2E9YXwwO3ZhciBiPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MDttPWk7aT1pKzMyfDA7az1tKzI4fDA7Yj1tKzI0fDA7bD1tKzIwfDA7aD1tKzE2fDA7Zj1tKzEyfDA7aj1tKzh8MDtlPW0rNHwwO2c9bTtjW2I+PjJdPWE7ZG8gaWYoY1soY1tiPj4yXXwwKSs0Pj4yXSYyMDQ4KXtpZihjWyhjW2I+PjJdfDApKzQ+PjJdJjMyKXtjW2s+PjJdPTA7YnJlYWt9Y1tsPj4yXT1jWyhjW2I+PjJdfDApKzIwPj4yXTtpZihjWyhjW2w+PjJdfDApKzQ4Pj4yXXwwKXtjW2s+PjJdPTA7YnJlYWt9aWYoY1soY1tsPj4yXXwwKSs4Pj4yXSY5KXtjW2s+PjJdPTA7YnJlYWt9aWYoY1soY1tsPj4yXXwwKSs1Nj4+Ml18MCl7Y1trPj4yXT0wO2JyZWFrfWlmKGNbKGNbbD4+Ml18MCkrMzI+PjJdfDApe2Nbaz4+Ml09MDticmVha31jW2g+PjJdPWNbKGNbbD4+Ml18MCkrMjg+PjJdO2lmKChjW2NbaD4+Ml0+PjJdfDApIT0xKXtjW2s+PjJdPTA7YnJlYWt9aWYoY1soY1toPj4yXXwwKSs4KzIwPj4yXXwwKXtjW2s+PjJdPTA7YnJlYWt9Y1tqPj4yXT1jWyhjW2g+PjJdfDApKzgrMTY+PjJdO2lmKChkWyhjW2o+PjJdfDApKzQyPj4wXXwwKSYxNil7Y1trPj4yXT0wO2JyZWFrfWNbZj4+Ml09Y1tjW2w+PjJdPj4yXTtjW2U+PjJdPTA7d2hpbGUoMSl7aWYoKGNbZT4+Ml18MCk+PShjW2NbZj4+Ml0+PjJdfDApKXtiPTI0O2JyZWFrfWNbZz4+Ml09Y1soY1soY1tmPj4yXXwwKSs0Pj4yXXwwKSsoKGNbZT4+Ml18MCkqMjB8MCk+PjJdO2lmKChkW2NbZz4+Ml0+PjBdfDB8MCkhPTE1Mil7Yj0yMjticmVha31jW2U+PjJdPShjW2U+PjJdfDApKzF9aWYoKGJ8MCk9PTIyKXtjW2s+PjJdPTA7YnJlYWt9ZWxzZSBpZigoYnwwKT09MjQpe2Nbaz4+Ml09Y1tsPj4yXTticmVha319ZWxzZSBjW2s+PjJdPTA7d2hpbGUoMCk7aT1tO3JldHVybiBjW2s+PjJdfDB9ZnVuY3Rpb24gckIoYixkKXtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MDtoPWk7aT1pKzE2fDA7ZT1oKzZ8MDtqPWg7Zj1oKzV8MDtnPWgrNHwwO2Nbaj4+Ml09YjthW2Y+PjBdPWQ7YVtnPj4wXT1leShjW2o+PjJdfDApfDA7aWYoKGFbZz4+MF18MCkhPTA/KGFbZj4+MF18MCkhPTA6MCl7aWYoKGFbZz4+MF18MCk8Njc/KGFbZj4+MF18MCk8Njc6MCl7YVtlPj4wXT02NTtqPWFbZT4+MF18MDtpPWg7cmV0dXJuIGp8MH1hW2U+PjBdPTY3O2o9YVtlPj4wXXwwO2k9aDtyZXR1cm4ganwwfWlmKChhW2c+PjBdfDApIT0wfChhW2Y+PjBdfDApIT0wKXthW2U+PjBdPShhW2c+PjBdfDApKyhhW2Y+PjBdfDApO2o9YVtlPj4wXXwwO2k9aDtyZXR1cm4ganwwfWVsc2V7YVtlPj4wXT02NTtqPWFbZT4+MF18MDtpPWg7cmV0dXJuIGp8MH1yZXR1cm4gMH1mdW5jdGlvbiBzQihhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTA7aj1pO2k9aSsxNnwwO2U9aisxMnwwO2Y9ais4fDA7Zz1qKzR8MDtoPWo7Y1tlPj4yXT1hO2NbZj4+Ml09YjtjW2c+PjJdPWQ7aWYoY1soY1tmPj4yXXwwKSs0Pj4yXSYyNTYpe2NbaD4+Ml09ZnkoY1tlPj4yXXwwLGNbZj4+Ml18MCl8MDtkPWNbaD4+Ml18MDtpPWo7cmV0dXJuIGR8MH1pZigoY1tnPj4yXXwwKSE9MD8oY1soY1tnPj4yXXwwKSs0Pj4yXSYyNTZ8MCkhPTA6MCl7Y1toPj4yXT1meShjW2U+PjJdfDAsY1tnPj4yXXwwKXwwO2Q9Y1toPj4yXXwwO2k9ajtyZXR1cm4gZHwwfWNbaD4+Ml09ZnkoY1tlPj4yXXwwLGNbZj4+Ml18MCl8MDtpZihjW2g+PjJdfDApe2Q9Y1toPj4yXXwwO2k9ajtyZXR1cm4gZHwwfWNbaD4+Ml09ZnkoY1tlPj4yXXwwLGNbZz4+Ml18MCl8MDtkPWNbaD4+Ml18MDtpPWo7cmV0dXJuIGR8MH1mdW5jdGlvbiB0QihhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTA7ZT1pO2k9aSsxNnwwO2c9ZSsxMnwwO2o9ZSs4fDA7aD1lKzR8MDtmPWU7Y1tnPj4yXT1hO2Nbaj4+Ml09YjtjW2g+PjJdPWQ7aXgoY1tnPj4yXXwwLDc2LDAsY1toPj4yXXwwKXwwO2NbZj4+Ml09U3ooY1tnPj4yXXwwLDU3LGNbaj4+Ml18MCl8MDtqeChjW2c+PjJdfDAsOTYsY1tqPj4yXXwwLDAsY1toPj4yXXwwKXwwO0poKGNbZz4+Ml18MCwtMTI4KTtaeihjW2c+PjJdfDAsY1tmPj4yXXwwKTtpPWU7cmV0dXJufWZ1bmN0aW9uIHVCKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTA7ZD1pO2k9aSsxNnwwO2U9ZCs4fDA7Zj1kKzR8MDtiPWQ7Y1tlPj4yXT1hO2NbZj4+Ml09Y1soY1tlPj4yXXwwKSsxMj4+Ml07Y1soY1tlPj4yXXwwKSsxMj4+Ml09MDtjW2I+PjJdPSRBKGNbZT4+Ml18MCl8MDtjWyhjW2U+PjJdfDApKzEyPj4yXT1jW2Y+PjJdO2k9ZDtyZXR1cm4gY1tiPj4yXXwwfWZ1bmN0aW9uIHZCKGIsZCxlKXtiPWJ8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wO2Y9aTtpPWkrMTZ8MDtnPWYrOHwwO2o9Zis0fDA7aD1mO2NbZz4+Ml09YjtjW2o+PjJdPWQ7Y1toPj4yXT1lO2FbY1tnPj4yXT4+MF09Y1tqPj4yXTtjWyhjW2c+PjJdfDApKzg+PjJdPWNbaD4+Ml07Y1soY1tnPj4yXXwwKSs0Pj4yXT0wO2NbKGNbZz4+Ml18MCkrMTI+PjJdPTA7Y1soY1tnPj4yXXwwKSsxNj4+Ml09MDtpPWY7cmV0dXJufWZ1bmN0aW9uIHdCKGIsZSxmLGcpe2I9YnwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO3ZhciBoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTA7bj1pO2k9aSszMnwwO2g9bisxNnwwO289bisxMnwwO2o9bis4fDA7az1uKzIwfDA7bD1uKzR8MDttPW47Y1toPj4yXT1iO2Nbbz4+Ml09ZTtjW2o+PjJdPWY7YVtrPj4wXT1nO2NbbD4+Ml09Y1soY1toPj4yXXwwKSs4MD4+Ml07Y1tvPj4yXT1JeShjW2NbaD4+Ml0+PjJdfDAsY1tvPj4yXXwwLDApfDA7Y1tsPj4yXT1UdihjW2g+PjJdfDAsY1tsPj4yXXwwLGNbbz4+Ml18MCl8MDtpZighKGNbbD4+Ml18MCkpe2c9Y1tsPj4yXXwwO289Y1toPj4yXXwwO289bys4MHwwO2Nbbz4+Ml09ZztpPW47cmV0dXJufWNbbT4+Ml09KGNbKGNbbD4+Ml18MCkrND4+Ml18MCkrKCgoY1tjW2w+PjJdPj4yXXwwKS0xfDApKjIwfDApO2NbKGNbbT4+Ml18MCkrMTY+PjJdPWNbaj4+Ml07Zz0oY1ttPj4yXXwwKSsxM3wwO2FbZz4+MF09YVtnPj4wXSYtNXwoKGRbaz4+MF18MCkmMSk8PDImMjU1O2c9Y1tsPj4yXXwwO289Y1toPj4yXXwwO289bys4MHwwO2Nbbz4+Ml09ZztpPW47cmV0dXJufWZ1bmN0aW9uIHhCKGIsZSxmKXtiPWJ8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MDtoPWk7aT1pKzQ4fDA7aj1oKzM2fDA7bD1oKzMyfDA7az1oKzI4fDA7Zz1oO2Nbaj4+Ml09YjtjW2w+PjJdPWU7Y1trPj4yXT1mO2NbZz4+Ml09MDtjW2crND4+Ml09MDtjW2crOD4+Ml09MDtjW2crMTI+PjJdPTA7Y1tnKzE2Pj4yXT0wO2NbZysyMD4+Ml09MDtjW2crMjQ+PjJdPTA7YVtnKzIwPj4wXT1jW2w+PjJdO2NbZys0Pj4yXT0xOTc7Y1tnKzg+PjJdPTE5ODtjW2crMjQ+PjJdPWNbaz4+Ml07d3koZyxjW2o+PjJdfDApfDA7aT1oO3JldHVybiBkW2crMjA+PjBdfDB8MH1mdW5jdGlvbiB5QihiLGUpe2I9YnwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wO2s9aTtpPWkrMTZ8MDtmPWsrOHwwO2c9ays0fDA7aD1rO2NbZz4+Ml09YjtjW2g+PjJdPWU7aWYoKGRbKGNbZz4+Ml18MCkrMjA+PjBdfDB8MCk9PTI/KGNbKGNbaD4+Ml18MCkrND4+Ml0mMXwwKSE9MDowKXthWyhjW2c+PjJdfDApKzIwPj4wXT0wO2NbZj4+Ml09Mn1lbHNlIGo9NDthOmRvIGlmKChqfDApPT00KXtiOmRvIHN3aXRjaChkW2NbaD4+Ml0+PjBdfDB8MCl7Y2FzZSAxNTE6e2lmKChkWyhjW2c+PjJdfDApKzIwPj4wXXwwfDApPDQ/KGNbKGNbaD4+Ml18MCkrND4+Ml0mNTI0Mjg4fDApPT0wOjApe2FbKGNbZz4+Ml18MCkrMjA+PjBdPTA7Y1tmPj4yXT0yO2JyZWFrIGF9Y1tmPj4yXT0wO2JyZWFrIGF9Y2FzZSAxNTQ6Y2FzZSAxNTM6Y2FzZSAxNTI6Y2FzZSA1NTp7aWYoKGRbKGNbZz4+Ml18MCkrMjA+PjBdfDB8MCk9PTM/KGNbKGNbaD4+Ml18MCkrMjg+PjJdfDApPT0oY1soY1tnPj4yXXwwKSsyND4+Ml18MCk6MCl7Y1tmPj4yXT0wO2JyZWFrIGF9YVsoY1tnPj4yXXwwKSsyMD4+MF09MDtjW2Y+PjJdPTI7YnJlYWsgYX1jYXNlIDEzNTp7aWYoKGRbKGNbZz4+Ml18MCkrMjA+PjBdfDB8MCk9PTUpe2FbY1toPj4yXT4+MF09MTAxO2JyZWFrIGJ9aWYoKGRbKGNbZz4+Ml18MCkrMjA+PjBdfDB8MCk9PTQpe2FbKGNbZz4+Ml18MCkrMjA+PjBdPTA7Y1tmPj4yXT0yO2JyZWFrIGF9YnJlYWt9ZGVmYXVsdDp7fX13aGlsZSgwKTtjW2Y+PjJdPTB9d2hpbGUoMCk7aT1rO3JldHVybiBjW2Y+PjJdfDB9ZnVuY3Rpb24gekIoYixkKXtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MDtlPWk7aT1pKzE2fDA7Zj1lKzR8MDtjW2Y+PjJdPWI7Y1tlPj4yXT1kO2FbKGNbZj4+Ml18MCkrMjA+PjBdPTA7aT1lO3JldHVybiAyfWZ1bmN0aW9uIEFCKGIsZCxlKXtiPWJ8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MDtnPWk7aT1pKzE2fDA7aj1nKzh8MDtrPWcrNHwwO2g9ZztmPWcrMTJ8MDtjW2o+PjJdPWI7Y1trPj4yXT1kO2NbaD4+Ml09ZTthW2Y+PjBdPWV5KGNbaz4+Ml18MCl8MDtkPShyQihjW2o+PjJdfDAsYVtmPj4wXXwwKXwwKSYyNTU7YVtmPj4wXT1kfGNbaD4+Ml0mMjU1O2k9ZztyZXR1cm4gYVtmPj4wXXwwfWZ1bmN0aW9uIEJCKGEpe2E9YXwwO3ZhciBiPTAsZD0wO2I9aTtpPWkrMTZ8MDtkPWI7Y1tkPj4yXT1hO2E9eEIoY1tkPj4yXXwwLDIsMCl8MDtpPWI7cmV0dXJuIGF8MH1mdW5jdGlvbiBDQihhLGIpe2E9YXwwO2I9YnwwO3ZhciBlPTAsZj0wLGc9MCxoPTA7aD1pO2k9aSsxNnwwO2U9aCs4fDA7Zj1oKzR8MDtnPWg7Y1tlPj4yXT1hO2NbZj4+Ml09YjtjW2c+PjJdPTA7aWYoKGRbY1tmPj4yXT4+MF18MHwwKSE9MTE5KXtnPWNbZz4+Ml18MDtpPWg7cmV0dXJuIGd8MH1jW2c+PjJdPWRCKGNbZT4+Ml18MCxjW2Y+PjJdfDAsMCwwKXwwO2c9Y1tnPj4yXXwwO2k9aDtyZXR1cm4gZ3wwfWZ1bmN0aW9uIERCKGIsZSxmLGcsaCxqKXtiPWJ8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDt2YXIgaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTA7cz1pO2k9aSszMnwwO2w9cysyNHwwO209cysyMHwwO2s9cysxNnwwO249cysxMnwwO289cys4fDA7cD1zKzR8MDtxPXM7cj1zKzI4fDA7Y1ttPj4yXT1iO2Nbaz4+Ml09ZTtjW24+PjJdPWY7Y1tvPj4yXT1nO2NbcD4+Ml09aDtjW3E+PjJdPWo7YVtyPj4wXT1hW2Nbaz4+Ml0+PjBdfDA7aWYoKGRbcj4+MF18MHwwKT09MTU3KXtyPXBCKGNbaz4+Ml18MCxjW24+PjJdfDApfDA7Y1tjW3A+PjJdPj4yXT1yO2NbbD4+Ml09KGNbKGNbaz4+Ml18MCkrMjg+PjJdfDApKyhjW24+PjJdfDApO3I9Y1tsPj4yXXwwO2k9cztyZXR1cm4gcnwwfWI9Y1tuPj4yXXwwO2Y9KGNbaz4+Ml18MCkrMjB8MDtpZigoZFtyPj4wXXwwfDApPT0xMTkpe2NbY1twPj4yXT4+Ml09Y1soY1soY1tjW2Y+PjJdPj4yXXwwKSs0Pj4yXXwwKSsoYioyMHwwKT4+Ml07Y1tsPj4yXT0oY1tvPj4yXXwwKSsoY1tuPj4yXXwwKTtyPWNbbD4+Ml18MDtpPXM7cmV0dXJuIHJ8MH1lbHNle2NbY1twPj4yXT4+Ml09Y1soY1soY1tmPj4yXXwwKSs0Pj4yXXwwKSsoYioyMHwwKT4+Ml07Y1tsPj4yXT1aQShjW20+PjJdfDAsY1tjW3A+PjJdPj4yXXwwLGNbcT4+Ml18MCl8MDtyPWNbbD4+Ml18MDtpPXM7cmV0dXJuIHJ8MH1yZXR1cm4gMH1mdW5jdGlvbiBFQihiLGQsZSxmLGcsaCxqKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDt2YXIgaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTA7cz1pO2k9aSszMnwwO2s9cysyOHwwO2w9cysyNHwwO209cysyMHwwO249cysxNnwwO289cysxMnwwO3A9cys4fDA7cT1zKzR8MDtyPXM7Y1trPj4yXT1iO2NbbD4+Ml09ZDtjW20+PjJdPWU7Y1tuPj4yXT1mO2Nbbz4+Ml09ZztjW3A+PjJdPWg7Y1txPj4yXT1qO2Nbcj4+Ml09VncoUUEoY1trPj4yXXwwKXwwLDgsMCl8MDtpZihjW3I+PjJdfDApe2g9Y1tyPj4yXXwwO2o9Y1twPj4yXXwwO2FbaD4+MF09YVtqPj4wXXwwO2FbaCsxPj4wXT1hW2orMT4+MF18MDthW2grMj4+MF09YVtqKzI+PjBdfDA7YVtoKzM+PjBdPWFbaiszPj4wXXwwO2FbaCs0Pj4wXT1hW2orND4+MF18MDthW2grNT4+MF09YVtqKzU+PjBdfDA7YVtoKzY+PjBdPWFbais2Pj4wXXwwO2FbaCs3Pj4wXT1hW2orNz4+MF18MH1oPW14KGNbaz4+Ml18MCxjW2w+PjJdfDAsY1ttPj4yXXwwLGNbbj4+Ml18MCxjW28+PjJdfDAsY1tyPj4yXXwwLGNbcT4+Ml18MCl8MDtpPXM7cmV0dXJuIGh8MH1mdW5jdGlvbiBGQihiLGUpe2I9YnwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wO2s9aTtpPWkrMTZ8MDtmPWsrMTJ8MDtnPWsrOHwwO2g9ays0fDA7aj1rO2NbZj4+Ml09YjtjW2c+PjJdPWU7Y1toPj4yXT0wO2Nbaj4+Ml09KGNbZj4+Ml18MCkrMTUyO3doaWxlKDEpe2lmKChjW2g+PjJdfDApPj0oZFsoY1tmPj4yXXwwKSsyNT4+MF18MHwwKSlicmVhaztpZigoY1soY1tqPj4yXXwwKSsxMj4+Ml18MCk9PShjW2c+PjJdfDApKWFbKGNbaj4+Ml18MCkrNj4+MF09MDtjW2g+PjJdPShjW2g+PjJdfDApKzE7Y1tqPj4yXT0oY1tqPj4yXXwwKSsyMH1pPWs7cmV0dXJufWZ1bmN0aW9uIEdCKGYsZyxoLGope2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO3ZhciBrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MDtzPWk7aT1pKzMyfDA7az1zKzI4fDA7bD1zKzI0fDA7bT1zKzIwfDA7bj1zKzE2fDA7bz1zKzEyfDA7cT1zKzh8MDtwPXMrNHwwO3I9cztjW2s+PjJdPWY7Y1tsPj4yXT1nO2NbbT4+Ml09aDtjW24+PjJdPWo7aWYoKGVbKGNbY1trPj4yXT4+Ml18MCkrNjQ+PjFdfDApJjIpe2k9cztyZXR1cm59aWYoKGRbKGNbaz4+Ml18MCkrMjU+PjBdfDB8MCk+PTEwKXtjW3E+PjJdPTIxNDc0ODM2NDc7Y1twPj4yXT0tMTtjW28+PjJdPTA7Y1tyPj4yXT0oY1trPj4yXXwwKSsxNTI7d2hpbGUoMSl7aWYoKGNbbz4+Ml18MCk+PTEwKWJyZWFrO2lmKChjWyhjW3I+PjJdfDApKzE2Pj4yXXwwKTwoY1txPj4yXXwwKSl7Y1twPj4yXT1jW28+PjJdO2NbcT4+Ml09Y1soY1tyPj4yXXwwKSsxNj4+Ml19Y1tvPj4yXT0oY1tvPj4yXXwwKSsxO2Nbcj4+Ml09KGNbcj4+Ml18MCkrMjB9Y1tyPj4yXT0oY1trPj4yXXwwKSsxNTIrKChjW3A+PjJdfDApKjIwfDApfWVsc2V7cT0oY1trPj4yXXwwKSsyNXwwO2Y9YVtxPj4wXXwwO2FbcT4+MF09ZisxPDwyND4+MjQ7Y1tyPj4yXT0oY1trPj4yXXwwKSsxNTIrKChmJjI1NSkqMjB8MCl9Y1soY1tyPj4yXXwwKSs4Pj4yXT1jWyhjW2s+PjJdfDApKzY0Pj4yXTtjW2Nbcj4+Ml0+PjJdPWNbbD4+Ml07YlsoY1tyPj4yXXwwKSs0Pj4xXT1jW20+PjJdO2NbKGNbcj4+Ml18MCkrMTI+PjJdPWNbbj4+Ml07YVsoY1tyPj4yXXwwKSs2Pj4wXT0wO3E9KGNbaz4+Ml18MCkrNjh8MDtmPWNbcT4+Ml18MDtjW3E+PjJdPWYrMTtjWyhjW3I+PjJdfDApKzE2Pj4yXT1mO2k9cztyZXR1cm59ZnVuY3Rpb24gSEIoYSxkKXthPWF8MDtkPWR8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTA7bD1pO2k9aSszMnwwO2s9bCsxNnwwO2Y9bCsxMnwwO2c9bCs4fDA7aD1sKzR8MDtqPWw7Y1tmPj4yXT1hO2NbZz4+Ml09ZDtjW2g+PjJdPTA7d2hpbGUoMSl7aWYoKGNbaD4+Ml18MCk+PShlWyhjW2c+PjJdfDApKzUyPj4xXXwwKSl7Zj03O2JyZWFrfWNbaj4+Ml09Y1soY1soY1tnPj4yXXwwKSszMj4+Ml18MCkrKGNbaD4+Ml08PDIpPj4yXTtpZigoYlsoY1soY1tnPj4yXXwwKSs0Pj4yXXwwKSsoY1toPj4yXTw8MSk+PjFdfDApPj0wPzA9PShpZyhjW2o+PjJdfDAsY1tmPj4yXXwwKXwwKTowKXtmPTU7YnJlYWt9Y1toPj4yXT0oY1toPj4yXXwwKSsxfWlmKChmfDApPT01KXtjW2s+PjJdPTE7az1jW2s+PjJdfDA7aT1sO3JldHVybiBrfDB9ZWxzZSBpZigoZnwwKT09Nyl7Y1trPj4yXT0wO2s9Y1trPj4yXXwwO2k9bDtyZXR1cm4ga3wwfXJldHVybiAwfWZ1bmN0aW9uIElCKGIsZSxmLGcsaCxqLGspe2I9YnwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO2s9a3wwO3ZhciBsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wO3k9aTtpPWkrODB8MDtsPXkrNzZ8MDttPXkrNzJ8MDtuPXkrNjh8MDtvPXkrNjR8MDtwPXkrNjB8MDtxPXkrNTZ8MDtyPXkrNTJ8MDt0PXkrNDh8MDt2PXkrMTZ8MDt3PXkrMTJ8MDtzPXkrOHwwO3U9eSs0fDA7eD15O2NbbD4+Ml09YjtjW20+PjJdPWU7Y1tuPj4yXT1mO2Nbbz4+Ml09ZztjW3A+PjJdPWg7Y1txPj4yXT1qO2Nbcj4+Ml09aztjW3M+PjJdPWNbY1tsPj4yXT4+Ml07Y1t2Pj4yXT0wO2Nbdis0Pj4yXT0wO2Nbdis4Pj4yXT0wO2NbdisxMj4+Ml09MDtjW3YrMTY+PjJdPTA7Y1t2KzIwPj4yXT0wO2NbdisyND4+Ml09MDtjW3YrMjg+PjJdPTA7Y1t2Pj4yXT1jW2w+PjJdO2U9SkIodixjW3A+PjJdfDApfDA7Y1t0Pj4yXT1lO2RvIGlmKCgwPT0oZXwwKT8oZT1KQih2LGNbcT4+Ml18MCl8MCxjW3Q+PjJdPWUsMD09KGV8MCkpOjApPyhlPUpCKHYsY1tyPj4yXXwwKXwwLGNbdD4+Ml09ZSwwPT0oZXwwKSk6MCl7aWYoY1tvPj4yXXwwKXtpZigoZFtjW28+PjJdPj4wXXwwKT09OTcpY1t4Pj4yXT1jWyhjW28+PjJdfDApKzg+PjJdO2Vsc2UgY1t4Pj4yXT0wO2NbdD4+Ml09YXgoY1tsPj4yXXwwLGNbbT4+Ml18MCxjW3g+PjJdfDAsMCwwKXwwO2lmKGNbdD4+Ml18MClicmVha31jW3c+PjJdPWR4KGNbbD4+Ml18MCl8MDtjW3U+PjJdPUNBKGNbbD4+Ml18MCw0KXwwO1JBKGNbbD4+Ml18MCxjW3A+PjJdfDAsY1t1Pj4yXXwwKTtSQShjW2w+PjJdfDAsY1txPj4yXXwwLChjW3U+PjJdfDApKzF8MCk7UkEoY1tsPj4yXXwwLGNbcj4+Ml18MCwoY1t1Pj4yXXwwKSsyfDApO2lmKGNbdz4+Ml18MCl7bXgoY1t3Pj4yXXwwLDg5LDAsKGNbdT4+Ml18MCkrMy0oYVtjW24+PjJdPj4wXXwwKXwwLChjW3U+PjJdfDApKzN8MCxjW24+PjJdfDAsLTUpfDA7SmgoY1t3Pj4yXXwwLGFbY1tuPj4yXT4+MF18MCk7U3ooY1t3Pj4yXXwwLDE1MCwoY1ttPj4yXXwwKT09MjQmMSl8MH19d2hpbGUoMCk7aXYoY1tzPj4yXXwwLGNbcD4+Ml18MCk7aXYoY1tzPj4yXXwwLGNbcT4+Ml18MCk7aXYoY1tzPj4yXXwwLGNbcj4+Ml18MCk7aT15O3JldHVybn1mdW5jdGlvbiBKQihiLGUpe2I9YnwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTA7aj1pO2k9aSsxNnwwO2Y9ais4fDA7Zz1qKzR8MDtoPWo7Y1tmPj4yXT1iO2NbZz4+Ml09ZTtjW2g+PjJdPTA7ZG8gaWYoY1tnPj4yXXwwKWlmKChkW2NbZz4+Ml0+PjBdfDB8MCkhPTU1KXtjW2g+PjJdPUF5KGNbZj4+Ml18MCxjW2c+PjJdfDApfDA7YnJlYWt9ZWxzZXthW2NbZz4+Ml0+PjBdPTk3O2JyZWFrfXdoaWxlKDApO2k9ajtyZXR1cm4gY1toPj4yXXwwfWZ1bmN0aW9uIEtCKGIsZCxlKXtiPWJ8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTA7cT1pO2k9aSsxOTJ8MDtuPXErMjR8MDttPXErMTZ8MDtsPXErOHwwO2s9cTtmPXErNTJ8MDtyPXErNDR8MDtwPXErNDB8MDtnPXErMzZ8MDtoPXErMzJ8MDtqPXErMjh8MDtvPXErNTZ8MDtjW2Y+PjJdPWI7Y1txKzQ4Pj4yXT1kO2Nbcj4+Ml09ZTtjW3A+PjJdPSRkKGNbY1tyPj4yXT4+Ml18MCl8MDtjW2c+PjJdPXZlKGNbZj4+Ml18MCl8MDtjW2o+PjJdPTA7aWYoIShjW3A+PjJdfDApKWNbcD4+Ml09MTg0MDI7Y1toPj4yXT0wO3doaWxlKDEpe2lmKChjW2g+PjJdfDApPj0oY1soY1tnPj4yXXwwKSsyMD4+Ml18MCkpYnJlYWs7Y1tqPj4yXT0oY1soY1tnPj4yXXwwKSsxNj4+Ml18MCkrKGNbaD4+Ml08PDQpO2lmKChjWyhjW2o+PjJdfDApKzQ+PjJdfDApIT0wPyhpZyhjW2Nbaj4+Ml0+PjJdfDAsY1twPj4yXXwwKXwwKT09MDowKWJyZWFrO2NbaD4+Ml09KGNbaD4+Ml18MCkrMX1kbyBpZigoY1toPj4yXXwwKT49KGNbKGNbZz4+Ml18MCkrMjA+PjJdfDApKXtjW2s+PjJdPWNbcD4+Ml07UWQoMTI4LG8sMzEzMzEsayl8MH1lbHNle2lmKChjW2g+PjJdfDApPDIpe2NbbD4+Ml09Y1twPj4yXTtRZCgxMjgsbywzMTM1MixsKXwwO2JyZWFrfWlmKCEoYVsoY1tnPj4yXXwwKSs2Nz4+MF18MCkpe1FkKDEyOCxvLDMxMzc4LG0pfDA7YnJlYWt9aWYoKG9nKGNbKGNbaj4+Ml18MCkrND4+Ml18MCl8MCk9PTA/KHF1KGNbKGNbaj4+Ml18MCkrND4+Ml18MCl8MCk9PTA6MCl7TEIoY1soY1tqPj4yXXwwKSs0Pj4yXXwwKXwwO2NbKGNbaj4+Ml18MCkrND4+Ml09MDtjWyhjW2o+PjJdfDApKzEyPj4yXT0wO01CKGNbZz4+Ml18MCk7aT1xO3JldHVybn1jW24+PjJdPWNbcD4+Ml07UWQoMTI4LG8sMzE0MjAsbil8MH13aGlsZSgwKTtpZShjW2Y+PjJdfDAsbywtMSk7aT1xO3JldHVybn1mdW5jdGlvbiBMQihiKXtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MDtoPWk7aT1pKzE2fDA7ZD1oKzEyfDA7ZT1oKzh8MDtmPWgrNHwwO2c9aDtjW2Q+PjJdPWI7Y1tlPj4yXT1jWyhjW2Q+PjJdfDApKzQ+PjJdO21nKGNbZD4+Ml18MCk7Y1tmPj4yXT1jWyhjW2U+PjJdfDApKzg+PjJdO3doaWxlKDEpe2lmKCEoY1tmPj4yXXwwKSlicmVhaztjW2c+PjJdPWNbZj4+Ml07Y1tmPj4yXT1jWyhjW2Y+PjJdfDApKzg+PjJdO2lmKChjW2NbZz4+Ml0+PjJdfDApIT0oY1tkPj4yXXwwKSljb250aW51ZTtOQihjW2c+PjJdfDApfDB9UGcoY1tkPj4yXXwwLDAsMCl8MDtpZighKChhWyhjW2Q+PjJdfDApKzk+PjBdfDApIT0wPyhPQihjW2U+PjJdfDApfDApPT0wOjApKXtocihjW2NbZT4+Ml0+PjJdfDApfDA7aWYoKGNbKGNbZT4+Ml18MCkrNTI+PjJdfDApIT0wPyhjWyhjW2U+PjJdfDApKzQ4Pj4yXXwwKSE9MDowKVFiW2NbKGNbZT4+Ml18MCkrNTI+PjJdJjI1NV0oY1soY1tlPj4yXXwwKSs0OD4+Ml18MCk7VGYoMCxjWyhjW2U+PjJdfDApKzQ4Pj4yXXwwKTtVaShjW2U+PjJdfDApO0tkKGNbZT4+Ml18MCl9aWYoY1soY1tkPj4yXXwwKSsyOD4+Ml18MCljWyhjWyhjW2Q+PjJdfDApKzI4Pj4yXXwwKSsyND4+Ml09Y1soY1tkPj4yXXwwKSsyND4+Ml07aWYoIShjWyhjW2Q+PjJdfDApKzI0Pj4yXXwwKSl7Zz1jW2Q+PjJdfDA7S2QoZyk7aT1oO3JldHVybiAwfWNbKGNbKGNbZD4+Ml18MCkrMjQ+PjJdfDApKzI4Pj4yXT1jWyhjW2Q+PjJdfDApKzI4Pj4yXTtnPWNbZD4+Ml18MDtLZChnKTtpPWg7cmV0dXJuIDB9ZnVuY3Rpb24gTUIoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MCxnPTAsaD0wO2c9aTtpPWkrMTZ8MDtiPWcrMTJ8MDtkPWcrOHwwO2U9Zys0fDA7Zj1nO2NbYj4+Ml09YTtjW2U+PjJdPTI7Y1tkPj4yXT0yO3doaWxlKDEpe2lmKChjW2Q+PjJdfDApPj0oY1soY1tiPj4yXXwwKSsyMD4+Ml18MCkpYnJlYWs7Y1tmPj4yXT0oY1soY1tiPj4yXXwwKSsxNj4+Ml18MCkrKGNbZD4+Ml08PDQpO2lmKCEoY1soY1tmPj4yXXwwKSs0Pj4yXXwwKSl7VGYoY1tiPj4yXXwwLGNbY1tmPj4yXT4+Ml18MCk7Y1tjW2Y+PjJdPj4yXT0wfWVsc2V7aWYoKGNbZT4+Ml18MCk8KGNbZD4+Ml18MCkpe2E9KGNbKGNbYj4+Ml18MCkrMTY+PjJdfDApKyhjW2U+PjJdPDw0KXwwO2g9KGNbKGNbYj4+Ml18MCkrMTY+PjJdfDApKyhjW2Q+PjJdPDw0KXwwO2NbYT4+Ml09Y1toPj4yXTtjW2ErND4+Ml09Y1toKzQ+PjJdO2NbYSs4Pj4yXT1jW2grOD4+Ml07Y1thKzEyPj4yXT1jW2grMTI+PjJdfWNbZT4+Ml09KGNbZT4+Ml18MCkrMX1jW2Q+PjJdPShjW2Q+PjJdfDApKzF9Y1soY1tiPj4yXXwwKSsyMD4+Ml09Y1tlPj4yXTtpZigoY1soY1tiPj4yXXwwKSsyMD4+Ml18MCk+Mil7aT1nO3JldHVybn1pZigoY1soY1tiPj4yXXwwKSsxNj4+Ml18MCk9PSgoY1tiPj4yXXwwKSszOTJ8MCkpe2k9ZztyZXR1cm59aD0oY1tiPj4yXXwwKSszOTJ8MDtmPWNbKGNbYj4+Ml18MCkrMTY+PjJdfDA7Y1toPj4yXT1jW2Y+PjJdO2NbaCs0Pj4yXT1jW2YrND4+Ml07Y1toKzg+PjJdPWNbZis4Pj4yXTtjW2grMTI+PjJdPWNbZisxMj4+Ml07Y1toKzE2Pj4yXT1jW2YrMTY+PjJdO2NbaCsyMD4+Ml09Y1tmKzIwPj4yXTtjW2grMjQ+PjJdPWNbZisyND4+Ml07Y1toKzI4Pj4yXT1jW2YrMjg+PjJdO1RmKGNbYj4+Ml18MCxjWyhjW2I+PjJdfDApKzE2Pj4yXXwwKTtjWyhjW2I+PjJdfDApKzE2Pj4yXT0oY1tiPj4yXXwwKSszOTI7aT1nO3JldHVybn1mdW5jdGlvbiBOQihiKXtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTA7aj1pO2k9aSszMnwwO2Q9aisxNnwwO2c9aisxMnwwO2U9ais4fDA7Zj1qKzR8MDtoPWo7Y1tkPj4yXT1iO2NbZz4+Ml09Y1tjW2Q+PjJdPj4yXTtpZighKGNbZz4+Ml18MCkpe2k9ajtyZXR1cm4gMH1jW2Y+PjJdPWNbKGNbZD4+Ml18MCkrND4+Ml07bWcoY1tnPj4yXXwwKTtQQihjW2Q+PjJdfDApO2E6ZG8gaWYoKGNbKGNbZj4+Ml18MCkrOD4+Ml18MCk9PShjW2Q+PjJdfDApKWNbKGNbZj4+Ml18MCkrOD4+Ml09Y1soY1tkPj4yXXwwKSs4Pj4yXTtlbHNle2NbaD4+Ml09Y1soY1tmPj4yXXwwKSs4Pj4yXTt3aGlsZSgxKXtpZigoY1soY1toPj4yXXwwKSs4Pj4yXXwwKT09KGNbZD4+Ml18MCkpYnJlYWs7Y1toPj4yXT1jWyhjW2g+PjJdfDApKzg+PjJdO2lmKCEoY1toPj4yXXwwKSlicmVhayBhfWNbKGNbaD4+Ml18MCkrOD4+Ml09Y1soY1tkPj4yXXwwKSs4Pj4yXX13aGlsZSgwKTtjW2U+PjJdPTA7d2hpbGUoMSl7aWYoKGNbZT4+Ml18MCk+KGFbKGNbZD4+Ml18MCkrNjg+PjBdfDApKWJyZWFrO1FCKGNbKGNbZD4+Ml18MCkrMTIwKyhjW2U+PjJdPDwyKT4+Ml18MCk7Y1tlPj4yXT0oY1tlPj4yXXwwKSsxfVJCKGNbZj4+Ml18MCk7S2QoY1soY1tkPj4yXXwwKSsxMj4+Ml18MCk7aT1qO3JldHVybiAwfWZ1bmN0aW9uIE9CKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTAsZz0wO2c9aTtpPWkrMTZ8MDtkPWcrOHwwO2U9Zys0fDA7Zj1nO2NbZD4+Ml09YTtjW2Y+PjJdPTA7Yj0oY1tkPj4yXXwwKSs2NHwwO2NbYj4+Ml09KGNbYj4+Ml18MCkrLTE7aWYoKGNbKGNbZD4+Ml18MCkrNjQ+PjJdfDApPjApe2Y9Y1tmPj4yXXwwO2k9ZztyZXR1cm4gZnwwfWlmKChjWzEwMDZdfDApIT0oY1tkPj4yXXwwKSl7Y1tlPj4yXT1jWzEwMDZdO3doaWxlKDEpe2lmKGNbZT4+Ml18MCliPShjWyhjW2U+PjJdfDApKzY4Pj4yXXwwKSE9KGNbZD4+Ml18MCk7ZWxzZSBiPTA7YT1jW2U+PjJdfDA7aWYoIWIpYnJlYWs7Y1tlPj4yXT1jW2ErNjg+PjJdfWlmKGEpY1soY1tlPj4yXXwwKSs2OD4+Ml09Y1soY1tkPj4yXXwwKSs2OD4+Ml19ZWxzZSBjWzEwMDZdPWNbKGNbZD4+Ml18MCkrNjg+PjJdO2NbZj4+Ml09MTtmPWNbZj4+Ml18MDtpPWc7cmV0dXJuIGZ8MH1mdW5jdGlvbiBQQihiKXtiPWJ8MDt2YXIgZD0wLGU9MDtkPWk7aT1pKzE2fDA7ZT1kO2NbZT4+Ml09YjtLZChjWyhjW2U+PjJdfDApKzQ4Pj4yXXwwKTtjWyhjW2U+PjJdfDApKzQ4Pj4yXT0wO2FbKGNbZT4+Ml18MCkrNjY+PjBdPTA7aT1kO3JldHVybn1mdW5jdGlvbiBRQihhKXthPWF8MDt2YXIgYj0wLGQ9MDtkPWk7aT1pKzE2fDA7Yj1kO2NbYj4+Ml09YTtpZighKGNbYj4+Ml18MCkpe2k9ZDtyZXR1cm59U0IoY1tiPj4yXXwwKTtpPWQ7cmV0dXJufWZ1bmN0aW9uIFJCKGEpe2E9YXwwO3ZhciBiPTAsZT0wLGY9MDtmPWk7aT1pKzE2fDA7Yj1mKzR8MDtlPWY7Y1tiPj4yXT1hO2lmKGRbKGNbYj4+Ml18MCkrMjA+PjBdfDApe2k9ZjtyZXR1cm59aWYoIShjWyhjW2I+PjJdfDApKzEyPj4yXXwwKSl7aT1mO3JldHVybn1jW2U+PjJdPWNbKGNbYj4+Ml18MCkrMTI+PjJdO2NbKGNbYj4+Ml18MCkrMTI+PjJdPTA7U0IoY1tlPj4yXXwwKTtpPWY7cmV0dXJufWZ1bmN0aW9uIFNCKGEpe2E9YXwwO3ZhciBiPTAsZD0wO2I9aTtpPWkrMTZ8MDtkPWI7Y1tkPj4yXT1hO0pzKGNbKGNbZD4+Ml18MCkrNzI+PjJdfDApO2k9YjtyZXR1cm59ZnVuY3Rpb24gVEIoYixlLGYpe2I9YnwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wLEU9MCxGPTA7RT1pO2k9aSsxMjh8MDt3PUUrNDh8MDt2PUUrNDB8MDt5PUUrMzJ8MDt4PUUrMjR8MDtrPUUrMTZ8MDtqPUUrOHwwO2g9RTtuPUUrMTE2fDA7Rj1FKzEwOHwwO2c9RSsxMDR8MDt1PUUrMTAwfDA7cD1FKzk2fDA7Qz1FKzkyfDA7Qj1FKzg4fDA7RD1FKzg0fDA7ej1FKzgwfDA7cT1FKzc2fDA7bz1FKzcyfDA7QT1FKzY4fDA7dD1FKzY0fDA7bD1FKzYwfDA7cz1FKzU2fDA7cj1FKzUyfDA7Y1tuPj4yXT1iO2NbRSsxMTI+PjJdPWU7Y1tGPj4yXT1mO2NbdT4+Ml09MDtjW3A+PjJdPXZlKGNbbj4+Ml18MCl8MDtjW0Q+PjJdPTA7Y1t6Pj4yXT0wO2NbQT4+Ml09MDtjW0I+PjJdPSRkKGNbY1tGPj4yXT4+Ml18MCl8MDtjW0M+PjJdPSRkKGNbKGNbRj4+Ml18MCkrND4+Ml18MCl8MDtpZighKGNbQj4+Ml18MCkpY1tCPj4yXT0xODQwMjtpZighKGNbQz4+Ml18MCkpY1tDPj4yXT0xODQwMjtlPWNbcD4+Ml18MDtkbyBpZigoY1soY1twPj4yXXwwKSsyMD4+Ml18MCk8KChjWyhjW3A+PjJdfDApKzk2KzI4Pj4yXXwwKSsyfDApKXtpZighKGFbZSs2Nz4+MF18MCkpe2NbQT4+Ml09R2goY1twPj4yXXwwLDMxNDkzLGopfDA7YnJlYWt9Y1tnPj4yXT0wO3doaWxlKDEpe2lmKChjW2c+PjJdfDApPj0oY1soY1twPj4yXXwwKSsyMD4+Ml18MCkpYnJlYWs7Y1tsPj4yXT1jWyhjWyhjW3A+PjJdfDApKzE2Pj4yXXwwKSsoY1tnPj4yXTw8NCk+PjJdO2lmKCEoaWcoY1tsPj4yXXwwLGNbQz4+Ml18MCl8MCkpe209MTI7YnJlYWt9Y1tnPj4yXT0oY1tnPj4yXXwwKSsxfWlmKChtfDApPT0xMil7Rj1jW3A+PjJdfDA7Y1trPj4yXT1jW0M+PjJdO2NbQT4+Ml09R2goRiwzMTUzNSxrKXwwO2JyZWFrfWU9Y1twPj4yXXwwO2RvIGlmKChjWyhjW3A+PjJdfDApKzE2Pj4yXXwwKT09KChjW3A+PjJdfDApKzM5MnwwKSl7Y1tvPj4yXT1WdyhlLDQ4LDApfDA7aWYoIShjW28+PjJdfDApKXtpPUU7cmV0dXJufWVsc2V7Rj1jW28+PjJdfDA7bT1jWyhjW3A+PjJdfDApKzE2Pj4yXXwwO2NbRj4+Ml09Y1ttPj4yXTtjW0YrND4+Ml09Y1ttKzQ+PjJdO2NbRis4Pj4yXT1jW20rOD4+Ml07Y1tGKzEyPj4yXT1jW20rMTI+PjJdO2NbRisxNj4+Ml09Y1ttKzE2Pj4yXTtjW0YrMjA+PjJdPWNbbSsyMD4+Ml07Y1tGKzI0Pj4yXT1jW20rMjQ+PjJdO2NbRisyOD4+Ml09Y1ttKzI4Pj4yXTticmVha319ZWxzZXtjW28+PjJdPVV3KGUsY1soY1twPj4yXXwwKSsxNj4+Ml18MCwoY1soY1twPj4yXXwwKSsyMD4+Ml18MCkrMTw8NCwwKXwwO2lmKCEoY1tvPj4yXXwwKSl7aT1FO3JldHVybn19d2hpbGUoMCk7Y1soY1twPj4yXXwwKSsxNj4+Ml09Y1tvPj4yXTtjW28+PjJdPShjWyhjW3A+PjJdfDApKzE2Pj4yXXwwKSsoY1soY1twPj4yXXwwKSsyMD4+Ml08PDQpO0Y9Y1tvPj4yXXwwO2NbRj4+Ml09MDtjW0YrND4+Ml09MDtjW0YrOD4+Ml09MDtjW0YrMTI+PjJdPTA7Y1txPj4yXT1jWyhjW3A+PjJdfDApKzQ4Pj4yXTtjW3U+PjJdPWFrKGNbKGNbY1twPj4yXT4+Ml18MCkrMTY+PjJdfDAsY1tCPj4yXXwwLHEsdCxELHopfDA7aWYoY1t1Pj4yXXwwKXtpZigoY1t1Pj4yXXwwKT09NyltaChjW3A+PjJdfDApO2llKGNbbj4+Ml18MCxjW3o+PjJdfDAsLTEpO0tkKGNbej4+Ml18MCk7aT1FO3JldHVybn1jW3E+PjJdPWNbcT4+Ml18MjU2O2NbdT4+Ml09YmsoY1t0Pj4yXXwwLGNbRD4+Ml18MCxjW3A+PjJdfDAsKGNbbz4+Ml18MCkrNHwwLDAsY1txPj4yXXwwKXwwO0tkKGNbRD4+Ml18MCk7Rj0oY1twPj4yXXwwKSsyMHwwO2NbRj4+Ml09KGNbRj4+Ml18MCkrMTtpZigoY1t1Pj4yXXwwKSE9MTkpe2lmKCEoY1t1Pj4yXXwwKSl7Rj1jayhjW3A+PjJdfDAsY1soY1tvPj4yXXwwKSs0Pj4yXXwwKXwwO2NbKGNbbz4+Ml18MCkrMTI+PjJdPUY7aWYoY1soY1tvPj4yXXwwKSsxMj4+Ml18MCl7aWYoKGRbKGNbKGNbbz4+Ml18MCkrMTI+PjJdfDApKzc2Pj4wXXwwKSE9MD8oZFsoY1soY1tvPj4yXXwwKSsxMj4+Ml18MCkrNzc+PjBdfDApIT0oZFsoY1twPj4yXXwwKSs2Nj4+MF18MCk6MCl7Y1tBPj4yXT1HaChjW3A+PjJdfDAsMjAwMTYseSl8MDtjW3U+PjJdPTF9fWVsc2UgY1t1Pj4yXT03O21nKGNbKGNbbz4+Ml18MCkrND4+Ml18MCk7Y1tzPj4yXT1QZihjWyhjW28+PjJdfDApKzQ+PjJdfDApfDA7VUIoY1tzPj4yXXwwLGRbKGNbcD4+Ml18MCkrNzE+PjBdfDApfDA7Rj1jWyhjW28+PjJdfDApKzQ+PjJdfDA7VkIoRixWQihjWyhjWyhjW3A+PjJdfDApKzE2Pj4yXXwwKSs0Pj4yXXwwLC0xKXwwKXwwO1dCKGNbKGNbbz4+Ml18MCkrND4+Ml18MCwzfGNbKGNbcD4+Ml18MCkrMjQ+PjJdJjU2KXwwfX1lbHNle2NbdT4+Ml09MTtjW0E+PjJdPUdoKGNbcD4+Ml18MCwzMTU2NSx4KXwwfWFbKGNbbz4+Ml18MCkrOD4+MF09MztGPXFoKGNbcD4+Ml18MCxjW0M+PjJdfDApfDA7Y1tjW28+PjJdPj4yXT1GO2lmKChjW3U+PjJdfDApPT0wPyhjW2Nbbz4+Ml0+PjJdfDApPT0wOjApY1t1Pj4yXT03O2lmKCEoY1t1Pj4yXXwwKSl7T2YoY1twPj4yXXwwKTtjW3U+PjJdPXNpKGNbcD4+Ml18MCxBKXwwfWlmKCEoY1t1Pj4yXXwwKSl7aT1FO3JldHVybn1jW3I+PjJdPShjWyhjW3A+PjJdfDApKzIwPj4yXXwwKS0xO2lmKGNbKGNbKGNbcD4+Ml18MCkrMTY+PjJdfDApKyhjW3I+PjJdPDw0KSs0Pj4yXXwwKXtMQihjWyhjWyhjW3A+PjJdfDApKzE2Pj4yXXwwKSsoY1tyPj4yXTw8NCkrND4+Ml18MCl8MDtjWyhjWyhjW3A+PjJdfDApKzE2Pj4yXXwwKSsoY1tyPj4yXTw8NCkrND4+Ml09MDtjWyhjWyhjW3A+PjJdfDApKzE2Pj4yXXwwKSsoY1tyPj4yXTw8NCkrMTI+PjJdPTB9Q2coY1twPj4yXXwwKTtjWyhjW3A+PjJdfDApKzIwPj4yXT1jW3I+PjJdO2lmKChjW3U+PjJdfDApPT03fChjW3U+PjJdfDApPT0zMDgyKXttaChjW3A+PjJdfDApO1RmKGNbcD4+Ml18MCxjW0E+PjJdfDApO2NbQT4+Ml09R2goY1twPj4yXXwwLDI1MDE2LHYpfDA7YnJlYWt9aWYoIShjW0E+PjJdfDApKXtGPWNbcD4+Ml18MDtjW3c+PjJdPWNbQj4+Ml07Y1tBPj4yXT1HaChGLDMxNTk0LHcpfDB9fWVsc2V7Y1toPj4yXT1jWyhjW3A+PjJdfDApKzk2KzI4Pj4yXTtjW0E+PjJdPUdoKGUsMzE0NTYsaCl8MH13aGlsZSgwKTtpZihjW0E+PjJdfDApe2llKGNbbj4+Ml18MCxjW0E+PjJdfDAsLTEpO1RmKGNbcD4+Ml18MCxjW0E+PjJdfDApfWlmKCEoY1t1Pj4yXXwwKSl7aT1FO3JldHVybn1xZShjW24+PjJdfDAsY1t1Pj4yXXwwKTtpPUU7cmV0dXJufWZ1bmN0aW9uIFVCKGIsZSl7Yj1ifDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wO2g9aTtpPWkrMTZ8MDtmPWgrNHwwO2c9aDtjW2Y+PjJdPWI7Y1tnPj4yXT1lO2lmKCgoY1tnPj4yXXwwKT49MD8oYVsoY1tmPj4yXXwwKSsxMz4+MF18MCk9PTA6MCk/KFlCKGNbKGNbZj4+Ml18MCkrMjE2Pj4yXXwwKXwwKT09MDowKWFbKGNbZj4+Ml18MCkrND4+MF09Y1tnPj4yXTtpPWg7cmV0dXJuIGRbKGNbZj4+Ml18MCkrND4+MF18MH1mdW5jdGlvbiBWQihhLGQpe2E9YXwwO2Q9ZHwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wO2s9aTtpPWkrMTZ8MDtmPWsrMTJ8MDtnPWsrOHwwO2g9ays0fDA7aj1rO2NbZz4+Ml09YTtjW2g+PjJdPWQ7aWYoIShjW2c+PjJdfDApKXtjW2Y+PjJdPTA7YT1jW2Y+PjJdfDA7aT1rO3JldHVybiBhfDB9bWcoY1tnPj4yXXwwKTtpZigoY1toPj4yXXwwKT49MD8oYT0oY1soY1tnPj4yXXwwKSs0Pj4yXXwwKSsyMnwwLGJbYT4+MV09KGVbYT4+MV18MCkmLTUsKGNbaD4+Ml18MCkhPTApOjApe2E9KGNbKGNbZz4+Ml18MCkrND4+Ml18MCkrMjJ8MDtiW2E+PjFdPWVbYT4+MV18MHw0fWNbaj4+Ml09KChlWyhjWyhjW2c+PjJdfDApKzQ+PjJdfDApKzIyPj4xXXwwKSY0fDApIT0wJjE7Y1tmPj4yXT1jW2o+PjJdO2E9Y1tmPj4yXXwwO2k9aztyZXR1cm4gYXwwfWZ1bmN0aW9uIFdCKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MDtkPWk7aT1pKzE2fDA7Zz1kKzh8MDtlPWQrNHwwO2Y9ZDtjW2c+PjJdPWE7Y1tlPj4yXT1iO2NbZj4+Ml09Y1soY1tnPj4yXXwwKSs0Pj4yXTttZyhjW2c+PjJdfDApO1hCKGNbY1tmPj4yXT4+Ml18MCxjW2U+PjJdfDApO2k9ZDtyZXR1cm4gMH1mdW5jdGlvbiBYQihiLGUpe2I9YnwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTA7aj1pO2k9aSsxNnwwO2c9ais4fDA7aD1qKzR8MDtmPWo7Y1tnPj4yXT1iO2NbaD4+Ml09ZTtjW2Y+PjJdPWNbaD4+Ml0mNztpZihhWyhjW2c+PjJdfDApKzEzPj4wXXwwKXthWyhjW2c+PjJdfDApKzc+PjBdPTE7YVsoY1tnPj4yXXwwKSs4Pj4wXT0wO2FbKGNbZz4+Ml18MCkrOT4+MF09MH1lbHNle2FbKGNbZz4+Ml18MCkrNz4+MF09KGNbZj4+Ml18MCk9PTE/MTowO2FbKGNbZz4+Ml18MCkrOD4+MF09KGNbZj4+Ml18MCk+Pj4wPj0zPzE6MDthWyhjW2c+PjJdfDApKzk+PjBdPShjW2Y+PjJdfDApPT00PzE6MH1kbyBpZighKGFbKGNbZz4+Ml18MCkrNz4+MF18MCkpe2lmKGNbaD4+Ml0mOCl7YVsoY1tnPj4yXXwwKSsxMj4+MF09MzthWyhjW2c+PjJdfDApKzEwPj4wXT0zO2JyZWFrfWU9KGNbaD4+Ml0mMTZ8MCkhPTA7YVsoY1tnPj4yXXwwKSsxMj4+MF09MjtmPShjW2c+PjJdfDApKzEwfDA7aWYoZSl7YVtmPj4wXT0zO2JyZWFrfWVsc2V7YVtmPj4wXT0yO2JyZWFrfX1lbHNle2FbKGNbZz4+Ml18MCkrMTI+PjBdPTA7YVsoY1tnPj4yXXwwKSsxMD4+MF09MH13aGlsZSgwKTthWyhjW2c+PjJdfDApKzExPj4wXT1hWyhjW2c+PjJdfDApKzEyPj4wXXwwO2lmKGFbKGNbZz4+Ml18MCkrOD4+MF18MCl7ZT0oY1tnPj4yXXwwKSsxMXwwO2FbZT4+MF09ZFtlPj4wXXwzMn1mPShjW2c+PjJdfDApKzIxfDA7Yj1kW2Y+PjBdfDA7aWYoY1toPj4yXSYzMil7YVtmPj4wXT1iJi0yO2k9ajtyZXR1cm59ZWxzZXthW2Y+PjBdPWJ8MTtpPWo7cmV0dXJufX1mdW5jdGlvbiBZQihhKXthPWF8MDt2YXIgYj0wLGU9MDtlPWk7aT1pKzE2fDA7Yj1lO2NbYj4+Ml09YTtpZighKGNbYj4+Ml18MCkpe2E9MDthPWEmMTtpPWU7cmV0dXJuIGF8MH1hPShkWyhjW2I+PjJdfDApKzQzPj4wXXwwfDApPT0yO2E9YSYxO2k9ZTtyZXR1cm4gYXwwfWZ1bmN0aW9uIFpCKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wO2o9aTtpPWkrMzJ8MDtkPWorMTZ8MDtlPWorMTJ8MDtmPWorOHwwO2c9ais0fDA7aD1qO2NbZD4+Ml09YTtjW2U+PjJdPWI7Y1tmPj4yXT1jW2NbZD4+Ml0+PjJdO2NbZz4+Ml09MDt3aGlsZSgxKXtpZigoY1tnPj4yXXwwKT49KGNbKGNbZj4+Ml18MCkrMjA+PjJdfDApKWJyZWFrO2NbaD4+Ml09KGNbKGNbZj4+Ml18MCkrMTY+PjJdfDApKyhjW2c+PjJdPDw0KTtkbyBpZihjWyhjW2g+PjJdfDApKzQ+PjJdfDApe2lmKChjW2U+PjJdfDApIT0wPzAhPShpZyhjW2U+PjJdfDAsY1tjW2g+PjJdPj4yXXwwKXwwKTowKWJyZWFrO3N4KGNbZD4+Ml18MCxjW2c+PjJdfDApfXdoaWxlKDApO2NbZz4+Ml09KGNbZz4+Ml18MCkrMX1pPWo7cmV0dXJufWZ1bmN0aW9uIF9CKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTA7bz1pO2k9aSs0OHwwO2w9bztkPW8rNDR8MDtlPW8rNDB8MDtqPW8rMzZ8MDtrPW8rMzJ8MDtnPW8rMjh8MDtoPW8rMjR8MDtmPW8rMjB8MDttPW8rMTZ8MDtuPW8rMTJ8MDtjW2Q+PjJdPWE7Y1tlPj4yXT1iO2NbZz4+Ml09Y1tjW2Q+PjJdPj4yXTtjW2g+PjJdPUZoKGNbY1tkPj4yXT4+Ml18MCxjWyhjW2U+PjJdfDApKzIwPj4yXXwwKXwwO2Nbaj4+Ml09JEIoY1tlPj4yXXwwKXwwO2NbZj4+Ml09MTY7Y1ttPj4yXT1jWyhjWyhjW2c+PjJdfDApKzE2Pj4yXXwwKSsoY1toPj4yXTw8NCk+PjJdO2Nbbj4+Ml09KGNbaD4+Ml18MCk9PTE/MTk5MDU6MTk5MjQ7aWYoKGNbaD4+Ml18MCk9PTEpY1tmPj4yXT0xNDtpZihheChjW2Q+PjJdfDAsY1tmPj4yXXwwLGNbY1tlPj4yXT4+Ml18MCxjW2Nbaj4+Ml0+PjJdfDAsY1ttPj4yXXwwKXwwKXtpPW87cmV0dXJufWlmKGF4KGNbZD4+Ml18MCw5LGNbbj4+Ml18MCwwLGNbbT4+Ml18MCl8MCl7aT1vO3JldHVybn1uPWR4KGNbZD4+Ml18MCl8MDtjW2s+PjJdPW47aWYoIW4pe2k9bztyZXR1cm59bj1jW2Q+PjJdfDA7Yj0oY1toPj4yXXwwKT09MT8xOTkwNToxOTkyNDttPWNbY1tlPj4yXT4+Ml18MDtjW2w+PjJdPWNbKGNbKGNbZz4+Ml18MCkrMTY+PjJdfDApKyhjW2g+PjJdPDw0KT4+Ml07Y1tsKzQ+PjJdPWI7Y1tsKzg+PjJdPW07Y3gobiwzMTY0MixsKTtleChjW2Q+PjJdfDAsY1toPj4yXXwwKTtteChjW2s+PjJdfDAsMTQwLGNbaD4+Ml18MCwwLDAsY1tjW2U+PjJdPj4yXXwwLDApfDA7aT1vO3JldHVybn1mdW5jdGlvbiAkQihhKXthPWF8MDt2YXIgYj0wLGQ9MDtiPWk7aT1pKzE2fDA7ZD1iO2NbZD4+Ml09YTthPXNqKChjWyhjW2Q+PjJdfDApKzI0Pj4yXXwwKSs4fDAsY1soY1tkPj4yXXwwKSs0Pj4yXXwwKXwwO2k9YjtyZXR1cm4gYXwwfWZ1bmN0aW9uIGFDKGIsZCxlKXtiPWJ8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTA7az1pO2k9aSszMnwwO2w9aysxMnwwO2Y9aysxNnwwO2c9ays4fDA7aD1rKzR8MDtqPWs7Y1tsPj4yXT1iO2FbZj4+MF09ZDtjW2c+PjJdPWU7Y1toPj4yXT1zaChjW2w+PjJdfDAsMzYrKGNbKGNbZz4+Ml18MCkrND4+Ml18MCkrMXwwLDApfDA7aWYoIShjW2g+PjJdfDApKXtsPWNbaD4+Ml18MDtpPWs7cmV0dXJuIGx8MH1jW2o+PjJdPShjW2g+PjJdfDApKzM2O1RSKGNbaj4+Ml18MCxjW2NbZz4+Ml0+PjJdfDAsY1soY1tnPj4yXXwwKSs0Pj4yXXwwKXwwO1p3KGNbaj4+Ml18MCk7Y1soY1toPj4yXXwwKSsxMj4+Ml09Y1tqPj4yXTthW2NbaD4+Ml0+PjBdPWFbZj4+MF18MDtsPWNbaD4+Ml18MDtpPWs7cmV0dXJuIGx8MH1mdW5jdGlvbiBiQyhhLGQpe2E9YXwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wO2g9aTtpPWkrMTZ8MDtlPWgrMTJ8MDtqPWgrOHwwO2Y9aCs0fDA7Zz1oO2NbZT4+Ml09YTtjW2o+PjJdPWQ7Y1tmPj4yXT0oY1tqPj4yXXwwKSs4O2NbZz4+Ml09cHgoY1tlPj4yXXwwLDAsY1tmPj4yXXwwKXwwO1JmKGNbY1tlPj4yXT4+Ml18MCxjWyhjW2Y+PjJdfDApKzE2Pj4yXXwwKTtjWyhjW2Y+PjJdfDApKzE2Pj4yXT1jW2c+PjJdO2lmKGNbZz4+Ml18MCl7aj0oY1tnPj4yXXwwKSszNnwwO2Jbaj4+MV09KGJbaj4+MV18MCkrMTw8MTY+PjE2fWlmKCEocHooY1tlPj4yXXwwLGNbZj4+Ml18MCl8MCkpe2o9Y1tnPj4yXXwwO2k9aDtyZXR1cm4ganwwfWNbZz4+Ml09MDtqPWNbZz4+Ml18MDtpPWg7cmV0dXJuIGp8MH1mdW5jdGlvbiBjQyhhLGIsZCxlLGYpe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTA7Zz1pO2k9aSszMnwwO2g9ZysyMHwwO249ZysxNnwwO2o9ZysxMnwwO2w9Zys4fDA7az1nKzR8MDttPWc7Y1toPj4yXT1hO2Nbbj4+Ml09YjtjW2o+PjJdPWQ7Y1tsPj4yXT1lO2Nbaz4+Ml09ZjtjW20+PjJdPWNbY1tuPj4yXT4+Ml07Y1tjW2g+PjJdPj4yXT1jW24+PjJdO2NbKGNbaD4+Ml18MCkrMTI+PjJdPWNbKGNbKGNbbT4+Ml18MCkrMTY+PjJdfDApKyhjW2o+PjJdPDw0KT4+Ml07Y1soY1toPj4yXXwwKSs0Pj4yXT1jWyhjWyhjW20+PjJdfDApKzE2Pj4yXXwwKSsoY1tqPj4yXTw8NCkrMTI+PjJdO2NbKGNbaD4+Ml18MCkrMTY+PjJdPWNbbD4+Ml07Y1soY1toPj4yXXwwKSsyMD4+Ml09Y1trPj4yXTtjWyhjW2g+PjJdfDApKzg+PjJdPShjW2o+PjJdfDApPT0xJjE7aT1nO3JldHVybn1mdW5jdGlvbiBkQyhhLGIpe2E9YXwwO2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wO2w9aTtpPWkrNDh8MDtrPWw7Zz1sKzMyfDA7aD1sKzI4fDA7ZD1sKzI0fDA7ZT1sKzIwfDA7Zj1sKzE2fDA7aj1sKzEyfDA7Y1toPj4yXT1hO2NbZD4+Ml09YjtpZighKGNbZD4+Ml18MCkpe2NbZz4+Ml09MDtrPWNbZz4+Ml18MDtpPWw7cmV0dXJuIGt8MH1jW2Y+PjJdPWNbKGNbaD4+Ml18MCkrMTI+PjJdO2NbZT4+Ml09MDtjW2o+PjJdPShjW2Q+PjJdfDApKzg7d2hpbGUoMSl7aWYoKGNbZT4+Ml18MCk+PShjW2NbZD4+Ml0+PjJdfDApKXtkPTE1O2JyZWFrfWlmKCEoY1soY1toPj4yXXwwKSs4Pj4yXXwwKSl7aWYoKGNbKGNbaj4+Ml18MCkrND4+Ml18MCkhPTA/KGlnKGNbKGNbaj4+Ml18MCkrND4+Ml18MCxjW2Y+PjJdfDApfDApIT0wOjApe2Q9ODticmVha31UZihjW2NbY1toPj4yXT4+Ml0+PjJdfDAsY1soY1tqPj4yXXwwKSs0Pj4yXXwwKTtjWyhjW2o+PjJdfDApKzQ+PjJdPTA7Y1tjW2o+PjJdPj4yXT1jWyhjW2g+PjJdfDApKzQ+PjJdfWlmKGVDKGNbaD4+Ml18MCxjWyhjW2o+PjJdfDApKzIwPj4yXXwwKXwwKXtkPTExO2JyZWFrfWlmKGZDKGNbaD4+Ml18MCxjWyhjW2o+PjJdfDApKzQ4Pj4yXXwwKXwwKXtkPTEzO2JyZWFrfWNbZT4+Ml09KGNbZT4+Ml18MCkrMTtjW2o+PjJdPShjW2o+PjJdfDApKzcyfWlmKChkfDApPT04KXtmPWNbY1toPj4yXT4+Ml18MDtiPWNbKGNbaD4+Ml18MCkrMjA+PjJdfDA7aj1jWyhjW2o+PjJdfDApKzQ+PjJdfDA7Y1trPj4yXT1jWyhjW2g+PjJdfDApKzE2Pj4yXTtjW2srND4+Ml09YjtjW2srOD4+Ml09ajtFaChmLDMxOTQwLGspO2NbZz4+Ml09MTtrPWNbZz4+Ml18MDtpPWw7cmV0dXJuIGt8MH1lbHNlIGlmKChkfDApPT0xMSl7Y1tnPj4yXT0xO2s9Y1tnPj4yXXwwO2k9bDtyZXR1cm4ga3wwfWVsc2UgaWYoKGR8MCk9PTEzKXtjW2c+PjJdPTE7az1jW2c+PjJdfDA7aT1sO3JldHVybiBrfDB9ZWxzZSBpZigoZHwwKT09MTUpe2NbZz4+Ml09MDtrPWNbZz4+Ml18MDtpPWw7cmV0dXJuIGt8MH1yZXR1cm4gMH1mdW5jdGlvbiBlQyhhLGIpe2E9YXwwO2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTA7Zz1pO2k9aSsxNnwwO2Y9Zys4fDA7ZD1nKzR8MDtlPWc7Y1tkPj4yXT1hO2NbZT4+Ml09Yjt3aGlsZSgxKXtpZighKGNbZT4+Ml18MCkpe2Q9MjA7YnJlYWt9aWYoZ0MoY1tkPj4yXXwwLGNbY1tlPj4yXT4+Ml18MCl8MCl7ZD00O2JyZWFrfWlmKGRDKGNbZD4+Ml18MCxjWyhjW2U+PjJdfDApKzI4Pj4yXXwwKXwwKXtkPTY7YnJlYWt9aWYoZkMoY1tkPj4yXXwwLGNbKGNbZT4+Ml18MCkrMzI+PjJdfDApfDApe2Q9ODticmVha31pZihnQyhjW2Q+PjJdfDAsY1soY1tlPj4yXXwwKSszNj4+Ml18MCl8MCl7ZD0xMDticmVha31pZihmQyhjW2Q+PjJdfDAsY1soY1tlPj4yXXwwKSs0MD4+Ml18MCl8MCl7ZD0xMjticmVha31pZihnQyhjW2Q+PjJdfDAsY1soY1tlPj4yXXwwKSs0ND4+Ml18MCl8MCl7ZD0xNDticmVha31pZihmQyhjW2Q+PjJdfDAsY1soY1tlPj4yXXwwKSs1Nj4+Ml18MCl8MCl7ZD0xNjticmVha31pZihmQyhjW2Q+PjJdfDAsY1soY1tlPj4yXXwwKSs2MD4+Ml18MCl8MCl7ZD0xODticmVha31jW2U+PjJdPWNbKGNbZT4+Ml18MCkrNDg+PjJdfWlmKChkfDApPT00KWNbZj4+Ml09MTtlbHNlIGlmKChkfDApPT02KWNbZj4+Ml09MTtlbHNlIGlmKChkfDApPT04KWNbZj4+Ml09MTtlbHNlIGlmKChkfDApPT0xMCljW2Y+PjJdPTE7ZWxzZSBpZigoZHwwKT09MTIpY1tmPj4yXT0xO2Vsc2UgaWYoKGR8MCk9PTE0KWNbZj4+Ml09MTtlbHNlIGlmKChkfDApPT0xNiljW2Y+PjJdPTE7ZWxzZSBpZigoZHwwKT09MTgpY1tmPj4yXT0xO2Vsc2UgaWYoKGR8MCk9PTIwKWNbZj4+Ml09MDtpPWc7cmV0dXJuIGNbZj4+Ml18MH1mdW5jdGlvbiBmQyhiLGUpe2I9YnwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wO2s9aTtpPWkrMTZ8MDtqPWs7Zz1rKzEyfDA7aD1rKzh8MDtmPWsrNHwwO2NbaD4+Ml09YjtjW2Y+PjJdPWU7d2hpbGUoMSl7aWYoIShjW2Y+PjJdfDApKXtlPTE2O2JyZWFrfWlmKChkW2NbZj4+Ml0+PjBdfDApPT0xMzUpe2lmKCEoYVsoY1tjW2NbaD4+Ml0+PjJdPj4yXXwwKSsxNDgrNT4+MF18MCkpe2U9NjticmVha31hW2NbZj4+Ml0+PjBdPTEwMX1pZihjWyhjW2Y+PjJdfDApKzQ+PjJdJjg0MDQ5OTIpe2U9MTY7YnJlYWt9ZT1jW2g+PjJdfDA7Yj0oY1tmPj4yXXwwKSsyMHwwO2lmKGNbKGNbZj4+Ml18MCkrND4+Ml0mMjA0OCl7aWYoZUMoZSxjW2I+PjJdfDApfDApe2U9MTA7YnJlYWt9fWVsc2UgaWYoZ0MoZSxjW2I+PjJdfDApfDApe2U9MTI7YnJlYWt9aWYoZkMoY1toPj4yXXwwLGNbKGNbZj4+Ml18MCkrMTY+PjJdfDApfDApe2U9MTQ7YnJlYWt9Y1tmPj4yXT1jWyhjW2Y+PjJdfDApKzEyPj4yXX1pZigoZXwwKT09Nil7Zj1jW2NbaD4+Ml0+PjJdfDA7Y1tqPj4yXT1jWyhjW2g+PjJdfDApKzE2Pj4yXTtFaChmLDMxOTg2LGopO2NbZz4+Ml09MTtqPWNbZz4+Ml18MDtpPWs7cmV0dXJuIGp8MH1lbHNlIGlmKChlfDApPT0xMCl7Y1tnPj4yXT0xO2o9Y1tnPj4yXXwwO2k9aztyZXR1cm4ganwwfWVsc2UgaWYoKGV8MCk9PTEyKXtjW2c+PjJdPTE7aj1jW2c+PjJdfDA7aT1rO3JldHVybiBqfDB9ZWxzZSBpZigoZXwwKT09MTQpe2NbZz4+Ml09MTtqPWNbZz4+Ml18MDtpPWs7cmV0dXJuIGp8MH1lbHNlIGlmKChlfDApPT0xNil7Y1tnPj4yXT0wO2o9Y1tnPj4yXXwwO2k9aztyZXR1cm4ganwwfXJldHVybiAwfWZ1bmN0aW9uIGdDKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wO2o9aTtpPWkrMzJ8MDtoPWorMTZ8MDtkPWorMTJ8MDtlPWorOHwwO2Y9ais0fDA7Zz1qO2NbZD4+Ml09YTtjW2U+PjJdPWI7aWYoIShjW2U+PjJdfDApKXtjW2g+PjJdPTA7aD1jW2g+PjJdfDA7aT1qO3JldHVybiBofDB9Y1tmPj4yXT0wO2NbZz4+Ml09Y1soY1tlPj4yXXwwKSs0Pj4yXTt3aGlsZSgxKXtpZigoY1tmPj4yXXwwKT49KGNbY1tlPj4yXT4+Ml18MCkpe2Q9ODticmVha31pZihmQyhjW2Q+PjJdfDAsY1tjW2c+PjJdPj4yXXwwKXwwKXtkPTY7YnJlYWt9Y1tmPj4yXT0oY1tmPj4yXXwwKSsxO2NbZz4+Ml09KGNbZz4+Ml18MCkrMjB9aWYoKGR8MCk9PTYpe2NbaD4+Ml09MTtoPWNbaD4+Ml18MDtpPWo7cmV0dXJuIGh8MH1lbHNlIGlmKChkfDApPT04KXtjW2g+PjJdPTA7aD1jW2g+PjJdfDA7aT1qO3JldHVybiBofDB9cmV0dXJuIDB9ZnVuY3Rpb24gaEMoYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wO2c9aTtpPWkrMTZ8MDtmPWcrOHwwO2Q9Zys0fDA7ZT1nO2NbZD4+Ml09YTtjW2U+PjJdPWI7d2hpbGUoMSl7aWYoIShjW2U+PjJdfDApKXtkPTEwO2JyZWFrfWlmKGVDKGNbZD4+Ml18MCxjWyhjW2U+PjJdfDApKzg+PjJdfDApfDApe2Q9NDticmVha31pZihmQyhjW2Q+PjJdfDAsY1soY1tlPj4yXXwwKSsxNj4+Ml18MCl8MCl7ZD02O2JyZWFrfWlmKGdDKGNbZD4+Ml18MCxjWyhjW2U+PjJdfDApKzIwPj4yXXwwKXwwKXtkPTg7YnJlYWt9Y1tlPj4yXT1jWyhjW2U+PjJdfDApKzI4Pj4yXX1pZigoZHwwKT09NCljW2Y+PjJdPTE7ZWxzZSBpZigoZHwwKT09NiljW2Y+PjJdPTE7ZWxzZSBpZigoZHwwKT09OCljW2Y+PjJdPTE7ZWxzZSBpZigoZHwwKT09MTApY1tmPj4yXT0wO2k9ZztyZXR1cm4gY1tmPj4yXXwwfWZ1bmN0aW9uIGlDKGEpe2E9YXwwO3ZhciBkPTAsZT0wO2Q9aTtpPWkrMTZ8MDtlPWQ7Y1tlPj4yXT1hO2E9KGNbZT4+Ml18MCkrMTQ0fDA7YlthPj4xXT1iW2E+PjFdJi0zM3wzMjtpPWQ7cmV0dXJufWZ1bmN0aW9uIGpDKGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wO2g9aTtpPWkrMTZ8MDtlPWgrOHwwO2Y9aCs0fDA7Zz1oO2NbZT4+Ml09YTtjW2Y+PjJdPWI7Y1tnPj4yXT1kO2lmKCEoY1tnPj4yXXwwKSl7aT1oO3JldHVybn1oeChjW2U+PjJdfDAsMSxjW2c+PjJdfDApfDA7a0MoY1tlPj4yXXwwLGNbZj4+Ml18MCk7aXgoY1tlPj4yXXwwLDg3LDEsMSl8MDtpPWg7cmV0dXJufWZ1bmN0aW9uIGtDKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wO2Q9aTtpPWkrMTZ8MDtmPWQrNHwwO2U9ZDtjW2Y+PjJdPWE7Y1tlPj4yXT1iO3lDKGNbZj4+Ml18MCwxLGUpO2k9ZDtyZXR1cm59ZnVuY3Rpb24gbEMoYSxiLGQsZSl7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MDtmPWk7aT1pKzE2fDA7Zz1mKzEyfDA7aD1mKzh8MDtqPWY7Y1tnPj4yXT1hO2NbaD4+Ml09YjtiPWo7Y1tiPj4yXT1kO2NbYis0Pj4yXT1lO0VCKGNbZz4+Ml18MCw3NywwLDEsMCxqLC0xMyl8MDtrQyhjW2c+PjJdfDAsY1toPj4yXXwwKTtpeChjW2c+PjJdfDAsODcsMSwxKXwwO2k9ZjtyZXR1cm59ZnVuY3Rpb24gbUMoYSxkKXthPWF8MDtkPWR8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MDtoPWk7aT1pKzMyfDA7Zj1oKzE2fDA7az1oKzEyfDA7Zz1oKzR8MDtqPWg7Y1tmPj4yXT1hO2Nbaz4+Ml09ZDtjW2o+PjJdPWNbY1tmPj4yXT4+Ml07T0MoY1soY1tmPj4yXXwwKSsxMDA+PjJdfDAsKGVbKGNbZj4+Ml18MCkrMTQwPj4xXXwwKTw8MSk7VGYoY1tqPj4yXXwwLGNbKGNbZj4+Ml18MCkrMTAwPj4yXXwwKTtjW2c+PjJdPWNbaz4+Ml08PDE7YlsoY1tmPj4yXXwwKSsxNDA+PjFdPWNbaz4+Ml07YT1WdyhjW2o+PjJdfDAsKGNbZz4+Ml18MCkqNDB8MCwwKXwwO2NbaCs4Pj4yXT1hO2NbKGNbZj4+Ml18MCkrMTAwPj4yXT1hO2lmKCEoY1soY1tmPj4yXXwwKSsxMDA+PjJdfDApKXtpPWg7cmV0dXJufVBDKGNbKGNbZj4+Ml18MCkrMTAwPj4yXXwwLGNbZz4+Ml18MCxjW2NbZj4+Ml0+PjJdfDAsMSk7aT1oO3JldHVybn1mdW5jdGlvbiBuQyhiLGQsZixnLGgpe2I9YnwwO2Q9ZHwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO3ZhciBqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MDtyPWk7aT1pKzMyfDA7aj1yKzI4fDA7az1yKzI0fDA7bD1yKzIwfDA7bT1yKzE2fDA7bj1yKzEyfDA7bz1yKzh8MDtxPXIrNHwwO3A9cjtjW2s+PjJdPWI7Y1tsPj4yXT1kO2NbbT4+Ml09ZjtjW24+PjJdPWc7Y1tvPj4yXT1oO2lmKGFbKGNbY1trPj4yXT4+Ml18MCkrNjk+PjBdfDApe2Nbaj4+Ml09NztnPWNbaj4+Ml18MDtpPXI7cmV0dXJuIGd8MH1lbHNle2c9KGNbbD4+Ml18MCkrKF8oY1ttPj4yXXwwLGVbKGNbaz4+Ml18MCkrMTQwPj4xXXwwKXwwKXwwO2NbcD4+Ml09KGNbKGNbaz4+Ml18MCkrMTAwPj4yXXwwKSsoZyo0MHwwKTtjW3E+PjJdPWdoKGNbcD4+Ml18MCxjW24+PjJdfDAsLTEsMSxjW28+PjJdfDApfDA7Y1tqPj4yXT1jW3E+PjJdO2c9Y1tqPj4yXXwwO2k9cjtyZXR1cm4gZ3wwfXJldHVybiAwfWZ1bmN0aW9uIG9DKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTA7Zj1pO2k9aSsxNnwwO2I9Zis0fDA7ZD1mO2NbZD4+Ml09YTtkbyBpZihjW2Q+PjJdfDApe2lmKCEoaWcoY1tkPj4yXXwwLDMyMTkyKXwwKSl7Y1tiPj4yXT0xO2JyZWFrfWlmKCEoaWcoY1tkPj4yXXwwLDMyMTg1KXwwKSljW2I+PjJdPTA7ZWxzZSBlPTZ9ZWxzZSBlPTY7d2hpbGUoMCk7aWYoKGV8MCk9PTYpY1tiPj4yXT0tMTtpPWY7cmV0dXJuIGNbYj4+Ml18MH1mdW5jdGlvbiBwQyhhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTA7ZT1pO2k9aSsxNnwwO2I9ZSs0fDA7ZD1lO2NbZD4+Ml09YTtpZigoY1tkPj4yXXwwKT09NiljW2I+PjJdPTA7ZWxzZSBjW2I+PjJdPWNbNTQyMCsoY1tkPj4yXTw8Mik+PjJdO2k9ZTtyZXR1cm4gY1tiPj4yXXwwfWZ1bmN0aW9uIHFDKGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTA7Zz1pO2k9aSsxNnwwO2U9Zys4fDA7Zj1nO2NbZT4+Ml09YTthPWY7Y1thPj4yXT1iO2NbYSs0Pj4yXT1kO2E9ZjtkPWNbYSs0Pj4yXXwwO2lmKChkfDApPi0xfChkfDApPT0tMSYoY1thPj4yXXwwKT4+PjA+PTQyOTQ5NjcyOTUpe2I9ZjtkPWNbYis0Pj4yXXwwO2E9KGNbZT4+Ml18MCkrMTY4fDA7Y1thPj4yXT1jW2I+PjJdO2NbYSs0Pj4yXT1kO2E9ZjtOQyhjWyhjW2U+PjJdfDApKzIxNj4+Ml18MCxjW2E+PjJdfDAsY1thKzQ+PjJdfDApfWE9KGNbZT4+Ml18MCkrMTY4fDA7Qz1jW2ErND4+Ml18MDtpPWc7cmV0dXJuIGNbYT4+Ml18MH1mdW5jdGlvbiByQyhiKXtiPWJ8MDt2YXIgZD0wLGU9MCxmPTA7Zj1pO2k9aSsxNnwwO2Q9Zis0fDA7ZT1mO2NbZD4+Ml09YjttZyhjW2Q+PjJdfDApO2lmKCEoYVsoY1soY1tkPj4yXXwwKSs0Pj4yXXwwKSsxNz4+MF18MCkpe2I9MDtjW2U+PjJdPWI7ZT1jW2U+PjJdfDA7aT1mO3JldHVybiBlfDB9Yj0oYVsoY1soY1tkPj4yXXwwKSs0Pj4yXXwwKSsxOD4+MF18MCkhPTBeMT8xOjI7Y1tlPj4yXT1iO2U9Y1tlPj4yXXwwO2k9ZjtyZXR1cm4gZXwwfWZ1bmN0aW9uIHNDKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTA7Zj1pO2k9aSsxNnwwO2I9Zis4fDA7ZD1mKzR8MDtlPWY7Y1tkPj4yXT1hO2RvIGlmKGlnKGNbZD4+Ml18MCwzMzI2Myl8MCl7aWYoIShpZyhjW2Q+PjJdfDAsMzI3MDcpfDApKXtjW2I+PjJdPTE7YnJlYWt9aWYoIShpZyhjW2Q+PjJdfDAsMzMyNjgpfDApKXtjW2I+PjJdPTI7YnJlYWt9ZWxzZXtjW2U+PjJdPVBpKGNbZD4+Ml18MCl8MDtjW2I+PjJdPSgoY1tlPj4yXXwwKT49MCYoY1tlPj4yXXwwKTw9Mj9jW2U+PjJdfDA6MCkmMjU1O2JyZWFrfX1lbHNlIGNbYj4+Ml09MDt3aGlsZSgwKTtpPWY7cmV0dXJuIGNbYj4+Ml18MH1mdW5jdGlvbiB0QyhiLGYpe2I9YnwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wLG09MDtrPWk7aT1pKzMyfDA7bD1rKzEyfDA7bT1rKzh8MDtoPWsrNHwwO2o9aztnPWsrMTZ8MDtjW2w+PjJdPWI7Y1ttPj4yXT1mO2NbaD4+Ml09Y1soY1tsPj4yXXwwKSs0Pj4yXTtjW2o+PjJdPTA7YVtnPj4wXT1jW20+PjJdO21nKGNbbD4+Ml18MCk7aWYoKChlWyhjW2g+PjJdfDApKzIyPj4xXXwwKSYyfDApIT0wPygoKGRbZz4+MF18MHwwKSE9MD8xOjApfDApIT0oZFsoY1toPj4yXXwwKSsxNz4+MF18MHwwKTowKXtjW2o+PjJdPTg7bT1jW2o+PjJdfDA7aT1rO3JldHVybiBtfDB9YVsoY1toPj4yXXwwKSsxNz4+MF09KGRbZz4+MF18MHwwKSE9MD8xOjA7YVsoY1toPj4yXXwwKSsxOD4+MF09KGRbZz4+MF18MHwwKT09Mj8xOjA7bT1jW2o+PjJdfDA7aT1rO3JldHVybiBtfDB9ZnVuY3Rpb24gdUMoYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MDtlPWk7aT1pKzE2fDA7aD1lKzEyfDA7Zj1lKzh8MDtnPWUrNHwwO2Q9ZTtjW2g+PjJdPWE7Y1tmPj4yXT1iO2NbZz4+Ml09Y1soY1toPj4yXXwwKSs0Pj4yXTttZyhjW2g+PjJdfDApO2NbZD4+Ml09TEMoY1tjW2c+PjJdPj4yXXwwLGNbZj4+Ml18MCl8MDtpPWU7cmV0dXJuIGNbZD4+Ml18MH1mdW5jdGlvbiB2QyhiKXtiPWJ8MDt2YXIgZT0wLGY9MCxnPTAsaD0wO2g9aTtpPWkrMTZ8MDtlPWgrOHwwO2c9aCs0fDA7Zj1oO2NbZT4+Ml09YjtpZighKGFbKGNbZT4+Ml18MCkrNjc+PjBdfDApKXtpPWg7cmV0dXJufWNbZz4+Ml09Y1soY1tlPj4yXXwwKSsxNj4+Ml07Y1tmPj4yXT1jWyhjW2U+PjJdfDApKzIwPj4yXTt3aGlsZSgxKXtiPWNbZj4+Ml18MDtjW2Y+PjJdPWIrLTE7aWYoKGJ8MCk8PTApYnJlYWs7aWYoY1soY1tnPj4yXXwwKSs0Pj4yXXwwKVdCKGNbKGNbZz4+Ml18MCkrND4+Ml18MCxkWyhjW2c+PjJdfDApKzg+PjBdfGNbKGNbZT4+Ml18MCkrMjQ+PjJdJjU2KXwwO2NbZz4+Ml09KGNbZz4+Ml18MCkrMTZ9aT1oO3JldHVybn1mdW5jdGlvbiB3QyhiLGUpe2I9YnwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MDtrPWk7aT1pKzMyfDA7Zj1rKzE2fDA7Zz1rKzEyfDA7bD1rKzh8MDtqPWsrNHwwO2g9aztjW2c+PjJdPWI7Y1tsPj4yXT1lO2Nbaj4+Ml09S0MoY1tsPj4yXXwwKXwwO2NbaD4+Ml09Y1tjW2c+PjJdPj4yXTtpZigoZFsoY1toPj4yXXwwKSs2OD4+MF18MHwwKT09KGNbaj4+Ml18MCkpe2NbZj4+Ml09MDtsPWNbZj4+Ml18MDtpPWs7cmV0dXJuIGx8MH1pZih4QyhjW2c+PjJdfDApfDApe2NbZj4+Ml09MTtsPWNbZj4+Ml18MDtpPWs7cmV0dXJuIGx8MH1lbHNle2FbKGNbaD4+Ml18MCkrNjg+PjBdPWNbaj4+Ml07Y1tmPj4yXT0wO2w9Y1tmPj4yXXwwO2k9aztyZXR1cm4gbHwwfXJldHVybiAwfWZ1bmN0aW9uIHhDKGIpe2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wO2g9aTtpPWkrMTZ8MDtnPWg7ZD1oKzEyfDA7ZT1oKzh8MDtmPWgrNHwwO2NbZT4+Ml09YjtjW2Y+PjJdPWNbY1tlPj4yXT4+Ml07ZG8gaWYoY1soY1soY1tmPj4yXXwwKSsxNj4+Ml18MCkrMTYrND4+Ml18MCl7aWYoKGFbKGNbZj4+Ml18MCkrNjc+PjBdfDApIT0wPyhvZyhjWyhjWyhjW2Y+PjJdfDApKzE2Pj4yXXwwKSsxNis0Pj4yXXwwKXwwKT09MDowKXtMQihjWyhjWyhjW2Y+PjJdfDApKzE2Pj4yXXwwKSsxNis0Pj4yXXwwKXwwO2NbKGNbKGNbZj4+Ml18MCkrMTY+PjJdfDApKzE2KzQ+PjJdPTA7Q2coY1tmPj4yXXwwKTticmVha31FaChjW2U+PjJdfDAsMzMyMDEsZyk7Y1tkPj4yXT0xO2c9Y1tkPj4yXXwwO2k9aDtyZXR1cm4gZ3wwfXdoaWxlKDApO2NbZD4+Ml09MDtnPWNbZD4+Ml18MDtpPWg7cmV0dXJuIGd8MH1mdW5jdGlvbiB5QyhhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTA7aj1pO2k9aSsxNnwwO2U9aisxMnwwO2Y9ais4fDA7Zz1qKzR8MDtoPWo7Y1tlPj4yXT1hO2NbZj4+Ml09YjtjW2c+PjJdPWQ7bUMoY1tlPj4yXXwwLGNbZj4+Ml18MCk7Y1toPj4yXT0wO3doaWxlKDEpe2lmKChjW2g+PjJdfDApPj0oY1tmPj4yXXwwKSlicmVhaztuQyhjW2U+PjJdfDAsY1toPj4yXXwwLDAsY1soY1tnPj4yXXwwKSsoY1toPj4yXTw8Mik+PjJdfDAsMCl8MDtjW2g+PjJdPShjW2g+PjJdfDApKzF9aT1qO3JldHVybn1mdW5jdGlvbiB6QyhiLGQsZSxmKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MDtvPWk7aT1pKzQ4fDA7Zz1vKzMyfDA7aD1vKzI4fDA7aj1vKzI0fDA7az1vKzh8MDttPW8rNHwwO2w9byszNnwwO249bztjW2c+PjJdPWI7Y1toPj4yXT1kO2Nbaj4+Ml09ZTtjW2s+PjJdPWY7Y1ttPj4yXT0wO3doaWxlKDEpe2U9YVsoY1tqPj4yXXwwKSsoY1ttPj4yXXwwKT4+MF18MDthW2w+PjBdPWU7aWYoIShlPDwyND4+MjQpKWJyZWFrO2lmKChhW2w+PjBdfDApPT0xMTUpe2Y9KGNbaz4+Ml18MCkrKDQtMSkmfig0LTEpO2I9Y1tmPj4yXXwwO2Nbaz4+Ml09Zis0O2Nbbj4+Ml09YjtiPWNbZz4+Ml18MDtmPShjW24+PjJdfDApPT0wPzc5Ojk3O2U9Y1toPj4yXXwwO2NbaD4+Ml09ZSsxO214KGIsZiwwLGUsMCxjW24+PjJdfDAsMCl8MH1lbHNle2I9Y1tnPj4yXXwwO2U9KGNbaz4+Ml18MCkrKDQtMSkmfig0LTEpO2Y9Y1tlPj4yXXwwO2Nbaz4+Ml09ZSs0O2U9Y1toPj4yXXwwO2NbaD4+Ml09ZSsxO2l4KGIsNzYsZixlKXwwfWNbbT4+Ml09KGNbbT4+Ml18MCkrMX1pPW87cmV0dXJufWZ1bmN0aW9uIEFDKGIpe2I9YnwwO3ZhciBlPTAsZj0wLGc9MDtmPWk7aT1pKzE2fDA7Zz1mKzR8MDtlPWY7YVtnPj4wXT1iO3N3aXRjaChkW2c+PjBdfDB8MCl7Y2FzZSA3OntjW2U+PjJdPTMzMDExO2JyZWFrfWNhc2UgODp7Y1tlPj4yXT0zMzAyMDticmVha31jYXNlIDk6e2NbZT4+Ml09MzMwMzI7YnJlYWt9Y2FzZSA2OntjW2U+PjJdPTMzMDQwO2JyZWFrfWRlZmF1bHQ6Y1tlPj4yXT0zMzA0OX1pPWY7cmV0dXJuIGNbZT4+Ml18MH1mdW5jdGlvbiBCQyhmLGcsaCxqLGspe2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO2s9a3wwO3ZhciBsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTA7RD1pO2k9aSs4MHwwO3k9RDtsPUQrNjR8MDttPUQrNjB8MDtuPUQrNTZ8MDtvPUQrNTJ8MDtwPUQrNDh8MDtxPUQrNDR8MDt4PUQrNDB8MDtyPUQrMzZ8MDt3PUQrMzJ8MDtCPUQrMjh8MDtzPUQrMjR8MDt0PUQrMjB8MDt2PUQrMTZ8MDt1PUQrNjh8MDt6PUQrMTJ8MDtBPUQrOHwwO2NbbT4+Ml09ZjtjW24+PjJdPWc7Y1tvPj4yXT1oO2NbcD4+Ml09ajtjW3E+PjJdPWs7Y1t4Pj4yXT0wO2Nbcj4+Ml09MDtjW3c+PjJdPWNbKGNbbz4+Ml18MCkrMjA+PjJdO2NbQj4+Ml09Y1soY1tvPj4yXXwwKSszNis0Pj4yXTtkbyBpZigoY1t3Pj4yXXwwKT09MSl7aWYoKGJbKGNbbj4+Ml18MCkrMzI+PjFdfDApPj0wKXtpZighKGNbQj4+Ml18MCkpe2NbbD4+Ml09MDtDPWNbbD4+Ml18MDtpPUQ7cmV0dXJuIEN8MH1pZighKGlnKGNbKGNbKGNbbj4+Ml18MCkrND4+Ml18MCkrKGJbKGNbbj4+Ml18MCkrMzI+PjFdPDw0KT4+Ml18MCxjW0I+PjJdfDApfDApKXtjW2w+PjJdPTA7Qz1jW2w+PjJdfDA7aT1EO3JldHVybiBDfDB9fX1lbHNlIGlmKGNbcT4+Ml18MCl7Y1tyPj4yXT1WdyhjW2NbbT4+Ml0+PjJdfDAsY1t3Pj4yXTw8MiwwKXwwO2lmKGNbcj4+Ml18MCl7Y1tjW3E+PjJdPj4yXT1jW3I+PjJdO2JyZWFrfWNbbD4+Ml09MTtDPWNbbD4+Ml18MDtpPUQ7cmV0dXJuIEN8MH13aGlsZSgwKTtjW3g+PjJdPWNbKGNbbj4+Ml18MCkrOD4+Ml07YTp3aGlsZSgxKXtpZighKGNbeD4+Ml18MCkpYnJlYWs7ZG8gaWYoKGVbKGNbeD4+Ml18MCkrNTA+PjFdfDApPT0oY1t3Pj4yXXwwKT8oZFsoY1t4Pj4yXXwwKSs1ND4+MF18MCkhPTA6MCl7aWYoIShjW0I+PjJdfDApKWlmKChhWyhjW3g+PjJdfDApKzU1Pj4wXSYzfDApPT0yKXtDPTE3O2JyZWFrIGF9ZWxzZSBicmVhaztjW3Q+PjJdPTA7d2hpbGUoMSl7aWYoKGNbdD4+Ml18MCk+PShjW3c+PjJdfDApKWJyZWFrO2JbdT4+MV09YlsoY1soY1t4Pj4yXXwwKSs0Pj4yXXwwKSsoY1t0Pj4yXTw8MSk+PjFdfDA7aWYoKGJbdT4+MV18MCk8MClicmVhaztqPWNbKGNbKGNbbj4+Ml18MCkrND4+Ml18MCkrKGJbdT4+MV08PDQpKzg+PjJdfDA7Y1t6Pj4yXT1qO2Nbej4+Ml09KGNbej4+Ml18MCkhPTA/ajozNDgzNDtpZihpZyhjWyhjWyhjW3g+PjJdfDApKzMyPj4yXXwwKSsoY1t0Pj4yXTw8Mik+PjJdfDAsY1t6Pj4yXXwwKXwwKWJyZWFrO2NbQT4+Ml09Y1soY1soY1tuPj4yXXwwKSs0Pj4yXXwwKSsoYlt1Pj4xXTw8NCk+PjJdO2Nbdj4+Ml09MDt3aGlsZSgxKXtpZigoY1t2Pj4yXXwwKT49KGNbdz4+Ml18MCkpYnJlYWs7aWYoIShpZyhjWyhjW28+PjJdfDApKzM2KyhjW3Y+PjJdPDwzKSs0Pj4yXXwwLGNbQT4+Ml18MCl8MCkpe0M9Mjg7YnJlYWt9Y1t2Pj4yXT0oY1t2Pj4yXXwwKSsxfWlmKChDfDApPT0yOD8oQz0wLChjW3I+PjJdfDApIT0wKTowKWNbKGNbcj4+Ml18MCkrKGNbdD4+Ml08PDIpPj4yXT1jWyhjW28+PjJdfDApKzM2KyhjW3Y+PjJdPDwzKT4+Ml07aWYoKGNbdj4+Ml18MCk9PShjW3c+PjJdfDApKWJyZWFrO2NbdD4+Ml09KGNbdD4+Ml18MCkrMX1pZigoY1t0Pj4yXXwwKT09KGNbdz4+Ml18MCkpYnJlYWsgYX13aGlsZSgwKTtjW3g+PjJdPWNbKGNbeD4+Ml18MCkrMjA+PjJdfWI6ZG8gaWYoKEN8MCk9PTE3PyhjW3I+PjJdfDApIT0wOjApe2Nbcz4+Ml09MDt3aGlsZSgxKXtpZigoY1tzPj4yXXwwKT49KGNbdz4+Ml18MCkpYnJlYWsgYjtjWyhjW3I+PjJdfDApKyhjW3M+PjJdPDwyKT4+Ml09Y1soY1tvPj4yXXwwKSszNisoY1tzPj4yXTw8Myk+PjJdO2Nbcz4+Ml09KGNbcz4+Ml18MCkrMX19d2hpbGUoMCk7aWYoY1t4Pj4yXXwwKXtjW2NbcD4+Ml0+PjJdPWNbeD4+Ml07Y1tsPj4yXT0wO0M9Y1tsPj4yXXwwO2k9RDtyZXR1cm4gQ3wwfWlmKCEoYVsoY1ttPj4yXXwwKSsxNTA+PjBdfDApKXtDPWNbbT4+Ml18MDtCPWNbKGNbbz4+Ml18MCkrOD4+Ml18MDtjW3k+PjJdPWNbY1tjW28+PjJdPj4yXT4+Ml07Y1t5KzQ+PjJdPUI7RWgoQywzMjk0OCx5KX1UZihjW2NbbT4+Ml0+PjJdfDAsY1tyPj4yXXwwKTtjW2w+PjJdPTE7Qz1jW2w+PjJdfDA7aT1EO3JldHVybiBDfDB9ZnVuY3Rpb24gQ0MoZCxmKXtkPWR8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MDtvPWk7aT1pKzMyfDA7aD1vKzE2fDA7Zz1vKzEyfDA7aj1vKzh8MDtsPW8rNHwwO209bztuPW8rMjB8MDtrPW8rMjJ8MDtjW2c+PjJdPWQ7Y1tqPj4yXT1mO2lmKCEoY1soY1tqPj4yXXwwKSsxNj4+Ml18MCkpe2NbbT4+Ml09Y1soY1tqPj4yXXwwKSsxMj4+Ml07Zj0oZVsoY1tqPj4yXXwwKSs1Mj4+MV18MCkrMXwwO2Y9Q2goMCxmLCgoZnwwKTwwKTw8MzE+PjMxKXwwO2NbKGNbaj4+Ml18MCkrMTY+PjJdPWY7aWYoIShjWyhjW2o+PjJdfDApKzE2Pj4yXXwwKSl7bWgoY1tnPj4yXXwwKTtjW2g+PjJdPTA7bj1jW2g+PjJdfDA7aT1vO3JldHVybiBufDB9Y1tsPj4yXT0wO3doaWxlKDEpe2c9Y1tsPj4yXXwwO2Q9Y1tqPj4yXXwwO2lmKChjW2w+PjJdfDApPj0oZVsoY1tqPj4yXXwwKSs1Mj4+MV18MCkpYnJlYWs7YltuPj4xXT1iWyhjW2QrND4+Ml18MCkrKGc8PDEpPj4xXXwwO2c9YltuPj4xXXwwO2RvIGlmKChiW24+PjFdfDApPDApe2Q9Y1tsPj4yXXwwO2Y9Y1tqPj4yXXwwO2lmKChnfDApPT0tMSl7YVsoY1tmKzE2Pj4yXXwwKStkPj4wXT02ODticmVha31lbHNle2Y9ZXkoY1soY1soY1tmKzQwPj4yXXwwKSs0Pj4yXXwwKSsoZCoyMHwwKT4+Ml18MCl8MDthW2s+PjBdPWY7YVtrPj4wXT0oYVtrPj4wXXwwKT09MD82NTpmO2FbKGNbKGNbaj4+Ml18MCkrMTY+PjJdfDApKyhjW2w+PjJdfDApPj4wXT1hW2s+PjBdfDA7YnJlYWt9fWVsc2UgYVsoY1soY1tqPj4yXXwwKSsxNj4+Ml18MCkrKGNbbD4+Ml18MCk+PjBdPWFbKGNbKGNbbT4+Ml18MCkrND4+Ml18MCkrKGc8PDQpKzEzPj4wXXwwO3doaWxlKDApO2NbbD4+Ml09KGNbbD4+Ml18MCkrMX1hWyhjW2QrMTY+PjJdfDApK2c+PjBdPTB9Y1toPj4yXT1jWyhjW2o+PjJdfDApKzE2Pj4yXTtuPWNbaD4+Ml18MDtpPW87cmV0dXJuIG58MH1mdW5jdGlvbiBEQyhhLGIpe2E9YXwwO2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTA7Zz1pO2k9aSsxNnwwO2Q9Zys4fDA7ZT1nKzR8MDtmPWc7Y1tkPj4yXT1hO2NbZT4+Ml09YjtpZihjW2U+PjJdfDApY1tmPj4yXT0zMjg1NjtlbHNlIGNbZj4+Ml09MTgzOTg7amkoY1tkPj4yXXwwLDMyODYwLDIsMSxjW2Y+PjJdfDAsMjEyLDAsMCwwKXwwO2ppKGNbZD4+Ml18MCwzMjg2MCwzLDEsY1tmPj4yXXwwLDIxMiwwLDAsMCl8MDtqaShjW2Q+PjJdfDAsMzI4NjUsMiwxLDE4Mzk0LDIxMiwwLDAsMCl8MDtJQyhjW2Q+PjJdfDAsMzI4NjUsMTIpO0lDKGNbZD4+Ml18MCwzMjg2MCwoKGNbZT4+Ml18MCkhPTA/MTI6NCkmMjU1KTtpPWc7cmV0dXJufWZ1bmN0aW9uIEVDKGIpe2I9YnwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wO2c9aTtpPWkrMTZ8MDtlPWcrNHwwO2Y9ZztjW2U+PjJdPWI7Y1tmPj4yXT0wO3doaWxlKDEpe2lmKChjW2Y+PjJdfDApPj0oZFsoY1tlPj4yXXwwKSsyNT4+MF18MHwwKSlicmVhaztpZigoZFsoY1tlPj4yXXwwKSsxNTIrKChjW2Y+PjJdfDApKjIwfDApKzY+PjBdfDB8MCkhPTA/KGRbKGNbZT4+Ml18MCkrMTk+PjBdfDB8MCk8ODowKXtoPWNbKGNbZT4+Ml18MCkrMTUyKygoY1tmPj4yXXwwKSoyMHwwKSsxMj4+Ml18MDtqPShjW2U+PjJdfDApKzE5fDA7Yj1hW2o+PjBdfDA7YVtqPj4wXT1iKzE8PDI0Pj4yNDtjWyhjW2U+PjJdfDApKzM1MisoKGImMjU1KTw8Mik+PjJdPWh9Y1tmPj4yXT0oY1tmPj4yXXwwKSsxfWFbKGNbZT4+Ml18MCkrMjU+PjBdPTA7aT1nO3JldHVybn1mdW5jdGlvbiBGQyhiLGUsZixnLGgsaixrLGwpe2I9YnwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO2s9a3wwO2w9bHwwO3ZhciBtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wO0M9aTtpPWkrNjR8MDtwPUMrNTJ8MDtxPUMrNDh8MDtyPUMrNDR8MDtzPUMrNDB8MDt0PUMrNTZ8MDt1PUMrMzZ8MDt2PUMrMzJ8MDt3PUMrMjh8MDttPUMrMjR8MDt4PUMrMjB8MDt5PUMrMTZ8MDtuPUMrMTJ8MDtBPUMrOHwwO0I9Qys0fDA7ej1DO2NbcT4+Ml09YjtjW3I+PjJdPWU7Y1tzPj4yXT1mO2FbdD4+MF09ZztjW3U+PjJdPWg7Y1t2Pj4yXT1qO2Nbdz4+Ml09aztjW20+PjJdPWw7aWYoKGRbKGNbcj4+Ml18MCkrNDI+PjBdfDApJjE2KXtjW3A+PjJdPTA7Qj1jW3A+PjJdfDA7aT1DO3JldHVybiBCfDB9Y1t5Pj4yXT1GaChjW2NbcT4+Ml0+PjJdfDAsY1soY1tyPj4yXXwwKSs2ND4+Ml18MCl8MDtjW0I+PjJdPWR4KGNbcT4+Ml18MCl8MDtpZigoY1t1Pj4yXXwwKTwwKWNbdT4+Ml09Y1soY1txPj4yXXwwKSs0MD4+Ml07bD1jW3U+PjJdfDA7Y1t1Pj4yXT1sKzE7Y1tuPj4yXT1sO2lmKGNbdz4+Ml18MCljW2Nbdz4+Ml0+PjJdPWNbbj4+Ml07ZG8gaWYoISgoZFsoY1tyPj4yXXwwKSs0Mj4+MF18MCkmMzIpKXtpZigoY1t2Pj4yXXwwKSE9MD8oZFtjW3Y+PjJdPj4wXXwwfDApPT0wOjApe289MTE7YnJlYWt9VXooY1txPj4yXXwwLGNbbj4+Ml18MCxjW3k+PjJdfDAsY1tyPj4yXXwwLGNbcz4+Ml18MCl9ZWxzZSBvPTExO3doaWxlKDApO2lmKChvfDApPT0xMSlUeihjW3E+PjJdfDAsY1t5Pj4yXXwwLGNbKGNbcj4+Ml18MCkrMjg+PjJdfDAsKGNbcz4+Ml18MCk9PTEwNSYyNTUsY1tjW3I+PjJdPj4yXXwwKTtpZihjW20+PjJdfDApY1tjW20+PjJdPj4yXT1jW3U+PjJdO2NbeD4+Ml09MDtjW0E+PjJdPWNbKGNbcj4+Ml18MCkrOD4+Ml07d2hpbGUoMSl7bT1jW3U+PjJdfDA7aWYoIShjW0E+PjJdfDApKWJyZWFrO2NbdT4+Ml09bSsxO2Nbej4+Ml09bTtpZigoYVsoY1tBPj4yXXwwKSs1NT4+MF0mM3wwKT09Mj8oKGRbKGNbcj4+Ml18MCkrNDI+PjBdfDApJjMyfDApIT0wOjApe2lmKGNbdz4+Ml18MCljW2Nbdz4+Ml0+PjJdPWNbej4+Ml07YVt0Pj4wXT0wfWlmKCEoKGNbdj4+Ml18MCkhPTA/KGRbKGNbdj4+Ml18MCkrKChjW3g+PjJdfDApKzEpPj4wXXwwfDApPT0wOjApKXtqeChjW0I+PjJdfDAsY1tzPj4yXXwwLGNbej4+Ml18MCxjWyhjW0E+PjJdfDApKzQ0Pj4yXXwwLGNbeT4+Ml18MCl8MDtWeihjW3E+PjJdfDAsY1tBPj4yXXwwKTtKaChjW0I+PjJdfDAsYVt0Pj4wXXwwKX1jW0E+PjJdPWNbKGNbQT4+Ml18MCkrMjA+PjJdO2NbeD4+Ml09KGNbeD4+Ml18MCkrMX1pZigobXwwKT4oY1soY1txPj4yXXwwKSs0MD4+Ml18MCkpY1soY1txPj4yXXwwKSs0MD4+Ml09Y1t1Pj4yXTtjW3A+PjJdPWNbeD4+Ml07Qj1jW3A+PjJdfDA7aT1DO3JldHVybiBCfDB9ZnVuY3Rpb24gR0MoYSl7YT1hfDA7dmFyIGQ9MCxlPTA7ZD1pO2k9aSsxNnwwO2U9ZDtjW2U+PjJdPWE7YT0oY1tlPj4yXXwwKSsxNDR8MDtiW2E+PjFdPWJbYT4+MV0mLTMzO2k9ZDtyZXR1cm59ZnVuY3Rpb24gSEMoYSxiLGUpe2E9YXwwO2I9YnwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wO289aTtpPWkrNDh8MDtmPW8rMzZ8MDtnPW8rMzJ8MDtoPW8rMjh8MDtsPW8rMjR8MDttPW8rMjB8MDtqPW8rMTZ8MDtxPW8rMTJ8MDtwPW8rOHwwO2s9bys0fDA7bj1vO2NbZj4+Ml09YTtjW2c+PjJdPWI7Y1toPj4yXT1lO2NbcD4+Ml09dmUoY1tmPj4yXXwwKXwwO2Nbaz4+Ml09dWUoY1tmPj4yXXwwKXwwO2NbbT4+Ml09JGQoY1tjW2g+PjJdPj4yXXwwKXwwO2NbbD4+Ml09JGQoY1soY1toPj4yXXwwKSs0Pj4yXXwwKXwwO2NbcT4+Ml09YWUoY1tjW2g+PjJdPj4yXXwwKXwwO2lmKChjW3E+PjJdfDApPihjWyhjW3A+PjJdfDApKzk2KzMyPj4yXXwwKSl7aWUoY1tmPj4yXXwwLDMyODcwLC0xKTtpPW87cmV0dXJufWRvIGlmKChjW2c+PjJdfDApPT0zKXtjW24+PjJdPSRkKGNbKGNbaD4+Ml18MCkrOD4+Ml18MCl8MDtpZighKGNbbj4+Ml18MCkpe2k9bztyZXR1cm59aWYoKFd4KGNbbj4+Ml18MCwtMSl8MCk9PTEpe2Nbaj4+Ml09SkMobil8MDticmVha31pZShjW2Y+PjJdfDAsMzI5MDMsLTEpO2k9bztyZXR1cm59ZWxzZSBjW2o+PjJdPWRbKGNbaz4+Ml18MCkrMj4+MF07d2hpbGUoMCk7aWYoISgoY1tsPj4yXXwwKSE9MCYoY1ttPj4yXXwwKSE9MCkpe2k9bztyZXR1cm59cT1jW2Y+PjJdfDA7amUocSxUaChjW20+PjJdfDAsY1tsPj4yXXwwLGNbaz4+Ml18MCxjW2o+PjJdfDApfDApO2k9bztyZXR1cm59ZnVuY3Rpb24gSUMoZixnLGgpe2Y9ZnwwO2c9Z3wwO2g9aHwwO3ZhciBqPTAsaz0wLGw9MCxtPTAsbj0wO2w9aTtpPWkrMTZ8MDtuPWwrOHwwO209bCs0fDA7aj1sKzEyfDA7az1sO2Nbbj4+Ml09ZjtjW20+PjJdPWc7YVtqPj4wXT1oO2Nbaz4+Ml09a2koY1tuPj4yXXwwLGNbbT4+Ml18MCwyLDEsMCl8MDtpZighKGNbaz4+Ml18MCkpe2k9bDtyZXR1cm59bj0oY1trPj4yXXwwKSsyfDA7YltuPj4xXT1lW24+PjFdfDB8KGRbaj4+MF18MCk7aT1sO3JldHVybn1mdW5jdGlvbiBKQyhhKXthPWF8MDt2YXIgYj0wLGU9MCxmPTAsZz0wLGg9MDtmPWk7aT1pKzE2fDA7Yj1mKzR8MDtlPWY7Y1tiPj4yXT1hO2c9Y1tiPj4yXXwwO2E9Y1tnPj4yXXwwO2NbZz4+Ml09YSsxO2NbZT4+Ml09ZFthPj4wXTtpZigoY1tlPj4yXXwwKT4+PjA8MTkyKXtnPWNbZT4+Ml18MDtpPWY7cmV0dXJuIGd8MH1jW2U+PjJdPWRbMjU1NjMrKChjW2U+PjJdfDApLTE5Mik+PjBdO3doaWxlKDEpe2E9Y1tlPj4yXXwwO2lmKCgoZFtjW2NbYj4+Ml0+PjJdPj4wXXwwKSYxOTJ8MCkhPTEyOClicmVhaztoPWNbYj4+Ml18MDtnPWNbaD4+Ml18MDtjW2g+PjJdPWcrMTtjW2U+PjJdPShhPDw2KSsoNjMmKGRbZz4+MF18MCkpfWlmKChhPj4+MD49MTI4PyhjW2U+PjJdJi0yMDQ4fDApIT01NTI5NjowKT8oY1tlPj4yXSYtMnwwKSE9NjU1MzQ6MCl7aD1jW2U+PjJdfDA7aT1mO3JldHVybiBofDB9Y1tlPj4yXT02NTUzMztoPWNbZT4+Ml18MDtpPWY7cmV0dXJuIGh8MH1mdW5jdGlvbiBLQyhiKXtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wO2c9aTtpPWkrMTZ8MDtkPWcrNHwwO2U9ZztjW2U+PjJdPWI7aWYoKGFbY1tlPj4yXT4+MF18MCk+PTQ4PyhhW2NbZT4+Ml0+PjBdfDApPD01MDowKWNbZD4+Ml09KGFbY1tlPj4yXT4+MF18MCktNDg7ZWxzZSBmPTQ7ZG8gaWYoKGZ8MCk9PTQpe2lmKCEoaWcoY1tlPj4yXXwwLDMzMTA1KXwwKSl7Y1tkPj4yXT0xO2JyZWFrfWlmKCEoaWcoY1tlPj4yXXwwLDI2MTU5KXwwKSl7Y1tkPj4yXT0yO2JyZWFrfWVsc2V7Y1tkPj4yXT0wO2JyZWFrfX13aGlsZSgwKTtpPWc7cmV0dXJuIGNbZD4+Ml18MH1mdW5jdGlvbiBMQyhhLGIpe2E9YXwwO2I9YnwwO3ZhciBkPTAsZT0wLGY9MDtkPWk7aT1pKzE2fDA7Zj1kKzR8MDtlPWQ7Y1tmPj4yXT1hO2NbZT4+Ml09YjthPU1DKGNbKGNbZj4+Ml18MCkrMjEyPj4yXXwwLGNbZT4+Ml18MCl8MDtpPWQ7cmV0dXJuIGF8MH1mdW5jdGlvbiBNQyhhLGIpe2E9YXwwO2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTA7Zz1pO2k9aSsxNnwwO2Q9Zys4fDA7ZT1nKzR8MDtmPWc7Y1tkPj4yXT1hO2NbZT4+Ml09YjtpZihjW2U+PjJdfDApe2lmKChjW2U+PjJdfDApPDApe2I9Y1tlPj4yXXwwO2I9YVMoLTEwMjQsLTEsYnwwLCgoYnwwKTwwKTw8MzE+PjMxfDApfDA7YT0oY1soY1tkPj4yXXwwKSsyND4+Ml18MCkrKGNbKGNbZD4+Ml18MCkrMjg+PjJdfDApfDA7YT1fUihifDAsQ3wwLGF8MCwoKGF8MCk8MCk8PDMxPj4zMXwwKXwwO2NbZT4+Ml09YX1jWyhjW2Q+PjJdfDApKzIwPj4yXT1jW2U+PjJdfWNbZj4+Ml09Y2ooY1tkPj4yXXwwKXwwO2lmKChjW2Y+PjJdfDApPj0oY1soY1tkPj4yXXwwKSsyMD4+Ml18MCkpe2Y9Y1tmPj4yXXwwO2k9ZztyZXR1cm4gZnwwfWNbZj4+Ml09Y1soY1tkPj4yXXwwKSsyMD4+Ml07Zj1jW2Y+PjJdfDA7aT1nO3JldHVybiBmfDB9ZnVuY3Rpb24gTkMoYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MDtnPWk7aT1pKzE2fDA7ZT1nKzh8MDtmPWc7Y1tlPj4yXT1hO2E9ZjtjW2E+PjJdPWI7Y1thKzQ+PjJdPWQ7aWYoIShjW2U+PjJdfDApKXtpPWc7cmV0dXJufWQ9ZjtmPWNbZCs0Pj4yXXwwO2E9KGNbZT4+Ml18MCkrMTZ8MDtjW2E+PjJdPWNbZD4+Ml07Y1thKzQ+PjJdPWY7aT1nO3JldHVybn1mdW5jdGlvbiBPQyhhLGQpe2E9YXwwO2Q9ZHwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wO2s9aTtpPWkrMTZ8MDtnPWsrMTJ8MDtmPWsrOHwwO2o9ays0fDA7aD1rO2NbZz4+Ml09YTtjW2Y+PjJdPWQ7aWYoISgoY1tnPj4yXXwwKSE9MCYoY1tmPj4yXXwwKSE9MCkpe2k9aztyZXR1cm59Y1tqPj4yXT0oY1tnPj4yXXwwKSsoKGNbZj4+Ml18MCkqNDB8MCk7Y1toPj4yXT1jWyhjW2c+PjJdfDApKzMyPj4yXTtpZihjWyhjW2g+PjJdfDApKzQ1Nj4+Ml18MCl7ZG97aWYoY1soY1tnPj4yXXwwKSsyND4+Ml18MClUZihjW2g+PjJdfDAsY1soY1tnPj4yXXwwKSsyMD4+Ml18MCk7YT0oY1tnPj4yXXwwKSs0MHwwO2NbZz4+Ml09YX13aGlsZShhPj4+MDwoY1tqPj4yXXwwKT4+PjApO2k9aztyZXR1cm59ZG97Zj1jW2c+PjJdfDA7aWYoISgoZVsoY1tnPj4yXXwwKSs4Pj4xXXwwKSY5MzEyKSl7aWYoY1tmKzI0Pj4yXXwwKXtUZihjW2g+PjJdfDAsY1soY1tnPj4yXXwwKSsyMD4+Ml18MCk7Y1soY1tnPj4yXXwwKSsyND4+Ml09MH19ZWxzZSBYZyhmKTtiWyhjW2c+PjJdfDApKzg+PjFdPTEyODthPShjW2c+PjJdfDApKzQwfDA7Y1tnPj4yXT1hfXdoaWxlKGE+Pj4wPChjW2o+PjJdfDApPj4+MCk7aT1rO3JldHVybn1mdW5jdGlvbiBQQyhhLGQsZSxmKXthPWF8MDtkPWR8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MDtsPWk7aT1pKzE2fDA7Zz1sKzh8MDtoPWwrNHwwO2o9bDtrPWwrMTJ8MDtjW2c+PjJdPWE7Y1toPj4yXT1kO2Nbaj4+Ml09ZTtiW2s+PjFdPWY7d2hpbGUoMSl7YT1jW2g+PjJdfDA7Y1toPj4yXT1hKy0xO2lmKChhfDApPD0wKWJyZWFrO2NbKGNbZz4+Ml18MCkrMzI+PjJdPWNbaj4+Ml07YlsoY1tnPj4yXXwwKSs4Pj4xXT1iW2s+PjFdfDA7Y1soY1tnPj4yXXwwKSsyND4+Ml09MDtjW2c+PjJdPShjW2c+PjJdfDApKzQwfWk9bDtyZXR1cm59ZnVuY3Rpb24gUUMoYSxiLGQsZSl7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MDtvPWk7aT1pKzgwfDA7bD1vKzh8MDtrPW87Zj1vKzQ0fDA7cD1vKzQwfDA7Zz1vKzM2fDA7aD1vKzMyfDA7aj1vKzI4fDA7bT1vKzI0fDA7bj1vKzQ4fDA7Y1tmPj4yXT1hO2NbcD4+Ml09YjtjW2c+PjJdPWQ7Y1toPj4yXT1lO2NbbT4+Ml09Y1soY1soY1tjW2Y+PjJdPj4yXXwwKSsxNj4+Ml18MCkrKGNbcD4+Ml08PDQpPj4yXTtjW2o+PjJdPTE7d2hpbGUoMSl7aWYoKGNbaj4+Ml18MCk+NClicmVhaztjW2s+PjJdPWNbaj4+Ml07UWQoMjQsbiwzNDE0MSxrKXwwO2lmKHRpKGNbY1tmPj4yXT4+Ml18MCxuLGNbbT4+Ml18MCl8MCl7cD1jW2Y+PjJdfDA7ZT1jW2c+PjJdfDA7ZD1jW2g+PjJdfDA7Y1tsPj4yXT1jW20+PjJdO2NbbCs0Pj4yXT1uO2NbbCs4Pj4yXT1lO2NbbCsxMj4+Ml09ZDtjeChwLDMwOTM4LGwpfWNbaj4+Ml09KGNbaj4+Ml18MCkrMX1pPW87cmV0dXJufWZ1bmN0aW9uIFJDKGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wO2U9aTtpPWkrNDh8MDtoPWU7Zz1lKzM2fDA7aj1lKzMyfDA7bD1lKzI4fDA7az1lKzI0fDA7Zj1lKzIwfDA7Y1tnPj4yXT1hO2Nbaj4+Ml09YjtjW2w+PjJdPWQ7Y1trPj4yXT1keChjW2c+PjJdfDApfDA7Y1tmPj4yXT12eChjW2c+PjJdfDApfDA7angoY1trPj4yXXwwLDEzMCxjW2o+PjJdfDAsY1tmPj4yXXwwLGNbbD4+Ml18MCl8MDtWeChjW2c+PjJdfDApO2E9Y1tnPj4yXXwwO2s9KGNbbD4+Ml18MCk9PTE/MTk5MDU6MTk5MjQ7aj1jW2o+PjJdfDA7ZD1jW2Y+PjJdfDA7Yj1jW2Y+PjJdfDA7Y1toPj4yXT1jWyhjWyhjW2NbZz4+Ml0+PjJdfDApKzE2Pj4yXXwwKSsoY1tsPj4yXTw8NCk+PjJdO2NbaCs0Pj4yXT1rO2NbaCs4Pj4yXT1qO2NbaCsxMj4+Ml09ZDtjW2grMTY+PjJdPWI7Y3goYSwzNDA4NSxoKTt4eChjW2c+PjJdfDAsY1tmPj4yXXwwKTtpPWU7cmV0dXJufWZ1bmN0aW9uIFNDKGEsYixkLGUsZil7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTA7cj1pO2k9aSs0OHwwO2c9ciszNnwwO2g9ciszMnwwO2o9cisyOHwwO2s9cisyNHwwO2w9cisyMHwwO209cisxNnwwO3E9cisxMnwwO249cis4fDA7cD1yKzR8MDtvPXI7Y1toPj4yXT1hO2Nbaj4+Ml09YjtjW2s+PjJdPWQ7Y1tsPj4yXT1lO2NbbT4+Ml09ZjtjW24+PjJdPWNbY1tsPj4yXT4+Ml07ZG8gaWYoIShjW24+PjJdJihjW24+PjJdfDApLTEpKXtjW3A+PjJdPShjW24+PjJdfDApPT0wPzE6Y1tuPj4yXTw8MTtkPV8oY1twPj4yXXwwLGNbaz4+Ml18MCl8MDtjW28+PjJdPVV3KGNbaD4+Ml18MCxjW2o+PjJdfDAsZCwoKGR8MCk8MCk8PDMxPj4zMSl8MDtpZihjW28+PjJdfDApe2Nbaj4+Ml09Y1tvPj4yXTticmVha31jW2NbbT4+Ml0+PjJdPS0xO2NbZz4+Ml09Y1tqPj4yXTtxPWNbZz4+Ml18MDtpPXI7cmV0dXJuIHF8MH13aGlsZSgwKTtjW3E+PjJdPWNbaj4+Ml07ZD1fKGNbbj4+Ml18MCxjW2s+PjJdfDApfDA7VlIoKGNbcT4+Ml18MCkrZHwwLDAsY1trPj4yXXwwKXwwO2NbY1ttPj4yXT4+Ml09Y1tuPj4yXTtxPWNbbD4+Ml18MDtjW3E+PjJdPShjW3E+PjJdfDApKzE7Y1tnPj4yXT1jW2o+PjJdO3E9Y1tnPj4yXXwwO2k9cjtyZXR1cm4gcXwwfWZ1bmN0aW9uIFRDKGEsYixlLGYsZyl7YT1hfDA7Yj1ifDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7dmFyIGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wO3E9aTtpPWkrMzJ8MDtoPXErMjh8MDtqPXErMjR8MDtrPXErMjB8MDtsPXErMTZ8MDttPXErMTJ8MDtuPXErOHwwO3A9cSs0fDA7bz1xO2NbaD4+Ml09YTtjW2o+PjJdPWI7Y1trPj4yXT1lO2NbbD4+Ml09ZjtjW20+PjJdPWc7Y1tuPj4yXT0wO2NbcD4+Ml09MDtpZihjWyhjW2NbaD4+Ml0+PjJdfDApKzI0Pj4yXSYxNjc3NzIxNiljW3A+PjJdPXp4KGNbaD4+Ml18MCxjW2o+PjJdfDApfDA7Y1tvPj4yXT1jW3A+PjJdO3doaWxlKDEpe2lmKCEoY1tvPj4yXXwwKSlicmVhaztpZigoZFsoY1tvPj4yXXwwKSs4Pj4wXXwwfDApPT0oY1trPj4yXXwwKT8odkcoY1soY1tvPj4yXXwwKSsxNj4+Ml18MCxjW2w+PjJdfDApfDApIT0wOjApY1tuPj4yXT1jW24+PjJdfChkWyhjW28+PjJdfDApKzk+PjBdfDApO2Nbbz4+Ml09Y1soY1tvPj4yXXwwKSszMj4+Ml19aWYoIShjW20+PjJdfDApKXthPWNbbj4+Ml18MDthPShhfDApIT0wO2I9Y1twPj4yXXwwO2I9YT9iOjA7aT1xO3JldHVybiBifDB9Y1tjW20+PjJdPj4yXT1jW24+PjJdO2E9Y1tuPj4yXXwwO2E9KGF8MCkhPTA7Yj1jW3A+PjJdfDA7Yj1hP2I6MDtpPXE7cmV0dXJuIGJ8MH1mdW5jdGlvbiBVQyhhLGIsZSl7YT1hfDA7Yj1ifDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTA7bj1pO2k9aSszMnwwO2w9bis4fDA7az1uO2Y9bisyNHwwO2c9bisyMHwwO2g9bisxNnwwO2o9bisxMnwwO2NbZz4+Ml09YTtjW2g+PjJdPWI7Y1tqPj4yXT1lO2lmKCEoKChkWyhjW2g+PjJdfDApKzQyPj4wXXwwKSYxNnwwKSE9MD8oY1soY1tjWyhVeChjW2NbZz4+Ml0+PjJdfDAsY1toPj4yXXwwKXwwKSs0Pj4yXT4+Ml18MCkrNTI+PjJdfDApPT0wOjApKW09MztkbyBpZigobXwwKT09Myl7aWYoKCgoZFsoY1toPj4yXXwwKSs0Mj4+MF18MCkmMXwwKSE9MD8oY1soY1tjW2c+PjJdPj4yXXwwKSsyND4+Ml0mMjA0OHwwKT09MDowKT8oZFsoY1tnPj4yXXwwKSsxOD4+MF18MHwwKT09MDowKWJyZWFrO2lmKChjW2o+PjJdfDApPT0wPyhjWyhjW2g+PjJdfDApKzEyPj4yXXwwKSE9MDowKXttPWNbZz4+Ml18MDtjW2w+PjJdPWNbY1toPj4yXT4+Ml07RWgobSwzNTI1NyxsKTtjW2Y+PjJdPTE7bT1jW2Y+PjJdfDA7aT1uO3JldHVybiBtfDB9Y1tmPj4yXT0wO209Y1tmPj4yXXwwO2k9bjtyZXR1cm4gbXwwfXdoaWxlKDApO209Y1tnPj4yXXwwO2Nbaz4+Ml09Y1tjW2g+PjJdPj4yXTtFaChtLDM1MjI4LGspO2NbZj4+Ml09MTttPWNbZj4+Ml18MDtpPW47cmV0dXJuIG18MH1mdW5jdGlvbiBWQyhhKXthPWF8MDt2YXIgZD0wLGU9MDtkPWk7aT1pKzE2fDA7ZT1kO2NbZT4+Ml09YTthPShjW2U+PjJdfDApKzE0NHwwO2JbYT4+MV09YlthPj4xXSYtMTd8MTY7aT1kO3JldHVybn1mdW5jdGlvbiBXQyhmLGcsaCxqLGspe2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO2s9a3wwO3ZhciBsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTAsRT0wLEY9MCxHPTAsSD0wLEk9MCxKPTAsSz0wLEw9MCxNPTAsTj0wLE89MDtPPWk7aT1pKzEyOHwwO3U9TysxMDh8MDt2PU8rMTA0fDA7dz1PKzEwMHwwO2w9Tys5NnwwO3I9Tys5MnwwO3g9Tys4OHwwO3o9Tys4NHwwO249Tys4MHwwO0k9Tys3NnwwO0o9Tys3MnwwO0g9Tys2OHwwO289Tys2NHwwO0M9Tys2MHwwO0Q9Tys1NnwwO0Y9Tys1MnwwO0U9Tys0OHwwO3k9Tys0NHwwO3M9Tys0MHwwO0E9TyszNnwwO0I9TyszMnwwO009TysyOHwwO3Q9TysyNHwwO3E9TysyMHwwO0s9TysxNnwwO0w9TysxMnwwO209Tys4fDA7cD1PKzR8MDtHPU8rMTEyfDA7Tj1PO2Nbdj4+Ml09ZjtjW3c+PjJdPWc7Y1tsPj4yXT1oO2Nbcj4+Ml09ajtjW3g+PjJdPWs7Y1t6Pj4yXT1jW2Nbdj4+Ml0+PjJdO2NbQT4+Ml09MDtjW0I+PjJdPTA7Y1txPj4yXT0wO2lmKCEoY1tsPj4yXXwwKSl7Y1t1Pj4yXT0wO049Y1t1Pj4yXXwwO2k9TztyZXR1cm4gTnwwfWlmKChjWyhjW3Y+PjJdfDApKzQ3Mj4+Ml18MCk9PTA/KGNbKGNbbD4+Ml18MCkrNjQ+PjJdfDApPT0wOjApe2lmKHp4KGNbdj4+Ml18MCxjW3c+PjJdfDApfDApe2NbdT4+Ml09MDtOPWNbdT4+Ml18MDtpPU87cmV0dXJuIE58MH1pZihkWyhjW3c+PjJdfDApKzQyPj4wXSYxNil7Y1t1Pj4yXT0wO049Y1t1Pj4yXXwwO2k9TztyZXR1cm4gTnwwfWlmKChjW3I+PjJdfDApPT0xMCl7aWYoKGJbKGNbdz4+Ml18MCkrMzI+PjFdfDApPj0wKWNbcj4+Ml09ZFsoY1t3Pj4yXXwwKSs0Mz4+MF07aWYoKGNbcj4+Ml18MCk9PTEwKWNbcj4+Ml09Mn1pZigoY1tjWyhjW2w+PjJdfDApKzI4Pj4yXT4+Ml18MCkhPTEpe2NbdT4+Ml09MDtOPWNbdT4+Ml18MDtpPU87cmV0dXJuIE58MH1pZihjWyhjWyhjW2w+PjJdfDApKzI4Pj4yXXwwKSs4KzIwPj4yXXwwKXtjW3U+PjJdPTA7Tj1jW3U+PjJdfDA7aT1PO3JldHVybiBOfDB9aWYoY1soY1tsPj4yXXwwKSszMj4+Ml18MCl7Y1t1Pj4yXT0wO049Y1t1Pj4yXXwwO2k9TztyZXR1cm4gTnwwfWlmKGNbKGNbbD4+Ml18MCkrNDQ+PjJdfDApe2NbdT4+Ml09MDtOPWNbdT4+Ml18MDtpPU87cmV0dXJuIE58MH1pZihjWyhjW2w+PjJdfDApKzM2Pj4yXXwwKXtjW3U+PjJdPTA7Tj1jW3U+PjJdfDA7aT1PO3JldHVybiBOfDB9aWYoY1soY1tsPj4yXXwwKSs1Nj4+Ml18MCl7Y1t1Pj4yXT0wO049Y1t1Pj4yXXwwO2k9TztyZXR1cm4gTnwwfWlmKGNbKGNbbD4+Ml18MCkrNDg+PjJdfDApe2NbdT4+Ml09MDtOPWNbdT4+Ml18MDtpPU87cmV0dXJuIE58MH1pZihjWyhjW2w+PjJdfDApKzg+PjJdJjEpe2NbdT4+Ml09MDtOPWNbdT4+Ml18MDtpPU87cmV0dXJuIE58MH1jW24+PjJdPWNbY1tsPj4yXT4+Ml07aWYoKGNbY1tuPj4yXT4+Ml18MCkhPTEpe2NbdT4+Ml09MDtOPWNbdT4+Ml18MDtpPU87cmV0dXJuIE58MH1pZigoZFtjW2NbKGNbbj4+Ml18MCkrND4+Ml0+PjJdPj4wXXwwKSE9MTYwKXtjW3U+PjJdPTA7Tj1jW3U+PjJdfDA7aT1PO3JldHVybiBOfDB9Y1tvPj4yXT0oY1soY1tsPj4yXXwwKSsyOD4+Ml18MCkrODtjW0k+PjJdPXB4KGNbdj4+Ml18MCwwLGNbbz4+Ml18MCl8MDtpZighKGNbST4+Ml18MCkpe2NbdT4+Ml09MDtOPWNbdT4+Ml18MDtpPU87cmV0dXJuIE58MH1pZigoY1tJPj4yXXwwKT09KGNbdz4+Ml18MCkpe2NbdT4+Ml09MDtOPWNbdT4+Ml18MDtpPU87cmV0dXJuIE58MH1pZigoKGRbKGNbdz4+Ml18MCkrNDI+PjBdJjMyfDApPT0wfDApIT0oKGRbKGNbST4+Ml18MCkrNDI+PjBdJjMyfDApPT0wfDApKXtjW3U+PjJdPTA7Tj1jW3U+PjJdfDA7aT1PO3JldHVybiBOfDB9aWYoZFsoY1tJPj4yXXwwKSs0Mj4+MF0mMTYpe2NbdT4+Ml09MDtOPWNbdT4+Ml18MDtpPU87cmV0dXJuIE58MH1pZihjWyhjW0k+PjJdfDApKzEyPj4yXXwwKXtjW3U+PjJdPTA7Tj1jW3U+PjJdfDA7aT1PO3JldHVybiBOfDB9aWYoKGJbKGNbdz4+Ml18MCkrMzQ+PjFdfDApIT0oYlsoY1tJPj4yXXwwKSszND4+MV18MCkpe2NbdT4+Ml09MDtOPWNbdT4+Ml18MDtpPU87cmV0dXJuIE58MH1pZigoYlsoY1t3Pj4yXXwwKSszMj4+MV18MCkhPShiWyhjW0k+PjJdfDApKzMyPj4xXXwwKSl7Y1t1Pj4yXT0wO049Y1t1Pj4yXXwwO2k9TztyZXR1cm4gTnwwfWNbQz4+Ml09MDthOndoaWxlKDEpe2lmKChjW0M+PjJdfDApPj0oYlsoY1t3Pj4yXXwwKSszND4+MV18MCkpe2w9NjQ7YnJlYWt9Y1ttPj4yXT0oY1soY1t3Pj4yXXwwKSs0Pj4yXXwwKSsoY1tDPj4yXTw8NCk7Y1twPj4yXT0oY1soY1tJPj4yXXwwKSs0Pj4yXXwwKSsoY1tDPj4yXTw8NCk7aWYoKGFbKGNbbT4+Ml18MCkrMTM+PjBdfDApIT0oYVsoY1twPj4yXXwwKSsxMz4+MF18MCkpe2w9NTI7YnJlYWt9aWYoVGQoY1soY1ttPj4yXXwwKSs4Pj4yXXwwLGNbKGNbcD4+Ml18MCkrOD4+Ml18MCl8MCl7bD01NDticmVha31pZigoZFsoY1ttPj4yXXwwKSsxMj4+MF18MCkhPTA/KGFbKGNbcD4+Ml18MCkrMTI+PjBdfDApPT0wOjApe2w9NTc7YnJlYWt9ZG8gaWYoKGNbQz4+Ml18MCk+MCl7aWYoKChjWyhjW20+PjJdfDApKzQ+PjJdfDApPT0wfDApIT0oKGNbKGNbcD4+Ml18MCkrND4+Ml18MCk9PTB8MCkpe2w9NjI7YnJlYWsgYX1pZighKGNbKGNbbT4+Ml18MCkrND4+Ml18MCkpYnJlYWs7aWYoaFIoY1soY1soY1ttPj4yXXwwKSs0Pj4yXXwwKSs4Pj4yXXwwLGNbKGNbKGNbcD4+Ml18MCkrND4+Ml18MCkrOD4+Ml18MCl8MCl7bD02MjticmVhayBhfX13aGlsZSgwKTtjW0M+PjJdPShjW0M+PjJdfDApKzF9aWYoKGx8MCk9PTUyKXtjW3U+PjJdPTA7Tj1jW3U+PjJdfDA7aT1PO3JldHVybiBOfDB9ZWxzZSBpZigobHwwKT09NTQpe2NbdT4+Ml09MDtOPWNbdT4+Ml18MDtpPU87cmV0dXJuIE58MH1lbHNlIGlmKChsfDApPT01Nyl7Y1t1Pj4yXT0wO049Y1t1Pj4yXXwwO2k9TztyZXR1cm4gTnwwfWVsc2UgaWYoKGx8MCk9PTYyKXtjW3U+PjJdPTA7Tj1jW3U+PjJdfDA7aT1PO3JldHVybiBOfDB9ZWxzZSBpZigobHwwKT09NjQpe2NbSD4+Ml09Y1soY1t3Pj4yXXwwKSs4Pj4yXTt3aGlsZSgxKXtpZighKGNbSD4+Ml18MCkpYnJlYWs7aWYoZFsoY1tIPj4yXXwwKSs1ND4+MF18MCljW3E+PjJdPTE7Y1tKPj4yXT1jWyhjW0k+PjJdfDApKzg+PjJdO3doaWxlKDEpe2lmKCEoY1tKPj4yXXwwKSlicmVhaztpZih4RyhjW0g+PjJdfDAsY1tKPj4yXXwwKXwwKWJyZWFrO2NbSj4+Ml09Y1soY1tKPj4yXXwwKSsyMD4+Ml19aWYoIShjW0o+PjJdfDApKXtsPTczO2JyZWFrfWNbSD4+Ml09Y1soY1tIPj4yXXwwKSsyMD4+Ml19aWYoKGx8MCk9PTczKXtjW3U+PjJdPTA7Tj1jW3U+PjJdfDA7aT1PO3JldHVybiBOfDB9ZG8gaWYoY1soY1t3Pj4yXXwwKSsyND4+Ml18MCl7aWYoIShMeShjWyhjW0k+PjJdfDApKzI0Pj4yXXwwLGNbKGNbdz4+Ml18MCkrMjQ+PjJdfDAsLTEpfDApKWJyZWFrO2NbdT4+Ml09MDtOPWNbdT4+Ml18MDtpPU87cmV0dXJuIE58MH13aGlsZSgwKTtkbyBpZihjWyhjW3o+PjJdfDApKzI0Pj4yXSY1MjQyODgpe2lmKCEoY1soY1t3Pj4yXXwwKSsxNj4+Ml18MCkpYnJlYWs7Y1t1Pj4yXT0wO049Y1t1Pj4yXXwwO2k9TztyZXR1cm4gTnwwfXdoaWxlKDApO2lmKGNbKGNbej4+Ml18MCkrMjQ+PjJdJjEyOCl7Y1t1Pj4yXT0wO049Y1t1Pj4yXXwwO2k9TztyZXR1cm4gTnwwfWNbRD4+Ml09RmgoY1t6Pj4yXXwwLGNbKGNbST4+Ml18MCkrNjQ+PjJdfDApfDA7Y1tNPj4yXT1keChjW3Y+PjJdfDApfDA7c3goY1t2Pj4yXXwwLGNbRD4+Ml18MCk7cD0oY1t2Pj4yXXwwKSs0MHwwO2g9Y1twPj4yXXwwO2NbcD4+Ml09aCsxO2NbRj4+Ml09aDtoPShjW3Y+PjJdfDApKzQwfDA7cD1jW2g+PjJdfDA7Y1toPj4yXT1wKzE7Y1tFPj4yXT1wO2NbdD4+Ml09WEMoY1t2Pj4yXXwwLGNbeD4+Ml18MCxjW3c+PjJdfDApfDA7Y1tLPj4yXT12eChjW3Y+PjJdfDApfDA7Y1tMPj4yXT12eChjW3Y+PjJdfDApfDA7VXooY1t2Pj4yXXwwLGNbRT4+Ml18MCxjW3g+PjJdfDAsY1t3Pj4yXXwwLDEwNSk7ZG8gaWYoIShjWyhjW3o+PjJdfDApKzI0Pj4yXSYyNjg0MzU0NTYpKXtpZigoYlsoY1t3Pj4yXXwwKSszMj4+MV18MCk8MCl7aWYoISgoY1txPj4yXXwwKSE9MD8xOihjWyhjW3c+PjJdfDApKzg+PjJdfDApIT0wKSlsPTg3fWVsc2UgaWYoIShjW3E+PjJdfDApKWw9ODc7aWYoKGx8MCk9PTg3PyEoKGNbcj4+Ml18MCkhPTImKGNbcj4+Ml18MCkhPTEpOjApYnJlYWs7Y1t5Pj4yXT1peChjW00+PjJdfDAsNTcsY1tFPj4yXXwwLDApfDA7Y1tBPj4yXT1meChjW00+PjJdfDAsMTMpfDA7WnooY1tNPj4yXXwwLGNbeT4+Ml18MCl9d2hpbGUoMCk7bD1jW3Y+PjJdfDA7aWYoIShkWyhjW0k+PjJdfDApKzQyPj4wXSYzMikpe1V6KGwsY1tGPj4yXXwwLGNbRD4+Ml18MCxjW0k+PjJdfDAsMTA0KTtjW0I+PjJdPWl4KGNbTT4+Ml18MCw1NyxjW0Y+PjJdfDAsMCl8MDtkbyBpZigoYlsoY1t3Pj4yXXwwKSszMj4+MV18MCk8MCl7bD1jW00+PjJdfDA7aWYoIShjWyhjW3c+PjJdfDApKzg+PjJdfDApKXtjW3k+PjJdPWl4KGwsMTE0LGNbRT4+Ml18MCxjW0w+PjJdfDApfDA7YnJlYWt9ZWxzZXtjW3k+PjJdPWl4KGwsMTIzLGNbRj4+Ml18MCxjW0w+PjJdfDApfDA7YnJlYWt9fWVsc2V7Y1t5Pj4yXT1peChjW00+PjJdfDAsMTIzLGNbRj4+Ml18MCxjW0w+PjJdfDApfDA7Y1tzPj4yXT1qeChjW00+PjJdfDAsMzMsY1tFPj4yXXwwLDAsY1tMPj4yXXwwKXwwO2tGKGNbdj4+Ml18MCxjW3I+PjJdfDAsY1t3Pj4yXXwwKTtaeihjW00+PjJdfDAsY1tzPj4yXXwwKTtiRChjW3Y+PjJdfDAsY1t0Pj4yXXwwLGNbTD4+Ml18MCl9d2hpbGUoMCk7aXgoY1tNPj4yXXwwLDEyMixjW0Y+PjJdfDAsY1tLPj4yXXwwKXwwO214KGNbTT4+Ml18MCwxMTUsY1tFPj4yXXwwLGNbSz4+Ml18MCxjW0w+PjJdfDAsY1t3Pj4yXXwwLC0yMCl8MDtKaChjW00+PjJdfDAsMTEpO2l4KGNbTT4+Ml18MCw3LGNbRj4+Ml18MCxjW3k+PjJdfDApfDA7aXgoY1tNPj4yXXwwLDExMSxjW0Y+PjJdfDAsMCl8MDtpeChjW00+PjJdfDAsMTExLGNbRT4+Ml18MCwwKXwwfWVsc2V7VHoobCxjW3g+PjJdfDAsY1soY1t3Pj4yXXwwKSsyOD4+Ml18MCwxLGNbY1t3Pj4yXT4+Ml18MCk7VHooY1t2Pj4yXXwwLGNbRD4+Ml18MCxjWyhjW0k+PjJdfDApKzI4Pj4yXXwwLDAsY1tjW0k+PjJdPj4yXXwwKX1jW0g+PjJdPWNbKGNbdz4+Ml18MCkrOD4+Ml07d2hpbGUoMSl7aWYoIShjW0g+PjJdfDApKWJyZWFrO2FbRz4+MF09MDtjW0o+PjJdPWNbKGNbST4+Ml18MCkrOD4+Ml07d2hpbGUoMSl7aWYoIShjW0o+PjJdfDApKWJyZWFrO2lmKHhHKGNbSD4+Ml18MCxjW0o+PjJdfDApfDApYnJlYWs7Y1tKPj4yXT1jWyhjW0o+PjJdfDApKzIwPj4yXX1qeChjW00+PjJdfDAsMTA0LGNbRj4+Ml18MCxjWyhjW0o+PjJdfDApKzQ0Pj4yXXwwLGNbRD4+Ml18MCl8MDtWeihjW3Y+PjJdfDAsY1tKPj4yXXwwKTtqeChjW00+PjJdfDAsMTA1LGNbRT4+Ml18MCxjWyhjW0g+PjJdfDApKzQ0Pj4yXXwwLGNbeD4+Ml18MCl8MDtWeihjW3Y+PjJdfDAsY1tIPj4yXXwwKTtKaChjW00+PjJdfDAsMSk7Y1t5Pj4yXT1peChjW00+PjJdfDAsNTcsY1tGPj4yXXwwLDApfDA7aXgoY1tNPj4yXXwwLDEyMSxjW0Y+PjJdfDAsY1tLPj4yXXwwKXwwO2RvIGlmKGNbKGNbej4+Ml18MCkrMjQ+PjJdJjI2ODQzNTQ1Nil7Y1tDPj4yXT0wO3doaWxlKDEpe2lmKChjW0M+PjJdfDApPj0oZVsoY1tKPj4yXXwwKSs1Mj4+MV18MCkpYnJlYWs7Y1tOPj4yXT1jWyhjWyhjW0o+PjJdfDApKzMyPj4yXXwwKSsoY1tDPj4yXTw8Mik+PjJdO2lmKFRkKDM0ODM0LGNbTj4+Ml18MCl8MClicmVhaztjW0M+PjJdPShjW0M+PjJdfDApKzF9aWYoKGNbQz4+Ml18MCkhPShlWyhjW0o+PjJdfDApKzUyPj4xXXwwKSlicmVhazthW0c+PjBdPTE2O2p4KGNbTT4+Ml18MCw1MyxjW0U+PjJdfDAsMCwtMSl8MH13aGlsZSgwKTtkbyBpZihkWyhjW0k+PjJdfDApKzQyPj4wXSYzMil7aWYoKGFbKGNbSD4+Ml18MCkrNTU+PjBdJjN8MCkhPTIpYnJlYWs7YVtHPj4wXT1kW0c+PjBdfDF9d2hpbGUoMCk7angoY1tNPj4yXXwwLDEyNixjW0U+PjJdfDAsY1tLPj4yXXwwLDEpfDA7SmgoY1tNPj4yXXwwLGFbRz4+MF18MCk7aXgoY1tNPj4yXXwwLDcsY1tGPj4yXXwwLChjW3k+PjJdfDApKzF8MCl8MDtaeihjW00+PjJdfDAsY1t5Pj4yXXwwKTtpeChjW00+PjJdfDAsMTExLGNbRj4+Ml18MCwwKXwwO2l4KGNbTT4+Ml18MCwxMTEsY1tFPj4yXXwwLDApfDA7Y1tIPj4yXT1jWyhjW0g+PjJdfDApKzIwPj4yXX1pZihjW0I+PjJdfDApWnooY1tNPj4yXXwwLGNbQj4+Ml18MCk7eHgoY1t2Pj4yXXwwLGNbTD4+Ml18MCk7eHgoY1t2Pj4yXXwwLGNbSz4+Ml18MCk7aWYoY1tBPj4yXXwwKXtoRChjW3Y+PjJdfDApO2l4KGNbTT4+Ml18MCw3NSwwLDApfDA7WnooY1tNPj4yXXwwLGNbQT4+Ml18MCk7aXgoY1tNPj4yXXwwLDExMSxjW0U+PjJdfDAsMCl8MDtjW3U+PjJdPTA7Tj1jW3U+PjJdfDA7aT1PO3JldHVybiBOfDB9ZWxzZXtjW3U+PjJdPTE7Tj1jW3U+PjJdfDA7aT1PO3JldHVybiBOfDB9fX1jW3U+PjJdPTA7Tj1jW3U+PjJdfDA7aT1PO3JldHVybiBOfDB9ZnVuY3Rpb24gWEMoYSxiLGUpe2E9YXwwO2I9YnwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wO249aTtpPWkrMzJ8MDtmPW4rMjR8MDtnPW4rMjB8MDtoPW4rMTZ8MDtqPW4rMTJ8MDtrPW4rOHwwO209bis0fDA7bD1uO2NbZz4+Ml09YTtjW2g+PjJdPWI7Y1tqPj4yXT1lO2Nbaz4+Ml09MDtpZigoKGRbKGNbaj4+Ml18MCkrNDI+PjBdfDApJjh8MCkhPTA/KGNbKGNbY1tnPj4yXT4+Ml18MCkrMjQ+PjJdJjI2ODQzNTQ1NnwwKT09MDowKXtiPWNbZz4+Ml18MDtpZihjWyhjW2c+PjJdfDApKzEyND4+Ml18MCliPWNbYisxMjQ+PjJdfDA7Y1ttPj4yXT1iO2NbbD4+Ml09Y1soY1ttPj4yXXwwKSsxMjA+PjJdO3doaWxlKDEpe2lmKGNbbD4+Ml18MClhPShjWyhjW2w+PjJdfDApKzQ+PjJdfDApIT0oY1tqPj4yXXwwKTtlbHNlIGE9MDtiPWNbbD4+Ml18MDtpZighYSlicmVhaztjW2w+PjJdPWNbYj4+Ml19ZG8gaWYoIWIpe2NbbD4+Ml09VncoY1tjW2c+PjJdPj4yXXwwLDE2LDApfDA7aWYoY1tsPj4yXXwwKXtjW2NbbD4+Ml0+PjJdPWNbKGNbbT4+Ml18MCkrMTIwPj4yXTtjWyhjW20+PjJdfDApKzEyMD4+Ml09Y1tsPj4yXTtjWyhjW2w+PjJdfDApKzQ+PjJdPWNbaj4+Ml07Y1soY1tsPj4yXXwwKSs4Pj4yXT1jW2g+PjJdO2g9KGNbbT4+Ml18MCkrNDR8MDtjW2g+PjJdPShjW2g+PjJdfDApKzE7aD0oY1ttPj4yXXwwKSs0NHwwO2o9KGNbaD4+Ml18MCkrMXwwO2NbaD4+Ml09ajtjWyhjW2w+PjJdfDApKzEyPj4yXT1qO209KGNbbT4+Ml18MCkrNDR8MDtjW20+PjJdPShjW20+PjJdfDApKzE7YnJlYWt9Y1tmPj4yXT0wO209Y1tmPj4yXXwwO2k9bjtyZXR1cm4gbXwwfXdoaWxlKDApO2Nbaz4+Ml09Y1soY1tsPj4yXXwwKSsxMj4+Ml19Y1tmPj4yXT1jW2s+PjJdO209Y1tmPj4yXXwwO2k9bjtyZXR1cm4gbXwwfWZ1bmN0aW9uIFlDKGIsZCl7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wO2U9aTtpPWkrMTZ8MDtmPWUrNHwwO2c9ZTtjW2Y+PjJdPWI7Y1tnPj4yXT1kO1N6KGNbZj4+Ml18MCw3MyxjW2c+PjJdfDApfDA7YVsoY1soY1tmPj4yXXwwKSsxMj4+Ml18MCkrMTk+PjBdPTA7Y1soY1soY1tmPj4yXXwwKSsxMj4+Ml18MCkrMjg+PjJdPTA7aT1lO3JldHVybn1mdW5jdGlvbiBaQyhhLGIsZSl7YT1hfDA7Yj1ifDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wO3I9aTtpPWkrNDh8MDtxPXIrNDB8MDtmPXIrMzZ8MDtnPXIrMzJ8MDtoPXIrMjh8MDtwPXIrMjR8MDtqPXIrMjB8MDtrPXIrMTZ8MDtuPXIrMTJ8MDttPXIrOHwwO2w9cis0fDA7bz1yO2NbZj4+Ml09YTtjW2c+PjJdPWI7Y1toPj4yXT1lO2NbcD4+Ml09ZHgoY1tmPj4yXXwwKXwwO2Nbaz4+Ml09d3goY1twPj4yXXwwKXwwO2lmKChkWyhjW2g+PjJdfDApKzQyPj4wXXwwKSYxNilmPVV4KGNbY1tmPj4yXT4+Ml18MCxjW2g+PjJdfDApfDA7ZWxzZSBmPTA7Y1tuPj4yXT1mO2Nbaj4+Ml09MTthOndoaWxlKDEpe2lmKChjW2o+PjJdfDApPj0oY1trPj4yXXwwKSl7Zj0xODticmVha31jW20+PjJdPWVBKGNbcD4+Ml18MCxjW2o+PjJdfDApfDA7YjpkbyBpZigoZFtjW20+PjJdPj4wXXwwfDApPT0xMDQ/KGNbKGNbbT4+Ml18MCkrMTI+PjJdfDApPT0oY1tnPj4yXXwwKTowKXtjW28+PjJdPWNbKGNbbT4+Ml18MCkrOD4+Ml07aWYoKGNbbz4+Ml18MCk9PShjWyhjW2g+PjJdfDApKzI4Pj4yXXwwKSl7Zj04O2JyZWFrIGF9Y1tsPj4yXT1jWyhjW2g+PjJdfDApKzg+PjJdO3doaWxlKDEpe2lmKCEoY1tsPj4yXXwwKSlicmVhayBiO2lmKChjW28+PjJdfDApPT0oY1soY1tsPj4yXXwwKSs0ND4+Ml18MCkpe2Y9MTI7YnJlYWsgYX1jW2w+PjJdPWNbKGNbbD4+Ml18MCkrMjA+PjJdfX13aGlsZSgwKTtpZigoZFtjW20+PjJdPj4wXXwwfDApPT0xNTU/KGNbKGNbbT4+Ml18MCkrMTY+PjJdfDApPT0oY1tuPj4yXXwwKTowKXtmPTE2O2JyZWFrfWNbaj4+Ml09KGNbaj4+Ml18MCkrMX1pZigoZnwwKT09OCl7Y1txPj4yXT0xO3E9Y1txPj4yXXwwO2k9cjtyZXR1cm4gcXwwfWVsc2UgaWYoKGZ8MCk9PTEyKXtjW3E+PjJdPTE7cT1jW3E+PjJdfDA7aT1yO3JldHVybiBxfDB9ZWxzZSBpZigoZnwwKT09MTYpe2NbcT4+Ml09MTtxPWNbcT4+Ml18MDtpPXI7cmV0dXJuIHF8MH1lbHNlIGlmKChmfDApPT0xOCl7Y1txPj4yXT0wO3E9Y1txPj4yXXwwO2k9cjtyZXR1cm4gcXwwfXJldHVybiAwfWZ1bmN0aW9uIF9DKGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTA7ZT1pO2k9aSszMnwwO2s9ZSsxNnwwO2c9ZSsxMnwwO2g9ZSs4fDA7aj1lKzR8MDtmPWU7Y1trPj4yXT1hO2NbZz4+Ml09YjtjW2g+PjJdPWQ7Y1tqPj4yXT1jWyhjW2s+PjJdfDApKzg+PjJdO1JBKGNbaz4+Ml18MCxjW2c+PjJdfDAsY1toPj4yXXwwKTthPShjW2s+PjJdfDApKzQ0fDA7ZD0oY1thPj4yXXwwKSsxfDA7Y1thPj4yXT1kO2NbZj4+Ml09ZDtpeChjW2o+PjJdfDAsODQsY1toPj4yXXwwLGNbZj4+Ml18MCl8MDtoQihjW2c+PjJdfDAsY1tmPj4yXXwwKTtpPWU7cmV0dXJufWZ1bmN0aW9uICRDKGQsZSxmKXtkPWR8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wO249aTtpPWkrMzJ8MDtnPW4rMjB8MDtoPW4rMTZ8MDtrPW4rMTJ8MDtsPW4rOHwwO209bis0fDA7aj1uO2NbZz4+Ml09ZDtjW2g+PjJdPWU7Y1trPj4yXT1mO2NbbT4+Ml09Y1soY1toPj4yXXwwKSsyMD4+Ml07aWYoIShjW20+PjJdfDApKXtjW2o+PjJdPVFBKGNbZz4+Ml18MCl8MDtkPShiWyhjW2g+PjJdfDApKzM0Pj4xXXwwKSsxfDA7Y1ttPj4yXT1DaCgwLGQsKChkfDApPDApPDwzMT4+MzEpfDA7aWYoIShjW20+PjJdfDApKXttaChjW2o+PjJdfDApO2k9bjtyZXR1cm59Y1tsPj4yXT0wO3doaWxlKDEpe2lmKChjW2w+PjJdfDApPj0oYlsoY1toPj4yXXwwKSszND4+MV18MCkpYnJlYWs7YVsoY1ttPj4yXXwwKSsoY1tsPj4yXXwwKT4+MF09YVsoY1soY1toPj4yXXwwKSs0Pj4yXXwwKSsoY1tsPj4yXTw8NCkrMTM+PjBdfDA7Y1tsPj4yXT0oY1tsPj4yXXwwKSsxfWRve2Q9Y1tsPj4yXXwwO2NbbD4+Ml09ZCstMTthWyhjW20+PjJdfDApK2Q+PjBdPTA7aWYoKGNbbD4+Ml18MCk8MClicmVha313aGlsZSgoYVsoY1ttPj4yXXwwKSsoY1tsPj4yXXwwKT4+MF18MCk9PTY1KTtjWyhjW2g+PjJdfDApKzIwPj4yXT1jW20+PjJdfWNbbD4+Ml09SmYoY1ttPj4yXXwwKXwwO2lmKCEoY1tsPj4yXXwwKSl7aT1uO3JldHVybn1nPWNbZz4+Ml18MDtpZihjW2s+PjJdfDApe214KGcsOTgsY1trPj4yXXwwLGNbbD4+Ml18MCwwLGNbbT4+Ml18MCxjW2w+PjJdfDApfDA7aT1uO3JldHVybn1lbHNle01oKGcsLTEsY1ttPj4yXXwwLGNbbD4+Ml18MCk7aT1uO3JldHVybn19ZnVuY3Rpb24gYUQoYSxiLGUsZixnLGgsaixrLGwpe2E9YXwwO2I9YnwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO2s9a3wwO2w9bHwwO3ZhciBtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wO3Y9aTtpPWkrNDh8MDttPXYrMzZ8MDt3PXYrMzJ8MDtuPXYrMjh8MDtvPXYrMjR8MDtwPXYrMjB8MDtxPXYrMTZ8MDtyPXYrMTJ8MDtzPXYrOHwwO3Q9dis0fDA7dT12O2NbbT4+Ml09YTtjW3c+PjJdPWI7Y1tuPj4yXT1lO2Nbbz4+Ml09ZjtjW3A+PjJdPWc7Y1txPj4yXT1oO2Nbcj4+Ml09ajtjW3M+PjJdPWs7Y1t0Pj4yXT1sO2NbdT4+Ml09Y1t3Pj4yXTt3aGlsZSgxKXtpZighKGNbdT4+Ml18MCkpYnJlYWs7aWYoKChkWyhjW3U+PjJdfDApKzg+PjBdfDB8MCk9PShjW24+PjJdfDApPyhkWyhjW3U+PjJdfDApKzk+PjBdfDB8MCk9PShjW3A+PjJdfDApOjApPyh2RyhjWyhjW3U+PjJdfDApKzE2Pj4yXXwwLGNbbz4+Ml18MCl8MCkhPTA6MCl0RihjW20+PjJdfDAsY1t1Pj4yXXwwLGNbcT4+Ml18MCxjW3I+PjJdfDAsY1tzPj4yXXwwLGNbdD4+Ml18MCk7Y1t1Pj4yXT1jWyhjW3U+PjJdfDApKzMyPj4yXX1pPXY7cmV0dXJufWZ1bmN0aW9uIGJEKGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wO2g9aTtpPWkrMTZ8MDtlPWgrOHwwO2Y9aCs0fDA7Zz1oO2NbZT4+Ml09YTtjW2Y+PjJdPWI7Y1tnPj4yXT1kO2lmKChjW2Y+PjJdfDApPD0wKXtpPWg7cmV0dXJufWl4KGNbKGNbZT4+Ml18MCkrOD4+Ml18MCwxNDUsY1tmPj4yXXwwLGNbZz4+Ml18MCl8MDtpPWg7cmV0dXJufWZ1bmN0aW9uIGNEKGEsYixlKXthPWF8MDtiPWJ8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wO2o9aTtpPWkrMTZ8MDtmPWorOHwwO2c9ais0fDA7aD1qO2NbZj4+Ml09YTtjW2c+PjJdPWI7Y1toPj4yXT1lO2lmKChkWyhjW2Y+PjJdfDApKzIzPj4wXXwwfDApIT0wPygkQShjW2c+PjJdfDApfDApIT0wOjApe3dCKGNbZj4+Ml18MCxjW2c+PjJdfDAsY1toPj4yXXwwLDApO2k9ajtyZXR1cm59UkEoY1tmPj4yXXwwLGNbZz4+Ml18MCxjW2g+PjJdfDApO2k9ajtyZXR1cm59ZnVuY3Rpb24gZEQoYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MDtrPWk7aT1pKzMyfDA7bD1rKzIwfDA7ZD1rKzE2fDA7aD1rKzEyfDA7Zj1rKzh8MDtnPWsrNHwwO2U9aztjW2w+PjJdPWE7Y1tkPj4yXT1iO2E9Y1tsPj4yXXwwO2lmKGNbKGNbbD4+Ml18MCkrMTI0Pj4yXXwwKWE9Y1thKzEyND4+Ml18MDtjW2g+PjJdPWE7Y1tmPj4yXT0wO3doaWxlKDEpe2lmKChjW2Y+PjJdfDApPj0oY1soY1toPj4yXXwwKSs0MTI+PjJdfDApKWJyZWFrO2lmKChjW2Q+PjJdfDApPT0oY1soY1soY1toPj4yXXwwKSs0NjA+PjJdfDApKyhjW2Y+PjJdPDwyKT4+Ml18MCkpe2o9MTA7YnJlYWt9Y1tmPj4yXT0oY1tmPj4yXXwwKSsxfWlmKChqfDApPT0xMCl7aT1rO3JldHVybn1jW2c+PjJdPShjWyhjW2g+PjJdfDApKzQxMj4+Ml18MCkrMTw8MjtsPWNbZz4+Ml18MDtjW2U+PjJdPU1kKGNbKGNbaD4+Ml18MCkrNDYwPj4yXXwwLGwsKChsfDApPDApPDwzMT4+MzEpfDA7aWYoY1tlPj4yXXwwKXtjWyhjW2g+PjJdfDApKzQ2MD4+Ml09Y1tlPj4yXTtqPWNbZD4+Ml18MDtnPShjW2g+PjJdfDApKzQxMnwwO2w9Y1tnPj4yXXwwO2NbZz4+Ml09bCsxO2NbKGNbKGNbaD4+Ml18MCkrNDYwPj4yXXwwKSsobDw8Mik+PjJdPWo7aT1rO3JldHVybn1lbHNle21oKGNbY1toPj4yXT4+Ml18MCk7aT1rO3JldHVybn19ZnVuY3Rpb24gZUQoZixnLGgsaixrLGwsbSxuLG8scCxxLHIpe2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO2s9a3wwO2w9bHwwO209bXwwO249bnwwO289b3wwO3A9cHwwO3E9cXwwO3I9cnwwO3ZhciBzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MCxFPTAsRj0wLEc9MCxIPTAsST0wLEo9MCxLPTAsTD0wLE09MCxOPTAsTz0wLFA9MCxRPTAsUj0wLFM9MCxUPTAsVT0wLFY9MCxXPTAsWD0wLFk9MCxaPTAsXz0wLCQ9MCxhYT0wLGJhPTAsY2E9MCxkYT0wLGVhPTAsZmE9MCxnYT0wLGhhPTAsaWE9MCxqYT0wLGthPTAsbGE9MCxtYT0wLG5hPTA7bmE9aTtpPWkrMTkyfDA7QT1uYTtFPW5hKzE3NnwwO0Y9bmErMTcyfDA7SD1uYSsxNjh8MDtJPW5hKzE2NHwwO0o9bmErMTYwfDA7Sz1uYSsxNTZ8MDtMPW5hKzE1MnwwO009bmErMTgzfDA7Tj1uYSsxODJ8MDtPPW5hKzE0OHwwO0c9bmErMTQ0fDA7cz1uYSsxNDB8MDtrYT1uYSsxMzZ8MDtjYT1uYSsxMzJ8MDtkYT1uYSsxMjh8MDtTPW5hKzEyNHwwO1Q9bmErMTIwfDA7Wj1uYSsxMTZ8MDt3PW5hKzExMnwwOyQ9bmErMTA4fDA7dD1uYSsxMDR8MDtqYT1uYSsxMDB8MDtfPW5hKzk2fDA7WD1uYSs5MnwwO1c9bmErODh8MDtZPW5hKzE4MXwwO1I9bmErMTgwfDA7aWE9bmErODR8MDtCPW5hKzgwfDA7eD1uYSs3NnwwO3Y9bmErNzJ8MDt5PW5hKzY4fDA7Qz1uYSs2NHwwO3U9bmErNjB8MDt6PW5hKzU2fDA7Z2E9bmErNTJ8MDtoYT1uYSs0OHwwO1Y9bmErNDR8MDtRPW5hKzQwfDA7VT1uYSszNnwwO2xhPW5hKzMyfDA7bWE9bmErMjh8MDtQPW5hKzI0fDA7YWE9bmErMjB8MDtmYT1uYSsxNnwwO2JhPW5hKzEyfDA7ZWE9bmErOHwwO2NbRT4+Ml09ZjtjW0Y+PjJdPWc7Y1tIPj4yXT1oO2NbST4+Ml09ajtjW0o+PjJdPWs7Y1tLPj4yXT1sO2NbTD4+Ml09bTthW00+PjBdPW47YVtOPj4wXT1vO2NbTz4+Ml09cDtjW0c+PjJdPXE7Y1tzPj4yXT1yO2NbZGE+PjJdPTA7Y1tqYT4+Ml09MDtjW1g+PjJdPTA7Y1tXPj4yXT0wO2FbUj4+MF09MDtjW2lhPj4yXT0tMTthW1k+PjBdPShjW0w+PjJdfDApIT0wO2NbUz4+Ml09Y1tjW0U+PjJdPj4yXTtjW2thPj4yXT1keChjW0U+PjJdfDApfDA7Y1t3Pj4yXT1iWyhjW0Y+PjJdfDApKzM0Pj4xXTtpZighKGRbKGNbRj4+Ml18MCkrNDI+PjBdJjMyKSl7Y1tkYT4+Ml09MDtjW18+PjJdPTF9ZWxzZXtjW2RhPj4yXT1KaihjW0Y+PjJdfDApfDA7Y1tfPj4yXT1lWyhjW2RhPj4yXXwwKSs1MD4+MV19Y1tUPj4yXT0wO3doaWxlKDEpe2lmKChjW1Q+PjJdfDApPj0oY1t3Pj4yXXwwKSlicmVhazthOmRvIGlmKChjW1Q+PjJdfDApIT0oYlsoY1tGPj4yXXwwKSszMj4+MV18MCkpe2lmKChjW3M+PjJdfDApIT0wPyhjWyhjW3M+PjJdfDApKyhjW1Q+PjJdPDwyKT4+Ml18MCk8MDowKWJyZWFrO2NbJD4+Ml09ZFsoY1soY1tGPj4yXXwwKSs0Pj4yXXwwKSsoY1tUPj4yXTw8NCkrMTI+PjBdO2lmKGNbJD4+Ml18MCl7aWYoKGRbTj4+MF18MCk9PTEwKXtpZigoY1skPj4yXXwwKT09MTApY1skPj4yXT0yfWVsc2UgY1skPj4yXT1kW04+PjBdO2lmKChjWyQ+PjJdfDApPT01PyhjWyhjWyhjW0Y+PjJdfDApKzQ+PjJdfDApKyhjW1Q+PjJdPDw0KSs0Pj4yXXwwKT09MDowKWNbJD4+Ml09Mjtzd2l0Y2goY1skPj4yXXwwKXtjYXNlIDI6e1Z4KGNbRT4+Ml18MCk7YnJlYWt9Y2FzZSAzOmNhc2UgMTpicmVhaztjYXNlIDQ6e2l4KGNba2E+PjJdfDAsMzQsKGNbSz4+Ml18MCkrMSsoY1tUPj4yXXwwKXwwLGNbTz4+Ml18MCl8MDticmVhayBhfWRlZmF1bHQ6e2NbdD4+Ml09U3ooY1trYT4+Ml18MCwzNSwoY1tLPj4yXXwwKSsxKyhjW1Q+PjJdfDApfDApfDA7UkEoY1tFPj4yXXwwLGNbKGNbKGNbRj4+Ml18MCkrND4+Ml18MCkrKGNbVD4+Ml08PDQpKzQ+PjJdfDAsKGNbSz4+Ml18MCkrMSsoY1tUPj4yXXwwKXwwKTtaeihjW2thPj4yXXwwLGNbdD4+Ml18MCk7YnJlYWsgYX19bT1jW1M+PjJdfDA7bD1jWyhjWyhjW0Y+PjJdfDApKzQ+PjJdfDApKyhjW1Q+PjJdPDw0KT4+Ml18MDtjW0E+PjJdPWNbY1tGPj4yXT4+Ml07Y1tBKzQ+PjJdPWw7Y1tCPj4yXT1HaChtLDMwMTYxLEEpfDA7bXgoY1trYT4+Ml18MCw3NCwxMjk5LGNbJD4+Ml18MCwoY1tLPj4yXXwwKSsxKyhjW1Q+PjJdfDApfDAsY1tCPj4yXXwwLC0xKXwwO0poKGNba2E+PjJdfDAsMSl9fXdoaWxlKDApO2NbVD4+Ml09KGNbVD4+Ml18MCkrMX1iOmRvIGlmKChjWyhjW0Y+PjJdfDApKzI0Pj4yXXwwKSE9MD8oY1soY1tTPj4yXXwwKSsyND4+Ml0mODE5MnwwKT09MDowKXtjW3g+PjJdPWNbKGNbRj4+Ml18MCkrMjQ+PjJdO2NbKGNbRT4+Ml18MCkrNTY+PjJdPShjW0s+PjJdfDApKzE7Y1skPj4yXT0oZFtOPj4wXXwwKSE9MTA/ZFtOPj4wXXwwOjI7Y1tUPj4yXT0wO3doaWxlKDEpe2lmKChjW1Q+PjJdfDApPj0oY1tjW3g+PjJdPj4yXXwwKSlicmVhayBiO2NbeT4+Ml09Y1soY1soY1t4Pj4yXXwwKSs0Pj4yXXwwKSsoKGNbVD4+Ml18MCkqMjB8MCk+PjJdO2lmKCEoKGNbcz4+Ml18MCkhPTA/KGpGKGNbeT4+Ml18MCxjW3M+PjJdfDAsZFtNPj4wXXwwKXwwKSE9MDowKSl7Y1t2Pj4yXT1XeihjW2thPj4yXXwwKXwwO2pCKGNbRT4+Ml18MCxjW3k+PjJdfDAsY1t2Pj4yXXwwLDE2KTtpZigoY1skPj4yXXwwKT09NClZeihjW2thPj4yXXwwLGNbTz4+Ml18MCl8MDtlbHNle2NbQz4+Ml09Y1soY1soY1t4Pj4yXXwwKSs0Pj4yXXwwKSsoKGNbVD4+Ml18MCkqMjB8MCkrND4+Ml07aWYoIShjW0M+PjJdfDApKWNbQz4+Ml09Y1tjW0Y+PjJdPj4yXTtpZigoY1skPj4yXXwwKT09NSljWyQ+PjJdPTI7dEEoY1tFPj4yXXwwLDI3NSxjWyQ+PjJdfDAsY1tDPj4yXXwwLDAsMyl9X3ooY1trYT4+Ml18MCxjW3Y+PjJdfDApfWNbVD4+Ml09KGNbVD4+Ml18MCkrMX19d2hpbGUoMCk7aWYoKGRbTT4+MF18MCkhPTAmKGNbZGE+PjJdfDApPT0wKXtjW3U+PjJdPVd6KGNba2E+PjJdfDApfDA7Y1skPj4yXT1kWyhjW0Y+PjJdfDApKzQzPj4wXTtpZigoZFtOPj4wXXwwKT09MTApe2lmKChjWyQ+PjJdfDApPT0xMCljWyQ+PjJdPTJ9ZWxzZSBjWyQ+PjJdPWRbTj4+MF07aWYoYVtZPj4wXXwwKXtqeChjW2thPj4yXXwwLDM3LGNbSz4+Ml18MCxjW3U+PjJdfDAsY1tMPj4yXXwwKXwwO0poKGNba2E+PjJdfDAsLTExMil9YzpkbyBpZigoY1skPj4yXXwwKT09NT8oZFtOPj4wXXwwKSE9NTowKXtjW2NhPj4yXT1jWyhjW0Y+PjJdfDApKzg+PjJdO3doaWxlKDEpe2lmKCEoY1tjYT4+Ml18MCkpYnJlYWsgYztpZigoZFsoY1tjYT4+Ml18MCkrNTQ+PjBdfDApPT00KWJyZWFrO2lmKChkWyhjW2NhPj4yXXwwKSs1ND4+MF18MCk9PTMpYnJlYWs7Y1tjYT4+Ml09Y1soY1tjYT4+Ml18MCkrMjA+PjJdfWNbWD4+Ml09ZngoY1trYT4+Ml18MCwxMyl8MH13aGlsZSgwKTtqeChjW2thPj4yXXwwLDMzLGNbST4+Ml18MCxjW3U+PjJdfDAsY1tLPj4yXXwwKXwwO3N3aXRjaChjWyQ+PjJdfDApe2Nhc2UgMzpjYXNlIDI6Y2FzZSAxOntEPTU1O2JyZWFrfWNhc2UgNTp7Y1t6Pj4yXT0wO2lmKGNbKGNbUz4+Ml18MCkrMjQ+PjJdJjI2MjE0NCljW3o+PjJdPVRDKGNbRT4+Ml18MCxjW0Y+PjJdfDAsMTA5LDAsMCl8MDtpZigoY1t6Pj4yXXwwKT09MD8obEYoY1tFPj4yXXwwLGNbRj4+Ml18MCwwLDApfDApPT0wOjApe2lmKGNbKGNbRj4+Ml18MCkrOD4+Ml18MCl7bUYoY1tFPj4yXXwwKTtvRihjW0U+PjJdfDAsY1tGPj4yXXwwLGNbST4+Ml18MCxjW0o+PjJdfDAsMCwtMSl9fWVsc2V7bUYoY1tFPj4yXXwwKTtuRihjW0U+PjJdfDAsY1tGPj4yXXwwLGNbej4+Ml18MCxjW0k+PjJdfDAsY1tKPj4yXXwwLGNbSz4+Ml18MCwxLDAsNSwxLC0xKX1jW2phPj4yXT0xO2JyZWFrfWNhc2UgNDp7WXooY1trYT4+Ml18MCxjW08+PjJdfDApfDA7YnJlYWt9ZGVmYXVsdDp7Y1skPj4yXT0yO0Q9NTV9fWlmKChEfDApPT01NSlrRihjW0U+PjJdfDAsY1skPj4yXXwwLGNbRj4+Ml18MCk7X3ooY1trYT4+Ml18MCxjW3U+PjJdfDApO2lmKGNbWD4+Ml18MCl7Y1tXPj4yXT1meChjW2thPj4yXXwwLDEzKXwwO1p6KGNba2E+PjJdfDAsY1tYPj4yXXwwKX19Y1taPj4yXT0wO2NbY2E+PjJdPWNbKGNbRj4+Ml18MCkrOD4+Ml07d2hpbGUoMSl7aWYoIShjW2NhPj4yXXwwKSlicmVhaztkbyBpZihjWyhjW0g+PjJdfDApKyhjW1o+PjJdPDwyKT4+Ml18MCl7aWYoIShkW1I+PjBdfDApKXskQyhjW2thPj4yXXwwLGNbRj4+Ml18MCwoY1tLPj4yXXwwKSsxfDApO2FbUj4+MF09MX1jW1Y+PjJdPShjW0o+PjJdfDApKyhjW1o+PjJdfDApO2NbUT4+Ml09V3ooY1trYT4+Ml18MCl8MDtpZihjWyhjW2NhPj4yXXwwKSszNj4+Ml18MCl7aXgoY1trYT4+Ml18MCw3OSwwLGNbKGNbSD4+Ml18MCkrKGNbWj4+Ml08PDIpPj4yXXwwKXwwO2NbKGNbRT4+Ml18MCkrNTY+PjJdPShjW0s+PjJdfDApKzE7QkEoY1tFPj4yXXwwLGNbKGNbY2E+PjJdfDApKzM2Pj4yXXwwLGNbUT4+Ml18MCwxNik7Y1soY1tFPj4yXXwwKSs1Nj4+Ml09MH1jW2dhPj4yXT1DQShjW0U+PjJdfDAsZVsoY1tjYT4+Ml18MCkrNTI+PjFdfDApfDA7Y1tUPj4yXT0wO3doaWxlKDEpe2lmKChjW1Q+PjJdfDApPj0oZVsoY1tjYT4+Ml18MCkrNTI+PjFdfDApKWJyZWFrO2NbVT4+Ml09YlsoY1soY1tjYT4+Ml18MCkrND4+Ml18MCkrKGNbVD4+Ml08PDEpPj4xXTtkbyBpZigoY1tVPj4yXXwwKT09LTIpe2NbKGNbRT4+Ml18MCkrNTY+PjJdPShjW0s+PjJdfDApKzE7TUEoY1tFPj4yXXwwLGNbKGNbKGNbKGNbY2E+PjJdfDApKzQwPj4yXXwwKSs0Pj4yXXwwKSsoKGNbVD4+Ml18MCkqMjB8MCk+PjJdfDAsKGNbZ2E+PjJdfDApKyhjW1Q+PjJdfDApfDApO2NbKGNbRT4+Ml18MCkrNTY+PjJdPTB9ZWxzZXtpZigoY1tVPj4yXXwwKSE9LTE/KGNbVT4+Ml18MCkhPShiWyhjW0Y+PjJdfDApKzMyPj4xXXwwKTowKWNbbGE+PjJdPShjW1U+PjJdfDApKyhjW0s+PjJdfDApKzE7ZWxzZXtpZigoY1tpYT4+Ml18MCk9PSgoY1tnYT4+Ml18MCkrKGNbVD4+Ml18MCl8MCkpYnJlYWs7Y1tsYT4+Ml09Y1tLPj4yXTtpZihjWyhjW2NhPj4yXXwwKSszNj4+Ml18MClzPS0xO2Vsc2Ugcz0oY1tnYT4+Ml18MCkrKGNbVD4+Ml18MCl8MDtjW2lhPj4yXT1zfWl4KGNba2E+PjJdfDAsKGNbVT4+Ml18MCk8MD84Njo4NSxjW2xhPj4yXXwwLChjW2dhPj4yXXwwKSsoY1tUPj4yXXwwKXwwKXwwfXdoaWxlKDApO2NbVD4+Ml09KGNbVD4+Ml18MCkrMX1qeChjW2thPj4yXXwwLDk5LGNbZ2E+PjJdfDAsZVsoY1tjYT4+Ml18MCkrNTI+PjFdfDAsY1soY1tIPj4yXXwwKSsoY1taPj4yXTw8Mik+PjJdfDApfDA7V0EoY1tFPj4yXXwwLGNbZ2E+PjJdfDAsZVsoY1tjYT4+Ml18MCkrNTI+PjFdfDApO2lmKCgoZFtZPj4wXXwwKSE9MD8oY1tkYT4+Ml18MCk9PShjW2NhPj4yXXwwKTowKT8oZFtNPj4wXXwwKT09MDowKXtfeihjW2thPj4yXXwwLGNbUT4+Ml18MCk7YnJlYWt9Y1skPj4yXT1kWyhjW2NhPj4yXXwwKSs1ND4+MF07aWYoIShjWyQ+PjJdfDApKXtGQShjW0U+PjJdfDAsY1tnYT4+Ml18MCxlWyhjW2NhPj4yXXwwKSs1Mj4+MV18MCk7X3ooY1trYT4+Ml18MCxjW1E+PjJdfDApO2JyZWFrfWlmKChkW04+PjBdfDApPT0xMCl7aWYoKGNbJD4+Ml18MCk9PTEwKWNbJD4+Ml09Mn1lbHNlIGNbJD4+Ml09ZFtOPj4wXTtJaChjW2thPj4yXXwwLDI5LGNbVj4+Ml18MCxjW1E+PjJdfDAsY1tnYT4+Ml18MCxlWyhjW2NhPj4yXXwwKSs1MD4+MV18MCl8MDtpZigoY1tjYT4+Ml18MCk9PShjW2RhPj4yXXwwKSlzPWNbZ2E+PjJdfDA7ZWxzZSBzPUNBKGNbRT4+Ml18MCxjW18+PjJdfDApfDA7Y1toYT4+Ml09cztkOmRvIGlmKChkW1k+PjBdfDApIT0wfChjWyQ+PjJdfDApPT01KXtpZighKGRbKGNbRj4+Ml18MCkrNDI+PjBdJjMyKSl7aXgoY1trYT4+Ml18MCwxMjksY1tWPj4yXXwwLGNbaGE+PjJdfDApfDA7aWYoIShhW1k+PjBdfDApKWJyZWFrO2p4KGNba2E+PjJdfDAsMzcsY1toYT4+Ml18MCxjW1E+PjJdfDAsY1tMPj4yXXwwKXwwO0poKGNba2E+PjJdfDAsLTExMik7YnJlYWt9ZTpkbyBpZigoY1tjYT4+Ml18MCkhPShjW2RhPj4yXXwwKSl7Y1tUPj4yXT0wO3doaWxlKDEpe2lmKChjW1Q+PjJdfDApPj0oZVsoY1tkYT4+Ml18MCkrNTA+PjFdfDApKWJyZWFrIGU7Y1ttYT4+Ml09KE9BKGNbY2E+PjJdfDAsYlsoY1soY1tkYT4+Ml18MCkrND4+Ml18MCkrKGNbVD4+Ml08PDEpPj4xXXwwKXwwKTw8MTY+PjE2O2p4KGNba2E+PjJdfDAsOTYsY1tWPj4yXXwwLGNbbWE+PjJdfDAsKGNbaGE+PjJdfDApKyhjW1Q+PjJdfDApfDApfDA7Y1tUPj4yXT0oY1tUPj4yXXwwKSsxfX13aGlsZSgwKTtpZihhW1k+PjBdfDApe0Q9d3goY1trYT4+Ml18MCl8MDtjW1A+PjJdPUQrKGVbKGNbZGE+PjJdfDApKzUwPj4xXXwwKTtjW2FhPj4yXT0zNjtjW2ZhPj4yXT0oYVsoY1tjYT4+Ml18MCkrNTU+PjBdJjN8MCk9PTI/Y1tnYT4+Ml18MDpjW2hhPj4yXXwwO2NbVD4+Ml09MDt3aGlsZSgxKXtpZigoY1tUPj4yXXwwKT49KGVbKGNbZGE+PjJdfDApKzUwPj4xXXwwKSlicmVhayBkO2NbYmE+PjJdPVh6KGNbRT4+Ml18MCxjWyhjWyhjW2RhPj4yXXwwKSszMj4+Ml18MCkrKGNbVD4+Ml08PDIpPj4yXXwwKXwwO2NbbWE+PjJdPWJbKGNbKGNbZGE+PjJdfDApKzQ+PjJdfDApKyhjW1Q+PjJdPDwxKT4+MV07aWYoKGNbVD4+Ml18MCk9PSgoZVsoY1tkYT4+Ml18MCkrNTA+PjFdfDApLTF8MCkpe2NbUD4+Ml09Y1tRPj4yXTtjW2FhPj4yXT0zN31teChjW2thPj4yXXwwLGNbYWE+PjJdfDAsKGNbTD4+Ml18MCkrMSsoY1ttYT4+Ml18MCl8MCxjW1A+PjJdfDAsKGNbZmE+PjJdfDApKyhjW1Q+PjJdfDApfDAsY1tiYT4+Ml18MCwtNCl8MDtKaChjW2thPj4yXXwwLC0xMTIpO2NbVD4+Ml09KGNbVD4+Ml18MCkrMX19fXdoaWxlKDApO3N3aXRjaChjWyQ+PjJdfDApe2Nhc2UgMzpjYXNlIDI6Y2FzZSAxOntxQShjW0U+PjJdfDAsY1skPj4yXXwwLGNbY2E+PjJdfDApO2JyZWFrfWNhc2UgNDp7WXooY1trYT4+Ml18MCxjW08+PjJdfDApfDA7YnJlYWt9ZGVmYXVsdDp7Y1tlYT4+Ml09MDttRihjW0U+PjJdfDApO2lmKGNbKGNbUz4+Ml18MCkrMjQ+PjJdJjI2MjE0NCljW2VhPj4yXT1UQyhjW0U+PjJdfDAsY1tGPj4yXXwwLDEwOSwwLDApfDA7bkYoY1tFPj4yXXwwLGNbRj4+Ml18MCxjW2VhPj4yXXwwLGNbST4+Ml18MCxjW0o+PjJdfDAsY1toYT4+Ml18MCxjW18+PjJdJjY1NTM1LDAsNSwoKGNbY2E+PjJdfDApPT0oY1tkYT4+Ml18MCk/MTowKSYyNTUsLTEpO2NbamE+PjJdPTF9fV96KGNba2E+PjJdfDAsY1tRPj4yXXwwKTtGQShjW0U+PjJdfDAsY1tnYT4+Ml18MCxlWyhjW2NhPj4yXXwwKSs1Mj4+MV18MCk7aWYoKGNbaGE+PjJdfDApIT0oY1tnYT4+Ml18MCkpRkEoY1tFPj4yXXwwLGNbaGE+PjJdfDAsY1tfPj4yXXwwKX13aGlsZSgwKTtjW2NhPj4yXT1jWyhjW2NhPj4yXXwwKSsyMD4+Ml07Y1taPj4yXT0oY1taPj4yXXwwKSsxfWlmKCEoY1tYPj4yXXwwKSl7bGE9Y1tqYT4+Ml18MDttYT1jW0c+PjJdfDA7Y1ttYT4+Ml09bGE7aT1uYTtyZXR1cm59WXooY1trYT4+Ml18MCwoY1tYPj4yXXwwKSsxfDApfDA7WnooY1trYT4+Ml18MCxjW1c+PjJdfDApO2xhPWNbamE+PjJdfDA7bWE9Y1tHPj4yXXwwO2NbbWE+PjJdPWxhO2k9bmE7cmV0dXJufWZ1bmN0aW9uIGZEKGUsZixnLGgsaixrKXtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDtrPWt8MDt2YXIgbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wLEU9MCxGPTAsRz0wLEg9MCxJPTAsSj0wLEs9MCxMPTAsTT0wLE49MCxPPTA7Tz1pO2k9aSsxMTJ8MDtsPU8rMTA4fDA7bT1PKzEwNHwwO249TysxMDB8MDtvPU8rOTZ8MDtwPU8rOTJ8MDtxPU8rODh8MDt2PU8rODR8MDtEPU8rODB8MDt6PU8rNzZ8MDtNPU8rNzJ8MDtDPU8rNjh8MDtJPU8rNjR8MDtFPU8rNjB8MDt0PU8rNTZ8MDtyPU8rNTJ8MDt5PU8rNDh8MDt4PU8rNDR8MDt1PU8rNDB8MDtLPU8rMzZ8MDtBPU8rMzJ8MDtCPU8rMjh8MDtKPU8rMjR8MDtMPU8rMjB8MDtGPU8rMTZ8MDtIPU8rMTJ8MDtzPU8rOHwwO0c9Tys0fDA7dz1PO2NbbD4+Ml09ZTtjW20+PjJdPWY7Y1tuPj4yXT1nO2Nbbz4+Ml09aDtjW3A+PjJdPWo7Y1txPj4yXT1rO2Nbdj4+Ml09Y1tjW2w+PjJdPj4yXTtjW0M+PjJdPWRbKGNbbD4+Ml18MCkrMTUwPj4wXTtpZighKGNbKGNbdj4+Ml18MCkrMjQ+PjJdJjUyNDI4OCkpe2k9TztyZXR1cm59Y1t6Pj4yXT1GaChjW3Y+PjJdfDAsY1soY1ttPj4yXXwwKSs2ND4+Ml18MCl8MDtjW00+PjJdPWNbKGNbKGNbdj4+Ml18MCkrMTY+PjJdfDApKyhjW3o+PjJdPDw0KT4+Ml07Y1tEPj4yXT1jWyhjW20+PjJdfDApKzE2Pj4yXTthOndoaWxlKDEpe2lmKCEoY1tEPj4yXXwwKSl7Tj0zOTticmVha31jW0U+PjJdPTA7Y1t0Pj4yXT0wO2NbdT4+Ml09MDtpZighKCgoY1twPj4yXXwwKSE9MD8oVGQoY1tjW20+PjJdPj4yXXwwLGNbKGNbRD4+Ml18MCkrOD4+Ml18MCl8MCkhPTA6MCk/KGpEKGNbbT4+Ml18MCxjW0Q+PjJdfDAsY1twPj4yXXwwLGNbcT4+Ml18MCl8MCk9PTA6MCkpTj03O2RvIGlmKChOfDApPT03KXtOPTA7aWYoYVsoY1tsPj4yXXwwKSsxNTA+PjBdfDApY1tJPj4yXT10aShjW3Y+PjJdfDAsY1soY1tEPj4yXXwwKSs4Pj4yXXwwLGNbTT4+Ml18MCl8MDtlbHNlIGNbST4+Ml09RGgoY1tsPj4yXXwwLDAsY1soY1tEPj4yXXwwKSs4Pj4yXXwwLGNbTT4+Ml18MCl8MDtpZigoY1tJPj4yXXwwKSE9MD8oQkMoY1tsPj4yXXwwLGNbST4+Ml18MCxjW0Q+PjJdfDAsRSx0KXwwKT09MDowKXtpZihjW3Q+PjJdfDApY1tyPj4yXT1jW3Q+PjJdO2Vsc2V7Y1t5Pj4yXT1jWyhjW0Q+PjJdfDApKzM2Pj4yXTtjW3I+PjJdPXl9Y1t4Pj4yXT0wO3doaWxlKDEpe2lmKChjW3g+PjJdfDApPj0oY1soY1tEPj4yXXwwKSsyMD4+Ml18MCkpYnJlYWs7aWYoKGNbKGNbcj4+Ml18MCkrKGNbeD4+Ml08PDIpPj4yXXwwKT09KGJbKGNbbT4+Ml18MCkrMzI+PjFdfDApKWNbKGNbcj4+Ml18MCkrKGNbeD4+Ml08PDIpPj4yXT0tMTtpZihjWyhjW3Y+PjJdfDApKzI5Nj4+Ml18MCl7aWYoY1tFPj4yXXwwKWo9YlsoY1soY1tFPj4yXXwwKSs0Pj4yXXwwKSsoY1t4Pj4yXTw8MSk+PjFdfDA7ZWxzZSBqPWJbKGNbST4+Ml18MCkrMzI+PjFdfDA7Y1tMPj4yXT1jWyhjWyhjW0k+PjJdfDApKzQ+PjJdfDApKyhqPDwxNj4+MTY8PDQpPj4yXTtjW0o+PjJdPWl6KGNbbD4+Ml18MCxjW2NbST4+Ml0+PjJdfDAsY1tMPj4yXXwwLGNbej4+Ml18MCl8MDtjW3U+PjJdPShjW0o+PjJdfDApPT0yJjF9Y1t4Pj4yXT0oY1t4Pj4yXXwwKSsxfVR6KGNbbD4+Ml18MCxjW3o+PjJdfDAsY1soY1tJPj4yXXwwKSsyOD4+Ml18MCwwLGNbY1tJPj4yXT4+Ml18MCk7Zz0oY1tsPj4yXXwwKSs0MHwwO2NbZz4+Ml09KGNbZz4+Ml18MCkrMTtpZihjW24+PjJdfDApa0QoY1tsPj4yXXwwLGNbej4+Ml18MCxjW0k+PjJdfDAsY1tFPj4yXXwwLGNbRD4+Ml18MCxjW3I+PjJdfDAsY1tuPj4yXXwwLC0xLGNbdT4+Ml18MCk7aWYoKGNbbz4+Ml18MCkhPTA/KGxEKGNbbD4+Ml18MCxjW0Q+PjJdfDApfDApPT0wOjApa0QoY1tsPj4yXXwwLGNbej4+Ml18MCxjW0k+PjJdfDAsY1tFPj4yXXwwLGNbRD4+Ml18MCxjW3I+PjJdfDAsY1tvPj4yXXwwLDEsY1t1Pj4yXXwwKTtUZihjW3Y+PjJdfDAsY1t0Pj4yXXwwKTticmVha31pZighKGNbQz4+Ml18MCkpe049NTk7YnJlYWsgYX1pZihkWyhjW3Y+PjJdfDApKzY5Pj4wXXwwKXtOPTU5O2JyZWFrIGF9aWYoIShjW0k+PjJdfDApKXtjW0s+PjJdPWR4KGNbbD4+Ml18MCl8MDtnPXd4KGNbSz4+Ml18MCl8MDtjW0E+PjJdPWcrKGNbKGNbRD4+Ml18MCkrMjA+PjJdfDApKzE7Y1t4Pj4yXT0wO3doaWxlKDEpe2lmKChjW3g+PjJdfDApPj0oY1soY1tEPj4yXXwwKSsyMD4+Ml18MCkpYnJlYWs7Y1tCPj4yXT0oY1soY1tEPj4yXXwwKSszNisoY1t4Pj4yXTw8Myk+PjJdfDApKyhjW24+PjJdfDApKzE7aXgoY1tLPj4yXXwwLDM0LGNbQj4+Ml18MCxjW0E+PjJdfDApfDA7Y1t4Pj4yXT0oY1t4Pj4yXXwwKSsxfWl4KGNbSz4+Ml18MCwxNDQsZFsoY1tEPj4yXXwwKSsyND4+MF18MCwtMSl8MH19d2hpbGUoMCk7Y1tEPj4yXT1jWyhjW0Q+PjJdfDApKzQ+PjJdfWlmKChOfDApPT0zOSl7Y1tEPj4yXT1ZeChjW20+PjJdfDApfDA7Yjp3aGlsZSgxKXtpZighKGNbRD4+Ml18MCkpe049NTk7YnJlYWt9Y1tGPj4yXT0wO2Nbcz4+Ml09MDtpZighKChjW3A+PjJdfDApIT0wPyhtRChjW20+PjJdfDAsY1tEPj4yXXwwLGNbcD4+Ml18MCxjW3E+PjJdfDApfDApPT0wOjApKU49NDM7ZG8gaWYoKE58MCk9PTQzKXtOPTA7aWYoKCgoYVsoY1tEPj4yXXwwKSsyND4+MF18MCk9PTA/KGNbKGNbdj4+Ml18MCkrMjQ+PjJdJjMzNTU0NDMyfDApPT0wOjApPyhjWyhjW2w+PjJdfDApKzEyND4+Ml18MCk9PTA6MCk/KGFbKGNbbD4+Ml18MCkrMjA+PjBdfDApPT0wOjApYnJlYWs7aWYoQkMoY1tsPj4yXXwwLGNbbT4+Ml18MCxjW0Q+PjJdfDAsRixzKXwwKXtpZighKGNbQz4+Ml18MCkpe049NTk7YnJlYWsgYn1pZihkWyhjW3Y+PjJdfDApKzY5Pj4wXXwwKXtOPTU5O2JyZWFrIGJ9ZWxzZSBicmVha31jW0g+PjJdPV92KGNbdj4+Ml18MCwwLDAsMCl8MDtpZihjW0g+PjJdfDApe2NbRz4+Ml09KGNbSD4+Ml18MCkrODtjWyhjW0c+PjJdfDApKzE2Pj4yXT1jW2NbRD4+Ml0+PjJdO2NbKGNbRz4+Ml18MCkrOD4+Ml09Y1tjW2NbRD4+Ml0+PjJdPj4yXTtMPShjWyhjW0c+PjJdfDApKzE2Pj4yXXwwKSszNnwwO2JbTD4+MV09KGJbTD4+MV18MCkrMTw8MTY+PjE2O0w9KGNbbD4+Ml18MCkrNDB8MDtNPWNbTD4+Ml18MDtjW0w+PjJdPU0rMTtjWyhjW0c+PjJdfDApKzQ0Pj4yXT1NO2lmKGNbbz4+Ml18MCluRChjW2w+PjJdfDAsY1tIPj4yXXwwLGNbbT4+Ml18MCxjW0Y+PjJdfDAsY1tEPj4yXXwwLGNbcz4+Ml18MCxjW28+PjJdfDAsLTEpO2lmKChjW24+PjJdfDApIT0wPyhjW3c+PjJdPWRbKGNbRD4+Ml18MCkrMjUrKChjW3A+PjJdfDApIT0wJjEpPj4wXSxuRChjW2w+PjJdfDAsY1tIPj4yXXwwLGNbbT4+Ml18MCxjW0Y+PjJdfDAsY1tEPj4yXXwwLGNbcz4+Ml18MCxjW24+PjJdfDAsMSksKChjW3c+PjJdfDApIT05PyhhWyhjW0Q+PjJdfDApKzI0Pj4wXXwwKT09MDowKSYoY1t3Pj4yXXwwKSE9Nyk6MClWeChjW2w+PjJdfDApO2NbKGNbRz4+Ml18MCkrOD4+Ml09MDtodihjW3Y+PjJdfDAsY1tIPj4yXXwwKX1UZihjW3Y+PjJdfDAsY1tzPj4yXXwwKX13aGlsZSgwKTtjW0Q+PjJdPWNbKGNbRD4+Ml18MCkrMTI+PjJdfWlmKChOfDApPT01OSl7aT1PO3JldHVybn19ZWxzZSBpZigoTnwwKT09NTkpe2k9TztyZXR1cm59fWZ1bmN0aW9uIGdEKGUsZixnLGgsaixrLGwsbSxuKXtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDtrPWt8MDtsPWx8MDttPW18MDtuPW58MDt2YXIgbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wLEU9MDtFPWk7aT1pKzY0fDA7bz1FKzUyfDA7cD1FKzQ4fDA7cT1FKzQ0fDA7cj1FKzQwfDA7cz1FKzM2fDA7dD1FKzMyfDA7dT1FKzI4fDA7dj1FKzI0fDA7dz1FKzIwfDA7RD1FKzE2fDA7ej1FKzEyfDA7QT1FKzU3fDA7Qj1FKzh8MDtDPUUrNHwwO3k9RTt4PUUrNTZ8MDtjW28+PjJdPWU7Y1twPj4yXT1mO2NbcT4+Ml09ZztjW3I+PjJdPWg7Y1tzPj4yXT1qO2NbdD4+Ml09aztjW3U+PjJdPWw7Y1t2Pj4yXT1tO2Nbdz4+Ml09bjthW3g+PjBdPTA7Y1tEPj4yXT1keChjW28+PjJdfDApfDA7Y1t5Pj4yXT0wO2Nbej4+Ml09Y1soY1twPj4yXXwwKSs4Pj4yXTt3aGlsZSgxKXtpZighKGNbej4+Ml18MCkpYnJlYWs7aWYoY1soY1t0Pj4yXXwwKSsoY1t5Pj4yXTw8Mik+PjJdfDApe2FbeD4+MF09MTtpZihjWyhjW3o+PjJdfDApKzM2Pj4yXXwwKXtqPWNbRD4+Ml18MDtuPWNbKGNbdD4+Ml18MCkrKGNbeT4+Ml08PDIpPj4yXXwwO2l4KGosMzQsbiwod3goY1tEPj4yXXwwKXwwKSsyfDApfDB9aXgoY1tEPj4yXXwwLDEyNiwoY1tyPj4yXXwwKSsoY1t5Pj4yXXwwKXwwLGNbKGNbdD4+Ml18MCkrKGNbeT4+Ml08PDIpPj4yXXwwKXwwO2FbQT4+MF09MDthW0E+PjBdPShjW3c+PjJdfDApIT0wPzE2OjA7aWYoKGFbKGNbej4+Ml18MCkrNTU+PjBdJjN8MCk9PTI/KGRbKGNbcD4+Ml18MCkrNDI+PjBdJjMyfDApIT0wOjApYVtBPj4wXT1kW0E+PjBdfDE7SmgoY1tEPj4yXXwwLGFbQT4+MF18MCl9Y1t6Pj4yXT1jWyhjW3o+PjJdfDApKzIwPj4yXTtjW3k+PjJdPShjW3k+PjJdfDApKzF9aWYoZFsoY1twPj4yXXwwKSs0Mj4+MF0mMzIpe2k9RTtyZXR1cm59Y1tCPj4yXT0oY1tzPj4yXXwwKSsxO2NbQz4+Ml09dngoY1tvPj4yXXwwKXwwO2p4KGNbRD4+Ml18MCw5OSxjW0I+PjJdfDAsYlsoY1twPj4yXXwwKSszND4+MV18MCxjW0M+PjJdfDApfDA7aWYoIShhW3g+PjBdfDApKSRDKGNbRD4+Ml18MCxjW3A+PjJdfDAsMCk7V0EoY1tvPj4yXXwwLGNbQj4+Ml18MCxiWyhjW3A+PjJdfDApKzM0Pj4xXXwwKTtpZihhWyhjW28+PjJdfDApKzE4Pj4wXXwwKWFbQT4+MF09MDtlbHNle2FbQT4+MF09MTthW0E+PjBdPWRbQT4+MF18KChjW3U+PjJdfDApIT0wPzQ6Mil9aWYoY1t2Pj4yXXwwKWFbQT4+MF09ZFtBPj4wXXw4O2lmKGNbdz4+Ml18MClhW0E+PjBdPWRbQT4+MF18MTY7angoY1tEPj4yXXwwLDExNSxjW3E+PjJdfDAsY1tDPj4yXXwwLGNbcz4+Ml18MCl8MDtpZighKGFbKGNbbz4+Ml18MCkrMTg+PjBdfDApKU1oKGNbRD4+Ml18MCwtMSxjW3A+PjJdfDAsLTIwKTtKaChjW0Q+PjJdfDAsYVtBPj4wXXwwKTtpPUU7cmV0dXJufWZ1bmN0aW9uIGhEKGEpe2E9YXwwO3ZhciBiPTAsZD0wO2Q9aTtpPWkrMTZ8MDtiPWQ7Y1tiPj4yXT1hO2lmKCEoY1soY1tiPj4yXXwwKSsxMjA+PjJdfDApKXtpPWQ7cmV0dXJufWlEKGNbYj4+Ml18MCk7aT1kO3JldHVybn1mdW5jdGlvbiBpRChiKXtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTA7bT1pO2k9aSszMnwwO2Q9bSsyOHwwO2o9bSsyNHwwO2w9bSsyMHwwO2Y9bSsxNnwwO2U9bSsxMnwwO2s9bSs4fDA7Zz1tKzR8MDtoPW07Y1tkPj4yXT1iO2NbbD4+Ml09Y1soY1tkPj4yXXwwKSs4Pj4yXTtjW2Y+PjJdPWNbY1tkPj4yXT4+Ml07Y1tqPj4yXT1jWyhjW2Q+PjJdfDApKzEyMD4+Ml07d2hpbGUoMSl7aWYoIShjW2o+PjJdfDApKXtkPTU7YnJlYWt9Y1trPj4yXT0oY1soY1tmPj4yXXwwKSsxNj4+Ml18MCkrKGNbKGNbaj4+Ml18MCkrOD4+Ml08PDQpO2NbaD4+Ml09Y1soY1tqPj4yXXwwKSsxMj4+Ml07Y1tnPj4yXT12eChjW2Q+PjJdfDApfDA7VXooY1tkPj4yXXwwLDAsY1soY1tqPj4yXXwwKSs4Pj4yXXwwLGNbKGNbKGNbaz4+Ml18MCkrMTI+PjJdfDApKzcyPj4yXXwwLDEwNSk7Y1tlPj4yXT1LaChjW2w+PjJdfDAsNSwzNDM4NCwwKXwwO2lmKCEoY1tlPj4yXXwwKSl7ZD01O2JyZWFrfWNbKGNbZT4+Ml18MCkrND4+Ml09KGNbaD4+Ml18MCkrMTtjWyhjW2U+PjJdfDApKzIwKzg+PjJdPShjW2g+PjJdfDApKzE7Y1soY1tlPj4yXXwwKSs0MCs0Pj4yXT0oY1toPj4yXXwwKS0xO2NbKGNbZT4+Ml18MCkrNDArMTI+PjJdPWNbZz4+Ml07Y1soY1tlPj4yXXwwKSs2MCs4Pj4yXT1jW2c+PjJdO2NbKGNbZT4+Ml18MCkrNjArMTI+PjJdPShjW2g+PjJdfDApKzE7YVsoY1tlPj4yXXwwKSs2MCszPj4wXT04O3h4KGNbZD4+Ml18MCxjW2c+PjJdfDApO2Nbaj4+Ml09Y1tjW2o+PjJdPj4yXX1pZigoZHwwKT09NSl7aT1tO3JldHVybn19ZnVuY3Rpb24gakQoYSxkLGUsZil7YT1hfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTA7bz1pO2k9aSszMnwwO249bysyNHwwO2c9bysyMHwwO2g9bysxNnwwO2o9bysxMnwwO2s9bys4fDA7bD1vKzR8MDttPW87Y1tnPj4yXT1hO2NbaD4+Ml09ZDtjW2o+PjJdPWU7Y1trPj4yXT1mO2NbbD4+Ml09MDt3aGlsZSgxKXtpZigoY1tsPj4yXXwwKT49KGNbKGNbaD4+Ml18MCkrMjA+PjJdfDApKXtnPTg7YnJlYWt9Y1ttPj4yXT1jWyhjW2g+PjJdfDApKzM2KyhjW2w+PjJdPDwzKT4+Ml07aWYoKGNbKGNbaj4+Ml18MCkrKGNbbT4+Ml08PDIpPj4yXXwwKT49MCl7Zz00O2JyZWFrfWlmKChjW2s+PjJdfDApIT0wPyhjW20+PjJdfDApPT0oYlsoY1tnPj4yXXwwKSszMj4+MV18MCk6MCl7Zz02O2JyZWFrfWNbbD4+Ml09KGNbbD4+Ml18MCkrMX1pZigoZ3wwKT09NCl7Y1tuPj4yXT0xO249Y1tuPj4yXXwwO2k9bztyZXR1cm4gbnwwfWVsc2UgaWYoKGd8MCk9PTYpe2Nbbj4+Ml09MTtuPWNbbj4+Ml18MDtpPW87cmV0dXJuIG58MH1lbHNlIGlmKChnfDApPT04KXtjW24+PjJdPTA7bj1jW24+PjJdfDA7aT1vO3JldHVybiBufDB9cmV0dXJuIDB9XG5mdW5jdGlvbiAkYihhKXthPWF8MDt2YXIgYj0wO2I9aTtpPWkrYXwwO2k9aSsxNSYtMTY7cmV0dXJuIGJ8MH1mdW5jdGlvbiBhYygpe3JldHVybiBpfDB9ZnVuY3Rpb24gYmMoYSl7YT1hfDA7aT1hfWZ1bmN0aW9uIGNjKGEsYil7YT1hfDA7Yj1ifDA7aT1hO2o9Yn1mdW5jdGlvbiBkYyhhLGIpe2E9YXwwO2I9YnwwO2lmKCFuKXtuPWE7bz1ifX1mdW5jdGlvbiBlYyhiKXtiPWJ8MDthW2s+PjBdPWFbYj4+MF07YVtrKzE+PjBdPWFbYisxPj4wXTthW2srMj4+MF09YVtiKzI+PjBdO2FbayszPj4wXT1hW2IrMz4+MF19ZnVuY3Rpb24gZmMoYil7Yj1ifDA7YVtrPj4wXT1hW2I+PjBdO2FbaysxPj4wXT1hW2IrMT4+MF07YVtrKzI+PjBdPWFbYisyPj4wXTthW2srMz4+MF09YVtiKzM+PjBdO2Fbays0Pj4wXT1hW2IrND4+MF07YVtrKzU+PjBdPWFbYis1Pj4wXTthW2srNj4+MF09YVtiKzY+PjBdO2Fbays3Pj4wXT1hW2IrNz4+MF19ZnVuY3Rpb24gZ2MoYSl7YT1hfDA7Qz1hfWZ1bmN0aW9uIGhjKCl7cmV0dXJuIEN8MH1mdW5jdGlvbiBpYyhiKXtiPWJ8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MDtqPWk7aT1pKzE2fDA7ZT1qKzEyfDA7Zj1qKzh8MDtnPWorNHwwO2g9ajtjW2U+PjJdPWI7Y1tmPj4yXT0wO3doaWxlKDEpe2lmKChjW2Y+PjJdfDApPj4+MD49NDApYnJlYWs7Y1tnPj4yXT0wO3N3aXRjaChkWzM2MCsoKGNbZj4+Ml18MCkqMTJ8MCkrNT4+MF18MCl7Y2FzZSAxOntjW2c+PjJdPWNbZT4+Ml07YnJlYWt9Y2FzZSAyOntjW2c+PjJdPS0xO2JyZWFrfWRlZmF1bHQ6e319d2YoY1tlPj4yXXwwLGNbMzYwKygoY1tmPj4yXXwwKSoxMnwwKT4+Ml18MCxhWzM2MCsoKGNbZj4+Ml18MCkqMTJ8MCkrND4+MF18MCxkWzM2MCsoKGNbZj4+Ml18MCkqMTJ8MCkrNj4+MF18MCxjW2c+PjJdfDAsY1szNjArKChjW2Y+PjJdfDApKjEyfDApKzg+PjJdfDAsMCwwKXwwO2NbZj4+Ml09KGNbZj4+Ml18MCkrMX1jW2Y+PjJdPTA7d2hpbGUoMSl7aWYoKGNbZj4+Ml18MCk+Pj4wPj02KWJyZWFrO2NbaD4+Ml09MDtzd2l0Y2goZFs4NDArKGNbZj4+Ml08PDQpKzU+PjBdfDApe2Nhc2UgMTp7Y1toPj4yXT1jW2U+PjJdO2JyZWFrfWNhc2UgMjp7Y1toPj4yXT0tMTticmVha31kZWZhdWx0Ont9fXdmKGNbZT4+Ml18MCxjWzg0MCsoY1tmPj4yXTw8NCk+PjJdfDAsYVs4NDArKGNbZj4+Ml08PDQpKzQ+PjBdfDAsMSxjW2g+PjJdfDAsMCxjWzg0MCsoY1tmPj4yXTw8NCkrOD4+Ml18MCxjWzg0MCsoY1tmPj4yXTw8NCkrMTI+PjJdfDApfDA7Y1tmPj4yXT0oY1tmPj4yXXwwKSsxfWk9ajtyZXR1cm4gMH1mdW5jdGlvbiBqYyhhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGo9MCxrPTAsbD0wO2s9aTtpPWkrMzJ8MDtlPWsrMjR8MDtsPWsrMjB8MDtmPWsrMTZ8MDtnPWsrOHwwO2o9aztjW2U+PjJdPWE7Y1tsPj4yXT1iO2NbZj4+Ml09ZDtoW2c+PjNdPTAuMDtpZigoY1tsPj4yXXwwKSE9MSlTYSgxNjcyNiwxNjczNCwzNzgsMTY3NTgpO2lmKChlZShjW2NbZj4+Ml0+PjJdfDApfDApPT01KXtsZShjW2U+PjJdfDApO2k9aztyZXR1cm59aFtnPj4zXT0rYmUoY1tjW2Y+PjJdPj4yXXwwKTtjWyhCUSgpfDApPj4yXT0wO2hbaj4+M109K1QoKygraFtnPj4zXSkpO2w9KGNbKEJRKCl8MCk+PjJdfDApPT0wO2U9Y1tlPj4yXXwwO2lmKGwpe2hlKGUsK2hbaj4+M10pO2k9aztyZXR1cm59ZWxzZXtsPUNRKGNbKEJRKCl8MCk+PjJdfDApfDA7aWUoZSxsLGNbKEJRKCl8MCk+PjJdfDApO2k9aztyZXR1cm59fWZ1bmN0aW9uIGtjKGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaj0wLGs9MCxsPTA7az1pO2k9aSszMnwwO2U9aysyNHwwO2w9aysyMHwwO2Y9aysxNnwwO2c9ays4fDA7aj1rO2NbZT4+Ml09YTtjW2w+PjJdPWI7Y1tmPj4yXT1kO2hbZz4+M109MC4wO2lmKChjW2w+PjJdfDApIT0xKVNhKDE2NzI2LDE2NzM0LDM3OSwxNjc2Nyk7aWYoKGVlKGNbY1tmPj4yXT4+Ml18MCl8MCk9PTUpe2xlKGNbZT4+Ml18MCk7aT1rO3JldHVybn1oW2c+PjNdPStiZShjW2NbZj4+Ml0+PjJdfDApO2NbKEJRKCl8MCk+PjJdPTA7aFtqPj4zXT0rVSgrKCtoW2c+PjNdKSk7bD0oY1soQlEoKXwwKT4+Ml18MCk9PTA7ZT1jW2U+PjJdfDA7aWYobCl7aGUoZSwraFtqPj4zXSk7aT1rO3JldHVybn1lbHNle2w9Q1EoY1soQlEoKXwwKT4+Ml18MCl8MDtpZShlLGwsY1soQlEoKXwwKT4+Ml18MCk7aT1rO3JldHVybn19ZnVuY3Rpb24gbGMoYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxqPTAsaz0wLGw9MDtrPWk7aT1pKzMyfDA7ZT1rKzI0fDA7bD1rKzIwfDA7Zj1rKzE2fDA7Zz1rKzh8MDtqPWs7Y1tlPj4yXT1hO2NbbD4+Ml09YjtjW2Y+PjJdPWQ7aFtnPj4zXT0wLjA7aWYoKGNbbD4+Ml18MCkhPTEpU2EoMTY3MjYsMTY3MzQsMzgwLDE2Nzc2KTtpZigoZWUoY1tjW2Y+PjJdPj4yXXwwKXwwKT09NSl7bGUoY1tlPj4yXXwwKTtpPWs7cmV0dXJufWhbZz4+M109K2JlKGNbY1tmPj4yXT4+Ml18MCk7Y1soQlEoKXwwKT4+Ml09MDtoW2o+PjNdPStWKCsoK2hbZz4+M10pKTtsPShjWyhCUSgpfDApPj4yXXwwKT09MDtlPWNbZT4+Ml18MDtpZihsKXtoZShlLCtoW2o+PjNdKTtpPWs7cmV0dXJufWVsc2V7bD1DUShjWyhCUSgpfDApPj4yXXwwKXwwO2llKGUsbCxjWyhCUSgpfDApPj4yXXwwKTtpPWs7cmV0dXJufX1mdW5jdGlvbiBtYyhhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGo9MCxrPTAsbD0wO2s9aTtpPWkrMzJ8MDtlPWsrMjR8MDtsPWsrMjB8MDtmPWsrMTZ8MDtnPWsrOHwwO2o9aztjW2U+PjJdPWE7Y1tsPj4yXT1iO2NbZj4+Ml09ZDtoW2c+PjNdPTAuMDtoW2o+PjNdPTAuMDtpZigoY1tsPj4yXXwwKSE9MilTYSgxNjc4NSwxNjczNCw1NzAsMTY3OTMpO2lmKChlZShjW2NbZj4+Ml0+PjJdfDApfDApIT01PyhlZShjWyhjW2Y+PjJdfDApKzQ+PjJdfDApfDApIT01OjApe2hbZz4+M109K2JlKGNbY1tmPj4yXT4+Ml18MCk7aFtqPj4zXT0rYmUoY1soY1tmPj4yXXwwKSs0Pj4yXXwwKTtoZShjW2U+PjJdfDAsK1coKygraFtnPj4zXSksKygraFtqPj4zXSkpKTtpPWs7cmV0dXJufWxlKGNbZT4+Ml18MCk7aT1rO3JldHVybn1mdW5jdGlvbiBuYyhhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGo9MCxrPTAsbD0wO2s9aTtpPWkrMzJ8MDtlPWsrMjR8MDtsPWsrMjB8MDtmPWsrMTZ8MDtnPWsrOHwwO2o9aztjW2U+PjJdPWE7Y1tsPj4yXT1iO2NbZj4+Ml09ZDtoW2c+PjNdPTAuMDtpZigoY1tsPj4yXXwwKSE9MSlTYSgxNjcyNiwxNjczNCwzOTQsMTY4MDIpO2lmKChlZShjW2NbZj4+Ml0+PjJdfDApfDApPT01KXtsZShjW2U+PjJdfDApO2k9aztyZXR1cm59aFtnPj4zXT0rYmUoY1tjW2Y+PjJdPj4yXXwwKTtjWyhCUSgpfDApPj4yXT0wO2hbaj4+M109K0lRKCtoW2c+PjNdKTtsPShjWyhCUSgpfDApPj4yXXwwKT09MDtlPWNbZT4+Ml18MDtpZihsKXtoZShlLCtoW2o+PjNdKTtpPWs7cmV0dXJufWVsc2V7bD1DUShjWyhCUSgpfDApPj4yXXwwKXwwO2llKGUsbCxjWyhCUSgpfDApPj4yXXwwKTtpPWs7cmV0dXJufX1mdW5jdGlvbiBvYyhhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGo9MCxrPTAsbD0wO2s9aTtpPWkrMzJ8MDtlPWsrMjR8MDtsPWsrMjB8MDtmPWsrMTZ8MDtnPWsrOHwwO2o9aztjW2U+PjJdPWE7Y1tsPj4yXT1iO2NbZj4+Ml09ZDtoW2c+PjNdPTAuMDtpZigoY1tsPj4yXXwwKSE9MSlTYSgxNjcyNiwxNjczNCw0MDIsMTY4MTIpO2lmKChlZShjW2NbZj4+Ml0+PjJdfDApfDApPT01KXtsZShjW2U+PjJdfDApO2k9aztyZXR1cm59aFtnPj4zXT0rYmUoY1tjW2Y+PjJdPj4yXXwwKTtjWyhCUSgpfDApPj4yXT0wO2hbaj4+M109K0pRKCtoW2c+PjNdKTtsPShjWyhCUSgpfDApPj4yXXwwKT09MDtlPWNbZT4+Ml18MDtpZihsKXtoZShlLCtoW2o+PjNdKTtpPWs7cmV0dXJufWVsc2V7bD1DUShjWyhCUSgpfDApPj4yXXwwKXwwO2llKGUsbCxjWyhCUSgpfDApPj4yXXwwKTtpPWs7cmV0dXJufX1mdW5jdGlvbiBwYyhhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGo9MCxrPTAsbD0wO2s9aTtpPWkrMzJ8MDtlPWsrMjR8MDtsPWsrMjB8MDtmPWsrMTZ8MDtnPWsrOHwwO2o9aztjW2U+PjJdPWE7Y1tsPj4yXT1iO2NbZj4+Ml09ZDtoW2c+PjNdPTAuMDtpZigoY1tsPj4yXXwwKSE9MSlTYSgxNjcyNiwxNjczNCw0MTAsMTY4MjIpO2lmKChlZShjW2NbZj4+Ml0+PjJdfDApfDApPT01KXtsZShjW2U+PjJdfDApO2k9aztyZXR1cm59aFtnPj4zXT0rYmUoY1tjW2Y+PjJdPj4yXXwwKTtjWyhCUSgpfDApPj4yXT0wO2hbaj4+M109K0tRKCtoW2c+PjNdKTtsPShjWyhCUSgpfDApPj4yXXwwKT09MDtlPWNbZT4+Ml18MDtpZihsKXtoZShlLCtoW2o+PjNdKTtpPWs7cmV0dXJufWVsc2V7bD1DUShjWyhCUSgpfDApPj4yXXwwKXwwO2llKGUsbCxjWyhCUSgpfDApPj4yXXwwKTtpPWs7cmV0dXJufX1mdW5jdGlvbiBxYyhiLGQsZSl7Yj1ifDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MDtvPWk7aT1pKzY0fDA7Zj1vKzMyfDA7cD1vKzI4fDA7Zz1vKzI0fDA7bT1vKzIwfDA7bj1vKzE2fDA7aj1vKzEyfDA7aD1vKzh8MDtrPW8rNHwwO2w9bztjW2Y+PjJdPWI7Y1twPj4yXT1kO2NbZz4+Ml09ZTtjW20+PjJdPW8rNDg7Y1tuPj4yXT1vKzQwO2Nbaj4+Ml09MDtjW2g+PjJdPTA7aWYoKGNbcD4+Ml18MCkhPTIpU2EoMTY3ODUsMTY3MzQsMTY4MCwxNjgzMik7aWYoKGVlKGNbY1tnPj4yXT4+Ml18MCl8MCkhPTU/KGVlKGNbKGNbZz4+Ml18MCkrND4+Ml18MCl8MCkhPTU6MCl7Y1trPj4yXT0kZChjW2NbZz4+Ml0+PjJdfDApfDA7Y1tsPj4yXT0kZChjWyhjW2c+PjJdfDApKzQ+PjJdfDApfDA7bWQoY1trPj4yXXwwLGNbbT4+Ml18MCk7bWQoY1tsPj4yXXwwLGNbbj4+Ml18MCk7Y1toPj4yXT0wO3doaWxlKDEpe2lmKChjW2g+PjJdfDApPj00KWJyZWFrO3A9bmQoY1ttPj4yXXwwKXwwO2lmKChwfDApPT0obmQoY1tuPj4yXXwwKXwwKSljW2o+PjJdPShjW2o+PjJdfDApKzE7ZG97cD0oY1ttPj4yXXwwKSsxfDA7Y1ttPj4yXT1wfXdoaWxlKCgxOTImYVtwPj4wXXwwKT09MTI4KTtkb3twPShjW24+PjJdfDApKzF8MDtjW24+PjJdPXB9d2hpbGUoKDE5MiZhW3A+PjBdfDApPT0xMjgpO2NbaD4+Ml09KGNbaD4+Ml18MCkrMX1qZShjW2Y+PjJdfDAsY1tqPj4yXXwwKTtpPW87cmV0dXJufWxlKGNbZj4+Ml18MCk7aT1vO3JldHVybn1mdW5jdGlvbiByYyhhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGo9MCxrPTAsbD0wO2s9aTtpPWkrMzJ8MDtlPWsrMjR8MDtsPWsrMjB8MDtmPWsrMTZ8MDtnPWsrOHwwO2o9aztjW2U+PjJdPWE7Y1tsPj4yXT1iO2NbZj4+Ml09ZDtoW2c+PjNdPTAuMDtpZigoY1tsPj4yXXwwKSE9MSlTYSgxNjcyNiwxNjczNCw0OTgsMTcyMzYpO2lmKChlZShjW2NbZj4+Ml0+PjJdfDApfDApPT01KXtsZShjW2U+PjJdfDApO2k9aztyZXR1cm59aFtnPj4zXT0rYmUoY1tjW2Y+PjJdPj4yXXwwKTtjWyhCUSgpfDApPj4yXT0wO2hbaj4+M109K29kKCtoW2c+PjNdKTtsPShjWyhCUSgpfDApPj4yXXwwKT09MDtlPWNbZT4+Ml18MDtpZihsKXtoZShlLCtoW2o+PjNdKTtpPWs7cmV0dXJufWVsc2V7bD1DUShjWyhCUSgpfDApPj4yXXwwKXwwO2llKGUsbCxjWyhCUSgpfDApPj4yXXwwKTtpPWs7cmV0dXJufX1mdW5jdGlvbiBzYyhhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGo9MCxrPTAsbD0wO2s9aTtpPWkrMzJ8MDtlPWsrMjR8MDtsPWsrMjB8MDtmPWsrMTZ8MDtnPWsrOHwwO2o9aztjW2U+PjJdPWE7Y1tsPj4yXT1iO2NbZj4+Ml09ZDtoW2c+PjNdPTAuMDtpZigoY1tsPj4yXXwwKSE9MSlTYSgxNjcyNiwxNjczNCw0OTksMTcyNDgpO2lmKChlZShjW2NbZj4+Ml0+PjJdfDApfDApPT01KXtsZShjW2U+PjJdfDApO2k9aztyZXR1cm59aFtnPj4zXT0rYmUoY1tjW2Y+PjJdPj4yXXwwKTtjWyhCUSgpfDApPj4yXT0wO2hbaj4+M109K3BkKCtoW2c+PjNdKTtsPShjWyhCUSgpfDApPj4yXXwwKT09MDtlPWNbZT4+Ml18MDtpZihsKXtoZShlLCtoW2o+PjNdKTtpPWs7cmV0dXJufWVsc2V7bD1DUShjWyhCUSgpfDApPj4yXXwwKXwwO2llKGUsbCxjWyhCUSgpfDApPj4yXXwwKTtpPWs7cmV0dXJufX1mdW5jdGlvbiB0YyhhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGo9MCxrPTAsbD0wO2s9aTtpPWkrMzJ8MDtlPWsrMjR8MDtsPWsrMjB8MDtmPWsrMTZ8MDtnPWsrOHwwO2o9aztjW2U+PjJdPWE7Y1tsPj4yXT1iO2NbZj4+Ml09ZDtoW2c+PjNdPTAuMDtpZigoY1tsPj4yXXwwKSE9MSlTYSgxNjcyNiwxNjczNCw0MjAsMTcyNjApO2lmKChlZShjW2NbZj4+Ml0+PjJdfDApfDApPT01KXtsZShjW2U+PjJdfDApO2k9aztyZXR1cm59aFtnPj4zXT0rYmUoY1tjW2Y+PjJdPj4yXXwwKTtjWyhCUSgpfDApPj4yXT0wO2hbaj4+M109K1EoKygraFtnPj4zXSkpO2w9KGNbKEJRKCl8MCk+PjJdfDApPT0wO2U9Y1tlPj4yXXwwO2lmKGwpe2hlKGUsK2hbaj4+M10pO2k9aztyZXR1cm59ZWxzZXtsPUNRKGNbKEJRKCl8MCk+PjJdfDApfDA7aWUoZSxsLGNbKEJRKCl8MCk+PjJdfDApO2k9aztyZXR1cm59fWZ1bmN0aW9uIHVjKGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaj0wLGs9MCxsPTA7az1pO2k9aSszMnwwO2U9aysyNHwwO2w9aysyMHwwO2Y9aysxNnwwO2c9ays4fDA7aj1rO2NbZT4+Ml09YTtjW2w+PjJdPWI7Y1tmPj4yXT1kO2hbZz4+M109MC4wO2lmKChjW2w+PjJdfDApIT0xKVNhKDE2NzI2LDE2NzM0LDQxOSwxNzI2OCk7aWYoKGVlKGNbY1tmPj4yXT4+Ml18MCl8MCk9PTUpe2xlKGNbZT4+Ml18MCk7aT1rO3JldHVybn1oW2c+PjNdPStiZShjW2NbZj4+Ml0+PjJdfDApO2NbKEJRKCl8MCk+PjJdPTA7aFtqPj4zXT0rUigrKCtoW2c+PjNdKSk7bD0oY1soQlEoKXwwKT4+Ml18MCk9PTA7ZT1jW2U+PjJdfDA7aWYobCl7aGUoZSwraFtqPj4zXSk7aT1rO3JldHVybn1lbHNle2w9Q1EoY1soQlEoKXwwKT4+Ml18MCl8MDtpZShlLGwsY1soQlEoKXwwKT4+Ml18MCk7aT1rO3JldHVybn19ZnVuY3Rpb24gdmMoYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxqPTAsaz0wLGw9MDtrPWk7aT1pKzMyfDA7ZT1rKzI0fDA7bD1rKzIwfDA7Zj1rKzE2fDA7Zz1rKzh8MDtqPWs7Y1tlPj4yXT1hO2NbbD4+Ml09YjtjW2Y+PjJdPWQ7aFtnPj4zXT0wLjA7aWYoKGNbbD4+Ml18MCkhPTEpU2EoMTY3MjYsMTY3MzQsNDIxLDE3Mjc2KTtpZigoZWUoY1tjW2Y+PjJdPj4yXXwwKXwwKT09NSl7bGUoY1tlPj4yXXwwKTtpPWs7cmV0dXJufWhbZz4+M109K2JlKGNbY1tmPj4yXT4+Ml18MCk7Y1soQlEoKXwwKT4+Ml09MDtoW2o+PjNdPStTKCsoK2hbZz4+M10pKTtsPShjWyhCUSgpfDApPj4yXXwwKT09MDtlPWNbZT4+Ml18MDtpZihsKXtoZShlLCtoW2o+PjNdKTtpPWs7cmV0dXJufWVsc2V7bD1DUShjWyhCUSgpfDApPj4yXXwwKXwwO2llKGUsbCxjWyhCUSgpfDApPj4yXXwwKTtpPWs7cmV0dXJufX1mdW5jdGlvbiB3YyhhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGo9MCxrPTAsbD0wO2s9aTtpPWkrMzJ8MDtlPWsrMjR8MDtsPWsrMjB8MDtmPWsrMTZ8MDtnPWsrOHwwO2o9aztjW2U+PjJdPWE7Y1tsPj4yXT1iO2NbZj4+Ml09ZDtoW2c+PjNdPTAuMDtpZigoY1tsPj4yXXwwKSE9MSlTYSgxNjcyNiwxNjczNCw0MjIsMTcyODQpO2lmKChlZShjW2NbZj4+Ml0+PjJdfDApfDApPT01KXtsZShjW2U+PjJdfDApO2k9aztyZXR1cm59aFtnPj4zXT0rYmUoY1tjW2Y+PjJdPj4yXXwwKTtjWyhCUSgpfDApPj4yXT0wO2hbaj4+M109K3FkKCtoW2c+PjNdKTtsPShjWyhCUSgpfDApPj4yXXwwKT09MDtlPWNbZT4+Ml18MDtpZihsKXtoZShlLCtoW2o+PjNdKTtpPWs7cmV0dXJufWVsc2V7bD1DUShjWyhCUSgpfDApPj4yXXwwKXwwO2llKGUsbCxjWyhCUSgpfDApPj4yXXwwKTtpPWs7cmV0dXJufX1mdW5jdGlvbiB4YyhhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGo9MCxrPTAsbD0wO2s9aTtpPWkrMzJ8MDtlPWsrMjR8MDtsPWsrMjB8MDtmPWsrMTZ8MDtnPWsrOHwwO2o9aztjW2U+PjJdPWE7Y1tsPj4yXT1iO2NbZj4+Ml09ZDtoW2c+PjNdPTAuMDtpZigoY1tsPj4yXXwwKSE9MSlTYSgxNjcyNiwxNjczNCw0NDYsMTcyOTIpO2lmKChlZShjW2NbZj4+Ml0+PjJdfDApfDApPT01KXtsZShjW2U+PjJdfDApO2k9aztyZXR1cm59aFtnPj4zXT0rYmUoY1tjW2Y+PjJdPj4yXXwwKTtjWyhCUSgpfDApPj4yXT0wO2hbaj4+M109K0xRKCtoW2c+PjNdKTtsPShjWyhCUSgpfDApPj4yXXwwKT09MDtlPWNbZT4+Ml18MDtpZihsKXtoZShlLCtoW2o+PjNdKTtpPWs7cmV0dXJufWVsc2V7bD1DUShjWyhCUSgpfDApPj4yXXwwKXwwO2llKGUsbCxjWyhCUSgpfDApPj4yXXwwKTtpPWs7cmV0dXJufX1mdW5jdGlvbiB5YyhhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGo9MCxrPTAsbD0wO2s9aTtpPWkrMzJ8MDtlPWsrMjR8MDtsPWsrMjB8MDtmPWsrMTZ8MDtnPWsrOHwwO2o9aztjW2U+PjJdPWE7Y1tsPj4yXT1iO2NbZj4+Ml09ZDtoW2c+PjNdPTAuMDtpZigoY1tsPj4yXXwwKSE9MSlTYSgxNjcyNiwxNjczNCw0MzgsMTczMDEpO2lmKChlZShjW2NbZj4+Ml0+PjJdfDApfDApPT01KXtsZShjW2U+PjJdfDApO2k9aztyZXR1cm59aFtnPj4zXT0rYmUoY1tjW2Y+PjJdPj4yXXwwKTtjWyhCUSgpfDApPj4yXT0wO2hbaj4+M109K1BRKCtoW2c+PjNdKTtsPShjWyhCUSgpfDApPj4yXXwwKT09MDtlPWNbZT4+Ml18MDtpZihsKXtoZShlLCtoW2o+PjNdKTtpPWs7cmV0dXJufWVsc2V7bD1DUShjWyhCUSgpfDApPj4yXXwwKXwwO2llKGUsbCxjWyhCUSgpfDApPj4yXXwwKTtpPWs7cmV0dXJufX1mdW5jdGlvbiB6YyhhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGo9MCxrPTAsbD0wO2s9aTtpPWkrMzJ8MDtlPWsrMjR8MDtsPWsrMjB8MDtmPWsrMTZ8MDtnPWsrOHwwO2o9aztjW2U+PjJdPWE7Y1tsPj4yXT1iO2NbZj4+Ml09ZDtoW2c+PjNdPTAuMDtpZigoY1tsPj4yXXwwKSE9MSlTYSgxNjcyNiwxNjczNCw0NTQsMTczMTApO2lmKChlZShjW2NbZj4+Ml0+PjJdfDApfDApPT01KXtsZShjW2U+PjJdfDApO2k9aztyZXR1cm59aFtnPj4zXT0rYmUoY1tjW2Y+PjJdPj4yXXwwKTtjWyhCUSgpfDApPj4yXT0wO2hbaj4+M109K1FRKCtoW2c+PjNdKTtsPShjWyhCUSgpfDApPj4yXXwwKT09MDtlPWNbZT4+Ml18MDtpZihsKXtoZShlLCtoW2o+PjNdKTtpPWs7cmV0dXJufWVsc2V7bD1DUShjWyhCUSgpfDApPj4yXXwwKXwwO2llKGUsbCxjWyhCUSgpfDApPj4yXXwwKTtpPWs7cmV0dXJufX1mdW5jdGlvbiBBYyhhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGo9MCxrPTAsbD0wO2s9aTtpPWkrMzJ8MDtlPWsrMjR8MDtsPWsrMjB8MDtmPWsrMTZ8MDtnPWsrOHwwO2o9aztjW2U+PjJdPWE7Y1tsPj4yXT1iO2NbZj4+Ml09ZDtoW2c+PjNdPTAuMDtpZigoY1tsPj4yXXwwKSE9MSlTYSgxNjcyNiwxNjczNCw0NTYsMTczMTkpO2lmKChlZShjW2NbZj4+Ml0+PjJdfDApfDApPT01KXtsZShjW2U+PjJdfDApO2k9aztyZXR1cm59aFtnPj4zXT0rYmUoY1tjW2Y+PjJdPj4yXXwwKTtjWyhCUSgpfDApPj4yXT0wO2hbaj4+M109K3JkKCtoW2c+PjNdKTtsPShjWyhCUSgpfDApPj4yXXwwKT09MDtlPWNbZT4+Ml18MDtpZihsKXtoZShlLCtoW2o+PjNdKTtpPWs7cmV0dXJufWVsc2V7bD1DUShjWyhCUSgpfDApPj4yXXwwKXwwO2llKGUsbCxjWyhCUSgpfDApPj4yXXwwKTtpPWs7cmV0dXJufX1mdW5jdGlvbiBCYyhhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGo9MCxrPTAsbD0wO2s9aTtpPWkrMzJ8MDtlPWsrMjR8MDtsPWsrMjB8MDtmPWsrMTZ8MDtnPWsrOHwwO2o9aztjW2U+PjJdPWE7Y1tsPj4yXT1iO2NbZj4+Ml09ZDtoW2c+PjNdPTAuMDtpZigoY1tsPj4yXXwwKSE9MSlTYSgxNjcyNiwxNjczNCw0NzQsMTczMjgpO2lmKChlZShjW2NbZj4+Ml0+PjJdfDApfDApPT01KXtsZShjW2U+PjJdfDApO2k9aztyZXR1cm59aFtnPj4zXT0rYmUoY1tjW2Y+PjJdPj4yXXwwKTtjWyhCUSgpfDApPj4yXT0wO2hbaj4+M109K1goKygraFtnPj4zXSkpO2w9KGNbKEJRKCl8MCk+PjJdfDApPT0wO2U9Y1tlPj4yXXwwO2lmKGwpe2hlKGUsK2hbaj4+M10pO2k9aztyZXR1cm59ZWxzZXtsPUNRKGNbKEJRKCl8MCk+PjJdfDApfDA7aWUoZSxsLGNbKEJRKCl8MCk+PjJdfDApO2k9aztyZXR1cm59fWZ1bmN0aW9uIENjKGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaj0wLGs9MCxsPTA7az1pO2k9aSszMnwwO2U9aysyNHwwO2w9aysyMHwwO2Y9aysxNnwwO2c9ays4fDA7aj1rO2NbZT4+Ml09YTtjW2w+PjJdPWI7Y1tmPj4yXT1kO2hbZz4+M109MC4wO2lmKChjW2w+PjJdfDApIT0xKVNhKDE2NzI2LDE2NzM0LDQ3MiwxNzMzNik7aWYoKGVlKGNbY1tmPj4yXT4+Ml18MCl8MCk9PTUpe2xlKGNbZT4+Ml18MCk7aT1rO3JldHVybn1oW2c+PjNdPStiZShjW2NbZj4+Ml0+PjJdfDApO2NbKEJRKCl8MCk+PjJdPTA7aFtqPj4zXT0rWSgrKCtoW2c+PjNdKSk7bD0oY1soQlEoKXwwKT4+Ml18MCk9PTA7ZT1jW2U+PjJdfDA7aWYobCl7aGUoZSwraFtqPj4zXSk7aT1rO3JldHVybn1lbHNle2w9Q1EoY1soQlEoKXwwKT4+Ml18MCl8MDtpZShlLGwsY1soQlEoKXwwKT4+Ml18MCk7aT1rO3JldHVybn19ZnVuY3Rpb24gRGMoYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxqPTAsaz0wLGw9MDtrPWk7aT1pKzMyfDA7ZT1rKzI0fDA7bD1rKzIwfDA7Zj1rKzE2fDA7Zz1rKzh8MDtqPWs7Y1tlPj4yXT1hO2NbbD4+Ml09YjtjW2Y+PjJdPWQ7aFtnPj4zXT0wLjA7aWYoKGNbbD4+Ml18MCkhPTEpU2EoMTY3MjYsMTY3MzQsNDczLDE3MzQ0KTtpZigoZWUoY1tjW2Y+PjJdPj4yXXwwKXwwKT09NSl7bGUoY1tlPj4yXXwwKTtpPWs7cmV0dXJufWhbZz4+M109K2JlKGNbY1tmPj4yXT4+Ml18MCk7Y1soQlEoKXwwKT4+Ml09MDtoW2o+PjNdPStOUSgraFtnPj4zXSk7bD0oY1soQlEoKXwwKT4+Ml18MCk9PTA7ZT1jW2U+PjJdfDA7aWYobCl7aGUoZSwraFtqPj4zXSk7aT1rO3JldHVybn1lbHNle2w9Q1EoY1soQlEoKXwwKT4+Ml18MCl8MDtpZShlLGwsY1soQlEoKXwwKT4+Ml18MCk7aT1rO3JldHVybn19ZnVuY3Rpb24gRWMoYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxqPTAsaz0wLGw9MCxtPTA7bD1pO2k9aSs0OHwwO2U9bCszMnwwO209bCsyOHwwO2Y9bCsyNHwwO2c9bCsxNnwwO2o9bCs4fDA7az1sO2NbZT4+Ml09YTtjW20+PjJdPWI7Y1tmPj4yXT1kO2hbZz4+M109MC4wO2hbaj4+M109MC4wO2lmKChjW20+PjJdfDApIT0yKVNhKDE2Nzg1LDE2NzM0LDU0NiwxNzM1NCk7aWYoKGVlKGNbY1tmPj4yXT4+Ml18MCl8MCkhPTU/KGVlKGNbKGNbZj4+Ml18MCkrND4+Ml18MCl8MCkhPTU6MCl7aFtnPj4zXT0rYmUoY1tjW2Y+PjJdPj4yXXwwKTtoW2o+PjNdPStiZShjWyhjW2Y+PjJdfDApKzQ+PjJdfDApO2NbKEJRKCl8MCk+PjJdPTA7aFtrPj4zXT0rUCgrKCtoW2c+PjNdKSwrKCtoW2o+PjNdKSk7bT0oY1soQlEoKXwwKT4+Ml18MCk9PTA7ZT1jW2U+PjJdfDA7aWYobSl7aGUoZSwraFtrPj4zXSk7aT1sO3JldHVybn1lbHNle209Q1EoY1soQlEoKXwwKT4+Ml18MCl8MDtpZShlLG0sY1soQlEoKXwwKT4+Ml18MCk7aT1sO3JldHVybn19bGUoY1tlPj4yXXwwKTtpPWw7cmV0dXJufWZ1bmN0aW9uIEZjKGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaj0wLGs9MCxsPTA7az1pO2k9aSszMnwwO2o9aysyNHwwO2w9aysyMHwwO2U9aysxNnwwO2c9ays4fDA7Zj1rO2Nbaj4+Ml09YTtjW2w+PjJdPWI7Y1tlPj4yXT1kO2hbZz4+M109MC4wO2E9ZjtjW2E+PjJdPTA7Y1thKzQ+PjJdPTA7aWYoKGNbbD4+Ml18MCkhPTEpU2EoMTY3MjYsMTY3MzQsNTkwLDE3MzY0KTtzd2l0Y2goZWUoY1tjW2U+PjJdPj4yXXwwKXwwKXtjYXNlIDE6e2w9ZjtjW2w+PjJdPWRlKGNbY1tlPj4yXT4+Ml18MCl8MDtjW2wrND4+Ml09QztsPWY7Zz1jW2wrND4+Ml18MDtpZigoZ3wwKT4wfChnfDApPT0wJihjW2w+PjJdfDApPj4+MD4wKWU9MTtlbHNlIGU9KGNbZis0Pj4yXXwwKTwwPy0xOjA7bD1mO2NbbD4+Ml09ZTtjW2wrND4+Ml09KChlfDApPDApPDwzMT4+MzE7bD1mO2tlKGNbaj4+Ml18MCxjW2w+PjJdfDAsY1tsKzQ+PjJdfDApO2k9aztyZXR1cm59Y2FzZSA1OntsZShjW2o+PjJdfDApO2k9aztyZXR1cm59ZGVmYXVsdDp7aFtnPj4zXT0rYmUoY1tjW2U+PjJdPj4yXXwwKTtpZigraFtnPj4zXT4wLjApZT0xO2Vsc2UgZT0raFtnPj4zXTwwLjA/LTE6MDtoW2c+PjNdPSsoZXwwKTtoZShjW2o+PjJdfDAsK2hbZz4+M10pO2k9aztyZXR1cm59fX1mdW5jdGlvbiBHYyhhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGo9MCxrPTAsbD0wO2s9aTtpPWkrMzJ8MDtlPWsrMjR8MDtsPWsrMjB8MDtmPWsrMTZ8MDtnPWsrOHwwO2o9aztjW2U+PjJdPWE7Y1tsPj4yXT1iO2NbZj4+Ml09ZDtoW2c+PjNdPTAuMDtpZigoY1tsPj4yXXwwKSE9MSlTYSgxNjcyNiwxNjczNCwzNzUsMTczNzMpO2lmKChlZShjW2NbZj4+Ml0+PjJdfDApfDApPT01KXtsZShjW2U+PjJdfDApO2k9aztyZXR1cm59aFtnPj4zXT0rYmUoY1tjW2Y+PjJdPj4yXXwwKTtjWyhCUSgpfDApPj4yXT0wO2hbaj4+M109K08oKygraFtnPj4zXSkpO2w9KGNbKEJRKCl8MCk+PjJdfDApPT0wO2U9Y1tlPj4yXXwwO2lmKGwpe2hlKGUsK2hbaj4+M10pO2k9aztyZXR1cm59ZWxzZXtsPUNRKGNbKEJRKCl8MCk+PjJdfDApfDA7aWUoZSxsLGNbKEJRKCl8MCk+PjJdfDApO2k9aztyZXR1cm59fWZ1bmN0aW9uIEhjKGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaj0wLGs9MCxsPTA7az1pO2k9aSszMnwwO2U9aysyNHwwO2w9aysyMHwwO2Y9aysxNnwwO2c9ays4fDA7aj1rO2NbZT4+Ml09YTtjW2w+PjJdPWI7Y1tmPj4yXT1kO2E9ZztjW2E+PjJdPTA7Y1thKzQ+PjJdPTA7aFtqPj4zXT0wLjA7aWYoKGNbbD4+Ml18MCkhPTEpU2EoMTY3MjYsMTY3MzQsNTE0LDE3MzgyKTtzd2l0Y2goZWUoY1tjW2Y+PjJdPj4yXXwwKXwwKXtjYXNlIDE6e2E9ZztjW2E+PjJdPWRlKGNbY1tmPj4yXT4+Ml18MCl8MDtjW2ErND4+Ml09QzthPWNbZT4+Ml18MDtqPWc7bD1nO2tlKGEsYVMoY1tqPj4yXXwwLGNbais0Pj4yXXwwLGNbbD4+Ml18MCxjW2wrND4+Ml18MCl8MCxDKTtpPWs7cmV0dXJufWNhc2UgNTp7bGUoY1tlPj4yXXwwKTtpPWs7cmV0dXJufWRlZmF1bHQ6e2hbaj4+M109K2JlKGNbY1tmPj4yXT4+Ml18MCk7aGUoY1tlPj4yXXwwLCtoW2o+PjNdKitoW2o+PjNdKTtpPWs7cmV0dXJufX19ZnVuY3Rpb24gSWMoYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxqPTAsaz0wLGw9MCxtPTAuMDtrPWk7aT1pKzQ4fDA7ZT1rKzMyfDA7bD1rKzI4fDA7Zj1rKzI0fDA7aj1rKzE2fDA7Zz1rO2NbZT4+Ml09YTtjW2w+PjJdPWI7Y1tmPj4yXT1kO2hbaj4+M109MC4wO2E9ays4fDA7Y1thPj4yXT0wO2NbYSs0Pj4yXT0wO2lmKChjW2w+PjJdfDApIT0xKVNhKDE2NzI2LDE2NzM0LDYyMCwxNzM5Myk7c3dpdGNoKGVlKGNbY1tmPj4yXT4+Ml18MCl8MCl7Y2FzZSAxOntsPWc7Y1tsPj4yXT1kZShjW2NbZj4+Ml0+PjJdfDApfDA7Y1tsKzQ+PjJdPUM7bD1nO2tlKGNbZT4+Ml18MCxjW2w+PjJdfDAsY1tsKzQ+PjJdfDApO2k9aztyZXR1cm59Y2FzZSA1OntsZShjW2U+PjJdfDApO2k9aztyZXR1cm59ZGVmYXVsdDp7aFtqPj4zXT0rYmUoY1tjW2Y+PjJdPj4yXXwwKTttPStaKCsoK2hbaj4+M10pKTtrZShjW2U+PjJdfDAsfn5tPj4+MCwrTihtKT49MS4wPyhtPjAuMD9+fiskKCtNKG0vNDI5NDk2NzI5Ni4wKSw0Mjk0OTY3Mjk1LjApPj4+MDp+fitaKChtLSsofn5tPj4+MCkpLzQyOTQ5NjcyOTYuMCk+Pj4wKTowKTtpPWs7cmV0dXJufX19ZnVuY3Rpb24gSmMoYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxqPTAsaz0wLGw9MCxtPTAuMDtrPWk7aT1pKzQ4fDA7ZT1rKzMyfDA7bD1rKzI4fDA7Zj1rKzI0fDA7aj1rKzE2fDA7Zz1rO2NbZT4+Ml09YTtjW2w+PjJdPWI7Y1tmPj4yXT1kO2hbaj4+M109MC4wO2E9ays4fDA7Y1thPj4yXT0wO2NbYSs0Pj4yXT0wO2lmKChjW2w+PjJdfDApIT0xKVNhKDE2NzI2LDE2NzM0LDY0NSwxNzQwMik7c3dpdGNoKGVlKGNbY1tmPj4yXT4+Ml18MCl8MCl7Y2FzZSAxOntsPWc7Y1tsPj4yXT1kZShjW2NbZj4+Ml0+PjJdfDApfDA7Y1tsKzQ+PjJdPUM7bD1nO2tlKGNbZT4+Ml18MCxjW2w+PjJdfDAsY1tsKzQ+PjJdfDApO2k9aztyZXR1cm59Y2FzZSA1OntsZShjW2U+PjJdfDApO2k9aztyZXR1cm59ZGVmYXVsdDp7aFtqPj4zXT0rYmUoY1tjW2Y+PjJdPj4yXXwwKTttPStNKCsoK2hbaj4+M10pKTtrZShjW2U+PjJdfDAsfn5tPj4+MCwrTihtKT49MS4wPyhtPjAuMD9+fiskKCtNKG0vNDI5NDk2NzI5Ni4wKSw0Mjk0OTY3Mjk1LjApPj4+MDp+fitaKChtLSsofn5tPj4+MCkpLzQyOTQ5NjcyOTYuMCk+Pj4wKTowKTtpPWs7cmV0dXJufX19ZnVuY3Rpb24gS2MoYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wO2U9aTtpPWkrMTZ8MDtmPWUrOHwwO2NbZj4+Ml09YTtjW2UrND4+Ml09YjtjW2U+PjJdPWQ7aGUoY1tmPj4yXXwwLDMuMTQxNTkyNjUzNTg5NzkzKTtpPWU7cmV0dXJufWZ1bmN0aW9uIExjKGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wO249aTtpPWkrNjR8MDtlPW4rNDh8MDtvPW4rNDR8MDtmPW4rNDB8MDtsPW4rMzZ8MDttPW4rMzJ8MDtoPW4rMjR8MDtqPW4rMTZ8MDtrPW4rOHwwO2c9bjtjW2U+PjJdPWE7Y1tvPj4yXT1iO2NbZj4+Ml09ZDthPWc7Y1thPj4yXT0wO2NbYSs0Pj4yXT0wO2lmKChjW28+PjJdfDApIT0yKXtpPW47cmV0dXJufWlmKDU9PShlZShjW2NbZj4+Ml0+PjJdfDApfDApKXtpPW47cmV0dXJufWE9ZGUoY1soY1tmPj4yXXwwKSs0Pj4yXXwwKXwwO289aDtjW28+PjJdPWE7Y1tvKzQ+PjJdPUM7aWYoKGNbaCs0Pj4yXXwwKTwwKXtpZShjW2U+PjJdfDAsMTc0MTIsLTEpO2k9bjtyZXR1cm59YT1hZShjW2NbZj4+Ml0+PjJdfDApfDA7bz1qO2Nbbz4+Ml09YTtjW28rND4+Ml09KChhfDApPDApPDwzMT4+MzE7bz1qO2E9aDthPWFTKGNbbz4+Ml18MCxjW28rND4+Ml18MCxjW2E+PjJdfDAsY1thKzQ+PjJdfDApfDA7bz1rO2Nbbz4+Ml09YTtjW28rND4+Ml09QztvPWs7bz1SUihjW28+PjJdfDAsY1tvKzQ+PjJdfDAsMSwwKXwwO2NbbD4+Ml09SWQobyl8MDtvPWo7bz1SUihjW28+PjJdfDAsY1tvKzQ+PjJdfDAsMSwwKXwwO2NbbT4+Ml09SWQobyl8MDtpZigoY1tsPj4yXXwwKSE9MCYoY1ttPj4yXXwwKSE9MCl7bz1jW20+PjJdfDA7aVIobywkZChjW2NbZj4+Ml0+PjJdfDApfDApfDA7bz1nO2Nbbz4+Ml09MDtjW28rND4+Ml09MDt3aGlsZSgxKXtrPWc7ZD1jW2srND4+Ml18MDtvPWg7YT1jW28rND4+Ml18MDtpZighKChkfDApPChhfDApfCgoZHwwKT09KGF8MCk/KGNbaz4+Ml18MCk+Pj4wPChjW28+PjJdfDApPj4+MDowKSkpYnJlYWs7bz1jW2w+PjJdfDA7YT1nO2s9ajtrPWFTKGNbYT4+Ml18MCxjW2ErND4+Ml18MCxjW2s+PjJdfDAsY1trKzQ+PjJdfDApfDA7aVIobytrfDAsY1ttPj4yXXwwKXwwO2s9ZztrPVJSKGNbaz4+Ml18MCxjW2srND4+Ml18MCwxLDApfDA7bz1nO2Nbbz4+Ml09aztjW28rND4+Ml09Q31tZShjW2U+PjJdfDAsY1tsPj4yXXwwLC0xLC0xKTtLZChjW2w+PjJdfDApO0tkKGNbbT4+Ml18MCk7aT1uO3JldHVybn1zZShjW2U+PjJdfDApO2lmKGNbbD4+Ml18MClLZChjW2w+PjJdfDApO2lmKCEoY1ttPj4yXXwwKSl7aT1uO3JldHVybn1LZChjW20+PjJdfDApO2k9bjtyZXR1cm59ZnVuY3Rpb24gTWMoYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wO209aTtpPWkrMzJ8MDtlPW0rMjR8MDtmPW0rMjB8MDtnPW0rMTZ8MDtrPW0rMTJ8MDtsPW0rOHwwO2o9bSs0fDA7aD1tO2NbZT4+Ml09YTtjW2Y+PjJdPWI7Y1tnPj4yXT1kO2Nbaj4+Ml09MDtjW2g+PjJdPTA7aWYoISgoY1tmPj4yXXwwKT09M3woY1tmPj4yXXwwKT09MikpU2EoMTc0MjUsMTY3MzQsMTAzOCwxNzQ0Myk7aWYoNSE9KGVlKGNbY1tnPj4yXT4+Ml18MCl8MCk/NSE9KGVlKGNbKGNbZz4+Ml18MCkrND4+Ml18MCl8MCk6MCl7Y1trPj4yXT0kZChjW2NbZz4+Ml0+PjJdfDApfDA7aWYoIShjW2s+PjJdfDApKXtpPW07cmV0dXJufWNbbD4+Ml09JGQoY1soY1tnPj4yXXwwKSs0Pj4yXXwwKXwwO2lmKChjW2Y+PjJdfDApPT0zKXthPShjZShjWyhjW2c+PjJdfDApKzg+PjJdfDApfDApLTF8MDtjW2o+PjJdPWE7Y1tqPj4yXT0oY1tqPj4yXXwwKTwwPzA6YX1lbHNlIGNbaj4+Ml09MDtjW2g+PjJdPXNkKGNbaz4+Ml18MCxjW2w+PjJdfDAsY1tqPj4yXXwwLDApfDA7amUoY1tlPj4yXXwwLChjW2g+PjJdfDApKzF8MCk7aT1tO3JldHVybn1sZShjW2U+PjJdfDApO2k9bTtyZXR1cm59ZnVuY3Rpb24gTmMoYixlLGYpe2I9YnwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTA7cD1pO2k9aSs0OHwwO2c9cCszMnwwO3E9cCsyOHwwO2g9cCsyNHwwO2o9cCsyMHwwO2s9cCsxNnwwO2w9cCsxMnwwO249cCs4fDA7bz1wKzR8MDttPXA7Y1tnPj4yXT1iO2NbcT4+Ml09ZTtjW2g+PjJdPWY7Y1tqPj4yXT0wO2Nbaz4+Ml09MDtjW2w+PjJdPTA7aWYoKGNbcT4+Ml18MCkhPTIpU2EoMTY3ODUsMTY3MzQsMTA3MywxNzQ1Nyk7aWYoNSE9KGVlKGNbY1toPj4yXT4+Ml18MCl8MCk/NSE9KGVlKGNbKGNbaD4+Ml18MCkrND4+Ml18MCl8MCk6MCl7Y1tuPj4yXT0kZChjW2NbaD4+Ml0+PjJdfDApfDA7Y1tsPj4yXT1jZShjWyhjW2g+PjJdfDApKzQ+PjJdfDApfDA7Y1tvPj4yXT1jW24+PjJdO2E6d2hpbGUoMSl7aWYoIShuZChjW28+PjJdfDApfDApKWJyZWFrO3E9Y1tqPj4yXXwwO2Nbaj4+Ml09cSsxO2lmKChxfDApPj0oY1tsPj4yXXwwKSlicmVhazt3aGlsZSgxKXtxPShjW28+PjJdfDApKzF8MDtjW28+PjJdPXE7aWYoKDE5MiYoZFtxPj4wXXwwKXwwKSE9MTI4KWNvbnRpbnVlIGF9fWNbaz4+Ml09KGNbbz4+Ml18MCktKGNbbj4+Ml18MCk7Y1ttPj4yXT1JZCgoY1tvPj4yXXwwKS0oY1tuPj4yXXwwKSsxfDApfDA7aWYoY1ttPj4yXXwwKXttUihjW20+PjJdfDAsY1tuPj4yXXwwLChjW28+PjJdfDApLShjW24+PjJdfDApfDApfDA7YVsoY1ttPj4yXXwwKSsoY1trPj4yXXwwKT4+MF09MDttZShjW2c+PjJdfDAsY1ttPj4yXXwwLC0xLC0xKTtLZChjW20+PjJdfDApO2k9cDtyZXR1cm59ZWxzZXtzZShjW2c+PjJdfDApO2k9cDtyZXR1cm59fWxlKGNbZz4+Ml18MCk7aT1wO3JldHVybn1mdW5jdGlvbiBPYyhiLGQsZSl7Yj1ifDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTA7cD1pO2k9aSs0OHwwO2Y9cCszNnwwO3E9cCszMnwwO2c9cCsyOHwwO2s9cCsyNHwwO2g9cCsyMHwwO2o9cCsxNnwwO209cCsxMnwwO289cCs4fDA7bj1wKzR8MDtsPXA7Y1tmPj4yXT1iO2NbcT4+Ml09ZDtjW2c+PjJdPWU7Y1trPj4yXT0wO2NbaD4+Ml09MDtjW2o+PjJdPTA7aWYoKGNbcT4+Ml18MCkhPTIpU2EoMTY3ODUsMTY3MzQsMTExMywxNzQ2Nik7aWYoNSE9KGVlKGNbY1tnPj4yXT4+Ml18MCl8MCk/NSE9KGVlKGNbKGNbZz4+Ml18MCkrND4+Ml18MCl8MCk6MCl7Y1ttPj4yXT0kZChjW2NbZz4+Ml0+PjJdfDApfDA7Y1trPj4yXT1jZShjWyhjW2c+PjJdfDApKzQ+PjJdfDApfDA7Y1tvPj4yXT1jW20+PjJdO3doaWxlKDEpe2lmKCEobmQoY1tvPj4yXXwwKXwwKSlicmVhaztkb3txPShjW28+PjJdfDApKzF8MDtjW28+PjJdPXF9d2hpbGUoKDE5MiZhW3E+PjBdfDApPT0xMjgpO2NbaD4+Ml09KGNbaD4+Ml18MCkrMX1jW24+PjJdPWNbbz4+Ml07Y1tvPj4yXT1jW20+PjJdO3E9KGNbaD4+Ml18MCktKGNbaz4+Ml18MCl8MDtjW2o+PjJdPXE7Y1tqPj4yXT0oY1tqPj4yXXwwKTwwPzA6cTthOndoaWxlKDEpe3E9Y1tqPj4yXXwwO2Nbaj4+Ml09cSstMTtpZigocXwwKTw9MClicmVhazt3aGlsZSgxKXtxPShjW28+PjJdfDApKzF8MDtjW28+PjJdPXE7aWYoKDE5MiZhW3E+PjBdfDApIT0xMjgpY29udGludWUgYX19Y1tsPj4yXT1JZCgoY1tuPj4yXXwwKS0oY1tvPj4yXXwwKSsxfDApfDA7aWYoY1tsPj4yXXwwKXtpUihjW2w+PjJdfDAsY1tvPj4yXXwwKXwwO21lKGNbZj4+Ml18MCxjW2w+PjJdfDAsLTEsLTEpO0tkKGNbbD4+Ml18MCk7aT1wO3JldHVybn1lbHNle3NlKGNbZj4+Ml18MCk7aT1wO3JldHVybn19bGUoY1tmPj4yXXwwKTtpPXA7cmV0dXJufWZ1bmN0aW9uIFBjKGIsZCxlKXtiPWJ8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wO289aTtpPWkrNDh8MDtmPW8rMzJ8MDtwPW8rMjh8MDtnPW8rMjR8MDttPW8rMjB8MDtuPW8rMTZ8MDtrPW8rMTJ8MDtsPW8rOHwwO2o9bys0fDA7aD1vO2NbZj4+Ml09YjtjW3A+PjJdPWQ7Y1tnPj4yXT1lO2Nbaj4+Ml09MDtjW2g+PjJdPTA7aWYoMSE9KGNbcD4+Ml18MCkpU2EoMTc0NzYsMTY3MzQsMTMyMywxNzQ4NCk7aWYoNT09KGVlKGNbY1tnPj4yXT4+Ml18MCl8MCkpe2xlKGNbZj4+Ml18MCk7aT1vO3JldHVybn1jW20+PjJdPSRkKGNbY1tnPj4yXT4+Ml18MCl8MDtjW2o+PjJdPWtSKGNbbT4+Ml18MCl8MDtjW2s+PjJdPUlkKChjW2o+PjJdfDApKzF8MCl8MDtpZighKGNbaz4+Ml18MCkpe3NlKGNbZj4+Ml18MCk7aT1vO3JldHVybn1jW2w+PjJdPShjW2s+PjJdfDApKyhjW2o+PjJdfDApO3A9Y1tsPj4yXXwwO2NbbD4+Ml09cCstMTthW3A+PjBdPTA7Y1tuPj4yXT1jW20+PjJdO2E6d2hpbGUoMSl7aWYoIShuZChjW24+PjJdfDApfDApKWJyZWFrO2NbbT4+Ml09Y1tuPj4yXTtkb3twPShjW24+PjJdfDApKzF8MDtjW24+PjJdPXB9d2hpbGUoKDE5MiZhW3A+PjBdfDApPT0xMjgpO2NbaD4+Ml09MTt3aGlsZSgxKXtpZigoKGNbbj4+Ml18MCkrKDAtKGNbaD4+Ml18MCkpfDApPj4+MDwoY1ttPj4yXXwwKT4+PjApY29udGludWUgYTtqPWFbKGNbbj4+Ml18MCkrKDAtKGNbaD4+Ml18MCkpPj4wXXwwO3A9Y1tsPj4yXXwwO2NbbD4+Ml09cCstMTthW3A+PjBdPWo7Y1toPj4yXT0oY1toPj4yXXwwKSsxfX1tZShjW2Y+PjJdfDAsY1trPj4yXXwwLC0xLC0xKTtLZChjW2s+PjJdfDApO2k9bztyZXR1cm59ZnVuY3Rpb24gUWMoYixkLGUpe2I9YnwwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MDtuPWk7aT1pKzMyfDA7Zz1uKzI0fDA7bz1uKzIwfDA7Zj1uKzE2fDA7az1uKzEyfDA7bD1uKzh8MDttPW4rNHwwO2o9bisyOHwwO2g9bjtjW2c+PjJdPWI7Y1tvPj4yXT1kO2NbZj4+Ml09ZTtjW2g+PjJdPTE7aWYoKGNbbz4+Ml18MCkhPTEpU2EoMTY3MjYsMTY3MzQsNzI0LDE3NDk2KTtpZig1PT0oZWUoY1tjW2Y+PjJdPj4yXXwwKXwwKSl7bGUoY1tnPj4yXXwwKTtpPW47cmV0dXJufWNbaz4+Ml09JGQoY1tjW2Y+PjJdPj4yXXwwKXwwO2NbbD4+Ml09dGQoY1trPj4yXXwwKXwwO2lmKCEoY1tsPj4yXXwwKSl7c2UoY1tnPj4yXXwwKTtpPW47cmV0dXJufWNbbT4+Ml09Y1tsPj4yXTt3aGlsZSgxKXtvPWNbaz4+Ml18MDtjW2s+PjJdPW8rMTtvPWFbbz4+MF18MDthW2o+PjBdPW87aWYoIShvPDwyND4+MjQpKWJyZWFrO2lmKHdRKGFbaj4+MF18MCl8MCljW2g+PjJdPTE7ZWxzZXtmPWFbaj4+MF18MDtpZigoY1toPj4yXXwwKT09MSlhW2o+PjBdPUFRKGYpfDA7ZWxzZSBhW2o+PjBdPXpRKGYpfDA7Y1toPj4yXT0wfWI9YVtqPj4wXXwwO289Y1ttPj4yXXwwO2NbbT4+Ml09bysxO2Fbbz4+MF09Yn1hW2NbbT4+Ml0+PjBdPTA7bWUoY1tnPj4yXXwwLGNbbD4+Ml18MCwtMSwtMSk7S2QoY1tsPj4yXXwwKTtpPW47cmV0dXJufWZ1bmN0aW9uIFJjKGIsZCxlKXtiPWJ8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wO289aTtpPWkrNDh8MDttPW8rNDB8MDtwPW8rMzZ8MDtmPW8rMzJ8MDtoPW8rOHwwO2s9bztnPW8rMjh8MDtqPW8rMjR8MDtuPW8rMjB8MDtsPW8rMTZ8MDtjW20+PjJdPWI7Y1twPj4yXT1kO2NbZj4+Ml09ZTtjW2c+PjJdPTA7aWYoKGNbcD4+Ml18MCkhPTIpU2EoMTY3ODUsMTY3MzQsNzcxLDE3NTA3KTtpZigoZWUoY1tjW2Y+PjJdPj4yXXwwKXwwKT09NSl7bGUoY1ttPj4yXXwwKTtpPW87cmV0dXJufWNbaj4+Ml09JGQoY1tjW2Y+PjJdPj4yXXwwKXwwO2I9ZGUoY1soY1tmPj4yXXwwKSs0Pj4yXXwwKXwwO3A9aDtjW3A+PjJdPWI7Y1twKzQ+PjJdPUM7aWYoKGNbaCs0Pj4yXXwwKTwwKXtpZShjW20+PjJdfDAsMTc0MTIsLTEpO2k9bztyZXR1cm59ZD11ZChjW2o+PjJdfDAsLTEpfDA7Yj1rO2NbYj4+Ml09ZDtjW2IrND4+Ml09KChkfDApPDApPDwzMT4+MzE7Yj1rO2Q9Y1tiKzQ+PjJdfDA7cD1oO2U9Y1twKzQ+PjJdfDA7Zj1jW2o+PjJdfDA7ZG8gaWYoKGR8MCk+KGV8MCl8KChkfDApPT0oZXwwKT8oY1tiPj4yXXwwKT4+PjA+PShjW3A+PjJdfDApPj4+MDowKSl7Y1tuPj4yXT10ZChmKXwwO2Y9Y1ttPj4yXXwwO2lmKGNbbj4+Ml18MCl7bWUoZixjW24+PjJdfDAsLTEsLTEpO2JyZWFrfXNlKGYpO2k9bztyZXR1cm59ZWxzZXtwPWtSKGYpfDA7Yj1oO2I9UlIocHwwLDAsY1tiPj4yXXwwLGNbYis0Pj4yXXwwKXwwO3A9aztwPVFSKGJ8MCxDfDAsY1twPj4yXXwwLGNbcCs0Pj4yXXwwKXwwO3A9UlIocHwwLEN8MCwxLDApfDA7Y1tuPj4yXT1JZChwKXwwO2lmKCEoY1tuPj4yXXwwKSl7c2UoY1ttPj4yXXwwKTtpPW87cmV0dXJufWNbbD4+Ml09Y1tuPj4yXTtjW2c+PjJdPTE7d2hpbGUoMSl7ZD1jW2c+PjJdfDA7Yj1rO2I9UlIoZHwwLCgoZHwwKTwwKTw8MzE+PjMxfDAsY1tiPj4yXXwwLGNbYis0Pj4yXXwwKXwwO2Q9QztwPWg7ZT1jW3ArND4+Ml18MDtmPWNbbD4+Ml18MDtpZighKChkfDApPChlfDApfCgoZHwwKT09KGV8MCk/Yj4+PjA8PShjW3A+PjJdfDApPj4+MDowKSkpYnJlYWs7Y1tsPj4yXT1mKzE7YVtmPj4wXT0zMjtjW2c+PjJdPShjW2c+PjJdfDApKzF9aVIoZixjW2o+PjJdfDApfDB9d2hpbGUoMCk7bWUoY1ttPj4yXXwwLGNbbj4+Ml18MCwtMSwtMSk7S2QoY1tuPj4yXXwwKTtpPW87cmV0dXJufWZ1bmN0aW9uIFNjKGIsZCxlKXtiPWJ8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MDtwPWk7aT1pKzY0fDA7bj1wKzQ4fDA7cT1wKzQ0fDA7Zj1wKzQwfDA7az1wKzE2fDA7bD1wKzh8MDtoPXA7aj1wKzM2fDA7Zz1wKzMyfDA7bz1wKzI4fDA7bT1wKzI0fDA7Y1tuPj4yXT1iO2NbcT4+Ml09ZDtjW2Y+PjJdPWU7Y1tqPj4yXT0wO2lmKChjW3E+PjJdfDApIT0yKVNhKDE2Nzg1LDE2NzM0LDgyNSwxNzU0NCk7aWYoKGVlKGNbY1tmPj4yXT4+Ml18MCl8MCk9PTUpe2xlKGNbbj4+Ml18MCk7aT1wO3JldHVybn1jW2c+PjJdPSRkKGNbY1tmPj4yXT4+Ml18MCl8MDtiPWRlKGNbKGNbZj4+Ml18MCkrND4+Ml18MCl8MDtxPWs7Y1txPj4yXT1iO2NbcSs0Pj4yXT1DO2lmKChjW2srND4+Ml18MCk8MCl7aWUoY1tuPj4yXXwwLDE3NDEyLC0xKTtpPXA7cmV0dXJufWQ9dWQoY1tnPj4yXXwwLC0xKXwwO2I9bDtjW2I+PjJdPWQ7Y1tiKzQ+PjJdPSgoZHwwKTwwKTw8MzE+PjMxO2I9bDtkPWNbYis0Pj4yXXwwO3E9aztlPWNbcSs0Pj4yXXwwO2Y9Y1tnPj4yXXwwO2RvIGlmKChkfDApPihlfDApfCgoZHwwKT09KGV8MCk/KGNbYj4+Ml18MCk+Pj4wPj0oY1txPj4yXXwwKT4+PjA6MCkpe2Nbbz4+Ml09dGQoZil8MDtmPWNbbj4+Ml18MDtpZihjW28+PjJdfDApe21lKGYsY1tvPj4yXXwwLC0xLC0xKTticmVha31zZShmKTtpPXA7cmV0dXJufWVsc2V7cT1oO2NbcT4+Ml09a1IoZil8MDtjW3ErND4+Ml09MDtxPWg7Yj1rO2I9UlIoY1txPj4yXXwwLGNbcSs0Pj4yXXwwLGNbYj4+Ml18MCxjW2IrND4+Ml18MCl8MDtxPWw7cT1RUihifDAsQ3wwLGNbcT4+Ml18MCxjW3ErND4+Ml18MCl8MDtxPVJSKHF8MCxDfDAsMSwwKXwwO2Nbbz4+Ml09SWQocSl8MDtpZighKGNbbz4+Ml18MCkpe3NlKGNbbj4+Ml18MCk7aT1wO3JldHVybn1xPWlSKGNbbz4+Ml18MCxjW2c+PjJdfDApfDA7Y1ttPj4yXT1xKyhjW2g+PjJdfDApO2Nbaj4+Ml09MTt3aGlsZSgxKXtiPWNbaj4+Ml18MDtoPWw7aD1SUihifDAsKChifDApPDApPDwzMT4+MzF8MCxjW2g+PjJdfDAsY1toKzQ+PjJdfDApfDA7Yj1DO3E9aztnPWNbcSs0Pj4yXXwwO2Y9Y1ttPj4yXXwwO2lmKCEoKGJ8MCk8KGd8MCl8KChifDApPT0oZ3wwKT9oPj4+MDw9KGNbcT4+Ml18MCk+Pj4wOjApKSlicmVhaztjW20+PjJdPWYrMTthW2Y+PjBdPTMyO2Nbaj4+Ml09KGNbaj4+Ml18MCkrMX1hW2Y+PjBdPTB9d2hpbGUoMCk7bWUoY1tuPj4yXXwwLGNbbz4+Ml18MCwtMSwtMSk7S2QoY1tvPj4yXXwwKTtpPXA7cmV0dXJufWZ1bmN0aW9uIFRjKGIsZCxlKXtiPWJ8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MDtwPWk7aT1pKzY0fDA7bj1wKzQ4fDA7cT1wKzQ0fDA7Zj1wKzQwfDA7az1wKzE2fDA7bD1wKzh8MDtoPXA7aj1wKzM2fDA7Zz1wKzMyfDA7bz1wKzI4fDA7bT1wKzI0fDA7Y1tuPj4yXT1iO2NbcT4+Ml09ZDtjW2Y+PjJdPWU7Y1tqPj4yXT0wO2lmKChjW3E+PjJdfDApIT0yKVNhKDE2Nzg1LDE2NzM0LDg4MCwxNzU1Myk7aWYoKGVlKGNbY1tmPj4yXT4+Ml18MCl8MCk9PTUpe2xlKGNbbj4+Ml18MCk7aT1wO3JldHVybn1jW2c+PjJdPSRkKGNbY1tmPj4yXT4+Ml18MCl8MDtiPWRlKGNbKGNbZj4+Ml18MCkrND4+Ml18MCl8MDtxPWs7Y1txPj4yXT1iO2NbcSs0Pj4yXT1DO2lmKChjW2srND4+Ml18MCk8MCl7aWUoY1tuPj4yXXwwLDE3NDEyLC0xKTtpPXA7cmV0dXJufWQ9dWQoY1tnPj4yXXwwLC0xKXwwO2I9bDtjW2I+PjJdPWQ7Y1tiKzQ+PjJdPSgoZHwwKTwwKTw8MzE+PjMxO2I9bDtkPWNbYis0Pj4yXXwwO3E9aztlPWNbcSs0Pj4yXXwwO2Y9Y1tnPj4yXXwwO2RvIGlmKChkfDApPihlfDApfCgoZHwwKT09KGV8MCk/KGNbYj4+Ml18MCk+Pj4wPj0oY1txPj4yXXwwKT4+PjA6MCkpe2Nbbz4+Ml09dGQoZil8MDtmPWNbbj4+Ml18MDtpZihjW28+PjJdfDApe21lKGYsY1tvPj4yXXwwLC0xLC0xKTticmVha31zZShmKTtpPXA7cmV0dXJufWVsc2V7cT1oO2NbcT4+Ml09a1IoZil8MDtjW3ErND4+Ml09MDtxPWg7Yj1rO2I9UlIoY1txPj4yXXwwLGNbcSs0Pj4yXXwwLGNbYj4+Ml18MCxjW2IrND4+Ml18MCl8MDtxPWw7cT1RUihifDAsQ3wwLGNbcT4+Ml18MCxjW3ErND4+Ml18MCl8MDtxPVJSKHF8MCxDfDAsMSwwKXwwO2Nbbz4+Ml09SWQocSl8MDtpZighKGNbbz4+Ml18MCkpe3NlKGNbbj4+Ml18MCk7aT1wO3JldHVybn1jW20+PjJdPWNbbz4+Ml07Y1tqPj4yXT0xO3doaWxlKDEpe2Q9Y1tqPj4yXTw8MTtiPWw7Yj1SUihkfDAsKChkfDApPDApPDwzMT4+MzF8MCxjW2I+PjJdfDAsY1tiKzQ+PjJdfDApfDA7ZD1DO3E9aztlPWNbcSs0Pj4yXXwwO2Y9Y1ttPj4yXXwwO2lmKCEoKGR8MCk8KGV8MCl8KChkfDApPT0oZXwwKT9iPj4+MDw9KGNbcT4+Ml18MCk+Pj4wOjApKSlicmVhaztjW20+PjJdPWYrMTthW2Y+PjBdPTMyO2Nbaj4+Ml09KGNbaj4+Ml18MCkrMX1pUihmLGNbZz4+Ml18MCl8MDtjW20+PjJdPShjW20+PjJdfDApKyhjW2g+PjJdfDApO3doaWxlKDEpe2I9Y1tqPj4yXXwwO2g9bDtoPVJSKGJ8MCwoKGJ8MCk8MCk8PDMxPj4zMXwwLGNbaD4+Ml18MCxjW2grND4+Ml18MCl8MDtiPUM7cT1rO2c9Y1txKzQ+PjJdfDA7Zj1jW20+PjJdfDA7aWYoISgoYnwwKTwoZ3wwKXwoKGJ8MCk9PShnfDApP2g+Pj4wPD0oY1txPj4yXXwwKT4+PjA6MCkpKWJyZWFrO2NbbT4+Ml09ZisxO2FbZj4+MF09MzI7Y1tqPj4yXT0oY1tqPj4yXXwwKSsxfWFbZj4+MF09MH13aGlsZSgwKTttZShjW24+PjJdfDAsY1tvPj4yXXwwLC0xLC0xKTtLZChjW28+PjJdfDApO2k9cDtyZXR1cm59ZnVuY3Rpb24gVWMoYixkLGUpe2I9YnwwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTA7cj1pO2k9aSs0OHwwO2Y9cis0NHwwO3M9cis0MHwwO2c9ciszNnwwO249ciszMnwwO289cisyOHwwO2s9cisyNHwwO2w9cisyMHwwO209cisxNnwwO3A9cisxMnwwO3E9cis4fDA7aD1yKzR8MDtqPXI7Y1tmPj4yXT1iO2Nbcz4+Ml09ZDtjW2c+PjJdPWU7Y1toPj4yXT0wO2Nbaj4+Ml09MDtpZigoY1tzPj4yXXwwKSE9MilTYSgxNjc4NSwxNjczNCw5MzksMTc1NjIpO2lmKChlZShjW2NbZz4+Ml0+PjJdfDApfDApIT01PyhlZShjWyhjW2c+PjJdfDApKzQ+PjJdfDApfDApIT01OjApe2Nbbj4+Ml09JGQoY1tjW2c+PjJdPj4yXXwwKXwwO2Nbbz4+Ml09JGQoY1soY1tnPj4yXXwwKSs0Pj4yXXwwKXwwO2NbcD4+Ml09SWQoKGtSKGNbbj4+Ml18MCl8MCkrMXwwKXwwO2lmKCEoY1twPj4yXXwwKSl7c2UoY1tmPj4yXXwwKTtpPXI7cmV0dXJufWNbcT4+Ml09Y1twPj4yXTtjW2s+PjJdPWNbbj4+Ml07YTp3aGlsZSgxKXtzPW5kKGNbaz4+Ml18MCl8MDtjW2g+PjJdPXM7aWYoIXMpYnJlYWs7Y1tsPj4yXT1jW28+PjJdO2I6d2hpbGUoMSl7cz1uZChjW2w+PjJdfDApfDA7Y1tqPj4yXT1zO2lmKCFzKWJyZWFrO2lmKChjW2o+PjJdfDApPT0oY1toPj4yXXwwKSlicmVhazt3aGlsZSgxKXtzPShjW2w+PjJdfDApKzF8MDtjW2w+PjJdPXM7aWYoKDE5MiZhW3M+PjBdfDApIT0xMjgpY29udGludWUgYn19aWYoY1tqPj4yXXwwKXtjW20+PjJdPWNbbD4+Ml07ZG97cz0oY1ttPj4yXXwwKSsxfDA7Y1ttPj4yXT1zfXdoaWxlKCgxOTImYVtzPj4wXXwwKT09MTI4KTttUihjW3E+PjJdfDAsY1tsPj4yXXwwLChjW20+PjJdfDApLShjW2w+PjJdfDApfDApfDA7Y1txPj4yXT0oY1txPj4yXXwwKSsoKGNbbT4+Ml18MCktKGNbbD4+Ml18MCkpfXdoaWxlKDEpe3M9KGNbaz4+Ml18MCkrMXwwO2Nbaz4+Ml09cztpZigoMTkyJmFbcz4+MF18MCkhPTEyOCljb250aW51ZSBhfX1hW2NbcT4+Ml0+PjBdPTA7bWUoY1tmPj4yXXwwLGNbcD4+Ml18MCwtMSwtMSk7S2QoY1twPj4yXXwwKTtpPXI7cmV0dXJufWxlKGNbZj4+Ml18MCk7aT1yO3JldHVybn1mdW5jdGlvbiBWYyhhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGo9MCxrPTAsbD0wLG09MDtsPWk7aT1pKzMyfDA7ZT1sKzI4fDA7bT1sKzI0fDA7Zj1sKzIwfDA7aj1sKzE2fDA7Zz1sKzh8MDtrPWw7Y1tlPj4yXT1hO2NbbT4+Ml09YjtjW2Y+PjJdPWQ7aWYoKGNbbT4+Ml18MCkhPTEpU2EoMTY3MjYsMTY3MzQsMTM5NSwxNzU3Nik7Y1tqPj4yXT13ZShjW2U+PjJdfDAsMjQpfDA7aWYoNT09KFRlKGNbY1tmPj4yXT4+Ml18MCl8MCkpe2k9bDtyZXR1cm59YT0oY1tqPj4yXXwwKSsxNnwwO209YTttPVJSKGNbbT4+Ml18MCxjW20rND4+Ml18MCwxLDApfDA7Y1thPj4yXT1tO2NbYSs0Pj4yXT1DO2hbaz4+M109K2JlKGNbY1tmPj4yXT4+Ml18MCk7aFtnPj4zXT0raFtrPj4zXS0raFtjW2o+PjJdPj4zXTthPShjW2o+PjJdfDApKzE2fDA7bT1jW2o+PjJdfDA7aFttPj4zXT0raFttPj4zXSsgK2hbZz4+M10vKCsoKGNbYT4+Ml18MCk+Pj4wKSs0Mjk0OTY3Mjk2LjAqKyhjW2ErND4+Ml18MCkpO209KGNbaj4+Ml18MCkrOHwwO2hbbT4+M109K2hbbT4+M10rICtoW2c+PjNdKigraFtrPj4zXS0raFtjW2o+PjJdPj4zXSk7aT1sO3JldHVybn1mdW5jdGlvbiBXYyhhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wLGc9MC4wO2U9aTtpPWkrMTZ8MDtiPWUrNHwwO2Q9ZTtjW2I+PjJdPWE7Y1tkPj4yXT13ZShjW2I+PjJdfDAsMCl8MDtpZigoY1tkPj4yXXwwKSE9MD8oYT0oY1tkPj4yXXwwKSsxNnwwLGY9Y1thKzQ+PjJdfDAsKGZ8MCk+MHwoZnwwKT09MCYoY1thPj4yXXwwKT4+PjA+MSk6MCl7YT1jW2I+PjJdfDA7Zz0raFsoY1tkPj4yXXwwKSs4Pj4zXTtmPShjW2Q+PjJdfDApKzE2fDA7Zj1RUihjW2Y+PjJdfDAsY1tmKzQ+PjJdfDAsMSwwKXwwO2hlKGEsK08oKyhnLygrKGY+Pj4wKSs0Mjk0OTY3Mjk2LjAqKyhDfDApKSkpKTtpPWU7cmV0dXJufWhlKGNbYj4+Ml18MCwwLjApO2k9ZTtyZXR1cm59ZnVuY3Rpb24gWGMoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MCxnPTAuMDtlPWk7aT1pKzE2fDA7Yj1lKzR8MDtkPWU7Y1tiPj4yXT1hO2NbZD4+Ml09d2UoY1tiPj4yXXwwLDApfDA7aWYoKGNbZD4+Ml18MCkhPTA/KGE9KGNbZD4+Ml18MCkrMTZ8MCxmPWNbYSs0Pj4yXXwwLChmfDApPjB8KGZ8MCk9PTAmKGNbYT4+Ml18MCk+Pj4wPjEpOjApe2E9Y1tiPj4yXXwwO2c9K2hbKGNbZD4+Ml18MCkrOD4+M107Zj0oY1tkPj4yXXwwKSsxNnwwO2Y9UVIoY1tmPj4yXXwwLGNbZis0Pj4yXXwwLDEsMCl8MDtoZShhLGcvKCsoZj4+PjApKzQyOTQ5NjcyOTYuMCorKEN8MCkpKTtpPWU7cmV0dXJufWhlKGNbYj4+Ml18MCwwLjApO2k9ZTtyZXR1cm59ZnVuY3Rpb24gWWMoYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MDtxPWk7aT1pKzgwfDA7ZT1xKzY0fDA7cj1xKzYwfDA7Zj1xKzU2fDA7bj1xKzUyfDA7cD1xKzh8MDtvPXE7bT1xKzQ4fDA7bD1xKzQ0fDA7az1xKzQwfDA7Zz1xKzI4fDA7aj1xKzE2fDA7Y1tlPj4yXT1hO2Nbcj4+Ml09YjtjW2Y+PjJdPWQ7YT1wO2NbYT4+Ml09MDtjW2ErND4+Ml09MDtoW28+PjNdPTAuMDtpZigoY1tyPj4yXXwwKSE9MSlTYSgxNjcyNiwxNjczNCwxNDE4LDE3NTg5KTtjW2s+PjJdPVRlKGNbY1tmPj4yXT4+Ml18MCl8MDtpZigoY1trPj4yXXwwKT09NSl7aT1xO3JldHVybn1jW24+PjJdPXdlKGNbZT4+Ml18MCw2NCl8MDtkbyBpZighKGNbKGNbbj4+Ml18MCkrNTY+PjJdfDApKXtlPUxSKDEsMTIpfDA7Y1soY1tuPj4yXXwwKSs1Nj4+Ml09ZTtlPWNbbj4+Ml18MDtpZigoY1trPj4yXXwwKT09MSl7cj1jW2UrNTY+PjJdfDA7YmQoZywxNzYpO2Nbcj4+Ml09Y1tnPj4yXTtjW3IrND4+Ml09Y1tnKzQ+PjJdO2Nbcis4Pj4yXT1jW2crOD4+Ml07cj0oY1tuPj4yXXwwKSs0OHwwO2Nbcj4+Ml09MDtjW3IrND4+Ml09MDticmVha31lbHNle3I9ZSs0OHwwO2Nbcj4+Ml09MTtjW3IrND4+Ml09MDtyPWNbKGNbbj4+Ml18MCkrNTY+PjJdfDA7YmQoaiwxNzcpO2Nbcj4+Ml09Y1tqPj4yXTtjW3IrND4+Ml09Y1tqKzQ+PjJdO2Nbcis4Pj4yXT1jW2orOD4+Ml07YnJlYWt9fXdoaWxlKDApO3I9KGNbbj4+Ml18MCkrMTZ8MDtlPXI7ZT1SUihjW2U+PjJdfDAsY1tlKzQ+PjJdfDAsMSwwKXwwO2Nbcj4+Ml09ZTtjW3IrND4+Ml09QztyPShjW24+PjJdfDApKzQ4fDA7ZT1jW2NbZj4+Ml0+PjJdfDA7aWYoMD09KGNbcj4+Ml18MCk/MD09KGNbcis0Pj4yXXwwKTowKXtyPWRlKGUpfDA7bz1wO2Nbbz4+Ml09cjtjW28rND4+Ml09QztjW20+PjJdPUxSKDEsOCl8MDtvPXA7cD1jW28rND4+Ml18MDtyPWNbbT4+Ml18MDtjW3I+PjJdPWNbbz4+Ml07Y1tyKzQ+PjJdPXA7ZmQoY1soY1tuPj4yXXwwKSs1Nj4+Ml18MCxjW20+PjJdfDApO2k9cTtyZXR1cm59ZWxzZXtoW28+PjNdPStiZShlKTtjW2w+PjJdPUxSKDEsOCl8MDtoW2NbbD4+Ml0+PjNdPStoW28+PjNdO2ZkKGNbKGNbbj4+Ml18MCkrNTY+PjJdfDAsY1tsPj4yXXwwKTtpPXE7cmV0dXJufX1mdW5jdGlvbiBaYyhhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wO2U9aTtpPWkrMTZ8MDtiPWUrNHwwO2Q9ZTtjW2I+PjJdPWE7Y1tkPj4yXT13ZShjW2I+PjJdfDAsMCl8MDtpZighKGNbZD4+Ml18MCkpe2k9ZTtyZXR1cm59aWYoIShjWyhjW2Q+PjJdfDApKzU2Pj4yXXwwKSl7aT1lO3JldHVybn1oZChjWyhjW2Q+PjJdfDApKzU2Pj4yXXwwLDEzMSxjW2Q+PjJdfDApO2pkKGNbKGNbZD4+Ml18MCkrNTY+PjJdfDApO0tSKGNbKGNbZD4+Ml18MCkrNTY+PjJdfDApO2E9KGNbZD4+Ml18MCkrNDB8MDtpZighKDE9PShjW2E+PjJdfDApPzA9PShjW2ErND4+Ml18MCk6MCkpe2k9ZTtyZXR1cm59Zj0oY1tkPj4yXXwwKSs0OHwwO2E9Y1tiPj4yXXwwO2I9Y1tkPj4yXXwwO2lmKDA9PShjW2Y+PjJdfDApPzA9PShjW2YrND4+Ml18MCk6MCl7Zj1iO2tlKGEsY1tmPj4yXXwwLGNbZis0Pj4yXXwwKTtpPWU7cmV0dXJufWVsc2V7aGUoYSwraFtiKzg+PjNdKTtpPWU7cmV0dXJufX1mdW5jdGlvbiBfYyhhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTA7ZT1pO2k9aSsxNnwwO2I9ZSs0fDA7ZD1lO2NbYj4+Ml09YTtjW2Q+PjJdPXdlKGNbYj4+Ml18MCwwKXwwO2lmKCEoY1tkPj4yXXwwKSl7aT1lO3JldHVybn1hPShjW2Q+PjJdfDApKzE2fDA7aFsoY1tkPj4yXXwwKSsyND4+M109KCsoKGNbYT4+Ml18MCk+Pj4wKSs0Mjk0OTY3Mjk2LjAqKyhjW2ErND4+Ml18MCkpLzIuMDt3ZChjW2I+PjJdfDApO2k9ZTtyZXR1cm59ZnVuY3Rpb24gJGMoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wO2U9aTtpPWkrMTZ8MDtiPWUrNHwwO2Q9ZTtjW2I+PjJdPWE7Y1tkPj4yXT13ZShjW2I+PjJdfDAsMCl8MDtpZighKGNbZD4+Ml18MCkpe2k9ZTtyZXR1cm59YT0oY1tkPj4yXXwwKSsxNnwwO2hbKGNbZD4+Ml18MCkrMjQ+PjNdPSgrKChjW2E+PjJdfDApPj4+MCkrNDI5NDk2NzI5Ni4wKisoY1thKzQ+PjJdfDApKS80LjA7d2QoY1tiPj4yXXwwKTtpPWU7cmV0dXJufWZ1bmN0aW9uIGFkKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MDtlPWk7aT1pKzE2fDA7Yj1lKzR8MDtkPWU7Y1tiPj4yXT1hO2NbZD4+Ml09d2UoY1tiPj4yXXwwLDApfDA7aWYoIShjW2Q+PjJdfDApKXtpPWU7cmV0dXJufWE9KGNbZD4+Ml18MCkrMTZ8MDthPWFTKGNbYT4+Ml18MCxjW2ErND4+Ml18MCwzLDApfDA7aFsoY1tkPj4yXXwwKSsyND4+M109KCsoYT4+PjApKzQyOTQ5NjcyOTYuMCorKEN8MCkpLzQuMDt3ZChjW2I+PjJdfDApO2k9ZTtyZXR1cm59ZnVuY3Rpb24gYmQoYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTA7ZD1pO2k9aSsxNnwwO2Y9ZCsxMnwwO2U9ZDtjW2Y+PjJdPWI7Y1tlKzQ+PjJdPWNbZj4+Ml07Y1tlPj4yXT0wO2NbYT4+Ml09Y1tlPj4yXTtjW2ErND4+Ml09Y1tlKzQ+PjJdO2NbYSs4Pj4yXT1jW2UrOD4+Ml07aT1kO3JldHVybn1mdW5jdGlvbiBjZChhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MDtmPWk7aT1pKzE2fDA7aD1mKzEyfDA7Zz1mKzh8MDtlPWY7Y1toPj4yXT1hO2NbZz4+Ml09YjtjW2YrND4+Ml09ZDtjW2U+PjJdPUxSKGNbaD4+Ml18MCxjW2c+PjJdfDApfDA7aT1mO3JldHVybiBjW2U+PjJdfDB9ZnVuY3Rpb24gZGQoYSl7YT1hfDA7dmFyIGI9MCxkPTA7Yj1pO2k9aSsxNnwwO2Q9YjtjW2Q+PjJdPWE7S1IoY1tkPj4yXXwwKTtpPWI7cmV0dXJufWZ1bmN0aW9uIGVkKGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTA7az1pO2k9aSszMnwwO2U9aysxNnwwO2c9aysxMnwwO2g9ays4fDA7aj1rKzR8MDtmPWs7Y1tlPj4yXT1hO2NbZz4+Ml09YjtjW2g+PjJdPWQ7aWYoIShjW2NbZT4+Ml0+PjJdfDApKXtjW2Y+PjJdPWNkKDEsMjQsMTY3MTcpfDA7Y1soY1tmPj4yXXwwKSs4Pj4yXT1jW2g+PjJdO2o9KGNbZj4+Ml18MCkrMTZ8MDtjW2o+PjJdPTE7Y1tqKzQ+PjJdPTA7Y1tjW2U+PjJdPj4yXT1jW2Y+PjJdO2k9aztyZXR1cm59Y1tqPj4yXT1ZYltjW2c+PjJdJjI1NV0oY1soY1tjW2U+PjJdPj4yXXwwKSs4Pj4yXXwwLGNbaD4+Ml18MCl8MDtpZighKGNbaj4+Ml18MCkpe2o9KGNbY1tlPj4yXT4+Ml18MCkrMTZ8MDtnPWo7Zz1SUihjW2c+PjJdfDAsY1tnKzQ+PjJdfDAsMSwwKXwwO2Nbaj4+Ml09ZztjW2orND4+Ml09QztkZChjW2g+PjJdfDApO2k9aztyZXR1cm59ZT1jW2NbZT4+Ml0+PjJdfDA7aWYoKGNbaj4+Ml18MCk+MCl7ZWQoZSxjW2c+PjJdfDAsY1toPj4yXXwwKTtpPWs7cmV0dXJufWVsc2V7ZWQoZSs0fDAsY1tnPj4yXXwwLGNbaD4+Ml18MCk7aT1rO3JldHVybn19ZnVuY3Rpb24gZmQoYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTA7ZD1pO2k9aSsxNnwwO2Y9ZCs0fDA7ZT1kO2NbZj4+Ml09YTtjW2U+PjJdPWI7ZWQoY1tmPj4yXXwwLGNbKGNbZj4+Ml18MCkrND4+Ml18MCxjW2U+PjJdfDApO2k9ZDtyZXR1cm59ZnVuY3Rpb24gZ2QoYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTA7aD1pO2k9aSsxNnwwO2U9aCs4fDA7Zj1oKzR8MDtnPWg7Y1tlPj4yXT1hO2NbZj4+Ml09YjtjW2c+PjJdPWQ7aWYoIShjW2U+PjJdfDApKXtpPWg7cmV0dXJufWlmKGNbY1tlPj4yXT4+Ml18MClnZChjW2NbZT4+Ml0+PjJdfDAsY1tmPj4yXXwwLGNbZz4+Ml18MCk7ZD0oY1tlPj4yXXwwKSsxNnwwO19iW2NbZj4+Ml0mMjU1XShjWyhjW2U+PjJdfDApKzg+PjJdfDAsY1tkPj4yXXwwLGNbZCs0Pj4yXXwwLGNbZz4+Ml18MCk7aWYoIShjWyhjW2U+PjJdfDApKzQ+PjJdfDApKXtpPWg7cmV0dXJufWdkKGNbKGNbZT4+Ml18MCkrND4+Ml18MCxjW2Y+PjJdfDAsY1tnPj4yXXwwKTtpPWg7cmV0dXJufWZ1bmN0aW9uIGhkKGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wO2U9aTtpPWkrMTZ8MDtoPWUrOHwwO2c9ZSs0fDA7Zj1lO2NbaD4+Ml09YTtjW2c+PjJdPWI7Y1tmPj4yXT1kO2dkKGNbY1toPj4yXT4+Ml18MCxjW2c+PjJdfDAsY1tmPj4yXXwwKTtpPWU7cmV0dXJufWZ1bmN0aW9uIGlkKGEpe2E9YXwwO3ZhciBiPTAsZD0wO2Q9aTtpPWkrMTZ8MDtiPWQ7Y1tiPj4yXT1hO2lmKCEoY1tiPj4yXXwwKSl7aT1kO3JldHVybn1kZChjWyhjW2I+PjJdfDApKzg+PjJdfDApO2lmKGNbY1tiPj4yXT4+Ml18MClpZChjW2NbYj4+Ml0+PjJdfDApO2lmKGNbKGNbYj4+Ml18MCkrND4+Ml18MClpZChjWyhjW2I+PjJdfDApKzQ+PjJdfDApO2RkKGNbYj4+Ml18MCk7aT1kO3JldHVybn1mdW5jdGlvbiBqZChhKXthPWF8MDt2YXIgYj0wLGQ9MDtiPWk7aT1pKzE2fDA7ZD1iO2NbZD4+Ml09YTtpZChjW2NbZD4+Ml0+PjJdfDApO2k9YjtyZXR1cm59ZnVuY3Rpb24ga2QoYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTA7Zz1pO2k9aSszMnwwO2Q9ZysyNHwwO2o9ZysyMHwwO2g9ZysxNnwwO2U9Zys4fDA7Zj1nO2Nbaj4+Ml09YTtjW2g+PjJdPWI7aj1jW2o+PjJdfDA7YT1jW2orND4+Ml18MDtiPWU7Y1tiPj4yXT1jW2o+PjJdO2NbYis0Pj4yXT1hO2g9Y1toPj4yXXwwO2I9Y1toKzQ+PjJdfDA7YT1mO2NbYT4+Ml09Y1toPj4yXTtjW2ErND4+Ml09YjthPWU7Yj1mO2lmKChjW2E+PjJdfDApPT0oY1tiPj4yXXwwKT8oY1thKzQ+PjJdfDApPT0oY1tiKzQ+PjJdfDApOjApe2NbZD4+Ml09MDtqPWNbZD4+Ml18MDtpPWc7cmV0dXJuIGp8MH1oPWU7Yj1jW2grND4+Ml18MDtqPWY7Zj1jW2orND4+Ml18MDtpZigoYnwwKTwoZnwwKXwoKGJ8MCk9PShmfDApPyhjW2g+PjJdfDApPj4+MDwoY1tqPj4yXXwwKT4+PjA6MCkpe2NbZD4+Ml09LTE7aj1jW2Q+PjJdfDA7aT1nO3JldHVybiBqfDB9ZWxzZXtjW2Q+PjJdPTE7aj1jW2Q+PjJdfDA7aT1nO3JldHVybiBqfDB9cmV0dXJuIDB9ZnVuY3Rpb24gbGQoYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGo9MCxrPTA7Zz1pO2k9aSszMnwwO2Q9ZysyNHwwO2s9ZysyMHwwO2o9ZysxNnwwO2U9Zys4fDA7Zj1nO2Nbaz4+Ml09YTtjW2o+PjJdPWI7aFtlPj4zXT0raFtjW2s+PjJdPj4zXTtoW2Y+PjNdPStoW2Nbaj4+Ml0+PjNdO2RvIGlmKCEoK2hbZT4+M109PStoW2Y+PjNdKSlpZigraFtlPj4zXTwraFtmPj4zXSl7Y1tkPj4yXT0tMTticmVha31lbHNle2NbZD4+Ml09MTticmVha31lbHNlIGNbZD4+Ml09MDt3aGlsZSgwKTtpPWc7cmV0dXJuIGNbZD4+Ml18MH1mdW5jdGlvbiBtZChiLGUpe2I9YnwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MDtsPWk7aT1pKzMyfDA7Zj1sKzE2fDA7aj1sKzEyfDA7aD1sKzh8MDtrPWwrNHwwO2c9bDtjW2Y+PjJdPWI7Y1tqPj4yXT1lO2NbaD4+Ml09MDt3aGlsZSgxKXtpZighKGRbKGNbZj4+Ml18MCkrKGNbaD4+Ml18MCk+PjBdfDApKWJyZWFrO2lmKCEoKHZRKGRbKGNbZj4+Ml18MCkrKGNbaD4+Ml18MCk+PjBdfDApfDApIT0wXjEpKWJyZWFrO2NbaD4+Ml09KGNbaD4+Ml18MCkrMX1pZighKGFbKGNbZj4+Ml18MCkrKGNbaD4+Ml18MCk+PjBdfDApKXtpUihjW2o+PjJdfDAsMTY5NzUpfDA7aT1sO3JldHVybn1lPShBUShkWyhjW2Y+PjJdfDApKyhjW2g+PjJdfDApPj4wXXwwKXwwKSYyNTU7YVtjW2o+PjJdPj4wXT1lO2Nbaz4+Ml09MTt3aGlsZSgxKXtpZigoY1trPj4yXXwwKT49NClicmVhaztpZighKGRbKGNbZj4+Ml18MCkrKGNbaD4+Ml18MCk+PjBdfDApKWJyZWFrO2NbZz4+Ml09ZFsxNjg0NysoZFsoY1tmPj4yXXwwKSsoY1toPj4yXXwwKT4+MF0mMTI3KT4+MF07aWYoKGNbZz4+Ml18MCk+MCl7Yj0oY1tnPj4yXXwwKSs0OCYyNTU7ZT1jW2s+PjJdfDA7Y1trPj4yXT1lKzE7YVsoY1tqPj4yXXwwKStlPj4wXT1ifWNbaD4+Ml09KGNbaD4+Ml18MCkrMX13aGlsZSgxKXtmPWNbaz4+Ml18MDtpZigoY1trPj4yXXwwKT49NClicmVhaztjW2s+PjJdPWYrMTthWyhjW2o+PjJdfDApK2Y+PjBdPTQ4fWFbKGNbaj4+Ml18MCkrZj4+MF09MDtpPWw7cmV0dXJufWZ1bmN0aW9uIG5kKGEpe2E9YXwwO3ZhciBiPTAsZT0wLGY9MCxnPTAsaD0wO2g9aTtpPWkrMTZ8MDtiPWgrOHwwO2U9aCs0fDA7Zj1oO2NbYj4+Ml09YTthPWNbYj4+Ml18MDtjW2I+PjJdPWErMTtjW2U+PjJdPWRbYT4+MF07Y1tmPj4yXT1kWzE2OTgwKyhjW2U+PjJdfDApPj4wXTtzd2l0Y2goY1tmPj4yXXwwKXtjYXNlIDQ6e2NbZT4+Ml09NjU1MzM7Zz1jW2U+PjJdfDA7aT1oO3JldHVybiBnfDB9Y2FzZSAzOnthPWNbZT4+Ml08PDY7Zz1jW2I+PjJdfDA7Y1tiPj4yXT1nKzE7Y1tlPj4yXT1hKyhkW2c+PjBdfDApO2c9NDticmVha31jYXNlIDI6e2c9NDticmVha31jYXNlIDE6YnJlYWs7ZGVmYXVsdDp7Zz1jW2U+PjJdfDA7aT1oO3JldHVybiBnfDB9fWlmKChnfDApPT00KXthPWNbZT4+Ml08PDY7Zz1jW2I+PjJdfDA7Y1tiPj4yXT1nKzE7Y1tlPj4yXT1hKyhkW2c+PjBdfDApfWE9Y1tlPj4yXTw8NjtnPWNbYj4+Ml18MDtjW2I+PjJdPWcrMTtjW2U+PjJdPWErKGRbZz4+MF18MCk7Y1tlPj4yXT0oY1tlPj4yXXwwKS0oY1s5MzYrKGNbZj4+Ml08PDIpPj4yXXwwKTtpZigoKGNbOTUyKyhjW2Y+PjJdPDwyKT4+Ml0mY1tlPj4yXXwwKSE9MD8oY1tlPj4yXSYtMjA0OHwwKSE9NTUyOTY6MCk/KGNbZT4+Ml0mLTJ8MCkhPTY1NTM0OjApe2c9Y1tlPj4yXXwwO2k9aDtyZXR1cm4gZ3wwfWNbZT4+Ml09NjU1MzM7Zz1jW2U+PjJdfDA7aT1oO3JldHVybiBnfDB9ZnVuY3Rpb24gb2QoYSl7YT0rYTt2YXIgYj0wLGM9MDtjPWk7aT1pKzE2fDA7Yj1jO2hbYj4+M109YTtpPWM7cmV0dXJuICsoK2hbYj4+M10qMTgwLjAvMy4xNDE1OTI2NTM1ODk3OTMpfWZ1bmN0aW9uIHBkKGEpe2E9K2E7dmFyIGI9MCxjPTA7Yz1pO2k9aSsxNnwwO2I9YztoW2I+PjNdPWE7aT1jO3JldHVybiArKCtoW2I+PjNdKjMuMTQxNTkyNjUzNTg5NzkzLzE4MC4wKX1mdW5jdGlvbiBxZChhKXthPSthO3ZhciBiPTAsYz0wO2I9aTtpPWkrMTZ8MDtjPWI7aFtjPj4zXT1hO2E9MS4wLytTKCsoK2hbYz4+M10pKTtpPWI7cmV0dXJuICthfWZ1bmN0aW9uIHJkKGEpe2E9K2E7dmFyIGI9MCxjPTA7Yj1pO2k9aSsxNnwwO2M9YjtoW2M+PjNdPWE7YT0xLjAvK1FRKCtoW2M+PjNdKTtpPWI7cmV0dXJuICthfWZ1bmN0aW9uIHNkKGIsZCxlLGYpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTA7dD1pO2k9aSs0OHwwO2c9dCs0MHwwO2g9dCszNnwwO2o9dCszMnwwO2s9dCsyOHwwO2w9dCsyNHwwO209dCsyMHwwO3A9dCsxNnwwO3E9dCsxMnwwO3I9dCs4fDA7bj10KzR8MDtvPXQ7Y1toPj4yXT1iO2Nbaj4+Ml09ZDtjW2s+PjJdPWU7Y1tsPj4yXT1mO2NbbT4+Ml09MDtjW3A+PjJdPS0xO2lmKCEoYVtjW2g+PjJdPj4wXXwwKSl7Y1tnPj4yXT0tMTtzPWNbZz4+Ml18MDtpPXQ7cmV0dXJuIHN8MH1hOndoaWxlKDEpe2lmKCEobmQoY1tqPj4yXXwwKXwwKSlicmVhaztkPWNbbT4+Ml18MDtjW20+PjJdPWQrMTtpZigoZHwwKT49KGNbaz4+Ml18MCkpYnJlYWs7d2hpbGUoMSl7ZD0oY1tqPj4yXXwwKSsxfDA7Y1tqPj4yXT1kO2lmKCgxOTImYVtkPj4wXXwwKSE9MTI4KWNvbnRpbnVlIGF9fWNbbT4+Ml09MDt3aGlsZSgxKXtpZighKG5kKGNbaj4+Ml18MCl8MCkpYnJlYWs7Y1txPj4yXT1jW2g+PjJdO2Nbcj4+Ml09Y1tqPj4yXTtkb3tjW24+PjJdPW5kKGNbcT4+Ml18MCl8MDtjW28+PjJdPW5kKGNbcj4+Ml18MCl8MDtkb3tkPShjW3E+PjJdfDApKzF8MDtjW3E+PjJdPWR9d2hpbGUoKDE5MiZhW2Q+PjBdfDApPT0xMjgpO2Rve2Q9KGNbcj4+Ml18MCkrMXwwO2Nbcj4+Ml09ZH13aGlsZSgoMTkyJmFbZD4+MF18MCk9PTEyOCl9d2hpbGUoKChjW24+PjJdfDApIT0wPyhjW24+PjJdfDApPT0oY1tvPj4yXXwwKTowKSYoY1tvPj4yXXwwKSE9MCk7aWYoIShjW24+PjJdfDApKXtzPTE0O2JyZWFrfWRve2Q9KGNbaj4+Ml18MCkrMXwwO2Nbaj4+Ml09ZH13aGlsZSgoMTkyJmFbZD4+MF18MCk9PTEyOCk7Y1ttPj4yXT0oY1ttPj4yXXwwKSsxfWlmKChzfDApPT0xNCljW3A+PjJdPWNbbT4+Ml07aWYoY1tsPj4yXXwwKWNbY1tsPj4yXT4+Ml09Y1tqPj4yXTtzPWNbcD4+Ml18MDtjW2c+PjJdPShjW3A+PjJdfDApPj0wP3MrKGNbaz4+Ml18MCl8MDpzO3M9Y1tnPj4yXXwwO2k9dDtyZXR1cm4gc3wwfWZ1bmN0aW9uIHRkKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MDtiPWk7aT1pKzE2fDA7ZD1iKzR8MDtlPWI7Y1tkPj4yXT1hO2NbZT4+Ml09SWQoKGtSKGNbZD4+Ml18MCl8MCkrMXwwKXwwO2E9aVIoY1tlPj4yXXwwLGNbZD4+Ml18MCl8MDtpPWI7cmV0dXJuIGF8MH1mdW5jdGlvbiB1ZChiLGUpe2I9YnwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wO2s9aTtpPWkrMTZ8MDtmPWsrMTJ8MDtnPWsrOHwwO2o9ays0fDA7aD1rO2NbZj4+Ml09YjtjW2c+PjJdPWU7Y1tqPj4yXT0wO2lmKChjW2c+PjJdfDApPj0wKWNbaD4+Ml09KGNbZj4+Ml18MCkrKGNbZz4+Ml18MCk7ZWxzZSBjW2g+PjJdPS0xO2lmKChjW2Y+PjJdfDApPj4+MD4oY1toPj4yXXwwKT4+PjApU2EoMTc1MTYsMTY3MzQsMzE2LDE3NTI1KTt3aGlsZSgxKXtpZighKGFbY1tmPj4yXT4+MF18MCkpe2Y9MTA7YnJlYWt9aWYoKGNbZj4+Ml18MCk+Pj4wPj0oY1toPj4yXXwwKT4+PjApe2Y9MTA7YnJlYWt9Y1tmPj4yXT0oY1tmPj4yXXwwKSsoKGRbMTY5ODArKGRbY1tmPj4yXT4+MF18MCk+PjBdfDApKzEpO2Nbaj4+Ml09KGNbaj4+Ml18MCkrMX1pZigoZnwwKT09MTApe2k9aztyZXR1cm4gY1tqPj4yXXwwfXJldHVybiAwfWZ1bmN0aW9uIHZkKGEsYixkLGUpe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGo9MCxrPTAsbD0wLG09MCxuPTA7bD1pO2k9aSs0OHwwO209bCszMnwwO2o9bCsxNnwwO249bCsyOHwwO2c9bCs4fDA7Zj1sO2s9bCsyNHwwO2NbbT4+Ml09YTthPWo7Y1thPj4yXT1iO2NbYSs0Pj4yXT1kO2Nbbj4+Ml09ZTtjW2s+PjJdPWNbbj4+Ml07ZT0oY1trPj4yXXwwKSs0OHwwO2I9Y1ttPj4yXXwwO2lmKDA9PShjW2U+PjJdfDApPzA9PShjW2UrND4+Ml18MCk6MCl7bj1jW2I+PjJdfDA7bT1nO2NbbT4+Ml09bjtjW20rND4+Ml09KChufDApPDApPDwzMT4+MzE7bT0oY1trPj4yXXwwKSszMnwwO249ajtiPWNbaz4+Ml18MDtpZigoY1ttPj4yXXwwKT09KGNbbj4+Ml18MCk/KGNbbSs0Pj4yXXwwKT09KGNbbis0Pj4yXXwwKTowKXtuPWIrNDB8MDttPW47bT1SUihjW20+PjJdfDAsY1ttKzQ+PjJdfDAsMSwwKXwwO2Nbbj4+Ml09bTtjW24rND4+Ml09QztpPWw7cmV0dXJufW09YiszMnwwO2U9Y1ttKzQ+PjJdfDA7bj1qO2Y9Y1tuKzQ+PjJdfDA7aWYoISgoZXwwKTwoZnwwKXwoKGV8MCk9PShmfDApPyhjW20+PjJdfDApPj4+MDwoY1tuPj4yXXwwKT4+PjA6MCkpKXtpPWw7cmV0dXJufW49Y1tnKzQ+PjJdfDA7bT1jW2s+PjJdfDA7Y1ttPj4yXT1jW2c+PjJdO2NbbSs0Pj4yXT1uO209Y1tqKzQ+PjJdfDA7bj0oY1trPj4yXXwwKSszMnwwO2Nbbj4+Ml09Y1tqPj4yXTtjW24rND4+Ml09bTtuPShjW2s+PjJdfDApKzQwfDA7Y1tuPj4yXT0xO2Nbbis0Pj4yXT0wO2k9bDtyZXR1cm59ZWxzZXtoW2Y+PjNdPStoW2I+PjNdO209KGNbaz4+Ml18MCkrMzJ8MDtuPWo7Yj1jW2s+PjJdfDA7aWYoKGNbbT4+Ml18MCk9PShjW24+PjJdfDApPyhjW20rND4+Ml18MCk9PShjW24rND4+Ml18MCk6MCl7bj1iKzQwfDA7bT1uO209UlIoY1ttPj4yXXwwLGNbbSs0Pj4yXXwwLDEsMCl8MDtjW24+PjJdPW07Y1tuKzQ+PjJdPUM7aT1sO3JldHVybn1tPWIrMzJ8MDtlPWNbbSs0Pj4yXXwwO249ajtnPWNbbis0Pj4yXXwwO2lmKCEoKGV8MCk8KGd8MCl8KChlfDApPT0oZ3wwKT8oY1ttPj4yXXwwKT4+PjA8KGNbbj4+Ml18MCk+Pj4wOjApKSl7aT1sO3JldHVybn1oWyhjW2s+PjJdfDApKzg+PjNdPStoW2Y+PjNdO209Y1tqKzQ+PjJdfDA7bj0oY1trPj4yXXwwKSszMnwwO2Nbbj4+Ml09Y1tqPj4yXTtjW24rND4+Ml09bTtuPShjW2s+PjJdfDApKzQwfDA7Y1tuPj4yXT0xO2Nbbis0Pj4yXT0wO2k9bDtyZXR1cm59fWZ1bmN0aW9uIHdkKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTAsZz0wO2Y9aTtpPWkrMTZ8MDtiPWYrNHwwO2U9ZjtjW2I+PjJdPWE7Y1tlPj4yXT13ZShjW2I+PjJdfDAsMCl8MDtpZighKGNbZT4+Ml18MCkpe2k9ZjtyZXR1cm59aWYoIShjWyhjW2U+PjJdfDApKzU2Pj4yXXwwKSl7aT1mO3JldHVybn1jWyhjW2U+PjJdfDApKzYwPj4yXT0wO2hkKGNbKGNbZT4+Ml18MCkrNTY+PjJdfDAsMTMyLGNbZT4+Ml18MCk7amQoY1soY1tlPj4yXXwwKSs1Nj4+Ml18MCk7S1IoY1soY1tlPj4yXXwwKSs1Nj4+Ml18MCk7ZD0oY1tlPj4yXXwwKSs0OHwwO2lmKCEoMD09KGNbZD4+Ml18MCk/MD09KGNbZCs0Pj4yXXwwKTowKSl7ZD0oY1tlPj4yXXwwKSs0MHwwO2hlKGNbYj4+Ml18MCwraFsoY1tlPj4yXXwwKSs4Pj4zXS8oKygoY1tkPj4yXXwwKT4+PjApKzQyOTQ5NjcyOTYuMCorKGNbZCs0Pj4yXXwwKSkpO2k9ZjtyZXR1cm59Zz0oY1tlPj4yXXwwKSs0MHwwO2I9Y1tiPj4yXXwwO2Q9Y1tlPj4yXXwwO2E9Y1tkPj4yXXwwO2Q9Y1tkKzQ+PjJdfDA7aWYoMT09KGNbZz4+Ml18MCk/MD09KGNbZys0Pj4yXXwwKTowKXtrZShiLGEsZCk7aT1mO3JldHVybn1lbHNle2c9KGNbZT4+Ml18MCkrNDB8MDtoZShiLCgrKGE+Pj4wKSs0Mjk0OTY3Mjk2LjAqKyhkfDApKSoxLjAvKCsoKGNbZz4+Ml18MCk+Pj4wKSs0Mjk0OTY3Mjk2LjAqKyhjW2crND4+Ml18MCkpKTtpPWY7cmV0dXJufX1mdW5jdGlvbiB4ZChhLGIsZCxlKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MDtxPWk7aT1pKzY0fDA7aj1xKzU2fDA7bT1xKzMyfDA7cj1xKzUyfDA7bz1xKzI0fDA7bj1xKzE2fDA7Zj1xKzh8MDtrPXE7Zz1xKzQ4fDA7bD1xKzQ0fDA7cD1xKzQwfDA7Y1tqPj4yXT1hO2E9bTtjW2E+PjJdPWI7Y1thKzQ+PjJdPWQ7Y1tyPj4yXT1lO2NbcD4+Ml09Y1tyPj4yXTtpZigoY1soY1twPj4yXXwwKSs2MD4+Ml18MCk+MCl7aT1xO3JldHVybn1oW2Y+PjNdPStoWyhjW3A+PjJdfDApKzI0Pj4zXTtyPShjW3A+PjJdfDApKzE2fDA7aFtrPj4zXT0rKChjW3I+PjJdfDApPj4+MCkrNDI5NDk2NzI5Ni4wKisoY1tyKzQ+PjJdfDApLStoWyhjW3A+PjJdfDApKzI0Pj4zXTtyPShjW3A+PjJdfDApKzMyfDA7ZT1tO2U9UlIoY1tyPj4yXXwwLGNbcis0Pj4yXXwwLGNbZT4+Ml18MCxjW2UrND4+Ml18MCl8MDtjW2c+PjJdPWU7ZT0oY1twPj4yXXwwKSsxNnwwO3I9KGNbcD4+Ml18MCkrMzJ8MDtyPVFSKGNbZT4+Ml18MCxjW2UrND4+Ml18MCxjW3I+PjJdfDAsY1tyKzQ+PjJdfDApfDA7Y1tsPj4yXT1yO2RvIGlmKCsoY1tnPj4yXXwwKT49K2hbZj4+M10pe2I9Y1twPj4yXXwwO2lmKCEoKyhjW2w+PjJdfDApPj0raFtrPj4zXSkpe2NbYis2MD4+Ml09MTticmVha31yPWIrNDB8MDtiPXI7Yj1SUihjW2I+PjJdfDAsY1tiKzQ+PjJdfDAsMSwwKXwwO2Nbcj4+Ml09YjtjW3IrND4+Ml09QztyPShjW3A+PjJdfDApKzQ4fDA7Yj1jW2o+PjJdfDA7aWYoMD09KGNbcj4+Ml18MCk/MD09KGNbcis0Pj4yXXwwKTowKXtuPWNbYj4+Ml18MDtyPW87Y1tyPj4yXT1uO2Nbcis0Pj4yXT0oKG58MCk8MCk8PDMxPj4zMTtyPWNbcD4+Ml18MDtuPXI7bz1SUihjW24+PjJdfDAsY1tuKzQ+PjJdfDAsY1tvPj4yXXwwLGNbbys0Pj4yXXwwKXwwO2Nbcj4+Ml09bztjW3IrND4+Ml09QzticmVha31lbHNle2hbbj4+M109K2hbYj4+M107cj0oY1twPj4yXXwwKSs4fDA7aFtyPj4zXT0raFtyPj4zXSsgK2hbbj4+M107YnJlYWt9fXdoaWxlKDApO289bTtyPShjW3A+PjJdfDApKzMyfDA7cD1yO3A9UlIoY1twPj4yXXwwLGNbcCs0Pj4yXXwwLGNbbz4+Ml18MCxjW28rND4+Ml18MCl8MDtjW3I+PjJdPXA7Y1tyKzQ+PjJdPUM7aT1xO3JldHVybn1mdW5jdGlvbiB5ZChiKXtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MDtoPWk7aT1pKzE2fDA7Zz1oKzEyfDA7ZD1oKzh8MDtlPWgrNHwwO2Y9aDtjW2Q+PjJdPWI7aWYoISh6ZChjW2Q+PjJdfDAsMTc2MDUsNyl8MCkpY1tkPj4yXT0oY1tkPj4yXXwwKSs3O2NbZj4+Ml09SmYoY1tkPj4yXXwwKXwwO2NbZT4+Ml09MDt3aGlsZSgxKXtpZigoY1tlPj4yXXwwKT49OCl7ZD05O2JyZWFrfWlmKCh6ZChjW2Q+PjJdfDAsY1s5NzYrKGNbZT4+Ml08PDIpPj4yXXwwLGNbZj4+Ml18MCl8MCk9PTA/KEtmKGFbKGNbOTc2KyhjW2U+PjJdPDwyKT4+Ml18MCkrKGNbZj4+Ml18MCk+PjBdfDApfDApPT0wOjApe2Q9NzticmVha31jW2U+PjJdPShjW2U+PjJdfDApKzF9aWYoKGR8MCk9PTcpe2NbZz4+Ml09MTtnPWNbZz4+Ml18MDtpPWg7cmV0dXJuIGd8MH1lbHNlIGlmKChkfDApPT05KXtjW2c+PjJdPTA7Zz1jW2c+PjJdfDA7aT1oO3JldHVybiBnfDB9cmV0dXJuIDB9ZnVuY3Rpb24gemQoYSxiLGUpe2E9YXwwO2I9YnwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTA7bT1pO2k9aSszMnwwO2w9bSsyMHwwO2Y9bSsxNnwwO2c9bSsxMnwwO2g9bSs4fDA7aj1tKzR8MDtrPW07Y1tmPj4yXT1hO2NbZz4+Ml09YjtjW2g+PjJdPWU7ZT1jW2c+PjJdfDA7aWYoIShjW2Y+PjJdfDApKXtjW2w+PjJdPShlfDApIT0wPy0xOjA7bD1jW2w+PjJdfDA7aT1tO3JldHVybiBsfDB9aWYoIWUpe2NbbD4+Ml09MTtsPWNbbD4+Ml18MDtpPW07cmV0dXJuIGx8MH1jW2o+PjJdPWNbZj4+Ml07Y1trPj4yXT1jW2c+PjJdO3doaWxlKDEpe2c9Y1toPj4yXXwwO2NbaD4+Ml09ZystMTtpZigoZ3wwKTw9MClicmVhaztpZighKGRbY1tqPj4yXT4+MF18MCkpYnJlYWs7aWYoKGRbMTc2MTMrKGRbY1tqPj4yXT4+MF18MCk+PjBdfDB8MCkhPShkWzE3NjEzKyhkW2Nbaz4+Ml0+PjBdfDApPj4wXXwwfDApKWJyZWFrO2Nbaj4+Ml09KGNbaj4+Ml18MCkrMTtjW2s+PjJdPShjW2s+PjJdfDApKzF9aWYoKGNbaD4+Ml18MCk8MCllPTA7ZWxzZSBlPShkWzE3NjEzKyhkW2Nbaj4+Ml0+PjBdfDApPj4wXXwwKS0oZFsxNzYxMysoZFtjW2s+PjJdPj4wXXwwKT4+MF18MCl8MDtjW2w+PjJdPWU7bD1jW2w+PjJdfDA7aT1tO3JldHVybiBsfDB9ZnVuY3Rpb24gQWQoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wO2U9aTtpPWkrMTZ8MDtiPWUrNHwwO2Q9ZTtjW2Q+PjJdPWE7aWYoKGNbZD4+Ml18MCk+PTAmKGNbZD4+Ml18MCk8OCl7Y1tiPj4yXT1jWzk3NisoY1tkPj4yXTw8Mik+PjJdO2E9Y1tiPj4yXXwwO2k9ZTtyZXR1cm4gYXwwfWVsc2V7Y1tiPj4yXT0wO2E9Y1tiPj4yXXwwO2k9ZTtyZXR1cm4gYXwwfXJldHVybiAwfWZ1bmN0aW9uIEJkKGIsZCxlLGYpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wLG09MDttPWk7aT1pKzMyfDA7Zz1tKzIwfDA7aD1tKzE2fDA7aj1tKzEyfDA7az1tKzh8MDtsPW0rNHwwO2NbaD4+Ml09YjtjW2o+PjJdPWQ7Y1trPj4yXT1lO2NbbD4+Ml09ZjtpZigoY1toPj4yXXwwKTwwfChjW2g+PjJdfDApPj0xMCl7Y1tnPj4yXT1MZigxODM2NSl8MDtsPWNbZz4+Ml18MDtpPW07cmV0dXJuIGx8MH1pZihhWzE3ODY5KyhjW2g+PjJdfDApPj4wXXwwKWI9TWYoKXwwO2Vsc2UgYj1OZigpfDA7Y1ttPj4yXT1iO2o9Y1tqPj4yXXwwO2Nbaj4+Ml09Y1sxMDA4KyhjW2g+PjJdPDwyKT4+Ml07Y1tqKzQ+PjJdPTA7az1jW2s+PjJdfDA7Y1trPj4yXT1jWzEwNDgrKGNbaD4+Ml08PDIpPj4yXTtjW2srND4+Ml09MDtpZihjW2w+PjJdfDApY1sxMDQ4KyhjW2g+PjJdPDwyKT4+Ml09Y1sxMDA4KyhjW2g+PjJdPDwyKT4+Ml07Y1tnPj4yXT0wO2w9Y1tnPj4yXXwwO2k9bTtyZXR1cm4gbHwwfWZ1bmN0aW9uIENkKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTAsZz0wO2Y9aTtpPWkrMTZ8MDtiPWYrMTJ8MDtkPWYrOHwwO2U9Zis0fDA7Zz1mO2NbZD4+Ml09YTtjW2U+PjJdPTA7Y1tnPj4yXT1EZCgpfDA7aWYoY1tnPj4yXXwwKXtjW2I+PjJdPTA7Zz1jW2I+PjJdfDA7aT1mO3JldHVybiBnfDB9Y1tlPj4yXT1jWzI3Ml07d2hpbGUoMSl7aWYoKGNbZT4+Ml18MCk9PTB8KGNbZD4+Ml18MCk9PTApYnJlYWs7aWYoIShoUihjW2Q+PjJdfDAsY1soY1tlPj4yXXwwKSsxNj4+Ml18MCl8MCkpYnJlYWs7Y1tlPj4yXT1jWyhjW2U+PjJdfDApKzEyPj4yXX1jW2I+PjJdPWNbZT4+Ml07Zz1jW2I+PjJdfDA7aT1mO3JldHVybiBnfDB9ZnVuY3Rpb24gRGQoKXt2YXIgYT0wLGI9MCxkPTAsZT0wLGY9MDtlPWk7aT1pKzE2fDA7YT1lKzR8MDtiPWU7aWYoY1s1OV18MCl7Y1thPj4yXT0wO2Y9Y1thPj4yXXwwO2k9ZTtyZXR1cm4gZnwwfWNbYj4+Ml09MDtpZihjW2I+PjJdfDApe2NbYT4+Ml09Y1tiPj4yXTtmPWNbYT4+Ml18MDtpPWU7cmV0dXJuIGZ8MH1jWzYxXT0xO2lmKCEoY1s2Ml18MCkpY1tiPj4yXT1VZigpfDA7aWYoKChjW2I+PjJdfDApPT0wPyhjWzYyXT0xLChjWzY1XXwwKT09MCk6MCk/KGNbNjVdPTgsISgoY1szXXwwKT09MHwoY1s2NV18MCkhPTApKTowKWNbYj4+Ml09NztpZighKGNbYj4+Ml18MCkpY1s2NF09KGNbNjRdfDApKzE7aWYoY1tiPj4yXXwwKXtjW2E+PjJdPWNbYj4+Ml07Zj1jW2E+PjJdfDA7aT1lO3JldHVybiBmfDB9aWYoKGNbNTldfDApPT0wJihjWzYwXXwwKT09MCl7Y1s2MF09MTtkPTEwOTI7Zj1kKzkyfDA7ZG97Y1tkPj4yXT0wO2Q9ZCs0fDB9d2hpbGUoKGR8MCk8KGZ8MCkpO1ZmKCk7aWYoIShjWzYzXXwwKSljW2I+PjJdPVdmKCl8MDtpZighKGNbYj4+Ml18MCkpe2NbNjNdPTE7Y1tiPj4yXT1YZigpfDB9aWYoIShjW2I+PjJdfDApKXtZZihjWzUzXXwwLGNbNTRdfDAsY1s1NV18MCk7Y1s1OV09MX1jWzYwXT0wfWNbNjRdPShjWzY0XXwwKSstMTtpZigoY1s2NF18MCk8PTApY1s2NV09MDtjW2E+PjJdPWNbYj4+Ml07Zj1jW2E+PjJdfDA7aT1lO3JldHVybiBmfDB9ZnVuY3Rpb24gRWQoYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MDtoPWk7aT1pKzE2fDA7ZT1oKzEyfDA7Zj1oKzh8MDtnPWgrNHwwO2Q9aDtjW2Y+PjJdPWE7Y1tnPj4yXT1iO2NbZD4+Ml09RGQoKXwwO2lmKGNbZD4+Ml18MCl7Y1tlPj4yXT1jW2Q+PjJdO2c9Y1tlPj4yXXwwO2k9aDtyZXR1cm4gZ3wwfVpmKGNbZj4+Ml18MCk7Yj1jWzI3Ml18MDtpZigoY1tnPj4yXXwwKSE9MHwoY1syNzJdfDApPT0wKXtjWyhjW2Y+PjJdfDApKzEyPj4yXT1iO2NbMjcyXT1jW2Y+PjJdfWVsc2V7Y1soY1tmPj4yXXwwKSsxMj4+Ml09Y1tiKzEyPj4yXTtjWyhjWzI3Ml18MCkrMTI+PjJdPWNbZj4+Ml19Y1tlPj4yXT0wO2c9Y1tlPj4yXXwwO2k9aDtyZXR1cm4gZ3wwfWZ1bmN0aW9uIEZkKGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2k9aSsxNnwwO2NbYj4+Ml09YTtpPWI7cmV0dXJuIDB9ZnVuY3Rpb24gR2QoYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MDtqPWk7aT1pKzQ4fDA7ZT1qKzMyfDA7Zj1qKzI0fDA7aD1qKzE2fDA7Zz1qKzh8MDtkPWo7az1qKzQwfDA7bD1mO2NbbD4+Ml09YTtjW2wrND4+Ml09YjtjW2s+PjJdPURkKCl8MDtpZihjW2s+PjJdfDApe2s9ZTtjW2s+PjJdPS0xO2Nbays0Pj4yXT0tMTtrPWU7bD1rO2w9Y1tsPj4yXXwwO2s9ays0fDA7az1jW2s+PjJdfDA7Qz1rO2k9ajtyZXR1cm4gbHwwfWI9Mjk2O2s9Y1tiKzQ+PjJdfDA7bD1oO2NbbD4+Ml09Y1tiPj4yXTtjW2wrND4+Ml09aztpZigoY1tmKzQ+PjJdfDApPDApe2w9Y1toKzQ+PjJdfDA7az1lO2Nbaz4+Ml09Y1toPj4yXTtjW2srND4+Ml09bDtrPWU7bD1rO2w9Y1tsPj4yXXwwO2s9ays0fDA7az1jW2s+PjJdfDA7Qz1rO2k9ajtyZXR1cm4gbHwwfWI9ZjtsPWNbYis0Pj4yXXwwO2s9Mjk2O2Nbaz4+Ml09Y1tiPj4yXTtjW2srND4+Ml09bDtrPV9mKDApfDA7bD1kO2NbbD4+Ml09aztjW2wrND4+Ml09QztsPWY7az1jW2wrND4+Ml18MDtpZigoa3wwKT4wfChrfDApPT0wJihjW2w+PjJdfDApPj4+MD4wKXtsPWY7Yj1jW2wrND4+Ml18MDthPWQ7az1jW2ErND4+Ml18MDthPShifDApPChrfDApfCgoYnwwKT09KGt8MCk/KGNbbD4+Ml18MCk+Pj4wPD0oY1thPj4yXXwwKT4+PjA6MCl9ZWxzZSBhPTA7Y1s3OV09YSYxO2w9SGQoKXwwO2s9ZjtrPVFSKGx8MCxDfDAsY1trPj4yXXwwLGNbays0Pj4yXXwwKXwwO2w9ZztjW2w+PjJdPWs7Y1tsKzQ+PjJdPUM7bD1nO2s9Y1tsKzQ+PjJdfDA7aWYoKGt8MCk+MHwoa3wwKT09MCYoY1tsPj4yXXwwKT4+PjA+MClGZChjW2c+PjJdJjIxNDc0ODM2NDcpfDA7bD1jW2grND4+Ml18MDtrPWU7Y1trPj4yXT1jW2g+PjJdO2Nbays0Pj4yXT1sO2s9ZTtsPWs7bD1jW2w+PjJdfDA7az1rKzR8MDtrPWNbaz4+Ml18MDtDPWs7aT1qO3JldHVybiBsfDB9ZnVuY3Rpb24gSGQoKXt2YXIgYT0wLGI9MDtiPWk7aT1pKzE2fDA7YT1iKzh8MDtCZCgwLGEsYiwwKXwwO0M9Y1thKzQ+PjJdfDA7aT1iO3JldHVybiBjW2E+PjJdfDB9ZnVuY3Rpb24gSWQoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wO2U9aTtpPWkrMTZ8MDtkPWUrNHwwO2I9ZTtjW2I+PjJdPWE7aWYoRGQoKXwwKXtjW2Q+PjJdPTA7ZD1jW2Q+PjJdfDA7aT1lO3JldHVybiBkfDB9aWYoKGNbYj4+Ml18MCk8PTApYj0wO2Vsc2V7Yj1jW2I+PjJdfDA7Yj0kZihiLCgoYnwwKTwwKTw8MzE+PjMxKXwwfWNbZD4+Ml09YjtkPWNbZD4+Ml18MDtpPWU7cmV0dXJuIGR8MH1mdW5jdGlvbiBKZChhLGIpe2E9YXwwO2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTA7Zj1pO2k9aSsxNnwwO2Q9Zis4fDA7ZT1mO2c9ZTtjW2c+PjJdPWE7Y1tnKzQ+PjJdPWI7aWYoRGQoKXwwKXtjW2Q+PjJdPTA7Zz1jW2Q+PjJdfDA7aT1mO3JldHVybiBnfDB9ZWxzZXtnPWU7Y1tkPj4yXT0kZihjW2c+PjJdfDAsY1tnKzQ+PjJdfDApfDA7Zz1jW2Q+PjJdfDA7aT1mO3JldHVybiBnfDB9cmV0dXJuIDB9ZnVuY3Rpb24gS2QoYSl7YT1hfDA7dmFyIGI9MCxkPTA7ZD1pO2k9aSsxNnwwO2I9ZDtjW2I+PjJdPWE7aWYoIShjW2I+PjJdfDApKXtpPWQ7cmV0dXJufWlmKGNbMl18MCl7YmcoMCxhZyhjW2I+PjJdfDApfDApO2JnKDksMSk7UWJbY1s1Mj4+Ml0mMjU1XShjW2I+PjJdfDApO2k9ZDtyZXR1cm59ZWxzZXtRYltjWzUyPj4yXSYyNTVdKGNbYj4+Ml18MCk7aT1kO3JldHVybn19ZnVuY3Rpb24gTGQoYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wO2c9aTtpPWkrMTZ8MDtkPWcrOHwwO2U9Zys0fDA7Zj1nO2NbZT4+Ml09YTtjW2Y+PjJdPWI7aWYoRGQoKXwwKXtjW2Q+PjJdPTA7YT1jW2Q+PjJdfDA7aT1nO3JldHVybiBhfDB9aWYoKGNbZj4+Ml18MCk8MCljW2Y+PjJdPTA7YT1jW2Y+PjJdfDA7Y1tkPj4yXT1jZyhjW2U+PjJdfDAsYSwoKGF8MCk8MCk8PDMxPj4zMSl8MDthPWNbZD4+Ml18MDtpPWc7cmV0dXJuIGF8MH1mdW5jdGlvbiBNZChhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MDtoPWk7aT1pKzE2fDA7ZT1oKzEyfDA7Zj1oKzh8MDtnPWg7Y1tmPj4yXT1hO2E9ZztjW2E+PjJdPWI7Y1thKzQ+PjJdPWQ7aWYoRGQoKXwwKXtjW2U+PjJdPTA7YT1jW2U+PjJdfDA7aT1oO3JldHVybiBhfDB9ZWxzZXthPWc7Y1tlPj4yXT1jZyhjW2Y+PjJdfDAsY1thPj4yXXwwLGNbYSs0Pj4yXXwwKXwwO2E9Y1tlPj4yXXwwO2k9aDtyZXR1cm4gYXwwfXJldHVybiAwfWZ1bmN0aW9uIE5kKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wO2o9aTtpPWkrMTI4fDA7ZD1qKzQwfDA7ZT1qKzM2fDA7Zj1qKzMyfDA7aD1qKzI4fDA7Zz1qO2NbZT4+Ml09YTtjW2Y+PjJdPWI7aWYoRGQoKXwwKXtjW2Q+PjJdPTA7YT1jW2Q+PjJdfDA7aT1qO3JldHVybiBhfDB9ZWxzZXtkZyhnLDAsais0NHwwLDcwLDFlOSk7ZWcoZyxjW2U+PjJdfDAsY1tmPj4yXXwwKTtjW2g+PjJdPWZnKGcpfDA7Y1tkPj4yXT1jW2g+PjJdO2E9Y1tkPj4yXXwwO2k9ajtyZXR1cm4gYXwwfXJldHVybiAwfWZ1bmN0aW9uIE9kKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTA7aD1pO2k9aSszMnwwO2Q9aCsyOHwwO2U9aCsyNHwwO2Y9aCs4fDA7Zz1oO2NbZT4+Ml09YTtpZihEZCgpfDApe2NbZD4+Ml09MDthPWNbZD4+Ml18MDtpPWg7cmV0dXJuIGF8MH1lbHNle2NbZj4+Ml09YjtjW2c+PjJdPU5kKGNbZT4+Ml18MCxmKXwwO2NbZD4+Ml09Y1tnPj4yXTthPWNbZD4+Ml18MDtpPWg7cmV0dXJuIGF8MH1yZXR1cm4gMH1mdW5jdGlvbiBQZChhLGIsZCxlKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wO2w9aTtpPWkrNDh8MDtmPWwrNDR8MDtnPWwrNDB8MDttPWwrMzZ8MDtoPWwrMzJ8MDtqPWwrMjh8MDtrPWw7Y1tnPj4yXT1hO2NbbT4+Ml09YjtjW2g+PjJdPWQ7Y1tqPj4yXT1lO2U9Y1ttPj4yXXwwO2lmKChjW2c+PjJdfDApPD0wKXtjW2Y+PjJdPWU7bT1jW2Y+PjJdfDA7aT1sO3JldHVybiBtfDB9ZWxzZXtkZyhrLDAsZSxjW2c+PjJdfDAsMCk7ZWcoayxjW2g+PjJdfDAsY1tqPj4yXXwwKTtjW2Y+PjJdPWZnKGspfDA7bT1jW2Y+PjJdfDA7aT1sO3JldHVybiBtfDB9cmV0dXJuIDB9ZnVuY3Rpb24gUWQoYSxiLGQsZSl7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wO2c9aTtpPWkrMzJ8MDtsPWcrMjh8MDtrPWcrMjR8MDtqPWcrMjB8MDtmPWcrMTZ8MDtoPWc7Y1tsPj4yXT1hO2Nbaz4+Ml09YjtjW2o+PjJdPWQ7Y1toPj4yXT1lO2NbZj4+Ml09UGQoY1tsPj4yXXwwLGNbaz4+Ml18MCxjW2o+PjJdfDAsaCl8MDtpPWc7cmV0dXJuIGNbZj4+Ml18MH1mdW5jdGlvbiBSZChhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MDtoPWk7aT1pKzMyfDA7ZT1oKzIwfDA7Zj1oKzE2fDA7Zz1oO2NbZT4+Ml09YTtjW2Y+PjJdPWI7aWYoIShjWzY2XXwwKSl7aT1oO3JldHVybn1jW2c+PjJdPWQ7Z2coY1tlPj4yXXwwLGNbZj4+Ml18MCxnKTtpPWg7cmV0dXJufWZ1bmN0aW9uIFNkKGIsZSl7Yj1ifDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MDttPWk7aT1pKzI4OHwwO2Y9bSsxMnwwO2c9bSs4fDA7az1tKzI3MnwwO2w9bSs0fDA7aD1tO2o9bSsxNnwwO2NbZj4+Ml09YjtjW2c+PjJdPWU7Y1tsPj4yXT1jW2c+PjJdO2lmKERkKCl8MCl7aT1tO3JldHVybn1pZigoY1tmPj4yXXwwKTw9MHwoY1tnPj4yXXwwKT09MCl7YVsxNzg3OV09MDtpPW07cmV0dXJufWlmKCEoYVsxNzg3OV18MCkpe2FbMTc4ODFdPTA7YVsxNzg4MF09MDtoZyhDZCgwKXwwLDI1NixqKXwwO2NbaD4+Ml09MDt3aGlsZSgxKXtpZigoY1toPj4yXXwwKT49MjU2KWJyZWFrO2FbMTc4ODIrKGNbaD4+Ml18MCk+PjBdPWNbaD4+Ml07Y1toPj4yXT0oY1toPj4yXXwwKSsxfWNbaD4+Ml09MDt3aGlsZSgxKXtpZigoY1toPj4yXXwwKT49MjU2KWJyZWFrO2FbMTc4ODFdPShkWzE3ODgxXXwwKSsoKGRbMTc4ODIrKGNbaD4+Ml18MCk+PjBdfDApKyhhW2orKGNbaD4+Ml18MCk+PjBdfDApKTthW2s+PjBdPWFbMTc4ODIrKGRbMTc4ODFdfDApPj4wXXwwO2FbMTc4ODIrKGRbMTc4ODFdfDApPj4wXT1hWzE3ODgyKyhjW2g+PjJdfDApPj4wXXwwO2FbMTc4ODIrKGNbaD4+Ml18MCk+PjBdPWFbaz4+MF18MDtjW2g+PjJdPShjW2g+PjJdfDApKzF9YVsxNzg3OV09MX1kb3thWzE3ODgwXT0oYVsxNzg4MF18MCkrMTw8MjQ+PjI0O2Fbaz4+MF09YVsxNzg4MisoZFsxNzg4MF18MCk+PjBdfDA7YVsxNzg4MV09KGRbMTc4ODFdfDApKyhkW2s+PjBdfDApO2FbMTc4ODIrKGRbMTc4ODBdfDApPj4wXT1hWzE3ODgyKyhkWzE3ODgxXXwwKT4+MF18MDthWzE3ODgyKyhkWzE3ODgxXXwwKT4+MF09YVtrPj4wXXwwO2Fbaz4+MF09KGRbaz4+MF18MCkrKGRbMTc4ODIrKGRbMTc4ODBdfDApPj4wXXwwKTtqPWFbMTc4ODIrKGRbaz4+MF18MCk+PjBdfDA7ZT1jW2w+PjJdfDA7Y1tsPj4yXT1lKzE7YVtlPj4wXT1qO2U9KGNbZj4+Ml18MCkrLTF8MDtjW2Y+PjJdPWV9d2hpbGUoKGV8MCkhPTApO2k9bTtyZXR1cm59ZnVuY3Rpb24gVGQoYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wO2c9aTtpPWkrMTZ8MDtkPWcrOHwwO2U9Zys0fDA7Zj1nO2NbZT4+Ml09YTtjW2Y+PjJdPWI7YT1jW2Y+PjJdfDA7ZG8gaWYoY1tlPj4yXXwwKWlmKCFhKXtjW2Q+PjJdPTE7YnJlYWt9ZWxzZXtjW2Q+PjJdPWlnKGNbZT4+Ml18MCxjW2Y+PjJdfDApfDA7YnJlYWt9ZWxzZSBjW2Q+PjJdPShhfDApIT0wPy0xOjA7d2hpbGUoMCk7aT1nO3JldHVybiBjW2Q+PjJdfDB9ZnVuY3Rpb24gVWQoKXt2YXIgYT0wLGI9MDtiPWk7aT1pKzE2fDA7YT1iO2NbYT4+Ml09MDt3aGlsZSgxKXtpZigoY1thPj4yXXwwKT4+PjA+PTQpYnJlYWs7RWQoMTE4NCsoKGNbYT4+Ml18MCkqODh8MCl8MCwoY1thPj4yXXwwKT09MCYxKXwwO2NbYT4+Ml09KGNbYT4+Ml18MCkrMX1pPWI7cmV0dXJuIDB9ZnVuY3Rpb24gVmQoYSxiKXthPWF8MDtiPWJ8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxEPTAsRT0wLEY9MDtGPWk7aT1pKzExMnwwO3I9RisxMDh8MDtlPUYrMTA0fDA7RD1GKzEwMHwwO2Y9Ris5NnwwO0I9Ris5MnwwO3A9Ris4OHwwO3o9Ris4NHwwO3g9Ris4MHwwO2o9Ris3NnwwO209Ris3MnwwO3M9Ris2OHwwO2g9Ris2NHwwO289Ris2MHwwO2s9Ris1NnwwO3E9Ris1MnwwO3Y9RisxNnwwO3k9Ris0OHwwO2c9Ris0NHwwO2w9Ris0MHwwO3U9Ris4fDA7dD1GO249RiszNnwwO0E9RiszMnwwO3c9RisyOHwwO0U9RisyNHwwO2Nbcj4+Ml09YTtjW2U+PjJdPWI7Y1tCPj4yXT0wO2NbcD4+Ml09MDttZyhjWyhjW3I+PjJdfDApKzI0Pj4yXXwwKTtjW0Q+PjJdPWNbKGNbcj4+Ml18MCkrMjg+PjJdO2lmKG5nKGNbRD4+Ml18MCl8MCl7RT1jW0Q+PjJdfDA7aT1GO3JldHVybiBFfDB9Y1t6Pj4yXT1QZihjWyhjW3I+PjJdfDApKzI0Pj4yXXwwKXwwO2NbeD4+Ml09UGYoY1soY1tyPj4yXXwwKSs0Pj4yXXwwKXwwO2NbbT4+Ml09LTE7Y1tzPj4yXT0wO2lmKChjW2Nbcj4+Ml0+PjJdfDApIT0wPyhkWyhjWyhjWyhjW3I+PjJdfDApKzI0Pj4yXXwwKSs0Pj4yXXwwKSsyMD4+MF18MHwwKT09MjowKWNbRD4+Ml09NTtlbHNlIGNbRD4+Ml09MDtpZigoY1tEPj4yXXwwKT09MD8wPT0ob2coY1soY1tyPj4yXXwwKSsyND4+Ml18MCl8MCk6MCl7Y1tEPj4yXT1wZyhjWyhjW3I+PjJdfDApKzI0Pj4yXXwwLDApfDA7Y1tzPj4yXT0xfWlmKCgoY1tEPj4yXXwwKT09MD8oY1soY1tyPj4yXXwwKSsxMj4+Ml18MCk9PTA6MCk/KHFnKGNbcj4+Ml18MCl8MCk9PTc6MCljW0Q+PjJdPTc7aWYoKDA9PShjW0Q+PjJdfDApPyhjWyhjW3I+PjJdfDApKzEyPj4yXXwwKT09MDowKT8oYT1wZyhjWyhjW3I+PjJdfDApKzQ+PjJdfDAsMil8MCxjW0Q+PjJdPWEsMD09KGF8MCkpOjApe2NbKGNbcj4+Ml18MCkrMTI+PjJdPTE7cmcoY1soY1tyPj4yXXwwKSs0Pj4yXXwwLDEsKGNbcj4+Ml18MCkrOHwwKX1jW0I+PjJdPXNnKGNbKGNbcj4+Ml18MCkrMjQ+PjJdfDApfDA7Y1twPj4yXT1zZyhjWyhjW3I+PjJdfDApKzQ+PjJdfDApfDA7Y1tmPj4yXT10ZyhQZihjWyhjW3I+PjJdfDApKzQ+PjJdfDApfDApfDA7aWYoMD09KGNbRD4+Ml18MCkmKGNbZj4+Ml18MCk9PTU/KGNbQj4+Ml18MCkhPShjW3A+PjJdfDApOjApY1tEPj4yXT04O2NbbT4+Ml09dWcoY1soY1tyPj4yXXwwKSsyND4+Ml18MCl8MDtjW2o+PjJdPTA7d2hpbGUoMSl7aWYoKGNbZT4+Ml18MCk+PTA/KGNbaj4+Ml18MCk+PShjW2U+PjJdfDApOjApYnJlYWs7aWYoKGNbKGNbcj4+Ml18MCkrMTY+PjJdfDApPj4+MD4oY1ttPj4yXXwwKT4+PjApYnJlYWs7aWYoISgoY1tEPj4yXXwwKSE9MF4xKSlicmVhaztjW2g+PjJdPWNbKGNbcj4+Ml18MCkrMTY+PjJdO2lmKChjW2g+PjJdfDApIT0oKCgoY1szODRdfDApPj4+MCkvKChjWyhjWyhjWyhjW3I+PjJdfDApKzI0Pj4yXXwwKSs0Pj4yXXwwKSszMj4+Ml18MCk+Pj4wKXwwKSsxfDApPyhjW0Q+PjJdPXZnKGNbej4+Ml18MCxjW2g+PjJdfDAsbywyKXwwLChjW0Q+PjJdfDApPT0wKTowKXtiPWNbcj4+Ml18MDthPWNbaD4+Ml18MDtjW0Q+PjJdPXhnKGIsYSx3ZyhjW28+PjJdfDApfDAsMCl8MDt5ZyhjW28+PjJdfDApfWE9KGNbcj4+Ml18MCkrMTZ8MDtjW2E+PjJdPShjW2E+PjJdfDApKzE7Y1tqPj4yXT0oY1tqPj4yXXwwKSsxfWRvIGlmKCEoY1tEPj4yXXwwKSl7Y1soY1tyPj4yXXwwKSszNj4+Ml09Y1ttPj4yXTtjWyhjW3I+PjJdfDApKzMyPj4yXT0oY1ttPj4yXXwwKSsxLShjWyhjW3I+PjJdfDApKzE2Pj4yXXwwKTtpZigoY1soY1tyPj4yXXwwKSsxNj4+Ml18MCk+Pj4wPihjW20+PjJdfDApPj4+MCl7Y1tEPj4yXT0xMDE7YnJlYWt9aWYoIShjWyhjW3I+PjJdfDApKzQwPj4yXXwwKSl6ZyhjW3I+PjJdfDApfXdoaWxlKDApO2lmKChjW0Q+PjJdfDApPT0xMDEpe2lmKCEoY1ttPj4yXXwwKSl7Y1tEPj4yXT1BZyhjWyhjW3I+PjJdfDApKzQ+PjJdfDApfDA7Y1ttPj4yXT0xfWlmKChjW0Q+PjJdfDApPT0wfChjW0Q+PjJdfDApPT0xMDEpY1tEPj4yXT1CZyhjWyhjW3I+PjJdfDApKzQ+PjJdfDAsMSwoY1soY1tyPj4yXXwwKSs4Pj4yXXwwKSsxfDApfDA7aWYoIShjW0Q+PjJdfDApKXtpZihjW2Nbcj4+Ml0+PjJdfDApQ2coY1tjW3I+PjJdPj4yXXwwKTtpZigoY1tmPj4yXXwwKT09NSljW0Q+PjJdPURnKGNbKGNbcj4+Ml18MCkrND4+Ml18MCwyKXwwfWlmKCEoY1tEPj4yXXwwKSl7aWYoKGNbQj4+Ml18MCk8KGNbcD4+Ml18MCkpe2NbcT4+Ml09KGNbcD4+Ml18MCkvKGNbQj4+Ml18MCl8MDtjW2s+PjJdPSgoY1ttPj4yXXwwKSsoY1txPj4yXXwwKS0xfDApLyhjW3E+PjJdfDApfDA7aWYoKGNbaz4+Ml18MCk9PSgoKChjWzM4NF18MCk+Pj4wKS8oKGNbKGNbKGNbKGNbcj4+Ml18MCkrND4+Ml18MCkrND4+Ml18MCkrMzI+PjJdfDApPj4+MCl8MCkrMXwwKSljW2s+PjJdPShjW2s+PjJdfDApKy0xfWVsc2UgY1trPj4yXT1fKGNbbT4+Ml18MCwoY1tCPj4yXXwwKS8oY1twPj4yXXwwKXwwKXwwO2lmKChjW0I+PjJdfDApPChjW3A+PjJdfDApKXtxPWNbQj4+Ml18MDtvPWNbbT4+Ml18MDtvPWFTKHF8MCwoKHF8MCk8MCk8PDMxPj4zMXwwLG98MCwoKG98MCk8MCk8PDMxPj4zMXwwKXwwO3E9djtjW3E+PjJdPW87Y1txKzQ+PjJdPUM7Y1t5Pj4yXT1FZyhjW3g+PjJdfDApfDA7RmcoY1t4Pj4yXXwwLGwpO2NbZz4+Ml09Y1trPj4yXTt3aGlsZSgxKXtpZihjW0Q+PjJdfDApYnJlYWs7aWYoKGNbZz4+Ml18MCk+Pj4wPihjW2w+PjJdfDApPj4+MClicmVhaztkbyBpZigoY1tnPj4yXXwwKSE9KCgoKGNbMzg0XXwwKT4+PjApLygoY1soY1soY1soY1tyPj4yXXwwKSs0Pj4yXXwwKSs0Pj4yXXwwKSszMj4+Ml18MCk+Pj4wKXwwKSsxfDApKXtjW0Q+PjJdPXZnKGNbeD4+Ml18MCxjW2c+PjJdfDAsbiwwKXwwO2lmKGNbRD4+Ml18MClicmVhaztjW0Q+PjJdPUdnKGNbbj4+Ml18MCl8MDt5ZyhjW24+PjJdfDApfXdoaWxlKDApO2NbZz4+Ml09KGNbZz4+Ml18MCkrMX1pZighKGNbRD4+Ml18MCkpY1tEPj4yXT1IZyhjW3g+PjJdfDAsMCwxKXwwO289KGNbMzg0XXwwKSsoY1twPj4yXXwwKXwwO2E9KChvfDApPDApPDwzMT4+MzE7cT12O249Y1txKzQ+PjJdfDA7aWYoKGF8MCk8KG58MCl8KChhfDApPT0obnwwKT9vPj4+MDwoY1txPj4yXXwwKT4+PjA6MCkpe2Y9KGNbMzg0XXwwKSsoY1twPj4yXXwwKXwwO2U9ZjtmPSgoZnwwKTwwKTw8MzE+PjMxfWVsc2V7Zj12O2U9Y1tmPj4yXXwwO2Y9Y1tmKzQ+PjJdfDB9cD10O2NbcD4+Ml09ZTtjW3ArND4+Ml09ZjtwPShjWzM4NF18MCkrKGNbQj4+Ml18MCl8MDtxPXU7Y1txPj4yXT1wO2NbcSs0Pj4yXT0oKHB8MCk8MCk8PDMxPj4zMTt3aGlsZSgxKXtpZihjW0Q+PjJdfDApYnJlYWs7cD11O249Y1twKzQ+PjJdfDA7cT10O289Y1txKzQ+PjJdfDA7aWYoISgobnwwKTwob3wwKXwoKG58MCk9PShvfDApPyhjW3A+PjJdfDApPj4+MDwoY1txPj4yXXwwKT4+PjA6MCkpKWJyZWFrO2NbQT4+Ml09MDtwPXU7cT1jW0I+PjJdfDA7cT1fUihjW3A+PjJdfDAsY1twKzQ+PjJdfDAscXwwLCgocXwwKTwwKTw8MzE+PjMxfDApfDA7cT1SUihxfDAsQ3wwLDEsMCl8MDtjW3c+PjJdPXE7Y1tEPj4yXT12ZyhjW3o+PjJdfDAsY1t3Pj4yXXwwLEEsMCl8MDtpZighKGNbRD4+Ml18MCkpe2NbRT4+Ml09d2coY1tBPj4yXXwwKXwwO3E9dTtjW0Q+PjJdPUlnKGNbeT4+Ml18MCxjW0U+PjJdfDAsY1tCPj4yXXwwLGNbcT4+Ml18MCxjW3ErND4+Ml18MCl8MH15ZyhjW0E+PjJdfDApO3A9Y1tCPj4yXXwwO3E9dTtwPVJSKGNbcT4+Ml18MCxjW3ErND4+Ml18MCxwfDAsKChwfDApPDApPDwzMT4+MzF8MCl8MDtxPXU7Y1txPj4yXT1wO2NbcSs0Pj4yXT1DfWlmKCEoY1tEPj4yXXwwKSl7RT12O2NbRD4+Ml09SmcoY1t5Pj4yXXwwLGNbRT4+Ml18MCxjW0UrND4+Ml18MCl8MH1pZighKGNbRD4+Ml18MCkpY1tEPj4yXT1LZyhjW3g+PjJdfDAsMCl8MH1lbHNle0xnKGNbeD4+Ml18MCxjW2s+PjJdfDApO2NbRD4+Ml09SGcoY1t4Pj4yXXwwLDAsMCl8MH1pZighKGNbRD4+Ml18MCkpe0U9TWcoY1soY1tyPj4yXXwwKSs0Pj4yXXwwLDApfDA7Y1tEPj4yXT1FO2NbRD4+Ml09MD09KEV8MCk/MTAxOkV9fX1pZihjW3M+PjJdfDApe05nKGNbKGNbcj4+Ml18MCkrMjQ+PjJdfDAsMCl8MDtNZyhjWyhjW3I+PjJdfDApKzI0Pj4yXXwwLDApfDB9aWYoKGNbRD4+Ml18MCk9PTMwODIpY1tEPj4yXT03O2NbKGNbcj4+Ml18MCkrMjg+PjJdPWNbRD4+Ml07RT1jW0Q+PjJdfDA7aT1GO3JldHVybiBFfDB9ZnVuY3Rpb24gV2QoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MCxnPTAsaD0wO2g9aTtpPWkrMzJ8MDtkPWgrMTZ8MDtlPWgrMTJ8MDtiPWgrOHwwO2Y9aCs0fDA7Zz1oO2NbZT4+Ml09YTtpZighKGNbZT4+Ml18MCkpe2NbZD4+Ml09MDtnPWNbZD4+Ml18MDtpPWg7cmV0dXJuIGd8MH1jW2Y+PjJdPWNbKGNbZT4+Ml18MCkrMjA+PjJdO21nKGNbKGNbZT4+Ml18MCkrMjQ+PjJdfDApO2lmKGNbY1tlPj4yXT4+Ml18MCl7YT0oY1soY1tlPj4yXXwwKSsyND4+Ml18MCkrMTZ8MDtjW2E+PjJdPShjW2E+PjJdfDApKy0xfWlmKGNbKGNbZT4+Ml18MCkrNDA+PjJdfDApe2NbYj4+Ml09T2coUGYoY1soY1tlPj4yXXwwKSsyND4+Ml18MCl8MCl8MDt3aGlsZSgxKXtpZigoY1tjW2I+PjJdPj4yXXwwKT09KGNbZT4+Ml18MCkpYnJlYWs7Y1tiPj4yXT0oY1tjW2I+PjJdPj4yXXwwKSs0NH1jW2NbYj4+Ml0+PjJdPWNbKGNbZT4+Ml18MCkrNDQ+PjJdfVBnKGNbKGNbZT4+Ml18MCkrND4+Ml18MCwwLDApfDA7aWYoKGNbKGNbZT4+Ml18MCkrMjg+PjJdfDApPT0xMDEpYT0wO2Vsc2UgYT1jWyhjW2U+PjJdfDApKzI4Pj4yXXwwO2NbZz4+Ml09YTtpZihjW2NbZT4+Ml0+PjJdfDApe2xnKGNbY1tlPj4yXT4+Ml18MCxjW2c+PjJdfDApO1FnKGNbY1tlPj4yXT4+Ml18MCl9aWYoY1tjW2U+PjJdPj4yXXwwKUtkKGNbZT4+Ml18MCk7UWcoY1tmPj4yXXwwKTtjW2Q+PjJdPWNbZz4+Ml07Zz1jW2Q+PjJdfDA7aT1oO3JldHVybiBnfDB9ZnVuY3Rpb24gWGQoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MCxnPTAsaD0wO2g9aTtpPWkrMzJ8MDtiPWgrMTZ8MDtkPWgrMTJ8MDtmPWgrOHwwO2c9aCs0fDA7ZT1oO2NbZD4+Ml09YTtpZighKGNbZD4+Ml18MCkpY1tmPj4yXT0wO2Vsc2V7Y1tnPj4yXT1jW2Q+PjJdO2NbZT4+Ml09Y1tjW2c+PjJdPj4yXTtpZihSZyhjW2c+PjJdfDApfDApe2NbYj4+Ml09TGYoNzUyMjMpfDA7Zz1jW2I+PjJdfDA7aT1oO3JldHVybiBnfDB9YT0oY1tnPj4yXXwwKSsxMjh8MDtkPWNbYSs0Pj4yXXwwO2lmKChkfDApPjB8KGR8MCk9PTAmKGNbYT4+Ml18MCk+Pj4wPjApU2coY1tlPj4yXXwwLGNbZz4+Ml18MCk7Y1tmPj4yXT1UZyhjW2c+PjJdfDApfDA7Y1tmPj4yXT1VZyhjW2U+PjJdfDAsY1tmPj4yXXwwKXwwO1FnKGNbZT4+Ml18MCl9Y1tiPj4yXT1jW2Y+PjJdO2c9Y1tiPj4yXXwwO2k9aDtyZXR1cm4gZ3wwfWZ1bmN0aW9uIFlkKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTAsZz0wO2c9aTtpPWkrMTZ8MDtiPWcrMTJ8MDtlPWcrOHwwO2Y9Zys0fDA7ZD1nO2NbYj4+Ml09YTtpZighKGNbYj4+Ml18MCkpe2NbZT4+Ml09MDtmPWNbZT4+Ml18MDtpPWc7cmV0dXJuIGZ8MH1jW2Y+PjJdPWNbYj4+Ml07Y1tkPj4yXT1jW2NbZj4+Ml0+PjJdO2E9KGNbZj4+Ml18MCkrMTI4fDA7Yj1jW2ErND4+Ml18MDtpZigoYnwwKT4wfChifDApPT0wJihjW2E+PjJdfDApPj4+MD4wKVNnKGNbZD4+Ml18MCxjW2Y+PjJdfDApO2NbZT4+Ml09VmcoY1tmPj4yXXwwKXwwO1dnKGNbZj4+Ml18MCk7Y1tlPj4yXT1VZyhjW2Q+PjJdfDAsY1tlPj4yXXwwKXwwO2Y9Y1tlPj4yXXwwO2k9ZztyZXR1cm4gZnwwfWZ1bmN0aW9uIFpkKGEpe2E9YXwwO3ZhciBkPTAsZj0wLGc9MCxoPTAsaj0wO2g9aTtpPWkrMTZ8MDtqPWgrMTJ8MDtkPWgrOHwwO2c9aCs0fDA7Zj1oO2Nbaj4+Ml09YTtjW2c+PjJdPTA7Y1tmPj4yXT1jW2o+PjJdO2NbZD4+Ml09MDt3aGlsZSgxKXtpZigoY1tkPj4yXXwwKT49KGJbKGNbZj4+Ml18MCkrMTY+PjFdfDApKWJyZWFrO1hnKChjWyhjW2Y+PjJdfDApKzExNj4+Ml18MCkrKChjW2Q+PjJdfDApKjQwfDApfDApO2JbKGNbKGNbZj4+Ml18MCkrMTE2Pj4yXXwwKSsoKGNbZD4+Ml18MCkqNDB8MCkrOD4+MV09MTtjW2Q+PjJdPShjW2Q+PjJdfDApKzF9aWYoISgoZVsoY1tmPj4yXXwwKSsxNDQ+PjFdfDApPj4+OSYxKSl7aj1jW2c+PjJdfDA7aT1oO3JldHVybiBqfDB9aWYoIShjWyhjW2Y+PjJdfDApKzE5Nj4+Ml18MCkpe2o9Y1tnPj4yXXwwO2k9aDtyZXR1cm4ganwwfWo9KGNbZj4+Ml18MCkrMTQ0fDA7YltqPj4xXT1iW2o+PjFdJi0yfDE7aj1jW2c+PjJdfDA7aT1oO3JldHVybiBqfDB9ZnVuY3Rpb24gX2QoYSl7YT1hfDA7dmFyIGQ9MCxmPTAsZz0wLGg9MDtoPWk7aT1pKzE2fDA7Zz1oKzh8MDtkPWgrNHwwO2Y9aDtjW2Q+PjJdPWE7Y1tmPj4yXT1jW2Q+PjJdO2lmKCEoKGVbKGNbZj4+Ml18MCkrOD4+MV18MCkmMTgpKXtjW2c+PjJdPSRkKGNbZD4+Ml18MCl8MDtnPWNbZz4+Ml18MDtpPWg7cmV0dXJuIGd8MH1pZigoZVsoY1tmPj4yXXwwKSs4Pj4xXXwwKSYxNjM4NClkPVlnKGNbZj4+Ml18MCl8MDtlbHNlIGQ9MDtpZihkKXtjW2c+PjJdPTA7Zz1jW2c+PjJdfDA7aT1oO3JldHVybiBnfDB9YT0oY1tmPj4yXXwwKSs4fDA7YlthPj4xXT1lW2E+PjFdfDB8MTY7aWYoY1soY1tmPj4yXXwwKSsxMj4+Ml18MClkPWNbKGNbZj4+Ml18MCkrMTY+PjJdfDA7ZWxzZSBkPTA7Y1tnPj4yXT1kO2c9Y1tnPj4yXXwwO2k9aDtyZXR1cm4gZ3wwfWZ1bmN0aW9uICRkKGEpe2E9YXwwO3ZhciBiPTAsZD0wO2I9aTtpPWkrMTZ8MDtkPWI7Y1tkPj4yXT1hO2E9WmcoY1tkPj4yXXwwLDEpfDA7aT1iO3JldHVybiBhfDB9ZnVuY3Rpb24gYWUoYSl7YT1hfDA7dmFyIGI9MCxkPTA7Yj1pO2k9aSsxNnwwO2Q9YjtjW2Q+PjJdPWE7YT1fZyhjW2Q+PjJdfDAsMSl8MDtpPWI7cmV0dXJuIGF8MH1mdW5jdGlvbiBiZShhKXthPWF8MDt2YXIgYj0wLjAsZD0wLGU9MDtkPWk7aT1pKzE2fDA7ZT1kO2NbZT4+Ml09YTtiPSskZyhjW2U+PjJdfDApO2k9ZDtyZXR1cm4gK2J9ZnVuY3Rpb24gY2UoYSl7YT1hfDA7dmFyIGI9MCxkPTA7Yj1pO2k9aSsxNnwwO2Q9YjtjW2Q+PjJdPWE7YT1haChjW2Q+PjJdfDApfDA7aT1iO3JldHVybiBhfDB9ZnVuY3Rpb24gZGUoYSl7YT1hfDA7dmFyIGI9MCxkPTA7Yj1pO2k9aSsxNnwwO2Q9YjtjW2Q+PjJdPWE7YT1haChjW2Q+PjJdfDApfDA7aT1iO3JldHVybiBhfDB9ZnVuY3Rpb24gZWUoYSl7YT1hfDA7dmFyIGI9MCxmPTA7Zj1pO2k9aSsxNnwwO2I9ZjtjW2I+PjJdPWE7aT1mO3JldHVybiBkWzE4MTM4KygoZVsoY1tiPj4yXXwwKSs4Pj4xXXwwKSYzMSk+PjBdfDB8MH1mdW5jdGlvbiBmZShhLGIsZCxlKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MDtmPWk7aT1pKzE2fDA7az1mKzEyfDA7aj1mKzh8MDtoPWYrNHwwO2c9ZjtjW2s+PjJdPWE7Y1tqPj4yXT1iO2NbaD4+Ml09ZDtjW2c+PjJdPWU7ZGgoY1trPj4yXXwwLGNbaj4+Ml18MCxjW2g+PjJdfDAsMCxjW2c+PjJdfDApO2k9ZjtyZXR1cm59ZnVuY3Rpb24gZ2UoYSxiLGQsZSxmKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MDtsPWk7aT1pKzMyfDA7Zz1sKzE2fDA7aD1sKzEyfDA7aj1sO2s9bCs4fDA7Y1tnPj4yXT1hO2NbaD4+Ml09YjtiPWo7Y1tiPj4yXT1kO2NbYis0Pj4yXT1lO2Nbaz4+Ml09ZjtiPWo7Zj1jW2IrND4+Ml18MDtpZihmPj4+MD4wfChmfDApPT0wJihjW2I+PjJdfDApPj4+MD4yMTQ3NDgzNjQ3KXtlaChjW2g+PjJdfDAsY1trPj4yXXwwLGNbZz4+Ml18MCl8MDtpPWw7cmV0dXJufWVsc2V7ZGgoY1tnPj4yXXwwLGNbaD4+Ml18MCxjW2o+PjJdfDAsMCxjW2s+PjJdfDApO2k9bDtyZXR1cm59fWZ1bmN0aW9uIGhlKGEsYil7YT1hfDA7Yj0rYjt2YXIgZD0wLGU9MCxmPTA7ZD1pO2k9aSsxNnwwO2Y9ZCs4fDA7ZT1kO2NbZj4+Ml09YTtoW2U+PjNdPWI7ZmgoY1tjW2Y+PjJdPj4yXXwwLCtoW2U+PjNdKTtpPWQ7cmV0dXJufWZ1bmN0aW9uIGllKGIsZCxlKXtiPWJ8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wO2Y9aTtpPWkrMTZ8MDtqPWYrOHwwO2g9Zis0fDA7Zz1mO2Nbaj4+Ml09YjtjW2g+PjJdPWQ7Y1tnPj4yXT1lO2NbKGNbaj4+Ml18MCkrMjA+PjJdPTE7YVsoY1tqPj4yXXwwKSsyNT4+MF09MTtnaChjW2Nbaj4+Ml0+PjJdfDAsY1toPj4yXXwwLGNbZz4+Ml18MCwxLC0xKXwwO2k9ZjtyZXR1cm59ZnVuY3Rpb24gamUoYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTA7ZD1pO2k9aSsxNnwwO2U9ZCs0fDA7Zj1kO2NbZT4+Ml09YTtjW2Y+PjJdPWI7YT1jW2Y+PjJdfDA7aGgoY1tjW2U+PjJdPj4yXXwwLGEsKChhfDApPDApPDwzMT4+MzEpO2k9ZDtyZXR1cm59ZnVuY3Rpb24ga2UoYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MDtlPWk7aT1pKzE2fDA7Zj1lKzh8MDtnPWU7Y1tmPj4yXT1hO2E9ZztjW2E+PjJdPWI7Y1thKzQ+PjJdPWQ7YT1nO2hoKGNbY1tmPj4yXT4+Ml18MCxjW2E+PjJdfDAsY1thKzQ+PjJdfDApO2k9ZTtyZXR1cm59ZnVuY3Rpb24gbGUoYSl7YT1hfDA7dmFyIGI9MCxkPTA7Yj1pO2k9aSsxNnwwO2Q9YjtjW2Q+PjJdPWE7aWgoY1tjW2Q+PjJdPj4yXXwwKTtpPWI7cmV0dXJufWZ1bmN0aW9uIG1lKGEsYixkLGUpe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wO2Y9aTtpPWkrMTZ8MDtrPWYrMTJ8MDtqPWYrOHwwO2g9Zis0fDA7Zz1mO2Nbaz4+Ml09YTtjW2o+PjJdPWI7Y1toPj4yXT1kO2NbZz4+Ml09ZTtkaChjW2s+PjJdfDAsY1tqPj4yXXwwLGNbaD4+Ml18MCwxLGNbZz4+Ml18MCk7aT1mO3JldHVybn1mdW5jdGlvbiBuZShiLGUsZixnLGgsail7Yj1ifDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7dmFyIGs9MCxsPTAsbT0wLG49MCxvPTAscD0wO3A9aTtpPWkrMzJ8MDtrPXArMTZ8MDtsPXArMTJ8MDttPXA7bj1wKzh8MDtvPXArMjB8MDtjW2s+PjJdPWI7Y1tsPj4yXT1lO2U9bTtjW2U+PjJdPWY7Y1tlKzQ+PjJdPWc7Y1tuPj4yXT1oO2Fbbz4+MF09ajtpZigoZFtvPj4wXXwwKT09NClhW28+PjBdPShhWzk2OF18MCk9PTA/MzoyO2U9bTtoPWNbZSs0Pj4yXXwwO2lmKGg+Pj4wPjB8KGh8MCk9PTAmKGNbZT4+Ml18MCk+Pj4wPjIxNDc0ODM2NDcpe2VoKGNbbD4+Ml18MCxjW24+PjJdfDAsY1trPj4yXXwwKXwwO2k9cDtyZXR1cm59ZWxzZXtkaChjW2s+PjJdfDAsY1tsPj4yXXwwLGNbbT4+Ml18MCxhW28+PjBdfDAsY1tuPj4yXXwwKTtpPXA7cmV0dXJufX1mdW5jdGlvbiBvZShhLGIpe2E9YXwwO2I9YnwwO3ZhciBkPTAsZT0wLGY9MDtkPWk7aT1pKzE2fDA7Zj1kKzR8MDtlPWQ7Y1tmPj4yXT1hO2NbZT4+Ml09YjtqaChjW2NbZj4+Ml0+PjJdfDAsY1tlPj4yXXwwKXwwO2k9ZDtyZXR1cm59ZnVuY3Rpb24gcGUoYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MDtoPWk7aT1pKzMyfDA7ZT1oKzE2fDA7Zj1oKzEyfDA7Zz1oO2s9aCs4fDA7Y1tmPj4yXT1hO2o9ZztjW2o+PjJdPWI7Y1tqKzQ+PjJdPWQ7Y1trPj4yXT1jW2NbZj4+Ml0+PjJdO2Q9ZztqPWNbZCs0Pj4yXXwwO2E9Y1soY1soY1trPj4yXXwwKSszMj4+Ml18MCkrOTY+PjJdfDA7Yj0oKGF8MCk8MCk8PDMxPj4zMTtpZihqPj4+MD5iPj4+MHwoKGp8MCk9PShifDApPyhjW2Q+PjJdfDApPj4+MD5hPj4+MDowKSl7Y1tlPj4yXT0xODtrPWNbZT4+Ml18MDtpPWg7cmV0dXJuIGt8MH1lbHNle2toKGNbY1tmPj4yXT4+Ml18MCxjW2c+PjJdfDApO2NbZT4+Ml09MDtrPWNbZT4+Ml18MDtpPWg7cmV0dXJuIGt8MH1yZXR1cm4gMH1mdW5jdGlvbiBxZShiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBmPTAsZz0wLGg9MDtoPWk7aT1pKzE2fDA7Zj1oKzR8MDtnPWg7Y1tmPj4yXT1iO2NbZz4+Ml09ZDtjWyhjW2Y+PjJdfDApKzIwPj4yXT1jW2c+PjJdO2FbKGNbZj4+Ml18MCkrMjU+PjBdPTE7aWYoISgoZVsoY1tjW2Y+PjJdPj4yXXwwKSs4Pj4xXXwwKSYxKSl7aT1oO3JldHVybn1iPWNbY1tmPj4yXT4+Ml18MDtnaChiLGxoKGNbZz4+Ml18MCl8MCwtMSwxLDApfDA7aT1oO3JldHVybn1mdW5jdGlvbiByZShiKXtiPWJ8MDt2YXIgZD0wLGU9MDtkPWk7aT1pKzE2fDA7ZT1kO2NbZT4+Ml09YjtjWyhjW2U+PjJdfDApKzIwPj4yXT0xODthWyhjW2U+PjJdfDApKzI1Pj4wXT0xO2doKGNbY1tlPj4yXT4+Ml18MCwxODE3MCwtMSwxLDApfDA7aT1kO3JldHVybn1mdW5jdGlvbiBzZShiKXtiPWJ8MDt2YXIgZD0wLGU9MDtkPWk7aT1pKzE2fDA7ZT1kO2NbZT4+Ml09YjtpaChjW2NbZT4+Ml0+PjJdfDApO2NbKGNbZT4+Ml18MCkrMjA+PjJdPTc7YVsoY1tlPj4yXXwwKSsyNT4+MF09MTttaChjWyhjW2NbZT4+Ml0+PjJdfDApKzMyPj4yXXwwKTtpPWQ7cmV0dXJufWZ1bmN0aW9uIHRlKGQpe2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTA7bz1pO2k9aSs0OHwwO2U9byszMnwwO2Y9bysyOHwwO2o9bysyNHwwO2s9bysyMHwwO209bysxNnwwO2c9bysxMnwwO2g9bys4fDA7bD1vKzR8MDtuPW87Y1tmPj4yXT1kO2Nbaj4+Ml09MDtjW2s+PjJdPTA7Y1ttPj4yXT1jW2Y+PjJdO2NbZz4+Ml09MDtpZihuaChjW20+PjJdfDApfDApe2NbZT4+Ml09TGYoNzU3NzUpfDA7bj1jW2U+PjJdfDA7aT1vO3JldHVybiBufDB9Y1toPj4yXT1jW2NbbT4+Ml0+PjJdO2Q9KGNbbT4+Ml18MCkrMTQ0fDA7YltkPj4xXT1iW2Q+PjFdJi0zO3doaWxlKDEpe2Q9b2goY1ttPj4yXXwwKXwwO2Nbaj4+Ml09ZDtpZigoZHwwKSE9MTcpYnJlYWs7ZD1jW2c+PjJdfDA7Y1tnPj4yXT1kKzE7aWYoKGR8MCk+PTUwKWJyZWFrO2NbbD4+Ml09Y1soY1ttPj4yXXwwKSszNj4+Ml07ZD1waChjW20+PjJdfDApfDA7Y1tqPj4yXT1kO2Nbaz4+Ml09ZDtpZihjW2o+PjJdfDApYnJlYWs7WWQoY1tmPj4yXXwwKXwwO2lmKChjW2w+PjJdfDApPDApY29udGludWU7ZD0oY1ttPj4yXXwwKSsxNDR8MDtiW2Q+PjFdPWJbZD4+MV0mLTN8Mn1kbyBpZihjW2s+PjJdfDApe2Nbbj4+Ml09JGQoY1soY1toPj4yXXwwKSsyNDQ+PjJdfDApfDA7VGYoY1toPj4yXXwwLGNbKGNbbT4+Ml18MCkrMTA4Pj4yXXwwKTtpZihhWyhjW2g+PjJdfDApKzY5Pj4wXXwwKXtjWyhjW20+PjJdfDApKzEwOD4+Ml09MDtjW2o+PjJdPTc7Y1soY1ttPj4yXXwwKSs0MD4+Ml09NzticmVha31lbHNle249cWgoY1toPj4yXXwwLGNbbj4+Ml18MCl8MDtjWyhjW20+PjJdfDApKzEwOD4+Ml09bjtjWyhjW20+PjJdfDApKzQwPj4yXT1jW2s+PjJdO2JyZWFrfX13aGlsZSgwKTtjW2o+PjJdPVVnKGNbaD4+Ml18MCxjW2o+PjJdfDApfDA7Y1tlPj4yXT1jW2o+PjJdO249Y1tlPj4yXXwwO2k9bztyZXR1cm4gbnwwfWZ1bmN0aW9uIHVlKGEpe2E9YXwwO3ZhciBiPTAsZD0wO2Q9aTtpPWkrMTZ8MDtiPWQ7Y1tiPj4yXT1hO2k9ZDtyZXR1cm4gY1soY1soY1tiPj4yXXwwKSs0Pj4yXXwwKSs0Pj4yXXwwfWZ1bmN0aW9uIHZlKGEpe2E9YXwwO3ZhciBiPTAsZD0wO2Q9aTtpPWkrMTZ8MDtiPWQ7Y1tiPj4yXT1hO2k9ZDtyZXR1cm4gY1soY1tjW2I+PjJdPj4yXXwwKSszMj4+Ml18MH1mdW5jdGlvbiB3ZShhLGIpe2E9YXwwO2I9YnwwO3ZhciBkPTAsZj0wLGc9MCxoPTA7Zz1pO2k9aSsxNnwwO2Q9Zys4fDA7aD1nKzR8MDtmPWc7Y1toPj4yXT1hO2NbZj4+Ml09YjtiPWNbaD4+Ml18MDtpZighKChlWyhjWyhjW2g+PjJdfDApKzg+PjJdfDApKzg+PjFdfDApJjgxOTIpKXtjW2Q+PjJdPXJoKGIsY1tmPj4yXXwwKXwwO2g9Y1tkPj4yXXwwO2k9ZztyZXR1cm4gaHwwfWVsc2V7Y1tkPj4yXT1jWyhjW2IrOD4+Ml18MCkrMTY+PjJdO2g9Y1tkPj4yXXwwO2k9ZztyZXR1cm4gaHwwfXJldHVybiAwfWZ1bmN0aW9uIHhlKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGY9MDtkPWk7aT1pKzE2fDA7Zj1kKzR8MDtiPWQ7Y1tmPj4yXT1hO2NbYj4+Ml09Y1tmPj4yXTtpZighKGNbYj4+Ml18MCkpe2Y9MDtpPWQ7cmV0dXJuIGZ8MH1mPWVbKGNbYj4+Ml18MCkrMTQwPj4xXXwwO2k9ZDtyZXR1cm4gZnwwfWZ1bmN0aW9uIHllKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGY9MCxnPTA7Zj1pO2k9aSsxNnwwO2I9Zis4fDA7Zz1mKzR8MDtkPWY7Y1tnPj4yXT1hO2NbZD4+Ml09Y1tnPj4yXTtpZigoY1tkPj4yXXwwKSE9MD8oY1soY1tkPj4yXXwwKSsxMDQ+PjJdfDApIT0wOjApe2NbYj4+Ml09ZVsoY1tkPj4yXXwwKSsxNDA+PjFdO2c9Y1tiPj4yXXwwO2k9ZjtyZXR1cm4gZ3wwfWNbYj4+Ml09MDtnPWNbYj4+Ml18MDtpPWY7cmV0dXJuIGd8MH1mdW5jdGlvbiB6ZShhLGIpe2E9YXwwO2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTA7ZT1pO2k9aSsxNnwwO2Y9ZSs4fDA7Zz1lKzR8MDtkPWU7Y1tmPj4yXT1hO2NbZz4+Ml09YjtjW2Q+PjJdPV9kKHRoKGNbZj4+Ml18MCxjW2c+PjJdfDApfDApfDA7dWgoY1tmPj4yXXwwKTtpPWU7cmV0dXJuIGNbZD4+Ml18MH1mdW5jdGlvbiBBZShhLGIpe2E9YXwwO2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTA7ZT1pO2k9aSsxNnwwO2Y9ZSs4fDA7Zz1lKzR8MDtkPWU7Y1tmPj4yXT1hO2NbZz4+Ml09YjtjW2Q+PjJdPWFlKHRoKGNbZj4+Ml18MCxjW2c+PjJdfDApfDApfDA7dWgoY1tmPj4yXXwwKTtpPWU7cmV0dXJuIGNbZD4+Ml18MH1mdW5jdGlvbiBCZShhLGIpe2E9YXwwO2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTA7ZT1pO2k9aSsxNnwwO2Y9ZSsxMnwwO2c9ZSs4fDA7ZD1lO2NbZj4+Ml09YTtjW2c+PjJdPWI7aFtkPj4zXT0rYmUodGgoY1tmPj4yXXwwLGNbZz4+Ml18MCl8MCk7dWgoY1tmPj4yXXwwKTtpPWU7cmV0dXJuICsoK2hbZD4+M10pfWZ1bmN0aW9uIENlKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MDtlPWk7aT1pKzE2fDA7Zj1lKzh8MDtnPWUrNHwwO2Q9ZTtjW2Y+PjJdPWE7Y1tnPj4yXT1iO2NbZD4+Ml09Y2UodGgoY1tmPj4yXXwwLGNbZz4+Ml18MCl8MCl8MDt1aChjW2Y+PjJdfDApO2k9ZTtyZXR1cm4gY1tkPj4yXXwwfWZ1bmN0aW9uIERlKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MDtkPWk7aT1pKzE2fDA7Zj1kKzEyfDA7Zz1kKzh8MDtlPWQ7Y1tmPj4yXT1hO2NbZz4+Ml09YjtiPWRlKHRoKGNbZj4+Ml18MCxjW2c+PjJdfDApfDApfDA7YT1lO2NbYT4+Ml09YjtjW2ErND4+Ml09Qzt1aChjW2Y+PjJdfDApO2E9ZTtDPWNbYSs0Pj4yXXwwO2k9ZDtyZXR1cm4gY1thPj4yXXwwfWZ1bmN0aW9uIEVlKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MDtlPWk7aT1pKzE2fDA7Zj1lKzh8MDtnPWUrNHwwO2Q9ZTtjW2Y+PjJdPWE7Y1tnPj4yXT1iO2NbZD4+Ml09JGQodGgoY1tmPj4yXXwwLGNbZz4+Ml18MCl8MCl8MDt1aChjW2Y+PjJdfDApO2k9ZTtyZXR1cm4gY1tkPj4yXXwwfWZ1bmN0aW9uIEZlKGEsZCl7YT1hfDA7ZD1kfDA7dmFyIGY9MCxnPTAsaD0wLGo9MDtoPWk7aT1pKzE2fDA7Zj1oKzh8MDtqPWgrNHwwO2c9aDtjW2Y+PjJdPWE7Y1tqPj4yXT1kO2NbZz4+Ml09dGgoY1tmPj4yXXwwLGNbaj4+Ml18MCl8MDtpZighKChlWyhjW2c+PjJdfDApKzg+PjFdfDApJjIwNDgpKXtqPWNbZj4+Ml18MDt1aChqKTtqPWNbZz4+Ml18MDtpPWg7cmV0dXJuIGp8MH1qPShjW2c+PjJdfDApKzh8MDtiW2o+PjFdPShlW2o+PjFdfDApJi0yMDQ5O2o9KGNbZz4+Ml18MCkrOHwwO2Jbaj4+MV09ZVtqPj4xXXwwfDQwOTY7aj1jW2Y+PjJdfDA7dWgoaik7aj1jW2c+PjJdfDA7aT1oO3JldHVybiBqfDB9ZnVuY3Rpb24gR2UoYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wO2U9aTtpPWkrMTZ8MDtmPWUrOHwwO2c9ZSs0fDA7ZD1lO2NbZj4+Ml09YTtjW2c+PjJdPWI7Y1tkPj4yXT1lZSh0aChjW2Y+PjJdfDAsY1tnPj4yXXwwKXwwKXwwO3VoKGNbZj4+Ml18MCk7aT1lO3JldHVybiBjW2Q+PjJdfDB9ZnVuY3Rpb24gSGUoYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTA7ZD1pO2k9aSsxNnwwO2Y9ZCs0fDA7ZT1kO2NbZj4+Ml09YTtjW2U+PjJdPWI7YT12aChjW2Y+PjJdfDAsY1tlPj4yXXwwLDE2OSwwKXwwO2k9ZDtyZXR1cm4gYXwwfWZ1bmN0aW9uIEllKGEsYixkLGUsZil7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wO2c9aTtpPWkrMzJ8MDttPWcrMTZ8MDtsPWcrMTJ8MDtrPWcrOHwwO2o9Zys0fDA7aD1nO2NbbT4+Ml09YTtjW2w+PjJdPWI7Y1trPj4yXT1kO2Nbaj4+Ml09ZTtjW2g+PjJdPWY7ZD13aChjW20+PjJdfDAsY1tsPj4yXXwwLGNbaz4+Ml18MCxjW2o+PjJdfDAsY1toPj4yXXwwLDApfDA7aT1nO3JldHVybiBkfDB9ZnVuY3Rpb24gSmUoYSxiLGQpe2E9YXwwO2I9YnwwO2Q9K2Q7dmFyIGU9MCxmPTAsZz0wLGo9MCxrPTAsbD0wO2s9aTtpPWkrMzJ8MDtsPWsrMjB8MDtlPWsrMTZ8MDtmPWs7aj1rKzEyfDA7Zz1rKzh8MDtjW2w+PjJdPWE7Y1tlPj4yXT1iO2hbZj4+M109ZDtjW2c+PjJdPWNbbD4+Ml07Y1tqPj4yXT14aChjW2c+PjJdfDAsY1tlPj4yXXwwKXwwO2lmKGNbaj4+Ml18MCl7bD1jW2o+PjJdfDA7aT1rO3JldHVybiBsfDB9ZmgoKGNbKGNbZz4+Ml18MCkrMTE2Pj4yXXwwKSsoKChjW2U+PjJdfDApLTF8MCkqNDB8MCl8MCwraFtmPj4zXSk7bD1jW2o+PjJdfDA7aT1rO3JldHVybiBsfDB9ZnVuY3Rpb24gS2UoYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTA7ZT1pO2k9aSsxNnwwO2c9ZSs4fDA7Zj1lKzR8MDtoPWU7Y1tnPj4yXT1hO2NbZj4+Ml09YjtjW2g+PjJdPWQ7YT1jW2g+PjJdfDA7YT1MZShjW2c+PjJdfDAsY1tmPj4yXXwwLGEsKChhfDApPDApPDwzMT4+MzEpfDA7aT1lO3JldHVybiBhfDB9ZnVuY3Rpb24gTGUoYSxiLGQsZSl7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wO2s9aTtpPWkrMzJ8MDtsPWsrMjB8MDtmPWsrMTZ8MDtnPWs7aj1rKzEyfDA7aD1rKzh8MDtjW2w+PjJdPWE7Y1tmPj4yXT1iO2E9ZztjW2E+PjJdPWQ7Y1thKzQ+PjJdPWU7Y1toPj4yXT1jW2w+PjJdO2Nbaj4+Ml09eGgoY1toPj4yXXwwLGNbZj4+Ml18MCl8MDtpZihjW2o+PjJdfDApe2w9Y1tqPj4yXXwwO2k9aztyZXR1cm4gbHwwfWw9ZztoaCgoY1soY1toPj4yXXwwKSsxMTY+PjJdfDApKygoKGNbZj4+Ml18MCktMXwwKSo0MHwwKXwwLGNbbD4+Ml18MCxjW2wrND4+Ml18MCk7bD1jW2o+PjJdfDA7aT1rO3JldHVybiBsfDB9ZnVuY3Rpb24gTWUoYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MDtlPWk7aT1pKzE2fDA7aD1lKzEyfDA7Zj1lKzh8MDtkPWUrNHwwO2c9ZTtjW2g+PjJdPWE7Y1tmPj4yXT1iO2NbZz4+Ml09Y1toPj4yXTtjW2Q+PjJdPXhoKGNbZz4+Ml18MCxjW2Y+PjJdfDApfDA7aT1lO3JldHVybiBjW2Q+PjJdfDB9ZnVuY3Rpb24gTmUoYSxiLGQsZSxmKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTA7Zz1pO2k9aSszMnwwO209ZysxNnwwO2w9ZysxMnwwO2s9Zys4fDA7aj1nKzR8MDtoPWc7Y1ttPj4yXT1hO2NbbD4+Ml09YjtjW2s+PjJdPWQ7Y1tqPj4yXT1lO2NbaD4+Ml09ZjtkPXdoKGNbbT4+Ml18MCxjW2w+PjJdfDAsY1trPj4yXXwwLGNbaj4+Ml18MCxjW2g+PjJdfDAsMSl8MDtpPWc7cmV0dXJuIGR8MH1mdW5jdGlvbiBPZShiLGQsZil7Yj1ifDA7ZD1kfDA7Zj1mfDA7dmFyIGc9MCxqPTAsaz0wLGw9MCxtPTA7bT1pO2k9aSsxNnwwO2c9bSsxMnwwO2o9bSs4fDA7az1tKzR8MDtsPW07Y1tnPj4yXT1iO2Nbaj4+Ml09ZDtjW2s+PjJdPWY7c3dpdGNoKGVlKGNbaz4+Ml18MCl8MCl7Y2FzZSAxOntrPWNbaz4+Ml18MDtjW2w+PjJdPUxlKGNbZz4+Ml18MCxjW2o+PjJdfDAsY1trPj4yXXwwLGNbays0Pj4yXXwwKXwwO2w9Y1tsPj4yXXwwO2k9bTtyZXR1cm4gbHwwfWNhc2UgMjp7Y1tsPj4yXT1KZShjW2c+PjJdfDAsY1tqPj4yXXwwLCtoW2Nbaz4+Ml0+PjNdKXwwO2w9Y1tsPj4yXXwwO2k9bTtyZXR1cm4gbHwwfWNhc2UgNDp7Yj1jW2c+PjJdfDA7Zz1jW2o+PjJdfDA7ZD1jW2s+PjJdfDA7aWYoKGVbKGNbaz4+Ml18MCkrOD4+MV18MCkmMTYzODQpe2NbbD4+Ml09UGUoYixnLGNbZD4+Ml18MCl8MDtsPWNbbD4+Ml18MDtpPW07cmV0dXJuIGx8MH1lbHNle2NbbD4+Ml09SWUoYixnLGNbZCsxNj4+Ml18MCxjWyhjW2s+PjJdfDApKzEyPj4yXXwwLC0xKXwwO2w9Y1tsPj4yXXwwO2k9bTtyZXR1cm4gbHwwfX1jYXNlIDM6e2NbbD4+Ml09d2goY1tnPj4yXXwwLGNbaj4+Ml18MCxjWyhjW2s+PjJdfDApKzE2Pj4yXXwwLGNbKGNbaz4+Ml18MCkrMTI+PjJdfDAsLTEsYVsoY1trPj4yXXwwKSsxMD4+MF18MCl8MDtsPWNbbD4+Ml18MDtpPW07cmV0dXJuIGx8MH1kZWZhdWx0OntjW2w+PjJdPU1lKGNbZz4+Ml18MCxjW2o+PjJdfDApfDA7bD1jW2w+PjJdfDA7aT1tO3JldHVybiBsfDB9fXJldHVybiAwfWZ1bmN0aW9uIFBlKGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTA7aj1pO2k9aSszMnwwO2s9aisxNnwwO2U9aisxMnwwO2Y9ais4fDA7aD1qKzR8MDtnPWo7Y1trPj4yXT1hO2NbZT4+Ml09YjtjW2Y+PjJdPWQ7Y1tnPj4yXT1jW2s+PjJdO2NbaD4+Ml09eGgoY1tnPj4yXXwwLGNbZT4+Ml18MCl8MDtpZihjW2g+PjJdfDApe2s9Y1toPj4yXXwwO2k9ajtyZXR1cm4ga3wwfWtoKChjWyhjW2c+PjJdfDApKzExNj4+Ml18MCkrKCgoY1tlPj4yXXwwKS0xfDApKjQwfDApfDAsY1tmPj4yXXwwKTtrPWNbaD4+Ml18MDtpPWo7cmV0dXJuIGt8MH1mdW5jdGlvbiBRZShhKXthPWF8MDt2YXIgZD0wLGU9MCxmPTA7ZT1pO2k9aSsxNnwwO2Y9ZSs0fDA7ZD1lO2NbZj4+Ml09YTtjW2Q+PjJdPWNbZj4+Ml07aWYoIShjW2Q+PjJdfDApKXtmPTA7aT1lO3JldHVybiBmfDB9Zj1iWyhjW2Q+PjJdfDApKzE2Pj4xXXwwO2k9ZTtyZXR1cm4gZnwwfWZ1bmN0aW9uIFJlKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wO2Q9aTtpPWkrMTZ8MDtmPWQrNHwwO2U9ZDtjW2Y+PjJdPWE7Y1tlPj4yXT1iO2E9Y1tmPj4yXXwwO2I9Y1tlPj4yXXwwO2I9eWgoYSxiLEpmKGNbZT4+Ml18MCl8MCl8MDtpPWQ7cmV0dXJuIGJ8MH1mdW5jdGlvbiBTZShhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTA7ZD1pO2k9aSsxNnwwO2U9ZCs0fDA7Yj1kO2NbZT4+Ml09YTtjW2I+PjJdPWNbZT4+Ml07aWYoIShjW2I+PjJdfDApKXtlPTA7aT1kO3JldHVybiBlfDB9ZT1jWyhjW2I+PjJdfDApKzE3Nj4+Ml18MDtpPWQ7cmV0dXJuIGV8MH1mdW5jdGlvbiBUZShhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wO2Y9aTtpPWkrMTZ8MDtiPWYrOHwwO2Q9Zis0fDA7ZT1mO2NbYj4+Ml09YTtjW2Q+PjJdPWVlKGNbYj4+Ml18MCl8MDtpZigoY1tkPj4yXXwwKSE9Myl7YT1jW2Q+PjJdfDA7aT1mO3JldHVybiBhfDB9Y1tlPj4yXT1jW2I+PjJdO0JoKGNbZT4+Ml18MCwwKTtjW2Q+PjJdPWVlKGNbYj4+Ml18MCl8MDthPWNbZD4+Ml18MDtpPWY7cmV0dXJuIGF8MH1mdW5jdGlvbiBVZShmLGcsaCxqLGssbCxtLG4pe2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO2s9a3wwO2w9bHwwO209bXwwO249bnwwO3ZhciBvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTAsRT0wLEY9MCxHPTAsSD0wLEk9MCxKPTAsSz0wLEw9MCxNPTAsTj0wLE89MCxQPTAsUT0wO1E9aTtpPWkrMTQ0fDA7TT1RKzQ4fDA7TD1RKzQwfDA7Tj1RKzMyfDA7RT1RKzI0fDA7RD1RKzE2fDA7Qz1RKzh8MDtGPVErMTMyfDA7bz1RKzEyOHwwO3A9USsxMjR8MDtHPVErMTIwfDA7cT1RO3I9USsxMTZ8MDtIPVErMTEyfDA7eD1RKzEwOHwwO3Q9USsxMDR8MDtLPVErMTAwfDA7Tz1RKzk2fDA7QT1RKzkyfDA7Sj1RKzg4fDA7ST1RKzg0fDA7UD1RKzgwfDA7ej1RKzc2fDA7eT1RKzcyfDA7dj1RKzY4fDA7dz1RKzY0fDA7Qj1RKzYwfDA7dT1RKzU2fDA7cz1RKzUyfDA7Y1tGPj4yXT1mO2Nbbz4+Ml09ZztjW3A+PjJdPWg7Y1tHPj4yXT1qO2g9cTtjW2g+PjJdPWs7Y1toKzQ+PjJdPWw7Y1tyPj4yXT1tO2NbSD4+Ml09bjtjW3g+PjJdPTA7Y1tLPj4yXT0wO2NbTz4+Ml09MDtjW0o+PjJdPTA7Y1tJPj4yXT0wO2NbY1tIPj4yXT4+Ml09MDtjW3I+PjJdPSgoY1tyPj4yXXwwKSE9MF4xXjEpJjE7Y1tJPj4yXT1zaChjW0Y+PjJdfDAsMzYsMCl8MDthOmRvIGlmKChjW0k+PjJdfDApIT0wPyhjW0o+PjJdPUNoKGNbRj4+Ml18MCw0ODAsMCl8MCwoY1tKPj4yXXwwKSE9MCk6MCl7d2hpbGUoMSl7VlIoY1tKPj4yXXwwLDAsNDgwKXwwO2NbY1tKPj4yXT4+Ml09Y1tGPj4yXTtUZihjW0Y+PjJdfDAsY1tPPj4yXXwwKTtjW08+PjJdPTA7T2YoY1tGPj4yXXwwKTtjW0E+PjJdPURoKGNbSj4+Ml18MCwwLGNbcD4+Ml18MCxjW28+PjJdfDApfDA7aWYoKGNbQT4+Ml18MCkhPTA/KGRbKGNbQT4+Ml18MCkrNDI+PjBdJjE2fDApIT0wOjApe2NbQT4+Ml09MDtoPWNbSj4+Ml18MDtjW0M+PjJdPWNbcD4+Ml07RWgoaCwxODE5MyxDKX1pZigoY1tBPj4yXXwwKSE9MD8oZFsoY1tBPj4yXXwwKSs0Mj4+MF0mMzJ8MCkhPTA6MCl7Y1tBPj4yXT0wO2g9Y1tKPj4yXXwwO2NbRD4+Ml09Y1twPj4yXTtFaChoLDE4MjIzLEQpfWlmKChjW0E+PjJdfDApIT0wPyhjWyhjW0E+PjJdfDApKzEyPj4yXXwwKSE9MDowKXtjW0E+PjJdPTA7aD1jW0o+PjJdfDA7Y1tFPj4yXT1jW3A+PjJdO0VoKGgsMTgyNTksRSl9aWYoIShjW0E+PjJdfDApKXtrPTEzO2JyZWFrfWNbKGNbST4+Ml18MCkrMzI+PjJdPWNbQT4+Ml07aD1GaChjW0Y+PjJdfDAsY1soY1tBPj4yXXwwKSs2ND4+Ml18MCl8MDtjWyhjW0k+PjJdfDApKzI4Pj4yXT1jWyhjWyhjW0Y+PjJdfDApKzE2Pj4yXXwwKSsoaDw8NCk+PjJdO2NbdD4+Ml09MDt3aGlsZSgxKXtpZigoY1t0Pj4yXXwwKT49KGJbKGNbQT4+Ml18MCkrMzQ+PjFdfDApKWJyZWFrO2lmKCEoaWcoY1soY1soY1tBPj4yXXwwKSs0Pj4yXXwwKSsoY1t0Pj4yXTw8NCk+PjJdfDAsY1tHPj4yXXwwKXwwKSlicmVhaztjW3Q+PjJdPShjW3Q+PjJdfDApKzF9aWYoKGNbdD4+Ml18MCk9PShiWyhjW0E+PjJdfDApKzM0Pj4xXXwwKSl7az0yMTticmVha31pZihjW3I+PjJdfDApe2NbUD4+Ml09MDtiOmRvIGlmKGNbKGNbRj4+Ml18MCkrMjQ+PjJdJjUyNDI4OCl7Y1t5Pj4yXT1jWyhjW0E+PjJdfDApKzE2Pj4yXTt3aGlsZSgxKXtpZighKGNbeT4+Ml18MCkpYnJlYWsgYjtjW3Y+PjJdPTA7d2hpbGUoMSl7aWYoKGNbdj4+Ml18MCk+PShjWyhjW3k+PjJdfDApKzIwPj4yXXwwKSlicmVhaztpZigoY1soY1t5Pj4yXXwwKSszNisoY1t2Pj4yXTw8Myk+PjJdfDApPT0oY1t0Pj4yXXwwKSljW1A+PjJdPTE4MzAxO2Nbdj4+Ml09KGNbdj4+Ml18MCkrMX1jW3k+PjJdPWNbKGNbeT4+Ml18MCkrND4+Ml19fXdoaWxlKDApO2Nbej4+Ml09Y1soY1tBPj4yXXwwKSs4Pj4yXTt3aGlsZSgxKXtpZighKGNbej4+Ml18MCkpYnJlYWs7Y1t3Pj4yXT0wO3doaWxlKDEpe2lmKChjW3c+PjJdfDApPj0oZVsoY1t6Pj4yXXwwKSs1MD4+MV18MCkpYnJlYWs7aWYoISgoYlsoY1soY1t6Pj4yXXwwKSs0Pj4yXXwwKSsoY1t3Pj4yXTw8MSk+PjFdfDApIT0oY1t0Pj4yXXwwKT8oYlsoY1soY1t6Pj4yXXwwKSs0Pj4yXXwwKSsoY1t3Pj4yXTw8MSk+PjFdfDApIT0tMjowKSljW1A+PjJdPTE4MzEzO2Nbdz4+Ml09KGNbdz4+Ml18MCkrMX1jW3o+PjJdPWNbKGNbej4+Ml18MCkrMjA+PjJdfWlmKGNbUD4+Ml18MCl7az00MjticmVha319aD1IaChjW0o+PjJdfDApfDA7Y1soY1tJPj4yXXwwKSsyMD4+Ml09aDtpZihjWyhjW0k+PjJdfDApKzIwPj4yXXwwKXtjW0I+PjJdPWNbKGNbST4+Ml18MCkrMjA+PjJdO2NbdT4+Ml09RmgoY1tGPj4yXXwwLGNbKGNbQT4+Ml18MCkrNjQ+PjJdfDApfDA7SWgoY1tCPj4yXXwwLDIsY1t1Pj4yXXwwLGNbcj4+Ml18MCxjW2NbKGNbQT4+Ml18MCkrNjQ+PjJdPj4yXXwwLGNbKGNbKGNbQT4+Ml18MCkrNjQ+PjJdfDApKzQ+PjJdfDApfDA7SmgoY1tCPj4yXXwwLDEpO2Nbcz4+Ml09S2goY1tCPj4yXXwwLDksMTgzNTUsMCl8MDtMaChjW0I+PjJdfDAsY1t1Pj4yXXwwKTtpZighKGRbKGNbRj4+Ml18MCkrNjk+PjBdfDApKXtjWyhjW3M+PjJdfDApKzQ+PjJdPWNbdT4+Ml07Y1soY1tzPj4yXXwwKSs4Pj4yXT1jWyhjW0E+PjJdfDApKzI4Pj4yXTtjWyhjW3M+PjJdfDApKzEyPj4yXT1jW3I+PjJdO01oKGNbQj4+Ml18MCwxLGNbY1tBPj4yXT4+Ml18MCwwKX1pZighKGRbKGNbRj4+Ml18MCkrNjk+PjBdfDApKXtpZihjW3I+PjJdfDApYVsoY1tzPj4yXXwwKSsyMD4+MF09MTA1O2NbKGNbcz4+Ml18MCkrMjArOD4+Ml09Y1soY1tBPj4yXXwwKSsyOD4+Ml07Y1soY1tzPj4yXXwwKSsyMCsxMj4+Ml09Y1t1Pj4yXTthWyhjW3M+PjJdfDApKzIwKzE+PjBdPS0xNDtjWyhjW3M+PjJdfDApKzIwKzE2Pj4yXT0oYlsoY1tBPj4yXXwwKSszND4+MV18MCkrMTtjWyhjW3M+PjJdfDApKzgwKzg+PjJdPWJbKGNbQT4+Ml18MCkrMzQ+PjFdO2JbKGNbSj4+Ml18MCkrNDAwPj4xXT0xO2NbKGNbSj4+Ml18MCkrNDQ+PjJdPTE7Y1soY1tKPj4yXXwwKSs0MD4+Ml09MTtOaChjW0I+PjJdfDAsY1tKPj4yXXwwKX19Y1tjW0k+PjJdPj4yXT1jW3I+PjJdO2NbKGNbST4+Ml18MCkrMTI+PjJdPWNbdD4+Ml07Y1soY1tJPj4yXXwwKSsyND4+Ml09Y1tGPj4yXTtpZihhWyhjW0Y+PjJdfDApKzY5Pj4wXXwwKWJyZWFrIGE7aD1xO0xlKGNbKGNbST4+Ml18MCkrMjA+PjJdfDAsMSxjW2g+PjJdfDAsY1toKzQ+PjJdfDApfDA7aD1xO2NbSz4+Ml09T2goY1tJPj4yXXwwLGNbaD4+Ml18MCxjW2grND4+Ml18MCxPKXwwO2g9KGNbeD4+Ml18MCkrMXwwO2NbeD4+Ml09aDtpZighKChofDApPDUwPyhjW0s+PjJdfDApPT0xNzowKSlicmVhayBhfWlmKChrfDApPT0xMyl7aWYoY1soY1tKPj4yXXwwKSs0Pj4yXXwwKXtUZihjW0Y+PjJdfDAsY1tPPj4yXXwwKTtjW08+PjJdPWNbKGNbSj4+Ml18MCkrND4+Ml07Y1soY1tKPj4yXXwwKSs0Pj4yXT0wfWNbSz4+Ml09MTticmVha31lbHNlIGlmKChrfDApPT0yMSl7VGYoY1tGPj4yXXwwLGNbTz4+Ml18MCk7UD1jW0Y+PjJdfDA7Y1tOPj4yXT1jW0c+PjJdO2NbTz4+Ml09R2goUCwxODI4MCxOKXwwO2NbSz4+Ml09MTticmVha31lbHNlIGlmKChrfDApPT00Mil7VGYoY1tGPj4yXXwwLGNbTz4+Ml18MCk7Tj1jW0Y+PjJdfDA7Y1tMPj4yXT1jW1A+PjJdO2NbTz4+Ml09R2goTiwxODMyMSxMKXwwO2NbSz4+Ml09MTticmVha319d2hpbGUoMCk7aWYoKGNbSz4+Ml18MCk9PTA/KGRbKGNbRj4+Ml18MCkrNjk+PjBdfDApPT0wOjApe2NbY1tIPj4yXT4+Ml09Y1tJPj4yXTtMPWNbRj4+Ml18MDtQPWNbSz4+Ml18MDtOPWNbTz4+Ml18MDtOPShOfDApIT0wO049Tj8xODM5MTowO0k9Y1tPPj4yXXwwO2NbTT4+Ml09STtqZyhMLFAsTixNKTtOPWNbRj4+Ml18MDtQPWNbTz4+Ml18MDtUZihOLFApO1A9Y1tKPj4yXXwwO1BoKFApO1A9Y1tGPj4yXXwwO089Y1tKPj4yXXwwO1RmKFAsTyk7Tz1jW0Y+PjJdfDA7UD1jW0s+PjJdfDA7UD1VZyhPLFApfDA7Y1tLPj4yXT1QO1A9Y1tLPj4yXXwwO2k9UTtyZXR1cm4gUHwwfWlmKChjW0k+PjJdfDApIT0wPyhjWyhjW0k+PjJdfDApKzIwPj4yXXwwKSE9MDowKVRnKGNbKGNbST4+Ml18MCkrMjA+PjJdfDApfDA7VGYoY1tGPj4yXXwwLGNbST4+Ml18MCk7TD1jW0Y+PjJdfDA7UD1jW0s+PjJdfDA7Tj1jW08+PjJdfDA7Tj0oTnwwKSE9MDtOPU4/MTgzOTE6MDtJPWNbTz4+Ml18MDtjW00+PjJdPUk7amcoTCxQLE4sTSk7Tj1jW0Y+PjJdfDA7UD1jW08+PjJdfDA7VGYoTixQKTtQPWNbSj4+Ml18MDtQaChQKTtQPWNbRj4+Ml18MDtPPWNbSj4+Ml18MDtUZihQLE8pO089Y1tGPj4yXXwwO1A9Y1tLPj4yXXwwO1A9VWcoTyxQKXwwO2NbSz4+Ml09UDtQPWNbSz4+Ml18MDtpPVE7cmV0dXJuIFB8MH1mdW5jdGlvbiBWZShhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wLGc9MDtmPWk7aT1pKzE2fDA7Zz1mKzEyfDA7ZD1mKzh8MDtlPWYrNHwwO2I9ZjtjW2c+PjJdPWE7Y1tkPj4yXT1jW2c+PjJdO2lmKGNbZD4+Ml18MCl7Y1tiPj4yXT1jWyhjW2Q+PjJdfDApKzI0Pj4yXTtjW2U+PjJdPVhkKGNbKGNbZD4+Ml18MCkrMjA+PjJdfDApfDA7VGYoY1tiPj4yXXwwLGNbZD4+Ml18MCk7Zz1jW2U+PjJdfDA7aT1mO3JldHVybiBnfDB9ZWxzZXtjW2U+PjJdPTA7Zz1jW2U+PjJdfDA7aT1mO3JldHVybiBnfDB9cmV0dXJuIDB9ZnVuY3Rpb24gV2UoYSxiLGQsZSl7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTA7Zj1pO2k9aSsxNnwwO2s9ZisxMnwwO2o9Zis4fDA7aD1mKzR8MDtnPWY7Y1trPj4yXT1hO2Nbaj4+Ml09YjtjW2g+PjJdPWQ7Y1tnPj4yXT1lO2I9UmgoY1trPj4yXXwwLGNbaj4+Ml18MCxjW2g+PjJdfDAsY1tnPj4yXXwwLDEzOCl8MDtpPWY7cmV0dXJuIGJ8MH1mdW5jdGlvbiBYZShhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTA7ZD1pO2k9aSsxNnwwO2U9ZCs0fDA7Yj1kO2NbZT4+Ml09YTtjW2I+PjJdPWNbZT4+Ml07aWYoIShjW2I+PjJdfDApKXtlPTA7aT1kO3JldHVybiBlfDB9aWYoIShjWyhjW2I+PjJdfDApKzIwPj4yXXwwKSl7ZT0wO2k9ZDtyZXR1cm4gZXwwfWU9Y1soY1tiPj4yXXwwKSs0Pj4yXXwwO2k9ZDtyZXR1cm4gZXwwfWZ1bmN0aW9uIFllKGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTA7bT1pO2k9aSs0OHwwO2s9bSs4fDA7ZT1tKzMyfDA7bj1tKzI4fDA7Zj1tO2o9bSsyNHwwO2g9bSsyMHwwO2c9bSsxNnwwO2w9bSsxMnwwO2Nbbj4+Ml09YTthPWY7Y1thPj4yXT1iO2NbYSs0Pj4yXT1kO2NbaD4+Ml09Y1tuPj4yXTtpZighKGNbaD4+Ml18MCkpe2NbZT4+Ml09TGYoODQ4MTQpfDA7bj1jW2U+PjJdfDA7aT1tO3JldHVybiBufDB9Y1tnPj4yXT1jWyhjW2g+PjJdfDApKzI0Pj4yXTtpZihjWyhjW2g+PjJdfDApKzIwPj4yXXwwKXtuPWY7Y1tqPj4yXT1PaChjW2g+PjJdfDAsY1tuPj4yXXwwLGNbbis0Pj4yXXwwLGwpfDA7aWYoY1tqPj4yXXwwKXtoPWNbZz4+Ml18MDthPWNbaj4+Ml18MDtuPShjW2w+PjJdfDApIT0wPzE4MzkxOjA7Y1trPj4yXT1jW2w+PjJdO2pnKGgsYSxuLGspO1RmKGNbZz4+Ml18MCxjW2w+PjJdfDApfX1lbHNlIGNbaj4+Ml09NDtjW2o+PjJdPVVnKGNbZz4+Ml18MCxjW2o+PjJdfDApfDA7Y1tlPj4yXT1jW2o+PjJdO249Y1tlPj4yXXwwO2k9bTtyZXR1cm4gbnwwfWZ1bmN0aW9uIFplKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wO2Q9aTtpPWkrMTZ8MDtmPWQrNHwwO2U9ZDtjW2Y+PjJdPWE7Y1tlPj4yXT1iO2I9KFRoKGNbZj4+Ml18MCxjW2U+PjJdfDAsMTgzOTQsOTEpfDApPT0wJjE7aT1kO3JldHVybiBifDB9ZnVuY3Rpb24gX2UoYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTA7ZT1pO2k9aSsxNnwwO2g9ZSs4fDA7Zz1lKzR8MDtmPWU7Y1toPj4yXT1hO2NbZz4+Ml09YjtjW2Y+PjJdPWQ7Yj0oVGgoY1toPj4yXXwwLGNbZz4+Ml18MCwxODM5OCxjW2Y+PjJdfDApfDApPT0wJjE7aT1lO3JldHVybiBifDB9ZnVuY3Rpb24gJGUoYixlLGYsZyxoKXtiPWJ8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDt2YXIgaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MDt6PWk7aT1pKzY0fDA7aj16KzU2fDA7az16KzUyfDA7bD16KzQ4fDA7bT16KzQ0fDA7bj16KzQwfDA7bz16KzM2fDA7dz16KzMyfDA7eD16KzI4fDA7dj16KzI0fDA7cD16KzIwfDA7cj16KzE2fDA7dD16KzEyfDA7cT16Kzh8MDtzPXorNHwwO3U9ejtjW2s+PjJdPWI7Y1tsPj4yXT1lO2NbbT4+Ml09ZjtjW24+PjJdPWc7Y1tvPj4yXT1oO2Nbdz4+Ml09MDtjW3Y+PjJdPTA7Y1twPj4yXT0wO2lmKCEoVWgoY1trPj4yXXwwKXwwKSl7Y1tqPj4yXT1MZigxMDk1OTcpfDA7eT1jW2o+PjJdfDA7aT16O3JldHVybiB5fDB9aWYoIShjW2w+PjJdfDApKWNbbD4+Ml09MTg0MDI7bGcoY1trPj4yXXwwLDApO2E6d2hpbGUoMSl7aWYoY1t3Pj4yXXwwKWJyZWFrO2lmKCEoYVtjW2w+PjJdPj4wXXwwKSlicmVhaztjW3E+PjJdPTA7Y1t2Pj4yXT0wO2Nbdz4+Ml09YWYoY1trPj4yXXwwLGNbbD4+Ml18MCwtMSx2LHgpfDA7aWYoY1t3Pj4yXXwwKWNvbnRpbnVlO2lmKCEoY1t2Pj4yXXwwKSl7Y1tsPj4yXT1jW3g+PjJdO2NvbnRpbnVlfWNbcj4+Ml09MDtjW3Q+PjJdPXhlKGNbdj4+Ml18MCl8MDtkb3tjW3c+PjJdPXRlKGNbdj4+Ml18MCl8MDtkbyBpZihjW20+PjJdfDApe2lmKDEwMCE9KGNbdz4+Ml18MCkpe2lmKDEwMSE9KGNbdz4+Ml18MCl8KGNbcj4+Ml18MCkhPTApYnJlYWs7aWYoIShjWyhjW2s+PjJdfDApKzI0Pj4yXSYyNTYpKWJyZWFrfWlmKCEoY1tyPj4yXXwwKSl7Y1twPj4yXT1zaChjW2s+PjJdfDAsKGNbdD4+Ml08PDE8PDIpKzF8MCwwKXwwO2lmKCEoY1twPj4yXXwwKSlicmVhayBhO2Nbcz4+Ml09MDt3aGlsZSgxKXtpZigoY1tzPj4yXXwwKT49KGNbdD4+Ml18MCkpYnJlYWs7ZT1IZShjW3Y+PjJdfDAsY1tzPj4yXXwwKXwwO2NbKGNbcD4+Ml18MCkrKGNbcz4+Ml08PDIpPj4yXT1lO2Nbcz4+Ml09KGNbcz4+Ml18MCkrMX1jW3I+PjJdPTF9YjpkbyBpZigoY1t3Pj4yXXwwKT09MTAwKXtjW3E+PjJdPShjW3A+PjJdfDApKyhjW3Q+PjJdPDwyKTtjW3M+PjJdPTA7d2hpbGUoMSl7aWYoKGNbcz4+Ml18MCk+PShjW3Q+PjJdfDApKWJyZWFrIGI7ZT1FZShjW3Y+PjJdfDAsY1tzPj4yXXwwKXwwO2NbKGNbcT4+Ml18MCkrKGNbcz4+Ml08PDIpPj4yXT1lO2lmKChjWyhjW3E+PjJdfDApKyhjW3M+PjJdPDwyKT4+Ml18MCk9PTA/KEdlKGNbdj4+Ml18MCxjW3M+PjJdfDApfDApIT01OjApe3k9Mjc7YnJlYWsgYX1jW3M+PjJdPShjW3M+PjJdfDApKzF9fXdoaWxlKDApO2lmKFdiW2NbbT4+Ml0mMjU1XShjW24+PjJdfDAsY1t0Pj4yXXwwLGNbcT4+Ml18MCxjW3A+PjJdfDApfDApe3k9MzA7YnJlYWsgYX19d2hpbGUoMCl9d2hpbGUoKGNbdz4+Ml18MCk9PTEwMCk7Y1t3Pj4yXT1UZyhjW3Y+PjJdfDApfDA7Y1t2Pj4yXT0wO2NbbD4+Ml09Y1t4Pj4yXTt3aGlsZSgxKXtpZighKGRbMTg0MDMrKGRbY1tsPj4yXT4+MF18MCk+PjBdJjEpKWJyZWFrO2NbbD4+Ml09KGNbbD4+Ml18MCkrMX1UZihjW2s+PjJdfDAsY1twPj4yXXwwKTtjW3A+PjJdPTB9aWYoKHl8MCk9PTI3KW1oKGNbaz4+Ml18MCk7ZWxzZSBpZigoeXwwKT09MzApe2Nbdz4+Ml09NDtUZyhjW3Y+PjJdfDApfDA7Y1t2Pj4yXT0wO2xnKGNbaz4+Ml18MCw0KX1pZihjW3Y+PjJdfDApVGcoY1t2Pj4yXXwwKXwwO1RmKGNbaz4+Ml18MCxjW3A+PjJdfDApO2Nbdz4+Ml09VWcoY1trPj4yXXwwLGNbdz4+Ml18MCl8MDtkbyBpZigoY1t3Pj4yXXwwKSE9MCYoY1tvPj4yXXwwKSE9MCl7Y1t1Pj4yXT0xKyhKZihiZihjW2s+PjJdfDApfDApfDApO3k9Y1t1Pj4yXXwwO3k9JGYoeSwoKHl8MCk8MCk8PDMxPj4zMSl8MDtjW2Nbbz4+Ml0+PjJdPXk7aWYoY1tjW28+PjJdPj4yXXwwKXtlPWNbY1tvPj4yXT4+Ml18MDt5PWJmKGNbaz4+Ml18MCl8MDtUUihlfDAseXwwLGNbdT4+Ml18MCl8MDticmVha31lbHNle2Nbdz4+Ml09NztsZyhjW2s+PjJdfDAsNyk7YnJlYWt9fWVsc2UgaWYoY1tvPj4yXXwwKWNbY1tvPj4yXT4+Ml09MDt3aGlsZSgwKTtjW2o+PjJdPWNbdz4+Ml07eT1jW2o+PjJdfDA7aT16O3JldHVybiB5fDB9ZnVuY3Rpb24gYWYoYSxiLGQsZSxmKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wO2g9aTtpPWkrMzJ8MDtuPWgrMjB8MDttPWgrMTZ8MDtsPWgrMTJ8MDtrPWgrOHwwO2o9aCs0fDA7Zz1oO2Nbbj4+Ml09YTtjW20+PjJdPWI7Y1tsPj4yXT1kO2Nbaz4+Ml09ZTtjW2o+PjJdPWY7Y1tnPj4yXT1WaChjW24+PjJdfDAsY1ttPj4yXXwwLGNbbD4+Ml18MCwxLDAsY1trPj4yXXwwLGNbaj4+Ml18MCl8MDtpPWg7cmV0dXJuIGNbZz4+Ml18MH1mdW5jdGlvbiBiZihiKXtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wO2c9aTtpPWkrMTZ8MDtkPWcrOHwwO2U9Zys0fDA7Zj1nO2NbZT4+Ml09YjtpZighKGNbZT4+Ml18MCkpe2NbZD4+Ml09bGgoNyl8MDtmPWNbZD4+Ml18MDtpPWc7cmV0dXJuIGZ8MH1pZighKFdoKGNbZT4+Ml18MCl8MCkpe2NbZD4+Ml09bGgoTGYoMTQwMDQ2KXwwKXwwO2Y9Y1tkPj4yXXwwO2k9ZztyZXR1cm4gZnwwfWlmKCEoYVsoY1tlPj4yXXwwKSs2OT4+MF18MCkpe2NbZj4+Ml09JGQoY1soY1tlPj4yXXwwKSsyNDQ+PjJdfDApfDA7aWYoIShjW2Y+PjJdfDApKWNbZj4+Ml09bGgoY1soY1tlPj4yXXwwKSs1Mj4+Ml18MCl8MH1lbHNlIGNbZj4+Ml09bGgoNyl8MDtjW2Q+PjJdPWNbZj4+Ml07Zj1jW2Q+PjJdfDA7aT1nO3JldHVybiBmfDB9ZnVuY3Rpb24gY2YoYSxiLGQsZSxmKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wO2g9aTtpPWkrMzJ8MDtuPWgrMjB8MDttPWgrMTZ8MDtsPWgrMTJ8MDtrPWgrOHwwO2o9aCs0fDA7Zz1oO2Nbbj4+Ml09YTtjW20+PjJdPWI7Y1tsPj4yXT1kO2Nbaz4+Ml09ZTtjW2o+PjJdPWY7Y1tnPj4yXT1WaChjW24+PjJdfDAsY1ttPj4yXXwwLGNbbD4+Ml18MCwwLDAsY1trPj4yXXwwLGNbaj4+Ml18MCl8MDtpPWg7cmV0dXJuIGNbZz4+Ml18MH1mdW5jdGlvbiBkZihhLGIsZCxlKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MDtmPWk7aT1pKzE2fDA7az1mKzEyfDA7aj1mKzh8MDtoPWYrNHwwO2c9ZjtjW2s+PjJdPWE7Y1tqPj4yXT1iO2NbaD4+Ml09ZDtjW2c+PjJdPWU7Yj1YaChjW2s+PjJdfDAsY1tqPj4yXXwwLGNbaD4+Ml18MCxjW2c+PjJdfDAsMCl8MDtpPWY7cmV0dXJuIGJ8MH1mdW5jdGlvbiBlZihhLGIsZCxlLGYpe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wLG09MDtnPWk7aT1pKzMyfDA7bT1nKzE2fDA7bD1nKzEyfDA7az1nKzh8MDtqPWcrNHwwO2g9ZztjW20+PjJdPWE7Y1tsPj4yXT1iO2Nbaz4+Ml09ZDtjW2o+PjJdPWU7Y1toPj4yXT1mO2I9WGgoY1ttPj4yXXwwLGNbbD4+Ml18MCxjW2s+PjJdfDAsY1tqPj4yXXwwLGNbaD4+Ml18MCl8MDtpPWc7cmV0dXJuIGJ8MH1mdW5jdGlvbiBmZihlLGYpe2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MDtzPWk7aT1pKzQ4fDA7cT1zO2c9cys0MHwwO2g9cyszNnwwO2o9cyszMnwwO2s9cysyOHwwO249cysyNHwwO3A9cysyMHwwO289cysxNnwwO3I9cysxMnwwO209cys4fDA7bD1zKzR8MDtjW2g+PjJdPWU7Y1tqPj4yXT1mO2NbcD4+Ml09MDtjW3I+PjJdPTA7Y1trPj4yXT1jWyhjW2g+PjJdfDApKzMzNj4+Ml07aWYoKGNbaz4+Ml18MCkhPTA/KGNbKGNbaz4+Ml18MCkrMTI+PjJdfDApPT0wOjApe2Nbbz4+Ml09Y1soY1trPj4yXXwwKSs0Pj4yXTtjW24+PjJdPXNoKGNbaD4+Ml18MCw0ODAsMCl8MDtpZighKGNbbj4+Ml18MCkpY1twPj4yXT03O2Vsc2V7YVsoY1tuPj4yXXwwKSs0MTA+PjBdPTE7Y1tjW24+PjJdPj4yXT1jW2g+PjJdO2NbKGNbbj4+Ml18MCkrMTM2Pj4yXT0xO2lmKCgoKDA9PShZaChjW24+PjJdfDAsY1tqPj4yXXwwLHIpfDApPyhjWyhjW24+PjJdfDApKzQ0MD4+Ml18MCkhPTA6MCk/KGFbKGNbaD4+Ml18MCkrNjk+PjBdfDApPT0wOjApPyhjWyhjWyhjW24+PjJdfDApKzQ0MD4+Ml18MCkrMTI+PjJdfDApPT0wOjApPyhkWyhjWyhjW24+PjJdfDApKzQ0MD4+Ml18MCkrNDI+PjBdJjE2fDApPT0wOjApe2lmKCEoY1soY1tvPj4yXXwwKSs0Pj4yXXwwKSl7Y1ttPj4yXT1jWyhjW24+PjJdfDApKzQ0MD4+Ml07Y1soY1tvPj4yXXwwKSs0Pj4yXT1jWyhjW20+PjJdfDApKzQ+PjJdO2JbKGNbbz4+Ml18MCkrMzQ+PjFdPWJbKGNbbT4+Ml18MCkrMzQ+PjFdfDA7cj0oY1tvPj4yXXwwKSs0MnwwO2Fbcj4+MF09ZFtyPj4wXXxkWyhjW20+PjJdfDApKzQyPj4wXSY5NjtiWyhjW20+PjJdfDApKzM0Pj4xXT0wO2NbKGNbbT4+Ml18MCkrND4+Ml09MDtpZigoZFsoY1ttPj4yXXwwKSs0Mj4+MF0mMzJ8MCkhPTA/KGNbKGNbY1soY1tjW2s+PjJdPj4yXXwwKSs0Pj4yXT4+Ml18MCkrNTI+PjJdfDApIT0wOjApY1twPj4yXT0xO2NbbD4+Ml09Y1soY1ttPj4yXXwwKSs4Pj4yXTtpZihjW2w+PjJdfDApe2NbKGNbbz4+Ml18MCkrOD4+Ml09Y1tsPj4yXTtjWyhjW20+PjJdfDApKzg+PjJdPTA7Y1soY1tsPj4yXXwwKSsxMj4+Ml09Y1tvPj4yXX19Y1soY1trPj4yXXwwKSsxMj4+Ml09MX1lbHNle289Y1toPj4yXXwwO2Y9KGNbcj4+Ml18MCkhPTA/MTgzOTE6MDtjW3E+PjJdPWNbcj4+Ml07amcobywxLGYscSk7VGYoY1toPj4yXXwwLGNbcj4+Ml18MCk7Y1twPj4yXT0xfWFbKGNbbj4+Ml18MCkrNDEwPj4wXT0wO2lmKGNbKGNbbj4+Ml18MCkrOD4+Ml18MClUZyhjWyhjW24+PjJdfDApKzg+PjJdfDApfDA7UmYoY1toPj4yXXwwLGNbKGNbbj4+Ml18MCkrNDQwPj4yXXwwKTtQaChjW24+PjJdfDApO1RmKGNbaD4+Ml18MCxjW24+PjJdfDApfWNbcD4+Ml09VWcoY1toPj4yXXwwLGNbcD4+Ml18MCl8MDtjW2c+PjJdPWNbcD4+Ml07cj1jW2c+PjJdfDA7aT1zO3JldHVybiByfDB9bGcoY1toPj4yXXwwLDIxKTtjW2c+PjJdPUxmKDEyMzI3OCl8MDtyPWNbZz4+Ml18MDtpPXM7cmV0dXJuIHJ8MH1mdW5jdGlvbiBnZihhKXthPWF8MDt2YXIgYj0wLGU9MDtlPWk7aT1pKzE2fDA7Yj1lO2NbYj4+Ml09YTtpPWU7cmV0dXJuIGRbMTg2NTkrKChkWyhjW2I+PjJdfDApKzc0Pj4wXXwwKS0xKT4+MF18MHwwfWZ1bmN0aW9uIGhmKGIsZCxlKXtiPWJ8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTA7az1pO2k9aSszMnwwO2Y9aysyOHwwO2w9aysyNHwwO2c9ays4fDA7aj1rKzR8MDtoPWs7Y1tmPj4yXT1iO2NbbD4+Ml09ZDtjW2o+PjJdPTA7Y1tnPj4yXT1lO2RvIGlmKChjW2w+PjJdfDApPT0xKXtjW2g+PjJdPWNbKGNbZj4+Ml18MCkrMzM2Pj4yXTtpZihjW2g+PjJdfDApe2U9KGNbZz4+Ml18MCkrKDQtMSkmfig0LTEpO2w9Y1tlPj4yXXwwO2NbZz4+Ml09ZSs0O2FbKGNbY1toPj4yXT4+Ml18MCkrMTY+PjBdPWw7YnJlYWt9ZWxzZXtjW2o+PjJdPUxmKDEyMzc0OSl8MDticmVha319ZWxzZSBjW2o+PjJdPUxmKDEyMzc1Nyl8MDt3aGlsZSgwKTtpZighKGNbaj4+Ml18MCkpe2w9Y1tqPj4yXXwwO2k9aztyZXR1cm4gbHwwfWxnKGNbZj4+Ml18MCxjW2o+PjJdfDApO2w9Y1tqPj4yXXwwO2k9aztyZXR1cm4gbHwwfWZ1bmN0aW9uIGpmKCl7cmV0dXJuIDE3NTk4fWZ1bmN0aW9uIGtmKCl7cmV0dXJuIDE4Njc3fWZ1bmN0aW9uIGxmKCl7cmV0dXJuIDMwMTUwMDF9ZnVuY3Rpb24gbWYoYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wO2s9aTtpPWkrNDh8MDtoPWsrNDR8MDtkPWsrNDB8MDtlPWsrMjR8MDtqPWsrMTZ8MDtnPWsrOHwwO2Y9aztjW2Q+PjJdPWE7Y1tqPj4yXT0wO2lmKGNbNTldfDApe2NbaD4+Ml09TGYoMTM4MTkwKXwwO2o9Y1toPj4yXXwwO2k9aztyZXR1cm4ganwwfWNbZT4+Ml09YjtkbyBzd2l0Y2goY1tkPj4yXXwwKXtjYXNlIDQ6e2c9KGNbZT4+Ml18MCkrKDQtMSkmfig0LTEpO2I9Y1tnPj4yXXwwO2NbZT4+Ml09Zys0O2NbMTJdPWNbYj4+Ml07Y1sxM109Y1tiKzQ+PjJdO2NbMTRdPWNbYis4Pj4yXTtjWzE1XT1jW2IrMTI+PjJdO2NbMTZdPWNbYisxNj4+Ml07Y1sxN109Y1tiKzIwPj4yXTtjWzE4XT1jW2IrMjQ+PjJdO2NbMTldPWNbYisyOD4+Ml07YnJlYWt9Y2FzZSA1OntpZighKGNbMTJdfDApKSRoKCk7Zz0oY1tlPj4yXXwwKSsoNC0xKSZ+KDQtMSk7Yj1jW2c+PjJdfDA7Y1tlPj4yXT1nKzQ7Y1tiPj4yXT1jWzEyXTtjW2IrND4+Ml09Y1sxM107Y1tiKzg+PjJdPWNbMTRdO2NbYisxMj4+Ml09Y1sxNV07Y1tiKzE2Pj4yXT1jWzE2XTtjW2IrMjA+PjJdPWNbMTddO2NbYisyND4+Ml09Y1sxOF07Y1tiKzI4Pj4yXT1jWzE5XTticmVha31jYXNlIDk6e2c9KGNbZT4+Ml18MCkrKDQtMSkmfig0LTEpO2I9Y1tnPj4yXXwwO2NbZT4+Ml09Zys0O2NbMl09YjticmVha31jYXNlIDY6e2c9KGNbZT4+Ml18MCkrKDQtMSkmfig0LTEpO2I9Y1tnPj4yXXwwO2NbZT4+Ml09Zys0O2NbNTBdPWI7Yj0oY1tlPj4yXXwwKSsoNC0xKSZ+KDQtMSk7Zz1jW2I+PjJdfDA7Y1tlPj4yXT1iKzQ7Y1s1MV09ZztnPShjW2U+PjJdfDApKyg0LTEpJn4oNC0xKTtiPWNbZz4+Ml18MDtjW2U+PjJdPWcrNDtjWzUyXT1iO2JyZWFrfWNhc2UgNzp7Zz0oY1tlPj4yXXwwKSsoNC0xKSZ+KDQtMSk7Yj1jW2c+PjJdfDA7Y1tlPj4yXT1nKzQ7Y1s1M109YjtiPShjW2U+PjJdfDApKyg0LTEpJn4oNC0xKTtnPWNbYj4+Ml18MDtjW2U+PjJdPWIrNDtjWzU0XT1nO2c9KGNbZT4+Ml18MCkrKDQtMSkmfig0LTEpO2I9Y1tnPj4yXXwwO2NbZT4+Ml09Zys0O2NbNTVdPWI7YnJlYWt9Y2FzZSAyNDp7Zz0oYWkoKXwwKSsoYmkoKXwwKSsoY2koKXwwKXwwO2E9KGNbZT4+Ml18MCkrKDQtMSkmfig0LTEpO2I9Y1thPj4yXXwwO2NbZT4+Ml09YSs0O2NbYj4+Ml09ZzticmVha31jYXNlIDE0OmJyZWFrO2Nhc2UgMTU6e2Nbaj4+Ml09MTticmVha31jYXNlIDE4OntkPShjW2U+PjJdfDApKyg0LTEpJn4oNC0xKTtmPWNbZD4+Ml18MDtjW2U+PjJdPWQrNDtkPTExNjtlPWY7Zj1kKzUyfDA7ZG97Y1tkPj4yXT1jW2U+PjJdO2Q9ZCs0fDA7ZT1lKzR8MH13aGlsZSgoZHwwKTwoZnwwKSk7YnJlYWt9Y2FzZSAxOTp7aWYoIShjWzMxXXwwKSlkaSgpO2Y9KGNbZT4+Ml18MCkrKDQtMSkmfig0LTEpO2Q9Y1tmPj4yXXwwO2NbZT4+Ml09Zis0O2U9MTE2O2Y9ZCs1MnwwO2Rve2NbZD4+Ml09Y1tlPj4yXTtkPWQrNHwwO2U9ZSs0fDB9d2hpbGUoKGR8MCk8KGZ8MCkpO2JyZWFrfWNhc2UgMTM6e2I9KGNbZT4+Ml18MCkrKDQtMSkmfig0LTEpO2c9Y1tiPj4yXXwwO2NbZT4+Ml09Yis0O2NbOV09ZztnPShjW2U+PjJdfDApKyg0LTEpJn4oNC0xKTtiPWNbZz4+Ml18MDtjW2U+PjJdPWcrNDtjWzEwXT1iO2JyZWFrfWNhc2UgMTY6e2I9KGNbZT4+Ml18MCkrKDQtMSkmfig0LTEpO2c9Y1tiPj4yXXwwO2NbZT4+Ml09Yis0O2NbNjZdPWc7Zz0oY1tlPj4yXXwwKSsoNC0xKSZ+KDQtMSk7Yj1jW2c+PjJdfDA7Y1tlPj4yXT1nKzQ7Y1s2N109YjticmVha31jYXNlIDE3OntnPShjW2U+PjJdfDApKyg0LTEpJn4oNC0xKTtiPWNbZz4+Ml18MDtjW2U+PjJdPWcrNDtjWzVdPWI7YnJlYWt9Y2FzZSAyMDp7Zz0oY1tlPj4yXXwwKSsoNC0xKSZ+KDQtMSk7Yj1jW2c+PjJdfDA7Y1tlPj4yXT1nKzQ7Y1s2XT1iO2JyZWFrfWNhc2UgMjI6e2I9KGNbZT4+Ml18MCkrKDgtMSkmfig4LTEpO2E9YjtkPWNbYT4+Ml18MDthPWNbYSs0Pj4yXXwwO2NbZT4+Ml09Yis4O2I9ZztjW2I+PjJdPWQ7Y1tiKzQ+PjJdPWE7Yj0oY1tlPj4yXXwwKSsoOC0xKSZ+KDgtMSk7YT1iO2Q9Y1thPj4yXXwwO2E9Y1thKzQ+PjJdfDA7Y1tlPj4yXT1iKzg7ZT1mO2NbZT4+Ml09ZDtjW2UrND4+Ml09YTtlPWY7Yj1jW2UrND4+Ml18MDtlPShjW2YrND4+Ml18MCk8MHwoKGJ8MCk+MHwoYnwwKT09MCYoY1tlPj4yXXwwKT4+PjA+MCk7Yj1mO2NbYj4+Ml09ZT8wOmQ7Y1tiKzQ+PjJdPWU/MDphO2lmKChjW2crND4+Ml18MCk8MCl7Yj1nO2NbYj4+Ml09MDtjW2IrND4+Ml09MH1hPWc7ZD1jW2ErND4+Ml18MDtiPWY7ZT1jW2IrND4+Ml18MDtpZigoZHwwKT4oZXwwKXwoKGR8MCk9PShlfDApPyhjW2E+PjJdfDApPj4+MD4oY1tiPj4yXXwwKT4+PjA6MCkpe2U9ZjthPWNbZSs0Pj4yXXwwO2I9ZztjW2I+PjJdPWNbZT4+Ml07Y1tiKzQ+PjJdPWF9Yj1jW2YrND4+Ml18MDthPTE5MjtjW2E+PjJdPWNbZj4+Ml07Y1thKzQ+PjJdPWI7YT1nO2c9Y1thKzQ+PjJdfDA7Yj0xODQ7Y1tiPj4yXT1jW2E+PjJdO2NbYis0Pj4yXT1nO2JyZWFrfWNhc2UgMjU6e2c9KGNbZT4+Ml18MCkrKDQtMSkmfig0LTEpO2I9Y1tnPj4yXXwwO2NbZT4+Ml09Zys0O2NbNThdPWI7YnJlYWt9Y2FzZSAyNjp7Zz0oY1tlPj4yXXwwKSsoNC0xKSZ+KDQtMSk7Yj1jW2c+PjJdfDA7Y1tlPj4yXT1nKzQ7Y1sxMV09YjticmVha31kZWZhdWx0OmNbaj4+Ml09MX13aGlsZSgwKTtjW2g+PjJdPWNbaj4+Ml07aj1jW2g+PjJdfDA7aT1rO3JldHVybiBqfDB9ZnVuY3Rpb24gbmYoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MCxnPTA7Zz1pO2k9aSsxNnwwO2I9ZysxMnwwO2Q9Zys4fDA7ZT1nKzR8MDtmPWc7Y1tiPj4yXT1hO09mKGNbYj4+Ml18MCk7Y1tkPj4yXT0wO3doaWxlKDEpe2lmKChjW2Q+PjJdfDApPj0oY1soY1tiPj4yXXwwKSsyMD4+Ml18MCkpYnJlYWs7Y1tlPj4yXT1jWyhjWyhjW2I+PjJdfDApKzE2Pj4yXXwwKSsoY1tkPj4yXTw8NCkrND4+Ml07aWYoY1tlPj4yXXwwKXtjW2Y+PjJdPVBmKGNbZT4+Ml18MCl8MDtlaShjW2Y+PjJdfDApfWNbZD4+Ml09KGNbZD4+Ml18MCkrMX1pPWc7cmV0dXJuIDB9ZnVuY3Rpb24gb2YoYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTA7cj1pO2k9aSs2NHwwO2U9cis1MnwwO2Y9cis0OHwwO2c9ciszMnwwO289cisyOHwwO209cisyNHwwO3A9cisyMHwwO2g9cisxNnwwO2o9cisxMnwwO2w9cis4fDA7bj1yKzR8MDtrPXI7Y1tlPj4yXT1hO2NbZj4+Ml09YjtjW2c+PjJdPWQ7c3dpdGNoKGNbZj4+Ml18MCl7Y2FzZSAxZTM6e2Q9KGNbZz4+Ml18MCkrKDQtMSkmfig0LTEpO3E9Y1tkPj4yXXwwO2NbZz4+Ml09ZCs0O2NbY1soY1tlPj4yXXwwKSsxNj4+Ml0+PjJdPXE7Y1tvPj4yXT0wO3E9Y1tvPj4yXXwwO2k9cjtyZXR1cm4gcXwwfWNhc2UgMTAwMTp7ZD0oY1tnPj4yXXwwKSsoNC0xKSZ+KDQtMSk7cT1jW2Q+PjJdfDA7Y1tnPj4yXT1kKzQ7Y1ttPj4yXT1xO3E9KGNbZz4+Ml18MCkrKDQtMSkmfig0LTEpO2Q9Y1txPj4yXXwwO2NbZz4+Ml09cSs0O2NbcD4+Ml09ZDtkPShjW2c+PjJdfDApKyg0LTEpJn4oNC0xKTtxPWNbZD4+Ml18MDtjW2c+PjJdPWQrNDtjW2g+PjJdPXE7Y1tvPj4yXT1naShjW2U+PjJdfDAsY1ttPj4yXXwwLGNbcD4+Ml18MCxjW2g+PjJdfDApfDA7cT1jW28+PjJdfDA7aT1yO3JldHVybiBxfDB9ZGVmYXVsdDp7Y1tvPj4yXT0xO2Nbaj4+Ml09MDt3aGlsZSgxKXtpZigoY1tqPj4yXXwwKT4+PjA+PTQpe3E9MTc7YnJlYWt9aWYoKGNbMTU0OCsoY1tqPj4yXTw8Myk+PjJdfDApPT0oY1tmPj4yXXwwKSlicmVhaztjW2o+PjJdPShjW2o+PjJdfDApKzF9aWYoKHF8MCk9PTE3KXtxPWNbbz4+Ml18MDtpPXI7cmV0dXJuIHF8MH1xPShjW2c+PjJdfDApKyg0LTEpJn4oNC0xKTtkPWNbcT4+Ml18MDtjW2c+PjJdPXErNDtjW2w+PjJdPWQ7ZD0oY1tnPj4yXXwwKSsoNC0xKSZ+KDQtMSk7cT1jW2Q+PjJdfDA7Y1tnPj4yXT1kKzQ7Y1tuPj4yXT1xO2Nbaz4+Ml09Y1soY1tlPj4yXXwwKSsyND4+Ml07aWYoKGNbbD4+Ml18MCk8PTApe2lmKCEoY1tsPj4yXXwwKSl7cT0oY1tlPj4yXXwwKSsyNHwwO2NbcT4+Ml09Y1txPj4yXSZ+Y1sxNTQ4KyhjW2o+PjJdPDwzKSs0Pj4yXX19ZWxzZXtxPShjW2U+PjJdfDApKzI0fDA7Y1txPj4yXT1jW3E+PjJdfGNbMTU0OCsoY1tqPj4yXTw8MykrND4+Ml19aWYoKGNbaz4+Ml18MCkhPShjWyhjW2U+PjJdfDApKzI0Pj4yXXwwKSlTaChjW2U+PjJdfDApO2lmKGNbbj4+Ml18MCljW2Nbbj4+Ml0+PjJdPShjWyhjW2U+PjJdfDApKzI0Pj4yXSZjWzE1NDgrKGNbaj4+Ml08PDMpKzQ+PjJdfDApIT0wJjE7Y1tvPj4yXT0wO3E9Y1tvPj4yXXwwO2k9cjtyZXR1cm4gcXwwfX1yZXR1cm4gMH1mdW5jdGlvbiBwZihhKXthPWF8MDt2YXIgYj0wLGQ9MDtiPWk7aT1pKzE2fDA7ZD1iO2NbZD4+Ml09YTthPShjW2Q+PjJdfDApKzMyfDA7Qz1jW2ErND4+Ml18MDtpPWI7cmV0dXJuIGNbYT4+Ml18MH1mdW5jdGlvbiBxZihhKXthPWF8MDt2YXIgYj0wLGQ9MDtkPWk7aT1pKzE2fDA7Yj1kO2NbYj4+Ml09YTtpPWQ7cmV0dXJuIGNbKGNbYj4+Ml18MCkrODg+PjJdfDB9ZnVuY3Rpb24gcmYoYSl7YT1hfDA7dmFyIGI9MCxkPTA7ZD1pO2k9aSsxNnwwO2I9ZDtjW2I+PjJdPWE7aT1kO3JldHVybiBjWyhjW2I+PjJdfDApKzkyPj4yXXwwfWZ1bmN0aW9uIHNmKGEpe2E9YXwwO3ZhciBiPTAsZD0wO2I9aTtpPWkrMTZ8MDtkPWI7Y1tkPj4yXT1hO2E9aGkoY1tkPj4yXXwwLDApfDA7aT1iO3JldHVybiBhfDB9ZnVuY3Rpb24gdGYoYSl7YT1hfDA7dmFyIGI9MCxkPTA7Yj1pO2k9aSsxNnwwO2Q9YjtjW2Q+PjJdPWE7YT1oaShjW2Q+PjJdfDAsMSl8MDtpPWI7cmV0dXJuIGF8MH1mdW5jdGlvbiB1ZihhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MDtlPWk7aT1pKzE2fDA7Zj1lKzh8MDtoPWUrNHwwO2c9ZTtjW2Y+PjJdPWE7Y1toPj4yXT1iO2NbZz4+Ml09ZDtjWyhjW2Y+PjJdfDApKzM4MD4+Ml09Y1toPj4yXTtjWyhjW2Y+PjJdfDApKzM4MCs0Pj4yXT1jW2c+PjJdO2NbKGNbZj4+Ml18MCkrMzgwKzg+PjJdPTA7Y1soY1tmPj4yXXwwKSs0Mjg+PjJdPTA7aT1lO3JldHVybiAwfWZ1bmN0aW9uIHZmKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wO2Y9aTtpPWkrMTZ8MDtkPWYrNHwwO2U9ZjtjW2Q+PjJdPWE7Y1tlPj4yXT1iO2E9Y1tkPj4yXXwwO2lmKChjW2U+PjJdfDApPjApe3VmKGEsMTc4LGNbZD4+Ml18MCl8MDtjWyhjW2Q+PjJdfDApKzQyOD4+Ml09Y1tlPj4yXTtpPWY7cmV0dXJuIDB9ZWxzZXt1ZihhLDAsMCl8MDtpPWY7cmV0dXJuIDB9cmV0dXJuIDB9ZnVuY3Rpb24gd2YoYSxiLGQsZSxmLGcsaCxqKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDt2YXIgaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTA7az1pO2k9aSszMnwwO3M9aysyOHwwO3I9aysyNHwwO3E9aysyMHwwO3A9aysxNnwwO289aysxMnwwO249ays4fDA7bT1rKzR8MDtsPWs7Y1tzPj4yXT1hO2Nbcj4+Ml09YjtjW3E+PjJdPWQ7Y1twPj4yXT1lO2Nbbz4+Ml09ZjtjW24+PjJdPWc7Y1ttPj4yXT1oO2NbbD4+Ml09ajtiPXhmKGNbcz4+Ml18MCxjW3I+PjJdfDAsY1txPj4yXXwwLGNbcD4+Ml18MCxjW28+PjJdfDAsY1tuPj4yXXwwLGNbbT4+Ml18MCxjW2w+PjJdfDAsMCl8MDtpPWs7cmV0dXJuIGJ8MH1mdW5jdGlvbiB4ZihhLGIsZCxlLGYsZyxoLGosayl7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7dmFyIGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MDt4PWk7aT1pKzQ4fDA7bD14KzQwfDA7bT14KzM2fDA7bj14KzMyfDA7bz14KzI4fDA7cD14KzI0fDA7cT14KzIwfDA7cj14KzE2fDA7cz14KzEyfDA7dD14Kzh8MDt2PXgrNHwwO3U9eDtjW2w+PjJdPWE7Y1ttPj4yXT1iO2Nbbj4+Ml09ZDtjW28+PjJdPWU7Y1twPj4yXT1mO2NbcT4+Ml09ZztjW3I+PjJdPWg7Y1tzPj4yXT1qO2NbdD4+Ml09aztjW3Y+PjJdPTE7Y1t1Pj4yXT0wO2RvIGlmKGNbdD4+Ml18MCl7Y1t1Pj4yXT1zaChjW2w+PjJdfDAsMTIsMCl8MDthPWNbdD4+Ml18MDtpZihjW3U+PjJdfDApe2NbKGNbdT4+Ml18MCkrND4+Ml09YTtjWyhjW3U+PjJdfDApKzg+PjJdPWNbcD4+Ml07dz01O2JyZWFrfWVsc2V7UWJbYSYyNTVdKGNbcD4+Ml18MCk7YnJlYWt9fWVsc2Ugdz01O3doaWxlKDApO2lmKCgod3wwKT09NT8oY1t2Pj4yXT1qaShjW2w+PjJdfDAsY1ttPj4yXXwwLGNbbj4+Ml18MCxjW28+PjJdfDAsY1twPj4yXXwwLGNbcT4+Ml18MCxjW3I+PjJdfDAsY1tzPj4yXXwwLGNbdT4+Ml18MCl8MCwoY1t1Pj4yXXwwKSE9MCk6MCk/KGNbY1t1Pj4yXT4+Ml18MCk9PTA6MCl7UWJbY1t0Pj4yXSYyNTVdKGNbcD4+Ml18MCk7VGYoY1tsPj4yXXwwLGNbdT4+Ml18MCl9Y1t2Pj4yXT1VZyhjW2w+PjJdfDAsY1t2Pj4yXXwwKXwwO2k9eDtyZXR1cm4gY1t2Pj4yXXwwfWZ1bmN0aW9uIHlmKGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MDtqPWk7aT1pKzE2fDA7ZT1qKzEyfDA7Zj1qKzh8MDtnPWorNHwwO2g9ajtjW2U+PjJdPWE7Y1tmPj4yXT1iO2NbZz4+Ml09ZDtjW2g+PjJdPTA7aWYoIShraShjW2U+PjJdfDAsY1tmPj4yXXwwLGNbZz4+Ml18MCwxLDApfDApKWNbaD4+Ml09amkoY1tlPj4yXXwwLGNbZj4+Ml18MCxjW2c+PjJdfDAsMSwwLDIyNCwwLDAsMCl8MDtjW2g+PjJdPVVnKGNbZT4+Ml18MCxjW2g+PjJdfDApfDA7aT1qO3JldHVybiBjW2g+PjJdfDB9ZnVuY3Rpb24gemYoYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTA7ZT1pO2k9aSsxNnwwO2Y9ZSs0fDA7ZD1lO2NbZj4+Ml09YTtjW2Q+PjJdPWI7YT1jW2Y+PjJdfDA7aWYoKGNbZD4+Ml18MCk+MCl7QWYoYSwxMzksY1tkPj4yXXwwKXwwO2k9ZTtyZXR1cm4gMH1lbHNle0FmKGEsMCwwKXwwO2k9ZTtyZXR1cm4gMH1yZXR1cm4gMH1mdW5jdGlvbiBBZihhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTA7Zj1pO2k9aSsxNnwwO2c9ZisxMnwwO2o9Zis4fDA7aD1mKzR8MDtlPWY7Y1tnPj4yXT1hO2Nbaj4+Ml09YjtjW2g+PjJdPWQ7Y1tlPj4yXT1jWyhjW2c+PjJdfDApKzIyOD4+Ml07Y1soY1tnPj4yXXwwKSsyMjQ+PjJdPWNbaj4+Ml07Y1soY1tnPj4yXXwwKSsyMjg+PjJdPWNbaD4+Ml07aT1mO3JldHVybiBjW2U+PjJdfDB9ZnVuY3Rpb24gQmYoYixkLGUsZixnKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDt2YXIgaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wO3I9aTtpPWkrNDh8MDtxPXI7aD1yKzMyfDA7aj1yKzI4fDA7az1yKzI0fDA7bD1yKzIwfDA7bT1yKzE2fDA7bj1yKzEyfDA7cD1yKzh8MDtvPXIrNHwwO2Nbaj4+Ml09YjtjW2s+PjJdPWQ7Y1tsPj4yXT1lO2NbbT4+Ml09ZjtjW24+PjJdPWc7Y1tvPj4yXT0xMDtpZihjW20+PjJdfDApY1tjW20+PjJdPj4yXT0tMTtpZihjW24+PjJdfDApY1tjW24+PjJdPj4yXT0tMTtpZigoY1tsPj4yXXwwKTwwfChjW2w+PjJdfDApPjMpe2NbaD4+Ml09MjE7ZD1jW2g+PjJdfDA7aT1yO3JldHVybiBkfDB9aWYoKGNbaz4+Ml18MCkhPTA/KGFbY1trPj4yXT4+MF18MCkhPTA6MCljW28+PjJdPW5pKGNbaj4+Ml18MCxjW2s+PjJdfDApfDA7aWYoKGNbbz4+Ml18MCk8MCl7Y1twPj4yXT0xO2Q9Y1tqPj4yXXwwO2NbcT4+Ml09Y1trPj4yXTtqZyhkLDEsMTg3MzgscSl9ZWxzZXtjWyhjW2o+PjJdfDApKzM4MCs4Pj4yXT0wO2NbcD4+Ml09b2koY1tqPj4yXXwwLGNbbz4+Ml18MCxjW2w+PjJdfDAsY1ttPj4yXXwwLGNbbj4+Ml18MCl8MDtsZyhjW2o+PjJdfDAsY1twPj4yXXwwKX1jW3A+PjJdPVVnKGNbaj4+Ml18MCxjW3A+PjJdfDApfDA7Y1toPj4yXT1jW3A+PjJdO2Q9Y1toPj4yXXwwO2k9cjtyZXR1cm4gZHwwfWZ1bmN0aW9uIENmKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wO2Q9aTtpPWkrMTZ8MDtmPWQrNHwwO2U9ZDtjW2Y+PjJdPWE7Y1tlPj4yXT1iO2I9QmYoY1tmPj4yXXwwLGNbZT4+Ml18MCwwLDAsMCl8MDtpPWQ7cmV0dXJuIGJ8MH1mdW5jdGlvbiBEZihhKXthPWF8MDt2YXIgYj0wLGU9MCxmPTA7Zj1pO2k9aSsxNnwwO2I9Zis0fDA7ZT1mO2NbZT4+Ml09YTtpZigoY1tlPj4yXXwwKSE9MD8oV2goY1tlPj4yXXwwKXwwKT09MDowKXtjW2I+PjJdPUxmKDE0MDExNSl8MDthPWNbYj4+Ml18MDtpPWY7cmV0dXJuIGF8MH1pZigoY1tlPj4yXXwwKSE9MD8oZFsoY1tlPj4yXXwwKSs2OT4+MF18MHwwKT09MDowKXtjW2I+PjJdPWNbKGNbZT4+Ml18MCkrNTI+PjJdJmNbKGNbZT4+Ml18MCkrNTY+PjJdO2E9Y1tiPj4yXXwwO2k9ZjtyZXR1cm4gYXwwfWNbYj4+Ml09NzthPWNbYj4+Ml18MDtpPWY7cmV0dXJuIGF8MH1mdW5jdGlvbiBFZihhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wO2s9aTtpPWkrMzJ8MDtlPWsrMTZ8MDtmPWsrMTJ8MDtnPWsrOHwwO2g9ays0fDA7aj1rO2NbZj4+Ml09YTtjW2c+PjJdPWI7Y1toPj4yXT1kO2lmKChjW2c+PjJdfDApPDB8KGNbZz4+Ml18MCk+PTEyKXtjW2U+PjJdPS0xO2o9Y1tlPj4yXXwwO2k9aztyZXR1cm4ganwwfWNbaj4+Ml09Y1soY1tmPj4yXXwwKSs5NisoY1tnPj4yXTw8Mik+PjJdO2lmKChjW2g+PjJdfDApPj0wKXtpZigoY1toPj4yXXwwKT4oY1sxNTgwKyhjW2c+PjJdPDwyKT4+Ml18MCkpY1toPj4yXT1jWzE1ODArKGNbZz4+Ml08PDIpPj4yXTtjWyhjW2Y+PjJdfDApKzk2KyhjW2c+PjJdPDwyKT4+Ml09Y1toPj4yXX1jW2U+PjJdPWNbaj4+Ml07aj1jW2U+PjJdfDA7aT1rO3JldHVybiBqfDB9ZnVuY3Rpb24gRmYoYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTA7ZD1pO2k9aSsxNnwwO2Y9ZCs0fDA7ZT1kO2NbZj4+Ml09YTtjW2U+PjJdPWI7YT1xaShjW2Y+PjJdfDAsY1tlPj4yXXwwLDYsMCl8MDtpPWQ7cmV0dXJuIGF8MH1mdW5jdGlvbiBHZihhLGIsZCxlKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTA7bT1pO2k9aSszMnwwO289bSsyOHwwO249bSsyNHwwO2Y9bSsyMHwwO2c9bSsxNnwwO2w9bSsxMnwwO2o9bSs4fDA7az1tKzR8MDtoPW07Y1tvPj4yXT1hO2Nbbj4+Ml09YjtjW2Y+PjJdPWQ7Y1tnPj4yXT1lO2NbbD4+Ml09MTtjW2o+PjJdPXhpKGNbbz4+Ml18MCxjW24+PjJdfDApfDA7aWYoIShjW2o+PjJdfDApKXtvPWNbbD4+Ml18MDtpPW07cmV0dXJuIG98MH1tZyhjW2o+PjJdfDApO2Nbaz4+Ml09UGYoY1tqPj4yXXwwKXwwO2NbaD4+Ml09RWcoY1trPj4yXXwwKXwwO2lmKChjW2Y+PjJdfDApPT03KXtjW2NbZz4+Ml0+PjJdPWNbaD4+Ml07Y1tsPj4yXT0wO289Y1tsPj4yXXwwO2k9bTtyZXR1cm4gb3wwfWlmKChjW2Y+PjJdfDApPT0yNyl7bz15aShjW2s+PjJdfDApfDA7Y1tjW2c+PjJdPj4yXT1vO2NbbD4+Ml09MDtvPWNbbD4+Ml18MDtpPW07cmV0dXJuIG98MH1pZigoY1tmPj4yXXwwKT09Mjgpe289emkoY1trPj4yXXwwKXwwO2NbY1tnPj4yXT4+Ml09bztjW2w+PjJdPTA7bz1jW2w+PjJdfDA7aT1tO3JldHVybiBvfDB9aWYoY1tjW2g+PjJdPj4yXXwwKXtjW2w+PjJdPUFpKGNbaD4+Ml18MCxjW2Y+PjJdfDAsY1tnPj4yXXwwKXwwO289Y1tsPj4yXXwwO2k9bTtyZXR1cm4gb3wwfWVsc2V7Y1tsPj4yXT0xMjtvPWNbbD4+Ml18MDtpPW07cmV0dXJuIG98MH1yZXR1cm4gMH1mdW5jdGlvbiBIZihiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wO2o9aTtpPWkrMTZ8MDtoPWorMTJ8MDtlPWorOHwwO2Y9ais0fDA7Zz1qO2NbZT4+Ml09YjtjW2Y+PjJdPWQ7aWYoKGNbZT4+Ml18MCk9PTB8KGNbZj4+Ml18MCk9PTApe2NbaD4+Ml09MDtoPWNbaD4+Ml18MDtpPWo7cmV0dXJuIGh8MH1kPShKZihjW2U+PjJdfDApfDApKzF8MDtjW2U+PjJdPShjW2U+PjJdfDApK2Q7d2hpbGUoMSl7aWYoIShhW2NbZT4+Ml0+PjBdfDApKXtiPTg7YnJlYWt9Y1tnPj4yXT1oUihjW2U+PjJdfDAsY1tmPj4yXXwwKXwwO2Q9KEpmKGNbZT4+Ml18MCl8MCkrMXwwO2NbZT4+Ml09KGNbZT4+Ml18MCkrZDtkPWNbZT4+Ml18MDtpZighKGNbZz4+Ml18MCkpe2I9NjticmVha31kPShKZihkKXwwKSsxfDA7Y1tlPj4yXT0oY1tlPj4yXXwwKStkfWlmKChifDApPT02KXtjW2g+PjJdPWQ7aD1jW2g+PjJdfDA7aT1qO3JldHVybiBofDB9ZWxzZSBpZigoYnwwKT09OCl7Y1toPj4yXT0wO2g9Y1toPj4yXXwwO2k9ajtyZXR1cm4gaHwwfXJldHVybiAwfWZ1bmN0aW9uIElmKGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MDtnPWk7aT1pKzE2fDA7aj1nKzEyfDA7aD1nKzh8MDtlPWcrNHwwO2Y9ZztjW2o+PjJdPWE7Y1toPj4yXT1iO2NbZT4+Ml09ZDtjW2Y+PjJdPUhmKGNbaj4+Ml18MCxjW2g+PjJdfDApfDA7Y1tlPj4yXT0oY1tlPj4yXXwwKSE9MCYxO2lmKGNbZj4+Ml18MCl7aj0oR2koY1tmPj4yXXwwLGNbZT4+Ml0mMjU1KXwwKSYyNTU7aT1nO3JldHVybiBqfDB9ZWxzZXtqPWNbZT4+Ml18MDtpPWc7cmV0dXJuIGp8MH1yZXR1cm4gMH1mdW5jdGlvbiBKZihhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTA7ZT1pO2k9aSsxNnwwO2I9ZSs0fDA7ZD1lO2NbZD4+Ml09YTtpZighKGNbZD4+Ml18MCkpY1tiPj4yXT0wO2Vsc2UgY1tiPj4yXT0xMDczNzQxODIzJihrUihjW2Q+PjJdfDApfDApO2k9ZTtyZXR1cm4gY1tiPj4yXXwwfWZ1bmN0aW9uIEtmKGIpe2I9YnwwO3ZhciBjPTAsZT0wO2U9aTtpPWkrMTZ8MDtjPWU7YVtjPj4wXT1iO2k9ZTtyZXR1cm4gKChkWzE4NDAzKyhkW2M+PjBdfDApPj4wXXwwKSY3MHwwKSE9MHwwfWZ1bmN0aW9uIExmKGEpe2E9YXwwO3ZhciBiPTAsZD0wO2I9aTtpPWkrMTZ8MDtkPWI7Y1tkPj4yXT1hO2E9UmooMjEsY1tkPj4yXXwwLDQ1NjA2KXwwO2k9YjtyZXR1cm4gYXwwfWZ1bmN0aW9uIE1mKCl7cmV0dXJuIGNbNDI4XXwwfWZ1bmN0aW9uIE5mKCl7cmV0dXJuIGNbNzJdfDB9ZnVuY3Rpb24gT2YoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MDtmPWk7aT1pKzE2fDA7Yj1mKzh8MDtkPWYrNHwwO2U9ZjtjW2I+PjJdPWE7Y1tkPj4yXT0wO3doaWxlKDEpe2lmKChjW2Q+PjJdfDApPj0oY1soY1tiPj4yXXwwKSsyMD4+Ml18MCkpYnJlYWs7Y1tlPj4yXT1jWyhjWyhjW2I+PjJdfDApKzE2Pj4yXXwwKSsoY1tkPj4yXTw8NCkrND4+Ml07aWYoY1tlPj4yXXwwKWNbKGNbKGNbZT4+Ml18MCkrND4+Ml18MCkrND4+Ml09Y1tjW2U+PjJdPj4yXTtjW2Q+PjJdPShjW2Q+PjJdfDApKzF9aT1mO3JldHVybn1mdW5jdGlvbiBQZihhKXthPWF8MDt2YXIgYj0wLGQ9MDtkPWk7aT1pKzE2fDA7Yj1kO2NbYj4+Ml09YTtpPWQ7cmV0dXJuIGNbY1soY1tiPj4yXXwwKSs0Pj4yXT4+Ml18MH1mdW5jdGlvbiBRZihhLGIpe2E9YXwwO2I9YnwwO3ZhciBkPTAsZT0wLGY9MDtmPWk7aT1pKzE2fDA7ZD1mKzR8MDtlPWY7Y1tkPj4yXT1hO2NbZT4+Ml09YjtpZighKGNbZT4+Ml18MCkpe2k9ZjtyZXR1cm59b3YoY1tkPj4yXXwwLGNbKGNbZT4+Ml18MCkrMjg+PjJdfDApO1RmKGNbZD4+Ml18MCxjW2NbZT4+Ml0+PjJdfDApO1RmKGNbZD4+Ml18MCxjWyhjW2U+PjJdfDApKzQ+PjJdfDApO2l2KGNbZD4+Ml18MCxjWyhjW2U+PjJdfDApKzEyPj4yXXwwKTtrdihjW2Q+PjJdfDAsY1soY1tlPj4yXXwwKSsxNj4+Ml18MCk7VGYoY1tkPj4yXXwwLGNbZT4+Ml18MCk7aT1mO3JldHVybn1mdW5jdGlvbiBSZihhLGQpe2E9YXwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTA7aD1pO2k9aSsxNnwwO2U9aCs0fDA7Zj1oO2NbZT4+Ml09YTtjW2Y+PjJdPWQ7aWYoIShjW2Y+PjJdfDApKXtpPWg7cmV0dXJufWlmKCEoKGNbZT4+Ml18MCkhPTA/KGNbKGNbZT4+Ml18MCkrNDU2Pj4yXXwwKSE9MDowKSlnPTQ7aWYoKGd8MCk9PTQ/KGQ9KGNbZj4+Ml18MCkrMzZ8MCxnPShiW2Q+PjFdfDApKy0xPDwxNj4+MTYsYltkPj4xXT1nLChnJjY1NTM1fDApPjApOjApe2k9aDtyZXR1cm59c1EoY1tlPj4yXXwwLGNbZj4+Ml18MCk7aT1oO3JldHVybn1mdW5jdGlvbiBTZihhLGQpe2E9YXwwO2Q9ZHwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MDtsPWk7aT1pKzMyfDA7aD1sKzE2fDA7aj1sKzEyfDA7Zz1sKzh8MDtmPWwrNHwwO2s9bDtjW2g+PjJdPWE7Y1tqPj4yXT1kO09DKGNbKGNbaj4+Ml18MCkrMTAwPj4yXXwwLGVbKGNbaj4+Ml18MCkrMTQwPj4xXTw8MSk7Y1tnPj4yXT1jWyhjW2o+PjJdfDApKzIwMD4+Ml07d2hpbGUoMSl7aWYoIShjW2c+PjJdfDApKWJyZWFrO2NbZj4+Ml09Y1soY1tnPj4yXXwwKSsyMD4+Ml07clEoY1toPj4yXXwwLGNbY1tnPj4yXT4+Ml18MCxjWyhjW2c+PjJdfDApKzQ+PjJdfDApO1RmKGNbaD4+Ml18MCxjW2c+PjJdfDApO2NbZz4+Ml09Y1tmPj4yXX1pZigoY1soY1tqPj4yXXwwKSsyMD4+Ml18MCkhPTM4MTQ3OTU4OSl7T0MoY1soY1tqPj4yXXwwKSsxMTY+PjJdfDAsYlsoY1tqPj4yXXwwKSsxNj4+MV18MCk7Y1trPj4yXT0oYlsoY1tqPj4yXXwwKSsxOD4+MV18MCktMTt3aGlsZSgxKXthPWNbaD4+Ml18MDtpZigoY1trPj4yXXwwKTwwKWJyZWFrO1RmKGEsY1soY1soY1tqPj4yXXwwKSsxMjA+PjJdfDApKyhjW2s+PjJdPDwyKT4+Ml18MCk7Y1trPj4yXT0oY1trPj4yXXwwKSstMX1UZihhLGNbKGNbaj4+Ml18MCkrMTIwPj4yXXwwKTtUZihjW2g+PjJdfDAsY1soY1tqPj4yXXwwKSsxODA+PjJdfDApfXJRKGNbaD4+Ml18MCxjWyhjW2o+PjJdfDApKzg4Pj4yXXwwLGNbKGNbaj4+Ml18MCkrMTM2Pj4yXXwwKTtUZihjW2g+PjJdfDAsY1soY1tqPj4yXXwwKSsxMDA+PjJdfDApO1RmKGNbaD4+Ml18MCxjWyhjW2o+PjJdfDApKzE3Nj4+Ml18MCk7aT1sO3JldHVybn1mdW5jdGlvbiBUZihhLGIpe2E9YXwwO2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTA7Zz1pO2k9aSsxNnwwO2Q9Zys4fDA7ZT1nKzR8MDtmPWc7Y1tkPj4yXT1hO2NbZT4+Ml09YjtpZighKGNbZT4+Ml18MCkpe2k9ZztyZXR1cm59aWYoY1tkPj4yXXwwKXthPWNbZD4+Ml18MDtiPWNbZT4+Ml18MDtpZihjWyhjW2Q+PjJdfDApKzQ1Nj4+Ml18MCl7cVEoYSxiKTtpPWc7cmV0dXJufWlmKGx1KGEsYil8MCl7Y1tmPj4yXT1jW2U+PjJdO2NbY1tmPj4yXT4+Ml09Y1soY1tkPj4yXXwwKSsyNTYrMjg+PjJdO2NbKGNbZD4+Ml18MCkrMjU2KzI4Pj4yXT1jW2Y+PjJdO2Y9KGNbZD4+Ml18MCkrMjU2Kzh8MDtjW2Y+PjJdPShjW2Y+PjJdfDApKy0xO2k9ZztyZXR1cm59fUtkKGNbZT4+Ml18MCk7aT1nO3JldHVybn1mdW5jdGlvbiBVZigpe3ZhciBhPTAsYj0wLGQ9MCxlPTAsZj0wLGc9MDtnPWk7aT1pKzMyfDA7ZT1nKzE2fDA7YT1nKzEyfDA7Yj1nKzh8MDtmPWcrNHwwO2Q9ZztpZighKGNbMTJdfDApKSRoKCk7Y1s3Ml09MDtjWzczXT0wO2NbNzRdPTA7Y1s3NV09MDtjWzc2XT0wO2NbNzddPTA7Y1s3OF09MDtjWzc5XT0wO2NbNzJdPTg7aWYoKGNbNTBdfDApIT0wJihjWzUxXXwwKT49MTAwJihjWzUyXXwwKT4wKXtjW2Y+PjJdPWNbNTFdJi04O2NbNTFdPWNbZj4+Ml07Y1tkPj4yXT1jWzUwXTtjW2I+PjJdPWNbNTJdO2NbNzddPWNbZD4+Ml07Y1s3OF09Y1tiPj4yXTtjW2E+PjJdPTA7d2hpbGUoMSl7aWYoKGNbYT4+Ml18MCk+PSgoY1tiPj4yXXwwKS0xfDApKWJyZWFrO2NbY1tkPj4yXT4+Ml09KGNbZD4+Ml18MCkrKGNbZj4+Ml18MCk7Y1tkPj4yXT1jW2NbZD4+Ml0+PjJdO2NbYT4+Ml09KGNbYT4+Ml18MCkrMX1jW2NbZD4+Ml0+PjJdPTA7Y1s3Nl09KGNbZD4+Ml18MCkrNH1lbHNle2NbNzZdPTA7Y1s1MF09MDtjWzUxXT0wO2NbNTJdPTB9aWYoKGNbNTNdfDApPT0wfChjWzU0XXwwKTw1MTJ8KGNbNTVdfDApPD0wKXtjWzUzXT0wO2NbNTRdPTB9Y1tlPj4yXT1UYltjWzY4Pj4yXSYyNTVdKGNbMTldfDApfDA7aWYoIShjW2U+PjJdfDApKXtmPWNbZT4+Ml18MDtpPWc7cmV0dXJuIGZ8MH07Y1s3Ml09MDtjWzczXT0wO2NbNzRdPTA7Y1s3NV09MDtjWzc2XT0wO2NbNzddPTA7Y1s3OF09MDtjWzc5XT0wO2Y9Y1tlPj4yXXwwO2k9ZztyZXR1cm4gZnwwfWZ1bmN0aW9uIFZmKCl7JE8oKTthUCgpO2JQKDY5NTYsNTcpO3JldHVybn1mdW5jdGlvbiBXZigpe2lmKCEoY1szMV18MCkpZGkoKTtyZXR1cm4gVGJbY1sxMjQ+PjJdJjI1NV0oY1szMF18MCl8MH1mdW5jdGlvbiBYZigpe3ZhciBhPTAsYj0wLGQ9MDtkPWk7aT1pKzE2fDA7YT1kKzR8MDtiPWQ7Y1tiPj4yXT1JZCgxMCl8MDtpZighKGNbYj4+Ml18MCkpe2NbYT4+Ml09NztiPWNbYT4+Ml18MDtpPWQ7cmV0dXJuIGJ8MH1lbHNle0tkKGNbYj4+Ml18MCk7Y1thPj4yXT1VZCgpfDA7Yj1jW2E+PjJdfDA7aT1kO3JldHVybiBifDB9cmV0dXJuIDB9ZnVuY3Rpb24gWWYoYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wO2o9aTtpPWkrMTZ8MDtlPWorMTJ8MDtmPWorOHwwO2c9ais0fDA7aD1qO2NbZT4+Ml09YTtjW2Y+PjJdPWI7Y1tnPj4yXT1kO2lmKCEoY1s0MjBdfDApKXtpPWo7cmV0dXJufWlmKCEoY1tlPj4yXXwwKSl7Y1tnPj4yXT0wO2NbZj4+Ml09MH1jW2Y+PjJdPWNbZj4+Ml0mLTg7Y1s0MjNdPWNbZj4+Ml07Yj1jW2c+PjJdfDA7Y1s0MzBdPWI7Y1s0MjRdPWI7aWYoKGNbZz4+Ml18MCk+OTApZD0xMDtlbHNlIGQ9KChjW2c+PjJdfDApLzEwfDApKzF8MDtjWzQyNV09ZDtjWzQyNl09Y1tlPj4yXTtjWzQyOV09MDtjWzQzMV09MDt3aGlsZSgxKXtiPWNbZz4+Ml18MDtjW2c+PjJdPWIrLTE7ZD1jW2U+PjJdfDA7aWYoIWIpYnJlYWs7Y1toPj4yXT1kO2NbY1toPj4yXT4+Ml09Y1s0MjldO2NbNDI5XT1jW2g+PjJdO2NbZT4+Ml09KGNbZT4+Ml18MCkrKGNbZj4+Ml18MCl9Y1s0MjddPWQ7aT1qO3JldHVybn1mdW5jdGlvbiBaZihhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wO2Y9aTtpPWkrMTZ8MDtkPWYrNHwwO2U9ZjtjW2Q+PjJdPWE7aWYoIShjW2Q+PjJdfDApKXtpPWY7cmV0dXJufWlmKChjWzI3Ml18MCk9PShjW2Q+PjJdfDApKXtjWzI3Ml09Y1soY1tkPj4yXXwwKSsxMj4+Ml07aT1mO3JldHVybn1pZighKGNbMjcyXXwwKSl7aT1mO3JldHVybn1jW2U+PjJdPWNbMjcyXTt3aGlsZSgxKXtpZihjWyhjW2U+PjJdfDApKzEyPj4yXXwwKWI9KGNbKGNbZT4+Ml18MCkrMTI+PjJdfDApIT0oY1tkPj4yXXwwKTtlbHNlIGI9MDthPWNbKGNbZT4+Ml18MCkrMTI+PjJdfDA7aWYoIWIpYnJlYWs7Y1tlPj4yXT1hfWlmKChhfDApIT0oY1tkPj4yXXwwKSl7aT1mO3JldHVybn1jWyhjW2U+PjJdfDApKzEyPj4yXT1jWyhjW2Q+PjJdfDApKzEyPj4yXTtpPWY7cmV0dXJufWZ1bmN0aW9uIF9mKGEpe2E9YXwwO3ZhciBiPTAsZD0wO2Q9aTtpPWkrMTZ8MDtiPWQ7Y1tiPj4yXT1hO0M9MDtpPWQ7cmV0dXJuIGNbMTAwOCsoY1tiPj4yXTw8Mik+PjJdfDB9ZnVuY3Rpb24gJGYoYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wO2Y9aTtpPWkrMTZ8MDtkPWY7ZT1mKzh8MDtnPWQ7Y1tnPj4yXT1hO2NbZys0Pj4yXT1iO2c9ZDtiPWQ7YT1jW2IrND4+Ml18MDtpZigoY1tnPj4yXXwwKT09MCYoY1tnKzQ+PjJdfDApPT0wfChhPj4+MD4wfChhfDApPT0wJihjW2I+PjJdfDApPj4+MD49MjE0NzQ4MzM5Mikpe2NbZT4+Ml09MDtnPWNbZT4+Ml18MDtpPWY7cmV0dXJuIGd8MH1pZihjWzJdfDApe19PKGNbZD4+Ml18MCxlKXwwO2c9Y1tlPj4yXXwwO2k9ZjtyZXR1cm4gZ3wwfWVsc2V7Y1tlPj4yXT1UYltjWzQ4Pj4yXSYyNTVdKGNbZD4+Ml18MCl8MDtnPWNbZT4+Ml18MDtpPWY7cmV0dXJuIGd8MH1yZXR1cm4gMH1mdW5jdGlvbiBhZyhhKXthPWF8MDt2YXIgYj0wLGQ9MDtiPWk7aT1pKzE2fDA7ZD1iO2NbZD4+Ml09YTthPVRiW2NbNjA+PjJdJjI1NV0oY1tkPj4yXXwwKXwwO2k9YjtyZXR1cm4gYXwwfWZ1bmN0aW9uIGJnKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wO2Q9aTtpPWkrMTZ8MDtmPWQrNHwwO2U9ZDtjW2Y+PjJdPWE7Y1tlPj4yXT1iO2E9MTAwOCsoY1tmPj4yXTw8Mil8MDtjW2E+PjJdPShjW2E+PjJdfDApLShjW2U+PjJdfDApO2k9ZDtyZXR1cm59ZnVuY3Rpb24gY2coYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MDttPWk7aT1pKzMyfDA7ZT1tKzI4fDA7Zj1tKzI0fDA7Zz1tO2s9bSsyMHwwO2o9bSsxNnwwO2g9bSsxMnwwO2w9bSs4fDA7Y1tmPj4yXT1hO2E9ZztjW2E+PjJdPWI7Y1thKzQ+PjJdPWQ7ZD1nO2I9Y1tkPj4yXXwwO2Q9Y1tkKzQ+PjJdfDA7aWYoIShjW2Y+PjJdfDApKXtjW2U+PjJdPSRmKGIsZCl8MDtsPWNbZT4+Ml18MDtpPW07cmV0dXJuIGx8MH1pZigoYnwwKT09MCYoZHwwKT09MCl7S2QoY1tmPj4yXXwwKTtjW2U+PjJdPTA7bD1jW2U+PjJdfDA7aT1tO3JldHVybiBsfDB9YT1nO2Q9Y1thKzQ+PjJdfDA7aWYoZD4+PjA+MHwoZHwwKT09MCYoY1thPj4yXXwwKT4+PjA+PTIxNDc0ODMzOTIpe2NbZT4+Ml09MDtsPWNbZT4+Ml18MDtpPW07cmV0dXJuIGx8MH1jW2s+PjJdPWFnKGNbZj4+Ml18MCl8MDtjW2o+PjJdPVRiW2NbNjQ+PjJdJjI1NV0oY1tnPj4yXXwwKXwwO2RvIGlmKChjW2s+PjJdfDApIT0oY1tqPj4yXXwwKSl7aWYoIShjWzJdfDApKXtjW2w+PjJdPVliW2NbNTY+PjJdJjI1NV0oY1tmPj4yXXwwLGNbaj4+Ml18MCl8MDticmVha31SaSg1LGNbZz4+Ml18MCk7Y1toPj4yXT0oY1tqPj4yXXwwKS0oY1trPj4yXXwwKTtkPV9mKDApfDA7bj1DO2I9Mjk2O2E9Y1toPj4yXXwwO2E9UVIoY1tiPj4yXXwwLGNbYis0Pj4yXXwwLGF8MCwoKGF8MCk8MCk8PDMxPj4zMXwwKXwwO2I9QztpZigobnwwKT4oYnwwKXwobnwwKT09KGJ8MCkmZD4+PjA+PWE+Pj4wKVpPKGNbaD4+Ml18MCk7Y1tsPj4yXT1ZYltjWzU2Pj4yXSYyNTVdKGNbZj4+Ml18MCxjW2o+PjJdfDApfDA7bj0yOTY7aD1jW24rND4+Ml18MDtpZigoY1tsPj4yXXwwKT09MCYoKGh8MCk+MHwoaHwwKT09MCYoY1tuPj4yXXwwKT4+PjA+MCkpe1pPKGNbZz4+Ml18MCk7Y1tsPj4yXT1ZYltjWzU2Pj4yXSYyNTVdKGNbZj4+Ml18MCxjW2o+PjJdfDApfDB9aWYoY1tsPj4yXXwwKXtjW2o+PjJdPWFnKGNbbD4+Ml18MCl8MDtTaSgwLChjW2o+PjJdfDApLShjW2s+PjJdfDApfDApfX1lbHNlIGNbbD4+Ml09Y1tmPj4yXTt3aGlsZSgwKTtjW2U+PjJdPWNbbD4+Ml07bj1jW2U+PjJdfDA7aT1tO3JldHVybiBufDB9ZnVuY3Rpb24gZGcoYixkLGUsZixnKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDt2YXIgaD0wLGo9MCxrPTAsbD0wLG09MCxuPTA7aD1pO2k9aSszMnwwO2o9aCsxNnwwO209aCsxMnwwO249aCs4fDA7bD1oKzR8MDtrPWg7Y1tqPj4yXT1iO2NbbT4+Ml09ZDtjW24+PjJdPWU7Y1tsPj4yXT1mO2Nbaz4+Ml09ZztlPWNbbj4+Ml18MDtjWyhjW2o+PjJdfDApKzQ+PjJdPWU7Y1soY1tqPj4yXXwwKSs4Pj4yXT1lO2NbY1tqPj4yXT4+Ml09Y1ttPj4yXTtjWyhjW2o+PjJdfDApKzEyPj4yXT0wO2NbKGNbaj4+Ml18MCkrMTY+PjJdPWNbbD4+Ml07Y1soY1tqPj4yXXwwKSsyMD4+Ml09Y1trPj4yXTthWyhjW2o+PjJdfDApKzI0Pj4wXT0wO2FbKGNbaj4+Ml18MCkrMjU+PjBdPTA7aT1oO3JldHVybn1mdW5jdGlvbiBlZyhiLGUsZil7Yj1ifDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MC4wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxEPTAsRT0wLEY9MCxHPTAsSD0wLEk9MCxKPTAsSz0wLEw9MCxNPTAsTj0wLE89MCxQPTAsUT0wLFI9MCxTPTAsVD0wLFU9MCxWPTAsVz0wLFg9MCxZPTAsWj0wLF89MCwkPTAsYWE9MCxiYT0wLGNhPTAsZGE9MCxlYT0wLGZhPTAsZ2E9MCxoYT0wLGlhPTAsamE9MCxrYT0wLGxhPTAsbWE9MCxuYT0wLG9hPTAscGE9MCxxYT0wLHJhPTAsc2E9MDtyYT1pO2k9aSsyNzJ8MDtqPXJhKzE3NnwwO2s9cmErMTcyfDA7bD1yYSsxNjh8MDtxPXJhKzE2NHwwO3A9cmErMTYwfDA7YWE9cmErMTU2fDA7UT1yYSsxNTJ8MDtLPXJhKzE0OHwwO2phPXJhKzE0NHwwO0I9cmErMjY4fDA7Rj1yYSsyNjd8MDt6PXJhKzI2NnwwO3g9cmErMjY1fDA7eT1yYSsyNjR8MDtIPXJhKzI2M3wwO0Q9cmErMjYyfDA7RT1yYSsyNjF8MDt0PXJhKzI2MHwwO25hPXJhKzI1OXwwO209cmErMjU4fDA7aGE9cmErMjU3fDA7YmE9cmErMjU2fDA7Uj1yYSszMnwwO2VhPXJhKzI0fDA7TD1yYSsxNDB8MDtwYT1yYSsxMzZ8MDtUPXJhKzEzMnwwO29hPXJhKzEyOHwwO3c9cmErMTI0fDA7dT1yYSsxMjB8MDtXPXJhKzExNnwwO2ZhPXJhKzE2fDA7QT1yYSsyNTV8MDtHPXJhKzI1NHwwO1g9cmErMTEyfDA7bz1yYSsxODR8MDtrYT1yYSsxMDh8MDtjYT1yYSsxMDR8MDtpYT1yYSs4fDA7bGE9cmErMTAwfDA7cz1yYSs5NnwwO249cmErMTgzfDA7JD1yYSs5MnwwO21hPXJhKzE4MnwwO2dhPXJhO0k9cmErODh8MDtVPXJhKzg0fDA7Sj1yYSs4MHwwO049cmErNzZ8MDtPPXJhKzcyfDA7Uz1yYSs2OHwwO009cmErNjR8MDtWPXJhKzYwfDA7cj1yYSsxODF8MDtkYT1yYSsxODB8MDt2PXJhKzU2fDA7Xz1yYSs1MnwwO1o9cmErNDh8MDtQPXJhKzQ0fDA7WT1yYSs0MHwwO2Nbaj4+Ml09YjtjW2s+PjJdPWU7Y1tsPj4yXT1mO2FbbmE+PjBdPTE2O2Nbb2E+PjJdPTA7Y1tYPj4yXT0wO2NbcD4+Ml09MDtpZihhWyhjW2o+PjJdfDApKzI1Pj4wXXwwKXtiPWRbKGNbaj4+Ml18MCkrMjU+PjBdJjI7YVttPj4wXT1iO2lmKGImMjU1KXtlPWNbbD4+Ml18MDtmPShjW2U+PjJdfDApKyg0LTEpJn4oNC0xKTtiPWNbZj4+Ml18MDtjW2U+PjJdPWYrNDtjW1g+PjJdPWJ9YVtoYT4+MF09ZFsoY1tqPj4yXXwwKSsyNT4+MF0mMX1lbHNle2FbaGE+PjBdPTA7YVttPj4wXT0wfWE6d2hpbGUoMSl7Yj1hW2Nbaz4+Ml0+PjBdfDA7Y1txPj4yXT1iO2lmKCFiKXtxYT0yNjg7YnJlYWt9aWYoKGNbcT4+Ml18MCkhPTM3KXtjW3A+PjJdPWNbaz4+Ml07ZG97Y1trPj4yXT0oY1trPj4yXXwwKSsxO2lmKCEoYVtjW2s+PjJdPj4wXXwwKSlicmVha313aGlsZSgoYVtjW2s+PjJdPj4wXXwwKSE9MzcpO3NBKGNbaj4+Ml18MCxjW3A+PjJdfDAsKGNbaz4+Ml18MCktKGNbcD4+Ml18MCl8MCk7aWYoIShhW2Nbaz4+Ml0+PjBdfDApKXtxYT0yNjg7YnJlYWt9fWI9KGNbaz4+Ml18MCkrMXwwO2Nbaz4+Ml09YjtiPWFbYj4+MF18MDtjW3E+PjJdPWI7aWYoIWIpe3FhPTEzO2JyZWFrfWFbSD4+MF09MDthW3k+PjBdPTA7YVt4Pj4wXT0wO2Fbej4+MF09MDthW0Y+PjBdPTA7YVtCPj4wXT0wO2FbdD4+MF09MDtkb3tzd2l0Y2goY1txPj4yXXwwKXtjYXNlIDQ1OnthW0I+PjBdPTE7YnJlYWt9Y2FzZSA0Mzp7YVtGPj4wXT0xO2JyZWFrfWNhc2UgMzI6e2Fbej4+MF09MTticmVha31jYXNlIDM1OnthW3g+PjBdPTE7YnJlYWt9Y2FzZSAzMzp7YVt5Pj4wXT0xO2JyZWFrfWNhc2UgNDg6e2FbSD4+MF09MTticmVha31kZWZhdWx0OmFbdD4+MF09MX1pZihhW3Q+PjBdfDApYnJlYWs7Yj0oY1trPj4yXXwwKSsxfDA7Y1trPj4yXT1iO2I9YVtiPj4wXXwwO2NbcT4+Ml09Yn13aGlsZSgoYnwwKSE9MCk7aWYoKGNbcT4+Ml18MCk9PTQyKXtpZihhW20+PjBdfDApe2I9VU8oY1tYPj4yXXwwKXwwO2NbamE+PjJdPWJ9ZWxzZXtlPWNbbD4+Ml18MDtmPShjW2U+PjJdfDApKyg0LTEpJn4oNC0xKTtiPWNbZj4+Ml18MDtjW2U+PjJdPWYrNDtjW2phPj4yXT1ifWlmKChjW2phPj4yXXwwKTwwKXthW0I+PjBdPTE7Y1tqYT4+Ml09KGNbamE+PjJdfDApPj0tMjE0NzQ4MzY0Nz8wLShjW2phPj4yXXwwKXwwOjB9Yj0oY1trPj4yXXwwKSsxfDA7Y1trPj4yXT1iO2NbcT4+Ml09YVtiPj4wXX1lbHNle2Nba2E+PjJdPTA7d2hpbGUoMSl7Zj1jW2thPj4yXXwwO2lmKCEoKGNbcT4+Ml18MCk+PTQ4PyhjW3E+PjJdfDApPD01NzowKSlicmVhaztjW2thPj4yXT0oZioxMHwwKSsoY1txPj4yXXwwKS00ODtiPShjW2s+PjJdfDApKzF8MDtjW2s+PjJdPWI7Y1txPj4yXT1hW2I+PjBdfWNbamE+PjJdPWYmMjE0NzQ4MzY0N31kbyBpZigoY1txPj4yXXwwKT09NDYpe2I9KGNbaz4+Ml18MCkrMXwwO2Nbaz4+Ml09YjtjW3E+PjJdPWFbYj4+MF07aWYoKGNbcT4+Ml18MCkhPTQyKXtjW2NhPj4yXT0wO3doaWxlKDEpe2Y9Y1tjYT4+Ml18MDtpZighKChjW3E+PjJdfDApPj00OD8oY1txPj4yXXwwKTw9NTc6MCkpYnJlYWs7Y1tjYT4+Ml09KGYqMTB8MCkrKGNbcT4+Ml18MCktNDg7Yj0oY1trPj4yXXwwKSsxfDA7Y1trPj4yXT1iO2NbcT4+Ml09YVtiPj4wXX1jW2FhPj4yXT1mJjIxNDc0ODM2NDc7YnJlYWt9aWYoYVttPj4wXXwwKXtiPVVPKGNbWD4+Ml18MCl8MDtjW2FhPj4yXT1ifWVsc2V7ZT1jW2w+PjJdfDA7Zj0oY1tlPj4yXXwwKSsoNC0xKSZ+KDQtMSk7Yj1jW2Y+PjJdfDA7Y1tlPj4yXT1mKzQ7Y1thYT4+Ml09Yn1iPShjW2s+PjJdfDApKzF8MDtjW2s+PjJdPWI7Y1txPj4yXT1hW2I+PjBdO2lmKChjW2FhPj4yXXwwKTwwKWNbYWE+PjJdPShjW2FhPj4yXXwwKT49LTIxNDc0ODM2NDc/MC0oY1thYT4+Ml18MCl8MDotMX1lbHNlIGNbYWE+PjJdPS0xO3doaWxlKDApO2RvIGlmKChjW3E+PjJdfDApPT0xMDgpe2FbRD4+MF09MTtiPShjW2s+PjJdfDApKzF8MDtjW2s+PjJdPWI7Y1txPj4yXT1hW2I+PjBdO2lmKChjW3E+PjJdfDApPT0xMDgpe2FbRT4+MF09MTtiPShjW2s+PjJdfDApKzF8MDtjW2s+PjJdPWI7Y1txPj4yXT1hW2I+PjBdO2JyZWFrfWVsc2V7YVtFPj4wXT0wO2JyZWFrfX1lbHNle2FbRT4+MF09MDthW0Q+PjBdPTB9d2hpbGUoMCk7Y1tMPj4yXT00NDYxNTthW25hPj4wXT0xNjtjW0s+PjJdPTA7d2hpbGUoMSl7aWYoKGNbSz4+Ml18MCk+PTIzKWJyZWFrO2Y9Y1tLPj4yXXwwO2lmKChjW3E+PjJdfDApPT0oYVs0NDYxNSsoKGNbSz4+Ml18MCkqNnwwKT4+MF18MCkpe3FhPTU2O2JyZWFrfWNbSz4+Ml09ZisxfWlmKChxYXwwKT09NTYpe3FhPTA7Y1tMPj4yXT00NDYxNSsoZio2fDApO2lmKChkW2hhPj4wXXwwKT09MD8oZFsoY1tMPj4yXXwwKSsyPj4wXSYyfDApIT0wOjApe3FhPTI2ODticmVha31hW25hPj4wXT1hWyhjW0w+PjJdfDApKzM+PjBdfDB9YjpkbyBzd2l0Y2goZFtuYT4+MF18MCl7Y2FzZSAxMzp7YVtFPj4wXT0wO2FbRD4+MF09MTtxYT02MjticmVha31jYXNlIDA6Y2FzZSAxNTp7cWE9NjI7YnJlYWt9Y2FzZSAzOmNhc2UgMjpjYXNlIDE6e2lmKGFbbT4+MF18MCloW2VhPj4zXT0rVk8oY1tYPj4yXXwwKTtlbHNle2I9Y1tsPj4yXXwwO2U9KGNbYj4+Ml18MCkrKDgtMSkmfig4LTEpO2c9K2hbZT4+M107Y1tiPj4yXT1lKzg7aFtlYT4+M109Z31pZigoY1thYT4+Ml18MCk8MCljW2FhPj4yXT02O2RvIGlmKCEoK2hbZWE+PjNdPDAuMCkpe2lmKGFbRj4+MF18MCl7YVtiYT4+MF09NDM7YnJlYWt9aWYoYVt6Pj4wXXwwKXthW2JhPj4wXT0zMjticmVha31lbHNle2FbYmE+PjBdPTA7YnJlYWt9fWVsc2V7aFtlYT4+M109LStoW2VhPj4zXTthW2JhPj4wXT00NX13aGlsZSgwKTtpZigoZFtuYT4+MF18MCk9PTMmKGNbYWE+PjJdfDApPjApY1thYT4+Ml09KGNbYWE+PjJdfDApKy0xO2NbSz4+Ml09Y1thYT4+Ml0mNDA5NTtoW2ZhPj4zXT0uNTt3aGlsZSgxKXtpZigoY1tLPj4yXXwwKTw9MClicmVhaztjW0s+PjJdPShjW0s+PjJdfDApKy0xO2hbZmE+PjNdPStoW2ZhPj4zXSouMX1pZigoZFtuYT4+MF18MCk9PTEpaFtlYT4+M109K2hbZWE+PjNdKyAraFtmYT4+M107Y1t3Pj4yXT0wO2lmKHFHKCtoW2VhPj4zXSl8MCl7Y1twPj4yXT00NDgwMjtjW1E+PjJdPTM7YnJlYWsgYn1pZigraFtlYT4+M10+MC4wKXtoW2dhPj4zXT0xLjA7d2hpbGUoMSl7aWYoISgraFtlYT4+M10+PStoW2dhPj4zXSoxLmUrMTAwPyhjW3c+PjJdfDApPD0zNTA6MCkpYnJlYWs7aFtnYT4+M109K2hbZ2E+PjNdKjEuZSsxMDA7Y1t3Pj4yXT0oY1t3Pj4yXXwwKSsxMDB9d2hpbGUoMSl7aWYoISgraFtlYT4+M10+PStoW2dhPj4zXSoxLjBlMTA/KGNbdz4+Ml18MCk8PTM1MDowKSlicmVhaztoW2dhPj4zXT0raFtnYT4+M10qMS4wZTEwO2Nbdz4+Ml09KGNbdz4+Ml18MCkrMTB9d2hpbGUoMSl7Zz0raFtnYT4+M107aWYoISgraFtlYT4+M10+PStoW2dhPj4zXSoxMC4wPyhjW3c+PjJdfDApPD0zNTA6MCkpYnJlYWs7aFtnYT4+M109ZyoxMC4wO2Nbdz4+Ml09KGNbdz4+Ml18MCkrMX1oW2VhPj4zXT0raFtlYT4+M10vZzt3aGlsZSgxKXtpZighKCtoW2VhPj4zXTwxLjBlLTA4KSlicmVhaztoW2VhPj4zXT0raFtlYT4+M10qMS4wZTg7Y1t3Pj4yXT0oY1t3Pj4yXXwwKS04fXdoaWxlKDEpe2lmKCEoK2hbZWE+PjNdPDEuMCkpYnJlYWs7aFtlYT4+M109K2hbZWE+PjNdKjEwLjA7Y1t3Pj4yXT0oY1t3Pj4yXXwwKSstMX1pZigoY1t3Pj4yXXwwKT4zNTApe2NbcD4+Ml09bzthW28+PjBdPWFbYmE+PjBdfDA7Yj1vKygoYVtiYT4+MF18MCkhPTAmMSl8MDthW2I+PjBdPWFbNDQ4MDZdfDA7YVtiKzE+PjBdPWFbNDQ4MDddfDA7YVtiKzI+PjBdPWFbNDQ4MDhdfDA7YVtiKzM+PjBdPWFbNDQ4MDldfDA7Y1tRPj4yXT0zKygoYVtiYT4+MF18MCkhPTAmMSk7YnJlYWsgYn19Y1twPj4yXT1vO2lmKChkW25hPj4wXXwwKSE9MT8oaFtlYT4+M109K2hbZWE+PjNdKyAraFtmYT4+M10sK2hbZWE+PjNdPj0xMC4wKTowKXtoW2VhPj4zXT0raFtlYT4+M10qLjE7Y1t3Pj4yXT0oY1t3Pj4yXXwwKSsxfWM6ZG8gaWYoKGRbbmE+PjBdfDApPT0zKXthW0c+PjBdPSgoYVt4Pj4wXXwwKSE9MF4xKSYxO2RvIGlmKChjW3c+PjJdfDApPj0tNCl7aWYoKGNbdz4+Ml18MCk+KGNbYWE+PjJdfDApKWJyZWFrO2NbYWE+PjJdPShjW2FhPj4yXXwwKS0oY1t3Pj4yXXwwKTthW25hPj4wXT0xO2JyZWFrIGN9d2hpbGUoMCk7YVtuYT4+MF09Mn1lbHNlIGFbRz4+MF09YVt5Pj4wXXwwO3doaWxlKDApO2lmKChkW25hPj4wXXwwKT09MiljW3U+PjJdPTA7ZWxzZSBjW3U+PjJdPWNbdz4+Ml07Yj0oY1t1Pj4yXXwwKT4wP2NbdT4+Ml18MDowO2U9Y1thYT4+Ml18MDtlPVJSKGJ8MCwoKGJ8MCk8MCk8PDMxPj4zMXwwLGV8MCwoKGV8MCk8MCk8PDMxPj4zMXwwKXwwO2I9Y1tqYT4+Ml18MDtiPVJSKGV8MCxDfDAsYnwwLCgoYnwwKTwwKTw8MzE+PjMxfDApfDA7ZT1DO2lmKChlfDApPjB8KGV8MCk9PTAmYj4+PjA+NTU/KGI9KGNbdT4+Ml18MCk+MD9jW3U+PjJdfDA6MCxlPWNbYWE+PjJdfDAsZT1SUihifDAsKChifDApPDApPDwzMT4+MzF8MCxlfDAsKChlfDApPDApPDwzMT4+MzF8MCl8MCxiPWNbamE+PjJdfDAsYj1SUihlfDAsQ3wwLGJ8MCwoKGJ8MCk8MCk8PDMxPj4zMXwwKXwwLGI9UlIoYnwwLEN8MCwxNSwwKXwwLGI9JGYoYixDKXwwLGNbb2E+PjJdPWIsY1twPj4yXT1iLChjW3A+PjJdfDApPT0wKTowKXtxYT0xNjE7YnJlYWsgYX1jW3BhPj4yXT1jW3A+PjJdO2NbVz4+Ml09MTYrKChkW3k+PjBdfDApKjEwfDApO2FbQT4+MF09KChjW2FhPj4yXXwwKT4wPzE6MCl8ZFt4Pj4wXXxkW3k+PjBdO2lmKGFbYmE+PjBdfDApe2U9YVtiYT4+MF18MDtiPWNbcD4+Ml18MDtjW3A+PjJdPWIrMTthW2I+PjBdPWV9ZDpkbyBpZigoY1t1Pj4yXXwwKTwwKXtiPWNbcD4+Ml18MDtjW3A+PjJdPWIrMTthW2I+PjBdPTQ4fWVsc2Ugd2hpbGUoMSl7aWYoKGNbdT4+Ml18MCk8MClicmVhayBkO2U9V08oZWEsVyl8MDtiPWNbcD4+Ml18MDtjW3A+PjJdPWIrMTthW2I+PjBdPWU7Y1t1Pj4yXT0oY1t1Pj4yXXwwKSstMX13aGlsZSgwKTtpZihhW0E+PjBdfDApe2I9Y1twPj4yXXwwO2NbcD4+Ml09YisxO2FbYj4+MF09NDZ9Y1t1Pj4yXT0oY1t1Pj4yXXwwKSsxO3doaWxlKDEpe2lmKChjW3U+PjJdfDApPj0wKWJyZWFrO2I9Y1twPj4yXXwwO2NbcD4+Ml09YisxO2FbYj4+MF09NDg7Y1thYT4+Ml09KGNbYWE+PjJdfDApKy0xO2NbdT4+Ml09KGNbdT4+Ml18MCkrMX13aGlsZSgxKXtiPWNbYWE+PjJdfDA7Y1thYT4+Ml09YistMTtpZigoYnwwKTw9MClicmVhaztlPVdPKGVhLFcpfDA7Yj1jW3A+PjJdfDA7Y1twPj4yXT1iKzE7YVtiPj4wXT1lfWRvIGlmKGRbRz4+MF18MCl7aWYoIShkW0E+PjBdfDApKWJyZWFrO3doaWxlKDEpe2Y9KGNbcD4+Ml18MCkrLTF8MDtpZigoYVsoY1twPj4yXXwwKSstMT4+MF18MCkhPTQ4KWJyZWFrO2NbcD4+Ml09ZjthW2Y+PjBdPTB9aWYoKGFbZj4+MF18MCkhPTQ2KWJyZWFrO2Y9Y1twPj4yXXwwO2lmKGFbeT4+MF18MCl7Y1twPj4yXT1mKzE7YVtmPj4wXT00ODticmVha31lbHNle2I9ZistMXwwO2NbcD4+Ml09YjthW2I+PjBdPTA7YnJlYWt9fXdoaWxlKDApO2lmKChkW25hPj4wXXwwKT09Mil7Zj1hWzQ0NzYyKyhkWyhjW0w+PjJdfDApKzQ+PjBdfDApPj4wXXwwO2I9Y1twPj4yXXwwO2NbcD4+Ml09YisxO2FbYj4+MF09ZjtiPShjW3c+PjJdfDApPDA7Zj1jW3A+PjJdfDA7Y1twPj4yXT1mKzE7aWYoYil7YVtmPj4wXT00NTtjW3c+PjJdPTAtKGNbdz4+Ml18MCl9ZWxzZSBhW2Y+PjBdPTQzO2lmKChjW3c+PjJdfDApPj0xMDApe2U9KChjW3c+PjJdfDApLzEwMHwwKSs0OCYyNTU7Yj1jW3A+PjJdfDA7Y1twPj4yXT1iKzE7YVtiPj4wXT1lO2Nbdz4+Ml09KGNbdz4+Ml18MCklMTAwfDB9Yj0oKGNbdz4+Ml18MCkvMTB8MCkrNDgmMjU1O2U9Y1twPj4yXXwwO2NbcD4+Ml09ZSsxO2FbZT4+MF09YjtlPSgoY1t3Pj4yXXwwKSUxMHwwKSs0OCYyNTU7Yj1jW3A+PjJdfDA7Y1twPj4yXT1iKzE7YVtiPj4wXT1lfWFbY1twPj4yXT4+MF09MDtjW1E+PjJdPShjW3A+PjJdfDApLShjW3BhPj4yXXwwKTtjW3A+PjJdPWNbcGE+PjJdO2lmKChkW0g+PjBdfDApPT0wfChhW0I+PjBdfDApIT0wKWJyZWFrIGI7aWYoKGNbUT4+Ml18MCk+PShjW2phPj4yXXwwKSlicmVhayBiO2NbVT4+Ml09KGNbamE+PjJdfDApLShjW1E+PjJdfDApO2NbST4+Ml09Y1tqYT4+Ml07d2hpbGUoMSl7aWYoKGNbST4+Ml18MCk8KGNbVT4+Ml18MCkpYnJlYWs7YVsoY1twPj4yXXwwKSsoY1tJPj4yXXwwKT4+MF09YVsoY1twPj4yXXwwKSsoKGNbST4+Ml18MCktKGNbVT4+Ml18MCkpPj4wXXwwO2NbST4+Ml09KGNbST4+Ml18MCkrLTF9Y1tJPj4yXT0oYVtiYT4+MF18MCkhPTAmMTt3aGlsZSgxKXtiPWNbVT4+Ml18MDtjW1U+PjJdPWIrLTE7aWYoIWIpYnJlYWs7Yj1jW0k+PjJdfDA7Y1tJPj4yXT1iKzE7YVsoY1twPj4yXXwwKStiPj4wXT00OH1jW1E+PjJdPWNbamE+PjJdO2JyZWFrfWNhc2UgNDp7aWYoIShhW20+PjBdfDApKXtlPWNbKGNbaj4+Ml18MCkrMTI+PjJdfDA7Zj1jW2w+PjJdfDA7c2E9KGNbZj4+Ml18MCkrKDQtMSkmfig0LTEpO2I9Y1tzYT4+Ml18MDtjW2Y+PjJdPXNhKzQ7Y1tiPj4yXT1lfWNbamE+PjJdPTA7Y1tRPj4yXT0wO2JyZWFrfWNhc2UgNzp7YVtvPj4wXT0zNztjW3A+PjJdPW87Y1tRPj4yXT0xO2JyZWFrfWNhc2UgODp7aWYoYVttPj4wXXwwKXtjW3A+PjJdPVhPKGNbWD4+Ml18MCl8MDtpZihjW3A+PjJdfDApZj1hW2NbcD4+Ml0+PjBdfDA7ZWxzZSBmPTA7Y1txPj4yXT1mfWVsc2V7Yj1jW2w+PjJdfDA7ZT0oY1tiPj4yXXwwKSsoNC0xKSZ+KDQtMSk7c2E9Y1tlPj4yXXwwO2NbYj4+Ml09ZSs0O2NbcT4+Ml09c2F9aWYoKGNbYWE+PjJdfDApPjEpe2NbamE+PjJdPShjW2phPj4yXXwwKS0oKGNbYWE+PjJdfDApLTEpO2lmKCEoKGNbamE+PjJdfDApPD0xfChhW0I+PjBdfDApIT0wKSl7WU8oY1tqPj4yXXwwLChjW2phPj4yXXwwKS0xfDAsMzIpO2NbamE+PjJdPTB9WU8oY1tqPj4yXXwwLChjW2FhPj4yXXwwKS0xfDAsY1txPj4yXSYyNTUpfWNbUT4+Ml09MTthW28+PjBdPWNbcT4+Ml07Y1twPj4yXT1vO2JyZWFrfWNhc2UgNjpjYXNlIDU6e2lmKGFbbT4+MF18MCl7Y1twPj4yXT1YTyhjW1g+PjJdfDApfDA7YVtuYT4+MF09NX1lbHNle2I9Y1tsPj4yXXwwO2U9KGNbYj4+Ml18MCkrKDQtMSkmfig0LTEpO3NhPWNbZT4+Ml18MDtjW2I+PjJdPWUrNDtjW3A+PjJdPXNhfWlmKGNbcD4+Ml18MCl7aWYoKGRbbmE+PjBdfDApPT02KWNbb2E+PjJdPWNbcD4+Ml19ZWxzZSBjW3A+PjJdPTE4NDAyO2lmKChjW2FhPj4yXXwwKTwwKXtjW1E+PjJdPUpmKGNbcD4+Ml18MCl8MDticmVhayBifWNbUT4+Ml09MDt3aGlsZSgxKXtpZigoY1tRPj4yXXwwKT49KGNbYWE+PjJdfDApKWJyZWFrIGI7aWYoIShhWyhjW3A+PjJdfDApKyhjW1E+PjJdfDApPj4wXXwwKSlicmVhayBiO2NbUT4+Ml09KGNbUT4+Ml18MCkrMX19Y2FzZSAxNDpjYXNlIDEwOmNhc2UgOTp7YVtkYT4+MF09KGRbbmE+PjBdfDApPT0xND8zNDozOTtpZihhW20+PjBdfDApY1t2Pj4yXT1YTyhjW1g+PjJdfDApfDA7ZWxzZXtiPWNbbD4+Ml18MDtlPShjW2I+PjJdfDApKyg0LTEpJn4oNC0xKTtzYT1jW2U+PjJdfDA7Y1tiPj4yXT1lKzQ7Y1t2Pj4yXT1zYX1jW00+PjJdPShjW3Y+PjJdfDApPT0wJjE7aWYoY1tNPj4yXXwwKWNbdj4+Ml09KGRbbmE+PjBdfDApPT0xMD8zOTY5MTo0NDgxMDtjW08+PjJdPWNbYWE+PjJdO2NbUz4+Ml09MDtjW0o+PjJdPTA7d2hpbGUoMSl7aWYoIShjW08+PjJdfDApKWJyZWFrO3NhPWFbKGNbdj4+Ml18MCkrKGNbSj4+Ml18MCk+PjBdfDA7YVtyPj4wXT1zYTtpZighKHNhPDwyND4+MjQpKWJyZWFrO2lmKChhW3I+PjBdfDApPT0oYVtkYT4+MF18MCkpY1tTPj4yXT0oY1tTPj4yXXwwKSsxO2NbSj4+Ml09KGNbSj4+Ml18MCkrMTtjW08+PjJdPShjW08+PjJdfDApKy0xfWlmKGNbTT4+Ml18MClmPTA7ZWxzZSBmPShkW25hPj4wXXwwKT09MTA7Y1tWPj4yXT1mJjE7Y1tTPj4yXT0oY1tTPj4yXXwwKSsoKGNbSj4+Ml18MCkrMyk7aWYoKGNbUz4+Ml18MCk+NzApe3NhPWNbUz4+Ml18MDtzYT0kZihzYSwoKHNhfDApPDApPDwzMT4+MzEpfDA7Y1tvYT4+Ml09c2E7Y1twPj4yXT1zYTtpZighKGNbcD4+Ml18MCkpe3FhPTI0MTticmVhayBhfX1lbHNlIGNbcD4+Ml09bztjW04+PjJdPTA7aWYoY1tWPj4yXXwwKXtiPWFbZGE+PjBdfDA7c2E9Y1tOPj4yXXwwO2NbTj4+Ml09c2ErMTthWyhjW3A+PjJdfDApK3NhPj4wXT1ifWNbTz4+Ml09Y1tKPj4yXTtjW0o+PjJdPTA7d2hpbGUoMSl7aWYoKGNbSj4+Ml18MCk+PShjW08+PjJdfDApKWJyZWFrO2I9YVsoY1t2Pj4yXXwwKSsoY1tKPj4yXXwwKT4+MF18MDthW3I+PjBdPWI7c2E9Y1tOPj4yXXwwO2NbTj4+Ml09c2ErMTthWyhjW3A+PjJdfDApK3NhPj4wXT1iO2lmKChhW3I+PjBdfDApPT0oYVtkYT4+MF18MCkpe2I9YVtyPj4wXXwwO3NhPWNbTj4+Ml18MDtjW04+PjJdPXNhKzE7YVsoY1twPj4yXXwwKStzYT4+MF09Yn1jW0o+PjJdPShjW0o+PjJdfDApKzF9aWYoY1tWPj4yXXwwKXtiPWFbZGE+PjBdfDA7c2E9Y1tOPj4yXXwwO2NbTj4+Ml09c2ErMTthWyhjW3A+PjJdfDApK3NhPj4wXT1ifWFbKGNbcD4+Ml18MCkrKGNbTj4+Ml18MCk+PjBdPTA7Y1tRPj4yXT1jW04+PjJdO2JyZWFrfWNhc2UgMTE6e2I9Y1tsPj4yXXwwO2U9KGNbYj4+Ml18MCkrKDQtMSkmfig0LTEpO3NhPWNbZT4+Ml18MDtjW2I+PjJdPWUrNDtjW18+PjJdPXNhO2lmKChjW18+PjJdfDApIT0wPyhjWyhjW18+PjJdfDApKzQ+PjJdfDApIT0wOjApc0EoY1tqPj4yXXwwLGNbY1tfPj4yXT4+Ml18MCxjWyhjW18+PjJdfDApKzQ+PjJdfDApO2NbamE+PjJdPTA7Y1tRPj4yXT0wO2JyZWFrfWNhc2UgMTI6e2U9Y1tsPj4yXXwwO3NhPShjW2U+PjJdfDApKyg0LTEpJn4oNC0xKTtiPWNbc2E+PjJdfDA7Y1tlPj4yXT1zYSs0O2NbWj4+Ml09YjtiPWNbbD4+Ml18MDtlPShjW2I+PjJdfDApKyg0LTEpJn4oNC0xKTtzYT1jW2U+PjJdfDA7Y1tiPj4yXT1lKzQ7Y1tQPj4yXT1zYTtjW1k+PjJdPShjW1o+PjJdfDApKzgrKChjW1A+PjJdfDApKjcyfDApO2lmKGNbKGNbWT4+Ml18MCkrND4+Ml18MCl7ZEUoY1tqPj4yXXwwLGNbKGNbWT4+Ml18MCkrND4+Ml18MCk7c0EoY1tqPj4yXXwwLDQ0NDMzLDEpfWRFKGNbaj4+Ml18MCxjWyhjW1k+PjJdfDApKzg+PjJdfDApO2NbamE+PjJdPTA7Y1tRPj4yXT0wO2JyZWFrfWRlZmF1bHQ6e3FhPTI2ODticmVhayBhfX13aGlsZSgwKTtpZigocWF8MCk9PTYyKXtxYT0wO2Y9KGFbbT4+MF18MCkhPTA7ZG8gaWYoZFsoY1tMPj4yXXwwKSsyPj4wXSYxKXtkbyBpZighZil7Zj1jW2w+PjJdfDA7aWYoYVtFPj4wXXwwKXtzYT0oY1tmPj4yXXwwKSsoOC0xKSZ+KDgtMSk7Yj1zYTtlPWNbYj4+Ml18MDtiPWNbYis0Pj4yXXwwO2NbZj4+Ml09c2ErODtzYT1pYTtjW3NhPj4yXT1lO2Nbc2ErND4+Ml09YjticmVha31lbHNle3NhPShjW2Y+PjJdfDApKyg0LTEpJn4oNC0xKTtiPWNbc2E+PjJdfDA7Y1tmPj4yXT1zYSs0O3NhPWlhO2Nbc2E+PjJdPWI7Y1tzYSs0Pj4yXT0oKGJ8MCk8MCk8PDMxPj4zMTticmVha319ZWxzZXtiPVVPKGNbWD4+Ml18MCl8MDtzYT1pYTtjW3NhPj4yXT1iO2Nbc2ErND4+Ml09Q313aGlsZSgwKTtlPWlhO2Y9Y1tlPj4yXXwwO2U9Y1tlKzQ+PjJdfDA7aWYoKGNbaWErND4+Ml18MCk8MCl7aWYoKGZ8MCk9PTAmKGV8MCk9PS0yMTQ3NDgzNjQ4KXtzYT1SO2Nbc2E+PjJdPTA7Y1tzYSs0Pj4yXT0tMjE0NzQ4MzY0OH1lbHNle2I9aWE7Yj1RUigwLDAsY1tiPj4yXXwwLGNbYis0Pj4yXXwwKXwwO3NhPVI7Y1tzYT4+Ml09YjtjW3NhKzQ+PjJdPUN9YVtiYT4+MF09NDU7YnJlYWt9c2E9UjtjW3NhPj4yXT1mO2Nbc2ErND4+Ml09ZTtpZihhW0Y+PjBdfDApe2FbYmE+PjBdPTQzO2JyZWFrfWlmKGFbej4+MF18MCl7YVtiYT4+MF09MzI7YnJlYWt9ZWxzZXthW2JhPj4wXT0wO2JyZWFrfX1lbHNle2RvIGlmKCFmKXtmPWNbbD4+Ml18MDtpZihhW0U+PjBdfDApe3NhPShjW2Y+PjJdfDApKyg4LTEpJn4oOC0xKTtiPXNhO2U9Y1tiPj4yXXwwO2I9Y1tiKzQ+PjJdfDA7Y1tmPj4yXT1zYSs4O3NhPVI7Y1tzYT4+Ml09ZTtjW3NhKzQ+PjJdPWI7YnJlYWt9ZWxzZXtzYT0oY1tmPj4yXXwwKSsoNC0xKSZ+KDQtMSk7Yj1jW3NhPj4yXXwwO2NbZj4+Ml09c2ErNDtzYT1SO2Nbc2E+PjJdPWI7Y1tzYSs0Pj4yXT0wO2JyZWFrfX1lbHNle2I9VU8oY1tYPj4yXXwwKXwwO3NhPVI7Y1tzYT4+Ml09YjtjW3NhKzQ+PjJdPUN9d2hpbGUoMCk7YVtiYT4+MF09MH13aGlsZSgwKTtzYT1SO2lmKChjW3NhPj4yXXwwKT09MCYoY1tzYSs0Pj4yXXwwKT09MClhW3g+PjBdPTA7aWYoKGRbSD4+MF18MCkhPTA/KGNbYWE+PjJdfDApPCgoY1tqYT4+Ml18MCktKChhW2JhPj4wXXwwKSE9MCYxKXwwKTowKWNbYWE+PjJdPShjW2phPj4yXXwwKS0oKGFbYmE+PjBdfDApIT0wJjEpO2lmKChjW2FhPj4yXXwwKT49NjApe2NbVD4+Ml09KGNbYWE+PjJdfDApKzEwO3NhPWNbVD4+Ml18MDtzYT0kZihzYSwoKHNhfDApPDApPDwzMT4+MzEpfDA7Y1tvYT4+Ml09c2E7Y1twYT4+Ml09c2E7aWYoIShjW3BhPj4yXXwwKSl7cWE9OTI7YnJlYWt9fWVsc2V7Y1tUPj4yXT03MDtjW3BhPj4yXT1vfWNbcD4+Ml09KGNbcGE+PjJdfDApKygoY1tUPj4yXXwwKS0xKTtpZigoZFtuYT4+MF18MCk9PTE1KXtzYT1SO3NhPWNTKGNbc2E+PjJdfDAsY1tzYSs0Pj4yXXwwLDEwLDApfDA7Y1tsYT4+Ml09c2E7aWYoISgoY1tsYT4+Ml18MCk8ND8oc2E9UixzYT1iUyhjW3NhPj4yXXwwLGNbc2ErND4+Ml18MCwxMCwwKXwwLHNhPWNTKHNhfDAsQ3wwLDEwLDApfDAsISgoc2F8MCk9PTEmKEN8MCk9PTApKTowKSljW2xhPj4yXT0wO3NhPWFbNDQ3NTMrKChjW2xhPj4yXTw8MSkrMSk+PjBdfDA7Yj0oY1twPj4yXXwwKSstMXwwO2NbcD4+Ml09YjthW2I+PjBdPXNhO2I9YVs0NDc1MysoY1tsYT4+Ml08PDEpPj4wXXwwO3NhPShjW3A+PjJdfDApKy0xfDA7Y1twPj4yXT1zYTthW3NhPj4wXT1ifWNbcz4+Ml09NDQ3NjIrKGRbKGNbTD4+Ml18MCkrND4+MF18MCk7YVtuPj4wXT1hWyhjW0w+PjJdfDApKzE+PjBdfDA7ZG97c2E9UjtzYT1jUyhjW3NhPj4yXXwwLGNbc2ErND4+Ml18MCxkW24+PjBdfDAsMCl8MDtzYT1hWyhjW3M+PjJdfDApK3NhPj4wXXwwO2I9KGNbcD4+Ml18MCkrLTF8MDtjW3A+PjJdPWI7YVtiPj4wXT1zYTtiPVI7Yj1iUyhjW2I+PjJdfDAsY1tiKzQ+PjJdfDAsZFtuPj4wXXwwLDApfDA7c2E9UjtjW3NhPj4yXT1iO2Nbc2ErND4+Ml09QztzYT1SO2I9Y1tzYSs0Pj4yXXwwfXdoaWxlKGI+Pj4wPjB8KGJ8MCk9PTAmKGNbc2E+PjJdfDApPj4+MD4wKTtjW1E+PjJdPShjW3BhPj4yXXwwKSsoKGNbVD4+Ml18MCktMSktKGNbcD4+Ml18MCk7Y1tLPj4yXT0oY1thYT4+Ml18MCktKGNbUT4+Ml18MCk7d2hpbGUoMSl7aWYoKGNbSz4+Ml18MCk8PTApYnJlYWs7c2E9KGNbcD4+Ml18MCkrLTF8MDtjW3A+PjJdPXNhO2Fbc2E+PjBdPTQ4O2NbSz4+Ml09KGNbSz4+Ml18MCkrLTF9aWYoYVtiYT4+MF18MCl7Yj1hW2JhPj4wXXwwO3NhPShjW3A+PjJdfDApKy0xfDA7Y1twPj4yXT1zYTthW3NhPj4wXT1ifWU6ZG8gaWYoKGRbeD4+MF18MCkhPTA/KGRbKGNbTD4+Ml18MCkrNT4+MF18MCkhPTA6MCl7Y1skPj4yXT00NDc5NSsoZFsoY1tMPj4yXXwwKSs1Pj4wXXwwKTt3aGlsZSgxKXtzYT1hW2NbJD4+Ml0+PjBdfDA7YVttYT4+MF09c2E7aWYoIShzYTw8MjQ+PjI0KSlicmVhayBlO2I9YVttYT4+MF18MDtzYT0oY1twPj4yXXwwKSstMXwwO2NbcD4+Ml09c2E7YVtzYT4+MF09YjtjWyQ+PjJdPShjWyQ+PjJdfDApKzF9fXdoaWxlKDApO2NbUT4+Ml09KGNbcGE+PjJdfDApKygoY1tUPj4yXXwwKS0xKS0oY1twPj4yXXwwKX1jW2phPj4yXT0oY1tqYT4+Ml18MCktKGNbUT4+Ml18MCk7aWYoISgoY1tqYT4+Ml18MCk8PTB8KGFbQj4+MF18MCkhPTApKVlPKGNbaj4+Ml18MCxjW2phPj4yXXwwLDMyKTtzQShjW2o+PjJdfDAsY1twPj4yXXwwLGNbUT4+Ml18MCk7aWYoKGNbamE+PjJdfDApPjA/KGRbQj4+MF18MCkhPTA6MClZTyhjW2o+PjJdfDAsY1tqYT4+Ml18MCwzMik7aWYoY1tvYT4+Ml18MCl7VGYoY1tjW2o+PjJdPj4yXXwwLGNbb2E+PjJdfDApO2Nbb2E+PjJdPTB9Y1trPj4yXT0oY1trPj4yXXwwKSsxfWlmKChxYXwwKT09MTMpe3NBKGNbaj4+Ml18MCw0NDYxMywxKTtpPXJhO3JldHVybn1lbHNlIGlmKChxYXwwKT09OTIpe3dBKGNbaj4+Ml18MCwxKTtpPXJhO3JldHVybn1lbHNlIGlmKChxYXwwKT09MTYxKXt3QShjW2o+PjJdfDAsMSk7aT1yYTtyZXR1cm59ZWxzZSBpZigocWF8MCk9PTI0MSl7d0EoY1tqPj4yXXwwLDEpO2k9cmE7cmV0dXJufWVsc2UgaWYoKHFhfDApPT0yNjgpe2k9cmE7cmV0dXJufX1mdW5jdGlvbiBmZyhiKXtiPWJ8MDt2YXIgZT0wLGY9MDtmPWk7aT1pKzE2fDA7ZT1mO2NbZT4+Ml09YjtkbyBpZigoKGNbKGNbZT4+Ml18MCkrOD4+Ml18MCkhPTA/KGFbKGNbKGNbZT4+Ml18MCkrOD4+Ml18MCkrKGNbKGNbZT4+Ml18MCkrMTI+PjJdfDApPj4wXT0wLChjWyhjW2U+PjJdfDApKzIwPj4yXXwwKT4+PjA+MCk6MCk/KChkWyhjW2U+PjJdfDApKzI1Pj4wXXwwKSY0fDApPT0wOjApe2I9Q2goY1tjW2U+PjJdPj4yXXwwLChjWyhjW2U+PjJdfDApKzEyPj4yXXwwKSsxfDAsMCl8MDtjWyhjW2U+PjJdfDApKzg+PjJdPWI7Yj1jW2U+PjJdfDA7aWYoY1soY1tlPj4yXXwwKSs4Pj4yXXwwKXtUUihjW2IrOD4+Ml18MCxjWyhjW2U+PjJdfDApKzQ+PjJdfDAsKGNbKGNbZT4+Ml18MCkrMTI+PjJdfDApKzF8MCl8MDtiPShjW2U+PjJdfDApKzI1fDA7YVtiPj4wXT1kW2I+PjBdfDB8NDticmVha31lbHNle3dBKGIsMSk7YnJlYWt9fXdoaWxlKDApO2k9ZjtyZXR1cm4gY1soY1tlPj4yXXwwKSs4Pj4yXXwwfWZ1bmN0aW9uIGdnKGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MDtlPWk7aT1pKzI1NnwwO2g9ZSszNnwwO2o9ZSszMnwwO2Y9ZSsyOHwwO2c9ZTtjW2g+PjJdPWE7Y1tqPj4yXT1iO2NbZj4+Ml09ZDtkZyhnLDAsZSs0MHwwLDIxMCwwKTtlZyhnLGNbaj4+Ml18MCxjW2Y+PjJdfDApO2Y9Y1s2Nl18MDtkPWNbNjddfDA7YT1jW2g+PjJdfDA7Yj1mZyhnKXwwO1ViW2YmMjU1XShkLGEsYik7aT1lO3JldHVybn1mdW5jdGlvbiBoZyhhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MDtlPWk7aT1pKzE2fDA7aD1lKzh8MDtnPWUrNHwwO2Y9ZTtjW2g+PjJdPWE7Y1tnPj4yXT1iO2NbZj4+Ml09ZDtkPU9iW2NbKGNbaD4+Ml18MCkrNTY+PjJdJjI1NV0oY1toPj4yXXwwLGNbZz4+Ml18MCxjW2Y+PjJdfDApfDA7aT1lO3JldHVybiBkfDB9ZnVuY3Rpb24gaWcoYSxiKXthPWF8MDtiPWJ8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTA7aD1pO2k9aSszMnwwO2s9aCsxNnwwO2o9aCsxMnwwO2U9aCs4fDA7Zj1oKzR8MDtnPWg7Y1trPj4yXT1hO2Nbaj4+Ml09YjtjW2U+PjJdPWNbaz4+Ml07Y1tmPj4yXT1jW2o+PjJdO3doaWxlKDEpe2NbZz4+Ml09KGRbMTc2MTMrKGRbY1tlPj4yXT4+MF18MCk+PjBdfDApLShkWzE3NjEzKyhkW2NbZj4+Ml0+PjBdfDApPj4wXXwwKTtpZihjW2c+PjJdfDApe2U9NTticmVha31pZighKGRbY1tlPj4yXT4+MF18MCkpe2U9NTticmVha31jW2U+PjJdPShjW2U+PjJdfDApKzE7Y1tmPj4yXT0oY1tmPj4yXXwwKSsxfWlmKChlfDApPT01KXtpPWg7cmV0dXJuIGNbZz4+Ml18MH1yZXR1cm4gMH1mdW5jdGlvbiBqZyhhLGIsZCxlKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTA7bD1pO2k9aSszMnwwO2Y9bCsyOHwwO2c9bCsyNHwwO2g9bCsyMHwwO2s9bCsxNnwwO2o9bDtjW2Y+PjJdPWE7Y1tnPj4yXT1iO2NbaD4+Ml09ZDtjWyhjW2Y+PjJdfDApKzUyPj4yXT1jW2c+PjJdO1NKKGNbZj4+Ml18MCxjW2c+PjJdfDApO2E9Y1tmPj4yXXwwO2lmKCEoY1toPj4yXXwwKSl7bGcoYSxjW2c+PjJdfDApO2k9bDtyZXR1cm59aWYoKGNbYSsyNDQ+PjJdfDApPT0wPyhnPVpoKGNbZj4+Ml18MCl8MCxjWyhjW2Y+PjJdfDApKzI0ND4+Ml09ZywoZ3wwKT09MCk6MCl7aT1sO3JldHVybn1jW2o+PjJdPWU7Y1trPj4yXT1veChjW2Y+PjJdfDAsY1toPj4yXXwwLGopfDA7X2goY1soY1tmPj4yXXwwKSsyNDQ+PjJdfDAsLTEsY1trPj4yXXwwLDEsMTcwKTtpPWw7cmV0dXJufWZ1bmN0aW9uIGtnKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MDtmPWk7aT1pKzE2fDA7ZD1mO2U9Zis4fDA7Zz1kO2NbZz4+Ml09YTtjW2crND4+Ml09YjtiPWQ7Y1tlPj4yXT0kZihjW2I+PjJdfDAsY1tiKzQ+PjJdfDApfDA7aWYoIShjW2U+PjJdfDApKXtnPWNbZT4+Ml18MDtpPWY7cmV0dXJuIGd8MH1WUihjW2U+PjJdfDAsMCxjW2Q+PjJdfDApfDA7Zz1jW2U+PjJdfDA7aT1mO3JldHVybiBnfDB9ZnVuY3Rpb24gbGcoYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTA7Zj1pO2k9aSsxNnwwO2Q9Zis0fDA7ZT1mO2NbZD4+Ml09YTtjW2U+PjJdPWI7Y1soY1tkPj4yXXwwKSs1Mj4+Ml09Y1tlPj4yXTtpZigoY1tlPj4yXXwwKT09MD8oY1soY1tkPj4yXXwwKSsyNDQ+PjJdfDApPT0wOjApe2k9ZjtyZXR1cm59dE4oY1tkPj4yXXwwLGNbZT4+Ml18MCk7aT1mO3JldHVybn1mdW5jdGlvbiBtZyhhKXthPWF8MDt2YXIgYj0wLGQ9MDtiPWk7aT1pKzE2fDA7ZD1iO2NbZD4+Ml09YTtjWyhjWyhjW2Q+PjJdfDApKzQ+PjJdfDApKzQ+PjJdPWNbY1tkPj4yXT4+Ml07aT1iO3JldHVybn1mdW5jdGlvbiBuZyhhKXthPWF8MDt2YXIgYj0wLGQ9MDtkPWk7aT1pKzE2fDA7Yj1kO2NbYj4+Ml09YTtpZighKChjW2I+PjJdfDApIT0wJihjW2I+PjJdfDApIT01KSl7YT0wO2E9YSYxO2k9ZDtyZXR1cm4gYXwwfWE9KGNbYj4+Ml18MCkhPTY7YT1hJjE7aT1kO3JldHVybiBhfDB9ZnVuY3Rpb24gb2coYSl7YT1hfDA7dmFyIGI9MCxlPTA7ZT1pO2k9aSsxNnwwO2I9ZTtjW2I+PjJdPWE7aT1lO3JldHVybiAoZFsoY1tiPj4yXXwwKSs4Pj4wXXwwfDApIT0wfDB9ZnVuY3Rpb24gcGcoZixnKXtmPWZ8MDtnPWd8MDt2YXIgaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MDtwPWk7aT1pKzMyfDA7aD1wKzI0fDA7aj1wKzIwfDA7bD1wKzE2fDA7bz1wKzEyfDA7az1wKzh8MDttPXArNHwwO249cDtjW2g+PjJdPWY7Y1tqPj4yXT1nO2NbbD4+Ml09Y1soY1toPj4yXXwwKSs0Pj4yXTtjW28+PjJdPTA7bWcoY1toPj4yXXwwKTtkbyBpZigoZFsoY1toPj4yXXwwKSs4Pj4wXXwwKSE9Mj8oKGNbaj4+Ml18MCkhPTA/MTooZFsoY1toPj4yXXwwKSs4Pj4wXXwwKSE9MSk6MCl7aWYoKGNbaj4+Ml18MCkhPTA/KGVbKGNbbD4+Ml18MCkrMjI+PjFdJjF8MCkhPTA6MCl7Y1tvPj4yXT04O2JyZWFrfWNbaz4+Ml09MDtpZigoY1tqPj4yXXwwKSE9MD8oZFsoY1tsPj4yXXwwKSsyMD4+MF18MCk9PTI6MClnPTg7ZWxzZSBnPTc7YTpkbyBpZigoZ3wwKT09NylpZighKGVbKGNbbD4+Ml18MCkrMjI+PjFdJjY0KSl7aWYoKGNbaj4+Ml18MCk+MSl7Y1ttPj4yXT1jWyhjW2w+PjJdfDApKzcyPj4yXTt3aGlsZSgxKXtpZighKGNbbT4+Ml18MCkpYnJlYWsgYTtmPWNbbT4+Ml18MDtpZigoY1tjW20+PjJdPj4yXXwwKSE9KGNbaD4+Ml18MCkpYnJlYWs7Y1ttPj4yXT1jW2YrMTI+PjJdfWNbaz4+Ml09Y1tjW2Y+PjJdPj4yXX19ZWxzZSBnPTg7d2hpbGUoMCk7aWYoKGd8MCk9PTgpY1trPj4yXT1jW2NbKGNbbD4+Ml18MCkrNzY+PjJdPj4yXTtpZihjW2s+PjJdfDApe2Nbbz4+Ml09MjYyO2JyZWFrfWNbbz4+Ml09V0goY1toPj4yXXwwLDEsMSl8MDtpZighKGNbbz4+Ml18MCkpe209KGNbbD4+Ml18MCkrMjJ8MDtiW20+PjFdPWVbbT4+MV0mLTk7aWYoIShjWyhjW2w+PjJdfDApKzQ0Pj4yXXwwKSl7bT0oY1tsPj4yXXwwKSsyMnwwO2JbbT4+MV09ZVttPj4xXXw4fXdoaWxlKDEpe2lmKChjWyhjW2w+PjJdfDApKzEyPj4yXXwwKT09MD8obT1xTihjW2w+PjJdfDApfDAsY1tvPj4yXT1tLDA9PShtfDApKTowKWNvbnRpbnVlO2RvIGlmKChjW28+PjJdfDApPT0wJihjW2o+PjJdfDApIT0wKXtpZihlWyhjW2w+PjJdfDApKzIyPj4xXSYxKXtjW28+PjJdPTg7YnJlYWt9az1jW2NbbD4+Ml0+PjJdfDA7bT0oY1tqPj4yXXwwKT4xJjE7Y1tvPj4yXT1yTihrLG0sWnEoY1tjW2g+PjJdPj4yXXwwKXwwKXwwO2lmKCEoY1tvPj4yXXwwKSljW28+PjJdPUFNKGNbbD4+Ml18MCl8MH13aGlsZSgwKTtpZihjW28+PjJdfDApUkIoY1tsPj4yXXwwKTtpZigoY1tvPj4yXSYyNTV8MCkhPTUpYnJlYWs7aWYoZFsoY1tsPj4yXXwwKSsyMD4+MF18MClicmVhaztpZighKGRyKGNbbD4+Ml18MCl8MCkpYnJlYWt9aWYoIShjW28+PjJdfDApKXtpZigoZFsoY1toPj4yXXwwKSs4Pj4wXXwwKT09MD8obT0oY1tsPj4yXXwwKSs0MHwwLGNbbT4+Ml09KGNbbT4+Ml18MCkrMSwoYVsoY1toPj4yXXwwKSs5Pj4wXXwwKSE9MCk6MCl7YVsoY1toPj4yXXwwKSszMis4Pj4wXT0xO2NbKGNbaD4+Ml18MCkrMzIrMTI+PjJdPWNbKGNbbD4+Ml18MCkrNzI+PjJdO2NbKGNbbD4+Ml18MCkrNzI+PjJdPShjW2g+PjJdfDApKzMyfWFbKGNbaD4+Ml18MCkrOD4+MF09KGNbaj4+Ml18MCkhPTA/MjoxO2lmKChkWyhjW2g+PjJdfDApKzg+PjBdfDApPihkWyhjW2w+PjJdfDApKzIwPj4wXXwwKSlhWyhjW2w+PjJdfDApKzIwPj4wXT1hWyhjW2g+PjJdfDApKzg+PjBdfDA7aWYoY1tqPj4yXXwwKXtjW24+PjJdPWNbKGNbbD4+Ml18MCkrMTI+PjJdO2NbKGNbbD4+Ml18MCkrNzY+PjJdPWNbaD4+Ml07bT0oY1tsPj4yXXwwKSsyMnwwO2JbbT4+MV09ZVttPj4xXSYtMzM7aWYoKGNbaj4+Ml18MCk+MSl7bT0oY1tsPj4yXXwwKSsyMnwwO2JbbT4+MV09ZVttPj4xXXwzMn1tPWNbKGNbbD4+Ml18MCkrNDQ+PjJdfDA7aWYoKG18MCkhPShncigoY1soY1tuPj4yXXwwKSs1Nj4+Ml18MCkrMjh8MCl8MCk/KGNbbz4+Ml09R2coY1soY1tuPj4yXXwwKSs3Mj4+Ml18MCl8MCwoY1tvPj4yXXwwKT09MCk6MClmdCgoY1soY1tuPj4yXXwwKSs1Nj4+Ml18MCkrMjh8MCxjWyhjW2w+PjJdfDApKzQ0Pj4yXXwwKX19fX13aGlsZSgwKTtpZighKChjW28+PjJdfDApPT0wJihjW2o+PjJdfDApIT0wKSl7bz1jW28+PjJdfDA7aT1wO3JldHVybiBvfDB9Y1tvPj4yXT14TShjW2NbbD4+Ml0+PjJdfDAsY1soY1tjW2g+PjJdPj4yXXwwKSs0MzI+PjJdfDApfDA7bz1jW28+PjJdfDA7aT1wO3JldHVybiBvfDB9ZnVuY3Rpb24gcWcoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wO2Q9aTtpPWkrMTZ8MDtlPWQrNHwwO2I9ZDtjW2U+PjJdPWE7YT1jWyhjW2U+PjJdfDApKzQ+PjJdfDA7Y1tiPj4yXT1DaShhLHNnKGNbKGNbZT4+Ml18MCkrMjQ+PjJdfDApfDAsLTEsMCl8MDtpPWQ7cmV0dXJuIGNbYj4+Ml18MH1mdW5jdGlvbiByZyhhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTA7aj1pO2k9aSsxNnwwO2U9aisxMnwwO2Y9ais4fDA7Zz1qKzR8MDtoPWo7Y1tlPj4yXT1hO2NbZj4+Ml09YjtjW2c+PjJdPWQ7Y1toPj4yXT1jWyhjW2U+PjJdfDApKzQ+PjJdO21nKGNbZT4+Ml18MCk7aWYoKGNbZj4+Ml18MCk9PTE1KXtkPXBOKGNbY1toPj4yXT4+Ml18MCl8MDtjW2NbZz4+Ml0+PjJdPWQrKGNbKGNbZT4+Ml18MCkrMjA+PjJdfDApO2k9ajtyZXR1cm59ZWxzZXtkPWdyKChjWyhjWyhjW2g+PjJdfDApKzEyPj4yXXwwKSs1Nj4+Ml18MCkrKDM2KyhjW2Y+PjJdPDwyKSl8MCl8MDtjW2NbZz4+Ml0+PjJdPWQ7aT1qO3JldHVybn19ZnVuY3Rpb24gc2coYSl7YT1hfDA7dmFyIGI9MCxkPTA7ZD1pO2k9aSsxNnwwO2I9ZDtjW2I+PjJdPWE7aT1kO3JldHVybiBjWyhjWyhjW2I+PjJdfDApKzQ+PjJdfDApKzMyPj4yXXwwfWZ1bmN0aW9uIHRnKGEpe2E9YXwwO3ZhciBiPTAsZT0wO2U9aTtpPWkrMTZ8MDtiPWU7Y1tiPj4yXT1hO2k9ZTtyZXR1cm4gZFsoY1tiPj4yXXwwKSs1Pj4wXXwwfDB9ZnVuY3Rpb24gdWcoYSl7YT1hfDA7dmFyIGI9MCxkPTA7Yj1pO2k9aSsxNnwwO2Q9YjtjW2Q+PjJdPWE7YT1KRihjWyhjW2Q+PjJdfDApKzQ+PjJdfDApfDA7aT1iO3JldHVybiBhfDB9ZnVuY3Rpb24gdmcoYSxiLGUsZil7YT1hfDA7Yj1ifDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTA7dD1pO2k9aSs0OHwwO2s9dCs0NHwwO2w9dCs0MHwwO209dCszNnwwO249dCszMnwwO3U9dCsyOHwwO3M9dCsyNHwwO3I9dCsyMHwwO3A9dCsxNnwwO3E9dCsxMnwwO289dCs4fDA7aD10KzR8MDtnPXQ7Y1tsPj4yXT1hO2NbbT4+Ml09YjtjW24+PjJdPWU7Y1t1Pj4yXT1mO2Nbcz4+Ml09MDtjW3I+PjJdPTA7Y1twPj4yXT0wO2NbcT4+Ml09Y1t1Pj4yXSYxO2Nbbz4+Ml09MDtpZigoY1ttPj4yXXwwKT4+PjA8PTEmKGNbbT4+Ml18MCk9PTApe2Nbaz4+Ml09UWooNTE3MDQpfDA7dT1jW2s+PjJdfDA7aT10O3JldHVybiB1fDB9ZG8gaWYoY1soY1tsPj4yXXwwKSs0ND4+Ml18MCl7Y1tzPj4yXT1jWyhjW2w+PjJdfDApKzQ0Pj4yXTtqPTI0fWVsc2V7aWYoKChjW28+PjJdfDApIT0wPyhCcihjW2w+PjJdfDApfDApIT0wOjApPyhjW3M+PjJdPUhzKGNbKGNbbD4+Ml18MCkrMjE2Pj4yXXwwLGNbbT4+Ml18MCxwKXwwLChjW3M+PjJdfDApIT0wKTowKWJyZWFrO2lmKChjW28+PjJdfDApIT0wJihjW3A+PjJdfDApPT0wKXtjW2g+PjJdPTA7ZT1jWyhjW2w+PjJdfDApKzY0Pj4yXXwwO3U9Y1soY1tsPj4yXXwwKSsxNjA+PjJdfDA7dT1hUygoY1ttPj4yXXwwKS0xfDAsMCx1fDAsKCh1fDApPDApPDwzMT4+MzF8MCl8MDtjW3M+PjJdPUdMKGUsdSxDLGNbKGNbbD4+Ml18MCkrMTYwPj4yXXwwLGgpfDA7aWYoKGNbcz4+Ml18MCk9PTAmKGNbaD4+Ml18MCkhPTApe2lmKCEoKGRbKGNbbD4+Ml18MCkrMTc+PjBdfDB8MCk8PTE/KGRbKGNbbD4+Ml18MCkrMTM+PjBdfDB8MCk9PTA6MCkpY1tyPj4yXT1ocyhjW2w+PjJdfDAsY1ttPj4yXXwwKXwwO2Y9Y1tsPj4yXXwwO2lmKCEoY1tyPj4yXXwwKSljW3M+PjJdPW1OKGYsY1ttPj4yXXwwLGNbaD4+Ml18MCxyKXwwO2Vsc2V7ZT1jW2YrNjQ+PjJdfDA7dT1jWyhjW2w+PjJdfDApKzE2MD4+Ml18MDt1PWFTKChjW20+PjJdfDApLTF8MCwwLHV8MCwoKHV8MCk8MCk8PDMxPj4zMXwwKXwwO01zKGUsdSxDLGNbaD4+Ml18MCl8MH1pZihjW3I+PjJdfDApe2NbY1tuPj4yXT4+Ml09Y1tyPj4yXTtjW2s+PjJdPTA7dT1jW2s+PjJdfDA7aT10O3JldHVybiB1fDB9fWlmKGNbcz4+Ml18MClicmVha31jW2c+PjJdPW1zKGNbKGNbbD4+Ml18MCkrMjEyPj4yXXwwLGNbbT4+Ml18MCwzKXwwO2lmKCEoY1tnPj4yXXwwKSl7Y1tzPj4yXT1uTihjWyhjW2w+PjJdfDApKzIxMj4+Ml18MCxjW20+PjJdfDAsZyl8MDtpZihjW3M+PjJdfDApYnJlYWs7aWYoIShjW2c+PjJdfDApKXtjW2Nbbj4+Ml0+PjJdPTA7Y1tyPj4yXT0wO2Nbcz4+Ml09NzticmVha319aj1ucyhjWyhjW2w+PjJdfDApKzIxMj4+Ml18MCxjW20+PjJdfDAsY1tnPj4yXXwwKXwwO2NbY1tuPj4yXT4+Ml09ajtjW3I+PjJdPWo7aj0yNH13aGlsZSgwKTtkbyBpZigoanwwKT09MjQpe2lmKGNbcz4+Ml18MCl7Y1tyPj4yXT0wO2JyZWFrfWY9Y1tsPj4yXXwwO2lmKCEoKGNbcT4+Ml18MCkhPTA/MTooY1soY1tyPj4yXXwwKSsxNj4+Ml18MCk9PTApKXt1PWYrMTkyfDA7Y1t1Pj4yXT0oY1t1Pj4yXXwwKSsxO2Nbaz4+Ml09MDt1PWNbaz4+Ml18MDtpPXQ7cmV0dXJuIHV8MH1jWyhjW3I+PjJdfDApKzE2Pj4yXT1mO2lmKChjW20+PjJdfDApPj4+MDw9MjE0NzQ4MzY0Nz8oY1ttPj4yXXwwKSE9KCgoY1szODRdfDApLyhjWyhjW2w+PjJdfDApKzE2MD4+Ml18MCl8MCkrMXwwKTowKXtpZigoY1tjWyhjW2w+PjJdfDApKzY0Pj4yXT4+Ml18MCkhPTA/ISgoY1txPj4yXXwwKSE9MD8xOihjWyhjW2w+PjJdfDApKzI4Pj4yXXwwKT4+PjA8KGNbbT4+Ml18MCk+Pj4wKTowKXt1PShCcihjW2w+PjJdfDApfDApIT0wO2lmKHUmKGNbbz4+Ml18MCk9PTA/KGNbcz4+Ml09SHMoY1soY1tsPj4yXXwwKSsyMTY+PjJdfDAsY1ttPj4yXXwwLHApfDAsKGNbcz4+Ml18MCkhPTApOjApYnJlYWs7dT0oY1tsPj4yXXwwKSsxOTIrNHwwO2NbdT4+Ml09KGNbdT4+Ml18MCkrMTtjW3M+PjJdPUlzKGNbcj4+Ml18MCxjW3A+PjJdfDApfDA7aWYoY1tzPj4yXXwwKWJyZWFrfWVsc2V7aWYoKGNbbT4+Ml18MCk+Pj4wPihjWyhjW2w+PjJdfDApKzE2ND4+Ml18MCk+Pj4wKXtjW3M+PjJdPTEzO2JyZWFrfWlmKGNbcT4+Ml18MCl7WWooKTtpZigoY1ttPj4yXXwwKT4+PjA8PShjWyhjW2w+PjJdfDApKzMyPj4yXXwwKT4+PjApbGooY1soY1tsPj4yXXwwKSs2MD4+Ml18MCxjW20+PjJdfDApfDA7U3QoY1tsPj4yXXwwLGNbbT4+Ml18MCl8MDtaaigpfVZSKGNbKGNbcj4+Ml18MCkrND4+Ml18MCwwLGNbKGNbbD4+Ml18MCkrMTYwPj4yXXwwKXwwfWNbaz4+Ml09MDt1PWNbaz4+Ml18MDtpPXQ7cmV0dXJuIHV8MH1jW3M+PjJdPVFqKDUxNzkzKXwwfXdoaWxlKDApO2lmKGNbcj4+Ml18MClHcyhjW3I+PjJdfDApO0xzKGNbbD4+Ml18MCk7Y1tjW24+PjJdPj4yXT0wO2Nbaz4+Ml09Y1tzPj4yXTt1PWNbaz4+Ml18MDtpPXQ7cmV0dXJuIHV8MH1mdW5jdGlvbiB3ZyhhKXthPWF8MDt2YXIgYj0wLGQ9MDtkPWk7aT1pKzE2fDA7Yj1kO2NbYj4+Ml09YTtpPWQ7cmV0dXJuIGNbKGNbYj4+Ml18MCkrND4+Ml18MH1mdW5jdGlvbiB4ZyhiLGQsZSxmKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MDt3PWk7aT1pKzgwfDA7Zz13KzY4fDA7eD13KzY0fDA7aD13KzYwfDA7aj13KzU2fDA7cT13KzUyfDA7cD13KzQ4fDA7bz13KzQ0fDA7bj13KzQwfDA7bD13Kzh8MDt2PXcrMzZ8MDttPXc7cj13KzMyfDA7az13KzI4fDA7dD13KzI0fDA7cz13KzIwfDA7dT13KzE2fDA7Y1tnPj4yXT1iO2NbeD4+Ml09ZDtjW2g+PjJdPWU7Y1tqPj4yXT1mO2NbcT4+Ml09UGYoY1soY1tnPj4yXXwwKSs0Pj4yXXwwKXwwO2NbcD4+Ml09c2coY1soY1tnPj4yXXwwKSsyND4+Ml18MCl8MDtjW28+PjJdPXNnKGNbKGNbZz4+Ml18MCkrND4+Ml18MCl8MDtjW24+PjJdPShjW3A+PjJdfDApPChjW28+PjJdfDApP2NbcD4+Ml18MDpjW28+PjJdfDA7Yj1jW3A+PjJdfDA7Yj1hUyhjW3g+PjJdfDAsMCxifDAsKChifDApPDApPDwzMT4+MzF8MCl8MDtlPWw7Y1tlPj4yXT1iO2NbZSs0Pj4yXT1DO2Nbdj4+Ml09MDtpZigoY1twPj4yXXwwKSE9KGNbbz4+Ml18MCk/KGtLKGNbcT4+Ml18MCl8MCkhPTA6MCljW3Y+PjJdPTg7eD1sO2U9Y1twPj4yXXwwO2U9UVIoY1t4Pj4yXXwwLGNbeCs0Pj4yXXwwLGV8MCwoKGV8MCk8MCk8PDMxPj4zMXwwKXwwO3g9bTtjW3g+PjJdPWU7Y1t4KzQ+PjJdPUM7d2hpbGUoMSl7aWYoY1t2Pj4yXXwwKXtnPTE0O2JyZWFrfWU9bTtkPWNbZSs0Pj4yXXwwO3g9bDtiPWNbeCs0Pj4yXXwwO2lmKCEoKGR8MCk8KGJ8MCl8KChkfDApPT0oYnwwKT8oY1tlPj4yXXwwKT4+PjA8KGNbeD4+Ml18MCk+Pj4wOjApKSl7Zz0xNDticmVha31jW3I+PjJdPTA7ZT1tO3g9Y1tvPj4yXXwwO3g9X1IoY1tlPj4yXXwwLGNbZSs0Pj4yXXwwLHh8MCwoKHh8MCk8MCk8PDMxPj4zMXwwKXwwO2Nbaz4+Ml09eCsxO2lmKChjW2s+PjJdfDApIT0oKCgoY1szODRdfDApPj4+MCkvKChjWyhjWyhjWyhjW2c+PjJdfDApKzQ+PjJdfDApKzQ+PjJdfDApKzMyPj4yXXwwKT4+PjApfDApKzF8MCkpe3g9dmcoY1txPj4yXXwwLGNbaz4+Ml18MCxyLDApfDA7Y1t2Pj4yXT14O2lmKCgwPT0oeHwwKT8oeD1HZyhjW3I+PjJdfDApfDAsY1t2Pj4yXT14LDA9PSh4fDApKTowKT8oeD1tLGU9Y1twPj4yXXwwLGU9JFIoY1t4Pj4yXXwwLGNbeCs0Pj4yXXwwLGV8MCwoKGV8MCk8MCk8PDMxPj4zMXwwKXwwLGNbdD4+Ml09KGNbaD4+Ml18MCkrZSxjW3M+PjJdPXdnKGNbcj4+Ml18MCl8MCxlPW0seD1jW28+PjJdfDAseD0kUihjW2U+PjJdfDAsY1tlKzQ+PjJdfDAseHwwLCgoeHwwKTwwKTw8MzE+PjMxfDApfDAsY1t1Pj4yXT0oY1tzPj4yXXwwKSt4LFRSKGNbdT4+Ml18MCxjW3Q+PjJdfDAsY1tuPj4yXXwwKXwwLGFbKFV0KGNbcj4+Ml18MCl8MCk+PjBdPTAseD1tLChjW3g+PjJdfDApPT0wJihjW3grND4+Ml18MCk9PTAmKGNbaj4+Ml18MCk9PTApOjApe3g9KGNbdT4+Ml18MCkrMjh8MDtmdCh4LHVnKGNbKGNbZz4+Ml18MCkrMjQ+PjJdfDApfDApfXlnKGNbcj4+Ml18MCl9ZT1jW28+PjJdfDA7eD1tO2U9UlIoY1t4Pj4yXXwwLGNbeCs0Pj4yXXwwLGV8MCwoKGV8MCk8MCk8PDMxPj4zMXwwKXwwO3g9bTtjW3g+PjJdPWU7Y1t4KzQ+PjJdPUN9aWYoKGd8MCk9PTE0KXtpPXc7cmV0dXJuIGNbdj4+Ml18MH1yZXR1cm4gMH1mdW5jdGlvbiB5ZyhhKXthPWF8MDt2YXIgYj0wLGQ9MDtkPWk7aT1pKzE2fDA7Yj1kO2NbYj4+Ml09YTtpZighKGNbYj4+Ml18MCkpe2k9ZDtyZXR1cm59SnMoY1tiPj4yXXwwKTtpPWQ7cmV0dXJufWZ1bmN0aW9uIHpnKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MDtiPWk7aT1pKzE2fDA7ZD1iKzR8MDtlPWI7Y1tkPj4yXT1hO2NbZT4+Ml09T2coUGYoY1soY1tkPj4yXXwwKSsyND4+Ml18MCl8MCl8MDtjWyhjW2Q+PjJdfDApKzQ0Pj4yXT1jW2NbZT4+Ml0+PjJdO2NbY1tlPj4yXT4+Ml09Y1tkPj4yXTtjWyhjW2Q+PjJdfDApKzQwPj4yXT0xO2k9YjtyZXR1cm59ZnVuY3Rpb24gQWcoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wO2Q9aTtpPWkrMTZ8MDtlPWQrNHwwO2I9ZDtjW2U+PjJdPWE7bWcoY1tlPj4yXXwwKTtjWyhjWyhjW2U+PjJdfDApKzQ+PjJdfDApKzQ0Pj4yXT0wO2NbYj4+Ml09QU0oY1soY1tlPj4yXXwwKSs0Pj4yXXwwKXwwO2k9ZDtyZXR1cm4gY1tiPj4yXXwwfWZ1bmN0aW9uIEJnKGIsZCxlKXtiPWJ8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wO2w9aTtpPWkrMzJ8MDttPWwrMjB8MDtmPWwrMTZ8MDtnPWwrMTJ8MDtoPWwrOHwwO2o9bCs0fDA7az1sO2NbbT4+Ml09YjtjW2Y+PjJdPWQ7Y1tnPj4yXT1lO2NbaD4+Ml09Y1soY1ttPj4yXXwwKSs0Pj4yXTttZyhjW20+PjJdfDApO2Nbaj4+Ml09Y1soY1soY1toPj4yXXwwKSsxMj4+Ml18MCkrNTY+PjJdO2Nbaz4+Ml09R2coY1soY1soY1toPj4yXXwwKSsxMj4+Ml18MCkrNzI+PjJdfDApfDA7aWYoY1trPj4yXXwwKXttPWNbaz4+Ml18MDtpPWw7cmV0dXJuIG18MH1mdCgoY1tqPj4yXXwwKSsoMzYrKGNbZj4+Ml08PDIpKXwwLGNbZz4+Ml18MCk7aWYoKGNbZj4+Ml18MCkhPTcpe209Y1trPj4yXXwwO2k9bDtyZXR1cm4gbXwwfWFbKGNbaD4+Ml18MCkrMTg+PjBdPWNbZz4+Ml07bT1jW2s+PjJdfDA7aT1sO3JldHVybiBtfDB9ZnVuY3Rpb24gQ2coYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MDtmPWk7aT1pKzE2fDA7Yj1mKzh8MDtkPWYrNHwwO2U9ZjtjW2I+PjJdPWE7T2YoY1tiPj4yXXwwKTtjW2Q+PjJdPTA7d2hpbGUoMSl7aWYoKGNbZD4+Ml18MCk+PShjWyhjW2I+PjJdfDApKzIwPj4yXXwwKSlicmVhaztjW2U+PjJdPShjWyhjW2I+PjJdfDApKzE2Pj4yXXwwKSsoY1tkPj4yXTw8NCk7aWYoY1soY1tlPj4yXXwwKSsxMj4+Ml18MCl5aihjWyhjW2U+PjJdfDApKzEyPj4yXXwwKTtjW2Q+PjJdPShjW2Q+PjJdfDApKzF9ZT0oY1tiPj4yXXwwKSsyNHwwO2NbZT4+Ml09Y1tlPj4yXSYtMzt1dShjW2I+PjJdfDApO01CKGNbYj4+Ml18MCk7aT1mO3JldHVybn1mdW5jdGlvbiBEZyhmLGcpe2Y9ZnwwO2c9Z3wwO3ZhciBoPTAsaj0wLGs9MCxsPTAsbT0wLG49MDtuPWk7aT1pKzMyfDA7aD1uKzE2fDA7aj1uKzEyfDA7bD1uKzh8MDttPW4rNHwwO2s9bjtjW2g+PjJdPWY7Y1tqPj4yXT1nO2NbbD4+Ml09Y1soY1toPj4yXXwwKSs0Pj4yXTtmPShjW2w+PjJdfDApKzIyfDA7YltmPj4xXT0oZVtmPj4xXXwwKSYtMTc7aWYoKGNbaj4+Ml18MCk9PTEpe2Y9KGNbbD4+Ml18MCkrMjJ8MDtiW2Y+PjFdPWVbZj4+MV18MHwxNn1jW20+PjJdPXBnKGNbaD4+Ml18MCwwKXwwO2RvIGlmKCEoY1ttPj4yXXwwKSl7Y1trPj4yXT1jWyhjWyhjW2w+PjJdfDApKzEyPj4yXXwwKSs1Nj4+Ml07aWYoKGRbKGNbaz4+Ml18MCkrMTg+PjBdfDB8MCk9PShjW2o+PjJdJjI1NXwwKT8oZFsoY1trPj4yXXwwKSsxOT4+MF18MHwwKT09KGNbaj4+Ml0mMjU1fDApOjApYnJlYWs7Y1ttPj4yXT1wZyhjW2g+PjJdfDAsMil8MDtpZigoY1ttPj4yXXwwKT09MD8oY1ttPj4yXT1HZyhjWyhjWyhjW2w+PjJdfDApKzEyPj4yXXwwKSs3Mj4+Ml18MCl8MCwoY1ttPj4yXXwwKT09MCk6MCl7YVsoY1trPj4yXXwwKSsxOD4+MF09Y1tqPj4yXTthWyhjW2s+PjJdfDApKzE5Pj4wXT1jW2o+PjJdfX13aGlsZSgwKTtmPShjW2w+PjJdfDApKzIyfDA7YltmPj4xXT0oZVtmPj4xXXwwKSYtMTc7aT1uO3JldHVybiBjW20+PjJdfDB9ZnVuY3Rpb24gRWcoYSl7YT1hfDA7dmFyIGI9MCxkPTA7ZD1pO2k9aSsxNnwwO2I9ZDtjW2I+PjJdPWE7aT1kO3JldHVybiBjWyhjW2I+PjJdfDApKzY0Pj4yXXwwfWZ1bmN0aW9uIEZnKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wO2Q9aTtpPWkrMTZ8MDtmPWQrNHwwO2U9ZDtjW2Y+PjJdPWE7Y1tlPj4yXT1iO2NbY1tlPj4yXT4+Ml09Y1soY1tmPj4yXXwwKSsyOD4+Ml07aT1kO3JldHVybn1mdW5jdGlvbiBHZyhhKXthPWF8MDt2YXIgYj0wLGQ9MCxmPTAsZz0wO2c9aTtpPWkrMTZ8MDtkPWcrOHwwO2I9Zys0fDA7Zj1nO2NbYj4+Ml09YTtjW2Y+PjJdPWNbKGNbYj4+Ml18MCkrMTY+PjJdO2lmKGNbKGNbZj4+Ml18MCkrNDQ+PjJdfDApe2NbZD4+Ml09Y1soY1tmPj4yXXwwKSs0ND4+Ml07Zj1jW2Q+PjJdfDA7aT1nO3JldHVybiBmfDB9aWYoKChlWyhjW2I+PjJdfDApKzI0Pj4xXXwwKSY0fDApIT0wPyhjWyhjW2Y+PjJdfDApKzI4Pj4yXXwwKT4+PjA+PShjWyhjW2I+PjJdfDApKzIwPj4yXXwwKT4+PjA6MClpZihjWyhjW2Y+PjJdfDApKzEwND4+Ml18MCl7Y1tkPj4yXT13dChjW2I+PjJdfDApfDA7Zj1jW2Q+PjJdfDA7aT1nO3JldHVybiBmfDB9ZWxzZXtjW2Q+PjJdPTA7Zj1jW2Q+PjJdfDA7aT1nO3JldHVybiBmfDB9Yj1jW2I+PjJdfDA7aWYoKGNbKGNbZj4+Ml18MCkrMTU2Pj4yXXwwKT4+PjA+KGNbKGNbZj4+Ml18MCkrMTYwPj4yXXwwKT4+PjApe2NbZD4+Ml09Z04oYil8MDtmPWNbZD4+Ml18MDtpPWc7cmV0dXJuIGZ8MH1lbHNle2NbZD4+Ml09aE4oYil8MDtmPWNbZD4+Ml18MDtpPWc7cmV0dXJuIGZ8MH1yZXR1cm4gMH1mdW5jdGlvbiBIZyhiLGUsZil7Yj1ifDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wO3A9aTtpPWkrMzJ8MDtnPXArMjh8MDtoPXArMjR8MDtqPXArMjB8MDtrPXArMTZ8MDtvPXArMTJ8MDttPXArOHwwO249cCs0fDA7bD1wO2NbaD4+Ml09YjtjW2o+PjJdPWU7Y1trPj4yXT1mO2Nbbz4+Ml09MDtpZihjWyhjW2g+PjJdfDApKzQ0Pj4yXXwwKXtjW2c+PjJdPWNbKGNbaD4+Ml18MCkrNDQ+PjJdO289Y1tnPj4yXXwwO2k9cDtyZXR1cm4gb3wwfWlmKEJpKDQwMCl8MCl7Y1tnPj4yXT0xMDtvPWNbZz4+Ml18MDtpPXA7cmV0dXJuIG98MH1pZigoZFsoY1toPj4yXXwwKSsxNz4+MF18MHwwKTwzKXtjW2c+PjJdPTA7bz1jW2c+PjJdfDA7aT1wO3JldHVybiBvfDB9ZT0wPT0oeXIoY1toPj4yXXwwLDEpfDApO2Y9Y1toPj4yXXwwO2RvIGlmKCFlKXtlPShCcihmKXwwKSE9MDtmPWNbaD4+Ml18MDtpZihlKXtjW20+PjJdPUFzKGNbZisyMTI+PjJdfDApfDA7Y1tuPj4yXT0wO2lmKCEoY1ttPj4yXXwwKSl7Y1tvPj4yXT12ZyhjW2g+PjJdfDAsMSxuLDApfDA7Y1ttPj4yXT1jW24+PjJdO2NbKGNbbT4+Ml18MCkrMTI+PjJdPTB9aWYoY1ttPj4yXXwwKWNbbz4+Ml09eHQoY1toPj4yXXwwLGNbbT4+Ml18MCxjWyhjW2g+PjJdfDApKzI4Pj4yXXwwLDEpfDA7eWcoY1tuPj4yXXwwKTtpZihjW28+PjJdfDApYnJlYWs7enIoY1soY1toPj4yXXwwKSsyMTI+PjJdfDApO2JyZWFrfWNbbz4+Ml09ZU4oZiwwKXwwO2lmKCgoKGNbbz4+Ml18MCk9PTA/KGNbbz4+Ml09Zk4oY1toPj4yXXwwLGNbaj4+Ml18MCl8MCwoY1tvPj4yXXwwKT09MCk6MCk/KGNbbz4+Ml09eXQoY1toPj4yXXwwLDApfDAsKGNbbz4+Ml18MCk9PTApOjApPyhuPWNbaD4+Ml18MCxjW28+PjJdPXp0KG4sQXMoY1soY1toPj4yXXwwKSsyMTI+PjJdfDApfDApfDAsKGNbbz4+Ml18MCk9PTApOjApe3pyKGNbKGNbaD4+Ml18MCkrMjEyPj4yXXwwKTtpZigoY1soY1toPj4yXXwwKSsyOD4+Ml18MCk+Pj4wPihjWyhjW2g+PjJdfDApKzM2Pj4yXXwwKT4+PjApe2NbbD4+Ml09KGNbKGNbaD4+Ml18MCkrMjg+PjJdfDApLSgoY1soY1toPj4yXXwwKSsyOD4+Ml18MCk9PSgoKGNbMzg0XXwwKS8oY1soY1toPj4yXXwwKSsxNjA+PjJdfDApfDApKzF8MCkmMSk7Y1tvPj4yXT1EcihjW2g+PjJdfDAsY1tsPj4yXXwwKXwwO2lmKChjW28+PjJdfDApIT0wfChjW2s+PjJdfDApIT0wKWJyZWFrfWVsc2UgaWYoY1trPj4yXXwwKWJyZWFrO2Nbbz4+Ml09S2coY1toPj4yXXwwLGNbaj4+Ml18MCl8MH19ZWxzZSBkaihjW2YrOTY+PjJdfDApO3doaWxlKDApO2lmKChjW28+PjJdfDApPT0wPyhCcihjW2g+PjJdfDApfDApPT0wOjApYVsoY1toPj4yXXwwKSsxNz4+MF09NTtjW2c+PjJdPWNbbz4+Ml07bz1jW2c+PjJdfDA7aT1wO3JldHVybiBvfDB9ZnVuY3Rpb24gSWcoYSxiLGQsZSxmKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MDtnPWk7aT1pKzMyfDA7az1nKzE2fDA7aj1nKzEyfDA7aD1nKzh8MDtsPWc7Y1trPj4yXT1hO2Nbaj4+Ml09YjtjW2g+PjJdPWQ7Yj1sO2NbYj4+Ml09ZTtjW2IrND4+Ml09ZjtiPWw7Yj1aYltjWyhjW2Nbaz4+Ml0+PjJdfDApKzEyPj4yXSYyNTVdKGNbaz4+Ml18MCxjW2o+PjJdfDAsY1toPj4yXXwwLGNbYj4+Ml18MCxjW2IrND4+Ml18MCl8MDtpPWc7cmV0dXJuIGJ8MH1mdW5jdGlvbiBKZyhhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTA7aj1pO2k9aSszMnwwO2U9aisyMHwwO2Y9ais4fDA7Zz1qO2g9aisxNnwwO2NbZT4+Ml09YTthPWY7Y1thPj4yXT1iO2NbYSs0Pj4yXT1kO2NbaD4+Ml09WGkoY1tlPj4yXXwwLGcpfDA7aWYoY1toPj4yXXwwKXtoPWNbaD4+Ml18MDtpPWo7cmV0dXJuIGh8MH1iPWNbZys0Pj4yXXwwO2E9ZjtkPWNbYSs0Pj4yXXwwO2lmKCEoKGJ8MCk+KGR8MCl8KChifDApPT0oZHwwKT8oY1tnPj4yXXwwKT4+PjA+KGNbYT4+Ml18MCk+Pj4wOjApKSl7aD1jW2g+PjJdfDA7aT1qO3JldHVybiBofDB9YT1mO2NbaD4+Ml09dXIoY1tlPj4yXXwwLGNbYT4+Ml18MCxjW2ErND4+Ml18MCl8MDtoPWNbaD4+Ml18MDtpPWo7cmV0dXJuIGh8MH1mdW5jdGlvbiBLZyhiLGUpe2I9YnwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wO2s9aTtpPWkrMTZ8MDtmPWsrMTJ8MDtnPWsrOHwwO2o9ays0fDA7aD1rO2NbZj4+Ml09YjtjW2c+PjJdPWU7Y1tqPj4yXT0wO2lmKGNbY1soY1tmPj4yXXwwKSs2ND4+Ml0+PjJdfDApe2NbaD4+Ml09Y1tnPj4yXTtlPUFpKGNbKGNbZj4+Ml18MCkrNjQ+PjJdfDAsMjEsY1toPj4yXXwwKXwwO2Nbaj4+Ml09ZTtjW2o+PjJdPShjW2o+PjJdfDApPT0xMj8wOmV9aWYoY1tqPj4yXXwwKXtlPWNbaj4+Ml18MDtpPWs7cmV0dXJuIGV8MH1pZihhWyhjW2Y+PjJdfDApKzc+PjBdfDApe2U9Y1tqPj4yXXwwO2k9aztyZXR1cm4gZXwwfWNbaj4+Ml09dnIoY1soY1tmPj4yXXwwKSs2ND4+Ml18MCxkWyhjW2Y+PjJdfDApKzEyPj4wXXwwKXwwO2U9Y1tqPj4yXXwwO2k9aztyZXR1cm4gZXwwfWZ1bmN0aW9uIExnKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wO2Q9aTtpPWkrMTZ8MDtlPWQrNHwwO2Y9ZDtjW2U+PjJdPWE7Y1tmPj4yXT1iO2NbKGNbZT4+Ml18MCkrMjg+PjJdPWNbZj4+Ml07aT1kO3JldHVybn1mdW5jdGlvbiBNZyhiLGUpe2I9YnwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MDtsPWk7aT1pKzMyfDA7Zj1sKzE2fDA7Zz1sKzEyfDA7aD1sKzh8MDtrPWwrNHwwO2o9bDtjW2c+PjJdPWI7Y1toPj4yXT1lO2lmKCEoZFsoY1tnPj4yXXwwKSs4Pj4wXXwwKSl7Y1tmPj4yXT0wO2s9Y1tmPj4yXXwwO2k9bDtyZXR1cm4ga3wwfW1nKGNbZz4+Ml18MCk7ZG8gaWYoKGRbKGNbZz4+Ml18MCkrOD4+MF18MHwwKT09Mil7Y1tqPj4yXT1jWyhjW2c+PjJdfDApKzQ+PjJdO2Nbaz4+Ml09ZE4oY1tjW2o+PjJdPj4yXXwwKXwwO2lmKCEoKGNbaz4+Ml18MCkhPTAmKGNbaD4+Ml18MCk9PTApKXtrPShjW2c+PjJdfDApKzIwfDA7Y1trPj4yXT0oY1trPj4yXXwwKSstMTthWyhjW2o+PjJdfDApKzIwPj4wXT0xO19NKGNbaj4+Ml18MCk7YnJlYWt9Y1tmPj4yXT1jW2s+PjJdO2s9Y1tmPj4yXXwwO2k9bDtyZXR1cm4ga3wwfXdoaWxlKDApOyRNKGNbZz4+Ml18MCk7Y1tmPj4yXT0wO2s9Y1tmPj4yXXwwO2k9bDtyZXR1cm4ga3wwfWZ1bmN0aW9uIE5nKGIsZSl7Yj1ifDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wO2w9aTtpPWkrMzJ8MDtmPWwrMTZ8MDtnPWwrMTJ8MDtoPWwrOHwwO2s9bCs0fDA7aj1sO2NbZz4+Ml09YjtjW2g+PjJdPWU7Y1trPj4yXT0wO2lmKChkWyhjW2c+PjJdfDApKzg+PjBdfDApPT0yKXtjW2o+PjJdPWNbKGNbZz4+Ml18MCkrND4+Ml07bWcoY1tnPj4yXXwwKTtpZigoYVsoY1tqPj4yXXwwKSsxNz4+MF18MCkhPTA/KGNbaz4+Ml09Y04oY1tqPj4yXXwwKXwwLChjW2s+PjJdfDApIT0wKTowKXtjW2Y+PjJdPWNbaz4+Ml07ZT1jW2Y+PjJdfDA7aT1sO3JldHVybiBlfDB9aWYoYVsoY1tqPj4yXXwwKSsxOT4+MF18MClMZyhjW2Nbaj4+Ml0+PjJdfDAsY1soY1tqPj4yXXwwKSs0ND4+Ml18MCk7Y1trPj4yXT1IZyhjW2Nbaj4+Ml0+PjJdfDAsY1toPj4yXXwwLDApfDB9Y1tmPj4yXT1jW2s+PjJdO2U9Y1tmPj4yXXwwO2k9bDtyZXR1cm4gZXwwfWZ1bmN0aW9uIE9nKGEpe2E9YXwwO3ZhciBiPTAsZD0wO2Q9aTtpPWkrMTZ8MDtiPWQ7Y1tiPj4yXT1hO2k9ZDtyZXR1cm4gKGNbYj4+Ml18MCkrOTZ8MH1mdW5jdGlvbiBQZyhiLGUsZil7Yj1ifDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MDtxPWk7aT1pKzQ4fDA7Zz1xKzMyfDA7aD1xKzI4fDA7aj1xKzI0fDA7bj1xKzIwfDA7bD1xKzE2fDA7bT1xKzEyfDA7bz1xKzh8MDtwPXErNHwwO2s9cTtjW2c+PjJdPWI7Y1toPj4yXT1lO2Nbaj4+Ml09ZjtjW2w+PjJdPWNbKGNbZz4+Ml18MCkrND4+Ml07bWcoY1tnPj4yXXwwKTtpZighKGNbaD4+Ml18MCkpe2Y9WEgoY1tsPj4yXXwwLDAsMCl8MDtjW2g+PjJdPWY7Y1tuPj4yXT1mO2lmKGNbbj4+Ml18MCljW2o+PjJdPTB9ZWxzZSBjW24+PjJdPTA7aWYoKGNbaD4+Ml18MCkhPTA/KGNbbz4+Ml09V0koY1tnPj4yXXwwLGNbaD4+Ml18MCxjW2o+PjJdfDApfDAsKGNbbz4+Ml18MCkhPTApOjApY1tuPj4yXT1jW28+PjJdO2lmKChkWyhjW2c+PjJdfDApKzg+PjBdfDB8MCkhPTIpe2Y9Y1tnPj4yXXwwOyRNKGYpO2Y9Y1tuPj4yXXwwO2k9cTtyZXR1cm4gZnwwfWNbcD4+Ml09cXIoY1tjW2w+PjJdPj4yXXwwKXwwO2lmKGNbcD4+Ml18MCljW24+PjJdPWNbcD4+Ml07aWYoIShYRihjW2w+PjJdfDAsMSxtLDApfDApKXtjW2s+PjJdPWdyKChjWyhjW20+PjJdfDApKzU2Pj4yXXwwKSsyOHwwKXwwO2lmKCEoY1trPj4yXXwwKSlGZyhjW2NbbD4+Ml0+PjJdfDAsayk7Y1soY1tsPj4yXXwwKSs0ND4+Ml09Y1trPj4yXTtRQihjW20+PjJdfDApfWFbKGNbbD4+Ml18MCkrMjA+PjBdPTE7X00oY1tsPj4yXXwwKTtmPWNbZz4+Ml18MDskTShmKTtmPWNbbj4+Ml18MDtpPXE7cmV0dXJuIGZ8MH1mdW5jdGlvbiBRZyhiKXtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTA7bT1pO2k9aSszMnwwO2Q9bSsyOHwwO2U9bSsyNHwwO2Y9bSsyMHwwO2o9bSsxNnwwO2w9bSsxMnwwO2c9bSs4fDA7aD1tKzR8MDtrPW07Y1tkPj4yXT1iO2lmKChjWyhjW2Q+PjJdfDApKzg0Pj4yXXwwKSE9MTY5MTM1MjE5MSl7aT1tO3JldHVybn1pZihwdShjW2Q+PjJdfDApfDApe2k9bTtyZXR1cm59WUkoY1tkPj4yXXwwLDApO1pJKGNbZD4+Ml18MCk7Y1tmPj4yXT0wO3doaWxlKDEpe2lmKChjW2Y+PjJdfDApPj0oY1soY1tkPj4yXXwwKSsyMD4+Ml18MCkpYnJlYWs7Y1tqPj4yXT0oY1soY1tkPj4yXXwwKSsxNj4+Ml18MCkrKGNbZj4+Ml08PDQpO2lmKChjWyhjW2o+PjJdfDApKzQ+PjJdfDApIT0wPyhMQihjWyhjW2o+PjJdfDApKzQ+PjJdfDApfDAsY1soY1tqPj4yXXwwKSs0Pj4yXT0wLChjW2Y+PjJdfDApIT0xKTowKWNbKGNbaj4+Ml18MCkrMTI+PjJdPTA7Y1tmPj4yXT0oY1tmPj4yXXwwKSsxfWlmKGNbKGNbKGNbZD4+Ml18MCkrMTY+PjJdfDApKzE2KzEyPj4yXXwwKXlqKGNbKGNbKGNbZD4+Ml18MCkrMTY+PjJdfDApKzE2KzEyPj4yXXwwKTt1dShjW2Q+PjJdfDApO01CKGNbZD4+Ml18MCk7Y1tlPj4yXT1jWyhjW2Q+PjJdfDApKzM0OCs4Pj4yXTt3aGlsZSgxKXtpZighKGNbZT4+Ml18MCkpYnJlYWs7Y1tnPj4yXT1jWyhjW2U+PjJdfDApKzg+PjJdO2Rve211KGNbZD4+Ml18MCxjW2c+PjJdfDApO2NbbD4+Ml09Y1soY1tnPj4yXXwwKSs4Pj4yXTtUZihjW2Q+PjJdfDAsY1tnPj4yXXwwKTtjW2c+PjJdPWNbbD4+Ml19d2hpbGUoKGNbZz4+Ml18MCkhPTApO2NbZT4+Ml09Y1tjW2U+PjJdPj4yXX1BaigoY1tkPj4yXXwwKSszNDh8MCk7Y1tlPj4yXT1jWyhjW2Q+PjJdfDApKzM2NCs4Pj4yXTt3aGlsZSgxKXtpZighKGNbZT4+Ml18MCkpYnJlYWs7Y1toPj4yXT1jWyhjW2U+PjJdfDApKzg+PjJdO2NbZj4+Ml09MDt3aGlsZSgxKXtpZigoY1tmPj4yXXwwKT49MylicmVhaztpZihjWyhjW2g+PjJdfDApKygoY1tmPj4yXXwwKSoyMHwwKSsxNj4+Ml18MClRYltjWyhjW2g+PjJdfDApKygoY1tmPj4yXXwwKSoyMHwwKSsxNj4+Ml0mMjU1XShjWyhjW2g+PjJdfDApKygoY1tmPj4yXXwwKSoyMHwwKSs4Pj4yXXwwKTtjW2Y+PjJdPShjW2Y+PjJdfDApKzF9VGYoY1tkPj4yXXwwLGNbaD4+Ml18MCk7Y1tlPj4yXT1jW2NbZT4+Ml0+PjJdfUFqKChjW2Q+PjJdfDApKzM2NHwwKTtjW2U+PjJdPWNbKGNbZD4+Ml18MCkrMzIwKzg+PjJdO3doaWxlKDEpe2lmKCEoY1tlPj4yXXwwKSlicmVhaztjW2s+PjJdPWNbKGNbZT4+Ml18MCkrOD4+Ml07aWYoY1soY1trPj4yXXwwKSsxMj4+Ml18MClRYltjWyhjW2s+PjJdfDApKzEyPj4yXSYyNTVdKGNbKGNbaz4+Ml18MCkrOD4+Ml18MCk7a0koY1tkPj4yXXwwLGNbaz4+Ml18MCk7VGYoY1tkPj4yXXwwLGNbaz4+Ml18MCk7Y1tlPj4yXT1jW2NbZT4+Ml0+PjJdfUFqKChjW2Q+PjJdfDApKzMyMHwwKTtsZyhjW2Q+PjJdfDAsMCk7Y2goY1soY1tkPj4yXXwwKSsyNDQ+PjJdfDApO2NbKGNbZD4+Ml18MCkrODQ+PjJdPS0xMjU0Nzg2NzY4O1RmKGNbZD4+Ml18MCxjWyhjWyhjW2Q+PjJdfDApKzE2Pj4yXXwwKSsxNisxMj4+Ml18MCk7Y1soY1tkPj4yXXwwKSs4ND4+Ml09LTE2MjM0NDYyMjE7aWYoYVsoY1tkPj4yXXwwKSsyNTYrNj4+MF18MClLZChjWyhjW2Q+PjJdfDApKzI1NiszMj4+Ml18MCk7S2QoY1tkPj4yXXwwKTtpPW07cmV0dXJufWZ1bmN0aW9uIFJnKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MDtkPWk7aT1pKzE2fDA7Yj1kKzh8MDtlPWQrNHwwO2NbZT4+Ml09YTtpZighKGNbY1tlPj4yXT4+Ml18MCkpe1JkKDIxLDQ0MDA0LGQpO2NbYj4+Ml09MTtlPWNbYj4+Ml18MDtpPWQ7cmV0dXJuIGV8MH1lbHNle2NbYj4+Ml09MDtlPWNbYj4+Ml18MDtpPWQ7cmV0dXJuIGV8MH1yZXR1cm4gMH1mdW5jdGlvbiBTZyhhLGIpe2E9YXwwO2I9YnwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wO2g9aTtpPWkrMzJ8MDtlPWgrMjB8MDtmPWgrMTZ8MDtqPWgrOHwwO2c9aDtjW2U+PjJdPWE7Y1tmPj4yXT1iO3FJKGNbY1tlPj4yXT4+Ml18MCxqKXwwO2I9ajthPShjW2Y+PjJdfDApKzEyOHwwO2E9UVIoY1tiPj4yXXwwLGNbYis0Pj4yXXwwLGNbYT4+Ml18MCxjW2ErND4+Ml18MCl8MDthPWFTKGF8MCxDfDAsMWU2LDApfDA7Yj1nO2NbYj4+Ml09YTtjW2IrND4+Ml09QztpZihjWyhjW2U+PjJdfDApKzE5Mj4+Ml18MCl7aj1nO19iW2NbKGNbZT4+Ml18MCkrMTkyPj4yXSYyNTVdKGNbKGNbZT4+Ml18MCkrMTk2Pj4yXXwwLGNbKGNbZj4+Ml18MCkrMTc2Pj4yXXwwLGNbaj4+Ml18MCxjW2orND4+Ml18MCl9aWYoISgoZFsoY1tlPj4yXXwwKSs3Nj4+MF18MCkmMikpe2o9Y1tmPj4yXXwwO2o9aisxMjh8MDtiPWo7Y1tiPj4yXT0wO2o9ais0fDA7Y1tqPj4yXT0wO2k9aDtyZXR1cm59V2JbY1soY1tlPj4yXXwwKSsxODQ+PjJdJjI1NV0oMixjWyhjW2U+PjJdfDApKzE4OD4+Ml18MCxjW2Y+PjJdfDAsZyl8MDtqPWNbZj4+Ml18MDtqPWorMTI4fDA7Yj1qO2NbYj4+Ml09MDtqPWorNHwwO2Nbaj4+Ml09MDtpPWg7cmV0dXJufWZ1bmN0aW9uIFRnKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MDtlPWk7aT1pKzE2fDA7Yj1lKzR8MDtkPWU7Y1tiPj4yXT1hO2NbZD4+Ml09MDtpZighKChjWyhjW2I+PjJdfDApKzIwPj4yXXwwKSE9NzcwODM3OTIzPyhjWyhjW2I+PjJdfDApKzIwPj4yXXwwKSE9ODMyMzE3ODExOjApKWNbZD4+Ml09VmcoY1tiPj4yXXwwKXwwO2N2KGNbYj4+Ml18MCk7aT1lO3JldHVybiBjW2Q+PjJdfDB9ZnVuY3Rpb24gVWcoYSxiKXthPWF8MDtiPWJ8MDt2YXIgZT0wLGY9MCxnPTAsaD0wO2g9aTtpPWkrMTZ8MDtlPWgrOHwwO2Y9aCs0fDA7Zz1oO2NbZj4+Ml09YTtjW2c+PjJdPWI7aWYoKGNbZz4+Ml18MCk9PTMwODI/MTooZFsoY1tmPj4yXXwwKSs2OT4+MF18MHwwKSE9MCl7Y1tlPj4yXT1aTShjW2Y+PjJdfDApfDA7Yj1jW2U+PjJdfDA7aT1oO3JldHVybiBifDB9ZWxzZXtjW2U+PjJdPWNbZz4+Ml0mY1soY1tmPj4yXXwwKSs1Nj4+Ml07Yj1jW2U+PjJdfDA7aT1oO3JldHVybiBifDB9cmV0dXJuIDB9ZnVuY3Rpb24gVmcoYSl7YT1hfDA7dmFyIGQ9MCxmPTAsZz0wLGg9MCxqPTAsaz0wO2g9aTtpPWkrMTZ8MDtnPWg7ZD1oKzh8MDtmPWgrNHwwO2NbZD4+Ml09YTtjW2Y+PjJdPWNbY1tkPj4yXT4+Ml07QkkoY1tkPj4yXXwwKXwwO2E9Y1tkPj4yXXwwO2lmKChjWyhjW2Q+PjJdfDApKzM2Pj4yXXwwKT49MCl7dUkoYSl8MDtUZihjW2Y+PjJdfDAsY1soY1tkPj4yXXwwKSsxMDg+PjJdfDApO2NbKGNbZD4+Ml18MCkrMTA4Pj4yXT0wO2lmKChlWyhjW2Q+PjJdfDApKzE0ND4+MV18MCk+Pj41JjEpe2c9KGNbZD4+Ml18MCkrMTQ0fDA7YltnPj4xXT1iW2c+PjFdJi0yfDF9fWVsc2UgaWYoKGNbYSs0MD4+Ml18MCkhPTA/KGJbKGNbZD4+Ml18MCkrMTQ0Pj4xXSYxfDApIT0wOjApe2s9Y1tmPj4yXXwwO2o9Y1soY1tkPj4yXXwwKSs0MD4+Ml18MDthPShjWyhjW2Q+PjJdfDApKzEwOD4+Ml18MCkhPTA/MTgzOTE6MDtjW2c+PjJdPWNbKGNbZD4+Ml18MCkrMTA4Pj4yXTtqZyhrLGosYSxnKTtUZihjW2Y+PjJdfDAsY1soY1tkPj4yXXwwKSsxMDg+PjJdfDApO2NbKGNbZD4+Ml18MCkrMTA4Pj4yXT0wfVlNKGNbZD4+Ml18MCk7az0oY1tkPj4yXXwwKSs1NnwwO2Nbaz4+Ml09MDtjW2srND4+Ml09MDtjWyhjW2Q+PjJdfDApKzIwPj4yXT0xMjI0Mzg0Mzc0O2k9aDtyZXR1cm4gY1soY1tkPj4yXXwwKSs0MD4+Ml0mY1soY1tmPj4yXXwwKSs1Nj4+Ml18MH1mdW5jdGlvbiBXZyhiKXtiPWJ8MDt2YXIgZD0wLGU9MDtkPWk7aT1pKzE2fDA7ZT1kO2NbZT4+Ml09YjtjWyhjW2U+PjJdfDApKzIwPj4yXT03NzA4Mzc5MjM7Y1soY1tlPj4yXXwwKSszNj4+Ml09LTE7Y1soY1tlPj4yXXwwKSs0MD4+Ml09MDthWyhjW2U+PjJdfDApKzE0Mj4+MF09MjtjWyhjW2U+PjJdfDApKzQ0Pj4yXT0wO2NbKGNbZT4+Ml18MCkrMzI+PjJdPTE7YVsoY1tlPj4yXXwwKSsxNDM+PjBdPS0xO2NbKGNbZT4+Ml18MCkrNDg+PjJdPTA7Yj0oY1tlPj4yXXwwKSs2NHwwO2NbYj4+Ml09MDtjW2IrND4+Ml09MDtpPWQ7cmV0dXJufWZ1bmN0aW9uIFhnKGEpe2E9YXwwO3ZhciBiPTAsZD0wO2Q9aTtpPWkrMTZ8MDtiPWQ7Y1tiPj4yXT1hO2lmKCgoZVsoY1tiPj4yXXwwKSs4Pj4xXXwwKSY5MzEyfDApPT0wPyhjWyhjW2I+PjJdfDApKzI0Pj4yXXwwKT09MDowKXtpPWQ7cmV0dXJufVhNKGNbYj4+Ml18MCk7aT1kO3JldHVybn1mdW5jdGlvbiBZZyhhKXthPWF8MDt2YXIgZD0wLGY9MCxnPTAsaD0wO2c9aTtpPWkrMTZ8MDtkPWcrOHwwO2Y9Zys0fDA7aD1nO2NbZj4+Ml09YTthPShjWyhjW2Y+PjJdfDApKzEyPj4yXXwwKSsoY1tjW2Y+PjJdPj4yXXwwKXwwO2NbaD4+Ml09YTtjW2g+PjJdPShjW2g+PjJdfDApPD0wPzE6YTtpZihPeChjW2Y+PjJdfDAsY1toPj4yXXwwLDEpfDApe2NbZD4+Ml09NztoPWNbZD4+Ml18MDtpPWc7cmV0dXJuIGh8MH1lbHNle1ZSKChjWyhjW2Y+PjJdfDApKzE2Pj4yXXwwKSsoY1soY1tmPj4yXXwwKSsxMj4+Ml18MCl8MCwwLGNbY1tmPj4yXT4+Ml18MCl8MDtoPShjW2Y+PjJdfDApKzEyfDA7Y1toPj4yXT0oY1toPj4yXXwwKSsoY1tjW2Y+PjJdPj4yXXwwKTtoPShjW2Y+PjJdfDApKzh8MDtiW2g+PjFdPShlW2g+PjFdfDApJi0xNjg5NztjW2Q+PjJdPTA7aD1jW2Q+PjJdfDA7aT1nO3JldHVybiBofDB9cmV0dXJuIDB9ZnVuY3Rpb24gWmcoYixmKXtiPWJ8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wO2s9aTtpPWkrMTZ8MDtnPWsrNHwwO2g9aztqPWsrOHwwO2NbaD4+Ml09YjthW2o+PjBdPWY7ZG8gaWYoY1toPj4yXXwwKXtpZigoKGVbKGNbaD4+Ml18MCkrOD4+MV18MCkmNTE0fDApPT01MTQ/KGRbKGNbaD4+Ml18MCkrMTA+PjBdfDB8MCk9PShkW2o+PjBdfDB8MCk6MCl7Y1tnPj4yXT1jWyhjW2g+PjJdfDApKzE2Pj4yXTticmVha31pZigoZVsoY1toPj4yXXwwKSs4Pj4xXXwwKSYxKXtjW2c+PjJdPTA7YnJlYWt9ZWxzZXtjW2c+PjJdPVdNKGNbaD4+Ml18MCxhW2o+PjBdfDApfDA7YnJlYWt9fWVsc2UgY1tnPj4yXT0wO3doaWxlKDApO2k9aztyZXR1cm4gY1tnPj4yXXwwfWZ1bmN0aW9uIF9nKGIsZil7Yj1ifDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTA7bD1pO2k9aSsxNnwwO2o9bCs4fDA7Zz1sKzR8MDtoPWwrMTJ8MDtrPWw7Y1tnPj4yXT1iO2FbaD4+MF09ZjtjW2s+PjJdPWNbZz4+Ml07aWYoKChlWyhjW2s+PjJdfDApKzg+PjFdfDApJjJ8MCkhPTA/KGRbKGNbZz4+Ml18MCkrMTA+PjBdfDB8MCk9PShkW2g+PjBdfDB8MCk6MCl7Y1tqPj4yXT1jWyhjW2s+PjJdfDApKzEyPj4yXTtrPWNbaj4+Ml18MDtpPWw7cmV0dXJuIGt8MH1iPWVbKGNbaz4+Ml18MCkrOD4+MV18MDtpZigoZVsoY1trPj4yXXwwKSs4Pj4xXXwwKSYxNil7Zj1jWyhjW2s+PjJdfDApKzEyPj4yXXwwO2lmKGImMTYzODQpe2Nbaj4+Ml09ZisoY1tjW2s+PjJdPj4yXXwwKTtrPWNbaj4+Ml18MDtpPWw7cmV0dXJuIGt8MH1lbHNle2Nbaj4+Ml09ZjtrPWNbaj4+Ml18MDtpPWw7cmV0dXJuIGt8MH19ZWxzZSBpZihiJjEpe2Nbaj4+Ml09MDtrPWNbaj4+Ml18MDtpPWw7cmV0dXJuIGt8MH1lbHNle2Nbaj4+Ml09Vk0oY1tnPj4yXXwwLGFbaD4+MF18MCl8MDtrPWNbaj4+Ml18MDtpPWw7cmV0dXJuIGt8MH1yZXR1cm4gMH1mdW5jdGlvbiAkZyhiKXtiPWJ8MDt2YXIgZD0wLGY9MCxnPTAsaj0wLGs9MCxsPTAuMDtrPWk7aT1pKzMyfDA7Zj1rKzh8MDtnPWsrMTZ8MDtqPWs7Y1tnPj4yXT1iO2Q9Y1tnPj4yXXwwO2lmKChlWyhjW2c+PjJdfDApKzg+PjFdfDApJjgpe2hbZj4+M109K2hbZD4+M107bD0raFtmPj4zXTtpPWs7cmV0dXJuICtsfWI9Y1tnPj4yXXwwO2lmKChlW2QrOD4+MV18MCkmNCl7aj1iO2hbZj4+M109KygoY1tqPj4yXXwwKT4+PjApKzQyOTQ5NjcyOTYuMCorKGNbais0Pj4yXXwwKTtsPStoW2Y+PjNdO2k9aztyZXR1cm4gK2x9aWYoKGVbYis4Pj4xXXwwKSYxOCl7aFtqPj4zXT0wLjA7ZXooY1soY1tnPj4yXXwwKSsxNj4+Ml18MCxqLGNbKGNbZz4+Ml18MCkrMTI+PjJdfDAsYVsoY1tnPj4yXXwwKSsxMD4+MF18MCl8MDtoW2Y+PjNdPStoW2o+PjNdO2w9K2hbZj4+M107aT1rO3JldHVybiArbH1lbHNle2hbZj4+M109MC4wO2w9K2hbZj4+M107aT1rO3JldHVybiArbH1yZXR1cm4gMC4wfWZ1bmN0aW9uIGFoKGIpe2I9YnwwO3ZhciBkPTAsZj0wLGc9MCxqPTAsaz0wO2s9aTtpPWkrMzJ8MDtkPWsrOHwwO2Y9aysyMHwwO2c9aysxNnwwO2o9aztjW2Y+PjJdPWI7Y1tnPj4yXT1lWyhjW2Y+PjJdfDApKzg+PjFdO2RvIGlmKCEoY1tnPj4yXSY0KSl7aWYoY1tnPj4yXSY4KXtiPUt4KCtoW2NbZj4+Ml0+PjNdKXwwO2o9ZDtjW2o+PjJdPWI7Y1tqKzQ+PjJdPUM7YnJlYWt9aWYoY1tnPj4yXSYxOCl7Zz1qO2NbZz4+Ml09MDtjW2crND4+Ml09MDtNaShjWyhjW2Y+PjJdfDApKzE2Pj4yXXwwLGosY1soY1tmPj4yXXwwKSsxMj4+Ml18MCxhWyhjW2Y+PjJdfDApKzEwPj4wXXwwKXwwO2c9ajtiPWNbZys0Pj4yXXwwO2o9ZDtjW2o+PjJdPWNbZz4+Ml07Y1tqKzQ+PjJdPWI7YnJlYWt9ZWxzZXtqPWQ7Y1tqPj4yXT0wO2Nbais0Pj4yXT0wO2JyZWFrfX1lbHNle2c9Y1tmPj4yXXwwO2I9Y1tnKzQ+PjJdfDA7aj1kO2Nbaj4+Ml09Y1tnPj4yXTtjW2orND4+Ml09Yn13aGlsZSgwKTtqPWQ7Qz1jW2orND4+Ml18MDtpPWs7cmV0dXJuIGNbaj4+Ml18MH1mdW5jdGlvbiBiaChkKXtkPWR8MDt2YXIgZj0wLGc9MCxoPTA7aD1pO2k9aSsxNnwwO2Y9aCs0fDA7Zz1oO2NbZz4+Ml09ZDtkbyBpZigoZVsoY1tnPj4yXXwwKSs4Pj4xXXwwKSYxOCl7aWYoKChlWyhjW2c+PjJdfDApKzg+PjFdfDApJjE2Mzg0fDApIT0wPyhZZyhjW2c+PjJdfDApfDApIT0wOjApe2NbZj4+Ml09NztkPWNbZj4+Ml18MDtpPWg7cmV0dXJuIGR8MH1pZigoY1soY1tnPj4yXXwwKSsyND4+Ml18MCkhPTA/KGNbKGNbZz4+Ml18MCkrMTY+PjJdfDApPT0oY1soY1tnPj4yXXwwKSsyMD4+Ml18MCk6MClicmVhaztpZighKE94KGNbZz4+Ml18MCwoY1soY1tnPj4yXXwwKSsxMj4+Ml18MCkrMnwwLDEpfDApKXthWyhjWyhjW2c+PjJdfDApKzE2Pj4yXXwwKSsoY1soY1tnPj4yXXwwKSsxMj4+Ml18MCk+PjBdPTA7YVsoY1soY1tnPj4yXXwwKSsxNj4+Ml18MCkrKChjWyhjW2c+PjJdfDApKzEyPj4yXXwwKSsxKT4+MF09MDtkPShjW2c+PjJdfDApKzh8MDtiW2Q+PjFdPWVbZD4+MV18MHw1MTI7YnJlYWt9Y1tmPj4yXT03O2Q9Y1tmPj4yXXwwO2k9aDtyZXR1cm4gZHwwfXdoaWxlKDApO2Q9KGNbZz4+Ml18MCkrOHwwO2JbZD4+MV09KGVbZD4+MV18MCkmLTQwOTc7Y1tmPj4yXT0wO2Q9Y1tmPj4yXXwwO2k9aDtyZXR1cm4gZHwwfWZ1bmN0aW9uIGNoKGEpe2E9YXwwO3ZhciBiPTAsZD0wO2Q9aTtpPWkrMTZ8MDtiPWQ7Y1tiPj4yXT1hO2lmKCEoY1tiPj4yXXwwKSl7aT1kO3JldHVybn1YZyhjW2I+PjJdfDApO1RmKGNbKGNbYj4+Ml18MCkrMzI+PjJdfDAsY1tiPj4yXXwwKTtpPWQ7cmV0dXJufWZ1bmN0aW9uIGRoKGIsZCxlLGYsZyl7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7dmFyIGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wO2o9aTtpPWkrMzJ8MDtoPWorMTJ8MDtuPWorOHwwO209ais0fDA7bD1qKzE2fDA7az1qO2NbaD4+Ml09YjtjW24+PjJdPWQ7Y1ttPj4yXT1lO2FbbD4+MF09ZjtjW2s+PjJdPWc7aWYoKGdoKGNbY1toPj4yXT4+Ml18MCxjW24+PjJdfDAsY1ttPj4yXXwwLGFbbD4+MF18MCxjW2s+PjJdfDApfDApIT0xOCl7aT1qO3JldHVybn1yZShjW2g+PjJdfDApO2k9ajtyZXR1cm59ZnVuY3Rpb24gZWgoYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTA7aD1pO2k9aSsxNnwwO2U9aCs4fDA7Zj1oKzR8MDtnPWg7Y1tlPj4yXT1hO2NbZj4+Ml09YjtjW2c+PjJdPWQ7aWYoISgoY1tmPj4yXXwwKT09MHwoY1tmPj4yXXwwKT09KC0xfDApKSlRYltjW2Y+PjJdJjI1NV0oY1tlPj4yXXwwKTtpZighKGNbZz4+Ml18MCkpe2k9aDtyZXR1cm4gMTh9cmUoY1tnPj4yXXwwKTtpPWg7cmV0dXJuIDE4fWZ1bmN0aW9uIGZoKGEsZCl7YT1hfDA7ZD0rZDt2YXIgZT0wLGY9MCxnPTA7Zz1pO2k9aSsxNnwwO2U9Zys4fDA7Zj1nO2NbZT4+Ml09YTtoW2Y+PjNdPWQ7aWgoY1tlPj4yXXwwKTtpZihxRygraFtmPj4zXSl8MCl7aT1nO3JldHVybn1oW2NbZT4+Ml0+PjNdPStoW2Y+PjNdO2JbKGNbZT4+Ml18MCkrOD4+MV09ODtpPWc7cmV0dXJufWZ1bmN0aW9uIGdoKGYsZyxoLGosayl7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7dmFyIGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTA7dT1pO2k9aSs0OHwwO249dSsyOHwwO289dSsyNHwwO2w9dSsyMHwwO3Y9dSsxNnwwO3A9dSszNHwwO3E9dSsxMnwwO3Q9dSs4fDA7cz11KzR8MDtyPXUrMzJ8MDttPXU7Y1tvPj4yXT1mO2NbbD4+Ml09ZztjW3Y+PjJdPWg7YVtwPj4wXT1qO2NbcT4+Ml09aztjW3Q+PjJdPWNbdj4+Ml07YltyPj4xXT0wO2o9Y1tvPj4yXXwwO2lmKCEoY1tsPj4yXXwwKSl7aWgoaik7Y1tuPj4yXT0wO3Y9Y1tuPj4yXXwwO2k9dTtyZXR1cm4gdnwwfWlmKGNbaiszMj4+Ml18MCljW3M+PjJdPWNbKGNbKGNbbz4+Ml18MCkrMzI+PjJdfDApKzk2Pj4yXTtlbHNlIGNbcz4+Ml09MWU5O2Jbcj4+MV09KGRbcD4+MF18MCk9PTA/MTY6MjtpZigoY1t0Pj4yXXwwKTwwKXthOmRvIGlmKChkW3A+PjBdfDApPT0xKXtjW3Q+PjJdPUpmKGNbbD4+Ml18MCl8MDtpZigoY1t0Pj4yXXwwKT4oY1tzPj4yXXwwKSljW3Q+PjJdPShjW3M+PjJdfDApKzF9ZWxzZXtjW3Q+PjJdPTA7d2hpbGUoMSl7aWYoKGNbdD4+Ml18MCk+KGNbcz4+Ml18MCkpYnJlYWsgYTtpZighKGFbKGNbbD4+Ml18MCkrKGNbdD4+Ml18MCk+PjBdfGFbKGNbbD4+Ml18MCkrKChjW3Q+PjJdfDApKzEpPj4wXSkpYnJlYWsgYTtjW3Q+PjJdPShjW3Q+PjJdfDApKzJ9fXdoaWxlKDApO2Jbcj4+MV09ZVtyPj4xXXw1MTJ9ZG8gaWYoKGNbcT4+Ml18MCkhPSgtMXwwKSl7dj0oY1txPj4yXXwwKT09MTcwO1hnKGNbbz4+Ml18MCk7aj1jW2w+PjJdfDA7Y1soY1tvPj4yXXwwKSsxNj4+Ml09ajtpZih2KXtjWyhjW28+PjJdfDApKzIwPj4yXT1qO3Y9a3UoY1soY1tvPj4yXXwwKSszMj4+Ml18MCxjWyhjW28+PjJdfDApKzIwPj4yXXwwKXwwO2NbKGNbbz4+Ml18MCkrMjQ+PjJdPXY7YnJlYWt9ZWxzZXtjWyhjW28+PjJdfDApKzM2Pj4yXT1jW3E+PjJdO2Jbcj4+MV09ZVtyPj4xXXwoKGNbcT4+Ml18MCk9PTA/MjA0ODoxMDI0KTticmVha319ZWxzZXtjW20+PjJdPWNbdD4+Ml07aWYoZVtyPj4xXSY1MTIpY1ttPj4yXT0oY1ttPj4yXXwwKSsoKGRbcD4+MF18MCk9PTE/MToyKTtpZigoY1t0Pj4yXXwwKT4oY1tzPj4yXXwwKSl7Y1tuPj4yXT0xODt2PWNbbj4+Ml18MDtpPXU7cmV0dXJuIHZ8MH1pZighKE54KGNbbz4+Ml18MCwoY1ttPj4yXXwwKT4zMj9jW20+PjJdfDA6MzIpfDApKXtUUihjWyhjW28+PjJdfDApKzE2Pj4yXXwwLGNbbD4+Ml18MCxjW20+PjJdfDApfDA7YnJlYWt9Y1tuPj4yXT03O3Y9Y1tuPj4yXXwwO2k9dTtyZXR1cm4gdnwwfXdoaWxlKDApO2NbKGNbbz4+Ml18MCkrMTI+PjJdPWNbdD4+Ml07YlsoY1tvPj4yXXwwKSs4Pj4xXT1iW3I+PjFdfDA7YVsoY1tvPj4yXXwwKSsxMD4+MF09KGRbcD4+MF18MCk9PTA/MTpkW3A+PjBdfDA7aWYoKGRbKGNbbz4+Ml18MCkrMTA+PjBdfDApIT0xPyhVTShjW28+PjJdfDApfDApIT0wOjApe2Nbbj4+Ml09Nzt2PWNbbj4+Ml18MDtpPXU7cmV0dXJuIHZ8MH1pZigoY1t0Pj4yXXwwKT4oY1tzPj4yXXwwKSl7Y1tuPj4yXT0xODt2PWNbbj4+Ml18MDtpPXU7cmV0dXJuIHZ8MH1lbHNle2Nbbj4+Ml09MDt2PWNbbj4+Ml18MDtpPXU7cmV0dXJuIHZ8MH1yZXR1cm4gMH1mdW5jdGlvbiBoaChhLGQsZil7YT1hfDA7ZD1kfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wO2o9aTtpPWkrMTZ8MDtnPWorOHwwO2g9ajtjW2c+PjJdPWE7YT1oO2NbYT4+Ml09ZDtjW2ErND4+Ml09ZjtpZigoZVsoY1tnPj4yXXwwKSs4Pj4xXXwwKSY5MzEyKXthPWg7VE0oY1tnPj4yXXwwLGNbYT4+Ml18MCxjW2ErND4+Ml18MCk7aT1qO3JldHVybn1lbHNle2Y9aDtoPWNbZis0Pj4yXXwwO2E9Y1tnPj4yXXwwO2NbYT4+Ml09Y1tmPj4yXTtjW2ErND4+Ml09aDtiWyhjW2c+PjJdfDApKzg+PjFdPTQ7aT1qO3JldHVybn19ZnVuY3Rpb24gaWgoYSl7YT1hfDA7dmFyIGQ9MCxmPTA7ZD1pO2k9aSsxNnwwO2Y9ZDtjW2Y+PjJdPWE7YT1jW2Y+PjJdfDA7aWYoKGVbKGNbZj4+Ml18MCkrOD4+MV18MCkmOTMxMil7bUcoYSk7aT1kO3JldHVybn1lbHNle2JbYSs4Pj4xXT0xO2k9ZDtyZXR1cm59fWZ1bmN0aW9uIGpoKGEsZCl7YT1hfDA7ZD1kfDA7dmFyIGY9MCxnPTAsaD0wLGo9MDtqPWk7aT1pKzE2fDA7Zj1qKzh8MDtnPWorNHwwO2g9ajtjW2Y+PjJdPWE7Y1tnPj4yXT1kO2NbaD4+Ml09MDtpZigoZVsoY1tmPj4yXXwwKSs4Pj4xXXwwKSY5MzEyKW1HKGNbZj4+Ml18MCk7YT1jW2Y+PjJdfDA7ZD1jW2c+PjJdfDA7Y1thPj4yXT1jW2Q+PjJdO2NbYSs0Pj4yXT1jW2QrND4+Ml07Y1thKzg+PjJdPWNbZCs4Pj4yXTtjW2ErMTI+PjJdPWNbZCsxMj4+Ml07Y1thKzE2Pj4yXT1jW2QrMTY+PjJdO2E9KGNbZj4+Ml18MCkrOHwwO2JbYT4+MV09KGVbYT4+MV18MCkmLTEwMjU7aWYoISgoZVsoY1tmPj4yXXwwKSs4Pj4xXXwwKSYxOCkpe2g9Y1toPj4yXXwwO2k9ajtyZXR1cm4gaHwwfWlmKChlWyhjW2c+PjJdfDApKzg+PjFdfDApJjIwNDgpe2g9Y1toPj4yXXwwO2k9ajtyZXR1cm4gaHwwfWE9KGNbZj4+Ml18MCkrOHwwO2JbYT4+MV09ZVthPj4xXXwwfDQwOTY7Y1toPj4yXT1iaChjW2Y+PjJdfDApfDA7aD1jW2g+PjJdfDA7aT1qO3JldHVybiBofDB9ZnVuY3Rpb24ga2goZCxlKXtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTA7aD1pO2k9aSsxNnwwO2Y9aCs0fDA7Zz1oO2NbZj4+Ml09ZDtjW2c+PjJdPWU7WGcoY1tmPj4yXXwwKTtiWyhjW2Y+PjJdfDApKzg+PjFdPTE2NDAwO2NbKGNbZj4+Ml18MCkrMTI+PjJdPTA7aWYoKGNbZz4+Ml18MCk8MCljW2c+PjJdPTA7Y1tjW2Y+PjJdPj4yXT1jW2c+PjJdO2FbKGNbZj4+Ml18MCkrMTA+PjBdPTE7Y1soY1tmPj4yXXwwKSsxNj4+Ml09MDtpPWg7cmV0dXJufWZ1bmN0aW9uIGxoKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MDtlPWk7aT1pKzE2fDA7Yj1lKzR8MDtkPWU7Y1tiPj4yXT1hO2NbZD4+Ml09NDMzNzg7aWYoKGNbYj4+Ml18MCkhPTUxNil7Y1tiPj4yXT1jW2I+PjJdJjI1NTtpZigoY1tiPj4yXXwwKT49MCYoY1tiPj4yXXwwKTwyNz8oY1s2MjQwKyhjW2I+PjJdPDwyKT4+Ml18MCkhPTA6MCljW2Q+PjJdPWNbNjI0MCsoY1tiPj4yXTw8Mik+PjJdfWVsc2UgY1tkPj4yXT00MzM5MjtpPWU7cmV0dXJuIGNbZD4+Ml18MH1mdW5jdGlvbiBtaChiKXtiPWJ8MDt2YXIgZT0wLGY9MDtmPWk7aT1pKzE2fDA7ZT1mO2NbZT4+Ml09YjtpZihkWyhjW2U+PjJdfDApKzY5Pj4wXXwwKXtpPWY7cmV0dXJufWlmKGRbKGNbZT4+Ml18MCkrNzA+PjBdfDApe2k9ZjtyZXR1cm59YVsoY1tlPj4yXXwwKSs2OT4+MF09MTtpZigoY1soY1tlPj4yXXwwKSsxNjg+PjJdfDApPjApY1soY1tlPj4yXXwwKSsyNDg+PjJdPTE7Yj0oY1tlPj4yXXwwKSsyNTZ8MDtjW2I+PjJdPShjW2I+PjJdfDApKzE7aT1mO3JldHVybn1mdW5jdGlvbiBuaChhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTA7ZT1pO2k9aSsxNnwwO2I9ZSs4fDA7ZD1lKzR8MDtjW2Q+PjJdPWE7aWYoIShjW2Q+PjJdfDApKXtSZCgyMSw0MzMzOCxlKTtjW2I+PjJdPTE7YT1jW2I+PjJdfDA7aT1lO3JldHVybiBhfDB9ZWxzZXtjW2I+PjJdPVJnKGNbZD4+Ml18MCl8MDthPWNbYj4+Ml18MDtpPWU7cmV0dXJuIGF8MH1yZXR1cm4gMH1mdW5jdGlvbiBvaChmKXtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTA7bT1pO2k9aSsxNnwwO2c9bSsxMnwwO2g9bSs4fDA7aj1tKzR8MDtrPW07Y1toPj4yXT1mO2lmKChjWyhjW2g+PjJdfDApKzIwPj4yXXwwKSE9NzcwODM3OTIzKVlkKGNbaD4+Ml18MCl8MDtjW2o+PjJdPWNbY1toPj4yXT4+Ml07Zj1jW2g+PjJdfDA7aWYoYVsoY1tqPj4yXXwwKSs2OT4+MF18MCl7Y1tmKzQwPj4yXT03O2NbZz4+Ml09NztsPWNbZz4+Ml18MDtpPW07cmV0dXJuIGx8MH1pZigoY1tmKzM2Pj4yXXwwKTw9MD8oYlsoY1toPj4yXXwwKSsxNDQ+PjFdJjF8MCkhPTA6MCl7Y1soY1toPj4yXXwwKSs0MD4+Ml09MTc7Y1trPj4yXT0xfWVsc2V7aWYoKGNbKGNbaD4+Ml18MCkrMzY+PjJdfDApPDApe2lmKCEoY1soY1tqPj4yXXwwKSsxNTY+PjJdfDApKWNbKGNbaj4+Ml18MCkrMjQ4Pj4yXT0wO2lmKCEoKGNbKGNbaj4+Ml18MCkrMTkyPj4yXXwwKT09MD8oZFsoY1tqPj4yXXwwKSs3Nj4+MF0mMnwwKT09MDowKSlsPTEzO2lmKCgobHwwKT09MTM/KGFbKGNbaj4+Ml18MCkrMTQ4KzU+PjBdfDApPT0wOjApPyhjWyhjW2g+PjJdfDApKzE3Nj4+Ml18MCkhPTA6MClxSShjW2Nbaj4+Ml0+PjJdfDAsKGNbaD4+Ml18MCkrMTI4fDApfDA7bD0oY1tqPj4yXXwwKSsxNTZ8MDtjW2w+PjJdPShjW2w+PjJdfDApKzE7aWYoISgoZVsoY1toPj4yXXwwKSsxNDQ+PjFdfDApPj4+NyYxKSl7bD0oY1tqPj4yXXwwKSsxNjR8MDtjW2w+PjJdPShjW2w+PjJdfDApKzF9aWYoKGVbKGNbaD4+Ml18MCkrMTQ0Pj4xXXwwKT4+PjgmMSl7bD0oY1tqPj4yXXwwKSsxNjB8MDtjW2w+PjJdPShjW2w+PjJdfDApKzF9Y1soY1toPj4yXXwwKSszNj4+Ml09MH1pZigoZVsoY1toPj4yXXwwKSsxNDQ+PjFdfDApPj4+MiYzKWNbaz4+Ml09ckkoY1toPj4yXXwwKXwwO2Vsc2V7bD0oY1tqPj4yXXwwKSsxNjh8MDtjW2w+PjJdPShjW2w+PjJdfDApKzE7Y1trPj4yXT1zSShjW2g+PjJdfDApfDA7bD0oY1tqPj4yXXwwKSsxNjh8MDtjW2w+PjJdPShjW2w+PjJdfDApKy0xfWlmKChjW2s+PjJdfDApIT0xMDA/KGw9KGNbaD4+Ml18MCkrMTI4fDAsZj1jW2wrND4+Ml18MCwoZnwwKT4wfChmfDApPT0wJihjW2w+PjJdfDApPj4+MD4wKTowKVNnKGNbaj4+Ml18MCxjW2g+PjJdfDApO2lmKChjW2s+PjJdfDApPT0xMDE/KGw9dEkoY1tqPj4yXXwwKXwwLGNbKGNbaD4+Ml18MCkrNDA+PjJdPWwsKGNbKGNbaD4+Ml18MCkrNDA+PjJdfDApIT0wKTowKWNbaz4+Ml09MTtjWyhjW2o+PjJdfDApKzUyPj4yXT1jW2s+PjJdO2lmKDc9PShVZyhjW2NbaD4+Ml0+PjJdfDAsY1soY1toPj4yXXwwKSs0MD4+Ml18MCl8MCkpY1soY1toPj4yXXwwKSs0MD4+Ml09N31pZigoKGNbaz4+Ml18MCkhPTEwMD8oKGVbKGNbaD4+Ml18MCkrMTQ0Pj4xXXwwKT4+PjkmMXwwKSE9MDowKSYoY1trPj4yXXwwKSE9MTAxKWNbaz4+Ml09dUkoY1toPj4yXXwwKXwwO2NbZz4+Ml09Y1trPj4yXSZjWyhjW2o+PjJdfDApKzU2Pj4yXTtsPWNbZz4+Ml18MDtpPW07cmV0dXJuIGx8MH1mdW5jdGlvbiBwaChhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wO2g9aTtpPWkrMzJ8MDtiPWgrMjB8MDtkPWgrMTZ8MDtnPWgrMTJ8MDtmPWgrOHwwO2o9aCs0fDA7ZT1oO2NbZD4+Ml09YTtjW2o+PjJdPVNlKGNbZD4+Ml18MCl8MDtjW2U+PjJdPVFBKGNbZD4+Ml18MCl8MDtjW2c+PjJdPVZoKGNbZT4+Ml18MCxjW2o+PjJdfDAsLTEsMCxjW2Q+PjJdfDAsZiwwKXwwO2lmKCEoY1tnPj4yXXwwKSl7b0koY1tmPj4yXXwwLGNbZD4+Ml18MCk7emgoY1tmPj4yXXwwLGNbZD4+Ml18MCl8MDtwSShjW2Y+PjJdfDApO1RnKGNbZj4+Ml18MCl8MDtjW2I+PjJdPTA7aj1jW2I+PjJdfDA7aT1oO3JldHVybiBqfDB9aWYoKGNbZz4+Ml18MCk9PTcpbWgoY1tlPj4yXXwwKTtjW2I+PjJdPWNbZz4+Ml07aj1jW2I+PjJdfDA7aT1oO3JldHVybiBqfDB9ZnVuY3Rpb24gcWgoYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTA7aj1pO2k9aSszMnwwO2Q9aisxNnwwO2U9aisxMnwwO2Y9ais4fDA7aD1qKzR8MDtnPWo7Y1tlPj4yXT1hO2NbZj4+Ml09YjtpZighKGNbZj4+Ml18MCkpe2NbZD4+Ml09MDtoPWNbZD4+Ml18MDtpPWo7cmV0dXJuIGh8MH1jW2c+PjJdPShKZihjW2Y+PjJdfDApfDApKzE7Yj1jW2c+PjJdfDA7Y1toPj4yXT1DaChjW2U+PjJdfDAsYiwoKGJ8MCk8MCk8PDMxPj4zMSl8MDtpZihjW2g+PjJdfDApVFIoY1toPj4yXXwwLGNbZj4+Ml18MCxjW2c+PjJdfDApfDA7Y1tkPj4yXT1jW2g+PjJdO2g9Y1tkPj4yXXwwO2k9ajtyZXR1cm4gaHwwfWZ1bmN0aW9uIHJoKGEsZCl7YT1hfDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MDtoPWk7aT1pKzE2fDA7ZT1oKzh8MDtmPWgrNHwwO2c9aDtjW2U+PjJdPWE7Y1tmPj4yXT1kO2NbZz4+Ml09Y1soY1tlPj4yXXwwKSs4Pj4yXTtkPWNbZz4+Ml18MDtpZigoY1tmPj4yXXwwKT4wKXtOeChkLGNbZj4+Ml18MCl8MDtiWyhjW2c+PjJdfDApKzg+PjFdPTgxOTI7Y1tjW2c+PjJdPj4yXT1jWyhjW2U+PjJdfDApKzQ+PjJdO2lmKGNbKGNbZz4+Ml18MCkrMTY+PjJdfDApVlIoY1soY1tnPj4yXXwwKSsxNj4+Ml18MCwwLGNbZj4+Ml18MCl8MH1lbHNle2loKGQpO2NbKGNbZz4+Ml18MCkrMTY+PjJdPTB9aT1oO3JldHVybiBjWyhjW2c+PjJdfDApKzE2Pj4yXXwwfWZ1bmN0aW9uIHNoKGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wO2c9aTtpPWkrMTZ8MDtoPWcrMTJ8MDtlPWc7Zj1nKzh8MDtjW2g+PjJdPWE7YT1lO2NbYT4+Ml09YjtjW2ErND4+Ml09ZDthPWU7Y1tmPj4yXT1DaChjW2g+PjJdfDAsY1thPj4yXXwwLGNbYSs0Pj4yXXwwKXwwO2lmKCEoY1tmPj4yXXwwKSl7aD1jW2Y+PjJdfDA7aT1nO3JldHVybiBofDB9VlIoY1tmPj4yXXwwLDAsY1tlPj4yXXwwKXwwO2g9Y1tmPj4yXXwwO2k9ZztyZXR1cm4gaHwwfWZ1bmN0aW9uIHRoKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MCxmPTAsZz0wLGg9MCxqPTAsaz0wO2o9aTtpPWkrMzJ8MDtkPWorMTZ8MDtrPWorMTJ8MDtmPWorOHwwO2g9ais0fDA7Zz1qO2Nbaz4+Ml09YTtjW2Y+PjJdPWI7Y1toPj4yXT1jW2s+PjJdO2lmKCEoY1toPj4yXXwwKSl7Y1tkPj4yXT1uSSgpfDA7az1jW2Q+PjJdfDA7aT1qO3JldHVybiBrfDB9aWYoKGNbKGNbaD4+Ml18MCkrMTA0Pj4yXXwwKSE9MD8oKGNbZj4+Ml18MCk+PTA/KGNbZj4+Ml18MCk8KGVbKGNbaD4+Ml18MCkrMTQwPj4xXXwwfDApOjApOjApY1tnPj4yXT0oY1soY1toPj4yXXwwKSsxMDQ+PjJdfDApKygoY1tmPj4yXXwwKSo0MHwwKTtlbHNle2xnKGNbY1toPj4yXT4+Ml18MCwyNSk7Y1tnPj4yXT1uSSgpfDB9Y1tkPj4yXT1jW2c+PjJdO2s9Y1tkPj4yXXwwO2k9ajtyZXR1cm4ga3wwfWZ1bmN0aW9uIHVoKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MDtkPWk7aT1pKzE2fDA7ZT1kKzR8MDtiPWQ7Y1tlPj4yXT1hO2NbYj4+Ml09Y1tlPj4yXTtpZighKGNbYj4+Ml18MCkpe2k9ZDtyZXR1cm59ZT1VZyhjW2NbYj4+Ml0+PjJdfDAsY1soY1tiPj4yXXwwKSs0MD4+Ml18MCl8MDtjWyhjW2I+PjJdfDApKzQwPj4yXT1lO2k9ZDtyZXR1cm59ZnVuY3Rpb24gdmgoYixkLGUsZil7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wO289aTtpPWkrMzJ8MDtwPW8rMjh8MDtnPW8rMjR8MDtoPW8rMjB8MDtqPW8rMTZ8MDtuPW8rMTJ8MDttPW8rOHwwO2w9bys0fDA7az1vO2NbcD4+Ml09YjtjW2c+PjJdPWQ7Y1toPj4yXT1lO2Nbaj4+Ml09ZjtjW24+PjJdPTA7Y1ttPj4yXT1jW3A+PjJdO2Nbaz4+Ml09Y1tjW20+PjJdPj4yXTtjW2w+PjJdPXhlKGNbcD4+Ml18MCl8MDtpZighKChjW2c+PjJdfDApPj0wPyhjW2c+PjJdfDApPChjW2w+PjJdfDApOjApKXtwPWNbbj4+Ml18MDtpPW87cmV0dXJuIHB8MH1wPV8oY1tqPj4yXXwwLGNbbD4+Ml18MCl8MDtjW2c+PjJdPShjW2c+PjJdfDApK3A7Y1tuPj4yXT1UYltjW2g+PjJdJjI1NV0oKGNbKGNbbT4+Ml18MCkrMTAwPj4yXXwwKSsoKGNbZz4+Ml18MCkqNDB8MCl8MCl8MDtpZighKGFbKGNbaz4+Ml18MCkrNjk+PjBdfDApKXtwPWNbbj4+Ml18MDtpPW87cmV0dXJuIHB8MH1waShjW2s+PjJdfDApO2Nbbj4+Ml09MDtwPWNbbj4+Ml18MDtpPW87cmV0dXJuIHB8MH1mdW5jdGlvbiB3aChiLGUsZixnLGgsail7Yj1ifDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7dmFyIGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MDtzPWk7aT1pKzQ4fDA7dD1zKzI4fDA7az1zKzI0fDA7bD1zKzIwfDA7bT1zKzE2fDA7bj1zKzEyfDA7bz1zKzMyfDA7cD1zKzh8MDtxPXMrNHwwO3I9cztjW3Q+PjJdPWI7Y1trPj4yXT1lO2NbbD4+Ml09ZjtjW20+PjJdPWc7Y1tuPj4yXT1oO2Fbbz4+MF09ajtjW3A+PjJdPWNbdD4+Ml07Y1tyPj4yXT14aChjW3A+PjJdfDAsY1trPj4yXXwwKXwwO2lmKGNbcj4+Ml18MCl7aWYoISgoY1tuPj4yXXwwKSE9MCYoY1tuPj4yXXwwKSE9KC0xfDApKSl7dD1jW3I+PjJdfDA7aT1zO3JldHVybiB0fDB9UWJbY1tuPj4yXSYyNTVdKGNbbD4+Ml18MCk7dD1jW3I+PjJdfDA7aT1zO3JldHVybiB0fDB9aWYoIShjW2w+PjJdfDApKXt0PWNbcj4+Ml18MDtpPXM7cmV0dXJuIHR8MH1jW3E+PjJdPShjWyhjW3A+PjJdfDApKzExNj4+Ml18MCkrKCgoY1trPj4yXXwwKS0xfDApKjQwfDApO2Nbcj4+Ml09Z2goY1txPj4yXXwwLGNbbD4+Ml18MCxjW20+PjJdfDAsYVtvPj4wXXwwLGNbbj4+Ml18MCl8MDtpZigoY1tyPj4yXXwwKT09MD8oZFtvPj4wXXwwfDApIT0wOjApY1tyPj4yXT1pdShjW3E+PjJdfDAsZFsoY1tjW3A+PjJdPj4yXXwwKSs2Nj4+MF18MCl8MDtsZyhjW2NbcD4+Ml0+PjJdfDAsY1tyPj4yXXwwKTtjW3I+PjJdPVVnKGNbY1twPj4yXT4+Ml18MCxjW3I+PjJdfDApfDA7dD1jW3I+PjJdfDA7aT1zO3JldHVybiB0fDB9ZnVuY3Rpb24geGgoYSxkKXthPWF8MDtkPWR8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wO209aTtpPWkrMzJ8MDtrPW07Zj1tKzE2fDA7Zz1tKzEyfDA7aD1tKzh8MDtqPW0rNHwwO2NbZz4+Ml09YTtjW2g+PjJdPWQ7aWYobmgoY1tnPj4yXXwwKXwwKXtjW2Y+PjJdPUxmKDc2MzQ4KXwwO2w9Y1tmPj4yXXwwO2k9bTtyZXR1cm4gbHwwfWlmKChjWyhjW2c+PjJdfDApKzIwPj4yXXwwKT09NzcwODM3OTIzPyhjWyhjW2c+PjJdfDApKzM2Pj4yXXwwKTwwOjApe2lmKChjW2g+PjJdfDApPj0xPyhjW2g+PjJdfDApPD0oYlsoY1tnPj4yXXwwKSsxNj4+MV18MCk6MCl7Y1toPj4yXT0oY1toPj4yXXwwKSstMTtjW2o+PjJdPShjWyhjW2c+PjJdfDApKzExNj4+Ml18MCkrKChjW2g+PjJdfDApKjQwfDApO1hnKGNbaj4+Ml18MCk7YlsoY1tqPj4yXXwwKSs4Pj4xXT0xO2xnKGNbY1tnPj4yXT4+Ml18MCwwKTtkbyBpZigoZVsoY1tnPj4yXXwwKSsxNDQ+PjFdfDApPj4+OSYxKXtpZighKChjW2g+PjJdfDApPDMyPyhjWyhjW2c+PjJdfDApKzE5Nj4+Ml0mMTw8Y1toPj4yXXwwKSE9MDowKSlsPTEyO2lmKChsfDApPT0xMj8oY1soY1tnPj4yXXwwKSsxOTY+PjJdfDApIT0tMTowKWJyZWFrO2w9KGNbZz4+Ml18MCkrMTQ0fDA7YltsPj4xXT1iW2w+PjFdJi0yfDF9d2hpbGUoMCk7Y1tmPj4yXT0wO2w9Y1tmPj4yXXwwO2k9bTtyZXR1cm4gbHwwfWxnKGNbY1tnPj4yXT4+Ml18MCwyNSk7Y1tmPj4yXT0yNTtsPWNbZj4+Ml18MDtpPW07cmV0dXJuIGx8MH1sZyhjW2NbZz4+Ml0+PjJdfDAsMjEpO2Nbaz4+Ml09Y1soY1tnPj4yXXwwKSsxNzY+PjJdO1JkKDIxLDM5ODMzLGspO2NbZj4+Ml09TGYoNzYzNTYpfDA7bD1jW2Y+PjJdfDA7aT1tO3JldHVybiBsfDB9ZnVuY3Rpb24geWgoZCxlLGYpe2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTA7bj1pO2k9aSszMnwwO2c9bisyMHwwO2g9bisxNnwwO2o9bisxMnwwO2s9bis4fDA7bD1uKzR8MDttPW47Y1toPj4yXT1kO2Nbaj4+Ml09ZTtjW2s+PjJdPWY7aWYoIShjW2g+PjJdfDApKXtjW2c+PjJdPTA7ZT1jW2c+PjJdfDA7aT1uO3JldHVybiBlfDB9YTpkbyBpZihjW2o+PjJdfDApe2NbbD4+Ml09MDt3aGlsZSgxKXtpZigoY1tsPj4yXXwwKT49KGJbKGNbaD4+Ml18MCkrMTg+PjFdfDApKWJyZWFrIGE7Y1ttPj4yXT1jWyhjWyhjW2g+PjJdfDApKzEyMD4+Ml18MCkrKGNbbD4+Ml08PDIpPj4yXTtpZigoKGNbbT4+Ml18MCkhPTA/KGxSKGNbbT4+Ml18MCxjW2o+PjJdfDAsY1trPj4yXXwwKXwwKT09MDowKT8oYVsoY1ttPj4yXXwwKSsoY1trPj4yXXwwKT4+MF18MCk9PTA6MClicmVhaztjW2w+PjJdPShjW2w+PjJdfDApKzF9Y1tnPj4yXT0oY1tsPj4yXXwwKSsxO2U9Y1tnPj4yXXwwO2k9bjtyZXR1cm4gZXwwfXdoaWxlKDApO2NbZz4+Ml09MDtlPWNbZz4+Ml18MDtpPW47cmV0dXJuIGV8MH1mdW5jdGlvbiB6aChhLGQpe2E9YXwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MDtoPWk7aT1pKzMyfDA7az1oKzE2fDA7aj1oKzEyfDA7Zj1oKzh8MDtnPWgrNHwwO2U9aDtjW2s+PjJdPWE7Y1tqPj4yXT1kO2NbZj4+Ml09Y1trPj4yXTtjW2c+PjJdPWNbaj4+Ml07Y1tlPj4yXT0wO3doaWxlKDEpe2lmKChjW2U+PjJdfDApPj0oYlsoY1tmPj4yXXwwKSsxNj4+MV18MCkpYnJlYWs7bUkoKGNbKGNbZz4+Ml18MCkrMTE2Pj4yXXwwKSsoKGNbZT4+Ml18MCkqNDB8MCl8MCwoY1soY1tmPj4yXXwwKSsxMTY+PjJdfDApKygoY1tlPj4yXXwwKSo0MHwwKXwwKTtjW2U+PjJdPShjW2U+PjJdfDApKzF9aT1oO3JldHVybiAwfWZ1bmN0aW9uIEFoKGYsZyl7Zj1mfDA7Zz1nfDA7dmFyIGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wO0Q9aTtpPWkrMjU2fDA7QT1EKzcyfDA7Qz1EKzY0fDA7Qj1EKzU2fDA7ej1EKzQ4fDA7eT1EKzQwfDA7az1EKzE0OHwwO2w9RCsxNDR8MDttPUQrMTQwfDA7cD1EKzEzNnwwO3U9RCsxMzJ8MDtxPUQrMTI4fDA7dD1EKzEyNHwwO289RCsxMjB8MDt3PUQrMTE2fDA7dj1EKzg4fDA7eD1EO2o9RCs4NHwwO3I9RCs4MHwwO249RCsxNTJ8MDtzPUQrNzZ8MDtjW2s+PjJdPWY7Y1tsPj4yXT1nO2NbcD4+Ml09MDtjW3U+PjJdPTE7Y1ttPj4yXT1jW2Nbaz4+Ml0+PjJdO2RnKHYsMCxEKzE1NnwwLDEwMCxjWyhjW20+PjJdfDApKzk2Pj4yXXwwKTthOmRvIGlmKChjWyhjW20+PjJdfDApKzE2OD4+Ml18MCk+MSl3aGlsZSgxKXtpZighKGFbY1tsPj4yXT4+MF18MCkpYnJlYWsgYTtjW2o+PjJdPWNbbD4+Ml07ZG97Qz1jW2w+PjJdfDA7Y1tsPj4yXT1DKzE7aWYoKGFbQz4+MF18MCk9PTEwKWJyZWFrfXdoaWxlKChhW2NbbD4+Ml0+PjBdfDApIT0wKTtzQSh2LDM5Nzk5LDMpO3NBKHYsY1tqPj4yXXwwLChjW2w+PjJdfDApLShjW2o+PjJdfDApfDApfWVsc2V7aWYoIShiWyhjW2s+PjJdfDApKzE2Pj4xXXwwKSl7Qz1jW2w+PjJdfDA7c0EodixDLEpmKGNbbD4+Ml18MCl8MCk7YnJlYWt9d2hpbGUoMSl7aWYoIShhW2NbbD4+Ml0+PjBdfDApKWJyZWFrIGE7Y1txPj4yXT1sSShjW2w+PjJdfDAsdCl8MDtzQSh2LGNbbD4+Ml18MCxjW3E+PjJdfDApO2NbbD4+Ml09KGNbbD4+Ml18MCkrKGNbcT4+Ml18MCk7aWYoIShjW3Q+PjJdfDApKWJyZWFrIGE7ZG8gaWYoKGFbY1tsPj4yXT4+MF18MCk9PTYzKWlmKChjW3Q+PjJdfDApPjEpe1FpKChjW2w+PjJdfDApKzF8MCxwKXwwO2JyZWFrfWVsc2V7Y1twPj4yXT1jW3U+PjJdO2JyZWFrfWVsc2UgY1twPj4yXT15aChjW2s+PjJdfDAsY1tsPj4yXXwwLGNbdD4+Ml18MCl8MDt3aGlsZSgwKTtjW2w+PjJdPShjW2w+PjJdfDApKyhjW3Q+PjJdfDApO2NbdT4+Ml09KGNbcD4+Ml18MCkrMTtjW3c+PjJdPShjWyhjW2s+PjJdfDApKzExNj4+Ml18MCkrKCgoY1twPj4yXXwwKS0xfDApKjQwfDApO2lmKGVbKGNbdz4+Ml18MCkrOD4+MV0mMSl7c0EodiwzOTY5MSw0KTtjb250aW51ZX1nPWNbdz4+Ml18MDtpZihlWyhjW3c+PjJdfDApKzg+PjFdJjQpe2Y9ZztnPWNbZis0Pj4yXXwwO2o9eTtjW2o+PjJdPWNbZj4+Ml07Y1tqKzQ+PjJdPWc7ckEodiwyODI2Nix5KTtjb250aW51ZX1mPWNbdz4+Ml18MDtpZihlW2crOD4+MV0mOCl7aFt6Pj4zXT0raFtmPj4zXTtyQSh2LDI4MjcxLHopO2NvbnRpbnVlfWlmKGVbZis4Pj4xXSYyKXthW24+PjBdPWFbKGNbbT4+Ml18MCkrNjY+PjBdfDA7aWYoKGRbbj4+MF18MCkhPTEpe2Y9eDtnPWYrNDB8MDtkb3tjW2Y+PjJdPTA7Zj1mKzR8MH13aGlsZSgoZnwwKTwoZ3wwKSk7Y1t4KzMyPj4yXT1jW20+PjJdO2doKHgsY1soY1t3Pj4yXXwwKSsxNj4+Ml18MCxjWyhjW3c+PjJdfDApKzEyPj4yXXwwLGFbbj4+MF18MCwwKXwwO2lmKDc9PShpdSh4LDEpfDApKXthW3YrMjQ+PjBdPTE7Y1t2KzE2Pj4yXT0wfWNbdz4+Ml09eH1jW3I+PjJdPWNbKGNbdz4+Ml18MCkrMTI+PjJdO2o9Y1soY1t3Pj4yXXwwKSsxNj4+Ml18MDtjW0I+PjJdPWNbcj4+Ml07Y1tCKzQ+PjJdPWo7ckEodiwzOTgwMyxCKTtpZigoZFtuPj4wXXwwKT09MSljb250aW51ZTtYZyh4KTtjb250aW51ZX1lbHNle2lmKGVbKGNbdz4+Ml18MCkrOD4+MV0mMTYzODQpe2NbQz4+Ml09Y1tjW3c+PjJdPj4yXTtyQSh2LDM5ODEwLEMpO2NvbnRpbnVlfXNBKHYsMzk4MjMsMik7Y1tzPj4yXT1jWyhjW3c+PjJdfDApKzEyPj4yXTtjW28+PjJdPTA7d2hpbGUoMSl7aWYoKGNbbz4+Ml18MCk+PShjW3M+PjJdfDApKWJyZWFrO2NbQT4+Ml09YVsoY1soY1t3Pj4yXXwwKSsxNj4+Ml18MCkrKGNbbz4+Ml18MCk+PjBdJjI1NTtyQSh2LDM5ODI2LEEpO2Nbbz4+Ml09KGNbbz4+Ml18MCkrMX1zQSh2LDM5ODMxLDEpO2NvbnRpbnVlfX19d2hpbGUoMCk7aWYoIShhW3YrMjQ+PjBdfDApKXtDPWZnKHYpfDA7aT1EO3JldHVybiBDfDB9eEEodik7Qz1mZyh2KXwwO2k9RDtyZXR1cm4gQ3wwfWZ1bmN0aW9uIEJoKGQsZil7ZD1kfDA7Zj1mfDA7dmFyIGc9MCxqPTAsaz0wLGw9MCxtPTAsbj0wO249aTtpPWkrMzJ8MDtnPW4rMjB8MDtqPW4rMTZ8MDttPW4rOHwwO2w9bjtrPW4rMjR8MDtjW2c+PjJdPWQ7Y1tqPj4yXT1mO2Fbaz4+MF09YVsoY1tnPj4yXXwwKSsxMD4+MF18MDtpZighKGV6KGNbKGNbZz4+Ml18MCkrMTY+PjJdfDAsbSxjWyhjW2c+PjJdfDApKzEyPj4yXXwwLGFbaz4+MF18MCl8MCkpe2k9bjtyZXR1cm59aWYoIShNaShjWyhjW2c+PjJdfDApKzE2Pj4yXXwwLGwsY1soY1tnPj4yXXwwKSsxMj4+Ml18MCxhW2s+PjBdfDApfDApKXtkPWNbbCs0Pj4yXXwwO209Y1tnPj4yXXwwO2NbbT4+Ml09Y1tsPj4yXTtjW20rND4+Ml09ZDttPShjW2c+PjJdfDApKzh8MDtiW20+PjFdPWVbbT4+MV18MHw0O2k9bjtyZXR1cm59aFtjW2c+PjJdPj4zXT0raFttPj4zXTttPShjW2c+PjJdfDApKzh8MDtiW20+PjFdPWVbbT4+MV18MHw4O2lmKCEoY1tqPj4yXXwwKSl7aT1uO3JldHVybn1KeChjW2c+PjJdfDApO2k9bjtyZXR1cm59ZnVuY3Rpb24gQ2goYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wO2o9aTtpPWkrMzJ8MDtlPWorMTZ8MDtmPWorMTJ8MDtnPWo7aD1qKzh8MDtjW2Y+PjJdPWE7YT1nO2NbYT4+Ml09YjtjW2ErND4+Ml09ZDtpZihjW2Y+PjJdfDApe2g9ZztjW2U+PjJdPVZ3KGNbZj4+Ml18MCxjW2g+PjJdfDAsY1toKzQ+PjJdfDApfDA7aD1jW2U+PjJdfDA7aT1qO3JldHVybiBofDB9ZWxzZXthPWc7Y1toPj4yXT0kZihjW2E+PjJdfDAsY1thKzQ+PjJdfDApfDA7Y1tlPj4yXT1jW2g+PjJdO2g9Y1tlPj4yXXwwO2k9ajtyZXR1cm4gaHwwfXJldHVybiAwfWZ1bmN0aW9uIERoKGIsZCxlLGYpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wO3I9aTtpPWkrNjR8MDtxPXIrMTZ8MDtwPXI7az1yKzUyfDA7bD1yKzQ4fDA7Zz1yKzQ0fDA7bT1yKzQwfDA7bj1yKzM2fDA7bz1yKzMyfDA7aj1yKzI4fDA7aD1yKzI0fDA7Y1tsPj4yXT1iO2NbZz4+Ml09ZDtjW20+PjJdPWU7Y1tuPj4yXT1mO2lmKEt6KGNbbD4+Ml18MCl8MCl7Y1trPj4yXT0wO3E9Y1trPj4yXXwwO2k9cjtyZXR1cm4gcXwwfWNbbz4+Ml09dGkoY1tjW2w+PjJdPj4yXXwwLGNbbT4+Ml18MCxjW24+PjJdfDApfDA7aWYoIShjW28+PjJdfDApKXtjW2o+PjJdPShjW2c+PjJdJjF8MCkhPTA/Mzk3NzI6Mzk3ODU7aWYoKChuaShjW2NbbD4+Ml0+PjJdfDAsY1tuPj4yXXwwKXwwKTwxPyhjW2g+PjJdPXNqKChjW2NbbD4+Ml0+PjJdfDApKzMyMHwwLGNbbT4+Ml18MCl8MCwoY1toPj4yXXwwKSE9MCk6MCk/KGpJKGNbbD4+Ml18MCxjW2g+PjJdfDApfDApIT0wOjApe2Nbaz4+Ml09Y1soY1toPj4yXXwwKSsxNj4+Ml07cT1jW2s+PjJdfDA7aT1yO3JldHVybiBxfDB9aWYoIShjW2c+PjJdJjIpKXtkPWNbbD4+Ml18MDtnPWNbaj4+Ml18MDtpZihjW24+PjJdfDApe249Y1tuPj4yXXwwO3E9Y1ttPj4yXXwwO2NbcD4+Ml09ZztjW3ArND4+Ml09bjtjW3ArOD4+Ml09cTtFaChkLDMwMDI5LHApfWVsc2V7cD1jW20+PjJdfDA7Y1txPj4yXT1nO2NbcSs0Pj4yXT1wO0VoKGQsMzAwMzkscSl9YVsoY1tsPj4yXXwwKSsxNz4+MF09MX19Y1trPj4yXT1jW28+PjJdO3E9Y1trPj4yXXwwO2k9cjtyZXR1cm4gcXwwfWZ1bmN0aW9uIEVoKGIsZCxlKXtiPWJ8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTA7aj1pO2k9aSs0OHwwO2Y9aiszMnwwO2w9aisyOHwwO2g9aisyNHwwO2s9ais4fDA7Zz1qO2NbZj4+Ml09YjtjW2w+PjJdPWQ7Y1tnPj4yXT1jW2NbZj4+Ml0+PjJdO2Nbaz4+Ml09ZTtjW2g+PjJdPW94KGNbZz4+Ml18MCxjW2w+PjJdfDAsayl8MDtpZihhWyhjW2c+PjJdfDApKzczPj4wXXwwKXtUZihjW2c+PjJdfDAsY1toPj4yXXwwKTtpPWo7cmV0dXJufWVsc2V7bD0oY1tmPj4yXXwwKSszNnwwO2NbbD4+Ml09KGNbbD4+Ml18MCkrMTtUZihjW2c+PjJdfDAsY1soY1tmPj4yXXwwKSs0Pj4yXXwwKTtjWyhjW2Y+PjJdfDApKzQ+PjJdPWNbaD4+Ml07Y1soY1tmPj4yXXwwKSsxMj4+Ml09MTtpPWo7cmV0dXJufX1mdW5jdGlvbiBGaChhLGIpe2E9YXwwO2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTA7Zz1pO2k9aSsxNnwwO2Q9Zys4fDA7ZT1nKzR8MDtmPWc7Y1tkPj4yXT1hO2NbZT4+Ml09YjtjW2Y+PjJdPS0xZTY7aWYoIShjW2U+PjJdfDApKXtmPWNbZj4+Ml18MDtpPWc7cmV0dXJuIGZ8MH1jW2Y+PjJdPTA7d2hpbGUoMSl7aWYoKGNbZj4+Ml18MCk+PShjWyhjW2Q+PjJdfDApKzIwPj4yXXwwKSl7ZD02O2JyZWFrfWlmKChjWyhjWyhjW2Q+PjJdfDApKzE2Pj4yXXwwKSsoY1tmPj4yXTw8NCkrMTI+PjJdfDApPT0oY1tlPj4yXXwwKSl7ZD02O2JyZWFrfWNbZj4+Ml09KGNbZj4+Ml18MCkrMX1pZigoZHwwKT09Nil7Zj1jW2Y+PjJdfDA7aT1nO3JldHVybiBmfDB9cmV0dXJuIDB9ZnVuY3Rpb24gR2goYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wO2Y9aTtpPWkrMzJ8MDtqPWYrMjh8MDtoPWYrMjR8MDtnPWYrOHwwO2U9ZjtjW2o+PjJdPWE7Y1toPj4yXT1iO2NbZz4+Ml09ZDtjW2U+PjJdPW94KGNbaj4+Ml18MCxjW2g+PjJdfDAsZyl8MDtpPWY7cmV0dXJuIGNbZT4+Ml18MH1mdW5jdGlvbiBIaChhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wLGc9MCxoPTA7aD1pO2k9aSsxNnwwO2Q9aCsxMnwwO2U9aCs4fDA7Zj1oKzR8MDtnPWg7Y1tlPj4yXT1hO2NbZj4+Ml09Y1tjW2U+PjJdPj4yXTtjW2c+PjJdPVZ3KGNbZj4+Ml18MCwyMDgsMCl8MDtpZighKGNbZz4+Ml18MCkpe2NbZD4+Ml09MDtnPWNbZD4+Ml18MDtpPWg7cmV0dXJuIGd8MH1hPShjW2c+PjJdfDApKzg4fDA7Yj1hKzEyMHwwO2Rve2NbYT4+Ml09MDthPWErNHwwfXdoaWxlKChhfDApPChifDApKTtjW2NbZz4+Ml0+PjJdPWNbZj4+Ml07aWYoY1soY1tmPj4yXXwwKSs0Pj4yXXwwKWNbKGNbKGNbZj4+Ml18MCkrND4+Ml18MCkrND4+Ml09Y1tnPj4yXTtjWyhjW2c+PjJdfDApKzg+PjJdPWNbKGNbZj4+Ml18MCkrND4+Ml07Y1soY1tnPj4yXXwwKSs0Pj4yXT0wO2NbKGNbZj4+Ml18MCkrND4+Ml09Y1tnPj4yXTtjWyhjW2c+PjJdfDApKzIwPj4yXT0zODE0Nzk1ODk7Y1soY1tnPj4yXXwwKSsxMj4+Ml09Y1tlPj4yXTtjW2Q+PjJdPWNbZz4+Ml07Zz1jW2Q+PjJdfDA7aT1oO3JldHVybiBnfDB9ZnVuY3Rpb24gSWgoYSxiLGQsZSxmLGcpe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO3ZhciBoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wO2o9aTtpPWkrMzJ8MDtsPWorMjR8MDtwPWorMjB8MDtvPWorMTZ8MDtuPWorMTJ8MDttPWorOHwwO2s9ais0fDA7aD1qO2NbbD4+Ml09YTtjW3A+PjJdPWI7Y1tvPj4yXT1kO2Nbbj4+Ml09ZTtjW20+PjJdPWY7Y1trPj4yXT1nO2NbaD4+Ml09angoY1tsPj4yXXwwLGNbcD4+Ml18MCxjW28+PjJdfDAsY1tuPj4yXXwwLGNbbT4+Ml18MCl8MDtNaChjW2w+PjJdfDAsY1toPj4yXXwwLGNbaz4+Ml18MCwtMTQpO2k9ajtyZXR1cm4gY1toPj4yXXwwfWZ1bmN0aW9uIEpoKGIsZCl7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wO2c9aTtpPWkrMTZ8MDtlPWc7Zj1nKzR8MDtjW2U+PjJdPWI7YVtmPj4wXT1kO2lmKChjWyhjW2U+PjJdfDApKzEzNj4+Ml18MCk8PTApe2k9ZztyZXR1cm59YVsoY1soY1tlPj4yXXwwKSs4OD4+Ml18MCkrKCgoY1soY1tlPj4yXXwwKSsxMzY+PjJdfDApLTF8MCkqMjB8MCkrMz4+MF09YVtmPj4wXXwwO2k9ZztyZXR1cm59ZnVuY3Rpb24gS2goYixlLGYsZyl7Yj1ifDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7dmFyIGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTA7cD1pO2k9aSszMnwwO2g9cCsyOHwwO2o9cCsyNHwwO2s9cCsyMHwwO2w9cCsxNnwwO209cCs4fDA7bz1wKzR8MDtuPXA7Y1tqPj4yXT1iO2Nbaz4+Ml09ZTtjW2w+PjJdPWY7Y1twKzEyPj4yXT1nO2lmKCgoY1soY1tqPj4yXXwwKSsxMzY+PjJdfDApKyhjW2s+PjJdfDApfDApPihjWyhjWyhjW2o+PjJdfDApKzEyPj4yXXwwKSs0OD4+Ml18MCk/KGx4KGNbaj4+Ml18MCxjW2s+PjJdfDApfDApIT0wOjApe2NbaD4+Ml09MDtvPWNbaD4+Ml18MDtpPXA7cmV0dXJuIG98MH1iPShjWyhjW2o+PjJdfDApKzg4Pj4yXXwwKSsoKGNbKGNbaj4+Ml18MCkrMTM2Pj4yXXwwKSoyMHwwKXwwO2Nbbz4+Ml09YjtjW24+PjJdPWI7Y1ttPj4yXT0wO3doaWxlKDEpe2lmKChjW20+PjJdfDApPj0oY1trPj4yXXwwKSlicmVhazthW2Nbbz4+Ml0+PjBdPWFbY1tsPj4yXT4+MF18MDtjWyhjW28+PjJdfDApKzQ+PjJdPWFbKGNbbD4+Ml18MCkrMT4+MF07Y1soY1tvPj4yXXwwKSs4Pj4yXT1hWyhjW2w+PjJdfDApKzI+PjBdO2lmKChkWzM0ODk4KyhkW2NbbD4+Ml0+PjBdfDApPj4wXSYxfDApIT0wPyhhWyhjW2w+PjJdfDApKzI+PjBdfDApPjA6MCl7Yj0oY1tvPj4yXXwwKSs4fDA7Y1tiPj4yXT0oY1tiPj4yXXwwKSsoY1soY1tqPj4yXXwwKSsxMzY+PjJdfDApfWNbKGNbbz4+Ml18MCkrMTI+PjJdPWFbKGNbbD4+Ml18MCkrMz4+MF07YVsoY1tvPj4yXXwwKSsxPj4wXT0wO2NbKGNbbz4+Ml18MCkrMTY+PjJdPTA7YVsoY1tvPj4yXXwwKSszPj4wXT0wO2NbbT4+Ml09KGNbbT4+Ml18MCkrMTtjW2w+PjJdPShjW2w+PjJdfDApKzQ7Y1tvPj4yXT0oY1tvPj4yXXwwKSsyMH1vPShjW2o+PjJdfDApKzEzNnwwO2Nbbz4+Ml09KGNbbz4+Ml18MCkrKGNbaz4+Ml18MCk7Y1toPj4yXT1jW24+PjJdO289Y1toPj4yXXwwO2k9cDtyZXR1cm4gb3wwfWZ1bmN0aW9uIExoKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wO2Y9aTtpPWkrMTZ8MDtkPWYrNHwwO2U9ZjtjW2Q+PjJdPWE7Y1tlPj4yXT1iO2E9KGNbZD4+Ml18MCkrMTQ4fDA7Y1thPj4yXT1jW2E+PjJdfDE8PGNbZT4+Ml07aWYoKGNbZT4+Ml18MCk9PTEpe2k9ZjtyZXR1cm59aWYoIShpSShjWyhjWyhjW2NbZD4+Ml0+PjJdfDApKzE2Pj4yXXwwKSsoY1tlPj4yXTw8NCkrND4+Ml18MCl8MCkpe2k9ZjtyZXR1cm59YT0oY1tkPj4yXXwwKSsxNTJ8MDtjW2E+PjJdPWNbYT4+Ml18MTw8Y1tlPj4yXTtpPWY7cmV0dXJufWZ1bmN0aW9uIE1oKGIsZCxlLGYpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTA7bj1pO2k9aSszMnwwO2c9bisyMHwwO2g9bisxNnwwO2s9bisxMnwwO2w9bis4fDA7bT1uKzR8MDtqPW47Y1tnPj4yXT1iO2NbaD4+Ml09ZDtjW2s+PjJdPWU7Y1tsPj4yXT1mO2Nbaj4+Ml09Y1tjW2c+PjJdPj4yXTtpZihhWyhjW2o+PjJdfDApKzY5Pj4wXXwwKXtpZigoY1tsPj4yXXwwKT09LTEwKXtpPW47cmV0dXJufUlBKGNbaj4+Ml18MCxjW2w+PjJdfDAsY1trPj4yXXwwKTtpPW47cmV0dXJufWlmKChjW2g+PjJdfDApPDApY1toPj4yXT0oY1soY1tnPj4yXXwwKSsxMzY+PjJdfDApLTE7Y1ttPj4yXT0oY1soY1tnPj4yXXwwKSs4OD4+Ml18MCkrKChjW2g+PjJdfDApKjIwfDApO2lmKChjW2w+PjJdfDApPDA/KGFbKGNbbT4+Ml18MCkrMT4+MF18MCk9PTA6MCl7Zz1jW2s+PjJdfDA7aWYoKGNbbD4+Ml18MCk9PS0xNCl7Y1soY1ttPj4yXXwwKSsxNj4+Ml09ZzthWyhjW20+PjJdfDApKzE+PjBdPS0xNDtpPW47cmV0dXJufWlmKCFnKXtpPW47cmV0dXJufWNbKGNbbT4+Ml18MCkrMTY+PjJdPWNbaz4+Ml07YVsoY1ttPj4yXXwwKSsxPj4wXT1jW2w+PjJdO2lmKChjW2w+PjJdfDApIT0tMTApe2k9bjtyZXR1cm59aEkoY1trPj4yXXwwKTtpPW47cmV0dXJufWdJKGNbZz4+Ml18MCxjW20+PjJdfDAsY1trPj4yXXwwLGNbbD4+Ml18MCk7aT1uO3JldHVybn1mdW5jdGlvbiBOaChlLGYpe2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTA7cT1pO2k9aSs0OHwwO2g9cSs0MHwwO2o9cSszNnwwO2s9cSszMnwwO289cSsyOHwwO249cSsyNHwwO209cSsyMHwwO2w9cSsxNnwwO2c9cSsxMnwwO3A9cTtjW2g+PjJdPWU7Y1tqPj4yXT1mO2Nbaz4+Ml09Y1tjW2g+PjJdPj4yXTtjW28+PjJdPWJbKGNbaj4+Ml18MCkrNDAwPj4xXTtjW24+PjJdPWNbKGNbaj4+Ml18MCkrNDQ+PjJdO2NbbT4+Ml09Y1soY1tqPj4yXXwwKSs0MD4+Ml07Y1tsPj4yXT1jWyhjW2o+PjJdfDApKzEwOD4+Ml07Y1tuPj4yXT0oY1tuPj4yXXwwKSsoY1ttPj4yXXwwKTtpZigoY1ttPj4yXXwwKT09MCYoY1tuPj4yXXwwKT4wKWNbbj4+Ml09KGNbbj4+Ml18MCkrMTtjW2c+PjJdPSgoY1soY1toPj4yXXwwKSsxMzY+PjJdfDApKjIwfDApKzcmLTg7Y1twPj4yXT0oY1soY1toPj4yXXwwKSs4OD4+Ml18MCkrKGNbZz4+Ml18MCk7Y1twKzQ+PjJdPShjWyhjW2o+PjJdfDApKzUyPj4yXXwwKS0oY1tnPj4yXXwwKSYtODtBRihjW2g+PjJdfDAsbCk7aWYoZFsoY1tqPj4yXXwwKSsyMD4+MF18MClnPShkWyhjW2o+PjJdfDApKzIxPj4wXXwwKSE9MDtlbHNlIGc9MDtmPShjW2g+PjJdfDApKzE0NHwwO2JbZj4+MV09YltmPj4xXSYtNjV8KGcmMSk8PDYmNjU1MzU7aWYoKGNbbj4+Ml18MCk8MTA/KGRbKGNbaj4+Ml18MCkrNDA5Pj4wXXwwKSE9MDowKWNbbj4+Ml09MTA7Zj0oY1toPj4yXXwwKSsxNDR8MDtiW2Y+PjFdPWJbZj4+MV0mLTI7ZG97Y1twKzg+PjJdPTA7Zj1mSShwLGNbKGNbaD4+Ml18MCkrOTI+PjJdfDAsKGNbbj4+Ml18MCkqNDB8MCl8MDtjWyhjW2g+PjJdfDApKzkyPj4yXT1mO2Y9ZkkocCxjWyhjW2g+PjJdfDApKzExNj4+Ml18MCwoY1tvPj4yXXwwKSo0MHwwKXwwO2NbKGNbaD4+Ml18MCkrMTE2Pj4yXT1mO2Y9ZkkocCxjWyhjW2g+PjJdfDApKzk2Pj4yXXwwLGNbbD4+Ml08PDIpfDA7Y1soY1toPj4yXXwwKSs5Nj4+Ml09ZjtmPWZJKHAsY1soY1toPj4yXXwwKSsxMTI+PjJdfDAsY1ttPj4yXTw8Mil8MDtjWyhjW2g+PjJdfDApKzExMj4+Ml09ZjtpZighKGNbcCs4Pj4yXXwwKSlicmVhaztmPWNbcCs4Pj4yXXwwO2Y9VncoY1trPj4yXXwwLGYsKChmfDApPDApPDwzMT4+MzEpfDA7Y1soY1toPj4yXXwwKSsxODA+PjJdPWY7Y1twPj4yXT1mO2NbcCs0Pj4yXT1jW3ArOD4+Ml19d2hpbGUoKGFbKGNbaz4+Ml18MCkrNjk+PjBdfDApIT0wXjEpO2JbKGNbaD4+Ml18MCkrMTg+PjFdPWNbKGNbaj4+Ml18MCkrNDA0Pj4yXTtjWyhjW2g+PjJdfDApKzEyMD4+Ml09Y1soY1tqPj4yXXwwKSs0Mjg+PjJdO2NbKGNbaj4+Ml18MCkrNDA0Pj4yXT0wO2NbKGNbaj4+Ml18MCkrNDI4Pj4yXT0wO3A9KGNbaD4+Ml18MCkrMTQ0fDA7YltwPj4xXT1iW3A+PjFdJi0xM3woZFsoY1tqPj4yXXwwKSs0MDk+PjBdJjMpPDwyJjY1NTM1O2lmKGFbKGNbaz4+Ml18MCkrNjk+PjBdfDApe2JbKGNbaD4+Ml18MCkrMTY+PjFdPTA7Y1soY1toPj4yXXwwKSsyOD4+Ml09MDtjWyhjW2g+PjJdfDApKzI0Pj4yXT0wO3A9Y1toPj4yXXwwO1dnKHApO2k9cTtyZXR1cm59ZWxzZXtjWyhjW2g+PjJdfDApKzI4Pj4yXT1jW20+PjJdO2JbKGNbaD4+Ml18MCkrMTY+PjFdPWNbbz4+Ml07UEMoY1soY1toPj4yXXwwKSsxMTY+PjJdfDAsY1tvPj4yXXwwLGNbaz4+Ml18MCwxKTtjWyhjW2g+PjJdfDApKzI0Pj4yXT1jW24+PjJdO1BDKGNbKGNbaD4+Ml18MCkrOTI+PjJdfDAsY1tuPj4yXXwwLGNbaz4+Ml18MCwxMjgpO1ZSKGNbKGNbaD4+Ml18MCkrMTEyPj4yXXwwLDAsY1ttPj4yXTw8MnwwKXwwO3A9Y1toPj4yXXwwO1dnKHApO2k9cTtyZXR1cm59fWZ1bmN0aW9uIE9oKGEsZCxlLGYpe2E9YXwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MDtzPWk7aT1pKzY0fDA7cT1zKzI0fDA7cD1zKzE2fDA7az1zKzh8MDtsPXMrNTJ8MDttPXM7bj1zKzQ4fDA7bz1zKzQ0fDA7cj1zKzQwfDA7Zz1zKzM2fDA7aD1zKzMyfDA7aj1zKzI4fDA7Y1tsPj4yXT1hO2E9bTtjW2E+PjJdPWQ7Y1thKzQ+PjJdPWU7Y1tuPj4yXT1mO2Nbcj4+Ml09MDtjW2c+PjJdPWNbKGNbbD4+Ml18MCkrMjA+PjJdO2U9bTthPWNbZSs0Pj4yXXwwO2Y9Y1soY1tnPj4yXXwwKSsxMTY+PjJdfDA7Y1tmPj4yXT1jW2U+PjJdO2NbZis0Pj4yXT1hO2Nbbz4+Ml09dGUoY1soY1tsPj4yXXwwKSsyMD4+Ml18MCl8MDtkbyBpZigoY1tvPj4yXXwwKT09MTAwKXtjW2g+PjJdPWNbY1soY1tnPj4yXXwwKSsxMTI+PjJdPj4yXTtjW2o+PjJdPWNbKGNbaD4+Ml18MCkrODArKGNbKGNbbD4+Ml18MCkrMTI+PjJdPDwyKT4+Ml07ZD1jW2w+PjJdfDA7aWYoKGNbaj4+Ml18MCk+Pj4wPj0xMil7Y1soY1tsPj4yXXwwKSs4Pj4yXT1jWyhjW2g+PjJdfDApKzgwKygoY1tkKzEyPj4yXXwwKSsoYlsoY1toPj4yXXwwKSsxMj4+MV18MCk8PDIpPj4yXTtrPWNHKGNbaj4+Ml18MCl8MDtjWyhjW2w+PjJdfDApKzQ+PjJdPWs7Y1soY1tsPj4yXXwwKSsxNj4+Ml09Y1soY1toPj4yXXwwKSsxNj4+Ml07ZUkoY1soY1tsPj4yXXwwKSsxNj4+Ml18MCk7YnJlYWt9ZT1jW2QrMjQ+PjJdfDA7aWYoIShjW2o+PjJdfDApKWQ9Mzk3MTg7ZWxzZSBkPShjW2o+PjJdfDApPT03PzM5NzA1OjM5NzEwO2Nbaz4+Ml09ZDtjW3I+PjJdPUdoKGUsMzk3MjMsayl8MDtjW28+PjJdPTE7WGQoY1soY1tsPj4yXXwwKSsyMD4+Ml18MCl8MDtjWyhjW2w+PjJdfDApKzIwPj4yXT0wfXdoaWxlKDApO2lmKChjW28+PjJdfDApPT0xMDApe2Nbbz4+Ml09MDtxPWNbcj4+Ml18MDtyPWNbbj4+Ml18MDtjW3I+PjJdPXE7cj1jW28+PjJdfDA7aT1zO3JldHVybiByfDB9aWYoIShjWyhjW2w+PjJdfDApKzIwPj4yXXwwKSl7cT1jW3I+PjJdfDA7cj1jW24+PjJdfDA7Y1tyPj4yXT1xO3I9Y1tvPj4yXXwwO2k9cztyZXR1cm4gcnwwfWNbbz4+Ml09WGQoY1soY1tsPj4yXXwwKSsyMD4+Ml18MCl8MDtjWyhjW2w+PjJdfDApKzIwPj4yXT0wO2Q9Y1soY1tsPj4yXXwwKSsyND4+Ml18MDtpZighKGNbbz4+Ml18MCkpe2w9bTttPWNbbCs0Pj4yXXwwO3E9cDtjW3E+PjJdPWNbbD4+Ml07Y1txKzQ+PjJdPW07Y1tyPj4yXT1HaChkLDM5NzUyLHApfDA7Y1tvPj4yXT0xO3E9Y1tyPj4yXXwwO3I9Y1tuPj4yXXwwO2Nbcj4+Ml09cTtyPWNbbz4+Ml18MDtpPXM7cmV0dXJuIHJ8MH1lbHNle2NbcT4+Ml09YmYoY1soY1tsPj4yXXwwKSsyND4+Ml18MCl8MDtjW3I+PjJdPUdoKGQsMTgzOTEscSl8MDtxPWNbcj4+Ml18MDtyPWNbbj4+Ml18MDtjW3I+PjJdPXE7cj1jW28+PjJdfDA7aT1zO3JldHVybiByfDB9cmV0dXJuIDB9ZnVuY3Rpb24gUGgoYil7Yj1ifDA7dmFyIGU9MCxmPTAsZz0wO2c9aTtpPWkrMTZ8MDtlPWcrNHwwO2Y9ZztjW2U+PjJdPWI7aWYoIShjW2U+PjJdfDApKXtpPWc7cmV0dXJufWNbZj4+Ml09Y1tjW2U+PjJdPj4yXTtUZihjW2Y+PjJdfDAsY1soY1tlPj4yXXwwKSs3Nj4+Ml18MCk7ZXYoY1tmPj4yXXwwLGNbKGNbZT4+Ml18MCkrODA+PjJdfDApO2lmKGNbZj4+Ml18MCl7Yj0oY1tmPj4yXXwwKSsyNTZ8MDtjW2I+PjJdPShjW2I+PjJdfDApLShkWyhjW2U+PjJdfDApKzI0Pj4wXXwwKX1hWyhjW2U+PjJdfDApKzI0Pj4wXT0wO2k9ZztyZXR1cm59ZnVuY3Rpb24gUWgoYSxiLGUsZil7YT1hfDA7Yj1ifDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MDtuPWk7aT1pKzMyfDA7Zz1uKzIwfDA7aD1uKzE2fDA7aj1uKzEyfDA7az1uKzh8MDtsPW4rNHwwO209bjtjW2g+PjJdPWE7Y1tqPj4yXT1iO2Nbaz4+Ml09ZTtjW2w+PjJdPWY7aWYoIShkWyhjW2g+PjJdfDApKzY2Pj4wXXwwKSl7Y1tnPj4yXT00O209Y1tnPj4yXXwwO2k9bjtyZXR1cm4gbXwwfWlmKChkWyhjW2g+PjJdfDApKzY2Pj4wXXwwfDApPj0zKWU9RUYoY1toPj4yXXwwKXwwO2Vsc2UgZT0wO2NbbT4+Ml09ZTtpZighKGNbbT4+Ml18MCkpY1ttPj4yXT1SRihjW2g+PjJdfDAsY1tqPj4yXXwwLGNbaz4+Ml18MCxjW2w+PjJdfDAsMCl8MDtjW2c+PjJdPWNbbT4+Ml07bT1jW2c+PjJdfDA7aT1uO3JldHVybiBtfDB9ZnVuY3Rpb24gUmgoYSxiLGQsZSxmKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTA7cj1pO2k9aSs0OHwwO2c9ciszNnwwO3M9ciszMnwwO2g9cisyOHwwO2o9cisyNHwwO2s9cisyMHwwO2w9cisxNnwwO289cisxMnwwO249cis4fDA7cD1yKzR8MDttPXI7Y1tzPj4yXT1hO2NbaD4+Ml09YjtjW2o+PjJdPWQ7Y1trPj4yXT1lO2NbbD4+Ml09ZjtjW24+PjJdPWNbcz4+Ml07aWYoIShjW24+PjJdfDApKXtjW2c+PjJdPUxmKDg0NzE2KXwwO3M9Y1tnPj4yXXwwO2k9cjtyZXR1cm4gc3wwfWNbbT4+Ml09Y1soY1tuPj4yXXwwKSsyND4+Ml07Y1twPj4yXT1jWyhjW24+PjJdfDApKzIwPj4yXTtkbyBpZighKChjW2o+PjJdfDApPDB8KGNbaz4+Ml18MCk8MCk/KGE9Y1trPj4yXXwwLGI9Y1tqPj4yXXwwLGI9UlIoYXwwLCgoYXwwKTwwKTw8MzE+PjMxfDAsYnwwLCgoYnwwKTwwKTw8MzE+PjMxfDApfDAsYT1DLHM9Y1soY1tuPj4yXXwwKSs0Pj4yXXwwLGY9KChzfDApPDApPDwzMT4+MzEsISgoYXwwKT4oZnwwKXwoYXwwKT09KGZ8MCkmYj4+PjA+cz4+PjApKTowKXtpZighKGNbcD4+Ml18MCkpe2Nbbz4+Ml09NDticmVha31kSShjWyhjW24+PjJdfDApKzE2Pj4yXXwwKTtjW28+PjJdPVdiW2NbbD4+Ml0mMjU1XShjWyhjW24+PjJdfDApKzE2Pj4yXXwwLChjW2s+PjJdfDApKyhjWyhjW24+PjJdfDApKzg+PjJdfDApfDAsY1tqPj4yXXwwLGNbaD4+Ml18MCl8MDtpZigoY1tvPj4yXXwwKT09NCl7VGcoY1twPj4yXXwwKXwwO2NbKGNbbj4+Ml18MCkrMjA+PjJdPTA7YnJlYWt9ZWxzZXtjWyhjW3A+PjJdfDApKzQwPj4yXT1jW28+PjJdO2JyZWFrfX1lbHNlIHE9NTt3aGlsZSgwKTtpZigocXwwKT09NSljW28+PjJdPTE7bGcoY1ttPj4yXXwwLGNbbz4+Ml18MCk7Y1tvPj4yXT1VZyhjW20+PjJdfDAsY1tvPj4yXXwwKXwwO2NbZz4+Ml09Y1tvPj4yXTtzPWNbZz4+Ml18MDtpPXI7cmV0dXJuIHN8MH1mdW5jdGlvbiBTaChhKXthPWF8MDt2YXIgZD0wLGU9MCxmPTA7ZT1pO2k9aSsxNnwwO2Y9ZSs0fDA7ZD1lO2NbZj4+Ml09YTtjW2Q+PjJdPWNbKGNbZj4+Ml18MCkrND4+Ml07d2hpbGUoMSl7aWYoIShjW2Q+PjJdfDApKWJyZWFrO2Y9KGNbZD4+Ml18MCkrMTQ0fDA7YltmPj4xXT1iW2Y+PjFdJi0yfDE7Y1tkPj4yXT1jWyhjW2Q+PjJdfDApKzg+PjJdfWk9ZTtyZXR1cm59ZnVuY3Rpb24gVGgoYixlLGYsZyl7Yj1ifDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7dmFyIGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MDt4PWk7aT1pKzY0fDA7cz14KzUyfDA7dD14KzQ4fDA7dT14KzQ0fDA7dj14KzQwfDA7dz14KzM2fDA7cT14KzMyfDA7cj14KzI4fDA7bj14KzI0fDA7bT14KzIwfDA7cD14KzU2fDA7bD14KzE2fDA7bz14KzEyfDA7aj14Kzh8MDtrPXgrNHwwO2g9eDtjW3Q+PjJdPWI7Y1t1Pj4yXT1lO2Nbdj4+Ml09ZjtjW3c+PjJdPWc7Y1tuPj4yXT1kWyhjW3Y+PjJdfDApKzE+PjBdO2NbbT4+Ml09ZFtjW3Y+PjJdPj4wXTthW3A+PjBdPWFbKGNbdj4+Ml18MCkrMz4+MF18MDtjW2w+PjJdPTA7YTp3aGlsZSgxKXtpZigoZFtjW3Q+PjJdPj4wXXwwKTwxMjgpe2c9Y1t0Pj4yXXwwO2NbdD4+Ml09ZysxO2c9ZFtnPj4wXXwwfWVsc2UgZz1KQyh0KXwwO2NbcT4+Ml09ZztpZighZyl7Yj04MzticmVha31pZigoY1txPj4yXXwwKT09KGNbbT4+Ml18MCkpe2I9NzticmVha31kbyBpZigoY1txPj4yXXwwKT09KGNbdz4+Ml18MCkpe2lmKCEoZFsoY1t2Pj4yXXwwKSsyPj4wXXwwKSl7Y1txPj4yXT1KQyh0KXwwO2lmKCEoY1txPj4yXXwwKSl7Yj00OTticmVhayBhfWNbbD4+Ml09Y1t0Pj4yXTticmVha31jW2o+PjJdPTA7Y1trPj4yXT0wO2NbaD4+Ml09MDtjW3E+PjJdPUpDKHUpfDA7aWYoIShjW3E+PjJdfDApKXtiPTUyO2JyZWFrIGF9Y1tyPj4yXT1KQyh0KXwwO2lmKChjW3I+PjJdfDApPT05NCl7Y1toPj4yXT0xO2Nbcj4+Ml09SkModCl8MH1pZigoY1tyPj4yXXwwKT09OTMpe2lmKChjW3E+PjJdfDApPT05MyljW2s+PjJdPTE7Y1tyPj4yXT1KQyh0KXwwfXdoaWxlKDEpe2c9Y1tyPj4yXXwwO2lmKCEoKGNbcj4+Ml18MCkhPTA/KGNbcj4+Ml18MCkhPTkzOjApKWJyZWFrO2lmKCgoZ3wwKT09NDU/KGRbY1t0Pj4yXT4+MF18MCkhPTkzOjApPygoY1tqPj4yXXwwKT4+PjA+MD8oZFtjW3Q+PjJdPj4wXXwwKSE9MDowKTowKXtjW3I+PjJdPUpDKHQpfDA7aWYoKGNbcT4+Ml18MCk+Pj4wPj0oY1tqPj4yXXwwKT4+PjA/KGNbcT4+Ml18MCk+Pj4wPD0oY1tyPj4yXXwwKT4+PjA6MCljW2s+PjJdPTE7Y1tqPj4yXT0wfWVsc2V7aWYoKGNbcT4+Ml18MCk9PShjW3I+PjJdfDApKWNbaz4+Ml09MTtjW2o+PjJdPWNbcj4+Ml19Y1tyPj4yXT1KQyh0KXwwfWlmKCFnKXtiPTczO2JyZWFrIGF9aWYoIShjW2s+PjJdXmNbaD4+Ml0pKXtiPTczO2JyZWFrIGF9ZWxzZSBjb250aW51ZSBhfXdoaWxlKDApO2lmKChkW2NbdT4+Ml0+PjBdfDApPDEyOCl7Zz1jW3U+PjJdfDA7Y1t1Pj4yXT1nKzE7Zz1kW2c+PjBdfDB9ZWxzZSBnPUpDKHUpfDA7Y1tyPj4yXT1nO2lmKChjW3E+PjJdfDApPT0oY1tyPj4yXXwwKSljb250aW51ZTtpZigoZFtwPj4wXXwwKSE9MD8oKGNbcT4+Ml18MCk+Pj4wPDEyOD8oZFsxNzYxMysoY1txPj4yXSYyNTUpPj4wXXwwKT09KGRbMTc2MTMrKGNbcj4+Ml0mMjU1KT4+MF18MCk6MCkmKGNbcj4+Ml18MCk+Pj4wPDEyODowKWNvbnRpbnVlO2lmKChjW3E+PjJdfDApIT0oY1tuPj4yXXwwKSl7Yj04MjticmVha31pZighKChjW3I+PjJdfDApIT0wPyhjW3Q+PjJdfDApIT0oY1tsPj4yXXwwKTowKSl7Yj04MjticmVha319aWYoKGJ8MCk9PTcpe3doaWxlKDEpe2I9MDtpZigoZFtjW3Q+PjJdPj4wXXwwKTwxMjgpe2c9Y1t0Pj4yXXwwO2NbdD4+Ml09ZysxO2c9ZFtnPj4wXXwwfWVsc2UgZz1KQyh0KXwwO2NbcT4+Ml09ZztpZigoZ3wwKT09KGNbbT4+Ml18MCkpZz0xO2Vsc2UgZz0oY1txPj4yXXwwKT09KGNbbj4+Ml18MCk7Zj1jW3E+PjJdfDA7aWYoIWcpYnJlYWs7aWYoKGZ8MCkhPShjW24+PjJdfDApKXtiPTc7Y29udGludWV9aWYoIShKQyh1KXwwKSl7Yj0xNTticmVha31lbHNlIGI9N31pZigoYnwwKT09MTUpe2Nbcz4+Ml09MDt3PWNbcz4+Ml18MDtpPXg7cmV0dXJuIHd8MH1pZighZil7Y1tzPj4yXT0xO3c9Y1tzPj4yXXwwO2k9eDtyZXR1cm4gd3wwfWRvIGlmKChjW3E+PjJdfDApPT0oY1t3Pj4yXXwwKSl7aWYoIShkWyhjW3Y+PjJdfDApKzI+PjBdfDApKXtjW3E+PjJdPUpDKHQpfDA7aWYoY1txPj4yXXwwKWJyZWFrO2Nbcz4+Ml09MDt3PWNbcz4+Ml18MDtpPXg7cmV0dXJuIHd8MH1iOndoaWxlKDEpe2lmKGRbY1t1Pj4yXT4+MF18MClnPShUaCgoY1t0Pj4yXXwwKSstMXwwLGNbdT4+Ml18MCxjW3Y+PjJdfDAsY1t3Pj4yXXwwKXwwKT09MDtlbHNlIGc9MDtmPWNbdT4+Ml18MDtpZighZylicmVhaztjW3U+PjJdPWYrMTtpZigoZFtmPj4wXXwwKTwxOTIpY29udGludWU7d2hpbGUoMSl7aWYoKGRbY1t1Pj4yXT4+MF0mMTkyfDApIT0xMjgpY29udGludWUgYjtjW3U+PjJdPShjW3U+PjJdfDApKzF9fWNbcz4+Ml09KGRbZj4+MF18MCkhPTAmMTt3PWNbcz4+Ml18MDtpPXg7cmV0dXJuIHd8MH13aGlsZSgwKTtjOmRvIGlmKChjW3E+PjJdfDApPj4+MDw9MTI4KXtnPWNbcT4+Ml18MDtpZihhW3A+PjBdfDApe2Nbbz4+Ml09ZyZ+KGRbMTg0MDMrKGNbcT4+Ml0mMjU1KT4+MF0mMzIpO2NbcT4+Ml09ZFsxNzYxMysoY1txPj4yXSYyNTUpPj4wXX1lbHNlIGNbbz4+Ml09Zzt3aGlsZSgxKXtwPWNbdT4+Ml18MDtjW3U+PjJdPXArMTtwPWRbcD4+MF18MDtjW3I+PjJdPXA7aWYoIXApYnJlYWsgYztpZigoY1tyPj4yXXwwKSE9KGNbcT4+Ml18MCk/KGNbcj4+Ml18MCkhPShjW28+PjJdfDApOjApY29udGludWU7aWYoVGgoY1t0Pj4yXXwwLGNbdT4+Ml18MCxjW3Y+PjJdfDAsY1t3Pj4yXXwwKXwwKWJyZWFrfWNbcz4+Ml09MTt3PWNbcz4+Ml18MDtpPXg7cmV0dXJuIHd8MH1lbHNle3doaWxlKDEpe2lmKChkW2NbdT4+Ml0+PjBdfDApPDEyOCl7Zz1jW3U+PjJdfDA7Y1t1Pj4yXT1nKzE7Zz1kW2c+PjBdfDB9ZWxzZSBnPUpDKHUpfDA7Y1tyPj4yXT1nO2lmKCFnKWJyZWFrIGM7aWYoKGNbcj4+Ml18MCkhPShjW3E+PjJdfDApKWNvbnRpbnVlO2lmKFRoKGNbdD4+Ml18MCxjW3U+PjJdfDAsY1t2Pj4yXXwwLGNbdz4+Ml18MCl8MClicmVha31jW3M+PjJdPTE7dz1jW3M+PjJdfDA7aT14O3JldHVybiB3fDB9d2hpbGUoMCk7Y1tzPj4yXT0wO3c9Y1tzPj4yXXwwO2k9eDtyZXR1cm4gd3wwfWVsc2UgaWYoKGJ8MCk9PTQ5KXtjW3M+PjJdPTA7dz1jW3M+PjJdfDA7aT14O3JldHVybiB3fDB9ZWxzZSBpZigoYnwwKT09NTIpe2Nbcz4+Ml09MDt3PWNbcz4+Ml18MDtpPXg7cmV0dXJuIHd8MH1lbHNlIGlmKChifDApPT03Myl7Y1tzPj4yXT0wO3c9Y1tzPj4yXXwwO2k9eDtyZXR1cm4gd3wwfWVsc2UgaWYoKGJ8MCk9PTgyKXtjW3M+PjJdPTA7dz1jW3M+PjJdfDA7aT14O3JldHVybiB3fDB9ZWxzZSBpZigoYnwwKT09ODMpe2Nbcz4+Ml09KGRbY1t1Pj4yXT4+MF18MCk9PTAmMTt3PWNbcz4+Ml18MDtpPXg7cmV0dXJuIHd8MH1yZXR1cm4gMH1mdW5jdGlvbiBVaChhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wO2Y9aTtpPWkrMTZ8MDtiPWYrOHwwO2Q9Zis0fDA7ZT1mO2NbZD4+Ml09YTtkbyBpZighKGNbZD4+Ml18MCkpe1JIKDM5NjkxKTtjW2I+PjJdPTB9ZWxzZXtjW2U+PjJdPWNbKGNbZD4+Ml18MCkrODQ+PjJdO2lmKChjW2U+PjJdfDApPT0tMTYwNzg4MzExMyl7Y1tiPj4yXT0xO2JyZWFrfWlmKFdoKGNbZD4+Ml18MCl8MClSSCgzOTY5Nik7Y1tiPj4yXT0wfXdoaWxlKDApO2k9ZjtyZXR1cm4gY1tiPj4yXXwwfWZ1bmN0aW9uIFZoKGEsYixkLGUsZixnLGgpe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO3ZhciBqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTA7cz1pO2k9aSs0OHwwO2o9cyszMnwwO2s9cysyOHwwO2w9cysyNHwwO209cysyMHwwO249cysxNnwwO289cysxMnwwO3A9cys4fDA7cT1zKzR8MDtyPXM7Y1trPj4yXT1hO2NbbD4+Ml09YjtjW20+PjJdPWQ7Y1tuPj4yXT1lO2Nbbz4+Ml09ZjtjW3A+PjJdPWc7Y1txPj4yXT1oO2NbY1twPj4yXT4+Ml09MDtiPShVaChjW2s+PjJdfDApfDApPT0wO2lmKGJ8KGNbbD4+Ml18MCk9PTApe2Nbaj4+Ml09TGYoMTE0MTk3KXwwO2I9Y1tqPj4yXXwwO2k9cztyZXR1cm4gYnwwfU9mKGNbaz4+Ml18MCk7Y1tyPj4yXT1TSChjW2s+PjJdfDAsY1tsPj4yXXwwLGNbbT4+Ml18MCxjW24+PjJdfDAsY1tvPj4yXXwwLGNbcD4+Ml18MCxjW3E+PjJdfDApfDA7aWYoKGNbcj4+Ml18MCk9PTE3KXtYZChjW2NbcD4+Ml0+PjJdfDApfDA7Y1tyPj4yXT1TSChjW2s+PjJdfDAsY1tsPj4yXXwwLGNbbT4+Ml18MCxjW24+PjJdfDAsY1tvPj4yXXwwLGNbcD4+Ml18MCxjW3E+PjJdfDApfDB9Y1tqPj4yXT1jW3I+PjJdO2I9Y1tqPj4yXXwwO2k9cztyZXR1cm4gYnwwfWZ1bmN0aW9uIFdoKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTA7ZD1pO2k9aSsxNnwwO2I9ZCs4fDA7Zj1kKzR8MDtlPWQ7Y1tmPj4yXT1hO2NbZT4+Ml09Y1soY1tmPj4yXXwwKSs4ND4+Ml07aWYoKGNbZT4+Ml18MCkhPTEyNjYwOTQ3MzYmKGNbZT4+Ml18MCkhPS0xNjA3ODgzMTEzJihjW2U+PjJdfDApIT0tMjY0NTM3ODUwKXtSSCgzOTUzOCk7Y1tiPj4yXT0wO2Y9Y1tiPj4yXXwwO2k9ZDtyZXR1cm4gZnwwfWVsc2V7Y1tiPj4yXT0xO2Y9Y1tiPj4yXXwwO2k9ZDtyZXR1cm4gZnwwfXJldHVybiAwfWZ1bmN0aW9uIFhoKGEsYixkLGUsZil7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTA7cj1pO2k9aSs0OHwwO2c9ciszNnwwO2g9ciszMnwwO2o9cisyOHwwO2s9cisyNHwwO2w9cisyMHwwO3A9cisxNnwwO209cisxMnwwO289cis4fDA7bj1yKzR8MDtxPXI7Y1tnPj4yXT1hO2NbaD4+Ml09YjtjW2o+PjJdPWQ7Y1trPj4yXT1lO2NbbD4+Ml09ZjtjW3A+PjJdPTA7Y1ttPj4yXT1KZihjW2g+PjJdfDApfDA7aWYoIShzaigoY1tnPj4yXXwwKSszMjB8MCxjW2g+PjJdfDApfDApKXtjW28+PjJdPVZ3KGNbZz4+Ml18MCwyMCsoY1ttPj4yXXwwKSsxfDAsMCl8MDtpZigoY1tvPj4yXXwwKSE9MD8oY1txPj4yXT0oY1tvPj4yXXwwKSsyMCxUUihjW3E+PjJdfDAsY1toPj4yXXwwLChjW20+PjJdfDApKzF8MCl8MCxjWyhjW28+PjJdfDApKzQ+PjJdPWNbcT4+Ml0sY1tjW28+PjJdPj4yXT1jW2o+PjJdLGNbKGNbbz4+Ml18MCkrOD4+Ml09Y1trPj4yXSxjWyhjW28+PjJdfDApKzEyPj4yXT1jW2w+PjJdLGNbKGNbbz4+Ml18MCkrMTY+PjJdPTAsY1tuPj4yXT1VaigoY1tnPj4yXXwwKSszMjB8MCxjW3E+PjJdfDAsY1tvPj4yXXwwKXwwLChjW24+PjJdfDApIT0wKTowKXttaChjW2c+PjJdfDApO1RmKGNbZz4+Ml18MCxjW24+PjJdfDApfX1lbHNlIGNbcD4+Ml09TGYoMTIyNTkwKXwwO2NbcD4+Ml09VWcoY1tnPj4yXXwwLGNbcD4+Ml18MCl8MDtpZighKChjW3A+PjJdfDApIT0wJihjW2w+PjJdfDApIT0wKSl7Yj1jW3A+PjJdfDA7aT1yO3JldHVybiBifDB9UWJbY1tsPj4yXSYyNTVdKGNbaz4+Ml18MCk7Yj1jW3A+PjJdfDA7aT1yO3JldHVybiBifDB9ZnVuY3Rpb24gWWgoYixlLGYpe2I9YnwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wO3o9aTtpPWkrODB8MDtnPXorNzJ8MDtxPXorMTZ8MDtwPXorOHwwO289ejtzPXorNjh8MDt0PXorNjR8MDtoPXorNjB8MDtqPXorNTZ8MDt3PXorNTJ8MDt2PXorNDh8MDttPXorNDR8MDtuPXorNDB8MDtrPXorMzZ8MDt1PXorMzJ8MDtsPXorMjh8MDt4PXorMjR8MDt5PXorMjB8MDtjW3Q+PjJdPWI7Y1toPj4yXT1lO2Nbaj4+Ml09ZjtjW3c+PjJdPTA7Y1trPj4yXT0tMTtjW3U+PjJdPWNbY1t0Pj4yXT4+Ml07Y1tsPj4yXT1jWyhjW3U+PjJdfDApKzk2KzQ+PjJdO2lmKCEoY1soY1t1Pj4yXXwwKSsxNTY+PjJdfDApKWNbKGNbdT4+Ml18MCkrMjQ4Pj4yXT0wO2NbKGNbdD4+Ml18MCkrMTI+PjJdPTA7Y1soY1t0Pj4yXXwwKSs0MzY+PjJdPWNbaD4+Ml07Y1t2Pj4yXT0wO2NbbT4+Ml09X3UoMTc5KXwwO2lmKCEoY1ttPj4yXXwwKSl7bWgoY1t1Pj4yXXwwKTtjW3M+PjJdPTc7eT1jW3M+PjJdfDA7aT16O3JldHVybiB5fDB9YTp3aGlsZSgxKXtkbyBpZihhWyhjW2g+PjJdfDApKyhjW3Y+PjJdfDApPj4wXXwwKXtjWyhjW3Q+PjJdfDApKzM5Mj4+Ml09KGNbaD4+Ml18MCkrKGNbdj4+Ml18MCk7ZT0kdSgoY1toPj4yXXwwKSsoY1t2Pj4yXXwwKXwwLG4pfDA7Y1soY1t0Pj4yXXwwKSszOTIrND4+Ml09ZTtjW3Y+PjJdPShjW3Y+PjJdfDApKyhjWyhjW3Q+PjJdfDApKzM5Mis0Pj4yXXwwKTtpZigoY1t2Pj4yXXwwKT4oY1tsPj4yXXwwKSl7cj03O2JyZWFrIGF9fWVsc2V7aWYoKGNbaz4+Ml18MCk9PTEpe2Nbbj4+Ml09MDticmVha31pZighKGNbaz4+Ml18MCkpYnJlYWsgYTtjW24+PjJdPTF9d2hpbGUoMCk7aWYoKGNbbj4+Ml18MCk+PTE2Mil7aWYoY1soY1t1Pj4yXXwwKSsyNDg+PjJdfDApe3I9MTQ7YnJlYWt9aWYoKGNbbj4+Ml18MCk9PTE2Myl7cj0xNjticmVha31lbHNlIGNvbnRpbnVlfWVsc2V7Yj1jW20+PjJdfDA7Zj1jW24+PjJdfDA7QT0oY1t0Pj4yXXwwKSszOTJ8MDtlPWNbdD4+Ml18MDtjW2c+PjJdPWNbQT4+Ml07Y1tnKzQ+PjJdPWNbQSs0Pj4yXTthdihiLGYsZyxlKTtjW2s+PjJdPWNbbj4+Ml07aWYoY1soY1t0Pj4yXXwwKSsxMj4+Ml18MClicmVhaztpZihkWyhjW3U+PjJdfDApKzY5Pj4wXXwwKWJyZWFrO2Vsc2UgY29udGludWV9fWlmKChyfDApPT03KWNbKGNbdD4+Ml18MCkrMTI+PjJdPTE4O2Vsc2UgaWYoKHJ8MCk9PTE0KWNbKGNbdD4+Ml18MCkrMTI+PjJdPTk7ZWxzZSBpZigocnwwKT09MTYpe0E9Y1t0Pj4yXXwwO2Nbbz4+Ml09KGNbdD4+Ml18MCkrMzkyO0VoKEEsMjY0Mzcsbyl9Y1soY1t0Pj4yXXwwKSs0MzY+PjJdPShjW2g+PjJdfDApKyhjW3Y+PjJdfDApO2J2KGNbbT4+Ml18MCwxNDgpO2lmKGFbKGNbdT4+Ml18MCkrNjk+PjBdfDApY1soY1t0Pj4yXXwwKSsxMj4+Ml09NztpZigoKGNbKGNbdD4+Ml18MCkrMTI+PjJdfDApIT0wPyhjWyhjW3Q+PjJdfDApKzEyPj4yXXwwKSE9MTAxOjApPyhjWyhjW3Q+PjJdfDApKzQ+PjJdfDApPT0wOjApe0E9Y1t1Pj4yXXwwO2NbcD4+Ml09bGgoY1soY1t0Pj4yXXwwKSsxMj4+Ml18MCl8MDtBPUdoKEEsMTgzOTEscCl8MDtjWyhjW3Q+PjJdfDApKzQ+PjJdPUF9aWYoY1soY1t0Pj4yXXwwKSs0Pj4yXXwwKXtjW2Nbaj4+Ml0+PjJdPWNbKGNbdD4+Ml18MCkrND4+Ml07QT1jWyhjW3Q+PjJdfDApKzEyPj4yXXwwO2NbcT4+Ml09Y1tjW2o+PjJdPj4yXTtSZChBLDE4MzkxLHEpO2NbKGNbdD4+Ml18MCkrND4+Ml09MDtjW3c+PjJdPShjW3c+PjJdfDApKzF9aWYoKChjWyhjW3Q+PjJdfDApKzg+PjJdfDApIT0wPyhjWyhjW3Q+PjJdfDApKzM2Pj4yXXwwKT4wOjApPyhkWyhjW3Q+PjJdfDApKzE4Pj4wXXwwKT09MDowKXtjdihjWyhjW3Q+PjJdfDApKzg+PjJdfDApO2NbKGNbdD4+Ml18MCkrOD4+Ml09MH1pZighKGRbKGNbdD4+Ml18MCkrMTg+PjBdfDApKXtUZihjW3U+PjJdfDAsY1soY1t0Pj4yXXwwKSsxMTY+PjJdfDApO2NbKGNbdD4+Ml18MCkrMTE2Pj4yXT0wO2NbKGNbdD4+Ml18MCkrMTEyPj4yXT0wfUtkKGNbKGNbdD4+Ml18MCkrNDYwPj4yXXwwKTtpZighKGFbKGNbdD4+Ml18MCkrNDEwPj4wXXwwKSlSZihjW3U+PjJdfDAsY1soY1t0Pj4yXXwwKSs0NDA+PjJdfDApO2lmKGNbKGNbdD4+Ml18MCkrNDc2Pj4yXXwwKWR2KGNbdT4+Ml18MCxjWyhjW3Q+PjJdfDApKzQ3Nj4+Ml18MCk7UWYoY1t1Pj4yXXwwLGNbKGNbdD4+Ml18MCkrNDQ0Pj4yXXwwKTtjW3Y+PjJdPShjWyhjW3Q+PjJdfDApKzQwND4+Ml18MCktMTt3aGlsZSgxKXtnPWNbdT4+Ml18MDtpZigoY1t2Pj4yXXwwKTwwKWJyZWFrO1RmKGcsY1soY1soY1t0Pj4yXXwwKSs0Mjg+PjJdfDApKyhjW3Y+PjJdPDwyKT4+Ml18MCk7Y1t2Pj4yXT0oY1t2Pj4yXXwwKSstMX1UZihnLGNbKGNbdD4+Ml18MCkrNDI4Pj4yXXwwKTt3aGlsZSgxKXtpZighKGNbKGNbdD4+Ml18MCkrMTIwPj4yXXwwKSlicmVhaztjW3g+PjJdPWNbKGNbdD4+Ml18MCkrMTIwPj4yXTtjWyhjW3Q+PjJdfDApKzEyMD4+Ml09Y1tjW3g+PjJdPj4yXTtUZihjW3U+PjJdfDAsY1t4Pj4yXXwwKX13aGlsZSgxKXtpZighKGNbKGNbdD4+Ml18MCkrNDY0Pj4yXXwwKSlicmVhaztjW3k+PjJdPWNbKGNbdD4+Ml18MCkrNDY0Pj4yXTtjWyhjW3Q+PjJdfDApKzQ2ND4+Ml09Y1soY1t5Pj4yXXwwKSs2OD4+Ml07UmYoY1t1Pj4yXXwwLGNbeT4+Ml18MCl9Y1tzPj4yXT1jW3c+PjJdO0E9Y1tzPj4yXXwwO2k9ejtyZXR1cm4gQXwwfWZ1bmN0aW9uIFpoKGEpe2E9YXwwO3ZhciBkPTAsZT0wLGY9MDtmPWk7aT1pKzE2fDA7ZD1mKzR8MDtlPWY7Y1tkPj4yXT1hO2NbZT4+Ml09c2goY1tkPj4yXXwwLDQwLDApfDA7aWYoIShjW2U+PjJdfDApKXtlPWNbZT4+Ml18MDtpPWY7cmV0dXJuIGV8MH1iWyhjW2U+PjJdfDApKzg+PjFdPTE7Y1soY1tlPj4yXXwwKSszMj4+Ml09Y1tkPj4yXTtlPWNbZT4+Ml18MDtpPWY7cmV0dXJuIGV8MH1mdW5jdGlvbiBfaChiLGQsZSxmLGcpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO3ZhciBoPTAsaj0wLGs9MCxsPTAsbT0wLG49MDtuPWk7aT1pKzMyfDA7aD1uKzEyfDA7aj1uKzh8MDtrPW4rNHwwO2w9bisxNnwwO209bjtjW2g+PjJdPWI7Y1tqPj4yXT1kO2Nbaz4+Ml09ZTthW2w+PjBdPWY7Y1ttPj4yXT1nO2lmKCEoY1toPj4yXXwwKSl7aT1uO3JldHVybn1naChjW2g+PjJdfDAsY1trPj4yXXwwLGNbaj4+Ml18MCxhW2w+PjBdfDAsY1ttPj4yXXwwKXwwO2k9bjtyZXR1cm59ZnVuY3Rpb24gJGgoKXt2YXIgYT0wLGI9MDthPWk7aT1pKzE2fDA7Yj1hO2NbYj4+Ml09NDIyMDttZig0LGIpfDA7aT1hO3JldHVybn1mdW5jdGlvbiBhaSgpe3JldHVybiA4OH1mdW5jdGlvbiBiaSgpe3JldHVybiA0MH1mdW5jdGlvbiBjaSgpe3JldHVybiAzMn1mdW5jdGlvbiBkaSgpe3ZhciBhPTAsYj0wO2E9aTtpPWkrMTZ8MDtiPWE7Y1tiPj4yXT00MTY4O21mKDE4LGIpfDA7aT1hO3JldHVybn1mdW5jdGlvbiBlaShhKXthPWF8MDt2YXIgYj0wLGQ9MDtiPWk7aT1pKzE2fDA7ZD1iO2NbZD4+Ml09YTt2dShjWyhjW2Q+PjJdfDApKzIxMj4+Ml18MCk7aT1iO3JldHVybn1mdW5jdGlvbiBmaShhKXthPWF8MDt2YXIgYj0wLGU9MDtlPWk7aT1pKzE2fDA7Yj1lO2NbYj4+Ml09YTtpZighKGNbYj4+Ml18MCkpe2E9MDthPWEmMTtpPWU7cmV0dXJuIGF8MH1hPShkWyhjW2I+PjJdfDApKzg+PjBdfDB8MCk9PTI7YT1hJjE7aT1lO3JldHVybiBhfDB9ZnVuY3Rpb24gZ2koZCxlLGYsZyl7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7dmFyIGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wO3E9aTtpPWkrMzJ8MDtoPXErMjh8MDtqPXErMjR8MDtrPXErMjB8MDtsPXErMTZ8MDttPXErMTJ8MDtwPXErOHwwO249cSs0fDA7bz1xO2Nbaj4+Ml09ZDtjW2s+PjJdPWU7Y1tsPj4yXT1mO2NbbT4+Ml09ZztpZihjWyhjW2o+PjJdfDApKzI1Nis4Pj4yXXwwKXtjW2g+PjJdPTU7Zj1jW2g+PjJdfDA7aT1xO3JldHVybiBmfDB9aWYoYVsoY1tqPj4yXXwwKSsyNTYrNj4+MF18MClLZChjWyhjW2o+PjJdfDApKzI1NiszMj4+Ml18MCk7Zj1jW2w+PjJdJi04O2NbbD4+Ml09ZjtjW2w+PjJdPShjW2w+PjJdfDApPD00PzA6ZjtpZigoY1ttPj4yXXwwKTwwKWNbbT4+Ml09MDtkbyBpZighKChjW2w+PjJdfDApPT0wfChjW20+PjJdfDApPT0wKSl7aWYoY1trPj4yXXwwKXtjW3A+PjJdPWNbaz4+Ml07YnJlYWt9WWooKTtmPV8oY1tsPj4yXXwwLGNbbT4+Ml18MCl8MDtjW3A+PjJdPSRmKGYsKChmfDApPDApPDwzMT4+MzEpfDA7WmooKTtpZihjW3A+PjJdfDApe2Y9YWcoY1twPj4yXXwwKXwwO2NbbT4+Ml09KGZ8MCkvKGNbbD4+Ml18MCl8MH19ZWxzZXtjW2w+PjJdPTA7Y1twPj4yXT0wfXdoaWxlKDApO2NbKGNbaj4+Ml18MCkrMjU2KzMyPj4yXT1jW3A+PjJdO2NbKGNbaj4+Ml18MCkrMjU2KzI4Pj4yXT0wO2JbKGNbaj4+Ml18MCkrMjU2KzQ+PjFdPWNbbD4+Ml07aWYoY1twPj4yXXwwKXtjW28+PjJdPWNbcD4+Ml07Y1tuPj4yXT0oY1ttPj4yXXwwKS0xO3doaWxlKDEpe2lmKChjW24+PjJdfDApPDApYnJlYWs7Y1tjW28+PjJdPj4yXT1jWyhjW2o+PjJdfDApKzI1NisyOD4+Ml07Y1soY1tqPj4yXXwwKSsyNTYrMjg+PjJdPWNbbz4+Ml07Y1tvPj4yXT0oY1tvPj4yXXwwKSsoY1tsPj4yXXwwKTtjW24+PjJdPShjW24+PjJdfDApKy0xfWNbKGNbaj4+Ml18MCkrMjU2KzM2Pj4yXT1jW28+PjJdO2NbKGNbaj4+Ml18MCkrMjU2Pj4yXT0wO2FbKGNbaj4+Ml18MCkrMjU2KzY+PjBdPShjW2s+PjJdfDApPT0wPzE6MH1lbHNle2NbKGNbaj4+Ml18MCkrMjU2KzMyPj4yXT1jW2o+PjJdO2NbKGNbaj4+Ml18MCkrMjU2KzM2Pj4yXT1jW2o+PjJdO2NbKGNbaj4+Ml18MCkrMjU2Pj4yXT0xO2FbKGNbaj4+Ml18MCkrMjU2KzY+PjBdPTB9Y1toPj4yXT0wO2Y9Y1toPj4yXXwwO2k9cTtyZXR1cm4gZnwwfWZ1bmN0aW9uIGhpKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTA7aj1pO2k9aSsxNnwwO2g9ajtlPWorMTJ8MDtmPWorOHwwO2c9ais0fDA7Y1tmPj4yXT1hO2NbZz4+Ml09YjtpZighKGNbZj4+Ml18MCkpe2NbZT4+Ml09MDtoPWNbZT4+Ml18MDtpPWo7cmV0dXJuIGh8MH1pZighKFdoKGNbZj4+Ml18MCl8MCkpe2NbZT4+Ml09TGYoMTM4ODY3KXwwO2g9Y1tlPj4yXXwwO2k9ajtyZXR1cm4gaHwwfWlmKChkWyhjW2Y+PjJdfDApKzc2Pj4wXXwwKSY4KVdiW2NbKGNbZj4+Ml18MCkrMTg0Pj4yXSYyNTVdKDgsY1soY1tmPj4yXXwwKSsxODg+PjJdfDAsY1tmPj4yXXwwLDApfDA7bnUoY1tmPj4yXXwwKTtvdShjW2Y+PjJdfDApfDA7aWYoKGNbZz4+Ml18MCk9PTA/KHB1KGNbZj4+Ml18MCl8MCkhPTA6MCl7amcoY1tmPj4yXXwwLDUsMjYyOTUsaCk7Y1tlPj4yXT01O2g9Y1tlPj4yXXwwO2k9ajtyZXR1cm4gaHwwfWNbKGNbZj4+Ml18MCkrODQ+PjJdPTE2OTEzNTIxOTE7UWcoY1tmPj4yXXwwKTtjW2U+PjJdPTA7aD1jW2U+PjJdfDA7aT1qO3JldHVybiBofDB9ZnVuY3Rpb24gaWkoYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTA7Zj1pO2k9aSszMnwwO2Q9ZisxNnwwO2o9ZisxMnwwO2g9Zis4fDA7ZT1mKzR8MDtnPWY7Y1tqPj4yXT1hO2NbaD4+Ml09YjtjW2U+PjJdPWNbaj4+Ml07Y1tnPj4yXT1jWyhjW2o+PjJdfDApKzQyOD4+Ml07aWYoKCgoY1toPj4yXXwwKSsxfDApKjFlM3wwKT4oY1tnPj4yXXwwKSl7Y1tkPj4yXT0wO2o9Y1tkPj4yXXwwO2k9ZjtyZXR1cm4ganwwfWVsc2V7d2koY1tjW2U+PjJdPj4yXXwwLDFlNil8MDtjW2Q+PjJdPTE7aj1jW2Q+PjJdfDA7aT1mO3JldHVybiBqfDB9cmV0dXJuIDB9XG5mdW5jdGlvbiBqaShkLGYsZyxoLGosayxsLG0sbil7ZD1kfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7bD1sfDA7bT1tfDA7bj1ufDA7dmFyIG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MDtEPWk7aT1pKzY0fDA7Qz1EO3E9RCs1NnwwO3I9RCs1MnwwO3M9RCs0OHwwO3Q9RCs0NHwwO3U9RCs0MHwwO3Y9RCszNnwwO3c9RCszMnwwO3g9RCsyOHwwO3k9RCsyNHwwO3o9RCsyMHwwO0I9RCsxNnwwO289RCsxMnwwO0E9RCs4fDA7cD1EKzR8MDtjW3I+PjJdPWQ7Y1tzPj4yXT1mO2NbdD4+Ml09ZztjW3U+PjJdPWg7Y1t2Pj4yXT1qO2Nbdz4+Ml09aztjW3g+PjJdPWw7Y1t5Pj4yXT1tO2Nbej4+Ml09bjtkbyBpZihjW3M+PjJdfDApe2lmKChjW3c+PjJdfDApIT0wPyhjW3k+PjJdfDApIT0wfChjW3g+PjJdfDApIT0wOjApYnJlYWs7aWYoKChjW3c+PjJdfDApPT0wJihjW3k+PjJdfDApIT0wXjF8KGNbeD4+Ml18MCkhPTA/ISgoKChjW3c+PjJdfDApIT0wfChjW3k+PjJdfDApIT0wKV4xKSYoY1t4Pj4yXXwwKSE9MHwoY1t0Pj4yXXwwKTwtMXwoY1t0Pj4yXXwwKT4xMjcpOjApPyhmPUpmKGNbcz4+Ml18MCl8MCxjW28+PjJdPWYsMjU1Pj0oZnwwKSk6MCl7Y1tBPj4yXT1jW3U+PjJdJjIwNDg7Y1t1Pj4yXT1jW3U+PjJdJjc7ZG8gaWYoKGNbdT4+Ml18MCkhPTQpe2lmKChjW3U+PjJdfDApPT01KXtjW3A+PjJdPWppKGNbcj4+Ml18MCxjW3M+PjJdfDAsY1t0Pj4yXXwwLDF8Y1tBPj4yXSxjW3Y+PjJdfDAsY1t3Pj4yXXwwLGNbeD4+Ml18MCxjW3k+PjJdfDAsY1t6Pj4yXXwwKXwwO2lmKCEoY1twPj4yXXwwKSljW3A+PjJdPWppKGNbcj4+Ml18MCxjW3M+PjJdfDAsY1t0Pj4yXXwwLDJ8Y1tBPj4yXSxjW3Y+PjJdfDAsY1t3Pj4yXXwwLGNbeD4+Ml18MCxjW3k+PjJdfDAsY1t6Pj4yXXwwKXwwO2lmKCEoY1twPj4yXXwwKSl7Y1t1Pj4yXT0zO2JyZWFrfWNbcT4+Ml09Y1twPj4yXTtDPWNbcT4+Ml18MDtpPUQ7cmV0dXJuIEN8MH19ZWxzZSBjW3U+PjJdPShhWzk2OF18MCk9PTA/MzoyO3doaWxlKDApO2NbQj4+Ml09a2koY1tyPj4yXXwwLGNbcz4+Ml18MCxjW3Q+PjJdfDAsY1t1Pj4yXSYyNTUsMCl8MDtkbyBpZigoKGNbQj4+Ml18MCkhPTA/KGVbKGNbQj4+Ml18MCkrMj4+MV0mM3wwKT09KGNbdT4+Ml18MCk6MCk/KGFbY1tCPj4yXT4+MF18MCk9PShjW3Q+PjJdfDApOjApe2Q9Y1tyPj4yXXwwO2lmKCEoY1soY1tyPj4yXXwwKSsxNTY+PjJdfDApKXtTaChkKTticmVha31qZyhkLDUsMjYyMzIsQyk7Y1txPj4yXT01O0M9Y1txPj4yXXwwO2k9RDtyZXR1cm4gQ3wwfXdoaWxlKDApO2NbQj4+Ml09a2koY1tyPj4yXXwwLGNbcz4+Ml18MCxjW3Q+PjJdfDAsY1t1Pj4yXSYyNTUsMSl8MDtpZighKGNbQj4+Ml18MCkpe2NbcT4+Ml09NztDPWNbcT4+Ml18MDtpPUQ7cmV0dXJuIEN8MH1tdShjW3I+PjJdfDAsY1tCPj4yXXwwKTtpZihjW3o+PjJdfDApe0M9Y1t6Pj4yXXwwO2NbQz4+Ml09KGNbQz4+Ml18MCkrMX1jWyhjW0I+PjJdfDApKzI0Pj4yXT1jW3o+PjJdO2JbKGNbQj4+Ml18MCkrMj4+MV09ZVsoY1tCPj4yXXwwKSsyPj4xXSYzfGNbQT4+Ml07Y1soY1tCPj4yXXwwKSsxMj4+Ml09KGNbdz4+Ml18MCkhPTA/Y1t3Pj4yXXwwOmNbeD4+Ml18MDtjWyhjW0I+PjJdfDApKzE2Pj4yXT1jW3k+PjJdO2NbKGNbQj4+Ml18MCkrND4+Ml09Y1t2Pj4yXTthW2NbQj4+Ml0+PjBdPWNbdD4+Ml07Y1txPj4yXT0wO0M9Y1txPj4yXXwwO2k9RDtyZXR1cm4gQ3wwfX13aGlsZSgwKTtjW3E+PjJdPUxmKDEzOTQzNil8MDtDPWNbcT4+Ml18MDtpPUQ7cmV0dXJuIEN8MH1mdW5jdGlvbiBraShlLGYsZyxoLGope2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO3ZhciBrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MDt5PWk7aT1pKzY0fDA7az15KzQ0fDA7bD15KzQwfDA7bT15KzM2fDA7bj15KzMyfDA7bz15KzQ5fDA7cD15KzQ4fDA7dD15KzI4fDA7dT15KzI0fDA7cT15KzIwfDA7cj15KzE2fDA7cz15KzEyfDA7dz15Kzh8MDt4PXkrNHwwO3Y9eTtjW2w+PjJdPWU7Y1ttPj4yXT1mO2Nbbj4+Ml09ZzthW28+PjBdPWg7YVtwPj4wXT1qO2NbdT4+Ml09MDtjW3E+PjJdPTA7Y1tzPj4yXT1KZihjW20+PjJdfDApfDA7Y1t0Pj4yXT1zaigoY1tsPj4yXXwwKSszNDh8MCxjW20+PjJdfDApfDA7d2hpbGUoMSl7aWYoIShjW3Q+PjJdfDApKWJyZWFrO2Nbdz4+Ml09Z3UoY1t0Pj4yXXwwLGNbbj4+Ml18MCxhW28+PjBdfDApfDA7aWYoKGNbdz4+Ml18MCk+KGNbcT4+Ml18MCkpe2NbdT4+Ml09Y1t0Pj4yXTtjW3E+PjJdPWNbdz4+Ml19Y1t0Pj4yXT1jWyhjW3Q+PjJdfDApKzg+PjJdfWE6ZG8gaWYoIShhW3A+PjBdfDApKXtpZigoY1t1Pj4yXXwwKSE9MD8oY1soY1tsPj4yXXwwKSsyND4+Ml0mMjA5NzE1MnwwKT09MDowKWJyZWFrO2NbcT4+Ml09MDtjW3I+PjJdPSgoZFsxNzYxMysoZFtjW20+PjJdPj4wXXwwKT4+MF18MCkrKGNbcz4+Ml18MCl8MCklMjN8MDtjW3Q+PjJdPWh1KGNbcj4+Ml18MCxjW20+PjJdfDApfDA7d2hpbGUoMSl7aWYoIShjW3Q+PjJdfDApKWJyZWFrIGE7Y1t4Pj4yXT1ndShjW3Q+PjJdfDAsY1tuPj4yXXwwLGFbbz4+MF18MCl8MDtpZigoY1t4Pj4yXXwwKT4oY1txPj4yXXwwKSl7Y1t1Pj4yXT1jW3Q+PjJdO2NbcT4+Ml09Y1t4Pj4yXX1jW3Q+PjJdPWNbKGNbdD4+Ml18MCkrOD4+Ml19fXdoaWxlKDApO2RvIGlmKChkW3A+PjBdfDApIT0wJihjW3E+PjJdfDApPDY/KGY9c2goY1tsPj4yXXwwLDI4KyhjW3M+PjJdfDApKzF8MCwwKXwwLGNbdT4+Ml09ZiwoZnwwKSE9MCk6MCl7Y1soY1t1Pj4yXXwwKSsyMD4+Ml09KGNbdT4+Ml18MCkrMjg7YVtjW3U+PjJdPj4wXT1jW24+PjJdO2JbKGNbdT4+Ml18MCkrMj4+MV09ZFtvPj4wXXwwO1RSKChjW3U+PjJdfDApKzI4fDAsY1ttPj4yXXwwLChjW3M+PjJdfDApKzF8MCl8MDtjW3Y+PjJdPVVqKChjW2w+PjJdfDApKzM0OHwwLGNbKGNbdT4+Ml18MCkrMjA+PjJdfDAsY1t1Pj4yXXwwKXwwO2lmKChjW3Y+PjJdfDApIT0oY1t1Pj4yXXwwKSl7Y1soY1t1Pj4yXXwwKSs4Pj4yXT1jW3Y+PjJdO2JyZWFrfVRmKGNbbD4+Ml18MCxjW3U+PjJdfDApO21oKGNbbD4+Ml18MCk7Y1trPj4yXT0wO2Y9Y1trPj4yXXwwO2k9eTtyZXR1cm4gZnwwfXdoaWxlKDApO2RvIGlmKGNbdT4+Ml18MCl7aWYoKGNbKGNbdT4+Ml18MCkrMTI+PjJdfDApPT0wPyhkW3A+PjBdfDApPT0wOjApYnJlYWs7Y1trPj4yXT1jW3U+PjJdO2Y9Y1trPj4yXXwwO2k9eTtyZXR1cm4gZnwwfXdoaWxlKDApO2Nbaz4+Ml09MDtmPWNbaz4+Ml18MDtpPXk7cmV0dXJuIGZ8MH1mdW5jdGlvbiBsaShhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTA7ZT1pO2k9aSszMnwwO2g9ZTtnPWUrMjB8MDtqPWUrOHwwO2Y9ZSs0fDA7Y1tnPj4yXT1hO2NbZSsxNj4+Ml09YjtjW2UrMTI+PjJdPWQ7Y1tqPj4yXT1jWyhjWyhjW2c+PjJdfDApKzQ+PjJdfDApKzIwPj4yXTtjW2g+PjJdPWNbaj4+Ml07Y1tmPj4yXT1PZCgyNjE4MSxoKXwwO2llKGNbZz4+Ml18MCxjW2Y+PjJdfDAsLTEpO0tkKGNbZj4+Ml18MCk7aT1lO3JldHVybn1mdW5jdGlvbiBtaShhLGIsZCxlKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MDtoPWk7aT1pKzE2fDA7aj1oKzEyfDA7Zj1oKzh8MDtnPWgrNHwwO2s9aDtjW2o+PjJdPWE7Y1tmPj4yXT1iO2NbZz4+Ml09ZDtjW2s+PjJdPWU7aWYoKGNbaz4+Ml18MCk8KGNbaj4+Ml18MCkpe2k9aDtyZXR1cm4gMH1ZaigpO0NmKGNbZj4+Ml18MCxjW2c+PjJdfDApfDA7WmooKTtpPWg7cmV0dXJuIDB9ZnVuY3Rpb24gbmkoYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MDtoPWk7aT1pKzE2fDA7ZD1oKzEyfDA7ZT1oKzh8MDtnPWgrNHwwO2Y9aDtjW2Q+PjJdPWE7Y1tlPj4yXT1iO2NbZz4+Ml09LTE7aWYoIShjW2U+PjJdfDApKXtnPWNbZz4+Ml18MDtpPWg7cmV0dXJuIGd8MH1jW2c+PjJdPShjWyhjW2Q+PjJdfDApKzIwPj4yXXwwKS0xO2NbZj4+Ml09KGNbKGNbZD4+Ml18MCkrMTY+PjJdfDApKyhjW2c+PjJdPDw0KTt3aGlsZSgxKXtpZigoY1tnPj4yXXwwKTwwKXtkPTY7YnJlYWt9aWYoIShpZyhjW2NbZj4+Ml0+PjJdfDAsY1tlPj4yXXwwKXwwKSl7ZD02O2JyZWFrfWNbZz4+Ml09KGNbZz4+Ml18MCkrLTE7Y1tmPj4yXT0oY1tmPj4yXXwwKSstMTZ9aWYoKGR8MCk9PTYpe2c9Y1tnPj4yXXwwO2k9aDtyZXR1cm4gZ3wwfXJldHVybiAwfWZ1bmN0aW9uIG9pKGEsYixkLGUsZil7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wO3A9aTtpPWkrMzJ8MDtnPXArMjh8MDtoPXArMjR8MDtqPXArMjB8MDtrPXArMTZ8MDtsPXArMTJ8MDtvPXArOHwwO249cCs0fDA7bT1wO2NbZz4+Ml09YTtjW2g+PjJdPWI7Y1tqPj4yXT1kO2Nbaz4+Ml09ZTtjW2w+PjJdPWY7Y1tvPj4yXT0wO2NbbT4+Ml09MDtjW24+PjJdPTA7d2hpbGUoMSl7aWYoISgoY1tuPj4yXXwwKTwoY1soY1tnPj4yXXwwKSsyMD4+Ml18MCk/KGNbbz4+Ml18MCk9PTA6MCkpYnJlYWs7aWYoKChjW2g+PjJdfDApPT0xMD8xOihjW24+PjJdfDApPT0oY1toPj4yXXwwKSk/KGNbbz4+Ml09ZXUoY1soY1soY1tnPj4yXXwwKSsxNj4+Ml18MCkrKGNbbj4+Ml08PDQpKzQ+PjJdfDAsY1tqPj4yXXwwLGNbaz4+Ml18MCxjW2w+PjJdfDApfDAsY1trPj4yXT0wLGNbbD4+Ml09MCwoY1tvPj4yXXwwKT09NSk6MCl7Y1ttPj4yXT0xO2Nbbz4+Ml09MH1jW24+PjJdPShjW24+PjJdfDApKzF9aT1wO3JldHVybiAoKGNbbz4+Ml18MCk9PTAmKGNbbT4+Ml18MCkhPTA/NTpjW28+PjJdfDApfDB9ZnVuY3Rpb24gcGkoYil7Yj1ifDA7dmFyIGU9MCxmPTA7Zj1pO2k9aSsxNnwwO2U9ZjtjW2U+PjJdPWI7aWYoIShkWyhjW2U+PjJdfDApKzY5Pj4wXXwwKSl7aT1mO3JldHVybn1pZihjWyhjW2U+PjJdfDApKzE2OD4+Ml18MCl7aT1mO3JldHVybn1hWyhjW2U+PjJdfDApKzY5Pj4wXT0wO2NbKGNbZT4+Ml18MCkrMjQ4Pj4yXT0wO2I9KGNbZT4+Ml18MCkrMjU2fDA7Y1tiPj4yXT0oY1tiPj4yXXwwKSstMTtpPWY7cmV0dXJufWZ1bmN0aW9uIHFpKGIsZCxlLGYpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MDtzPWk7aT1pKzQ4fDA7cD1zO2g9cys0MHwwO2o9cyszNnwwO2s9cyszMnwwO2w9cysyOHwwO209cysyNHwwO249cysyMHwwO289cysxNnwwO2c9cysxMnwwO3I9cys4fDA7cT1zKzR8MDtjW2o+PjJdPWI7Y1trPj4yXT1kO2NbbD4+Ml09ZTtjW20+PjJdPWY7Y1tyPj4yXT0wO2NbcT4+Ml09MDtjW2Nbaz4+Ml0+PjJdPTA7Y1tvPj4yXT1EZCgpfDA7aWYoY1tvPj4yXXwwKXtjW2g+PjJdPWNbbz4+Ml07cj1jW2g+PjJdfDA7aT1zO3JldHVybiByfDB9aWYoISgxPDwoY1tsPj4yXSY3KSY3MCkpe2NbaD4+Ml09TGYoMTQwNjIxKXwwO3I9Y1toPj4yXXwwO2k9cztyZXR1cm4gcnwwfWRvIGlmKGNbM118MCl7aWYoY1tsPj4yXSYzMjc2OCl7Y1tnPj4yXT0wO2JyZWFrfWlmKGNbbD4+Ml0mNjU1MzYpe2NbZz4+Ml09MTticmVha31lbHNle2NbZz4+Ml09Y1s0XTticmVha319ZWxzZSBjW2c+PjJdPTA7d2hpbGUoMCk7aWYoIShjW2w+PjJdJjI2MjE0NCkpe2lmKGNbNTddfDApY1tsPj4yXT1jW2w+PjJdfDEzMTA3Mn1lbHNlIGNbbD4+Ml09Y1tsPj4yXSYtMTMxMDczO2NbbD4+Ml09Y1tsPj4yXSYtNjU1MTI5O2Nbbj4+Ml09a2coNDY0LDApfDA7ZG8gaWYoY1tuPj4yXXwwKXtpZigoY1tnPj4yXXwwKSE9MD8oY1soY1tuPj4yXXwwKSsxMj4+Ml09OCwoY1soY1tuPj4yXXwwKSsxMj4+Ml18MCk9PTApOjApe0tkKGNbbj4+Ml18MCk7Y1tuPj4yXT0wO2JyZWFrfWNbKGNbbj4+Ml18MCkrNTY+PjJdPTI1NTtjWyhjW24+PjJdfDApKzIwPj4yXT0yO2NbKGNbbj4+Ml18MCkrODQ+PjJdPS0yNjQ1Mzc4NTA7Y1soY1tuPj4yXXwwKSsxNj4+Ml09KGNbbj4+Ml18MCkrMzkyO2U9KGNbbj4+Ml18MCkrOTZ8MDtnPTE1ODA7ZD1lKzQ4fDA7ZG97Y1tlPj4yXT1jW2c+PjJdO2U9ZSs0fDA7Zz1nKzR8MH13aGlsZSgoZXwwKTwoZHwwKSk7Y1soY1tuPj4yXXwwKSs5Nis0ND4+Ml09MDthWyhjW24+PjJdfDApKzY3Pj4wXT0xO2FbKGNbbj4+Ml18MCkrNzI+PjBdPS0xO2Q9MTg0O2I9Y1tkKzQ+PjJdfDA7Zj0oY1tuPj4yXXwwKSs0MHwwO2NbZj4+Ml09Y1tkPj4yXTtjW2YrND4+Ml09YjtjWyhjW24+PjJdfDApKzgwPj4yXT0wO2NbKGNbbj4+Ml18MCkrMTQ0Pj4yXT0yMTQ3NDgzNjQ3O2Y9KGNbbj4+Ml18MCkrMjR8MDtjW2Y+PjJdPWNbZj4+Ml18MTc4MjU4ODg7emooKGNbbj4+Ml18MCkrMzY0fDApO3pqKChjW24+PjJdfDApKzMyMHwwKTtyaShjW24+PjJdfDAsMzQ4MzQsMSwwLDE0MSwwKXwwO3JpKGNbbj4+Ml18MCwzNDgzNCwzLDAsMTQxLDApfDA7cmkoY1tuPj4yXXwwLDM0ODM0LDIsMCwxNDEsMCl8MDtyaShjW24+PjJdfDAsMjA0MjksMSwwLDE0MiwwKXwwO3JpKGNbbj4+Ml18MCwyMDQzNiwxLDEsMTQxLDApfDA7aWYoIShhWyhjW24+PjJdfDApKzY5Pj4wXXwwKSl7Zj1TaihjW24+PjJdfDAsMSwzNDgzNCwwKXwwO2NbKGNbbj4+Ml18MCkrOD4+Ml09ZjtjWyhjW24+PjJdfDApKzQ4Pj4yXT1jW2w+PjJdO2Nbbz4+Ml09YWsoY1ttPj4yXXwwLGNbaj4+Ml18MCxsLGNbbj4+Ml18MCxyLHEpfDA7aWYoY1tvPj4yXXwwKXtpZigoY1tvPj4yXXwwKT09NyltaChjW24+PjJdfDApO2o9Y1tuPj4yXXwwO2w9Y1tvPj4yXXwwO209KGNbcT4+Ml18MCkhPTA/MTgzOTE6MDtjW3A+PjJdPWNbcT4+Ml07amcoaixsLG0scCk7S2QoY1txPj4yXXwwKTticmVha31jW28+PjJdPWJrKGNbY1tuPj4yXT4+Ml18MCxjW3I+PjJdfDAsY1tuPj4yXXwwLChjWyhjW24+PjJdfDApKzE2Pj4yXXwwKSs0fDAsMCxjW2w+PjJdfDI1Nil8MDtpZihjW28+PjJdfDApe2lmKChjW28+PjJdfDApPT0zMDgyKWNbbz4+Ml09NztsZyhjW24+PjJdfDAsY1tvPj4yXXwwKTticmVha31tZyhjWyhjWyhjW24+PjJdfDApKzE2Pj4yXXwwKSs0Pj4yXXwwKTtxPWNrKGNbbj4+Ml18MCxjWyhjWyhjW24+PjJdfDApKzE2Pj4yXXwwKSs0Pj4yXXwwKXwwO2NbKGNbKGNbbj4+Ml18MCkrMTY+PjJdfDApKzEyPj4yXT1xO2lmKCEoYVsoY1tuPj4yXXwwKSs2OT4+MF18MCkpYVsoY1tuPj4yXXwwKSs2Nj4+MF09YVsoY1soY1soY1tuPj4yXXwwKSsxNj4+Ml18MCkrMTI+PjJdfDApKzc3Pj4wXXwwO3E9Y2soY1tuPj4yXXwwLDApfDA7Y1soY1soY1tuPj4yXXwwKSsxNj4+Ml18MCkrMTYrMTI+PjJdPXE7Y1tjWyhjW24+PjJdfDApKzE2Pj4yXT4+Ml09MjA0NDI7YVsoY1soY1tuPj4yXXwwKSsxNj4+Ml18MCkrOD4+MF09MztjWyhjWyhjW24+PjJdfDApKzE2Pj4yXXwwKSsxNj4+Ml09MTg2NzI7YVsoY1soY1tuPj4yXXwwKSsxNj4+Ml18MCkrMTYrOD4+MF09MTtjWyhjW24+PjJdfDApKzg0Pj4yXT0tMTYwNzg4MzExMztpZighKGFbKGNbbj4+Ml18MCkrNjk+PjBdfDApKXtsZyhjW24+PjJdfDAsMCk7ZGsoY1tuPj4yXXwwKTtjW28+PjJdPURmKGNbbj4+Ml18MCl8MDtpZigoY1tvPj4yXXwwKT09MD8oZWsoY1tuPj4yXXwwKSxjW28+PjJdPURmKGNbbj4+Ml18MCl8MCwoY1tvPj4yXXwwKSE9MCk6MClicmVhaztpZigoY1tvPj4yXXwwKT09MD8oYVsoY1tuPj4yXXwwKSs2OT4+MF18MCk9PTA6MCljW28+PjJdPWZrKGNbbj4+Ml18MCl8MDtpZihjW28+PjJdfDApbGcoY1tuPj4yXXwwLGNbbz4+Ml18MCk7Z2koY1tuPj4yXXwwLDAsY1s5XXwwLGNbMTBdfDApfDA7emYoY1tuPj4yXXwwLDFlMyl8MH19fXdoaWxlKDApO2Nbbz4+Ml09RGYoY1tuPj4yXXwwKXwwO2lmKChjW28+PjJdfDApIT03KXtpZihjW28+PjJdfDApY1soY1tuPj4yXXwwKSs4ND4+Ml09MTI2NjA5NDczNn1lbHNle3NmKGNbbj4+Ml18MCl8MDtjW24+PjJdPTB9Y1tjW2s+PjJdPj4yXT1jW24+PjJdO0tkKGNbcj4+Ml18MCk7Y1toPj4yXT1jW28+PjJdJjI1NTtyPWNbaD4+Ml18MDtpPXM7cmV0dXJuIHJ8MH1mdW5jdGlvbiByaShiLGUsZixnLGgsail7Yj1ifDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7dmFyIGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTA7eD1pO2k9aSs2NHwwO3c9eDtrPXgrNDR8MDtsPXgrNDB8MDttPXgrMzZ8MDtuPXgrNDh8MDtvPXgrMzJ8MDtwPXgrMjh8MDtxPXgrMjR8MDt2PXgrMjB8MDtzPXgrMTZ8MDtyPXgrMTJ8MDt0PXgrOHwwO3U9eCs0fDA7Y1tsPj4yXT1iO2NbbT4+Ml09ZTthW24+PjBdPWY7Y1tvPj4yXT1nO2NbcD4+Ml09aDtjW3E+PjJdPWo7Y1tzPj4yXT1kW24+PjBdO2lmKChjW3M+PjJdfDApPT00fChjW3M+PjJdfDApPT04KWNbcz4+Ml09KGFbOTY4XXwwKT09MD8zOjI7aWYoKGNbcz4+Ml18MCk8MXwoY1tzPj4yXXwwKT4zKXtjW2s+PjJdPUxmKDE0MDE3Mil8MDt3PWNbaz4+Ml18MDtpPXg7cmV0dXJuIHd8MH1jW3Y+PjJdPVNqKGNbbD4+Ml18MCxjW3M+PjJdJjI1NSxjW20+PjJdfDAsMCl8MDthOmRvIGlmKChjW3Y+PjJdfDApIT0wPyhjWyhjW3Y+PjJdfDApKzEyPj4yXXwwKSE9MDowKXtiPWNbbD4+Ml18MDtpZihjWyhjW2w+PjJdfDApKzE1Nj4+Ml18MCl7amcoYiw1LDIwMzYxLHcpO2Nbaz4+Ml09NTt3PWNbaz4+Ml18MDtpPXg7cmV0dXJuIHd8MH1TaChiKTtpZigoZFsoY1t2Pj4yXXwwKSs0Pj4wXSYtOXwwKT09KGNbcz4+Ml18MCkpe2Nbcj4+Ml09c2ooKGNbbD4+Ml18MCkrMzY0fDAsY1ttPj4yXXwwKXwwO2NbdD4+Ml09MDt3aGlsZSgxKXtpZigoY1t0Pj4yXXwwKT49MylicmVhayBhO2NbdT4+Ml09KGNbcj4+Ml18MCkrKChjW3Q+PjJdfDApKjIwfDApO2lmKChkWyhjW3U+PjJdfDApKzQ+PjBdfDApPT0oZFsoY1t2Pj4yXXwwKSs0Pj4wXXwwKSl7aWYoY1soY1t1Pj4yXXwwKSsxNj4+Ml18MClRYltjWyhjW3U+PjJdfDApKzE2Pj4yXSYyNTVdKGNbKGNbdT4+Ml18MCkrOD4+Ml18MCk7Y1soY1t1Pj4yXXwwKSsxMj4+Ml09MH1jW3Q+PjJdPShjW3Q+PjJdfDApKzF9fX13aGlsZSgwKTtjW3Y+PjJdPVNqKGNbbD4+Ml18MCxjW3M+PjJdJjI1NSxjW20+PjJdfDAsMSl8MDtpZighKGNbdj4+Ml18MCkpe2Nbaz4+Ml09Nzt3PWNbaz4+Ml18MDtpPXg7cmV0dXJuIHd8MH1lbHNle2NbKGNbdj4+Ml18MCkrMTI+PjJdPWNbcD4+Ml07Y1soY1t2Pj4yXXwwKSs4Pj4yXT1jW28+PjJdO2NbKGNbdj4+Ml18MCkrMTY+PjJdPWNbcT4+Ml07YVsoY1t2Pj4yXXwwKSs0Pj4wXT1jW3M+PjJdfGRbbj4+MF0mODtsZyhjW2w+PjJdfDAsMCk7Y1trPj4yXT0wO3c9Y1trPj4yXXwwO2k9eDtyZXR1cm4gd3wwfXJldHVybiAwfWZ1bmN0aW9uIHNpKGIsZCl7Yj1ifDA7ZD1kfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wO2w9aTtpPWkrMzJ8MDtmPWwrMTZ8MDtnPWwrMTJ8MDtqPWwrOHwwO2s9bCs0fDA7aD1sO2NbZj4+Ml09YjtjW2c+PjJdPWQ7Y1toPj4yXT0oKGNbKGNbZj4+Ml18MCkrMjQ+PjJdJjJ8MCkhPTBeMSkmMTtjW2s+PjJdPTA7YVsoY1tmPj4yXXwwKSsxNDgrNT4+MF09MTthWyhjW2Y+PjJdfDApKzY2Pj4wXT1hWyhjWyhjWyhjW2Y+PjJdfDApKzE2Pj4yXXwwKSsxMj4+Ml18MCkrNzc+PjBdfDA7Y1tqPj4yXT0wO3doaWxlKDEpe2lmKGNbaz4+Ml18MClicmVhaztpZigoY1tqPj4yXXwwKT49KGNbKGNbZj4+Ml18MCkrMjA+PjJdfDApKWJyZWFrO2lmKCEoKGNbaj4+Ml18MCk9PTE/MTooKGVbKGNbKGNbKGNbZj4+Ml18MCkrMTY+PjJdfDApKyhjW2o+PjJdPDw0KSsxMj4+Ml18MCkrNzg+PjFdfDApJjF8MCk9PTEpPyhjW2s+PjJdPXZqKGNbZj4+Ml18MCxjW2o+PjJdfDAsY1tnPj4yXXwwKXwwLChjW2s+PjJdfDApIT0wKTowKXdqKGNbZj4+Ml18MCxjW2o+PjJdfDApO2Nbaj4+Ml09KGNbaj4+Ml18MCkrMX1pZigoKGNbaz4+Ml18MCk9PTA/KChlWyhjWyhjWyhjW2Y+PjJdfDApKzE2Pj4yXXwwKSsxNisxMj4+Ml18MCkrNzg+PjFdfDApJjF8MCkhPTE6MCk/KGNbaz4+Ml09dmooY1tmPj4yXXwwLDEsY1tnPj4yXXwwKXwwLChjW2s+PjJdfDApIT0wKTowKXdqKGNbZj4+Ml18MCwxKTthWyhjW2Y+PjJdfDApKzE0OCs1Pj4wXT0wO2lmKCEoKGNbaz4+Ml18MCk9PTAmKGNbaD4+Ml18MCkhPTApKXtrPWNbaz4+Ml18MDtpPWw7cmV0dXJuIGt8MH14aihjW2Y+PjJdfDApO2s9Y1trPj4yXXwwO2k9bDtyZXR1cm4ga3wwfWZ1bmN0aW9uIHRpKGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MDttPWk7aT1pKzMyfDA7ZT1tKzIwfDA7Zj1tKzE2fDA7Zz1tKzEyfDA7az1tKzh8MDtoPW0rNHwwO2o9bTtjW2U+PjJdPWE7Y1tmPj4yXT1iO2NbZz4+Ml09ZDtjW2s+PjJdPTA7Y1toPj4yXT0wO3doaWxlKDEpe2lmKChjW2g+PjJdfDApPj0oY1soY1tlPj4yXXwwKSsyMD4+Ml18MCkpe2w9NzticmVha31iPWNbaD4+Ml18MDtjW2o+PjJdPShjW2g+PjJdfDApPDI/Yl4xOmI7aWYoISgoY1tnPj4yXXwwKSE9MD8oaWcoY1tnPj4yXXwwLGNbKGNbKGNbZT4+Ml18MCkrMTY+PjJdfDApKyhjW2o+PjJdPDw0KT4+Ml18MCl8MCkhPTA6MCkpbD01O2lmKChsfDApPT01PyhsPTAsY1trPj4yXT1zaigoY1soY1soY1tlPj4yXXwwKSsxNj4+Ml18MCkrKGNbaj4+Ml08PDQpKzEyPj4yXXwwKSs4fDAsY1tmPj4yXXwwKXwwLChjW2s+PjJdfDApIT0wKTowKXtsPTc7YnJlYWt9Y1toPj4yXT0oY1toPj4yXXwwKSsxfWlmKChsfDApPT03KXtpPW07cmV0dXJuIGNbaz4+Ml18MH1yZXR1cm4gMH1mdW5jdGlvbiB1aShhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTA7ZT1pO2k9aSsxNnwwO2I9ZSs0fDA7ZD1lO2NbZD4+Ml09YTtkbyBpZihpZyhjW2Q+PjJdfDAsMTk4ODcpfDApe2lmKCEoaWcoY1tkPj4yXXwwLDE5ODk1KXwwKSl7Y1tiPj4yXT0xO2JyZWFrfWlmKCEoaWcoY1tkPj4yXXwwLDE5OTAxKXwwKSl7Y1tiPj4yXT0xO2JyZWFrfWVsc2V7Y1tiPj4yXT0wO2JyZWFrfX1lbHNlIGNbYj4+Ml09MTt3aGlsZSgwKTtpPWU7cmV0dXJuIGNbYj4+Ml18MH1mdW5jdGlvbiB2aShhLGIpe2E9YXwwO2I9YnwwO3ZhciBlPTAsZj0wLGc9MCxoPTA7aD1pO2k9aSsxNnwwO2U9aCs4fDA7Zj1oKzR8MDtnPWg7Y1tmPj4yXT1hO2NbZz4+Ml09YjtpZighKChkWyhjW2Y+PjJdfDApKzE1Pj4wXXwwKSY0KSl7Y1tlPj4yXT1jW2c+PjJdO2I9Y1tlPj4yXXwwO2k9aDtyZXR1cm4gYnwwfWVsc2V7Yj1jW2NbZj4+Ml0+PjJdfDA7Y1tlPj4yXT1iKyhrUihjW2NbZj4+Ml0+PjJdfDApfDApKzE7Yj1jW2U+PjJdfDA7aT1oO3JldHVybiBifDB9cmV0dXJuIDB9ZnVuY3Rpb24gd2koYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTA7ZD1pO2k9aSsxNnwwO2Y9ZCs0fDA7ZT1kO2NbZj4+Ml09YTtjW2U+PjJdPWI7YT1ZYltjWyhjW2Y+PjJdfDApKzYwPj4yXSYyNTVdKGNbZj4+Ml18MCxjW2U+PjJdfDApfDA7aT1kO3JldHVybiBhfDB9ZnVuY3Rpb24geGkoYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MDtoPWk7aT1pKzE2fDA7ZT1oKzEyfDA7Zj1oKzh8MDtkPWgrNHwwO2c9aDtjW2Y+PjJdPWE7Y1tkPj4yXT1iO2NbZz4+Ml09MDt3aGlsZSgxKXtpZigoY1tnPj4yXXwwKT49KGNbKGNbZj4+Ml18MCkrMjA+PjJdfDApKXtkPTg7YnJlYWt9aWYoY1soY1soY1tmPj4yXXwwKSsxNj4+Ml18MCkrKGNbZz4+Ml08PDQpKzQ+PjJdfDApe2lmKCEoY1tkPj4yXXwwKSl7ZD02O2JyZWFrfWlmKCEoaWcoY1tkPj4yXXwwLGNbKGNbKGNbZj4+Ml18MCkrMTY+PjJdfDApKyhjW2c+PjJdPDw0KT4+Ml18MCl8MCkpe2Q9NjticmVha319Y1tnPj4yXT0oY1tnPj4yXXwwKSsxfWlmKChkfDApPT02KXtjW2U+PjJdPWNbKGNbKGNbZj4+Ml18MCkrMTY+PjJdfDApKyhjW2c+PjJdPDw0KSs0Pj4yXTtnPWNbZT4+Ml18MDtpPWg7cmV0dXJuIGd8MH1lbHNlIGlmKChkfDApPT04KXtjW2U+PjJdPTA7Zz1jW2U+PjJdfDA7aT1oO3JldHVybiBnfDB9cmV0dXJuIDB9ZnVuY3Rpb24geWkoYSl7YT1hfDA7dmFyIGI9MCxkPTA7ZD1pO2k9aSsxNnwwO2I9ZDtjW2I+PjJdPWE7aT1kO3JldHVybiBjW2NbYj4+Ml0+PjJdfDB9ZnVuY3Rpb24gemkoYSl7YT1hfDA7dmFyIGI9MCxkPTA7Yj1pO2k9aSsxNnwwO2Q9YjtjW2Q+PjJdPWE7YT1jW2Q+PjJdfDA7aWYoY1soY1tkPj4yXXwwKSsyMTY+PjJdfDApe2Q9cmooY1thKzIxNj4+Ml18MCl8MDtpPWI7cmV0dXJuIGR8MH1lbHNle2Q9Y1thKzY4Pj4yXXwwO2k9YjtyZXR1cm4gZHwwfXJldHVybiAwfWZ1bmN0aW9uIEFpKGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wO2U9aTtpPWkrMTZ8MDtoPWUrOHwwO2c9ZSs0fDA7Zj1lO2NbaD4+Ml09YTtjW2c+PjJdPWI7Y1tmPj4yXT1kO2Q9T2JbY1soY1tjW2g+PjJdPj4yXXwwKSs0MD4+Ml0mMjU1XShjW2g+PjJdfDAsY1tnPj4yXXwwLGNbZj4+Ml18MCl8MDtpPWU7cmV0dXJuIGR8MH1mdW5jdGlvbiBCaShhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTA7ZT1pO2k9aSsxNnwwO2I9ZSs0fDA7ZD1lO2NbYj4+Ml09YTtjW2Q+PjJdPWNbNjhdO2lmKCEoY1tkPj4yXXwwKSl7ZD0wO2k9ZTtyZXR1cm4gZHwwfWQ9VGJbY1tkPj4yXSYyNTVdKGNbYj4+Ml18MCl8MDtpPWU7cmV0dXJuIGR8MH1mdW5jdGlvbiBDaShhLGQsZixnKXthPWF8MDtkPWR8MDtmPWZ8MDtnPWd8MDt2YXIgaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MDtvPWk7aT1pKzMyfDA7aD1vKzI0fDA7cD1vKzIwfDA7aj1vKzE2fDA7az1vKzEyfDA7bD1vKzh8MDtuPW8rNHwwO209bztjW3A+PjJdPWE7Y1tqPj4yXT1kO2Nbaz4+Ml09ZjtjW2w+PjJdPWc7Y1tuPj4yXT0wO2NbbT4+Ml09Y1soY1twPj4yXXwwKSs0Pj4yXTttZyhjW3A+PjJdfDApO2lmKChlWyhjW20+PjJdfDApKzIyPj4xXXwwKSYyKXtjW2g+PjJdPTg7cD1jW2g+PjJdfDA7aT1vO3JldHVybiBwfDB9aWYoKGNbaz4+Ml18MCk8MCljW2s+PjJdPShjWyhjW20+PjJdfDApKzMyPj4yXXwwKS0oY1soY1ttPj4yXXwwKSszNj4+Ml18MCk7aWYoKGNbaj4+Ml18MCk+PTUxMiYoY1tqPj4yXXwwKTw9NjU1MzY/KChjW2o+PjJdfDApLTEmY1tqPj4yXXwwKT09MDowKXtjWyhjW20+PjJdfDApKzMyPj4yXT1jW2o+PjJdO1VpKGNbbT4+Ml18MCl9Y1tuPj4yXT1WaShjW2NbbT4+Ml0+PjJdfDAsKGNbbT4+Ml18MCkrMzJ8MCxjW2s+PjJdfDApfDA7Y1soY1ttPj4yXXwwKSszNj4+Ml09KGNbKGNbbT4+Ml18MCkrMzI+PjJdfDApLShjW2s+PjJdJjY1NTM1KTtpZihjW2w+PjJdfDApe3A9KGNbbT4+Ml18MCkrMjJ8MDtiW3A+PjFdPWVbcD4+MV18MHwyfWNbaD4+Ml09Y1tuPj4yXTtwPWNbaD4+Ml18MDtpPW87cmV0dXJuIHB8MH1mdW5jdGlvbiBEaShhLGIpe2E9YXwwO2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTA7ZT1pO2k9aSsxNnwwO2c9ZSs4fDA7Zj1lKzR8MDtkPWU7Y1tnPj4yXT1hO2NbZj4+Ml09YjtjW2Q+PjJdPTU1O1RpKGNbZz4+Ml18MCxjW2Y+PjJdfDAsZCl8MDtpPWU7cmV0dXJuIGNbZD4+Ml18MH1mdW5jdGlvbiBFaShhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTA7ZT1pO2k9aSsxNnwwO2I9ZSs0fDA7ZD1lO2NbYj4+Ml09YTtSaSg4LGNbYj4+Ml18MCk7aWYoKGNbNzhdfDApIT0wPyhjWzUxXXwwKT49KGNbYj4+Ml18MCk6MCl7Y1tkPj4yXT1jWzc3XTtjWzc3XT1jW2NbNzddPj4yXTtjWzc4XT0oY1s3OF18MCkrLTE7U2koMywxKTtkPWNbZD4+Ml18MDtpPWU7cmV0dXJuIGR8MH1hPWNbYj4+Ml18MDtjW2Q+PjJdPSRmKGEsKChhfDApPDApPDwzMT4+MzEpfDA7aWYoISgoY1syXXwwKSE9MCYoY1tkPj4yXXwwKSE9MCkpe2Q9Y1tkPj4yXXwwO2k9ZTtyZXR1cm4gZHwwfVNpKDQsYWcoY1tkPj4yXXwwKXwwKTtkPWNbZD4+Ml18MDtpPWU7cmV0dXJuIGR8MH1mdW5jdGlvbiBGaShhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wO2Y9aTtpPWkrMTZ8MDtiPWYrOHwwO2U9Zis0fDA7ZD1mO2NbYj4+Ml09YTtpZighKGNbYj4+Ml18MCkpe2k9ZjtyZXR1cm59aWYoKGNbYj4+Ml18MCk+Pj4wPj0oY1s1MF18MCk+Pj4wPyhjW2I+PjJdfDApPj4+MDwoY1s3Nl18MCk+Pj4wOjApe2NbZT4+Ml09Y1tiPj4yXTtjW2NbZT4+Ml0+PjJdPWNbNzddO2NbNzddPWNbZT4+Ml07Y1s3OF09KGNbNzhdfDApKzE7YmcoMywxKTtpPWY7cmV0dXJufWlmKGNbMl18MCl7Y1tkPj4yXT1hZyhjW2I+PjJdfDApfDA7YmcoNCxjW2Q+PjJdfDApO2JnKDAsY1tkPj4yXXwwKTtiZyg5LDEpO1FiW2NbNTI+PjJdJjI1NV0oY1tiPj4yXXwwKTtpPWY7cmV0dXJufWVsc2V7UWJbY1s1Mj4+Ml0mMjU1XShjW2I+PjJdfDApO2k9ZjtyZXR1cm59fWZ1bmN0aW9uIEdpKGIsZCl7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wO2U9aTtpPWkrMTZ8MDtnPWU7Zj1lKzR8MDtjW2c+PjJdPWI7YVtmPj4wXT1kO2I9KChPaShjW2c+PjJdfDAsMSxhW2Y+PjBdfDApfDApJjI1NXwwKSE9MCYyNTU7aT1lO3JldHVybiBifDB9ZnVuY3Rpb24gSGkoYixlKXtiPWJ8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wO209aTtpPWkrMzJ8MDtsPW0rMjR8MDtmPW0rMjB8MDtnPW0rMTZ8MDtrPW07aD1tKzEyfDA7aj1tKzh8MDtjW2Y+PjJdPWI7Y1tnPj4yXT1lO2RvIGlmKChhW2NbZj4+Ml0+PjBdfDApPT00OCl7aWYoKGFbKGNbZj4+Ml18MCkrMT4+MF18MCkhPTEyMD8oYVsoY1tmPj4yXXwwKSsxPj4wXXwwKSE9ODg6MClicmVhaztiPWs7Y1tiPj4yXT0wO2NbYis0Pj4yXT0wO2NbaD4+Ml09Mjt3aGlsZSgxKXtlPWNbaD4+Ml18MDtpZigoYVsoY1tmPj4yXXwwKSsoY1toPj4yXXwwKT4+MF18MCkhPTQ4KWJyZWFrO2NbaD4+Ml09ZSsxfWNbaj4+Ml09ZTt3aGlsZSgxKXtpZighKGRbMTg0MDMrKGRbKGNbZj4+Ml18MCkrKGNbaj4+Ml18MCk+PjBdfDApPj4wXSY4KSlicmVhaztiPWs7Yj1hUyhjW2I+PjJdfDAsY1tiKzQ+PjJdfDAsMTYsMCl8MDtlPUM7ZT1SUihifDAsZXwwLChMaShhWyhjW2Y+PjJdfDApKyhjW2o+PjJdfDApPj4wXXwwKXwwKSYyNTV8MCwwKXwwO2I9aztjW2I+PjJdPWU7Y1tiKzQ+PjJdPUM7Y1tqPj4yXT0oY1tqPj4yXXwwKSsxfWc9Y1tnPj4yXXwwO2NbZz4+Ml09Y1trPj4yXTtjW2crND4+Ml09Y1trKzQ+PjJdO2lmKCEoYVsoY1tmPj4yXXwwKSsoY1tqPj4yXXwwKT4+MF18MCkpZT0oKGNbaj4+Ml18MCktKGNbaD4+Ml18MCl8MCk8PTE2O2Vsc2UgZT0wO2NbbD4+Ml09ZT8wOjE7bD1jW2w+PjJdfDA7aT1tO3JldHVybiBsfDB9d2hpbGUoMCk7aj1jW2Y+PjJdfDA7az1jW2c+PjJdfDA7Y1tsPj4yXT1NaShqLGssSmYoY1tmPj4yXXwwKXwwLDEpfDA7bD1jW2w+PjJdfDA7aT1tO3JldHVybiBsfDB9ZnVuY3Rpb24gSWkoYSl7YT1hfDA7dmFyIGI9MCxkPTA7Yj1pO2k9aSsxNnwwO2Q9YjtjW2Q+PjJdPWE7YT1LaShjW2NbKGNbZD4+Ml18MCkrND4+Ml0+PjJdfDAsMSl8MDtpPWI7cmV0dXJuIGF8MH1mdW5jdGlvbiBKaShhKXthPWF8MDt2YXIgYj0wLGQ9MDtkPWk7aT1pKzE2fDA7Yj1kO2NbYj4+Ml09YTtpPWQ7cmV0dXJuICgoZVsoY1soY1tiPj4yXXwwKSs0Pj4yXXwwKSsyMj4+MV18MCkmMXwwKSE9MHwwfWZ1bmN0aW9uIEtpKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGU9MCxmPTAsZz0wO2Y9aTtpPWkrMTZ8MDtlPWYrNHwwO2c9ZjtjW2U+PjJdPWE7Y1tnPj4yXT1iO2lmKChjW2c+PjJdfDApIT0wPyhkWyhjW2U+PjJdfDApKzE2Pj4wXXwwfDApIT0wOjApe2c9MTg0MDI7aT1mO3JldHVybiBnfDB9Zz1jWyhjW2U+PjJdfDApKzE3Nj4+Ml18MDtpPWY7cmV0dXJuIGd8MH1mdW5jdGlvbiBMaShhKXthPWF8MDt2YXIgYj0wLGQ9MDtkPWk7aT1pKzE2fDA7Yj1kO2NbYj4+Ml09YTtjW2I+PjJdPShjW2I+PjJdfDApKygoMSZjW2I+PjJdPj42KSo5fDApO2k9ZDtyZXR1cm4gY1tiPj4yXSYxNXwwfWZ1bmN0aW9uIE1pKGIsZSxmLGcpe2I9YnwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO3ZhciBoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wO3Y9aTtpPWkrNjR8MDtsPXYrNDh8MDttPXYrNDR8MDtuPXYrNDB8MDtoPXYrMzZ8MDtqPXYrNTJ8MDtxPXYrMzJ8MDtrPXY7cj12KzI4fDA7cD12KzI0fDA7bz12KzIwfDA7cz12KzE2fDA7dT12KzEyfDA7dD12Kzh8MDtjW20+PjJdPWI7Y1tuPj4yXT1lO2NbaD4+Ml09ZjthW2o+PjBdPWc7Yj1rO2NbYj4+Ml09MDtjW2IrND4+Ml09MDtjW3I+PjJdPTA7Y1tvPj4yXT0wO2Nbcz4+Ml09MDtjW3Q+PjJdPShjW20+PjJdfDApKyhjW2g+PjJdfDApO2lmKChkW2o+PjBdfDApPT0xKWNbcT4+Ml09MTtlbHNle2NbcT4+Ml09MjtjW3A+PjJdPTMtKGRbaj4+MF18MCk7d2hpbGUoMSl7aWYoKGNbcD4+Ml18MCk+PShjW2g+PjJdfDApKWJyZWFrO2lmKGFbKGNbbT4+Ml18MCkrKGNbcD4+Ml18MCk+PjBdfDApYnJlYWs7Y1twPj4yXT0oY1twPj4yXXwwKSsyfWNbcz4+Ml09KGNbcD4+Ml18MCk8KGNbaD4+Ml18MCkmMTtjW3Q+PjJdPShjW20+PjJdfDApKyhjW3A+PjJdXjEpO2NbbT4+Ml09KGNbbT4+Ml18MCkrKGRbaj4+MF0mMSl9d2hpbGUoMSl7aWYoKGNbbT4+Ml18MCk+Pj4wPj0oY1t0Pj4yXXwwKT4+PjApYnJlYWs7aWYoIShkWzE4NDAzKyhkW2NbbT4+Ml0+PjBdfDApPj4wXSYxKSlicmVhaztjW20+PjJdPShjW20+PjJdfDApKyhjW3E+PjJdfDApfWRvIGlmKChjW20+PjJdfDApPj4+MDwoY1t0Pj4yXXwwKT4+PjApe2lmKChhW2NbbT4+Ml0+PjBdfDApPT00NSl7Y1tyPj4yXT0xO2NbbT4+Ml09KGNbbT4+Ml18MCkrKGNbcT4+Ml18MCk7YnJlYWt9aWYoKGFbY1ttPj4yXT4+MF18MCk9PTQzKWNbbT4+Ml09KGNbbT4+Ml18MCkrKGNbcT4+Ml18MCl9d2hpbGUoMCk7Y1t1Pj4yXT1jW20+PjJdO3doaWxlKDEpe2lmKChjW20+PjJdfDApPj4+MD49KGNbdD4+Ml18MCk+Pj4wKWJyZWFrO2lmKChhW2NbbT4+Ml0+PjBdfDApIT00OClicmVhaztjW20+PjJdPShjW20+PjJdfDApKyhjW3E+PjJdfDApfWNbcD4+Ml09MDt3aGlsZSgxKXtpZigoKGNbbT4+Ml18MCkrKGNbcD4+Ml18MCl8MCk+Pj4wPChjW3Q+PjJdfDApPj4+MD8oYj1hWyhjW20+PjJdfDApKyhjW3A+PjJdfDApPj4wXXwwLGNbbz4+Ml09YiwoYnwwKT49NDgpOjApaD0oY1tvPj4yXXwwKTw9NTc7ZWxzZSBoPTA7aj1rO2c9Y1tqPj4yXXwwO2o9Y1tqKzQ+PjJdfDA7aWYoIWgpYnJlYWs7Yj1hUyhnfDAsanwwLDEwLDApfDA7ZT1jW28+PjJdfDA7ZT1SUihifDAsQ3wwLGV8MCwoKGV8MCk8MCk8PDMxPj4zMXwwKXwwO2U9UVIoZXwwLEN8MCw0OCwwKXwwO2I9aztjW2I+PjJdPWU7Y1tiKzQ+PjJdPUM7Y1twPj4yXT0oY1twPj4yXXwwKSsoY1txPj4yXXwwKX1mPShjW3I+PjJdfDApIT0wO2RvIGlmKCEoaj4+PjA+MjE0NzQ4MzY0N3woanwwKT09MjE0NzQ4MzY0NyZnPj4+MD40Mjk0OTY3Mjk1KSl7aj1rO2g9Y1tqPj4yXXwwO2o9Y1tqKzQ+PjJdfDA7aWYoZil7az1RUigwLDAsaHwwLGp8MCl8MDtuPWNbbj4+Ml18MDtjW24+PjJdPWs7Y1tuKzQ+PjJdPUM7YnJlYWt9ZWxzZXtuPWNbbj4+Ml18MDtjW24+PjJdPWg7Y1tuKzQ+PjJdPWo7YnJlYWt9fWVsc2V7bj1jW24+PjJdfDA7Y1tuPj4yXT1mPzA6LTE7Y1tuKzQ+PjJdPWY/LTIxNDc0ODM2NDg6MjE0NzQ4MzY0N313aGlsZSgwKTtkbyBpZigoKGNbbT4+Ml18MCkrKGNbcD4+Ml18MCl8MCk+Pj4wPj0oY1t0Pj4yXXwwKT4+PjApe2lmKChjW3A+PjJdfDApPT0wPyhjW3U+PjJdfDApPT0oY1ttPj4yXXwwKTowKWJyZWFrO2lmKCEoKGNbcz4+Ml18MCkhPTA/MTooY1twPj4yXXwwKT4oKGNbcT4+Ml18MCkqMTl8MCkpKXtpZigoY1twPj4yXXwwKTwoKGNbcT4+Ml18MCkqMTl8MCkpe2NbbD4+Ml09MDt1PWNbbD4+Ml18MDtpPXY7cmV0dXJuIHV8MH1jW28+PjJdPU5pKGNbbT4+Ml18MCxjW3E+PjJdfDApfDA7aWYoKGNbbz4+Ml18MCk8MCl7Y1tsPj4yXT0wO3U9Y1tsPj4yXXwwO2k9djtyZXR1cm4gdXwwfWlmKChjW28+PjJdfDApPjApe2NbbD4+Ml09MTt1PWNbbD4+Ml18MDtpPXY7cmV0dXJuIHV8MH1lbHNle2NbbD4+Ml09KGNbcj4+Ml18MCkhPTA/MDoyO3U9Y1tsPj4yXXwwO2k9djtyZXR1cm4gdXwwfX19d2hpbGUoMCk7Y1tsPj4yXT0xO3U9Y1tsPj4yXXwwO2k9djtyZXR1cm4gdXwwfWZ1bmN0aW9uIE5pKGIsZCl7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wO2s9aTtpPWkrMzJ8MDtlPWsrMTZ8MDtmPWsrMTJ8MDtnPWsrOHwwO2g9ays0fDA7aj1rO2NbZT4+Ml09YjtjW2Y+PjJdPWQ7Y1tnPj4yXT0wO2Nbaj4+Ml09MTg3Njc7Y1toPj4yXT0wO3doaWxlKDEpe2lmKCEoKGNbZz4+Ml18MCk9PTA/KGNbaD4+Ml18MCk8MTg6MCkpYnJlYWs7Yj1fKGNbaD4+Ml18MCxjW2Y+PjJdfDApfDA7Y1tnPj4yXT0oKGFbKGNbZT4+Ml18MCkrYj4+MF18MCktKGFbKGNbaj4+Ml18MCkrKGNbaD4+Ml18MCk+PjBdfDApfDApKjEwO2NbaD4+Ml09KGNbaD4+Ml18MCkrMX1pZihjW2c+PjJdfDApe2I9Y1tnPj4yXXwwO2k9aztyZXR1cm4gYnwwfWNbZz4+Ml09KGFbKGNbZT4+Ml18MCkrKChjW2Y+PjJdfDApKjE4fDApPj4wXXwwKS01NjtiPWNbZz4+Ml18MDtpPWs7cmV0dXJuIGJ8MH1mdW5jdGlvbiBPaShiLGUsZil7Yj1ifDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MDtuPWk7aT1pKzMyfDA7az1uKzE3fDA7Zz1uKzEyfDA7aD1uKzh8MDtsPW4rMTZ8MDttPW4rNHwwO2o9bjtjW2c+PjJdPWI7Y1toPj4yXT1lO2FbbD4+MF09ZjtmPWNbZz4+Ml18MDtpZigoZFsxODQwMysoZFtjW2c+PjJdPj4wXXwwKT4+MF18MCkmNCl7YVtrPj4wXT1QaShmKXwwO209YVtrPj4wXXwwO2k9bjtyZXR1cm4gbXwwfWNbaj4+Ml09SmYoZil8MDtjW20+PjJdPTA7d2hpbGUoMSl7aWYoKGNbbT4+Ml18MCk+PTgpe2Y9MTE7YnJlYWt9aWYoKGRbMTg3ODYrKGNbbT4+Ml18MCk+PjBdfDB8MCk9PShjW2o+PjJdfDApPyh6ZCgxODgwMisoZFsxODc5NCsoY1ttPj4yXXwwKT4+MF18MCl8MCxjW2c+PjJdfDAsY1tqPj4yXXwwKXwwKT09MDowKXtpZighKGNbaD4+Ml18MCkpe2Y9OTticmVha31pZigoZFsxODgyNysoY1ttPj4yXXwwKT4+MF18MHwwKTw9MSl7Zj05O2JyZWFrfX1jW20+PjJdPShjW20+PjJdfDApKzF9aWYoKGZ8MCk9PTkpe2Fbaz4+MF09YVsxODgyNysoY1ttPj4yXXwwKT4+MF18MDttPWFbaz4+MF18MDtpPW47cmV0dXJuIG18MH1lbHNlIGlmKChmfDApPT0xMSl7YVtrPj4wXT1hW2w+PjBdfDA7bT1hW2s+PjBdfDA7aT1uO3JldHVybiBtfDB9cmV0dXJuIDB9ZnVuY3Rpb24gUGkoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wO2U9aTtpPWkrMTZ8MDtiPWUrNHwwO2Q9ZTtjW2I+PjJdPWE7Y1tkPj4yXT0wO2lmKGNbYj4+Ml18MClRaShjW2I+PjJdfDAsZCl8MDtpPWU7cmV0dXJuIGNbZD4+Ml18MH1mdW5jdGlvbiBRaShiLGUpe2I9YnwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MDtvPWk7aT1pKzQ4fDA7aj1vKzMyfDA7az1vKzI4fDA7bD1vKzI0fDA7aD1vO209bysyMHwwO2Y9bysxNnwwO2c9bysxMnwwO249bys4fDA7Y1trPj4yXT1iO2NbbD4+Ml09ZTtiPWg7Y1tiPj4yXT0wO2NbYis0Pj4yXT0wO2NbZz4+Ml09MDtkbyBpZigoYVtjW2s+PjJdPj4wXXwwKSE9NDUpe2U9Y1trPj4yXXwwO2lmKChhW2Nbaz4+Ml0+PjBdfDApPT00Myl7Y1trPj4yXT1lKzE7YnJlYWt9aWYoKGFbZT4+MF18MCk9PTQ4KXtpZigoYVsoY1trPj4yXXwwKSsxPj4wXXwwKSE9MTIwPyhhWyhjW2s+PjJdfDApKzE+PjBdfDApIT04ODowKWJyZWFrO2lmKGRbMTg0MDMrKGRbKGNbaz4+Ml18MCkrMj4+MF18MCk+PjBdJjgpe2Nbbj4+Ml09MDtjW2s+PjJdPShjW2s+PjJdfDApKzI7d2hpbGUoMSl7aWYoKGFbY1trPj4yXT4+MF18MCkhPTQ4KWJyZWFrO2Nbaz4+Ml09KGNbaz4+Ml18MCkrMX1jW20+PjJdPTA7d2hpbGUoMSl7ZT1jW24+PjJdfDA7aWYoISgoZFsxODQwMysoZFsoY1trPj4yXXwwKSsoY1ttPj4yXXwwKT4+MF18MCk+PjBdJjh8MCkhPTA/KGNbbT4+Ml18MCk8ODowKSlicmVhaztjW24+PjJdPShlPDw0KSsoKExpKGFbKGNbaz4+Ml18MCkrKGNbbT4+Ml18MCk+PjBdfDApfDApJjI1NSk7Y1ttPj4yXT0oY1ttPj4yXXwwKSsxfWlmKChlJi0yMTQ3NDgzNjQ4fDApPT0wPyhkWzE4NDAzKyhkWyhjW2s+PjJdfDApKyhjW20+PjJdfDApPj4wXXwwKT4+MF0mOHwwKT09MDowKXtjW2NbbD4+Ml0+PjJdPWNbbj4+Ml07Y1tqPj4yXT0xO249Y1tqPj4yXXwwO2k9bztyZXR1cm4gbnwwfWNbaj4+Ml09MDtuPWNbaj4+Ml18MDtpPW87cmV0dXJuIG58MH19fWVsc2V7Y1tnPj4yXT0xO2Nbaz4+Ml09KGNbaz4+Ml18MCkrMX13aGlsZSgwKTt3aGlsZSgxKXtpZigoYVtjW2s+PjJdPj4wXXwwKSE9NDgpYnJlYWs7Y1trPj4yXT0oY1trPj4yXXwwKSsxfWNbbT4+Ml09MDt3aGlsZSgxKXtpZigoY1ttPj4yXXwwKT49MTEpYnJlYWs7bj0oYVsoY1trPj4yXXwwKSsoY1ttPj4yXXwwKT4+MF18MCktNDh8MDtjW2Y+PjJdPW47aWYoISgobnwwKT49MCYoY1tmPj4yXXwwKTw9OSkpYnJlYWs7bj1oO249YVMoY1tuPj4yXXwwLGNbbis0Pj4yXXwwLDEwLDApfDA7Yj1jW2Y+PjJdfDA7Yj1SUihufDAsQ3wwLGJ8MCwoKGJ8MCk8MCk8PDMxPj4zMXwwKXwwO249aDtjW24+PjJdPWI7Y1tuKzQ+PjJdPUM7Y1ttPj4yXT0oY1ttPj4yXXwwKSsxfWlmKChjW20+PjJdfDApPjEwKXtjW2o+PjJdPTA7bj1jW2o+PjJdfDA7aT1vO3JldHVybiBufDB9bT1oO249Y1tnPj4yXXwwO249UVIoY1ttPj4yXXwwLGNbbSs0Pj4yXXwwLG58MCwoKG58MCk8MCk8PDMxPj4zMXwwKXwwO209QztpZigobXwwKT4wfChtfDApPT0wJm4+Pj4wPjIxNDc0ODM2NDcpe2Nbaj4+Ml09MDtuPWNbaj4+Ml18MDtpPW87cmV0dXJuIG58MH1pZihjW2c+PjJdfDApe209aDttPVFSKDAsMCxjW20+PjJdfDAsY1ttKzQ+PjJdfDApfDA7bj1oO2Nbbj4+Ml09bTtjW24rND4+Ml09Q31jW2NbbD4+Ml0+PjJdPWNbaD4+Ml07Y1tqPj4yXT0xO249Y1tqPj4yXXwwO2k9bztyZXR1cm4gbnwwfWZ1bmN0aW9uIFJpKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MDtmPWk7aT1pKzE2fDA7ZD1mKzh8MDtnPWYrNHwwO2U9ZjtjW2Q+PjJdPWE7Y1tnPj4yXT1iO2NbZT4+Ml09Y1tnPj4yXTtpZigoY1tlPj4yXXwwKT4+PjA8PShjWzEwNDgrKGNbZD4+Ml08PDIpPj4yXXwwKT4+PjApe2k9ZjtyZXR1cm59Y1sxMDQ4KyhjW2Q+PjJdPDwyKT4+Ml09Y1tlPj4yXTtpPWY7cmV0dXJufWZ1bmN0aW9uIFNpKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wO2U9aTtpPWkrMTZ8MDtkPWUrNHwwO2Y9ZTtjW2Q+PjJdPWE7Y1tmPj4yXT1iO2E9MTAwOCsoY1tkPj4yXTw8Mil8MDtjW2E+PjJdPShjW2E+PjJdfDApKyhjW2Y+PjJdfDApO2lmKChjWzEwMDgrKGNbZD4+Ml08PDIpPj4yXXwwKT4+PjA8PShjWzEwNDgrKGNbZD4+Ml08PDIpPj4yXXwwKT4+PjApe2k9ZTtyZXR1cm59Y1sxMDQ4KyhjW2Q+PjJdPDwyKT4+Ml09Y1sxMDA4KyhjW2Q+PjJdPDwyKT4+Ml07aT1lO3JldHVybn1mdW5jdGlvbiBUaShiLGYsZyl7Yj1ifDA7Zj1mfDA7Zz1nfDA7dmFyIGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTA7cD1pO2k9aSszMnwwO2g9cCsyMHwwO2o9cCsxNnwwO2s9cCsxMnwwO2w9cCs4fDA7bT1wKzR8MDtuPXA7Y1toPj4yXT1iO2Nbaj4+Ml09ZjtjW2s+PjJdPWc7aWYoKGNbaj4+Ml18MCk8Mil7bz1jW2o+PjJdfDA7aT1wO3JldHVybiBvfDB9Y1tsPj4yXT0oZFsxNzYxMysoZFtjW2g+PjJdPj4wXXwwKT4+MF08PDJeKGRbMTc2MTMrKGRbKGNbaD4+Ml18MCkrKChjW2o+PjJdfDApLTEpPj4wXXwwKT4+MF18MCkqM15jW2o+PjJdfDApJTEyN3wwO2NbbD4+Ml09KGRbMTg4MzUrKGNbbD4+Ml18MCk+PjBdfDApLTE7d2hpbGUoMSl7aWYoKGNbbD4+Ml18MCk8MCl7bz0xMzticmVha31pZigoZFsxODk2MisoY1tsPj4yXXwwKT4+MF18MCk9PShjW2o+PjJdfDApKXtjW20+PjJdPTA7Y1tuPj4yXT0xOTA4NisoZVs5NTI0KyhjW2w+PjJdPDwxKT4+MV18MCk7d2hpbGUoMSl7aWYoKGNbbT4+Ml18MCk8KGNbaj4+Ml18MCkpZz0oYVsoY1toPj4yXXwwKSsoY1ttPj4yXXwwKT4+MF0mLTMzfDApPT0oYVsoY1tuPj4yXXwwKSsoY1ttPj4yXXwwKT4+MF18MCk7ZWxzZSBnPTA7Zj1jW20+PjJdfDA7aWYoIWcpYnJlYWs7Y1ttPj4yXT1mKzF9aWYoKGZ8MCk+PShjW2o+PjJdfDApKWJyZWFrfWNbbD4+Ml09KGRbMTk3NjMrKGNbbD4+Ml18MCk+PjBdfDApLTF9aWYoKG98MCk9PTEzKXtvPWNbaj4+Ml18MDtpPXA7cmV0dXJuIG98MH1jW2Nbaz4+Ml0+PjJdPWRbMTk2MzkrKGNbbD4+Ml18MCk+PjBdO289Y1tqPj4yXXwwO2k9cDtyZXR1cm4gb3wwfWZ1bmN0aW9uIFVpKGEpe2E9YXwwO3ZhciBiPTAsZD0wO2Q9aTtpPWkrMTZ8MDtiPWQ7Y1tiPj4yXT1hO2lmKCEoY1soY1tiPj4yXXwwKSs4MD4+Ml18MCkpe2k9ZDtyZXR1cm59YT0oY1tiPj4yXXwwKSs4MHwwO2NbYT4+Ml09KGNbYT4+Ml18MCkrLTQ7JGkoY1soY1tiPj4yXXwwKSs4MD4+Ml18MCk7Y1soY1tiPj4yXXwwKSs4MD4+Ml09MDtpPWQ7cmV0dXJufWZ1bmN0aW9uIFZpKGEsZSxmKXthPWF8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTA7cD1pO2k9aSszMnwwO2c9cCsyOHwwO2g9cCsyNHwwO2o9cCsyMHwwO249cCsxNnwwO209cCsxMnwwO2w9cCs4fDA7az1wO2NbZz4+Ml09YTtjW2g+PjJdPWU7Y1tqPj4yXT1mO2Nbbj4+Ml09MDtjW20+PjJdPWNbY1toPj4yXT4+Ml07aWYoISgoZFsoY1tnPj4yXXwwKSsxNj4+MF18MCkhPTA/KGNbKGNbZz4+Ml18MCkrMjg+PjJdfDApIT0wOjApKW89MztkbyBpZigoKG98MCk9PTM/KG89KFdpKGNbKGNbZz4+Ml18MCkrMjEyPj4yXXwwKXwwKT09MCxvJihjW20+PjJdfDApIT0wKTowKT8oY1ttPj4yXXwwKSE9KGNbKGNbZz4+Ml18MCkrMTYwPj4yXXwwKTowKXtjW2w+PjJdPTA7bz1rO2Nbbz4+Ml09MDtjW28rND4+Ml09MDtpZigoZFsoY1tnPj4yXXwwKSsxNz4+MF18MCk+MD8oY1tjWyhjW2c+PjJdfDApKzY0Pj4yXT4+Ml18MCkhPTA6MCljW24+PjJdPVhpKGNbKGNbZz4+Ml18MCkrNjQ+PjJdfDAsayl8MDtpZigoY1tuPj4yXXwwKT09MD8oY1tsPj4yXT1ZaShjW20+PjJdfDApfDAsKGNbbD4+Ml18MCk9PTApOjApY1tuPj4yXT03O2lmKCEoY1tuPj4yXXwwKSl7WmkoY1tnPj4yXXwwKTtjW24+PjJdPV9pKGNbKGNbZz4+Ml18MCkrMjEyPj4yXXwwLGNbbT4+Ml18MCl8MH1pZighKGNbbj4+Ml18MCkpeyRpKGNbKGNbZz4+Ml18MCkrMjA4Pj4yXXwwKTtjWyhjW2c+PjJdfDApKzIwOD4+Ml09Y1tsPj4yXTtvPWs7bz1SUihjW28+PjJdfDAsY1tvKzQ+PjJdfDAsY1ttPj4yXXwwLDApfDA7bz1RUihvfDAsQ3wwLDEsMCl8MDtvPV9SKG98MCxDfDAsY1ttPj4yXXwwLDApfDA7Y1soY1tnPj4yXXwwKSsyOD4+Ml09bztjWyhjW2c+PjJdfDApKzE2MD4+Ml09Y1ttPj4yXTticmVha31lbHNleyRpKGNbbD4+Ml18MCk7YnJlYWt9fXdoaWxlKDApO2NbY1toPj4yXT4+Ml09Y1soY1tnPj4yXXwwKSsxNjA+PjJdO2lmKGNbbj4+Ml18MCl7bz1jW24+PjJdfDA7aT1wO3JldHVybiBvfDB9aWYoKGNbaj4+Ml18MCk8MCljW2o+PjJdPWJbKGNbZz4+Ml18MCkrMTUwPj4xXTtiWyhjW2c+PjJdfDApKzE1MD4+MV09Y1tqPj4yXTthaihjW2c+PjJdfDApO289Y1tuPj4yXXwwO2k9cDtyZXR1cm4gb3wwfWZ1bmN0aW9uIFdpKGEpe2E9YXwwO3ZhciBiPTAsZD0wO2Q9aTtpPWkrMTZ8MDtiPWQ7Y1tiPj4yXT1hO2k9ZDtyZXR1cm4gY1soY1tiPj4yXXwwKSsxMj4+Ml18MH1mdW5jdGlvbiBYaShhLGIpe2E9YXwwO2I9YnwwO3ZhciBkPTAsZT0wLGY9MDtkPWk7aT1pKzE2fDA7Zj1kKzR8MDtlPWQ7Y1tmPj4yXT1hO2NbZT4+Ml09YjtiPVliW2NbKGNbY1tmPj4yXT4+Ml18MCkrMjQ+PjJdJjI1NV0oY1tmPj4yXXwwLGNbZT4+Ml18MCl8MDtpPWQ7cmV0dXJuIGJ8MH1mdW5jdGlvbiBZaShhKXthPWF8MDt2YXIgYj0wLGQ9MDtiPWk7aT1pKzE2fDA7ZD1iO2NbZD4+Ml09YTthPWpqKGNbZD4+Ml18MCl8MDtpPWI7cmV0dXJuIGF8MH1mdW5jdGlvbiBaaShhKXthPWF8MDt2YXIgYj0wLGQ9MDtiPWk7aT1pKzE2fDA7ZD1iO2NbZD4+Ml09YTthPShjW2Q+PjJdfDApKzEwOHwwO2NbYT4+Ml09KGNbYT4+Ml18MCkrMTtkaihjWyhjW2Q+PjJdfDApKzk2Pj4yXXwwKTtlaihjWyhjW2Q+PjJdfDApKzIxMj4+Ml18MCk7aT1iO3JldHVybn1mdW5jdGlvbiBfaShhLGIpe2E9YXwwO2I9YnwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MDtqPWk7aT1pKzE2fDA7ZT1qKzEyfDA7Zj1qKzh8MDtnPWorNHwwO2g9ajtjW2Y+PjJdPWE7Y1tnPj4yXT1iO2lmKGNbKGNbZj4+Ml18MCkrMjQ+PjJdfDApe2NbaD4+Ml09T2JbY1sxMzI+PjJdJjI1NV0oY1tnPj4yXXwwLChjWyhjW2Y+PjJdfDApKzI4Pj4yXXwwKSs0MHwwLGRbKGNbZj4+Ml18MCkrMzI+PjBdfDApfDA7aWYoIShjW2g+PjJdfDApKXtjW2U+PjJdPTc7Yj1jW2U+PjJdfDA7aT1qO3JldHVybiBifDB9az1jWzM0XXwwO2E9Y1toPj4yXXwwO2I9Y2ooY1tmPj4yXXwwKXwwO1JiW2smMjU1XShhLGIpO2lmKGNbKGNbZj4+Ml18MCkrNDQ+PjJdfDApUWJbY1sxNjA+PjJdJjI1NV0oY1soY1tmPj4yXXwwKSs0ND4+Ml18MCk7Y1soY1tmPj4yXXwwKSs0ND4+Ml09Y1toPj4yXTtjWyhjW2Y+PjJdfDApKzI0Pj4yXT1jW2c+PjJdfWNbZT4+Ml09MDtrPWNbZT4+Ml18MDtpPWo7cmV0dXJuIGt8MH1mdW5jdGlvbiAkaShhKXthPWF8MDt2YXIgYj0wLGQ9MDtiPWk7aT1pKzE2fDA7ZD1iO2NbZD4+Ml09YTtiaihjW2Q+PjJdfDApO2k9YjtyZXR1cm59ZnVuY3Rpb24gYWooYSl7YT1hfDA7dmFyIGI9MDtiPWk7aT1pKzE2fDA7Y1tiPj4yXT1hO2k9YjtyZXR1cm59ZnVuY3Rpb24gYmooYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MDtmPWk7aT1pKzE2fDA7Yj1mKzh8MDtlPWYrNHwwO2Q9ZjtjW2I+PjJdPWE7aWYoIShjW2I+PjJdfDApKXtpPWY7cmV0dXJufWlmKChjW2I+PjJdfDApPj4+MD49KGNbNDI2XXwwKT4+PjA/KGNbYj4+Ml18MCk+Pj4wPChjWzQyN118MCk+Pj4wOjApe2JnKDEsMSk7Y1tlPj4yXT1jW2I+PjJdO2NbY1tlPj4yXT4+Ml09Y1s0MjldO2NbNDI5XT1jW2U+PjJdO2NbNDMwXT0oY1s0MzBdfDApKzE7Y1s0MzFdPShjWzQzMF18MCk8KGNbNDI1XXwwKSYxO2k9ZjtyZXR1cm59Y1tkPj4yXT0wO2NbZD4+Ml09YWcoY1tiPj4yXXwwKXwwO2JnKDIsY1tkPj4yXXwwKTtLZChjW2I+PjJdfDApO2k9ZjtyZXR1cm59ZnVuY3Rpb24gY2ooYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wO2U9aTtpPWkrMTZ8MDtiPWUrNHwwO2Q9ZTtjW2Q+PjJdPWE7YT1jWyhjW2Q+PjJdfDApKzE2Pj4yXXwwO2lmKChjWyhjW2Q+PjJdfDApKzE2Pj4yXXwwKT49MCl7Y1tiPj4yXT1hO2Q9Y1tiPj4yXXwwO2k9ZTtyZXR1cm4gZHwwfWVsc2V7YT1hUygtMTAyNCwtMSxhfDAsKChhfDApPDApPDwzMT4+MzF8MCl8MDtkPShjWyhjW2Q+PjJdfDApKzI0Pj4yXXwwKSsoY1soY1tkPj4yXXwwKSsyOD4+Ml18MCl8MDtkPV9SKGF8MCxDfDAsZHwwLCgoZHwwKTwwKTw8MzE+PjMxfDApfDA7Y1tiPj4yXT1kO2Q9Y1tiPj4yXXwwO2k9ZTtyZXR1cm4gZHwwfXJldHVybiAwfWZ1bmN0aW9uIGRqKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MDtkPWk7aT1pKzE2fDA7ZT1kKzR8MDtiPWQ7Y1tlPj4yXT1hO2NbYj4+Ml09Y1tlPj4yXTt3aGlsZSgxKXtpZighKGNbYj4+Ml18MCkpYnJlYWs7Y1soY1tiPj4yXXwwKSsxNj4+Ml09MTtjW2I+PjJdPWNbKGNbYj4+Ml18MCkrNDQ+PjJdfWk9ZDtyZXR1cm59ZnVuY3Rpb24gZWooYSl7YT1hfDA7dmFyIGI9MCxkPTA7Yj1pO2k9aSsxNnwwO2Q9YjtjW2Q+PjJdPWE7ZmooY1tkPj4yXXwwLDApO2k9YjtyZXR1cm59ZnVuY3Rpb24gZmooYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTA7aj1pO2k9aSszMnwwO2Q9aisxNnwwO2U9aisxMnwwO2Y9ais4fDA7Zz1qKzR8MDtoPWo7Y1tkPj4yXT1hO2NbZT4+Ml09YjtpZighKGNbKGNbZD4+Ml18MCkrNDQ+PjJdfDApKXtpPWo7cmV0dXJufWNbZj4+Ml09Y1tjW2Q+PjJdPj4yXTt3aGlsZSgxKXtpZighKGNbZj4+Ml18MCkpYnJlYWs7Y1tnPj4yXT1jWyhjW2Y+PjJdfDApKzMyPj4yXTtpZigoY1soY1tmPj4yXXwwKSsyMD4+Ml18MCk+Pj4wPihjW2U+PjJdfDApPj4+MClnaihjW2Y+PjJdfDApO2NbZj4+Ml09Y1tnPj4yXX1pZigoKGNbZT4+Ml18MCk9PTA/KGNbKGNbZD4+Ml18MCkrMTI+PjJdfDApIT0wOjApPyhjW2g+PjJdPU9iW2NbMTQ0Pj4yXSYyNTVdKGNbKGNbZD4+Ml18MCkrNDQ+PjJdfDAsMSwwKXwwLChjW2g+PjJdfDApIT0wKTowKXtWUihjW2NbaD4+Ml0+PjJdfDAsMCxjWyhjW2Q+PjJdfDApKzI0Pj4yXXwwKXwwO2NbZT4+Ml09MX1SYltjWzE1Nj4+Ml0mMjU1XShjWyhjW2Q+PjJdfDApKzQ0Pj4yXXwwLChjW2U+PjJdfDApKzF8MCk7aT1qO3JldHVybn1mdW5jdGlvbiBnaihhKXthPWF8MDt2YXIgZD0wLGY9MDtmPWk7aT1pKzE2fDA7ZD1mO2NbZD4+Ml09YTtpZighKGVbKGNbZD4+Ml18MCkrMjQ+PjFdJjIpKXtpPWY7cmV0dXJufWhqKGNbZD4+Ml18MCwxKTthPShjW2Q+PjJdfDApKzI0fDA7YlthPj4xXT1lW2E+PjFdJi0xNTthPShjW2Q+PjJdfDApKzI0fDA7YlthPj4xXT1lW2E+PjFdfDE7aWYoYlsoY1tkPj4yXXwwKSsyNj4+MV18MCl7aT1mO3JldHVybn1paihjW2Q+PjJdfDApO2k9ZjtyZXR1cm59ZnVuY3Rpb24gaGooYixmKXtiPWJ8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wO2s9aTtpPWkrMTZ8MDtoPWsrNHwwO2c9ays4fDA7aj1rO2NbaD4+Ml09YjthW2c+PjBdPWY7Y1tqPj4yXT1jWyhjW2g+PjJdfDApKzI4Pj4yXTtpZihkW2c+PjBdJjEpe2lmKChjWyhjW2o+PjJdfDApKzg+PjJdfDApPT0oY1toPj4yXXwwKSljWyhjW2o+PjJdfDApKzg+PjJdPWNbKGNbaD4+Ml18MCkrMzY+PjJdO2Y9Y1soY1toPj4yXXwwKSszNj4+Ml18MDtpZihjWyhjW2g+PjJdfDApKzMyPj4yXXwwKWNbKGNbKGNbaD4+Ml18MCkrMzI+PjJdfDApKzM2Pj4yXT1mO2Vsc2UgY1soY1tqPj4yXXwwKSs0Pj4yXT1mO2Y9Y1soY1toPj4yXXwwKSszMj4+Ml18MDtpZighKGNbKGNbaD4+Ml18MCkrMzY+PjJdfDApKXtjW2Nbaj4+Ml0+PjJdPWY7aWYoIShjW2Nbaj4+Ml0+PjJdfDApKWFbKGNbaj4+Ml18MCkrMzM+PjBdPTJ9ZWxzZSBjWyhjWyhjW2g+PjJdfDApKzM2Pj4yXXwwKSszMj4+Ml09ZjtjWyhjW2g+PjJdfDApKzMyPj4yXT0wO2NbKGNbaD4+Ml18MCkrMzY+PjJdPTB9aWYoIShkW2c+PjBdJjIpKXtpPWs7cmV0dXJufWNbKGNbaD4+Ml18MCkrMzI+PjJdPWNbY1tqPj4yXT4+Ml07Zj1jW2g+PjJdfDA7aWYoIShjWyhjW2g+PjJdfDApKzMyPj4yXXwwKSl7Y1soY1tqPj4yXXwwKSs0Pj4yXT1mO2lmKGFbKGNbaj4+Ml18MCkrMzI+PjBdfDApYVsoY1tqPj4yXXwwKSszMz4+MF09MX1lbHNlIGNbKGNbKGNbaD4+Ml18MCkrMzI+PjJdfDApKzM2Pj4yXT1mO2NbY1tqPj4yXT4+Ml09Y1toPj4yXTtpZihjWyhjW2o+PjJdfDApKzg+PjJdfDApe2k9aztyZXR1cm59aWYoZVsoY1toPj4yXXwwKSsyND4+MV0mOCl7aT1rO3JldHVybn1jWyhjW2o+PjJdfDApKzg+PjJdPWNbaD4+Ml07aT1rO3JldHVybn1mdW5jdGlvbiBpaihiKXtiPWJ8MDt2YXIgZD0wLGU9MDtlPWk7aT1pKzE2fDA7ZD1lO2NbZD4+Ml09YjtpZighKGFbKGNbKGNbZD4+Ml18MCkrMjg+PjJdfDApKzMyPj4wXXwwKSl7aT1lO3JldHVybn1VYltjWzE0OD4+Ml0mMjU1XShjWyhjWyhjW2Q+PjJdfDApKzI4Pj4yXXwwKSs0ND4+Ml18MCxjW2NbZD4+Ml0+PjJdfDAsMCk7aT1lO3JldHVybn1mdW5jdGlvbiBqaihhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wO2Y9aTtpPWkrMTZ8MDtiPWYrOHwwO2Q9Zis0fDA7ZT1mO2NbYj4+Ml09YTtjW2Q+PjJdPTA7aWYoKGNbYj4+Ml18MCk8PShjWzQyM118MCk/KGNbZD4+Ml09Y1s0MjldLChjW2Q+PjJdfDApIT0wKTowKXtjWzQyOV09Y1tjWzQyOV0+PjJdO2NbNDMwXT0oY1s0MzBdfDApKy0xO2NbNDMxXT0oY1s0MzBdfDApPChjWzQyNV18MCkmMTtSaSg3LGNbYj4+Ml18MCk7U2koMSwxKX1pZihjW2Q+PjJdfDApe2U9Y1tkPj4yXXwwO2k9ZjtyZXR1cm4gZXwwfWE9Y1tiPj4yXXwwO2NbZD4+Ml09JGYoYSwoKGF8MCk8MCk8PDMxPj4zMSl8MDtpZighKGNbZD4+Ml18MCkpe2U9Y1tkPj4yXXwwO2k9ZjtyZXR1cm4gZXwwfWNbZT4+Ml09YWcoY1tkPj4yXXwwKXwwO1JpKDcsY1tiPj4yXXwwKTtTaSgyLGNbZT4+Ml18MCk7ZT1jW2Q+PjJdfDA7aT1mO3JldHVybiBlfDB9ZnVuY3Rpb24ga2ooYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wO2U9aTtpPWkrMTZ8MDtiPWUrNHwwO2Q9ZTtjW2I+PjJdPWE7Y1tkPj4yXT1rZyg1MTIsMCl8MDtpZighKGNbZD4+Ml18MCkpe2Q9Y1tkPj4yXXwwO2k9ZTtyZXR1cm4gZHwwfWNbY1tkPj4yXT4+Ml09Y1tiPj4yXTtkPWNbZD4+Ml18MDtpPWU7cmV0dXJuIGR8MH1mdW5jdGlvbiBsaihiLGUpe2I9YnwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTA7cD1pO2k9aSszMnwwO2c9cCsyOHwwO2g9cCsyNHwwO2o9cCsyMHwwO2w9cCsxNnwwO2Y9cCsxMnwwO209cCs4fDA7bj1wKzR8MDtrPXA7Y1toPj4yXT1iO2Nbaj4+Ml09ZTtpZighKGNbaD4+Ml18MCkpe2NbZz4+Ml09MDtvPWNbZz4+Ml18MDtpPXA7cmV0dXJuIG98MH1jW2o+PjJdPShjW2o+PjJdfDApKy0xO3doaWxlKDEpe2lmKChjW2NbaD4+Ml0+PjJdfDApPj4+MDw9NGUzKWJyZWFrO2lmKCEoY1soY1toPj4yXXwwKSs4Pj4yXXwwKSlicmVhaztjW2Y+PjJdPSgoY1tqPj4yXXwwKT4+PjApLygoY1soY1toPj4yXXwwKSs4Pj4yXXwwKT4+PjApfDA7Y1tqPj4yXT0oKGNbaj4+Ml18MCk+Pj4wKSUoKGNbKGNbaD4+Ml18MCkrOD4+Ml18MCk+Pj4wKXwwO2lmKChjWyhjW2g+PjJdfDApKzEyKyhjW2Y+PjJdPDwyKT4+Ml18MCk9PTA/KGI9a2ooY1soY1toPj4yXXwwKSs4Pj4yXXwwKXwwLGNbKGNbaD4+Ml18MCkrMTIrKGNbZj4+Ml08PDIpPj4yXT1iLChjWyhjW2g+PjJdfDApKzEyKyhjW2Y+PjJdPDwyKT4+Ml18MCk9PTApOjApe289ODticmVha31jW2g+PjJdPWNbKGNbaD4+Ml18MCkrMTIrKGNbZj4+Ml08PDIpPj4yXX1pZigob3wwKT09OCl7Y1tnPj4yXT03O289Y1tnPj4yXXwwO2k9cDtyZXR1cm4gb3wwfWY9Y1tqPj4yXXwwO2lmKChjW2NbaD4+Ml0+PjJdfDApPj4+MDw9NGUzKXtvPShjW2g+PjJdfDApKzEyKygoKGNbaj4+Ml18MCk+Pj4wKS84fDApfDA7YVtvPj4wXT1kW28+PjBdfDB8MTw8KGYmNyk7Y1tnPj4yXT0wO289Y1tnPj4yXXwwO2k9cDtyZXR1cm4gb3wwfWNbaj4+Ml09ZisxO2NbbD4+Ml09KGY+Pj4wKSUxMjV8MDthOmRvIGlmKCEoY1soY1toPj4yXXwwKSsxMisoY1tsPj4yXTw8Mik+PjJdfDApKXtpZigoY1soY1toPj4yXXwwKSs0Pj4yXXwwKT4+PjA+PTEyNClvPTE3fWVsc2V7d2hpbGUoMSl7aWYoKGNbKGNbaD4+Ml18MCkrMTIrKGNbbD4+Ml08PDIpPj4yXXwwKT09KGNbaj4+Ml18MCkpYnJlYWs7bz0oY1tsPj4yXXwwKSsxfDA7Y1tsPj4yXT1vO2NbbD4+Ml09KGNbbD4+Ml18MCk+Pj4wPj0xMjU/MDpvO2lmKCEoY1soY1toPj4yXXwwKSsxMisoY1tsPj4yXTw8Mik+PjJdfDApKXtvPTE3O2JyZWFrIGF9fWNbZz4+Ml09MDtvPWNbZz4+Ml18MDtpPXA7cmV0dXJuIG98MH13aGlsZSgwKTtpZigob3wwKT09MTc/KGNbKGNbaD4+Ml18MCkrND4+Ml18MCk+Pj4wPj02MjowKXtjW2s+PjJdPUNoKDAsNTAwLDApfDA7aWYoIShjW2s+PjJdfDApKXtjW2c+PjJdPTc7bz1jW2c+PjJdfDA7aT1wO3JldHVybiBvfDB9VFIoY1trPj4yXXwwLChjW2g+PjJdfDApKzEyfDAsNTAwKXwwO1ZSKChjW2g+PjJdfDApKzEyfDAsMCw1MDApfDA7Y1soY1toPj4yXXwwKSs4Pj4yXT0oKChjW2NbaD4+Ml0+PjJdfDApKzEyNS0xfDApPj4+MCkvMTI1fDA7Y1tuPj4yXT1saihjW2g+PjJdfDAsY1tqPj4yXXwwKXwwO2NbbT4+Ml09MDt3aGlsZSgxKXtpZigoY1ttPj4yXXwwKT4+PjA+PTEyNSlicmVhaztpZihjWyhjW2s+PjJdfDApKyhjW20+PjJdPDwyKT4+Ml18MCl7bz1saihjW2g+PjJdfDAsY1soY1trPj4yXXwwKSsoY1ttPj4yXTw8Mik+PjJdfDApfDA7Y1tuPj4yXT1jW24+PjJdfG99Y1ttPj4yXT0oY1ttPj4yXXwwKSsxfVRmKDAsY1trPj4yXXwwKTtjW2c+PjJdPWNbbj4+Ml07bz1jW2c+PjJdfDA7aT1wO3JldHVybiBvfDB9bz0oY1toPj4yXXwwKSs0fDA7Y1tvPj4yXT0oY1tvPj4yXXwwKSsxO2NbKGNbaD4+Ml18MCkrMTIrKGNbbD4+Ml08PDIpPj4yXT1jW2o+PjJdO2NbZz4+Ml09MDtvPWNbZz4+Ml18MDtpPXA7cmV0dXJuIG98MH1mdW5jdGlvbiBtaihiLGUsZil7Yj1ifDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wO3A9aTtpPWkrMzJ8MDtnPXArMjR8MDtoPXArMjB8MDtqPXArMTZ8MDtsPXArMTJ8MDtuPXArOHwwO2s9cCs0fDA7bT1wO2NbZz4+Ml09YjtjW2g+PjJdPWU7Y1tqPj4yXT1mO2lmKCEoY1tnPj4yXXwwKSl7aT1wO3JldHVybn1jW2g+PjJdPShjW2g+PjJdfDApKy0xO3doaWxlKDEpe2lmKCEoY1soY1tnPj4yXXwwKSs4Pj4yXXwwKSlicmVhaztjW2w+PjJdPSgoY1toPj4yXXwwKT4+PjApLygoY1soY1tnPj4yXXwwKSs4Pj4yXXwwKT4+PjApfDA7Y1toPj4yXT0oKGNbaD4+Ml18MCk+Pj4wKSUoKGNbKGNbZz4+Ml18MCkrOD4+Ml18MCk+Pj4wKXwwO2NbZz4+Ml09Y1soY1tnPj4yXXwwKSsxMisoY1tsPj4yXTw8Mik+PjJdO2lmKCEoY1tnPj4yXXwwKSl7bz0xNjticmVha319aWYoKG98MCk9PTE2KXtpPXA7cmV0dXJufWlmKChjW2NbZz4+Ml0+PjJdfDApPj4+MDw9NGUzKXtvPShjW2c+PjJdfDApKzEyKygoKGNbaD4+Ml18MCk+Pj4wKS84fDApfDA7YVtvPj4wXT0oZFtvPj4wXXwwKSZ+KDE8PChjW2g+PjJdJjcpKTtpPXA7cmV0dXJufWNbaz4+Ml09Y1tqPj4yXTtUUihjW2s+PjJdfDAsKGNbZz4+Ml18MCkrMTJ8MCw1MDApfDA7VlIoKGNbZz4+Ml18MCkrMTJ8MCwwLDUwMCl8MDtjWyhjW2c+PjJdfDApKzQ+PjJdPTA7Y1tuPj4yXT0wO3doaWxlKDEpe2lmKChjW24+PjJdfDApPj4+MD49MTI1KWJyZWFrO2lmKChjWyhjW2s+PjJdfDApKyhjW24+PjJdPDwyKT4+Ml18MCkhPTA/KGNbKGNbaz4+Ml18MCkrKGNbbj4+Ml08PDIpPj4yXXwwKSE9KChjW2g+PjJdfDApKzF8MCk6MCl7Y1ttPj4yXT0oKChjWyhjW2s+PjJdfDApKyhjW24+PjJdPDwyKT4+Ml18MCktMXwwKT4+PjApJTEyNXwwO289KGNbZz4+Ml18MCkrNHwwO2Nbbz4+Ml09KGNbbz4+Ml18MCkrMTt3aGlsZSgxKXtpZighKGNbKGNbZz4+Ml18MCkrMTIrKGNbbT4+Ml08PDIpPj4yXXwwKSlicmVhaztvPShjW20+PjJdfDApKzF8MDtjW20+PjJdPW87Y1ttPj4yXT0oY1ttPj4yXXwwKT4+PjA+PTEyNT8wOm99Y1soY1tnPj4yXXwwKSsxMisoY1ttPj4yXTw8Mik+PjJdPWNbKGNbaz4+Ml18MCkrKGNbbj4+Ml08PDIpPj4yXX1jW24+PjJdPShjW24+PjJdfDApKzF9aT1wO3JldHVybn1mdW5jdGlvbiBuaihhLGIpe2E9YXwwO2I9YnwwO3ZhciBkPTAsZT0wLGY9MDtmPWk7aT1pKzE2fDA7ZD1mKzR8MDtlPWY7Y1tkPj4yXT1hO2NbZT4+Ml09YjtpZighKGNbZD4+Ml18MCkpe2E9MDthPWEmMTtpPWY7cmV0dXJuIGF8MH1hPShxaihjW2Q+PjJdfDAsY1tlPj4yXXwwKXwwKSE9MDthPWEmMTtpPWY7cmV0dXJuIGF8MH1mdW5jdGlvbiBvaihhKXthPWF8MDt2YXIgYj0wLGQ9MDtkPWk7aT1pKzE2fDA7Yj1kO2NbYj4+Ml09YTtpPWQ7cmV0dXJuIGNbY1tiPj4yXT4+Ml18MH1mdW5jdGlvbiBwaihhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTA7ZT1pO2k9aSsxNnwwO2I9ZSs0fDA7ZD1lO2NbYj4+Ml09YTtpZighKGNbYj4+Ml18MCkpe2k9ZTtyZXR1cm59YTpkbyBpZihjWyhjW2I+PjJdfDApKzg+PjJdfDApe2NbZD4+Ml09MDt3aGlsZSgxKXtpZigoY1tkPj4yXXwwKT4+PjA+PTEyNSlicmVhayBhO3BqKGNbKGNbYj4+Ml18MCkrMTIrKGNbZD4+Ml08PDIpPj4yXXwwKTtjW2Q+PjJdPShjW2Q+PjJdfDApKzF9fXdoaWxlKDApO0tkKGNbYj4+Ml18MCk7aT1lO3JldHVybn1mdW5jdGlvbiBxaihhLGIpe2E9YXwwO2I9YnwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTA7bD1pO2k9aSszMnwwO2c9bCsxNnwwO2g9bCsxMnwwO2o9bCs4fDA7ZT1sKzR8MDtrPWw7Y1toPj4yXT1hO2Nbaj4+Ml09YjtjW2o+PjJdPShjW2o+PjJdfDApKy0xO2lmKChjW2o+PjJdfDApPj4+MD49KGNbY1toPj4yXT4+Ml18MCk+Pj4wKXtjW2c+PjJdPTA7az1jW2c+PjJdfDA7aT1sO3JldHVybiBrfDB9d2hpbGUoMSl7aWYoIShjWyhjW2g+PjJdfDApKzg+PjJdfDApKWJyZWFrO2NbZT4+Ml09KChjW2o+PjJdfDApPj4+MCkvKChjWyhjW2g+PjJdfDApKzg+PjJdfDApPj4+MCl8MDtjW2o+PjJdPSgoY1tqPj4yXXwwKT4+PjApJSgoY1soY1toPj4yXXwwKSs4Pj4yXXwwKT4+PjApfDA7Y1toPj4yXT1jWyhjW2g+PjJdfDApKzEyKyhjW2U+PjJdPDwyKT4+Ml07aWYoIShjW2g+PjJdfDApKXtmPTU7YnJlYWt9fWlmKChmfDApPT01KXtjW2c+PjJdPTA7az1jW2c+PjJdfDA7aT1sO3JldHVybiBrfDB9ZT1jW2o+PjJdfDA7aWYoKGNbY1toPj4yXT4+Ml18MCk+Pj4wPD00ZTMpe2NbZz4+Ml09KChkWyhjW2g+PjJdfDApKzEyKygoZT4+PjApLzh8MCk+PjBdfDApJjE8PChjW2o+PjJdJjcpfDApIT0wJjE7az1jW2c+PjJdfDA7aT1sO3JldHVybiBrfDB9Y1tqPj4yXT1lKzE7Y1trPj4yXT0oZT4+PjApJTEyNXwwO3doaWxlKDEpe2lmKCEoY1soY1toPj4yXXwwKSsxMisoY1trPj4yXTw8Mik+PjJdfDApKXtmPTEzO2JyZWFrfWlmKChjWyhjW2g+PjJdfDApKzEyKyhjW2s+PjJdPDwyKT4+Ml18MCk9PShjW2o+PjJdfDApKXtmPTExO2JyZWFrfWNbaz4+Ml09KCgoY1trPj4yXXwwKSsxfDApPj4+MCklMTI1fDB9aWYoKGZ8MCk9PTExKXtjW2c+PjJdPTE7az1jW2c+PjJdfDA7aT1sO3JldHVybiBrfDB9ZWxzZSBpZigoZnwwKT09MTMpe2NbZz4+Ml09MDtrPWNbZz4+Ml18MDtpPWw7cmV0dXJuIGt8MH1yZXR1cm4gMH1mdW5jdGlvbiByaihhKXthPWF8MDt2YXIgYj0wLGQ9MDtkPWk7aT1pKzE2fDA7Yj1kO2NbYj4+Ml09YTtpPWQ7cmV0dXJuIGNbKGNbYj4+Ml18MCkrOD4+Ml18MH1mdW5jdGlvbiBzaihhLGIpe2E9YXwwO2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTA7ZT1pO2k9aSsxNnwwO2c9ZSsxMnwwO2Y9ZSs4fDA7ZD1lKzR8MDtjW2c+PjJdPWE7Y1tmPj4yXT1iO2NbZD4+Ml09dGooY1tnPj4yXXwwLGNbZj4+Ml18MCxlKXwwO2lmKCEoY1tkPj4yXXwwKSl7Zz0wO2k9ZTtyZXR1cm4gZ3wwfWc9Y1soY1tkPj4yXXwwKSs4Pj4yXXwwO2k9ZTtyZXR1cm4gZ3wwfWZ1bmN0aW9uIHRqKGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTA7bj1pO2k9aSszMnwwO209bisyOHwwO2U9bisyNHwwO2o9bisyMHwwO2Y9bisxNnwwO2w9bisxMnwwO2s9bis4fDA7Zz1uKzR8MDtoPW47Y1tlPj4yXT1hO2Nbaj4+Ml09YjtjW2Y+PjJdPWQ7aWYoY1soY1tlPj4yXXwwKSsxMj4+Ml18MCl7Yj11aihjW2o+PjJdfDApfDA7Y1tnPj4yXT0oYj4+PjApJSgoY1tjW2U+PjJdPj4yXXwwKT4+PjApfDA7Y1toPj4yXT0oY1soY1tlPj4yXXwwKSsxMj4+Ml18MCkrKGNbZz4+Ml08PDMpO2NbbD4+Ml09Y1soY1toPj4yXXwwKSs0Pj4yXTtjW2s+PjJdPWNbY1toPj4yXT4+Ml19ZWxzZXtjW2c+PjJdPTA7Y1tsPj4yXT1jWyhjW2U+PjJdfDApKzg+PjJdO2Nbaz4+Ml09Y1soY1tlPj4yXXwwKSs0Pj4yXX1jW2NbZj4+Ml0+PjJdPWNbZz4+Ml07d2hpbGUoMSl7Yj1jW2s+PjJdfDA7Y1trPj4yXT1iKy0xO2lmKCFiKXtlPTk7YnJlYWt9Yj0oaWcoY1soY1tsPj4yXXwwKSsxMj4+Ml18MCxjW2o+PjJdfDApfDApPT0wO2Y9Y1tsPj4yXXwwO2lmKGIpe2U9NzticmVha31jW2w+PjJdPWNbZj4+Ml19aWYoKGV8MCk9PTcpe2NbbT4+Ml09ZjttPWNbbT4+Ml18MDtpPW47cmV0dXJuIG18MH1lbHNlIGlmKChlfDApPT05KXtjW20+PjJdPTA7bT1jW20+PjJdfDA7aT1uO3JldHVybiBtfDB9cmV0dXJuIDB9ZnVuY3Rpb24gdWooYil7Yj1ifDA7dmFyIGU9MCxmPTAsZz0wLGg9MDtoPWk7aT1pKzE2fDA7ZT1oKzR8MDtnPWg7Zj1oKzh8MDtjW2U+PjJdPWI7Y1tnPj4yXT0wO3doaWxlKDEpe2I9Y1tlPj4yXXwwO2NbZT4+Ml09YisxO2I9YVtiPj4wXXwwO2FbZj4+MF09YjtpZighKGImMjU1KSlicmVhaztjW2c+PjJdPShjW2c+PjJdfDApKyhkWzE3NjEzKyhkW2Y+PjBdfDApPj4wXXwwKTtjW2c+PjJdPV8oY1tnPj4yXXwwLC0xNjQwNTMxNTM1KXwwfWk9aDtyZXR1cm4gY1tnPj4yXXwwfWZ1bmN0aW9uIHZqKGYsZyxoKXtmPWZ8MDtnPWd8MDtoPWh8MDt2YXIgaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wO0E9aTtpPWkrMTI4fDA7dz1BO2w9QSsxMDh8MDttPUErMTA0fDA7bj1BKzEwMHwwO289QSs5NnwwO3U9QSs5MnwwO2o9QSs4OHwwO3Y9QSs4NHwwO3Q9QSs4MHwwO0I9QSs2NHwwO3I9QSs0MHwwO3E9QSsyNHwwO3k9QSsyMHwwO3M9QSsxNnwwO3A9QSsxMTJ8MDt6PUErMTJ8MDt4PUErOHwwO2NbbT4+Ml09ZjtjW24+PjJdPWc7Y1tvPj4yXT1oO2Nbcz4+Ml09MDtoPShjW24+PjJdfDApPT0xPzE5OTA1OjE5OTI0O2NbeT4+Ml09aDtjW0I+PjJdPWg7Y1tCKzQ+PjJdPTE5OTM4O2NbQis4Pj4yXT0xOTk0MDtjW0IrMTI+PjJdPTA7Y1txPj4yXT1jW20+PjJdO2NbcSs4Pj4yXT1jW24+PjJdO2NbcSsxMj4+Ml09MDtjW3ErND4+Ml09Y1tvPj4yXTtCaihxLDMsQiwwKXwwO2lmKCEoY1txKzEyPj4yXXwwKSl7Y1t0Pj4yXT0oY1soY1ttPj4yXXwwKSsxNj4+Ml18MCkrKGNbbj4+Ml08PDQpO2lmKCEoY1soY1t0Pj4yXXwwKSs0Pj4yXXwwKSl7aWYoKGNbbj4+Ml18MCk9PTEpe0I9KGNbKGNbKGNbbT4+Ml18MCkrMTY+PjJdfDApKzE2KzEyPj4yXXwwKSs3OHwwO2JbQj4+MV09ZVtCPj4xXXwxfWNbbD4+Ml09MDtCPWNbbD4+Ml18MDtpPUE7cmV0dXJuIEJ8MH1tZyhjWyhjW3Q+PjJdfDApKzQ+PjJdfDApO2RvIGlmKCEob2coY1soY1t0Pj4yXXwwKSs0Pj4yXXwwKXwwKSl7Y1t1Pj4yXT1wZyhjWyhjW3Q+PjJdfDApKzQ+PjJdfDAsMCl8MDtpZihjW3U+PjJdfDApe3o9Y1tvPj4yXXwwO0I9Y1ttPj4yXXwwO0NqKHosQixsaChjW3U+PjJdfDApfDApO2JyZWFrfWVsc2V7Y1tzPj4yXT0xO2s9MTE7YnJlYWt9fWVsc2Ugaz0xMTt3aGlsZSgwKTthOmRvIGlmKChrfDApPT0xMSl7Y1tqPj4yXT0wO3doaWxlKDEpe2lmKChjW2o+PjJdfDApPj01KWJyZWFrO3JnKGNbKGNbdD4+Ml18MCkrND4+Ml18MCwoY1tqPj4yXXwwKSsxfDAscisoY1tqPj4yXTw8Mil8MCk7Y1tqPj4yXT0oY1tqPj4yXXwwKSsxfWNbY1soY1t0Pj4yXXwwKSsxMj4+Ml0+PjJdPWNbcj4+Ml07Zj1jW24+PjJdfDA7ZG8gaWYoY1tyKzE2Pj4yXXwwKXtqPWNbcisxNj4+Ml18MDtpZighZil7Qj1qJjM7YVtwPj4wXT1CO2FbcD4+MF09KGRbcD4+MF18MCk9PTA/MTpCO2FbKGNbbT4+Ml18MCkrNjY+PjBdPWFbcD4+MF18MDticmVha31pZigoanwwKSE9KGRbKGNbbT4+Ml18MCkrNjY+PjBdfDApKXtDaihjW28+PjJdfDAsY1ttPj4yXXwwLDIwMDE2KTtjW3U+PjJdPTE7YnJlYWsgYX19ZWxzZXtCPShjWyhjWyhjW20+PjJdfDApKzE2Pj4yXXwwKSsoZjw8NCkrMTI+PjJdfDApKzc4fDA7YltCPj4xXT1lW0I+PjFdfDR9d2hpbGUoMCk7YVsoY1soY1t0Pj4yXXwwKSsxMj4+Ml18MCkrNzc+PjBdPWFbKGNbbT4+Ml18MCkrNjY+PjBdfDA7aWYoIShjWyhjWyhjW3Q+PjJdfDApKzEyPj4yXXwwKSs4MD4+Ml18MCkpe0I9RGooY1tyKzg+PjJdfDApfDA7Y1t2Pj4yXT1CO2Nbdj4+Ml09KGNbdj4+Ml18MCk9PTA/LTJlMzpCO2NbKGNbKGNbdD4+Ml18MCkrMTI+PjJdfDApKzgwPj4yXT1jW3Y+PjJdO0VqKGNbKGNbdD4+Ml18MCkrND4+Ml18MCxjWyhjWyhjW3Q+PjJdfDApKzEyPj4yXXwwKSs4MD4+Ml18MCl8MH1hWyhjWyhjW3Q+PjJdfDApKzEyPj4yXXwwKSs3Nj4+MF09Y1tyKzQ+PjJdO2lmKCEoZFsoY1soY1t0Pj4yXXwwKSsxMj4+Ml18MCkrNzY+PjBdfDApKWFbKGNbKGNbdD4+Ml18MCkrMTI+PjJdfDApKzc2Pj4wXT0xO2lmKChkWyhjWyhjW3Q+PjJdfDApKzEyPj4yXXwwKSs3Nj4+MF18MCk+NCl7Q2ooY1tvPj4yXXwwLGNbbT4+Ml18MCwyMDA4NCk7Y1t1Pj4yXT0xO2JyZWFrfWlmKChjW24+PjJdfDApPT0wPyhjW3IrND4+Ml18MCk+PTQ6MCl7Qj0oY1ttPj4yXXwwKSsyNHwwO2NbQj4+Ml09Y1tCPj4yXSYtMzI3Njl9Qj1jW20+PjJdfDA7eT1jW3k+PjJdfDA7Y1t3Pj4yXT1jWyhjWyhjW20+PjJdfDApKzE2Pj4yXXwwKSsoY1tuPj4yXTw8NCk+PjJdO2Nbdys0Pj4yXT15O2Nbej4+Ml09R2goQiwyMDEwOCx3KXwwO2NbeD4+Ml09Y1soY1ttPj4yXXwwKSsyOTY+PjJdO2NbKGNbbT4+Ml18MCkrMjk2Pj4yXT0wO2NbdT4+Ml09JGUoY1ttPj4yXXwwLGNbej4+Ml18MCwxNDAscSwwKXwwO2NbKGNbbT4+Ml18MCkrMjk2Pj4yXT1jW3g+PjJdO2lmKCEoY1t1Pj4yXXwwKSljW3U+PjJdPWNbcSsxMj4+Ml07VGYoY1ttPj4yXXwwLGNbej4+Ml18MCk7aWYoIShjW3U+PjJdfDApKUZqKGNbbT4+Ml18MCxjW24+PjJdfDApfDA7aWYoYVsoY1ttPj4yXXwwKSs2OT4+MF18MCl7Y1t1Pj4yXT03O0NnKGNbbT4+Ml18MCl9aWYoKGNbdT4+Ml18MCkhPTA/KGNbKGNbbT4+Ml18MCkrMjQ+PjJdJjY1NTM2fDApPT0wOjApYnJlYWs7Qj0oY1soY1soY1ttPj4yXXwwKSsxNj4+Ml18MCkrKGNbbj4+Ml08PDQpKzEyPj4yXXwwKSs3OHwwO2JbQj4+MV09ZVtCPj4xXXwxO2NbdT4+Ml09MH13aGlsZSgwKTtpZihjW3M+PjJdfDApR2ooY1soY1t0Pj4yXXwwKSs0Pj4yXXwwKXwwfWVsc2UgY1t1Pj4yXT1jW3ErMTI+PjJdO2lmKChjW3U+PjJdfDApPT03fChjW3U+PjJdfDApPT0zMDgyKW1oKGNbbT4+Ml18MCk7Y1tsPj4yXT1jW3U+PjJdO0I9Y1tsPj4yXXwwO2k9QTtyZXR1cm4gQnwwfWZ1bmN0aW9uIHdqKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MDtmPWk7aT1pKzE2fDA7ZD1mKzh8MDtnPWYrNHwwO2U9ZjtjW2Q+PjJdPWE7Y1tnPj4yXT1iO2NbZT4+Ml09KGNbKGNbZD4+Ml18MCkrMTY+PjJdfDApKyhjW2c+PjJdPDw0KTt5aihjWyhjW2U+PjJdfDApKzEyPj4yXXwwKTtpZigoY1tnPj4yXXwwKT09MSl7aT1mO3JldHVybn1jW2U+PjJdPShjWyhjW2Q+PjJdfDApKzE2Pj4yXXwwKSsxNjt5aihjWyhjW2U+PjJdfDApKzEyPj4yXXwwKTtpPWY7cmV0dXJufWZ1bmN0aW9uIHhqKGEpe2E9YXwwO3ZhciBiPTAsZD0wO2I9aTtpPWkrMTZ8MDtkPWI7Y1tkPj4yXT1hO2E9KGNbZD4+Ml18MCkrMjR8MDtjW2E+PjJdPWNbYT4+Ml0mLTM7aT1iO3JldHVybn1mdW5jdGlvbiB5aihhKXthPWF8MDt2YXIgZD0wLGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wO2s9aTtpPWkrNjR8MDtsPWsrNDh8MDtoPWsrMzJ8MDtqPWsrMTZ8MDtkPWsrOHwwO2Y9ays0fDA7Zz1rO2NbbD4+Ml09YTtjW2Y+PjJdPWNbbD4+Ml07YT0oY1tmPj4yXXwwKSs4fDA7Y1toPj4yXT1jW2E+PjJdO2NbaCs0Pj4yXT1jW2ErND4+Ml07Y1toKzg+PjJdPWNbYSs4Pj4yXTtjW2grMTI+PjJdPWNbYSsxMj4+Ml07YT0oY1tmPj4yXXwwKSs0MHwwO2Nbaj4+Ml09Y1thPj4yXTtjW2orND4+Ml09Y1thKzQ+PjJdO2Nbais4Pj4yXT1jW2ErOD4+Ml07Y1tqKzEyPj4yXT1jW2ErMTI+PjJdO3pqKChjW2Y+PjJdfDApKzQwfDApO0FqKChjW2Y+PjJdfDApKzI0fDApO2NbZD4+Ml09Y1tqKzg+PjJdO3doaWxlKDEpe2lmKCEoY1tkPj4yXXwwKSlicmVhaztRZigwLGNbKGNbZD4+Ml18MCkrOD4+Ml18MCk7Y1tkPj4yXT1jW2NbZD4+Ml0+PjJdfUFqKGopO3pqKChjW2Y+PjJdfDApKzh8MCk7Y1tkPj4yXT1jW2grOD4+Ml07d2hpbGUoMSl7aWYoIShjW2Q+PjJdfDApKWJyZWFrO2NbZz4+Ml09Y1soY1tkPj4yXXwwKSs4Pj4yXTtSZigwLGNbZz4+Ml18MCk7Y1tkPj4yXT1jW2NbZD4+Ml0+PjJdfUFqKGgpO0FqKChjW2Y+PjJdfDApKzU2fDApO2NbKGNbZj4+Ml18MCkrNzI+PjJdPTA7aWYoISgoZVsoY1tmPj4yXXwwKSs3OD4+MV18MCkmMSkpe2k9aztyZXR1cm59bD0oY1tmPj4yXXwwKSs0fDA7Y1tsPj4yXT0oY1tsPj4yXXwwKSsxO2w9KGNbZj4+Ml18MCkrNzh8MDtiW2w+PjFdPShlW2w+PjFdfDApJi0yO2k9aztyZXR1cm59ZnVuY3Rpb24gemooYSl7YT1hfDA7dmFyIGI9MCxkPTA7Yj1pO2k9aSsxNnwwO2Q9YjtjW2Q+PjJdPWE7Y1soY1tkPj4yXXwwKSs4Pj4yXT0wO2NbKGNbZD4+Ml18MCkrND4+Ml09MDtjW2NbZD4+Ml0+PjJdPTA7Y1soY1tkPj4yXXwwKSsxMj4+Ml09MDtpPWI7cmV0dXJufWZ1bmN0aW9uIEFqKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTA7Zj1pO2k9aSsxNnwwO2I9Zis4fDA7ZD1mKzR8MDtlPWY7Y1tiPj4yXT1hO2NbZD4+Ml09Y1soY1tiPj4yXXwwKSs4Pj4yXTtjWyhjW2I+PjJdfDApKzg+PjJdPTA7S2QoY1soY1tiPj4yXXwwKSsxMj4+Ml18MCk7Y1soY1tiPj4yXXwwKSsxMj4+Ml09MDtjW2NbYj4+Ml0+PjJdPTA7d2hpbGUoMSl7aWYoIShjW2Q+PjJdfDApKWJyZWFrO2NbZT4+Ml09Y1tjW2Q+PjJdPj4yXTtLZChjW2Q+PjJdfDApO2NbZD4+Ml09Y1tlPj4yXX1jWyhjW2I+PjJdfDApKzQ+PjJdPTA7aT1mO3JldHVybn1mdW5jdGlvbiBCaihkLGYsZyxoKXtkPWR8MDtmPWZ8MDtnPWd8MDtoPWh8MDt2YXIgaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MDtzPWk7aT1pKzQ4fDA7aj1zKzQwfDA7dD1zKzM2fDA7az1zKzI4fDA7bj1zKzIwfDA7bD1zKzE2fDA7bT1zKzEyfDA7cT1zKzh8MDtyPXMrNDR8MDtwPXMrNHwwO289cztjW3Q+PjJdPWQ7Y1tzKzMyPj4yXT1mO2Nbaz4+Ml09ZztjW3MrMjQ+PjJdPWg7Y1tuPj4yXT1jW3Q+PjJdO2NbbD4+Ml09Y1tjW24+PjJdPj4yXTtjW20+PjJdPWNbKGNbbj4+Ml18MCkrOD4+Ml07ZD0oY1soY1soY1tsPj4yXXwwKSsxNj4+Ml18MCkrKGNbbT4+Ml08PDQpKzEyPj4yXXwwKSs3OHwwO2JbZD4+MV09ZVtkPj4xXSYtNTtpZihhWyhjW2w+PjJdfDApKzY5Pj4wXXwwKXtQaihjW24+PjJdfDAsY1tjW2s+PjJdPj4yXXwwLDApO2Nbaj4+Ml09MTt0PWNbaj4+Ml18MDtpPXM7cmV0dXJuIHR8MH1pZighKGNbaz4+Ml18MCkpe2Nbaj4+Ml09MDt0PWNbaj4+Ml18MDtpPXM7cmV0dXJuIHR8MH1hOmRvIGlmKCEoY1soY1trPj4yXXwwKSs0Pj4yXXwwKSlQaihjW24+PjJdfDAsY1tjW2s+PjJdPj4yXXwwLDApO2Vsc2V7aWYoemQoY1soY1trPj4yXXwwKSs4Pj4yXXwwLDIwMjUwLDcpfDApe2RvIGlmKGNbY1trPj4yXT4+Ml18MCl7aWYoKGNbKGNbaz4+Ml18MCkrOD4+Ml18MCkhPTA/KGFbY1soY1trPj4yXXwwKSs4Pj4yXT4+MF18MCkhPTA6MClicmVhaztjW28+PjJdPUtqKGNbbD4+Ml18MCxjW2Nbaz4+Ml0+PjJdfDAsY1soY1soY1tsPj4yXXwwKSsxNj4+Ml18MCkrKGNbbT4+Ml08PDQpPj4yXXwwKXwwO2lmKCEoY1tvPj4yXXwwKSlicmVhayBhO2lmKFFpKGNbKGNbaz4+Ml18MCkrND4+Ml18MCwoY1tvPj4yXXwwKSs0NHwwKXwwKWJyZWFrIGE7UGooY1tuPj4yXXwwLGNbY1trPj4yXT4+Ml18MCwyMDI1OCk7YnJlYWsgYX13aGlsZSgwKTtQaihjW24+PjJdfDAsY1tjW2s+PjJdPj4yXXwwLDApO2JyZWFrfWFbcj4+MF09YVsoY1tsPj4yXXwwKSsxNDgrND4+MF18MDthWyhjW2w+PjJdfDApKzE0OCs0Pj4wXT1jW20+PjJdO3Q9UGkoY1soY1trPj4yXXwwKSs0Pj4yXXwwKXwwO2NbKGNbbD4+Ml18MCkrMTQ4Pj4yXT10O2FbKGNbbD4+Ml18MCkrMTQ4KzY+PjBdPTA7Y2YoY1tsPj4yXXwwLGNbKGNbaz4+Ml18MCkrOD4+Ml18MCwtMSxwLDApfDA7Y1txPj4yXT1jWyhjW2w+PjJdfDApKzUyPj4yXTthWyhjW2w+PjJdfDApKzE0OCs0Pj4wXT1hW3I+PjBdfDA7ZG8gaWYoMCE9KGNbcT4+Ml18MCk/KGFbKGNbbD4+Ml18MCkrMTQ4KzY+PjBdfDApPT0wOjApe2NbKGNbbj4+Ml18MCkrMTI+PjJdPWNbcT4+Ml07aWYoKGNbcT4+Ml18MCk9PTcpe21oKGNbbD4+Ml18MCk7YnJlYWt9aWYoKGNbcT4+Ml18MCkhPTk/KGNbcT4+Ml0mMjU1fDApIT02OjApe3I9Y1tuPj4yXXwwO3Q9Y1tjW2s+PjJdPj4yXXwwO1BqKHIsdCxiZihjW2w+PjJdfDApfDApfX13aGlsZSgwKTtYZChjW3A+PjJdfDApfDB9d2hpbGUoMCk7Y1tqPj4yXT0wO3Q9Y1tqPj4yXXwwO2k9cztyZXR1cm4gdHwwfWZ1bmN0aW9uIENqKGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wO2U9aTtpPWkrMTZ8MDtmPWUrOHwwO2g9ZSs0fDA7Zz1lO2NbZj4+Ml09YTtjW2g+PjJdPWI7Y1tnPj4yXT1kO1RmKGNbaD4+Ml18MCxjW2NbZj4+Ml0+PjJdfDApO2Q9cWgoY1toPj4yXXwwLGNbZz4+Ml18MCl8MDtjW2NbZj4+Ml0+PjJdPWQ7aT1lO3JldHVybn1mdW5jdGlvbiBEaihhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTA7ZT1pO2k9aSsxNnwwO2I9ZSs0fDA7ZD1lO2NbZD4+Ml09YTthPWNbZD4+Ml18MDtkbyBpZigoY1tkPj4yXXwwKTwwKWlmKChhfDApPT0tMjE0NzQ4MzY0OCl7Y1tiPj4yXT0yMTQ3NDgzNjQ3O2JyZWFrfWVsc2V7Y1tiPj4yXT0wLShjW2Q+PjJdfDApO2JyZWFrfWVsc2UgY1tiPj4yXT1hO3doaWxlKDApO2k9ZTtyZXR1cm4gY1tiPj4yXXwwfWZ1bmN0aW9uIEVqKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MDtkPWk7aT1pKzE2fDA7Zz1kKzh8MDtlPWQrNHwwO2Y9ZDtjW2c+PjJdPWE7Y1tlPj4yXT1iO2NbZj4+Ml09Y1soY1tnPj4yXXwwKSs0Pj4yXTttZyhjW2c+PjJdfDApO05qKGNbY1tmPj4yXT4+Ml18MCxjW2U+PjJdfDApO2k9ZDtyZXR1cm4gMH1mdW5jdGlvbiBGaihhLGQpe2E9YXwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTA7bz1pO2k9aSs0OHwwO209bztlPW8rMzZ8MDtmPW8rMzJ8MDtsPW8rMjR8MDtnPW8rMjB8MDtuPW8rMTZ8MDtrPW8rMTJ8MDtoPW8rOHwwO2o9bys0fDA7Y1tlPj4yXT1hO2NbZj4+Ml09ZDtjW2s+PjJdPTA7Y1tnPj4yXT1jWyhjWyhjWyhjW2U+PjJdfDApKzE2Pj4yXXwwKSsoY1tmPj4yXTw8NCkrMTI+PjJdfDApKzI0Kzg+PjJdO3doaWxlKDEpe2lmKCEoY1tnPj4yXXwwKSlicmVhaztjW2g+PjJdPWNbKGNbZz4+Ml18MCkrOD4+Ml07YltjWyhjW2g+PjJdfDApKzg+PjJdPj4xXT0wO2NbZz4+Ml09Y1tjW2c+PjJdPj4yXX1jW2w+PjJdPWNbZT4+Ml07Y1tsKzQ+PjJdPWNbKGNbKGNbZT4+Ml18MCkrMTY+PjJdfDApKyhjW2Y+PjJdPDw0KT4+Ml07ZG8gaWYodGkoY1tlPj4yXXwwLDIwMTYzLGNbbCs0Pj4yXXwwKXwwKXtoPWNbZT4+Ml18MDtjW20+PjJdPWNbbCs0Pj4yXTtjW24+PjJdPUdoKGgsMjAxNzYsbSl8MDtpZighKGNbbj4+Ml18MCkpe2Nbaz4+Ml09NzticmVha31lbHNle2Nbaz4+Ml09JGUoY1tlPj4yXXwwLGNbbj4+Ml18MCwxNDEsbCwwKXwwO1RmKGNbZT4+Ml18MCxjW24+PjJdfDApO2JyZWFrfX13aGlsZSgwKTtjW2c+PjJdPWNbKGNbKGNbKGNbZT4+Ml18MCkrMTY+PjJdfDApKyhjW2Y+PjJdPDw0KSsxMj4+Ml18MCkrMjQrOD4+Ml07d2hpbGUoMSl7aWYoIShjW2c+PjJdfDApKWJyZWFrO2Nbaj4+Ml09Y1soY1tnPj4yXXwwKSs4Pj4yXTtpZighKGJbY1soY1tqPj4yXXwwKSs4Pj4yXT4+MV18MCkpSWooY1tqPj4yXXwwKTtjW2c+PjJdPWNbY1tnPj4yXT4+Ml19aWYoKGNbaz4+Ml18MCkhPTcpe249Y1trPj4yXXwwO2k9bztyZXR1cm4gbnwwfW1oKGNbZT4+Ml18MCk7bj1jW2s+PjJdfDA7aT1vO3JldHVybiBufDB9ZnVuY3Rpb24gR2ooYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wO2U9aTtpPWkrMTZ8MDtiPWUrNHwwO2Q9ZTtjW2I+PjJdPWE7bWcoY1tiPj4yXXwwKTtjW2Q+PjJdPU5nKGNbYj4+Ml18MCwwKXwwO2lmKGNbZD4+Ml18MCl7ZD1jW2Q+PjJdfDA7aT1lO3JldHVybiBkfDB9Y1tkPj4yXT1NZyhjW2I+PjJdfDAsMCl8MDtkPWNbZD4+Ml18MDtpPWU7cmV0dXJuIGR8MH1mdW5jdGlvbiBIaihkLGYsZyxoKXtkPWR8MDtmPWZ8MDtnPWd8MDtoPWh8MDt2YXIgaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MDtzPWk7aT1pKzExMnwwO2o9cys5NnwwO3Q9cys5MnwwO2s9cys4NHwwO3A9cys3NnwwO289cys3MnwwO3E9cys2OHwwO3I9cys2NHwwO2w9cys2MHwwO249cys1NnwwO209cztjW3Q+PjJdPWQ7Y1tzKzg4Pj4yXT1mO2Nbaz4+Ml09ZztjW3MrODA+PjJdPWg7Y1twPj4yXT1jW3Q+PjJdO2lmKCgoY1trPj4yXXwwKSE9MD8oY1tjW2s+PjJdPj4yXXwwKSE9MDowKT8oY1soY1trPj4yXXwwKSs4Pj4yXXwwKSE9MDowKXtjW3E+PjJdPXRpKGNbY1twPj4yXT4+Ml18MCxjW2Nbaz4+Ml0+PjJdfDAsY1soY1twPj4yXXwwKSs0Pj4yXXwwKXwwO2lmKCEoY1txPj4yXXwwKSl7Y1tqPj4yXT0wO3Q9Y1tqPj4yXXwwO2k9cztyZXR1cm4gdHwwfWRvIGlmKGNbKGNbaz4+Ml18MCkrND4+Ml18MClpZighKFRkKGNbY1trPj4yXT4+Ml18MCxjWyhjW2s+PjJdfDApKzQ+PjJdfDApfDApKXtjW28+PjJdPUpqKGNbcT4+Ml18MCl8MDticmVha31lbHNle2Nbbz4+Ml09S2ooY1tjW3A+PjJdPj4yXXwwLGNbKGNbaz4+Ml18MCkrND4+Ml18MCxjWyhjW3A+PjJdfDApKzQ+PjJdfDApfDA7YnJlYWt9ZWxzZSBjW28+PjJdPTA7d2hpbGUoMCk7Y1tyPj4yXT1jWyhjW2s+PjJdfDApKzg+PjJdO2lmKGNbbz4+Ml18MCl7Y1tsPj4yXT0wO2Nbbj4+Ml09KGVbKGNbbz4+Ml18MCkrNTA+PjFdfDApKzE7dD0oY1tvPj4yXXwwKSs1NXwwO2FbdD4+MF09YVt0Pj4wXSYtNTtMaihjW3I+PjJdfDAsY1tuPj4yXXwwLGNbbD4+Ml18MCxjWyhjW28+PjJdfDApKzg+PjJdfDAsY1tvPj4yXXwwKTtpZighKGNbKGNbbz4+Ml18MCkrMzY+PjJdfDApKWJbKGNbcT4+Ml18MCkrMzg+PjFdPWJbY1soY1tvPj4yXXwwKSs4Pj4yXT4+MV18MH1lbHNle2JbbSs0OD4+MV09YlsoY1txPj4yXXwwKSs0MD4+MV18MDtMaihjW3I+PjJdfDAsMSwwLChjW3E+PjJdfDApKzM4fDAsbSk7YlsoY1txPj4yXXwwKSs0MD4+MV09YlttKzQ4Pj4xXXwwfWNbaj4+Ml09MDt0PWNbaj4+Ml18MDtpPXM7cmV0dXJuIHR8MH1jW2o+PjJdPTA7dD1jW2o+PjJdfDA7aT1zO3JldHVybiB0fDB9ZnVuY3Rpb24gSWooYSl7YT1hfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wO2w9aTtpPWkrMzJ8MDtmPWwrMTJ8MDtoPWwrMTZ8MDtnPWwrOHwwO2s9bCs0fDA7aj1sO2NbZj4+Ml09YTtiW2g+PjFdPWJbNDg4Nl18MDtiW2grMj4+MV09Yls0ODg3XXwwO2JbaCs0Pj4xXT1iWzQ4ODhdfDA7YltoKzY+PjFdPWJbNDg4OV18MDtiW2grOD4+MV09Yls0ODkwXXwwO2NbZz4+Ml09Y1soY1tmPj4yXXwwKSs4Pj4yXTtpZig1PChlWyhjW2Y+PjJdfDApKzUwPj4xXXwwKSlhPTU7ZWxzZSBhPWVbKGNbZj4+Ml18MCkrNTA+PjFdfDA7Y1trPj4yXT1hO2JbY1tnPj4yXT4+MV09YlsoY1soY1tmPj4yXXwwKSsxMj4+Ml18MCkrMzg+PjFdfDA7aWYoY1soY1tmPj4yXXwwKSszNj4+Ml18MCl7YT1jW2c+PjJdfDA7YlthPj4xXT0oYlthPj4xXXwwKS0xMH1pZigoYltjW2c+PjJdPj4xXXwwKTwzMyliW2NbZz4+Ml0+PjFdPTMzO1RSKChjW2c+PjJdfDApKzJ8MCxofDAsY1trPj4yXTw8MXwwKXwwO2Nbaj4+Ml09KGNbaz4+Ml18MCkrMTt3aGlsZSgxKXtpZigoY1tqPj4yXXwwKT4oZVsoY1tmPj4yXXwwKSs1MD4+MV18MCkpYnJlYWs7YlsoY1tnPj4yXXwwKSsoY1tqPj4yXTw8MSk+PjFdPTIzO2Nbaj4+Ml09KGNbaj4+Ml18MCkrMX1pZighKGRbKGNbZj4+Ml18MCkrNTQ+PjBdfDApKXtpPWw7cmV0dXJufWJbKGNbZz4+Ml18MCkrKGVbKGNbZj4+Ml18MCkrNTA+PjFdPDwxKT4+MV09MDtpPWw7cmV0dXJufWZ1bmN0aW9uIEpqKGIpe2I9YnwwO3ZhciBkPTAsZT0wLGY9MDtlPWk7aT1pKzE2fDA7Zj1lKzR8MDtkPWU7Y1tmPj4yXT1iO2NbZD4+Ml09Y1soY1tmPj4yXXwwKSs4Pj4yXTt3aGlsZSgxKXtpZighKGNbZD4+Ml18MCkpe2I9NTticmVha31pZighKChhWyhjW2Q+PjJdfDApKzU1Pj4wXSYzfDApPT0yXjEpKXtiPTU7YnJlYWt9Y1tkPj4yXT1jWyhjW2Q+PjJdfDApKzIwPj4yXX1pZigoYnwwKT09NSl7aT1lO3JldHVybiBjW2Q+PjJdfDB9cmV0dXJuIDB9ZnVuY3Rpb24gS2ooYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MDtuPWk7aT1pKzMyfDA7ZT1uKzI0fDA7Zj1uKzIwfDA7Zz1uKzE2fDA7az1uKzEyfDA7aD1uKzh8MDtqPW4rNHwwO2w9bjtjW2U+PjJdPWE7Y1tmPj4yXT1iO2NbZz4+Ml09ZDtjW2s+PjJdPTA7Y1toPj4yXT0wO3doaWxlKDEpe2lmKChjW2g+PjJdfDApPj0oY1soY1tlPj4yXXwwKSsyMD4+Ml18MCkpe209NzticmVha31iPWNbaD4+Ml18MDtjW2o+PjJdPShjW2g+PjJdfDApPDI/Yl4xOmI7Y1tsPj4yXT1jWyhjWyhjW2U+PjJdfDApKzE2Pj4yXXwwKSsoY1tqPj4yXTw8NCkrMTI+PjJdO2lmKCEoKGNbZz4+Ml18MCkhPTA/KGlnKGNbZz4+Ml18MCxjWyhjWyhjW2U+PjJdfDApKzE2Pj4yXXwwKSsoY1tqPj4yXTw8NCk+PjJdfDApfDApIT0wOjApKW09NTtpZigobXwwKT09NT8obT0wLGNbaz4+Ml09c2ooKGNbbD4+Ml18MCkrMjR8MCxjW2Y+PjJdfDApfDAsKGNbaz4+Ml18MCkhPTApOjApe209NzticmVha31jW2g+PjJdPShjW2g+PjJdfDApKzF9aWYoKG18MCk9PTcpe2k9bjtyZXR1cm4gY1trPj4yXXwwfXJldHVybiAwfWZ1bmN0aW9uIExqKGQsZSxmLGcsaCl7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7dmFyIGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wO3E9aTtpPWkrNDh8MDtyPXErMzJ8MDtqPXErMjh8MDtrPXErMjB8MDtvPXErMTZ8MDtwPXErMTJ8MDtsPXErOHwwO209cSs0fDA7bj1xO2Nbcj4+Ml09ZDtjW2o+PjJdPWU7Y1txKzI0Pj4yXT1mO2Nbaz4+Ml09ZztjW28+PjJdPWg7Y1twPj4yXT1jW3I+PjJdO2NbbT4+Ml09MDt3aGlsZSgxKXtpZighKGFbY1twPj4yXT4+MF18MCkpYnJlYWs7aWYoKGNbbT4+Ml18MCk+PShjW2o+PjJdfDApKWJyZWFrO2Nbbj4+Ml09MDt3aGlsZSgxKXtyPWFbY1twPj4yXT4+MF18MDtjW2w+PjJdPXI7aWYoISgocnwwKT49NDg/KGNbbD4+Ml18MCk8PTU3OjApKWJyZWFrO2Nbbj4+Ml09KChjW24+PjJdfDApKjEwfDApKyhjW2w+PjJdfDApLTQ4O2NbcD4+Ml09KGNbcD4+Ml18MCkrMX1yPU1qKGNbbj4+Ml18MCwwKXwwO2JbKGNbaz4+Ml18MCkrKGNbbT4+Ml08PDEpPj4xXT1yO2lmKChhW2NbcD4+Ml0+PjBdfDApPT0zMiljW3A+PjJdPShjW3A+PjJdfDApKzE7Y1ttPj4yXT0oY1ttPj4yXXwwKSsxfXI9KGNbbz4+Ml18MCkrNTV8MDthW3I+PjBdPWFbcj4+MF0mLTU7cj0oY1tvPj4yXXwwKSs1NXwwO2Fbcj4+MF09YVtyPj4wXSYtNjU7YTp3aGlsZSgxKXtpZighKGFbY1twPj4yXT4+MF18MCkpYnJlYWs7ZG8gaWYoWmUoMjAyMTcsY1twPj4yXXwwKXwwKXtyPShaZSgyMDIyOCxjW3A+PjJdfDApfDApPT0wO2o9Y1twPj4yXXwwO2lmKHIpe3I9UGkoaiszfDApfDA7cj1NaihyLCgocnwwKTwwKTw8MzE+PjMxKXwwO2JbKGNbbz4+Ml18MCkrNDg+PjFdPXI7YnJlYWt9aWYoIShaZSgyMDIzOCxqKXwwKSl7cj0oY1tvPj4yXXwwKSs1NXwwO2Fbcj4+MF09YVtyPj4wXSYtNjV8NjR9fWVsc2V7cj0oY1tvPj4yXXwwKSs1NXwwO2Fbcj4+MF09YVtyPj4wXSYtNXw0fXdoaWxlKDApO3doaWxlKDEpe2lmKCEoYVtjW3A+PjJdPj4wXXwwKSlicmVhaztpZigoYVtjW3A+PjJdPj4wXXwwKT09MzIpYnJlYWs7Y1twPj4yXT0oY1twPj4yXXwwKSsxfXdoaWxlKDEpe2lmKChhW2NbcD4+Ml0+PjBdfDApIT0zMiljb250aW51ZSBhO2NbcD4+Ml09KGNbcD4+Ml18MCkrMX19aT1xO3JldHVybn1mdW5jdGlvbiBNaihhLGQpe2E9YXwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wO2g9aTtpPWkrMTZ8MDtlPWgrMTB8MDtmPWg7Zz1oKzh8MDtqPWY7Y1tqPj4yXT1hO2Nbais0Pj4yXT1kO2JbZz4+MV09NDA7ZD1mO2E9Y1tkKzQ+PjJdfDA7YTpkbyBpZihhPj4+MDwwfChhfDApPT0wJihjW2Q+PjJdfDApPj4+MDw4KXtqPWY7ZD1jW2orND4+Ml18MDtpZihkPj4+MDwwfChkfDApPT0wJihjW2o+PjJdfDApPj4+MDwyKXtiW2U+PjFdPTA7aj1iW2U+PjFdfDA7aT1oO3JldHVybiBqfDB9ZWxzZSB3aGlsZSgxKXtqPWY7ZD1jW2orND4+Ml18MDtpZighKGQ+Pj4wPDB8KGR8MCk9PTAmKGNbaj4+Ml18MCk+Pj4wPDgpKWJyZWFrIGE7YltnPj4xXT0oYltnPj4xXXwwKS0xMDtkPWY7ZD1XUihjW2Q+PjJdfDAsY1tkKzQ+PjJdfDAsMSl8MDtqPWY7Y1tqPj4yXT1kO2Nbais0Pj4yXT1DfX1lbHNle3doaWxlKDEpe2o9ZjtkPWNbais0Pj4yXXwwO2lmKCEoZD4+PjA+MHwoZHwwKT09MCYoY1tqPj4yXXwwKT4+PjA+MjU1KSlicmVhaztiW2c+PjFdPShiW2c+PjFdfDApKzQwO2Q9ZjtkPVNSKGNbZD4+Ml18MCxjW2QrND4+Ml18MCw0KXwwO2o9ZjtjW2o+PjJdPWQ7Y1tqKzQ+PjJdPUN9d2hpbGUoMSl7aj1mO2Q9Y1tqKzQ+PjJdfDA7aWYoIShkPj4+MD4wfChkfDApPT0wJihjW2o+PjJdfDApPj4+MD4xNSkpYnJlYWsgYTtiW2c+PjFdPShiW2c+PjFdfDApKzEwO2Q9ZjtkPVNSKGNbZD4+Ml18MCxjW2QrND4+Ml18MCwxKXwwO2o9ZjtjW2o+PjJdPWQ7Y1tqKzQ+PjJdPUN9fXdoaWxlKDApO2JbZT4+MV09KGJbOTc4MisoKGNbZj4+Ml0mNyk8PDEpPj4xXXwwKSsoYltnPj4xXXwwKS0xMDtqPWJbZT4+MV18MDtpPWg7cmV0dXJuIGp8MH1mdW5jdGlvbiBOaihhLGIpe2E9YXwwO2I9YnwwO3ZhciBkPTAsZT0wLGY9MDtkPWk7aT1pKzE2fDA7Zj1kKzR8MDtlPWQ7Y1tmPj4yXT1hO2NbZT4+Ml09YjtPaihjWyhjW2Y+PjJdfDApKzIxMj4+Ml18MCxjW2U+PjJdfDApO2k9ZDtyZXR1cm59ZnVuY3Rpb24gT2ooYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTA7ZD1pO2k9aSsxNnwwO2Y9ZCs0fDA7ZT1kO2NbZj4+Ml09YTtjW2U+PjJdPWI7Y1soY1tmPj4yXXwwKSsxNj4+Ml09Y1tlPj4yXTtlPWNbMzRdfDA7Yj1jWyhjW2Y+PjJdfDApKzQ0Pj4yXXwwO2E9Y2ooY1tmPj4yXXwwKXwwO1JiW2UmMjU1XShiLGEpO2k9ZDtyZXR1cm59ZnVuY3Rpb24gUGooYixlLGYpe2I9YnwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wO289aTtpPWkrNDh8MDttPW8rOHwwO2w9bztnPW8rMzJ8MDtoPW8rMjh8MDtqPW8rMjR8MDtrPW8rMjB8MDtuPW8rMTZ8MDtjW2c+PjJdPWI7Y1toPj4yXT1lO2Nbaj4+Ml09ZjtjW2s+PjJdPWNbY1tnPj4yXT4+Ml07aWYoKGFbKGNbaz4+Ml18MCkrNjk+PjBdfDApPT0wPyhjWyhjW2s+PjJdfDApKzI0Pj4yXSY2NTUzNnwwKT09MDowKXtpZighKGNbaD4+Ml18MCkpY1toPj4yXT0yMDI3NTtlPWNbaz4+Ml18MDtjW2w+PjJdPWNbaD4+Ml07Y1tuPj4yXT1HaChlLDIwMjc3LGwpfDA7aWYoY1tqPj4yXXwwKXtlPWNbaz4+Ml18MDtmPWNbaj4+Ml18MDtjW20+PjJdPWNbbj4+Ml07Y1ttKzQ+PjJdPWY7Y1tuPj4yXT1HaChlLDIwMzA4LG0pfDB9VGYoY1trPj4yXXwwLGNbY1soY1tnPj4yXXwwKSs0Pj4yXT4+Ml18MCk7Y1tjWyhjW2c+PjJdfDApKzQ+PjJdPj4yXT1jW24+PjJdfWlmKGRbKGNbaz4+Ml18MCkrNjk+PjBdfDApe2Y9NztlPWNbZz4+Ml18MDtlPWUrMTJ8MDtjW2U+PjJdPWY7aT1vO3JldHVybn1mPVFqKDExMzU1NCl8MDtlPWNbZz4+Ml18MDtlPWUrMTJ8MDtjW2U+PjJdPWY7aT1vO3JldHVybn1mdW5jdGlvbiBRaihhKXthPWF8MDt2YXIgYj0wLGQ9MDtiPWk7aT1pKzE2fDA7ZD1iO2NbZD4+Ml09YTthPVJqKDExLGNbZD4+Ml18MCwyMDMxNil8MDtpPWI7cmV0dXJuIGF8MH1mdW5jdGlvbiBSaihhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTA7Zj1pO2k9aSszMnwwO2c9ZjtlPWYrMjB8MDtqPWYrMTZ8MDtoPWYrMTJ8MDtjW2U+PjJdPWE7Y1tqPj4yXT1iO2NbaD4+Ml09ZDtkPWNbZT4+Ml18MDtoPWNbaD4+Ml18MDthPWNbaj4+Ml18MDtiPShrZigpfDApKzIwfDA7Y1tnPj4yXT1oO2NbZys0Pj4yXT1hO2NbZys4Pj4yXT1iO1JkKGQsMjAzMzYsZyk7aT1mO3JldHVybiBjW2U+PjJdfDB9ZnVuY3Rpb24gU2ooYixlLGYsZyl7Yj1ifDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7dmFyIGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wO209aTtpPWkrMzJ8MDtuPW0rMTJ8MDtoPW0rMTZ8MDtqPW0rOHwwO2s9bSs0fDA7bD1tO2Nbbj4+Ml09YjthW2g+PjBdPWU7Y1tqPj4yXT1mO2Nbaz4+Ml09ZztnPWNbbj4+Ml18MDtpZihjW2o+PjJdfDApY1tsPj4yXT1UaihnLGNbaj4+Ml18MCxjW2s+PjJdfDApfDA7ZWxzZSBjW2w+PjJdPWNbZys4Pj4yXTtpZighKGNbbD4+Ml18MCkpe249Y1tsPj4yXXwwO2k9bTtyZXR1cm4gbnwwfWNbbD4+Ml09KGNbbD4+Ml18MCkrKCgoZFtoPj4wXXwwKS0xfDApKjIwfDApO249Y1tsPj4yXXwwO2k9bTtyZXR1cm4gbnwwfWZ1bmN0aW9uIFRqKGIsZCxlKXtiPWJ8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wO2w9aTtpPWkrMzJ8MDtmPWwrMjB8MDtnPWwrMTZ8MDttPWwrMTJ8MDtqPWwrOHwwO2g9bCs0fDA7az1sO2NbZj4+Ml09YjtjW2c+PjJdPWQ7Y1ttPj4yXT1lO2Nbaj4+Ml09c2ooKGNbZj4+Ml18MCkrMzY0fDAsY1tnPj4yXXwwKXwwO2lmKCEoMD09KGNbaj4+Ml18MCkmKGNbbT4+Ml18MCkhPTApKXttPWNbaj4+Ml18MDtpPWw7cmV0dXJuIG18MH1jW2g+PjJdPUpmKGNbZz4+Ml18MCl8MDtjW2o+PjJdPXNoKGNbZj4+Ml18MCw2MCsoY1toPj4yXXwwKSsxfDAsMCl8MDtpZighKGNbaj4+Ml18MCkpe209Y1tqPj4yXXwwO2k9bDtyZXR1cm4gbXwwfWNbaz4+Ml09MDtjW2Nbaj4+Ml0+PjJdPShjW2o+PjJdfDApKzYwO2FbKGNbaj4+Ml18MCkrND4+MF09MTtjWyhjW2o+PjJdfDApKzIwPj4yXT0oY1tqPj4yXXwwKSs2MDthWyhjW2o+PjJdfDApKzIwKzQ+PjBdPTI7Y1soY1tqPj4yXXwwKSs0MD4+Ml09KGNbaj4+Ml18MCkrNjA7YVsoY1tqPj4yXXwwKSs0MCs0Pj4wXT0zO1RSKGNbY1tqPj4yXT4+Ml18MCxjW2c+PjJdfDAsY1toPj4yXXwwKXwwO2FbKGNbY1tqPj4yXT4+Ml18MCkrKGNbaD4+Ml18MCk+PjBdPTA7Y1trPj4yXT1VaigoY1tmPj4yXXwwKSszNjR8MCxjW2Nbaj4+Ml0+PjJdfDAsY1tqPj4yXXwwKXwwO2lmKCEoY1trPj4yXXwwKSl7bT1jW2o+PjJdfDA7aT1sO3JldHVybiBtfDB9bWgoY1tmPj4yXXwwKTtUZihjW2Y+PjJdfDAsY1trPj4yXXwwKTtjW2o+PjJdPTA7bT1jW2o+PjJdfDA7aT1sO3JldHVybiBtfDB9ZnVuY3Rpb24gVWooYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MDtuPWk7aT1pKzMyfDA7az1uKzI4fDA7bD1uKzI0fDA7ZT1uKzIwfDA7Zj1uKzE2fDA7aD1uKzEyfDA7Zz1uKzh8MDttPW4rNHwwO2o9bjtjW2w+PjJdPWE7Y1tlPj4yXT1iO2NbZj4+Ml09ZDtjW2c+PjJdPXRqKGNbbD4+Ml18MCxjW2U+PjJdfDAsaCl8MDtpZihjW2c+PjJdfDApe2Nbaj4+Ml09Y1soY1tnPj4yXXwwKSs4Pj4yXTtpZighKGNbZj4+Ml18MCkpVmooY1tsPj4yXXwwLGNbZz4+Ml18MCxjW2g+PjJdfDApO2Vsc2V7Y1soY1tnPj4yXXwwKSs4Pj4yXT1jW2Y+PjJdO2NbKGNbZz4+Ml18MCkrMTI+PjJdPWNbZT4+Ml19Y1trPj4yXT1jW2o+PjJdO209Y1trPj4yXXwwO2k9bjtyZXR1cm4gbXwwfWlmKCEoY1tmPj4yXXwwKSl7Y1trPj4yXT0wO209Y1trPj4yXXwwO2k9bjtyZXR1cm4gbXwwfWNbbT4+Ml09JGYoMTYsMCl8MDtpZighKGNbbT4+Ml18MCkpe2Nbaz4+Ml09Y1tmPj4yXTttPWNbaz4+Ml18MDtpPW47cmV0dXJuIG18MH1jWyhjW20+PjJdfDApKzEyPj4yXT1jW2U+PjJdO2NbKGNbbT4+Ml18MCkrOD4+Ml09Y1tmPj4yXTtiPShjW2w+PjJdfDApKzR8MDtjW2I+PjJdPShjW2I+PjJdfDApKzE7aWYoKChjWyhjW2w+PjJdfDApKzQ+PjJdfDApPj4+MD49MTA/KGNbKGNbbD4+Ml18MCkrND4+Ml18MCk+Pj4wPmNbY1tsPj4yXT4+Ml08PDE+Pj4wOjApPyhXaihjW2w+PjJdfDAsY1soY1tsPj4yXXwwKSs0Pj4yXTw8MSl8MCkhPTA6MCl7Yj11aihjW2U+PjJdfDApfDA7Y1toPj4yXT0oYj4+PjApJSgoY1tjW2w+PjJdPj4yXXwwKT4+PjApfDB9aWYoY1soY1tsPj4yXXwwKSsxMj4+Ml18MCllPShjWyhjW2w+PjJdfDApKzEyPj4yXXwwKSsoY1toPj4yXTw8Myl8MDtlbHNlIGU9MDtYaihjW2w+PjJdfDAsZSxjW20+PjJdfDApO2Nbaz4+Ml09MDttPWNbaz4+Ml18MDtpPW47cmV0dXJuIG18MH1mdW5jdGlvbiBWaihhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTA7aj1pO2k9aSsxNnwwO2U9aisxMnwwO2Y9ais4fDA7Zz1qKzR8MDtoPWo7Y1tlPj4yXT1hO2NbZj4+Ml09YjtjW2c+PjJdPWQ7Yj1jW2NbZj4+Ml0+PjJdfDA7aWYoY1soY1tmPj4yXXwwKSs0Pj4yXXwwKWNbY1soY1tmPj4yXXwwKSs0Pj4yXT4+Ml09YjtlbHNlIGNbKGNbZT4+Ml18MCkrOD4+Ml09YjtpZihjW2NbZj4+Ml0+PjJdfDApY1soY1tjW2Y+PjJdPj4yXXwwKSs0Pj4yXT1jWyhjW2Y+PjJdfDApKzQ+PjJdO2lmKGNbKGNbZT4+Ml18MCkrMTI+PjJdfDApe2NbaD4+Ml09KGNbKGNbZT4+Ml18MCkrMTI+PjJdfDApKyhjW2c+PjJdPDwzKTtpZigoY1soY1toPj4yXXwwKSs0Pj4yXXwwKT09KGNbZj4+Ml18MCkpY1soY1toPj4yXXwwKSs0Pj4yXT1jW2NbZj4+Ml0+PjJdO2g9Y1toPj4yXXwwO2NbaD4+Ml09KGNbaD4+Ml18MCkrLTF9S2QoY1tmPj4yXXwwKTtoPShjW2U+PjJdfDApKzR8MDtjW2g+PjJdPShjW2g+PjJdfDApKy0xO2lmKGNbKGNbZT4+Ml18MCkrND4+Ml18MCl7aT1qO3JldHVybn1BaihjW2U+PjJdfDApO2k9ajtyZXR1cm59ZnVuY3Rpb24gV2ooYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MDtsPWk7aT1pKzMyfDA7ZD1sKzI0fDA7ZT1sKzIwfDA7Zj1sKzE2fDA7aj1sKzEyfDA7Zz1sKzh8MDtrPWwrNHwwO2g9bDtjW2U+PjJdPWE7Y1tmPj4yXT1iO2NbZj4+Ml09Y1tmPj4yXTw8Mz4+PjA+MTAyND8xMjg6YjtpZigoY1tmPj4yXXwwKT09KGNbY1tlPj4yXT4+Ml18MCkpe2NbZD4+Ml09MDthPWNbZD4+Ml18MDtpPWw7cmV0dXJuIGF8MH1ZaigpO2Nbaj4+Ml09JGYoY1tmPj4yXTw8MywwKXwwO1pqKCk7aWYoIShjW2o+PjJdfDApKXtjW2Q+PjJdPTA7YT1jW2Q+PjJdfDA7aT1sO3JldHVybiBhfDB9S2QoY1soY1tlPj4yXXwwKSsxMj4+Ml18MCk7Y1soY1tlPj4yXXwwKSsxMj4+Ml09Y1tqPj4yXTthPSgoYWcoY1tqPj4yXXwwKXwwKT4+PjApLzh8MDtjW2Y+PjJdPWE7Y1tjW2U+PjJdPj4yXT1hO1ZSKGNbaj4+Ml18MCwwLGNbZj4+Ml08PDN8MCl8MDtjW2c+PjJdPWNbKGNbZT4+Ml18MCkrOD4+Ml07Y1soY1tlPj4yXXwwKSs4Pj4yXT0wO3doaWxlKDEpe2lmKCEoY1tnPj4yXXwwKSlicmVhazthPXVqKGNbKGNbZz4+Ml18MCkrMTI+PjJdfDApfDA7Y1toPj4yXT0oYT4+PjApJSgoY1tmPj4yXXwwKT4+PjApfDA7Y1trPj4yXT1jW2NbZz4+Ml0+PjJdO1hqKGNbZT4+Ml18MCwoY1tqPj4yXXwwKSsoY1toPj4yXTw8Myl8MCxjW2c+PjJdfDApO2NbZz4+Ml09Y1trPj4yXX1jW2Q+PjJdPTE7YT1jW2Q+PjJdfDA7aT1sO3JldHVybiBhfDB9ZnVuY3Rpb24gWGooYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wO2o9aTtpPWkrMTZ8MDtmPWorMTJ8MDtlPWorOHwwO2c9ais0fDA7aD1qO2NbZj4+Ml09YTtjW2U+PjJdPWI7Y1tnPj4yXT1kO2lmKGNbZT4+Ml18MCl7aWYoY1tjW2U+PjJdPj4yXXwwKWI9Y1soY1tlPj4yXXwwKSs0Pj4yXXwwO2Vsc2UgYj0wO2NbaD4+Ml09YjtkPWNbZT4+Ml18MDtjW2Q+PjJdPShjW2Q+PjJdfDApKzE7Y1soY1tlPj4yXXwwKSs0Pj4yXT1jW2c+PjJdfWVsc2UgY1toPj4yXT0wO2lmKCEoY1toPj4yXXwwKSl7Y1tjW2c+PjJdPj4yXT1jWyhjW2Y+PjJdfDApKzg+PjJdO2lmKGNbKGNbZj4+Ml18MCkrOD4+Ml18MCljWyhjWyhjW2Y+PjJdfDApKzg+PjJdfDApKzQ+PjJdPWNbZz4+Ml07Y1soY1tnPj4yXXwwKSs0Pj4yXT0wO2NbKGNbZj4+Ml18MCkrOD4+Ml09Y1tnPj4yXTtpPWo7cmV0dXJufWNbY1tnPj4yXT4+Ml09Y1toPj4yXTtjWyhjW2c+PjJdfDApKzQ+PjJdPWNbKGNbaD4+Ml18MCkrND4+Ml07Yj1jW2c+PjJdfDA7aWYoY1soY1toPj4yXXwwKSs0Pj4yXXwwKWNbY1soY1toPj4yXXwwKSs0Pj4yXT4+Ml09YjtlbHNlIGNbKGNbZj4+Ml18MCkrOD4+Ml09YjtjWyhjW2g+PjJdfDApKzQ+PjJdPWNbZz4+Ml07aT1qO3JldHVybn1mdW5jdGlvbiBZaigpe2lmKCEoY1s0MzJdfDApKXJldHVybjtWYltjWzE3Mjg+PjJdJjI1NV0oKTtyZXR1cm59ZnVuY3Rpb24gWmooKXtpZighKGNbNDMzXXwwKSlyZXR1cm47VmJbY1sxNzMyPj4yXSYyNTVdKCk7cmV0dXJufWZ1bmN0aW9uIF9qKGEsYixkLGUsZil7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTA7bz1pO2k9aSszMnwwO2c9bysyNHwwO2g9bysyMHwwO2o9bysxNnwwO2s9bysxMnwwO2w9bys4fDA7bj1vKzR8MDttPW87Y1tnPj4yXT1hO2NbaD4+Ml09YjtjW2o+PjJdPWQ7Y1trPj4yXT1lO2NbbD4+Ml09ZjtjW20+PjJdPShjW2g+PjJdfDApPChjW2s+PjJdfDApP2NbaD4+Ml18MDpjW2s+PjJdfDA7Y1tuPj4yXT1lUihjW2o+PjJdfDAsY1tsPj4yXXwwLGNbbT4+Ml18MCl8MDtpZihjW24+PjJdfDApe249Y1tuPj4yXXwwO2k9bztyZXR1cm4gbnwwfWlmKCgoY1tnPj4yXXwwKSE9MD8oZHUoKGNbaj4+Ml18MCkrKGNbbT4+Ml18MCl8MCwoY1toPj4yXXwwKS0oY1ttPj4yXXwwKXwwKXwwKSE9MDowKT8oZHUoKGNbbD4+Ml18MCkrKGNbbT4+Ml18MCl8MCwoY1trPj4yXXwwKS0oY1ttPj4yXXwwKXwwKXwwKSE9MDowKXtuPWNbbj4+Ml18MDtpPW87cmV0dXJuIG58MH1jW24+PjJdPShjW2g+PjJdfDApLShjW2s+PjJdfDApO249Y1tuPj4yXXwwO2k9bztyZXR1cm4gbnwwfWZ1bmN0aW9uICRqKGEsYixkLGUsZil7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wO2s9aTtpPWkrMzJ8MDtnPWsrMTZ8MDttPWsrMTJ8MDtoPWsrOHwwO2w9ays0fDA7aj1rO2NbaysyMD4+Ml09YTtjW2c+PjJdPWI7Y1ttPj4yXT1kO2NbaD4+Ml09ZTtjW2w+PjJdPWY7Y1tqPj4yXT16ZChjW20+PjJdfDAsY1tsPj4yXXwwLChjW2c+PjJdfDApPChjW2g+PjJdfDApP2NbZz4+Ml18MDpjW2g+PjJdfDApfDA7aWYoY1tqPj4yXXwwKXttPWNbaj4+Ml18MDtpPWs7cmV0dXJuIG18MH1jW2o+PjJdPShjW2c+PjJdfDApLShjW2g+PjJdfDApO209Y1tqPj4yXXwwO2k9aztyZXR1cm4gbXwwfWZ1bmN0aW9uIGFrKGIsZSxmLGcsaCxqKXtiPWJ8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDt2YXIgaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsRD0wLEU9MCxGPTAsRz0wLEg9MCxJPTAsSj0wLEs9MCxMPTAsTT0wLE49MCxPPTAsUD0wLFE9MCxSPTAsUz0wLFQ9MDtTPWk7aT1pKzE2MHwwO0s9UyszMnwwO0o9UysyNHwwO0k9UysxNnwwO0g9Uys4fDA7bT1TKzE0MHwwO1Q9UysxMzZ8MDtuPVMrMTMyfDA7bz1TKzEyOHwwO3A9UysxMjR8MDtxPVMrMTIwfDA7cj1TKzExNnwwO0c9UysxMTJ8MDt2PVMrMTA4fDA7UT1TKzEwNHwwO009UysxMDB8MDt0PVMrMTQ0fDA7bD1TKzk2fDA7Tz1TKzkyfDA7dT1TKzg4fDA7eD1TKzg0fDA7eT1TKzgwfDA7az1TO0Y9Uys3NnwwO0Q9Uys3MnwwO1A9Uys2OHwwO0U9Uys2NHwwO3M9Uys2MHwwO049Uys1NnwwO0E9Uys1MnwwO3o9Uys0OHwwO3c9Uys0NHwwO0I9Uys0MHwwO0w9UyszNnwwO2NbVD4+Ml09YjtjW24+PjJdPWU7Y1tvPj4yXT1mO2NbcD4+Ml09ZztjW3E+PjJdPWg7Y1tyPj4yXT1qO2NbRz4+Ml09MDtjW3Y+PjJdPWNbY1tvPj4yXT4+Ml07Y1tRPj4yXT1jW1Q+PjJdO2NbbD4+Ml09SmYoY1tuPj4yXXwwKXwwO2E6ZG8gaWYoKChjW3Y+PjJdJjY0fDApIT0wfChjWzVdfDApIT0wKSYoY1tsPj4yXXwwKT49NT8oZVIoY1tuPj4yXXwwLDI2MDIzLDUpfDApPT0wOjApe2NbeT4+Ml09MDtlPShjW2w+PjJdfDApKzJ8MDtUPWs7Y1tUPj4yXT1lO2NbVCs0Pj4yXT0oKGV8MCk8MCk8PDMxPj4zMTtjW3Y+PjJdPWNbdj4+Ml18NjQ7Y1t4Pj4yXT0wO3doaWxlKDEpe2lmKChjW3g+PjJdfDApPj0oY1tsPj4yXXwwKSlicmVhaztlPShhWyhjW24+PjJdfDApKyhjW3g+PjJdfDApPj4wXXwwKT09MzgmMTtUPWs7ZT1SUihjW1Q+PjJdfDAsY1tUKzQ+PjJdfDAsZXwwLCgoZXwwKTwwKTw8MzE+PjMxfDApfDA7VD1rO2NbVD4+Ml09ZTtjW1QrND4+Ml09QztjW3g+PjJdPShjW3g+PjJdfDApKzF9VD1rO2NbTT4+Ml09SmQoY1tUPj4yXXwwLGNbVCs0Pj4yXXwwKXwwO2lmKCEoY1tNPj4yXXwwKSl7Y1ttPj4yXT03O1Q9Y1ttPj4yXXwwO2k9UztyZXR1cm4gVHwwfWNbeD4+Ml09NTtkbyBpZigoYVsoY1tuPj4yXXwwKSs1Pj4wXXwwKT09NDc/KGFbKGNbbj4+Ml18MCkrNj4+MF18MCk9PTQ3OjApe2NbeD4+Ml09Nzt3aGlsZSgxKXtpZihhWyhjW24+PjJdfDApKyhjW3g+PjJdfDApPj4wXXwwKWs9KGFbKGNbbj4+Ml18MCkrKGNbeD4+Ml18MCk+PjBdfDApIT00NztlbHNlIGs9MDtsPWNbeD4+Ml18MDtpZighaylicmVhaztjW3g+PjJdPWwrMX1pZigobHwwKSE9Nyl7aWYoKGNbeD4+Ml18MCk9PTE2PyhlUigyNjAyOSwoY1tuPj4yXXwwKSs3fDAsOSl8MCk9PTA6MClicmVhaztUPShjW24+PjJdfDApKzd8MDtjW0g+PjJdPShjW3g+PjJdfDApLTc7Y1tIKzQ+PjJdPVQ7VD1PZCgyNjAzOSxIKXwwO2NbY1tyPj4yXT4+Ml09VDtjW0c+PjJdPTE7YnJlYWsgYX19d2hpbGUoMCk7Y1t1Pj4yXT0wO2I6d2hpbGUoMSl7VD1hWyhjW24+PjJdfDApKyhjW3g+PjJdfDApPj4wXXwwO2FbdD4+MF09VDtpZighKFQ8PDI0Pj4yNCkpYnJlYWs7aWYoKGFbdD4+MF18MCk9PTM1KWJyZWFrO2NbeD4+Ml09KGNbeD4+Ml18MCkrMTtkbyBpZigoKGFbdD4+MF18MCk9PTM3PyhkWzE4NDAzKyhkWyhjW24+PjJdfDApKyhjW3g+PjJdfDApPj4wXXwwKT4+MF0mOHwwKSE9MDowKT8oZFsxODQwMysoZFsoY1tuPj4yXXwwKSsoKGNbeD4+Ml18MCkrMSk+PjBdfDApPj4wXSY4fDApIT0wOjApe1Q9Y1t4Pj4yXXwwO2NbeD4+Ml09VCsxO2NbRj4+Ml09KChMaShhWyhjW24+PjJdfDApK1Q+PjBdfDApfDApJjI1NSk8PDQ7VD1jW3g+PjJdfDA7Y1t4Pj4yXT1UKzE7VD0oTGkoYVsoY1tuPj4yXXwwKStUPj4wXXwwKXwwKSYyNTU7Y1tGPj4yXT0oY1tGPj4yXXwwKStUO2lmKGNbRj4+Ml18MCl7YVt0Pj4wXT1jW0Y+PjJdO2JyZWFrfXdoaWxlKDEpe1Q9YVsoY1tuPj4yXXwwKSsoY1t4Pj4yXXwwKT4+MF18MDthW3Q+PjBdPVQ7aWYoIShUPDwyND4+MjQpKWNvbnRpbnVlIGI7aWYoKGFbdD4+MF18MCk9PTM1KWNvbnRpbnVlIGI7aWYoKGNbdT4+Ml18MCk9PTA/KGFbdD4+MF18MCk9PTYzOjApY29udGludWUgYjtpZigoY1t1Pj4yXXwwKT09MSl7aWYoKGFbdD4+MF18MCk9PTYxKWNvbnRpbnVlIGI7aWYoKGFbdD4+MF18MCk9PTM4KWNvbnRpbnVlIGJ9aWYoKGNbdT4+Ml18MCk9PTI/KGFbdD4+MF18MCk9PTM4OjApY29udGludWUgYjtjW3g+PjJdPShjW3g+PjJdfDApKzF9fWVsc2UgUj0zNzt3aGlsZSgwKTtjOmRvIGlmKChSfDApPT0zNyl7Uj0wO2RvIGlmKChjW3U+PjJdfDApPT0xKXtpZigoYVt0Pj4wXXwwKSE9Mzg/KGFbdD4+MF18MCkhPTYxOjApYnJlYWs7aWYoIShhWyhjW00+PjJdfDApKygoY1t5Pj4yXXwwKS0xKT4+MF18MCkpd2hpbGUoMSl7aWYoIShhWyhjW24+PjJdfDApKyhjW3g+PjJdfDApPj4wXXwwKSljb250aW51ZSBiO2lmKChhWyhjW24+PjJdfDApKyhjW3g+PjJdfDApPj4wXXwwKT09MzUpY29udGludWUgYjtpZigoYVsoY1tuPj4yXXwwKSsoKGNbeD4+Ml18MCktMSk+PjBdfDApPT0zOCljb250aW51ZSBiO2NbeD4+Ml09KGNbeD4+Ml18MCkrMX1lbHNle2lmKChhW3Q+PjBdfDApPT0zOCl7VD1jW3k+PjJdfDA7Y1t5Pj4yXT1UKzE7YVsoY1tNPj4yXXwwKStUPj4wXT0wfWVsc2UgY1t1Pj4yXT0yO2FbdD4+MF09MDticmVhayBjfX13aGlsZSgwKTtpZighKChjW3U+PjJdfDApPT0wPyhhW3Q+PjBdfDApPT02MzowKSl7aWYoKGNbdT4+Ml18MCkhPTIpYnJlYWs7aWYoKGFbdD4+MF18MCkhPTM4KWJyZWFrfWFbdD4+MF09MDtjW3U+PjJdPTF9d2hpbGUoMCk7SD1hW3Q+PjBdfDA7VD1jW3k+PjJdfDA7Y1t5Pj4yXT1UKzE7YVsoY1tNPj4yXXwwKStUPj4wXT1IfWlmKChjW3U+PjJdfDApPT0xKXtUPWNbeT4+Ml18MDtjW3k+PjJdPVQrMTthWyhjW00+PjJdfDApK1Q+PjBdPTB9VD1jW3k+PjJdfDA7Y1t5Pj4yXT1UKzE7YVsoY1tNPj4yXXwwKStUPj4wXT0wO1Q9Y1t5Pj4yXXwwO2NbeT4+Ml09VCsxO2FbKGNbTT4+Ml18MCkrVD4+MF09MDtUPShKZihjW00+PjJdfDApfDApKzF8MDtjW08+PjJdPShjW00+PjJdfDApK1Q7d2hpbGUoMSl7aWYoIShhW2NbTz4+Ml0+PjBdfDApKXtSPTg0O2JyZWFrIGF9Y1tEPj4yXT1KZihjW08+PjJdfDApfDA7Y1tQPj4yXT0oY1tPPj4yXXwwKSsoKGNbRD4+Ml18MCkrMSk7Y1tFPj4yXT1KZihjW1A+PjJdfDApfDA7aWYoKGNbRD4+Ml18MCk9PTM/KGVSKDI2MDY3LGNbTz4+Ml18MCwzKXwwKT09MDowKWNbUT4+Ml09Y1tQPj4yXTtlbHNle2Nbcz4+Ml09MDtjW04+PjJdPTA7Y1tBPj4yXT0wO2Nbej4+Ml09MDtpZigoY1tEPj4yXXwwKT09NT8oZVIoMjYwNzEsY1tPPj4yXXwwLDUpfDApPT0wOjApe2NbQT4+Ml09MzkzMjE2O2Nbcz4+Ml09NDEwNDtjW3o+PjJdPWNbQT4+Ml07Y1tOPj4yXT0yNjA3MX1pZigoY1tEPj4yXXwwKT09ND8oZVIoMjYwNzcsY1tPPj4yXXwwLDQpfDApPT0wOjApe2NbQT4+Ml09MTM1O2Nbcz4+Ml09NDEyODtjW3o+PjJdPWNbQT4+Ml0mY1t2Pj4yXTtjW04+PjJdPTI2MDgyfWlmKGNbcz4+Ml18MCl7Y1tCPj4yXT0wO2Nbdz4+Ml09MDt3aGlsZSgxKXtpZighKGNbKGNbcz4+Ml18MCkrKGNbdz4+Ml08PDMpPj4yXXwwKSlicmVhaztjW0w+PjJdPWNbKGNbcz4+Ml18MCkrKGNbdz4+Ml08PDMpPj4yXTtUPWNbRT4+Ml18MDtpZigoVHwwKT09KEpmKGNbTD4+Ml18MCl8MCk/MD09KGVSKGNbUD4+Ml18MCxjW0w+PjJdfDAsY1tFPj4yXXwwKXwwKTowKXtSPTczO2JyZWFrfWNbdz4+Ml09KGNbdz4+Ml18MCkrMX1pZigoUnwwKT09NzMpe1I9MDtjW0I+PjJdPWNbKGNbcz4+Ml18MCkrKGNbdz4+Ml08PDMpKzQ+PjJdfWlmKCEoY1tCPj4yXXwwKSl7Uj03NjticmVha31pZigoY1tCPj4yXSYtMTI5fDApPihjW3o+PjJdfDApKXtSPTc4O2JyZWFrfWNbdj4+Ml09Y1t2Pj4yXSZ+Y1tBPj4yXXxjW0I+PjJdfX1jW08+PjJdPShjW1A+PjJdfDApKygoY1tFPj4yXXwwKSsxKX1pZigoUnwwKT09NzYpe1Q9Y1tQPj4yXXwwO2NbST4+Ml09Y1tOPj4yXTtjW0krND4+Ml09VDtUPU9kKDI2MDg5LEkpfDA7Y1tjW3I+PjJdPj4yXT1UO2NbRz4+Ml09MTticmVha31lbHNlIGlmKChSfDApPT03OCl7VD1jW1A+PjJdfDA7Y1tKPj4yXT1jW04+PjJdO2NbSis0Pj4yXT1UO1Q9T2QoMjYxMDksSil8MDtjW2Nbcj4+Ml0+PjJdPVQ7Y1tHPj4yXT0zO2JyZWFrfX1lbHNlIFI9ODE7d2hpbGUoMCk7ZG8gaWYoKFJ8MCk9PTgxKXtUPShjW2w+PjJdfDApKzJ8MDtjW00+PjJdPUpkKFQsKChUfDApPDApPDwzMT4+MzEpfDA7aWYoY1tNPj4yXXwwKXtUUihjW00+PjJdfDAsY1tuPj4yXXwwLGNbbD4+Ml18MCl8MDthWyhjW00+PjJdfDApKyhjW2w+PjJdfDApPj4wXT0wO2FbKGNbTT4+Ml18MCkrKChjW2w+PjJdfDApKzEpPj4wXT0wO2Nbdj4+Ml09Y1t2Pj4yXSYtNjU7Uj04NDticmVha31jW20+PjJdPTc7VD1jW20+PjJdfDA7aT1TO3JldHVybiBUfDB9d2hpbGUoMCk7aWYoKFJ8MCk9PTg0PyhUPUNkKGNbUT4+Ml18MCl8MCxjW2NbcD4+Ml0+PjJdPVQsKGNbY1twPj4yXT4+Ml18MCk9PTApOjApe2NbSz4+Ml09Y1tRPj4yXTtUPU9kKDI2MTMzLEspfDA7Y1tjW3I+PjJdPj4yXT1UO2NbRz4+Ml09MX1pZihjW0c+PjJdfDApe0tkKGNbTT4+Ml18MCk7Y1tNPj4yXT0wfWNbY1tvPj4yXT4+Ml09Y1t2Pj4yXTtjW2NbcT4+Ml0+PjJdPWNbTT4+Ml07Y1ttPj4yXT1jW0c+PjJdO1Q9Y1ttPj4yXXwwO2k9UztyZXR1cm4gVHwwfWZ1bmN0aW9uIGJrKGYsZyxoLGosayxsKXtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDtrPWt8MDtsPWx8MDt2YXIgbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTAsRT0wLEY9MCxHPTAsSD0wLEk9MDtJPWk7aT1pKzE5MnwwO0M9SSs3NnwwO209SSs3MnwwO249SSs2OHwwO289SSs2NHwwO0Q9SSs2MHwwO3A9SSs1NnwwO3E9SSs1MnwwO0Y9SSs0OHwwO0U9SSs0NHwwO0g9SSszNnwwO3g9SSsxODB8MDt6PUkrODB8MDt1PUkrMzJ8MDt0PUkrMjh8MDt2PUkrMjR8MDt3PUkrMjB8MDtBPUkrMTZ8MDtzPUkrMTJ8MDt5PUkrOHwwO3I9SSs0fDA7Rz1JO2NbbT4+Ml09ZjtjW24+PjJdPWc7Y1tvPj4yXT1oO2NbRD4+Ml09ajtjW3A+PjJdPWs7Y1txPj4yXT1sO2NbRj4+Ml09MDtjW0krNDA+PjJdPTA7Y1tIPj4yXT0wO2lmKCEoY1tuPj4yXXwwKSloPTE7ZWxzZSBoPShhW2Nbbj4+Ml0+PjBdfDApPT0wO2NbdT4+Ml09aCYxO2lmKChjW24+PjJdfDApIT0wPyhoUihjW24+PjJdfDAsMjU4MzcpfDApPT0wOjApaD0xO2Vsc2UgQj01O2RvIGlmKChCfDApPT01KXtpZigoY1t1Pj4yXXwwKSE9MD8oWnEoY1tvPj4yXXwwKXwwKSE9MDowKXtoPTE7YnJlYWt9aD0oY1txPj4yXSYxMjh8MCkhPTB9d2hpbGUoMCk7Y1t0Pj4yXT1oJjE7aWYoY1t0Pj4yXXwwKWNbcD4+Ml09Y1twPj4yXXwyO2lmKChjW3E+PjJdJjI1NnwwKSE9MD8oY1t0Pj4yXXwwKSE9MHwoY1t1Pj4yXXwwKSE9MDowKWNbcT4+Ml09Y1txPj4yXSYtMjU3fDUxMjtjW0U+PjJdPWtnKDQ4LDApfDA7aWYoIShjW0U+PjJdfDApKXtjW0M+PjJdPTc7SD1jW0M+PjJdfDA7aT1JO3JldHVybiBIfDB9YVsoY1tFPj4yXXwwKSs4Pj4wXT0wO2NbY1tFPj4yXT4+Ml09Y1tvPj4yXTtjWyhjW0U+PjJdfDApKzMyPj4yXT1jW0U+PjJdO2NbKGNbRT4+Ml18MCkrMzIrND4+Ml09MTtkbyBpZighKGNbdT4+Ml18MCkpe2lmKChjW3Q+PjJdfDApIT0wPyhjW3E+PjJdJjY0fDApPT0wOjApYnJlYWs7aWYoY1txPj4yXSYxMzEwNzIpe2Nbdj4+Ml09KEpmKGNbbj4+Ml18MCl8MCkrMTtjW3c+PjJdPShjWyhjW20+PjJdfDApKzg+PjJdfDApKzE7dT0oY1t3Pj4yXXwwKT4oY1t2Pj4yXXwwKT9jW3c+PjJdfDA6Y1t2Pj4yXXwwO2NbQT4+Ml09JGYodSwoKHV8MCk8MCk8PDMxPj4zMSl8MDthWyhjW0U+PjJdfDApKzk+PjBdPTE7aWYoIShjW0E+PjJdfDApKXtLZChjW0U+PjJdfDApO2NbQz4+Ml09NztIPWNbQz4+Ml18MDtpPUk7cmV0dXJuIEh8MH1pZighKGNbdD4+Ml18MCkpe2NbSD4+Ml09X3EoY1ttPj4yXXwwLGNbbj4+Ml18MCxjW3c+PjJdfDAsY1tBPj4yXXwwKXwwO2lmKGNbSD4+Ml18MCl7S2QoY1tBPj4yXXwwKTtLZChjW0U+PjJdfDApO2NbQz4+Ml09Y1tIPj4yXTtIPWNbQz4+Ml18MDtpPUk7cmV0dXJuIEh8MH19ZWxzZSBUUihjW0E+PjJdfDAsY1tuPj4yXXwwLGNbdj4+Ml18MCl8MDtjW0Y+PjJdPWNbMTAwNl07d2hpbGUoMSl7aWYoIShjW0Y+PjJdfDApKWJyZWFrO3c9Y1tBPj4yXXwwO2lmKDA9PShoUih3LEtpKGNbY1tGPj4yXT4+Ml18MCwwKXwwKXwwKT8odz15aShjW2NbRj4+Ml0+PjJdfDApfDAsKHd8MCk9PShjW20+PjJdfDApKTowKXtCPTI5O2JyZWFrfWNbRj4+Ml09Y1soY1tGPj4yXXwwKSs2OD4+Ml19ZG8gaWYoKEJ8MCk9PTI5KXtjW3M+PjJdPShjWyhjW28+PjJdfDApKzIwPj4yXXwwKS0xO3doaWxlKDEpe2lmKChjW3M+PjJdfDApPDApe0I9MzU7YnJlYWt9Y1t5Pj4yXT1jWyhjWyhjW28+PjJdfDApKzE2Pj4yXXwwKSsoY1tzPj4yXTw8NCkrND4+Ml07aWYoKGNbeT4+Ml18MCkhPTA/KGNbKGNbeT4+Ml18MCkrND4+Ml18MCk9PShjW0Y+PjJdfDApOjApYnJlYWs7Y1tzPj4yXT0oY1tzPj4yXXwwKSstMX1pZigoQnwwKT09MzUpe2NbKGNbRT4+Ml18MCkrND4+Ml09Y1tGPj4yXTt5PShjW0Y+PjJdfDApKzY0fDA7Y1t5Pj4yXT0oY1t5Pj4yXXwwKSsxO2JyZWFrfUtkKGNbQT4+Ml18MCk7S2QoY1tFPj4yXXwwKTtjW0M+PjJdPTE5O0g9Y1tDPj4yXXwwO2k9STtyZXR1cm4gSHwwfXdoaWxlKDApO0tkKGNbQT4+Ml18MCl9fXdoaWxlKDApO2RvIGlmKCEoY1tGPj4yXXwwKSl7Y1tGPj4yXT1rZyg4NCwwKXwwO2lmKCEoY1tGPj4yXXwwKSl7Y1tIPj4yXT03O2JyZWFrfWNbSD4+Ml09YXIoY1ttPj4yXXwwLGNbRj4+Ml18MCxjW24+PjJdfDAsODgsY1twPj4yXXwwLGNbcT4+Ml18MCwxNDkpfDA7aWYoIShjW0g+PjJdfDApKXtBPShjW28+PjJdfDApKzQwfDA7YnIoY1tjW0Y+PjJdPj4yXXwwLGNbQT4+Ml18MCxjW0ErND4+Ml18MCk7Y1tIPj4yXT1jcihjW2NbRj4+Ml0+PjJdfDAsMTAwLHopfDB9aWYoIShjW0g+PjJdfDApKXthWyhjW0Y+PjJdfDApKzE2Pj4wXT1jW3A+PjJdO2NbKGNbRj4+Ml18MCkrND4+Ml09Y1tvPj4yXTtlcihjW2NbRj4+Ml0+PjJdfDAsMTcxLGNbRj4+Ml18MCk7Y1soY1tFPj4yXXwwKSs0Pj4yXT1jW0Y+PjJdO2NbKGNbRj4+Ml18MCkrOD4+Ml09MDtjWyhjW0Y+PjJdfDApKzEyPj4yXT0wO2lmKChmcihjW2NbRj4+Ml0+PjJdfDApfDApPDwyND4+MjQpe0E9KGNbRj4+Ml18MCkrMjJ8MDtiW0E+PjFdPWVbQT4+MV18MX1jWyhjW0Y+PjJdfDApKzMyPj4yXT1kW3orMTY+PjBdPDw4fGRbeisxNz4+MF08PDE2O2lmKCgoY1soY1tGPj4yXXwwKSszMj4+Ml18MCk+Pj4wPj01MTI/KGNbKGNbRj4+Ml18MCkrMzI+PjJdfDApPj4+MDw9NjU1MzY6MCk/KChjWyhjW0Y+PjJdfDApKzMyPj4yXXwwKS0xJmNbKGNbRj4+Ml18MCkrMzI+PjJdfDApPT0wOjApe2FbeD4+MF09YVt6KzIwPj4wXXwwO0E9KGNbRj4+Ml18MCkrMjJ8MDtiW0E+PjFdPWVbQT4+MV18MjtBPShncih6KzUyfDApfDApIT0wO2FbKGNbRj4+Ml18MCkrMTc+PjBdPUE/MTowO0E9KGdyKHorNjR8MCl8MCkhPTA7YVsoY1tGPj4yXXwwKSsxOD4+MF09QT8xOjB9ZWxzZXtjWyhjW0Y+PjJdfDApKzMyPj4yXT0wO2lmKCEoKGNbbj4+Ml18MCk9PTB8KGNbdD4+Ml18MCkhPTApKXthWyhjW0Y+PjJdfDApKzE3Pj4wXT0wO2FbKGNbRj4+Ml18MCkrMTg+PjBdPTB9YVt4Pj4wXT0wfWNbSD4+Ml09VmkoY1tjW0Y+PjJdPj4yXXwwLChjW0Y+PjJdfDApKzMyfDAsZFt4Pj4wXXwwKXwwO2lmKCEoY1tIPj4yXXwwKSl7Y1soY1tGPj4yXXwwKSszNj4+Ml09KGNbKGNbRj4+Ml18MCkrMzI+PjJdfDApLShkW3g+PjBdfDApO2NbKGNbRj4+Ml18MCkrNjQ+PjJdPTE7aWYoYVsoY1tFPj4yXXwwKSs5Pj4wXXwwKXtjWyhjW0Y+PjJdfDApKzY4Pj4yXT1jWzEwMDZdO2NbMTAwNl09Y1tGPj4yXTtCPTU2fWVsc2UgQj01Nn19fWVsc2UgQj01Njt3aGlsZSgwKTtpZigoQnwwKT09NTYpe2E6ZG8gaWYoYVsoY1tFPj4yXXwwKSs5Pj4wXXwwKXtjW3I+PjJdPTA7d2hpbGUoMSl7aWYoKGNbcj4+Ml18MCk+PShjWyhjW28+PjJdfDApKzIwPj4yXXwwKSlicmVhayBhO0I9Y1soY1soY1tvPj4yXXwwKSsxNj4+Ml18MCkrKGNbcj4+Ml08PDQpKzQ+PjJdfDA7Y1tHPj4yXT1CO2lmKChCfDApIT0wPyhkWyhjW0c+PjJdfDApKzk+PjBdfDApIT0wOjApYnJlYWs7Y1tyPj4yXT0oY1tyPj4yXXwwKSsxfXdoaWxlKDEpe2lmKCEoY1soY1tHPj4yXXwwKSsyOD4+Ml18MCkpYnJlYWs7Y1tHPj4yXT1jWyhjW0c+PjJdfDApKzI4Pj4yXX1pZigoY1soY1tFPj4yXXwwKSs0Pj4yXXwwKT4+PjA8KGNbKGNbRz4+Ml18MCkrND4+Ml18MCk+Pj4wKXtjWyhjW0U+PjJdfDApKzI0Pj4yXT1jW0c+PjJdO2NbKGNbRT4+Ml18MCkrMjg+PjJdPTA7Y1soY1tHPj4yXXwwKSsyOD4+Ml09Y1tFPj4yXTticmVha313aGlsZSgxKXtpZihjWyhjW0c+PjJdfDApKzI0Pj4yXXwwKWs9KGNbKGNbKGNbRz4+Ml18MCkrMjQ+PjJdfDApKzQ+PjJdfDApPj4+MDwoY1soY1tFPj4yXXwwKSs0Pj4yXXwwKT4+PjA7ZWxzZSBrPTA7aD1jWyhjW0c+PjJdfDApKzI0Pj4yXXwwO2lmKCFrKWJyZWFrO2NbRz4+Ml09aH1jWyhjW0U+PjJdfDApKzI0Pj4yXT1oO2NbKGNbRT4+Ml18MCkrMjg+PjJdPWNbRz4+Ml07aWYoY1soY1tFPj4yXXwwKSsyND4+Ml18MCljWyhjWyhjW0U+PjJdfDApKzI0Pj4yXXwwKSsyOD4+Ml09Y1tFPj4yXTtjWyhjW0c+PjJdfDApKzI0Pj4yXT1jW0U+PjJdfXdoaWxlKDApO2NbY1tEPj4yXT4+Ml09Y1tFPj4yXX1pZighKGNbSD4+Ml18MCkpe2lmKCEoWXEoY1tFPj4yXXwwLDAsMCl8MCkpTmooY1tjWyhjW0U+PjJdfDApKzQ+PjJdPj4yXXwwLC0yZTMpfWVsc2V7aWYoKGNbRj4+Ml18MCkhPTA/KGNbY1tGPj4yXT4+Ml18MCkhPTA6MClocihjW2NbRj4+Ml0+PjJdfDApfDA7S2QoY1tGPj4yXXwwKTtLZChjW0U+PjJdfDApO2NbY1tEPj4yXT4+Ml09MH1jW0M+PjJdPWNbSD4+Ml07SD1jW0M+PjJdfDA7aT1JO3JldHVybiBIfDB9ZnVuY3Rpb24gY2soYixlKXtiPWJ8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wO2o9aTtpPWkrMTZ8MDtmPWorOHwwO2c9ais0fDA7aD1qO2NbZj4+Ml09YjtjW2c+PjJdPWU7aWYoY1tnPj4yXXwwKWNbaD4+Ml09WXEoY1tnPj4yXXwwLDg0LDE1MCl8MDtlbHNlIGNbaD4+Ml09c2goMCw4NCwwKXwwO2lmKCEoY1toPj4yXXwwKSl7bWgoY1tmPj4yXXwwKTtlPWNbaD4+Ml18MDtpPWo7cmV0dXJuIGV8MH1pZihkWyhjW2g+PjJdfDApKzc2Pj4wXXwwKXtlPWNbaD4+Ml18MDtpPWo7cmV0dXJuIGV8MH16aigoY1toPj4yXXwwKSs4fDApO3pqKChjW2g+PjJdfDApKzI0fDApO3pqKChjW2g+PjJdfDApKzQwfDApO3pqKChjW2g+PjJdfDApKzU2fDApO2FbKGNbaD4+Ml18MCkrNzc+PjBdPTE7ZT1jW2g+PjJdfDA7aT1qO3JldHVybiBlfDB9ZnVuY3Rpb24gZGsoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wO2Q9aTtpPWkrMTZ8MDtiPWQrNHwwO2U9ZDtjW2I+PjJdPWE7Y1tlPj4yXT15ZihjW2I+PjJdfDAsMjU4MzEsMil8MDtpZigoY1tlPj4yXXwwKSE9Nyl7aT1kO3JldHVybn1taChjW2I+PjJdfDApO2k9ZDtyZXR1cm59ZnVuY3Rpb24gZWsoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MDtsPWk7aT1pKzMyfDA7aD1sO2I9bCsyOHwwO2U9bCsyNHwwO2Q9bCsyMHwwO2c9bCsxNnwwO2o9bCsxMnwwO2s9bCs4fDA7Zj1sKzR8MDtjW2I+PjJdPWE7Y1tkPj4yXT0xO2lmKCEoY1szODVdfDApKXtpPWw7cmV0dXJufWNbZT4+Ml09MDt3aGlsZSgxKXtpZighKGNbZD4+Ml18MCkpYnJlYWs7Y1tmPj4yXT0wO2lmKChjW2U+PjJdfDApPj4+MD49KGNbMzg1XXwwKT4+PjApe2Nbaj4+Ml09MDtjW2Q+PjJdPTB9ZWxzZSBjW2o+PjJdPWNbKGNbMzg2XXwwKSsoY1tlPj4yXTw8Mik+PjJdO2Nbaz4+Ml09MDtpZigoY1tqPj4yXXwwKSE9MD8oYT1PYltjW2o+PjJdJjI1NV0oY1tiPj4yXXwwLGssY1tmPj4yXXwwKXwwLGNbZz4+Ml09YSwoYXwwKSE9MCk6MCl7bT1jW2I+PjJdfDA7YT1jW2c+PjJdfDA7Y1toPj4yXT1jW2s+PjJdO2pnKG0sYSwyNTc5MixoKTtjW2Q+PjJdPTB9S2QoY1trPj4yXXwwKTtjW2U+PjJdPShjW2U+PjJdfDApKzF9aT1sO3JldHVybn1mdW5jdGlvbiBmayhhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MDtrPWk7aT1pKzMyfDA7Yj1rKzI0fDA7ZD1rKzIwfDA7aj1rKzE2fDA7ZT1rKzEyfDA7Zz1rKzh8MDtmPWsrNHwwO2g9aztjW2Q+PjJdPWE7Y1tqPj4yXT0wO2NbZT4+Ml09MDtjW2c+PjJdPTA7Y1tmPj4yXT0wO2NbaD4+Ml09MDtnayhoKTtjW2o+PjJdPWhrKGNbZD4+Ml18MCl8MDtpZihjW2o+PjJdfDApe2NbYj4+Ml09Y1tqPj4yXTtqPWNbYj4+Ml18MDtpPWs7cmV0dXJuIGp8MH1payhnKTtqayhmKTtjW2U+PjJdPUlkKDIwKXwwO2lmKGNbZT4+Ml18MClrayhjW2U+PjJdfDAsMSwxKTtlbHNlIGNbaj4+Ml09NztkbyBpZighKGNbaj4+Ml18MCkpe2lmKCgobGsoY1tlPj4yXXwwLDIwNDQ3LDcsY1tnPj4yXXwwKXwwKT09MD8obGsoY1tlPj4yXXwwLDIwNDU0LDcsY1tmPj4yXXwwKXwwKT09MDowKT8obGsoY1tlPj4yXXwwLDIwNDYxLDEwLGNbaD4+Ml18MCl8MCk9PTA6MClicmVhaztjW2o+PjJdPTd9d2hpbGUoMCk7aWYoKCgoKCgwPT0oY1tqPj4yXXwwKT8oaD1tayhjW2Q+PjJdfDAsY1tlPj4yXXwwLDIwNDcxKXwwLGNbaj4+Ml09aCwwPT0oaHwwKSk6MCk/KGg9eWYoY1tkPj4yXXwwLDIwNDg2LC0xKXwwLGNbaj4+Ml09aCwwPT0oaHwwKSk6MCk/KGg9eWYoY1tkPj4yXXwwLDIwNDk0LDEpfDAsY1tqPj4yXT1oLDA9PShofDApKTowKT8oaD15ZihjW2Q+PjJdfDAsMjA1MDIsMSl8MCxjW2o+PjJdPWgsMD09KGh8MCkpOjApPyhoPXlmKGNbZD4+Ml18MCwyMDUwMiwyKXwwLGNbaj4+Ml09aCwwPT0oaHwwKSk6MCk/KGg9eWYoY1tkPj4yXXwwLDIwNTEyLDEpfDAsY1tqPj4yXT1oLDA9PShofDApKTowKXtjW2o+PjJdPWVmKGNbZD4+Ml18MCwyMDUyMSwxNzM2LGNbZT4+Ml18MCwxNTEpfDA7aWYoIShjW2o+PjJdfDApKWNbaj4+Ml09ZWYoY1tkPj4yXXwwLDIwNTI2LDE3MzYsY1tlPj4yXXwwLDApfDA7aWYoIShjW2o+PjJdfDApKWNbaj4+Ml09b2soY1tkPj4yXXwwLGNbZT4+Ml18MCl8MDtjW2I+PjJdPWNbaj4+Ml07aj1jW2I+PjJdfDA7aT1rO3JldHVybiBqfDB9aWYoY1tlPj4yXXwwKXtwayhjW2U+PjJdfDApO0tkKGNbZT4+Ml18MCl9Y1tiPj4yXT1jW2o+PjJdO2o9Y1tiPj4yXXwwO2k9aztyZXR1cm4ganwwfWZ1bmN0aW9uIGdrKGEpe2E9YXwwO3ZhciBiPTAsZD0wO2I9aTtpPWkrMTZ8MDtkPWI7Y1tkPj4yXT1hO2NbY1tkPj4yXT4+Ml09MjM1NjtpPWI7cmV0dXJufWZ1bmN0aW9uIGhrKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MDtkPWk7aT1pKzE2fDA7ZT1kKzR8MDtiPWQ7Y1tlPj4yXT1hO2NbYj4+Ml09ZGYoY1tlPj4yXXwwLDI1NDQzLDIyNjQsMCl8MDtpPWQ7cmV0dXJuIGNbYj4+Ml18MH1mdW5jdGlvbiBpayhhKXthPWF8MDt2YXIgYj0wLGQ9MDtiPWk7aT1pKzE2fDA7ZD1iO2NbZD4+Ml09YTtjW2NbZD4+Ml0+PjJdPTIyMzY7aT1iO3JldHVybn1mdW5jdGlvbiBqayhhKXthPWF8MDt2YXIgYj0wLGQ9MDtiPWk7aT1pKzE2fDA7ZD1iO2NbZD4+Ml09YTtjW2NbZD4+Ml0+PjJdPTIyMDg7aT1iO3JldHVybn1mdW5jdGlvbiBrayhiLGQsZSl7Yj1ifDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MDtmPWk7aT1pKzE2fDA7Zz1mO2o9Zis1fDA7aD1mKzR8MDtjW2c+PjJdPWI7YVtqPj4wXT1kO2FbaD4+MF09ZTthW2NbZz4+Ml0+PjBdPWFbaj4+MF18MDthWyhjW2c+PjJdfDApKzE+PjBdPWFbaD4+MF18MDtjWyhjW2c+PjJdfDApKzg+PjJdPTA7Y1soY1tnPj4yXXwwKSs0Pj4yXT0wO2NbKGNbZz4+Ml18MCkrMTI+PjJdPTA7Y1soY1tnPj4yXXwwKSsxNj4+Ml09MDtpPWY7cmV0dXJufWZ1bmN0aW9uIGxrKGIsZCxlLGYpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTA7cz1pO2k9aSs0OHwwO2s9cys0MHwwO2w9cyszNnwwO209cyszMnwwO249cysyOHwwO289cysyNHwwO3E9cysyMHwwO3A9cysxNnwwO2c9cysxMnwwO3I9cys4fDA7dD1zKzR8MDtoPXM7Y1tsPj4yXT1iO2NbbT4+Ml09ZDtjW24+PjJdPWU7Y1tvPj4yXT1mO2NbdD4+Ml09SGsoYVtjW2w+PjJdPj4wXXwwKXwwO2NbcT4+Ml09WWJbY1t0Pj4yXSYyNTVdKGNbbT4+Ml18MCxjW24+PjJdfDApfDA7Y1twPj4yXT1jW3E+PjJdJihjWyhjW2w+PjJdfDApKzEyPj4yXXwwKS0xO2NbZz4+Ml09SWsoY1tsPj4yXXwwLGNbbT4+Ml18MCxjW24+PjJdfDAsY1twPj4yXXwwKXwwO2lmKGNbZz4+Ml18MCl7Y1toPj4yXT1jWyhjW2c+PjJdfDApKzg+PjJdO2lmKCEoY1tvPj4yXXwwKSlhcShjW2w+PjJdfDAsY1tnPj4yXXwwLGNbcD4+Ml18MCk7ZWxzZSBjWyhjW2c+PjJdfDApKzg+PjJdPWNbbz4+Ml07Y1trPj4yXT1jW2g+PjJdO3Q9Y1trPj4yXXwwO2k9cztyZXR1cm4gdHwwfWlmKCEoY1tvPj4yXXwwKSl7Y1trPj4yXT0wO3Q9Y1trPj4yXXwwO2k9cztyZXR1cm4gdHwwfWlmKCEoKGNbKGNbbD4+Ml18MCkrMTI+PjJdfDApPT0wPyhicShjW2w+PjJdfDAsOCl8MCkhPTA6MCkpaj0xMDtkbyBpZigoanwwKT09MTApe2lmKChjWyhjW2w+PjJdfDApKzQ+PjJdfDApPj0oY1soY1tsPj4yXXwwKSsxMj4+Ml18MCk/KGJxKGNbbD4+Ml18MCxjWyhjW2w+PjJdfDApKzEyPj4yXTw8MSl8MCkhPTA6MClicmVhaztjW3I+PjJdPWNxKDIwKXwwO2lmKCEoY1tyPj4yXXwwKSl7Y1trPj4yXT1jW28+PjJdO3Q9Y1trPj4yXXwwO2k9cztyZXR1cm4gdHwwfWRvIGlmKChjW20+PjJdfDApIT0wPyhhWyhjW2w+PjJdfDApKzE+PjBdfDApIT0wOjApe2Y9Y3EoY1tuPj4yXXwwKXwwO2NbKGNbcj4+Ml18MCkrMTI+PjJdPWY7Zj1jW3I+PjJdfDA7aWYoY1soY1tyPj4yXXwwKSsxMj4+Ml18MCl7VFIoY1tmKzEyPj4yXXwwLGNbbT4+Ml18MCxjW24+PjJdfDApfDA7YnJlYWt9cWsoZik7Y1trPj4yXT1jW28+PjJdO3Q9Y1trPj4yXXwwO2k9cztyZXR1cm4gdHwwfWVsc2UgY1soY1tyPj4yXXwwKSsxMj4+Ml09Y1ttPj4yXTt3aGlsZSgwKTtjWyhjW3I+PjJdfDApKzE2Pj4yXT1jW24+PjJdO3Q9KGNbbD4+Ml18MCkrNHwwO2NbdD4+Ml09KGNbdD4+Ml18MCkrMTtjW3A+PjJdPWNbcT4+Ml0mKGNbKGNbbD4+Ml18MCkrMTI+PjJdfDApLTE7ZHEoY1tsPj4yXXwwLChjWyhjW2w+PjJdfDApKzE2Pj4yXXwwKSsoY1twPj4yXTw8Myl8MCxjW3I+PjJdfDApO2NbKGNbcj4+Ml18MCkrOD4+Ml09Y1tvPj4yXTtjW2s+PjJdPTA7dD1jW2s+PjJdfDA7aT1zO3JldHVybiB0fDB9d2hpbGUoMCk7Y1soY1tsPj4yXXwwKSs0Pj4yXT0wO2Nbaz4+Ml09Y1tvPj4yXTt0PWNbaz4+Ml18MDtpPXM7cmV0dXJuIHR8MH1mdW5jdGlvbiBtayhhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wO2o9aTtpPWkrMzJ8MDtlPWorMjB8MDtrPWorMTZ8MDtmPWorMTJ8MDtoPWorOHwwO2c9ais0fDA7Y1tlPj4yXT1hO2Nbaz4+Ml09YjtjW2Y+PjJdPWQ7Y1toPj4yXT0wO2NbZz4+Ml09Y1trPj4yXTtjW2o+PjJdPTU7aWYoIShjW2g+PjJdfDApKWNbaD4+Ml09d2YoY1tlPj4yXXwwLGNbZj4+Ml18MCwxLDUsY1tnPj4yXXwwLDIyNSwwLDApfDA7aWYoY1toPj4yXXwwKXtrPWNbaD4+Ml18MDtpPWo7cmV0dXJuIGt8MH1jW2g+PjJdPXdmKGNbZT4+Ml18MCxjW2Y+PjJdfDAsMiw1LGNbZz4+Ml18MCwyMjUsMCwwKXwwO2s9Y1toPj4yXXwwO2k9ajtyZXR1cm4ga3wwfWZ1bmN0aW9uIG5rKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MDtiPWk7aT1pKzE2fDA7ZT1iKzR8MDtkPWI7Y1tlPj4yXT1hO2NbZD4+Ml09Y1tlPj4yXTtwayhjW2Q+PjJdfDApO0tkKGNbZD4+Ml18MCk7aT1iO3JldHVybn1mdW5jdGlvbiBvayhhLGIpe2E9YXwwO2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTA7ZT1pO2k9aSsxNnwwO2c9ZSs4fDA7Zj1lKzR8MDtkPWU7Y1tnPj4yXT1hO2NbZj4+Ml09YjtjW2Q+PjJdPWRmKGNbZz4+Ml18MCwyMDUzMSwxODI4LGNbZj4+Ml18MCl8MDtpPWU7cmV0dXJuIGNbZD4+Ml18MH1mdW5jdGlvbiBwayhiKXtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wO2c9aTtpPWkrMTZ8MDtkPWcrOHwwO2U9Zys0fDA7Zj1nO2NbZD4+Ml09YjtjW2U+PjJdPWNbKGNbZD4+Ml18MCkrOD4+Ml07Y1soY1tkPj4yXXwwKSs4Pj4yXT0wO3FrKGNbKGNbZD4+Ml18MCkrMTY+PjJdfDApO2NbKGNbZD4+Ml18MCkrMTY+PjJdPTA7Y1soY1tkPj4yXXwwKSsxMj4+Ml09MDt3aGlsZSgxKXtpZighKGNbZT4+Ml18MCkpYnJlYWs7Y1tmPj4yXT1jW2NbZT4+Ml0+PjJdO2lmKChhWyhjW2Q+PjJdfDApKzE+PjBdfDApIT0wPyhjWyhjW2U+PjJdfDApKzEyPj4yXXwwKSE9MDowKXFrKGNbKGNbZT4+Ml18MCkrMTI+PjJdfDApO3FrKGNbZT4+Ml18MCk7Y1tlPj4yXT1jW2Y+PjJdfWNbKGNbZD4+Ml18MCkrND4+Ml09MDtpPWc7cmV0dXJufWZ1bmN0aW9uIHFrKGEpe2E9YXwwO3ZhciBiPTAsZD0wO2I9aTtpPWkrMTZ8MDtkPWI7Y1tkPj4yXT1hO0tkKGNbZD4+Ml18MCk7aT1iO3JldHVybn1mdW5jdGlvbiByayhhLGIsZCxlLGYsZyl7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7dmFyIGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MDt3PWk7aT1pKzY0fDA7aD13KzU2fDA7eD13KzUyfDA7aj13KzQ4fDA7az13KzQ0fDA7bD13KzQwfDA7bT13KzM2fDA7bj13KzMyfDA7cz13KzI4fDA7cj13KzI0fDA7dD13KzIwfDA7dT13KzE2fDA7cD13KzEyfDA7cT13Kzh8MDt2PXcrNHwwO289dztjW3g+PjJdPWE7Y1tqPj4yXT1iO2Nbaz4+Ml09ZDtjW2w+PjJdPWU7Y1ttPj4yXT1mO2Nbbj4+Ml09ZztjW3M+PjJdPTA7Y1tyPj4yXT0wO2NbdD4+Ml09MDtjW3A+PjJdPTA7Y1t1Pj4yXT1mZihjW3g+PjJdfDAsMjA1NDQpfDA7aWYoY1t1Pj4yXXwwKXtjW2g+PjJdPWNbdT4+Ml07eD1jW2g+PjJdfDA7aT13O3JldHVybiB4fDB9Y1txPj4yXT0oY1trPj4yXXwwKS0zO2NbdT4+Ml09Q2soY1txPj4yXXwwLChjW2w+PjJdfDApKzEyfDAscCl8MDtpZighKGNbdT4+Ml18MCkpe2lmKChjW3E+PjJdfDApPDEpY1t2Pj4yXT0yMDQ0NztlbHNlIGNbdj4+Ml09Y1tjW3A+PjJdPj4yXTtjW3U+PjJdPURrKGNbaj4+Ml18MCxjW3Y+PjJdfDAscixjW24+PjJdfDApfDB9aWYoIShjW3U+PjJdfDApKXtjW28+PjJdPShjW3A+PjJdfDApKzQ7Y1t1Pj4yXT1PYltjWyhjW3I+PjJdfDApKzQ+PjJdJjI1NV0oKGNbcT4+Ml18MCk+MT8oY1txPj4yXXwwKS0xfDA6MCxjW28+PjJdfDAsdCl8MH1pZigoY1t1Pj4yXXwwKT09MD8oY1tzPj4yXT1JZCgyMCl8MCwoY1tzPj4yXXwwKT09MCk6MCljW3U+PjJdPTc7aWYoY1t1Pj4yXXwwKXtpZihjW3Q+PjJdfDApVGJbY1soY1tyPj4yXXwwKSs4Pj4yXSYyNTVdKGNbdD4+Ml18MCl8MH1lbHNle3g9Y1tzPj4yXXwwO2NbeD4+Ml09MDtjW3grND4+Ml09MDtjW3grOD4+Ml09MDtjW3grMTI+PjJdPTA7Y1t4KzE2Pj4yXT0wO2NbKGNbcz4+Ml18MCkrMTI+PjJdPWNbcj4+Ml07Y1soY1tzPj4yXXwwKSsxNj4+Ml09Y1t0Pj4yXTtjW2NbbT4+Ml0+PjJdPWNbcz4+Ml19S2QoY1twPj4yXXwwKTtjW2g+PjJdPWNbdT4+Ml07eD1jW2g+PjJdfDA7aT13O3JldHVybiB4fDB9ZnVuY3Rpb24gc2soYixlKXtiPWJ8MDtlPWV8MDt2YXIgZj0wLGc9MCxqPTAsaz0wO2s9aTtpPWkrMTZ8MDtmPWsrMTJ8MDtnPWsrNHwwO2o9aztjW2srOD4+Ml09YjtjW2c+PjJdPWU7Y1tqPj4yXT0wO3doaWxlKDEpe2lmKChjW2o+PjJdfDApPj0oY1tjW2c+PjJdPj4yXXwwKSl7ZT04O2JyZWFrfWlmKCgoZFsoY1soY1tnPj4yXXwwKSs0Pj4yXXwwKSsoKGNbaj4+Ml18MCkqMTJ8MCkrNT4+MF18MHwwKSE9MD8oY1soY1soY1tnPj4yXXwwKSs0Pj4yXXwwKSsoKGNbaj4+Ml18MCkqMTJ8MCk+PjJdfDApPT0wOjApPyhkWyhjWyhjW2c+PjJdfDApKzQ+PjJdfDApKygoY1tqPj4yXXwwKSoxMnwwKSs0Pj4wXXwwfDApPT0yOjApe2U9NjticmVha31jW2o+PjJdPShjW2o+PjJdfDApKzF9aWYoKGV8MCk9PTYpe2NbKGNbZz4+Ml18MCkrMjA+PjJdPTE7Y1soY1soY1tnPj4yXXwwKSsxNj4+Ml18MCkrKGNbaj4+Ml08PDMpPj4yXT0xO2FbKGNbKGNbZz4+Ml18MCkrMTY+PjJdfDApKyhjW2o+PjJdPDwzKSs0Pj4wXT0xO2hbKGNbZz4+Ml18MCkrNDA+PjNdPTEuMDtjW2Y+PjJdPTA7aj1jW2Y+PjJdfDA7aT1rO3JldHVybiBqfDB9ZWxzZSBpZigoZXwwKT09OCl7Y1soY1tnPj4yXXwwKSsyMD4+Ml09MDtjW2Y+PjJdPTA7aj1jW2Y+PjJdfDA7aT1rO3JldHVybiBqfDB9cmV0dXJuIDB9ZnVuY3Rpb24gdGsoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wO2I9aTtpPWkrMTZ8MDtlPWIrNHwwO2Q9YjtjW2U+PjJdPWE7Y1tkPj4yXT1jW2U+PjJdO1RiW2NbKGNbKGNbZD4+Ml18MCkrMTI+PjJdfDApKzg+PjJdJjI1NV0oY1soY1tkPj4yXXwwKSsxNj4+Ml18MCl8MDtLZChjW2Q+PjJdfDApO2k9YjtyZXR1cm4gMH1mdW5jdGlvbiB1ayhhLGIpe2E9YXwwO2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTA7Zz1pO2k9aSsxNnwwO2Q9ZysxMnwwO2U9Zys0fDA7Zj1nO2NbZys4Pj4yXT1hO2NbZT4+Ml09YjtjW2Y+PjJdPUlkKDM2KXwwO2lmKCEoY1tmPj4yXXwwKSl7Y1tkPj4yXT03O2Y9Y1tkPj4yXXwwO2k9ZztyZXR1cm4gZnwwfWVsc2V7YT1jW2Y+PjJdfDA7Yj1hKzM2fDA7ZG97Y1thPj4yXT0wO2E9YSs0fDB9d2hpbGUoKGF8MCk8KGJ8MCkpO2NbY1tlPj4yXT4+Ml09Y1tmPj4yXTtjW2Q+PjJdPTA7Zj1jW2Q+PjJdfDA7aT1nO3JldHVybiBmfDB9cmV0dXJuIDB9ZnVuY3Rpb24gdmsoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wO2I9aTtpPWkrMTZ8MDtlPWIrNHwwO2Q9YjtjW2U+PjJdPWE7Y1tkPj4yXT1jW2U+PjJdO0JrKGNbZD4+Ml18MCk7S2QoY1tkPj4yXXwwKTtpPWI7cmV0dXJuIDB9ZnVuY3Rpb24gd2soYixkLGUsZixnKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDt2YXIgaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wO3E9aTtpPWkrNDh8MDtoPXErNDB8MDtqPXErMzZ8MDtyPXErMzJ8MDtrPXErMjB8MDtvPXErMTZ8MDttPXErMTJ8MDtuPXErOHwwO3A9cSs0fDA7bD1xO2Nbaj4+Ml09YjtjW3I+PjJdPWQ7Y1txKzI4Pj4yXT1lO2NbcSsyND4+Ml09ZjtjW2s+PjJdPWc7Y1tvPj4yXT0xO2NbbT4+Ml09Y1tqPj4yXTtjW24+PjJdPWNbY1tqPj4yXT4+Ml07QmsoY1ttPj4yXXwwKTtkbyBpZigoY1tyPj4yXXwwKT09MSl7Y1twPj4yXT0kZChjW2Nbaz4+Ml0+PjJdfDApfDA7Y1tsPj4yXT1hZShjW2Nbaz4+Ml0+PjJdfDApfDA7cj1JZCgoY1tsPj4yXXwwKSsxfDApfDA7Y1soY1ttPj4yXXwwKSs0Pj4yXT1yO2lmKCEoY1soY1ttPj4yXXwwKSs0Pj4yXXwwKSl7Y1tvPj4yXT03O2JyZWFrfVRSKGNbKGNbbT4+Ml18MCkrND4+Ml18MCxjW3A+PjJdfDAsY1tsPj4yXXwwKXwwO2FbKGNbKGNbbT4+Ml18MCkrND4+Ml18MCkrKGNbbD4+Ml18MCk+PjBdPTA7Y1tvPj4yXT1XYltjWyhjWyhjW24+PjJdfDApKzEyPj4yXXwwKSsxMj4+Ml0mMjU1XShjWyhjW24+PjJdfDApKzE2Pj4yXXwwLGNbKGNbbT4+Ml18MCkrND4+Ml18MCxjW2w+PjJdfDAsKGNbbT4+Ml18MCkrOHwwKXwwO2lmKCEoY1tvPj4yXXwwKSljW2NbKGNbbT4+Ml18MCkrOD4+Ml0+PjJdPWNbKGNbbj4+Ml18MCkrMTY+PjJdfXdoaWxlKDApO2lmKGNbbz4+Ml18MCl7Y1toPj4yXT1jW28+PjJdO3I9Y1toPj4yXXwwO2k9cTtyZXR1cm4gcnwwfWVsc2V7Y1toPj4yXT14ayhjW2o+PjJdfDApfDA7cj1jW2g+PjJdfDA7aT1xO3JldHVybiByfDB9cmV0dXJuIDB9ZnVuY3Rpb24geGsoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MCxnPTA7ZT1pO2k9aSsxNnwwO2c9ZSsxMnwwO2I9ZSs4fDA7Zj1lKzR8MDtkPWU7Y1tnPj4yXT1hO2NbYj4+Ml09Y1tnPj4yXTtjW2Y+PjJdPWNbY1tnPj4yXT4+Ml07YT0oY1tiPj4yXXwwKSsxMnwwO2NbYT4+Ml09KGNbYT4+Ml18MCkrMTtjW2Q+PjJdPVNiW2NbKGNbKGNbZj4+Ml18MCkrMTI+PjJdfDApKzIwPj4yXSYyNTVdKGNbKGNbYj4+Ml18MCkrOD4+Ml18MCwoY1tiPj4yXXwwKSsxNnwwLChjW2I+PjJdfDApKzIwfDAsKGNbYj4+Ml18MCkrMjR8MCwoY1tiPj4yXXwwKSsyOHwwLChjW2I+PjJdfDApKzMyfDApfDA7aWYoIShjW2Q+PjJdfDApKXtnPWNbZD4+Ml18MDtpPWU7cmV0dXJuIGd8MH1CayhjW2I+PjJdfDApO2lmKChjW2Q+PjJdfDApIT0xMDEpe2c9Y1tkPj4yXXwwO2k9ZTtyZXR1cm4gZ3wwfWNbZD4+Ml09MDtnPWNbZD4+Ml18MDtpPWU7cmV0dXJuIGd8MH1mdW5jdGlvbiB5ayhhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTA7ZD1pO2k9aSsxNnwwO2U9ZCs0fDA7Yj1kO2NbZT4+Ml09YTtjW2I+PjJdPWNbZT4+Ml07aT1kO3JldHVybiAoY1soY1tiPj4yXXwwKSsxNj4+Ml18MCk9PTB8MH1mdW5jdGlvbiB6ayhhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTA7Zz1pO2k9aSsxNnwwO2o9ZysxMnwwO2U9Zys4fDA7aD1nKzR8MDtmPWc7Y1tqPj4yXT1hO2NbZT4+Ml09YjtjW2g+PjJdPWQ7Y1tmPj4yXT1jW2o+PjJdO3N3aXRjaChjW2g+PjJdfDApe2Nhc2UgMDp7bWUoY1tlPj4yXXwwLGNbKGNbZj4+Ml18MCkrND4+Ml18MCwtMSwtMSk7aT1nO3JldHVybiAwfWNhc2UgMTp7bWUoY1tlPj4yXXwwLGNbKGNbZj4+Ml18MCkrMTY+PjJdfDAsY1soY1tmPj4yXXwwKSsyMD4+Ml18MCwtMSk7aT1nO3JldHVybiAwfWNhc2UgMjp7amUoY1tlPj4yXXwwLGNbKGNbZj4+Ml18MCkrMjQ+PjJdfDApO2k9ZztyZXR1cm4gMH1jYXNlIDM6e2plKGNbZT4+Ml18MCxjWyhjW2Y+PjJdfDApKzI4Pj4yXXwwKTtpPWc7cmV0dXJuIDB9ZGVmYXVsdDp7amUoY1tlPj4yXXwwLGNbKGNbZj4+Ml18MCkrMzI+PjJdfDApO2k9ZztyZXR1cm4gMH19cmV0dXJuIDB9ZnVuY3Rpb24gQWsoYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wO2Q9aTtpPWkrMTZ8MDtnPWQrOHwwO2U9ZCs0fDA7Zj1kO2NbZz4+Ml09YTtjW2U+PjJdPWI7Y1tmPj4yXT1jW2c+PjJdO2E9Y1soY1tmPj4yXXwwKSsxMj4+Ml18MDtiPWNbZT4+Ml18MDtjW2I+PjJdPWE7Y1tiKzQ+PjJdPSgoYXwwKTwwKTw8MzE+PjMxO2k9ZDtyZXR1cm4gMH1mdW5jdGlvbiBCayhhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTA7ZT1pO2k9aSsxNnwwO2I9ZSs0fDA7ZD1lO2NbYj4+Ml09YTtpZihjWyhjW2I+PjJdfDApKzg+PjJdfDApe2NbZD4+Ml09Y1tjW2I+PjJdPj4yXTtUYltjWyhjWyhjW2Q+PjJdfDApKzEyPj4yXXwwKSsxNj4+Ml0mMjU1XShjWyhjW2I+PjJdfDApKzg+PjJdfDApfDA7Y1soY1tiPj4yXXwwKSs4Pj4yXT0wfUtkKGNbKGNbYj4+Ml18MCkrND4+Ml18MCk7Y1soY1tiPj4yXXwwKSs0Pj4yXT0wO2NbKGNbYj4+Ml18MCkrMTY+PjJdPTA7Y1soY1tiPj4yXXwwKSsyMD4+Ml09MDtjWyhjW2I+PjJdfDApKzI0Pj4yXT0wO2NbKGNbYj4+Ml18MCkrMjg+PjJdPTA7Y1soY1tiPj4yXXwwKSszMj4+Ml09MDtjWyhjW2I+PjJdfDApKzEyPj4yXT0wO2k9ZTtyZXR1cm59ZnVuY3Rpb24gQ2soYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTA7bz1pO2k9aSs0OHwwO2U9byszMnwwO2Y9bysyOHwwO2c9bysyNHwwO249bysyMHwwO2o9bysxNnwwO2w9bysxMnwwO2g9bys4fDA7bT1vKzR8MDtrPW87Y1tlPj4yXT1hO2NbZj4+Ml09YjtjW2c+PjJdPWQ7Y1tuPj4yXT0wO2lmKCEoY1tlPj4yXXwwKSl7Y1tjW2c+PjJdPj4yXT0wO249Y1tuPj4yXXwwO2k9bztyZXR1cm4gbnwwfWNbbD4+Ml09MDtjW2o+PjJdPTA7d2hpbGUoMSl7aWYoKGNbaj4+Ml18MCk+PShjW2U+PjJdfDApKWJyZWFrO2Q9KGtSKGNbKGNbZj4+Ml18MCkrKGNbaj4+Ml08PDIpPj4yXXwwKXwwKSsxfDA7Y1tsPj4yXT0oY1tsPj4yXXwwKStkO2Nbaj4+Ml09KGNbaj4+Ml18MCkrMX1kPUlkKChjW2U+PjJdPDwyKSsoY1tsPj4yXXwwKXwwKXwwO2NbaD4+Ml09ZDtjW2NbZz4+Ml0+PjJdPWQ7aWYoIShjW2g+PjJdfDApKXtjW24+PjJdPTc7bj1jW24+PjJdfDA7aT1vO3JldHVybiBufDB9Y1ttPj4yXT0oY1toPj4yXXwwKSsoY1tlPj4yXTw8Mik7Y1tqPj4yXT0wO3doaWxlKDEpe2lmKChjW2o+PjJdfDApPj0oY1tlPj4yXXwwKSlicmVhaztjW2s+PjJdPWtSKGNbKGNbZj4+Ml18MCkrKGNbaj4+Ml08PDIpPj4yXXwwKXwwO2NbKGNbaD4+Ml18MCkrKGNbaj4+Ml08PDIpPj4yXT1jW20+PjJdO1RSKGNbbT4+Ml18MCxjWyhjW2Y+PjJdfDApKyhjW2o+PjJdPDwyKT4+Ml18MCwoY1trPj4yXXwwKSsxfDApfDA7T2soY1ttPj4yXXwwKTtjW20+PjJdPShjW20+PjJdfDApKygoY1trPj4yXXwwKSsxKTtjW2o+PjJdPShjW2o+PjJdfDApKzF9bj1jW24+PjJdfDA7aT1vO3JldHVybiBufDB9ZnVuY3Rpb24gRGsoYSxiLGQsZSl7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wO209aTtpPWkrMzJ8MDtsPW07Zj1tKzI4fDA7bz1tKzI0fDA7Zz1tKzIwfDA7aD1tKzE2fDA7aj1tKzEyfDA7az1tKzh8MDtuPW0rNHwwO2Nbbz4+Ml09YTtjW2c+PjJdPWI7Y1toPj4yXT1kO2Nbaj4+Ml09ZTtjW24+PjJdPWtSKGNbZz4+Ml18MCl8MDtjW2s+PjJdPUVrKGNbbz4+Ml18MCxjW2c+PjJdfDAsKGNbbj4+Ml18MCkrMXwwKXwwO2lmKGNbaz4+Ml18MCl7Y1tjW2g+PjJdPj4yXT1jW2s+PjJdO2NbZj4+Ml09MDtvPWNbZj4+Ml18MDtpPW07cmV0dXJuIG98MH1lbHNle289Y1tqPj4yXXwwO2NbbD4+Ml09Y1tnPj4yXTtGayhvLDIwNTk1LGwpO2NbZj4+Ml09MTtvPWNbZj4+Ml18MDtpPW07cmV0dXJuIG98MH1yZXR1cm4gMH1mdW5jdGlvbiBFayhhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTA7Zj1pO2k9aSsxNnwwO2o9ZisxMnwwO2g9Zis4fDA7Zz1mKzR8MDtlPWY7Y1tqPj4yXT1hO2NbaD4+Ml09YjtjW2c+PjJdPWQ7Y1tlPj4yXT1HayhjW2o+PjJdfDAsY1toPj4yXXwwLGNbZz4+Ml18MCl8MDtpZighKGNbZT4+Ml18MCkpe2o9MDtpPWY7cmV0dXJuIGp8MH1qPWNbKGNbZT4+Ml18MCkrOD4+Ml18MDtpPWY7cmV0dXJuIGp8MH1mdW5jdGlvbiBGayhhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MDtlPWk7aT1pKzMyfDA7Zj1lKzIwfDA7aD1lKzE2fDA7Zz1lO2NbZj4+Ml09YTtjW2g+PjJdPWI7S2QoY1tjW2Y+PjJdPj4yXXwwKTtjW2c+PjJdPWQ7Yj1OZChjW2g+PjJdfDAsZyl8MDtjW2NbZj4+Ml0+PjJdPWI7aT1lO3JldHVybn1mdW5jdGlvbiBHayhiLGQsZSl7Yj1ifDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MDttPWk7aT1pKzMyfDA7Zj1tKzIwfDA7Zz1tKzE2fDA7aD1tKzEyfDA7aj1tKzh8MDtrPW0rNHwwO2w9bTtjW2c+PjJdPWI7Y1toPj4yXT1kO2Nbaj4+Ml09ZTtpZigoY1tnPj4yXXwwKSE9MD8oY1soY1tnPj4yXXwwKSsxNj4+Ml18MCkhPTA6MCl7Y1tsPj4yXT1IayhhW2NbZz4+Ml0+PjBdfDApfDA7Y1trPj4yXT1ZYltjW2w+PjJdJjI1NV0oY1toPj4yXXwwLGNbaj4+Ml18MCl8MDtjW2Y+PjJdPUlrKGNbZz4+Ml18MCxjW2g+PjJdfDAsY1tqPj4yXXwwLGNbaz4+Ml0mKGNbKGNbZz4+Ml18MCkrMTI+PjJdfDApLTEpfDA7bD1jW2Y+PjJdfDA7aT1tO3JldHVybiBsfDB9Y1tmPj4yXT0wO2w9Y1tmPj4yXXwwO2k9bTtyZXR1cm4gbHwwfWZ1bmN0aW9uIEhrKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MDtkPWk7aT1pKzE2fDA7Yj1kKzR8MDtlPWQ7Y1tlPj4yXT1hO2lmKChjW2U+PjJdfDApPT0xKWNbYj4+Ml09MTgwO2Vsc2UgY1tiPj4yXT0xODE7aT1kO3JldHVybiBjW2I+PjJdfDB9ZnVuY3Rpb24gSWsoYixkLGUsZil7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MDtxPWk7aT1pKzQ4fDA7az1xKzMyfDA7Zz1xKzI4fDA7bD1xKzI0fDA7bT1xKzIwfDA7aD1xKzE2fDA7bz1xKzEyfDA7bj1xKzh8MDtwPXErNHwwO2o9cTtjW2c+PjJdPWI7Y1tsPj4yXT1kO2NbbT4+Ml09ZTtjW2g+PjJdPWY7YTpkbyBpZihjWyhjW2c+PjJdfDApKzE2Pj4yXXwwKXtjW2o+PjJdPShjWyhjW2c+PjJdfDApKzE2Pj4yXXwwKSsoY1toPj4yXTw8Myk7Y1tvPj4yXT1jWyhjW2o+PjJdfDApKzQ+PjJdO2Nbbj4+Ml09Y1tjW2o+PjJdPj4yXTtjW3A+PjJdPUprKGFbY1tnPj4yXT4+MF18MCl8MDt3aGlsZSgxKXtkPWNbbj4+Ml18MDtjW24+PjJdPWQrLTE7aWYoISgoZHwwKSE9MD8oY1tvPj4yXXwwKSE9MDowKSlicmVhayBhO2Q9KFdiW2NbcD4+Ml0mMjU1XShjWyhjW28+PjJdfDApKzEyPj4yXXwwLGNbKGNbbz4+Ml18MCkrMTY+PjJdfDAsY1tsPj4yXXwwLGNbbT4+Ml18MCl8MCk9PTA7Zz1jW28+PjJdfDA7aWYoZClicmVhaztjW28+PjJdPWNbZz4+Ml19Y1trPj4yXT1nO3A9Y1trPj4yXXwwO2k9cTtyZXR1cm4gcHwwfXdoaWxlKDApO2Nbaz4+Ml09MDtwPWNbaz4+Ml18MDtpPXE7cmV0dXJuIHB8MH1mdW5jdGlvbiBKayhhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTA7ZD1pO2k9aSsxNnwwO2I9ZCs0fDA7ZT1kO2NbZT4+Ml09YTtpZigoY1tlPj4yXXwwKT09MSljW2I+PjJdPTE0MjtlbHNlIGNbYj4+Ml09MTQzO2k9ZDtyZXR1cm4gY1tiPj4yXXwwfWZ1bmN0aW9uIEtrKGEsYixkLGUpe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MDtrPWk7aT1pKzMyfDA7Zj1rKzE2fDA7Zz1rKzEyfDA7aD1rKzh8MDtqPWsrNHwwO2w9aztjW2c+PjJdPWE7Y1toPj4yXT1iO2Nbaj4+Ml09ZDtjW2w+PjJdPWU7aWYoKGNbaD4+Ml18MCkhPShjW2w+PjJdfDApKXtjW2Y+PjJdPTE7bD1jW2Y+PjJdfDA7aT1rO3JldHVybiBsfDB9ZWxzZXtjW2Y+PjJdPWxSKGNbZz4+Ml18MCxjW2o+PjJdfDAsY1toPj4yXXwwKXwwO2w9Y1tmPj4yXXwwO2k9aztyZXR1cm4gbHwwfXJldHVybiAwfWZ1bmN0aW9uIExrKGEsYixkLGUpe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MDtrPWk7aT1pKzMyfDA7Zj1rKzE2fDA7Zz1rKzEyfDA7aD1rKzh8MDtqPWsrNHwwO2w9aztjW2c+PjJdPWE7Y1toPj4yXT1iO2Nbaj4+Ml09ZDtjW2w+PjJdPWU7aWYoKGNbaD4+Ml18MCkhPShjW2w+PjJdfDApKXtjW2Y+PjJdPTE7bD1jW2Y+PjJdfDA7aT1rO3JldHVybiBsfDB9ZWxzZXtjW2Y+PjJdPWVSKGNbZz4+Ml18MCxjW2o+PjJdfDAsY1toPj4yXXwwKXwwO2w9Y1tmPj4yXXwwO2k9aztyZXR1cm4gbHwwfXJldHVybiAwfWZ1bmN0aW9uIE1rKGIsZCl7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTA7aD1pO2k9aSsxNnwwO2o9aCsxMnwwO2U9aCs4fDA7Zz1oKzR8MDtmPWg7Y1tqPj4yXT1iO2NbZT4+Ml09ZDtjW2c+PjJdPWNbaj4+Ml07Y1tmPj4yXT0wO2lmKChjW2U+PjJdfDApPD0wKWNbZT4+Ml09a1IoY1tnPj4yXXwwKXwwO3doaWxlKDEpe2Q9Y1tmPj4yXXwwO2lmKChjW2U+PjJdfDApPD0wKWJyZWFrO2I9ZDw8M15jW2Y+PjJdO2o9Y1tnPj4yXXwwO2NbZz4+Ml09aisxO2NbZj4+Ml09Yl5hW2o+PjBdO2NbZT4+Ml09KGNbZT4+Ml18MCkrLTF9aT1oO3JldHVybiBkJjIxNDc0ODM2NDd8MH1mdW5jdGlvbiBOayhiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wO2g9aTtpPWkrMTZ8MDtqPWgrMTJ8MDtlPWgrOHwwO2Y9aCs0fDA7Zz1oO2Nbaj4+Ml09YjtjW2U+PjJdPWQ7Y1tmPj4yXT0wO2NbZz4+Ml09Y1tqPj4yXTt3aGlsZSgxKXtqPWNbZT4+Ml18MDtjW2U+PjJdPWorLTE7ZD1jW2Y+PjJdfDA7aWYoKGp8MCk8PTApYnJlYWs7Yj1kPDwzXmNbZj4+Ml07aj1jW2c+PjJdfDA7Y1tnPj4yXT1qKzE7Y1tmPj4yXT1iXmFbaj4+MF19aT1oO3JldHVybiBkJjIxNDc0ODM2NDd8MH1mdW5jdGlvbiBPayhiKXtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTA7aj1pO2k9aSsxNnwwO2U9ais4fDA7aD1qKzEyfDA7Zj1qKzR8MDtnPWo7Y1tlPj4yXT1iO2FbaD4+MF09YVtjW2U+PjJdPj4wXXwwO2lmKCgoKGFbaD4+MF18MCkhPTkxPyhhW2g+PjBdfDApIT0zOTowKT8oYVtoPj4wXXwwKSE9MzQ6MCk/KGFbaD4+MF18MCkhPTk2OjApe2k9ajtyZXR1cm59Y1tmPj4yXT0xO2NbZz4+Ml09MDtpZigoYVtoPj4wXXwwKT09OTEpYVtoPj4wXT05Mzt3aGlsZSgxKXtpZighKGFbKGNbZT4+Ml18MCkrKGNbZj4+Ml18MCk+PjBdfDApKWJyZWFrO2I9Y1tmPj4yXXwwO2Q9YisxfDA7aWYoKGFbKGNbZT4+Ml18MCkrKGNbZj4+Ml18MCk+PjBdfDApIT0oYVtoPj4wXXwwKSl7Y1tmPj4yXT1kO2I9YVsoY1tlPj4yXXwwKStiPj4wXXwwO2Q9Y1tnPj4yXXwwO2NbZz4+Ml09ZCsxO2FbKGNbZT4+Ml18MCkrZD4+MF09Yjtjb250aW51ZX1pZigoYVsoY1tlPj4yXXwwKStkPj4wXXwwKSE9KGFbaD4+MF18MCkpYnJlYWs7Yj1hW2g+PjBdfDA7ZD1jW2c+PjJdfDA7Y1tnPj4yXT1kKzE7YVsoY1tlPj4yXXwwKStkPj4wXT1iO2NbZj4+Ml09KGNbZj4+Ml18MCkrMn1hWyhjW2U+PjJdfDApKyhjW2c+PjJdfDApPj4wXT0wO2k9ajtyZXR1cm59ZnVuY3Rpb24gUGsoYSxiLGQsZSxmLGcpe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO3ZhciBoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTA7aD1pO2k9aSszMnwwO289aCsyMHwwO249aCsxNnwwO209aCsxMnwwO2w9aCs4fDA7az1oKzR8MDtqPWg7Y1tvPj4yXT1hO2Nbbj4+Ml09YjtjW20+PjJdPWQ7Y1tsPj4yXT1lO2Nbaz4+Ml09ZjtjW2o+PjJdPWc7Zz1McCgxLGNbbz4+Ml18MCxjW24+PjJdfDAsY1ttPj4yXXwwLGNbbD4+Ml18MCxjW2s+PjJdfDAsY1tqPj4yXXwwKXwwO2k9aDtyZXR1cm4gZ3wwfWZ1bmN0aW9uIFFrKGEsYixkLGUsZixnKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDt2YXIgaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wO2g9aTtpPWkrMzJ8MDtvPWgrMjB8MDtuPWgrMTZ8MDttPWgrMTJ8MDtsPWgrOHwwO2s9aCs0fDA7aj1oO2Nbbz4+Ml09YTtjW24+PjJdPWI7Y1ttPj4yXT1kO2NbbD4+Ml09ZTtjW2s+PjJdPWY7Y1tqPj4yXT1nO2c9THAoMCxjW28+PjJdfDAsY1tuPj4yXXwwLGNbbT4+Ml18MCxjW2w+PjJdfDAsY1trPj4yXXwwLGNbaj4+Ml18MCl8MDtpPWg7cmV0dXJuIGd8MH1mdW5jdGlvbiBSayhiLGUpe2I9YnwwO2U9ZXwwO3ZhciBmPTAsZz0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MDt1PWk7aT1pKzY0fDA7cj11KzQ4fDA7dj11KzQ0fDA7cz11KzQwfDA7bz11KzM2fDA7Zz11KzMyfDA7aj11KzI4fDA7bj11KzI0fDA7az11KzIwfDA7bD11KzE2fDA7bT11KzEyfDA7Zj11Kzh8MDtwPXUrNHwwO3Q9dTtjW3Y+PjJdPWI7Y1tzPj4yXT1lO2Nbbz4+Ml09Y1t2Pj4yXTtjW2o+PjJdPS0xO2Nbbj4+Ml09LTE7Y1trPj4yXT0tMTtjW2w+PjJdPS0xO2NbKGNbcz4+Ml18MCkrMjA+PjJdPTA7aFsoY1tzPj4yXXwwKSs0MD4+M109NS4wZTY7Y1tnPj4yXT0wO2E6d2hpbGUoMSl7aWYoKGNbZz4+Ml18MCk+PShjW2Nbcz4+Ml0+PjJdfDApKWJyZWFrO2NbcD4+Ml09KGNbKGNbcz4+Ml18MCkrND4+Ml18MCkrKChjW2c+PjJdfDApKjEyfDApO2U9Y1twPj4yXXwwO2I6ZG8gaWYoIShkWyhjW3A+PjJdfDApKzU+PjBdfDApKXtpZigoZFtlKzQ+PjBdfDApPT02NCl7cT01O2JyZWFrIGF9fWVsc2V7aWYoKGNbZT4+Ml18MCk8MCllPTE7ZWxzZSBlPShjW2NbcD4+Ml0+PjJdfDApPT0oKGNbKGNbbz4+Ml18MCkrMjQ+PjJdfDApKzF8MCk7Y1tmPj4yXT1lJjE7aWYoKGNbaj4+Ml18MCk8MD8oKGNbZj4+Ml18MCkhPTA/KGRbKGNbcD4+Ml18MCkrND4+MF18MCk9PTI6MCk6MCl7Y1soY1tzPj4yXXwwKSsyMD4+Ml09MTtoWyhjW3M+PjJdfDApKzQwPj4zXT0xLjA7Y1tqPj4yXT1jW2c+PjJdfWlmKCgoZFsoY1twPj4yXXwwKSs0Pj4wXXwwKT09NjQ/KGNbY1twPj4yXT4+Ml18MCk+PTA6MCk/KGNbY1twPj4yXT4+Ml18MCk8PShjWyhjW28+PjJdfDApKzI0Pj4yXXwwKTowKXtjWyhjW3M+PjJdfDApKzIwPj4yXT0yKyhjW2NbcD4+Ml0+PjJdfDApO2hbKGNbcz4+Ml18MCkrNDA+PjNdPTIuMDtjW2o+PjJdPWNbZz4+Ml19aWYoKGRbKGNbcD4+Ml18MCkrND4+MF18MCk9PTI/KGNbY1twPj4yXT4+Ml18MCk9PSgoY1soY1tvPj4yXXwwKSsyND4+Ml18MCkrMnwwKTowKWNbbj4+Ml09Y1tnPj4yXTtpZihjW2Y+PjJdfDApc3dpdGNoKGRbKGNbcD4+Ml18MCkrND4+MF18MCl7Y2FzZSA0OmNhc2UgMzI6e2Nbaz4+Ml09Y1tnPj4yXTticmVhayBifWNhc2UgMTY6Y2FzZSA4OntjW2w+PjJdPWNbZz4+Ml07YnJlYWsgYn1kZWZhdWx0OmJyZWFrIGJ9fXdoaWxlKDApO2NbZz4+Ml09KGNbZz4+Ml18MCkrMX1pZigocXwwKT09NSl7Y1soY1tzPj4yXXwwKSsyMD4+Ml09MDtoWyhjW3M+PjJdfDApKzQwPj4zXT0xLmUrNTA7SnAoY1tzPj4yXXwwLDAsMjYyMTQ0KTtjW3I+PjJdPTA7dj1jW3I+PjJdfDA7aT11O3JldHVybiB2fDB9aWYoKGNbKGNbcz4+Ml18MCkrMjA+PjJdfDApPT0xKUtwKGNbcz4+Ml18MCk7Y1ttPj4yXT0xO2lmKChjW2o+PjJdfDApPj0wKXt2PWNbbT4+Ml18MDtjW20+PjJdPXYrMTtjWyhjWyhjW3M+PjJdfDApKzE2Pj4yXXwwKSsoY1tqPj4yXTw8Myk+PjJdPXY7YVsoY1soY1tzPj4yXXwwKSsxNj4+Ml18MCkrKGNbaj4+Ml08PDMpKzQ+PjBdPTF9aWYoKGNbbj4+Ml18MCk+PTApe3Y9KGNbcz4+Ml18MCkrMjB8MDtjW3Y+PjJdPWNbdj4+Ml18NjU1MzY7dj1jW20+PjJdfDA7Y1ttPj4yXT12KzE7Y1soY1soY1tzPj4yXXwwKSsxNj4+Ml18MCkrKGNbbj4+Ml08PDMpPj4yXT12fWlmKChjW2s+PjJdfDApPj0wKXt2PShjW3M+PjJdfDApKzIwfDA7Y1t2Pj4yXT1jW3Y+PjJdfDEzMTA3Mjt2PWNbbT4+Ml18MDtjW20+PjJdPXYrMTtjWyhjWyhjW3M+PjJdfDApKzE2Pj4yXXwwKSsoY1trPj4yXTw8Myk+PjJdPXZ9aWYoKGNbbD4+Ml18MCk+PTApe3Y9KGNbcz4+Ml18MCkrMjB8MDtjW3Y+PjJdPWNbdj4+Ml18MjYyMTQ0O3Y9Y1ttPj4yXXwwO2NbbT4+Ml09disxO2NbKGNbKGNbcz4+Ml18MCkrMTY+PjJdfDApKyhjW2w+PjJdPDwzKT4+Ml09dn1kbyBpZigoY1soY1tzPj4yXXwwKSs4Pj4yXXwwKT09MSl7Y1t0Pj4yXT1jWyhjW3M+PjJdfDApKzEyPj4yXTtpZigoY1tjW3Q+PjJdPj4yXXwwKT49MD8oY1tjW3Q+PjJdPj4yXXwwKSE9KChjWyhjW28+PjJdfDApKzI0Pj4yXXwwKSsxfDApOjApYnJlYWs7ZT0oY1tzPj4yXXwwKSsyNHwwO2lmKGFbKGNbdD4+Ml18MCkrND4+MF18MCljW2U+PjJdPTIzNjI0O2Vsc2UgY1tlPj4yXT0yMzYyOTtjWyhjW3M+PjJdfDApKzMyPj4yXT0xfXdoaWxlKDApO2Nbcj4+Ml09MDt2PWNbcj4+Ml18MDtpPXU7cmV0dXJuIHZ8MH1mdW5jdGlvbiBTayhhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wO2U9aTtpPWkrMTZ8MDtmPWUrOHwwO2Q9ZSs0fDA7Yj1lO2NbZj4+Ml09YTtjW2Q+PjJdPWNbZj4+Ml07Y1tiPj4yXT0wO3doaWxlKDEpe2lmKChjW2I+PjJdfDApPj00MClicmVhaztYZChjWyhjW2Q+PjJdfDApKzU2KyhjW2I+PjJdPDwyKT4+Ml18MCl8MDtjW2I+PjJdPShjW2I+PjJdfDApKzF9S2QoY1soY1tkPj4yXXwwKSsyNDA+PjJdfDApO0tkKGNbKGNbZD4+Ml18MCkrMjE2Pj4yXXwwKTtLZChjWyhjW2Q+PjJdfDApKzIyMD4+Ml18MCk7S2QoY1soY1tkPj4yXXwwKSs0MD4+Ml18MCk7S2QoY1soY1tkPj4yXXwwKSs0ND4+Ml18MCk7VGJbY1soY1tjWyhjW2Q+PjJdfDApKzM2Pj4yXT4+Ml18MCkrOD4+Ml0mMjU1XShjWyhjW2Q+PjJdfDApKzM2Pj4yXXwwKXwwO0tkKGNbZD4+Ml18MCk7aT1lO3JldHVybiAwfWZ1bmN0aW9uIFRrKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MDtuPWk7aT1pKzY0fDA7aj1uKzMyfDA7aD1uKzI0fDA7bD1uKzE2fDA7az1uKzh8MDtnPW47Yj1uKzU2fDA7ZT1uKzUyfDA7Zj1uKzQ4fDA7bT1uKzQ0fDA7ZD1uKzQwfDA7Y1tiPj4yXT1hO2NbZT4+Ml09Y1tiPj4yXTtjW2Y+PjJdPTA7Y1ttPj4yXT1jWyhjW2U+PjJdfDApKzE2Pj4yXTtjW2Q+PjJdPWNbKGNbZT4+Ml18MCkrMTI+PjJdO2lmKCEoY1soY1tlPj4yXXwwKSs0MD4+Ml18MCkpe2E9Y1tkPj4yXXwwO289Y1soY1tlPj4yXXwwKSsyMD4+Ml18MDtjW2c+PjJdPWNbbT4+Ml07Y1tnKzQ+PjJdPW87bmwoZixhLDIzODI0LGcpfW89Y1tkPj4yXXwwO2c9Y1soY1tlPj4yXXwwKSsyMD4+Ml18MDtjW2s+PjJdPWNbbT4+Ml07Y1trKzQ+PjJdPWc7bmwoZixvLDIzODYxLGspO289Y1tkPj4yXXwwO2s9Y1soY1tlPj4yXXwwKSsyMD4+Ml18MDtjW2w+PjJdPWNbbT4+Ml07Y1tsKzQ+PjJdPWs7bmwoZixvLDIzODk5LGwpO289Y1tkPj4yXXwwO2w9Y1soY1tlPj4yXXwwKSsyMD4+Ml18MDtjW2g+PjJdPWNbbT4+Ml07Y1toKzQ+PjJdPWw7bmwoZixvLDIzOTM1LGgpO289Y1tkPj4yXXwwO2w9Y1soY1tlPj4yXXwwKSsyMD4+Ml18MDtjW2o+PjJdPWNbbT4+Ml07Y1tqKzQ+PjJdPWw7bmwoZixvLDIzOTcyLGopO2lmKCEoY1tmPj4yXXwwKSl7bz1TayhjW2I+PjJdfDApfDA7aT1uO3JldHVybiBvfDB9ZWxzZXtvPWNbZj4+Ml18MDtpPW47cmV0dXJuIG98MH1yZXR1cm4gMH1mdW5jdGlvbiBVayhhLGIpe2E9YXwwO2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTA7Zj1pO2k9aSsxNnwwO2U9ZisxMnwwO2c9Zis0fDA7ZD1mO2NbZis4Pj4yXT1hO2NbZz4+Ml09YjtiPUlkKDk2KXwwO2NbZD4+Ml09YjtjW2NbZz4+Ml0+PjJdPWI7aWYoY1tkPj4yXXwwKXtkPWNbZD4+Ml18MDthPWQrOTZ8MDtkb3tjW2Q+PjJdPTA7ZD1kKzR8MH13aGlsZSgoZHwwKTwoYXwwKSk7Y1tlPj4yXT0wO2c9Y1tlPj4yXXwwO2k9ZjtyZXR1cm4gZ3wwfWVsc2V7Y1tlPj4yXT03O2c9Y1tlPj4yXXwwO2k9ZjtyZXR1cm4gZ3wwfXJldHVybiAwfWZ1bmN0aW9uIFZrKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MDtiPWk7aT1pKzE2fDA7ZT1iKzR8MDtkPWI7Y1tlPj4yXT1hO2NbZD4+Ml09Y1tlPj4yXTtYZChjWyhjW2Q+PjJdfDApKzg+PjJdfDApfDA7Z3AoY1soY1tkPj4yXXwwKSsxMj4+Ml18MCk7SXAoY1tkPj4yXXwwKTtLZChjWyhjW2Q+PjJdfDApKzQ0Pj4yXXwwKTt6bShjWyhjW2Q+PjJdfDApKzkyPj4yXXwwKTtLZChjW2Q+PjJdfDApO2k9YjtyZXR1cm4gMH1mdW5jdGlvbiBXayhlLGYsZyxoLGope2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO3ZhciBrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxEPTAsRT0wO0U9aTtpPWkrMTEyfDA7Qj1FKzMyfDA7QT1FO3Q9RSsxMDh8MDt1PUUrMTA0fDA7az1FKzEwMHwwO249RSs5NnwwO2w9RSs4OHwwO3o9RSs4NHwwO0Q9RSs4MHwwO289RSs3NnwwO3Y9RSs3MnwwO3c9RSs2OHwwO3E9RSs2NHwwO3I9RSs2MHwwO3g9RSs1NnwwO3k9RSs1MnwwO209RSs0OHwwO3A9RSs0NHwwO3M9RSs0MHwwO2NbdT4+Ml09ZTtjW2s+PjJdPWY7Y1tuPj4yXT1nO2NbRSs5Mj4+Ml09aDtjW2w+PjJdPWo7Y1t6Pj4yXT0wO2Nbdj4+Ml09Y1tjW3U+PjJdPj4yXTtjW3c+PjJdPWNbdT4+Ml07Y1txPj4yXT0wO2Nbcj4+Ml09MDtjW3g+PjJdPTA7Y1t5Pj4yXT0wO2Nbbz4+Ml09Y1trPj4yXSY2NTUzNTtjW20+PjJdPTA7aWYoY1tvPj4yXXwwKXtlPWNbbT4+Ml18MDtjW20+PjJdPWUrMTtjW3E+PjJdPWNbKGNbbD4+Ml18MCkrKGU8PDIpPj4yXX1pZihjW2s+PjJdJjY1NTM2KXtlPWNbbT4+Ml18MDtjW20+PjJdPWUrMTtjW3I+PjJdPWNbKGNbbD4+Ml18MCkrKGU8PDIpPj4yXX1pZihjW2s+PjJdJjEzMTA3Mil7ZT1jW20+PjJdfDA7Y1ttPj4yXT1lKzE7Y1t4Pj4yXT1jWyhjW2w+PjJdfDApKyhlPDwyKT4+Ml19aWYoY1trPj4yXSYyNjIxNDQpe2U9Y1ttPj4yXXwwO2NbbT4+Ml09ZSsxO2NbeT4+Ml09Y1soY1tsPj4yXXwwKSsoZTw8Mik+PjJdfVhkKGNbKGNbdz4+Ml18MCkrOD4+Ml18MCl8MDtLZChjWyhjW3c+PjJdfDApKzQ0Pj4yXXwwKTt6bShjWyhjW3c+PjJdfDApKzkyPj4yXXwwKTtncChjWyhjW3c+PjJdfDApKzEyPj4yXXwwKTtrPShjW3U+PjJdfDApKzR8MDtsPWsrOTJ8MDtkb3tjW2s+PjJdPTA7az1rKzR8MH13aGlsZSgoa3wwKTwobHwwKSk7ZT1ocChjW3g+PjJdfDAsMCwtMjE0NzQ4MzY0OCl8MDtoPShjW3c+PjJdfDApKzcyfDA7Y1toPj4yXT1lO2NbaCs0Pj4yXT1DO2g9aHAoY1t5Pj4yXXwwLC0xLDIxNDc0ODM2NDcpfDA7ZT0oY1t3Pj4yXXwwKSs4MHwwO2NbZT4+Ml09aDtjW2UrND4+Ml09QztpZihjW24+PjJdfDApYVsoY1t3Pj4yXXwwKSs1Mj4+MF09KGFbY1tuPj4yXT4+MF18MCk9PTY4O2Vsc2UgYVsoY1t3Pj4yXXwwKSs1Mj4+MF09YVsoY1t2Pj4yXXwwKSsyMzE+PjBdfDA7YlsoY1t3Pj4yXXwwKSs0Pj4xXT1jW28+PjJdO2RvIGlmKChjW28+PjJdfDApIT0xJihjW28+PjJdfDApIT0wKXtjW3A+PjJdPShjW28+PjJdfDApLTI7Y1tzPj4yXT0kZChjW3E+PjJdfDApfDA7aWYoKGNbcz4+Ml18MCk9PTA/KGVlKGNbcT4+Ml18MCl8MCkhPTU6MCl7Y1t0Pj4yXT03O0Q9Y1t0Pj4yXXwwO2k9RTtyZXR1cm4gRHwwfWNbKGNbdz4+Ml18MCkrMTY+PjJdPTA7aWYoY1tyPj4yXXwwKXtyPWNlKGNbcj4+Ml18MCl8MDtjWyhjW3c+PjJdfDApKzE2Pj4yXT1yfWNbej4+Ml09aXAoY1soY1t2Pj4yXXwwKSszNj4+Ml18MCxjWyhjW3c+PjJdfDApKzE2Pj4yXXwwLGNbKGNbdj4+Ml18MCkrMjg+PjJdfDAsZFsoY1t2Pj4yXXwwKSsyMjg+PjBdfDAsY1soY1t2Pj4yXXwwKSsyND4+Ml18MCxjW3A+PjJdfDAsY1tzPj4yXXwwLC0xLChjW3c+PjJdfDApKzEyfDAsKGNbdj4+Ml18MCkrOHwwKXwwO2lmKGNbej4+Ml18MCl7Y1t0Pj4yXT1jW3o+PjJdO0Q9Y1t0Pj4yXXwwO2k9RTtyZXR1cm4gRHwwfWNbej4+Ml09anAoY1t3Pj4yXXwwKXwwO3ltKGNbdj4+Ml18MCk7aWYoIShjW3o+PjJdfDApKXtjWyhjW3c+PjJdfDApKzQwPj4yXT1jWyhjW3c+PjJdfDApKzQ0Pj4yXTtzPShjW3c+PjJdfDApKzMyfDA7Y1tzPj4yXT0wO2Nbcys0Pj4yXT0wO2JyZWFrfWNbdD4+Ml09Y1t6Pj4yXTtEPWNbdD4+Ml18MDtpPUU7cmV0dXJuIER8MH13aGlsZSgwKTtkbyBpZighKGNbbz4+Ml18MCkpe2s9Y1soY1t2Pj4yXXwwKSsyMTY+PjJdfDA7bD1jW3c+PjJdfDA7aWYoKGNbeD4+Ml18MCkhPTB8KGNbeT4+Ml18MCkhPTApe3I9bCs3MnwwO3E9Y1tyPj4yXXwwO3I9Y1tyKzQ+PjJdfDA7eD0oY1t3Pj4yXXwwKSs4MHwwO3M9Y1t4Pj4yXXwwO3g9Y1t4KzQ+PjJdfDA7Qj0oZFsoY1t3Pj4yXXwwKSs1Mj4+MF18MCkhPTA/MjM2MjQ6MjM2Mjk7Y1tBPj4yXT1rO3k9QSs4fDA7Y1t5Pj4yXT1xO2NbeSs0Pj4yXT1yO3k9QSsxNnwwO2NbeT4+Ml09cztjW3krND4+Ml09eDtjW0ErMjQ+PjJdPUI7Y1tEPj4yXT1PZCgyMzYzMyxBKXwwfWVsc2V7QT0oZFtsKzUyPj4wXXwwKSE9MD8yMzYyNDoyMzYyOTtjW0I+PjJdPWs7Y1tCKzQ+PjJdPUE7Y1tEPj4yXT1PZCgyMzY5NSxCKXwwfWlmKGNbRD4+Ml18MCl7Y1t6Pj4yXT1hZihjWyhjW3Y+PjJdfDApKzEyPj4yXXwwLGNbRD4+Ml18MCwtMSwoY1t3Pj4yXXwwKSs4fDAsMCl8MDtLZChjW0Q+PjJdfDApO2JyZWFrfWVsc2V7Y1t6Pj4yXT03O2JyZWFrfX1lbHNlIGlmKChjW28+PjJdfDApPT0xPyhjW3o+PjJdPUZuKGNbdz4+Ml18MCwoY1t3Pj4yXXwwKSs4fDApfDAsKGNbej4+Ml18MCk9PTApOjApY1t6Pj4yXT1PZShjWyhjW3c+PjJdfDApKzg+PjJdfDAsMSxjW3E+PjJdfDApfDA7d2hpbGUoMCk7aWYoY1t6Pj4yXXwwKXtjW3Q+PjJdPWNbej4+Ml07RD1jW3Q+PjJdfDA7aT1FO3JldHVybiBEfDB9ZWxzZXtjW3Q+PjJdPVhrKGNbdT4+Ml18MCl8MDtEPWNbdD4+Ml18MDtpPUU7cmV0dXJuIER8MH1yZXR1cm4gMH1mdW5jdGlvbiBYayhkKXtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wO2g9aTtpPWkrMTZ8MDtlPWgrOHwwO2c9aCs0fDA7Zj1oO2NbZT4+Ml09ZDtjW2Y+PjJdPWNbZT4+Ml07aWYoKGJbKGNbZj4+Ml18MCkrND4+MV18MCkhPTE/KGJbKGNbZj4+Ml18MCkrND4+MV18MCkhPTA6MCl7Y1tnPj4yXT1mcChjW2U+PjJdfDApfDA7Zz1jW2c+PjJdfDA7aT1oO3JldHVybiBnfDB9ZD0xMDAhPSh0ZShjWyhjW2Y+PjJdfDApKzg+PjJdfDApfDApO2U9Y1tmPj4yXXwwO2lmKGQpe2FbZSs2Pj4wXT0xO2NbZz4+Ml09WWQoY1soY1tmPj4yXXwwKSs4Pj4yXXwwKXwwO2c9Y1tnPj4yXXwwO2k9aDtyZXR1cm4gZ3wwfWVsc2V7ZD1EZShjW2UrOD4+Ml18MCwwKXwwO2Y9KGNbZj4+Ml18MCkrMzJ8MDtjW2Y+PjJdPWQ7Y1tmKzQ+PjJdPUM7Y1tnPj4yXT0wO2c9Y1tnPj4yXXwwO2k9aDtyZXR1cm4gZ3wwfXJldHVybiAwfWZ1bmN0aW9uIFlrKGEpe2E9YXwwO3ZhciBiPTAsZT0wO2U9aTtpPWkrMTZ8MDtiPWU7Y1tiPj4yXT1hO2k9ZTtyZXR1cm4gZFsoY1tiPj4yXXwwKSs2Pj4wXXwwfDB9ZnVuY3Rpb24gWmsoYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wO2w9aTtpPWkrMzJ8MDttPWwrMjR8MDtlPWwrMjB8MDtmPWwrMTZ8MDtrPWwrMTJ8MDtqPWwrOHwwO2g9bCs0fDA7Zz1sO2NbbT4+Ml09YTtjW2U+PjJdPWI7Y1tmPj4yXT1kO2Nbaz4+Ml09MDtjW2o+PjJdPWNbbT4+Ml07Y1toPj4yXT1jW2NbbT4+Ml0+PjJdO2lmKChjW2Y+PjJdfDApPT0oKGNbKGNbaD4+Ml18MCkrMjQ+PjJdfDApKzF8MCkpe209KGNbaj4+Ml18MCkrMzJ8MDtrZShjW2U+PjJdfDAsY1ttPj4yXXwwLGNbbSs0Pj4yXXwwKTttPWNbaz4+Ml18MDtpPWw7cmV0dXJuIG18MH1pZigoY1tmPj4yXXwwKT09KGNbKGNbaD4+Ml18MCkrMjQ+PjJdfDApKXtmZShjW2U+PjJdfDAsaiw0LC0xKTttPWNbaz4+Ml18MDtpPWw7cmV0dXJuIG18MH1pZigoY1tmPj4yXXwwKT09KChjWyhjW2g+PjJdfDApKzI0Pj4yXXwwKSsyfDApPyhjWyhjW2o+PjJdfDApKzEyPj4yXXwwKSE9MDowKXttPWNbKGNbaj4+Ml18MCkrMTY+PjJdfDA7a2UoY1tlPj4yXXwwLG0sKChtfDApPDApPDwzMT4+MzEpO209Y1trPj4yXXwwO2k9bDtyZXR1cm4gbXwwfWNbaz4+Ml09dG4oMCxjW2o+PjJdfDApfDA7aWYoY1trPj4yXXwwKXttPWNbaz4+Ml18MDtpPWw7cmV0dXJuIG18MH1pZigoY1tmPj4yXXwwKT09KChjWyhjW2g+PjJdfDApKzI0Pj4yXXwwKSsyfDApKXtjW2c+PjJdPTA7aWYoY1soY1toPj4yXXwwKSs0ND4+Ml18MCljW2c+PjJdPUNlKGNbKGNbaj4+Ml18MCkrOD4+Ml18MCwoY1soY1toPj4yXXwwKSsyND4+Ml18MCkrMXwwKXwwO2plKGNbZT4+Ml18MCxjW2c+PjJdfDApO209Y1trPj4yXXwwO2k9bDtyZXR1cm4gbXwwfWVsc2V7bT15ZShjWyhjW2o+PjJdfDApKzg+PjJdfDApfDA7aWYoKG18MCk8PSgoY1tmPj4yXXwwKSsxfDApKXttPWNbaz4+Ml18MDtpPWw7cmV0dXJuIG18MH1tPWNbZT4+Ml18MDtvZShtLEZlKGNbKGNbaj4+Ml18MCkrOD4+Ml18MCwoY1tmPj4yXXwwKSsxfDApfDApO209Y1trPj4yXXwwO2k9bDtyZXR1cm4gbXwwfXJldHVybiAwfWZ1bmN0aW9uIF9rKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MDtkPWk7aT1pKzE2fDA7Zz1kKzh8MDtmPWQrNHwwO2U9ZDtjW2c+PjJdPWE7Y1tmPj4yXT1iO2NbZT4+Ml09Y1tnPj4yXTtlPShjW2U+PjJdfDApKzMyfDA7YT1jW2UrND4+Ml18MDtiPWNbZj4+Ml18MDtjW2I+PjJdPWNbZT4+Ml07Y1tiKzQ+PjJdPWE7aT1kO3JldHVybiAwfWZ1bmN0aW9uICRrKGEsYixkLGUpe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wO2Y9aTtpPWkrMTZ8MDtrPWYrMTJ8MDtqPWYrOHwwO2g9Zis0fDA7Zz1mO2Nbaz4+Ml09YTtjW2o+PjJdPWI7Y1toPj4yXT1kO2NbZz4+Ml09ZTthPUdvKGNbaz4+Ml18MCxjW2o+PjJdfDAsY1toPj4yXXwwLGNbZz4+Ml18MCl8MDtpPWY7cmV0dXJuIGF8MH1mdW5jdGlvbiBhbChhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTA7Yj1pO2k9aSsxNnwwO2U9Yis0fDA7ZD1iO2NbZT4+Ml09YTtjW2Q+PjJdPWNbZT4+Ml07Y1soY1tkPj4yXXwwKSs1Mj4+Ml09MDthPWxsKGNbZD4+Ml18MCl8MDtpPWI7cmV0dXJuIGF8MH1mdW5jdGlvbiBibChhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wLGc9MCxoPTA7Zz1pO2k9aSszMnwwO2g9ZysyMHwwO2U9ZysxMnwwO2Y9Zys4fDA7ZD1nKzR8MDtiPWc7Y1toPj4yXT1hO2NbZysxNj4+Ml09NjQ7Y1tlPj4yXT1jW2g+PjJdO2NbZj4+Ml09bWwoY1tlPj4yXXwwKXwwO2lmKCgoKChjW2Y+PjJdfDApPT0wPyhjWyhjW2U+PjJdfDApKzUyPj4yXXwwKT4+PjA+NDowKT8oY1soY1tlPj4yXXwwKSs0OD4+Ml18MCkhPTA6MCk/KGNbKGNbZT4+Ml18MCkrNDg+PjJdfDApIT0yNTU6MCk/KGNbZD4+Ml09MCxjW2Y+PjJdPWZvKGNbZT4+Ml18MCxkKXwwLGNbYj4+Ml09XyhjWyhjW2U+PjJdfDApKzUyPj4yXXwwLGNbZD4+Ml18MCl8MCxjW2I+PjJdPShjW2I+PjJdfDApKygoY1tiPj4yXXwwKS8yfDApLChjW2I+PjJdfDApPjY0KTowKWNbZj4+Ml09Z28oY1tlPj4yXXwwLGNbYj4+Ml18MCxjWyhjW2U+PjJdfDApKzQ4Pj4yXXwwKXwwO3ltKGNbZT4+Ml18MCk7aT1nO3JldHVybiBjW2Y+PjJdfDB9ZnVuY3Rpb24gY2woYSl7YT1hfDA7dmFyIGI9MDtiPWk7aT1pKzE2fDA7Y1tiPj4yXT1hO2k9YjtyZXR1cm4gMH1mdW5jdGlvbiBkbChhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTA7Yj1pO2k9aSsxNnwwO2U9Yis0fDA7ZD1iO2NbZT4+Ml09YTtjW2Q+PjJdPWNbZT4+Ml07amwoY1tkPj4yXXwwKTtpPWI7cmV0dXJuIDB9ZnVuY3Rpb24gZWwoYSxiLGQsZSxmKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTA7bT1pO2k9aSs2NHwwO2o9bSs2MHwwO2c9bSs0OHwwO2s9bSs0NHwwO2w9bSs4fDA7aD1tO2NbbSs1Nj4+Ml09YTtjW20rNTI+PjJdPWI7Y1tnPj4yXT1kO2Nbaz4+Ml09ZTtjW20rNDA+PjJdPWY7Y1tsPj4yXT1jWzUyMF07Y1tsKzQ+PjJdPWNbNTIxXTtjW2wrOD4+Ml09Y1s1MjJdO2NbbCsxMj4+Ml09Y1s1MjNdO2NbbCsxNj4+Ml09Y1s1MjRdO2NbbCsyMD4+Ml09Y1s1MjVdO2NbbCsyND4+Ml09Y1s1MjZdO2NbbCsyOD4+Ml09Y1s1MjddO2NbaD4+Ml09MDt3aGlsZSgxKXtpZigoY1toPj4yXXwwKT49NCl7Yj02O2JyZWFrfWQ9KGhSKGNbZz4+Ml18MCxjW2wrKGNbaD4+Ml08PDMpPj4yXXwwKXwwKT09MDthPWNbaD4+Ml18MDtpZihkKXtiPTQ7YnJlYWt9Y1toPj4yXT1hKzF9aWYoKGJ8MCk9PTQpe2NbY1trPj4yXT4+Ml09Y1tsKyhhPDwzKSs0Pj4yXTtjW2o+PjJdPTE7bD1jW2o+PjJdfDA7aT1tO3JldHVybiBsfDB9ZWxzZSBpZigoYnwwKT09Nil7Y1tqPj4yXT0wO2w9Y1tqPj4yXXwwO2k9bTtyZXR1cm4gbHwwfXJldHVybiAwfWZ1bmN0aW9uIGZsKGIsZCl7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTA7bz1pO2k9aSs5NnwwO2w9bys2NHwwO2s9bys0OHwwO249byszMnwwO209bysxNnwwO2o9bztwPW8rOTJ8MDtlPW8rODh8MDtnPW8rODR8MDtmPW8rODB8MDtoPW8rNzZ8MDtjW3A+PjJdPWI7Y1tlPj4yXT1kO2NbZz4+Ml09Y1twPj4yXTtjW2Y+PjJdPWNbKGNbZz4+Ml18MCkrMTI+PjJdO2NbaD4+Ml09bGwoY1tnPj4yXXwwKXwwO2lmKCEoY1toPj4yXXwwKSljW2g+PjJdPW1sKGNbZz4+Ml18MCl8MDtpZighKGNbKGNbZz4+Ml18MCkrNDA+PjJdfDApKXtwPWNbZj4+Ml18MDtiPWNbKGNbZz4+Ml18MCkrMjA+PjJdfDA7ZD1jW2U+PjJdfDA7Y1tqPj4yXT1jWyhjW2c+PjJdfDApKzE2Pj4yXTtjW2orND4+Ml09YjtjW2orOD4+Ml09ZDtubChoLHAsMjA2MTcsail9aWYoYVsoY1tnPj4yXXwwKSsyMzA+PjBdfDApe3A9Y1tmPj4yXXwwO2o9Y1soY1tnPj4yXXwwKSsyMD4+Ml18MDtkPWNbZT4+Ml18MDtjW20+PjJdPWNbKGNbZz4+Ml18MCkrMTY+PjJdO2NbbSs0Pj4yXT1qO2NbbSs4Pj4yXT1kO25sKGgscCwyMDY3MCxtKX1pZihhWyhjW2c+PjJdfDApKzIyOT4+MF18MCl7cD1jW2Y+PjJdfDA7bT1jWyhjW2c+PjJdfDApKzIwPj4yXXwwO2Q9Y1tlPj4yXXwwO2Nbbj4+Ml09Y1soY1tnPj4yXXwwKSsxNj4+Ml07Y1tuKzQ+PjJdPW07Y1tuKzg+PjJdPWQ7bmwoaCxwLDIwNzIzLG4pfXA9Y1tmPj4yXXwwO2Q9Y1soY1tnPj4yXXwwKSsyMD4+Ml18MDtuPWNbZT4+Ml18MDtjW2s+PjJdPWNbKGNbZz4+Ml18MCkrMTY+PjJdO2Nbays0Pj4yXT1kO2Nbays4Pj4yXT1uO25sKGgscCwyMDc3MCxrKTtwPWNbZj4+Ml18MDtuPWNbKGNbZz4+Ml18MCkrMjA+PjJdfDA7ZD1jW2U+PjJdfDA7Y1tsPj4yXT1jWyhjW2c+PjJdfDApKzE2Pj4yXTtjW2wrND4+Ml09bjtjW2wrOD4+Ml09ZDtubChoLHAsMjA4MjQsbCk7aT1vO3JldHVybiBjW2g+PjJdfDB9ZnVuY3Rpb24gZ2woYSxiKXthPWF8MDtiPWJ8MDt2YXIgZT0wLGY9MCxnPTA7Zz1pO2k9aSsxNnwwO2U9Zys4fDA7Zj1nO2NbZT4+Ml09YTtjW2crND4+Ml09YjtjW2Y+PjJdPTA7aWYoZFsoY1tlPj4yXXwwKSsyMzI+PjBdfDApe2Y9Y1tmPj4yXXwwO2k9ZztyZXR1cm4gZnwwfWNbZj4+Ml09YmwoY1tlPj4yXXwwKXwwO2Y9Y1tmPj4yXXwwO2k9ZztyZXR1cm4gZnwwfWZ1bmN0aW9uIGhsKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MDtkPWk7aT1pKzE2fDA7Y1tkKzQ+PjJdPWE7Y1tkPj4yXT1iO2k9ZDtyZXR1cm4gMH1mdW5jdGlvbiBpbChhLGIpe2E9YXwwO2I9YnwwO3ZhciBkPTAsZT0wLGY9MDtkPWk7aT1pKzE2fDA7Zj1kKzh8MDtlPWQ7Y1tmPj4yXT1hO2NbZCs0Pj4yXT1iO2NbZT4+Ml09Y1tmPj4yXTtqbChjW2U+PjJdfDApO2k9ZDtyZXR1cm4gMH1mdW5jdGlvbiBqbChhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wLGc9MCxoPTA7aD1pO2k9aSszMnwwO2I9aCsxNnwwO2Q9aCsxMnwwO2U9aCs4fDA7Zj1oKzR8MDtnPWg7Y1tiPj4yXT1hO2NbZD4+Ml09MDt3aGlsZSgxKXtpZigoY1tkPj4yXXwwKT49KGNbKGNbYj4+Ml18MCkrMjQ4Pj4yXXwwKSlicmVhaztjW2Y+PjJdPShjWyhjW2I+PjJdfDApKzI1Mj4+Ml18MCkrKChjW2Q+PjJdfDApKjI0fDApKzQ7Y1tlPj4yXT1jWyhjW2Y+PjJdfDApKzg+PjJdO3doaWxlKDEpe2lmKCEoY1tlPj4yXXwwKSlicmVhaztjW2c+PjJdPWNbKGNbZT4+Ml18MCkrOD4+Ml07a2woY1tnPj4yXXwwKTtjW2U+PjJdPWNbY1tlPj4yXT4+Ml19cGsoY1tmPj4yXXwwKTtjW2Q+PjJdPShjW2Q+PjJdfDApKzF9Y1soY1tiPj4yXXwwKSsyNjA+PjJdPTA7aT1oO3JldHVybn1mdW5jdGlvbiBrbChhKXthPWF8MDt2YXIgYj0wLGQ9MDtiPWk7aT1pKzE2fDA7ZD1iO2NbZD4+Ml09YTtLZChjW2Q+PjJdfDApO2k9YjtyZXR1cm59ZnVuY3Rpb24gbGwoYil7Yj1ifDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTA7bT1pO2k9aSszMnwwO2o9bTtlPW0rMjh8MDtoPW0rMjR8MDtrPW0rMjB8MDtsPW0rMTZ8MDtnPW0rMTJ8MDtmPW0rOHwwO2NbZT4+Ml09YjtjW2g+PjJdPTA7aWYoKGRbKGNbZT4+Ml18MCkrMjI5Pj4wXXwwfDApIT0yKXtsPWNbaD4+Ml18MDtpPW07cmV0dXJuIGx8MH1jW2s+PjJdPTIzMTgxO2s9Y1trPj4yXXwwO2I9Y1soY1tlPj4yXXwwKSsyMD4+Ml18MDtjW2o+PjJdPWNbKGNbZT4+Ml18MCkrMTY+PjJdO2Nbais0Pj4yXT1iO2NbbD4+Ml09T2QoayxqKXwwO2lmKCEoY1tsPj4yXXwwKSl7Y1toPj4yXT03O2w9Y1toPj4yXXwwO2k9bTtyZXR1cm4gbHwwfWNbZz4+Ml09MDtjW2g+PjJdPWFmKGNbKGNbZT4+Ml18MCkrMTI+PjJdfDAsY1tsPj4yXXwwLC0xLGcsMCl8MDtpZigoY1toPj4yXXwwKT09MD8oY1tmPj4yXT0odGUoY1tnPj4yXXwwKXwwKT09MTAwJjEsY1toPj4yXT1YZChjW2c+PjJdfDApfDAsKGNbaD4+Ml18MCk9PTApOjApYVsoY1tlPj4yXXwwKSsyMjk+PjBdPWNbZj4+Ml07S2QoY1tsPj4yXXwwKTtsPWNbaD4+Ml18MDtpPW07cmV0dXJuIGx8MH1mdW5jdGlvbiBtbChhKXthPWF8MDt2YXIgYj0wLGU9MCxmPTAsZz0wLGg9MCxqPTA7aj1pO2k9aSsxNnwwO2U9aisxMnwwO2g9ais4fDA7Zj1qKzR8MDtnPWo7Y1tlPj4yXT1hO2NbaD4+Ml09MDtjW2Y+PjJdPTA7d2hpbGUoMSl7aWYoIShjW2g+PjJdfDApKWE9KGNbZj4+Ml18MCk8KGNbKGNbZT4+Ml18MCkrMjQ4Pj4yXXwwKTtlbHNlIGE9MDtiPWNbZT4+Ml18MDtpZighYSlicmVhaztiPW9sKGIsY1soY1tlPj4yXXwwKSsyNzI+PjJdfDAsY1tmPj4yXXwwLC0xKXwwO2NbaD4+Ml09YjtjW2g+PjJdPShjW2g+PjJdfDApPT0xMDE/MDpiO2NbZj4+Ml09KGNbZj4+Ml18MCkrMX1qbChiKTtpZihjW2g+PjJdfDApe2g9Y1toPj4yXXwwO2k9ajtyZXR1cm4gaHwwfWlmKCEoZFsoY1tlPj4yXXwwKSsyMjk+PjBdfDApKXtoPWNbaD4+Ml18MDtpPWo7cmV0dXJuIGh8MH1pZigoY1soY1tlPj4yXXwwKSs0OD4+Ml18MCkhPTI1NSl7aD1jW2g+PjJdfDA7aT1qO3JldHVybiBofDB9aWYoKGNbKGNbZT4+Ml18MCkrNTI+PjJdfDApPj4+MDw9MCl7aD1jW2g+PjJdfDA7aT1qO3JldHVybiBofDB9Y1tnPj4yXT0wO2NbaD4+Ml09cGwoY1tlPj4yXXwwLDIyLGcsMCl8MDtpZihjW2g+PjJdfDApe2g9Y1toPj4yXXwwO2k9ajtyZXR1cm4gaHwwfUtlKGNbZz4+Ml18MCwxLDIpfDA7Y1toPj4yXT10ZShjW2c+PjJdfDApfDA7aWYoKGNbaD4+Ml18MCk9PTEwMCl7Zj1DZShjW2c+PjJdfDAsMCl8MDtjWyhjW2U+PjJdfDApKzQ4Pj4yXT1mO2lmKChjWyhjW2U+PjJdfDApKzQ4Pj4yXXwwKT09MSljWyhjW2U+PjJdfDApKzQ4Pj4yXT04fWVsc2UgaWYoKGNbaD4+Ml18MCk9PTEwMSljWyhjW2U+PjJdfDApKzQ4Pj4yXT0wO2NbaD4+Ml09WWQoY1tnPj4yXXwwKXwwO2g9Y1toPj4yXXwwO2k9ajtyZXR1cm4gaHwwfWZ1bmN0aW9uIG5sKGEsYixkLGUpe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MDtsPWk7aT1pKzQ4fDA7Zj1sKzMyfDA7Zz1sKzI4fDA7aD1sKzI0fDA7aj1sKzh8MDtrPWw7Y1tmPj4yXT1hO2NbZz4+Ml09YjtjW2g+PjJdPWQ7aWYoY1tjW2Y+PjJdPj4yXXwwKXtpPWw7cmV0dXJufWNbaj4+Ml09ZTtjW2s+PjJdPU5kKGNbaD4+Ml18MCxqKXwwO2lmKCEoY1trPj4yXXwwKSl7Y1tjW2Y+PjJdPj4yXT03O2k9bDtyZXR1cm59ZWxzZXtkPSRlKGNbZz4+Ml18MCxjW2s+PjJdfDAsMCwwLDApfDA7Y1tjW2Y+PjJdPj4yXT1kO0tkKGNbaz4+Ml18MCk7aT1sO3JldHVybn19ZnVuY3Rpb24gb2woYSxiLGQsZSl7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MDtzPWk7aT1pKzEyOHwwO2Y9cysxMjB8MDtnPXMrMTE2fDA7aD1zKzExMnwwO2o9cysxMDh8MDtyPXMrMTA0fDA7bj1zKzEwMHwwO3A9cys4fDA7cT1zKzk2fDA7bT1zKzgwfDA7bD1zKzI0fDA7az1zKzE2fDA7bz1zO2NbZj4+Ml09YTtjW2c+PjJdPWI7Y1toPj4yXT1kO2Nbaj4+Ml09ZTtjW24+PjJdPTA7YT1wO2NbYT4+Ml09MDtjW2ErND4+Ml09MDtjW3E+PjJdPTA7Y1trPj4yXT0wO2E9bztjW2E+PjJdPTA7Y1thKzQ+PjJdPTA7Y1tyPj4yXT1xbChjW2Y+PjJdfDAsY1tnPj4yXXwwLGNbaD4+Ml18MCxjW2o+PjJdfDAsMCwwLDEsMCxsKXwwO2RvIGlmKChjW3I+PjJdfDApPT0wPyhjW2wrND4+Ml18MCkhPTA6MCl7aWYoKGNbaj4+Ml18MCkhPS0xPyhjW3I+PjJdPXJsKGNbZj4+Ml18MCxjW2c+PjJdfDAsY1toPj4yXXwwLG8pfDAsKGNbcj4+Ml18MCkhPTApOjApYnJlYWs7aWYoKGNbaj4+Ml18MCk9PS0yKXtpZigoY1tsKzQ+PjJdfDApPT0xPzA9PSgoY1soY1tjW2w+PjJdPj4yXXwwKSs1Nj4+Ml18MCkhPTB8MCk6MCl7Y1tyPj4yXT0xMDE7YnJlYWt9Yj1vO2U9Y1tiKzQ+PjJdfDA7YT1wO2NbYT4+Ml09Y1tiPj4yXTtjW2ErND4+Ml09ZTtjW2s+PjJdPTF9ZWxzZXtlPXNsKGNbZj4+Ml18MCxjW2c+PjJdfDAsY1toPj4yXXwwLChjW2o+PjJdfDApKzF8MCl8MDthPXA7Y1thPj4yXT1lO2NbYSs0Pj4yXT1DO2Nbcj4+Ml09dGwoY1tmPj4yXXwwLGNbZz4+Ml18MCxjW2g+PjJdfDAsKGNbaj4+Ml18MCkrMXwwLG4pfDA7aWYoKGNbaj4+Ml18MCkhPS0xKXthPXA7Yj1jW2ErND4+Ml18MDtkPW87ZT1jW2QrND4+Ml18MDtkPShifDApPihlfDApfCgoYnwwKT09KGV8MCk/KGNbYT4+Ml18MCk+Pj4wPihjW2Q+PjJdfDApPj4+MDowKX1lbHNlIGQ9MDtjW2s+PjJdPWQmMX1pZighKGNbcj4+Ml18MCkpe2NbbT4+Ml09MDtjW20rND4+Ml09MDtjW20rOD4+Ml09MDtjW20rMTI+PjJdPTA7Y1ttKzEyPj4yXT0xO2E9bSsxMnwwO2NbYT4+Ml09Y1thPj4yXXwoKGNbaz4+Ml18MCkhPTA/MjowKTtjW3I+PjJdPXVsKGNbZj4+Ml18MCxsLG0pfDA7d2hpbGUoMSl7aWYoY1tyPj4yXXwwKWJyZWFrO2Nbcj4+Ml09dmwoY1tmPj4yXXwwLGwpfDA7aWYoKGNbcj4+Ml18MCkhPTEwMClicmVhaztjW3I+PjJdPXdsKGNbZj4+Ml18MCxxLDEsY1tsKzQwPj4yXXwwLGNbbCs0ND4+Ml18MCxjW2wrNDg+PjJdfDAsY1tsKzUyPj4yXXwwKXwwfWlmKCEoY1tyPj4yXXwwKSl7aWYoKGNbaj4+Ml18MCkhPS0xKXtjW3I+PjJdPXhsKGNbZj4+Ml18MCxjW2c+PjJdfDAsY1toPj4yXXwwLGNbaj4+Ml18MCxjW2w+PjJdfDAsY1tsKzQ+PjJdfDApfDA7aWYoISgoY1tyPj4yXXwwKT09MCYoY1txPj4yXXwwKSE9MCkpYnJlYWt9ZWxzZSBpZighKGNbcT4+Ml18MCkpYnJlYWs7bT1wO2Nbcj4+Ml09eWwoY1tmPj4yXXwwLGNbcT4+Ml18MCxjW20+PjJdfDAsY1ttKzQ+PjJdfDAsY1tuPj4yXXwwKXwwO2lmKCEoY1tyPj4yXXwwKSl7aWYoKGNbaj4+Ml18MCkhPS0xPyhuPXAsaz1jW24rND4+Ml18MCxvLG09Y1tvKzQ+PjJdfDAsISgoa3wwKTwobXwwKXwoKGt8MCk9PShtfDApPyhjW24+PjJdfDApPj4+MDwoY1tvPj4yXXwwKT4+PjA6MCkpKTowKWJyZWFrO289cDtwPShjW3E+PjJdfDApKzU2fDA7Y1tyPj4yXT16bChjW2Y+PjJdfDAsY1tvPj4yXXwwLGNbbys0Pj4yXXwwLGNbcD4+Ml18MCxjW3ArND4+Ml18MCl8MH19fX13aGlsZSgwKTtBbChjW3E+PjJdfDApO0JsKGwpO2k9cztyZXR1cm4gY1tyPj4yXXwwfWZ1bmN0aW9uIHBsKGEsYixkLGUpe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wO3Q9aTtpPWkrMjQwfDA7bz10KzI0fDA7bj10KzE2fDA7Zz10O2g9dCsyMjh8MDtqPXQrMjI0fDA7cT10KzIyMHwwO2s9dCsyMTZ8MDtmPXQrNTZ8MDtzPXQrNDh8MDtyPXQrNDR8MDtwPXQrNDB8MDtsPXQrMzZ8MDttPXQrMzJ8MDtjW2g+PjJdPWE7Y1tqPj4yXT1iO2NbcT4+Ml09ZDtjW2s+PjJdPWU7VFIoZnwwLDE5MjAsMTYwKXwwO2Nbcz4+Ml09MDtjW3I+PjJdPWNbKGNbaD4+Ml18MCkrNTYrKGNbaj4+Ml08PDIpPj4yXTtkbyBpZighKGNbcj4+Ml18MCkpe2E9Y1tqPj4yXXwwO2RvIGlmKChjW2o+PjJdfDApIT0xOCl7ZT1jW2YrKGNbaj4+Ml08PDIpPj4yXXwwO2I9Y1toPj4yXXwwO2lmKChhfDApPT03KXtjW24+PjJdPWNbYisyMTY+PjJdO2NbcD4+Ml09T2QoZSxuKXwwO2JyZWFrfWVsc2V7bj1jWyhjW2g+PjJdfDApKzIwPj4yXXwwO2Nbbz4+Ml09Y1tiKzE2Pj4yXTtjW28rND4+Ml09bjtjW3A+PjJdPU9kKGUsbyl8MDticmVha319ZWxzZXtvPWNbZisoYTw8Mik+PjJdfDA7Zj1jWyhjW2g+PjJdfDApKzIwPj4yXXwwO249Y1soY1toPj4yXXwwKSsyMjA+PjJdfDA7Y1tnPj4yXT1jWyhjW2g+PjJdfDApKzE2Pj4yXTtjW2crND4+Ml09ZjtjW2crOD4+Ml09bjtjW3A+PjJdPU9kKG8sZyl8MH13aGlsZSgwKTtpZihjW3A+PjJdfDApe2Nbcz4+Ml09YWYoY1soY1toPj4yXXwwKSsxMj4+Ml18MCxjW3A+PjJdfDAsLTEsciwwKXwwO0tkKGNbcD4+Ml18MCk7Y1soY1toPj4yXXwwKSs1NisoY1tqPj4yXTw8Mik+PjJdPWNbcj4+Ml07YnJlYWt9ZWxzZXtjW3M+PjJdPTc7YnJlYWt9fXdoaWxlKDApO2lmKCEoY1trPj4yXXwwKSl7cD1jW3I+PjJdfDA7cj1jW3E+PjJdfDA7Y1tyPj4yXT1wO3M9Y1tzPj4yXXwwO2k9dDtyZXR1cm4gc3wwfWNbbT4+Ml09UWUoY1tyPj4yXXwwKXwwO2NbbD4+Ml09MDt3aGlsZSgxKXtpZihjW3M+PjJdfDApe2U9MTU7YnJlYWt9aWYoKGNbbD4+Ml18MCk+PShjW20+PjJdfDApKXtlPTE1O2JyZWFrfWNbcz4+Ml09T2UoY1tyPj4yXXwwLChjW2w+PjJdfDApKzF8MCxjWyhjW2s+PjJdfDApKyhjW2w+PjJdPDwyKT4+Ml18MCl8MDtjW2w+PjJdPShjW2w+PjJdfDApKzF9aWYoKGV8MCk9PTE1KXtwPWNbcj4+Ml18MDtyPWNbcT4+Ml18MDtjW3I+PjJdPXA7cz1jW3M+PjJdfDA7aT10O3JldHVybiBzfDB9cmV0dXJuIDB9ZnVuY3Rpb24gcWwoYSxiLGQsZSxmLGcsaCxqLGspe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO2s9a3wwO3ZhciBsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTA7dT1pO2k9aSs0OHwwO2w9dSszMnwwO209dSsyOHwwO249dSsyNHwwO289dSsyMHwwO3A9dSsxNnwwO3E9dSsxMnwwO3I9dSs4fDA7cz11KzR8MDt0PXU7Y1tsPj4yXT1hO2NbbT4+Ml09YjtjW24+PjJdPWQ7Y1tvPj4yXT1lO2NbcD4+Ml09ZjtjW3E+PjJdPWc7Y1tyPj4yXT1oO2Nbcz4+Ml09ajtjW3Q+PjJdPWs7ZD1jW3Q+PjJdfDA7Yj1kKzU2fDA7ZG97Y1tkPj4yXT0wO2Q9ZCs0fDB9d2hpbGUoKGR8MCk8KGJ8MCkpO3Q9am0oY1tsPj4yXXwwLGNbbT4+Ml18MCxjW24+PjJdfDAsY1tvPj4yXXwwLGNbcD4+Ml18MCxjW3E+PjJdfDAsY1tyPj4yXXwwLGNbcz4+Ml18MCxjW3Q+PjJdfDApfDA7aT11O3JldHVybiB0fDB9ZnVuY3Rpb24gcmwoYSxiLGQsZSl7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTA7bj1pO2k9aSszMnwwO2Y9bisyNHwwO2c9bisyMHwwO2g9bisxNnwwO2o9bisxMnwwO2s9bis4fDA7bD1uKzR8MDttPW47Y1tnPj4yXT1hO2NbaD4+Ml09YjtjW2o+PjJdPWQ7Y1trPj4yXT1lO2NbbT4+Ml09cGwoY1tnPj4yXXwwLDE1LGwsMCl8MDtpZihjW20+PjJdfDApe2NbZj4+Ml09Y1ttPj4yXTttPWNbZj4+Ml18MDtpPW47cmV0dXJuIG18MH1tPWNbbD4+Ml18MDtlPXNsKGNbZz4+Ml18MCxjW2g+PjJdfDAsY1tqPj4yXXwwLDApfDA7TGUobSwxLGUsQyl8MDtlPWNbbD4+Ml18MDttPXNsKGNbZz4+Ml18MCxjW2g+PjJdfDAsY1tqPj4yXXwwLDEwMjMpfDA7TGUoZSwyLG0sQyl8MDtpZigxMDA9PSh0ZShjW2w+PjJdfDApfDApKXtlPURlKGNbbD4+Ml18MCwwKXwwO209Y1trPj4yXXwwO2NbbT4+Ml09ZTtjW20rND4+Ml09Q31jW2Y+PjJdPVlkKGNbbD4+Ml18MCl8MDttPWNbZj4+Ml18MDtpPW47cmV0dXJuIG18MH1mdW5jdGlvbiBzbChhLGIsZCxlKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTA7Zj1pO2k9aSszMnwwO2s9ZisyMHwwO2w9ZisxNnwwO2o9ZisxMnwwO2c9Zis4fDA7aD1mO2Nbaz4+Ml09YTtjW2w+PjJdPWI7Y1tqPj4yXT1kO2NbZz4+Ml09ZTthPWNbbD4+Ml18MDtlPWNbKGNbaz4+Ml18MCkrMjQ4Pj4yXXwwO2U9YVMoYXwwLCgoYXwwKTwwKTw8MzE+PjMxfDAsZXwwLCgoZXwwKTwwKTw8MzE+PjMxfDApfDA7YT1jW2o+PjJdfDA7YT1SUihlfDAsQ3wwLGF8MCwoKGF8MCk8MCk8PDMxPj4zMXwwKXwwO2E9YVMoYXwwLEN8MCwxMDI0LDApfDA7ZT1oO2NbZT4+Ml09YTtjW2UrND4+Ml09QztlPWg7YT1jW2c+PjJdfDA7YT1SUihjW2U+PjJdfDAsY1tlKzQ+PjJdfDAsYXwwLCgoYXwwKTwwKTw8MzE+PjMxfDApfDA7aT1mO3JldHVybiBhfDB9ZnVuY3Rpb24gdGwoYSxiLGQsZSxmKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTA7cD1pO2k9aSszMnwwO2c9cCsyOHwwO2g9cCsyNHwwO2o9cCsyMHwwO2s9cCsxNnwwO2w9cCsxMnwwO289cCs4fDA7bj1wKzR8MDttPXA7Y1tnPj4yXT1hO2NbaD4+Ml09YjtjW2o+PjJdPWQ7Y1trPj4yXT1lO2NbbD4+Ml09ZjtjW20+PjJdPTA7Y1tvPj4yXT1wbChjW2c+PjJdfDAsOCxuLDApfDA7aWYoIShjW28+PjJdfDApKXthPWNbbj4+Ml18MDtmPXNsKGNbZz4+Ml18MCxjW2g+PjJdfDAsY1tqPj4yXXwwLGNbaz4+Ml18MCl8MDtMZShhLDEsZixDKXwwO2lmKDEwMD09KHRlKGNbbj4+Ml18MCl8MCkpY1ttPj4yXT1DZShjW24+PjJdfDAsMCl8MDtjW28+PjJdPVlkKGNbbj4+Ml18MCl8MH1pZihjW28+PjJdfDApe289Y1tvPj4yXXwwO2k9cDtyZXR1cm4gb3wwfWlmKChjW20+PjJdfDApPj0xNil7Y1tvPj4yXT1vbChjW2c+PjJdfDAsY1toPj4yXXwwLGNbaj4+Ml18MCxjW2s+PjJdfDApfDA7Y1tjW2w+PjJdPj4yXT0wO289Y1tvPj4yXXwwO2k9cDtyZXR1cm4gb3wwfWVsc2V7Y1tjW2w+PjJdPj4yXT1jW20+PjJdO289Y1tvPj4yXXwwO2k9cDtyZXR1cm4gb3wwfXJldHVybiAwfWZ1bmN0aW9uIHVsKGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wO2U9aTtpPWkrMTZ8MDtoPWUrOHwwO2c9ZSs0fDA7Zj1lO2NbaD4+Ml09YTtjW2c+PjJdPWI7Y1tmPj4yXT1kO2NbKGNbZz4+Ml18MCkrMTI+PjJdPWNbZj4+Ml07ZD1obShjW2g+PjJdfDAsY1tnPj4yXXwwLGNbY1tmPj4yXT4+Ml18MCxjWyhjW2Y+PjJdfDApKzQ+PjJdfDApfDA7aT1lO3JldHVybiBkfDB9ZnVuY3Rpb24gdmwoYixlKXtiPWJ8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEQ9MCxFPTAsRj0wLEc9MCxIPTAsST0wLEo9MCxLPTAsTD0wO0s9aTtpPWkrMTI4fDA7Zj1LKzEyMHwwO2c9SysxMTZ8MDtoPUsrMTEyfDA7SD1LKzEwOHwwO3M9SysxMDR8MDt1PUsrMTAwfDA7cT1LKzk2fDA7dD1LKzkyfDA7dj1LKzg4fDA7cj1LKzg0fDA7bD1LKzgwfDA7Qj1LKzc2fDA7RT1LKzcyfDA7ST1LKzY4fDA7QT1LKzY0fDA7bT1LKzYwfDA7Rz1LKzU2fDA7eT1LKzUyfDA7cD1LKzE2fDA7dz1LKzQ4fDA7Rj1LKzQ0fDA7ej1LKzQwfDA7eD1LKzM2fDA7bz1LKzh8MDtuPUs7az1LKzMyfDA7aj1LKzI4fDA7RD1LKzI0fDA7Y1tnPj4yXT1iO2NbaD4+Ml09ZTtjW0g+PjJdPTA7Y1tzPj4yXT1jWyhjWyhjW2g+PjJdfDApKzEyPj4yXXwwKSsxMj4+Ml0mMjtjW3U+PjJdPWNbKGNbKGNbaD4+Ml18MCkrMTI+PjJdfDApKzEyPj4yXSYxO2NbcT4+Ml09Y1soY1soY1toPj4yXXwwKSsxMj4+Ml18MCkrMTI+PjJdJjQ7Y1t0Pj4yXT1jWyhjWyhjW2g+PjJdfDApKzEyPj4yXXwwKSsxMj4+Ml0mODtjW3Y+PjJdPWNbKGNbKGNbaD4+Ml18MCkrMTI+PjJdfDApKzEyPj4yXSYxNjtjW3I+PjJdPWNbKGNbKGNbaD4+Ml18MCkrMTI+PjJdfDApKzEyPj4yXSYzMjtjW2w+PjJdPWNbY1toPj4yXT4+Ml07Y1tCPj4yXT1jWyhjW2g+PjJdfDApKzQ+PjJdO2NbRT4+Ml09Y1soY1toPj4yXXwwKSsxMj4+Ml07Y1tJPj4yXT0oZFsoY1tnPj4yXXwwKSsyMzE+PjBdfDApIT0wPzE4MjoxODM7aWYoIShjWyhjW2g+PjJdfDApKzQ+PjJdfDApKXtjW2Y+PjJdPTA7Sj1jW2Y+PjJdfDA7aT1LO3JldHVybiBKfDB9YTp3aGlsZSgxKXtjW20+PjJdPTA7d2hpbGUoMSl7aWYoKGNbbT4+Ml18MCk+PShjWyhjW2g+PjJdfDApKzg+PjJdfDApKWJyZWFrO2NbRz4+Ml09Y1soY1tsPj4yXXwwKSsoY1ttPj4yXTw8Mik+PjJdO2lmKGFbKGNbRz4+Ml18MCkrND4+MF18MClRbChjW0c+PjJdfDApO2Vsc2UgY1tIPj4yXT1SbChjW2c+PjJdfDAsY1tHPj4yXXwwLDApfDA7aWYoY1tIPj4yXXwwKXtKPTk7YnJlYWsgYX1jW20+PjJdPShjW20+PjJdfDApKzF9VGwoY1tsPj4yXXwwLGNbQj4+Ml18MCxjWyhjW2g+PjJdfDApKzg+PjJdfDAsMTg0KTtjWyhjW2g+PjJdfDApKzg+PjJdPTA7aWYoIShjWyhjW2NbbD4+Ml0+PjJdfDApKzQwPj4yXXwwKSl7Sj02MTticmVha31jWyhjW2g+PjJdfDApKzQ0Pj4yXT1jWyhjW2NbbD4+Ml0+PjJdfDApKzYwPj4yXTtjWyhjW2g+PjJdfDApKzQwPj4yXT1jWyhjW2NbbD4+Ml0+PjJdfDApKzY0Pj4yXTtpZighKChjW3Y+PjJdfDApIT0wPzE6KGNbY1tFPj4yXT4+Ml18MCk9PTApKXtpZigoY1soY1toPj4yXXwwKSs0ND4+Ml18MCk8KGNbKGNbRT4+Ml18MCkrND4+Ml18MCkpe0o9NjE7YnJlYWt9aWYoKGNbdD4+Ml18MCk9PTA/KGNbKGNbaD4+Ml18MCkrNDQ+PjJdfDApPihjWyhjW0U+PjJdfDApKzQ+PjJdfDApOjApe0o9NjE7YnJlYWt9aWYoZVIoY1soY1toPj4yXXwwKSs0MD4+Ml18MCxjW2NbRT4+Ml0+PjJdfDAsY1soY1tFPj4yXXwwKSs0Pj4yXXwwKXwwKXtKPTYxO2JyZWFrfX1jW0E+PjJdPTE7d2hpbGUoMSl7aWYoKChjW0E+PjJdfDApPChjW0I+PjJdfDApPyhjWyhjWyhjW2w+PjJdfDApKyhjW0E+PjJdPDwyKT4+Ml18MCkrNDA+PjJdfDApIT0wOjApPyhjWyhjWyhjW2w+PjJdfDApKyhjW0E+PjJdPDwyKT4+Ml18MCkrNjA+PjJdfDApPT0oY1soY1toPj4yXXwwKSs0ND4+Ml18MCk6MCllPTA9PShlUihjWyhjW2g+PjJdfDApKzQwPj4yXXwwLGNbKGNbKGNbbD4+Ml18MCkrKGNbQT4+Ml08PDIpPj4yXXwwKSs2ND4+Ml18MCxjWyhjW2g+PjJdfDApKzQ0Pj4yXXwwKXwwKTtlbHNlIGU9MDtiPWNbQT4+Ml18MDtpZighZSlicmVhaztjW0E+PjJdPWIrMX1kbyBpZighKChifDApIT0xfChjW3M+PjJdfDApIT0wfChjW3I+PjJdfDApIT0wKSl7aWYoKGRbKGNbZz4+Ml18MCkrMjMxPj4wXXwwKSE9MD8oKGNbKGNbY1tsPj4yXT4+Ml18MCkrNTY+PjJdfDApIT0wfDApIT0wOjApe0o9MzI7YnJlYWt9Y1soY1toPj4yXXwwKSs1Mj4+Ml09Y1soY1tjW2w+PjJdPj4yXXwwKSs3Nj4+Ml07aWYoY1soY1tjW2w+PjJdPj4yXXwwKSs1Nj4+Ml18MCl7Y1tIPj4yXT1VbChjW2g+PjJdfDAsY1soY1tjW2w+PjJdPj4yXXwwKSs3Mj4+Ml18MCxjWyhjW2g+PjJdfDApKzUyPj4yXXwwKXwwO2NbKGNbaD4+Ml18MCkrNDg+PjJdPWNbKGNbaD4+Ml18MCkrMTY+PjJdfWVsc2UgY1soY1toPj4yXXwwKSs0OD4+Ml09Y1soY1tjW2w+PjJdPj4yXXwwKSs3Mj4+Ml07aWYoIShjW0g+PjJdfDApKWNbSD4+Ml09MTAwfWVsc2UgSj0zMjt3aGlsZSgwKTtpZigoSnwwKT09MzIpe0o9MDtjW3k+PjJdPTA7ZT1wO2NbZT4+Ml09MDtjW2UrND4+Ml09MDtjW20+PjJdPTA7d2hpbGUoMSl7aWYoKGNbbT4+Ml18MCk+PShjW0E+PjJdfDApKWJyZWFrO1ZsKGNbZz4+Ml18MCxjWyhjW2w+PjJdfDApKyhjW20+PjJdPDwyKT4+Ml18MCl8MDtjW20+PjJdPShjW20+PjJdfDApKzF9VGwoY1tsPj4yXXwwLGNbQT4+Ml18MCxjW0E+PjJdfDAsY1tJPj4yXXwwKTt3aGlsZSgxKXtpZighKGNbKGNbY1tsPj4yXT4+Ml18MCkrODA+PjJdfDApKWJyZWFrO2NbRj4+Ml09MDtjW3o+PjJdPTA7TD0oY1tjW2w+PjJdPj4yXXwwKSs4OHwwO2I9Y1tMKzQ+PjJdfDA7ZT1vO2NbZT4+Ml09Y1tMPj4yXTtjW2UrND4+Ml09YjtXbChjW2c+PjJdfDAsY1tjW2w+PjJdPj4yXXwwLEYseil8MDtjW3c+PjJdPTE7d2hpbGUoMSl7aWYoKGNbdz4+Ml18MCk+PShjW0E+PjJdfDApKWJyZWFrO2lmKCEoY1soY1soY1tsPj4yXXwwKSsoY1t3Pj4yXTw8Mik+PjJdfDApKzgwPj4yXXwwKSlicmVhaztlPShjWyhjW2w+PjJdfDApKyhjW3c+PjJdPDwyKT4+Ml18MCkrODh8MDtMPW87aWYoISgoY1tlPj4yXXwwKT09KGNbTD4+Ml18MCk/KGNbZSs0Pj4yXXwwKT09KGNbTCs0Pj4yXXwwKTowKSlicmVhaztXbChjW2c+PjJdfDAsY1soY1tsPj4yXXwwKSsoY1t3Pj4yXTw8Mik+PjJdfDAsMCwwKXwwO2Nbdz4+Ml09KGNbdz4+Ml18MCkrMX1pZihjW3E+PjJdfDApWGwoY1soY1tFPj4yXXwwKSs4Pj4yXXwwLDAsRix6KTtkbyBpZigoY1tzPj4yXXwwKT09MHwoY1t6Pj4yXXwwKT4wKXtpZigoY1t5Pj4yXXwwKT4wPyhkWyhjW2c+PjJdfDApKzIzMT4+MF18MCkhPTA6MCl7TD1wO2U9bztlPVFSKGNbTD4+Ml18MCxjW0wrND4+Ml18MCxjW2U+PjJdfDAsY1tlKzQ+PjJdfDApfDA7TD1uO2NbTD4+Ml09ZTtjW0wrND4+Ml09Q31lbHNle0w9bztlPXA7ZT1RUihjW0w+PjJdfDAsY1tMKzQ+PjJdfDAsY1tlPj4yXXwwLGNbZSs0Pj4yXXwwKXwwO0w9bjtjW0w+PjJdPWU7Y1tMKzQ+PjJdPUN9TD1uO0w9SmwoY1tMPj4yXXwwLGNbTCs0Pj4yXXwwKXwwO2NbeD4+Ml09TCsoKGNbdT4+Ml18MCkhPTA/KGNbej4+Ml18MCkrMXwwOjApO2lmKCgoY1t5Pj4yXXwwKSsoY1t4Pj4yXXwwKXwwKT4oY1soY1toPj4yXXwwKSsyMD4+Ml18MCkpe2NbKGNbaD4+Ml18MCkrMjA+PjJdPShjW3k+PjJdfDApKyhjW3g+PjJdfDApPDwxO2Nbaz4+Ml09TGQoY1soY1toPj4yXXwwKSsxNj4+Ml18MCxjWyhjW2g+PjJdfDApKzIwPj4yXXwwKXwwO2lmKCEoY1trPj4yXXwwKSl7Sj01MDticmVhayBhfWNbKGNbaD4+Ml18MCkrMTY+PjJdPWNbaz4+Ml19Yj0oY1soY1toPj4yXXwwKSsxNj4+Ml18MCkrKGNbeT4+Ml18MCl8MDtpZihjW3I+PjJdfDApe2Nbaj4+Ml09YjtMPW47Y1tEPj4yXT1ZbChjW0w+PjJdfDAsY1tMKzQ+PjJdfDAsY1tGPj4yXXwwLGNbej4+Ml18MCxjW2o+PjJdfDApfDA7aWYoIShjW0Q+PjJdfDApKWJyZWFrO2I9bztlPWNbYis0Pj4yXXwwO0w9cDtjW0w+PjJdPWNbYj4+Ml07Y1tMKzQ+PjJdPWU7Y1t5Pj4yXT0oY1t5Pj4yXXwwKSsoY1tEPj4yXXwwKTticmVha31lbHNle2U9bjtiPUtsKGIsY1tlPj4yXXwwLGNbZSs0Pj4yXXwwKXwwO2NbeT4+Ml09KGNbeT4+Ml18MCkrYjtiPW87ZT1jW2IrND4+Ml18MDtMPXA7Y1tMPj4yXT1jW2I+PjJdO2NbTCs0Pj4yXT1lO2lmKCEoY1t1Pj4yXXwwKSlicmVhaztUUigoY1soY1toPj4yXXwwKSsxNj4+Ml18MCkrKGNbeT4+Ml18MCl8MCxjW0Y+PjJdfDAsY1t6Pj4yXXwwKXwwO2NbeT4+Ml09KGNbeT4+Ml18MCkrKGNbej4+Ml18MCk7TD1jW3k+PjJdfDA7Y1t5Pj4yXT1MKzE7YVsoY1soY1toPj4yXXwwKSsxNj4+Ml18MCkrTD4+MF09MDticmVha319d2hpbGUoMCk7VGwoY1tsPj4yXXwwLGNbQT4+Ml18MCxjW3c+PjJdfDAsY1tJPj4yXXwwKX1pZigoY1t5Pj4yXXwwKT4wKXtjWyhjW2g+PjJdfDApKzQ4Pj4yXT1jWyhjW2g+PjJdfDApKzE2Pj4yXTtjWyhjW2g+PjJdfDApKzUyPj4yXT1jW3k+PjJdO2NbSD4+Ml09MTAwfX1jWyhjW2g+PjJdfDApKzg+PjJdPWNbQT4+Ml07aWYoY1tIPj4yXXwwKXtKPTYxO2JyZWFrfX1pZigoSnwwKT09OSl7Y1tmPj4yXT1jW0g+PjJdO0w9Y1tmPj4yXXwwO2k9SztyZXR1cm4gTHwwfWVsc2UgaWYoKEp8MCk9PTUwKXtjW2Y+PjJdPTc7TD1jW2Y+PjJdfDA7aT1LO3JldHVybiBMfDB9ZWxzZSBpZigoSnwwKT09NjEpe2NbZj4+Ml09Y1tIPj4yXTtMPWNbZj4+Ml18MDtpPUs7cmV0dXJuIEx8MH1yZXR1cm4gMH1mdW5jdGlvbiB3bChhLGIsZCxlLGYsZyxoKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDt2YXIgaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wO0I9aTtpPWkrODB8MDtqPUIrNjh8MDtrPUIrNjR8MDtsPUIrNjB8MDttPUIrNTZ8MDtuPUIrNTJ8MDtvPUIrNDh8MDtwPUIrNDR8MDtxPUIrNDB8MDt0PUIrMzZ8MDt2PUIrMzJ8MDt1PUIrMjh8MDtzPUIrMjR8MDt4PUIrMjB8MDt5PUIrMTZ8MDt3PUIrMTJ8MDt6PUIrOHwwO3I9Qis0fDA7QT1CO2Nbaz4+Ml09YTtjW2w+PjJdPWI7Y1ttPj4yXT1kO2Nbbj4+Ml09ZTtjW28+PjJdPWY7Y1twPj4yXT1nO2NbcT4+Ml09aDtjW3g+PjJdPWNbY1tsPj4yXT4+Ml07aWYoIShjW3g+PjJdfDApKXtjW3g+PjJdPUlkKDY0KXwwO2lmKCEoY1t4Pj4yXXwwKSl7Y1tqPj4yXT03O0E9Y1tqPj4yXXwwO2k9QjtyZXR1cm4gQXwwfWc9Y1t4Pj4yXXwwO2Q9Zys2NHwwO2Rve2NbZz4+Ml09MDtnPWcrNHwwfXdoaWxlKChnfDApPChkfDApKTtjW2NbbD4+Ml0+PjJdPWNbeD4+Ml07bD1JZChjWyhjW2s+PjJdfDApKzIyND4+Ml18MCl8MDtjWyhjW3g+PjJdfDApKzQ4Pj4yXT1sO2lmKCEoY1soY1t4Pj4yXXwwKSs0OD4+Ml18MCkpe2Nbaj4+Ml09NztBPWNbaj4+Ml18MDtpPUI7cmV0dXJuIEF8MH1jWyhjW3g+PjJdfDApKzQwPj4yXT1jWyhjW2s+PjJdfDApKzIyND4+Ml07Y1t5Pj4yXT1wbChjW2s+PjJdfDAsMTAsdywwKXwwO2lmKGNbeT4+Ml18MCl7Y1tqPj4yXT1jW3k+PjJdO0E9Y1tqPj4yXXwwO2k9QjtyZXR1cm4gQXwwfWlmKDEwMD09KHRlKGNbdz4+Ml18MCl8MCkpe2U9RGUoY1t3Pj4yXXwwLDApfDA7Yj0oY1t4Pj4yXXwwKSsxNnwwO2NbYj4+Ml09ZTtjW2IrND4+Ml09QztiPShjW3g+PjJdfDApKzE2fDA7ZT1jW2IrND4+Ml18MDtsPShjW3g+PjJdfDApKzh8MDtjW2w+PjJdPWNbYj4+Ml07Y1tsKzQ+PjJdPWV9Y1t5Pj4yXT1ZZChjW3c+PjJdfDApfDA7aWYoY1t5Pj4yXXwwKXtjW2o+PjJdPWNbeT4+Ml07QT1jW2o+PjJdfDA7aT1CO3JldHVybiBBfDB9fWNbcz4+Ml09Y1soY1t4Pj4yXXwwKSs0ND4+Ml07Y1t0Pj4yXT1NbChjWyhjW3g+PjJdfDApKzI0Pj4yXXwwLGNbKGNbeD4+Ml18MCkrMjg+PjJdfDAsY1tuPj4yXXwwLGNbbz4+Ml18MCl8MDtjW3Y+PjJdPShjW28+PjJdfDApLShjW3Q+PjJdfDApO3k9Y1t0Pj4yXXwwO3k9SmwoeSwoKHl8MCk8MCk8PDMxPj4zMSl8MDt3PWNbdj4+Ml18MDt3PXkrKEpsKHcsKCh3fDApPDApPDwzMT4+MzEpfDApfDA7dz13KyhjW3Y+PjJdfDApfDA7eT1jW3E+PjJdfDA7eT13KyhKbCh5LCgoeXwwKTwwKTw8MzE+PjMxKXwwKXwwO2NbdT4+Ml09eSsoY1txPj4yXXwwKTtkbyBpZigoY1tzPj4yXXwwKT4wPygoY1tzPj4yXXwwKSsoY1t1Pj4yXXwwKXwwKT4oY1soY1trPj4yXXwwKSsyMjQ+PjJdfDApOjApe2w9Y1trPj4yXXwwO2U9KGNbeD4+Ml18MCkrMTZ8MDt5PWU7dz1jW3k+PjJdfDA7eT1jW3krND4+Ml18MDtiPVJSKHd8MCx5fDAsMSwwKXwwO2NbZT4+Ml09YjtjW2UrND4+Ml09QztjW3o+PjJdPUZsKGwsdyx5LGNbKGNbeD4+Ml18MCkrNDg+PjJdfDAsY1tzPj4yXXwwKXwwO2lmKGNbej4+Ml18MCl7Y1tqPj4yXT1jW3o+PjJdO0E9Y1tqPj4yXXwwO2k9QjtyZXR1cm4gQXwwfXk9KGNbaz4+Ml18MCkrNTJ8MDtjW3k+PjJdPShjW3k+PjJdfDApKzE7Y1t6Pj4yXT1ObChjW2s+PjJdfDAsY1t4Pj4yXXwwLGNbbT4+Ml18MCxjW24+PjJdfDAsKGNbdD4+Ml18MCkrMXwwKXwwO2lmKCEoY1t6Pj4yXXwwKSl7Y1tzPj4yXT0wO2NbKGNbeD4+Ml18MCkrMjg+PjJdPTA7Y1t0Pj4yXT0wO2Nbdj4+Ml09Y1tvPj4yXTt5PWNbbz4+Ml18MDt5PTErKEpsKHksKCh5fDApPDApPDwzMT4+MzEpfDApfDA7eT15KyhjW28+PjJdfDApfDA7ej1jW3E+PjJdfDA7ej15KyhKbCh6LCgoenwwKTwwKTw8MzE+PjMxKXwwKXwwO2NbdT4+Ml09eisoY1txPj4yXXwwKTticmVha31jW2o+PjJdPWNbej4+Ml07QT1jW2o+PjJdfDA7aT1CO3JldHVybiBBfDB9d2hpbGUoMCk7eT1jW3U+PjJdfDA7ej0oY1t4Pj4yXXwwKSs1NnwwO3c9ejt5PVJSKGNbdz4+Ml18MCxjW3crND4+Ml18MCx5fDAsKCh5fDApPDApPDwzMT4+MzF8MCl8MDtjW3o+PjJdPXk7Y1t6KzQ+PjJdPUM7ZG8gaWYoKGNbdT4+Ml18MCk+KGNbKGNbeD4+Ml18MCkrNDA+PjJdfDApKXtjW3I+PjJdPUxkKGNbKGNbeD4+Ml18MCkrNDg+PjJdfDAsY1t1Pj4yXXwwKXwwO2lmKGNbcj4+Ml18MCl7Y1soY1t4Pj4yXXwwKSs0OD4+Ml09Y1tyPj4yXTtjWyhjW3g+PjJdfDApKzQwPj4yXT1jW3U+PjJdO2JyZWFrfWNbaj4+Ml09NztBPWNbaj4+Ml18MDtpPUI7cmV0dXJuIEF8MH13aGlsZSgwKTt6PWNbdD4+Ml18MDt6PUtsKChjWyhjW3g+PjJdfDApKzQ4Pj4yXXwwKSsoY1tzPj4yXXwwKXwwLHosKCh6fDApPDApPDwzMT4+MzEpfDA7Y1tzPj4yXT0oY1tzPj4yXXwwKSt6O3o9Y1t2Pj4yXXwwO3o9S2woKGNbKGNbeD4+Ml18MCkrNDg+PjJdfDApKyhjW3M+PjJdfDApfDAseiwoKHp8MCk8MCk8PDMxPj4zMSl8MDtjW3M+PjJdPShjW3M+PjJdfDApK3o7VFIoKGNbKGNbeD4+Ml18MCkrNDg+PjJdfDApKyhjW3M+PjJdfDApfDAsKGNbbj4+Ml18MCkrKGNbdD4+Ml18MCl8MCxjW3Y+PjJdfDApfDA7Y1tzPj4yXT0oY1tzPj4yXXwwKSsoY1t2Pj4yXXwwKTt6PWNbcT4+Ml18MDt6PUtsKChjWyhjW3g+PjJdfDApKzQ4Pj4yXXwwKSsoY1tzPj4yXXwwKXwwLHosKCh6fDApPDApPDwzMT4+MzEpfDA7Y1tzPj4yXT0oY1tzPj4yXXwwKSt6O1RSKChjWyhjW3g+PjJdfDApKzQ4Pj4yXXwwKSsoY1tzPj4yXXwwKXwwLGNbcD4+Ml18MCxjW3E+PjJdfDApfDA7Y1soY1t4Pj4yXXwwKSs0ND4+Ml09KGNbcz4+Ml18MCkrKGNbcT4+Ml18MCk7aWYoY1ttPj4yXXwwKXtkbyBpZigoY1tvPj4yXXwwKT4oY1soY1t4Pj4yXXwwKSszMj4+Ml18MCkpe2NbQT4+Ml09TGQoY1soY1t4Pj4yXXwwKSszNj4+Ml18MCxjW28+PjJdPDwxKXwwO2lmKGNbQT4+Ml18MCl7Y1soY1t4Pj4yXXwwKSszMj4+Ml09Y1tvPj4yXTw8MTtjWyhjW3g+PjJdfDApKzM2Pj4yXT1jW0E+PjJdO2NbKGNbeD4+Ml18MCkrMjQ+PjJdPWNbQT4+Ml07YnJlYWt9Y1tqPj4yXT03O0E9Y1tqPj4yXXwwO2k9QjtyZXR1cm4gQXwwfXdoaWxlKDApO1RSKGNbKGNbeD4+Ml18MCkrMjQ+PjJdfDAsY1tuPj4yXXwwLGNbbz4+Ml18MCl8MH1lbHNlIGNbKGNbeD4+Ml18MCkrMjQ+PjJdPWNbbj4+Ml07Y1soY1t4Pj4yXXwwKSsyOD4+Ml09Y1tvPj4yXTtjW2o+PjJdPTA7QT1jW2o+PjJdfDA7aT1CO3JldHVybiBBfDB9ZnVuY3Rpb24geGwoYSxiLGQsZSxmLGcpe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO3ZhciBoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wO3M9aTtpPWkrNDh8MDtsPXMrMzZ8MDttPXMrMzJ8MDtuPXMrMjh8MDtvPXMrMjR8MDtwPXMrMjB8MDtoPXMrMTZ8MDtqPXMrMTJ8MDtyPXMrOHwwO2s9cys0fDA7cT1zO2NbbT4+Ml09YTtjW24+PjJdPWI7Y1tvPj4yXT1kO2NbcD4+Ml09ZTtjW2g+PjJdPWY7Y1tqPj4yXT1nO2Nbcj4+Ml09MDtjW3E+PjJdPTA7Y1trPj4yXT0wO3doaWxlKDEpe2lmKGNbcj4+Ml18MClicmVhaztpZigoY1trPj4yXXwwKT49KGNbaj4+Ml18MCkpYnJlYWs7Y1tyPj4yXT1MbChjW20+PjJdfDAsY1soY1toPj4yXXwwKSsoY1trPj4yXTw8Mik+PjJdfDApfDA7Y1trPj4yXT0oY1trPj4yXXwwKSsxfWlmKGNbcj4+Ml18MCl7Y1tsPj4yXT1jW3I+PjJdO3I9Y1tsPj4yXXwwO2k9cztyZXR1cm4gcnwwfWg9Y1ttPj4yXXwwO2lmKChjW3A+PjJdfDApPT0tMil7Y1tyPj4yXT1wbChoLDI2LHEsMCl8MDtpZighKGNbcj4+Ml18MCkpe3A9Y1txPj4yXXwwO2E9c2woY1ttPj4yXXwwLGNbbj4+Ml18MCxjW28+PjJdfDAsMCl8MDtMZShwLDEsYSxDKXwwO2E9Y1txPj4yXXwwO3A9c2woY1ttPj4yXXwwLGNbbj4+Ml18MCxjW28+PjJdfDAsMTAyMyl8MDtMZShhLDIscCxDKXwwfX1lbHNle2Nbcj4+Ml09cGwoaCwxNixxLDApfDA7aWYoIShjW3I+PjJdfDApKXthPWNbcT4+Ml18MDtwPXNsKGNbbT4+Ml18MCxjW24+PjJdfDAsY1tvPj4yXXwwLGNbcD4+Ml18MCl8MDtMZShhLDEscCxDKXwwfX1pZighKGNbcj4+Ml18MCkpe3RlKGNbcT4+Ml18MCl8MDtjW3I+PjJdPVlkKGNbcT4+Ml18MCl8MH1jW2w+PjJdPWNbcj4+Ml07cj1jW2w+PjJdfDA7aT1zO3JldHVybiByfDB9ZnVuY3Rpb24geWwoYSxiLGQsZSxmKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wO3E9aTtpPWkrNDh8MDtnPXErNDR8MDtoPXErNDB8MDtqPXErMTZ8MDtrPXErMzZ8MDtvPXErMzJ8MDtsPXErOHwwO209cTtwPXErMjh8MDtuPXErMjR8MDtjW2c+PjJdPWE7Y1toPj4yXT1iO2I9ajtjW2I+PjJdPWQ7Y1tiKzQ+PjJdPWU7Y1trPj4yXT1mO2lmKCEoY1tjW2g+PjJdPj4yXXwwKSl7Yj1qO3A9KGNbaD4+Ml18MCkrNTZ8MDtjW28+PjJdPUhsKGNbZz4+Ml18MCxjW2I+PjJdfDAsY1tiKzQ+PjJdfDAsY1trPj4yXXwwLDAsMCwwLDAsMCwwLGNbcD4+Ml18MCxjW3ArND4+Ml18MCxjWyhjW2g+PjJdfDApKzQ4Pj4yXXwwLGNbKGNbaD4+Ml18MCkrNDQ+PjJdfDApfDA7cD1jW2c+PjJdfDA7cD1wKzUyfDA7Yj1jW3A+PjJdfDA7Yj1iKzF8MDtjW3A+PjJdPWI7cD1jW28+PjJdfDA7aT1xO3JldHVybiBwfDB9Yj1sO2NbYj4+Ml09MDtjW2IrND4+Ml09MDtjW3A+PjJdPTA7Y1tuPj4yXT0wO2I9KGNbaD4+Ml18MCkrMTZ8MDtlPWNbYis0Pj4yXXwwO2Y9bTtjW2Y+PjJdPWNbYj4+Ml07Y1tmKzQ+PjJdPWU7Zj1jW2c+PjJdfDA7ZT0oY1toPj4yXXwwKSsxNnwwO2I9ZTthPWNbYj4+Ml18MDtiPWNbYis0Pj4yXXwwO2Q9UlIoYXwwLGJ8MCwxLDApfDA7Y1tlPj4yXT1kO2NbZSs0Pj4yXT1DO2Nbbz4+Ml09RmwoZixhLGIsY1soY1toPj4yXXwwKSs0OD4+Ml18MCxjWyhjW2g+PjJdfDApKzQ0Pj4yXXwwKXwwO2lmKCEoY1tvPj4yXXwwKSl7YT0oY1toPj4yXXwwKSs4fDA7Yj0oY1toPj4yXXwwKSsxNnwwO2Nbbz4+Ml09R2woY1tnPj4yXXwwLGNbY1toPj4yXT4+Ml18MCwxLGNbYT4+Ml18MCxjW2ErND4+Ml18MCxjW2I+PjJdfDAsY1tiKzQ+PjJdfDAsbCxwLG4pfDB9aWYoY1tvPj4yXXwwKXtwPWNbZz4+Ml18MDtwPXArNTJ8MDtiPWNbcD4+Ml18MDtiPWIrMXwwO2NbcD4+Ml09YjtwPWNbbz4+Ml18MDtpPXE7cmV0dXJuIHB8MH1mPShjW2g+PjJdfDApKzh8MDthPWw7Yj0oY1toPj4yXXwwKSs1NnwwO2Nbbz4+Ml09SGwoY1tnPj4yXXwwLGNbaj4+Ml18MCxjW2orND4+Ml18MCxjW2s+PjJdfDAsY1tmPj4yXXwwLGNbZis0Pj4yXXwwLGNbbT4+Ml18MCxjW20rND4+Ml18MCxjW2E+PjJdfDAsY1thKzQ+PjJdfDAsY1tiPj4yXXwwLGNbYis0Pj4yXXwwLGNbcD4+Ml18MCxjW24+PjJdfDApfDA7cD1jW2c+PjJdfDA7cD1wKzUyfDA7Yj1jW3A+PjJdfDA7Yj1iKzF8MDtjW3A+PjJdPWI7cD1jW28+PjJdfDA7aT1xO3JldHVybiBwfDB9ZnVuY3Rpb24gemwoYSxiLGQsZSxmKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTA7dj1pO2k9aSs4MHwwO2c9dis3MnwwO2g9dis0MHwwO2o9diszMnwwO3Q9dis2OHwwO3E9dis2NHwwO2s9dis2MHwwO249disyNHwwO289disxNnwwO3A9dis4fDA7bD12O209dis1NnwwO3I9dis1MnwwO3M9dis0OHwwO2NbZz4+Ml09YTthPWg7Y1thPj4yXT1iO2NbYSs0Pj4yXT1kO2E9ajtjW2E+PjJdPWU7Y1thKzQ+PjJdPWY7Y1t0Pj4yXT0wO2NbdD4+Ml09cGwoY1tnPj4yXXwwLDM3LHEsMCl8MDtpZihjW3Q+PjJdfDApe3U9Y1t0Pj4yXXwwO2k9djtyZXR1cm4gdXwwfWNbaz4+Ml09MDtmPWg7Zj1fUihjW2Y+PjJdfDAsY1tmKzQ+PjJdfDAsMTAyNCwwKXwwO2Y9UlIoZnwwLEN8MCwxLDApfDA7Zj1hUyhmfDAsQ3wwLDEwMjQsMCl8MDtmPVFSKGZ8MCxDfDAsMSwwKXwwO2E9bjtjW2E+PjJdPWY7Y1thKzQ+PjJdPUM7YT1qO2E9YVMoY1thPj4yXXwwLGNbYSs0Pj4yXXwwLDMsMCl8MDthPV9SKGF8MCxDfDAsMiwwKXwwO2o9bztjW2o+PjJdPWE7Y1tqKzQ+PjJdPUM7aj1jW3E+PjJdfDA7YT1oO2E9UlIoY1thPj4yXXwwLGNbYSs0Pj4yXXwwLDEsMCl8MDtMZShqLDEsYSxDKXwwO2E9bjtMZShjW3E+PjJdfDAsMixjW2E+PjJdfDAsY1thKzQ+PjJdfDApfDA7d2hpbGUoMSl7aWYoMTAwIT0odGUoY1txPj4yXXwwKXwwKSlicmVhazthPXA7Y1thPj4yXT0wO2NbYSs0Pj4yXT0wO0VsKGNbcT4+Ml18MCwyLGwscCk7YT1wO249Y1thKzQ+PjJdfDA7aWYoKG58MCk8MHwobnwwKT09MCYoY1thPj4yXXwwKT4+PjA8PTApe3U9NjticmVha31uPXA7Zj1jW24rND4+Ml18MDthPW87aj1jW2ErND4+Ml18MDtpZigoZnwwKT4oanwwKXwoKGZ8MCk9PShqfDApPyhjW24+PjJdfDApPj4+MD4oY1thPj4yXXwwKT4+PjA6MCkpe3U9NjticmVha31jW2s+PjJdPTF9aWYoKHV8MCk9PTYpY1trPj4yXT0wO2NbdD4+Ml09WWQoY1txPj4yXXwwKXwwO2lmKCEoY1trPj4yXXwwKSl7dT1jW3Q+PjJdfDA7aT12O3JldHVybiB1fDB9Y1ttPj4yXT0wO2Nbcj4+Ml09MDtjW3M+PjJdPTA7aWYoIShjW3Q+PjJdfDApKWNbdD4+Ml09cGwoY1tnPj4yXXwwLDM4LHIsMCl8MDtpZighKGNbdD4+Ml18MCkpY1t0Pj4yXT1wbChjW2c+PjJdfDAsMzkscywwKXwwO2E6ZG8gaWYoIShjW3Q+PjJdfDApKXt1PWg7TGUoY1txPj4yXXwwLDEsY1t1Pj4yXXwwLGNbdSs0Pj4yXXwwKXwwO2Rve2lmKDEwMCE9KHRlKGNbcT4+Ml18MCl8MCkpYnJlYWsgYTthPWNbcj4+Ml18MDt1PWNbbT4+Ml18MDtjW20+PjJdPXUrMTtLZShhLDEsdSl8MDt1PWNbcj4+Ml18MDtLZSh1LDIsQ2UoY1txPj4yXXwwLDApfDApfDA7dT1jW3I+PjJdfDA7S2UodSwzLENlKGNbcT4+Ml18MCwxKXwwKXwwO3RlKGNbcj4+Ml18MCl8MDtjW3Q+PjJdPVlkKGNbcj4+Ml18MCl8MH13aGlsZSgoY1t0Pj4yXXwwKT09MCk7WWQoY1txPj4yXXwwKXwwfXdoaWxlKDApO2lmKCEoY1t0Pj4yXXwwKSljW3Q+PjJdPVlkKGNbcT4+Ml18MCl8MDtpZihjW3Q+PjJdfDApe3U9Y1t0Pj4yXXwwO2k9djtyZXR1cm4gdXwwfXU9aDtMZShjW3M+PjJdfDAsMSxjW3U+PjJdfDAsY1t1KzQ+PjJdfDApfDA7dGUoY1tzPj4yXXwwKXwwO2NbdD4+Ml09WWQoY1tzPj4yXXwwKXwwO3U9Y1t0Pj4yXXwwO2k9djtyZXR1cm4gdXwwfWZ1bmN0aW9uIEFsKGEpe2E9YXwwO3ZhciBiPTAsZD0wO2Q9aTtpPWkrMTZ8MDtiPWQ7Y1tiPj4yXT1hO2lmKCEoY1tiPj4yXXwwKSl7aT1kO3JldHVybn1LZChjWyhjW2I+PjJdfDApKzQ4Pj4yXXwwKTtLZChjWyhjW2I+PjJdfDApKzM2Pj4yXXwwKTtEbChjW2NbYj4+Ml0+PjJdfDApO0tkKGNbYj4+Ml18MCk7aT1kO3JldHVybn1mdW5jdGlvbiBCbChhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTA7ZT1pO2k9aSsxNnwwO2I9ZSs0fDA7ZD1lO2NbYj4+Ml09YTtpZighKGNbYj4+Ml18MCkpe2k9ZTtyZXR1cm59Y1tkPj4yXT0wO3doaWxlKDEpe2lmKChjW2Q+PjJdfDApPj0oY1soY1tiPj4yXXwwKSs0Pj4yXXwwKSlicmVhaztDbChjWyhjW2NbYj4+Ml0+PjJdfDApKyhjW2Q+PjJdPDwyKT4+Ml18MCk7Y1tkPj4yXT0oY1tkPj4yXXwwKSsxfUtkKGNbY1tiPj4yXT4+Ml18MCk7S2QoY1soY1tiPj4yXXwwKSsxNj4+Ml18MCk7Y1soY1tiPj4yXXwwKSs0Pj4yXT0wO2NbY1tiPj4yXT4+Ml09MDtjWyhjW2I+PjJdfDApKzE2Pj4yXT0wO2k9ZTtyZXR1cm59ZnVuY3Rpb24gQ2woYSl7YT1hfDA7dmFyIGI9MCxlPTA7ZT1pO2k9aSsxNnwwO2I9ZTtjW2I+PjJdPWE7aWYoIShjW2I+PjJdfDApKXthPWNbYj4+Ml18MDtLZChhKTtpPWU7cmV0dXJufWlmKCEoY1soY1tiPj4yXXwwKSs1Nj4+Ml18MCkpS2QoY1soY1tiPj4yXXwwKSs2ND4+Ml18MCk7aWYoIShkWyhjW2I+PjJdfDApKzU+PjBdfDApKUtkKGNbKGNbYj4+Ml18MCkrNDA+PjJdfDApO1ZlKGNbKGNbYj4+Ml18MCkrNTI+PjJdfDApfDA7YT1jW2I+PjJdfDA7S2QoYSk7aT1lO3JldHVybn1mdW5jdGlvbiBEbChhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wO2Y9aTtpPWkrMTZ8MDtiPWYrOHwwO2Q9Zis0fDA7ZT1mO2NbYj4+Ml09YTtpZighKGNbYj4+Ml18MCkpe2k9ZjtyZXR1cm59Y1tkPj4yXT1jWyhjW2I+PjJdfDApKzg+PjJdO0RsKGNbY1tkPj4yXT4+Ml18MCk7d2hpbGUoMSl7aWYoIShjW2Q+PjJdfDApKWJyZWFrO2NbZT4+Ml09Y1soY1tkPj4yXXwwKSs0Pj4yXTtpZigoY1soY1tkPj4yXXwwKSszNj4+Ml18MCkhPSgoY1tkPj4yXXwwKSs0MHwwKSlLZChjWyhjW2Q+PjJdfDApKzM2Pj4yXXwwKTtLZChjWyhjW2Q+PjJdfDApKzI4Pj4yXXwwKTtLZChjW2Q+PjJdfDApO2NbZD4+Ml09Y1tlPj4yXX1pPWY7cmV0dXJufWZ1bmN0aW9uIEVsKGEsYixlLGYpe2E9YXwwO2I9YnwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MDtuPWk7aT1pKzQ4fDA7cD1uKzMyfDA7bz1uKzI4fDA7Zz1uKzI0fDA7aD1uKzIwfDA7bT1uKzE2fDA7aj1uKzEyfDA7az1uKzh8MDtsPW47Y1twPj4yXT1hO2Nbbz4+Ml09YjtjW2c+PjJdPWU7Y1toPj4yXT1mO2NbbT4+Ml09RWUoY1twPj4yXXwwLGNbbz4+Ml18MCl8MDtpZighKGNbbT4+Ml18MCkpe2k9bjtyZXR1cm59Y1trPj4yXT0xO3A9bDtjW3A+PjJdPTA7Y1twKzQ+PjJdPTA7Y1tqPj4yXT0wO3doaWxlKDEpe2lmKChkWyhjW20+PjJdfDApKyhjW2o+PjJdfDApPj4wXXwwfDApPj00OCliPShkWyhjW20+PjJdfDApKyhjW2o+PjJdfDApPj4wXXwwfDApPD01NztlbHNlIGI9MDtlPWw7YT1jW2U+PjJdfDA7ZT1jW2UrND4+Ml18MDtpZighYilicmVhaztwPWFTKGF8MCxlfDAsMTAsMCl8MDtvPShkWyhjW20+PjJdfDApKyhjW2o+PjJdfDApPj4wXXwwKS00OHwwO289UlIocHwwLEN8MCxvfDAsKChvfDApPDApPDwzMT4+MzF8MCl8MDtwPWw7Y1twPj4yXT1vO2NbcCs0Pj4yXT1DO2Nbaj4+Ml09KGNbaj4+Ml18MCkrMX1wPWNbZz4+Ml18MDtjW3A+PjJdPWE7Y1twKzQ+PjJdPWU7d2hpbGUoMSl7aWYoKGRbKGNbbT4+Ml18MCkrKGNbaj4+Ml18MCk+PjBdfDB8MCkhPTMyKWJyZWFrO2Nbaj4+Ml09KGNbaj4+Ml18MCkrMX1wPWw7Y1twPj4yXT0wO2NbcCs0Pj4yXT0wO2lmKChkWyhjW20+PjJdfDApKyhjW2o+PjJdfDApPj4wXXwwfDApPT00NSl7Y1tqPj4yXT0oY1tqPj4yXXwwKSsxO2Nbaz4+Ml09LTF9d2hpbGUoMSl7aWYoKGRbKGNbbT4+Ml18MCkrKGNbaj4+Ml18MCk+PjBdfDB8MCk+PTQ4KWI9KGRbKGNbbT4+Ml18MCkrKGNbaj4+Ml18MCk+PjBdfDB8MCk8PTU3O2Vsc2UgYj0wO2U9bDthPWNbZT4+Ml18MDtlPWNbZSs0Pj4yXXwwO2lmKCFiKWJyZWFrO3A9YVMoYXwwLGV8MCwxMCwwKXwwO289KGRbKGNbbT4+Ml18MCkrKGNbaj4+Ml18MCk+PjBdfDApLTQ4fDA7bz1SUihwfDAsQ3wwLG98MCwoKG98MCk8MCk8PDMxPj4zMXwwKXwwO3A9bDtjW3A+PjJdPW87Y1twKzQ+PjJdPUM7Y1tqPj4yXT0oY1tqPj4yXXwwKSsxfW89Y1trPj4yXXwwO289YVMoYXwwLGV8MCxvfDAsKChvfDApPDApPDwzMT4+MzF8MCl8MDtwPWNbaD4+Ml18MDtjW3A+PjJdPW87Y1twKzQ+PjJdPUM7aT1uO3JldHVybn1mdW5jdGlvbiBGbChhLGIsZCxlLGYpe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTA7bT1pO2k9aSszMnwwO249bSsyNHwwO2c9bTtoPW0rMjB8MDtqPW0rMTZ8MDtrPW0rMTJ8MDtsPW0rOHwwO2Nbbj4+Ml09YTthPWc7Y1thPj4yXT1iO2NbYSs0Pj4yXT1kO2NbaD4+Ml09ZTtjW2o+PjJdPWY7Y1tsPj4yXT1wbChjW24+PjJdfDAsOSxrLDApfDA7aWYoY1tsPj4yXXwwKXtuPWNbbD4+Ml18MDtpPW07cmV0dXJuIG58MH1uPWc7TGUoY1trPj4yXXwwLDEsY1tuPj4yXXwwLGNbbis0Pj4yXXwwKXwwO0llKGNbaz4+Ml18MCwyLGNbaD4+Ml18MCxjW2o+PjJdfDAsMCl8MDt0ZShjW2s+PjJdfDApfDA7Y1tsPj4yXT1ZZChjW2s+PjJdfDApfDA7bj1jW2w+PjJdfDA7aT1tO3JldHVybiBufDB9ZnVuY3Rpb24gR2woYSxiLGQsZSxmLGcsaCxqLGssbCl7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7bD1sfDA7dmFyIG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MDtCPWk7aT1pKzgwfDA7bz1CKzcyfDA7cD1CKzY4fDA7cT1CKzY0fDA7cj1CKzI0fDA7cz1CKzE2fDA7dD1CKzYwfDA7bT1CKzU2fDA7bj1CKzUyfDA7QT1CKzQ4fDA7dz1CKzQ0fDA7ej1CKzQwfDA7dT1CKzh8MDt2PUI7eD1CKzM2fDA7eT1CKzMyfDA7Y1tvPj4yXT1hO2NbcD4+Ml09YjtjW3E+PjJdPWQ7Yj1yO2NbYj4+Ml09ZTtjW2IrND4+Ml09ZjtiPXM7Y1tiPj4yXT1nO2NbYis0Pj4yXT1oO2NbdD4+Ml09ajtjW20+PjJdPWs7Y1tuPj4yXT1sO2NbQT4+Ml09MDtpZighKGNbY1twPj4yXT4+Ml18MCkpe2o9cjtjW3c+PjJdPUlsKGNbcD4+Ml18MCxjW3E+PjJdfDAsY1tqPj4yXXwwLGNbais0Pj4yXXwwKXwwO2o9cztqPVFSKGNbaj4+Ml18MCxjW2orND4+Ml18MCwxLDApfDA7bD1jW3Q+PjJdfDA7Y1tsPj4yXT1qO2NbbCs0Pj4yXT1DO2NbY1tuPj4yXT4+Ml09KGNbKGNbcD4+Ml18MCkrMzI+PjJdfDApLShjW3c+PjJdfDApO2NbY1ttPj4yXT4+Ml09KGNbKGNbcD4+Ml18MCkrMzY+PjJdfDApKyhjW3c+PjJdfDApO0E9Y1tBPj4yXXwwO2k9QjtyZXR1cm4gQXwwfWw9cztqPWNbbCs0Pj4yXXwwO2s9dTtjW2s+PjJdPWNbbD4+Ml07Y1trKzQ+PjJdPWo7az1yO2o9Y1trKzQ+PjJdfDA7bD12O2NbbD4+Ml09Y1trPj4yXTtjW2wrND4+Ml09ajtjW3o+PjJdPWNbKGNbcD4+Ml18MCkrOD4+Ml07d2hpbGUoMSl7aWYoISgoY1t6Pj4yXXwwKSE9MD8oY1tBPj4yXXwwKT09MDowKSlicmVhaztsPXY7Y1t4Pj4yXT1JbChjW3o+PjJdfDAsY1txPj4yXXwwLGNbbD4+Ml18MCxjW2wrND4+Ml18MCl8MDtjW3k+PjJdPShjWyhjW3o+PjJdfDApKzMyPj4yXXwwKS0oY1t4Pj4yXXwwKTtsPXU7Y1tBPj4yXT1GbChjW28+PjJdfDAsY1tsPj4yXXwwLGNbbCs0Pj4yXXwwLChjWyhjW3o+PjJdfDApKzM2Pj4yXXwwKSsoY1t4Pj4yXXwwKXwwLGNbeT4+Ml18MCl8MDtsPXU7bD1SUihjW2w+PjJdfDAsY1tsKzQ+PjJdfDAsMSwwKXwwO2o9dTtjW2o+PjJdPWw7Y1tqKzQ+PjJdPUM7aj0oY1soY1t6Pj4yXXwwKSsxMj4+Ml18MCkrMXwwO2w9djtqPVJSKGNbbD4+Ml18MCxjW2wrND4+Ml18MCxqfDAsKChqfDApPDApPDwzMT4+MzF8MCl8MDtsPXY7Y1tsPj4yXT1qO2NbbCs0Pj4yXT1DO2Nbej4+Ml09Y1soY1t6Pj4yXXwwKSs0Pj4yXX1pZihjW0E+PjJdfDApe0E9Y1tBPj4yXXwwO2k9QjtyZXR1cm4gQXwwfWo9cztsPXU7Y1tBPj4yXT1HbChjW28+PjJdfDAsY1tjW3A+PjJdPj4yXXwwLChjW3E+PjJdfDApKzF8MCxjW2o+PjJdfDAsY1tqKzQ+PjJdfDAsY1tsPj4yXXwwLGNbbCs0Pj4yXXwwLGNbdD4+Ml18MCxjW20+PjJdfDAsY1tuPj4yXXwwKXwwO0E9Y1tBPj4yXXwwO2k9QjtyZXR1cm4gQXwwfWZ1bmN0aW9uIEhsKGEsYixkLGUsZixnLGgsaixrLGwsbSxuLG8scCl7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7bD1sfDA7bT1tfDA7bj1ufDA7bz1vfDA7cD1wfDA7dmFyIHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTAsRT0wO0Q9aTtpPWkrOTZ8MDtCPUQrNDB8MDtxPUQrODR8MDtFPUQrODB8MDtyPUQrMzJ8MDtzPUQrNzZ8MDt0PUQrMjR8MDt1PUQrMTZ8MDt2PUQrOHwwO3c9RDt4PUQrNzJ8MDt5PUQrNjh8MDt6PUQrNjR8MDtBPUQrNjB8MDtDPUQrNTZ8MDtjW0U+PjJdPWE7YT1yO2NbYT4+Ml09YjtjW2ErND4+Ml09ZDtjW3M+PjJdPWU7YT10O2NbYT4+Ml09ZjtjW2ErND4+Ml09ZzthPXU7Y1thPj4yXT1oO2NbYSs0Pj4yXT1qO2E9djtjW2E+PjJdPWs7Y1thKzQ+PjJdPWw7YT13O2NbYT4+Ml09bTtjW2ErND4+Ml09bjtjW3g+PjJdPW87Y1t5Pj4yXT1wO2NbQT4+Ml09cGwoY1tFPj4yXXwwLDExLHosMCl8MDtpZighKGNbQT4+Ml18MCkpe0U9cjtMZShjW3o+PjJdfDAsMSxjW0U+PjJdfDAsY1tFKzQ+PjJdfDApfDA7S2UoY1t6Pj4yXXwwLDIsY1tzPj4yXXwwKXwwO0U9dDtMZShjW3o+PjJdfDAsMyxjW0U+PjJdfDAsY1tFKzQ+PjJdfDApfDA7RT11O0xlKGNbej4+Ml18MCw0LGNbRT4+Ml18MCxjW0UrND4+Ml18MCl8MDtFPXc7ZG8gaWYoKGNbRT4+Ml18MCk9PTAmKGNbRSs0Pj4yXXwwKT09MCl7RT12O0xlKGNbej4+Ml18MCw1LGNbRT4+Ml18MCxjW0UrND4+Ml18MCl8MH1lbHNle2U9djtwPWNbZSs0Pj4yXXwwO289dzthPWNbbz4+Ml18MDtvPWNbbys0Pj4yXXwwO0U9QjtjW0U+PjJdPWNbZT4+Ml07Y1tFKzQ+PjJdPXA7RT1CKzh8MDtjW0U+PjJdPWE7Y1tFKzQ+PjJdPW87Y1tDPj4yXT1PZCgyMzE1MyxCKXwwO2lmKGNbQz4+Ml18MCl7TmUoY1t6Pj4yXXwwLDUsY1tDPj4yXXwwLC0xLDE0OCl8MDticmVha31jW3E+PjJdPTc7RT1jW3E+PjJdfDA7aT1EO3JldHVybiBFfDB9d2hpbGUoMCk7SWUoY1t6Pj4yXXwwLDYsY1t4Pj4yXXwwLGNbeT4+Ml18MCwwKXwwO3RlKGNbej4+Ml18MCl8MDtjW0E+PjJdPVlkKGNbej4+Ml18MCl8MH1jW3E+PjJdPWNbQT4+Ml07RT1jW3E+PjJdfDA7aT1EO3JldHVybiBFfDB9ZnVuY3Rpb24gSWwoYixkLGUsZil7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTA7aD1pO2k9aSszMnwwO2o9aCsxNnwwO2w9aCsxMnwwO2s9aDtnPWgrOHwwO2Nbaj4+Ml09YjtjW2w+PjJdPWQ7Yj1rO2NbYj4+Ml09ZTtjW2IrND4+Ml09ZjtiPWs7Y1tnPj4yXT0xMC0oSmwoY1tiPj4yXXwwLGNbYis0Pj4yXXwwKXwwKTthWyhjWyhjW2o+PjJdfDApKzM2Pj4yXXwwKSsoY1tnPj4yXXwwKT4+MF09Y1tsPj4yXTtiPWs7S2woKGNbKGNbaj4+Ml18MCkrMzY+PjJdfDApKygoY1tnPj4yXXwwKSsxKXwwLGNbYj4+Ml18MCxjW2IrND4+Ml18MCl8MDtpPWg7cmV0dXJuIGNbZz4+Ml18MH1mdW5jdGlvbiBKbChhLGIpe2E9YXwwO2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTA7Zj1pO2k9aSsxNnwwO2Q9ZjtlPWYrOHwwO2c9ZDtjW2c+PjJdPWE7Y1tnKzQ+PjJdPWI7Y1tlPj4yXT0wO2Rve2NbZT4+Ml09KGNbZT4+Ml18MCkrMTtiPWQ7Yj1TUihjW2I+PjJdfDAsY1tiKzQ+PjJdfDAsNyl8MDtnPWQ7Y1tnPj4yXT1iO2NbZys0Pj4yXT1DO2c9ZH13aGlsZSgoY1tnPj4yXXwwKSE9MHwoY1tnKzQ+PjJdfDApIT0wKTtpPWY7cmV0dXJuIGNbZT4+Ml18MH1mdW5jdGlvbiBLbChiLGUsZil7Yj1ifDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTA7az1pO2k9aSszMnwwO2c9aysyMHwwO2w9ays4fDA7aD1rKzE2fDA7aj1rO2NbZz4+Ml09YjtiPWw7Y1tiPj4yXT1lO2NbYis0Pj4yXT1mO2NbaD4+Ml09Y1tnPj4yXTtlPWw7Zj1jW2UrND4+Ml18MDtiPWo7Y1tiPj4yXT1jW2U+PjJdO2NbYis0Pj4yXT1mO2Rve2w9KGNbaj4+Ml0mMTI3fDEyOCkmMjU1O2I9Y1toPj4yXXwwO2NbaD4+Ml09YisxO2FbYj4+MF09bDtiPWo7Yj1TUihjW2I+PjJdfDAsY1tiKzQ+PjJdfDAsNyl8MDtsPWo7Y1tsPj4yXT1iO2NbbCs0Pj4yXT1DO2w9an13aGlsZSgoY1tsPj4yXXwwKSE9MHwoY1tsKzQ+PjJdfDApIT0wKTtsPShjW2g+PjJdfDApKy0xfDA7YVtsPj4wXT0oZFtsPj4wXXwwKSYxMjc7aT1rO3JldHVybiAoY1toPj4yXXwwKS0oY1tnPj4yXXwwKXwwfWZ1bmN0aW9uIExsKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTA7aD1pO2k9aSsxNnwwO2Q9aCsxMnwwO2U9aCs4fDA7Zz1oKzR8MDtmPWg7Y1tkPj4yXT1hO2NbZT4+Ml09YjtjW2c+PjJdPTA7Yj0oY1tlPj4yXXwwKSs4fDA7aWYoISgoY1tiPj4yXXwwKSE9MHwoY1tiKzQ+PjJdfDApIT0wKSl7Zz1jW2c+PjJdfDA7aT1oO3JldHVybiBnfDB9Y1tnPj4yXT1wbChjW2Q+PjJdfDAsMTcsZiwwKXwwO2lmKGNbZz4+Ml18MCl7Zz1jW2c+PjJdfDA7aT1oO3JldHVybiBnfDB9Yj0oY1tlPj4yXXwwKSs4fDA7TGUoY1tmPj4yXXwwLDEsY1tiPj4yXXwwLGNbYis0Pj4yXXwwKXwwO2I9KGNbZT4+Ml18MCkrMjR8MDtMZShjW2Y+PjJdfDAsMixjW2I+PjJdfDAsY1tiKzQ+PjJdfDApfDA7dGUoY1tmPj4yXXwwKXwwO2NbZz4+Ml09WWQoY1tmPj4yXXwwKXwwO2c9Y1tnPj4yXXwwO2k9aDtyZXR1cm4gZ3wwfWZ1bmN0aW9uIE1sKGIsZCxlLGYpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wO2w9aTtpPWkrMzJ8MDtnPWwrMTZ8MDtoPWwrMTJ8MDtqPWwrOHwwO2s9bDtjW2c+PjJdPWI7Y1toPj4yXT1kO2Nbaj4+Ml09ZTtjW2wrND4+Ml09ZjtjW2s+PjJdPTA7d2hpbGUoMSl7aWYoKGNbaz4+Ml18MCk+PShjW2g+PjJdfDApKXtnPTU7YnJlYWt9aWYoKGFbKGNbZz4+Ml18MCkrKGNbaz4+Ml18MCk+PjBdfDApIT0oYVsoY1tqPj4yXXwwKSsoY1trPj4yXXwwKT4+MF18MCkpe2c9NTticmVha31jW2s+PjJdPShjW2s+PjJdfDApKzF9aWYoKGd8MCk9PTUpe2k9bDtyZXR1cm4gY1trPj4yXXwwfXJldHVybiAwfWZ1bmN0aW9uIE5sKGEsYixkLGUsZil7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MDt3PWk7aT1pKzY0fDA7bT13KzU2fDA7bj13KzUyfDA7bz13KzQ4fDA7cD13KzQ0fDA7cT13KzQwfDA7cj13KzM2fDA7dT13KzMyfDA7dj13KzI4fDA7cz13KzI0fDA7Zz13KzIwfDA7aj13KzE2fDA7aD13KzEyfDA7az13Kzh8MDtsPXcrNHwwO3Q9dztjW24+PjJdPWE7Y1tvPj4yXT1iO2NbcD4+Ml09ZDtjW3E+PjJdPWU7Y1tyPj4yXT1mO2NbdT4+Ml09Y1tjW28+PjJdPj4yXTtkbyBpZihjW3U+PjJdfDApe2NbZz4+Ml09Y1soY1t1Pj4yXXwwKSszMj4+Ml07Y1tqPj4yXT1jW2c+PjJdO2NbaD4+Ml09TWwoY1soY1t1Pj4yXXwwKSsxNj4+Ml18MCxjWyhjW3U+PjJdfDApKzIwPj4yXXwwLGNbcT4+Ml18MCxjW3I+PjJdfDApfDA7Y1trPj4yXT0oY1tyPj4yXXwwKS0oY1toPj4yXXwwKTtiPWNbaD4+Ml18MDtiPUpsKGIsKChifDApPDApPDwzMT4+MzEpfDA7ZT1jW2s+PjJdfDA7ZT1iKyhKbChlLCgoZXwwKTwwKTw8MzE+PjMxKXwwKXwwO2Nbaj4+Ml09KGNbaj4+Ml18MCkrKGUrKGNbaz4+Ml18MCkpO2lmKChjW2o+PjJdfDApPihjWyhjW24+PjJdfDApKzIyND4+Ml18MCk/KGNbKGNbdT4+Ml18MCkrMTY+PjJdfDApIT0wOjApYnJlYWs7aWYoKGNbaj4+Ml18MCk+KGNbKGNbbj4+Ml18MCkrMjI0Pj4yXXwwKT8odj1JZChjW2o+PjJdfDApfDAsY1soY1t1Pj4yXXwwKSszNj4+Ml09diwoY1soY1t1Pj4yXXwwKSszNj4+Ml18MCk9PTApOjApe2NbbT4+Ml09Nzt2PWNbbT4+Ml18MDtpPXc7cmV0dXJuIHZ8MH1pZihjWyhjW3U+PjJdfDApKzE2Pj4yXXwwKXt2PWNbaD4+Ml18MDt2PUtsKChjWyhjW3U+PjJdfDApKzM2Pj4yXXwwKSsoY1tnPj4yXXwwKXwwLHYsKCh2fDApPDApPDwzMT4+MzEpfDA7Y1tnPj4yXT0oY1tnPj4yXXwwKSt2fXY9Y1trPj4yXXwwO3Y9S2woKGNbKGNbdT4+Ml18MCkrMzY+PjJdfDApKyhjW2c+PjJdfDApfDAsdiwoKHZ8MCk8MCk8PDMxPj4zMSl8MDtjW2c+PjJdPShjW2c+PjJdfDApK3Y7VFIoKGNbKGNbdT4+Ml18MCkrMzY+PjJdfDApKyhjW2c+PjJdfDApfDAsKGNbcT4+Ml18MCkrKGNbaD4+Ml18MCl8MCxjW2s+PjJdfDApfDA7Y1soY1t1Pj4yXXwwKSszMj4+Ml09KGNbZz4+Ml18MCkrKGNbaz4+Ml18MCk7dj0oY1t1Pj4yXXwwKSsxMnwwO2Nbdj4+Ml09KGNbdj4+Ml18MCkrMTtpZihjW3A+PjJdfDApe2RvIGlmKChjWyhjW3U+PjJdfDApKzI0Pj4yXXwwKTwoY1tyPj4yXXwwKSl7Y1tsPj4yXT1MZChjWyhjW3U+PjJdfDApKzI4Pj4yXXwwLGNbcj4+Ml08PDEpfDA7aWYoY1tsPj4yXXwwKXtjWyhjW3U+PjJdfDApKzI0Pj4yXT1jW3I+PjJdPDwxO2NbKGNbdT4+Ml18MCkrMjg+PjJdPWNbbD4+Ml07YnJlYWt9Y1ttPj4yXT03O3Y9Y1ttPj4yXXwwO2k9dztyZXR1cm4gdnwwfXdoaWxlKDApO2NbKGNbdT4+Ml18MCkrMTY+PjJdPWNbKGNbdT4+Ml18MCkrMjg+PjJdO1RSKGNbKGNbdT4+Ml18MCkrMTY+PjJdfDAsY1txPj4yXXwwLGNbcj4+Ml18MCl8MDtjWyhjW3U+PjJdfDApKzIwPj4yXT1jW3I+PjJdfWVsc2V7Y1soY1t1Pj4yXXwwKSsxNj4+Ml09Y1txPj4yXTtjWyhjW3U+PjJdfDApKzIwPj4yXT1jW3I+PjJdfWNbbT4+Ml09MDt2PWNbbT4+Ml18MDtpPXc7cmV0dXJuIHZ8MH13aGlsZSgwKTtjW3M+PjJdPUlkKDQwKyhjWyhjW24+PjJdfDApKzIyND4+Ml18MCl8MCl8MDtpZighKGNbcz4+Ml18MCkpe2NbbT4+Ml09Nzt2PWNbbT4+Ml18MDtpPXc7cmV0dXJuIHZ8MH1kPWNbcz4+Ml18MDtnPWQrNDB8MDtkb3tjW2Q+PjJdPTA7ZD1kKzR8MH13aGlsZSgoZHwwKTwoZ3wwKSk7Y1soY1tzPj4yXXwwKSszMj4+Ml09MTE7Y1soY1tzPj4yXXwwKSszNj4+Ml09KGNbcz4+Ml18MCkrNDA7aWYoY1t1Pj4yXXwwKXtjW3Q+PjJdPWNbY1t1Pj4yXT4+Ml07Y1t2Pj4yXT1ObChjW24+PjJdfDAsdCxjW3A+PjJdfDAsY1txPj4yXXwwLGNbcj4+Ml18MCl8MDtpZighKGNbY1t1Pj4yXT4+Ml18MCkpY1tjW3U+PjJdPj4yXT1jW3Q+PjJdO2NbKGNbdT4+Ml18MCkrND4+Ml09Y1tzPj4yXTtjWyhjW3M+PjJdfDApKzg+PjJdPWNbKGNbdT4+Ml18MCkrOD4+Ml07Y1tjW3M+PjJdPj4yXT1jW3Q+PjJdO2NbKGNbcz4+Ml18MCkrMjg+PjJdPWNbKGNbdT4+Ml18MCkrMjg+PjJdO2NbKGNbcz4+Ml18MCkrMjQ+PjJdPWNbKGNbdT4+Ml18MCkrMjQ+PjJdO2NbKGNbdT4+Ml18MCkrMjg+PjJdPTB9ZWxzZXtjWyhjW3M+PjJdfDApKzg+PjJdPWNbcz4+Ml07Y1t2Pj4yXT1ObChjW24+PjJdfDAscyxjW3A+PjJdfDAsY1txPj4yXXwwLGNbcj4+Ml18MCl8MH1jW2Nbbz4+Ml0+PjJdPWNbcz4+Ml07Y1ttPj4yXT1jW3Y+PjJdO3Y9Y1ttPj4yXXwwO2k9dztyZXR1cm4gdnwwfWZ1bmN0aW9uIE9sKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MDtnPWk7aT1pKzE2fDA7ZD1nKzh8MDtlPWcrNHwwO2Y9ZztjW2Q+PjJdPWE7Y1tlPj4yXT1iO2NbZj4+Ml09KChjWyhjW2Q+PjJdfDApKzgwPj4yXXwwKT09MCYxKS0oKGNbKGNbZT4+Ml18MCkrODA+PjJdfDApPT0wJjEpO2lmKGNbZj4+Ml18MCl7Zj1jW2Y+PjJdfDA7aT1nO3JldHVybiBmfDB9YT0oY1tkPj4yXXwwKSs4OHwwO2I9KGNbZT4+Ml18MCkrODh8MDtpZigoY1thPj4yXXwwKT09KGNbYj4+Ml18MCk/KGNbYSs0Pj4yXXwwKT09KGNbYis0Pj4yXXwwKTowKXtjW2Y+PjJdPShjW2NbZT4+Ml0+PjJdfDApLShjW2NbZD4+Ml0+PjJdfDApO2Y9Y1tmPj4yXXwwO2k9ZztyZXR1cm4gZnwwfWVsc2V7YT0oY1tkPj4yXXwwKSs4OHwwO2Q9Y1thKzQ+PjJdfDA7Yj0oY1tlPj4yXXwwKSs4OHwwO2U9Y1tiKzQ+PjJdfDA7Y1tmPj4yXT0oZHwwKTwoZXwwKXwoKGR8MCk9PShlfDApPyhjW2E+PjJdfDApPj4+MDwoY1tiPj4yXXwwKT4+PjA6MCk/MTotMTtmPWNbZj4+Ml18MDtpPWc7cmV0dXJuIGZ8MH1yZXR1cm4gMH1mdW5jdGlvbiBQbChhLGIpe2E9YXwwO2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTA7Zz1pO2k9aSsxNnwwO2Q9Zys4fDA7ZT1nKzR8MDtmPWc7Y1tkPj4yXT1hO2NbZT4+Ml09YjtjW2Y+PjJdPSgoY1soY1tkPj4yXXwwKSs4MD4+Ml18MCk9PTAmMSktKChjWyhjW2U+PjJdfDApKzgwPj4yXXwwKT09MCYxKTtpZihjW2Y+PjJdfDApe2Y9Y1tmPj4yXXwwO2k9ZztyZXR1cm4gZnwwfWE9KGNbZD4+Ml18MCkrODh8MDtiPShjW2U+PjJdfDApKzg4fDA7aWYoKGNbYT4+Ml18MCk9PShjW2I+PjJdfDApPyhjW2ErND4+Ml18MCk9PShjW2IrND4+Ml18MCk6MCl7Y1tmPj4yXT0oY1tjW2U+PjJdPj4yXXwwKS0oY1tjW2Q+PjJdPj4yXXwwKTtmPWNbZj4+Ml18MDtpPWc7cmV0dXJuIGZ8MH1lbHNle2E9KGNbZD4+Ml18MCkrODh8MDtkPWNbYSs0Pj4yXXwwO2I9KGNbZT4+Ml18MCkrODh8MDtlPWNbYis0Pj4yXXwwO2NbZj4+Ml09KGR8MCk+KGV8MCl8KChkfDApPT0oZXwwKT8oY1thPj4yXXwwKT4+PjA+KGNbYj4+Ml18MCk+Pj4wOjApPzE6LTE7Zj1jW2Y+PjJdfDA7aT1nO3JldHVybiBmfDB9cmV0dXJuIDB9ZnVuY3Rpb24gUWwoYSl7YT1hfDA7dmFyIGI9MCxlPTA7ZT1pO2k9aSsxNnwwO2I9ZTtjW2I+PjJdPWE7aWYoZFsoY1tiPj4yXXwwKSs1Pj4wXXwwKXthPWNbYj4+Ml18MDthPWErNDB8MDtjW2E+PjJdPTA7aT1lO3JldHVybn1LZChjWyhjW2I+PjJdfDApKzQwPj4yXXwwKTtWZShjWyhjW2I+PjJdfDApKzUyPj4yXXwwKXwwO2NbKGNbYj4+Ml18MCkrNTI+PjJdPTA7YT1jW2I+PjJdfDA7YT1hKzQwfDA7Y1thPj4yXT0wO2k9ZTtyZXR1cm59ZnVuY3Rpb24gUmwoYixlLGYpe2I9YnwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MDt2PWk7aT1pKzY0fDA7cz12KzUyfDA7Zz12KzQ4fDA7dD12KzQ0fDA7aD12KzQwfDA7cT12KzM2fDA7dT12KzMyfDA7bz12KzI4fDA7cD12KzI0fDA7bD12KzIwfDA7aj12KzE2fDA7bT12KzEyfDA7az12Kzh8MDtuPXYrNHwwO3I9djtjW2c+PjJdPWI7Y1t0Pj4yXT1lO2NbaD4+Ml09ZjtmPWNbdD4+Ml18MDtpZihjWyhjW3Q+PjJdfDApKzcyPj4yXXwwKWNbdT4+Ml09KGNbKGNbdD4+Ml18MCkrNzI+PjJdfDApKyhjW2YrNzY+PjJdfDApO2Vsc2UgY1t1Pj4yXT1jW2YrNDA+PjJdO2lmKCEoKGNbdT4+Ml18MCkhPTA/KGNbdT4+Ml18MCk+Pj4wPCgoY1soY1t0Pj4yXXwwKSs0MD4+Ml18MCkrKGNbKGNbdD4+Ml18MCkrNDQ+PjJdfDApfDApPj4+MDowKSl7Zj1jW3Q+PjJdfDA7aWYoY1soY1t0Pj4yXXwwKSs1Nj4+Ml18MCl7Y1tsPj4yXT1jW2NbZis1Nj4+Ml0+PjJdO0tkKGNbKGNbdD4+Ml18MCkrNDA+PjJdfDApO2NbKGNbdD4+Ml18MCkrNDA+PjJdPTA7ZG8gaWYoY1tsPj4yXXwwKXtjW20+PjJdPWNbKGNbbD4+Ml18MCkrOD4+Ml07Y1trPj4yXT0oY1tjW20+PjJdPj4yXXwwKSsxO2NbKGNbdD4+Ml18MCkrNjQ+PjJdPWNbKGNbbD4+Ml18MCkrMTI+PjJdO2NbKGNbdD4+Ml18MCkrNjA+PjJdPWNbKGNbbD4+Ml18MCkrMTY+PjJdO2Nbaj4+Ml09SWQoY1trPj4yXXwwKXwwO2lmKGNbaj4+Ml18MCl7VFIoY1tqPj4yXXwwLGNbKGNbbT4+Ml18MCkrND4+Ml18MCxjW2s+PjJdfDApfDA7dT1jW2s+PjJdfDA7Y1soY1t0Pj4yXXwwKSs3Nj4+Ml09dTtjWyhjW3Q+PjJdfDApKzQ0Pj4yXT11O3U9Y1tqPj4yXXwwO2NbKGNbdD4+Ml18MCkrNzI+PjJdPXU7Y1soY1t0Pj4yXXwwKSs0MD4+Ml09dTt1PShjW3Q+PjJdfDApKzU2fDA7Y1t1Pj4yXT0oY1t1Pj4yXXwwKSs0O2JyZWFrfWNbcz4+Ml09Nzt1PWNbcz4+Ml18MDtpPXY7cmV0dXJuIHV8MH13aGlsZSgwKTtjW3M+PjJdPTA7dT1jW3M+PjJdfDA7aT12O3JldHVybiB1fDB9UWwoZik7bD0oY1t0Pj4yXXwwKSszMnwwO2o9Y1tsKzQ+PjJdfDA7bT0oY1t0Pj4yXXwwKSsxNnwwO2s9Y1ttKzQ+PjJdfDA7aWYoKGp8MCk+KGt8MCl8KChqfDApPT0oa3wwKT8oY1tsPj4yXXwwKT4+PjA+PShjW20+PjJdfDApPj4+MDowKSl7Y1tzPj4yXT0wO3U9Y1tzPj4yXXwwO2k9djtyZXR1cm4gdXwwfWs9Y1tnPj4yXXwwO2o9KGNbdD4+Ml18MCkrMzJ8MDtsPWo7bD1SUihjW2w+PjJdfDAsY1tsKzQ+PjJdfDAsMSwwKXwwO209QztjW2o+PjJdPWw7Y1tqKzQ+PjJdPW07Y1txPj4yXT1nbShrLGwsbSwoY1t0Pj4yXXwwKSs0MHwwLChjW3Q+PjJdfDApKzQ0fDAsKGNbaD4+Ml18MCkhPTA/KGNbdD4+Ml18MCkrNDh8MDowKXwwO2lmKGNbcT4+Ml18MCl7Y1tzPj4yXT1jW3E+PjJdO3U9Y1tzPj4yXXwwO2k9djtyZXR1cm4gdXwwfWlmKChjW2g+PjJdfDApIT0wPyhjWyhjW3Q+PjJdfDApKzQ4Pj4yXXwwKTwoY1soY1t0Pj4yXXwwKSs0ND4+Ml18MCk6MCl7Y1soY1t0Pj4yXXwwKSs1Mj4+Ml09Y1soY1tnPj4yXXwwKSsyNDQ+PjJdO2NbKGNbZz4+Ml18MCkrMjQ0Pj4yXT0wfWNbdT4+Ml09Y1soY1t0Pj4yXXwwKSs0MD4+Ml19Y1txPj4yXT1jbShjW3Q+PjJdfDAsY1t1Pj4yXXwwLDIwKXwwO2lmKGNbcT4+Ml18MCl7Y1tzPj4yXT1jW3E+PjJdO3U9Y1tzPj4yXXwwO2k9djtyZXR1cm4gdXwwfWY9Y1t1Pj4yXXwwO2lmKGRbY1t1Pj4yXT4+MF0mMTI4KWY9JGwoZixvKXwwO2Vsc2V7Y1tvPj4yXT1kW2Y+PjBdO2Y9MX1jW3U+PjJdPShjW3U+PjJdfDApK2Y7Zj1jW3U+PjJdfDA7aWYoZFtjW3U+PjJdPj4wXSYxMjgpZj0kbChmLHApfDA7ZWxzZXtjW3A+PjJdPWRbZj4+MF07Zj0xfWNbdT4+Ml09KGNbdT4+Ml18MCkrZjtpZighKChjW28+PjJdfDApPDB8KGNbcD4+Ml18MCk8PTApPygoY1t1Pj4yXXwwKSsoY1twPj4yXXwwKXwwKT4+PjA8PSgoY1soY1t0Pj4yXXwwKSs0MD4+Ml18MCkrKGNbKGNbdD4+Ml18MCkrNDQ+PjJdfDApfDApPj4+MDowKXtkbyBpZigoKGNbbz4+Ml18MCkrKGNbcD4+Ml18MCl8MCk+KGNbKGNbdD4+Ml18MCkrNjg+PjJdfDApKXtjW24+PjJdPShjW28+PjJdfDApKyhjW3A+PjJdfDApPDwxO2Nbcj4+Ml09TGQoY1soY1t0Pj4yXXwwKSs2ND4+Ml18MCxjW24+PjJdfDApfDA7aWYoY1tyPj4yXXwwKXtjWyhjW3Q+PjJdfDApKzY0Pj4yXT1jW3I+PjJdO2NbKGNbdD4+Ml18MCkrNjg+PjJdPWNbbj4+Ml07YnJlYWt9Y1tzPj4yXT03O3U9Y1tzPj4yXXwwO2k9djtyZXR1cm4gdXwwfXdoaWxlKDApO2NbcT4+Ml09Y20oY1t0Pj4yXXwwLGNbdT4+Ml18MCwoY1twPj4yXXwwKSsxMHwwKXwwO2lmKGNbcT4+Ml18MCl7Y1tzPj4yXT1jW3E+PjJdO3U9Y1tzPj4yXXwwO2k9djtyZXR1cm4gdXwwfVRSKChjWyhjW3Q+PjJdfDApKzY0Pj4yXXwwKSsoY1tvPj4yXXwwKXwwLGNbdT4+Ml18MCxjW3A+PjJdfDApfDA7Y1soY1t0Pj4yXXwwKSs2MD4+Ml09KGNbbz4+Ml18MCkrKGNbcD4+Ml18MCk7Y1t1Pj4yXT0oY1t1Pj4yXXwwKSsoY1twPj4yXXwwKTtmPWNbdT4+Ml18MDtpZihkW2NbdT4+Ml0+PjBdJjEyOClmPSRsKGYsKGNbdD4+Ml18MCkrNzZ8MCl8MDtlbHNle2NbKGNbdD4+Ml18MCkrNzY+PjJdPWRbZj4+MF07Zj0xfWNbdT4+Ml09KGNbdT4+Ml18MCkrZjtjWyhjW3Q+PjJdfDApKzcyPj4yXT1jW3U+PjJdO2NbKGNbdD4+Ml18MCkrODA+PjJdPTA7ZG8gaWYoKChjWyhjW3Q+PjJdfDApKzcyPj4yXXwwKSsoY1soY1t0Pj4yXXwwKSs3Nj4+Ml18MCl8MCk+Pj4wPD0oKGNbKGNbdD4+Ml18MCkrNDA+PjJdfDApKyhjWyhjW3Q+PjJdfDApKzQ0Pj4yXXwwKXwwKT4+PjApe2lmKChjWyhjW3Q+PjJdfDApKzQ4Pj4yXXwwKT09MD8oYVsoY1soY1t0Pj4yXXwwKSs3Mj4+Ml18MCkrKChjWyhjW3Q+PjJdfDApKzc2Pj4yXXwwKS0xKT4+MF18MCkhPTA6MClicmVhaztjW3M+PjJdPTA7dT1jW3M+PjJdfDA7aT12O3JldHVybiB1fDB9d2hpbGUoMCk7Y1tzPj4yXT0yNjc7dT1jW3M+PjJdfDA7aT12O3JldHVybiB1fDB9Y1tzPj4yXT0yNjc7dT1jW3M+PjJdfDA7aT12O3JldHVybiB1fDB9ZnVuY3Rpb24gU2woYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MDtoPWk7aT1pKzE2fDA7ZD1oKzEyfDA7ZT1oKzh8MDtmPWgrNHwwO2c9aDtjW2Q+PjJdPWE7Y1tlPj4yXT1iO2lmKChjWyhjW2Q+PjJdfDApKzQwPj4yXXwwKSE9MD8oY1soY1tlPj4yXXwwKSs0MD4+Ml18MCkhPTA6MCl7Y1tnPj4yXT0oY1soY1tkPj4yXXwwKSs2MD4+Ml18MCktKGNbKGNbZT4+Ml18MCkrNjA+PjJdfDApO2E9Y1soY1tkPj4yXXwwKSs2ND4+Ml18MDtiPWNbKGNbZT4+Ml18MCkrNjQ+PjJdfDA7aWYoKGNbZz4+Ml18MCk8MCljW2Y+PjJdPWVSKGEsYixjWyhjW2Q+PjJdfDApKzYwPj4yXXwwKXwwO2Vsc2UgY1tmPj4yXT1lUihhLGIsY1soY1tlPj4yXXwwKSs2MD4+Ml18MCl8MDtpZighKGNbZj4+Ml18MCkpY1tmPj4yXT1jW2c+PjJdfWVsc2UgY1tmPj4yXT0oKGNbKGNbZD4+Ml18MCkrNDA+PjJdfDApPT0wJjEpLSgoY1soY1tlPj4yXXwwKSs0MD4+Ml18MCk9PTAmMSk7aWYoY1tmPj4yXXwwKXtnPWNbZj4+Ml18MDtpPWg7cmV0dXJuIGd8MH1jW2Y+PjJdPShjW2NbZT4+Ml0+PjJdfDApLShjW2NbZD4+Ml0+PjJdfDApO2c9Y1tmPj4yXXwwO2k9aDtyZXR1cm4gZ3wwfWZ1bmN0aW9uIFRsKGEsYixkLGUpe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wO249aTtpPWkrMzJ8MDtmPW4rMjR8MDtnPW4rMjB8MDtoPW4rMTZ8MDtqPW4rMTJ8MDtrPW4rOHwwO2w9bis0fDA7bT1uO2NbZj4+Ml09YTtjW2c+PjJdPWI7Y1toPj4yXT1kO2Nbaj4+Ml09ZTtpZigoY1toPj4yXXwwKT09KGNbZz4+Ml18MCkpY1toPj4yXT0oY1toPj4yXXwwKSstMTtjW2s+PjJdPShjW2g+PjJdfDApLTE7d2hpbGUoMSl7aWYoKGNbaz4+Ml18MCk8MClicmVhaztjW2w+PjJdPWNbaz4+Ml07d2hpbGUoMSl7aWYoKGNbbD4+Ml18MCk+PSgoY1tnPj4yXXwwKS0xfDApKWJyZWFrO2lmKChZYltjW2o+PjJdJjI1NV0oY1soY1tmPj4yXXwwKSsoY1tsPj4yXTw8Mik+PjJdfDAsY1soY1tmPj4yXXwwKSsoKGNbbD4+Ml18MCkrMTw8Mik+PjJdfDApfDApPDApYnJlYWs7Y1ttPj4yXT1jWyhjW2Y+PjJdfDApKygoY1tsPj4yXXwwKSsxPDwyKT4+Ml07Y1soY1tmPj4yXXwwKSsoKGNbbD4+Ml18MCkrMTw8Mik+PjJdPWNbKGNbZj4+Ml18MCkrKGNbbD4+Ml08PDIpPj4yXTtjWyhjW2Y+PjJdfDApKyhjW2w+PjJdPDwyKT4+Ml09Y1ttPj4yXTtjW2w+PjJdPShjW2w+PjJdfDApKzF9Y1trPj4yXT0oY1trPj4yXXwwKSstMX1pPW47cmV0dXJufWZ1bmN0aW9uIFVsKGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTA7az1pO2k9aSszMnwwO2U9aysxNnwwO2Y9aysxMnwwO2c9ays4fDA7aD1rKzR8MDtqPWs7Y1tmPj4yXT1hO2NbZz4+Ml09YjtjW2g+PjJdPWQ7ZG8gaWYoKGNbaD4+Ml18MCk+KGNbKGNbZj4+Ml18MCkrMjA+PjJdfDApKXtjWyhjW2Y+PjJdfDApKzIwPj4yXT1jW2g+PjJdPDwxO2Nbaj4+Ml09TGQoY1soY1tmPj4yXXwwKSsxNj4+Ml18MCxjWyhjW2Y+PjJdfDApKzIwPj4yXXwwKXwwO2lmKGNbaj4+Ml18MCl7Y1soY1tmPj4yXXwwKSsxNj4+Ml09Y1tqPj4yXTticmVha31jW2U+PjJdPTc7aj1jW2U+PjJdfDA7aT1rO3JldHVybiBqfDB9d2hpbGUoMCk7VFIoY1soY1tmPj4yXXwwKSsxNj4+Ml18MCxjW2c+PjJdfDAsY1toPj4yXXwwKXwwO2NbZT4+Ml09MDtqPWNbZT4+Ml18MDtpPWs7cmV0dXJuIGp8MH1mdW5jdGlvbiBWbChiLGUpe2I9YnwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MDtrPWk7aT1pKzMyfDA7bD1rKzEyfDA7Zj1rKzh8MDtqPWsrNHwwO2c9aysxNnwwO2g9aztjW2w+PjJdPWI7Y1tmPj4yXT1lO2Nbaj4+Ml09MDtpZigoZFsoY1tsPj4yXXwwKSsyMzE+PjBdfDB8MCkhPTA/KGNbKGNbZj4+Ml18MCkrNTY+PjJdfDApIT0wOjApe2FbZz4+MF09MDtsPShjW2Y+PjJdfDApKzg4fDA7Y1tsPj4yXT0wO2NbbCs0Pj4yXT0wO2NbKGNbZj4+Ml18MCkrODQ+PjJdPTA7YW0oMCxjWyhjW2Y+PjJdfDApKzcyPj4yXXwwLGNbKGNbZj4+Ml18MCkrNzY+PjJdfDAsKGNbZj4+Ml18MCkrODB8MCwoY1tmPj4yXXwwKSs4OHwwLChjW2Y+PjJdfDApKzg0fDAsZyk7bD1jW2o+PjJdfDA7aT1rO3JldHVybiBsfDB9Y1tqPj4yXT1jbShjW2Y+PjJdfDAsY1soY1tmPj4yXXwwKSs3Mj4+Ml18MCwxMCl8MDtpZihjW2o+PjJdfDApe2w9Y1tqPj4yXXwwO2k9aztyZXR1cm4gbHwwfWNbaD4+Ml09X2woY1soY1tmPj4yXXwwKSs3Mj4+Ml18MCwoY1tmPj4yXXwwKSs4OHwwKXwwO2NbKGNbZj4+Ml18MCkrODA+PjJdPShjWyhjW2Y+PjJdfDApKzcyPj4yXXwwKSsoY1toPj4yXXwwKTtsPWNbaj4+Ml18MDtpPWs7cmV0dXJuIGx8MH1mdW5jdGlvbiBXbChiLGUsZixnKXtiPWJ8MDtlPWV8MDtmPWZ8MDtnPWd8MDt2YXIgaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wO3U9aTtpPWkrNDh8MDtzPXUrMzZ8MDt0PXUrMzJ8MDtyPXUrMjh8MDtoPXUrMjR8MDtqPXUrMjB8MDtxPXUrMTZ8MDtvPXUrMTJ8MDtsPXUrNDF8MDtrPXUrNDB8MDtwPXUrOHwwO249dTtjW3Q+PjJdPWI7Y1tyPj4yXT1lO2NbaD4+Ml09ZjtjW2o+PjJdPWc7Y1txPj4yXT0wO2Nbbz4+Ml09Y1soY1tyPj4yXXwwKSs4MD4+Ml07YVtsPj4wXT0wO2RvIGlmKChkWyhjW3Q+PjJdfDApKzIzMT4+MF18MCkhPTA/KGNbKGNbcj4+Ml18MCkrNTY+PjJdfDApIT0wOjApe2Fbaz4+MF09MDtpZihjW2g+PjJdfDApe2NbY1toPj4yXT4+Ml09Y1soY1tyPj4yXXwwKSs4MD4+Ml07Y1tjW2o+PjJdPj4yXT0oY1soY1tyPj4yXXwwKSs4ND4+Ml18MCktMX1hbSgwLGNbKGNbcj4+Ml18MCkrNzI+PjJdfDAsY1soY1tyPj4yXXwwKSs3Nj4+Ml18MCxvLChjW3I+PjJdfDApKzg4fDAsKGNbcj4+Ml18MCkrODR8MCxrKTtpZihhW2s+PjBdfDApe2NbKGNbcj4+Ml18MCkrODA+PjJdPTA7YnJlYWt9ZWxzZXtjWyhjW3I+PjJdfDApKzgwPj4yXT1jW28+PjJdO2JyZWFrfX1lbHNlIG09ODt3aGlsZSgwKTtkbyBpZigobXwwKT09OCl7Y1twPj4yXT0oY1soY1tyPj4yXXwwKSs3Mj4+Ml18MCkrKGNbKGNbcj4+Ml18MCkrNzY+PjJdfDApO3doaWxlKDEpe2lmKGFbY1tvPj4yXT4+MF18YVtsPj4wXSl7Zj1jW28+PjJdfDA7Y1tvPj4yXT1mKzE7YVtsPj4wXT1hW2Y+PjBdJjEyODtjb250aW51ZX1pZighKGNbKGNbcj4+Ml18MCkrNTI+PjJdfDApKWJyZWFrO2lmKChjW28+PjJdfDApPj4+MDwoKGNbKGNbcj4+Ml18MCkrNDA+PjJdfDApKyhjWyhjW3I+PjJdfDApKzQ4Pj4yXXwwKXwwKT4+PjApYnJlYWs7Y1txPj4yXT1ibShjW3I+PjJdfDApfDA7aWYoY1txPj4yXXwwKXttPTE0O2JyZWFrfX1pZigobXwwKT09MTQpe2Nbcz4+Ml09Y1txPj4yXTt0PWNbcz4+Ml18MDtpPXU7cmV0dXJuIHR8MH1jW28+PjJdPShjW28+PjJdfDApKzE7aWYoY1toPj4yXXwwKXtjW2NbaD4+Ml0+PjJdPWNbKGNbcj4+Ml18MCkrODA+PjJdO2NbY1tqPj4yXT4+Ml09KGNbbz4+Ml18MCktKGNbKGNbcj4+Ml18MCkrODA+PjJdfDApLTF9d2hpbGUoMSl7aWYoKGNbbz4+Ml18MCk+Pj4wPChjW3A+PjJdfDApPj4+MCloPShhW2Nbbz4+Ml0+PjBdfDApPT0wO2Vsc2UgaD0wO2o9Y1tvPj4yXXwwO2lmKCFoKWJyZWFrO2Nbbz4+Ml09aisxfWg9Y1tyPj4yXXwwO2lmKGo+Pj4wPj0oY1twPj4yXXwwKT4+PjApe2NbaCs4MD4+Ml09MDticmVha31jW3E+PjJdPWNtKGgsY1tvPj4yXXwwLDEwKXwwO2lmKCEoY1txPj4yXXwwKSl7ZT1jW28+PjJdfDA7ZT1lKyhfbChjW28+PjJdfDAsbil8MCl8MDtjWyhjW3I+PjJdfDApKzgwPj4yXT1lO2U9bjtsPWNbZT4+Ml18MDtlPWNbZSs0Pj4yXXwwO2g9KGNbcj4+Ml18MCkrODh8MDtrPWg7aj1jW2s+PjJdfDA7az1jW2srND4+Ml18MDtpZihhWyhjW3Q+PjJdfDApKzIzMT4+MF18MCl7cj1RUihqfDAsa3wwLGx8MCxlfDApfDA7dD1oO2NbdD4+Ml09cjtjW3QrND4+Ml09QzticmVha31lbHNle3I9UlIoanwwLGt8MCxsfDAsZXwwKXwwO3Q9aDtjW3Q+PjJdPXI7Y1t0KzQ+PjJdPUM7YnJlYWt9fX13aGlsZSgwKTtjW3M+PjJdPTA7dD1jW3M+PjJdfDA7aT11O3JldHVybiB0fDB9ZnVuY3Rpb24gWGwoYixlLGYsZyl7Yj1ifDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7dmFyIGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wO3Q9aTtpPWkrNDh8MDtoPXQrMzJ8MDtqPXQrMjh8MDtrPXQrMjR8MDtsPXQrMjB8MDtyPXQrMTZ8MDtvPXQrMTJ8MDtxPXQrOHwwO249dCs0fDA7cD10O209dCszNnwwO2NbaD4+Ml09YjtjW2o+PjJdPWU7Y1trPj4yXT1mO2NbbD4+Ml09ZztjW3I+PjJdPWNbY1trPj4yXT4+Ml07Y1tvPj4yXT1jW2NbbD4+Ml0+PjJdO2NbcT4+Ml09KGNbcj4+Ml18MCkrKGNbbz4+Ml18MCk7Y1tuPj4yXT0wO2NbcD4+Ml09Y1tyPj4yXTt3aGlsZSgxKXthW20+PjBdPTA7d2hpbGUoMSl7aWYoKGNbcD4+Ml18MCk+Pj4wPj0oY1txPj4yXXwwKT4+PjApYnJlYWs7aWYoISgoYVttPj4wXXxhW2NbcD4+Ml0+PjBdKSYyNTQpKWJyZWFrO2Y9Y1twPj4yXXwwO2NbcD4+Ml09ZisxO2FbbT4+MF09YVtmPj4wXSYxMjh9ZT0oY1twPj4yXXwwKS0oY1tyPj4yXXwwKXwwO2lmKChjW2g+PjJdfDApPT0oY1tuPj4yXXwwKSl7cz03O2JyZWFrfWNbbz4+Ml09KGNbbz4+Ml18MCktZTtjW3I+PjJdPWNbcD4+Ml07aWYoIShjW28+PjJdfDApKWJyZWFrO2NbcD4+Ml09KGNbcj4+Ml18MCkrMTtlPWNbcD4+Ml18MDtpZihkW2NbcD4+Ml0+PjBdJjEyOCllPSRsKGUsbil8MDtlbHNle2Nbbj4+Ml09ZFtlPj4wXTtlPTF9Y1twPj4yXT0oY1twPj4yXXwwKStlfWlmKChzfDApPT03KWNbbz4+Ml09ZTtpZighKGNbaj4+Ml18MCkpe3M9Y1tyPj4yXXwwO3I9Y1trPj4yXXwwO2Nbcj4+Ml09cztyPWNbbz4+Ml18MDtzPWNbbD4+Ml18MDtjW3M+PjJdPXI7aT10O3JldHVybn1pZigoKGNbcj4+Ml18MCkrKGNbbz4+Ml18MCl8MCk9PShjW3E+PjJdfDApKXtzPWNbcj4+Ml18MDtyPWNbaz4+Ml18MDtjW3I+PjJdPXM7cj1jW28+PjJdfDA7cz1jW2w+PjJdfDA7Y1tzPj4yXT1yO2k9dDtyZXR1cm59VlIoKGNbcj4+Ml18MCkrKGNbbz4+Ml18MCl8MCwwLChjW3E+PjJdfDApLSgoY1tyPj4yXXwwKSsoY1tvPj4yXXwwKSl8MCl8MDtzPWNbcj4+Ml18MDtyPWNbaz4+Ml18MDtjW3I+PjJdPXM7cj1jW28+PjJdfDA7cz1jW2w+PjJdfDA7Y1tzPj4yXT1yO2k9dDtyZXR1cm59ZnVuY3Rpb24gWWwoYixkLGUsZixnKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDt2YXIgaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MDtwPWk7aT1pKzQ4fDA7aD1wKzh8MDtyPXArNDB8MDtxPXArMzZ8MDtqPXArMzJ8MDttPXArMjh8MDtrPXArMjR8MDtuPXArMjB8MDtvPXArMTZ8MDtsPXA7cz1oO2Nbcz4+Ml09YjtjW3MrND4+Ml09ZDtjW3I+PjJdPWU7Y1txPj4yXT1mO2Nbaj4+Ml09ZztjW20+PjJdPTA7Y1trPj4yXT0wO2Nbbj4+Ml09Y1tyPj4yXTtjW28+PjJdPShjW3I+PjJdfDApKyhjW3E+PjJdfDApO2lmKChhW2Nbbj4+Ml0+PjBdfDApIT0xKXtpZigoYVtjW24+PjJdPj4wXXwwKT09Mil7cz1oO3M9S2woKGNbaj4+Ml18MCkrKGNbbT4+Ml18MCl8MCxjW3M+PjJdfDAsY1tzKzQ+PjJdfDApfDA7Y1ttPj4yXT0oY1ttPj4yXXwwKStzO3M9Y1ttPj4yXXwwO2NbbT4+Ml09cysxO2FbKGNbaj4+Ml18MCkrcz4+MF09MjtjW2s+PjJdPTF9WmwoMCxuKX13aGlsZSgxKXtpZigoY1tuPj4yXXwwKT4+PjA+PShjW28+PjJdfDApPj4+MClicmVhaztpZigoYVtjW24+PjJdPj4wXXwwKSE9MSlicmVhaztjW24+PjJdPShjW24+PjJdfDApKzE7cz1fbChjW24+PjJdfDAsbCl8MDtjW24+PjJdPShjW24+PjJdfDApK3M7aWYoKGFbY1tuPj4yXT4+MF18MCk9PTIpe2lmKCEoY1trPj4yXXwwKSl7cz1oO3M9S2woKGNbaj4+Ml18MCkrKGNbbT4+Ml18MCl8MCxjW3M+PjJdfDAsY1tzKzQ+PjJdfDApfDA7Y1ttPj4yXT0oY1ttPj4yXXwwKStzO2Nbaz4+Ml09MX1zPWNbbT4+Ml18MDtjW20+PjJdPXMrMTthWyhjW2o+PjJdfDApK3M+PjBdPTE7cz1sO3M9S2woKGNbaj4+Ml18MCkrKGNbbT4+Ml18MCl8MCxjW3M+PjJdfDAsY1tzKzQ+PjJdfDApfDA7Y1ttPj4yXT0oY1ttPj4yXXwwKStzO3M9Y1ttPj4yXXwwO2NbbT4+Ml09cysxO2FbKGNbaj4+Ml18MCkrcz4+MF09Mn1abCgwLG4pfWlmKCEoY1trPj4yXXwwKSl7cz1jW20+PjJdfDA7aT1wO3JldHVybiBzfDB9cz1jW20+PjJdfDA7Y1ttPj4yXT1zKzE7YVsoY1tqPj4yXXwwKStzPj4wXT0wO3M9Y1ttPj4yXXwwO2k9cDtyZXR1cm4gc3wwfWZ1bmN0aW9uIFpsKGIsZCl7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MDtsPWk7aT1pKzMyfDA7ZT1sKzE2fDA7Zj1sKzEyfDA7az1sKzh8MDtnPWwrMjB8MDtoPWwrNHwwO2o9bDtjW2U+PjJdPWI7Y1tmPj4yXT1kO2Nbaz4+Ml09Y1tjW2Y+PjJdPj4yXTthW2c+PjBdPTA7d2hpbGUoMSl7aWYoISgyNTQmKGFbY1trPj4yXT4+MF18YVtnPj4wXSkpKWJyZWFrO2Q9Y1trPj4yXXwwO2Nbaz4+Ml09ZCsxO2FbZz4+MF09YVtkPj4wXSYxMjh9aWYoIShjW2U+PjJdfDApKXtiPWNbaz4+Ml18MDtkPWNbZj4+Ml18MDtjW2Q+PjJdPWI7aT1sO3JldHVybn1jW2g+PjJdPShjW2s+PjJdfDApLShjW2NbZj4+Ml0+PjJdfDApO2Nbaj4+Ml09Y1tjW2U+PjJdPj4yXTtUUihjW2o+PjJdfDAsY1tjW2Y+PjJdPj4yXXwwLGNbaD4+Ml18MCl8MDtjW2o+PjJdPShjW2o+PjJdfDApKyhjW2g+PjJdfDApO2NbY1tlPj4yXT4+Ml09Y1tqPj4yXTtiPWNbaz4+Ml18MDtkPWNbZj4+Ml18MDtjW2Q+PjJdPWI7aT1sO3JldHVybn1mdW5jdGlvbiBfbChiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MDtuPWk7aT1pKzQ4fDA7ZT1uKzM2fDA7Zj1uKzMyfDA7Zz1uKzI4fDA7bD1uKzI0fDA7aD1uKzIwfDA7aj1uKzh8MDttPW4rMTZ8MDtrPW47Y1tmPj4yXT1iO2NbZz4+Ml09ZDtjW2w+PjJdPWNbZj4+Ml07Yj1jW2Y+PjJdfDA7Y1tmPj4yXT1iKzE7Y1toPj4yXT1hW2I+PjBdO2I9Y1toPj4yXXwwO2lmKCEoY1toPj4yXSYxMjgpKXttPWNbZz4+Ml18MDtjW20+PjJdPWI7Y1ttKzQ+PjJdPTA7Y1tlPj4yXT0xO209Y1tlPj4yXXwwO2k9bjtyZXR1cm4gbXwwfWQ9Y1tmPj4yXXwwO2NbZj4+Ml09ZCsxO2NbaD4+Ml09YiYxMjd8YVtkPj4wXTw8NztiPWNbaD4+Ml18MDtpZighKGNbaD4+Ml0mMTYzODQpKXttPWNbZz4+Ml18MDtjW20+PjJdPWI7Y1ttKzQ+PjJdPTA7Y1tlPj4yXT0yO209Y1tlPj4yXXwwO2k9bjtyZXR1cm4gbXwwfWQ9Y1tmPj4yXXwwO2NbZj4+Ml09ZCsxO2NbaD4+Ml09YiYxNjM4M3xhW2Q+PjBdPDwxNDtiPWNbaD4+Ml18MDtpZighKGNbaD4+Ml0mMjA5NzE1Mikpe209Y1tnPj4yXXwwO2NbbT4+Ml09YjtjW20rND4+Ml09MDtjW2U+PjJdPTM7bT1jW2U+PjJdfDA7aT1uO3JldHVybiBtfDB9ZD1jW2Y+PjJdfDA7Y1tmPj4yXT1kKzE7Y1toPj4yXT1iJjIwOTcxNTF8YVtkPj4wXTw8MjE7Yj1jW2g+PjJdfDA7aWYoIShjW2g+PjJdJjI2ODQzNTQ1Nikpe209Y1tnPj4yXXwwO2NbbT4+Ml09YjtjW20rND4+Ml09MDtjW2U+PjJdPTQ7bT1jW2U+PjJdfDA7aT1uO3JldHVybiBtfDB9aD1qO2NbaD4+Ml09YiYyNjg0MzU0NTU7Y1toKzQ+PjJdPTA7Y1ttPj4yXT0yODt3aGlsZSgxKXtpZigoY1ttPj4yXXwwKT42MylicmVhaztoPWNbZj4+Ml18MDtjW2Y+PjJdPWgrMTtoPWFbaD4+MF18MDtkPWs7Y1tkPj4yXT1oO2NbZCs0Pj4yXT0oKGh8MCk8MCk8PDMxPj4zMTtkPVdSKGNbaz4+Ml0mMTI3fDAsMCxjW20+PjJdfDApfDA7aD1qO2Q9UlIoY1toPj4yXXwwLGNbaCs0Pj4yXXwwLGR8MCxDfDApfDA7aD1qO2NbaD4+Ml09ZDtjW2grND4+Ml09QztpZigoY1trPj4yXSYxMjh8MCk9PTAmMD09MClicmVhaztjW20+PjJdPShjW20+PjJdfDApKzd9az1jW2orND4+Ml18MDttPWNbZz4+Ml18MDtjW20+PjJdPWNbaj4+Ml07Y1ttKzQ+PjJdPWs7Y1tlPj4yXT0oY1tmPj4yXXwwKS0oY1tsPj4yXXwwKTttPWNbZT4+Ml18MDtpPW47cmV0dXJuIG18MH1mdW5jdGlvbiAkbChiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wO2o9aTtpPWkrMTZ8MDtlPWorMTJ8MDtmPWorOHwwO2c9ais0fDA7aD1qO2NbZj4+Ml09YjtjW2c+PjJdPWQ7ZD1jW2Y+PjJdfDA7Y1tmPj4yXT1kKzE7Y1toPj4yXT1hW2Q+PjBdO2Q9Y1toPj4yXSYxMjc7Yj1jW2Y+PjJdfDA7Y1tmPj4yXT1iKzE7Y1toPj4yXT1kfGFbYj4+MF08PDc7Yj1jW2g+PjJdfDA7aWYoIShjW2g+PjJdJjE2Mzg0KSl7Y1tjW2c+PjJdPj4yXT1iO2NbZT4+Ml09MjtoPWNbZT4+Ml18MDtpPWo7cmV0dXJuIGh8MH1kPWNbZj4+Ml18MDtjW2Y+PjJdPWQrMTtjW2g+PjJdPWImMTYzODN8YVtkPj4wXTw8MTQ7Yj1jW2g+PjJdfDA7aWYoIShjW2g+PjJdJjIwOTcxNTIpKXtjW2NbZz4+Ml0+PjJdPWI7Y1tlPj4yXT0zO2g9Y1tlPj4yXXwwO2k9ajtyZXR1cm4gaHwwfWQ9Y1tmPj4yXXwwO2NbZj4+Ml09ZCsxO2NbaD4+Ml09YiYyMDk3MTUxfGFbZD4+MF08PDIxO2I9Y1toPj4yXXwwO2lmKCEoY1toPj4yXSYyNjg0MzU0NTYpKXtjW2NbZz4+Ml0+PjJdPWI7Y1tlPj4yXT00O2g9Y1tlPj4yXXwwO2k9ajtyZXR1cm4gaHwwfWVsc2V7Y1toPj4yXT1iJjI2ODQzNTQ1NTtjW2NbZz4+Ml0+PjJdPWNbaD4+Ml18KGFbY1tmPj4yXT4+MF0mMTUpPDwyODtjW2U+PjJdPTU7aD1jW2U+PjJdfDA7aT1qO3JldHVybiBofDB9cmV0dXJuIDB9ZnVuY3Rpb24gYW0oYixkLGUsZixnLGgsail7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7dmFyIGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wO0I9aTtpPWkrODB8MDtrPUIrNzZ8MDtsPUIrNzJ8MDttPUIrNjh8MDtuPUIrNjR8MDtvPUIrNjB8MDtwPUIrNTZ8MDtxPUIrNTJ8MDt3PUIrNDh8MDt0PUIrMTZ8MDt6PUIrNDR8MDt4PUIrNDB8MDt5PUIrMzZ8MDt1PUIrMzJ8MDtyPUIrOHwwO3Y9QisyOHwwO3M9QjtBPUIrMjR8MDtjW2s+PjJdPWI7Y1tsPj4yXT1kO2NbbT4+Ml09ZTtjW24+PjJdPWY7Y1tvPj4yXT1nO2NbcD4+Ml09aDtjW3E+PjJdPWo7Y1t3Pj4yXT1jW2Nbbj4+Ml0+PjJdO2lmKGNbdz4+Ml18MCl7Y1t2Pj4yXT0oY1trPj4yXXwwKSE9MD8tMToxO2VtKHcsY1tsPj4yXXwwLHMpO2Y9Y1t2Pj4yXXwwO2g9cztoPWFTKGZ8MCwoKGZ8MCk8MCk8PDMxPj4zMXwwLGNbaD4+Ml18MCxjW2grND4+Ml18MCl8MDtmPWNbbz4+Ml18MDtnPWY7aD1RUihjW2c+PjJdfDAsY1tnKzQ+PjJdfDAsaHwwLEN8MCl8MDtjW2Y+PjJdPWg7Y1tmKzQ+PjJdPUM7aWYoKGNbdz4+Ml18MCk9PShjW2w+PjJdfDApKWFbY1txPj4yXT4+MF09MTtlbHNle2NbQT4+Ml09Y1t3Pj4yXTtmbShjW2w+PjJdfDAsdyk7Y1tjW3A+PjJdPj4yXT0oY1tBPj4yXXwwKS0oY1t3Pj4yXXwwKX1jW2Nbbj4+Ml0+PjJdPWNbdz4+Ml07aT1CO3JldHVybn1mPXQ7Y1tmPj4yXT0wO2NbZis0Pj4yXT0wO2Nbej4+Ml09MDtjW3g+PjJdPWNbbD4+Ml07Y1t5Pj4yXT0oY1tsPj4yXXwwKSsoY1ttPj4yXXwwKTtjW3U+PjJdPTE7d2hpbGUoMSl7aWYoKGNbeD4+Ml18MCk+Pj4wPj0oY1t5Pj4yXXwwKT4+PjApYnJlYWs7Zj1fbChjW3g+PjJdfDAscil8MDtjW3g+PjJdPShjW3g+PjJdfDApK2Y7Zj1jW3U+PjJdfDA7aD1yO2g9YVMoZnwwLCgoZnwwKTwwKTw8MzE+PjMxfDAsY1toPj4yXXwwLGNbaCs0Pj4yXXwwKXwwO2Y9dDtoPVJSKGNbZj4+Ml18MCxjW2YrND4+Ml18MCxofDAsQ3wwKXwwO2Y9dDtjW2Y+PjJdPWg7Y1tmKzQ+PjJdPUM7Y1t6Pj4yXT1jW3g+PjJdO2RtKDAseCk7d2hpbGUoMSl7aWYoKGNbeD4+Ml18MCk+Pj4wPj0oY1t5Pj4yXXwwKT4+PjApYnJlYWs7aWYoYVtjW3g+PjJdPj4wXXwwKWJyZWFrO2NbeD4+Ml09KGNbeD4+Ml18MCkrMX1jW3U+PjJdPShjW2s+PjJdfDApIT0wPy0xOjF9Y1tjW3A+PjJdPj4yXT0oY1t5Pj4yXXwwKS0oY1t6Pj4yXXwwKTtjW2Nbbj4+Ml0+PjJdPWNbej4+Ml07Zz10O2g9Y1tnKzQ+PjJdfDA7Zj1jW28+PjJdfDA7Y1tmPj4yXT1jW2c+PjJdO2NbZis0Pj4yXT1oO2k9QjtyZXR1cm59ZnVuY3Rpb24gYm0oYil7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MDtnPWk7aT1pKzE2fDA7ZT1nKzh8MDtkPWcrNHwwO2Y9ZztjW2U+PjJdPWI7aWYoKChjWyhjW2U+PjJdfDApKzQ0Pj4yXXwwKS0oY1soY1tlPj4yXXwwKSs0OD4+Ml18MCl8MCk8NDA5NiliPShjWyhjW2U+PjJdfDApKzQ0Pj4yXXwwKS0oY1soY1tlPj4yXXwwKSs0OD4+Ml18MCl8MDtlbHNlIGI9NDA5NjtjW2Q+PjJdPWI7Y1tmPj4yXT1XZShjWyhjW2U+PjJdfDApKzUyPj4yXXwwLChjWyhjW2U+PjJdfDApKzQwPj4yXXwwKSsoY1soY1tlPj4yXXwwKSs0OD4+Ml18MCl8MCxjW2Q+PjJdfDAsY1soY1tlPj4yXXwwKSs0OD4+Ml18MCl8MDtpZihjW2Y+PjJdfDApe2Y9Y1tmPj4yXXwwO2k9ZztyZXR1cm4gZnwwfWI9KGNbZT4+Ml18MCkrNDh8MDtjW2I+PjJdPShjW2I+PjJdfDApKyhjW2Q+PjJdfDApO2I9KGNbKGNbZT4+Ml18MCkrNDA+PjJdfDApKyhjWyhjW2U+PjJdfDApKzQ4Pj4yXXwwKXwwO2Q9YisyMHwwO2Rve2FbYj4+MF09MDtiPWIrMXwwfXdoaWxlKChifDApPChkfDApKTtpZigoY1soY1tlPj4yXXwwKSs0OD4+Ml18MCkhPShjWyhjW2U+PjJdfDApKzQ0Pj4yXXwwKSl7Zj1jW2Y+PjJdfDA7aT1nO3JldHVybiBmfDB9VmUoY1soY1tlPj4yXXwwKSs1Mj4+Ml18MCl8MDtjWyhjW2U+PjJdfDApKzUyPj4yXT0wO2NbKGNbZT4+Ml18MCkrNDg+PjJdPTA7Zj1jW2Y+PjJdfDA7aT1nO3JldHVybiBmfDB9ZnVuY3Rpb24gY20oYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wO2o9aTtpPWkrMTZ8MDtlPWorMTJ8MDtmPWorOHwwO2c9ais0fDA7aD1qO2NbZT4+Ml09YTtjW2Y+PjJdPWI7Y1tnPj4yXT1kO2NbaD4+Ml09MDt3aGlsZSgxKXtpZighKChjW2g+PjJdfDApPT0wPyhjWyhjW2U+PjJdfDApKzUyPj4yXXwwKSE9MDowKSl7ZT01O2JyZWFrfWlmKCgoY1tmPj4yXXwwKS0oY1soY1tlPj4yXXwwKSs0MD4+Ml18MCkrKGNbZz4+Ml18MCl8MCk8PShjWyhjW2U+PjJdfDApKzQ4Pj4yXXwwKSl7ZT01O2JyZWFrfWNbaD4+Ml09Ym0oY1tlPj4yXXwwKXwwfWlmKChlfDApPT01KXtpPWo7cmV0dXJuIGNbaD4+Ml18MH1yZXR1cm4gMH1mdW5jdGlvbiBkbShiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTA7bD1pO2k9aSszMnwwO2U9bCsxNnwwO2Y9bCsxMnwwO2s9bCs4fDA7Zz1sKzIwfDA7aD1sKzR8MDtqPWw7Y1tlPj4yXT1iO2NbZj4+Ml09ZDtjW2s+PjJdPWNbY1tmPj4yXT4+Ml07YVtnPj4wXT0wO3doaWxlKDEpe2Q9KGFbY1trPj4yXT4+MF18YVtnPj4wXXwwKSE9MDtiPWNbaz4+Ml18MDtjW2s+PjJdPWIrMTtpZighZClicmVhazthW2c+PjBdPWFbYj4+MF0mMTI4fWlmKCEoY1tlPj4yXXwwKSl7aj1jW2s+PjJdfDA7az1jW2Y+PjJdfDA7Y1trPj4yXT1qO2k9bDtyZXR1cm59Y1toPj4yXT0oY1trPj4yXXwwKS0oY1tjW2Y+PjJdPj4yXXwwKTtjW2o+PjJdPWNbY1tlPj4yXT4+Ml07VFIoY1tqPj4yXXwwLGNbY1tmPj4yXT4+Ml18MCxjW2g+PjJdfDApfDA7Y1tqPj4yXT0oY1tqPj4yXXwwKSsoY1toPj4yXXwwKTtjW2NbZT4+Ml0+PjJdPWNbaj4+Ml07aj1jW2s+PjJdfDA7az1jW2Y+PjJdfDA7Y1trPj4yXT1qO2k9bDtyZXR1cm59ZnVuY3Rpb24gZW0oYixkLGUpe2I9YnwwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MDtsPWk7aT1pKzMyfDA7Zj1sKzIwfDA7Zz1sKzE2fDA7aD1sKzEyfDA7aj1sO2s9bCs4fDA7Y1tmPj4yXT1iO2NbZz4+Ml09ZDtjW2g+PjJdPWU7Y1trPj4yXT0oY1tjW2Y+PjJdPj4yXXwwKSstMjt3aGlsZSgxKXtpZigoY1trPj4yXXwwKT4+PjA8KGNbZz4+Ml18MCk+Pj4wKWJyZWFrO2lmKCEoYVtjW2s+PjJdPj4wXSYxMjgpKWJyZWFrO2Nbaz4+Ml09KGNbaz4+Ml18MCkrLTF9Y1trPj4yXT0oY1trPj4yXXwwKSsxO2NbY1tmPj4yXT4+Ml09Y1trPj4yXTtfbChjW2s+PjJdfDAsail8MDtkPWo7ZT1jW2QrND4+Ml18MDtiPWNbaD4+Ml18MDtjW2I+PjJdPWNbZD4+Ml07Y1tiKzQ+PjJdPWU7aT1sO3JldHVybn1mdW5jdGlvbiBmbShiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MDtrPWk7aT1pKzE2fDA7ZT1rKzh8MDtmPWsrNHwwO2g9aztnPWsrMTJ8MDtjW2U+PjJdPWI7Y1tmPj4yXT1kO2NbaD4+Ml09KGNbY1tmPj4yXT4+Ml18MCkrLTI7YVtnPj4wXT0wO2Rve2lmKChjW2g+PjJdfDApPj4+MDw9KGNbZT4+Ml18MCk+Pj4wKWJyZWFrO2Q9Y1toPj4yXXwwO2NbaD4+Ml09ZCstMTtkPWFbZD4+MF18MDthW2c+PjBdPWR9d2hpbGUoKGQ8PDI0Pj4yNHwwKT09MCk7d2hpbGUoMSl7aWYoKGNbaD4+Ml18MCk+Pj4wPihjW2U+PjJdfDApPj4+MClkPShhW2NbaD4+Ml0+PjBdJjEyOHxhW2c+PjBdfDApIT0wO2Vsc2UgZD0wO2I9Y1toPj4yXXwwO2lmKCFkKWJyZWFrO2NbaD4+Ml09YistMTthW2c+PjBdPWFbYj4+MF18MH1pZihiPj4+MDw9KGNbZT4+Ml18MCk+Pj4wKXtpZigoYVtnPj4wXXwwKT09MD8oY1tjW2Y+PjJdPj4yXXwwKT4+PjA+KChjW2g+PjJdfDApKzJ8MCk+Pj4wOjApaj0xMX1lbHNlIGo9MTE7aWYoKGp8MCk9PTExKWNbaD4+Ml09KGNbaD4+Ml18MCkrMjtkb3tqPWNbaD4+Ml18MDtjW2g+PjJdPWorMX13aGlsZSgoYVtqPj4wXSYxMjh8MCkhPTApO2NbY1tmPj4yXT4+Ml09Y1toPj4yXTtpPWs7cmV0dXJufWZ1bmN0aW9uIGdtKGIsZCxlLGYsZyxoKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDt2YXIgaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MDt0PWk7aT1pKzQ4fDA7bz10Kzh8MDtwPXQrNDB8MDtqPXQrMzZ8MDtrPXQ7cT10KzMyfDA7bD10KzI4fDA7bT10KzI0fDA7cz10KzIwfDA7bj10KzE2fDA7cj10KzEyfDA7Y1tqPj4yXT1iO2I9aztjW2I+PjJdPWQ7Y1tiKzQ+PjJdPWU7Y1txPj4yXT1mO2NbbD4+Ml09ZztjW20+PjJdPWg7ZD1jW2o+PjJdfDA7aWYoY1soY1tqPj4yXXwwKSsyNDQ+PjJdfDApe289aztjW3M+PjJdPVllKGNbZCsyNDQ+PjJdfDAsY1tvPj4yXXwwLGNbbys0Pj4yXXwwKXwwfWVsc2V7aWYoMD09KGNbZCsyNDA+PjJdfDApPyhjW28+PjJdPWNbKGNbaj4+Ml18MCkrMjA+PjJdLG89T2QoMjMxNjMsbyl8MCxjWyhjW2o+PjJdfDApKzI0MD4+Ml09bywwPT0oY1soY1tqPj4yXXwwKSsyNDA+PjJdfDApKTowKXtjW3A+PjJdPTc7cz1jW3A+PjJdfDA7aT10O3JldHVybiBzfDB9bz1rO2Nbcz4+Ml09VWUoY1soY1tqPj4yXXwwKSsxMj4+Ml18MCxjWyhjW2o+PjJdfDApKzE2Pj4yXXwwLGNbKGNbaj4+Ml18MCkrMjQwPj4yXXwwLDIzMTc1LGNbbz4+Ml18MCxjW28rND4+Ml18MCwwLChjW2o+PjJdfDApKzI0NHwwKXwwfWlmKChjW3M+PjJdfDApPT0wPyhjW24+PjJdPVhlKGNbKGNbaj4+Ml18MCkrMjQ0Pj4yXXwwKXwwLGNbY1tsPj4yXT4+Ml09Y1tuPj4yXSwoY1txPj4yXXwwKSE9MCk6MCl7Y1tyPj4yXT1JZCgoY1tuPj4yXXwwKSsyMHwwKXwwO2lmKGNbcj4+Ml18MCl7aWYoKGNbbT4+Ml18MCkhPTAmKGNbbj4+Ml18MCk+MTYzODQpe2Nbbj4+Ml09NDA5NjtjW2NbbT4+Ml0+PjJdPWNbbj4+Ml19Y1tzPj4yXT1XZShjWyhjW2o+PjJdfDApKzI0ND4+Ml18MCxjW3I+PjJdfDAsY1tuPj4yXXwwLDApfDA7ZD0oY1tyPj4yXXwwKSsoY1tuPj4yXXwwKXwwO2U9ZCsyMHwwO2Rve2FbZD4+MF09MDtkPWQrMXwwfXdoaWxlKChkfDApPChlfDApKTtpZihjW3M+PjJdfDApe0tkKGNbcj4+Ml18MCk7Y1tyPj4yXT0wfX1lbHNlIGNbcz4+Ml09NztjW2NbcT4+Ml0+PjJdPWNbcj4+Ml19Y1twPj4yXT1jW3M+PjJdO3M9Y1twPj4yXXwwO2k9dDtyZXR1cm4gc3wwfWZ1bmN0aW9uIGhtKGEsYixlLGYpe2E9YXwwO2I9YnwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wO3I9aTtpPWkrNDh8MDtuPXIrMzZ8MDtnPXIrMzJ8MDtvPXIrMjh8MDtoPXIrMjR8MDtqPXIrMjB8MDtrPXIrMTZ8MDtwPXIrMTJ8MDttPXIrOHwwO2w9cis0fDA7cT1yO2NbZz4+Ml09YTtjW28+PjJdPWI7Y1toPj4yXT1lO2Nbaj4+Ml09ZjtjW3A+PjJdPWNbKGNbbz4+Ml18MCkrND4+Ml07Y1trPj4yXT0wO2E6d2hpbGUoMSl7aWYoY1soY1tvPj4yXXwwKSsyOD4+Ml18MCl7Zz0xMjticmVha31pZigoY1trPj4yXXwwKT49KGNbKGNbbz4+Ml18MCkrND4+Ml18MCkpe2c9MTI7YnJlYWt9Y1ttPj4yXT0wO2NbbD4+Ml09Y1soY1tjW28+PjJdPj4yXXwwKSsoY1trPj4yXTw8Mik+PjJdO2Rve2NbcT4+Ml09UmwoY1tnPj4yXXwwLGNbbD4+Ml18MCwwKXwwO2lmKGNbcT4+Ml18MCl7Zz02O2JyZWFrIGF9aWYoIShjW2g+PjJdfDApKWJyZWFrO2U9aW0oY1tsPj4yXXwwLGNbaD4+Ml18MCxjW2o+PjJdfDApfDA7Y1ttPj4yXT1lfXdoaWxlKChlfDApPDApO2lmKChjW20+PjJdfDApIT0wPyhkWyhjW2w+PjJdfDApKzQ+PjBdfDB8MCkhPTA6MClRbChjW2w+PjJdfDApO2Nbaz4+Ml09KGNbaz4+Ml18MCkrMX1pZigoZ3wwKT09Nil7Y1tuPj4yXT1jW3E+PjJdO3E9Y1tuPj4yXXwwO2k9cjtyZXR1cm4gcXwwfWVsc2UgaWYoKGd8MCk9PTEyKXtUbChjW2Nbbz4+Ml0+PjJdfDAsY1twPj4yXXwwLGNbcD4+Ml18MCwxODQpO2Nbbj4+Ml09MDtxPWNbbj4+Ml18MDtpPXI7cmV0dXJuIHF8MH1yZXR1cm4gMH1mdW5jdGlvbiBpbShhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTA7aj1pO2k9aSsxNnwwO2Y9aisxMnwwO2U9ais4fDA7Zz1qKzR8MDtoPWo7Y1tmPj4yXT1hO2NbZT4+Ml09YjtjW2c+PjJdPWQ7Y1toPj4yXT0wO2lmKCEoY1soY1tmPj4yXXwwKSs0MD4+Ml18MCkpe2g9Y1toPj4yXXwwO2k9ajtyZXR1cm4gaHwwfWE9Y1soY1tmPj4yXXwwKSs2ND4+Ml18MDtkPWNbZT4+Ml18MDtpZigoY1soY1tmPj4yXXwwKSs2MD4+Ml18MCk+KGNbZz4+Ml18MCkpY1toPj4yXT1lUihhLGQsY1tnPj4yXXwwKXwwO2Vsc2UgY1toPj4yXT1lUihhLGQsY1soY1tmPj4yXXwwKSs2MD4+Ml18MCl8MDtpZihjW2g+PjJdfDApe2g9Y1toPj4yXXwwO2k9ajtyZXR1cm4gaHwwfWNbaD4+Ml09KGNbKGNbZj4+Ml18MCkrNjA+PjJdfDApLShjW2c+PjJdfDApO2g9Y1toPj4yXXwwO2k9ajtyZXR1cm4gaHwwfWZ1bmN0aW9uIGptKGEsYixkLGUsZixnLGgsaixrKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDtrPWt8MDt2YXIgbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxEPTAsRT0wLEY9MCxHPTA7Rz1pO2k9aSs5NnwwO2w9Rys4OHwwO209Rys4NHwwO249Rys4MHwwO289Rys3NnwwO3A9Rys3MnwwO3E9Rys2OHwwO3I9Rys2NHwwO3M9Rys2MHwwO3Q9Rys1NnwwO0Q9Rys1MnwwO0E9Rys0OHwwO0U9Rys0NHwwO3k9Rys0MHwwO3o9RyszNnwwO3c9RysxNnwwO3Y9Rys4fDA7dT1HO3g9RyszMnwwO0Y9RysyOHwwO0I9RysyNHwwO2NbbD4+Ml09YTtjW20+PjJdPWI7Y1tuPj4yXT1kO2Nbbz4+Ml09ZTtjW3A+PjJdPWY7Y1txPj4yXT1nO2Nbcj4+Ml09aDtjW3M+PjJdPWo7Y1t0Pj4yXT1rO2NbRD4+Ml09MDtjW0E+PjJdPTA7aWYoKChjW28+PjJdfDApPDA/KGNbKGNbbD4+Ml18MCkrMjUyPj4yXXwwKSE9MDowKT8oY1t5Pj4yXT0wLGNbRD4+Ml09a20oY1tsPj4yXXwwLGNbbj4+Ml18MCxjW3A+PjJdfDAsY1txPj4yXXwwLCgoY1tyPj4yXXwwKSE9MD8xOihjW3M+PjJdfDApIT0wKSYxLHkpfDAsKGNbRD4+Ml18MCk9PTAmKGNbeT4+Ml18MCkhPTApOjApY1tEPj4yXT1sbShjW3Q+PjJdfDAsY1t5Pj4yXXwwKXwwO2E6ZG8gaWYoKGNbbz4+Ml18MCkhPS0xKXtpZighKGNbRD4+Ml18MCkpY1tEPj4yXT1tbShjW2w+PjJdfDAsY1ttPj4yXXwwLGNbbj4+Ml18MCxjW28+PjJdfDAsQSl8MDt3aGlsZSgxKXtpZihjW0Q+PjJdfDApYnJlYWsgYTtmPXRlKGNbQT4+Ml18MCl8MDtjW0Q+PjJdPWY7aWYoMTAwIT0oZnwwKSlicmVhayBhO2Nbej4+Ml09MDt5PURlKGNbQT4+Ml18MCwxKXwwO2Y9dztjW2Y+PjJdPXk7Y1tmKzQ+PjJdPUM7Zj1EZShjW0E+PjJdfDAsMil8MDt5PXY7Y1t5Pj4yXT1mO2NbeSs0Pj4yXT1DO3k9RGUoY1tBPj4yXXwwLDMpfDA7Zj11O2NbZj4+Ml09eTtjW2YrND4+Ml09QztjW3g+PjJdPUFlKGNbQT4+Ml18MCw0KXwwO2NbRj4+Ml09emUoY1tBPj4yXXwwLDQpfDA7Zj13O2lmKCgoY1tmPj4yXXwwKSE9MHwoY1tmKzQ+PjJdfDApIT0wKSYoY1twPj4yXXwwKSE9MCl7Y1tCPj4yXT0oY1tyPj4yXXwwKSE9MD92OjA7Y1tEPj4yXT1ubShjW2w+PjJdfDAsY1twPj4yXXwwLGNbcT4+Ml18MCxjW0Y+PjJdfDAsY1t4Pj4yXXwwLHcsY1tCPj4yXXwwKXwwO2lmKGNbRD4+Ml18MClicmVhayBhO2lmKChjW3I+PjJdfDApPT0wJihjW3M+PjJdfDApPT0wKXtrPXc7eT1jW2srND4+Ml18MDtmPXY7Y1tmPj4yXT1jW2s+PjJdO2NbZis0Pj4yXT15fX1rPXc7eT12O2Y9dTtjW0Q+PjJdPW9tKChjWyhjW3Q+PjJdfDApKzQ+PjJdfDApKzF8MCwoKGNbcj4+Ml18MCk9PTA/KGNbcz4+Ml18MCk9PTA6MCkmMSxjW2s+PjJdfDAsY1trKzQ+PjJdfDAsY1t5Pj4yXXwwLGNbeSs0Pj4yXXwwLGNbZj4+Ml18MCxjW2YrND4+Ml18MCxjW0Y+PjJdfDAsY1t4Pj4yXXwwLHopfDA7aWYoY1tEPj4yXXwwKWJyZWFrIGE7Y1tEPj4yXT1sbShjW3Q+PjJdfDAsY1t6Pj4yXXwwKXwwfX13aGlsZSgwKTtjW0U+PjJdPVlkKGNbQT4+Ml18MCl8MDtpZigoY1tEPj4yXXwwKSE9MTAxKXtmPWNbRD4+Ml18MDtpPUc7cmV0dXJuIGZ8MH1jW0Q+PjJdPWNbRT4+Ml07Zj1jW0Q+PjJdfDA7aT1HO3JldHVybiBmfDB9ZnVuY3Rpb24ga20oYSxiLGQsZSxmLGcpe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO3ZhciBoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTA7eT1pO2k9aSs4MHwwO0E9eSs2NHwwO3o9eSs2MHwwO2g9eSs1NnwwO2o9eSs1MnwwO2s9eSs0OHwwO2w9eSs0NHwwO3U9eSs0MHwwO3M9eSszNnwwO209eSszMnwwO3E9eSsyOHwwO3Y9eSsyNHwwO3Q9eSsyMHwwO289eSsxNnwwO3c9eSsxMnwwO3I9eSs4fDA7bj15KzR8MDtwPXk7Y1tBPj4yXT1hO2Nbej4+Ml09YjtjW2g+PjJdPWQ7Y1tqPj4yXT1lO2Nbaz4+Ml09ZjtjW2w+PjJdPWc7Y1t1Pj4yXT0wO2NbbT4+Ml09MDtjW3E+PjJdPTA7Y1t2Pj4yXT0wO2NbdD4+Ml09KGNbKGNbQT4+Ml18MCkrMjUyPj4yXXwwKSsoKGNbej4+Ml18MCkqMjR8MCkrNDtpZihjW2s+PjJdfDApe2Nbbz4+Ml09MDtjW3M+PjJdPWNbKGNbdD4+Ml18MCkrOD4+Ml07d2hpbGUoMSl7aWYoIShjW3M+PjJdfDApKWJyZWFrO2Nbdz4+Ml09Y1soY1tzPj4yXXwwKSsxMj4+Ml07Y1tyPj4yXT1jWyhjW3M+PjJdfDApKzE2Pj4yXTtpZihjW2o+PjJdfDApe2lmKChjW3I+PjJdfDApPj0oY1tqPj4yXXwwKT8wPT0oZVIoY1t3Pj4yXXwwLGNbaD4+Ml18MCxjW2o+PjJdfDApfDApOjApeD03fWVsc2UgeD03O2lmKCh4fDApPT03KXt4PTA7aWYoKGNbcT4+Ml18MCk9PShjW28+PjJdfDApKXtjW28+PjJdPShjW28+PjJdfDApKzE2O2Nbbj4+Ml09TGQoY1ttPj4yXXwwLGNbbz4+Ml08PDIpfDA7aWYoIShjW24+PjJdfDApKXt4PTk7YnJlYWt9Y1ttPj4yXT1jW24+PjJdfXo9Y1tzPj4yXXwwO0E9Y1txPj4yXXwwO2NbcT4+Ml09QSsxO2NbKGNbbT4+Ml18MCkrKEE8PDIpPj4yXT16fWNbcz4+Ml09Y1tjW3M+PjJdPj4yXX1pZigoeHwwKT09OSl7Y1t2Pj4yXT03O2NbcT4+Ml09MH1pZigoY1txPj4yXXwwKT4xKWRSKGNbbT4+Ml18MCxjW3E+PjJdfDAsNCwxODUpfWVsc2V7Y1tzPj4yXT1HayhjW3Q+PjJdfDAsY1toPj4yXXwwLGNbaj4+Ml18MCl8MDtpZihjW3M+PjJdfDApe2NbbT4+Ml09cztjW3E+PjJdPTF9fWRvIGlmKChjW3E+PjJdfDApPjApe2NbcD4+Ml09OTYrKChjW3E+PjJdfDApKzE8PDIpO2NbdT4+Ml09SWQoY1twPj4yXXwwKXwwO2lmKGNbdT4+Ml18MCl7VlIoY1t1Pj4yXXwwLDAsY1twPj4yXXwwKXwwO2NbY1t1Pj4yXT4+Ml09MjE0NzQ4MzY0NztjWyhjW3U+PjJdfDApKzU2Pj4yXT0oY1t1Pj4yXXwwKSs5NjtUUihjWyhjW3U+PjJdfDApKzU2Pj4yXXwwLGNbbT4+Ml18MCxjW3E+PjJdPDwyfDApfDA7YnJlYWt9ZWxzZXtjW3Y+PjJdPTc7YnJlYWt9fXdoaWxlKDApO2lmKCEoY1trPj4yXXwwKSl7ej1jW3U+PjJdfDA7QT1jW2w+PjJdfDA7Y1tBPj4yXT16O0E9Y1t2Pj4yXXwwO2k9eTtyZXR1cm4gQXwwfUtkKGNbbT4+Ml18MCk7ej1jW3U+PjJdfDA7QT1jW2w+PjJdfDA7Y1tBPj4yXT16O0E9Y1t2Pj4yXXwwO2k9eTtyZXR1cm4gQXwwfWZ1bmN0aW9uIGxtKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wO2o9aTtpPWkrMzJ8MDtkPWorMTZ8MDtlPWorMTJ8MDtmPWorOHwwO2c9ais0fDA7aD1qO2NbZT4+Ml09YTtjW2Y+PjJdPWI7ZG8gaWYoISgoY1soY1tlPj4yXXwwKSs0Pj4yXXwwKSUxNnwwKSl7Y1toPj4yXT0oY1soY1tlPj4yXXwwKSs0Pj4yXXwwKSsxNjw8MjtjW2c+PjJdPUxkKGNbY1tlPj4yXT4+Ml18MCxjW2g+PjJdfDApfDA7aWYoY1tnPj4yXXwwKXtjW2NbZT4+Ml0+PjJdPWNbZz4+Ml07YnJlYWt9Q2woY1tmPj4yXXwwKTtjW2Q+PjJdPTc7Yj1jW2Q+PjJdfDA7aT1qO3JldHVybiBifDB9d2hpbGUoMCk7YT1jW2Y+PjJdfDA7aD0oY1tlPj4yXXwwKSs0fDA7Yj1jW2g+PjJdfDA7Y1toPj4yXT1iKzE7Y1soY1tjW2U+PjJdPj4yXXwwKSsoYjw8Mik+PjJdPWE7Y1tkPj4yXT0wO2I9Y1tkPj4yXXwwO2k9ajtyZXR1cm4gYnwwfWZ1bmN0aW9uIG1tKGEsYixkLGUsZil7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTA7bz1pO2k9aSszMnwwO2c9bysyNHwwO2g9bysyMHwwO2o9bysxNnwwO2s9bysxMnwwO2w9bys4fDA7bj1vKzR8MDttPW87Y1tnPj4yXT1hO2NbaD4+Ml09YjtjW2o+PjJdPWQ7Y1trPj4yXT1lO2NbbD4+Ml09ZjtjW20+PjJdPTA7ZD1jW2c+PjJdfDA7aWYoKGNbaz4+Ml18MCk8MCl7Y1tuPj4yXT1wbChkLDEzLG0sMCl8MDtpZighKGNbbj4+Ml18MCkpe2s9Y1ttPj4yXXwwO2Y9c2woY1tnPj4yXXwwLGNbaD4+Ml18MCxjW2o+PjJdfDAsMCl8MDtMZShrLDEsZixDKXwwO2Y9Y1ttPj4yXXwwO2s9c2woY1tnPj4yXXwwLGNbaD4+Ml18MCxjW2o+PjJdfDAsMTAyMyl8MDtMZShmLDIsayxDKXwwfX1lbHNle2Nbbj4+Ml09cGwoZCwxMixtLDApfDA7aWYoIShjW24+PjJdfDApKXtmPWNbbT4+Ml18MDtrPXNsKGNbZz4+Ml18MCxjW2g+PjJdfDAsY1tqPj4yXXwwLGNbaz4+Ml18MCl8MDtMZShmLDEsayxDKXwwfX1jW2NbbD4+Ml0+PjJdPWNbbT4+Ml07aT1vO3JldHVybiBjW24+PjJdfDB9ZnVuY3Rpb24gbm0oYSxiLGUsZixnLGgsail7YT1hfDA7Yj1ifDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7dmFyIGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wO3Y9aTtpPWkrNDh8MDtuPXYrNDB8MDtvPXYrMzZ8MDtwPXYrMzJ8MDtrPXYrMjh8MDtsPXYrMjR8MDtxPXYrMjB8MDtyPXYrMTZ8MDt0PXYrMTJ8MDttPXYrOHwwO3U9dis0fDA7cz12O2Nbbj4+Ml09YTtjW28+PjJdPWI7Y1twPj4yXT1lO2Nbaz4+Ml09ZjtjW2w+PjJdPWc7Y1txPj4yXT1oO2Nbcj4+Ml09ajtjW3Q+PjJdPTA7Zz1jW2s+PjJdfDA7aWYoKGRbY1trPj4yXT4+MF18MCkmMTI4KSRsKGcsbSl8MDtlbHNlIGNbbT4+Ml09ZFtnPj4wXTtjW3Q+PjJdPXBtKGNbbz4+Ml18MCxjW3A+PjJdfDAsY1trPj4yXXwwLGNbbD4+Ml18MCxjW3E+PjJdfDAsY1tyPj4yXXwwKXwwO2lmKCEoKGNbdD4+Ml18MCk9PTAmKGNbbT4+Ml18MCk+MSkpe3U9Y1t0Pj4yXXwwO2k9djtyZXR1cm4gdXwwfWNbdT4+Ml09MDtjW3M+PjJdPTA7aWYoKGNbcT4+Ml18MCkhPTAmKGNbcj4+Ml18MCkhPTA/KGw9Y1txPj4yXXwwLG09Y1tyPj4yXXwwLChjW2w+PjJdfDApIT0oY1ttPj4yXXwwKT8xOihjW2wrND4+Ml18MCkhPShjW20rND4+Ml18MCkpOjApe209Y1txPj4yXXwwO2NbdD4+Ml09Z20oY1tuPj4yXXwwLGNbbT4+Ml18MCxjW20rND4+Ml18MCx1LHMsMCl8MDtpZighKGNbdD4+Ml18MCkpY1t0Pj4yXT1ubShjW24+PjJdfDAsY1tvPj4yXXwwLGNbcD4+Ml18MCxjW3U+PjJdfDAsY1tzPj4yXXwwLGNbcT4+Ml18MCwwKXwwO0tkKGNbdT4+Ml18MCk7Y1txPj4yXT0wO2NbdT4+Ml09MH1pZighKGNbdD4+Ml18MCkpe2lmKGNbcT4+Ml18MCl7ZT1jW3E+PjJdfDA7Zz1jW2U+PjJdfDA7ZT1jW2UrND4+Ml18MH1lbHNle2U9Y1tyPj4yXXwwO2c9Y1tlPj4yXXwwO2U9Y1tlKzQ+PjJdfDB9Y1t0Pj4yXT1nbShjW24+PjJdfDAsZyxlLHUscywwKXwwfWlmKCEoY1t0Pj4yXXwwKSljW3Q+PjJdPW5tKGNbbj4+Ml18MCxjW28+PjJdfDAsY1twPj4yXXwwLGNbdT4+Ml18MCxjW3M+PjJdfDAsY1txPj4yXXwwLGNbcj4+Ml18MCl8MDtLZChjW3U+PjJdfDApO3U9Y1t0Pj4yXXwwO2k9djtyZXR1cm4gdXwwfWZ1bmN0aW9uIG9tKGIsZCxlLGYsZyxoLGosayxsLG0sbil7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7bD1sfDA7bT1tfDA7bj1ufDA7dmFyIG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wO3o9aTtpPWkrNjR8MDt0PXorNTJ8MDt1PXorNDh8MDt2PXorNDR8MDt3PXorMTZ8MDtvPXorOHwwO3A9ejtxPXorNDB8MDtyPXorMzZ8MDtzPXorMzJ8MDt5PXorMjh8MDt4PXorMjR8MDtjW3U+PjJdPWI7Y1t2Pj4yXT1kO2I9dztjW2I+PjJdPWU7Y1tiKzQ+PjJdPWY7Yj1vO2NbYj4+Ml09ZztjW2IrND4+Ml09aDtiPXA7Y1tiPj4yXT1qO2NbYis0Pj4yXT1rO2NbcT4+Ml09bDtjW3I+PjJdPW07Y1tzPj4yXT1uO2NbeD4+Ml09MDtsPXc7aWYoKGNbbD4+Ml18MCk9PTAmKGNbbCs0Pj4yXXwwKT09MCljW3g+PjJdPShjW3I+PjJdfDApKzIwO2NbeT4+Ml09SWQoOTYrKGNbeD4+Ml18MCl8MCl8MDtpZighKGNbeT4+Ml18MCkpe2NbdD4+Ml09Nzt5PWNbdD4+Ml18MDtpPXo7cmV0dXJuIHl8MH1lPWNbeT4+Ml18MDtmPWUrOTZ8MDtkb3tjW2U+PjJdPTA7ZT1lKzR8MH13aGlsZSgoZXwwKTwoZnwwKSk7Y1tjW3k+PjJdPj4yXT1jW3U+PjJdO2FbKGNbeT4+Ml18MCkrND4+MF09KGNbdj4+Ml18MCkhPTA7bD13O3U9Y1tsKzQ+PjJdfDA7dj0oY1t5Pj4yXXwwKSs4fDA7Y1t2Pj4yXT1jW2w+PjJdO2Nbdis0Pj4yXT11O3Y9Y1tvKzQ+PjJdfDA7dT0oY1t5Pj4yXXwwKSsxNnwwO2NbdT4+Ml09Y1tvPj4yXTtjW3UrND4+Ml09djt1PWNbcCs0Pj4yXXwwO3Y9KGNbeT4+Ml18MCkrMjR8MDtjW3Y+PjJdPWNbcD4+Ml07Y1t2KzQ+PjJdPXU7aWYoY1t4Pj4yXXwwKXtjWyhjW3k+PjJdfDApKzQwPj4yXT0oY1t5Pj4yXXwwKSs5NjthWyhjW3k+PjJdfDApKzU+PjBdPTE7Y1soY1t5Pj4yXXwwKSs0ND4+Ml09Y1tyPj4yXTtUUihjWyhjW3k+PjJdfDApKzQwPj4yXXwwLGNbcT4+Ml18MCxjW3I+PjJdfDApfDA7ZT0oY1soY1t5Pj4yXXwwKSs0MD4+Ml18MCkrKGNbcj4+Ml18MCl8MDtmPWUrMjB8MDtkb3thW2U+PjBdPTA7ZT1lKzF8MH13aGlsZSgoZXwwKTwoZnwwKSl9ZWxzZXt3PVFSKGNbdz4+Ml18MCxjW3crND4+Ml18MCwxLDApfDA7eD0oY1t5Pj4yXXwwKSszMnwwO2NbeD4+Ml09dztjW3grND4+Ml09Q31jW2Nbcz4+Ml0+PjJdPWNbeT4+Ml07Y1t0Pj4yXT0wO3k9Y1t0Pj4yXXwwO2k9ejtyZXR1cm4geXwwfWZ1bmN0aW9uIHBtKGEsYixlLGYsZyxoKXthPWF8MDtiPWJ8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDt2YXIgaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEQ9MDtBPWk7aT1pKzgwfDA7dT1BKzc2fDA7aj1BKzcyfDA7az1BKzY4fDA7RD1BKzY0fDA7Qj1BKzYwfDA7dj1BKzU2fDA7dz1BKzUyfDA7eT1BKzQ4fDA7cj1BKzQ0fDA7cz1BKzQwfDA7ej1BKzM2fDA7bj1BKzMyfDA7bT1BKzI4fDA7eD1BO2w9QSsyNHwwO3E9QSsyMHwwO3A9QSsxNnwwO289QSsxMnwwO3Q9QSs4fDA7Y1tqPj4yXT1hO2Nbaz4+Ml09YjtjW0Q+PjJdPWU7Y1tCPj4yXT1mO2Nbdj4+Ml09ZztjW3c+PjJdPWg7Y1t5Pj4yXT0wO2Nbcj4+Ml09Y1tEPj4yXTtjW3M+PjJdPShjW3I+PjJdfDApKyhjW0I+PjJdfDApO2Nbej4+Ml09MDtjW24+PjJdPTA7Y1ttPj4yXT0xO2E9X2woY1tyPj4yXXwwLHgpfDA7Y1tyPj4yXT0oY1tyPj4yXXwwKSthO2E9X2woY1tyPj4yXXwwLHgpfDA7Y1tyPj4yXT0oY1tyPj4yXXwwKSthO2lmKChjW3I+PjJdfDApPj4+MD4oY1tzPj4yXXwwKT4+PjApe2NbdT4+Ml09MjY3O0Q9Y1t1Pj4yXXwwO2k9QTtyZXR1cm4gRHwwfXdoaWxlKDEpe2lmKChjW3I+PjJdfDApPj4+MD49KGNbcz4+Ml18MCk+Pj4wKXtmPTI4O2JyZWFrfWlmKCEoKGNbdj4+Ml18MCkhPTA/MTooY1t3Pj4yXXwwKSE9MCkpe2Y9Mjg7YnJlYWt9Y1twPj4yXT0wO2lmKCEoY1ttPj4yXXwwKSl7Zj1jW3I+PjJdfDA7aWYoKGRbY1tyPj4yXT4+MF18MCkmMTI4KWY9JGwoZixwKXwwO2Vsc2V7Y1twPj4yXT1kW2Y+PjBdO2Y9MX1jW3I+PjJdPShjW3I+PjJdfDApK2Z9Y1ttPj4yXT0wO2Y9Y1tyPj4yXXwwO2lmKChkW2Nbcj4+Ml0+PjBdfDApJjEyOClmPSRsKGYscSl8MDtlbHNle2NbcT4+Ml09ZFtmPj4wXTtmPTF9Y1tyPj4yXT0oY1tyPj4yXXwwKStmO2lmKChjW3A+PjJdfDApPDB8KGNbcT4+Ml18MCk8MCl7Zj0xNTticmVha31pZigoKGNbcj4+Ml18MCkrKGNbcT4+Ml18MCl8MCk+Pj4wPihjW3M+PjJdfDApPj4+MCl7Zj0xNTticmVha31pZigoKGNbcD4+Ml18MCkrKGNbcT4+Ml18MCl8MCk+KGNbbj4+Ml18MCkpe2Nbbj4+Ml09KGNbcD4+Ml18MCkrKGNbcT4+Ml18MCk8PDE7Y1t0Pj4yXT1MZChjW3o+PjJdfDAsY1tuPj4yXXwwKXwwO2lmKCEoY1t0Pj4yXXwwKSl7Zj0xODticmVha31jW3o+PjJdPWNbdD4+Ml19VFIoKGNbej4+Ml18MCkrKGNbcD4+Ml18MCl8MCxjW3I+PjJdfDAsY1txPj4yXXwwKXwwO2Nbbz4+Ml09KGNbcD4+Ml18MCkrKGNbcT4+Ml18MCk7Y1tyPj4yXT0oY1tyPj4yXXwwKSsoY1txPj4yXXwwKTtjW2w+PjJdPWVSKGNbaj4+Ml18MCxjW3o+PjJdfDAsKGNbbz4+Ml18MCk+KGNbaz4+Ml18MCk/Y1trPj4yXXwwOmNbbz4+Ml18MCl8MDtkbyBpZihjW3Y+PjJdfDApe2lmKChjW2w+PjJdfDApPj0wKXtpZihjW2w+PjJdfDApYnJlYWs7aWYoKGNbbz4+Ml18MCk8PShjW2s+PjJdfDApKWJyZWFrfWE9eDtCPWNbYSs0Pj4yXXwwO0Q9Y1t2Pj4yXXwwO2NbRD4+Ml09Y1thPj4yXTtjW0QrND4+Ml09QjtjW3Y+PjJdPTB9d2hpbGUoMCk7aWYoKGNbdz4+Ml18MCkhPTAmKGNbbD4+Ml18MCk8MCl7YT14O0I9Y1thKzQ+PjJdfDA7RD1jW3c+PjJdfDA7Y1tEPj4yXT1jW2E+PjJdO2NbRCs0Pj4yXT1CO2Nbdz4+Ml09MH1CPXg7Qj1SUihjW0I+PjJdfDAsY1tCKzQ+PjJdfDAsMSwwKXwwO0Q9eDtjW0Q+PjJdPUI7Y1tEKzQ+PjJdPUN9aWYoKGZ8MCk9PTE1KWNbeT4+Ml09MjY3O2Vsc2UgaWYoKGZ8MCk9PTE4KWNbeT4+Ml09NztlbHNlIGlmKChmfDApPT0yOCl7aWYoY1t2Pj4yXXwwKXt0PXg7Qj1jW3QrND4+Ml18MDtEPWNbdj4+Ml18MDtjW0Q+PjJdPWNbdD4+Ml07Y1tEKzQ+PjJdPUJ9aWYoY1t3Pj4yXXwwKXtCPWNbeCs0Pj4yXXwwO0Q9Y1t3Pj4yXXwwO2NbRD4+Ml09Y1t4Pj4yXTtjW0QrND4+Ml09Qn19S2QoY1t6Pj4yXXwwKTtjW3U+PjJdPWNbeT4+Ml07RD1jW3U+PjJdfDA7aT1BO3JldHVybiBEfDB9ZnVuY3Rpb24gcW0oYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTA7Zz1pO2k9aSszMnwwO209ZysyOHwwO2w9ZysyNHwwO2s9ZysyMHwwO2o9ZysxNnwwO2U9ZysxMnwwO2Y9Zys4fDA7aD1nKzR8MDtkPWc7Y1ttPj4yXT1hO2NbbD4+Ml09YjtjW2s+PjJdPWNbKGNbY1ttPj4yXT4+Ml18MCkrMTI+PjJdO2Nbaj4+Ml09Y1soY1tjW2w+PjJdPj4yXXwwKSsxMj4+Ml07Y1tlPj4yXT1jWyhjW2NbbT4+Ml0+PjJdfDApKzE2Pj4yXTtjW2Y+PjJdPWNbKGNbY1tsPj4yXT4+Ml18MCkrMTY+PjJdO2NbaD4+Ml09KGNbZT4+Ml18MCk8KGNbZj4+Ml18MCk/Y1tlPj4yXXwwOmNbZj4+Ml18MDtjW2Q+PjJdPWVSKGNbaz4+Ml18MCxjW2o+PjJdfDAsY1toPj4yXXwwKXwwO2lmKGNbZD4+Ml18MCl7bT1jW2Q+PjJdfDA7aT1nO3JldHVybiBtfDB9Y1tkPj4yXT0oY1tlPj4yXXwwKS0oY1tmPj4yXXwwKTttPWNbZD4+Ml18MDtpPWc7cmV0dXJuIG18MH1mdW5jdGlvbiBybShhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTA7cD1pO2k9aSs0OHwwO2g9cCszMnwwO2U9cCsyOHwwO2Y9cCsyNHwwO2w9cCsyMHwwO289cCsxNnwwO249cCsxMnwwO209cCs4fDA7aj1wKzR8MDtrPXA7Y1toPj4yXT1hO2NbZT4+Ml09YjtjW2Y+PjJdPWQ7Y1tvPj4yXT0yMzQyNztjW24+PjJdPTIzNDMxO2NbbT4+Ml09MjM0MzY7Y1tqPj4yXT0tMTtjW2s+PjJdPTE1O2Q9Y1toPj4yXXwwO2lmKChjW2U+PjJdfDApPjYpe2llKGQsMjM0NDcsLTEpO2k9cDtyZXR1cm59aWYodm0oZCwyMDQ4NixjW2NbZj4+Ml0+PjJdfDAsbCl8MCl7aT1wO3JldHVybn1zd2l0Y2goY1tlPj4yXXwwKXtjYXNlIDY6e2Nbaz4+Ml09Y2UoY1soY1tmPj4yXXwwKSsyMD4+Ml18MCl8MDtnPTY7YnJlYWt9Y2FzZSA1OntnPTY7YnJlYWt9Y2FzZSA0OntnPTc7YnJlYWt9Y2FzZSAzOntnPTg7YnJlYWt9Y2FzZSAyOntnPTk7YnJlYWt9ZGVmYXVsdDp7fX1pZigoZ3wwKT09Nil7Y1tqPj4yXT1jZShjWyhjW2Y+PjJdfDApKzE2Pj4yXXwwKXwwO2c9N31pZigoZ3wwKT09Nyl7Y1ttPj4yXT0kZChjWyhjW2Y+PjJdfDApKzEyPj4yXXwwKXwwO2c9OH1pZigoZ3wwKT09OCl7Y1tuPj4yXT0kZChjWyhjW2Y+PjJdfDApKzg+PjJdfDApfDA7Zz05fWlmKChnfDApPT05KWNbbz4+Ml09JGQoY1soY1tmPj4yXXwwKSs0Pj4yXXwwKXwwO2lmKCEoKGNbbT4+Ml18MCkhPTAmKGNbbj4+Ml18MCkhPTAmKGNbbz4+Ml18MCkhPTApKXtzZShjW2g+PjJdfDApO2k9cDtyZXR1cm59ZD1jW2g+PjJdfDA7aWYoIShjW2s+PjJdfDApKXttZShkLDE4NDAyLC0xLDApO2k9cDtyZXR1cm59aWYodG4oZCxjW2w+PjJdfDApfDApe2k9cDtyZXR1cm59WW4oY1toPj4yXXwwLGNbbD4+Ml18MCxjW28+PjJdfDAsY1tuPj4yXXwwLGNbbT4+Ml18MCxjW2o+PjJdfDAsY1trPj4yXXwwKTtpPXA7cmV0dXJufWZ1bmN0aW9uIHNtKGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wO2c9aTtpPWkrMTZ8MDtlPWcrMTJ8MDtoPWcrNHwwO2Y9ZztjW2U+PjJdPWE7Y1tnKzg+PjJdPWI7Y1toPj4yXT1kO2lmKHZtKGNbZT4+Ml18MCwyMDQ5NCxjW2NbaD4+Ml0+PjJdfDAsZil8MCl7aT1nO3JldHVybn1pZih0bihjW2U+PjJdfDAsY1tmPj4yXXwwKXwwKXtpPWc7cmV0dXJufVVuKGNbZT4+Ml18MCxjW2Y+PjJdfDApO2k9ZztyZXR1cm59ZnVuY3Rpb24gdG0oYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MDtqPWk7aT1pKzMyfDA7ZT1qKzIwfDA7az1qKzEyfDA7aD1qKzh8MDtmPWorNHwwO2c9ajtjW2U+PjJdPWE7Y1tqKzE2Pj4yXT1iO2Nbaz4+Ml09ZDtpZih2bShjW2U+PjJdfDAsMjA1MTIsY1tjW2s+PjJdPj4yXXwwLGcpfDApe2k9ajtyZXR1cm59Y1tmPj4yXT1jW2NbZz4+Ml0+PjJdO2NbaD4+Ml09U24oY1tmPj4yXXwwKXwwO3N3aXRjaChjW2g+PjJdfDApe2Nhc2UgMDp7bWUoY1tlPj4yXXwwLDIzMzMxLC0xLDApO2k9ajtyZXR1cm59Y2FzZSAxMDE6e21lKGNbZT4+Ml18MCwyMzM0NywtMSwwKTtpPWo7cmV0dXJufWRlZmF1bHQ6e3FlKGNbZT4+Ml18MCxjW2g+PjJdfDApO2k9ajtyZXR1cm59fX1mdW5jdGlvbiB1bShhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wO2s9aTtpPWkrMzJ8MDtlPWsrMTZ8MDtmPWsrMTJ8MDtnPWsrOHwwO2g9ays0fDA7aj1rO2NbZT4+Ml09YTtjW2Y+PjJdPWI7Y1tnPj4yXT1kO2lmKHZtKGNbZT4+Ml18MCwyMDUwMixjW2NbZz4+Ml0+PjJdfDAsaCl8MCl7aT1rO3JldHVybn1jW2o+PjJdPTA7aWYoKGNbZj4+Ml18MCk+MSljW2o+PjJdPSRkKGNbKGNbZz4+Ml18MCkrND4+Ml18MCl8MDt3bShjW2U+PjJdfDAsY1toPj4yXXwwLGNbaj4+Ml18MCk7aT1rO3JldHVybn1mdW5jdGlvbiB2bShiLGQsZSxmKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTA7cD1pO2k9aSszMnwwO249cDtnPXArMjh8MDtoPXArMjR8MDtqPXArMjB8MDtrPXArMTZ8MDtsPXArMTJ8MDttPXArOHwwO289cCs0fDA7Y1toPj4yXT1iO2Nbaj4+Ml09ZDtjW2s+PjJdPWU7Y1tsPj4yXT1mO2lmKChlZShjW2s+PjJdfDApfDApPT00PyhhZShjW2s+PjJdfDApfDApPT00OjApe2Q9X2QoY1trPj4yXXwwKXwwO2FbbT4+MF09YVtkPj4wXXwwO2FbbSsxPj4wXT1hW2QrMT4+MF18MDthW20rMj4+MF09YVtkKzI+PjBdfDA7YVttKzM+PjBdPWFbZCszPj4wXXwwO2NbY1tsPj4yXT4+Ml09Y1ttPj4yXTtjW2c+PjJdPTA7ZD1jW2c+PjJdfDA7aT1wO3JldHVybiBkfDB9Y1tuPj4yXT1jW2o+PjJdO2Nbbz4+Ml09T2QoMjMzMDIsbil8MDtpZShjW2g+PjJdfDAsY1tvPj4yXXwwLC0xKTtLZChjW28+PjJdfDApO2NbZz4+Ml09MTtkPWNbZz4+Ml18MDtpPXA7cmV0dXJuIGR8MH1mdW5jdGlvbiB3bShhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wO2s9aTtpPWkrMzJ8MDtlPWsrMTZ8MDtnPWsrMTJ8MDtmPWsrOHwwO2g9ays0fDA7aj1rO2NbZT4+Ml09YTtjW2c+PjJdPWI7Y1tmPj4yXT1kO2NbaD4+Ml09Y1tjW2c+PjJdPj4yXTtpZihjW2Y+PjJdfDApY1tqPj4yXT1jW2Y+PjJdO2Vsc2UgY1tqPj4yXT0yMzIzNztlPWNbZT4+Ml18MDtpZihjWyhjW2c+PjJdfDApKzEyPj4yXXwwKXt4bShlLGNbZz4+Ml18MCxjW2o+PjJdfDApO3ltKGNbaD4+Ml18MCk7aT1rO3JldHVybn1lbHNle2ZlKGUsMTg0MDIsMCwwKTtpPWs7cmV0dXJufX1mdW5jdGlvbiB4bShiLGQsZSl7Yj1ifDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wO3U9aTtpPWkrODB8MDtmPXUrNzZ8MDtnPXUrNzJ8MDtoPXUrNjh8MDtxPXU7bz11KzY0fDA7cD11KzYwfDA7az11KzU2fDA7aj11KzUyfDA7cj11KzQ4fDA7bj11KzQ0fDA7bD11KzQwfDA7cz11KzM2fDA7bT11KzMyfDA7Y1tmPj4yXT1iO2NbZz4+Ml09ZDtjW2g+PjJdPWU7Y1tvPj4yXT1jW2NbZz4+Ml0+PjJdO2NbcD4+Ml09MDtjW2s+PjJdPTA7Y1tqPj4yXT0wO2Nbcj4+Ml09MDtjW3E+PjJdPTA7Y1txKzQ+PjJdPTA7Y1txKzg+PjJdPTA7Y1txKzEyPj4yXT0wO2NbcSsxNj4+Ml09MDtjW3ErMjA+PjJdPTA7Y1txKzI0Pj4yXT0wO2NbcSsyOD4+Ml09MDtjW3E+PjJdPWNbZz4+Ml07Y1txKzQ+PjJdPWNbKGNbbz4+Ml18MCkrMjQ+PjJdO2lmKChjWyhjW2c+PjJdfDApKzkyPj4yXXwwKSE9MD8oaFIoY1soY1soY1tnPj4yXXwwKSs5Mj4+Ml18MCkrMTI+PjJdfDAsY1toPj4yXXwwKXwwKSE9MDowKXt6bShjWyhjW2c+PjJdfDApKzkyPj4yXXwwKTtjWyhjW2c+PjJdfDApKzkyPj4yXT0wfWlmKCEoY1soY1tnPj4yXXwwKSs5Mj4+Ml18MCkpe2Nbbj4+Ml09MDtlPUFtKGNbKGNbZz4+Ml18MCkrMTI+PjJdfDApfDA7Y1soY1tnPj4yXXwwKSsyMD4+Ml09ZTtjW3ErOD4+Ml09Y1soY1tnPj4yXXwwKSsyMD4+Ml07Y1tsPj4yXT0wO3doaWxlKDEpe2lmKCEoYVsoY1toPj4yXXwwKSsoY1tsPj4yXXwwKT4+MF18MCkpYnJlYWs7Y1tzPj4yXT0wO2lmKEJtKGNbbz4+Ml18MCxhWyhjW2g+PjJdfDApKyhjW2w+PjJdfDApPj4wXXwwLHMpfDApe3Q9ODticmVha31lPUNtKHEsYVsoY1toPj4yXXwwKSsoY1tsPj4yXXwwKT4+MF18MCl8MDtjW24+PjJdPShjW24+PjJdfDApK2U7Y1tsPj4yXT0oY1tsPj4yXXwwKSsxfWlmKCh0fDApPT04KXtpZShjW2Y+PjJdfDAsY1tzPj4yXXwwLC0xKTtLZChjW3M+PjJdfDApO2k9dTtyZXR1cm59dD1EbShjW24+PjJdfDAsY1toPj4yXXwwKXwwO2NbKGNbZz4+Ml18MCkrOTI+PjJdPXQ7aWYoIShjWyhjW2c+PjJdfDApKzkyPj4yXXwwKSljW3A+PjJdPTc7Y1soY1tnPj4yXXwwKSs4OD4+Ml09MTtjW2s+PjJdPTF9aWYoKGNbcD4+Ml18MCk9PTA/KGNbcj4+Ml09RW0oY1soY1tnPj4yXXwwKSs5Mj4+Ml18MCxqKXwwLChjW3I+PjJdfDApPT0wKTowKWNbcD4+Ml09NztpZigoY1twPj4yXXwwKT09MD8oY1txKzI4Pj4yXT1jW2o+PjJdLGNbcSs4Pj4yXT1jWyhjW2c+PjJdfDApKzIwPj4yXSxjW3A+PjJdPUZtKGNbZz4+Ml18MCxjW2s+PjJdfDAscSxjW2g+PjJdfDApfDAsKGNbaz4+Ml18MCkhPTApOjApR20oY1soY1tnPj4yXXwwKSs5Mj4+Ml18MCk7aWYoIShjW3A+PjJdfDApKXtjW20+PjJdPWNbKGNbKGNbZz4+Ml18MCkrOTI+PjJdfDApKzQ+PjJdPDwyO2ZlKGNbZj4+Ml18MCxjW2o+PjJdfDAsY1ttPj4yXXwwLGNbcj4+Ml18MCk7aT11O3JldHVybn1xZShjW2Y+PjJdfDAsY1twPj4yXXwwKTtpZighKGNbcj4+Ml18MCkpe2k9dTtyZXR1cm59UWJbY1tyPj4yXSYyNTVdKGNbaj4+Ml18MCk7aT11O3JldHVybn1mdW5jdGlvbiB5bShhKXthPWF8MDt2YXIgYj0wLGQ9MDtiPWk7aT1pKzE2fDA7ZD1iO2NbZD4+Ml09YTtWZShjWyhjW2Q+PjJdfDApKzI0ND4+Ml18MCl8MDtjWyhjW2Q+PjJdfDApKzI0ND4+Ml09MDtpPWI7cmV0dXJufWZ1bmN0aW9uIHptKGIpe2I9YnwwO3ZhciBlPTAsZj0wO2Y9aTtpPWkrMTZ8MDtlPWY7Y1tlPj4yXT1iO2lmKCEoY1tlPj4yXXwwKSl7aT1mO3JldHVybn1hW2NbZT4+Ml0+PjBdPTA7aWYoZFtjW2U+PjJdPj4wXXwwKXtpPWY7cmV0dXJufWlmKGRbKGNbZT4+Ml18MCkrMT4+MF18MCl7aT1mO3JldHVybn1pZihkWyhjW2U+PjJdfDApKzI+PjBdfDApe2k9ZjtyZXR1cm59S2QoY1tlPj4yXXwwKTtpPWY7cmV0dXJufWZ1bmN0aW9uIEFtKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MDtkPWk7aT1pKzE2fDA7ZT1kKzR8MDtiPWQ7Y1tlPj4yXT1hO2NbYj4+Ml09MDtObShjW2U+PjJdfDAsMTUzLGIpfDA7aT1kO3JldHVybiBjW2I+PjJdfDB9ZnVuY3Rpb24gQm0oYixlLGYpe2I9YnwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wLG09MDttPWk7aT1pKzMyfDA7bD1tO2c9bSsxMnwwO2g9bSs4fDA7aj1tKzE2fDA7az1tKzR8MDtjW2g+PjJdPWI7YVtqPj4wXT1lO2Nbaz4+Ml09ZjtkbyBpZigoYVtqPj4wXXwwKSE9MTEyPyhhW2o+PjBdfDApIT05OTowKXtpZigoYVtqPj4wXXwwKT09MTEwPyhkWyhjW2g+PjJdfDApKzIyOD4+MF18MCkhPTA6MClicmVhaztpZigoYVtqPj4wXXwwKT09OTc/KGRbKGNbaD4+Ml18MCkrMjI4Pj4wXXwwKSE9MDowKWJyZWFrO2lmKChhW2o+PjBdfDApPT0xMDg/KGRbKGNbaD4+Ml18MCkrMjMwPj4wXXwwKSE9MDowKWJyZWFrO2lmKCgoKGFbaj4+MF18MCkhPTExNT8oYVtqPj4wXXwwKSE9MTIwOjApPyhhW2o+PjBdfDApIT0xMjE6MCk/KGFbaj4+MF18MCkhPTk4OjApe2Y9Y1trPj4yXXwwO2NbbD4+Ml09YVtqPj4wXTtGayhmLDIzMjY3LGwpO2NbZz4+Ml09MTtsPWNbZz4+Ml18MDtpPW07cmV0dXJuIGx8MH19d2hpbGUoMCk7Y1tnPj4yXT0wO2w9Y1tnPj4yXXwwO2k9bTtyZXR1cm4gbHwwfWZ1bmN0aW9uIENtKGIsZCl7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MDtnPWk7aT1pKzE2fDA7ZT1nKzR8MDtoPWcrOHwwO2Y9ZztjW2U+PjJdPWI7YVtoPj4wXT1kO3N3aXRjaChhW2g+PjBdfDApe2Nhc2UgOTk6Y2FzZSAxMTI6Y2FzZSAxMTA6e2NbZj4+Ml09MTticmVha31jYXNlIDExNTpjYXNlIDEwODpjYXNlIDk3OntjW2Y+PjJdPWNbKGNbZT4+Ml18MCkrND4+Ml07YnJlYWt9Y2FzZSAxMjE6e2NbZj4+Ml09XyhjWyhjW2U+PjJdfDApKzQ+PjJdfDAsY1soY1tlPj4yXXwwKSs4Pj4yXXwwKXwwO2JyZWFrfWNhc2UgOTg6e2NbZj4+Ml09XyhjWyhjW2U+PjJdfDApKzg+PjJdfDAsKChjWyhjW2U+PjJdfDApKzQ+PjJdfDApKzMxfDApLzMyfDApfDA7YnJlYWt9ZGVmYXVsdDpjW2Y+PjJdPShfKGNbKGNbZT4+Ml18MCkrND4+Ml18MCxjWyhjW2U+PjJdfDApKzg+PjJdfDApfDApKjN9aT1nO3JldHVybiBjW2Y+PjJdfDB9ZnVuY3Rpb24gRG0oYixkKXtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTA7az1pO2k9aSszMnwwO2U9aysxNnwwO2Y9aysxMnwwO2o9ays4fDA7Zz1rKzR8MDtoPWs7Y1tlPj4yXT1iO2NbZj4+Ml09ZDtjW2c+PjJdPSgoY1tlPj4yXTw8MSkrMTw8MikrMjA7Y1toPj4yXT1rUihjW2Y+PjJdfDApfDA7Y1tqPj4yXT1JZCgoY1tnPj4yXXwwKSsoY1toPj4yXXwwKSsxfDApfDA7aWYoIShjW2o+PjJdfDApKXtkPWNbaj4+Ml18MDtpPWs7cmV0dXJuIGR8MH1WUihjW2o+PjJdfDAsMCxjW2c+PjJdfDApfDA7Y1soY1tqPj4yXXwwKSsxNj4+Ml09KGNbaj4+Ml18MCkrMTYrNC0oY1tqPj4yXXwwKTtjWyhjW2o+PjJdfDApKzE2KygxKyhjW2U+PjJdfDApPDwyKT4+Ml09KGNbKGNbaj4+Ml18MCkrMTY+PjJdfDApKygoY1tlPj4yXXwwKSsxPDwyKTtjWyhjW2o+PjJdfDApKzQ+PjJdPWNbZT4+Ml07Y1soY1tqPj4yXXwwKSsxMj4+Ml09KGNbaj4+Ml18MCkrKGNbZz4+Ml18MCk7VFIoY1soY1tqPj4yXXwwKSsxMj4+Ml18MCxjW2Y+PjJdfDAsKGNbaD4+Ml18MCkrMXwwKXwwO2FbY1tqPj4yXT4+MF09MTtkPWNbaj4+Ml18MDtpPWs7cmV0dXJuIGR8MH1mdW5jdGlvbiBFbShiLGUpe2I9YnwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wO2s9aTtpPWkrMTZ8MDtmPWsrMTJ8MDtnPWsrOHwwO2o9ays0fDA7aD1rO2NbZj4+Ml09YjtjW2c+PjJdPWU7Y1tqPj4yXT0wO2NbaD4+Ml09MDtlPWNbZj4+Ml18MDtkbyBpZihkWyhjW2Y+PjJdfDApKzE+PjBdfDApe2I9Y1tmPj4yXXwwO2lmKCEoZFtlKzI+PjBdfDApKXthW2IrMj4+MF09MTtjW2g+PjJdPShjW2Y+PjJdfDApKzE2KygoY1soY1tmPj4yXXwwKSs0Pj4yXXwwKSsyPDwyKTtjW2o+PjJdPTE1MjticmVha31jW2g+PjJdPUlkKGNbYis0Pj4yXTw8Mil8MDtpZigoY1toPj4yXXwwKSE9MD8oY1tqPj4yXT0xNDgsKGNbKGNbZj4+Ml18MCkrOD4+Ml18MCkhPTApOjApVFIoY1toPj4yXXwwLChjW2Y+PjJdfDApKzE2KzR8MCxjWyhjW2Y+PjJdfDApKzQ+PjJdPDwyfDApfDB9ZWxzZXthW2UrMT4+MF09MTtjW2g+PjJdPShjW2Y+PjJdfDApKzE2KzQ7Y1tqPj4yXT0xNTJ9d2hpbGUoMCk7Y1tjW2c+PjJdPj4yXT1jW2g+PjJdO2k9aztyZXR1cm4gY1tqPj4yXXwwfWZ1bmN0aW9uIEZtKGIsZCxlLGYpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MDtCPWk7aT1pKzk2fDA7Zz1CKzkyfDA7aD1CKzg4fDA7aj1CKzg0fDA7az1CKzgwfDA7QT1CKzc2fDA7bj1CKzcyfDA7eT1CKzY4fDA7ej1CKzY0fDA7cj1CKzI0fDA7cz1CKzE2fDA7bD1CKzYwfDA7bz1CKzU2fDA7cT1CKzUyfDA7dD1CKzh8MDt4PUIrNDh8MDtwPUIrNDR8MDttPUIrNDB8MDt1PUI7dj1CKzM2fDA7dz1CKzMyfDA7Y1tnPj4yXT1iO2NbaD4+Ml09ZDtjW2o+PjJdPWU7Y1trPj4yXT1mO2NbQT4+Ml09MDtjW3k+PjJdPWNbY1tnPj4yXT4+Ml07Y1t6Pj4yXT0wO2Nbbj4+Ml09MDt3aGlsZSgxKXtpZihjW0E+PjJdfDApe2c9MzE7YnJlYWt9aWYoIShhWyhjW2s+PjJdfDApKyhjW24+PjJdfDApPj4wXXwwKSl7Zz0zMTticmVha31hWyhjW2o+PjJdfDApKzI0Pj4wXT1hWyhjW2s+PjJdfDApKyhjW24+PjJdfDApPj4wXXwwO2E6ZG8gc3dpdGNoKGFbKGNbaz4+Ml18MCkrKGNbbj4+Ml18MCk+PjBdfDApe2Nhc2UgMTEyOntpZihjW2g+PjJdfDApY1tjWyhjW2o+PjJdfDApKzI4Pj4yXT4+Ml09Y1soY1tqPj4yXXwwKSs4Pj4yXTticmVha31jYXNlIDk5OntpZihjW2g+PjJdfDApY1tjWyhjW2o+PjJdfDApKzI4Pj4yXT4+Ml09Y1soY1tqPj4yXXwwKSs0Pj4yXTticmVha31jYXNlIDExMDp7aWYoY1toPj4yXXwwKXtmPXI7Y1tmPj4yXT0wO2NbZis0Pj4yXT0wO2NbQT4+Ml09SG0oY1t5Pj4yXXwwLHosciwwKXwwO2NbY1soY1tqPj4yXXwwKSsyOD4+Ml0+PjJdPWNbcj4+Ml19YnJlYWt9Y2FzZSA5Nzp7aWYoKGNbaD4+Ml18MCkhPTA/KGNbQT4+Ml09SG0oY1t5Pj4yXXwwLHoscyxsKXwwLChjW0E+PjJdfDApPT0wKTowKXtjW28+PjJdPTA7d2hpbGUoMSl7aWYoKGNbbz4+Ml18MCk+PShjWyhjW2o+PjJdfDApKzQ+PjJdfDApKWJyZWFrIGE7Zj1fbChjW2w+PjJdfDAsdCl8MDtjW2w+PjJdPShjW2w+PjJdfDApK2Y7Zj1jW3Q+PjJdfDA7ZT1zO2U9X1IoY1tlPj4yXXwwLGNbZSs0Pj4yXXwwLDIsMCl8MDtlPVJSKGZ8MCwwLGV8MCxDfDApfDA7Zj1zO2Y9X1IoZXwwLEN8MCxjW2Y+PjJdfDAsY1tmKzQ+PjJdfDApfDA7Y1txPj4yXT1mO2NbKGNbKGNbaj4+Ml18MCkrMjg+PjJdfDApKyhjW28+PjJdPDwyKT4+Ml09Y1txPj4yXTtjW28+PjJdPShjW28+PjJdfDApKzF9fWJyZWFrfWNhc2UgMTA4OntjW3g+PjJdPTA7Zj0oY1tnPj4yXXwwKSszMnwwO2NbQT4+Ml09SW0oY1t5Pj4yXXwwLGNbZj4+Ml18MCxjW2YrND4+Ml18MCx4KXwwO2I6ZG8gaWYoIShjW0E+PjJdfDApKXtjW20+PjJdPXplKGNbeD4+Ml18MCwwKXwwO2NbcD4+Ml09MDt3aGlsZSgxKXtpZigoY1twPj4yXXwwKT49KGNbKGNbaj4+Ml18MCkrND4+Ml18MCkpYnJlYWsgYjtmPV9sKGNbbT4+Ml18MCx1KXwwO2NbbT4+Ml09KGNbbT4+Ml18MCkrZjtjWyhjWyhjW2o+PjJdfDApKzI4Pj4yXXwwKSsoY1twPj4yXTw8Mik+PjJdPWNbdT4+Ml07Y1twPj4yXT0oY1twPj4yXXwwKSsxfX13aGlsZSgwKTtZZChjW3g+PjJdfDApfDA7YnJlYWt9Y2FzZSAxMTU6e2NbQT4+Ml09Sm0oY1tnPj4yXXwwLDAsMCl8MDtpZighKGNbQT4+Ml18MCkpY1tBPj4yXT1LbShjW2c+PjJdfDAsY1tqPj4yXXwwKXwwO2JyZWFrfWNhc2UgMTIxOmNhc2UgOTg6e2Nbdj4+Ml09KENtKGNbaj4+Ml18MCxhWyhjW2s+PjJdfDApKyhjW24+PjJdfDApPj4wXXwwKXwwKTw8MjtWUihjWyhjW2o+PjJdfDApKzI4Pj4yXXwwLDAsY1t2Pj4yXXwwKXwwO0xtKGNbKGNbZz4+Ml18MCkrMTI+PjJdfDAsY1tqPj4yXXwwKTticmVha31kZWZhdWx0OntjW3c+PjJdPWNbKGNbZz4+Ml18MCkrMTI+PjJdO2NbQT4+Ml09Sm0oY1tnPj4yXXwwLDAsMCl8MDtpZighKGNbQT4+Ml18MCkpe2lmKGNbaD4+Ml18MCl7aWYoKGNbKGNbZz4+Ml18MCkrMjQ+PjJdfDApIT0wPyhjW0E+PjJdPUhtKGNbeT4+Ml18MCx6LChjW2o+PjJdfDApKzE2fDAsMCl8MCwoY1tBPj4yXXwwKSE9MCk6MClicmVhayBhO2NbQT4+Ml09Tm0oY1t3Pj4yXXwwLDE1NCxjW2o+PjJdfDApfDA7T20oY1tnPj4yXXwwLEEpfDA7aWYoY1tBPj4yXXwwKWJyZWFrIGF9Tm0oY1t3Pj4yXXwwLDE1NSxjW2o+PjJdfDApfDB9fX13aGlsZSgwKTtlPUNtKGNbaj4+Ml18MCxhWyhjW2s+PjJdfDApKyhjW24+PjJdfDApPj4wXXwwKXwwO2Y9KGNbaj4+Ml18MCkrMjh8MDtjW2Y+PjJdPShjW2Y+PjJdfDApKyhlPDwyKTtjW24+PjJdPShjW24+PjJdfDApKzF9aWYoKGd8MCk9PTMxKXtZZChjW3o+PjJdfDApfDA7aT1CO3JldHVybiBjW0E+PjJdfDB9cmV0dXJuIDB9ZnVuY3Rpb24gR20oYSl7YT1hfDA7dmFyIGI9MCxkPTA7Yj1pO2k9aSsxNnwwO2Q9YjtjW2Q+PjJdPWE7Y1soY1tkPj4yXXwwKSs4Pj4yXT0xO1RSKChjW2Q+PjJdfDApKzE2KygyKyhjWyhjW2Q+PjJdfDApKzQ+PjJdfDApPDwyKXwwLChjW2Q+PjJdfDApKzE2KzR8MCxjWyhjW2Q+PjJdfDApKzQ+PjJdPDwyfDApfDA7aT1iO3JldHVybn1mdW5jdGlvbiBIbShhLGIsZCxlKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wO3A9aTtpPWkrNDh8MDtmPXArMzZ8MDtnPXArMzJ8MDtoPXArMjh8MDtqPXArMjR8MDtrPXArMjB8MDtuPXArMTZ8MDtsPXArMTJ8MDttPXA7bz1wKzh8MDtjW2c+PjJdPWE7Y1toPj4yXT1iO2Nbaj4+Ml09ZDtjW2s+PjJdPWU7aWYoKGNbY1toPj4yXT4+Ml18MCk9PTA/KGNbbz4+Ml09UG4oY1tnPj4yXXwwLGNbaD4+Ml18MCl8MCwoY1tvPj4yXXwwKSE9MCk6MCl7Y1tmPj4yXT1jW28+PjJdO289Y1tmPj4yXXwwO2k9cDtyZXR1cm4gb3wwfWNbbj4+Ml09Y1tjW2g+PjJdPj4yXTtjW2w+PjJdPXplKGNbbj4+Ml18MCwwKXwwO289X2woY1tsPj4yXXwwLG0pfDA7Y1tsPj4yXT0oY1tsPj4yXXwwKStvO289bTtpZigoY1tvPj4yXXwwKT09MCYoY1tvKzQ+PjJdfDApPT0wKXtjW2Y+PjJdPTI2NztvPWNbZj4+Ml18MDtpPXA7cmV0dXJuIG98MH1vPWNbaj4+Ml18MDtjW28+PjJdPWNbbT4+Ml07Y1tvKzQ+PjJdPTA7aWYoY1trPj4yXXwwKWNbY1trPj4yXT4+Ml09Y1tsPj4yXTtjW2Y+PjJdPTA7bz1jW2Y+PjJdfDA7aT1wO3JldHVybiBvfDB9ZnVuY3Rpb24gSW0oYSxiLGQsZSl7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MDtmPWk7aT1pKzE2fDA7aD1mKzEyfDA7aj1mO2c9Zis4fDA7Y1toPj4yXT1hO2E9ajtjW2E+PjJdPWI7Y1thKzQ+PjJdPWQ7Y1tnPj4yXT1lO2U9ajtlPU9uKGNbaD4+Ml18MCxjW2U+PjJdfDAsY1tlKzQ+PjJdfDAsY1tnPj4yXXwwKXwwO2k9ZjtyZXR1cm4gZXwwfWZ1bmN0aW9uIEptKGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTA7aj1pO2k9aSszMnwwO2s9aisyNHwwO2U9aisyMHwwO2Y9aisxNnwwO2c9aisxMnwwO2g9ajtjW2s+PjJdPWE7Y1tlPj4yXT1iO2NbZj4+Ml09ZDtjW2g+PjJdPTA7Y1toKzQ+PjJdPTA7Y1toKzg+PjJdPTA7Y1toPj4yXT1jW2s+PjJdO2NbZz4+Ml09Tm0oY1soY1trPj4yXXwwKSsxMj4+Ml18MCwxNTYsaCl8MDtpZihjW2U+PjJdfDApY1tjW2U+PjJdPj4yXT1jW2grND4+Ml07aWYoIShjW2Y+PjJdfDApKXtrPWNbZz4+Ml18MDtpPWo7cmV0dXJuIGt8MH1jW2NbZj4+Ml0+PjJdPWNbaCs4Pj4yXTtrPWNbZz4+Ml18MDtpPWo7cmV0dXJuIGt8MH1mdW5jdGlvbiBLbShhLGIpe2E9YXwwO2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTA7dD1pO2k9aSs2NHwwO3E9dCs1NnwwO2Q9dCs1MnwwO2U9dCs0OHwwO3I9dCs0NHwwO2Y9dCs0MHwwO2c9dCszNnwwO2w9dCszMnwwO289dCsyOHwwO2g9dCsyNHwwO2o9dCsyMHwwO3M9dCsxNnwwO249dCsxMnwwO209dCs4fDA7az10KzR8MDtwPXQ7Y1tkPj4yXT1hO2NbZT4+Ml09YjtjW2w+PjJdPTA7Y1tyPj4yXT1JZChjWyhjW2Q+PjJdfDApKzIwPj4yXTw8NCl8MDtpZighKGNbcj4+Ml18MCkpe2NbcT4+Ml09NztzPWNbcT4+Ml18MDtpPXQ7cmV0dXJuIHN8MH1WUihjW3I+PjJdfDAsMCxjWyhjW2Q+PjJdfDApKzIwPj4yXTw8NHwwKXwwO05tKGNbKGNbZD4+Ml18MCkrMTI+PjJdfDAsMTU3LGNbcj4+Ml18MCl8MDtjW2Y+PjJdPTA7d2hpbGUoMSl7aWYoKGNbZj4+Ml18MCk+PShjWyhjW2U+PjJdfDApKzg+PjJdfDApKWJyZWFrO2Nbbz4+Ml09KGNbcj4+Ml18MCkrKGNbZj4+Ml08PDQpO2NbbD4+Ml09KGNbbD4+Ml18MCktKGNbKGNbKGNbY1tvPj4yXT4+Ml18MCkrMjA+PjJdfDApKzY0Pj4yXXwwKTtjWyhjW28+PjJdfDApKzQ+PjJdPWNbbD4+Ml07Y1tmPj4yXT0oY1tmPj4yXXwwKSsxfWNbZz4+Ml09MDthOndoaWxlKDEpe2lmKChjW2c+PjJdfDApPj0oY1soY1tlPj4yXXwwKSs0Pj4yXXwwKSl7ZD0zMzticmVha31jW2g+PjJdPTA7Y1tqPj4yXT0wO2NbZj4+Ml09MDt3aGlsZSgxKXtpZigoY1tmPj4yXXwwKT49KGNbKGNbZT4+Ml18MCkrOD4+Ml18MCkpYnJlYWs7Y1tuPj4yXT0oY1tyPj4yXXwwKSsoY1tmPj4yXTw8NCk7Y1tzPj4yXT1RbShjW2Q+PjJdfDAsY1tjW24+PjJdPj4yXXwwLGNbZz4+Ml18MCwoY1tuPj4yXXwwKSs4fDApfDA7aWYoY1tzPj4yXXwwKXtkPTExO2JyZWFrIGF9aWYoY1soY1tuPj4yXXwwKSs4Pj4yXXwwKXtjWyhjW24+PjJdfDApKzEyPj4yXT1jWyhjW24+PjJdfDApKzQ+PjJdO01uKChjW3I+PjJdfDApKyhjW2Y+PjJdPDw0KXwwKXwwO2Nbaj4+Ml09KGNbaj4+Ml18MCkrMX1jW2Y+PjJdPShjW2Y+PjJdfDApKzF9d2hpbGUoMSl7aWYoKGNbaj4+Ml18MCk8PTApYnJlYWs7Y1ttPj4yXT0wO2Nbaz4+Ml09MDtjW2Y+PjJdPTA7d2hpbGUoMSl7aWYoKGNbZj4+Ml18MCk+PShjWyhjW2U+PjJdfDApKzg+PjJdfDApKWJyZWFrO2NbcD4+Ml09KGNbcj4+Ml18MCkrKGNbZj4+Ml08PDQpO2lmKGNbKGNbcD4+Ml18MCkrOD4+Ml18MCl7aWYoISgoY1ttPj4yXXwwKSE9MD8oY1soY1twPj4yXXwwKSsxMj4+Ml18MCk+PShjWyhjW20+PjJdfDApKzEyPj4yXXwwKTowKSljW20+PjJdPWNbcD4+Ml07aWYoKGNbaz4+Ml18MCkhPTA/KGNbKGNbcD4+Ml18MCkrMTI+PjJdfDApIT0oY1soY1twPj4yXXwwKSstMTYrMTI+PjJdfDApOjApY1trPj4yXT0xO2Vsc2UgY1trPj4yXT0oY1trPj4yXXwwKSsxO2lmKChjW2s+PjJdfDApPihjW2g+PjJdfDApKWNbaD4+Ml09Y1trPj4yXX1lbHNlIGNbaz4+Ml09MDtjW2Y+PjJdPShjW2Y+PjJdfDApKzF9aWYoIShNbihjW20+PjJdfDApfDApKWNvbnRpbnVlO2Nbaj4+Ml09KGNbaj4+Ml18MCkrLTF9Y1soY1soY1tlPj4yXXwwKSsyOD4+Ml18MCkrKGNbZz4+Ml08PDIpPj4yXT1jW2g+PjJdO2NbZz4+Ml09KGNbZz4+Ml18MCkrMX1pZigoZHwwKT09MTEpe2NbcT4+Ml09Y1tzPj4yXTtzPWNbcT4+Ml18MDtpPXQ7cmV0dXJuIHN8MH1lbHNlIGlmKChkfDApPT0zMyl7S2QoY1tyPj4yXXwwKTtjW3E+PjJdPTA7cz1jW3E+PjJdfDA7aT10O3JldHVybiBzfDB9cmV0dXJuIDB9ZnVuY3Rpb24gTG0oYSxiKXthPWF8MDtiPWJ8MDt2YXIgZT0wLGY9MCxnPTA7Zz1pO2k9aSsxNnwwO2U9Zys0fDA7Zj1nO2NbZT4+Ml09YTtjW2Y+PjJdPWI7aWYoZFsoY1tlPj4yXXwwKSszMj4+MF18MCl7aT1nO3JldHVybn1iPShjW2U+PjJdfDApKzI0fDA7YT0oY1tjW2Y+PjJdPj4yXXwwKSszMnwwO2lmKCEoKGNbYj4+Ml18MCk9PShjW2E+PjJdfDApPyhjW2IrND4+Ml18MCk9PShjW2ErND4+Ml18MCk6MCkpe2k9ZztyZXR1cm59Yj1jW2U+PjJdfDA7aWYoY1soY1tlPj4yXXwwKSsxMj4+Ml18MCl7TG0oY1tiKzEyPj4yXXwwLGNbZj4+Ml18MCk7TG0oY1soY1tlPj4yXXwwKSsxNj4+Ml18MCxjW2Y+PjJdfDApO2k9ZztyZXR1cm59ZWxzZXtLbihiLGNbZj4+Ml18MCk7aT1nO3JldHVybn19ZnVuY3Rpb24gTW0oYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wO2U9aTtpPWkrMTZ8MDtnPWUrMTJ8MDtoPWUrOHwwO2o9ZSs0fDA7Zj1lO2NbZz4+Ml09YTtjW2g+PjJdPWI7Y1tqPj4yXT1kO2NbZj4+Ml09Y1tqPj4yXTthPV8oKGNbaD4+Ml18MCkqM3wwLGNbKGNbZj4+Ml18MCkrND4+Ml18MCl8MDthPUhuKGNbY1tmPj4yXT4+Ml18MCxjW2c+PjJdfDAsKGNbKGNbZj4+Ml18MCkrMjg+PjJdfDApKyhhPDwyKXwwKXwwO2k9ZTtyZXR1cm4gYXwwfWZ1bmN0aW9uIE5tKGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MDtlPWk7aT1pKzE2fDA7aj1lKzEyfDA7Zz1lKzh8MDtmPWUrNHwwO2g9ZTtjW2o+PjJdPWE7Y1tnPj4yXT1iO2NbZj4+Ml09ZDtjW2g+PjJdPTA7Yj1HbihjW2o+PjJdfDAsaCxjW2c+PjJdfDAsY1tmPj4yXXwwKXwwO2k9ZTtyZXR1cm4gYnwwfWZ1bmN0aW9uIE9tKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTA7aD1pO2k9aSsxNnwwO2Q9aCsxMnwwO2U9aCs4fDA7Zz1oKzR8MDtmPWg7Y1tkPj4yXT1hO2NbZT4+Ml09YjtjW2c+PjJdPWNbY1tlPj4yXT4+Ml07Y1tmPj4yXT0wO2lmKGNbZz4+Ml18MCl7Yj1jW2c+PjJdfDA7Yj0oYnwwKT09MDtnPWNbZj4+Ml18MDtnPShnfDApIT0wO2c9Yj9nOjA7Zz1nJjE7aT1oO3JldHVybiBnfDB9aWYoKGNbKGNbZD4+Ml18MCkrMjQ+PjJdfDApIT0wPyhjW2c+PjJdPXRuKDAsY1tkPj4yXXwwKXwwLChjW2c+PjJdfDApPT0wKTowKWNbZz4+Ml09dW4oY1tkPj4yXXwwKXwwO2NbZj4+Ml09MD09KHZuKGNbZD4+Ml18MCxjWyhjW2Q+PjJdfDApKzEyPj4yXXwwLGcpfDApJjE7d24oY1tkPj4yXXwwKTtjW2NbZT4+Ml0+PjJdPWNbZz4+Ml07Yj1jW2c+PjJdfDA7Yj0oYnwwKT09MDtnPWNbZj4+Ml18MDtnPShnfDApIT0wO2c9Yj9nOjA7Zz1nJjE7aT1oO3JldHVybiBnfDB9ZnVuY3Rpb24gUG0oYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MDtsPWk7aT1pKzMyfDA7ZT1sKzI4fDA7bT1sKzI0fDA7bj1sKzIwfDA7az1sKzE2fDA7aD1sKzEyfDA7Zz1sKzh8MDtmPWwrNHwwO2o9bDtjW2U+PjJdPWE7Y1ttPj4yXT1iO2Nbbj4+Ml09ZDtjW2s+PjJdPTA7Y1toPj4yXT1jW24+PjJdO2NbZz4+Ml09KF8oY1ttPj4yXXwwLGNbKGNbaD4+Ml18MCkrND4+Ml18MCl8MCkqMztjW2Y+PjJdPTA7d2hpbGUoMSl7aWYoISgoY1tmPj4yXXwwKTwoY1soY1toPj4yXXwwKSs0Pj4yXXwwKT8oY1trPj4yXXwwKT09MDowKSlicmVhaztjW2s+PjJdPVFtKGNbY1toPj4yXT4+Ml18MCxjW2U+PjJdfDAsY1tmPj4yXXwwLGopfDA7aWYoY1tqPj4yXXwwKXtuPVJtKGopfDA7Y1soY1soY1toPj4yXXwwKSsyOD4+Ml18MCkrKChjW2c+PjJdfDApKygoY1tmPj4yXXwwKSozfDApPDwyKT4+Ml09bn1lbHNlIGNbKGNbKGNbaD4+Ml18MCkrMjg+PjJdfDApKygoY1tnPj4yXXwwKSsoKGNbZj4+Ml18MCkqM3wwKTw8Mik+PjJdPTA7Y1tmPj4yXT0oY1tmPj4yXXwwKSsxfWk9bDtyZXR1cm4gY1trPj4yXXwwfWZ1bmN0aW9uIFFtKGIsZSxmLGcpe2I9YnwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO3ZhciBoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEQ9MCxFPTAsRj0wLEc9MDtHPWk7aT1pKzk2fDA7ej1HKzgwfDA7cD1HKzc2fDA7aD1HKzcyfDA7QT1HKzY4fDA7Qj1HKzY0fDA7eD1HKzYwfDA7bj1HKzU2fDA7RT1HKzUyfDA7RD1HKzQ4fDA7dT1HO289Rys0NHwwO3E9Rys0MHwwO2s9RyszNnwwO2w9Rys4NXwwO3Y9RyszMnwwO209RysyOHwwO3M9RysyNHwwO2o9RysyMHwwO3I9Rys4NHwwO3k9RysxNnwwO3c9RysxMnwwO3Q9Rys4fDA7Y1twPj4yXT1iO2NbaD4+Ml09ZTtjW0E+PjJdPWY7Y1tCPj4yXT1nO2NbeD4+Ml09Y1soY1toPj4yXXwwKSsyMD4+Ml07Y1tuPj4yXT1jW2NbcD4+Ml0+PjJdO2NbY1tCPj4yXT4+Ml09MDtpZigoY1soY1t4Pj4yXXwwKSs2OD4+Ml18MCk8KGNbKGNbbj4+Ml18MCkrMjQ+PjJdfDApPyhjWyhjW3g+PjJdfDApKzY4Pj4yXXwwKSE9KGNbQT4+Ml18MCk6MCl7Y1t6Pj4yXT0wO0Y9Y1t6Pj4yXXwwO2k9RztyZXR1cm4gRnwwfWI9KGNbaD4+Ml18MCkrMjR8MDtnPWNbYis0Pj4yXXwwO2U9dTtjW2U+PjJdPWNbYj4+Ml07Y1tlKzQ+PjJdPWc7Y1tFPj4yXT1jWyhjW3g+PjJdfDApKzI4Pj4yXTtlPXU7Zz0oY1twPj4yXXwwKSszMnwwO2lmKCEoISgoY1tlPj4yXXwwKSE9KGNbZz4+Ml18MCk/MTooY1tlKzQ+PjJdfDApIT0oY1tnKzQ+PjJdfDApKT8oZFsoY1toPj4yXXwwKSszMj4+MF18MCk9PTA6MCkpRj02O2RvIGlmKChGfDApPT02KXtjW28+PjJdPTA7Y1txPj4yXT1kWyhjW24+PjJdfDApKzIzMT4+MF07Y1trPj4yXT0wO2FbbD4+MF09MDtjW20+PjJdPWNbaD4+Ml07Y1t2Pj4yXT1jWyhjW2g+PjJdfDApKzg+PjJdO3doaWxlKDEpe2lmKCEoY1t2Pj4yXXwwKSlicmVhaztpZigoY1tjW3Y+PjJdPj4yXXwwKT09NCljW2s+PjJdPTE7aWYoKGNbY1t2Pj4yXT4+Ml18MCk9PTEpY1ttPj4yXT1jW3Y+PjJdO2lmKGFbKGNbdj4+Ml18MCkrMzI+PjBdfDApYVtsPj4wXT0xO2Nbdj4+Ml09Y1soY1t2Pj4yXXwwKSs4Pj4yXX1pZighKGNbaz4+Ml18MCkpe2Nbej4+Ml09MDtGPWNbej4+Ml18MDtpPUc7cmV0dXJuIEZ8MH1hOmRvIGlmKGNbKGNbeD4+Ml18MCkrNDA+PjJdfDApe2Nbaj4+Ml09ZFsoY1ttPj4yXXwwKSszMj4+MF07U20oY1twPj4yXXwwLGNbbT4+Ml18MCxvKTtiOndoaWxlKDEpe2lmKGNbbz4+Ml18MClicmVhayBhO3doaWxlKDEpe2lmKCEoKGFbKGNbbT4+Ml18MCkrMzI+PjBdfDApIT0wXjEpKWJyZWFrIGE7VG0oY1twPj4yXXwwLGNbbT4+Ml18MCxvKTtpZihjW2o+PjJdfDApY29udGludWUgYjtuPShjW20+PjJdfDApKzI0fDA7Zz11O2lmKCEoKChjW24+PjJdfDApIT0oY1tnPj4yXXwwKT8xOihjW24rND4+Ml18MCkhPShjW2crND4+Ml18MCkpJihjW28+PjJdfDApPT0wKSlicmVhayBhfX19d2hpbGUoMCk7YzpkbyBpZigoYVtsPj4wXXwwKSE9MCYoY1tvPj4yXXwwKT09MClkb3tpZighKChhWyhjW20+PjJdfDApKzMyPj4wXXwwKSE9MF4xKSlicmVhayBjO1RtKGNbcD4+Ml18MCxjW20+PjJdfDAsbyl9d2hpbGUoKGNbbz4+Ml18MCk9PTApO3doaWxlKDApO2lmKGNbbz4+Ml18MCl7Y1t6Pj4yXT1jW28+PjJdO0Y9Y1t6Pj4yXXwwO2k9RztyZXR1cm4gRnwwfWNbcz4+Ml09MTtjW3Y+PjJdPWNbbT4+Ml07d2hpbGUoMSl7aWYoIShjW3Y+PjJdfDApKWJyZWFrO2Fbcj4+MF09MDtjW3k+PjJdPWNbdj4+Ml07aWYoKGNbY1t5Pj4yXT4+Ml18MCk9PTEpY1t5Pj4yXT1jWyhjW3k+PjJdfDApKzE2Pj4yXTtjW3c+PjJdPWNbKGNbeT4+Ml18MCkrMjA+PjJdO2NbRT4+Ml09Y1soY1t3Pj4yXXwwKSs0OD4+Ml07Zz0oY1t3Pj4yXXwwKSs1NnwwO289Y1tnKzQ+PjJdfDA7aD11O2NbaD4+Ml09Y1tnPj4yXTtjW2grND4+Ml09bztoPShjWyhjW3c+PjJdfDApKzQ+PjJdfDApIT0wO2Q6ZG8gaWYoKGRbKGNbcD4+Ml18MCkrNTI+PjBdfDApPT0oY1txPj4yXXwwKSl7aWYoaCloPShjW0U+PjJdfDApPj4+MD49KChjW2Nbdz4+Ml0+PjJdfDApKyhjWyhjW3c+PjJdfDApKzQ+PjJdfDApfDApPj4+MDtlbHNlIGg9MTthW3I+PjBdPWgmMTt3aGlsZSgxKXtpZigoY1tFPj4yXXwwKSE9MD8oZz0oY1txPj4yXXwwKSE9MD8tMToxLG49dSxvPShjW3A+PjJdfDApKzMyfDAsbz1RUihjW24+PjJdfDAsY1tuKzQ+PjJdfDAsY1tvPj4yXXwwLGNbbys0Pj4yXXwwKXwwLGFTKGd8MCwoKGd8MCk8MCk8PDMxPj4zMXwwLG98MCxDfDApfDAsKEN8MCk+PTApOjApYnJlYWsgZDtpZihkW3I+PjBdfDApYnJlYWsgZDtVbShjW3E+PjJdfDAsY1tjW3c+PjJdPj4yXXwwLGNbKGNbdz4+Ml18MCkrND4+Ml18MCxFLHUscil9fWVsc2V7aWYoaClpZihjW0U+PjJdfDApaD0oY1tFPj4yXXwwKT4+PjA8PShjW2Nbdz4+Ml0+PjJdfDApPj4+MDtlbHNlIGg9MDtlbHNlIGg9MTthW3I+PjBdPWgmMTt3aGlsZSgxKXtpZigoY1tFPj4yXXwwKSE9MD8oZz0oY1txPj4yXXwwKSE9MD8tMToxLG49dSxvPShjW3A+PjJdfDApKzMyfDAsbz1RUihjW24+PjJdfDAsY1tuKzQ+PjJdfDAsY1tvPj4yXXwwLGNbbys0Pj4yXXwwKXwwLG89YVMoZ3wwLCgoZ3wwKTwwKTw8MzE+PjMxfDAsb3wwLEN8MCl8MCxnPUMsISgoZ3wwKT4wfChnfDApPT0wJm8+Pj4wPjApKTowKWJyZWFrIGQ7aWYoZFtyPj4wXXwwKWJyZWFrIGQ7YW0oY1txPj4yXXwwLGNbY1t3Pj4yXT4+Ml18MCxjWyhjW3c+PjJdfDApKzQ+PjJdfDAsRSx1LHQscil9fXdoaWxlKDApO2NbKGNbdz4+Ml18MCkrNDg+PjJdPWNbRT4+Ml07bj11O2c9Y1tuKzQ+PjJdfDA7bz0oY1t3Pj4yXXwwKSs1NnwwO2Nbbz4+Ml09Y1tuPj4yXTtjW28rND4+Ml09ZztpZighKChkW3I+PjBdfDApPT0wPyhnPXUsbz0oY1twPj4yXXwwKSszMnwwLCEoKGNbZz4+Ml18MCkhPShjW28+PjJdfDApPzE6KGNbZys0Pj4yXXwwKSE9KGNbbys0Pj4yXXwwKSkpOjApKWNbcz4+Ml09MDtjW3Y+PjJdPWNbKGNbdj4+Ml18MCkrMTI+PjJdfWlmKGNbcz4+Ml18MCl7Y1tFPj4yXT1jWyhjW3g+PjJdfDApKzQ4Pj4yXTticmVha31lbHNle2NbRT4+Ml09MDticmVha319d2hpbGUoMCk7aWYoIShjW0U+PjJdfDApKXtjW3o+PjJdPTA7Rj1jW3o+PjJdfDA7aT1HO3JldHVybiBGfDB9aWYoKGFbY1tFPj4yXT4+MF18MCk9PTEpe2NbRT4+Ml09KGNbRT4+Ml18MCkrMTtoPWNbRT4+Ml18MDtpZihkW2NbRT4+Ml0+PjBdJjEyOCloPSRsKGgsRCl8MDtlbHNle2NbRD4+Ml09ZFtoPj4wXTtoPTF9Y1tFPj4yXT0oY1tFPj4yXXwwKStofWVsc2UgY1tEPj4yXT0wO3doaWxlKDEpe2lmKChjW0Q+PjJdfDApPj0oY1tBPj4yXXwwKSlicmVhaztabCgwLEUpO2lmKCEoYVtjW0U+PjJdPj4wXXwwKSl7Rj02NTticmVha31jW0U+PjJdPShjW0U+PjJdfDApKzE7aD1jW0U+PjJdfDA7aWYoZFtjW0U+PjJdPj4wXSYxMjgpaD0kbChoLEQpfDA7ZWxzZXtjW0Q+PjJdPWRbaD4+MF07aD0xfWNbRT4+Ml09KGNbRT4+Ml18MCkraH1pZigoRnwwKT09NjUpe2Nbej4+Ml09MDtGPWNbej4+Ml18MDtpPUc7cmV0dXJuIEZ8MH1pZighKGFbY1tFPj4yXT4+MF18MCkpY1tFPj4yXT0wO2NbY1tCPj4yXT4+Ml09KGNbQT4+Ml18MCk9PShjW0Q+PjJdfDApP2NbRT4+Ml18MDowO2Nbej4+Ml09MDtGPWNbej4+Ml18MDtpPUc7cmV0dXJuIEZ8MH1mdW5jdGlvbiBSbShiKXtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MDtoPWk7aT1pKzE2fDA7ZD1oKzh8MDtnPWgrNHwwO2U9aCsxMnwwO2Y9aDtjW2Q+PjJdPWI7Y1tnPj4yXT1jW2NbZD4+Ml0+PjJdO2FbZT4+MF09MDtjW2Y+PjJdPTA7d2hpbGUoMSl7Yj1jW2c+PjJdfDA7aWYoISgyNTQmKGFbY1tnPj4yXT4+MF18YVtlPj4wXSkpKWJyZWFrO2NbZz4+Ml09YisxO2FbZT4+MF09YVtiPj4wXSYxMjg7aWYoYVtlPj4wXXwwKWNvbnRpbnVlO2NbZj4+Ml09KGNbZj4+Ml18MCkrMX1jW2NbZD4+Ml0+PjJdPWI7aT1oO3JldHVybiBjW2Y+PjJdfDB9ZnVuY3Rpb24gU20oYixkLGUpe2I9YnwwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTA7bT1pO2k9aSszMnwwO2Y9bSsyMHwwO2c9bSsxNnwwO2g9bSsxMnwwO2s9bSs4fDA7aj1tKzR8MDtsPW07Y1tmPj4yXT1iO2NbZz4+Ml09ZDtjW2g+PjJdPWU7aWYoIShjW2c+PjJdfDApKXtpPW07cmV0dXJufWlmKGNbY1toPj4yXT4+Ml18MCl7aT1tO3JldHVybn1jW2s+PjJdPWNbKGNbZz4+Ml18MCkrMjA+PjJdO2lmKGNbaz4+Ml18MCl7Vm0oY1trPj4yXXwwKTtpZihjWyhjW2s+PjJdfDApKzQwPj4yXXwwKXtjW2o+PjJdPTA7d2hpbGUoMSl7aWYoKGNbaj4+Ml18MCk+PShjWyhjW2s+PjJdfDApKzY0Pj4yXXwwKSlicmVhaztjW2w+PjJdPShjW2s+PjJdfDApKzcyKygoY1tqPj4yXXwwKSoyNHwwKTtpZihjWyhjW2w+PjJdfDApKzIwPj4yXXwwKWNuKGNbKGNbbD4+Ml18MCkrMjA+PjJdfDApfDA7Y1tqPj4yXT0oY1tqPj4yXXwwKSsxfWw9ZG4oY1tmPj4yXXwwLDAsY1trPj4yXXwwKXwwO2NbY1toPj4yXT4+Ml09bH1jWyhjW2s+PjJdfDApKzg+PjJdPTA7bD0oY1trPj4yXXwwKSsxNnwwO2NbbD4+Ml09MDtjW2wrND4+Ml09MDtjWyhjW2s+PjJdfDApKzQ4Pj4yXT0wfWw9KGNbZz4+Ml18MCkrMjR8MDtjW2w+PjJdPTA7Y1tsKzQ+PjJdPTA7YVsoY1tnPj4yXXwwKSszMj4+MF09MDthWyhjW2c+PjJdfDApKzMzPj4wXT0wO1NtKGNbZj4+Ml18MCxjWyhjW2c+PjJdfDApKzEyPj4yXXwwLGNbaD4+Ml18MCk7U20oY1tmPj4yXXwwLGNbKGNbZz4+Ml18MCkrMTY+PjJdfDAsY1toPj4yXXwwKTtpPW07cmV0dXJufVxuZnVuY3Rpb24gUnAoYixkKXtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wO2s9aTtpPWkrMzJ8MDtmPWsrMTZ8MDtsPWsrMTJ8MDtnPWsrOHwwO2g9ays0fDA7aj1rO2U9aysyMHwwO2NbbD4+Ml09YjtjW2c+PjJdPWQ7Y1tqPj4yXT0wO2NbaD4+Ml09Y1tsPj4yXTthOndoaWxlKDEpe2lmKGNbaj4+Ml18MCl7ZD0yMTticmVha31hW2U+PjBdPWFbY1toPj4yXT4+MF18MDtzd2l0Y2goYVtlPj4wXXwwKXtjYXNlIDA6e2Q9NDticmVhayBhfWNhc2UgOTY6Y2FzZSAzNDpjYXNlIDM5OntjW2o+PjJdPWNbaD4+Ml07d2hpbGUoMSl7bD0oY1tqPj4yXXwwKSsxfDA7Y1tqPj4yXT1sO2lmKCEoYVtsPj4wXXwwKSljb250aW51ZSBhO2lmKChhW2Nbaj4+Ml0+PjBdfDApIT0oYVtlPj4wXXwwKSljb250aW51ZTtsPShjW2o+PjJdfDApKzF8MDtjW2o+PjJdPWw7aWYoKGFbbD4+MF18MCkhPShhW2U+PjBdfDApKWNvbnRpbnVlIGF9fWNhc2UgOTE6e2Nbaj4+Ml09KGNbaD4+Ml18MCkrMTt3aGlsZSgxKXtpZihhW2Nbaj4+Ml0+PjBdfDApYj0oYVtjW2o+PjJdPj4wXXwwKSE9OTM7ZWxzZSBiPTA7ZD1jW2o+PjJdfDA7aWYoIWIpYnJlYWs7Y1tqPj4yXT1kKzF9aWYoIShhW2Q+PjBdfDApKWNvbnRpbnVlIGE7Y1tqPj4yXT0oY1tqPj4yXXwwKSsxO2NvbnRpbnVlIGF9ZGVmYXVsdDp7bD0oTXAoYVtjW2g+PjJdPj4wXXwwKXwwKSE9MDtkPShjW2g+PjJdfDApKzF8MDtpZighbCl7Y1toPj4yXT1kO2NvbnRpbnVlIGF9Y1tqPj4yXT1kO3doaWxlKDEpe2lmKCEoTXAoYVtjW2o+PjJdPj4wXXwwKXwwKSljb250aW51ZSBhO2Nbaj4+Ml09KGNbaj4+Ml18MCkrMX19fX1pZigoZHwwKT09NCl7Y1tmPj4yXT0wO2w9Y1tmPj4yXXwwO2k9aztyZXR1cm4gbHwwfWVsc2UgaWYoKGR8MCk9PTIxKXtjW2NbZz4+Ml0+PjJdPShjW2o+PjJdfDApLShjW2g+PjJdfDApO2NbZj4+Ml09Y1toPj4yXTtsPWNbZj4+Ml18MDtpPWs7cmV0dXJuIGx8MH1yZXR1cm4gMH1mdW5jdGlvbiBTcChhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wO3Q9aTtpPWkrOTZ8MDtyPXQrNTZ8MDtsPXQrNDh8MDtrPXQrNDB8MDtuPXQrMzJ8MDttPXQrMjR8MDtqPXQrOHwwO2g9dDtxPXQrOTJ8MDtlPXQrODh8MDtmPXQrODR8MDtzPXQrODB8MDtvPXQrNzZ8MDtwPXQrNzJ8MDtnPXQrNjh8MDtjW3E+PjJdPWE7Y1tlPj4yXT1iO2NbZj4+Ml09ZDtjW3M+PjJdPTA7Y1tvPj4yXT0wO2lmKGNbKGNbcT4+Ml18MCkrNDA+PjJdfDApe1lwKGNbZj4+Ml18MCxzLDI0NzQ1LG4pO2NbZz4+Ml09MDt3aGlsZSgxKXtpZigoY1tnPj4yXXwwKT49KGNbKGNbcT4+Ml18MCkrMjQ+PjJdfDApKWJyZWFrO3A9Y1tmPj4yXXwwO2Nbaz4+Ml09Y1soY1soY1txPj4yXXwwKSsyOD4+Ml18MCkrKGNbZz4+Ml08PDIpPj4yXTtZcChwLHMsMjQ3NTEsayk7Y1tnPj4yXT0oY1tnPj4yXXwwKSsxfWlmKGNbKGNbcT4+Ml18MCkrNDQ+PjJdfDApe3A9Y1tmPj4yXXwwO2NbbD4+Ml09Y1soY1txPj4yXXwwKSs0ND4+Ml07WXAocCxzLDI0NzMxLGwpfX1lbHNle2lmKGNbZT4+Ml18MCl7Yj1YcChjW2U+PjJdfDApfDA7Y1twPj4yXT1iO2Nbbz4+Ml09Yn1lbHNlIGNbcD4+Ml09MTg0MDI7WXAoY1tmPj4yXXwwLHMsMjQ3MTAsaCk7Y1tnPj4yXT0wO3doaWxlKDEpe2lmKChjW2c+PjJdfDApPj0oY1soY1txPj4yXXwwKSsyND4+Ml18MCkpYnJlYWs7Yj1jW2Y+PjJdfDA7bD1jW2c+PjJdfDA7bj1jWyhjWyhjW3E+PjJdfDApKzI4Pj4yXXwwKSsoY1tnPj4yXTw8Mik+PjJdfDA7Y1tqPj4yXT1jW3A+PjJdO2Nbais0Pj4yXT1sO2Nbais4Pj4yXT1uO1lwKGIscywyNDcxNixqKTtjW2c+PjJdPShjW2c+PjJdfDApKzF9aWYoY1soY1txPj4yXXwwKSs0ND4+Ml18MCl7cD1jW2Y+PjJdfDA7Y1ttPj4yXT0yNDczODtZcChwLHMsMjQ3MzEsbSl9S2QoY1tvPj4yXXwwKX1lPWNbZj4+Ml18MDtmPWNbKGNbcT4+Ml18MCkrMTY+PjJdfDA7Zz1jW3E+PjJdfDA7aWYoY1soY1txPj4yXXwwKSs0MD4+Ml18MCl7Yj1jW2crNDA+PjJdfDA7cD1jW3E+PjJdfDA7cD1wKzQwfDA7cD1jW3A+PjJdfDA7cD0ocHwwKSE9MDtwPXA/MTg0MDI6MjQ3NjA7Y1tyPj4yXT1mO3E9cis0fDA7Y1txPj4yXT1iO3E9cis4fDA7Y1txPj4yXT1wO1lwKGUscywyNDc2OSxyKTtzPWNbcz4+Ml18MDtpPXQ7cmV0dXJuIHN8MH1lbHNle2I9Y1tnKzIwPj4yXXwwO3A9Y1txPj4yXXwwO3A9cCs0MHwwO3A9Y1twPj4yXXwwO3A9KHB8MCkhPTA7cD1wPzE4NDAyOjI0NzYwO2Nbcj4+Ml09ZjtxPXIrNHwwO2NbcT4+Ml09YjtxPXIrOHwwO2NbcT4+Ml09cDtZcChlLHMsMjQ3Njkscik7cz1jW3M+PjJdfDA7aT10O3JldHVybiBzfDB9cmV0dXJuIDB9ZnVuY3Rpb24gVHAoYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTA7bz1pO2k9aSs0OHwwO2s9bysxNnwwO2o9bys4fDA7ZT1vKzQ0fDA7Zj1vKzQwfDA7Zz1vKzM2fDA7bj1vKzMyfDA7bD1vKzI4fDA7bT1vKzI0fDA7aD1vKzIwfDA7Y1tlPj4yXT1hO2NbZj4+Ml09YjtjW2c+PjJdPWQ7Y1tuPj4yXT0wO2NbbD4+Ml09MDtpZihjW2Y+PjJdfDApe2I9WHAoY1tmPj4yXXwwKXwwO2NbbT4+Ml09YjtjW2w+PjJdPWJ9ZWxzZSBjW20+PjJdPTE4NDAyO1lwKGNbZz4+Ml18MCxuLDIwMjc1LG8pO2NbaD4+Ml09MDt3aGlsZSgxKXtpZigoY1toPj4yXXwwKT49KGNbKGNbZT4+Ml18MCkrMjQ+PjJdfDApKWJyZWFrO2I9Y1tnPj4yXXwwO2Nbaj4+Ml09Y1ttPj4yXTtZcChiLG4sMjQ2OTQsaik7Y1toPj4yXT0oY1toPj4yXXwwKSsxfWlmKCEoY1soY1tlPj4yXXwwKSs0ND4+Ml18MCkpe209Y1tsPj4yXXwwO0tkKG0pO249Y1tuPj4yXXwwO2k9bztyZXR1cm4gbnwwfVlwKGNbZz4+Ml18MCxuLDI0NzAxLGspO209Y1tsPj4yXXwwO0tkKG0pO249Y1tuPj4yXXwwO2k9bztyZXR1cm4gbnwwfWZ1bmN0aW9uIFVwKGIpe2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MDtyPWk7aT1pKzExMnwwO209cis2NHwwO2s9cis1NnwwO2o9cis0OHwwO2g9ciszMnwwO249cisyNHwwO2w9cis4fDA7ZD1yKzk2fDA7Zz1yKzkyfDA7Zj1yKzg4fDA7ZT1yKzg0fDA7cT1yKzgwfDA7cD1yKzc2fDA7bz1yKzcyfDA7Y1tkPj4yXT1iO2NbZz4+Ml09MDtjW2U+PjJdPWNbKGNbZD4+Ml18MCkrMTI+PjJdO2lmKCEoY1soY1tkPj4yXXwwKSs0MD4+Ml18MCkpe2NbcT4+Ml09Y1soY1tkPj4yXXwwKSs0ND4+Ml07Y1twPj4yXT1PZCgyNDMxOSxyKXwwO2NbZj4+Ml09MDt3aGlsZSgxKXtpZighKGNbcD4+Ml18MCkpYnJlYWs7aWYoKGNbZj4+Ml18MCk+PShjWyhjW2Q+PjJdfDApKzI0Pj4yXXwwKSlicmVhaztjW28+PjJdPWNbKGNbKGNbZD4+Ml18MCkrMjg+PjJdfDApKyhjW2Y+PjJdPDwyKT4+Ml07cz1jW2Y+PjJdfDA7Yj1jW28+PjJdfDA7Y1tsPj4yXT1jW3A+PjJdO2NbbCs0Pj4yXT1zO2NbbCs4Pj4yXT1iO2NbcD4+Ml09T2QoMjQzNDUsbCl8MDtjW2Y+PjJdPShjW2Y+PjJdfDApKzF9aWYoKGNbcT4+Ml18MCkhPTAmKGNbcD4+Ml18MCkhPTApe3M9Y1txPj4yXXwwO2Nbbj4+Ml09Y1twPj4yXTtjW24rND4+Ml09cztjW3A+PjJdPU9kKDI0MzU3LG4pfDB9aWYoIShjW3A+PjJdfDApKWNbZz4+Ml09NztzPWNbZT4+Ml18MDtvPWNbKGNbZD4+Ml18MCkrMjA+PjJdfDA7cT1jW3A+PjJdfDA7Y1toPj4yXT1jWyhjW2Q+PjJdfDApKzE2Pj4yXTtjW2grND4+Ml09bztjW2grOD4+Ml09cTtubChnLHMsMjQzNjgsaCk7S2QoY1twPj4yXXwwKX1zPWNbZT4+Ml18MDtxPWNbKGNbZD4+Ml18MCkrMjA+PjJdfDA7Y1tqPj4yXT1jWyhjW2Q+PjJdfDApKzE2Pj4yXTtjW2orND4+Ml09cTtubChnLHMsMjQ0MDEsaik7cz1jW2U+PjJdfDA7cT1jWyhjW2Q+PjJdfDApKzIwPj4yXXwwO2Nbaz4+Ml09Y1soY1tkPj4yXXwwKSsxNj4+Ml07Y1trKzQ+PjJdPXE7bmwoZyxzLDI0NDczLGspO2lmKGFbKGNbZD4+Ml18MCkrMjMwPj4wXXwwKXtzPWNbZT4+Ml18MDtxPWNbKGNbZD4+Ml18MCkrMjA+PjJdfDA7Y1ttPj4yXT1jWyhjW2Q+PjJdfDApKzE2Pj4yXTtjW20rND4+Ml09cTtubChnLHMsMjQ2MjYsbSl9aWYoIShhWyhjW2Q+PjJdfDApKzIyOT4+MF18MCkpe3M9Y1tnPj4yXXwwO2k9cjtyZXR1cm4gc3wwfWJwKGcsY1tkPj4yXXwwKTtzPWNbZz4+Ml18MDtpPXI7cmV0dXJuIHN8MH1mdW5jdGlvbiBWcChhLGIpe2E9YXwwO2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTA7az1pO2k9aSszMnwwO2g9aztkPWsrMjB8MDtlPWsrMTZ8MDtnPWsrMTJ8MDtqPWsrOHwwO2Y9ays0fDA7Y1tkPj4yXT1hO2NbZT4+Ml09YjtpZihjW2NbZD4+Ml0+PjJdfDApe2k9aztyZXR1cm59Y1toPj4yXT1jWyhjW2U+PjJdfDApKzE2Pj4yXTtjW2o+PjJdPU9kKDI0Mjk5LGgpfDA7ZG8gaWYoY1tqPj4yXXwwKXtjW2c+PjJdPWNmKGNbKGNbZT4+Ml18MCkrMTI+PjJdfDAsY1tqPj4yXXwwLC0xLGYsMCl8MDtpZighKGNbZz4+Ml18MCkpe3RlKGNbZj4+Ml18MCl8MDtoPUNlKGNbZj4+Ml18MCwwKXwwO2NbKGNbZT4+Ml18MCkrMjM2Pj4yXT1oO2NbZz4+Ml09WGQoY1tmPj4yXXwwKXwwO2JyZWFrfWlmKChjW2c+PjJdfDApPT0yMyl7Y1soY1tlPj4yXXwwKSsyMzY+PjJdPTEwMjQ7Y1tnPj4yXT0wfX1lbHNlIGNbZz4+Ml09Nzt3aGlsZSgwKTtLZChjW2o+PjJdfDApO2NbY1tkPj4yXT4+Ml09Y1tnPj4yXTtpPWs7cmV0dXJufWZ1bmN0aW9uIFdwKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wO3A9aTtpPWkrNjR8MDtsPXArMjR8MDtrPXArMTZ8MDtlPXArOHwwO2Q9cDtmPXArNjB8MDtnPXArNTZ8MDtoPXArNTJ8MDtqPXArNDh8MDtvPXArNDR8MDttPXArNDB8MDtuPXArMzZ8MDtjW2Y+PjJdPWE7Y1tnPj4yXT1iO2lmKGNbY1tmPj4yXT4+Ml18MCl7aT1wO3JldHVybn1pZihjWyhjW2c+PjJdfDApKzQ0Pj4yXXwwKWI9Y1soY1tnPj4yXXwwKSs0ND4+Ml18MDtlbHNlIGI9MjQyMjQ7Y1tuPj4yXT1iO2E9Y1soY1tnPj4yXXwwKSsxMj4+Ml18MDtjW2Q+PjJdPTE7aGYoYSwxLGQpfDA7Y1tlPj4yXT1jW2NbKGNbZz4+Ml18MCkrMjg+PjJdPj4yXTtjW20+PjJdPU9kKDI0MjMzLGUpfDA7Y1toPj4yXT0xO3doaWxlKDEpe2lmKGNbbT4+Ml18MClhPShjW2g+PjJdfDApPChjWyhjW2c+PjJdfDApKzI0Pj4yXXwwKTtlbHNlIGE9MDtiPWNbbT4+Ml18MDtpZighYSlicmVhaztlPWNbKGNbKGNbZz4+Ml18MCkrMjg+PjJdfDApKyhjW2g+PjJdPDwyKT4+Ml18MDtjW2s+PjJdPWI7Y1trKzQ+PjJdPWU7Y1ttPj4yXT1PZCgyNDIzOCxrKXwwO2NbaD4+Ml09KGNbaD4+Ml18MCkrMX1rPWNbKGNbZz4+Ml18MCkrMjA+PjJdfDA7bj1jW24+PjJdfDA7Y1tsPj4yXT1iO2NbbCs0Pj4yXT1rO2NbbCs4Pj4yXT1uO2Nbbz4+Ml09T2QoMjQyNDUsbCl8MDtpZigoY1ttPj4yXXwwKSE9MCYoY1tvPj4yXXwwKSE9MCljW2o+PjJdPWZmKGNbKGNbZz4+Ml18MCkrMTI+PjJdfDAsY1tvPj4yXXwwKXwwO2Vsc2UgY1tqPj4yXT03O0tkKGNbbz4+Ml18MCk7S2QoY1ttPj4yXXwwKTtjW2NbZj4+Ml0+PjJdPWNbaj4+Ml07aT1wO3JldHVybn1mdW5jdGlvbiBYcChiKXtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTA7aD1pO2k9aSszMnwwO2Q9aCsxNnwwO2o9aCsxMnwwO2c9aCs4fDA7ZT1oKzR8MDtmPWg7Y1tkPj4yXT1iO2Nbaj4+Ml09MisoKGtSKGNbZD4+Ml18MCl8MCk8PDEpKzE7Y1tnPj4yXT1JZChjW2o+PjJdfDApfDA7aWYoIShjW2c+PjJdfDApKXtqPWNbZz4+Ml18MDtpPWg7cmV0dXJuIGp8MH1jW2Y+PjJdPWNbZz4+Ml07aj1jW2Y+PjJdfDA7Y1tmPj4yXT1qKzE7YVtqPj4wXT0zNDtjW2U+PjJdPTA7d2hpbGUoMSl7aWYoIShhWyhjW2Q+PjJdfDApKyhjW2U+PjJdfDApPj4wXXwwKSlicmVhaztpZigoYVsoY1tkPj4yXXwwKSsoY1tlPj4yXXwwKT4+MF18MCk9PTM0KXtqPWNbZj4+Ml18MDtjW2Y+PjJdPWorMTthW2o+PjBdPTM0fWI9YVsoY1tkPj4yXXwwKSsoY1tlPj4yXXwwKT4+MF18MDtqPWNbZj4+Ml18MDtjW2Y+PjJdPWorMTthW2o+PjBdPWI7Y1tlPj4yXT0oY1tlPj4yXXwwKSsxfWo9Y1tmPj4yXXwwO2NbZj4+Ml09aisxO2Fbaj4+MF09MzQ7aj1jW2Y+PjJdfDA7Y1tmPj4yXT1qKzE7YVtqPj4wXT0wO2o9Y1tnPj4yXXwwO2k9aDtyZXR1cm4ganwwfWZ1bmN0aW9uIFlwKGEsYixkLGUpe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wO249aTtpPWkrNDh8MDtrPW47Zj1uKzQwfDA7Zz1uKzM2fDA7aD1uKzMyfDA7aj1uKzE2fDA7bD1uKzEyfDA7bT1uKzh8MDtjW2Y+PjJdPWE7Y1tnPj4yXT1iO2NbaD4+Ml09ZDtpZihjW2NbZj4+Ml0+PjJdfDApe2k9bjtyZXR1cm59Y1tqPj4yXT1lO2NbbD4+Ml09TmQoY1toPj4yXXwwLGopfDA7aWYoKGNbbD4+Ml18MCkhPTA/KGNbY1tnPj4yXT4+Ml18MCkhPTA6MCl7ZD1jW2w+PjJdfDA7Y1trPj4yXT1jW2NbZz4+Ml0+PjJdO2Nbays0Pj4yXT1kO2NbbT4+Ml09T2QoMjQ3MDUsayl8MDtLZChjW2w+PjJdfDApO2NbbD4+Ml09Y1ttPj4yXX1pZighKGNbbD4+Ml18MCkpY1tjW2Y+PjJdPj4yXT03O0tkKGNbY1tnPj4yXT4+Ml18MCk7Y1tjW2c+PjJdPj4yXT1jW2w+PjJdO2k9bjtyZXR1cm59ZnVuY3Rpb24gWnAoYixkKXtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wO2w9aTtpPWkrMzJ8MDtlPWwrMjB8MDtmPWwrMTZ8MDtnPWwrMTJ8MDtqPWwrNHwwO2g9bDtjW2Y+PjJdPWI7Y1tnPj4yXT1kO2NbbCs4Pj4yXT0xZTc7Y1toPj4yXT0wO2Nbaj4+Ml09Y1tjW2Y+PjJdPj4yXTt3aGlsZSgxKXtpZigoYVtjW2o+PjJdPj4wXXwwKTw0OClicmVhaztpZigoYVtjW2o+PjJdPj4wXXwwKT41NylicmVhaztjW2g+PjJdPSgoY1toPj4yXXwwKSoxMHwwKSsoKGFbY1tqPj4yXT4+MF18MCktNDgpO2lmKChjW2g+PjJdfDApPjFlNyl7az01O2JyZWFrfWNbaj4+Ml09KGNbaj4+Ml18MCkrMX1pZigoa3wwKT09NSljW2g+PjJdPTA7aWYoKGNbaj4+Ml18MCk9PShjW2NbZj4+Ml0+PjJdfDApKXtjW2U+PjJdPTE7az1jW2U+PjJdfDA7aT1sO3JldHVybiBrfDB9ZWxzZXtjW2NbZz4+Ml0+PjJdPWNbaD4+Ml07Y1tjW2Y+PjJdPj4yXT1jW2o+PjJdO2NbZT4+Ml09MDtrPWNbZT4+Ml18MDtpPWw7cmV0dXJuIGt8MH1yZXR1cm4gMH1mdW5jdGlvbiBfcChhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wO3A9aTtpPWkrNDh8MDttPXA7ZT1wKzQwfDA7cT1wKzM2fDA7Zj1wKzMyfDA7aj1wKzI4fDA7bD1wKzI0fDA7bz1wKzIwfDA7aD1wKzE2fDA7az1wKzEyfDA7Zz1wKzh8MDtuPXArNHwwO2NbZT4+Ml09YTtjW3E+PjJdPWI7Y1tmPj4yXT1kO2NbbD4+Ml09MDtjW2o+PjJdPXVlKGNbZT4+Ml18MCl8MDtjW28+PjJdPSRkKGNbY1tmPj4yXT4+Ml18MCl8MDtjW2g+PjJdPShhZShjW2NbZj4+Ml0+PjJdfDApfDApKzE7ZG8gaWYoKGNbcT4+Ml18MCk9PTIpe2lmKCEoJHAoY1tlPj4yXXwwKXwwKSl7aWUoY1tlPj4yXXwwLDI1MDMwLC0xKTtpPXA7cmV0dXJufWNbZz4+Ml09YWUoY1soY1tmPj4yXXwwKSs0Pj4yXXwwKXwwO2lmKChjW28+PjJdfDApPT0wfChjW2c+PjJdfDApIT00KXtpZShjW2U+PjJdfDAsMjQ5OTMsLTEpO2k9cDtyZXR1cm59ZWxzZXtjW2w+PjJdPWNbKF9kKGNbKGNbZj4+Ml18MCkrND4+Ml18MCl8MCk+PjJdO2Nbaz4+Ml09bGsoY1tqPj4yXXwwLGNbbz4+Ml18MCxjW2g+PjJdfDAsY1tsPj4yXXwwKXwwO2lmKChjW2s+PjJdfDApIT0oY1tsPj4yXXwwKSlicmVhaztpZShjW2U+PjJdfDAsMjUwMTYsLTEpO2JyZWFrfX1lbHNle2lmKGNbbz4+Ml18MCljW2w+PjJdPUVrKGNbaj4+Ml18MCxjW28+PjJdfDAsY1toPj4yXXwwKXwwO2lmKCEoY1tsPj4yXXwwKSl7Y1ttPj4yXT1jW28+PjJdO2Nbbj4+Ml09T2QoMjA1OTUsbSl8MDtpZShjW2U+PjJdfDAsY1tuPj4yXXwwLC0xKTtLZChjW24+PjJdfDApO2k9cDtyZXR1cm59fXdoaWxlKDApO2ZlKGNbZT4+Ml18MCxsLDQsLTEpO2k9cDtyZXR1cm59ZnVuY3Rpb24gJHAoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MCxnPTA7ZD1pO2k9aSszMnwwO2U9ZDtnPWQrMTZ8MDtmPWQrMTJ8MDtiPWQrOHwwO2NbZz4+Ml09YTtjW2Y+PjJdPXZlKGNbZz4+Ml18MCl8MDtjW2I+PjJdPTA7YT1jW2Y+PjJdfDA7Y1tlPj4yXT0tMTtjW2UrND4+Ml09YjtvZihhLDEwMDQsZSl8MDtpPWQ7cmV0dXJuIGNbYj4+Ml18MH1mdW5jdGlvbiBhcShiLGQsZSl7Yj1ifDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTA7az1pO2k9aSsxNnwwO2Y9aysxMnwwO2c9ays4fDA7aD1rKzR8MDtqPWs7Y1tmPj4yXT1iO2NbZz4+Ml09ZDtjW2g+PjJdPWU7ZD1jW2NbZz4+Ml0+PjJdfDA7aWYoY1soY1tnPj4yXXwwKSs0Pj4yXXwwKWNbY1soY1tnPj4yXXwwKSs0Pj4yXT4+Ml09ZDtlbHNlIGNbKGNbZj4+Ml18MCkrOD4+Ml09ZDtpZihjW2NbZz4+Ml0+PjJdfDApY1soY1tjW2c+PjJdPj4yXXwwKSs0Pj4yXT1jWyhjW2c+PjJdfDApKzQ+PjJdO2Nbaj4+Ml09KGNbKGNbZj4+Ml18MCkrMTY+PjJdfDApKyhjW2g+PjJdPDwzKTtpZigoY1soY1tqPj4yXXwwKSs0Pj4yXXwwKT09KGNbZz4+Ml18MCkpY1soY1tqPj4yXXwwKSs0Pj4yXT1jW2NbZz4+Ml0+PjJdO2g9Y1tqPj4yXXwwO2NbaD4+Ml09KGNbaD4+Ml18MCkrLTE7aWYoKGNbY1tqPj4yXT4+Ml18MCk8PTApY1soY1tqPj4yXXwwKSs0Pj4yXT0wO2lmKChhWyhjW2Y+PjJdfDApKzE+PjBdfDApIT0wPyhjWyhjW2c+PjJdfDApKzEyPj4yXXwwKSE9MDowKXFrKGNbKGNbZz4+Ml18MCkrMTI+PjJdfDApO3FrKGNbZz4+Ml18MCk7aj0oY1tmPj4yXXwwKSs0fDA7Y1tqPj4yXT0oY1tqPj4yXXwwKSstMTtpZigoY1soY1tmPj4yXXwwKSs0Pj4yXXwwKT4wKXtpPWs7cmV0dXJufXBrKGNbZj4+Ml18MCk7aT1rO3JldHVybn1mdW5jdGlvbiBicShiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MDtuPWk7aT1pKzMyfDA7ZT1uKzI4fDA7Zj1uKzI0fDA7Zz1uKzIwfDA7az1uKzE2fDA7aD1uKzEyfDA7bD1uKzh8MDttPW4rNHwwO2o9bjtjW2Y+PjJdPWI7Y1tnPj4yXT1kO2Nbaz4+Ml09Y3EoY1tnPj4yXTw8Myl8MDtpZighKGNbaz4+Ml18MCkpe2NbZT4+Ml09MTttPWNbZT4+Ml18MDtpPW47cmV0dXJuIG18MH1xayhjWyhjW2Y+PjJdfDApKzE2Pj4yXXwwKTtjWyhjW2Y+PjJdfDApKzE2Pj4yXT1jW2s+PjJdO2NbKGNbZj4+Ml18MCkrMTI+PjJdPWNbZz4+Ml07Y1ttPj4yXT1IayhhW2NbZj4+Ml0+PjBdfDApfDA7Y1toPj4yXT1jWyhjW2Y+PjJdfDApKzg+PjJdO2NbKGNbZj4+Ml18MCkrOD4+Ml09MDt3aGlsZSgxKXtpZighKGNbaD4+Ml18MCkpYnJlYWs7Yj1ZYltjW20+PjJdJjI1NV0oY1soY1toPj4yXXwwKSsxMj4+Ml18MCxjWyhjW2g+PjJdfDApKzE2Pj4yXXwwKXwwO2Nbaj4+Ml09YiYoY1tnPj4yXXwwKS0xO2NbbD4+Ml09Y1tjW2g+PjJdPj4yXTtkcShjW2Y+PjJdfDAsKGNbaz4+Ml18MCkrKGNbaj4+Ml08PDMpfDAsY1toPj4yXXwwKTtjW2g+PjJdPWNbbD4+Ml19Y1tlPj4yXT0wO209Y1tlPj4yXXwwO2k9bjtyZXR1cm4gbXwwfWZ1bmN0aW9uIGNxKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MDtlPWk7aT1pKzE2fDA7Yj1lKzR8MDtkPWU7Y1tiPj4yXT1hO2NbZD4+Ml09SWQoY1tiPj4yXXwwKXwwO2lmKCEoY1tkPj4yXXwwKSl7ZD1jW2Q+PjJdfDA7aT1lO3JldHVybiBkfDB9VlIoY1tkPj4yXXwwLDAsY1tiPj4yXXwwKXwwO2Q9Y1tkPj4yXXwwO2k9ZTtyZXR1cm4gZHwwfWZ1bmN0aW9uIGRxKGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MDtqPWk7aT1pKzE2fDA7ZT1qKzEyfDA7Zj1qKzh8MDtnPWorNHwwO2g9ajtjW2U+PjJdPWE7Y1tmPj4yXT1iO2NbZz4+Ml09ZDtjW2g+PjJdPWNbKGNbZj4+Ml18MCkrND4+Ml07aWYoIShjW2g+PjJdfDApKXtjW2NbZz4+Ml0+PjJdPWNbKGNbZT4+Ml18MCkrOD4+Ml07aWYoY1soY1tlPj4yXXwwKSs4Pj4yXXwwKWNbKGNbKGNbZT4+Ml18MCkrOD4+Ml18MCkrND4+Ml09Y1tnPj4yXTtjWyhjW2c+PjJdfDApKzQ+PjJdPTA7Y1soY1tlPj4yXXwwKSs4Pj4yXT1jW2c+PjJdO2g9Y1tmPj4yXXwwO2U9Y1toPj4yXXwwO2U9ZSsxfDA7Y1toPj4yXT1lO2c9Y1tnPj4yXXwwO2g9Y1tmPj4yXXwwO2g9aCs0fDA7Y1toPj4yXT1nO2k9ajtyZXR1cm59Y1tjW2c+PjJdPj4yXT1jW2g+PjJdO2NbKGNbZz4+Ml18MCkrND4+Ml09Y1soY1toPj4yXXwwKSs0Pj4yXTtiPWNbZz4+Ml18MDtpZihjWyhjW2g+PjJdfDApKzQ+PjJdfDApY1tjWyhjW2g+PjJdfDApKzQ+PjJdPj4yXT1iO2Vsc2UgY1soY1tlPj4yXXwwKSs4Pj4yXT1iO2NbKGNbaD4+Ml18MCkrND4+Ml09Y1tnPj4yXTtoPWNbZj4+Ml18MDtlPWNbaD4+Ml18MDtlPWUrMXwwO2NbaD4+Ml09ZTtnPWNbZz4+Ml18MDtoPWNbZj4+Ml18MDtoPWgrNHwwO2NbaD4+Ml09ZztpPWo7cmV0dXJufWZ1bmN0aW9uIGVxKGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wO2g9aTtpPWkrMzJ8MDtlPWgrMTZ8MDtmPWgrNHwwO2c9aDtjW2grMTI+PjJdPWE7Y1toKzg+PjJdPWI7Y1tmPj4yXT1kO2NbZz4+Ml09SWQoNCl8MDtpZighKGNbZz4+Ml18MCkpe2NbZT4+Ml09NztnPWNbZT4+Ml18MDtpPWg7cmV0dXJuIGd8MH1lbHNle2NbY1tnPj4yXT4+Ml09MDtjW2NbZj4+Ml0+PjJdPWNbZz4+Ml07Y1tlPj4yXT0wO2c9Y1tlPj4yXXwwO2k9aDtyZXR1cm4gZ3wwfXJldHVybiAwfWZ1bmN0aW9uIGZxKGEpe2E9YXwwO3ZhciBiPTAsZD0wO2I9aTtpPWkrMTZ8MDtkPWI7Y1tkPj4yXT1hO0tkKGNbZD4+Ml18MCk7aT1iO3JldHVybiAwfWZ1bmN0aW9uIGdxKGEsYixkLGUpe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MDtsPWk7aT1pKzMyfDA7Zj1sKzIwfDA7Zz1sKzEyfDA7aD1sKzh8MDtqPWwrNHwwO2s9bDtjW2wrMTY+PjJdPWE7Y1tnPj4yXT1iO2NbaD4+Ml09ZDtjW2o+PjJdPWU7Y1trPj4yXT1JZCgyOCl8MDtpZighKGNbaz4+Ml18MCkpe2NbZj4+Ml09NztiPWNbZj4+Ml18MDtpPWw7cmV0dXJuIGJ8MH1jWyhjW2s+PjJdfDApKzQ+PjJdPWNbZz4+Ml07ZG8gaWYoY1tnPj4yXXwwKWlmKChjW2g+PjJdfDApPDApe2I9a1IoY1tnPj4yXXwwKXwwO2NbKGNbaz4+Ml18MCkrOD4+Ml09YjticmVha31lbHNle2NbKGNbaz4+Ml18MCkrOD4+Ml09Y1toPj4yXTticmVha31lbHNlIGNbKGNbaz4+Ml18MCkrOD4+Ml09MDt3aGlsZSgwKTtjWyhjW2s+PjJdfDApKzEyPj4yXT0wO2NbKGNbaz4+Ml18MCkrMTY+PjJdPTA7Y1soY1trPj4yXXwwKSsyMD4+Ml09MDtjWyhjW2s+PjJdfDApKzI0Pj4yXT0wO2NbY1tqPj4yXT4+Ml09Y1trPj4yXTtjW2Y+PjJdPTA7Yj1jW2Y+PjJdfDA7aT1sO3JldHVybiBifDB9ZnVuY3Rpb24gaHEoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wO2I9aTtpPWkrMTZ8MDtlPWIrNHwwO2Q9YjtjW2U+PjJdPWE7Y1tkPj4yXT1jW2U+PjJdO0tkKGNbKGNbZD4+Ml18MCkrMjA+PjJdfDApO0tkKGNbZD4+Ml18MCk7aT1iO3JldHVybiAwfWZ1bmN0aW9uIGlxKGIsZCxlLGYsZyxoKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDt2YXIgaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTA7dz1pO2k9aSs2NHwwO2o9dys0OHwwO3g9dys0NHwwO2s9dys0MHwwO2w9dyszNnwwO209dyszMnwwO249dysyOHwwO289dysyNHwwO3A9dysyMHwwO3U9dysxNnwwO3I9dysxMnwwO3E9dys4fDA7cz13KzR8MDt0PXc7Y1t4Pj4yXT1iO2Nbaz4+Ml09ZDtjW2w+PjJdPWU7Y1ttPj4yXT1mO2Nbbj4+Ml09ZztjW28+PjJdPWg7Y1twPj4yXT1jW3g+PjJdO2NbdT4+Ml09Y1soY1twPj4yXXwwKSs0Pj4yXTtkb3tpZigoY1soY1twPj4yXXwwKSsxMj4+Ml18MCk+PShjWyhjW3A+PjJdfDApKzg+PjJdfDApKXt2PTIzO2JyZWFrfXdoaWxlKDEpe2lmKChjWyhjW3A+PjJdfDApKzEyPj4yXXwwKTwoY1soY1twPj4yXXwwKSs4Pj4yXXwwKT8oeD1hWyhjW3U+PjJdfDApKyhjWyhjW3A+PjJdfDApKzEyPj4yXXwwKT4+MF18MCxjW3E+PjJdPXgsKHgmMTI4fDApPT0wKTowKWlmKChjW3E+PjJdfDApPDQ4KWI9MTtlbHNlIGI9KGFbMjUwNTIrKChjW3E+PjJdfDApLTQ4KT4+MF18MCkhPTBeMTtlbHNlIGI9MDtnPShjW3A+PjJdfDApKzEyfDA7aD1jW2c+PjJdfDA7aWYoIWIpYnJlYWs7Y1tnPj4yXT1oKzF9Y1tyPj4yXT1oO3doaWxlKDEpe2lmKChjWyhjW3A+PjJdfDApKzEyPj4yXXwwKTwoY1soY1twPj4yXXwwKSs4Pj4yXXwwKSl7eD1hWyhjW3U+PjJdfDApKyhjWyhjW3A+PjJdfDApKzEyPj4yXXwwKT4+MF18MDtjW3E+PjJdPXg7aWYoISh4JjEyOCkpaWYoKGNbcT4+Ml18MCk8NDgpYj0xO2Vsc2UgYj0oYVsyNTA1MisoKGNbcT4+Ml18MCktNDgpPj4wXXwwKSE9MF4xO2Vsc2UgYj0wO2I9Yl4xfWVsc2UgYj0wO2c9KGNbcD4+Ml18MCkrMTJ8MDtoPWNbZz4+Ml18MDtpZighYilicmVhaztjW2c+PjJdPWgrMX19d2hpbGUoKGh8MCk8PShjW3I+PjJdfDApKTtpZigodnwwKT09MjMpe2Nbaj4+Ml09MTAxO3g9Y1tqPj4yXXwwO2k9dztyZXR1cm4geHwwfWNbcz4+Ml09KGNbKGNbcD4+Ml18MCkrMTI+PjJdfDApLShjW3I+PjJdfDApO2RvIGlmKChjW3M+PjJdfDApPihjWyhjW3A+PjJdfDApKzI0Pj4yXXwwKSl7Y1soY1twPj4yXXwwKSsyND4+Ml09KGNbcz4+Ml18MCkrMjA7Y1t0Pj4yXT1MZChjWyhjW3A+PjJdfDApKzIwPj4yXXwwLGNbKGNbcD4+Ml18MCkrMjQ+PjJdfDApfDA7aWYoY1t0Pj4yXXwwKXtjWyhjW3A+PjJdfDApKzIwPj4yXT1jW3Q+PjJdO2JyZWFrfWNbaj4+Ml09Nzt4PWNbaj4+Ml18MDtpPXc7cmV0dXJuIHh8MH13aGlsZSgwKTtqcSgoY1t1Pj4yXXwwKSsoY1tyPj4yXXwwKXwwLGNbcz4+Ml18MCxjWyhjW3A+PjJdfDApKzIwPj4yXXwwLGNbbD4+Ml18MCk7Y1tjW2s+PjJdPj4yXT1jWyhjW3A+PjJdfDApKzIwPj4yXTtjW2NbbT4+Ml0+PjJdPWNbcj4+Ml07Y1tjW24+PjJdPj4yXT1jWyhjW3A+PjJdfDApKzEyPj4yXTt2PShjW3A+PjJdfDApKzE2fDA7eD1jW3Y+PjJdfDA7Y1t2Pj4yXT14KzE7Y1tjW28+PjJdPj4yXT14O2Nbaj4+Ml09MDt4PWNbaj4+Ml18MDtpPXc7cmV0dXJuIHh8MH1mdW5jdGlvbiBqcShiLGQsZSxmKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTA7cz1pO2k9aSs2NHwwO2c9cysyOHwwO2g9cysyNHwwO289cysyMHwwO3A9cysxNnwwO3E9cysxMnwwO2s9cys4fDA7bT1zKzM2fDA7cj1zKzR8MDtsPXM7aj1zKzMyfDA7Y1tnPj4yXT1iO2NbaD4+Ml09ZDtjW28+PjJdPWU7Y1twPj4yXT1mO2lmKChjW2g+PjJdfDApPDN8KGNbaD4+Ml18MCk+PTIxKXtrcShjW2c+PjJdfDAsY1toPj4yXXwwLGNbbz4+Ml18MCxjW3A+PjJdfDApO2k9cztyZXR1cm59Y1txPj4yXT0wO2Nbaz4+Ml09MjI7d2hpbGUoMSl7aWYoKGNbcT4+Ml18MCk+PShjW2g+PjJdfDApKWJyZWFrO2Fbaj4+MF09YVsoY1tnPj4yXXwwKSsoY1txPj4yXXwwKT4+MF18MDtpZigoYVtqPj4wXXwwKT49NjU/KGFbaj4+MF18MCk8PTkwOjApYVttKyhjW2s+PjJdfDApPj4wXT0oYVtqPj4wXXwwKSs5Ny02NTtlbHNle2lmKChhW2o+PjBdfDApPDk3KXtuPTExO2JyZWFrfWlmKChhW2o+PjBdfDApPjEyMil7bj0xMTticmVha31hW20rKGNbaz4+Ml18MCk+PjBdPWFbaj4+MF18MH1jW3E+PjJdPShjW3E+PjJdfDApKzE7Y1trPj4yXT0oY1trPj4yXXwwKSstMX1pZigobnwwKT09MTEpe2txKGNbZz4+Ml18MCxjW2g+PjJdfDAsY1tvPj4yXXwwLGNbcD4+Ml18MCk7aT1zO3JldHVybn1uPW0rMjN8MDthW24+PjBdPTA7YVtuKzE+PjBdPTA7YVtuKzI+PjBdPTA7YVtuKzM+PjBdPTA7YVtuKzQ+PjBdPTA7Y1tyPj4yXT1tKygoY1trPj4yXXwwKSsxKTtpZigoKChhW2Nbcj4+Ml0+PjBdfDApPT0xMTU/KGxxKHIsMjUxMzIsMjUxMzcsMCl8MCk9PTA6MCk/KGxxKHIsMjUxNDAsMjUxNDQsMCl8MCk9PTA6MCk/KGxxKHIsMjUxMzcsMjUxMzcsMCl8MCk9PTA6MCljW3I+PjJdPShjW3I+PjJdfDApKzE7Y1tsPj4yXT1jW3I+PjJdO2RvIGlmKCEobHEociwyNTE0NiwyNTE1MCwxNzIpfDApKXtpZigobHEociwyNTE1MywxODQwMiwxNzMpfDApPT0wPyhscShyLDI1MTU3LDE4NDAyLDE3Myl8MCk9PTA6MClicmVhaztpZigoKChjW3I+PjJdfDApIT0oY1tsPj4yXXwwKT8obHEociwyNTE2MCwyNTE2MywwKXwwKT09MDowKT8obHEociwyNTE2NywyNTE3MCwwKXwwKT09MDowKT8obHEociwyNTE3NCwyNTE3NywwKXwwKT09MDowKXtpZigoKChvcShjW3I+PjJdfDApfDApIT0wPyhhW2Nbcj4+Ml0+PjBdfDApIT0xMDg6MCk/KGFbY1tyPj4yXT4+MF18MCkhPTExNTowKT8oYVtjW3I+PjJdPj4wXXwwKSE9MTIyOjApe2Nbcj4+Ml09KGNbcj4+Ml18MCkrMTticmVha31pZigocHEoY1tyPj4yXXwwKXwwKSE9MD8ocXEoY1tyPj4yXXwwKXwwKSE9MDowKXtuPShjW3I+PjJdfDApKy0xfDA7Y1tyPj4yXT1uO2Fbbj4+MF09MTAxfX19d2hpbGUoMCk7aWYoKGFbY1tyPj4yXT4+MF18MCk9PTEyMT8obnEoKGNbcj4+Ml18MCkrMXwwKXwwKSE9MDowKWFbY1tyPj4yXT4+MF09MTA1O3N3aXRjaChhWyhjW3I+PjJdfDApKzE+PjBdfDApe2Nhc2UgOTc6e2lmKCEobHEociwyNTE4MSwyNTE2MywxNzIpfDApKWxxKHIsMjUxODksMjUxOTYsMTcyKXwwO2JyZWFrfWNhc2UgOTk6e2lmKCEobHEociwyNTIwMSwyNTIwNiwxNzIpfDApKWxxKHIsMjUyMTEsMjUyMTYsMTcyKXwwO2JyZWFrfWNhc2UgMTAxOntscShyLDI1MjIxLDI1MTc3LDE3Mil8MDticmVha31jYXNlIDEwMzp7bHEociwyNTIyNiwyNTIzMSwxNzIpfDA7YnJlYWt9Y2FzZSAxMDg6e2lmKCgoKGxxKHIsMjUyMzUsMjUxNzAsMTcyKXwwKT09MD8obHEociwyNTIzOSwyNTI0NCwxNzIpfDApPT0wOjApPyhscShyLDI1MjQ3LDI1MjUzLDE3Mil8MCk9PTA6MCk/KGxxKHIsMjUyNTcsMjUyNjEsMTcyKXwwKT09MDowKWxxKHIsMjUyNjMsMjUyNjksMTcyKXwwO2JyZWFrfWNhc2UgMTExOntpZigobHEociwyNTI3MywyNTE3NywxNzIpfDApPT0wPyhscShyLDI1MjgxLDI1MTYzLDE3Mil8MCk9PTA6MClscShyLDI1Mjg3LDI1MTYzLDE3Mil8MDticmVha31jYXNlIDExNTp7aWYoKChscShyLDI1MjkyLDI1MjQ0LDE3Mil8MCk9PTA/KGxxKHIsMjUyOTgsMjUzMDYsMTcyKXwwKT09MDowKT8obHEociwyNTMxMCwyNTMxOCwxNzIpfDApPT0wOjApbHEociwyNTMyMiwyNTI2OSwxNzIpfDA7YnJlYWt9Y2FzZSAxMTY6e2lmKChscShyLDI1MzMwLDI1MjQ0LDE3Mil8MCk9PTA/KGxxKHIsMjUzMzYsMjUzMDYsMTcyKXwwKT09MDowKWxxKHIsMjUzNDIsMjUxNzAsMTcyKXwwO2JyZWFrfWRlZmF1bHQ6e319c3dpdGNoKGFbY1tyPj4yXT4+MF18MCl7Y2FzZSAxMDE6e2lmKChscShyLDI1MzQ5LDI1MzU1LDE3Mil8MCk9PTA/KGxxKHIsMjUzNTgsMTg0MDIsMTcyKXwwKT09MDowKWxxKHIsMjUzNjQsMjUyNDQsMTcyKXwwO2JyZWFrfWNhc2UgMTA1OntscShyLDI1MzcwLDI1MzU1LDE3Mil8MDticmVha31jYXNlIDEwODp7aWYoIShscShyLDI1Mzc2LDI1MzU1LDE3Mil8MCkpbHEociwyNTM4MSwxODQwMiwxNzIpfDA7YnJlYWt9Y2FzZSAxMTU6e2xxKHIsMjUzODUsMTg0MDIsMTcyKXwwO2JyZWFrfWRlZmF1bHQ6e319YTpkbyBzd2l0Y2goYVsoY1tyPj4yXXwwKSsxPj4wXXwwKXtjYXNlIDk3OntpZigoYVtjW3I+PjJdPj4wXXwwKT09MTA4PyhycSgoY1tyPj4yXXwwKSsyfDApfDApIT0wOjApY1tyPj4yXT0oY1tyPj4yXXwwKSsyO2JyZWFrfWNhc2UgOTk6e2lmKChhW2Nbcj4+Ml0+PjBdfDApPT0xMDE/KGFbKGNbcj4+Ml18MCkrMj4+MF18MCk9PTExMDowKXtpZigoYVsoY1tyPj4yXXwwKSszPj4wXXwwKSE9OTc/KGFbKGNbcj4+Ml18MCkrMz4+MF18MCkhPTEwMTowKWJyZWFrIGE7aWYocnEoKGNbcj4+Ml18MCkrNHwwKXwwKWNbcj4+Ml09KGNbcj4+Ml18MCkrNH1icmVha31jYXNlIDEwMTp7aWYoKGFbY1tyPj4yXT4+MF18MCk9PTExND8ocnEoKGNbcj4+Ml18MCkrMnwwKXwwKSE9MDowKWNbcj4+Ml09KGNbcj4+Ml18MCkrMjticmVha31jYXNlIDEwNTp7aWYoKGFbY1tyPj4yXT4+MF18MCk9PTk5PyhycSgoY1tyPj4yXXwwKSsyfDApfDApIT0wOjApY1tyPj4yXT0oY1tyPj4yXXwwKSsyO2JyZWFrfWNhc2UgMTA4OntpZigoYVtjW3I+PjJdPj4wXXwwKT09MTAxPyhhWyhjW3I+PjJdfDApKzI+PjBdfDApPT05ODowKXtpZigoYVsoY1tyPj4yXXwwKSszPj4wXXwwKSE9OTc/KGFbKGNbcj4+Ml18MCkrMz4+MF18MCkhPTEwNTowKWJyZWFrIGE7aWYocnEoKGNbcj4+Ml18MCkrNHwwKXwwKWNbcj4+Ml09KGNbcj4+Ml18MCkrNH1icmVha31jYXNlIDExMDp7aWYoKGFbY1tyPj4yXT4+MF18MCk9PTExNil7Zz1jW3I+PjJdfDA7aWYoKGFbKGNbcj4+Ml18MCkrMj4+MF18MCk9PTk3KXtpZighKHJxKGcrM3wwKXwwKSlicmVhayBhO2Nbcj4+Ml09KGNbcj4+Ml18MCkrMzticmVhayBhfWlmKCgoYVtnKzI+PjBdfDApPT0xMDE/KGxxKHIsMjUzOTAsMTg0MDIsMTc0KXwwKT09MDowKT8obHEociwyNTM5NiwxODQwMiwxNzQpfDApPT0wOjApbHEociwyNTQwMSwxODQwMiwxNzQpfDB9YnJlYWt9Y2FzZSAxMTE6e2c9Y1tyPj4yXXwwO2lmKChhW2Nbcj4+Ml0+PjBdfDApPT0xMTcpe2lmKCEocnEoZysyfDApfDApKWJyZWFrIGE7Y1tyPj4yXT0oY1tyPj4yXXwwKSsyO2JyZWFrIGF9aWYoKGFbZyszPj4wXXwwKSE9MTE1PyhhWyhjW3I+PjJdfDApKzM+PjBdfDApIT0xMTY6MClicmVhayBhO2xxKHIsMjU0MDUsMTg0MDIsMTc0KXwwO2JyZWFrfWNhc2UgMTE1OntpZigoKGFbY1tyPj4yXT4+MF18MCk9PTEwOT8oYVsoY1tyPj4yXXwwKSsyPj4wXXwwKT09MTA1OjApPyhycSgoY1tyPj4yXXwwKSszfDApfDApIT0wOjApY1tyPj4yXT0oY1tyPj4yXXwwKSszO2JyZWFrfWNhc2UgMTE2OntpZighKGxxKHIsMjU0MDksMTg0MDIsMTc0KXwwKSlscShyLDI1NDEzLDE4NDAyLDE3NCl8MDticmVha31jYXNlIDExNzp7aWYoKChhW2Nbcj4+Ml0+PjBdfDApPT0xMTU/KGFbKGNbcj4+Ml18MCkrMj4+MF18MCk9PTExMTowKT8ocnEoKGNbcj4+Ml18MCkrM3wwKXwwKSE9MDowKWNbcj4+Ml09KGNbcj4+Ml18MCkrMzticmVha31jYXNlIDEyMjpjYXNlIDExODp7aWYoKChhW2Nbcj4+Ml0+PjBdfDApPT0xMDE/KGFbKGNbcj4+Ml18MCkrMj4+MF18MCk9PTEwNTowKT8ocnEoKGNbcj4+Ml18MCkrM3wwKXwwKSE9MDowKWNbcj4+Ml09KGNbcj4+Ml18MCkrMzticmVha31kZWZhdWx0Ont9fXdoaWxlKDApO2RvIGlmKChhW2Nbcj4+Ml0+PjBdfDApPT0xMDEpe249KHJxKChjW3I+PjJdfDApKzF8MCl8MCkhPTA7Zz0oY1tyPj4yXXwwKSsxfDA7aWYobil7Y1tyPj4yXT1nO2JyZWFrfWlmKChwcShnKXwwKSE9MD8ocXEoKGNbcj4+Ml18MCkrMXwwKXwwKT09MDowKWNbcj4+Ml09KGNbcj4+Ml18MCkrMX13aGlsZSgwKTtpZigoKHJxKGNbcj4+Ml18MCl8MCkhPTA/KGFbY1tyPj4yXT4+MF18MCk9PTEwODowKT8oYVsoY1tyPj4yXXwwKSsxPj4wXXwwKT09MTA4OjApY1tyPj4yXT0oY1tyPj4yXXwwKSsxO249a1IoY1tyPj4yXXwwKXwwO2NbcT4+Ml09bjtjW2NbcD4+Ml0+PjJdPW47YVsoY1tvPj4yXXwwKSsoY1txPj4yXXwwKT4+MF09MDt3aGlsZSgxKXtpZighKGFbY1tyPj4yXT4+MF18MCkpYnJlYWs7bj1jW3I+PjJdfDA7Y1tyPj4yXT1uKzE7bj1hW24+PjBdfDA7cD0oY1txPj4yXXwwKSstMXwwO2NbcT4+Ml09cDthWyhjW28+PjJdfDApK3A+PjBdPW59aT1zO3JldHVybn1mdW5jdGlvbiBrcShiLGQsZSxmKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wO3E9aTtpPWkrNDh8MDtnPXErMjh8MDtoPXErMjR8MDtqPXErMjB8MDtrPXErMTZ8MDtuPXErMTJ8MDtwPXErOHwwO289cSs0fDA7bT1xO2w9cSszMnwwO2NbZz4+Ml09YjtjW2g+PjJdPWQ7Y1tqPj4yXT1lO2Nbaz4+Ml09ZjtjW20+PjJdPTA7Y1tuPj4yXT0wO3doaWxlKDEpe2lmKChjW24+PjJdfDApPj0oY1toPj4yXXwwKSlicmVhazthW2w+PjBdPWFbKGNbZz4+Ml18MCkrKGNbbj4+Ml18MCk+PjBdfDA7aWYoKGFbbD4+MF18MCk+PTY1PyhhW2w+PjBdfDApPD05MDowKWFbKGNbaj4+Ml18MCkrKGNbbj4+Ml18MCk+PjBdPShhW2w+PjBdfDApLTY1Kzk3O2Vsc2V7aWYoKGFbbD4+MF18MCk+PTQ4PyhhW2w+PjBdfDApPD01NzowKWNbbT4+Ml09MTthWyhjW2o+PjJdfDApKyhjW24+PjJdfDApPj4wXT1hW2w+PjBdfDB9Y1tuPj4yXT0oY1tuPj4yXXwwKSsxfWNbcD4+Ml09KGNbbT4+Ml18MCkhPTA/MzoxMDtpZigoY1toPj4yXXwwKTw9KGNbcD4+Ml08PDF8MCkpe2I9Y1tuPj4yXXwwO2U9Y1tqPj4yXXwwO2I9ZStifDA7YVtiPj4wXT0wO2I9Y1tuPj4yXXwwO2U9Y1trPj4yXXwwO2NbZT4+Ml09YjtpPXE7cmV0dXJufWNbbz4+Ml09Y1twPj4yXTtjW24+PjJdPShjW2g+PjJdfDApLShjW3A+PjJdfDApO3doaWxlKDEpe2lmKChjW24+PjJdfDApPj0oY1toPj4yXXwwKSlicmVhazthWyhjW2o+PjJdfDApKyhjW28+PjJdfDApPj4wXT1hWyhjW2o+PjJdfDApKyhjW24+PjJdfDApPj4wXXwwO2Nbbj4+Ml09KGNbbj4+Ml18MCkrMTtjW28+PjJdPShjW28+PjJdfDApKzF9Y1tuPj4yXT1jW28+PjJdO2I9Y1tuPj4yXXwwO2U9Y1tqPj4yXXwwO2I9ZStifDA7YVtiPj4wXT0wO2I9Y1tuPj4yXXwwO2U9Y1trPj4yXXwwO2NbZT4+Ml09YjtpPXE7cmV0dXJufWZ1bmN0aW9uIGxxKGIsZCxlLGYpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTA7bj1pO2k9aSszMnwwO2c9bisyMHwwO2g9bisxNnwwO2o9bisxMnwwO2s9bis4fDA7bD1uKzR8MDttPW47Y1toPj4yXT1iO2Nbaj4+Ml09ZDtjW2s+PjJdPWU7Y1tsPj4yXT1mO2NbbT4+Ml09Y1tjW2g+PjJdPj4yXTt3aGlsZSgxKXtpZighKGFbY1tqPj4yXT4+MF18MCkpYnJlYWs7aWYoKGFbY1tqPj4yXT4+MF18MCkhPShhW2NbbT4+Ml0+PjBdfDApKWJyZWFrO2NbbT4+Ml09KGNbbT4+Ml18MCkrMTtjW2o+PjJdPShjW2o+PjJdfDApKzF9aWYoYVtjW2o+PjJdPj4wXXwwKXtjW2c+PjJdPTA7ZT1jW2c+PjJdfDA7aT1uO3JldHVybiBlfDB9aWYoKGNbbD4+Ml18MCkhPTA/KFRiW2NbbD4+Ml0mMjU1XShjW20+PjJdfDApfDApPT0wOjApe2NbZz4+Ml09MTtlPWNbZz4+Ml18MDtpPW47cmV0dXJuIGV8MH13aGlsZSgxKXtpZighKGFbY1trPj4yXT4+MF18MCkpYnJlYWs7ZD1jW2s+PjJdfDA7Y1trPj4yXT1kKzE7ZD1hW2Q+PjBdfDA7ZT0oY1ttPj4yXXwwKSstMXwwO2NbbT4+Ml09ZTthW2U+PjBdPWR9Y1tjW2g+PjJdPj4yXT1jW20+PjJdO2NbZz4+Ml09MTtlPWNbZz4+Ml18MDtpPW47cmV0dXJuIGV8MH1mdW5jdGlvbiBtcShiKXtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wO2Y9aTtpPWkrMTZ8MDtkPWYrNHwwO2U9ZjtjW2U+PjJdPWI7d2hpbGUoMSl7Zz0oc3EoY1tlPj4yXXwwKXwwKSE9MDtiPWNbZT4+Ml18MDtpZighZylicmVhaztjW2U+PjJdPWIrMX1pZighKGFbYj4+MF18MCkpe2NbZD4+Ml09MDtnPWNbZD4+Ml18MDtpPWY7cmV0dXJuIGd8MH13aGlsZSgxKXtnPSh0cShjW2U+PjJdfDApfDApIT0wO2I9Y1tlPj4yXXwwO2lmKCFnKWJyZWFrO2NbZT4+Ml09YisxfWNbZD4+Ml09KGFbYj4+MF18MCkhPTAmMTtnPWNbZD4+Ml18MDtpPWY7cmV0dXJuIGd8MH1mdW5jdGlvbiBucShiKXtiPWJ8MDt2YXIgZD0wLGU9MCxmPTA7ZT1pO2k9aSsxNnwwO2Q9ZTtjW2Q+PjJdPWI7d2hpbGUoMSl7Zj0odHEoY1tkPj4yXXwwKXwwKSE9MDtiPWNbZD4+Ml18MDtpZighZilicmVhaztjW2Q+PjJdPWIrMX1pPWU7cmV0dXJuIChhW2I+PjBdfDApIT0wfDB9ZnVuY3Rpb24gb3EoYil7Yj1ifDA7dmFyIGQ9MCxlPTA7ZT1pO2k9aSsxNnwwO2Q9ZTtjW2Q+PjJdPWI7aWYoISh0cShjW2Q+PjJdfDApfDApKXtiPTA7Yj1iJjE7aT1lO3JldHVybiBifDB9Yj0oYVtjW2Q+PjJdPj4wXXwwKT09KGFbKGNbZD4+Ml18MCkrMT4+MF18MCk7Yj1iJjE7aT1lO3JldHVybiBifDB9ZnVuY3Rpb24gcHEoYil7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MDtmPWk7aT1pKzE2fDA7ZD1mKzR8MDtlPWY7Y1tlPj4yXT1iO3doaWxlKDEpe2c9KHNxKGNbZT4+Ml18MCl8MCkhPTA7Yj1jW2U+PjJdfDA7aWYoIWcpYnJlYWs7Y1tlPj4yXT1iKzF9aWYoIShhW2I+PjBdfDApKXtjW2Q+PjJdPTA7Zz1jW2Q+PjJdfDA7aT1mO3JldHVybiBnfDB9d2hpbGUoMSl7Zz0odHEoY1tlPj4yXXwwKXwwKSE9MDtiPWNbZT4+Ml18MDtpZighZylicmVhaztjW2U+PjJdPWIrMX1pZighKGFbYj4+MF18MCkpe2NbZD4+Ml09MDtnPWNbZD4+Ml18MDtpPWY7cmV0dXJuIGd8MH13aGlsZSgxKXtnPShzcShjW2U+PjJdfDApfDApIT0wO2I9Y1tlPj4yXXwwO2lmKCFnKWJyZWFrO2NbZT4+Ml09YisxfWlmKCEoYVtiPj4wXXwwKSl7Y1tkPj4yXT0xO2c9Y1tkPj4yXXwwO2k9ZjtyZXR1cm4gZ3wwfXdoaWxlKDEpe2c9KHRxKGNbZT4+Ml18MCl8MCkhPTA7Yj1jW2U+PjJdfDA7aWYoIWcpYnJlYWs7Y1tlPj4yXT1iKzF9Y1tkPj4yXT0oYVtiPj4wXXwwKT09MCYxO2c9Y1tkPj4yXXwwO2k9ZjtyZXR1cm4gZ3wwfWZ1bmN0aW9uIHFxKGIpe2I9YnwwO3ZhciBkPTAsZT0wO2U9aTtpPWkrMTZ8MDtkPWU7Y1tkPj4yXT1iO2lmKCgoKCh0cShjW2Q+PjJdfDApfDApIT0wPyhhW2NbZD4+Ml0+PjBdfDApIT0xMTk6MCk/KGFbY1tkPj4yXT4+MF18MCkhPTEyMDowKT8oYVtjW2Q+PjJdPj4wXXwwKSE9MTIxOjApPyhzcSgoY1tkPj4yXXwwKSsxfDApfDApIT0wOjApZD0odHEoKGNbZD4+Ml18MCkrMnwwKXwwKSE9MDtlbHNlIGQ9MDtpPWU7cmV0dXJuIGQmMXwwfWZ1bmN0aW9uIHJxKGIpe2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTA7Zj1pO2k9aSsxNnwwO2Q9Zis0fDA7ZT1mO2NbZT4+Ml09Yjt3aGlsZSgxKXtnPShzcShjW2U+PjJdfDApfDApIT0wO2I9Y1tlPj4yXXwwO2lmKCFnKWJyZWFrO2NbZT4+Ml09YisxfWlmKCEoYVtiPj4wXXwwKSl7Y1tkPj4yXT0wO2c9Y1tkPj4yXXwwO2k9ZjtyZXR1cm4gZ3wwfXdoaWxlKDEpe2c9KHRxKGNbZT4+Ml18MCl8MCkhPTA7Yj1jW2U+PjJdfDA7aWYoIWcpYnJlYWs7Y1tlPj4yXT1iKzF9aWYoIShhW2I+PjBdfDApKXtjW2Q+PjJdPTA7Zz1jW2Q+PjJdfDA7aT1mO3JldHVybiBnfDB9d2hpbGUoMSl7Zz0oc3EoY1tlPj4yXXwwKXwwKSE9MDtiPWNbZT4+Ml18MDtpZighZylicmVhaztjW2U+PjJdPWIrMX1pZighKGFbYj4+MF18MCkpe2NbZD4+Ml09MDtnPWNbZD4+Ml18MDtpPWY7cmV0dXJuIGd8MH13aGlsZSgxKXtnPSh0cShjW2U+PjJdfDApfDApIT0wO2I9Y1tlPj4yXXwwO2lmKCFnKWJyZWFrO2NbZT4+Ml09YisxfWNbZD4+Ml09KGFbYj4+MF18MCkhPTAmMTtnPWNbZD4+Ml18MDtpPWY7cmV0dXJuIGd8MH1mdW5jdGlvbiBzcShiKXtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MDtoPWk7aT1pKzE2fDA7ZD1oKzh8MDtlPWgrNHwwO2Y9aDtnPWgrMTJ8MDtjW2U+PjJdPWI7YVtnPj4wXT1hW2NbZT4+Ml0+PjBdfDA7aWYoIShhW2c+PjBdfDApKXtjW2Q+PjJdPTA7Yj1jW2Q+PjJdfDA7aT1oO3JldHVybiBifDB9Y1tmPj4yXT1hWzI1NDE3KygoYVtnPj4wXXwwKS05Nyk+PjBdO2lmKChjW2Y+PjJdfDApPDIpe2NbZD4+Ml09MS0oY1tmPj4yXXwwKTtiPWNbZD4+Ml18MDtpPWg7cmV0dXJuIGJ8MH1lbHNle2NbZD4+Ml09dHEoKGNbZT4+Ml18MCkrMXwwKXwwO2I9Y1tkPj4yXXwwO2k9aDtyZXR1cm4gYnwwfXJldHVybiAwfWZ1bmN0aW9uIHRxKGIpe2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wO2g9aTtpPWkrMTZ8MDtnPWgrOHwwO2Q9aCs0fDA7ZT1oO2Y9aCsxMnwwO2NbZD4+Ml09YjthW2Y+PjBdPWFbY1tkPj4yXT4+MF18MDtpZighKGFbZj4+MF18MCkpe2NbZz4+Ml09MDtnPWNbZz4+Ml18MDtpPWg7cmV0dXJuIGd8MH1jW2U+PjJdPWFbMjU0MTcrKChhW2Y+PjBdfDApLTk3KT4+MF07aWYoKGNbZT4+Ml18MCk8Mil7Y1tnPj4yXT1jW2U+PjJdO2c9Y1tnPj4yXXwwO2k9aDtyZXR1cm4gZ3wwfWlmKCEoYVsoY1tkPj4yXXwwKSsxPj4wXXwwKSlkPTE7ZWxzZSBkPShzcSgoY1tkPj4yXXwwKSsxfDApfDApIT0wO2NbZz4+Ml09ZCYxO2c9Y1tnPj4yXXwwO2k9aDtyZXR1cm4gZ3wwfWZ1bmN0aW9uIHVxKGIsZSxmKXtiPWJ8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wO3E9aTtpPWkrNDh8MDtnPXErMjh8MDtoPXErMjR8MDtqPXErMjB8MDtrPXErMTZ8MDtwPXErMTJ8MDttPXErOHwwO289cSs0fDA7bD1xKzMyfDA7bj1xO2NbaD4+Ml09YjtjW2o+PjJdPWU7Y1trPj4yXT1mO2NbcD4+Ml09SWQoMTMyKXwwO2lmKCEoY1twPj4yXXwwKSl7Y1tnPj4yXT03O3A9Y1tnPj4yXXwwO2k9cTtyZXR1cm4gcHwwfVZSKGNbcD4+Ml18MCwwLDEzMil8MDthOmRvIGlmKChjW2g+PjJdfDApPjEpe2Nbbz4+Ml09a1IoY1soY1tqPj4yXXwwKSs0Pj4yXXwwKXwwO2NbbT4+Ml09MDt3aGlsZSgxKXtpZigoY1ttPj4yXXwwKT49KGNbbz4+Ml18MCkpYnJlYWsgYTthW2w+PjBdPWFbKGNbKGNbaj4+Ml18MCkrND4+Ml18MCkrKGNbbT4+Ml18MCk+PjBdfDA7aWYoKGRbbD4+MF18MHwwKT49MTI4KWJyZWFrO2FbKGNbcD4+Ml18MCkrNCsoZFtsPj4wXXwwKT4+MF09MTtjW20+PjJdPShjW20+PjJdfDApKzF9S2QoY1twPj4yXXwwKTtjW2c+PjJdPTE7cD1jW2c+PjJdfDA7aT1xO3JldHVybiBwfDB9ZWxzZXtjW24+PjJdPTE7d2hpbGUoMSl7aWYoKGNbbj4+Ml18MCk+PTEyOClicmVhayBhO2Y9KEFxKGNbbj4+Ml18MCl8MCkhPTBeMTthWyhjW3A+PjJdfDApKzQrKGNbbj4+Ml18MCk+PjBdPWY/LTE6MDtjW24+PjJdPShjW24+PjJdfDApKzF9fXdoaWxlKDApO2NbY1trPj4yXT4+Ml09Y1twPj4yXTtjW2c+PjJdPTA7cD1jW2c+PjJdfDA7aT1xO3JldHVybiBwfDB9ZnVuY3Rpb24gdnEoYSl7YT1hfDA7dmFyIGI9MCxkPTA7Yj1pO2k9aSsxNnwwO2Q9YjtjW2Q+PjJdPWE7S2QoY1tkPj4yXXwwKTtpPWI7cmV0dXJuIDB9ZnVuY3Rpb24gd3EoYSxiLGQsZSl7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wO2w9aTtpPWkrMzJ8MDtmPWwrMjB8MDtnPWwrMTJ8MDtoPWwrOHwwO2o9bCs0fDA7az1sO2NbbCsxNj4+Ml09YTtjW2c+PjJdPWI7Y1toPj4yXT1kO2Nbaj4+Ml09ZTtjW2s+PjJdPUlkKDI4KXwwO2lmKCEoY1trPj4yXXwwKSl7Y1tmPj4yXT03O2U9Y1tmPj4yXXwwO2k9bDtyZXR1cm4gZXwwfWNbKGNbaz4+Ml18MCkrND4+Ml09Y1tnPj4yXTtkbyBpZihjW2c+PjJdfDApaWYoKGNbaD4+Ml18MCk8MCl7ZT1rUihjW2c+PjJdfDApfDA7Y1soY1trPj4yXXwwKSs4Pj4yXT1lO2JyZWFrfWVsc2V7Y1soY1trPj4yXXwwKSs4Pj4yXT1jW2g+PjJdO2JyZWFrfWVsc2UgY1soY1trPj4yXXwwKSs4Pj4yXT0wO3doaWxlKDApO2NbKGNbaz4+Ml18MCkrMTI+PjJdPTA7Y1soY1trPj4yXXwwKSsxNj4+Ml09MDtjWyhjW2s+PjJdfDApKzIwPj4yXT0wO2NbKGNbaz4+Ml18MCkrMjQ+PjJdPTA7Y1tjW2o+PjJdPj4yXT1jW2s+PjJdO2NbZj4+Ml09MDtlPWNbZj4+Ml18MDtpPWw7cmV0dXJuIGV8MH1mdW5jdGlvbiB4cShhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTA7Yj1pO2k9aSsxNnwwO2U9Yis0fDA7ZD1iO2NbZT4+Ml09YTtjW2Q+PjJdPWNbZT4+Ml07S2QoY1soY1tkPj4yXXwwKSsyMD4+Ml18MCk7S2QoY1tkPj4yXXwwKTtpPWI7cmV0dXJuIDB9ZnVuY3Rpb24geXEoYixlLGYsZyxoLGope2I9YnwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO3ZhciBrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wO3o9aTtpPWkrNjR8MDtuPXorNTJ8MDtBPXorNDh8MDtvPXorNDR8MDtwPXorNDB8MDtxPXorMzZ8MDtyPXorMzJ8MDtzPXorMjh8MDt0PXorMjR8MDtsPXorMjB8MDt5PXorMTZ8MDt3PXorMTJ8MDt2PXorOHwwO3g9eis0fDA7az16O3U9eis1NnwwO2NbQT4+Ml09YjtjW28+PjJdPWU7Y1twPj4yXT1mO2NbcT4+Ml09ZztjW3I+PjJdPWg7Y1tzPj4yXT1qO2NbdD4+Ml09Y1tBPj4yXTtjW2w+PjJdPWNbY1tBPj4yXT4+Ml07Y1t5Pj4yXT1jWyhjW3Q+PjJdfDApKzQ+PjJdO2Rve2lmKChjWyhjW3Q+PjJdfDApKzEyPj4yXXwwKT49KGNbKGNbdD4+Ml18MCkrOD4+Ml18MCkpe209MjU7YnJlYWt9d2hpbGUoMSl7aWYoKGNbKGNbdD4+Ml18MCkrMTI+PjJdfDApPChjWyhjW3Q+PjJdfDApKzg+PjJdfDApKWI9KHpxKGNbbD4+Ml18MCxhWyhjW3k+PjJdfDApKyhjWyhjW3Q+PjJdfDApKzEyPj4yXXwwKT4+MF18MCl8MCkhPTA7ZWxzZSBiPTA7aD0oY1t0Pj4yXXwwKSsxMnwwO2o9Y1toPj4yXXwwO2lmKCFiKWJyZWFrO2NbaD4+Ml09aisxfWNbdz4+Ml09ajt3aGlsZSgxKXtpZigoY1soY1t0Pj4yXXwwKSsxMj4+Ml18MCk8KGNbKGNbdD4+Ml18MCkrOD4+Ml18MCkpYj0oenEoY1tsPj4yXXwwLGFbKGNbeT4+Ml18MCkrKGNbKGNbdD4+Ml18MCkrMTI+PjJdfDApPj4wXXwwKXwwKSE9MF4xO2Vsc2UgYj0wO2g9KGNbdD4+Ml18MCkrMTJ8MDtqPWNbaD4+Ml18MDtpZighYilicmVhaztjW2g+PjJdPWorMX19d2hpbGUoKGp8MCk8PShjW3c+PjJdfDApKTtpZigobXwwKT09MjUpe2Nbbj4+Ml09MTAxO0E9Y1tuPj4yXXwwO2k9ejtyZXR1cm4gQXwwfWNbeD4+Ml09KGNbKGNbdD4+Ml18MCkrMTI+PjJdfDApLShjW3c+PjJdfDApO2RvIGlmKChjW3g+PjJdfDApPihjWyhjW3Q+PjJdfDApKzI0Pj4yXXwwKSl7Y1soY1t0Pj4yXXwwKSsyND4+Ml09KGNbeD4+Ml18MCkrMjA7Y1trPj4yXT1MZChjWyhjW3Q+PjJdfDApKzIwPj4yXXwwLGNbKGNbdD4+Ml18MCkrMjQ+PjJdfDApfDA7aWYoY1trPj4yXXwwKXtjWyhjW3Q+PjJdfDApKzIwPj4yXT1jW2s+PjJdO2JyZWFrfWNbbj4+Ml09NztBPWNbbj4+Ml18MDtpPXo7cmV0dXJuIEF8MH13aGlsZSgwKTtjW3Y+PjJdPTA7d2hpbGUoMSl7aWYoKGNbdj4+Ml18MCk+PShjW3g+PjJdfDApKWJyZWFrO2FbdT4+MF09YVsoY1t5Pj4yXXwwKSsoKGNbdz4+Ml18MCkrKGNbdj4+Ml18MCkpPj4wXXwwO2lmKChkW3U+PjBdfDB8MCk+PTY1PyhkW3U+PjBdfDB8MCk8PTkwOjApYj0oZFt1Pj4wXXwwKS02NSs5N3wwO2Vsc2UgYj1kW3U+PjBdfDA7YVsoY1soY1t0Pj4yXXwwKSsyMD4+Ml18MCkrKGNbdj4+Ml18MCk+PjBdPWI7Y1t2Pj4yXT0oY1t2Pj4yXXwwKSsxfWNbY1tvPj4yXT4+Ml09Y1soY1t0Pj4yXXwwKSsyMD4+Ml07Y1tjW3A+PjJdPj4yXT1jW3g+PjJdO2NbY1txPj4yXT4+Ml09Y1t3Pj4yXTtjW2Nbcj4+Ml0+PjJdPWNbKGNbdD4+Ml18MCkrMTI+PjJdO3k9KGNbdD4+Ml18MCkrMTZ8MDtBPWNbeT4+Ml18MDtjW3k+PjJdPUErMTtjW2Nbcz4+Ml0+PjJdPUE7Y1tuPj4yXT0wO0E9Y1tuPj4yXXwwO2k9ejtyZXR1cm4gQXwwfWZ1bmN0aW9uIHpxKGIsZSl7Yj1ifDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wO2g9aTtpPWkrMTZ8MDtmPWg7Zz1oKzR8MDtjW2Y+PjJdPWI7YVtnPj4wXT1lO2lmKChkW2c+PjBdfDApPj0xMjgpe2I9MDtiPWImMTtpPWg7cmV0dXJuIGJ8MH1iPShhWyhjW2Y+PjJdfDApKzQrKGRbZz4+MF18MCk+PjBdfDApIT0wO2I9YiYxO2k9aDtyZXR1cm4gYnwwfWZ1bmN0aW9uIEFxKGEpe2E9YXwwO3ZhciBiPTAsZD0wO2Q9aTtpPWkrMTZ8MDtiPWQ7Y1tiPj4yXT1hO2lmKCEoKGNbYj4+Ml18MCk+PTQ4JihjW2I+PjJdfDApPD01Nyk/ISgoY1tiPj4yXXwwKT49NjUmKGNbYj4+Ml18MCk8PTkwKTowKWI9KGNbYj4+Ml18MCk+PTk3PyhjW2I+PjJdfDApPD0xMjI6MDtlbHNlIGI9MTtpPWQ7cmV0dXJuIGImMXwwfWZ1bmN0aW9uIEJxKGEsYixkLGUsZixnKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDt2YXIgaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTA7dz1pO2k9aSs2NHwwO3Q9dztoPXcrNTZ8MDtqPXcrNTJ8MDtrPXcrNDR8MDtsPXcrNDB8MDttPXcrMzZ8MDtuPXcrMzJ8MDt1PXcrMjh8MDt2PXcrMjR8MDtwPXcrMjB8MDtxPXcrMTZ8MDtvPXcrMTJ8MDtzPXcrOHwwO3I9dys0fDA7Y1tqPj4yXT1hO2Nbdys0OD4+Ml09YjtjW2s+PjJdPWQ7Y1tsPj4yXT1lO2NbbT4+Ml09ZjtjW24+PjJdPWc7ZG8gaWYoISgoY1trPj4yXXwwKSE9NCYoY1trPj4yXXwwKSE9NSkpe2NbdT4+Ml09Y1soY1tsPj4yXXwwKSs0Pj4yXTtjW3A+PjJdPWtSKGNbdT4+Ml18MCl8MDtpZigoY1trPj4yXXwwKT09NSl7aWYoKGNbcD4+Ml18MCkhPTQpYnJlYWs7aWYoemQoMTg2NzIsY1t1Pj4yXXwwLDQpfDApYnJlYWs7Y1t1Pj4yXT1jWyhjW2w+PjJdfDApKzEyPj4yXTtjW3A+PjJdPWtSKGNbdT4+Ml18MCl8MDtjW3Y+PjJdPWNbKGNbbD4+Ml18MCkrMTY+PjJdfWVsc2UgY1t2Pj4yXT1jWyhjW2w+PjJdfDApKzEyPj4yXTtjW3E+PjJdPWtSKGNbdj4+Ml18MCl8MDtjW3M+PjJdPWZmKGNbaj4+Ml18MCwyNTQ1Myl8MDtpZihjW3M+PjJdfDApe2NbaD4+Ml09Y1tzPj4yXTt2PWNbaD4+Ml18MDtpPXc7cmV0dXJuIHZ8MH1jW28+PjJdPTI5NisoY1twPj4yXXwwKSsoY1txPj4yXXwwKSsyO2Nbcj4+Ml09SWQoY1tvPj4yXXwwKXwwO2lmKGNbcj4+Ml18MCl7VlIoY1tyPj4yXXwwLDAsY1tvPj4yXXwwKXwwO2NbKGNbcj4+Ml18MCkrMTI+PjJdPShjW3I+PjJdfDApKzE2O2NbKGNbKGNbcj4+Ml18MCkrMTI+PjJdfDApKzE2Pj4yXT0oY1soY1tyPj4yXXwwKSsxMj4+Ml18MCkrMjgwO2NbKGNbKGNbcj4+Ml18MCkrMTI+PjJdfDApKzIwPj4yXT0oY1soY1soY1tyPj4yXXwwKSsxMj4+Ml18MCkrMTY+PjJdfDApKygoY1twPj4yXXwwKSsxKTtjWyhjWyhjW3I+PjJdfDApKzEyPj4yXXwwKSsxMj4+Ml09Y1tqPj4yXTtjWyhjWyhjW3I+PjJdfDApKzEyPj4yXXwwKSsyNDg+PjJdPTE7VFIoY1soY1soY1tyPj4yXXwwKSsxMj4+Ml18MCkrMTY+PjJdfDAsY1t1Pj4yXXwwLGNbcD4+Ml18MCl8MDtUUihjWyhjWyhjW3I+PjJdfDApKzEyPj4yXXwwKSsyMD4+Ml18MCxjW3Y+PjJdfDAsY1txPj4yXXwwKXwwO09rKGNbKGNbKGNbcj4+Ml18MCkrMTI+PjJdfDApKzIwPj4yXXwwKTtjW2NbbT4+Ml0+PjJdPWNbcj4+Ml07Y1toPj4yXT0wO3Y9Y1toPj4yXXwwO2k9dztyZXR1cm4gdnwwfWVsc2V7Y1toPj4yXT03O3Y9Y1toPj4yXXwwO2k9dztyZXR1cm4gdnwwfX13aGlsZSgwKTtGayhjW24+PjJdfDAsMjU1MjIsdCk7Y1toPj4yXT0xO3Y9Y1toPj4yXXwwO2k9dztyZXR1cm4gdnwwfWZ1bmN0aW9uIENxKGIsZSl7Yj1ifDA7ZT1lfDA7dmFyIGY9MCxnPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MDtxPWk7aT1pKzQ4fDA7az1xKzMyfDA7Zj1xKzI4fDA7bD1xKzI0fDA7bT1xKzIwfDA7bz1xKzE2fDA7bj1xKzEyfDA7cD1xKzh8MDtqPXErNHwwO2c9cTtjW3ErMzY+PjJdPWI7Y1trPj4yXT1lO2NbbD4+Ml09LTE7Y1ttPj4yXT0tMTtjW28+PjJdPS0xO2Nbbj4+Ml09LTE7Y1twPj4yXT0xO2lmKCgoY1soY1trPj4yXXwwKSs4Pj4yXXwwKT09MT8oY1tjWyhjW2s+PjJdfDApKzEyPj4yXT4+Ml18MCk9PTA6MCk/KGRbKGNbKGNbaz4+Ml18MCkrMTI+PjJdfDApKzQ+PjBdfDApPT0wOjApY1soY1trPj4yXXwwKSszMj4+Ml09MTtjW2Y+PjJdPTA7d2hpbGUoMSl7aWYoKGNbZj4+Ml18MCk+PShjW2Nbaz4+Ml0+PjJdfDApKWJyZWFrO2lmKGFbKGNbKGNbaz4+Ml18MCkrND4+Ml18MCkrKChjW2Y+PjJdfDApKjEyfDApKzU+PjBdfDApe2Nbaj4+Ml09ZFsoY1soY1trPj4yXXwwKSs0Pj4yXXwwKSsoKGNbZj4+Ml18MCkqMTJ8MCkrND4+MF07Y1tnPj4yXT1jWyhjWyhjW2s+PjJdfDApKzQ+PjJdfDApKygoY1tmPj4yXXwwKSoxMnwwKT4+Ml07aWYoIShjW2c+PjJdfDApKXtpZigoY1tqPj4yXXwwKT09MiljW2w+PjJdPWNbZj4+Ml07aWYoKGNbaj4+Ml18MCk9PTE2KWNbbz4+Ml09Y1tmPj4yXTtpZigoY1tqPj4yXXwwKT09OCljW28+PjJdPWNbZj4+Ml07aWYoKGNbaj4+Ml18MCk9PTQpY1ttPj4yXT1jW2Y+PjJdO2lmKChjW2o+PjJdfDApPT0zMiljW20+PjJdPWNbZj4+Ml19aWYoKGNbZz4+Ml18MCk9PTQmKGNbaj4+Ml18MCk9PTIpY1tuPj4yXT1jW2Y+PjJdfWNbZj4+Ml09KGNbZj4+Ml18MCkrMX1mPShjW2s+PjJdfDApKzIwfDA7aWYoKGNbbD4+Ml18MCk8MCl7Y1tmPj4yXT0wO2hbKGNbaz4+Ml18MCkrNDA+PjNdPTIuMGU0O2lmKChjW20+PjJdfDApPj0wKXtsPShjW2s+PjJdfDApKzIwfDA7Y1tsPj4yXT0oY1tsPj4yXXwwKSsyO2w9Y1twPj4yXXwwO2NbcD4+Ml09bCsxO2NbKGNbKGNbaz4+Ml18MCkrMTY+PjJdfDApKyhjW20+PjJdPDwzKT4+Ml09bDttPShjW2s+PjJdfDApKzQwfDA7aFttPj4zXT0raFttPj4zXS8yLjB9aWYoKGNbbz4+Ml18MCk+PTApe209KGNbaz4+Ml18MCkrMjB8MDtjW20+PjJdPShjW20+PjJdfDApKzQ7bT1jW3A+PjJdfDA7Y1twPj4yXT1tKzE7Y1soY1soY1trPj4yXXwwKSsxNj4+Ml18MCkrKGNbbz4+Ml08PDMpPj4yXT1tO289KGNbaz4+Ml18MCkrNDB8MDtoW28+PjNdPStoW28+PjNdLzIuMH19ZWxzZXtjW2Y+PjJdPTE7bz1jW3A+PjJdfDA7Y1twPj4yXT1vKzE7Y1soY1soY1trPj4yXXwwKSsxNj4+Ml18MCkrKGNbbD4+Ml08PDMpPj4yXT1vO2hbKGNbaz4+Ml18MCkrNDA+PjNdPTUuMH1pZigoY1tuPj4yXXwwKTwwKXtpPXE7cmV0dXJuIDB9bz1jW3A+PjJdfDA7Y1twPj4yXT1vKzE7Y1soY1soY1trPj4yXXwwKSsxNj4+Ml18MCkrKGNbbj4+Ml08PDMpPj4yXT1vO3A9KGNbaz4+Ml18MCkrNDB8MDtoW3A+PjNdPStoW3A+PjNdKy0xLjA7aT1xO3JldHVybiAwfWZ1bmN0aW9uIERxKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTAsZz0wO2Y9aTtpPWkrMTZ8MDtnPWYrMTJ8MDtkPWYrOHwwO2U9Zis0fDA7Yj1mO2NbZz4+Ml09YTtjW2Q+PjJdPWNbZz4+Ml07Y1tlPj4yXT1jWyhjW2Q+PjJdfDApKzEyPj4yXTtjW2I+PjJdPTA7d2hpbGUoMSl7aWYoKGNbYj4+Ml18MCk+PTQwKWJyZWFrO1hkKGNbKGNbZT4+Ml18MCkrNTYrKGNbYj4+Ml08PDIpPj4yXXwwKXwwO2NbYj4+Ml09KGNbYj4+Ml18MCkrMX1LZChjWyhjW2U+PjJdfDApKzI0MD4+Ml18MCk7S2QoY1tkPj4yXXwwKTtpPWY7cmV0dXJuIDB9ZnVuY3Rpb24gRXEoYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wO2c9aTtpPWkrMTZ8MDtkPWcrMTJ8MDtlPWcrNHwwO2Y9ZztjW2crOD4+Ml09YTtjW2U+PjJdPWI7Y1tmPj4yXT1JZCgxMjApfDA7aWYoY1tmPj4yXXwwKXthPWNbZj4+Ml18MDtiPWErMTIwfDA7ZG97Y1thPj4yXT0wO2E9YSs0fDB9d2hpbGUoKGF8MCk8KGJ8MCkpO2NbY1tlPj4yXT4+Ml09Y1tmPj4yXTtjW2Q+PjJdPTA7Zj1jW2Q+PjJdfDA7aT1nO3JldHVybiBmfDB9ZWxzZXtjW2Q+PjJdPTc7Zj1jW2Q+PjJdfDA7aT1nO3JldHVybiBmfDB9cmV0dXJuIDB9ZnVuY3Rpb24gRnEoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MDtiPWk7aT1pKzE2fDA7Zj1iKzh8MDtlPWIrNHwwO2Q9YjtjW2Y+PjJdPWE7Y1tlPj4yXT1jWyhjW2NbZj4+Ml0+PjJdfDApKzEyPj4yXTtjW2Q+PjJdPWNbZj4+Ml07eW0oY1tlPj4yXXwwKTtCbCgoY1tkPj4yXXwwKSs0fDApO0tkKGNbKGNbZD4+Ml18MCkrNjA+PjJdfDApO0tkKGNbKGNbZD4+Ml18MCkrNzY+PjJdfDApO0tkKGNbKGNbZD4+Ml18MCkrMTEyPj4yXXwwKTtLZChjW2Q+PjJdfDApO2k9YjtyZXR1cm4gMH1mdW5jdGlvbiBHcShhLGIsZCxlLGYpe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTA7ej1pO2k9aSs4MHwwO3g9eis4fDA7dz16O2c9eis3NnwwO2g9eis3MnwwO2o9eis2OHwwO2s9eis2MHwwO2w9eis1NnwwO3Q9eis1MnwwO3U9eis0OHwwO3Y9eis0NHwwO3M9eis0MHwwO289eiszNnwwO209eiszMnwwO249eisyOHwwO3E9eisyNHwwO3A9eisyMHwwO3I9eisxNnwwO3k9eisxMnwwO2NbaD4+Ml09YTtjW2o+PjJdPWI7Y1t6KzY0Pj4yXT1kO2Nbaz4+Ml09ZTtjW2w+PjJdPWY7Y1t0Pj4yXT1jW2g+PjJdO2NbdT4+Ml09Y1soY1tjW2g+PjJdPj4yXXwwKSsxMj4+Ml07Y1tzPj4yXT0wO2Nbbz4+Ml09MDtjW20+PjJdPS0xO2Nbbj4+Ml09LTE7Y1txPj4yXT0tMTtjW3A+PjJdPS0xO2Nbcj4+Ml09MDtpZigoY1tqPj4yXXwwKSE9MSl7Y1tzPj4yXT0xO2lmKGNbaj4+Ml0mMil7YT1jW3I+PjJdfDA7Y1tyPj4yXT1hKzE7Y1tuPj4yXT1hfWlmKGNbaj4+Ml0mNCl7YT1jW3I+PjJdfDA7Y1tyPj4yXT1hKzE7Y1txPj4yXT1hfX1lbHNle2E9Y1tyPj4yXXwwO2Nbcj4+Ml09YSsxO2NbbT4+Ml09YX1pZigoY1tyPj4yXXwwKTwoY1trPj4yXXwwKSl7YT1jW3I+PjJdfDA7Y1tyPj4yXT1hKzE7Y1twPj4yXT1hfUJsKChjW3Q+PjJdfDApKzR8MCk7S2QoY1soY1t0Pj4yXXwwKSs2MD4+Ml18MCk7S2QoY1soY1t0Pj4yXXwwKSsxMTI+PjJdfDApO1ZSKChjW3Q+PjJdfDApKzR8MCwwLChjW3Q+PjJdfDApKzEyMC0oKGNbdD4+Ml18MCkrNCl8MCl8MDtjWyhjW3Q+PjJdfDApKzYwKzEyPj4yXT0zO2lmKGNbcz4+Ml18MCl7YT0oY1t0Pj4yXXwwKSs2MCsxMnwwO2NbYT4+Ml09Y1thPj4yXXwxNn1pZigoKGNbbT4+Ml18MCk+PTB8KGNbbj4+Ml18MCk+PTA/KGNbeT4+Ml09JGQoY1tjW2w+PjJdPj4yXXwwKXwwLChjW3k+PjJdfDApIT0wKTowKT8oY1t3Pj4yXT1jW3k+PjJdLHk9T2QoMTgzOTEsdyl8MCxjWyhjW3Q+PjJdfDApKzYwPj4yXT15LHk9YWUoY1tjW2w+PjJdPj4yXXwwKXwwLGNbKGNbdD4+Ml18MCkrNjArND4+Ml09eSwoY1soY1t0Pj4yXXwwKSs2MD4+Ml18MCk9PTApOjApe2NbZz4+Ml09Nzt5PWNbZz4+Ml18MDtpPXo7cmV0dXJuIHl8MH1pZigoY1txPj4yXXwwKT49MD8oY1t4Pj4yXT0kZChjWyhjW2w+PjJdfDApKyhjW3E+PjJdPDwyKT4+Ml18MCl8MCx5PU9kKDE4MzkxLHgpfDAsY1soY1t0Pj4yXXwwKSs3Nj4+Ml09eSx5PWFlKGNbKGNbbD4+Ml18MCkrKGNbcT4+Ml08PDIpPj4yXXwwKXwwLGNbKGNbdD4+Ml18MCkrODA+PjJdPXksKGNbKGNbdD4+Ml18MCkrNzY+PjJdfDApPT0wKTowKXtjW2c+PjJdPTc7eT1jW2c+PjJdfDA7aT16O3JldHVybiB5fDB9aWYoKGNbcD4+Ml18MCk+PTApe3k9Y2UoY1soY1tsPj4yXXwwKSsoY1twPj4yXTw8Mik+PjJdfDApfDA7Y1tvPj4yXT15O2Nbbz4+Ml09KGNbbz4+Ml18MCk8MD8wOnl9Y1soY1t0Pj4yXXwwKSs4ND4+Ml09Y1tvPj4yXTtjW3Y+PjJdPXFsKGNbdT4+Ml18MCxjW28+PjJdfDAsMCwtMixjWyhjW3Q+PjJdfDApKzYwPj4yXXwwLGNbKGNbdD4+Ml18MCkrNjArND4+Ml18MCwwLGNbcz4+Ml18MCwoY1t0Pj4yXXwwKSs0fDApfDA7aWYoIShjW3Y+PjJdfDApKWNbdj4+Ml09dWwoY1t1Pj4yXXwwLChjW3Q+PjJdfDApKzR8MCwoY1t0Pj4yXXwwKSs2MHwwKXwwO2lmKCEoY1t2Pj4yXXwwKSljW3Y+PjJdPUhxKGNbaD4+Ml18MCl8MDtjW2c+PjJdPWNbdj4+Ml07eT1jW2c+PjJdfDA7aT16O3JldHVybiB5fDB9ZnVuY3Rpb24gSHEoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wO3E9aTtpPWkrNjR8MDtkPXErNTJ8MDtyPXErNDh8MDttPXErNDR8MDtiPXErNDB8MDtuPXErMzZ8MDtnPXErMzJ8MDtsPXErMjh8MDtlPXErMjR8MDtoPXErMjB8MDtmPXErMTZ8MDtrPXErMTJ8MDtqPXErOHwwO289cTtjW3I+PjJdPWE7Y1ttPj4yXT1jW3I+PjJdO2NbYj4+Ml09Y1soY1tjW3I+PjJdPj4yXXwwKSsxMj4+Ml07YT0oY1ttPj4yXXwwKSs5NnwwO3I9YTtyPVJSKGNbcj4+Ml18MCxjW3IrND4+Ml18MCwxLDApfDA7Y1thPj4yXT1yO2NbYSs0Pj4yXT1DO2E9KGNbbT4+Ml18MCkrMTA0fDA7Y1thPj4yXT0oY1thPj4yXXwwKSsxO3doaWxlKDEpe2lmKChjWyhjW20+PjJdfDApKzEwND4+Ml18MCk+PShjWyhjW20+PjJdfDApKzEwOD4+Ml18MCkpYnJlYWs7cj0oY1soY1ttPj4yXXwwKSsxMTI+PjJdfDApKyhjWyhjW20+PjJdfDApKzEwND4+Ml08PDQpfDA7YT1jW3IrND4+Ml18MDtpZigoYXwwKT4wfChhfDApPT0wJihjW3I+PjJdfDApPj4+MD4wKXtwPTQ7YnJlYWt9cj0oY1ttPj4yXXwwKSsxMDR8MDtjW3I+PjJdPShjW3I+PjJdfDApKzF9aWYoKHB8MCk9PTQpe2NbZD4+Ml09MDtyPWNbZD4+Ml18MDtpPXE7cmV0dXJuIHJ8MH1jW24+PjJdPXZsKGNbYj4+Ml18MCwoY1ttPj4yXXwwKSs0fDApfDA7ZG8gaWYoKGNbbj4+Ml18MCk9PTEwMCl7Y1tnPj4yXT0wO2NbbD4+Ml09Y1soY1ttPj4yXXwwKSs0KzUyPj4yXTtjW2U+PjJdPWNbKGNbbT4+Ml18MCkrNCs0OD4+Ml07Y1tmPj4yXT0wO2RvIGlmKGNbKGNbbT4+Ml18MCkrNzY+PjJdfDApe2E9Y1ttPj4yXXwwO2lmKChjWyhjW20+PjJdfDApKzgwPj4yXXwwKTwoY1soY1ttPj4yXXwwKSs0KzQ0Pj4yXXwwKSlhPWNbYSs4MD4+Ml18MDtlbHNlIGE9Y1thKzQrNDQ+PjJdfDA7Y1trPj4yXT1hO2Nbaj4+Ml09ZVIoY1soY1ttPj4yXXwwKSs3Nj4+Ml18MCxjWyhjW20+PjJdfDApKzQrNDA+PjJdfDAsY1trPj4yXXwwKXwwO2lmKChjW2o+PjJdfDApPj0wKXtpZihjW2o+PjJdfDApYnJlYWs7aWYoKGNbKGNbbT4+Ml18MCkrNCs0ND4+Ml18MCk8PShjWyhjW20+PjJdfDApKzgwPj4yXXwwKSlicmVha31jWyhjW20+PjJdfDApKzg4Pj4yXT0xO2NbZD4+Ml09MDtyPWNbZD4+Ml18MDtpPXE7cmV0dXJuIHJ8MH13aGlsZSgwKTtpZihMcShjW20+PjJdfDAsMil8MCl7Y1tkPj4yXT03O3I9Y1tkPj4yXXwwO2k9cTtyZXR1cm4gcnwwfVZSKGNbKGNbbT4+Ml18MCkrMTEyPj4yXXwwLDAsY1soY1ttPj4yXXwwKSsxMDg+PjJdPDw0fDApfDA7Y1toPj4yXT0wO2E6d2hpbGUoMSl7aWYoKGNbZz4+Ml18MCk+PShjW2w+PjJdfDApKXtwPTMyO2JyZWFrfXI9bztjW3I+PjJdPTA7Y1tyKzQ+PjJdPTA7cj1fbCgoY1tlPj4yXXwwKSsoY1tnPj4yXXwwKXwwLG8pfDA7Y1tnPj4yXT0oY1tnPj4yXXwwKStyO3N3aXRjaChjW2Y+PjJdfDApe2Nhc2UgMDp7cj1jWyhjW20+PjJdfDApKzExMj4+Ml18MDtrPXI7Y1tyPj4yXT1SUihjW2s+PjJdfDAsY1trKzQ+PjJdfDAsMSwwKXwwO2Nbcis0Pj4yXT1DO2NbZj4+Ml09MTtjW2g+PjJdPTA7Y29udGludWUgYX1jYXNlIDE6e3I9bztrPWNbcis0Pj4yXXwwO2lmKChrfDApPjB8KGt8MCk9PTAmKGNbcj4+Ml18MCk+Pj4wPjEpe3I9KGNbKGNbbT4+Ml18MCkrMTEyPj4yXXwwKSsxNnwwO2s9cjtrPVJSKGNbaz4+Ml18MCxjW2srND4+Ml18MCwxLDApfDA7Y1tyPj4yXT1rO2Nbcis0Pj4yXT1DfWNbZj4+Ml09MjticmVha31jYXNlIDI6YnJlYWs7ZGVmYXVsdDp7Y1toPj4yXT1jW28+PjJdO2lmKExxKGNbbT4+Ml18MCwoY1toPj4yXXwwKSsyfDApfDApYnJlYWsgYTtyPShjWyhjW20+PjJdfDApKzExMj4+Ml18MCkrKChjW2g+PjJdfDApKzE8PDQpfDA7az1yO2Nbcj4+Ml09UlIoY1trPj4yXXwwLGNbays0Pj4yXXwwLDEsMCl8MDtjW3IrND4+Ml09QztjW2Y+PjJdPTI7Y29udGludWUgYX19cj1vO2lmKChjW3I+PjJdfDApPT0wJihjW3IrND4+Ml18MCk9PTApe2NbZj4+Ml09MDtjb250aW51ZX1yPW87aWYoKGNbcj4+Ml18MCk9PTEmKGNbcis0Pj4yXXwwKT09MCl7Y1tmPj4yXT0zO2NvbnRpbnVlfWVsc2V7cj0oY1soY1ttPj4yXXwwKSsxMTI+PjJdfDApKygoY1toPj4yXXwwKSsxPDw0KSs4fDA7az1yO2s9UlIoY1trPj4yXXwwLGNbays0Pj4yXXwwLDEsMCl8MDtjW3I+PjJdPWs7Y1tyKzQ+PjJdPUM7cj0oY1soY1ttPj4yXXwwKSsxMTI+PjJdfDApKzh8MDtrPXI7az1SUihjW2s+PjJdfDAsY1trKzQ+PjJdfDAsMSwwKXwwO2Nbcj4+Ml09aztjW3IrND4+Ml09Qztjb250aW51ZX19aWYoKHB8MCk9PTMyKXtjWyhjW20+PjJdfDApKzEwND4+Ml09MDtjW24+PjJdPTA7YnJlYWt9Y1tkPj4yXT03O3I9Y1tkPj4yXXwwO2k9cTtyZXR1cm4gcnwwfWVsc2UgY1soY1ttPj4yXXwwKSs4OD4+Ml09MTt3aGlsZSgwKTtjW2Q+PjJdPWNbbj4+Ml07cj1jW2Q+PjJdfDA7aT1xO3JldHVybiByfDB9ZnVuY3Rpb24gSXEoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wO2Q9aTtpPWkrMTZ8MDtlPWQrNHwwO2I9ZDtjW2U+PjJdPWE7Y1tiPj4yXT1jW2U+PjJdO2k9ZDtyZXR1cm4gY1soY1tiPj4yXXwwKSs4OD4+Ml18MH1mdW5jdGlvbiBKcShhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTA7Zz1pO2k9aSsxNnwwO2o9ZysxMnwwO2U9Zys4fDA7aD1nKzR8MDtmPWc7Y1tqPj4yXT1hO2NbZT4+Ml09YjtjW2g+PjJdPWQ7Y1tmPj4yXT1jW2o+PjJdO3N3aXRjaChjW2g+PjJdfDApe2Nhc2UgMDp7bWUoY1tlPj4yXXwwLGNbKGNbZj4+Ml18MCkrNCs0MD4+Ml18MCxjWyhjW2Y+PjJdfDApKzQrNDQ+PjJdfDAsLTEpO2k9ZztyZXR1cm4gMH1jYXNlIDE6e2U9Y1tlPj4yXXwwO2lmKGNbKGNbZj4+Ml18MCkrMTA0Pj4yXXwwKXtqZShlLChjWyhjW2Y+PjJdfDApKzEwND4+Ml18MCktMXwwKTtpPWc7cmV0dXJuIDB9ZWxzZXttZShlLDI1NDUxLC0xLDApO2k9ZztyZXR1cm4gMH19Y2FzZSAyOntqPShjWyhjW2Y+PjJdfDApKzExMj4+Ml18MCkrKGNbKGNbZj4+Ml18MCkrMTA0Pj4yXTw8NCl8MDtrZShjW2U+PjJdfDAsY1tqPj4yXXwwLGNbais0Pj4yXXwwKTtpPWc7cmV0dXJuIDB9Y2FzZSAzOntqPShjWyhjW2Y+PjJdfDApKzExMj4+Ml18MCkrKGNbKGNbZj4+Ml18MCkrMTA0Pj4yXTw8NCkrOHwwO2tlKGNbZT4+Ml18MCxjW2o+PjJdfDAsY1tqKzQ+PjJdfDApO2k9ZztyZXR1cm4gMH1kZWZhdWx0OntqZShjW2U+PjJdfDAsY1soY1tmPj4yXXwwKSs4ND4+Ml18MCk7aT1nO3JldHVybiAwfX1yZXR1cm4gMH1mdW5jdGlvbiBLcShhLGIpe2E9YXwwO2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTA7ZD1pO2k9aSsxNnwwO2c9ZCs4fDA7Zj1kKzR8MDtlPWQ7Y1tnPj4yXT1hO2NbZj4+Ml09YjtjW2U+PjJdPWNbZz4+Ml07ZT0oY1tlPj4yXXwwKSs5NnwwO2E9Y1tlKzQ+PjJdfDA7Yj1jW2Y+PjJdfDA7Y1tiPj4yXT1jW2U+PjJdO2NbYis0Pj4yXT1hO2k9ZDtyZXR1cm4gMH1mdW5jdGlvbiBMcShhLGIpe2E9YXwwO2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wO2g9aTtpPWkrMTZ8MDtkPWgrMTJ8MDtlPWgrOHwwO2Y9aCs0fDA7Zz1oO2NbZT4+Ml09YTtjW2Y+PjJdPWI7ZG8gaWYoKGNbZj4+Ml18MCk+KGNbKGNbZT4+Ml18MCkrMTA4Pj4yXXwwKSl7Y1tnPj4yXT1MZChjWyhjW2U+PjJdfDApKzExMj4+Ml18MCxjW2Y+PjJdPDw0KXwwO2lmKGNbZz4+Ml18MCl7VlIoKGNbZz4+Ml18MCkrKGNbKGNbZT4+Ml18MCkrMTA4Pj4yXTw8NCl8MCwwLChjW2Y+PjJdfDApLShjWyhjW2U+PjJdfDApKzEwOD4+Ml18MCk8PDR8MCl8MDtjWyhjW2U+PjJdfDApKzExMj4+Ml09Y1tnPj4yXTtjWyhjW2U+PjJdfDApKzEwOD4+Ml09Y1tmPj4yXTticmVha31jW2Q+PjJdPTc7YT1jW2Q+PjJdfDA7aT1oO3JldHVybiBhfDB9d2hpbGUoMCk7Y1tkPj4yXT0wO2E9Y1tkPj4yXXwwO2k9aDtyZXR1cm4gYXwwfWZ1bmN0aW9uIE1xKGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MDtwPWk7aT1pKzQ4fDA7ZT1wKzMyfDA7Zj1wKzI4fDA7Zz1wKzI0fDA7aD1wKzIwfDA7bD1wKzE2fDA7aj1wKzEyfDA7bT1wKzh8MDtuPXArNHwwO2s9cDtjW2Y+PjJdPWE7Y1tnPj4yXT1iO2NbaD4+Ml09ZDtjW20+PjJdPTA7Y1tsPj4yXT1JZCgxNil8MDtpZighKGNbbD4+Ml18MCkpe2NbZT4+Ml09NztvPWNbZT4+Ml18MDtpPXA7cmV0dXJuIG98MH1kPWNbbD4+Ml18MDtjW2Q+PjJdPTA7Y1tkKzQ+PjJdPTA7Y1tkKzg+PjJdPTA7Y1tkKzEyPj4yXT0wO2NbKGNbbD4+Ml18MCkrND4+Ml09MTtjW2o+PjJdPTA7d2hpbGUoMSl7aWYoY1ttPj4yXXwwKWJyZWFrO2lmKChjW2o+PjJdfDApPj0oY1tmPj4yXXwwKSlicmVhaztjW24+PjJdPWNbKGNbZz4+Ml18MCkrKGNbaj4+Ml08PDIpPj4yXTtjW2s+PjJdPWtSKGNbbj4+Ml18MCl8MDtpZigoY1trPj4yXXwwKT09MTk/KGVSKDI1NzI4LGNbbj4+Ml18MCwxOSl8MCk9PTA6MCljWyhjW2w+PjJdfDApKzQ+PjJdPTE7ZWxzZSBvPTk7ZG8gaWYoKG98MCk9PTkpe289MDtpZigoY1trPj4yXXwwKT09MTk/KGVSKDI1NzQ4LGNbbj4+Ml18MCwxOSl8MCk9PTA6MCl7Y1soY1tsPj4yXXwwKSs0Pj4yXT0wO2JyZWFrfWlmKChjW2s+PjJdfDApPj0xMT8oZVIoMjU3NjgsY1tuPj4yXXwwLDExKXwwKT09MDowKXtjW20+PjJdPVhxKGNbbD4+Ml18MCwxLChjW24+PjJdfDApKzExfDAsKGNbaz4+Ml18MCktMTF8MCl8MDticmVha31pZigoY1trPj4yXXwwKT49MTE/KGVSKDI1NzgwLGNbbj4+Ml18MCwxMSl8MCk9PTA6MCl7Y1ttPj4yXT1YcShjW2w+PjJdfDAsMCwoY1tuPj4yXXwwKSsxMXwwLChjW2s+PjJdfDApLTExfDApfDA7YnJlYWt9Y1ttPj4yXT0xfXdoaWxlKDApO2Nbaj4+Ml09KGNbaj4+Ml18MCkrMX1pZihjW20+PjJdfDApe05xKGNbbD4+Ml18MCl8MDtjW2w+PjJdPTB9Y1tjW2g+PjJdPj4yXT1jW2w+PjJdO2NbZT4+Ml09Y1ttPj4yXTtvPWNbZT4+Ml18MDtpPXA7cmV0dXJuIG98MH1mdW5jdGlvbiBOcShhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTA7ZT1pO2k9aSsxNnwwO2I9ZSs0fDA7ZD1lO2NbYj4+Ml09YTtpZighKGNbYj4+Ml18MCkpe2k9ZTtyZXR1cm4gMH1jW2Q+PjJdPWNbYj4+Ml07S2QoY1soY1tkPj4yXXwwKSsxMj4+Ml18MCk7S2QoY1tkPj4yXXwwKTtpPWU7cmV0dXJuIDB9ZnVuY3Rpb24gT3EoYSxiLGQsZSl7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wO2w9aTtpPWkrMzJ8MDtmPWwrMjB8MDtnPWwrMTJ8MDtoPWwrOHwwO2o9bCs0fDA7az1sO2NbbCsxNj4+Ml09YTtjW2c+PjJdPWI7Y1toPj4yXT1kO2Nbaj4+Ml09ZTtjW2s+PjJdPUlkKDI4KXwwO2lmKCEoY1trPj4yXXwwKSl7Y1tmPj4yXT03O2U9Y1tmPj4yXXwwO2k9bDtyZXR1cm4gZXwwfWU9Y1trPj4yXXwwO2NbZT4+Ml09MDtjW2UrND4+Ml09MDtjW2UrOD4+Ml09MDtjW2UrMTI+PjJdPTA7Y1tlKzE2Pj4yXT0wO2NbZSsyMD4+Ml09MDtjW2UrMjQ+PjJdPTA7Y1soY1trPj4yXXwwKSs0Pj4yXT1jW2c+PjJdO2RvIGlmKGNbZz4+Ml18MClpZigoY1toPj4yXXwwKTwwKXtlPWtSKGNbZz4+Ml18MCl8MDtjWyhjW2s+PjJdfDApKzg+PjJdPWU7YnJlYWt9ZWxzZXtjWyhjW2s+PjJdfDApKzg+PjJdPWNbaD4+Ml07YnJlYWt9ZWxzZSBjWyhjW2s+PjJdfDApKzg+PjJdPTA7d2hpbGUoMCk7Y1tjW2o+PjJdPj4yXT1jW2s+PjJdO2NbZj4+Ml09MDtlPWNbZj4+Ml18MDtpPWw7cmV0dXJuIGV8MH1mdW5jdGlvbiBQcShhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTA7Yj1pO2k9aSsxNnwwO2U9Yis0fDA7ZD1iO2NbZT4+Ml09YTtjW2Q+PjJdPWNbZT4+Ml07S2QoY1soY1tkPj4yXXwwKSsyMD4+Ml18MCk7S2QoY1tkPj4yXXwwKTtpPWI7cmV0dXJuIDB9ZnVuY3Rpb24gUXEoYixlLGYsZyxoLGope2I9YnwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO3ZhciBrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MDtBPWk7aT1pKzgwfDA7cD1BKzY0fDA7Qj1BKzYwfDA7cT1BKzU2fDA7cj1BKzUyfDA7cz1BKzQ4fDA7dD1BKzQ0fDA7dT1BKzQwfDA7dj1BKzM2fDA7bT1BKzMyfDA7az1BKzI4fDA7eT1BKzI0fDA7dz1BKzIwfDA7ej1BKzE2fDA7eD1BKzEyfDA7bz1BKzh8MDtsPUErNHwwO249QTtjW0I+PjJdPWI7Y1txPj4yXT1lO2Nbcj4+Ml09ZjtjW3M+PjJdPWc7Y1t0Pj4yXT1oO2NbdT4+Ml09ajtjW3Y+PjJdPWNbQj4+Ml07Y1ttPj4yXT1jW2Nbdj4+Ml0+PjJdO2Nbaz4+Ml09MDtjW3c+PjJdPShjWyhjW3Y+PjJdfDApKzQ+PjJdfDApKyhjWyhjW3Y+PjJdfDApKzEyPj4yXXwwKTtjW3o+PjJdPWNbdz4+Ml07Y1tvPj4yXT0oY1soY1t2Pj4yXXwwKSs0Pj4yXXwwKSsoY1soY1t2Pj4yXXwwKSs4Pj4yXXwwKTt3aGlsZSgxKXtpZigoY1t3Pj4yXXwwKT4+PjA+PShjW28+PjJdfDApPj4+MClicmVhaztCPWNbdz4+Ml18MDtjW3c+PjJdPUIrMTtjW2s+PjJdPWRbQj4+MF07ZG8gaWYoKGNbaz4+Ml18MCk+PTE5Mil7Y1trPj4yXT1kWzI1NTYzKygoY1trPj4yXXwwKS0xOTIpPj4wXTt3aGlsZSgxKXtpZigoY1t3Pj4yXXwwKSE9KGNbbz4+Ml18MCkpYj0oKGRbY1t3Pj4yXT4+MF18MCkmMTkyfDApPT0xMjg7ZWxzZSBiPTA7ZT1jW2s+PjJdfDA7aWYoIWIpYnJlYWs7Qj1jW3c+PjJdfDA7Y1t3Pj4yXT1CKzE7Y1trPj4yXT0oZTw8NikrKDYzJihkW0I+PjBdfDApKX1pZigoKGV8MCk+PTEyOD8oY1trPj4yXSYtMjA0OHwwKSE9NTUyOTY6MCk/KGNbaz4+Ml0mLTJ8MCkhPTY1NTM0OjApYnJlYWs7Y1trPj4yXT02NTUzM313aGlsZSgwKTtpZihScShjW20+PjJdfDAsY1trPj4yXXwwKXwwKWJyZWFrO2Nbej4+Ml09Y1t3Pj4yXX1pZigoY1t6Pj4yXXwwKT4+PjA+PShjW28+PjJdfDApPj4+MCl7Y1twPj4yXT0xMDE7Qj1jW3A+PjJdfDA7aT1BO3JldHVybiBCfDB9Y1t5Pj4yXT1jWyhjW3Y+PjJdfDApKzIwPj4yXTt3aGlsZSgxKXtpZigoKGNbeT4+Ml18MCktKGNbKGNbdj4+Ml18MCkrMjA+PjJdfDApfDApPj0oKGNbKGNbdj4+Ml18MCkrMjQ+PjJdfDApLTR8MCkpe2Nbbj4+Ml09TGQoY1soY1t2Pj4yXXwwKSsyMD4+Ml18MCwoY1soY1t2Pj4yXXwwKSsyND4+Ml18MCkrNjR8MCl8MDtpZighKGNbbj4+Ml18MCkpe2I9MjA7YnJlYWt9Y1t5Pj4yXT0oY1tuPj4yXXwwKSsoKGNbeT4+Ml18MCktKGNbKGNbdj4+Ml18MCkrMjA+PjJdfDApKTtjWyhjW3Y+PjJdfDApKzIwPj4yXT1jW24+PjJdO0I9KGNbdj4+Ml18MCkrMjR8MDtjW0I+PjJdPShjW0I+PjJdfDApKzY0fWNbeD4+Ml09Y1t3Pj4yXTtjW2w+PjJdPVNxKGNbaz4+Ml18MCxjWyhjW20+PjJdfDApKzQ+PjJdfDApfDA7ZG8gaWYoY1tsPj4yXXwwKXtiPWNbbD4+Ml18MDtpZigoY1tsPj4yXXwwKTwxMjgpe0I9Y1t5Pj4yXXwwO2NbeT4+Ml09QisxO2FbQj4+MF09YjticmVha31lPWNbbD4+Ml18MDtpZigoYnwwKTwyMDQ4KXtmPWNbeT4+Ml18MDtjW3k+PjJdPWYrMTthW2Y+PjBdPTE5MisoZT4+NiYzMSk7Zj0xMjgrKGNbbD4+Ml0mNjMpJjI1NTtCPWNbeT4+Ml18MDtjW3k+PjJdPUIrMTthW0I+PjBdPWY7YnJlYWt9Yj1jW2w+PjJdfDA7aWYoKGV8MCk8NjU1MzYpe0I9Y1t5Pj4yXXwwO2NbeT4+Ml09QisxO2FbQj4+MF09MjI0KyhiPj4xMiYxNSk7Qj0xMjgrKGNbbD4+Ml0+PjYmNjMpJjI1NTtmPWNbeT4+Ml18MDtjW3k+PjJdPWYrMTthW2Y+PjBdPUI7Zj0xMjgrKGNbbD4+Ml0mNjMpJjI1NTtCPWNbeT4+Ml18MDtjW3k+PjJdPUIrMTthW0I+PjBdPWY7YnJlYWt9ZWxzZXtmPWNbeT4+Ml18MDtjW3k+PjJdPWYrMTthW2Y+PjBdPTI0MCsoYj4+MTgmNyk7Zj0xMjgrKGNbbD4+Ml0+PjEyJjYzKSYyNTU7Qj1jW3k+PjJdfDA7Y1t5Pj4yXT1CKzE7YVtCPj4wXT1mO0I9MTI4KyhjW2w+PjJdPj42JjYzKSYyNTU7Zj1jW3k+PjJdfDA7Y1t5Pj4yXT1mKzE7YVtmPj4wXT1CO2Y9MTI4KyhjW2w+PjJdJjYzKSYyNTU7Qj1jW3k+PjJdfDA7Y1t5Pj4yXT1CKzE7YVtCPj4wXT1mO2JyZWFrfX13aGlsZSgwKTtpZigoY1t3Pj4yXXwwKT4+PjA+PShjW28+PjJdfDApPj4+MCl7Yj00MzticmVha31CPWNbdz4+Ml18MDtjW3c+PjJdPUIrMTtjW2s+PjJdPWRbQj4+MF07ZG8gaWYoKGNbaz4+Ml18MCk+PTE5Mil7Y1trPj4yXT1kWzI1NTYzKygoY1trPj4yXXwwKS0xOTIpPj4wXTt3aGlsZSgxKXtpZigoY1t3Pj4yXXwwKSE9KGNbbz4+Ml18MCkpZT0oKGRbY1t3Pj4yXT4+MF18MCkmMTkyfDApPT0xMjg7ZWxzZSBlPTA7Yj1jW2s+PjJdfDA7aWYoIWUpYnJlYWs7Qj1jW3c+PjJdfDA7Y1t3Pj4yXT1CKzE7Y1trPj4yXT0oYjw8NikrKDYzJihkW0I+PjBdfDApKX1pZigoKGJ8MCk+PTEyOD8oY1trPj4yXSYtMjA0OHwwKSE9NTUyOTY6MCk/KGNbaz4+Ml0mLTJ8MCkhPTY1NTM0OjApYnJlYWs7Y1trPj4yXT02NTUzM313aGlsZSgwKTtpZihScShjW20+PjJdfDAsY1trPj4yXXwwKXwwKWNvbnRpbnVlO2lmKCEoVHEoY1trPj4yXXwwKXwwKSl7Yj00MzticmVha319aWYoKGJ8MCk9PTIwKXtjW3A+PjJdPTc7Qj1jW3A+PjJdfDA7aT1BO3JldHVybiBCfDB9ZWxzZSBpZigoYnwwKT09NDMpe2NbKGNbdj4+Ml18MCkrMTI+PjJdPShjW3c+PjJdfDApLShjWyhjW3Y+PjJdfDApKzQ+PjJdfDApO2NbY1txPj4yXT4+Ml09Y1soY1t2Pj4yXXwwKSsyMD4+Ml07Y1tjW3I+PjJdPj4yXT0oY1t5Pj4yXXwwKS0oY1soY1t2Pj4yXXwwKSsyMD4+Ml18MCk7Y1tjW3M+PjJdPj4yXT0oY1t6Pj4yXXwwKS0oY1soY1t2Pj4yXXwwKSs0Pj4yXXwwKTtjW2NbdD4+Ml0+PjJdPShjW3g+PjJdfDApLShjWyhjW3Y+PjJdfDApKzQ+PjJdfDApO3o9KGNbdj4+Ml18MCkrMTZ8MDtCPWNbej4+Ml18MDtjW3o+PjJdPUIrMTtjW2NbdT4+Ml0+PjJdPUI7Y1twPj4yXT0wO0I9Y1twPj4yXXwwO2k9QTtyZXR1cm4gQnwwfXJldHVybiAwfWZ1bmN0aW9uIFJxKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wO2Q9aTtpPWkrMTZ8MDtmPWQrNHwwO2U9ZDtjW2Y+PjJdPWE7Y1tlPj4yXT1iO2E9VnEoY1tlPj4yXXwwKXwwO2E9YV4oV3EoY1tmPj4yXXwwLGNbZT4+Ml18MCl8MCk7aT1kO3JldHVybiBhfDB9ZnVuY3Rpb24gU3EoYSxiKXthPWF8MDtiPWJ8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wO3A9aTtpPWkrNDh8MDtmPXArMzJ8MDtnPXArMjh8MDtvPXArMjR8MDtqPXArMjB8MDtrPXArMTZ8MDtsPXArMTJ8MDttPXArOHwwO2g9cCs0fDA7bj1wO2NbZj4+Ml09YTtjW2c+PjJdPWI7Y1tvPj4yXT1jW2Y+PjJdO2I9Y1tmPj4yXXwwO2lmKChjW2Y+PjJdfDApPDEyOCl7aWYoISgoYnwwKT49NjUmKGNbZj4+Ml18MCk8PTkwKSl7bz1jW28+PjJdfDA7aT1wO3JldHVybiBvfDB9Y1tvPj4yXT0oY1tmPj4yXXwwKSszMjtvPWNbbz4+Ml18MDtpPXA7cmV0dXJuIG98MH1pZigoYnwwKT49NjU1MzYpe2lmKCEoKGNbZj4+Ml18MCk+PTY2NTYwJihjW2Y+PjJdfDApPDY2NjAwKSl7bz1jW28+PjJdfDA7aT1wO3JldHVybiBvfDB9Y1tvPj4yXT0oY1tmPj4yXXwwKSs0MDtvPWNbbz4+Ml18MDtpPXA7cmV0dXJuIG98MH1jW2o+PjJdPTE2MjtjW2s+PjJdPTA7Y1tsPj4yXT0tMTt3aGlsZSgxKXtpZigoY1tqPj4yXXwwKTwoY1trPj4yXXwwKSlicmVhaztjW20+PjJdPSgoY1tqPj4yXXwwKSsoY1trPj4yXXwwKXwwKS8yfDA7Y1toPj4yXT0oY1tmPj4yXXwwKS0oZVs5Nzk4KyhjW20+PjJdPDwyKT4+MV18MCk7Yj1jW20+PjJdfDA7aWYoKGNbaD4+Ml18MCk+PTApe2NbbD4+Ml09YjtjW2s+PjJdPShjW20+PjJdfDApKzE7Y29udGludWV9ZWxzZXtjW2o+PjJdPWItMTtjb250aW51ZX19aWYoKChjW2w+PjJdfDApPj0wPyhjW24+PjJdPTk3OTgrKGNbbD4+Ml08PDIpLChjW2Y+PjJdfDApPCgoZVtjW24+PjJdPj4xXXwwKSsoZFsoY1tuPj4yXXwwKSszPj4wXXwwKXwwKSk6MCk/MD09KDEmKGRbKGNbbj4+Ml18MCkrMj4+MF18MCkmKChlW2Nbbj4+Ml0+PjFdfDApXmNbZj4+Ml0pfDApOjApY1tvPj4yXT0oY1tmPj4yXXwwKSsoZVsxMDQ1MCsoKGRbKGNbbj4+Ml18MCkrMj4+MF18MCk+PjE8PDEpPj4xXXwwKSY2NTUzNTtpZighKGNbZz4+Ml18MCkpe289Y1tvPj4yXXwwO2k9cDtyZXR1cm4gb3wwfWNbbz4+Ml09VXEoY1tvPj4yXXwwKXwwO289Y1tvPj4yXXwwO2k9cDtyZXR1cm4gb3wwfWZ1bmN0aW9uIFRxKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTAsZz0wO2c9aTtpPWkrMTZ8MDtmPWcrMTJ8MDtiPWcrOHwwO2Q9Zys0fDA7ZT1nO2NbYj4+Ml09YTtjW2Q+PjJdPTEzNDM4OTcyNztjW2U+PjJdPTIyMTY4ODtpZigoY1tiPj4yXXwwKTw3Njh8KGNbYj4+Ml18MCk+ODE3KXtjW2Y+PjJdPTA7Zj1jW2Y+PjJdfDA7aT1nO3JldHVybiBmfDB9aWYoKGNbYj4+Ml18MCk8ODAwKWI9Y1tkPj4yXSYxPDwoY1tiPj4yXXwwKS03Njg7ZWxzZSBiPWNbZT4+Ml0mMTw8KGNbYj4+Ml18MCktNzY4LTMyO2NbZj4+Ml09YjtmPWNbZj4+Ml18MDtpPWc7cmV0dXJuIGZ8MH1mdW5jdGlvbiBVcShiKXtiPWJ8MDt2YXIgZD0wLGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MDtwPWk7aT1pKzMzNnwwO2c9cCsyMHwwO2o9cCsyNHwwO2g9cCsyMjZ8MDtvPXArMTZ8MDttPXArMTJ8MDtrPXArOHwwO2w9cCs0fDA7bj1wO2NbZz4+Ml09YjtUUihqfDAsMTA2MDQsMjAyKXwwO2I9aDtkPTI1NjI3O2Y9YisxMDF8MDtkb3thW2I+PjBdPWFbZD4+MF18MDtiPWIrMXwwO2Q9ZCsxfDB9d2hpbGUoKGJ8MCk8KGZ8MCkpO2Nbbz4+Ml09Y1tnPj4yXTw8M3w3O2NbbT4+Ml09MDtjW2s+PjJdPTEwMDtjW2w+PjJdPTA7d2hpbGUoMSl7aWYoKGNbaz4+Ml18MCk8KGNbbD4+Ml18MCkpYnJlYWs7Y1tuPj4yXT0oKGNbaz4+Ml18MCkrKGNbbD4+Ml18MCl8MCkvMnwwO2I9Y1tuPj4yXXwwO2lmKChjW28+PjJdfDApPj4+MD49KGVbaisoY1tuPj4yXTw8MSk+PjFdfDApPj4+MCl7Y1ttPj4yXT1iO2NbbD4+Ml09KGNbbj4+Ml18MCkrMTtjb250aW51ZX1lbHNle2Nbaz4+Ml09Yi0xO2NvbnRpbnVlfX1pZigoY1tnPj4yXXwwKT4oKGVbaisoY1ttPj4yXTw8MSk+PjFdPj4zKSsoZVtqKyhjW20+PjJdPDwxKT4+MV0mNyl8MCkpe289Y1tnPj4yXXwwO2k9cDtyZXR1cm4gb3wwfWVsc2V7bz1hW2grKGNbbT4+Ml18MCk+PjBdfDA7aT1wO3JldHVybiBvfDB9cmV0dXJuIDB9ZnVuY3Rpb24gVnEoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTA7az1pO2k9aSszMnwwO2I9aysyNHwwO2Q9aysyMHwwO2o9aysxNnwwO2c9aysxMnwwO2U9ays4fDA7Zj1rKzR8MDtoPWs7Y1tkPj4yXT1hO2E9Y1tkPj4yXXwwO2lmKChjW2Q+PjJdfDApPDEyOCl7Y1tiPj4yXT0oY1syMzg0KyhhPj41PDwyKT4+Ml0mMTw8KGNbZD4+Ml0mMzEpfDApPT0wJjE7aj1jW2I+PjJdfDA7aT1rO3JldHVybiBqfDB9aWYoKGF8MCk+PTQxOTQzMDQpe2NbYj4+Ml09MTtqPWNbYj4+Ml18MDtpPWs7cmV0dXJuIGp8MH1jW2o+PjJdPWNbZD4+Ml08PDEwfDEwMjM7Y1tnPj4yXT0wO2NbZT4+Ml09NDA1O2NbZj4+Ml09MDt3aGlsZSgxKXtpZigoY1tlPj4yXXwwKTwoY1tmPj4yXXwwKSlicmVhaztjW2g+PjJdPSgoY1tlPj4yXXwwKSsoY1tmPj4yXXwwKXwwKS8yfDA7YT1jW2g+PjJdfDA7aWYoKGNbaj4+Ml18MCk+Pj4wPj0oY1syNDAwKyhjW2g+PjJdPDwyKT4+Ml18MCk+Pj4wKXtjW2c+PjJdPWE7Y1tmPj4yXT0oY1toPj4yXXwwKSsxO2NvbnRpbnVlfWVsc2V7Y1tlPj4yXT1hLTE7Y29udGludWV9fWNbYj4+Ml09KGNbZD4+Ml18MCk+Pj4wPj0oKChjWzI0MDArKGNbZz4+Ml08PDIpPj4yXXwwKT4+PjEwKSsoY1syNDAwKyhjW2c+PjJdPDwyKT4+Ml0mMTAyMyl8MCk+Pj4wJjE7aj1jW2I+PjJdfDA7aT1rO3JldHVybiBqfDB9ZnVuY3Rpb24gV3EoYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MDtsPWk7aT1pKzMyfDA7ZT1sKzI0fDA7ZD1sKzIwfDA7Zj1sKzE2fDA7Zz1sKzEyfDA7aj1sKzh8MDtoPWwrNHwwO2s9bDtjW2Q+PjJdPWE7Y1tmPj4yXT1iO2E6ZG8gaWYoKGNbKGNbZD4+Ml18MCkrOD4+Ml18MCk+MCl7Y1tnPj4yXT1jWyhjW2Q+PjJdfDApKzEyPj4yXTtjW2o+PjJdPTA7Y1toPj4yXT0oY1soY1tkPj4yXXwwKSs4Pj4yXXwwKS0xO3doaWxlKDEpe2lmKChjW2g+PjJdfDApPChjW2o+PjJdfDApKWJyZWFrIGE7Y1trPj4yXT0oKGNbaD4+Ml18MCkrKGNbaj4+Ml18MCl8MCkvMnwwO2lmKChjW2Y+PjJdfDApPT0oY1soY1tnPj4yXXwwKSsoY1trPj4yXTw8Mik+PjJdfDApKWJyZWFrO2Q9Y1trPj4yXXwwO2lmKChjW2Y+PjJdfDApPihjWyhjW2c+PjJdfDApKyhjW2s+PjJdPDwyKT4+Ml18MCkpe2Nbaj4+Ml09ZCsxO2NvbnRpbnVlfWVsc2V7Y1toPj4yXT1kLTE7Y29udGludWV9fWNbZT4+Ml09MTtrPWNbZT4+Ml18MDtpPWw7cmV0dXJuIGt8MH13aGlsZSgwKTtjW2U+PjJdPTA7az1jW2U+PjJdfDA7aT1sO3JldHVybiBrfDB9ZnVuY3Rpb24gWHEoYSxiLGUsZil7YT1hfDA7Yj1ifDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTA7dD1pO2k9aSs2NHwwO2o9dCs0OHwwO2s9dCs0NHwwO2w9dCs0MHwwO2c9dCszNnwwO3U9dCszMnwwO3I9dCsyOHwwO3M9dCsyNHwwO289dCsyMHwwO2g9dCsxNnwwO209dCsxMnwwO3E9dCs4fDA7bj10KzR8MDtwPXQ7Y1trPj4yXT1hO2NbbD4+Ml09YjtjW2c+PjJdPWU7Y1t1Pj4yXT1mO2Nbcj4+Ml09Y1tnPj4yXTtjW3M+PjJdPShjW3I+PjJdfDApKyhjW3U+PjJdfDApO2NbaD4+Ml09MDt3aGlsZSgxKXtpZigoY1tyPj4yXXwwKT4+PjA+PShjW3M+PjJdfDApPj4+MClicmVhazt1PWNbcj4+Ml18MDtjW3I+PjJdPXUrMTtjW28+PjJdPWRbdT4+MF07ZG8gaWYoKGNbbz4+Ml18MCk+PTE5Mil7Y1tvPj4yXT1kWzI1NTYzKygoY1tvPj4yXXwwKS0xOTIpPj4wXTt3aGlsZSgxKXtpZigoY1tyPj4yXXwwKSE9KGNbcz4+Ml18MCkpYj0oKGRbY1tyPj4yXT4+MF18MCkmMTkyfDApPT0xMjg7ZWxzZSBiPTA7Zj1jW28+PjJdfDA7aWYoIWIpYnJlYWs7dT1jW3I+PjJdfDA7Y1tyPj4yXT11KzE7Y1tvPj4yXT0oZjw8NikrKDYzJihkW3U+PjBdfDApKX1pZigoKGZ8MCk+PTEyOD8oY1tvPj4yXSYtMjA0OHwwKSE9NTUyOTY6MCk/KGNbbz4+Ml0mLTJ8MCkhPTY1NTM0OjApYnJlYWs7Y1tvPj4yXT02NTUzM313aGlsZSgwKTt1PVZxKGNbbz4+Ml18MCl8MDtpZigodXwwKT09KGNbbD4+Ml18MCkpY29udGludWU7aWYoVHEoY1tvPj4yXXwwKXwwKWNvbnRpbnVlO2NbaD4+Ml09KGNbaD4+Ml18MCkrMX1pZihjW2g+PjJdfDApe2NbbT4+Ml09TGQoY1soY1trPj4yXXwwKSsxMj4+Ml18MCwoY1soY1trPj4yXXwwKSs4Pj4yXXwwKSsoY1toPj4yXXwwKTw8Mil8MDtpZighKGNbbT4+Ml18MCkpe2Nbaj4+Ml09Nzt1PWNbaj4+Ml18MDtpPXQ7cmV0dXJuIHV8MH1jW3E+PjJdPWNbKGNbaz4+Ml18MCkrOD4+Ml07Y1tyPj4yXT1jW2c+PjJdO3doaWxlKDEpe2lmKChjW3I+PjJdfDApPj4+MD49KGNbcz4+Ml18MCk+Pj4wKWJyZWFrO3U9Y1tyPj4yXXwwO2Nbcj4+Ml09dSsxO2Nbbz4+Ml09ZFt1Pj4wXTtkbyBpZigoY1tvPj4yXXwwKT49MTkyKXtjW28+PjJdPWRbMjU1NjMrKChjW28+PjJdfDApLTE5Mik+PjBdO3doaWxlKDEpe2lmKChjW3I+PjJdfDApIT0oY1tzPj4yXXwwKSliPSgoZFtjW3I+PjJdPj4wXXwwKSYxOTJ8MCk9PTEyODtlbHNlIGI9MDtmPWNbbz4+Ml18MDtpZighYilicmVhazt1PWNbcj4+Ml18MDtjW3I+PjJdPXUrMTtjW28+PjJdPShmPDw2KSsoNjMmKGRbdT4+MF18MCkpfWlmKCgoZnwwKT49MTI4PyhjW28+PjJdJi0yMDQ4fDApIT01NTI5NjowKT8oY1tvPj4yXSYtMnwwKSE9NjU1MzQ6MClicmVhaztjW28+PjJdPTY1NTMzfXdoaWxlKDApO3U9VnEoY1tvPj4yXXwwKXwwO2lmKCh1fDApPT0oY1tsPj4yXXwwKSljb250aW51ZTtpZihUcShjW28+PjJdfDApfDApY29udGludWU7Y1tuPj4yXT0wO3doaWxlKDEpe2lmKChjW24+PjJdfDApPj0oY1txPj4yXXwwKSlicmVhaztpZigoY1soY1ttPj4yXXwwKSsoY1tuPj4yXTw8Mik+PjJdfDApPj0oY1tvPj4yXXwwKSlicmVhaztjW24+PjJdPShjW24+PjJdfDApKzF9Y1twPj4yXT1jW3E+PjJdO3doaWxlKDEpe2lmKChjW3A+PjJdfDApPD0oY1tuPj4yXXwwKSlicmVhaztjWyhjW20+PjJdfDApKyhjW3A+PjJdPDwyKT4+Ml09Y1soY1ttPj4yXXwwKSsoKGNbcD4+Ml18MCktMTw8Mik+PjJdO2NbcD4+Ml09KGNbcD4+Ml18MCkrLTF9Y1soY1ttPj4yXXwwKSsoY1tuPj4yXTw8Mik+PjJdPWNbbz4+Ml07Y1txPj4yXT0oY1txPj4yXXwwKSsxfWNbKGNbaz4+Ml18MCkrMTI+PjJdPWNbbT4+Ml07Y1soY1trPj4yXXwwKSs4Pj4yXT1jW3E+PjJdfWNbaj4+Ml09MDt1PWNbaj4+Ml18MDtpPXQ7cmV0dXJuIHV8MH1mdW5jdGlvbiBZcShhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTA7aD1pO2k9aSsxNnwwO2o9aCsxMnwwO2U9aCs4fDA7Zj1oKzR8MDtnPWg7Y1tqPj4yXT1hO2NbZT4+Ml09YjtjW2Y+PjJdPWQ7Y1tnPj4yXT1jWyhjW2o+PjJdfDApKzQ+PjJdO21nKGNbaj4+Ml18MCk7aWYoISgoY1tlPj4yXXwwKSE9MD8oY1soY1tnPj4yXXwwKSs0OD4+Ml18MCk9PTA6MCkpe2o9Y1tnPj4yXXwwO2o9ais0OHwwO2o9Y1tqPj4yXXwwO2k9aDtyZXR1cm4ganwwfWo9Y1tlPj4yXXwwO2o9c2goMCxqLCgoanwwKTwwKTw8MzE+PjMxKXwwO2NbKGNbZz4+Ml18MCkrNDg+PjJdPWo7Y1soY1tnPj4yXXwwKSs1Mj4+Ml09Y1tmPj4yXTtqPWNbZz4+Ml18MDtqPWorNDh8MDtqPWNbaj4+Ml18MDtpPWg7cmV0dXJuIGp8MH1mdW5jdGlvbiBacShhKXthPWF8MDt2YXIgYj0wLGU9MDtlPWk7aT1pKzE2fDA7Yj1lO2NbYj4+Ml09YTtpPWU7cmV0dXJuIChkWyhjW2I+PjJdfDApKzY4Pj4wXXwwfDApPT0yfDB9ZnVuY3Rpb24gX3EoYixkLGUsZil7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTA7Zz1pO2k9aSsxNnwwO2w9ZysxMnwwO2s9Zys4fDA7aj1nKzR8MDtoPWc7Y1tsPj4yXT1iO2Nbaz4+Ml09ZDtjW2o+PjJdPWU7Y1toPj4yXT1mO2FbY1toPj4yXT4+MF09MDtmPVdiW2NbKGNbbD4+Ml18MCkrMzY+PjJdJjI1NV0oY1tsPj4yXXwwLGNbaz4+Ml18MCxjW2o+PjJdfDAsY1toPj4yXXwwKXwwO2k9ZztyZXR1cm4gZnwwfWZ1bmN0aW9uICRxKGIpe2I9YnwwO3ZhciBkPTAsZT0wLGY9MDtmPWk7aT1pKzE2fDA7ZD1mKzR8MDtlPWY7Y1tkPj4yXT1iO2NbZT4+Ml09VXQoY1tkPj4yXXwwKXwwO2lmKCEoYVtjW2U+PjJdPj4wXXwwKSl7aT1mO3JldHVybn1hW2NbZT4+Ml0+PjBdPTA7aWYoKFZ0KGNbZD4+Ml18MCl8MCk8PTEpe2k9ZjtyZXR1cm59V3QoY1tlPj4yXXwwKXwwO2k9ZjtyZXR1cm59ZnVuY3Rpb24gYXIoZCxlLGYsZyxoLGosayl7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7dmFyIGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MCxFPTAsRj0wLEc9MCxIPTAsST0wLEo9MCxLPTAsTD0wO0s9aTtpPWkrMTEyfDA7cj1LKzk2fDA7cz1LKzkyfDA7dD1LKzg4fDA7dT1LKzg0fDA7dj1LKzgwfDA7TD1LKzc2fDA7dz1LKzcyfDA7eD1LKzY4fDA7bj1LKzY0fDA7Qz1LKzYwfDA7RD1LKzU2fDA7Rz1LKzUyfDA7QT1LKzQ4fDA7RT1LKzQ0fDA7bD1LKzQwfDA7ST1LKzM2fDA7Qj1LKzMyfDA7SD1LKzI4fDA7bz1LKzI0fDA7Rj1LKzIwfDA7cT1LKzE2fDA7bT1LKzEyfDA7cD1LKzh8MDt5PUsrNHwwO3o9SztjW3M+PjJdPWQ7Y1t0Pj4yXT1lO2NbdT4+Ml09ZjtjW3Y+PjJdPWc7Y1tMPj4yXT1oO2Nbdz4+Ml09ajtjW3g+PjJdPWs7Y1tDPj4yXT0wO2NbRD4+Ml09MDtjW0c+PjJdPTA7Y1tBPj4yXT0wO2NbRT4+Ml09MDtjW0k+PjJdPTA7Y1tCPj4yXT0wO2NbSD4+Ml09KGNbTD4+Ml0mMXwwKT09MCYxO2Nbbz4+Ml09c3QoKXwwO2NbRj4+Ml09NDA5NjtjW3E+PjJdPTA7Y1ttPj4yXT0wO2NbbD4+Ml09KHR0KGNbcz4+Ml18MCl8MCkrNyYtODtjW2NbdD4+Ml0+PjJdPTA7ZG8gaWYoKChjW0w+PjJdJjJ8MCkhPTA/KGNbQT4+Ml09MSwoY1t1Pj4yXXwwKSE9MCk6MCk/KGFbY1t1Pj4yXT4+MF18MCkhPTA6MCl7Y1tJPj4yXT1xaCgwLGNbdT4+Ml18MCl8MDtpZihjW0k+PjJdfDApe2NbQj4+Ml09SmYoY1tJPj4yXXwwKXwwO2NbdT4+Ml09MDticmVha31jW3I+PjJdPTc7TD1jW3I+PjJdfDA7aT1LO3JldHVybiBMfDB9d2hpbGUoMCk7aWYoKGNbdT4+Ml18MCkhPTA/KGFbY1t1Pj4yXT4+MF18MCkhPTA6MCl7Y1tCPj4yXT0oY1soY1tzPj4yXXwwKSs4Pj4yXXwwKSsxO0w9Y1tCPj4yXTw8MTtjW0k+PjJdPUNoKDAsTCwoKEx8MCk8MCk8PDMxPj4zMSl8MDtpZighKGNbST4+Ml18MCkpe2Nbcj4+Ml09NztMPWNbcj4+Ml18MDtpPUs7cmV0dXJuIEx8MH1hW2NbST4+Ml0+PjBdPTA7Y1tEPj4yXT1fcShjW3M+PjJdfDAsY1t1Pj4yXXwwLGNbQj4+Ml18MCxjW0k+PjJdfDApfDA7Y1tCPj4yXT1KZihjW0k+PjJdfDApfDA7TD0oSmYoY1t1Pj4yXXwwKXwwKSsxfDA7TD0oY1t1Pj4yXXwwKStMfDA7Y1txPj4yXT1MO2NbcD4+Ml09TDt3aGlsZSgxKXtoPWNbcD4+Ml18MDtpZighKGFbY1twPj4yXT4+MF18MCkpYnJlYWs7TD0oSmYoaCl8MCkrMXwwO2NbcD4+Ml09KGNbcD4+Ml18MCkrTDtMPShKZihjW3A+PjJdfDApfDApKzF8MDtjW3A+PjJdPShjW3A+PjJdfDApK0x9Y1ttPj4yXT1oKzEtKGNbcT4+Ml18MCk7aWYoKGNbRD4+Ml18MCk9PTA/KChjW0I+PjJdfDApKzh8MCk+KGNbKGNbcz4+Ml18MCkrOD4+Ml18MCk6MCljW0Q+PjJdPW90KDUxMDA2KXwwO2lmKGNbRD4+Ml18MCl7VGYoMCxjW0k+PjJdfDApO2Nbcj4+Ml09Y1tEPj4yXTtMPWNbcj4+Ml18MDtpPUs7cmV0dXJuIEx8MH19Y1tuPj4yXT1rZygyMjQrKChjW28+PjJdfDApKzcmLTgpKygoY1soY1tzPj4yXXwwKSs0Pj4yXXwwKSs3Ji04KSsoY1tsPj4yXTw8MSkrKGNbQj4+Ml18MCkrMSsoY1ttPj4yXXwwKSsoY1tCPj4yXXwwKSs4KzIrKGNbQj4+Ml18MCkrNCsyfDAsMCl8MDtpZighKGNbbj4+Ml18MCkpe1RmKDAsY1tJPj4yXXwwKTtjW3I+PjJdPTc7TD1jW3I+PjJdfDA7aT1LO3JldHVybiBMfDB9Y1tDPj4yXT1jW24+PjJdO0w9KGNbbj4+Ml18MCkrMjI0fDA7Y1tuPj4yXT1MO2NbKGNbQz4+Ml18MCkrMjEyPj4yXT1MO0w9KGNbbj4+Ml18MCkrKChjW28+PjJdfDApKzcmLTgpfDA7Y1tuPj4yXT1MO2NbKGNbQz4+Ml18MCkrNjQ+PjJdPUw7TD0oY1tuPj4yXXwwKSsoKGNbKGNbcz4+Ml18MCkrND4+Ml18MCkrNyYtOCl8MDtjW24+PjJdPUw7Y1soY1tDPj4yXXwwKSs3Mj4+Ml09TDtMPShjW24+PjJdfDApKyhjW2w+PjJdfDApfDA7Y1tuPj4yXT1MO2NbKGNbQz4+Ml18MCkrNjg+PjJdPUw7TD0oY1tuPj4yXXwwKSsoY1tsPj4yXXwwKXwwO2Nbbj4+Ml09TDtjWyhjW0M+PjJdfDApKzE3Nj4+Ml09TDtpZihjW0k+PjJdfDApe0w9KGNbbj4+Ml18MCkrKChjW0I+PjJdfDApKzErKGNbbT4+Ml18MCkpfDA7Y1tuPj4yXT1MO2NbKGNbQz4+Ml18MCkrMTgwPj4yXT1MO1RSKGNbKGNbQz4+Ml18MCkrMTc2Pj4yXXwwLGNbST4+Ml18MCxjW0I+PjJdfDApfDA7aWYoY1ttPj4yXXwwKVRSKChjWyhjW0M+PjJdfDApKzE3Nj4+Ml18MCkrKChjW0I+PjJdfDApKzEpfDAsY1txPj4yXXwwLGNbbT4+Ml18MCl8MDtUUihjWyhjW0M+PjJdfDApKzE4MD4+Ml18MCxjW0k+PjJdfDAsY1tCPj4yXXwwKXwwO2g9KGNbKGNbQz4+Ml18MCkrMTgwPj4yXXwwKSsoY1tCPj4yXXwwKXwwO2c9MjU5ODk7ZD1oKzEwfDA7ZG97YVtoPj4wXT1hW2c+PjBdfDA7aD1oKzF8MDtnPWcrMXwwfXdoaWxlKChofDApPChkfDApKTtjWyhjW0M+PjJdfDApKzIyMD4+Ml09KGNbKGNbQz4+Ml18MCkrMTgwPj4yXXwwKSsoKGNbQj4+Ml18MCkrOCsxKTtUUihjWyhjW0M+PjJdfDApKzIyMD4+Ml18MCxjW0k+PjJdfDAsY1tCPj4yXXwwKXwwO0w9KGNbKGNbQz4+Ml18MCkrMjIwPj4yXXwwKSsoY1tCPj4yXXwwKXwwO2FbTD4+MF09YVsyNTk5OV18MDthW0wrMT4+MF09YVsyNmUzXXwwO2FbTCsyPj4wXT1hWzI2MDAxXXwwO2FbTCszPj4wXT1hWzI2MDAyXXwwO2FbTCs0Pj4wXT1hWzI2MDAzXXwwO1RmKDAsY1tJPj4yXXwwKX1jW2NbQz4+Ml0+PjJdPWNbcz4+Ml07Y1soY1tDPj4yXXwwKSsxNTI+PjJdPWNbdz4+Ml07ZG8gaWYoKGNbdT4+Ml18MCkhPTA/KGFbY1t1Pj4yXT4+MF18MCkhPTA6MCl7Y1t5Pj4yXT0wO2NbRD4+Ml09VXIoY1tzPj4yXXwwLGNbKGNbQz4+Ml18MCkrMTc2Pj4yXXwwLGNbKGNbQz4+Ml18MCkrNjQ+PjJdfDAsY1t3Pj4yXXwwLHkpfDA7Y1tFPj4yXT1jW3k+PjJdJjE7aWYoIShjW0Q+PjJdfDApKXtjW3o+PjJdPWJzKGNbKGNbQz4+Ml18MCkrNjQ+PjJdfDApfDA7ZG8gaWYoKGNbRT4+Ml18MCk9PTA/KGFzKGNbQz4+Ml18MCksKGNbRj4+Ml18MCk+Pj4wPChjWyhjW0M+PjJdfDApKzE1Nj4+Ml18MCk+Pj4wKTowKWlmKChjWyhjW0M+PjJdfDApKzE1Nj4+Ml18MCk+Pj4wPjgxOTIpe2NbRj4+Ml09ODE5MjticmVha31lbHNle2NbRj4+Ml09Y1soY1tDPj4yXXwwKSsxNTY+PjJdO2JyZWFrfXdoaWxlKDApO0w9KElmKGNbdT4+Ml18MCwyNjAwNSwwKXwwKSYyNTU7YVsoY1tDPj4yXXwwKSsxND4+MF09TDtpZigoY1t6Pj4yXSY4MTkyfDApPT0wPyhJZihjW3U+PjJdfDAsMjYwMTIsMCl8MCk9PTA6MClicmVhaztjW3c+PjJdPWNbdz4+Ml18MTtKPTM2fX1lbHNlIEo9MzY7d2hpbGUoMCk7aWYoKEp8MCk9PTM2KXtjW0c+PjJdPTE7YVsoY1tDPj4yXXwwKSsxNz4+MF09MTthWyhjW0M+PjJdfDApKzE4Pj4wXT00O2FbKGNbQz4+Ml18MCkrMTQ+PjBdPTE7Y1tFPj4yXT1jW3c+PjJdJjF9aWYoIShjW0Q+PjJdfDApKWNbRD4+Ml09VmkoY1tDPj4yXXwwLEYsLTEpfDA7aWYoIShjW0Q+PjJdfDApKXtjW3Y+PjJdPShjW3Y+PjJdfDApKzcmLTg7Y1tEPj4yXT12dChjW0Y+PjJdfDAsY1t2Pj4yXXwwLCgoY1tBPj4yXXwwKSE9MF4xKSYxLChjW0E+PjJdfDApIT0wXjE/MTg2OjAsY1tDPj4yXXwwLGNbKGNbQz4+Ml18MCkrMjEyPj4yXXwwKXwwfWlmKGNbRD4+Ml18MCl7b3IoY1soY1tDPj4yXXwwKSs2ND4+Ml18MCk7JGkoY1soY1tDPj4yXXwwKSsyMDg+PjJdfDApO0tkKGNbQz4+Ml18MCk7Y1tyPj4yXT1jW0Q+PjJdO0w9Y1tyPj4yXXwwO2k9SztyZXR1cm4gTHwwfWFbKGNbQz4+Ml18MCkrNj4+MF09Y1tIPj4yXTtjWyhjW0M+PjJdfDApKzE2ND4+Ml09MTA3Mzc0MTgyMzthWyhjW0M+PjJdfDApKzEzPj4wXT1jW0c+PjJdO2FbKGNbQz4+Ml18MCkrND4+MF09Y1tHPj4yXTthWyhjW0M+PjJdfDApKzE5Pj4wXT1hWyhjW0M+PjJdfDApKzEzPj4wXXwwO2FbKGNbQz4+Ml18MCkrMTY+PjBdPWNbQT4+Ml07YVsoY1tDPj4yXXwwKSsxNT4+MF09Y1tFPj4yXTthWyhjW0M+PjJdfDApKzc+PjBdPWFbKGNbQz4+Ml18MCkrMTM+PjBdfDA7aWYoIShhWyhjW0M+PjJdfDApKzc+PjBdfDApKXthWyhjW0M+PjJdfDApKzg+PjBdPTE7YVsoY1tDPj4yXXwwKSs5Pj4wXT0wO2FbKGNbQz4+Ml18MCkrMTI+PjBdPTI7YVsoY1tDPj4yXXwwKSsxMT4+MF09MzQ7YVsoY1tDPj4yXXwwKSsxMD4+MF09Mn1iWyhjW0M+PjJdfDApKzE0OD4+MV09Y1t2Pj4yXTtMPShjW0M+PjJdfDApKzE2OHwwO2NbTD4+Ml09LTE7Y1tMKzQ+PjJdPS0xO2FzKGNbQz4+Ml18MCk7aWYoY1tIPj4yXXwwKXtpZihjW0E+PjJdfDApYVsoY1tDPj4yXXwwKSs1Pj4wXT00fWVsc2UgYVsoY1tDPj4yXXwwKSs1Pj4wXT0yO2NbKGNbQz4+Ml18MCkrMjA0Pj4yXT1jW3g+PjJdO2NbY1t0Pj4yXT4+Ml09Y1tDPj4yXTtjW3I+PjJdPTA7TD1jW3I+PjJdfDA7aT1LO3JldHVybiBMfDB9ZnVuY3Rpb24gYnIoYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MDtlPWk7aT1pKzE2fDA7Zj1lKzh8MDtnPWU7Y1tmPj4yXT1hO2E9ZztjW2E+PjJdPWI7Y1thKzQ+PjJdPWQ7Yj1nO2Q9Y1tiKzQ+PjJdfDA7YT0oY1tmPj4yXXwwKSsxMzZ8MDtjW2E+PjJdPWNbYj4+Ml07Y1thKzQ+PjJdPWQ7YWooY1tmPj4yXXwwKTtpPWU7cmV0dXJufWZ1bmN0aW9uIGNyKGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MDtqPWk7aT1pKzE2fDA7ZT1qKzEyfDA7Zj1qKzh8MDtnPWorNHwwO2g9ajtjW2U+PjJdPWE7Y1tmPj4yXT1iO2NbZz4+Ml09ZDtjW2g+PjJdPTA7VlIoY1tnPj4yXXwwLDAsY1tmPj4yXXwwKXwwO2lmKCEoY1tjWyhjW2U+PjJdfDApKzY0Pj4yXT4+Ml18MCkpe2g9Y1toPj4yXXwwO2k9ajtyZXR1cm4gaHwwfWE9ZXMoY1soY1tlPj4yXXwwKSs2ND4+Ml18MCxjW2c+PjJdfDAsY1tmPj4yXXwwLDAsMCl8MDtjW2g+PjJdPWE7Y1toPj4yXT0oY1toPj4yXXwwKT09NTIyPzA6YTtoPWNbaD4+Ml18MDtpPWo7cmV0dXJuIGh8MH1mdW5jdGlvbiBkcihhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTA7Yj1pO2k9aSsxNnwwO2U9Yis0fDA7ZD1iO2NbZT4+Ml09YTtjW2Q+PjJdPWNbZT4+Ml07YT1ydCgoY1soY1tkPj4yXXwwKSs0Pj4yXXwwKSszODB8MCl8MDtpPWI7cmV0dXJuIGF8MH1mdW5jdGlvbiBlcihhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTA7Zz1pO2k9aSsxNnwwO2U9ZysxMnwwO2o9Zys4fDA7aD1nKzR8MDtmPWc7Y1tlPj4yXT1hO2Nbaj4+Ml09YjtjW2g+PjJdPWQ7Y1soY1tlPj4yXXwwKSsxODQ+PjJdPWNbaj4+Ml07Y1soY1tlPj4yXXwwKSsxODg+PjJdPWNbaD4+Ml07aWYoIShjW2NbKGNbZT4+Ml18MCkrNjQ+PjJdPj4yXXwwKSl7aT1nO3JldHVybn1jW2Y+PjJdPShjW2U+PjJdfDApKzE4NDtUcyhjWyhjW2U+PjJdfDApKzY0Pj4yXXwwLDE1LGNbZj4+Ml18MCk7aT1nO3JldHVybn1mdW5jdGlvbiBmcihiKXtiPWJ8MDt2YXIgZD0wLGU9MDtlPWk7aT1pKzE2fDA7ZD1lO2NbZD4+Ml09YjtpPWU7cmV0dXJuIGFbKGNbZD4+Ml18MCkrMTU+PjBdfDB9ZnVuY3Rpb24gZ3IoYSl7YT1hfDA7dmFyIGI9MCxlPTA7ZT1pO2k9aSsxNnwwO2I9ZTtjW2I+PjJdPWE7aT1lO3JldHVybiAoZFtjW2I+PjJdPj4wXXwwKTw8MjR8KGRbKGNbYj4+Ml18MCkrMT4+MF18MCk8PDE2fChkWyhjW2I+PjJdfDApKzI+PjBdfDApPDw4fChkWyhjW2I+PjJdfDApKzM+PjBdfDApfDB9ZnVuY3Rpb24gaHIoYil7Yj1ifDA7dmFyIGU9MCxmPTAsZz0wO2c9aTtpPWkrMTZ8MDtlPWcrNHwwO2Y9ZztjW2U+PjJdPWI7Y1tmPj4yXT1jWyhjW2U+PjJdfDApKzIwOD4+Ml07WWooKTtpcihjW2U+PjJdfDApO2FbKGNbZT4+Ml18MCkrND4+MF09MDtqcihjWyhjW2U+PjJdfDApKzIxNj4+Ml18MCxkWyhjW2U+PjJdfDApKzEwPj4wXXwwLGNbKGNbZT4+Ml18MCkrMTYwPj4yXXwwLGNbZj4+Ml18MCl8MDtjWyhjW2U+PjJdfDApKzIxNj4+Ml09MDtaaShjW2U+PjJdfDApO2I9Y1tlPj4yXXwwO2lmKGFbKGNbZT4+Ml18MCkrMTY+PjBdfDApa3IoYik7ZWxzZXtpZihjW2NbYis2OD4+Ml0+PjJdfDApe2I9Y1tlPj4yXXwwO21yKGIsbHIoY1tlPj4yXXwwKXwwKXwwfW5yKGNbZT4+Ml18MCl9WmooKTtvcihjWyhjW2U+PjJdfDApKzY4Pj4yXXwwKTtvcihjWyhjW2U+PjJdfDApKzY0Pj4yXXwwKTskaShjW2Y+PjJdfDApO3ByKGNbKGNbZT4+Ml18MCkrMjEyPj4yXXwwKTtLZChjW2U+PjJdfDApO2k9ZztyZXR1cm4gMH1mdW5jdGlvbiBpcihhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wO2U9aTtpPWkrMTZ8MDtmPWUrOHwwO2I9ZSs0fDA7ZD1lO2NbZj4+Ml09YTtjW2I+PjJdPWNbKGNbZj4+Ml18MCkrMTQ0Pj4yXTt3aGlsZSgxKXtpZighKGNbYj4+Ml18MCkpYnJlYWs7Y1tkPj4yXT1jWyhjW2I+PjJdfDApKzEyPj4yXTtLZChjW2I+PjJdfDApO2NbYj4+Ml09Y1tkPj4yXX1pPWU7cmV0dXJufWZ1bmN0aW9uIGpyKGIsZSxmLGcpe2I9YnwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO3ZhciBoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wO3A9aTtpPWkrMzJ8MDtoPXArMjR8MDtqPXArMjB8MDtrPXArMTZ8MDtsPXArMTJ8MDtvPXArOHwwO249cCs0fDA7bT1wO2NbaD4+Ml09YjtjW2o+PjJdPWU7Y1trPj4yXT1mO2NbbD4+Ml09ZztjW28+PjJdPTA7aWYoIShjW2g+PjJdfDApKXtnPWNbbz4+Ml18MDtpPXA7cmV0dXJuIGd8MH1jW24+PjJdPTA7Y1tvPj4yXT1ScyhjWyhjW2g+PjJdfDApKzQ+PjJdfDAsNCl8MDtkbyBpZighKGNbbz4+Ml18MCkpe2lmKCEoZFsoY1toPj4yXXwwKSs0Mz4+MF18MCkpYVsoY1toPj4yXXwwKSs0Mz4+MF09MTtjW28+PjJdPVNzKGNbaD4+Ml18MCwwLDAsMCxjW2o+PjJdfDAsY1trPj4yXXwwLGNbbD4+Ml18MCwwLDApfDA7aWYoIShjW28+PjJdfDApKXtjW20+PjJdPS0xO1RzKGNbKGNbaD4+Ml18MCkrND4+Ml18MCwxMCxtKTtpZigoY1ttPj4yXXwwKSE9MSl7Y1tuPj4yXT0xO2JyZWFrfWc9KGNbaD4+Ml18MCkrMTZ8MDtlPWNbZys0Pj4yXXwwO2lmKChlfDApPjB8KGV8MCk9PTAmKGNbZz4+Ml18MCk+Pj4wPj0wKVVzKGNbaD4+Ml18MCwwLDApfX13aGlsZSgwKTtWcyhjW2g+PjJdfDAsY1tuPj4yXXwwKTtvcihjWyhjW2g+PjJdfDApKzg+PjJdfDApO2lmKGNbbj4+Ml18MCl7WWooKTt4cihjW2NbaD4+Ml0+PjJdfDAsY1soY1toPj4yXXwwKSsxMDg+PjJdfDAsMCl8MDtaaigpfUtkKGNbKGNbaD4+Ml18MCkrMzI+PjJdfDApO0tkKGNbaD4+Ml18MCk7Zz1jW28+PjJdfDA7aT1wO3JldHVybiBnfDB9ZnVuY3Rpb24ga3IoYil7Yj1ifDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTA7aD1pO2k9aSsxNnwwO2c9aCs4fDA7Zj1oKzR8MDtlPWg7Y1tnPj4yXT1iO3BqKGNbKGNbZz4+Ml18MCkrNjA+PjJdfDApO2NbKGNbZz4+Ml18MCkrNjA+PjJdPTA7c3IoY1tnPj4yXXwwKTtqPShCcihjW2c+PjJdfDApfDApIT0wO2I9Y1tnPj4yXXwwO2lmKCFqKXtpZighKGFbYis0Pj4wXXwwKSl7aWYoY1tjWyhjW2c+PjJdfDApKzY0Pj4yXT4+Ml18MCliPWJzKGNbKGNbZz4+Ml18MCkrNjQ+PjJdfDApfDA7ZWxzZSBiPTA7Y1tlPj4yXT1iO2lmKCEoMCE9KGNbZT4+Ml0mMjA0OHwwKT8xPT0oZFsoY1tnPj4yXXwwKSs1Pj4wXSY1fDApOjApKW9yKGNbKGNbZz4+Ml18MCkrNjg+PjJdfDApO2NbZj4+Ml09RnIoY1tnPj4yXXwwLDApfDA7aWYoKGNbZj4+Ml18MCkhPTA/KGRbKGNbZz4+Ml18MCkrMTc+PjBdfDApPT02OjApYVsoY1tnPj4yXXwwKSsxOD4+MF09NTthWyhjW2c+PjJdfDApKzE5Pj4wXT0wO2FbKGNbZz4+Ml18MCkrMTc+PjBdPTB9fWVsc2V7UXMoY1tiKzIxNj4+Ml18MCk7YVsoY1tnPj4yXXwwKSsxNz4+MF09MH1pZighKGNbKGNbZz4+Ml18MCkrNDQ+PjJdfDApKXtqPWNbZz4+Ml18MDtqPWorODB8MDtmPWo7Y1tmPj4yXT0wO2o9ais0fDA7Y1tqPj4yXT0wO2o9Y1tnPj4yXXwwO2o9ais4OHwwO2Y9ajtjW2Y+PjJdPTA7aj1qKzR8MDtjW2o+PjJdPTA7aj1jW2c+PjJdfDA7aj1qKzIwfDA7YVtqPj4wXT0wO2k9aDtyZXR1cm59Yj1jW2c+PjJdfDA7aWYoIShkWyhjW2c+PjJdfDApKzEzPj4wXXwwKSl7WmkoYik7YVsoY1tnPj4yXXwwKSsxOT4+MF09MDthWyhjW2c+PjJdfDApKzE3Pj4wXT0wfWVsc2UgYVsoY1tnPj4yXXwwKSsxNz4+MF09KGNbY1tiKzY4Pj4yXT4+Ml18MCkhPTA/MDoxO2NbKGNbZz4+Ml18MCkrNDQ+PjJdPTA7aj1jW2c+PjJdfDA7aj1qKzgwfDA7Zj1qO2NbZj4+Ml09MDtqPWorNHwwO2Nbaj4+Ml09MDtqPWNbZz4+Ml18MDtqPWorODh8MDtmPWo7Y1tmPj4yXT0wO2o9ais0fDA7Y1tqPj4yXT0wO2o9Y1tnPj4yXXwwO2o9aisyMHwwO2Fbaj4+MF09MDtpPWg7cmV0dXJufWZ1bmN0aW9uIGxyKGIpe2I9YnwwO3ZhciBkPTAsZT0wLGY9MDtmPWk7aT1pKzE2fDA7ZD1mKzR8MDtlPWY7Y1tkPj4yXT1iO2NbZT4+Ml09MDtpZighKGFbKGNbZD4+Ml18MCkrNz4+MF18MCkpY1tlPj4yXT12cihjWyhjW2Q+PjJdfDApKzY4Pj4yXXwwLDIpfDA7aWYoY1tlPj4yXXwwKXtlPWNbZT4+Ml18MDtpPWY7cmV0dXJuIGV8MH1jW2U+PjJdPVhpKGNbKGNbZD4+Ml18MCkrNjg+PjJdfDAsKGNbZD4+Ml18MCkrODh8MCl8MDtlPWNbZT4+Ml18MDtpPWY7cmV0dXJuIGV8MH1mdW5jdGlvbiBtcihiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTA7Zz1pO2k9aSsxNnwwO2U9Zys4fDA7Zj1nKzR8MDtoPWc7Y1tlPj4yXT1iO2NbZj4+Ml09ZDtjW2g+PjJdPWNbZj4+Ml0mMjU1O2lmKCEoKGNbaD4+Ml18MCk9PTEzfChjW2g+PjJdfDApPT0xMCkpe2g9Y1tmPj4yXXwwO2k9ZztyZXR1cm4gaHwwfWNbKGNbZT4+Ml18MCkrNDQ+PjJdPWNbZj4+Ml07YVsoY1tlPj4yXXwwKSsxNz4+MF09NjtoPWNbZj4+Ml18MDtpPWc7cmV0dXJuIGh8MH1mdW5jdGlvbiBucihiKXtiPWJ8MDt2YXIgZT0wLGY9MDtmPWk7aT1pKzE2fDA7ZT1mO2NbZT4+Ml09YjtkbyBpZigoZFsoY1tlPj4yXXwwKSsxNz4+MF18MCkhPTY/KGRbKGNbZT4+Ml18MCkrMTc+PjBdfDApIT0wOjApe2lmKChkWyhjW2U+PjJdfDApKzE3Pj4wXXwwKT49Mil7WWooKTtxcihjW2U+PjJdfDApfDA7WmooKTticmVha31pZighKGFbKGNbZT4+Ml18MCkrND4+MF18MCkpcnIoY1tlPj4yXXwwLDAsMCl8MH13aGlsZSgwKTtrcihjW2U+PjJdfDApO2k9ZjtyZXR1cm59ZnVuY3Rpb24gb3IoYSl7YT1hfDA7dmFyIGI9MCxkPTA7ZD1pO2k9aSsxNnwwO2I9ZDtjW2I+PjJdPWE7aWYoIShjW2NbYj4+Ml0+PjJdfDApKXtpPWQ7cmV0dXJufVRiW2NbKGNbY1tiPj4yXT4+Ml18MCkrND4+Ml0mMjU1XShjW2I+PjJdfDApfDA7Y1tjW2I+PjJdPj4yXT0wO2k9ZDtyZXR1cm59ZnVuY3Rpb24gcHIoYSl7YT1hfDA7dmFyIGI9MCxkPTA7Yj1pO2k9aSsxNnwwO2Q9YjtjW2Q+PjJdPWE7UWJbY1sxNjA+PjJdJjI1NV0oY1soY1tkPj4yXXwwKSs0ND4+Ml18MCk7aT1iO3JldHVybn1mdW5jdGlvbiBxcihiKXtiPWJ8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wO2s9aTtpPWkrMzJ8MDtlPWsrMTZ8MDtmPWsrMTJ8MDtoPWsrOHwwO2o9ays0fDA7Zz1rO2NbZj4+Ml09YjtjW2g+PjJdPTA7Yj1jW2Y+PjJdfDA7aWYoKGRbKGNbZj4+Ml18MCkrMTc+PjBdfDApPT02KXtjW2U+PjJdPWNbYis0ND4+Ml07aj1jW2U+PjJdfDA7aT1rO3JldHVybiBqfDB9aWYoKGRbYisxNz4+MF18MCk8PTEpe2NbZT4+Ml09MDtqPWNbZT4+Ml18MDtpPWs7cmV0dXJuIGp8MH1sPShCcihjW2Y+PjJdfDApfDApIT0wO2I9Y1tmPj4yXXwwO2RvIGlmKGwpe2NbaD4+Ml09VnIoYiwyLC0xKXwwO2Nbaj4+Ml09cnIoY1tmPj4yXXwwLGRbKGNbZj4+Ml18MCkrMjA+PjBdfDAsMCl8MDtpZighKGNbaD4+Ml18MCkpY1toPj4yXT1jW2o+PjJdfWVsc2V7aWYoKGNbY1tiKzY4Pj4yXT4+Ml18MCkhPTA/KGRbKGNbZj4+Ml18MCkrMTc+PjBdfDApIT0yOjApe2NbaD4+Ml09V3IoY1tmPj4yXXwwLDApfDA7YnJlYWt9Y1tnPj4yXT1kWyhjW2Y+PjJdfDApKzE3Pj4wXTtjW2g+PjJdPXJyKGNbZj4+Ml18MCwwLDApfDA7aWYoKGNbZz4+Ml18MCk+Mj8oYVsoY1tmPj4yXXwwKSsxNj4+MF18MCk9PTA6MCl7Y1soY1tmPj4yXXwwKSs0ND4+Ml09NDthWyhjW2Y+PjJdfDApKzE3Pj4wXT02O2NbZT4+Ml09Y1toPj4yXTtsPWNbZT4+Ml18MDtpPWs7cmV0dXJuIGx8MH19d2hpbGUoMCk7Y1tlPj4yXT1tcihjW2Y+PjJdfDAsY1toPj4yXXwwKXwwO2w9Y1tlPj4yXXwwO2k9aztyZXR1cm4gbHwwfWZ1bmN0aW9uIHJyKGIsZSxmKXtiPWJ8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MDtvPWk7aT1pKzMyfDA7aj1vKzI0fDA7az1vKzIwfDA7Zz1vKzE2fDA7bD1vKzEyfDA7bT1vKzh8MDtuPW8rNHwwO2g9bztjW2s+PjJdPWI7Y1tnPj4yXT1lO2NbbD4+Ml09ZjtjW20+PjJdPTA7Y1tuPj4yXT0wO2lmKChkWyhjW2s+PjJdfDApKzE3Pj4wXXwwKTwyPyhkWyhjW2s+PjJdfDApKzE4Pj4wXXwwKTwyOjApe2Nbaj4+Ml09MDtuPWNbaj4+Ml18MDtpPW87cmV0dXJuIG58MH1zcihjW2s+PjJdfDApO2E6ZG8gaWYoY1tjWyhjW2s+PjJdfDApKzY4Pj4yXT4+Ml18MCl7Yj0odHIoY1soY1trPj4yXXwwKSs2OD4+Ml18MCl8MCkhPTA7Zj1jW2s+PjJdfDA7aWYoYil7b3IoY1tmKzY4Pj4yXXwwKTticmVha31lPWNbaz4+Ml18MDtpZigoZFtmKzU+PjBdfDApPT0zKXtoPWUrODB8MDtpZighKChjW2g+PjJdfDApPT0wJihjW2grND4+Ml18MCk9PTApKXtjW20+PjJdPXVyKGNbKGNbaz4+Ml18MCkrNjg+PjJdfDAsMCwwKXwwO2lmKChjW20+PjJdfDApPT0wPyhkWyhjW2s+PjJdfDApKzg+PjBdfDApIT0wOjApY1ttPj4yXT12cihjWyhjW2s+PjJdfDApKzY4Pj4yXXwwLGRbKGNbaz4+Ml18MCkrMTI+PjBdfDApfDB9ZWxzZSBjW20+PjJdPTA7aD0oY1trPj4yXXwwKSs4MHwwO2NbaD4+Ml09MDtjW2grND4+Ml09MDticmVha31kbyBpZigoZFtlKzU+PjBdfDApIT0xKXtpZigoZFsoY1trPj4yXXwwKSs0Pj4wXXwwKSE9MD8oZFsoY1trPj4yXXwwKSs1Pj4wXXwwKSE9NTowKWJyZWFrO2NbaD4+Ml09KChhWyhjW2s+PjJdfDApKzEzPj4wXXwwKSE9MF4xKSYxO29yKGNbKGNbaz4+Ml18MCkrNjg+PjJdfDApO2lmKCEoY1toPj4yXXwwKSlicmVhayBhO2NbbT4+Ml09eHIoY1tjW2s+PjJdPj4yXXwwLGNbKGNbaz4+Ml18MCkrMTgwPj4yXXwwLGRbKGNbaz4+Ml18MCkrOT4+MF18MCl8MDticmVhayBhfXdoaWxlKDApO2lmKGNbZz4+Ml18MClmPTE7ZWxzZSBmPShkWyhjW2s+PjJdfDApKzEzPj4wXXwwKSE9MDtjW20+PjJdPXdyKGNbaz4+Ml18MCxmJjEpfDA7aD0oY1trPj4yXXwwKSs4MHwwO2NbaD4+Ml09MDtjW2grND4+Ml09MH13aGlsZSgwKTtwaihjWyhjW2s+PjJdfDApKzYwPj4yXXwwKTtjWyhjW2s+PjJdfDApKzYwPj4yXT0wO2NbKGNbaz4+Ml18MCkrNDg+PjJdPTA7aWYoIShjW20+PjJdfDApKXtoPSh5cihjW2s+PjJdfDAsY1tsPj4yXXwwKXwwKSE9MDtmPWNbKGNbaz4+Ml18MCkrMjEyPj4yXXwwO2lmKGgpenIoZik7ZWxzZSBBcihmKTtmaihjWyhjW2s+PjJdfDApKzIxMj4+Ml18MCxjWyhjW2s+PjJdfDApKzI4Pj4yXXwwKX1pZighKEJyKGNbaz4+Ml18MCl8MCkpe2lmKChjW20+PjJdfDApPT0wJihjW2w+PjJdfDApIT0wPyhjWyhjW2s+PjJdfDApKzM2Pj4yXXwwKT4+PjA+KGNbKGNbaz4+Ml18MCkrMjg+PjJdfDApPj4+MDowKWNbbT4+Ml09RHIoY1trPj4yXXwwLGNbKGNbaz4+Ml18MCkrMjg+PjJdfDApfDB9ZWxzZSBjW24+PjJdPUNyKGNbKGNbaz4+Ml18MCkrMjE2Pj4yXXwwKXwwO2lmKChjW20+PjJdfDApPT0wJihjW2w+PjJdfDApIT0wPyhjW2NbKGNbaz4+Ml18MCkrNjQ+PjJdPj4yXXwwKSE9MDowKXtsPUFpKGNbKGNbaz4+Ml18MCkrNjQ+PjJdfDAsMjIsMCl8MDtjW20+PjJdPWw7Y1ttPj4yXT0oY1ttPj4yXXwwKT09MTI/MDpsfWRvIGlmKCEoYVsoY1trPj4yXXwwKSs0Pj4wXXwwKSl7aWYoKEJyKGNbaz4+Ml18MCl8MCkhPTA/KEVyKGNbKGNbaz4+Ml18MCkrMjE2Pj4yXXwwLDApfDApPT0wOjApYnJlYWs7Y1tuPj4yXT1GcihjW2s+PjJdfDAsMSl8MDthWyhjW2s+PjJdfDApKzE5Pj4wXT0wfXdoaWxlKDApO2FbKGNbaz4+Ml18MCkrMTc+PjBdPTE7YVsoY1trPj4yXXwwKSsyMD4+MF09MDtjW2o+PjJdPShjW20+PjJdfDApPT0wP2Nbbj4+Ml18MDpjW20+PjJdfDA7bj1jW2o+PjJdfDA7aT1vO3JldHVybiBufDB9ZnVuY3Rpb24gc3IoYil7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wO2Y9aTtpPWkrMTZ8MDtkPWYrNHwwO2U9ZjtjW2Q+PjJdPWI7Y1tlPj4yXT0wO3doaWxlKDEpe2lmKChjW2U+PjJdfDApPj0oY1soY1tkPj4yXXwwKSsxMDQ+PjJdfDApKWJyZWFrO3BqKGNbKGNbKGNbZD4+Ml18MCkrMTAwPj4yXXwwKSsoKGNbZT4+Ml18MCkqNDh8MCkrMTY+PjJdfDApO2NbZT4+Ml09KGNbZT4+Ml18MCkrMX1pZighKChhWyhjW2Q+PjJdfDApKzQ+PjBdfDApIT0wPyh0cihjWyhjW2Q+PjJdfDApKzcyPj4yXXwwKXwwKT09MDowKSlvcihjWyhjW2Q+PjJdfDApKzcyPj4yXXwwKTtLZChjWyhjW2Q+PjJdfDApKzEwMD4+Ml18MCk7Y1soY1tkPj4yXXwwKSsxMDA+PjJdPTA7Y1soY1tkPj4yXXwwKSsxMDQ+PjJdPTA7Y1soY1tkPj4yXXwwKSs1Nj4+Ml09MDtpPWY7cmV0dXJufWZ1bmN0aW9uIHRyKGEpe2E9YXwwO3ZhciBiPTAsZD0wO2Q9aTtpPWkrMTZ8MDtiPWQ7Y1tiPj4yXT1hO2k9ZDtyZXR1cm4gKGNbY1tiPj4yXT4+Ml18MCk9PTQwMjh8MH1mdW5jdGlvbiB1cihhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wO2U9aTtpPWkrMTZ8MDtmPWUrOHwwO2c9ZTtjW2Y+PjJdPWE7YT1nO2NbYT4+Ml09YjtjW2ErND4+Ml09ZDthPWc7YT1PYltjWyhjW2NbZj4+Ml0+PjJdfDApKzE2Pj4yXSYyNTVdKGNbZj4+Ml18MCxjW2E+PjJdfDAsY1thKzQ+PjJdfDApfDA7aT1lO3JldHVybiBhfDB9ZnVuY3Rpb24gdnIoYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTA7ZD1pO2k9aSsxNnwwO2Y9ZCs0fDA7ZT1kO2NbZj4+Ml09YTtjW2U+PjJdPWI7YT1ZYltjWyhjW2NbZj4+Ml0+PjJdfDApKzIwPj4yXSYyNTVdKGNbZj4+Ml18MCxjW2U+PjJdfDApfDA7aT1kO3JldHVybiBhfDB9ZnVuY3Rpb24gd3IoYixlKXtiPWJ8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wO2w9aTtpPWkrMzJ8MDtmPWwrMjR8MDtnPWwrMjB8MDtqPWwrMTZ8MDtoPWwrOHwwO2s9bDtjW2Y+PjJdPWI7Y1tnPj4yXT1lO2Nbaj4+Ml09MDtiPShjW2Y+PjJdfDApKzgwfDA7aWYoISgoY1tiPj4yXXwwKSE9MHwoY1tiKzQ+PjJdfDApIT0wKSl7az1jW2o+PjJdfDA7aT1sO3JldHVybiBrfDB9bT0oY1tmPj4yXXwwKSsxNjh8MDtlPWNbbSs0Pj4yXXwwO2I9aDtjW2I+PjJdPWNbbT4+Ml07Y1tiKzQ+PjJdPWU7Yj1oO2U9Y1soY1tmPj4yXXwwKSs2OD4+Ml18MDtpZigoY1tnPj4yXXwwKSE9MHwoY1tiPj4yXXwwKT09MCYoY1tiKzQ+PjJdfDApPT0wKWNbaj4+Ml09dXIoZSwwLDApfDA7ZWxzZSBjW2o+PjJdPUlnKGUsMjU4NDYsMjgsMCwwKXwwO2lmKChjW2o+PjJdfDApPT0wPyhhWyhjW2Y+PjJdfDApKzc+PjBdfDApPT0wOjApY1tqPj4yXT12cihjWyhjW2Y+PjJdfDApKzY4Pj4yXXwwLDE2fGRbKGNbZj4+Ml18MCkrMTI+PjBdKXwwO209aDtnPWNbbSs0Pj4yXXwwO2lmKCEoKGNbaj4+Ml18MCk9PTAmKChnfDApPjB8KGd8MCk9PTAmKGNbbT4+Ml18MCk+Pj4wPjApKSl7bT1jW2o+PjJdfDA7aT1sO3JldHVybiBtfDB9Y1tqPj4yXT1YaShjWyhjW2Y+PjJdfDApKzY4Pj4yXXwwLGspfDA7aWYoY1tqPj4yXXwwKXttPWNbaj4+Ml18MDtpPWw7cmV0dXJuIG18MH1iPWNbays0Pj4yXXwwO209aDtnPWNbbSs0Pj4yXXwwO2lmKCEoKGJ8MCk+KGd8MCl8KChifDApPT0oZ3wwKT8oY1trPj4yXXwwKT4+PjA+KGNbbT4+Ml18MCk+Pj4wOjApKSl7bT1jW2o+PjJdfDA7aT1sO3JldHVybiBtfDB9bT1oO2Nbaj4+Ml09dXIoY1soY1tmPj4yXXwwKSs2OD4+Ml18MCxjW20+PjJdfDAsY1ttKzQ+PjJdfDApfDA7bT1jW2o+PjJdfDA7aT1sO3JldHVybiBtfDB9ZnVuY3Rpb24geHIoYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTA7ZT1pO2k9aSsxNnwwO2g9ZSs4fDA7Zz1lKzR8MDtmPWU7Y1toPj4yXT1hO2NbZz4+Ml09YjtjW2Y+PjJdPWQ7Yj1PYltjWyhjW2g+PjJdfDApKzI4Pj4yXSYyNTVdKGNbaD4+Ml18MCxjW2c+PjJdfDAsY1tmPj4yXXwwKXwwO2k9ZTtyZXR1cm4gYnwwfWZ1bmN0aW9uIHlyKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGU9MCxmPTAsZz0wLGg9MDtoPWk7aT1pKzE2fDA7ZT1oKzh8MDtmPWgrNHwwO2c9aDtjW2Y+PjJdPWE7Y1tnPj4yXT1iO2RvIGlmKGRbKGNbZj4+Ml18MCkrMTM+PjBdfDApe2lmKCEoY1tnPj4yXXwwKSl7Y1tlPj4yXT0wO2JyZWFrfWlmKGNbY1soY1tmPj4yXXwwKSs2ND4+Ml0+PjJdfDApe2NbZT4+Ml09KExyKGNbKGNbZj4+Ml18MCkrMjEyPj4yXXwwKXwwKT49MjUmMTticmVha31lbHNle2NbZT4+Ml09MDticmVha319ZWxzZSBjW2U+PjJdPTE7d2hpbGUoMCk7aT1oO3JldHVybiBjW2U+PjJdfDB9ZnVuY3Rpb24genIoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wO2U9aTtpPWkrMTZ8MDtiPWUrNHwwO2Q9ZTtjW2I+PjJdPWE7d2hpbGUoMSl7YT1jW2NbYj4+Ml0+PjJdfDA7Y1tkPj4yXT1hO2lmKCFhKWJyZWFrO2dqKGNbZD4+Ml18MCl9aT1lO3JldHVybn1mdW5jdGlvbiBBcihhKXthPWF8MDt2YXIgZD0wLGY9MCxnPTA7Zz1pO2k9aSsxNnwwO2Q9Zys0fDA7Zj1nO2NbZD4+Ml09YTtjW2Y+PjJdPWNbY1tkPj4yXT4+Ml07d2hpbGUoMSl7aWYoIShjW2Y+PjJdfDApKWJyZWFrO2E9KGNbZj4+Ml18MCkrMjR8MDtiW2E+PjFdPShlW2E+PjFdfDApJi0xMztjW2Y+PjJdPWNbKGNbZj4+Ml18MCkrMzI+PjJdfWNbKGNbZD4+Ml18MCkrOD4+Ml09Y1soY1tkPj4yXXwwKSs0Pj4yXTtpPWc7cmV0dXJufWZ1bmN0aW9uIEJyKGEpe2E9YXwwO3ZhciBiPTAsZD0wO2Q9aTtpPWkrMTZ8MDtiPWQ7Y1tiPj4yXT1hO2k9ZDtyZXR1cm4gKGNbKGNbYj4+Ml18MCkrMjE2Pj4yXXwwKSE9MHwwfWZ1bmN0aW9uIENyKGIpe2I9YnwwO3ZhciBkPTAsZT0wO2U9aTtpPWkrMTZ8MDtkPWU7Y1tkPj4yXT1iO2lmKCEoYVsoY1tkPj4yXXwwKSs0ND4+MF18MCkpe2k9ZTtyZXR1cm4gMH1LcihjW2Q+PjJdfDAsMCwxKTthWyhjW2Q+PjJdfDApKzQ0Pj4wXT0wO2NbKGNbZD4+Ml18MCkrMTA0Pj4yXT0wO2FbKGNbZD4+Ml18MCkrNDc+PjBdPTA7aT1lO3JldHVybiAwfWZ1bmN0aW9uIERyKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MDttPWk7aT1pKzQ4fDA7ZT1tKzMyfDA7Zj1tKzI4fDA7az1tKzI0fDA7Zz1tKzh8MDtoPW07bD1tKzIwfDA7aj1tKzE2fDA7Y1tlPj4yXT1hO2NbZj4+Ml09YjtjW2s+PjJdPTA7aWYoIShjW2NbKGNbZT4+Ml18MCkrNjQ+PjJdPj4yXXwwKSl7bD1jW2s+PjJdfDA7aT1tO3JldHVybiBsfDB9aWYoKGRbKGNbZT4+Ml18MCkrMTc+PjBdfDB8MCk8ND8oZFsoY1tlPj4yXXwwKSsxNz4+MF18MHwwKSE9MDowKXtsPWNbaz4+Ml18MDtpPW07cmV0dXJuIGx8MH1jW2w+PjJdPWNbKGNbZT4+Ml18MCkrMTYwPj4yXTtjW2s+PjJdPVhpKGNbKGNbZT4+Ml18MCkrNjQ+PjJdfDAsZyl8MDtiPWNbbD4+Ml18MDtiPWFTKGJ8MCwoKGJ8MCk8MCk8PDMxPj4zMXwwLGNbZj4+Ml18MCwwKXwwO2E9aDtjW2E+PjJdPWI7Y1thKzQ+PjJdPUM7aWYoY1trPj4yXXwwKXtsPWNbaz4+Ml18MDtpPW07cmV0dXJuIGx8MH1iPWc7YT1oO2lmKCEoKGNbYj4+Ml18MCkhPShjW2E+PjJdfDApPzE6KGNbYis0Pj4yXXwwKSE9KGNbYSs0Pj4yXXwwKSkpe2w9Y1trPj4yXXwwO2k9bTtyZXR1cm4gbHwwfWI9ZztvPWNbYis0Pj4yXXwwO2E9aDtuPWNbYSs0Pj4yXXwwO2lmKCEoKG98MCk+KG58MCl8KChvfDApPT0obnwwKT8oY1tiPj4yXXwwKT4+PjA+KGNbYT4+Ml18MCk+Pj4wOjApKSl7Yj1nO249Y1tsPj4yXXwwO249UlIoY1tiPj4yXXwwLGNbYis0Pj4yXXwwLG58MCwoKG58MCk8MCk8PDMxPj4zMXwwKXwwO2I9QztvPWg7YT1jW28rND4+Ml18MDtpZigoYnwwKTwoYXwwKXwoKGJ8MCk9PShhfDApP24+Pj4wPD0oY1tvPj4yXXwwKT4+PjA6MCkpe2Nbaj4+Ml09Y1soY1tlPj4yXXwwKSsyMDg+PjJdO1ZSKGNbaj4+Ml18MCwwLGNbbD4+Ml18MCl8MDthPWNbKGNbZT4+Ml18MCkrNjQ+PjJdfDA7aj1jW2o+PjJdfDA7bj1jW2w+PjJdfDA7bz1jW2w+PjJdfDA7bz1RUihjW2g+PjJdfDAsY1toKzQ+PjJdfDAsb3wwLCgob3wwKTwwKTw8MzE+PjMxfDApfDA7Y1trPj4yXT1JZyhhLGosbixvLEMpfDB9fWVsc2V7bz1oO2Nbaz4+Ml09dXIoY1soY1tlPj4yXXwwKSs2ND4+Ml18MCxjW28+PjJdfDAsY1tvKzQ+PjJdfDApfDB9aWYoY1trPj4yXXwwKXtvPWNbaz4+Ml18MDtpPW07cmV0dXJuIG98MH1jWyhjW2U+PjJdfDApKzM2Pj4yXT1jW2Y+PjJdO289Y1trPj4yXXwwO2k9bTtyZXR1cm4gb3wwfWZ1bmN0aW9uIEVyKGUsZil7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MDtrPWk7aT1pKzE2fDA7Zz1rKzh8MDtoPWsrNHwwO2o9aztjW2c+PjJdPWU7Y1toPj4yXT1mO2lmKGNbaD4+Ml18MCl7Zj1jW2c+PjJdfDA7aWYoKGNbaD4+Ml18MCk+MCl7SXIoZiwzKyhiWyhjW2c+PjJdfDApKzQwPj4xXXwwKXwwKTthWyhjW2c+PjJdfDApKzQzPj4wXT0xO2Nbaj4+Ml09MTtqPWNbaj4+Ml18MDtpPWs7cmV0dXJuIGp8MH1lbHNle2Nbaj4+Ml09KGRbZis0Mz4+MF18MCk9PTAmMTtqPWNbaj4+Ml18MDtpPWs7cmV0dXJuIGp8MH19aWYoIShhWyhjW2c+PjJdfDApKzQzPj4wXXwwKSl7Y1tqPj4yXT0wO2o9Y1tqPj4yXXwwO2k9aztyZXR1cm4ganwwfWFbKGNbZz4+Ml18MCkrNDM+PjBdPTA7aWYoSHIoY1tnPj4yXXwwLDMrKGJbKGNbZz4+Ml18MCkrNDA+PjFdfDApfDApfDApYVsoY1tnPj4yXXwwKSs0Mz4+MF09MTtjW2o+PjJdPShkWyhjW2c+PjJdfDApKzQzPj4wXXwwKT09MCYxO2o9Y1tqPj4yXXwwO2k9aztyZXR1cm4ganwwfWZ1bmN0aW9uIEZyKGIsZSl7Yj1ifDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MDtqPWk7aT1pKzE2fDA7Zj1qKzh8MDtnPWorNHwwO2g9ajtjW2Y+PjJdPWI7Y1tnPj4yXT1lO2NbaD4+Ml09MDtpZighKGNbY1soY1tmPj4yXXwwKSs2ND4+Ml0+PjJdfDApKXtoPWNbaD4+Ml18MDtpPWo7cmV0dXJuIGh8MH1pZihkWyhjW2Y+PjJdfDApKzE0Pj4wXXwwKWU9MDtlbHNlIGU9R3IoY1soY1tmPj4yXXwwKSs2ND4+Ml18MCxjW2c+PjJdfDApfDA7Y1toPj4yXT1lO2lmKChkWyhjW2Y+PjJdfDApKzE4Pj4wXXwwfDApPT01KXtoPWNbaD4+Ml18MDtpPWo7cmV0dXJuIGh8MH1hWyhjW2Y+PjJdfDApKzE4Pj4wXT1jW2c+PjJdO2g9Y1toPj4yXXwwO2k9ajtyZXR1cm4gaHwwfWZ1bmN0aW9uIEdyKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wO2Q9aTtpPWkrMTZ8MDtmPWQrNHwwO2U9ZDtjW2Y+PjJdPWE7Y1tlPj4yXT1iO2I9WWJbY1soY1tjW2Y+PjJdPj4yXXwwKSszMj4+Ml0mMjU1XShjW2Y+PjJdfDAsY1tlPj4yXXwwKXwwO2k9ZDtyZXR1cm4gYnwwfWZ1bmN0aW9uIEhyKGIsZCl7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTA7aj1pO2k9aSsxNnwwO2U9aisxMnwwO2Y9ais4fDA7Zz1qKzR8MDtoPWo7Y1tmPj4yXT1iO2NbZz4+Ml09ZDtpZihhWyhjW2Y+PjJdfDApKzQzPj4wXXwwKXtjW2U+PjJdPTA7aD1jW2U+PjJdfDA7aT1qO3JldHVybiBofDB9ZWxzZXtjW2g+PjJdPUpyKGNbKGNbZj4+Ml18MCkrND4+Ml18MCxjW2c+PjJdfDAsMSw2KXwwO2NbZT4+Ml09Y1toPj4yXTtoPWNbZT4+Ml18MDtpPWo7cmV0dXJuIGh8MH1yZXR1cm4gMH1mdW5jdGlvbiBJcihiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MDtnPWk7aT1pKzE2fDA7ZT1nKzR8MDtmPWc7Y1tlPj4yXT1iO2NbZj4+Ml09ZDtpZihhWyhjW2U+PjJdfDApKzQzPj4wXXwwKXtpPWc7cmV0dXJufUpyKGNbKGNbZT4+Ml18MCkrND4+Ml18MCxjW2Y+PjJdfDAsMSw1KXwwO2k9ZztyZXR1cm59ZnVuY3Rpb24gSnIoYSxiLGQsZSl7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTA7Zj1pO2k9aSsxNnwwO2s9ZisxMnwwO2o9Zis4fDA7aD1mKzR8MDtnPWY7Y1trPj4yXT1hO2Nbaj4+Ml09YjtjW2g+PjJdPWQ7Y1tnPj4yXT1lO2I9V2JbY1soY1tjW2s+PjJdPj4yXXwwKSs1Nj4+Ml0mMjU1XShjW2s+PjJdfDAsY1tqPj4yXXwwLGNbaD4+Ml18MCxjW2c+PjJdfDApfDA7aT1mO3JldHVybiBifDB9ZnVuY3Rpb24gS3IoYixkLGUpe2I9YnwwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTA7aj1pO2k9aSsxNnwwO2Y9ais4fDA7Zz1qKzR8MDtoPWo7Y1tmPj4yXT1iO2NbZz4+Ml09ZDtjW2g+PjJdPWU7aWYoYVsoY1tmPj4yXXwwKSs0Mz4+MF18MCl7aT1qO3JldHVybn1KcihjWyhjW2Y+PjJdfDApKzQ+PjJdfDAsY1tnPj4yXXwwLGNbaD4+Ml18MCw5KXwwO2k9ajtyZXR1cm59ZnVuY3Rpb24gTHIoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MCxnPTA7Zj1pO2k9aSsxNnwwO2c9ZisxMnwwO2U9Zis4fDA7ZD1mKzR8MDtiPWY7Y1tnPj4yXT1hO2NbZD4+Ml09MDtjW2I+PjJdPWNqKGNbZz4+Ml18MCl8MDtjW2U+PjJdPWNbY1tnPj4yXT4+Ml07d2hpbGUoMSl7aWYoIShjW2U+PjJdfDApKWJyZWFrO2NbZD4+Ml09KGNbZD4+Ml18MCkrMTtjW2U+PjJdPWNbKGNbZT4+Ml18MCkrMzI+PjJdfWlmKCEoY1tiPj4yXXwwKSl7Zz0wO2k9ZjtyZXR1cm4gZ3wwfWU9Y1tkPj4yXXwwO2U9YVMoZXwwLCgoZXwwKTwwKTw8MzE+PjMxfDAsMTAwLDApfDA7Zz1jW2I+PjJdfDA7Zz1fUihlfDAsQ3wwLGd8MCwoKGd8MCk8MCk8PDMxPj4zMXwwKXwwO2k9ZjtyZXR1cm4gZ3wwfWZ1bmN0aW9uIE1yKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MDtiPWk7aT1pKzE2fDA7ZT1iKzR8MDtkPWI7Y1tlPj4yXT1hO2NbZD4+Ml09Y1tlPj4yXTtTcihjW2Q+PjJdfDApO2k9YjtyZXR1cm4gMH1mdW5jdGlvbiBOcihhLGIsZCxlLGYpe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTA7cj1pO2k9aSs2NHwwO3Q9cis1MnwwO3M9cis0OHwwO2g9cis0NHwwO2o9cis4fDA7bz1yKzQwfDA7cT1yKzM2fDA7bj1yKzMyfDA7az1yKzI4fDA7cD1yKzI0fDA7Zz1yO2w9cisyMHwwO209cisxNnwwO2NbdD4+Ml09YTtjW3M+PjJdPWI7Y1toPj4yXT1kO2Q9ajtjW2Q+PjJdPWU7Y1tkKzQ+PjJdPWY7Y1tvPj4yXT1jW3Q+PjJdO2NbcT4+Ml09Y1tzPj4yXTtjW24+PjJdPWNbaD4+Ml07ZD0oY1tvPj4yXXwwKSs0MHwwO2E9ajtiPWo7YTpkbyBpZigoKGNbZD4+Ml18MCkhPShjW2E+PjJdfDApPzE6KGNbZCs0Pj4yXXwwKSE9KGNbYSs0Pj4yXXwwKSl8KGNbYj4+Ml18MCk9PTAmKGNbYis0Pj4yXXwwKT09MCl7dD1nO2NbdD4+Ml09MDtjW3QrND4+Ml09MDtjW3A+PjJdPWNbKGNbbz4+Ml18MCkrMTY+PjJdO3doaWxlKDEpe2lmKCEoY1twPj4yXXwwKSlicmVhayBhO2E9ZztzPWNbKGNbbz4+Ml18MCkrND4+Ml18MDtzPVJSKGNbYT4+Ml18MCxjW2ErND4+Ml18MCxzfDAsKChzfDApPDApPDwzMT4+MzF8MCl8MDthPUM7dD1qO2I9Y1t0KzQ+PjJdfDA7aWYoISgoYXwwKTwoYnwwKXwoKGF8MCk9PShifDApP3M+Pj4wPD0oY1t0Pj4yXXwwKT4+PjA6MCkpKWJyZWFrIGE7cz1jWyhjW28+PjJdfDApKzQ+PjJdfDA7dD1nO3M9UlIoY1t0Pj4yXXwwLGNbdCs0Pj4yXXwwLHN8MCwoKHN8MCk8MCk8PDMxPj4zMXwwKXwwO3Q9ZztjW3Q+PjJdPXM7Y1t0KzQ+PjJdPUM7Y1twPj4yXT1jW2NbcD4+Ml0+PjJdfX1lbHNlIGNbcD4+Ml09Y1soY1tvPj4yXXwwKSs0MCs4Pj4yXTt3aGlsZSgwKTtzPWo7dD1jWyhjW28+PjJdfDApKzQ+PjJdfDA7dD0kUihjW3M+PjJdfDAsY1tzKzQ+PjJdfDAsdHwwLCgodHwwKTwwKTw8MzE+PjMxfDApfDA7Y1trPj4yXT10O2Rve2NbbD4+Ml09KGNbKGNbbz4+Ml18MCkrND4+Ml18MCktKGNbaz4+Ml18MCk7aWYoKGNbbj4+Ml18MCk8KChjWyhjW28+PjJdfDApKzQ+PjJdfDApLShjW2s+PjJdfDApfDApKWU9Y1tuPj4yXXwwO2Vsc2UgZT0oY1soY1tvPj4yXXwwKSs0Pj4yXXwwKS0oY1trPj4yXXwwKXwwO2NbbT4+Ml09ZTtUUihjW3E+PjJdfDAsKGNbcD4+Ml18MCkrNCsoY1trPj4yXXwwKXwwLGNbbT4+Ml18MCl8MDtjW3E+PjJdPShjW3E+PjJdfDApKyhjW20+PjJdfDApO2Nbbj4+Ml09KGNbbj4+Ml18MCktKGNbbD4+Ml18MCk7Y1trPj4yXT0wO2lmKChjW24+PjJdfDApPDApYnJlYWs7dD1jW2NbcD4+Ml0+PjJdfDA7Y1twPj4yXT10fXdoaWxlKCh0fDApIT0wJihjW24+PjJdfDApPjApO2lmKCEoY1twPj4yXXwwKSl7bj0wO3Q9MDtzPWNbbz4+Ml18MDtzPXMrNDB8MDtxPXM7Y1txPj4yXT1uO3M9cys0fDA7Y1tzPj4yXT10O3M9Y1twPj4yXXwwO3Q9Y1tvPj4yXXwwO3Q9dCs0MHwwO3Q9dCs4fDA7Y1t0Pj4yXT1zO2k9cjtyZXR1cm4gMH10PWo7bj1jW2g+PjJdfDA7bj1SUihjW3Q+PjJdfDAsY1t0KzQ+PjJdfDAsbnwwLCgobnwwKTwwKTw8MzE+PjMxfDApfDA7dD1DO3M9Y1tvPj4yXXwwO3M9cys0MHwwO3E9cztjW3E+PjJdPW47cz1zKzR8MDtjW3M+PjJdPXQ7cz1jW3A+PjJdfDA7dD1jW28+PjJdfDA7dD10KzQwfDA7dD10Kzh8MDtjW3Q+PjJdPXM7aT1yO3JldHVybiAwfWZ1bmN0aW9uIE9yKGEsYixkLGUsZil7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTA7dT1pO2k9aSs2NHwwO3E9dSs1MnwwO2c9dSs0OHwwO2g9dSs0NHwwO3I9dSs0MHwwO3M9dTt0PXUrMzZ8MDttPXUrMzJ8MDtwPXUrMjh8MDtqPXUrMjR8MDtuPXUrMjB8MDtrPXUrMTZ8MDtsPXUrMTJ8MDtvPXUrOHwwO2NbZz4+Ml09YTtjW2g+PjJdPWI7Y1tyPj4yXT1kO2I9cztjW2I+PjJdPWU7Y1tiKzQ+PjJdPWY7Y1t0Pj4yXT1jW2c+PjJdO2NbbT4+Ml09Y1tyPj4yXTtjW3A+PjJdPWNbaD4+Ml07aWYoKGNbKGNbdD4+Ml18MCkrOD4+Ml18MCk+MD8oZj1jW3I+PjJdfDAsYT1zLGE9UlIoZnwwLCgoZnwwKTwwKTw8MzE+PjMxfDAsY1thPj4yXXwwLGNbYSs0Pj4yXXwwKXwwLGY9QyxiPWNbKGNbdD4+Ml18MCkrOD4+Ml18MCxkPSgoYnwwKTwwKTw8MzE+PjMxLChmfDApPihkfDApfChmfDApPT0oZHwwKSZhPj4+MD5iPj4+MCk6MCl7Y1tqPj4yXT1UcihjW3Q+PjJdfDApfDA7aWYoIShjW2o+PjJdfDApKXt0PXM7Y1tqPj4yXT1JZyhjW2c+PjJdfDAsY1toPj4yXXwwLGNbcj4+Ml18MCxjW3Q+PjJdfDAsY1t0KzQ+PjJdfDApfDB9Y1txPj4yXT1jW2o+PjJdO3Q9Y1txPj4yXXwwO2k9dTtyZXR1cm4gdHwwfXdoaWxlKDEpe2lmKChjW20+PjJdfDApPD0wKXtlPTE4O2JyZWFrfWNbbj4+Ml09Y1soY1t0Pj4yXXwwKSsyNCs4Pj4yXTtqPShjW3Q+PjJdfDApKzI0fDA7Yj1jWyhjW3Q+PjJdfDApKzQ+PjJdfDA7Yj0kUihjW2o+PjJdfDAsY1tqKzQ+PjJdfDAsYnwwLCgoYnwwKTwwKTw8MzE+PjMxfDApfDA7Y1trPj4yXT1iO2lmKChjW20+PjJdfDApPCgoY1soY1t0Pj4yXXwwKSs0Pj4yXXwwKS0oY1trPj4yXXwwKXwwKSllPWNbbT4+Ml18MDtlbHNlIGU9KGNbKGNbdD4+Ml18MCkrND4+Ml18MCktKGNbaz4+Ml18MCl8MDtjW2w+PjJdPWU7aWYoIShjW2s+PjJdfDApKXtjW28+PjJdPUlkKDEyKygoY1soY1t0Pj4yXXwwKSs0Pj4yXXwwKS04KXwwKXwwO2lmKCEoY1tvPj4yXXwwKSl7ZT0xMjticmVha31jW2Nbbz4+Ml0+PjJdPTA7ZT1jW28+PjJdfDA7aWYoY1tuPj4yXXwwKWNbY1tuPj4yXT4+Ml09ZTtlbHNlIGNbKGNbdD4+Ml18MCkrMTY+PjJdPWU7Y1soY1t0Pj4yXXwwKSsyNCs4Pj4yXT1jW28+PjJdfVRSKChjWyhjW3Q+PjJdfDApKzI0Kzg+PjJdfDApKzQrKGNbaz4+Ml18MCl8MCxjW3A+PjJdfDAsY1tsPj4yXXwwKXwwO2NbcD4+Ml09KGNbcD4+Ml18MCkrKGNbbD4+Ml18MCk7Y1ttPj4yXT0oY1ttPj4yXXwwKS0oY1tsPj4yXXwwKTtqPWNbbD4+Ml18MDtiPShjW3Q+PjJdfDApKzI0fDA7YT1iO2o9UlIoY1thPj4yXXwwLGNbYSs0Pj4yXXwwLGp8MCwoKGp8MCk8MCk8PDMxPj4zMXwwKXwwO2NbYj4+Ml09ajtjW2IrND4+Ml09Q31pZigoZXwwKT09MTIpe2NbcT4+Ml09MzA4Mjt0PWNbcT4+Ml18MDtpPXU7cmV0dXJuIHR8MH1lbHNlIGlmKChlfDApPT0xOCl7cj1jW3I+PjJdfDA7cz1SUihyfDAsKChyfDApPDApPDwzMT4+MzF8MCxjW3M+PjJdfDAsY1tzKzQ+PjJdfDApfDA7Y1soY1t0Pj4yXXwwKSsxMj4+Ml09cztjW3E+PjJdPTA7dD1jW3E+PjJdfDA7aT11O3JldHVybiB0fDB9cmV0dXJuIDB9ZnVuY3Rpb24gUHIoYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTA7Zj1pO2k9aSsxNnwwO2g9ZisxMnwwO2c9ZjtlPWYrOHwwO2NbaD4+Ml09YTthPWc7Y1thPj4yXT1iO2NbYSs0Pj4yXT1kO2NbZT4+Ml09Y1toPj4yXTthPWc7aWYoISgoY1thPj4yXXwwKT09MCYoY1thKzQ+PjJdfDApPT0wKSl7aT1mO3JldHVybiAwfVNyKGNbZT4+Ml18MCk7Y1soY1tlPj4yXXwwKSsxMj4+Ml09MDtjWyhjW2U+PjJdfDApKzI0Kzg+PjJdPTA7aD0oY1tlPj4yXXwwKSsyNHwwO2NbaD4+Ml09MDtjW2grND4+Ml09MDtjWyhjW2U+PjJdfDApKzQwKzg+PjJdPTA7aD0oY1tlPj4yXXwwKSs0MHwwO2NbaD4+Ml09MDtjW2grND4+Ml09MDtpPWY7cmV0dXJuIDB9ZnVuY3Rpb24gUXIoYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wO2Q9aTtpPWkrMTZ8MDtjW2QrND4+Ml09YTtjW2Q+PjJdPWI7aT1kO3JldHVybiAwfWZ1bmN0aW9uIFJyKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MDtkPWk7aT1pKzE2fDA7Zz1kKzh8MDtmPWQrNHwwO2U9ZDtjW2c+PjJdPWE7Y1tmPj4yXT1iO2NbZT4+Ml09Y1tnPj4yXTtlPShjW2U+PjJdfDApKzI0fDA7YT1jW2UrND4+Ml18MDtiPWNbZj4+Ml18MDtjW2I+PjJdPWNbZT4+Ml07Y1tiKzQ+PjJdPWE7aT1kO3JldHVybiAwfWZ1bmN0aW9uIFNyKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTA7Zj1pO2k9aSsxNnwwO2I9Zis4fDA7ZD1mKzR8MDtlPWY7Y1tiPj4yXT1hO2NbZD4+Ml09Y1soY1tiPj4yXXwwKSsxNj4+Ml07d2hpbGUoMSl7aWYoIShjW2Q+PjJdfDApKWJyZWFrO2NbZT4+Ml09Y1tjW2Q+PjJdPj4yXTtLZChjW2Q+PjJdfDApO2NbZD4+Ml09Y1tlPj4yXX1jWyhjW2I+PjJdfDApKzE2Pj4yXT0wO2k9ZjtyZXR1cm59ZnVuY3Rpb24gVHIoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTA7bT1pO2k9aSsxMTJ8MDtlPW0rOTZ8MDtsPW0rOTJ8MDtrPW0rODh8MDtmPW0rOHwwO2g9bSs4NHwwO2c9bTtqPW0rODB8MDtjW2U+PjJdPWE7Y1trPj4yXT1jW2U+PjJdO2E9ZjtiPWNbZT4+Ml18MDtkPWErNzJ8MDtkb3tjW2E+PjJdPWNbYj4+Ml07YT1hKzR8MDtiPWIrNHwwfXdoaWxlKChhfDApPChkfDApKTthPWNbZT4+Ml18MDtkPWErNzJ8MDtkb3tjW2E+PjJdPTA7YT1hKzR8MH13aGlsZSgoYXwwKTwoZHwwKSk7Y1tsPj4yXT1VcihjW2YrNjA+PjJdfDAsY1tmKzY0Pj4yXXwwLGNbaz4+Ml18MCxjW2YrNTY+PjJdfDAsMCl8MDtpZighKGNbbD4+Ml18MCkpe2NbaD4+Ml09Y1tmKzQ+PjJdO2Q9ZztjW2Q+PjJdPTA7Y1tkKzQ+PjJdPTA7Y1tqPj4yXT1jW2YrMTY+PjJdO3doaWxlKDEpe2lmKCEoY1tqPj4yXXwwKSlicmVhaztuPWc7Yj1jW2g+PjJdfDA7Yj1SUihjW24+PjJdfDAsY1tuKzQ+PjJdfDAsYnwwLCgoYnwwKTwwKTw8MzE+PjMxfDApfDA7bj1DO2Q9ZisyNHwwO2E9Y1tkKzQ+PjJdfDA7aWYoKG58MCk+KGF8MCl8KChufDApPT0oYXwwKT9iPj4+MD4oY1tkPj4yXXwwKT4+PjA6MCkpe2Q9ZisyNHwwO249ZztuPVFSKGNbZD4+Ml18MCxjW2QrND4+Ml18MCxjW24+PjJdfDAsY1tuKzQ+PjJdfDApfDA7Y1toPj4yXT1ufW49ZztjW2w+PjJdPUlnKGNbaz4+Ml18MCwoY1tqPj4yXXwwKSs0fDAsY1toPj4yXXwwLGNbbj4+Ml18MCxjW24rND4+Ml18MCl8MDtpZihjW2w+PjJdfDApYnJlYWs7ZD1jW2g+PjJdfDA7bj1nO2Q9UlIoY1tuPj4yXXwwLGNbbis0Pj4yXXwwLGR8MCwoKGR8MCk8MCk8PDMxPj4zMXwwKXwwO249ZztjW24+PjJdPWQ7Y1tuKzQ+PjJdPUM7Y1tqPj4yXT1jW2Nbaj4+Ml0+PjJdfWlmKCEoY1tsPj4yXXwwKSlTcihmKX1pZighKGNbbD4+Ml18MCkpe249Y1tsPj4yXXwwO2k9bTtyZXR1cm4gbnwwfW9yKGNbaz4+Ml18MCk7YT1jW2U+PjJdfDA7Yj1mO2Q9YSs3MnwwO2Rve2NbYT4+Ml09Y1tiPj4yXTthPWErNHwwO2I9Yis0fDB9d2hpbGUoKGF8MCk8KGR8MCkpO249Y1tsPj4yXXwwO2k9bTtyZXR1cm4gbnwwfWZ1bmN0aW9uIFVyKGEsYixkLGUsZil7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MDtoPWk7aT1pKzMyfDA7bj1oKzIwfDA7bT1oKzE2fDA7bD1oKzEyfDA7az1oKzh8MDtqPWgrNHwwO2c9aDtjW24+PjJdPWE7Y1ttPj4yXT1iO2NbbD4+Ml09ZDtjW2s+PjJdPWU7Y1tqPj4yXT1mO2NbZz4+Ml09WmJbY1soY1tuPj4yXXwwKSsyND4+Ml0mMjU1XShjW24+PjJdfDAsY1ttPj4yXXwwLGNbbD4+Ml18MCxjW2s+PjJdJjU1NjkyNyxjW2o+PjJdfDApfDA7aT1oO3JldHVybiBjW2c+PjJdfDB9ZnVuY3Rpb24gVnIoYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wO209aTtpPWkrMzJ8MDtqPW0rMjR8MDtlPW0rMjB8MDtmPW0rMTZ8MDtsPW0rMTJ8MDtnPW0rOHwwO2g9bSs0fDA7az1tO2Nbaj4+Ml09YTtjW2U+PjJdPWI7Y1tmPj4yXT1kO2NbbD4+Ml09Y1soY1tqPj4yXXwwKSs0ND4+Ml07aWYoY1tsPj4yXXwwKXtsPWNbbD4+Ml18MDtpPW07cmV0dXJuIGx8MH1pZigoY1tmPj4yXXwwKT49KGNbKGNbaj4+Ml18MCkrMTA0Pj4yXXwwKSl7bD1jW2w+PjJdfDA7aT1tO3JldHVybiBsfDB9Y1toPj4yXT0oY1tmPj4yXXwwKSsoKGNbZT4+Ml18MCk9PTE/MDoxKTtjW2c+PjJdPWNbaD4+Ml07d2hpbGUoMSl7aWYoKGNbZz4+Ml18MCk+PShjWyhjW2o+PjJdfDApKzEwND4+Ml18MCkpYnJlYWs7cGooY1soY1soY1tqPj4yXXwwKSsxMDA+PjJdfDApKygoY1tnPj4yXXwwKSo0OHwwKSsxNj4+Ml18MCk7Y1tnPj4yXT0oY1tnPj4yXXwwKSsxfWNbKGNbaj4+Ml18MCkrMTA0Pj4yXT1jW2g+PjJdO2lmKChjW2U+PjJdfDApIT0xKXtpZigoQnIoY1tqPj4yXXwwKXwwKT09MD8oY1tjWyhjW2o+PjJdfDApKzY4Pj4yXT4+Ml18MCk9PTA6MCl7bD1jW2w+PjJdfDA7aT1tO3JldHVybiBsfDB9aWYoIShjW2g+PjJdfDApKWU9MDtlbHNlIGU9KGNbKGNbaj4+Ml18MCkrMTAwPj4yXXwwKSsoKChjW2g+PjJdfDApLTF8MCkqNDh8MCl8MDtjW2s+PjJdPWU7Y1tsPj4yXT1xcyhjW2o+PjJdfDAsY1trPj4yXXwwKXwwO2w9Y1tsPj4yXXwwO2k9bTtyZXR1cm4gbHwwfWlmKGNbaD4+Ml18MCl7bD1jW2w+PjJdfDA7aT1tO3JldHVybiBsfDB9aWYoIShjW2NbKGNbaj4+Ml18MCkrNzI+PjJdPj4yXXwwKSl7bD1jW2w+PjJdfDA7aT1tO3JldHVybiBsfDB9aWYodHIoY1soY1tqPj4yXXwwKSs3Mj4+Ml18MCl8MCljW2w+PjJdPXVyKGNbKGNbaj4+Ml18MCkrNzI+PjJdfDAsMCwwKXwwO2NbKGNbaj4+Ml18MCkrNTY+PjJdPTA7bD1jW2w+PjJdfDA7aT1tO3JldHVybiBsfDB9ZnVuY3Rpb24gV3IoYixlKXtiPWJ8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MDt0PWk7aT1pKzY0fDA7cj10Kzh8MDttPXQrNTZ8MDtuPXQrNTJ8MDtqPXQrNDh8MDtrPXQ7Zz10KzQ0fDA7bD10KzQwfDA7Zj10KzM2fDA7cD10KzMyfDA7cT10KzI4fDA7cz10KzI0fDA7aD10KzIwfDA7bz10KzE2fDA7Y1ttPj4yXT1iO2Nbbj4+Ml09ZTtjW2o+PjJdPWNbY1ttPj4yXT4+Ml07Y1tmPj4yXT0wO2NbcT4+Ml09MTtjW3M+PjJdPTA7Y1tvPj4yXT0wO2NbcD4+Ml09WGkoY1soY1ttPj4yXXwwKSs2OD4+Ml18MCxrKXwwO2E6ZG8gaWYoIShjW3A+PjJdfDApKXtjW3M+PjJdPWNbKGNbbT4+Ml18MCkrMjA4Pj4yXTtjW3A+PjJdPVhyKGNbKGNbbT4+Ml18MCkrNjg+PjJdfDAsY1tzPj4yXXwwLChjWyhjW2NbbT4+Ml0+PjJdfDApKzg+PjJdfDApKzF8MCl8MDtpZigoY1twPj4yXXwwKT09MD8oYVtjW3M+PjJdPj4wXXwwKSE9MDowKWNbcD4+Ml09WXIoY1tqPj4yXXwwLGNbcz4+Ml18MCwwLHEpfDA7Y1tzPj4yXT0wO2lmKChjW3A+PjJdfDApPT0wJihjW3E+PjJdfDApIT0wKXtqPShjW20+PjJdfDApKzgwfDA7Y1tqPj4yXT0wO2Nbais0Pj4yXT0wO2NbaD4+Ml09Y1tuPj4yXTtiOndoaWxlKDEpe2o9aztjW3A+PjJdPVpyKGNbbT4+Ml18MCxjW24+PjJdfDAsY1tqPj4yXXwwLGNbais0Pj4yXXwwLGcsZil8MDtpZihjW3A+PjJdfDApe2U9ODticmVha31pZigoY1tnPj4yXXwwKT09LTEpe2I9aztiPVFSKGNbYj4+Ml18MCxjW2IrND4+Ml18MCxjWyhjW20+PjJdfDApKzE1Nj4+Ml18MCwwKXwwO2o9KGNbKGNbbT4+Ml18MCkrMTYwPj4yXXwwKSs4fDA7aj1fUihifDAsQ3wwLGp8MCwoKGp8MCk8MCk8PDMxPj4zMXwwKXwwO2NbZz4+Ml09an1pZighKChjW2c+PjJdfDApIT0wfChjW24+PjJdfDApIT0wKT8oYj0oY1ttPj4yXXwwKSs4OHwwLGI9UlIoY1tiPj4yXXwwLGNbYis0Pj4yXXwwLGNbKGNbbT4+Ml18MCkrMTU2Pj4yXXwwLDApfDAsaj0oY1ttPj4yXXwwKSs4MHwwLChifDApPT0oY1tqPj4yXXwwKT8oQ3wwKT09KGNbais0Pj4yXXwwKTowKTowKXtqPWs7Yj0oY1ttPj4yXXwwKSs4MHwwO2I9UVIoY1tqPj4yXXwwLGNbais0Pj4yXXwwLGNbYj4+Ml18MCxjW2IrND4+Ml18MCl8MDtqPShjWyhjW20+PjJdfDApKzE2MD4+Ml18MCkrOHwwO2o9X1IoYnwwLEN8MCxqfDAsKChqfDApPDApPDwzMT4+MzF8MCl8MDtjW2c+PjJdPWp9aj0oY1ttPj4yXXwwKSs4MHwwO2lmKChjW2orND4+Ml18MCk9PTA/KGNbaj4+Ml18MCk9PShjWyhjW20+PjJdfDApKzE1Nj4+Ml18MCk6MCl7Y1twPj4yXT1EcihjW20+PjJdfDAsY1tmPj4yXXwwKXwwO2lmKGNbcD4+Ml18MClicmVhayBhO2NbKGNbbT4+Ml18MCkrMjg+PjJdPWNbZj4+Ml19Y1tsPj4yXT0wO3doaWxlKDEpe2lmKChjW2w+PjJdfDApPj4+MD49KGNbZz4+Ml18MCk+Pj4wKWNvbnRpbnVlIGI7aWYoY1toPj4yXXwwKXtaaShjW20+PjJdfDApO2NbaD4+Ml09MH1jW3A+PjJdPV9yKGNbbT4+Ml18MCwoY1ttPj4yXXwwKSs4MHwwLDAsMSwwKXwwO2lmKGNbcD4+Ml18MClicmVhaztjW28+PjJdPShjW28+PjJdfDApKzE7Y1tsPj4yXT0oY1tsPj4yXXwwKSsxfWlmKChjW3A+PjJdfDApIT0xMDEpe2U9MjY7YnJlYWt9ZT1rO2I9Y1tlKzQ+PjJdfDA7aj0oY1ttPj4yXXwwKSs4MHwwO2Nbaj4+Ml09Y1tlPj4yXTtjW2orND4+Ml09Yn1pZigoZXwwKT09OCl7aWYoKGNbcD4+Ml18MCkhPTEwMSlicmVhaztjW3A+PjJdPTA7YnJlYWt9ZWxzZSBpZigoZXwwKT09MjYpe2lmKChjW3A+PjJdfDApIT01MjIpYnJlYWs7Y1twPj4yXT0wO2JyZWFrfX19d2hpbGUoMCk7YVsoY1ttPj4yXXwwKSsxOT4+MF09YVsoY1ttPj4yXXwwKSsxMz4+MF18MDtpZighKGNbcD4+Ml18MCkpe2Nbcz4+Ml09Y1soY1ttPj4yXXwwKSsyMDg+PjJdO2NbcD4+Ml09WHIoY1soY1ttPj4yXXwwKSs2OD4+Ml18MCxjW3M+PjJdfDAsKGNbKGNbY1ttPj4yXT4+Ml18MCkrOD4+Ml18MCkrMXwwKXwwfWRvIGlmKCEoY1twPj4yXXwwKSl7aWYoKGRbKGNbbT4+Ml18MCkrMTc+PjBdfDApPDQ/KGRbKGNbbT4+Ml18MCkrMTc+PjBdfDApIT0wOjApYnJlYWs7Y1twPj4yXT1LZyhjW20+PjJdfDAsMCl8MH13aGlsZSgwKTtpZighKGNbcD4+Ml18MCkpY1twPj4yXT1ycihjW20+PjJdfDAsKGFbY1tzPj4yXT4+MF18MCkhPTAmMSwwKXwwO2lmKChjW3A+PjJdfDApPT0wPygoY1txPj4yXXwwKSE9MD8oYVtjW3M+PjJdPj4wXXwwKSE9MDowKTowKWNbcD4+Ml09JHIoY1ttPj4yXXwwLGNbcz4+Ml18MCl8MDtpZighKChjW24+PjJdfDApIT0wJihjW28+PjJdfDApIT0wKSl7cz1jW20+PjJdfDA7YXMocyk7cz1jW3A+PjJdfDA7aT10O3JldHVybiBzfDB9cz1jWyhjW20+PjJdfDApKzE4MD4+Ml18MDtjW3I+PjJdPWNbbz4+Ml07Y1tyKzQ+PjJdPXM7UmQoNTM5LDI1ODc0LHIpO3M9Y1ttPj4yXXwwO2FzKHMpO3M9Y1twPj4yXXwwO2k9dDtyZXR1cm4gc3wwfWZ1bmN0aW9uIFhyKGIsZCxlKXtiPWJ8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MDtxPWk7aT1pKzQ4fDA7Zj1xKzM2fDA7Zz1xKzMyfDA7aD1xKzI4fDA7aj1xKzI0fDA7bj1xKzIwfDA7bT1xKzE2fDA7bz1xO2w9cSsxMnwwO3A9cSs4fDA7az1xKzQwfDA7Y1tnPj4yXT1iO2NbaD4+Ml09ZDtjW2o+PjJdPWU7YVtjW2g+PjJdPj4wXT0wO2U9WGkoY1tnPj4yXXwwLG8pfDA7Y1tuPj4yXT1lO2Q9bztiPWNbZCs0Pj4yXXwwO2lmKCgoKCgoISgwIT0oZXwwKXwoKGJ8MCk8MHwoYnwwKT09MCYoY1tkPj4yXXwwKT4+PjA8MTYpKT8oYj1jW2c+PjJdfDAsZD1vLGQ9UVIoY1tkPj4yXXwwLGNbZCs0Pj4yXXwwLDE2LDApfDAsZD1mcyhiLGQsQyxtKXwwLGNbbj4+Ml09ZCwwPT0oZHwwKSk6MCk/ISgoY1ttPj4yXXwwKT09MD8xOihjW20+PjJdfDApPj4+MD49KGNbaj4+Ml18MCk+Pj4wKTowKT8oYj1jW2c+PjJdfDAsZD1vLGQ9UVIoY1tkPj4yXXwwLGNbZCs0Pj4yXXwwLDEyLDApfDAsZD1mcyhiLGQsQyxsKXwwLGNbbj4+Ml09ZCwwPT0oZHwwKSk6MCk/KGI9Y1tnPj4yXXwwLGQ9byxkPVFSKGNbZD4+Ml18MCxjW2QrND4+Ml18MCw4LDApfDAsZD1lcyhiLGssOCxkLEMpfDAsY1tuPj4yXT1kLDA9PShkfDApKTowKT8oZVIoaywyNTkwMSw4KXwwKT09MDowKT8oaz1jW2c+PjJdfDAsZT1jW2g+PjJdfDAsYj1jW20+PjJdfDAsZD1vLGQ9UVIoY1tkPj4yXXwwLGNbZCs0Pj4yXXwwLDE2LDApfDAsZD1RUihkfDAsQ3wwLGNbbT4+Ml18MCwwKXwwLGQ9ZXMoayxlLGIsZCxDKXwwLGNbbj4+Ml09ZCwwPT0oZHwwKSk6MCl7Y1twPj4yXT0wO3doaWxlKDEpe2lmKChjW3A+PjJdfDApPj4+MD49KGNbbT4+Ml18MCk+Pj4wKWJyZWFrO2NbbD4+Ml09KGNbbD4+Ml18MCktKGFbKGNbaD4+Ml18MCkrKGNbcD4+Ml18MCk+PjBdfDApO2NbcD4+Ml09KGNbcD4+Ml18MCkrMX1pZihjW2w+PjJdfDApY1ttPj4yXT0wO2FbKGNbaD4+Ml18MCkrKGNbbT4+Ml18MCk+PjBdPTA7Y1tmPj4yXT0wO2Q9Y1tmPj4yXXwwO2k9cTtyZXR1cm4gZHwwfWNbZj4+Ml09Y1tuPj4yXTtkPWNbZj4+Ml18MDtpPXE7cmV0dXJuIGR8MH1mdW5jdGlvbiBZcihhLGIsZCxlKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MDtmPWk7aT1pKzE2fDA7az1mKzEyfDA7aj1mKzh8MDtoPWYrNHwwO2c9ZjtjW2s+PjJdPWE7Y1tqPj4yXT1iO2NbaD4+Ml09ZDtjW2c+PjJdPWU7Yj1XYltjWyhjW2s+PjJdfDApKzMyPj4yXSYyNTVdKGNbaz4+Ml18MCxjW2o+PjJdfDAsY1toPj4yXXwwLGNbZz4+Ml18MCl8MDtpPWY7cmV0dXJuIGJ8MH1mdW5jdGlvbiBacihhLGIsZCxlLGYsZyl7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7dmFyIGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wO3M9aTtpPWkrNjR8MDtoPXMrNDR8MDtqPXMrNDB8MDtrPXMrMzZ8MDt0PXMrOHwwO2w9cyszMnwwO209cysyOHwwO3I9cysyNHwwO249cys0OHwwO289cztwPXMrMjB8MDtxPXMrMTZ8MDtjW2o+PjJdPWE7Y1trPj4yXT1iO2I9dDtjW2I+PjJdPWQ7Y1tiKzQ+PjJdPWU7Y1tsPj4yXT1mO2NbbT4+Ml09ZztiPXBzKGNbaj4+Ml18MCl8MDtmPShjW2o+PjJdfDApKzgwfDA7Y1tmPj4yXT1iO2NbZis0Pj4yXT1DO2Y9KGNbaj4+Ml18MCkrODB8MDtmPVJSKGNbZj4+Ml18MCxjW2YrND4+Ml18MCxjWyhjW2o+PjJdfDApKzE1Nj4+Ml18MCwwKXwwO2I9QzthPXQ7Zz1jW2ErND4+Ml18MDtpZigoYnwwKT4oZ3wwKXwoKGJ8MCk9PShnfDApP2Y+Pj4wPihjW2E+PjJdfDApPj4+MDowKSl7Y1toPj4yXT0xMDE7dD1jW2g+PjJdfDA7aT1zO3JldHVybiB0fDB9Zj0oY1tqPj4yXXwwKSs4MHwwO2E9Y1tmKzQ+PjJdfDA7dD1vO2NbdD4+Ml09Y1tmPj4yXTtjW3QrND4+Ml09YTtpZighKChjW2s+PjJdfDApPT0wPyhhPW8sdD0oY1tqPj4yXXwwKSs4OHwwLCEoKGNbYT4+Ml18MCkhPShjW3Q+PjJdfDApPzE6KGNbYSs0Pj4yXXwwKSE9KGNbdCs0Pj4yXXwwKSkpOjApKXt0PW87Y1tyPj4yXT1lcyhjWyhjW2o+PjJdfDApKzY4Pj4yXXwwLG4sOCxjW3Q+PjJdfDAsY1t0KzQ+PjJdfDApfDA7aWYoY1tyPj4yXXwwKXtjW2g+PjJdPWNbcj4+Ml07dD1jW2g+PjJdfDA7aT1zO3JldHVybiB0fDB9aWYoZVIobiwyNTkwMSw4KXwwKXtjW2g+PjJdPTEwMTt0PWNbaD4+Ml18MDtpPXM7cmV0dXJuIHR8MH19YT1jWyhjW2o+PjJdfDApKzY4Pj4yXXwwO3Q9bzt0PVJSKGNbdD4+Ml18MCxjW3QrND4+Ml18MCw4LDApfDA7dD1mcyhhLHQsQyxjW2w+PjJdfDApfDA7Y1tyPj4yXT10O2lmKCgwPT0odHwwKT8oYT1jWyhjW2o+PjJdfDApKzY4Pj4yXXwwLHQ9byx0PVJSKGNbdD4+Ml18MCxjW3QrND4+Ml18MCwxMiwwKXwwLHQ9ZnMoYSx0LEMsKGNbaj4+Ml18MCkrNTJ8MCl8MCxjW3I+PjJdPXQsMD09KHR8MCkpOjApPyhhPWNbKGNbaj4+Ml18MCkrNjg+PjJdfDAsdD1vLHQ9UlIoY1t0Pj4yXXwwLGNbdCs0Pj4yXXwwLDE2LDApfDAsdD1mcyhhLHQsQyxjW20+PjJdfDApfDAsY1tyPj4yXT10LDA9PSh0fDApKTowKXt0PShjW2o+PjJdfDApKzgwfDA7ZG8gaWYoKGNbdD4+Ml18MCk9PTAmKGNbdCs0Pj4yXXwwKT09MCl7YT1jWyhjW2o+PjJdfDApKzY4Pj4yXXwwO3Q9bzt0PVJSKGNbdD4+Ml18MCxjW3QrND4+Ml18MCwyMCwwKXwwO3Q9ZnMoYSx0LEMscSl8MDtjW3I+PjJdPXQ7aWYoMD09KHR8MCk/KGE9Y1soY1tqPj4yXXwwKSs2OD4+Ml18MCx0PW8sdD1SUihjW3Q+PjJdfDAsY1t0KzQ+PjJdfDAsMjQsMCl8MCx0PWZzKGEsdCxDLHApfDAsY1tyPj4yXT10LDA9PSh0fDApKTowKXtpZighKGNbcD4+Ml18MCkpY1twPj4yXT1jWyhjW2o+PjJdfDApKzE2MD4+Ml07aWYoKCEoKGNbcD4+Ml18MCk+Pj4wPDUxMnwoY1txPj4yXXwwKT4+PjA8MzJ8KGNbcD4+Ml18MCk+Pj4wPjY1NTM2fChjW3E+PjJdfDApPj4+MD42NTUzNik/KChjW3A+PjJdfDApLTEmY1twPj4yXXwwKT09MDowKT8oKGNbcT4+Ml18MCktMSZjW3E+PjJdfDApPT0wOjApe2Nbcj4+Ml09VmkoY1tqPj4yXXwwLHAsLTEpfDA7Y1soY1tqPj4yXXwwKSsxNTY+PjJdPWNbcT4+Ml07YnJlYWt9Y1toPj4yXT0xMDE7dD1jW2g+PjJdfDA7aT1zO3JldHVybiB0fDB9Y1toPj4yXT1jW3I+PjJdO3Q9Y1toPj4yXXwwO2k9cztyZXR1cm4gdHwwfXdoaWxlKDApO3Q9KGNbaj4+Ml18MCkrODB8MDthPXQ7YT1SUihjW2E+PjJdfDAsY1thKzQ+PjJdfDAsY1soY1tqPj4yXXwwKSsxNTY+PjJdfDAsMCl8MDtjW3Q+PjJdPWE7Y1t0KzQ+PjJdPUM7Y1toPj4yXT1jW3I+PjJdO3Q9Y1toPj4yXXwwO2k9cztyZXR1cm4gdHwwfWNbaD4+Ml09Y1tyPj4yXTt0PWNbaD4+Ml18MDtpPXM7cmV0dXJuIHR8MH1mdW5jdGlvbiBfcihmLGcsaCxqLGspe2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO2s9a3wwO3ZhciBsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wO0I9aTtpPWkrNjR8MDt5PUIrNjB8MDtxPUIrNTZ8MDtsPUIrNTJ8MDttPUIrNDh8MDtyPUIrNDR8MDtuPUIrNDB8MDtBPUIrMzZ8MDt6PUIrMzJ8MDt2PUIrMjh8MDtvPUIrMjR8MDtzPUIrMjB8MDtwPUIrMTZ8MDt0PUIrMTJ8MDt1PUI7eD1CKzh8MDtjW3E+PjJdPWY7Y1tsPj4yXT1nO2NbbT4+Ml09aDtjW3I+PjJdPWo7Y1tuPj4yXT1rO2Nbcz4+Ml09Y1soY1txPj4yXXwwKSsyMDg+PjJdO2o9Y1txPj4yXXwwO2lmKGNbcj4+Ml18MClqPWNbais2OD4+Ml18MDtlbHNlIGo9Y1tqKzcyPj4yXXwwO2NbcD4+Ml09ajtmPWNbbD4+Ml18MDtjW0E+PjJdPWZzKGNbcD4+Ml18MCxjW2Y+PjJdfDAsY1tmKzQ+PjJdfDAsdil8MDtpZihjW0E+PjJdfDApe2NbeT4+Ml09Y1tBPj4yXTtBPWNbeT4+Ml18MDtpPUI7cmV0dXJuIEF8MH1rPWNbcD4+Ml18MDtoPWNbcz4+Ml18MDtnPWNbKGNbcT4+Ml18MCkrMTYwPj4yXXwwO2Y9Y1tsPj4yXXwwO2Y9UlIoY1tmPj4yXXwwLGNbZis0Pj4yXXwwLDQsMCl8MDtjW0E+PjJdPWVzKGssaCxnLGYsQyl8MDtpZihjW0E+PjJdfDApe2NbeT4+Ml09Y1tBPj4yXTtBPWNbeT4+Ml18MDtpPUI7cmV0dXJuIEF8MH1nPShjWyhjW3E+PjJdfDApKzE2MD4+Ml18MCkrNCsoY1tyPj4yXTw8Mil8MDtmPWNbbD4+Ml18MDtoPWY7Zz1SUihjW2g+PjJdfDAsY1toKzQ+PjJdfDAsZ3wwLCgoZ3wwKTwwKTw8MzE+PjMxfDApfDA7Y1tmPj4yXT1nO2NbZis0Pj4yXT1DO2lmKChjW3Y+PjJdfDApIT0wPyhjW3Y+PjJdfDApIT0oKChjWzM4NF18MCkvKGNbKGNbcT4+Ml18MCkrMTYwPj4yXXwwKXwwKSsxfDApOjApe2lmKChjW3Y+PjJdfDApPj4+MDw9KGNbKGNbcT4+Ml18MCkrMjg+PjJdfDApPj4+MD8obmooY1ttPj4yXXwwLGNbdj4+Ml18MCl8MCk9PTA6MCl7aWYoY1tyPj4yXXwwKXtmPWNbcD4+Ml18MDtwPWNbbD4+Ml18MDtwPVFSKGNbcD4+Ml18MCxjW3ArND4+Ml18MCw0LDApfDA7Y1tBPj4yXT1mcyhmLHAsQyxvKXwwO2lmKGNbQT4+Ml18MCl7Y1t5Pj4yXT1jW0E+PjJdO0E9Y1t5Pj4yXXwwO2k9QjtyZXR1cm4gQXwwfWlmKChjW24+PjJdfDApPT0wPyhwPWdzKGNbcT4+Ml18MCxjW3M+PjJdfDApfDAsKHB8MCkhPShjW28+PjJdfDApKTowKXtjW3k+PjJdPTEwMTtBPWNbeT4+Ml18MDtpPUI7cmV0dXJuIEF8MH19aWYoKGNbbT4+Ml18MCkhPTA/KHA9bGooY1ttPj4yXXwwLGNbdj4+Ml18MCl8MCxjW0E+PjJdPXAsKHB8MCkhPTApOjApe2NbeT4+Ml09Y1tBPj4yXTtBPWNbeT4+Ml18MDtpPUI7cmV0dXJuIEF8MH1pZigoY1t2Pj4yXXwwKT09MT8oYlsoY1txPj4yXXwwKSsxNTA+PjFdfDApIT0oZFsoY1tzPj4yXXwwKSsyMD4+MF18MCk6MCliWyhjW3E+PjJdfDApKzE1MD4+MV09ZFsoY1tzPj4yXXwwKSsyMD4+MF18MDtpZihCcihjW3E+PjJdfDApfDApY1t6Pj4yXT0wO2Vsc2UgY1t6Pj4yXT1ocyhjW3E+PjJdfDAsY1t2Pj4yXXwwKXwwO2lmKGNbcj4+Ml18MCl7aWYoZFsoY1txPj4yXXwwKSs3Pj4wXXwwKWo9MTtlbHNle3A9Y1tsPj4yXXwwO249Y1twKzQ+PjJdfDA7aj0oY1txPj4yXXwwKSs4OHwwO289Y1tqKzQ+PjJdfDA7aj0obnwwKTwob3wwKXwoKG58MCk9PShvfDApPyhjW3A+PjJdfDApPj4+MDw9KGNbaj4+Ml18MCk+Pj4wOjApfWNbdD4+Ml09aiYxfWVsc2V7aWYoIShjW3o+PjJdfDApKWo9MTtlbHNlIGo9MD09KGVbKGNbej4+Ml18MCkrMjQ+PjFdJjh8MCk7Y1t0Pj4yXT1qJjF9ZG8gaWYoY1tjWyhjW3E+PjJdfDApKzY0Pj4yXT4+Ml18MCl7aWYoKGRbKGNbcT4+Ml18MCkrMTc+PjBdfDApPj00KXtpZighKGNbdD4+Ml18MCkpe3c9NDQ7YnJlYWt9fWVsc2UgaWYoISgoY1t0Pj4yXXwwKSE9MD8oZFsoY1txPj4yXXwwKSsxNz4+MF18MCk9PTA6MCkpe3c9NDQ7YnJlYWt9cD1jWyhjW3E+PjJdfDApKzE2MD4+Ml18MDtwPWFTKChjW3Y+PjJdfDApLTF8MCwwLHB8MCwoKHB8MCk8MCk8PDMxPj4zMXwwKXwwO3Q9dTtjW3Q+PjJdPXA7Y1t0KzQ+PjJdPUM7Y1tBPj4yXT1JZyhjWyhjW3E+PjJdfDApKzY0Pj4yXXwwLGNbcz4+Ml18MCxjWyhjW3E+PjJdfDApKzE2MD4+Ml18MCxjW3U+PjJdfDAsY1t1KzQ+PjJdfDApfDA7aWYoKGNbdj4+Ml18MCk+Pj4wPihjWyhjW3E+PjJdfDApKzM2Pj4yXXwwKT4+PjApY1soY1txPj4yXXwwKSszNj4+Ml09Y1t2Pj4yXTtpZihjWyhjW3E+PjJdfDApKzk2Pj4yXXwwKXtpcyhjWyhjW3E+PjJdfDApKzk2Pj4yXXwwLGNbdj4+Ml18MCxjW3M+PjJdfDApO2Nbcz4+Ml09Y1tzPj4yXX19ZWxzZSB3PTQ0O3doaWxlKDApO2RvIGlmKCh3fDApPT00ND8oY1tyPj4yXXwwKT09MCYoY1t6Pj4yXXwwKT09MDowKXt3PShjW3E+PjJdfDApKzIxfDA7YVt3Pj4wXT1kW3c+PjBdfDI7Y1tBPj4yXT12ZyhjW3E+PjJdfDAsY1t2Pj4yXXwwLHosMSl8MDt3PShjW3E+PjJdfDApKzIxfDA7YVt3Pj4wXT1kW3c+PjBdJi0zO2lmKCEoY1tBPj4yXXwwKSl7anMoY1t6Pj4yXXwwKTticmVha31jW3k+PjJdPWNbQT4+Ml07QT1jW3k+PjJdfDA7aT1CO3JldHVybiBBfDB9d2hpbGUoMCk7aWYoY1t6Pj4yXXwwKXtjW3g+PjJdPWNbKGNbej4+Ml18MCkrND4+Ml07VFIoY1t4Pj4yXXwwLGNbcz4+Ml18MCxjWyhjW3E+PjJdfDApKzE2MD4+Ml18MCl8MDtRYltjWyhjW3E+PjJdfDApKzIwND4+Ml0mMjU1XShjW3o+PjJdfDApO2lmKChjW3Y+PjJdfDApPT0xKXtoPShjW3E+PjJdfDApKzExMnwwO2o9KGNbeD4+Ml18MCkrMjR8MDtrPWgrMTZ8MDtkb3thW2g+PjBdPWFbaj4+MF18MDtoPWgrMXwwO2o9aisxfDB9d2hpbGUoKGh8MCk8KGt8MCkpfWtzKGNbej4+Ml18MCl9Y1t5Pj4yXT1jW0E+PjJdO0E9Y1t5Pj4yXXwwO2k9QjtyZXR1cm4gQXwwfWNbeT4+Ml09MDtBPWNbeT4+Ml18MDtpPUI7cmV0dXJuIEF8MH1jW3k+PjJdPTEwMTtBPWNbeT4+Ml18MDtpPUI7cmV0dXJuIEF8MH1mdW5jdGlvbiAkcihiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTA7cz1pO2k9aSs2NHwwO3Q9cys2MHwwO2U9cys1NnwwO249cys1MnwwO289cys0OHwwO209cys0NHwwO2w9cys0MHwwO3E9cyszNnwwO2o9cztwPXMrMzJ8MDtyPXMrMjh8MDtrPXMrMjR8MDtnPXMrMTZ8MDtmPXMrMTJ8MDtoPXMrOHwwO2NbdD4+Ml09YjtjW2U+PjJdPWQ7Y1tuPj4yXT1jW2NbdD4+Ml0+PjJdO2NbcT4+Ml09MDtkPWNbKGNbbj4+Ml18MCkrND4+Ml08PDE7Y1ttPj4yXT1rZyhkLCgoZHwwKTwwKTw8MzE+PjMxKXwwO2NbbD4+Ml09KGNbbT4+Ml18MCkrKGNbKGNbbj4+Ml18MCkrND4+Ml18MCk7aWYoY1ttPj4yXXwwKXtjW3MrMjA+PjJdPTE2Mzg1O2Nbbz4+Ml09VXIoY1tuPj4yXXwwLGNbZT4+Ml18MCxjW20+PjJdfDAsMTYzODUsMCl8MH1lbHNlIGNbbz4+Ml09NzthOmRvIGlmKChjW28+PjJdfDApPT0wPyhjW28+PjJdPVhpKGNbbT4+Ml18MCxqKXwwLChjW28+PjJdfDApPT0wKTowKXtjW2s+PjJdPShjWyhjW24+PjJdfDApKzg+PjJdfDApKzE7ZD1qO3Q9Y1trPj4yXXwwO3Q9UlIoY1tkPj4yXXwwLGNbZCs0Pj4yXXwwLHR8MCwoKHR8MCk8MCk8PDMxPj4zMXwwKXwwO3Q9UlIodHwwLEN8MCwxLDApfDA7Y1txPj4yXT0kZih0LEMpfDA7aWYoIShjW3E+PjJdfDApKXtjW28+PjJdPTc7YnJlYWt9dD1qO3Q9UlIoY1t0Pj4yXXwwLGNbdCs0Pj4yXXwwLDEsMCl8MDtjW3I+PjJdPShjW3E+PjJdfDApK3Q7Y1tvPj4yXT1lcyhjW20+PjJdfDAsY1txPj4yXXwwLGNbaj4+Ml18MCwwLDApfDA7aWYoIShjW28+PjJdfDApKXthWyhjW3E+PjJdfDApKyhjW2o+PjJdfDApPj4wXT0wO2NbcD4+Ml09Y1txPj4yXTt3aGlsZSgxKXtkPShjW3A+PjJdfDApLShjW3E+PjJdfDApfDA7dT0oKGR8MCk8MCk8PDMxPj4zMTt0PWo7Yj1jW3QrND4+Ml18MDtpZighKCh1fDApPChifDApfCgodXwwKT09KGJ8MCk/ZD4+PjA8KGNbdD4+Ml18MCk+Pj4wOjApKSlicmVhaztjW28+PjJdPVlyKGNbbj4+Ml18MCxjW3A+PjJdfDAsMCxnKXwwO2lmKGNbbz4+Ml18MClicmVhayBhO2lmKGNbZz4+Ml18MCl7Y1toPj4yXT0yMDQ5O2Nbbz4+Ml09VXIoY1tuPj4yXXwwLGNbcD4+Ml18MCxjW2w+PjJdfDAsY1toPj4yXXwwLDApfDA7aWYoY1tvPj4yXXwwKWJyZWFrIGE7Y1tvPj4yXT1YcihjW2w+PjJdfDAsY1tyPj4yXXwwLGNbaz4+Ml18MCl8MDtvcihjW2w+PjJdfDApO2lmKGNbbz4+Ml18MClicmVhayBhO2lmKGFbY1tyPj4yXT4+MF18MCliPShoUihjW3I+PjJdfDAsY1tlPj4yXXwwKXwwKT09MDtlbHNlIGI9MDtjW2Y+PjJdPWImMTtpZihjW2Y+PjJdfDApYnJlYWsgYX11PShKZihjW3A+PjJdfDApfDApKzF8MDtjW3A+PjJdPShjW3A+PjJdfDApK3V9b3IoY1ttPj4yXXwwKTtjW28+PjJdPXhyKGNbbj4+Ml18MCxjW2U+PjJdfDAsMCl8MH19d2hpbGUoMCk7S2QoY1txPj4yXXwwKTtpZighKGNbbT4+Ml18MCkpe3U9Y1tvPj4yXXwwO2k9cztyZXR1cm4gdXwwfW9yKGNbbT4+Ml18MCk7S2QoY1ttPj4yXXwwKTt1PWNbbz4+Ml18MDtpPXM7cmV0dXJuIHV8MH1mdW5jdGlvbiBhcyhhKXthPWF8MDt2YXIgYj0wLGU9MDtlPWk7aT1pKzE2fDA7Yj1lO2NbYj4+Ml09YTtpZigoZFsoY1tiPj4yXXwwKSsxMz4+MF18MHwwKT09MD8oKGJzKGNbKGNbYj4+Ml18MCkrNjQ+PjJdfDApfDApJjQwOTZ8MCk9PTA6MCl7YT1jcyhjWyhjW2I+PjJdfDApKzY0Pj4yXXwwKXwwO2NbKGNbYj4+Ml18MCkrMTU2Pj4yXT1hO2k9ZTtyZXR1cm59Y1soY1tiPj4yXXwwKSsxNTY+PjJdPTUxMjtpPWU7cmV0dXJufWZ1bmN0aW9uIGJzKGEpe2E9YXwwO3ZhciBiPTAsZD0wO2I9aTtpPWkrMTZ8MDtkPWI7Y1tkPj4yXT1hO2E9VGJbY1soY1tjW2Q+PjJdPj4yXXwwKSs0OD4+Ml0mMjU1XShjW2Q+PjJdfDApfDA7aT1iO3JldHVybiBhfDB9ZnVuY3Rpb24gY3MoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wO2Q9aTtpPWkrMTZ8MDtlPWQrNHwwO2I9ZDtjW2U+PjJdPWE7Y1tiPj4yXT1kcyhjW2U+PjJdfDApfDA7aWYoKGNbYj4+Ml18MCk+PTMyKXtpZigoY1tiPj4yXXwwKT42NTUzNiljW2I+PjJdPTY1NTM2fWVsc2UgY1tiPj4yXT01MTI7aT1kO3JldHVybiBjW2I+PjJdfDB9ZnVuY3Rpb24gZHMoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wO2U9aTtpPWkrMTZ8MDtiPWUrNHwwO2Q9ZTtjW2I+PjJdPWE7Y1tkPj4yXT1jWyhjW2NbYj4+Ml0+PjJdfDApKzQ0Pj4yXTtpZighKGNbZD4+Ml18MCkpe2Q9NDA5NjtpPWU7cmV0dXJuIGR8MH1kPVRiW2NbZD4+Ml0mMjU1XShjW2I+PjJdfDApfDA7aT1lO3JldHVybiBkfDB9ZnVuY3Rpb24gZXMoYSxiLGQsZSxmKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MDtnPWk7aT1pKzMyfDA7az1nKzE2fDA7aj1nKzEyfDA7aD1nKzh8MDtsPWc7Y1trPj4yXT1hO2Nbaj4+Ml09YjtjW2g+PjJdPWQ7Yj1sO2NbYj4+Ml09ZTtjW2IrND4+Ml09ZjtiPWw7Yj1aYltjWyhjW2Nbaz4+Ml0+PjJdfDApKzg+PjJdJjI1NV0oY1trPj4yXXwwLGNbaj4+Ml18MCxjW2g+PjJdfDAsY1tiPj4yXXwwLGNbYis0Pj4yXXwwKXwwO2k9ZztyZXR1cm4gYnwwfWZ1bmN0aW9uIGZzKGEsYixkLGUpe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MDtqPWk7aT1pKzMyfDA7az1qKzE2fDA7bD1qO2Y9aisxMnwwO2c9aisyMHwwO2g9ais4fDA7Y1trPj4yXT1hO2E9bDtjW2E+PjJdPWI7Y1thKzQ+PjJdPWQ7Y1tmPj4yXT1lO2U9bDtjW2g+PjJdPWVzKGNbaz4+Ml18MCxnLDQsY1tlPj4yXXwwLGNbZSs0Pj4yXXwwKXwwO2lmKGNbaD4+Ml18MCl7bD1jW2g+PjJdfDA7aT1qO3JldHVybiBsfDB9bD1ncihnKXwwO2NbY1tmPj4yXT4+Ml09bDtsPWNbaD4+Ml18MDtpPWo7cmV0dXJuIGx8MH1mdW5jdGlvbiBncyhhLGIpe2E9YXwwO2I9YnwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wO2g9aTtpPWkrMTZ8MDtqPWgrMTJ8MDtlPWgrOHwwO2Y9aCs0fDA7Zz1oO2Nbaj4+Ml09YTtjW2U+PjJdPWI7Y1tmPj4yXT1jWyhjW2o+PjJdfDApKzUyPj4yXTtjW2c+PjJdPShjWyhjW2o+PjJdfDApKzE2MD4+Ml18MCktMjAwO3doaWxlKDEpe2lmKChjW2c+PjJdfDApPD0wKWJyZWFrO2NbZj4+Ml09KGNbZj4+Ml18MCkrKGRbKGNbZT4+Ml18MCkrKGNbZz4+Ml18MCk+PjBdfDApO2NbZz4+Ml09KGNbZz4+Ml18MCktMjAwfWk9aDtyZXR1cm4gY1tmPj4yXXwwfWZ1bmN0aW9uIGhzKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTA7aD1pO2k9aSsxNnwwO2Q9aCsxMnwwO2U9aCs4fDA7Zj1oKzR8MDtnPWg7Y1tlPj4yXT1hO2NbZj4+Ml09YjtjW2c+PjJdPW1zKGNbKGNbZT4+Ml18MCkrMjEyPj4yXXwwLGNbZj4+Ml18MCwwKXwwO2lmKCEoY1tnPj4yXXwwKSl7Y1tkPj4yXT0wO2I9Y1tkPj4yXXwwO2k9aDtyZXR1cm4gYnwwfWVsc2V7Y1tkPj4yXT1ucyhjWyhjW2U+PjJdfDApKzIxMj4+Ml18MCxjW2Y+PjJdfDAsY1tnPj4yXXwwKXwwO2I9Y1tkPj4yXXwwO2k9aDtyZXR1cm4gYnwwfXJldHVybiAwfWZ1bmN0aW9uIGlzKGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wO2g9aTtpPWkrMTZ8MDtlPWgrOHwwO2Y9aCs0fDA7Zz1oO2NbZT4+Ml09YTtjW2Y+PjJdPWI7Y1tnPj4yXT1kO2lmKCEoY1tlPj4yXXwwKSl7aT1oO3JldHVybn1scyhjW2U+PjJdfDAsY1tmPj4yXXwwLGNbZz4+Ml18MCk7aT1oO3JldHVybn1mdW5jdGlvbiBqcyhhKXthPWF8MDt2YXIgZD0wLGY9MDtmPWk7aT1pKzE2fDA7ZD1mO2NbZD4+Ml09YTtpZighKChlWyhjW2Q+PjJdfDApKzI0Pj4xXXwwKSYxNykpe2k9ZjtyZXR1cm59YT0oY1tkPj4yXXwwKSsyNHwwO2JbYT4+MV09KGVbYT4+MV18MCkmLTE3O2lmKCEoKGVbKGNbZD4+Ml18MCkrMjQ+PjFdfDApJjEpKXtpPWY7cmV0dXJufWE9KGNbZD4+Ml18MCkrMjR8MDtiW2E+PjFdPShlW2E+PjFdfDApXjM7aGooY1tkPj4yXXwwLDIpO2k9ZjtyZXR1cm59ZnVuY3Rpb24ga3MoYSl7YT1hfDA7dmFyIGQ9MCxmPTAsZz0wO2Y9aTtpPWkrMTZ8MDtkPWY7Y1tkPj4yXT1hO2c9KGNbKGNbZD4+Ml18MCkrMjg+PjJdfDApKzEyfDA7Y1tnPj4yXT0oY1tnPj4yXXwwKSstMTtnPShjW2Q+PjJdfDApKzI2fDA7YT0oYltnPj4xXXwwKSstMTw8MTY+PjE2O2JbZz4+MV09YTtpZihhPDwxNj4+MTYpe2k9ZjtyZXR1cm59YT1jW2Q+PjJdfDA7aWYoKGVbKGNbZD4+Ml18MCkrMjQ+PjFdfDApJjEpe2lqKGEpO2k9ZjtyZXR1cm59aWYoIShjW2ErMzY+PjJdfDApKXtpPWY7cmV0dXJufWhqKGNbZD4+Ml18MCwzKTtpPWY7cmV0dXJufWZ1bmN0aW9uIGxzKGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MDtqPWk7aT1pKzE2fDA7ZT1qKzEyfDA7Zj1qKzh8MDtnPWorNHwwO2g9ajtjW2U+PjJdPWE7Y1tmPj4yXT1iO2NbZz4+Ml09ZDtkb3tpZigoKG5nKGNbKGNbZT4+Ml18MCkrMjg+PjJdfDApfDApPT0wPyhjW2Y+PjJdfDApPj4+MDwoY1soY1tlPj4yXXwwKSsxNj4+Ml18MCk+Pj4wOjApPyhjW2g+PjJdPXhnKGNbZT4+Ml18MCxjW2Y+PjJdfDAsY1tnPj4yXXwwLDEpfDAsKGNbaD4+Ml18MCkhPTApOjApY1soY1tlPj4yXXwwKSsyOD4+Ml09Y1toPj4yXTthPWNbKGNbZT4+Ml18MCkrNDQ+PjJdfDA7Y1tlPj4yXT1hfXdoaWxlKChhfDApIT0wKTtpPWo7cmV0dXJufWZ1bmN0aW9uIG1zKGEsYixlKXthPWF8MDtiPWJ8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTA7Zz1pO2k9aSszMnwwO2s9ZysxNnwwO2o9ZysxMnwwO2w9Zys4fDA7aD1nKzR8MDtmPWc7Y1trPj4yXT1hO2Nbaj4+Ml09YjtjW2w+PjJdPWU7Y1toPj4yXT1jW2w+PjJdJihkWyhjW2s+PjJdfDApKzMzPj4wXXwwKTtjW2Y+PjJdPU9iW2NbMTQ0Pj4yXSYyNTVdKGNbKGNbaz4+Ml18MCkrNDQ+PjJdfDAsY1tqPj4yXXwwLGNbaD4+Ml18MCl8MDtpPWc7cmV0dXJuIGNbZj4+Ml18MH1mdW5jdGlvbiBucyhhLGQsZSl7YT1hfDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wO2s9aTtpPWkrMzJ8MDtmPWsrMTZ8MDtsPWsrMTJ8MDtnPWsrOHwwO2g9ays0fDA7aj1rO2NbbD4+Ml09YTtjW2c+PjJdPWQ7Y1toPj4yXT1lO2Nbaj4+Ml09Y1soY1toPj4yXXwwKSs0Pj4yXTthPWNbbD4+Ml18MDtpZihjW2Nbaj4+Ml0+PjJdfDApe2w9YSsxMnwwO2NbbD4+Ml09KGNbbD4+Ml18MCkrMTtsPShjW2o+PjJdfDApKzI2fDA7YltsPj4xXT0oYltsPj4xXXwwKSsxPDwxNj4+MTY7Y1tmPj4yXT1jW2o+PjJdO2w9Y1tmPj4yXXwwO2k9aztyZXR1cm4gbHwwfWVsc2V7Y1tmPj4yXT1vcyhhLGNbZz4+Ml18MCxjW2g+PjJdfDApfDA7bD1jW2Y+PjJdfDA7aT1rO3JldHVybiBsfDB9cmV0dXJuIDB9ZnVuY3Rpb24gb3MoYSxkLGUpe2E9YXwwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wO2Y9aTtpPWkrMTZ8MDtqPWYrMTJ8MDtoPWYrOHwwO2c9Zis0fDA7az1mO2Nbaj4+Ml09YTtjW2g+PjJdPWQ7Y1tnPj4yXT1lO2Nbaz4+Ml09Y1soY1tnPj4yXXwwKSs0Pj4yXTtkPShjW2s+PjJdfDApKzEyfDA7Y1tkPj4yXT0wO2NbZCs0Pj4yXT0wO2NbZCs4Pj4yXT0wO2NbZCsxMj4+Ml09MDtjW2QrMTY+PjJdPTA7Y1tkKzIwPj4yXT0wO2NbZCsyND4+Ml09MDtjW2Nbaz4+Ml0+PjJdPWNbZz4+Ml07Y1soY1trPj4yXXwwKSs0Pj4yXT1jW2NbZz4+Ml0+PjJdO2NbKGNbaz4+Ml18MCkrOD4+Ml09KGNbaz4+Ml18MCkrNDA7VlIoY1soY1trPj4yXXwwKSs4Pj4yXXwwLDAsY1soY1tqPj4yXXwwKSsyOD4+Ml18MCl8MDtjWyhjW2s+PjJdfDApKzI4Pj4yXT1jW2o+PjJdO2NbKGNbaz4+Ml18MCkrMjA+PjJdPWNbaD4+Ml07YlsoY1trPj4yXXwwKSsyND4+MV09MTtkPW5zKGNbaj4+Ml18MCxjW2g+PjJdfDAsY1tnPj4yXXwwKXwwO2k9ZjtyZXR1cm4gZHwwfWZ1bmN0aW9uIHBzKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTAsZz0wLGg9MDtmPWk7aT1pKzMyfDA7Yj1mKzE2fDA7ZT1mKzh8MDtkPWY7Y1tiPj4yXT1hO2g9ZTtjW2g+PjJdPTA7Y1toKzQ+PjJdPTA7aD0oY1tiPj4yXXwwKSs4MHwwO2c9Y1toKzQ+PjJdfDA7YT1kO2NbYT4+Ml09Y1toPj4yXTtjW2ErND4+Ml09ZzthPWQ7aWYoISgoY1thPj4yXXwwKSE9MHwoY1thKzQ+PjJdfDApIT0wKSl7Zz1lO2g9ZztoPWNbaD4+Ml18MDtnPWcrNHwwO2c9Y1tnPj4yXXwwO0M9ZztpPWY7cmV0dXJuIGh8MH1oPWQ7aD1RUihjW2g+PjJdfDAsY1toKzQ+PjJdfDAsMSwwKXwwO2g9X1IoaHwwLEN8MCxjWyhjW2I+PjJdfDApKzE1Nj4+Ml18MCwwKXwwO2g9UlIoaHwwLEN8MCwxLDApfDA7aD1hUyhofDAsQ3wwLGNbKGNbYj4+Ml18MCkrMTU2Pj4yXXwwLDApfDA7Zz1lO2NbZz4+Ml09aDtjW2crND4+Ml09QztnPWU7aD1nO2g9Y1toPj4yXXwwO2c9Zys0fDA7Zz1jW2c+PjJdfDA7Qz1nO2k9ZjtyZXR1cm4gaHwwfWZ1bmN0aW9uIHFzKGIsZCl7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MDtzPWk7aT1pKzY0fDA7ZT1zKzU2fDA7Zj1zKzUyfDA7Zz1zKzQ4fDA7cT1zKzE2fDA7aj1zKzh8MDtwPXMrNDR8MDtvPXMrNDB8MDtrPXMrMzZ8MDttPXMrMzJ8MDtoPXMrMjh8MDtsPXMrMjR8MDtuPXM7Y1tmPj4yXT1iO2NbZz4+Ml09ZDtjW3A+PjJdPTA7Y1tvPj4yXT0wO2lmKChjW2c+PjJdfDApIT0wPyhjW28+PjJdPWtqKGNbKGNbZz4+Ml18MCkrMjA+PjJdfDApfDAsKGNbbz4+Ml18MCk9PTApOjApe2NbZT4+Ml09NztyPWNbZT4+Ml18MDtpPXM7cmV0dXJuIHJ8MH1pZihjW2c+PjJdfDApYj1jWyhjW2c+PjJdfDApKzIwPj4yXXwwO2Vsc2UgYj1jWyhjW2Y+PjJdfDApKzMyPj4yXXwwO2NbKGNbZj4+Ml18MCkrMjg+PjJdPWI7YVsoY1tmPj4yXXwwKSsxOT4+MF09YVsoY1tmPj4yXXwwKSsxMz4+MF18MDtpZigoY1tnPj4yXXwwKT09MD8oQnIoY1tmPj4yXXwwKXwwKSE9MDowKXtjW2U+PjJdPXJzKGNbZj4+Ml18MCl8MDtyPWNbZT4+Ml18MDtpPXM7cmV0dXJuIHJ8MH10PShjW2Y+PjJdfDApKzgwfDA7Yj1jW3QrND4+Ml18MDtkPXE7Y1tkPj4yXT1jW3Q+PjJdO2NbZCs0Pj4yXT1iO2E6ZG8gaWYoKGNbZz4+Ml18MCkhPTA/KEJyKGNbZj4+Ml18MCl8MCk9PTA6MCl7dD0oY1tnPj4yXXwwKSs4fDA7aWYoKGNbdD4+Ml18MCkhPTB8KGNbdCs0Pj4yXXwwKSE9MCl7ZD0oY1tnPj4yXXwwKSs4fDA7Yj1jW2Q+PjJdfDA7ZD1jW2QrND4+Ml18MH1lbHNle2Q9cTtiPWNbZD4+Ml18MDtkPWNbZCs0Pj4yXXwwfXQ9ajtjW3Q+PjJdPWI7Y1t0KzQ+PjJdPWQ7Yj1jW2c+PjJdfDA7ZD1jW2IrND4+Ml18MDt0PShjW2Y+PjJdfDApKzgwfDA7Y1t0Pj4yXT1jW2I+PjJdO2NbdCs0Pj4yXT1kO3doaWxlKDEpe2lmKGNbcD4+Ml18MClicmVhayBhO2Q9KGNbZj4+Ml18MCkrODB8MDt1PWNbZCs0Pj4yXXwwO3Q9ajtiPWNbdCs0Pj4yXXwwO2lmKCEoKHV8MCk8KGJ8MCl8KCh1fDApPT0oYnwwKT8oY1tkPj4yXXwwKT4+PjA8KGNbdD4+Ml18MCk+Pj4wOjApKSlicmVhayBhO2NbcD4+Ml09X3IoY1tmPj4yXXwwLChjW2Y+PjJdfDApKzgwfDAsY1tvPj4yXXwwLDEsMSl8MH19ZWxzZSByPTE5O3doaWxlKDApO2lmKChyfDApPT0xOSl7dT0oY1tmPj4yXXwwKSs4MHwwO2NbdT4+Ml09MDtjW3UrND4+Ml09MH1iOndoaWxlKDEpe2lmKGNbcD4+Ml18MClicmVhazt0PShjW2Y+PjJdfDApKzgwfDA7aj1jW3QrND4+Ml18MDt1PXE7cj1jW3UrND4+Ml18MDtpZighKChqfDApPChyfDApfCgoanwwKT09KHJ8MCk/KGNbdD4+Ml18MCk+Pj4wPChjW3U+PjJdfDApPj4+MDowKSkpYnJlYWs7Y1ttPj4yXT0wO3U9cTtjW3A+PjJdPVpyKGNbZj4+Ml18MCwwLGNbdT4+Ml18MCxjW3UrND4+Ml18MCxtLGgpfDA7aWYoKGNbbT4+Ml18MCk9PTA/KHQ9KGNbZj4+Ml18MCkrODh8MCx0PVJSKGNbdD4+Ml18MCxjW3QrND4+Ml18MCxjWyhjW2Y+PjJdfDApKzE1Nj4+Ml18MCwwKXwwLHU9KGNbZj4+Ml18MCkrODB8MCwodHwwKT09KGNbdT4+Ml18MCk/KEN8MCk9PShjW3UrND4+Ml18MCk6MCk6MCl7dT1xO3Q9KGNbZj4+Ml18MCkrODB8MDt0PVFSKGNbdT4+Ml18MCxjW3UrND4+Ml18MCxjW3Q+PjJdfDAsY1t0KzQ+PjJdfDApfDA7dT0oY1soY1tmPj4yXXwwKSsxNjA+PjJdfDApKzh8MDt1PV9SKHR8MCxDfDAsdXwwLCgodXwwKTwwKTw8MzE+PjMxfDApfDA7Y1ttPj4yXT11fWNbaz4+Ml09MDt3aGlsZSgxKXtpZihjW3A+PjJdfDApY29udGludWUgYjtpZigoY1trPj4yXXwwKT4+PjA+PShjW20+PjJdfDApPj4+MCljb250aW51ZSBiO3Q9KGNbZj4+Ml18MCkrODB8MDtqPWNbdCs0Pj4yXXwwO3U9cTtyPWNbdSs0Pj4yXXwwO2lmKCEoKGp8MCk8KHJ8MCl8KChqfDApPT0ocnwwKT8oY1t0Pj4yXXwwKT4+PjA8KGNbdT4+Ml18MCk+Pj4wOjApKSljb250aW51ZSBiO2NbcD4+Ml09X3IoY1tmPj4yXXwwLChjW2Y+PjJdfDApKzgwfDAsY1tvPj4yXXwwLDEsMSl8MDtjW2s+PjJdPShjW2s+PjJdfDApKzF9fWM6ZG8gaWYoY1tnPj4yXXwwKXt0PTQrKGNbKGNbZj4+Ml18MCkrMTYwPj4yXXwwKXwwO3Q9YVMoY1soY1tnPj4yXXwwKSsyND4+Ml18MCwwLHR8MCwoKHR8MCk8MCk8PDMxPj4zMXwwKXwwO3U9bjtjW3U+PjJdPXQ7Y1t1KzQ+PjJdPUM7aWYoQnIoY1tmPj4yXXwwKXwwKWNbcD4+Ml09c3MoY1soY1tmPj4yXXwwKSsyMTY+PjJdfDAsKGNbZz4+Ml18MCkrMjh8MCl8MDtjW2w+PjJdPWNbKGNbZz4+Ml18MCkrMjQ+PjJdO3doaWxlKDEpe2lmKGNbcD4+Ml18MClicmVhayBjO2lmKChjW2w+PjJdfDApPj4+MD49KGNbKGNbZj4+Ml18MCkrNTY+PjJdfDApPj4+MClicmVhayBjO2NbcD4+Ml09X3IoY1tmPj4yXXwwLG4sY1tvPj4yXXwwLDAsMSl8MDtjW2w+PjJdPShjW2w+PjJdfDApKzF9fXdoaWxlKDApO3BqKGNbbz4+Ml18MCk7aWYoIShjW3A+PjJdfDApKXtyPXE7dD1jW3IrND4+Ml18MDt1PShjW2Y+PjJdfDApKzgwfDA7Y1t1Pj4yXT1jW3I+PjJdO2NbdSs0Pj4yXT10fWNbZT4+Ml09Y1twPj4yXTt1PWNbZT4+Ml18MDtpPXM7cmV0dXJuIHV8MH1mdW5jdGlvbiBycyhhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wLGc9MDtnPWk7aT1pKzE2fDA7Yj1nKzEyfDA7Zj1nKzh8MDtkPWcrNHwwO2U9ZztjW2I+PjJdPWE7Y1soY1tiPj4yXXwwKSsyOD4+Ml09Y1soY1tiPj4yXXwwKSszMj4+Ml07Y1tmPj4yXT16cyhjWyhjW2I+PjJdfDApKzIxNj4+Ml18MCwxODcsY1tiPj4yXXwwKXwwO2NbZD4+Ml09QXMoY1soY1tiPj4yXXwwKSsyMTI+PjJdfDApfDA7d2hpbGUoMSl7aWYoISgoY1tkPj4yXXwwKSE9MD8oY1tmPj4yXXwwKT09MDowKSlicmVhaztjW2U+PjJdPWNbKGNbZD4+Ml18MCkrMTI+PjJdO2NbZj4+Ml09eXMoY1tiPj4yXXwwLGNbKGNbZD4+Ml18MCkrMjA+PjJdfDApfDA7Y1tkPj4yXT1jW2U+PjJdfWk9ZztyZXR1cm4gY1tmPj4yXXwwfWZ1bmN0aW9uIHNzKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MDtnPWk7aT1pKzE2fDA7ZD1nKzh8MDtlPWcrNHwwO2Y9ZztjW2Q+PjJdPWE7Y1tlPj4yXT1iO2NbZj4+Ml09MDtpZigoY1soY1tlPj4yXXwwKSsxMj4+Ml18MCkhPShjWyhjW2Q+PjJdfDApKzExMj4+Ml18MCkpe2NbY1tlPj4yXT4+Ml09MDtjWyhjW2U+PjJdfDApKzEyPj4yXT1jWyhjW2Q+PjJdfDApKzExMj4+Ml19aWYoKGNbY1tlPj4yXT4+Ml18MCk+Pj4wPj0oY1soY1tkPj4yXXwwKSs1MisxNj4+Ml18MCk+Pj4wKXtmPWNbZj4+Ml18MDtpPWc7cmV0dXJuIGZ8MH1jWyhjW2Q+PjJdfDApKzUyKzE2Pj4yXT1jW2NbZT4+Ml0+PjJdO2NbKGNbZD4+Ml18MCkrNTIrMjQ+PjJdPWNbKGNbZT4+Ml18MCkrND4+Ml07Y1soY1tkPj4yXXwwKSs1MisyNCs0Pj4yXT1jWyhjW2U+PjJdfDApKzg+PjJdO3RzKGNbZD4+Ml18MCk7Zj1jW2Y+PjJdfDA7aT1nO3JldHVybiBmfDB9ZnVuY3Rpb24gdHMoYSl7YT1hfDA7dmFyIGQ9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTA7bT1pO2k9aSszMnwwO2Q9bSsyNHwwO2Y9bSsyMHwwO2c9bSsxNnwwO2s9bSsxMnwwO2o9bSs4fDA7bD1tKzR8MDtoPW07Y1tkPj4yXT1hO2NbZj4+Ml09MDtjW2c+PjJdPTA7Y1trPj4yXT0wO2Nbaj4+Ml09MDtpZighKGNbKGNbZD4+Ml18MCkrNTIrMTY+PjJdfDApKXtpPW07cmV0dXJufWE9Y1tkPj4yXXwwO3ZzKGEsdXMoY1soY1tkPj4yXXwwKSs1MisxNj4+Ml18MCl8MCxmLGcsayl8MDtjW2o+PjJdPShjWyhjW2Q+PjJdfDApKzUyKzE2Pj4yXXwwKS0oY1trPj4yXXwwKTtjW2g+PjJdPTA7d2hpbGUoMSl7aWYoKGNbaD4+Ml18MCk+PTgxOTIpYnJlYWs7aWYoKGVbKGNbZj4+Ml18MCkrKGNbaD4+Ml08PDEpPj4xXXwwfDApPihjW2o+PjJdfDApKWJbKGNbZj4+Ml18MCkrKGNbaD4+Ml08PDEpPj4xXT0wO2NbaD4+Ml09KGNbaD4+Ml18MCkrMX1jW2w+PjJdPShjW2Y+PjJdfDApLSgoY1tnPj4yXXwwKSsoKGNbaj4+Ml18MCkrMTw8MikpO1ZSKChjW2c+PjJdfDApKygoY1tqPj4yXXwwKSsxPDwyKXwwLDAsY1tsPj4yXXwwKXwwO2k9bTtyZXR1cm59ZnVuY3Rpb24gdXMoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wO2Q9aTtpPWkrMTZ8MDtlPWQrNHwwO2I9ZDtjW2U+PjJdPWE7Y1tiPj4yXT0oKChjW2U+PjJdfDApKzQwOTYtNDA2Mi0xfDApPj4+MCkvNDA5NnwwO2k9ZDtyZXR1cm4gY1tiPj4yXXwwfWZ1bmN0aW9uIHZzKGEsYixkLGUsZil7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MDtwPWk7aT1pKzQ4fDA7cT1wKzMyfDA7Zz1wKzI4fDA7aD1wKzI0fDA7aj1wKzIwfDA7az1wKzE2fDA7bz1wKzEyfDA7bT1wKzh8MDtuPXArNHwwO2w9cDtjW3E+PjJdPWE7Y1tnPj4yXT1iO2NbaD4+Ml09ZDtjW2o+PjJdPWU7Y1trPj4yXT1mO2Nbbz4+Ml09d3MoY1txPj4yXXwwLGNbZz4+Ml18MCxtKXwwO2lmKGNbbz4+Ml18MCl7cT1jW28+PjJdfDA7aT1wO3JldHVybiBxfDB9Y1tsPj4yXT0oY1ttPj4yXXwwKSsxNjM4NDtpZighKGNbZz4+Ml18MCkpe2NbbT4+Ml09KGNbbT4+Ml18MCkrMTM2O2Nbbj4+Ml09MH1lbHNlIGNbbj4+Ml09NDA2MisoKGNbZz4+Ml18MCktMTw8MTIpO2NbY1tqPj4yXT4+Ml09KGNbbT4+Ml18MCkrLTQ7Y1tjW2g+PjJdPj4yXT1jW2w+PjJdO2NbY1trPj4yXT4+Ml09Y1tuPj4yXTtxPWNbbz4+Ml18MDtpPXA7cmV0dXJuIHF8MH1mdW5jdGlvbiB3cyhiLGUsZil7Yj1ifDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTA7bz1pO2k9aSszMnwwO2c9bysyNHwwO2g9bysyMHwwO2o9bysxNnwwO2s9bysxMnwwO249bys4fDA7bT1vKzR8MDtsPW87Y1toPj4yXT1iO2Nbaj4+Ml09ZTtjW2s+PjJdPWY7Y1tuPj4yXT0wO2RvIGlmKChjWyhjW2g+PjJdfDApKzI0Pj4yXXwwKTw9KGNbaj4+Ml18MCkpe2NbbT4+Ml09KGNbaj4+Ml18MCkrMTw8MjtmPWNbbT4+Ml18MDtjW2w+PjJdPU1kKGNbKGNbaD4+Ml18MCkrMzI+PjJdfDAsZiwoKGZ8MCk8MCk8PDMxPj4zMSl8MDtpZihjW2w+PjJdfDApe1ZSKChjW2w+PjJdfDApKyhjWyhjW2g+PjJdfDApKzI0Pj4yXTw8Mil8MCwwLChjW2o+PjJdfDApKzEtKGNbKGNbaD4+Ml18MCkrMjQ+PjJdfDApPDwyfDApfDA7Y1soY1toPj4yXXwwKSszMj4+Ml09Y1tsPj4yXTtjWyhjW2g+PjJdfDApKzI0Pj4yXT0oY1tqPj4yXXwwKSsxO2JyZWFrfWNbY1trPj4yXT4+Ml09MDtjW2c+PjJdPTc7bj1jW2c+PjJdfDA7aT1vO3JldHVybiBufDB9d2hpbGUoMCk7ZG8gaWYoIShjWyhjWyhjW2g+PjJdfDApKzMyPj4yXXwwKSsoY1tqPj4yXTw8Mik+PjJdfDApKWlmKChkWyhjW2g+PjJdfDApKzQzPj4wXXwwfDApPT0yKXtmPWtnKDMyNzY4LDApfDA7Y1soY1soY1toPj4yXXwwKSszMj4+Ml18MCkrKGNbaj4+Ml08PDIpPj4yXT1mO2lmKGNbKGNbKGNbaD4+Ml18MCkrMzI+PjJdfDApKyhjW2o+PjJdPDwyKT4+Ml18MClicmVhaztjW24+PjJdPTc7YnJlYWt9ZWxzZXtjW24+PjJdPXhzKGNbKGNbaD4+Ml18MCkrND4+Ml18MCxjW2o+PjJdfDAsMzI3NjgsZFsoY1toPj4yXXwwKSs0ND4+MF18MCwoY1soY1toPj4yXXwwKSszMj4+Ml18MCkrKGNbaj4+Ml08PDIpfDApfDA7aWYoKGNbbj4+Ml18MCkhPTgpYnJlYWs7Zj0oY1toPj4yXXwwKSs0NnwwO2FbZj4+MF09ZFtmPj4wXXwwfDI7Y1tuPj4yXT0wO2JyZWFrfXdoaWxlKDApO2NbY1trPj4yXT4+Ml09Y1soY1soY1toPj4yXXwwKSszMj4+Ml18MCkrKGNbaj4+Ml08PDIpPj4yXTtjW2c+PjJdPWNbbj4+Ml07bj1jW2c+PjJdfDA7aT1vO3JldHVybiBufDB9ZnVuY3Rpb24geHMoYSxiLGQsZSxmKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTA7Zz1pO2k9aSszMnwwO209ZysxNnwwO2w9ZysxMnwwO2s9Zys4fDA7aj1nKzR8MDtoPWc7Y1ttPj4yXT1hO2NbbD4+Ml09YjtjW2s+PjJdPWQ7Y1tqPj4yXT1lO2NbaD4+Ml09ZjtmPVpiW2NbKGNbY1ttPj4yXT4+Ml18MCkrNTI+PjJdJjI1NV0oY1ttPj4yXXwwLGNbbD4+Ml18MCxjW2s+PjJdfDAsY1tqPj4yXXwwLGNbaD4+Ml18MCl8MDtpPWc7cmV0dXJuIGZ8MH1mdW5jdGlvbiB5cyhhLGIpe2E9YXwwO2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTA7aD1pO2k9aSszMnwwO2s9aCsyMHwwO2o9aCsxNnwwO2c9aCsxMnwwO2U9aCs4fDA7Zj1oKzR8MDtkPWg7Y1trPj4yXT1hO2Nbaj4+Ml09YjtjW2c+PjJdPTA7Y1tlPj4yXT1jW2s+PjJdO2NbZj4+Ml09aHMoY1tlPj4yXXwwLGNbaj4+Ml18MCl8MDtkbyBpZihjW2Y+PjJdfDApe2lmKChGcyhjW2Y+PjJdfDApfDApPT0xKXtHcyhjW2Y+PjJdfDApO2JyZWFrfWNbZD4+Ml09MDtjW2c+PjJdPUhzKGNbKGNbZT4+Ml18MCkrMjE2Pj4yXXwwLGNbKGNbZj4+Ml18MCkrMjA+PjJdfDAsZCl8MDtpZighKGNbZz4+Ml18MCkpY1tnPj4yXT1JcyhjW2Y+PjJdfDAsY1tkPj4yXXwwKXwwO2lmKCEoY1tnPj4yXXwwKSlRYltjWyhjW2U+PjJdfDApKzIwND4+Ml0mMjU1XShjW2Y+PjJdfDApO0pzKGNbZj4+Ml18MCl9d2hpbGUoMCk7ZGooY1soY1tlPj4yXXwwKSs5Nj4+Ml18MCk7aT1oO3JldHVybiBjW2c+PjJdfDB9ZnVuY3Rpb24genMoYixkLGUpe2I9YnwwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTA7bT1pO2k9aSszMnwwO2Y9bSsyMHwwO2c9bSsxNnwwO2g9bSsxMnwwO2w9bSs4fDA7az1tKzR8MDtqPW07Y1tmPj4yXT1iO2NbZz4+Ml09ZDtjW2g+PjJdPWU7Y1tsPj4yXT0wO2lmKCEoYVsoY1tmPj4yXXwwKSs0ND4+MF18MCkpe2w9Y1tsPj4yXXwwO2k9bTtyZXR1cm4gbHwwfWNbaz4+Ml09Y1soY1tmPj4yXXwwKSs1MisxNj4+Ml07ZT0oY1tmPj4yXXwwKSs1MnwwO2I9RHMoY1tmPj4yXXwwKXwwO2Q9ZSs0OHwwO2Rve2FbZT4+MF09YVtiPj4wXXwwO2U9ZSsxfDA7Yj1iKzF8MH13aGlsZSgoZXwwKTwoZHwwKSk7Y1tqPj4yXT0oY1soY1tmPj4yXXwwKSs1MisxNj4+Ml18MCkrMTt3aGlsZSgxKXtpZihjW2w+PjJdfDApYnJlYWs7aWYoKGNbaj4+Ml18MCk+Pj4wPihjW2s+PjJdfDApPj4+MClicmVhaztlPWNbZz4+Ml18MDtiPWNbaD4+Ml18MDtkPUVzKGNbZj4+Ml18MCxjW2o+PjJdfDApfDA7Y1tsPj4yXT1ZYltlJjI1NV0oYixkKXwwO2Nbaj4+Ml09KGNbaj4+Ml18MCkrMX1pZigoY1trPj4yXXwwKT09KGNbKGNbZj4+Ml18MCkrNTIrMTY+PjJdfDApKXtsPWNbbD4+Ml18MDtpPW07cmV0dXJuIGx8MH10cyhjW2Y+PjJdfDApO2w9Y1tsPj4yXXwwO2k9bTtyZXR1cm4gbHwwfWZ1bmN0aW9uIEFzKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MDtlPWk7aT1pKzE2fDA7Yj1lKzR8MDtkPWU7Y1tiPj4yXT1hO2NbZD4+Ml09Y1tjW2I+PjJdPj4yXTt3aGlsZSgxKXtpZighKGNbZD4+Ml18MCkpYnJlYWs7Y1soY1tkPj4yXXwwKSsxMj4+Ml09Y1soY1tkPj4yXXwwKSszMj4+Ml07Y1tkPj4yXT1jWyhjW2Q+PjJdfDApKzMyPj4yXX1hPUJzKGNbY1tiPj4yXT4+Ml18MCl8MDtpPWU7cmV0dXJuIGF8MH1mdW5jdGlvbiBCcyhhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wO2o9aTtpPWkrMTQ0fDA7ZD1qKzEzNnwwO2Y9ais4fDA7aD1qKzR8MDtnPWo7Y1tkPj4yXT1hO2E9ZjtiPWErMTI4fDA7ZG97Y1thPj4yXT0wO2E9YSs0fDB9d2hpbGUoKGF8MCk8KGJ8MCkpO3doaWxlKDEpe2lmKCEoY1tkPj4yXXwwKSlicmVhaztjW2g+PjJdPWNbZD4+Ml07Y1tkPj4yXT1jWyhjW2g+PjJdfDApKzEyPj4yXTtjWyhjW2g+PjJdfDApKzEyPj4yXT0wO2NbZz4+Ml09MDt3aGlsZSgxKXtpZigoY1tnPj4yXXwwKT49MzEpYnJlYWs7aWYoIShjW2YrKGNbZz4+Ml08PDIpPj4yXXwwKSl7ZT02O2JyZWFrfWNbaD4+Ml09Q3MoY1tmKyhjW2c+PjJdPDwyKT4+Ml18MCxjW2g+PjJdfDApfDA7Y1tmKyhjW2c+PjJdPDwyKT4+Ml09MDtjW2c+PjJdPShjW2c+PjJdfDApKzF9aWYoKGV8MCk9PTYpe2U9MDtjW2YrKGNbZz4+Ml08PDIpPj4yXT1jW2g+PjJdfWlmKChjW2c+PjJdfDApIT0zMSljb250aW51ZTtiPUNzKGNbZisoY1tnPj4yXTw8Mik+PjJdfDAsY1toPj4yXXwwKXwwO2NbZisoY1tnPj4yXTw8Mik+PjJdPWJ9Y1toPj4yXT1jW2Y+PjJdO2NbZz4+Ml09MTt3aGlsZSgxKXtpZigoY1tnPj4yXXwwKT49MzIpYnJlYWs7aWYoY1tmKyhjW2c+PjJdPDwyKT4+Ml18MCl7aWYoY1toPj4yXXwwKWE9Q3MoY1toPj4yXXwwLGNbZisoY1tnPj4yXTw8Mik+PjJdfDApfDA7ZWxzZSBhPWNbZisoY1tnPj4yXTw8Mik+PjJdfDA7Y1toPj4yXT1hfWNbZz4+Ml09KGNbZz4+Ml18MCkrMX1pPWo7cmV0dXJuIGNbaD4+Ml18MH1mdW5jdGlvbiBDcyhhLGIpe2E9YXwwO2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wO2g9aTtpPWkrNjR8MDtkPWgrNTJ8MDtlPWgrNDh8MDtnPWgrOHwwO2Y9aDtjW2Q+PjJdPWE7Y1tlPj4yXT1iO2NbZj4+Ml09Zzt3aGlsZSgxKWlmKChjWyhjW2Q+PjJdfDApKzIwPj4yXXwwKT4+PjA8KGNbKGNbZT4+Ml18MCkrMjA+PjJdfDApPj4+MCl7Y1soY1tmPj4yXXwwKSsxMj4+Ml09Y1tkPj4yXTtjW2Y+PjJdPWNbZD4+Ml07Y1tkPj4yXT1jWyhjW2Q+PjJdfDApKzEyPj4yXTtpZighKGNbZD4+Ml18MCkpe2E9NDticmVha31lbHNlIGNvbnRpbnVlfWVsc2V7Y1soY1tmPj4yXXwwKSsxMj4+Ml09Y1tlPj4yXTtjW2Y+PjJdPWNbZT4+Ml07Y1tlPj4yXT1jWyhjW2U+PjJdfDApKzEyPj4yXTtpZighKGNbZT4+Ml18MCkpe2E9NjticmVha31lbHNlIGNvbnRpbnVlfWlmKChhfDApPT00KXtjWyhjW2Y+PjJdfDApKzEyPj4yXT1jW2U+PjJdO2c9ZysxMnwwO2c9Y1tnPj4yXXwwO2k9aDtyZXR1cm4gZ3wwfWVsc2UgaWYoKGF8MCk9PTYpe2NbKGNbZj4+Ml18MCkrMTI+PjJdPWNbZD4+Ml07Zz1nKzEyfDA7Zz1jW2c+PjJdfDA7aT1oO3JldHVybiBnfDB9cmV0dXJuIDB9ZnVuY3Rpb24gRHMoYSl7YT1hfDA7dmFyIGI9MCxkPTA7ZD1pO2k9aSsxNnwwO2I9ZDtjW2I+PjJdPWE7aT1kO3JldHVybiBjW2NbKGNbYj4+Ml18MCkrMzI+PjJdPj4yXXwwfWZ1bmN0aW9uIEVzKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTA7Zz1pO2k9aSsxNnwwO2Q9ZysxMnwwO2U9Zys4fDA7aD1nKzR8MDtmPWc7Y1tlPj4yXT1hO2NbaD4+Ml09YjtjW2Y+PjJdPXVzKGNbaD4+Ml18MCl8MDtiPWNbaD4+Ml18MDtpZighKGNbZj4+Ml18MCkpe2NbZD4+Ml09Y1soY1tjWyhjW2U+PjJdfDApKzMyPj4yXT4+Ml18MCkrKDM0K2ItMTw8Mik+PjJdO2g9Y1tkPj4yXXwwO2k9ZztyZXR1cm4gaHwwfWVsc2V7Y1tkPj4yXT1jWyhjWyhjWyhjW2U+PjJdfDApKzMyPj4yXXwwKSsoY1tmPj4yXTw8Mik+PjJdfDApKygoKChiLTEtNDA2MnwwKT4+PjApJTQwOTZ8MCk8PDIpPj4yXTtoPWNbZD4+Ml18MDtpPWc7cmV0dXJuIGh8MH1yZXR1cm4gMH1mdW5jdGlvbiBGcyhhKXthPWF8MDt2YXIgZD0wLGU9MDtlPWk7aT1pKzE2fDA7ZD1lO2NbZD4+Ml09YTtpPWU7cmV0dXJuIGJbKGNbZD4+Ml18MCkrMjY+PjFdfDB9ZnVuY3Rpb24gR3MoYSl7YT1hfDA7dmFyIGI9MCxkPTA7ZD1pO2k9aSsxNnwwO2I9ZDtjW2I+PjJdPWE7aWYoKGVbKGNbYj4+Ml18MCkrMjQ+PjFdfDApJjIpaGooY1tiPj4yXXwwLDEpO2E9KGNbKGNbYj4+Ml18MCkrMjg+PjJdfDApKzEyfDA7Y1thPj4yXT0oY1thPj4yXXwwKSstMTtVYltjWzE0OD4+Ml0mMjU1XShjWyhjWyhjW2I+PjJdfDApKzI4Pj4yXXwwKSs0ND4+Ml18MCxjW2NbYj4+Ml0+PjJdfDAsMSk7aT1kO3JldHVybn1mdW5jdGlvbiBIcyhhLGQsZil7YT1hfDA7ZD1kfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MDt3PWk7aT1pKzY0fDA7cz13KzU2fDA7Zz13KzUyfDA7aD13KzQ4fDA7dD13KzQ0fDA7dT13KzQwfDA7bz13KzM2fDA7bT13KzMyfDA7cD13KzI4fDA7aj13KzI0fDA7az13KzIwfDA7cT13KzE2fDA7bj13KzEyfDA7cj13Kzh8MDt2PXcrNHwwO2w9dztjW2c+PjJdPWE7Y1toPj4yXT1kO2NbdD4+Ml09ZjtjW3U+PjJdPTA7Y1tvPj4yXT1jWyhjW2c+PjJdfDApKzUyKzE2Pj4yXTtpZigoY1tvPj4yXXwwKSE9MD8oYlsoY1tnPj4yXXwwKSs0MD4+MV18MCkhPTA6MCl7Y1twPj4yXT11cyhjWyhjW2c+PjJdfDApKzEwMD4+Ml18MCl8MDtjW20+PjJdPXVzKGNbbz4+Ml18MCl8MDthOndoaWxlKDEpe2lmKCEoKGNbbT4+Ml18MCk+PShjW3A+PjJdfDApPyhjW3U+PjJdfDApPT0wOjApKXtnPTE4O2JyZWFrfWNbdj4+Ml09dnMoY1tnPj4yXXwwLGNbbT4+Ml18MCxqLGsscSl8MDtpZihjW3Y+PjJdfDApe2c9NzticmVha31jW3I+PjJdPTgxOTI7Y1tuPj4yXT1PcyhjW2g+PjJdfDApfDA7d2hpbGUoMSl7aWYoIShiWyhjW2o+PjJdfDApKyhjW24+PjJdPDwxKT4+MV18MCkpYnJlYWs7Y1tsPj4yXT0oZVsoY1tqPj4yXXwwKSsoY1tuPj4yXTw8MSk+PjFdfDApKyhjW3E+PjJdfDApO2lmKCgoY1tsPj4yXXwwKT4+PjA8PShjW28+PjJdfDApPj4+MD8oY1tsPj4yXXwwKT4+PjA+PShjWyhjW2c+PjJdfDApKzEwMD4+Ml18MCk+Pj4wOjApPyhjWyhjW2s+PjJdfDApKyhlWyhjW2o+PjJdfDApKyhjW24+PjJdPDwxKT4+MV08PDIpPj4yXXwwKT09KGNbaD4+Ml18MCk6MCljW3U+PjJdPWNbbD4+Ml07Zj1jW3I+PjJdfDA7Y1tyPj4yXT1mKy0xO2lmKCFmKXtnPTE1O2JyZWFrIGF9Y1tuPj4yXT1QcyhjW24+PjJdfDApfDB9Y1ttPj4yXT0oY1ttPj4yXXwwKSstMX1pZigoZ3wwKT09Nyl7Y1tzPj4yXT1jW3Y+PjJdO3Y9Y1tzPj4yXXwwO2k9dztyZXR1cm4gdnwwfWVsc2UgaWYoKGd8MCk9PTE1KXtjW3M+PjJdPVFqKDU2MzQ0KXwwO3Y9Y1tzPj4yXXwwO2k9dztyZXR1cm4gdnwwfWVsc2UgaWYoKGd8MCk9PTE4KXtjW2NbdD4+Ml0+PjJdPWNbdT4+Ml07Y1tzPj4yXT0wO3Y9Y1tzPj4yXXwwO2k9dztyZXR1cm4gdnwwfX1jW2NbdD4+Ml0+PjJdPTA7Y1tzPj4yXT0wO3Y9Y1tzPj4yXXwwO2k9dztyZXR1cm4gdnwwfWZ1bmN0aW9uIElzKGIsZCl7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wO249aTtpPWkrNDh8MDtlPW4rMzJ8MDtmPW4rMjh8MDtoPW4rMjR8MDtqPW4rMjB8MDttPW4rMTZ8MDtrPW4rMTJ8MDtnPW47bD1uKzh8MDtjW2U+PjJdPWI7Y1tmPj4yXT1kO2NbaD4+Ml09Y1soY1tlPj4yXXwwKSsxNj4+Ml07Y1tqPj4yXT1jWyhjW2U+PjJdfDApKzIwPj4yXTtjW20+PjJdPTA7Y1trPj4yXT1jWyhjW2g+PjJdfDApKzE2MD4+Ml07aWYoY1tmPj4yXXwwKWNbbT4+Ml09TnMoY1soY1toPj4yXXwwKSsyMTY+PjJdfDAsY1tmPj4yXXwwLGNbaz4+Ml18MCxjWyhjW2U+PjJdfDApKzQ+PjJdfDApfDA7ZWxzZXtkPWNbKGNbaD4+Ml18MCkrMTYwPj4yXXwwO2Q9YVMoKGNbaj4+Ml18MCktMXwwLDAsZHwwLCgoZHwwKTwwKTw8MzE+PjMxfDApfDA7Yj1nO2NbYj4+Ml09ZDtjW2IrND4+Ml09QztiPWc7az1lcyhjWyhjW2g+PjJdfDApKzY0Pj4yXXwwLGNbKGNbZT4+Ml18MCkrND4+Ml18MCxjW2s+PjJdfDAsY1tiPj4yXXwwLGNbYis0Pj4yXXwwKXwwO2NbbT4+Ml09aztjW20+PjJdPShjW20+PjJdfDApPT01MjI/MDprfWlmKChjW2o+PjJdfDApIT0xKXttPWNbbT4+Ml18MDtpPW47cmV0dXJuIG18MH1pZihjW20+PjJdfDApe2Q9KGNbaD4+Ml18MCkrMTEyfDA7Zj1kKzE2fDA7ZG97YVtkPj4wXT0yNTU7ZD1kKzF8MH13aGlsZSgoZHwwKTwoZnwwKSk7bT1jW20+PjJdfDA7aT1uO3JldHVybiBtfDB9ZWxzZXtjW2w+PjJdPShjWyhjW2U+PjJdfDApKzQ+PjJdfDApKzI0O2Q9KGNbaD4+Ml18MCkrMTEyfDA7ZT1jW2w+PjJdfDA7Zj1kKzE2fDA7ZG97YVtkPj4wXT1hW2U+PjBdfDA7ZD1kKzF8MDtlPWUrMXwwfXdoaWxlKChkfDApPChmfDApKTttPWNbbT4+Ml18MDtpPW47cmV0dXJuIG18MH1yZXR1cm4gMH1mdW5jdGlvbiBKcyhhKXthPWF8MDt2YXIgYj0wLGQ9MCxmPTA7ZD1pO2k9aSsxNnwwO2Y9ZCs0fDA7Yj1kO2NbZj4+Ml09YTtjW2I+PjJdPWNbKGNbZj4+Ml18MCkrMTY+PjJdO2E9Y1tmPj4yXXwwO2lmKChlWyhjW2Y+PjJdfDApKzI0Pj4xXXwwKSYzMil7S3MoYSk7Zj1jW2I+PjJdfDA7THMoZik7aT1kO3JldHVybn1lbHNle2tzKGEpO2Y9Y1tiPj4yXXwwO0xzKGYpO2k9ZDtyZXR1cm59fWZ1bmN0aW9uIEtzKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTA7Yj1pO2k9aSsxNnwwO2Q9Yis0fDA7Zj1iO2NbZD4+Ml09YTtjW2Y+PjJdPWNbKGNbZD4+Ml18MCkrMTY+PjJdO2U9KGNbZj4+Ml18MCkrMTI4fDA7Y1tlPj4yXT0oY1tlPj4yXXwwKSstMTtjWyhjW2Q+PjJdfDApKzEyPj4yXT1jWyhjW2Y+PjJdfDApKzE0ND4+Ml07Y1soY1tmPj4yXXwwKSsxNDQ+PjJdPWNbZD4+Ml07ZT1jWyhjW2Y+PjJdfDApKzY0Pj4yXXwwO2E9Y1soY1tmPj4yXXwwKSsxNjA+PjJdfDA7YT1hUygoY1soY1tkPj4yXXwwKSsyMD4+Ml18MCktMXwwLDAsYXwwLCgoYXwwKTwwKTw8MzE+PjMxfDApfDA7TXMoZSxhLEMsY1soY1tkPj4yXXwwKSs0Pj4yXXwwKXwwO2k9YjtyZXR1cm59ZnVuY3Rpb24gTHMoYSl7YT1hfDA7dmFyIGI9MCxkPTA7ZD1pO2k9aSsxNnwwO2I9ZDtjW2I+PjJdPWE7aWYoY1soY1tiPj4yXXwwKSsxMjg+PjJdfDApe2k9ZDtyZXR1cm59aWYoV2koY1soY1tiPj4yXXwwKSsyMTI+PjJdfDApfDApe2k9ZDtyZXR1cm59bnIoY1tiPj4yXXwwKTtpPWQ7cmV0dXJufWZ1bmN0aW9uIE1zKGEsYixkLGUpe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTA7Zj1pO2k9aSsxNnwwO2NbZisxMj4+Ml09YTthPWY7Y1thPj4yXT1iO2NbYSs0Pj4yXT1kO2NbZis4Pj4yXT1lO2k9ZjtyZXR1cm4gMH1mdW5jdGlvbiBOcyhhLGIsZCxmKXthPWF8MDtiPWJ8MDtkPWR8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wO2c9aTtpPWkrMzJ8MDtsPWcrMjR8MDtuPWcrMjB8MDtoPWcrMTZ8MDtrPWcrMTJ8MDtqPWcrOHwwO209ZztjW2w+PjJdPWE7Y1tuPj4yXT1iO2NbaD4+Ml09ZDtjW2s+PjJdPWY7Y1tqPj4yXT1lWyhjW2w+PjJdfDApKzUyKzE0Pj4xXTtjW2o+PjJdPShjW2o+PjJdJjY1MDI0KSsoKGNbaj4+Ml0mMSk8PDE2KTtmPShjW2o+PjJdfDApKzI0fDA7Zj1hUygoY1tuPj4yXXwwKS0xfDAsMCxmfDAsKChmfDApPDApPDwzMT4+MzF8MCl8MDtmPVJSKDMyLDAsZnwwLEN8MCl8MDtmPVJSKGZ8MCxDfDAsMjQsMCl8MDthPW07Y1thPj4yXT1mO2NbYSs0Pj4yXT1DO2E9bTthPWVzKGNbKGNbbD4+Ml18MCkrOD4+Ml18MCxjW2s+PjJdfDAsKGNbaD4+Ml18MCk+KGNbaj4+Ml18MCk/Y1tqPj4yXXwwOmNbaD4+Ml18MCxjW2E+PjJdfDAsY1thKzQ+PjJdfDApfDA7aT1nO3JldHVybiBhfDB9ZnVuY3Rpb24gT3MoYSl7YT1hfDA7dmFyIGI9MCxkPTA7ZD1pO2k9aSsxNnwwO2I9ZDtjW2I+PjJdPWE7aT1kO3JldHVybiAoY1tiPj4yXXwwKSozODMmODE5MXwwfWZ1bmN0aW9uIFBzKGEpe2E9YXwwO3ZhciBiPTAsZD0wO2Q9aTtpPWkrMTZ8MDtiPWQ7Y1tiPj4yXT1hO2k9ZDtyZXR1cm4gKGNbYj4+Ml18MCkrMSY4MTkxfDB9ZnVuY3Rpb24gUXMoYSl7YT1hfDA7dmFyIGQ9MCxlPTA7ZT1pO2k9aSsxNnwwO2Q9ZTtjW2Q+PjJdPWE7Q3IoY1tkPj4yXXwwKXwwO2lmKChiWyhjW2Q+PjJdfDApKzQwPj4xXXwwKTwwKXtpPWU7cmV0dXJufUlyKGNbZD4+Ml18MCwzKyhiWyhjW2Q+PjJdfDApKzQwPj4xXXwwKXwwKTtiWyhjW2Q+PjJdfDApKzQwPj4xXT0tMTtpPWU7cmV0dXJufWZ1bmN0aW9uIFJzKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wO2Q9aTtpPWkrMTZ8MDtmPWQrNHwwO2U9ZDtjW2Y+PjJdPWE7Y1tlPj4yXT1iO2I9WWJbY1soY1tjW2Y+PjJdPj4yXXwwKSsyOD4+Ml0mMjU1XShjW2Y+PjJdfDAsY1tlPj4yXXwwKXwwO2k9ZDtyZXR1cm4gYnwwfWZ1bmN0aW9uIFNzKGIsZCxlLGYsZyxoLGosayxsKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDtrPWt8MDtsPWx8MDt2YXIgbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTA7QT1pO2k9aSs2NHwwO3o9QSs1MnwwO3Y9QSs0OHwwO3c9QSs0NHwwO209QSs0MHwwO249QSszNnwwO289QSszMnwwO3A9QSsyOHwwO3E9QSsyNHwwO3I9QSsyMHwwO3M9QSsxNnwwO3k9QSsxMnwwO3Q9QSs4fDA7eD1BKzR8MDt1PUE7Y1t2Pj4yXT1iO2Nbdz4+Ml09ZDtjW20+PjJdPWU7Y1tuPj4yXT1mO2Nbbz4+Ml09ZztjW3A+PjJdPWg7Y1txPj4yXT1qO2Nbcj4+Ml09aztjW3M+PjJdPWw7Y1t0Pj4yXT0wO2NbeD4+Ml09Y1t3Pj4yXTtjW3U+PjJdPWNbbT4+Ml07aWYoYVsoY1t2Pj4yXXwwKSs0Nj4+MF18MCl7Y1t6Pj4yXT04O3o9Y1t6Pj4yXXwwO2k9QTtyZXR1cm4genwwfWNbeT4+Ml09WHMoY1t2Pj4yXXwwLDEsMSl8MDtpZihjW3k+PjJdfDApe2Nbej4+Ml09Y1t5Pj4yXTt6PWNbej4+Ml18MDtpPUE7cmV0dXJuIHp8MH1hWyhjW3Y+PjJdfDApKzQ1Pj4wXT0xO2RvIGlmKGNbdz4+Ml18MCl7Y1t5Pj4yXT1ZcyhjW3Y+PjJdfDAsY1ttPj4yXXwwLGNbbj4+Ml18MCwwLDEpfDA7aWYoIShjW3k+PjJdfDApKXthWyhjW3Y+PjJdfDApKzQ0Pj4wXT0xO2JyZWFrfWlmKChjW3k+PjJdfDApPT01KXtjW3g+PjJdPTA7Y1t1Pj4yXT0wO2NbeT4+Ml09MH19d2hpbGUoMCk7aWYoKChjW3k+PjJdfDApPT0wPyhjW3k+PjJdPVpzKGNbdj4+Ml18MCx0KXwwLChjW3Q+PjJdfDApIT0wKTowKT8oY1tjW2NbKGNbdj4+Ml18MCkrND4+Ml0+PjJdPj4yXXwwKT49MzowKU1zKGNbKGNbdj4+Ml18MCkrND4+Ml18MCwwLDAsMCl8MDtpZighKGNbeT4+Ml18MCkpe2lmKChjWyhjW3Y+PjJdfDApKzUyKzE2Pj4yXXwwKSE9MD8oaj1fcyhjW3Y+PjJdfDApfDAsKGp8MCkhPShjW3A+PjJdfDApKTowKWNbeT4+Ml09UWooNTcwNDkpfDA7ZWxzZSBjW3k+PjJdPSRzKGNbdj4+Ml18MCxjW3g+PjJdfDAsY1t1Pj4yXXwwLGNbbj4+Ml18MCxjW28+PjJdfDAsY1txPj4yXXwwKXwwO2lmKChjW3k+PjJdfDApPT0wfChjW3k+PjJdfDApPT01KXtpZihjW3I+PjJdfDApY1tjW3I+PjJdPj4yXT1jWyhjW3Y+PjJdfDApKzUyKzE2Pj4yXTtpZihjW3M+PjJdfDApe2o9Y1soYXQoY1t2Pj4yXXwwKXwwKT4+Ml18MDtjW2Nbcz4+Ml0+PjJdPWp9fX1pZihjW3Q+PjJdfDApe209KGNbdj4+Ml18MCkrNTJ8MDtuPW0rNDh8MDtkb3tjW20+PjJdPTA7bT1tKzR8MH13aGlsZSgobXwwKTwobnwwKSl9Q3IoY1t2Pj4yXXwwKXwwO0tyKGNbdj4+Ml18MCwxLDEpO2FbKGNbdj4+Ml18MCkrNDU+PjBdPTA7aWYoKGNbeT4+Ml18MCk9PTA/KGNbdz4+Ml18MCkhPShjW3g+PjJdfDApOjApbT01O2Vsc2UgbT1jW3k+PjJdfDA7Y1t6Pj4yXT1tO3o9Y1t6Pj4yXXwwO2k9QTtyZXR1cm4genwwfWZ1bmN0aW9uIFRzKGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wO2U9aTtpPWkrMTZ8MDtoPWUrOHwwO2c9ZSs0fDA7Zj1lO2NbaD4+Ml09YTtjW2c+PjJdPWI7Y1tmPj4yXT1kO09iW2NbKGNbY1toPj4yXT4+Ml18MCkrNDA+PjJdJjI1NV0oY1toPj4yXXwwLGNbZz4+Ml18MCxjW2Y+PjJdfDApfDA7aT1lO3JldHVybn1mdW5jdGlvbiBVcyhhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wO2s9aTtpPWkrMzJ8MDtqPWsrMTZ8MDtlPWsrMjR8MDtmPWsrOHwwO2g9aztnPWsrMjB8MDtjW2U+PjJdPWE7YT1mO2NbYT4+Ml09YjtjW2ErND4+Ml09ZDtZaigpO2NbZz4+Ml09WGkoY1soY1tlPj4yXXwwKSs4Pj4yXXwwLGgpfDA7aWYoKGNbZz4+Ml18MCk9PTA/KGE9aCxiPWNbYSs0Pj4yXXwwLGg9ZixkPWNbaCs0Pj4yXXwwLChifDApPihkfDApfCgoYnwwKT09KGR8MCk/KGNbYT4+Ml18MCk+Pj4wPihjW2g+PjJdfDApPj4+MDowKSk6MCl7aD1mO2NbZz4+Ml09dXIoY1soY1tlPj4yXXwwKSs4Pj4yXXwwLGNbaD4+Ml18MCxjW2grND4+Ml18MCl8MH1aaigpO2lmKCEoY1tnPj4yXXwwKSl7aT1rO3JldHVybn1oPWNbZz4+Ml18MDtjW2o+PjJdPWNbKGNbZT4+Ml18MCkrMTA4Pj4yXTtSZChoLDI1OTA5LGopO2k9aztyZXR1cm59ZnVuY3Rpb24gVnMoYSxiKXthPWF8MDtiPWJ8MDt2YXIgZT0wLGY9MCxnPTAsaD0wO2g9aTtpPWkrMTZ8MDtlPWgrOHwwO2Y9aCs0fDA7Zz1oO2NbZT4+Ml09YTtjW2Y+PjJdPWI7aWYoKGRbKGNbZT4+Ml18MCkrNDM+PjBdfDB8MCkhPTIpe1dzKGNbKGNbZT4+Ml18MCkrND4+Ml18MCxjW2Y+PjJdfDApfDA7aT1oO3JldHVybn1jW2c+PjJdPTA7d2hpbGUoMSl7aWYoKGNbZz4+Ml18MCk+PShjWyhjW2U+PjJdfDApKzI0Pj4yXXwwKSlicmVhaztLZChjWyhjWyhjW2U+PjJdfDApKzMyPj4yXXwwKSsoY1tnPj4yXTw8Mik+PjJdfDApO2NbKGNbKGNbZT4+Ml18MCkrMzI+PjJdfDApKyhjW2c+PjJdPDwyKT4+Ml09MDtjW2c+PjJdPShjW2c+PjJdfDApKzF9aT1oO3JldHVybn1mdW5jdGlvbiBXcyhhLGIpe2E9YXwwO2I9YnwwO3ZhciBkPTAsZT0wLGY9MDtkPWk7aT1pKzE2fDA7Zj1kKzR8MDtlPWQ7Y1tmPj4yXT1hO2NbZT4+Ml09YjthPVliW2NbKGNbY1tmPj4yXT4+Ml18MCkrNjQ+PjJdJjI1NV0oY1tmPj4yXXwwLGNbZT4+Ml18MCl8MDtpPWQ7cmV0dXJuIGF8MH1mdW5jdGlvbiBYcyhiLGQsZSl7Yj1ifDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wO2w9aTtpPWkrMzJ8MDtmPWwrMTZ8MDtnPWwrMTJ8MDtoPWwrOHwwO2o9bCs0fDA7az1sO2NbZz4+Ml09YjtjW2g+PjJdPWQ7Y1tqPj4yXT1lO2lmKGFbKGNbZz4+Ml18MCkrNDM+PjBdfDApe2NbZj4+Ml09MDtrPWNbZj4+Ml18MDtpPWw7cmV0dXJuIGt8MH1lbHNle2Nbaz4+Ml09SnIoY1soY1tnPj4yXXwwKSs0Pj4yXXwwLGNbaD4+Ml18MCxjW2o+PjJdfDAsMTApfDA7Y1tmPj4yXT1jW2s+PjJdO2s9Y1tmPj4yXXwwO2k9bDtyZXR1cm4ga3wwfXJldHVybiAwfWZ1bmN0aW9uIFlzKGEsYixkLGUsZil7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MDtuPWk7aT1pKzMyfDA7Zz1uKzIwfDA7aD1uKzE2fDA7aj1uKzEyfDA7az1uKzh8MDtsPW4rNHwwO209bjtjW2c+PjJdPWE7Y1toPj4yXT1iO2Nbaj4+Ml09ZDtjW2s+PjJdPWU7Y1tsPj4yXT1mO3doaWxlKDEpe2NbbT4+Ml09WHMoY1tnPj4yXXwwLGNbaz4+Ml18MCxjW2w+PjJdfDApfDA7aWYoISgoY1toPj4yXXwwKSE9MCYoY1ttPj4yXXwwKT09NSkpe2c9NDticmVha31pZighKFRiW2NbaD4+Ml0mMjU1XShjW2o+PjJdfDApfDApKXtnPTQ7YnJlYWt9fWlmKChnfDApPT00KXtpPW47cmV0dXJuIGNbbT4+Ml18MH1yZXR1cm4gMH1mdW5jdGlvbiBacyhiLGUpe2I9YnwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTA7bT1pO2k9aSszMnwwO2Y9bSsyMHwwO2c9bSsxNnwwO2g9bSsxMnwwO2w9bSs4fDA7aj1tKzR8MDtrPW07Y1tnPj4yXT1iO2NbaD4+Ml09ZTtjW2w+PjJdPXdzKGNbZz4+Ml18MCwwLGspfDA7aWYoY1tsPj4yXXwwKXtjW2Y+PjJdPWNbbD4+Ml07bD1jW2Y+PjJdfDA7aT1tO3JldHVybiBsfDB9aWYoY1trPj4yXXwwKWU9bXQoY1tnPj4yXXwwLGNbaD4+Ml18MCl8MDtlbHNlIGU9MTtjW2o+PjJdPWU7ZG8gaWYoY1tqPj4yXXwwKXtlPWNbZz4+Ml18MDtpZigoZFsoY1tnPj4yXXwwKSs0Nj4+MF18MCkmMil7az1IcihlLDApfDA7Y1tsPj4yXT1rO2lmKGspYnJlYWs7SXIoY1tnPj4yXXwwLDApO2NbbD4+Ml09MjY0O2JyZWFrfWI9WHMoZSwwLDEpfDA7Y1tsPj4yXT1iO2lmKCFiKXthWyhjW2c+PjJdfDApKzQ0Pj4wXT0xO2s9d3MoY1tnPj4yXXwwLDAsayl8MDtjW2w+PjJdPWs7aWYoMD09KGt8MCk/KGNbaj4+Ml09bXQoY1tnPj4yXXwwLGNbaD4+Ml18MCl8MCwoY1tqPj4yXXwwKSE9MCk6MCl7Y1tsPj4yXT1udChjW2c+PjJdfDApfDA7Y1tjW2g+PjJdPj4yXT0xfWFbKGNbZz4+Ml18MCkrNDQ+PjBdPTA7S3IoY1tnPj4yXXwwLDAsMSl9fXdoaWxlKDApO2lmKChjW2o+PjJdfDApPT0wPyhjWyhjW2c+PjJdfDApKzUyPj4yXXwwKSE9MzAwN2UzOjApY1tsPj4yXT1vdCg1NTg5Nyl8MDtjW2Y+PjJdPWNbbD4+Ml07bD1jW2Y+PjJdfDA7aT1tO3JldHVybiBsfDB9ZnVuY3Rpb24gX3MoYSl7YT1hfDA7dmFyIGI9MCxkPTA7ZD1pO2k9aSsxNnwwO2I9ZDtjW2I+PjJdPWE7aT1kO3JldHVybiAoKGVbKGNbYj4+Ml18MCkrNTIrMTQ+PjFdfDApJjY1MDI0KSsoKChlWyhjW2I+PjJdfDApKzUyKzE0Pj4xXXwwKSYxKTw8MTYpfDB9ZnVuY3Rpb24gJHMoYSxiLGQsZSxmLGcpe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO3ZhciBoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEQ9MCxFPTAsRj0wLEc9MCxIPTA7SD1pO2k9aSsxMTJ8MDtoPUgrMTA0fDA7aj1IKzEwMHwwO2s9SCs5NnwwO2w9SCs5MnwwO209SCs4OHwwO249SCs4NHwwO289SCs4MHwwO0E9SCs3NnwwO0U9SCs3MnwwO3o9SCs2OHwwO3E9SCs2NHwwO3I9SCs2MHwwO3U9SCs1NnwwO3Q9SCs1MnwwO3A9SCs0OHwwO3k9SCs0NHwwO0Y9SCs0MHwwO3g9SCsyNHwwO3Y9SCszNnwwO3c9SCsxNnwwO3M9SCs4fDA7RD1IO0I9SCszMnwwO2Nbaj4+Ml09YTtjW2s+PjJdPWI7Y1tsPj4yXT1kO2NbbT4+Ml09ZTtjW24+PjJdPWY7Y1tvPj4yXT1nO2NbQT4+Ml09MDtjW3o+PjJdPTA7Y1txPj4yXT0wO2Nbcj4+Ml09MDtjW0U+PjJdPV9zKGNbaj4+Ml18MCl8MDtjW3k+PjJdPWF0KGNbaj4+Ml18MCl8MDthOmRvIGlmKChjW2NbeT4+Ml0+PjJdfDApPj4+MDwoY1soY1tqPj4yXXwwKSs1MisxNj4+Ml18MCk+Pj4wKXtjW0E+PjJdPWJ0KGNbaj4+Ml18MCx6KXwwO2lmKGNbQT4+Ml18MCl7Y1toPj4yXT1jW0E+PjJdO0c9Y1toPj4yXXwwO2k9SDtyZXR1cm4gR3wwfWNbdT4+Ml09Y1soY1tqPj4yXXwwKSs1MisxNj4+Ml07Y1t0Pj4yXT1jWyhjW2o+PjJdfDApKzUyKzIwPj4yXTtjW3A+PjJdPTE7d2hpbGUoMSl7aWYoKGNbcD4+Ml18MCk+PTUpYnJlYWs7Y1tGPj4yXT1jWyhjW3k+PjJdfDApKzQrKGNbcD4+Ml08PDIpPj4yXTtkbyBpZigoY1t1Pj4yXXwwKT4+PjA+KGNbRj4+Ml18MCk+Pj4wKXtjW0E+PjJdPVlzKGNbaj4+Ml18MCxjW2w+PjJdfDAsY1ttPj4yXXwwLDMrKGNbcD4+Ml18MCl8MCwxKXwwO2lmKCEoY1tBPj4yXXwwKSl7Y1soY1t5Pj4yXXwwKSs0KyhjW3A+PjJdPDwyKT4+Ml09KGNbcD4+Ml18MCk9PTE/Y1t1Pj4yXXwwOi0xO0tyKGNbaj4+Ml18MCwzKyhjW3A+PjJdfDApfDAsMSk7YnJlYWt9aWYoKGNbQT4+Ml18MCkhPTUpYnJlYWsgYTtjW3U+PjJdPWNbRj4+Ml07Y1tsPj4yXT0wfXdoaWxlKDApO2NbcD4+Ml09KGNbcD4+Ml18MCkrMX1pZigoY1tjW3k+PjJdPj4yXXwwKT4+PjA8KGNbdT4+Ml18MCk+Pj4wPyhHPVlzKGNbaj4+Ml18MCxjW2w+PjJdfDAsY1ttPj4yXXwwLDMsMSl8MCxjW0E+PjJdPUcsKEd8MCk9PTApOjApe2Nbdj4+Ml09Y1tjW3k+PjJdPj4yXTtjWyhjW3k+PjJdfDApKzMyPj4yXT1jW3U+PjJdO2lmKGNbbj4+Ml18MCljW0E+PjJdPXZyKGNbKGNbaj4+Ml18MCkrOD4+Ml18MCxjW24+PjJdfDApfDA7aWYoKChjW0E+PjJdfDApPT0wPyhnPWNbRT4+Ml18MCxnPWFTKGNbdD4+Ml18MCwwLGd8MCwoKGd8MCk8MCk8PDMxPj4zMXwwKXwwLEc9dyxjW0c+PjJdPWcsY1tHKzQ+PjJdPUMsY1tBPj4yXT1YaShjWyhjW2o+PjJdfDApKzQ+PjJdfDAseCl8MCwoY1tBPj4yXXwwKT09MCk6MCk/KGc9eCxkPWNbZys0Pj4yXXwwLEc9dyxGPWNbRys0Pj4yXXwwLChkfDApPChGfDApfCgoZHwwKT09KEZ8MCk/KGNbZz4+Ml18MCk+Pj4wPChjW0c+PjJdfDApPj4+MDowKSk6MClUcyhjWyhjW2o+PjJdfDApKzQ+PjJdfDAsNSx3KTtiOndoaWxlKDEpe2lmKGNbQT4+Ml18MClicmVhazt3aGlsZSgxKXtpZihjdChjW3o+PjJdfDAscSxyKXwwKWJyZWFrIGI7aWYoKGNbcj4+Ml18MCk+Pj4wPD0oY1t2Pj4yXXwwKT4+PjApY29udGludWUgYjtpZigoY1tyPj4yXXwwKT4+PjA+KGNbdT4+Ml18MCk+Pj4wKWNvbnRpbnVlIGI7aWYoKGNbcT4+Ml18MCk+Pj4wPihjW3Q+PjJdfDApPj4+MCljb250aW51ZSBiO2c9KGNbRT4+Ml18MCkrMjR8MDtnPWFTKChjW3I+PjJdfDApLTF8MCwwLGd8MCwoKGd8MCk8MCk8PDMxPj4zMXwwKXwwO2c9UlIoMzIsMCxnfDAsQ3wwKXwwO2c9UlIoZ3wwLEN8MCwyNCwwKXwwO0c9cztjW0c+PjJdPWc7Y1tHKzQ+PjJdPUM7Rz1zO2NbQT4+Ml09ZXMoY1soY1tqPj4yXXwwKSs4Pj4yXXwwLGNbbz4+Ml18MCxjW0U+PjJdfDAsY1tHPj4yXXwwLGNbRys0Pj4yXXwwKXwwO2lmKGNbQT4+Ml18MClicmVhayBiO2c9Y1tFPj4yXXwwO2c9YVMoKGNbcT4+Ml18MCktMXwwLDAsZ3wwLCgoZ3wwKTwwKTw8MzE+PjMxfDApfDA7Rz1zO2NbRz4+Ml09ZztjW0crND4+Ml09QztHPXM7Y1tBPj4yXT1JZyhjWyhjW2o+PjJdfDApKzQ+PjJdfDAsY1tvPj4yXXwwLGNbRT4+Ml18MCxjW0c+PjJdfDAsY1tHKzQ+PjJdfDApfDA7aWYoISgoY1tBPj4yXXwwKT09MCYoY1tBPj4yXXwwKT09MCkpYnJlYWsgYn19aWYoIShjW0E+PjJdfDApKXtHPWNbdT4+Ml18MDtpZigoR3wwKT09KGNbKERzKGNbaj4+Ml18MCl8MCkrMTY+PjJdfDApPyhnPWNbRT4+Ml18MCxnPWFTKGNbKGNbaj4+Ml18MCkrNTIrMjA+PjJdfDAsMCxnfDAsKChnfDApPDApPDwzMT4+MzF8MCl8MCxHPUQsY1tHPj4yXT1nLGNbRys0Pj4yXT1DLEc9RCxjW0E+PjJdPXVyKGNbKGNbaj4+Ml18MCkrND4+Ml18MCxjW0c+PjJdfDAsY1tHKzQ+PjJdfDApfDAsKGNbQT4+Ml18MCk9PTAmKGNbbj4+Ml18MCkhPTApOjApY1tBPj4yXT12cihjWyhjW2o+PjJdfDApKzQ+PjJdfDAsY1tuPj4yXXwwKXwwO2lmKCEoY1tBPj4yXXwwKSljW2NbeT4+Ml0+PjJdPWNbdT4+Ml19S3IoY1tqPj4yXXwwLDMsMSl9aWYoKGNbQT4+Ml18MCk9PTUpe2NbQT4+Ml09MDtHPTM2fWVsc2UgRz0zNn1lbHNlIEc9MzY7d2hpbGUoMCk7ZG8gaWYoKEd8MCk9PTM2PyhjW0E+PjJdfDApPT0wJihjW2s+PjJdfDApIT0wOjApe2lmKChjW2NbeT4+Ml0+PjJdfDApPj4+MDwoY1soY1tqPj4yXXwwKSs1MisxNj4+Ml18MCk+Pj4wKXtjW0E+PjJdPTU7YnJlYWt9aWYoKGNbaz4+Ml18MCk+PTI/KFNkKDQsQiksY1tBPj4yXT1ZcyhjW2o+PjJdfDAsY1tsPj4yXXwwLGNbbT4+Ml18MCw0LDQpfDAsKGNbQT4+Ml18MCk9PTApOjApe2lmKChjW2s+PjJdfDApPT0zKXtkdChjW2o+PjJdfDAsY1tCPj4yXXwwKTtjW0E+PjJdPXVyKGNbKGNbaj4+Ml18MCkrOD4+Ml18MCwwLDApfDB9S3IoY1tqPj4yXXwwLDQsNCl9fXdoaWxlKDApO2V0KGNbej4+Ml18MCk7Y1toPj4yXT1jW0E+PjJdO0c9Y1toPj4yXXwwO2k9SDtyZXR1cm4gR3wwfWZ1bmN0aW9uIGF0KGEpe2E9YXwwO3ZhciBiPTAsZD0wO2Q9aTtpPWkrMTZ8MDtiPWQ7Y1tiPj4yXT1hO2k9ZDtyZXR1cm4gKGNbY1soY1tiPj4yXXwwKSszMj4+Ml0+PjJdfDApKzk2fDB9ZnVuY3Rpb24gYnQoYSxkKXthPWF8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MDt2PWk7aT1pKzY0fDA7ZT12KzYwfDA7Zj12KzU2fDA7Zz12KzUyfDA7dD12KzQ4fDA7cz12KzQ0fDA7bj12KzQwfDA7cT12KzM2fDA7bT12KzMyfDA7bD12KzI4fDA7dT12KzI0fDA7aD12KzIwfDA7bz12KzE2fDA7az12KzEyfDA7cD12Kzh8MDtyPXYrNHwwO2o9djtjW2Y+PjJdPWE7Y1tnPj4yXT1kO2NbdT4+Ml09MDtjW24+PjJdPWNbKGNbZj4+Ml18MCkrNTIrMTY+PjJdO2Nbcz4+Ml09KHVzKGNbbj4+Ml18MCl8MCkrMTtjW3E+PjJdPTI4KygoKGNbcz4+Ml18MCktMXwwKSoyMHwwKSsoY1tuPj4yXTw8MSk7ZD1jW3E+PjJdfDA7Y1t0Pj4yXT1KZChkLCgoZHwwKTwwKTw8MzE+PjMxKXwwO2lmKCEoY1t0Pj4yXXwwKSl7Y1tlPj4yXT03O3U9Y1tlPj4yXXwwO2k9djtyZXR1cm4gdXwwfVZSKGNbdD4+Ml18MCwwLGNbcT4+Ml18MCl8MDtjWyhjW3Q+PjJdfDApKzQ+PjJdPWNbcz4+Ml07Y1tsPj4yXT1KZCgoKGNbbj4+Ml18MCk+Pj4wPjQwOTY/NDA5NjpjW24+PjJdfDApPDwxLDApfDA7aWYoIShjW2w+PjJdfDApKWNbdT4+Ml09NztjW20+PjJdPTA7d2hpbGUoMSl7aWYoY1t1Pj4yXXwwKWJyZWFrO2lmKChjW20+PjJdfDApPj0oY1tzPj4yXXwwKSlicmVhaztjW3U+PjJdPXZzKGNbZj4+Ml18MCxjW20+PjJdfDAsaCxrLG8pfDA7aWYoIShjW3U+PjJdfDApKXtjW2s+PjJdPShjW2s+PjJdfDApKzQ7aWYoKChjW20+PjJdfDApKzF8MCk9PShjW3M+PjJdfDApKWNbcj4+Ml09KGNbbj4+Ml18MCktKGNbbz4+Ml18MCk7ZWxzZSBjW3I+PjJdPSgoY1toPj4yXXwwKS0oY1trPj4yXXwwKXwwKS80fDA7Y1tqPj4yXT0oY1t0Pj4yXXwwKSs4KygoY1soY1t0Pj4yXXwwKSs0Pj4yXXwwKSoyMHwwKSsoY1tvPj4yXTw8MSk7Y1tvPj4yXT0oY1tvPj4yXXwwKSsxO2NbcD4+Ml09MDt3aGlsZSgxKXtpZigoY1twPj4yXXwwKT49KGNbcj4+Ml18MCkpYnJlYWs7YlsoY1tqPj4yXXwwKSsoY1twPj4yXTw8MSk+PjFdPWNbcD4+Ml07Y1twPj4yXT0oY1twPj4yXXwwKSsxfWt0KGNbaz4+Ml18MCxjW2w+PjJdfDAsY1tqPj4yXXwwLHIpO2NbKGNbdD4+Ml18MCkrOCsoKGNbbT4+Ml18MCkqMjB8MCkrMTY+PjJdPWNbbz4+Ml07Y1soY1t0Pj4yXXwwKSs4KygoY1ttPj4yXXwwKSoyMHwwKSsxMj4+Ml09Y1tyPj4yXTtjWyhjW3Q+PjJdfDApKzgrKChjW20+PjJdfDApKjIwfDApKzQ+PjJdPWNbaj4+Ml07Y1soY1t0Pj4yXXwwKSs4KygoY1ttPj4yXXwwKSoyMHwwKSs4Pj4yXT1jW2s+PjJdfWNbbT4+Ml09KGNbbT4+Ml18MCkrMX1LZChjW2w+PjJdfDApO2lmKGNbdT4+Ml18MClldChjW3Q+PjJdfDApO2NbY1tnPj4yXT4+Ml09Y1t0Pj4yXTtjW2U+PjJdPWNbdT4+Ml07dT1jW2U+PjJdfDA7aT12O3JldHVybiB1fDB9ZnVuY3Rpb24gY3QoYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTA7cD1pO2k9aSszMnwwO2Y9cCsyOHwwO2c9cCsyNHwwO2g9cCsyMHwwO2s9cCsxNnwwO209cCsxMnwwO2o9cCs4fDA7bj1wKzR8MDtsPXA7Y1tmPj4yXT1hO2NbZz4+Ml09YjtjW2g+PjJdPWQ7Y1ttPj4yXT0tMTtjW2s+PjJdPWNbY1tmPj4yXT4+Ml07Y1tqPj4yXT0oY1soY1tmPj4yXXwwKSs0Pj4yXXwwKS0xO3doaWxlKDEpe2lmKChjW2o+PjJdfDApPDApYnJlYWs7Y1tuPj4yXT0oY1tmPj4yXXwwKSs4KygoY1tqPj4yXXwwKSoyMHwwKTt3aGlsZSgxKXtpZigoY1tjW24+PjJdPj4yXXwwKT49KGNbKGNbbj4+Ml18MCkrMTI+PjJdfDApKWJyZWFrO2NbbD4+Ml09Y1soY1soY1tuPj4yXXwwKSs4Pj4yXXwwKSsoKGVbKGNbKGNbbj4+Ml18MCkrND4+Ml18MCkrKGNbY1tuPj4yXT4+Ml08PDEpPj4xXXwwKTw8Mik+PjJdO2lmKChjW2w+PjJdfDApPj4+MD4oY1trPj4yXXwwKT4+PjApe289NjticmVha31iPWNbbj4+Ml18MDtjW2I+PjJdPShjW2I+PjJdfDApKzF9aWYoKG98MCk9PTY/KG89MCwoY1tsPj4yXXwwKT4+PjA8KGNbbT4+Ml18MCk+Pj4wKTowKXtjW20+PjJdPWNbbD4+Ml07Y1tjW2g+PjJdPj4yXT0oY1soY1tuPj4yXXwwKSsxNj4+Ml18MCkrKGVbKGNbKGNbbj4+Ml18MCkrND4+Ml18MCkrKGNbY1tuPj4yXT4+Ml08PDEpPj4xXXwwKX1jW2o+PjJdPShjW2o+PjJdfDApKy0xfW89Y1ttPj4yXXwwO2NbY1tmPj4yXT4+Ml09bztjW2NbZz4+Ml0+PjJdPW87aT1wO3JldHVybiAoY1ttPj4yXXwwKT09LTF8MH1mdW5jdGlvbiBkdChhLGIpe2E9YXwwO2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MDtmPWk7aT1pKzMyfDA7Zz1mKzE2fDA7aD1mKzEyfDA7ZT1mKzh8MDtkPWYrNHwwO2o9ZjtjW2c+PjJdPWE7Y1toPj4yXT1iO2NbZT4+Ml09YXQoY1tnPj4yXXwwKXwwO2Nbaj4+Ml09KGNbZz4+Ml18MCkrNTIrMzI7Yj0oY1tnPj4yXXwwKSsxMTJ8MDtjW2I+PjJdPShjW2I+PjJdfDApKzE7Y1soY1tnPj4yXXwwKSs1MisxNj4+Ml09MDtiPWNbaj4+Ml18MDtmdChiLDErKGdyKGNbaj4+Ml18MCl8MCl8MCk7Y1soY1tnPj4yXXwwKSs1MiszMis0Pj4yXT1jW2g+PjJdO2d0KGNbZz4+Ml18MCk7Y1tjW2U+PjJdPj4yXT0wO2NbKGNbZT4+Ml18MCkrMzI+PjJdPTA7Y1soY1tlPj4yXXwwKSs0KzQ+PjJdPTA7Y1tkPj4yXT0yO3doaWxlKDEpe2lmKChjW2Q+PjJdfDApPj01KWJyZWFrO2NbKGNbZT4+Ml18MCkrNCsoY1tkPj4yXTw8Mik+PjJdPS0xO2NbZD4+Ml09KGNbZD4+Ml18MCkrMX1pPWY7cmV0dXJufWZ1bmN0aW9uIGV0KGEpe2E9YXwwO3ZhciBiPTAsZD0wO2I9aTtpPWkrMTZ8MDtkPWI7Y1tkPj4yXT1hO0tkKGNbZD4+Ml18MCk7aT1iO3JldHVybn1mdW5jdGlvbiBmdChiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MDtlPWk7aT1pKzE2fDA7Zj1lKzR8MDtnPWU7Y1tmPj4yXT1iO2NbZz4+Ml09ZDthW2NbZj4+Ml0+PjBdPShjW2c+PjJdfDApPj4+MjQ7YVsoY1tmPj4yXXwwKSsxPj4wXT0oY1tnPj4yXXwwKT4+PjE2O2FbKGNbZj4+Ml18MCkrMj4+MF09KGNbZz4+Ml18MCk+Pj44O2FbKGNbZj4+Ml18MCkrMz4+MF09Y1tnPj4yXTtpPWU7cmV0dXJufWZ1bmN0aW9uIGd0KGIpe2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wO2g9aTtpPWkrMTZ8MDtmPWgrOHwwO2c9aCs0fDA7Y1tmPj4yXT1iO2NbZz4+Ml09RHMoY1tmPj4yXXwwKXwwO2NbaD4+Ml09NDA7YVsoY1tmPj4yXXwwKSs1MisxMj4+MF09MTtjWyhjW2Y+PjJdfDApKzUyPj4yXT0zMDA3ZTM7aHQoMSwoY1tmPj4yXXwwKSs1MnwwLDQwLDAsKGNbZj4+Ml18MCkrNTIrNDB8MCk7Yj0oY1tnPj4yXXwwKSs0OHwwO2Q9KGNbZj4+Ml18MCkrNTJ8MDtlPWIrNDh8MDtkb3thW2I+PjBdPWFbZD4+MF18MDtiPWIrMXwwO2Q9ZCsxfDB9d2hpbGUoKGJ8MCk8KGV8MCkpO2l0KGNbZj4+Ml18MCk7Yj1jW2c+PjJdfDA7ZD0oY1tmPj4yXXwwKSs1MnwwO2U9Yis0OHwwO2Rve2FbYj4+MF09YVtkPj4wXXwwO2I9YisxfDA7ZD1kKzF8MH13aGlsZSgoYnwwKTwoZXwwKSk7aT1oO3JldHVybn1mdW5jdGlvbiBodChhLGIsZCxlLGYpe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTA7bz1pO2k9aSs0OHwwO2c9byszMnwwO3E9bysyOHwwO3A9bysyNHwwO2g9bysyMHwwO2o9bysxNnwwO209bysxMnwwO249bys4fDA7az1vKzR8MDtsPW87Y1tnPj4yXT1hO2NbcT4+Ml09YjtjW3A+PjJdPWQ7Y1toPj4yXT1lO2Nbaj4+Ml09ZjtjW2s+PjJdPWNbcT4+Ml07Y1tsPj4yXT0oY1txPj4yXXwwKSsoY1twPj4yXXwwKTtpZihjW2g+PjJdfDApe2NbbT4+Ml09Y1tjW2g+PjJdPj4yXTtjW24+PjJdPWNbKGNbaD4+Ml18MCkrND4+Ml19ZWxzZXtjW24+PjJdPTA7Y1ttPj4yXT0wfWlmKGNbZz4+Ml18MCl7ZG97cT1jW2s+PjJdfDA7Y1trPj4yXT1xKzQ7Y1ttPj4yXT0oY1ttPj4yXXwwKSsoKGNbcT4+Ml18MCkrKGNbbj4+Ml18MCkpO3E9Y1trPj4yXXwwO2Nbaz4+Ml09cSs0O2Nbbj4+Ml09KGNbbj4+Ml18MCkrKChjW3E+PjJdfDApKyhjW20+PjJdfDApKX13aGlsZSgoY1trPj4yXXwwKT4+PjA8KGNbbD4+Ml18MCk+Pj4wKTtxPWNbbT4+Ml18MDtwPWNbaj4+Ml18MDtjW3A+PjJdPXE7cD1jW24+PjJdfDA7cT1jW2o+PjJdfDA7cT1xKzR8MDtjW3E+PjJdPXA7aT1vO3JldHVybn1lbHNle2Rve2NbbT4+Ml09KGNbbT4+Ml18MCkrKCgoY1tjW2s+PjJdPj4yXSYyNTUpPDwyNCkrKChjW2Nbaz4+Ml0+PjJdJjY1MjgwKTw8OCkrKChjW2Nbaz4+Ml0+PjJdJjE2NzExNjgwKT4+PjgpKygoY1tjW2s+PjJdPj4yXSYtMTY3NzcyMTYpPj4+MjQpKyhjW24+PjJdfDApKTtjW24+PjJdPShjW24+PjJdfDApKygoKGNbKGNbaz4+Ml18MCkrND4+Ml0mMjU1KTw8MjQpKygoY1soY1trPj4yXXwwKSs0Pj4yXSY2NTI4MCk8PDgpKygoY1soY1trPj4yXXwwKSs0Pj4yXSYxNjcxMTY4MCk+Pj44KSsoKGNbKGNbaz4+Ml18MCkrND4+Ml0mLTE2Nzc3MjE2KT4+PjI0KSsoY1ttPj4yXXwwKSk7Y1trPj4yXT0oY1trPj4yXXwwKSs4fXdoaWxlKChjW2s+PjJdfDApPj4+MDwoY1tsPj4yXXwwKT4+PjApO3E9Y1ttPj4yXXwwO3A9Y1tqPj4yXXwwO2NbcD4+Ml09cTtwPWNbbj4+Ml18MDtxPWNbaj4+Ml18MDtxPXErNHwwO2NbcT4+Ml09cDtpPW87cmV0dXJufX1mdW5jdGlvbiBpdChhKXthPWF8MDt2YXIgYj0wLGU9MDtlPWk7aT1pKzE2fDA7Yj1lO2NbYj4+Ml09YTtpZigoZFsoY1tiPj4yXXwwKSs0Mz4+MF18MHwwKT09Mil7aT1lO3JldHVybn1qdChjWyhjW2I+PjJdfDApKzQ+PjJdfDApO2k9ZTtyZXR1cm59ZnVuY3Rpb24ganQoYSl7YT1hfDA7dmFyIGI9MCxkPTA7Yj1pO2k9aSsxNnwwO2Q9YjtjW2Q+PjJdPWE7UWJbY1soY1tjW2Q+PjJdPj4yXXwwKSs2MD4+Ml0mMjU1XShjW2Q+PjJdfDApO2k9YjtyZXR1cm59ZnVuY3Rpb24ga3QoYSxiLGQsZSl7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MDtzPWk7aT1pKzE2MHwwO2Y9cysxNDR8MDtnPXMrMTQwfDA7aD1zKzEzNnwwO2o9cysxMzJ8MDtvPXMrMTI4fDA7cD1zKzEyNHwwO2s9cysxMjB8MDttPXMrMTE2fDA7bj1zKzExMnwwO2w9cys4fDA7cT1zKzR8MDtyPXM7Y1tmPj4yXT1hO2NbZz4+Ml09YjtjW2g+PjJdPWQ7Y1tqPj4yXT1lO2Nbbz4+Ml09Y1tjW2o+PjJdPj4yXTtjW3A+PjJdPTA7Y1trPj4yXT0wO2Nbbj4+Ml09MDtiPWw7YT1iKzEwNHwwO2Rve2NbYj4+Ml09MDtiPWIrNHwwfXdoaWxlKChifDApPChhfDApKTtjW20+PjJdPTA7d2hpbGUoMSl7aWYoKGNbbT4+Ml18MCk+PShjW28+PjJdfDApKWJyZWFrO2NbcD4+Ml09MTtjW2s+PjJdPShjW2g+PjJdfDApKyhjW20+PjJdPDwxKTtjW24+PjJdPTA7d2hpbGUoMSl7aWYoIShjW20+PjJdJjE8PGNbbj4+Ml0pKWJyZWFrO2NbcT4+Ml09bCsoY1tuPj4yXTw8Myk7bHQoY1tmPj4yXXwwLGNbKGNbcT4+Ml18MCkrND4+Ml18MCxjW2NbcT4+Ml0+PjJdfDAsayxwLGNbZz4+Ml18MCk7Y1tuPj4yXT0oY1tuPj4yXXwwKSsxfWNbbCsoY1tuPj4yXTw8MykrND4+Ml09Y1trPj4yXTtjW2wrKGNbbj4+Ml08PDMpPj4yXT1jW3A+PjJdO2NbbT4+Ml09KGNbbT4+Ml18MCkrMX1jW24+PjJdPShjW24+PjJdfDApKzE7d2hpbGUoMSl7aWYoKGNbbj4+Ml18MCk+Pj4wPj0xMylicmVhaztpZihjW28+PjJdJjE8PGNbbj4+Ml0pe2Nbcj4+Ml09bCsoY1tuPj4yXTw8Myk7bHQoY1tmPj4yXXwwLGNbKGNbcj4+Ml18MCkrND4+Ml18MCxjW2Nbcj4+Ml0+PjJdfDAsayxwLGNbZz4+Ml18MCl9Y1tuPj4yXT0oY1tuPj4yXXwwKSsxfWNbY1tqPj4yXT4+Ml09Y1twPj4yXTtpPXM7cmV0dXJufWZ1bmN0aW9uIGx0KGEsZCxmLGcsaCxqKXthPWF8MDtkPWR8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDt2YXIgaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTA7eT1pO2k9aSs2NHwwO2s9eSs0NHwwO2w9eSs0MHwwO209eSszNnwwO249eSszMnwwO289eSsyOHwwO3A9eSsyNHwwO3M9eSsyMHwwO3U9eSsxNnwwO3Q9eSsxMnwwO3c9eSs4fDA7cT15KzR8MDt2PXkrNDh8MDtyPXk7Y1trPj4yXT1hO2NbbD4+Ml09ZDtjW20+PjJdPWY7Y1tuPj4yXT1nO2Nbbz4+Ml09aDtjW3A+PjJdPWo7Y1tzPj4yXT0wO2NbdT4+Ml09MDtjW3Q+PjJdPTA7Y1t3Pj4yXT1jW2Nbbz4+Ml0+PjJdO2NbcT4+Ml09Y1tjW24+PjJdPj4yXTt3aGlsZSgxKXtpZigoY1t1Pj4yXXwwKT49KGNbdz4+Ml18MCk/KGNbcz4+Ml18MCk+PShjW20+PjJdfDApOjApYnJlYWs7ZG8gaWYoKGNbcz4+Ml18MCk8KGNbbT4+Ml18MCkpe2lmKChjW3U+PjJdfDApPChjW3c+PjJdfDApPyhjWyhjW2s+PjJdfDApKygoZVsoY1tsPj4yXXwwKSsoY1tzPj4yXTw8MSk+PjFdfDApPDwyKT4+Ml18MCk+Pj4wPj0oY1soY1trPj4yXXwwKSsoKGVbKGNbcT4+Ml18MCkrKGNbdT4+Ml08PDEpPj4xXXwwKTw8Mik+PjJdfDApPj4+MDowKXt4PTg7YnJlYWt9aD1jW3M+PjJdfDA7Y1tzPj4yXT1oKzE7Ylt2Pj4xXT1iWyhjW2w+PjJdfDApKyhoPDwxKT4+MV18MH1lbHNlIHg9ODt3aGlsZSgwKTtpZigoeHwwKT09OCl7eD0wO2g9Y1t1Pj4yXXwwO2NbdT4+Ml09aCsxO2Jbdj4+MV09YlsoY1txPj4yXXwwKSsoaDw8MSk+PjFdfDB9Y1tyPj4yXT1jWyhjW2s+PjJdfDApKygoZVt2Pj4xXXwwKTw8Mik+PjJdO2c9Ylt2Pj4xXXwwO2g9Y1t0Pj4yXXwwO2NbdD4+Ml09aCsxO2JbKGNbcD4+Ml18MCkrKGg8PDEpPj4xXT1nO2lmKChjW3M+PjJdfDApPj0oY1ttPj4yXXwwKSljb250aW51ZTtpZigoY1soY1trPj4yXXwwKSsoKGVbKGNbbD4+Ml18MCkrKGNbcz4+Ml08PDEpPj4xXXwwKTw8Mik+PjJdfDApIT0oY1tyPj4yXXwwKSljb250aW51ZTtjW3M+PjJdPShjW3M+PjJdfDApKzF9Y1tjW24+PjJdPj4yXT1jW2w+PjJdO2NbY1tvPj4yXT4+Ml09Y1t0Pj4yXTtUUihjW2w+PjJdfDAsY1twPj4yXXwwLGNbdD4+Ml08PDF8MCl8MDtpPXk7cmV0dXJufWZ1bmN0aW9uIG10KGIsZil7Yj1ifDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wO3A9aTtpPWkrMTI4fDA7aD1wKzEyMHwwO2o9cCsxMTZ8MDtrPXArMTEyfDA7bD1wKzEwNHwwO249cCs1NnwwO289cCs4fDA7bT1wO2Nbaj4+Ml09YjtjW2s+PjJdPWY7Y1ttPj4yXT1EcyhjW2o+PjJdfDApfDA7Zj1uO2I9Y1ttPj4yXXwwO2c9Zis0OHwwO2Rve2FbZj4+MF09YVtiPj4wXXwwO2Y9ZisxfDA7Yj1iKzF8MH13aGlsZSgoZnwwKTwoZ3wwKSk7aXQoY1tqPj4yXXwwKTtmPW87Yj0oY1ttPj4yXXwwKSs0OHwwO2c9Zis0OHwwO2Rve2FbZj4+MF09YVtiPj4wXXwwO2Y9ZisxfDA7Yj1iKzF8MH13aGlsZSgoZnwwKTwoZ3wwKSk7aWYoZVIobixvLDQ4KXwwKXtjW2g+PjJdPTE7bz1jW2g+PjJdfDA7aT1wO3JldHVybiBvfDB9aWYoIShkW24rMTI+PjBdfDApKXtjW2g+PjJdPTE7bz1jW2g+PjJdfDA7aT1wO3JldHVybiBvfDB9aHQoMSxuLDQwLDAsbCk7aWYoKGNbbD4+Ml18MCk9PShjW24rNDA+PjJdfDApPyhjW2wrND4+Ml18MCk9PShjW24rNDArND4+Ml18MCk6MCl7aWYoZVIoKGNbaj4+Ml18MCkrNTJ8MCxuLDQ4KXwwKXtjW2Nbaz4+Ml0+PjJdPTE7Zj0oY1tqPj4yXXwwKSs1MnwwO2I9bjtnPWYrNDh8MDtkb3tjW2Y+PjJdPWNbYj4+Ml07Zj1mKzR8MDtiPWIrNHwwfXdoaWxlKChmfDApPChnfDApKTtjWyhjW2o+PjJdfDApKzM2Pj4yXT0oKGVbKGNbaj4+Ml18MCkrNTIrMTQ+PjFdfDApJjY1MDI0KSsoKChlWyhjW2o+PjJdfDApKzUyKzE0Pj4xXXwwKSYxKTw8MTYpfWNbaD4+Ml09MDtvPWNbaD4+Ml18MDtpPXA7cmV0dXJuIG98MH1jW2g+PjJdPTE7bz1jW2g+PjJdfDA7aT1wO3JldHVybiBvfDB9ZnVuY3Rpb24gbnQoZSl7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxEPTAsRT0wO0U9aTtpPWkrMTQ0fDA7Qj1FKzE2fDA7Zz1FKzk2fDA7aD1FKzkyfDA7eT1FKzg4fDA7dT1FKzh8MDttPUUrODB8MDtwPUUrNzZ8MDt0PUUrNzJ8MDtqPUUrMTA0fDA7bD1FKzY4fDA7ej1FKzY0fDA7az1FKzYwfDA7bz1FKzU2fDA7cT1FO0E9RSs1MnwwO3M9RSs0OHwwO0Q9RSs0NHwwO3I9RSs0MHwwO3g9RSszNnwwO3Y9RSszMnwwO3c9RSsyOHwwO249RSsyNHwwO2NbaD4+Ml09ZTtjW20+PjJdPTA7Y1ttKzQ+PjJdPTA7Y1twPj4yXT0xKyhkWyhjW2g+PjJdfDApKzQ1Pj4wXXwwKTtjW3Q+PjJdPTgtKGNbcD4+Ml18MCk7Y1t5Pj4yXT1YcyhjW2g+PjJdfDAsY1twPj4yXXwwLGNbdD4+Ml18MCl8MDtpZihjW3k+PjJdfDApe2NbZz4+Ml09Y1t5Pj4yXTtEPWNbZz4+Ml18MDtpPUU7cmV0dXJuIER8MH1lPShjW2g+PjJdfDApKzUyfDA7Zj1lKzQ4fDA7ZG97Y1tlPj4yXT0wO2U9ZSs0fDB9d2hpbGUoKGV8MCk8KGZ8MCkpO2NbeT4+Ml09WGkoY1soY1toPj4yXXwwKSs4Pj4yXXwwLHUpfDA7YTpkbyBpZighKGNbeT4+Ml18MCkpe2Y9dTtlPWNbZis0Pj4yXXwwO2RvIGlmKChlfDApPjB8KGV8MCk9PTAmKGNbZj4+Ml18MCk+Pj4wPjMyKXtjW2w+PjJdPTA7Y1t5Pj4yXT1lcyhjWyhjW2g+PjJdfDApKzg+PjJdfDAsaiwzMiwwLDApfDA7aWYoY1t5Pj4yXXwwKWJyZWFrIGE7Y1tzPj4yXT1ncihqKXwwO2NbQT4+Ml09Z3Ioais4fDApfDA7aWYoKCgoY1tzPj4yXSYtMnwwKT09OTMxMDcxNjE4PyEoKChjW0E+PjJdfDApPjY1NTM2PzE6KGNbQT4+Ml0mKGNbQT4+Ml18MCktMXwwKSE9MCl8KGNbQT4+Ml18MCk8NTEyKTowKT8oYVsoY1toPj4yXXwwKSs1MisxMz4+MF09Y1tzPj4yXSYxLGNbKGNbaD4+Ml18MCkrMzY+PjJdPWNbQT4+Ml0scz1ncihqKzEyfDApfDAsY1soY1toPj4yXXwwKSsxMTI+PjJdPXMscz0oY1toPj4yXXwwKSs1MiszMnwwLGY9aisxNnwwLGFbcz4+MF09YVtmPj4wXXwwLGFbcysxPj4wXT1hW2YrMT4+MF18MCxhW3MrMj4+MF09YVtmKzI+PjBdfDAsYVtzKzM+PjBdPWFbZiszPj4wXXwwLGFbcys0Pj4wXT1hW2YrND4+MF18MCxhW3MrNT4+MF09YVtmKzU+PjBdfDAsYVtzKzY+PjBdPWFbZis2Pj4wXXwwLGFbcys3Pj4wXT1hW2YrNz4+MF18MCxodCgoZFsoY1toPj4yXXwwKSs1MisxMz4+MF18MCk9PSgoYVs5NjhdfDApPT0wfDApJjEsaiwyNCwwLChjW2g+PjJdfDApKzUyKzI0fDApLHM9Y1soY1toPj4yXXwwKSs1MisyND4+Ml18MCwoc3wwKT09KGdyKGorMjR8MCl8MCkpOjApPyhzPWNbKGNbaD4+Ml18MCkrNTIrMjQrND4+Ml18MCwoc3wwKT09KGdyKGorMjh8MCl8MCkpOjApe2NbRD4+Ml09Z3Ioais0fDApfDA7aWYoKGNbRD4+Ml18MCkhPTMwMDdlMyl7Y1t5Pj4yXT1vdCg1NDk1MSl8MDticmVha31jW3o+PjJdPShjW0E+PjJdfDApKzI0O0Q9Y1t6Pj4yXXwwO2NbbD4+Ml09SmQoRCwoKER8MCk8MCk8PDMxPj4zMSl8MDtpZighKGNbbD4+Ml18MCkpe2NbeT4+Ml09NzticmVhayBhfWNbaz4+Ml09KGNbbD4+Ml18MCkrMjQ7Y1tvPj4yXT0wO0Q9cTtjW0Q+PjJdPTMyO2NbRCs0Pj4yXT0wO3doaWxlKDEpe2Y9cTtzPWNbej4+Ml18MDtzPVJSKGNbZj4+Ml18MCxjW2YrND4+Ml18MCxzfDAsKChzfDApPDApPDwzMT4+MzF8MCl8MDtmPUM7RD11O2o9Y1tEKzQ+PjJdfDA7aWYoISgoZnwwKTwoanwwKXwoKGZ8MCk9PShqfDApP3M+Pj4wPD0oY1tEPj4yXXwwKT4+PjA6MCkpKWJyZWFrO2Nbbz4+Ml09KGNbbz4+Ml18MCkrMTtEPXE7Y1t5Pj4yXT1lcyhjWyhjW2g+PjJdfDApKzg+PjJdfDAsY1tsPj4yXXwwLGNbej4+Ml18MCxjW0Q+PjJdfDAsY1tEKzQ+PjJdfDApfDA7aWYoY1t5Pj4yXXwwKWJyZWFrO2Nbcj4+Ml09cHQoY1toPj4yXXwwLHgsdixjW2s+PjJdfDAsY1tsPj4yXXwwKXwwO2lmKCEoY1tyPj4yXXwwKSlicmVhaztjW3k+PjJdPXF0KGNbaD4+Ml18MCxjW28+PjJdfDAsY1t4Pj4yXXwwKXwwO2lmKGNbeT4+Ml18MClicmVhaztpZihjW3Y+PjJdfDApe2NbKGNbaD4+Ml18MCkrNTIrMTY+PjJdPWNbbz4+Ml07Y1soY1toPj4yXXwwKSs1MisyMD4+Ml09Y1t2Pj4yXTtiWyhjW2g+PjJdfDApKzUyKzE0Pj4xXT1jW0E+PjJdJjY1MjgwfGNbQT4+Ml0+PjE2O2NbbT4+Ml09Y1soY1toPj4yXXwwKSs1MisyND4+Ml07Y1ttKzQ+PjJdPWNbKGNbaD4+Ml18MCkrNTIrMjQrND4+Ml19cz1jW3o+PjJdfDA7RD1xO3M9UlIoY1tEPj4yXXwwLGNbRCs0Pj4yXXwwLHN8MCwoKHN8MCk8MCk8PDMxPj4zMXwwKXwwO0Q9cTtjW0Q+PjJdPXM7Y1tEKzQ+PjJdPUN9S2QoY1tsPj4yXXwwKX19d2hpbGUoMCk7aWYoIShjW3k+PjJdfDApKXtjWyhjW2g+PjJdfDApKzUyKzI0Pj4yXT1jW20+PjJdO2NbKGNbaD4+Ml18MCkrNTIrMjQrND4+Ml09Y1ttKzQ+PjJdO2d0KGNbaD4+Ml18MCk7Y1t3Pj4yXT1hdChjW2g+PjJdfDApfDA7Y1tjW3c+PjJdPj4yXT0wO2NbKGNbdz4+Ml18MCkrMzI+PjJdPWNbKGNbaD4+Ml18MCkrNTIrMTY+PjJdO2NbKGNbdz4+Ml18MCkrND4+Ml09MDtjW24+PjJdPTE7d2hpbGUoMSl7aWYoKGNbbj4+Ml18MCk+PTUpYnJlYWs7Y1soY1t3Pj4yXXwwKSs0KyhjW24+PjJdPDwyKT4+Ml09LTE7Y1tuPj4yXT0oY1tuPj4yXXwwKSsxfWlmKGNbKGNbaD4+Ml18MCkrNTIrMTY+PjJdfDApY1soY1t3Pj4yXXwwKSs0KzQ+PjJdPWNbKGNbaD4+Ml18MCkrNTIrMTY+PjJdO2lmKGNbKGNbaD4+Ml18MCkrNTIrMjA+PjJdfDApe0Q9Y1soY1toPj4yXXwwKSsxMDg+PjJdfDA7Y1tCPj4yXT1jWyhjW2g+PjJdfDApKzUyKzE2Pj4yXTtjW0IrND4+Ml09RDtSZCgyODMsMjU5NTIsQil9fX13aGlsZSgwKTtLcihjW2g+PjJdfDAsY1twPj4yXXwwLGNbdD4+Ml18MCk7Y1tnPj4yXT1jW3k+PjJdO0Q9Y1tnPj4yXXwwO2k9RTtyZXR1cm4gRHwwfWZ1bmN0aW9uIG90KGEpe2E9YXwwO3ZhciBiPTAsZD0wO2I9aTtpPWkrMTZ8MDtkPWI7Y1tkPj4yXT1hO2E9UmooMTQsY1tkPj4yXXwwLDI1OTM1KXwwO2k9YjtyZXR1cm4gYXwwfWZ1bmN0aW9uIHB0KGIsZSxmLGcsaCl7Yj1ifDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7dmFyIGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MDtzPWk7aT1pKzQ4fDA7aj1zKzMyfDA7az1zKzI4fDA7bD1zKzI0fDA7bT1zKzIwfDA7bj1zKzE2fDA7bz1zKzEyfDA7cT1zKzh8MDtwPXMrNHwwO3I9cztjW2s+PjJdPWI7Y1tsPj4yXT1lO2NbbT4+Ml09ZjtjW24+PjJdPWc7Y1tvPj4yXT1oO2NbcD4+Ml09KGNbaz4+Ml18MCkrNTIrMjQ7aWYoZVIoKGNbaz4+Ml18MCkrNTIrMzJ8MCwoY1tvPj4yXXwwKSs4fDAsOCl8MCl7Y1tqPj4yXT0wO2Y9Y1tqPj4yXXwwO2k9cztyZXR1cm4gZnwwfWNbcj4+Ml09Z3IoY1tvPj4yXXwwKXwwO2lmKCEoY1tyPj4yXXwwKSl7Y1tqPj4yXT0wO2Y9Y1tqPj4yXXwwO2k9cztyZXR1cm4gZnwwfWNbcT4+Ml09KGRbKGNbaz4+Ml18MCkrNTIrMTM+PjBdfDApPT0oKGFbOTY4XXwwKT09MHwwKSYxO2h0KGNbcT4+Ml18MCxjW28+PjJdfDAsOCxjW3A+PjJdfDAsY1twPj4yXXwwKTtodChjW3E+PjJdfDAsY1tuPj4yXXwwLGNbKGNbaz4+Ml18MCkrMzY+PjJdfDAsY1twPj4yXXwwLGNbcD4+Ml18MCk7Zj1jW2NbcD4+Ml0+PjJdfDA7aWYoKGZ8MCk9PShncigoY1tvPj4yXXwwKSsxNnwwKXwwKT8oZj1jWyhjW3A+PjJdfDApKzQ+PjJdfDAsKGZ8MCk9PShncigoY1tvPj4yXXwwKSsyMHwwKXwwKSk6MCl7Y1tjW2w+PjJdPj4yXT1jW3I+PjJdO2Y9Z3IoKGNbbz4+Ml18MCkrNHwwKXwwO2NbY1ttPj4yXT4+Ml09ZjtjW2o+PjJdPTE7Zj1jW2o+PjJdfDA7aT1zO3JldHVybiBmfDB9Y1tqPj4yXT0wO2Y9Y1tqPj4yXXwwO2k9cztyZXR1cm4gZnwwfWZ1bmN0aW9uIHF0KGEsZCxlKXthPWF8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MDt0PWk7aT1pKzQ4fDA7Zj10KzQ0fDA7Zz10KzQwfDA7aD10KzM2fDA7aj10KzMyfDA7cj10KzI4fDA7bj10KzI0fDA7bD10KzIwfDA7az10KzE2fDA7bT10KzEyfDA7bz10Kzh8MDtxPXQrNHwwO3A9dDtjW2c+PjJdPWE7Y1toPj4yXT1kO2Nbaj4+Ml09ZTtjW24+PjJdPTA7Y1tsPj4yXT0wO2Nbaz4+Ml09MDthPWNbZz4+Ml18MDtjW3I+PjJdPXZzKGEsdXMoY1toPj4yXXwwKXwwLGssbCxuKXwwO2RvIGlmKCEoY1tyPj4yXXwwKSl7Y1tvPj4yXT0oY1toPj4yXXwwKS0oY1tuPj4yXXwwKTtpZigoY1tvPj4yXXwwKT09MSl7Y1twPj4yXT0oY1trPj4yXXwwKSsxNjM4NC0oKGNbbD4+Ml18MCkrNCk7VlIoKGNbbD4+Ml18MCkrNHwwLDAsY1twPj4yXXwwKXwwfWlmKGNbKGNbbD4+Ml18MCkrKGNbbz4+Ml08PDIpPj4yXXwwKXRzKGNbZz4+Ml18MCk7Y1txPj4yXT1jW28+PjJdO2NbbT4+Ml09T3MoY1tqPj4yXXwwKXwwO3doaWxlKDEpe2lmKCEoYlsoY1trPj4yXXwwKSsoY1ttPj4yXTw8MSk+PjFdfDApKXtzPTExO2JyZWFrfWE9Y1txPj4yXXwwO2NbcT4+Ml09YSstMTtpZighYSlicmVhaztjW20+PjJdPVBzKGNbbT4+Ml18MCl8MH1pZigoc3wwKT09MTEpe2NbKGNbbD4+Ml18MCkrKGNbbz4+Ml08PDIpPj4yXT1jW2o+PjJdO2JbKGNbaz4+Ml18MCkrKGNbbT4+Ml08PDEpPj4xXT1jW28+PjJdO2JyZWFrfWNbZj4+Ml09UWooNTQ4MjApfDA7cz1jW2Y+PjJdfDA7aT10O3JldHVybiBzfDB9d2hpbGUoMCk7Y1tmPj4yXT1jW3I+PjJdO3M9Y1tmPj4yXXwwO2k9dDtyZXR1cm4gc3wwfWZ1bmN0aW9uIHJ0KGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTA7Zj1pO2k9aSsxNnwwO2Q9Zis4fDA7Yj1mKzR8MDtlPWY7Y1tiPj4yXT1hO2lmKCgoY1tiPj4yXXwwKSE9MD8oY1tjW2I+PjJdPj4yXXwwKSE9MDowKT8oY1soY1tiPj4yXXwwKSs4Pj4yXXwwKT49MDowKXtjW2U+PjJdPVliW2NbY1tiPj4yXT4+Ml0mMjU1XShjWyhjW2I+PjJdfDApKzQ+PjJdfDAsY1soY1tiPj4yXXwwKSs4Pj4yXXwwKXwwO2I9KGNbYj4+Ml18MCkrOHwwO2lmKCEoY1tlPj4yXXwwKSljW2I+PjJdPS0xO2Vsc2UgY1tiPj4yXT0oY1tiPj4yXXwwKSsxO2NbZD4+Ml09Y1tlPj4yXTtlPWNbZD4+Ml18MDtpPWY7cmV0dXJuIGV8MH1jW2Q+PjJdPTA7ZT1jW2Q+PjJdfDA7aT1mO3JldHVybiBlfDB9ZnVuY3Rpb24gc3QoKXtyZXR1cm4gNDh9ZnVuY3Rpb24gdHQoYSl7YT1hfDA7dmFyIGI9MCxkPTA7ZD1pO2k9aSsxNnwwO2I9ZDtjW2I+PjJdPWE7aWYoKGNbKGNbYj4+Ml18MCkrND4+Ml18MCk8PTcyKXthPTcyO2k9ZDtyZXR1cm4gYXwwfWE9Y1soY1tiPj4yXXwwKSs0Pj4yXXwwO2k9ZDtyZXR1cm4gYXwwfWZ1bmN0aW9uIHV0KGEsYil7YT1hfDA7Yj1ifDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wO2s9aTtpPWkrMzJ8MDtmPWsrMTZ8MDtsPWsrMTJ8MDtnPWsrOHwwO2g9ays0fDA7aj1rO2NbbD4+Ml09YTtjW2c+PjJdPWI7Y1toPj4yXT1jW2w+PjJdO2Nbaj4+Ml09MDtpZihjWyhjW2g+PjJdfDApKzQ0Pj4yXXwwKXtjW2Y+PjJdPTA7bD1jW2Y+PjJdfDA7aT1rO3JldHVybiBsfDB9ZG8gaWYoZFsoY1toPj4yXXwwKSsyMT4+MF18MCl7aWYoKChkWyhjW2g+PjJdfDApKzIxPj4wXXwwKSYzfDApPT0wPygoZVsoY1tnPj4yXXwwKSsyND4+MV18MCkmOHwwKT09MDowKWJyZWFrO2NbZj4+Ml09MDtsPWNbZj4+Ml18MDtpPWs7cmV0dXJuIGx8MH13aGlsZSgwKTtjWyhjW2c+PjJdfDApKzEyPj4yXT0wO2w9KEJyKGNbaD4+Ml18MCl8MCkhPTA7YT1jW2c+PjJdfDA7aWYobCl7Y1tqPj4yXT13dChhKXwwO2lmKCEoY1tqPj4yXXwwKSljW2o+PjJdPXh0KGNbaD4+Ml18MCxjW2c+PjJdfDAsMCwwKXwwfWVsc2V7aWYoISgoKGVbYSsyND4+MV18MCkmOHwwKT09MD8oZFsoY1toPj4yXXwwKSsxNz4+MF18MHwwKSE9MzowKSljW2o+PjJdPXl0KGNbaD4+Ml18MCwxKXwwO2lmKCEoY1tqPj4yXXwwKSljW2o+PjJdPXp0KGNbaD4+Ml18MCxjW2c+PjJdfDApfDB9aWYoIShjW2o+PjJdfDApKWdqKGNbZz4+Ml18MCk7Y1tmPj4yXT1tcihjW2g+PjJdfDAsY1tqPj4yXXwwKXwwO2w9Y1tmPj4yXXwwO2k9aztyZXR1cm4gbHwwfWZ1bmN0aW9uIHZ0KGIsZCxlLGYsZyxoKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDt2YXIgaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wO3A9aTtpPWkrMzJ8MDtqPXArMjB8MDtrPXArMTZ8MDtsPXArMTJ8MDttPXArOHwwO249cCs0fDA7bz1wO2Nbaj4+Ml09YjtjW2s+PjJdPWQ7Y1tsPj4yXT1lO2NbbT4+Ml09ZjtjW24+PjJdPWc7Y1tvPj4yXT1oO2U9Y1tvPj4yXXwwO2g9ZSs0OHwwO2Rve2NbZT4+Ml09MDtlPWUrNHwwfXdoaWxlKChlfDApPChofDApKTtjWyhjW28+PjJdfDApKzI0Pj4yXT0xO2NbKGNbbz4+Ml18MCkrMjg+PjJdPWNbaz4+Ml07YVsoY1tvPj4yXXwwKSszMj4+MF09Y1tsPj4yXTthWyhjW28+PjJdfDApKzMzPj4wXT0yO2NbKGNbbz4+Ml18MCkrMzY+PjJdPWNbbT4+Ml07Y1soY1tvPj4yXXwwKSs0MD4+Ml09Y1tuPj4yXTtjWyhjW28+PjJdfDApKzE2Pj4yXT0xMDA7Y1soY1tvPj4yXXwwKSsyMD4+Ml09MTtvPV9pKGNbbz4+Ml18MCxjW2o+PjJdfDApfDA7aT1wO3JldHVybiBvfDB9ZnVuY3Rpb24gd3QoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wO2U9aTtpPWkrMTZ8MDtiPWUrNHwwO2Q9ZTtjW2Q+PjJdPWE7aWYoT3QoY1tkPj4yXXwwKXwwKXtjW2I+PjJdPVB0KGNbZD4+Ml18MCl8MDthPWNbYj4+Ml18MDtpPWU7cmV0dXJuIGF8MH1lbHNle2NbYj4+Ml09MDthPWNbYj4+Ml18MDtpPWU7cmV0dXJuIGF8MH1yZXR1cm4gMH1mdW5jdGlvbiB4dChhLGIsZSxmKXthPWF8MDtiPWJ8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTA7cD1pO2k9aSszMnwwO2c9cCsyOHwwO2g9cCsyNHwwO2o9cCsyMHwwO2s9cCsxNnwwO289cCsxMnwwO2w9cCs4fDA7bT1wKzR8MDtuPXA7Y1tnPj4yXT1hO2NbaD4+Ml09YjtjW2o+PjJdPWU7Y1trPj4yXT1mO2E6ZG8gaWYoY1trPj4yXXwwKXtjW24+PjJdPWg7Y1tsPj4yXT0wO2NbbT4+Ml09Y1toPj4yXTt3aGlsZSgxKXthPWNbbT4+Ml18MDtjW2Nbbj4+Ml0+PjJdPWE7aWYoIWEpYnJlYWsgYTtpZigoY1soY1ttPj4yXXwwKSsyMD4+Ml18MCk+Pj4wPD0oY1tqPj4yXXwwKT4+PjApe2Nbbj4+Ml09KGNbbT4+Ml18MCkrMTI7Y1tsPj4yXT0oY1tsPj4yXXwwKSsxfWNbbT4+Ml09Y1soY1ttPj4yXXwwKSsxMj4+Ml19fWVsc2UgY1tsPj4yXT0xO3doaWxlKDApO249KGNbZz4+Ml18MCkrMTkyKzh8MDtjW24+PjJdPShjW24+PjJdfDApKyhjW2w+PjJdfDApO2lmKChjWyhjW2g+PjJdfDApKzIwPj4yXXwwKT09MSlCdChjW2g+PjJdfDApO2Nbbz4+Ml09SHQoY1soY1tnPj4yXXwwKSsyMTY+PjJdfDAsY1soY1tnPj4yXXwwKSsxNjA+PjJdfDAsY1toPj4yXXwwLGNbaj4+Ml18MCxjW2s+PjJdfDAsZFsoY1tnPj4yXXwwKSsxMT4+MF18MCl8MDtpZihjW28+PjJdfDApe289Y1tvPj4yXXwwO2k9cDtyZXR1cm4gb3wwfWlmKCEoY1soY1tnPj4yXXwwKSs5Nj4+Ml18MCkpe289Y1tvPj4yXXwwO2k9cDtyZXR1cm4gb3wwfWNbbT4+Ml09Y1toPj4yXTt3aGlsZSgxKXtpZighKGNbbT4+Ml18MCkpYnJlYWs7aXMoY1soY1tnPj4yXXwwKSs5Nj4+Ml18MCxjWyhjW20+PjJdfDApKzIwPj4yXXwwLGNbKGNbbT4+Ml18MCkrND4+Ml18MCk7Y1ttPj4yXT1jWyhjW20+PjJdfDApKzEyPj4yXX1vPWNbbz4+Ml18MDtpPXA7cmV0dXJuIG98MH1mdW5jdGlvbiB5dChiLGUpe2I9YnwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MDtvPWk7aT1pKzQ4fDA7Zj1vKzI0fDA7Zz1vKzIwfDA7aD1vKzE2fDA7bT1vKzEyfDA7az1vKzh8MDtsPW87aj1vKzQwfDA7bj1vKzI4fDA7Y1tnPj4yXT1iO2NbaD4+Ml09ZTtjW20+PjJdPUN0KGNbZz4+Ml18MCl8MDtpZihjW20+PjJdfDApe2NbZj4+Ml09Y1ttPj4yXTtuPWNbZj4+Ml18MDtpPW87cmV0dXJuIG58MH1kbyBpZighKGFbKGNbZz4+Ml18MCkrNz4+MF18MCkpe2lmKChjW2NbKGNbZz4+Ml18MCkrNjg+PjJdPj4yXXwwKSE9MD8oZFsoY1tnPj4yXXwwKSs1Pj4wXXwwKSE9NDowKXtjW2s+PjJdPWJzKGNbKGNbZz4+Ml18MCkrNjQ+PjJdfDApfDA7aWYoIShjW2s+PjJdJjUxMikpe2Fbbj4+MF09YVsyNTkwMV18MDthW24rMT4+MF09YVsyNTkwMl18MDthW24rMj4+MF09YVsyNTkwM118MDthW24rMz4+MF09YVsyNTkwNF18MDthW24rND4+MF09YVsyNTkwNV18MDthW24rNT4+MF09YVsyNTkwNl18MDthW24rNj4+MF09YVsyNTkwN118MDthW24rNz4+MF09YVsyNTkwOF18MDtmdChuKzh8MCxjWyhjW2c+PjJdfDApKzQ4Pj4yXXwwKTtlPXBzKGNbZz4+Ml18MCl8MDtiPWw7Y1tiPj4yXT1lO2NbYis0Pj4yXT1DO2I9bDtjW20+PjJdPWVzKGNbKGNbZz4+Ml18MCkrNjg+PjJdfDAsaiw4LGNbYj4+Ml18MCxjW2IrND4+Ml18MCl8MDtpZigoY1ttPj4yXXwwKT09MD8wPT0oZVIoaiwyNTkwMSw4KXwwKTowKXtiPWw7Y1ttPj4yXT1JZyhjWyhjW2c+PjJdfDApKzY4Pj4yXXwwLDI2MDIyLDEsY1tiPj4yXXwwLGNbYis0Pj4yXXwwKXwwfWlmKChjW20+PjJdfDApIT0wJihjW20+PjJdfDApIT01MjIpe2NbZj4+Ml09Y1ttPj4yXTtuPWNbZj4+Ml18MDtpPW87cmV0dXJuIG58MH1pZigoKGRbKGNbZz4+Ml18MCkrOD4+MF18MCkhPTA/MD09KGNbaz4+Ml0mMTAyNHwwKTowKT8oY1ttPj4yXT12cihjWyhjW2c+PjJdfDApKzY4Pj4yXXwwLGRbKGNbZz4+Ml18MCkrMTI+PjBdfDApfDAsKGNbbT4+Ml18MCkhPTApOjApe2NbZj4+Ml09Y1ttPj4yXTtuPWNbZj4+Ml18MDtpPW87cmV0dXJuIG58MH1iPShjW2c+PjJdfDApKzg4fDA7Y1ttPj4yXT1JZyhjWyhjW2c+PjJdfDApKzY4Pj4yXXwwLG4sMTIsY1tiPj4yXXwwLGNbYis0Pj4yXXwwKXwwO2lmKGNbbT4+Ml18MCl7Y1tmPj4yXT1jW20+PjJdO249Y1tmPj4yXXwwO2k9bztyZXR1cm4gbnwwfX1pZigwPT0oY1trPj4yXSYxMDI0fDApPyhjW20+PjJdPXZyKGNbKGNbZz4+Ml18MCkrNjg+PjJdfDAsZFsoY1tnPj4yXXwwKSsxMj4+MF18KChkWyhjW2c+PjJdfDApKzEyPj4wXXwwKT09Mz8xNjowKSl8MCwoY1ttPj4yXXwwKSE9MCk6MCl7Y1tmPj4yXT1jW20+PjJdO249Y1tmPj4yXXwwO2k9bztyZXR1cm4gbnwwfWU9KGNbZz4+Ml18MCkrODB8MDtiPWNbZSs0Pj4yXXwwO249KGNbZz4+Ml18MCkrODh8MDtjW24+PjJdPWNbZT4+Ml07Y1tuKzQ+PjJdPWI7aWYoIShjW2g+PjJdfDApKWJyZWFrO2lmKGNbaz4+Ml0mNTEyKWJyZWFrO2NbKGNbZz4+Ml18MCkrNDg+PjJdPTA7Y1ttPj4yXT1EdChjW2c+PjJdfDApfDA7aWYoIShjW20+PjJdfDApKWJyZWFrO2NbZj4+Ml09Y1ttPj4yXTtuPWNbZj4+Ml18MDtpPW87cmV0dXJuIG58MH1iPShjW2c+PjJdfDApKzgwfDA7bT1jW2IrND4+Ml18MDtuPShjW2c+PjJdfDApKzg4fDA7Y1tuPj4yXT1jW2I+PjJdO2Nbbis0Pj4yXT1tfXdoaWxlKDApO0V0KGNbKGNbZz4+Ml18MCkrMjEyPj4yXXwwKTthWyhjW2c+PjJdfDApKzE3Pj4wXT00O2NbZj4+Ml09MDtuPWNbZj4+Ml18MDtpPW87cmV0dXJuIG58MH1mdW5jdGlvbiB6dChiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wO249aTtpPWkrNDh8MDtnPW4rMzJ8MDtoPW4rMjh8MDttPW4rMjR8MDtmPW4rOHwwO2w9bisyMHwwO2o9bjtrPW4rMTZ8MDtjW2c+PjJdPWI7Y1toPj4yXT1kO2NbbT4+Ml09MDtpZighKGNbY1soY1tnPj4yXXwwKSs2ND4+Ml0+PjJdfDApKWNbbT4+Ml09QXQoY1tnPj4yXXwwLGNbKGNbZz4+Ml18MCkrNjQ+PjJdfDAsY1soY1tnPj4yXXwwKSsxNTI+PjJdfDApfDA7ZG8gaWYoKGNbbT4+Ml18MCk9PTA/KGNbKGNbZz4+Ml18MCkrNDA+PjJdfDApPj4+MDwoY1soY1tnPj4yXXwwKSsyOD4+Ml18MCk+Pj4wOjApe2lmKChjWyhjW2g+PjJdfDApKzEyPj4yXXwwKT09MD8oY1soY1toPj4yXXwwKSsyMD4+Ml18MCk+Pj4wPD0oY1soY1tnPj4yXXwwKSs0MD4+Ml18MCk+Pj4wOjApYnJlYWs7ZD1jWyhjW2c+PjJdfDApKzE2MD4+Ml18MDtkPWFTKGR8MCwoKGR8MCk8MCk8PDMxPj4zMXwwLGNbKGNbZz4+Ml18MCkrMjg+PjJdfDAsMCl8MDtiPWY7Y1tiPj4yXT1kO2NbYis0Pj4yXT1DO1RzKGNbKGNbZz4+Ml18MCkrNjQ+PjJdfDAsNSxmKTtjWyhjW2c+PjJdfDApKzQwPj4yXT1jWyhjW2c+PjJdfDApKzI4Pj4yXX13aGlsZSgwKTt3aGlsZSgxKXtpZighKChjW20+PjJdfDApPT0wPyhjW2g+PjJdfDApIT0wOjApKWJyZWFrO2NbbD4+Ml09Y1soY1toPj4yXXwwKSsyMD4+Ml07aWYoKGNbbD4+Ml18MCk+Pj4wPD0oY1soY1tnPj4yXXwwKSsyOD4+Ml18MCk+Pj4wPzA9PSgoZVsoY1toPj4yXXwwKSsyND4+MV18MCkmMTZ8MCk6MCl7Yj1jWyhjW2c+PjJdfDApKzE2MD4+Ml18MDtiPWFTKChjW2w+PjJdfDApLTF8MCwwLGJ8MCwoKGJ8MCk8MCk8PDMxPj4zMXwwKXwwO2Y9ajtjW2Y+PjJdPWI7Y1tmKzQ+PjJdPUM7aWYoKGNbKGNbaD4+Ml18MCkrMjA+PjJdfDApPT0xKUJ0KGNbaD4+Ml18MCk7Y1trPj4yXT1jWyhjW2g+PjJdfDApKzQ+PjJdO2Y9ajtjW20+PjJdPUlnKGNbKGNbZz4+Ml18MCkrNjQ+PjJdfDAsY1trPj4yXXwwLGNbKGNbZz4+Ml18MCkrMTYwPj4yXXwwLGNbZj4+Ml18MCxjW2YrND4+Ml18MCl8MDtpZigoY1tsPj4yXXwwKT09MSl7ZD0oY1tnPj4yXXwwKSsxMTJ8MDtiPShjW2s+PjJdfDApKzI0fDA7Zj1kKzE2fDA7ZG97YVtkPj4wXT1hW2I+PjBdfDA7ZD1kKzF8MDtiPWIrMXwwfXdoaWxlKChkfDApPChmfDApKX1pZigoY1tsPj4yXXwwKT4+PjA+KGNbKGNbZz4+Ml18MCkrMzY+PjJdfDApPj4+MCljWyhjW2c+PjJdfDApKzM2Pj4yXT1jW2w+PjJdO2Y9KGNbZz4+Ml18MCkrMTkyKzh8MDtjW2Y+PjJdPShjW2Y+PjJdfDApKzE7aXMoY1soY1tnPj4yXXwwKSs5Nj4+Ml18MCxjW2w+PjJdfDAsY1soY1toPj4yXXwwKSs0Pj4yXXwwKX1jW2g+PjJdPWNbKGNbaD4+Ml18MCkrMTI+PjJdfWk9bjtyZXR1cm4gY1ttPj4yXXwwfWZ1bmN0aW9uIEF0KGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MDtmPWk7aT1pKzE2fDA7aj1mKzEyfDA7aD1mKzh8MDtnPWYrNHwwO2U9ZjtjW2o+PjJdPWE7Y1toPj4yXT1iO2NbZz4+Ml09ZDtjW2c+PjJdPWNbZz4+Ml18MzA7Y1tlPj4yXT1VcihjW2Nbaj4+Ml0+PjJdfDAsMCxjW2g+PjJdfDAsY1tnPj4yXXwwLDApfDA7aT1mO3JldHVybiBjW2U+PjJdfDB9ZnVuY3Rpb24gQnQoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wO2I9aTtpPWkrMTZ8MDtkPWIrNHwwO2U9YjtjW2Q+PjJdPWE7Y1tlPj4yXT0oZ3IoKGNbKGNbZD4+Ml18MCkrMTY+PjJdfDApKzExMnwwKXwwKSsxO2Z0KChjWyhjW2Q+PjJdfDApKzQ+PjJdfDApKzI0fDAsY1tlPj4yXXwwKTtmdCgoY1soY1tkPj4yXXwwKSs0Pj4yXXwwKSs5MnwwLGNbZT4+Ml18MCk7ZnQoKGNbKGNbZD4+Ml18MCkrND4+Ml18MCkrOTZ8MCwzMDE1MDAxKTtpPWI7cmV0dXJufWZ1bmN0aW9uIEN0KGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MDtlPWk7aT1pKzE2fDA7Yj1lKzR8MDtkPWU7Y1tiPj4yXT1hO2NbZD4+Ml09Y1soY1tiPj4yXXwwKSs0ND4+Ml07aWYoKGNbZD4+Ml18MCk9PTA/MD09KEJyKGNbYj4+Ml18MCl8MCk6MCljW2Q+PjJdPUZ0KGNbYj4+Ml18MCw0KXwwO2k9ZTtyZXR1cm4gY1tkPj4yXXwwfWZ1bmN0aW9uIER0KGIpe2I9YnwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MDtsPWk7aT1pKzMyfDA7Zj1sKzIwfDA7az1sKzE2fDA7aj1sKzEyfDA7Zz1sKzh8MDtoPWwrNHwwO2U9bDtjW2Y+PjJdPWI7Y1trPj4yXT0wO2Nbaj4+Ml09Y1soY1tmPj4yXXwwKSsyMDg+PjJdO2NbZz4+Ml09Y1soY1tmPj4yXXwwKSsxNjA+PjJdO2lmKChjW2c+PjJdfDApPj4+MD4oY1soY1tmPj4yXXwwKSsxNTY+PjJdfDApPj4+MCljW2c+PjJdPWNbKGNbZj4+Ml18MCkrMTU2Pj4yXTtjW2U+PjJdPTA7d2hpbGUoMSl7aWYoKGNbZT4+Ml18MCk+PShjWyhjW2Y+PjJdfDApKzEwND4+Ml18MCkpYnJlYWs7Yj0oY1soY1tmPj4yXXwwKSsxMDA+PjJdfDApKygoY1tlPj4yXXwwKSo0OHwwKSs4fDA7aWYoKGNbYj4+Ml18MCk9PTAmKGNbYis0Pj4yXXwwKT09MCl7bj0oY1tmPj4yXXwwKSs4MHwwO209Y1tuKzQ+PjJdfDA7Yj0oY1soY1tmPj4yXXwwKSsxMDA+PjJdfDApKygoY1tlPj4yXXwwKSo0OHwwKSs4fDA7Y1tiPj4yXT1jW24+PjJdO2NbYis0Pj4yXT1tfWNbZT4+Ml09KGNbZT4+Ml18MCkrMX1iPXBzKGNbZj4+Ml18MCl8MDttPUM7bj0oY1tmPj4yXXwwKSs4MHwwO2Nbbj4+Ml09YjtjW24rND4+Ml09bTtuPShjW2Y+PjJdfDApKzg4fDA7Y1tuPj4yXT1iO2Nbbis0Pj4yXT1tO2lmKCgoZFsoY1tmPj4yXXwwKSs3Pj4wXXwwfDApPT0wPyhkWyhjW2Y+PjJdfDApKzU+PjBdfDB8MCkhPTQ6MCk/KChicyhjWyhjW2Y+PjJdfDApKzY0Pj4yXXwwKXwwKSY1MTJ8MCk9PTA6MCl7ZT1jW2o+PjJdfDA7Yj1lKzEyfDA7ZG97YVtlPj4wXT0wO2U9ZSsxfDB9d2hpbGUoKGV8MCk8KGJ8MCkpfWVsc2V7bj1jW2o+PjJdfDA7YVtuPj4wXT1hWzI1OTAxXXwwO2FbbisxPj4wXT1hWzI1OTAyXXwwO2FbbisyPj4wXT1hWzI1OTAzXXwwO2FbbiszPj4wXT1hWzI1OTA0XXwwO2Fbbis0Pj4wXT1hWzI1OTA1XXwwO2Fbbis1Pj4wXT1hWzI1OTA2XXwwO2Fbbis2Pj4wXT1hWzI1OTA3XXwwO2Fbbis3Pj4wXT1hWzI1OTA4XXwwO2Z0KChjW2o+PjJdfDApKzh8MCwtMSl9U2QoNCwoY1tmPj4yXXwwKSs1MnwwKTtmdCgoY1tqPj4yXXwwKSsxMnwwLGNbKGNbZj4+Ml18MCkrNTI+PjJdfDApO2Z0KChjW2o+PjJdfDApKzE2fDAsY1soY1tmPj4yXXwwKSszMj4+Ml18MCk7ZnQoKGNbaj4+Ml18MCkrMjB8MCxjWyhjW2Y+PjJdfDApKzE1Nj4+Ml18MCk7ZnQoKGNbaj4+Ml18MCkrMjR8MCxjWyhjW2Y+PjJdfDApKzE2MD4+Ml18MCk7VlIoKGNbaj4+Ml18MCkrMjh8MCwwLChjW2c+PjJdfDApLTI4fDApfDA7Y1toPj4yXT0wO3doaWxlKDEpe2lmKGNbaz4+Ml18MCl7ZT0xNzticmVha31pZigoY1toPj4yXXwwKT4+PjA+PShjWyhjW2Y+PjJdfDApKzE1Nj4+Ml18MCk+Pj4wKXtlPTE3O2JyZWFrfW49KGNbZj4+Ml18MCkrODB8MDtjW2s+PjJdPUlnKGNbKGNbZj4+Ml18MCkrNjg+PjJdfDAsY1tqPj4yXXwwLGNbZz4+Ml18MCxjW24+PjJdfDAsY1tuKzQ+PjJdfDApfDA7bj0oY1tmPj4yXXwwKSs4MHwwO209bjttPVJSKGNbbT4+Ml18MCxjW20rND4+Ml18MCxjW2c+PjJdfDAsMCl8MDtjW24+PjJdPW07Y1tuKzQ+PjJdPUM7Y1toPj4yXT0oY1toPj4yXXwwKSsoY1tnPj4yXXwwKX1pZigoZXwwKT09MTcpe2k9bDtyZXR1cm4gY1trPj4yXXwwfXJldHVybiAwfWZ1bmN0aW9uIEV0KGEpe2E9YXwwO3ZhciBkPTAsZj0wLGc9MDtnPWk7aT1pKzE2fDA7ZD1nKzR8MDtmPWc7Y1tkPj4yXT1hO2NbZj4+Ml09Y1tjW2Q+PjJdPj4yXTt3aGlsZSgxKXtpZighKGNbZj4+Ml18MCkpYnJlYWs7YT0oY1tmPj4yXXwwKSsyNHwwO2JbYT4+MV09KGVbYT4+MV18MCkmLTk7Y1tmPj4yXT1jWyhjW2Y+PjJdfDApKzMyPj4yXX1jWyhjW2Q+PjJdfDApKzg+PjJdPWNbKGNbZD4+Ml18MCkrND4+Ml07aT1nO3JldHVybn1mdW5jdGlvbiBGdChhLGIpe2E9YXwwO2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTA7Zz1pO2k9aSsxNnwwO2Q9Zys4fDA7ZT1nKzR8MDtmPWc7Y1tkPj4yXT1hO2NbZT4+Ml09Yjt3aGlsZSgxKXtjW2Y+PjJdPUd0KGNbZD4+Ml18MCxjW2U+PjJdfDApfDA7aWYoKGNbZj4+Ml18MCkhPTUpe2Q9NDticmVha31pZighKFRiW2NbKGNbZD4+Ml18MCkrMTg0Pj4yXSYyNTVdKGNbKGNbZD4+Ml18MCkrMTg4Pj4yXXwwKXwwKSl7ZD00O2JyZWFrfX1pZigoZHwwKT09NCl7aT1nO3JldHVybiBjW2Y+PjJdfDB9cmV0dXJuIDB9ZnVuY3Rpb24gR3QoYixlKXtiPWJ8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wO2o9aTtpPWkrMTZ8MDtmPWorOHwwO2c9ais0fDA7aD1qO2NbZj4+Ml09YjtjW2c+PjJdPWU7Y1toPj4yXT0wO2lmKChkWyhjW2Y+PjJdfDApKzE4Pj4wXXwwfDApPj0oY1tnPj4yXXwwKT8oZFsoY1tmPj4yXXwwKSsxOD4+MF18MHwwKSE9NTowKXtoPWNbaD4+Ml18MDtpPWo7cmV0dXJuIGh8MH1pZihkWyhjW2Y+PjJdfDApKzE0Pj4wXXwwKWU9MDtlbHNlIGU9UnMoY1soY1tmPj4yXXwwKSs2ND4+Ml18MCxjW2c+PjJdfDApfDA7Y1toPj4yXT1lO2lmKGNbaD4+Ml18MCl7aD1jW2g+PjJdfDA7aT1qO3JldHVybiBofDB9aWYoISgoY1tnPj4yXXwwKT09ND8xOihkWyhjW2Y+PjJdfDApKzE4Pj4wXXwwfDApIT01KSl7aD1jW2g+PjJdfDA7aT1qO3JldHVybiBofDB9YVsoY1tmPj4yXXwwKSsxOD4+MF09Y1tnPj4yXTtoPWNbaD4+Ml18MDtpPWo7cmV0dXJuIGh8MH1mdW5jdGlvbiBIdChmLGcsaCxqLGssbCl7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7bD1sfDA7dmFyIG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxEPTAsRT0wLEY9MCxHPTAsSD0wLEk9MCxKPTAsSz0wLEw9MCxNPTAsTj0wO049aTtpPWkrMTc2fDA7dT1OKzEzNnwwO3Y9TisxMzJ8MDt3PU4rMTI4fDA7eD1OKzEyNHwwO3k9TisxMjB8MDt6PU4rMTE2fDA7QT1OKzExMnwwO0k9TisxMDh8MDtEPU4rMTA0fDA7Rz1OKzEwMHwwO0g9Tis5NnwwO0Y9Tis5MnwwO0w9Tis4OHwwO0U9Tis0MHwwO009TisxNnwwO3A9Tis4NHwwO289Tis4MHwwO249TisxNDR8MDttPU4rNzJ8MDtzPU4rNjR8MDtyPU4rNjB8MDtxPU4rOHwwO3Q9Tis1NnwwO0I9Tis1MnwwO0o9Tis0OHwwO0s9TjtjW3Y+PjJdPWY7Y1t3Pj4yXT1nO2NbeD4+Ml09aDtjW3k+PjJdPWo7Y1t6Pj4yXT1rO2NbQT4+Ml09bDtjW0g+PjJdPTA7Y1tGPj4yXT0wO2NbcD4+Ml09MDtjW28+PjJdPURzKGNbdj4+Ml18MCl8MDtpZihlUigoY1t2Pj4yXXwwKSs1MnwwLGNbbz4+Ml18MCw0OCl8MCljW3A+PjJdPShjWyhjW28+PjJdfDApKzE2Pj4yXXwwKSsxO2c9SXQoY1t2Pj4yXXwwKXwwO2NbST4+Ml09ZztpZihnKXtjW3U+PjJdPWNbST4+Ml07TT1jW3U+PjJdfDA7aT1OO3JldHVybiBNfDB9Y1tEPj4yXT1jWyhjW3Y+PjJdfDApKzUyKzE2Pj4yXTtpZighKGNbRD4+Ml18MCkpe2Z0KG4sOTMxMDcxNjE4fChhWzk2OF18MCk9PTApO2Z0KG4rNHwwLDMwMDdlMyk7ZnQobis4fDAsY1t3Pj4yXXwwKTtmdChuKzEyfDAsY1soY1t2Pj4yXXwwKSsxMTI+PjJdfDApO2lmKCEoY1soY1t2Pj4yXXwwKSsxMTI+PjJdfDApKVNkKDgsKGNbdj4+Ml18MCkrNTIrMzJ8MCk7Zz1uKzE2fDA7bD0oY1t2Pj4yXXwwKSs1MiszMnwwO2FbZz4+MF09YVtsPj4wXXwwO2FbZysxPj4wXT1hW2wrMT4+MF18MDthW2crMj4+MF09YVtsKzI+PjBdfDA7YVtnKzM+PjBdPWFbbCszPj4wXXwwO2FbZys0Pj4wXT1hW2wrND4+MF18MDthW2crNT4+MF09YVtsKzU+PjBdfDA7YVtnKzY+PjBdPWFbbCs2Pj4wXXwwO2FbZys3Pj4wXT1hW2wrNz4+MF18MDtodCgxLG4sMjQsMCxtKTtmdChuKzI0fDAsY1ttPj4yXXwwKTtmdChuKzI4fDAsY1ttKzQ+PjJdfDApO2NbKGNbdj4+Ml18MCkrMzY+PjJdPWNbdz4+Ml07YVsoY1t2Pj4yXXwwKSs1MisxMz4+MF09KGFbOTY4XXwwKT09MDtjWyhjW3Y+PjJdfDApKzUyKzI0Pj4yXT1jW20+PjJdO2NbKGNbdj4+Ml18MCkrNTIrMjQrND4+Ml09Y1ttKzQ+PjJdO2FbKGNbdj4+Ml18MCkrNDc+PjBdPTE7Y1tJPj4yXT1JZyhjWyhjW3Y+PjJdfDApKzg+PjJdfDAsbiwzMiwwLDApfDA7aWYoY1tJPj4yXXwwKXtjW3U+PjJdPWNbST4+Ml07TT1jW3U+PjJdfDA7aT1OO3JldHVybiBNfDB9aWYoKChjW0E+PjJdfDApIT0wPyhkWyhjW3Y+PjJdfDApKzQ4Pj4wXXwwKSE9MDowKT8oY1tJPj4yXT12cihjWyhjW3Y+PjJdfDApKzg+PjJdfDAsY1tBPj4yXSYxOSl8MCwoY1tJPj4yXXwwKSE9MCk6MCl7Y1t1Pj4yXT1jW0k+PjJdO009Y1t1Pj4yXXwwO2k9TjtyZXR1cm4gTXwwfX1jW00+PjJdPWNbdj4+Ml07Y1tNKzQ+PjJdPWNbKGNbdj4+Ml18MCkrOD4+Ml07bD1NKzh8MDtjW2w+PjJdPTA7Y1tsKzQ+PjJdPTA7Y1tNKzE2Pj4yXT1jW0E+PjJdO2NbTSsyMD4+Ml09Y1t3Pj4yXTtsPShjW3c+PjJdfDApKzI0fDA7bD1hUygoY1tEPj4yXXwwKSsxLTF8MCwwLGx8MCwoKGx8MCk8MCk8PDMxPj4zMXwwKXwwO2w9UlIoMzIsMCxsfDAsQ3wwKXwwO2c9RTtjW2c+PjJdPWw7Y1tnKzQ+PjJdPUM7Y1tMPj4yXT0oY1t3Pj4yXXwwKSsyNDtjW0c+PjJdPWNbeD4+Ml07d2hpbGUoMSl7aWYoIShjW0c+PjJdfDApKXttPTMwO2JyZWFrfWlmKCgoY1twPj4yXXwwKSE9MD8oKGNbej4+Ml18MCk9PTA/MTooY1soY1tHPj4yXXwwKSsxMj4+Ml18MCkhPTApOjApPyhjW3I+PjJdPTAsSHMoY1t2Pj4yXXwwLGNbKGNbRz4+Ml18MCkrMjA+PjJdfDAscil8MCwoY1tyPj4yXXwwKT4+PjA+PShjW3A+PjJdfDApPj4+MCk6MCl7bD0oY1t3Pj4yXXwwKSsyNHwwO2w9YVMoKGNbcj4+Ml18MCktMXwwLDAsbHwwLCgobHwwKTwwKTw8MzE+PjMxfDApfDA7bD1SUigzMiwwLGx8MCxDfDApfDA7bD1SUihsfDAsQ3wwLDI0LDApfDA7Zz1xO2NbZz4+Ml09bDtjW2crND4+Ml09QztpZighKChjWyhjW3Y+PjJdfDApKzEwND4+Ml18MCkhPTA/KGNbcj4+Ml18MCk+Pj4wPj0oY1soY1t2Pj4yXXwwKSsxMDQ+PjJdfDApPj4+MDowKSljWyhjW3Y+PjJdfDApKzEwND4+Ml09Y1tyPj4yXTtjW3Q+PjJdPWNbKGNbRz4+Ml18MCkrND4+Ml07Zz1xO2NbST4+Ml09SWcoY1soY1t2Pj4yXXwwKSs4Pj4yXXwwLGNbdD4+Ml18MCxjW3c+PjJdfDAsY1tnPj4yXXwwLGNbZys0Pj4yXXwwKXwwO2lmKGNbST4+Ml18MCl7bT0yMjticmVha31nPShjW0c+PjJdfDApKzI0fDA7YltnPj4xXT1lW2c+PjFdJi02NX1lbHNle2NbRD4+Ml09KGNbRD4+Ml18MCkrMTtpZihjW3o+PjJdfDApbT0oY1soY1tHPj4yXXwwKSsxMj4+Ml18MCk9PTA/Y1t5Pj4yXXwwOjA7ZWxzZSBtPTA7Y1tzPj4yXT1tO2c9RTtjW0k+PjJdPUp0KE0sY1tHPj4yXXwwLGNbcz4+Ml18MCxjW2c+PjJdfDAsY1tnKzQ+PjJdfDApfDA7aWYoY1tJPj4yXXwwKXttPTI3O2JyZWFrfWNbSD4+Ml09Y1tHPj4yXTtsPWNbTD4+Ml18MDtnPUU7bD1SUihjW2c+PjJdfDAsY1tnKzQ+PjJdfDAsbHwwLCgobHwwKTwwKTw8MzE+PjMxfDApfDA7Zz1FO2NbZz4+Ml09bDtjW2crND4+Ml09QztnPShjW0c+PjJdfDApKzI0fDA7YltnPj4xXT1lW2c+PjFdfDY0fWNbRz4+Ml09Y1soY1tHPj4yXXwwKSsxMj4+Ml19aWYoKG18MCk9PTIyKXtjW3U+PjJdPWNbST4+Ml07TT1jW3U+PjJdfDA7aT1OO3JldHVybiBNfDB9ZWxzZSBpZigobXwwKT09Mjcpe2NbdT4+Ml09Y1tJPj4yXTtNPWNbdT4+Ml18MDtpPU47cmV0dXJuIE18MH1lbHNlIGlmKChtfDApPT0zMCl7aWYoKChjW3o+PjJdfDApIT0wPyhjWyhjW3Y+PjJdfDApKzEwND4+Ml18MCkhPTA6MCk/KGNbST4+Ml09S3QoY1t2Pj4yXXwwLGNbRD4+Ml18MCl8MCwoY1tJPj4yXXwwKSE9MCk6MCl7Y1t1Pj4yXT1jW0k+PjJdO009Y1t1Pj4yXXwwO2k9TjtyZXR1cm4gTXwwfWlmKChjW3o+PjJdfDApIT0wPyhjW0E+PjJdJjMyfDApIT0wOjApe2NbQj4+Ml09MTthOmRvIGlmKGFbKGNbdj4+Ml18MCkrNDk+PjBdfDApe2NbSj4+Ml09Y3MoY1soY1t2Pj4yXXwwKSs4Pj4yXXwwKXwwO3Q9RTtzPWNbSj4+Ml18MDtzPVJSKGNbdD4+Ml18MCxjW3QrND4+Ml18MCxzfDAsKChzfDApPDApPDwzMT4+MzF8MCl8MDtzPVFSKHN8MCxDfDAsMSwwKXwwO3Q9Y1tKPj4yXXwwO3Q9X1Ioc3wwLEN8MCx0fDAsKCh0fDApPDApPDwzMT4+MzF8MCl8MDtKPWNbSj4+Ml18MDtKPWFTKHR8MCxDfDAsSnwwLCgoSnwwKTwwKTw8MzE+PjMxfDApfDA7dD1NKzh8MDtjW3Q+PjJdPUo7Y1t0KzQ+PjJdPUM7dD1NKzh8MDtKPUU7Y1tCPj4yXT0oKGNbdD4+Ml18MCk9PShjW0o+PjJdfDApPyhjW3QrND4+Ml18MCk9PShjW0orND4+Ml18MCk6MCkmMTt3aGlsZSgxKXt0PUU7cj1jW3QrND4+Ml18MDtKPU0rOHwwO3M9Y1tKKzQ+PjJdfDA7aWYoISgocnwwKTwoc3wwKXwoKHJ8MCk9PShzfDApPyhjW3Q+PjJdfDApPj4+MDwoY1tKPj4yXXwwKT4+PjA6MCkpKWJyZWFrIGE7Sj1FO2NbST4+Ml09SnQoTSxjW0g+PjJdfDAsY1t5Pj4yXXwwLGNbSj4+Ml18MCxjW0orND4+Ml18MCl8MDtpZihjW0k+PjJdfDApYnJlYWs7dD1jW0w+PjJdfDA7Sj1FO3Q9UlIoY1tKPj4yXXwwLGNbSis0Pj4yXXwwLHR8MCwoKHR8MCk8MCk8PDMxPj4zMXwwKXwwO0o9RTtjW0o+PjJdPXQ7Y1tKKzQ+PjJdPUM7Y1tGPj4yXT0oY1tGPj4yXXwwKSsxfWNbdT4+Ml09Y1tJPj4yXTtNPWNbdT4+Ml18MDtpPU47cmV0dXJuIE18MH13aGlsZSgwKTtpZihjW0I+PjJdfDApY1tJPj4yXT12cihjW00rND4+Ml18MCxjW0E+PjJdJjE5KXwwfWlmKCgoY1t6Pj4yXXwwKSE9MD8oZFsoY1t2Pj4yXXwwKSs0Nz4+MF18MCkhPTA6MCk/KE09KGNbdj4+Ml18MCkrMTZ8MCxMPWNbTSs0Pj4yXXwwLChMfDApPjB8KEx8MCk9PTAmKGNbTT4+Ml18MCk+Pj4wPj0wKTowKXtNPShjW3Y+PjJdfDApKzE2fDA7RT1jW00rND4+Ml18MDtMPUs7Y1tMPj4yXT1jW00+PjJdO2NbTCs0Pj4yXT1FO0w9KGNbdz4+Ml18MCkrMjR8MDtMPWFTKChjW0Q+PjJdfDApKyhjW0Y+PjJdfDApKzEtMXwwLDAsTHwwLCgoTHwwKTwwKTw8MzE+PjMxfDApfDA7TD1SUigzMiwwLEx8MCxDfDApfDA7RT1DO009KGNbdj4+Ml18MCkrMTZ8MDtKPWNbTSs0Pj4yXXwwO2lmKChFfDApPihKfDApfCgoRXwwKT09KEp8MCk/TD4+PjA+KGNbTT4+Ml18MCk+Pj4wOjApKXtMPShjW3c+PjJdfDApKzI0fDA7TD1hUygoY1tEPj4yXXwwKSsoY1tGPj4yXXwwKSsxLTF8MCwwLEx8MCwoKEx8MCk8MCk8PDMxPj4zMXwwKXwwO0w9UlIoMzIsMCxMfDAsQ3wwKXwwO009SztjW00+PjJdPUw7Y1tNKzQ+PjJdPUN9TT1LO1VzKGNbdj4+Ml18MCxjW00+PjJdfDAsY1tNKzQ+PjJdfDApO2FbKGNbdj4+Ml18MCkrNDc+PjBdPTB9Y1tEPj4yXT1jWyhjW3Y+PjJdfDApKzUyKzE2Pj4yXTtjW0c+PjJdPWNbeD4+Ml07d2hpbGUoMSl7aWYoISgoY1tHPj4yXXwwKSE9MD8oY1tJPj4yXXwwKT09MDowKSlicmVhaztpZihlWyhjW0c+PjJdfDApKzI0Pj4xXSY2NCl7Y1tEPj4yXT0oY1tEPj4yXXwwKSsxO2NbST4+Ml09cXQoY1t2Pj4yXXwwLGNbRD4+Ml18MCxjWyhjW0c+PjJdfDApKzIwPj4yXXwwKXwwfWNbRz4+Ml09Y1soY1tHPj4yXXwwKSsxMj4+Ml19d2hpbGUoMSl7aWYoISgoY1tJPj4yXXwwKT09MD8oY1tGPj4yXXwwKT4wOjApKWJyZWFrO2NbRD4+Ml09KGNbRD4+Ml18MCkrMTtjW0Y+PjJdPShjW0Y+PjJdfDApKy0xO2NbST4+Ml09cXQoY1t2Pj4yXXwwLGNbRD4+Ml18MCxjWyhjW0g+PjJdfDApKzIwPj4yXXwwKXwwfWlmKCEoY1tJPj4yXXwwKSl7YlsoY1t2Pj4yXXwwKSs1MisxND4+MV09Y1t3Pj4yXSY2NTI4MHxjW3c+PjJdPj4xNjtjWyhjW3Y+PjJdfDApKzUyKzE2Pj4yXT1jW0Q+PjJdO2lmKGNbej4+Ml18MCl7TT0oY1t2Pj4yXXwwKSs1Mis4fDA7Y1tNPj4yXT0oY1tNPj4yXXwwKSsxO2NbKGNbdj4+Ml18MCkrNTIrMjA+PjJdPWNbeT4+Ml19aWYoY1t6Pj4yXXwwKXtndChjW3Y+PjJdfDApO2NbKGNbdj4+Ml18MCkrMTI+PjJdPWNbRD4+Ml19fWNbdT4+Ml09Y1tJPj4yXTtNPWNbdT4+Ml18MDtpPU47cmV0dXJuIE18MH1yZXR1cm4gMH1mdW5jdGlvbiBJdChhKXthPWF8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MDtsPWk7aT1pKzMyfDA7ZD1sKzI0fDA7ZT1sKzIwfDA7aj1sKzE2fDA7Zj1sKzEyfDA7aD1sKzh8MDtrPWwrNHwwO2c9bDtjW2U+PjJdPWE7Y1tqPj4yXT0wO2lmKCEoYlsoY1tlPj4yXXwwKSs0MD4+MV18MCkpe2NbaD4+Ml09YXQoY1tlPj4yXXwwKXwwO2RvIGlmKChjW2NbaD4+Ml0+PjJdfDApPj4+MD4wKXtTZCg0LGspO2Nbaj4+Ml09WHMoY1tlPj4yXXwwLDQsNCl8MDtpZighKGNbaj4+Ml18MCkpe2R0KGNbZT4+Ml18MCxjW2s+PjJdfDApO0tyKGNbZT4+Ml18MCw0LDQpO2JyZWFrfWlmKChjW2o+PjJdfDApIT01KXtjW2Q+PjJdPWNbaj4+Ml07az1jW2Q+PjJdfDA7aT1sO3JldHVybiBrfDB9fXdoaWxlKDApO0lyKGNbZT4+Ml18MCwzKTtiWyhjW2U+PjJdfDApKzQwPj4xXT0tMTtjW2Y+PjJdPTA7ZG97YT1jW2U+PjJdfDA7az0oY1tmPj4yXXwwKSsxfDA7Y1tmPj4yXT1rO2Nbaj4+Ml09TnQoYSxnLDEsayl8MH13aGlsZSgoY1tqPj4yXXwwKT09LTEpfWNbZD4+Ml09Y1tqPj4yXTtrPWNbZD4+Ml18MDtpPWw7cmV0dXJuIGt8MH1mdW5jdGlvbiBKdChhLGIsZCxlLGYpe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MDttPWk7aT1pKzY0fDA7Zz1tKzI4fDA7aD1tKzI0fDA7cD1tKzIwfDA7bz1tKzE2fDA7aj1tO2w9bSsxMnwwO2s9bSs4fDA7bj1tKzMyfDA7Y1toPj4yXT1hO2NbcD4+Ml09YjtjW28+PjJdPWQ7Yj1qO2NbYj4+Ml09ZTtjW2IrND4+Ml09ZjtjW2s+PjJdPWNbKGNbcD4+Ml18MCkrND4+Ml07THQoY1tjW2g+PjJdPj4yXXwwLGNbKGNbcD4+Ml18MCkrMjA+PjJdfDAsY1tvPj4yXXwwLGNbaz4+Ml18MCxuKTtiPWo7Y1tsPj4yXT1NdChjW2g+PjJdfDAsbiwyNCxjW2I+PjJdfDAsY1tiKzQ+PjJdfDApfDA7aWYoY1tsPj4yXXwwKXtjW2c+PjJdPWNbbD4+Ml07cD1jW2c+PjJdfDA7aT1tO3JldHVybiBwfDB9ZWxzZXtiPWNbaD4+Ml18MDtuPWNbaz4+Ml18MDtvPWNbKGNbaD4+Ml18MCkrMjA+PjJdfDA7cD1qO3A9UlIoY1twPj4yXXwwLGNbcCs0Pj4yXXwwLDI0LDApfDA7Y1tsPj4yXT1NdChiLG4sbyxwLEMpfDA7Y1tnPj4yXT1jW2w+PjJdO3A9Y1tnPj4yXXwwO2k9bTtyZXR1cm4gcHwwfXJldHVybiAwfWZ1bmN0aW9uIEt0KGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MDtxPWk7aT1pKzgwfDA7ZD1xKzQ4fDA7ZT1xKzQ0fDA7Zj1xKzQwfDA7cD1xKzM2fDA7bz1xKzMyfDA7Zz1xKzI4fDA7aD1xKzU2fDA7bT1xKzI0fDA7aj1xKzh8MDtrPXE7bD1xKzIwfDA7bj1xKzE2fDA7Y1tlPj4yXT1hO2NbZj4+Ml09YjtjW3A+PjJdPWNbKGNbZT4+Ml18MCkrMzY+PjJdO2Nbbz4+Ml09MDtjW2c+PjJdPUlkKChjW3A+PjJdfDApKzI0fDApfDA7aWYoIShjW2c+PjJdfDApKXtjW2Q+PjJdPTc7cD1jW2Q+PjJdfDA7aT1xO3JldHVybiBwfDB9aWYoKGNbKGNbZT4+Ml18MCkrMTA0Pj4yXXwwKT09MSl7YT1qO2NbYT4+Ml09MjQ7Y1thKzQ+PjJdPTB9ZWxzZXtiPShjW3A+PjJdfDApKzI0fDA7Yj1hUygoY1soY1tlPj4yXXwwKSsxMDQ+PjJdfDApLTEtMXwwLDAsYnwwLCgoYnwwKTwwKTw8MzE+PjMxfDApfDA7Yj1SUigzMiwwLGJ8MCxDfDApfDA7Yj1SUihifDAsQ3wwLDE2LDApfDA7YT1qO2NbYT4+Ml09YjtjW2ErND4+Ml09Q31hPWo7Y1tvPj4yXT1lcyhjWyhjW2U+PjJdfDApKzg+PjJdfDAsY1tnPj4yXXwwLDgsY1thPj4yXXwwLGNbYSs0Pj4yXXwwKXwwO2E9Z3IoY1tnPj4yXXwwKXwwO2NbKGNbZT4+Ml18MCkrNTIrMjQ+PjJdPWE7YT1ncigoY1tnPj4yXXwwKSs0fDApfDA7Y1soY1tlPj4yXXwwKSs1MisyNCs0Pj4yXT1hO2NbbT4+Ml09Y1soY1tlPj4yXXwwKSsxMDQ+PjJdO2NbKGNbZT4+Ml18MCkrMTA0Pj4yXT0wO3doaWxlKDEpe2lmKGNbbz4+Ml18MClicmVhaztpZigoY1ttPj4yXXwwKT4+PjA+KGNbZj4+Ml18MCk+Pj4wKWJyZWFrO2I9KGNbcD4+Ml18MCkrMjR8MDtiPWFTKChjW20+PjJdfDApLTF8MCwwLGJ8MCwoKGJ8MCk8MCk8PDMxPj4zMXwwKXwwO2I9UlIoMzIsMCxifDAsQ3wwKXwwO2E9aztjW2E+PjJdPWI7Y1thKzQ+PjJdPUM7YT1rO2Nbbz4+Ml09ZXMoY1soY1tlPj4yXXwwKSs4Pj4yXXwwLGNbZz4+Ml18MCwoY1twPj4yXXwwKSsyNHwwLGNbYT4+Ml18MCxjW2ErND4+Ml18MCl8MDtpZighKGNbbz4+Ml18MCkpe2NbbD4+Ml09Z3IoY1tnPj4yXXwwKXwwO2Nbbj4+Ml09Z3IoKGNbZz4+Ml18MCkrNHwwKXwwO0x0KGNbZT4+Ml18MCxjW2w+PjJdfDAsY1tuPj4yXXwwLChjW2c+PjJdfDApKzI0fDAsaCk7YT1rO2Nbbz4+Ml09SWcoY1soY1tlPj4yXXwwKSs4Pj4yXXwwLGgsMjQsY1thPj4yXXwwLGNbYSs0Pj4yXXwwKXwwfWNbbT4+Ml09KGNbbT4+Ml18MCkrMX1LZChjW2c+PjJdfDApO2NbZD4+Ml09Y1tvPj4yXTtwPWNbZD4+Ml18MDtpPXE7cmV0dXJuIHB8MH1mdW5jdGlvbiBMdChiLGUsZixnLGgpe2I9YnwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO3ZhciBqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wO289aTtpPWkrMzJ8MDtqPW8rMjR8MDtxPW8rMjB8MDtwPW8rMTZ8MDtrPW8rMTJ8MDtsPW8rOHwwO249bys0fDA7bT1vO2Nbaj4+Ml09YjtjW3E+PjJdPWU7Y1twPj4yXT1mO2Nbaz4+Ml09ZztjW2w+PjJdPWg7Y1ttPj4yXT0oY1tqPj4yXXwwKSs1MisyNDtmdChjW2w+PjJdfDAsY1txPj4yXXwwKTtmdCgoY1tsPj4yXXwwKSs0fDAsY1twPj4yXXwwKTtnPShjW2w+PjJdfDApKzh8MDtpZighKGNbKGNbaj4+Ml18MCkrMTA0Pj4yXXwwKSl7cT0oY1tqPj4yXXwwKSs1MiszMnwwO2FbZz4+MF09YVtxPj4wXXwwO2FbZysxPj4wXT1hW3ErMT4+MF18MDthW2crMj4+MF09YVtxKzI+PjBdfDA7YVtnKzM+PjBdPWFbcSszPj4wXXwwO2FbZys0Pj4wXT1hW3ErND4+MF18MDthW2crNT4+MF09YVtxKzU+PjBdfDA7YVtnKzY+PjBdPWFbcSs2Pj4wXXwwO2FbZys3Pj4wXT1hW3ErNz4+MF18MDtjW24+PjJdPShkWyhjW2o+PjJdfDApKzUyKzEzPj4wXXwwKT09KChhWzk2OF18MCk9PTB8MCkmMTtodChjW24+PjJdfDAsY1tsPj4yXXwwLDgsY1ttPj4yXXwwLGNbbT4+Ml18MCk7aHQoY1tuPj4yXXwwLGNbaz4+Ml18MCxjWyhjW2o+PjJdfDApKzM2Pj4yXXwwLGNbbT4+Ml18MCxjW20+PjJdfDApO2Z0KChjW2w+PjJdfDApKzE2fDAsY1tjW20+PjJdPj4yXXwwKTtmdCgoY1tsPj4yXXwwKSsyMHwwLGNbKGNbbT4+Ml18MCkrND4+Ml18MCk7aT1vO3JldHVybn1lbHNle2g9ZysxNnwwO2Rve2FbZz4+MF09MDtnPWcrMXwwfXdoaWxlKChnfDApPChofDApKTtpPW87cmV0dXJufX1mdW5jdGlvbiBNdChhLGIsZCxlLGYpe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wO289aTtpPWkrMzJ8MDtnPW8rMjh8MDtoPW8rMjR8MDtqPW8rMjB8MDtrPW8rMTZ8MDtsPW87bj1vKzEyfDA7bT1vKzh8MDtjW2g+PjJdPWE7Y1tqPj4yXT1iO2Nbaz4+Ml09ZDthPWw7Y1thPj4yXT1lO2NbYSs0Pj4yXT1mO2E9bDtmPWNbYSs0Pj4yXXwwO2I9KGNbaD4+Ml18MCkrOHwwO2Q9Y1tiKzQ+PjJdfDA7aWYoKGZ8MCk8KGR8MCl8KChmfDApPT0oZHwwKT8oY1thPj4yXXwwKT4+PjA8KGNbYj4+Ml18MCk+Pj4wOjApPyhmPWwsYT1jW2s+PjJdfDAsYT1SUihjW2Y+PjJdfDAsY1tmKzQ+PjJdfDAsYXwwLCgoYXwwKTwwKTw8MzE+PjMxfDApfDAsZj1DLGI9KGNbaD4+Ml18MCkrOHwwLGQ9Y1tiKzQ+PjJdfDAsKGZ8MCk+KGR8MCl8KChmfDApPT0oZHwwKT9hPj4+MD49KGNbYj4+Ml18MCk+Pj4wOjApKTowKXthPShjW2g+PjJdfDApKzh8MDtiPWw7Yj1RUihjW2E+PjJdfDAsY1thKzQ+PjJdfDAsY1tiPj4yXXwwLGNbYis0Pj4yXXwwKXwwO2NbbT4+Ml09YjtiPWw7Y1tuPj4yXT1JZyhjWyhjW2g+PjJdfDApKzQ+PjJdfDAsY1tqPj4yXXwwLGNbbT4+Ml18MCxjW2I+PjJdfDAsY1tiKzQ+PjJdfDApfDA7aWYoY1tuPj4yXXwwKXtjW2c+PjJdPWNbbj4+Ml07bj1jW2c+PjJdfDA7aT1vO3JldHVybiBufDB9YT1jW20+PjJdfDA7Yj1sO2E9UlIoY1tiPj4yXXwwLGNbYis0Pj4yXXwwLGF8MCwoKGF8MCk8MCk8PDMxPj4zMXwwKXwwO2I9bDtjW2I+PjJdPWE7Y1tiKzQ+PjJdPUM7Y1trPj4yXT0oY1trPj4yXXwwKS0oY1ttPj4yXXwwKTtjW2o+PjJdPShjW2o+PjJdfDApKyhjW20+PjJdfDApO2Nbbj4+Ml09dnIoY1soY1toPj4yXXwwKSs0Pj4yXXwwLGNbKGNbaD4+Ml18MCkrMTY+PjJdJjE5KXwwO2lmKChjW2s+PjJdfDApPT0wfChjW24+PjJdfDApIT0wKXtjW2c+PjJdPWNbbj4+Ml07bj1jW2c+PjJdfDA7aT1vO3JldHVybiBufDB9fWI9bDtjW24+PjJdPUlnKGNbKGNbaD4+Ml18MCkrND4+Ml18MCxjW2o+PjJdfDAsY1trPj4yXXwwLGNbYj4+Ml18MCxjW2IrND4+Ml18MCl8MDtjW2c+PjJdPWNbbj4+Ml07bj1jW2c+PjJdfDA7aT1vO3JldHVybiBufDB9ZnVuY3Rpb24gTnQoYSxlLGYsZyl7YT1hfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7dmFyIGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wO3c9aTtpPWkrNjR8MDt2PXcrNDh8MDtoPXcrNDR8MDtqPXcrNDB8MDtrPXcrMzZ8MDtsPXcrMzJ8MDtyPXcrMjh8MDtwPXcrMjR8MDtvPXcrMjB8MDttPXcrMTZ8MDtzPXcrMTJ8MDtuPXcrOHwwO3E9dys0fDA7dD13O2NbaD4+Ml09YTtjW2o+PjJdPWU7Y1trPj4yXT1mO2NbbD4+Ml09ZztjW3M+PjJdPTA7aWYoKGNbbD4+Ml18MCk+NSl7Y1txPj4yXT0xO2lmKChjW2w+PjJdfDApPjEwMCl7Y1t2Pj4yXT0xNTt2PWNbdj4+Ml18MDtpPXc7cmV0dXJuIHZ8MH1pZigoY1tsPj4yXXwwKT49MTApY1txPj4yXT0oXygoY1tsPj4yXXwwKS05fDAsKGNbbD4+Ml18MCktOXwwKXwwKSozOTt3aShjW2NbaD4+Ml0+PjJdfDAsY1txPj4yXXwwKXwwfWlmKCEoY1trPj4yXXwwKSl7Y1tzPj4yXT1acyhjW2g+PjJdfDAsY1tqPj4yXXwwKXwwO2RvIGlmKChjW3M+PjJdfDApPT01KXtpZighKGNbY1soY1toPj4yXXwwKSszMj4+Ml0+PjJdfDApKXtjW3M+PjJdPS0xO2JyZWFrfWY9SHIoY1toPj4yXXwwLDIpfDA7Y1tzPj4yXT1mO2lmKCFmKXtJcihjW2g+PjJdfDAsMik7Y1tzPj4yXT0tMTticmVha31pZigoY1tzPj4yXXwwKT09NSljW3M+PjJdPTI2MX13aGlsZSgwKTtpZihjW3M+PjJdfDApe2Nbdj4+Ml09Y1tzPj4yXTt2PWNbdj4+Ml18MDtpPXc7cmV0dXJuIHZ8MH19Y1tyPj4yXT1hdChjW2g+PjJdfDApfDA7ZG8gaWYoKGNbaz4+Ml18MCk9PTA/KGNbY1tyPj4yXT4+Ml18MCk9PShjWyhjW2g+PjJdfDApKzUyKzE2Pj4yXXwwKTowKXtjW3M+PjJdPUhyKGNbaD4+Ml18MCwzKXwwO2l0KGNbaD4+Ml18MCk7aWYoY1tzPj4yXXwwKXtpZigoY1tzPj4yXXwwKT09NSlicmVhaztjW3Y+PjJdPWNbcz4+Ml07dj1jW3Y+PjJdfDA7aT13O3JldHVybiB2fDB9dT1EcyhjW2g+PjJdfDApfDA7dT0oZVIodSwoY1toPj4yXXwwKSs1MnwwLDQ4KXwwKSE9MDtoPWNbaD4+Ml18MDtpZih1KXtJcihoLDMpO2Nbdj4+Ml09LTE7dj1jW3Y+PjJdfDA7aT13O3JldHVybiB2fDB9ZWxzZXtiW2grNDA+PjFdPTA7Y1t2Pj4yXT0wO3Y9Y1t2Pj4yXXwwO2k9dztyZXR1cm4gdnwwfX13aGlsZSgwKTtjW3A+PjJdPTA7Y1tvPj4yXT0wO2Nbbj4+Ml09Y1soY1toPj4yXXwwKSs1MisxNj4+Ml07Y1ttPj4yXT0xO3doaWxlKDEpe2lmKChjW20+PjJdfDApPj01KWJyZWFrO2NbdD4+Ml09Y1soY1tyPj4yXXwwKSs0KyhjW20+PjJdPDwyKT4+Ml07aWYoKGNbcD4+Ml18MCk+Pj4wPD0oY1t0Pj4yXXwwKT4+PjA/KGNbdD4+Ml18MCk+Pj4wPD0oY1tuPj4yXXwwKT4+PjA6MCl7Y1twPj4yXT1jW3Q+PjJdO2Nbbz4+Ml09Y1ttPj4yXX1jW20+PjJdPShjW20+PjJdfDApKzF9YTpkbyBpZigoKGRbKGNbaD4+Ml18MCkrNDY+PjBdfDApJjJ8MCk9PTA/KChjW28+PjJdfDApPT0wPzE6KGNbcD4+Ml18MCk+Pj4wPChjW24+PjJdfDApPj4+MCk6MCl7Y1ttPj4yXT0xO3doaWxlKDEpe2lmKChjW20+PjJdfDApPj01KWJyZWFrIGE7Y1tzPj4yXT1YcyhjW2g+PjJdfDAsMysoY1ttPj4yXXwwKXwwLDEpfDA7aWYoIShjW3M+PjJdfDApKXt1PTM2O2JyZWFrfWlmKChjW3M+PjJdfDApIT01KWJyZWFrO2NbbT4+Ml09KGNbbT4+Ml18MCkrMX1pZigodXwwKT09MzYpe3U9Y1tuPj4yXXwwO2NbKGNbcj4+Ml18MCkrNCsoY1ttPj4yXTw8Mik+PjJdPXU7Y1twPj4yXT11O2Nbbz4+Ml09Y1ttPj4yXTtLcihjW2g+PjJdfDAsMysoY1ttPj4yXXwwKXwwLDEpO2JyZWFrfWNbdj4+Ml09Y1tzPj4yXTt2PWNbdj4+Ml18MDtpPXc7cmV0dXJuIHZ8MH13aGlsZSgwKTtpZighKGNbbz4+Ml18MCkpe2Nbdj4+Ml09KGNbcz4+Ml18MCk9PTU/LTE6NTIwO3Y9Y1t2Pj4yXXwwO2k9dztyZXR1cm4gdnwwfWNbcz4+Ml09SHIoY1toPj4yXXwwLDMrKGNbbz4+Ml18MCl8MCl8MDtpZihjW3M+PjJdfDApe2Nbdj4+Ml09KGNbcz4+Ml18MCk9PTU/LTE6Y1tzPj4yXXwwO3Y9Y1t2Pj4yXXwwO2k9dztyZXR1cm4gdnwwfWNbKGNbaD4+Ml18MCkrMTAwPj4yXT0oY1tjW3I+PjJdPj4yXXwwKSsxO2l0KGNbaD4+Ml18MCk7aWYoKGNbKGNbcj4+Ml18MCkrNCsoY1tvPj4yXTw8Mik+PjJdfDApPT0oY1twPj4yXXwwKT8odT1EcyhjW2g+PjJdfDApfDAsKGVSKHUsKGNbaD4+Ml18MCkrNTJ8MCw0OCl8MCk9PTApOjApe2JbKGNbaD4+Ml18MCkrNDA+PjFdPWNbbz4+Ml07Y1t2Pj4yXT1jW3M+PjJdO3Y9Y1t2Pj4yXXwwO2k9dztyZXR1cm4gdnwwfUlyKGNbaD4+Ml18MCwzKyhjW28+PjJdfDApfDApO2Nbdj4+Ml09LTE7dj1jW3Y+PjJdfDA7aT13O3JldHVybiB2fDB9ZnVuY3Rpb24gT3QoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MDtoPWk7aT1pKzMyfDA7Zz1oKzIwfDA7aj1oKzE2fDA7ZT1oKzEyfDA7ZD1oKzh8MDtmPWgrNHwwO2I9aDtjW2o+PjJdPWE7Y1tlPj4yXT1jWyhjW2o+PjJdfDApKzE2Pj4yXTtjW2Y+PjJdPWNbKGNbaj4+Ml18MCkrMjA+PjJdO2NbYj4+Ml09MDt3aGlsZSgxKXtpZigoY1tiPj4yXXwwKT49KGNbKGNbZT4+Ml18MCkrMTA0Pj4yXXwwKSl7Yj03O2JyZWFrfWNbZD4+Ml09KGNbKGNbZT4+Ml18MCkrMTAwPj4yXXwwKSsoKGNbYj4+Ml18MCkqNDh8MCk7aWYoKGNbKGNbZD4+Ml18MCkrMjA+PjJdfDApPj4+MD49KGNbZj4+Ml18MCk+Pj4wPzA9PShxaihjWyhjW2Q+PjJdfDApKzE2Pj4yXXwwLGNbZj4+Ml18MCl8MCk6MCl7Yj01O2JyZWFrfWNbYj4+Ml09KGNbYj4+Ml18MCkrMX1pZigoYnwwKT09NSl7Y1tnPj4yXT0xO2o9Y1tnPj4yXXwwO2k9aDtyZXR1cm4ganwwfWVsc2UgaWYoKGJ8MCk9PTcpe2NbZz4+Ml09MDtqPWNbZz4+Ml18MDtpPWg7cmV0dXJuIGp8MH1yZXR1cm4gMH1mdW5jdGlvbiBQdChhKXthPWF8MDt2YXIgYj0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MDtrPWk7aT1pKzMyfDA7Yj1rKzI0fDA7aj1rKzIwfDA7aD1rKzE2fDA7Zj1rKzEyfDA7ZT1rO2c9ays4fDA7Y1tiPj4yXT1hO2Nbaj4+Ml09MDtjW2g+PjJdPWNbKGNbYj4+Ml18MCkrMTY+PjJdO2lmKCgoZFsoY1toPj4yXXwwKSs1Pj4wXXwwfDApIT0yPyhjW2o+PjJdPVF0KGNbaD4+Ml18MCl8MCwoY1tqPj4yXXwwKT09MCk6MCk/KGNbZj4+Ml09Y1soY1tiPj4yXXwwKSs0Pj4yXSxsPTQrKGNbKGNbaD4+Ml18MCkrMTYwPj4yXXwwKXwwLGw9YVMoY1soY1toPj4yXXwwKSs1Nj4+Ml18MCwwLGx8MCwoKGx8MCk8MCk8PDMxPj4zMXwwKXwwLGE9ZSxjW2E+PjJdPWwsY1thKzQ+PjJdPUMsY1tnPj4yXT1jW2Y+PjJdLGE9ZSxjW2o+PjJdPVJ0KGNbKGNbaD4+Ml18MCkrNzI+PjJdfDAsY1thPj4yXXwwLGNbYSs0Pj4yXXwwLGNbKGNbYj4+Ml18MCkrMjA+PjJdfDApfDAsKGNbaj4+Ml18MCk9PTApOjApe2Y9Y1soY1toPj4yXXwwKSs3Mj4+Ml18MDtnPWNbZz4+Ml18MDthPWNbKGNbaD4+Ml18MCkrMTYwPj4yXXwwO2w9ZTtsPVJSKGNbbD4+Ml18MCxjW2wrND4+Ml18MCw0LDApfDA7Y1tqPj4yXT1JZyhmLGcsYSxsLEMpfDB9aWYoY1tqPj4yXXwwKXtsPWNbaj4+Ml18MDtpPWs7cmV0dXJuIGx8MH1sPShjW2g+PjJdfDApKzU2fDA7Y1tsPj4yXT0oY1tsPj4yXXwwKSsxO2Nbaj4+Ml09U3QoY1toPj4yXXwwLGNbKGNbYj4+Ml18MCkrMjA+PjJdfDApfDA7bD1jW2o+PjJdfDA7aT1rO3JldHVybiBsfDB9ZnVuY3Rpb24gUXQoYSl7YT1hfDA7dmFyIGI9MCxlPTAsZj0wLGc9MDtnPWk7aT1pKzE2fDA7Yj1nKzEyfDA7Zj1nKzh8MDtlPWc7Y1tiPj4yXT1hO2NbZj4+Ml09MDtpZihjW2NbKGNbYj4+Ml18MCkrNzI+PjJdPj4yXXwwKXtmPWNbZj4+Ml18MDtpPWc7cmV0dXJuIGZ8MH1jW2crND4+Ml09ODIyMjtjW2U+PjJdPWNbMTFdO2lmKCEoKGRbKGNbYj4+Ml18MCkrNT4+MF18MHwwKSE9ND8oZFsoY1tiPj4yXXwwKSsyMj4+MF18MHwwKT09MDowKSljW2U+PjJdPS0xO2NbZj4+Ml09VHQoY1tjW2I+PjJdPj4yXXwwLDAsY1soY1tiPj4yXXwwKSs3Mj4+Ml18MCw4MjIyLGNbZT4+Ml18MCl8MDtmPWNbZj4+Ml18MDtpPWc7cmV0dXJuIGZ8MH1mdW5jdGlvbiBSdChhLGIsZCxlKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MDtmPWk7aT1pKzMyfDA7aD1mKzEyfDA7aj1mO2s9Zis4fDA7Zz1mKzE2fDA7Y1toPj4yXT1hO2E9ajtjW2E+PjJdPWI7Y1thKzQ+PjJdPWQ7Y1trPj4yXT1lO2Z0KGcsY1trPj4yXXwwKTtlPWo7ZT1JZyhjW2g+PjJdfDAsZyw0LGNbZT4+Ml18MCxjW2UrND4+Ml18MCl8MDtpPWY7cmV0dXJuIGV8MH1mdW5jdGlvbiBTdChhLGIpe2E9YXwwO2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MDtqPWk7aT1pKzMyfDA7ZD1qKzE2fDA7ZT1qKzEyfDA7Zj1qKzh8MDtoPWorNHwwO2c9ajtjW2Q+PjJdPWE7Y1tlPj4yXT1iO2NbaD4+Ml09MDtjW2Y+PjJdPTA7d2hpbGUoMSl7aWYoKGNbZj4+Ml18MCk+PShjWyhjW2Q+PjJdfDApKzEwND4+Ml18MCkpYnJlYWs7Y1tnPj4yXT0oY1soY1tkPj4yXXwwKSsxMDA+PjJdfDApKygoY1tmPj4yXXwwKSo0OHwwKTtpZigoY1tlPj4yXXwwKT4+PjA8PShjWyhjW2c+PjJdfDApKzIwPj4yXXwwKT4+PjApe2I9bGooY1soY1tnPj4yXXwwKSsxNj4+Ml18MCxjW2U+PjJdfDApfDA7Y1toPj4yXT1jW2g+PjJdfGJ9Y1tmPj4yXT0oY1tmPj4yXXwwKSsxfWk9ajtyZXR1cm4gY1toPj4yXXwwfWZ1bmN0aW9uIFR0KGEsYixkLGUsZil7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTA7bz1pO2k9aSszMnwwO2c9bysyNHwwO2g9bysyMHwwO2o9bysxNnwwO2s9bysxMnwwO2w9bys4fDA7bT1vKzR8MDtuPW87Y1toPj4yXT1hO2Nbaj4+Ml09YjtjW2s+PjJdPWQ7Y1tsPj4yXT1lO2NbbT4+Ml09ZjtjW24+PjJdPWNbaz4+Ml07ZT1jW24+PjJdfDA7Zj1lKzcyfDA7ZG97Y1tlPj4yXT0wO2U9ZSs0fDB9d2hpbGUoKGV8MCk8KGZ8MCkpO2lmKCEoY1ttPj4yXXwwKSl7Y1tnPj4yXT1VcihjW2g+PjJdfDAsY1tqPj4yXXwwLGNbaz4+Ml18MCxjW2w+PjJdfDAsMCl8MDtuPWNbZz4+Ml18MDtpPW87cmV0dXJuIG58MH1pZigoY1ttPj4yXXwwKT4wKWNbKGNbbj4+Ml18MCkrND4+Ml09Y1ttPj4yXTtlbHNlIGNbKGNbbj4+Ml18MCkrND4+Ml09MTAyMDtjW2Nbbj4+Ml0+PjJdPTQwMjg7Y1soY1tuPj4yXXwwKSs4Pj4yXT1jW20+PjJdO2NbKGNbbj4+Ml18MCkrNTY+PjJdPWNbbD4+Ml07Y1soY1tuPj4yXXwwKSs2ND4+Ml09Y1tqPj4yXTtjWyhjW24+PjJdfDApKzYwPj4yXT1jW2g+PjJdO2NbZz4+Ml09MDtuPWNbZz4+Ml18MDtpPW87cmV0dXJuIG58MH1mdW5jdGlvbiBVdChhKXthPWF8MDt2YXIgYj0wLGQ9MDtkPWk7aT1pKzE2fDA7Yj1kO2NbYj4+Ml09YTtpPWQ7cmV0dXJuIGNbKGNbYj4+Ml18MCkrOD4+Ml18MH1mdW5jdGlvbiBWdChhKXthPWF8MDt2YXIgYj0wLGQ9MDtiPWk7aT1pKzE2fDA7ZD1iO2NbZD4+Ml09YTthPUZzKGNbZD4+Ml18MCl8MDtpPWI7cmV0dXJuIGF8MH1mdW5jdGlvbiBXdChmKXtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MDt4PWk7aT1pKzY0fDA7bD14KzQwfDA7bT14KzM2fDA7dD14KzUwfDA7bz14KzUyfDA7bj14KzMyfDA7aj14KzI4fDA7dz14KzI0fDA7Zz14KzQ4fDA7cj14KzIwfDA7dj14KzE2fDA7cD14KzEyfDA7cT14Kzh8MDtoPXgrNHwwO2s9eDtzPXgrNDZ8MDt1PXgrNDR8MDtjW20+PjJdPWY7ZG8gaWYoIShhW2NbbT4+Ml0+PjBdfDApKXtjW2o+PjJdPWNbKGNbbT4+Ml18MCkrNTI+PjJdO2Fbbz4+MF09YVsoY1ttPj4yXXwwKSs1Pj4wXXwwO2Nbbj4+Ml09Y1soY1ttPj4yXXwwKSs1Nj4+Ml07aWYoWHQoY1ttPj4yXXwwLGRbKGNbbj4+Ml18MCkrKGRbbz4+MF18MCk+PjBdfDApfDApe2NbbD4+Ml09UWooNjAwMDYpfDA7dz1jW2w+PjJdfDA7aT14O3JldHVybiB3fDB9YlsoY1ttPj4yXXwwKSsyMD4+MV09KGNbKGNbaj4+Ml18MCkrMzI+PjJdfDApLTE7YVsoY1ttPj4yXXwwKSsxPj4wXT0wO2Nbdz4+Ml09Y1soY1tqPj4yXXwwKSszNj4+Ml07Zj0oZFtvPj4wXXwwKSs4KyhkWyhjW20+PjJdfDApKzY+PjBdfDApJjY1NTM1O2JbZz4+MV09ZjtiWyhjW20+PjJdfDApKzE0Pj4xXT1mO2NbKGNbbT4+Ml18MCkrNjA+PjJdPShjW24+PjJdfDApKyhjW3c+PjJdfDApO2NbKGNbbT4+Ml18MCkrNjQ+PjJdPShjW24+PjJdfDApKyhlW2c+PjFdfDApO2NbKGNbbT4+Ml18MCkrNjg+PjJdPShjW24+PjJdfDApKyhkWyhjW20+PjJdfDApKzY+PjBdfDApO2Nbdj4+Ml09KChkWyhjW24+PjJdfDApKygoZFtvPj4wXXwwKSs1KT4+MF08PDh8ZFsoY1tuPj4yXXwwKSsoKGRbbz4+MF18MCkrNSkrMT4+MF0pLTEmNjU1MzUpKzE7YlsoY1ttPj4yXXwwKSsxOD4+MV09ZFsoY1tuPj4yXXwwKSsoKGRbbz4+MF18MCkrMyk+PjBdPDw4fGRbKGNbbj4+Ml18MCkrKChkW28+PjBdfDApKzMpKzE+PjBdO2lmKChlWyhjW20+PjJdfDApKzE4Pj4xXXwwKT4+PjA+KCgoKGNbKGNbaj4+Ml18MCkrMzI+PjJdfDApLTh8MCk+Pj4wKS82fDApPj4+MCl7Y1tsPj4yXT1Raig2MDAyNCl8MDt3PWNbbD4+Ml18MDtpPXg7cmV0dXJuIHd8MH1jW3A+PjJdPShlW2c+PjFdfDApKyhlWyhjW20+PjJdfDApKzE4Pj4xXTw8MSk7Y1txPj4yXT0oY1t3Pj4yXXwwKS00O2RvIGlmKGNbKGNbKGNbaj4+Ml18MCkrND4+Ml18MCkrMjQ+PjJdJjUzNjg3MDkxMil7aWYoIShhWyhjW20+PjJdfDApKzQ+PjBdfDApKWNbcT4+Ml09KGNbcT4+Ml18MCkrLTE7Y1toPj4yXT0wO3doaWxlKDEpe2lmKChjW2g+PjJdfDApPj0oZVsoY1ttPj4yXXwwKSsxOD4+MV18MCkpe2c9MTc7YnJlYWt9Ylt0Pj4xXT1kWyhjW24+PjJdfDApKygoZVtnPj4xXXwwKSsoY1toPj4yXTw8MSkpPj4wXTw8OHxkWyhjW24+PjJdfDApKygoZVtnPj4xXXwwKSsoY1toPj4yXTw8MSkpKzE+PjBdO2lmKChlW3Q+PjFdfDApPChjW3A+PjJdfDApKXtnPTEzO2JyZWFrfWlmKChlW3Q+PjFdfDApPihjW3E+PjJdfDApKXtnPTEzO2JyZWFrfWNbaz4+Ml09KFliW2NbKGNbbT4+Ml18MCkrNzY+PjJdJjI1NV0oY1ttPj4yXXwwLChjW24+PjJdfDApKyhlW3Q+PjFdfDApfDApfDApJjY1NTM1O2lmKCgoZVt0Pj4xXXwwKSsoY1trPj4yXXwwKXwwKT4oY1t3Pj4yXXwwKSl7Zz0xNTticmVha31jW2g+PjJdPShjW2g+PjJdfDApKzF9aWYoKGd8MCk9PTEzKXtjW2w+PjJdPVFqKDYwMDUyKXwwO3c9Y1tsPj4yXXwwO2k9eDtyZXR1cm4gd3wwfWVsc2UgaWYoKGd8MCk9PTE1KXtjW2w+PjJdPVFqKDYwMDU3KXwwO3c9Y1tsPj4yXXwwO2k9eDtyZXR1cm4gd3wwfWVsc2UgaWYoKGd8MCk9PTE3KXtpZihhWyhjW20+PjJdfDApKzQ+PjBdfDApYnJlYWs7Y1txPj4yXT0oY1txPj4yXXwwKSsxO2JyZWFrfX13aGlsZSgwKTtiW3Q+PjFdPWRbKGNbbj4+Ml18MCkrKChkW28+PjBdfDApKzEpPj4wXTw8OHxkWyhjW24+PjJdfDApKygoZFtvPj4wXXwwKSsxKSsxPj4wXTtjW3I+PjJdPShkWyhjW24+PjJdfDApKygoZFtvPj4wXXwwKSs3KT4+MF18MCkrKGNbdj4+Ml18MCk7d2hpbGUoMSl7aWYoKGVbdD4+MV18MCk8PTApe2c9Mjk7YnJlYWt9aWYoKGVbdD4+MV18MCk8KGNbcD4+Ml18MCkpe2c9MjM7YnJlYWt9aWYoKGVbdD4+MV18MCk+KGNbcT4+Ml18MCkpe2c9MjM7YnJlYWt9YltzPj4xXT1kWyhjW24+PjJdfDApKyhlW3Q+PjFdfDApPj4wXTw8OHxkWyhjW24+PjJdfDApKyhlW3Q+PjFdfDApKzE+PjBdO2JbdT4+MV09ZFsoY1tuPj4yXXwwKSsoKGVbdD4+MV18MCkrMik+PjBdPDw4fGRbKGNbbj4+Ml18MCkrKChlW3Q+PjFdfDApKzIpKzE+PjBdO2lmKChlW3M+PjFdfDApPjA/KGVbcz4+MV18MCk8PSgoZVt0Pj4xXXwwKSsoZVt1Pj4xXXwwKSszfDApOjApe2c9Mjc7YnJlYWt9aWYoKChlW3Q+PjFdfDApKyhlW3U+PjFdfDApfDApPihjW3c+PjJdfDApKXtnPTI3O2JyZWFrfWNbcj4+Ml09KGNbcj4+Ml18MCkrKGVbdT4+MV18MCk7Ylt0Pj4xXT1iW3M+PjFdfDB9aWYoKGd8MCk9PTIzKXtjW2w+PjJdPVFqKDYwMDc3KXwwO3c9Y1tsPj4yXXwwO2k9eDtyZXR1cm4gd3wwfWVsc2UgaWYoKGd8MCk9PTI3KXtjW2w+PjJdPVFqKDYwMDg0KXwwO3c9Y1tsPj4yXXwwO2k9eDtyZXR1cm4gd3wwfWVsc2UgaWYoKGd8MCk9PTI5KXtpZigoY1tyPj4yXXwwKTw9KGNbdz4+Ml18MCkpe2JbKGNbbT4+Ml18MCkrMTY+PjFdPShjW3I+PjJdfDApLShjW3A+PjJdfDApO2FbY1ttPj4yXT4+MF09MTticmVha31jW2w+PjJdPVFqKDYwMDk4KXwwO3c9Y1tsPj4yXXwwO2k9eDtyZXR1cm4gd3wwfX13aGlsZSgwKTtjW2w+PjJdPTA7dz1jW2w+PjJdfDA7aT14O3JldHVybiB3fDB9ZnVuY3Rpb24gWHQoZSxmKXtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MDtsPWk7aT1pKzE2fDA7aD1sKzEyfDA7aj1sKzh8MDtnPWwrNHwwO2s9bDtjW2o+PjJdPWU7Y1tnPj4yXT1mO2FbKGNbaj4+Ml18MCkrND4+MF09Y1tnPj4yXT4+MztjW2c+PjJdPWNbZz4+Ml0mLTk7YVsoY1tqPj4yXXwwKSs2Pj4wXT00LShkWyhjW2o+PjJdfDApKzQ+PjBdPDwyKTtjWyhjW2o+PjJdfDApKzc2Pj4yXT0xODg7Y1trPj4yXT1jWyhjW2o+PjJdfDApKzUyPj4yXTtkbyBpZigoY1tnPj4yXXwwKT09NSl7YVsoY1tqPj4yXXwwKSsyPj4wXT0xO2c9KGNbaj4+Ml18MCkrM3wwO2lmKGFbKGNbaj4+Ml18MCkrND4+MF18MCl7YVtnPj4wXT0xO2NbKGNbaj4+Ml18MCkrODA+PjJdPTIyNn1lbHNle2FbZz4+MF09MDtjWyhjW2o+PjJdfDApKzc2Pj4yXT0xODk7Y1soY1tqPj4yXXwwKSs4MD4+Ml09MjI3fWJbKGNbaj4+Ml18MCkrMTA+PjFdPWJbKGNbaz4+Ml18MCkrMjg+PjFdfDA7YlsoY1tqPj4yXXwwKSsxMj4+MV09YlsoY1trPj4yXXwwKSszMD4+MV18MH1lbHNle2lmKChjW2c+PjJdfDApPT0yKXthWyhjW2o+PjJdfDApKzI+PjBdPTA7YVsoY1tqPj4yXXwwKSszPj4wXT0wO2NbKGNbaj4+Ml18MCkrODA+PjJdPTIyODtiWyhjW2o+PjJdfDApKzEwPj4xXT1iWyhjW2s+PjJdfDApKzI0Pj4xXXwwO2JbKGNbaj4+Ml18MCkrMTI+PjFdPWJbKGNbaz4+Ml18MCkrMjY+PjFdfDA7YnJlYWt9Y1toPj4yXT1Raig1OTk2NCl8MDtrPWNbaD4+Ml18MDtpPWw7cmV0dXJuIGt8MH13aGlsZSgwKTthWyhjW2o+PjJdfDApKzc+PjBdPWFbKGNbaz4+Ml18MCkrMjE+PjBdfDA7Y1toPj4yXT0wO2s9Y1toPj4yXXwwO2k9bDtyZXR1cm4ga3wwfWZ1bmN0aW9uIFl0KGIsZil7Yj1ifDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MDtuPWk7aT1pKzMyfDA7Zz1uKzIwfDA7aD1uKzE2fDA7bT1uKzEyfDA7bD1uKzh8MDtrPW4rNHwwO2o9bjtjW2c+PjJdPWI7Y1toPj4yXT1mO2NbbT4+Ml09KGNbaD4+Ml18MCkrKGRbKGNbZz4+Ml18MCkrNj4+MF18MCk7Y1trPj4yXT1kW2NbbT4+Ml0+PjBdO2E6ZG8gaWYoKGNbaz4+Ml18MCk+Pj4wPj0xMjgpe2NbbD4+Ml09KGNbbT4+Ml18MCkrODtjW2s+PjJdPWNbaz4+Ml0mMTI3O2Rve2Y9Y1trPj4yXTw8NztiPShjW20+PjJdfDApKzF8MDtjW20+PjJdPWI7Y1trPj4yXT1mfGRbYj4+MF0mMTI3O2lmKChkW2NbbT4+Ml0+PjBdfDApPDEyOClicmVhayBhfXdoaWxlKChjW20+PjJdfDApPj4+MDwoY1tsPj4yXXwwKT4+PjApfXdoaWxlKDApO2NbbT4+Ml09KGNbbT4+Ml18MCkrMTtiOmRvIGlmKGFbKGNbZz4+Ml18MCkrMj4+MF18MCl7Y1tsPj4yXT0oY1ttPj4yXXwwKSs5O2Rve2I9Y1ttPj4yXXwwO2NbbT4+Ml09YisxO2lmKCEoZFtiPj4wXSYxMjgpKWJyZWFrIGJ9d2hpbGUoKGNbbT4+Ml18MCk+Pj4wPChjW2w+PjJdfDApPj4+MCl9d2hpbGUoMCk7aWYoKGNbaz4+Ml18MCk+Pj4wPD0oZVsoY1tnPj4yXXwwKSsxMD4+MV18MCk+Pj4wKXtiPShjW2s+PjJdfDApKygoY1ttPj4yXXwwKS0oY1toPj4yXXwwKSl8MDtjW2s+PjJdPWI7Y1trPj4yXT0oY1trPj4yXXwwKT4+PjA8ND80OmI7Yj1jW2s+PjJdfDA7Yj1iJjY1NTM1O2k9bjtyZXR1cm4gYnwwfWNbaj4+Ml09ZVsoY1tnPj4yXXwwKSsxMj4+MV07Y1trPj4yXT0oY1tqPj4yXXwwKSsoKCgoY1trPj4yXXwwKS0oY1tqPj4yXXwwKXwwKT4+PjApJSgoKGNbKGNbKGNbZz4+Ml18MCkrNTI+PjJdfDApKzM2Pj4yXXwwKS00fDApPj4+MCl8MCk7aWYoKGNbaz4+Ml18MCk+Pj4wPihlWyhjW2c+PjJdfDApKzEwPj4xXXwwKT4+PjApY1trPj4yXT1jW2o+PjJdO2Nbaz4+Ml09KGNbaz4+Ml18MCkrKDQrKChjW20+PjJdfDApLShjW2g+PjJdfDApJjY1NTM1KSk7Yj1jW2s+PjJdfDA7Yj1iJjY1NTM1O2k9bjtyZXR1cm4gYnwwfWZ1bmN0aW9uIFp0KGEsZixnKXthPWF8MDtmPWZ8MDtnPWd8MDt2YXIgaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTA7cT1pO2k9aSs0OHwwO2g9cSszMnwwO2o9cSsyOHwwO2s9cSsyNHwwO3A9cSsyMHwwO209cSsxNnwwO2w9cTtuPXErMTJ8MDtvPXErOHwwO2NbaD4+Ml09YTtjW2o+PjJdPWY7Y1trPj4yXT1nO2NbcD4+Ml09Y1tqPj4yXTtjW20+PjJdPWRbY1twPj4yXT4+MF07YTpkbyBpZigoY1ttPj4yXXwwKT4+PjA+PTEyOCl7Y1tuPj4yXT0oY1twPj4yXXwwKSs4O2NbbT4+Ml09Y1ttPj4yXSYxMjc7ZG97Zz1jW20+PjJdPDw3O2E9KGNbcD4+Ml18MCkrMXwwO2NbcD4+Ml09YTtjW20+PjJdPWd8KGRbYT4+MF18MCkmMTI3O2lmKChkW2NbcD4+Ml0+PjBdfDB8MCk8MTI4KWJyZWFrIGF9d2hpbGUoKGNbcD4+Ml18MCk+Pj4wPChjW24+PjJdfDApPj4+MCl9d2hpbGUoMCk7Y1twPj4yXT0oY1twPj4yXXwwKSsxO2E9bDtjW2E+PjJdPWRbY1twPj4yXT4+MF07Y1thKzQ+PjJdPTA7YT1sO2c9Y1thKzQ+PjJdfDA7YjpkbyBpZihnPj4+MD4wfChnfDApPT0wJihjW2E+PjJdfDApPj4+MD49MTI4KXtjW28+PjJdPShjW3A+PjJdfDApKzc7YT1sO2NbYT4+Ml09Y1tsPj4yXSYxMjc7Y1thKzQ+PjJdPTA7ZG97bj1sO249V1IoY1tuPj4yXXwwLGNbbis0Pj4yXXwwLDcpfDA7Zz0oY1twPj4yXXwwKSsxfDA7Y1twPj4yXT1nO2c9KGRbZz4+MF18MCkmMTI3O2E9bDtjW2E+PjJdPW58ZztjW2ErND4+Ml09Q3woKGd8MCk8MCk8PDMxPj4zMTtpZigoZFtjW3A+PjJdPj4wXXwwfDApPDEyOClicmVhayBifXdoaWxlKChjW3A+PjJdfDApPj4+MDwoY1tvPj4yXXwwKT4+PjApO289bDtvPVdSKGNbbz4+Ml18MCxjW28rND4+Ml18MCw4KXwwO2c9KGNbcD4+Ml18MCkrMXwwO2NbcD4+Ml09ZzthPWw7Y1thPj4yXT1vfChkW2c+PjBdfDApO2NbYSs0Pj4yXT1DfXdoaWxlKDApO2NbcD4+Ml09KGNbcD4+Ml18MCkrMTtvPWw7Zz1jW28rND4+Ml18MDthPWNbaz4+Ml18MDtjW2E+PjJdPWNbbz4+Ml07Y1thKzQ+PjJdPWc7Y1soY1trPj4yXXwwKSsxMj4+Ml09Y1ttPj4yXTtjWyhjW2s+PjJdfDApKzg+PjJdPWNbcD4+Ml07aWYoKGNbbT4+Ml18MCk+Pj4wPihlWyhjW2g+PjJdfDApKzEwPj4xXXwwKT4+PjApe2J1KGNbaD4+Ml18MCxjW2o+PjJdfDAsY1trPj4yXXwwKTtpPXE7cmV0dXJufWJbKGNbaz4+Ml18MCkrMTg+PjFdPShjW20+PjJdfDApKygoY1twPj4yXXwwKS0oY1tqPj4yXXwwKSY2NTUzNSk7aWYoKGVbKGNbaz4+Ml18MCkrMTg+PjFdfDB8MCk8NCliWyhjW2s+PjJdfDApKzE4Pj4xXT00O2JbKGNbaz4+Ml18MCkrMTY+PjFdPWNbbT4+Ml07aT1xO3JldHVybn1mdW5jdGlvbiBfdChhLGIpe2E9YXwwO2I9YnwwO3ZhciBlPTAsZj0wLGc9MCxoPTA7aD1pO2k9aSsxNnwwO2U9aCs4fDA7Zz1oKzR8MDtmPWg7Y1toKzEyPj4yXT1hO2NbZT4+Ml09YjtjW2c+PjJdPShjW2U+PjJdfDApKzQ7Y1tmPj4yXT0oY1tnPj4yXXwwKSs5O2Rve2E9Y1tnPj4yXXwwO2NbZz4+Ml09YSsxO2lmKCEoKGRbYT4+MF18MCkmMTI4KSlicmVha313aGlsZSgoY1tnPj4yXXwwKT4+PjA8KGNbZj4+Ml18MCk+Pj4wKTtpPWg7cmV0dXJuIChjW2c+PjJdfDApLShjW2U+PjJdfDApJjY1NTM1fDB9ZnVuY3Rpb24gJHQoYSxkLGUpe2E9YXwwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MDtmPWk7aT1pKzE2fDA7aD1mKzR8MDtnPWY7Y1tmKzg+PjJdPWE7Y1toPj4yXT1kO2NbZz4+Ml09ZTthPTQrKChjdSgoY1toPj4yXXwwKSs0fDAsY1tnPj4yXXwwKXwwKSYyNTUpJjY1NTM1O2JbKGNbZz4+Ml18MCkrMTg+PjFdPWE7Y1soY1tnPj4yXXwwKSsxMj4+Ml09MDtiWyhjW2c+PjJdfDApKzE2Pj4xXT0wO2NbKGNbZz4+Ml18MCkrOD4+Ml09MDtpPWY7cmV0dXJufWZ1bmN0aW9uIGF1KGEsZixnKXthPWF8MDtmPWZ8MDtnPWd8MDt2YXIgaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wO289aTtpPWkrMzJ8MDtoPW8rMjB8MDtqPW8rMTZ8MDtrPW8rMTJ8MDtuPW8rOHwwO2w9bys0fDA7bT1vO2NbaD4+Ml09YTtjW2o+PjJdPWY7Y1trPj4yXT1nO2Nbbj4+Ml09KGNbaj4+Ml18MCkrKGRbKGNbaD4+Ml18MCkrNj4+MF18MCk7Y1tsPj4yXT1kW2Nbbj4+Ml0+PjBdO2E6ZG8gaWYoKGNbbD4+Ml18MCk+Pj4wPj0xMjgpe2NbbT4+Ml09KGNbbj4+Ml18MCkrODtjW2w+PjJdPWNbbD4+Ml0mMTI3O2Rve2c9Y1tsPj4yXTw8NzthPShjW24+PjJdfDApKzF8MDtjW24+PjJdPWE7Y1tsPj4yXT1nfChkW2E+PjBdfDApJjEyNztpZigoZFtjW24+PjJdPj4wXXwwfDApPDEyOClicmVhayBhfXdoaWxlKChjW24+PjJdfDApPj4+MDwoY1ttPj4yXXwwKT4+PjApfXdoaWxlKDApO2Nbbj4+Ml09KGNbbj4+Ml18MCkrMTthPWNbaz4+Ml18MDtjW2E+PjJdPWNbbD4+Ml07Y1thKzQ+PjJdPTA7Y1soY1trPj4yXXwwKSsxMj4+Ml09Y1tsPj4yXTtjWyhjW2s+PjJdfDApKzg+PjJdPWNbbj4+Ml07aWYoKGNbbD4+Ml18MCk+Pj4wPihlWyhjW2g+PjJdfDApKzEwPj4xXXwwKT4+PjApe2J1KGNbaD4+Ml18MCxjW2o+PjJdfDAsY1trPj4yXXwwKTtpPW87cmV0dXJufWJbKGNbaz4+Ml18MCkrMTg+PjFdPShjW2w+PjJdfDApKygoY1tuPj4yXXwwKS0oY1tqPj4yXXwwKSY2NTUzNSk7aWYoKGVbKGNbaz4+Ml18MCkrMTg+PjFdfDB8MCk8NCliWyhjW2s+PjJdfDApKzE4Pj4xXT00O2JbKGNbaz4+Ml18MCkrMTY+PjFdPWNbbD4+Ml07aT1vO3JldHVybn1mdW5jdGlvbiBidShhLGQsZil7YT1hfDA7ZD1kfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MDtsPWk7aT1pKzMyfDA7bj1sKzIwfDA7Zz1sKzE2fDA7aD1sKzEyfDA7aj1sKzh8MDttPWwrNHwwO2s9bDtjW24+PjJdPWE7Y1tnPj4yXT1kO2NbaD4+Ml09ZjtjW2o+PjJdPWVbKGNbbj4+Ml18MCkrMTI+PjFdO2NbbT4+Ml09ZVsoY1tuPj4yXXwwKSsxMD4+MV07Y1trPj4yXT0oY1tqPj4yXXwwKSsoKCgoY1soY1toPj4yXXwwKSsxMj4+Ml18MCktKGNbaj4+Ml18MCl8MCk+Pj4wKSUoKChjWyhjWyhjW24+PjJdfDApKzUyPj4yXXwwKSszNj4+Ml18MCktNHwwKT4+PjApfDApO2lmKChjW2s+PjJdfDApPD0oY1ttPj4yXXwwKSliWyhjW2g+PjJdfDApKzE2Pj4xXT1jW2s+PjJdO2Vsc2UgYlsoY1toPj4yXXwwKSsxNj4+MV09Y1tqPj4yXTtiWyhjW2g+PjJdfDApKzE4Pj4xXT0oKGNbKGNbaD4+Ml18MCkrOD4+Ml18MCkrKGVbKGNbaD4+Ml18MCkrMTY+PjFdfDApLShjW2c+PjJdfDApJjY1NTM1KSs0O2k9bDtyZXR1cm59ZnVuY3Rpb24gY3UoYixlKXtiPWJ8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wO209aTtpPWkrMzJ8MDtmPW0rMjB8MDtnPW0rMTZ8MDtoPW0rMTJ8MDtqPW0rOHwwO2s9bSs0fDA7bD1tO2NbZz4+Ml09YjtjW2g+PjJdPWU7Y1tqPj4yXT1kW2NbZz4+Ml0+PjBdO2lmKCEoY1tqPj4yXSYxMjgpKXtsPWNbaD4+Ml18MDtjW2w+PjJdPWNbaj4+Ml07Y1tsKzQ+PjJdPTA7YVtmPj4wXT0xO2w9YVtmPj4wXXwwO2k9bTtyZXR1cm4gbHwwfWNbZz4+Ml09KGNbZz4+Ml18MCkrMTtjW2s+PjJdPWRbY1tnPj4yXT4+MF07aWYoIShjW2s+PjJdJjEyOCkpe2Nbaj4+Ml09Y1tqPj4yXSYxMjc7Y1tqPj4yXT1jW2o+PjJdPDw3O2Nbaj4+Ml09Y1tqPj4yXXxjW2s+PjJdO2w9Y1toPj4yXXwwO2NbbD4+Ml09Y1tqPj4yXTtjW2wrND4+Ml09MDthW2Y+PjBdPTI7bD1hW2Y+PjBdfDA7aT1tO3JldHVybiBsfDB9Y1tnPj4yXT0oY1tnPj4yXXwwKSsxO2Nbaj4+Ml09Y1tqPj4yXTw8MTQ7Y1tqPj4yXT1jW2o+PjJdfChkW2NbZz4+Ml0+PjBdfDApO2U9KGNbaj4+Ml0mMTI4fDApIT0wO2Nbaj4+Ml09Y1tqPj4yXSYyMDgwODk1O2lmKCFlKXtjW2s+PjJdPWNbaz4+Ml0mMTI3O2Nbaz4+Ml09Y1trPj4yXTw8NztjW2o+PjJdPWNbaj4+Ml18Y1trPj4yXTtsPWNbaD4+Ml18MDtjW2w+PjJdPWNbaj4+Ml07Y1tsKzQ+PjJdPTA7YVtmPj4wXT0zO2w9YVtmPj4wXXwwO2k9bTtyZXR1cm4gbHwwfWNbZz4+Ml09KGNbZz4+Ml18MCkrMTtjW2s+PjJdPWNbaz4+Ml08PDE0O2Nbaz4+Ml09Y1trPj4yXXwoZFtjW2c+PjJdPj4wXXwwKTtlPShjW2s+PjJdJjEyOHwwKSE9MDtjW2s+PjJdPWNbaz4+Ml0mMjA4MDg5NTtiPWNbaj4+Ml18MDtpZighZSl7Y1tqPj4yXT1iPDw3O2Nbaj4+Ml09Y1tqPj4yXXxjW2s+PjJdO2w9Y1toPj4yXXwwO2NbbD4+Ml09Y1tqPj4yXTtjW2wrND4+Ml09MDthW2Y+PjBdPTQ7bD1hW2Y+PjBdfDA7aT1tO3JldHVybiBsfDB9Y1tsPj4yXT1iO2NbZz4+Ml09KGNbZz4+Ml18MCkrMTtjW2o+PjJdPWNbaj4+Ml08PDE0O2Nbaj4+Ml09Y1tqPj4yXXwoZFtjW2c+PjJdPj4wXXwwKTtpZighKGNbaj4+Ml0mMTI4KSl7Y1trPj4yXT1jW2s+PjJdPDw3O2Nbaj4+Ml09Y1tqPj4yXXxjW2s+PjJdO2NbbD4+Ml09KGNbbD4+Ml18MCk+Pj4xODtrPWNbbD4+Ml18MDtsPWNbaD4+Ml18MDtjW2w+PjJdPWNbaj4+Ml07Y1tsKzQ+PjJdPWs7YVtmPj4wXT01O2w9YVtmPj4wXXwwO2k9bTtyZXR1cm4gbHwwfWNbbD4+Ml09Y1tsPj4yXTw8NztjW2w+PjJdPWNbbD4+Ml18Y1trPj4yXTtjW2c+PjJdPShjW2c+PjJdfDApKzE7Y1trPj4yXT1jW2s+PjJdPDwxNDtjW2s+PjJdPWNbaz4+Ml18KGRbY1tnPj4yXT4+MF18MCk7aWYoIShjW2s+PjJdJjEyOCkpe2Nbaj4+Ml09Y1tqPj4yXSYyMDgwODk1O2Nbaj4+Ml09Y1tqPj4yXTw8NztjW2o+PjJdPWNbaj4+Ml18Y1trPj4yXTtjW2w+PjJdPShjW2w+PjJdfDApPj4+MTg7az1jW2w+PjJdfDA7bD1jW2g+PjJdfDA7Y1tsPj4yXT1jW2o+PjJdO2NbbCs0Pj4yXT1rO2FbZj4+MF09NjtsPWFbZj4+MF18MDtpPW07cmV0dXJuIGx8MH1jW2c+PjJdPShjW2c+PjJdfDApKzE7Y1tqPj4yXT1jW2o+PjJdPDwxNDtjW2o+PjJdPWNbaj4+Ml18KGRbY1tnPj4yXT4+MF18MCk7Yj1jW2o+PjJdfDA7aWYoIShjW2o+PjJdJjEyOCkpe2Nbaj4+Ml09YiYtMjY2MzU0NTYxO2Nbaz4+Ml09Y1trPj4yXSYyMDgwODk1O2Nbaz4+Ml09Y1trPj4yXTw8NztjW2o+PjJdPWNbaj4+Ml18Y1trPj4yXTtjW2w+PjJdPShjW2w+PjJdfDApPj4+MTE7az1jW2w+PjJdfDA7bD1jW2g+PjJdfDA7Y1tsPj4yXT1jW2o+PjJdO2NbbCs0Pj4yXT1rO2FbZj4+MF09NztsPWFbZj4+MF18MDtpPW07cmV0dXJuIGx8MH1jW2o+PjJdPWImMjA4MDg5NTtjW2c+PjJdPShjW2c+PjJdfDApKzE7Y1trPj4yXT1jW2s+PjJdPDwxNDtjW2s+PjJdPWNbaz4+Ml18KGRbY1tnPj4yXT4+MF18MCk7aWYoY1trPj4yXSYxMjgpe2NbZz4+Ml09KGNbZz4+Ml18MCkrMTtjW2o+PjJdPWNbaj4+Ml08PDE1O2Nbaj4+Ml09Y1tqPj4yXXwoZFtjW2c+PjJdPj4wXXwwKTtjW2s+PjJdPWNbaz4+Ml0mMjA4MDg5NTtjW2s+PjJdPWNbaz4+Ml08PDg7Y1tqPj4yXT1jW2o+PjJdfGNbaz4+Ml07Y1tsPj4yXT1jW2w+PjJdPDw0O2Nbaz4+Ml09ZFsoY1tnPj4yXXwwKSstND4+MF07Y1trPj4yXT1jW2s+PjJdJjEyNztjW2s+PjJdPShjW2s+PjJdfDApPj4+MztjW2w+PjJdPWNbbD4+Ml18Y1trPj4yXTtrPWNbbD4+Ml18MDtsPWNbaD4+Ml18MDtjW2w+PjJdPWNbaj4+Ml07Y1tsKzQ+PjJdPWs7YVtmPj4wXT05O2w9YVtmPj4wXXwwO2k9bTtyZXR1cm4gbHwwfWVsc2V7Y1trPj4yXT1jW2s+PjJdJi0yNjYzNTQ1NjE7Y1tqPj4yXT1jW2o+PjJdPDw3O2Nbaj4+Ml09Y1tqPj4yXXxjW2s+PjJdO2NbbD4+Ml09KGNbbD4+Ml18MCk+Pj40O2s9Y1tsPj4yXXwwO2w9Y1toPj4yXXwwO2NbbD4+Ml09Y1tqPj4yXTtjW2wrND4+Ml09azthW2Y+PjBdPTg7bD1hW2Y+PjBdfDA7aT1tO3JldHVybiBsfDB9cmV0dXJuIDB9ZnVuY3Rpb24gZHUoYixkKXtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTA7Zz1pO2k9aSsxNnwwO2U9Zys0fDA7Zj1nO2NbZT4+Ml09YjtjW2Y+PjJdPWQ7d2hpbGUoMSl7aWYoKGNbZj4+Ml18MCk+MCliPShhWyhjW2U+PjJdfDApKygoY1tmPj4yXXwwKS0xKT4+MF18MCk9PTMyO2Vsc2UgYj0wO2Q9Y1tmPj4yXXwwO2lmKCFiKWJyZWFrO2NbZj4+Ml09ZCstMX1pPWc7cmV0dXJuIChkfDApPT0wfDB9ZnVuY3Rpb24gZXUoYSxiLGUsZil7YT1hfDA7Yj1ifDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MDtuPWk7aT1pKzMyfDA7Zz1uKzIwfDA7aD1uKzE2fDA7aj1uKzEyfDA7az1uKzh8MDttPW4rNHwwO2w9bjtjW2c+PjJdPWE7Y1toPj4yXT1iO2Nbaj4+Ml09ZTtjW2s+PjJdPWY7Y1ttPj4yXT0wO2lmKCEoY1tnPj4yXXwwKSl7bT1jW20+PjJdfDA7aT1uO3JldHVybiBtfDB9Y1tsPj4yXT1jWyhjW2c+PjJdfDApKzQ+PjJdO21nKGNbZz4+Ml18MCk7aWYoZFsoY1tsPj4yXXwwKSsyMD4+MF18MCl7Y1ttPj4yXT02O209Y1ttPj4yXXwwO2k9bjtyZXR1cm4gbXwwfWVsc2V7Y1ttPj4yXT1mdShjW2NbbD4+Ml0+PjJdfDAsY1toPj4yXXwwLGNbaj4+Ml18MCxjW2s+PjJdfDApfDA7bT1jW20+PjJdfDA7aT1uO3JldHVybiBtfDB9cmV0dXJuIDB9ZnVuY3Rpb24gZnUoYSxiLGUsZil7YT1hfDA7Yj1ifDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wO209aTtpPWkrMzJ8MDtnPW0rMTZ8MDtoPW0rMTJ8MDtqPW0rOHwwO2s9bSs0fDA7bD1tO2NbZz4+Ml09YTtjW2g+PjJdPWI7Y1tqPj4yXT1lO2Nbaz4+Ml09ZjtjW2w+PjJdPTA7aWYoIShjWyhjW2c+PjJdfDApKzIxNj4+Ml18MCkpe2w9Y1tsPj4yXXwwO2k9bTtyZXR1cm4gbHwwfWlmKCEoY1toPj4yXXwwKSliPTA7ZWxzZSBiPWNbKGNbZz4+Ml18MCkrMTg0Pj4yXXwwO2NbbD4+Ml09U3MoY1soY1tnPj4yXXwwKSsyMTY+PjJdfDAsY1toPj4yXXwwLGIsY1soY1tnPj4yXXwwKSsxODg+PjJdfDAsZFsoY1tnPj4yXXwwKSsxMD4+MF18MCxjWyhjW2c+PjJdfDApKzE2MD4+Ml18MCxjWyhjW2c+PjJdfDApKzIwOD4+Ml18MCxjW2o+PjJdfDAsY1trPj4yXXwwKXwwO2w9Y1tsPj4yXXwwO2k9bTtyZXR1cm4gbHwwfWZ1bmN0aW9uIGd1KGIsZixnKXtiPWJ8MDtmPWZ8MDtnPWd8MDt2YXIgaD0wLGo9MCxrPTAsbD0wLG09MCxuPTA7bj1pO2k9aSszMnwwO2g9bisxMnwwO2o9bis4fDA7az1uKzR8MDtsPW4rMTZ8MDttPW47Y1tqPj4yXT1iO2Nbaz4+Ml09ZjthW2w+PjBdPWc7Zz1jW2o+PjJdfDA7aWYoKGNbaz4+Ml18MCk9PS0yKXtjW2g+PjJdPShjW2crMTI+PjJdfDApPT0wPzA6NjttPWNbaD4+Ml18MDtpPW47cmV0dXJuIG18MH1pZigoYVtnPj4wXXwwKSE9KGNbaz4+Ml18MCk/KGFbY1tqPj4yXT4+MF18MCk+PTA6MCl7Y1toPj4yXT0wO209Y1toPj4yXXwwO2k9bjtyZXR1cm4gbXwwfWlmKChhW2Nbaj4+Ml0+PjBdfDApPT0oY1trPj4yXXwwKSljW20+PjJdPTQ7ZWxzZSBjW20+PjJdPTE7aWYoKGRbbD4+MF18MCkhPShlWyhjW2o+PjJdfDApKzI+PjFdJjN8MCkpe2lmKGRbbD4+MF0mZVsoY1tqPj4yXXwwKSsyPj4xXSYyKWNbbT4+Ml09KGNbbT4+Ml18MCkrMX1lbHNlIGNbbT4+Ml09KGNbbT4+Ml18MCkrMjtjW2g+PjJdPWNbbT4+Ml07bT1jW2g+PjJdfDA7aT1uO3JldHVybiBtfDB9ZnVuY3Rpb24gaHUoYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MDtnPWk7aT1pKzE2fDA7Zj1nKzEyfDA7aD1nKzh8MDtkPWcrNHwwO2U9ZztjW2g+PjJdPWE7Y1tkPj4yXT1iO2NbZT4+Ml09Y1sxMDkyKyhjW2g+PjJdPDwyKT4+Ml07d2hpbGUoMSl7aWYoIShjW2U+PjJdfDApKXthPTY7YnJlYWt9aD0oaWcoY1soY1tlPj4yXXwwKSsyMD4+Ml18MCxjW2Q+PjJdfDApfDApPT0wO2I9Y1tlPj4yXXwwO2lmKGgpe2E9NDticmVha31jW2U+PjJdPWNbYisyND4+Ml19aWYoKGF8MCk9PTQpe2NbZj4+Ml09YjtoPWNbZj4+Ml18MDtpPWc7cmV0dXJuIGh8MH1lbHNlIGlmKChhfDApPT02KXtjW2Y+PjJdPTA7aD1jW2Y+PjJdfDA7aT1nO3JldHVybiBofDB9cmV0dXJuIDB9ZnVuY3Rpb24gaXUoYSxiKXthPWF8MDtiPWJ8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MDtrPWk7aT1pKzE2fDA7Zj1rKzEyfDA7Zz1rKzh8MDtoPWsrNHwwO2o9aztjW2c+PjJdPWE7Y1toPj4yXT1iO2lmKCgoZVsoY1tnPj4yXXwwKSs4Pj4xXXwwKSYyfDApIT0wPyhkWyhjW2c+PjJdfDApKzEwPj4wXXwwfDApIT0oY1toPj4yXXwwKTowKXtjW2o+PjJdPWp1KGNbZz4+Ml18MCxjW2g+PjJdJjI1NSl8MDtjW2Y+PjJdPWNbaj4+Ml07aj1jW2Y+PjJdfDA7aT1rO3JldHVybiBqfDB9Y1tmPj4yXT0wO2o9Y1tmPj4yXXwwO2k9aztyZXR1cm4ganwwfWZ1bmN0aW9uIGp1KGYsZyl7Zj1mfDA7Zz1nfDA7dmFyIGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTA7dj1pO2k9aSs0OHwwO249dis0MHwwO289diszNnwwO3A9dis0NXwwO2s9diszMnwwO3Q9disyOHwwO3M9disyNHwwO3U9disyMHwwO3I9disxNnwwO3E9disxMnwwO2o9dis0NHwwO2g9dis4fDA7bD12KzR8MDttPXY7Y1tvPj4yXT1mO2FbcD4+MF09ZztpZigoZFsoY1tvPj4yXXwwKSsxMD4+MF18MHwwKSE9MT8oZFtwPj4wXXwwfDApIT0xOjApe2NbaD4+Ml09YmgoY1tvPj4yXXwwKXwwO2lmKGNbaD4+Ml18MCl7Y1tuPj4yXT03O3U9Y1tuPj4yXXwwO2k9djtyZXR1cm4gdXwwfWNbcz4+Ml09Y1soY1tvPj4yXXwwKSsxNj4+Ml07Y1t1Pj4yXT0oY1tzPj4yXXwwKSsoY1soY1tvPj4yXXwwKSsxMj4+Ml0mLTIpO3doaWxlKDEpe2lmKChjW3M+PjJdfDApPj4+MD49KGNbdT4+Ml18MCk+Pj4wKWJyZWFrO2Fbaj4+MF09YVtjW3M+PjJdPj4wXXwwO2FbY1tzPj4yXT4+MF09YVsoY1tzPj4yXXwwKSsxPj4wXXwwO2Nbcz4+Ml09KGNbcz4+Ml18MCkrMTtyPWFbaj4+MF18MDt0PWNbcz4+Ml18MDtjW3M+PjJdPXQrMTthW3Q+PjBdPXJ9YVsoY1tvPj4yXXwwKSsxMD4+MF09YVtwPj4wXXwwfWVsc2V7Zz0oY1tvPj4yXXwwKSsxMnwwO2Y9Y1tnPj4yXXwwO2lmKChkW3A+PjBdfDB8MCk9PTEpe2NbZz4+Ml09ZiYtMjtjW2s+PjJdPShjWyhjW28+PjJdfDApKzEyPj4yXTw8MSkrMX1lbHNlIGNbaz4+Ml09KGY8PDEpKzI7Y1tzPj4yXT1jWyhjW28+PjJdfDApKzE2Pj4yXTtjW3U+PjJdPShjW3M+PjJdfDApKyhjWyhjW28+PjJdfDApKzEyPj4yXXwwKTtrPWNbaz4+Ml18MDtjW3Q+PjJdPUNoKGNbKGNbbz4+Ml18MCkrMzI+PjJdfDAsaywoKGt8MCk8MCk8PDMxPj4zMSl8MDtpZighKGNbdD4+Ml18MCkpe2Nbbj4+Ml09Nzt1PWNbbj4+Ml18MDtpPXY7cmV0dXJuIHV8MH1jW3I+PjJdPWNbdD4+Ml07aWYoKGRbKGNbbz4+Ml18MCkrMTA+PjBdfDB8MCk9PTEpe2E6ZG8gaWYoKGRbcD4+MF18MHwwKT09Mil3aGlsZSgxKXtpZigoY1tzPj4yXXwwKT4+PjA+PShjW3U+PjJdfDApPj4+MClicmVhayBhO209Y1tzPj4yXXwwO2Nbcz4+Ml09bSsxO2NbcT4+Ml09ZFttPj4wXTtkbyBpZigoY1txPj4yXXwwKT4+PjA+PTE5Mil7Y1txPj4yXT1kWzI1NTYzKygoY1txPj4yXXwwKS0xOTIpPj4wXTt3aGlsZSgxKXtpZigoY1tzPj4yXXwwKSE9KGNbdT4+Ml18MCkpZj0oKGRbY1tzPj4yXT4+MF18MCkmMTkyfDApPT0xMjg7ZWxzZSBmPTA7Zz1jW3E+PjJdfDA7aWYoIWYpYnJlYWs7bT1jW3M+PjJdfDA7Y1tzPj4yXT1tKzE7Y1txPj4yXT0oZzw8NikrKDYzJihkW20+PjBdfDApKX1pZigoZz4+PjA+PTEyOD8oY1txPj4yXSYtMjA0OHwwKSE9NTUyOTY6MCk/KGNbcT4+Ml0mLTJ8MCkhPTY1NTM0OjApYnJlYWs7Y1txPj4yXT02NTUzM313aGlsZSgwKTtnPWNbcT4+Ml18MDtpZigoY1txPj4yXXwwKT4+PjA8PTY1NTM1KXtsPWNbcj4+Ml18MDtjW3I+PjJdPWwrMTthW2w+PjBdPWc7bD0oY1txPj4yXXwwKT4+PjgmMjU1O209Y1tyPj4yXXwwO2Nbcj4+Ml09bSsxO2FbbT4+MF09bDtjb250aW51ZX1lbHNle209KGc+Pj4xMCY2MykrKCgoY1txPj4yXXwwKS02NTUzNnwwKT4+PjEwJjE5MikmMjU1O2w9Y1tyPj4yXXwwO2Nbcj4+Ml09bCsxO2FbbD4+MF09bTtsPTIxNisoKChjW3E+PjJdfDApLTY1NTM2fDApPj4+MTgmMykmMjU1O209Y1tyPj4yXXwwO2Nbcj4+Ml09bSsxO2FbbT4+MF09bDttPWNbcT4+Ml0mMjU1O2w9Y1tyPj4yXXwwO2Nbcj4+Ml09bCsxO2FbbD4+MF09bTtsPTIyMCsoKGNbcT4+Ml18MCk+Pj44JjMpJjI1NTttPWNbcj4+Ml18MDtjW3I+PjJdPW0rMTthW20+PjBdPWw7Y29udGludWV9fWVsc2Ugd2hpbGUoMSl7aWYoKGNbcz4+Ml18MCk+Pj4wPj0oY1t1Pj4yXXwwKT4+PjApYnJlYWsgYTttPWNbcz4+Ml18MDtjW3M+PjJdPW0rMTtjW3E+PjJdPWRbbT4+MF07ZG8gaWYoKGNbcT4+Ml18MCk+Pj4wPj0xOTIpe2NbcT4+Ml09ZFsyNTU2MysoKGNbcT4+Ml18MCktMTkyKT4+MF07d2hpbGUoMSl7aWYoKGNbcz4+Ml18MCkhPShjW3U+PjJdfDApKWY9KChkW2Nbcz4+Ml0+PjBdfDApJjE5MnwwKT09MTI4O2Vsc2UgZj0wO2c9Y1txPj4yXXwwO2lmKCFmKWJyZWFrO209Y1tzPj4yXXwwO2Nbcz4+Ml09bSsxO2NbcT4+Ml09KGc8PDYpKyg2MyYoZFttPj4wXXwwKSl9aWYoKGc+Pj4wPj0xMjg/KGNbcT4+Ml0mLTIwNDh8MCkhPTU1Mjk2OjApPyhjW3E+PjJdJi0yfDApIT02NTUzNDowKWJyZWFrO2NbcT4+Ml09NjU1MzN9d2hpbGUoMCk7Zz1jW3E+PjJdfDA7aWYoKGNbcT4+Ml18MCk+Pj4wPD02NTUzNSl7bD1jW3I+PjJdfDA7Y1tyPj4yXT1sKzE7YVtsPj4wXT1nPj4+ODtsPWNbcT4+Ml0mMjU1O209Y1tyPj4yXXwwO2Nbcj4+Ml09bSsxO2FbbT4+MF09bDtjb250aW51ZX1lbHNle2w9Y1tyPj4yXXwwO2Nbcj4+Ml09bCsxO2FbbD4+MF09MjE2KygoZy02NTUzNnwwKT4+PjE4JjMpO2w9KChjW3E+PjJdfDApPj4+MTAmNjMpKygoKGNbcT4+Ml18MCktNjU1MzZ8MCk+Pj4xMCYxOTIpJjI1NTttPWNbcj4+Ml18MDtjW3I+PjJdPW0rMTthW20+PjBdPWw7bT0yMjArKChjW3E+PjJdfDApPj4+OCYzKSYyNTU7bD1jW3I+PjJdfDA7Y1tyPj4yXT1sKzE7YVtsPj4wXT1tO2w9Y1txPj4yXSYyNTU7bT1jW3I+PjJdfDA7Y1tyPj4yXT1tKzE7YVttPj4wXT1sO2NvbnRpbnVlfX13aGlsZSgwKTtjWyhjW28+PjJdfDApKzEyPj4yXT0oY1tyPj4yXXwwKS0oY1t0Pj4yXXwwKTt1PWNbcj4+Ml18MDtjW3I+PjJdPXUrMTthW3U+PjBdPTB9ZWxzZXtiOmRvIGlmKChkWyhjW28+PjJdfDApKzEwPj4wXXwwfDApPT0yKXdoaWxlKDEpe2lmKChjW3M+PjJdfDApPj4+MD49KGNbdT4+Ml18MCk+Pj4wKWJyZWFrIGI7bT1jW3M+PjJdfDA7Y1tzPj4yXT1tKzE7Y1txPj4yXT1kW20+PjBdO209Y1tzPj4yXXwwO2Nbcz4+Ml09bSsxO2NbcT4+Ml09KGNbcT4+Ml18MCkrKChkW20+PjBdfDApPDw4KTtpZigoY1txPj4yXXwwKT4+PjA+PTU1Mjk2JihjW3E+PjJdfDApPj4+MDw1NzM0ND8oY1tzPj4yXXwwKT4+PjA8KGNbdT4+Ml18MCk+Pj4wOjApe209Y1tzPj4yXXwwO2Nbcz4+Ml09bSsxO2NbbD4+Ml09ZFttPj4wXTttPWNbcz4+Ml18MDtjW3M+PjJdPW0rMTtjW2w+PjJdPShjW2w+PjJdfDApKygoZFttPj4wXXwwKTw8OCk7Y1txPj4yXT0oY1tsPj4yXSYxMDIzKSsoKGNbcT4+Ml0mNjMpPDwxMCkrKChjW3E+PjJdJjk2MCkrNjQ8PDEwKX1nPWNbcT4+Ml18MDtpZigoY1txPj4yXXwwKT4+PjA8MTI4KXttPWNbcj4+Ml18MDtjW3I+PjJdPW0rMTthW20+PjBdPWc7Y29udGludWV9Zj1jW3E+PjJdfDA7aWYoZz4+PjA8MjA0OCl7az1jW3I+PjJdfDA7Y1tyPj4yXT1rKzE7YVtrPj4wXT0xOTIrKGY+Pj42JjMxKTtrPTEyOCsoY1txPj4yXSY2MykmMjU1O209Y1tyPj4yXXwwO2Nbcj4+Ml09bSsxO2FbbT4+MF09aztjb250aW51ZX1nPWNbcT4+Ml18MDtpZihmPj4+MDw2NTUzNil7bT1jW3I+PjJdfDA7Y1tyPj4yXT1tKzE7YVttPj4wXT0yMjQrKGc+Pj4xMiYxNSk7bT0xMjgrKChjW3E+PjJdfDApPj4+NiY2MykmMjU1O2s9Y1tyPj4yXXwwO2Nbcj4+Ml09aysxO2Fbaz4+MF09bTtrPTEyOCsoY1txPj4yXSY2MykmMjU1O209Y1tyPj4yXXwwO2Nbcj4+Ml09bSsxO2FbbT4+MF09aztjb250aW51ZX1lbHNle2s9Y1tyPj4yXXwwO2Nbcj4+Ml09aysxO2Fbaz4+MF09MjQwKyhnPj4+MTgmNyk7az0xMjgrKChjW3E+PjJdfDApPj4+MTImNjMpJjI1NTttPWNbcj4+Ml18MDtjW3I+PjJdPW0rMTthW20+PjBdPWs7bT0xMjgrKChjW3E+PjJdfDApPj4+NiY2MykmMjU1O2s9Y1tyPj4yXXwwO2Nbcj4+Ml09aysxO2Fbaz4+MF09bTtrPTEyOCsoY1txPj4yXSY2MykmMjU1O209Y1tyPj4yXXwwO2Nbcj4+Ml09bSsxO2FbbT4+MF09aztjb250aW51ZX19ZWxzZSB3aGlsZSgxKXtpZigoY1tzPj4yXXwwKT4+PjA+PShjW3U+PjJdfDApPj4+MClicmVhayBiO2w9Y1tzPj4yXXwwO2Nbcz4+Ml09bCsxO2NbcT4+Ml09KGRbbD4+MF18MCk8PDg7bD1jW3M+PjJdfDA7Y1tzPj4yXT1sKzE7Y1txPj4yXT0oY1txPj4yXXwwKSsoZFtsPj4wXXwwKTtpZigoY1txPj4yXXwwKT4+PjA+PTU1Mjk2JihjW3E+PjJdfDApPj4+MDw1NzM0ND8oY1tzPj4yXXwwKT4+PjA8KGNbdT4+Ml18MCk+Pj4wOjApe2w9Y1tzPj4yXXwwO2Nbcz4+Ml09bCsxO2NbbT4+Ml09KGRbbD4+MF18MCk8PDg7bD1jW3M+PjJdfDA7Y1tzPj4yXT1sKzE7Y1ttPj4yXT0oY1ttPj4yXXwwKSsoZFtsPj4wXXwwKTtjW3E+PjJdPShjW20+PjJdJjEwMjMpKygoY1txPj4yXSY2Myk8PDEwKSsoKGNbcT4+Ml0mOTYwKSs2NDw8MTApfWc9Y1txPj4yXXwwO2lmKChjW3E+PjJdfDApPj4+MDwxMjgpe2w9Y1tyPj4yXXwwO2Nbcj4+Ml09bCsxO2FbbD4+MF09Zztjb250aW51ZX1mPWNbcT4+Ml18MDtpZihnPj4+MDwyMDQ4KXtrPWNbcj4+Ml18MDtjW3I+PjJdPWsrMTthW2s+PjBdPTE5MisoZj4+PjYmMzEpO2s9MTI4KyhjW3E+PjJdJjYzKSYyNTU7bD1jW3I+PjJdfDA7Y1tyPj4yXT1sKzE7YVtsPj4wXT1rO2NvbnRpbnVlfWc9Y1txPj4yXXwwO2lmKGY+Pj4wPDY1NTM2KXtsPWNbcj4+Ml18MDtjW3I+PjJdPWwrMTthW2w+PjBdPTIyNCsoZz4+PjEyJjE1KTtsPTEyOCsoKGNbcT4+Ml18MCk+Pj42JjYzKSYyNTU7az1jW3I+PjJdfDA7Y1tyPj4yXT1rKzE7YVtrPj4wXT1sO2s9MTI4KyhjW3E+PjJdJjYzKSYyNTU7bD1jW3I+PjJdfDA7Y1tyPj4yXT1sKzE7YVtsPj4wXT1rO2NvbnRpbnVlfWVsc2V7az1jW3I+PjJdfDA7Y1tyPj4yXT1rKzE7YVtrPj4wXT0yNDArKGc+Pj4xOCY3KTtrPTEyOCsoKGNbcT4+Ml18MCk+Pj4xMiY2MykmMjU1O2w9Y1tyPj4yXXwwO2Nbcj4+Ml09bCsxO2FbbD4+MF09aztsPTEyOCsoKGNbcT4+Ml18MCk+Pj42JjYzKSYyNTU7az1jW3I+PjJdfDA7Y1tyPj4yXT1rKzE7YVtrPj4wXT1sO2s9MTI4KyhjW3E+PjJdJjYzKSYyNTU7bD1jW3I+PjJdfDA7Y1tyPj4yXT1sKzE7YVtsPj4wXT1rO2NvbnRpbnVlfX13aGlsZSgwKTtjWyhjW28+PjJdfDApKzEyPj4yXT0oY1tyPj4yXXwwKS0oY1t0Pj4yXXwwKX1hW2Nbcj4+Ml0+PjBdPTA7Y1txPj4yXT1lWyhjW28+PjJdfDApKzg+PjFdO1hnKGNbbz4+Ml18MCk7YlsoY1tvPj4yXXwwKSs4Pj4xXT01MTR8Y1txPj4yXSYzMjc5OTthWyhjW28+PjJdfDApKzEwPj4wXT1hW3A+PjBdfDA7Y1soY1tvPj4yXXwwKSsxNj4+Ml09Y1t0Pj4yXTtjWyhjW28+PjJdfDApKzIwPj4yXT1jWyhjW28+PjJdfDApKzE2Pj4yXTt1PWt1KGNbKGNbbz4+Ml18MCkrMzI+PjJdfDAsY1soY1tvPj4yXXwwKSsxNj4+Ml18MCl8MDtjWyhjW28+PjJdfDApKzI0Pj4yXT11fWNbbj4+Ml09MDt1PWNbbj4+Ml18MDtpPXY7cmV0dXJuIHV8MH1mdW5jdGlvbiBrdShhLGIpe2E9YXwwO2I9YnwwO3ZhciBkPTAsZj0wLGc9MCxoPTA7aD1pO2k9aSsxNnwwO2Q9aCs4fDA7Zj1oKzR8MDtnPWg7Y1tmPj4yXT1hO2NbZz4+Ml09YjtpZigoY1tmPj4yXXwwKSE9MD8obHUoY1tmPj4yXXwwLGNbZz4+Ml18MCl8MCkhPTA6MCl7Y1tkPj4yXT1lWyhjW2Y+PjJdfDApKzI1Nis0Pj4xXTtiPWNbZD4+Ml18MDtpPWg7cmV0dXJuIGJ8MH1jW2Q+PjJdPVRiW2NbNjA+PjJdJjI1NV0oY1tnPj4yXXwwKXwwO2I9Y1tkPj4yXXwwO2k9aDtyZXR1cm4gYnwwfWZ1bmN0aW9uIGx1KGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wO2Y9aTtpPWkrMTZ8MDtkPWYrNHwwO2U9ZjtjW2Q+PjJdPWE7Y1tlPj4yXT1iO2lmKChjW2U+PjJdfDApPj4+MDwoY1soY1tkPj4yXXwwKSsyNTYrMzI+PjJdfDApPj4+MCl7Yj0wO2I9YiYxO2k9ZjtyZXR1cm4gYnwwfWI9KGNbZT4+Ml18MCk+Pj4wPChjWyhjW2Q+PjJdfDApKzI1NiszNj4+Ml18MCk+Pj4wO2I9YiYxO2k9ZjtyZXR1cm4gYnwwfWZ1bmN0aW9uIG11KGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MDtmPWk7aT1pKzE2fDA7ZD1mKzh8MDtnPWYrNHwwO2U9ZjtjW2Q+PjJdPWE7Y1tnPj4yXT1iO2NbZT4+Ml09Y1soY1tnPj4yXXwwKSsyND4+Ml07aWYoIShjW2U+PjJdfDApKXtpPWY7cmV0dXJufWc9Y1tlPj4yXXwwO2NbZz4+Ml09KGNbZz4+Ml18MCkrLTE7aWYoY1tjW2U+PjJdPj4yXXwwKXtpPWY7cmV0dXJufVFiW2NbKGNbZT4+Ml18MCkrND4+Ml0mMjU1XShjWyhjW2U+PjJdfDApKzg+PjJdfDApO1RmKGNbZD4+Ml18MCxjW2U+PjJdfDApO2k9ZjtyZXR1cm59ZnVuY3Rpb24gbnUoYSl7YT1hfDA7dmFyIGI9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MDtrPWk7aT1pKzMyfDA7Yj1rKzIwfDA7ZT1rKzE2fDA7Zj1rKzEyfDA7aD1rKzh8MDtqPWsrNHwwO2c9aztjW2I+PjJdPWE7T2YoY1tiPj4yXXwwKTtjW2U+PjJdPTA7d2hpbGUoMSl7aWYoKGNbZT4+Ml18MCk+PShjWyhjW2I+PjJdfDApKzIwPj4yXXwwKSlicmVhaztjW2g+PjJdPWNbKGNbKGNbYj4+Ml18MCkrMTY+PjJdfDApKyhjW2U+PjJdPDw0KSsxMj4+Ml07YTpkbyBpZihjWyhjWyhjW2I+PjJdfDApKzE2Pj4yXXwwKSsoY1tlPj4yXTw8NCkrMTI+PjJdfDApe2NbZj4+Ml09Y1soY1toPj4yXXwwKSs4Kzg+PjJdO3doaWxlKDEpe2lmKCEoY1tmPj4yXXwwKSlicmVhayBhO2Nbaj4+Ml09Y1soY1tmPj4yXXwwKSs4Pj4yXTtpZigoZFsoY1tqPj4yXXwwKSs0Mj4+MF18MCkmMTYpdHUoY1tiPj4yXXwwLGNbaj4+Ml18MCk7Y1tmPj4yXT1jW2NbZj4+Ml0+PjJdfX13aGlsZSgwKTtjW2U+PjJdPShjW2U+PjJdfDApKzF9Y1tmPj4yXT1jWyhjW2I+PjJdfDApKzMyMCs4Pj4yXTt3aGlsZSgxKXtpZighKGNbZj4+Ml18MCkpYnJlYWs7Y1tnPj4yXT1jWyhjW2Y+PjJdfDApKzg+PjJdO2lmKGNbKGNbZz4+Ml18MCkrMTY+PjJdfDApdHUoY1tiPj4yXXwwLGNbKGNbZz4+Ml18MCkrMTY+PjJdfDApO2NbZj4+Ml09Y1tjW2Y+PjJdPj4yXX11dShjW2I+PjJdfDApO2k9aztyZXR1cm59ZnVuY3Rpb24gb3UoYSl7YT1hfDA7dmFyIGI9MCxkPTA7Yj1pO2k9aSsxNnwwO2Q9YjtjW2Q+PjJdPWE7cnUoY1tkPj4yXXwwLDY4KTtpPWI7cmV0dXJuIDB9XG5mdW5jdGlvbiB2SihhLGIsZCxlKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wO249aTtpPWkrNDh8MDtwPW4rMzJ8MDtvPW4rMjh8MDtmPW4rMjR8MDtnPW4rMjB8MDtqPW4rMTZ8MDtrPW4rMTJ8MDtoPW4rOHwwO209bis0fDA7bD1uO2NbcD4+Ml09YTtjW28+PjJdPWI7Y1tmPj4yXT1kO2NbZz4+Ml09ZTtjW2g+PjJdPShjWyhjW3A+PjJdfDApKzE2Pj4yXXwwKSsoY1tvPj4yXTw8NCk7Y1trPj4yXT0oY1soY1toPj4yXXwwKSsxMj4+Ml18MCkrODtjW2o+PjJdPWNbKGNbaz4+Ml18MCkrOD4+Ml07d2hpbGUoMSl7aWYoIShjW2o+PjJdfDApKWJyZWFrO2NbbT4+Ml09Y1soY1tqPj4yXXwwKSs4Pj4yXTtpZigoY1soY1ttPj4yXXwwKSsyOD4+Ml18MCk9PShjW2Y+PjJdfDApKWNbKGNbbT4+Ml18MCkrMjg+PjJdPWNbZz4+Ml07Y1tqPj4yXT1jW2Nbaj4+Ml0+PjJdfWNbaz4+Ml09KGNbKGNbaD4+Ml18MCkrMTI+PjJdfDApKzI0O2Nbaj4+Ml09Y1soY1trPj4yXXwwKSs4Pj4yXTt3aGlsZSgxKXtpZighKGNbaj4+Ml18MCkpYnJlYWs7Y1tsPj4yXT1jWyhjW2o+PjJdfDApKzg+PjJdO2lmKChjWyhjW2w+PjJdfDApKzQ0Pj4yXXwwKT09KGNbZj4+Ml18MCkpY1soY1tsPj4yXXwwKSs0ND4+Ml09Y1tnPj4yXTtjW2o+PjJdPWNbY1tqPj4yXT4+Ml19aT1uO3JldHVybn1mdW5jdGlvbiB3SihhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wO2s9aTtpPWkrMzJ8MDtlPWsrMTZ8MDtmPWsrMTJ8MDtnPWsrOHwwO2o9ays0fDA7aD1rO2NbZT4+Ml09YTtjW2Y+PjJdPWI7Y1tnPj4yXT1kO2NbaD4+Ml09Y1soY1tlPj4yXXwwKSs0Pj4yXTttZyhjW2U+PjJdfDApO2Nbaj4+Ml09WEgoY1toPj4yXXwwLGNbZj4+Ml18MCwwKXwwO2lmKGNbaj4+Ml18MCl7aj1jW2o+PjJdfDA7aT1rO3JldHVybiBqfDB9WksoY1tlPj4yXXwwLDAsMCwxKTtjW2o+PjJdPV9LKGNbaD4+Ml18MCxjW2Y+PjJdfDAsMCxjW2c+PjJdfDApfDA7aj1jW2o+PjJdfDA7aT1rO3JldHVybiBqfDB9ZnVuY3Rpb24geEooYixlKXtiPWJ8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MDtrPWk7aT1pKzE2fDA7Zj1rKzEyfDA7Zz1rKzh8MDtoPWsrNHwwO2o9aztjW2Y+PjJdPWI7Y1tnPj4yXT1lO1RLKGNbKGNbZz4+Ml18MCkrMjA+PjJdfDApO2NbKGNbZz4+Ml18MCkrMjA+PjJdPTA7Y1toPj4yXT0wO3doaWxlKDEpe2lmKChjW2g+PjJdfDApPj0oZFsoY1tnPj4yXXwwKSs1OT4+MF18MHwwKSlicmVhaztjW2o+PjJdPShjW2c+PjJdfDApKzY0KygoY1toPj4yXXwwKSo3MnwwKTtVSyhjW2Y+PjJdfDAsY1tqPj4yXXwwKTtjWyhjW2o+PjJdfDApKzg+PjJdPWNbZz4+Ml07Y1toPj4yXT0oY1toPj4yXXwwKSsxfWlmKCEoY1soY1tnPj4yXXwwKSszNis0Pj4yXXwwKSlWSygwLGNbKGNbZz4+Ml18MCkrMzY+PjJdfDApO2NbKGNbZz4+Ml18MCkrMzY+PjJdPTA7Y1soY1tnPj4yXXwwKSszNis4Pj4yXT0wO2FbKGNbZz4+Ml18MCkrNTY+PjBdPTA7Y1soY1tnPj4yXXwwKSs0OD4+Ml09MDtjWyhjW2c+PjJdfDApKzg+PjJdPTA7VGYoY1tmPj4yXXwwLGNbKGNbZz4+Ml18MCkrMzI+PjJdfDApO2NbKGNbZz4+Ml18MCkrMzI+PjJdPTA7aT1rO3JldHVybn1mdW5jdGlvbiB5SihhKXthPWF8MDt2YXIgYj0wLGQ9MDtiPWk7aT1pKzE2fDA7ZD1iO2NbZD4+Ml09YTthPXdKKGNbY1tkPj4yXT4+Ml18MCxjWyhjW2Q+PjJdfDApKzUyPj4yXXwwLDApfDA7aT1iO3JldHVybiBhfDB9ZnVuY3Rpb24gekooYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MDtlPWk7aT1pKzMyfDA7Zj1lKzE2fDA7az1lKzEyfDA7aD1lKzh8MDtnPWUrNHwwO2o9ZTtjW2Y+PjJdPWE7Y1trPj4yXT1iO2NbaD4+Ml09ZDtjW2o+PjJdPShjWyhjW2Y+PjJdfDApKzE2Pj4yXXwwKSsoY1trPj4yXTw8NCk7Y1tnPj4yXT1VaigoY1soY1tqPj4yXXwwKSsxMj4+Ml18MCkrOHwwLGNbaD4+Ml18MCwwKXwwO1JmKGNbZj4+Ml18MCxjW2c+PjJdfDApO2Q9KGNbZj4+Ml18MCkrMjR8MDtjW2Q+PjJdPWNbZD4+Ml18MjtpPWU7cmV0dXJufWZ1bmN0aW9uIEFKKGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wO2g9aTtpPWkrMzJ8MDtlPWgrMjB8MDtsPWgrMTZ8MDtqPWgrMTJ8MDtnPWgrOHwwO2s9aCs0fDA7Zj1oO2NbZT4+Ml09YTtjW2w+PjJdPWI7Y1tqPj4yXT1kO2Nbaz4+Ml09KGNbKGNbKGNbZT4+Ml18MCkrMTY+PjJdfDApKyhjW2w+PjJdPDw0KSsxMj4+Ml18MCkrMjQ7Y1tnPj4yXT1VaihjW2s+PjJdfDAsY1tqPj4yXXwwLDApfDA7aWYoIShjW2c+PjJdfDApKXtsPWNbZT4+Ml18MDtsPWwrMjR8MDtrPWNbbD4+Ml18MDtrPWt8MjtjW2w+PjJdPWs7aT1oO3JldHVybn1hPWNbZz4+Ml18MDtpZigoY1soY1soY1tnPj4yXXwwKSsxMj4+Ml18MCkrOD4+Ml18MCkhPShjW2c+PjJdfDApKXtjW2Y+PjJdPWNbKGNbYSsxMj4+Ml18MCkrOD4+Ml07d2hpbGUoMSl7aWYoY1tmPj4yXXwwKWI9KGNbKGNbZj4+Ml18MCkrMjA+PjJdfDApIT0oY1tnPj4yXXwwKTtlbHNlIGI9MDthPWNbZj4+Ml18MDtpZighYilicmVhaztjW2Y+PjJdPWNbYSsyMD4+Ml19aWYoKGF8MCkhPTA/KGNbKGNbZj4+Ml18MCkrMjA+PjJdfDApPT0oY1tnPj4yXXwwKTowKWNbKGNbZj4+Ml18MCkrMjA+PjJdPWNbKGNbZz4+Ml18MCkrMjA+PjJdfWVsc2UgY1soY1soY1tnPj4yXXwwKSsxMj4+Ml18MCkrOD4+Ml09Y1thKzIwPj4yXTtGSChjW2U+PjJdfDAsY1tnPj4yXXwwKTtsPWNbZT4+Ml18MDtsPWwrMjR8MDtrPWNbbD4+Ml18MDtrPWt8MjtjW2w+PjJdPWs7aT1oO3JldHVybn1mdW5jdGlvbiBCSihhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTA7aj1pO2k9aSszMnwwO2Y9aisyNHwwO209aisyMHwwO2s9aisxNnwwO2c9aisxMnwwO2w9ais4fDA7ZT1qKzR8MDtoPWo7Y1tmPj4yXT1hO2NbbT4+Ml09YjtjW2s+PjJdPWQ7Y1tsPj4yXT0oY1soY1soY1tmPj4yXXwwKSsxNj4+Ml18MCkrKGNbbT4+Ml08PDQpKzEyPj4yXXwwKSs0MDtjW2c+PjJdPVVqKGNbbD4+Ml18MCxjW2s+PjJdfDAsMCl8MDtpZighKGNbZz4+Ml18MCkpe2k9ajtyZXR1cm59aWYoKGNbKGNbZz4+Ml18MCkrMjA+PjJdfDApPT0oY1soY1tnPj4yXXwwKSsyND4+Ml18MCkpe2NbZT4+Ml09JEIoY1tnPj4yXXwwKXwwO2NbaD4+Ml09KGNbZT4+Ml18MCkrNjA7d2hpbGUoMSl7YT0oY1tjW2g+PjJdPj4yXXwwKSszMnwwO2lmKChjW2NbaD4+Ml0+PjJdfDApPT0oY1tnPj4yXXwwKSlicmVhaztjW2g+PjJdPWF9Y1tjW2g+PjJdPj4yXT1jW2E+PjJdfVFmKGNbZj4+Ml18MCxjW2c+PjJdfDApO209KGNbZj4+Ml18MCkrMjR8MDtjW20+PjJdPWNbbT4+Ml18MjtpPWo7cmV0dXJufWZ1bmN0aW9uIENKKGIsZSxmLGcsaCl7Yj1ifDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7dmFyIGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MDt0PWk7aT1pKzI0MHwwO3M9dCsxNnwwO3I9dCs4fDA7dj10KzEyNHwwO2o9dCsxMjB8MDtrPXQrMTE2fDA7dT10KzExMnwwO2w9dCsxMDh8MDttPXQrMTA0fDA7cD10KzMyfDA7bz10KzI0fDA7cT10KzIwfDA7bj10O2Nbdj4+Ml09YjtjW2o+PjJdPWU7Y1trPj4yXT1mO2NbdT4+Ml09ZztjW2w+PjJdPWg7Y1tvPj4yXT1jWyhjW3Y+PjJdfDApKzQ+PjJdO2NbcT4+Ml09Y1soY1soY1tvPj4yXXwwKSs0Pj4yXXwwKSsyND4+Ml07bWcoY1t2Pj4yXXwwKTtjW3A+PjJdPWNbbz4+Ml07Y1twKzQ+PjJdPWNbY1tvPj4yXT4+Ml07Y1twKzEyPj4yXT1KRihjW3A+PjJdfDApfDA7Y1twKzE2Pj4yXT1jW3U+PjJdO2NbcCsyMD4+Ml09MDtjW3ArMjQ+PjJdPTA7Y1twKzI4Pj4yXT0wO2NbcCszMj4+Ml09MDtjW3ArMzY+PjJdPTA7Y1twKzg+PjJdPTA7Y1twKzY4Pj4yXT0wO2RnKHArNDB8MCwwLHQrMTI4fDAsMTAwLDFlOSk7YVtwKzQwKzI1Pj4wXT0xO2E6ZG8gaWYoY1twKzEyPj4yXXwwKXtjW3ArOD4+Ml09a2coKCgoY1twKzEyPj4yXXwwKT4+PjApLzh8MCkrMXwwLDApfDA7aWYoIShjW3ArOD4+Ml18MCkpe2NbcCsyND4+Ml09MTticmVha31jW3ArNjg+PjJdPVlpKGNbKGNbbz4+Ml18MCkrMzI+PjJdfDApfDA7aWYoIShjW3ArNjg+PjJdfDApKXtjW3ArMjQ+PjJdPTE7YnJlYWt9Y1ttPj4yXT0oKChjWzM4NF18MCk+Pj4wKS8oKGNbKGNbbz4+Ml18MCkrMzI+PjJdfDApPj4+MCl8MCkrMTtpZigoY1ttPj4yXXwwKT4+PjA8PShjW3ArMTI+PjJdfDApPj4+MClLSyhwLGNbbT4+Ml18MCk7Y1twKzI4Pj4yXT00MTA5NTt2PWdyKChjWyhjWyhjW28+PjJdfDApKzEyPj4yXXwwKSs1Nj4+Ml18MCkrMzJ8MCl8MDtMSyhwLDEsdixncigoY1soY1soY1tvPj4yXXwwKSsxMj4+Ml18MCkrNTY+PjJdfDApKzM2fDApfDApO2NbcCsyOD4+Ml09MDt2PShjWyhjW28+PjJdfDApKzQ+PjJdfDApKzI0fDA7Y1t2Pj4yXT1jW3Y+PjJdJi01MzY4NzA5MTM7Y1ttPj4yXT0wO3doaWxlKDEpe2lmKCEoKGNbbT4+Ml18MCk8KGNbaz4+Ml18MCk/KGNbcCsxNj4+Ml18MCkhPTA6MCkpYnJlYWs7aWYoY1soY1tqPj4yXXwwKSsoY1ttPj4yXTw8Mik+PjJdfDApe2lmKChkWyhjW28+PjJdfDApKzE3Pj4wXXwwKSE9MD8oY1soY1tqPj4yXXwwKSsoY1ttPj4yXTw8Mik+PjJdfDApPjE6MClNSyhwLGNbKGNbaj4+Ml18MCkrKGNbbT4+Ml08PDIpPj4yXXwwLDEsMCk7TksocCxjWyhjW2o+PjJdfDApKyhjW20+PjJdPDwyKT4+Ml18MCxuLC0xLDIxNDc0ODM2NDcpfDB9Y1ttPj4yXT0oY1ttPj4yXXwwKSsxfWNbKGNbKGNbbz4+Ml18MCkrND4+Ml18MCkrMjQ+PjJdPWNbcT4+Ml07Y1ttPj4yXT0xO3doaWxlKDEpe2lmKCEoKGNbbT4+Ml18MCk+Pj4wPD0oY1twKzEyPj4yXXwwKT4+PjA/KGNbcCsxNj4+Ml18MCkhPTA6MCkpYnJlYWsgYTtkbyBpZighKE9LKHAsY1ttPj4yXXwwKXwwKSl7dj1WRihjW28+PjJdfDAsY1ttPj4yXXwwKXwwO2lmKCh2fDApPT0oY1ttPj4yXXwwKT8oYVsoY1tvPj4yXXwwKSsxNz4+MF18MCkhPTA6MClicmVhaztjW3I+PjJdPWNbbT4+Ml07UEsocCw0MTExMSxyKX13aGlsZSgwKTtpZigoKE9LKHAsY1ttPj4yXXwwKXwwKSE9MD8odj1WRihjW28+PjJdfDAsY1ttPj4yXXwwKXwwLCh2fDApPT0oY1ttPj4yXXwwKSk6MCk/KGRbKGNbbz4+Ml18MCkrMTc+PjBdfDApIT0wOjApe2Nbcz4+Ml09Y1ttPj4yXTtQSyhwLDQxMTMzLHMpfWNbbT4+Ml09KGNbbT4+Ml18MCkrMX19d2hpbGUoMCk7JGkoY1twKzY4Pj4yXXwwKTtLZChjW3ArOD4+Ml18MCk7aWYoY1twKzI0Pj4yXXwwKXt4QShwKzQwfDApO3Y9cCsyMHwwO2Nbdj4+Ml09KGNbdj4+Ml18MCkrMX1jW2NbbD4+Ml0+PjJdPWNbcCsyMD4+Ml07aWYoY1twKzIwPj4yXXwwKXt2PXArNDB8MDt2PWZnKHYpfDA7aT10O3JldHVybiB2fDB9eEEocCs0MHwwKTt2PXArNDB8MDt2PWZnKHYpfDA7aT10O3JldHVybiB2fDB9ZnVuY3Rpb24gREooZCl7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wO2c9aTtpPWkrMTZ8MDtlPWcrNHwwO2Y9ZztjW2U+PjJdPWQ7Y1tmPj4yXT1jWyhjW2U+PjJdfDApKzMyPj4yXTtYZyhjW2U+PjJdfDApO2Q9VncoY1tmPj4yXXwwLDY0LDApfDA7Y1soY1tlPj4yXXwwKSsyMD4+Ml09ZDtpZihhWyhjW2Y+PjJdfDApKzY5Pj4wXXwwKXtiWyhjW2U+PjJdfDApKzg+PjFdPTE7Y1soY1tlPj4yXXwwKSsyND4+Ml09MDtpPWc7cmV0dXJufWVsc2V7ZD1rdShjW2Y+PjJdfDAsY1soY1tlPj4yXXwwKSsyMD4+Ml18MCl8MDtjWyhjW2U+PjJdfDApKzI0Pj4yXT1kO2Q9SksoY1tmPj4yXXwwLGNbKGNbZT4+Ml18MCkrMjA+PjJdfDAsY1soY1tlPj4yXXwwKSsyND4+Ml18MCl8MDtjW2NbZT4+Ml0+PjJdPWQ7YlsoY1tlPj4yXXwwKSs4Pj4xXT0zMjtpPWc7cmV0dXJufX1mdW5jdGlvbiBFSihhLGQsZil7YT1hfDA7ZD1kfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTA7bD1pO2k9aSszMnwwO2c9bCsxNnwwO2g9bDtqPWwrMTJ8MDtrPWwrOHwwO2NbZz4+Ml09YTthPWg7Y1thPj4yXT1kO2NbYSs0Pj4yXT1mO2Nbaj4+Ml09SEsoY1tnPj4yXXwwKXwwO2lmKCEoY1tqPj4yXXwwKSl7aT1sO3JldHVybn1kPWg7Zj1jW2QrND4+Ml18MDthPWNbaj4+Ml18MDtjW2E+PjJdPWNbZD4+Ml07Y1thKzQ+PjJdPWY7Y1soY1tqPj4yXXwwKSs4Pj4yXT0wO2Nbaz4+Ml09Y1soY1tnPj4yXXwwKSsxMj4+Ml07aWYoY1trPj4yXXwwKXtkPWNbaCs0Pj4yXXwwO2E9Y1trPj4yXXwwO2Y9Y1thKzQ+PjJdfDA7aWYoKGR8MCk8KGZ8MCl8KChkfDApPT0oZnwwKT8oY1toPj4yXXwwKT4+PjA8PShjW2E+PjJdfDApPj4+MDowKSl7YT0oY1tnPj4yXXwwKSsyNnwwO2JbYT4+MV09KGVbYT4+MV18MCkmLTJ9Y1soY1trPj4yXXwwKSs4Pj4yXT1jW2o+PjJdfWVsc2UgY1soY1tnPj4yXXwwKSs4Pj4yXT1jW2o+PjJdO2NbKGNbZz4+Ml18MCkrMTI+PjJdPWNbaj4+Ml07aT1sO3JldHVybn1mdW5jdGlvbiBGSihhLGQpe2E9YXwwO2Q9ZHwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wO2o9aTtpPWkrMTZ8MDtmPWorOHwwO2c9ais0fDA7aD1qO2NbZz4+Ml09YTtjW2g+PjJdPWQ7aWYoISgoZVsoY1tnPj4yXXwwKSsyNj4+MV18MCkmMikpe2lmKCEoKGVbKGNbZz4+Ml18MCkrMjY+PjFdfDApJjEpKXtkPURLKGNbKGNbZz4+Ml18MCkrOD4+Ml18MCl8MDtjWyhjW2c+PjJdfDApKzg+PjJdPWR9ZD0oY1tnPj4yXXwwKSsyNnwwO2JbZD4+MV09ZVtkPj4xXXwwfDN9aWYoIShjWyhjW2c+PjJdfDApKzg+PjJdfDApKXtjW2Y+PjJdPTA7ZD1jW2Y+PjJdfDA7aT1qO3JldHVybiBkfDB9az1jWyhjW2c+PjJdfDApKzg+PjJdfDA7YT1jW2srND4+Ml18MDtkPWNbaD4+Ml18MDtjW2Q+PjJdPWNbaz4+Ml07Y1tkKzQ+PjJdPWE7Y1soY1tnPj4yXXwwKSs4Pj4yXT1jWyhjWyhjW2c+PjJdfDApKzg+PjJdfDApKzg+PjJdO2lmKCEoY1soY1tnPj4yXXwwKSs4Pj4yXXwwKSlvRyhjW2c+PjJdfDApO2NbZj4+Ml09MTtrPWNbZj4+Ml18MDtpPWo7cmV0dXJuIGt8MH1mdW5jdGlvbiBHSihhLGQsZixnKXthPWF8MDtkPWR8MDtmPWZ8MDtnPWd8MDt2YXIgaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MDtzPWk7aT1pKzQ4fDA7bz1zKzM2fDA7aD1zKzMyfDA7aj1zKzI4fDA7cD1zO3E9cysyNHwwO3I9cysyMHwwO209cysxNnwwO2s9cysxMnwwO2w9cys4fDA7Y1toPj4yXT1hO2Nbaj4+Ml09ZDthPXA7Y1thPj4yXT1mO2NbYSs0Pj4yXT1nO2lmKChjW2o+PjJdfDApIT0oY1soY1toPj4yXXwwKSsyOD4+Ml18MCkpe2NbcT4+Ml09Y1soY1toPj4yXXwwKSs4Pj4yXTtpZihjW3E+PjJdfDApe2NbbT4+Ml09KGNbaD4+Ml18MCkrMjA7aWYoISgoZVsoY1toPj4yXXwwKSsyNj4+MV18MCkmMSkpY1txPj4yXT1ESyhjW3E+PjJdfDApfDA7Y1tyPj4yXT1jWyhjW2g+PjJdfDApKzIwPj4yXTt3aGlsZSgxKXtpZighKGNbcj4+Ml18MCkpYnJlYWs7Y1ttPj4yXT0oY1tyPj4yXXwwKSs4O2lmKCEoY1soY1tyPj4yXXwwKSsxMj4+Ml18MCkpe249ODticmVha31GSyhjWyhjW3I+PjJdfDApKzEyPj4yXXwwLGssbCk7Y1soY1tyPj4yXXwwKSsxMj4+Ml09MDtjW3E+PjJdPUdLKGNbaz4+Ml18MCxjW3E+PjJdfDApfDA7Y1tyPj4yXT1jWyhjW3I+PjJdfDApKzg+PjJdfWlmKChufDApPT04KXtuPUVLKGNbcT4+Ml18MCl8MDtjWyhjW3I+PjJdfDApKzEyPj4yXT1ufWlmKChjW3I+PjJdfDApPT0wPyhuPUhLKGNbaD4+Ml18MCl8MCxjW3I+PjJdPW4sY1tjW20+PjJdPj4yXT1uLChjW3I+PjJdfDApIT0wKTowKXtuPWNbcj4+Ml18MDtjW24+PjJdPTA7Y1tuKzQ+PjJdPTA7Y1soY1tyPj4yXXwwKSs4Pj4yXT0wO249RUsoY1txPj4yXXwwKXwwO2NbKGNbcj4+Ml18MCkrMTI+PjJdPW59Y1soY1toPj4yXXwwKSs4Pj4yXT0wO2NbKGNbaD4+Ml18MCkrMTI+PjJdPTA7bj0oY1toPj4yXXwwKSsyNnwwO2Jbbj4+MV09ZVtuPj4xXXwwfDF9Y1soY1toPj4yXXwwKSsyOD4+Ml09Y1tqPj4yXX1jW3I+PjJdPWNbKGNbaD4+Ml18MCkrMjA+PjJdO2E6d2hpbGUoMSl7aWYoIShjW3I+PjJdfDApKXtuPTI1O2JyZWFrfWNbcT4+Ml09Y1soY1tyPj4yXXwwKSsxMj4+Ml07d2hpbGUoMSl7aWYoIShjW3E+PjJdfDApKWJyZWFrO209Y1txPj4yXXwwO2E9Y1ttKzQ+PjJdfDA7bj1wO2w9Y1tuKzQ+PjJdfDA7Zj1jW3E+PjJdfDA7aWYoKGF8MCk8KGx8MCl8KChhfDApPT0obHwwKT8oY1ttPj4yXXwwKT4+PjA8KGNbbj4+Ml18MCk+Pj4wOjApKXtjW3E+PjJdPWNbZis4Pj4yXTtjb250aW51ZX1tPWY7YT1jW20rND4+Ml18MDtuPXA7bD1jW24rND4+Ml18MDtpZighKChhfDApPihsfDApfCgoYXwwKT09KGx8MCk/KGNbbT4+Ml18MCk+Pj4wPihjW24+PjJdfDApPj4+MDowKSkpe249MjM7YnJlYWsgYX1jW3E+PjJdPWNbKGNbcT4+Ml18MCkrMTI+PjJdfWNbcj4+Ml09Y1soY1tyPj4yXXwwKSs4Pj4yXX1pZigobnwwKT09MjMpe2Nbbz4+Ml09MTtyPWNbbz4+Ml18MDtpPXM7cmV0dXJuIHJ8MH1lbHNlIGlmKChufDApPT0yNSl7Y1tvPj4yXT0wO3I9Y1tvPj4yXXwwO2k9cztyZXR1cm4gcnwwfXJldHVybiAwfWZ1bmN0aW9uIEhKKGEpe2E9YXwwO3ZhciBiPTAsZT0wLGY9MDtmPWk7aT1pKzE2fDA7Yj1mKzR8MDtlPWY7Y1tlPj4yXT1hO2lmKChkWyhjW2U+PjJdfDApKzE3Pj4wXXwwfDApPj0zKXtjW2I+PjJdPTA7YT1jW2I+PjJdfDA7aT1mO3JldHVybiBhfDB9aWYoKGNbY1soY1tlPj4yXXwwKSs2OD4+Ml0+PjJdfDApIT0wPyhhPShjW2U+PjJdfDApKzgwfDAsZT1jW2ErND4+Ml18MCwoZXwwKT4wfChlfDApPT0wJihjW2E+PjJdfDApPj4+MD4wKTowKXtjW2I+PjJdPTA7YT1jW2I+PjJdfDA7aT1mO3JldHVybiBhfDB9Y1tiPj4yXT0xO2E9Y1tiPj4yXXwwO2k9ZjtyZXR1cm4gYXwwfWZ1bmN0aW9uIElKKGIpe2I9YnwwO3ZhciBlPTAsZj0wLGc9MCxoPTA7aD1pO2k9aSsxNnwwO2c9aCs4fDA7ZT1oKzR8MDtmPWg7Y1tlPj4yXT1iO2NbZj4+Ml09Y1tjWyhjW2U+PjJdfDApKzY0Pj4yXT4+Ml07aWYoYVsoY1tlPj4yXXwwKSsxND4+MF18MCl7Y1tnPj4yXT0wO2c9Y1tnPj4yXXwwO2k9aDtyZXR1cm4gZ3wwfWlmKCEoZFsoY1tlPj4yXXwwKSs0Pj4wXXwwKSlpZigoY1tjW2Y+PjJdPj4yXXwwKT49MillPShjWyhjW2Y+PjJdfDApKzUyPj4yXXwwKSE9MDtlbHNlIGU9MDtlbHNlIGU9MTtjW2c+PjJdPWUmMTtnPWNbZz4+Ml18MDtpPWg7cmV0dXJuIGd8MH1mdW5jdGlvbiBKSihiKXtiPWJ8MDt2YXIgZT0wLGY9MCxnPTAsaD0wO2g9aTtpPWkrMTZ8MDtlPWgrOHwwO2c9aCs0fDA7Zj1oO2NbZT4+Ml09YjtjW2c+PjJdPTA7aWYoIShjWyhjW2U+PjJdfDApKzIxNj4+Ml18MCkpe2NbZj4+Ml09MDtjW2c+PjJdPUd0KGNbZT4+Ml18MCwxKXwwO2lmKCEoY1tnPj4yXXwwKSljW2c+PjJdPVlyKGNbY1tlPj4yXT4+Ml18MCxjWyhjW2U+PjJdfDApKzIyMD4+Ml18MCwwLGYpfDA7aWYoKGNbZz4+Ml18MCk9PTAmKGNbZj4+Ml18MCkhPTApY1tnPj4yXT15SyhjW2U+PjJdfDApfDB9aWYoY1tnPj4yXXwwKXtnPWNbZz4+Ml18MDtpPWg7cmV0dXJuIGd8MH1pZighKGNbKGNbZT4+Ml18MCkrMjE2Pj4yXXwwKSl7Zz1jW2c+PjJdfDA7aT1oO3JldHVybiBnfDB9Y1tnPj4yXT16SyhjW2U+PjJdfDApfDA7aWYoY1tnPj4yXXwwKXtnPWNbZz4+Ml18MDtpPWg7cmV0dXJuIGd8MH1jW2c+PjJdPWpyKGNbKGNbZT4+Ml18MCkrMjE2Pj4yXXwwLGRbKGNbZT4+Ml18MCkrMTA+PjBdfDAsY1soY1tlPj4yXXwwKSsxNjA+PjJdfDAsY1soY1tlPj4yXXwwKSsyMDg+PjJdfDApfDA7Y1soY1tlPj4yXXwwKSsyMTY+PjJdPTA7YWooY1tlPj4yXXwwKTtpZighKGNbZz4+Ml18MCkpe2c9Y1tnPj4yXXwwO2k9aDtyZXR1cm4gZ3wwfWlmKGFbKGNbZT4+Ml18MCkrND4+MF18MCl7Zz1jW2c+PjJdfDA7aT1oO3JldHVybiBnfDB9RnIoY1tlPj4yXXwwLDEpfDA7Zz1jW2c+PjJdfDA7aT1oO3JldHVybiBnfDB9ZnVuY3Rpb24gS0ooYixlKXtiPWJ8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTA7bD1pO2k9aSszMnwwO2Y9bCsxMnwwO2c9bCs4fDA7aD1sKzE2fDA7aj1sKzR8MDtrPWw7Y1tmPj4yXT1iO2NbZz4+Ml09ZTthW2g+PjBdPWFbKGNbZj4+Ml18MCkrNT4+MF18MDtpZigoYVsoY1tmPj4yXXwwKSsxNj4+MF18MCkhPTA/KGNbZz4+Ml18MCkhPTQmKGNbZz4+Ml18MCkhPTI6MCljW2c+PjJdPWRbaD4+MF07ZG8gaWYoKGNbZz4+Ml18MCkhPShkW2g+PjBdfDApKXthWyhjW2Y+PjJdfDApKzU+PjBdPWNbZz4+Ml07aWYoKChhWyhjW2Y+PjJdfDApKzQ+PjBdfDApPT0wPyhkW2g+PjBdJjV8MCk9PTE6MCk/KGNbZz4+Ml0mMXwwKT09MDowKXtvcihjWyhjW2Y+PjJdfDApKzY4Pj4yXXwwKTtpZigoZFsoY1tmPj4yXXwwKSsxOD4+MF18MCk+PTIpe3hyKGNbY1tmPj4yXT4+Ml18MCxjWyhjW2Y+PjJdfDApKzE4MD4+Ml18MCwwKXwwO2JyZWFrfWNbaj4+Ml09MDtjW2s+PjJdPWRbKGNbZj4+Ml18MCkrMTc+PjBdO2lmKCEoY1trPj4yXXwwKSljW2o+PjJdPXJLKGNbZj4+Ml18MCl8MDtpZigoZFsoY1tmPj4yXXwwKSsxNz4+MF18MCk9PTEpY1tqPj4yXT1HdChjW2Y+PjJdfDAsMil8MDtpZighKGNbaj4+Ml18MCkpeHIoY1tjW2Y+PjJdPj4yXXwwLGNbKGNbZj4+Ml18MCkrMTgwPj4yXXwwLDApfDA7aWYoKGNbaj4+Ml18MCk9PTAmKGNbaz4+Ml18MCk9PTEpe0ZyKGNbZj4+Ml18MCwxKXwwO2JyZWFrfWlmKGNbaz4+Ml18MClicmVhaztrcihjW2Y+PjJdfDApO2JyZWFrfWlmKChjW2c+PjJdfDApPT0yKW9yKGNbKGNbZj4+Ml18MCkrNjg+PjJdfDApfXdoaWxlKDApO2k9bDtyZXR1cm4gZFsoY1tmPj4yXXwwKSs1Pj4wXXwwfWZ1bmN0aW9uIExKKGIsZSxmKXtiPWJ8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MDtEPWk7aT1pKzExMnwwO289RCsyNHwwO249RCsxNnwwO209RCs4fDA7bD1EO3E9RCs5MnwwO2o9RCs4OHwwO3I9RCs4NHwwO2c9RCs4MHwwO3k9RCs3NnwwO3c9RCs3MnwwO3g9RCs2OHwwO3o9RCs2NHwwO0I9RCs2MHwwO0M9RCs1NnwwO0E9RCs5NnwwO3Y9RCs1MnwwO2g9RCs0OHwwO3U9RCs0NHwwO2s9RCs0MHwwO3A9RCszNnwwO3Q9RCszMnwwO3M9RCsyOHwwO2Nbaj4+Ml09YjtjW3I+PjJdPWU7Y1tnPj4yXT1mO2NbeT4+Ml09MDtjW3Y+PjJdPTA7aWYoIShhWyhjW3I+PjJdfDApKzY3Pj4wXXwwKSl7Q2ooY1tqPj4yXXwwLGNbcj4+Ml18MCw0MDUxOSk7Y1txPj4yXT0xO0M9Y1txPj4yXXwwO2k9RDtyZXR1cm4gQ3wwfWlmKChjWyhjW3I+PjJdfDApKzE1Nj4+Ml18MCk+MSl7Q2ooY1tqPj4yXXwwLGNbcj4+Ml18MCw0MDU1OSk7Y1txPj4yXT0xO0M9Y1txPj4yXXwwO2k9RDtyZXR1cm4gQ3wwfWNbej4+Ml09Y1soY1tyPj4yXXwwKSsyND4+Ml07Y1tCPj4yXT1jWyhjW3I+PjJdfDApKzg4Pj4yXTtjW0M+PjJdPWNbKGNbcj4+Ml18MCkrOTI+PjJdO2FbQT4+MF09YVsoY1tyPj4yXXwwKSs3Nj4+MF18MDtiPShjW3I+PjJdfDApKzI0fDA7Y1tiPj4yXT1jW2I+PjJdfDI3MDU0Mjg0ODtiPShjW3I+PjJdfDApKzI0fDA7Y1tiPj4yXT1jW2I+PjJdJi02NTU0ODk7YVsoY1tyPj4yXXwwKSs3Nj4+MF09MDtjW3A+PjJdPWNbKGNbKGNbcj4+Ml18MCkrMTY+PjJdfDApKyhjW2c+PjJdPDw0KT4+Ml07Y1t3Pj4yXT1jWyhjWyhjW3I+PjJdfDApKzE2Pj4yXXwwKSsoY1tnPj4yXTw8NCkrND4+Ml07Y1toPj4yXT1rSyhQZihjW3c+PjJdfDApfDApfDA7Y1trPj4yXT1jWyhjW3I+PjJdfDApKzIwPj4yXTtjW3k+PjJdPWxLKGNbcj4+Ml18MCxjW2o+PjJdfDAsNDA2MDIpfDA7YTpkbyBpZigoKGNbeT4+Ml18MCk9PTA/KGNbdj4+Ml09KGNbKGNbcj4+Ml18MCkrMTY+PjJdfDApKyhjW2s+PjJdPDw0KSxjW3g+PjJdPWNbKGNbdj4+Ml18MCkrND4+Ml0sR2ooY1t4Pj4yXXwwKXwwLGNbdT4+Ml09bUsoY1t3Pj4yXXwwKXwwLEVqKGNbeD4+Ml18MCxjWyhjWyhjWyhjW3I+PjJdfDApKzE2Pj4yXXwwKSsoY1tnPj4yXTw8NCkrMTI+PjJdfDApKzgwPj4yXXwwKXwwLGI9Y1t4Pj4yXXwwLHVDKGIsdUMoY1t3Pj4yXXwwLDApfDApfDAsV0IoY1t4Pj4yXXwwLDMzKXwwLGNbeT4+Ml09bEsoY1tyPj4yXXwwLGNbaj4+Ml18MCwzNzUyNyl8MCwoY1t5Pj4yXXwwKT09MCk6MCk/KGNbeT4+Ml09cGcoY1t3Pj4yXXwwLDIpfDAsKGNbeT4+Ml18MCk9PTApOjApe2lmKCh0ZyhQZihjW3c+PjJdfDApfDApfDApPT01KWNbKGNbcj4+Ml18MCkrODA+PjJdPTA7Zj1jW3g+PjJdfDA7Yj1zZyhjW3c+PjJdfDApfDA7ZG8gaWYoIShDaShmLGIsY1t1Pj4yXXwwLDApfDApKXtpZigoY1toPj4yXXwwKT09MD8oQ2koY1t4Pj4yXXwwLGNbKGNbcj4+Ml18MCkrODA+PjJdfDAsY1t1Pj4yXXwwLDApfDApIT0wOjApYnJlYWs7aWYoIShkWyhjW3I+PjJdfDApKzY5Pj4wXXwwKSl7Zz1jW3g+PjJdfDA7aWYoKGFbKGNbcj4+Ml18MCkrNzI+PjBdfDApPj0wKWU9YVsoY1tyPj4yXXwwKSs3Mj4+MF18MDtlbHNlIGU9ckMoY1t3Pj4yXXwwKXwwO3RDKGcsZSl8MDthWyhjW3I+PjJdfDApKzE0OCs0Pj4wXT1jW2s+PjJdO2I9Y1tyPj4yXXwwO2s9Y1tqPj4yXXwwO2NbbD4+Ml09Y1twPj4yXTtjW3k+PjJdPW5LKGIsayw0MDYyMyxsKXwwO2lmKGNbeT4+Ml18MClicmVhayBhO2s9Y1tyPj4yXXwwO2w9Y1tqPj4yXXwwO2NbbT4+Ml09Y1twPj4yXTtjW3k+PjJdPW5LKGssbCw0MDczMSxtKXwwO2lmKGNbeT4+Ml18MClicmVhayBhO2FbKGNbcj4+Ml18MCkrMTQ4KzQ+PjBdPTA7bD1jW3I+PjJdfDA7bT1jW2o+PjJdfDA7Y1tuPj4yXT1jW3A+PjJdO2NbeT4+Ml09bksobCxtLDQwODA0LG4pfDA7bj0oY1tyPj4yXXwwKSsyNHwwO2Nbbj4+Ml09Y1tuPj4yXSYtMjY4NDM1NDU3O2lmKGNbeT4+Ml18MClicmVhayBhO209Y1tyPj4yXXwwO249Y1tqPj4yXXwwO2Nbbz4+Ml09Y1twPj4yXTtjW3k+PjJdPW5LKG0sbiw0MDk1NSxvKXwwO2lmKGNbeT4+Ml18MClicmVhayBhO2Nbcz4+Ml09MDt3aGlsZSgxKXtnPWNbdz4+Ml18MDtpZigoY1tzPj4yXXwwKT49MTApYnJlYWs7cmcoZyxkWzQxMDg1KyhjW3M+PjJdfDApPj4wXXwwLHQpO2NbeT4+Ml09QmcoY1t4Pj4yXXwwLGRbNDEwODUrKGNbcz4+Ml18MCk+PjBdfDAsKGNbdD4+Ml18MCkrKGRbNDEwODUrKChjW3M+PjJdfDApKzEpPj4wXXwwKXwwKXwwO2lmKGNbeT4+Ml18MClicmVhayBhO2Nbcz4+Ml09KGNbcz4+Ml18MCkrMn1jW3k+PjJdPW9LKGcsY1t4Pj4yXXwwKXwwO2lmKGNbeT4+Ml18MClicmVhayBhO2NbeT4+Ml09R2ooY1t4Pj4yXXwwKXwwO2lmKGNbeT4+Ml18MClicmVhayBhO3Q9Y1t3Pj4yXXwwO3RDKHQsckMoY1t4Pj4yXXwwKXwwKXwwO3Q9Y1t3Pj4yXXwwO3g9c2coY1t4Pj4yXXwwKXwwO2NbeT4+Ml09Q2kodCx4LGNbdT4+Ml18MCwxKXwwO2JyZWFrIGF9fXdoaWxlKDApO2NbeT4+Ml09N313aGlsZSgwKTthWyhjW3I+PjJdfDApKzE0OCs0Pj4wXT0wO2NbKGNbcj4+Ml18MCkrMjQ+PjJdPWNbej4+Ml07Y1soY1tyPj4yXXwwKSs4OD4+Ml09Y1tCPj4yXTtjWyhjW3I+PjJdfDApKzkyPj4yXT1jW0M+PjJdO2FbKGNbcj4+Ml18MCkrNzY+PjBdPWFbQT4+MF18MDtDaShjW3c+PjJdfDAsLTEsLTEsMSl8MDthWyhjW3I+PjJdfDApKzY3Pj4wXT0xO2lmKGNbdj4+Ml18MCl7TEIoY1soY1t2Pj4yXXwwKSs0Pj4yXXwwKXwwO2NbKGNbdj4+Ml18MCkrND4+Ml09MDtjWyhjW3Y+PjJdfDApKzEyPj4yXT0wfUNnKGNbcj4+Ml18MCk7Y1txPj4yXT1jW3k+PjJdO0M9Y1txPj4yXXwwO2k9RDtyZXR1cm4gQ3wwfWZ1bmN0aW9uIE1KKGIpe2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTA7aj1pO2k9aSszMnwwO2s9aisyMHwwO2g9aisxNnwwO2c9aisxMnwwO2Y9ais4fDA7ZT1qKzR8MDtkPWo7Y1trPj4yXT1iO2NbZz4+Ml09Y1soY1trPj4yXXwwKSs0Pj4yXTttZyhjW2s+PjJdfDApO2lmKCEoYVsoY1tnPj4yXXwwKSsxNz4+MF18MCkpe2NbaD4+Ml09MTAxO2s9Y1toPj4yXXwwO2k9ajtyZXR1cm4ga3wwfWNbZj4+Ml09SkYoY1tnPj4yXXwwKXwwO2NbZT4+Ml09Z3IoKGNbKGNbKGNbZz4+Ml18MCkrMTI+PjJdfDApKzU2Pj4yXXwwKSszNnwwKXwwO2NbZD4+Ml09WkooY1tnPj4yXXwwLGNbZj4+Ml18MCxjW2U+PjJdfDApfDA7aWYoKGNbZj4+Ml18MCk+Pj4wPChjW2Q+PjJdfDApPj4+MCl7Y1toPj4yXT1Raig2MTg2Nil8MDtrPWNbaD4+Ml18MDtpPWo7cmV0dXJuIGt8MH1pZigoY1tlPj4yXXwwKT4+PjA8PTApe2NbaD4+Ml09MTAxO2s9Y1toPj4yXXwwO2k9ajtyZXR1cm4ga3wwfWNbaD4+Ml09WEgoY1tnPj4yXXwwLDAsMCl8MDtpZighKGNbaD4+Ml18MCkpe19KKGNbZz4+Ml18MCk7Y1toPj4yXT0kSihjW2c+PjJdfDAsY1tkPj4yXXwwLGNbZj4+Ml18MCwwKXwwfWlmKGNbaD4+Ml18MCl7az1jW2g+PjJdfDA7aT1qO3JldHVybiBrfDB9Y1toPj4yXT1HZyhjWyhjWyhjW2c+PjJdfDApKzEyPj4yXXwwKSs3Mj4+Ml18MCl8MDtmdCgoY1soY1soY1tnPj4yXXwwKSsxMj4+Ml18MCkrNTY+PjJdfDApKzI4fDAsY1soY1tnPj4yXXwwKSs0ND4+Ml18MCk7az1jW2g+PjJdfDA7aT1qO3JldHVybiBrfDB9ZnVuY3Rpb24gTkooYixlLGYpe2I9YnwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wLG09MDttPWk7aT1pKzE2fDA7Zz1tKzh8MDtoPW0rNHwwO2o9bSsxM3wwO2w9bTtrPW0rMTJ8MDtjW2c+PjJdPWI7Y1toPj4yXT1lO2Fbaj4+MF09ZjtjW2w+PjJdPTA7aWYoIShhWyhjW2c+PjJdfDApKzk+PjBdfDApKXtsPWNbbD4+Ml18MDtpPW07cmV0dXJuIGx8MH1hW2s+PjBdPTErKGRbaj4+MF18MCk7bWcoY1tnPj4yXXwwKTtjW2w+PjJdPVdIKGNbZz4+Ml18MCxjW2g+PjJdfDAsYVtrPj4wXXwwKXwwO2lmKGNbbD4+Ml18MCl7bD1jW2w+PjJdfDA7aT1tO3JldHVybiBsfDB9Y1tsPj4yXT1ZSihjW2c+PjJdfDAsY1toPj4yXXwwLGFbaz4+MF18MCl8MDtsPWNbbD4+Ml18MDtpPW07cmV0dXJuIGx8MH1mdW5jdGlvbiBPSihhLGIpe2E9YXwwO2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MDttPWk7aT1pKzMyfDA7ZD1tKzI0fDA7ZT1tKzIwfDA7Zj1tKzE2fDA7az1tKzEyfDA7aj1tKzh8MDtnPW0rNHwwO2g9bTtjW2U+PjJdPWE7Y1tmPj4yXT1iO2Nbaz4+Ml09MDtpZigoY1soY1tlPj4yXXwwKSszMTY+PjJdfDApPjA/KGNbKGNbZT4+Ml18MCkrMzQwPj4yXXwwKT09MDowKXtjW2Q+PjJdPTY7bD1jW2Q+PjJdfDA7aT1tO3JldHVybiBsfDB9aWYoIShjW2Y+PjJdfDApKXtjW2Q+PjJdPTA7bD1jW2Q+PjJdfDA7aT1tO3JldHVybiBsfDB9Y1tqPj4yXT1jW2NbKGNbZj4+Ml18MCkrOD4+Ml0+PjJdO2lmKGNbKGNbaj4+Ml18MCkrNTY+PjJdfDApe2NbZz4+Ml09MDt3aGlsZSgxKXtpZigoY1tnPj4yXXwwKT49KGNbKGNbZT4+Ml18MCkrMzE2Pj4yXXwwKSlicmVhaztpZigoY1soY1soY1tlPj4yXXwwKSszNDA+PjJdfDApKyhjW2c+PjJdPDwyKT4+Ml18MCk9PShjW2Y+PjJdfDApKXtsPTEwO2JyZWFrfWNbZz4+Ml09KGNbZz4+Ml18MCkrMX1pZigobHwwKT09MTApe2NbZD4+Ml09MDtsPWNbZD4+Ml18MDtpPW07cmV0dXJuIGx8MH1jW2s+PjJdPVdKKGNbZT4+Ml18MCl8MDtpZigoKChjW2s+PjJdfDApPT0wPyhjW2s+PjJdPVRiW2NbKGNbaj4+Ml18MCkrNTY+PjJdJjI1NV0oY1soY1tmPj4yXXwwKSs4Pj4yXXwwKXwwLChjW2s+PjJdfDApPT0wKTowKT8oY1toPj4yXT0oY1soY1tlPj4yXXwwKSs0MzY+PjJdfDApKyhjWyhjW2U+PjJdfDApKzQzMj4+Ml18MCksWEooY1tlPj4yXXwwLGNbZj4+Ml18MCksKGNbaD4+Ml18MCkhPTApOjApPyhjWyhjW2o+PjJdfDApKzgwPj4yXXwwKSE9MDowKXtjWyhjW2Y+PjJdfDApKzIwPj4yXT1jW2g+PjJdO2Nbaz4+Ml09WWJbY1soY1tqPj4yXXwwKSs4MD4+Ml0mMjU1XShjWyhjW2Y+PjJdfDApKzg+PjJdfDAsKGNbaD4+Ml18MCktMXwwKXwwfX1jW2Q+PjJdPWNbaz4+Ml07bD1jW2Q+PjJdfDA7aT1tO3JldHVybiBsfDB9ZnVuY3Rpb24gUEooYSxiLGQsZSl7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MDtuPWk7aT1pKzQ4fDA7bD1uO2Y9biszMnwwO289bisyOHwwO3A9bisyNHwwO2c9bisyMHwwO2s9bisxNnwwO2o9bisxMnwwO2g9bis4fDA7bT1uKzR8MDtjW2Y+PjJdPWE7Y1tvPj4yXT1iO2NbcD4+Ml09ZDtjW2c+PjJdPWU7Y1trPj4yXT0wO2Nbaj4+Ml09dGkoY1tmPj4yXXwwLGNbcD4+Ml18MCxjWyhjWyhjW2Y+PjJdfDApKzE2Pj4yXXwwKSsoY1tvPj4yXTw8NCk+PjJdfDApfDA7Y1ttPj4yXT1jW2NbKGNbaj4+Ml18MCkrNTI+PjJdPj4yXTtjW2g+PjJdPXNqKChjW2Y+PjJdfDApKzMyMHwwLGNbbT4+Ml18MCl8MDtpZigoKGNbaD4+Ml18MCkhPTA/KGNbKGNbY1toPj4yXT4+Ml18MCkrND4+Ml18MCkhPTA6MCk/KGNbKGNbY1toPj4yXT4+Ml18MCkrMjA+PjJdfDApIT0wOjApY1trPj4yXT1KeihjW2Y+PjJdfDAsY1tqPj4yXXwwLGNbaD4+Ml18MCxjWyhjW2NbaD4+Ml0+PjJdfDApKzQ+PjJdfDAsY1tnPj4yXXwwKXwwO2Vsc2V7cD1jW2Y+PjJdfDA7Y1tsPj4yXT1jW20+PjJdO3A9R2gocCwzMDYzMSxsKXwwO2NbY1tnPj4yXT4+Ml09cDtjW2s+PjJdPTF9aWYoY1trPj4yXXwwKXtwPWNbaz4+Ml18MDtpPW47cmV0dXJuIHB8MH1pZighKFV4KGNbZj4+Ml18MCxjW2o+PjJdfDApfDApKXtwPWNbaz4+Ml18MDtpPW47cmV0dXJuIHB8MH1jW2s+PjJdPVdKKGNbZj4+Ml18MCl8MDtpZihjW2s+PjJdfDApe3A9Y1trPj4yXXwwO2k9bjtyZXR1cm4gcHwwfXA9Y1tmPj4yXXwwO1hKKHAsVXgoY1tmPj4yXXwwLGNbaj4+Ml18MCl8MCk7cD1jW2s+PjJdfDA7aT1uO3JldHVybiBwfDB9ZnVuY3Rpb24gUUooYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MDtsPWk7aT1pKzMyfDA7ZT1sKzI4fDA7Zj1sKzI0fDA7bT1sKzIwfDA7bj1sKzE2fDA7aj1sKzEyfDA7aD1sKzh8MDtnPWwrNHwwO2s9bDtjW2Y+PjJdPWE7Y1ttPj4yXT1iO2Nbbj4+Ml09ZDtjW2o+PjJdPTA7Y1toPj4yXT10aShjW2Y+PjJdfDAsY1tuPj4yXXwwLGNbKGNbKGNbZj4+Ml18MCkrMTY+PjJdfDApKyhjW20+PjJdPDw0KT4+Ml18MCl8MDtkbyBpZigoY1toPj4yXXwwKSE9MD8oY1soY1toPj4yXXwwKSs1Nj4+Ml18MCkhPTA6MCl7Y1tnPj4yXT1jWyhjW2g+PjJdfDApKzU2Pj4yXTt3aGlsZSgxKXtpZighKGNbZz4+Ml18MCkpe2E9ODticmVha31pZigoY1soY1soY1tnPj4yXXwwKSs4Pj4yXXwwKSs0Pj4yXXwwKT4wKXthPTY7YnJlYWt9Y1tnPj4yXT1jWyhjW2c+PjJdfDApKzI0Pj4yXX1pZigoYXwwKT09Nil7Y1tlPj4yXT02O249Y1tlPj4yXXwwO2k9bDtyZXR1cm4gbnwwfWVsc2UgaWYoKGF8MCk9PTgpe2NbZz4+Ml09VkooY1tmPj4yXXwwLGNbaD4+Ml18MCl8MDtjW2s+PjJdPWNbKGNbY1soY1tnPj4yXXwwKSs0Pj4yXT4+Ml18MCkrMjA+PjJdO2Nbaj4+Ml09VGJbY1trPj4yXSYyNTVdKGNbKGNbZz4+Ml18MCkrOD4+Ml18MCl8MDtpZihjW2o+PjJdfDApYnJlYWs7Y1soY1tnPj4yXXwwKSs4Pj4yXT0wO2NbKGNbaD4+Ml18MCkrNTY+PjJdPTA7c3UoY1tnPj4yXXwwKTticmVha319d2hpbGUoMCk7Y1tlPj4yXT1jW2o+PjJdO249Y1tlPj4yXXwwO2k9bDtyZXR1cm4gbnwwfWZ1bmN0aW9uIFJKKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MDtlPWk7aT1pKzE2fDA7Zz1lKzh8MDtmPWUrNHwwO2Q9ZTtjW2c+PjJdPWE7Y1tmPj4yXT1iO21nKGNbZz4+Ml18MCk7Y1tkPj4yXT1VSihjW2NbKGNbZz4+Ml18MCkrND4+Ml0+PjJdfDAsY1tmPj4yXXwwKXwwO2k9ZTtyZXR1cm4gY1tkPj4yXXwwfWZ1bmN0aW9uIFNKKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wO2Y9aTtpPWkrMTZ8MDtkPWYrNHwwO2U9ZjtjW2Q+PjJdPWE7Y1tlPj4yXT1iO2lmKChjW2U+PjJdfDApPT0zMDgyKXtpPWY7cmV0dXJufWNbZT4+Ml09Y1tlPj4yXSYyNTU7aWYoISgoY1tlPj4yXXwwKT09MTR8KGNbZT4+Ml18MCk9PTEwKSl7aT1mO3JldHVybn1iPVRKKGNbY1tkPj4yXT4+Ml18MCl8MDtjWyhjW2Q+PjJdfDApKzYwPj4yXT1iO2k9ZjtyZXR1cm59ZnVuY3Rpb24gVEooYSl7YT1hfDA7dmFyIGI9MCxkPTA7ZD1pO2k9aSsxNnwwO2I9ZDtjW2I+PjJdPWE7aWYoIShjWyhjW2I+PjJdfDApKzY4Pj4yXXwwKSl7YT0wO2k9ZDtyZXR1cm4gYXwwfWE9T2JbY1soY1tiPj4yXXwwKSs2OD4+Ml0mMjU1XShjW2I+PjJdfDAsMCwwKXwwO2k9ZDtyZXR1cm4gYXwwfWZ1bmN0aW9uIFVKKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wO2Y9aTtpPWkrMTZ8MDtkPWYrNHwwO2U9ZjtjW2Q+PjJdPWE7Y1tlPj4yXT1iO2lmKChjW2U+PjJdfDApPjApY1soY1tkPj4yXXwwKSsxNjQ+PjJdPWNbZT4+Ml07aT1mO3JldHVybiBjWyhjW2Q+PjJdfDApKzE2ND4+Ml18MH1mdW5jdGlvbiBWSihhLGIpe2E9YXwwO2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTA7az1pO2k9aSszMnwwO2Q9aysyMHwwO2U9aysxNnwwO2g9aysxMnwwO2o9ays4fDA7Zj1rKzR8MDtnPWs7Y1tkPj4yXT1hO2NbZT4+Ml09YjtjW2g+PjJdPTA7Y1tqPj4yXT1jWyhjW2U+PjJdfDApKzU2Pj4yXTtjWyhjW2U+PjJdfDApKzU2Pj4yXT0wO3doaWxlKDEpe2lmKCEoY1tqPj4yXXwwKSlicmVhaztjW2Y+PjJdPWNbY1tqPj4yXT4+Ml07Y1tnPj4yXT1jWyhjW2o+PjJdfDApKzI0Pj4yXTtpZigoY1tmPj4yXXwwKT09KGNbZD4+Ml18MCkpe2NbaD4+Ml09Y1tqPj4yXTtjWyhjW2U+PjJdfDApKzU2Pj4yXT1jW2g+PjJdO2NbKGNbaD4+Ml18MCkrMjQ+PjJdPTB9ZWxzZXtjWyhjW2o+PjJdfDApKzI0Pj4yXT1jWyhjW2Y+PjJdfDApKzM0ND4+Ml07Y1soY1tmPj4yXXwwKSszNDQ+PjJdPWNbaj4+Ml19Y1tqPj4yXT1jW2c+PjJdfWk9aztyZXR1cm4gY1toPj4yXXwwfWZ1bmN0aW9uIFdKKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTAsZz0wO2c9aTtpPWkrMzJ8MDtiPWcrMTZ8MDtkPWcrMTJ8MDtlPWcrNHwwO2Y9ZztjW2Q+PjJdPWE7Y1tnKzg+PjJdPTU7ZG8gaWYoISgoY1soY1tkPj4yXXwwKSszMTY+PjJdfDApJTV8MCkpe2NbZj4+Ml09KGNbKGNbZD4+Ml18MCkrMzE2Pj4yXXwwKSs1PDwyO2Y9Y1tmPj4yXXwwO2NbZT4+Ml09VXcoY1tkPj4yXXwwLGNbKGNbZD4+Ml18MCkrMzQwPj4yXXwwLGYsKChmfDApPDApPDwzMT4+MzEpfDA7aWYoY1tlPj4yXXwwKXtmPShjW2U+PjJdfDApKyhjWyhjW2Q+PjJdfDApKzMxNj4+Ml08PDIpfDA7Y1tmPj4yXT0wO2NbZis0Pj4yXT0wO2NbZis4Pj4yXT0wO2NbZisxMj4+Ml09MDtjW2YrMTY+PjJdPTA7Y1soY1tkPj4yXXwwKSszNDA+PjJdPWNbZT4+Ml07YnJlYWt9Y1tiPj4yXT03O2Y9Y1tiPj4yXXwwO2k9ZztyZXR1cm4gZnwwfXdoaWxlKDApO2NbYj4+Ml09MDtmPWNbYj4+Ml18MDtpPWc7cmV0dXJuIGZ8MH1mdW5jdGlvbiBYSihhLGIpe2E9YXwwO2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTA7ZD1pO2k9aSsxNnwwO2Y9ZCs0fDA7ZT1kO2NbZj4+Ml09YTtjW2U+PjJdPWI7YT1jW2U+PjJdfDA7Zz0oY1tmPj4yXXwwKSszMTZ8MDtiPWNbZz4+Ml18MDtjW2c+PjJdPWIrMTtjWyhjWyhjW2Y+PjJdfDApKzM0MD4+Ml18MCkrKGI8PDIpPj4yXT1hO2hJKGNbZT4+Ml18MCk7aT1kO3JldHVybn1mdW5jdGlvbiBZSihiLGUsZil7Yj1ifDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wO3A9aTtpPWkrMzJ8MDtnPXArMjB8MDtoPXArMTZ8MDtqPXArMTJ8MDtrPXArMjR8MDtsPXArOHwwO249cCs0fDA7bT1wO2NbaD4+Ml09YjtjW2o+PjJdPWU7YVtrPj4wXT1mO2NbbD4+Ml09Y1soY1toPj4yXXwwKSs0Pj4yXTtjW24+PjJdPTA7Y1ttPj4yXT1jWyhjW2w+PjJdfDApKzcyPj4yXTt3aGlsZSgxKXtpZighKGNbbT4+Ml18MCkpYnJlYWs7aWYoKGNbKGNbbT4+Ml18MCkrND4+Ml18MCk9PShjW2o+PjJdfDApPyhjW2NbbT4+Ml0+PjJdfDApPT0oY1toPj4yXXwwKTowKXtvPTU7YnJlYWt9Y1ttPj4yXT1jWyhjW20+PjJdfDApKzEyPj4yXX1pZigob3wwKT09NSljW24+PjJdPWNbbT4+Ml07ZG8gaWYoIShjW24+PjJdfDApKXtjW24+PjJdPWtnKDE2LDApfDA7aWYoY1tuPj4yXXwwKXtjWyhjW24+PjJdfDApKzQ+PjJdPWNbaj4+Ml07Y1tjW24+PjJdPj4yXT1jW2g+PjJdO2NbKGNbbj4+Ml18MCkrMTI+PjJdPWNbKGNbbD4+Ml18MCkrNzI+PjJdO2NbKGNbbD4+Ml18MCkrNzI+PjJdPWNbbj4+Ml07YnJlYWt9Y1tnPj4yXT03O289Y1tnPj4yXXwwO2k9cDtyZXR1cm4gb3wwfXdoaWxlKDApO2lmKChkW2s+PjBdfDB8MCk+KGRbKGNbbj4+Ml18MCkrOD4+MF18MHwwKSlhWyhjW24+PjJdfDApKzg+PjBdPWFbaz4+MF18MDtjW2c+PjJdPTA7bz1jW2c+PjJdfDA7aT1wO3JldHVybiBvfDB9ZnVuY3Rpb24gWkooYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTA7Zz1pO2k9aSszMnwwO2U9ZysyMHwwO2g9ZysxNnwwO2s9ZysxMnwwO2w9Zys4fDA7aj1nKzR8MDtmPWc7Y1tlPj4yXT1hO2NbaD4+Ml09YjtjW2s+PjJdPWQ7Y1tsPj4yXT0oKGNbKGNbZT4+Ml18MCkrMzY+PjJdfDApPj4+MCkvNXwwO2E9KGNbaz4+Ml18MCktKGNbaD4+Ml18MCl8MDthPWErKFZGKGNbZT4+Ml18MCxjW2g+PjJdfDApfDApfDA7Y1tqPj4yXT0oKGErKGNbbD4+Ml18MCl8MCk+Pj4wKS8oKGNbbD4+Ml18MCk+Pj4wKXwwO2NbZj4+Ml09KGNbaD4+Ml18MCktKGNbaz4+Ml18MCktKGNbaj4+Ml18MCk7aWYoKGNbaD4+Ml18MCk+Pj4wPigoKChjWzM4NF18MCk+Pj4wKS8oKGNbKGNbZT4+Ml18MCkrMzI+PjJdfDApPj4+MCl8MCkrMXwwKT4+PjA/KGNbZj4+Ml18MCk+Pj4wPCgoKChjWzM4NF18MCk+Pj4wKS8oKGNbKGNbZT4+Ml18MCkrMzI+PjJdfDApPj4+MCl8MCkrMXwwKT4+PjA6MCljW2Y+PjJdPShjW2Y+PjJdfDApKy0xO3doaWxlKDEpe2w9VkYoY1tlPj4yXXwwLGNbZj4+Ml18MCl8MDtpZigobHwwKT09KGNbZj4+Ml18MCkpYj0xO2Vsc2UgYj0oY1tmPj4yXXwwKT09KCgoKGNbMzg0XXwwKT4+PjApLygoY1soY1tlPj4yXXwwKSszMj4+Ml18MCk+Pj4wKXwwKSsxfDApO2Q9Y1tmPj4yXXwwO2lmKCFiKWJyZWFrO2NbZj4+Ml09ZCstMX1pPWc7cmV0dXJuIGR8MH1mdW5jdGlvbiBfSihiKXtiPWJ8MDt2YXIgZT0wLGY9MCxnPTA7Zj1pO2k9aSsxNnwwO2c9Zis0fDA7ZT1mO2NbZz4+Ml09YjtjW2U+PjJdPWNbKGNbZz4+Ml18MCkrOD4+Ml07d2hpbGUoMSl7aWYoIShjW2U+PjJdfDApKWJyZWFrO2c9KGNbZT4+Ml18MCkrNjR8MDthW2c+PjBdPShkW2c+PjBdfDApJi01O2NbZT4+Ml09Y1soY1tlPj4yXXwwKSs4Pj4yXX1pPWY7cmV0dXJufWZ1bmN0aW9uICRKKGIsZSxmLGcpe2I9YnwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO3ZhciBoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MDt6PWk7aT1pKzY0fDA7aD16KzUyfDA7aj16KzQ4fDA7az16KzQ0fDA7bD16KzQwfDA7bT16KzM2fDA7dD16KzMyfDA7eD16KzI4fDA7bz16KzU3fDA7cz16KzI0fDA7cD16KzIwfDA7dT16KzE2fDA7cT16KzEyfDA7dz16Kzh8MDtuPXorNTZ8MDtyPXorNHwwO3Y9ejtjW2o+PjJdPWI7Y1trPj4yXT1lO2NbbD4+Ml09ZjtjW20+PjJdPWc7Yj1WRihjW2o+PjJdfDAsY1tsPj4yXXwwKXwwO2RvIGlmKChifDApIT0oY1tsPj4yXXwwKT8oY1tsPj4yXXwwKSE9KCgoKGNbMzg0XXwwKT4+PjApLygoY1soY1tqPj4yXXwwKSszMj4+Ml18MCk+Pj4wKXwwKSsxfDApOjApe2NbdD4+Ml09Z3IoKGNbKGNbKGNbaj4+Ml18MCkrMTI+PjJdfDApKzU2Pj4yXXwwKSszNnwwKXwwO2lmKCEoY1t0Pj4yXXwwKSl7Y1toPj4yXT0xMDE7eT1jW2g+PjJdfDA7aT16O3JldHVybiB5fDB9Y1t4Pj4yXT1XRihjW2o+PjJdfDAsY1tsPj4yXXwwLG8scyl8MDtpZihjW3g+PjJdfDApe2NbaD4+Ml09Y1t4Pj4yXTt5PWNbaD4+Ml18MDtpPXo7cmV0dXJuIHl8MH1pZigoZFtvPj4wXXwwfDApPT0xKXtjW2g+PjJdPVFqKDYxNzUxKXwwO3k9Y1toPj4yXXwwO2k9ejtyZXR1cm4geXwwfWlmKChkW28+PjBdfDB8MCk9PTIpe2lmKGNbbT4+Ml18MClicmVhaztjW3g+PjJdPWFLKGNbaj4+Ml18MCx1LHAsY1tsPj4yXXwwLDEpfDA7aWYoIShjW3g+PjJdfDApKXtRQihjW3U+PjJdfDApO2JyZWFrfWNbaD4+Ml09Y1t4Pj4yXTt5PWNbaD4+Ml18MDtpPXo7cmV0dXJuIHl8MH1hW24+PjBdPTA7Y1tyPj4yXT0wO2NbeD4+Ml09WEYoY1tqPj4yXXwwLGNbbD4+Ml18MCx3LDApfDA7aWYoY1t4Pj4yXXwwKXtjW2g+PjJdPWNbeD4+Ml07eT1jW2g+PjJdfDA7aT16O3JldHVybiB5fDB9aWYoIShjW20+PjJdfDApKXthW24+PjBdPTI7Y1tyPj4yXT1jW2s+PjJdfWRve2NbeD4+Ml09YUsoY1tqPj4yXXwwLHYscSxjW3I+PjJdfDAsYVtuPj4wXXwwKXwwO2lmKGNbeD4+Ml18MCl7eT0xOTticmVha31RQihjW3Y+PjJdfDApO2lmKCEoY1ttPj4yXXwwKSlicmVha313aGlsZSgoY1txPj4yXXwwKT4+PjA+KGNbaz4+Ml18MCk+Pj4wKTtpZigoeXwwKT09MTkpe1FCKGNbdz4+Ml18MCk7Y1toPj4yXT1jW3g+PjJdO3k9Y1toPj4yXXwwO2k9ejtyZXR1cm4geXwwfWNbeD4+Ml09YksoY1tqPj4yXXwwLGNbdz4+Ml18MCxhW28+PjBdfDAsY1tzPj4yXXwwLGNbcT4+Ml18MCxjW20+PjJdfDApfDA7UUIoY1t3Pj4yXXwwKTtpZihjW3g+PjJdfDApe2NbaD4+Ml09Y1t4Pj4yXTt5PWNbaD4+Ml18MDtpPXo7cmV0dXJuIHl8MH19d2hpbGUoMCk7aWYoIShjW20+PjJdfDApKXt3aGlsZSgxKXtjW2w+PjJdPShjW2w+PjJdfDApKy0xO2lmKChjW2w+PjJdfDApPT0oKCgoY1szODRdfDApPj4+MCkvKChjWyhjW2o+PjJdfDApKzMyPj4yXXwwKT4+PjApfDApKzF8MCkpY29udGludWU7eT1WRihjW2o+PjJdfDAsY1tsPj4yXXwwKXwwO2lmKCh5fDApIT0oY1tsPj4yXXwwKSlicmVha31hWyhjW2o+PjJdfDApKzE5Pj4wXT0xO2NbKGNbaj4+Ml18MCkrNDQ+PjJdPWNbbD4+Ml19Y1toPj4yXT0wO3k9Y1toPj4yXXwwO2k9ejtyZXR1cm4geXwwfWZ1bmN0aW9uIGFLKGIsZSxmLGcsaCl7Yj1ifDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7dmFyIGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wLEU9MCxGPTAsRz0wLEg9MCxJPTAsSj0wLEs9MCxMPTA7TD1pO2k9aSsxMTJ8MDtIPUwrOTZ8MDttPUwrOTJ8MDtuPUwrODh8MDtvPUwrODR8MDtwPUwrODB8MDtxPUwrMTAyfDA7Rj1MKzc2fDA7Sz1MKzcyfDA7Qj1MKzY4fDA7ej1MKzY0fDA7Sj1MKzYwfDA7ST1MKzU2fDA7QT1MKzUyfDA7eT1MKzQ4fDA7Rz1MKzEwMXwwO0M9TCs0NHwwO2s9TCsxMDB8MDtFPUwrNDB8MDt3PUwrMzZ8MDtzPUwrMzJ8MDt4PUwrMjh8MDtyPUwrMjR8MDt2PUwrMjB8MDt1PUwrMTZ8MDt0PUwrMTJ8MDtEPUwrOHwwO2o9TCs0fDA7bD1MO2NbbT4+Ml09YjtjW24+PjJdPWU7Y1tvPj4yXT1mO2NbcD4+Ml09ZzthW3E+PjBdPWg7Y1tKPj4yXT0wO2NbST4+Ml09MDtjW0Y+PjJdPWNbKGNbbT4+Ml18MCkrMTI+PjJdO2NbQT4+Ml09SkYoY1ttPj4yXXwwKXwwO2NbQj4+Ml09Z3IoKGNbKGNbRj4+Ml18MCkrNTY+PjJdfDApKzM2fDApfDA7aWYoKGNbQj4+Ml18MCk+Pj4wPj0oY1tBPj4yXXwwKT4+PjApe2NbSD4+Ml09UWooNjM3OTMpfDA7Sz1jW0g+PjJdfDA7aT1MO3JldHVybiBLfDB9YTpkbyBpZigoY1tCPj4yXXwwKT4+PjA+MCl7YVtHPj4wXT0wO2NbQz4+Ml09MDtkbyBpZigoZFtxPj4wXXwwKT09MSl7aWYoKGNbcD4+Ml18MCk+Pj4wPD0oY1tBPj4yXXwwKT4+PjApe2NbSz4+Ml09V0YoY1ttPj4yXXwwLGNbcD4+Ml18MCxrLDApfDA7aWYoY1tLPj4yXXwwKXtjW0g+PjJdPWNbSz4+Ml07Sz1jW0g+PjJdfDA7aT1MO3JldHVybiBLfDB9ZWxzZXtpZigoZFtrPj4wXXwwKSE9MilicmVhazthW0c+PjBdPTE7YnJlYWt9fX1lbHNlIGlmKChkW3E+PjBdfDApPT0yKWFbRz4+MF09MTt3aGlsZSgwKTtjW0s+PjJdPUdnKGNbKGNbRj4+Ml18MCkrNzI+PjJdfDApfDA7aWYoY1tLPj4yXXwwKXtjW0g+PjJdPWNbSz4+Ml07Sz1jW0g+PjJdfDA7aT1MO3JldHVybiBLfDB9ZnQoKGNbKGNbRj4+Ml18MCkrNTY+PjJdfDApKzM2fDAsKGNbQj4+Ml18MCktMXwwKTtiOndoaWxlKDEpe2NbST4+Ml09Y1tKPj4yXTtpZihjW0k+PjJdfDApY1t5Pj4yXT1ncihjWyhjW0k+PjJdfDApKzU2Pj4yXXwwKXwwO2Vsc2UgY1t5Pj4yXT1ncigoY1soY1tGPj4yXXwwKSs1Nj4+Ml18MCkrMzJ8MCl8MDtpZigoY1t5Pj4yXXwwKT4+PjA8PShjW0E+PjJdfDApPj4+MD8oZT1jW0M+PjJdfDAsY1tDPj4yXT1lKzEsZT4+PjA8PShjW0I+PjJdfDApPj4+MCk6MCljW0s+PjJdPWlLKGNbbT4+Ml18MCxjW3k+PjJdfDAsSiwwKXwwO2Vsc2UgY1tLPj4yXT1Raig2Mzg0OSl8MDtpZihjW0s+PjJdfDApe2o9MjM7YnJlYWt9Y1t6Pj4yXT1ncigoY1soY1tKPj4yXXwwKSs1Nj4+Ml18MCkrNHwwKXwwO2M6ZG8gaWYoKGNbej4+Ml18MCkhPTB8KGFbRz4+MF18MCkhPTApe2lmKChjW3o+PjJdfDApPj4+MD4oKCgoY1soY1ttPj4yXXwwKSszNj4+Ml18MCk+Pj4wKS80fDApLTJ8MCk+Pj4wKXtqPTI4O2JyZWFrIGJ9ZG8gaWYoZFtHPj4wXXwwKXtpZigoY1twPj4yXXwwKSE9KGNbeT4+Ml18MCkpe2lmKChjW3k+PjJdfDApPj4+MD49KGNbcD4+Ml18MCk+Pj4wKWJyZWFrO2lmKChkW3E+PjBdfDApIT0yKWJyZWFrfWNbY1tvPj4yXT4+Ml09Y1t5Pj4yXTtjW2Nbbj4+Ml0+PjJdPWNbSj4+Ml07YVtHPj4wXT0wO2NbSz4+Ml09R2coY1soY1tKPj4yXXwwKSs3Mj4+Ml18MCl8MDtpZihjW0s+PjJdfDApYnJlYWsgYTtkbyBpZighKGNbej4+Ml18MCkpe2lmKCEoY1tJPj4yXXwwKSl7ZT0oY1soY1tGPj4yXXwwKSs1Nj4+Ml18MCkrMzJ8MDtmPWNbKGNbSj4+Ml18MCkrNTY+PjJdfDA7YVtlPj4wXT1hW2Y+PjBdfDA7YVtlKzE+PjBdPWFbZisxPj4wXXwwO2FbZSsyPj4wXT1hW2YrMj4+MF18MDthW2UrMz4+MF09YVtmKzM+PjBdfDA7YnJlYWt9Y1tLPj4yXT1HZyhjWyhjW0k+PjJdfDApKzcyPj4yXXwwKXwwO2lmKGNbSz4+Ml18MClicmVhayBhO2U9Y1soY1tJPj4yXXwwKSs1Nj4+Ml18MDtmPWNbKGNbSj4+Ml18MCkrNTY+PjJdfDA7YVtlPj4wXT1hW2Y+PjBdfDA7YVtlKzE+PjBdPWFbZisxPj4wXXwwO2FbZSsyPj4wXT1hW2YrMj4+MF18MDthW2UrMz4+MF09YVtmKzM+PjBdfDB9ZWxzZXtjW3c+PjJdPWdyKChjWyhjW0o+PjJdfDApKzU2Pj4yXXwwKSs4fDApfDA7aWYoKGNbdz4+Ml18MCk+Pj4wPihjW0E+PjJdfDApPj4+MCl7aj00MDticmVhayBifWNbSz4+Ml09aUsoY1ttPj4yXXwwLGNbdz4+Ml18MCxFLDApfDA7aWYoY1tLPj4yXXwwKWJyZWFrIGE7Y1tLPj4yXT1HZyhjWyhjW0U+PjJdfDApKzcyPj4yXXwwKXwwO2g9Y1tFPj4yXXwwO2lmKGNbSz4+Ml18MCl7aj00MzticmVhayBifWU9Y1toKzU2Pj4yXXwwO2Y9Y1soY1tKPj4yXXwwKSs1Nj4+Ml18MDthW2U+PjBdPWFbZj4+MF18MDthW2UrMT4+MF09YVtmKzE+PjBdfDA7YVtlKzI+PjBdPWFbZisyPj4wXXwwO2FbZSszPj4wXT1hW2YrMz4+MF18MDtmdCgoY1soY1tFPj4yXXwwKSs1Nj4+Ml18MCkrNHwwLChjW3o+PjJdfDApLTF8MCk7VFIoKGNbKGNbRT4+Ml18MCkrNTY+PjJdfDApKzh8MCwoY1soY1tKPj4yXXwwKSs1Nj4+Ml18MCkrMTJ8MCwoY1t6Pj4yXXwwKS0xPDwyfDApfDA7UUIoY1tFPj4yXXwwKTtpZighKGNbST4+Ml18MCkpe2Z0KChjWyhjW0Y+PjJdfDApKzU2Pj4yXXwwKSszMnwwLGNbdz4+Ml18MCk7YnJlYWt9Y1tLPj4yXT1HZyhjWyhjW0k+PjJdfDApKzcyPj4yXXwwKXwwO2lmKGNbSz4+Ml18MClicmVhayBhO2Z0KGNbKGNbST4+Ml18MCkrNTY+PjJdfDAsY1t3Pj4yXXwwKX13aGlsZSgwKTtjW0o+PjJdPTA7YnJlYWsgY313aGlsZSgwKTtpZigoY1t6Pj4yXXwwKT4+PjA+MCl7Y1tyPj4yXT1jWyhjW0o+PjJdfDApKzU2Pj4yXTtlPShjW3A+PjJdfDApPj4+MD4wO2Nbcz4+Ml09MDtkOmRvIGlmKGUpaWYoKGRbcT4+MF18MCk9PTIpe2Nbdj4+Ml09MDt3aGlsZSgxKXtpZigoY1t2Pj4yXXwwKT4+PjA+PShjW3o+PjJdfDApPj4+MClicmVhayBkO2NbeD4+Ml09Z3IoKGNbcj4+Ml18MCkrKDgrKGNbdj4+Ml08PDIpKXwwKXwwO2o9Y1t2Pj4yXXwwO2lmKChjW3g+PjJdfDApPj4+MDw9KGNbcD4+Ml18MCk+Pj4wKWJyZWFrO2Nbdj4+Ml09aisxfWNbcz4+Ml09ajticmVha31lbHNle2U9Z3IoKGNbcj4+Ml18MCkrOHwwKXwwO2NbdT4+Ml09RGooZS0oY1twPj4yXXwwKXwwKXwwO2Nbdj4+Ml09MTt3aGlsZSgxKXtpZigoY1t2Pj4yXXwwKT4+PjA+PShjW3o+PjJdfDApPj4+MClicmVhayBkO2U9Z3IoKGNbcj4+Ml18MCkrKDgrKGNbdj4+Ml08PDIpKXwwKXwwO2NbdD4+Ml09RGooZS0oY1twPj4yXXwwKXwwKXwwO2lmKChjW3Q+PjJdfDApPChjW3U+PjJdfDApKXtjW3M+PjJdPWNbdj4+Ml07Y1t1Pj4yXT1jW3Q+PjJdfWNbdj4+Ml09KGNbdj4+Ml18MCkrMX19d2hpbGUoMCk7Y1t4Pj4yXT1ncigoY1tyPj4yXXwwKSsoOCsoY1tzPj4yXTw8MikpfDApfDA7aWYoKGNbeD4+Ml18MCk+Pj4wPihjW0E+PjJdfDApPj4+MCl7aj02MzticmVhayBifWlmKChhW0c+PjBdfDApIT0wPyhjW3g+PjJdfDApIT0oY1twPj4yXXwwKTowKXtpZigoY1t4Pj4yXXwwKT4+PjA+PShjW3A+PjJdfDApPj4+MClicmVhaztpZigoZFtxPj4wXXwwKSE9MilicmVha31jW2Nbbz4+Ml0+PjJdPWNbeD4+Ml07Y1tLPj4yXT1HZyhjWyhjW0o+PjJdfDApKzcyPj4yXXwwKXwwO2lmKGNbSz4+Ml18MClicmVhayBhO2lmKChjW3M+PjJdfDApPj4+MDwoKGNbej4+Ml18MCktMXwwKT4+PjApe2U9KGNbcj4+Ml18MCkrKDgrKGNbcz4+Ml08PDIpKXwwO2Y9KGNbcj4+Ml18MCkrKDQrKGNbej4+Ml08PDIpKXwwO2FbZT4+MF09YVtmPj4wXXwwO2FbZSsxPj4wXT1hW2YrMT4+MF18MDthW2UrMj4+MF09YVtmKzI+PjBdfDA7YVtlKzM+PjBdPWFbZiszPj4wXXwwfWZ0KChjW3I+PjJdfDApKzR8MCwoY1t6Pj4yXXwwKS0xfDApO2U9KGpLKGNbbT4+Ml18MCxjW2Nbbz4+Ml0+PjJdfDApfDApIT0wXjE7Y1tEPj4yXT1lPzE6MDtjW0s+PjJdPWlLKGNbbT4+Ml18MCxjW2Nbbz4+Ml0+PjJdfDAsY1tuPj4yXXwwLGNbRD4+Ml18MCl8MDtkbyBpZighKGNbSz4+Ml18MCkpe2NbSz4+Ml09R2coY1soY1tjW24+PjJdPj4yXXwwKSs3Mj4+Ml18MCl8MDtpZighKGNbSz4+Ml18MCkpYnJlYWs7UUIoY1tjW24+PjJdPj4yXXwwKTtjW2Nbbj4+Ml0+PjJdPTB9d2hpbGUoMCk7YVtHPj4wXT0wfX1lbHNle2NbSz4+Ml09R2coY1soY1tKPj4yXXwwKSs3Mj4+Ml18MCl8MDtpZihjW0s+PjJdfDApYnJlYWsgYTtjW2Nbbz4+Ml0+PjJdPWNbeT4+Ml07ZT0oY1soY1tGPj4yXXwwKSs1Nj4+Ml18MCkrMzJ8MDtmPWNbKGNbSj4+Ml18MCkrNTY+PjJdfDA7YVtlPj4wXT1hW2Y+PjBdfDA7YVtlKzE+PjBdPWFbZisxPj4wXXwwO2FbZSsyPj4wXT1hW2YrMj4+MF18MDthW2UrMz4+MF09YVtmKzM+PjBdfDA7Y1tjW24+PjJdPj4yXT1jW0o+PjJdO2NbSj4+Ml09MH13aGlsZSgwKTtRQihjW0k+PjJdfDApO2NbST4+Ml09MDtpZighKGFbRz4+MF18MCkpYnJlYWsgYX1pZigoanwwKT09MjMpe2NbSj4+Ml09MDticmVha31lbHNlIGlmKChqfDApPT0yOCl7Y1tLPj4yXT1Raig2Mzg3OCl8MDticmVha31lbHNlIGlmKChqfDApPT00MCl7Y1tLPj4yXT1Raig2MzkxMil8MDticmVha31lbHNlIGlmKChqfDApPT00Myl7UUIoaCk7YnJlYWt9ZWxzZSBpZigoanwwKT09NjMpe2NbSz4+Ml09UWooNjM5NzcpfDA7YnJlYWt9fWVsc2V7Y1tqPj4yXT0wPT0oZFsoY1ttPj4yXXwwKSsxOT4+MF18MCk/MTowO2NbSz4+Ml09R2coY1soY1soY1ttPj4yXXwwKSsxMj4+Ml18MCkrNzI+PjJdfDApfDA7aWYoY1tLPj4yXXwwKXtjW0g+PjJdPWNbSz4+Ml07Sz1jW0g+PjJdfDA7aT1MO3JldHVybiBLfDB9Rz0oY1ttPj4yXXwwKSs0NHwwO2NbRz4+Ml09KGNbRz4+Ml18MCkrMTtpZigoY1soY1ttPj4yXXwwKSs0ND4+Ml18MCk9PSgoKChjWzM4NF18MCk+Pj4wKS8oKGNbKGNbbT4+Ml18MCkrMzI+PjJdfDApPj4+MCl8MCkrMXwwKSl7Rz0oY1ttPj4yXXwwKSs0NHwwO2NbRz4+Ml09KGNbRz4+Ml18MCkrMX1kbyBpZigoZFsoY1ttPj4yXXwwKSsxNz4+MF18MCkhPTA/KEc9VkYoY1ttPj4yXXwwLGNbKGNbbT4+Ml18MCkrNDQ+PjJdfDApfDAsKEd8MCk9PShjWyhjW20+PjJdfDApKzQ0Pj4yXXwwKSk6MCl7Y1tsPj4yXT0wO2NbSz4+Ml09aUsoY1ttPj4yXXwwLGNbKGNbbT4+Ml18MCkrNDQ+PjJdfDAsbCxjW2o+PjJdfDApfDA7aWYoIShjW0s+PjJdfDApKXtjW0s+PjJdPUdnKGNbKGNbbD4+Ml18MCkrNzI+PjJdfDApfDA7UUIoY1tsPj4yXXwwKX1pZihjW0s+PjJdfDApe2NbSD4+Ml09Y1tLPj4yXTtLPWNbSD4+Ml18MDtpPUw7cmV0dXJuIEt8MH1lbHNle0c9KGNbbT4+Ml18MCkrNDR8MDtjW0c+PjJdPShjW0c+PjJdfDApKzE7aWYoKGNbKGNbbT4+Ml18MCkrNDQ+PjJdfDApIT0oKCgoY1szODRdfDApPj4+MCkvKChjWyhjW20+PjJdfDApKzMyPj4yXXwwKT4+PjApfDApKzF8MCkpYnJlYWs7Rz0oY1ttPj4yXXwwKSs0NHwwO2NbRz4+Ml09KGNbRz4+Ml18MCkrMTticmVha319d2hpbGUoMCk7ZnQoKGNbKGNbKGNbbT4+Ml18MCkrMTI+PjJdfDApKzU2Pj4yXXwwKSsyOHwwLGNbKGNbbT4+Ml18MCkrNDQ+PjJdfDApO2NbY1tvPj4yXT4+Ml09Y1soY1ttPj4yXXwwKSs0ND4+Ml07Y1tLPj4yXT1pSyhjW20+PjJdfDAsY1tjW28+PjJdPj4yXXwwLGNbbj4+Ml18MCxjW2o+PjJdfDApfDA7aWYoY1tLPj4yXXwwKXtjW0g+PjJdPWNbSz4+Ml07Sz1jW0g+PjJdfDA7aT1MO3JldHVybiBLfDB9ZWxzZXtjW0s+PjJdPUdnKGNbKGNbY1tuPj4yXT4+Ml18MCkrNzI+PjJdfDApfDA7aWYoIShjW0s+PjJdfDApKWJyZWFrO1FCKGNbY1tuPj4yXT4+Ml18MCk7Y1tjW24+PjJdPj4yXT0wO2JyZWFrfX13aGlsZSgwKTtRQihjW0o+PjJdfDApO1FCKGNbST4+Ml18MCk7Y1tIPj4yXT1jW0s+PjJdO0s9Y1tIPj4yXXwwO2k9TDtyZXR1cm4gS3wwfWZ1bmN0aW9uIGJLKGIsZSxmLGcsaCxqKXtiPWJ8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDt2YXIgaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MDt2PWk7aT1pKzQ4fDA7bj12KzQwfDA7bz12KzM2fDA7az12KzMyfDA7cD12KzQ0fDA7cT12KzI4fDA7cj12KzI0fDA7dz12KzIwfDA7dD12KzE2fDA7cz12KzEyfDA7eD12Kzh8MDt1PXYrNHwwO2w9djtjW28+PjJdPWI7Y1trPj4yXT1lO2FbcD4+MF09ZjtjW3E+PjJdPWc7Y1tyPj4yXT1oO2Nbdz4+Ml09ajtjW3M+PjJdPWNbKGNbaz4+Ml18MCkrODQ+PjJdO2NbeD4+Ml09Y1tjW28+PjJdPj4yXTtjW3U+PjJdPWNLKGNbeD4+Ml18MCxjWyhjW2s+PjJdfDApKzcyPj4yXXwwLGNbcj4+Ml18MCxjW3c+PjJdfDApfDA7aWYoY1t1Pj4yXXwwKXtjW24+PjJdPWNbdT4+Ml07eD1jW24+PjJdfDA7aT12O3JldHVybiB4fDB9Y1soY1trPj4yXXwwKSs4ND4+Ml09Y1tyPj4yXTtpZigoZFtwPj4wXXwwfDApIT01PyhkW3A+PjBdfDB8MCkhPTE6MCl7Y1tsPj4yXT1ncihjWyhjW2s+PjJdfDApKzU2Pj4yXXwwKXwwO2lmKChjW2w+PjJdfDApIT0wPyhlSyhjW28+PjJdfDAsY1tsPj4yXXwwLDQsY1tyPj4yXXwwLHUpLChjW3U+PjJdfDApIT0wKTowKXtjW24+PjJdPWNbdT4+Ml07eD1jW24+PjJdfDA7aT12O3JldHVybiB4fDB9fWVsc2UgbT01O2lmKChtfDApPT01PyhjW3U+PjJdPWRLKGNbaz4+Ml18MCl8MCwoY1t1Pj4yXXwwKSE9MCk6MCl7Y1tuPj4yXT1jW3U+PjJdO3g9Y1tuPj4yXXwwO2k9djtyZXR1cm4geHwwfWRvIGlmKChkW3A+PjBdfDB8MCkhPTEpe2NbdT4+Ml09WEYoY1tvPj4yXXwwLGNbcT4+Ml18MCx0LDApfDA7aWYoY1t1Pj4yXXwwKXtjW24+PjJdPWNbdT4+Ml07eD1jW24+PjJdfDA7aT12O3JldHVybiB4fDB9Y1t1Pj4yXT1HZyhjWyhjW3Q+PjJdfDApKzcyPj4yXXwwKXwwO2s9Y1t0Pj4yXXwwO2lmKGNbdT4+Ml18MCl7UUIoayk7Y1tuPj4yXT1jW3U+PjJdO3g9Y1tuPj4yXXwwO2k9djtyZXR1cm4geHwwfWVsc2V7Y1t1Pj4yXT1mSyhrLGNbcz4+Ml18MCxjW3I+PjJdfDAsYVtwPj4wXXwwKXwwO1FCKGNbdD4+Ml18MCk7aWYoY1t1Pj4yXXwwKWJyZWFrO2VLKGNbbz4+Ml18MCxjW3I+PjJdfDAsYVtwPj4wXXwwLGNbcT4+Ml18MCx1KTticmVha319d2hpbGUoMCk7Y1tuPj4yXT1jW3U+PjJdO3g9Y1tuPj4yXXwwO2k9djtyZXR1cm4geHwwfWZ1bmN0aW9uIGNLKGYsZyxoLGope2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO3ZhciBrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wO3U9aTtpPWkrNDh8MDtsPXUrMzZ8MDttPXUrMzJ8MDtuPXUrMjh8MDtvPXUrMjR8MDtrPXUrMjB8MDtzPXUrMTZ8MDtwPXUrMTJ8MDt0PXUrOHwwO3E9dSs0fDA7cj11O2NbbT4+Ml09ZjtjW24+PjJdPWc7Y1tvPj4yXT1oO2Nbaz4+Ml09ajtjW3A+PjJdPTA7aWYoKGFbKGNbbT4+Ml18MCkrMTM+PjBdfDApIT0wPyhjW3Q+PjJdPUdnKGNbbj4+Ml18MCl8MCwoY1t0Pj4yXXwwKSE9MCk6MCl7Y1tsPj4yXT1jW3Q+PjJdO3Q9Y1tsPj4yXXwwO2k9dTtyZXR1cm4gdHwwfWlmKChlWyhjW24+PjJdfDApKzI0Pj4xXSYyfDApIT0wPyhoPXd0KGNbbj4+Ml18MCl8MCxjW3Q+PjJdPWgsMCE9KGh8MCkpOjApe2NbbD4+Ml09Y1t0Pj4yXTt0PWNbbD4+Ml18MDtpPXU7cmV0dXJuIHR8MH1pZighKChjW2s+PjJdfDApIT0wPzE6KGVbKGNbbj4+Ml18MCkrMjQ+PjFdJjh8MCk9PTApKWNbcD4+Ml09Y1soY1tuPj4yXXwwKSsyMD4+Ml07aD0oY1tuPj4yXXwwKSsyNHwwO2JbaD4+MV09ZVtoPj4xXSYtOTtjW3M+PjJdPWhzKGNbbT4+Ml18MCxjW28+PjJdfDApfDA7ZG8gaWYoY1tzPj4yXXwwKXtrPShjW24+PjJdfDApKzI0fDA7YltrPj4xXT1lW2s+PjFdfGVbKGNbcz4+Ml18MCkrMjQ+PjFdJjg7az1jW3M+PjJdfDA7aWYoYVsoY1ttPj4yXXwwKSsxMz4+MF18MCl7aEsoaywoY1soY1ttPj4yXXwwKSsyOD4+Ml18MCkrMXwwKTticmVha31lbHNle0dzKGspO2JyZWFrfX13aGlsZSgwKTtjW3E+PjJdPWNbKGNbbj4+Ml18MCkrMjA+PjJdO2hLKGNbbj4+Ml18MCxjW28+PjJdfDApO2pzKGNbbj4+Ml18MCk7aWYoKGNbcz4+Ml18MCkhPTA/KGRbKGNbbT4+Ml18MCkrMTM+PjBdfDApIT0wOjApe2hLKGNbcz4+Ml18MCxjW3E+PjJdfDApO0pzKGNbcz4+Ml18MCl9ZG8gaWYoY1twPj4yXXwwKXtjW3Q+PjJdPXZnKGNbbT4+Ml18MCxjW3A+PjJdfDAsciwwKXwwO2lmKCEoY1t0Pj4yXXwwKSl7dD0oY1tyPj4yXXwwKSsyNHwwO2JbdD4+MV09ZVt0Pj4xXXw4O2pzKGNbcj4+Ml18MCk7SnMoY1tyPj4yXXwwKTticmVha31pZigoY1twPj4yXXwwKT4+PjA8PShjWyhjW20+PjJdfDApKzMyPj4yXXwwKT4+PjApbWooY1soY1ttPj4yXXwwKSs2MD4+Ml18MCxjW3A+PjJdfDAsY1soY1ttPj4yXXwwKSsyMDg+PjJdfDApO2NbbD4+Ml09Y1t0Pj4yXTt0PWNbbD4+Ml18MDtpPXU7cmV0dXJuIHR8MH13aGlsZSgwKTtjW2w+PjJdPTA7dD1jW2w+PjJdfDA7aT11O3JldHVybiB0fDB9ZnVuY3Rpb24gZEsoYil7Yj1ifDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTA7cT1pO2k9aSs0OHwwO2Y9cSszMnwwO2o9cSsyOHwwO2w9cSsyNHwwO3A9cSsyMHwwO209cSsxNnwwO2s9cSszNnwwO289cSsxMnwwO249cSs4fDA7Zz1xKzR8MDtoPXE7Y1tmPj4yXT1iO2NbbT4+Ml09Y1soY1tmPj4yXXwwKSs1Mj4+Ml07YVtrPj4wXT1hW2NbZj4+Ml0+PjBdfDA7Y1tvPj4yXT1jWyhjW2Y+PjJdfDApKzg0Pj4yXTtjW3A+PjJdPVd0KGNbZj4+Ml18MCl8MDtpZihjW3A+PjJdfDApe249YVtrPj4wXXwwO289Y1tmPj4yXXwwO2Fbbz4+MF09bjtwPWNbcD4+Ml18MDtpPXE7cmV0dXJuIHB8MH1jW2w+PjJdPWVbKGNbZj4+Ml18MCkrMTg+PjFdO2Nbaj4+Ml09MDt3aGlsZSgxKXtiPWNbZj4+Ml18MDtpZigoY1tqPj4yXXwwKT49KGNbbD4+Ml18MCkpYnJlYWs7Y1tuPj4yXT0oY1tiKzU2Pj4yXXwwKSsoZVsoY1tmPj4yXXwwKSsyMD4+MV0mKGRbKGNbKGNbZj4+Ml18MCkrNjQ+PjJdfDApKyhjW2o+PjJdPDwxKT4+MF08PDh8ZFsoY1soY1tmPj4yXXwwKSs2ND4+Ml18MCkrKGNbaj4+Ml08PDEpKzE+PjBdKSk7Z0soY1tmPj4yXXwwLGNbbj4+Ml18MCxwKTtpZighKGFbKGNbZj4+Ml18MCkrND4+MF18MCkpe2NbZz4+Ml09Z3IoY1tuPj4yXXwwKXwwO2VLKGNbbT4+Ml18MCxjW2c+PjJdfDAsNSxjW28+PjJdfDAscCl9Y1tqPj4yXT0oY1tqPj4yXXwwKSsxfWlmKGFbYis0Pj4wXXwwKXtuPWFbaz4+MF18MDtvPWNbZj4+Ml18MDthW28+PjBdPW47cD1jW3A+PjJdfDA7aT1xO3JldHVybiBwfDB9Y1toPj4yXT1ncigoY1soY1tmPj4yXXwwKSs1Nj4+Ml18MCkrKChkWyhjW2Y+PjJdfDApKzU+PjBdfDApKzgpfDApfDA7ZUsoY1ttPj4yXXwwLGNbaD4+Ml18MCw1LGNbbz4+Ml18MCxwKTtuPWFbaz4+MF18MDtvPWNbZj4+Ml18MDthW28+PjBdPW47cD1jW3A+PjJdfDA7aT1xO3JldHVybiBwfDB9ZnVuY3Rpb24gZUsoYixlLGYsZyxoKXtiPWJ8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDt2YXIgaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MDt0PWk7aT1pKzQ4fDA7aj10KzMyfDA7az10KzI4fDA7bD10KzM2fDA7bT10KzI0fDA7bj10KzIwfDA7cT10KzE2fDA7cj10KzEyfDA7bz10Kzh8MDtwPXQrNHwwO3M9dDtjW2o+PjJdPWI7Y1trPj4yXT1lO2FbbD4+MF09ZjtjW20+PjJdPWc7Y1tuPj4yXT1oO2lmKGNbY1tuPj4yXT4+Ml18MCl7aT10O3JldHVybn1pZighKGNbaz4+Ml18MCkpe3M9UWooNTkxODQpfDA7Y1tjW24+PjJdPj4yXT1zO2k9dDtyZXR1cm59Y1tvPj4yXT1WRihjW2o+PjJdfDAsY1trPj4yXXwwKXwwO2Nbcz4+Ml09dmcoY1tjW2o+PjJdPj4yXXwwLGNbbz4+Ml18MCxxLDApfDA7aWYoY1tzPj4yXXwwKXtjW2Nbbj4+Ml0+PjJdPWNbcz4+Ml07aT10O3JldHVybn1jW3A+PjJdPSgoY1trPj4yXXwwKS0oY1tvPj4yXXwwKS0xfDApKjU7ZG8gaWYoKGNbcD4+Ml18MCk+PTApe2Nbcj4+Ml09d2coY1txPj4yXXwwKXwwO2lmKChkW2w+PjBdfDB8MCk9PShkWyhjW3I+PjJdfDApKyhjW3A+PjJdfDApPj4wXXwwfDApPyhnPWdyKChjW3I+PjJdfDApKygoY1twPj4yXXwwKSsxKXwwKXwwLChnfDApPT0oY1ttPj4yXXwwKSk6MClicmVhaztnPUdnKGNbcT4+Ml18MCl8MDtjW3M+PjJdPWc7Y1tjW24+PjJdPj4yXT1nO2lmKCEoY1tzPj4yXXwwKSl7YVsoY1tyPj4yXXwwKSsoY1twPj4yXXwwKT4+MF09YVtsPj4wXXwwO2Z0KChjW3I+PjJdfDApKygoY1twPj4yXXwwKSsxKXwwLGNbbT4+Ml18MCl9fWVsc2V7cz1Raig1OTE5NSl8MDtjW2Nbbj4+Ml0+PjJdPXN9d2hpbGUoMCk7eWcoY1txPj4yXXwwKTtpPXQ7cmV0dXJufWZ1bmN0aW9uIGZLKGIsZixnLGgpe2I9YnwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO3ZhciBqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTA7dj1pO2k9aSs2NHwwO2o9dis1MnwwO2s9dis0OHwwO2w9dis0NHwwO209dis0MHwwO249dis1N3wwO3E9dis1NnwwO289diszNnwwO3I9diszMnwwO3Q9disyOHwwO3M9disyNHwwO3A9djtjW2s+PjJdPWI7Y1tsPj4yXT1mO2NbbT4+Ml09ZzthW24+PjBdPWg7aD1jW2s+PjJdfDA7ZG8gaWYoKGRbbj4+MF18MHwwKT09NCl7dT1ncihjW2grNTY+PjJdfDApfDA7aWYoKHV8MCk9PShjW2w+PjJdfDApKXtmdChjWyhjW2s+PjJdfDApKzU2Pj4yXXwwLGNbbT4+Ml18MCk7YnJlYWt9Y1tqPj4yXT1Raig2MTU4MSl8MDt1PWNbaj4+Ml18MDtpPXY7cmV0dXJuIHV8MH1lbHNle2FbcT4+MF09YVtoPj4wXXwwO2NbdD4+Ml09V3QoY1trPj4yXXwwKXwwO2lmKGNbdD4+Ml18MCl7Y1tqPj4yXT1jW3Q+PjJdO3U9Y1tqPj4yXXwwO2k9djtyZXR1cm4gdXwwfWNbcj4+Ml09ZVsoY1trPj4yXXwwKSsxOD4+MV07Y1tvPj4yXT0wO3doaWxlKDEpe2lmKChjW28+PjJdfDApPj0oY1tyPj4yXXwwKSlicmVhaztjW3M+PjJdPShjWyhjW2s+PjJdfDApKzU2Pj4yXXwwKSsoKGVbKGNbaz4+Ml18MCkrMjA+PjFdfDApJigoZFsoY1soY1trPj4yXXwwKSs2ND4+Ml18MCkrKGNbbz4+Ml08PDEpPj4wXXwwKTw8OHwoZFsoY1soY1trPj4yXXwwKSs2ND4+Ml18MCkrKGNbbz4+Ml08PDEpKzE+PjBdfDApKSk7aWYoKGRbbj4+MF18MHwwKT09Myl7VWJbY1soY1trPj4yXXwwKSs4MD4+Ml0mMjU1XShjW2s+PjJdfDAsY1tzPj4yXXwwLHApO2lmKCgoZVtwKzE2Pj4xXXwwKT4+PjA8KGNbcCsxMj4+Ml18MCk+Pj4wPygoY1tzPj4yXXwwKSsoZVtwKzE4Pj4xXXwwKSstMXwwKT4+PjA8PSgoY1soY1trPj4yXXwwKSs1Nj4+Ml18MCkrKGVbKGNbaz4+Ml18MCkrMjA+PjFdfDApfDApPj4+MDowKT8odD1jW2w+PjJdfDAsKHR8MCk9PShncigoY1tzPj4yXXwwKSsoZVtwKzE4Pj4xXXwwKSstNHwwKXwwKSk6MCl7dT0xMzticmVha319ZWxzZXt0PWdyKGNbcz4+Ml18MCl8MDtpZigodHwwKT09KGNbbD4+Ml18MCkpe3U9MTU7YnJlYWt9fWNbbz4+Ml09KGNbbz4+Ml18MCkrMX1pZigodXwwKT09MTMpZnQoKGNbcz4+Ml18MCkrKGVbcCsxOD4+MV18MCkrLTR8MCxjW20+PjJdfDApO2Vsc2UgaWYoKHV8MCk9PTE1KWZ0KGNbcz4+Ml18MCxjW20+PjJdfDApO2RvIGlmKChjW28+PjJdfDApPT0oY1tyPj4yXXwwKSl7aWYoKGRbbj4+MF18MHwwKT09NT8odT1ncigoY1soY1trPj4yXXwwKSs1Nj4+Ml18MCkrKChkWyhjW2s+PjJdfDApKzU+PjBdfDApKzgpfDApfDAsKHV8MCk9PShjW2w+PjJdfDApKTowKXtmdCgoY1soY1trPj4yXXwwKSs1Nj4+Ml18MCkrKChkWyhjW2s+PjJdfDApKzU+PjBdfDApKzgpfDAsY1ttPj4yXXwwKTticmVha31jW2o+PjJdPVFqKDYxNjE3KXwwO3U9Y1tqPj4yXXwwO2k9djtyZXR1cm4gdXwwfXdoaWxlKDApO2FbY1trPj4yXT4+MF09YVtxPj4wXXwwfXdoaWxlKDApO2Nbaj4+Ml09MDt1PWNbaj4+Ml18MDtpPXY7cmV0dXJuIHV8MH1mdW5jdGlvbiBnSyhhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wO2w9aTtpPWkrNDh8MDtmPWwrMzZ8MDtnPWwrMzJ8MDtoPWwrMjh8MDtqPWw7az1sKzI0fDA7Y1tmPj4yXT1hO2NbZz4+Ml09YjtjW2g+PjJdPWQ7aWYoY1tjW2g+PjJdPj4yXXwwKXtpPWw7cmV0dXJufVViW2NbKGNbZj4+Ml18MCkrODA+PjJdJjI1NV0oY1tmPj4yXXwwLGNbZz4+Ml18MCxqKTtpZigoZVtqKzE2Pj4xXXwwKT4+PjA+PShjW2orMTI+PjJdfDApPj4+MCl7aT1sO3JldHVybn1jW2s+PjJdPWdyKChjW2c+PjJdfDApKygoZVtqKzE4Pj4xXXwwKS00KXwwKXwwO2VLKGNbKGNbZj4+Ml18MCkrNTI+PjJdfDAsY1trPj4yXXwwLDMsY1soY1tmPj4yXXwwKSs4ND4+Ml18MCxjW2g+PjJdfDApO2k9bDtyZXR1cm59ZnVuY3Rpb24gaEsoYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGY9MCxnPTAsaD0wO2Y9aTtpPWkrMTZ8MDtkPWYrOHwwO2c9Zis0fDA7aD1mO2NbZD4+Ml09YTtjW2c+PjJdPWI7Y1toPj4yXT1jWyhjW2Q+PjJdfDApKzI4Pj4yXTtfYltjWzE1Mj4+Ml0mMjU1XShjWyhjW2g+PjJdfDApKzQ0Pj4yXXwwLGNbY1tkPj4yXT4+Ml18MCxjWyhjW2Q+PjJdfDApKzIwPj4yXXwwLGNbZz4+Ml18MCk7Y1soY1tkPj4yXXwwKSsyMD4+Ml09Y1tnPj4yXTtpZighKChlWyhjW2Q+PjJdfDApKzI0Pj4xXXwwKSYyKSl7aT1mO3JldHVybn1pZighKChlWyhjW2Q+PjJdfDApKzI0Pj4xXXwwKSY4KSl7aT1mO3JldHVybn1oaihjW2Q+PjJdfDAsMyk7aT1mO3JldHVybn1mdW5jdGlvbiBpSyhiLGQsZSxmKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wO2s9aTtpPWkrMzJ8MDtnPWsrMjB8MDtuPWsrMTZ8MDttPWsrMTJ8MDtoPWsrOHwwO2w9ays0fDA7aj1rO2Nbbj4+Ml09YjtjW20+PjJdPWQ7Y1toPj4yXT1lO2NbbD4+Ml09ZjtjW2o+PjJdPVhGKGNbbj4+Ml18MCxjW20+PjJdfDAsY1toPj4yXXwwLGNbbD4+Ml18MCl8MDtmPWNbaD4+Ml18MDtkbyBpZighKGNbaj4+Ml18MCkpe249KFZ0KGNbKGNbZj4+Ml18MCkrNzI+PjJdfDApfDApPjE7Zj1jW2NbaD4+Ml0+PjJdfDA7aWYoIW4pe2FbZj4+MF09MDticmVha31RQihmKTtjW2NbaD4+Ml0+PjJdPTA7Y1tnPj4yXT1Raig2MDMxNil8MDtuPWNbZz4+Ml18MDtpPWs7cmV0dXJuIG58MH1lbHNlIGNbZj4+Ml09MDt3aGlsZSgwKTtjW2c+PjJdPWNbaj4+Ml07bj1jW2c+PjJdfDA7aT1rO3JldHVybiBufDB9ZnVuY3Rpb24gaksoYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wO2Y9aTtpPWkrMTZ8MDtnPWYrOHwwO2Q9Zis0fDA7ZT1mO2NbZz4+Ml09YTtjW2Q+PjJdPWI7Y1tlPj4yXT1jWyhjW2c+PjJdfDApKzYwPj4yXTtpZighKGNbZT4+Ml18MCkpe2c9MDtnPWcmMTtpPWY7cmV0dXJuIGd8MH1nPWNbZD4+Ml18MDtpZihnPj4+MD4ob2ooY1tlPj4yXXwwKXwwKT4+PjApe2c9MTtnPWcmMTtpPWY7cmV0dXJuIGd8MH1nPShuaihjW2U+PjJdfDAsY1tkPj4yXXwwKXwwKSE9MDtnPWcmMTtpPWY7cmV0dXJuIGd8MH1mdW5jdGlvbiBrSyhhKXthPWF8MDt2YXIgYj0wLGU9MDtlPWk7aT1pKzE2fDA7Yj1lO2NbYj4+Ml09YTtpPWU7cmV0dXJuIGRbKGNbYj4+Ml18MCkrMTM+PjBdfDB8MH1mdW5jdGlvbiBsSyhhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTA7bD1pO2k9aSszMnwwO2U9bCsyNHwwO2Y9bCsyMHwwO2c9bCsxNnwwO209bCsxMnwwO2g9bCs4fDA7aj1sKzR8MDtrPWw7Y1tmPj4yXT1hO2NbZz4+Ml09YjtjW20+PjJdPWQ7Y1tqPj4yXT1hZihjW2Y+PjJdfDAsY1ttPj4yXXwwLC0xLGgsMCl8MDtpZihjW2o+PjJdfDApe2NbZT4+Ml09Y1tqPj4yXTttPWNbZT4+Ml18MDtpPWw7cmV0dXJuIG18MH13aGlsZSgxKXttPXRlKGNbaD4+Ml18MCl8MDtjW2o+PjJdPW07aWYoMTAwIT0obXwwKSlicmVhaztjW2s+PjJdPUVlKGNbaD4+Ml18MCwwKXwwO2lmKCEoY1trPj4yXXwwKSljb250aW51ZTtjW2o+PjJdPWxLKGNbZj4+Ml18MCxjW2c+PjJdfDAsY1trPj4yXXwwKXwwO2lmKGNbaj4+Ml18MClicmVha31pZigoY1tqPj4yXXwwKT09MTAxKWNbaj4+Ml09MDtpZihjW2o+PjJdfDApe2s9Y1tnPj4yXXwwO209Y1tmPj4yXXwwO0NqKGssbSxiZihjW2Y+PjJdfDApfDApfVhkKGNbaD4+Ml18MCl8MDtjW2U+PjJdPWNbaj4+Ml07bT1jW2U+PjJdfDA7aT1sO3JldHVybiBtfDB9ZnVuY3Rpb24gbUsoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wO2Q9aTtpPWkrMTZ8MDtlPWQrNHwwO2I9ZDtjW2U+PjJdPWE7bWcoY1tlPj4yXXwwKTtjW2I+PjJdPXFLKGNbZT4+Ml18MCl8MDtpPWQ7cmV0dXJuIGNbYj4+Ml18MH1mdW5jdGlvbiBuSyhhLGIsZCxlKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MDtsPWk7aT1pKzQ4fDA7Zj1sKzQwfDA7Zz1sKzM2fDA7aD1sKzMyfDA7bj1sKzI4fDA7az1sKzI0fDA7bT1sKzh8MDtqPWw7Y1tnPj4yXT1hO2NbaD4+Ml09YjtjW24+PjJdPWQ7Y1ttPj4yXT1lO2Nbaz4+Ml09b3goY1tnPj4yXXwwLGNbbj4+Ml18MCxtKXwwO2lmKCEoY1trPj4yXXwwKSl7Y1tmPj4yXT03O249Y1tmPj4yXXwwO2k9bDtyZXR1cm4gbnwwfWVsc2V7Y1tqPj4yXT1sSyhjW2c+PjJdfDAsY1toPj4yXXwwLGNbaz4+Ml18MCl8MDtUZihjW2c+PjJdfDAsY1trPj4yXXwwKTtjW2Y+PjJdPWNbaj4+Ml07bj1jW2Y+PjJdfDA7aT1sO3JldHVybiBufDB9cmV0dXJuIDB9ZnVuY3Rpb24gb0soYSxkKXthPWF8MDtkPWR8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wO209aTtpPWkrODB8MDtoPW0rNjh8MDtqPW0rNjR8MDtsPW0rNjB8MDtnPW0rNTZ8MDtrPW0rOHwwO2Y9bTtjW2g+PjJdPWE7Y1tqPj4yXT1kO21nKGNbaD4+Ml18MCk7bWcoY1tqPj4yXXwwKTtjW2c+PjJdPUVnKFBmKGNbaD4+Ml18MCl8MCl8MDtpZigoY1tjW2c+PjJdPj4yXXwwKSE9MD8oZD1zZyhjW2o+PjJdfDApfDAsZD1hUyhkfDAsKChkfDApPDApPDwzMT4+MzF8MCx1ZyhjW2o+PjJdfDApfDAsMCl8MCxhPWYsY1thPj4yXT1kLGNbYSs0Pj4yXT1DLGE9QWkoY1tnPj4yXXwwLDExLGYpfDAsY1tsPj4yXT1hLGNbbD4+Ml09KGNbbD4+Ml18MCk9PTEyPzA6YSwoY1tsPj4yXXwwKSE9MCk6MCl7bD1jW2w+PjJdfDA7aT1tO3JldHVybiBsfDB9Zj1rO2c9Zis0OHwwO2Rve2NbZj4+Ml09MDtmPWYrNHwwfXdoaWxlKChmfDApPChnfDApKTtjW2srMjA+PjJdPWNbY1tqPj4yXT4+Ml07Y1trKzI0Pj4yXT1jW2o+PjJdO2Nbays0Pj4yXT1jW2g+PjJdO2NbaysxNj4+Ml09MTtWZChrLDIxNDc0ODM2NDcpfDA7Y1tsPj4yXT1XZChrKXwwO2lmKCEoY1tsPj4yXXwwKSl7az0oY1soY1toPj4yXXwwKSs0Pj4yXXwwKSsyMnwwO2Jbaz4+MV09KGVbaz4+MV18MCkmLTM7bD1jW2w+PjJdfDA7aT1tO3JldHVybiBsfDB9ZWxzZXtwSyhQZihjW2srND4+Ml18MCl8MCk7bD1jW2w+PjJdfDA7aT1tO3JldHVybiBsfDB9cmV0dXJuIDB9ZnVuY3Rpb24gcEsoYSl7YT1hfDA7dmFyIGI9MCxlPTA7ZT1pO2k9aSsxNnwwO2I9ZTtjW2I+PjJdPWE7aWYoZFsoY1tiPj4yXXwwKSsxMz4+MF18MCl7aT1lO3JldHVybn1aaShjW2I+PjJdfDApO2k9ZTtyZXR1cm59ZnVuY3Rpb24gcUsoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wO2Q9aTtpPWkrMTZ8MDtlPWQrNHwwO2I9ZDtjW2U+PjJdPWE7Y1tiPj4yXT0oY1soY1soY1tlPj4yXXwwKSs0Pj4yXXwwKSszMj4+Ml18MCktKGNbKGNbKGNbZT4+Ml18MCkrND4+Ml18MCkrMzY+PjJdfDApO2k9ZDtyZXR1cm4gY1tiPj4yXXwwfWZ1bmN0aW9uIHJLKGIpe2I9YnwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wO3A9aTtpPWkrNDh8MDtuPXArMjh8MDtvPXArMjR8MDtmPXArMjB8MDtqPXArMTZ8MDtlPXArMTJ8MDtoPXArOHwwO2c9cCs0fDA7az1wO209cCszMnwwO2Nbbj4+Ml09YjtjW28+PjJdPTA7ZG8gaWYoKEJyKGNbbj4+Ml18MCl8MCk9PTA/KGRbKGNbbj4+Ml18MCkrMTc+PjBdfDApPT0wOjApe2NbZj4+Ml09MTtjW28+PjJdPUZ0KGNbbj4+Ml18MCwxKXwwO2lmKCEoY1tvPj4yXXwwKSl7aWYoKGRbKGNbbj4+Ml18MCkrMTg+PjBdfDApPD0xKWNbbz4+Ml09c0soY1tuPj4yXXwwLGYpfDA7aWYoIShjW28+PjJdfDApKXtpZihjW2Y+PjJdfDApe2lmKGFbKGNbbj4+Ml18MCkrMTU+PjBdfDApe2Nbbz4+Ml09Nzc2O2JyZWFrfWNbbz4+Ml09R3QoY1tuPj4yXXwwLDQpfDA7aWYoY1tvPj4yXXwwKWJyZWFrO2lmKCgoKGNbY1soY1tuPj4yXXwwKSs2OD4+Ml0+PjJdfDApPT0wPyhjW2o+PjJdPWNbY1tuPj4yXT4+Ml0sY1tvPj4yXT1ZcihjW2o+PjJdfDAsY1soY1tuPj4yXXwwKSsxODA+PjJdfDAsMCxlKXwwLChjW28+PjJdfDApPT0wJihjW2U+PjJdfDApIT0wKTowKT8oY1toPj4yXT0wLGNbZz4+Ml09MjA1MCxjW28+PjJdPVVyKGNbaj4+Ml18MCxjWyhjW24+PjJdfDApKzE4MD4+Ml18MCxjWyhjW24+PjJdfDApKzY4Pj4yXXwwLGNbZz4+Ml18MCxoKXwwLChjW28+PjJdfDApPT0wKTowKT8oY1toPj4yXSYxfDApIT0wOjApe2Nbbz4+Ml09b3QoNTE0ODMpfDA7b3IoY1soY1tuPj4yXXwwKSs2OD4+Ml18MCl9ZT1jW24+PjJdfDA7aWYoY1tjWyhjW24+PjJdfDApKzY4Pj4yXT4+Ml18MCl7Y1tvPj4yXT1scihlKXwwO2lmKCEoY1tvPj4yXXwwKSl7Y1tvPj4yXT1XcihjW24+PjJdfDAsKChhWyhjW24+PjJdfDApKzEzPj4wXXwwKSE9MF4xKSYxKXwwO2FbKGNbbj4+Ml18MCkrMTc+PjBdPTB9fWVsc2UgaWYoIShhW2UrND4+MF18MCkpRnIoY1tuPj4yXXwwLDEpfDA7aWYoY1tvPj4yXXwwKXttcihjW24+PjJdfDAsY1tvPj4yXXwwKXwwO2JyZWFrfX1pZigoYVsoY1tuPj4yXXwwKSsxMz4+MF18MCk9PTA/KGRbKGNbbj4+Ml18MCkrMjQ+PjBdfDApIT0wOjApe2Nbaz4+Ml09MDtjW28+PjJdPXRLKGNbbj4+Ml18MCxrKXwwO2lmKGNbbz4+Ml18MClicmVhaztpZigoY1trPj4yXXwwKT4+PjA+MCl7Y1tvPj4yXT1lcyhjWyhjW24+PjJdfDApKzY0Pj4yXXwwLG0sMTYsMjQsMCl8MDtpZigoY1tvPj4yXXwwKSE9MCYoY1tvPj4yXXwwKSE9NTIyKWJyZWFrfWVsc2V7ZT1tO2Y9ZSsxNnwwO2Rve2FbZT4+MF09MDtlPWUrMXwwfXdoaWxlKChlfDApPChmfDApKX1pZihlUigoY1tuPj4yXXwwKSsxMTJ8MCxtLDE2KXwwKVppKGNbbj4+Ml18MCl9Y1tvPj4yXT11SyhjW24+PjJdfDApfDA7bD0zMn19fWVsc2UgbD0zMjt3aGlsZSgwKTtpZigobHwwKT09MzIpe2lmKEJyKGNbbj4+Ml18MCl8MCljW28+PjJdPXZLKGNbbj4+Ml18MCl8MDtpZigoZFsoY1tuPj4yXXwwKSsxMz4+MF18MCk9PTA/KChjW28+PjJdfDApPT0wPyhkWyhjW24+PjJdfDApKzE3Pj4wXXwwKT09MDowKTowKWNbbz4+Ml09dEsoY1tuPj4yXXwwLChjW24+PjJdfDApKzI4fDApfDB9ZT1jW24+PjJdfDA7aWYoY1tvPj4yXXwwKXtrcihlKTtvPWNbbz4+Ml18MDtpPXA7cmV0dXJuIG98MH1lbHNle2FbZSsxNz4+MF09MTthWyhjW24+PjJdfDApKzI0Pj4wXT0xO289Y1tvPj4yXXwwO2k9cDtyZXR1cm4gb3wwfXJldHVybiAwfWZ1bmN0aW9uIHNLKGIsZSl7Yj1ifDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTA7cT1pO2k9aSs0OHwwO2Y9cSszMnwwO2c9cSsyOHwwO289cSsyNHwwO3A9cSsyMHwwO2g9cSsxNnwwO2w9cSsxMnwwO209cSs4fDA7bj1xKzR8MDtqPXE7az1xKzM2fDA7Y1tmPj4yXT1iO2NbZz4+Ml09ZTtjW28+PjJdPWNbY1tmPj4yXT4+Ml07Y1twPj4yXT0wO2NbaD4+Ml09MTtjW2w+PjJdPSgoY1tjWyhjW2Y+PjJdfDApKzY4Pj4yXT4+Ml18MCkhPTBeMV4xKSYxO2NbY1tnPj4yXT4+Ml09MDtpZighKGNbbD4+Ml18MCkpY1twPj4yXT1ZcihjW28+PjJdfDAsY1soY1tmPj4yXXwwKSsxODA+PjJdfDAsMCxoKXwwO2lmKCEoKGNbcD4+Ml18MCk9PTAmKGNbaD4+Ml18MCkhPTApKXtwPWNbcD4+Ml18MDtpPXE7cmV0dXJuIHB8MH1jW20+PjJdPTA7Y1twPj4yXT1DSyhjWyhjW2Y+PjJdfDApKzY0Pj4yXXwwLG0pfDA7aWYoKGNbcD4+Ml18MCkhPTB8KGNbbT4+Ml18MCkhPTApe3A9Y1twPj4yXXwwO2k9cTtyZXR1cm4gcHwwfWNbcD4+Ml09dEsoY1tmPj4yXXwwLG4pfDA7aWYoY1twPj4yXXwwKXtwPWNbcD4+Ml18MDtpPXE7cmV0dXJuIHB8MH1pZighKChjW24+PjJdfDApIT0wfChjW2w+PjJdfDApIT0wKSl7WWooKTtpZigoR3QoY1tmPj4yXXwwLDIpfDApPT0wPyh4cihjW28+PjJdfDAsY1soY1tmPj4yXXwwKSsxODA+PjJdfDAsMCl8MCwoYVsoY1tmPj4yXXwwKSs0Pj4wXXwwKT09MCk6MClGcihjW2Y+PjJdfDAsMSl8MDtaaigpO3A9Y1twPj4yXXwwO2k9cTtyZXR1cm4gcHwwfWlmKCEoY1tsPj4yXXwwKSl7Y1tqPj4yXT0yMDQ5O2NbcD4+Ml09VXIoY1tvPj4yXXwwLGNbKGNbZj4+Ml18MCkrMTgwPj4yXXwwLGNbKGNbZj4+Ml18MCkrNjg+PjJdfDAsY1tqPj4yXXwwLGopfDB9aWYoIShjW3A+PjJdfDApKXthW2s+PjBdPTA7bz1lcyhjWyhjW2Y+PjJdfDApKzY4Pj4yXXwwLGssMSwwLDApfDA7Y1twPj4yXT1vO2NbcD4+Ml09KGNbcD4+Ml18MCk9PTUyMj8wOm87aWYoIShjW2w+PjJdfDApKW9yKGNbKGNbZj4+Ml18MCkrNjg+PjJdfDApO2NbY1tnPj4yXT4+Ml09KGRbaz4+MF18MCkhPTAmMTtwPWNbcD4+Ml18MDtpPXE7cmV0dXJuIHB8MH1lbHNle2lmKChjW3A+PjJdfDApIT0xNCl7cD1jW3A+PjJdfDA7aT1xO3JldHVybiBwfDB9Y1tjW2c+PjJdPj4yXT0xO2NbcD4+Ml09MDtwPWNbcD4+Ml18MDtpPXE7cmV0dXJuIHB8MH1yZXR1cm4gMH1mdW5jdGlvbiB0SyhhLGIpe2E9YXwwO2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTA7az1pO2k9aSszMnwwO2Q9aysyNHwwO2U9aysyMHwwO2Y9aysxNnwwO2g9aysxMnwwO2c9aztqPWsrOHwwO2NbZT4+Ml09YTtjW2Y+PjJdPWI7Y1toPj4yXT1CSyhjWyhjW2U+PjJdfDApKzIxNj4+Ml18MCl8MDtkbyBpZigoY1toPj4yXXwwKT09MD8oY1tjWyhjW2U+PjJdfDApKzY0Pj4yXT4+Ml18MCkhPTA6MCl7Yj1nO2NbYj4+Ml09MDtjW2IrND4+Ml09MDtjW2o+PjJdPVhpKGNbKGNbZT4+Ml18MCkrNjQ+PjJdfDAsZyl8MDtpZighKGNbaj4+Ml18MCkpe2o9ZztiPWNbKGNbZT4+Ml18MCkrMTYwPj4yXXwwO2I9UlIoY1tqPj4yXXwwLGNbais0Pj4yXXwwLGJ8MCwoKGJ8MCk8MCk8PDMxPj4zMXwwKXwwO2I9UVIoYnwwLEN8MCwxLDApfDA7aj1jWyhjW2U+PjJdfDApKzE2MD4+Ml18MDtqPV9SKGJ8MCxDfDAsanwwLCgoanwwKTwwKTw8MzE+PjMxfDApfDA7Y1toPj4yXT1qO2JyZWFrfWNbZD4+Ml09Y1tqPj4yXTtqPWNbZD4+Ml18MDtpPWs7cmV0dXJuIGp8MH13aGlsZSgwKTtpZigoY1toPj4yXXwwKT4+PjA+KGNbKGNbZT4+Ml18MCkrMTY0Pj4yXXwwKT4+PjApY1soY1tlPj4yXXwwKSsxNjQ+PjJdPWNbaD4+Ml07Y1tjW2Y+PjJdPj4yXT1jW2g+PjJdO2NbZD4+Ml09MDtqPWNbZD4+Ml18MDtpPWs7cmV0dXJuIGp8MH1mdW5jdGlvbiB1SyhiKXtiPWJ8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wO2w9aTtpPWkrMzJ8MDtnPWwrMTZ8MDtoPWwrMTJ8MDtrPWwrOHwwO2o9bCs0fDA7Zj1sO2NbaD4+Ml09YjtjW2s+PjJdPTA7ZG8gaWYoIShhWyhjW2g+PjJdfDApKzEzPj4wXXwwKSl7Y1trPj4yXT10SyhjW2g+PjJdfDAsZil8MDtpZihjW2s+PjJdfDApe2NbZz4+Ml09Y1trPj4yXTtrPWNbZz4+Ml18MDtpPWw7cmV0dXJuIGt8MH1iPWNbY1toPj4yXT4+Ml18MDtlPWNbKGNbaD4+Ml18MCkrMjIwPj4yXXwwO2lmKCEoY1tmPj4yXXwwKSl7Zj14cihiLGUsMCl8MDtjW2s+PjJdPWY7Y1trPj4yXT0oY1trPj4yXXwwKT09NTg5OD8wOmY7Y1tqPj4yXT0wfWVsc2UgY1trPj4yXT1ZcihiLGUsMCxqKXwwO2lmKCEoY1trPj4yXXwwKSl7Yj1jW2g+PjJdfDA7aWYoY1tqPj4yXXwwKXtjW2s+PjJdPXhLKGIsMCl8MDticmVha31pZigoZFtiKzU+PjBdfDApPT01KWFbKGNbaD4+Ml18MCkrNT4+MF09MH19d2hpbGUoMCk7Y1tnPj4yXT1jW2s+PjJdO2s9Y1tnPj4yXXwwO2k9bDtyZXR1cm4ga3wwfWZ1bmN0aW9uIHZLKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTA7ZT1pO2k9aSsxNnwwO2I9ZSs4fDA7ZD1lKzR8MDtmPWU7Y1tiPj4yXT1hO2NbZj4+Ml09MDtRcyhjWyhjW2I+PjJdfDApKzIxNj4+Ml18MCk7Y1tkPj4yXT13SyhjWyhjW2I+PjJdfDApKzIxNj4+Ml18MCxmKXwwO2lmKCEoKGNbZD4+Ml18MCkhPTB8KGNbZj4+Ml18MCkhPTApKXtmPWNbZD4+Ml18MDtpPWU7cmV0dXJuIGZ8MH1aaShjW2I+PjJdfDApO2Y9Y1tkPj4yXXwwO2k9ZTtyZXR1cm4gZnwwfWZ1bmN0aW9uIHdLKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wO2g9aTtpPWkrMTZ8MDtkPWgrMTJ8MDtlPWgrOHwwO2c9aCs0fDA7Zj1oO2NbZD4+Ml09YTtjW2U+PjJdPWI7Y1tmPj4yXT0wO2Rve2o9Y1tkPj4yXXwwO2I9Y1tlPj4yXXwwO2E9KGNbZj4+Ml18MCkrMXwwO2NbZj4+Ml09YTtjW2c+PjJdPU50KGosYiwwLGEpfDB9d2hpbGUoKGNbZz4+Ml18MCk9PS0xKTtpPWg7cmV0dXJuIGNbZz4+Ml18MH1mdW5jdGlvbiB4SyhiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MDtrPWk7aT1pKzE2fDA7ZT1rKzEyfDA7Zj1rKzh8MDtnPWsrNHwwO2g9aztjW2Y+PjJdPWI7Y1tnPj4yXT1kO2NbaD4+Ml09MDtkbyBpZigoYVsoY1tmPj4yXXwwKSsxMz4+MF18MCk9PTA/KGNbKGNbZj4+Ml18MCkrMjE2Pj4yXXwwKT09MDowKWlmKElKKGNbZj4+Ml18MCl8MCl7b3IoY1soY1tmPj4yXXwwKSs2OD4+Ml18MCk7Y1toPj4yXT15SyhjW2Y+PjJdfDApfDA7aWYoY1toPj4yXXwwKWJyZWFrO2FbKGNbZj4+Ml18MCkrNT4+MF09NTthWyhjW2Y+PjJdfDApKzE3Pj4wXT0wO2JyZWFrfWVsc2V7Y1tlPj4yXT0xNDtqPWNbZT4+Ml18MDtpPWs7cmV0dXJuIGp8MH1lbHNlIGo9Nzt3aGlsZSgwKTtpZigoanwwKT09NyljW2NbZz4+Ml0+PjJdPTE7Y1tlPj4yXT1jW2g+PjJdO2o9Y1tlPj4yXXwwO2k9aztyZXR1cm4ganwwfWZ1bmN0aW9uIHlLKGIpe2I9YnwwO3ZhciBlPTAsZj0wLGc9MDtnPWk7aT1pKzE2fDA7ZT1nKzR8MDtmPWc7Y1tlPj4yXT1iO2NbZj4+Ml09MDtpZihhWyhjW2U+PjJdfDApKzQ+PjBdfDApY1tmPj4yXT16SyhjW2U+PjJdfDApfDA7aWYoY1tmPj4yXXwwKXtiPWNbZT4+Ml18MDthaihiKTtmPWNbZj4+Ml18MDtpPWc7cmV0dXJuIGZ8MH1iPShjW2U+PjJdfDApKzE2OHwwO2NbZj4+Ml09QUsoY1tjW2U+PjJdPj4yXXwwLGNbKGNbZT4+Ml18MCkrNjQ+PjJdfDAsY1soY1tlPj4yXXwwKSsyMjA+PjJdfDAsZFsoY1tlPj4yXXwwKSs0Pj4wXXwwLGNbYj4+Ml18MCxjW2IrND4+Ml18MCwoY1tlPj4yXXwwKSsyMTZ8MCl8MDtiPWNbZT4+Ml18MDthaihiKTtmPWNbZj4+Ml18MDtpPWc7cmV0dXJuIGZ8MH1mdW5jdGlvbiB6SyhhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTA7ZT1pO2k9aSsxNnwwO2I9ZSs0fDA7ZD1lO2NbYj4+Ml09YTtjW2Q+PjJdPUd0KGNbYj4+Ml18MCw0KXwwO2lmKCEoY1tkPj4yXXwwKSl7ZD1jW2Q+PjJdfDA7aT1lO3JldHVybiBkfDB9RnIoY1tiPj4yXXwwLDEpfDA7ZD1jW2Q+PjJdfDA7aT1lO3JldHVybiBkfDB9ZnVuY3Rpb24gQUsoZCxlLGYsZyxoLGosayl7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7dmFyIGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wO3c9aTtpPWkrNDh8MDtsPXcrNDR8MDttPXcrNDB8MDtuPXcrMzZ8MDtvPXcrMzJ8MDtwPXcrMjh8MDtxPXc7cj13KzI0fDA7dj13KzIwfDA7dT13KzE2fDA7cz13KzEyfDA7dD13Kzh8MDtjW20+PjJdPWQ7Y1tuPj4yXT1lO2Nbbz4+Ml09ZjtjW3A+PjJdPWc7Zj1xO2NbZj4+Ml09aDtjW2YrND4+Ml09ajtjW3I+PjJdPWs7Y1tjW3I+PjJdPj4yXT0wO2NbdT4+Ml09a2coMTIwKyhjWyhjW20+PjJdfDApKzQ+PjJdfDApfDAsMCl8MDtpZighKGNbdT4+Ml18MCkpe2NbbD4+Ml09NztmPWNbbD4+Ml18MDtpPXc7cmV0dXJuIGZ8MH1jW2NbdT4+Ml0+PjJdPWNbbT4+Ml07Y1soY1t1Pj4yXXwwKSs4Pj4yXT0oY1t1Pj4yXXwwKSsxMjA7Y1soY1t1Pj4yXXwwKSs0Pj4yXT1jW24+PjJdO2JbKGNbdT4+Ml18MCkrNDA+PjFdPS0xO2Q9cTtrPWNbZCs0Pj4yXXwwO2Y9KGNbdT4+Ml18MCkrMTZ8MDtjW2Y+PjJdPWNbZD4+Ml07Y1tmKzQ+PjJdPWs7Y1soY1t1Pj4yXXwwKSsxMDg+PjJdPWNbbz4+Ml07YVsoY1t1Pj4yXXwwKSs0OD4+MF09MTthWyhjW3U+PjJdfDApKzQ5Pj4wXT0xO2FbKGNbdT4+Ml18MCkrNDM+PjBdPShjW3A+PjJdfDApIT0wPzI6MDtjW3M+PjJdPTUyNDI5NDtjW3Y+PjJdPVVyKGNbbT4+Ml18MCxjW28+PjJdfDAsY1soY1t1Pj4yXXwwKSs4Pj4yXXwwLGNbcz4+Ml18MCxzKXwwO2lmKChjW3Y+PjJdfDApPT0wPyhjW3M+PjJdJjF8MCkhPTA6MClhWyhjW3U+PjJdfDApKzQ2Pj4wXT0xO2lmKGNbdj4+Ml18MCl7VnMoY1t1Pj4yXXwwLDApO29yKGNbKGNbdT4+Ml18MCkrOD4+Ml18MCk7S2QoY1t1Pj4yXXwwKX1lbHNle2NbdD4+Ml09YnMoY1tuPj4yXXwwKXwwO2lmKGNbdD4+Ml0mMTAyNClhWyhjW3U+PjJdfDApKzQ4Pj4wXT0wO2lmKGNbdD4+Ml0mNDA5NilhWyhjW3U+PjJdfDApKzQ5Pj4wXT0wO2NbY1tyPj4yXT4+Ml09Y1t1Pj4yXX1jW2w+PjJdPWNbdj4+Ml07Zj1jW2w+PjJdfDA7aT13O3JldHVybiBmfDB9ZnVuY3Rpb24gQksoYSl7YT1hfDA7dmFyIGQ9MCxlPTAsZj0wO2Y9aTtpPWkrMTZ8MDtkPWYrNHwwO2U9ZjtjW2U+PjJdPWE7aWYoKGNbZT4+Ml18MCkhPTA/KGJbKGNbZT4+Ml18MCkrNDA+PjFdfDApPj0wOjApe2NbZD4+Ml09Y1soY1tlPj4yXXwwKSs1MisyMD4+Ml07YT1jW2Q+PjJdfDA7aT1mO3JldHVybiBhfDB9Y1tkPj4yXT0wO2E9Y1tkPj4yXXwwO2k9ZjtyZXR1cm4gYXwwfWZ1bmN0aW9uIENLKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wO2Q9aTtpPWkrMTZ8MDtmPWQrNHwwO2U9ZDtjW2Y+PjJdPWE7Y1tlPj4yXT1iO2I9WWJbY1soY1tjW2Y+PjJdPj4yXXwwKSszNj4+Ml0mMjU1XShjW2Y+PjJdfDAsY1tlPj4yXXwwKXwwO2k9ZDtyZXR1cm4gYnwwfWZ1bmN0aW9uIERLKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTAsZz0wO2c9aTtpPWkrMTc2fDA7ZD1nKzE2OHwwO2Y9ZysxNjR8MDtiPWcrMTYwfDA7ZT1nO2NbZD4+Ml09YTtWUihlfDAsMCwxNjApfDA7d2hpbGUoMSl7aWYoIShjW2Q+PjJdfDApKWJyZWFrO2NbYj4+Ml09Y1soY1tkPj4yXXwwKSs4Pj4yXTtjWyhjW2Q+PjJdfDApKzg+PjJdPTA7Y1tmPj4yXT0wO3doaWxlKDEpe2lmKCEoY1tlKyhjW2Y+PjJdPDwyKT4+Ml18MCkpYnJlYWs7Y1tkPj4yXT1HSyhjW2UrKGNbZj4+Ml08PDIpPj4yXXwwLGNbZD4+Ml18MCl8MDtjW2UrKGNbZj4+Ml08PDIpPj4yXT0wO2NbZj4+Ml09KGNbZj4+Ml18MCkrMX1jW2UrKGNbZj4+Ml08PDIpPj4yXT1jW2Q+PjJdO2NbZD4+Ml09Y1tiPj4yXX1jW2Q+PjJdPWNbZT4+Ml07Y1tmPj4yXT0xO3doaWxlKDEpe2lmKChjW2Y+PjJdfDApPj4+MD49NDApYnJlYWs7aWYoY1tlKyhjW2Y+PjJdPDwyKT4+Ml18MCl7aWYoY1tkPj4yXXwwKWE9R0soY1tkPj4yXXwwLGNbZSsoY1tmPj4yXTw8Mik+PjJdfDApfDA7ZWxzZSBhPWNbZSsoY1tmPj4yXTw8Mik+PjJdfDA7Y1tkPj4yXT1hfWNbZj4+Ml09KGNbZj4+Ml18MCkrMX1pPWc7cmV0dXJuIGNbZD4+Ml18MH1mdW5jdGlvbiBFSyhhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wLGc9MDtnPWk7aT1pKzE2fDA7Yj1nKzEyfDA7ZD1nKzh8MDtlPWcrNHwwO2Y9ZztjW2I+PjJdPWE7Y1tlPj4yXT1jW2I+PjJdO2NbYj4+Ml09Y1soY1tlPj4yXXwwKSs4Pj4yXTtjWyhjW2U+PjJdfDApKzg+PjJdPTA7Y1soY1tlPj4yXXwwKSsxMj4+Ml09MDtjW2Q+PjJdPTE7d2hpbGUoMSl7YT1jW2U+PjJdfDA7aWYoIShjW2I+PjJdfDApKWJyZWFrO2NbZj4+Ml09YTtjW2U+PjJdPWNbYj4+Ml07Y1tiPj4yXT1jWyhjW2U+PjJdfDApKzg+PjJdO2NbKGNbZT4+Ml18MCkrMTI+PjJdPWNbZj4+Ml07YT1JSyhiLGNbZD4+Ml18MCl8MDtjWyhjW2U+PjJdfDApKzg+PjJdPWE7Y1tkPj4yXT0oY1tkPj4yXXwwKSsxfWk9ZztyZXR1cm4gYXwwfWZ1bmN0aW9uIEZLKGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MDtqPWk7aT1pKzE2fDA7Zz1qKzEyfDA7ZT1qKzh8MDtoPWorNHwwO2Y9ajtjW2c+PjJdPWE7Y1tlPj4yXT1iO2NbaD4+Ml09ZDthPWNbZz4+Ml18MDtpZihjWyhjW2c+PjJdfDApKzEyPj4yXXwwKXtGSyhjW2ErMTI+PjJdfDAsY1tlPj4yXXwwLGYpO2NbKGNbZj4+Ml18MCkrOD4+Ml09Y1tnPj4yXX1lbHNlIGNbY1tlPj4yXT4+Ml09YTthPWNbZz4+Ml18MDtpZihjWyhjW2c+PjJdfDApKzg+PjJdfDApe0ZLKGNbYSs4Pj4yXXwwLChjW2c+PjJdfDApKzh8MCxjW2g+PjJdfDApO2k9ajtyZXR1cm59ZWxzZXtjW2NbaD4+Ml0+PjJdPWE7aT1qO3JldHVybn19ZnVuY3Rpb24gR0soYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wO2g9aTtpPWkrMzJ8MDtkPWgrMjR8MDtlPWgrMjB8MDtmPWg7Zz1oKzE2fDA7Y1tkPj4yXT1hO2NbZT4+Ml09YjtjW2c+PjJdPWY7d2hpbGUoMSl7YT1jW2Q+PjJdfDA7az1jW2ErND4+Ml18MDtiPWNbZT4+Ml18MDtqPWNbYis0Pj4yXXwwO2lmKCEoKGt8MCk8KGp8MCl8KChrfDApPT0oanwwKT8oY1thPj4yXXwwKT4+PjA8PShjW2I+PjJdfDApPj4+MDowKSkpe2s9Y1tlPj4yXXwwO2NbKGNbZz4+Ml18MCkrOD4+Ml09aztjW2c+PjJdPWs7Y1tlPj4yXT1jWyhjW2U+PjJdfDApKzg+PjJdO2lmKCEoY1tlPj4yXXwwKSl7YT04O2JyZWFrfWVsc2UgY29udGludWV9aj1jW2Q+PjJdfDA7YT1jW2orND4+Ml18MDtrPWNbZT4+Ml18MDtiPWNbays0Pj4yXXwwO2lmKChhfDApPChifDApfCgoYXwwKT09KGJ8MCk/KGNbaj4+Ml18MCk+Pj4wPChjW2s+PjJdfDApPj4+MDowKSl7az1jW2Q+PjJdfDA7Y1soY1tnPj4yXXwwKSs4Pj4yXT1rO2NbZz4+Ml09a31jW2Q+PjJdPWNbKGNbZD4+Ml18MCkrOD4+Ml07aWYoIShjW2Q+PjJdfDApKXthPTY7YnJlYWt9fWlmKChhfDApPT02KXtjWyhjW2c+PjJdfDApKzg+PjJdPWNbZT4+Ml07az1mKzh8MDtrPWNbaz4+Ml18MDtpPWg7cmV0dXJuIGt8MH1lbHNlIGlmKChhfDApPT04KXtjWyhjW2c+PjJdfDApKzg+PjJdPWNbZD4+Ml07az1mKzh8MDtrPWNbaz4+Ml18MDtpPWg7cmV0dXJuIGt8MH1yZXR1cm4gMH1mdW5jdGlvbiBISyhhKXthPWF8MDt2YXIgZD0wLGY9MCxnPTAsaD0wO2g9aTtpPWkrMTZ8MDtkPWgrOHwwO2Y9aCs0fDA7Zz1oO2NbZj4+Ml09YTtkbyBpZighKGVbKGNbZj4+Ml18MCkrMjQ+PjFdfDApKXtjW2c+PjJdPVZ3KGNbKGNbZj4+Ml18MCkrND4+Ml18MCwxMDE2LDApfDA7aWYoY1tnPj4yXXwwKXtjW2NbZz4+Ml0+PjJdPWNbY1tmPj4yXT4+Ml07Y1tjW2Y+PjJdPj4yXT1jW2c+PjJdO2NbKGNbZj4+Ml18MCkrMTY+PjJdPShjW2c+PjJdfDApKzg7YlsoY1tmPj4yXXwwKSsyND4+MV09NjM7YnJlYWt9Y1tkPj4yXT0wO2c9Y1tkPj4yXXwwO2k9aDtyZXR1cm4gZ3wwfXdoaWxlKDApO2E9KGNbZj4+Ml18MCkrMjR8MDtiW2E+PjFdPShiW2E+PjFdfDApKy0xPDwxNj4+MTY7YT0oY1tmPj4yXXwwKSsxNnwwO2c9Y1thPj4yXXwwO2NbYT4+Ml09ZysxNjtjW2Q+PjJdPWc7Zz1jW2Q+PjJdfDA7aT1oO3JldHVybiBnfDB9ZnVuY3Rpb24gSUsoYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTA7aj1pO2k9aSszMnwwO2U9aisxNnwwO2Y9aisxMnwwO2c9ais4fDA7aD1qKzR8MDtkPWo7Y1tmPj4yXT1hO2NbZz4+Ml09YjtpZighKGNbY1tmPj4yXT4+Ml18MCkpe2NbZT4+Ml09MDtoPWNbZT4+Ml18MDtpPWo7cmV0dXJuIGh8MH1iPWNbZj4+Ml18MDtkbyBpZigoY1tnPj4yXXwwKT4xKXtjW2Q+PjJdPUlLKGIsKGNbZz4+Ml18MCktMXwwKXwwO2NbaD4+Ml09Y1tjW2Y+PjJdPj4yXTtiPWNbZD4+Ml18MDtpZihjW2g+PjJdfDApe2NbKGNbaD4+Ml18MCkrMTI+PjJdPWI7Y1tjW2Y+PjJdPj4yXT1jWyhjW2g+PjJdfDApKzg+PjJdO2c9SUsoY1tmPj4yXXwwLChjW2c+PjJdfDApLTF8MCl8MDtjWyhjW2g+PjJdfDApKzg+PjJdPWc7YnJlYWt9Y1tlPj4yXT1iO2g9Y1tlPj4yXXwwO2k9ajtyZXR1cm4gaHwwfWVsc2V7Y1toPj4yXT1jW2I+PjJdO2NbY1tmPj4yXT4+Ml09Y1soY1toPj4yXXwwKSs4Pj4yXTtjWyhjW2g+PjJdfDApKzg+PjJdPTA7Y1soY1toPj4yXXwwKSsxMj4+Ml09MH13aGlsZSgwKTtjW2U+PjJdPWNbaD4+Ml07aD1jW2U+PjJdfDA7aT1qO3JldHVybiBofDB9ZnVuY3Rpb24gSksoYSxkLGUpe2E9YXwwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wO2c9aTtpPWkrMTZ8MDtqPWcrMTJ8MDtrPWcrOHwwO2g9Zys0fDA7Zj1nO2Nbaj4+Ml09YTtjW2s+PjJdPWQ7Y1toPj4yXT1lO2NbZj4+Ml09Y1trPj4yXTtjW2NbZj4+Ml0+PjJdPTA7Y1soY1tmPj4yXXwwKSs0Pj4yXT1jW2o+PjJdO2NbKGNbZj4+Ml18MCkrOD4+Ml09MDtjWyhjW2Y+PjJdfDApKzEyPj4yXT0wO2NbKGNbZj4+Ml18MCkrMjA+PjJdPTA7Y1soY1tmPj4yXXwwKSsxNj4+Ml09KGNbZj4+Ml18MCkrMzI7YlsoY1tmPj4yXXwwKSsyND4+MV09KCgoY1toPj4yXXwwKS0zMnwwKT4+PjApLzE2fDA7YlsoY1tmPj4yXXwwKSsyNj4+MV09MTtjWyhjW2Y+PjJdfDApKzI4Pj4yXT0wO2k9ZztyZXR1cm4gY1tmPj4yXXwwfWZ1bmN0aW9uIEtLKGIsZSl7Yj1ifDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wO2Y9aTtpPWkrMTZ8MDtoPWYrNHwwO2c9ZjtjW2g+PjJdPWI7Y1tnPj4yXT1lO2I9KGNbKGNbaD4+Ml18MCkrOD4+Ml18MCkrKCgoY1tnPj4yXXwwKT4+PjApLzh8MCl8MDthW2I+PjBdPWRbYj4+MF18MHwxPDwoY1tnPj4yXSY3KTtpPWY7cmV0dXJufWZ1bmN0aW9uIExLKGIsZSxmLGcpe2I9YnwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO3ZhciBoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTA7eD1pO2k9aSs4MHwwO289eCszMnwwO3A9eCsyNHwwO3c9eCsxNnwwO3Y9eDtxPXgrNzZ8MDtoPXgrNzJ8MDtyPXgrNjh8MDtzPXgrNjR8MDtqPXgrNjB8MDt0PXgrNTZ8MDt1PXgrNTJ8MDtuPXgrNDh8MDttPXgrNDR8MDtsPXgrNDB8MDtrPXgrMzZ8MDtjW3E+PjJdPWI7Y1toPj4yXT1lO2Nbcj4+Ml09ZjtjW3M+PjJdPWc7Y1t0Pj4yXT1jW3M+PjJdO2NbdT4+Ml09Y1tyPj4yXTt3aGlsZSgxKXtiPWNbcz4+Ml18MDtjW3M+PjJdPWIrLTE7aWYoKGJ8MCk8PTApe2c9MjU7YnJlYWt9aWYoIShjWyhjW3E+PjJdfDApKzE2Pj4yXXwwKSl7Zz0yNTticmVha31mPWNbcT4+Ml18MDtpZigoY1tyPj4yXXwwKTwxKXtnPTU7YnJlYWt9aWYoUUsoZixjW3I+PjJdfDApfDApe2c9MjU7YnJlYWt9aWYodmcoY1soY1txPj4yXXwwKSs0Pj4yXXwwLGNbcj4+Ml18MCxuLDApfDApe2c9ODticmVha31jW20+PjJdPXdnKGNbbj4+Ml18MCl8MDtkbyBpZighKGNbaD4+Ml18MCkpe2lmKChjW3M+PjJdfDApPjA/KGRbKGNbY1txPj4yXT4+Ml18MCkrMTc+PjBdfDApIT0wOjApe2Nbaj4+Ml09Z3IoY1ttPj4yXXwwKXwwO01LKGNbcT4+Ml18MCxjW2o+PjJdfDAsNCxjW3I+PjJdfDApfX1lbHNle2NbbD4+Ml09Z3IoKGNbbT4+Ml18MCkrNHwwKXwwO2lmKGFbKGNbY1txPj4yXT4+Ml18MCkrMTc+PjBdfDApTUsoY1txPj4yXXwwLGNbcj4+Ml18MCwyLDApO2lmKChjW2w+PjJdfDApPigoKGNbKGNbY1txPj4yXT4+Ml18MCkrMzY+PjJdfDApLzR8MCktMnwwKSl7Yj1jW3E+PjJdfDA7Y1twPj4yXT1jW3I+PjJdO1BLKGIsNDE3MTEscCk7Y1tzPj4yXT0oY1tzPj4yXXwwKSstMTticmVha31jW2o+PjJdPTA7d2hpbGUoMSl7aWYoKGNbaj4+Ml18MCk+PShjW2w+PjJdfDApKWJyZWFrO2Nbaz4+Ml09Z3IoKGNbbT4+Ml18MCkrKDgrKGNbaj4+Ml08PDIpKXwwKXwwO2lmKGFbKGNbY1txPj4yXT4+Ml18MCkrMTc+PjBdfDApTUsoY1txPj4yXXwwLGNbaz4+Ml18MCwyLDApO1FLKGNbcT4+Ml18MCxjW2s+PjJdfDApfDA7Y1tqPj4yXT0oY1tqPj4yXXwwKSsxfWNbcz4+Ml09KGNbcz4+Ml18MCktKGNbbD4+Ml18MCl9d2hpbGUoMCk7Y1tyPj4yXT1ncihjW20+PjJdfDApfDA7eWcoY1tuPj4yXXwwKTtpZighKGNbaD4+Ml18MCkpY29udGludWU7aWYoKGNbcz4+Ml18MCk+PSgoY1tyPj4yXXwwKSE9MHwwKSljb250aW51ZTtQSyhjW3E+PjJdfDAsNDE3NTAsbyl9aWYoKGd8MCk9PTUpe3Q9Y1t0Pj4yXXwwO3c9Y1t1Pj4yXXwwO2Nbdj4+Ml09KGNbcz4+Ml18MCkrMTtjW3YrND4+Ml09dDtjW3YrOD4+Ml09dztQSyhmLDQxNjMyLHYpO2k9eDtyZXR1cm59ZWxzZSBpZigoZ3wwKT09OCl7dj1jW3E+PjJdfDA7Y1t3Pj4yXT1jW3I+PjJdO1BLKHYsNDE2ODksdyk7aT14O3JldHVybn1lbHNlIGlmKChnfDApPT0yNSl7aT14O3JldHVybn19ZnVuY3Rpb24gTUsoYixlLGYsZyl7Yj1ifDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7dmFyIGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MDtyPWk7aT1pKzY0fDA7cT1yKzh8MDtwPXI7aD1yKzQ0fDA7aj1yKzQwfDA7az1yKzQ5fDA7bD1yKzM2fDA7bz1yKzMyfDA7bT1yKzQ4fDA7bj1yKzI4fDA7Y1toPj4yXT1iO2Nbaj4+Ml09ZTthW2s+PjBdPWY7Y1tsPj4yXT1nO2Nbbz4+Ml09V0YoY1tjW2g+PjJdPj4yXXwwLGNbaj4+Ml18MCxtLG4pfDA7aWYoY1tvPj4yXXwwKXtpZigoY1tvPj4yXXwwKT09N3woY1tvPj4yXXwwKT09MzA4MiljWyhjW2g+PjJdfDApKzI0Pj4yXT0xO3E9Y1toPj4yXXwwO2NbcD4+Ml09Y1tqPj4yXTtQSyhxLDQxNTQ5LHApO2k9cjtyZXR1cm59aWYoKGRbbT4+MF18MHwwKT09KGRbaz4+MF18MHwwKT8oY1tuPj4yXXwwKT09KGNbbD4+Ml18MCk6MCl7aT1yO3JldHVybn1wPWNbaD4+Ml18MDtlPWRbaz4+MF18MDtnPWNbbD4+Ml18MDtiPWRbbT4+MF18MDtvPWNbbj4+Ml18MDtjW3E+PjJdPWNbaj4+Ml07Y1txKzQ+PjJdPWU7Y1txKzg+PjJdPWc7Y1txKzEyPj4yXT1iO2NbcSsxNj4+Ml09bztQSyhwLDQxNTc4LHEpO2k9cjtyZXR1cm59ZnVuY3Rpb24gTksoYixmLGcsaCxqKXtiPWJ8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDt2YXIgaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MCxFPTAsRj0wLEc9MCxIPTAsST0wLEo9MCxLPTAsTD0wLE09MCxOPTAsTz0wLFA9MCxRPTAsUj0wLFM9MCxUPTAsVT0wLFY9MCxXPTAsWD0wLFk9MCxaPTAsXz0wLCQ9MCxhYT0wLGJhPTAsY2E9MDtjYT1pO2k9aSsyNTZ8MDtaPWNhKzk2fDA7WT1jYSs4OHwwO1g9Y2ErODB8MDtXPWNhKzcyfDA7JD1jYSs2NHwwO189Y2ErNDh8MDttPWNhKzQwfDA7bD1jYSszMnwwO249Y2ErMjQwfDA7bz1jYSsyMzZ8MDtwPWNhKzIzMnwwO3E9Y2ErMjI4fDA7cj1jYSsyNHwwO0s9Y2ErMjI0fDA7QT1jYSsyMjB8MDtrPWNhKzIxNnwwO3c9Y2ErMjEyfDA7dT1jYSsyMDh8MDtNPWNhKzIwNHwwO0Y9Y2ErMjAwfDA7eT1jYSsxOTZ8MDtzPWNhKzE5MnwwO0U9Y2ErMTg4fDA7eD1jYSsxODR8MDtEPWNhKzE4MHwwO3Y9Y2ErMTc2fDA7ST1jYSsxNzJ8MDtKPWNhKzE2OHwwO0g9Y2ErMTY0fDA7TD1jYSsxNjB8MDtWPWNhKzE1NnwwO3Q9Y2ErMTUyfDA7ej1jYSsxNDh8MDthYT1jYSsxNDR8MDtPPWNhKzE0MHwwO1M9Y2ErMTM2fDA7UT1jYSsxMzJ8MDtSPWNhKzEyOHwwO1A9Y2ErMjQ0fDA7Qj1jYTtHPWNhKzEyNHwwO049Y2ErMTIwfDA7VD1jYSsxMTZ8MDtVPWNhKzExMnwwO0M9Y2ErMTA4fDA7Y1tvPj4yXT1iO2NbcD4+Ml09ZjtjW3E+PjJdPWc7Zz1yO2NbZz4+Ml09aDtjW2crND4+Ml09ajtjW0s+PjJdPTA7Y1t3Pj4yXT0tMTtjW3g+PjJdPTE7Y1tEPj4yXT0xO2Nbej4+Ml09MDtjW08+PjJdPTA7Y1tTPj4yXT1jWyhjW28+PjJdfDApKzI4Pj4yXTtjW1E+PjJdPWNbKGNbbz4+Ml18MCkrMzI+PjJdO2NbUj4+Ml09Y1soY1tvPj4yXXwwKSszNj4+Ml07YVtQPj4wXT0wO2NbSD4+Ml09Y1tjW28+PjJdPj4yXTtjW1Y+PjJdPWNbKGNbSD4+Ml18MCkrMzY+PjJdO2lmKCEoY1twPj4yXXwwKSl7Y1tuPj4yXT0wO2JhPWNbbj4+Ml18MDtpPWNhO3JldHVybiBiYXwwfWlmKFFLKGNbbz4+Ml18MCxjW3A+PjJdfDApfDApe2Nbbj4+Ml09MDtiYT1jW24+PjJdfDA7aT1jYTtyZXR1cm4gYmF8MH1jWyhjW28+PjJdfDApKzI4Pj4yXT00MTE2OTtjWyhjW28+PjJdfDApKzMyPj4yXT1jW3A+PjJdO2c9WEYoY1tIPj4yXXwwLGNbcD4+Ml18MCxLLDApfDA7Y1trPj4yXT1nO2RvIGlmKCFnKXthW1A+PjBdPWFbY1tLPj4yXT4+MF18MDthW2NbSz4+Ml0+PjBdPTA7bD1XdChjW0s+PjJdfDApfDA7Y1trPj4yXT1sO2lmKGwpe2JhPWNbbz4+Ml18MDtjW20+PjJdPWNbaz4+Ml07UEsoYmEsNDEyMTcsbSk7YnJlYWt9Y1t2Pj4yXT1jWyhjW0s+PjJdfDApKzU2Pj4yXTtjW3k+PjJdPWRbKGNbSz4+Ml18MCkrNT4+MF07Y1soY1tvPj4yXXwwKSsyOD4+Ml09NDEyNTU7Y1t0Pj4yXT0oKGRbKGNbdj4+Ml18MCkrKChjW3k+PjJdfDApKzUpPj4wXTw8OHxkWyhjW3Y+PjJdfDApKygoY1t5Pj4yXXwwKSs1KSsxPj4wXSktMSY2NTUzNSkrMTtjW0U+PjJdPWRbKGNbdj4+Ml18MCkrKChjW3k+PjJdfDApKzMpPj4wXTw8OHxkWyhjW3Y+PjJdfDApKygoY1t5Pj4yXXwwKSszKSsxPj4wXTtjW3M+PjJdPShjW3k+PjJdfDApKzEyLShkWyhjW0s+PjJdfDApKzQ+PjBdPDwyKTtjW0o+PjJdPShjW3Y+PjJdfDApKygoY1tzPj4yXXwwKSsoKGNbRT4+Ml18MCktMTw8MSkpO2lmKGFbKGNbSz4+Ml18MCkrND4+MF18MCl7Y1t6Pj4yXT1jWyhjW28+PjJdfDApKzY4Pj4yXTtjW2Nbej4+Ml0+PjJdPTB9ZWxzZXtjW00+PjJdPWdyKChjW3Y+PjJdfDApKygoY1t5Pj4yXXwwKSs4KXwwKXwwO2lmKGFbKGNbSD4+Ml18MCkrMTc+PjBdfDApe2NbKGNbbz4+Ml18MCkrMjg+PjJdPTQxMjgxO01LKGNbbz4+Ml18MCxjW00+PjJdfDAsNSxjW3A+PjJdfDApfW09cjtjW3c+PjJdPU5LKGNbbz4+Ml18MCxjW00+PjJdfDAscixjW20+PjJdfDAsY1ttKzQ+PjJdfDApfDA7Y1tEPj4yXT0wfWNbQT4+Ml09KGNbRT4+Ml18MCktMTt3aGlsZSgxKXtpZigoY1tBPj4yXXwwKTwwKWJyZWFrO2lmKCEoY1soY1tvPj4yXXwwKSsxNj4+Ml18MCkpYnJlYWs7Y1soY1tvPj4yXXwwKSszNj4+Ml09Y1tBPj4yXTtjW0w+PjJdPWRbY1tKPj4yXT4+MF08PDh8ZFsoY1tKPj4yXXwwKSsxPj4wXTtjW0o+PjJdPShjW0o+PjJdfDApKy0yO2RvIGlmKChjW0w+PjJdfDApPj4+MD49KGNbdD4+Ml18MCk+Pj4wPyhjW0w+PjJdfDApPj4+MDw9KChjW1Y+PjJdfDApLTR8MCk+Pj4wOjApe2NbST4+Ml09KGNbdj4+Ml18MCkrKGNbTD4+Ml18MCk7VWJbY1soY1tLPj4yXXwwKSs4MD4+Ml0mMjU1XShjW0s+PjJdfDAsY1tJPj4yXXwwLEIpO2lmKCgoY1tMPj4yXXwwKSsoZVtCKzE4Pj4xXXwwKXwwKT4+PjA+KGNbVj4+Ml18MCk+Pj4wKXtQSyhjW28+PjJdfDAsNDEzMzksJCk7Y1t4Pj4yXT0wO2JyZWFrfWlmKGFbKGNbSz4+Ml18MCkrMj4+MF18MCl7aj1CO2g9Y1tqPj4yXXwwO2o9Y1tqKzQ+PjJdfDA7Yj1yO2Y9Y1tiPj4yXXwwO2I9Y1tiKzQ+PjJdfDA7aWYoY1tEPj4yXXwwKXtpZigoanwwKT4oYnwwKXwoanwwKT09KGJ8MCkmaD4+PjA+Zj4+PjApYmE9MjZ9ZWxzZSBpZigoanwwKT4oYnwwKXwoanwwKT09KGJ8MCkmaD4+PjA+PWY+Pj4wKWJhPTI2O2lmKChiYXwwKT09MjYpe2JhPTA7bT1jW28+PjJdfDA7Zz1CO2s9Y1tnKzQ+PjJdfDA7bD1XO2NbbD4+Ml09Y1tnPj4yXTtjW2wrND4+Ml09aztQSyhtLDQxMzYzLFcpfWs9QjtsPWNbays0Pj4yXXwwO209cjtjW20+PjJdPWNbaz4+Ml07Y1ttKzQ+PjJdPWx9aWYoKGNbQisxMj4+Ml18MCk+Pj4wPihlW0IrMTY+PjFdfDApPj4+MCl7Y1tHPj4yXT0oKChjW0IrMTI+PjJdfDApLShlW0IrMTY+PjFdfDApKyhjW1Y+PjJdfDApLTV8MCk+Pj4wKS8oKChjW1Y+PjJdfDApLTR8MCk+Pj4wKXwwO2NbTj4+Ml09Z3IoKGNbST4+Ml18MCkrKChlW0IrMTg+PjFdfDApLTQpfDApfDA7aWYoYVsoY1tIPj4yXXwwKSsxNz4+MF18MClNSyhjW28+PjJdfDAsY1tOPj4yXXwwLDMsY1twPj4yXXwwKTtMSyhjW28+PjJdfDAsMCxjW04+PjJdfDAsY1tHPj4yXXwwKX1pZihhWyhjW0s+PjJdfDApKzQ+PjBdfDApe1JLKGNbej4+Ml18MCxjW0w+PjJdPDwxNnwoY1tMPj4yXXwwKSsoZVtCKzE4Pj4xXXwwKS0xKTticmVha31jW00+PjJdPWdyKGNbST4+Ml18MCl8MDtpZihhWyhjW0g+PjJdfDApKzE3Pj4wXXwwKU1LKGNbbz4+Ml18MCxjW00+PjJdfDAsNSxjW3A+PjJdfDApO209cjtjW3U+PjJdPU5LKGNbbz4+Ml18MCxjW00+PjJdfDAscixjW20+PjJdfDAsY1ttKzQ+PjJdfDApfDA7Y1tEPj4yXT0wO2lmKChjW3U+PjJdfDApIT0oY1t3Pj4yXXwwKSl7UEsoY1tvPj4yXXwwLDQxMzg3LFgpO2Nbdz4+Ml09Y1t1Pj4yXX19ZWxzZSBiYT0xOTt3aGlsZSgwKTtpZigoYmF8MCk9PTE5KXtiYT0wO209Y1tvPj4yXXwwO2s9Y1t0Pj4yXXwwO2w9KGNbVj4+Ml18MCktNHwwO2NbXz4+Ml09Y1tMPj4yXTtjW18rND4+Ml09aztjW18rOD4+Ml09bDtQSyhtLDQxMzA5LF8pO2NbeD4+Ml09MH1jW0E+PjJdPShjW0E+PjJdfDApKy0xfVg9cjtfPWNbWCs0Pj4yXXwwOyQ9Y1txPj4yXXwwO2NbJD4+Ml09Y1tYPj4yXTtjWyQrND4+Ml09XztjWyhjW28+PjJdfDApKzI4Pj4yXT0wO2lmKChjW3g+PjJdfDApIT0wPyhjWyhjW28+PjJdfDApKzE2Pj4yXXwwKT4wOjApe2E6ZG8gaWYoIShhWyhjW0s+PjJdfDApKzQ+PjBdfDApKXtjW3o+PjJdPWNbKGNbbz4+Ml18MCkrNjg+PjJdO2NbY1t6Pj4yXT4+Ml09MDtjW0E+PjJdPShjW0U+PjJdfDApLTE7d2hpbGUoMSl7aWYoKGNbQT4+Ml18MCk8MClicmVhayBhO2NbTD4+Ml09ZFsoY1t2Pj4yXXwwKSsoKGNbcz4+Ml18MCkrKGNbQT4+Ml08PDEpKT4+MF08PDh8ZFsoY1t2Pj4yXXwwKSsoKGNbcz4+Ml18MCkrKGNbQT4+Ml08PDEpKSsxPj4wXTtjW1Q+PjJdPShZYltjWyhjW0s+PjJdfDApKzc2Pj4yXSYyNTVdKGNbSz4+Ml18MCwoY1t2Pj4yXXwwKSsoY1tMPj4yXXwwKXwwKXwwKSY2NTUzNTtSSyhjW3o+PjJdfDAsY1tMPj4yXTw8MTZ8KGNbTD4+Ml18MCkrKGNbVD4+Ml18MCktMSk7Y1tBPj4yXT0oY1tBPj4yXXwwKSstMX19d2hpbGUoMCk7Y1tBPj4yXT1kWyhjW3Y+PjJdfDApKygoY1t5Pj4yXXwwKSsxKT4+MF08PDh8ZFsoY1t2Pj4yXXwwKSsoKGNbeT4+Ml18MCkrMSkrMT4+MF07d2hpbGUoMSl7aWYoKGNbQT4+Ml18MCk8PTApYnJlYWs7Y1tVPj4yXT1kWyhjW3Y+PjJdfDApKygoY1tBPj4yXXwwKSsyKT4+MF08PDh8ZFsoY1t2Pj4yXXwwKSsoKGNbQT4+Ml18MCkrMikrMT4+MF07UksoY1t6Pj4yXXwwLGNbQT4+Ml08PDE2fChjW0E+PjJdfDApKyhjW1U+PjJdfDApLTEpO2NbQz4+Ml09ZFsoY1t2Pj4yXXwwKSsoY1tBPj4yXXwwKT4+MF08PDh8ZFsoY1t2Pj4yXXwwKSsoY1tBPj4yXXwwKSsxPj4wXTtjW0E+PjJdPWNbQz4+Ml19Y1tGPj4yXT0wO2NbTz4+Ml09KGNbdD4+Ml18MCktMTt3aGlsZSgxKXtpZighKFNLKGNbej4+Ml18MCxhYSl8MCkpYnJlYWs7aWYoKGNbTz4+Ml0mNjU1MzUpPj4+MD49KGNbYWE+PjJdfDApPj4+MTY+Pj4wKXtiYT01MTticmVha31jW0Y+PjJdPShjW0Y+PjJdfDApKygoKGNbYWE+PjJdfDApPj4+MTYpLShjW08+PjJdJjY1NTM1KS0xKTtjW08+PjJdPWNbYWE+PjJdfWlmKChiYXwwKT09NTEpe2JhPWNbbz4+Ml18MDskPWNbcD4+Ml18MDtjW1k+PjJdPShjW2FhPj4yXXwwKT4+PjE2O2NbWSs0Pj4yXT0kO1BLKGJhLDQxNDEyLFkpfWNbRj4+Ml09KGNbRj4+Ml18MCkrKChjW1Y+PjJdfDApLShjW08+PjJdJjY1NTM1KS0xKTtpZigoY1tjW3o+PjJdPj4yXXwwKT09MD8oY1tGPj4yXXwwKSE9KGRbKGNbdj4+Ml18MCkrKChjW3k+PjJdfDApKzcpPj4wXXwwKTowKXtiYT1jW28+PjJdfDA7JD1kWyhjW3Y+PjJdfDApKygoY1t5Pj4yXXwwKSs3KT4+MF18MDthYT1jW3A+PjJdfDA7Y1taPj4yXT1jW0Y+PjJdO2NbWis0Pj4yXT0kO2NbWis4Pj4yXT1hYTtQSyhiYSw0MTQ0OSxaKX19fWVsc2V7YmE9Y1tvPj4yXXwwO2NbbD4+Ml09Y1trPj4yXTtQSyhiYSw0MTE3OSxsKX13aGlsZSgwKTtpZighKGNbeD4+Ml18MCkpYVtjW0s+PjJdPj4wXT1hW1A+PjBdfDA7UUIoY1tLPj4yXXwwKTtjWyhjW28+PjJdfDApKzI4Pj4yXT1jW1M+PjJdO2NbKGNbbz4+Ml18MCkrMzI+PjJdPWNbUT4+Ml07Y1soY1tvPj4yXXwwKSszNj4+Ml09Y1tSPj4yXTtjW24+PjJdPShjW3c+PjJdfDApKzE7YmE9Y1tuPj4yXXwwO2k9Y2E7cmV0dXJuIGJhfDB9ZnVuY3Rpb24gT0soYSxiKXthPWF8MDtiPWJ8MDt2YXIgZT0wLGY9MCxnPTA7Zz1pO2k9aSsxNnwwO2Y9Zys0fDA7ZT1nO2NbZj4+Ml09YTtjW2U+PjJdPWI7aT1nO3JldHVybiAoZFsoY1soY1tmPj4yXXwwKSs4Pj4yXXwwKSsoKChjW2U+PjJdfDApPj4+MCkvOHwwKT4+MF18MCkmMTw8KGNbZT4+Ml0mNyl8MH1mdW5jdGlvbiBQSyhhLGIsZSl7YT1hfDA7Yj1ifDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTA7az1pO2k9aSszMnwwO2o9aztmPWsrMjh8MDtnPWsrMjR8MDtoPWsrOHwwO2NbZj4+Ml09YTtjW2c+PjJdPWI7aWYoIShjWyhjW2Y+PjJdfDApKzE2Pj4yXXwwKSl7aT1rO3JldHVybn1iPShjW2Y+PjJdfDApKzE2fDA7Y1tiPj4yXT0oY1tiPj4yXXwwKSstMTtiPShjW2Y+PjJdfDApKzIwfDA7Y1tiPj4yXT0oY1tiPj4yXXwwKSsxO2NbaD4+Ml09ZTtpZihjWyhjW2Y+PjJdfDApKzQwKzEyPj4yXXwwKXNBKChjW2Y+PjJdfDApKzQwfDAsNDExNjcsMSk7aWYoY1soY1tmPj4yXXwwKSsyOD4+Ml18MCl7ZT0oY1tmPj4yXXwwKSs0MHwwO2I9Y1soY1tmPj4yXXwwKSsyOD4+Ml18MDthPWNbKGNbZj4+Ml18MCkrMzY+PjJdfDA7Y1tqPj4yXT1jWyhjW2Y+PjJdfDApKzMyPj4yXTtjW2orND4+Ml09YTtyQShlLGIsail9ZWcoKGNbZj4+Ml18MCkrNDB8MCxjW2c+PjJdfDAsaCk7aWYoKGRbKGNbZj4+Ml18MCkrNDArMjQ+PjBdfDB8MCkhPTEpe2k9aztyZXR1cm59Y1soY1tmPj4yXXwwKSsyND4+Ml09MTtpPWs7cmV0dXJufWZ1bmN0aW9uIFFLKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wO2o9aTtpPWkrMzJ8MDtoPWorOHwwO2U9ajtnPWorMjB8MDtkPWorMTZ8MDtmPWorMTJ8MDtjW2Q+PjJdPWE7Y1tmPj4yXT1iO2RvIGlmKGNbZj4+Ml18MCl7Yj1jW2Q+PjJdfDA7YT1jW2Y+PjJdfDA7aWYoKGNbZj4+Ml18MCk+Pj4wPihjWyhjW2Q+PjJdfDApKzEyPj4yXXwwKT4+PjApe2NbZT4+Ml09YTtQSyhiLDQxNTAxLGUpO2NbZz4+Ml09MTticmVha31lPShPSyhiLGEpfDApIT0wO2E9Y1tkPj4yXXwwO2I9Y1tmPj4yXXwwO2lmKGUpe2NbaD4+Ml09YjtQSyhhLDQxNTI0LGgpO2NbZz4+Ml09MTticmVha31lbHNle0tLKGEsYik7Y1tnPj4yXT0wO2JyZWFrfX1lbHNlIGNbZz4+Ml09MTt3aGlsZSgwKTtpPWo7cmV0dXJuIGNbZz4+Ml18MH1mdW5jdGlvbiBSSyhhLGIpe2E9YXwwO2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wO2g9aTtpPWkrMTZ8MDtkPWgrMTJ8MDtlPWgrOHwwO2c9aCs0fDA7Zj1oO2NbZD4+Ml09YTtjW2U+PjJdPWI7YT1jW2Q+PjJdfDA7Yj0oY1thPj4yXXwwKSsxfDA7Y1thPj4yXT1iO2NbZj4+Ml09YjtjWyhjW2Q+PjJdfDApKyhjW2Y+PjJdPDwyKT4+Ml09Y1tlPj4yXTt3aGlsZSgxKXtiPSgoY1tmPj4yXXwwKT4+PjApLzJ8MDtjW2c+PjJdPWI7aWYoYj4+PjA8PTApe2Q9NTticmVha31pZigoY1soY1tkPj4yXXwwKSsoY1tnPj4yXTw8Mik+PjJdfDApPj4+MDw9KGNbKGNbZD4+Ml18MCkrKGNbZj4+Ml08PDIpPj4yXXwwKT4+PjApe2Q9NTticmVha31jW2U+PjJdPWNbKGNbZD4+Ml18MCkrKGNbZz4+Ml08PDIpPj4yXTtjWyhjW2Q+PjJdfDApKyhjW2c+PjJdPDwyKT4+Ml09Y1soY1tkPj4yXXwwKSsoY1tmPj4yXTw8Mik+PjJdO2NbKGNbZD4+Ml18MCkrKGNbZj4+Ml08PDIpPj4yXT1jW2U+PjJdO2NbZj4+Ml09Y1tnPj4yXX1pZigoZHwwKT09NSl7aT1oO3JldHVybn19ZnVuY3Rpb24gU0soYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wO2s9aTtpPWkrMzJ8MDtkPWsrMjB8MDtlPWsrMTZ8MDtmPWsrMTJ8MDtoPWsrOHwwO2c9ays0fDA7aj1rO2NbZT4+Ml09YTtjW2Y+PjJdPWI7Yj1jW2NbZT4+Ml0+PjJdfDA7Y1tqPj4yXT1iO2lmKCFiKXtjW2Q+PjJdPTA7aj1jW2Q+PjJdfDA7aT1rO3JldHVybiBqfDB9Y1tjW2Y+PjJdPj4yXT1jWyhjW2U+PjJdfDApKzQ+PjJdO2NbKGNbZT4+Ml18MCkrND4+Ml09Y1soY1tlPj4yXXwwKSsoY1tqPj4yXTw8Mik+PjJdO2NbKGNbZT4+Ml18MCkrKGNbaj4+Ml08PDIpPj4yXT0tMTtiPWNbZT4+Ml18MDtjW2I+PjJdPShjW2I+PjJdfDApKy0xO2NbZz4+Ml09MTt3aGlsZSgxKXtiPWNbZz4+Ml08PDE7Y1toPj4yXT1iO2lmKGI+Pj4wPihjW2NbZT4+Ml0+PjJdfDApPj4+MClicmVhaztpZigoY1soY1tlPj4yXXwwKSsoY1toPj4yXTw8Mik+PjJdfDApPj4+MD4oY1soY1tlPj4yXXwwKSsoKGNbaD4+Ml18MCkrMTw8Mik+PjJdfDApPj4+MCljW2g+PjJdPShjW2g+PjJdfDApKzE7aWYoKGNbKGNbZT4+Ml18MCkrKGNbZz4+Ml08PDIpPj4yXXwwKT4+PjA8KGNbKGNbZT4+Ml18MCkrKGNbaD4+Ml08PDIpPj4yXXwwKT4+PjApYnJlYWs7Y1tqPj4yXT1jWyhjW2U+PjJdfDApKyhjW2c+PjJdPDwyKT4+Ml07Y1soY1tlPj4yXXwwKSsoY1tnPj4yXTw8Mik+PjJdPWNbKGNbZT4+Ml18MCkrKGNbaD4+Ml08PDIpPj4yXTtjWyhjW2U+PjJdfDApKyhjW2g+PjJdPDwyKT4+Ml09Y1tqPj4yXTtjW2c+PjJdPWNbaD4+Ml19Y1tkPj4yXT0xO2o9Y1tkPj4yXXwwO2k9aztyZXR1cm4ganwwfWZ1bmN0aW9uIFRLKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MDtlPWk7aT1pKzE2fDA7Yj1lKzR8MDtkPWU7Y1tiPj4yXT1hO2lmKCEoY1tiPj4yXXwwKSl7YT1jW2I+PjJdfDA7S2QoYSk7aT1lO3JldHVybn1jW2Q+PjJdPTA7d2hpbGUoMSl7aWYoKGNbZD4+Ml18MCk+PShjW2NbYj4+Ml0+PjJdfDApKWJyZWFrO1hLKChjWyhjW2I+PjJdfDApKzEyPj4yXXwwKSsoKGNbZD4+Ml18MCkqNTZ8MCl8MCk7Y1tkPj4yXT0oY1tkPj4yXXwwKSsxfWE9Y1tiPj4yXXwwO0tkKGEpO2k9ZTtyZXR1cm59ZnVuY3Rpb24gVUsoYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTA7ZT1pO2k9aSsxNnwwO2Y9ZSs0fDA7ZD1lO2NbZj4+Ml09YTtjW2Q+PjJdPWI7VGYoY1tmPj4yXXwwLGNbKGNbZD4+Ml18MCkrMTI+PjJdfDApO1ZLKDAsY1soY1tkPj4yXXwwKSsxNj4+Ml18MCk7aWYoY1soY1tkPj4yXXwwKSs0MD4+Ml18MClXSyhjWyhjW2Q+PjJdfDApKzQwPj4yXXwwKTtpZighKGNbKGNbZD4+Ml18MCkrNTY+PjJdfDApKXtkPWNbZD4+Ml18MDthPWQrNzJ8MDtkb3tjW2Q+PjJdPTA7ZD1kKzR8MH13aGlsZSgoZHwwKTwoYXwwKSk7aT1lO3JldHVybn1XSyhjWyhjW2Q+PjJdfDApKzU2Pj4yXXwwKTtkPWNbZD4+Ml18MDthPWQrNzJ8MDtkb3tjW2Q+PjJdPTA7ZD1kKzR8MH13aGlsZSgoZHwwKTwoYXwwKSk7aT1lO3JldHVybn1mdW5jdGlvbiBWSyhhLGIpe2E9YXwwO2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wO2c9aTtpPWkrMTZ8MDtkPWcrMTJ8MDtoPWcrOHwwO2U9Zys0fDA7Zj1nO2NbZD4+Ml09YTtjW2g+PjJdPWI7Y1tlPj4yXT1jW2g+PjJdO3doaWxlKDEpe2lmKCEoY1tlPj4yXXwwKSlicmVhaztjW2Y+PjJdPWNbKGNbZT4+Ml18MCkrND4+Ml07VGYoY1tkPj4yXXwwLGNbZT4+Ml18MCk7Y1tlPj4yXT1jW2Y+PjJdfWk9ZztyZXR1cm59ZnVuY3Rpb24gV0soYSl7YT1hfDA7dmFyIGI9MCxkPTA7Yj1pO2k9aSsxNnwwO2Q9YjtjW2Q+PjJdPWE7b3IoY1tkPj4yXXwwKTtLZChjW2Q+PjJdfDApO2k9YjtyZXR1cm59ZnVuY3Rpb24gWEsoYSl7YT1hfDA7dmFyIGI9MCxkPTA7ZD1pO2k9aSsxNnwwO2I9ZDtjW2I+PjJdPWE7S2QoY1soY1tiPj4yXXwwKSsyOD4+Ml18MCk7S2QoY1soY1tiPj4yXXwwKSszNj4+Ml18MCk7aWYoY1soY1tiPj4yXXwwKSs0ND4+Ml18MClNcyhjWyhjW2I+PjJdfDApKzI0Pj4yXXwwLDAsMCxjWyhjW2I+PjJdfDApKzQ0Pj4yXXwwKXwwO1lLKGNbKGNbYj4+Ml18MCkrNDg+PjJdfDApO2I9Y1tiPj4yXXwwO2E9Yis1NnwwO2Rve2NbYj4+Ml09MDtiPWIrNHwwfXdoaWxlKChifDApPChhfDApKTtpPWQ7cmV0dXJufWZ1bmN0aW9uIFlLKGEpe2E9YXwwO3ZhciBiPTAsZD0wO2Q9aTtpPWkrMTZ8MDtiPWQ7Y1tiPj4yXT1hO2lmKCEoY1tiPj4yXXwwKSl7aT1kO3JldHVybn1USyhjWyhjW2I+PjJdfDApKzQ+PjJdfDApO0tkKGNbYj4+Ml18MCk7aT1kO3JldHVybn1mdW5jdGlvbiBaSyhiLGUsZixnKXtiPWJ8MDtlPWV8MDtmPWZ8MDtnPWd8MDt2YXIgaD0wLGo9MCxrPTAsbD0wLG09MDttPWk7aT1pKzMyfDA7aD1tKzE2fDA7aj1tO2s9bSsxMnwwO2w9bSs4fDA7Y1toPj4yXT1iO2I9ajtjW2I+PjJdPWU7Y1tiKzQ+PjJdPWY7Y1trPj4yXT1nO2lmKCEoZFsoY1toPj4yXXwwKSsxMT4+MF18MCkpe2k9bTtyZXR1cm59YVsoY1toPj4yXXwwKSsxMT4+MF09MDtjW2w+PjJdPWNbKGNbKGNbaD4+Ml18MCkrND4+Ml18MCkrOD4+Ml07d2hpbGUoMSl7aWYoIShjW2w+PjJdfDApKWJyZWFrO2RvIGlmKChkWyhjW2w+PjJdfDApKzY0Pj4wXXwwKSYxNil7YVsoY1toPj4yXXwwKSsxMT4+MF09MTtpZigoY1trPj4yXXwwKT09MD8oZz0oY1tsPj4yXXwwKSsxNnwwLGI9aiwhKChjW2c+PjJdfDApPT0oY1tiPj4yXXwwKT8oY1tnKzQ+PjJdfDApPT0oY1tiKzQ+PjJdfDApOjApKTowKWJyZWFrO2FbKGNbbD4+Ml18MCkrNjY+PjBdPTB9d2hpbGUoMCk7Y1tsPj4yXT1jWyhjW2w+PjJdfDApKzg+PjJdfWk9bTtyZXR1cm59ZnVuY3Rpb24gX0soYixmLGcsaCl7Yj1ifDA7Zj1mfDA7Zz1nfDA7aD1ofDA7dmFyIGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wO3U9aTtpPWkrNDh8MDtwPXUrMzZ8MDtrPXUrMzJ8MDtqPXUrMjh8MDtxPXUrMjR8MDtsPXUrMjB8MDtzPXUrMTZ8MDt0PXUrMTJ8MDtuPXUrOHwwO209dSs0fDA7cj11O289dSs0MHwwO2Nbaz4+Ml09YjtjW2o+PjJdPWY7Y1txPj4yXT1nO2NbbD4+Ml09aDtoPWNbaj4+Ml18MDtpZihoPj4+MD4oSkYoY1trPj4yXXwwKXwwKT4+PjApe2NbcD4+Ml09UWooNjY2ODgpfDA7dD1jW3A+PjJdfDA7aT11O3JldHVybiB0fDB9Y1t0Pj4yXT1JRihjW2s+PjJdfDAsY1tqPj4yXXwwLHMsMCwwKXwwO2lmKGNbdD4+Ml18MCl7Y1twPj4yXT1jW3Q+PjJdO3Q9Y1twPj4yXXwwO2k9dTtyZXR1cm4gdHwwfWE6ZG8gaWYoIShhWyhjW3M+PjJdfDApKzg+PjBdfDApKXthWyhjW3M+PjJdfDApKzg+PjBdPTE7Y1tyPj4yXT1kWyhjW3M+PjJdfDApKzU+PjBdO2NbbT4+Ml09MDt3aGlsZSgxKXtqPWNbcz4+Ml18MDtpZigoY1ttPj4yXXwwKT49KGVbKGNbcz4+Ml18MCkrMTg+PjFdfDApKWJyZWFrO2Nbbj4+Ml09KGNbais1Nj4+Ml18MCkrKGVbKGNbcz4+Ml18MCkrMjA+PjFdJihkWyhjWyhjW3M+PjJdfDApKzY0Pj4yXXwwKSsoY1ttPj4yXTw8MSk+PjBdPDw4fGRbKGNbKGNbcz4+Ml18MCkrNjQ+PjJdfDApKyhjW20+PjJdPDwxKSsxPj4wXSkpO2lmKChhWyhjW3M+PjJdfDApKzQ+PjBdfDApPT0wPyhmPWNbaz4+Ml18MCxoPWdyKGNbbj4+Ml18MCl8MCxjW3Q+PjJdPV9LKGYsaCwxLGNbbD4+Ml18MCl8MCwoY1t0Pj4yXXwwKSE9MCk6MClicmVhayBhO2NbdD4+Ml09JEsoY1tzPj4yXXwwLGNbbj4+Ml18MCxvKXwwO2lmKGNbdD4+Ml18MClicmVhayBhO2NbbT4+Ml09KGNbbT4+Ml18MCkrMX1pZihhW2orND4+MF18MCl7aWYoY1tsPj4yXXwwKXtvPWNbbD4+Ml18MDtjW28+PjJdPShjW28+PjJdfDApKyhlWyhjW3M+PjJdfDApKzE4Pj4xXXwwKX19ZWxzZXtuPWNbaz4+Ml18MDtvPWdyKChjWyhjW3M+PjJdfDApKzU2Pj4yXXwwKSsoKGNbcj4+Ml18MCkrOCl8MCl8MDtjW3Q+PjJdPV9LKG4sbywxLGNbbD4+Ml18MCl8MDtpZihjW3Q+PjJdfDApYnJlYWt9aj1jW3M+PjJdfDA7aWYoY1txPj4yXXwwKXthTChqLHQpO2JyZWFrfXE9R2coY1tqKzcyPj4yXXwwKXwwO2NbdD4+Ml09cTtpZighcSliTChjW3M+PjJdfDAsZFsoY1soY1tzPj4yXXwwKSs1Nj4+Ml18MCkrKGNbcj4+Ml18MCk+PjBdfDgpfWVsc2UgY1t0Pj4yXT1Raig2NjY5Myl8MDt3aGlsZSgwKTthWyhjW3M+PjJdfDApKzg+PjBdPTA7UUIoY1tzPj4yXXwwKTtjW3A+PjJdPWNbdD4+Ml07dD1jW3A+PjJdfDA7aT11O3JldHVybiB0fDB9ZnVuY3Rpb24gJEsoYSxkLGYpe2E9YXwwO2Q9ZHwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wO3Q9aTtpPWkrODB8MDtnPXQrNjR8MDtoPXQrNjB8MDtqPXQrNTZ8MDt1PXQrNTJ8MDtwPXQrNDh8MDtsPXQ7bz10KzQ0fDA7cj10KzQwfDA7bT10KzM2fDA7bj10KzMyfDA7az10KzI4fDA7cT10KzI0fDA7Y1toPj4yXT1hO2Nbaj4+Ml09ZDtjW3U+PjJdPWY7Y1twPj4yXT1jWyhjW2g+PjJdfDApKzUyPj4yXTtVYltjWyhjW2g+PjJdfDApKzgwPj4yXSYyNTVdKGNbaD4+Ml18MCxjW2o+PjJdfDAsbCk7YltjW3U+PjJdPj4xXT1iW2wrMTg+PjFdfDA7aWYoKGVbbCsxNj4+MV18MHwwKT09KGNbbCsxMj4+Ml18MCkpe2NbZz4+Ml09MDt1PWNbZz4+Ml18MDtpPXQ7cmV0dXJuIHV8MH1pZigoKGNbaj4+Ml18MCkrKGVbbCsxOD4+MV18MCkrLTF8MCk+Pj4wPigoY1soY1toPj4yXXwwKSs1Nj4+Ml18MCkrKGVbKGNbaD4+Ml18MCkrMjA+PjFdfDApfDApPj4+MCl7Y1tnPj4yXT1Raig2NDI0OSl8MDt1PWNbZz4+Ml18MDtpPXQ7cmV0dXJuIHV8MH1jW28+PjJdPWdyKChjW2o+PjJdfDApKyhlW2wrMTg+PjFdfDApKy00fDApfDA7Y1tuPj4yXT0oY1soY1twPj4yXXwwKSszNj4+Ml18MCktNDtjW20+PjJdPSgoKGNbbCsxMj4+Ml18MCktKGVbbCsxNj4+MV18MCkrKGNbbj4+Ml18MCktMXwwKT4+PjApLygoY1tuPj4yXXwwKT4+PjApfDA7d2hpbGUoMSl7dT1jW20+PjJdfDA7Y1ttPj4yXT11Ky0xO2lmKCF1KXtzPTIzO2JyZWFrfWNbaz4+Ml09MDtjW3E+PjJdPTA7aWYoKGNbbz4+Ml18MCk+Pj4wPDIpe3M9OTticmVha311PWNbbz4+Ml18MDtpZih1Pj4+MD4oSkYoY1twPj4yXXwwKXwwKT4+PjApe3M9OTticmVha31pZigoY1ttPj4yXXwwKSE9MD8oY1tyPj4yXT1VRihjW3A+PjJdfDAsY1tvPj4yXXwwLHEsayl8MCwoY1tyPj4yXXwwKSE9MCk6MCl7cz0xMjticmVha31pZigoY1txPj4yXXwwKT09MD8odT1lTChjW3A+PjJdfDAsY1tvPj4yXXwwKXwwLGNbcT4+Ml09dSwodXwwKT09MCk6MClzPTE3O2Vsc2UgaWYoKFZ0KGNbKGNbcT4+Ml18MCkrNzI+PjJdfDApfDApIT0xKWNbcj4+Ml09UWooNjQyODUpfDA7ZWxzZSBzPTE3O2lmKChzfDApPT0xNyl7cz0wO2Nbcj4+Ml09Y0woY1twPj4yXXwwLGNbcT4+Ml18MCxjW28+PjJdfDApfDB9aWYoY1txPj4yXXwwKXlnKGNbKGNbcT4+Ml18MCkrNzI+PjJdfDApO2lmKGNbcj4+Ml18MCl7cz0yMTticmVha31jW28+PjJdPWNbaz4+Ml19aWYoKHN8MCk9PTkpe2NbZz4+Ml09UWooNjQyNjUpfDA7dT1jW2c+PjJdfDA7aT10O3JldHVybiB1fDB9ZWxzZSBpZigoc3wwKT09MTIpe2NbZz4+Ml09Y1tyPj4yXTt1PWNbZz4+Ml18MDtpPXQ7cmV0dXJuIHV8MH1lbHNlIGlmKChzfDApPT0yMSl7Y1tnPj4yXT1jW3I+PjJdO3U9Y1tnPj4yXXwwO2k9dDtyZXR1cm4gdXwwfWVsc2UgaWYoKHN8MCk9PTIzKXtjW2c+PjJdPTA7dT1jW2c+PjJdfDA7aT10O3JldHVybiB1fDB9cmV0dXJuIDB9ZnVuY3Rpb24gYUwoYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTA7Zj1pO2k9aSsxNnwwO2Q9Zis0fDA7ZT1mO2NbZD4+Ml09YTtjW2U+PjJdPWI7aWYoY1tjW2U+PjJdPj4yXXwwKXtpPWY7cmV0dXJufWI9Y0woY1soY1tkPj4yXXwwKSs1Mj4+Ml18MCxjW2Q+PjJdfDAsY1soY1tkPj4yXXwwKSs4ND4+Ml18MCl8MDtjW2NbZT4+Ml0+PjJdPWI7aT1mO3JldHVybn1mdW5jdGlvbiBiTChmLGcpe2Y9ZnwwO2c9Z3wwO3ZhciBoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTA7bz1pO2k9aSszMnwwO2g9bysxMnwwO2o9bys4fDA7az1vKzR8MDtuPW87bT1vKzE4fDA7bD1vKzE2fDA7Y1toPj4yXT1mO2Nbaj4+Ml09ZztjW2s+PjJdPWNbKGNbaD4+Ml18MCkrNTY+PjJdO2Nbbj4+Ml09Y1soY1toPj4yXXwwKSs1Mj4+Ml07YVttPj4wXT1hWyhjW2g+PjJdfDApKzU+PjBdfDA7aWYoKGVbKGNbbj4+Ml18MCkrMjI+PjFdfDApJjQpVlIoKGNbaz4+Ml18MCkrKGRbbT4+MF18MCl8MCwwLChjWyhjW24+PjJdfDApKzM2Pj4yXXwwKS0oZFttPj4wXXwwKXwwKXwwO2FbKGNbaz4+Ml18MCkrKGRbbT4+MF18MCk+PjBdPWNbaj4+Ml07YltsPj4xXT0oZFttPj4wXXwwKSsoKGNbaj4+Ml0mOHwwKT09MD8xMjo4KTtmPShjW2s+PjJdfDApKygoZFttPj4wXXwwKSsxKXwwO2FbZj4+MF09MDthW2YrMT4+MF09MDthW2YrMj4+MF09MDthW2YrMz4+MF09MDthWyhjW2s+PjJdfDApKygoZFttPj4wXXwwKSs3KT4+MF09MDthWyhjW2s+PjJdfDApKygoZFttPj4wXXwwKSs1KT4+MF09KGNbKGNbbj4+Ml18MCkrMzY+PjJdfDApPj4+ODthWyhjW2s+PjJdfDApKygoZFttPj4wXXwwKSs1KSsxPj4wXT1jWyhjW24+PjJdfDApKzM2Pj4yXTtiWyhjW2g+PjJdfDApKzE2Pj4xXT0oY1soY1tuPj4yXXwwKSszNj4+Ml18MCktKGVbbD4+MV18MCk7WHQoY1toPj4yXXwwLGNbaj4+Ml18MCl8MDtiWyhjW2g+PjJdfDApKzE0Pj4xXT1iW2w+PjFdfDA7Y1soY1toPj4yXXwwKSs2MD4+Ml09KGNbaz4+Ml18MCkrKGNbKGNbbj4+Ml18MCkrMzY+PjJdfDApO2NbKGNbaD4+Ml18MCkrNjQ+PjJdPShjW2s+PjJdfDApKyhlW2w+PjFdfDApO2NbKGNbaD4+Ml18MCkrNjg+PjJdPShjW2s+PjJdfDApKyhkWyhjW2g+PjJdfDApKzY+PjBdfDApO2FbKGNbaD4+Ml18MCkrMT4+MF09MDtiWyhjW2g+PjJdfDApKzIwPj4xXT0oY1soY1tuPj4yXXwwKSszMj4+Ml18MCktMTtiWyhjW2g+PjJdfDApKzE4Pj4xXT0wO2FbY1toPj4yXT4+MF09MTtpPW87cmV0dXJufWZ1bmN0aW9uIGNMKGIsZCxmKXtiPWJ8MDtkPWR8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTA7cz1pO2k9aSs0OHwwO2c9cys0MHwwO2g9cyszNnwwO2o9cyszMnwwO2s9cysyOHwwO3E9cysyNHwwO2w9cysyMHwwO3A9cysxNnwwO289cysxMnwwO3I9cys4fDA7bT1zKzR8MDtuPXM7Y1toPj4yXT1iO2Nbaj4+Ml09ZDtjW2s+PjJdPWY7Y1txPj4yXT0wO2NbbD4+Ml09MDtjW3A+PjJdPWNbKGNbaD4+Ml18MCkrMTI+PjJdO2lmKChjW2s+PjJdfDApPj4+MDwyKXtjW2c+PjJdPVFqKDY0MTAzKXwwO3I9Y1tnPj4yXXwwO2k9cztyZXR1cm4gcnwwfWlmKGNbaj4+Ml18MCl7Y1tvPj4yXT1jW2o+PjJdO2RMKGNbKGNbbz4+Ml18MCkrNzI+PjJdfDApfWVsc2UgY1tvPj4yXT1lTChjW2g+PjJdfDAsY1trPj4yXXwwKXwwO2Nbcj4+Ml09R2coY1soY1twPj4yXXwwKSs3Mj4+Ml18MCl8MDtkbyBpZighKGNbcj4+Ml18MCkpe2NbbT4+Ml09Z3IoKGNbKGNbcD4+Ml18MCkrNTY+PjJdfDApKzM2fDApfDA7ZnQoKGNbKGNbcD4+Ml18MCkrNTY+PjJdfDApKzM2fDAsKGNbbT4+Ml18MCkrMXwwKTtpZihlWyhjW2g+PjJdfDApKzIyPj4xXSY0KXtpZigoY1tvPj4yXXwwKT09MD8oZD1YRihjW2g+PjJdfDAsY1trPj4yXXwwLG8sMCl8MCxjW3I+PjJdPWQsKGR8MCkhPTApOjApYnJlYWs7ZD1HZyhjWyhjW28+PjJdfDApKzcyPj4yXXwwKXwwO2Nbcj4+Ml09ZDtpZihkKWJyZWFrO1ZSKGNbKGNbbz4+Ml18MCkrNTY+PjJdfDAsMCxjWyhjWyhjW28+PjJdfDApKzUyPj4yXXwwKSszMj4+Ml18MCl8MH1pZigoYVsoY1toPj4yXXwwKSsxNz4+MF18MCkhPTA/KGVLKGNbaD4+Ml18MCxjW2s+PjJdfDAsMiwwLHIpLChjW3I+PjJdfDApIT0wKTowKWJyZWFrO2lmKGNbbT4+Ml18MCl7Y1tsPj4yXT1ncigoY1soY1twPj4yXXwwKSs1Nj4+Ml18MCkrMzJ8MCl8MDtjW3I+PjJdPVhGKGNbaD4+Ml18MCxjW2w+PjJdfDAscSwwKXwwO2lmKGNbcj4+Ml18MClicmVhaztjW24+PjJdPWdyKChjWyhjW3E+PjJdfDApKzU2Pj4yXXwwKSs0fDApfDA7aWYoKGNbbj4+Ml18MCk+Pj4wPigoKChjWyhjW2g+PjJdfDApKzM2Pj4yXXwwKT4+PjApLzR8MCktMnwwKT4+PjApe2Nbcj4+Ml09UWooNjQxNTYpfDA7YnJlYWt9aWYoKGNbbj4+Ml18MCk+Pj4wPCgoKChjWyhjW2g+PjJdfDApKzM2Pj4yXXwwKT4+PjApLzR8MCktOHwwKT4+PjApe2Nbcj4+Ml09R2coY1soY1txPj4yXXwwKSs3Mj4+Ml18MCl8MDtpZihjW3I+PjJdfDApYnJlYWs7ZnQoKGNbKGNbcT4+Ml18MCkrNTY+PjJdfDApKzR8MCwoY1tuPj4yXXwwKSsxfDApO2Z0KChjWyhjW3E+PjJdfDApKzU2Pj4yXXwwKSsoOCsoY1tuPj4yXTw8MikpfDAsY1trPj4yXXwwKTtpZigoY1tvPj4yXXwwKSE9MD8oZVsoY1toPj4yXXwwKSsyMj4+MV0mNHwwKT09MDowKWZMKGNbKGNbbz4+Ml18MCkrNzI+PjJdfDApO2Nbcj4+Ml09Z0woY1toPj4yXXwwLGNbaz4+Ml18MCl8MDticmVha319aWYoKGNbbz4+Ml18MCk9PTA/KGQ9WEYoY1toPj4yXXwwLGNbaz4+Ml18MCxvLDApfDAsY1tyPj4yXT1kLDAhPShkfDApKTowKWJyZWFrO2Nbcj4+Ml09R2coY1soY1tvPj4yXXwwKSs3Mj4+Ml18MCl8MDtpZighKGNbcj4+Ml18MCkpe2Z0KGNbKGNbbz4+Ml18MCkrNTY+PjJdfDAsY1tsPj4yXXwwKTtmdCgoY1soY1tvPj4yXXwwKSs1Nj4+Ml18MCkrNHwwLDApO2Z0KChjWyhjW3A+PjJdfDApKzU2Pj4yXXwwKSszMnwwLGNbaz4+Ml18MCl9fXdoaWxlKDApO2lmKGNbbz4+Ml18MClhW2Nbbz4+Ml0+PjBdPTA7UUIoY1tvPj4yXXwwKTtRQihjW3E+PjJdfDApO2NbZz4+Ml09Y1tyPj4yXTtyPWNbZz4+Ml18MDtpPXM7cmV0dXJuIHJ8MH1mdW5jdGlvbiBkTChhKXthPWF8MDt2YXIgYj0wLGQ9MDtiPWk7aT1pKzE2fDA7ZD1iO2NbZD4+Ml09YTtoTChjW2Q+PjJdfDApO2k9YjtyZXR1cm59ZnVuY3Rpb24gZUwoYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MDtoPWk7aT1pKzE2fDA7ZD1oKzEyfDA7ZT1oKzh8MDtmPWgrNHwwO2c9aDtjW2U+PjJdPWE7Y1tmPj4yXT1iO2NbZz4+Ml09aHMoY1tjW2U+PjJdPj4yXXwwLGNbZj4+Ml18MCl8MDtpZihjW2c+PjJdfDApe2NbZD4+Ml09S0YoY1tnPj4yXXwwLGNbZj4+Ml18MCxjW2U+PjJdfDApfDA7Yj1jW2Q+PjJdfDA7aT1oO3JldHVybiBifDB9ZWxzZXtjW2Q+PjJdPTA7Yj1jW2Q+PjJdfDA7aT1oO3JldHVybiBifDB9cmV0dXJuIDB9ZnVuY3Rpb24gZkwoZCl7ZD1kfDA7dmFyIGY9MCxnPTAsaD0wO2g9aTtpPWkrMTZ8MDtmPWgrNHwwO2c9aDtjW2Y+PjJdPWQ7Y1tnPj4yXT1jWyhjW2Y+PjJdfDApKzE2Pj4yXTtpZihhWyhjW2c+PjJdfDApKzEzPj4wXXwwKXtpPWg7cmV0dXJufWlmKCEoZVsoY1tmPj4yXXwwKSsyND4+MV0mMikpe2k9aDtyZXR1cm59aWYoY1soY1tnPj4yXXwwKSsxMDQ+PjJdfDApe2k9aDtyZXR1cm59ZD0oY1tmPj4yXXwwKSsyNHwwO2JbZD4+MV09ZVtkPj4xXXwxNjtkPShjW2Y+PjJdfDApKzI0fDA7YltkPj4xXT1lW2Q+PjFdJi01O2k9aDtyZXR1cm59ZnVuY3Rpb24gZ0woYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wO2c9aTtpPWkrMTZ8MDtkPWcrOHwwO2U9Zys0fDA7Zj1nO2NbZD4+Ml09YTtjW2U+PjJdPWI7Y1tmPj4yXT0wO2lmKChjWyhjW2Q+PjJdfDApKzYwPj4yXXwwKT09MD8oYj1raihjWyhjW2Q+PjJdfDApKzQ0Pj4yXXwwKXwwLGNbKGNbZD4+Ml18MCkrNjA+PjJdPWIsKGNbKGNbZD4+Ml18MCkrNjA+PjJdfDApPT0wKTowKWNbZj4+Ml09NztpZihjW2Y+PjJdfDApe2Y9Y1tmPj4yXXwwO2k9ZztyZXR1cm4gZnwwfWI9Y1tlPj4yXXwwO2lmKGI+Pj4wPihvaihjWyhjW2Q+PjJdfDApKzYwPj4yXXwwKXwwKT4+PjApe2Y9Y1tmPj4yXXwwO2k9ZztyZXR1cm4gZnwwfWNbZj4+Ml09bGooY1soY1tkPj4yXXwwKSs2MD4+Ml18MCxjW2U+PjJdfDApfDA7Zj1jW2Y+PjJdfDA7aT1nO3JldHVybiBmfDB9ZnVuY3Rpb24gaEwoYSl7YT1hfDA7dmFyIGQ9MCxlPTA7ZD1pO2k9aSsxNnwwO2U9ZDtjW2U+PjJdPWE7YT0oY1tlPj4yXXwwKSsyNnwwO2JbYT4+MV09KGJbYT4+MV18MCkrMTw8MTY+PjE2O2E9KGNbKGNbZT4+Ml18MCkrMjg+PjJdfDApKzEyfDA7Y1thPj4yXT0oY1thPj4yXXwwKSsxO2k9ZDtyZXR1cm59ZnVuY3Rpb24gaUwoYixkLGUpe2I9YnwwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTA7cD1pO2k9aSs0OHwwO2Y9cCszMnwwO2c9cCsyOHwwO2g9cCsyNHwwO2o9cCsyMHwwO289cCsxNnwwO249cCsxMnwwO2w9cCs4fDA7az1wKzR8MDttPXA7Y1tnPj4yXT1iO2NbaD4+Ml09ZDtjW2o+PjJdPWU7Y1tuPj4yXT0wO2NbbD4+Ml09Y1soY1tnPj4yXXwwKSs0Pj4yXTtpZihjWyhjW2w+PjJdfDApKzg+PjJdfDApe2NbZj4+Ml09MjYyO289Y1tmPj4yXXwwO2k9cDtyZXR1cm4gb3wwfWlmKChjW2g+PjJdfDApPj4+MDwyKXtjW2Y+PjJdPVFqKDY2ODE0KXwwO289Y1tmPj4yXXwwO2k9cDtyZXR1cm4gb3wwfWNbbz4+Ml09WEYoY1tsPj4yXXwwLGNbaD4+Ml18MCxuLDApfDA7aWYoY1tvPj4yXXwwKXtjW2Y+PjJdPWNbbz4+Ml07bz1jW2Y+PjJdfDA7aT1wO3JldHVybiBvfDB9Y1tvPj4yXT13SihjW2c+PjJdfDAsY1toPj4yXXwwLDApfDA7aWYoY1tvPj4yXXwwKXtRQihjW24+PjJdfDApO2NbZj4+Ml09Y1tvPj4yXTtvPWNbZj4+Ml18MDtpPXA7cmV0dXJuIG98MH1jW2Nbaj4+Ml0+PjJdPTA7aWYoYVsoY1tsPj4yXXwwKSsxNz4+MF18MCl7cmcoY1tnPj4yXXwwLDQsayk7ZD1jW24+PjJdfDA7ZG8gaWYoKGNbaD4+Ml18MCk9PShjW2s+PjJdfDApKXthTChkLG8pO1FCKGNbbj4+Ml18MCk7aWYoY1tvPj4yXXwwKXtjW2Y+PjJdPWNbbz4+Ml07bz1jW2Y+PjJdfDA7aT1wO3JldHVybiBvfDB9fWVsc2V7UUIoZCk7Y1tvPj4yXT1YRihjW2w+PjJdfDAsY1trPj4yXXwwLG0sMCl8MDtpZihjW28+PjJdfDApe2NbZj4+Ml09Y1tvPj4yXTtvPWNbZj4+Ml18MDtpPXA7cmV0dXJuIG98MH1jW28+PjJdPWJLKGNbbD4+Ml18MCxjW20+PjJdfDAsMSwwLGNbaD4+Ml18MCwwKXwwO1FCKGNbbT4+Ml18MCk7aWYoY1tvPj4yXXwwKXtjW2Y+PjJdPWNbbz4+Ml07bz1jW2Y+PjJdfDA7aT1wO3JldHVybiBvfDB9Y1ttPj4yXT0wO2Nbbz4+Ml09WEYoY1tsPj4yXXwwLGNbaz4+Ml18MCxtLDApfDA7YUwoY1ttPj4yXXwwLG8pO1FCKGNbbT4+Ml18MCk7aWYoIShjW28+PjJdfDApKXtjW2Nbaj4+Ml0+PjJdPWNbaz4+Ml07YnJlYWt9Y1tmPj4yXT1jW28+PjJdO289Y1tmPj4yXXwwO2k9cDtyZXR1cm4gb3wwfXdoaWxlKDApO2Nbaz4+Ml09KGNbaz4+Ml18MCkrLTE7d2hpbGUoMSl7aWYoKGNbaz4+Ml18MCkhPSgoKChjWzM4NF18MCk+Pj4wKS8oKGNbKGNbbD4+Ml18MCkrMzI+PjJdfDApPj4+MCl8MCkrMXwwKT8obj1WRihjW2w+PjJdfDAsY1trPj4yXXwwKXwwLChufDApIT0oY1trPj4yXXwwKSk6MClicmVhaztjW2s+PjJdPShjW2s+PjJdfDApKy0xfWNbbz4+Ml09QmcoY1tnPj4yXXwwLDQsY1trPj4yXXwwKXwwfWVsc2V7YUwoY1tuPj4yXXwwLG8pO1FCKGNbbj4+Ml18MCl9Y1tmPj4yXT1jW28+PjJdO289Y1tmPj4yXXwwO2k9cDtyZXR1cm4gb3wwfWZ1bmN0aW9uIGpMKGIpe2I9YnwwO3ZhciBkPTAsZT0wO2Q9aTtpPWkrMTZ8MDtlPWQ7Y1tlPj4yXT1iO2FbKGNbZT4+Ml18MCkrNTY+PjBdPTE7Yj1rTCgoY1tlPj4yXXwwKSs2NHwwLChjW2U+PjJdfDApKzM2fDApfDA7aT1kO3JldHVybiBifDB9ZnVuY3Rpb24ga0woYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MDtsPWk7aT1pKzY0fDA7ZT1sKzYwfDA7Zj1sKzU2fDA7ZD1sKzUyfDA7aj1sKzQ4fDA7az1sO2c9bCs0NHwwO2g9bCs0MHwwO2NbZT4+Ml09YTtjW2Y+PjJdPWI7Y1tkPj4yXT1jWyhjWyhjW2U+PjJdfDApKzg+PjJdfDApKzI0Pj4yXTtjW2o+PjJdPTA7Yj1rO2E9Yis0MHwwO2Rve2NbYj4+Ml09MDtiPWIrNHwwfXdoaWxlKChifDApPChhfDApKTtpZighKGNbKGNbZT4+Ml18MCkrNDA+PjJdfDApKWNbaj4+Ml09bEwoY1tkPj4yXXwwLDAsMCwoY1tlPj4yXXwwKSs0MHwwKXwwO2lmKCEoY1tqPj4yXXwwKSljW2o+PjJdPW1MKGNbZT4+Ml18MCxjW2Y+PjJdfDApfDA7aWYoY1tqPj4yXXwwKXtrPWNbaj4+Ml18MDtpPWw7cmV0dXJuIGt8MH1jW2g+PjJdPTA7ZD0oY1tlPj4yXXwwKSs0MCs4fDA7bkwoY1soY1tlPj4yXXwwKSs0MD4+Ml18MCxrLGNbKGNbKGNbZT4+Ml18MCkrOD4+Ml18MCkrMTI+PjJdfDAsY1tkPj4yXXwwLGNbZCs0Pj4yXXwwKTtkPShjW2U+PjJdfDApKzI4fDA7Y1tkPj4yXT0oY1tkPj4yXXwwKSsxO2Q9Y1soY1tmPj4yXXwwKSs4Pj4yXXwwO29MKGssZCwoKGR8MCk8MCk8PDMxPj4zMSk7Y1tnPj4yXT1jW2NbZj4+Ml0+PjJdO3doaWxlKDEpe2I9Y1tnPj4yXXwwO2lmKCEoY1tnPj4yXXwwKSlicmVhaztjW2g+PjJdPWNbYis0Pj4yXTtkPWNbY1tnPj4yXT4+Ml18MDtvTChrLGQsKChkfDApPDApPDwzMT4+MzEpO3BMKGssKGNbZz4+Ml18MCkrOHwwLGNbY1tnPj4yXT4+Ml18MCk7aWYoIShjWyhjW2Y+PjJdfDApKzQ+PjJdfDApKUtkKGNbZz4+Ml18MCk7Y1tnPj4yXT1jW2g+PjJdfWNbY1tmPj4yXT4+Ml09YjtjW2o+PjJdPXFMKGssKGNbZT4+Ml18MCkrNDArOHwwKXwwO2s9Y1tqPj4yXXwwO2k9bDtyZXR1cm4ga3wwfWZ1bmN0aW9uIGxMKGEsYixkLGUpe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MDtsPWk7aT1pKzMyfDA7Zj1sKzI4fDA7Zz1sKzI0fDA7aD1sKzIwfDA7az1sKzE2fDA7aj1sO2NbZz4+Ml09YTthPWwrOHwwO2NbYT4+Ml09YjtjW2ErND4+Ml09ZDtjW2g+PjJdPWU7aWYoQmkoMjAyKXwwKXtjW2Y+PjJdPTMzMzg7az1jW2Y+PjJdfDA7aT1sO3JldHVybiBrfDB9Y1trPj4yXT15TChjW2NbZz4+Ml0+PjJdfDAsMCxjW2g+PjJdfDAsNDEyNixrKXwwO2lmKCEoY1trPj4yXXwwKSl7ZT1qO2NbZT4+Ml09MDtjW2UrND4+Ml09MDtUcyhjW2NbaD4+Ml0+PjJdfDAsMTgsail9Y1tmPj4yXT1jW2s+PjJdO2s9Y1tmPj4yXXwwO2k9bDtyZXR1cm4ga3wwfWZ1bmN0aW9uIG1MKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wO249aTtpPWkrMzJ8MDtnPW4rMjh8MDtoPW4rMjR8MDtqPW4rMjB8MDtsPW4rMTZ8MDtrPW4rMTJ8MDttPW4rOHwwO2U9bis0fDA7Zj1uO2NbaD4+Ml09YTtjW2o+PjJdPWI7Y1tlPj4yXT1yTChjW2g+PjJdfDApfDA7aWYoY1tlPj4yXXwwKXtjW2c+PjJdPWNbZT4+Ml07bT1jW2c+PjJdfDA7aT1uO3JldHVybiBtfDB9Y1ttPj4yXT1jW2Nbaj4+Ml0+PjJdO2U9c0woY1soY1toPj4yXXwwKSs4Pj4yXXwwKXwwO2NbKGNbaD4+Ml18MCkrMzI+PjJdPWU7Y1trPj4yXT1rZygyNTYsMCl8MDtpZighKGNbaz4+Ml18MCkpe2NbZz4+Ml09NzttPWNbZz4+Ml18MDtpPW47cmV0dXJuIG18MH13aGlsZSgxKXtpZighKGNbbT4+Ml18MCkpYnJlYWs7Yj1jW20+PjJdfDA7ZG8gaWYoY1soY1tqPj4yXXwwKSs0Pj4yXXwwKWlmKChifDApPT0oY1soY1tqPj4yXXwwKSs0Pj4yXXwwKSl7Y1tmPj4yXT0wO2JyZWFrfWVsc2V7Y1tmPj4yXT0oY1soY1tqPj4yXXwwKSs0Pj4yXXwwKSsoY1soY1ttPj4yXXwwKSs0Pj4yXXwwKTticmVha31lbHNlIGNbZj4+Ml09Y1tiKzQ+PjJdO3doaWxlKDApO2NbKGNbbT4+Ml18MCkrND4+Ml09MDtjW2w+PjJdPTA7d2hpbGUoMSl7aWYoIShjWyhjW2s+PjJdfDApKyhjW2w+PjJdPDwyKT4+Ml18MCkpYnJlYWs7Y1ttPj4yXT10TChjW2g+PjJdfDAsY1ttPj4yXXwwLGNbKGNbaz4+Ml18MCkrKGNbbD4+Ml08PDIpPj4yXXwwKXwwO2NbKGNbaz4+Ml18MCkrKGNbbD4+Ml08PDIpPj4yXT0wO2NbbD4+Ml09KGNbbD4+Ml18MCkrMX1jWyhjW2s+PjJdfDApKyhjW2w+PjJdPDwyKT4+Ml09Y1ttPj4yXTtjW20+PjJdPWNbZj4+Ml19Y1ttPj4yXT0wO2NbbD4+Ml09MDt3aGlsZSgxKXtpZigoY1tsPj4yXXwwKT49NjQpYnJlYWs7aWYoY1soY1trPj4yXXwwKSsoY1tsPj4yXTw8Mik+PjJdfDApe2lmKGNbbT4+Ml18MCliPXRMKGNbaD4+Ml18MCxjW20+PjJdfDAsY1soY1trPj4yXXwwKSsoY1tsPj4yXTw8Mik+PjJdfDApfDA7ZWxzZSBiPWNbKGNbaz4+Ml18MCkrKGNbbD4+Ml08PDIpPj4yXXwwO2NbbT4+Ml09Yn1jW2w+PjJdPShjW2w+PjJdfDApKzF9Y1tjW2o+PjJdPj4yXT1jW20+PjJdO0tkKGNbaz4+Ml18MCk7Y1tnPj4yXT1kWyhjWyhjW2g+PjJdfDApKzEyPj4yXXwwKSsxMT4+MF07bT1jW2c+PjJdfDA7aT1uO3JldHVybiBtfDB9ZnVuY3Rpb24gbkwoYSxiLGQsZSxmKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MDtsPWk7aT1pKzMyfDA7Zz1sKzE2fDA7aD1sKzEyfDA7aj1sKzh8MDtrPWw7Y1tnPj4yXT1hO2NbaD4+Ml09YjtjW2o+PjJdPWQ7YT1rO2NbYT4+Ml09ZTtjW2ErND4+Ml09ZjtlPWNbaD4+Ml18MDtmPWUrNDB8MDtkb3tjW2U+PjJdPTA7ZT1lKzR8MH13aGlsZSgoZXwwKTwoZnwwKSk7YT1jW2o+PjJdfDA7YT0kZihhLCgoYXwwKTwwKTw8MzE+PjMxKXwwO2NbKGNbaD4+Ml18MCkrND4+Ml09YTtpZihjWyhjW2g+PjJdfDApKzQ+PjJdfDApe2I9azthPWNbaj4+Ml18MDthPSRSKGNbYj4+Ml18MCxjW2IrND4+Ml18MCxhfDAsKChhfDApPDApPDwzMT4+MzF8MCl8MDtjWyhjW2g+PjJdfDApKzEyPj4yXT1hO2NbKGNbaD4+Ml18MCkrMTY+PjJdPWE7YT1jWyhjW2g+PjJdfDApKzEyPj4yXXwwO2E9UVIoY1trPj4yXXwwLGNbays0Pj4yXXwwLGF8MCwoKGF8MCk8MCk8PDMxPj4zMXwwKXwwO2s9KGNbaD4+Ml18MCkrMjR8MDtjW2s+PjJdPWE7Y1trKzQ+PjJdPUM7Y1soY1toPj4yXXwwKSs4Pj4yXT1jW2o+PjJdO2NbKGNbaD4+Ml18MCkrMzI+PjJdPWNbZz4+Ml07aT1sO3JldHVybn1lbHNle2NbY1toPj4yXT4+Ml09NztpPWw7cmV0dXJufX1mdW5jdGlvbiBvTChhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTA7ZT1pO2k9aSszMnwwO2g9ZSsxMnwwO2o9ZTtmPWUrOHwwO2c9ZSsxNnwwO2NbaD4+Ml09YTthPWo7Y1thPj4yXT1iO2NbYSs0Pj4yXT1kO2E9ajtjW2Y+PjJdPVNJKGcsY1thPj4yXXwwLGNbYSs0Pj4yXXwwKXwwO3BMKGNbaD4+Ml18MCxnLGNbZj4+Ml18MCk7aT1lO3JldHVybn1mdW5jdGlvbiBwTChhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTA7az1pO2k9aSszMnwwO2U9aysxNnwwO2Y9aysxMnwwO2c9ays4fDA7aj1rKzR8MDtoPWs7Y1tlPj4yXT1hO2NbZj4+Ml09YjtjW2c+PjJdPWQ7Y1tqPj4yXT1jW2c+PjJdO3doaWxlKDEpe2lmKChjW2o+PjJdfDApPD0wKXtlPTk7YnJlYWt9aWYoY1tjW2U+PjJdPj4yXXwwKXtlPTk7YnJlYWt9Y1toPj4yXT1jW2o+PjJdO2lmKChjW2g+PjJdfDApPigoY1soY1tlPj4yXXwwKSs4Pj4yXXwwKS0oY1soY1tlPj4yXXwwKSsxNj4+Ml18MCl8MCkpY1toPj4yXT0oY1soY1tlPj4yXXwwKSs4Pj4yXXwwKS0oY1soY1tlPj4yXXwwKSsxNj4+Ml18MCk7VFIoKGNbKGNbZT4+Ml18MCkrND4+Ml18MCkrKGNbKGNbZT4+Ml18MCkrMTY+PjJdfDApfDAsKGNbZj4+Ml18MCkrKChjW2c+PjJdfDApLShjW2o+PjJdfDApKXwwLGNbaD4+Ml18MCl8MDtiPShjW2U+PjJdfDApKzE2fDA7Y1tiPj4yXT0oY1tiPj4yXXwwKSsoY1toPj4yXXwwKTtpZigoY1soY1tlPj4yXXwwKSsxNj4+Ml18MCk9PShjWyhjW2U+PjJdfDApKzg+PjJdfDApKXtsPWNbKGNbZT4+Ml18MCkrMzI+PjJdfDA7ZD0oY1soY1tlPj4yXXwwKSs0Pj4yXXwwKSsoY1soY1tlPj4yXXwwKSsxMj4+Ml18MCl8MDtiPShjWyhjW2U+PjJdfDApKzE2Pj4yXXwwKS0oY1soY1tlPj4yXXwwKSsxMj4+Ml18MCl8MDttPShjW2U+PjJdfDApKzI0fDA7YT1jWyhjW2U+PjJdfDApKzEyPj4yXXwwO2E9UlIoY1ttPj4yXXwwLGNbbSs0Pj4yXXwwLGF8MCwoKGF8MCk8MCk8PDMxPj4zMXwwKXwwO2E9SWcobCxkLGIsYSxDKXwwO2NbY1tlPj4yXT4+Ml09YTtjWyhjW2U+PjJdfDApKzE2Pj4yXT0wO2NbKGNbZT4+Ml18MCkrMTI+PjJdPTA7YT1jWyhjW2U+PjJdfDApKzg+PjJdfDA7Yj0oY1tlPj4yXXwwKSsyNHwwO2Q9YjthPVJSKGNbZD4+Ml18MCxjW2QrND4+Ml18MCxhfDAsKChhfDApPDApPDwzMT4+MzF8MCl8MDtjW2I+PjJdPWE7Y1tiKzQ+PjJdPUN9Y1tqPj4yXT0oY1tqPj4yXXwwKS0oY1toPj4yXXwwKX1pZigoZXwwKT09OSl7aT1rO3JldHVybn19ZnVuY3Rpb24gcUwoYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wO2c9aTtpPWkrMTZ8MDtkPWcrOHwwO2U9Zys0fDA7Zj1nO2NbZD4+Ml09YTtjW2U+PjJdPWI7aWYoKChjW2NbZD4+Ml0+PjJdfDApPT0wPyhjWyhjW2Q+PjJdfDApKzQ+PjJdfDApIT0wOjApPyhjWyhjW2Q+PjJdfDApKzE2Pj4yXXwwKT4oY1soY1tkPj4yXXwwKSsxMj4+Ml18MCk6MCl7aj1jWyhjW2Q+PjJdfDApKzMyPj4yXXwwO2g9KGNbKGNbZD4+Ml18MCkrND4+Ml18MCkrKGNbKGNbZD4+Ml18MCkrMTI+PjJdfDApfDA7YT0oY1soY1tkPj4yXXwwKSsxNj4+Ml18MCktKGNbKGNbZD4+Ml18MCkrMTI+PjJdfDApfDA7az0oY1tkPj4yXXwwKSsyNHwwO2I9Y1soY1tkPj4yXXwwKSsxMj4+Ml18MDtiPVJSKGNbaz4+Ml18MCxjW2srND4+Ml18MCxifDAsKChifDApPDApPDwzMT4+MzF8MCl8MDtiPUlnKGosaCxhLGIsQyl8MDtjW2NbZD4+Ml0+PjJdPWJ9aj0oY1tkPj4yXXwwKSsyNHwwO2s9Y1soY1tkPj4yXXwwKSsxNj4+Ml18MDtrPVJSKGNbaj4+Ml18MCxjW2orND4+Ml18MCxrfDAsKChrfDApPDApPDwzMT4+MzF8MCl8MDtlPWNbZT4+Ml18MDtjW2U+PjJdPWs7Y1tlKzQ+PjJdPUM7S2QoY1soY1tkPj4yXXwwKSs0Pj4yXXwwKTtjW2Y+PjJdPWNbY1tkPj4yXT4+Ml07ZD1jW2Q+PjJdfDA7ZT1kKzQwfDA7ZG97Y1tkPj4yXT0wO2Q9ZCs0fDB9d2hpbGUoKGR8MCk8KGV8MCkpO2k9ZztyZXR1cm4gY1tmPj4yXXwwfWZ1bmN0aW9uIHJMKGQpe2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTA7aD1pO2k9aSsxNnwwO2U9aCs4fDA7Zj1oKzR8MDtnPWg7Y1tmPj4yXT1kO2RvIGlmKCEoY1soY1tmPj4yXXwwKSsxMj4+Ml18MCkpe2Q9TUYoY1soY1soY1tmPj4yXXwwKSs4Pj4yXXwwKSsyOD4+Ml18MCwwLDAsZyl8MDtjWyhjW2Y+PjJdfDApKzEyPj4yXT1kO2lmKGNbZz4+Ml18MCl7YlsoY1soY1tmPj4yXXwwKSsxMj4+Ml18MCkrOD4+MV09YlsoY1soY1soY1tmPj4yXXwwKSs4Pj4yXXwwKSsyOD4+Ml18MCkrNj4+MV18MDthWyhjWyhjW2Y+PjJdfDApKzEyPj4yXXwwKSsxMT4+MF09MDticmVha31jW2U+PjJdPTc7ZD1jW2U+PjJdfDA7aT1oO3JldHVybiBkfDB9d2hpbGUoMCk7Y1tlPj4yXT0wO2Q9Y1tlPj4yXXwwO2k9aDtyZXR1cm4gZHwwfWZ1bmN0aW9uIHNMKGEpe2E9YXwwO3ZhciBiPTAsZT0wLGY9MDtmPWk7aT1pKzE2fDA7Yj1mKzR8MDtlPWY7Y1tlPj4yXT1hO2RvIGlmKChkWyhjW2U+PjJdfDApKzYwPj4wXXwwfDApIT0xKWlmKChkWyhjW2U+PjJdfDApKzYwPj4wXXwwfDApPT0yKXtjW2I+PjJdPTEzOTticmVha31lbHNle2NbYj4+Ml09MTQwO2JyZWFrfWVsc2UgY1tiPj4yXT0xMzg7d2hpbGUoMCk7aT1mO3JldHVybiBjW2I+PjJdfDB9ZnVuY3Rpb24gdEwoYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wO209aTtpPWkrMzJ8MDtlPW0rMjR8MDtoPW0rMjB8MDtqPW0rMTZ8MDtrPW0rMTJ8MDtsPW0rOHwwO2Y9bSs0fDA7Zz1tO2NbZT4+Ml09YTtjW2g+PjJdPWI7Y1tqPj4yXT1kO2Nbaz4+Ml09MDtjW2w+PjJdPWs7Y1tmPj4yXT0wO3doaWxlKDEpe2NbZz4+Ml09U2JbY1soY1tlPj4yXXwwKSszMj4+Ml0mMjU1XShjW2U+PjJdfDAsZiwoY1toPj4yXXwwKSs4fDAsY1tjW2g+PjJdPj4yXXwwLChjW2o+PjJdfDApKzh8MCxjW2Nbaj4+Ml0+PjJdfDApfDA7aWYoKGNbZz4+Ml18MCk8PTApe2NbY1tsPj4yXT4+Ml09Y1toPj4yXTtjW2w+PjJdPShjW2g+PjJdfDApKzQ7Y1toPj4yXT1jWyhjW2g+PjJdfDApKzQ+PjJdO2lmKCEoY1toPj4yXXwwKSl7ZT00O2JyZWFrfWVsc2UgY29udGludWV9ZWxzZXtjW2NbbD4+Ml0+PjJdPWNbaj4+Ml07Y1tsPj4yXT0oY1tqPj4yXXwwKSs0O2Nbaj4+Ml09Y1soY1tqPj4yXXwwKSs0Pj4yXTtjW2Y+PjJdPTA7aWYoIShjW2o+PjJdfDApKXtlPTY7YnJlYWt9ZWxzZSBjb250aW51ZX19aWYoKGV8MCk9PTQpe2NbY1tsPj4yXT4+Ml09Y1tqPj4yXTtsPWNbaz4+Ml18MDtpPW07cmV0dXJuIGx8MH1lbHNlIGlmKChlfDApPT02KXtjW2NbbD4+Ml0+PjJdPWNbaD4+Ml07bD1jW2s+PjJdfDA7aT1tO3JldHVybiBsfDB9cmV0dXJuIDB9ZnVuY3Rpb24gdUwoYixmLGcsaCxqLGspe2I9YnwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO2s9a3wwO3ZhciBsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MDt4PWk7aT1pKzY0fDA7cT14KzUyfDA7cj14KzQ4fDA7cz14KzQ0fDA7dD14KzQwfDA7dT14KzM2fDA7dj14KzMyfDA7ej14KzI4fDA7eT14KzI0fDA7bT14KzIwfDA7bj14KzE2fDA7bz14KzEyfDA7cD14Kzh8MDt3PXgrNHwwO2w9eDtjW3E+PjJdPWI7Y1tyPj4yXT1mO2Nbcz4+Ml09ZztjW3Q+PjJdPWg7Y1t1Pj4yXT1qO2Nbdj4+Ml09aztjW3o+PjJdPWNbcz4+Ml07Y1t5Pj4yXT1jW3U+PjJdO2NbbT4+Ml09ZFsoY1t6Pj4yXXwwKSsxPj4wXTtjW24+PjJdPWRbKGNbeT4+Ml18MCkrMT4+MF07Y1tvPj4yXT0oY1t6Pj4yXXwwKSsoZFtjW3o+PjJdPj4wXXwwKTtjW3A+PjJdPShjW3k+PjJdfDApKyhkW2NbeT4+Ml0+PjBdfDApO2g9Y1ttPj4yXXwwO2s9Y1tuPj4yXXwwO2E6ZG8gaWYoISgoY1ttPj4yXXwwKT43JihjW24+PjJdfDApPjcpKXtpZigoaHwwKT09KGt8MCkpe2lmKChkW2Nbbz4+Ml0+PjBdXmRbY1twPj4yXT4+MF0pJjEyOCl7Y1t3Pj4yXT0oZFtjW28+PjJdPj4wXSYxMjh8MCkhPTA/LTE6MTticmVha31jW3c+PjJdPTA7Y1tsPj4yXT0wO3doaWxlKDEpe2lmKChjW2w+PjJdfDApPj0oZFs0MTc4OSsoY1ttPj4yXXwwKT4+MF18MCkpYnJlYWsgYTt6PShkWyhjW28+PjJdfDApKyhjW2w+PjJdfDApPj4wXXwwKS0oZFsoY1twPj4yXXwwKSsoY1tsPj4yXXwwKT4+MF18MCl8MDtjW3c+PjJdPXo7aWYoeilicmVhayBhO2NbbD4+Ml09KGNbbD4+Ml18MCkrMX19ZG8gaWYoKGNbbj4+Ml18MCk8PTcpaWYoKGNbbT4+Ml18MCk+Nyl7Y1t3Pj4yXT0tMTticmVha31lbHNle2Nbdz4+Ml09KGNbbT4+Ml18MCktKGNbbj4+Ml18MCk7YnJlYWt9ZWxzZSBjW3c+PjJdPTE7d2hpbGUoMCk7aWYoKGNbdz4+Ml18MCk+MCl7aWYoIShkW2Nbbz4+Ml0+PjBdJjEyOCkpYnJlYWs7Y1t3Pj4yXT0tMTticmVha31lbHNle2lmKCEoZFtjW3A+PjJdPj4wXSYxMjgpKWJyZWFrO2Nbdz4+Ml09MTticmVha319ZWxzZSBjW3c+PjJdPWgtazt3aGlsZSgwKTtoPWNbKGNbKGNbcT4+Ml18MCkrOD4+Ml18MCkrMjg+PjJdfDA7aWYoIShjW3c+PjJdfDApKXtpZigoZVtoKzY+PjFdfDApPD0xKXt6PWNbdz4+Ml18MDtpPXg7cmV0dXJuIHp8MH1jW3c+PjJdPXhMKGNbcT4+Ml18MCxjW3I+PjJdfDAsY1tzPj4yXXwwLGNbdD4+Ml18MCxjW3U+PjJdfDAsY1t2Pj4yXXwwKXwwO3o9Y1t3Pj4yXXwwO2k9eDtyZXR1cm4genwwfWVsc2V7aWYoIShhW2NbaCsxNj4+Ml0+PjBdfDApKXt6PWNbdz4+Ml18MDtpPXg7cmV0dXJuIHp8MH1jW3c+PjJdPV8oY1t3Pj4yXXwwLC0xKXwwO3o9Y1t3Pj4yXXwwO2k9eDtyZXR1cm4genwwfXJldHVybiAwfWZ1bmN0aW9uIHZMKGIsZixnLGgsaixrKXtiPWJ8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDtrPWt8MDt2YXIgbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MDt4PWk7aT1pKzY0fDA7cT14KzQ4fDA7cj14KzQ0fDA7cz14KzQwfDA7dD14KzM2fDA7dT14KzMyfDA7dj14KzI4fDA7eT14KzI0fDA7bj14KzIwfDA7bz14KzE2fDA7cD14KzEyfDA7bD14Kzh8MDttPXgrNHwwO3c9eDtjW3E+PjJdPWI7Y1tyPj4yXT1mO2Nbcz4+Ml09ZztjW3Q+PjJdPWg7Y1t1Pj4yXT1qO2Nbdj4+Ml09aztjW3k+PjJdPWNbcz4+Ml07Y1tuPj4yXT1jW3U+PjJdO2Nbbz4+Ml09KGNbeT4+Ml18MCkrKGRbY1t5Pj4yXT4+MF18MCk7Y1twPj4yXT0oY1tuPj4yXXwwKSsoZFtjW24+PjJdPj4wXXwwKTtoPShjW3k+PjJdfDApKzF8MDtpZigoZFsoY1t5Pj4yXXwwKSsxPj4wXXwwKTwxMjgpY1tsPj4yXT1kW2g+PjBdO2Vsc2UgYkcoaCxsKXwwO2NbbD4+Ml09KChjW2w+PjJdfDApLTEzfDApLzJ8MDtoPShjW24+PjJdfDApKzF8MDtpZigoZFsoY1tuPj4yXXwwKSsxPj4wXXwwKTwxMjgpY1ttPj4yXT1kW2g+PjBdO2Vsc2UgYkcoaCxtKXwwO2NbbT4+Ml09KChjW20+PjJdfDApLTEzfDApLzJ8MDtjW3c+PjJdPWVSKGNbbz4+Ml18MCxjW3A+PjJdfDAsKGNbbD4+Ml18MCk8KGNbbT4+Ml18MCk/Y1tsPj4yXXwwOmNbbT4+Ml18MCl8MDtpZighKGNbdz4+Ml18MCkpY1t3Pj4yXT0oY1tsPj4yXXwwKS0oY1ttPj4yXXwwKTtoPWNbKGNbKGNbcT4+Ml18MCkrOD4+Ml18MCkrMjg+PjJdfDA7aWYoIShjW3c+PjJdfDApKXtpZigoZVtoKzY+PjFdfDApPD0xKXt5PWNbdz4+Ml18MDtpPXg7cmV0dXJuIHl8MH1jW3c+PjJdPXhMKGNbcT4+Ml18MCxjW3I+PjJdfDAsY1tzPj4yXXwwLGNbdD4+Ml18MCxjW3U+PjJdfDAsY1t2Pj4yXXwwKXwwO3k9Y1t3Pj4yXXwwO2k9eDtyZXR1cm4geXwwfWVsc2V7aWYoIShhW2NbaCsxNj4+Ml0+PjBdfDApKXt5PWNbdz4+Ml18MDtpPXg7cmV0dXJuIHl8MH1jW3c+PjJdPV8oY1t3Pj4yXXwwLC0xKXwwO3k9Y1t3Pj4yXXwwO2k9eDtyZXR1cm4geXwwfXJldHVybiAwfWZ1bmN0aW9uIHdMKGEsYixkLGUsZixnKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDt2YXIgaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MDtwPWk7aT1pKzMyfDA7aD1wKzI0fDA7aj1wKzIwfDA7az1wKzE2fDA7bD1wKzEyfDA7bT1wKzh8MDtuPXArNHwwO289cDtjW2g+PjJdPWE7Y1tqPj4yXT1iO2Nbaz4+Ml09ZDtjW2w+PjJdPWU7Y1ttPj4yXT1mO2Nbbj4+Ml09ZztjW28+PjJdPWNbKGNbaD4+Ml18MCkrMTI+PjJdO2lmKGNbY1tqPj4yXT4+Ml18MCl7YT1jW2w+PjJdfDA7Yj1jW2s+PjJdfDA7bz1jW28+PjJdfDA7bz0kRihhLGIsbyl8MDtpPXA7cmV0dXJuIG98MH1ORihjWyhjWyhjW2g+PjJdfDApKzg+PjJdfDApKzI4Pj4yXXwwLGNbbj4+Ml18MCxjW20+PjJdfDAsY1tvPj4yXXwwKTtjW2Nbaj4+Ml0+PjJdPTE7YT1jW2w+PjJdfDA7Yj1jW2s+PjJdfDA7bz1jW28+PjJdfDA7bz0kRihhLGIsbyl8MDtpPXA7cmV0dXJuIG98MH1mdW5jdGlvbiB4TChhLGIsZCxlLGYsZyl7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7dmFyIGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTA7cD1pO2k9aSszMnwwO2g9cCsyNHwwO2o9cCsyMHwwO2s9cCsxNnwwO2w9cCsxMnwwO209cCs4fDA7bj1wKzR8MDtvPXA7Y1toPj4yXT1hO2Nbaj4+Ml09YjtjW2s+PjJdPWQ7Y1tsPj4yXT1lO2NbbT4+Ml09ZjtjW24+PjJdPWc7Y1tvPj4yXT1jWyhjW2g+PjJdfDApKzEyPj4yXTtpZihjW2Nbaj4+Ml0+PjJdfDApe2E9Y1tsPj4yXXwwO2I9Y1trPj4yXXwwO289Y1tvPj4yXXwwO289YUcoYSxiLG8sMSl8MDtpPXA7cmV0dXJuIG98MH1ORihjWyhjWyhjW2g+PjJdfDApKzg+PjJdfDApKzI4Pj4yXXwwLGNbbj4+Ml18MCxjW20+PjJdfDAsY1tvPj4yXXwwKTtjW2Nbaj4+Ml0+PjJdPTE7YT1jW2w+PjJdfDA7Yj1jW2s+PjJdfDA7bz1jW28+PjJdfDA7bz1hRyhhLGIsbywxKXwwO2k9cDtyZXR1cm4gb3wwfWZ1bmN0aW9uIHlMKGEsYixkLGUsZil7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTA7bz1pO2k9aSszMnwwO2c9bysyNHwwO2g9bysyMHwwO209bysxNnwwO2o9bysxMnwwO2s9bys4fDA7bj1vKzR8MDtsPW87Y1tnPj4yXT1hO2NbaD4+Ml09YjtjW20+PjJdPWQ7Y1tqPj4yXT1lO2Nbaz4+Ml09ZjtiPWNbKGNbZz4+Ml18MCkrND4+Ml18MDtjW2w+PjJdPWtnKGIsKChifDApPDApPDwzMT4+MzEpfDA7aWYoIShjW2w+PjJdfDApKXtjW24+PjJdPTc7bj1jW24+PjJdfDA7aT1vO3JldHVybiBufDB9Y1tuPj4yXT1VcihjW2c+PjJdfDAsY1toPj4yXXwwLGNbbD4+Ml18MCxjW2o+PjJdfDAsY1trPj4yXXwwKXwwO2c9Y1tsPj4yXXwwO2lmKGNbbj4+Ml18MCl7S2QoZyk7bj1jW24+PjJdfDA7aT1vO3JldHVybiBufDB9ZWxzZXtjW2NbbT4+Ml0+PjJdPWc7bj1jW24+PjJdfDA7aT1vO3JldHVybiBufDB9cmV0dXJuIDB9ZnVuY3Rpb24gekwoYSxiKXthPWF8MDtiPWJ8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTA7cT1pO2k9aSs0OHwwO2U9cSszNnwwO2Y9cSszMnwwO289cSsyOHwwO2o9cSsyNHwwO249cSsyMHwwO2g9cSsxNnwwO2w9cSsxMnwwO209cSs4fDA7Zz1xKzR8MDtrPXE7Y1tlPj4yXT1hO2NbZj4+Ml09YjtjW2o+PjJdPWNbKGNbKGNbZT4+Ml18MCkrOD4+Ml18MCkrND4+Ml07Y1tuPj4yXT1jWyhjW2U+PjJdfDApKzQ+PjJdO2Nbbz4+Ml09QUwoKGNbKGNbZT4+Ml18MCkrMTI+PjJdfDApKygoY1tqPj4yXXwwKSo1NnwwKXwwKXwwO2lmKCEoY1tvPj4yXXwwKSl7Y1tnPj4yXT0wO2NbbD4+Ml09KGNbKGNbZT4+Ml18MCkrMTI+PjJdfDApKygoY1tqPj4yXSY2NTUzNCkqNTZ8MCk7Y1ttPj4yXT0oY1soY1tlPj4yXXwwKSsxMj4+Ml18MCkrKChjW2o+PjJdfDEpKjU2fDApO2NbaD4+Ml09KChjW2NbZT4+Ml0+PjJdfDApKyhjW2o+PjJdfDApfDApLzJ8MDt3aGlsZSgxKXtpZigoY1toPj4yXXwwKTw9MClicmVhaztkbyBpZihjWyhjW2w+PjJdfDApKzI0Pj4yXXwwKWlmKCEoY1soY1ttPj4yXXwwKSsyND4+Ml18MCkpe2Nbaz4+Ml09LTE7YnJlYWt9ZWxzZXtjW2s+PjJdPVNiW2NbKGNbbj4+Ml18MCkrMzI+PjJdJjI1NV0oY1tuPj4yXXwwLGcsY1soY1tsPj4yXXwwKSszMj4+Ml18MCxjWyhjW2w+PjJdfDApKzIwPj4yXXwwLGNbKGNbbT4+Ml18MCkrMzI+PjJdfDAsY1soY1ttPj4yXXwwKSsyMD4+Ml18MCl8MDticmVha31lbHNlIGNbaz4+Ml09MTt3aGlsZSgwKTtkbyBpZigoY1trPj4yXXwwKTwwKXA9MTI7ZWxzZXtpZigoY1trPj4yXXwwKT09MD8oY1tsPj4yXXwwKT4+PjA8KGNbbT4+Ml18MCk+Pj4wOjApe3A9MTI7YnJlYWt9aWYoY1soY1tsPj4yXXwwKSsyND4+Ml18MCljW2c+PjJdPTA7Y1soY1soY1tlPj4yXXwwKSs4Pj4yXXwwKSsoY1toPj4yXTw8Mik+PjJdPSgoY1ttPj4yXXwwKS0oY1soY1tlPj4yXXwwKSsxMj4+Ml18MCl8MCkvNTZ8MDtjW2w+PjJdPShjWyhjW2U+PjJdfDApKzEyPj4yXXwwKSsoKGNbKGNbKGNbZT4+Ml18MCkrOD4+Ml18MCkrKChjW2g+PjJdXjEpPDwyKT4+Ml18MCkqNTZ8MCl9d2hpbGUoMCk7aWYoKHB8MCk9PTEyKXtwPTA7Y1soY1soY1tlPj4yXXwwKSs4Pj4yXXwwKSsoY1toPj4yXTw8Mik+PjJdPSgoY1tsPj4yXXwwKS0oY1soY1tlPj4yXXwwKSsxMj4+Ml18MCl8MCkvNTZ8MDtjW20+PjJdPShjWyhjW2U+PjJdfDApKzEyPj4yXXwwKSsoKGNbKGNbKGNbZT4+Ml18MCkrOD4+Ml18MCkrKChjW2g+PjJdXjEpPDwyKT4+Ml18MCkqNTZ8MCk7Y1tnPj4yXT0wfWNbaD4+Ml09KGNbaD4+Ml18MCkvMnwwfWNbY1tmPj4yXT4+Ml09KGNbKGNbKGNbZT4+Ml18MCkrMTI+PjJdfDApKygoY1soY1soY1tlPj4yXXwwKSs4Pj4yXXwwKSs0Pj4yXXwwKSo1NnwwKSsyND4+Ml18MCk9PTAmMX1pZighKGNbbz4+Ml18MCkpe3A9ZFsoY1soY1tuPj4yXXwwKSsxMj4+Ml18MCkrMTE+PjBdfDA7aT1xO3JldHVybiBwfDB9ZWxzZXtwPWNbbz4+Ml18MDtpPXE7cmV0dXJuIHB8MH1yZXR1cm4gMH1mdW5jdGlvbiBBTChhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wO2o9aTtpPWkrMzJ8MDtiPWorMjR8MDtkPWorMjB8MDtoPWorMTZ8MDtmPWo7Zz1qKzEyfDA7ZT1qKzh8MDtjW2Q+PjJdPWE7Y1toPj4yXT0wO2s9ZjtjW2s+PjJdPTA7Y1trKzQ+PjJdPTA7az1jW2Q+PjJdfDA7bT1jW2srND4+Ml18MDthPShjW2Q+PjJdfDApKzh8MDtsPWNbYSs0Pj4yXXwwO2lmKChtfDApPihsfDApfCgobXwwKT09KGx8MCk/KGNbaz4+Ml18MCk+Pj4wPj0oY1thPj4yXXwwKT4+PjA6MCkpe2NbZz4+Ml09Y1soY1tkPj4yXXwwKSs0OD4+Ml07Y1tlPj4yXT0xO2lmKCgoY1tnPj4yXXwwKSE9MD8oY1toPj4yXT1CTChjW2c+PjJdfDApfDAsKGNbaD4+Ml18MCk9PTApOjApPyhjWyhjW2c+PjJdfDApKzIwPj4yXXwwKT09MDowKXttPShjW2c+PjJdfDApKzh8MDtjW2g+PjJdPUNMKGNbY1tnPj4yXT4+Ml18MCxjW2Q+PjJdfDAsKGNbZz4+Ml18MCkrMzJ8MCxjW20+PjJdfDAsY1ttKzQ+PjJdfDApfDA7Y1tlPj4yXT0wfWlmKGNbZT4+Ml18MCl7WEsoY1tkPj4yXXwwKTtjW2I+PjJdPWNbaD4+Ml07bT1jW2I+PjJdfDA7aT1qO3JldHVybiBtfDB9fWlmKCEoY1toPj4yXXwwKSljW2g+PjJdPURMKGNbZD4+Ml18MCxmKXwwO2lmKCEoY1toPj4yXXwwKSl7Y1soY1tkPj4yXXwwKSsyMD4+Ml09Y1tmPj4yXTtjW2g+PjJdPUVMKGNbZD4+Ml18MCxjW2Y+PjJdfDAsKGNbZD4+Ml18MCkrMzJ8MCl8MH1jW2I+PjJdPWNbaD4+Ml07bT1jW2I+PjJdfDA7aT1qO3JldHVybiBtfDB9ZnVuY3Rpb24gQkwoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MDtlPWk7aT1pKzE2fDA7Yj1lKzR8MDtkPWU7Y1tiPj4yXT1hO2NbZD4+Ml09MDtjW2Q+PjJdPUhMKGNbYj4+Ml18MCl8MDtmPShjW2I+PjJdfDApKzMyfDA7YT0oY1tiPj4yXXwwKSszMisxNnwwO2NbZj4+Ml09Y1thPj4yXTtjW2YrND4+Ml09Y1thKzQ+PjJdO2NbZis4Pj4yXT1jW2ErOD4+Ml07Y1tmKzEyPj4yXT1jW2ErMTI+PjJdO2Y9KGNbYj4+Ml18MCkrMzIrOHwwO2E9KGNbYj4+Ml18MCkrOHwwO2lmKCEoKGNbZj4+Ml18MCk9PShjW2E+PjJdfDApPyhjW2YrND4+Ml18MCk9PShjW2ErND4+Ml18MCk6MCkpe2Y9Y1tkPj4yXXwwO2k9ZTtyZXR1cm4gZnwwfWNbKGNbYj4+Ml18MCkrMjA+PjJdPTE7Zj1jW2Q+PjJdfDA7aT1lO3JldHVybiBmfDB9ZnVuY3Rpb24gQ0woYSxiLGQsZSxmKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wO3E9aTtpPWkrNDh8MDtnPXErMzZ8MDtoPXErMzJ8MDtqPXErMjh8MDtrPXErMjR8MDtsPXE7cD1xKzIwfDA7bz1xKzE2fDA7bT1xKzEyfDA7bj1xKzh8MDtjW2g+PjJdPWE7Y1tqPj4yXT1iO2Nbaz4+Ml09ZDthPWw7Y1thPj4yXT1lO2NbYSs0Pj4yXT1mO2NbcD4+Ml09MDtpZihCaSgyMDEpfDApe2NbZz4+Ml09MjY2O3A9Y1tnPj4yXXwwO2k9cTtyZXR1cm4gcHwwfWlmKGNbKGNbaj4+Ml18MCkrNDQ+PjJdfDApe01zKGNbKGNbaj4+Ml18MCkrMjQ+PjJdfDAsMCwwLGNbKGNbaj4+Ml18MCkrNDQ+PjJdfDApfDA7Y1soY1tqPj4yXXwwKSs0ND4+Ml09MH1hPWw7Yj1jW2ErND4+Ml18MDtkPWNbaj4+Ml18MDtjW2Q+PjJdPWNbYT4+Ml07Y1tkKzQ+PjJdPWI7ZD0oY1trPj4yXXwwKSs4fDA7Yj1jW2QrND4+Ml18MDthPShjW2o+PjJdfDApKzh8MDtjW2E+PjJdPWNbZD4+Ml07Y1thKzQ+PjJdPWI7Y1soY1tqPj4yXXwwKSsyND4+Ml09Y1tjW2s+PjJdPj4yXTtjW3A+PjJdPUZMKGNbaD4+Ml18MCxjW2s+PjJdfDAsKGNbaj4+Ml18MCkrNDR8MCl8MDtpZigoY1twPj4yXXwwKT09MD8oY1soY1tqPj4yXXwwKSs0ND4+Ml18MCk9PTA6MCl7Y1tvPj4yXT1jWyhjWyhjW2g+PjJdfDApKzg+PjJdfDApKzEyPj4yXTtiPWNbaj4+Ml18MDthPWNbbz4+Ml18MDthPSRSKGNbYj4+Ml18MCxjW2IrND4+Ml18MCxhfDAsKChhfDApPDApPDwzMT4+MzF8MCl8MDtjW20+PjJdPWE7aWYoIShjWyhjW2o+PjJdfDApKzM2Pj4yXXwwKSl7YT1jW28+PjJdfDA7YT0kZihhLCgoYXwwKTwwKTw8MzE+PjMxKXwwO2NbKGNbaj4+Ml18MCkrMzY+PjJdPWE7aWYoIShjWyhjW2o+PjJdfDApKzM2Pj4yXXwwKSljW3A+PjJdPTc7Y1soY1tqPj4yXXwwKSs0MD4+Ml09Y1tvPj4yXX1pZigoY1twPj4yXXwwKT09MCYoY1ttPj4yXXwwKSE9MCl7Y1tuPj4yXT0oY1tvPj4yXXwwKS0oY1ttPj4yXXwwKTtkPWNbaj4+Ml18MDthPWNbbj4+Ml18MDthPVJSKGNbZD4+Ml18MCxjW2QrND4+Ml18MCxhfDAsKChhfDApPDApPDwzMT4+MzF8MCl8MDtkPUM7bz0oY1tqPj4yXXwwKSs4fDA7Yj1jW28rND4+Ml18MDtpZigoZHwwKT4oYnwwKXwoKGR8MCk9PShifDApP2E+Pj4wPihjW28+PjJdfDApPj4+MDowKSl7YT0oY1tqPj4yXXwwKSs4fDA7bz1jW2o+PjJdfDA7bz1RUihjW2E+PjJdfDAsY1thKzQ+PjJdfDAsY1tvPj4yXXwwLGNbbys0Pj4yXXwwKXwwO2Nbbj4+Ml09b31vPWNbaj4+Ml18MDtjW3A+PjJdPWVzKGNbKGNbaj4+Ml18MCkrMjQ+PjJdfDAsKGNbKGNbaj4+Ml18MCkrMzY+PjJdfDApKyhjW20+PjJdfDApfDAsY1tuPj4yXXwwLGNbbz4+Ml18MCxjW28rND4+Ml18MCl8MH19Y1tnPj4yXT1jW3A+PjJdO3A9Y1tnPj4yXXwwO2k9cTtyZXR1cm4gcHwwfWZ1bmN0aW9uIERMKGIsZSl7Yj1ifDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTA7cD1pO2k9aSs0OHwwO2Y9cCsyNHwwO2c9cCsyMHwwO2g9cCsxNnwwO209cCsxMnwwO2s9cCszMnwwO2o9cCs4fDA7bD1wKzR8MDtuPXA7Y1tnPj4yXT1iO2NbaD4+Ml09ZTtlPWNbZz4+Ml18MDtiPWNbZT4+Ml18MDtlPWNbZSs0Pj4yXXwwO2RvIGlmKGNbKGNbZz4+Ml18MCkrNDQ+PjJdfDApe249KGN1KChjWyhjW2c+PjJdfDApKzQ0Pj4yXXwwKStifDAsY1toPj4yXXwwKXwwKSYyNTU7bz1jW2c+PjJdfDA7bT1vO249UlIoY1ttPj4yXXwwLGNbbSs0Pj4yXXwwLG58MCwwKXwwO2Nbbz4+Ml09bjtjW28rND4+Ml09Q31lbHNle3E9Y1soY1tnPj4yXXwwKSs0MD4+Ml18MDtlPSRSKGJ8MCxlfDAscXwwLCgocXwwKTwwKTw8MzE+PjMxfDApfDA7Y1ttPj4yXT1lO2lmKChjW20+PjJdfDApIT0wPygoY1soY1tnPj4yXXwwKSs0MD4+Ml18MCktKGNbbT4+Ml18MCl8MCk+PTk6MCl7bz0oY3UoKGNbKGNbZz4+Ml18MCkrMzY+PjJdfDApKyhjW20+PjJdfDApfDAsY1toPj4yXXwwKXwwKSYyNTU7cT1jW2c+PjJdfDA7bj1xO289UlIoY1tuPj4yXXwwLGNbbis0Pj4yXXwwLG98MCwwKXwwO2NbcT4+Ml09bztjW3ErND4+Ml09QzticmVha31jW2w+PjJdPTA7d2hpbGUoMSl7Y1tuPj4yXT1FTChjW2c+PjJdfDAsMSxqKXwwO2lmKGNbbj4+Ml18MClicmVhazttPWFbY1tqPj4yXT4+MF18MDtxPWNbbD4+Ml18MDtjW2w+PjJdPXErMTthW2srKHEmMTUpPj4wXT1tO2lmKCEoKGRbY1tqPj4yXT4+MF18MCkmMTI4KSl7bz0xMDticmVha319aWYoKG98MCk9PTEwKXtjdShrLGNbaD4+Ml18MCl8MDticmVha31jW2Y+PjJdPWNbbj4+Ml07cT1jW2Y+PjJdfDA7aT1wO3JldHVybiBxfDB9d2hpbGUoMCk7Y1tmPj4yXT0wO3E9Y1tmPj4yXXwwO2k9cDtyZXR1cm4gcXwwfWZ1bmN0aW9uIEVMKGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTA7dT1pO2k9aSs2NHwwO2c9dSs1MnwwO2g9dSs0OHwwO2o9dSs0NHwwO2s9dSs0MHwwO249dSszNnwwO289dSszMnwwO2U9dSsyOHwwO2Y9dSsyNHwwO3I9dSsyMHwwO2w9dSsxNnwwO3E9dSsxMnwwO3M9dSs4fDA7cD11KzR8MDttPXU7Y1toPj4yXT1hO2Nbaj4+Ml09YjtjW2s+PjJdPWQ7YT1jW2g+PjJdfDA7Yj1jW2E+PjJdfDA7YT1jW2ErND4+Ml18MDtpZihjWyhjW2g+PjJdfDApKzQ0Pj4yXXwwKXtjW2Nbaz4+Ml0+PjJdPShjWyhjW2g+PjJdfDApKzQ0Pj4yXXwwKStiO3M9Y1tqPj4yXXwwO3Q9Y1toPj4yXXwwO3I9dDtzPVJSKGNbcj4+Ml18MCxjW3IrND4+Ml18MCxzfDAsKChzfDApPDApPDwzMT4+MzF8MCl8MDtjW3Q+PjJdPXM7Y1t0KzQ+PjJdPUM7Y1tnPj4yXT0wO3Q9Y1tnPj4yXXwwO2k9dTtyZXR1cm4gdHwwfWQ9Y1soY1toPj4yXXwwKSs0MD4+Ml18MDtkPSRSKGJ8MCxhfDAsZHwwLCgoZHwwKTwwKTw8MzE+PjMxfDApfDA7Y1tuPj4yXT1kO2lmKCEoY1tuPj4yXXwwKSl7dz0oY1toPj4yXXwwKSs4fDA7YT1jW2g+PjJdfDA7YT1RUihjW3c+PjJdfDAsY1t3KzQ+PjJdfDAsY1thPj4yXXwwLGNbYSs0Pj4yXXwwKXwwO3c9QztkPWNbKGNbaD4+Ml18MCkrNDA+PjJdfDA7dj0oKGR8MCk8MCk8PDMxPj4zMTtiPWNbaD4+Ml18MDtpZigod3wwKT4odnwwKXwod3wwKT09KHZ8MCkmYT4+PjA+ZD4+PjApY1tlPj4yXT1jW2IrNDA+PjJdO2Vsc2V7dj1iKzh8MDt3PWNbaD4+Ml18MDt3PVFSKGNbdj4+Ml18MCxjW3YrND4+Ml18MCxjW3c+PjJdfDAsY1t3KzQ+PjJdfDApfDA7Y1tlPj4yXT13fXc9Y1toPj4yXXwwO2NbZj4+Ml09ZXMoY1soY1toPj4yXXwwKSsyND4+Ml18MCxjWyhjW2g+PjJdfDApKzM2Pj4yXXwwLGNbZT4+Ml18MCxjW3c+PjJdfDAsY1t3KzQ+PjJdfDApfDA7aWYoY1tmPj4yXXwwKXtjW2c+PjJdPWNbZj4+Ml07dz1jW2c+PjJdfDA7aT11O3JldHVybiB3fDB9fWNbbz4+Ml09KGNbKGNbaD4+Ml18MCkrNDA+PjJdfDApLShjW24+PjJdfDApO2RvIGlmKChjW2o+PjJdfDApPD0oY1tvPj4yXXwwKSl7Y1tjW2s+PjJdPj4yXT0oY1soY1toPj4yXXwwKSszNj4+Ml18MCkrKGNbbj4+Ml18MCk7dj1jW2o+PjJdfDA7dz1jW2g+PjJdfDA7dD13O3Y9UlIoY1t0Pj4yXXwwLGNbdCs0Pj4yXXwwLHZ8MCwoKHZ8MCk8MCk8PDMxPj4zMXwwKXwwO2Nbdz4+Ml09djtjW3crND4+Ml09Q31lbHNle2RvIGlmKChjWyhjW2g+PjJdfDApKzE2Pj4yXXwwKTwoY1tqPj4yXXwwKSl7aWYoMTI4PihjWyhjW2g+PjJdfDApKzE2Pj4yXTw8MXwwKSliPTEyODtlbHNlIGI9Y1soY1toPj4yXXwwKSsxNj4+Ml08PDE7Y1txPj4yXT1iO3doaWxlKDEpe2lmKChjW2o+PjJdfDApPD0oY1txPj4yXXwwKSlicmVhaztjW3E+PjJdPWNbcT4+Ml08PDF9dz1jW3E+PjJdfDA7Y1tsPj4yXT1jZyhjWyhjW2g+PjJdfDApKzI4Pj4yXXwwLHcsKCh3fDApPDApPDwzMT4+MzEpfDA7aWYoY1tsPj4yXXwwKXtjWyhjW2g+PjJdfDApKzE2Pj4yXT1jW3E+PjJdO2NbKGNbaD4+Ml18MCkrMjg+PjJdPWNbbD4+Ml07YnJlYWt9Y1tnPj4yXT03O3c9Y1tnPj4yXXwwO2k9dTtyZXR1cm4gd3wwfXdoaWxlKDApO1RSKGNbKGNbaD4+Ml18MCkrMjg+PjJdfDAsKGNbKGNbaD4+Ml18MCkrMzY+PjJdfDApKyhjW24+PjJdfDApfDAsY1tvPj4yXXwwKXwwO3Y9Y1tvPj4yXXwwO3c9Y1toPj4yXXwwO3E9dzt2PVJSKGNbcT4+Ml18MCxjW3ErND4+Ml18MCx2fDAsKCh2fDApPDApPDwzMT4+MzF8MCl8MDtjW3c+PjJdPXY7Y1t3KzQ+PjJdPUM7Y1tyPj4yXT0oY1tqPj4yXXwwKS0oY1tvPj4yXXwwKTt3aGlsZSgxKXtpZigoY1tyPj4yXXwwKTw9MCl7dD0yNzticmVha31jW3A+PjJdPWNbcj4+Ml07aWYoKGNbcj4+Ml18MCk+KGNbKGNbaD4+Ml18MCkrNDA+PjJdfDApKWNbcD4+Ml09Y1soY1toPj4yXXwwKSs0MD4+Ml07Y1tzPj4yXT1FTChjW2g+PjJdfDAsY1twPj4yXXwwLG0pfDA7aWYoY1tzPj4yXXwwKWJyZWFrO1RSKChjWyhjW2g+PjJdfDApKzI4Pj4yXXwwKSsoKGNbaj4+Ml18MCktKGNbcj4+Ml18MCkpfDAsY1ttPj4yXXwwLGNbcD4+Ml18MCl8MDtjW3I+PjJdPShjW3I+PjJdfDApLShjW3A+PjJdfDApfWlmKCh0fDApPT0yNyl7Y1tjW2s+PjJdPj4yXT1jWyhjW2g+PjJdfDApKzI4Pj4yXTticmVha31jW2c+PjJdPWNbcz4+Ml07dz1jW2c+PjJdfDA7aT11O3JldHVybiB3fDB9d2hpbGUoMCk7Y1tnPj4yXT0wO3c9Y1tnPj4yXXwwO2k9dTtyZXR1cm4gd3wwfWZ1bmN0aW9uIEZMKGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wO2o9aTtpPWkrMzJ8MDtsPWorMTZ8MDtlPWorMTJ8MDtmPWorOHwwO2g9ais0fDA7Zz1qO2NbbD4+Ml09YTtjW2U+PjJdPWI7Y1tmPj4yXT1kO2NbaD4+Ml09MDthPShjW2U+PjJdfDApKzh8MDtrPWNbYSs0Pj4yXXwwO2Q9Y1soY1soY1soY1tsPj4yXXwwKSs4Pj4yXXwwKSsyND4+Ml18MCkrMTQ0Pj4yXXwwO2I9KChkfDApPDApPDwzMT4+MzE7aWYoISgoa3wwKTwoYnwwKXwoKGt8MCk9PShifDApPyhjW2E+PjJdfDApPj4+MDw9ZD4+PjA6MCkpKXtsPWNbaD4+Ml18MDtpPWo7cmV0dXJuIGx8MH1jW2c+PjJdPWNbY1tlPj4yXT4+Ml07aWYoKGNbY1tjW2c+PjJdPj4yXT4+Ml18MCk8Myl7bD1jW2g+PjJdfDA7aT1qO3JldHVybiBsfDB9Y1toPj4yXT1HTChjW2c+PjJdfDAsMCwwLGNbKGNbZT4+Ml18MCkrOD4+Ml18MCxjW2Y+PjJdfDApfDA7bD1jW2g+PjJdfDA7aT1qO3JldHVybiBsfDB9ZnVuY3Rpb24gR0woYSxiLGQsZSxmKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MDtnPWk7aT1pKzMyfDA7aD1nKzh8MDtjW2crMTY+PjJdPWE7YT1nO2NbYT4+Ml09YjtjW2ErND4+Ml09ZDtjW2crMTI+PjJdPWU7Y1toPj4yXT1mO2NbY1toPj4yXT4+Ml09MDtpPWc7cmV0dXJuIDB9ZnVuY3Rpb24gSEwoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wO289aTtpPWkrOTZ8MDtiPW8rODh8MDtsPW8rODR8MDttPW8rODB8MDtmPW8rNDh8MDtqPW8rNzZ8MDtwPW8rNzJ8MDtoPW8rNjh8MDtuPW8rOHwwO2Q9bys2NHwwO2s9bys2MHwwO2c9bys1NnwwO2U9bztjW2I+PjJdPWE7Y1tsPj4yXT0wO3I9KGNbYj4+Ml18MCkrOHwwO3E9Y1tyKzQ+PjJdfDA7YT1mO2NbYT4+Ml09Y1tyPj4yXTtjW2ErND4+Ml09cTtjW2o+PjJdPShjW2I+PjJdfDApKzMyKzE2O2NbcD4+Ml09Y1tjW2I+PjJdPj4yXTtjW2g+PjJdPWNbKGNbYj4+Ml18MCkrND4+Ml07YT1mO25MKGNbY1tqPj4yXT4+Ml18MCxuLGNbKGNbKGNbcD4+Ml18MCkrOD4+Ml18MCkrMTI+PjJdfDAsY1thPj4yXXwwLGNbYSs0Pj4yXXwwKTt3aGlsZSgxKXtpZihjW2w+PjJdfDApYnJlYWs7Y1trPj4yXT0oY1soY1toPj4yXXwwKSsxMj4+Ml18MCkrKChjWyhjWyhjW2g+PjJdfDApKzg+PjJdfDApKzQ+PjJdfDApKjU2fDApO2NbZz4+Ml09Y1soY1trPj4yXXwwKSsyMD4+Ml07cj1uKzI0fDA7cT1jW24rMTY+PjJdfDA7cT1SUihjW3I+PjJdfDAsY1tyKzQ+PjJdfDAscXwwLCgocXwwKTwwKTw8MzE+PjMxfDApfDA7cj1lO2Nbcj4+Ml09cTtjW3IrND4+Ml09QztpZighKGNbKGNbaz4+Ml18MCkrMjQ+PjJdfDApKWJyZWFrO2E9ZTtwPWNbZz4+Ml18MDtwPVJSKGNbYT4+Ml18MCxjW2ErND4+Ml18MCxwfDAsKChwfDApPDApPDwzMT4+MzF8MCl8MDthPUM7cT1jW2c+PjJdfDA7cT1pRyhxLCgocXwwKTwwKTw8MzE+PjMxKXwwO3E9UlIocHwwLGF8MCxxfDAsKChxfDApPDApPDwzMT4+MzF8MCl8MDthPUM7cD1mO3I9Y1soY1tiPj4yXXwwKSsxNj4+Ml18MDtyPVJSKGNbcD4+Ml18MCxjW3ArND4+Ml18MCxyfDAsKChyfDApPDApPDwzMT4+MzF8MCl8MDtwPUM7aWYoKGF8MCk+KHB8MCl8KGF8MCk9PShwfDApJnE+Pj4wPnI+Pj4wKWJyZWFrO3I9Y1tnPj4yXXwwO29MKG4sciwoKHJ8MCk8MCk8PDMxPj4zMSk7cEwobixjWyhjW2s+PjJdfDApKzMyPj4yXXwwLGNbZz4+Ml18MCk7Y1tsPj4yXT16TChjWyhjW2I+PjJdfDApKzQ+PjJdfDAsZCl8MH1jW20+PjJdPXFMKG4sKGNbaj4+Ml18MCkrOHwwKXwwO2lmKGNbbD4+Ml18MCl7cj1jW2w+PjJdfDA7aT1vO3JldHVybiByfDB9Y1tsPj4yXT1jW20+PjJdO3I9Y1tsPj4yXXwwO2k9bztyZXR1cm4gcnwwfWZ1bmN0aW9uIElMKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTAsZz0wO2c9aTtpPWkrMTZ8MDtiPWcrMTJ8MDtmPWcrOHwwO2U9Zys0fDA7ZD1nO2NbYj4+Ml09YTtjW2U+PjJdPShjW2I+PjJdfDApKzY0O2NbZD4+Ml09MDtjW2Y+PjJdPUpMKGNbYj4+Ml18MCxkKXwwO2lmKCEoY1tmPj4yXXwwKSl7Y1tmPj4yXT1LTChjW2U+PjJdfDAsY1tkPj4yXXwwLDApfDA7Y1soY1tiPj4yXXwwKSsyMD4+Ml09Y1tkPj4yXTtjW2Q+PjJdPTB9aWYoIShjW2Y+PjJdfDApKXtmPWNbZj4+Ml18MDtpPWc7cmV0dXJuIGZ8MH1USyhjW2Q+PjJdfDApO2Y9Y1tmPj4yXXwwO2k9ZztyZXR1cm4gZnwwfWZ1bmN0aW9uIEpMKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wO3M9aTtpPWkrNjR8MDtlPXMrNTJ8MDtmPXMrNDh8MDtuPXMrNDR8MDtyPXMrNDB8MDtrPXMrMzZ8MDtxPXMrMzJ8MDtwPXMrMjh8MDtsPXMrMjR8MDtoPXM7Zz1zKzIwfDA7aj1zKzE2fDA7bz1zKzEyfDA7bT1zKzh8MDtjW2U+PjJdPWE7Y1tmPj4yXT1iO2Nbbj4+Ml09MDtjW3I+PjJdPTA7Y1trPj4yXT0wO3doaWxlKDEpe2lmKGNbcj4+Ml18MClicmVhaztpZigoY1trPj4yXXwwKT49KGRbKGNbZT4+Ml18MCkrNTk+PjBdfDB8MCkpYnJlYWs7Y1txPj4yXT0oY1tlPj4yXXwwKSs2NCsoKGNbaz4+Ml18MCkqNzJ8MCk7Y1twPj4yXT0wO2NbbD4+Ml09T0woY1soY1txPj4yXXwwKSsyOD4+Ml18MCl8MDtiPWg7Y1tiPj4yXT0wO2NbYis0Pj4yXT0wO2E6ZG8gaWYoKGNbKGNbcT4+Ml18MCkrMjg+PjJdfDApPD0xNiljW3I+PjJdPVBMKGNbcT4+Ml18MCxjWyhjW3E+PjJdfDApKzI4Pj4yXXwwLGgscCl8MDtlbHNle2Nbaj4+Ml09MDtjW3A+PjJdPVFMKDE2KXwwO2lmKCEoY1twPj4yXXwwKSljW3I+PjJdPTc7Y1tnPj4yXT0wO3doaWxlKDEpe2lmKCEoKGNbZz4+Ml18MCk8KGNbKGNbcT4+Ml18MCkrMjg+PjJdfDApPyhjW3I+PjJdfDApPT0wOjApKWJyZWFrIGE7Y1tvPj4yXT0wO2lmKCgoY1soY1txPj4yXXwwKSsyOD4+Ml18MCktKGNbZz4+Ml18MCl8MCk8MTYpYT0oY1soY1txPj4yXXwwKSsyOD4+Ml18MCktKGNbZz4+Ml18MCl8MDtlbHNlIGE9MTY7Y1ttPj4yXT1hO2Nbcj4+Ml09UEwoY1txPj4yXXwwLGNbbT4+Ml18MCxoLG8pfDA7aWYoIShjW3I+PjJdfDApKXt0PWNbcT4+Ml18MDthPWNbbD4+Ml18MDtiPWNbaj4+Ml18MDtjW2o+PjJdPWIrMTtjW3I+PjJdPVJMKHQsYSxiLGNbcD4+Ml18MCxjW28+PjJdfDApfDB9Y1tnPj4yXT0oY1tnPj4yXXwwKSsxNn19d2hpbGUoMCk7YT1jW3A+PjJdfDA7aWYoIShjW3I+PjJdfDApKWNbbj4+Ml09YTtlbHNlIFRLKGEpO2Nbaz4+Ml09KGNbaz4+Ml18MCkrMX1pZighKGNbcj4+Ml18MCkpe3E9Y1tuPj4yXXwwO3Q9Y1tmPj4yXXwwO2NbdD4+Ml09cTt0PWNbcj4+Ml18MDtpPXM7cmV0dXJuIHR8MH1USyhjW24+PjJdfDApO2Nbbj4+Ml09MDtxPWNbbj4+Ml18MDt0PWNbZj4+Ml18MDtjW3Q+PjJdPXE7dD1jW3I+PjJdfDA7aT1zO3JldHVybiB0fDB9ZnVuY3Rpb24gS0woYSxiLGUpe2E9YXwwO2I9YnwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wO249aTtpPWkrMzJ8MDtmPW4rMjR8MDtnPW4rMjB8MDtoPW4rMTZ8MDtsPW4rOHwwO2o9bis0fDA7az1uO2NbZz4+Ml09YTtjW2g+PjJdPWI7Y1tuKzEyPj4yXT1lO2NbbD4+Ml09MDtjW2s+PjJdPWNbY1toPj4yXT4+Ml07Y1soY1toPj4yXXwwKSs0Pj4yXT1jW2c+PjJdO2Nbaj4+Ml09MDt3aGlsZSgxKXtpZigoY1tqPj4yXXwwKT49KGNbaz4+Ml18MCkpYnJlYWs7Y1tsPj4yXT1MTCgoY1soY1toPj4yXXwwKSsxMj4+Ml18MCkrKChjW2o+PjJdfDApKjU2fDApfDAsMCl8MDtpZihjW2w+PjJdfDApe209NDticmVha31jW2o+PjJdPShjW2o+PjJdfDApKzF9aWYoKG18MCk9PTQpe2NbZj4+Ml09Y1tsPj4yXTttPWNbZj4+Ml18MDtpPW47cmV0dXJuIG18MH1jW2o+PjJdPShjW2NbaD4+Ml0+PjJdfDApLTE7d2hpbGUoMSl7aWYoKGNbaj4+Ml18MCk8PTApYnJlYWs7TUwoY1toPj4yXXwwLGNbaj4+Ml18MCk7Y1tqPj4yXT0oY1tqPj4yXXwwKSstMX1jW2Y+PjJdPWRbKGNbKGNbZz4+Ml18MCkrMTI+PjJdfDApKzExPj4wXTttPWNbZj4+Ml18MDtpPW47cmV0dXJuIG18MH1mdW5jdGlvbiBMTChhLGIpe2E9YXwwO2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wO2c9aTtpPWkrMTZ8MDtkPWcrMTJ8MDtlPWcrOHwwO2g9Zys0fDA7Zj1nO2NbZD4+Ml09YTtjW2U+PjJdPWI7Y1toPj4yXT1jWyhjW2Q+PjJdfDApKzQ4Pj4yXTtjW2Y+PjJdPTA7aWYoIShjW2g+PjJdfDApKXtoPWNbZj4+Ml18MDtpPWc7cmV0dXJuIGh8MH1jW2Y+PjJdPU5MKGNbZD4+Ml18MCxjW2U+PjJdfDApfDA7aD1jW2Y+PjJdfDA7aT1nO3JldHVybiBofDB9ZnVuY3Rpb24gTUwoYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MDtvPWk7aT1pKzQ4fDA7ZD1vKzM2fDA7ZT1vKzMyfDA7Zz1vKzI4fDA7aD1vKzI0fDA7aj1vKzIwfDA7az1vKzE2fDA7bD1vKzEyfDA7bT1vKzh8MDtmPW8rNHwwO249bztjW2Q+PjJdPWE7Y1tlPj4yXT1iO2I9Y1tlPj4yXXwwO2lmKChjW2U+PjJdfDApPj0oKGNbY1tkPj4yXT4+Ml18MCkvMnwwfDApKXtjW2c+PjJdPWItKChjW2NbZD4+Ml0+PjJdfDApLzJ8MCk8PDE7Y1toPj4yXT0oY1tnPj4yXXwwKSsxfWVsc2V7Y1tnPj4yXT1jWyhjWyhjW2Q+PjJdfDApKzg+PjJdfDApKyhiPDwxPDwyKT4+Ml07Y1toPj4yXT1jWyhjWyhjW2Q+PjJdfDApKzg+PjJdfDApKygoY1tlPj4yXTw8MSkrMTw8Mik+PjJdfWNbaz4+Ml09KGNbKGNbZD4+Ml18MCkrMTI+PjJdfDApKygoY1tnPj4yXXwwKSo1NnwwKTtjW2w+PjJdPShjWyhjW2Q+PjJdfDApKzEyPj4yXXwwKSsoKGNbaD4+Ml18MCkqNTZ8MCk7ZG8gaWYoY1soY1trPj4yXXwwKSsyND4+Ml18MCl7aWYoIShjWyhjW2w+PjJdfDApKzI0Pj4yXXwwKSl7Y1tqPj4yXT1jW2c+PjJdO2JyZWFrfWNbbT4+Ml09Y1soY1tkPj4yXXwwKSs0Pj4yXTtjW2Y+PjJdPTA7Y1tuPj4yXT1TYltjWyhjW20+PjJdfDApKzMyPj4yXSYyNTVdKGNbbT4+Ml18MCxmLGNbKGNbaz4+Ml18MCkrMzI+PjJdfDAsY1soY1trPj4yXXwwKSsyMD4+Ml18MCxjWyhjW2w+PjJdfDApKzMyPj4yXXwwLGNbKGNbbD4+Ml18MCkrMjA+PjJdfDApfDA7aWYoKGNbbj4+Ml18MCk8PTApe2Nbaj4+Ml09Y1tnPj4yXTticmVha31lbHNle2Nbaj4+Ml09Y1toPj4yXTticmVha319ZWxzZSBjW2o+PjJdPWNbaD4+Ml07d2hpbGUoMCk7Y1soY1soY1tkPj4yXXwwKSs4Pj4yXXwwKSsoY1tlPj4yXTw8Mik+PjJdPWNbaj4+Ml07aT1vO3JldHVybn1mdW5jdGlvbiBOTChhLGIpe2E9YXwwO2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wO2s9aTtpPWkrMzJ8MDtkPWsrMjR8MDtsPWsrMjB8MDtqPWsrMTZ8MDtnPWsrMTJ8MDtoPWsrOHwwO2U9ays0fDA7Zj1rO2NbZD4+Ml09YTtjW2w+PjJdPWI7Y1tqPj4yXT0wO2NbZz4+Ml09Y1soY1tkPj4yXXwwKSs0OD4+Ml07Y1toPj4yXT1jW2NbZz4+Ml0+PjJdO2NbZT4+Ml09Y1soY1soY1toPj4yXXwwKSs4Pj4yXXwwKSsyND4+Ml07Y1tqPj4yXT1LTChjW2g+PjJdfDAsY1soY1tnPj4yXXwwKSs0Pj4yXXwwLGNbbD4+Ml18MCl8MDtpZighKGNbaj4+Ml18MCkpe2NbZj4+Ml09Y1soY1tnPj4yXXwwKSsxNj4+Ml07aWYoIShjWyhjW2g+PjJdfDApKzU2Pj4yXXwwKSl7bD0oY1toPj4yXXwwKSs1Nis4fDA7Y1tqPj4yXT1sTChjW2U+PjJdfDAsY1tsPj4yXXwwLGNbbCs0Pj4yXXwwLChjW2g+PjJdfDApKzU2fDApfDA7bD0oY1toPj4yXXwwKSs1Nis4fDA7Y1tsPj4yXT0wO2NbbCs0Pj4yXT0wfWlmKCEoY1tqPj4yXXwwKSl7Y1soY1tnPj4yXXwwKSszMisxNj4+Ml09Y1soY1toPj4yXXwwKSs1Nj4+Ml07Yj0oY1toPj4yXXwwKSs1Nis4fDA7bD1jW2IrND4+Ml18MDthPShjW2c+PjJdfDApKzh8MDtjW2E+PjJdPWNbYj4+Ml07Y1thKzQ+PjJdPWw7YT1jW2Y+PjJdfDA7bD0oY1toPj4yXXwwKSs1Nis4fDA7aD1sO2g9UlIoY1toPj4yXXwwLGNbaCs0Pj4yXXwwLGF8MCwoKGF8MCk8MCk8PDMxPj4zMXwwKXwwO2NbbD4+Ml09aDtjW2wrND4+Ml09Q319aWYoY1tqPj4yXXwwKXtsPWNbaj4+Ml18MDtpPWs7cmV0dXJuIGx8MH1jW2o+PjJdPUFMKGNbZD4+Ml18MCl8MDtsPWNbaj4+Ml18MDtpPWs7cmV0dXJuIGx8MH1mdW5jdGlvbiBPTChhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wO2Y9aTtpPWkrMTZ8MDtiPWYrMTJ8MDtkPWYrOHwwO2U9ZjtjW2I+PjJdPWE7Y1tkPj4yXT0wO2E9ZTtjW2E+PjJdPTE2O2NbYSs0Pj4yXT0wO3doaWxlKDEpe2c9ZTtqPWNbZys0Pj4yXXwwO2E9Y1tiPj4yXXwwO2g9KChhfDApPDApPDwzMT4+MzE7aWYoISgoanwwKTwoaHwwKXwoKGp8MCk9PShofDApPyhjW2c+PjJdfDApPj4+MDxhPj4+MDowKSkpYnJlYWs7aD1lO2g9YVMoY1toPj4yXXwwLGNbaCs0Pj4yXXwwLDE2LDApfDA7aj1lO2Nbaj4+Ml09aDtjW2orND4+Ml09QztjW2Q+PjJdPShjW2Q+PjJdfDApKzF9aT1mO3JldHVybiBjW2Q+PjJdfDB9ZnVuY3Rpb24gUEwoYSxiLGQsZSl7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTA7cT1pO2k9aSs0OHwwO2Y9cSs0NHwwO2c9cSs0MHwwO2g9cSszNnwwO2o9cSszMnwwO249cSsyOHwwO2w9cSs4fDA7az1xKzI0fDA7cD1xKzIwfDA7bT1xO289cSsxNnwwO2NbZj4+Ml09YTtjW2c+PjJdPWI7Y1toPj4yXT1kO2Nbaj4+Ml09ZTthPWNbaD4+Ml18MDtkPWNbYSs0Pj4yXXwwO2U9bDtjW2U+PjJdPWNbYT4+Ml07Y1tlKzQ+PjJdPWQ7Y1twPj4yXT0wO2U9UUwoY1tnPj4yXXwwKXwwO2Nbbj4+Ml09ZTtjW2Nbaj4+Ml0+PjJdPWU7aWYoIShjW24+PjJdfDApKWNbcD4+Ml09NztjW2s+PjJdPTA7d2hpbGUoMSl7aWYoISgoY1trPj4yXXwwKTwoY1tnPj4yXXwwKT8oY1twPj4yXXwwKT09MDowKSlicmVhazthPW07Y1thPj4yXT0wO2NbYSs0Pj4yXT0wO2Nbbz4+Ml09KGNbKGNbbj4+Ml18MCkrMTI+PjJdfDApKygoY1trPj4yXXwwKSo1NnwwKTthPWw7Y1twPj4yXT1UTChjW2Y+PjJdfDAsKGNbZj4+Ml18MCkrNDB8MCxjW2E+PjJdfDAsY1thKzQ+PjJdfDAsY1tvPj4yXXwwLG0pfDA7YT0oY1tvPj4yXXwwKSs4fDA7ZD1jW2ErND4+Ml18MDtlPWw7Y1tlPj4yXT1jW2E+PjJdO2NbZSs0Pj4yXT1kO2Nbaz4+Ml09KGNbaz4+Ml18MCkrMX1pZighKGNbcD4+Ml18MCkpe2Q9bDtvPWQ7bz1jW28+PjJdfDA7ZD1kKzR8MDtkPWNbZD4+Ml18MDtlPWNbaD4+Ml18MDthPWU7Y1thPj4yXT1vO2U9ZSs0fDA7Y1tlPj4yXT1kO3A9Y1twPj4yXXwwO2k9cTtyZXR1cm4gcHwwfVRLKGNbbj4+Ml18MCk7Y1tjW2o+PjJdPj4yXT0wO2Q9bDtvPWQ7bz1jW28+PjJdfDA7ZD1kKzR8MDtkPWNbZD4+Ml18MDtlPWNbaD4+Ml18MDthPWU7Y1thPj4yXT1vO2U9ZSs0fDA7Y1tlPj4yXT1kO3A9Y1twPj4yXXwwO2k9cTtyZXR1cm4gcHwwfWZ1bmN0aW9uIFFMKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTAsZz0wO2c9aTtpPWkrMTZ8MDtiPWcrMTJ8MDtlPWcrOHwwO2Q9Zys0fDA7Zj1nO2NbYj4+Ml09YTtjW2U+PjJdPTI7d2hpbGUoMSl7YT1jW2U+PjJdfDA7aWYoKGNbZT4+Ml18MCk+PShjW2I+PjJdfDApKWJyZWFrO2NbZT4+Ml09KGNbZT4+Ml18MCkrYX1jW2Q+PjJdPTE2KyhhKjYwfDApO2lmKEJpKDEwMCl8MClhPTA7ZWxzZXthPWNbZD4+Ml18MDthPWtnKGEsKChhfDApPDApPDwzMT4+MzEpfDB9Y1tmPj4yXT1hO2lmKCEoY1tmPj4yXXwwKSl7Zj1jW2Y+PjJdfDA7aT1nO3JldHVybiBmfDB9Y1tjW2Y+PjJdPj4yXT1jW2U+PjJdO2NbKGNbZj4+Ml18MCkrND4+Ml09MDtjWyhjW2Y+PjJdfDApKzEyPj4yXT0oY1tmPj4yXXwwKSsxNjtjWyhjW2Y+PjJdfDApKzg+PjJdPShjWyhjW2Y+PjJdfDApKzEyPj4yXXwwKSsoKGNbZT4+Ml18MCkqNTZ8MCk7Zj1jW2Y+PjJdfDA7aT1nO3JldHVybiBmfDB9ZnVuY3Rpb24gUkwoYSxiLGQsZSxmKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MDtzPWk7aT1pKzY0fDA7Zz1zKzQ4fDA7aD1zKzQ0fDA7cD1zKzQwfDA7dT1zKzM2fDA7dD1zKzMyfDA7cj1zKzI4fDA7bD1zKzI0fDA7aj1zKzIwfDA7cT1zKzE2fDA7bT1zKzEyfDA7az1zKzh8MDtvPXMrNHwwO249cztjW2c+PjJdPWE7Y1toPj4yXT1iO2NbcD4+Ml09ZDtjW3U+PjJdPWU7Y1t0Pj4yXT1mO2Nbcj4+Ml09MDtjW2w+PjJdPTE7Y1txPj4yXT1jW3U+PjJdO2Nbcj4+Ml09U0woY1tnPj4yXXwwLGNbdD4+Ml18MCxtKXwwO2Nbaj4+Ml09MTt3aGlsZSgxKXtpZigoY1tqPj4yXXwwKT49KGNbaD4+Ml18MCkpYnJlYWs7Y1tsPj4yXT1jW2w+PjJdPDw0O2Nbaj4+Ml09KGNbaj4+Ml18MCkrMX1jW2o+PjJdPTE7d2hpbGUoMSl7aWYoISgoY1tqPj4yXXwwKTwoY1toPj4yXXwwKT8oY1tyPj4yXXwwKT09MDowKSlicmVhaztjW2s+PjJdPSgoY1twPj4yXXwwKS8oY1tsPj4yXXwwKXwwfDApJTE2fDA7Y1tvPj4yXT0oY1soY1txPj4yXXwwKSsxMj4+Ml18MCkrKChjW2s+PjJdfDApKjU2fDApO2RvIGlmKCEoY1soY1tvPj4yXXwwKSs0OD4+Ml18MCkpe2Nbbj4+Ml09UUwoMTYpfDA7aWYoIShjW24+PjJdfDApKXtjW3I+PjJdPTc7YnJlYWt9ZWxzZXtjW3I+PjJdPVNMKGNbZz4+Ml18MCxjW24+PjJdfDAsKGNbbz4+Ml18MCkrNDh8MCl8MDticmVha319d2hpbGUoMCk7aWYoIShjW3I+PjJdfDApKXtjW3E+PjJdPWNbKGNbKGNbbz4+Ml18MCkrNDg+PjJdfDApKzQ+PjJdO2NbbD4+Ml09KGNbbD4+Ml18MCkvMTZ8MH1jW2o+PjJdPShjW2o+PjJdfDApKzF9Zz1jW20+PjJdfDA7aWYoIShjW3I+PjJdfDApKXtjWyhjWyhjW3E+PjJdfDApKzEyPj4yXXwwKSsoKChjW3A+PjJdfDApJTE2fDApKjU2fDApKzQ4Pj4yXT1nO3U9Y1tyPj4yXXwwO2k9cztyZXR1cm4gdXwwfWVsc2V7WUsoZyk7dT1jW3I+PjJdfDA7aT1zO3JldHVybiB1fDB9cmV0dXJuIDB9ZnVuY3Rpb24gU0woYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MDtrPWk7aT1pKzMyfDA7Zz1rKzE2fDA7ZT1rKzEyfDA7Zj1rKzh8MDtqPWsrNHwwO2g9aztjW2c+PjJdPWE7Y1tlPj4yXT1iO2NbZj4+Ml09ZDtjW2o+PjJdPTA7aWYoQmkoMTAwKXwwKWI9MDtlbHNlIGI9a2coNjQsMCl8MDtjW2NbZj4+Ml0+PjJdPWI7Y1toPj4yXT1iO2I9Y1tlPj4yXXwwO2lmKCEoY1toPj4yXXwwKSl7VEsoYik7Y1tqPj4yXT03O2o9Y1tqPj4yXXwwO2k9aztyZXR1cm4ganwwfWNbKGNbaD4+Ml18MCkrND4+Ml09YjtjW2NbaD4+Ml0+PjJdPWNbZz4+Ml07Yj1jWyhjW2c+PjJdfDApKzg+PjJdfDA7aWYoKChjWyhjWyhjW2c+PjJdfDApKzg+PjJdfDApKzg+PjJdfDApKzl8MCk+KChjWyhjWyhjW2c+PjJdfDApKzg+PjJdfDApKzQ+PjJdfDApLzJ8MHwwKSliPShjW2IrOD4+Ml18MCkrOXwwO2Vsc2UgYj0oY1tiKzQ+PjJdfDApLzJ8MDtjWyhjW2g+PjJdfDApKzE2Pj4yXT1iO2Y9Y1soY1toPj4yXXwwKSsxNj4+Ml18MDtoPShjW2c+PjJdfDApKzU2Kzh8MDtnPWg7Zz1SUihjW2c+PjJdfDAsY1tnKzQ+PjJdfDAsZnwwLCgoZnwwKTwwKTw8MzE+PjMxfDApfDA7Y1toPj4yXT1nO2NbaCs0Pj4yXT1DO2o9Y1tqPj4yXXwwO2k9aztyZXR1cm4ganwwfWZ1bmN0aW9uIFRMKGEsYixkLGUsZixnKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDt2YXIgaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MDttPWk7aT1pKzQ4fDA7bz1tKzMyfDA7bj1tKzI4fDA7cD1tKzh8MDtoPW0rMjR8MDtqPW0rMjB8MDtsPW0rMTZ8MDtrPW07Y1tvPj4yXT1hO2Nbbj4+Ml09YjthPXA7Y1thPj4yXT1kO2NbYSs0Pj4yXT1lO2NbaD4+Ml09ZjtjW2o+PjJdPWc7Zz1wO2NbbD4+Ml09Q0woY1tvPj4yXXwwLGNbaD4+Ml18MCxjW24+PjJdfDAsY1tnPj4yXXwwLGNbZys0Pj4yXXwwKXwwO2lmKCEoY1tsPj4yXXwwKSl7bz1rO2Nbbz4+Ml09MDtjW28rND4+Ml09MDtjW2w+PjJdPURMKGNbaD4+Ml18MCxrKXwwO289Y1toPj4yXXwwO3A9aztwPVJSKGNbbz4+Ml18MCxjW28rND4+Ml18MCxjW3A+PjJdfDAsY1twKzQ+PjJdfDApfDA7bz0oY1toPj4yXXwwKSs4fDA7Y1tvPj4yXT1wO2Nbbys0Pj4yXT1DO289aztwPWNbaj4+Ml18MDtuPXA7bz1SUihjW24+PjJdfDAsY1tuKzQ+PjJdfDAsY1tvPj4yXXwwLGNbbys0Pj4yXXwwKXwwO2NbcD4+Ml09bztjW3ArND4+Ml09Q31pZihjW2w+PjJdfDApe3A9Y1tsPj4yXXwwO2k9bTtyZXR1cm4gcHwwfWNbbD4+Ml09QUwoY1toPj4yXXwwKXwwO3A9Y1tsPj4yXXwwO2k9bTtyZXR1cm4gcHwwfWZ1bmN0aW9uIFVMKGEpe2E9YXwwO3ZhciBiPTAsZT0wO2U9aTtpPWkrMTZ8MDtiPWU7Y1tiPj4yXT1hO2k9ZTtyZXR1cm4gKGRbKGNbYj4+Ml18MCkrNjY+PjBdfDB8MCkhPTF8MH1mdW5jdGlvbiBWTChiKXtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wO2Y9aTtpPWkrMTZ8MDtkPWYrOHwwO2c9Zis0fDA7ZT1mO2NbZD4+Ml09YjtjW2U+PjJdPVdMKGNbKGNbZD4+Ml18MCkrMTY+PjJdfDAsZyl8MDtjWyhjW2Q+PjJdfDApKzU2Pj4yXT0wO2lmKCEoY1tnPj4yXXwwKSl7Zz1jW2U+PjJdfDA7aT1mO3JldHVybiBnfDB9YVsoY1tkPj4yXXwwKSsyPj4wXT0xO2c9Y1tlPj4yXXwwO2k9ZjtyZXR1cm4gZ3wwfWZ1bmN0aW9uIFdMKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTA7aj1pO2k9aSsxNnwwO2c9aisxMnwwO2g9ais4fDA7ZT1qKzR8MDtmPWo7Y1toPj4yXT1hO2NbZT4+Ml09YjtpZigoZFsoY1toPj4yXXwwKSs2Nj4+MF18MHwwKT49MylhPUVGKGNbaD4+Ml18MCl8MDtlbHNlIGE9MDtjW2Y+PjJdPWE7aWYoY1tmPj4yXXwwKXtjW2NbZT4+Ml0+PjJdPTE7Y1tnPj4yXT1jW2Y+PjJdO2g9Y1tnPj4yXXwwO2k9ajtyZXR1cm4gaHwwfWE9Y1tlPj4yXXwwO2lmKChkWyhjW2g+PjJdfDApKzY2Pj4wXXwwfDApIT0xKWNbYT4+Ml09MTtlbHNlIGNbYT4+Ml09MDtjW2c+PjJdPTA7aD1jW2c+PjJdfDA7aT1qO3JldHVybiBofDB9ZnVuY3Rpb24gWEwoYixkKXtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MDtqPWk7aT1pKzE2fDA7ZT1qKzEyfDA7Zj1qKzh8MDtnPWorNHwwO2g9ajtjW2U+PjJdPWI7Y1tmPj4yXT1kO2I9Y1tlPj4yXXwwO2lmKGFbKGNbZT4+Ml18MCkrNTY+PjBdfDApe2NbaD4+Ml09KGNbKGNbKGNbZT4+Ml18MCkrMjA+PjJdfDApKzEyPj4yXXwwKSsoKGNbKGNbKGNbYisyMD4+Ml18MCkrOD4+Ml18MCkrND4+Ml18MCkqNTZ8MCk7Y1tjW2Y+PjJdPj4yXT1jWyhjW2g+PjJdfDApKzIwPj4yXTtjW2c+PjJdPWNbKGNbaD4+Ml18MCkrMzI+PjJdO2g9Y1tnPj4yXXwwO2k9ajtyZXR1cm4gaHwwfWVsc2V7Y1tjW2Y+PjJdPj4yXT1jW2NbYiszNj4+Ml0+PjJdO2NbZz4+Ml09KGNbKGNbZT4+Ml18MCkrMzY+PjJdfDApKzg7aD1jW2c+PjJdfDA7aT1qO3JldHVybiBofDB9cmV0dXJuIDB9ZnVuY3Rpb24gWUwoZixnLGgsail7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7dmFyIGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MDt0PWk7aT1pKzQ4fDA7az10KzMyfDA7bD10KzI4fDA7bT10KzI0fDA7bj10KzIwfDA7cT10KzE2fDA7bz10KzEyfDA7cj10Kzh8MDtzPXQrNHwwO3A9dDtjW2s+PjJdPWY7Y1tsPj4yXT1nO2NbbT4+Ml09aDtjW24+PjJdPWo7aWYoY1tjW24+PjJdPj4yXXwwKXtpPXQ7cmV0dXJufWNbbz4+Ml09Y1soY1trPj4yXXwwKSs1Nj4+Ml07Y1tyPj4yXT0oY1soY1trPj4yXXwwKSs2ND4+Ml18MCkrKGNbbD4+Ml08PDEpO2NbcT4+Ml09KGRbY1tyPj4yXT4+MF18MCk8PDh8KGRbKGNbcj4+Ml18MCkrMT4+MF18MCk7Y1twPj4yXT1kWyhjW2s+PjJdfDApKzU+PjBdO2lmKChjW3E+PjJdfDApPj4+MD49KChkWyhjW28+PjJdfDApKygoY1twPj4yXXwwKSs1KT4+MF18MCk8PDh8KGRbKGNbbz4+Ml18MCkrKChjW3A+PjJdfDApKzUpKzE+PjBdfDApKT4+PjA/KChjW3E+PjJdfDApKyhjW20+PjJdfDApfDApPj4+MDw9KGNbKGNbKGNbaz4+Ml18MCkrNTI+PjJdfDApKzM2Pj4yXXwwKT4+PjA6MCl7Y1tzPj4yXT1uTShjW2s+PjJdfDAsY1txPj4yXSY2NTUzNSxjW20+PjJdJjY1NTM1KXwwO2lmKGNbcz4+Ml18MCl7Y1tjW24+PjJdPj4yXT1jW3M+PjJdO2k9dDtyZXR1cm59aD0oY1trPj4yXXwwKSsxOHwwO2JbaD4+MV09KGJbaD4+MV18MCkrLTE8PDE2Pj4xNjtpZighKGVbKGNbaz4+Ml18MCkrMTg+PjFdfDApKXtoPShjW28+PjJdfDApKygoY1twPj4yXXwwKSsxKXwwO2FbaD4+MF09MDthW2grMT4+MF09MDthW2grMj4+MF09MDthW2grMz4+MF09MDthWyhjW28+PjJdfDApKygoY1twPj4yXXwwKSs3KT4+MF09MDthWyhjW28+PjJdfDApKygoY1twPj4yXXwwKSs1KT4+MF09KGNbKGNbKGNbaz4+Ml18MCkrNTI+PjJdfDApKzM2Pj4yXXwwKT4+Pjg7YVsoY1tvPj4yXXwwKSsoKGNbcD4+Ml18MCkrNSkrMT4+MF09Y1soY1soY1trPj4yXXwwKSs1Mj4+Ml18MCkrMzY+PjJdO2JbKGNbaz4+Ml18MCkrMTY+PjFdPShjWyhjWyhjW2s+PjJdfDApKzUyPj4yXXwwKSszNj4+Ml18MCktKGRbKGNbaz4+Ml18MCkrNT4+MF18MCktKGRbKGNbaz4+Ml18MCkrNj4+MF18MCktODtpPXQ7cmV0dXJufWVsc2V7VVIoY1tyPj4yXXwwLChjW3I+PjJdfDApKzJ8MCwoZVsoY1trPj4yXXwwKSsxOD4+MV18MCktKGNbbD4+Ml18MCk8PDF8MCl8MDthWyhjW28+PjJdfDApKygoY1twPj4yXXwwKSszKT4+MF09KGVbKGNbaz4+Ml18MCkrMTg+PjFdfDApPj44O2FbKGNbbz4+Ml18MCkrKChjW3A+PjJdfDApKzMpKzE+PjBdPWJbKGNbaz4+Ml18MCkrMTg+PjFdO2g9KGNbaz4+Ml18MCkrMTZ8MDtiW2g+PjFdPShlW2g+PjFdfDApKzI7aT10O3JldHVybn19aD1Raig2NDUwOCl8MDtjW2Nbbj4+Ml0+PjJdPWg7aT10O3JldHVybn1mdW5jdGlvbiBaTChmLGcsaCxqLGssbCxtKXtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDtrPWt8MDtsPWx8MDttPW18MDt2YXIgbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wO3o9aTtpPWkrNDh8MDtuPXorNDR8MDtvPXorNDB8MDtwPXorMzZ8MDtxPXorMzJ8MDtyPXorMjh8MDtzPXorMjR8MDt0PXorMjB8MDt2PXorMTZ8MDt3PXorMTJ8MDt1PXorOHwwO3g9eis0fDA7eT16O2Nbbj4+Ml09ZjtjW28+PjJdPWc7Y1twPj4yXT1oO2NbcT4+Ml09ajtjW3I+PjJdPWs7Y1tzPj4yXT1sO2NbdD4+Ml09bTtjW3Y+PjJdPTA7aWYoKGRbKGNbbj4+Ml18MCkrMT4+MF18MCk9PTA/KChjW3E+PjJdfDApKzJ8MCk8PShlWyhjW24+PjJdfDApKzE2Pj4xXXwwKTowKXtjW3k+PjJdPUdnKGNbKGNbbj4+Ml18MCkrNzI+PjJdfDApfDA7aWYoY1t5Pj4yXXwwKXtjW2NbdD4+Ml0+PjJdPWNbeT4+Ml07aT16O3JldHVybn1jW3U+PjJdPWNbKGNbbj4+Ml18MCkrNTY+PjJdO2NbeT4+Ml09cE0oY1tuPj4yXXwwLGNbcT4+Ml18MCx2KXwwO2lmKGNbeT4+Ml18MCl7Y1tjW3Q+PjJdPj4yXT1jW3k+PjJdO2k9ejtyZXR1cm59aj0oY1tuPj4yXXwwKSsxNnwwO2Jbaj4+MV09KGVbaj4+MV18MCktKDIrKGNbcT4+Ml18MCkmNjU1MzUpO1RSKChjW3U+PjJdfDApKyhjW3Y+PjJdfDApfDAsY1twPj4yXXwwLGNbcT4+Ml18MCl8MDtpZihjW3M+PjJdfDApZnQoKGNbdT4+Ml18MCkrKGNbdj4+Ml18MCl8MCxjW3M+PjJdfDApO2NbeD4+Ml09KGNbKGNbbj4+Ml18MCkrNjQ+PjJdfDApKyhjW28+PjJdPDwxKTtVUigoY1t4Pj4yXXwwKSsyfDAsY1t4Pj4yXXwwLChlWyhjW24+PjJdfDApKzE4Pj4xXXwwKS0oY1tvPj4yXXwwKTw8MXwwKXwwO2FbY1t4Pj4yXT4+MF09Y1t2Pj4yXT4+ODthWyhjW3g+PjJdfDApKzE+PjBdPWNbdj4+Ml07eT0oY1tuPj4yXXwwKSsxOHwwO2JbeT4+MV09KGJbeT4+MV18MCkrMTw8MTY+PjE2O3k9KGNbdT4+Ml18MCkrKChkWyhjW24+PjJdfDApKzU+PjBdfDApKzQpfDA7aj0oYVt5Pj4wXXwwKSsxPDwyND4+MjQ7YVt5Pj4wXT1qO2lmKCEoaiYyNTUpKXtqPShjW3U+PjJdfDApKygoZFsoY1tuPj4yXXwwKSs1Pj4wXXwwKSszKXwwO2Fbaj4+MF09KGFbaj4+MF18MCkrMTw8MjQ+PjI0fWlmKCEoYVsoY1soY1tuPj4yXXwwKSs1Mj4+Ml18MCkrMTc+PjBdfDApKXtpPXo7cmV0dXJufWdLKGNbbj4+Ml18MCxjW3A+PjJdfDAsY1t0Pj4yXXwwKTtpPXo7cmV0dXJufWlmKGNbcj4+Ml18MCl7VFIoY1tyPj4yXXwwLGNbcD4+Ml18MCxjW3E+PjJdfDApfDA7Y1twPj4yXT1jW3I+PjJdfWlmKGNbcz4+Ml18MClmdChjW3A+PjJdfDAsY1tzPj4yXXwwKTt5PShjW24+PjJdfDApKzF8MDtqPWFbeT4+MF18MDthW3k+PjBdPWorMTw8MjQ+PjI0O2Nbdz4+Ml09aiYyNTU7Y1soY1tuPj4yXXwwKSszMisoY1t3Pj4yXTw8Mik+PjJdPWNbcD4+Ml07YlsoY1tuPj4yXXwwKSsyMisoY1t3Pj4yXTw8MSk+PjFdPWNbbz4+Ml07aT16O3JldHVybn1mdW5jdGlvbiBfTChmKXtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MDtyPWk7aT1pKzY0fDA7Zz1yKzMyfDA7cT1yKzI4fDA7bD1yKzI0fDA7aD1yKzM2fDA7bT1yKzIwfDA7az1yKzE2fDA7bj1yKzEyfDA7bz1yKzh8MDtqPXIrNHwwO3A9cjtjW2c+PjJdPWY7Y1txPj4yXT0wO2NbbD4+Ml09KGNbKGNbKGNbZz4+Ml18MCkrND4+Ml18MCkrMzY+PjJdPDwxPj4+MCkvM3wwO2NbbT4+Ml09MDtkb3tjW2s+PjJdPWFbKGNbZz4+Ml18MCkrNjg+PjBdO2Nbbj4+Ml09Y1soY1tnPj4yXXwwKSsxMjArKGNbaz4+Ml08PDIpPj4yXTtmPWFbKGNbbj4+Ml18MCkrMT4+MF18MDtpZighKGNbaz4+Ml18MCkpe2lmKCEoZjw8MjQ+PjI0KSlicmVhaztjW3E+PjJdPSRMKGNbbj4+Ml18MCwoY1tnPj4yXXwwKSsxMjArNHwwKXwwO2lmKCEoY1txPj4yXXwwKSl7YVsoY1tnPj4yXXwwKSs2OD4+MF09MTtiWyhjW2c+PjJdfDApKzgwPj4xXT0wO2JbKGNbZz4+Ml18MCkrODArMj4+MV09MH19ZWxzZXtpZigoZiYyNTV8MCk9PTA/KGVbKGNbbj4+Ml18MCkrMTY+PjFdfDApPD0oY1tsPj4yXXwwKTowKWJyZWFrO2Nbbz4+Ml09Y1soY1tnPj4yXXwwKSsxMjArKChjW2s+PjJdfDApLTE8PDIpPj4yXTtjW2o+PjJdPWVbKGNbZz4+Ml18MCkrODArKChjW2s+PjJdfDApLTE8PDEpPj4xXTtjW3E+PjJdPUdnKGNbKGNbbz4+Ml18MCkrNzI+PjJdfDApfDA7ZG8gaWYoIShjW3E+PjJdfDApKXtpZigoKCgoZFsoY1tuPj4yXXwwKSszPj4wXXwwKSE9MD8oZFsoY1tuPj4yXXwwKSsxPj4wXXwwKT09MTowKT8oZVsoY1tuPj4yXXwwKSsyMj4+MV18MCk9PShlWyhjW24+PjJdfDApKzE4Pj4xXXwwKTowKT8oY1soY1tvPj4yXXwwKSs4ND4+Ml18MCkhPTE6MCk/KGVbKGNbbz4+Ml18MCkrMTg+PjFdfDApPT0oY1tqPj4yXXwwKTowKXtjW3E+PjJdPWFNKGNbbz4+Ml18MCxjW24+PjJdfDAsaCl8MDticmVha31jW3A+PjJdPVlpKGNbKGNbKGNbZz4+Ml18MCkrND4+Ml18MCkrMzI+PjJdfDApfDA7Y1txPj4yXT1iTShjW28+PjJdfDAsY1tqPj4yXXwwLGNbcD4+Ml18MCwoY1trPj4yXXwwKT09MSYxLGRbKGNbZz4+Ml18MCkrNjc+PjBdJjEpfDA7aWYoY1ttPj4yXXwwKSRpKGNbbT4+Ml18MCk7Y1ttPj4yXT1jW3A+PjJdfXdoaWxlKDApO2FbKGNbbj4+Ml18MCkrMT4+MF09MDtRQihjW24+PjJdfDApO2Y9KGNbZz4+Ml18MCkrNjh8MDthW2Y+PjBdPShhW2Y+PjBdfDApKy0xPDwyND4+MjR9fXdoaWxlKChjW3E+PjJdfDApPT0wKTtpZighKGNbbT4+Ml18MCkpe3E9Y1txPj4yXXwwO2k9cjtyZXR1cm4gcXwwfSRpKGNbbT4+Ml18MCk7cT1jW3E+PjJdfDA7aT1yO3JldHVybiBxfDB9ZnVuY3Rpb24gJEwoYixlKXtiPWJ8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MDtuPWk7aT1pKzMyfDA7Zj1uKzI0fDA7Zz1uKzIwfDA7aD1uKzE2fDA7bT1uKzEyfDA7az1uKzh8MDtsPW4rNHwwO2o9bjtjW2c+PjJdPWI7Y1toPj4yXT1lO2Nbaz4+Ml09MDtjW2w+PjJdPTA7Y1tqPj4yXT1jWyhjW2c+PjJdfDApKzUyPj4yXTtjW20+PjJdPUdnKGNbKGNbZz4+Ml18MCkrNzI+PjJdfDApfDA7aWYoKGNbbT4+Ml18MCk9PTA/KGNbbT4+Ml09YUsoY1tqPj4yXXwwLGssbCxjWyhjW2c+PjJdfDApKzg0Pj4yXXwwLDApfDAsZ00oY1tnPj4yXXwwLGNbaz4+Ml18MCxtKSwoYVsoY1tqPj4yXXwwKSsxNz4+MF18MCkhPTApOjApZUsoY1tqPj4yXXwwLGNbbD4+Ml18MCw1LGNbKGNbZz4+Ml18MCkrODQ+PjJdfDAsbSk7aWYoY1ttPj4yXXwwKXtjW2NbaD4+Ml0+PjJdPTA7UUIoY1trPj4yXXwwKTtjW2Y+PjJdPWNbbT4+Ml07bT1jW2Y+PjJdfDA7aT1uO3JldHVybiBtfDB9ZWxzZXtUUigoY1trPj4yXXwwKSsyMnwwLChjW2c+PjJdfDApKzIyfDAsZFsoY1tnPj4yXXwwKSsxPj4wXTw8MXwwKXwwO1RSKChjW2s+PjJdfDApKzMyfDAsKGNbZz4+Ml18MCkrMzJ8MCxkWyhjW2c+PjJdfDApKzE+PjBdPDwyfDApfDA7YVsoY1trPj4yXXwwKSsxPj4wXT1hWyhjW2c+PjJdfDApKzE+PjBdfDA7YkwoY1tnPj4yXXwwLGRbY1soY1trPj4yXXwwKSs1Nj4+Ml0+PjBdJi05KTtmdCgoY1soY1tnPj4yXXwwKSs1Nj4+Ml18MCkrKChkWyhjW2c+PjJdfDApKzU+PjBdfDApKzgpfDAsY1tsPj4yXXwwKTtjW2NbaD4+Ml0+PjJdPWNbaz4+Ml07Y1tmPj4yXT0wO209Y1tmPj4yXXwwO2k9bjtyZXR1cm4gbXwwfXJldHVybiAwfWZ1bmN0aW9uIGFNKGYsZyxoKXtmPWZ8MDtnPWd8MDtoPWh8MDt2YXIgaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wO3Y9aTtpPWkrNDh8MDtqPXYrNDB8MDtrPXYrMzZ8MDtsPXYrMzJ8MDttPXYrMjh8MDtuPXYrMjR8MDtwPXYrMjB8MDt0PXYrMTZ8MDtzPXYrMTJ8MDtxPXYrOHwwO289dis0fDA7dT12KzQ0fDA7cj12O2Nbaz4+Ml09ZjtjW2w+PjJdPWc7Y1ttPj4yXT1oO2Nbbj4+Ml09Y1soY1tsPj4yXXwwKSs1Mj4+Ml07aWYoIShlWyhjW2w+PjJdfDApKzE4Pj4xXXwwKSl7Y1tqPj4yXT1Raig2NTAwNil8MDt1PWNbaj4+Ml18MDtpPXY7cmV0dXJuIHV8MH1jW3Q+PjJdPWFLKGNbbj4+Ml18MCxwLHMsMCwwKXwwO2lmKCEoY1t0Pj4yXXwwKSl7Y1txPj4yXT0oY1ttPj4yXXwwKSs0O2Nbbz4+Ml09Y1soY1tsPj4yXXwwKSszMj4+Ml07Ylt1Pj4xXT1ZYltjWyhjW2w+PjJdfDApKzc2Pj4yXSYyNTVdKGNbbD4+Ml18MCxjW28+PjJdfDApfDA7YkwoY1twPj4yXXwwLDEzKTtjW3Q+PjJdPWxNKGNbcD4+Ml18MCwxLG8sdSl8MDtpZihjW3Q+PjJdfDApe2Nbaj4+Ml09Y1t0Pj4yXTt1PWNbaj4+Ml18MDtpPXY7cmV0dXJuIHV8MH1iWyhjW3A+PjJdfDApKzE2Pj4xXT0oY1soY1tuPj4yXXwwKSszNj4+Ml18MCktKGVbKGNbcD4+Ml18MCkrMTQ+PjFdfDApLTItKGVbdT4+MV18MCk7aWYoKGFbKGNbbj4+Ml18MCkrMTc+PjBdfDApIT0wPyhlSyhjW24+PjJdfDAsY1tzPj4yXXwwLDUsY1soY1trPj4yXXwwKSs4ND4+Ml18MCx0KSwoZVt1Pj4xXXwwKT4oZVsoY1twPj4yXXwwKSsxMj4+MV18MCkpOjApZ0soY1twPj4yXXwwLGNbbz4+Ml18MCx0KTtjW28+PjJdPShjWyhjW2w+PjJdfDApKzU2Pj4yXXwwKSsoZVsoY1tsPj4yXXwwKSsyMD4+MV0mKGRbKGNbKGNbbD4+Ml18MCkrNjQ+PjJdfDApKygoZVsoY1tsPj4yXXwwKSsxOD4+MV18MCktMTw8MSk+PjBdPDw4fGRbKGNbKGNbbD4+Ml18MCkrNjQ+PjJdfDApKygoZVsoY1tsPj4yXXwwKSsxOD4+MV18MCktMTw8MSkrMT4+MF0pKTtjW3I+PjJdPShjW28+PjJdfDApKzk7ZG97dT1jW28+PjJdfDA7Y1tvPj4yXT11KzE7aWYoIShkW3U+PjBdJjEyOCkpYnJlYWt9d2hpbGUoKGNbbz4+Ml18MCk+Pj4wPChjW3I+PjJdfDApPj4+MCk7Y1tyPj4yXT0oY1tvPj4yXXwwKSs5O2Rve3U9Y1tvPj4yXXwwO2Nbbz4+Ml09dSsxO3U9YVt1Pj4wXXwwO2g9Y1txPj4yXXwwO2NbcT4+Ml09aCsxO2FbaD4+MF09dTtpZighKHUmMTI4KSlicmVha313aGlsZSgoY1tvPj4yXXwwKT4+PjA8KGNbcj4+Ml18MCk+Pj4wKTtpZighKGNbdD4+Ml18MCkpWkwoY1trPj4yXXwwLGVbKGNbaz4+Ml18MCkrMTg+PjFdfDAsY1ttPj4yXXwwLChjW3E+PjJdfDApLShjW20+PjJdfDApfDAsMCxjWyhjW2w+PjJdfDApKzg0Pj4yXXwwLHQpO2Z0KChjWyhjW2s+PjJdfDApKzU2Pj4yXXwwKSsoKGRbKGNbaz4+Ml18MCkrNT4+MF18MCkrOCl8MCxjW3M+PjJdfDApO1FCKGNbcD4+Ml18MCl9Y1tqPj4yXT1jW3Q+PjJdO3U9Y1tqPj4yXXwwO2k9djtyZXR1cm4gdXwwfWZ1bmN0aW9uIGJNKGYsZyxoLGosayl7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7dmFyIGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MCxFPTAsRj0wLEc9MCxIPTAsST0wLEo9MCxLPTAsTD0wLE09MCxOPTAsTz0wLFA9MCxRPTAsUj0wLFM9MCxUPTAsVT0wLFY9MCxXPTAsWD0wLFk9MCxaPTAsXz0wLCQ9MCxhYT0wLGJhPTAsY2E9MCxkYT0wLGVhPTAsZmE9MCxnYT0wLGhhPTAsaWE9MCxqYT0wLGthPTAsbGE9MCxtYT0wLG5hPTAsb2E9MCxwYT0wLHFhPTAscmE9MCxzYT0wLHRhPTAsdWE9MCx2YT0wLHdhPTAseGE9MCx5YT0wLHphPTAsQWE9MCxCYT0wLENhPTAsRGE9MDtEYT1pO2k9aSs0NDh8MDtnYT1EYSs0MTJ8MDtoYT1EYSs0MDh8MDtsPURhKzQwNHwwO1E9RGErNDAwfDA7aWE9RGErMzk2fDA7Qz1EYSszOTJ8MDt6YT1EYSszODh8MDt0PURhKzM4NHwwO3dhPURhKzM4MHwwO3lhPURhKzM3NnwwO3BhPURhKzM3MnwwO1k9RGErMzY4fDA7SD1EYSszNjR8MDtaPURhKzM2MHwwO0FhPURhKzM1NnwwO3VhPURhKzQzMHwwO3ZhPURhKzM1MnwwO0NhPURhKzM0OHwwO0w9RGErMzQ0fDA7cT1EYSszNDB8MDtXPURhKzMzNnwwO0E9RGErMzMyfDA7bGE9RGErMzIwfDA7a2E9RGErMzAwfDA7Sz1EYSsyOTZ8MDtwPURhKzI4OHwwO25hPURhKzI2NHwwO29hPURhKzI0NHwwO0JhPURhKzIyNHwwO289RGErMjIwfDA7TT1EYSsyMTZ8MDtqYT1EYSs0MzJ8MDtTPURhKzE5NnwwO0U9RGErMTc2fDA7RD1EYSs0MjB8MDttYT1EYSsxNjB8MDttPURhKzE1MnwwO3Y9RGErMTQ4fDA7cj1EYSsxNDR8MDtuPURhKzE0MHwwO3M9RGErNDE4fDA7eD1EYSsxMzZ8MDt5PURhKzEzMnwwO3o9RGErNDE2fDA7dz1EYSsxMjh8MDt1PURhKzEyNHwwO0I9RGErMTIwfDA7UD1EYSsxMTZ8MDtPPURhKzExMnwwO049RGErMTA4fDA7Rj1EYSsxMDR8MDtJPURhKzEwMHwwO0c9RGErOTZ8MDtKPURhKzkyfDA7YWE9RGErODh8MDtSPURhKzg0fDA7VD1EYSs4MHwwO2ZhPURhKzc2fDA7VT1EYSs3MnwwO1Y9RGErNjh8MDtfPURhKzY0fDA7Y2E9RGErNjB8MDskPURhKzU2fDA7ZGE9RGErNTJ8MDtlYT1EYSs0OHwwO2JhPURhKzQ0fDA7WD1EYTtzYT1EYSs0MHwwO3FhPURhKzM2fDA7cmE9RGErMzJ8MDt4YT1EYSsyOHwwO3RhPURhKzI0fDA7Y1toYT4+Ml09ZjtjW2w+PjJdPWc7Y1tRPj4yXT1oO2NbaWE+PjJdPWo7Y1tDPj4yXT1rO2NbdD4+Ml09MDtjW3dhPj4yXT0wO2NbQWE+PjJdPTA7Y1txPj4yXT0wO2NbVz4+Ml09MDthW2phPj4wXT0wO2FbamErMT4+MF09MDthW2phKzI+PjBdPTA7YVtqYSszPj4wXT0wO2FbamErND4+MF09MDtjW21hPj4yXT0wO2NbbWErOD4+Ml09MDtjW3phPj4yXT1jWyhjW2hhPj4yXXwwKSs1Mj4+Ml07aWYoIShjW1E+PjJdfDApKXtjW2dhPj4yXT03O0NhPWNbZ2E+PjJdfDA7aT1EYTtyZXR1cm4gQ2F8MH1jW3BhPj4yXT0oZFsoY1toYT4+Ml18MCkrMT4+MF18MCkrKGVbKGNbaGE+PjJdfDApKzE4Pj4xXXwwKTtpZigoY1twYT4+Ml18MCk8MiljW1o+PjJdPTA7ZWxzZXtkbyBpZihjW2w+PjJdfDApaWYoKGNbbD4+Ml18MCk9PShjW3BhPj4yXXwwKSl7Y1taPj4yXT0oY1twYT4+Ml18MCktMisoY1tDPj4yXXwwKTticmVha31lbHNle2NbWj4+Ml09KGNbbD4+Ml18MCktMTticmVha31lbHNlIGNbWj4+Ml09MDt3aGlsZSgwKTtjW3BhPj4yXT0yLShjW0M+PjJdfDApfWNbeWE+PjJdPShjW3BhPj4yXXwwKSsxO2w9Y1toYT4+Ml18MDtpZigoKGNbcGE+PjJdfDApKyhjW1o+PjJdfDApLShkWyhjW2hhPj4yXXwwKSsxPj4wXXwwKXwwKT09KGVbKGNbaGE+PjJdfDApKzE4Pj4xXXwwKSljW0s+PjJdPShjWyhjW2hhPj4yXXwwKSs1Nj4+Ml18MCkrKChkW2wrNT4+MF18MCkrOCk7ZWxzZSBjW0s+PjJdPShjW2wrNTY+PjJdfDApKyhlWyhjW2hhPj4yXXwwKSsyMD4+MV0mKGRbKGNbKGNbaGE+PjJdfDApKzY0Pj4yXXwwKSsoKGNbcGE+PjJdfDApKyhjW1o+PjJdfDApLShkWyhjW2hhPj4yXXwwKSsxPj4wXXwwKTw8MSk+PjBdPDw4fGRbKGNbKGNbaGE+PjJdfDApKzY0Pj4yXXwwKSsoKGNbcGE+PjJdfDApKyhjW1o+PjJdfDApLShkWyhjW2hhPj4yXXwwKSsxPj4wXXwwKTw8MSkrMT4+MF0pKTtjW00+PjJdPWdyKGNbSz4+Ml18MCl8MDt3aGlsZSgxKXtjW0FhPj4yXT1JRihjW3phPj4yXXwwLGNbTT4+Ml18MCxsYSsoY1twYT4+Ml08PDIpfDAsMCwwKXwwO2lmKGNbQWE+PjJdfDApe2g9MTY7YnJlYWt9Y1t0Pj4yXT0oY1t0Pj4yXXwwKSsoMSsoZVsoY1tsYSsoY1twYT4+Ml08PDIpPj4yXXwwKSsxOD4+MV18MCkrKGRbKGNbbGErKGNbcGE+PjJdPDwyKT4+Ml18MCkrMT4+MF18MCkpO2Y9Y1twYT4+Ml18MDtjW3BhPj4yXT1mKy0xO2lmKCFmKXtoPTI2O2JyZWFrfWlmKCgoY1twYT4+Ml18MCkrKGNbWj4+Ml18MCl8MCk9PShlWyhjW2hhPj4yXXwwKSsyMj4+MV18MCk/KGRbKGNbaGE+PjJdfDApKzE+PjBdfDApIT0wOjApe2NbcCsoY1twYT4+Ml08PDIpPj4yXT1jWyhjW2hhPj4yXXwwKSszMj4+Ml07Y1tNPj4yXT1ncihjW3ArKGNbcGE+PjJdPDwyKT4+Ml18MCl8MDtmPShZYltjWyhjW2hhPj4yXXwwKSs3Nj4+Ml0mMjU1XShjW2hhPj4yXXwwLGNbcCsoY1twYT4+Ml08PDIpPj4yXXwwKXwwKSY2NTUzNTtjW0JhKyhjW3BhPj4yXTw8Mik+PjJdPWY7YVsoY1toYT4+Ml18MCkrMT4+MF09MDtjb250aW51ZX1jW3ArKGNbcGE+PjJdPDwyKT4+Ml09KGNbKGNbaGE+PjJdfDApKzU2Pj4yXXwwKSsoZVsoY1toYT4+Ml18MCkrMjA+PjFdJihkWyhjWyhjW2hhPj4yXXwwKSs2ND4+Ml18MCkrKChjW3BhPj4yXXwwKSsoY1taPj4yXXwwKS0oZFsoY1toYT4+Ml18MCkrMT4+MF18MCk8PDEpPj4wXTw8OHxkWyhjWyhjW2hhPj4yXXwwKSs2ND4+Ml18MCkrKChjW3BhPj4yXXwwKSsoY1taPj4yXXwwKS0oZFsoY1toYT4+Ml18MCkrMT4+MF18MCk8PDEpKzE+PjBdKSk7Y1tNPj4yXT1ncihjW3ArKGNbcGE+PjJdPDwyKT4+Ml18MCl8MDtmPShZYltjWyhjW2hhPj4yXXwwKSs3Nj4+Ml0mMjU1XShjW2hhPj4yXXwwLGNbcCsoY1twYT4+Ml08PDIpPj4yXXwwKXwwKSY2NTUzNTtjW0JhKyhjW3BhPj4yXTw8Mik+PjJdPWY7aWYoZVsoY1t6YT4+Ml18MCkrMjI+PjFdJjQpe2NbbT4+Ml09KGNbcCsoY1twYT4+Ml08PDIpPj4yXXwwKS0oY1soY1toYT4+Ml18MCkrNTY+PjJdfDApO2lmKCgoY1ttPj4yXXwwKSsoY1tCYSsoY1twYT4+Ml08PDIpPj4yXXwwKXwwKT4oY1soY1t6YT4+Ml18MCkrMzY+PjJdfDApKXtoPTIzO2JyZWFrfVRSKChjW1E+PjJdfDApKyhjW20+PjJdfDApfDAsY1twKyhjW3BhPj4yXTw8Mik+PjJdfDAsY1tCYSsoY1twYT4+Ml08PDIpPj4yXXwwKXwwO2NbcCsoY1twYT4+Ml08PDIpPj4yXT0oY1tRPj4yXXwwKSsoKGNbcCsoY1twYT4+Ml08PDIpPj4yXXwwKS0oY1soY1toYT4+Ml18MCkrNTY+PjJdfDApKX1ZTChjW2hhPj4yXXwwLChjW3BhPj4yXXwwKSsoY1taPj4yXXwwKS0oZFsoY1toYT4+Ml18MCkrMT4+MF18MCl8MCxjW0JhKyhjW3BhPj4yXTw8Mik+PjJdfDAsQWEpfWE6ZG8gaWYoKGh8MCk9PTE2KVZSKGxhfDAsMCwoY1twYT4+Ml18MCkrMTw8MnwwKXwwO2Vsc2UgaWYoKGh8MCk9PTIzKXtjW0FhPj4yXT1Raig2NTM0Nyl8MDtWUihsYXwwLDAsKGNbcGE+PjJdfDApKzE8PDJ8MCl8MH1lbHNlIGlmKChofDApPT0yNil7Y1t0Pj4yXT0oY1t0Pj4yXXwwKSszJi00O2NbQT4+Ml09KGNbdD4+Ml08PDIpKyhjW3Q+PjJdPDwxKSsoY1soY1t6YT4+Ml18MCkrMzI+PjJdfDApO2NbbWErOD4+Ml09RWkoY1tBPj4yXXwwKXwwO2lmKCEoY1ttYSs4Pj4yXXwwKSl7Y1tBYT4+Ml09NzticmVha31jW21hKzEyPj4yXT0oY1ttYSs4Pj4yXXwwKSsoY1t0Pj4yXTw8Mik7Y1tvPj4yXT0oY1ttYSsxMj4+Ml18MCkrKGNbdD4+Ml08PDEpO2NbbWErND4+Ml09Y1tsYT4+Ml07Ylt1YT4+MV09ZFsoY1ttYSs0Pj4yXXwwKSs0Pj4wXTw8MjtjW3ZhPj4yXT1kWyhjW21hKzQ+PjJdfDApKzM+PjBdO2NbcGE+PjJdPTA7d2hpbGUoMSl7aWYoKGNbcGE+PjJdfDApPj0oY1t5YT4+Ml18MCkpYnJlYWs7Y1t2Pj4yXT1jW2xhKyhjW3BhPj4yXTw8Mik+PjJdO2Nbcj4+Ml09ZVsoY1t2Pj4yXXwwKSsxOD4+MV07Y1tuPj4yXT1jWyhjW3Y+PjJdfDApKzU2Pj4yXTtiW3M+PjFdPWJbKGNbdj4+Ml18MCkrMjA+PjFdfDA7Y1t4Pj4yXT0oY1tuPj4yXXwwKSsoZVsoY1t2Pj4yXXwwKSsxND4+MV18MCk7aWYoKGRbY1soY1t2Pj4yXXwwKSs1Nj4+Ml0+PjBdfDApIT0oZFtjWyhjW2xhPj4yXXwwKSs1Nj4+Ml0+PjBdfDApKXtoPTMxO2JyZWFrfVZSKChjW21hKzEyPj4yXXwwKSsoY1ttYT4+Ml08PDEpfDAsMCwoY1tyPj4yXXwwKSsoZFsoY1t2Pj4yXXwwKSsxPj4wXXwwKTw8MXwwKXwwO2I6ZG8gaWYoKGRbKGNbdj4+Ml18MCkrMT4+MF18MCk+MCl7Y1tyPj4yXT1lWyhjW3Y+PjJdfDApKzIyPj4xXTtjW1k+PjJdPTA7d2hpbGUoMSl7aWYoKGNbWT4+Ml18MCk+PShjW3I+PjJdfDApKWJyZWFrO2NbKGNbbWErOD4+Ml18MCkrKGNbbWE+PjJdPDwyKT4+Ml09KGNbbj4+Ml18MCkrKGVbcz4+MV0mKGRbY1t4Pj4yXT4+MF08PDh8ZFsoY1t4Pj4yXXwwKSsxPj4wXSkpO2NbeD4+Ml09KGNbeD4+Ml18MCkrMjtjW21hPj4yXT0oY1ttYT4+Ml18MCkrMTtjW1k+PjJdPShjW1k+PjJdfDApKzF9Y1tIPj4yXT0wO3doaWxlKDEpe2lmKChjW0g+PjJdfDApPj0oZFsoY1t2Pj4yXXwwKSsxPj4wXXwwKSlicmVhayBiO2NbKGNbbWErOD4+Ml18MCkrKGNbbWE+PjJdPDwyKT4+Ml09Y1soY1t2Pj4yXXwwKSszMisoY1tIPj4yXTw8Mik+PjJdO2NbbWE+PjJdPShjW21hPj4yXXwwKSsxO2NbSD4+Ml09KGNbSD4+Ml18MCkrMX19d2hpbGUoMCk7Y1t5Pj4yXT0oY1tuPj4yXXwwKSsoZVsoY1t2Pj4yXXwwKSsxND4+MV18MCkrKGVbKGNbdj4+Ml18MCkrMTg+PjFdPDwxKTt3aGlsZSgxKXtpZigoY1t4Pj4yXXwwKT4+PjA+PShjW3k+PjJdfDApPj4+MClicmVhaztjWyhjW21hKzg+PjJdfDApKyhjW21hPj4yXTw8Mik+PjJdPShjW24+PjJdfDApKyhlW3M+PjFdJihkW2NbeD4+Ml0+PjBdPDw4fGRbKGNbeD4+Ml18MCkrMT4+MF0pKTtjW3g+PjJdPShjW3g+PjJdfDApKzI7Y1ttYT4+Ml09KGNbbWE+PjJdfDApKzF9Y1tvYSsoY1twYT4+Ml08PDIpPj4yXT1jW21hPj4yXTtpZighKChjW3ZhPj4yXXwwKSE9MD8xOihjW3BhPj4yXXwwKT49KChjW3lhPj4yXXwwKS0xfDApKSl7Ylt6Pj4xXT1jW0JhKyhjW3BhPj4yXTw8Mik+PjJdO2JbKGNbbWErMTI+PjJdfDApKyhjW21hPj4yXTw8MSk+PjFdPWJbej4+MV18MDtjW3c+PjJdPShjW28+PjJdfDApKyhjW3E+PjJdfDApO2NbcT4+Ml09KGNbcT4+Ml18MCkrKGVbej4+MV18MCk7VFIoY1t3Pj4yXXwwLGNbcCsoY1twYT4+Ml08PDIpPj4yXXwwLGVbej4+MV18MCl8MDtjWyhjW21hKzg+PjJdfDApKyhjW21hPj4yXTw8Mik+PjJdPShjW3c+PjJdfDApKyhlW3VhPj4xXXwwKTtiWyhjW21hKzEyPj4yXXwwKSsoY1ttYT4+Ml08PDEpPj4xXT0oZVsoY1ttYSsxMj4+Ml18MCkrKGNbbWE+PjJdPDwxKT4+MV18MCktKGVbdWE+PjFdfDApO2M6ZG8gaWYoYVsoY1t2Pj4yXXwwKSs0Pj4wXXwwKXdoaWxlKDEpe2lmKChlWyhjW21hKzEyPj4yXXwwKSsoY1ttYT4+Ml08PDEpPj4xXXwwKT49NClicmVhayBjO0E9Y1txPj4yXXwwO2NbcT4+Ml09QSsxO2FbKGNbbz4+Ml18MCkrQT4+MF09MDtBPShjW21hKzEyPj4yXXwwKSsoY1ttYT4+Ml08PDEpfDA7YltBPj4xXT0oYltBPj4xXXwwKSsxPDwxNj4+MTZ9ZWxzZXtBPWNbKGNbbWErOD4+Ml18MCkrKGNbbWE+PjJdPDwyKT4+Ml18MDt0PShjWyhjW3Y+PjJdfDApKzU2Pj4yXXwwKSs4fDA7YVtBPj4wXT1hW3Q+PjBdfDA7YVtBKzE+PjBdPWFbdCsxPj4wXXwwO2FbQSsyPj4wXT1hW3QrMj4+MF18MDthW0ErMz4+MF09YVt0KzM+PjBdfDB9d2hpbGUoMCk7Y1ttYT4+Ml09KGNbbWE+PjJdfDApKzF9Y1twYT4+Ml09KGNbcGE+PjJdfDApKzF9aWYoKGh8MCk9PTMxKXtjW0FhPj4yXT1Raig2NTQxNCl8MDticmVha31jW0NhPj4yXT0oY1soY1t6YT4+Ml18MCkrMzY+PjJdfDApLTEyKyhlW3VhPj4xXXwwKTtjW3BhPj4yXT0wO3doaWxlKDEpe2lmKChjW3BhPj4yXXwwKT49KGNbeWE+PjJdfDApKWJyZWFrO2NbdT4+Ml09Y1tsYSsoY1twYT4+Ml08PDIpPj4yXTtjW0JhKyhjW3BhPj4yXTw8Mik+PjJdPShjW0NhPj4yXXwwKS0oZVsoY1t1Pj4yXXwwKSsxNj4+MV18MCk7aWYoKGNbQmErKGNbcGE+PjJdPDwyKT4+Ml18MCk8MCl7aD01MjticmVha31jW1k+PjJdPTA7d2hpbGUoMSl7aWYoKGNbWT4+Ml18MCk+PShkWyhjW3U+PjJdfDApKzE+PjBdfDApKWJyZWFrO3o9MisoKFliW2NbKGNbdT4+Ml18MCkrNzY+PjJdJjI1NV0oY1t1Pj4yXXwwLGNbKGNbdT4+Ml18MCkrMzIrKGNbWT4+Ml08PDIpPj4yXXwwKXwwKSY2NTUzNSl8MDtBPUJhKyhjW3BhPj4yXTw8Mil8MDtjW0E+PjJdPShjW0E+PjJdfDApK3o7Y1tZPj4yXT0oY1tZPj4yXXwwKSsxfWNbbmErKGNbcGE+PjJdPDwyKT4+Ml09Y1tvYSsoY1twYT4+Ml08PDIpPj4yXTtjW3BhPj4yXT0oY1twYT4+Ml18MCkrMX1pZigoaHwwKT09NTIpe2NbQWE+PjJdPVFqKDY1NTEyKXwwO2JyZWFrfWNbSD4+Ml09Y1t5YT4+Ml07Y1twYT4+Ml09MDtkOndoaWxlKDEpe2lmKChjW3BhPj4yXXwwKT49KGNbSD4+Ml18MCkpe2g9ODM7YnJlYWt9d2hpbGUoMSl7aWYoKGNbQmErKGNbcGE+PjJdPDwyKT4+Ml18MCk8PShjW0NhPj4yXXwwKSlicmVhaztpZigoKGNbcGE+PjJdfDApKzF8MCk+PShjW0g+PjJdfDApKXtjW0g+PjJdPShjW3BhPj4yXXwwKSsyO2lmKChjW0g+PjJdfDApPjUpe2g9NjI7YnJlYWsgZH1jW0JhKygoY1tIPj4yXXwwKS0xPDwyKT4+Ml09MDtjW25hKygoY1tIPj4yXXwwKS0xPDwyKT4+Ml09Y1ttYT4+Ml19Y1tCPj4yXT0yKygoY00obWEsKGNbbmErKGNbcGE+PjJdPDwyKT4+Ml18MCktMXwwKXwwKSY2NTUzNSk7QT1CYSsoY1twYT4+Ml08PDIpfDA7Y1tBPj4yXT0oY1tBPj4yXXwwKS0oY1tCPj4yXXwwKTtkbyBpZighKGNbdmE+PjJdfDApKWlmKChjW25hKyhjW3BhPj4yXTw8Mik+PjJdfDApPChjW21hPj4yXXwwKSl7Y1tCPj4yXT0yKygoY00obWEsY1tuYSsoY1twYT4+Ml08PDIpPj4yXXwwKXwwKSY2NTUzNSk7YnJlYWt9ZWxzZXtjW0I+PjJdPTA7YnJlYWt9d2hpbGUoMCk7QT1CYSsoKGNbcGE+PjJdfDApKzE8PDIpfDA7Y1tBPj4yXT0oY1tBPj4yXXwwKSsoY1tCPj4yXXwwKTtBPW5hKyhjW3BhPj4yXTw8Mil8MDtjW0E+PjJdPShjW0E+PjJdfDApKy0xfXdoaWxlKDEpe2lmKChjW25hKyhjW3BhPj4yXTw8Mik+PjJdfDApPj0oY1ttYT4+Ml18MCkpYnJlYWs7Y1tCPj4yXT0yKygoY00obWEsY1tuYSsoY1twYT4+Ml08PDIpPj4yXXwwKXwwKSY2NTUzNSk7aWYoKChjW0JhKyhjW3BhPj4yXTw8Mik+PjJdfDApKyhjW0I+PjJdfDApfDApPihjW0NhPj4yXXwwKSlicmVhaztBPUJhKyhjW3BhPj4yXTw8Mil8MDtjW0E+PjJdPShjW0E+PjJdfDApKyhjW0I+PjJdfDApO0E9bmErKGNbcGE+PjJdPDwyKXwwO2NbQT4+Ml09KGNbQT4+Ml18MCkrMTtkbyBpZighKGNbdmE+PjJdfDApKWlmKChjW25hKyhjW3BhPj4yXTw8Mik+PjJdfDApPChjW21hPj4yXXwwKSl7Y1tCPj4yXT0yKygoY00obWEsY1tuYSsoY1twYT4+Ml08PDIpPj4yXXwwKXwwKSY2NTUzNSk7YnJlYWt9ZWxzZXtjW0I+PjJdPTA7YnJlYWt9d2hpbGUoMCk7QT1CYSsoKGNbcGE+PjJdfDApKzE8PDIpfDA7Y1tBPj4yXT0oY1tBPj4yXXwwKS0oY1tCPj4yXXwwKX1sPWNbcGE+PjJdfDA7aWYoKGNbbmErKGNbcGE+PjJdPDwyKT4+Ml18MCk8KGNbbWE+PjJdfDApKXtpZigoY1twYT4+Ml18MCk+MCloPWNbbmErKChjW3BhPj4yXXwwKS0xPDwyKT4+Ml18MDtlbHNlIGg9MDtpZigoY1tuYSsobDw8Mik+PjJdfDApPD0oaHwwKSl7aD04MTticmVha319ZWxzZSBjW0g+PjJdPWwrMTtjW3BhPj4yXT0oY1twYT4+Ml18MCkrMX1pZigoaHwwKT09NjIpe2NbQWE+PjJdPVFqKDY1NTI0KXwwO2JyZWFrfWVsc2UgaWYoKGh8MCk9PTgxKXtjW0FhPj4yXT1Raig2NTU1Nyl8MDticmVha31lbHNlIGlmKChofDApPT04Myl7Y1twYT4+Ml09KGNbSD4+Ml18MCktMTt3aGlsZSgxKXtpZigoY1twYT4+Ml18MCk8PTApYnJlYWs7Y1tQPj4yXT1jW0JhKyhjW3BhPj4yXTw8Mik+PjJdO2NbTz4+Ml09Y1tCYSsoKGNbcGE+PjJdfDApLTE8PDIpPj4yXTtjW04+PjJdPShjW25hKygoY1twYT4+Ml18MCktMTw8Mik+PjJdfDApLTE7Y1tGPj4yXT0oY1tOPj4yXXwwKSsxLShjW3ZhPj4yXXwwKTtjTShtYSxjW0Y+PjJdfDApfDA7ZG97Y00obWEsY1tOPj4yXXwwKXwwO2lmKGNbUD4+Ml18MCl7aWYoY1tDPj4yXXwwKWJyZWFrO2lmKCgoY1tQPj4yXXwwKSsoZVsoY1ttYSsxMj4+Ml18MCkrKGNbRj4+Ml08PDEpPj4xXXwwKSsyfDApPigoY1tPPj4yXXwwKS0oKGVbKGNbbWErMTI+PjJdfDApKyhjW04+PjJdPDwxKT4+MV18MCkrKChjW3BhPj4yXXwwKT09KChjW0g+PjJdfDApLTF8MCk/MDoyKSl8MCkpYnJlYWt9Y1tQPj4yXT0oY1tQPj4yXXwwKSsoKGVbKGNbbWErMTI+PjJdfDApKyhjW0Y+PjJdPDwxKT4+MV18MCkrMik7Y1tPPj4yXT0oY1tPPj4yXXwwKS0oKGVbKGNbbWErMTI+PjJdfDApKyhjW04+PjJdPDwxKT4+MV18MCkrMik7Y1tuYSsoKGNbcGE+PjJdfDApLTE8PDIpPj4yXT1jW04+PjJdO2NbTj4+Ml09KGNbTj4+Ml18MCkrLTE7Y1tGPj4yXT0oY1tGPj4yXXwwKSstMX13aGlsZSgoY1tOPj4yXXwwKT49MCk7Y1tCYSsoY1twYT4+Ml08PDIpPj4yXT1jW1A+PjJdO2NbQmErKChjW3BhPj4yXXwwKS0xPDwyKT4+Ml09Y1tPPj4yXTtpZigoY1twYT4+Ml18MCk+MSlsPWNbbmErKChjW3BhPj4yXXwwKS0yPDwyKT4+Ml18MDtlbHNlIGw9MDtpZigoY1tuYSsoKGNbcGE+PjJdfDApLTE8PDIpPj4yXXwwKTw9KGx8MCkpe2g9OTM7YnJlYWt9Y1twYT4+Ml09KGNbcGE+PjJdfDApKy0xfWlmKChofDApPT05Myl7Y1tBYT4+Ml09UWooNjU1OTkpfDA7YnJlYWt9Y1tMPj4yXT1kW2NbKGNbbGE+PjJdfDApKzU2Pj4yXT4+MF07Y1twYT4+Ml09MDt3aGlsZSgxKXtpZigoY1twYT4+Ml18MCk+PShjW0g+PjJdfDApKWJyZWFrO2lmKChjW3BhPj4yXXwwKTwoY1t5YT4+Ml18MCkpe1A9Y1tsYSsoY1twYT4+Ml08PDIpPj4yXXwwO2Nba2ErKGNbcGE+PjJdPDwyKT4+Ml09UDtjW0k+PjJdPVA7Y1tsYSsoY1twYT4+Ml08PDIpPj4yXT0wO2NbQWE+PjJdPUdnKGNbKGNbST4+Ml18MCkrNzI+PjJdfDApfDA7Y1t3YT4+Ml09KGNbd2E+PjJdfDApKzE7aWYoY1tBYT4+Ml18MClicmVhayBhfWVsc2V7Y1tBYT4+Ml09YUsoY1t6YT4+Ml18MCxJLE0sKGNbQz4+Ml18MCkhPTA/MTpjW00+PjJdfDAsMCl8MDtpZihjW0FhPj4yXXwwKWJyZWFrIGE7YkwoY1tJPj4yXXwwLGNbTD4+Ml18MCk7Y1trYSsoY1twYT4+Ml08PDIpPj4yXT1jW0k+PjJdO2Nbd2E+PjJdPShjW3dhPj4yXXwwKSsxO2Nbb2ErKGNbcGE+PjJdPDwyKT4+Ml09Y1ttYT4+Ml07aWYoKGFbKGNbemE+PjJdfDApKzE3Pj4wXXwwKSE9MD8oZUsoY1t6YT4+Ml18MCxjWyhjW0k+PjJdfDApKzg0Pj4yXXwwLDUsY1soY1toYT4+Ml18MCkrODQ+PjJdfDAsQWEpLChjW0FhPj4yXXwwKSE9MCk6MClicmVhayBhfWNbcGE+PjJdPShjW3BhPj4yXXwwKSsxfWNbcGE+PjJdPTA7ZTp3aGlsZSgxKXtpZigoY1twYT4+Ml18MCk+PShjW3dhPj4yXXwwKSlicmVhaztQPWNbKGNba2ErKGNbcGE+PjJdPDwyKT4+Ml18MCkrODQ+PjJdfDA7Y1tTKyhjW3BhPj4yXTw8Mik+PjJdPVA7Y1tFKyhjW3BhPj4yXTw8Mik+PjJdPVA7YltEKyhjW3BhPj4yXTw8MSk+PjFdPWJbKGNbKGNba2ErKGNbcGE+PjJdPDwyKT4+Ml18MCkrNzI+PjJdfDApKzI0Pj4xXXwwO2NbWT4+Ml09MDt3aGlsZSgxKXtpZigoY1tZPj4yXXwwKT49KGNbcGE+PjJdfDApKWJyZWFrO2lmKChjW1MrKGNbWT4+Ml08PDIpPj4yXXwwKT09KGNbUysoY1twYT4+Ml08PDIpPj4yXXwwKSl7aD0xMDg7YnJlYWsgZX1jW1k+PjJdPShjW1k+PjJdfDApKzF9Y1twYT4+Ml09KGNbcGE+PjJdfDApKzF9aWYoKGh8MCk9PTEwOCl7Y1tBYT4+Ml09UWooNjU2NzMpfDA7YnJlYWt9Y1twYT4+Ml09MDt3aGlsZSgxKXtpZigoY1twYT4+Ml18MCk+PShjW3dhPj4yXXwwKSlicmVhaztjW0c+PjJdPTA7Y1tZPj4yXT0xO3doaWxlKDEpe2lmKChjW1k+PjJdfDApPj0oY1t3YT4+Ml18MCkpYnJlYWs7aWYoKGNbRSsoY1tZPj4yXTw8Mik+PjJdfDApPj4+MDwoY1tFKyhjW0c+PjJdPDwyKT4+Ml18MCk+Pj4wKWNbRz4+Ml09Y1tZPj4yXTtjW1k+PjJdPShjW1k+PjJdfDApKzF9Y1tNPj4yXT1jW0UrKGNbRz4+Ml08PDIpPj4yXTtjW0UrKGNbRz4+Ml08PDIpPj4yXT0tMTtpZigoY1tHPj4yXXwwKSE9KGNbcGE+PjJdfDApKXtpZigoY1tHPj4yXXwwKT4oY1twYT4+Ml18MCkpZE0oY1soY1trYSsoY1tHPj4yXTw8Mik+PjJdfDApKzcyPj4yXXwwLChjWyhjW3phPj4yXXwwKSs0ND4+Ml18MCkrKGNbRz4+Ml18MCkrMXwwLDApO2RNKGNbKGNba2ErKGNbcGE+PjJdPDwyKT4+Ml18MCkrNzI+PjJdfDAsY1tNPj4yXXwwLGJbRCsoY1tHPj4yXTw8MSk+PjFdfDApO2NbKGNba2ErKGNbcGE+PjJdPDwyKT4+Ml18MCkrODQ+PjJdPWNbTT4+Ml19Y1twYT4+Ml09KGNbcGE+PjJdfDApKzF9ZnQoY1tLPj4yXXwwLGNbKGNba2ErKChjW3dhPj4yXXwwKS0xPDwyKT4+Ml18MCkrODQ+PjJdfDApO2lmKChjW0w+PjJdJjh8MCk9PTA/KGNbeWE+PjJdfDApIT0oY1t3YT4+Ml18MCk6MCl7Y1tKPj4yXT1jWygoY1t3YT4+Ml18MCk+KGNbeWE+PjJdfDApP2thOmxhKSsoKGNbeWE+PjJdfDApLTE8PDIpPj4yXTtQPShjWyhjW2thKygoY1t3YT4+Ml18MCktMTw8Mik+PjJdfDApKzU2Pj4yXXwwKSs4fDA7Tz0oY1soY1tKPj4yXXwwKSs1Nj4+Ml18MCkrOHwwO2FbUD4+MF09YVtPPj4wXXwwO2FbUCsxPj4wXT1hW08rMT4+MF18MDthW1ArMj4+MF09YVtPKzI+PjBdfDA7YVtQKzM+PjBdPWFbTyszPj4wXXwwfWY6ZG8gaWYoYVsoY1t6YT4+Ml18MCkrMTc+PjBdfDApe2NbYWE+PjJdPWNba2E+PjJdO2NbUj4+Ml09Y1soY1thYT4+Ml18MCkrNTY+PjJdO2NbVD4+Ml09KGVbKGNbYWE+PjJdfDApKzE4Pj4xXXwwKSsoZFsoY1thYT4+Ml18MCkrMT4+MF18MCk7Y1tmYT4+Ml09Y1soY1t6YT4+Ml18MCkrMzY+PjJdO2NbVT4+Ml09MDtjW1Y+PjJdPTA7Y1twYT4+Ml09MDt3aGlsZSgxKXtpZigoY1twYT4+Ml18MCk+PShjW21hPj4yXXwwKSlicmVhayBmO2NbXz4+Ml09Y1soY1ttYSs4Pj4yXXwwKSsoY1twYT4+Ml08PDIpPj4yXTtpZigoY1twYT4+Ml18MCk9PShjW1Q+PjJdfDApKXtQPShjW1Y+PjJdfDApKzF8MDtjW1Y+PjJdPVA7bD1jW1Y+PjJdfDA7aWYoKFB8MCk8KGNbd2E+PjJdfDApKWw9Y1trYSsobDw8Mik+PjJdfDA7ZWxzZSBsPWNbbGErKGw8PDIpPj4yXXwwO2NbY2E+PjJdPWw7Y1tUPj4yXT0oY1tUPj4yXXwwKSsoKGVbKGNbY2E+PjJdfDApKzE4Pj4xXXwwKSsoZFsoY1tjYT4+Ml18MCkrMT4+MF18MCkrKCgoY1t2YT4+Ml18MCkhPTBeMSkmMSkpO2NbUj4+Ml09Y1soY1tjYT4+Ml18MCkrNTY+PjJdfWlmKCEoKGNbcGE+PjJdfDApPT0oY1tuYSsoY1tVPj4yXTw8Mik+PjJdfDApPyhQPShjW1U+PjJdfDApKzF8MCxjW1U+PjJdPVAsY1thYT4+Ml09Y1trYSsoUDw8Mik+PjJdLChjW3ZhPj4yXXwwKT09MCk6MCkpaD0xMzY7ZG8gaWYoKGh8MCk9PTEzNil7aD0wO2lmKCgoKGNbVj4+Ml18MCk8KGNbd2E+PjJdfDApPyhjWyhjW2FhPj4yXXwwKSs4ND4+Ml18MCk9PShjW1MrKGNbVj4+Ml08PDIpPj4yXXwwKTowKT8oY1tfPj4yXXwwKT4+PjA+PShjW1I+PjJdfDApPj4+MDowKT8oY1tfPj4yXXwwKT4+PjA8KChjW1I+PjJdfDApKyhjW2ZhPj4yXXwwKXwwKT4+PjA6MClicmVhaztpZighKGJbdWE+PjFdfDApKXtPPWNbemE+PjJdfDA7UD1ncihjW18+PjJdfDApfDA7ZUsoTyxQLDUsY1soY1thYT4+Ml18MCkrODQ+PjJdfDAsQWEpfVA9KGNNKG1hLGNbcGE+PjJdfDApfDApJjY1NTM1O2lmKChQfDApPihlWyhjW2FhPj4yXXwwKSsxMj4+MV18MCkpZ0soY1thYT4+Ml18MCxjW18+PjJdfDAsQWEpO2lmKGNbQWE+PjJdfDApYnJlYWsgYX13aGlsZSgwKTtjW3BhPj4yXT0oY1twYT4+Ml18MCkrMX19d2hpbGUoMCk7Y1twYT4+Ml09MDt3aGlsZSgxKXtpZigoY1twYT4+Ml18MCk+PSgoY1t3YT4+Ml18MCktMXwwKSlicmVhaztjW2JhPj4yXT1jW2thKyhjW3BhPj4yXTw8Mik+PjJdO2NbWT4+Ml09Y1tuYSsoY1twYT4+Ml08PDIpPj4yXTtjWyQ+PjJdPWNbKGNbbWErOD4+Ml18MCkrKGNbWT4+Ml08PDIpPj4yXTtjW2VhPj4yXT0oZVsoY1ttYSsxMj4+Ml18MCkrKGNbWT4+Ml08PDEpPj4xXXwwKSsoZVt1YT4+MV18MCk7Y1tkYT4+Ml09KGNbUT4+Ml18MCkrKGNbVz4+Ml18MCk7ZG8gaWYoYVsoY1tiYT4+Ml18MCkrND4+MF18MCl7aWYoY1t2YT4+Ml18MCl7Y1tZPj4yXT0oY1tZPj4yXXwwKSstMTtVYltjWyhjW2JhPj4yXXwwKSs4MD4+Ml0mMjU1XShjW2JhPj4yXXwwLGNbKGNbbWErOD4+Ml18MCkrKGNbWT4+Ml08PDIpPj4yXXwwLFgpO2NbJD4+Ml09Y1tkYT4+Ml07ZmE9WDtjW2VhPj4yXT00KyhTSSgoY1skPj4yXXwwKSs0fDAsY1tmYT4+Ml18MCxjW2ZhKzQ+PjJdfDApfDApO2NbZGE+PjJdPTA7YnJlYWt9Y1skPj4yXT0oY1skPj4yXXwwKSstNDtpZigoZVsoY1ttYSsxMj4+Ml18MCkrKGNbWT4+Ml08PDEpPj4xXXwwKT09NCljW2VhPj4yXT0oWWJbY1soY1toYT4+Ml18MCkrNzY+PjJdJjI1NV0oY1toYT4+Ml18MCxjWyQ+PjJdfDApfDApJjY1NTM1fWVsc2V7ZmE9KGNbKGNbYmE+PjJdfDApKzU2Pj4yXXwwKSs4fDA7Y2E9Y1skPj4yXXwwO2FbZmE+PjBdPWFbY2E+PjBdfDA7YVtmYSsxPj4wXT1hW2NhKzE+PjBdfDA7YVtmYSsyPj4wXT1hW2NhKzI+PjBdfDA7YVtmYSszPj4wXT1hW2NhKzM+PjBdfDB9d2hpbGUoMCk7Y1tXPj4yXT0oY1tXPj4yXXwwKSsoY1tlYT4+Ml18MCk7WkwoY1toYT4+Ml18MCwoY1taPj4yXXwwKSsoY1twYT4+Ml18MCl8MCxjWyQ+PjJdfDAsY1tlYT4+Ml18MCxjW2RhPj4yXXwwLGNbKGNbYmE+PjJdfDApKzg0Pj4yXXwwLEFhKTtpZihjW0FhPj4yXXwwKWJyZWFrIGE7Y1twYT4+Ml09KGNbcGE+PjJdfDApKzF9Y1twYT4+Ml09MS0oY1t3YT4+Ml18MCk7d2hpbGUoMSl7aWYoKGNbcGE+PjJdfDApPj0oY1t3YT4+Ml18MCkpYnJlYWs7ZmE9Y1twYT4+Ml18MDtjW3NhPj4yXT0oY1twYT4+Ml18MCk8MD8wLWZhfDA6ZmE7ZG8gaWYoIShhW2phKyhjW3NhPj4yXXwwKT4+MF18MCkpe2lmKChjW3BhPj4yXXwwKTwwPyhjW29hKygoY1tzYT4+Ml18MCktMTw8Mik+PjJdfDApPChjW25hKygoY1tzYT4+Ml18MCktMTw8Mik+PjJdfDApOjApYnJlYWs7aWYoIShjW3NhPj4yXXwwKSl7Y1tyYT4+Ml09MDtjW3FhPj4yXT0wO2NbeGE+PjJdPWNbbmE+PjJdfWVsc2V7aWYoKGNbc2E+PjJdfDApPChjW3lhPj4yXXwwKSlsPShjW29hKygoY1tzYT4+Ml18MCktMTw8Mik+PjJdfDApKygoKGNbdmE+PjJdfDApIT0wXjEpJjEpfDA7ZWxzZSBsPWNbbWE+PjJdfDA7Y1tyYT4+Ml09bDtjW3FhPj4yXT0oY1tuYSsoKGNbc2E+PjJdfDApLTE8PDIpPj4yXXwwKSsoKChjW3ZhPj4yXXwwKSE9MF4xKSYxKTtjW3hhPj4yXT0oY1tuYSsoY1tzYT4+Ml08PDIpPj4yXXwwKS0oY1txYT4+Ml18MCl9Y1tBYT4+Ml09ZU0oY1trYSsoY1tzYT4+Ml08PDIpPj4yXXwwLGNbcmE+PjJdfDAsY1txYT4+Ml18MCxjW3hhPj4yXXwwLG1hKXwwO2lmKGNbQWE+PjJdfDApYnJlYWsgYTtmYT1qYSsoY1tzYT4+Ml18MCl8MDthW2ZhPj4wXT0oYVtmYT4+MF18MCkrMTw8MjQ+PjI0O2JbKGNba2ErKGNbc2E+PjJdPDwyKT4+Ml18MCkrMTY+PjFdPShjW0NhPj4yXXwwKS0oY1tCYSsoY1tzYT4+Ml08PDIpPj4yXXwwKX13aGlsZSgwKTtjW3BhPj4yXT0oY1twYT4+Ml18MCkrMX1pZigoKGNbaWE+PjJdfDApIT0wPyhlWyhjW2hhPj4yXXwwKSsxOD4+MV18MCk9PTA6MCk/KGRbKGNbaGE+PjJdfDApKzU+PjBdfDApPD0oZVsoY1trYT4+Ml18MCkrMTY+PjFdfDApOjApe2NbQWE+PjJdPWZNKGNba2E+PjJdfDApfDA7Z00oY1trYT4+Ml18MCxjW2hhPj4yXXwwLEFhKTthTChjW2thPj4yXXwwLEFhKX1lbHNlIGg9MTc0O2c6ZG8gaWYoKGh8MCk9PTE3ND8hKChiW3VhPj4xXXwwKSE9MD8xOihkWyhjW3phPj4yXXwwKSsxNz4+MF18MCk9PTApOjApe2NbcGE+PjJdPTA7d2hpbGUoMSl7aWYoKGNbcGE+PjJdfDApPj0oY1t3YT4+Ml18MCkpYnJlYWsgZztjW3RhPj4yXT1ncigoY1soY1trYSsoY1twYT4+Ml08PDIpPj4yXXwwKSs1Nj4+Ml18MCkrOHwwKXwwO2VLKGNbemE+PjJdfDAsY1t0YT4+Ml18MCw1LGNbKGNba2ErKGNbcGE+PjJdPDwyKT4+Ml18MCkrODQ+PjJdfDAsQWEpO2NbcGE+PjJdPShjW3BhPj4yXXwwKSsxfX13aGlsZSgwKTtjW3BhPj4yXT1jW3dhPj4yXTt3aGlsZSgxKXtpZigoY1twYT4+Ml18MCk+PShjW3lhPj4yXXwwKSlicmVhayBhO2FMKGNbbGErKGNbcGE+PjJdPDwyKT4+Ml18MCxBYSk7Y1twYT4+Ml09KGNbcGE+PjJdfDApKzF9fX13aGlsZSgwKTtGaShjW21hKzg+PjJdfDApO2NbcGE+PjJdPTA7d2hpbGUoMSl7aWYoKGNbcGE+PjJdfDApPj0oY1t5YT4+Ml18MCkpYnJlYWs7UUIoY1tsYSsoY1twYT4+Ml08PDIpPj4yXXwwKTtjW3BhPj4yXT0oY1twYT4+Ml18MCkrMX1jW3BhPj4yXT0wO3doaWxlKDEpe2lmKChjW3BhPj4yXXwwKT49KGNbd2E+PjJdfDApKWJyZWFrO1FCKGNba2ErKGNbcGE+PjJdPDwyKT4+Ml18MCk7Y1twYT4+Ml09KGNbcGE+PjJdfDApKzF9Y1tnYT4+Ml09Y1tBYT4+Ml07Q2E9Y1tnYT4+Ml18MDtpPURhO3JldHVybiBDYXwwfWZ1bmN0aW9uIGNNKGEsZCl7YT1hfDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MDtoPWk7aT1pKzE2fDA7ZT1oKzh8MDtmPWgrNHwwO2c9aDtjW2Y+PjJdPWE7Y1tnPj4yXT1kO2lmKGJbKGNbKGNbZj4+Ml18MCkrMTI+PjJdfDApKyhjW2c+PjJdPDwxKT4+MV18MCl7YltlPj4xXT1iWyhjWyhjW2Y+PjJdfDApKzEyPj4yXXwwKSsoY1tnPj4yXTw8MSk+PjFdfDA7YT1iW2U+PjFdfDA7aT1oO3JldHVybiBhfDB9ZWxzZXtiW2U+PjFdPW9NKGNbZj4+Ml18MCxjW2c+PjJdfDApfDA7YT1iW2U+PjFdfDA7aT1oO3JldHVybiBhfDB9cmV0dXJuIDB9ZnVuY3Rpb24gZE0oYSxkLGUpe2E9YXwwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTA7Zj1pO2k9aSsxNnwwO2g9Zis0fDA7Zz1mO2o9Zis4fDA7Y1toPj4yXT1hO2NbZz4+Ml09ZDtiW2o+PjFdPWU7YlsoY1toPj4yXXwwKSsyND4+MV09YltqPj4xXXwwO2hLKGNbaD4+Ml18MCxjW2c+PjJdfDApO2k9ZjtyZXR1cm59ZnVuY3Rpb24gZU0oZixnLGgsaixrKXtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDtrPWt8MDt2YXIgbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wO0Q9aTtpPWkrODB8MDtvPUQrNjh8MDtwPUQrNjR8MDtxPUQrNjB8MDtyPUQrNTZ8MDtzPUQrNTJ8MDt0PUQrNDh8MDt1PUQrNDR8MDt2PUQrNDB8MDtBPUQrMzZ8MDt6PUQrMzJ8MDtDPUQrMjh8MDtCPUQrMjR8MDt3PUQrMjB8MDttPUQrMTZ8MDtsPUQrMTJ8MDtuPUQrOHwwO3k9RCs0fDA7eD1EO2NbcD4+Ml09ZjtjW3E+PjJdPWc7Y1tyPj4yXT1oO2Nbcz4+Ml09ajtjW3Q+PjJdPWs7Y1t1Pj4yXT1jWyhjW3A+PjJdfDApKzU2Pj4yXTtjW3Y+PjJdPWRbKGNbcD4+Ml18MCkrNT4+MF07Y1tBPj4yXT0oY1soY1twPj4yXXwwKSs2ND4+Ml18MCkrKGNbcz4+Ml08PDEpO2Nbej4+Ml09ZVsoY1twPj4yXXwwKSsxOD4+MV07Y1ttPj4yXT0oY1txPj4yXXwwKSsoZVsoY1twPj4yXXwwKSsxOD4+MV18MCkrKGRbKGNbcD4+Ml18MCkrMT4+MF18MCk7Y1tsPj4yXT0oY1tyPj4yXXwwKSsoY1tzPj4yXXwwKTtpZigoY1txPj4yXXwwKTwoY1tyPj4yXXwwKSl7Y1tuPj4yXT1pTShjW3A+PjJdfDAsY1txPj4yXXwwLChjW3I+PjJdfDApLShjW3E+PjJdfDApfDAsY1t0Pj4yXXwwKXwwO1VSKGNbKGNbcD4+Ml18MCkrNjQ+PjJdfDAsKGNbKGNbcD4+Ml18MCkrNjQ+PjJdfDApKyhjW24+PjJdPDwxKXwwLGNbej4+Ml08PDF8MCl8MDtjW3o+PjJdPShjW3o+PjJdfDApLShjW24+PjJdfDApfWlmKChjW2w+PjJdfDApPChjW20+PjJdfDApKXtmPWlNKGNbcD4+Ml18MCxjW2w+PjJdfDAsKGNbbT4+Ml18MCktKGNbbD4+Ml18MCl8MCxjW3Q+PjJdfDApfDA7Y1t6Pj4yXT0oY1t6Pj4yXXwwKS1mfWNbQz4+Ml09KGNbdT4+Ml18MCkrKCgoKGRbKGNbdT4+Ml18MCkrKChjW3Y+PjJdfDApKzUpPj4wXXwwKTw8OHwoZFsoY1t1Pj4yXXwwKSsoKGNbdj4+Ml18MCkrNSkrMT4+MF18MCkpLTEmNjU1MzUpKzEpO2E6ZG8gaWYoKGNbQz4+Ml18MCk+Pj4wPj0oY1tBPj4yXXwwKT4+PjApe2lmKChjW3I+PjJdfDApPChjW3E+PjJdfDApKXtpZigoY1tzPj4yXXwwKTwoKGNbcT4+Ml18MCktKGNbcj4+Ml18MCl8MCkpaD1jW3M+PjJdfDA7ZWxzZSBoPShjW3E+PjJdfDApLShjW3I+PjJdfDApfDA7Y1t5Pj4yXT1oO2NbQj4+Ml09Y1soY1twPj4yXXwwKSs2ND4+Ml07VVIoKGNbQj4+Ml18MCkrKGNbeT4+Ml08PDEpfDAsY1tCPj4yXXwwLGNbej4+Ml08PDF8MCl8MDtpZihqTShjW3A+PjJdfDAsY1tBPj4yXXwwLEMsY1tCPj4yXXwwLGNbcj4+Ml18MCxjW3k+PjJdfDAsY1t0Pj4yXXwwKXwwKWJyZWFrO2Nbej4+Ml09KGNbej4+Ml18MCkrKGNbeT4+Ml18MCl9Y1t3Pj4yXT0wO3doaWxlKDEpe2lmKChjW3c+PjJdfDApPj0oZFsoY1twPj4yXXwwKSsxPj4wXXwwfDApKWJyZWFrO2NbeD4+Ml09KGNbcT4+Ml18MCkrKGVbKGNbcD4+Ml18MCkrMjIrKGNbdz4+Ml08PDEpPj4xXXwwKS0oY1tyPj4yXXwwKTtpZigoKGNbeD4+Ml18MCk+PTA/KGNbeD4+Ml18MCk8KGNbcz4+Ml18MCk6MCk/KGNbQj4+Ml09KGNbKGNbcD4+Ml18MCkrNjQ+PjJdfDApKyhjW3g+PjJdPDwxKSxVUigoY1tCPj4yXXwwKSsyfDAsY1tCPj4yXXwwLChjW3o+PjJdfDApLShjW3g+PjJdfDApPDwxfDApfDAsY1t6Pj4yXT0oY1t6Pj4yXXwwKSsxLChqTShjW3A+PjJdfDAsY1tBPj4yXXwwLEMsY1tCPj4yXXwwLChjW3g+PjJdfDApKyhjW3I+PjJdfDApfDAsMSxjW3Q+PjJdfDApfDApIT0wKTowKWJyZWFrIGE7Y1t3Pj4yXT0oY1t3Pj4yXXwwKSsxfWNbQj4+Ml09KGNbKGNbcD4+Ml18MCkrNjQ+PjJdfDApKyhjW3o+PjJdPDwxKTtpZighKGpNKGNbcD4+Ml18MCxjW0E+PjJdfDAsQyxjW0I+PjJdfDAsKGNbcj4+Ml18MCkrKGNbej4+Ml18MCl8MCwoY1tzPj4yXXwwKS0oY1t6Pj4yXXwwKXwwLGNbdD4+Ml18MCl8MCkpe2JbKGNbcD4+Ml18MCkrMTg+PjFdPWNbcz4+Ml07YVsoY1twPj4yXXwwKSsxPj4wXT0wO2FbKGNbdT4+Ml18MCkrKChjW3Y+PjJdfDApKzMpPj4wXT0oZVsoY1twPj4yXXwwKSsxOD4+MV18MCk+Pjg7YVsoY1t1Pj4yXXwwKSsoKGNbdj4+Ml18MCkrMykrMT4+MF09YlsoY1twPj4yXXwwKSsxOD4+MV07YVsoY1t1Pj4yXXwwKSsoKGNbdj4+Ml18MCkrNSk+PjBdPShjW0M+PjJdfDApLShjW3U+PjJdfDApPj44O2FbKGNbdT4+Ml18MCkrKChjW3Y+PjJdfDApKzUpKzE+PjBdPShjW0M+PjJdfDApLShjW3U+PjJdfDApO2Nbbz4+Ml09MDtDPWNbbz4+Ml18MDtpPUQ7cmV0dXJuIEN8MH19d2hpbGUoMCk7a00oY1t0Pj4yXXwwLGNbcj4+Ml18MCxjW3M+PjJdfDApO2Nbbz4+Ml09bE0oY1twPj4yXXwwLGNbcz4+Ml18MCwoY1soY1t0Pj4yXXwwKSs4Pj4yXXwwKSsoY1tyPj4yXTw8Mil8MCwoY1soY1t0Pj4yXXwwKSsxMj4+Ml18MCkrKGNbcj4+Ml08PDEpfDApfDA7Qz1jW28+PjJdfDA7aT1EO3JldHVybiBDfDB9ZnVuY3Rpb24gZk0oYil7Yj1ifDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MDt5PWk7aT1pKzgwfDA7Zj15KzY0fDA7Zz15KzYwfDA7bT15KzU2fDA7cj15KzUyfDA7bD15KzQ4fDA7cz15KzQ0fDA7dj15KzQwfDA7aj15KzM2fDA7aD15KzMyfDA7cD15KzI4fDA7az15KzI0fDA7dT15KzIwfDA7dD15KzE2fDA7bj15KzEyfDA7bz15Kzh8MDtxPXkrNHwwO3c9eTtjW2c+PjJdPWI7Y1t1Pj4yXT0wO2I9Y1soY1tnPj4yXXwwKSs1Nj4+Ml18MDtjW2s+PjJdPWI7Y1t0Pj4yXT1iO2NbbD4+Ml09ZFsoY1tnPj4yXXwwKSs1Pj4wXTtjW2o+PjJdPWVbKGNbZz4+Ml18MCkrMTQ+PjFdO2NbcD4+Ml09ZVsoY1tnPj4yXXwwKSsxOD4+MV07Y1t2Pj4yXT1jWyhjWyhjW2c+PjJdfDApKzUyPj4yXXwwKSszNj4+Ml07Y1toPj4yXT1jW3Y+PjJdO2Nbbj4+Ml09KGNbaj4+Ml18MCkrKGNbcD4+Ml08PDEpO2Nbbz4+Ml09KGNbdj4+Ml18MCktNDtjW20+PjJdPTA7d2hpbGUoMSl7aWYoKGNbbT4+Ml18MCk+PShjW3A+PjJdfDApKXt4PTE0O2JyZWFrfWNbcT4+Ml09KGNbaz4+Ml18MCkrKChjW2o+PjJdfDApKyhjW20+PjJdPDwxKSk7Y1tyPj4yXT0oZFtjW3E+PjJdPj4wXXwwKTw8OHwoZFsoY1txPj4yXXwwKSsxPj4wXXwwKTtpZigoY1tyPj4yXXwwKTwoY1tuPj4yXXwwKSl7eD01O2JyZWFrfWlmKChjW3I+PjJdfDApPihjW28+PjJdfDApKXt4PTU7YnJlYWt9Y1tzPj4yXT0oWWJbY1soY1tnPj4yXXwwKSs3Nj4+Ml0mMjU1XShjW2c+PjJdfDAsKGNbdD4+Ml18MCkrKGNbcj4+Ml18MCl8MCl8MCkmNjU1MzU7Y1toPj4yXT0oY1toPj4yXXwwKS0oY1tzPj4yXXwwKTtpZigoY1toPj4yXXwwKTwoY1tuPj4yXXwwKSl7eD04O2JyZWFrfWlmKCgoY1tyPj4yXXwwKSsoY1tzPj4yXXwwKXwwKT4oY1t2Pj4yXXwwKSl7eD04O2JyZWFrfWFbY1txPj4yXT4+MF09Y1toPj4yXT4+ODthWyhjW3E+PjJdfDApKzE+PjBdPWNbaD4+Ml07aWYoIShjW3U+PjJdfDApKXtpZigoY1toPj4yXXwwKSE9KGNbcj4+Ml18MCkpe2NbdT4+Ml09aE0oY1tjWyhjW2c+PjJdfDApKzUyPj4yXT4+Ml18MCl8MDtjW3c+PjJdPShkWyhjW2s+PjJdfDApKygoY1tsPj4yXXwwKSs1KT4+MF18MCk8PDh8KGRbKGNbaz4+Ml18MCkrKChjW2w+PjJdfDApKzUpKzE+PjBdfDApO1RSKChjW3U+PjJdfDApKyhjW3c+PjJdfDApfDAsKGNbaz4+Ml18MCkrKGNbdz4+Ml18MCl8MCwoY1toPj4yXXwwKSsoY1tzPj4yXXwwKS0oY1t3Pj4yXXwwKXwwKXwwO2NbdD4+Ml09Y1t1Pj4yXTt4PTEyfX1lbHNlIHg9MTI7aWYoKHh8MCk9PTEyKXt4PTA7VFIoKGNbaz4+Ml18MCkrKGNbaD4+Ml18MCl8MCwoY1t0Pj4yXXwwKSsoY1tyPj4yXXwwKXwwLGNbcz4+Ml18MCl8MH1jW20+PjJdPShjW20+PjJdfDApKzF9aWYoKHh8MCk9PTUpe2NbZj4+Ml09UWooNTk2MTcpfDA7eD1jW2Y+PjJdfDA7aT15O3JldHVybiB4fDB9ZWxzZSBpZigoeHwwKT09OCl7Y1tmPj4yXT1Raig1OTYyMyl8MDt4PWNbZj4+Ml18MDtpPXk7cmV0dXJuIHh8MH1lbHNlIGlmKCh4fDApPT0xNCl7YVsoY1trPj4yXXwwKSsoKGNbbD4+Ml18MCkrNSk+PjBdPWNbaD4+Ml0+Pjg7YVsoY1trPj4yXXwwKSsoKGNbbD4+Ml18MCkrNSkrMT4+MF09Y1toPj4yXTthWyhjW2s+PjJdfDApKygoY1tsPj4yXXwwKSsxKT4+MF09MDthWyhjW2s+PjJdfDApKygoY1tsPj4yXXwwKSsyKT4+MF09MDthWyhjW2s+PjJdfDApKygoY1tsPj4yXXwwKSs3KT4+MF09MDtWUigoY1trPj4yXXwwKSsoY1tuPj4yXXwwKXwwLDAsKGNbaD4+Ml18MCktKGNbbj4+Ml18MCl8MCl8MDtpZigoKGNbaD4+Ml18MCktKGNbbj4+Ml18MCl8MCkhPShlWyhjW2c+PjJdfDApKzE2Pj4xXXwwfDApKXtjW2Y+PjJdPVFqKDU5NjQ3KXwwO3g9Y1tmPj4yXXwwO2k9eTtyZXR1cm4geHwwfWVsc2V7Y1tmPj4yXT0wO3g9Y1tmPj4yXXwwO2k9eTtyZXR1cm4geHwwfX1yZXR1cm4gMH1mdW5jdGlvbiBnTShiLGYsZyl7Yj1ifDA7Zj1mfDA7Zz1nfDA7dmFyIGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTA7cz1pO2k9aSs0OHwwO2g9cyszNnwwO2o9cyszMnwwO2s9cysyOHwwO3E9cysyNHwwO2w9cysyMHwwO209cysxNnwwO289cysxMnwwO3A9cys4fDA7cj1zKzR8MDtuPXM7Y1toPj4yXT1iO2Nbaj4+Ml09ZjtjW2s+PjJdPWc7aWYoY1tjW2s+PjJdPj4yXXwwKXtpPXM7cmV0dXJufWNbcT4+Ml09Y1soY1toPj4yXXwwKSs1Mj4+Ml07Y1tsPj4yXT1jWyhjW2g+PjJdfDApKzU2Pj4yXTtjW20+PjJdPWNbKGNbaj4+Ml18MCkrNTY+PjJdO2Nbbz4+Ml09ZFsoY1toPj4yXXwwKSs1Pj4wXTtjW3A+PjJdPShjWyhjW2o+PjJdfDApKzg0Pj4yXXwwKT09MT8xMDA6MDtjW24+PjJdPWRbKGNbbD4+Ml18MCkrKChjW28+PjJdfDApKzUpPj4wXTw8OHxkWyhjW2w+PjJdfDApKygoY1tvPj4yXXwwKSs1KSsxPj4wXTtUUigoY1ttPj4yXXwwKSsoY1tuPj4yXXwwKXwwLChjW2w+PjJdfDApKyhjW24+PjJdfDApfDAsKGNbKGNbcT4+Ml18MCkrMzY+PjJdfDApLShjW24+PjJdfDApfDApfDA7VFIoKGNbbT4+Ml18MCkrKGNbcD4+Ml18MCl8MCwoY1tsPj4yXXwwKSsoY1tvPj4yXXwwKXwwLChlWyhjW2g+PjJdfDApKzE0Pj4xXXwwKSsoZVsoY1toPj4yXXwwKSsxOD4+MV08PDEpfDApfDA7YVtjW2o+PjJdPj4wXT0wO2Nbcj4+Ml09V3QoY1tqPj4yXXwwKXwwO2lmKGNbcj4+Ml18MCl7Y1tjW2s+PjJdPj4yXT1jW3I+PjJdO2k9cztyZXR1cm59aWYoIShhWyhjW3E+PjJdfDApKzE3Pj4wXXwwKSl7aT1zO3JldHVybn1yPWRLKGNbaj4+Ml18MCl8MDtjW2Nbaz4+Ml0+PjJdPXI7aT1zO3JldHVybn1mdW5jdGlvbiBoTShhKXthPWF8MDt2YXIgYj0wLGQ9MDtkPWk7aT1pKzE2fDA7Yj1kO2NbYj4+Ml09YTtpPWQ7cmV0dXJuIGNbKGNbYj4+Ml18MCkrMjA4Pj4yXXwwfWZ1bmN0aW9uIGlNKGEsYixmLGcpe2E9YXwwO2I9YnwwO2Y9ZnwwO2c9Z3wwO3ZhciBoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wO3c9aTtpPWkrNjR8MDtoPXcrNTZ8MDtqPXcrNTJ8MDt4PXcrNDh8MDt5PXcrNDR8MDtrPXcrNDB8MDtsPXcrMzZ8MDtxPXcrMzJ8MDtzPXcrMjh8MDtvPXcrMjR8MDttPXcrMjB8MDtuPXcrMTZ8MDtyPXcrMTJ8MDt1PXcrOHwwO3A9dys0fDA7dD13O2Nbaj4+Ml09YTtjW3g+PjJdPWI7Y1t5Pj4yXT1mO2Nbaz4+Ml09ZztjW2w+PjJdPWNbKGNbaj4+Ml18MCkrNTY+PjJdO2NbcT4+Ml09KGNbbD4+Ml18MCkrKGNbKGNbKGNbaj4+Ml18MCkrNTI+PjJdfDApKzM2Pj4yXXwwKTtjW3M+PjJdPShjW2w+PjJdfDApKygoZFsoY1tqPj4yXXwwKSs1Pj4wXXwwKSs4KyhkWyhjW2o+PjJdfDApKzY+PjBdfDApKTtjW28+PjJdPTA7Y1tuPj4yXT0oY1t4Pj4yXXwwKSsoY1t5Pj4yXXwwKTtjW3I+PjJdPTA7Y1t1Pj4yXT0wO2NbbT4+Ml09Y1t4Pj4yXTt3aGlsZSgxKXtpZigoY1ttPj4yXXwwKT49KGNbbj4+Ml18MCkpYnJlYWs7Y1twPj4yXT1jWyhjWyhjW2s+PjJdfDApKzg+PjJdfDApKyhjW20+PjJdPDwyKT4+Ml07aWYoKGNbcD4+Ml18MCk+Pj4wPj0oY1tzPj4yXXwwKT4+PjA/KGNbcD4+Ml18MCk+Pj4wPChjW3E+PjJdfDApPj4+MDowKXtjW3Q+PjJdPWVbKGNbKGNbaz4+Ml18MCkrMTI+PjJdfDApKyhjW20+PjJdPDwxKT4+MV07aWYoKGNbcj4+Ml18MCkhPSgoY1twPj4yXXwwKSsoY1t0Pj4yXXwwKXwwKSl7aWYoY1tyPj4yXXwwKW5NKGNbaj4+Ml18MCwoY1tyPj4yXXwwKS0oY1tsPj4yXXwwKSY2NTUzNSxjW3U+PjJdJjY1NTM1KXwwO2Nbcj4+Ml09Y1twPj4yXTtjW3U+PjJdPWNbdD4+Ml07aWYoKChjW3I+PjJdfDApKyhjW3Q+PjJdfDApfDApPj4+MD4oY1txPj4yXXwwKT4+PjApe3Y9OTticmVha319ZWxzZXtjW3I+PjJdPWNbcD4+Ml07Y1t1Pj4yXT0oY1t1Pj4yXXwwKSsoY1t0Pj4yXXwwKX1jW28+PjJdPShjW28+PjJdfDApKzF9Y1ttPj4yXT0oY1ttPj4yXXwwKSsxfWlmKCh2fDApPT05KXtjW2g+PjJdPTA7eT1jW2g+PjJdfDA7aT13O3JldHVybiB5fDB9aWYoY1tyPj4yXXwwKW5NKGNbaj4+Ml18MCwoY1tyPj4yXXwwKS0oY1tsPj4yXXwwKSY2NTUzNSxjW3U+PjJdJjY1NTM1KXwwO2NbaD4+Ml09Y1tvPj4yXTt5PWNbaD4+Ml18MDtpPXc7cmV0dXJuIHl8MH1mdW5jdGlvbiBqTShiLGUsZixnLGgsaixrKXtiPWJ8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDtrPWt8MDt2YXIgbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wO3k9aTtpPWkrNjR8MDtsPXkrNTZ8MDttPXkrNTJ8MDtuPXkrNDh8MDtvPXkrNDR8MDtwPXkrNDB8MDt6PXkrMzZ8MDtBPXkrMzJ8MDtxPXkrMjh8MDtzPXkrMjR8MDtyPXkrMjB8MDt1PXkrMTZ8MDt0PXkrMTJ8MDt4PXkrOHwwO3c9eSs0fDA7dj15O2NbbT4+Ml09YjtjW24+PjJdPWU7Y1tvPj4yXT1mO2NbcD4+Ml09ZztjW3o+PjJdPWg7Y1tBPj4yXT1qO2NbcT4+Ml09aztjW3I+PjJdPWNbKGNbbT4+Ml18MCkrNTY+PjJdO2NbdT4+Ml09Y1tjW28+PjJdPj4yXTtjW3Q+PjJdPShjW3o+PjJdfDApKyhjW0E+PjJdfDApO2Nbcz4+Ml09Y1t6Pj4yXTt3aGlsZSgxKXtpZigoY1tzPj4yXXwwKT49KGNbdD4+Ml18MCkpe2g9MTA7YnJlYWt9Y1t4Pj4yXT0oY00oY1txPj4yXXwwLGNbcz4+Ml18MCl8MCkmNjU1MzU7aWYoKGRbKGNbcj4+Ml18MCkrMT4+MF18MHwwKT09MD8oZFsoY1tyPj4yXXwwKSsyPj4wXXwwfDApPT0wOjApaD02O2Vsc2UgaD01O2lmKChofDApPT01PyhoPTAsQT1tTShjW20+PjJdfDAsY1t4Pj4yXXwwLHcpfDAsY1t2Pj4yXT1BLChBfDApPT0wKTowKWg9NjtpZigoaHwwKT09Nil7aWYoKChjW3U+PjJdfDApLShjW24+PjJdfDApfDApPChjW3g+PjJdfDApKXtoPTc7YnJlYWt9Y1t1Pj4yXT0oY1t1Pj4yXXwwKSsoMC0oY1t4Pj4yXXwwKSk7Y1t2Pj4yXT1jW3U+PjJdfVVSKGNbdj4+Ml18MCxjWyhjWyhjW3E+PjJdfDApKzg+PjJdfDApKyhjW3M+PjJdPDwyKT4+Ml18MCxjW3g+PjJdfDApfDA7YVtjW3A+PjJdPj4wXT0oY1t2Pj4yXXwwKS0oY1tyPj4yXXwwKT4+ODthWyhjW3A+PjJdfDApKzE+PjBdPShjW3Y+PjJdfDApLShjW3I+PjJdfDApO2NbcD4+Ml09KGNbcD4+Ml18MCkrMjtjW3M+PjJdPShjW3M+PjJdfDApKzF9aWYoKGh8MCk9PTcpe2NbbD4+Ml09MTtBPWNbbD4+Ml18MDtpPXk7cmV0dXJuIEF8MH1lbHNlIGlmKChofDApPT0xMCl7Y1tjW28+PjJdPj4yXT1jW3U+PjJdO2NbbD4+Ml09MDtBPWNbbD4+Ml18MDtpPXk7cmV0dXJuIEF8MH1yZXR1cm4gMH1mdW5jdGlvbiBrTShhLGQsZil7YT1hfDA7ZD1kfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MDtrPWk7aT1pKzE2fDA7Zz1rKzh8MDtoPWsrNHwwO2o9aztjW2c+PjJdPWE7Y1toPj4yXT1kO2Nbaj4+Ml09Zjt3aGlsZSgxKXtpZigoY1tqPj4yXXwwKTw9MClicmVhaztpZighKGVbKGNbKGNbZz4+Ml18MCkrMTI+PjJdfDApKyhjW2g+PjJdPDwxKT4+MV18MCkpe2E9WWJbY1soY1soY1tnPj4yXXwwKSs0Pj4yXXwwKSs3Nj4+Ml0mMjU1XShjWyhjW2c+PjJdfDApKzQ+PjJdfDAsY1soY1soY1tnPj4yXXwwKSs4Pj4yXXwwKSsoY1toPj4yXTw8Mik+PjJdfDApfDA7YlsoY1soY1tnPj4yXXwwKSsxMj4+Ml18MCkrKGNbaD4+Ml08PDEpPj4xXT1hfWNbaD4+Ml09KGNbaD4+Ml18MCkrMTtjW2o+PjJdPShjW2o+PjJdfDApKy0xfWk9aztyZXR1cm59ZnVuY3Rpb24gbE0oZixnLGgsail7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7dmFyIGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wO3g9aTtpPWkrNjR8MDtyPXgrNTJ8MDtzPXgrNDh8MDt0PXgrNDR8MDtrPXgrNDB8MDtsPXgrMzZ8MDt2PXgrMzJ8MDt1PXgrMjh8MDt5PXgrMjR8MDtwPXgrMjB8MDttPXgrMTZ8MDtvPXgrMTJ8MDtxPXgrOHwwO3c9eCs0fDA7bj14O2Nbcz4+Ml09ZjtjW3Q+PjJdPWc7Y1trPj4yXT1oO2NbbD4+Ml09ajtjW3Y+PjJdPWRbKGNbcz4+Ml18MCkrNT4+MF07Y1t1Pj4yXT1jWyhjW3M+PjJdfDApKzU2Pj4yXTtjW3k+PjJdPWNbKGNbKGNbcz4+Ml18MCkrNTI+PjJdfDApKzM2Pj4yXTtjW3A+PjJdPShjW3U+PjJdfDApKyhjW3k+PjJdfDApO2Nbbz4+Ml09Y1soY1tzPj4yXXwwKSs2ND4+Ml07Y1txPj4yXT1oTShjW2NbKGNbcz4+Ml18MCkrNTI+PjJdPj4yXXwwKXwwO2NbbT4+Ml09KGRbKGNbdT4+Ml18MCkrKChjW3Y+PjJdfDApKzUpPj4wXXwwKTw8OHwoZFsoY1t1Pj4yXXwwKSsoKGNbdj4+Ml18MCkrNSkrMT4+MF18MCk7VFIoKGNbcT4+Ml18MCkrKGNbbT4+Ml18MCl8MCwoY1t1Pj4yXXwwKSsoY1ttPj4yXXwwKXwwLChjW3k+PjJdfDApLShjW20+PjJdfDApfDApfDA7Y1t3Pj4yXT1jW3A+PjJdO2NbbT4+Ml09MDt3aGlsZSgxKXtpZigoY1ttPj4yXXwwKT49KGNbdD4+Ml18MCkpe2s9OTticmVha31jW24+PjJdPWNbKGNbaz4+Ml18MCkrKGNbbT4+Ml08PDIpPj4yXTtpZigoY1tuPj4yXXwwKT4+PjA+PShjW3U+PjJdfDApPj4+MD8oY1tuPj4yXXwwKT4+PjA8KGNbcD4+Ml18MCk+Pj4wOjApY1tuPj4yXT0oY1txPj4yXXwwKSsoKGNbbj4+Ml18MCktKGNbdT4+Ml18MCkpO2Nbdz4+Ml09KGNbdz4+Ml18MCkrKDAtKGVbKGNbbD4+Ml18MCkrKGNbbT4+Ml08PDEpPj4xXXwwKSk7YVtjW28+PjJdPj4wXT0oY1t3Pj4yXXwwKS0oY1t1Pj4yXXwwKT4+ODthWyhjW28+PjJdfDApKzE+PjBdPShjW3c+PjJdfDApLShjW3U+PjJdfDApO2Nbbz4+Ml09KGNbbz4+Ml18MCkrMjtpZigoY1t3Pj4yXXwwKT4+PjA8KGNbbz4+Ml18MCk+Pj4wKXtrPTc7YnJlYWt9VFIoY1t3Pj4yXXwwLGNbbj4+Ml18MCxlWyhjW2w+PjJdfDApKyhjW20+PjJdPDwxKT4+MV18MHwwKXwwO2NbbT4+Ml09KGNbbT4+Ml18MCkrMX1pZigoa3wwKT09Nyl7Y1tyPj4yXT1Raig2NDcxNil8MDt5PWNbcj4+Ml18MDtpPXg7cmV0dXJuIHl8MH1lbHNlIGlmKChrfDApPT05KXtiWyhjW3M+PjJdfDApKzE4Pj4xXT1jW3Q+PjJdO2FbKGNbcz4+Ml18MCkrMT4+MF09MDthWyhjW3U+PjJdfDApKygoY1t2Pj4yXXwwKSsxKT4+MF09MDthWyhjW3U+PjJdfDApKygoY1t2Pj4yXXwwKSsxKSsxPj4wXT0wO2FbKGNbdT4+Ml18MCkrKChjW3Y+PjJdfDApKzMpPj4wXT0oZVsoY1tzPj4yXXwwKSsxOD4+MV18MCk+Pjg7YVsoY1t1Pj4yXXwwKSsoKGNbdj4+Ml18MCkrMykrMT4+MF09YlsoY1tzPj4yXXwwKSsxOD4+MV07YVsoY1t1Pj4yXXwwKSsoKGNbdj4+Ml18MCkrNSk+PjBdPShjW3c+PjJdfDApLShjW3U+PjJdfDApPj44O2FbKGNbdT4+Ml18MCkrKChjW3Y+PjJdfDApKzUpKzE+PjBdPShjW3c+PjJdfDApLShjW3U+PjJdfDApO2FbKGNbdT4+Ml18MCkrKChjW3Y+PjJdfDApKzcpPj4wXT0wO2Nbcj4+Ml09MDt5PWNbcj4+Ml18MDtpPXg7cmV0dXJuIHl8MH1yZXR1cm4gMH1mdW5jdGlvbiBtTShiLGYsZyl7Yj1ifDA7Zj1mfDA7Zz1nfDA7dmFyIGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wO3Q9aTtpPWkrNDh8MDtqPXQrNDB8MDtrPXQrMzZ8MDtoPXQrMzJ8MDtsPXQrMjh8MDtuPXQrMjR8MDttPXQrMjB8MDtvPXQrMTZ8MDtwPXQrMTJ8MDtzPXQrOHwwO3I9dCs0fDA7cT10O2Nbaz4+Ml09YjtjW2g+PjJdPWY7Y1tsPj4yXT1nO2Nbbj4+Ml09ZFsoY1trPj4yXXwwKSs1Pj4wXTtjW20+PjJdPWNbKGNbaz4+Ml18MCkrNTY+PjJdO2Nbbz4+Ml09KGNbbj4+Ml18MCkrMTtjW3A+PjJdPShkWyhjW20+PjJdfDApKyhjW28+PjJdfDApPj4wXXwwKTw8OHwoZFsoY1ttPj4yXXwwKSsoY1tvPj4yXXwwKSsxPj4wXXwwKTtjW3I+PjJdPWNbKGNbKGNbaz4+Ml18MCkrNTI+PjJdfDApKzM2Pj4yXTt3aGlsZSgxKXtpZigoY1twPj4yXXwwKT4oKGNbcj4+Ml18MCktNHwwKSl7Zj00O2JyZWFrfWlmKChjW3A+PjJdfDApPCgoY1tvPj4yXXwwKSs0fDApKXtmPTQ7YnJlYWt9Y1txPj4yXT0oZFsoY1ttPj4yXXwwKSsoKGNbcD4+Ml18MCkrMik+PjBdfDApPDw4fChkWyhjW20+PjJdfDApKygoY1twPj4yXXwwKSsyKSsxPj4wXXwwKTtnPShjW3E+PjJdfDApLShjW2g+PjJdfDApfDA7Y1tzPj4yXT1nO2I9Y1twPj4yXXwwO2lmKChnfDApPj0wKXtmPTY7YnJlYWt9Y1tvPj4yXT1iO2NbcD4+Ml09KGRbKGNbbT4+Ml18MCkrKGNbcD4+Ml18MCk+PjBdfDApPDw4fChkWyhjW20+PjJdfDApKyhjW3A+PjJdfDApKzE+PjBdfDApO2lmKCEoY1twPj4yXXwwKSl7Zj0xNjticmVha319aWYoKGZ8MCk9PTQpe3M9UWooNTk2ODApfDA7Y1tjW2w+PjJdPj4yXT1zO2Nbaj4+Ml09MDtzPWNbaj4+Ml18MDtpPXQ7cmV0dXJuIHN8MH1lbHNlIGlmKChmfDApPT02KXtpZigoYnwwKT49KChlWyhjW2s+PjJdfDApKzE0Pj4xXXwwKSsoKGVbKGNbaz4+Ml18MCkrMTg+PjFdfDApPDwxKXwwKT8oKGNbcT4+Ml18MCkrKGNbcD4+Ml18MCl8MCk8PShjW3I+PjJdfDApOjApe2RvIGlmKChjW3M+PjJdfDApPDQpe2lmKChkWyhjW20+PjJdfDApKygoY1tuPj4yXXwwKSs3KT4+MF18MHwwKTw9NTcpe3I9KGNbbT4+Ml18MCkrKGNbbz4+Ml18MCl8MDtxPShjW20+PjJdfDApKyhjW3A+PjJdfDApfDA7YVtyPj4wXT1hW3E+PjBdfDA7YVtyKzE+PjBdPWFbcSsxPj4wXXwwO3I9KGNbbT4+Ml18MCkrKChjW24+PjJdfDApKzcpfDA7YVtyPj4wXT0oZFtyPj4wXXwwKSsoY1tzPj4yXSYyNTUpO2JyZWFrfWNbaj4+Ml09MDtzPWNbaj4+Ml18MDtpPXQ7cmV0dXJuIHN8MH1lbHNle2FbKGNbbT4+Ml18MCkrKChjW3A+PjJdfDApKzIpPj4wXT1jW3M+PjJdPj44O2FbKGNbbT4+Ml18MCkrKChjW3A+PjJdfDApKzIpKzE+PjBdPWNbcz4+Ml19d2hpbGUoMCk7Y1tqPj4yXT0oY1ttPj4yXXwwKSsoKGNbcD4+Ml18MCkrKGNbcz4+Ml18MCkpO3M9Y1tqPj4yXXwwO2k9dDtyZXR1cm4gc3wwfXM9UWooNTk2OTEpfDA7Y1tjW2w+PjJdPj4yXT1zO2Nbaj4+Ml09MDtzPWNbaj4+Ml18MDtpPXQ7cmV0dXJuIHN8MH1lbHNlIGlmKChmfDApPT0xNil7Y1tqPj4yXT0wO3M9Y1tqPj4yXXwwO2k9dDtyZXR1cm4gc3wwfXJldHVybiAwfWZ1bmN0aW9uIG5NKGYsZyxoKXtmPWZ8MDtnPWd8MDtoPWh8MDt2YXIgaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wO3k9aTtpPWkrNDh8MDtqPXkrMjB8MDtrPXkrMTZ8MDtsPXkrMzJ8MDttPXkrMzB8MDt1PXkrMjh8MDtyPXkrMjZ8MDtwPXkrMzV8MDt3PXkrMzR8MDt0PXkrMjR8MDtzPXkrMTJ8MDtxPXkrOHwwO289eSs0fDA7dj15O2Nbaz4+Ml09ZjtiW2w+PjFdPWc7YlttPj4xXT1oO2Fbdz4+MF09MDtiW3Q+PjFdPWJbbT4+MV18MDtjW3M+PjJdPShjWyhjWyhjW2s+PjJdfDApKzUyPj4yXXwwKSszNj4+Ml18MCktNDtjW3E+PjJdPShlW2w+PjFdfDApKyhlW20+PjFdfDApO2Nbbz4+Ml09Y1soY1trPj4yXXwwKSs1Nj4+Ml07aWYoKGVbKGNbKGNbaz4+Ml18MCkrNTI+PjJdfDApKzIyPj4xXXwwKSY0KVZSKChjW28+PjJdfDApKyhlW2w+PjFdfDApfDAsMCxlW20+PjFdfDB8MCl8MDthW3A+PjBdPWFbKGNbaz4+Ml18MCkrNT4+MF18MDtiW3U+PjFdPShkW3A+PjBdfDApKzE7aWYoKGRbKGNbbz4+Ml18MCkrKChlW3U+PjFdfDApKzEpPj4wXXwwfDApPT0wPyhkWyhjW28+PjJdfDApKyhlW3U+PjFdfDApPj4wXXwwfDApPT0wOjApYltyPj4xXT0wO2Vsc2UgeD02O2RvIGlmKCh4fDApPT02KXt3aGlsZSgxKXt4PTA7Zj0oKGRbKGNbbz4+Ml18MCkrKGVbdT4+MV18MCk+PjBdfDApPDw4fChkWyhjW28+PjJdfDApKyhlW3U+PjFdfDApKzE+PjBdfDApKSY2NTUzNTtiW3I+PjFdPWY7aWYoKGYmNjU1MzV8MCk+PShlW2w+PjFdfDB8MCkpYnJlYWs7bj1iW3I+PjFdfDA7aWYoKGVbcj4+MV18MHwwKTwoKGVbdT4+MV18MCkrNHwwKSl7eD04O2JyZWFrfWJbdT4+MV09bjt4PTZ9aWYoKHh8MCk9PTg/KG4mNjU1MzV8MCkhPTA6MCl7Y1tqPj4yXT1Raig1OTg1NCl8MDt4PWNbaj4+Ml18MDtpPXk7cmV0dXJuIHh8MH1pZigoZVtyPj4xXXwwKT4+PjA+KGNbcz4+Ml18MCk+Pj4wKXtjW2o+PjJdPVFqKDU5ODU4KXwwO3g9Y1tqPj4yXXwwO2k9eTtyZXR1cm4geHwwfWRvIGlmKChlW3I+PjFdfDB8MCkhPTA/KChjW3E+PjJdfDApKzN8MCk+Pj4wPj0oZVtyPj4xXXwwKT4+PjA6MCl7YVt3Pj4wXT0oZVtyPj4xXXwwKS0oY1txPj4yXXwwKTtpZigoY1txPj4yXXwwKT4+PjA+KGVbcj4+MV18MCk+Pj4wKXtjW2o+PjJdPVFqKDU5ODY5KXwwO3g9Y1tqPj4yXXwwO2k9eTtyZXR1cm4geHwwfWNbcT4+Ml09KGVbcj4+MV18MCkrKChkWyhjW28+PjJdfDApKygoZVtyPj4xXXwwKSsyKT4+MF18MCk8PDh8KGRbKGNbbz4+Ml18MCkrKChlW3I+PjFdfDApKzIpKzE+PjBdfDApKTtpZigoY1txPj4yXXwwKT4+PjA8PShjWyhjWyhjW2s+PjJdfDApKzUyPj4yXXwwKSszNj4+Ml18MCk+Pj4wKXtiW20+PjFdPShjW3E+PjJdfDApLShlW2w+PjFdfDApO2Jbcj4+MV09KGRbKGNbbz4+Ml18MCkrKGVbcj4+MV18MCk+PjBdfDApPDw4fChkWyhjW28+PjJdfDApKyhlW3I+PjFdfDApKzE+PjBdfDApO2JyZWFrfWNbaj4+Ml09UWooNTk4NzEpfDA7eD1jW2o+PjJdfDA7aT15O3JldHVybiB4fDB9d2hpbGUoMCk7ZG8gaWYoKGVbdT4+MV18MHwwKT4oKGRbcD4+MF18MCkrMXwwKT8oY1t2Pj4yXT0oZVt1Pj4xXXwwKSsoKGRbKGNbbz4+Ml18MCkrKChlW3U+PjFdfDApKzIpPj4wXXwwKTw8OHwoZFsoY1tvPj4yXXwwKSsoKGVbdT4+MV18MCkrMikrMT4+MF18MCkpLCgoY1t2Pj4yXXwwKSszfDApPj0oZVtsPj4xXXwwfDApKTowKXtpZigoY1t2Pj4yXXwwKTw9KGVbbD4+MV18MHwwKSl7YVt3Pj4wXT0oZFt3Pj4wXXwwKSsoKGVbbD4+MV18MCktKGNbdj4+Ml18MCkpO2JbbT4+MV09KGNbcT4+Ml18MCktKGVbdT4+MV18MCk7YltsPj4xXT1iW3U+PjFdfDA7YnJlYWt9Y1tqPj4yXT1Raig1OTg4Myl8MDt4PWNbaj4+Ml18MDtpPXk7cmV0dXJuIHh8MH13aGlsZSgwKTtpZigoZFt3Pj4wXXwwfDApPD0oZFsoY1tvPj4yXXwwKSsoKGRbcD4+MF18MCkrNyk+PjBdfDB8MCkpe3g9KGNbbz4+Ml18MCkrKChkW3A+PjBdfDApKzcpfDA7YVt4Pj4wXT0oZFt4Pj4wXXwwKS0oZFt3Pj4wXXwwKTticmVha31jW2o+PjJdPVFqKDU5ODg5KXwwO3g9Y1tqPj4yXXwwO2k9eTtyZXR1cm4geHwwfXdoaWxlKDApO2RvIGlmKChlW2w+PjFdfDB8MCk9PSgoZFsoY1tvPj4yXXwwKSsoKGRbcD4+MF18MCkrNSk+PjBdfDApPDw4fChkWyhjW28+PjJdfDApKygoZFtwPj4wXXwwKSs1KSsxPj4wXXwwKXwwKSl7aWYoKGVbdT4+MV18MHwwKT09KChkW3A+PjBdfDApKzF8MCkpe2FbKGNbbz4+Ml18MCkrKChkW3A+PjBdfDApKzEpPj4wXT0oZVtyPj4xXXwwKT4+ODthWyhjW28+PjJdfDApKygoZFtwPj4wXXwwKSsxKSsxPj4wXT1iW3I+PjFdO2FbKGNbbz4+Ml18MCkrKChkW3A+PjBdfDApKzUpPj4wXT0oY1txPj4yXXwwKT4+Pjg7YVsoY1tvPj4yXXwwKSsoKGRbcD4+MF18MCkrNSkrMT4+MF09Y1txPj4yXTticmVha31jW2o+PjJdPVFqKDU5ODk2KXwwO3g9Y1tqPj4yXXwwO2k9eTtyZXR1cm4geHwwfWVsc2V7YVsoY1tvPj4yXXwwKSsoZVt1Pj4xXXwwKT4+MF09KGVbbD4+MV18MCk+Pjg7YVsoY1tvPj4yXXwwKSsoZVt1Pj4xXXwwKSsxPj4wXT1iW2w+PjFdO2FbKGNbbz4+Ml18MCkrKGVbbD4+MV18MCk+PjBdPShlW3I+PjFdfDApPj44O2FbKGNbbz4+Ml18MCkrKGVbbD4+MV18MCkrMT4+MF09YltyPj4xXTthWyhjW28+PjJdfDApKygoZVtsPj4xXXwwKSsyKT4+MF09KGVbbT4+MV18MCk+Pjg7YVsoY1tvPj4yXXwwKSsoKGVbbD4+MV18MCkrMikrMT4+MF09YlttPj4xXX13aGlsZSgwKTt4PShjW2s+PjJdfDApKzE2fDA7Ylt4Pj4xXT0oZVt4Pj4xXXwwKSsoZVt0Pj4xXXwwKTtjW2o+PjJdPTA7eD1jW2o+PjJdfDA7aT15O3JldHVybiB4fDB9ZnVuY3Rpb24gb00oYSxkKXthPWF8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTA7Zz1pO2k9aSsxNnwwO2Y9Zys0fDA7ZT1nO2NbZj4+Ml09YTtjW2U+PjJdPWQ7YT1ZYltjWyhjWyhjW2Y+PjJdfDApKzQ+PjJdfDApKzc2Pj4yXSYyNTVdKGNbKGNbZj4+Ml18MCkrND4+Ml18MCxjWyhjWyhjW2Y+PjJdfDApKzg+PjJdfDApKyhjW2U+PjJdPDwyKT4+Ml18MCl8MDtiWyhjWyhjW2Y+PjJdfDApKzEyPj4yXXwwKSsoY1tlPj4yXTw8MSk+PjFdPWE7aT1nO3JldHVybiBiWyhjWyhjW2Y+PjJdfDApKzEyPj4yXXwwKSsoY1tlPj4yXTw8MSk+PjFdfDB9ZnVuY3Rpb24gcE0oYixmLGcpe2I9YnwwO2Y9ZnwwO2c9Z3wwO3ZhciBoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MDt0PWk7aT1pKzQ4fDA7aD10KzM2fDA7aj10KzMyfDA7az10KzI4fDA7bD10KzI0fDA7bz10KzIwfDA7bT10KzE2fDA7cj10KzEyfDA7cT10Kzh8MDtuPXQrNHwwO3A9dDtjW2o+PjJdPWI7Y1trPj4yXT1mO2NbbD4+Ml09ZztjW28+PjJdPWRbKGNbaj4+Ml18MCkrNT4+MF07Y1ttPj4yXT1jWyhjW2o+PjJdfDApKzU2Pj4yXTtjW3E+PjJdPTA7Y1tuPj4yXT0oZVsoY1tqPj4yXXwwKSsxND4+MV18MCkrKChlWyhjW2o+PjJdfDApKzE4Pj4xXXwwKTw8MSk7Y1tyPj4yXT0oZFsoY1ttPj4yXXwwKSsoKGNbbz4+Ml18MCkrNSk+PjBdfDApPDw4fChkWyhjW20+PjJdfDApKygoY1tvPj4yXXwwKSs1KSsxPj4wXXwwKTtkbyBpZigoY1tuPj4yXXwwKT4oY1tyPj4yXXwwKSl7aWYoKGNbcj4+Ml18MCk9PTA/KGNbKGNbKGNbaj4+Ml18MCkrNTI+PjJdfDApKzM2Pj4yXXwwKT09NjU1MzY6MCl7Y1tyPj4yXT02NTUzNjticmVha31jW2g+PjJdPVFqKDU5NzU4KXwwO3M9Y1toPj4yXXwwO2k9dDtyZXR1cm4gc3wwfXdoaWxlKDApO2lmKCEoKGRbKGNbbT4+Ml18MCkrKChjW28+PjJdfDApKzIpPj4wXXwwfDApPT0wPyhkWyhjW20+PjJdfDApKygoY1tvPj4yXXwwKSsxKT4+MF18MHwwKT09MDowKSlzPTg7aWYoKHN8MCk9PTg/KChjW24+PjJdfDApKzJ8MCk8PShjW3I+PjJdfDApOjApe2NbcD4+Ml09bU0oY1tqPj4yXXwwLGNbaz4+Ml18MCxxKXwwO2lmKGNbcD4+Ml18MCl7Y1tjW2w+PjJdPj4yXT0oY1twPj4yXXwwKS0oY1ttPj4yXXwwKTtjW2g+PjJdPTA7cz1jW2g+PjJdfDA7aT10O3JldHVybiBzfDB9aWYoY1txPj4yXXwwKXtjW2g+PjJdPWNbcT4+Ml07cz1jW2g+PjJdfDA7aT10O3JldHVybiBzfDB9fWRvIGlmKCgoY1tuPj4yXXwwKSsyKyhjW2s+PjJdfDApfDApPihjW3I+PjJdfDApKXtjW3E+PjJdPWZNKGNbaj4+Ml18MCl8MDtpZighKGNbcT4+Ml18MCkpe2Nbcj4+Ml09KCgoZFsoY1ttPj4yXXwwKSsoKGNbbz4+Ml18MCkrNSk+PjBdfDApPDw4fChkWyhjW20+PjJdfDApKygoY1tvPj4yXXwwKSs1KSsxPj4wXXwwKSktMSY2NTUzNSkrMTticmVha31jW2g+PjJdPWNbcT4+Ml07cz1jW2g+PjJdfDA7aT10O3JldHVybiBzfDB9d2hpbGUoMCk7Y1tyPj4yXT0oY1tyPj4yXXwwKS0oY1trPj4yXXwwKTthWyhjW20+PjJdfDApKygoY1tvPj4yXXwwKSs1KT4+MF09Y1tyPj4yXT4+ODthWyhjW20+PjJdfDApKygoY1tvPj4yXXwwKSs1KSsxPj4wXT1jW3I+PjJdO2NbY1tsPj4yXT4+Ml09Y1tyPj4yXTtjW2g+PjJdPTA7cz1jW2g+PjJdfDA7aT10O3JldHVybiBzfDB9ZnVuY3Rpb24gcU0oYixmLGcsaCl7Yj1ifDA7Zj1mfDA7Zz1nfDA7aD1ofDA7dmFyIGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wLEU9MDtFPWk7aT1pKzk2fDA7Qj1FKzc2fDA7az1FKzcyfDA7bD1FKzY4fDA7aj1FKzY0fDA7bT1FKzYwfDA7cj1FKzU2fDA7eD1FKzUyfDA7cz1FKzQ4fDA7cD1FKzQ0fDA7RD1FKzQwfDA7QT1FKzM2fDA7dT1FKzMyfDA7Qz1FKzI4fDA7dz1FKzI0fDA7dj1FKzIwfDA7dD1FKzE2fDA7eT1FKzEyfDA7cT1FKzh8MDtvPUUrNHwwO3o9RTtuPUUrODB8MDtjW2s+PjJdPWI7Y1tsPj4yXT1mO2Nbaj4+Ml09ZztjW20+PjJdPWg7Y1t1Pj4yXT0wO2NbQz4+Ml09MDtjW3Q+PjJdPWNbKGNbaz4+Ml18MCkrNTI+PjJdO2NbeT4+Ml09MDtjW3E+PjJdPWRbKGNbaz4+Ml18MCkrNj4+MF07Zj1jW2o+PjJdfDA7aWYoYVsoY1trPj4yXXwwKSsyPj4wXXwwKXtjW3I+PjJdPShjW2YrMjA+PjJdfDApKyhjWyhjW2o+PjJdfDApKzI0Pj4yXXwwKTtjW3g+PjJdPWNbKGNbaj4+Ml18MCkrMTY+PjJdO2Nbcz4+Ml09Y1soY1tqPj4yXXwwKSsyMD4+Ml07aWYoKGNbcj4+Ml18MCk+Pj4wPDEyOCl7YVsoY1tsPj4yXXwwKSsoY1txPj4yXXwwKT4+MF09Y1tyPj4yXTtmPTF9ZWxzZXtmPWNbcj4+Ml18MDtmPVNJKChjW2w+PjJdfDApKyhjW3E+PjJdfDApfDAsZiwoKGZ8MCk8MCk8PDMxPj4zMSl8MH1jW3E+PjJdPShjW3E+PjJdfDApKyhmJjI1NSk7aj0oY1tqPj4yXXwwKSs4fDA7aj1TSSgoY1tsPj4yXXwwKSsoY1txPj4yXXwwKXwwLGNbaj4+Ml18MCxjW2orND4+Ml18MCl8MDtjW3E+PjJdPShjW3E+PjJdfDApK2p9ZWxzZXtoPWNbZis4Pj4yXXwwO2Nbcj4+Ml09aDtjW3M+PjJdPWg7Y1t4Pj4yXT1jW2Nbaj4+Ml0+PjJdO2lmKChjW3I+PjJdfDApPj4+MDwxMjgpe2FbKGNbbD4+Ml18MCkrKGNbcT4+Ml18MCk+PjBdPWNbcj4+Ml07Zj0xfWVsc2V7Zj1jW3I+PjJdfDA7Zj1TSSgoY1tsPj4yXXwwKSsoY1txPj4yXXwwKXwwLGYsKChmfDApPDApPDwzMT4+MzEpfDB9Y1txPj4yXT0oY1txPj4yXXwwKSsoZiYyNTUpfWlmKChjW3I+PjJdfDApPD0oZVsoY1trPj4yXXwwKSsxMD4+MV18MCkpe289KGNbcT4+Ml18MCkrKGNbcj4+Ml18MCl8MDtjW3A+PjJdPW87Y1twPj4yXT0oY1twPj4yXXwwKTw0PzQ6bztjW2NbbT4+Ml0+PjJdPWNbcD4+Ml07Y1tBPj4yXT1jW3I+PjJdO2Nbdz4+Ml09Y1tsPj4yXX1lbHNle2Nbbz4+Ml09ZVsoY1trPj4yXXwwKSsxMj4+MV07Y1twPj4yXT0oY1tvPj4yXXwwKSsoKCgoY1tyPj4yXXwwKS0oY1tvPj4yXXwwKXwwKT4+PjApJSgoKGNbKGNbKGNbaz4+Ml18MCkrNTI+PjJdfDApKzM2Pj4yXXwwKS00fDApPj4+MCl8MCk7aWYoKGNbcD4+Ml18MCk+KGVbKGNbaz4+Ml18MCkrMTA+PjFdfDApKWNbcD4+Ml09Y1tvPj4yXTtjW0E+PjJdPWNbcD4+Ml07Y1tjW20+PjJdPj4yXT0oY1twPj4yXXwwKSsoY1txPj4yXXwwKSs0O2Nbdz4+Ml09KGNbbD4+Ml18MCkrKChjW3E+PjJdfDApKyhjW3A+PjJdfDApKX1jW3Y+PjJdPShjW2w+PjJdfDApKyhjW3E+PjJdfDApO3doaWxlKDEpe2lmKChjW3I+PjJdfDApPD0wKXtmPTM1O2JyZWFrfWlmKCEoY1tBPj4yXXwwKSl7Y1t6Pj4yXT1jW3k+PjJdO2lmKGFbKGNbdD4+Ml18MCkrMTc+PjBdfDApd2hpbGUoMSl7Y1t5Pj4yXT0oY1t5Pj4yXXwwKSsxO3E9VkYoY1t0Pj4yXXwwLGNbeT4+Ml18MCl8MDtpZigocXwwKT09KGNbeT4+Ml18MCkpY29udGludWU7aWYoKGNbeT4+Ml18MCkhPSgoKChjWzM4NF18MCk+Pj4wKS8oKGNbKGNbdD4+Ml18MCkrMzI+PjJdfDApPj4+MCl8MCkrMXwwKSlicmVha31jW0Q+PjJdPWFLKGNbdD4+Ml18MCx1LHksY1t5Pj4yXXwwLDApfDA7aWYoKChjW0Q+PjJdfDApPT0wPyhkWyhjW3Q+PjJdfDApKzE3Pj4wXXwwKSE9MDowKT8oYVtuPj4wXT0oY1t6Pj4yXXwwKSE9MD80OjMsZUsoY1t0Pj4yXXwwLGNbeT4+Ml18MCxhW24+PjBdfDAsY1t6Pj4yXXwwLEQpLChjW0Q+PjJdfDApIT0wKTowKVFCKGNbdT4+Ml18MCk7aWYoY1tEPj4yXXwwKXtmPTI1O2JyZWFrfWZ0KGNbdz4+Ml18MCxjW3k+PjJdfDApO1FCKGNbQz4+Ml18MCk7Y1tDPj4yXT1jW3U+PjJdO2Nbdz4+Ml09Y1soY1t1Pj4yXXwwKSs1Nj4+Ml07ZnQoY1t3Pj4yXXwwLDApO2Nbdj4+Ml09KGNbKGNbdT4+Ml18MCkrNTY+PjJdfDApKzQ7Y1tBPj4yXT0oY1soY1t0Pj4yXXwwKSszNj4+Ml18MCktNH1jW3A+PjJdPWNbcj4+Ml07aWYoKGNbcD4+Ml18MCk+KGNbQT4+Ml18MCkpY1twPj4yXT1jW0E+PjJdO2lmKChjW3M+PjJdfDApPjApe2lmKChjW3A+PjJdfDApPihjW3M+PjJdfDApKWNbcD4+Ml09Y1tzPj4yXTtUUihjW3Y+PjJdfDAsY1t4Pj4yXXwwLGNbcD4+Ml18MCl8MH1lbHNlIFZSKGNbdj4+Ml18MCwwLGNbcD4+Ml18MCl8MDtjW3I+PjJdPShjW3I+PjJdfDApLShjW3A+PjJdfDApO2Nbdj4+Ml09KGNbdj4+Ml18MCkrKGNbcD4+Ml18MCk7Y1t4Pj4yXT0oY1t4Pj4yXXwwKSsoY1twPj4yXXwwKTtjW3M+PjJdPShjW3M+PjJdfDApLShjW3A+PjJdfDApO2NbQT4+Ml09KGNbQT4+Ml18MCktKGNbcD4+Ml18MCl9aWYoKGZ8MCk9PTI1KXtRQihjW0M+PjJdfDApO2NbQj4+Ml09Y1tEPj4yXTtEPWNbQj4+Ml18MDtpPUU7cmV0dXJuIER8MH1lbHNlIGlmKChmfDApPT0zNSl7UUIoY1tDPj4yXXwwKTtjW0I+PjJdPTA7RD1jW0I+PjJdfDA7aT1FO3JldHVybiBEfDB9cmV0dXJuIDB9ZnVuY3Rpb24gck0oYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wO2c9aTtpPWkrMTZ8MDtkPWcrOHwwO2U9Zys0fDA7Zj1nO2NbZD4+Ml09YTtjW2U+PjJdPWI7Y1tmPj4yXT1jWyhjW2U+PjJdfDApKzE2Pj4yXTtpZighKGNbZj4+Ml18MCkpe2k9ZztyZXR1cm59eEooY1tkPj4yXXwwLGNbZj4+Ml18MCk7S2QoY1soY1tmPj4yXXwwKSszNis0Pj4yXXwwKTtUZihjW2Q+PjJdfDAsY1tmPj4yXXwwKTtjWyhjW2U+PjJdfDApKzE2Pj4yXT0wO2k9ZztyZXR1cm59ZnVuY3Rpb24gc00oYixlLGYpe2I9YnwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wO3U9aTtpPWkrNjR8MDtnPXUrNDR8MDtoPXUrNDB8MDtqPXUrMzZ8MDtrPXUrMzJ8MDtuPXUrMjh8MDtwPXUrMjR8MDtyPXUrMjB8MDt0PXUrMTZ8MDtzPXUrMTJ8MDtxPXUrOHwwO289dSs0fDA7bD11KzQ4fDA7bT11O2NbaD4+Ml09YjtjW2o+PjJdPWU7Y1trPj4yXT1mO2Nbbj4+Ml09Y1soY1toPj4yXXwwKSs0Pj4yXTtmPWNbbj4+Ml18MDtpZihhWyhjW24+PjJdfDApKzE3Pj4wXXwwKXtfSihmKTtyZyhjW2g+PjJdfDAsNCxyKTtjW3I+PjJdPShjW3I+PjJdfDApKzE7d2hpbGUoMSl7ZT1jW3I+PjJdfDA7aWYoKGV8MCkhPShWRihjW24+PjJdfDAsY1tyPj4yXXwwKXwwKT8oY1tyPj4yXXwwKSE9KCgoKGNbMzg0XXwwKT4+PjApLygoY1soY1tuPj4yXXwwKSszMj4+Ml18MCk+Pj4wKXwwKSsxfDApOjApYnJlYWs7Y1tyPj4yXT0oY1tyPj4yXXwwKSsxfWNbdD4+Ml09YUsoY1tuPj4yXXwwLG8scSxjW3I+PjJdfDAsMSl8MDtpZihjW3Q+PjJdfDApe2NbZz4+Ml09Y1t0Pj4yXTt0PWNbZz4+Ml18MDtpPXU7cmV0dXJuIHR8MH1pZigoY1txPj4yXXwwKSE9KGNbcj4+Ml18MCkpe2FbbD4+MF09MDtjW20+PjJdPTA7Y1t0Pj4yXT1YSChjW24+PjJdfDAsMCwwKXwwO1FCKGNbbz4+Ml18MCk7aWYoY1t0Pj4yXXwwKXtjW2c+PjJdPWNbdD4+Ml07dD1jW2c+PjJdfDA7aT11O3JldHVybiB0fDB9Y1t0Pj4yXT1YRihjW24+PjJdfDAsY1tyPj4yXXwwLHAsMCl8MDtpZihjW3Q+PjJdfDApe2NbZz4+Ml09Y1t0Pj4yXTt0PWNbZz4+Ml18MDtpPXU7cmV0dXJuIHR8MH1jW3Q+PjJdPVdGKGNbbj4+Ml18MCxjW3I+PjJdfDAsbCxtKXwwO2lmKCEoKGRbbD4+MF18MCkhPTE/KGRbbD4+MF18MCkhPTI6MCkpY1t0Pj4yXT1Raig2NjU5OCl8MDtpZihjW3Q+PjJdfDApe1FCKGNbcD4+Ml18MCk7Y1tnPj4yXT1jW3Q+PjJdO3Q9Y1tnPj4yXXwwO2k9dTtyZXR1cm4gdHwwfWNbdD4+Ml09YksoY1tuPj4yXXwwLGNbcD4+Ml18MCxhW2w+PjBdfDAsY1ttPj4yXXwwLGNbcT4+Ml18MCwwKXwwO1FCKGNbcD4+Ml18MCk7aWYoY1t0Pj4yXXwwKXtjW2c+PjJdPWNbdD4+Ml07dD1jW2c+PjJdfDA7aT11O3JldHVybiB0fDB9Y1t0Pj4yXT1YRihjW24+PjJdfDAsY1tyPj4yXXwwLHAsMCl8MDtpZihjW3Q+PjJdfDApe2NbZz4+Ml09Y1t0Pj4yXTt0PWNbZz4+Ml18MDtpPXU7cmV0dXJuIHR8MH1jW3Q+PjJdPUdnKGNbKGNbcD4+Ml18MCkrNzI+PjJdfDApfDA7aWYoY1t0Pj4yXXwwKXtRQihjW3A+PjJdfDApO2NbZz4+Ml09Y1t0Pj4yXTt0PWNbZz4+Ml18MDtpPXU7cmV0dXJuIHR8MH19ZWxzZSBjW3A+PjJdPWNbbz4+Ml07ZUsoY1tuPj4yXXwwLGNbcj4+Ml18MCwxLDAsdCk7aWYoY1t0Pj4yXXwwKXtRQihjW3A+PjJdfDApO2NbZz4+Ml09Y1t0Pj4yXTt0PWNbZz4+Ml18MDtpPXU7cmV0dXJuIHR8MH1jW3Q+PjJdPUJnKGNbaD4+Ml18MCw0LGNbcj4+Ml18MCl8MDtpZihjW3Q+PjJdfDApe1FCKGNbcD4+Ml18MCk7Y1tnPj4yXT1jW3Q+PjJdO3Q9Y1tnPj4yXXwwO2k9dTtyZXR1cm4gdHwwfX1lbHNle2NbdD4+Ml09YUsoZixwLHIsMSwwKXwwO2lmKGNbdD4+Ml18MCl7Y1tnPj4yXT1jW3Q+PjJdO3Q9Y1tnPj4yXXwwO2k9dTtyZXR1cm4gdHwwfX1pZihjW2s+PjJdJjEpY1tzPj4yXT0xMztlbHNlIGNbcz4+Ml09MTA7YkwoY1twPj4yXXwwLGNbcz4+Ml18MCk7eWcoY1soY1twPj4yXXwwKSs3Mj4+Ml18MCk7Y1tjW2o+PjJdPj4yXT1jW3I+PjJdO2NbZz4+Ml09MDt0PWNbZz4+Ml18MDtpPXU7cmV0dXJuIHR8MH1mdW5jdGlvbiB0TShiLGUsZixnLGgpe2I9YnwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO3ZhciBqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MDtyPWk7aT1pKzMyfDA7aj1yKzI4fDA7az1yKzI0fDA7bD1yKzIwfDA7bT1yKzE2fDA7bj1yKzEyfDA7bz1yKzh8MDtwPXIrNHwwO3E9cjtjW2s+PjJdPWI7Y1tsPj4yXT1lO2NbbT4+Ml09ZjtjW24+PjJdPWc7Y1tvPj4yXT1oO2NbcD4+Ml09Y1soY1trPj4yXXwwKSs0Pj4yXTtpZigoY1ttPj4yXXwwKSE9MD8odU0oY1twPj4yXXwwKSwoY1soY1twPj4yXXwwKSs4MD4+Ml18MCk9PTApOjApe2Nbaj4+Ml09NztmPWNbaj4+Ml18MDtpPXI7cmV0dXJuIGZ8MH1pZigoY1tsPj4yXXwwKT09MT8oSkYoY1twPj4yXXwwKXwwKT09MDowKWNbbD4+Ml09MDtjWyhjW28+PjJdfDApKzUyPj4yXT1jW2w+PjJdO2FbKGNbbz4+Ml18MCkrNjg+PjBdPS0xO2NbKGNbbz4+Ml18MCkrNzI+PjJdPWNbbj4+Ml07Y1tjW28+PjJdPj4yXT1jW2s+PjJdO2NbKGNbbz4+Ml18MCkrND4+Ml09Y1twPj4yXTthWyhjW28+PjJdfDApKzY0Pj4wXT0oY1ttPj4yXXwwKSE9MD8xOjA7YVsoY1tvPj4yXXwwKSs2NT4+MF09KGNbbT4+Ml18MCkhPTA/MDoyO2NbcT4+Ml09Y1soY1twPj4yXXwwKSs4Pj4yXTt3aGlsZSgxKXtpZighKGNbcT4+Ml18MCkpYnJlYWs7aWYoKGNbKGNbcT4+Ml18MCkrNTI+PjJdfDApPT0oY1tsPj4yXXwwKSl7Zj0oY1txPj4yXXwwKSs2NHwwO2FbZj4+MF09ZFtmPj4wXXwwfDMyO2Y9KGNbbz4+Ml18MCkrNjR8MDthW2Y+PjBdPWRbZj4+MF18MHwzMn1jW3E+PjJdPWNbKGNbcT4+Ml18MCkrOD4+Ml19Y1soY1tvPj4yXXwwKSs4Pj4yXT1jWyhjW3A+PjJdfDApKzg+PjJdO2NbKGNbcD4+Ml18MCkrOD4+Ml09Y1tvPj4yXTthWyhjW28+PjJdfDApKzY2Pj4wXT0wO2Nbaj4+Ml09MDtmPWNbaj4+Ml18MDtpPXI7cmV0dXJuIGZ8MH1mdW5jdGlvbiB1TShiKXtiPWJ8MDt2YXIgZD0wLGU9MDtlPWk7aT1pKzE2fDA7ZD1lO2NbZD4+Ml09YjtpZihjWyhjW2Q+PjJdfDApKzgwPj4yXXwwKXtpPWU7cmV0dXJufWI9WWkoY1soY1tkPj4yXXwwKSszMj4+Ml18MCl8MDtjWyhjW2Q+PjJdfDApKzgwPj4yXT1iO2lmKCEoY1soY1tkPj4yXXwwKSs4MD4+Ml18MCkpe2k9ZTtyZXR1cm59Yj1jWyhjW2Q+PjJdfDApKzgwPj4yXXwwO2FbYj4+MF09MDthW2IrMT4+MF09MDthW2IrMj4+MF09MDthW2IrMz4+MF09MDthW2IrND4+MF09MDthW2IrNT4+MF09MDthW2IrNj4+MF09MDthW2IrNz4+MF09MDtiPShjW2Q+PjJdfDApKzgwfDA7Y1tiPj4yXT0oY1tiPj4yXXwwKSs0O2k9ZTtyZXR1cm59ZnVuY3Rpb24gdk0oKXtyZXR1cm4gMjAwfWZ1bmN0aW9uIHdNKGEpe2E9YXwwO3ZhciBiPTAsZD0wO2Q9aTtpPWkrMTZ8MDtiPWQ7Y1tiPj4yXT1hO2E9Y1tiPj4yXXwwO2I9YSs2OHwwO2Rve2NbYT4+Ml09MDthPWErNHwwfXdoaWxlKChhfDApPChifDApKTtpPWQ7cmV0dXJufWZ1bmN0aW9uIHhNKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGU9MCxmPTAsZz0wLGg9MDtoPWk7aT1pKzE2fDA7ZT1oKzh8MDtmPWgrNHwwO2c9aDtjW2Y+PjJdPWE7Y1tnPj4yXT1iO2lmKChjW2c+PjJdfDApPihjWyhjW2Y+PjJdfDApKzEwND4+Ml18MCk/KGRbKGNbZj4+Ml18MCkrNj4+MF18MHwwKSE9MDowKXtjW2U+PjJdPXlNKGNbZj4+Ml18MCxjW2c+PjJdfDApfDA7YT1jW2U+PjJdfDA7aT1oO3JldHVybiBhfDB9Y1tlPj4yXT0wO2E9Y1tlPj4yXXwwO2k9aDtyZXR1cm4gYXwwfWZ1bmN0aW9uIHlNKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTA7bD1pO2k9aSszMnwwO2o9bCsyNHwwO2Q9bCsyMHwwO2U9bCsxNnwwO2s9bCsxMnwwO2g9bCs4fDA7Zz1sKzR8MDtmPWw7Y1tkPj4yXT1hO2NbZT4+Ml09YjtjW2s+PjJdPTA7Y1toPj4yXT1jWyhjW2Q+PjJdfDApKzEwND4+Ml07Y1tmPj4yXT1jZyhjWyhjW2Q+PjJdfDApKzEwMD4+Ml18MCwoY1tlPj4yXXwwKSo0OHwwLDApfDA7aWYoIShjW2Y+PjJdfDApKXtjW2o+PjJdPTc7az1jW2o+PjJdfDA7aT1sO3JldHVybiBrfDB9VlIoKGNbZj4+Ml18MCkrKChjW2g+PjJdfDApKjQ4fDApfDAsMCwoKGNbZT4+Ml18MCktKGNbaD4+Ml18MCl8MCkqNDh8MCl8MDtjWyhjW2Q+PjJdfDApKzEwMD4+Ml09Y1tmPj4yXTtjW2c+PjJdPWNbaD4+Ml07d2hpbGUoMSl7aWYoKGNbZz4+Ml18MCk+PShjW2U+PjJdfDApKXtkPTE0O2JyZWFrfWNbKGNbZj4+Ml18MCkrKChjW2c+PjJdfDApKjQ4fDApKzIwPj4yXT1jWyhjW2Q+PjJdfDApKzI4Pj4yXTtpZigoY1tjWyhjW2Q+PjJdfDApKzY4Pj4yXT4+Ml18MCkhPTA/KGE9KGNbZD4+Ml18MCkrODB8MCxiPWNbYSs0Pj4yXXwwLChifDApPjB8KGJ8MCk9PTAmKGNbYT4+Ml18MCk+Pj4wPjApOjApe2g9KGNbZD4+Ml18MCkrODB8MDtiPWNbaCs0Pj4yXXwwO2E9KGNbZj4+Ml18MCkrKChjW2c+PjJdfDApKjQ4fDApfDA7Y1thPj4yXT1jW2g+PjJdO2NbYSs0Pj4yXT1ifWVsc2V7YT0oY1tmPj4yXXwwKSsoKGNbZz4+Ml18MCkqNDh8MCl8MDtjW2E+PjJdPWNbKGNbZD4+Ml18MCkrMTU2Pj4yXTtjW2ErND4+Ml09MH1jWyhjW2Y+PjJdfDApKygoY1tnPj4yXXwwKSo0OHwwKSsyND4+Ml09Y1soY1tkPj4yXXwwKSs1Nj4+Ml07YT1raihjWyhjW2Q+PjJdfDApKzI4Pj4yXXwwKXwwO2NbKGNbZj4+Ml18MCkrKChjW2c+PjJdfDApKjQ4fDApKzE2Pj4yXT1hO2lmKCEoY1soY1tmPj4yXXwwKSsoKGNbZz4+Ml18MCkqNDh8MCkrMTY+PjJdfDApKXtkPTEwO2JyZWFrfWlmKEJyKGNbZD4+Ml18MCl8MCl6TShjWyhjW2Q+PjJdfDApKzIxNj4+Ml18MCwoY1tmPj4yXXwwKSsoKGNbZz4+Ml18MCkqNDh8MCkrMjh8MCk7Y1soY1tkPj4yXXwwKSsxMDQ+PjJdPShjW2c+PjJdfDApKzE7Y1tnPj4yXT0oY1tnPj4yXXwwKSsxfWlmKChkfDApPT0xMCl7Y1tqPj4yXT03O2s9Y1tqPj4yXXwwO2k9bDtyZXR1cm4ga3wwfWVsc2UgaWYoKGR8MCk9PTE0KXtjW2o+PjJdPWNbaz4+Ml07az1jW2o+PjJdfDA7aT1sO3JldHVybiBrfDB9cmV0dXJuIDB9ZnVuY3Rpb24gek0oYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTA7ZD1pO2k9aSsxNnwwO2Y9ZCs0fDA7ZT1kO2NbZj4+Ml09YTtjW2U+PjJdPWI7Y1tjW2U+PjJdPj4yXT1jWyhjW2Y+PjJdfDApKzUyKzE2Pj4yXTtjWyhjW2U+PjJdfDApKzQ+PjJdPWNbKGNbZj4+Ml18MCkrNTIrMjQ+PjJdO2NbKGNbZT4+Ml18MCkrOD4+Ml09Y1soY1tmPj4yXXwwKSs1MisyNCs0Pj4yXTtjWyhjW2U+PjJdfDApKzEyPj4yXT1jWyhjW2Y+PjJdfDApKzExMj4+Ml07aT1kO3JldHVybn1mdW5jdGlvbiBBTShmKXtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wO249aTtpPWkrMzJ8MDtqPW4rMTZ8MDtrPW4rMTJ8MDttPW4rOHwwO2w9bis0fDA7Zz1uO2Nbaz4+Ml09ZjtpZigoY1soY1trPj4yXXwwKSs0ND4+Ml18MCk+Pj4wPjApe2Nbaj4+Ml09MDttPWNbaj4+Ml18MDtpPW47cmV0dXJuIG18MH1jW20+PjJdPWNbKGNbaz4+Ml18MCkrMTI+PjJdO2NbbD4+Ml09Y1soY1ttPj4yXXwwKSs1Nj4+Ml07Y1tnPj4yXT1HZyhjWyhjW20+PjJdfDApKzcyPj4yXXwwKXwwO2lmKGNbZz4+Ml18MCl7Y1tqPj4yXT1jW2c+PjJdO209Y1tqPj4yXXwwO2k9bjtyZXR1cm4gbXwwfWVsc2V7Zj1jW2w+PjJdfDA7Zz00MTc5NjtoPWYrMTZ8MDtkb3thW2Y+PjBdPWFbZz4+MF18MDtmPWYrMXwwO2c9ZysxfDB9d2hpbGUoKGZ8MCk8KGh8MCkpO2FbKGNbbD4+Ml18MCkrMTY+PjBdPShjWyhjW2s+PjJdfDApKzMyPj4yXXwwKT4+Pjg7YVsoY1tsPj4yXXwwKSsxNz4+MF09KGNbKGNbaz4+Ml18MCkrMzI+PjJdfDApPj4+MTY7YVsoY1tsPj4yXXwwKSsxOD4+MF09MTthWyhjW2w+PjJdfDApKzE5Pj4wXT0xO2FbKGNbbD4+Ml18MCkrMjA+PjBdPShjWyhjW2s+PjJdfDApKzMyPj4yXXwwKS0oY1soY1trPj4yXXwwKSszNj4+Ml18MCk7YVsoY1tsPj4yXXwwKSsyMT4+MF09NjQ7YVsoY1tsPj4yXXwwKSsyMj4+MF09MzI7YVsoY1tsPj4yXXwwKSsyMz4+MF09MzI7Zj0oY1tsPj4yXXwwKSsyNHwwO2g9Zis3NnwwO2Rve2FbZj4+MF09MDtmPWYrMXwwfXdoaWxlKChmfDApPChofDApKTtiTChjW20+PjJdfDAsMTMpO209KGNbaz4+Ml18MCkrMjJ8MDtiW20+PjFdPWVbbT4+MV18MHwyO2Z0KChjW2w+PjJdfDApKzUyfDAsZFsoY1trPj4yXXwwKSsxNz4+MF18MCk7ZnQoKGNbbD4+Ml18MCkrNjR8MCxkWyhjW2s+PjJdfDApKzE4Pj4wXXwwKTtjWyhjW2s+PjJdfDApKzQ0Pj4yXT0xO2FbKGNbbD4+Ml18MCkrMzE+PjBdPTE7Y1tqPj4yXT0wO209Y1tqPj4yXXwwO2k9bjtyZXR1cm4gbXwwfXJldHVybiAwfWZ1bmN0aW9uIEJNKGIsZSxmKXtiPWJ8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MDtvPWk7aT1pKzQ4fDA7Zz1vKzI0fDA7aD1vKzIwfDA7aj1vO2w9bysxNnwwO209bysxMnwwO249bys4fDA7az1vKzI4fDA7Y1toPj4yXT1iO2I9ajtjW2I+PjJdPWU7Y1tiKzQ+PjJdPWY7aWYoMCE9MD8xOihjW2orND4+Ml0mLTE2Nzc3MjE2fDApIT0wKXthWyhjW2g+PjJdfDApKzg+PjBdPWNbaj4+Ml07bj1qO249U1IoY1tuPj4yXXwwLGNbbis0Pj4yXXwwLDgpfDA7Yj1qO2NbYj4+Ml09bjtjW2IrND4+Ml09QztjW2w+PjJdPTc7d2hpbGUoMSl7aWYoKGNbbD4+Ml18MCk8MClicmVhazthWyhjW2g+PjJdfDApKyhjW2w+PjJdfDApPj4wXT1jW2o+PjJdJjEyN3wxMjg7bj1qO249U1IoY1tuPj4yXXwwLGNbbis0Pj4yXXwwLDcpfDA7Yj1qO2NbYj4+Ml09bjtjW2IrND4+Ml09QztjW2w+PjJdPShjW2w+PjJdfDApKy0xfWNbZz4+Ml09OTtiPWNbZz4+Ml18MDtpPW87cmV0dXJuIGJ8MH1jW24+PjJdPTA7ZG97Yj0oY1tqPj4yXSYxMjd8MTI4KSYyNTU7Zj1jW24+PjJdfDA7Y1tuPj4yXT1mKzE7YVtrK2Y+PjBdPWI7Zj1qO2Y9U1IoY1tmPj4yXXwwLGNbZis0Pj4yXXwwLDcpfDA7Yj1qO2NbYj4+Ml09ZjtjW2IrND4+Ml09QztiPWp9d2hpbGUoKGNbYj4+Ml18MCkhPTB8KGNbYis0Pj4yXXwwKSE9MCk7YVtrPj4wXT0oZFtrPj4wXXwwKSYxMjc7Y1tsPj4yXT0wO2NbbT4+Ml09KGNbbj4+Ml18MCktMTt3aGlsZSgxKXtpZigoY1ttPj4yXXwwKTwwKWJyZWFrO2FbKGNbaD4+Ml18MCkrKGNbbD4+Ml18MCk+PjBdPWFbaysoY1ttPj4yXXwwKT4+MF18MDtjW20+PjJdPShjW20+PjJdfDApKy0xO2NbbD4+Ml09KGNbbD4+Ml18MCkrMX1jW2c+PjJdPWNbbj4+Ml07Yj1jW2c+PjJdfDA7aT1vO3JldHVybiBifDB9ZnVuY3Rpb24gQ00oZCxlLGYsZyxoKXtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDt2YXIgaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wO3A9aTtpPWkrMzJ8MDtqPXArMjB8MDtrPXArMTZ8MDtsPXArMTJ8MDttPXArOHwwO249cCs0fDA7bz1wO2Nbaj4+Ml09ZDtjW2s+PjJdPWU7Y1tsPj4yXT1mO2NbbT4+Ml09ZztjW24+PjJdPWg7YlsoY1tuPj4yXXwwKSs4Pj4xXT0xO2g9TngoY1tuPj4yXXwwLChjW2w+PjJdfDApKzJ8MCl8MDtjW28+PjJdPWg7aWYoaCl7bz1jW28+PjJdfDA7aT1wO3JldHVybiBvfDB9ZT1jW2o+PjJdfDA7aj1jW2s+PjJdfDA7Zj1jW2w+PjJdfDA7Zz1jWyhjW24+PjJdfDApKzE2Pj4yXXwwO2lmKGNbbT4+Ml18MCljW28+PjJdPWNJKGUsaixmLGcpfDA7ZWxzZSBjW28+PjJdPVFoKGUsaixmLGcpfDA7aWYoIShjW28+PjJdfDApKXthWyhjWyhjW24+PjJdfDApKzE2Pj4yXXwwKSsoY1tsPj4yXXwwKT4+MF09MDthWyhjWyhjW24+PjJdfDApKzE2Pj4yXXwwKSsoKGNbbD4+Ml18MCkrMSk+PjBdPTA7YlsoY1tuPj4yXXwwKSs4Pj4xXT01Mjg7Y1soY1tuPj4yXXwwKSsxMj4+Ml09Y1tsPj4yXTtvPWNbbz4+Ml18MDtpPXA7cmV0dXJuIG98MH1lbHNle1hnKGNbbj4+Ml18MCk7bz1jW28+PjJdfDA7aT1wO3JldHVybiBvfDB9cmV0dXJuIDB9ZnVuY3Rpb24gRE0oYixkKXtiPWJ8MDtkPWR8MDt2YXIgZj0wLGc9MCxoPTAsaj0wO2o9aTtpPWkrMTZ8MDtmPWorOHwwO2c9ais0fDA7aD1qO2NbZj4+Ml09YjtjW2c+PjJdPWQ7Y1toPj4yXT0oY1soY1soY1tmPj4yXXwwKSsxMjArKGFbKGNbZj4+Ml18MCkrNjg+PjBdPDwyKT4+Ml18MCkrNjA+PjJdfDApLShjWyhjW2Y+PjJdfDApKzE2Kzg+PjJdfDApO2lmKChlWyhjW2Y+PjJdfDApKzE2KzE2Pj4xXXwwKT4+PjA8KGNbaD4+Ml18MCk+Pj4wKWNbaD4+Ml09ZVsoY1tmPj4yXXwwKSsxNisxNj4+MV07Y1tjW2c+PjJdPj4yXT1jW2g+PjJdO2k9ajtyZXR1cm4gY1soY1tmPj4yXXwwKSsxNis4Pj4yXXwwfWZ1bmN0aW9uIEVNKGIpe2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wO2g9aTtpPWkrMTZ8MDtkPWgrMTJ8MDtlPWgrOHwwO2c9aCs0fDA7Zj1oO2NbZT4+Ml09YjtiPShjW2U+PjJdfDApKzQwfDA7Y1tmPj4yXT1PRihjWyhjW2U+PjJdfDApKzE2Pj4yXXwwLDAsY1tiPj4yXXwwLGNbYis0Pj4yXXwwLDAsZyl8MDtpZihjW2Y+PjJdfDApe2NbZD4+Ml09Y1tmPj4yXTtnPWNbZD4+Ml18MDtpPWg7cmV0dXJuIGd8MH1pZihjW2c+PjJdfDApe2NbZD4+Ml09UWooNzM0OTEpfDA7Zz1jW2Q+PjJdfDA7aT1oO3JldHVybiBnfDB9ZWxzZXthWyhjW2U+PjJdfDApKzM+PjBdPTA7Y1soY1tlPj4yXXwwKSs1Nj4+Ml09MDtjW2Q+PjJdPTA7Zz1jW2Q+PjJdfDA7aT1oO3JldHVybiBnfDB9cmV0dXJuIDB9ZnVuY3Rpb24gRk0oYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wO2w9aTtpPWkrMzJ8MDtmPWwrMjB8MDtnPWwrMTZ8MDtoPWwrMTJ8MDtkPWwrOHwwO2o9bCs0fDA7az1sO2NbZz4+Ml09YTtjW2g+PjJdPWI7Y1tqPj4yXT1jWyhjW2c+PjJdfDApKzEyPj4yXTtjW2s+PjJdPWNbKGNbaD4+Ml18MCkrMTI+PjJdO2I9Y1tnPj4yXXwwO2lmKCEoKGVbKGNbZz4+Ml18MCkrOD4+MV18MHwoZVsoY1toPj4yXXwwKSs4Pj4xXXwwKSkmMTYzODQpKXtjW2Q+PjJdPWVSKGNbYisxNj4+Ml18MCxjWyhjW2g+PjJdfDApKzE2Pj4yXXwwLChjW2o+PjJdfDApPihjW2s+PjJdfDApP2Nbaz4+Ml18MDpjW2o+PjJdfDApfDA7aWYoY1tkPj4yXXwwKXtjW2Y+PjJdPWNbZD4+Ml07az1jW2Y+PjJdfDA7aT1sO3JldHVybiBrfDB9ZWxzZXtjW2Y+PjJdPShjW2o+PjJdfDApLShjW2s+PjJdfDApO2s9Y1tmPj4yXXwwO2k9bDtyZXR1cm4ga3wwfX1hPWNbZz4+Ml18MDtpZigoZVtiKzg+PjFdfDApJihlWyhjW2g+PjJdfDApKzg+PjFdfDApJjE2Mzg0KXtjW2Y+PjJdPShjW2E+PjJdfDApLShjW2NbaD4+Ml0+PjJdfDApO2s9Y1tmPj4yXXwwO2k9bDtyZXR1cm4ga3wwfWlmKChlW2ErOD4+MV18MCkmMTYzODQpaWYoaEcoY1soY1toPj4yXXwwKSsxNj4+Ml18MCxjWyhjW2g+PjJdfDApKzEyPj4yXXwwKXwwKXtjW2Y+PjJdPShjW2NbZz4+Ml0+PjJdfDApLShjW2s+PjJdfDApO2s9Y1tmPj4yXXwwO2k9bDtyZXR1cm4ga3wwfWVsc2V7Y1tmPj4yXT0tMTtrPWNbZj4+Ml18MDtpPWw7cmV0dXJuIGt8MH1lbHNlIGlmKGhHKGNbKGNbZz4+Ml18MCkrMTY+PjJdfDAsY1soY1tnPj4yXXwwKSsxMj4+Ml18MCl8MCl7Y1tmPj4yXT0oY1tqPj4yXXwwKS0oY1tjW2g+PjJdPj4yXXwwKTtrPWNbZj4+Ml18MDtpPWw7cmV0dXJuIGt8MH1lbHNle2NbZj4+Ml09MTtrPWNbZj4+Ml18MDtpPWw7cmV0dXJuIGt8MH1yZXR1cm4gMH1mdW5jdGlvbiBHTShkKXtkPWR8MDt2YXIgZT0wLGY9MCxnPTA7Zz1pO2k9aSsxNnwwO2U9Zys0fDA7Zj1nO2NbZj4+Ml09ZDtpZighKGV6KGNbKGNbZj4+Ml18MCkrMTY+PjJdfDAsY1tmPj4yXXwwLGNbKGNbZj4+Ml18MCkrMTI+PjJdfDAsYVsoY1tmPj4yXXwwKSsxMD4+MF18MCl8MCkpe2JbZT4+MV09MDtkPWJbZT4+MV18MDtpPWc7cmV0dXJuIGR8MH1pZighKE1pKGNbKGNbZj4+Ml18MCkrMTY+PjJdfDAsY1tmPj4yXXwwLGNbKGNbZj4+Ml18MCkrMTI+PjJdfDAsYVsoY1tmPj4yXXwwKSsxMD4+MF18MCl8MCkpe2JbZT4+MV09NDtkPWJbZT4+MV18MDtpPWc7cmV0dXJuIGR8MH1lbHNle2JbZT4+MV09ODtkPWJbZT4+MV18MDtpPWc7cmV0dXJuIGR8MH1yZXR1cm4gMH1mdW5jdGlvbiBITShkKXtkPWR8MDt2YXIgZj0wLGc9MCxoPTA7aD1pO2k9aSsxNnwwO2Y9aCs0fDA7Zz1oO2NbZz4+Ml09ZDtpZihPeChjW2c+PjJdfDAsKGNbKGNbZz4+Ml18MCkrMTI+PjJdfDApKzJ8MCwxKXwwKXtjW2Y+PjJdPTc7ZD1jW2Y+PjJdfDA7aT1oO3JldHVybiBkfDB9ZWxzZXthWyhjWyhjW2c+PjJdfDApKzE2Pj4yXXwwKSsoY1soY1tnPj4yXXwwKSsxMj4+Ml18MCk+PjBdPTA7YVsoY1soY1tnPj4yXXwwKSsxNj4+Ml18MCkrKChjWyhjW2c+PjJdfDApKzEyPj4yXXwwKSsxKT4+MF09MDtkPShjW2c+PjJdfDApKzh8MDtiW2Q+PjFdPWVbZD4+MV18MHw1MTI7Y1tmPj4yXT0wO2Q9Y1tmPj4yXXwwO2k9aDtyZXR1cm4gZHwwfXJldHVybiAwfWZ1bmN0aW9uIElNKGEpe2E9YXwwO3ZhciBkPTAsZT0wO2U9aTtpPWkrMTZ8MDtkPWU7Y1tkPj4yXT1hO2loKGNbZD4+Ml18MCk7YlsoY1tkPj4yXXwwKSs4Pj4xXT00O2k9ZTtyZXR1cm4gY1tkPj4yXXwwfWZ1bmN0aW9uIEpNKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTA7Zj1pO2k9aSsxNnwwO2Q9Zis4fDA7Yj1mKzR8MDtlPWY7Y1tkPj4yXT1hO2lmKGNbKGNbZD4+Ml18MCkrMTg0Pj4yXXwwKXtjW2I+PjJdPWNbKGNbZD4+Ml18MCkrMTg0Pj4yXTt3aGlsZSgxKXthPWNbYj4+Ml18MDtpZighKGNbKGNbYj4+Ml18MCkrND4+Ml18MCkpYnJlYWs7Y1tiPj4yXT1jW2ErND4+Ml19ekkoYSl8MDtjWyhjW2Q+PjJdfDApKzE4ND4+Ml09MDtjWyhjW2Q+PjJdfDApKzE5Mj4+Ml09MH1QTShjW2Q+PjJdfDApO2lmKGNbKGNbZD4+Ml18MCkrOTI+PjJdfDApT0MoY1soY1tkPj4yXXwwKSs5Mj4+Ml18MCxjWyhjW2Q+PjJdfDApKzI0Pj4yXXwwKTt3aGlsZSgxKXthPWNbZD4+Ml18MDtpZighKGNbKGNbZD4+Ml18MCkrMTg4Pj4yXXwwKSlicmVhaztjW2U+PjJdPWNbYSsxODg+PjJdO2NbKGNbZD4+Ml18MCkrMTg4Pj4yXT1jWyhjW2U+PjJdfDApKzQ+PjJdO1FNKGNbZT4+Ml18MCl9aWYoIShjW2ErMjA0Pj4yXXwwKSl7aT1mO3JldHVybn1MSShjW2NbZD4+Ml0+PjJdfDAsKGNbZD4+Ml18MCkrMjA0fDAsLTEsMCk7aT1mO3JldHVybn1mdW5jdGlvbiBLTShhLGIpe2E9YXwwO2I9YnwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEQ9MCxFPTAsRj0wLEc9MCxIPTAsST0wLEo9MDtJPWk7aT1pKzE0NHwwO0E9SSszMnwwO0Q9SSsyNHwwO0I9SSsxNnwwO3o9SSs4fDA7ZT1JKzEyOHwwO2Y9SSsxMjR8MDtKPUkrMTIwfDA7Zz1JKzExNnwwO2s9SSsxMTJ8MDt3PUkrMTA4fDA7bD1JKzEwNHwwO249SSsxMDB8MDt1PUkrOTZ8MDtvPUkrOTJ8MDtwPUkrODh8MDt2PUkrODR8MDtHPUkrODB8MDtGPUkrNzZ8MDt0PUkrNzJ8MDttPUk7eD1JKzY4fDA7eT1JKzY0fDA7aj1JKzYwfDA7aD1JKzU2fDA7cT1JKzUyfDA7RT1JKzQ4fDA7cj1JKzQ0fDA7cz1JKzQwfDA7Y1tmPj4yXT1hO2NbSj4+Ml09YjtjW2s+PjJdPTA7Y1t3Pj4yXT0wO2NbbD4+Ml09MDtjW3c+PjJdPUxNKGNbZj4+Ml18MCxjW0o+PjJdfDApfDA7Y1tnPj4yXT0wO3doaWxlKDEpe2lmKGNbdz4+Ml18MClicmVhaztpZigoY1tnPj4yXXwwKT49KGNbKGNbZj4+Ml18MCkrMjA+PjJdfDApKWJyZWFrO2Nbbj4+Ml09Y1soY1soY1tmPj4yXXwwKSsxNj4+Ml18MCkrKGNbZz4+Ml08PDQpKzQ+PjJdO2lmKGZpKGNbbj4+Ml18MCl8MCl7Y1tsPj4yXT0xO21nKGNbbj4+Ml18MCk7Y1t1Pj4yXT1QZihjW24+PjJdfDApfDA7aWYoKGRbKGNbKGNbZj4+Ml18MCkrMTY+PjJdfDApKyhjW2c+PjJdPDw0KSs4Pj4wXXwwfDApIT0xPyhkWzQxODEyKyh0ZyhjW3U+PjJdfDApfDApPj4wXXwwfDApIT0wOjApY1trPj4yXT0oY1trPj4yXXwwKSsxO2Nbdz4+Ml09Q3QoY1t1Pj4yXXwwKXwwfWNbZz4+Ml09KGNbZz4+Ml18MCkrMX1pZihjW3c+PjJdfDApe2NbZT4+Ml09Y1t3Pj4yXTtKPWNbZT4+Ml18MDtpPUk7cmV0dXJuIEp8MH1pZigoKGNbbD4+Ml18MCkhPTA/KGNbKGNbZj4+Ml18MCkrMjA0Pj4yXXwwKSE9MDowKT8oY1t3Pj4yXT1UYltjWyhjW2Y+PjJdfDApKzIwND4+Ml0mMjU1XShjWyhjW2Y+PjJdfDApKzIwMD4+Ml18MCl8MCwoY1t3Pj4yXXwwKSE9MCk6MCl7Y1tlPj4yXT01MzE7Sj1jW2U+PjJdfDA7aT1JO3JldHVybiBKfDB9Sj0wPT0oSmYoSWkoY1soY1soY1tmPj4yXXwwKSsxNj4+Ml18MCkrND4+Ml18MCl8MCl8MCk7aWYoSnwoY1trPj4yXXwwKTw9MSl7Y1tnPj4yXT0wO3doaWxlKDEpe2lmKGNbdz4+Ml18MClicmVhaztpZigoY1tnPj4yXXwwKT49KGNbKGNbZj4+Ml18MCkrMjA+PjJdfDApKWJyZWFrO2Nbbz4+Ml09Y1soY1soY1tmPj4yXXwwKSsxNj4+Ml18MCkrKGNbZz4+Ml08PDQpKzQ+PjJdO2lmKGNbbz4+Ml18MCljW3c+PjJdPU5nKGNbbz4+Ml18MCwwKXwwO2NbZz4+Ml09KGNbZz4+Ml18MCkrMX1jW2c+PjJdPTA7d2hpbGUoMSl7aWYoY1t3Pj4yXXwwKWJyZWFrO2lmKChjW2c+PjJdfDApPj0oY1soY1tmPj4yXXwwKSsyMD4+Ml18MCkpYnJlYWs7Y1twPj4yXT1jWyhjWyhjW2Y+PjJdfDApKzE2Pj4yXXwwKSsoY1tnPj4yXTw8NCkrND4+Ml07aWYoY1twPj4yXXwwKWNbdz4+Ml09TWcoY1twPj4yXXwwLDApfDA7Y1tnPj4yXT0oY1tnPj4yXXwwKSsxfWlmKCEoY1t3Pj4yXXwwKSlNTShjW2Y+PjJdfDApfDB9ZWxzZXtjW3Y+PjJdPWNbY1tmPj4yXT4+Ml07Y1tHPj4yXT0wO2NbRj4+Ml09SWkoY1soY1soY1tmPj4yXXwwKSsxNj4+Ml18MCkrND4+Ml18MCl8MDtjW3Q+PjJdPTA7Sj1tO2NbSj4+Ml09MDtjW0orND4+Ml09MDtjW3k+PjJdPTA7Y1tqPj4yXT1KZihjW0Y+PjJdfDApfDA7Sj1jW2Y+PjJdfDA7Y1t6Pj4yXT1jW0Y+PjJdO2NbRz4+Ml09R2goSiw0MTgxOCx6KXwwO2lmKCEoY1tHPj4yXXwwKSl7Y1tlPj4yXT03O0o9Y1tlPj4yXXwwO2k9STtyZXR1cm4gSnwwfWRve2lmKGNbeT4+Ml18MCl7aWYoKGNbeT4+Ml18MCk+MTAwKXtIPTM1O2JyZWFrfWlmKChjW3k+PjJdfDApPT0xKXtjW0Q+PjJdPWNbRz4+Ml07UmQoMTMsNDE4NDgsRCl9fWNbeT4+Ml09KGNbeT4+Ml18MCkrMTtTZCg0LGgpO0o9KGNbRz4+Ml18MCkrKGNbaj4+Ml18MCl8MDtGPWNbaD4+Ml0mMjU1O2NbQT4+Ml09KGNbaD4+Ml18MCk+Pj44JjE2Nzc3MjE1O2NbQSs0Pj4yXT1GO1FkKDEzLEosNDE4NjMsQSl8MDtjW3c+PjJdPVlyKGNbdj4+Ml18MCxjW0c+PjJdfDAsMCx4KXwwfXdoaWxlKChjW3c+PjJdfDApPT0wPyhjW3g+PjJdfDApIT0wOjApO2lmKChIfDApPT0zNSl7Y1tCPj4yXT1jW0c+PjJdO1JkKDEzLDQxODM0LEIpO3hyKGNbdj4+Ml18MCxjW0c+PjJdfDAsMCl8MH1pZighKGNbdz4+Ml18MCkpY1t3Pj4yXT15TChjW3Y+PjJdfDAsY1tHPj4yXXwwLHQsMTY0MDYsMCl8MDtpZihjW3c+PjJdfDApe1RmKGNbZj4+Ml18MCxjW0c+PjJdfDApO2NbZT4+Ml09Y1t3Pj4yXTtKPWNbZT4+Ml18MDtpPUk7cmV0dXJuIEp8MH1jW2c+PjJdPTA7d2hpbGUoMSl7aWYoKGNbZz4+Ml18MCk+PShjWyhjW2Y+PjJdfDApKzIwPj4yXXwwKSlicmVhaztjW3E+PjJdPWNbKGNbKGNbZj4+Ml18MCkrMTY+PjJdfDApKyhjW2c+PjJdPDw0KSs0Pj4yXTtpZigoKGZpKGNbcT4+Ml18MCl8MCkhPTA/KGNbRT4+Ml09Tk0oY1txPj4yXXwwKXwwLChjW0U+PjJdfDApIT0wKTowKT8oQj1jW3Q+PjJdfDAsRD1jW0U+PjJdfDAsSj0oSmYoY1tFPj4yXXwwKXwwKSsxfDAsRj1tLGNbdz4+Ml09SWcoQixELEosY1tGPj4yXXwwLGNbRis0Pj4yXXwwKXwwLEY9KEpmKGNbRT4+Ml18MCl8MCkrMXwwLEo9bSxGPVJSKGNbSj4+Ml18MCxjW0orND4+Ml18MCxGfDAsKChGfDApPDApPDwzMT4+MzF8MCl8MCxKPW0sY1tKPj4yXT1GLGNbSis0Pj4yXT1DLChjW3c+PjJdfDApIT0wKTowKXtIPTQ4O2JyZWFrfWNbZz4+Ml09KGNbZz4+Ml18MCkrMX1pZigoSHwwKT09NDgpe1dLKGNbdD4+Ml18MCk7eHIoY1t2Pj4yXXwwLGNbRz4+Ml18MCwwKXwwO1RmKGNbZj4+Ml18MCxjW0c+PjJdfDApO2NbZT4+Ml09Y1t3Pj4yXTtKPWNbZT4+Ml18MDtpPUk7cmV0dXJuIEp8MH1pZigwPT0oKGJzKGNbdD4+Ml18MCl8MCkmMTAyNHwwKT8oSj12cihjW3Q+PjJdfDAsMil8MCxjW3c+PjJdPUosMCE9KEp8MCkpOjApe1dLKGNbdD4+Ml18MCk7eHIoY1t2Pj4yXXwwLGNbRz4+Ml18MCwwKXwwO1RmKGNbZj4+Ml18MCxjW0c+PjJdfDApO2NbZT4+Ml09Y1t3Pj4yXTtKPWNbZT4+Ml18MDtpPUk7cmV0dXJuIEp8MH1jW2c+PjJdPTA7d2hpbGUoMSl7aWYoY1t3Pj4yXXwwKWJyZWFrO2lmKChjW2c+PjJdfDApPj0oY1soY1tmPj4yXXwwKSsyMD4+Ml18MCkpYnJlYWs7Y1tyPj4yXT1jWyhjWyhjW2Y+PjJdfDApKzE2Pj4yXXwwKSsoY1tnPj4yXTw8NCkrND4+Ml07aWYoY1tyPj4yXXwwKWNbdz4+Ml09TmcoY1tyPj4yXXwwLGNbRz4+Ml18MCl8MDtjW2c+PjJdPShjW2c+PjJdfDApKzF9V0soY1t0Pj4yXXwwKTtpZihjW3c+PjJdfDApe1RmKGNbZj4+Ml18MCxjW0c+PjJdfDApO2NbZT4+Ml09Y1t3Pj4yXTtKPWNbZT4+Ml18MDtpPUk7cmV0dXJuIEp8MH1jW3c+PjJdPXhyKGNbdj4+Ml18MCxjW0c+PjJdfDAsMSl8MDtUZihjW2Y+PjJdfDAsY1tHPj4yXXwwKTtjW0c+PjJdPTA7aWYoY1t3Pj4yXXwwKXtjW2U+PjJdPWNbdz4+Ml07Sj1jW2U+PjJdfDA7aT1JO3JldHVybiBKfDB9WWooKTtjW2c+PjJdPTA7d2hpbGUoMSl7aWYoKGNbZz4+Ml18MCk+PShjWyhjW2Y+PjJdfDApKzIwPj4yXXwwKSlicmVhaztjW3M+PjJdPWNbKGNbKGNbZj4+Ml18MCkrMTY+PjJdfDApKyhjW2c+PjJdPDw0KSs0Pj4yXTtpZihjW3M+PjJdfDApTWcoY1tzPj4yXXwwLDEpfDA7Y1tnPj4yXT0oY1tnPj4yXXwwKSsxfVpqKCk7TU0oY1tmPj4yXXwwKXwwfWNbZT4+Ml09Y1t3Pj4yXTtKPWNbZT4+Ml18MDtpPUk7cmV0dXJuIEp8MH1mdW5jdGlvbiBMTShhLGIpe2E9YXwwO2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wO2w9aTtpPWkrMzJ8MDtoPWwrMjR8MDtkPWwrMjB8MDtlPWwrMTZ8MDtrPWwrMTJ8MDtqPWwrOHwwO2c9bCs0fDA7Zj1sO2NbaD4+Ml09YTtjW2Q+PjJdPWI7Y1trPj4yXT0wO2Nbaj4+Ml09Y1soY1toPj4yXXwwKSszNDA+PjJdO2NbKGNbaD4+Ml18MCkrMzQwPj4yXT0wO2NbZT4+Ml09MDt3aGlsZSgxKXtpZihjW2s+PjJdfDApe2Q9ODticmVha31pZigoY1tlPj4yXXwwKT49KGNbKGNbaD4+Ml18MCkrMzE2Pj4yXXwwKSl7ZD04O2JyZWFrfWNbZj4+Ml09Y1soY1soY1tqPj4yXXwwKSsoY1tlPj4yXTw8Mik+PjJdfDApKzg+PjJdO2lmKChjW2Y+PjJdfDApIT0wPyhiPWNbKGNbY1tmPj4yXT4+Ml18MCkrNjA+PjJdfDAsY1tnPj4yXT1iLChifDApIT0wKTowKXtjW2s+PjJdPVRiW2NbZz4+Ml0mMjU1XShjW2Y+PjJdfDApfDA7bUooY1tkPj4yXXwwLGNbZj4+Ml18MCl9Y1tlPj4yXT0oY1tlPj4yXXwwKSsxfWlmKChkfDApPT04KXtjWyhjW2g+PjJdfDApKzM0MD4+Ml09Y1tqPj4yXTtpPWw7cmV0dXJuIGNbaz4+Ml18MH1yZXR1cm4gMH1mdW5jdGlvbiBNTShhKXthPWF8MDt2YXIgYj0wLGQ9MDtiPWk7aT1pKzE2fDA7ZD1iO2NbZD4+Ml09YTtydShjW2Q+PjJdfDAsNjQpO2k9YjtyZXR1cm4gMH1mdW5jdGlvbiBOTShhKXthPWF8MDt2YXIgYj0wLGQ9MDtiPWk7aT1pKzE2fDA7ZD1iO2NbZD4+Ml09YTthPU9NKGNbY1soY1tkPj4yXXwwKSs0Pj4yXT4+Ml18MCl8MDtpPWI7cmV0dXJuIGF8MH1mdW5jdGlvbiBPTShhKXthPWF8MDt2YXIgYj0wLGQ9MDtkPWk7aT1pKzE2fDA7Yj1kO2NbYj4+Ml09YTtpPWQ7cmV0dXJuIGNbKGNbYj4+Ml18MCkrMTgwPj4yXXwwfWZ1bmN0aW9uIFBNKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTA7Zj1pO2k9aSsxNnwwO2I9Zis4fDA7ZD1mKzR8MDtlPWY7Y1tiPj4yXT1hO2lmKCEoY1soY1tiPj4yXXwwKSsxMTI+PjJdfDApKXtpPWY7cmV0dXJufWNbZD4+Ml09MDt3aGlsZSgxKXtpZigoY1tkPj4yXXwwKT49KGNbKGNbYj4+Ml18MCkrMjg+PjJdfDApKWJyZWFrO2NbZT4+Ml09Y1soY1soY1tiPj4yXXwwKSsxMTI+PjJdfDApKyhjW2Q+PjJdPDwyKT4+Ml07aWYoY1tlPj4yXXwwKXtlSihjW2I+PjJdfDAsY1tlPj4yXXwwKTtjWyhjWyhjW2I+PjJdfDApKzExMj4+Ml18MCkrKGNbZD4+Ml08PDIpPj4yXT0wfWNbZD4+Ml09KGNbZD4+Ml18MCkrMX1pPWY7cmV0dXJufWZ1bmN0aW9uIFFNKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTAsZz0wO2c9aTtpPWkrMTZ8MDtiPWcrMTJ8MDtmPWcrOHwwO2Q9Zys0fDA7ZT1nO2NbYj4+Ml09YTtjW2Q+PjJdPShjW2I+PjJdfDApKzgwO2NbZT4+Ml09KGNbZD4+Ml18MCkrKChjWyhjW2I+PjJdfDApKzYwPj4yXXwwKSo0MHwwKTtjW2Y+PjJdPTA7d2hpbGUoMSl7aWYoKGNbZj4+Ml18MCk+PShjWyhjW2I+PjJdfDApKzY0Pj4yXXwwKSlicmVhaztlSihjW2NbYj4+Ml0+PjJdfDAsY1soY1tlPj4yXXwwKSsoY1tmPj4yXTw8Mik+PjJdfDApO2NbZj4+Ml09KGNbZj4+Ml18MCkrMX1PQyhjW2Q+PjJdfDAsY1soY1tiPj4yXXwwKSs2MD4+Ml18MCk7TEkoY1tjW2NbYj4+Ml0+PjJdPj4yXXwwLChjW2I+PjJdfDApKzQwfDAsLTEsMCk7VGYoY1tjW2NbYj4+Ml0+PjJdPj4yXXwwLGNbYj4+Ml18MCk7aT1nO3JldHVybn1mdW5jdGlvbiBSTShhKXthPWF8MDt2YXIgYj0wLGQ9MDtkPWk7aT1pKzE2fDA7Yj1kO2NbYj4+Ml09YTtpPWQ7cmV0dXJuIGNbNTU4OCsoY1tiPj4yXTw8Mik+PjJdfDB9ZnVuY3Rpb24gU00oYixmLGcpe2I9YnwwO2Y9ZnwwO2c9Z3wwO3ZhciBqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MCxFPTAsRj0wLEc9MCxIPTAsST0wLEo9MCxLPTAsTD0wLE09MDtMPWk7aT1pKzE5MnwwO3k9TCs5NnwwO3g9TCs4OHwwO3c9TCs4MHwwO3Y9TCs3MnwwO0k9TCs2NHwwO0g9TCs1NnwwO3U9TCs0OHwwO3Q9TCs0MHwwO3M9TCszMnwwO0E9TCsyNHwwO3o9TCsxNnwwO0U9TCs4fDA7cj1MO2o9TCsxODR8MDtrPUwrMTgwfDA7TT1MKzE3NnwwO0s9TCsxNzJ8MDtKPUwrMTQ0fDA7Qj1MKzE0MHwwO0Q9TCsxMzZ8MDtDPUwrMTMyfDA7Rj1MKzEyOHwwO289TCsxMjR8MDtwPUwrMTIwfDA7Rz1MKzExNnwwO3E9TCsxMTJ8MDttPUwrMTA4fDA7bD1MKzEwNHwwO249TCsxMDB8MDtjW2o+PjJdPWI7Y1trPj4yXT1mO2NbTT4+Ml09ZztjW0s+PjJdPWNbaz4+Ml07ZGcoSiwwLGNbaz4+Ml18MCxjW00+PjJdfDAsMCk7YTpkbyBzd2l0Y2goYVsoY1tqPj4yXXwwKSsxPj4wXXwwKXtjYXNlIC02OntjW0Q+PjJdPWNbKGNbaj4+Ml18MCkrMTY+PjJdO2Nbcj4+Ml09ZVsoY1tEPj4yXXwwKSs2Pj4xXTtyQShKLDQxOTE1LHIpO2NbQj4+Ml09MDt3aGlsZSgxKXtpZigoY1tCPj4yXXwwKT49KGVbKGNbRD4+Ml18MCkrNj4+MV18MCkpYnJlYWs7Y1tDPj4yXT1jWyhjW0Q+PjJdfDApKzIwKyhjW0I+PjJdPDwyKT4+Ml07aWYoY1tDPj4yXXwwKWo9Y1tjW0M+PjJdPj4yXXwwO2Vsc2Ugaj0xODQwMjtjW0Y+PjJdPWo7TT0oaFIoY1tGPj4yXXwwLDM0ODM0KXwwKT09MDtjW0Y+PjJdPU0/NDE5MjA6ajtNPWNbRj4+Ml18MDtjW0U+PjJdPShkWyhjWyhjW0Q+PjJdfDApKzE2Pj4yXXwwKSsoY1tCPj4yXXwwKT4+MF18MCkhPTA/MjgyNjQ6MTg0MDI7Y1tFKzQ+PjJdPU07ckEoSiw0MTkyMixFKTtjW0I+PjJdPShjW0I+PjJdfDApKzF9c0EoSiwzNDcwNiwxKTticmVha31jYXNlIC00OntjW28+PjJdPWNbKGNbaj4+Ml18MCkrMTY+PjJdO2Nbej4+Ml09Y1tjW28+PjJdPj4yXTtyQShKLDQxOTI4LHopO2JyZWFrfWNhc2UgLTU6e2NbcD4+Ml09Y1soY1tqPj4yXXwwKSsxNj4+Ml07TT1hW2NbcD4+Ml0+PjBdfDA7Y1tBPj4yXT1jWyhjW3A+PjJdfDApKzIwPj4yXTtjW0ErND4+Ml09TTtyQShKLDQxOTM2LEEpO2JyZWFrfWNhc2UgLTEzOntIPWNbKGNbaj4+Ml18MCkrMTY+PjJdfDA7ST1jW0grND4+Ml18MDtNPXM7Y1tNPj4yXT1jW0g+PjJdO2NbTSs0Pj4yXT1JO3JBKEosMjgyNjYscyk7YnJlYWt9Y2FzZSAtMTQ6e2NbdD4+Ml09Y1soY1tqPj4yXXwwKSsxNj4+Ml07ckEoSiw0MTk0Myx0KTticmVha31jYXNlIC0xMjp7aFt1Pj4zXT0raFtjWyhjW2o+PjJdfDApKzE2Pj4yXT4+M107ckEoSiw0MTk0Nix1KTticmVha31jYXNlIC04OntjW0c+PjJdPWNbKGNbaj4+Ml18MCkrMTY+PjJdO2o9Y1tHPj4yXXwwO2lmKGVbKGNbRz4+Ml18MCkrOD4+MV0mMil7Y1tLPj4yXT1jW2orMTY+PjJdO2JyZWFrIGF9az1jW0c+PjJdfDA7aWYoZVtqKzg+PjFdJjQpe0c9aztJPWNbRys0Pj4yXXwwO009SDtjW00+PjJdPWNbRz4+Ml07Y1tNKzQ+PjJdPUk7ckEoSiwyODI2NixIKTticmVhayBhfWo9Y1tHPj4yXXwwO2lmKGVbays4Pj4xXSY4KXtoW0k+PjNdPStoW2o+PjNdO3JBKEosNDE5NDYsSSk7YnJlYWsgYX1pZihlW2orOD4+MV0mMSl7Y1tLPj4yXT0zOTY5MTticmVhayBhfWVsc2V7Y1tLPj4yXT00MTk1MjticmVhayBhfX1jYXNlIC0xMDp7Y1txPj4yXT1jWyhjWyhjW2o+PjJdfDApKzE2Pj4yXXwwKSs4Pj4yXTtjW3Y+PjJdPWNbcT4+Ml07ckEoSiw0MTk1OSx2KTticmVha31jYXNlIC0xNTp7Y1tsPj4yXT1jWyhjW2o+PjJdfDApKzE2Pj4yXTtjW24+PjJdPWNbY1tsPj4yXT4+Ml07Y1ttPj4yXT0xO3doaWxlKDEpe2lmKChjW20+PjJdfDApPj0oY1tuPj4yXXwwKSlicmVhaztjW3c+PjJdPWNbKGNbbD4+Ml18MCkrKGNbbT4+Ml08PDIpPj4yXTtyQShKLDQxOTY3LHcpO2NbbT4+Ml09KGNbbT4+Ml18MCkrMX1hW2Nbaz4+Ml0+PjBdPTkxO3NBKEosNDE5NzEsMSk7YnJlYWt9Y2FzZSAtMTg6e3JBKEosNDE5NzMseCk7YnJlYWt9Y2FzZSAtMTk6e2FbY1trPj4yXT4+MF09MDticmVha31jYXNlIC0yMDp7Y1t5Pj4yXT1jW2NbKGNbaj4+Ml18MCkrMTY+PjJdPj4yXTtyQShKLDE4MzkxLHkpO2JyZWFrfWRlZmF1bHQ6e2NbSz4+Ml09Y1soY1tqPj4yXXwwKSsxNj4+Ml07aWYoIShjW0s+PjJdfDApKXtjW0s+PjJdPWNbaz4+Ml07YVtjW2s+PjJdPj4wXT0wfX19d2hpbGUoMCk7ZmcoSil8MDtpPUw7cmV0dXJuIGNbSz4+Ml18MH1mdW5jdGlvbiBUTShhLGQsZSl7YT1hfDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wO2Y9aTtpPWkrMTZ8MDtnPWYrOHwwO2g9ZjtjW2c+PjJdPWE7YT1oO2NbYT4+Ml09ZDtjW2ErND4+Ml09ZTtpaChjW2c+PjJdfDApO2Q9aDtlPWNbZCs0Pj4yXXwwO2E9Y1tnPj4yXXwwO2NbYT4+Ml09Y1tkPj4yXTtjW2ErND4+Ml09ZTtiWyhjW2c+PjJdfDApKzg+PjFdPTQ7aT1mO3JldHVybn1mdW5jdGlvbiBVTShmKXtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTA7bT1pO2k9aSsxNnwwO2c9bSs0fDA7bD1tO2s9bSsxMHwwO2g9bSs5fDA7aj1tKzh8MDtjW2c+PjJdPWY7Y1tsPj4yXT0wO2Fbaz4+MF09MDtpZigoY1soY1tnPj4yXXwwKSsxMj4+Ml18MCk+MSl7YVtoPj4wXT1hW2NbKGNbZz4+Ml18MCkrMTY+PjJdPj4wXXwwO2Fbaj4+MF09YVsoY1soY1tnPj4yXXwwKSsxNj4+Ml18MCkrMT4+MF18MDtpZigoZFtoPj4wXXwwKT09MjU0PyhkW2o+PjBdfDApPT0yNTU6MClhW2s+PjBdPTM7aWYoKGRbaD4+MF18MCk9PTI1NT8oZFtqPj4wXXwwKT09MjU0OjApYVtrPj4wXT0yfWlmKCEoYVtrPj4wXXwwKSl7bD1jW2w+PjJdfDA7aT1tO3JldHVybiBsfDB9Y1tsPj4yXT1iaChjW2c+PjJdfDApfDA7aWYoY1tsPj4yXXwwKXtsPWNbbD4+Ml18MDtpPW07cmV0dXJuIGx8MH1mPShjW2c+PjJdfDApKzEyfDA7Y1tmPj4yXT0oY1tmPj4yXXwwKS0yO1VSKGNbKGNbZz4+Ml18MCkrMTY+PjJdfDAsKGNbKGNbZz4+Ml18MCkrMTY+PjJdfDApKzJ8MCxjWyhjW2c+PjJdfDApKzEyPj4yXXwwKXwwO2FbKGNbKGNbZz4+Ml18MCkrMTY+PjJdfDApKyhjWyhjW2c+PjJdfDApKzEyPj4yXXwwKT4+MF09MDthWyhjWyhjW2c+PjJdfDApKzE2Pj4yXXwwKSsoKGNbKGNbZz4+Ml18MCkrMTI+PjJdfDApKzEpPj4wXT0wO2Y9KGNbZz4+Ml18MCkrOHwwO2JbZj4+MV09ZVtmPj4xXXw1MTI7YVsoY1tnPj4yXXwwKSsxMD4+MF09YVtrPj4wXXwwO2w9Y1tsPj4yXXwwO2k9bTtyZXR1cm4gbHwwfWZ1bmN0aW9uIFZNKGIsZCl7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wO2Y9aTtpPWkrMTZ8MDtlPWY7Zz1mKzR8MDtjW2U+PjJdPWI7YVtnPj4wXT1kO2lmKCEoV00oY1tlPj4yXXwwLGFbZz4+MF18MCl8MCkpe2c9MDtpPWY7cmV0dXJuIGd8MH1nPWNbKGNbZT4+Ml18MCkrMTI+PjJdfDA7aT1mO3JldHVybiBnfDB9ZnVuY3Rpb24gV00oZixnKXtmPWZ8MDtnPWd8MDt2YXIgaD0wLGo9MCxrPTAsbD0wO2w9aTtpPWkrMTZ8MDtoPWwrNHwwO2o9bDtrPWwrOHwwO2Nbaj4+Ml09ZjthW2s+PjBdPWc7Zz1jW2o+PjJdfDA7aWYoKGVbKGNbaj4+Ml18MCkrOD4+MV18MCkmMTgpe2Y9Zys4fDA7YltmPj4xXT1lW2Y+PjFdfDB8MjtpZigoZFsoY1tqPj4yXXwwKSsxMD4+MF18MHwwKSE9KChkW2s+PjBdfDApJi05fDApKWl1KGNbaj4+Ml18MCwoZFtrPj4wXXwwKSYtOSl8MDtpZigoKChkW2s+PjBdfDApJjh8MCkhPTA/MT09KDEmY1soY1tqPj4yXXwwKSsxNj4+Ml18MCk6MCk/KGJoKGNbaj4+Ml18MCl8MCkhPTA6MCl7Y1toPj4yXT0wO2s9Y1toPj4yXXwwO2k9bDtyZXR1cm4ga3wwfUdJKGNbaj4+Ml18MCl8MH1lbHNlIE14KGcsYVtrPj4wXXwwLDApfDA7aWYoKGRbKGNbaj4+Ml18MCkrMTA+PjBdfDB8MCk9PSgoZFtrPj4wXXwwKSYtOXwwKSl7Y1toPj4yXT1jWyhjW2o+PjJdfDApKzE2Pj4yXTtrPWNbaD4+Ml18MDtpPWw7cmV0dXJuIGt8MH1lbHNle2NbaD4+Ml09MDtrPWNbaD4+Ml18MDtpPWw7cmV0dXJuIGt8MH1yZXR1cm4gMH1mdW5jdGlvbiBYTShhKXthPWF8MDt2YXIgYj0wLGQ9MDtkPWk7aT1pKzE2fDA7Yj1kO2NbYj4+Ml09YTtpZigoZVsoY1tiPj4yXXwwKSs4Pj4xXXwwKSY5MzEyKW1HKGNbYj4+Ml18MCk7aWYoIShjWyhjW2I+PjJdfDApKzI0Pj4yXXwwKSl7YT1jW2I+PjJdfDA7YT1hKzE2fDA7Y1thPj4yXT0wO2k9ZDtyZXR1cm59VGYoY1soY1tiPj4yXXwwKSszMj4+Ml18MCxjWyhjW2I+PjJdfDApKzIwPj4yXXwwKTtjWyhjW2I+PjJdfDApKzI0Pj4yXT0wO2E9Y1tiPj4yXXwwO2E9YSsxNnwwO2NbYT4+Ml09MDtpPWQ7cmV0dXJufWZ1bmN0aW9uIFlNKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MDtiPWk7aT1pKzE2fDA7ZD1iKzR8MDtlPWI7Y1tkPj4yXT1hO2NbZT4+Ml09Y1tjW2Q+PjJdPj4yXTtUZihjW2U+PjJdfDAsY1soY1tkPj4yXXwwKSsxMDg+PjJdfDApO2NbKGNbZD4+Ml18MCkrMTA4Pj4yXT0wO2NbKGNbZD4+Ml18MCkrMTA0Pj4yXT0wO2k9YjtyZXR1cm59ZnVuY3Rpb24gWk0oYSl7YT1hfDA7dmFyIGI9MCxkPTA7Yj1pO2k9aSsxNnwwO2Q9YjtjW2Q+PjJdPWE7cGkoY1tkPj4yXXwwKTtsZyhjW2Q+PjJdfDAsNyk7aT1iO3JldHVybiA3fWZ1bmN0aW9uIF9NKGEpe2E9YXwwO3ZhciBiPTAsZD0wO2I9aTtpPWkrMTZ8MDtkPWI7Y1tkPj4yXT1hO3BqKGNbKGNbZD4+Ml18MCkrNjA+PjJdfDApO2NbKGNbZD4+Ml18MCkrNjA+PjJdPTA7aT1iO3JldHVybn1mdW5jdGlvbiAkTShiKXtiPWJ8MDt2YXIgZT0wLGY9MCxnPTAsaD0wO2c9aTtpPWkrMTZ8MDtlPWcrOHwwO2Y9Zys0fDA7aD1nO2NbZT4+Ml09YjtjW2Y+PjJdPWNbKGNbZT4+Ml18MCkrND4+Ml07Y1toPj4yXT1jW2NbZT4+Ml0+PjJdO2FbKGNbZj4+Ml18MCkrMTk+PjBdPTA7aWYoKGRbKGNbZT4+Ml18MCkrOD4+MF18MHwwKT4wPyhjWyhjW2g+PjJdfDApKzE2MD4+Ml18MCk+MTowKXthTihjW2U+PjJdfDApO2FbKGNbZT4+Ml18MCkrOD4+MF09MTtpPWc7cmV0dXJufWlmKChkWyhjW2U+PjJdfDApKzg+PjBdfDB8MCkhPTA/KGJOKGNbZT4+Ml18MCksaD0oY1tmPj4yXXwwKSs0MHwwLGNbaD4+Ml09KGNbaD4+Ml18MCkrLTEsMD09KGNbKGNbZj4+Ml18MCkrNDA+PjJdfDApKTowKWFbKGNbZj4+Ml18MCkrMjA+PjBdPTA7YVsoY1tlPj4yXXwwKSs4Pj4wXT0wO1JCKGNbZj4+Ml18MCk7aT1nO3JldHVybn1mdW5jdGlvbiBhTihkKXtkPWR8MDt2YXIgZj0wLGc9MCxoPTAsaj0wO2g9aTtpPWkrMTZ8MDtqPWgrOHwwO2Y9aCs0fDA7Zz1oO2Nbaj4+Ml09ZDtjW2Y+PjJdPWNbKGNbaj4+Ml18MCkrND4+Ml07aWYoKGNbKGNbZj4+Ml18MCkrNzY+PjJdfDApIT0oY1tqPj4yXXwwKSl7aT1oO3JldHVybn1jWyhjW2Y+PjJdfDApKzc2Pj4yXT0wO2o9KGNbZj4+Ml18MCkrMjJ8MDtiW2o+PjFdPShlW2o+PjFdfDApJi05NztjW2c+PjJdPWNbKGNbZj4+Ml18MCkrNzI+PjJdO3doaWxlKDEpe2lmKCEoY1tnPj4yXXwwKSlicmVhazthWyhjW2c+PjJdfDApKzg+PjBdPTE7Y1tnPj4yXT1jWyhjW2c+PjJdfDApKzEyPj4yXX1pPWg7cmV0dXJufVxuZnVuY3Rpb24gVG0oYixlLGYpe2I9YnwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wO3g9aTtpPWkrODB8MDtwPXgrNjR8MDt3PXgrNjB8MDtxPXgrNTZ8MDtyPXgrNTJ8MDt1PXgrNDh8MDt2PXgrNDR8MDttPXgrOHwwO3M9eCs0MHwwO3Q9eCszNnwwO249eCszMnwwO289eCsyOHwwO2w9eDtnPXgrMjR8MDtqPXgrMjB8MDtoPXgrMTZ8MDtjW3A+PjJdPWI7Y1t3Pj4yXT1lO2NbcT4+Ml09ZjtpZihjW2NbcT4+Ml0+PjJdfDApe2k9eDtyZXR1cm59Y1tyPj4yXT1kWyhjW3A+PjJdfDApKzUyPj4wXTthWyhjW3c+PjJdfDApKzMzPj4wXT0xO3N3aXRjaChjW2Nbdz4+Ml0+PjJdfDApe2Nhc2UgMzpjYXNlIDE6e2NbdT4+Ml09Y1soY1t3Pj4yXXwwKSsxMj4+Ml07Y1t2Pj4yXT1jWyhjW3c+PjJdfDApKzE2Pj4yXTtpZihhWyhjW3U+PjJdfDApKzM0Pj4wXXwwKXtUbShjW3A+PjJdfDAsY1t2Pj4yXXwwLGNbcT4+Ml18MCk7cz0oY1t2Pj4yXXwwKSsyNHwwO3Q9Y1tzKzQ+PjJdfDA7dT0oY1t3Pj4yXXwwKSsyNHwwO2NbdT4+Ml09Y1tzPj4yXTtjW3UrND4+Ml09dDthWyhjW3c+PjJdfDApKzMyPj4wXT1hWyhjW3Y+PjJdfDApKzMyPj4wXXwwO2k9eDtyZXR1cm59bz0oYVsoY1t2Pj4yXXwwKSszND4+MF18MCkhPTA7VG0oY1twPj4yXXwwLGNbdT4+Ml18MCxjW3E+PjJdfDApO2lmKG8pe3M9KGNbdT4+Ml18MCkrMjR8MDt0PWNbcys0Pj4yXXwwO3Y9KGNbdz4+Ml18MCkrMjR8MDtjW3Y+PjJdPWNbcz4+Ml07Y1t2KzQ+PjJdPXQ7YVsoY1t3Pj4yXXwwKSszMj4+MF09YVsoY1t1Pj4yXXwwKSszMj4+MF18MDtpPXg7cmV0dXJufVRtKGNbcD4+Ml18MCxjW3Y+PjJdfDAsY1txPj4yXXwwKTt3aGlsZSgxKXtpZihhWyhjW3U+PjJdfDApKzMyPj4wXXwwKWJyZWFrO2lmKGFbKGNbdj4+Ml18MCkrMzI+PjBdfDApYnJlYWs7aWYoY1tjW3E+PjJdPj4yXXwwKWJyZWFrO289KGNbcj4+Ml18MCkhPTA/LTE6MTtsPShjW3U+PjJdfDApKzI0fDA7bj0oY1t2Pj4yXXwwKSsyNHwwO249UVIoY1tsPj4yXXwwLGNbbCs0Pj4yXXwwLGNbbj4+Ml18MCxjW24rND4+Ml18MCl8MDtuPWFTKG98MCwoKG98MCk8MCk8PDMxPj4zMXwwLG58MCxDfDApfDA7bz1tO2Nbbz4+Ml09bjtjW28rND4+Ml09QztvPW07aWYoKGNbbz4+Ml18MCk9PTAmKGNbbys0Pj4yXXwwKT09MClicmVhaztiPWNbcD4+Ml18MDtpZigoY1ttKzQ+PjJdfDApPDApe1RtKGIsY1t1Pj4yXXwwLGNbcT4+Ml18MCk7Y29udGludWV9ZWxzZXtUbShiLGNbdj4+Ml18MCxjW3E+PjJdfDApO2NvbnRpbnVlfX1uPShjW3U+PjJdfDApKzI0fDA7bz1jW24rND4+Ml18MDtyPShjW3c+PjJdfDApKzI0fDA7Y1tyPj4yXT1jW24+PjJdO2Nbcis0Pj4yXT1vO2lmKGRbKGNbdT4+Ml18MCkrMzI+PjBdfDApYj0xO2Vsc2UgYj0oZFsoY1t2Pj4yXXwwKSszMj4+MF18MCkhPTA7YVsoY1t3Pj4yXXwwKSszMj4+MF09YiYxO2lmKChjW2Nbdz4+Ml0+PjJdfDApIT0xKXtpPXg7cmV0dXJufWlmKCEoZFsoY1t3Pj4yXXwwKSszMj4+MF18MCkpe2k9eDtyZXR1cm59YTpkbyBpZigoY1soY1t2Pj4yXXwwKSsyMD4+Ml18MCkhPTA/KGNbY1soY1t2Pj4yXXwwKSsyMD4+Ml0+PjJdfDApIT0wOjApe2Nbcz4+Ml09Y1soY1t2Pj4yXXwwKSsyMD4+Ml07d2hpbGUoMSl7aWYoY1tjW3E+PjJdPj4yXXwwKWJyZWFrIGE7aWYoZFsoY1t2Pj4yXXwwKSszMj4+MF18MClicmVhayBhO1ZSKGNbKGNbcz4+Ml18MCkrMjg+PjJdfDAsMCxjWyhjW3M+PjJdfDApKzMyPj4yXXwwKXwwO1RtKGNbcD4+Ml18MCxjW3Y+PjJdfDAsY1txPj4yXXwwKX19d2hpbGUoMCk7aWYoIShjWyhjW3U+PjJdfDApKzIwPj4yXXwwKSl7aT14O3JldHVybn1pZighKGNbY1soY1t1Pj4yXXwwKSsyMD4+Ml0+PjJdfDApKXtpPXg7cmV0dXJufWNbdD4+Ml09Y1soY1t1Pj4yXXwwKSsyMD4+Ml07d2hpbGUoMSl7aWYoY1tjW3E+PjJdPj4yXXwwKXtrPTUzO2JyZWFrfWlmKGRbKGNbdT4+Ml18MCkrMzI+PjBdfDApe2s9NTM7YnJlYWt9VlIoY1soY1t0Pj4yXXwwKSsyOD4+Ml18MCwwLGNbKGNbdD4+Ml18MCkrMzI+PjJdfDApfDA7VG0oY1twPj4yXXwwLGNbdT4+Ml18MCxjW3E+PjJdfDApfWlmKChrfDApPT01Myl7aT14O3JldHVybn1icmVha31jYXNlIDQ6e2Nbbj4+Ml09Y1soY1t3Pj4yXXwwKSsxMj4+Ml07Y1tvPj4yXT1jWyhjW3c+PjJdfDApKzE2Pj4yXTt2PShjW3I+PjJdfDApIT0wPy0xOjE7dD0oY1tuPj4yXXwwKSsyNHwwO3U9KGNbbz4+Ml18MCkrMjR8MDt1PVFSKGNbdD4+Ml18MCxjW3QrND4+Ml18MCxjW3U+PjJdfDAsY1t1KzQ+PjJdfDApfDA7dT1hUyh2fDAsKCh2fDApPDApPDwzMT4+MzF8MCx1fDAsQ3wwKXwwO3Y9bDtjW3Y+PjJdPXU7Y1t2KzQ+PjJdPUM7ZG8gaWYoKGRbKGNbbz4+Ml18MCkrMzI+PjBdfDApPT0wPyEoKGNbbCs0Pj4yXXwwKTwwPyhkWyhjW24+PjJdfDApKzMyPj4wXXwwKT09MDowKTowKXtpZigoZFsoY1tuPj4yXXwwKSszMj4+MF18MCk9PTA/KHY9bCx1PWNbdis0Pj4yXXwwLCEoKGRbKGNbbz4+Ml18MCkrMzI+PjBdfDApPT0wJigodXwwKT4wfCh1fDApPT0wJihjW3Y+PjJdfDApPj4+MD4wKSkpOjApe1RtKGNbcD4+Ml18MCxjW24+PjJdfDAsY1txPj4yXXwwKTtUbShjW3A+PjJdfDAsY1tvPj4yXXwwLGNbcT4+Ml18MCk7YnJlYWt9VG0oY1twPj4yXXwwLGNbbz4+Ml18MCxjW3E+PjJdfDApfWVsc2Ugaz0zMzt3aGlsZSgwKTtpZigoa3wwKT09MzMpVG0oY1twPj4yXXwwLGNbbj4+Ml18MCxjW3E+PjJdfDApO2lmKGRbKGNbbj4+Ml18MCkrMzI+PjBdfDApYj0oZFsoY1tvPj4yXXwwKSszMj4+MF18MCkhPTA7ZWxzZSBiPTA7YVsoY1t3Pj4yXXwwKSszMj4+MF09YiYxO3Y9KGNbcj4+Ml18MCkhPTA/LTE6MTt0PShjW24+PjJdfDApKzI0fDA7dT0oY1tvPj4yXXwwKSsyNHwwO3U9UVIoY1t0Pj4yXXwwLGNbdCs0Pj4yXXwwLGNbdT4+Ml18MCxjW3UrND4+Ml18MCl8MDt1PWFTKHZ8MCwoKHZ8MCk8MCk8PDMxPj4zMXwwLHV8MCxDfDApfDA7dj1sO2Nbdj4+Ml09dTtjW3YrND4+Ml09QztpZigoZFsoY1tvPj4yXXwwKSszMj4+MF18MCk9PTA/ISgoY1tsKzQ+PjJdfDApPDA/KGRbKGNbbj4+Ml18MCkrMzI+PjBdfDApPT0wOjApOjApe3U9KGNbbz4+Ml18MCkrMjR8MDt2PWNbdSs0Pj4yXXwwO3c9KGNbdz4+Ml18MCkrMjR8MDtjW3c+PjJdPWNbdT4+Ml07Y1t3KzQ+PjJdPXY7aT14O3JldHVybn11PShjW24+PjJdfDApKzI0fDA7dj1jW3UrND4+Ml18MDt3PShjW3c+PjJdfDApKzI0fDA7Y1t3Pj4yXT1jW3U+PjJdO2Nbdys0Pj4yXT12O2k9eDtyZXR1cm59Y2FzZSAyOntjW2c+PjJdPWNbKGNbdz4+Ml18MCkrMTI+PjJdO2Nbaj4+Ml09Y1soY1t3Pj4yXXwwKSsxNj4+Ml07aWYoIShkWyhjW2o+PjJdfDApKzMzPj4wXXwwKSlUbShjW3A+PjJdfDAsY1tqPj4yXXwwLGNbcT4+Ml18MCk7VG0oY1twPj4yXXwwLGNbZz4+Ml18MCxjW3E+PjJdfDApO2I6ZG8gaWYoIShkWyhjW2c+PjJdfDApKzMyPj4wXXwwKSl3aGlsZSgxKXtpZihjW2NbcT4+Ml0+PjJdfDApYnJlYWsgYjtpZihhWyhjW2o+PjJdfDApKzMyPj4wXXwwKWJyZWFrIGI7dT0oY1tyPj4yXXwwKSE9MD8tMToxO3Q9KGNbZz4+Ml18MCkrMjR8MDt2PShjW2o+PjJdfDApKzI0fDA7dj1RUihjW3Q+PjJdfDAsY1t0KzQ+PjJdfDAsY1t2Pj4yXXwwLGNbdis0Pj4yXXwwKXwwO3Y9YVModXwwLCgodXwwKTwwKTw8MzE+PjMxfDAsdnwwLEN8MCl8MDt1PUM7aWYoISgodXwwKT4wfCh1fDApPT0wJnY+Pj4wPjApKWJyZWFrIGI7VG0oY1twPj4yXXwwLGNbaj4+Ml18MCxjW3E+PjJdfDApfXdoaWxlKDApO3Q9KGNbZz4+Ml18MCkrMjR8MDt1PWNbdCs0Pj4yXXwwO3Y9KGNbdz4+Ml18MCkrMjR8MDtjW3Y+PjJdPWNbdD4+Ml07Y1t2KzQ+PjJdPXU7YVsoY1t3Pj4yXXwwKSszMj4+MF09YVsoY1tnPj4yXXwwKSszMj4+MF18MDtpPXg7cmV0dXJufWRlZmF1bHQ6e2NbaD4+Ml09Y1soY1t3Pj4yXXwwKSsyMD4+Ml07Vm0oY1toPj4yXXwwKTt1PVdtKGNbcD4+Ml18MCxjW2g+PjJdfDAsKGNbdz4+Ml18MCkrMzJ8MCl8MDtjW2NbcT4+Ml0+PjJdPXU7dT0oY1toPj4yXXwwKSsxNnwwO3Y9Y1t1KzQ+PjJdfDA7dz0oY1t3Pj4yXXwwKSsyNHwwO2Nbdz4+Ml09Y1t1Pj4yXTtjW3crND4+Ml09djtpPXg7cmV0dXJufX19ZnVuY3Rpb24gVW0oYixkLGUsZixnLGgpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO3ZhciBqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MDtyPWk7aT1pKzQ4fDA7aj1yKzMyfDA7az1yKzI4fDA7bD1yKzI0fDA7bT1yKzIwfDA7bj1yKzE2fDA7bz1yKzEyfDA7cT1yKzh8MDtwPXI7Y1tqPj4yXT1iO2Nbaz4+Ml09ZDtjW2w+PjJdPWU7Y1ttPj4yXT1mO2Nbbj4+Ml09ZztjW28+PjJdPWg7Y1txPj4yXT1jW2NbbT4+Ml0+PjJdO2lmKCEoY1txPj4yXXwwKSl7Y1txPj4yXT1jW2s+PjJdO3A9X2woY1txPj4yXXwwLGNbbj4+Ml18MCl8MDtjW3E+PjJdPShjW3E+PjJdfDApK3A7cD1jW3E+PjJdfDA7cT1jW20+PjJdfDA7Y1txPj4yXT1wO2k9cjtyZXR1cm59ZG0oMCxxKTt3aGlsZSgxKXtpZigoY1txPj4yXXwwKT4+PjA8KChjW2s+PjJdfDApKyhjW2w+PjJdfDApfDApPj4+MCliPShhW2NbcT4+Ml0+PjBdfDApPT0wO2Vsc2UgYj0wO2Q9Y1txPj4yXXwwO2lmKCFiKWJyZWFrO2NbcT4+Ml09ZCsxfWlmKGQ+Pj4wPj0oKGNbaz4+Ml18MCkrKGNbbD4+Ml18MCl8MCk+Pj4wKXthW2Nbbz4+Ml0+PjBdPTE7cD1jW3E+PjJdfDA7cT1jW20+PjJdfDA7Y1txPj4yXT1wO2k9cjtyZXR1cm59ZWxzZXtsPV9sKGNbcT4+Ml18MCxwKXwwO2NbcT4+Ml09KGNbcT4+Ml18MCkrbDtsPShjW2o+PjJdfDApIT0wPy0xOjE7bz1wO289YVMobHwwLCgobHwwKTwwKTw8MzE+PjMxfDAsY1tvPj4yXXwwLGNbbys0Pj4yXXwwKXwwO3A9Y1tuPj4yXXwwO249cDtvPVJSKGNbbj4+Ml18MCxjW24rND4+Ml18MCxvfDAsQ3wwKXwwO2NbcD4+Ml09bztjW3ArND4+Ml09QztwPWNbcT4+Ml18MDtxPWNbbT4+Ml18MDtjW3E+PjJdPXA7aT1yO3JldHVybn19ZnVuY3Rpb24gVm0oYSl7YT1hfDA7dmFyIGI9MCxkPTA7ZD1pO2k9aSsxNnwwO2I9ZDtjW2I+PjJdPWE7aWYoY1soY1tiPj4yXXwwKSsyND4+Ml18MClLZChjWyhjW2I+PjJdfDApKzI4Pj4yXXwwKTtjWyhjW2I+PjJdfDApKzI4Pj4yXT0wO2NbKGNbYj4+Ml18MCkrMzI+PjJdPTA7Y1soY1tiPj4yXXwwKSsyND4+Ml09MDtpPWQ7cmV0dXJufWZ1bmN0aW9uIFdtKGEsYixlKXthPWF8MDtiPWJ8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wO2w9aTtpPWkrMzJ8MDttPWwrMjB8MDtmPWwrMTZ8MDtnPWwrMTJ8MDtrPWwrOHwwO2g9bCs0fDA7aj1sO2NbbT4+Ml09YTtjW2Y+PjJdPWI7Y1tnPj4yXT1lO2Nbaz4+Ml09MDtjW2g+PjJdPWNbZj4+Ml07Y1tqPj4yXT1jW2NbbT4+Ml0+PjJdO2I9Y1ttPj4yXXwwO2lmKGNbKGNbZj4+Ml18MCkrNDA+PjJdfDApe2Nbaz4+Ml09WG0oYixjW2Y+PjJdfDAsY1tnPj4yXXwwKXwwO209Y1trPj4yXXwwO2k9bDtyZXR1cm4gbXwwfWlmKChkW2IrNTI+PjBdfDB8MCkhPShkWyhjW2o+PjJdfDApKzIzMT4+MF18MHwwKT8oY1soY1toPj4yXXwwKSs0Pj4yXXwwKSE9MDowKXthbShkWyhjW2o+PjJdfDApKzIzMT4+MF18MCxjW2NbaD4+Ml0+PjJdfDAsY1soY1toPj4yXXwwKSs0Pj4yXXwwLChjW2g+PjJdfDApKzh8MCwoY1toPj4yXXwwKSsxNnwwLChjW2g+PjJdfDApKzMyfDAsY1tnPj4yXXwwKTtjWyhjW2g+PjJdfDApKzI4Pj4yXT1jWyhjW2g+PjJdfDApKzg+PjJdO209Y1trPj4yXXwwO2k9bDtyZXR1cm4gbXwwfVltKGNbaj4+Ml18MCxjW2g+PjJdfDAsY1tnPj4yXXwwKTttPWNbaz4+Ml18MDtpPWw7cmV0dXJuIG18MH1mdW5jdGlvbiBYbShiLGUsZil7Yj1ifDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEQ9MCxFPTA7RT1pO2k9aSsxOTJ8MDtoPUUrMTcyfDA7Zz1FKzE2OHwwO2o9RSsxNjR8MDtrPUUrMTYwfDA7QT1FKzE1NnwwO3Y9RSsxNTJ8MDt6PUUrMTQ4fDA7bz1FKzE3NnwwO249RSsxNDR8MDtsPUUrOHwwO3A9RSsxNDB8MDtyPUU7cT1FKzEzNnwwO3U9RSsxMzJ8MDtzPUUrMTI4fDA7bT1FKzEyNHwwO3c9RSsxMjB8MDt5PUUrMTE2fDA7eD1FKzExMnwwO3Q9RSsxMDh8MDtCPUUrMTA0fDA7Y1tnPj4yXT1iO2Nbaj4+Ml09ZTtjW2s+PjJdPWY7Y1tBPj4yXT0wO2Nbdj4+Ml09Y1tqPj4yXTtjW3o+PjJdPWNbY1tnPj4yXT4+Ml07YVtvPj4wXT0wO2lmKChjWyhjW2o+PjJdfDApKzY0Pj4yXXwwKT09MT8oY1soY1tqPj4yXXwwKSs0MD4+Ml18MCkhPTA6MCl7Y1tBPj4yXT1abShjW3o+PjJdfDAsY1soY1tqPj4yXXwwKSs3MisyMD4+Ml18MCwoY1t2Pj4yXXwwKSsxNnwwLChjW3Y+PjJdfDApKzI4fDAsKGNbdj4+Ml18MCkrMzJ8MCl8MDtpZighKGNbKGNbdj4+Ml18MCkrMjg+PjJdfDApKWFbbz4+MF09MX1lbHNlIEQ9NTthOmRvIGlmKChEfDApPT01KXtjW24+PjJdPWRbKGNbZz4+Ml18MCkrNTI+PjBdO2c9bDtlPWcrOTZ8MDtkb3tjW2c+PjJdPTA7Zz1nKzR8MH13aGlsZSgoZ3wwKTwoZXwwKSk7d2hpbGUoMSl7aWYoZFtvPj4wXXwwKWJyZWFrIGE7Y1twPj4yXT0wO2Y9cjtjW2Y+PjJdPTA7Y1tmKzQ+PjJdPTA7Y1txPj4yXT0wO3doaWxlKDEpe2lmKGNbQT4+Ml18MClicmVhaztpZigoY1txPj4yXXwwKT49KGNbKGNbaj4+Ml18MCkrNjQ+PjJdfDApKWJyZWFrO2lmKGRbbz4+MF18MClicmVhaztjW0E+PjJdPV9tKGNbej4+Ml18MCxjW2o+PjJdfDAsY1txPj4yXXwwLGwrKChjW3E+PjJdfDApKjI0fDApfDAsbyl8MDtkbyBpZighKGNbbCsoKGNbcT4+Ml18MCkqMjR8MCk+PjJdfDApKXtpZigoY1twPj4yXXwwKSE9MD8oYj0oY1tuPj4yXXwwKSE9MD8tMToxLGU9cixmPWwrKChjW3E+PjJdfDApKjI0fDApKzh8MCxmPVFSKGNbZT4+Ml18MCxjW2UrND4+Ml18MCxjW2Y+PjJdfDAsY1tmKzQ+PjJdfDApfDAsYVMoYnwwLCgoYnwwKTwwKTw8MzE+PjMxfDAsZnwwLEN8MCl8MCwoQ3wwKT49MCk6MClicmVhaztlPWwrKChjW3E+PjJdfDApKjI0fDApKzh8MDtiPWNbZSs0Pj4yXXwwO2Y9cjtjW2Y+PjJdPWNbZT4+Ml07Y1tmKzQ+PjJdPWI7Y1twPj4yXT0xfXdoaWxlKDApO2NbcT4+Ml09KGNbcT4+Ml18MCkrMX1jW3E+PjJdPTA7d2hpbGUoMSl7aWYoKGNbcT4+Ml18MCk+PShjWyhjW2o+PjJdfDApKzY0Pj4yXXwwKSlicmVhazt3aGlsZSgxKXtpZihjW0E+PjJdfDApYnJlYWs7aWYoZFtvPj4wXXwwKWJyZWFrO2lmKGNbbCsoKGNbcT4+Ml18MCkqMjR8MCk+PjJdfDApYnJlYWs7Yj0oY1tuPj4yXXwwKSE9MD8tMToxO2U9bCsoKGNbcT4+Ml18MCkqMjR8MCkrOHwwO2Y9cjtmPVFSKGNbZT4+Ml18MCxjW2UrND4+Ml18MCxjW2Y+PjJdfDAsY1tmKzQ+PjJdfDApfDA7YVMoYnwwLCgoYnwwKTwwKTw8MzE+PjMxfDAsZnwwLEN8MCl8MDtpZigoQ3wwKT49MClicmVhaztjW0E+PjJdPV9tKGNbej4+Ml18MCxjW2o+PjJdfDAsY1txPj4yXXwwLGwrKChjW3E+PjJdfDApKjI0fDApfDAsbyl8MDtiPShjW24+PjJdfDApIT0wPy0xOjE7ZT1sKygoY1txPj4yXXwwKSoyNHwwKSs4fDA7Zj1yO2Y9UVIoY1tlPj4yXXwwLGNbZSs0Pj4yXXwwLGNbZj4+Ml18MCxjW2YrND4+Ml18MCl8MDtmPWFTKGJ8MCwoKGJ8MCk8MCk8PDMxPj4zMXwwLGZ8MCxDfDApfDA7Yj1DO2lmKCEoKGJ8MCk+MHwoYnwwKT09MCZmPj4+MD4wKSljb250aW51ZTtlPWwrKChjW3E+PjJdfDApKjI0fDApKzh8MDtiPWNbZSs0Pj4yXXwwO2Y9cjtjW2Y+PjJdPWNbZT4+Ml07Y1tmKzQ+PjJdPWI7Y1txPj4yXT0wfWNbcT4+Ml09KGNbcT4+Ml18MCkrMX1pZihkW28+PjBdfDApY29udGludWU7Y1t1Pj4yXT0wO2Nbcz4+Ml09Y1tsKygoKGNbKGNbaj4+Ml18MCkrNjQ+PjJdfDApLTF8MCkqMjR8MCkrMjA+PjJdO2NbbT4+Ml09SWQoKGNbcz4+Ml18MCkrMXwwKXwwO2lmKCEoY1ttPj4yXXwwKSlicmVhaztUUihjW20+PjJdfDAsY1tsKygoKGNbKGNbaj4+Ml18MCkrNjQ+PjJdfDApLTF8MCkqMjR8MCkrMTY+PjJdfDAsKGNbcz4+Ml18MCkrMXwwKXwwO2NbcT4+Ml09MDt3aGlsZSgxKXtpZigoY1txPj4yXXwwKT49KChjWyhjW2o+PjJdfDApKzY0Pj4yXXwwKS0xfDApKWJyZWFrO2lmKCEoY1tsKygoY1txPj4yXXwwKSoyNHwwKT4+Ml18MCkpe2Nbdz4+Ml09Y1tsKygoY1txPj4yXXwwKSoyNHwwKSsxNj4+Ml07Y1t5Pj4yXT1jW20+PjJdO2NbeD4+Ml09Y1ttPj4yXTtjW3Q+PjJdPShjWyhjW2o+PjJdfDApKzY0Pj4yXXwwKS0xLShjW3E+PjJdfDApO2NbQj4+Ml09JG0oeCxjW3Q+PjJdfDAsMCwxLHcseSl8MDtpZighKGNbQj4+Ml18MCkpYnJlYWs7Y1t1Pj4yXT0oY1t4Pj4yXXwwKS0oY1ttPj4yXXwwKX1jW3E+PjJdPShjW3E+PjJdfDApKzF9aWYoKGNbcT4+Ml18MCk9PSgoY1soY1tqPj4yXXwwKSs2ND4+Ml18MCktMXwwKSl7RD0zNTticmVha31LZChjW20+PjJdfDApfWlmKChEfDApPT0zNSl7ej1yO0I9Y1t6KzQ+PjJdfDA7RD0oY1t2Pj4yXXwwKSsxNnwwO2NbRD4+Ml09Y1t6Pj4yXTtjW0QrND4+Ml09QjtjWyhjW3Y+PjJdfDApKzI4Pj4yXT1jW20+PjJdO2NbKGNbdj4+Ml18MCkrMzI+PjJdPWNbdT4+Ml07Y1soY1t2Pj4yXXwwKSsyND4+Ml09MTticmVha31jW2g+PjJdPTc7RD1jW2g+PjJdfDA7aT1FO3JldHVybiBEfDB9d2hpbGUoMCk7YVtjW2s+PjJdPj4wXT1hW28+PjBdfDA7Y1toPj4yXT1jW0E+PjJdO0Q9Y1toPj4yXXwwO2k9RTtyZXR1cm4gRHwwfWZ1bmN0aW9uIFltKGIsZSxmKXtiPWJ8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wO249aTtpPWkrMzJ8MDtnPW4rMjR8MDtqPW4rMjB8MDtrPW4rMTZ8MDttPW4rMTJ8MDtsPW4rOHwwO2g9bjtjW2c+PjJdPWI7Y1tqPj4yXT1lO2Nbaz4+Ml09ZjtjW2w+PjJdPShjW2Nbaj4+Ml0+PjJdfDApKyhjWyhjW2o+PjJdfDApKzQ+PjJdfDApO2U9Y1tqPj4yXXwwO2lmKGNbKGNbaj4+Ml18MCkrOD4+Ml18MCljW20+PjJdPWNbZSs4Pj4yXTtlbHNlIGNbbT4+Ml09Y1tlPj4yXTtpZigoY1ttPj4yXXwwKT4+PjA+PShjW2w+PjJdfDApPj4+MCl7YVtjW2s+PjJdPj4wXT0xO2k9bjtyZXR1cm59Zj1fbChjW20+PjJdfDAsaCl8MDtjW20+PjJdPShjW20+PjJdfDApK2Y7aWYoKGRbKGNbZz4+Ml18MCkrMjMxPj4wXXwwKSE9MD8oY1soY1tqPj4yXXwwKSs4Pj4yXXwwKSE9MDowKXtnPWg7aD0oY1tqPj4yXXwwKSsxNnwwO2Y9aDtnPVFSKGNbZj4+Ml18MCxjW2YrND4+Ml18MCxjW2c+PjJdfDAsY1tnKzQ+PjJdfDApfDA7Y1toPj4yXT1nO2NbaCs0Pj4yXT1DfWVsc2V7Zz1oO2g9KGNbaj4+Ml18MCkrMTZ8MDtmPWg7Zz1SUihjW2Y+PjJdfDAsY1tmKzQ+PjJdfDAsY1tnPj4yXXwwLGNbZys0Pj4yXXwwKXwwO2NbaD4+Ml09ZztjW2grND4+Ml09Q31jWyhjW2o+PjJdfDApKzI4Pj4yXT1jW20+PjJdO2RtKDAsbSk7Y1soY1tqPj4yXXwwKSszMj4+Ml09KGNbbT4+Ml18MCktKGNbKGNbaj4+Ml18MCkrMjg+PjJdfDApO3doaWxlKDEpe2lmKChjW20+PjJdfDApPj4+MDwoY1tsPj4yXXwwKT4+PjApYj0oYVtjW20+PjJdPj4wXXwwKT09MDtlbHNlIGI9MDtlPWNbbT4+Ml18MDtpZighYilicmVhaztjW20+PjJdPWUrMX1jWyhjW2o+PjJdfDApKzg+PjJdPWU7YVtjW2s+PjJdPj4wXT0wO2k9bjtyZXR1cm59ZnVuY3Rpb24gWm0oYSxiLGUsZixnKXthPWF8MDtiPWJ8MDtlPWV8MDtmPWZ8MDtnPWd8MDt2YXIgaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wO3g9aTtpPWkrNjR8MDtwPXgrNjB8MDtoPXgrNTZ8MDtqPXgrNTJ8MDtxPXgrNDh8MDtyPXgrNDR8MDtzPXgrNDB8MDttPXgrMzZ8MDtrPXgrMzJ8MDtvPXgrMjh8MDtuPXgrMjR8MDt3PXgrMjB8MDt2PXgrMTZ8MDt1PXgrMTJ8MDtsPXgrOHwwO3Q9eDtjW2g+PjJdPWE7Y1tqPj4yXT1iO2NbcT4+Ml09ZTtjW3I+PjJdPWY7Y1tzPj4yXT1nO2NbbT4+Ml09Y1soY1tqPj4yXXwwKSs4Pj4yXTtjW2s+PjJdPWNbY1tqPj4yXT4+Ml07Y1tvPj4yXT0oZFsoY1toPj4yXXwwKSsyMzE+PjBdfDB8MCkhPTA/MTgyOjE4MztpZighKGNbbT4+Ml18MCkpe2NbY1tyPj4yXT4+Ml09MDtjW3A+PjJdPTA7dz1jW3A+PjJdfDA7aT14O3JldHVybiB3fDB9d2hpbGUoMSl7Y1tuPj4yXT1jW2NbY1tqPj4yXT4+Ml0+PjJdO2lmKCEoY1soY1tuPj4yXXwwKSs4MD4+Ml18MCkpe2g9NDticmVha31mPShjW2Nbaz4+Ml0+PjJdfDApKzg4fDA7ZT1jW2YrND4+Ml18MDtnPXQ7Y1tnPj4yXT1jW2Y+PjJdO2NbZys0Pj4yXT1lO2Nbdz4+Ml09V2woY1toPj4yXXwwLGNbY1trPj4yXT4+Ml18MCx2LHUpfDA7Y1tsPj4yXT0xO3doaWxlKDEpe2lmKGNbdz4+Ml18MClicmVhaztpZigoY1tsPj4yXXwwKT49KGNbbT4+Ml18MCkpYnJlYWs7aWYoIShjWyhjWyhjW2s+PjJdfDApKyhjW2w+PjJdPDwyKT4+Ml18MCkrODA+PjJdfDApKWJyZWFrO2U9KGNbKGNbaz4+Ml18MCkrKGNbbD4+Ml08PDIpPj4yXXwwKSs4OHwwO2c9dDtpZighKChjW2U+PjJdfDApPT0oY1tnPj4yXXwwKT8oY1tlKzQ+PjJdfDApPT0oY1tnKzQ+PjJdfDApOjApKWJyZWFrO2Nbdz4+Ml09V2woY1toPj4yXXwwLGNbKGNbaz4+Ml18MCkrKGNbbD4+Ml08PDIpPj4yXXwwLDAsMCl8MDtjW2w+PjJdPShjW2w+PjJdfDApKzF9aWYoY1t3Pj4yXXwwKXtoPTEyO2JyZWFrfVRsKGNbY1tqPj4yXT4+Ml18MCxjW20+PjJdfDAsY1tsPj4yXXwwLGNbbz4+Ml18MCk7aWYoKGNbdT4+Ml18MCk+MD8oY1soY1tjW2s+PjJdPj4yXXwwKSs1Nj4+Ml18MCkhPTA6MCl7Y1t3Pj4yXT1VbChjW2o+PjJdfDAsY1t2Pj4yXXwwLChjW3U+PjJdfDApKzF8MCl8MDtpZihjW3c+PjJdfDApe2g9MTY7YnJlYWt9Y1t2Pj4yXT1jWyhjW2o+PjJdfDApKzE2Pj4yXX1pZigoY1soY1tqPj4yXXwwKSsyND4+Ml18MCk+PTApWGwoY1soY1tqPj4yXXwwKSsyND4+Ml18MCwxLHYsdSk7aWYoKGNbdT4+Ml18MCk+MCl7aD0yMTticmVha319aWYoKGh8MCk9PTQpY1tjW3I+PjJdPj4yXT0wO2Vsc2UgaWYoKGh8MCk9PTEyKXtjW3A+PjJdPWNbdz4+Ml07dz1jW3A+PjJdfDA7aT14O3JldHVybiB3fDB9ZWxzZSBpZigoaHwwKT09MTYpe2NbcD4+Ml09Y1t3Pj4yXTt3PWNbcD4+Ml18MDtpPXg7cmV0dXJuIHd8MH1lbHNlIGlmKChofDApPT0yMSl7Y1tjW3I+PjJdPj4yXT1jW3Y+PjJdO3Y9Y1t0KzQ+PjJdfDA7dz1jW3E+PjJdfDA7Y1t3Pj4yXT1jW3Q+PjJdO2Nbdys0Pj4yXT12O2NbY1tzPj4yXT4+Ml09Y1t1Pj4yXX1jW3A+PjJdPTA7dz1jW3A+PjJdfDA7aT14O3JldHVybiB3fDB9ZnVuY3Rpb24gX20oYixkLGUsZixnKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDt2YXIgaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MDtwPWk7aT1pKzMyfDA7aD1wKzI0fDA7aj1wKzIwfDA7az1wKzE2fDA7bD1wKzEyfDA7bT1wKzh8MDtvPXArNHwwO249cDtjW2g+PjJdPWI7Y1tqPj4yXT1kO2Nbaz4+Ml09ZTtjW2w+PjJdPWY7Y1ttPj4yXT1nO2Nbbz4+Ml09MDtpZigoY1soY1tqPj4yXXwwKSs0ND4+Ml18MCk9PShjW2s+PjJdfDApKXtZbShjW2g+PjJdfDAsY1tqPj4yXXwwLGNbbT4+Ml18MCk7Y1soY1tsPj4yXXwwKSsxNj4+Ml09Y1soY1tqPj4yXXwwKSsyOD4+Ml07Y1soY1tsPj4yXXwwKSsyMD4+Ml09Y1soY1tqPj4yXXwwKSszMj4+Ml07Yj0oY1tqPj4yXXwwKSsxNnwwO249Y1tiKzQ+PjJdfDA7Zz0oY1tsPj4yXXwwKSs4fDA7Y1tnPj4yXT1jW2I+PjJdO2NbZys0Pj4yXT1uO289Y1tvPj4yXXwwO2k9cDtyZXR1cm4gb3wwfWNbbj4+Ml09KGNbaj4+Ml18MCkrNzIrKChjW2s+PjJdfDApKjI0fDApO2lmKCEoY1soY1tuPj4yXXwwKSsyMD4+Ml18MCkpe2NbY1tsPj4yXT4+Ml09MTtvPWNbbz4+Ml18MDtpPXA7cmV0dXJuIG98MH1jW28+PjJdPVptKGNbaD4+Ml18MCxjWyhjW24+PjJdfDApKzIwPj4yXXwwLChjW2w+PjJdfDApKzh8MCwoY1tsPj4yXXwwKSsxNnwwLChjW2w+PjJdfDApKzIwfDApfDA7aWYoY1soY1tsPj4yXXwwKSsxNj4+Ml18MCl7bz1jW28+PjJdfDA7aT1wO3JldHVybiBvfDB9YVtjW20+PjJdPj4wXT0xO289Y1tvPj4yXXwwO2k9cDtyZXR1cm4gb3wwfWZ1bmN0aW9uICRtKGIsZSxmLGcsaCxqKXtiPWJ8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDt2YXIgaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsRD0wO0Q9aTtpPWkrOTZ8MDtrPUQrODB8MDtsPUQrNzZ8MDttPUQrNzJ8MDtuPUQrNjh8MDtvPUQrNjR8MDtwPUQrNjB8MDtxPUQrNTZ8MDt4PUQrNTJ8MDt5PUQrNDh8MDt6PUQrNDR8MDtyPUQrNDB8MDtzPUQrMzZ8MDtBPUQrMzJ8MDt2PUQrMjR8MDt0PUQrMTZ8MDt1PUQrOHwwO3c9RDtjW2w+PjJdPWI7Y1ttPj4yXT1lO2Nbbj4+Ml09ZjtjW28+PjJdPWc7Y1twPj4yXT1oO2NbcT4+Ml09ajtjW3g+PjJdPWNbY1tsPj4yXT4+Ml07Y1t5Pj4yXT1jW2NbcD4+Ml0+PjJdO2Nbej4+Ml09Y1tjW3E+PjJdPj4yXTtjW3I+PjJdPTA7Y1tzPj4yXT0wO2lmKChhW2NbeT4+Ml0+PjBdfDApPT0xKXtjW3k+PjJdPShjW3k+PjJdfDApKzE7Zz1jW3k+PjJdfDA7aWYoZFtjW3k+PjJdPj4wXSYxMjgpZz0kbChnLHIpfDA7ZWxzZXtjW3I+PjJdPWRbZz4+MF07Zz0xfWNbeT4+Ml09KGNbeT4+Ml18MCkrZ31pZigoYVtjW3o+PjJdPj4wXXwwKT09MSl7Y1t6Pj4yXT0oY1t6Pj4yXXwwKSsxO2c9Y1t6Pj4yXXwwO2lmKGRbY1t6Pj4yXT4+MF0mMTI4KWc9JGwoZyxzKXwwO2Vsc2V7Y1tzPj4yXT1kW2c+PjBdO2c9MX1jW3o+PjJdPShjW3o+PjJdfDApK2d9d2hpbGUoMSl7aWYoKGNbcj4+Ml18MCkhPShjW3M+PjJdfDApKWlmKChjW3I+PjJdfDApPChjW3M+PjJdfDApKXtabCgwLHkpO2lmKCEoYVtjW3k+PjJdPj4wXXwwKSlicmVhaztjW3k+PjJdPShjW3k+PjJdfDApKzE7Zz1jW3k+PjJdfDA7aWYoZFtjW3k+PjJdPj4wXSYxMjgpZz0kbChnLHIpfDA7ZWxzZXtjW3I+PjJdPWRbZz4+MF07Zz0xfWNbeT4+Ml09KGNbeT4+Ml18MCkrZztjb250aW51ZX1lbHNle1psKDAseik7aWYoIShhW2Nbej4+Ml0+PjBdfDApKWJyZWFrO2Nbej4+Ml09KGNbej4+Ml18MCkrMTtnPWNbej4+Ml18MDtpZihkW2Nbej4+Ml0+PjBdJjEyOClnPSRsKGcscyl8MDtlbHNle2Nbcz4+Ml09ZFtnPj4wXTtnPTF9Y1t6Pj4yXT0oY1t6Pj4yXXwwKStnO2NvbnRpbnVlfWNbQT4+Ml09Y1t4Pj4yXTtqPXY7Y1tqPj4yXT0wO2Nbais0Pj4yXT0wO2o9dDtjW2o+PjJdPTA7Y1tqKzQ+PjJdPTA7aj11O2Nbaj4+Ml09MDtjW2orND4+Ml09MDtpZihjW3I+PjJdfDApe2o9Y1t4Pj4yXXwwO2NbeD4+Ml09aisxO2Fbaj4+MF09MTtqPWNbcj4+Ml18MDtqPUtsKGNbeD4+Ml18MCxqLCgoanwwKTwwKTw8MzE+PjMxKXwwO2NbeD4+Ml09KGNbeD4+Ml18MCkran1hbih5LHQpO2o9dDtqPVFSKGNbaj4+Ml18MCxjW2orND4+Ml18MCwyLDApfDA7aD10O2NbaD4+Ml09ajtjW2grND4+Ml09Qzthbih6LHUpO2g9dTtoPVFSKGNbaD4+Ml18MCxjW2grND4+Ml18MCwyLDApfDA7aj11O2Nbaj4+Ml09aDtjW2orND4+Ml09Qzt3aGlsZSgxKXtqPXU7Yj1jW2o+PjJdfDA7aj1jW2orND4+Ml18MDtlPXQ7aD1jW20+PjJdfDA7aD1SUihjW2U+PjJdfDAsY1tlKzQ+PjJdfDAsaHwwLCgoaHwwKTwwKTw8MzE+PjMxfDApfDA7aWYoISgoYnwwKT09KGh8MCkmKGp8MCk9PShDfDApKSl7aWYoKChjW28+PjJdfDApPT0wPyhoPXUsZT1jW2grND4+Ml18MCxqPXQsYj1jW2orND4+Ml18MCwoZXwwKT4oYnwwKXwoKGV8MCk9PShifDApPyhjW2g+PjJdfDApPj4+MD4oY1tqPj4yXXwwKT4+PjA6MCkpOjApPyhlPXUsaD1jW2U+PjJdfDAsZT1jW2UrND4+Ml18MCxiPXQsaj1jW20+PjJdfDAsaj1SUihjW2I+PjJdfDAsY1tiKzQ+PjJdfDAsanwwLCgoanwwKTwwKTw8MzE+PjMxfDApfDAsYj1DLChlfDApPChifDApfChlfDApPT0oYnwwKSZoPj4+MDw9aj4+PjApOjApQj0xOX1lbHNlIEI9MTk7aWYoKEJ8MCk9PTE5KXtCPTA7Zj0oY1tuPj4yXXwwKSE9MDtlPXQ7Yj11O2o9Zj9jW2UrND4+Ml18MDpjW2IrND4+Ml18MDtoPXc7Y1toPj4yXT1mP2NbZT4+Ml18MDpjW2I+PjJdfDA7Y1toKzQ+PjJdPWo7aD13O2g9UlIoY1toPj4yXXwwLGNbaCs0Pj4yXXwwLDIsMCl8MDtibih4LHYsaCxDKTtoPXY7aD1RUihjW2g+PjJdfDAsY1toKzQ+PjJdfDAsMiwwKXwwO2o9djtjW2o+PjJdPWg7Y1tqKzQ+PjJdPUM7Y1tBPj4yXT0wfWlmKCEoKGNbbj4+Ml18MCk9PTA/KGU9dSxoPWNbZT4+Ml18MCxlPWNbZSs0Pj4yXXwwLGI9dCxqPWNbbT4+Ml18MCxqPVJSKGNbYj4+Ml18MCxjW2IrND4+Ml18MCxqfDAsKChqfDApPDApPDwzMT4+MzF8MCl8MCxiPUMsKGV8MCk8KGJ8MCl8KGV8MCk9PShifDApJmg+Pj4wPD1qPj4+MCk6MCkpQj0yMjtpZigoQnwwKT09MjI/KEI9MCxoPXUsZT1jW2grND4+Ml18MCxqPXQsYj1jW2orND4+Ml18MCwhKChlfDApPChifDApfCgoZXwwKT09KGJ8MCk/KGNbaD4+Ml18MCk+Pj4wPD0oY1tqPj4yXXwwKT4+PjA6MCkpKTowKXtpZighKGFbY1t5Pj4yXT4+MF0mMjU0KSlicmVhazthbih5LHQpO2g9dDtoPVFSKGNbaD4+Ml18MCxjW2grND4+Ml18MCwyLDApfDA7aj10O2Nbaj4+Ml09aDtjW2orND4+Ml09Qztjb250aW51ZX1pZighKGFbY1t6Pj4yXT4+MF0mMjU0KSlicmVhazthbih6LHUpO2g9dTtoPVFSKGNbaD4+Ml18MCxjW2grND4+Ml18MCwyLDApfDA7aj11O2Nbaj4+Ml09aDtjW2orND4+Ml09Q31pZihjW0E+PjJdfDApY1t4Pj4yXT1jW0E+PjJdO1psKDAseSk7WmwoMCx6KTtpZighKGFbY1t5Pj4yXT4+MF18MCkpYnJlYWs7aWYoIShhW2Nbej4+Ml0+PjBdfDApKWJyZWFrO2NbeT4+Ml09KGNbeT4+Ml18MCkrMTtnPWNbeT4+Ml18MDtpZihkW2NbeT4+Ml0+PjBdJjEyOClnPSRsKGcscil8MDtlbHNle2Nbcj4+Ml09ZFtnPj4wXTtnPTF9Y1t5Pj4yXT0oY1t5Pj4yXXwwKStnO2Nbej4+Ml09KGNbej4+Ml18MCkrMTtnPWNbej4+Ml18MDtpZihkW2Nbej4+Ml0+PjBdJjEyOClnPSRsKGcscyl8MDtlbHNle2Nbcz4+Ml09ZFtnPj4wXTtnPTF9Y1t6Pj4yXT0oY1t6Pj4yXXwwKStnfWRtKDAseik7ZG0oMCx5KTtjW2NbcD4+Ml0+PjJdPWNbeT4+Ml07Y1tjW3E+PjJdPj4yXT1jW3o+PjJdO2lmKChjW2NbbD4+Ml0+PjJdfDApPT0oY1t4Pj4yXXwwKSl7Y1trPj4yXT0wO0I9Y1trPj4yXXwwO2k9RDtyZXR1cm4gQnwwfWVsc2V7Qj1jW3g+PjJdfDA7Y1t4Pj4yXT1CKzE7YVtCPj4wXT0wO2NbY1tsPj4yXT4+Ml09Y1t4Pj4yXTtjW2s+PjJdPTE7Qj1jW2s+PjJdfDA7aT1EO3JldHVybiBCfDB9cmV0dXJuIDB9ZnVuY3Rpb24gYW4oYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wO2Q9aTtpPWkrMTZ8MDtnPWQrMTJ8MDtlPWQrOHwwO2Y9ZDtjW2c+PjJdPWE7Y1tlPj4yXT1iO2E9X2woY1tjW2c+PjJdPj4yXXwwLGYpfDA7Yj1jW2c+PjJdfDA7Y1tiPj4yXT0oY1tiPj4yXXwwKSthO2I9ZjthPWNbZT4+Ml18MDtlPWE7Yj1SUihjW2U+PjJdfDAsY1tlKzQ+PjJdfDAsY1tiPj4yXXwwLGNbYis0Pj4yXXwwKXwwO2NbYT4+Ml09YjtjW2ErND4+Ml09QztpPWQ7cmV0dXJufWZ1bmN0aW9uIGJuKGEsYixkLGUpe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTA7Zj1pO2k9aSsxNnwwO2o9ZisxMnwwO2c9Zis4fDA7aD1mO2Nbaj4+Ml09YTtjW2c+PjJdPWI7YT1oO2NbYT4+Ml09ZDtjW2ErND4+Ml09ZTtlPWNbY1tqPj4yXT4+Ml18MDthPWg7Yj1jW2c+PjJdfDA7Yj1RUihjW2E+PjJdfDAsY1thKzQ+PjJdfDAsY1tiPj4yXXwwLGNbYis0Pj4yXXwwKXwwO2I9S2woZSxiLEMpfDA7ZT1jW2o+PjJdfDA7Y1tlPj4yXT0oY1tlPj4yXXwwKStiO2U9aDtiPWNbZSs0Pj4yXXwwO2E9Y1tnPj4yXXwwO2NbYT4+Ml09Y1tlPj4yXTtjW2ErND4+Ml09YjtpPWY7cmV0dXJufWZ1bmN0aW9uIGNuKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MDtlPWk7aT1pKzE2fDA7Yj1lKzR8MDtkPWU7Y1tiPj4yXT1hO2NbKGNbYj4+Ml18MCkrOD4+Ml09MDtjWyhjW2I+PjJdfDApKzI4Pj4yXT0xO2NbZD4+Ml09MDt3aGlsZSgxKXtpZigoY1tkPj4yXXwwKT49KGNbKGNbYj4+Ml18MCkrND4+Ml18MCkpYnJlYWs7Y1soY1soY1tjW2I+PjJdPj4yXXwwKSsoY1tkPj4yXTw8Mik+PjJdfDApKzgwPj4yXT0wO2NbKGNbKGNbY1tiPj4yXT4+Ml18MCkrKGNbZD4+Ml08PDIpPj4yXXwwKSs4ND4+Ml09MDthPShjWyhjW2NbYj4+Ml0+PjJdfDApKyhjW2Q+PjJdPDwyKT4+Ml18MCkrODh8MDtjW2E+PjJdPTA7Y1thKzQ+PjJdPTA7Y1tkPj4yXT0oY1tkPj4yXXwwKSsxfWk9ZTtyZXR1cm4gMH1mdW5jdGlvbiBkbihhLGIsZSl7YT1hfDA7Yj1ifDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTA7cz1pO2k9aSs0OHwwO2Y9cys0NHwwO3Q9cys0MHwwO2w9cyszNnwwO3A9cyszMnwwO3I9cysyOHwwO209cysyNHwwO2c9cysyMHwwO2g9cysxNnwwO2o9cysxMnwwO249cys4fDA7cT1zKzR8MDtvPXM7Y1tmPj4yXT1hO2NbdD4+Ml09YjtjW2w+PjJdPWU7Y1twPj4yXT1jW2NbZj4+Ml0+PjJdO2Nbcj4+Ml09MDtjW2c+PjJdPTA7aWYoKChjW3Q+PjJdfDApIT0wPyhkWyhjW2Y+PjJdfDApKzUyPj4wXXwwfDApPT0oZFsoY1twPj4yXXwwKSsyMzE+PjBdfDB8MCk6MCk/KGNbKGNbbD4+Ml18MCkrNjQ+PjJdfDApPD00OjApYj0oY1soY1tsPj4yXXwwKSs2ND4+Ml18MCk+MDtlbHNlIGI9MDtjW2g+PjJdPWImMTtjW20+PjJdPTA7d2hpbGUoMSl7aWYoKGNbaD4+Ml18MCkhPTEpYnJlYWs7aWYoKGNbbT4+Ml18MCk+PShjWyhjW2w+PjJdfDApKzY0Pj4yXXwwKSlicmVhaztjW2o+PjJdPShjW2w+PjJdfDApKzcyKygoY1ttPj4yXXwwKSoyNHwwKTtpZighKGNbKGNbaj4+Ml18MCkrMTI+PjJdfDApKXtpZigoY1soY1tqPj4yXXwwKSsyMD4+Ml18MCkhPTA/KGNbKGNbKGNbaj4+Ml18MCkrMjA+PjJdfDApKzM2Pj4yXXwwKT09MDowKWs9MTF9ZWxzZSBrPTExO2lmKChrfDApPT0xMSl7az0wO2NbaD4+Ml09MH1pZihjWyhjW2o+PjJdfDApKzIwPj4yXXwwKWNbZz4+Ml09MTtjW20+PjJdPShjW20+PjJdfDApKzF9aWYoISgoY1toPj4yXXwwKSE9MCYoY1tnPj4yXXwwKSE9MCkpe2Nbcj4+Ml09Zm4oY1tmPj4yXXwwLGNbbD4+Ml18MCl8MDtjWyhjW2w+PjJdfDApKzQwPj4yXT0wO3Q9Y1tyPj4yXXwwO2k9cztyZXR1cm4gdHwwfWlmKChjWyhjW2w+PjJdfDApKzY4Pj4yXXwwKT49KGNbKGNbcD4+Ml18MCkrMjQ+PjJdfDApKWI9LTE7ZWxzZSBiPWNbKGNbbD4+Ml18MCkrNjg+PjJdfDA7Y1tuPj4yXT1iO2NbbT4+Ml09MDt3aGlsZSgxKXtpZihjW3I+PjJdfDApYnJlYWs7aWYoKGNbbT4+Ml18MCk+PShjWyhjW2w+PjJdfDApKzY0Pj4yXXwwKSlicmVhaztjW3E+PjJdPShjW2w+PjJdfDApKzcyKygoY1ttPj4yXXwwKSoyNHwwKTtjW28+PjJdPWNbKGNbcT4+Ml18MCkrMjA+PjJdO2lmKGNbbz4+Ml18MCljW3I+PjJdPWVuKGNbcD4+Ml18MCxjW28+PjJdfDAsY1tuPj4yXXwwLGNbY1txPj4yXT4+Ml18MCxjWyhjW3E+PjJdfDApKzQ+PjJdfDApfDA7Y1ttPj4yXT0oY1ttPj4yXXwwKSsxfWNbKGNbbD4+Ml18MCkrNDA+PjJdPTE7dD1jW3I+PjJdfDA7aT1zO3JldHVybiB0fDB9ZnVuY3Rpb24gZW4oYSxiLGUsZixnKXthPWF8MDtiPWJ8MDtlPWV8MDtmPWZ8MDtnPWd8MDt2YXIgaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTA7dD1pO2k9aSs0OHwwO249dCs0MHwwO2g9dCszNnwwO289dCszMnwwO3A9dCsyOHwwO2o9dCsyNHwwO2s9dCsyMHwwO3E9dCsxNnwwO3I9dCsxMnwwO2w9dCs4fDA7cz10KzR8MDttPXQ7Y1toPj4yXT1hO2Nbbz4+Ml09YjtjW3A+PjJdPWU7Y1tqPj4yXT1mO2Nbaz4+Ml09ZztjW2w+PjJdPWNbKGNbbz4+Ml18MCkrND4+Ml07Y1tzPj4yXT0oZFsoY1toPj4yXXwwKSsyMzE+PjBdfDB8MCkhPTA/MTgyOjE4MztjW3I+PjJdPWhtKGNbaD4+Ml18MCxjW28+PjJdfDAsY1tqPj4yXXwwLGNbaz4+Ml18MCl8MDtpZihjW3I+PjJdfDApe2Nbbj4+Ml09Y1tyPj4yXTtzPWNbbj4+Ml18MDtpPXQ7cmV0dXJuIHN8MH1jW3E+PjJdPTA7d2hpbGUoMSl7aWYoKGNbcT4+Ml18MCk+PShjW2w+PjJdfDApKWJyZWFrO2NbbT4+Ml09Y1soY1tjW28+PjJdPj4yXXwwKSsoY1txPj4yXTw8Mik+PjJdO2lmKCEoY1soY1ttPj4yXXwwKSs0MD4+Ml18MCkpYnJlYWs7aWYoaW0oY1ttPj4yXXwwLGNbaj4+Ml18MCxjW2s+PjJdfDApfDApYnJlYWs7Y1txPj4yXT0oY1txPj4yXXwwKSsxfWNbKGNbbz4+Ml18MCkrOD4+Ml09Y1txPj4yXTtjW3E+PjJdPTA7d2hpbGUoMSl7aWYoKGNbcT4+Ml18MCk+PShjWyhjW28+PjJdfDApKzg+PjJdfDApKXtoPTEzO2JyZWFrfWNbcj4+Ml09VmwoY1toPj4yXXwwLGNbKGNbY1tvPj4yXT4+Ml18MCkrKGNbcT4+Ml08PDIpPj4yXXwwKXwwO2lmKGNbcj4+Ml18MCl7aD0xMTticmVha31jW3E+PjJdPShjW3E+PjJdfDApKzF9aWYoKGh8MCk9PTExKXtjW24+PjJdPWNbcj4+Ml07cz1jW24+PjJdfDA7aT10O3JldHVybiBzfDB9ZWxzZSBpZigoaHwwKT09MTMpe1RsKGNbY1tvPj4yXT4+Ml18MCxjW3E+PjJdfDAsY1txPj4yXXwwLGNbcz4+Ml18MCk7Y1soY1tvPj4yXXwwKSsyND4+Ml09Y1twPj4yXTtjW24+PjJdPTA7cz1jW24+PjJdfDA7aT10O3JldHVybiBzfDB9cmV0dXJuIDB9ZnVuY3Rpb24gZm4oYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTA7bD1pO2k9aSszMnwwO209bCsyOHwwO2Q9bCsyNHwwO2c9bCsyMHwwO2U9bCsxNnwwO2s9bCsxMnwwO2o9bCs4fDA7Zj1sKzR8MDtoPWw7Y1ttPj4yXT1hO2NbZD4+Ml09YjtjW2c+PjJdPWNbY1ttPj4yXT4+Ml07Y1trPj4yXT0wO2NbZT4+Ml09MDt3aGlsZSgxKXtpZihjW2s+PjJdfDApe2Q9ODticmVha31pZigoY1tlPj4yXXwwKT49KGNbKGNbZD4+Ml18MCkrNjQ+PjJdfDApKXtkPTg7YnJlYWt9Y1tqPj4yXT0oY1tkPj4yXXwwKSs3MisoKGNbZT4+Ml18MCkqMjR8MCk7aWYoKGNbKGNbaj4+Ml18MCkrMjA+PjJdfDApIT0wPyhjW2Y+PjJdPTAsY1toPj4yXT0wLGNbaz4+Ml09Z24oY1tnPj4yXXwwLGNbaj4+Ml18MCxjWyhjW2Q+PjJdfDApKzY4Pj4yXXwwLGYsaCl8MCwoY1trPj4yXXwwKT09MCk6MCljW2s+PjJdPWhuKGNbZz4+Ml18MCxjW2Q+PjJdfDAsY1tlPj4yXXwwLGNbaD4+Ml18MCxjW2Y+PjJdfDApfDA7Y1tlPj4yXT0oY1tlPj4yXXwwKSsxfWlmKChkfDApPT04KXtpPWw7cmV0dXJuIGNbaz4+Ml18MH1yZXR1cm4gMH1mdW5jdGlvbiBnbihhLGIsZCxlLGYpe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wO3I9aTtpPWkrMTkyfDA7Zz1yKzE3NnwwO2g9cisxNzJ8MDtqPXIrMTY4fDA7az1yKzE2NHwwO2w9cisxNjB8MDtwPXIrMTU2fDA7bz1yKzE1MnwwO3E9cisyNHwwO209cis4fDA7bj1yO2NbZz4+Ml09YTtjW2g+PjJdPWI7Y1tqPj4yXT1kO2Nbaz4+Ml09ZTtjW2w+PjJdPWY7Y1tvPj4yXT1jWyhjW2g+PjJdfDApKzIwPj4yXTtkPXE7YT1kKzEyOHwwO2Rve2NbZD4+Ml09MDtkPWQrNHwwfXdoaWxlKChkfDApPChhfDApKTtjW20rMTI+PjJdPTN8KChjWyhjW2g+PjJdfDApKzg+PjJdfDApIT0wPzg6MCl8KChjWyhjW2g+PjJdfDApKzEyPj4yXXwwKSE9MD8zMjowKXwoKGNbaj4+Ml18MCk8KGNbKGNbZz4+Ml18MCkrMjQ+PjJdfDApPzQ6MCk7Y1ttKzg+PjJdPWNbaj4+Ml07Y1ttPj4yXT1jW2NbaD4+Ml0+PjJdO2NbbSs0Pj4yXT1jWyhjW2g+PjJdfDApKzQ+PjJdO2NbcD4+Ml09dWwoY1tnPj4yXXwwLGNbbz4+Ml18MCxtKXwwO3doaWxlKDEpe2lmKGNbcD4+Ml18MClicmVhazttPXZsKGNbZz4+Ml18MCxjW28+PjJdfDApfDA7Y1twPj4yXT1tO2lmKDEwMCE9KG18MCkpYnJlYWs7Y1twPj4yXT1tbihjW2c+PjJdfDAscSxjWyhjW28+PjJdfDApKzQ4Pj4yXXwwLGNbKGNbbz4+Ml18MCkrNTI+PjJdfDApfDB9aWYoIShjW3A+PjJdfDApKWNbcD4+Ml09bm4oY1tnPj4yXXwwLHEpfDA7aWYoIShjW3A+PjJdfDApKXtjW2NbbD4+Ml0+PjJdPWNbcT4+Ml07Y1tjW2s+PjJdPj4yXT1jW3ErNjQ+PjJdO3E9Y1tvPj4yXXwwO29uKHEpO3E9Y1toPj4yXXwwO3E9cSsyMHwwO2NbcT4+Ml09MDtxPWNbcD4+Ml18MDtpPXI7cmV0dXJuIHF8MH1jW24+PjJdPTA7d2hpbGUoMSl7aWYoKGNbbj4+Ml18MCk+PTE2KWJyZWFrO0tkKGNbcSsoY1tuPj4yXTw8Mik+PjJdfDApO2Nbbj4+Ml09KGNbbj4+Ml18MCkrMX1xPWNbbz4+Ml18MDtvbihxKTtxPWNbaD4+Ml18MDtxPXErMjB8MDtjW3E+PjJdPTA7cT1jW3A+PjJdfDA7aT1yO3JldHVybiBxfDB9ZnVuY3Rpb24gaG4oYSxiLGUsZixnKXthPWF8MDtiPWJ8MDtlPWV8MDtmPWZ8MDtnPWd8MDt2YXIgaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTA7dD1pO2k9aSs0OHwwO2g9dCs0MHwwO2o9dCszNnwwO2s9dCszMnwwO2w9dCsyOHwwO209dCsyNHwwO3M9dCsyMHwwO3E9dCsxNnwwO3I9dCsxMnwwO289dCs4fDA7cD10KzR8MDtuPXQ7Y1toPj4yXT1hO2Nbaj4+Ml09YjtjW2s+PjJdPWU7Y1tsPj4yXT1mO2NbbT4+Ml09ZztjW3M+PjJdPTA7ZT1jW2o+PjJdfDA7ZG8gaWYoIShjW2w+PjJdfDApKXtLZChjW2U+PjJdfDApO2NbY1tqPj4yXT4+Ml09MDtjWyhjW2o+PjJdfDApKzQ+PjJdPTB9ZWxzZXtpZigoY1tlKzQ0Pj4yXXwwKTwwKXtjW2Nbaj4+Ml0+PjJdPWNbbD4+Ml07Y1soY1tqPj4yXXwwKSs0Pj4yXT1jW20+PjJdO2JyZWFrfWlmKCEoY1tjW2o+PjJdPj4yXXwwKSl7S2QoY1tsPj4yXXwwKTticmVha31lPWNbY1tqPj4yXT4+Ml18MDtpZigoY1soY1tqPj4yXXwwKSs0ND4+Ml18MCk8KGNbaz4+Ml18MCkpe2NbcT4+Ml09ZTtjW28+PjJdPWNbKGNbaj4+Ml18MCkrND4+Ml07Y1tyPj4yXT1jW2w+PjJdO2NbcD4+Ml09Y1ttPj4yXTtjW24+PjJdPShjW2s+PjJdfDApLShjWyhjW2o+PjJdfDApKzQ0Pj4yXXwwKX1lbHNle2Nbcj4+Ml09ZTtjW3A+PjJdPWNbKGNbaj4+Ml18MCkrND4+Ml07Y1txPj4yXT1jW2w+PjJdO2Nbbz4+Ml09Y1ttPj4yXTtjW24+PjJdPShjWyhjW2o+PjJdfDApKzQ0Pj4yXXwwKS0oY1trPj4yXXwwKX1jW3M+PjJdPWpuKGRbKGNbaD4+Ml18MCkrMjMxPj4wXXwwLGNbbj4+Ml18MCxjW3E+PjJdfDAsY1tvPj4yXXwwLHIscCl8MDtLZChjW3E+PjJdfDApO2NbY1tqPj4yXT4+Ml09Y1tyPj4yXTtjWyhjW2o+PjJdfDApKzQ+PjJdPWNbcD4+Ml19d2hpbGUoMCk7aWYoKGNbaz4+Ml18MCk8PShjWyhjW2o+PjJdfDApKzQ0Pj4yXXwwKSl7cz1jW3M+PjJdfDA7aT10O3JldHVybiBzfDB9Y1soY1tqPj4yXXwwKSs0ND4+Ml09Y1trPj4yXTtzPWNbcz4+Ml18MDtpPXQ7cmV0dXJuIHN8MH1mdW5jdGlvbiBqbihhLGIsZCxlLGYsZyl7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7dmFyIGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsRD0wLEU9MCxGPTA7RD1pO2k9aSsxMTJ8MDtoPUQrMTA0fDA7aj1EKzEwMHwwO2s9RCs5NnwwO0U9RCs5MnwwO0Y9RCs4OHwwO2w9RCs4NHwwO209RCs4MHwwO3I9RCszMnwwO3M9RCsyNHwwO3U9RCsxNnwwO289RCs3NnwwO3o9RCs3MnwwO0E9RCs2OHwwO3g9RCs2NHwwO3k9RCs2MHwwO3c9RCs1NnwwO3A9RCs1MnwwO249RCs0OHwwO3Q9RCs4fDA7Qj1EKzQ0fDA7dj1EO3E9RCs0MHwwO2Nbaj4+Ml09YTtjW2s+PjJdPWI7Y1tFPj4yXT1kO2NbRj4+Ml09ZTtjW2w+PjJdPWY7Y1ttPj4yXT1nO2c9cjtjW2c+PjJdPTA7Y1tnKzQ+PjJdPTA7Zz1zO2NbZz4+Ml09MDtjW2crND4+Ml09MDtnPXU7Y1tnPj4yXT0wO2NbZys0Pj4yXT0wO2Nbbz4+Ml09Y1tjW2w+PjJdPj4yXTtjW3o+PjJdPShjW0U+PjJdfDApKyhjW0Y+PjJdfDApO2NbQT4+Ml09KGNbbz4+Ml18MCkrKGNbY1ttPj4yXT4+Ml18MCk7Y1t4Pj4yXT1jW0U+PjJdO2NbeT4+Ml09Y1tvPj4yXTtjW3A+PjJdPTA7aWYoY1tqPj4yXXwwKXtjW24+PjJdPUlkKChjW2NbbT4+Ml0+PjJdfDApKzEwfDApfDA7aWYoIShjW24+PjJdfDApKXtjW2g+PjJdPTc7Rj1jW2g+PjJdfDA7aT1EO3JldHVybiBGfDB9fWVsc2UgY1tuPj4yXT1jW28+PjJdO2Nbdz4+Ml09Y1tuPj4yXTtrbih4LGNbej4+Ml18MCwwLHIpO2tuKHksY1tBPj4yXXwwLDAscyk7d2hpbGUoMSl7aWYoISgoY1t4Pj4yXXwwKSE9MD8oY1t5Pj4yXXwwKSE9MDowKSlicmVhaztGPShjW2o+PjJdfDApIT0wPy0xOjE7Zz1yO0U9cztFPVFSKGNbZz4+Ml18MCxjW2crND4+Ml18MCxjW0U+PjJdfDAsY1tFKzQ+PjJdfDApfDA7RT1hUyhGfDAsKChGfDApPDApPDwzMT4+MzF8MCxFfDAsQ3wwKXwwO0Y9dDtjW0Y+PjJdPUU7Y1tGKzQ+PjJdPUM7Rj10O2lmKCEoKGNbRj4+Ml18MCk9PTAmKGNbRis0Pj4yXXwwKT09MCkpaWYoKGNbdCs0Pj4yXXwwKTwwKXtkbSgwLHgpO2tuKHgsY1t6Pj4yXXwwLGNbaj4+Ml18MCxyKTtjb250aW51ZX1lbHNle2RtKDAseSk7a24oeSxjW0E+PjJdfDAsY1tqPj4yXXwwLHMpO2NvbnRpbnVlfWVsc2V7Y1tCPj4yXT1jW3c+PjJdO2c9dTtFPWNbZys0Pj4yXXwwO0Y9djtjW0Y+PjJdPWNbZz4+Ml07Y1tGKzQ+PjJdPUU7Y1txPj4yXT1jW3A+PjJdO0Y9cjtsbih3LGNbaj4+Ml18MCx1LHAsY1tGPj4yXXwwLGNbRis0Pj4yXXwwKTtpZighKCRtKHcsY1trPj4yXXwwLDAsMSx4LHkpfDApKXtjW3c+PjJdPWNbQj4+Ml07Zz12O0U9Y1tnKzQ+PjJdfDA7Rj11O2NbRj4+Ml09Y1tnPj4yXTtjW0YrND4+Ml09RTtjW3A+PjJdPWNbcT4+Ml19a24oeCxjW3o+PjJdfDAsY1tqPj4yXXwwLHIpO2tuKHksY1tBPj4yXXwwLGNbaj4+Ml18MCxzKTtjb250aW51ZX19Y1tjW20+PjJdPj4yXT0oY1t3Pj4yXXwwKS0oY1tuPj4yXXwwKTtpZihjW2o+PjJdfDApe0tkKGNbbz4+Ml18MCk7Y1tjW2w+PjJdPj4yXT1jW24+PjJdfWNbaD4+Ml09MDtGPWNbaD4+Ml18MDtpPUQ7cmV0dXJuIEZ8MH1mdW5jdGlvbiBrbihhLGIsZCxlKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTA7az1pO2k9aSszMnwwO2Y9aysyMHwwO2w9aysxNnwwO2o9aysxMnwwO2g9ays4fDA7Zz1rO2NbZj4+Ml09YTtjW2w+PjJdPWI7Y1tqPj4yXT1kO2NbaD4+Ml09ZTtkPWNbZj4+Ml18MDtpZigoY1tjW2Y+PjJdPj4yXXwwKT4+PjA+PShjW2w+PjJdfDApPj4+MCl7Y1tkPj4yXT0wO2k9aztyZXR1cm59YT1fbChjW2Q+PjJdfDAsZyl8MDtmPWNbZj4+Ml18MDtjW2Y+PjJdPShjW2Y+PjJdfDApK2E7Zj1nO2E9Y1tmPj4yXXwwO2Y9Y1tmKzQ+PjJdfDA7ZD1jW2g+PjJdfDA7ZT1kO2I9Y1tlPj4yXXwwO2U9Y1tlKzQ+PjJdfDA7aWYoY1tqPj4yXXwwKXtqPVFSKGJ8MCxlfDAsYXwwLGZ8MCl8MDtsPWQ7Y1tsPj4yXT1qO2NbbCs0Pj4yXT1DO2k9aztyZXR1cm59ZWxzZXtqPVJSKGJ8MCxlfDAsYXwwLGZ8MCl8MDtsPWQ7Y1tsPj4yXT1qO2NbbCs0Pj4yXT1DO2k9aztyZXR1cm59fWZ1bmN0aW9uIGxuKGEsYixkLGUsZixnKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDt2YXIgaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wO249aTtpPWkrMzJ8MDtoPW4rMjh8MDtvPW4rMjR8MDtqPW4rMjB8MDtrPW4rMTZ8MDtsPW4rOHwwO209bjtjW2g+PjJdPWE7Y1tvPj4yXT1iO2Nbaj4+Ml09ZDtjW2s+PjJdPWU7YT1sO2NbYT4+Ml09ZjtjW2ErND4+Ml09ZztpZigoY1tvPj4yXXwwKSE9MD8oY1tjW2s+PjJdPj4yXXwwKSE9MDowKXtvPWNbaj4+Ml18MDthPWw7YT1RUihjW28+PjJdfDAsY1tvKzQ+PjJdfDAsY1thPj4yXXwwLGNbYSs0Pj4yXXwwKXwwO289bTtjW28+PjJdPWE7Y1tvKzQ+PjJdPUN9ZWxzZXtvPWw7YT1jW2o+PjJdfDA7YT1RUihjW28+PjJdfDAsY1tvKzQ+PjJdfDAsY1thPj4yXXwwLGNbYSs0Pj4yXXwwKXwwO289bTtjW28+PjJdPWE7Y1tvKzQ+PjJdPUN9YT1tO2E9S2woY1tjW2g+PjJdPj4yXXwwLGNbYT4+Ml18MCxjW2ErND4+Ml18MCl8MDtkPWNbaD4+Ml18MDtjW2Q+PjJdPShjW2Q+PjJdfDApK2E7ZD1sO2E9Y1tkKzQ+PjJdfDA7bz1jW2o+PjJdfDA7Y1tvPj4yXT1jW2Q+PjJdO2Nbbys0Pj4yXT1hO2NbY1trPj4yXT4+Ml09MTtpPW47cmV0dXJufWZ1bmN0aW9uIG1uKGEsYixlLGYpe2E9YXwwO2I9YnwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTA7dD1pO2k9aSs0OHwwO2g9dCs0MHwwO2o9dCszNnwwO2s9dCszMnwwO2w9dCsyOHwwO2c9dCsyNHwwO209dCsyMHwwO3A9dCsxNnwwO289dCsxMnwwO249dCs4fDA7cT10KzR8MDtyPXQ7Y1tqPj4yXT1hO2Nbaz4+Ml09YjtjW2w+PjJdPWU7Y1tnPj4yXT1mO2E6ZG8gaWYoIShjW2Nbaz4+Ml0+PjJdfDApKXtzPUlkKChjW2c+PjJdfDApKzEwKzF8MCl8MDtjW2Nbaz4+Ml0+PjJdPXM7Y1soY1trPj4yXXwwKSs2ND4+Ml09Y1tnPj4yXTtpZihjW2Nbaz4+Ml0+PjJdfDApe1RSKGNbY1trPj4yXT4+Ml18MCxjW2w+PjJdfDAsY1tnPj4yXXwwKXwwO2JyZWFrfWNbaD4+Ml09NztzPWNbaD4+Ml18MDtpPXQ7cmV0dXJuIHN8MH1lbHNle2NbbT4+Ml09Y1tsPj4yXTtjW3A+PjJdPWNbZz4+Ml07Y1tvPj4yXT0wO3doaWxlKDEpe2lmKChjW28+PjJdfDApPj0xNilicmVhayBhO2lmKCEoY1soY1trPj4yXXwwKSsoY1tvPj4yXTw8Mik+PjJdfDApKXtzPTg7YnJlYWt9Y1tyPj4yXT1wbihkWyhjW2o+PjJdfDApKzIzMT4+MF18MCxjW20+PjJdfDAsY1twPj4yXXwwLGNbKGNbaz4+Ml18MCkrKGNbbz4+Ml08PDIpPj4yXXwwLGNbKGNbaz4+Ml18MCkrNjQrKGNbbz4+Ml08PDIpPj4yXXwwLG4scSl8MDtnPShjW20+PjJdfDApIT0oY1tsPj4yXXwwKTtpZihjW3I+PjJdfDApYnJlYWs7aWYoZylLZChjW20+PjJdfDApO0tkKGNbKGNbaz4+Ml18MCkrKGNbbz4+Ml08PDIpPj4yXXwwKTtjWyhjW2s+PjJdfDApKyhjW28+PjJdPDwyKT4+Ml09MDtjW20+PjJdPWNbbj4+Ml07Y1twPj4yXT1jW3E+PjJdO2lmKCgoY1tvPj4yXXwwKSsxfDApPT0xNil7Y1soY1trPj4yXXwwKSsoY1tvPj4yXTw8Mik+PjJdPWNbbT4+Ml07Y1soY1trPj4yXXwwKSs2NCsoY1tvPj4yXTw8Mik+PjJdPWNbcD4+Ml19Y1tvPj4yXT0oY1tvPj4yXXwwKSsxfWlmKChzfDApPT04KXtjWyhjW2s+PjJdfDApKyhjW28+PjJdPDwyKT4+Ml09Y1ttPj4yXTtjWyhjW2s+PjJdfDApKzY0KyhjW28+PjJdPDwyKT4+Ml09Y1twPj4yXTticmVha31pZihnKUtkKGNbbT4+Ml18MCk7Y1toPj4yXT1jW3I+PjJdO3M9Y1toPj4yXXwwO2k9dDtyZXR1cm4gc3wwfXdoaWxlKDApO2NbaD4+Ml09MDtzPWNbaD4+Ml18MDtpPXQ7cmV0dXJuIHN8MH1mdW5jdGlvbiBubihhLGIpe2E9YXwwO2I9YnwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTA7bz1pO2k9aSs0OHwwO2o9byszMnwwO2U9bysyOHwwO2s9bysyNHwwO2w9bysyMHwwO209bysxNnwwO2c9bysxMnwwO2g9bys4fDA7Zj1vKzR8MDtuPW87Y1tlPj4yXT1hO2Nbaz4+Ml09YjtjW2w+PjJdPTA7Y1ttPj4yXT0wO2NbZz4+Ml09MDthOndoaWxlKDEpe2lmKChjW2c+PjJdfDApPj0xNil7ZT0xMDticmVha31kbyBpZihjWyhjW2s+PjJdfDApKyhjW2c+PjJdPDwyKT4+Ml18MCl7aWYoIShjW2w+PjJdfDApKXtjW2w+PjJdPWNbKGNbaz4+Ml18MCkrKGNbZz4+Ml08PDIpPj4yXTtjW20+PjJdPWNbKGNbaz4+Ml18MCkrNjQrKGNbZz4+Ml08PDIpPj4yXTtjWyhjW2s+PjJdfDApKyhjW2c+PjJdPDwyKT4+Ml09MDticmVha31jW24+PjJdPXBuKGRbKGNbZT4+Ml18MCkrMjMxPj4wXXwwLGNbKGNbaz4+Ml18MCkrKGNbZz4+Ml08PDIpPj4yXXwwLGNbKGNbaz4+Ml18MCkrNjQrKGNbZz4+Ml08PDIpPj4yXXwwLGNbbD4+Ml18MCxjW20+PjJdfDAsZixoKXwwO2lmKGNbbj4+Ml18MCl7ZT03O2JyZWFrIGF9S2QoY1soY1trPj4yXXwwKSsoY1tnPj4yXTw8Mik+PjJdfDApO0tkKGNbbD4+Ml18MCk7Y1soY1trPj4yXXwwKSsoY1tnPj4yXTw8Mik+PjJdPTA7Y1tsPj4yXT1jW2Y+PjJdO2NbbT4+Ml09Y1toPj4yXX13aGlsZSgwKTtjW2c+PjJdPShjW2c+PjJdfDApKzF9aWYoKGV8MCk9PTcpe0tkKGNbbD4+Ml18MCk7Y1tqPj4yXT1jW24+PjJdO249Y1tqPj4yXXwwO2k9bztyZXR1cm4gbnwwfWVsc2UgaWYoKGV8MCk9PTEwKXtjW2Nbaz4+Ml0+PjJdPWNbbD4+Ml07Y1soY1trPj4yXXwwKSs2ND4+Ml09Y1ttPj4yXTtjW2o+PjJdPTA7bj1jW2o+PjJdfDA7aT1vO3JldHVybiBufDB9cmV0dXJuIDB9ZnVuY3Rpb24gb24oYSl7YT1hfDA7dmFyIGI9MCxkPTA7Yj1pO2k9aSsxNnwwO2Q9YjtjW2Q+PjJdPWE7QmwoY1tkPj4yXXwwKTtLZChjW2Q+PjJdfDApO2k9YjtyZXR1cm59ZnVuY3Rpb24gcG4oYSxiLGQsZSxmLGcsaCl7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7dmFyIGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxEPTA7eT1pO2k9aSs5NnwwO2o9eSs4OHwwO2s9eSs4NHwwO0Q9eSs4MHwwO0E9eSs3NnwwO0I9eSs3MnwwO3o9eSs2OHwwO2w9eSs2NHwwO209eSs2MHwwO3A9eSsyNHwwO3E9eSsxNnwwO3M9eSs4fDA7dz15KzU2fDA7eD15KzUyfDA7dT15KzQ4fDA7dj15KzQ0fDA7dD15KzQwfDA7bj15KzM2fDA7bz15KzMyfDA7cj15O2Nbaz4+Ml09YTtjW0Q+PjJdPWI7Y1tBPj4yXT1kO2NbQj4+Ml09ZTtjW3o+PjJdPWY7Y1tsPj4yXT1nO2NbbT4+Ml09aDtoPXA7Y1toPj4yXT0wO2NbaCs0Pj4yXT0wO2g9cTtjW2g+PjJdPTA7Y1toKzQ+PjJdPTA7aD1zO2NbaD4+Ml09MDtjW2grND4+Ml09MDtjW3c+PjJdPShjW0Q+PjJdfDApKyhjW0E+PjJdfDApO2NbeD4+Ml09KGNbQj4+Ml18MCkrKGNbej4+Ml18MCk7Y1t1Pj4yXT1jW0Q+PjJdO2Nbdj4+Ml09Y1tCPj4yXTtjW28+PjJdPTA7Y1tjW2w+PjJdPj4yXT0wO2NbY1ttPj4yXT4+Ml09MDtjW24+PjJdPUlkKChjW0E+PjJdfDApKyhjW3o+PjJdfDApKzEwLTF8MCl8MDtpZighKGNbbj4+Ml18MCkpe2Nbaj4+Ml09NztEPWNbaj4+Ml18MDtpPXk7cmV0dXJuIER8MH1jW3Q+PjJdPWNbbj4+Ml07a24odSxjW3c+PjJdfDAsMCxwKTtrbih2LGNbeD4+Ml18MCwwLHEpO3doaWxlKDEpe2lmKCEoKGNbdT4+Ml18MCkhPTA/MTooY1t2Pj4yXXwwKSE9MCkpYnJlYWs7RD0oY1trPj4yXXwwKSE9MD8tMToxO0E9cDtCPXE7Qj1RUihjW0E+PjJdfDAsY1tBKzQ+PjJdfDAsY1tCPj4yXXwwLGNbQis0Pj4yXXwwKXwwO0I9YVMoRHwwLCgoRHwwKTwwKTw8MzE+PjMxfDAsQnwwLEN8MCl8MDtEPXI7Y1tEPj4yXT1CO2NbRCs0Pj4yXT1DO0Q9cjtpZigoY1t2Pj4yXXwwKSE9MCYoY1t1Pj4yXXwwKSE9MCYoKGNbRD4+Ml18MCk9PTAmKGNbRCs0Pj4yXXwwKT09MCkpe0Q9cDtsbih0LGNbaz4+Ml18MCxzLG8sY1tEPj4yXXwwLGNbRCs0Pj4yXXwwKTtxbih0LHUsdik7a24odSxjW3c+PjJdfDAsY1trPj4yXXwwLHApO2tuKHYsY1t4Pj4yXXwwLGNbaz4+Ml18MCxxKTtjb250aW51ZX1pZigoY1t2Pj4yXXwwKSE9MD8hKChjW3U+PjJdfDApIT0wJihjW3IrND4+Ml18MCk8MCk6MCl7RD1xO2xuKHQsY1trPj4yXXwwLHMsbyxjW0Q+PjJdfDAsY1tEKzQ+PjJdfDApO2RtKHQsdik7a24odixjW3g+PjJdfDAsY1trPj4yXXwwLHEpO2NvbnRpbnVlfUQ9cDtsbih0LGNbaz4+Ml18MCxzLG8sY1tEPj4yXXwwLGNbRCs0Pj4yXXwwKTtkbSh0LHUpO2tuKHUsY1t3Pj4yXXwwLGNbaz4+Ml18MCxwKX1jW2NbbD4+Ml0+PjJdPWNbbj4+Ml07Y1tjW20+PjJdPj4yXT0oY1t0Pj4yXXwwKS0oY1tuPj4yXXwwKTtjW2o+PjJdPTA7RD1jW2o+PjJdfDA7aT15O3JldHVybiBEfDB9ZnVuY3Rpb24gcW4oYixlLGYpe2I9YnwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wO3Q9aTtpPWkrNjR8MDtnPXQrNTZ8MDtoPXQrNTJ8MDtqPXQrNDh8MDtxPXQrNDR8MDtyPXQrNDB8MDtzPXQrMzZ8MDttPXQrMzJ8MDtuPXQrMjh8MDtrPXQrMTZ8MDtsPXQrOHwwO289dDtwPXQrMjR8MDtjW2c+PjJdPWI7Y1toPj4yXT1lO2Nbaj4+Ml09ZjtjW3E+PjJdPWNbY1tnPj4yXT4+Ml07Y1tyPj4yXT1jW2NbaD4+Ml0+PjJdO2Nbcz4+Ml09Y1tjW2o+PjJdPj4yXTthOndoaWxlKDEpe2lmKChhW2Nbcj4+Ml0+PjBdfDApPT0wPyhhW2Nbcz4+Ml0+PjBdfDApPT0wOjApYnJlYWs7Yj1jW3I+PjJdfDA7ZG8gaWYoKGFbY1tyPj4yXT4+MF18MCk9PTEpe2U9KGNbcj4+Ml18MCkrMXwwO2lmKGRbYisxPj4wXSYxMjgpeyRsKGUsbSl8MDticmVha31lbHNle2NbbT4+Ml09ZFtlPj4wXTticmVha319ZWxzZSBpZighKGFbYj4+MF18MCkpe2NbbT4+Ml09MjE0NzQ4MzY0NzticmVha31lbHNle2NbbT4+Ml09MDticmVha313aGlsZSgwKTtiPWNbcz4+Ml18MDtkbyBpZigoYVtjW3M+PjJdPj4wXXwwKT09MSl7ZT0oY1tzPj4yXXwwKSsxfDA7aWYoZFtiKzE+PjBdJjEyOCl7JGwoZSxuKXwwO2JyZWFrfWVsc2V7Y1tuPj4yXT1kW2U+PjBdO2JyZWFrfX1lbHNlIGlmKCEoYVtiPj4wXXwwKSl7Y1tuPj4yXT0yMTQ3NDgzNjQ3O2JyZWFrfWVsc2V7Y1tuPj4yXT0wO2JyZWFrfXdoaWxlKDApO2lmKChjW20+PjJdfDApIT0oY1tuPj4yXXwwKSlpZigoY1ttPj4yXXwwKTwoY1tuPj4yXXwwKSl7Zj1ybihxLGNbbT4+Ml18MCl8MDtjW3I+PjJdPShjW3I+PjJdfDApK2Y7WmwocSxyKTtjb250aW51ZX1lbHNle2Y9cm4ocSxjW24+PjJdfDApfDA7Y1tzPj4yXT0oY1tzPj4yXXwwKStmO1psKHEscyk7Y29udGludWV9Zj1rO2NbZj4+Ml09MDtjW2YrND4+Ml09MDtmPWw7Y1tmPj4yXT0wO2NbZis0Pj4yXT0wO2Y9bztjW2Y+PjJdPTA7Y1tmKzQ+PjJdPTA7Y1twPj4yXT1ybihxLGNbbT4+Ml18MCl8MDtjW3I+PjJdPShjW3I+PjJdfDApKyhjW3A+PjJdfDApO2Nbcz4+Ml09KGNbcz4+Ml18MCkrKGNbcD4+Ml18MCk7YW4ocixrKTthbihzLGwpO3doaWxlKDEpe2U9azt1PWNbZSs0Pj4yXXwwO2I9bDtmPWNbYis0Pj4yXXwwO2I9KHV8MCk8KGZ8MCl8KCh1fDApPT0oZnwwKT8oY1tlPj4yXXwwKT4+PjA8KGNbYj4+Ml18MCk+Pj4wOjApO2U9aztmPWw7Ym4ocSxvLGI/Y1tlPj4yXXwwOmNbZj4+Ml18MCxiP2NbZSs0Pj4yXXwwOmNbZis0Pj4yXXwwKTtmPW87Zj1RUihjW2Y+PjJdfDAsY1tmKzQ+PjJdfDAsMiwwKXwwO2U9bztjW2U+PjJdPWY7Y1tlKzQ+PjJdPUM7ZT1rO2Y9bDtkbyBpZighKChjW2U+PjJdfDApPT0oY1tmPj4yXXwwKT8oY1tlKzQ+PjJdfDApPT0oY1tmKzQ+PjJdfDApOjApKXtmPWs7Yj1jW2YrND4+Ml18MDt1PWw7ZT1jW3UrND4+Ml18MDtpZigoYnwwKTwoZXwwKXwoKGJ8MCk9PShlfDApPyhjW2Y+PjJdfDApPj4+MDwoY1t1Pj4yXXwwKT4+PjA6MCkpe3NuKHIsayk7YnJlYWt9ZWxzZXtzbihzLGwpO2JyZWFrfX1lbHNle3NuKHIsayk7c24ocyxsKX13aGlsZSgwKTtmPWs7dT1sO2lmKCEoKGNbZj4+Ml18MCkhPTIxNDc0ODM2NDd8KGNbZis0Pj4yXXwwKSE9MD8xOihjW3U+PjJdfDApIT0yMTQ3NDgzNjQ3fChjW3UrND4+Ml18MCkhPTApKWNvbnRpbnVlIGF9fXU9Y1txPj4yXXwwO2NbcT4+Ml09dSsxO2FbdT4+MF09MDtjW2NbZz4+Ml0+PjJdPWNbcT4+Ml07Y1tjW2g+PjJdPj4yXT0oY1tyPj4yXXwwKSsxO2NbY1tqPj4yXT4+Ml09KGNbcz4+Ml18MCkrMTtpPXQ7cmV0dXJufWZ1bmN0aW9uIHJuKGIsZCl7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTA7aj1pO2k9aSsxNnwwO2U9aisxMnwwO2Y9ais4fDA7Zz1qKzR8MDtoPWo7Y1tlPj4yXT1iO2NbZj4+Ml09ZDtjW2c+PjJdPTA7aWYoIShjW2Y+PjJdfDApKXtiPWNbZz4+Ml18MDtpPWo7cmV0dXJuIGJ8MH1jW2g+PjJdPWNbY1tlPj4yXT4+Ml07Yj1jW2Y+PjJdfDA7Y1tnPj4yXT0xKyhLbCgoY1toPj4yXXwwKSsxfDAsYiwoKGJ8MCk8MCk8PDMxPj4zMSl8MCk7YVtjW2g+PjJdPj4wXT0xO2NbY1tlPj4yXT4+Ml09KGNbaD4+Ml18MCkrKGNbZz4+Ml18MCk7Yj1jW2c+PjJdfDA7aT1qO3JldHVybiBifDB9ZnVuY3Rpb24gc24oYixkKXtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTA7Zz1pO2k9aSsxNnwwO2U9Zys0fDA7Zj1nO2NbZT4+Ml09YjtjW2Y+PjJdPWQ7aWYoYVtjW2NbZT4+Ml0+PjJdPj4wXSYyNTQpe2FuKGNbZT4+Ml18MCxjW2Y+PjJdfDApO2I9Y1tmPj4yXXwwO2Q9YjtkPVFSKGNbZD4+Ml18MCxjW2QrND4+Ml18MCwyLDApfDA7Y1tiPj4yXT1kO2NbYis0Pj4yXT1DO2k9ZztyZXR1cm59ZWxzZXtiPWNbZj4+Ml18MDtjW2I+PjJdPTIxNDc0ODM2NDc7Y1tiKzQ+PjJdPTA7aT1nO3JldHVybn19ZnVuY3Rpb24gdG4oYixkKXtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTA7az1pO2k9aSszMnwwO2U9aysxNnwwO2Y9aysxMnwwO2c9ays4fDA7aj1rKzR8MDtoPWs7Y1tmPj4yXT1iO2NbZz4+Ml09ZDtjW2o+PjJdPTA7aWYoKGFbKGNbZz4+Ml18MCkrNz4+MF18MCkhPTA/KGNbaD4+Ml09MCxjW2o+PjJdPUZuKGNbZz4+Ml18MCxoKXwwLChjW2o+PjJdfDApPT0wKTowKXtoPShjW2c+PjJdfDApKzMyfDA7TGUoY1soY1tnPj4yXXwwKSs4Pj4yXXwwLDEsY1toPj4yXXwwLGNbaCs0Pj4yXXwwKXwwO2FbKGNbZz4+Ml18MCkrNz4+MF09MDtpZigxMDA9PSh0ZShjWyhjW2c+PjJdfDApKzg+PjJdfDApfDApKXtjW2U+PjJdPTA7aj1jW2U+PjJdfDA7aT1rO3JldHVybiBqfDB9Y1tqPj4yXT1ZZChjWyhjW2c+PjJdfDApKzg+PjJdfDApfDA7aWYoKGNbaj4+Ml18MCk9PTA/KGNbKGNbY1tnPj4yXT4+Ml18MCkrNDA+PjJdfDApPT0wOjApe2Nbaj4+Ml09MjY3O2FbKGNbZz4+Ml18MCkrNj4+MF09MX19aWYoKGNbaj4+Ml18MCkhPTAmKGNbZj4+Ml18MCkhPTApcWUoY1tmPj4yXXwwLGNbaj4+Ml18MCk7Y1tlPj4yXT1jW2o+PjJdO2o9Y1tlPj4yXXwwO2k9aztyZXR1cm4ganwwfWZ1bmN0aW9uIHVuKGEpe2E9YXwwO3ZhciBiPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wO3Y9aTtpPWkrODB8MDtiPXYrNjR8MDtyPXYrNjB8MDtlPXYrNTZ8MDtmPXY7bT12KzUyfDA7bD12KzQ4fDA7cD12KzQ0fDA7bj12KzQwfDA7cz12KzM2fDA7cT12KzMyfDA7dD12KzI4fDA7az12KzI0fDA7Zz12KzIwfDA7aD12KzE2fDA7aj12KzEyfDA7bz12Kzh8MDtjW2I+PjJdPWE7Y1tyPj4yXT0wO2lmKCEoY1soY1tiPj4yXXwwKSsyND4+Ml18MCkpe3U9Y1tyPj4yXXwwO2k9djtyZXR1cm4gdXwwfWNbbD4+Ml09Y1tjW2I+PjJdPj4yXTtjW3A+PjJdPWNbKGNbbD4+Ml18MCkrMzY+PjJdO2Nbbj4+Ml09Y1tjW3A+PjJdPj4yXTt3PURlKGNbKGNbYj4+Ml18MCkrOD4+Ml18MCwwKXwwO2E9ZjtjW2E+PjJdPXc7Y1thKzQ+PjJdPUM7Y1tlPj4yXT0wO3doaWxlKDEpe2lmKCEoKGNbZT4+Ml18MCk8KGNbKGNbbD4+Ml18MCkrMjQ+PjJdfDApPyhjW3I+PjJdfDApPT0wOjApKWJyZWFrO2lmKCEoZFsoY1soY1tsPj4yXXwwKSszMj4+Ml18MCkrKGNbZT4+Ml18MCk+PjBdfDApKXtjW3M+PjJdPUVlKGNbKGNbYj4+Ml18MCkrOD4+Ml18MCwoY1tlPj4yXXwwKSsxfDApfDA7Y1txPj4yXT0wO2Nbcj4+Ml09Q24oY1twPj4yXXwwLGNbKGNbYj4+Ml18MCkrMTY+PjJdfDAsY1tzPj4yXXwwLC0xLHEpfDA7YTp3aGlsZSgxKXtpZihjW3I+PjJdfDApYnJlYWs7Y1trPj4yXT0wO2NbZz4+Ml09MDtjW2g+PjJdPTA7Y1tqPj4yXT0wO2Nbcj4+Ml09U2JbY1soY1tuPj4yXXwwKSsyMD4+Ml0mMjU1XShjW3E+PjJdfDAsdCxrLGcsaCxqKXwwO2NbbT4+Ml09Y1soY1tiPj4yXXwwKSsyND4+Ml07d2hpbGUoMSl7aWYoISgoY1ttPj4yXXwwKSE9MD8oY1tyPj4yXXwwKT09MDowKSljb250aW51ZSBhO2Nbbz4+Ml09Y1tjW20+PjJdPj4yXTtpZighKChjWyhjW20+PjJdfDApKzQ+PjJdfDApPChjWyhjW2w+PjJdfDApKzI0Pj4yXXwwKT8oY1soY1ttPj4yXXwwKSs0Pj4yXXwwKSE9KGNbZT4+Ml18MCk6MCkpdT0xMTtkbyBpZigodXwwKT09MTE/KHU9MCwoY1tqPj4yXXwwKT09MD8xOihjWyhjW28+PjJdfDApKzEyPj4yXXwwKT09MCk6MCl7aWYoKGNbKGNbbz4+Ml18MCkrND4+Ml18MCkhPShjW2s+PjJdfDApKXtpZighKGNbKGNbbz4+Ml18MCkrOD4+Ml18MCkpYnJlYWs7aWYoKGNbKGNbbz4+Ml18MCkrND4+Ml18MCk+PShjW2s+PjJdfDApKWJyZWFrfWlmKCEoZVIoY1t0Pj4yXXwwLGNbY1tvPj4yXT4+Ml18MCxjWyhjW28+PjJdfDApKzQ+PjJdfDApfDApKXt4PWY7YT1jW2U+PjJdfDA7dz1jW2o+PjJdfDA7RG4oKGNbbT4+Ml18MCkrMTJ8MCxjW3g+PjJdfDAsY1t4KzQ+PjJdfDAsYSwoKGF8MCk8MCk8PDMxPj4zMSx3LCgod3wwKTwwKTw8MzE+PjMxLHIpfDB9fXdoaWxlKDApO2NbbT4+Ml09Y1soY1ttPj4yXXwwKSs4Pj4yXX19aWYoY1txPj4yXXwwKVRiW2NbKGNbbj4+Ml18MCkrMTY+PjJdJjI1NV0oY1txPj4yXXwwKXwwO2lmKChjW3I+PjJdfDApPT0xMDEpY1tyPj4yXT0wfWNbZT4+Ml09KGNbZT4+Ml18MCkrMX1jW20+PjJdPWNbKGNbYj4+Ml18MCkrMjQ+PjJdO3doaWxlKDEpe2lmKCEoKGNbbT4+Ml18MCkhPTA/KGNbcj4+Ml18MCk9PTA6MCkpYnJlYWs7aWYoY1soY1ttPj4yXXwwKSsxMj4+Ml18MCljW3I+PjJdPUVuKChjW20+PjJdfDApKzEyfDAsMCwwKXwwO2NbbT4+Ml09Y1soY1ttPj4yXXwwKSs4Pj4yXX14PWNbcj4+Ml18MDtpPXY7cmV0dXJuIHh8MH1mdW5jdGlvbiB2bihiLGUsZil7Yj1ifDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wO3A9aTtpPWkrMzJ8MDttPXArMjh8MDtsPXArMjR8MDtnPXArMjB8MDtvPXArMTZ8MDtuPXArMTJ8MDtoPXArOHwwO2o9cCs0fDA7az1wO2NbbT4+Ml09YjtjW2w+PjJdPWU7Y1tnPj4yXT1mO2Nbbz4+Ml09MTtpZihjW2NbZz4+Ml0+PjJdfDApe289Y1tvPj4yXXwwO2k9cDtyZXR1cm4gb3wwfXN3aXRjaChjW2NbbD4+Ml0+PjJdfDApe2Nhc2UgMzpjYXNlIDE6e2lmKCh2bihjW20+PjJdfDAsY1soY1tsPj4yXXwwKSsxMj4+Ml18MCxjW2c+PjJdfDApfDApIT0wPyh2bihjW20+PjJdfDAsY1soY1tsPj4yXXwwKSsxNj4+Ml18MCxjW2c+PjJdfDApfDApIT0wOjApZz0oeG4oY1tsPj4yXXwwLGNbZz4+Ml18MCl8MCkhPTA7ZWxzZSBnPTA7Y1tvPj4yXT1nJjE7aWYoY1tvPj4yXXwwKXtvPWNbbz4+Ml18MDtpPXA7cmV0dXJuIG98MH1pZigoY1tjW2w+PjJdPj4yXXwwKSE9MSl7bz1jW28+PjJdfDA7aT1wO3JldHVybiBvfDB9aWYoKGNbKGNbbD4+Ml18MCkrOD4+Ml18MCkhPTA/KGNbY1soY1tsPj4yXXwwKSs4Pj4yXT4+Ml18MCk9PTE6MCl7bz1jW28+PjJdfDA7aT1wO3JldHVybiBvfDB9Y1tuPj4yXT1jW2w+PjJdO3doaWxlKDEpe2c9Y1tuPj4yXXwwO2lmKGNbKGNbbj4+Ml18MCkrMjA+PjJdfDApYnJlYWs7Zj0oY1tnKzE2Pj4yXXwwKSsyNHwwO2w9KGNbbT4+Ml18MCkrMzJ8MDtpZigoY1tmPj4yXXwwKT09KGNbbD4+Ml18MCk/KGNbZis0Pj4yXXwwKT09KGNbbCs0Pj4yXXwwKTowKVZtKGNbKGNbKGNbbj4+Ml18MCkrMTY+PjJdfDApKzIwPj4yXXwwKTtjW24+PjJdPWNbKGNbbj4+Ml18MCkrMTI+PjJdfWw9ZysyNHwwO209KGNbbT4+Ml18MCkrMzJ8MDtpZighKChjW2w+PjJdfDApPT0oY1ttPj4yXXwwKT8oY1tsKzQ+PjJdfDApPT0oY1ttKzQ+PjJdfDApOjApKXtvPWNbbz4+Ml18MDtpPXA7cmV0dXJuIG98MH1WbShjWyhjW24+PjJdfDApKzIwPj4yXXwwKTtvPWNbbz4+Ml18MDtpPXA7cmV0dXJuIG98MH1jYXNlIDQ6e2NbaD4+Ml09dm4oY1ttPj4yXXwwLGNbKGNbbD4+Ml18MCkrMTI+PjJdfDAsY1tnPj4yXXwwKXwwO2Nbaj4+Ml09dm4oY1ttPj4yXXwwLGNbKGNbbD4+Ml18MCkrMTY+PjJdfDAsY1tnPj4yXXwwKXwwO2Nbbz4+Ml09KChjW2g+PjJdfDApIT0wPzE6KGNbaj4+Ml18MCkhPTApJjE7bz1jW28+PjJdfDA7aT1wO3JldHVybiBvfDB9Y2FzZSAyOntpZih2bihjW20+PjJdfDAsY1soY1tsPj4yXXwwKSsxMj4+Ml18MCxjW2c+PjJdfDApfDApZz0odm4oY1ttPj4yXXwwLGNbKGNbbD4+Ml18MCkrMTY+PjJdfDAsY1tnPj4yXXwwKXwwKSE9MF4xO2Vsc2UgZz0wO2Nbbz4+Ml09ZyYxO289Y1tvPj4yXXwwO2k9cDtyZXR1cm4gb3wwfWRlZmF1bHQ6e2RvIGlmKGNbKGNbbT4+Ml18MCkrMjQ+PjJdfDApe2Y9KGNbbD4+Ml18MCkrMjR8MDtuPShjW20+PjJdfDApKzMyfDA7aWYoISgoY1tmPj4yXXwwKT09KGNbbj4+Ml18MCk/KGNbZis0Pj4yXXwwKT09KGNbbis0Pj4yXXwwKTowKT8oZFsoY1tsPj4yXXwwKSszND4+MF18MCk9PTA6MClicmVhaztjW2s+PjJdPWNbKGNbbD4+Ml18MCkrMjA+PjJdO2lmKGFbKGNbbD4+Ml18MCkrMzQ+PjBdfDApVm0oY1trPj4yXXwwKTtmPXluKGNbbT4+Ml18MCxjW2s+PjJdfDApfDA7Y1tjW2c+PjJdPj4yXT1mO2Nbbz4+Ml09KGNbKGNbaz4+Ml18MCkrMjg+PjJdfDApIT0wJjE7Zj0oY1ttPj4yXXwwKSszMnwwO209Y1tmKzQ+PjJdfDA7bj0oY1tsPj4yXXwwKSsyNHwwO2Nbbj4+Ml09Y1tmPj4yXTtjW24rND4+Ml09bTtvPWNbbz4+Ml18MDtpPXA7cmV0dXJuIG98MH13aGlsZSgwKTtpZighKGRbKGNbbD4+Ml18MCkrMzI+PjBdfDApKXtuPShjW2w+PjJdfDApKzI0fDA7Zz0oY1ttPj4yXXwwKSszMnwwO2c9KGNbbj4+Ml18MCk9PShjW2c+PjJdfDApPyhjW24rND4+Ml18MCk9PShjW2crND4+Ml18MCk6MH1lbHNlIGc9MDtjW28+PjJdPWcmMTtvPWNbbz4+Ml18MDtpPXA7cmV0dXJuIG98MH19cmV0dXJuIDB9ZnVuY3Rpb24gd24oYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wO2Q9aTtpPWkrMTZ8MDtlPWQrNHwwO2I9ZDtjW2U+PjJdPWE7Y1tiPj4yXT1jWyhjW2U+PjJdfDApKzI0Pj4yXTt3aGlsZSgxKXtpZighKGNbYj4+Ml18MCkpYnJlYWs7a2woY1soY1tiPj4yXXwwKSsxMj4+Ml18MCk7Y1soY1tiPj4yXXwwKSsxMj4+Ml09MDtjW2I+PjJdPWNbKGNbYj4+Ml18MCkrOD4+Ml19aT1kO3JldHVybn1mdW5jdGlvbiB4bihhLGIpe2E9YXwwO2I9YnwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTA7cj1pO2k9aSs0OHwwO2U9cis0NHwwO2Y9cis0MHwwO3E9ciszNnwwO289ciszMnwwO2g9cisyOHwwO2w9cisyNHwwO2s9cisyMHwwO249cisxNnwwO2o9cisxMnwwO2c9cis4fDA7bT1yKzR8MDtwPXI7Y1tlPj4yXT1hO2NbZj4+Ml09YjtjW3E+PjJdPTE7aWYoY1tjW2Y+PjJdPj4yXXwwKXtxPWNbcT4+Ml18MDtpPXI7cmV0dXJuIHF8MH1pZigoY1tjW2U+PjJdPj4yXXwwKSE9MSl7cT1jW3E+PjJdfDA7aT1yO3JldHVybiBxfDB9aWYoZFsoY1tlPj4yXXwwKSszMj4+MF18MCl7cT1jW3E+PjJdfDA7aT1yO3JldHVybiBxfDB9aWYoKGNbKGNbZT4+Ml18MCkrOD4+Ml18MCkhPTA/KGNbY1soY1tlPj4yXXwwKSs4Pj4yXT4+Ml18MCk9PTE6MCl7cT1jW3E+PjJdfDA7aT1yO3JldHVybiBxfDB9Y1toPj4yXT0wO2Nbbz4+Ml09Y1tlPj4yXTt3aGlsZSgxKXthPWNbbz4+Ml18MDtpZighKGNbKGNbbz4+Ml18MCkrMTI+PjJdfDApKWJyZWFrO2NbaD4+Ml09KGNbaD4+Ml18MCkrKGNbKGNbKGNbYSsxNj4+Ml18MCkrMjA+PjJdfDApKzMyPj4yXXwwKTtjW28+PjJdPWNbKGNbbz4+Ml18MCkrMTI+PjJdfWNbaD4+Ml09KGNbaD4+Ml18MCkrKGNbKGNbYSsyMD4+Ml18MCkrMzI+PjJdfDApO2lmKCEoY1toPj4yXXwwKSl7Y1txPj4yXT0wO3E9Y1txPj4yXXwwO2k9cjtyZXR1cm4gcXwwfWNbbD4+Ml09SWQoY1toPj4yXTw8MSl8MDthOmRvIGlmKGNbbD4+Ml18MCl7Y1trPj4yXT1jWyhjWyhjW28+PjJdfDApKzIwPj4yXXwwKSsyOD4+Ml07Y1tuPj4yXT1jWyhjWyhjW28+PjJdfDApKzIwPj4yXXwwKSs2ND4+Ml07Y1tvPj4yXT1jWyhjW28+PjJdfDApKzg+PjJdO3doaWxlKDEpe2lmKCEoKGNbcT4+Ml18MCkhPTAmKGNbbz4+Ml18MCkhPTApKWJyZWFrO2lmKChjW2Nbbz4+Ml0+PjJdfDApIT0xKWJyZWFrO2Nbaj4+Ml09Y1soY1soY1tvPj4yXXwwKSsxNj4+Ml18MCkrMjA+PjJdO2NbZz4+Ml09Y1soY1tvPj4yXXwwKSs0Pj4yXTtjW3E+PjJdPUFuKGNbZz4+Ml18MCxjW2w+PjJdfDAsayxuLGNbaj4+Ml18MCl8MDtjW28+PjJdPWNbKGNbbz4+Ml18MCkrOD4+Ml19Y1trPj4yXT1jWyhjWyhjWyhjW2U+PjJdfDApKzE2Pj4yXXwwKSsyMD4+Ml18MCkrMjg+PjJdO2Nbbj4+Ml09Y1soY1soY1soY1tlPj4yXXwwKSsxNj4+Ml18MCkrMjA+PjJdfDApKzY0Pj4yXTtjW28+PjJdPWNbKGNbZT4+Ml18MCkrMTI+PjJdO3doaWxlKDEpe2lmKCEoKGNbbz4+Ml18MCkhPTA/KGNbcT4+Ml18MCkhPTA6MCkpYnJlYWsgYTtjW20+PjJdPWNbKGNbKGNbbz4+Ml18MCkrOD4+Ml18MCkrND4+Ml07YT1jW28+PjJdfDA7aWYoKGNbY1tvPj4yXT4+Ml18MCk9PTEpYT1jWyhjW2ErMTY+PjJdfDApKzIwPj4yXXwwO2Vsc2UgYT1jW2ErMjA+PjJdfDA7Y1twPj4yXT1hO2NbcT4+Ml09QW4oY1ttPj4yXXwwLGNbbD4+Ml18MCxrLG4sY1twPj4yXXwwKXwwO2Nbbz4+Ml09Y1soY1tvPj4yXXwwKSsxMj4+Ml19fWVsc2V7Y1tjW2Y+PjJdPj4yXT03O2NbcT4+Ml09MH13aGlsZSgwKTtLZChjW2w+PjJdfDApO3E9Y1txPj4yXXwwO2k9cjtyZXR1cm4gcXwwfWZ1bmN0aW9uIHluKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wO3k9aTtpPWkrODB8MDttPXkrNzZ8MDtuPXkrNzJ8MDtvPXkrNjh8MDtlPXkrNjR8MDtxPXkrNjB8MDt1PXkrNTZ8MDtyPXkrNTJ8MDtsPXkrNDh8MDtqPXkrNDR8MDtrPXkrNDB8MDtmPXkrMzZ8MDt4PXkrMzJ8MDtkPXkrMjh8MDtnPXkrMjR8MDtoPXkrMjB8MDt0PXkrMTZ8MDtzPXkrMTJ8MDt2PXkrOHwwO3c9eSs0fDA7cD15O2Nbbj4+Ml09YTtjW28+PjJdPWI7Y1txPj4yXT0wO2NbdT4+Ml09MDtjW3I+PjJdPS0xO2NbZT4+Ml09MDt3aGlsZSgxKXtpZigoY1tlPj4yXXwwKT49KGNbKGNbbz4+Ml18MCkrNjQ+PjJdfDApKXthPTE0O2JyZWFrfWNbbD4+Ml09KGNbbz4+Ml18MCkrNzIrKChjW2U+PjJdfDApKjI0fDApO2Nbaj4+Ml09Y1soY1tsPj4yXXwwKSsxNj4+Ml07aWYoY1tqPj4yXXwwKXtjW3g+PjJdPXpuKGNbaj4+Ml18MCxrLGYpfDA7aWYoY1t4Pj4yXXwwKXthPTU7YnJlYWt9Yj1jW3E+PjJdfDA7aWYoIShjW2s+PjJdfDApKXthPTc7YnJlYWt9YT1jW2s+PjJdfDA7aWYoYil7Y1tkPj4yXT1hO2NbZz4+Ml09Y1txPj4yXTtjW2g+PjJdPWNbZD4+Ml07JG0oZCwoY1tlPj4yXXwwKS0oY1tyPj4yXXwwKXwwLDAsMSxnLGgpfDA7S2QoY1txPj4yXXwwKTtjW3E+PjJdPWNbaz4+Ml07Y1t1Pj4yXT0oY1tkPj4yXXwwKS0oY1txPj4yXXwwKTtpZighKGNbdT4+Ml18MCkpe2E9MTE7YnJlYWt9fWVsc2V7Y1txPj4yXT1hO2NbdT4+Ml09Y1tmPj4yXX1jW3I+PjJdPWNbZT4+Ml19Y1tlPj4yXT0oY1tlPj4yXXwwKSsxfWlmKChhfDApPT01KXtjW20+PjJdPWNbeD4+Ml07eD1jW20+PjJdfDA7aT15O3JldHVybiB4fDB9ZWxzZSBpZigoYXwwKT09Nyl7S2QoYik7Y1soY1tvPj4yXXwwKSsyOD4+Ml09MDtjWyhjW28+PjJdfDApKzMyPj4yXT0wO2NbbT4+Ml09MDt4PWNbbT4+Ml18MDtpPXk7cmV0dXJuIHh8MH1lbHNlIGlmKChhfDApPT0xMSl7S2QoY1txPj4yXXwwKTtjWyhjW28+PjJdfDApKzI4Pj4yXT0wO2NbKGNbbz4+Ml18MCkrMzI+PjJdPTA7Y1ttPj4yXT0wO3g9Y1ttPj4yXXwwO2k9eTtyZXR1cm4geHwwfWVsc2UgaWYoKGF8MCk9PTE0KXtkbyBpZigoY1tyPj4yXXwwKT49MCl7Y1t0Pj4yXT1jWyhjW28+PjJdfDApKzQ0Pj4yXTtpZigoY1t0Pj4yXXwwKTwwKXtjWyhjW28+PjJdfDApKzI4Pj4yXT1jW3E+PjJdO2NbKGNbbz4+Ml18MCkrMzI+PjJdPWNbdT4+Ml07dj0oY1tuPj4yXXwwKSszMnwwO3c9Y1t2KzQ+PjJdfDA7eD0oY1tvPj4yXXwwKSsxNnwwO2NbeD4+Ml09Y1t2Pj4yXTtjW3grND4+Ml09dztjWyhjW28+PjJdfDApKzI0Pj4yXT0xO2JyZWFrfWlmKChjW3Q+PjJdfDApPihjW3I+PjJdfDApKXtjW3Y+PjJdPWNbcT4+Ml07Y1t3Pj4yXT1jWyhjW28+PjJdfDApKzI4Pj4yXTtjW3M+PjJdPShjW3Q+PjJdfDApLShjW3I+PjJdfDApfWVsc2V7Y1t2Pj4yXT1jWyhjW28+PjJdfDApKzI4Pj4yXTtjW3c+PjJdPWNbcT4+Ml07Y1tzPj4yXT0oY1tyPj4yXXwwKS0oY1t0Pj4yXXwwKX1jW3A+PjJdPUlkKChjW3U+PjJdfDApKzh8MCl8MDtpZighKGNbcD4+Ml18MCkpe0tkKGNbcT4+Ml18MCk7Y1ttPj4yXT03O3g9Y1ttPj4yXXwwO2k9eTtyZXR1cm4geHwwfWNbKGNbbz4+Ml18MCkrMjg+PjJdPWNbcD4+Ml07aWYoJG0ocCxjW3M+PjJdfDAsMCwxLHYsdyl8MCl7Y1soY1tvPj4yXXwwKSsyND4+Ml09MTtjWyhjW28+PjJdfDApKzMyPj4yXT0oY1twPj4yXXwwKS0oY1soY1tvPj4yXXwwKSsyOD4+Ml18MCl9ZWxzZXtLZChjW3A+PjJdfDApO2NbKGNbbz4+Ml18MCkrMjg+PjJdPTA7Y1soY1tvPj4yXXwwKSszMj4+Ml09MH1LZChjW3E+PjJdfDApfXdoaWxlKDApO2NbbT4+Ml09MDt4PWNbbT4+Ml18MDtpPXk7cmV0dXJuIHh8MH1yZXR1cm4gMH1mdW5jdGlvbiB6bihhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MDtsPWk7aT1pKzMyfDA7ZT1sKzI4fDA7Zj1sKzI0fDA7Zz1sKzIwfDA7aD1sKzE2fDA7az1sKzEyfDA7aj1sKzh8MDtjW2Y+PjJdPWE7Y1tnPj4yXT1iO2NbaD4+Ml09ZDtjW2NbZz4+Ml0+PjJdPTA7Y1tjW2g+PjJdPj4yXT0wO2lmKCEoY1soY1tmPj4yXXwwKSsxMj4+Ml18MCkpe2NbZT4+Ml09MDtiPWNbZT4+Ml18MDtpPWw7cmV0dXJuIGJ8MH1jW2s+PjJdPUlkKGNbY1soY1tmPj4yXXwwKSsxMj4+Ml0+PjJdfDApfDA7aWYoY1trPj4yXXwwKXtjW2o+PjJdPV9sKGNbKGNbKGNbZj4+Ml18MCkrMTI+PjJdfDApKzQ+PjJdfDAsbCl8MDtjW2NbaD4+Ml0+PjJdPShjW2NbKGNbZj4+Ml18MCkrMTI+PjJdPj4yXXwwKS0oY1tqPj4yXXwwKTtjW2NbZz4+Ml0+PjJdPWNbaz4+Ml07VFIoY1trPj4yXXwwLChjWyhjWyhjW2Y+PjJdfDApKzEyPj4yXXwwKSs0Pj4yXXwwKSsoY1tqPj4yXXwwKXwwLGNbY1toPj4yXT4+Ml18MCl8MDtjW2U+PjJdPTA7Yj1jW2U+PjJdfDA7aT1sO3JldHVybiBifDB9ZWxzZXtjW2U+PjJdPTc7Yj1jW2U+PjJdfDA7aT1sO3JldHVybiBifDB9cmV0dXJuIDB9ZnVuY3Rpb24gQW4oYSxiLGQsZSxmKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTA7bj1pO2k9aSs0OHwwO3M9bis0MHwwO3I9biszNnwwO2c9biszMnwwO2g9bisyOHwwO2o9bisyNHwwO3E9bisyMHwwO3A9bisxNnwwO2s9bisxMnwwO289bis4fDA7bD1uKzR8MDttPW47Y1tzPj4yXT1hO2Nbcj4+Ml09YjtjW2c+PjJdPWQ7Y1toPj4yXT1lO2Nbaj4+Ml09ZjtjW3E+PjJdPShjW3M+PjJdfDApKyhjWyhjW2o+PjJdfDApKzY0Pj4yXXwwKTtjW3A+PjJdPShjW3M+PjJdfDApKyhjW2NbaD4+Ml0+PjJdfDApO2U9Y1soY1tqPj4yXXwwKSsyOD4+Ml18MDtjW2w+PjJdPWU7Y1tvPj4yXT1lO2NbbT4+Ml09Qm4obCxjW3I+PjJdfDAsY1txPj4yXXwwLGNbcD4+Ml18MCxjW2c+PjJdfDAsbyl8MDtpZighKGNbbT4+Ml18MCkpe3M9Y1ttPj4yXXwwO2k9bjtyZXR1cm4gc3wwfWNbaz4+Ml09KGNbbD4+Ml18MCktKGNbKGNbaj4+Ml18MCkrMjg+PjJdfDApLTE7VlIoKGNbKGNbaj4+Ml18MCkrMjg+PjJdfDApKyhjW2s+PjJdfDApfDAsMCwoY1soY1tqPj4yXXwwKSszMj4+Ml18MCktKGNbaz4+Ml18MCl8MCl8MDtjWyhjW2o+PjJdfDApKzMyPj4yXT1jW2s+PjJdO2NbY1tnPj4yXT4+Ml09Y1soY1tqPj4yXXwwKSsyOD4+Ml07Y1tjW2g+PjJdPj4yXT1jWyhjW2o+PjJdfDApKzY0Pj4yXTtzPWNbbT4+Ml18MDtpPW47cmV0dXJuIHN8MH1mdW5jdGlvbiBCbihhLGIsZCxlLGYsZyl7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7dmFyIGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MDtvPWk7aT1pKzQ4fDA7aD1vKzQ0fDA7aj1vKzQwfDA7dT1vKzM2fDA7cj1vKzMyfDA7cD1vKzI4fDA7cT1vKzI0fDA7dD1vKzIwfDA7cz1vKzE2fDA7bD1vKzEyfDA7bT1vKzh8MDtrPW8rNHwwO249bztjW2g+PjJdPWE7Y1tqPj4yXT1iO2NbdT4+Ml09ZDtjW3I+PjJdPWU7Y1twPj4yXT1mO2NbcT4+Ml09ZztjW3Q+PjJdPWNbY1twPj4yXT4+Ml07Y1tzPj4yXT1jW2NbcT4+Ml0+PjJdO2NbbD4+Ml09Y1tqPj4yXTtjW24+PjJdPTE7JG0obCxjW3U+PjJdfDAsMCwwLGNbcD4+Ml18MCxjW3E+PjJdfDApfDA7Zz1jW2w+PjJdfDA7Y1ttPj4yXT1nO2Nbaz4+Ml09ZztjW2NbcD4+Ml0+PjJdPWNbdD4+Ml07Y1tjW3E+PjJdPj4yXT1jW3M+PjJdOyRtKG0sY1tyPj4yXXwwLDEsMCxjW3E+PjJdfDAsY1twPj4yXXwwKXwwO2lmKChjW2w+PjJdfDApIT0oY1tqPj4yXXwwKT8oY1ttPj4yXXwwKSE9KGNbaz4+Ml18MCk6MCl7cW4oY1toPj4yXXwwLGosayk7dT1jW24+PjJdfDA7aT1vO3JldHVybiB1fDB9aWYoKGNbbD4+Ml18MCkhPShjW2o+PjJdfDApKXtkbShjW2g+PjJdfDAsaik7dT1jW24+PjJdfDA7aT1vO3JldHVybiB1fDB9aWYoKGNbbT4+Ml18MCkhPShjW2s+PjJdfDApKXtkbShjW2g+PjJdfDAsayk7dT1jW24+PjJdfDA7aT1vO3JldHVybiB1fDB9ZWxzZXtjW24+PjJdPTA7dT1jW24+PjJdfDA7aT1vO3JldHVybiB1fDB9cmV0dXJuIDB9ZnVuY3Rpb24gQ24oYSxiLGQsZSxmKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTA7bj1pO2k9aSszMnwwO2c9bisyOHwwO2g9bisyNHwwO3A9bisyMHwwO289bisxNnwwO2o9bisxMnwwO2w9bis4fDA7az1uKzR8MDttPW47Y1tnPj4yXT1hO2NbaD4+Ml09YjtjW3A+PjJdPWQ7Y1tvPj4yXT1lO2Nbaj4+Ml09ZjtjW2w+PjJdPWNbY1tnPj4yXT4+Ml07Y1trPj4yXT0wO2NbbT4+Ml09V2JbY1soY1tsPj4yXXwwKSsxMj4+Ml0mMjU1XShjW2c+PjJdfDAsY1twPj4yXXwwLGNbbz4+Ml18MCxrKXwwO2lmKCgoY1ttPj4yXXwwKT09MD8oY1tjW2s+PjJdPj4yXT1jW2c+PjJdLChjW2NbbD4+Ml0+PjJdfDApPj0xKTowKT8oY1ttPj4yXT1ZYltjWyhjW2w+PjJdfDApKzI0Pj4yXSYyNTVdKGNbaz4+Ml18MCxjW2g+PjJdfDApfDAsKGNbbT4+Ml18MCkhPTApOjApe1RiW2NbKGNbbD4+Ml18MCkrMTY+PjJdJjI1NV0oY1trPj4yXXwwKXwwO2Nbaz4+Ml09MH1jW2Nbaj4+Ml0+PjJdPWNbaz4+Ml07aT1uO3JldHVybiBjW20+PjJdfDB9ZnVuY3Rpb24gRG4oYSxiLGQsZSxmLGcsaCxqKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDt2YXIgaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MDt1PWk7aT1pKzY0fDA7bT11KzQ4fDA7bj11KzQ0fDA7bz11KzI0fDA7cD11KzE2fDA7az11Kzh8MDtsPXUrNDB8MDtyPXUrMzZ8MDtzPXUrMzJ8MDtxPXU7Y1tuPj4yXT1hO2E9bztjW2E+PjJdPWI7Y1thKzQ+PjJdPWQ7YT1wO2NbYT4+Ml09ZTtjW2ErND4+Ml09ZjthPWs7Y1thPj4yXT1nO2NbYSs0Pj4yXT1oO2NbbD4+Ml09ajtjW3I+PjJdPWNbY1tuPj4yXT4+Ml07Y1tzPj4yXT0wO2lmKChjW3I+PjJdfDApIT0wPyhqPShjW3I+PjJdfDApKzE2fDAsYT1vLCEoKGNbaj4+Ml18MCkhPShjW2E+PjJdfDApPzE6KGNbais0Pj4yXXwwKSE9KGNbYSs0Pj4yXXwwKSkpOjApdD05O2Vsc2V7Yj1vO2lmKGNbcj4+Ml18MCl7ZT0oY1tyPj4yXXwwKSsxNnwwO2Q9Y1tlPj4yXXwwO2U9Y1tlKzQ+PjJdfDB9ZWxzZXtkPTA7ZT0wfWo9UVIoY1tiPj4yXXwwLGNbYis0Pj4yXXwwLGR8MCxlfDApfDA7YT1xO2NbYT4+Ml09ajtjW2ErND4+Ml09QztpZihjW3I+PjJdfDApe2E9Y1tyPj4yXXwwO2NbYT4+Ml09KGNbYT4+Ml18MCkrMX1xPUVuKHIsY1txPj4yXXwwLGNbcSs0Pj4yXXwwKXwwO2Nbcz4+Ml09cTtpZighcSl7cT0oY1tyPj4yXXwwKSsyNHwwO2NbcT4+Ml09LTE7Y1txKzQ+PjJdPS0xO3E9KGNbcj4+Ml18MCkrMzJ8MDtjW3E+PjJdPTA7Y1txKzQ+PjJdPTA7cT1jW28rND4+Ml18MDt0PShjW3I+PjJdfDApKzE2fDA7Y1t0Pj4yXT1jW28+PjJdO2NbdCs0Pj4yXT1xO3Q9OX19ZG8gaWYoKHR8MCk9PTkpe3Q9cDtxPWNbdCs0Pj4yXXwwO2lmKChxfDApPjB8KHF8MCk9PTAmKGNbdD4+Ml18MCk+Pj4wPjA/KHE9KGNbcj4+Ml18MCkrMjR8MCx0PXAsKGNbcT4+Ml18MCkhPShjW3Q+PjJdfDApPzE6KGNbcSs0Pj4yXXwwKSE9KGNbdCs0Pj4yXXwwKSk6MCl7dD1FbihyLDEsMCl8MDtjW3M+PjJdPXQ7aWYodClicmVhazt0PXA7dD1FbihyLGNbdD4+Ml18MCxjW3QrND4+Ml18MCl8MDtjW3M+PjJdPXQ7aWYodClicmVhaztvPXA7cT1jW28rND4+Ml18MDt0PShjW3I+PjJdfDApKzI0fDA7Y1t0Pj4yXT1jW28+PjJdO2NbdCs0Pj4yXT1xO3Q9KGNbcj4+Ml18MCkrMzJ8MDtjW3Q+PjJdPTA7Y1t0KzQ+PjJdPTB9dD1wO3E9Y1t0KzQ+PjJdfDA7aWYoKHF8MCk+MHwocXwwKT09MCYoY1t0Pj4yXXwwKT4+PjA+PTA/KHE9ayxxPVJSKDIsMCxjW3E+PjJdfDAsY1txKzQ+PjJdfDApfDAsdD0oY1tyPj4yXXwwKSszMnwwLHQ9UVIocXwwLEN8MCxjW3Q+PjJdfDAsY1t0KzQ+PjJdfDApfDAsY1tzPj4yXT1FbihyLHQsQyl8MCwoY1tzPj4yXXwwKT09MCk6MCl7cD1rO3E9Y1twKzQ+PjJdfDA7dD0oY1tyPj4yXXwwKSszMnwwO2NbdD4+Ml09Y1twPj4yXTtjW3QrND4+Ml09cX19d2hpbGUoMCk7Y1tjW2w+PjJdPj4yXT1jW3M+PjJdO2lmKChjW3I+PjJdfDApIT0oY1tjW24+PjJdPj4yXXwwKSl7Y1tjW24+PjJdPj4yXT1jW3I+PjJdO2NbbT4+Ml09MTt0PWNbbT4+Ml18MDtpPXU7cmV0dXJuIHR8MH1lbHNle2NbbT4+Ml09MDt0PWNbbT4+Ml18MDtpPXU7cmV0dXJuIHR8MH1yZXR1cm4gMH1mdW5jdGlvbiBFbihiLGQsZSl7Yj1ifDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wO2w9aTtpPWkrMzJ8MDtmPWwrMjB8MDtnPWwrMTZ8MDtoPWw7az1sKzEyfDA7aj1sKzh8MDtjW2c+PjJdPWI7Yj1oO2NbYj4+Ml09ZDtjW2IrND4+Ml09ZTtjW2s+PjJdPWNbY1tnPj4yXT4+Ml07ZG8gaWYoY1trPj4yXXwwKXtpZigoKGNbY1trPj4yXT4+Ml18MCkrMTArMXwwKT4oY1soY1trPj4yXXwwKSs4Pj4yXXwwKSl7Y1tqPj4yXT1jWyhjW2s+PjJdfDApKzg+PjJdPDwxO2Nbaz4+Ml09TGQoY1trPj4yXXwwLDQwKyhjW2o+PjJdfDApfDApfDA7aWYoY1trPj4yXXwwKXtjWyhjW2s+PjJdfDApKzg+PjJdPWNbaj4+Ml07Y1soY1trPj4yXXwwKSs0Pj4yXT0oY1trPj4yXXwwKSs0MDticmVha31LZChjW2NbZz4+Ml0+PjJdfDApO2NbY1tnPj4yXT4+Ml09MDtjW2Y+PjJdPTc7Yj1jW2Y+PjJdfDA7aT1sO3JldHVybiBifDB9fWVsc2V7Y1trPj4yXT1JZCgxNDApfDA7aWYoY1trPj4yXXwwKXtjWyhjW2s+PjJdfDApKzg+PjJdPTEwMDtjWyhjW2s+PjJdfDApKzQ+PjJdPShjW2s+PjJdfDApKzQwO2NbY1trPj4yXT4+Ml09MDticmVha31jW2Y+PjJdPTc7Yj1jW2Y+PjJdfDA7aT1sO3JldHVybiBifDB9d2hpbGUoMCk7aj1oO2o9S2woKGNbKGNbaz4+Ml18MCkrND4+Ml18MCkrKGNbY1trPj4yXT4+Ml18MCl8MCxjW2o+PjJdfDAsY1tqKzQ+PjJdfDApfDA7Yj1jW2s+PjJdfDA7Y1tiPj4yXT0oY1tiPj4yXXwwKStqO2FbKGNbKGNbaz4+Ml18MCkrND4+Ml18MCkrKGNbY1trPj4yXT4+Ml18MCk+PjBdPTA7Y1tjW2c+PjJdPj4yXT1jW2s+PjJdO2NbZj4+Ml09MDtiPWNbZj4+Ml18MDtpPWw7cmV0dXJuIGJ8MH1mdW5jdGlvbiBGbihhLGIpe2E9YXwwO2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wO2w9aTtpPWkrMzJ8MDtqPWw7ZD1sKzI0fDA7ZT1sKzIwfDA7Zj1sKzE2fDA7aD1sKzEyfDA7Zz1sKzh8MDtrPWwrNHwwO2NbZT4+Ml09YTtjW2Y+PjJdPWI7Y1toPj4yXT0wO2RvIGlmKCEoY1soY1tlPj4yXXwwKSs4Pj4yXXwwKSl7Y1tnPj4yXT1jW2NbZT4+Ml0+PjJdO2Nbaj4+Ml09Y1soY1tnPj4yXXwwKSsyMTY+PjJdO2Nbaz4+Ml09T2QoMjMyNDEsail8MDtpZihjW2s+PjJdfDApe2NbaD4+Ml09YWYoY1soY1tnPj4yXXwwKSsxMj4+Ml18MCxjW2s+PjJdfDAsLTEsKGNbZT4+Ml18MCkrOHwwLDApfDA7S2QoY1trPj4yXXwwKTticmVha31jW2Q+PjJdPTc7az1jW2Q+PjJdfDA7aT1sO3JldHVybiBrfDB9d2hpbGUoMCk7Y1tjW2Y+PjJdPj4yXT1jWyhjW2U+PjJdfDApKzg+PjJdO2NbZD4+Ml09Y1toPj4yXTtrPWNbZD4+Ml18MDtpPWw7cmV0dXJuIGt8MH1mdW5jdGlvbiBHbihhLGIsZCxlKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wO209aTtpPWkrMzJ8MDtmPW0rMjB8MDtnPW0rMTZ8MDtoPW0rMTJ8MDtqPW0rOHwwO2w9bSs0fDA7az1tO2NbZj4+Ml09YTtjW2c+PjJdPWI7Y1toPj4yXT1kO2Nbaj4+Ml09ZTtjW2s+PjJdPWNbY1tmPj4yXT4+Ml07aWYoKGNbaz4+Ml18MCk9PTUpe2NbbD4+Ml09T2JbY1toPj4yXSYyNTVdKGNbZj4+Ml18MCxjW2NbZz4+Ml0+PjJdfDAsY1tqPj4yXXwwKXwwO2Q9Y1tnPj4yXXwwO2NbZD4+Ml09KGNbZD4+Ml18MCkrMTtkPWNbbD4+Ml18MDtpPW07cmV0dXJuIGR8MH1jW2w+PjJdPUduKGNbKGNbZj4+Ml18MCkrMTI+PjJdfDAsY1tnPj4yXXwwLGNbaD4+Ml18MCxjW2o+PjJdfDApfDA7aWYoISgoY1tsPj4yXXwwKT09MCYoY1trPj4yXXwwKSE9Mikpe2Q9Y1tsPj4yXXwwO2k9bTtyZXR1cm4gZHwwfWNbbD4+Ml09R24oY1soY1tmPj4yXXwwKSsxNj4+Ml18MCxjW2c+PjJdfDAsY1toPj4yXXwwLGNbaj4+Ml18MCl8MDtkPWNbbD4+Ml18MDtpPW07cmV0dXJuIGR8MH1mdW5jdGlvbiBIbihhLGIsZSl7YT1hfDA7Yj1ifDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MDttPWk7aT1pKzMyfDA7Zj1tKzIwfDA7Zz1tKzE2fDA7aD1tKzEyfDA7az1tKzh8MDtsPW0rNHwwO2o9bTtjW2Y+PjJdPWE7Y1tnPj4yXT1iO2NbaD4+Ml09ZTtjW2s+PjJdPWNbY1tmPj4yXT4+Ml07Y1tsPj4yXT0wO2lmKChkWyhjW2c+PjJdfDApKzM0Pj4wXXwwfDApIT0wPyhjW2NbKGNbZz4+Ml18MCkrOD4+Ml0+PjJdfDApIT0xOjApe2Nbaj4+Ml09MDt3aGlsZSgxKXtpZigoY1tqPj4yXXwwKT49KGNbKGNbaz4+Ml18MCkrMjQ+PjJdfDApKWJyZWFrO2NbKGNbaD4+Ml18MCkrKCgoY1tqPj4yXXwwKSozfDApKzE8PDIpPj4yXT1jWyhjW2Y+PjJdfDApKzY0Pj4yXTtjWyhjW2g+PjJdfDApKygoKGNbaj4+Ml18MCkqM3wwKSsyPDwyKT4+Ml09Y1soY1tmPj4yXXwwKSs2ND4+Ml07Y1tqPj4yXT0oY1tqPj4yXXwwKSsxfWw9Y1tsPj4yXXwwO2k9bTtyZXR1cm4gbHwwfWNbbD4+Ml09SW4oY1tmPj4yXXwwLGNbZz4+Ml18MCl8MDtpZihjW2w+PjJdfDApe2w9Y1tsPj4yXXwwO2k9bTtyZXR1cm4gbHwwfWNbaj4+Ml09MDt3aGlsZSgxKXtpZigoY1tqPj4yXXwwKT49KGNbKGNbaz4+Ml18MCkrMjQ+PjJdfDApKWJyZWFrO2NbKGNbaD4+Ml18MCkrKCgoY1tqPj4yXXwwKSozfDApKzE8PDIpPj4yXT1jWyhjWyhjW2c+PjJdfDApKzQwPj4yXXwwKSsoKChjW2o+PjJdfDApKjN8MCkrMTw8Mik+PjJdO2NbKGNbaD4+Ml18MCkrKCgoY1tqPj4yXXwwKSozfDApKzI8PDIpPj4yXT1jWyhjWyhjW2c+PjJdfDApKzQwPj4yXXwwKSsoKChjW2o+PjJdfDApKjN8MCkrMjw8Mik+PjJdO2Nbaj4+Ml09KGNbaj4+Ml18MCkrMX1sPWNbbD4+Ml18MDtpPW07cmV0dXJuIGx8MH1mdW5jdGlvbiBJbihiLGUpe2I9YnwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wO3M9aTtpPWkrNjR8MDtnPXMrNDR8MDtoPXMrNDB8MDtmPXMrMzZ8MDtxPXMrMzJ8MDtwPXMrMjh8MDtvPXMrMjR8MDttPXMrMjB8MDtsPXMrOHwwO2s9cztqPXMrNDh8MDtuPXMrMTZ8MDtjW2g+PjJdPWI7Y1tmPj4yXT1lO2NbcT4+Ml09MDtkbyBpZighKGNbKGNbZj4+Ml18MCkrNDA+PjJdfDApKXtjW3A+PjJdPWNbY1toPj4yXT4+Ml07dD0oY1toPj4yXXwwKSszMnwwO2I9Y1t0KzQ+PjJdfDA7ZT1sO2NbZT4+Ml09Y1t0Pj4yXTtjW2UrND4+Ml09YjtjW28+PjJdPWNbZj4+Ml07d2hpbGUoMSl7aWYoY1soY1tvPj4yXXwwKSs4Pj4yXXwwKWY9KGNbY1soY1tvPj4yXXwwKSs4Pj4yXT4+Ml18MCk9PTE7ZWxzZSBmPTA7Yj1jW28+PjJdfDA7aWYoIWYpYnJlYWs7Y1tvPj4yXT1jW2IrOD4+Ml19Yj1iKzI0fDA7ZT1jW2IrND4+Ml18MDt0PWs7Y1t0Pj4yXT1jW2I+PjJdO2NbdCs0Pj4yXT1lO2Fbaj4+MF09YVsoY1tvPj4yXXwwKSszMj4+MF18MDtjW20+PjJdPWNbbz4+Ml07d2hpbGUoMSl7aWYoIShjW20+PjJdfDApKWJyZWFrO2Y9Y1ttPj4yXXwwO2lmKChjW2NbbT4+Ml0+PjJdfDApIT01KWY9Y1tmKzE2Pj4yXXwwO2Nbbj4+Ml09Zjt0PUlkKChjWyhjW3A+PjJdfDApKzI0Pj4yXXwwKSozPDwyKXwwO2NbKGNbbj4+Ml18MCkrNDA+PjJdPXQ7aWYoIShjWyhjW24+PjJdfDApKzQwPj4yXXwwKSl7cj0xMjticmVha31WUihjWyhjW24+PjJdfDApKzQwPj4yXXwwLDAsKGNbKGNbcD4+Ml18MCkrMjQ+PjJdfDApKjM8PDJ8MCl8MDtjW20+PjJdPWNbKGNbbT4+Ml18MCkrMTI+PjJdfWlmKChyfDApPT0xMil7Y1tnPj4yXT03O3Q9Y1tnPj4yXXwwO2k9cztyZXR1cm4gdHwwfVNtKGNbaD4+Ml18MCxjW28+PjJdfDAscSk7d2hpbGUoMSl7aWYoISgoZFsoY1toPj4yXXwwKSs2Pj4wXXwwKT09MD8oY1txPj4yXXwwKT09MDowKSlicmVhaztkb3tpZighKGRbKGNbaD4+Ml18MCkrNz4+MF18MCkpWWQoY1soY1toPj4yXXwwKSs4Pj4yXXwwKXwwO1RtKGNbaD4+Ml18MCxjW28+PjJdfDAscSk7YVsoY1toPj4yXXwwKSs2Pj4wXT1hWyhjW28+PjJdfDApKzMyPj4wXXwwO2FbKGNbaD4+Ml18MCkrNz4+MF09MTtjWyhjW2g+PjJdfDApKzg4Pj4yXT0xO3A9KGNbbz4+Ml18MCkrMjR8MDtyPWNbcCs0Pj4yXXwwO3Q9KGNbaD4+Ml18MCkrMzJ8MDtjW3Q+PjJdPWNbcD4+Ml07Y1t0KzQ+PjJdPXI7aWYoZFsoY1toPj4yXXwwKSs2Pj4wXXwwKWJyZWFrO2lmKChjW2Nbbz4+Ml0+PjJdfDApIT0xKWJyZWFrfXdoaWxlKChPbShjW2g+PjJdfDAscSl8MCkhPTApO2lmKGNbcT4+Ml18MCljb250aW51ZTtpZihkWyhjW2g+PjJdfDApKzY+PjBdfDApY29udGludWU7Sm4oY1tvPj4yXXwwKX1hWyhjW2g+PjJdfDApKzY+PjBdPTA7cD1sO3I9Y1twKzQ+PjJdfDA7dD0oY1toPj4yXXwwKSszMnwwO2NbdD4+Ml09Y1twPj4yXTtjW3QrND4+Ml09cjtpZihhW2o+PjBdfDApe2FbKGNbbz4+Ml18MCkrMzI+PjBdPWFbaj4+MF18MDticmVha31TbShjW2g+PjJdfDAsY1tvPj4yXXwwLHEpO2Rve1RtKGNbaD4+Ml18MCxjW28+PjJdfDAscSk7cj0oY1tvPj4yXXwwKSsyNHwwO3Q9a313aGlsZSgoKGNbcj4+Ml18MCkhPShjW3Q+PjJdfDApPzE6KGNbcis0Pj4yXXwwKSE9KGNbdCs0Pj4yXXwwKSk/KGNbcT4+Ml18MCk9PTA6MCl9d2hpbGUoMCk7Y1tnPj4yXT1jW3E+PjJdO3Q9Y1tnPj4yXXwwO2k9cztyZXR1cm4gdHwwfWZ1bmN0aW9uIEpuKGIpe2I9YnwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTA7bD1pO2k9aSszMnwwO2Y9bCsxNnwwO2U9bCsxMnwwO2o9bCs4fDA7az1sKzR8MDtnPWwrMjB8MDtoPWw7Y1tmPj4yXT1iO2lmKCEoY1tmPj4yXXwwKSl7aT1sO3JldHVybn1jW2U+PjJdPWNbKGNbZj4+Ml18MCkrMjA+PjJdO2E6ZG8gaWYoKGNbZT4+Ml18MCkhPTA/KGNbKGNbZT4+Ml18MCkrMjg+PjJdfDApIT0wOjApe2Nbaj4+Ml09MDtjW2s+PjJdPWNbKGNbZT4+Ml18MCkrMjg+PjJdO3doaWxlKDEpe2FbZz4+MF09MDtjW2g+PjJdPTA7d2hpbGUoMSl7aWYoISgyNTQmKGFbY1trPj4yXT4+MF18ZFtnPj4wXSkpKWJyZWFrO2lmKCEoZFtnPj4wXSYxMjgpKWNbaD4+Ml09KGNbaD4+Ml18MCkrMTtlPWNbaz4+Ml18MDtjW2s+PjJdPWUrMTthW2c+PjBdPWFbZT4+MF0mMTI4fWU9KGNbKGNbZj4+Ml18MCkrNDA+PjJdfDApKygoKGNbaj4+Ml18MCkqM3wwKSsxPDwyKXwwO2NbZT4+Ml09KGNbZT4+Ml18MCkrKGNbaD4+Ml18MCk7ZT0oY1soY1tmPj4yXXwwKSs0MD4+Ml18MCkrKCgoY1tqPj4yXXwwKSozfDApKzI8PDIpfDA7Y1tlPj4yXT0oY1tlPj4yXXwwKSsoKGNbaD4+Ml18MCk+MCYxKTtpZighKGFbY1trPj4yXT4+MF18MCkpYnJlYWsgYTtjW2s+PjJdPShjW2s+PjJdfDApKzE7Yj1jW2s+PjJdfDA7aWYoZFtjW2s+PjJdPj4wXSYxMjgpYj0kbChiLGopfDA7ZWxzZXtjW2o+PjJdPWRbYj4+MF07Yj0xfWNbaz4+Ml09KGNbaz4+Ml18MCkrYn19d2hpbGUoMCk7Sm4oY1soY1tmPj4yXXwwKSsxMj4+Ml18MCk7Sm4oY1soY1tmPj4yXXwwKSsxNj4+Ml18MCk7aT1sO3JldHVybn1mdW5jdGlvbiBLbihiLGUpe2I9YnwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTA7bz1pO2k9aSszMnwwO3A9bysyOHwwO2Y9bysyNHwwO209bysyMHwwO2g9bysxNnwwO2w9bysxMnwwO2s9bys4fDA7Zz1vKzR8MDtqPW87Y1twPj4yXT1iO2NbZj4+Ml09ZTtjW20+PjJdPWNbY1tjW2Y+PjJdPj4yXT4+Ml07Y1tsPj4yXT1jWyhjW3A+PjJdfDApKzIwPj4yXTtjW2s+PjJdPWNbKGNbbD4+Ml18MCkrMjg+PjJdO2NbZz4+Ml09MDtlPWNbKGNbcD4+Ml18MCkrMzY+PjJdfDA7Yj1jWyhjW2Y+PjJdfDApKzQ+PjJdfDA7aWYoKGFbKGNbZj4+Ml18MCkrMjQ+PjBdfDApPT0xMjEpY1toPj4yXT1fKGUsYil8MDtlbHNlIGNbaD4+Ml09XyhlLChiKzMxfDApLzMyfDApfDA7d2hpbGUoMSl7Y1tqPj4yXT1SbShrKXwwO2lmKCEoKGNbKGNbbD4+Ml18MCkrNjg+PjJdfDApPChjWyhjW20+PjJdfDApKzI0Pj4yXXwwKT8oY1soY1tsPj4yXXwwKSs2OD4+Ml18MCkhPShjW2c+PjJdfDApOjApKW49NjtkbyBpZigobnwwKT09Nil7bj0wO2U9Y1tqPj4yXXwwO2lmKChhWyhjW2Y+PjJdfDApKzI0Pj4wXXwwKT09MTIxKXtjWyhjWyhjW2Y+PjJdfDApKzI4Pj4yXXwwKSsoKGNbaD4+Ml18MCkrKGNbZz4+Ml18MCk8PDIpPj4yXT1lO2JyZWFrfWlmKGUpe3A9KGNbKGNbZj4+Ml18MCkrMjg+PjJdfDApKygoY1toPj4yXXwwKSsoKChjW2c+PjJdfDApKzF8MCkvMzJ8MCk8PDIpfDA7Y1twPj4yXT1jW3A+PjJdfDE8PChjW2c+PjJdJjMxKX19d2hpbGUoMCk7aWYoKGFbY1trPj4yXT4+MF18MCkhPTEpYnJlYWs7Y1trPj4yXT0oY1trPj4yXXwwKSsxO2U9Y1trPj4yXXwwO2lmKGRbY1trPj4yXT4+MF0mMTI4KWU9JGwoZSxnKXwwO2Vsc2V7Y1tnPj4yXT1kW2U+PjBdO2U9MX1jW2s+PjJdPShjW2s+PjJdfDApK2V9aT1vO3JldHVybn1mdW5jdGlvbiBMbihhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTA7ZT1pO2k9aSsxNnwwO2g9ZSsxMnwwO2Y9ZSs4fDA7aj1lKzR8MDtnPWU7Y1toPj4yXT1hO2NbZj4+Ml09YjtjW2o+PjJdPWQ7Y1tnPj4yXT1jW2o+PjJdO2NbKGNbZz4+Ml18MCkrKGNbZj4+Ml08PDQpPj4yXT1jW2g+PjJdO2k9ZTtyZXR1cm4gMH1mdW5jdGlvbiBNbihhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wLGc9MCxoPTA7Zz1pO2k9aSszMnwwO2I9ZysxNnwwO2U9ZysxMnwwO2Q9ZztmPWcrOHwwO2NbYj4+Ml09YTtjW2U+PjJdPWNbKGNbYj4+Ml18MCkrOD4+Ml07Y1tmPj4yXT0wO2g9X2woY1tlPj4yXXwwLGQpfDA7Y1tlPj4yXT0oY1tlPj4yXXwwKStoO2g9ZDthPWQ7aWYoKGNbaD4+Ml18MCk9PTAmKGNbaCs0Pj4yXXwwKT09MHwoY1thPj4yXXwwKT09MSYoY1thKzQ+PjJdfDApPT0wKXtjW2U+PjJdPTA7Y1tmPj4yXT0xO2U9Y1tlPj4yXXwwO2g9Y1tiPj4yXXwwO2g9aCs4fDA7Y1toPj4yXT1lO2g9Y1tmPj4yXXwwO2k9ZztyZXR1cm4gaHwwfWVsc2V7YT1kO2E9UVIoY1thPj4yXXwwLGNbYSs0Pj4yXXwwLDIsMCl8MDtoPShjW2I+PjJdfDApKzEyfDA7Y1toPj4yXT0oY1toPj4yXXwwKSthO2U9Y1tlPj4yXXwwO2g9Y1tiPj4yXXwwO2g9aCs4fDA7Y1toPj4yXT1lO2g9Y1tmPj4yXXwwO2k9ZztyZXR1cm4gaHwwfXJldHVybiAwfWZ1bmN0aW9uIE5uKGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTA7Zj1pO2k9aSszMnwwO2s9ZisyMHwwO2o9ZisxMnwwO2U9Zis4fDA7Zz1mKzR8MDtoPWY7Y1trPj4yXT1hO2NbZisxNj4+Ml09YjtjW2o+PjJdPWQ7Y1tlPj4yXT0wO2NbZz4+Ml09Y1soY1trPj4yXXwwKSsyMD4+Ml07Y1toPj4yXT1jW2o+PjJdO2E9KGNbaD4+Ml18MCkrNHwwO2NbYT4+Ml09KGNbYT4+Ml18MCkrMTthPShjW2g+PjJdfDApKzh8MDtjW2E+PjJdPShjW2E+PjJdfDApKyhjWyhjW2c+PjJdfDApKzY0Pj4yXXwwKTtpPWY7cmV0dXJuIGNbZT4+Ml18MH1mdW5jdGlvbiBPbihhLGIsZCxlKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTA7az1pO2k9aSszMnwwO2w9aysyMHwwO2Y9aztnPWsrMTZ8MDtoPWsrMTJ8MDtqPWsrOHwwO2NbbD4+Ml09YTthPWY7Y1thPj4yXT1iO2NbYSs0Pj4yXT1kO2NbZz4+Ml09ZTtjW2g+PjJdPTA7Y1tqPj4yXT1wbChjW2w+PjJdfDAsMjEsaCwwKXwwO2RvIGlmKCEoY1tqPj4yXXwwKSl7bD1mO0xlKGNbaD4+Ml18MCwxLGNbbD4+Ml18MCxjW2wrND4+Ml18MCl8MDtjW2o+PjJdPXRlKGNbaD4+Ml18MCl8MDtpZigoY1tqPj4yXXwwKT09MTAwPyhHZShjW2g+PjJdfDAsMCl8MCk9PTQ6MCl7Y1tqPj4yXT0wO2JyZWFrfWw9WWQoY1toPj4yXXwwKXwwO2Nbaj4+Ml09bDtjW2o+PjJdPShjW2o+PjJdfDApPT0wPzI2NzpsO2NbaD4+Ml09MH13aGlsZSgwKTtjW2NbZz4+Ml0+PjJdPWNbaD4+Ml07aT1rO3JldHVybiBjW2o+PjJdfDB9ZnVuY3Rpb24gUG4oYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MDtnPWk7aT1pKzE2fDA7aD1nKzEyfDA7ZD1nKzh8MDtlPWcrNHwwO2Y9ZztjW2g+PjJdPWE7Y1tkPj4yXT1iO2NbZT4+Ml09MDtjW2Y+PjJdPXBsKGNbaD4+Ml18MCwyMixlLDApfDA7ZG8gaWYoIShjW2Y+PjJdfDApKXtLZShjW2U+PjJdfDAsMSwwKXwwO2lmKCh0ZShjW2U+PjJdfDApfDApPT0xMDA/KEdlKGNbZT4+Ml18MCwwKXwwKT09NDowKWJyZWFrO2g9WWQoY1tlPj4yXXwwKXwwO2NbZj4+Ml09aDtjW2Y+PjJdPShjW2Y+PjJdfDApPT0wPzI2NzpoO2NbZT4+Ml09MH13aGlsZSgwKTtjW2NbZD4+Ml0+PjJdPWNbZT4+Ml07aT1nO3JldHVybiBjW2Y+PjJdfDB9ZnVuY3Rpb24gUW4oYil7Yj1ifDA7dmFyIGU9MCxmPTAsZz0wO2Y9aTtpPWkrMTZ8MDtnPWYrNHwwO2U9ZjtjW2c+PjJdPWI7Y1tlPj4yXT0oY1tnPj4yXXwwKSsoMC0oY1soY1tnPj4yXXwwKSstND4+Ml18MCkpO2I9Y1tlPj4yXXwwO2lmKChjW2c+PjJdfDApPT0oKGNbZT4+Ml18MCkrMTYrNHwwKSlhW2IrMT4+MF09MDtlbHNlIGFbYisyPj4wXT0wO2lmKGRbY1tlPj4yXT4+MF18MCl7aT1mO3JldHVybn1pZihkWyhjW2U+PjJdfDApKzE+PjBdfDApe2k9ZjtyZXR1cm59aWYoZFsoY1tlPj4yXXwwKSsyPj4wXXwwKXtpPWY7cmV0dXJufUtkKGNbZT4+Ml18MCk7aT1mO3JldHVybn1mdW5jdGlvbiBSbihhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MDtlPWk7aT1pKzE2fDA7Zj1lKzh8MDtnPWUrNHwwO2g9ZTtjW2Y+PjJdPWE7Y1tnPj4yXT1iO2NbaD4+Ml09ZDthPWNbaD4+Ml18MDtjW2E+PjJdPShjW2E+PjJdfDApKzE7Y1soY1tmPj4yXXwwKSszNj4+Ml09Y1tnPj4yXTtpPWU7cmV0dXJuIDB9ZnVuY3Rpb24gU24oYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MDtmPWk7aT1pKzE2fDA7Yj1mKzh8MDtkPWYrNHwwO2U9ZjtjW2I+PjJdPWE7Y1tkPj4yXT0kZShjWyhjW2I+PjJdfDApKzEyPj4yXXwwLDIzMzY5LDAsMCwwKXwwO2RvIGlmKCEoY1tkPj4yXXwwKSl7Y1tkPj4yXT1UbihjW2I+PjJdfDAsMSl8MDthPWNbKGNbYj4+Ml18MCkrMTI+PjJdfDA7aWYoISgoY1tkPj4yXXwwKT09MHwoY1tkPj4yXXwwKT09MTAxKSl7JGUoYSwyMzM5NywwLDAsMCl8MDskZShjWyhjW2I+PjJdfDApKzEyPj4yXXwwLDIzMzg0LDAsMCwwKXwwO2JyZWFrfWNbZT4+Ml09JGUoYSwyMzM4NCwwLDAsMCl8MDtpZihjW2U+PjJdfDApY1tkPj4yXT1jW2U+PjJdfXdoaWxlKDApO3ltKGNbYj4+Ml18MCk7aT1mO3JldHVybiBjW2Q+PjJdfDB9ZnVuY3Rpb24gVG4oYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTA7bT1pO2k9aSszMnwwO2Q9bSsyOHwwO2U9bSsyNHwwO2Y9bSsyMHwwO2s9bSsxNnwwO2o9bSsxMnwwO2w9bSs4fDA7Zz1tKzR8MDtoPW07Y1tkPj4yXT1hO2NbZT4+Ml09YjtjW2Y+PjJdPTA7Y1tqPj4yXT0wO2Nbaz4+Ml09cGwoY1tkPj4yXXwwLDI3LGosMCl8MDtpZighKGNbaz4+Ml18MCkpe0tlKGNbaj4+Ml18MCwxLGNbKGNbZD4+Ml18MCkrMjcyPj4yXXwwKXwwO0tlKGNbaj4+Ml18MCwyLGNbKGNbZD4+Ml18MCkrMjQ4Pj4yXXwwKXwwO2E6d2hpbGUoMSl7YT0odGUoY1tqPj4yXXwwKXwwKT09MTAwO2I9Y1tqPj4yXXwwO2lmKCFhKWJyZWFrO2NbaD4+Ml09Q2UoYiwwKXwwO2NbZz4+Ml09MDt3aGlsZSgxKXtpZihjW2s+PjJdfDApY29udGludWUgYTtpZigoY1tnPj4yXXwwKT49KGNbKGNbZD4+Ml18MCkrMjQ4Pj4yXXwwKSljb250aW51ZSBhO2Nbaz4+Ml09b2woY1tkPj4yXXwwLGNbaD4+Ml18MCxjW2c+PjJdfDAsLTIpfDA7aWYoKGNbaz4+Ml18MCk9PTEwMSl7Y1tmPj4yXT0xO2Nbaz4+Ml09MH1jW2c+PjJdPShjW2c+PjJdfDApKzF9fWNbbD4+Ml09WWQoYil8MDtpZighKGNbaz4+Ml18MCkpY1trPj4yXT1jW2w+PjJdfXltKGNbZD4+Ml18MCk7amwoY1tkPj4yXXwwKTtpPW07cmV0dXJuICgoY1trPj4yXXwwKT09MCYoY1tlPj4yXXwwKSE9MCYoY1tmPj4yXXwwKSE9MD8xMDE6Y1trPj4yXXwwKXwwfWZ1bmN0aW9uIFVuKGIsZCl7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MDtDPWk7aT1pKzIwOHwwO3k9QyszMnwwO2U9QysxMzJ8MDtmPUMrMTI4fDA7dj1DKzEyNHwwO3Q9QysxMjB8MDtBPUMrMTE2fDA7cj1DKzExMnwwO2w9QysxMDh8MDtCPUMrOTZ8MDt4PUM7cz1DKzkyfDA7aD1DKzg4fDA7Zz1DKzg0fDA7cD1DKzgwfDA7bj1DKzc2fDA7bT1DKzcyfDA7ej1DKzY4fDA7cT1DKzY0fDA7az1DKzYwfDA7bz1DKzU2fDA7dz1DKzUyfDA7dT1DKzQ4fDA7aj1DKzEzNnwwO2NbZT4+Ml09YjtjW2Y+PjJdPWQ7Y1t2Pj4yXT1jW2NbZj4+Ml0+PjJdO2NbdD4+Ml09Y1tjWyhjW3Y+PjJdfDApKzM2Pj4yXT4+Ml07Y1tCPj4yXT0wO2NbQis0Pj4yXT0wO2NbQis4Pj4yXT0wO2lmKCEoY1soY1tmPj4yXXwwKSsxMj4+Ml18MCkpe21lKGNbZT4+Ml18MCwxODQwMiwwLDApO2k9QztyZXR1cm59O2NbeD4+Ml09MDtjW3grND4+Ml09MDtjW3grOD4+Ml09MDtjW3grMTI+PjJdPTA7Y1t4KzE2Pj4yXT0wO2NbeCsyMD4+Ml09MDtjW3grMjQ+PjJdPTA7Y1t4KzI4Pj4yXT0wO2NbQT4+Ml09Sm0oY1tmPj4yXXwwLDAscil8MDthOmRvIGlmKCEoY1tBPj4yXXwwKSl7Y1t4KzI0Pj4yXT1JZCgoY1tyPj4yXXwwKSoxMnwwKXwwO2lmKCEoY1t4KzI0Pj4yXXwwKSl7Y1tBPj4yXT03O2JyZWFrfUQ9KGNbZj4+Ml18MCkrMzJ8MDtkPWNbRCs0Pj4yXXwwO2I9eCsxNnwwO2NbYj4+Ml09Y1tEPj4yXTtjW2IrND4+Ml09ZDtjW3g+PjJdPWNbZj4+Ml07Y1tsPj4yXT0wO3doaWxlKDEpe2lmKChjW2w+PjJdfDApPj0oY1soY1t2Pj4yXXwwKSsyND4+Ml18MCkpYnJlYWsgYTtjW2c+PjJdPTA7Y1twPj4yXT0wO2Nbbj4+Ml09MDtjW20+PjJdPTA7Y1t4KzQ+PjJdPWNbbD4+Ml07Y1t4Kzg+PjJdPTA7Tm0oY1soY1tmPj4yXXwwKSsxMj4+Ml18MCwxNTgseCl8MDtjW3o+PjJdPUVlKGNbKGNbZj4+Ml18MCkrOD4+Ml18MCwoY1tsPj4yXXwwKSsxfDApfDA7Y1txPj4yXT1BZShjWyhjW2Y+PjJdfDApKzg+PjJdfDAsKGNbbD4+Ml18MCkrMXwwKXwwO2lmKCEoY1t6Pj4yXXwwKSl7aWYoKEdlKGNbKGNbZj4+Ml18MCkrOD4+Ml18MCwoY1tsPj4yXXwwKSsxfDApfDApIT01KWJyZWFrfWVsc2V7Y1tBPj4yXT1DbihjWyhjW3Y+PjJdfDApKzM2Pj4yXXwwLGNbKGNbZj4+Ml18MCkrMTY+PjJdfDAsY1t6Pj4yXXwwLGNbcT4+Ml18MCxzKXwwO2lmKGNbQT4+Ml18MClicmVhayBhO2NbQT4+Ml09U2JbY1soY1t0Pj4yXXwwKSsyMD4+Ml0mMjU1XShjW3M+PjJdfDAsaCxnLHAsbixtKXwwO3doaWxlKDEpe2lmKGNbQT4+Ml18MClicmVhaztjW28+PjJdPTIxNDc0ODM2NDc7Y1t3Pj4yXT0wO2Nbaz4+Ml09MDt3aGlsZSgxKXtpZigoY1trPj4yXXwwKT49KGNbcj4+Ml18MCkpYnJlYWs7Y1t1Pj4yXT0oY1t4KzI0Pj4yXXwwKSsoKGNbaz4+Ml18MCkqMTJ8MCk7aWYoKGNbY1t1Pj4yXT4+Ml18MCkhPTA/KChjWyhjW3U+PjJdfDApKzQ+PjJdfDApLShjWyhjW3U+PjJdfDApKzg+PjJdfDApfDApPChjW28+PjJdfDApOjApe2Nbbz4+Ml09KGNbKGNbdT4+Ml18MCkrND4+Ml18MCktKGNbKGNbdT4+Ml18MCkrOD4+Ml18MCk7Y1t3Pj4yXT1jW3U+PjJdfWNbaz4+Ml09KGNbaz4+Ml18MCkrMX1pZighKGNbdz4+Ml18MCkpe2NbQT4+Ml09MTAxO2NvbnRpbnVlfWQ9Y1t3Pj4yXXwwO2lmKCEoMjU0JmFbY1tjW3c+PjJdPj4yXT4+MF0pKWNbZD4+Ml09MDtlbHNlIFduKGQsKGNbdz4+Ml18MCkrNHwwKTt3aGlsZSgxKXtpZihjW0E+PjJdfDApYnJlYWs7aWYoKGNbbT4+Ml18MCk+PShjW28+PjJdfDApKWJyZWFrO2NbQT4+Ml09U2JbY1soY1t0Pj4yXXwwKSsyMD4+Ml0mMjU1XShjW3M+PjJdfDAsaCxnLHAsbixtKXwwfWlmKCEoY1tBPj4yXXwwKSl7ZD0oKGNbdz4+Ml18MCktKGNbeCsyND4+Ml18MCl8MCkvMTJ8MDtiPWNbcD4+Ml18MDtEPShjW24+PjJdfDApLShjW3A+PjJdfDApfDA7Y1t5Pj4yXT1jW2w+PjJdO2NbeSs0Pj4yXT1kO2NbeSs4Pj4yXT1iO2NbeSsxMj4+Ml09RDtRZCg2NCxqLDIzNDE0LHkpfDA7Y1tBPj4yXT1YbihCLGosLTEpfDA7Y29udGludWV9aWYoKGNbQT4+Ml18MCkhPTEwMSljb250aW51ZTtpZihjWyhjW3Y+PjJdfDApKzQwPj4yXXwwKWNvbnRpbnVlO2NbQT4+Ml09MjY3fWlmKChjW0E+PjJdfDApPT0xMDEpY1tBPj4yXT0wO1RiW2NbKGNbdD4+Ml18MCkrMTY+PjJdJjI1NV0oY1tzPj4yXXwwKXwwO2lmKGNbQT4+Ml18MClicmVhayBhfWNbbD4+Ml09KGNbbD4+Ml18MCkrMX1jW0E+PjJdPTd9d2hpbGUoMCk7S2QoY1t4KzI0Pj4yXXwwKTt5bShjW3Y+PjJdfDApO2Q9Y1tlPj4yXXwwO2lmKGNbQT4+Ml18MCl7cWUoZCxjW0E+PjJdfDApO0tkKGNbQj4+Ml18MCk7aT1DO3JldHVybn1lbHNle21lKGQsY1tCPj4yXXwwLChjW0IrND4+Ml18MCktMXwwLDE0OCk7aT1DO3JldHVybn19ZnVuY3Rpb24gVm4oYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTA7bT1pO2k9aSs0OHwwO249bSszNnwwO289bSsyOHwwO2g9bSsyNHwwO2c9bSsyMHwwO2Y9bSsxNnwwO2o9bSsxMnwwO2U9bSs4fDA7bD1tKzR8MDtrPW07Y1tuPj4yXT1hO2NbbSszMj4+Ml09YjtjW28+PjJdPWQ7Y1toPj4yXT1jW28+PjJdO2NbZT4+Ml09MDtjW2w+PjJdPVFtKGNbY1toPj4yXT4+Ml18MCxjW24+PjJdfDAsY1soY1toPj4yXXwwKSs0Pj4yXXwwLGopfDA7Y1tnPj4yXT1jWyhjWyhjW24+PjJdfDApKzIwPj4yXXwwKSs2ND4+Ml07aWYoY1tqPj4yXXwwKVduKGosZSk7Y1tmPj4yXT0wO3doaWxlKDEpe2lmKChjW2Y+PjJdfDApPj0oY1tnPj4yXXwwKSlicmVhaztuPShjW2g+PjJdfDApKzh8MDtvPWNbbj4+Ml18MDtjW24+PjJdPW8rMTtjW2s+PjJdPShjWyhjW2g+PjJdfDApKzI0Pj4yXXwwKSsobyoxMnwwKTtjWyhjW2s+PjJdfDApKzg+PjJdPShjW2c+PjJdfDApLShjW2Y+PjJdfDApLTE7Y1tjW2s+PjJdPj4yXT1jW2o+PjJdO2NbKGNbaz4+Ml18MCkrND4+Ml09Y1tlPj4yXTtjW2Y+PjJdPShjW2Y+PjJdfDApKzF9aT1tO3JldHVybiBjW2w+PjJdfDB9ZnVuY3Rpb24gV24oYSxiKXthPWF8MDtiPWJ8MDt2YXIgZT0wLGY9MCxnPTAsaD0wO2g9aTtpPWkrMTZ8MDtlPWgrOHwwO2Y9aCs0fDA7Zz1oO2NbZT4+Ml09YTtjW2Y+PjJdPWI7Yj1jW2NbZT4+Ml0+PjJdfDA7aWYoKGRbY1tjW2U+PjJdPj4yXT4+MF18MCkmMTI4KWI9JGwoYixnKXwwO2Vsc2V7Y1tnPj4yXT1kW2I+PjBdO2I9MX1lPWNbZT4+Ml18MDtjW2U+PjJdPShjW2U+PjJdfDApK2I7Zj1jW2Y+PjJdfDA7Y1tmPj4yXT0oY1tmPj4yXXwwKSsoKGNbZz4+Ml18MCktMik7aT1oO3JldHVybn1mdW5jdGlvbiBYbihiLGQsZSl7Yj1ifDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MDttPWk7aT1pKzMyfDA7Zj1tKzIwfDA7Zz1tKzE2fDA7aD1tKzEyfDA7aj1tKzh8MDtrPW0rNHwwO2w9bTtjW2c+PjJdPWI7Y1toPj4yXT1kO2Nbaj4+Ml09ZTtpZigoY1tqPj4yXXwwKTwwKWNbaj4+Ml09a1IoY1toPj4yXXwwKXwwO2RvIGlmKCgoY1soY1tnPj4yXXwwKSs0Pj4yXXwwKSsoY1tqPj4yXXwwKSsxfDApPj0oY1soY1tnPj4yXXwwKSs4Pj4yXXwwKSl7Y1trPj4yXT0oY1soY1tnPj4yXXwwKSs4Pj4yXXwwKSsoY1tqPj4yXXwwKSsxMDA7Y1tsPj4yXT1MZChjW2NbZz4+Ml0+PjJdfDAsY1trPj4yXXwwKXwwO2lmKGNbbD4+Ml18MCl7Y1tjW2c+PjJdPj4yXT1jW2w+PjJdO2NbKGNbZz4+Ml18MCkrOD4+Ml09Y1trPj4yXTticmVha31jW2Y+PjJdPTc7bD1jW2Y+PjJdfDA7aT1tO3JldHVybiBsfDB9d2hpbGUoMCk7VFIoKGNbY1tnPj4yXT4+Ml18MCkrKGNbKGNbZz4+Ml18MCkrND4+Ml18MCl8MCxjW2g+PjJdfDAsY1tqPj4yXXwwKXwwO2w9KGNbZz4+Ml18MCkrNHwwO2NbbD4+Ml09KGNbbD4+Ml18MCkrKGNbaj4+Ml18MCk7YVsoY1tjW2c+PjJdPj4yXXwwKSsoY1soY1tnPj4yXXwwKSs0Pj4yXXwwKT4+MF09MDtjW2Y+PjJdPTA7bD1jW2Y+PjJdfDA7aT1tO3JldHVybiBsfDB9ZnVuY3Rpb24gWW4oYSxiLGQsZSxmLGcsaCl7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7dmFyIGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wLEU9MCxGPTAsRz0wO0c9aTtpPWkrMjI0fDA7aj1HKzIxMnwwO2s9RysyMDh8MDtsPUcrMjA0fDA7bT1HKzIwMHwwO249RysxOTZ8MDtvPUcrMTkyfDA7cD1HKzE4OHwwO0I9RysxODR8MDtFPUcrMTgwfDA7cj1HKzE3NnwwO0Y9RysxNjR8MDt6PUcrMTYwfDA7cT1HKzQwfDA7eT1HKzE1NnwwO3Y9RysxNTJ8MDt3PUcrMzJ8MDt4PUcrMjR8MDtzPUcrMTQ4fDA7dD1HKzE0NHwwO0E9RysxNDB8MDtDPUc7dT1HKzEzNnwwO2Nbaj4+Ml09YTtjW2s+PjJdPWI7Y1tsPj4yXT1kO2NbbT4+Ml09ZTtjW24+PjJdPWY7Y1tvPj4yXT1nO2NbcD4+Ml09aDtjW0I+PjJdPWNbY1trPj4yXT4+Ml07Y1tFPj4yXT0wO2NbRj4+Ml09MDtjW0YrND4+Ml09MDtjW0YrOD4+Ml09MDtjW3o+PjJdPTA7Y1t5Pj4yXT0tMTtpZighKGNbKGNbaz4+Ml18MCkrMTI+PjJdfDApKXttZShjW2o+PjJdfDAsMTg0MDIsMCwwKTtpPUc7cmV0dXJufWNbej4+Ml09MTthOndoaWxlKDEpe2c9dztjW2c+PjJdPTA7Y1tnKzQ+PjJdPTA7Zz14O2NbZz4+Ml09MDtjW2crND4+Ml09MDtnPWNbcD4+Ml18MDtpZigoY1twPj4yXXwwKT49MCljW3k+PjJdPShnKyhjW3o+PjJdfDApLTF8MCkvKGNbej4+Ml18MCl8MDtlbHNlIGNbeT4+Ml09XygtMSxnKXwwO2Nbdj4+Ml09MDt3aGlsZSgxKXtpZigoY1t2Pj4yXXwwKT49KGNbej4+Ml18MCkpYnJlYWs7Y1tzPj4yXT0tMTtjW0E+PjJdPXErKChjW3Y+PjJdfDApKjI0fDApO2Q9Y1tBPj4yXXwwO2NbZD4+Ml09MDtjW2QrND4+Ml09MDtjW2QrOD4+Ml09MDtjW2QrMTI+PjJdPTA7Y1tkKzE2Pj4yXT0wO2NbZCsyMD4+Ml09MDtjW3Q+PjJdPTA7d2hpbGUoMSl7aWYoKGNbdD4+Ml18MCk+PShjWyhjW0I+PjJdfDApKzI0Pj4yXXwwKSlicmVhaztjW0M+PjJdPTA7Y1tDKzQ+PjJdPTA7Y1tDKzg+PjJdPTA7Y1tDKzEyPj4yXT0wO2NbQysxNj4+Ml09MDtjW0MrMjA+PjJdPTA7Y1t1Pj4yXT0wO2lmKCEoKGNbbz4+Ml18MCk+PTA/KGNbdD4+Ml18MCkhPShjW28+PjJdfDApOjApKXtkPXc7Y1tFPj4yXT1abihjW3k+PjJdfDAsY1trPj4yXXwwLGNbdD4+Ml18MCxjW2Q+PjJdfDAsY1tkKzQ+PjJdfDAseCxDLHUpfDA7aWYoY1tFPj4yXXwwKWJyZWFrIGE7aWYoKGNbdT4+Ml18MCk+KGNbcz4+Ml18MCkpe2Q9Y1tBPj4yXXwwO2NbZD4+Ml09Y1tDPj4yXTtjW2QrND4+Ml09Y1tDKzQ+PjJdO2NbZCs4Pj4yXT1jW0MrOD4+Ml07Y1tkKzEyPj4yXT1jW0MrMTI+PjJdO2NbZCsxNj4+Ml09Y1tDKzE2Pj4yXTtjW2QrMjA+PjJdPWNbQysyMD4+Ml07Y1tzPj4yXT1jW3U+PjJdfX1jW3Q+PjJdPShjW3Q+PjJdfDApKzF9Zj0oY1tBPj4yXXwwKSs4fDA7YT13O2U9Y1thKzQ+PjJdfGNbZis0Pj4yXTtkPXc7Y1tkPj4yXT1jW2E+PjJdfGNbZj4+Ml07Y1tkKzQ+PjJdPWU7Y1t2Pj4yXT0oY1t2Pj4yXXwwKSsxfWU9eDtkPXc7aWYoKChjW2U+PjJdfDApPT0oY1tkPj4yXXwwKT8oY1tlKzQ+PjJdfDApPT0oY1tkKzQ+PjJdfDApOjApfChjW3o+PjJdfDApPT00KXtEPTIwO2JyZWFrfWNbej4+Ml09KGNbej4+Ml18MCkrMX1iOmRvIGlmKChEfDApPT0yMCl7Y1tyPj4yXT0wO3doaWxlKDEpe2lmKCEoKGNbcj4+Ml18MCk8KGNbej4+Ml18MCk/KGNbRT4+Ml18MCk9PTA6MCkpYnJlYWsgYjtjW0U+PjJdPV9uKGNbaz4+Ml18MCxxKygoY1tyPj4yXXwwKSoyNHwwKXwwLGNbcj4+Ml18MCwoY1tyPj4yXXwwKT09KChjW3o+PjJdfDApLTF8MCkmMSxjW3k+PjJdfDAsY1tsPj4yXXwwLGNbbT4+Ml18MCxjW24+PjJdfDAsRil8MDtjW3I+PjJdPShjW3I+PjJdfDApKzF9fXdoaWxlKDApO3ltKGNbQj4+Ml18MCk7Zz1jW2o+PjJdfDA7aWYoY1tFPj4yXXwwKXtxZShnLGNbRT4+Ml18MCk7S2QoY1tGPj4yXXwwKTtpPUc7cmV0dXJufWVsc2V7bWUoZyxjW0Y+PjJdfDAsLTEsMTQ4KTtpPUc7cmV0dXJufX1mdW5jdGlvbiBabihhLGIsZCxlLGYsZyxoLGope2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO3ZhciBrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxEPTA7RD1pO2k9aSsxMTJ8MDtrPUQrMTA0fDA7bD1EKzEwMHwwO209RCs5NnwwO249RCs5MnwwO289RCsxNnwwO3A9RCs4OHwwO3E9RCs4NHwwO3I9RCs4MHwwO0E9RCs3NnwwO3o9RCs3MnwwO0I9RCs0OHwwO3k9RCs0MHwwO3Q9RCszNnwwO3M9RCszMnwwO3U9RCsyOHwwO3Y9RCsyNHwwO3c9RCs4fDA7eD1EO2NbbD4+Ml09YTtjW20+PjJdPWI7Y1tuPj4yXT1kO2I9bztjW2I+PjJdPWU7Y1tiKzQ+PjJdPWY7Y1twPj4yXT1nO2NbcT4+Ml09aDtjW3I+PjJdPWo7Y1t0Pj4yXT0tMTtjW0I+PjJdPTA7Y1tCKzQ+PjJdPTA7Y1tCKzg+PjJdPTA7Y1tCKzEyPj4yXT0wO2NbQisxNj4+Ml09MDtjW0IrMjA+PjJdPTA7Y1tBPj4yXT1KbShjW20+PjJdfDAseiwwKXwwO2lmKGNbQT4+Ml18MCl7Y1trPj4yXT1jW0E+PjJdO0I9Y1trPj4yXXwwO2k9RDtyZXR1cm4gQnwwfWNbeT4+Ml09KGNbej4+Ml18MCkqMjQ7Y1tCKzE2Pj4yXT1JZChjW3k+PjJdfDApfDA7aWYoIShjW0IrMTY+PjJdfDApKXtjW2s+PjJdPTc7Qj1jW2s+PjJdfDA7aT1EO3JldHVybiBCfDB9VlIoY1tCKzE2Pj4yXXwwLDAsY1t5Pj4yXXwwKXwwO2NbQj4+Ml09Y1ttPj4yXTtjW0IrND4+Ml09Y1tuPj4yXTtjW0IrOD4+Ml09Y1tsPj4yXTtjW0IrMTI+PjJdPWNbej4+Ml07Y1tCKzIwPj4yXT0tMTtjW0E+PjJdPU5tKGNbKGNbbT4+Ml18MCkrMTI+PjJdfDAsMTU5LEIpfDA7aWYoIShjW0E+PjJdfDApKXtjW3M+PjJdPTA7d2hpbGUoMSl7aWYoKGNbcz4+Ml18MCk+PShjW3o+PjJdfDApKWJyZWFrO2lmKGNbKGNbQisxNj4+Ml18MCkrKChjW3M+PjJdfDApKjI0fDApKzEyPj4yXXwwKXtoPVdSKDEsMCxjW3M+PjJdfDApfDA7Zz1jW3A+PjJdfDA7Yj1nO2o9Y1tiKzQ+PjJdfEM7Y1tnPj4yXT1jW2I+PjJdfGg7Y1tnKzQ+PjJdPWp9Y1tzPj4yXT0oY1tzPj4yXXwwKSsxfWNbY1txPj4yXT4+Ml09Y1tuPj4yXTt3aGlsZSgxKXtpZighKChibyhCKXwwKSE9MF4xKSlicmVhaztnPW87Y28oQixjW2c+PjJdfDAsY1tnKzQ+PjJdfDAsdSx2LHcseCk7aWYoKGNbdj4+Ml18MCk8PShjW3Q+PjJdfDApKWNvbnRpbnVlO2NbKGNbcT4+Ml18MCkrND4+Ml09Y1t1Pj4yXTtnPXg7aj1jW2crND4+Ml18MDtoPShjW3E+PjJdfDApKzE2fDA7Y1toPj4yXT1jW2c+PjJdO2NbaCs0Pj4yXT1qO2g9dztqPWNbaCs0Pj4yXXwwO2c9KGNbcT4+Ml18MCkrOHwwO2NbZz4+Ml09Y1toPj4yXTtjW2crND4+Ml09ajtjW3Q+PjJdPWNbdj4+Ml19Y1tjW3I+PjJdPj4yXT1jW3Q+PjJdfUtkKGNbQisxNj4+Ml18MCk7Y1trPj4yXT1jW0E+PjJdO0I9Y1trPj4yXXwwO2k9RDtyZXR1cm4gQnwwfWZ1bmN0aW9uIF9uKGEsYixkLGUsZixnLGgsaixrKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDtrPWt8MDt2YXIgbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxEPTAsRT0wLEY9MCxHPTAsSD0wLEk9MCxKPTAsSz0wLEw9MCxNPTAsTj0wLE89MCxQPTA7Tj1pO2k9aSsxMjh8MDtsPU4rMTEyfDA7bT1OKzEwOHwwO1A9TisxMDR8MDtuPU4rMTAwfDA7bz1OKzk2fDA7cD1OKzkyfDA7cT1OKzg4fDA7cj1OKzg0fDA7cz1OKzgwfDA7dD1OKzc2fDA7Sj1OKzcyfDA7Sz1OKzY4fDA7TD1OKzY0fDA7Rz1OKzYwfDA7eT1OKzU2fDA7ej1OKzUyfDA7RT1OKzQ4fDA7Qj1OKzQ0fDA7dz1OO089Tis0MHwwO0k9TiszNnwwO0g9TiszMnwwO3Y9TisyOHwwO3U9TisyNHwwO3g9TisyMHwwO0E9TisxNnwwO0Q9TisxMnwwO0Y9Tis4fDA7Y1ttPj4yXT1hO2NbUD4+Ml09YjtjW24+PjJdPWQ7Y1tvPj4yXT1lO2NbcD4+Ml09ZjtjW3E+PjJdPWc7Y1tyPj4yXT1oO2Nbcz4+Ml09ajtjW3Q+PjJdPWs7Y1tKPj4yXT1jW2NbbT4+Ml0+PjJdO2NbeT4+Ml09MDtjW3o+PjJdPTA7Y1tFPj4yXT0wO2NbQj4+Ml09Y1soY1tQPj4yXXwwKSs0Pj4yXTtnPShjW1A+PjJdfDApKzE2fDA7ZT1jW2crND4+Ml18MDtkPXc7Y1tkPj4yXT1jW2c+PjJdO2NbZCs0Pj4yXT1lO2NbTz4+Ml09KGNbY1tQPj4yXT4+Ml18MCkrMTtjW0w+PjJdPUVlKGNbKGNbbT4+Ml18MCkrOD4+Ml18MCxjW08+PjJdfDApfDA7ZD1jWyhjW20+PjJdfDApKzg+PjJdfDA7ZT1jW08+PjJdfDA7aWYoIShjW0w+PjJdfDApKWlmKChHZShkLGUpfDApIT01KXtjW2w+PjJdPTc7UD1jW2w+PjJdfDA7aT1OO3JldHVybiBQfDB9ZWxzZXtjW2w+PjJdPTA7UD1jW2w+PjJdfDA7aT1OO3JldHVybiBQfDB9Y1tHPj4yXT1BZShkLGUpfDA7Y1tJPj4yXT1jW2NbKGNbSj4+Ml18MCkrMzY+PjJdPj4yXTtjW0s+PjJdPUNuKGNbKGNbSj4+Ml18MCkrMzY+PjJdfDAsY1soY1ttPj4yXXwwKSsxNj4+Ml18MCxjW0w+PjJdfDAsY1tHPj4yXXwwLEgpfDA7aWYoY1tLPj4yXXwwKXtjW2w+PjJdPWNbSz4+Ml07UD1jW2w+PjJdfDA7aT1OO3JldHVybiBQfDB9d2hpbGUoMSl7aWYoY1tLPj4yXXwwKWJyZWFrO2NbdT4+Ml09LTE7Y1t4Pj4yXT0wO2NbQT4+Ml09MDtjW0Q+PjJdPTA7Y1tLPj4yXT1TYltjWyhjW0k+PjJdfDApKzIwPj4yXSYyNTVdKGNbSD4+Ml18MCx2LHUseCxBLHkpfDA7aWYoY1tLPj4yXXwwKXtNPTk7YnJlYWt9aWYoKGNbeT4+Ml18MCk8KGNbQj4+Ml18MCkpY29udGludWU7aWYoIShjW0U+PjJdfDApKXtjW0Y+PjJdPShjW0c+PjJdfDApLShjW3g+PjJdfDApO2NbSz4+Ml09JG4oY1tKPj4yXXwwLGNbKGNbbT4+Ml18MCkrMTY+PjJdfDAsY1twPj4yXXwwLChjW0w+PjJdfDApKyhjW3g+PjJdfDApfDAsY1tGPj4yXXwwLEIsdyl8MDtjW0U+PjJdPTE7ZG8gaWYoIShjW0s+PjJdfDApKXtpZigoY1tCPj4yXXwwKT4wfChjW24+PjJdfDApPjApe2NbSz4+Ml09WG4oY1t0Pj4yXXwwLGNbcz4+Ml18MCwtMSl8MDticmVha31pZihjW3g+PjJdfDApY1tLPj4yXT1YbihjW3Q+PjJdfDAsY1tMPj4yXXwwLGNbeD4+Ml18MCl8MH13aGlsZSgwKTtpZihjW0s+PjJdfDApY29udGludWU7aWYoKGNbeT4+Ml18MCk8KGNbQj4+Ml18MCkpY29udGludWV9aWYoKGNbeT4+Ml18MCk+PSgoY1tCPj4yXXwwKSsoY1twPj4yXXwwKXwwKSl7TT0yMTticmVha31QPXc7Zz1jW1A+PjJdfDA7UD1jW1ArND4+Ml18MDtPPVdSKDEsMCwoY1t5Pj4yXXwwKS0oY1tCPj4yXXwwKXwwKXwwO2NbRD4+Ml09KChnJk98MCkhPTB8KFAmQ3wwKSE9MCkmMTtpZigoY1t5Pj4yXXwwKT4oY1tCPj4yXXwwKSljW0s+PjJdPVhuKGNbdD4+Ml18MCwoY1tMPj4yXXwwKSsoY1t6Pj4yXXwwKXwwLChjW3g+PjJdfDApLShjW3o+PjJdfDApfDApfDA7aWYoKGNbSz4+Ml18MCk9PTAmKGNbRD4+Ml18MCkhPTApY1tLPj4yXT1YbihjW3Q+PjJdfDAsY1txPj4yXXwwLC0xKXwwO2lmKCEoY1tLPj4yXXwwKSljW0s+PjJdPVhuKGNbdD4+Ml18MCwoY1tMPj4yXXwwKSsoY1t4Pj4yXXwwKXwwLChjW0E+PjJdfDApLShjW3g+PjJdfDApfDApfDA7aWYoKGNbSz4+Ml18MCk9PTAmKGNbRD4+Ml18MCkhPTApY1tLPj4yXT1YbihjW3Q+PjJdfDAsY1tyPj4yXXwwLC0xKXwwO2Nbej4+Ml09Y1tBPj4yXX1pZigoTXwwKT09OSl7aWYoKGNbSz4+Ml18MCk9PTEwMSljW0s+PjJdPVhuKGNbdD4+Ml18MCwoY1tMPj4yXXwwKSsoY1t6Pj4yXXwwKXwwLC0xKXwwfWVsc2UgaWYoKE18MCk9PTIxPyhjW28+PjJdfDApIT0wOjApY1tLPj4yXT1YbihjW3Q+PjJdfDAsY1tzPj4yXXwwLC0xKXwwO1RiW2NbKGNbST4+Ml18MCkrMTY+PjJdJjI1NV0oY1tIPj4yXXwwKXwwO2NbbD4+Ml09Y1tLPj4yXTtQPWNbbD4+Ml18MDtpPU47cmV0dXJuIFB8MH1mdW5jdGlvbiAkbihhLGIsZCxlLGYsZyxoKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDt2YXIgaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEQ9MCxFPTAsRj0wO0Y9aTtpPWkrOTZ8MDt3PUYrODR8MDtqPUYrODB8MDtrPUYrNzZ8MDt4PUYrNzJ8MDtsPUYrNjh8MDttPUYrNjR8MDt5PUYrNjB8MDt6PUYrNTZ8MDtBPUY7cz1GKzUyfDA7dD1GKzQ4fDA7cj1GKzQ0fDA7RD1GKzQwfDA7Qj1GKzM2fDA7RT1GKzMyfDA7dj1GKzI4fDA7dT1GKzI0fDA7cT1GKzIwfDA7bj1GKzE2fDA7bz1GKzEyfDA7cD1GKzh8MDtjW2o+PjJdPWE7Y1trPj4yXT1iO2NbeD4+Ml09ZDtjW2w+PjJdPWU7Y1ttPj4yXT1mO2NbeT4+Ml09ZztjW3o+PjJdPWg7YT1jW3o+PjJdfDA7Zz1jW2ErND4+Ml18MDtlPUE7Y1tlPj4yXT1jW2E+PjJdO2NbZSs0Pj4yXT1nO2U9QTtkbyBpZigoY1tlPj4yXXwwKSE9MHwoY1tlKzQ+PjJdfDApIT0wKXtjW3M+PjJdPTA7d2hpbGUoMSl7ZT1BO2E9Y1tlPj4yXXwwO2U9Y1tlKzQ+PjJdfDA7Zz1XUigxLDAsY1tzPj4yXXwwKXwwO2lmKCEoKChhJmd8MCkhPTB8KGUmQ3wwKSE9MCleMSkpYnJlYWs7Y1tzPj4yXT0oY1tzPj4yXXwwKSsxfWNbdD4+Ml09MDt3aGlsZSgxKXtlPUE7YT1jW2U+PjJdfDA7ZT1jW2UrND4+Ml18MDtnPVdSKDEsMCwoY1t4Pj4yXXwwKS0xLShjW3Q+PjJdfDApfDApfDA7aWYoISgoKGEmZ3wwKSE9MHwoZSZDfDApIT0wKV4xKSlicmVhaztjW3Q+PjJdPShjW3Q+PjJdfDApKzF9Y1tyPj4yXT0oKGNbcz4+Ml18MCktKGNbdD4+Ml18MCl8MCkvMnwwO2lmKChjW3I+PjJdfDApPjApe2NbQj4+Ml09MDtjW3Y+PjJdPWNbY1soY1tqPj4yXXwwKSszNj4+Ml0+PjJdO2NbRT4+Ml09Q24oY1soY1tqPj4yXXwwKSszNj4+Ml18MCxjW2s+PjJdfDAsY1tsPj4yXXwwLGNbbT4+Ml18MCx1KXwwO2lmKGNbRT4+Ml18MCl7Y1t3Pj4yXT1jW0U+PjJdO0U9Y1t3Pj4yXXwwO2k9RjtyZXR1cm4gRXwwfXdoaWxlKDEpe2lmKGNbRT4+Ml18MClicmVhaztpZigoY1tCPj4yXXwwKT49KChjW3g+PjJdfDApKyhjW3I+PjJdfDApfDApKWJyZWFrO2Nbbj4+Ml09MDtjW28+PjJdPTA7Y1twPj4yXT0wO2NbRT4+Ml09U2JbY1soY1t2Pj4yXXwwKSsyMD4+Ml0mMjU1XShjW3U+PjJdfDAscSxuLG8scCxCKXwwfVRiW2NbKGNbdj4+Ml18MCkrMTY+PjJdJjI1NV0oY1t1Pj4yXXwwKXwwO2o9Y1tFPj4yXXwwO2lmKChjW0U+PjJdfDApIT0wJihjW0U+PjJdfDApIT0xMDEpe2Nbdz4+Ml09ajtFPWNbdz4+Ml18MDtpPUY7cmV0dXJuIEV8MH1lbHNle2NbRD4+Ml09KChqfDApPT0xMDEmMSkrKGNbQj4+Ml18MCktKGNbeD4+Ml18MCk7aWYoKGNbRD4+Ml18MCk8PTApYnJlYWs7RT1jW3k+PjJdfDA7Y1tFPj4yXT0oY1tFPj4yXXwwKSsoY1tEPj4yXXwwKTtFPUE7RD1TUihjW0U+PjJdfDAsY1tFKzQ+PjJdfDAsY1tEPj4yXXwwKXwwO0U9Y1t6Pj4yXXwwO2NbRT4+Ml09RDtjW0UrND4+Ml09QzticmVha319fXdoaWxlKDApO2Nbdz4+Ml09MDtFPWNbdz4+Ml18MDtpPUY7cmV0dXJuIEV8MH1mdW5jdGlvbiBhbyhhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wO2o9aTtpPWkrMzJ8MDtsPWorMjh8MDttPWorMjR8MDtuPWorMjB8MDtrPWorMTZ8MDtnPWorMTJ8MDtmPWorOHwwO2g9ais0fDA7ZT1qO2NbbD4+Ml09YTtjW20+PjJdPWI7Y1tuPj4yXT1kO2Nbaz4+Ml09Y1tuPj4yXTtjW2c+PjJdPShjWyhjW2s+PjJdfDApKzE2Pj4yXXwwKSsoKGNbbT4+Ml18MCkqMjR8MCk7Y1tjW2c+PjJdPj4yXT1jWyhjWyhjW2w+PjJdfDApKzIwPj4yXXwwKSs2ND4+Ml07Y1toPj4yXT1RbShjW2Nbaz4+Ml0+PjJdfDAsY1tsPj4yXXwwLGNbKGNbaz4+Ml18MCkrND4+Ml18MCxmKXwwO2lmKCEoY1tmPj4yXXwwKSl7bj1jW2g+PjJdfDA7aT1qO3JldHVybiBufDB9Y1tlPj4yXT0wO2NbKGNbZz4+Ml18MCkrND4+Ml09Y1tmPj4yXTtXbihmLGUpO2NbKGNbZz4+Ml18MCkrMTI+PjJdPWNbZj4+Ml07Y1soY1tnPj4yXXwwKSsyMD4+Ml09Y1tmPj4yXTtjWyhjW2c+PjJdfDApKzg+PjJdPWNbZT4+Ml07Y1soY1tnPj4yXXwwKSsxNj4+Ml09Y1tlPj4yXTtuPWNbaD4+Ml18MDtpPWo7cmV0dXJuIG58MH1mdW5jdGlvbiBibyhhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTA7bD1pO2k9aSszMnwwO2I9bCsyOHwwO2Q9bCsyNHwwO2U9bCsyMHwwO2g9bCsxNnwwO2c9bCsxMnwwO2Y9bCs4fDA7aj1sKzR8MDtrPWw7Y1tkPj4yXT1hO2E6ZG8gaWYoKGNbKGNbZD4+Ml18MCkrMjA+PjJdfDApPDApe2NbKGNbZD4+Ml18MCkrMjA+PjJdPTA7Y1tlPj4yXT0wO3doaWxlKDEpe2lmKChjW2U+PjJdfDApPj0oY1soY1tkPj4yXXwwKSsxMj4+Ml18MCkpYnJlYWsgYTtjW2g+PjJdPShjWyhjW2Q+PjJdfDApKzE2Pj4yXXwwKSsoKGNbZT4+Ml18MCkqMjR8MCk7ZW8oKGNbaD4+Ml18MCkrMTJ8MCwoY1toPj4yXXwwKSs4fDAsY1soY1tkPj4yXXwwKSs4Pj4yXXwwKTtjW2U+PjJdPShjW2U+PjJdfDApKzF9fWVsc2V7Y1tmPj4yXT0yMTQ3NDgzNjQ3O2NbZT4+Ml09MDt3aGlsZSgxKXtpZigoY1tlPj4yXXwwKT49KGNbKGNbZD4+Ml18MCkrMTI+PjJdfDApKWJyZWFrO2Nbaj4+Ml09KGNbKGNbZD4+Ml18MCkrMTY+PjJdfDApKygoY1tlPj4yXXwwKSoyNHwwKTtpZigoY1soY1tqPj4yXXwwKSsxMj4+Ml18MCkhPTA/KGNbKGNbaj4+Ml18MCkrOD4+Ml18MCk8KGNbZj4+Ml18MCk6MCljW2Y+PjJdPWNbKGNbaj4+Ml18MCkrOD4+Ml07Y1tlPj4yXT0oY1tlPj4yXXwwKSsxfWlmKChjW2Y+PjJdfDApPT0yMTQ3NDgzNjQ3KXtjW2I+PjJdPTE7az1jW2I+PjJdfDA7aT1sO3JldHVybiBrfDB9aj0oY1tmPj4yXXwwKS0oY1soY1tkPj4yXXwwKSs4Pj4yXXwwKSsxfDA7Y1tnPj4yXT1qO2NbKGNbZD4+Ml18MCkrMjA+PjJdPWo7Y1tlPj4yXT0wO3doaWxlKDEpe2lmKChjW2U+PjJdfDApPj0oY1soY1tkPj4yXXwwKSsxMj4+Ml18MCkpYnJlYWsgYTtjW2s+PjJdPShjWyhjW2Q+PjJdfDApKzE2Pj4yXXwwKSsoKGNbZT4+Ml18MCkqMjR8MCk7ZW8oKGNbaz4+Ml18MCkrMTJ8MCwoY1trPj4yXXwwKSs4fDAsKGNbZj4+Ml18MCkrMXwwKTtlbygoY1trPj4yXXwwKSsyMHwwLChjW2s+PjJdfDApKzE2fDAsY1tnPj4yXXwwKTtjW2U+PjJdPShjW2U+PjJdfDApKzF9fXdoaWxlKDApO2NbYj4+Ml09MDtrPWNbYj4+Ml18MDtpPWw7cmV0dXJuIGt8MH1mdW5jdGlvbiBjbyhiLGQsZSxmLGcsaCxqKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDt2YXIgaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTA7Qj1pO2k9aSs5NnwwO2s9Qis4NHwwO2w9QiszMnwwO209Qis4MHwwO249Qis3NnwwO289Qis3MnwwO3A9Qis2OHwwO3Q9Qis2NHwwO3M9Qis2MHwwO3E9Qis1NnwwO3Y9QisyNHwwO3c9QisxNnwwO0E9Qis1MnwwO3o9Qis0OHwwO3I9Qis0NHwwO3U9Qis0MHwwO3g9Qis4fDA7eT1CO2Nbaz4+Ml09YjtiPWw7Y1tiPj4yXT1kO2NbYis0Pj4yXT1lO2NbbT4+Ml09ZjtjW24+PjJdPWc7Y1tvPj4yXT1oO2NbcD4+Ml09ajtjW3Q+PjJdPWNbKGNbaz4+Ml18MCkrMjA+PjJdO2Nbcz4+Ml09MDtqPXY7Y1tqPj4yXT0wO2Nbais0Pj4yXT0wO2o9dztjW2o+PjJdPTA7Y1tqKzQ+PjJdPTA7Y1txPj4yXT0wO3doaWxlKDEpe2lmKChjW3E+PjJdfDApPj0oY1soY1trPj4yXXwwKSsxMj4+Ml18MCkpYnJlYWs7Y1tBPj4yXT0oY1soY1trPj4yXXwwKSsxNj4+Ml18MCkrKChjW3E+PjJdfDApKjI0fDApO2E6ZG8gaWYoY1soY1tBPj4yXXwwKSsyMD4+Ml18MCl7Y1t6Pj4yXT1jWyhjW0E+PjJdfDApKzIwPj4yXTtjW3I+PjJdPWNbKGNbQT4+Ml18MCkrMTY+PjJdO3doaWxlKDEpe2lmKChjW3I+PjJdfDApPj0oKGNbdD4+Ml18MCkrKGNbKGNbaz4+Ml18MCkrOD4+Ml18MCl8MCkpYnJlYWsgYTtmPVdSKDEsMCxjW3E+PjJdfDApfDA7aD14O2NbaD4+Ml09ZjtjW2grND4+Ml09QztoPVdSKDEsMCwoY1tyPj4yXXwwKS0oY1t0Pj4yXXwwKXwwKXwwO2Y9eTtjW2Y+PjJdPWg7Y1tmKzQ+PjJdPUM7Zj12O2g9bDtqPXg7ZD1jW3M+PjJdfDA7aWYoKChjW2Y+PjJdfGNbaD4+Ml0pJmNbaj4+Ml18MCkhPTA/MTooKGNbZis0Pj4yXXxjW2grND4+Ml0pJmNbais0Pj4yXXwwKSE9MCljW3M+PjJdPWQrMTtlbHNlIGNbcz4+Ml09ZCsxZTM7Zj14O2c9djtoPWNbZys0Pj4yXXxjW2YrND4+Ml07aj12O2Nbaj4+Ml09Y1tnPj4yXXxjW2Y+PjJdO2Nbais0Pj4yXT1oO2NbdT4+Ml09MDt3aGlsZSgxKXtpZigoY1t1Pj4yXXwwKT49KGNbY1tBPj4yXT4+Ml18MCkpYnJlYWs7Zj15O2Y9U1IoY1tmPj4yXXwwLGNbZis0Pj4yXXwwLGNbdT4+Ml18MCl8MDtnPXc7aD1jW2crND4+Ml18QztqPXc7Y1tqPj4yXT1jW2c+PjJdfGY7Y1tqKzQ+PjJdPWg7Y1t1Pj4yXT0oY1t1Pj4yXXwwKSsxfWlmKCEoYVtjW3o+PjJdPj4wXSYyNTQpKWJyZWFrIGE7V24oeixyKX19d2hpbGUoMCk7Y1txPj4yXT0oY1txPj4yXXwwKSsxfWNbY1ttPj4yXT4+Ml09Y1t0Pj4yXTtjW2Nbbj4+Ml0+PjJdPWNbcz4+Ml07QT12O3o9Y1tBKzQ+PjJdfDA7eT1jW28+PjJdfDA7Y1t5Pj4yXT1jW0E+PjJdO2NbeSs0Pj4yXT16O3k9dzt6PWNbeSs0Pj4yXXwwO0E9Y1twPj4yXXwwO2NbQT4+Ml09Y1t5Pj4yXTtjW0ErND4+Ml09ejtpPUI7cmV0dXJufWZ1bmN0aW9uIGVvKGIsZCxlKXtiPWJ8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wO209aTtpPWkrMzJ8MDtmPW0rMTZ8MDtnPW0rMTJ8MDtoPW0rOHwwO2s9bSs0fDA7aj1tO2NbZj4+Ml09YjtjW2c+PjJdPWQ7Y1toPj4yXT1lO2Nbaz4+Ml09Y1tjW2Y+PjJdPj4yXTtpZighKGNbaz4+Ml18MCkpe2k9bTtyZXR1cm59Y1tqPj4yXT1jW2NbZz4+Ml0+PjJdO3doaWxlKDEpe2lmKChjW2o+PjJdfDApPj0oY1toPj4yXXwwKSlicmVhaztpZighKGFbY1trPj4yXT4+MF0mMjU0KSl7bD01O2JyZWFrfVduKGssail9aWYoKGx8MCk9PTUpe2Nbaj4+Ml09LTE7Y1trPj4yXT0wfWNbY1tnPj4yXT4+Ml09Y1tqPj4yXTtjW2NbZj4+Ml0+PjJdPWNbaz4+Ml07aT1tO3JldHVybn1mdW5jdGlvbiBmbyhhLGIpe2E9YXwwO2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MDtoPWk7aT1pKzMyfDA7aj1oKzE2fDA7ZD1oKzEyfDA7Zz1oKzh8MDtlPWgrNHwwO2Y9aDtjW2o+PjJdPWE7Y1tkPj4yXT1iO2NbZT4+Ml09MDtjW2Y+PjJdPTA7Y1tnPj4yXT1wbChjW2o+PjJdfDAsMzYsZiwwKXwwO2lmKGNbZz4+Ml18MCl7Yj1jW2U+PjJdfDA7aj1jW2Q+PjJdfDA7Y1tqPj4yXT1iO2o9Y1tnPj4yXXwwO2k9aDtyZXR1cm4ganwwfWlmKDEwMD09KHRlKGNbZj4+Ml18MCl8MCkpY1tlPj4yXT1DZShjW2Y+PjJdfDAsMCl8MDtjW2c+PjJdPVlkKGNbZj4+Ml18MCl8MDtiPWNbZT4+Ml18MDtqPWNbZD4+Ml18MDtjW2o+PjJdPWI7aj1jW2c+PjJdfDA7aT1oO3JldHVybiBqfDB9ZnVuY3Rpb24gZ28oYSxiLGUpe2E9YXwwO2I9YnwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsRD0wLEU9MDtEPWk7aT1pKzEyOHwwO2Y9RCsxMTJ8MDtnPUQrMTA4fDA7RT1EKzEwNHwwO2g9RCsxMDB8MDtBPUQrOTZ8MDt1PUQrOTJ8MDt3PUQrODh8MDt4PUQrODR8MDt6PUQrODB8MDt2PUQrNzZ8MDtuPUQrMTZ8MDttPUQrNjR8MDtqPUQrNjB8MDt0PUQrOHwwO3k9RCs1MnwwO2w9RCs0OHwwO3A9RCs0NHwwO3E9RCs0MHwwO289RDtyPUQrMzZ8MDtrPUQrMzJ8MDtCPUQrMjh8MDtzPUQrMjR8MDtjW2c+PjJdPWE7Y1tFPj4yXT1iO2NbaD4+Ml09ZTtjW3U+PjJdPWNbRT4+Ml07Y1t2Pj4yXT0wO2E9bjtjW2E+PjJdPTA7Y1thKzQ+PjJdPTA7Y1ttPj4yXT0wO2NbbSs0Pj4yXT0wO2NbbSs4Pj4yXT0wO2Nbaj4+Ml09MDtjW0QrNTY+PjJdPTY0MDtjW3o+PjJdPUlkKDY0MCl8MDtpZighKGNbej4+Ml18MCkpe2NbZj4+Ml09NztFPWNbZj4+Ml18MDtpPUQ7cmV0dXJuIEV8MH1jW3g+PjJdPShjW3o+PjJdfDApKzU2ODtjW3c+PjJdPShjW3g+PjJdfDApKzE2O2NbQT4+Ml09aG8oY1tnPj4yXXwwLG0pfDA7d2hpbGUoMSl7aWYoISgoY1tBPj4yXXwwKT09MD8oY1t1Pj4yXXwwKT4wOjApKWJyZWFrO2E9Y1soY1tnPj4yXXwwKSsyNDg+PjJdPDwxMDtFPXQ7Y1tFPj4yXT1hO2NbRSs0Pj4yXT0oKGF8MCk8MCk8PDMxPj4zMTtjW3k+PjJdPTA7Y1tsPj4yXT0wO2NbcD4+Ml09MDtjW0E+PjJdPXBsKGNbZz4+Ml18MCwyOCx5LDApfDA7S2UoY1t5Pj4yXXwwLDEsMj4oY1toPj4yXXwwKT8yOmNbaD4+Ml18MCl8MDtpZigodGUoY1t5Pj4yXXwwKXwwKT09MTAwKXthPURlKGNbeT4+Ml18MCwwKXwwO0U9bjtjW0U+PjJdPWE7Y1tFKzQ+PjJdPUM7Y1t2Pj4yXT1DZShjW3k+PjJdfDAsMSl8MH1lbHNlIGNbdj4+Ml09LTE7Y1tBPj4yXT1ZZChjW3k+PjJdfDApfDA7ZG8gaWYoKGNbQT4+Ml18MCk9PTA/KGNbbSs0Pj4yXXwwKSE9MDowKXtjW3E+PjJdPWNbbSs0Pj4yXTtFPW87Y1tFPj4yXT0wO2NbRSs0Pj4yXT0wO2Nbcj4+Ml09MDtjW0E+PjJdPWlvKG0sbyxyKXwwO2lmKChjW3Y+PjJdfDApPj0wPyhiPW4sYT10LGE9JFIoY1tiPj4yXXwwLGNbYis0Pj4yXXwwLGNbYT4+Ml18MCxjW2ErND4+Ml18MCl8MCxiPUMsZT1vLEU9dCxFPSRSKGNbZT4+Ml18MCxjW2UrND4+Ml18MCxjW0U+PjJdfDAsY1tFKzQ+PjJdfDApfDAsZT1DLCEoKGJ8MCk+KGV8MCl8KGJ8MCk9PShlfDApJmE+Pj4wPj1FPj4+MCkpOjApe2NbbSs0Pj4yXT1jW3E+PjJdO2JyZWFrfWU9bzthPWNbZSs0Pj4yXXwwO0U9bjtjW0U+PjJdPWNbZT4+Ml07Y1tFKzQ+PjJdPWE7Y1t2Pj4yXT1jW3I+PjJdO2NbbD4+Ml09MTtjW2o+PjJdPTF9d2hpbGUoMCk7aWYoKGNbdj4+Ml18MCk8MClicmVhaztWUihjW3o+PjJdfDAsMCw2NDApfDA7Y1soY1t4Pj4yXXwwKSsxMj4+Ml09MTtkbyBpZighKGNbQT4+Ml18MCkpe0U9bjtjW0E+PjJdPWpvKGNbZz4+Ml18MCxjW0U+PjJdfDAsY1tFKzQ+PjJdfDAscCl8MDtpZigoY1twPj4yXXwwKSE9MD8hKChjW2w+PjJdfDApIT0wJihjW3A+PjJdfDApPT0xKTowKWJyZWFrO2Nbaz4+Ml09MDthPWNbZz4+Ml18MDtFPW47RT1SUihjW0U+PjJdfDAsY1tFKzQ+PjJdfDAsMSwwKXwwO2NbQT4+Ml09a28oYSxFLEMsayl8MDtpZihjW2s+PjJdfDApe0U9KGNbeD4+Ml18MCkrMTJ8MDtjW0U+PjJdPWNbRT4+Ml18Mn19d2hpbGUoMCk7aWYoIShjW0E+PjJdfDApKXtFPW47Y1tBPj4yXT1sbyhjW2c+PjJdfDAsY1tFPj4yXXwwLGNbRSs0Pj4yXXwwLGNbdj4+Ml18MCxjW3c+PjJdfDApfDB9aWYoKCgwPT0oY1tBPj4yXXwwKT8oY1soY1t3Pj4yXXwwKSs0Pj4yXXwwKT09KGNbdj4+Ml18MCk6MCk/KEU9dWwoY1tnPj4yXXwwLGNbdz4+Ml18MCxjW3g+PjJdfDApfDAsY1tBPj4yXT1FLDA9PShFfDApKTowKT8oRT12bChjW2c+PjJdfDAsY1t3Pj4yXXwwKXwwLGNbQT4+Ml09RSwxMDA9PShFfDApKTowKXtpZigoY1tsPj4yXXwwKSE9MCYoY1twPj4yXXwwKT4wKXtjW0I+PjJdPWNbKGNbdz4+Ml18MCkrNDA+PjJdO2Nbcz4+Ml09Y1soY1t3Pj4yXXwwKSs0ND4+Ml07RT1uO2NbQT4+Ml09bW8oY1tnPj4yXXwwLGNbRT4+Ml18MCxjW0UrND4+Ml18MCwoY1twPj4yXXwwKS0xfDAsY1tCPj4yXXwwLGNbcz4+Ml18MCxjW3o+PjJdfDApfDB9ZWxzZXtFPW47Y1tBPj4yXT1ubyhjW2c+PjJdfDAsY1tFPj4yXXwwLGNbRSs0Pj4yXXwwLGNbcD4+Ml18MCxjW3c+PjJdfDAsY1t6Pj4yXXwwKXwwfWlmKChjW0E+PjJdfDApPT0wPyhjW2Nbej4+Ml0+PjJdfDApIT0wOjApe2Rve2NbQT4+Ml09b28oY1tnPj4yXXwwLGNbej4+Ml18MCxjW3c+PjJdfDApfDA7aWYoIShjW0E+PjJdfDApKWNbQT4+Ml09dmwoY1tnPj4yXXwwLGNbdz4+Ml18MCl8MDtpZigoY1tBPj4yXXwwKT09MTAwPyhjWyhjW3o+PjJdfDApKzQ+PjJdfDApPj0oY1t1Pj4yXXwwKTowKWNbQT4+Ml09MH13aGlsZSgoY1tBPj4yXXwwKT09MTAwKTtpZigoY1tBPj4yXXwwKT09MD8oY1t1Pj4yXT0oY1t1Pj4yXXwwKS0oMSsoY1soY1t6Pj4yXXwwKSs0Pj4yXXwwKSksRT1uLGNbQT4+Ml09cG8oY1tnPj4yXXwwLGNbRT4+Ml18MCxjW0UrND4+Ml18MCxjW3c+PjJdfDAsdil8MCwoY1t2Pj4yXXwwKSE9MCk6MCl7Y1tqPj4yXT0xO0U9bjtxbyhtLGNbRT4+Ml18MCxjW0UrND4+Ml18MCxjW3Y+PjJdfDAsQSl9fWlmKGNbdj4+Ml18MCl7YT0oY1t6Pj4yXXwwKSs0MHwwO2E9YVMoY1thPj4yXXwwLGNbYSs0Pj4yXXwwLC0xLC0xKXwwO0U9KGNbej4+Ml18MCkrNDB8MDtjW0U+PjJdPWE7Y1tFKzQ+PjJdPUN9cm8oY1tnPj4yXXwwLGNbej4+Ml18MCxBKTtpZigoY1t2Pj4yXXwwKT09MD8oZFsoY1t6Pj4yXXwwKSs0OD4+MF18MHwwKT09MDowKXtlPWNbZz4+Ml18MDthPW47YT1SUihjW2E+PjJdfDAsY1thKzQ+PjJdfDAsMSwwKXwwO0U9KGNbej4+Ml18MCkrNDB8MDt6bChlLGEsQyxjW0U+PjJdfDAsY1tFKzQ+PjJdfDApfDB9fUJsKGNbdz4+Ml18MCl9aWYoKGNbaj4+Ml18MCkhPTAmKGNbQT4+Ml18MCk9PTApY1tBPj4yXT1zbyhjW2c+PjJdfDAsbSl8MDtLZChjW3o+PjJdfDApO0tkKGNbbT4+Ml18MCk7Y1tmPj4yXT1jW0E+PjJdO0U9Y1tmPj4yXXwwO2k9RDtyZXR1cm4gRXwwfWZ1bmN0aW9uIGhvKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTA7az1pO2k9aSszMnwwO2w9aysyNHwwO2Q9aysyMHwwO2c9aysxNnwwO2g9aysxMnwwO2o9ays4fDA7ZT1rKzR8MDtmPWs7Y1tsPj4yXT1hO2NbZD4+Ml09YjtjW2c+PjJdPTA7Y1soY1tkPj4yXXwwKSs0Pj4yXT0wO2NbaD4+Ml09cGwoY1tsPj4yXXwwLDIyLGcsMCl8MDtpZihjW2g+PjJdfDApe2w9Y1toPj4yXXwwO2k9aztyZXR1cm4gbHwwfUtlKGNbZz4+Ml18MCwxLDEpfDA7aWYoKDEwMD09KHRlKGNbZz4+Ml18MCl8MCk/KGNbZT4+Ml09emUoY1tnPj4yXXwwLDApfDAsY1tmPj4yXT1BZShjW2c+PjJdfDAsMCl8MCwoY1tlPj4yXXwwKSE9MCk6MCk/KHRvKGNbZD4+Ml18MCxjW2Y+PjJdfDAsaCksKGNbaD4+Ml18MCk9PTApOjApe1RSKGNbY1tkPj4yXT4+Ml18MCxjW2U+PjJdfDAsY1tmPj4yXXwwKXwwO2NbKGNbZD4+Ml18MCkrND4+Ml09Y1tmPj4yXX1jW2o+PjJdPVlkKGNbZz4+Ml18MCl8MDtpZihjW2g+PjJdfDApe2w9Y1toPj4yXXwwO2k9aztyZXR1cm4gbHwwfWNbaD4+Ml09Y1tqPj4yXTtsPWNbaD4+Ml18MDtpPWs7cmV0dXJuIGx8MH1mdW5jdGlvbiBpbyhiLGUsZil7Yj1ifDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MDtuPWk7aT1pKzMyfDA7az1uKzIwfDA7aD1uKzE2fDA7Zz1uKzEyfDA7aj1uKzh8MDttPW4rNHwwO2w9bjtjW2g+PjJdPWI7Y1tnPj4yXT1lO2Nbaj4+Ml09ZjtjW20+PjJdPWNbKGNbaD4+Ml18MCkrND4+Ml07Y1tsPj4yXT0oY1soY1toPj4yXXwwKSs0Pj4yXXwwKS0yO3doaWxlKDEpe2lmKChjW2w+PjJdfDApPD0wKWJyZWFrO2lmKCEoYVsoY1tjW2g+PjJdPj4yXXwwKSsoKGNbbD4+Ml18MCktMSk+PjBdJjEyOCkpYnJlYWs7Y1tsPj4yXT0oY1tsPj4yXXwwKSstMX13aGlsZSgxKXtpZigoY1tsPj4yXXwwKT4wKWU9KGFbKGNbY1toPj4yXT4+Ml18MCkrKChjW2w+PjJdfDApLTEpPj4wXSYxMjh8MCkhPTA7ZWxzZSBlPTA7Yj1jW2w+PjJdfDA7aWYoIWUpYnJlYWs7Y1tsPj4yXT1iKy0xfWNbKGNbaD4+Ml18MCkrND4+Ml09YjtiPV9sKChjW2NbaD4+Ml0+PjJdfDApKyhjW2w+PjJdfDApfDAsY1tnPj4yXXwwKXwwO2NbbD4+Ml09KGNbbD4+Ml18MCkrYjtiPShjW2NbaD4+Ml0+PjJdfDApKyhjW2w+PjJdfDApfDA7aWYoZFsoY1tjW2g+PjJdPj4yXXwwKSsoY1tsPj4yXXwwKT4+MF0mMTI4KWI9JGwoYixjW2o+PjJdfDApfDA7ZWxzZXtjW2Nbaj4+Ml0+PjJdPWRbYj4+MF07Yj0xfWNbbD4+Ml09KGNbbD4+Ml18MCkrYjtpZigoY1tsPj4yXXwwKSE9KGNbbT4+Ml18MCkpe2Nbaz4+Ml09MjY3O209Y1trPj4yXXwwO2k9bjtyZXR1cm4gbXwwfWVsc2V7Y1trPj4yXT0wO209Y1trPj4yXXwwO2k9bjtyZXR1cm4gbXwwfXJldHVybiAwfWZ1bmN0aW9uIGpvKGEsYixkLGUpe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MDtrPWk7aT1pKzMyfDA7bD1rKzIwfDA7Zj1rO2c9aysxNnwwO2o9aysxMnwwO2g9ays4fDA7Y1tsPj4yXT1hO2E9ZjtjW2E+PjJdPWI7Y1thKzQ+PjJdPWQ7Y1tnPj4yXT1lO2NbaD4+Ml09MDtjW2o+PjJdPXBsKGNbbD4+Ml18MCw4LGgsMCl8MDtpZihjW2o+PjJdfDApe2w9Y1tqPj4yXXwwO2k9aztyZXR1cm4gbHwwfWU9Y1toPj4yXXwwO2w9ZjtsPVJSKGNbbD4+Ml18MCxjW2wrND4+Ml18MCwxLDApfDA7TGUoZSwxLGwsQyl8MDt0ZShjW2g+PjJdfDApfDA7bD1DZShjW2g+PjJdfDAsMCl8MDtjW2NbZz4+Ml0+PjJdPWw7Y1tqPj4yXT1ZZChjW2g+PjJdfDApfDA7bD1jW2o+PjJdfDA7aT1rO3JldHVybiBsfDB9ZnVuY3Rpb24ga28oYSxiLGQsZSl7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MDtsPWk7aT1pKzMyfDA7Zj1sKzI0fDA7bT1sKzIwfDA7Zz1sO2g9bCsxNnwwO2o9bCsxMnwwO2s9bCs4fDA7Y1ttPj4yXT1hO2E9ZztjW2E+PjJdPWI7Y1thKzQ+PjJdPWQ7Y1toPj4yXT1lO2Nbaz4+Ml09cGwoY1ttPj4yXXwwLDE1LGosMCl8MDtpZihjW2s+PjJdfDApe2NbZj4+Ml09Y1trPj4yXTttPWNbZj4+Ml18MDtpPWw7cmV0dXJuIG18MH1tPWNbaj4+Ml18MDtrPWc7az1SUihjW2s+PjJdfDAsY1trKzQ+PjJdfDAsMSwwKXwwO0xlKG0sMSxrLEMpfDA7az1jW2o+PjJdfDA7bT1nO209X1IoY1ttPj4yXXwwLGNbbSs0Pj4yXXwwLDEwMjQsMCl8MDttPVJSKG18MCxDfDAsMSwwKXwwO209YVMobXwwLEN8MCwxMDI0LDApfDA7TGUoaywyLG0sQyl8MDtjW2NbaD4+Ml0+PjJdPTA7aWYoMTAwPT0odGUoY1tqPj4yXXwwKXwwKSl7bT0oR2UoY1tqPj4yXXwwLDApfDApPT01JjE7Y1tjW2g+PjJdPj4yXT1tfWNbZj4+Ml09WWQoY1tqPj4yXXwwKXwwO209Y1tmPj4yXXwwO2k9bDtyZXR1cm4gbXwwfWZ1bmN0aW9uIGxvKGEsYixkLGUsZil7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTA7cT1pO2k9aSs0OHwwO2c9cSszNnwwO2g9cTtqPXErMzJ8MDtrPXErMjh8MDtvPXErMjR8MDtuPXErMjB8MDttPXErMTZ8MDtsPXErMTJ8MDtwPXErOHwwO2NbZz4+Ml09YTthPWg7Y1thPj4yXT1iO2NbYSs0Pj4yXT1kO2Nbaj4+Ml09ZTtjW2s+PjJdPWY7Y1tuPj4yXT0wO2I9Y1trPj4yXXwwO2Q9Yis1NnwwO2Rve2NbYj4+Ml09MDtiPWIrNHwwfXdoaWxlKChifDApPChkfDApKTtjW20+PjJdPWNbaj4+Ml08PDI7Zj1JZChjW20+PjJdfDApfDA7Y1tjW2s+PjJdPj4yXT1mO2lmKCEoY1tjW2s+PjJdPj4yXXwwKSljW28+PjJdPTc7ZWxzZXtWUihjW2Nbaz4+Ml0+PjJdfDAsMCxjW20+PjJdfDApfDA7Y1tvPj4yXT1wbChjW2c+PjJdfDAsMTIsbiwwKXwwfWlmKGNbbz4+Ml18MCl7cD1jW28+PjJdfDA7aT1xO3JldHVybiBwfDB9bT1oO0xlKGNbbj4+Ml18MCwxLGNbbT4+Ml18MCxjW20rND4+Ml18MCl8MDtjW2w+PjJdPTA7d2hpbGUoMSl7aWYoY1tvPj4yXXwwKWJyZWFrO2lmKCh0ZShjW24+PjJdfDApfDApIT0xMDApYnJlYWs7aWYoKGNbbD4+Ml18MCk+PShjW2o+PjJdfDApKWJyZWFrO3I9Y1tsPj4yXXwwO2I9RGUoY1tuPj4yXXwwLDEpfDA7ZD1DO2U9RGUoY1tuPj4yXXwwLDIpfDA7YT1DO2Y9RGUoY1tuPj4yXXwwLDMpfDA7Zz1DO2g9emUoY1tuPj4yXXwwLDQpfDA7bT1BZShjW24+PjJdfDAsNCl8MDtjW28+PjJdPW9tKHIsMCxiLGQsZSxhLGYsZyxoLG0sKGNbY1trPj4yXT4+Ml18MCkrKGNbbD4+Ml08PDIpfDApfDA7bT0oY1trPj4yXXwwKSs0fDA7Y1ttPj4yXT0oY1ttPj4yXXwwKSsxO2NbbD4+Ml09KGNbbD4+Ml18MCkrMX1jW3A+PjJdPVlkKGNbbj4+Ml18MCl8MDtpZihjW28+PjJdfDApe3I9Y1tvPj4yXXwwO2k9cTtyZXR1cm4gcnwwfWNbbz4+Ml09Y1twPj4yXTtyPWNbbz4+Ml18MDtpPXE7cmV0dXJuIHJ8MH1mdW5jdGlvbiBtbyhiLGQsZSxmLGcsaCxqKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDt2YXIgaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsRD0wLEU9MCxGPTAsRz0wLEg9MCxJPTAsSj0wLEs9MDtLPWk7aT1pKzIwOHwwO3k9SysyMDB8MDt6PUsrMTk2fDA7az1LKzEyMHwwO2w9SysxOTJ8MDttPUsrMTg4fDA7bj1LKzE4NHwwO0E9SysxODB8MDtIPUsrMTc2fDA7Rz1LKzE3MnwwO3M9SysxMTJ8MDtyPUsrMTA0fDA7cT1LKzk2fDA7dj1LKzE2OHwwO3g9SysxNjR8MDtJPUsrMTYwfDA7cD1LKzE1NnwwO289SysxNTJ8MDt0PUsrMTQ4fDA7dT1LKzQ4fDA7RD1LKzE0NHwwO3c9SysxNDB8MDtGPUsrMTM2fDA7Sj1LO0I9SysxMzJ8MDtFPUsrMTI4fDA7Y1t6Pj4yXT1iO2I9aztjW2I+PjJdPWQ7Y1tiKzQ+PjJdPWU7Y1tsPj4yXT1mO2NbbT4+Ml09ZztjW24+PjJdPWg7Y1tBPj4yXT1qO2NbRz4+Ml09MDtjW0g+PjJdPXBsKGNbej4+Ml18MCwzMixHLDApfDA7aWYoIShjW0g+PjJdfDApKXtkPXM7Y1tkPj4yXT0wO2NbZCs0Pj4yXT0wO2Q9cjtjW2Q+PjJdPTA7Y1tkKzQ+PjJdPTA7ZD1xO2NbZD4+Ml09MDtjW2QrND4+Ml09MDtjW3Y+PjJdPTA7Y1t4Pj4yXT0wO2NbcD4+Ml09MDtkPWNbRz4+Ml18MDtnPWs7Zz1SUihjW2c+PjJdfDAsY1tnKzQ+PjJdfDAsMSwwKXwwO0xlKGQsMSxnLEMpfDA7S2UoY1tHPj4yXXwwLDIsY1tsPj4yXXwwKXwwO2c9KHRlKGNbRz4+Ml18MCl8MCk9PTEwMDtkPWNbRz4+Ml18MDtpZighZyl7Y1t5Pj4yXT1ZZChkKXwwO0o9Y1t5Pj4yXXwwO2k9SztyZXR1cm4gSnwwfWc9RGUoZCwxKXwwO2o9cztjW2o+PjJdPWc7Y1tqKzQ+PjJdPUM7aj1EZShjW0c+PjJdfDAsMil8MDtnPXI7Y1tnPj4yXT1qO2NbZys0Pj4yXT1DO0VsKGNbRz4+Ml18MCwzLHEsKGNbQT4+Ml18MCkrNDB8MCk7aWYoKGNbKGNbQT4+Ml18MCkrNDArND4+Ml18MCk8MCl7aj0oY1tBPj4yXXwwKSs0MHwwO2o9YVMoY1tqPj4yXXwwLGNbais0Pj4yXXwwLC0xLC0xKXwwO2c9KGNbQT4+Ml18MCkrNDB8MDtjW2c+PjJdPWo7Y1tnKzQ+PjJdPUN9Zz0oY1tBPj4yXXwwKSs0MHwwO2FbKGNbQT4+Ml18MCkrNDg+PjBdPShjW2c+PjJdfDApPT0wJihjW2crND4+Ml18MCk9PTAmMTtjW3g+PjJdPUFlKGNbRz4+Ml18MCw0KXwwO2Nbdj4+Ml09emUoY1tHPj4yXXwwLDQpfDA7Zz1xO2NbSD4+Ml09Rm8oY1t6Pj4yXXwwLGNbZz4+Ml18MCxjW2crND4+Ml18MCxwKXwwO2lmKChjW0g+PjJdfDApPT0wJihjW3A+PjJdfDApIT0wKXtjW28+PjJdPTA7Y1t0Pj4yXT0wO2NbSD4+Ml09Z20oY1t6Pj4yXXwwLGNbcj4+Ml18MCxjW3IrND4+Ml18MCxvLHQsMCl8MDtpZighKGNbSD4+Ml18MCkpe2NbSD4+Ml09eW8odSxjW28+PjJdfDAsY1t0Pj4yXXwwKXwwO3doaWxlKDEpe2lmKCEoKGNbSD4+Ml18MCk9PTA/KGNbdT4+Ml18MCkhPTA6MCkpYnJlYWs7Y1tIPj4yXT1Dbyh1KXwwfWlmKCh6byhjW20+PjJdfDAsY1tuPj4yXXwwLGNbdSsyND4+Ml18MCxjW3UrMjQrND4+Ml18MCl8MCk8PTApY1twPj4yXT0wO0RvKHUpfUtkKGNbbz4+Ml18MCl9YTpkbyBpZigoY1tIPj4yXXwwKT09MCYoY1twPj4yXXwwKSE9MCl7Y1t3Pj4yXT1hW2Nbdj4+Ml0+PjBdO3U9cTt0PXM7dD1RUihjW3U+PjJdfDAsY1t1KzQ+PjJdfDAsY1t0Pj4yXXwwLGNbdCs0Pj4yXXwwKXwwO3Q9UlIodHwwLEN8MCwxLDApfDA7Y1tjW0E+PjJdPj4yXT0odHwwKS8xNnwwO3Q9Y1tzKzQ+PjJdfDA7dT0oY1tBPj4yXXwwKSsyNHwwO2NbdT4+Ml09Y1tzPj4yXTtjW3UrND4+Ml09dDt1PXE7dD1jW3UrND4+Ml18MDtzPShjW0E+PjJdfDApKzMyfDA7Y1tzPj4yXT1jW3U+PjJdO2Nbcys0Pj4yXT10O3M9azt0PWNbcys0Pj4yXXwwO3U9KGNbQT4+Ml18MCkrOHwwO2NbdT4+Ml09Y1tzPj4yXTtjW3UrND4+Ml09dDtjWyhjW0E+PjJdfDApKzE2Pj4yXT1jW2w+PjJdO2NbRD4+Ml09KGNbdz4+Ml18MCkrMTt3aGlsZSgxKXtpZigoY1tEPj4yXXwwKT49MTYpYnJlYWs7dT0oY1tBPj4yXXwwKSsyNHwwO3Q9XyhjW0Q+PjJdfDAsY1tjW0E+PjJdPj4yXXwwKXwwO3Q9UlIoY1t1Pj4yXXwwLGNbdSs0Pj4yXXwwLHR8MCwoKHR8MCk8MCk8PDMxPj4zMXwwKXwwO3U9KGNbQT4+Ml18MCkrNTYrKGNbRD4+Ml08PDUpfDA7Y1t1Pj4yXT10O2NbdSs0Pj4yXT1DO2NbRD4+Ml09KGNbRD4+Ml18MCkrMX1jW0Y+PjJdPShjW0E+PjJdfDApKzU2KyhjW3c+PjJdPDw1KTt1PShjW0E+PjJdfDApKzI0fDA7dD1fKGNbY1tBPj4yXT4+Ml18MCxjW3c+PjJdfDApfDA7dD1SUihjW3U+PjJdfDAsY1t1KzQ+PjJdfDAsdHwwLCgodHwwKTwwKTw8MzE+PjMxfDApfDA7dT1jW0Y+PjJdfDA7Y1t1Pj4yXT10O2NbdSs0Pj4yXT1DO2lmKChjW3g+PjJdfDApPihjWyhjW3o+PjJdfDApKzIyND4+Ml18MCkpZD1jW3g+PjJdfDA7ZWxzZSBkPWNbKGNbej4+Ml18MCkrMjI0Pj4yXXwwO3RvKChjW0Y+PjJdfDApKzIwfDAsZCxIKTtpZighKGNbSD4+Ml18MCkpe1RSKGNbKGNbRj4+Ml18MCkrMjA+PjJdfDAsY1t2Pj4yXXwwLGNbeD4+Ml18MCl8MDtjWyhjW0Y+PjJdfDApKzIwKzQ+PjJdPWNbeD4+Ml19Y1tEPj4yXT1jW3c+PjJdO3doaWxlKDEpe2lmKCEoKGNbRD4+Ml18MCk+PTA/KGNbSD4+Ml18MCk9PTA6MCkpYnJlYWsgYTtjW0Y+PjJdPShjW0E+PjJdfDApKzU2KyhjW0Q+PjJdPDw1KTtjW0g+PjJdPXlvKEosY1soY1tGPj4yXXwwKSsyMD4+Ml18MCxjWyhjW0Y+PjJdfDApKzIwKzQ+PjJdfDApfDA7d2hpbGUoMSl7aWYoISgoY1tKPj4yXXwwKSE9MD8oY1tIPj4yXXwwKT09MDowKSlicmVhaztjW0g+PjJdPUNvKEopfDB9dG8oKGNbRj4+Ml18MCkrOHwwLGNbSisyNCs0Pj4yXXwwLEgpO2lmKChjW0g+PjJdfDApPT0wPyhUUihjWyhjW0Y+PjJdfDApKzg+PjJdfDAsY1tKKzI0Pj4yXXwwLGNbSisyNCs0Pj4yXXwwKXwwLGNbKGNbRj4+Ml18MCkrOCs0Pj4yXT1jW0orMjQrND4+Ml0sKGNbRD4+Ml18MCk+MCk6MCl7Y1tCPj4yXT0wO2NbRT4+Ml09MDtjW0Y+PjJdPShjW0E+PjJdfDApKzU2KygoY1tEPj4yXXwwKS0xPDw1KTt2PUorMTZ8MDt3PWNbdis0Pj4yXXwwO3g9Y1tGPj4yXXwwO2NbeD4+Ml09Y1t2Pj4yXTtjW3grND4+Ml09dzt4PUorMTZ8MDtjW0g+PjJdPWdtKGNbej4+Ml18MCxjW3g+PjJdfDAsY1t4KzQ+PjJdfDAsQixFLDApfDA7aWYoKGNbRT4+Ml18MCk+KGNbKGNbej4+Ml18MCkrMjI0Pj4yXXwwKSlkPWNbRT4+Ml18MDtlbHNlIGQ9Y1soY1t6Pj4yXXwwKSsyMjQ+PjJdfDA7dG8oKGNbRj4+Ml18MCkrMjB8MCxkLEgpO2lmKCEoY1tIPj4yXXwwKSl7VFIoY1soY1tGPj4yXXwwKSsyMD4+Ml18MCxjW0I+PjJdfDAsY1tFPj4yXXwwKXwwO2NbKGNbRj4+Ml18MCkrMjArND4+Ml09Y1tFPj4yXX1LZChjW0I+PjJdfDApfURvKEopO2NbRD4+Ml09KGNbRD4+Ml18MCkrLTF9fXdoaWxlKDApO2NbST4+Ml09WWQoY1tHPj4yXXwwKXwwO2lmKCEoY1tIPj4yXXwwKSljW0g+PjJdPWNbST4+Ml19Y1t5Pj4yXT1jW0g+PjJdO0o9Y1t5Pj4yXXwwO2k9SztyZXR1cm4gSnwwfWZ1bmN0aW9uIG5vKGEsYixkLGUsZixnKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDt2YXIgaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTA7dD1pO2k9aSs0OHwwO2g9dCs0NHwwO2o9dCs0MHwwO2s9dDtsPXQrMzZ8MDttPXQrMzJ8MDtuPXQrMjh8MDtzPXQrMjR8MDtvPXQrMjB8MDtwPXQrMTZ8MDtyPXQrMTJ8MDtxPXQrOHwwO2Nbaj4+Ml09YTthPWs7Y1thPj4yXT1iO2NbYSs0Pj4yXT1kO2NbbD4+Ml09ZTtjW20+PjJdPWY7Y1tuPj4yXT1nO2NbcD4+Ml09MDtjW3I+PjJdPTA7Y1txPj4yXT0wO2Nbcz4+Ml09cGwoY1tqPj4yXXwwLDI5LHIsMCl8MDtpZighKGNbcz4+Ml18MCkpe2c9aztMZShjW3I+PjJdfDAsMSxjW2c+PjJdfDAsY1tnKzQ+PjJdfDApfDA7Zz1jWyhjW20+PjJdfDApKzQ+PjJdfDA7TGUoY1tyPj4yXXwwLDIsZywoKGd8MCk8MCk8PDMxPj4zMSl8MDtpZigxMDA9PSh0ZShjW3I+PjJdfDApfDApKWNbcD4+Ml09Q2UoY1tyPj4yXXwwLDApfDA7Y1tzPj4yXT1ZZChjW3I+PjJdfDApfDB9aWYoY1tzPj4yXXwwKXtjW2g+PjJdPWNbcz4+Ml07cz1jW2g+PjJdfDA7aT10O3JldHVybiBzfDB9Y1tzPj4yXT1wbChjW2o+PjJdfDAsMTAscSwwKXwwO2lmKCEoY1tzPj4yXXwwKSl7aWYoMTAwPT0odGUoY1txPj4yXXwwKXwwKSl7cj1EZShjW3E+PjJdfDAsMCl8MDtnPShjW24+PjJdfDApKzI0fDA7Y1tnPj4yXT1yO2NbZys0Pj4yXT1DO2c9KGNbbj4+Ml18MCkrMjR8MDtnPVFSKGNbZz4+Ml18MCxjW2crND4+Ml18MCwxLDApfDA7cj0oY1tuPj4yXXwwKSszMnwwO2Nbcj4+Ml09ZztjW3IrND4+Ml09QztyPWNbcD4+Ml08PDQ7Zz0oY1tuPj4yXXwwKSszMnwwO2Y9ZztyPVJSKGNbZj4+Ml18MCxjW2YrND4+Ml18MCxyfDAsKChyfDApPDApPDwzMT4+MzF8MCl8MDtjW2c+PjJdPXI7Y1tnKzQ+PjJdPUN9Y1tzPj4yXT1ZZChjW3E+PjJdfDApfDB9aWYoY1tzPj4yXXwwKXtjW2g+PjJdPWNbcz4+Ml07cz1jW2g+PjJdfDA7aT10O3JldHVybiBzfDB9Zz0oY1tuPj4yXXwwKSszMnwwO2Nbcz4+Ml09RmwoY1tqPj4yXXwwLGNbZz4+Ml18MCxjW2crND4+Ml18MCwwLDApfDA7aWYoY1tzPj4yXXwwKXtjW2g+PjJdPWNbcz4+Ml07cz1jW2g+PjJdfDA7aT10O3JldHVybiBzfDB9cj1rO2c9Y1tyKzQ+PjJdfDA7cz0oY1tuPj4yXXwwKSs4fDA7Y1tzPj4yXT1jW3I+PjJdO2Nbcys0Pj4yXT1nO2NbY1tuPj4yXT4+Ml09Y1twPj4yXTtjWyhjW24+PjJdfDApKzE2Pj4yXT1jW2w+PjJdO2Nbbz4+Ml09MDt3aGlsZSgxKXtpZigoY1tvPj4yXXwwKT49MTYpYnJlYWs7cz0oY1tuPj4yXXwwKSsyNHwwO2c9XyhjW28+PjJdfDAsY1tjW24+PjJdPj4yXXwwKXwwO2c9UlIoY1tzPj4yXXwwLGNbcys0Pj4yXXwwLGd8MCwoKGd8MCk8MCk8PDMxPj4zMXwwKXwwO3M9KGNbbj4+Ml18MCkrNTYrKGNbbz4+Ml08PDUpfDA7Y1tzPj4yXT1nO2Nbcys0Pj4yXT1DO2Nbbz4+Ml09KGNbbz4+Ml18MCkrMX1jW2g+PjJdPTA7cz1jW2g+PjJdfDA7aT10O3JldHVybiBzfDB9ZnVuY3Rpb24gb28oYixkLGUpe2I9YnwwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTA7cj1pO2k9aSs0OHwwO2Y9cis0NHwwO2c9cis0MHwwO3M9ciszNnwwO3E9ciszMnwwO249cisyOHwwO2g9cisyNHwwO2o9cisyMHwwO3A9cisxNnwwO2w9cisxMnwwO2s9cis4fDA7bT1yKzR8MDtvPXI7Y1tmPj4yXT1iO2NbZz4+Ml09ZDtjW3M+PjJdPWU7Y1txPj4yXT1jWyhjW3M+PjJdfDApKzQwPj4yXTtjW24+PjJdPWNbKGNbcz4+Ml18MCkrNDQ+PjJdO2NbaD4+Ml09Y1soY1tzPj4yXXwwKSs0OD4+Ml07Y1tqPj4yXT1jWyhjW3M+PjJdfDApKzUyPj4yXTtjW3A+PjJdPTA7Y1tvPj4yXT0oY1tnPj4yXXwwKSs1NjtjW2s+PjJdPU1sKGNbKGNbbz4+Ml18MCkrOD4+Ml18MCxjWyhjW28+PjJdfDApKzgrND4+Ml18MCxjW3E+PjJdfDAsY1tuPj4yXXwwKXwwO2NbbT4+Ml09KGNbbj4+Ml18MCktKGNbaz4+Ml18MCk7ZD1jW2s+PjJdfDA7Y1tsPj4yXT1KbChkLCgoZHwwKTwwKTw8MzE+PjMxKXwwO2Q9Y1ttPj4yXXwwO2Q9SmwoZCwoKGR8MCk8MCk8PDMxPj4zMSl8MDtjW2w+PjJdPShjW2w+PjJdfDApKyhkKyhjW20+PjJdfDApKTtkPWNbaj4+Ml18MDtkPUpsKGQsKChkfDApPDApPDwzMT4+MzEpfDA7Y1tsPj4yXT0oY1tsPj4yXXwwKSsoZCsoY1tqPj4yXXwwKSk7aWYoKGNbKGNbbz4+Ml18MCkrMjArND4+Ml18MCk+MD8oKGNbKGNbbz4+Ml18MCkrMjArND4+Ml18MCkrKGNbbD4+Ml18MCl8MCk+KGNbKGNbZj4+Ml18MCkrMjI0Pj4yXXwwKTowKXtzPWNbbz4+Ml18MDtjW3A+PjJdPUZsKGNbZj4+Ml18MCxjW3M+PjJdfDAsY1tzKzQ+PjJdfDAsY1soY1tvPj4yXXwwKSsyMD4+Ml18MCxjWyhjW28+PjJdfDApKzIwKzQ+PjJdfDApfDA7cz0oY1tnPj4yXXwwKSs0fDA7Y1tzPj4yXT0oY1tzPj4yXXwwKSsxO2lmKCEoY1twPj4yXXwwKSljW3A+PjJdPUVvKGNbZj4+Ml18MCxjW2c+PjJdfDAsY1txPj4yXXwwLChjW2s+PjJdfDApKzF8MCl8MDtzPWNbbz4+Ml18MDtkPXM7ZD1SUihjW2Q+PjJdfDAsY1tkKzQ+PjJdfDAsMSwwKXwwO2Nbcz4+Ml09ZDtjW3MrND4+Ml09QztjWyhjW28+PjJdfDApKzgrND4+Ml09MDtjWyhjW28+PjJdfDApKzIwKzQ+PjJdPTA7Y1ttPj4yXT1jW24+PjJdO2NbbD4+Ml09MTtzPWNbbT4+Ml18MDtzPUpsKHMsKChzfDApPDApPDwzMT4+MzEpfDA7Y1tsPj4yXT0oY1tsPj4yXXwwKSsocysoY1ttPj4yXXwwKSk7cz1jW2o+PjJdfDA7cz1KbChzLCgoc3wwKTwwKTw8MzE+PjMxKXwwO2NbbD4+Ml09KGNbbD4+Ml18MCkrKHMrKGNbaj4+Ml18MCkpfWQ9Y1tsPj4yXXwwO3M9KGNbZz4+Ml18MCkrNDB8MDtlPXM7ZD1SUihjW2U+PjJdfDAsY1tlKzQ+PjJdfDAsZHwwLCgoZHwwKTwwKTw8MzE+PjMxfDApfDA7Y1tzPj4yXT1kO2Nbcys0Pj4yXT1DO3RvKChjW28+PjJdfDApKzIwfDAsKGNbKGNbbz4+Ml18MCkrMjArND4+Ml18MCkrKGNbbD4+Ml18MCl8MCxwKTtpZihjW3A+PjJdfDApe3M9Y1twPj4yXXwwO2k9cjtyZXR1cm4gc3wwfWlmKCEoY1soY1tvPj4yXXwwKSsyMCs0Pj4yXXwwKSl7Y1soY1tvPj4yXXwwKSsyMCs0Pj4yXT0xO2FbY1soY1tvPj4yXXwwKSsyMD4+Ml0+PjBdPTB9Y1twPj4yXT1CbygoY1tvPj4yXXwwKSsyMHwwLChjW28+PjJdfDApKzh8MCxjW3E+PjJdfDAsY1tuPj4yXXwwLGNbaD4+Ml18MCxjW2o+PjJdfDApfDA7cz1jW3A+PjJdfDA7aT1yO3JldHVybiBzfDB9ZnVuY3Rpb24gcG8oYSxiLGQsZSxmKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTA7cz1pO2k9aSs0OHwwO2c9cys0NHwwO2g9cztqPXMrNDB8MDtrPXMrMzZ8MDtsPXMrMzJ8MDtuPXMrMjh8MDtxPXMrMjR8MDtwPXMrMjB8MDttPXMrMTZ8MDtyPXMrMTJ8MDtvPXMrOHwwO2NbZz4+Ml09YTthPWg7Y1thPj4yXT1iO2NbYSs0Pj4yXT1kO2Nbaj4+Ml09ZTtjW2s+PjJdPWY7Y1tuPj4yXT0wO2NbcT4+Ml09MDtjW2w+PjJdPShjWyhjW2o+PjJdfDApKzQ+PjJdfDApLTE7d2hpbGUoMSl7aWYoISgoY1tsPj4yXXwwKT49MD8oY1txPj4yXXwwKT09MDowKSlicmVhaztjW3A+PjJdPTA7Y1ttPj4yXT0wO3doaWxlKDEpe2lmKChjW20+PjJdfDApPj0oY1soY1tqPj4yXXwwKSs0Pj4yXXwwKSlicmVhaztjW3A+PjJdPWNbKGNbY1tqPj4yXT4+Ml18MCkrKGNbbT4+Ml08PDIpPj4yXTtpZigoY1tjW3A+PjJdPj4yXXwwKT09KGNbbD4+Ml18MCkpYnJlYWs7Y1ttPj4yXT0oY1ttPj4yXXwwKSsxfWlmKCEoY1soY1twPj4yXXwwKSs0MD4+Ml18MCkpe2NbcT4+Ml09TGwoY1tnPj4yXXwwLGNbcD4+Ml18MCl8MDtpZighKGNbcT4+Ml18MCkpe2Y9aDtjW3E+PjJdPXVvKGNbZz4+Ml18MCxjW2Y+PjJdfDAsY1tmKzQ+PjJdfDAsY1tjW3A+PjJdPj4yXXwwKXwwfWNbY1trPj4yXT4+Ml09MH1lbHNle2Nbcj4+Ml09Y1soY1twPj4yXXwwKSs2ND4+Ml07Y1tvPj4yXT1jWyhjW3A+PjJdfDApKzYwPj4yXTtmPWg7Y1txPj4yXT12byhjW2c+PjJdfDAsY1tmPj4yXXwwLGNbZis0Pj4yXXwwLGNbY1twPj4yXT4+Ml18MCxjW3I+PjJdfDAsY1tvPj4yXXwwKXwwO2Nbbj4+Ml09KGNbbj4+Ml18MCkrMX1jW2w+PjJdPShjW2w+PjJdfDApKy0xfWlmKGNbcT4+Ml18MCl7Zj1jW24+PjJdfDA7cj1jW2s+PjJdfDA7Y1tyPj4yXT1mO3I9Y1txPj4yXXwwO2k9cztyZXR1cm4gcnwwfWlmKChjW24+PjJdfDApPT0oY1soY1tqPj4yXXwwKSs0Pj4yXXwwKSl7Zj1jW24+PjJdfDA7cj1jW2s+PjJdfDA7Y1tyPj4yXT1mO3I9Y1txPj4yXXwwO2k9cztyZXR1cm4gcnwwfWY9aDtjW3E+PjJdPXdvKGNbZz4+Ml18MCxjW2Y+PjJdfDAsY1tmKzQ+PjJdfDApfDA7Zj1jW24+PjJdfDA7cj1jW2s+PjJdfDA7Y1tyPj4yXT1mO3I9Y1txPj4yXXwwO2k9cztyZXR1cm4gcnwwfWZ1bmN0aW9uIHFvKGEsYixkLGUsZil7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTA7az1pO2k9aSszMnwwO2c9aysxNnwwO2g9aztqPWsrMTJ8MDtsPWsrOHwwO2NbZz4+Ml09YTthPWg7Y1thPj4yXT1iO2NbYSs0Pj4yXT1kO2Nbaj4+Ml09ZTtjW2w+PjJdPWY7dG8oY1tnPj4yXXwwLChjWyhjW2c+PjJdfDApKzQ+PjJdfDApKzIwfDAsY1tsPj4yXXwwKTtpZihjW2NbbD4+Ml0+PjJdfDApe2k9aztyZXR1cm59bD1oO2w9S2woKGNbY1tnPj4yXT4+Ml18MCkrKGNbKGNbZz4+Ml18MCkrND4+Ml18MCl8MCxjW2w+PjJdfDAsY1tsKzQ+PjJdfDApfDA7Zj0oY1tnPj4yXXwwKSs0fDA7Y1tmPj4yXT0oY1tmPj4yXXwwKStsO2Y9Y1tqPj4yXXwwO2Y9S2woKGNbY1tnPj4yXT4+Ml18MCkrKGNbKGNbZz4+Ml18MCkrND4+Ml18MCl8MCxmLCgoZnwwKTwwKTw8MzE+PjMxKXwwO2w9KGNbZz4+Ml18MCkrNHwwO2NbbD4+Ml09KGNbbD4+Ml18MCkrZjtpPWs7cmV0dXJufWZ1bmN0aW9uIHJvKGIsZSxmKXtiPWJ8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MDtyPWk7aT1pKzQ4fDA7Zz1yKzM2fDA7bj1yKzMyfDA7bz1yKzI4fDA7aD1yKzI0fDA7aj1yKzIwfDA7cD1yKzE2fDA7cT1yKzEyfDA7bD1yKzh8MDtrPXIrNHwwO209cjtjW2c+PjJdPWI7Y1tuPj4yXT1lO2Nbbz4+Ml09ZjtjW3E+PjJdPWNbY1tvPj4yXT4+Ml07Y1tqPj4yXT0xNTt3aGlsZSgxKXtpZigoY1tqPj4yXXwwKTwwKWJyZWFrO2NbbD4+Ml09KGNbbj4+Ml18MCkrNTYrKGNbaj4+Ml08PDUpO2lmKChjWyhjW2w+PjJdfDApKzIwKzQ+PjJdfDApPjApYnJlYWs7S2QoY1soY1tsPj4yXXwwKSsyMD4+Ml18MCk7S2QoY1soY1tsPj4yXXwwKSs4Pj4yXXwwKTtjW2o+PjJdPShjW2o+PjJdfDApKy0xfWlmKChjW2o+PjJdfDApPDApe2k9cjtyZXR1cm59aWYoIShjW2o+PjJdfDApKXtjW2s+PjJdPShjW24+PjJdfDApKzU2KzMyKzIwO3RvKGNbaz4+Ml18MCwxMSxxKTtpZighKGNbcT4+Ml18MCkpe2FbY1tjW2s+PjJdPj4yXT4+MF09MTtlPShjW24+PjJdfDApKzU2fDA7ZT0xKyhLbCgoY1tjW2s+PjJdPj4yXXwwKSsxfDAsY1tlPj4yXXwwLGNbZSs0Pj4yXXwwKXwwKXwwO2NbKGNbaz4+Ml18MCkrND4+Ml09ZX1jW2o+PjJdPTF9Y1twPj4yXT0oY1tuPj4yXXwwKSs1NisoY1tqPj4yXTw8NSk7Y1toPj4yXT0wO3doaWxlKDEpe2lmKChjW2g+PjJdfDApPj0oY1tqPj4yXXwwKSlicmVhaztjW20+PjJdPShjW24+PjJdfDApKzU2KyhjW2g+PjJdPDw1KTtpZigoY1txPj4yXXwwKT09MD8oY1soY1ttPj4yXXwwKSsyMCs0Pj4yXXwwKT4wOjApe2U9Y1ttPj4yXXwwO2NbcT4+Ml09RmwoY1tnPj4yXXwwLGNbZT4+Ml18MCxjW2UrND4+Ml18MCxjWyhjW20+PjJdfDApKzIwPj4yXXwwLGNbKGNbbT4+Ml18MCkrMjArND4+Ml18MCl8MH1LZChjWyhjW20+PjJdfDApKzIwPj4yXXwwKTtLZChjWyhjW20+PjJdfDApKzg+PjJdfDApO2NbaD4+Ml09KGNbaD4+Ml18MCkrMX1pZighKGNbcT4+Ml18MCkpe209Y1tnPj4yXXwwO2c9KGNbbj4+Ml18MCkrOHwwO2c9UlIoY1tnPj4yXXwwLGNbZys0Pj4yXXwwLDEsMCl8MDtoPShjW24+PjJdfDApKzI0fDA7aj0oY1tuPj4yXXwwKSs1NnwwO2I9KGNbbj4+Ml18MCkrMzJ8MDtpZighKGRbKGNbbj4+Ml18MCkrNDg+PjBdfDApKXtsPShjW24+PjJdfDApKzQwfDA7az1jW2w+PjJdfDA7bD1jW2wrND4+Ml18MH1lbHNle2s9MDtsPTB9Y1txPj4yXT1IbChtLGcsQyxjWyhjW24+PjJdfDApKzE2Pj4yXXwwLGNbaD4+Ml18MCxjW2grND4+Ml18MCxjW2o+PjJdfDAsY1tqKzQ+PjJdfDAsY1tiPj4yXXwwLGNbYis0Pj4yXXwwLGssbCxjWyhjW3A+PjJdfDApKzIwPj4yXXwwLGNbKGNbcD4+Ml18MCkrMjArND4+Ml18MCl8MH1LZChjWyhjW3A+PjJdfDApKzIwPj4yXXwwKTtLZChjWyhjW3A+PjJdfDApKzg+PjJdfDApO2NbY1tvPj4yXT4+Ml09Y1txPj4yXTtpPXI7cmV0dXJufWZ1bmN0aW9uIHNvKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTA7Zz1pO2k9aSsxNnwwO2g9ZysxMnwwO2Q9Zys4fDA7ZT1nKzR8MDtmPWc7Y1toPj4yXT1hO2NbZD4+Ml09YjtjW2U+PjJdPTA7Y1tmPj4yXT1wbChjW2g+PjJdfDAsMjMsZSwwKXwwO2lmKGNbZj4+Ml18MCl7aD1jW2Y+PjJdfDA7aT1nO3JldHVybiBofDB9S2UoY1tlPj4yXXwwLDEsMSl8MDtJZShjW2U+PjJdfDAsMixjW2NbZD4+Ml0+PjJdfDAsY1soY1tkPj4yXXwwKSs0Pj4yXXwwLDApfDA7dGUoY1tlPj4yXXwwKXwwO2NbZj4+Ml09WWQoY1tlPj4yXXwwKXwwO2g9Y1tmPj4yXXwwO2k9ZztyZXR1cm4gaHwwfWZ1bmN0aW9uIHRvKGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTA7az1pO2k9aSszMnwwO2U9aysxNnwwO2Y9aysxMnwwO2c9ays4fDA7aj1rKzR8MDtoPWs7Y1tlPj4yXT1hO2NbZj4+Ml09YjtjW2c+PjJdPWQ7aWYoY1tjW2c+PjJdPj4yXXwwKXtpPWs7cmV0dXJufWlmKChjW2Y+PjJdfDApPD0oY1soY1tlPj4yXXwwKSs4Pj4yXXwwKSl7aT1rO3JldHVybn1jW2o+PjJdPWNbZj4+Ml07Y1toPj4yXT1MZChjW2NbZT4+Ml0+PjJdfDAsY1tqPj4yXXwwKXwwO2lmKGNbaD4+Ml18MCl7Y1soY1tlPj4yXXwwKSs4Pj4yXT1jW2o+PjJdO2NbY1tlPj4yXT4+Ml09Y1toPj4yXTtpPWs7cmV0dXJufWVsc2V7Y1tjW2c+PjJdPj4yXT03O2k9aztyZXR1cm59fWZ1bmN0aW9uIHVvKGEsYixkLGUpe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MDtrPWk7aT1pKzMyfDA7bD1rKzIwfDA7Zj1rO2c9aysxNnwwO2o9aysxMnwwO2g9ays4fDA7Y1tsPj4yXT1hO2E9ZjtjW2E+PjJdPWI7Y1thKzQ+PjJdPWQ7Y1tnPj4yXT1lO2NbaD4+Ml09MDtjW2o+PjJdPXBsKGNbbD4+Ml18MCwzMCxoLDApfDA7aWYoY1tqPj4yXXwwKXtsPWNbaj4+Ml18MDtpPWs7cmV0dXJuIGx8MH1sPWY7TGUoY1toPj4yXXwwLDEsY1tsPj4yXXwwLGNbbCs0Pj4yXXwwKXwwO0tlKGNbaD4+Ml18MCwyLGNbZz4+Ml18MCl8MDt0ZShjW2g+PjJdfDApfDA7Y1tqPj4yXT1ZZChjW2g+PjJdfDApfDA7bD1jW2o+PjJdfDA7aT1rO3JldHVybiBsfDB9ZnVuY3Rpb24gdm8oYSxiLGQsZSxmLGcpe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO3ZhciBoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wO0I9aTtpPWkrMTEyfDA7aD1CKzEwNHwwO2o9QisyNHwwO2s9QisxMDB8MDtsPUIrOTZ8MDttPUIrOTJ8MDt5PUIrODh8MDtBPUIrNzZ8MDtwPUIrNjR8MDtxPUIrMTZ8MDtyPUIrOHwwO3M9Qjt4PUIrNjB8MDt6PUIrNTZ8MDtvPUIrNTJ8MDt1PUIrNDh8MDtuPUIrNDR8MDt0PUIrNDB8MDt3PUIrMzZ8MDt2PUIrMzJ8MDtjW2g+PjJdPWE7YT1qO2NbYT4+Ml09YjtjW2ErND4+Ml09ZDtjW2s+PjJdPWU7Y1tsPj4yXT1mO2NbbT4+Ml09ZztjW3k+PjJdPTA7Y1tBPj4yXT0wO2NbQSs0Pj4yXT0wO2NbQSs4Pj4yXT0wO2NbcD4+Ml09MDtjW3ArND4+Ml09MDtjW3ArOD4+Ml09MDtmPXE7Y1tmPj4yXT0wO2NbZis0Pj4yXT0wO2Y9cjtjW2Y+PjJdPTA7Y1tmKzQ+PjJdPTA7Zj1zO2NbZj4+Ml09MDtjW2YrND4+Ml09MDtjW3g+PjJdPTA7Y1t5Pj4yXT1wbChjW2g+PjJdfDAsMzIseCwwKXwwO2lmKCEoY1t5Pj4yXXwwKSl7Zj1qO0xlKGNbeD4+Ml18MCwxLGNbZj4+Ml18MCxjW2YrND4+Ml18MCl8MDtLZShjW3g+PjJdfDAsMixjW2s+PjJdfDApfDA7aWYoMTAwPT0odGUoY1t4Pj4yXXwwKXwwKSl7Y1tvPj4yXT16ZShjW3g+PjJdfDAsNCl8MDtjW3U+PjJdPUFlKGNbeD4+Ml18MCw0KXwwO2E9RGUoY1t4Pj4yXXwwLDEpfDA7Zj1zO2NbZj4+Ml09YTtjW2YrND4+Ml09QztjW3k+PjJdPXhvKGNbbz4+Ml18MCxjW3U+PjJdfDAsQSxjW2w+PjJdfDAsY1ttPj4yXXwwLHEpfDB9Y1t6Pj4yXT1ZZChjW3g+PjJdfDApfDA7aWYoIShjW3k+PjJdfDApKWNbeT4+Ml09Y1t6Pj4yXX13aGlsZSgxKXtmPXE7aWYoISgoY1t5Pj4yXXwwKT09MD8oY1tmPj4yXXwwKSE9MHwoY1tmKzQ+PjJdfDApIT0wOjApKWJyZWFrO2Nbbj4+Ml09MDtjW3Q+PjJdPTA7eD1xO3o9Y1t4KzQ+PjJdfDA7Zj1yO2NbZj4+Ml09Y1t4Pj4yXTtjW2YrND4+Ml09ejtmPXE7Y1t5Pj4yXT1nbShjW2g+PjJdfDAsY1tmPj4yXXwwLGNbZis0Pj4yXXwwLG4sdCwwKXwwO2lmKCEoY1t5Pj4yXXwwKSljW3k+PjJdPXhvKGNbbj4+Ml18MCxjW3Q+PjJdfDAscCxjW2w+PjJdfDAsY1ttPj4yXXwwLHEpfDA7aWYoIShjW3k+PjJdfDApKXtmPXI7Y1t5Pj4yXT1GbChjW2g+PjJdfDAsY1tmPj4yXXwwLGNbZis0Pj4yXXwwLGNbcD4+Ml18MCxjW3ArND4+Ml18MCl8MH1LZChjW24+PjJdfDApfWY9cjtpZigoY1t5Pj4yXXwwKT09MCYoKGNbZj4+Ml18MCkhPTB8KGNbZis0Pj4yXXwwKSE9MCk/KGNbdz4+Ml09MCxjW3k+PjJdPXBsKGNbaD4+Ml18MCwxNyx3LDApfDAsKGNbeT4+Ml18MCk9PTApOjApe3o9cztMZShjW3c+PjJdfDAsMSxjW3o+PjJdfDAsY1t6KzQ+PjJdfDApfDA7ej1jW3c+PjJdfDA7Zj1yO2Y9UVIoY1tmPj4yXXwwLGNbZis0Pj4yXXwwLDEsMCl8MDtMZSh6LDIsZixDKXwwO3RlKGNbdz4+Ml18MCl8MDtjW3k+PjJdPVlkKGNbdz4+Ml18MCl8MH1pZihjW3k+PjJdfDApe2Y9Y1tBPj4yXXwwO0tkKGYpO2Y9Y1twPj4yXXwwO0tkKGYpO2Y9Y1t5Pj4yXXwwO2k9QjtyZXR1cm4gZnwwfWNbdj4+Ml09MDtjW3k+PjJdPXBsKGNbaD4+Ml18MCwzMyx2LDApfDA7aWYoY1t5Pj4yXXwwKXtmPWNbQT4+Ml18MDtLZChmKTtmPWNbcD4+Ml18MDtLZChmKTtmPWNbeT4+Ml18MDtpPUI7cmV0dXJuIGZ8MH1mPXI7TGUoY1t2Pj4yXXwwLDEsY1tmPj4yXXwwLGNbZis0Pj4yXXwwKXwwO0llKGNbdj4+Ml18MCwyLGNbQT4+Ml18MCxjW0ErND4+Ml18MCwwKXwwO2Y9ajtMZShjW3Y+PjJdfDAsMyxjW2Y+PjJdfDAsY1tmKzQ+PjJdfDApfDA7S2UoY1t2Pj4yXXwwLDQsY1trPj4yXXwwKXwwO3RlKGNbdj4+Ml18MCl8MDtjW3k+PjJdPVlkKGNbdj4+Ml18MCl8MDtmPWNbQT4+Ml18MDtLZChmKTtmPWNbcD4+Ml18MDtLZChmKTtmPWNbeT4+Ml18MDtpPUI7cmV0dXJuIGZ8MH1mdW5jdGlvbiB3byhiLGQsZSl7Yj1ifDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MDtzPWk7aT1pKzQ4fDA7Zj1zKzQ0fDA7Zz1zO3A9cys0MHwwO2g9cyszNnwwO209cyszMnwwO2w9cysyOHwwO2s9cysyNHwwO249cysyMHwwO289cysxNnwwO3E9cysxMnwwO2o9cys4fDA7Y1tmPj4yXT1iO2I9ZztjW2I+PjJdPWQ7Y1tiKzQ+PjJdPWU7Y1toPj4yXT0wO2NbbT4+Ml09MDtjW2w+PjJdPTA7Y1tuPj4yXT0wO2Nbbz4+Ml09MDtjW3A+PjJdPXBsKGNbZj4+Ml18MCwzNSxuLDApfDA7aWYoIShjW3A+PjJdfDApKXtiPWc7TGUoY1tuPj4yXXwwLDEsY1tiPj4yXXwwLGNbYis0Pj4yXXwwKXwwO3doaWxlKDEpe2lmKDEwMCE9KHRlKGNbbj4+Ml18MCl8MCkpYnJlYWs7aWYoKGNbbT4+Ml18MCk+PShjW2w+PjJdfDApKXtjW2w+PjJdPShjW2w+PjJdfDApKzE2O2Nbaj4+Ml09TGQoY1toPj4yXXwwLGNbbD4+Ml08PDIpfDA7aWYoIShjW2o+PjJdfDApKXtyPTY7YnJlYWt9Y1toPj4yXT1jW2o+PjJdfWU9Q2UoY1tuPj4yXXwwLDApfDA7Yj1jW20+PjJdfDA7Y1ttPj4yXT1iKzE7Y1soY1toPj4yXXwwKSsoYjw8Mik+PjJdPWV9aWYoKHJ8MCk9PTYpY1twPj4yXT03O2NbcT4+Ml09WWQoY1tuPj4yXXwwKXwwO2lmKCEoY1twPj4yXXwwKSljW3A+PjJdPWNbcT4+Ml19aWYoIShjW3A+PjJdfDApKWNbcD4+Ml09cGwoY1tmPj4yXXwwLDMxLG8sMCl8MDtpZighKGNbcD4+Ml18MCkpe3I9ZztMZShjW28+PjJdfDAsMixjW3I+PjJdfDAsY1tyKzQ+PjJdfDApfDB9YVsoY1tmPj4yXXwwKSsyMzI+PjBdPTE7Y1trPj4yXT0wO3doaWxlKDEpe2lmKGNbcD4+Ml18MCl7cj0yMTticmVha31pZigoY1trPj4yXXwwKT49KGNbbT4+Ml18MCkpe3I9MjE7YnJlYWt9aWYoKGNbKGNbaD4+Ml18MCkrKGNbaz4+Ml08PDIpPj4yXXwwKSE9KGNbaz4+Ml18MCkpe0tlKGNbbz4+Ml18MCwzLGNbKGNbaD4+Ml18MCkrKGNbaz4+Ml08PDIpPj4yXXwwKXwwO0tlKGNbbz4+Ml18MCwxLGNbaz4+Ml18MCl8MDt0ZShjW28+PjJdfDApfDA7Y1twPj4yXT1ZZChjW28+PjJdfDApfDB9Y1trPj4yXT0oY1trPj4yXXwwKSsxfWlmKChyfDApPT0yMSl7YVsoY1tmPj4yXXwwKSsyMzI+PjBdPTA7S2QoY1toPj4yXXwwKTtpPXM7cmV0dXJuIGNbcD4+Ml18MH1yZXR1cm4gMH1mdW5jdGlvbiB4byhiLGQsZSxmLGcsaCl7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7dmFyIGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTA7dz1pO2k9aSsxMTJ8MDtqPXcrOTZ8MDtrPXcrOTJ8MDtsPXcrODh8MDttPXcrODR8MDtuPXcrODB8MDtvPXcrNzZ8MDtwPXcrNzJ8MDt0PXc7cj13KzYwfDA7cz13KzU2fDA7cT13KzUyfDA7dT13KzQ4fDA7Y1trPj4yXT1iO2NbbD4+Ml09ZDtjW20+PjJdPWU7Y1tuPj4yXT1mO2Nbbz4+Ml09ZztjW3A+PjJdPWg7Y1tyPj4yXT0wO2Nbcis0Pj4yXT0wO2Nbcis4Pj4yXT0wO2Nbcz4+Ml09MDtjW3E+PjJdPShhW2Nbaz4+Ml0+PjBdfDApPT0wJjE7dG8oY1ttPj4yXXwwLGNbbD4+Ml18MCxzKTtpZihjW3M+PjJdfDApe2Nbaj4+Ml09Y1tzPj4yXTt2PWNbaj4+Ml18MDtpPXc7cmV0dXJuIHZ8MH1jWyhjW20+PjJdfDApKzQ+PjJdPTA7Y1tzPj4yXT15byh0LGNbaz4+Ml18MCxjW2w+PjJdfDApfDA7d2hpbGUoMSl7aWYoISgoY1tzPj4yXXwwKT09MD8oY1t0Pj4yXXwwKSE9MDowKSlicmVhaztpZighKGNbKGNbbT4+Ml18MCkrND4+Ml18MCkpe2NbdT4+Ml09em8oY1t0KzI0Pj4yXXwwLGNbdCsyNCs0Pj4yXXwwLGNbbj4+Ml18MCxjW28+PjJdfDApfDA7aWYoKGNbdT4+Ml18MCk+PTA/ISgoY1txPj4yXXwwKT09MCYoY1t1Pj4yXXwwKT09MCk6MCl7aD10KzE2fDA7QW8oY1ttPj4yXXwwLGFbY1trPj4yXT4+MF18MCxjW2g+PjJdfDAsY1toKzQ+PjJdfDApO2g9dCsxNnwwO2Y9Y1toKzQ+PjJdfDA7dj1jW3A+PjJdfDA7Y1t2Pj4yXT1jW2g+PjJdO2Nbdis0Pj4yXT1mO3Y9OX19ZWxzZSB2PTk7aWYoKHZ8MCk9PTk/KHY9MCxjW3M+PjJdPUJvKGNbbT4+Ml18MCxyLGNbdCsyND4+Ml18MCxjW3QrMjQrND4+Ml18MCxjW3QrMzY+PjJdfDAsY1t0KzQwPj4yXXwwKXwwLChjW3M+PjJdfDApIT0wKTowKWJyZWFrO2Nbcz4+Ml09Q28odCl8MH1pZighKGNbKGNbbT4+Ml18MCkrND4+Ml18MCkpe3U9dCsxNnwwO0FvKGNbbT4+Ml18MCxhW2Nbaz4+Ml0+PjBdfDAsY1t1Pj4yXXwwLGNbdSs0Pj4yXXwwKTt1PXQrMTZ8MDtmPWNbdSs0Pj4yXXwwO3Y9Y1twPj4yXXwwO2Nbdj4+Ml09Y1t1Pj4yXTtjW3YrND4+Ml09Zn1Ebyh0KTtLZChjW3I+PjJdfDApO2Nbaj4+Ml09Y1tzPj4yXTt2PWNbaj4+Ml18MDtpPXc7cmV0dXJuIHZ8MH1mdW5jdGlvbiB5byhiLGQsZSl7Yj1ifDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MDtqPWk7aT1pKzE2fDA7aD1qKzh8MDtmPWorNHwwO2c9ajtjW2g+PjJdPWI7Y1tmPj4yXT1kO2NbZz4+Ml09ZTtkPWNbaD4+Ml18MDtlPWQrNDh8MDtkb3tjW2Q+PjJdPTA7ZD1kKzR8MH13aGlsZSgoZHwwKTwoZXwwKSk7Y1tjW2g+PjJdPj4yXT1jW2Y+PjJdO2NbKGNbaD4+Ml18MCkrND4+Ml09Y1tnPj4yXTtkPWNbaD4+Ml18MDtpZihhW2NbY1toPj4yXT4+Ml0+PjBdfDApe2c9MSsoX2woKGNbZD4+Ml18MCkrMXwwLChjW2g+PjJdfDApKzE2fDApfDApfDA7Y1soY1toPj4yXXwwKSs4Pj4yXT1nO2g9Y1toPj4yXXwwO2g9Q28oaCl8MDtpPWo7cmV0dXJuIGh8MH1lbHNle2NbZCs4Pj4yXT0xO2g9Y1toPj4yXXwwO2g9Q28oaCl8MDtpPWo7cmV0dXJuIGh8MH1yZXR1cm4gMH1mdW5jdGlvbiB6byhhLGIsZCxlKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wO2o9aTtpPWkrMzJ8MDttPWorMjB8MDtmPWorMTZ8MDtsPWorMTJ8MDtnPWorOHwwO2s9ais0fDA7aD1qO2NbbT4+Ml09YTtjW2Y+PjJdPWI7Y1tsPj4yXT1kO2NbZz4+Ml09ZTtjW2s+PjJdPShjW2Y+PjJdfDApPChjW2c+PjJdfDApP2NbZj4+Ml18MDpjW2c+PjJdfDA7Y1toPj4yXT1lUihjW20+PjJdfDAsY1tsPj4yXXwwLGNbaz4+Ml18MCl8MDtpZihjW2g+PjJdfDApe209Y1toPj4yXXwwO2k9ajtyZXR1cm4gbXwwfWNbaD4+Ml09KGNbZj4+Ml18MCktKGNbZz4+Ml18MCk7bT1jW2g+PjJdfDA7aT1qO3JldHVybiBtfDB9ZnVuY3Rpb24gQW8oYixkLGUsZil7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MDtqPWk7aT1pKzE2fDA7Zz1qKzEyfDA7az1qKzh8MDtoPWo7Y1tnPj4yXT1iO2Nbaz4+Ml09ZDtiPWg7Y1tiPj4yXT1lO2NbYis0Pj4yXT1mO2FbY1tjW2c+PjJdPj4yXT4+MF09Y1trPj4yXTtiPWg7ZT1jW2c+PjJdfDA7aWYoKGNbYj4+Ml18MCkhPTB8KGNbYis0Pj4yXXwwKSE9MCl7az1oO2s9MSsoS2woKGNbZT4+Ml18MCkrMXwwLGNbaz4+Ml18MCxjW2srND4+Ml18MCl8MCl8MDtjWyhjW2c+PjJdfDApKzQ+PjJdPWs7aT1qO3JldHVybn1lbHNle2NbZSs0Pj4yXT0xO2k9ajtyZXR1cm59fWZ1bmN0aW9uIEJvKGEsYixkLGUsZixnKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDt2YXIgaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTA7dD1pO2k9aSs0OHwwO2g9dCs0MHwwO2o9dCszNnwwO2s9dCszMnwwO2w9dCsyOHwwO209dCsyNHwwO249dCsyMHwwO289dCsxNnwwO3M9dCsxMnwwO3A9dCs4fDA7cT10KzR8MDtyPXQ7Y1tqPj4yXT1hO2Nbaz4+Ml09YjtjW2w+PjJdPWQ7Y1ttPj4yXT1lO2Nbbj4+Ml09ZjtjW28+PjJdPWc7Y1tzPj4yXT0wO2NbcD4+Ml09KGNbKGNbaz4+Ml18MCkrND4+Ml18MCk9PTAmMTt0byhjW2s+PjJdfDAsY1ttPj4yXXwwLHMpO2lmKGNbcz4+Ml18MCl7Y1toPj4yXT1jW3M+PjJdO2Q9Y1toPj4yXXwwO2k9dDtyZXR1cm4gZHwwfWNbcT4+Ml09TWwoY1tjW2s+PjJdPj4yXXwwLGNbKGNbaz4+Ml18MCkrND4+Ml18MCxjW2w+PjJdfDAsY1ttPj4yXXwwKXwwO2Nbcj4+Ml09KGNbbT4+Ml18MCktKGNbcT4+Ml18MCk7VFIoY1tjW2s+PjJdPj4yXXwwLGNbbD4+Ml18MCxjW20+PjJdfDApfDA7Y1soY1trPj4yXXwwKSs0Pj4yXT1jW20+PjJdO2lmKCEoY1twPj4yXXwwKSl7cz1jW3E+PjJdfDA7cz1LbCgoY1tjW2o+PjJdPj4yXXwwKSsoY1soY1tqPj4yXXwwKSs0Pj4yXXwwKXwwLHMsKChzfDApPDApPDwzMT4+MzEpfDA7ZD0oY1tqPj4yXXwwKSs0fDA7Y1tkPj4yXT0oY1tkPj4yXXwwKStzfXM9Y1tyPj4yXXwwO3M9S2woKGNbY1tqPj4yXT4+Ml18MCkrKGNbKGNbaj4+Ml18MCkrND4+Ml18MCl8MCxzLCgoc3wwKTwwKTw8MzE+PjMxKXwwO2Q9KGNbaj4+Ml18MCkrNHwwO2NbZD4+Ml09KGNbZD4+Ml18MCkrcztUUigoY1tjW2o+PjJdPj4yXXwwKSsoY1soY1tqPj4yXXwwKSs0Pj4yXXwwKXwwLChjW2w+PjJdfDApKyhjW3E+PjJdfDApfDAsY1tyPj4yXXwwKXwwO2Q9KGNbaj4+Ml18MCkrNHwwO2NbZD4+Ml09KGNbZD4+Ml18MCkrKGNbcj4+Ml18MCk7aWYoY1tuPj4yXXwwKXtzPWNbbz4+Ml18MDtzPUtsKChjW2Nbaj4+Ml0+PjJdfDApKyhjWyhjW2o+PjJdfDApKzQ+PjJdfDApfDAscywoKHN8MCk8MCk8PDMxPj4zMSl8MDtkPShjW2o+PjJdfDApKzR8MDtjW2Q+PjJdPShjW2Q+PjJdfDApK3M7VFIoKGNbY1tqPj4yXT4+Ml18MCkrKGNbKGNbaj4+Ml18MCkrND4+Ml18MCl8MCxjW24+PjJdfDAsY1tvPj4yXXwwKXwwO2Q9KGNbaj4+Ml18MCkrNHwwO2NbZD4+Ml09KGNbZD4+Ml18MCkrKGNbbz4+Ml18MCl9Y1toPj4yXT0wO2Q9Y1toPj4yXXwwO2k9dDtyZXR1cm4gZHwwfWZ1bmN0aW9uIENvKGEpe2E9YXwwO3ZhciBiPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTA7aj1pO2k9aSszMnwwO2c9aisxNnwwO2I9aisxMnwwO2U9ais4fDA7Zj1qKzR8MDtoPWo7Y1tnPj4yXT1hO2NbYj4+Ml09KGNbKGNbZz4+Ml18MCkrMjQrND4+Ml18MCk9PTAmMTtjW2U+PjJdPTA7Y1tmPj4yXT0wO2NbaD4+Ml09MDthPShjW2c+PjJdfDApKzE2fDA7aWYoKChjW2E+PjJdfDApIT0wfChjW2ErND4+Ml18MCkhPTApJihjW2I+PjJdfDApPT0wKXthPShjW2c+PjJdfDApKzE2fDA7az1hO2s9UlIoY1trPj4yXXwwLGNbays0Pj4yXXwwLDEsMCl8MDtjW2E+PjJdPWs7Y1thKzQ+PjJdPUN9aWYoKGNbKGNbZz4+Ml18MCkrOD4+Ml18MCk+PShjWyhjW2c+PjJdfDApKzQ+PjJdfDApKXtjW2NbZz4+Ml0+PjJdPTA7az1jW2g+PjJdfDA7aT1qO3JldHVybiBrfDB9aWYoIShjW2I+PjJdfDApKXtiPShjW2NbZz4+Ml0+PjJdfDApKyhjWyhjW2c+PjJdfDApKzg+PjJdfDApfDA7aWYoKGRbKGNbY1tnPj4yXT4+Ml18MCkrKGNbKGNbZz4+Ml18MCkrOD4+Ml18MCk+PjBdfDApJjEyOCliPSRsKGIsZSl8MDtlbHNle2NbZT4+Ml09ZFtiPj4wXTtiPTF9az0oY1tnPj4yXXwwKSs4fDA7Y1trPj4yXT0oY1trPj4yXXwwKStifWI9KGNbY1tnPj4yXT4+Ml18MCkrKGNbKGNbZz4+Ml18MCkrOD4+Ml18MCl8MDtpZigoZFsoY1tjW2c+PjJdPj4yXXwwKSsoY1soY1tnPj4yXXwwKSs4Pj4yXXwwKT4+MF18MCkmMTI4KWI9JGwoYixmKXwwO2Vsc2V7Y1tmPj4yXT1kW2I+PjBdO2I9MX1rPShjW2c+PjJdfDApKzh8MDtjW2s+PjJdPShjW2s+PjJdfDApK2I7dG8oKGNbZz4+Ml18MCkrMjR8MCwoY1tlPj4yXXwwKSsoY1tmPj4yXXwwKXwwLGgpO2lmKGNbaD4+Ml18MCl7az1jW2g+PjJdfDA7aT1qO3JldHVybiBrfDB9VFIoKGNbKGNbZz4+Ml18MCkrMjQ+PjJdfDApKyhjW2U+PjJdfDApfDAsKGNbY1tnPj4yXT4+Ml18MCkrKGNbKGNbZz4+Ml18MCkrOD4+Ml18MCl8MCxjW2Y+PjJdfDApfDA7Y1soY1tnPj4yXXwwKSsyNCs0Pj4yXT0oY1tlPj4yXXwwKSsoY1tmPj4yXXwwKTtrPShjW2c+PjJdfDApKzh8MDtjW2s+PjJdPShjW2s+PjJdfDApKyhjW2Y+PjJdfDApO2s9KGNbZz4+Ml18MCkrMTZ8MDtpZighKChjW2s+PjJdfDApPT0wJihjW2srND4+Ml18MCk9PTApKXtrPWNbaD4+Ml18MDtpPWo7cmV0dXJuIGt8MH1iPShjW2NbZz4+Ml0+PjJdfDApKyhjWyhjW2c+PjJdfDApKzg+PjJdfDApfDA7aWYoKGRbKGNbY1tnPj4yXT4+Ml18MCkrKGNbKGNbZz4+Ml18MCkrOD4+Ml18MCk+PjBdfDApJjEyOCliPSRsKGIsKGNbZz4+Ml18MCkrNDB8MCl8MDtlbHNle2NbKGNbZz4+Ml18MCkrNDA+PjJdPWRbYj4+MF07Yj0xfWs9KGNbZz4+Ml18MCkrOHwwO2Nbaz4+Ml09KGNbaz4+Ml18MCkrYjtjWyhjW2c+PjJdfDApKzM2Pj4yXT0oY1tjW2c+PjJdPj4yXXwwKSsoY1soY1tnPj4yXXwwKSs4Pj4yXXwwKTtrPShjW2c+PjJdfDApKzh8MDtjW2s+PjJdPShjW2s+PjJdfDApKyhjWyhjW2c+PjJdfDApKzQwPj4yXXwwKTtrPWNbaD4+Ml18MDtpPWo7cmV0dXJuIGt8MH1mdW5jdGlvbiBEbyhhKXthPWF8MDt2YXIgYj0wLGQ9MDtiPWk7aT1pKzE2fDA7ZD1iO2NbZD4+Ml09YTtLZChjWyhjW2Q+PjJdfDApKzI0Pj4yXXwwKTtpPWI7cmV0dXJufWZ1bmN0aW9uIEVvKGIsZCxlLGYpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MDt2PWk7aT1pKzY0fDA7dD12KzYwfDA7Zz12KzU2fDA7aD12KzUyfDA7aj12KzQ4fDA7az12KzQ0fDA7bj12Kzh8MDtsPXYrNDB8MDttPXY7cz12KzM2fDA7dT12KzMyfDA7bz12KzI4fDA7cT12KzI0fDA7cD12KzIwfDA7cj12KzE2fDA7Y1tnPj4yXT1iO2NbaD4+Ml09ZDtjW2o+PjJdPWU7Y1trPj4yXT1mO2I9KGNbaD4+Ml18MCkrNTZ8MDtkPWNbYis0Pj4yXXwwO2U9bjtjW2U+PjJdPWNbYj4+Ml07Y1tlKzQ+PjJdPWQ7Y1tsPj4yXT0xO3doaWxlKDEpe2lmKChjW2w+PjJdfDApPj0xNil7Zz0xNjticmVha31lPW07Y1tlPj4yXT0wO2NbZSs0Pj4yXT0wO2Nbcz4+Ml09KGNbaD4+Ml18MCkrNTYrKGNbbD4+Ml08PDUpO2NbdT4+Ml09MDtjW28+PjJdPU1sKGNbKGNbcz4+Ml18MCkrOD4+Ml18MCxjWyhjW3M+PjJdfDApKzgrND4+Ml18MCxjW2o+PjJdfDAsY1trPj4yXXwwKXwwO2NbcT4+Ml09KGNbaz4+Ml18MCktKGNbbz4+Ml18MCk7ZT1jW28+PjJdfDA7Y1twPj4yXT1KbChlLCgoZXwwKTwwKTw8MzE+PjMxKXwwO2U9Y1txPj4yXXwwO2U9SmwoZSwoKGV8MCk8MCk8PDMxPj4zMSl8MDtjW3A+PjJdPShjW3A+PjJdfDApKyhlKyhjW3E+PjJdfDApKTtpZigoY1soY1tzPj4yXXwwKSs4KzQ+PjJdfDApIT0wPygoY1soY1tzPj4yXXwwKSsyMCs0Pj4yXXwwKSsoY1twPj4yXXwwKXwwKT4oY1soY1tnPj4yXXwwKSsyMjQ+PjJdfDApOjApe2Q9Y1tzPj4yXXwwO2NbdT4+Ml09RmwoY1tnPj4yXXwwLGNbZD4+Ml18MCxjW2QrND4+Ml18MCxjWyhjW3M+PjJdfDApKzIwPj4yXXwwLGNbKGNbcz4+Ml18MCkrMjArND4+Ml18MCl8MDthW2NbKGNbcz4+Ml18MCkrMjA+PjJdPj4wXT1jW2w+PjJdO2Q9KGNbKGNbcz4+Ml18MCkrMjA+PjJdfDApKzF8MDtiPW47Yj1SUihjW2I+PjJdfDAsY1tiKzQ+PjJdfDAsMSwwKXwwO2I9MSsoS2woZCxiLEMpfDApfDA7Y1soY1tzPj4yXXwwKSsyMCs0Pj4yXT1iO2I9Y1tzPj4yXXwwO2Q9Y1tiKzQ+PjJdfDA7ZT1tO2NbZT4+Ml09Y1tiPj4yXTtjW2UrND4+Ml09ZDtlPWNbcz4+Ml18MDtkPWU7ZD1SUihjW2Q+PjJdfDAsY1tkKzQ+PjJdfDAsMSwwKXwwO2NbZT4+Ml09ZDtjW2UrND4+Ml09QztjWyhjW3M+PjJdfDApKzgrND4+Ml09MH1lbHNle2Nbcj4+Ml09KGNbcz4+Ml18MCkrMjA7aWYoKGNbKGNbcj4+Ml18MCkrND4+Ml18MCk9PTA/KHRvKGNbcj4+Ml18MCxjWyhjW2c+PjJdfDApKzIyND4+Ml18MCx1KSwoY1t1Pj4yXXwwKT09MCk6MCl7YVtjW2Nbcj4+Ml0+PjJdPj4wXT1jW2w+PjJdO2U9bjtlPTErKEtsKChjW2Nbcj4+Ml0+PjJdfDApKzF8MCxjW2U+PjJdfDAsY1tlKzQ+PjJdfDApfDApfDA7Y1soY1tyPj4yXXwwKSs0Pj4yXT1lfXRvKGNbcj4+Ml18MCwoY1soY1tyPj4yXXwwKSs0Pj4yXXwwKSsoY1twPj4yXXwwKXwwLHUpO3RvKChjW3M+PjJdfDApKzh8MCxjW2s+PjJdfDAsdSk7aWYoIShjW3U+PjJdfDApKXtpZihjWyhjW3M+PjJdfDApKzgrND4+Ml18MCl7ZD1jW28+PjJdfDA7ZD1LbCgoY1tjW3I+PjJdPj4yXXwwKSsoY1soY1tyPj4yXXwwKSs0Pj4yXXwwKXwwLGQsKChkfDApPDApPDwzMT4+MzEpfDA7ZT0oY1tyPj4yXXwwKSs0fDA7Y1tlPj4yXT0oY1tlPj4yXXwwKStkfWQ9Y1txPj4yXXwwO2Q9S2woKGNbY1tyPj4yXT4+Ml18MCkrKGNbKGNbcj4+Ml18MCkrND4+Ml18MCl8MCxkLCgoZHwwKTwwKTw8MzE+PjMxKXwwO2U9KGNbcj4+Ml18MCkrNHwwO2NbZT4+Ml09KGNbZT4+Ml18MCkrZDtUUigoY1tjW3I+PjJdPj4yXXwwKSsoY1soY1tyPj4yXXwwKSs0Pj4yXXwwKXwwLChjW2o+PjJdfDApKyhjW28+PjJdfDApfDAsY1txPj4yXXwwKXwwO2U9KGNbcj4+Ml18MCkrNHwwO2NbZT4+Ml09KGNbZT4+Ml18MCkrKGNbcT4+Ml18MCk7VFIoY1soY1tzPj4yXXwwKSs4Pj4yXXwwLGNbaj4+Ml18MCxjW2s+PjJdfDApfDA7Y1soY1tzPj4yXXwwKSs4KzQ+PjJdPWNbaz4+Ml19fWU9bTtpZigoY1t1Pj4yXXwwKSE9MHwoY1tlPj4yXXwwKT09MCYoY1tlKzQ+PjJdfDApPT0wKXtnPTE0O2JyZWFrfWI9bTtkPWNbYis0Pj4yXXwwO2U9bjtjW2U+PjJdPWNbYj4+Ml07Y1tlKzQ+PjJdPWQ7Y1tsPj4yXT0oY1tsPj4yXXwwKSsxfWlmKChnfDApPT0xNCl7Y1t0Pj4yXT1jW3U+PjJdO3U9Y1t0Pj4yXXwwO2k9djtyZXR1cm4gdXwwfWVsc2UgaWYoKGd8MCk9PTE2KXtjW3Q+PjJdPTA7dT1jW3Q+PjJdfDA7aT12O3JldHVybiB1fDB9cmV0dXJuIDB9ZnVuY3Rpb24gRm8oYSxiLGQsZSl7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MDtsPWk7aT1pKzMyfDA7bT1sKzI0fDA7Zj1sO2c9bCsyMHwwO2g9bCsxNnwwO2o9bCsxMnwwO2s9bCs4fDA7Y1ttPj4yXT1hO2E9ZjtjW2E+PjJdPWI7Y1thKzQ+PjJdPWQ7Y1tnPj4yXT1lO2NbaD4+Ml09MDtjW2o+PjJdPTA7Y1trPj4yXT1wbChjW20+PjJdfDAsMzQsaiwwKXwwO2lmKGNbaz4+Ml18MCl7ZT1jW2g+PjJdfDA7bT1jW2c+PjJdfDA7Y1ttPj4yXT1lO209Y1trPj4yXXwwO2k9bDtyZXR1cm4gbXwwfW09ZjtMZShjW2o+PjJdfDAsMSxjW20+PjJdfDAsY1ttKzQ+PjJdfDApfDA7aWYoMTAwPT0odGUoY1tqPj4yXXwwKXwwKSljW2g+PjJdPTE7Y1trPj4yXT1ZZChjW2o+PjJdfDApfDA7ZT1jW2g+PjJdfDA7bT1jW2c+PjJdfDA7Y1ttPj4yXT1lO209Y1trPj4yXXwwO2k9bDtyZXR1cm4gbXwwfWZ1bmN0aW9uIEdvKGIsZCxlLGYpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wO3Q9aTtpPWkrNjR8MDt1PXQrNDh8MDtnPXQrNDR8MDtoPXQrNDB8MDtqPXQrMzZ8MDtxPXQrMzJ8MDtzPXQrMjh8MDtvPXQrMjR8MDtsPXQrMjB8MDtrPXQrMTZ8MDtwPXQrMTJ8MDttPXQrOHwwO3I9dCs0fDA7bj10O2NbdT4+Ml09YjtjW2c+PjJdPWQ7Y1toPj4yXT1lO2Nbaj4+Ml09ZjtjW3E+PjJdPWNbdT4+Ml07Y1tzPj4yXT0wO2Nbbz4+Ml09MDtjW2w+PjJdPTA7Y1trPj4yXT0wO2NbcD4+Ml09MDtjW20+PjJdPTA7aWYoKChjW2c+PjJdfDApPjE/KGVlKGNbY1toPj4yXT4+Ml18MCl8MCk9PTU6MCk/KGVlKGNbKGNbaD4+Ml18MCkrKChjWyhjW3E+PjJdfDApKzI0Pj4yXXwwKSsyPDwyKT4+Ml18MCl8MCkhPTU6MCl7Y1tzPj4yXT1IbyhjW3E+PjJdfDAsY1soY1toPj4yXXwwKSsoKGNbKGNbcT4+Ml18MCkrMjQ+PjJdfDApKzI8PDIpPj4yXXwwKXwwO3U9Y1trPj4yXXwwO0tkKHUpO3U9Y1txPj4yXXwwO3ltKHUpO3U9Y1tzPj4yXXwwO2k9dDtyZXR1cm4gdXwwfWlmKChjW2c+PjJdfDApPjE/KGNlKGNbKGNbaD4+Ml18MCkrKDIrKGNbKGNbcT4+Ml18MCkrMjQ+PjJdfDApKzI8PDIpPj4yXXwwKXwwKTwwOjApe2Nbcz4+Ml09MTk7dT1jW2s+PjJdfDA7S2QodSk7dT1jW3E+PjJdfDA7eW0odSk7dT1jW3M+PjJdfDA7aT10O3JldHVybiB1fDB9Y1trPj4yXT1JZCgoY1soY1txPj4yXXwwKSsyND4+Ml18MCkrMTw8Mjw8MSl8MDtpZighKGNbaz4+Ml18MCkpe2Nbcz4+Ml09Nzt1PWNbaz4+Ml18MDtLZCh1KTt1PWNbcT4+Ml18MDt5bSh1KTt1PWNbcz4+Ml18MDtpPXQ7cmV0dXJuIHV8MH1jW2w+PjJdPShjW2s+PjJdfDApKygoY1soY1txPj4yXXwwKSsyND4+Ml18MCkrMTw8Mik7VlIoY1trPj4yXXwwLDAsKGNbKGNbcT4+Ml18MCkrMjQ+PjJdfDApKzE8PDI8PDF8MCl8MDtjW3M+PjJdPUlvKGNbcT4+Ml18MCl8MDtpZihjW3M+PjJdfDApe3U9Y1trPj4yXXwwO0tkKHUpO3U9Y1txPj4yXXwwO3ltKHUpO3U9Y1tzPj4yXXwwO2k9dDtyZXR1cm4gdXwwfWRvIGlmKChjW2c+PjJdfDApPjE/KGNbKGNbcT4+Ml18MCkrNDA+PjJdfDApPT0wOjApe2Nbcj4+Ml09Y1soY1toPj4yXXwwKSsoMysoY1soY1txPj4yXXwwKSsyND4+Ml18MCk8PDIpPj4yXTtpZigoZWUoY1tyPj4yXXwwKXwwKT09NSljW3I+PjJdPWNbKGNbaD4+Ml18MCkrND4+Ml07aWYoKGVlKGNbcj4+Ml18MCl8MCkhPTUpe2lmKChlZShjW2NbaD4+Ml0+PjJdfDApfDApIT01PyhmPWRlKGNbY1toPj4yXT4+Ml18MCl8MCx1PUMsYj1kZShjW3I+PjJdfDApfDAsISgoZnwwKSE9KGJ8MCl8KHV8MCkhPShDfDApKSk6MClicmVhazt1PShnZihjWyhjW3E+PjJdfDApKzEyPj4yXXwwKXwwKT09NTtlPWNbcT4+Ml18MDtpZih1KXtjW3M+PjJdPUpvKGUsY1tyPj4yXXwwLHAsY1trPj4yXXwwKXwwO2JyZWFrfWVsc2V7Y1tzPj4yXT1LbyhlLGNbaD4+Ml18MCxjW2o+PjJdfDApfDA7Y1ttPj4yXT0xO2JyZWFrfX19d2hpbGUoMCk7aWYoY1tzPj4yXXwwKXt1PWNbaz4+Ml18MDtLZCh1KTt1PWNbcT4+Ml18MDt5bSh1KTt1PWNbcz4+Ml18MDtpPXQ7cmV0dXJuIHV8MH1pZigoZWUoY1tjW2g+PjJdPj4yXXwwKXwwKSE9NSl7Y1tzPj4yXT1KbyhjW3E+PjJdfDAsY1tjW2g+PjJdPj4yXXwwLHAsY1trPj4yXXwwKXwwO2Nbbz4+Ml09MX1pZigoY1tnPj4yXXwwKT4xJihjW3M+PjJdfDApPT0wKXtjW24+PjJdPWNlKGNbKGNbaD4+Ml18MCkrKDIrKGNbKGNbcT4+Ml18MCkrMjQ+PjJdfDApKzI8PDIpPj4yXXwwKXwwO2lmKCgoY1ttPj4yXXwwKT09MD8oY1tzPj4yXT1LbyhjW3E+PjJdfDAsY1toPj4yXXwwLGNbaj4+Ml18MCl8MCwoY1tzPj4yXXwwKT09MTkpOjApPyhjWyhjW3E+PjJdfDApKzQwPj4yXXwwKT09MDowKWNbcz4+Ml09MjY3O2RvIGlmKCEoY1tzPj4yXXwwKSl7aWYoKGNbbz4+Ml18MCkhPTA/KHI9Y1tqPj4yXXwwLHU9KGNbcT4+Ml18MCkrMjY0fDAsISgoY1tyPj4yXXwwKSE9KGNbdT4+Ml18MCk/MTooY1tyKzQ+PjJdfDApIT0oY1t1KzQ+PjJdfDApKSk6MClicmVhazt1PWNbaj4+Ml18MDtjW3M+PjJdPUxvKGNbcT4+Ml18MCwwLGNbbj4+Ml18MCxjW3U+PjJdfDAsY1t1KzQ+PjJdfDApfDB9d2hpbGUoMCk7aWYoIShjW3M+PjJdfDApKWNbcz4+Ml09TW8oY1txPj4yXXwwLGNbbj4+Ml18MCxjW2g+PjJdfDAsY1tsPj4yXXwwKXwwO2lmKGFbKGNbcT4+Ml18MCkrMjMwPj4wXXwwKU5vKHMsY1txPj4yXXwwLGNbbD4+Ml18MCk7Y1twPj4yXT0oY1twPj4yXXwwKSsxfWlmKCEoYVsoY1txPj4yXXwwKSsyMjg+PjBdfDApKXt1PWNbaz4+Ml18MDtLZCh1KTt1PWNbcT4+Ml18MDt5bSh1KTt1PWNbcz4+Ml18MDtpPXQ7cmV0dXJuIHV8MH1PbyhzLGNbcT4+Ml18MCxjW2w+PjJdfDAsY1trPj4yXXwwLGNbcD4+Ml18MCk7dT1jW2s+PjJdfDA7S2QodSk7dT1jW3E+PjJdfDA7eW0odSk7dT1jW3M+PjJdfDA7aT10O3JldHVybiB1fDB9ZnVuY3Rpb24gSG8oYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MDtrPWk7aT1pKzMyfDA7ZD1rKzIwfDA7ZT1rKzE2fDA7bD1rKzEyfDA7Zz1rKzh8MDtoPWsrNHwwO2Y9aztjW2U+PjJdPWE7Y1tsPj4yXT1iO2NbaD4+Ml09JGQoY1tsPj4yXXwwKXwwO2NbZj4+Ml09YWUoY1tsPj4yXXwwKXwwO2lmKCEoY1toPj4yXXwwKSl7Y1tkPj4yXT03O2w9Y1tkPj4yXXwwO2k9aztyZXR1cm4gbHwwfWlmKChjW2Y+PjJdfDApPT04PzA9PSh6ZChjW2g+PjJdfDAsMjA1MTIsOCl8MCk6MCljW2c+PjJdPVRuKGNbZT4+Ml18MCwwKXwwO2Vsc2Ugaj02O2RvIGlmKChqfDApPT02KXtpZigoY1tmPj4yXXwwKT09Nz8wPT0oemQoY1toPj4yXXwwLDIzNDk1LDcpfDApOjApe2NbZz4+Ml09WW8oY1tlPj4yXXwwKXwwO2JyZWFrfWlmKChjW2Y+PjJdfDApPT0xNT8wPT0oemQoY1toPj4yXXwwLDIzNTAzLDE1KXwwKTowKXtjW2c+PjJdPVpvKGNbZT4+Ml18MCl8MDticmVha31pZigoY1tmPj4yXXwwKT42PzA9PSh6ZChjW2g+PjJdfDAsMjM1MTksNil8MCk6MCl7Y1tnPj4yXT1fbyhjW2U+PjJdfDAsKGNbaD4+Ml18MCkrNnwwKXwwO2JyZWFrfWlmKChjW2Y+PjJdfDApPjEwPzA9PSh6ZChjW2g+PjJdfDAsMjM1MjYsMTApfDApOjApe2NbZz4+Ml09JG8oY1tlPj4yXXwwLChjW2g+PjJdfDApKzEwfDApfDA7YnJlYWt9Y1tnPj4yXT0xfXdoaWxlKDApO2NbZD4+Ml09Y1tnPj4yXTtsPWNbZD4+Ml18MDtpPWs7cmV0dXJuIGx8MH1mdW5jdGlvbiBJbyhhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wO2Y9aTtpPWkrMTZ8MDtiPWYrOHwwO2U9Zis0fDA7ZD1mO2NbYj4+Ml09YTtjW2U+PjJdPTA7aWYoKGNbKGNbYj4+Ml18MCkrMjYwPj4yXXwwKT09MD8oY1tlPj4yXT1wbChjW2I+PjJdfDAsMTYsZCwwKXwwLChjW2U+PjJdfDApPT0wKTowKXtNZShjW2Q+PjJdfDAsMSl8MDt0ZShjW2Q+PjJdfDApfDA7Y1tlPj4yXT1ZZChjW2Q+PjJdfDApfDB9aT1mO3JldHVybiBjW2U+PjJdfDB9ZnVuY3Rpb24gSm8oYixkLGUsZil7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTA7bj1pO2k9aSszMnwwO2c9bisyNHwwO2g9bisyMHwwO2o9bisxNnwwO2s9bisxMnwwO209bis4fDA7bz1uKzR8MDtsPW47Y1tnPj4yXT1iO2NbaD4+Ml09ZDtjW2o+PjJdPWU7Y1trPj4yXT1mO2NbbT4+Ml09MDtjW28+PjJdPTA7VG8obSxjW2c+PjJdfDAsY1toPj4yXXwwLGNbaz4+Ml18MCxvKTtpZighKChjW28+PjJdfDApIT0wJihjW20+PjJdfDApPT0wKSl7bz1jW20+PjJdfDA7aT1uO3JldHVybiBvfDB9Y1tsPj4yXT0wO2NbbT4+Ml09VW8oY1tnPj4yXXwwLGNbaD4+Ml18MCxsKXwwO2lmKGNbbT4+Ml18MCl7bz1jW20+PjJdfDA7aT1uO3JldHVybiBvfDB9aWYoY1tsPj4yXXwwKXtjW20+PjJdPVZvKGNbZz4+Ml18MCwxKXwwO2NbY1tqPj4yXT4+Ml09MDtWUihjW2s+PjJdfDAsMCwoY1soY1tnPj4yXXwwKSsyND4+Ml18MCkrMTw8Mjw8MXwwKXwwO289Y1ttPj4yXXwwO2k9bjtyZXR1cm4gb3wwfWNbY1tqPj4yXT4+Ml09KGNbY1tqPj4yXT4+Ml18MCktMTtpZighKGNbKGNbZz4+Ml18MCkrNDA+PjJdfDApKVdvKG0sY1tnPj4yXXwwLDAsaCk7aWYoIShhWyhjW2c+PjJdfDApKzIzMD4+MF18MCkpe289Y1ttPj4yXXwwO2k9bjtyZXR1cm4gb3wwfVdvKG0sY1tnPj4yXXwwLDE5LGgpO289Y1ttPj4yXXwwO2k9bjtyZXR1cm4gb3wwfWZ1bmN0aW9uIEtvKGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MDttPWk7aT1pKzMyfDA7ZT1tKzI0fDA7Zj1tKzIwfDA7Zz1tKzE2fDA7aD1tKzEyfDA7bD1tKzh8MDtqPW0rNHwwO2s9bTtjW2Y+PjJdPWE7Y1tnPj4yXT1iO2NbaD4+Ml09ZDtiPWNbZj4+Ml18MDtpZihjWyhjW2Y+PjJdfDApKzQwPj4yXXwwKXtjW2s+PjJdPWNbKGNbZz4+Ml18MCkrKChjW2IrMjQ+PjJdfDApKzM8PDIpPj4yXTtpZigoZWUoY1trPj4yXXwwKXwwKT09NSljW2s+PjJdPWNbKGNbZz4+Ml18MCkrND4+Ml07aWYoKGVlKGNbaz4+Ml18MCl8MCkhPTEpe2NbZT4+Ml09MTk7bD1jW2U+PjJdfDA7aT1tO3JldHVybiBsfDB9ZWxzZXtrPWRlKGNbaz4+Ml18MCl8MDtsPWNbaD4+Ml18MDtjW2w+PjJdPWs7Y1tsKzQ+PjJdPUM7Y1tlPj4yXT0wO2w9Y1tlPj4yXXwwO2k9bTtyZXR1cm4gbHwwfX1jW2w+PjJdPXBsKGIsMTgsaiwoY1tnPj4yXXwwKSs0fDApfDA7aWYoKGNbbD4+Ml18MCk9PTA/KGNbKGNbZj4+Ml18MCkrNDQ+PjJdfDApIT0wOjApe2Q9Y1tqPj4yXXwwO2s9KGNbKGNbZj4+Ml18MCkrMjQ+PjJdfDApKzJ8MDtjW2w+PjJdPUtlKGQsayxjZShjWyhjW2c+PjJdfDApKygoY1soY1tmPj4yXXwwKSsyND4+Ml18MCkrNDw8Mik+PjJdfDApfDApfDB9aWYoY1tsPj4yXXwwKXtjW2U+PjJdPWNbbD4+Ml07bD1jW2U+PjJdfDA7aT1tO3JldHVybiBsfDB9aWYoNSE9KGVlKGNbKGNbZz4+Ml18MCkrKDMrKGNbKGNbZj4+Ml18MCkrMjQ+PjJdfDApPDwyKT4+Ml18MCl8MCkpe2lmKDU9PShlZShjW2NbZz4+Ml0+PjJdfDApfDApPzUhPShlZShjWyhjW2c+PjJdfDApKzQ+PjJdfDApfDApOjApe2NbZT4+Ml09MTtsPWNbZT4+Ml18MDtpPW07cmV0dXJuIGx8MH1jW2w+PjJdPU9lKGNbaj4+Ml18MCwxLGNbKGNbZz4+Ml18MCkrKDMrKGNbKGNbZj4+Ml18MCkrMjQ+PjJdfDApPDwyKT4+Ml18MCl8MDtpZihjW2w+PjJdfDApe2NbZT4+Ml09Y1tsPj4yXTtsPWNbZT4+Ml18MDtpPW07cmV0dXJuIGx8MH19dGUoY1tqPj4yXXwwKXwwO2NbbD4+Ml09WWQoY1tqPj4yXXwwKXwwO2o9cGYoY1soY1tmPj4yXXwwKSsxMj4+Ml18MCl8MDtrPWNbaD4+Ml18MDtjW2s+PjJdPWo7Y1trKzQ+PjJdPUM7Y1tlPj4yXT1jW2w+PjJdO2w9Y1tlPj4yXXwwO2k9bTtyZXR1cm4gbHwwfWZ1bmN0aW9uIExvKGEsYixkLGUsZil7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTA7bz1pO2k9aSszMnwwO2c9bysyNHwwO2g9bysyMHwwO2o9bysxNnwwO2s9bysxMnwwO2w9bzttPW8rOHwwO2NbaD4+Ml09YTtjW2o+PjJdPWI7Y1trPj4yXT1kO2Q9bDtjW2Q+PjJdPWU7Y1tkKzQ+PjJdPWY7ZD1sO2Y9Y1tkKzQ+PjJdfDA7YT0oY1toPj4yXXwwKSsyNjR8MDtiPWNbYSs0Pj4yXXwwO2RvIGlmKCEoKGZ8MCk8KGJ8MCl8KChmfDApPT0oYnwwKT8oY1tkPj4yXXwwKT4+PjA8KGNbYT4+Ml18MCk+Pj4wOjApKSl7ZD1sO2E9KGNbaD4+Ml18MCkrMjY0fDA7aWYoKChjW2Q+PjJdfDApPT0oY1thPj4yXXwwKT8oY1tkKzQ+PjJdfDApPT0oY1thKzQ+PjJdfDApOjApPyhjWyhjW2g+PjJdfDApKzI3Nj4+Ml18MCk9PTA6MCl7bj02O2JyZWFrfWlmKCEoKGNbKGNbaD4+Ml18MCkrMjcyPj4yXXwwKT09KGNbaz4+Ml18MCk/KGNbKGNbaD4+Ml18MCkrMjYwPj4yXXwwKTw9KGNbKGNbaD4+Ml18MCkrMjU2Pj4yXXwwKTowKSluPTZ9ZWxzZSBuPTY7d2hpbGUoMCk7aWYoKG58MCk9PTY/KGNbbT4+Ml09bWwoY1toPj4yXXwwKXwwLChjW20+PjJdfDApIT0wKTowKXtjW2c+PjJdPWNbbT4+Ml07bj1jW2c+PjJdfDA7aT1vO3JldHVybiBufDB9YT1sO209Y1thKzQ+PjJdfDA7bj0oY1toPj4yXXwwKSsyNjR8MDtjW24+PjJdPWNbYT4+Ml07Y1tuKzQ+PjJdPW07Y1soY1toPj4yXXwwKSsyNzI+PjJdPWNbaz4+Ml07Y1soY1toPj4yXXwwKSsyNzY+PjJdPWNbaj4+Ml07Y1tnPj4yXT0wO249Y1tnPj4yXXwwO2k9bztyZXR1cm4gbnwwfWZ1bmN0aW9uIE1vKGEsYixlLGYpe2E9YXwwO2I9YnwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTA7cT1pO2k9aSs0OHwwO289cSszMnwwO2c9cSsyOHwwO2g9cSsyNHwwO2o9cSsyMHwwO2s9cSsxNnwwO2w9cSsxMnwwO209cSs4fDA7bj1xKzR8MDtwPXE7Y1tnPj4yXT1hO2NbaD4+Ml09YjtjW2o+PjJdPWU7Y1trPj4yXT1mO2NbbD4+Ml09Mjt3aGlsZSgxKXtpZigoY1tsPj4yXXwwKT49KChjWyhjW2c+PjJdfDApKzI0Pj4yXXwwKSsyfDApKXtnPTg7YnJlYWt9Y1ttPj4yXT0oY1tsPj4yXXwwKS0yO2lmKCEoZFsoY1soY1tnPj4yXXwwKSszMj4+Ml18MCkrKGNbbT4+Ml18MCk+PjBdfDApKXtjW24+PjJdPSRkKGNbKGNbaj4+Ml18MCkrKGNbbD4+Ml08PDIpPj4yXXwwKXwwO2NbcD4+Ml09Um8oY1tnPj4yXXwwLGNbaD4+Ml18MCxjW24+PjJdfDAsY1ttPj4yXXwwLChjW2s+PjJdfDApKyhjW20+PjJdPDwyKXwwKXwwO2lmKGNbcD4+Ml18MCl7Zz01O2JyZWFrfWI9YWUoY1soY1tqPj4yXXwwKSsoY1tsPj4yXTw8Mik+PjJdfDApfDA7YT0oY1trPj4yXXwwKSsoY1soY1tnPj4yXXwwKSsyND4+Ml08PDIpfDA7Y1thPj4yXT0oY1thPj4yXXwwKStifWNbbD4+Ml09KGNbbD4+Ml18MCkrMX1pZigoZ3wwKT09NSl7Y1tvPj4yXT1jW3A+PjJdO3A9Y1tvPj4yXXwwO2k9cTtyZXR1cm4gcHwwfWVsc2UgaWYoKGd8MCk9PTgpe2Nbbz4+Ml09MDtwPWNbbz4+Ml18MDtpPXE7cmV0dXJuIHB8MH1yZXR1cm4gMH1mdW5jdGlvbiBObyhhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTA7bT1pO2k9aSszMnwwO2U9bSsyNHwwO2Y9bSsyMHwwO2c9bSsxNnwwO2o9bSsxMnwwO2g9bSs4fDA7az1tKzR8MDtsPW07Y1tlPj4yXT1hO2NbZj4+Ml09YjtjW2c+PjJdPWQ7aWYoY1tjW2U+PjJdPj4yXXwwKXtpPW07cmV0dXJufWNbaj4+Ml09SWQoKGNbKGNbZj4+Ml18MCkrMjQ+PjJdfDApKjEwfDApfDA7aWYoIShjW2o+PjJdfDApKXtjW2NbZT4+Ml0+PjJdPTc7aT1tO3JldHVybn1RbyhjWyhjW2Y+PjJdfDApKzI0Pj4yXXwwLGNbZz4+Ml18MCxjW2o+PjJdfDAsaCk7Y1tsPj4yXT1wbChjW2Y+PjJdfDAsMjAsaywwKXwwO2lmKGNbbD4+Ml18MCl7S2QoY1tqPj4yXXwwKTtjW2NbZT4+Ml0+PjJdPWNbbD4+Ml07aT1tO3JldHVybn1lbHNle2w9KGNbZj4+Ml18MCkrMjY0fDA7TGUoY1trPj4yXXwwLDEsY1tsPj4yXXwwLGNbbCs0Pj4yXXwwKXwwO0llKGNbaz4+Ml18MCwyLGNbaj4+Ml18MCxjW2g+PjJdfDAsMTQ4KXwwO3RlKGNbaz4+Ml18MCl8MDtsPVlkKGNbaz4+Ml18MCl8MDtjW2NbZT4+Ml0+PjJdPWw7aT1tO3JldHVybn19ZnVuY3Rpb24gT28oYSxiLGQsZSxmKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MDt1PWk7aT1pKzY0fDA7Zz11KzQ4fDA7aD11KzQ0fDA7aj11KzQwfDA7az11KzM2fDA7bD11KzMyfDA7cT11KzI4fDA7bz11KzI0fDA7bT11KzIwfDA7cj11KzE2fDA7bj11KzEyfDA7cz11Kzh8MDtwPXUrNHwwO3Q9dTtjW2c+PjJdPWE7Y1toPj4yXT1iO2Nbaj4+Ml09ZDtjW2s+PjJdPWU7Y1tsPj4yXT1mO2NbcD4+Ml09KGNbKGNbaD4+Ml18MCkrMjQ+PjJdfDApKzI7aWYoY1tjW2c+PjJdPj4yXXwwKXtpPXU7cmV0dXJufWNbbT4+Ml09SWQoKGNbcD4+Ml18MCkqMTR8MCl8MDtpZighKGNbbT4+Ml18MCkpe2NbY1tnPj4yXT4+Ml09NztpPXU7cmV0dXJufWNbcT4+Ml09KGNbbT4+Ml18MCkrKGNbcD4+Ml08PDIpO2Nbcz4+Ml09cGwoY1toPj4yXXwwLDIyLHIsMCl8MDtpZihjW3M+PjJdfDApe0tkKGNbbT4+Ml18MCk7Y1tjW2c+PjJdPj4yXT1jW3M+PjJdO2k9dTtyZXR1cm59S2UoY1tyPj4yXXwwLDEsMCl8MDtpZigodGUoY1tyPj4yXXwwKXwwKT09MTAwKXtmPWNbcD4+Ml18MDtiPWNbbT4+Ml18MDthPXplKGNbcj4+Ml18MCwwKXwwO1BvKGYsYixhLEFlKGNbcj4+Ml18MCwwKXwwKX1lbHNlIFZSKGNbbT4+Ml18MCwwLGNbcD4+Ml08PDJ8MCl8MDtjW3M+PjJdPVlkKGNbcj4+Ml18MCl8MDtpZihjW3M+PjJdfDApe0tkKGNbbT4+Ml18MCk7Y1tjW2c+PjJdPj4yXT1jW3M+PjJdO2k9dTtyZXR1cm59aWYoKGNbbD4+Ml18MCk8MD8oY1tjW20+PjJdPj4yXXwwKT4+PjA8KDAtKGNbbD4+Ml18MCl8MCk+Pj4wOjApY1tjW20+PjJdPj4yXT0wO2Vsc2V7YT1jW20+PjJdfDA7Y1thPj4yXT0oY1thPj4yXXwwKSsoY1tsPj4yXXwwKX1jW24+PjJdPTA7d2hpbGUoMSl7aWYoKGNbbj4+Ml18MCk+PSgoY1soY1toPj4yXXwwKSsyND4+Ml18MCkrMXwwKSlicmVhaztjW3Q+PjJdPWNbKGNbbT4+Ml18MCkrKChjW24+PjJdfDApKzE8PDIpPj4yXTtpZigoKGNbdD4+Ml18MCkrKGNbKGNbaj4+Ml18MCkrKGNbbj4+Ml08PDIpPj4yXXwwKXwwKT4+PjA8KGNbKGNbaz4+Ml18MCkrKGNbbj4+Ml08PDIpPj4yXXwwKT4+PjApY1t0Pj4yXT0wO2Vsc2UgY1t0Pj4yXT0oY1t0Pj4yXXwwKSsoY1soY1tqPj4yXXwwKSsoY1tuPj4yXTw8Mik+PjJdfDApLShjWyhjW2s+PjJdfDApKyhjW24+PjJdPDwyKT4+Ml18MCk7Y1soY1ttPj4yXXwwKSsoKGNbbj4+Ml18MCkrMTw8Mik+PjJdPWNbdD4+Ml07Y1tuPj4yXT0oY1tuPj4yXXwwKSsxfVFvKGNbcD4+Ml18MCxjW20+PjJdfDAsY1txPj4yXXwwLG8pO2Nbcz4+Ml09cGwoY1toPj4yXXwwLDIzLHIsMCl8MDtpZihjW3M+PjJdfDApe0tkKGNbbT4+Ml18MCk7Y1tjW2c+PjJdPj4yXT1jW3M+PjJdO2k9dTtyZXR1cm59ZWxzZXtLZShjW3I+PjJdfDAsMSwwKXwwO0llKGNbcj4+Ml18MCwyLGNbcT4+Ml18MCxjW28+PjJdfDAsMCl8MDt0ZShjW3I+PjJdfDApfDA7dD1ZZChjW3I+PjJdfDApfDA7Y1tjW2c+PjJdPj4yXT10O0tkKGNbbT4+Ml18MCk7aT11O3JldHVybn19ZnVuY3Rpb24gUG8oYSxiLGQsZSl7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MDttPWk7aT1pKzMyfDA7Zj1tKzI4fDA7Zz1tKzI0fDA7aD1tKzIwfDA7aj1tKzEyfDA7az1tKzh8MDtsPW07Y1tmPj4yXT1hO2NbZz4+Ml09YjtjW2g+PjJdPWQ7Y1ttKzE2Pj4yXT1lO2Nbaz4+Ml09MDtjW2o+PjJdPTA7d2hpbGUoMSl7aWYoKGNbaj4+Ml18MCk+PShjW2Y+PjJdfDApKWJyZWFrO2Q9X2woKGNbaD4+Ml18MCkrKGNbaz4+Ml18MCl8MCxsKXwwO2Nbaz4+Ml09KGNbaz4+Ml18MCkrZDtjWyhjW2c+PjJdfDApKyhjW2o+PjJdPDwyKT4+Ml09Y1tsPj4yXTtjW2o+PjJdPShjW2o+PjJdfDApKzF9aT1tO3JldHVybn1mdW5jdGlvbiBRbyhhLGIsZCxlKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wO209aTtpPWkrMzJ8MDtmPW0rMjB8MDtnPW0rMTZ8MDtoPW0rMTJ8MDtqPW0rOHwwO2s9bSs0fDA7bD1tO2NbZj4+Ml09YTtjW2c+PjJdPWI7Y1toPj4yXT1kO2Nbaj4+Ml09ZTtjW2w+PjJdPTA7Y1trPj4yXT0wO3doaWxlKDEpe2E9Y1tsPj4yXXwwO2lmKChjW2s+PjJdfDApPj0oY1tmPj4yXXwwKSlicmVhaztkPUtsKChjW2g+PjJdfDApK2F8MCxjWyhjW2c+PjJdfDApKyhjW2s+PjJdPDwyKT4+Ml18MCwwKXwwO2NbbD4+Ml09KGNbbD4+Ml18MCkrZDtjW2s+PjJdPShjW2s+PjJdfDApKzF9Y1tjW2o+PjJdPj4yXT1hO2k9bTtyZXR1cm59ZnVuY3Rpb24gUm8oYSxiLGQsZSxmKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTA7Qj1pO2k9aSs4MHwwO2c9Qis3MnwwO2g9Qis2OHwwO2o9Qis2NHwwO2s9Qis2MHwwO2w9Qis1NnwwO209Qis1MnwwO3g9Qis0OHwwO3E9Qis0NHwwO289Qis0MHwwO3A9QiszNnwwO3M9QiszMnwwO3o9QisyOHwwO3I9QisyNHwwO3c9QisyMHwwO3Y9QisxNnwwO3Q9QisxMnwwO3k9Qis4fDA7bj1CKzR8MDt1PUI7Y1toPj4yXT1hO2Nbaj4+Ml09YjtjW2s+PjJdPWQ7Y1tsPj4yXT1lO2NbbT4+Ml09ZjtjW3E+PjJdPTA7Y1tvPj4yXT0wO2NbcD4+Ml09MDtjW3M+PjJdPTA7Y1tyPj4yXT0wO2Nbdz4+Ml09Y1soY1toPj4yXXwwKSszNj4+Ml07Y1t2Pj4yXT1jW2Nbdz4+Ml0+PjJdO2lmKCEoY1trPj4yXXwwKSl7Y1tjW20+PjJdPj4yXT0wO2NbZz4+Ml09MDtBPWNbZz4+Ml18MDtpPUI7cmV0dXJuIEF8MH1jW3g+PjJdPUNuKGNbdz4+Ml18MCxjW2o+PjJdfDAsY1trPj4yXXwwLC0xLHQpfDA7aWYoY1t4Pj4yXXwwKXtjW2c+PjJdPWNbeD4+Ml07QT1jW2c+PjJdfDA7aT1CO3JldHVybiBBfDB9Y1t5Pj4yXT1jWyhjW3Y+PjJdfDApKzIwPj4yXTthOndoaWxlKDEpe2lmKGNbeD4+Ml18MClicmVhaztkPVNiW2NbeT4+Ml0mMjU1XShjW3Q+PjJdfDAseixyLHEsbyxwKXwwO2NbeD4+Ml09ZDtpZihkKWJyZWFrO2lmKChjW3A+PjJdfDApPj0oY1tzPj4yXXwwKSljW3M+PjJdPShjW3A+PjJdfDApKzE7aWYoKGNbcD4+Ml18MCk+PTAmKGNbej4+Ml18MCkhPTBeMXwoY1tyPj4yXXwwKTw9MCl7QT0xMTticmVha31jW3g+PjJdPVNvKGNbaD4+Ml18MCxjW2w+PjJdfDAsY1twPj4yXXwwLChjWyhjW2g+PjJdfDApKzI1Mj4+Ml18MCkrNHwwLGNbej4+Ml18MCxjW3I+PjJdfDApfDA7Y1tuPj4yXT0xO3doaWxlKDEpe2lmKGNbeD4+Ml18MCljb250aW51ZSBhO2lmKChjW24+PjJdfDApPj0oY1soY1toPj4yXXwwKSsyNDg+PjJdfDApKWNvbnRpbnVlIGE7Y1t1Pj4yXT0oY1soY1toPj4yXXwwKSsyNTI+PjJdfDApKygoY1tuPj4yXXwwKSoyNHwwKTtpZigoY1tyPj4yXXwwKT49KGNbY1t1Pj4yXT4+Ml18MCkpY1t4Pj4yXT1TbyhjW2g+PjJdfDAsY1tsPj4yXXwwLGNbcD4+Ml18MCwoY1t1Pj4yXXwwKSs0fDAsY1t6Pj4yXXwwLGNbY1t1Pj4yXT4+Ml18MCl8MDtjW24+PjJdPShjW24+PjJdfDApKzF9fWlmKChBfDApPT0xMSljW3g+PjJdPTE7VGJbY1soY1t2Pj4yXXwwKSsxNj4+Ml0mMjU1XShjW3Q+PjJdfDApfDA7QT1jW20+PjJdfDA7Y1tBPj4yXT0oY1tBPj4yXXwwKSsoY1tzPj4yXXwwKTtjW2c+PjJdPShjW3g+PjJdfDApPT0xMDE/MDpjW3g+PjJdfDA7QT1jW2c+PjJdfDA7aT1CO3JldHVybiBBfDB9ZnVuY3Rpb24gU28oYSxiLGQsZSxmLGcpe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO3ZhciBoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MDtxPWk7aT1pKzMyfDA7aD1xKzI4fDA7aj1xKzI0fDA7az1xKzIwfDA7bD1xKzE2fDA7bT1xKzEyfDA7bj1xKzh8MDtvPXErNHwwO3A9cTtjW2g+PjJdPWE7Y1tqPj4yXT1iO2Nbaz4+Ml09ZDtjW2w+PjJdPWU7Y1ttPj4yXT1mO2Nbbj4+Ml09ZztjW3A+PjJdPTA7Y1tvPj4yXT1FayhjW2w+PjJdfDAsY1ttPj4yXXwwLGNbbj4+Ml18MCl8MDtpZihjW28+PjJdfDApe2Y9KGNbaD4+Ml18MCkrMjYwfDA7Y1tmPj4yXT0oY1tmPj4yXXwwKS0oKGNbY1tvPj4yXT4+Ml18MCkrKGNbbj4+Ml18MCkrMjApfWE9KGNbaD4+Ml18MCkrMjY0fDA7ZT1jW2o+PjJdfDA7Zj1jW2s+PjJdfDA7aWYoKERuKG8sY1thPj4yXXwwLGNbYSs0Pj4yXXwwLGUsKChlfDApPDApPDwzMT4+MzEsZiwoKGZ8MCk8MCk8PDMxPj4zMSxwKXwwKSE9MD8oZj1jW28+PjJdfDAsKGZ8MCk9PShsayhjW2w+PjJdfDAsY1ttPj4yXXwwLGNbbj4+Ml18MCxjW28+PjJdfDApfDApKTowKXtLZChjW28+PjJdfDApO2NbcD4+Ml09N31pZihjW3A+PjJdfDApe2Y9Y1twPj4yXXwwO2k9cTtyZXR1cm4gZnwwfWY9KGNbaD4+Ml18MCkrMjYwfDA7Y1tmPj4yXT0oY1tmPj4yXXwwKSsoKGNbY1tvPj4yXT4+Ml18MCkrKGNbbj4+Ml18MCkrMjApO2Y9Y1twPj4yXXwwO2k9cTtyZXR1cm4gZnwwfWZ1bmN0aW9uIFRvKGEsYixlLGYsZyl7YT1hfDA7Yj1ifDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7dmFyIGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MDt1PWk7aT1pKzY0fDA7aj11KzQ4fDA7az11KzQ0fDA7aD11KzQwfDA7bD11KzM2fDA7bT11KzMyfDA7cz11KzI4fDA7cj11KzI0fDA7bj11KzIwfDA7cT11KzE2fDA7cD11O289dSsxMnwwO3Q9dSs4fDA7Y1tqPj4yXT1hO2Nbaz4+Ml09YjtjW2g+PjJdPWU7Y1tsPj4yXT1mO2NbbT4+Ml09ZztpZihjW2Nbaj4+Ml0+PjJdfDApe2k9dTtyZXR1cm59Y1tzPj4yXT1wbChjW2s+PjJdfDAsNyxyLGgpfDA7aD1jW3I+PjJdfDA7aWYoIShjW3M+PjJdfDApKXtkbyBpZigxMDA9PSh0ZShoKXwwKSl7Y1txPj4yXT1YbyhjW2s+PjJdfDAsY1tyPj4yXXwwKXwwO2U9RGUoY1tyPj4yXXwwLDApfDA7Zz1wO2NbZz4+Ml09ZTtjW2crND4+Ml09QztjW3M+PjJdPUxvKGNbaz4+Ml18MCwxLGNbcT4+Ml18MCxjW3A+PjJdfDAsY1twKzQ+PjJdfDApfDA7Y1tuPj4yXT0xO3doaWxlKDEpe2lmKGNbcz4+Ml18MClicmVhaztpZigoY1tuPj4yXXwwKT4oY1soY1trPj4yXXwwKSsyND4+Ml18MCkpYnJlYWs7Y1tvPj4yXT0oY1tuPj4yXXwwKS0xO2lmKCEoZFsoY1soY1trPj4yXXwwKSszMj4+Ml18MCkrKGNbbz4+Ml18MCk+PjBdfDApKXtjW3Q+PjJdPUVlKGNbcj4+Ml18MCxjW24+PjJdfDApfDA7Y1tzPj4yXT1SbyhjW2s+PjJdfDAsY1txPj4yXXwwLGNbdD4+Ml18MCwtMSwoY1tsPj4yXXwwKSsoY1tvPj4yXTw8Mil8MCl8MDtnPUFlKGNbcj4+Ml18MCxjW24+PjJdfDApfDA7cD0oY1tsPj4yXXwwKSsoY1soY1trPj4yXXwwKSsyND4+Ml08PDIpfDA7Y1twPj4yXT0oY1twPj4yXXwwKStnfWNbbj4+Ml09KGNbbj4+Ml18MCkrMX1pZighKGNbcz4+Ml18MCkpe2NbY1ttPj4yXT4+Ml09MTticmVha31ZZChjW3I+PjJdfDApfDA7Y1tjW2o+PjJdPj4yXT1jW3M+PjJdO2k9dTtyZXR1cm59d2hpbGUoMCk7Y1tzPj4yXT1ZZChjW3I+PjJdfDApfDB9ZWxzZSBZZChoKXwwO2NbY1tqPj4yXT4+Ml09Y1tzPj4yXTtpPXU7cmV0dXJufWZ1bmN0aW9uIFVvKGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTA7az1pO2k9aSszMnwwO2U9aysxNnwwO2Y9aysxMnwwO2c9ays4fDA7aD1rKzR8MDtqPWs7Y1tlPj4yXT1hO2NbZj4+Ml09YjtjW2c+PjJdPWQ7aWYoY1soY1tlPj4yXXwwKSs0MD4+Ml18MCl7Y1tjW2c+PjJdPj4yXT0wO2Nbaj4+Ml09MDtqPWNbaj4+Ml18MDtpPWs7cmV0dXJuIGp8MH1jW2o+PjJdPXBsKGNbZT4+Ml18MCwxLGgsZil8MDtpZihjW2o+PjJdfDApe2o9Y1tqPj4yXXwwO2k9aztyZXR1cm4ganwwfWlmKDEwMD09KHRlKGNbaD4+Ml18MCl8MCkpe2Q9Q2UoY1toPj4yXXwwLDApfDA7Y1tjW2c+PjJdPj4yXT1kfWNbaj4+Ml09WWQoY1toPj4yXXwwKXwwO2o9Y1tqPj4yXXwwO2k9aztyZXR1cm4ganwwfWZ1bmN0aW9uIFZvKGIsZCl7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MDtnPWk7aT1pKzE2fDA7ZT1nKzh8MDtoPWcrNHwwO2Y9ZztjW2U+PjJdPWI7Y1toPj4yXT1kO2NbZj4+Ml09MDtqbChjW2U+PjJdfDApO2lmKGNbaD4+Ml18MClXbyhmLGNbZT4+Ml18MCwyLDApO1dvKGYsY1tlPj4yXXwwLDMsMCk7V28oZixjW2U+PjJdfDAsNCwwKTtpZihhWyhjW2U+PjJdfDApKzIzMD4+MF18MClXbyhmLGNbZT4+Ml18MCw1LDApO2lmKCEoYVsoY1tlPj4yXXwwKSsyMjk+PjBdfDApKXtoPWNbZj4+Ml18MDtpPWc7cmV0dXJuIGh8MH1XbyhmLGNbZT4+Ml18MCw2LDApO2g9Y1tmPj4yXXwwO2k9ZztyZXR1cm4gaHwwfWZ1bmN0aW9uIFdvKGEsYixkLGUpe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTA7bT1pO2k9aSszMnwwO2Y9bSsyMHwwO2c9bSsxNnwwO2g9bSsxMnwwO2o9bSs4fDA7az1tKzR8MDtsPW07Y1tmPj4yXT1hO2NbZz4+Ml09YjtjW2g+PjJdPWQ7Y1tqPj4yXT1lO2lmKGNbY1tmPj4yXT4+Ml18MCl7aT1tO3JldHVybn1jW2w+PjJdPXBsKGNbZz4+Ml18MCxjW2g+PjJdfDAsayxjW2o+PjJdfDApfDA7aWYoIShjW2w+PjJdfDApKXt0ZShjW2s+PjJdfDApfDA7Y1tsPj4yXT1ZZChjW2s+PjJdfDApfDB9Y1tjW2Y+PjJdPj4yXT1jW2w+PjJdO2k9bTtyZXR1cm59ZnVuY3Rpb24gWG8oYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wO2c9aTtpPWkrMTZ8MDtkPWcrOHwwO2U9Zys0fDA7Zj1nO2NbZD4+Ml09YTtjW2U+PjJdPWI7Y1tmPj4yXT0wO2lmKCEoY1soY1tkPj4yXXwwKSs0ND4+Ml18MCkpe2I9Y1tmPj4yXXwwO2k9ZztyZXR1cm4gYnwwfWNbZj4+Ml09Q2UoY1tlPj4yXXwwLChjWyhjW2Q+PjJdfDApKzI0Pj4yXXwwKSsxfDApfDA7Yj1jW2Y+PjJdfDA7aT1nO3JldHVybiBifDB9ZnVuY3Rpb24gWW8oYil7Yj1ifDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wO3Q9aTtpPWkrNjR8MDtmPXQ7aD10KzUyfDA7cT10KzQ4fDA7aj10KzQ0fDA7bD10KzQwfDA7az10KzM2fDA7cD10KzMyfDA7bz10KzI4fDA7Zz10KzI0fDA7ZT10KzIwfDA7bT10KzE2fDA7bj10KzEyfDA7cz10Kzh8MDtyPXQrNHwwO2NbaD4+Ml09YjtjW3E+PjJdPVZvKGNbaD4+Ml18MCwwKXwwO2lmKGNbcT4+Ml18MCl7cz1jW3E+PjJdfDA7aT10O3JldHVybiBzfDB9Y1tqPj4yXT0wO2NbbD4+Ml09MDtjW2s+PjJdPTA7Y1twPj4yXT0wO2Nbbz4+Ml09MDtjW2Y+PjJdPWNbKGNbaD4+Ml18MCkrMjE2Pj4yXTtjW2c+PjJdPU9kKDIzNjE0LGYpfDA7aWYoY1tnPj4yXXwwKXtjW3E+PjJdPWFmKGNbKGNbaD4+Ml18MCkrMTI+PjJdfDAsY1tnPj4yXXwwLC0xLHAsMCl8MDtLZChjW2c+PjJdfDApfWVsc2UgY1txPj4yXT03O2RvIGlmKCEoY1txPj4yXXwwKSl7Y1tlPj4yXT0oKGNbKGNbaD4+Ml18MCkrMjQ+PjJdfDApKzE8PDIpKjM7Y1tqPj4yXT1JZChjW2U+PjJdfDApfDA7aWYoIShjW2o+PjJdfDApKXtjW3E+PjJdPTc7YnJlYWt9ZWxzZXtWUihjW2o+PjJdfDAsMCxjW2U+PjJdfDApfDA7Y1tsPj4yXT0oY1tqPj4yXXwwKSsoKGNbKGNbaD4+Ml18MCkrMjQ+PjJdfDApKzE8PDIpO2Nbaz4+Ml09KGNbbD4+Ml18MCkrKChjWyhjW2g+PjJdfDApKzI0Pj4yXXwwKSsxPDwyKTticmVha319d2hpbGUoMCk7YTp3aGlsZSgxKXtpZighKGNbcT4+Ml18MCkpZT0xMDA9PSh0ZShjW3A+PjJdfDApfDApO2Vsc2UgZT0wO2I9Y1toPj4yXXwwO2lmKCFlKWJyZWFrO2Nbbj4+Ml09WG8oYixjW3A+PjJdfDApfDA7Yj1jW2g+PjJdfDA7Zj1jW24+PjJdfDA7Zz1EZShjW3A+PjJdfDAsMCl8MDtjW3E+PjJdPUxvKGIsMCxmLGcsQyl8MDtWUihjW2o+PjJdfDAsMCwoY1soY1toPj4yXXwwKSsyND4+Ml18MCkrMTw8MnwwKXwwO2NbbT4+Ml09MDt3aGlsZSgxKXtpZihjW3E+PjJdfDApYnJlYWs7aWYoKGNbbT4+Ml18MCk+PShjWyhjW2g+PjJdfDApKzI0Pj4yXXwwKSlicmVhaztpZighKGRbKGNbKGNbaD4+Ml18MCkrMzI+PjJdfDApKyhjW20+PjJdfDApPj4wXXwwKSl7Y1tzPj4yXT1FZShjW3A+PjJdfDAsKGNbbT4+Ml18MCkrMXwwKXwwO2NbcT4+Ml09Um8oY1toPj4yXXwwLGNbbj4+Ml18MCxjW3M+PjJdfDAsY1ttPj4yXXwwLChjW2o+PjJdfDApKyhjW20+PjJdPDwyKXwwKXwwO2Y9QWUoY1twPj4yXXwwLChjW20+PjJdfDApKzF8MCl8MDtnPShjW2o+PjJdfDApKyhjWyhjW2g+PjJdfDApKzI0Pj4yXTw8Mil8MDtjW2c+PjJdPShjW2c+PjJdfDApK2Z9Y1ttPj4yXT0oY1ttPj4yXXwwKSsxfWlmKGFbKGNbaD4+Ml18MCkrMjMwPj4wXXwwKU5vKHEsY1toPj4yXXwwLGNbaj4+Ml18MCk7aWYoY1txPj4yXXwwKXtYZChjW3A+PjJdfDApfDA7Y1twPj4yXT0wO2NvbnRpbnVlfWNbbz4+Ml09KGNbbz4+Ml18MCkrMTtjW20+PjJdPTA7d2hpbGUoMSl7aWYoKGNbbT4+Ml18MCk+KGNbKGNbaD4+Ml18MCkrMjQ+PjJdfDApKWNvbnRpbnVlIGE7Zz0oY1tsPj4yXXwwKSsoY1ttPj4yXTw8Mil8MDtjW2c+PjJdPShjW2c+PjJdfDApKyhjWyhjW2o+PjJdfDApKyhjW20+PjJdPDwyKT4+Ml18MCk7Y1ttPj4yXT0oY1ttPj4yXXwwKSsxfX1pZihhW2IrMjI4Pj4wXXwwKU9vKHEsY1toPj4yXXwwLGNbbD4+Ml18MCxjW2s+PjJdfDAsY1tvPj4yXXwwKTtLZChjW2o+PjJdfDApO2lmKCEoY1twPj4yXXwwKSl7cz1jW3E+PjJdfDA7aT10O3JldHVybiBzfDB9Y1tyPj4yXT1YZChjW3A+PjJdfDApfDA7aWYoY1txPj4yXXwwKXtzPWNbcT4+Ml18MDtpPXQ7cmV0dXJuIHN8MH1jW3E+PjJdPWNbcj4+Ml07cz1jW3E+PjJdfDA7aT10O3JldHVybiBzfDB9ZnVuY3Rpb24gWm8oYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MDtkPWk7aT1pKzE2fDA7Zj1kKzh8MDtiPWQrNHwwO2U9ZDtjW2Y+PjJdPWE7Y1tlPj4yXT0wO2E9Y3AoY1tmPj4yXXwwLGUpfDA7Y1tiPj4yXT1hO2NbYj4+Ml09KGNbYj4+Ml18MCk9PTAmKGNbZT4+Ml18MCk9PTA/MjY3OmE7aT1kO3JldHVybiBjW2I+PjJdfDB9ZnVuY3Rpb24gX28oYixkKXtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wO2s9aTtpPWkrMzJ8MDtlPWsrMjB8MDtsPWsrMTZ8MDtoPWsrMTJ8MDtnPWsrOHwwO2Y9ays0fDA7aj1rO2NbZT4+Ml09YjtjW2w+PjJdPWQ7Y1tnPj4yXT04O2NbZj4+Ml09MDtjW2o+PjJdPWNbbD4+Ml07Y1tmPj4yXT1hcChqKXwwO2lmKChhW2Nbaj4+Ml0+PjBdfDApPT00ND8oYVsoY1tqPj4yXXwwKSsxPj4wXXwwKSE9MDowKXtjW2o+PjJdPShjW2o+PjJdfDApKzE7Y1tnPj4yXT1hcChqKXwwfWlmKChjW2c+PjJdfDApPDI/MTooYVtjW2o+PjJdPj4wXXwwKSE9MCl7Y1toPj4yXT0xO2w9Y1toPj4yXXwwO2k9aztyZXR1cm4gbHwwfWNbaD4+Ml09MDtpZighKGFbKGNbZT4+Ml18MCkrMjI5Pj4wXXwwKSlicChoLGNbZT4+Ml18MCk7aWYoIShjW2g+PjJdfDApKWNbaD4+Ml09Z28oY1tlPj4yXXwwLGNbZj4+Ml18MCxjW2c+PjJdfDApfDA7eW0oY1tlPj4yXXwwKTtsPWNbaD4+Ml18MDtpPWs7cmV0dXJuIGx8MH1mdW5jdGlvbiAkbyhiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MDtqPWk7aT1pKzMyfDA7ZT1qKzE2fDA7Zj1qKzEyfDA7az1qKzh8MDtoPWorNHwwO2c9ajtjW2Y+PjJdPWI7Y1trPj4yXT1kO2NbaD4+Ml09MDtjW2c+PjJdPTA7ZD1hcChrKXwwO2NbKGNbZj4+Ml18MCkrNDg+PjJdPWQ7aWYoISgoY1soY1tmPj4yXXwwKSs0OD4+Ml18MCkhPTE/KGNbKGNbZj4+Ml18MCkrNDg+PjJdfDApPD0xNjowKSljWyhjW2Y+PjJdfDApKzQ4Pj4yXT04O2lmKChhWyhjW2Y+PjJdfDApKzIyOT4+MF18MCk9PTA/KGJwKGgsY1tmPj4yXXwwKSwoY1toPj4yXXwwKSE9MCk6MCl7Y1tlPj4yXT1jW2g+PjJdO2s9Y1tlPj4yXXwwO2k9ajtyZXR1cm4ga3wwfWNbaD4+Ml09cGwoY1tmPj4yXXwwLDIzLGcsMCl8MDtpZihjW2g+PjJdfDApe2NbZT4+Ml09Y1toPj4yXTtrPWNbZT4+Ml18MDtpPWo7cmV0dXJuIGt8MH1lbHNle0tlKGNbZz4+Ml18MCwxLDIpfDA7S2UoY1tnPj4yXXwwLDIsY1soY1tmPj4yXXwwKSs0OD4+Ml18MCl8MDt0ZShjW2c+PjJdfDApfDA7Y1toPj4yXT1ZZChjW2c+PjJdfDApfDA7Y1tlPj4yXT1jW2g+PjJdO2s9Y1tlPj4yXXwwO2k9ajtyZXR1cm4ga3wwfXJldHVybiAwfWZ1bmN0aW9uIGFwKGIpe2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wO2c9aTtpPWkrMTZ8MDtkPWcrOHwwO2Y9Zys0fDA7ZT1nO2NbZD4+Ml09YjtjW2Y+PjJdPWNbY1tkPj4yXT4+Ml07Y1tlPj4yXT0wO3doaWxlKDEpe2lmKChhW2NbZj4+Ml0+PjBdfDApPDQ4KXtiPTU7YnJlYWt9aWYoKGFbY1tmPj4yXT4+MF18MCk+NTcpe2I9NTticmVha31oPShjW2U+PjJdfDApKjEwfDA7Yj1jW2Y+PjJdfDA7Y1tmPj4yXT1iKzE7Y1tlPj4yXT1oKyhhW2I+PjBdfDApLTQ4fWlmKChifDApPT01KXtjW2NbZD4+Ml0+PjJdPWNbZj4+Ml07aT1nO3JldHVybiBjW2U+PjJdfDB9cmV0dXJuIDB9ZnVuY3Rpb24gYnAoYixkKXtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MDtmPWk7aT1pKzE2fDA7aD1mO2c9ZisxMnwwO2U9Zis4fDA7Y1tnPj4yXT1iO2NbZT4+Ml09ZDtkPWNbZz4+Ml18MDtiPWNbKGNbZT4+Ml18MCkrMTI+PjJdfDA7aj1jWyhjW2U+PjJdfDApKzIwPj4yXXwwO2NbaD4+Ml09Y1soY1tlPj4yXXwwKSsxNj4+Ml07Y1toKzQ+PjJdPWo7bmwoZCxiLDIzNTM3LGgpO2lmKGNbY1tnPj4yXT4+Ml18MCl7aT1mO3JldHVybn1hWyhjW2U+PjJdfDApKzIyOT4+MF09MTtpPWY7cmV0dXJufWZ1bmN0aW9uIGNwKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsRD0wLEU9MCxGPTAsRz0wLEg9MDtGPWk7aT1pKzExMnwwO2o9RisyNHwwO2w9RisxMDh8MDttPUYrMTA0fDA7Qj1GKzEwMHwwO249RisxNnwwO289Ris4fDA7Zz1GKzk2fDA7aD1GKzkyfDA7Zj1GKzg4fDA7ZT1GKzg0fDA7eT1GKzgwfDA7ej1GKzc2fDA7az1GKzcyfDA7cj1GO3U9Ris2OHwwO3E9Ris2NHwwO0Q9Ris2MHwwO3c9Ris1NnwwO0E9Ris1MnwwO0U9Ris0OHwwO3g9Ris0NHwwO3M9Ris0MHwwO3Q9RiszNnwwO3Y9RiszMnwwO3A9RisyOHwwO2NbbD4+Ml09YTtjW20+PjJdPWI7Y1tCPj4yXT0wO2I9bjtjW2I+PjJdPTA7Y1tiKzQ+PjJdPTA7Yj1vO2NbYj4+Ml09MDtjW2IrND4+Ml09MDtjW2c+PjJdPTA7Y1tCPj4yXT1wbChjW2w+PjJdfDAsMjcsZywwKXwwO2lmKCEoY1tCPj4yXXwwKSl7S2UoY1tnPj4yXXwwLDEsY1soY1tsPj4yXXwwKSsyNzI+PjJdfDApfDA7S2UoY1tnPj4yXXwwLDIsY1soY1tsPj4yXXwwKSsyNDg+PjJdfDApfDA7YTp3aGlsZSgxKXtpZighKGNbQj4+Ml18MCkpYT0odGUoY1tnPj4yXXwwKXwwKT09MTAwO2Vsc2UgYT0wO2I9Y1tnPj4yXXwwO2lmKCFhKWJyZWFrO2NbZj4+Ml09Q2UoYiwwKXwwO2NbZT4+Ml09MDt3aGlsZSgxKXtpZigoY1tlPj4yXXwwKT49KGNbKGNbbD4+Ml18MCkrMjQ4Pj4yXXwwKSljb250aW51ZSBhO2E9bjtIPWNbYT4+Ml18MDthPWNbYSs0Pj4yXXwwO0c9ZHAoY1tsPj4yXXwwLGNbZj4+Ml18MCxjW2U+PjJdfDAsQil8MDtiPW47Y1tiPj4yXT1IXkc7Y1tiKzQ+PjJdPWFeQztjW2U+PjJdPShjW2U+PjJdfDApKzF9fWNbaD4+Ml09WWQoYil8MDtpZighKGNbQj4+Ml18MCkpY1tCPj4yXT1jW2g+PjJdfWlmKGNbQj4+Ml18MCl7RT1uO0Q9RTtEPWNbRD4+Ml18MDtFPUUrNHwwO0U9Y1tFPj4yXXwwO0c9bztIPUc7SD1jW0g+PjJdfDA7Rz1HKzR8MDtHPWNbRz4+Ml18MDtIPShEfDApPT0oSHwwKTtHPShFfDApPT0oR3wwKTtHPUgmRztHPUcmMTtIPWNbbT4+Ml18MDtjW0g+PjJdPUc7SD1jW0I+PjJdfDA7aT1GO3JldHVybiBIfDB9Y1t5Pj4yXT1jW2NbKGNbbD4+Ml18MCkrMzY+PjJdPj4yXTtjW3o+PjJdPTA7Y1tqPj4yXT1jWyhjW2w+PjJdfDApKzIxNj4+Ml07Y1trPj4yXT1PZCgyMzYxNCxqKXwwO2lmKGNbaz4+Ml18MCl7Y1tCPj4yXT1hZihjWyhjW2w+PjJdfDApKzEyPj4yXXwwLGNbaz4+Ml18MCwtMSx6LDApfDA7S2QoY1trPj4yXXwwKX1lbHNlIGNbQj4+Ml09NztiOndoaWxlKDEpe2lmKCEoY1tCPj4yXXwwKSlhPTEwMD09KHRlKGNbej4+Ml18MCl8MCk7ZWxzZSBhPTA7Yj1jW3o+PjJdfDA7aWYoIWEpYnJlYWs7Rz1EZShiLDApfDA7SD1yO2NbSD4+Ml09RztjW0grND4+Ml09QztjW3U+PjJdPVhvKGNbbD4+Ml18MCxjW3o+PjJdfDApfDA7Y1txPj4yXT0wO3doaWxlKDEpe2lmKGNbQj4+Ml18MCljb250aW51ZSBiO2lmKChjW3E+PjJdfDApPj0oY1soY1tsPj4yXXwwKSsyND4+Ml18MCkpY29udGludWUgYjtpZighKGRbKGNbKGNbbD4+Ml18MCkrMzI+PjJdfDApKyhjW3E+PjJdfDApPj4wXXwwKSl7Y1tEPj4yXT1FZShjW3o+PjJdfDAsKGNbcT4+Ml18MCkrMXwwKXwwO2Nbdz4+Ml09QWUoY1t6Pj4yXXwwLChjW3E+PjJdfDApKzF8MCl8MDtjW0E+PjJdPTA7Y1tCPj4yXT1DbihjWyhjW2w+PjJdfDApKzM2Pj4yXXwwLGNbdT4+Ml18MCxjW0Q+PjJdfDAsY1t3Pj4yXXwwLEEpfDA7Yzp3aGlsZSgxKXtpZihjW0I+PjJdfDApYnJlYWs7Y1t4Pj4yXT0wO2Nbcz4+Ml09MDtjW3Q+PjJdPTA7Y1t2Pj4yXT0wO2NbQj4+Ml09U2JbY1soY1t5Pj4yXXwwKSsyMD4+Ml0mMjU1XShjW0E+PjJdfDAsRSx4LHMsdCx2KXwwO2lmKGNbQj4+Ml18MCljb250aW51ZTtHPW87aj1jW0c+PjJdfDA7Rz1jW0crND4+Ml18MDtrPXI7az1lcChjW0U+PjJdfDAsY1t4Pj4yXXwwLGNbdT4+Ml18MCwwLGNbaz4+Ml18MCxjW2srND4+Ml18MCxjW3E+PjJdfDAsY1t2Pj4yXXwwKXwwO0g9bztjW0g+PjJdPWpeaztjW0grND4+Ml09R15DO2NbcD4+Ml09MTt3aGlsZSgxKXtpZigoY1twPj4yXXwwKT49KGNbKGNbbD4+Ml18MCkrMjQ4Pj4yXXwwKSljb250aW51ZSBjO2lmKChjWyhjWyhjW2w+PjJdfDApKzI1Mj4+Ml18MCkrKChjW3A+PjJdfDApKjI0fDApPj4yXXwwKTw9KGNbeD4+Ml18MCkpe0c9bztqPWNbRz4+Ml18MDtHPWNbRys0Pj4yXXwwO2s9cjtrPWVwKGNbRT4+Ml18MCxjWyhjWyhjW2w+PjJdfDApKzI1Mj4+Ml18MCkrKChjW3A+PjJdfDApKjI0fDApPj4yXXwwLGNbdT4+Ml18MCxjW3A+PjJdfDAsY1trPj4yXXwwLGNbays0Pj4yXXwwLGNbcT4+Ml18MCxjW3Y+PjJdfDApfDA7SD1vO2NbSD4+Ml09al5rO2NbSCs0Pj4yXT1HXkN9Y1twPj4yXT0oY1twPj4yXXwwKSsxfX1pZihjW0E+PjJdfDApVGJbY1soY1t5Pj4yXXwwKSsxNj4+Ml0mMjU1XShjW0E+PjJdfDApfDA7aWYoKGNbQj4+Ml18MCk9PTEwMSljW0I+PjJdPTB9Y1txPj4yXT0oY1txPj4yXXwwKSsxfX1YZChiKXwwO0U9bjtEPUU7RD1jW0Q+PjJdfDA7RT1FKzR8MDtFPWNbRT4+Ml18MDtHPW87SD1HO0g9Y1tIPj4yXXwwO0c9Rys0fDA7Rz1jW0c+PjJdfDA7SD0oRHwwKT09KEh8MCk7Rz0oRXwwKT09KEd8MCk7Rz1IJkc7Rz1HJjE7SD1jW20+PjJdfDA7Y1tIPj4yXT1HO0g9Y1tCPj4yXXwwO2k9RjtyZXR1cm4gSHwwfWZ1bmN0aW9uIGRwKGEsYixkLGUpe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MDt1PWk7aT1pKzE0NHwwO2c9dSsxNDB8MDtoPXUrMTM2fDA7aj11KzEzMnwwO2s9dSsxMjh8MDtmPXUrMTEyfDA7bT11KzU2fDA7dD11KzQ4fDA7bD11KzMyfDA7cj11KzQ0fDA7cz11KzQwfDA7bz11KzI0fDA7bj11KzE2fDA7cD11Kzh8MDtxPXU7Y1tnPj4yXT1hO2NbaD4+Ml09YjtjW2o+PjJdPWQ7Y1trPj4yXT1lO2Q9bDtjW2Q+PjJdPTA7Y1tkKzQ+PjJdPTA7Y1tmPj4yXT0wO2NbZis0Pj4yXT0wO2NbZis4Pj4yXT0wO2NbZisxMj4+Ml09MDtkPW07Yj1kKzU2fDA7ZG97Y1tkPj4yXT0wO2Q9ZCs0fDB9d2hpbGUoKGR8MCk8KGJ8MCkpO2NbZisxMj4+Ml09MztlPWYrMTJ8MDtjW2U+PjJdPWNbZT4+Ml18MTY7Y1t0Pj4yXT1xbChjW2c+PjJdfDAsY1toPj4yXXwwLGNbaj4+Ml18MCwtMiwwLDAsMCwxLG0pfDA7aWYoIShjW3Q+PjJdfDApKWNbdD4+Ml09dWwoY1tnPj4yXXwwLG0sZil8MDtpZihjW3Q+PjJdfDApe0JsKG0pO3Q9Y1t0Pj4yXXwwO3M9Y1trPj4yXXwwO2Nbcz4+Ml09dDtzPWw7dD1zO3Q9Y1t0Pj4yXXwwO3M9cys0fDA7cz1jW3M+PjJdfDA7Qz1zO2k9dTtyZXR1cm4gdHwwfWE6d2hpbGUoMSl7Zj12bChjW2c+PjJdfDAsbSl8MDtjW3Q+PjJdPWY7aWYoMTAwIT0oZnwwKSlicmVhaztjW3I+PjJdPWNbbSs0OD4+Ml07Y1tzPj4yXT0oY1tyPj4yXXwwKSsoY1ttKzUyPj4yXXwwKTtmPW87Y1tmPj4yXT0wO2NbZis0Pj4yXT0wO2Y9bjtjW2Y+PjJdPTA7Y1tmKzQ+PjJdPTA7Zj1wO2NbZj4+Ml09MDtjW2YrND4+Ml09MDtmPV9sKGNbcj4+Ml18MCxvKXwwO2Nbcj4+Ml09KGNbcj4+Ml18MCkrZjt3aGlsZSgxKXtpZigoY1tyPj4yXXwwKT4+PjA+PShjW3M+PjJdfDApPj4+MCljb250aW51ZSBhO2Y9cTtjW2Y+PjJdPTA7Y1tmKzQ+PjJdPTA7Zj1fbChjW3I+PjJdfDAscSl8MDtjW3I+PjJdPShjW3I+PjJdfDApK2Y7aWYoKGNbcj4+Ml18MCk+Pj4wPj0oY1tzPj4yXXwwKT4+PjApY29udGludWU7ZT1xO2Y9cTtpZighKChjW2U+PjJdfDApPT0wJihjW2UrND4+Ml18MCk9PTB8KGNbZj4+Ml18MCk9PTEmKGNbZis0Pj4yXXwwKT09MCkpe2I9cTtiPVFSKGNbYj4+Ml18MCxjW2IrND4+Ml18MCwyLDApfDA7ZT1wO2I9UlIoY1tlPj4yXXwwLGNbZSs0Pj4yXXwwLGJ8MCxDfDApfDA7ZT1wO2NbZT4+Ml09YjtjW2UrND4+Ml09QztlPWw7Yj1jW2U+PjJdfDA7ZT1jW2UrND4+Ml18MDthPW87YT1lcChjW20rNDA+PjJdfDAsY1ttKzQ0Pj4yXXwwLGNbaD4+Ml18MCxjW2o+PjJdfDAsY1thPj4yXXwwLGNbYSs0Pj4yXXwwLGNbbj4+Ml18MCxjW3A+PjJdfDApfDA7Zj1sO2NbZj4+Ml09Yl5hO2NbZis0Pj4yXT1lXkM7Y29udGludWV9Zj1uO2NbZj4+Ml09MDtjW2YrND4+Ml09MDtmPXA7Y1tmPj4yXT0wO2NbZis0Pj4yXT0wO2Y9cTtkPWNbcj4+Ml18MDtpZigoY1tmPj4yXXwwKSE9MHwoY1tmKzQ+PjJdfDApIT0wKXtmPV9sKGQsbil8MDtjW3I+PjJdPShjW3I+PjJdfDApK2Y7Y29udGludWV9ZWxzZXtlPV9sKGQscSl8MDtjW3I+PjJdPShjW3I+PjJdfDApK2U7ZT1xO2Y9bztlPVJSKGNbZj4+Ml18MCxjW2YrND4+Ml18MCxjW2U+PjJdfDAsY1tlKzQ+PjJdfDApfDA7Zj1vO2NbZj4+Ml09ZTtjW2YrND4+Ml09Qztjb250aW51ZX19fUJsKG0pO3Q9Y1t0Pj4yXXwwO3M9Y1trPj4yXXwwO2Nbcz4+Ml09dDtzPWw7dD1zO3Q9Y1t0Pj4yXXwwO3M9cys0fDA7cz1jW3M+PjJdfDA7Qz1zO2k9dTtyZXR1cm4gdHwwfWZ1bmN0aW9uIGVwKGIsZCxlLGYsZyxoLGosayl7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7dmFyIGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MDtwPWk7aT1pKzQ4fDA7bD1wKzQwfDA7bT1wKzM2fDA7dD1wKzMyfDA7cz1wKzI4fDA7dT1wKzh8MDtyPXArMjR8MDtxPXArMjB8MDtuPXArMTZ8MDtvPXA7Y1tsPj4yXT1iO2NbbT4+Ml09ZDtjW3Q+PjJdPWU7Y1tzPj4yXT1mO2Q9dTtjW2Q+PjJdPWc7Y1tkKzQ+PjJdPWg7Y1tyPj4yXT1qO2NbcT4+Ml09aztrPXU7ZD1jW2srND4+Ml18MDtiPW87Y1tiPj4yXT1jW2s+PjJdO2NbYis0Pj4yXT1kO2I9bztiPVdSKGNbYj4+Ml18MCxjW2IrND4+Ml18MCwzKXwwO2Q9Y1t0Pj4yXXwwO2Q9UlIoYnwwLEN8MCxkfDAsKChkfDApPDApPDwzMT4+MzF8MCl8MDtiPW87ZD1SUihjW2I+PjJdfDAsY1tiKzQ+PjJdfDAsZHwwLEN8MCl8MDtiPW87Y1tiPj4yXT1kO2NbYis0Pj4yXT1DO2I9bztiPVdSKGNbYj4+Ml18MCxjW2IrND4+Ml18MCwzKXwwO2Q9Y1tzPj4yXXwwO2Q9UlIoYnwwLEN8MCxkfDAsKChkfDApPDApPDwzMT4+MzF8MCl8MDtiPW87ZD1SUihjW2I+PjJdfDAsY1tiKzQ+PjJdfDAsZHwwLEN8MCl8MDtiPW87Y1tiPj4yXT1kO2NbYis0Pj4yXT1DO2I9bztiPVdSKGNbYj4+Ml18MCxjW2IrND4+Ml18MCwzKXwwO2Q9Y1tyPj4yXXwwO2Q9UlIoYnwwLEN8MCxkfDAsKChkfDApPDApPDwzMT4+MzF8MCl8MDtiPW87ZD1SUihjW2I+PjJdfDAsY1tiKzQ+PjJdfDAsZHwwLEN8MCl8MDtiPW87Y1tiPj4yXT1kO2NbYis0Pj4yXT1DO2I9bztiPVdSKGNbYj4+Ml18MCxjW2IrND4+Ml18MCwzKXwwO2Q9Y1txPj4yXXwwO2Q9UlIoYnwwLEN8MCxkfDAsKChkfDApPDApPDwzMT4+MzF8MCl8MDtiPW87ZD1SUihjW2I+PjJdfDAsY1tiKzQ+PjJdfDAsZHwwLEN8MCl8MDtiPW87Y1tiPj4yXT1kO2NbYis0Pj4yXT1DO2Nbbj4+Ml09MDt3aGlsZSgxKXtoPW87Zz1jW2g+PjJdfDA7aD1jW2grND4+Ml18MDtpZigoY1tuPj4yXXwwKT49KGNbbT4+Ml18MCkpYnJlYWs7dT1XUihnfDAsaHwwLDMpfDA7dD1hWyhjW2w+PjJdfDApKyhjW24+PjJdfDApPj4wXXwwO3Q9UlIodXwwLEN8MCx0fDAsKCh0fDApPDApPDwzMT4+MzF8MCl8MDt1PW87dD1SUihjW3U+PjJdfDAsY1t1KzQ+PjJdfDAsdHwwLEN8MCl8MDt1PW87Y1t1Pj4yXT10O2NbdSs0Pj4yXT1DO2Nbbj4+Ml09KGNbbj4+Ml18MCkrMX1DPWg7aT1wO3JldHVybiBnfDB9ZnVuY3Rpb24gZnAoYil7Yj1ifDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wO2g9aTtpPWkrMTZ8MDtlPWgrOHwwO2c9aCs0fDA7Zj1oO2NbZT4+Ml09YjtjW2c+PjJdPTA7Y1tmPj4yXT1jWyhjW2U+PjJdfDApKzEyPj4yXTthOmRvIGlmKCEoY1tmPj4yXXwwKSlhWyhjW2U+PjJdfDApKzY+PjBdPTE7ZWxzZSBkb3tpZighKGRbKGNbZT4+Ml18MCkrNz4+MF18MCkpWWQoY1soY1tlPj4yXXwwKSs4Pj4yXXwwKXwwO1RtKGNbZT4+Ml18MCxjW2Y+PjJdfDAsZyk7YVsoY1tlPj4yXXwwKSs2Pj4wXT1hWyhjW2Y+PjJdfDApKzMyPj4wXXwwO2FbKGNbZT4+Ml18MCkrNz4+MF09MTtjWyhjW2U+PjJdfDApKzg4Pj4yXT0xO2s9KGNbZj4+Ml18MCkrMjR8MDtqPWNbays0Pj4yXXwwO2I9KGNbZT4+Ml18MCkrMzJ8MDtjW2I+PjJdPWNbaz4+Ml07Y1tiKzQ+PjJdPWo7aWYoZFsoY1tlPj4yXXwwKSs2Pj4wXXwwKWJyZWFrIGF9d2hpbGUoKE9tKGNbZT4+Ml18MCxnKXwwKSE9MCk7d2hpbGUoMCk7aWYoY1tnPj4yXXwwKXtrPWNbZz4+Ml18MDtpPWg7cmV0dXJuIGt8MH1pZighKChkWyhjW2U+PjJdfDApKzUyPj4wXXwwfDApPT0wPyhqPShjW2U+PjJdfDApKzMyfDAsYj1jW2orND4+Ml18MCxrPShjW2U+PjJdfDApKzgwfDAsZj1jW2srND4+Ml18MCwoYnwwKT4oZnwwKXwoKGJ8MCk9PShmfDApPyhjW2o+PjJdfDApPj4+MD4oY1trPj4yXXwwKT4+PjA6MCkpOjApKXtpZighKGRbKGNbZT4+Ml18MCkrNTI+PjBdfDApKXtrPWNbZz4+Ml18MDtpPWg7cmV0dXJuIGt8MH1qPShjW2U+PjJdfDApKzMyfDA7Yj1jW2orND4+Ml18MDtrPShjW2U+PjJdfDApKzcyfDA7Zj1jW2srND4+Ml18MDtpZighKChifDApPChmfDApfCgoYnwwKT09KGZ8MCk/KGNbaj4+Ml18MCk+Pj4wPChjW2s+PjJdfDApPj4+MDowKSkpe2s9Y1tnPj4yXXwwO2k9aDtyZXR1cm4ga3wwfX1hWyhjW2U+PjJdfDApKzY+PjBdPTE7az1jW2c+PjJdfDA7aT1oO3JldHVybiBrfDB9ZnVuY3Rpb24gZ3AoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MDtlPWk7aT1pKzE2fDA7Zj1lKzh8MDtiPWUrNHwwO2Q9ZTtjW2Y+PjJdPWE7Y1tiPj4yXT1jW2Y+PjJdO3doaWxlKDEpe2lmKCEoY1tiPj4yXXwwKSlicmVhaztpZigoY1soY1tiPj4yXXwwKSsxMj4+Ml18MCk9PTA/KGNbKGNbYj4+Ml18MCkrMTY+PjJdfDApPT0wOjApYnJlYWs7YT1jW2I+PjJdfDA7aWYoY1soY1tiPj4yXXwwKSsxMj4+Ml18MClhPWNbYSsxMj4+Ml18MDtlbHNlIGE9Y1thKzE2Pj4yXXwwO2NbYj4+Ml09YX1hOndoaWxlKDEpe2lmKCEoY1tiPj4yXXwwKSlicmVhaztjW2Q+PjJdPWNbKGNbYj4+Ml18MCkrOD4+Ml07R3AoY1tiPj4yXXwwKTtpZigoKGNbZD4+Ml18MCkhPTA/KGNbYj4+Ml18MCk9PShjWyhjW2Q+PjJdfDApKzEyPj4yXXwwKTowKT8oY1soY1tkPj4yXXwwKSsxNj4+Ml18MCkhPTA6MCl7Y1tiPj4yXT1jWyhjW2Q+PjJdfDApKzE2Pj4yXTt3aGlsZSgxKXtpZighKGNbYj4+Ml18MCkpY29udGludWUgYTtpZigoY1soY1tiPj4yXXwwKSsxMj4+Ml18MCk9PTA/KGNbKGNbYj4+Ml18MCkrMTY+PjJdfDApPT0wOjApY29udGludWUgYTthPWNbYj4+Ml18MDtpZihjWyhjW2I+PjJdfDApKzEyPj4yXXwwKWE9Y1thKzEyPj4yXXwwO2Vsc2UgYT1jW2ErMTY+PjJdfDA7Y1tiPj4yXT1hfX1jW2I+PjJdPWNbZD4+Ml19aT1lO3JldHVybn1mdW5jdGlvbiBocChhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTA7aj1pO2k9aSszMnwwO2U9ais4fDA7Zj1qKzIwfDA7Zz1qO2g9aisxNnwwO2NbZj4+Ml09YTthPWc7Y1thPj4yXT1iO2NbYSs0Pj4yXT1kO2lmKChjW2Y+PjJdfDApIT0wPyhjW2g+PjJdPVRlKGNbZj4+Ml18MCl8MCwoY1toPj4yXXwwKT09MSk6MCl7YT1kZShjW2Y+PjJdfDApfDA7aD1lO2NbaD4+Ml09YTtjW2grND4+Ml09QztoPWU7YT1oO2E9Y1thPj4yXXwwO2g9aCs0fDA7aD1jW2g+PjJdfDA7Qz1oO2k9ajtyZXR1cm4gYXwwfWE9Y1tnKzQ+PjJdfDA7aD1lO2NbaD4+Ml09Y1tnPj4yXTtjW2grND4+Ml09YTtoPWU7YT1oO2E9Y1thPj4yXXwwO2g9aCs0fDA7aD1jW2g+PjJdfDA7Qz1oO2k9ajtyZXR1cm4gYXwwfWZ1bmN0aW9uIGlwKGEsYixkLGUsZixnLGgsaixrLGwpe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO2s9a3wwO2w9bHwwO3ZhciBtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wO3M9aTtpPWkrNjR8MDtyPXMrOHwwO3E9czt6PXMrNTJ8MDt5PXMrNDh8MDt4PXMrNDR8MDt3PXMrNDB8MDt2PXMrMzZ8MDt1PXMrMzJ8MDttPXMrMjh8MDt0PXMrMjR8MDtuPXMrMjB8MDtvPXMrMTZ8MDtwPXMrMTJ8MDtjW3o+PjJdPWE7Y1t5Pj4yXT1iO2NbeD4+Ml09ZDtjW3c+PjJdPWU7Y1t2Pj4yXT1mO2NbdT4+Ml09ZztjW20+PjJdPWg7Y1t0Pj4yXT1qO2Nbbj4+Ml09aztjW28+PjJdPWw7Y1twPj4yXT11cChjW3o+PjJdfDAsY1t5Pj4yXXwwLGNbeD4+Ml18MCxjW3c+PjJdfDAsY1t2Pj4yXXwwLGNbdT4+Ml18MCxjW20+PjJdfDAsY1t0Pj4yXXwwLGNbbj4+Ml18MCl8MDtpZigoKGNbcD4+Ml18MCk9PTA/KGNbY1tuPj4yXT4+Ml18MCkhPTA6MCk/KGNbcD4+Ml09dnAoY1tuPj4yXXwwLDEyKXwwLChjW3A+PjJdfDApPT0wKTowKWNbcD4+Ml09d3AoY1tjW24+PjJdPj4yXXwwLDEyKXwwO2lmKCEoY1twPj4yXXwwKSl7ej1jW3A+PjJdfDA7aT1zO3JldHVybiB6fDB9Z3AoY1tjW24+PjJdPj4yXXwwKTtjW2Nbbj4+Ml0+PjJdPTA7aWYoKGNbcD4+Ml18MCk9PTE4KXt6PWNbbz4+Ml18MDtjW3E+PjJdPTEyO0ZrKHosMjM3MjMscSk7Y1twPj4yXT0xO3o9Y1twPj4yXXwwO2k9cztyZXR1cm4genwwfWlmKChjW3A+PjJdfDApIT0xKXt6PWNbcD4+Ml18MDtpPXM7cmV0dXJuIHp8MH16PWNbbz4+Ml18MDtjW3I+PjJdPWNbbT4+Ml07RmsoeiwyMzc3NSxyKTt6PWNbcD4+Ml18MDtpPXM7cmV0dXJuIHp8MH1mdW5jdGlvbiBqcChhKXthPWF8MDt2YXIgYj0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MDtuPWk7aT1pKzQ4fDA7Yj1uKzM2fDA7bz1uKzMyfDA7bT1uKzI4fDA7aj1uKzI0fDA7aD1uKzIwfDA7ZT1uKzE2fDA7Zj1uKzEyfDA7Zz1uKzh8MDtrPW4rNHwwO2w9bjtjW2I+PjJdPWE7Y1tvPj4yXT1jW2NbYj4+Ml0+PjJdO2NbbT4+Ml09MDtjW2o+PjJdPTA7Y1toPj4yXT0wO2twKGNbYj4+Ml18MCxjWyhjW2I+PjJdfDApKzEyPj4yXXwwLGosaCxtKTtkbyBpZigoY1ttPj4yXXwwKT09MCYoY1tqPj4yXXwwKT4xPyhkWyhjW28+PjJdfDApKzIyOD4+MF18MHwwKSE9MDowKXtjW2U+PjJdPUlkKCgoY1tqPj4yXXwwKSoyNHwwKSsoY1toPj4yXTw8Mjw8MSl8MCl8MDtjW2Y+PjJdPShjW2U+PjJdfDApKygoY1tqPj4yXXwwKSoyNHwwKTtpZighKGNbZT4+Ml18MCkpe2NbbT4+Ml09NzticmVha31jW2s+PjJdPWNbZT4+Ml07Y1tsPj4yXT1jW2Y+PjJdO2xwKGNbYj4+Ml18MCwwLGNbKGNbYj4+Ml18MCkrMTI+PjJdfDAsayxsLG0pO2Nbaj4+Ml09KChjW2s+PjJdfDApLShjW2U+PjJdfDApfDApLzI0fDA7Y1toPj4yXT0oKGNbbD4+Ml18MCktKGNbZj4+Ml18MCl8MCkvNHwwO2E6ZG8gaWYoIShjW20+PjJdfDApKXtjW20+PjJdPW1wKGNbYj4+Ml18MCwwLGNbZT4+Ml18MCxjW2o+PjJdfDApfDA7Y1tnPj4yXT0wO3doaWxlKDEpe2lmKGNbbT4+Ml18MClicmVhayBhO2lmKChjW2c+PjJdfDApPj0oY1toPj4yXXwwKSlicmVhayBhO2NbbT4+Ml09bXAoY1tiPj4yXXwwLGNbKGNbZj4+Ml18MCkrKGNbZz4+Ml08PDIpPj4yXXwwLGNbZT4+Ml18MCxjW2o+PjJdfDApfDA7Y1tnPj4yXT0oY1tnPj4yXXwwKSsxfX13aGlsZSgwKTtLZChjW2U+PjJdfDApfXdoaWxlKDApO25wKGNbYj4+Ml18MCxjWyhjW2I+PjJdfDApKzEyPj4yXXwwLG0pO2k9bjtyZXR1cm4gY1ttPj4yXXwwfWZ1bmN0aW9uIGtwKGEsYixkLGUsZil7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MDtxPWk7aT1pKzQ4fDA7Zz1xKzMyfDA7bj1xKzI4fDA7aD1xKzI0fDA7aj1xKzIwfDA7bz1xKzE2fDA7az1xKzEyfDA7bD1xKzh8MDttPXErNHwwO3A9cTtjW2c+PjJdPWE7Y1tuPj4yXT1iO2NbaD4+Ml09ZDtjW2o+PjJdPWU7Y1tvPj4yXT1mO2lmKCEoY1tuPj4yXXwwKSl7aT1xO3JldHVybn1pZihjW2Nbbz4+Ml0+PjJdfDApe2k9cTtyZXR1cm59YT1jW24+PjJdfDA7aWYoKGNbY1tuPj4yXT4+Ml18MCkhPTUpe3A9Y1tqPj4yXXwwO2NbcD4+Ml09KGNbcD4+Ml18MCkrKChjW2E+PjJdfDApPT00JjEpO2twKGNbZz4+Ml18MCxjWyhjW24+PjJdfDApKzEyPj4yXXwwLGNbaD4+Ml18MCxjW2o+PjJdfDAsY1tvPj4yXXwwKTtrcChjW2c+PjJdfDAsY1soY1tuPj4yXXwwKSsxNj4+Ml18MCxjW2g+PjJdfDAsY1tqPj4yXXwwLGNbbz4+Ml18MCk7aT1xO3JldHVybn1jW2w+PjJdPWNbKGNbYSsyMD4+Ml18MCkrNjQ+PjJdO2o9Y1toPj4yXXwwO2Nbaj4+Ml09KGNbaj4+Ml18MCkrKGNbbD4+Ml18MCk7Y1trPj4yXT0wO3doaWxlKDEpe2lmKChjW2s+PjJdfDApPj0oY1tsPj4yXXwwKSl7YT05O2JyZWFrfWNbbT4+Ml09KGNbKGNbbj4+Ml18MCkrMjA+PjJdfDApKzcyKygoY1trPj4yXXwwKSoyNHwwKTtjW3A+PjJdPXNwKGNbZz4+Ml18MCxjW2NbbT4+Ml0+PjJdfDAsY1soY1ttPj4yXXwwKSs0Pj4yXXwwLGNbKGNbbT4+Ml18MCkrOD4+Ml18MCwoY1ttPj4yXXwwKSsyMHwwKXwwO2lmKGNbcD4+Ml18MCl7YT03O2JyZWFrfWNbaz4+Ml09KGNbaz4+Ml18MCkrMX1pZigoYXwwKT09Nyl7Y1tjW28+PjJdPj4yXT1jW3A+PjJdO2k9cTtyZXR1cm59ZWxzZSBpZigoYXwwKT09OSl7Y1soY1soY1tuPj4yXXwwKSsyMD4+Ml18MCkrNDQ+PjJdPS0xO2k9cTtyZXR1cm59fWZ1bmN0aW9uIGxwKGEsYixkLGUsZixnKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDt2YXIgaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wO3I9aTtpPWkrNDh8MDtsPXIrMzJ8MDttPXIrMjh8MDtuPXIrMjR8MDtvPXIrMjB8MDtwPXIrMTZ8MDtxPXIrMTJ8MDtqPXIrOHwwO2g9cis0fDA7az1yO2NbbD4+Ml09YTtjW20+PjJdPWI7Y1tuPj4yXT1kO2Nbbz4+Ml09ZTtjW3A+PjJdPWY7Y1txPj4yXT1nO2lmKGNbY1txPj4yXT4+Ml18MCl7aT1yO3JldHVybn1kPWNbbj4+Ml18MDtpZigoY1tjW24+PjJdPj4yXXwwKT09NSl7Y1tqPj4yXT1jW2QrMjA+PjJdO2NbaD4+Ml09MDt3aGlsZSgxKXtpZihjW2NbcT4+Ml0+PjJdfDApe2E9MTM7YnJlYWt9aWYoKGNbaD4+Ml18MCk+PShjWyhjW2o+PjJdfDApKzY0Pj4yXXwwKSl7YT0xMzticmVha31uPWNbbz4+Ml18MDtwPWNbbj4+Ml18MDtjW24+PjJdPXArMjQ7Y1trPj4yXT1wO2NbY1trPj4yXT4+Ml09Y1tqPj4yXTtjWyhjW2s+PjJdfDApKzQ+PjJdPWNbaD4+Ml07Y1soY1trPj4yXXwwKSsxMj4+Ml09Y1ttPj4yXTtjWyhjW2s+PjJdfDApKzg+PjJdPShjW2o+PjJdfDApKzcyKygoY1toPj4yXXwwKSoyNHwwKTtjWyhjW2s+PjJdfDApKzIwPj4yXT1jWyhjW2o+PjJdfDApKzY4Pj4yXTtwPXJwKGNbbD4+Ml18MCxjWyhjWyhjW2s+PjJdfDApKzg+PjJdfDApKzIwPj4yXXwwLChjW2s+PjJdfDApKzE2fDApfDA7Y1tjW3E+PjJdPj4yXT1wO2NbaD4+Ml09KGNbaD4+Ml18MCkrMX1pZigoYXwwKT09MTMpe2k9cjtyZXR1cm59fWlmKChjW2Q+PjJdfDApPT0yKXtpPXI7cmV0dXJufWlmKChjW2Nbbj4+Ml0+PjJdfDApPT00KXtjW20+PjJdPWNbKGNbbj4+Ml18MCkrMTI+PjJdO2NbY1tjW3A+PjJdPj4yXT4+Ml09Y1ttPj4yXTtrPWNbcD4+Ml18MDtjW2s+PjJdPShjW2s+PjJdfDApKzR9bHAoY1tsPj4yXXwwLGNbbT4+Ml18MCxjWyhjW24+PjJdfDApKzEyPj4yXXwwLGNbbz4+Ml18MCxjW3A+PjJdfDAsY1txPj4yXXwwKTtpZigoY1tjW24+PjJdPj4yXXwwKT09NCl7Y1ttPj4yXT1jWyhjW24+PjJdfDApKzE2Pj4yXTtjW2NbY1twPj4yXT4+Ml0+PjJdPWNbbT4+Ml07az1jW3A+PjJdfDA7Y1trPj4yXT0oY1trPj4yXXwwKSs0fWxwKGNbbD4+Ml18MCxjW20+PjJdfDAsY1soY1tuPj4yXXwwKSsxNj4+Ml18MCxjW28+PjJdfDAsY1twPj4yXXwwLGNbcT4+Ml18MCk7aT1yO3JldHVybn1mdW5jdGlvbiBtcChhLGIsZCxlKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wO0I9aTtpPWkrODB8MDtmPUIrNzZ8MDtnPUIrNzJ8MDtoPUIrNjh8MDtqPUIrNjR8MDtrPUIrNjB8MDt3PUIrNTZ8MDtvPUIrNTJ8MDt6PUIrNDh8MDttPUIrNDR8MDtzPUIrNDB8MDt0PUIrMzZ8MDtyPUIrMzJ8MDtxPUIrMjh8MDtsPUIrMjR8MDt2PUIrMjB8MDt4PUIrMTZ8MDt5PUIrMTJ8MDtwPUIrOHwwO3U9Qis0fDA7bj1CO2NbZz4+Ml09YTtjW2g+PjJdPWI7Y1tqPj4yXT1kO2Nbaz4+Ml09ZTtjW3c+PjJdPWNbY1tnPj4yXT4+Ml07Y1tvPj4yXT0wO2Nbej4+Ml09MDtjW3M+PjJdPTA7Y1t0Pj4yXT0wO2Nbcj4+Ml09MDtjW3E+PjJdPTE7aWYoY1soY1t3Pj4yXXwwKSs0MD4+Ml18MCl7Y1tmPj4yXT0wO0E9Y1tmPj4yXXwwO2k9QjtyZXR1cm4gQXwwfWNbbT4+Ml09MDt3aGlsZSgxKXtpZigoY1ttPj4yXXwwKT49KGNbaz4+Ml18MCkpYnJlYWs7aWYoKGNbKGNbaj4+Ml18MCkrKChjW20+PjJdfDApKjI0fDApKzEyPj4yXXwwKT09KGNbaD4+Ml18MCkpe2Nbcz4+Ml09KGNbcz4+Ml18MCkrKGNbKGNbaj4+Ml18MCkrKChjW20+PjJdfDApKjI0fDApKzE2Pj4yXXwwKTtjW3Q+PjJdPShjW3Q+PjJdfDApKzF9Y1ttPj4yXT0oY1ttPj4yXXwwKSsxfWlmKChjW3M+PjJdfDApPT0wfChjW3Q+PjJdfDApPDIpe2NbZj4+Ml09MDtBPWNbZj4+Ml18MDtpPUI7cmV0dXJuIEF8MH1jW3o+PjJdPW9wKGNbZz4+Ml18MCxvKXwwO2NbbT4+Ml09MDt3aGlsZSgxKXtpZighKChjW20+PjJdfDApPChjW3Q+PjJdfDApPyhjW3o+PjJdfDApPT0wOjApKWJyZWFrO2Nbdj4+Ml09MDtjW2w+PjJdPTA7d2hpbGUoMSl7aWYoKGNbbD4+Ml18MCk+PShjW2s+PjJdfDApKWJyZWFrO2RvIGlmKChjWyhjW2o+PjJdfDApKygoY1tsPj4yXXwwKSoyNHwwKSs4Pj4yXXwwKSE9MD8oY1soY1tqPj4yXXwwKSsoKGNbbD4+Ml18MCkqMjR8MCkrMTI+PjJdfDApPT0oY1toPj4yXXwwKTowKXtpZigoY1t2Pj4yXXwwKSE9MD8oY1soY1tqPj4yXXwwKSsoKGNbbD4+Ml18MCkqMjR8MCkrMTY+PjJdfDApPj0oY1soY1t2Pj4yXXwwKSsxNj4+Ml18MCk6MClicmVhaztjW3Y+PjJdPShjW2o+PjJdfDApKygoY1tsPj4yXXwwKSoyNHwwKX13aGlsZSgwKTtjW2w+PjJdPShjW2w+PjJdfDApKzF9aWYoKGNbbT4+Ml18MCkhPTA/KGNbKGNbdj4+Ml18MCkrMTY+PjJdfDApPj0oXygoKGNbcj4+Ml18MCkrKChjW3E+PjJdfDApLzR8MCktMXwwKS8oKGNbcT4+Ml18MCkvNHwwfDApfDAsY1tvPj4yXXwwKXwwKTowKXtjW3g+PjJdPWNbKGNbdj4+Ml18MCkrOD4+Ml07Y1t6Pj4yXT1wcChjW2c+PjJdfDAsY1t4Pj4yXXwwLGNbKGNbdj4+Ml18MCkrMjA+PjJdfDApfDA7b24oY1soY1t4Pj4yXXwwKSsyMD4+Ml18MCk7Y1soY1t4Pj4yXXwwKSsyMD4+Ml09MH1lbHNlIEE9MjM7ZG8gaWYoKEF8MCk9PTIzKXtBPTA7aWYoKGNbbT4+Ml18MCk8MTIpY1txPj4yXT1jW3E+PjJdPDwyO2lmKGNbbT4+Ml18MCl7aWYoKGNbKGNbY1t2Pj4yXT4+Ml18MCkrNjQ+PjJdfDApPD0xKWJyZWFrO2lmKChjW20+PjJdfDApPT0oKGNbdD4+Ml18MCktMXwwKSlicmVha31jW3k+PjJdPWNbKGNbdj4+Ml18MCkrOD4+Ml07Y1twPj4yXT0wO2NbdT4+Ml09MDtjW3o+PjJdPWduKGNbdz4+Ml18MCxjW3k+PjJdfDAsY1soY1t2Pj4yXXwwKSsyMD4+Ml18MCxwLHUpfDA7aWYoIShjW3o+PjJdfDApKWNbej4+Ml09aG4oY1t3Pj4yXXwwLGNbY1t2Pj4yXT4+Ml18MCxjWyhjW3Y+PjJdfDApKzQ+PjJdfDAsY1t1Pj4yXXwwLGNbcD4+Ml18MCl8MDtpZighKGNbej4+Ml18MCkpe2Nbbj4+Ml09cXAoY1tjW2Nbdj4+Ml0+PjJdPj4yXXwwLGNbKGNbY1t2Pj4yXT4+Ml18MCkrND4+Ml18MCl8MDtpZigoY1ttPj4yXXwwKSE9MD8oY1tuPj4yXXwwKT49KGNbcj4+Ml18MCk6MClicmVhaztjW3I+PjJdPWNbbj4+Ml19fXdoaWxlKDApO2NbKGNbdj4+Ml18MCkrOD4+Ml09MDtjW20+PjJdPShjW20+PjJdfDApKzF9Y1tmPj4yXT1jW3o+PjJdO0E9Y1tmPj4yXXwwO2k9QjtyZXR1cm4gQXwwfWZ1bmN0aW9uIG5wKGIsZSxmKXtiPWJ8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTA7bT1pO2k9aSszMnwwO2c9bSsxNnwwO2w9bSsxMnwwO2g9bSs4fDA7az1tKzR8MDtqPW07Y1tnPj4yXT1iO2NbbD4+Ml09ZTtjW2g+PjJdPWY7aWYoIShjW2w+PjJdfDApKXtpPW07cmV0dXJufWlmKGNbY1toPj4yXT4+Ml18MCl7aT1tO3JldHVybn1pZigoY1tjW2w+PjJdPj4yXXwwKSE9NSl7bnAoY1tnPj4yXXwwLGNbKGNbbD4+Ml18MCkrMTI+PjJdfDAsY1toPj4yXXwwKTtucChjW2c+PjJdfDAsY1soY1tsPj4yXXwwKSsxNj4+Ml18MCxjW2g+PjJdfDApO2lmKGRbKGNbKGNbbD4+Ml18MCkrMTI+PjJdfDApKzM0Pj4wXXwwKWc9KGRbKGNbKGNbbD4+Ml18MCkrMTY+PjJdfDApKzM0Pj4wXXwwfDApIT0wO2Vsc2UgZz0wO2FbKGNbbD4+Ml18MCkrMzQ+PjBdPWcmMTtpPW07cmV0dXJufWNbaz4+Ml09Y1soY1soY1tsPj4yXXwwKSsyMD4+Ml18MCkrNjQ+PjJdO2lmKGNbaz4+Ml18MCl7Y1tqPj4yXT0wO3doaWxlKDEpe2lmKChjW2o+PjJdfDApPj0oY1trPj4yXXwwKSlicmVhaztpZighKGNbKGNbKGNbbD4+Ml18MCkrMjA+PjJdfDApKzcyKygoY1tqPj4yXXwwKSoyNHwwKSsxNj4+Ml18MCkpYnJlYWs7Y1tqPj4yXT0oY1tqPj4yXXwwKSsxfWFbKGNbbD4+Ml18MCkrMzQ+PjBdPShjW2o+PjJdfDApPT0oY1trPj4yXXwwKX1sPWRuKGNbZz4+Ml18MCwxLGNbKGNbbD4+Ml18MCkrMjA+PjJdfDApfDA7Y1tjW2g+PjJdPj4yXT1sO2k9bTtyZXR1cm59ZnVuY3Rpb24gb3AoYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MDtvPWk7aT1pKzQ4fDA7ZD1vKzQ0fDA7ZT1vKzQwfDA7Zj1vKzM2fDA7bj1vKzMyfDA7az1vKzI4fDA7bT1vKzI0fDA7aj1vKzh8MDtoPW87bD1vKzIwfDA7Zz1vKzE2fDA7Y1tlPj4yXT1hO2NbZj4+Ml09YjtpZighKGNbKGNbZT4+Ml18MCkrNjA+PjJdfDApKXtjW2s+PjJdPWNbY1tlPj4yXT4+Ml07Yj1qO2NbYj4+Ml09MDtjW2IrND4+Ml09MDtiPWg7Y1tiPj4yXT0wO2NbYis0Pj4yXT0wO2Nbbj4+Ml09UG4oY1trPj4yXXwwLG0pfDA7aWYoY1tuPj4yXXwwKXtjW2Q+PjJdPWNbbj4+Ml07bj1jW2Q+PjJdfDA7aT1vO3JldHVybiBufDB9Y1tnPj4yXT16ZShjW20+PjJdfDAsMCl8MDtiPUFlKGNbbT4+Ml18MCwwKXwwO2NbbD4+Ml09KGNbZz4+Ml18MCkrYjtiPV9sKGNbZz4+Ml18MCxqKXwwO2NbZz4+Ml09KGNbZz4+Ml18MCkrYjt3aGlsZSgxKXtpZigoY1tnPj4yXXwwKT4+PjA+PShjW2w+PjJdfDApPj4+MClicmVhaztiPV9sKGNbZz4+Ml18MCxoKXwwO2NbZz4+Ml09KGNbZz4+Ml18MCkrYn1sPWo7Yj1oO2lmKChjW2w+PjJdfDApPT0wJihjW2wrND4+Ml18MCk9PTB8KGNbYj4+Ml18MCk9PTAmKGNbYis0Pj4yXXwwKT09MCl7WWQoY1ttPj4yXXwwKXwwO2NbZD4+Ml09MjY3O249Y1tkPj4yXXwwO2k9bztyZXR1cm4gbnwwfWE9ajtiPWNbYSs0Pj4yXXwwO2w9KGNbZT4+Ml18MCkrNjR8MDtjW2w+PjJdPWNbYT4+Ml07Y1tsKzQ+PjJdPWI7bD1oO2I9ajtiPV9SKGNbbD4+Ml18MCxjW2wrND4+Ml18MCxjW2I+PjJdfDAsY1tiKzQ+PjJdfDApfDA7bD1jWyhjW2s+PjJdfDApKzIzNj4+Ml18MDtsPVJSKGJ8MCxDfDAsbHwwLCgobHwwKTwwKTw8MzE+PjMxfDApfDA7Yj1jWyhjW2s+PjJdfDApKzIzNj4+Ml18MDtiPV9SKGx8MCxDfDAsYnwwLCgoYnwwKTwwKTw8MzE+PjMxfDApfDA7Y1soY1tlPj4yXXwwKSs2MD4+Ml09YjtjW24+PjJdPVlkKGNbbT4+Ml18MCl8MDtpZihjW24+PjJdfDApe2NbZD4+Ml09Y1tuPj4yXTtuPWNbZD4+Ml18MDtpPW87cmV0dXJuIG58MH19Y1tjW2Y+PjJdPj4yXT1jWyhjW2U+PjJdfDApKzYwPj4yXTtjW2Q+PjJdPTA7bj1jW2Q+PjJdfDA7aT1vO3JldHVybiBufDB9ZnVuY3Rpb24gcHAoYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MDtrPWk7aT1pKzMyfDA7ZT1rKzE2fDA7Zj1rKzEyfDA7Zz1rKzh8MDtoPWsrNHwwO2o9aztjW2Y+PjJdPWE7Y1tnPj4yXT1iO2NbaD4+Ml09ZDtjW2o+PjJdPUlkKDE2KXwwO2lmKGNbaj4+Ml18MCl7Yj1jW2o+PjJdfDA7Y1tiPj4yXT0wO2NbYis0Pj4yXT0wO2NbYis4Pj4yXT0wO2NbYisxMj4+Ml09MDtjW2Nbaj4+Ml0+PjJdPWNbZz4+Ml07Y1soY1tqPj4yXXwwKSs4Pj4yXT1jWyhjW2Y+PjJdfDApKzI0Pj4yXTtjWyhjW2o+PjJdfDApKzQ+PjJdPWNbaD4+Ml07Y1soY1tmPj4yXXwwKSsyND4+Ml09Y1tqPj4yXTtjWyhjW2c+PjJdfDApKzE2Pj4yXT1jW2o+PjJdO2NbZT4+Ml09MDtiPWNbZT4+Ml18MDtpPWs7cmV0dXJuIGJ8MH1lbHNle2NbZT4+Ml09NztiPWNbZT4+Ml18MDtpPWs7cmV0dXJuIGJ8MH1yZXR1cm4gMH1mdW5jdGlvbiBxcChiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MDtrPWk7aT1pKzMyfDA7ZT1rKzE2fDA7Zj1rKzEyfDA7aD1rKzh8MDtnPWsrNHwwO2o9aztjW2U+PjJdPWI7Y1tmPj4yXT1kO2NbaD4+Ml09MDtpZighKGNbZT4+Ml18MCkpe2o9Y1toPj4yXXwwO2k9aztyZXR1cm4ganwwfWNbZz4+Ml09KGNbZT4+Ml18MCkrKGNbZj4+Ml18MCk7Y1tqPj4yXT1jW2U+PjJdO3doaWxlKDEpe2lmKChjW2o+PjJdfDApPj4+MD49KGNbZz4+Ml18MCk+Pj4wKWJyZWFrO2NbaD4+Ml09KGNbaD4+Ml18MCkrMTtkb3tkPWNbaj4+Ml18MDtjW2o+PjJdPWQrMX13aGlsZSgoYVtkPj4wXSYxMjh8MCkhPTApO2RtKDAsail9aj1jW2g+PjJdfDA7aT1rO3JldHVybiBqfDB9ZnVuY3Rpb24gcnAoYSxiLGUpe2E9YXwwO2I9YnwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MDtxPWk7aT1pKzQ4fDA7cj1xKzQ0fDA7Zj1xKzQwfDA7bj1xKzM2fDA7az1xKzMyfDA7bz1xKzI4fDA7Zz1xKzI0fDA7cD1xKzIwfDA7bT1xKzE2fDA7bD1xKzEyfDA7aD1xO2o9cSs4fDA7Y1tyPj4yXT1hO2NbZj4+Ml09YjtjW24+PjJdPWU7Y1trPj4yXT1jW2Nbcj4+Ml0+PjJdO2Nbbz4+Ml09MDtjW3A+PjJdPTA7Y1ttPj4yXT1jWyhjW2s+PjJdfDApKzIzNj4+Ml07Y1tnPj4yXT0wO3doaWxlKDEpe2lmKGNbcD4+Ml18MCl7Zj0xMzticmVha31pZigoY1tnPj4yXXwwKT49KGNbKGNbZj4+Ml18MCkrND4+Ml18MCkpe2Y9MTM7YnJlYWt9Y1tsPj4yXT1jWyhjW2NbZj4+Ml0+PjJdfDApKyhjW2c+PjJdPDwyKT4+Ml07YTpkbyBpZigoY1soY1tsPj4yXXwwKSs1Nj4+Ml18MCk9PTA/KGRbKGNbbD4+Ml18MCkrNT4+MF18MHwwKT09MDowKXtiPShjW2w+PjJdfDApKzh8MDtlPWNbYis0Pj4yXXwwO3I9aDtjW3I+PjJdPWNbYj4+Ml07Y1tyKzQ+PjJdPWU7d2hpbGUoMSl7ZT1oO2E9Y1tlKzQ+PjJdfDA7cj0oY1tsPj4yXXwwKSsxNnwwO2I9Y1tyKzQ+PjJdfDA7aWYoISgoYXwwKTwoYnwwKXwoKGF8MCk9PShifDApPyhjW2U+PjJdfDApPj4+MDw9KGNbcj4+Ml18MCk+Pj4wOjApKSlicmVhayBhO3I9aDtjW3A+PjJdPWdtKGNbaz4+Ml18MCxjW3I+PjJdfDAsY1tyKzQ+PjJdfDAsMCxqLDApfDA7aWYoY1twPj4yXXwwKWJyZWFrIGE7aWYoKChjW2o+PjJdfDApKzM1fDApPihjW20+PjJdfDApKWNbbz4+Ml09KGNbbz4+Ml18MCkrKCgoY1tqPj4yXXwwKSszNHwwKS8oY1ttPj4yXXwwKXwwKTtlPWg7ZT1SUihjW2U+PjJdfDAsY1tlKzQ+PjJdfDAsMSwwKXwwO3I9aDtjW3I+PjJdPWU7Y1tyKzQ+PjJdPUN9fXdoaWxlKDApO2NbZz4+Ml09KGNbZz4+Ml18MCkrMX1pZigoZnwwKT09MTMpe2NbY1tuPj4yXT4+Ml09Y1tvPj4yXTtpPXE7cmV0dXJuIGNbcD4+Ml18MH1yZXR1cm4gMH1mdW5jdGlvbiBzcChhLGIsZCxlLGYpe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wO3I9aTtpPWkrNDh8MDtnPXIrMzZ8MDtoPXIrMzJ8MDtqPXIrMjh8MDtrPXIrMjR8MDtsPXIrMjB8MDtwPXIrMTZ8MDtxPXIrMTJ8MDtuPXIrOHwwO209cis0fDA7bz1yO2NbZz4+Ml09YTtjW2g+PjJdPWI7Y1tqPj4yXT1kO2Nbaz4+Ml09ZTtjW2w+PjJdPWY7Y1txPj4yXT03O2NbcD4+Ml09SWQoNTYpfDA7aWYoIShjW3A+PjJdfDApKXtmPWNbcD4+Ml18MDtiPWNbbD4+Ml18MDtjW2I+PjJdPWY7Yj1jW3E+PjJdfDA7aT1yO3JldHVybiBifDB9Y1ttPj4yXT0wO2Nbbz4+Ml09Y1tjW2c+PjJdPj4yXTthOmRvIGlmKGNbaz4+Ml18MCl7Y1tuPj4yXT0xO3doaWxlKDEpe2lmKGNbbT4+Ml18MClicmVhaztpZigoY1tuPj4yXXwwKT49KGNbKGNbbz4+Ml18MCkrMjQ4Pj4yXXwwKSlicmVhaztpZigoY1soY1soY1tvPj4yXXwwKSsyNTI+PjJdfDApKygoY1tuPj4yXXwwKSoyNHwwKT4+Ml18MCk9PShjW2o+PjJdfDApKXtjW20+PjJdPTE7Y1txPj4yXT1xbChjW28+PjJdfDAsY1soY1tnPj4yXXwwKSsxNj4+Ml18MCxjW24+PjJdfDAsLTIsY1toPj4yXXwwLGNbaj4+Ml18MCwwLDAsY1twPj4yXXwwKXwwO2NbKGNbcD4+Ml18MCkrMzY+PjJdPTF9Y1tuPj4yXT0oY1tuPj4yXXwwKSsxfWNbbj4+Ml09MTt3aGlsZSgxKXtpZihjW20+PjJdfDApYnJlYWsgYTtpZigoY1tuPj4yXXwwKT49KGNbKGNbbz4+Ml18MCkrMjQ4Pj4yXXwwKSlicmVhayBhO2lmKChjWyhjWyhjW28+PjJdfDApKzI1Mj4+Ml18MCkrKChjW24+PjJdfDApKjI0fDApPj4yXXwwKT09KChjW2o+PjJdfDApKzF8MCk/KGNbbT4+Ml09MSxjW3E+PjJdPXFsKGNbbz4+Ml18MCxjWyhjW2c+PjJdfDApKzE2Pj4yXXwwLGNbbj4+Ml18MCwtMixjW2g+PjJdfDAsY1tqPj4yXXwwLDEsMCxjW3A+PjJdfDApfDAsKGNbcT4+Ml18MCk9PTApOjApY1txPj4yXT10cChjW28+PjJdfDAsY1soY1tnPj4yXXwwKSsxNj4+Ml18MCxjW2g+PjJdfDAsY1tqPj4yXXwwLGNbcD4+Ml18MCl8MDtjW24+PjJdPShjW24+PjJdfDApKzF9fXdoaWxlKDApO2lmKGNbbT4+Ml18MCl7Zj1jW3A+PjJdfDA7Yj1jW2w+PjJdfDA7Y1tiPj4yXT1mO2I9Y1txPj4yXXwwO2k9cjtyZXR1cm4gYnwwfWNbcT4+Ml09cWwoY1tvPj4yXXwwLGNbKGNbZz4+Ml18MCkrMTY+PjJdfDAsMCwtMixjW2g+PjJdfDAsY1tqPj4yXXwwLGNbaz4+Ml18MCwwLGNbcD4+Ml18MCl8MDtjWyhjW3A+PjJdfDApKzM2Pj4yXT0oKGNbaz4+Ml18MCkhPTBeMSkmMTtmPWNbcD4+Ml18MDtiPWNbbD4+Ml18MDtjW2I+PjJdPWY7Yj1jW3E+PjJdfDA7aT1yO3JldHVybiBifDB9ZnVuY3Rpb24gdHAoYSxiLGQsZSxmKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTA7Zz1pO2k9aSszMnwwO209ZysxNnwwO2w9ZysxMnwwO2s9Zys4fDA7aj1nKzR8MDtoPWc7Y1ttPj4yXT1hO2NbbD4+Ml09YjtjW2s+PjJdPWQ7Y1tqPj4yXT1lO2NbaD4+Ml09ZjtkPWptKGNbbT4+Ml18MCxjW2w+PjJdfDAsMCwtMixjW2s+PjJdfDAsY1tqPj4yXXwwLDAsMCxjW2g+PjJdfDApfDA7aT1nO3JldHVybiBkfDB9ZnVuY3Rpb24gdXAoYSxiLGQsZSxmLGcsaCxqLGspe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO2s9a3wwO3ZhciBsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wO3k9aTtpPWkrOTZ8MDtsPXkrODB8MDttPXkrNzZ8MDtuPXkrNzJ8MDtvPXkrNjh8MDtwPXkrNjR8MDtxPXkrNjB8MDtyPXkrNTZ8MDtzPXkrNTJ8MDt0PXkrNDh8MDt1PXkrNDR8MDt2PXkrNDB8MDt3PXkrMzZ8MDt4PXk7Y1ttPj4yXT1hO2Nbbj4+Ml09YjtjW28+PjJdPWQ7Y1twPj4yXT1lO2NbcT4+Ml09ZjtjW3I+PjJdPWc7Y1tzPj4yXT1oO2NbdD4+Ml09ajtjW3U+PjJdPWs7ZD14O2U9ZCszNnwwO2Rve2NbZD4+Ml09MDtkPWQrNHwwfXdoaWxlKChkfDApPChlfDApKTtjW3g+PjJdPWNbbT4+Ml07Y1t4KzQ+PjJdPWNbbj4+Ml07Y1t4Kzg+PjJdPWNbbz4+Ml07Y1t4KzE2Pj4yXT1jW3E+PjJdO2NbeCsyMD4+Ml09Y1tyPj4yXTtjW3grMTI+PjJdPWNbcD4+Ml07aWYoIShjW3M+PjJdfDApKXtjW2NbdT4+Ml0+PjJdPTA7Y1tsPj4yXT0wO3g9Y1tsPj4yXXwwO2k9eTtyZXR1cm4geHwwfWlmKChjW3Q+PjJdfDApPDApY1t0Pj4yXT1rUihjW3M+PjJdfDApfDA7Y1t3Pj4yXT14cCh4LGNbcz4+Ml18MCxjW3Q+PjJdfDAsY1t1Pj4yXXwwLHYpfDA7aWYoKGNbdz4+Ml18MCk9PTA/KGNbeCszMj4+Ml18MCkhPTA6MCljW3c+PjJdPTE7Y1tsPj4yXT1jW3c+PjJdO3g9Y1tsPj4yXXwwO2k9eTtyZXR1cm4geHwwfWZ1bmN0aW9uIHZwKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MDt0PWk7aT1pKzY0fDA7Zj10KzUyfDA7Zz10KzQ4fDA7cj10KzQ0fDA7cT10KzQwfDA7bz10KzM2fDA7aj10KzMyfDA7aD10KzI4fDA7az10KzI0fDA7bT10KzIwfDA7bD10KzE2fDA7cD10KzEyfDA7bj10Kzh8MDtkPXQrNHwwO2U9dDtjW2Y+PjJdPWE7Y1tnPj4yXT1iO2Nbcj4+Ml09MDtjW3E+PjJdPWNbY1tmPj4yXT4+Ml07Y1tvPj4yXT0wO2Nbaj4+Ml09Y1tjW3E+PjJdPj4yXTtpZighKGNbZz4+Ml18MCkpY1tyPj4yXT0xO2RvIGlmKCEoY1tyPj4yXXwwKSl7aWYoISgoY1tqPj4yXXwwKT09M3woY1tqPj4yXXwwKT09NCkpe2lmKChjW2o+PjJdfDApIT0yKWJyZWFrO2NbZD4+Ml09Y1soY1txPj4yXXwwKSsxMj4+Ml07Y1tlPj4yXT1jWyhjW3E+PjJdfDApKzE2Pj4yXTtjWyhjW3E+PjJdfDApKzEyPj4yXT0wO2NbKGNbcT4+Ml18MCkrMTY+PjJdPTA7Y1soY1tkPj4yXXwwKSs4Pj4yXT0wO2NbKGNbZT4+Ml18MCkrOD4+Ml09MDtjW3I+PjJdPXZwKGQsKGNbZz4+Ml18MCktMXwwKXwwO2lmKCEoY1tyPj4yXXwwKSljW3I+PjJdPXZwKGUsKGNbZz4+Ml18MCktMXwwKXwwO2lmKGNbcj4+Ml18MCl7Z3AoY1tlPj4yXXwwKTtncChjW2Q+PjJdfDApO2JyZWFrfWVsc2V7Y1soY1txPj4yXXwwKSsxMj4+Ml09Y1tkPj4yXTtjWyhjW2Q+PjJdfDApKzg+PjJdPWNbcT4+Ml07Y1soY1txPj4yXXwwKSsxNj4+Ml09Y1tlPj4yXTtjWyhjW2U+PjJdfDApKzg+PjJdPWNbcT4+Ml07YnJlYWt9fWNbaD4+Ml09SWQoY1tnPj4yXTw8Mil8MDtpZighKGNbaD4+Ml18MCkpY1tyPj4yXT03O2Vsc2UgVlIoY1toPj4yXXwwLDAsY1tnPj4yXTw8MnwwKXwwO2lmKCEoY1tyPj4yXXwwKSl7Y1ttPj4yXT1jW3E+PjJdO3doaWxlKDEpe2lmKChjW2NbbT4+Ml0+PjJdfDApIT0oY1tqPj4yXXwwKSlicmVhaztjW20+PjJdPWNbKGNbbT4+Ml18MCkrMTI+PjJdfXdoaWxlKDEpe2NbcD4+Ml09Y1soY1ttPj4yXXwwKSs4Pj4yXTtjWyhjW20+PjJdfDApKzg+PjJdPTA7aWYoY1twPj4yXXwwKWNbKGNbcD4+Ml18MCkrMTI+PjJdPTA7ZWxzZSBjW3E+PjJdPTA7Y1tyPj4yXT12cChtLChjW2c+PjJdfDApLTF8MCl8MDtpZihjW3I+PjJdfDApYnJlYWs7Y1tsPj4yXT0wO3doaWxlKDEpe2lmKCEoY1ttPj4yXXwwKSlicmVhaztpZigoY1tsPj4yXXwwKT49KGNbZz4+Ml18MCkpYnJlYWs7aWYoIShjWyhjW2g+PjJdfDApKyhjW2w+PjJdPDwyKT4+Ml18MCkpe2NbKGNbaD4+Ml18MCkrKGNbbD4+Ml08PDIpPj4yXT1jW20+PjJdO2NbbT4+Ml09MH1lbHNle2NbKGNbbz4+Ml18MCkrMTI+PjJdPWNbKGNbaD4+Ml18MCkrKGNbbD4+Ml08PDIpPj4yXTtjWyhjW28+PjJdfDApKzE2Pj4yXT1jW20+PjJdO2NbKGNbKGNbbz4+Ml18MCkrMTI+PjJdfDApKzg+PjJdPWNbbz4+Ml07Y1soY1soY1tvPj4yXXwwKSsxNj4+Ml18MCkrOD4+Ml09Y1tvPj4yXTtjW20+PjJdPWNbbz4+Ml07Y1tvPj4yXT1jWyhjW28+PjJdfDApKzg+PjJdO2NbKGNbbT4+Ml18MCkrOD4+Ml09MDtjWyhjW2g+PjJdfDApKyhjW2w+PjJdPDwyKT4+Ml09MH1jW2w+PjJdPShjW2w+PjJdfDApKzF9aWYoY1ttPj4yXXwwKXtzPTI0O2JyZWFrfWlmKCEoY1twPj4yXXwwKSlicmVhaztjW20+PjJdPWNbKGNbcD4+Ml18MCkrMTY+PjJdO3doaWxlKDEpe2lmKChjW2NbbT4+Ml0+PjJdfDApIT0oY1tqPj4yXXwwKSlicmVhaztjW20+PjJdPWNbKGNbbT4+Ml18MCkrMTI+PjJdfWNbKGNbKGNbcD4+Ml18MCkrMTY+PjJdfDApKzg+PjJdPWNbKGNbcD4+Ml18MCkrOD4+Ml07Yj1jWyhjW3A+PjJdfDApKzE2Pj4yXXwwO2lmKGNbKGNbcD4+Ml18MCkrOD4+Ml18MCljWyhjWyhjW3A+PjJdfDApKzg+PjJdfDApKzEyPj4yXT1iO2Vsc2UgY1txPj4yXT1iO2NbKGNbcD4+Ml18MCkrOD4+Ml09Y1tvPj4yXTtjW28+PjJdPWNbcD4+Ml19aWYoKHN8MCk9PTI0KXtncChjW20+PjJdfDApO2Nbcj4+Ml09MTh9YTpkbyBpZighKGNbcj4+Ml18MCkpe2NbbT4+Ml09MDtjW2s+PjJdPTA7d2hpbGUoMSl7aWYoKGNbaz4+Ml18MCk+PShjW2c+PjJdfDApKWJyZWFrO2RvIGlmKGNbKGNbaD4+Ml18MCkrKGNbaz4+Ml08PDIpPj4yXXwwKWlmKCEoY1ttPj4yXXwwKSl7Y1ttPj4yXT1jWyhjW2g+PjJdfDApKyhjW2s+PjJdPDwyKT4+Ml07Y1soY1ttPj4yXXwwKSs4Pj4yXT0wO2JyZWFrfWVsc2V7Y1soY1tvPj4yXXwwKSsxNj4+Ml09Y1ttPj4yXTtjWyhjW28+PjJdfDApKzEyPj4yXT1jWyhjW2g+PjJdfDApKyhjW2s+PjJdPDwyKT4+Ml07Y1soY1soY1tvPj4yXXwwKSsxMj4+Ml18MCkrOD4+Ml09Y1tvPj4yXTtjWyhjWyhjW28+PjJdfDApKzE2Pj4yXXwwKSs4Pj4yXT1jW28+PjJdO2NbbT4+Ml09Y1tvPj4yXTtjW28+PjJdPWNbKGNbbz4+Ml18MCkrOD4+Ml07Y1soY1ttPj4yXXwwKSs4Pj4yXT0wO2JyZWFrfXdoaWxlKDApO2Nbaz4+Ml09KGNbaz4+Ml18MCkrMX1jW3E+PjJdPWNbbT4+Ml19ZWxzZXtjW2s+PjJdPTA7d2hpbGUoMSl7aWYoKGNbaz4+Ml18MCk+PShjW2c+PjJdfDApKWJyZWFrO2dwKGNbKGNbaD4+Ml18MCkrKGNbaz4+Ml08PDIpPj4yXXwwKTtjW2s+PjJdPShjW2s+PjJdfDApKzF9d2hpbGUoMSl7cz1jW28+PjJdfDA7Y1tuPj4yXT1zO2lmKCFzKWJyZWFrIGE7Y1tvPj4yXT1jWyhjW24+PjJdfDApKzg+PjJdO0tkKGNbbj4+Ml18MCl9fXdoaWxlKDApO0tkKGNbaD4+Ml18MCl9fXdoaWxlKDApO2lmKCEoY1tyPj4yXXwwKSl7cT1jW3E+PjJdfDA7cz1jW2Y+PjJdfDA7Y1tzPj4yXT1xO3M9Y1tyPj4yXXwwO2k9dDtyZXR1cm4gc3wwfWdwKGNbcT4+Ml18MCk7Y1txPj4yXT0wO3E9Y1txPj4yXXwwO3M9Y1tmPj4yXXwwO2Nbcz4+Ml09cTtzPWNbcj4+Ml18MDtpPXQ7cmV0dXJuIHN8MH1mdW5jdGlvbiB3cChhLGIpe2E9YXwwO2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTA7Zz1pO2k9aSsxNnwwO2Q9Zys4fDA7ZT1nKzR8MDtmPWc7Y1tkPj4yXT1hO2NbZT4+Ml09YjtjW2Y+PjJdPTA7ZG8gaWYoY1tkPj4yXXwwKXtpZigoY1tlPj4yXXwwKTwwKXtjW2Y+PjJdPTE4O2JyZWFrfWNbZj4+Ml09d3AoY1soY1tkPj4yXXwwKSsxMj4+Ml18MCwoY1tlPj4yXXwwKS0xfDApfDA7aWYoIShjW2Y+PjJdfDApKWNbZj4+Ml09d3AoY1soY1tkPj4yXXwwKSsxNj4+Ml18MCwoY1tlPj4yXXwwKS0xfDApfDB9d2hpbGUoMCk7aT1nO3JldHVybiBjW2Y+PjJdfDB9ZnVuY3Rpb24geHAoYSxiLGQsZSxmKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTA7eD1pO2k9aSs4MHwwO2c9eCs2NHwwO3k9eCs2MHwwO289eCs1NnwwO3A9eCs1MnwwO3E9eCs0OHwwO3Y9eCs0NHwwO209eCs0MHwwO3U9eCszNnwwO3M9eCszMnwwO249eCsyOHwwO3c9eCsyNHwwO3I9eCsyMHwwO3Q9eCsxNnwwO2s9eCsxMnwwO2o9eCs4fDA7aD14KzR8MDtsPXg7Y1tnPj4yXT1hO2NbeT4+Ml09YjtjW28+PjJdPWQ7Y1twPj4yXT1lO2NbcT4+Ml09ZjtjW3Y+PjJdPTA7Y1ttPj4yXT0wO2NbdT4+Ml09MDtjW3M+PjJdPWNbbz4+Ml07Y1tuPj4yXT1jW3k+PjJdO2Nbdz4+Ml09MDtjW3I+PjJdPTE7d2hpbGUoMSl7aWYoY1t3Pj4yXXwwKXtkPTI1O2JyZWFrfWNbdD4+Ml09MDtjW2s+PjJdPTA7Y1t3Pj4yXT15cChjW2c+PjJdfDAsY1tuPj4yXXwwLGNbcz4+Ml18MCx0LGspfDA7aWYoKGNbdz4+Ml18MCk9PTAmKGNbdD4+Ml18MCkhPTApe2NbaD4+Ml09Y1tjW3Q+PjJdPj4yXTtpZigoY1toPj4yXXwwKT09NSlkPTE7ZWxzZSBkPShjWyhjW3Q+PjJdfDApKzEyPj4yXXwwKSE9MDtjW2o+PjJdPWQmMTtpZigoY1tqPj4yXXwwKT09MCYoY1tyPj4yXXwwKSE9MCl7ZD03O2JyZWFrfWlmKCEoKGNbaj4+Ml18MCk9PTB8KGNbcj4+Ml18MCkhPTApKXtjW2w+PjJdPXpwKDQ4KXwwO2lmKCEoY1tsPj4yXXwwKSl7ZD0xMDticmVha31jW2NbbD4+Ml0+PjJdPTM7QXAodixjW20+PjJdfDAsY1tsPj4yXXwwKTtjW20+PjJdPWNbbD4+Ml19aWYoY1ttPj4yXXwwKXtpZighKChjW2g+PjJdfDApIT0xfChjW2o+PjJdfDApIT0wKT8oY1tjW20+PjJdPj4yXXwwKSE9NTowKXtkPTE3O2JyZWFrfWlmKChjW2g+PjJdfDApIT01JihjW2o+PjJdfDApIT0wPyhjW2NbbT4+Ml0+PjJdfDApPT0xOjApe2Q9MTc7YnJlYWt9fWRvIGlmKGNbaj4+Ml18MCl7ZD1jW3Q+PjJdfDA7aWYoY1t2Pj4yXXwwKXtjWyhjW20+PjJdfDApKzE2Pj4yXT1kO2NbKGNbdD4+Ml18MCkrOD4+Ml09Y1ttPj4yXTticmVha31lbHNle2Nbdj4+Ml09ZDticmVha319ZWxzZSBBcCh2LGNbbT4+Ml18MCxjW3Q+PjJdfDApO3doaWxlKDApO2Nbcj4+Ml09KChjW2o+PjJdfDApIT0wXjEpJjE7Y1ttPj4yXT1jW3Q+PjJdfWNbcz4+Ml09KGNbcz4+Ml18MCktKGNbaz4+Ml18MCk7Y1tuPj4yXT0oY1tuPj4yXXwwKSsoY1trPj4yXXwwKX1pZigoZHwwKT09Nyl7Z3AoY1t0Pj4yXXwwKTtjW3c+PjJdPTF9ZWxzZSBpZigoZHwwKT09MTApe2dwKGNbdD4+Ml18MCk7Y1t3Pj4yXT03fWVsc2UgaWYoKGR8MCk9PTE3KXtncChjW3Q+PjJdfDApO2Nbdz4+Ml09MX1lbHNlIGlmKChkfDApPT0yNSl7aWYoKGNbdz4+Ml18MCk9PTEwMSYoY1t2Pj4yXXwwKSE9MCYoY1tyPj4yXXwwKSE9MCljW3c+PjJdPTE7aWYoKGNbdz4+Ml18MCk9PTEwMSljW3c+PjJdPTA7Y1tjW3E+PjJdPj4yXT0oY1tvPj4yXXwwKS0oY1tzPj4yXXwwKX1pZighKGNbdz4+Ml18MCkpe3Y9Y1t2Pj4yXXwwO3k9Y1twPj4yXXwwO2NbeT4+Ml09djt5PWNbdz4+Ml18MDtpPXg7cmV0dXJuIHl8MH1ncChjW3Y+PjJdfDApO2dwKGNbdT4+Ml18MCk7Y1t2Pj4yXT0wO3Y9Y1t2Pj4yXXwwO3k9Y1twPj4yXXwwO2NbeT4+Ml09djt5PWNbdz4+Ml18MDtpPXg7cmV0dXJuIHl8MH1mdW5jdGlvbiB5cChiLGUsZixnLGgpe2I9YnwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO3ZhciBqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MCxFPTA7RT1pO2k9aSs4MHwwO3A9RSs3MnwwO3E9RSs2OHwwO3I9RSs2NHwwO3M9RSs2MHwwO3Q9RSs1NnwwO3U9RSs1MnwwO3g9RSs0OHwwO3Y9RSs0NHwwO3c9RSs0MHwwO0E9RSszNnwwO289RSszMnwwO0I9RSsyOHwwO3k9RSsyNHwwO249RSsyMHwwO209RSsxNnwwO2w9RSsxMnwwO2o9RSs3NnwwO2s9RSs4fDA7Qz1FKzR8MDt6PUU7Y1txPj4yXT1iO2Nbcj4+Ml09ZTtjW3M+PjJdPWY7Y1t0Pj4yXT1nO2NbdT4+Ml09aDtjW28+PjJdPTA7Y1tCPj4yXT1jW3I+PjJdO2NbeT4+Ml09Y1tzPj4yXTtjWyhjW3E+PjJdfDApKzI0Pj4yXT0wO3doaWxlKDEpe2lmKChjW3k+PjJdfDApPjApYj0oQ3AoYVtjW0I+PjJdPj4wXXwwKXwwKSE9MDtlbHNlIGI9MDtmPWNbeT4+Ml18MDtpZighYilicmVhaztjW3k+PjJdPWYrLTE7Y1tCPj4yXT0oY1tCPj4yXXwwKSsxfWlmKCFmKXtjW3A+PjJdPTEwMTtEPWNbcD4+Ml18MDtpPUU7cmV0dXJuIER8MH1jW3g+PjJdPTA7d2hpbGUoMSl7aWYoKGNbeD4+Ml18MCk+PTQpYnJlYWs7Y1tuPj4yXT0yMTEyKyhjW3g+PjJdPDwzKTtpZigoKGRbKGNbbj4+Ml18MCkrNT4+MF0mLTJ8MCk9PTA/KGNbeT4+Ml18MCk+PShkWyhjW24+PjJdfDApKzQ+PjBdfDApOjApPzA9PShlUihjW0I+PjJdfDAsY1tjW24+PjJdPj4yXXwwLGRbKGNbbj4+Ml18MCkrND4+MF18MCl8MCk6MCl7Y1ttPj4yXT0xMDtjW2w+PjJdPWRbKGNbbj4+Ml18MCkrND4+MF07YTpkbyBpZigoKChkWyhjW24+PjJdfDApKzY+PjBdfDApPT0xPyhhWyhjW0I+PjJdfDApKzQ+PjBdfDApPT00NzowKT8oYVsoY1tCPj4yXXwwKSs1Pj4wXXwwKT49NDg6MCk/KGFbKGNbQj4+Ml18MCkrNT4+MF18MCk8PTU3OjApe2NbbT4+Ml09MDtjW2w+PjJdPTU7d2hpbGUoMSl7aWYoKGFbKGNbQj4+Ml18MCkrKGNbbD4+Ml18MCk+PjBdfDApPDQ4KWJyZWFrIGE7aWYoKGFbKGNbQj4+Ml18MCkrKGNbbD4+Ml18MCk+PjBdfDApPjU3KWJyZWFrIGE7Y1ttPj4yXT0oKGNbbT4+Ml18MCkqMTB8MCkrKChhWyhjW0I+PjJdfDApKyhjW2w+PjJdfDApPj4wXXwwKS00OCk7Y1tsPj4yXT0oY1tsPj4yXXwwKSsxfX13aGlsZSgwKTthW2o+PjBdPWFbKGNbQj4+Ml18MCkrKGNbbD4+Ml18MCk+PjBdfDA7aWYoQ3AoYVtqPj4wXXwwKXwwKXtEPTI2O2JyZWFrfWlmKChhW2o+PjBdfDApPT0zNCl7RD0yNjticmVha31pZigoYVtqPj4wXXwwKT09NDApe0Q9MjY7YnJlYWt9aWYoKGFbaj4+MF18MCk9PTQxKXtEPTI2O2JyZWFrfWlmKCEoYVtqPj4wXXwwKSl7RD0yNjticmVha319Y1t4Pj4yXT0oY1t4Pj4yXXwwKSsxfWlmKChEfDApPT0yNil7Y1tvPj4yXT16cCg0OCl8MDtpZihjW28+PjJdfDApe2NbY1tvPj4yXT4+Ml09ZFsoY1tuPj4yXXwwKSs2Pj4wXTtjWyhjW28+PjJdfDApKzQ+PjJdPWNbbT4+Ml07Y1tjW3Q+PjJdPj4yXT1jW28+PjJdO2NbY1t1Pj4yXT4+Ml09KGNbQj4+Ml18MCktKGNbcj4+Ml18MCkrKGNbbD4+Ml18MCk7Y1twPj4yXT0wO0Q9Y1twPj4yXXwwO2k9RTtyZXR1cm4gRHwwfWVsc2V7Y1twPj4yXT03O0Q9Y1twPj4yXXwwO2k9RTtyZXR1cm4gRHwwfX1pZigoYVtjW0I+PjJdPj4wXXwwKT09MzQpe2NbeD4+Ml09MTt3aGlsZSgxKXtpZigoY1t4Pj4yXXwwKT49KGNbeT4+Ml18MCkpYnJlYWs7aWYoKGFbKGNbQj4+Ml18MCkrKGNbeD4+Ml18MCk+PjBdfDApPT0zNClicmVhaztjW3g+PjJdPShjW3g+PjJdfDApKzF9Y1tjW3U+PjJdPj4yXT0oY1tCPj4yXXwwKS0oY1tyPj4yXXwwKSsoY1t4Pj4yXXwwKSsxO2lmKChjW3g+PjJdfDApPT0oY1t5Pj4yXXwwKSl7Y1twPj4yXT0xO0Q9Y1twPj4yXXwwO2k9RTtyZXR1cm4gRHwwfWVsc2V7Y1twPj4yXT1EcChjW3E+PjJdfDAsKGNbQj4+Ml18MCkrMXwwLChjW3g+PjJdfDApLTF8MCxjW3Q+PjJdfDApfDA7RD1jW3A+PjJdfDA7aT1FO3JldHVybiBEfDB9fWlmKChhW2NbQj4+Ml0+PjBdfDApPT00MCl7Y1trPj4yXT0wO0Q9KGNbcT4+Ml18MCkrMzJ8MDtjW0Q+PjJdPShjW0Q+PjJdfDApKzE7Y1tBPj4yXT14cChjW3E+PjJdfDAsKGNbQj4+Ml18MCkrMXwwLChjW3k+PjJdfDApLTF8MCxjW3Q+PjJdfDAsayl8MDtpZigoY1tBPj4yXXwwKT09MD8oY1tjW3Q+PjJdPj4yXXwwKT09MDowKWNbQT4+Ml09MTAxO2NbY1t1Pj4yXT4+Ml09KGNbQj4+Ml18MCktKGNbcj4+Ml18MCkrMSsoY1trPj4yXXwwKTtjW3A+PjJdPWNbQT4+Ml07RD1jW3A+PjJdfDA7aT1FO3JldHVybiBEfDB9Zj1jW3E+PjJdfDA7aWYoKGFbY1tCPj4yXT4+MF18MCk9PTQxKXtEPWYrMzJ8MDtjW0Q+PjJdPShjW0Q+PjJdfDApKy0xO2NbY1t1Pj4yXT4+Ml09KGNbQj4+Ml18MCktKGNbcj4+Ml18MCkrMTtjW2NbdD4+Ml0+PjJdPTA7Y1twPj4yXT0xMDE7RD1jW3A+PjJdfDA7aT1FO3JldHVybiBEfDB9Y1t2Pj4yXT1jW2YrMjA+PjJdO2Nbdz4+Ml09MDtjW3g+PjJdPTA7d2hpbGUoMSl7aWYoKGNbeD4+Ml18MCk+PShjWyhjW3E+PjJdfDApKzE2Pj4yXXwwKSlicmVhaztjW0M+PjJdPWNbKGNbKGNbcT4+Ml18MCkrOD4+Ml18MCkrKGNbeD4+Ml08PDIpPj4yXTtjW3o+PjJdPWtSKGNbQz4+Ml18MCl8MDtpZigoKGNbeT4+Ml18MCk+KGNbej4+Ml18MCk/KGFbKGNbQj4+Ml18MCkrKGNbej4+Ml18MCk+PjBdfDApPT01ODowKT8oemQoY1tDPj4yXXwwLGNbQj4+Ml18MCxjW3o+PjJdfDApfDApPT0wOjApe0Q9NTA7YnJlYWt9Y1t4Pj4yXT0oY1t4Pj4yXXwwKSsxfWlmKChEfDApPT01MCl7Y1t2Pj4yXT1jW3g+PjJdO2Nbdz4+Ml09KGNbQj4+Ml18MCktKGNbcj4+Ml18MCkrKGNbej4+Ml18MCkrMX1jW0E+PjJdPUVwKGNbcT4+Ml18MCxjW3Y+PjJdfDAsKGNbcj4+Ml18MCkrKGNbdz4+Ml18MCl8MCwoY1tzPj4yXXwwKS0oY1t3Pj4yXXwwKXwwLGNbdD4+Ml18MCxjW3U+PjJdfDApfDA7RD1jW3U+PjJdfDA7Y1tEPj4yXT0oY1tEPj4yXXwwKSsoY1t3Pj4yXXwwKTtjW3A+PjJdPWNbQT4+Ml07RD1jW3A+PjJdfDA7aT1FO3JldHVybiBEfDB9ZnVuY3Rpb24genAoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wO2U9aTtpPWkrMTZ8MDtiPWUrNHwwO2Q9ZTtjW2I+PjJdPWE7Y1tkPj4yXT1JZChjW2I+PjJdfDApfDA7aWYoIShjW2Q+PjJdfDApKXtkPWNbZD4+Ml18MDtpPWU7cmV0dXJuIGR8MH1WUihjW2Q+PjJdfDAsMCxjW2I+PjJdfDApfDA7ZD1jW2Q+PjJdfDA7aT1lO3JldHVybiBkfDB9ZnVuY3Rpb24gQXAoYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wO2g9aTtpPWkrMTZ8MDtlPWgrMTJ8MDtqPWgrOHwwO2Y9aCs0fDA7Zz1oO2NbZT4+Ml09YTtjW2o+PjJdPWI7Y1tmPj4yXT1kO2NbZz4+Ml09Y1tqPj4yXTt3aGlsZSgxKXtpZihjWyhjW2c+PjJdfDApKzg+PjJdfDApe2Q9QnAoY1soY1tnPj4yXXwwKSs4Pj4yXXwwKXwwO2Q9KGR8MCk8PShCcChjW2Y+PjJdfDApfDApfWVsc2UgZD0wO2I9Y1soY1tnPj4yXXwwKSs4Pj4yXXwwO2lmKCFkKWJyZWFrO2NbZz4+Ml09Yn1kPWNbZj4+Ml18MDtpZihiKXtjWyhjWyhjW2c+PjJdfDApKzg+PjJdfDApKzE2Pj4yXT1kO2NbKGNbZj4+Ml18MCkrOD4+Ml09Y1soY1tnPj4yXXwwKSs4Pj4yXTtlPWNbZz4+Ml18MDtqPWNbZj4+Ml18MDtqPWorMTJ8MDtjW2o+PjJdPWU7Zj1jW2Y+PjJdfDA7aj1jW2c+PjJdfDA7aj1qKzh8MDtjW2o+PjJdPWY7aT1oO3JldHVybn1lbHNle2NbY1tlPj4yXT4+Ml09ZDtlPWNbZz4+Ml18MDtqPWNbZj4+Ml18MDtqPWorMTJ8MDtjW2o+PjJdPWU7Zj1jW2Y+PjJdfDA7aj1jW2c+PjJdfDA7aj1qKzh8MDtjW2o+PjJdPWY7aT1oO3JldHVybn19ZnVuY3Rpb24gQnAoYSl7YT1hfDA7dmFyIGI9MCxkPTA7ZD1pO2k9aSsxNnwwO2I9ZDtjW2I+PjJdPWE7aT1kO3JldHVybiBjW2NbYj4+Ml0+PjJdfDB9ZnVuY3Rpb24gQ3AoYil7Yj1ifDA7dmFyIGM9MCxkPTA7ZD1pO2k9aSsxNnwwO2M9ZDthW2M+PjBdPWI7aWYoKCgoKGFbYz4+MF18MCkhPTMyPyhhW2M+PjBdfDApIT05OjApPyhhW2M+PjBdfDApIT0xMDowKT8oYVtjPj4wXXwwKSE9MTM6MCk/KGFbYz4+MF18MCkhPTExOjApYz0oYVtjPj4wXXwwKT09MTI7ZWxzZSBjPTE7aT1kO3JldHVybiBjJjF8MH1mdW5jdGlvbiBEcChiLGQsZSxmKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MCxFPTA7RD1pO2k9aSs5NnwwO2c9RCs4OHwwO2g9RCs4NHwwO2o9RCs4MHwwO2s9RCs3NnwwO2w9RCs3MnwwO0U9RCs2OHwwO3c9RCs2NHwwO3k9RCs2MHwwO3U9RCs1NnwwO3Y9RCs1MnwwO0I9RCs0OHwwO3M9RCs0NHwwO3Q9RCszNnwwO3A9RCszMnwwO0E9RCsyOHwwO3I9RCsyNHwwO209RCsyMHwwO249RCsxNnwwO289RCsxMnwwO3g9RCs4fDA7cT1EKzR8MDt6PUQ7Y1toPj4yXT1iO2Nbaj4+Ml09ZDtjW2s+PjJdPWU7Y1tsPj4yXT1mO2NbRT4+Ml09Y1tjW2g+PjJdPj4yXTtjW3c+PjJdPWNbY1tFPj4yXT4+Ml07Y1t1Pj4yXT0wO2Nbdj4+Ml09MDtjW0I+PjJdPTA7Y1tzPj4yXT0wO2NbRCs0MD4+Ml09MTQ0O2NbdD4+Ml09MDtjW3k+PjJdPUNuKGNbRT4+Ml18MCxjWyhjW2g+PjJdfDApKzQ+PjJdfDAsY1tqPj4yXXwwLGNbaz4+Ml18MCx2KXwwO2E6ZG8gaWYoIShjW3k+PjJdfDApKXtjW3A+PjJdPTA7d2hpbGUoMSl7aWYoY1t5Pj4yXXwwKWJyZWFrO2Nbcj4+Ml09MDtjW20+PjJdPTA7Y1tuPj4yXT0wO2Nbbz4+Ml09MDtjW3k+PjJdPVNiW2NbKGNbdz4+Ml18MCkrMjA+PjJdJjI1NV0oY1t2Pj4yXXwwLEEscixtLG4sbyl8MDtpZighKGNbeT4+Ml18MCkpe2NbdT4+Ml09RnAoY1t1Pj4yXXwwLDE0NCsoKGNbcD4+Ml18MCkqMjR8MCl8MCl8MDtpZighKGNbdT4+Ml18MCkpYnJlYWsgYTtjW0I+PjJdPUZwKGNbQj4+Ml18MCwoY1tzPj4yXXwwKSsoY1tyPj4yXXwwKXwwKXwwO2lmKCEoY1tCPj4yXXwwKSlicmVhayBhO2NbeD4+Ml09KGNbdT4+Ml18MCkrNDgrNzIrKChjW3A+PjJdfDApKjI0fDApO0U9Y1t4Pj4yXXwwO2NbRT4+Ml09MDtjW0UrND4+Ml09MDtjW0UrOD4+Ml09MDtjW0UrMTI+PjJdPTA7Y1tFKzE2Pj4yXT0wO2NbRSsyMD4+Ml09MDtUUigoY1tCPj4yXXwwKSsoY1tzPj4yXXwwKXwwLGNbQT4+Ml18MCxjW3I+PjJdfDApfDA7Y1tzPj4yXT0oY1tzPj4yXXwwKSsoY1tyPj4yXXwwKTtjWyhjW3g+PjJdfDApKzQ+PjJdPWNbcj4+Ml07aWYoKGNbbj4+Ml18MCk8KGNbaz4+Ml18MCkpZT0oYVsoY1tqPj4yXXwwKSsoY1tuPj4yXXwwKT4+MF18MCk9PTQyO2Vsc2UgZT0wO2NbKGNbeD4+Ml18MCkrOD4+Ml09ZSYxO2lmKChjW20+PjJdfDApPjApZT0oYVsoY1tqPj4yXXwwKSsoKGNbbT4+Ml18MCktMSk+PjBdfDApPT05NDtlbHNlIGU9MDtjWyhjW3g+PjJdfDApKzEyPj4yXT1lJjE7Y1t0Pj4yXT0oY1twPj4yXXwwKSsxfWNbcD4+Ml09KGNbcD4+Ml18MCkrMX1UYltjWyhjW3c+PjJdfDApKzE2Pj4yXSYyNTVdKGNbdj4+Ml18MCl8MDtjW3Y+PjJdPTA7Qz0xNH1lbHNlIEM9MTQ7d2hpbGUoMCk7ZG8gaWYoKEN8MCk9PTE0KXtpZigoY1t5Pj4yXXwwKT09MTAxKXtjW3o+PjJdPTA7Y1t1Pj4yXT1GcChjW3U+PjJdfDAsMTQ0KygoY1t0Pj4yXXwwKSoyNHwwKSsoY1tzPj4yXXwwKXwwKXwwO2lmKCEoY1t1Pj4yXXwwKSlicmVhaztWUihjW3U+PjJdfDAsMCwoY1t1Pj4yXXwwKSs0OCs3Mi0oY1t1Pj4yXXwwKXwwKXwwO2NbY1t1Pj4yXT4+Ml09NTtjWyhjW3U+PjJdfDApKzIwPj4yXT0oY1t1Pj4yXXwwKSs0ODtjWyhjWyhjW3U+PjJdfDApKzIwPj4yXXwwKSs2OD4+Ml09Y1soY1toPj4yXXwwKSsyMD4+Ml07Y1soY1soY1t1Pj4yXXwwKSsyMD4+Ml18MCkrNjQ+PjJdPWNbdD4+Ml07Y1t6Pj4yXT0oY1soY1t1Pj4yXXwwKSsyMD4+Ml18MCkrNzIrKChjW3Q+PjJdfDApKjI0fDApO2lmKGNbQj4+Ml18MCl7VFIoY1t6Pj4yXXwwLGNbQj4+Ml18MCxjW3M+PjJdfDApfDA7S2QoY1tCPj4yXXwwKX1jW3E+PjJdPTA7d2hpbGUoMSl7aWYoKGNbcT4+Ml18MCk+PShjWyhjWyhjW3U+PjJdfDApKzIwPj4yXXwwKSs2ND4+Ml18MCkpYnJlYWs7Y1soY1soY1t1Pj4yXXwwKSsyMD4+Ml18MCkrNzIrKChjW3E+PjJdfDApKjI0fDApPj4yXT1jW3o+PjJdO2Nbej4+Ml09KGNbej4+Ml18MCkrKGNbKGNbKGNbdT4+Ml18MCkrMjA+PjJdfDApKzcyKygoY1txPj4yXXwwKSoyNHwwKSs0Pj4yXXwwKTtjW3E+PjJdPShjW3E+PjJdfDApKzF9Y1t5Pj4yXT0wfWNbY1tsPj4yXT4+Ml09Y1t1Pj4yXTtjW2c+PjJdPWNbeT4+Ml07RT1jW2c+PjJdfDA7aT1EO3JldHVybiBFfDB9d2hpbGUoMCk7aWYoY1t2Pj4yXXwwKVRiW2NbKGNbdz4+Ml18MCkrMTY+PjJdJjI1NV0oY1t2Pj4yXXwwKXwwO0tkKGNbQj4+Ml18MCk7S2QoY1t1Pj4yXXwwKTtjW2NbbD4+Ml0+PjJdPTA7Y1tnPj4yXT03O0U9Y1tnPj4yXXwwO2k9RDtyZXR1cm4gRXwwfWZ1bmN0aW9uIEVwKGIsZCxlLGYsZyxoKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDt2YXIgaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wO0I9aTtpPWkrODB8MDtqPUIrNjh8MDtrPUIrNjR8MDtsPUIrNjB8MDttPUIrNTZ8MDtuPUIrNTJ8MDtvPUIrNDh8MDt5PUIrNDR8MDt3PUIrNDB8MDt6PUIrMzZ8MDt2PUIrMzJ8MDt4PUIrMjh8MDtwPUIrMjR8MDtBPUIrMjB8MDt1PUIrMTZ8MDtzPUIrMTJ8MDtxPUIrOHwwO3I9Qis0fDA7dD1CO2Nbaj4+Ml09YjtjW2s+PjJdPWQ7Y1tsPj4yXT1lO2NbbT4+Ml09ZjtjW24+PjJdPWc7Y1tvPj4yXT1oO2NbeT4+Ml09Y1tjW2o+PjJdPj4yXTtjW3c+PjJdPWNbY1t5Pj4yXT4+Ml07Y1t4Pj4yXT0wO2NbcD4+Ml09MDtjW3A+PjJdPTA7d2hpbGUoMSl7aWYoKGNbcD4+Ml18MCk+PShjW20+PjJdfDApKWJyZWFrO2lmKChhWyhjW2w+PjJdfDApKyhjW3A+PjJdfDApPj4wXXwwKT09NDApYnJlYWs7aWYoKGFbKGNbbD4+Ml18MCkrKGNbcD4+Ml18MCk+PjBdfDApPT00MSlicmVhaztpZigoYVsoY1tsPj4yXXwwKSsoY1twPj4yXXwwKT4+MF18MCk9PTM0KWJyZWFrO2NbcD4+Ml09KGNbcD4+Ml18MCkrMX1jW2Nbbz4+Ml0+PjJdPWNbcD4+Ml07Y1t6Pj4yXT1DbihjW3k+PjJdfDAsY1soY1tqPj4yXXwwKSs0Pj4yXXwwLGNbbD4+Ml18MCxjW3A+PjJdfDAsdil8MDtpZihjW3o+PjJdfDApe2U9Y1t4Pj4yXXwwO0E9Y1tuPj4yXXwwO2NbQT4+Ml09ZTtBPWNbej4+Ml18MDtpPUI7cmV0dXJuIEF8MH1jW3U+PjJdPTA7Y1tzPj4yXT0wO2NbcT4+Ml09MDtjW3I+PjJdPTA7Y1t6Pj4yXT1TYltjWyhjW3c+PjJdfDApKzIwPj4yXSYyNTVdKGNbdj4+Ml18MCxBLHUscyxxLHIpfDA7aWYoY1t6Pj4yXXwwKXtpZigoY1twPj4yXXwwKSE9MCYoY1t6Pj4yXXwwKT09MTAxKWNbej4+Ml09MH1lbHNle2NbdD4+Ml09MTQ0KyhjW3U+PjJdfDApO2NbeD4+Ml09enAoY1t0Pj4yXXwwKXwwO2E6ZG8gaWYoY1t4Pj4yXXwwKXtjW2NbeD4+Ml0+PjJdPTU7Y1soY1t4Pj4yXXwwKSsyMD4+Ml09KGNbeD4+Ml18MCkrNDg7Y1soY1soY1t4Pj4yXXwwKSsyMD4+Ml18MCkrNjQ+PjJdPTE7Y1soY1soY1t4Pj4yXXwwKSsyMD4+Ml18MCkrNjg+PjJdPWNbaz4+Ml07Y1soY1soY1t4Pj4yXXwwKSsyMD4+Ml18MCkrNzIrND4+Ml09Y1t1Pj4yXTtjWyhjWyhjW3g+PjJdfDApKzIwPj4yXXwwKSs3Mj4+Ml09KGNbKGNbeD4+Ml18MCkrMjA+PjJdfDApKzk2O1RSKGNbKGNbKGNbeD4+Ml18MCkrMjA+PjJdfDApKzcyPj4yXXwwLGNbQT4+Ml18MCxjW3U+PjJdfDApfDA7aWYoKGNbcT4+Ml18MCk8KGNbbT4+Ml18MCk/KGFbKGNbbD4+Ml18MCkrKGNbcT4+Ml18MCk+PjBdfDApPT00MjowKXtjWyhjWyhjW3g+PjJdfDApKzIwPj4yXXwwKSs3Mis4Pj4yXT0xO2NbcT4+Ml09KGNbcT4+Ml18MCkrMX13aGlsZSgxKXtpZighKChjW3M+PjJdfDApPjA/KGNbKGNbaj4+Ml18MCkrMTI+PjJdfDApIT0wOjApKWJyZWFrIGE7aWYoKGFbKGNbbD4+Ml18MCkrKChjW3M+PjJdfDApLTEpPj4wXXwwKSE9OTQpYnJlYWsgYTtjWyhjWyhjW3g+PjJdfDApKzIwPj4yXXwwKSs3MisxMj4+Ml09MTtjW3M+PjJdPShjW3M+PjJdfDApKy0xfX1lbHNlIGNbej4+Ml09Nzt3aGlsZSgwKTtjW2Nbbz4+Ml0+PjJdPWNbcT4+Ml19VGJbY1soY1t3Pj4yXXwwKSsxNj4+Ml0mMjU1XShjW3Y+PjJdfDApfDA7ZT1jW3g+PjJdfDA7QT1jW24+PjJdfDA7Y1tBPj4yXT1lO0E9Y1t6Pj4yXXwwO2k9QjtyZXR1cm4gQXwwfWZ1bmN0aW9uIEZwKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MDtmPWk7aT1pKzE2fDA7ZD1mKzh8MDtnPWYrNHwwO2U9ZjtjW2Q+PjJdPWE7Y1tnPj4yXT1iO2NbZT4+Ml09TGQoY1tkPj4yXXwwLGNbZz4+Ml18MCl8MDtpZihjW2U+PjJdfDApe2c9Y1tlPj4yXXwwO2k9ZjtyZXR1cm4gZ3wwfUtkKGNbZD4+Ml18MCk7Zz1jW2U+PjJdfDA7aT1mO3JldHVybiBnfDB9ZnVuY3Rpb24gR3AoYSl7YT1hfDA7dmFyIGI9MCxkPTA7Yj1pO2k9aSsxNnwwO2Q9YjtjW2Q+PjJdPWE7SHAoY1soY1tkPj4yXXwwKSsyMD4+Ml18MCk7S2QoY1soY1tkPj4yXXwwKSs0MD4+Ml18MCk7S2QoY1tkPj4yXXwwKTtpPWI7cmV0dXJufWZ1bmN0aW9uIEhwKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTA7Zj1pO2k9aSsxNnwwO2Q9Zis0fDA7ZT1mO2NbZD4+Ml09YTtpZighKGNbZD4+Ml18MCkpe2k9ZjtyZXR1cm59S2QoY1tjW2Q+PjJdPj4yXXwwKTtWbShjW2Q+PjJdfDApO2E9Y1tkPj4yXXwwO2I9YSs0MHwwO2Rve2NbYT4+Ml09MDthPWErNHwwfXdoaWxlKChhfDApPChifDApKTtjW2U+PjJdPTA7d2hpbGUoMSl7aWYoKGNbZT4+Ml18MCk+PShjWyhjW2Q+PjJdfDApKzY0Pj4yXXwwKSlicmVhaztvbihjWyhjW2Q+PjJdfDApKzcyKygoY1tlPj4yXXwwKSoyNHwwKSsyMD4+Ml18MCk7Y1soY1tkPj4yXXwwKSs3MisoKGNbZT4+Ml18MCkqMjR8MCkrMjA+PjJdPTA7Y1tlPj4yXT0oY1tlPj4yXXwwKSsxfWk9ZjtyZXR1cm59ZnVuY3Rpb24gSXAoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MDtmPWk7aT1pKzE2fDA7Yj1mKzh8MDtkPWYrNHwwO2U9ZjtjW2I+PjJdPWE7Y1tkPj4yXT1jWyhjW2I+PjJdfDApKzI0Pj4yXTt3aGlsZSgxKXtpZighKGNbZD4+Ml18MCkpYnJlYWs7Y1tlPj4yXT1jWyhjW2Q+PjJdfDApKzg+PjJdO2tsKGNbKGNbZD4+Ml18MCkrMTI+PjJdfDApO0tkKGNbZD4+Ml18MCk7Y1tkPj4yXT1jW2U+PjJdfWNbKGNbYj4+Ml18MCkrMjQ+PjJdPTA7aT1mO3JldHVybn1mdW5jdGlvbiBKcChhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wO2c9aTtpPWkrMTZ8MDtlPWcrOHwwO2Y9ZztjW2U+PjJdPWE7YT1mO2NbYT4+Ml09YjtjW2ErND4+Ml09ZDtpZigobGYoKXwwKTwzMDA4MDAyKXtpPWc7cmV0dXJufWQ9ZjtmPWNbZCs0Pj4yXXwwO2E9KGNbZT4+Ml18MCkrNDh8MDtjW2E+PjJdPWNbZD4+Ml07Y1thKzQ+PjJdPWY7aT1nO3JldHVybn1mdW5jdGlvbiBLcChhKXthPWF8MDt2YXIgYj0wLGQ9MDtkPWk7aT1pKzE2fDA7Yj1kO2NbYj4+Ml09YTtpZigobGYoKXwwKTwzMDA4MDEyKXtpPWQ7cmV0dXJufWE9KGNbYj4+Ml18MCkrNTZ8MDtjW2E+PjJdPWNbYT4+Ml18MTtpPWQ7cmV0dXJufWZ1bmN0aW9uIExwKGIsZCxlLGYsZyxoLGope2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO3ZhciBrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wLEU9MCxGPTAsRz0wLEg9MCxJPTAsSj0wLEs9MCxMPTAsTT0wLE49MCxPPTAsUD0wLFE9MCxSPTAsUz0wLFQ9MCxVPTAsVj0wLFc9MCxYPTAsWT0wLFo9MCxfPTAsJD0wLGFhPTAsYmE9MCxjYT0wLGRhPTAsZWE9MCxmYT0wLGdhPTAsaGE9MCxpYT0wO2hhPWk7aT1pKzI4OHwwO1Y9aGErNDB8MDtVPWhhKzMyfDA7VD1oYSsyNHwwO3E9aGErMTZ8MDtyPWhhKzh8MDtwPWhhO3Y9aGErMjgwfDA7dz1oYSsyNzZ8MDtpYT1oYSsyNzJ8MDtrPWhhKzI2OHwwO3g9aGErMjY0fDA7ZGE9aGErMjYwfDA7eT1oYSsyNTZ8MDtTPWhhKzI1MnwwO2VhPWhhKzI0OHwwO2dhPWhhKzI0NHwwO0U9aGErMjQwfDA7TD1oYSsyMzZ8MDtGPWhhKzIzMnwwO1I9aGErMjI4fDA7TT1oYSsyMjR8MDtaPWhhKzIyMHwwO049aGErMjE2fDA7UD1oYSsyMTJ8MDtHPWhhKzIwOHwwO3o9aGErMjA0fDA7ZmE9aGErMjAwfDA7Tz1oYSsxOTZ8MDtBPWhhKzE5MnwwO0Q9aGErMTg4fDA7Qz1oYSsxODR8MDtiYT1oYSsxODB8MDtYPWhhKzE3NnwwO2NhPWhhKzE3MnwwO1k9aGErMTY4fDA7Xz1oYSsxNjR8MDtCPWhhKzE2MHwwO1E9aGErMTU2fDA7cz1oYSsxNTJ8MDtuPWhhKzE0OHwwO3Q9aGErMTQ0fDA7bD1oYSs4MHwwO209aGErNzZ8MDtvPWhhKzcyfDA7SD1oYSs2OHwwO0k9aGErNjR8MDtXPWhhKzYwfDA7Sj1oYSs1NnwwO0s9aGErNTJ8MDthYT1oYSs0OHwwOyQ9aGErNDR8MDtjW3Y+PjJdPWI7Y1t3Pj4yXT1kO2NbaWE+PjJdPWU7Y1trPj4yXT1mO2NbeD4+Ml09ZztjW2RhPj4yXT1oO2NbeT4+Ml09ajtjW1M+PjJdPWNbaWE+PjJdO2NbZWE+PjJdPTA7Y1tnYT4+Ml09MDtjW1I+PjJdPTA7Y1tNPj4yXT0wO2NbRz4+Ml09KGFbKGNbY1t4Pj4yXT4+Ml18MCkrMz4+MF18MCk9PTUyJjE7Y1tmYT4+Ml09MDtjW08+PjJdPTA7Y1tBPj4yXT0wO2NbRD4+Ml09MDtjW0M+PjJdPTA7Y1tiYT4+Ml09MDtjW1g+PjJdPTA7Y1tjYT4+Ml09MDtjW1k+PjJdPTA7Y1tfPj4yXT0wO2NbQj4+Ml09MDtjW1E+PjJdPTA7Y1tOPj4yXT0oa1IoY1soY1t4Pj4yXXwwKSs0Pj4yXXwwKXwwKSsxO2NbUD4+Ml09KGtSKGNbKGNbeD4+Ml18MCkrOD4+Ml18MCl8MCkrMTtjW0w+PjJdPShjW2s+PjJdfDApLTI8PDI7Y1t6Pj4yXT1JZChjW0w+PjJdfDApfDA7aWYoY1t6Pj4yXXwwKXtWUihjW3o+PjJdfDAsMCxjW0w+PjJdfDApfDA7Y1tCPj4yXT1JZChjW0w+PjJdfDApfDB9aWYoY1tCPj4yXXwwKVZSKGNbQj4+Ml18MCwwLGNbTD4+Ml18MCl8MDtkbyBpZigoY1t6Pj4yXXwwKSE9MCYoY1tCPj4yXXwwKSE9MCl7Y1tFPj4yXT0zO3doaWxlKDEpe2lmKGNbZ2E+PjJdfDApYnJlYWs7aWYoKGNbRT4+Ml18MCk+PShjW2s+PjJdfDApKWJyZWFrO2Nbcz4+Ml09Y1soY1t4Pj4yXXwwKSsoY1tFPj4yXTw8Mik+PjJdO2lmKCgoKGNbZmE+PjJdfDApPT0wPyhrUihjW3M+PjJdfDApfDApPj4+MD44OjApPzA9PSh6ZChjW3M+PjJdfDAsMjQwMDYsOCl8MCk6MCk/MD09KE1wKGFbKGNbcz4+Ml18MCkrOD4+MF18MCl8MCk6MCljW2dhPj4yXT1OcChjW1M+PjJdfDAsKGNbcz4+Ml18MCkrOXwwLGZhLGNbeT4+Ml18MCl8MDtlbHNlIHU9MTU7ZG8gaWYoKHV8MCk9PTE1KXt1PTA7aWYoKGNbRz4+Ml18MCkhPTA/KE9wKGNbcz4+Ml18MCxuLHQpfDApIT0wOjApe2Y9bDtnPTIxNDQ7ZD1mKzY0fDA7ZG97Y1tmPj4yXT1jW2c+PjJdO2Y9Zis0fDA7Zz1nKzR8MH13aGlsZSgoZnwwKTwoZHwwKSk7aWYoIShjW3Q+PjJdfDApKXtjW2dhPj4yXT03O2JyZWFrfWNbbT4+Ml09MDt3aGlsZSgxKXtpZigoY1ttPj4yXXwwKT49OClicmVhaztjW28+PjJdPWwrKGNbbT4+Ml08PDMpO2lmKChjW24+PjJdfDApPT0oY1soY1tvPj4yXXwwKSs0Pj4yXXwwKT8oemQoY1tzPj4yXXwwLGNbY1tvPj4yXT4+Ml18MCxjWyhjW28+PjJdfDApKzQ+PjJdfDApfDApPT0wOjApYnJlYWs7Y1ttPj4yXT0oY1ttPj4yXXwwKSsxfWE6ZG8gaWYoKGNbbT4+Ml18MCk9PTgpe2lhPWNbeT4+Ml18MDtjW3A+PjJdPWNbcz4+Ml07RmsoaWEsMjQwMTUscCk7Y1tnYT4+Ml09MX1lbHNlIHN3aXRjaChjW20+PjJdfDApe2Nhc2UgMDp7aWYoISgoa1IoY1t0Pj4yXXwwKXwwKT09ND8oemQoY1t0Pj4yXXwwLDIwNTIxLDQpfDApPT0wOjApKXtpYT1jW3k+PjJdfDA7Y1tyPj4yXT1jW3Q+PjJdO0ZrKGlhLDI0MDQyLHIpO2NbZ2E+PjJdPTF9Y1tEPj4yXT0xO2JyZWFrIGF9Y2FzZSAxOntLZChjW2JhPj4yXXwwKTtjW2JhPj4yXT1jW3Q+PjJdO2NbdD4+Ml09MDticmVhayBhfWNhc2UgMjp7S2QoY1tYPj4yXXwwKTtjW1g+PjJdPWNbdD4+Ml07Y1t0Pj4yXT0wO2JyZWFrIGF9Y2FzZSAzOntLZChjW2NhPj4yXXwwKTtjW2NhPj4yXT1jW3Q+PjJdO2NbdD4+Ml09MDticmVhayBhfWNhc2UgNDp7aWYoISgoa1IoY1t0Pj4yXXwwKXwwKT09Mz8oemQoY1t0Pj4yXXwwLDI0MDY5LDMpfDApPT0wOjApKXU9MzY7ZG8gaWYoKHV8MCk9PTM2KXt1PTA7aWYoKGtSKGNbdD4+Ml18MCl8MCk9PTQ/KHpkKGNbdD4+Ml18MCwyNDA3Myw0KXwwKT09MDowKWJyZWFrO2lhPWNbeT4+Ml18MDtjW3E+PjJdPWNbdD4+Ml07RmsoaWEsMjQwNzgscSk7Y1tnYT4+Ml09MX13aGlsZSgwKTtpZigoYVtjW3Q+PjJdPj4wXXwwKT09MTAwKWY9MTtlbHNlIGY9KGFbY1t0Pj4yXT4+MF18MCk9PTY4O2NbQz4+Ml09ZiYxO2JyZWFrIGF9Y2FzZSA1OntLZChjW1k+PjJdfDApO2NbWT4+Ml09Y1t0Pj4yXTtjW3Q+PjJdPTA7YnJlYWsgYX1jYXNlIDY6e0tkKGNbXz4+Ml18MCk7Y1tfPj4yXT1jW3Q+PjJdO2NbdD4+Ml09MDticmVhayBhfWNhc2UgNzp7aj1jW3Q+PjJdfDA7aWE9Y1tRPj4yXXwwO2NbUT4+Ml09aWErMTtjWyhjW0I+PjJdfDApKyhpYTw8Mik+PjJdPWo7Y1t0Pj4yXT0wO2JyZWFrIGF9ZGVmYXVsdDpicmVhayBhfXdoaWxlKDApO0tkKGNbdD4+Ml18MCk7YnJlYWt9aj0oa1IoY1tzPj4yXXwwKXwwKSsxfDA7Y1tSPj4yXT0oY1tSPj4yXXwwKStqO2o9Y1tzPj4yXXwwO2lhPWNbTT4+Ml18MDtjW00+PjJdPWlhKzE7Y1soY1t6Pj4yXXwwKSsoaWE8PDIpPj4yXT1qfXdoaWxlKDApO2NbRT4+Ml09KGNbRT4+Ml18MCkrMX1iOmRvIGlmKCgoY1tnYT4+Ml18MCk9PTAmKGNbWT4+Ml18MCkhPTA/KEtkKGNbWD4+Ml18MCksS2QoY1tjYT4+Ml18MCksY1tYPj4yXT0wLGNbY2E+PjJdPTAsKGNbTT4+Ml18MCk9PTApOjApPyhLZChjW3o+PjJdfDApLGNbej4+Ml09MCxjW2dhPj4yXT1QcChjW3c+PjJdfDAsY1soY1t4Pj4yXXwwKSs0Pj4yXXwwLGNbWT4+Ml18MCx6LE0sUixjW3k+PjJdfDApfDAsKGNbZ2E+PjJdfDApPT0wJihjW18+PjJdfDApIT0wKTowKXtjW0g+PjJdPTA7d2hpbGUoMSl7aWYoKGNbSD4+Ml18MCk+PShjW00+PjJdfDApKWJyZWFrIGI7aWE9KFRkKGNbXz4+Ml18MCxjWyhjW3o+PjJdfDApKyhjW0g+PjJdPDwyKT4+Ml18MCl8MCk9PTA7Zj1jW0g+PjJdfDA7aWYoaWEpYnJlYWs7Y1tIPj4yXT1mKzF9Y1tJPj4yXT1mO3doaWxlKDEpe2lmKChjW0k+PjJdfDApPj0oY1tNPj4yXXwwKSlicmVhaztjWyhjW3o+PjJdfDApKyhjW0k+PjJdPDwyKT4+Ml09Y1soY1t6Pj4yXXwwKSsoKGNbST4+Ml18MCkrMTw8Mik+PjJdO2NbST4+Ml09KGNbST4+Ml18MCkrMX1jW00+PjJdPShjW00+PjJdfDApKy0xfXdoaWxlKDApO2lmKCEoY1tnYT4+Ml18MCkpe2lmKCEoY1tNPj4yXXwwKSl7Y1tjW3o+PjJdPj4yXT0yNDEwMTtjW1I+PjJdPTg7Y1tNPj4yXT0xfWlmKChjW2ZhPj4yXXwwKT09MD8oY1tnYT4+Ml09TnAoY1tTPj4yXXwwLDIwNDQ3LGZhLGNbeT4+Ml18MCl8MCwoY1tnYT4+Ml18MCkhPTApOjApYnJlYWs7Y1tnYT4+Ml09UXAoY1tiYT4+Ml18MCxPLEEpfDA7aWYoKGNbZ2E+PjJdfDApPT0xKXtpYT1jW3k+PjJdfDA7Y1tUPj4yXT1jW2JhPj4yXTtGayhpYSwyNDEwOSxUKX1pZighKGNbZ2E+PjJdfDApKXtjW0w+PjJdPTI4MCsoY1tNPj4yXTw8MikrKChjW08+PjJdfDApKjI0fDApKyhjW00+PjJdfDApKyhjW1A+PjJdfDApKyhjW04+PjJdfDApKyhjW1I+PjJdfDApO2NbZWE+PjJdPUlkKGNbTD4+Ml18MCl8MDtpZighKGNbZWE+PjJdfDApKXtjW2dhPj4yXT03O2JyZWFrfVZSKGNbZWE+PjJdfDAsMCxjW0w+PjJdfDApfDA7Y1soY1tlYT4+Ml18MCkrMTI+PjJdPWNbdz4+Ml07Y1soY1tlYT4+Ml18MCkrMjQ+PjJdPWNbTT4+Ml07Y1soY1tlYT4+Ml18MCkrMjYwPj4yXT0wO2NbKGNbZWE+PjJdfDApKzI4Pj4yXT0oY1tlYT4+Ml18MCkrMjgwO2NbKGNbZWE+PjJdfDApKzM2Pj4yXT1jW2ZhPj4yXTtjWyhjW2VhPj4yXXwwKSsyNTY+PjJdPTEwNDg1NzY7YVsoY1tlYT4+Ml18MCkrMjMwPj4wXT0oKGNbRz4+Ml18MCkhPTA/KGNbRD4+Ml18MCk9PTA6MCkmMTthWyhjW2VhPj4yXXwwKSsyMjk+PjBdPWNbRz4+Ml07YVsoY1tlYT4+Ml18MCkrMjI4Pj4wXT1jW0c+PjJdO2FbKGNbZWE+PjJdfDApKzIzMT4+MF09Y1tDPj4yXTtjWyhjW2VhPj4yXXwwKSs0OD4+Ml09MjU1O2NbKGNbZWE+PjJdfDApKzQwPj4yXT1jW1k+PjJdO2NbKGNbZWE+PjJdfDApKzQ0Pj4yXT1jW18+PjJdO2NbWT4+Ml09MDtjW18+PjJdPTA7Y1soY1tlYT4+Ml18MCkrMjUyPj4yXT0oY1soY1tlYT4+Ml18MCkrMjg+PjJdfDApKyhjW00+PjJdPDwyKTtUUihjWyhjW2VhPj4yXXwwKSsyNTI+PjJdfDAsY1tBPj4yXXwwLChjW08+PjJdfDApKjI0fDApfDA7Y1soY1tlYT4+Ml18MCkrMjQ4Pj4yXT1jW08+PjJdO2NbRT4+Ml09MDt3aGlsZSgxKXtpZigoY1tFPj4yXXwwKT49KGNbTz4+Ml18MCkpYnJlYWs7a2soKGNbKGNbZWE+PjJdfDApKzI1Mj4+Ml18MCkrKChjW0U+PjJdfDApKjI0fDApKzR8MCwxLDEpO2NbRT4+Ml09KGNbRT4+Ml18MCkrMX1jWyhjW2VhPj4yXXwwKSszMj4+Ml09KGNbKGNbZWE+PjJdfDApKzI1Mj4+Ml18MCkrKChjW08+PjJdfDApKjI0fDApO2NbWj4+Ml09KGNbKGNbZWE+PjJdfDApKzMyPj4yXXwwKSsoY1tNPj4yXXwwKTtjWyhjW2VhPj4yXXwwKSsyMD4+Ml09Y1taPj4yXTtUUihjW1o+PjJdfDAsY1soY1t4Pj4yXXwwKSs4Pj4yXXwwLGNbUD4+Ml18MCl8MDtjW1o+PjJdPShjW1o+PjJdfDApKyhjW1A+PjJdfDApO2NbKGNbZWE+PjJdfDApKzE2Pj4yXT1jW1o+PjJdO1RSKGNbWj4+Ml18MCxjWyhjW3g+PjJdfDApKzQ+PjJdfDAsY1tOPj4yXXwwKXwwO2NbWj4+Ml09KGNbWj4+Ml18MCkrKGNbTj4+Ml18MCk7Y1tGPj4yXT0wO3doaWxlKDEpe2lmKChjW0Y+PjJdfDApPj0oY1tNPj4yXXwwKSlicmVhaztjW0o+PjJdPTA7Y1tXPj4yXT1ScChjWyhjW3o+PjJdfDApKyhjW0Y+PjJdPDwyKT4+Ml18MCxKKXwwO1RSKGNbWj4+Ml18MCxjW1c+PjJdfDAsY1tKPj4yXXwwKXwwO2FbKGNbWj4+Ml18MCkrKGNbSj4+Ml18MCk+PjBdPTA7T2soY1taPj4yXXwwKTtjWyhjWyhjW2VhPj4yXXwwKSsyOD4+Ml18MCkrKGNbRj4+Ml08PDIpPj4yXT1jW1o+PjJdO2NbWj4+Ml09KGNbWj4+Ml18MCkrKChjW0o+PjJdfDApKzEpO2NbRj4+Ml09KGNbRj4+Ml18MCkrMX1jW0Y+PjJdPTA7d2hpbGUoMSl7aWYoKGNbRj4+Ml18MCk+PShjW00+PjJdfDApKWJyZWFrO2NbSz4+Ml09a1IoY1soY1soY1tlYT4+Ml18MCkrMjg+PjJdfDApKyhjW0Y+PjJdPDwyKT4+Ml18MCl8MDtjW0U+PjJdPTA7d2hpbGUoMSl7aWYoKGNbRT4+Ml18MCk+PShjW1E+PjJdfDApKWJyZWFrO2NbYWE+PjJdPWNbKGNbQj4+Ml18MCkrKGNbRT4+Ml08PDIpPj4yXTtpZigoKGNbYWE+PjJdfDApIT0wPyhpYT1jW0s+PjJdfDAsKGlhfDApPT0oa1IoY1thYT4+Ml18MCl8MCkpOjApPzA9PSh6ZChjWyhjWyhjW2VhPj4yXXwwKSsyOD4+Ml18MCkrKGNbRj4+Ml08PDIpPj4yXXwwLGNbYWE+PjJdfDAsY1tLPj4yXXwwKXwwKTowKXthWyhjWyhjW2VhPj4yXXwwKSszMj4+Ml18MCkrKGNbRj4+Ml18MCk+PjBdPTE7S2QoY1thYT4+Ml18MCk7Y1soY1tCPj4yXXwwKSsoY1tFPj4yXTw8Mik+PjJdPTB9Y1tFPj4yXT0oY1tFPj4yXXwwKSsxfWNbRj4+Ml09KGNbRj4+Ml18MCkrMX1jW0U+PjJdPTA7d2hpbGUoMSl7aWYoKGNbRT4+Ml18MCk+PShjW1E+PjJdfDApKWJyZWFrO2lmKGNbKGNbQj4+Ml18MCkrKGNbRT4+Ml08PDIpPj4yXXwwKXtpYT1jW3k+PjJdfDA7Y1tVPj4yXT1jWyhjW0I+PjJdfDApKyhjW0U+PjJdPDwyKT4+Ml07RmsoaWEsMjQxNDQsVSk7Y1tnYT4+Ml09MX1jW0U+PjJdPShjW0U+PjJdfDApKzF9aWYoKGNbZ2E+PjJdfDApPT0wPygoY1tYPj4yXXwwKT09MHwwKSE9KChjW2NhPj4yXXwwKT09MHwwKTowKXtjWyQ+PjJdPShjW1g+PjJdfDApPT0wPzI0MTYzOjI0MTcyO2NbZ2E+PjJdPTE7aWE9Y1t5Pj4yXXwwO2NbVj4+Ml09Y1skPj4yXTtGayhpYSwyNDE4MyxWKX1pYT1TcChjW2VhPj4yXXwwLGNbY2E+PjJdfDAsZ2EpfDA7Y1soY1tlYT4+Ml18MCkrMjE2Pj4yXT1pYTtpYT1UcChjW2VhPj4yXXwwLGNbWD4+Ml18MCxnYSl8MDtjWyhjW2VhPj4yXXwwKSsyMjA+PjJdPWlhO2lmKCEoY1tnYT4+Ml18MCkpe2lmKGNbdj4+Ml18MCljW2dhPj4yXT1VcChjW2VhPj4yXXwwKXwwO2lmKCEoKGNbRz4+Ml18MCkhPTB8KGNbdj4+Ml18MCkhPTApKWFbKGNbZWE+PjJdfDApKzIyOT4+MF09MjtWcChnYSxjW2VhPj4yXXwwKTtjWyhjW2VhPj4yXXwwKSsyMjQ+PjJdPShjWyhjW2VhPj4yXXwwKSsyMzY+PjJdfDApLTM1O1dwKGdhLGNbZWE+PjJdfDApfX19fWVsc2UgY1tnYT4+Ml09Nzt3aGlsZSgwKTtLZChjW2JhPj4yXXwwKTtLZChjW0E+PjJdfDApO0tkKGNbWD4+Ml18MCk7S2QoY1tjYT4+Ml18MCk7S2QoY1tZPj4yXXwwKTtLZChjW18+PjJdfDApO2NbRT4+Ml09MDt3aGlsZSgxKXtpZigoY1tFPj4yXXwwKT49KGNbUT4+Ml18MCkpYnJlYWs7S2QoY1soY1tCPj4yXXwwKSsoY1tFPj4yXTw8Mik+PjJdfDApO2NbRT4+Ml09KGNbRT4+Ml18MCkrMX1LZChjW3o+PjJdfDApO0tkKGNbQj4+Ml18MCk7Zj1jW2VhPj4yXXwwO2lmKCEoY1tnYT4+Ml18MCkpe2NbY1tkYT4+Ml0+PjJdPWY7aWE9Y1tnYT4+Ml18MDtpPWhhO3JldHVybiBpYXwwfWlmKGYpe1NrKGNbZWE+PjJdfDApfDA7aWE9Y1tnYT4+Ml18MDtpPWhhO3JldHVybiBpYXwwfWlmKCEoY1tmYT4+Ml18MCkpe2lhPWNbZ2E+PjJdfDA7aT1oYTtyZXR1cm4gaWF8MH1UYltjWyhjW2NbZmE+PjJdPj4yXXwwKSs4Pj4yXSYyNTVdKGNbZmE+PjJdfDApfDA7aWE9Y1tnYT4+Ml18MDtpPWhhO3JldHVybiBpYXwwfWZ1bmN0aW9uIE1wKGIpe2I9YnwwO3ZhciBjPTAsZD0wO2Q9aTtpPWkrMTZ8MDtjPWQ7YVtjPj4wXT1iO2lmKGFbYz4+MF0mMTI4KXtiPTE7Yj1iJjE7aT1kO3JldHVybiBifDB9Yj0oYVsyNDg2NSsoYVtjPj4wXXwwKT4+MF18MCkhPTA7Yj1iJjE7aT1kO3JldHVybiBifDB9ZnVuY3Rpb24gTnAoYixkLGUsZil7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTA7eT1pO2k9aSs4MHwwO3Q9eSsxNnwwO3M9eSs4fDA7ej15O2c9eSs3NnwwO2g9eSs3MnwwO0E9eSs2OHwwO2o9eSs2NHwwO2s9eSs2MHwwO3I9eSs1NnwwO3U9eSs1MnwwO3A9eSs0OHwwO3Y9eSs0NHwwO3c9eSs0MHwwO289eSszNnwwO2w9eSszMnwwO249eSsyOHwwO3E9eSsyNHwwO209eSsyMHwwO2NbaD4+Ml09YjtjW0E+PjJdPWQ7Y1tqPj4yXT1lO2Nbaz4+Ml09ZjtjW3U+PjJdPWNbQT4+Ml07Y1twPj4yXT0wO2Nbej4+Ml09Y1tBPj4yXTtjW3Y+PjJdPU9kKDE4MzkxLHopfDA7aWYoIShjW3Y+PjJdfDApKXtjW2c+PjJdPTc7QT1jW2c+PjJdfDA7aT15O3JldHVybiBBfDB9QT1rUihjW3Y+PjJdfDApfDA7Y1t3Pj4yXT0oY1t2Pj4yXXwwKStBO2NbdT4+Ml09UnAoY1t2Pj4yXXwwLHApfDA7aWYoIShjW3U+PjJdfDApKWNbdT4+Ml09Y1t2Pj4yXTthWyhjW3U+PjJdfDApKyhjW3A+PjJdfDApPj4wXT0wO09rKGNbdT4+Ml18MCk7ej1jW2g+PjJdfDA7QT1jW3U+PjJdfDA7Y1tvPj4yXT1Fayh6LEEsKGtSKGNbdT4+Ml18MCl8MCkrMXwwKXwwO2lmKGNbbz4+Ml18MCl7Y1tsPj4yXT0wO2Nbbj4+Ml09MDtjW3U+PjJdPShjW3U+PjJdfDApKygoY1twPj4yXXwwKSsxKTt3aGlsZSgxKXtpZigoY1t1Pj4yXXwwKT4+PjA+PShjW3c+PjJdfDApPj4+MClicmVhaztBPVJwKGNbdT4+Ml18MCxwKXwwO2NbdT4+Ml09QTtpZighQSlicmVhaztjW3E+PjJdPShjW24+PjJdfDApKzE8PDI7Y1ttPj4yXT1MZChjW2w+PjJdfDAsY1txPj4yXXwwKXwwO2lmKCEoY1ttPj4yXXwwKSl7eD0xMTticmVha31jW2w+PjJdPWNbbT4+Ml07ej1jW3U+PjJdfDA7QT1jW24+PjJdfDA7Y1tuPj4yXT1BKzE7Y1soY1tsPj4yXXwwKSsoQTw8Mik+PjJdPXo7YVsoY1t1Pj4yXXwwKSsoY1twPj4yXXwwKT4+MF09MDtPayhjW3U+PjJdfDApO2NbdT4+Ml09KGNbdT4+Ml18MCkrKChjW3A+PjJdfDApKzEpfWlmKCh4fDApPT0xMSl7S2QoY1t2Pj4yXXwwKTtLZChjW2w+PjJdfDApO2NbZz4+Ml09NztBPWNbZz4+Ml18MDtpPXk7cmV0dXJuIEF8MH1jW3I+PjJdPU9iW2NbKGNbbz4+Ml18MCkrND4+Ml0mMjU1XShjW24+PjJdfDAsY1tsPj4yXXwwLGNbaj4+Ml18MCl8MDtpZihjW3I+PjJdfDApRmsoY1trPj4yXXwwLDI0ODQ3LHQpO2Vsc2UgY1tjW2Nbaj4+Ml0+PjJdPj4yXT1jW28+PjJdO0tkKGNbbD4+Ml18MCl9ZWxzZXtBPWNbaz4+Ml18MDtjW3M+PjJdPWNbdT4+Ml07RmsoQSwyMDU5NSxzKTtjW3I+PjJdPTF9S2QoY1t2Pj4yXXwwKTtjW2c+PjJdPWNbcj4+Ml07QT1jW2c+PjJdfDA7aT15O3JldHVybiBBfDB9ZnVuY3Rpb24gT3AoYixkLGUpe2I9YnwwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MDtvPWk7aT1pKzMyfDA7az1vO2Y9bysyNHwwO2c9bysyMHwwO2g9bysxNnwwO2o9bysxMnwwO209bys4fDA7bD1vKzR8MDtjW2c+PjJdPWI7Y1toPj4yXT1kO2Nbaj4+Ml09ZTtjW2w+PjJdPWNbZz4+Ml07d2hpbGUoMSl7ZD1jW2w+PjJdfDA7aWYoKGFbY1tsPj4yXT4+MF18MCk9PTYxKWJyZWFrO2lmKCEoYVtkPj4wXXwwKSl7bj00O2JyZWFrfWNbbD4+Ml09KGNbbD4+Ml18MCkrMX1pZigobnwwKT09NCl7Y1tmPj4yXT0wO249Y1tmPj4yXXwwO2k9bztyZXR1cm4gbnwwfWNbY1toPj4yXT4+Ml09ZC0oY1tnPj4yXXwwKTtjW2s+PjJdPShjW2w+PjJdfDApKzE7Y1ttPj4yXT1PZCgxODM5MSxrKXwwO2lmKGNbbT4+Ml18MClPayhjW20+PjJdfDApO2NbY1tqPj4yXT4+Ml09Y1ttPj4yXTtjW2Y+PjJdPTE7bj1jW2Y+PjJdfDA7aT1vO3JldHVybiBufDB9ZnVuY3Rpb24gUHAoYSxiLGQsZSxmLGcsaCl7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7dmFyIGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wO0E9aTtpPWkrOTZ8MDt3PUErOHwwO0I9QTtqPUErODB8MDtDPUErNzZ8MDtEPUErNzJ8MDtrPUErNjh8MDtsPUErNjR8MDttPUErNjB8MDtuPUErNTZ8MDt2PUErNTJ8MDt6PUErNDh8MDt1PUErNDR8MDtvPUErNDB8MDtzPUErMzZ8MDtyPUErMzJ8MDtwPUErMjh8MDt4PUErMjR8MDt0PUErMjB8MDt5PUErMTZ8MDtxPUErMTJ8MDtjW2o+PjJdPWE7Y1tDPj4yXT1iO2NbRD4+Ml09ZDtjW2s+PjJdPWU7Y1tsPj4yXT1mO2NbbT4+Ml09ZztjW24+PjJdPWg7Y1t2Pj4yXT0wO2NbdT4+Ml09MDtkPWNbRD4+Ml18MDtjW0I+PjJdPWNbQz4+Ml07Y1tCKzQ+PjJdPWQ7Y1t6Pj4yXT1PZCgyNDc5MixCKXwwO2lmKGNbej4+Ml18MCl7Y1t2Pj4yXT1jZihjW2o+PjJdfDAsY1t6Pj4yXXwwLC0xLHUsMCl8MDtpZihjW3Y+PjJdfDApe0Q9Y1tuPj4yXXwwO2Nbdz4+Ml09YmYoY1tqPj4yXXwwKXwwO0ZrKEQsMTgzOTEsdyl9fWVsc2UgY1t2Pj4yXT03O0tkKGNbej4+Ml18MCk7aWYoY1t2Pj4yXXwwKXtEPWNbdj4+Ml18MDtpPUE7cmV0dXJuIER8MH1jW3M+PjJdPTA7Y1tyPj4yXT14ZShjW3U+PjJdfDApfDA7Y1twPj4yXT0wO3doaWxlKDEpe2lmKChjW3A+PjJdfDApPj0oY1tyPj4yXXwwKSlicmVhaztjW3g+PjJdPUhlKGNbdT4+Ml18MCxjW3A+PjJdfDApfDA7RD0oa1IoY1t4Pj4yXXwwKXwwKSsxfDA7Y1tzPj4yXT0oY1tzPj4yXXwwKStEO2NbcD4+Ml09KGNbcD4+Ml18MCkrMX1jW28+PjJdPUlkKChjW3I+PjJdPDwyKSsoY1tzPj4yXXwwKXwwKXwwO2E6ZG8gaWYoIShjW28+PjJdfDApKWNbdj4+Ml09NztlbHNle2NbdD4+Ml09KGNbbz4+Ml18MCkrKGNbcj4+Ml08PDIpO2NbcD4+Ml09MDt3aGlsZSgxKXtpZigoY1twPj4yXXwwKT49KGNbcj4+Ml18MCkpYnJlYWsgYTtjW3k+PjJdPUhlKGNbdT4+Ml18MCxjW3A+PjJdfDApfDA7Y1txPj4yXT0oa1IoY1t5Pj4yXXwwKXwwKSsxO1RSKGNbdD4+Ml18MCxjW3k+PjJdfDAsY1txPj4yXXwwKXwwO2NbKGNbbz4+Ml18MCkrKGNbcD4+Ml08PDIpPj4yXT1jW3Q+PjJdO2NbdD4+Ml09KGNbdD4+Ml18MCkrKGNbcT4+Ml18MCk7Y1twPj4yXT0oY1twPj4yXXwwKSsxfX13aGlsZSgwKTtYZChjW3U+PjJdfDApfDA7Y1tjW2w+PjJdPj4yXT1jW3I+PjJdO2NbY1ttPj4yXT4+Ml09Y1tzPj4yXTtjW2Nbaz4+Ml0+PjJdPWNbbz4+Ml07RD1jW3Y+PjJdfDA7aT1BO3JldHVybiBEfDB9ZnVuY3Rpb24gUXAoYixkLGUpe2I9YnwwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wO3E9aTtpPWkrNDh8MDtmPXErMzZ8MDtnPXErMzJ8MDtoPXErMjh8MDtqPXErMjR8MDtrPXErMjB8MDttPXErMTZ8MDtvPXErMTJ8MDtwPXErOHwwO2w9cSs0fDA7bj1xO2NbZz4+Ml09YjtjW2g+PjJdPWQ7Y1tqPj4yXT1lO2NbbT4+Ml09MTthOmRvIGlmKChjW2c+PjJdfDApIT0wPyhhW2NbZz4+Ml0+PjBdfDApIT0wOjApe2NbbT4+Ml09KGNbbT4+Ml18MCkrMTtjW28+PjJdPWNbZz4+Ml07d2hpbGUoMSl7aWYoIShhW2Nbbz4+Ml0+PjBdfDApKWJyZWFrIGE7aWYoKGFbY1tvPj4yXT4+MF18MCk9PTQ0KWNbbT4+Ml09KGNbbT4+Ml18MCkrMTtjW28+PjJdPShjW28+PjJdfDApKzF9fXdoaWxlKDApO2Nbaz4+Ml09SWQoKGNbbT4+Ml18MCkqMjR8MCl8MDtjW2Nbaj4+Ml0+PjJdPWNbaz4+Ml07aWYoIShjW2s+PjJdfDApKXtjW2Y+PjJdPTc7Yj1jW2Y+PjJdfDA7aT1xO3JldHVybiBifDB9VlIoY1trPj4yXXwwLDAsKGNbbT4+Ml18MCkqMjR8MCl8MDtiOmRvIGlmKGNbZz4+Ml18MCl7Y1twPj4yXT1jW2c+PjJdO2NbbD4+Ml09MTt3aGlsZSgxKXtpZigoY1tsPj4yXXwwKT49KGNbbT4+Ml18MCkpYnJlYWsgYjtjW24+PjJdPTA7aWYoWnAocCxuKXwwKWJyZWFrO2lmKCEoY1tuPj4yXXwwKSl7Y1ttPj4yXT0oY1ttPj4yXXwwKSstMTtjW2w+PjJdPShjW2w+PjJdfDApKy0xfWVsc2UgY1soY1trPj4yXXwwKSsoKGNbbD4+Ml18MCkqMjR8MCk+PjJdPWNbbj4+Ml07Y1twPj4yXT0oY1twPj4yXXwwKSsxO2NbbD4+Ml09KGNbbD4+Ml18MCkrMX1jW2Y+PjJdPTE7Yj1jW2Y+PjJdfDA7aT1xO3JldHVybiBifDB9d2hpbGUoMCk7Y1tjW2g+PjJdPj4yXT1jW20+PjJdO2NbZj4+Ml09MDtiPWNbZj4+Ml18MDtpPXE7cmV0dXJuIGJ8MH1cbmZ1bmN0aW9uIFNFKGYsZyxoKXtmPWZ8MDtnPWd8MDtoPWh8MDt2YXIgaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEQ9MCxFPTAsRj0wLEc9MCxIPTAsST0wLEo9MCxLPTAsTD0wLE09MCxOPTAsTz0wLFA9MCxRPTAsUj0wLFM9MCxUPTAsVT0wLFY9MCxXPTAsWD0wLFk9MCxaPTAsXz0wLCQ9MCxhYT0wLGJhPTAsY2E9MCxkYT0wLGVhPTAsZmE9MCxnYT0wLGhhPTAsaWE9MCxqYT0wLGthPTAsbGE9MCxtYT0wLG5hPTAsb2E9MDtvYT1pO2k9aSsyNTZ8MDtsPW9hKzIyOHwwO209b2ErMjI0fDA7bj1vYSsyMjB8MDtqPW9hKzIxNnwwO2hhPW9hKzIxMnwwO1Y9b2ErMjA4fDA7UD1vYSsyMDR8MDtsYT1vYSs0MHwwO2lhPW9hKzMyfDA7dD1vYSsyNHwwO2ZhPW9hKzIwMHwwO0k9b2ErMTk2fDA7Sz1vYSsxOTJ8MDtMPW9hKzE4OHwwO2JhPW9hKzE4NHwwO3E9b2ErMTgwfDA7cz1vYSsyNDB8MDtrPW9hKzE2fDA7ej1vYSsxNzZ8MDt5PW9hKzE3MnwwO1E9b2ErMTY4fDA7Y2E9b2ErMTY0fDA7TT1vYSsyMzZ8MDtXPW9hKzE2MHwwO089b2ErMTU2fDA7cj1vYSsyMzR8MDtBPW9hKzE1MnwwO1U9b2ErMTQ4fDA7dT1vYSsxNDR8MDtZPW9hKzE0MHwwO0I9b2ErMTM2fDA7Uz1vYSsxMzJ8MDtnYT1vYSsxMjh8MDtaPW9hKzEyNHwwO189b2ErMTIwfDA7RT1vYSsxMTZ8MDtHPW9hKzExMnwwO25hPW9hKzEwOHwwO21hPW9hKzIzMnwwO3g9b2ErMTA0fDA7bz1vYSsyMzl8MDtwPW9hKzIzOHwwO049b2ErMTAwfDA7SD1vYSs5NnwwO2VhPW9hKzkyfDA7VD1vYSs4OHwwO2FhPW9hKzg0fDA7amE9b2ErOHwwO2thPW9hOyQ9b2ErODB8MDtKPW9hKzc2fDA7dj1vYSs3MnwwO0Q9b2ErNjh8MDtYPW9hKzY0fDA7Uj1vYSs2MHwwO2RhPW9hKzU2fDA7dz1vYSs1MnwwO0Y9b2ErNDh8MDtjW2w+PjJdPWY7Y1ttPj4yXT1nO2Nbbj4+Ml09aDtjW2o+PjJdPWNbY1ttPj4yXT4+Ml07Zz10O2NbZz4+Ml09MDtjW2crND4+Ml09MDtjW2ZhPj4yXT0wO2NbST4+Ml09MDtjW0s+PjJdPTA7Y1tiYT4+Ml09Y1tjW2o+PjJdPj4yXTtjW3E+PjJdPWNbY1tiYT4+Ml0+PjJdO2lmKGFbKGNbcT4+Ml18MCkrNjk+PjBdfDApe2k9b2E7cmV0dXJufWNbaGE+PjJdPShjWyhjW20+PjJdfDApKzIwPj4yXXwwKSsoKGNbbj4+Ml18MCkqNDh8MCk7Y1tWPj4yXT0oY1tqPj4yXXwwKSs0ODg7Y1tQPj4yXT1jW2NbaGE+PjJdPj4yXTtnPWxFKGNbVj4+Ml18MCxjWyhjW1A+PjJdfDApKzEyPj4yXXwwKXwwO2o9bGE7Y1tqPj4yXT1nO2Nbais0Pj4yXT1DO2NbTD4+Ml09ZFtjW1A+PjJdPj4wXTtkbyBpZigoY1tMPj4yXXwwKT09MzMpe2lmKGxCKGNbYmE+PjJdfDAsY1tQPj4yXXwwKXwwKXtpPW9hO3JldHVybn1oPWNbVj4+Ml18MDtmPShjW1A+PjJdfDApKzIwfDA7aWYoY1soY1tQPj4yXXwwKSs0Pj4yXSYyMDQ4KXtnPW1FKGgsY1tmPj4yXXwwKXwwO2o9KGNbaGE+PjJdfDApKzMyfDA7Y1tqPj4yXT1nO2Nbais0Pj4yXT1DO2JyZWFrfWVsc2V7Zz1LRChoLGNbZj4+Ml18MCl8MDtqPShjW2hhPj4yXXwwKSszMnwwO2Nbaj4+Ml09ZztjW2orND4+Ml09QzticmVha319ZWxzZSBpZigoY1tMPj4yXXwwKT09MzQpe2o9KGNbaGE+PjJdfDApKzMyfDA7Y1tqPj4yXT0wO2Nbais0Pj4yXT0wO2JyZWFrfWVsc2V7Zz1sRShjW1Y+PjJdfDAsY1soY1tQPj4yXXwwKSsxNj4+Ml18MCl8MDtqPShjW2hhPj4yXXwwKSszMnwwO2Nbaj4+Ml09ZztjW2orND4+Ml09QzticmVha313aGlsZSgwKTtnPWxFKGNbVj4+Ml18MCxjW1A+PjJdfDApfDA7aj1pYTtjW2o+PjJdPWc7Y1tqKzQ+PjJdPUM7aWYoY1soY1tQPj4yXXwwKSs0Pj4yXSYxKXtoPU9EKGNbVj4+Ml18MCxiWyhjW1A+PjJdfDApKzM2Pj4xXXwwKXwwO2Y9aztjW2Y+PjJdPWg7Y1tmKzQ+PjJdPUM7Zj1rO2g9aWE7Zz1jW2grND4+Ml18Y1tmKzQ+PjJdO2o9aWE7Y1tqPj4yXT1jW2g+PjJdfGNbZj4+Ml07Y1tqKzQ+PjJdPWc7aj1rO2o9UVIoY1tqPj4yXXwwLGNbais0Pj4yXXwwLDEsMCl8MDtrPXQ7Y1trPj4yXT1qO2Nbays0Pj4yXT1DfWo9aWE7aD1jW2orND4+Ml18MDtrPShjW2hhPj4yXXwwKSs0MHwwO2Nbaz4+Ml09Y1tqPj4yXTtjW2srND4+Ml09aDtjWyhjW2hhPj4yXXwwKSsyMD4+Ml09LTE7Y1soY1toYT4+Ml18MCkrMTY+PjJdPS0xO2JbKGNbaGE+PjJdfDApKzEyPj4xXT0wO2s9KFRFKGNbTD4+Ml18MCl8MCkhPTA7aD1jW1A+PjJdfDA7YTpkbyBpZihrKXtjW1E+PjJdPWt5KGNbaCsxMj4+Ml18MCl8MDtjW2NhPj4yXT1reShjWyhjW1A+PjJdfDApKzE2Pj4yXXwwKXwwO1U9KGNbaGE+PjJdfDApKzMyfDA7WT1sYTtiW00+PjFdPSgoY1tVPj4yXSZjW1k+PjJdfDApPT0wPyhjW1UrND4+Ml0mY1tZKzQ+PjJdfDApPT0wOjApPzgxOTE6MjA0ODtpZigoY1soY1toYT4+Ml18MCkrMjQ+PjJdfDApPjApY1tRPj4yXT1jWyhjWyhjWyhjW1E+PjJdfDApKzIwPj4yXXwwKSs0Pj4yXXwwKSsoKChjWyhjW2hhPj4yXXwwKSsyND4+Ml18MCktMXwwKSoyMHwwKT4+Ml07WT1sYTtpZihVRShjW2w+PjJdfDAsY1tMPj4yXXwwLGNbWT4+Ml18MCxjW1krND4+Ml18MCxjW1E+PjJdfDAseix5KXwwKXtjWyhjW2hhPj4yXXwwKSsyMD4+Ml09Y1t6Pj4yXTtjWyhjW2hhPj4yXXwwKSsyOD4+Ml09Y1t5Pj4yXTtZPShWRShjW0w+PjJdfDApfDApJjY1NTM1O2JbKGNbaGE+PjJdfDApKzEyPj4xXT1ZJmVbTT4+MV19aWYoKGNbTD4+Ml18MCk9PTI5KXtZPShjW2hhPj4yXXwwKSsxMHwwO2JbWT4+MV09ZVtZPj4xXXwyMDQ4fWlmKChjW2NhPj4yXXwwKSE9MD8oWT0oY1toYT4+Ml18MCkrMzJ8MCwoVUUoY1tsPj4yXXwwLGNbTD4+Ml18MCxjW1k+PjJdfDAsY1tZKzQ+PjJdfDAsY1tjYT4+Ml18MCx6LHkpfDApIT0wKTowKXtiW3I+PjFdPTA7aWYoKGNbKGNbaGE+PjJdfDApKzIwPj4yXXwwKT49MCl7Y1tPPj4yXT1JeShjW3E+PjJdfDAsY1tQPj4yXXwwLDApfDA7aWYoYVsoY1txPj4yXXwwKSs2OT4+MF18MCl7aXYoY1txPj4yXXwwLGNbTz4+Ml18MCk7aT1vYTtyZXR1cm59Y1tBPj4yXT1XRShjW20+PjJdfDAsY1tPPj4yXXwwLDMpfDA7aWYoIShjW0E+PjJdfDApKXtpPW9hO3JldHVybn1jW1c+PjJdPShjWyhjW20+PjJdfDApKzIwPj4yXXwwKSsoKGNbQT4+Ml18MCkqNDh8MCk7WEUoY1ttPj4yXXwwLGNbQT4+Ml18MCxjW24+PjJdfDApO2lmKChjW0w+PjJdfDApPT0yOSl7Y2E9KGNbVz4+Ml18MCkrMTB8MDtiW2NhPj4xXT1lW2NhPj4xXXwyMDQ4fWNbaGE+PjJdPShjWyhjW20+PjJdfDApKzIwPj4yXXwwKSsoKGNbbj4+Ml18MCkqNDh8MCk7Y2E9KGNbaGE+PjJdfDApKzEwfDA7YltjYT4+MV09ZVtjYT4+MV18ODtpZihZRShjW2JhPj4yXXwwLGNbTz4+Ml18MCl8MCl7Y2E9KGNbaGE+PjJdfDApKzEyfDA7YltjYT4+MV09ZVtjYT4+MV18MjA0ODtiW3I+PjFdPTIwNDh9fWVsc2V7Y1tPPj4yXT1jW1A+PjJdO2NbVz4+Ml09Y1toYT4+Ml19WkUoY1tiYT4+Ml18MCxjW08+PjJdfDApO2NbKGNbVz4+Ml18MCkrMjA+PjJdPWNbej4+Ml07Y1soY1tXPj4yXXwwKSsyOD4+Ml09Y1t5Pj4yXTtVPWxhO1k9dDtsYT1jW1UrND4+Ml18Y1tZKzQ+PjJdO2NhPShjW1c+PjJdfDApKzMyfDA7Y1tjYT4+Ml09Y1tVPj4yXXxjW1k+PjJdO2NbY2ErND4+Ml09bGE7Y2E9aWE7aWE9Y1tjYSs0Pj4yXXwwO2xhPShjW1c+PjJdfDApKzQwfDA7Y1tsYT4+Ml09Y1tjYT4+Ml07Y1tsYSs0Pj4yXT1pYTtsYT0oVkUoZFtjW08+PjJdPj4wXXwwKXwwKSY2NTUzNTtiWyhjW1c+PjJdfDApKzEyPj4xXT1sYSsoZVtyPj4xXXwwKSZlW00+PjFdfX1lbHNle2lmKChkW2g+PjBdfDApPT0zMj8oZFsoY1ttPj4yXXwwKSs4Pj4wXXwwKT09Mjg6MCl7Y1tVPj4yXT1jWyhjW1A+PjJdfDApKzIwPj4yXTtjW3U+PjJdPTA7d2hpbGUoMSl7aWYoKGNbdT4+Ml18MCk+PTIpYnJlYWsgYTtjYT1jW2JhPj4yXXwwO2lhPWRbMzQ4MzIrKGNbdT4+Ml18MCk+PjBdfDA7bGE9SXkoY1txPj4yXXwwLGNbKGNbUD4+Ml18MCkrMTI+PjJdfDAsMCl8MDtjW1k+PjJdPUV2KGNhLGlhLGxhLEl5KGNbcT4+Ml18MCxjWyhjWyhjW1U+PjJdfDApKzQ+PjJdfDApKygoY1t1Pj4yXXwwKSoyMHwwKT4+Ml18MCwwKXwwLDApfDA7X0UoY1tZPj4yXXwwLGNbUD4+Ml18MCk7Y1tCPj4yXT1XRShjW20+PjJdfDAsY1tZPj4yXXwwLDMpfDA7U0UoY1tsPj4yXXwwLGNbbT4+Ml18MCxjW0I+PjJdfDApO2NbaGE+PjJdPShjWyhjW20+PjJdfDApKzIwPj4yXXwwKSsoKGNbbj4+Ml18MCkqNDh8MCk7WEUoY1ttPj4yXXwwLGNbQj4+Ml18MCxjW24+PjJdfDApO2NbdT4+Ml09KGNbdT4+Ml18MCkrMX19aWYoKGRbY1tQPj4yXT4+MF18MCk9PTI3KXskRShjW2w+PjJdfDAsY1ttPj4yXXwwLGNbbj4+Ml18MCk7Y1toYT4+Ml09KGNbKGNbbT4+Ml18MCkrMjA+PjJdfDApKygoY1tuPj4yXXwwKSo0OHwwKX19d2hpbGUoMCk7aWYoKGRbKGNbbT4+Ml18MCkrOD4+MF18MCk9PTI4PyhhRihjW2JhPj4yXXwwLGNbUD4+Ml18MCxmYSxJLEspfDApIT0wOjApe2JbbWE+PjFdPTI1OTtjW1M+PjJdPWNbKGNbKGNbKGNbUD4+Ml18MCkrMjA+PjJdfDApKzQ+PjJdfDApKzIwPj4yXTtjW2dhPj4yXT1JeShjW3E+PjJdfDAsY1tmYT4+Ml18MCwwKXwwO2I6ZG8gaWYoKGNbSz4+Ml18MCkhPTA/KGFbKGNbY1tiYT4+Ml0+PjJdfDApKzY5Pj4wXXwwKT09MDowKXttYT0oY1toYT4+Ml18MCkrMTB8MDtiW21hPj4xXT1lW21hPj4xXXwxMDI0O2NbeD4+Ml09MDt3aGlsZSgxKXttYT1hWyhjWyhjW2ZhPj4yXXwwKSs4Pj4yXXwwKSsoY1t4Pj4yXXwwKT4+MF18MDthW28+PjBdPW1hO2lmKCEobWE8PDI0Pj4yNCkpYnJlYWsgYjthWyhjWyhjW2ZhPj4yXXwwKSs4Pj4yXXwwKSsoY1t4Pj4yXXwwKT4+MF09YVtvPj4wXSZ+KGRbMTg0MDMrKGRbbz4+MF18MCk+PjBdJjMyKTthWyhjWyhjW2dhPj4yXXwwKSs4Pj4yXXwwKSsoY1t4Pj4yXXwwKT4+MF09YVsxNzYxMysoZFtvPj4wXXwwKT4+MF18MDtjW3g+PjJdPShjW3g+PjJdfDApKzF9fXdoaWxlKDApO2lmKCEoYVsoY1txPj4yXXwwKSs2OT4+MF18MCkpe21hPShKZihjWyhjW2dhPj4yXXwwKSs4Pj4yXXwwKXwwKS0xfDA7Y1tOPj4yXT0oY1soY1tnYT4+Ml18MCkrOD4+Ml18MCkrbWE7YVtwPj4wXT1hW2NbTj4+Ml0+PjBdfDA7aWYoY1tLPj4yXXwwKXtpZigoZFtwPj4wXXwwKT09NjQpY1tJPj4yXT0wO2FbcD4+MF09YVsxNzYxMysoZFtwPj4wXXwwKT4+MF18MH1hW2NbTj4+Ml0+PjBdPShkW3A+PjBdfDApKzF9Y1tuYT4+Ml09KGNbSz4+Ml18MCkhPTA/MjA0Mjk6MzQ4MzQ7Y1taPj4yXT1JeShjW3E+PjJdfDAsY1tTPj4yXXwwLDApfDA7bGE9Y1tiYT4+Ml18MDttYT1XeShjW2JhPj4yXXwwLGNbWj4+Ml18MCxjW25hPj4yXXwwKXwwO2NbWj4+Ml09RXYobGEsNDEsbWEsY1tmYT4+Ml18MCwwKXwwO19FKGNbWj4+Ml18MCxjW1A+PjJdfDApO2NbRT4+Ml09V0UoY1ttPj4yXXwwLGNbWj4+Ml18MCwyNTkpfDA7U0UoY1tsPj4yXXwwLGNbbT4+Ml18MCxjW0U+PjJdfDApO2NbXz4+Ml09SXkoY1txPj4yXXwwLGNbUz4+Ml18MCwwKXwwO21hPWNbYmE+PjJdfDA7bmE9V3koY1tiYT4+Ml18MCxjW18+PjJdfDAsY1tuYT4+Ml18MCl8MDtjW18+PjJdPUV2KG1hLDQwLG5hLGNbZ2E+PjJdfDAsMCl8MDtfRShjW18+PjJdfDAsY1tQPj4yXXwwKTtjW0c+PjJdPVdFKGNbbT4+Ml18MCxjW18+PjJdfDAsMjU5KXwwO1NFKGNbbD4+Ml18MCxjW20+PjJdfDAsY1tHPj4yXXwwKTtjW2hhPj4yXT0oY1soY1ttPj4yXXwwKSsyMD4+Ml18MCkrKChjW24+PjJdfDApKjQ4fDApO2lmKGNbST4+Ml18MCl7WEUoY1ttPj4yXXwwLGNbRT4+Ml18MCxjW24+PjJdfDApO1hFKGNbbT4+Ml18MCxjW0c+PjJdfDAsY1tuPj4yXXwwKX19aWYoKChkWyhjW20+PjJdfDApKzg+PjBdfDApPT0yOD8oYkYoY1tQPj4yXXwwLHMpfDApIT0wOjApPyhjW2VhPj4yXT1jW2NbKGNbKGNbUD4+Ml18MCkrMjA+PjJdfDApKzQ+PjJdPj4yXSxjW1Q+PjJdPWNbKGNbKGNbKGNbUD4+Ml18MCkrMjA+PjJdfDApKzQ+PjJdfDApKzIwPj4yXSxtYT1sRShjW1Y+PjJdfDAsY1tlYT4+Ml18MCl8MCxuYT1rYSxjW25hPj4yXT1tYSxjW25hKzQ+PjJdPUMsbmE9bEUoY1tWPj4yXXwwLGNbVD4+Ml18MCl8MCxtYT1qYSxjW21hPj4yXT1uYSxjW21hKzQ+PjJdPUMsbWE9a2EsbmE9amEsKGNbbWE+PjJdJmNbbmE+PjJdfDApPT0wPyhjW21hKzQ+PjJdJmNbbmErND4+Ml18MCk9PTA6MCk6MCl7bmE9Y1tiYT4+Ml18MDtjWyQ+PjJdPUV2KG5hLDMwLDAsSXkoY1txPj4yXXwwLGNbZWE+PjJdfDAsMCl8MCwwKXwwO2NbSD4+Ml09V0UoY1ttPj4yXXwwLGNbJD4+Ml18MCwzKXwwO2NbYWE+PjJdPShjWyhjW20+PjJdfDApKzIwPj4yXXwwKSsoKGNbSD4+Ml18MCkqNDh8MCk7bmE9a2E7bWE9Y1tuYSs0Pj4yXXwwO2xhPShjW2FhPj4yXXwwKSszMnwwO2NbbGE+PjJdPWNbbmE+PjJdO2NbbGErND4+Ml09bWE7Y1soY1thYT4+Ml18MCkrMjA+PjJdPWNbKGNbVD4+Ml18MCkrMjg+PjJdO2NbKGNbYWE+PjJdfDApKzI4Pj4yXT1iWyhjW1Q+PjJdfDApKzMyPj4xXTtiWyhjW2FhPj4yXXwwKSsxMj4+MV09NjQ7YVsoY1thYT4+Ml18MCkrMTU+PjBdPWFbcz4+MF18MDtYRShjW20+PjJdfDAsY1tIPj4yXXwwLGNbbj4+Ml18MCk7Y1toYT4+Ml09KGNbKGNbbT4+Ml18MCkrMjA+PjJdfDApKygoY1tuPj4yXXwwKSo0OHwwKTtsYT0oY1toYT4+Ml18MCkrMTB8MDtiW2xhPj4xXT1lW2xhPj4xXXw4O2xhPShjW2hhPj4yXXwwKSs0MHwwO21hPWNbbGErND4+Ml18MDtuYT0oY1thYT4+Ml18MCkrNDB8MDtjW25hPj4yXT1jW2xhPj4yXTtjW25hKzQ+PjJdPW1hfWRvIGlmKChkWyhjW20+PjJdfDApKzg+PjBdfDApPT0yOCl7aWYoKGRbY1tQPj4yXT4+MF18MCkhPTM3PyhkW2NbUD4+Ml0+PjBdfDApIT0yOTowKWJyZWFrO2lmKFhBKGNbKGNbUD4+Ml18MCkrMTI+PjJdfDApfDApe2lmKChjWyhjWyhjW1A+PjJdfDApKzEyPj4yXXwwKSs0Pj4yXSYyMDQ4fDApIT0wPyhjWyhjWyhjW1A+PjJdfDApKzE2Pj4yXXwwKSs0Pj4yXSYyMDQ4fDApIT0wOjApYnJlYWs7Y1tKPj4yXT1jeihjWyhjW1A+PjJdfDApKzEyPj4yXXwwKXwwO2Nbdj4+Ml09MDt3aGlsZSgxKXtpZigoY1t2Pj4yXXwwKT49KGNbSj4+Ml18MCkpYnJlYWs7Y1tSPj4yXT1jRihjW2JhPj4yXXwwLGNbKGNbUD4+Ml18MCkrMTI+PjJdfDAsY1t2Pj4yXXwwKXwwO2NbZGE+PjJdPWNGKGNbYmE+PjJdfDAsY1soY1tQPj4yXXwwKSsxNj4+Ml18MCxjW3Y+PjJdfDApfDA7Y1tYPj4yXT1FdihjW2JhPj4yXXwwLGRbY1tQPj4yXT4+MF18MCxjW1I+PjJdfDAsY1tkYT4+Ml18MCwwKXwwO19FKGNbWD4+Ml18MCxjW1A+PjJdfDApO2NbRD4+Ml09V0UoY1ttPj4yXXwwLGNbWD4+Ml18MCwxKXwwO1NFKGNbbD4+Ml18MCxjW20+PjJdfDAsY1tEPj4yXXwwKTtjW3Y+PjJdPShjW3Y+PjJdfDApKzF9Y1toYT4+Ml09KGNbKGNbbT4+Ml18MCkrMjA+PjJdfDApKygoY1tuPj4yXXwwKSo0OHwwKTtiWyhjW2hhPj4yXXwwKSsxMD4+MV09NjtiWyhjW2hhPj4yXXwwKSsxMj4+MV09MH19d2hpbGUoMCk7YzpkbyBpZigoKCgoZFsoY1ttPj4yXXwwKSs4Pj4wXXwwKT09Mjg/KGRbY1tQPj4yXT4+MF18MCk9PTMzOjApPyhjWyhjW2hhPj4yXXwwKSsyND4+Ml18MCk9PTA6MCk/KGRbY1soY1tQPj4yXXwwKSsxMj4+Ml0+PjBdfDApPT0xNTg6MCk/KGNbKGNbKGNbUD4+Ml18MCkrMjA+PjJdfDApKzQ4Pj4yXXwwKT09MDowKXtjW3c+PjJdPTA7d2hpbGUoMSl7bmE9Y1t3Pj4yXXwwO2lmKChuYXwwKT49KGN6KGNbKGNbUD4+Ml18MCkrMTI+PjJdfDApfDApKWJyZWFrIGM7Y1tGPj4yXT1XRShjW20+PjJdfDAsY1tQPj4yXXwwLDIpfDA7Y1soY1soY1ttPj4yXXwwKSsyMD4+Ml18MCkrKChjW0Y+PjJdfDApKjQ4fDApKzI0Pj4yXT0oY1t3Pj4yXXwwKSsxO1NFKGNbbD4+Ml18MCxjW20+PjJdfDAsY1tGPj4yXXwwKTtYRShjW20+PjJdfDAsY1tGPj4yXXwwLGNbbj4+Ml18MCk7Y1t3Pj4yXT0oY1t3Pj4yXXwwKSsxfX13aGlsZSgwKTtsYT10O25hPShjW2hhPj4yXXwwKSszMnwwO2thPW5hO21hPWNba2ErND4+Ml18Y1tsYSs0Pj4yXTtjW25hPj4yXT1jW2thPj4yXXxjW2xhPj4yXTtjW25hKzQ+PjJdPW1hO2k9b2E7cmV0dXJufWZ1bmN0aW9uIFRFKGEpe2E9YXwwO3ZhciBiPTAsZD0wO2Q9aTtpPWkrMTZ8MDtiPWQ7Y1tiPj4yXT1hO2lmKChjW2I+PjJdfDApIT0zMz8hKChjW2I+PjJdfDApPj0zNyYoY1tiPj4yXXwwKTw9NDF8KGNbYj4+Ml18MCk9PTM0KTowKWI9KGNbYj4+Ml18MCk9PTI5O2Vsc2UgYj0xO2k9ZDtyZXR1cm4gYiYxfDB9ZnVuY3Rpb24gVUUoYSxmLGcsaCxqLGssbCl7YT1hfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7bD1sfDA7dmFyIG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTA7dj1pO2k9aSs0OHwwO3I9dis0MHwwO209diszNnwwO3c9diszMnwwO249djtvPXYrMjh8MDtzPXYrMjR8MDt0PXYrMjB8MDtxPXYrMTZ8MDtwPXYrMTJ8MDt1PXYrOHwwO2NbbT4+Ml09YTtjW3c+PjJdPWY7YT1uO2NbYT4+Ml09ZztjW2ErND4+Ml09aDtjW28+PjJdPWo7Y1tzPj4yXT1rO2NbdD4+Ml09bDtpZigoKGNbdz4+Ml18MCk+PTM4PyhkW2Nbbz4+Ml0+PjBdfDApPT0xNTg6MCkmKGNbdz4+Ml18MCk8PTQxKWNbbz4+Ml09Y1tjWyhjWyhjW28+PjJdfDApKzIwPj4yXXwwKSs0Pj4yXT4+Ml07aWYoKGRbY1tvPj4yXT4+MF18MCk9PTE1Mil7Y1tjW3M+PjJdPj4yXT1jWyhjW28+PjJdfDApKzI4Pj4yXTtjW2NbdD4+Ml0+PjJdPWJbKGNbbz4+Ml18MCkrMzI+PjFdO2Nbcj4+Ml09MTt3PWNbcj4+Ml18MDtpPXY7cmV0dXJuIHd8MH13PW47aWYoKGNbdz4+Ml18MCk9PTAmKGNbdys0Pj4yXXwwKT09MCl7Y1tyPj4yXT0wO3c9Y1tyPj4yXXwwO2k9djtyZXR1cm4gd3wwfXc9bjtsPWNbdz4+Ml18MDt3PWNbdys0Pj4yXXwwO2s9bjtrPVFSKGNbaz4+Ml18MCxjW2srND4+Ml18MCwxLDApfDA7aWYoKGwma3wwKSE9MHwodyZDfDApIT0wKXtjW3I+PjJdPTA7dz1jW3I+PjJdfDA7aT12O3JldHVybiB3fDB9Y1twPj4yXT0wO3doaWxlKDEpe3c9bjtrPWNbdys0Pj4yXXwwO2c9Y1twPj4yXXwwO2lmKCEoaz4+PjA+MHwoa3wwKT09MCYoY1t3Pj4yXXwwKT4+PjA+MSkpYnJlYWs7Y1twPj4yXT1nKzE7az1uO2s9U1IoY1trPj4yXXwwLGNbays0Pj4yXXwwLDEpfDA7dz1uO2Nbdz4+Ml09aztjW3crND4+Ml09Q31jW3U+PjJdPWNbKGNbbT4+Ml18MCkrOCsoZyo3MnwwKSs0ND4+Ml07Y1txPj4yXT1jWyhjWyhjW20+PjJdfDApKzgrKChjW3A+PjJdfDApKjcyfDApKzE2Pj4yXXwwKSs4Pj4yXTthOndoaWxlKDEpe2lmKCEoY1txPj4yXXwwKSl7Zz0yMjticmVha31iOmRvIGlmKGNbKGNbcT4+Ml18MCkrNDA+PjJdfDApe2NbcD4+Ml09MDt3aGlsZSgxKXtpZigoY1twPj4yXXwwKT49KGVbKGNbcT4+Ml18MCkrNTA+PjFdfDApKWJyZWFrIGI7aWYoKGJbKGNbKGNbcT4+Ml18MCkrND4+Ml18MCkrKGNbcD4+Ml08PDEpPj4xXXwwKT09LTI/KEt5KGNbbz4+Ml18MCxjWyhjWyhjWyhjW3E+PjJdfDApKzQwPj4yXXwwKSs0Pj4yXXwwKSsoKGNbcD4+Ml18MCkqMjB8MCk+PjJdfDAsY1t1Pj4yXXwwKXwwKT09MDowKXtnPTE5O2JyZWFrIGF9Y1twPj4yXT0oY1twPj4yXXwwKSsxfX13aGlsZSgwKTtjW3E+PjJdPWNbKGNbcT4+Ml18MCkrMjA+PjJdfWlmKChnfDApPT0xOSl7Y1tjW3M+PjJdPj4yXT1jW3U+PjJdO2NbY1t0Pj4yXT4+Ml09LTI7Y1tyPj4yXT0xO3c9Y1tyPj4yXXwwO2k9djtyZXR1cm4gd3wwfWVsc2UgaWYoKGd8MCk9PTIyKXtjW3I+PjJdPTA7dz1jW3I+PjJdfDA7aT12O3JldHVybiB3fDB9cmV0dXJuIDB9ZnVuY3Rpb24gVkUoYSl7YT1hfDA7dmFyIGQ9MCxlPTAsZj0wO2Y9aTtpPWkrMTZ8MDtkPWY7ZT1mKzR8MDtjW2Q+PjJdPWE7ZG8gaWYoKGNbZD4+Ml18MCkhPTMzKXtpZigoY1tkPj4yXXwwKT09MzQpe2JbZT4+MV09MjU2O2JyZWFrfWlmKChjW2Q+PjJdfDApPT0yOSl7YltlPj4xXT0xMjg7YnJlYWt9ZWxzZXtiW2U+PjFdPTI8PChjW2Q+PjJdfDApLTM3O2JyZWFrfX1lbHNlIGJbZT4+MV09MTt3aGlsZSgwKTtpPWY7cmV0dXJuIGJbZT4+MV18MH1mdW5jdGlvbiBXRShhLGQsZil7YT1hfDA7ZD1kfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wO3A9aTtpPWkrMzJ8MDtuPXArMjR8MDtnPXArMjB8MDtoPXArMTZ8MDtqPXArMjh8MDttPXArMTJ8MDtvPXArOHwwO2w9cCs0fDA7az1wO2NbZz4+Ml09YTtjW2g+PjJdPWQ7YltqPj4xXT1mO2RvIGlmKChjWyhjW2c+PjJdfDApKzEyPj4yXXwwKT49KGNbKGNbZz4+Ml18MCkrMTY+PjJdfDApKXtjW2w+PjJdPWNbKGNbZz4+Ml18MCkrMjA+PjJdO2Nbaz4+Ml09Y1tjW2NbY1tnPj4yXT4+Ml0+PjJdPj4yXTtmPVZ3KGNbaz4+Ml18MCwoY1soY1tnPj4yXXwwKSsxNj4+Ml18MCkqNDg8PDEsMCl8MDtjWyhjW2c+PjJdfDApKzIwPj4yXT1mO2lmKGNbKGNbZz4+Ml18MCkrMjA+PjJdfDApe1RSKGNbKGNbZz4+Ml18MCkrMjA+PjJdfDAsY1tsPj4yXXwwLChjWyhjW2c+PjJdfDApKzEyPj4yXXwwKSo0OHwwKXwwO2lmKChjW2w+PjJdfDApIT0oKGNbZz4+Ml18MCkrMjR8MCkpVGYoY1trPj4yXXwwLGNbbD4+Ml18MCk7Zj0oKGt1KGNbaz4+Ml18MCxjWyhjW2c+PjJdfDApKzIwPj4yXXwwKXwwKT4+PjApLzQ4fDA7Y1soY1tnPj4yXXwwKSsxNj4+Ml09ZjticmVha31pZigoZVtqPj4xXXwwKSYxKWl2KGNbaz4+Ml18MCxjW2g+PjJdfDApO2NbKGNbZz4+Ml18MCkrMjA+PjJdPWNbbD4+Ml07Y1tuPj4yXT0wO289Y1tuPj4yXXwwO2k9cDtyZXR1cm4gb3wwfXdoaWxlKDApO2E9KGNbZz4+Ml18MCkrMTJ8MDtmPWNbYT4+Ml18MDtjW2E+PjJdPWYrMTtjW28+PjJdPWY7Y1ttPj4yXT0oY1soY1tnPj4yXXwwKSsyMD4+Ml18MCkrKGYqNDh8MCk7aWYoKGNbaD4+Ml18MCkhPTA/KGNbKGNbaD4+Ml18MCkrND4+Ml0mMjYyMTQ0fDApIT0wOjApe2Y9Y1soY1toPj4yXXwwKSsyOD4+Ml18MDtmPSgoTWooZiwoKGZ8MCk8MCk8PDMxPj4zMSl8MCk8PDE2Pj4xNiktMjcwJjY1NTM1O2JbKGNbbT4+Ml18MCkrOD4+MV09Zn1lbHNlIGJbKGNbbT4+Ml18MCkrOD4+MV09MTtoPWt5KGNbaD4+Ml18MCl8MDtjW2NbbT4+Ml0+PjJdPWg7YlsoY1ttPj4yXXwwKSsxMD4+MV09YltqPj4xXXwwO2NbKGNbbT4+Ml18MCkrND4+Ml09Y1tnPj4yXTtjWyhjW20+PjJdfDApKzE2Pj4yXT0tMTtnPShjW20+PjJdfDApKzEyfDA7aD1nKzM2fDA7ZG97YltnPj4xXT0wO2c9ZysyfDB9d2hpbGUoKGd8MCk8KGh8MCkpO2Nbbj4+Ml09Y1tvPj4yXTtvPWNbbj4+Ml18MDtpPXA7cmV0dXJuIG98MH1mdW5jdGlvbiBYRShkLGUsZil7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MDtnPWk7aT1pKzE2fDA7aj1nKzh8MDtrPWcrNHwwO2g9ZztjW2o+PjJdPWQ7Y1trPj4yXT1lO2NbaD4+Ml09ZjtjWyhjWyhjW2o+PjJdfDApKzIwPj4yXXwwKSsoKGNbaz4+Ml18MCkqNDh8MCkrMTY+PjJdPWNbaD4+Ml07YlsoY1soY1tqPj4yXXwwKSsyMD4+Ml18MCkrKChjW2s+PjJdfDApKjQ4fDApKzg+PjFdPWJbKGNbKGNbaj4+Ml18MCkrMjA+PjJdfDApKygoY1toPj4yXXwwKSo0OHwwKSs4Pj4xXXwwO2Q9KGNbKGNbaj4+Ml18MCkrMjA+PjJdfDApKygoY1toPj4yXXwwKSo0OHwwKSsxNHwwO2FbZD4+MF09KGFbZD4+MF18MCkrMTw8MjQ+PjI0O2k9ZztyZXR1cm59ZnVuY3Rpb24gWUUoYixmKXtiPWJ8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTA7cD1pO2k9aSszMnwwO209cCsyMHwwO2o9cCsxNnwwO2s9cCsxMnwwO2c9cCsyNXwwO2g9cCsyNHwwO2w9cCs4fDA7bj1wKzR8MDtvPXA7Y1tqPj4yXT1iO2Nbaz4+Ml09ZjtpZihlWyhjW2Nbaj4+Ml0+PjJdfDApKzY0Pj4xXSY1MTIpe2NbbT4+Ml09MDtvPWNbbT4+Ml18MDtpPXA7cmV0dXJuIG98MH1pZigoZFtjW2s+PjJdPj4wXXwwKSE9Mzc/KGRbY1trPj4yXT4+MF18MCkhPTI5OjApe2NbbT4+Ml09MDtvPWNbbT4+Ml18MDtpPXA7cmV0dXJuIG98MH1pZihjWyhjW2s+PjJdfDApKzQ+PjJdJjEpe2NbbT4+Ml09MDtvPWNbbT4+Ml18MDtpPXA7cmV0dXJuIG98MH1hW2c+PjBdPWV5KGNbKGNbaz4+Ml18MCkrMTI+PjJdfDApfDA7YVtoPj4wXT1leShjWyhjW2s+PjJdfDApKzE2Pj4yXXwwKXwwO2RvIGlmKChhW2c+PjBdfDApIT0oYVtoPj4wXXwwKSl7aWYoKGFbZz4+MF18MCk+PTY3PyhhW2g+PjBdfDApPj02NzowKWJyZWFrO2NbbT4+Ml09MDtvPWNbbT4+Ml18MDtpPXA7cmV0dXJuIG98MH13aGlsZSgwKTtjW2w+PjJdPXNCKGNbaj4+Ml18MCxjWyhjW2s+PjJdfDApKzEyPj4yXXwwLGNbKGNbaz4+Ml18MCkrMTY+PjJdfDApfDA7aWYoKGNbbD4+Ml18MCkhPTA/KGlnKGNbY1tsPj4yXT4+Ml18MCwzNDgzNCl8MCkhPTA6MCl7Y1tsPj4yXT1meShjW2o+PjJdfDAsY1soY1trPj4yXXwwKSsxMj4+Ml18MCl8MDtpZihjW2w+PjJdfDApZz1jW2NbbD4+Ml0+PjJdfDA7ZWxzZSBnPTA7Y1tuPj4yXT1nO2NbbD4+Ml09ZnkoY1tqPj4yXXwwLGNbKGNbaz4+Ml18MCkrMTY+PjJdfDApfDA7aWYoY1tsPj4yXXwwKWc9Y1tjW2w+PjJdPj4yXXwwO2Vsc2UgZz0wO2Nbbz4+Ml09ZztjW20+PjJdPShUZChjW24+PjJdfDAsY1tvPj4yXXwwKXwwKT09MCYxO289Y1ttPj4yXXwwO2k9cDtyZXR1cm4gb3wwfWNbbT4+Ml09MTtvPWNbbT4+Ml18MDtpPXA7cmV0dXJuIG98MH1mdW5jdGlvbiBaRShmLGcpe2Y9ZnwwO2c9Z3wwO3ZhciBoPTAsaj0wLGs9MCxsPTAsbT0wLG49MDttPWk7aT1pKzE2fDA7aD1tKzh8MDtqPW0rNHwwO2s9bSsxNHwwO249bSsxMnwwO2w9bTtjW2g+PjJdPWY7Y1tqPj4yXT1nO2Jbaz4+MV09Y1soY1soY1tqPj4yXXwwKSsxNj4+Ml18MCkrND4+Ml0mMjU2O2Jbbj4+MV09Y1soY1soY1tqPj4yXXwwKSsxMj4+Ml18MCkrND4+Ml0mMjU2O2RvIGlmKChlW2s+PjFdfDApPT0oZVtuPj4xXXwwKSl7aWYoYltrPj4xXXwwKXtuPShjWyhjW2o+PjJdfDApKzE2Pj4yXXwwKSs0fDA7Y1tuPj4yXT1jW24+PjJdJi0yNTc7YnJlYWt9aWYoZnkoY1toPj4yXXwwLGNbKGNbaj4+Ml18MCkrMTI+PjJdfDApfDApe249KGNbKGNbaj4+Ml18MCkrMTI+PjJdfDApKzR8MDtjW24+PjJdPWNbbj4+Ml18MjU2fX13aGlsZSgwKTtjW2w+PjJdPWNbKGNbaj4+Ml18MCkrMTY+PjJdO2NbKGNbaj4+Ml18MCkrMTY+PjJdPWNbKGNbaj4+Ml18MCkrMTI+PjJdO2NbKGNbaj4+Ml18MCkrMTI+PjJdPWNbbD4+Ml07aWYoKGRbY1tqPj4yXT4+MF18MCk8Mzgpe2k9bTtyZXR1cm59YVtjW2o+PjJdPj4wXT0oKGRbY1tqPj4yXT4+MF18MCktMzheMikrMzg7aT1tO3JldHVybn1mdW5jdGlvbiBfRShhLGQpe2E9YXwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MDtnPWk7aT1pKzE2fDA7ZT1nKzR8MDtmPWc7Y1tlPj4yXT1hO2NbZj4+Ml09ZDtpZighKGNbZT4+Ml18MCkpe2k9ZztyZXR1cm59YT0oY1tlPj4yXXwwKSs0fDA7Y1thPj4yXT1jW2E+PjJdfGNbKGNbZj4+Ml18MCkrND4+Ml0mMTtiWyhjW2U+PjJdfDApKzM2Pj4xXT1iWyhjW2Y+PjJdfDApKzM2Pj4xXXwwO2k9ZztyZXR1cm59ZnVuY3Rpb24gJEUoZixnLGgpe2Y9ZnwwO2c9Z3wwO2g9aHwwO3ZhciBqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsRD0wLEU9MCxGPTAsRz0wLEg9MCxJPTAsSj0wLEs9MCxMPTAsTT0wLE49MCxPPTAsUD0wLFE9MCxSPTAsUz0wLFQ9MCxVPTAsVj0wLFc9MDtWPWk7aT1pKzE2MHwwO3c9VisxNTZ8MDt4PVYrMTUyfDA7eT1WKzE0OHwwO1Q9VisxNDR8MDtSPVYrMTQwfDA7RD1WKzEzNnwwO1M9VisxMzJ8MDtMPVYrMTI4fDA7RT1WKzEyNHwwO1E9VisxMjB8MDtQPVYrMTE2fDA7dD1WKzExMnwwO0I9VisyNHwwO249VisxNnwwO3A9VisxMDh8MDtyPVYrMTA0fDA7cT1WKzEwMHwwO289Vis5NnwwO2o9Vis4fDA7az1WO3U9Vis5MnwwO2w9Vis4OHwwO3M9Vis4NHwwO209Vis4MHwwO3Y9Vis3NnwwO0o9Vis3MnwwO0Y9Vis2OHwwO0c9Vis2NHwwO0k9Vis2MHwwO3o9Vis1NnwwO0E9Vis1MnwwO0s9Vis0OHwwO049Vis0NHwwO009Vis0MHwwO089ViszNnwwO0g9ViszMnwwO2Nbdz4+Ml09ZjtjW3g+PjJdPWc7Y1t5Pj4yXT1oO2NbVD4+Ml09Y1tjW3g+PjJdPj4yXTtjW1I+PjJdPWNbY1tUPj4yXT4+Ml07Y1tEPj4yXT1jW2NbUj4+Ml0+PjJdO2NbUz4+Ml09KGNbKGNbeD4+Ml18MCkrMjA+PjJdfDApKygoY1t5Pj4yXXwwKSo0OHwwKTtjW0w+PjJdPWNbY1tTPj4yXT4+Ml07Zz1zaChjW0Q+PjJdfDAsNDE2LDApfDA7Y1t0Pj4yXT1nO2NbKGNbUz4+Ml18MCkrMjg+PjJdPWc7aWYoIShjW3Q+PjJdfDApKXtpPVY7cmV0dXJufWc9KGNbUz4+Ml18MCkrMTB8MDtiW2c+PjFdPWVbZz4+MV18MTY7Y1tRPj4yXT1jW3Q+PjJdO1ZSKChjW1E+PjJdfDApKzI0fDAsMCwzODQpfDA7QkQoY1tRPj4yXXwwLGNbVD4+Ml18MCk7Q0QoY1tRPj4yXXwwLGNbTD4+Ml18MCwyNyk7RkQoY1t3Pj4yXXwwLGNbUT4+Ml18MCk7aWYoYVsoY1tEPj4yXXwwKSs2OT4+MF18MCl7aT1WO3JldHVybn1nPW47Y1tnPj4yXT0tMTtjW2crND4+Ml09LTE7Zz1CO2NbZz4+Ml09LTE7Y1tnKzQ+PjJdPS0xO2NbRT4+Ml09KGNbKGNbUT4+Ml18MCkrMTI+PjJdfDApLTE7Y1tQPj4yXT1jWyhjW1E+PjJdfDApKzIwPj4yXTt3aGlsZSgxKXtnPW47aWYoISgoY1tFPj4yXXwwKT49MD8oY1tnPj4yXXwwKSE9MHwoY1tnKzQ+PjJdfDApIT0wOjApKWJyZWFrO2RvIGlmKCEoZVsoY1tQPj4yXXwwKSsxMj4+MV0mNTExKSl7Zz1CO2NbZz4+Ml09MDtjW2crND4+Ml09MDtjW3A+PjJdPVZ3KGNbRD4+Ml18MCw0MDgsMCl8MDtpZihjW3A+PjJdfDApe2c9ajtjW2c+PjJdPTA7Y1tnKzQ+PjJdPTA7Y1soY1tQPj4yXXwwKSsyOD4+Ml09Y1twPj4yXTtnPShjW1A+PjJdfDApKzEwfDA7YltnPj4xXT1lW2c+PjFdfDMyO2JbKGNbUD4+Ml18MCkrMTI+PjFdPTEwMjQ7Y1tyPj4yXT1jW3A+PjJdO1ZSKChjW3I+PjJdfDApKzI0fDAsMCwzODQpfDA7QkQoY1tyPj4yXXwwLGNbY1t4Pj4yXT4+Ml18MCk7Q0QoY1tyPj4yXXwwLGNbY1tQPj4yXT4+Ml18MCwyOCk7RkQoY1t3Pj4yXXwwLGNbcj4+Ml18MCk7Y1soY1tyPj4yXXwwKSs0Pj4yXT1jW3g+PjJdO2E6ZG8gaWYoIShhWyhjW0Q+PjJdfDApKzY5Pj4wXXwwKSl7Y1tvPj4yXT0wO2NbcT4+Ml09Y1soY1tyPj4yXXwwKSsyMD4+Ml07d2hpbGUoMSl7aWYoKGNbbz4+Ml18MCk+PShjWyhjW3I+PjJdfDApKzEyPj4yXXwwKSlicmVhayBhO2lmKCEoKFRFKGRbY1tjW3E+PjJdPj4yXT4+MF18MCl8MCk9PTA/KGVbKGNbcT4+Ml18MCkrMTI+PjFdfDApIT02NDowKSl7aD1PRCgoY1tUPj4yXXwwKSs0ODh8MCxjWyhjW3E+PjJdfDApKzIwPj4yXXwwKXwwO1c9ajtmPWNbVys0Pj4yXXxDO2c9ajtjW2c+PjJdPWNbVz4+Ml18aDtjW2crND4+Ml09Zn1jW28+PjJdPShjW28+PjJdfDApKzE7Y1txPj4yXT0oY1txPj4yXXwwKSs0OH19d2hpbGUoMCk7Zj1qO2g9bjtnPWNbaCs0Pj4yXSZjW2YrND4+Ml07Vz1uO2NbVz4+Ml09Y1toPj4yXSZjW2Y+PjJdO2NbVys0Pj4yXT1nfX1lbHNlIGlmKCEoZVsoY1tQPj4yXXwwKSsxMD4+MV0mOCkpe2c9T0QoKGNbVD4+Ml18MCkrNDg4fDAsY1soY1tQPj4yXXwwKSsyMD4+Ml18MCl8MDtXPWs7Y1tXPj4yXT1nO2NbVys0Pj4yXT1DO2lmKGVbKGNbUD4+Ml18MCkrMTA+PjFdJjIpe2NbdT4+Ml09KGNbKGNbUT4+Ml18MCkrMjA+PjJdfDApKygoY1soY1tQPj4yXXwwKSsxNj4+Ml18MCkqNDh8MCk7Zj1PRCgoY1tUPj4yXXwwKSs0ODh8MCxjWyhjW3U+PjJdfDApKzIwPj4yXXwwKXwwO2g9aztnPWNbaCs0Pj4yXXxDO1c9aztjW1c+PjJdPWNbaD4+Ml18ZjtjW1crND4+Ml09Z31mPWs7aD1uO2c9Y1toKzQ+PjJdJmNbZis0Pj4yXTtXPW47Y1tXPj4yXT1jW2g+PjJdJmNbZj4+Ml07Y1tXKzQ+PjJdPWc7aWYoIShlWyhjW1A+PjJdfDApKzEyPj4xXSYyKSl7Vz1CO2NbVz4+Ml09MDtjW1crND4+Ml09MDticmVha31lbHNle2Y9aztoPUI7Zz1jW2grND4+Ml0mY1tmKzQ+PjJdO1c9QjtjW1c+PjJdPWNbaD4+Ml0mY1tmPj4yXTtjW1crND4+Ml09ZzticmVha319d2hpbGUoMCk7Y1tFPj4yXT0oY1tFPj4yXXwwKSstMTtjW1A+PjJdPShjW1A+PjJdfDApKzQ4fWY9bjtnPWNbZis0Pj4yXXwwO1c9KGNbdD4+Ml18MCkrNDA4fDA7Y1tXPj4yXT1jW2Y+PjJdO2NbVys0Pj4yXT1nO1c9bjtiWyhjW1M+PjJdfDApKzEyPj4xXT0oY1tXPj4yXXwwKT09MCYoY1tXKzQ+PjJdfDApPT0wPzA6NTEyO1c9bjtiOmRvIGlmKChjW1c+PjJdfDApIT0wfChjW1crND4+Ml18MCkhPTA/KGNbKGNbUT4+Ml18MCkrMTI+PjJdfDApPT0yOjApe2NbbD4+Ml09MDtjOndoaWxlKDEpe2c9Y1soY1tRPj4yXXwwKSsyMD4+Ml18MDtXPWNbbD4+Ml18MDtjW2w+PjJdPVcrMTtXPWhGKGcsVyl8MDtjW3M+PjJdPVc7aWYoIVcpYnJlYWsgYjtjW20+PjJdPTA7d2hpbGUoMSl7Zz0oY1soY1tRPj4yXXwwKSsyMD4+Ml18MCkrNDh8MDtXPWNbbT4+Ml18MDtjW20+PjJdPVcrMTtXPWhGKGcsVyl8MDtjW3Y+PjJdPVc7aWYoIVcpY29udGludWUgYztpRihjW3c+PjJdfDAsY1t4Pj4yXXwwLGNbcz4+Ml18MCxjW3Y+PjJdfDApfX19d2hpbGUoMCk7Vz1CO2lmKCEoKGNbVz4+Ml18MCkhPTB8KGNbVys0Pj4yXXwwKSE9MCkpe2k9VjtyZXR1cm59Y1tKPj4yXT0wO2NbRj4+Ml09LTE7Y1tHPj4yXT0tMTtjW0k+PjJdPTA7Y1tJPj4yXT0wO3doaWxlKDEpe2lmKChjW0k+PjJdfDApPj0yKWJyZWFrO2lmKCEoKGNbSj4+Ml18MCkhPTBeMSkpYnJlYWs7Y1tQPj4yXT1jWyhjW1E+PjJdfDApKzIwPj4yXTtjW0U+PjJdPShjWyhjW1E+PjJdfDApKzEyPj4yXXwwKS0xO3doaWxlKDEpe2lmKChjW0U+PjJdfDApPDApYnJlYWs7Vz0oY1tQPj4yXXwwKSsxMHwwO2JbVz4+MV09ZVtXPj4xXSYtNjU7aWYoKGNbKGNbUD4+Ml18MCkrMjA+PjJdfDApIT0oY1tHPj4yXXwwKT8oVz1CLHY9Y1tXPj4yXXwwLFc9Y1tXKzQ+PjJdfDAsZz1PRCgoY1tUPj4yXXwwKSs0ODh8MCxjWyhjW1A+PjJdfDApKzIwPj4yXXwwKXwwLCEoKHYmZ3wwKT09MCYoVyZDfDApPT0wKSk6MCl7VT0zNzticmVha31jW0U+PjJdPShjW0U+PjJdfDApKy0xO2NbUD4+Ml09KGNbUD4+Ml18MCkrNDh9aWYoKFV8MCk9PTM3KXtVPTA7Y1tGPj4yXT1jWyhjW1A+PjJdfDApKzI4Pj4yXTtjW0c+PjJdPWNbKGNbUD4+Ml18MCkrMjA+PjJdfWlmKChjW0U+PjJdfDApPDApYnJlYWs7Y1tKPj4yXT0xO3doaWxlKDEpe2lmKCEoKGNbRT4+Ml18MCk+PTA/KGNbSj4+Ml18MCkhPTA6MCkpYnJlYWs7aj1jW1A+PjJdfDA7ZG8gaWYoKGNbKGNbUD4+Ml18MCkrMjA+PjJdfDApIT0oY1tHPj4yXXwwKSl7Vz1qKzEwfDA7YltXPj4xXT1lW1c+PjFdJi02NX1lbHNle2lmKChjW2orMjg+PjJdfDApIT0oY1tGPj4yXXwwKSl7Y1tKPj4yXT0wO2JyZWFrfWNbQT4+Ml09KGV5KGNbKGNbY1tQPj4yXT4+Ml18MCkrMTY+PjJdfDApfDApPDwyND4+MjQ7Y1t6Pj4yXT0oZXkoY1soY1tjW1A+PjJdPj4yXXwwKSsxMj4+Ml18MCl8MCk8PDI0Pj4yNDtpZigoY1tBPj4yXXwwKSE9MD8oY1tBPj4yXXwwKSE9KGNbej4+Ml18MCk6MCl7Y1tKPj4yXT0wO2JyZWFrfVc9KGNbUD4+Ml18MCkrMTB8MDtiW1c+PjFdPWVbVz4+MV18NjR9d2hpbGUoMCk7Y1tFPj4yXT0oY1tFPj4yXXwwKSstMTtjW1A+PjJdPShjW1A+PjJdfDApKzQ4fWNbST4+Ml09KGNbST4+Ml18MCkrMX1pZighKGNbSj4+Ml18MCkpe2k9VjtyZXR1cm59Y1tOPj4yXT0wO2NbTT4+Ml09MDtjW0U+PjJdPShjWyhjW1E+PjJdfDApKzEyPj4yXXwwKS0xO2NbUD4+Ml09Y1soY1tRPj4yXXwwKSsyMD4+Ml07d2hpbGUoMSl7aWYoKGNbRT4+Ml18MCk8MClicmVhaztpZihlWyhjW1A+PjJdfDApKzEwPj4xXSY2NCl7Y1tLPj4yXT1JeShjW0Q+PjJdfDAsY1soY1tjW1A+PjJdPj4yXXwwKSsxNj4+Ml18MCwwKXwwO2NbTj4+Ml09VHYoY1tjW1Q+PjJdPj4yXXwwLGNbTj4+Ml18MCxjW0s+PjJdfDApfDA7Y1tNPj4yXT1jWyhjW2NbUD4+Ml0+PjJdfDApKzEyPj4yXX1jW0U+PjJdPShjW0U+PjJdfDApKy0xO2NbUD4+Ml09KGNbUD4+Ml18MCkrNDh9Y1tLPj4yXT1JeShjW0Q+PjJdfDAsY1tNPj4yXXwwLDApfDA7Y1tPPj4yXT1FdihjW1I+PjJdfDAsMzMsY1tLPj4yXXwwLDAsMCl8MDtpZihjW08+PjJdfDApe19FKGNbTz4+Ml18MCxjW0w+PjJdfDApO2NbKGNbTz4+Ml18MCkrMjA+PjJdPWNbTj4+Ml07Y1tIPj4yXT1XRShjW3g+PjJdfDAsY1tPPj4yXXwwLDMpfDA7U0UoY1t3Pj4yXXwwLGNbeD4+Ml18MCxjW0g+PjJdfDApO2NbUz4+Ml09KGNbKGNbeD4+Ml18MCkrMjA+PjJdfDApKygoY1t5Pj4yXXwwKSo0OHwwKTtYRShjW3g+PjJdfDAsY1tIPj4yXXwwLGNbeT4+Ml18MCl9ZWxzZSBldihjW0Q+PjJdfDAsY1tOPj4yXXwwKTtiWyhjW1M+PjJdfDApKzEyPj4xXT00MDk2O2k9VjtyZXR1cm59ZnVuY3Rpb24gYUYoZSxmLGcsaCxqKXtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDt2YXIgaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MCxFPTAsRj0wLEc9MDtGPWk7aT1pKzk2fDA7cj1GKzgwfDA7cz1GKzc2fDA7az1GKzcyfDA7dD1GKzY4fDA7dT1GKzY0fDA7Rz1GKzYwfDA7RT1GKzU2fDA7ej1GKzUyfDA7bT1GKzQ4fDA7bj1GKzQ0fDA7cD1GKzQwfDA7dj1GKzM2fDA7cT1GKzg0fDA7dz1GKzMyfDA7QT1GKzI4fDA7eD1GKzI0fDA7Qz1GKzIwfDA7bz1GKzE2fDA7bD1GKzEyfDA7eT1GKzh8MDtEPUYrNHwwO0I9RjtjW3M+PjJdPWU7Y1trPj4yXT1mO2NbdD4+Ml09ZztjW3U+PjJdPWg7Y1tHPj4yXT1qO2NbRT4+Ml09MDtjW3c+PjJdPWNbY1tzPj4yXT4+Ml07Y1tBPj4yXT0wO2lmKCEoZEYoY1t3Pj4yXXwwLGNbaz4+Ml18MCxjW0c+PjJdfDAscSl8MCkpe2Nbcj4+Ml09MDtHPWNbcj4+Ml18MDtpPUY7cmV0dXJuIEd8MH1jW24+PjJdPWNbKGNbaz4+Ml18MCkrMjA+PjJdO2NbbT4+Ml09Y1soY1soY1tuPj4yXXwwKSs0Pj4yXXwwKSsyMD4+Ml07aWYoKChkW2NbbT4+Ml0+PjBdfDApPT0xNTI/KChleShjW20+PjJdfDApfDApPDwyND4+MjR8MCk9PTY2OjApPyhkWyhjWyhjW20+PjJdfDApKzQ0Pj4yXXwwKSs0Mj4+MF0mMTZ8MCk9PTA6MCl7Y1t6Pj4yXT1reShjW2NbKGNbbj4+Ml18MCkrND4+Ml0+PjJdfDApfDA7Y1t4Pj4yXT1kW2Nbej4+Ml0+PjBdO2lmKChjW3g+PjJdfDApIT0xMzUpe2lmKChjW3g+PjJdfDApPT05NyljW0U+PjJdPWNbKGNbej4+Ml18MCkrOD4+Ml19ZWxzZXtjW28+PjJdPWNbKGNbcz4+Ml18MCkrNDMyPj4yXTtjW2w+PjJdPWJbKGNbej4+Ml18MCkrMzI+PjFdO2NbQT4+Ml09ZUYoY1tvPj4yXXwwLGNbbD4+Ml18MCw2NSl8MDtpZigoY1tBPj4yXXwwKSE9MD8oZWUoY1tBPj4yXXwwKXwwKT09MzowKWNbRT4+Ml09JGQoY1tBPj4yXXwwKXwwO2ZGKGNbKGNbcz4+Ml18MCkrOD4+Ml18MCxjW2w+PjJdfDApfWRvIGlmKGNbRT4+Ml18MCl7Y1t2Pj4yXT0wO3doaWxlKDEpe0c9YVsoY1tFPj4yXXwwKSsoY1t2Pj4yXXwwKT4+MF18MDtjW3A+PjJdPUc7aWYoKChHfDApIT0wPyhjW3A+PjJdfDApIT0oYVtxPj4wXXwwKTowKT8oY1twPj4yXXwwKSE9KGFbcSsxPj4wXXwwKTowKWs9KGNbcD4+Ml18MCkhPShhW3ErMj4+MF18MCk7ZWxzZSBrPTA7bD1jW3Y+PjJdfDA7aWYoIWspYnJlYWs7Y1t2Pj4yXT1sKzF9aWYoKGx8MCkhPTA/MjU1IT0oZFsoY1tFPj4yXXwwKSsoKGNbdj4+Ml18MCktMSk+PjBdfDApOjApe2lmKChjW3A+PjJdfDApPT0oYVtxPj4wXXwwKSlrPShhWyhjW0U+PjJdfDApKygoY1t2Pj4yXXwwKSsxKT4+MF18MCk9PTA7ZWxzZSBrPTA7Y1tjW3U+PjJdPj4yXT1rJjE7Y1t5Pj4yXT1XdihjW3c+PjJdfDAsOTcsY1tFPj4yXXwwKXwwO2lmKGNbeT4+Ml18MClhWyhjWyhjW3k+PjJdfDApKzg+PjJdfDApKyhjW3Y+PjJdfDApPj4wXT0wO2NbY1t0Pj4yXT4+Ml09Y1t5Pj4yXTtpZigoY1t4Pj4yXXwwKSE9MTM1KWJyZWFrO2NbRD4+Ml09Y1soY1tzPj4yXXwwKSs4Pj4yXTtmRihjW0Q+PjJdfDAsYlsoY1t6Pj4yXXwwKSszMj4+MV18MCk7aWYoIShjW2NbdT4+Ml0+PjJdfDApKWJyZWFrO2lmKCEoYVsoY1soY1t6Pj4yXXwwKSs4Pj4yXXwwKSsxPj4wXXwwKSlicmVhaztjW0I+PjJdPXZ4KGNbcz4+Ml18MCl8MDtTQShjW3M+PjJdfDAsY1t6Pj4yXXwwLGNbQj4+Ml18MCl8MDtHPWNbRD4+Ml18MDtnRihHLCh3eChjW0Q+PjJdfDApfDApLTF8MCwwKTt4eChjW3M+PjJdfDAsY1tCPj4yXXwwKTticmVha31jW0U+PjJdPTB9d2hpbGUoMCk7Y1tDPj4yXT0oY1tFPj4yXXwwKSE9MCYxO2NoKGNbQT4+Ml18MCk7Y1tyPj4yXT1jW0M+PjJdO0c9Y1tyPj4yXXwwO2k9RjtyZXR1cm4gR3wwfWNbcj4+Ml09MDtHPWNbcj4+Ml18MDtpPUY7cmV0dXJuIEd8MH1mdW5jdGlvbiBiRihiLGUpe2I9YnwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTA7bT1pO2k9aSszMnwwO2s9bSsyMHwwO2g9bSsxNnwwO2w9bSsxMnwwO2c9bSs4fDA7Zj1tKzR8MDtqPW07Y1toPj4yXT1iO2NbbD4+Ml09ZTtpZigoZFtjW2g+PjJdPj4wXXwwfDApIT0xNTEpe2Nbaz4+Ml09MDtsPWNbaz4+Ml18MDtpPW07cmV0dXJuIGx8MH1jW2c+PjJdPWNbKGNbaD4+Ml18MCkrMjA+PjJdO2lmKChjW2c+PjJdfDApIT0wPyhjW2NbZz4+Ml0+PjJdfDApPT0yOjApe2NbZj4+Ml09Y1soY1soY1tnPj4yXXwwKSs0Pj4yXXwwKSsyMD4+Ml07aWYoKGRbY1tmPj4yXT4+MF18MHwwKT09MTUyPygoZFsoY1soY1tmPj4yXXwwKSs0ND4+Ml18MCkrNDI+PjBdfDApJjE2fDApIT0wOjApe2Nbaj4+Ml09MDt3aGlsZSgxKXtpZigoY1tqPj4yXXwwKT49NCl7Zj0xNDticmVha31lPShpZyhjWyhjW2g+PjJdfDApKzg+PjJdfDAsY1s1NDQ0KyhjW2o+PjJdPDwzKT4+Ml18MCl8MCk9PTA7Yj1jW2o+PjJdfDA7aWYoZSl7Zj0xMjticmVha31jW2o+PjJdPWIrMX1pZigoZnwwKT09MTIpe2FbY1tsPj4yXT4+MF09YVs1NDQ0KyhiPDwzKSs0Pj4wXXwwO2Nbaz4+Ml09MTtsPWNbaz4+Ml18MDtpPW07cmV0dXJuIGx8MH1lbHNlIGlmKChmfDApPT0xNCl7Y1trPj4yXT0wO2w9Y1trPj4yXXwwO2k9bTtyZXR1cm4gbHwwfX1jW2s+PjJdPTA7bD1jW2s+PjJdfDA7aT1tO3JldHVybiBsfDB9Y1trPj4yXT0wO2w9Y1trPj4yXXwwO2k9bTtyZXR1cm4gbHwwfWZ1bmN0aW9uIGNGKGEsZSxmKXthPWF8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MDtsPWk7aT1pKzE2fDA7Zz1sKzEyfDA7aD1sKzh8MDtqPWwrNHwwO2s9bDtjW2c+PjJdPWE7Y1toPj4yXT1lO2Nbaj4+Ml09ZjtpZigoZFtjW2g+PjJdPj4wXXwwfDApPT0xMTkpe2Nbaz4+Ml09RXYoY1tnPj4yXXwwLDE1OSwwLDAsMCl8MDtpZighKGNbaz4+Ml18MCkpe2U9Y1trPj4yXXwwO2k9bDtyZXR1cm4gZXwwfWJbKGNbaz4+Ml18MCkrMzI+PjFdPWNbaj4+Ml07Y1soY1trPj4yXXwwKSsxMj4+Ml09Y1toPj4yXTtlPWNbaz4+Ml18MDtpPWw7cmV0dXJuIGV8MH1lbHNle2lmKChkW2NbaD4+Ml0+PjBdfDB8MCk9PTE1OCljW2g+PjJdPWNbKGNbKGNbKGNbaD4+Ml18MCkrMjA+PjJdfDApKzQ+PjJdfDApKygoY1tqPj4yXXwwKSoyMHwwKT4+Ml07Y1trPj4yXT1JeShjW2NbZz4+Ml0+PjJdfDAsY1toPj4yXXwwLDApfDA7ZT1jW2s+PjJdfDA7aT1sO3JldHVybiBlfDB9cmV0dXJuIDB9ZnVuY3Rpb24gZEYoYixmLGcsaCl7Yj1ifDA7Zj1mfDA7Zz1nfDA7aD1ofDA7dmFyIGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MDtwPWk7aT1pKzMyfDA7aj1wKzIwfDA7az1wKzE2fDA7bD1wKzEyfDA7bT1wKzh8MDtuPXArNHwwO289cDtjW2s+PjJdPWI7Y1tsPj4yXT1mO2NbbT4+Ml09ZztjW24+PjJdPWg7aWYoKChkW2NbbD4+Ml0+PjBdfDB8MCk9PTE1MT8oY1soY1tsPj4yXXwwKSsyMD4+Ml18MCkhPTA6MCk/KGNbY1soY1tsPj4yXXwwKSsyMD4+Ml0+PjJdfDApPT0yOjApe2Nbbz4+Ml09a2koY1trPj4yXXwwLGNbKGNbbD4+Ml18MCkrOD4+Ml18MCwyLDEsMCl8MDtpZigoY1tvPj4yXXwwKSE9MD8oKGVbKGNbbz4+Ml18MCkrMj4+MV18MCkmNHwwKSE9MDowKXtnPWNbbj4+Ml18MDtmPWNbKGNbbz4+Ml18MCkrND4+Ml18MDthW2c+PjBdPWFbZj4+MF18MDthW2crMT4+MF09YVtmKzE+PjBdfDA7YVtnKzI+PjBdPWFbZisyPj4wXXwwO2NbY1ttPj4yXT4+Ml09KChlWyhjW28+PjJdfDApKzI+PjFdfDApJjh8MCk9PTAmMTtjW2o+PjJdPTE7Zz1jW2o+PjJdfDA7aT1wO3JldHVybiBnfDB9Y1tqPj4yXT0wO2c9Y1tqPj4yXXwwO2k9cDtyZXR1cm4gZ3wwfWNbaj4+Ml09MDtnPWNbaj4+Ml18MDtpPXA7cmV0dXJuIGd8MH1mdW5jdGlvbiBlRihiLGQsZil7Yj1ifDA7ZD1kfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MDtuPWk7aT1pKzMyfDA7Zz1uKzE2fDA7aD1uKzEyfDA7aj1uKzh8MDtrPW4rMjB8MDtsPW4rNHwwO209bjtjW2g+PjJdPWI7Y1tqPj4yXT1kO2Fbaz4+MF09ZjtpZigoY1toPj4yXXwwKSE9MD8oY1tsPj4yXT0oY1soY1toPj4yXXwwKSsxMTY+PjJdfDApKygoKGNbaj4+Ml18MCktMXwwKSo0MHwwKSwwPT0oKGVbKGNbbD4+Ml18MCkrOD4+MV18MCkmMXwwKSk6MCl7Y1ttPj4yXT1aaChjW2NbaD4+Ml0+PjJdfDApfDA7aWYoY1ttPj4yXXwwKXtqaChjW20+PjJdfDAsY1tsPj4yXXwwKXwwO0Z4KGNbbT4+Ml18MCxhW2s+PjBdfDAsMSl9Y1tnPj4yXT1jW20+PjJdO2I9Y1tnPj4yXXwwO2k9bjtyZXR1cm4gYnwwfWNbZz4+Ml09MDtiPWNbZz4+Ml18MDtpPW47cmV0dXJuIGJ8MH1mdW5jdGlvbiBmRihhLGIpe2E9YXwwO2I9YnwwO3ZhciBkPTAsZT0wLGY9MDtmPWk7aT1pKzE2fDA7ZD1mKzR8MDtlPWY7Y1tkPj4yXT1hO2NbZT4+Ml09YjtpZigoY1tlPj4yXXwwKT4zMil7Y1soY1tkPj4yXXwwKSsxOTY+PjJdPS0xO2k9ZjtyZXR1cm59ZWxzZXthPShjW2Q+PjJdfDApKzE5NnwwO2NbYT4+Ml09Y1thPj4yXXwxPDwoY1tlPj4yXXwwKS0xO2k9ZjtyZXR1cm59fWZ1bmN0aW9uIGdGKGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wO2U9aTtpPWkrMTZ8MDtnPWUrOHwwO2Y9ZSs0fDA7aD1lO2NbZz4+Ml09YTtjW2Y+PjJdPWI7Y1toPj4yXT1kO2Q9Y1toPj4yXXwwO2NbKGVBKGNbZz4+Ml18MCxjW2Y+PjJdfDApfDApKzEyPj4yXT1kO2k9ZTtyZXR1cm59ZnVuY3Rpb24gaEYoYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGY9MCxnPTAsaD0wO2g9aTtpPWkrMTZ8MDtkPWgrOHwwO2Y9aCs0fDA7Zz1oO2NbZj4+Ml09YTtjW2c+PjJdPWI7Yj1jW2c+PjJdfDA7aWYoKGVbKGNbZj4+Ml18MCkrMTI+PjFdfDB8MCkhPTEwMjQpe2NbZD4+Ml09KGJ8MCk9PTA/Y1tmPj4yXXwwOjA7Zz1jW2Q+PjJdfDA7aT1oO3JldHVybiBnfDB9aWYoKGJ8MCk8KGNbKGNbKGNbZj4+Ml18MCkrMjg+PjJdfDApKzEyPj4yXXwwKSl7Y1tkPj4yXT0oY1soY1soY1tmPj4yXXwwKSsyOD4+Ml18MCkrMjA+PjJdfDApKygoY1tnPj4yXXwwKSo0OHwwKTtnPWNbZD4+Ml18MDtpPWg7cmV0dXJuIGd8MH1lbHNle2NbZD4+Ml09MDtnPWNbZD4+Ml18MDtpPWg7cmV0dXJuIGd8MH1yZXR1cm4gMH1mdW5jdGlvbiBpRihkLGYsZyxoKXtkPWR8MDtmPWZ8MDtnPWd8MDtoPWh8MDt2YXIgaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wO3M9aTtpPWkrNDh8MDttPXMrMjh8MDtuPXMrMjR8MDtqPXMrMjB8MDtrPXMrMTZ8MDtvPXMrMzJ8MDtsPXMrMTJ8MDtyPXMrOHwwO3E9cys0fDA7cD1zO2NbbT4+Ml09ZDtjW24+PjJdPWY7Y1tqPj4yXT1nO2Nbaz4+Ml09aDtiW28+PjFdPWVbKGNbaj4+Ml18MCkrMTI+PjFdfDB8KGVbKGNbaz4+Ml18MCkrMTI+PjFdfDApO2lmKCEoKGVbKGNbaj4+Ml18MCkrMTI+PjFdfDApJjYyKSl7aT1zO3JldHVybn1pZighKChlWyhjW2s+PjJdfDApKzEyPj4xXXwwKSY2Mikpe2k9cztyZXR1cm59aWYoKChlW28+PjFdfDApJjI2fDApIT0oZVtvPj4xXXwwfDApPygoZVtvPj4xXXwwKSYzOHwwKSE9KGVbbz4+MV18MHwwKTowKXtpPXM7cmV0dXJufWlmKEt5KGNbKGNbY1tqPj4yXT4+Ml18MCkrMTI+PjJdfDAsY1soY1tjW2s+PjJdPj4yXXwwKSsxMj4+Ml18MCwtMSl8MCl7aT1zO3JldHVybn1pZihLeShjWyhjW2Nbaj4+Ml0+PjJdfDApKzE2Pj4yXXwwLGNbKGNbY1trPj4yXT4+Ml18MCkrMTY+PjJdfDAsLTEpfDApe2k9cztyZXR1cm59ZG8gaWYoKGVbbz4+MV18MCkmKGVbbz4+MV18MCktMSlpZigoZVtvPj4xXXwwKSYyNCl7YltvPj4xXT04O2JyZWFrfWVsc2V7YltvPj4xXT0zMjticmVha313aGlsZSgwKTtjW2w+PjJdPWNbY1tjW2Nbbj4+Ml0+PjJdPj4yXT4+Ml07Y1tyPj4yXT1JeShjW2w+PjJdfDAsY1tjW2o+PjJdPj4yXXwwLDApfDA7aWYoIShjW3I+PjJdfDApKXtpPXM7cmV0dXJufWNbcT4+Ml09Mzc7d2hpbGUoMSl7aj1jW3E+PjJdfDA7aWYoKGVbbz4+MV18MHwwKT09KDI8PChjW3E+PjJdfDApLTM3fDApKWJyZWFrO2NbcT4+Ml09aisxfWFbY1tyPj4yXT4+MF09ajtjW3A+PjJdPVdFKGNbbj4+Ml18MCxjW3I+PjJdfDAsMyl8MDtTRShjW20+PjJdfDAsY1tuPj4yXXwwLGNbcD4+Ml18MCk7aT1zO3JldHVybn1mdW5jdGlvbiBqRihiLGUsZil7Yj1ifDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTA7aD1pO2k9aSs0OHwwO2s9aCszNnwwO2w9aCszMnwwO2o9aCsyOHwwO2c9aDtjW2s+PjJdPWI7Y1tsPj4yXT1lO2Nbaj4+Ml09ZjtjW2c+PjJdPTA7Y1tnKzQ+PjJdPTA7Y1tnKzg+PjJdPTA7Y1tnKzEyPj4yXT0wO2NbZysxNj4+Ml09MDtjW2crMjA+PjJdPTA7Y1tnKzI0Pj4yXT0wO2FbZysyMD4+MF09MDtjW2crND4+Ml09MjAwO2NbZysyND4+Ml09Y1tsPj4yXTt3eShnLGNbaz4+Ml18MCl8MDtpZihjW2o+PjJdfDApe2w9ZysyMHwwO2w9YVtsPj4wXXwwO2w9bDw8MjQ+PjI0IT0wO2w9bF4xO2w9bCYxO2k9aDtyZXR1cm4gbHwwfWw9ZysyMHwwO2FbbD4+MF09KGRbbD4+MF18MCkmLTM7bD1nKzIwfDA7bD1hW2w+PjBdfDA7bD1sPDwyND4+MjQhPTA7bD1sXjE7bD1sJjE7aT1oO3JldHVybiBsfDB9ZnVuY3Rpb24ga0YoYSxkLGUpe2E9YXwwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wO249aTtpPWkrMzJ8MDtsPW4rOHwwO2s9bjtmPW4rMjh8MDtnPW4rMjR8MDtoPW4rMjB8MDttPW4rMTZ8MDtqPW4rMTJ8MDtjW2Y+PjJdPWE7Y1tnPj4yXT1kO2NbaD4+Ml09ZTthPWNbY1tmPj4yXT4+Ml18MDtkPWNbY1toPj4yXT4+Ml18MDtpZigoYlsoY1toPj4yXXwwKSszMj4+MV18MCk+PTApe2g9Y1soY1soY1toPj4yXXwwKSs0Pj4yXXwwKSsoYlsoY1toPj4yXXwwKSszMj4+MV08PDQpPj4yXXwwO2Nbaz4+Ml09ZDtjW2srND4+Ml09aDtjW20+PjJdPUdoKGEsMzAxNjEsayl8MDtjW2o+PjJdPTE1NTU7aD1jW2Y+PjJdfDA7az1jW2o+PjJdfDA7bD1jW2c+PjJdfDA7bT1jW20+PjJdfDA7dEEoaCxrLGwsbSwtMSwyKTtpPW47cmV0dXJufWVsc2V7Y1tsPj4yXT1kO2NbbT4+Ml09R2goYSwzNTIxOSxsKXwwO2Nbaj4+Ml09MjU3OTtoPWNbZj4+Ml18MDtrPWNbaj4+Ml18MDtsPWNbZz4+Ml18MDttPWNbbT4+Ml18MDt0QShoLGssbCxtLC0xLDIpO2k9bjtyZXR1cm59fWZ1bmN0aW9uIGxGKGEsYixkLGUpe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wO209aTtpPWkrMzJ8MDtsPW0rMjB8MDtuPW0rMTZ8MDtmPW0rMTJ8MDtnPW0rOHwwO2g9bSs0fDA7aj1tO2Nbbj4+Ml09YTtjW2Y+PjJdPWI7Y1tnPj4yXT1kO2NbaD4+Ml09ZTthOmRvIGlmKGNbKGNbY1tuPj4yXT4+Ml18MCkrMjQ+PjJdJjUyNDI4OCl7ZD1jW2Y+PjJdfDA7aWYoIShjW2c+PjJdfDApKXtpZihZeChkKXwwKWQ9MTtlbHNlIGQ9KGNbKGNbZj4+Ml18MCkrMTY+PjJdfDApIT0wO2NbbD4+Ml09ZCYxO249Y1tsPj4yXXwwO2k9bTtyZXR1cm4gbnwwfWNbaj4+Ml09Y1tkKzE2Pj4yXTt3aGlsZSgxKXtkPWNbZj4+Ml18MDtpZighKGNbaj4+Ml18MCkpYnJlYWs7aWYoakQoZCxjW2o+PjJdfDAsY1tnPj4yXXwwLGNbaD4+Ml18MCl8MCl7az05O2JyZWFrfWNbaj4+Ml09Y1soY1tqPj4yXXwwKSs0Pj4yXX1pZigoa3wwKT09OSl7Y1tsPj4yXT0xO249Y1tsPj4yXXwwO2k9bTtyZXR1cm4gbnwwfWNbaj4+Ml09WXgoZCl8MDt3aGlsZSgxKXtpZighKGNbaj4+Ml18MCkpYnJlYWsgYTtpZihtRChjW2Y+PjJdfDAsY1tqPj4yXXwwLGNbZz4+Ml18MCxjW2g+PjJdfDApfDApYnJlYWs7Y1tqPj4yXT1jWyhjW2o+PjJdfDApKzEyPj4yXX1jW2w+PjJdPTE7bj1jW2w+PjJdfDA7aT1tO3JldHVybiBufDB9d2hpbGUoMCk7Y1tsPj4yXT0wO249Y1tsPj4yXXwwO2k9bTtyZXR1cm4gbnwwfWZ1bmN0aW9uIG1GKGIpe2I9YnwwO3ZhciBkPTAsZT0wLGY9MDtlPWk7aT1pKzE2fDA7Zj1lKzR8MDtkPWU7Y1tmPj4yXT1iO2I9Y1tmPj4yXXwwO2lmKGNbKGNbZj4+Ml18MCkrMTI0Pj4yXXwwKWI9Y1tiKzEyND4+Ml18MDtjW2Q+PjJdPWI7YVsoY1tkPj4yXXwwKSsyMD4+MF09MTtpPWU7cmV0dXJufWZ1bmN0aW9uIG5GKGUsZixnLGgsaixrLGwsbSxuLG8scCl7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7bD1sfDA7bT1tfDA7bj1ufDA7bz1vfDA7cD1wfDA7dmFyIHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTAsRT0wLEY9MCxHPTAsSD0wLEk9MCxKPTAsSz0wO0s9aTtpPWkrNjR8MDtxPUsrNDh8MDtyPUsrNDR8MDt0PUsrNDB8MDt1PUsrMzZ8MDt2PUsrMzJ8MDt3PUsrMjh8MDt4PUsrNTJ8MDt5PUsrNTh8MDt6PUsrNTd8MDtBPUsrNTZ8MDtzPUsrMjR8MDtJPUsrMjB8MDtFPUsrMTZ8MDtEPUsrMTJ8MDtHPUsrNTV8MDtGPUsrOHwwO0M9Sys0fDA7Qj1LO0g9Sys1NHwwO2NbcT4+Ml09ZTtjW3I+PjJdPWY7Y1t0Pj4yXT1nO2NbdT4+Ml09aDtjW3Y+PjJdPWo7Y1t3Pj4yXT1rO2JbeD4+MV09bDthW3k+PjBdPW07YVt6Pj4wXT1uO2FbQT4+MF09bztjW3M+PjJdPXA7Y1tJPj4yXT1jWyhjW3E+PjJdfDApKzg+PjJdO2NbRT4+Ml09MDtjW0Q+PjJdPVd6KGNbST4+Ml18MCl8MDthW0c+PjBdPShkWyhjW3I+PjJdfDApKzQyPj4wXSYzMnwwKT09MD8zMzozMDtpZighKGRbQT4+MF18MCkpSWgoY1tJPj4yXXwwLGRbRz4+MF18MCxjW3U+PjJdfDAsY1tEPj4yXXwwLGNbdz4+Ml18MCxiW3g+PjFdfDApfDA7Zz0obEYoY1txPj4yXXwwLGNbcj4+Ml18MCwwLDApfDApIT0wO2lmKGd8KGNbdD4+Ml18MCkhPTApe2NbRj4+Ml09cEYoY1txPj4yXXwwLGNbdD4+Ml18MCwwLDAsMyxjW3I+PjJdfDAsZFt6Pj4wXXwwKXwwO2c9cUYoY1txPj4yXXwwLGNbcj4+Ml18MCl8MDtjW0Y+PjJdPWNbRj4+Ml18ZztjW0U+PjJdPShjWyhjW3E+PjJdfDApKzQ0Pj4yXXwwKSsxO2c9KGNbcT4+Ml18MCkrNDR8MDtjW2c+PjJdPShjW2c+PjJdfDApKygxKyhiWyhjW3I+PjJdfDApKzM0Pj4xXXwwKSk7aXgoY1tJPj4yXXwwLDg0LGNbdz4+Ml18MCxjW0U+PjJdfDApfDA7Y1tDPj4yXT0wO3doaWxlKDEpe2lmKChjW0M+PjJdfDApPj0oYlsoY1tyPj4yXXwwKSszND4+MV18MCkpYnJlYWs7aWYoKGNbRj4+Ml18MCkhPS0xKXtpZigoY1tDPj4yXXwwKTw9MzE/KGNbRj4+Ml0mMTw8Y1tDPj4yXXwwKSE9MDowKUo9OX1lbHNlIEo9OTtpZigoSnwwKT09OSl7Sj0wO05BKGNbST4+Ml18MCxjW3I+PjJdfDAsY1t1Pj4yXXwwLGNbQz4+Ml18MCwoY1tFPj4yXXwwKSsoY1tDPj4yXXwwKSsxfDApfWNbQz4+Ml09KGNbQz4+Ml18MCkrMX1jW0I+PjJdPXd4KGNbST4+Ml18MCl8MDthRChjW3E+PjJdfDAsY1t0Pj4yXXwwLDEwOSwwLDEsY1tyPj4yXXwwLGNbRT4+Ml18MCxkW3o+PjBdfDAsY1tEPj4yXXwwKTtKPWNbQj4+Ml18MDtpZigoSnwwKTwod3goY1tJPj4yXXwwKXwwKSlJaChjW0k+PjJdfDAsZFtHPj4wXXwwLGNbdT4+Ml18MCxjW0Q+PjJdfDAsY1t3Pj4yXXwwLGJbeD4+MV18MCl8MDtmRChjW3E+PjJdfDAsY1tyPj4yXXwwLGNbRT4+Ml18MCwwLDAsMCl9aWYoY1soY1tyPj4yXXwwKSsxMj4+Ml18MCl7ZT1jW3E+PjJdfDA7SD1jW3I+PjJdfDA7Rz1jW0U+PjJdfDA7ckYoZSxILDAsRywwLDApO0c9Y1txPj4yXXwwO0g9Y1t0Pj4yXXwwO2U9Y1tyPj4yXXwwO2Y9Y1tFPj4yXXwwO2c9YVt6Pj4wXXwwO2c9ZyYyNTU7Sj1jW0Q+PjJdfDA7YUQoRyxILDEwOSwwLDIsZSxmLGcsSik7ST1jW0k+PjJdfDA7Sj1jW0Q+PjJdfDA7X3ooSSxKKTtpPUs7cmV0dXJufWFbSD4+MF09MDtvRihjW3E+PjJdfDAsY1tyPj4yXXwwLGNbdT4+Ml18MCxjW3Y+PjJdfDAsMCxjW3M+PjJdfDApO2l4KGNbST4+Ml18MCwxMTcsY1t1Pj4yXXwwLChkW3k+PjBdfDApIT0wPzE6MCl8MDtNaChjW0k+PjJdfDAsLTEsY1tyPj4yXXwwLC0yMCk7aWYoZFtBPj4wXXwwKUpoKGNbST4+Ml18MCw0KTtpZigoY1tzPj4yXXwwKT49MClTeihjW0k+PjJdfDAsMTE3LGNbcz4+Ml18MCl8MDtpZigoZFtBPj4wXXwwKT09MilhW0g+PjBdPWRbSD4+MF18MjtKaChjW0k+PjJdfDAsYVtIPj4wXXwwKTtlPWNbcT4+Ml18MDtIPWNbcj4+Ml18MDtHPWNbRT4+Ml18MDtyRihlLEgsMCxHLDAsMCk7Rz1jW3E+PjJdfDA7SD1jW3Q+PjJdfDA7ZT1jW3I+PjJdfDA7Zj1jW0U+PjJdfDA7Zz1hW3o+PjBdfDA7Zz1nJjI1NTtKPWNbRD4+Ml18MDthRChHLEgsMTA5LDAsMixlLGYsZyxKKTtJPWNbST4+Ml18MDtKPWNbRD4+Ml18MDtfeihJLEopO2k9SztyZXR1cm59ZnVuY3Rpb24gb0YoYSxlLGYsZyxoLGope2E9YXwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO3ZhciBrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MDt5PWk7aT1pKzY0fDA7bD15KzQ4fDA7az15KzQ0fDA7bT15KzQwfDA7bj15KzM2fDA7bz15KzMyfDA7cD15KzI4fDA7cT15KzI0fDA7dj15KzIwfDA7cj15KzE2fDA7cz15KzEyfDA7dT15Kzh8MDt3PXkrNHwwO3Q9eTtjW2w+PjJdPWE7Y1trPj4yXT1lO2NbbT4+Ml09ZjtjW24+PjJdPWc7Y1tvPj4yXT1oO2NbcD4+Ml09ajtjW3Y+PjJdPS0xO2NbdT4+Ml09MDtjW3c+PjJdPWNbKGNbbD4+Ml18MCkrOD4+Ml07aWYoISgoZFsoY1trPj4yXXwwKSs0Mj4+MF18MCkmMzIpKWg9MDtlbHNlIGg9SmooY1trPj4yXXwwKXwwO2NbdD4+Ml09aDtjW3E+PjJdPTA7Y1tzPj4yXT1jWyhjW2s+PjJdfDApKzg+PjJdO3doaWxlKDEpe2lmKCEoY1tzPj4yXXwwKSlicmVhaztpZighKChjW28+PjJdfDApIT0wPyhjWyhjW28+PjJdfDApKyhjW3E+PjJdPDwyKT4+Ml18MCk9PTA6MCkpeD03O2lmKCgoeHwwKT09Nz8oeD0wLChjW3M+PjJdfDApIT0oY1t0Pj4yXXwwKSk6MCk/KChjW24+PjJdfDApKyhjW3E+PjJdfDApfDApIT0oY1twPj4yXXwwKTowKXtjW3Y+PjJdPW9BKGNbbD4+Ml18MCxjW3M+PjJdfDAsY1ttPj4yXXwwLDAsMSxyLGNbdT4+Ml18MCxjW3Y+PjJdfDApfDA7aD1jW3M+PjJdfDA7aWYoKGRbKGNbcz4+Ml18MCkrNTU+PjBdfDApPj4+MyYxKWg9YltoKzUwPj4xXXwwO2Vsc2UgaD1iW2grNTI+PjFdfDA7angoY1t3Pj4yXXwwLDEyNywoY1tuPj4yXXwwKSsoY1txPj4yXXwwKXwwLGNbdj4+Ml18MCxoJjY1NTM1KXwwO3BBKGNbbD4+Ml18MCxjW3I+PjJdfDApO2NbdT4+Ml09Y1tzPj4yXX1jW3E+PjJdPShjW3E+PjJdfDApKzE7Y1tzPj4yXT1jWyhjW3M+PjJdfDApKzIwPj4yXX1pPXk7cmV0dXJufWZ1bmN0aW9uIHBGKGEsYixlLGYsZyxoLGope2E9YXwwO2I9YnwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO3ZhciBrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MDt1PWk7aT1pKzQ4fDA7az11KzQwfDA7dj11KzM2fDA7bD11KzMyfDA7bT11KzI4fDA7bj11KzI0fDA7bz11KzIwfDA7cD11KzE2fDA7cj11KzEyfDA7cT11Kzh8MDtzPXUrNHwwO3Q9dTtjW2s+PjJdPWE7Y1t2Pj4yXT1iO2NbbD4+Ml09ZTtjW20+PjJdPWY7Y1tuPj4yXT1nO2Nbbz4+Ml09aDtjW3A+PjJdPWo7Y1tyPj4yXT0oY1tsPj4yXXwwKSE9MD8xMTA6MTA5O2NbcT4+Ml09MDtjW3M+PjJdPWNbdj4+Ml07d2hpbGUoMSl7aWYoIShjW3M+PjJdfDApKWJyZWFrO2lmKCgoKGRbKGNbcz4+Ml18MCkrOD4+MF18MHwwKT09KGNbcj4+Ml18MCk/KGNbbj4+Ml0mKGRbKGNbcz4+Ml18MCkrOT4+MF18MCl8MCkhPTA6MCk/KHZHKGNbKGNbcz4+Ml18MCkrMTY+PjJdfDAsY1tsPj4yXXwwKXwwKSE9MDowKT8oY1t0Pj4yXT11RihjW2s+PjJdfDAsY1tzPj4yXXwwLGNbbz4+Ml18MCxjW3A+PjJdfDApfDAsKGNbdD4+Ml18MCkhPTApOjApY1txPj4yXT1jW3E+PjJdfGNbKGNbdD4+Ml18MCkrMTYrKGNbbT4+Ml08PDIpPj4yXTtjW3M+PjJdPWNbKGNbcz4+Ml18MCkrMzI+PjJdfWk9dTtyZXR1cm4gY1txPj4yXXwwfWZ1bmN0aW9uIHFGKGEsZCl7YT1hfDA7ZD1kfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MDttPWk7aT1pKzMyfDA7Zj1tKzIwfDA7Zz1tKzE2fDA7aj1tKzEyfDA7az1tKzh8MDtoPW0rNHwwO2w9bTtjW2Y+PjJdPWE7Y1tnPj4yXT1kO2Nbaj4+Ml09MDtpZighKGNbKGNbY1tmPj4yXT4+Ml18MCkrMjQ+PjJdJjUyNDI4OCkpe2w9Y1tqPj4yXXwwO2k9bTtyZXR1cm4gbHwwfWNbaz4+Ml09Y1soY1tnPj4yXXwwKSsxNj4+Ml07d2hpbGUoMSl7aWYoIShjW2s+PjJdfDApKWJyZWFrO2NbaD4+Ml09MDt3aGlsZSgxKXtpZigoY1toPj4yXXwwKT49KGNbKGNbaz4+Ml18MCkrMjA+PjJdfDApKWJyZWFrO2lmKChjWyhjW2s+PjJdfDApKzM2KyhjW2g+PjJdPDwzKT4+Ml18MCk+MzEpYT0tMTtlbHNlIGE9MTw8Y1soY1trPj4yXXwwKSszNisoY1toPj4yXTw8Myk+PjJdO2Nbaj4+Ml09Y1tqPj4yXXxhO2NbaD4+Ml09KGNbaD4+Ml18MCkrMX1jW2s+PjJdPWNbKGNbaz4+Ml18MCkrND4+Ml19Y1trPj4yXT1ZeChjW2c+PjJdfDApfDA7d2hpbGUoMSl7aWYoIShjW2s+PjJdfDApKWJyZWFrO2NbbD4+Ml09MDtCQyhjW2Y+PjJdfDAsY1tnPj4yXXwwLGNbaz4+Ml18MCxsLDApfDA7YTpkbyBpZihjW2w+PjJdfDApe2NbaD4+Ml09MDt3aGlsZSgxKXtpZigoY1toPj4yXXwwKT49KGVbKGNbbD4+Ml18MCkrNTA+PjFdfDApKWJyZWFrIGE7aWYoKGJbKGNbKGNbbD4+Ml18MCkrND4+Ml18MCkrKGNbaD4+Ml08PDEpPj4xXXwwKT4zMSlhPS0xO2Vsc2UgYT0xPDxiWyhjWyhjW2w+PjJdfDApKzQ+PjJdfDApKyhjW2g+PjJdPDwxKT4+MV07Y1tqPj4yXT1jW2o+PjJdfGE7Y1toPj4yXT0oY1toPj4yXXwwKSsxfX13aGlsZSgwKTtjW2s+PjJdPWNbKGNbaz4+Ml18MCkrMTI+PjJdfWw9Y1tqPj4yXXwwO2k9bTtyZXR1cm4gbHwwfWZ1bmN0aW9uIHJGKGEsYixkLGUsZixnKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDt2YXIgaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wO3I9aTtpPWkrMzJ8MDtoPXIrMjh8MDtqPXIrMjR8MDtrPXIrMjB8MDtsPXIrMTZ8MDttPXIrMTJ8MDtuPXIrOHwwO3A9cis0fDA7bz1yO2NbaD4+Ml09YTtjW2o+PjJdPWI7Y1trPj4yXT1kO2NbbD4+Ml09ZTtjW20+PjJdPWY7Y1tuPj4yXT1nO2lmKCEoY1soY1tjW2g+PjJdPj4yXXwwKSsyND4+Ml0mNTI0Mjg4KSl7aT1yO3JldHVybn1jW3A+PjJdPVl4KGNbaj4+Ml18MCl8MDt3aGlsZSgxKXtpZighKGNbcD4+Ml18MCkpYnJlYWs7aWYoISgoY1ttPj4yXXwwKSE9MD8obUQoY1tqPj4yXXwwLGNbcD4+Ml18MCxjW20+PjJdfDAsY1tuPj4yXXwwKXwwKT09MDowKSlxPTY7aWYoKHF8MCk9PTY/KHE9MCxjW28+PjJdPXNGKGNbaD4+Ml18MCxjW2o+PjJdfDAsY1twPj4yXXwwLGNbaz4+Ml18MCl8MCwoY1tvPj4yXXwwKSE9MCk6MCl0RihjW2g+PjJdfDAsY1tvPj4yXXwwLGNbaj4+Ml18MCxjW2w+PjJdfDAsMiwwKTtjW3A+PjJdPWNbKGNbcD4+Ml18MCkrMTI+PjJdfWk9cjtyZXR1cm59ZnVuY3Rpb24gc0YoZSxmLGcsaCl7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7dmFyIGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wLEU9MCxGPTAsRz0wLEg9MCxJPTAsSj0wLEs9MCxMPTAsTT0wLE49MDtOPWk7aT1pKzE0NHwwO2o9TisxMzZ8MDtrPU4rMTMyfDA7bD1OKzEyOHwwO209TisxMjR8MDtuPU4rMTIwfDA7cT1OKzExNnwwO289TisxMTJ8MDtEPU4rMTA4fDA7cz1OKzEwNHwwO0w9TisxMDB8MDt1PU4rOTZ8MDt4PU4rOTJ8MDtwPU4rODh8MDtDPU4rODR8MDtGPU4rODB8MDt5PU4rNzZ8MDtCPU4rNzJ8MDtyPU4rNjh8MDtFPU4rNjR8MDtKPU4rNTZ8MDtJPU4rNDh8MDtIPU4rNDB8MDtLPU4rMzJ8MDt0PU4rMjh8MDt3PU4rMjR8MDt6PU4rMjB8MDt2PU4rMTZ8MDtHPU4rOHwwO0E9TjtjW2s+PjJdPWU7Y1tsPj4yXT1mO2NbbT4+Ml09ZztjW24+PjJdPWg7Y1txPj4yXT1jW2Nbaz4+Ml0+PjJdO2Nbcz4+Ml09KGNbbj4+Ml18MCkhPTAmMTtjW28+PjJdPWRbKGNbbT4+Ml18MCkrMjUrKGNbcz4+Ml18MCk+PjBdO2lmKChjW28+PjJdfDApPT02PyhjWyhjW3E+PjJdfDApKzI0Pj4yXSYzMzU1NDQzMnwwKSE9MDowKXtjW2o+PjJdPTA7TT1jW2o+PjJdfDA7aT1OO3JldHVybiBNfDB9Y1tEPj4yXT1jWyhjW20+PjJdfDApKzI4KyhjW3M+PjJdPDwyKT4+Ml07aWYoISgoY1tvPj4yXXwwKT09MHwoY1tEPj4yXXwwKSE9MCkpe2NbeD4+Ml09MDtjW3A+PjJdPTA7Y1tDPj4yXT0wO2NbRj4+Ml09MDtjW3k+PjJdPTA7Y1tCPj4yXT0wO2NbRT4+Ml09MDtpZihCQyhjW2s+PjJdfDAsY1tsPj4yXXwwLGNbbT4+Ml18MCx4LHApfDApe2Nbaj4+Ml09MDtNPWNbaj4+Ml18MDtpPU47cmV0dXJuIE18MH1jW3I+PjJdPTA7d2hpbGUoMSl7aWYoKGNbcj4+Ml18MCk+PShjWyhjW20+PjJdfDApKzIwPj4yXXwwKSlicmVhaztjW0o+PjJdPWNbMTM2OV07Y1tKKzQ+PjJdPWNbMTM3MF07Y1tJPj4yXT1jWzEzNzFdO2NbSSs0Pj4yXT1jWzEzNzJdO2lmKGNbcD4+Ml18MCloPWNbKGNbcD4+Ml18MCkrKGNbcj4+Ml08PDIpPj4yXXwwO2Vsc2UgaD1jWyhjW20+PjJdfDApKzM2Pj4yXXwwO2NbdD4+Ml09aDtpZihjW3g+PjJdfDApaD1iWyhjWyhjW3g+PjJdfDApKzQ+PjJdfDApKyhjW3I+PjJdPDwxKT4+MV18MDtlbHNlIGg9YlsoY1tsPj4yXXwwKSszMj4+MV18MDtYeShLLGNbKGNbKGNbbD4+Ml18MCkrND4+Ml18MCkrKGg8PDE2Pj4xNjw8NCk+PjJdfDApO1h5KEgsY1soY1soY1tjW20+PjJdPj4yXXwwKSs0Pj4yXXwwKSsoY1t0Pj4yXTw8NCk+PjJdfDApO2U9Y1trPj4yXXwwO2c9Y1trPj4yXXwwO2Y9ancoY1txPj4yXXwwLDU1LEosMCl8MDtmPUV2KGcsMTIyLGYsancoY1txPj4yXXwwLDU1LEssMCl8MCwwKXwwO2Nbdz4+Ml09RXYoZSwzNyxmLGp3KGNbcT4+Ml18MCw1NSxILDApfDAsMCl8MDtjW0Y+PjJdPXd6KGNbcT4+Ml18MCxjW0Y+PjJdfDAsY1t3Pj4yXXwwKXwwO2lmKGNbbj4+Ml18MCl7aD1jW2s+PjJdfDA7ZT1jW2s+PjJdfDA7Zz1qdyhjW3E+PjJdfDAsNTUsSiwwKXwwO2c9RXYoZSwxMjIsZyxqdyhjW3E+PjJdfDAsNTUsSywwKXwwLDApfDA7ZT1jW2s+PjJdfDA7Zj1qdyhjW3E+PjJdfDAsNTUsSSwwKXwwO2Nbdz4+Ml09RXYoaCwyOSxnLEV2KGUsMTIyLGYsancoY1txPj4yXXwwLDU1LEssMCl8MCwwKXwwLDApfDA7Y1tFPj4yXT13eihjW3E+PjJdfDAsY1tFPj4yXXwwLGNbdz4+Ml18MCl8MH1pZigoY1tvPj4yXXwwKSE9Nj8oY1tvPj4yXXwwKSE9OXwoY1tuPj4yXXwwKSE9MDowKXtkbyBpZigoY1tvPj4yXXwwKSE9OSl7aWYoKGNbbz4+Ml18MCkhPTgpe2Nbej4+Ml09ancoY1txPj4yXXwwLDEwMSwwLDApfDA7YnJlYWt9Y1t2Pj4yXT1jWyhjWyhjW2NbbT4+Ml0+PjJdfDApKzQ+PjJdfDApKyhjW3Q+PjJdPDw0KSs0Pj4yXTtoPWNbcT4+Ml18MDtpZihjW3Y+PjJdfDApe2Nbej4+Ml09SXkoaCxjW3Y+PjJdfDAsMCl8MDticmVha31lbHNle2Nbej4+Ml09ancoaCwxMDEsMCwwKXwwO2JyZWFrfX1lbHNle2U9Y1trPj4yXXwwO2Y9ancoY1txPj4yXXwwLDU1LEksMCl8MDtjW3o+PjJdPUV2KGUsMTIyLGYsancoY1txPj4yXXwwLDU1LEssMCl8MCwwKXwwfXdoaWxlKDApO2NbeT4+Ml09VHYoY1trPj4yXXwwLGNbeT4+Ml18MCxjW3o+PjJdfDApfDA7VXYoY1trPj4yXXwwLGNbeT4+Ml18MCxILDApfWNbcj4+Ml09KGNbcj4+Ml18MCkrMX1UZihjW3E+PjJdfDAsY1twPj4yXXwwKTtjW0w+PjJdPWNbY1tjW20+PjJdPj4yXT4+Ml07Y1t1Pj4yXT1KZihjW0w+PjJdfDApfDA7aWYoKGNbbz4+Ml18MCk9PTYpe2NbRz4+Ml09Y1tMPj4yXTtjW0crND4+Ml09Y1t1Pj4yXTtjW0E+PjJdPVd2KGNbcT4+Ml18MCw4MywzNTE4OSl8MDtpZihjW0E+PjJdfDApYVsoY1tBPj4yXXwwKSsxPj4wXT0yO0k9Y1trPj4yXXwwO0o9VHYoY1trPj4yXXwwLDAsY1tBPj4yXXwwKXwwO0s9X3YoY1txPj4yXXwwLDAsRywwKXwwO2NbQj4+Ml09U3YoSSxKLEssY1tGPj4yXXwwLDAsMCwwLDAsMCwwKXwwO2NbRj4+Ml09MH1LPShjW3E+PjJdfDApKzI1NnwwO2NbSz4+Ml09KGNbSz4+Ml18MCkrMTtjW0Q+PjJdPXNoKGNbcT4+Ml18MCw3MisoY1t1Pj4yXXwwKSsxfDAsMCl8MDtpZigoY1tEPj4yXXwwKSE9MD8oSz0oY1tEPj4yXXwwKSszNnwwLGNbKGNbRD4+Ml18MCkrMjg+PjJdPUssY1tDPj4yXT1LLGNbKGNbQz4+Ml18MCkrMTI+PjJdPShjW0M+PjJdfDApKzM2LFRSKGNbKGNbQz4+Ml18MCkrMTI+PjJdfDAsY1tMPj4yXXwwLGNbdT4+Ml18MCl8MCxMPUl5KGNbcT4+Ml18MCxjW0Y+PjJdfDAsMSl8MCxjWyhjW0M+PjJdfDApKzE2Pj4yXT1MLEw9UXkoY1txPj4yXXwwLGNbeT4+Ml18MCwxKXwwLGNbKGNbQz4+Ml18MCkrMjA+PjJdPUwsTD1feChjW3E+PjJdfDAsY1tCPj4yXXwwLDEpfDAsY1soY1tDPj4yXXwwKSs4Pj4yXT1MLChjW0U+PjJdfDApIT0wKTowKXtjW0U+PjJdPUV2KGNbaz4+Ml18MCwxOSxjW0U+PjJdfDAsMCwwKXwwO0w9SXkoY1txPj4yXXwwLGNbRT4+Ml18MCwxKXwwO2NbKGNbRD4+Ml18MCkrMTI+PjJdPUx9TD0oY1txPj4yXXwwKSsyNTZ8MDtjW0w+PjJdPShjW0w+PjJdfDApKy0xO2l2KGNbcT4+Ml18MCxjW0Y+PjJdfDApO2l2KGNbcT4+Ml18MCxjW0U+PjJdfDApO2V2KGNbcT4+Ml18MCxjW3k+PjJdfDApO2Z2KGNbcT4+Ml18MCxjW0I+PjJdfDApO2lmKChkWyhjW3E+PjJdfDApKzY5Pj4wXXwwfDApPT0xKXt1RyhjW3E+PjJdfDAsY1tEPj4yXXwwKTtjW2o+PjJdPTA7TT1jW2o+PjJdfDA7aT1OO3JldHVybiBNfDB9c3dpdGNoKGNbbz4+Ml18MCl7Y2FzZSA2OnthW2NbQz4+Ml0+PjBdPTExOTticmVha31jYXNlIDk6e2lmKGNbbj4+Ml18MClNPTQxO2Vsc2UgYVtjW0M+PjJdPj4wXT0xMDk7YnJlYWt9ZGVmYXVsdDpNPTQxfWlmKChNfDApPT00MSlhW2NbQz4+Ml0+PjBdPTExMDtjWyhjW0M+PjJdfDApKzQ+PjJdPWNbRD4+Ml07Y1soY1tEPj4yXXwwKSsyMD4+Ml09Y1soY1tsPj4yXXwwKSs2ND4+Ml07Y1soY1tEPj4yXXwwKSsyND4+Ml09Y1soY1tsPj4yXXwwKSs2ND4+Ml07Y1soY1ttPj4yXXwwKSsyOCsoY1tzPj4yXTw8Mik+PjJdPWNbRD4+Ml07YVsoY1tEPj4yXXwwKSs4Pj4wXT0oY1tuPj4yXXwwKSE9MD8xMTA6MTA5fWNbaj4+Ml09Y1tEPj4yXTtNPWNbaj4+Ml18MDtpPU47cmV0dXJuIE18MH1mdW5jdGlvbiB0RihhLGIsZCxlLGYsZyl7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7dmFyIGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MDtwPWk7aT1pKzQ4fDA7aj1wKzMyfDA7aD1wKzI4fDA7cj1wKzI0fDA7az1wKzIwfDA7cT1wKzE2fDA7bD1wKzEyfDA7bz1wKzh8MDtuPXArNHwwO209cDtjW2o+PjJdPWE7Y1toPj4yXT1iO2Nbcj4+Ml09ZDtjW2s+PjJdPWU7Y1txPj4yXT1mO2NbbD4+Ml09ZztjW28+PjJdPWR4KGNbaj4+Ml18MCl8MDtjW24+PjJdPXVGKGNbaj4+Ml18MCxjW2g+PjJdfDAsY1tyPj4yXXwwLGNbcT4+Ml18MCl8MDtpZighKGNbbj4+Ml18MCkpe2k9cDtyZXR1cm59aWYoY1tjW2g+PjJdPj4yXXwwKWg9MD09KGNbKGNbY1tqPj4yXT4+Ml18MCkrMjQ+PjJdJjI2MjE0NHwwKTtlbHNlIGg9MDtjW20+PjJdPWgmMTtlPWNbbz4+Ml18MDtrPWNbaz4+Ml18MDtxPWNbbD4+Ml18MDtsPShjW2o+PjJdfDApKzQ0fDA7cj0oY1tsPj4yXXwwKSsxfDA7Y1tsPj4yXT1yO214KGUsNjQsayxxLHIsY1soY1tuPj4yXXwwKSs4Pj4yXXwwLC0xOCl8MDtKaChjW28+PjJdfDAsY1ttPj4yXSYyNTUpO2k9cDtyZXR1cm59ZnVuY3Rpb24gdUYoYSxiLGQsZSl7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MDttPWk7aT1pKzMyfDA7Zj1tKzIwfDA7Zz1tKzE2fDA7aD1tKzEyfDA7aj1tKzh8MDtsPW0rNHwwO2s9bTtjW2Y+PjJdPWE7Y1tnPj4yXT1iO2NbaD4+Ml09ZDtjW2o+PjJdPWU7ZT1jW2Y+PjJdfDA7aWYoY1soY1tmPj4yXXwwKSsxMjQ+PjJdfDApZT1jW2UrMTI0Pj4yXXwwO2NbbD4+Ml09ZTtjW2s+PjJdPWNbKGNbbD4+Ml18MCkrNDY4Pj4yXTt3aGlsZSgxKXtpZighKGNbaz4+Ml18MCkpYnJlYWs7aWYoKGNbY1trPj4yXT4+Ml18MCk9PShjW2c+PjJdfDApPyhjWyhjW2s+PjJdfDApKzEyPj4yXXwwKT09KGNbaj4+Ml18MCk6MClicmVhaztjW2s+PjJdPWNbKGNbaz4+Ml18MCkrND4+Ml19aWYoY1trPj4yXXwwKXtsPWNbaz4+Ml18MDtpPW07cmV0dXJuIGx8MH1jW2s+PjJdPXZGKGNbZj4+Ml18MCxjW2c+PjJdfDAsY1toPj4yXXwwLGNbaj4+Ml18MCl8MDtsPWNbaz4+Ml18MDtpPW07cmV0dXJuIGx8MH1mdW5jdGlvbiB2RihiLGUsZixnKXtiPWJ8MDtlPWV8MDtmPWZ8MDtnPWd8MDt2YXIgaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wO3g9aTtpPWkrOTZ8MDt3PXg7aD14Kzg0fDA7aj14KzgwfDA7az14Kzc2fDA7bD14KzcyfDA7bT14KzY4fDA7cz14KzY0fDA7bj14KzYwfDA7cD14KzU2fDA7dD14KzUyfDA7dj14KzQ4fDA7dT14KzE2fDA7cT14KzEyfDA7cj14Kzh8MDtvPXgrNHwwO2Nbaj4+Ml09YjtjW2s+PjJdPWU7Y1tsPj4yXT1mO2NbbT4+Ml09ZztnPWNbaj4+Ml18MDtpZihjWyhjW2o+PjJdfDApKzEyND4+Ml18MClnPWNbZysxMjQ+PjJdfDA7Y1tzPj4yXT1nO2Nbbj4+Ml09Y1tjW2o+PjJdPj4yXTtjW3Q+PjJdPTA7Y1txPj4yXT0wO2Nbbz4+Ml09MDtjW3A+PjJdPXNoKGNbbj4+Ml18MCwyNCwwKXwwO2lmKCEoY1twPj4yXXwwKSl7Y1toPj4yXT0wO3c9Y1toPj4yXXwwO2k9eDtyZXR1cm4gd3wwfWNbKGNbcD4+Ml18MCkrND4+Ml09Y1soY1tzPj4yXXwwKSs0Njg+PjJdO2NbKGNbcz4+Ml18MCkrNDY4Pj4yXT1jW3A+PjJdO2U9c2goY1tuPj4yXXwwLDI0LDApfDA7Y1txPj4yXT1lO2NbKGNbcD4+Ml18MCkrOD4+Ml09ZTtpZighKGNbcT4+Ml18MCkpe2NbaD4+Ml09MDt3PWNbaD4+Ml18MDtpPXg7cmV0dXJuIHd8MH13RihjWyhjW3M+PjJdfDApKzg+PjJdfDAsY1txPj4yXXwwKTtjW2NbcD4+Ml0+PjJdPWNbaz4+Ml07Y1soY1twPj4yXXwwKSsxMj4+Ml09Y1ttPj4yXTtjWyhjW3A+PjJdfDApKzE2Pj4yXT0tMTtjWyhjW3A+PjJdfDApKzE2KzQ+PjJdPS0xO2Nbcj4+Ml09c2goY1tuPj4yXXwwLDQ4MCwwKXwwO2lmKCEoY1tyPj4yXXwwKSl7Y1toPj4yXT0wO3c9Y1toPj4yXXwwO2k9eDtyZXR1cm4gd3wwfTtjW3U+PjJdPTA7Y1t1KzQ+PjJdPTA7Y1t1Kzg+PjJdPTA7Y1t1KzEyPj4yXT0wO2NbdSsxNj4+Ml09MDtjW3UrMjA+PjJdPTA7Y1t1KzI0Pj4yXT0wO2NbdSsyOD4+Ml09MDtjW3U+PjJdPWNbcj4+Ml07Y1tjW3I+PjJdPj4yXT1jW24+PjJdO2NbKGNbcj4+Ml18MCkrMTI4Pj4yXT1jW2w+PjJdO2NbKGNbcj4+Ml18MCkrMTI0Pj4yXT1jW3M+PjJdO2NbKGNbcj4+Ml18MCkrNDQ4Pj4yXT1jW2Nbaz4+Ml0+PjJdO2FbKGNbcj4+Ml18MCkrMTQ4Pj4wXT1hWyhjW2s+PjJdfDApKzg+PjBdfDA7Y1soY1tyPj4yXXwwKSsxMzY+PjJdPWNbKGNbaj4+Ml18MCkrMTM2Pj4yXTtjW3Y+PjJdPWR4KGNbcj4+Ml18MCl8MDtpZihjW3Y+PjJdfDApe2U9Y1t2Pj4yXXwwO2w9Y1tuPj4yXXwwO2Nbdz4+Ml09Y1tjW2s+PjJdPj4yXTtNaChlLC0xLEdoKGwsMzQ4ODQsdyl8MCwtMSk7aWYoY1soY1trPj4yXXwwKSsxMj4+Ml18MCl7Y1t0Pj4yXT1JeShjW24+PjJdfDAsY1soY1trPj4yXXwwKSsxMj4+Ml18MCwwKXwwO2lmKDA9PShBeSh1LGNbdD4+Ml18MCl8MCk/KGRbKGNbbj4+Ml18MCkrNjk+PjBdfDB8MCk9PTA6MCl7Y1tvPj4yXT1XeihjW3Y+PjJdfDApfDA7aUIoY1tyPj4yXXwwLGNbdD4+Ml18MCxjW28+PjJdfDAsMTYpfWl2KGNbbj4+Ml18MCxjW3Q+PjJdfDApfXhGKGNbcj4+Ml18MCxjWyhjW2s+PjJdfDApKzI4Pj4yXXwwLGNbbT4+Ml18MCl8MDtpZihjW28+PjJdfDApX3ooY1t2Pj4yXXwwLGNbbz4+Ml18MCk7ZngoY1t2Pj4yXXwwLDc1KXwwO3lGKGNbaj4+Ml18MCxjW3I+PjJdfDApO2lmKCEoZFsoY1tuPj4yXXwwKSs2OT4+MF18MCkpe3c9ekYoY1t2Pj4yXXwwLChjW3E+PjJdfDApKzR8MCwoY1tzPj4yXXwwKSsxMDh8MCl8MDtjW2NbcT4+Ml0+PjJdPXd9Y1soY1txPj4yXXwwKSs4Pj4yXT1jWyhjW3I+PjJdfDApKzQ0Pj4yXTtjWyhjW3E+PjJdfDApKzEyPj4yXT1jWyhjW3I+PjJdfDApKzQwPj4yXTtjWyhjW3E+PjJdfDApKzE2Pj4yXT1jW2s+PjJdO2NbKGNbcD4+Ml18MCkrMTY+PjJdPWNbKGNbcj4+Ml18MCkrMTQwPj4yXTtjWyhjW3A+PjJdfDApKzE2KzQ+PjJdPWNbKGNbcj4+Ml18MCkrMTQ0Pj4yXTtjdihjW3Y+PjJdfDApfVBoKGNbcj4+Ml18MCk7VGYoY1tuPj4yXXwwLGNbcj4+Ml18MCk7Y1toPj4yXT1jW3A+PjJdO3c9Y1toPj4yXXwwO2k9eDtyZXR1cm4gd3wwfWZ1bmN0aW9uIHdGKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wO2Q9aTtpPWkrMTZ8MDtlPWQrNHwwO2Y9ZDtjW2U+PjJdPWE7Y1tmPj4yXT1iO2NbKGNbZj4+Ml18MCkrMjA+PjJdPWNbKGNbZT4+Ml18MCkrMjAwPj4yXTtjWyhjW2U+PjJdfDApKzIwMD4+Ml09Y1tmPj4yXTtpPWQ7cmV0dXJufWZ1bmN0aW9uIHhGKGIsZSxmKXtiPWJ8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTA7bz1pO2k9aSs2NHwwO2c9bys1MnwwO3A9bys0OHwwO2g9bys0NHwwO2w9bys0MHwwO249byszNnwwO2o9byszMnwwO209bys4fDA7az1vO2NbZz4+Ml09YjtjW3A+PjJdPWU7Y1toPj4yXT1mO2Nbbj4+Ml09Y1soY1tnPj4yXXwwKSs4Pj4yXTtjW2o+PjJdPWNbY1tnPj4yXT4+Ml07Y1tsPj4yXT1jW3A+PjJdO3doaWxlKDEpe2lmKCEoY1tsPj4yXXwwKSlicmVhaztpZigoY1toPj4yXXwwKT09MTApZj1hWyhjW2w+PjJdfDApKzE+PjBdfDA7ZWxzZSBmPWNbaD4+Ml0mMjU1O2FbKGNbZz4+Ml18MCkrMTQ5Pj4wXT1mO3N3aXRjaChkW2NbbD4+Ml0+PjBdfDB8MCl7Y2FzZSAxMTA6e2I9Y1tnPj4yXXwwO2U9dEcoY1tnPj4yXXwwLGNbbD4+Ml18MCl8MDtwPVF5KGNbaj4+Ml18MCxjWyhjW2w+PjJdfDApKzIwPj4yXXwwLDApfDA7ZXcoYixlLHAsSXkoY1tqPj4yXXwwLGNbKGNbbD4+Ml18MCkrMTY+PjJdfDAsMCl8MCxkWyhjW2c+PjJdfDApKzE0OT4+MF18MCk7YnJlYWt9Y2FzZSAxMDg6e2I9Y1tnPj4yXXwwO2U9dEcoY1tnPj4yXXwwLGNbbD4+Ml18MCl8MDtwPV94KGNbaj4+Ml18MCxjWyhjW2w+PjJdfDApKzg+PjJdfDAsMCl8MDtndyhiLGUscCxJeihjW2o+PjJdfDAsY1soY1tsPj4yXXwwKSsyND4+Ml18MCl8MCxkWyhjW2c+PjJdfDApKzE0OT4+MF18MCk7YnJlYWt9Y2FzZSAxMDk6e3A9Y1tnPj4yXXwwO2N3KHAsdEcoY1tnPj4yXXwwLGNbbD4+Ml18MCl8MCxJeShjW2o+PjJdfDAsY1soY1tsPj4yXXwwKSsxNj4+Ml18MCwwKXwwKTticmVha31kZWZhdWx0OntjW2s+PjJdPV94KGNbaj4+Ml18MCxjWyhjW2w+PjJdfDApKzg+PjJdfDAsMCl8MDt2QihtLDQsMCk7UHYoY1tnPj4yXXwwLGNbaz4+Ml18MCxtKXwwO2Z2KGNbaj4+Ml18MCxjW2s+PjJdfDApfX1pZigoZFtjW2w+PjJdPj4wXXwwfDApIT0xMTkpZngoY1tuPj4yXXwwLDExOCl8MDtjW2w+PjJdPWNbKGNbbD4+Ml18MCkrMjg+PjJdfWk9bztyZXR1cm4gMH1mdW5jdGlvbiB5RihhLGIpe2E9YXwwO2I9YnwwO3ZhciBkPTAsZT0wLGY9MDtmPWk7aT1pKzE2fDA7ZD1mKzR8MDtlPWY7Y1tkPj4yXT1hO2NbZT4+Ml09YjtiPWNbZT4+Ml18MDtpZighKGNbKGNbZD4+Ml18MCkrMzY+PjJdfDApKXtjWyhjW2Q+PjJdfDApKzQ+PjJdPWNbYis0Pj4yXTtjWyhjW2Q+PjJdfDApKzM2Pj4yXT1jWyhjW2U+PjJdfDApKzM2Pj4yXTtjWyhjW2Q+PjJdfDApKzEyPj4yXT1jWyhjW2U+PjJdfDApKzEyPj4yXTtpPWY7cmV0dXJufWVsc2V7VGYoY1tiPj4yXXwwLGNbKGNbZT4+Ml18MCkrND4+Ml18MCk7aT1mO3JldHVybn19ZnVuY3Rpb24gekYoYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wO2Y9aTtpPWkrMTZ8MDtnPWYrMTJ8MDtoPWYrOHwwO2o9Zis0fDA7ZT1mO2NbZz4+Ml09YTtjW2g+PjJdPWI7Y1tqPj4yXT1kO2NbZT4+Ml09Y1soY1tnPj4yXXwwKSs4OD4+Ml07QUYoY1tnPj4yXXwwLGNbaj4+Ml18MCk7Y1tjW2g+PjJdPj4yXT1jWyhjW2c+PjJdfDApKzEzNj4+Ml07Y1soY1tnPj4yXXwwKSs4OD4+Ml09MDtpPWY7cmV0dXJuIGNbZT4+Ml18MH1mdW5jdGlvbiBBRihlLGYpe2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MDtwPWk7aT1pKzMyfDA7Zz1wKzI0fDA7aD1wKzIwfDA7bD1wKzE2fDA7bT1wKzEyfDA7bj1wKzh8MDtqPXArNHwwO2s9cDtjW2c+PjJdPWU7Y1toPj4yXT1mO2NbbD4+Ml09Y1tjW2g+PjJdPj4yXTtjW24+PjJdPWNbKGNbZz4+Ml18MCkrMTI+PjJdO2Nbaj4+Ml09Y1soY1tuPj4yXXwwKSs3Nj4+Ml07Zj0oY1tnPj4yXXwwKSsxNDR8MDtiW2Y+PjFdPWJbZj4+MV0mLTEyOXwxMjg7Zj0oY1tnPj4yXXwwKSsxNDR8MDtiW2Y+PjFdPWJbZj4+MV0mLTI1NztjW20+PjJdPShjWyhjW2c+PjJdfDApKzg4Pj4yXXwwKSsoKChjWyhjW2c+PjJdfDApKzEzNj4+Ml18MCktMXwwKSoyMHwwKTt3aGlsZSgxKXtpZigoZFtjW20+PjJdPj4wXXwwfDApPD03MSl7c3dpdGNoKGRbY1ttPj4yXT4+MF18MHwwKXtjYXNlIDI6e2lmKGNbKGNbbT4+Ml18MCkrOD4+Ml18MCl7bz0oY1tnPj4yXXwwKSsxNDR8MDtiW28+PjFdPWJbbz4+MV0mLTEyOTtvPTZ9ZWxzZSBvPTY7YnJlYWt9Y2FzZSAwOmNhc2UgMTp7bz02O2JyZWFrfWNhc2UgOTpjYXNlIDEwOmNhc2UgODp7Zj0oY1tnPj4yXXwwKSsxNDR8MDtiW2Y+PjFdPWJbZj4+MV0mLTEyOTtmPShjW2c+PjJdfDApKzE0NHwwO2JbZj4+MV09YltmPj4xXSYtMjU3fDI1NjticmVha31jYXNlIDEyOntpZigoY1soY1ttPj4yXXwwKSs4Pj4yXXwwKT4oY1tsPj4yXXwwKSljW2w+PjJdPWNbKGNbbT4+Ml18MCkrOD4+Ml07YnJlYWt9Y2FzZSAxMTp7Y1trPj4yXT1jWyhjW20+PjJdfDApKy0yMCs0Pj4yXTtpZigoY1trPj4yXXwwKT4oY1tsPj4yXXwwKSljW2w+PjJdPWNbaz4+Ml07YnJlYWt9Y2FzZSAzOmNhc2UgNTpjYXNlIDc6e2NbKGNbbT4+Ml18MCkrMTY+PjJdPTIwMTthWyhjW20+PjJdfDApKzE+PjBdPS0xOTticmVha31jYXNlIDQ6Y2FzZSA2OntjWyhjW20+PjJdfDApKzE2Pj4yXT0yMDI7YVsoY1ttPj4yXXwwKSsxPj4wXT0tMTk7YnJlYWt9ZGVmYXVsdDp7fX1pZigob3wwKT09Nil7bz0wO2Y9KGNbZz4+Ml18MCkrMTQ0fDA7YltmPj4xXT1iW2Y+PjFdJi0yNTd8MjU2fWlmKCgoZFszNDg5OCsoZFtjW20+PjJdPj4wXXwwKT4+MF18MCkmMXwwKSE9MD8oY1soY1ttPj4yXXwwKSs4Pj4yXXwwKTwwOjApY1soY1ttPj4yXXwwKSs4Pj4yXT1jWyhjW2o+PjJdfDApKygtMS0oY1soY1ttPj4yXXwwKSs4Pj4yXXwwKTw8Mik+PjJdfWlmKChjW20+PjJdfDApPT0oY1soY1tnPj4yXXwwKSs4OD4+Ml18MCkpYnJlYWs7Y1ttPj4yXT0oY1ttPj4yXXwwKSstMjB9VGYoY1tjW2c+PjJdPj4yXXwwLGNbKGNbbj4+Ml18MCkrNzY+PjJdfDApO2NbKGNbbj4+Ml18MCkrNzY+PjJdPTA7Y1soY1tuPj4yXXwwKSs3Mj4+Ml09MDtjW2NbaD4+Ml0+PjJdPWNbbD4+Ml07aT1wO3JldHVybn1mdW5jdGlvbiBCRihmLGcpe2Y9ZnwwO2c9Z3wwO3ZhciBoPTAsaj0wLGs9MCxsPTAsbT0wO209aTtpPWkrMTZ8MDtoPW0rMTJ8MDtqPW0rOHwwO2s9bSs0fDA7bD1tO2Nbaj4+Ml09ZjtjW2s+PjJdPWc7YlsoY1tqPj4yXXwwKSsxNisxOD4+MV09MDtmPShjW2o+PjJdfDApKzY0fDA7YVtmPj4wXT1kW2Y+PjBdJi03O2NbY1trPj4yXT4+Ml09MDtmPWNbaj4+Ml18MDtpZigoZFsoY1tqPj4yXXwwKSs2Nj4+MF18MCkhPTEpe2NbaD4+Ml09ckcoZixjW2s+PjJdfDApfDA7bD1jW2g+PjJdfDA7aT1tO3JldHVybiBsfDB9Y1tsPj4yXT1jWyhjW2o+PjJdfDApKzEyMCsoYVtmKzY4Pj4wXTw8Mik+PjJdO2Y9KGNbaj4+Ml18MCkrODArKGFbKGNbaj4+Ml18MCkrNjg+PjBdPDwxKXwwO2c9KGJbZj4+MV18MCkrMTw8MTY+PjE2O2JbZj4+MV09ZztpZigoZyY2NTUzNXwwKT49KGVbKGNbbD4+Ml18MCkrMTg+PjFdfDApKXtsPShjW2o+PjJdfDApKzgwKyhhWyhjW2o+PjJdfDApKzY4Pj4wXTw8MSl8MDtiW2w+PjFdPShiW2w+PjFdfDApKy0xPDwxNj4+MTY7Y1toPj4yXT1yRyhjW2o+PjJdfDAsY1trPj4yXXwwKXwwO2w9Y1toPj4yXXwwO2k9bTtyZXR1cm4gbHwwfWlmKGFbKGNbbD4+Ml18MCkrND4+MF18MCl7Y1toPj4yXT0wO2w9Y1toPj4yXXwwO2k9bTtyZXR1cm4gbHwwfWVsc2V7Y1toPj4yXT1zRyhjW2o+PjJdfDApfDA7bD1jW2g+PjJdfDA7aT1tO3JldHVybiBsfDB9cmV0dXJuIDB9ZnVuY3Rpb24gQ0YoZixnKXtmPWZ8MDtnPWd8MDt2YXIgaD0wLGo9MCxrPTAsbD0wO2w9aTtpPWkrMTZ8MDtoPWwrOHwwO2o9bCs0fDA7az1sO2Nbaj4+Ml09ZjtjW2s+PjJdPWc7Y1tjW2s+PjJdPj4yXT0wO2c9KGNbaj4+Ml18MCkrNjR8MDthW2c+PjBdPWRbZz4+MF0mLTE1O2JbKGNbaj4+Ml18MCkrMTYrMTg+PjFdPTA7aWYoKChkWyhjW2o+PjJdfDApKzY2Pj4wXXwwKT09MT8oZVsoY1tqPj4yXXwwKSs4MCsoYVsoY1tqPj4yXXwwKSs2OD4+MF08PDEpPj4xXXwwKSE9MDowKT8oZFsoY1soY1tqPj4yXXwwKSsxMjArKGFbKGNbaj4+Ml18MCkrNjg+PjBdPDwyKT4+Ml18MCkrND4+MF18MCkhPTA6MCl7Zz0oY1tqPj4yXXwwKSs4MCsoYVsoY1tqPj4yXXwwKSs2OD4+MF08PDEpfDA7YltnPj4xXT0oYltnPj4xXXwwKSstMTw8MTY+PjE2O2NbaD4+Ml09MDtnPWNbaD4+Ml18MDtpPWw7cmV0dXJuIGd8MH1jW2g+PjJdPURGKGNbaj4+Ml18MCxjW2s+PjJdfDApfDA7Zz1jW2g+PjJdfDA7aT1sO3JldHVybiBnfDB9ZnVuY3Rpb24gREYoZixnKXtmPWZ8MDtnPWd8MDt2YXIgaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MDtwPWk7aT1pKzMyfDA7aj1wKzIwfDA7az1wKzE2fDA7bD1wKzEyfDA7bj1wKzh8MDttPXArNHwwO2g9cDtjW2s+PjJdPWY7Y1tsPj4yXT1nO2lmKChkWyhjW2s+PjJdfDApKzY2Pj4wXXwwKSE9MSl7aWYoKGRbKGNbaz4+Ml18MCkrNjY+PjBdfDApPj0zKWY9RUYoY1trPj4yXXwwKXwwO2Vsc2UgZj0wO2Nbbj4+Ml09ZjtpZihjW24+PjJdfDApe2Nbaj4+Ml09Y1tuPj4yXTtvPWNbaj4+Ml18MDtpPXA7cmV0dXJuIG98MH1pZighKGRbKGNbaz4+Ml18MCkrNjY+PjBdfDApKXtjW2NbbD4+Ml0+PjJdPTE7Y1tqPj4yXT0wO289Y1tqPj4yXXwwO2k9cDtyZXR1cm4gb3wwfWlmKChjWyhjW2s+PjJdfDApKzYwPj4yXXwwKSE9MD8oYVsoY1trPj4yXXwwKSs2Nj4+MF09MSxnPShjWyhjW2s+PjJdfDApKzYwPj4yXXwwKTwwLGNbKGNbaz4+Ml18MCkrNjA+PjJdPTAsZyk6MCl7Y1tqPj4yXT0wO289Y1tqPj4yXXwwO2k9cDtyZXR1cm4gb3wwfX1jW20+PjJdPWNbKGNbaz4+Ml18MCkrMTIwKyhhWyhjW2s+PjJdfDApKzY4Pj4wXTw8Mik+PjJdO2RvIGlmKGFbKGNbbT4+Ml18MCkrND4+MF18MCl7d2hpbGUoMSl7Zj1hWyhjW2s+PjJdfDApKzY4Pj4wXXwwO2lmKGVbKGNbaz4+Ml18MCkrODArKGFbKGNbaz4+Ml18MCkrNjg+PjBdPDwxKT4+MV18MClicmVhaztnPWNbaz4+Ml18MDtpZighZil7bz0xNzticmVha31IRihnKX1pZigob3wwKT09MTcpe2FbZys2Nj4+MF09MDtjW2NbbD4+Ml0+PjJdPTE7Y1tqPj4yXT0wO289Y1tqPj4yXXwwO2k9cDtyZXR1cm4gb3wwfW89KGNbaz4+Ml18MCkrODArKGY8PDEpfDA7YltvPj4xXT0oYltvPj4xXXwwKSstMTw8MTY+PjE2O2NbbT4+Ml09Y1soY1trPj4yXXwwKSsxMjArKGFbKGNbaz4+Ml18MCkrNjg+PjBdPDwyKT4+Ml07aWYoKGRbKGNbbT4+Ml18MCkrMj4+MF18MCkhPTA/KGFbKGNbbT4+Ml18MCkrND4+MF18MCk9PTA6MCl7Y1tuPj4yXT1DRihjW2s+PjJdfDAsY1tsPj4yXXwwKXwwO2JyZWFrfWNbbj4+Ml09MH1lbHNle2NbaD4+Ml09ZVsoY1trPj4yXXwwKSs4MCsoYVsoY1trPj4yXXwwKSs2OD4+MF08PDEpPj4xXTtvPWNbaz4+Ml18MDtjW24+PjJdPUZGKG8sZ3IoKGNbKGNbbT4+Ml18MCkrNTY+PjJdfDApKyhlWyhjW20+PjJdfDApKzIwPj4xXSYoZFsoY1soY1ttPj4yXXwwKSs2ND4+Ml18MCkrKGNbaD4+Ml08PDEpPj4wXTw8OHxkWyhjWyhjW20+PjJdfDApKzY0Pj4yXXwwKSsoY1toPj4yXTw8MSkrMT4+MF0pKXwwKXwwKXwwO2lmKCEoY1tuPj4yXXwwKSl7Y1tuPj4yXT1HRihjW2s+PjJdfDApfDA7YnJlYWt9Y1tqPj4yXT1jW24+PjJdO289Y1tqPj4yXXwwO2k9cDtyZXR1cm4gb3wwfXdoaWxlKDApO2Nbaj4+Ml09Y1tuPj4yXTtvPWNbaj4+Ml18MDtpPXA7cmV0dXJuIG98MH1mdW5jdGlvbiBFRihiKXtiPWJ8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MDtqPWk7aT1pKzE2fDA7ZT1qKzEyfDA7Zj1qKzh8MDtnPWorNHwwO2g9ajtjW2Y+PjJdPWI7Yj1jW2Y+PjJdfDA7aWYoKGRbKGNbZj4+Ml18MCkrNjY+PjBdfDB8MCk9PTQpe2NbZT4+Ml09Y1tiKzYwPj4yXTtoPWNbZT4+Ml18MDtpPWo7cmV0dXJuIGh8MH1hW2IrNjY+PjBdPTA7Yj0oY1tmPj4yXXwwKSs0MHwwO2NbZz4+Ml09TEYoY1tmPj4yXXwwLGNbKGNbZj4+Ml18MCkrNDg+PjJdfDAsY1tiPj4yXXwwLGNbYis0Pj4yXXwwLDAsaCl8MDtpZigoKGNbZz4+Ml18MCk9PTA/KEtkKGNbKGNbZj4+Ml18MCkrNDg+PjJdfDApLGNbKGNbZj4+Ml18MCkrNDg+PjJdPTAsYj0oY1tmPj4yXXwwKSs2MHwwLGNbYj4+Ml09Y1tiPj4yXXxjW2g+PjJdLChjWyhjW2Y+PjJdfDApKzYwPj4yXXwwKSE9MCk6MCk/KGRbKGNbZj4+Ml18MCkrNjY+PjBdfDB8MCk9PTE6MClhWyhjW2Y+PjJdfDApKzY2Pj4wXT0yO2NbZT4+Ml09Y1tnPj4yXTtoPWNbZT4+Ml18MDtpPWo7cmV0dXJuIGh8MH1mdW5jdGlvbiBGRihlLGYpe2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wO2w9aTtpPWkrMTZ8MDtnPWwrMTJ8MDtoPWwrOHwwO2o9bCs0fDA7az1sO2NbaD4+Ml09ZTtjW2o+PjJdPWY7Y1trPj4yXT1jWyhjW2g+PjJdfDApKzQ+PjJdO2lmKChhWyhjW2g+PjJdfDApKzY4Pj4wXXwwKT49MTkpe2NbZz4+Ml09UWooNjMwMDkpfDA7ZT1jW2c+PjJdfDA7aT1sO3JldHVybiBlfDB9ZWxzZXtiWyhjW2g+PjJdfDApKzE2KzE4Pj4xXT0wO2U9KGNbaD4+Ml18MCkrNjR8MDthW2U+PjBdPWRbZT4+MF0mLTc7ZT0oY1toPj4yXXwwKSs2OHwwO2FbZT4+MF09KGFbZT4+MF18MCkrMTw8MjQ+PjI0O2JbKGNbaD4+Ml18MCkrODArKGFbKGNbaD4+Ml18MCkrNjg+PjBdPDwxKT4+MV09MDtjW2c+PjJdPUlGKGNbaz4+Ml18MCxjW2o+PjJdfDAsKGNbaD4+Ml18MCkrMTIwKyhhWyhjW2g+PjJdfDApKzY4Pj4wXTw8Mil8MCxjW2g+PjJdfDAsZFsoY1toPj4yXXwwKSs2NT4+MF18MCl8MDtlPWNbZz4+Ml18MDtpPWw7cmV0dXJuIGV8MH1yZXR1cm4gMH1mdW5jdGlvbiBHRihmKXtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wO249aTtpPWkrMzJ8MDtrPW4rMTZ8MDtsPW4rMTJ8MDtqPW4rOHwwO209bis0fDA7aD1uO2NbbD4+Ml09ZjtjW20+PjJdPTA7Y1toPj4yXT0wO3doaWxlKDEpe2Y9Y1soY1tsPj4yXXwwKSsxMjArKGFbKGNbbD4+Ml18MCkrNjg+PjBdPDwyKT4+Ml18MDtjW2g+PjJdPWY7Zz1jW2g+PjJdfDA7aWYoISgoYVtmKzQ+PjBdfDApIT0wXjEpKXtmPTU7YnJlYWt9Y1tqPj4yXT1ncigoY1soY1toPj4yXXwwKSs1Nj4+Ml18MCkrKChkW2crNT4+MF18MCkrOCl8MCl8MDtiWyhjW2w+PjJdfDApKzgwKyhhWyhjW2w+PjJdfDApKzY4Pj4wXTw8MSk+PjFdPWJbKGNbaD4+Ml18MCkrMTg+PjFdfDA7Y1ttPj4yXT1GRihjW2w+PjJdfDAsY1tqPj4yXXwwKXwwO2lmKGNbbT4+Ml18MCl7Zj00O2JyZWFrfX1pZigoZnwwKT09NCl7Y1trPj4yXT1jW20+PjJdO209Y1trPj4yXXwwO2k9bjtyZXR1cm4gbXwwfWVsc2UgaWYoKGZ8MCk9PTUpe2JbKGNbbD4+Ml18MCkrODArKGFbKGNbbD4+Ml18MCkrNjg+PjBdPDwxKT4+MV09KGVbZysxOD4+MV18MCktMTtjW2s+PjJdPTA7bT1jW2s+PjJdfDA7aT1uO3JldHVybiBtfDB9cmV0dXJuIDB9ZnVuY3Rpb24gSEYoZSl7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wO2Y9aTtpPWkrMTZ8MDtnPWY7Y1tnPj4yXT1lO2JbKGNbZz4+Ml18MCkrMTYrMTg+PjFdPTA7aD0oY1tnPj4yXXwwKSs2NHwwO2FbaD4+MF09KGRbaD4+MF18MCkmLTc7aD0oY1tnPj4yXXwwKSs2OHwwO2U9YVtoPj4wXXwwO2FbaD4+MF09ZSstMTw8MjQ+PjI0O1NCKGNbKGNbZz4+Ml18MCkrMTIwKyhlPDwyND4+MjQ8PDIpPj4yXXwwKTtpPWY7cmV0dXJufWZ1bmN0aW9uIElGKGIsZixnLGgsail7Yj1ifDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7dmFyIGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wO3M9aTtpPWkrMzJ8MDtrPXMrMjh8MDtsPXMrMjR8MDttPXMrMjB8MDtuPXMrMTZ8MDtvPXMrMTJ8MDtwPXMrOHwwO3I9cys0fDA7cT1zO2NbbD4+Ml09YjtjW20+PjJdPWY7Y1tuPj4yXT1nO2Nbbz4+Ml09aDtjW3A+PjJdPWo7Zz1jW20+PjJdfDA7YTpkbyBpZihnPj4+MDw9KEpGKGNbbD4+Ml18MCl8MCk+Pj4wKXtjW3I+PjJdPXZnKGNbY1tsPj4yXT4+Ml18MCxjW20+PjJdfDAscSxjW3A+PjJdfDApfDA7aWYoIShjW3I+PjJdfDApKXtnPVV0KGNbcT4+Ml18MCl8MDtjW2Nbbj4+Ml0+PjJdPWc7aWYoKGRbY1tjW24+PjJdPj4yXT4+MF18MHwwKT09MD8oS0YoY1txPj4yXXwwLGNbbT4+Ml18MCxjW2w+PjJdfDApfDAsY1tyPj4yXT1XdChjW2Nbbj4+Ml0+PjJdfDApfDAsKGNbcj4+Ml18MCkhPTApOjApe1FCKGNbY1tuPj4yXT4+Ml18MCk7YnJlYWt9ZG8gaWYoY1tvPj4yXXwwKXtpZigoZVsoY1tjW24+PjJdPj4yXXwwKSsxOD4+MV18MHwwKT49MT8oZFsoY1tjW24+PjJdPj4yXXwwKSsyPj4wXXwwfDApPT0oZFsoY1tvPj4yXXwwKSs2OT4+MF18MHwwKTowKWJyZWFrO2Nbcj4+Ml09UWooNjAyNjYpfDA7UUIoY1tjW24+PjJdPj4yXXwwKTticmVhayBhfXdoaWxlKDApO2Nbaz4+Ml09MDtyPWNbaz4+Ml18MDtpPXM7cmV0dXJuIHJ8MH19ZWxzZSBjW3I+PjJdPVFqKDYwMjQ0KXwwO3doaWxlKDApO2lmKGNbbz4+Ml18MCl7Zz0oY1tvPj4yXXwwKSs2OHwwO2FbZz4+MF09KGFbZz4+MF18MCkrLTE8PDI0Pj4yNH1jW2s+PjJdPWNbcj4+Ml07cj1jW2s+PjJdfDA7aT1zO3JldHVybiByfDB9ZnVuY3Rpb24gSkYoYSl7YT1hfDA7dmFyIGI9MCxkPTA7ZD1pO2k9aSsxNnwwO2I9ZDtjW2I+PjJdPWE7aT1kO3JldHVybiBjWyhjW2I+PjJdfDApKzQ0Pj4yXXwwfWZ1bmN0aW9uIEtGKGIsZCxlKXtiPWJ8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MDtrPWk7aT1pKzE2fDA7Zj1rKzEyfDA7Zz1rKzh8MDtoPWsrNHwwO2o9aztjW2Y+PjJdPWI7Y1tnPj4yXT1kO2NbaD4+Ml09ZTtjW2o+PjJdPVV0KGNbZj4+Ml18MCl8MDtpZigoY1tnPj4yXXwwKT09KGNbKGNbaj4+Ml18MCkrODQ+PjJdfDApKXtkPWNbaj4+Ml18MDtpPWs7cmV0dXJuIGR8MH1kPXdnKGNbZj4+Ml18MCl8MDtjWyhjW2o+PjJdfDApKzU2Pj4yXT1kO2NbKGNbaj4+Ml18MCkrNzI+PjJdPWNbZj4+Ml07Y1soY1tqPj4yXXwwKSs1Mj4+Ml09Y1toPj4yXTtjWyhjW2o+PjJdfDApKzg0Pj4yXT1jW2c+PjJdO2FbKGNbaj4+Ml18MCkrNT4+MF09KGNbZz4+Ml18MCk9PTE/MTAwOjA7ZD1jW2o+PjJdfDA7aT1rO3JldHVybiBkfDB9ZnVuY3Rpb24gTEYoYSxiLGQsZixnLGgpe2E9YXwwO2I9YnwwO2Q9ZHwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO3ZhciBqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTA7cz1pO2k9aSs0MzJ8MDtqPXMrMzZ8MDtrPXMrMzJ8MDtsPXMrMjh8MDttPXM7bj1zKzI0fDA7bz1zKzIwfDA7cj1zKzE2fDA7cT1zKzEyfDA7cD1zKzh8MDtjW2s+PjJdPWE7Y1tsPj4yXT1iO2I9bTtjW2I+PjJdPWQ7Y1tiKzQ+PjJdPWY7Y1tuPj4yXT1nO2Nbbz4+Ml09aDtjW3A+PjJdPTA7aWYoY1tsPj4yXXwwKXtjW3E+PjJdPU1GKGNbKGNbaz4+Ml18MCkrNzI+PjJdfDAscys0MHwwLDM4NCxwKXwwO2lmKCEoY1txPj4yXXwwKSl7Y1tqPj4yXT03O3I9Y1tqPj4yXXwwO2k9cztyZXR1cm4gcnwwfU5GKGNbKGNbaz4+Ml18MCkrNzI+PjJdfDAsY1ttPj4yXXwwLGNbbD4+Ml18MCxjW3E+PjJdfDApO2lmKCEoZVsoY1txPj4yXXwwKSs4Pj4xXXwwKSl7VGYoY1soY1soY1trPj4yXXwwKSs3Mj4+Ml18MCkrMTI+PjJdfDAsY1twPj4yXXwwKTtjW2o+PjJdPVFqKDU5MDIxKXwwO3I9Y1tqPj4yXXwwO2k9cztyZXR1cm4gcnwwfX1lbHNlIGNbcT4+Ml09MDtoPW07Y1tyPj4yXT1PRihjW2s+PjJdfDAsY1txPj4yXXwwLGNbaD4+Ml18MCxjW2grND4+Ml18MCxjW24+PjJdfDAsY1tvPj4yXXwwKXwwO2lmKGNbcD4+Ml18MClUZihjWyhjWyhjW2s+PjJdfDApKzcyPj4yXXwwKSsxMj4+Ml18MCxjW3A+PjJdfDApO2Nbaj4+Ml09Y1tyPj4yXTtyPWNbaj4+Ml18MDtpPXM7cmV0dXJuIHJ8MH1mdW5jdGlvbiBNRihhLGQsZixnKXthPWF8MDtkPWR8MDtmPWZ8MDtnPWd8MDt2YXIgaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTA7cD1pO2k9aSszMnwwO2g9cCsyOHwwO2o9cCsyNHwwO2s9cCsyMHwwO3E9cCsxNnwwO2w9cCsxMnwwO289cCs4fDA7bj1wKzR8MDttPXA7Y1tqPj4yXT1hO2Nbaz4+Ml09ZDtjW3E+PjJdPWY7Y1tsPj4yXT1nO2Nbbj4+Ml09OC0oY1trPj4yXSY3KSY3O2NbbT4+Ml09MTYrKCgoZVsoY1tqPj4yXXwwKSs2Pj4xXXwwKSsxfDApKjQwfDApO2lmKChjW20+PjJdfDApPigoY1txPj4yXXwwKSsoY1tuPj4yXXwwKXwwKSl7cT1jW20+PjJdfDA7Y1tvPj4yXT1DaChjWyhjW2o+PjJdfDApKzEyPj4yXXwwLHEsKChxfDApPDApPDwzMT4+MzEpfDA7Y1tjW2w+PjJdPj4yXT1jW28+PjJdO2lmKCEoY1tvPj4yXXwwKSl7Y1toPj4yXT0wO3E9Y1toPj4yXXwwO2k9cDtyZXR1cm4gcXwwfX1lbHNle2Nbbz4+Ml09KGNbaz4+Ml18MCkrKGNbbj4+Ml18MCk7Y1tjW2w+PjJdPj4yXT0wfWNbKGNbbz4+Ml18MCkrND4+Ml09KGNbbz4+Ml18MCkrMTY7Y1tjW28+PjJdPj4yXT1jW2o+PjJdO2JbKGNbbz4+Ml18MCkrOD4+MV09KGVbKGNbaj4+Ml18MCkrNj4+MV18MCkrMTtjW2g+PjJdPWNbbz4+Ml07cT1jW2g+PjJdfDA7aT1wO3JldHVybiBxfDB9ZnVuY3Rpb24gTkYoZixnLGgsail7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7dmFyIGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wO3U9aTtpPWkrNDh8MDtrPXUrMzZ8MDtsPXUrMzJ8MDt2PXUrMjh8MDtzPXUrMjR8MDttPXUrMjB8MDtuPXUrMTZ8MDtvPXUrMTJ8MDt0PXUrNDB8MDtyPXUrOHwwO3A9dSs0fDA7cT11O2Nbaz4+Ml09ZjtjW2w+PjJdPWc7Y1t2Pj4yXT1oO2Nbcz4+Ml09ajtjW20+PjJdPWNbdj4+Ml07Y1twPj4yXT1jWyhjW3M+PjJdfDApKzQ+PjJdO2FbKGNbcz4+Ml18MCkrMTA+PjBdPTA7Zz1jW20+PjJdfDA7aWYoKGRbY1ttPj4yXT4+MF18MHwwKTwxMjgpe2Nbcj4+Ml09ZFtnPj4wXTtnPTF9ZWxzZSBnPShiRyhnLHIpfDApJjI1NTtjW28+PjJdPWcmMjU1O2Nbbj4+Ml09Y1tyPj4yXTtiW3Q+PjFdPTA7d2hpbGUoMSl7aWYoKGNbbz4+Ml18MCk+Pj4wPj0oY1tyPj4yXXwwKT4+PjApe2c9MTE7YnJlYWt9aWYoKGNbbj4+Ml18MCk+KGNbbD4+Ml18MCkpe2c9MTE7YnJlYWt9Zz0oY1ttPj4yXXwwKSsoY1tvPj4yXXwwKXwwO2lmKChkWyhjW20+PjJdfDApKyhjW28+PjJdfDApPj4wXXwwfDApPDEyOCl7Y1txPj4yXT1kW2c+PjBdO2c9MX1lbHNlIGc9KGJHKGcscSl8MCkmMjU1O2Nbbz4+Ml09KGNbbz4+Ml18MCkrKGcmMjU1KTthWyhjW3A+PjJdfDApKzEwPj4wXT1hWyhjW2s+PjJdfDApKzQ+PjBdfDA7Y1soY1twPj4yXXwwKSszMj4+Ml09Y1soY1trPj4yXXwwKSsxMj4+Ml07Y1soY1twPj4yXXwwKSsyND4+Ml09MDtjWyhjW3A+PjJdfDApKzE2Pj4yXT0wO3Y9ZEcoKGNbbT4+Ml18MCkrKGNbbj4+Ml18MCl8MCxjW3E+PjJdfDAsY1twPj4yXXwwKXwwO2Nbbj4+Ml09KGNbbj4+Ml18MCkrdjtjW3A+PjJdPShjW3A+PjJdfDApKzQwO3Y9KGJbdD4+MV18MCkrMTw8MTY+PjE2O2JbdD4+MV09djtpZigodiY2NTUzNXwwKT49KGVbKGNbcz4+Ml18MCkrOD4+MV18MHwwKSl7Zz0xMTticmVha319aWYoKGd8MCk9PTExKXtiWyhjW3M+PjJdfDApKzg+PjFdPWJbdD4+MV18MDtpPXU7cmV0dXJufX1mdW5jdGlvbiBPRihmLGcsaCxqLGssbCl7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7bD1sfDA7dmFyIG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wLEU9MCxGPTA7Rj1pO2k9aSs5NnwwO209Ris4MHwwO249Ris3NnwwO289Ris3MnwwO3A9Ris4fDA7cT1GKzY4fDA7cj1GKzY0fDA7Qz1GKzYwfDA7RT1GKzU2fDA7dj1GKzUyfDA7RD1GKzQ4fDA7dT1GKzQ0fDA7cz1GKzQwfDA7dD1GKzM2fDA7Qj1GKzMyfDA7eT1GKzI4fDA7eD1GO3c9RisyNHwwO0E9RisyMHwwO3o9RisxNnwwO2Nbbj4+Ml09ZjtjW28+PjJdPWc7Zz1wO2NbZz4+Ml09aDtjW2crND4+Ml09ajtjW3E+PjJdPWs7Y1tyPj4yXT1sO2lmKCgoY1tvPj4yXXwwKT09MD8oZFsoY1tuPj4yXXwwKSs2Nj4+MF18MCk9PTE6MCk/KGRbKGNbbj4+Ml18MCkrNjQ+PjBdJjJ8MCkhPTA6MCl7Zz0oY1tuPj4yXXwwKSsxNnwwO2w9cDtpZigoY1tnPj4yXXwwKT09KGNbbD4+Ml18MCk/KGNbZys0Pj4yXXwwKT09KGNbbCs0Pj4yXXwwKTowKXtjW2Nbcj4+Ml0+PjJdPTA7Y1ttPj4yXT0wO0U9Y1ttPj4yXXwwO2k9RjtyZXR1cm4gRXwwfWlmKChkWyhjW24+PjJdfDApKzY0Pj4wXSY4fDApIT0wPyhnPShjW24+PjJdfDApKzE2fDAsaz1jW2crND4+Ml18MCxsPXAsZj1jW2wrND4+Ml18MCwoa3wwKTwoZnwwKXwoKGt8MCk9PShmfDApPyhjW2c+PjJdfDApPj4+MDwoY1tsPj4yXXwwKT4+PjA6MCkpOjApe2NbY1tyPj4yXT4+Ml09LTE7Y1ttPj4yXT0wO0U9Y1ttPj4yXXwwO2k9RjtyZXR1cm4gRXwwfX1pZihjW28+PjJdfDApe2NbRT4+Ml09UEYoY1tvPj4yXXwwKXwwO2FbKGNbbz4+Ml18MCkrMTE+PjBdPTB9ZWxzZSBjW0U+PjJdPTA7Y1tDPj4yXT1RRihjW24+PjJdfDApfDA7aWYoY1tDPj4yXXwwKXtjW20+PjJdPWNbQz4+Ml07RT1jW20+PjJdfDA7aT1GO3JldHVybiBFfDB9aWYoIShkWyhjW24+PjJdfDApKzY2Pj4wXXwwKSl7Y1tjW3I+PjJdPj4yXT0tMTtjW20+PjJdPTA7RT1jW20+PjJdfDA7aT1GO3JldHVybiBFfDB9YTpkb3tjW0I+PjJdPWNbKGNbbj4+Ml18MCkrMTIwKyhhWyhjW24+PjJdfDApKzY4Pj4wXTw8Mik+PjJdO2Nbdj4+Ml09MDtjW0Q+PjJdPShlWyhjW0I+PjJdfDApKzE4Pj4xXXwwKS0xO2NbdT4+Ml09Y1tEPj4yXT4+MS0oY1txPj4yXXwwKTtiWyhjW24+PjJdfDApKzgwKyhhWyhjW24+PjJdfDApKzY4Pj4wXTw8MSk+PjFdPWNbdT4+Ml07YjpkbyBpZighKGNbRT4+Ml18MCkpe3doaWxlKDEpe2NbeT4+Ml09KGNbKGNbQj4+Ml18MCkrNjg+PjJdfDApKyhlWyhjW0I+PjJdfDApKzIwPj4xXSYoZFsoY1soY1tCPj4yXXwwKSs2ND4+Ml18MCkrKGNbdT4+Ml08PDEpPj4wXTw8OHxkWyhjWyhjW0I+PjJdfDApKzY0Pj4yXXwwKSsoY1t1Pj4yXTw8MSkrMT4+MF0pKTtjOmRvIGlmKGFbKGNbQj4+Ml18MCkrMz4+MF18MCl3aGlsZSgxKXtsPWNbeT4+Ml18MDtjW3k+PjJdPWwrMTtpZigxMjg+KGRbbD4+MF18MCkpYnJlYWsgYztpZigoY1t5Pj4yXXwwKT4+PjA+PShjWyhjW0I+PjJdfDApKzYwPj4yXXwwKT4+PjApe2o9MjA7YnJlYWsgYX19d2hpbGUoMCk7Y3UoY1t5Pj4yXXwwLHgpfDA7Zz14O2s9Y1tnKzQ+PjJdfDA7bD1wO2Y9Y1tsKzQ+PjJdfDA7aWYoKGt8MCk8KGZ8MCl8KChrfDApPT0oZnwwKT8oY1tnPj4yXXwwKT4+PjA8KGNbbD4+Ml18MCk+Pj4wOjApKXtjW3Y+PjJdPShjW3U+PjJdfDApKzE7aWYoKGNbdj4+Ml18MCk+KGNbRD4+Ml18MCkpe2o9MjM7YnJlYWt9fWVsc2V7Zz14O2s9Y1tnKzQ+PjJdfDA7bD1wO2Y9Y1tsKzQ+PjJdfDA7aWYoISgoa3wwKT4oZnwwKXwoKGt8MCk9PShmfDApPyhjW2c+PjJdfDApPj4+MD4oY1tsPj4yXXwwKT4+PjA6MCkpKXtqPTI3O2JyZWFrfWNbRD4+Ml09KGNbdT4+Ml18MCktMTtpZigoY1t2Pj4yXXwwKT4oY1tEPj4yXXwwKSl7aj0yNjticmVha319Y1t1Pj4yXT0oY1t2Pj4yXXwwKSsoY1tEPj4yXXwwKT4+MX1pZigoanwwKT09MjMpe2Nbcz4+Ml09LTE7aj01MTticmVha31lbHNlIGlmKChqfDApPT0yNil7Y1tzPj4yXT0xO2o9NTE7YnJlYWt9ZWxzZSBpZigoanwwKT09Mjcpe2o9MDtmPShjW24+PjJdfDApKzY0fDA7YVtmPj4wXT1kW2Y+PjBdfDI7Zj14O2c9Y1tmKzQ+PjJdfDA7bD0oY1tuPj4yXXwwKSsxNnwwO2NbbD4+Ml09Y1tmPj4yXTtjW2wrND4+Ml09ZztiWyhjW24+PjJdfDApKzgwKyhhWyhjW24+PjJdfDApKzY4Pj4wXTw8MSk+PjFdPWNbdT4+Ml07aWYoYVsoY1tCPj4yXXwwKSs0Pj4wXXwwKXtqPTI5O2JyZWFrIGF9Y1t2Pj4yXT1jW3U+PjJdO2JyZWFrfX1lbHNlIHdoaWxlKDEpe2NbeT4+Ml09KGNbKGNbQj4+Ml18MCkrNjg+PjJdfDApKyhlWyhjW0I+PjJdfDApKzIwPj4xXSYoZFsoY1soY1tCPj4yXXwwKSs2ND4+Ml18MCkrKGNbdT4+Ml08PDEpPj4wXTw8OHxkWyhjWyhjW0I+PjJdfDApKzY0Pj4yXXwwKSsoY1t1Pj4yXTw8MSkrMT4+MF0pKTtjW3c+PjJdPWRbY1t5Pj4yXT4+MF07ZG8gaWYoKGNbdz4+Ml18MCk8PShkWyhjW0I+PjJdfDApKzc+PjBdfDApKWNbcz4+Ml09T2JbY1tFPj4yXSYyNTVdKGNbdz4+Ml18MCwoY1t5Pj4yXXwwKSsxfDAsY1tvPj4yXXwwKXwwO2Vsc2V7aWYoKGRbKGNbeT4+Ml18MCkrMT4+MF0mMTI4fDApPT0wPyhsPSgoY1t3Pj4yXSYxMjcpPDw3KSsoZFsoY1t5Pj4yXXwwKSsxPj4wXXwwKXwwLGNbdz4+Ml09bCwobHwwKTw9KGVbKGNbQj4+Ml18MCkrMTA+PjFdfDApKTowKXtjW3M+PjJdPU9iW2NbRT4+Ml0mMjU1XShjW3c+PjJdfDAsKGNbeT4+Ml18MCkrMnwwLGNbbz4+Ml18MCl8MDticmVha31jW3o+PjJdPShjW3k+PjJdfDApKygwLShkWyhjW0I+PjJdfDApKzY+PjBdfDApKTtVYltjWyhjW0I+PjJdfDApKzgwPj4yXSYyNTVdKGNbQj4+Ml18MCxjW3o+PjJdfDAsKGNbbj4+Ml18MCkrMTZ8MCk7Y1t3Pj4yXT1jWyhjW24+PjJdfDApKzE2Pj4yXTtpZigoY1t3Pj4yXXwwKTwyKXtqPTM3O2JyZWFrIGF9bD0oY1t3Pj4yXXwwKSsxOHwwO2NbQT4+Ml09JGYobCwoKGx8MCk8MCk8PDMxPj4zMSl8MDtpZighKGNbQT4+Ml18MCkpe2o9Mzk7YnJlYWsgYX1iWyhjW24+PjJdfDApKzgwKyhhWyhjW24+PjJdfDApKzY4Pj4wXTw8MSk+PjFdPWNbdT4+Ml07Y1tDPj4yXT1SRihjW24+PjJdfDAsMCxjW3c+PjJdfDAsY1tBPj4yXXwwLDIpfDA7aWYoY1tDPj4yXXwwKXtqPTQxO2JyZWFrIGF9Y1tzPj4yXT1PYltjW0U+PjJdJjI1NV0oY1t3Pj4yXXwwLGNbQT4+Ml18MCxjW28+PjJdfDApfDA7S2QoY1tBPj4yXXwwKX13aGlsZSgwKTtpZigoY1tzPj4yXXwwKTwwKWNbdj4+Ml09KGNbdT4+Ml18MCkrMTtlbHNle2lmKChjW3M+PjJdfDApPD0wKXtqPTQ3O2JyZWFrIGF9Y1tEPj4yXT0oY1t1Pj4yXXwwKS0xfWlmKChjW3Y+PjJdfDApPihjW0Q+PjJdfDApKXtqPTUxO2JyZWFrIGJ9Y1t1Pj4yXT0oY1t2Pj4yXXwwKSsoY1tEPj4yXXwwKT4+MX13aGlsZSgwKTtpZigoanwwKT09NTE/KGo9MCwoYVsoY1tCPj4yXXwwKSs0Pj4wXXwwKSE9MCk6MCl7aj01MjticmVha31oPWNbQj4+Ml18MDtpZigoY1t2Pj4yXXwwKT49KGVbKGNbQj4+Ml18MCkrMTg+PjFdfDApKWNbdD4+Ml09Z3IoKGNbKGNbQj4+Ml18MCkrNTY+PjJdfDApKygoZFtoKzU+PjBdfDApKzgpfDApfDA7ZWxzZSBjW3Q+PjJdPWdyKChjW2grNTY+PjJdfDApKyhlWyhjW0I+PjJdfDApKzIwPj4xXSYoZFsoY1soY1tCPj4yXXwwKSs2ND4+Ml18MCkrKGNbdj4+Ml08PDEpPj4wXTw8OHxkWyhjWyhjW0I+PjJdfDApKzY0Pj4yXXwwKSsoY1t2Pj4yXTw8MSkrMT4+MF0pKXwwKXwwO2JbKGNbbj4+Ml18MCkrODArKGFbKGNbbj4+Ml18MCkrNjg+PjBdPDwxKT4+MV09Y1t2Pj4yXTtjW0M+PjJdPUZGKGNbbj4+Ml18MCxjW3Q+PjJdfDApfDB9d2hpbGUoKGNbQz4+Ml18MCk9PTApO2lmKChqfDApPT0yMCl7Y1ttPj4yXT1Raig2MzM4Nyl8MDtFPWNbbT4+Ml18MDtpPUY7cmV0dXJuIEV8MH1lbHNlIGlmKChqfDApPT0yOSl7Y1tjW3I+PjJdPj4yXT0wO2NbQz4+Ml09MH1lbHNlIGlmKChqfDApPT0zNyljW0M+PjJdPVFqKDYzNDYwKXwwO2Vsc2UgaWYoKGp8MCk9PTM5KWNbQz4+Ml09NztlbHNlIGlmKChqfDApPT00MSlLZChjW0E+PjJdfDApO2Vsc2UgaWYoKGp8MCk9PTQ3KXtjW2Nbcj4+Ml0+PjJdPTA7Y1tDPj4yXT0wO2JbKGNbbj4+Ml18MCkrODArKGFbKGNbbj4+Ml18MCkrNjg+PjBdPDwxKT4+MV09Y1t1Pj4yXTtpZihhWyhjW28+PjJdfDApKzExPj4wXXwwKWNbQz4+Ml09MTF9ZWxzZSBpZigoanwwKT09NTIpe2JbKGNbbj4+Ml18MCkrODArKGFbKGNbbj4+Ml18MCkrNjg+PjBdPDwxKT4+MV09Y1t1Pj4yXTtjW2Nbcj4+Ml0+PjJdPWNbcz4+Ml07Y1tDPj4yXT0wfWJbKGNbbj4+Ml18MCkrMTYrMTg+PjFdPTA7RT0oY1tuPj4yXXwwKSs2NHwwO2FbRT4+MF09ZFtFPj4wXSYtNztjW20+PjJdPWNbQz4+Ml07RT1jW20+PjJdfDA7aT1GO3JldHVybiBFfDB9ZnVuY3Rpb24gUEYoYil7Yj1ifDA7dmFyIGQ9MCxmPTAsZz0wLGg9MDtoPWk7aT1pKzE2fDA7ZD1oKzh8MDtmPWgrNHwwO2c9aDtjW2Y+PjJdPWI7aWYoKChlWyhjW2NbZj4+Ml0+PjJdfDApKzY+PjFdfDApKyhlWyhjW2NbZj4+Ml0+PjJdfDApKzg+PjFdfDApfDApPD0xMyl7Y1tnPj4yXT1lWyhjWyhjW2Y+PjJdfDApKzQ+PjJdfDApKzg+PjFdO2I9KGNbZj4+Ml18MCkrMTJ8MDtpZihhW2NbKGNbY1tmPj4yXT4+Ml18MCkrMTY+PjJdPj4wXXwwKXthW2I+PjBdPTE7YVsoY1tmPj4yXXwwKSsxMz4+MF09LTF9ZWxzZXthW2I+PjBdPS0xO2FbKGNbZj4+Ml18MCkrMTM+PjBdPTF9aWYoY1tnPj4yXSY0KXtjW2Q+PjJdPTE2MDtnPWNbZD4+Ml18MDtpPWg7cmV0dXJuIGd8MH1pZigoY1tnPj4yXSYyNXwwKT09MD8oY1soY1tjW2Y+PjJdPj4yXXwwKSsyMD4+Ml18MCk9PTA6MCl7Y1tkPj4yXT0xNjE7Zz1jW2Q+PjJdfDA7aT1oO3JldHVybiBnfDB9fWNbZD4+Ml09MTYyO2c9Y1tkPj4yXXwwO2k9aDtyZXR1cm4gZ3wwfWZ1bmN0aW9uIFFGKGYpe2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTA7bT1pO2k9aSszMnwwO2c9bSsxNnwwO2g9bSsxMnwwO2o9bSs4fDA7az1tKzR8MDtsPW07Y1toPj4yXT1mO2Nbaz4+Ml09MDtkbyBpZigoZFsoY1toPj4yXXwwKSs2Nj4+MF18MCk+PTMpe2Y9Y1toPj4yXXwwO2lmKChkWyhjW2g+PjJdfDApKzY2Pj4wXXwwKSE9NCl7UEIoZik7YnJlYWt9Y1tnPj4yXT1jW2YrNjA+PjJdO2w9Y1tnPj4yXXwwO2k9bTtyZXR1cm4gbHwwfXdoaWxlKDApO2E6ZG8gaWYoKGFbKGNbaD4+Ml18MCkrNjg+PjBdfDApPj0wKXdoaWxlKDEpe2lmKCEoYVsoY1toPj4yXXwwKSs2OD4+MF18MCkpYnJlYWsgYTtuPShjW2g+PjJdfDApKzY4fDA7Zj1hW24+PjBdfDA7YVtuPj4wXT1mKy0xPDwyND4+MjQ7U0IoY1soY1toPj4yXXwwKSsxMjArKGY8PDI0Pj4yNDw8Mik+PjJdfDApfWVsc2V7Zj1jW2g+PjJdfDA7aWYoIShjWyhjW2g+PjJdfDApKzUyPj4yXXwwKSl7YVtmKzY2Pj4wXT0wO2NbZz4+Ml09MDtuPWNbZz4+Ml18MDtpPW07cmV0dXJuIG58MH1jW2s+PjJdPUlGKGNbKGNbZj4+Ml18MCkrND4+Ml18MCxjWyhjW2g+PjJdfDApKzUyPj4yXXwwLChjW2g+PjJdfDApKzEyMHwwLDAsZFsoY1toPj4yXXwwKSs2NT4+MF18MCl8MDtmPWNbaD4+Ml18MDtpZighKGNbaz4+Ml18MCkpe2FbZis2OD4+MF09MDthWyhjW2g+PjJdfDApKzY5Pj4wXT1hWyhjWyhjW2g+PjJdfDApKzEyMD4+Ml18MCkrMj4+MF18MDticmVha31hW2YrNjY+PjBdPTA7Y1tnPj4yXT1jW2s+PjJdO249Y1tnPj4yXXwwO2k9bTtyZXR1cm4gbnwwfXdoaWxlKDApO2Nbaj4+Ml09Y1soY1toPj4yXXwwKSsxMjA+PjJdO2lmKChkW2Nbaj4+Ml0+PjBdfDApIT0wPygoY1soY1toPj4yXXwwKSs3Mj4+Ml18MCk9PTB8MCk9PShkWyhjW2o+PjJdfDApKzI+PjBdfDApOjApe2JbKGNbaD4+Ml18MCkrODA+PjFdPTA7YlsoY1toPj4yXXwwKSsxNisxOD4+MV09MDtuPShjW2g+PjJdfDApKzY0fDA7YVtuPj4wXT1kW24+PjBdJi0xNTtkbyBpZigoZVsoY1tqPj4yXXwwKSsxOD4+MV18MCk+MClhWyhjW2g+PjJdfDApKzY2Pj4wXT0xO2Vsc2V7aWYoYVsoY1tqPj4yXXwwKSs0Pj4wXXwwKXthWyhjW2g+PjJdfDApKzY2Pj4wXT0wO2JyZWFrfWlmKChjWyhjW2o+PjJdfDApKzg0Pj4yXXwwKT09MSl7Y1tsPj4yXT1ncigoY1soY1tqPj4yXXwwKSs1Nj4+Ml18MCkrKChkWyhjW2o+PjJdfDApKzU+PjBdfDApKzgpfDApfDA7YVsoY1toPj4yXXwwKSs2Nj4+MF09MTtjW2s+PjJdPUZGKGNbaD4+Ml18MCxjW2w+PjJdfDApfDA7YnJlYWt9Y1tnPj4yXT1Raig2MzE0Nyl8MDtuPWNbZz4+Ml18MDtpPW07cmV0dXJuIG58MH13aGlsZSgwKTtjW2c+PjJdPWNbaz4+Ml07bj1jW2c+PjJdfDA7aT1tO3JldHVybiBufDB9Y1tnPj4yXT1Raig2MzEzNil8MDtuPWNbZz4+Ml18MDtpPW07cmV0dXJuIG58MH1mdW5jdGlvbiBSRihiLGYsZyxoLGope2I9YnwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO3ZhciBrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTA7Qz1pO2k9aSs4MHwwO2s9Qys2OHwwO2w9Qys2NHwwO209Qys2MHwwO249Qys1NnwwO289Qys1MnwwO3A9Qys0OHwwO3Q9Qys0NHwwO0I9Qys0MHwwO3U9QyszNnwwO0E9QyszMnwwO3k9QysyOHwwO3E9QysyNHwwO3g9QysyMHwwO3c9QysxNnwwO3Y9QysxMnwwO3M9Qys4fDA7cj1DKzR8MDt6PUM7Y1tsPj4yXT1iO2NbbT4+Ml09ZjtjW24+PjJdPWc7Y1tvPj4yXT1oO2NbcD4+Ml09ajtjW0I+PjJdPTA7Y1t1Pj4yXT0wO2NbQT4+Ml09Y1soY1tsPj4yXXwwKSsxMjArKGFbKGNbbD4+Ml18MCkrNjg+PjBdPDwyKT4+Ml07Y1t5Pj4yXT1jWyhjW2w+PjJdfDApKzQ+PjJdO1NGKGNbbD4+Ml18MCk7Y1t0Pj4yXT1jWyhjW2w+PjJdfDApKzE2Kzg+PjJdO2lmKCgoY1t0Pj4yXXwwKS0oY1soY1tBPj4yXXwwKSs1Nj4+Ml18MCl8MCk+Pj4wPigoY1soY1t5Pj4yXXwwKSszNj4+Ml18MCktKGVbKGNbbD4+Ml18MCkrMTYrMTY+PjFdfDApfDApPj4+MCl7Y1trPj4yXT1Raig2MjcyMyl8MDtCPWNbaz4+Ml18MDtpPUM7cmV0dXJuIEJ8MH1pZigoY1ttPj4yXXwwKT4+PjA8KGVbKGNbbD4+Ml18MCkrMTYrMTY+PjFdfDApPj4+MCl7Y1txPj4yXT1jW24+PjJdO2lmKCgoY1txPj4yXXwwKSsoY1ttPj4yXXwwKXwwKT4+PjA+KGVbKGNbbD4+Ml18MCkrMTYrMTY+PjFdfDApPj4+MCljW3E+PjJdPShlWyhjW2w+PjJdfDApKzE2KzE2Pj4xXXwwKS0oY1ttPj4yXXwwKTtjW0I+PjJdPVRGKChjW3Q+PjJdfDApKyhjW20+PjJdfDApfDAsY1tvPj4yXXwwLGNbcT4+Ml18MCxjW3A+PjJdJjEsY1soY1tBPj4yXXwwKSs3Mj4+Ml18MCl8MDtjW20+PjJdPTA7Y1tvPj4yXT0oY1tvPj4yXXwwKSsoY1txPj4yXXwwKTtjW24+PjJdPShjW24+PjJdfDApLShjW3E+PjJdfDApfWVsc2UgY1ttPj4yXT0oY1ttPj4yXXwwKS0oZVsoY1tsPj4yXXwwKSsxNisxNj4+MV18MCk7YTpkbyBpZigoY1tCPj4yXXwwKT09MCYoY1tuPj4yXXwwKT4+PjA+MCl7Y1t4Pj4yXT0oY1soY1t5Pj4yXXwwKSszNj4+Ml18MCktNDtjW3c+PjJdPWdyKChjW3Q+PjJdfDApKyhlWyhjW2w+PjJdfDApKzE2KzE2Pj4xXXwwKXwwKXwwO2lmKChjW3A+PjJdfDApIT0yPyhkWyhjW2w+PjJdfDApKzY0Pj4wXSY0fDApPT0wOjApe2Nbdj4+Ml09KCgoY1soY1tsPj4yXXwwKSsxNisxMj4+Ml18MCktKGVbKGNbbD4+Ml18MCkrMTYrMTY+PjFdfDApKyhjW3g+PjJdfDApLTF8MCk+Pj4wKS8oKGNbeD4+Ml18MCk+Pj4wKXwwO2RvIGlmKChjW3Y+PjJdfDApPihjWyhjW2w+PjJdfDApKzU2Pj4yXXwwKSl7Y1tzPj4yXT1jZyhjWyhjW2w+PjJdfDApKzEyPj4yXXwwLGNbdj4+Ml08PDE8PDIsMCl8MDtpZighKGNbcz4+Ml18MCkpe2NbQj4+Ml09NzticmVha31lbHNle2NbKGNbbD4+Ml18MCkrNTY+PjJdPWNbdj4+Ml08PDE7Y1soY1tsPj4yXXwwKSsxMj4+Ml09Y1tzPj4yXTticmVha319d2hpbGUoMCk7aWYoIShjW0I+PjJdfDApKXtWUihjWyhjW2w+PjJdfDApKzEyPj4yXXwwLDAsY1t2Pj4yXTw8MnwwKXwwO0E9KGNbbD4+Ml18MCkrNjR8MDthW0E+PjBdPWRbQT4+MF18NH19aWYoKGRbKGNbbD4+Ml18MCkrNjQ+PjBdJjR8MCkhPTA/KGNbKGNbKGNbbD4+Ml18MCkrMTI+PjJdfDApKygoKChjW20+PjJdfDApPj4+MCkvKChjW3g+PjJdfDApPj4+MCl8MCk8PDIpPj4yXXwwKSE9MDowKXtjW3U+PjJdPSgoY1ttPj4yXXwwKT4+PjApLygoY1t4Pj4yXXwwKT4+PjApfDA7Y1t3Pj4yXT1jWyhjWyhjW2w+PjJdfDApKzEyPj4yXXwwKSsoY1t1Pj4yXTw8Mik+PjJdO2NbbT4+Ml09KChjW20+PjJdfDApPj4+MCklKChjW3g+PjJdfDApPj4+MCl8MH13aGlsZSgxKXtpZighKChjW0I+PjJdfDApPT0wJihjW24+PjJdfDApPj4+MD4wJihjW3c+PjJdfDApIT0wKSlicmVhayBhO2lmKGRbKGNbbD4+Ml18MCkrNjQ+PjBdJjQpY1soY1soY1tsPj4yXXwwKSsxMj4+Ml18MCkrKGNbdT4+Ml08PDIpPj4yXT1jW3c+PjJdO2lmKChjW20+PjJdfDApPj4+MD49KGNbeD4+Ml18MCk+Pj4wKXtpZihjWyhjWyhjW2w+PjJdfDApKzEyPj4yXXwwKSsoKGNbdT4+Ml18MCkrMTw8Mik+PjJdfDApY1t3Pj4yXT1jWyhjWyhjW2w+PjJdfDApKzEyPj4yXXwwKSsoKGNbdT4+Ml18MCkrMTw8Mik+PjJdO2Vsc2UgY1tCPj4yXT1VRihjW3k+PjJdfDAsY1t3Pj4yXXwwLDAsdyl8MDtjW20+PjJdPShjW20+PjJdfDApLShjW3g+PjJdfDApfWVsc2V7Y1tyPj4yXT1jW24+PjJdO2lmKCgoY1tyPj4yXXwwKSsoY1ttPj4yXXwwKXwwKT4+PjA+KGNbeD4+Ml18MCk+Pj4wKWNbcj4+Ml09KGNbeD4+Ml18MCktKGNbbT4+Ml18MCk7Y1tCPj4yXT12ZyhjW2NbeT4+Ml0+PjJdfDAsY1t3Pj4yXXwwLHosKGNbcD4+Ml0mMXwwKT09MD8yOjApfDA7aWYoIShjW0I+PjJdfDApKXtjW3Q+PjJdPXdnKGNbej4+Ml18MCl8MDtjW3c+PjJdPWdyKGNbdD4+Ml18MCl8MDtjW0I+PjJdPVRGKChjW3Q+PjJdfDApKygoY1ttPj4yXXwwKSs0KXwwLGNbbz4+Ml18MCxjW3I+PjJdfDAsY1twPj4yXSYxLGNbej4+Ml18MCl8MDt5ZyhjW3o+PjJdfDApO2NbbT4+Ml09MH1jW24+PjJdPShjW24+PjJdfDApLShjW3I+PjJdfDApO2Nbbz4+Ml09KGNbbz4+Ml18MCkrKGNbcj4+Ml18MCl9Y1t1Pj4yXT0oY1t1Pj4yXXwwKSsxfX13aGlsZSgwKTtpZigoY1tCPj4yXXwwKT09MCYoY1tuPj4yXXwwKT4+PjA+MCl7Y1trPj4yXT1Raig2Mjg4MCl8MDtCPWNbaz4+Ml18MDtpPUM7cmV0dXJuIEJ8MH1lbHNle2Nbaz4+Ml09Y1tCPj4yXTtCPWNbaz4+Ml18MDtpPUM7cmV0dXJuIEJ8MH1yZXR1cm4gMH1mdW5jdGlvbiBTRihiKXtiPWJ8MDt2YXIgZj0wLGc9MCxoPTA7aD1pO2k9aSsxNnwwO2Y9aCs0fDA7Zz1oO2NbZj4+Ml09YjtpZihlWyhjW2Y+PjJdfDApKzE2KzE4Pj4xXXwwKXtpPWg7cmV0dXJufWNbZz4+Ml09YVsoY1tmPj4yXXwwKSs2OD4+MF07Yj0oY1tmPj4yXXwwKSs2NHwwO2FbYj4+MF09ZFtiPj4wXXwyO1lGKGNbKGNbZj4+Ml18MCkrMTIwKyhjW2c+PjJdPDwyKT4+Ml18MCxlWyhjW2Y+PjJdfDApKzgwKyhjW2c+PjJdPDwxKT4+MV18MCwoY1tmPj4yXXwwKSsxNnwwKTtpPWg7cmV0dXJufWZ1bmN0aW9uIFRGKGEsYixkLGUsZil7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTA7bj1pO2k9aSszMnwwO2c9bisyNHwwO2g9bisyMHwwO2o9bisxNnwwO2s9bisxMnwwO289bis4fDA7bD1uKzR8MDttPW47Y1toPj4yXT1hO2Nbaj4+Ml09YjtjW2s+PjJdPWQ7Y1tvPj4yXT1lO2NbbD4+Ml09ZjtkbyBpZihjW28+PjJdfDApe2NbbT4+Ml09R2coY1tsPj4yXXwwKXwwO2lmKCEoY1ttPj4yXXwwKSl7VFIoY1toPj4yXXwwLGNbaj4+Ml18MCxjW2s+PjJdfDApfDA7YnJlYWt9Y1tnPj4yXT1jW20+PjJdO289Y1tnPj4yXXwwO2k9bjtyZXR1cm4gb3wwfWVsc2UgVFIoY1tqPj4yXXwwLGNbaD4+Ml18MCxjW2s+PjJdfDApfDA7d2hpbGUoMCk7Y1tnPj4yXT0wO289Y1tnPj4yXXwwO2k9bjtyZXR1cm4gb3wwfWZ1bmN0aW9uIFVGKGIsZSxmLGcpe2I9YnwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO3ZhciBoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wO3M9aTtpPWkrNDh8MDtoPXMrMzJ8MDtqPXMrMjh8MDtxPXMrMjR8MDtrPXMrMjB8MDtuPXMrMTZ8MDtvPXMrMTJ8MDtyPXMrOHwwO3A9cys0fDA7bT1zO2w9cyszNnwwO2NbaD4+Ml09YjtjW2o+PjJdPWU7Y1txPj4yXT1mO2Nbaz4+Ml09ZztjW24+PjJdPTA7Y1tvPj4yXT0wO2Nbcj4+Ml09MDtpZihhWyhjW2g+PjJdfDApKzE3Pj4wXXwwKXtjW20+PjJdPShjW2o+PjJdfDApKzE7d2hpbGUoMSl7Zj1WRihjW2g+PjJdfDAsY1ttPj4yXXwwKXwwO2lmKChmfDApPT0oY1ttPj4yXXwwKSliPTE7ZWxzZSBiPShjW20+PjJdfDApPT0oKCgoY1szODRdfDApPj4+MCkvKChjWyhjW2g+PjJdfDApKzMyPj4yXXwwKT4+PjApfDApKzF8MCk7ZT1jW20+PjJdfDA7aWYoIWIpYnJlYWs7Y1ttPj4yXT1lKzF9aWYoKChlPj4+MDw9KEpGKGNbaD4+Ml18MCl8MCk+Pj4wPyhjW3I+PjJdPVdGKGNbaD4+Ml18MCxjW20+PjJdfDAsbCxwKXwwLChjW3I+PjJdfDApPT0wKTowKT8oZFtsPj4wXXwwKT09NDowKT8oY1twPj4yXXwwKT09KGNbaj4+Ml18MCk6MCl7Y1tuPj4yXT1jW20+PjJdO2Nbcj4+Ml09MTAxfX1pZigoY1tyPj4yXXwwKT09MD8oY1tyPj4yXT1YRihjW2g+PjJdfDAsY1tqPj4yXXwwLG8sKGNbcT4+Ml18MCk9PTA/MjowKXwwLChjW3I+PjJdfDApPT0wKTowKWNbbj4+Ml09Z3IoY1soY1tvPj4yXXwwKSs1Nj4+Ml18MCl8MDtjW2Nbaz4+Ml0+PjJdPWNbbj4+Ml07ZT1jW28+PjJdfDA7aWYoY1txPj4yXXwwKXtjW2NbcT4+Ml0+PjJdPWU7cT1jW3I+PjJdfDA7cT0ocXwwKT09MTAxO3I9Y1tyPj4yXXwwO3I9cT8wOnI7aT1zO3JldHVybiByfDB9ZWxzZXtRQihlKTtxPWNbcj4+Ml18MDtxPShxfDApPT0xMDE7cj1jW3I+PjJdfDA7cj1xPzA6cjtpPXM7cmV0dXJuIHJ8MH1yZXR1cm4gMH1mdW5jdGlvbiBWRihhLGIpe2E9YXwwO2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTA7az1pO2k9aSszMnwwO2Q9aysyMHwwO2U9aysxNnwwO2Y9aysxMnwwO2g9ays4fDA7Zz1rKzR8MDtqPWs7Y1tlPj4yXT1hO2NbZj4+Ml09YjtpZigoY1tmPj4yXXwwKT4+PjA8Mil7Y1tkPj4yXT0wO2o9Y1tkPj4yXXwwO2k9aztyZXR1cm4ganwwfWNbaD4+Ml09KCgoY1soY1tlPj4yXXwwKSszNj4+Ml18MCk+Pj4wKS81fDApKzE7Y1tnPj4yXT0oKChjW2Y+PjJdfDApLTJ8MCk+Pj4wKS8oKGNbaD4+Ml18MCk+Pj4wKXwwO2Nbaj4+Ml09KF8oY1tnPj4yXXwwLGNbaD4+Ml18MCl8MCkrMjtpZigoY1tqPj4yXXwwKT09KCgoKGNbMzg0XXwwKT4+PjApLygoY1soY1tlPj4yXXwwKSszMj4+Ml18MCk+Pj4wKXwwKSsxfDApKWNbaj4+Ml09KGNbaj4+Ml18MCkrMTtjW2Q+PjJdPWNbaj4+Ml07aj1jW2Q+PjJdfDA7aT1rO3JldHVybiBqfDB9ZnVuY3Rpb24gV0YoYixlLGYsZyl7Yj1ifDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7dmFyIGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTA7cj1pO2k9aSs0OHwwO2g9ciszNnwwO3M9ciszMnwwO2o9cisyOHwwO2s9cisyNHwwO2w9cisyMHwwO289cisxNnwwO209cisxMnwwO3A9cis4fDA7bj1yKzR8MDtxPXI7Y1tzPj4yXT1iO2Nbaj4+Ml09ZTtjW2s+PjJdPWY7Y1tsPj4yXT1nO2NbbT4+Ml09VkYoY1tzPj4yXXwwLGNbaj4+Ml18MCl8MDtjW3E+PjJdPXZnKGNbY1tzPj4yXT4+Ml18MCxjW20+PjJdfDAsbywwKXwwO2lmKGNbcT4+Ml18MCl7Y1toPj4yXT1jW3E+PjJdO3M9Y1toPj4yXXwwO2k9cjtyZXR1cm4gc3wwfWNbcD4+Ml09d2coY1tvPj4yXXwwKXwwO2Nbbj4+Ml09KChjW2o+PjJdfDApLShjW20+PjJdfDApLTF8MCkqNTtpZigoY1tuPj4yXXwwKTwwKXt5ZyhjW28+PjJdfDApO2NbaD4+Ml09UWooNTkyNDApfDA7cz1jW2g+PjJdfDA7aT1yO3JldHVybiBzfDB9YVtjW2s+PjJdPj4wXT1hWyhjW3A+PjJdfDApKyhjW24+PjJdfDApPj4wXXwwO2lmKGNbbD4+Ml18MCl7cz1ncigoY1twPj4yXXwwKSsoKGNbbj4+Ml18MCkrMSl8MCl8MDtjW2NbbD4+Ml0+PjJdPXN9eWcoY1tvPj4yXXwwKTtpZigoZFtjW2s+PjJdPj4wXXwwfDApPj0xPyhkW2Nbaz4+Ml0+PjBdfDB8MCk8PTU6MCl7Y1toPj4yXT0wO3M9Y1toPj4yXXwwO2k9cjtyZXR1cm4gc3wwfWNbaD4+Ml09UWooNTkyNDgpfDA7cz1jW2g+PjJdfDA7aT1yO3JldHVybiBzfDB9ZnVuY3Rpb24gWEYoYSxiLGQsZSl7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTA7bT1pO2k9aSszMnwwO2Y9bSsyNHwwO2c9bSsyMHwwO2g9bSsxNnwwO2o9bSsxMnwwO249bSs4fDA7bD1tKzR8MDtrPW07Y1tnPj4yXT1hO2NbaD4+Ml09YjtjW2o+PjJdPWQ7Y1tuPj4yXT1lO2NbbD4+Ml09dmcoY1tjW2c+PjJdPj4yXXwwLGNbaD4+Ml18MCxrLGNbbj4+Ml18MCl8MDtpZihjW2w+PjJdfDApe2NbZj4+Ml09Y1tsPj4yXTtuPWNbZj4+Ml18MDtpPW07cmV0dXJuIG58MH1lbHNle249S0YoY1trPj4yXXwwLGNbaD4+Ml18MCxjW2c+PjJdfDApfDA7Y1tjW2o+PjJdPj4yXT1uO2NbZj4+Ml09MDtuPWNbZj4+Ml18MDtpPW07cmV0dXJuIG58MH1yZXR1cm4gMH1mdW5jdGlvbiBZRihhLGIsZil7YT1hfDA7Yj1ifDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MDtnPWk7aT1pKzE2fDA7az1nKzh8MDtqPWcrNHwwO2g9ZztjW2s+PjJdPWE7Y1tqPj4yXT1iO2NbaD4+Ml09ZjtVYltjWyhjW2s+PjJdfDApKzgwPj4yXSYyNTVdKGNbaz4+Ml18MCwoY1soY1trPj4yXXwwKSs1Nj4+Ml18MCkrKChlWyhjW2s+PjJdfDApKzIwPj4xXXwwKSYoKGRbKGNbKGNbaz4+Ml18MCkrNjQ+PjJdfDApKyhjW2o+PjJdPDwxKT4+MF18MCk8PDh8KGRbKGNbKGNbaz4+Ml18MCkrNjQ+PjJdfDApKyhjW2o+PjJdPDwxKSsxPj4wXXwwKSkpfDAsY1toPj4yXXwwKTtpPWc7cmV0dXJufWZ1bmN0aW9uIFpGKGIsZixnKXtiPWJ8MDtmPWZ8MDtnPWd8MDt2YXIgaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTA7cz1pO2k9aSs2NHwwO249cys1MnwwO289cys0OHwwO3A9cys0NHwwO3E9cys0MHwwO2g9cyszNnwwO3Q9cyszMnwwO3I9cysyOHwwO209cysyNHwwO2w9cysxNnwwO2s9cys4fDA7aj1zO2Nbbz4+Ml09YjtjW3A+PjJdPWY7Y1txPj4yXT1nO2NbaD4+Ml09KGNbcD4+Ml18MCkrKGRbY1twPj4yXT4+MF0mNjMpO2NbdD4+Ml09ZFsoY1twPj4yXXwwKSsxPj4wXTtkbyBzd2l0Y2goY1t0Pj4yXXwwKXtjYXNlIDE6e209YVtjW2g+PjJdPj4wXXwwO3Q9ajtjW3Q+PjJdPW07Y1t0KzQ+PjJdPSgobXwwKTwwKTw8MzE+PjMxO2JyZWFrfWNhc2UgMjp7bT1hW2NbaD4+Ml0+PjBdPDw4fGRbKGNbaD4+Ml18MCkrMT4+MF07dD1qO2NbdD4+Ml09bTtjW3QrND4+Ml09KChtfDApPDApPDwzMT4+MzE7YnJlYWt9Y2FzZSAzOnttPWFbY1toPj4yXT4+MF08PDE2fGRbKGNbaD4+Ml18MCkrMT4+MF08PDh8ZFsoY1toPj4yXXwwKSsyPj4wXTt0PWo7Y1t0Pj4yXT1tO2NbdCs0Pj4yXT0oKG18MCk8MCk8PDMxPj4zMTticmVha31jYXNlIDQ6e2NbbT4+Ml09ZFtjW2g+PjJdPj4wXTw8MjR8ZFsoY1toPj4yXXwwKSsxPj4wXTw8MTZ8ZFsoY1toPj4yXXwwKSsyPj4wXTw8OHxkWyhjW2g+PjJdfDApKzM+PjBdO209Y1ttPj4yXXwwO3Q9ajtjW3Q+PjJdPW07Y1t0KzQ+PjJdPSgobXwwKTwwKTw8MzE+PjMxO2JyZWFrfWNhc2UgNTp7bT1hW2NbaD4+Ml0+PjBdPDw4fGRbKGNbaD4+Ml18MCkrMT4+MF07dD1qO2NbdD4+Ml09UlIoZFsoY1toPj4yXXwwKSsyPj4wXTw8MjR8ZFsoY1toPj4yXXwwKSsyKzE+PjBdPDwxNnxkWyhjW2g+PjJdfDApKzIrMj4+MF08PDh8ZFsoY1toPj4yXXwwKSsyKzM+PjBdfDAsMCxhUygwLDEsbXwwLCgobXwwKTwwKTw8MzE+PjMxfDApfDAsQ3wwKXwwO2NbdCs0Pj4yXT1DO2JyZWFrfWNhc2UgNjp7dD1sO2NbdD4+Ml09ZFtjW2g+PjJdPj4wXTw8MjR8ZFsoY1toPj4yXXwwKSsxPj4wXTw8MTZ8ZFsoY1toPj4yXXwwKSsyPj4wXTw8OHxkWyhjW2g+PjJdfDApKzM+PjBdO2NbdCs0Pj4yXT0wO3Q9Y1tsPj4yXXwwO209bDtjW20+PjJdPWRbKGNbaD4+Ml18MCkrND4+MF08PDI0fGRbKGNbaD4+Ml18MCkrNCsxPj4wXTw8MTZ8ZFsoY1toPj4yXXwwKSs0KzI+PjBdPDw4fGRbKGNbaD4+Ml18MCkrNCszPj4wXTtjW20rND4+Ml09dDttPWNbbCs0Pj4yXXwwO3Q9ajtjW3Q+PjJdPWNbbD4+Ml07Y1t0KzQ+PjJdPW07YnJlYWt9Y2FzZSA4Ont0PWo7Y1t0Pj4yXT0wO2NbdCs0Pj4yXT0wO2JyZWFrfWNhc2UgOTp7dD1qO2NbdD4+Ml09MTtjW3QrND4+Ml09MDticmVha31jYXNlIDc6Y2FzZSAwOntjW24+PjJdPSRGKGNbbz4+Ml18MCxjW3A+PjJdfDAsY1txPj4yXXwwKXwwO3Q9Y1tuPj4yXXwwO2k9cztyZXR1cm4gdHwwfWRlZmF1bHQ6e2Nbbj4+Ml09JEYoY1tvPj4yXXwwLGNbcD4+Ml18MCxjW3E+PjJdfDApfDA7dD1jW24+PjJdfDA7aT1zO3JldHVybiB0fDB9fXdoaWxlKDApO3Q9Y1soY1txPj4yXXwwKSs0Pj4yXXwwO2c9Y1t0KzQ+PjJdfDA7bT1rO2NbbT4+Ml09Y1t0Pj4yXTtjW20rND4+Ml09ZzttPWs7Zz1jW20rND4+Ml18MDt0PWo7bD1jW3QrND4+Ml18MDtkbyBpZighKChnfDApPihsfDApfCgoZ3wwKT09KGx8MCk/KGNbbT4+Ml18MCk+Pj4wPihjW3Q+PjJdfDApPj4+MDowKSkpe209aztrPWNbbSs0Pj4yXXwwO3Q9ajtsPWNbdCs0Pj4yXXwwO2g9Y1txPj4yXXwwO2lmKChrfDApPChsfDApfCgoa3wwKT09KGx8MCk/KGNbbT4+Ml18MCk+Pj4wPChjW3Q+PjJdfDApPj4+MDowKSl7Y1tyPj4yXT1hW2grMTM+PjBdO2JyZWFrfWlmKChlW2grOD4+MV18MCk+MSl7Y1tyPj4yXT1hRyhjW28+PjJdfDAsY1twPj4yXXwwLGNbcT4+Ml18MCwxKXwwO2JyZWFrfWVsc2V7Y1tyPj4yXT1hWyhjW3E+PjJdfDApKzEwPj4wXTthWyhjW3E+PjJdfDApKzE0Pj4wXT0xO2JyZWFrfX1lbHNlIGNbcj4+Ml09YVsoY1txPj4yXXwwKSsxMj4+MF07d2hpbGUoMCk7Y1tuPj4yXT1jW3I+PjJdO3Q9Y1tuPj4yXXwwO2k9cztyZXR1cm4gdHwwfWZ1bmN0aW9uIF9GKGIsZixnKXtiPWJ8MDtmPWZ8MDtnPWd8MDt2YXIgaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MDtzPWk7aT1pKzQ4fDA7cT1zKzM2fDA7aj1zKzMyfDA7az1zKzI4fDA7bD1zKzI0fDA7bT1zKzIwfDA7aD1zKzE2fDA7cj1zKzEyfDA7bj1zKzh8MDtvPXMrNHwwO3A9cztjW2o+PjJdPWI7Y1trPj4yXT1mO2NbbD4+Ml09ZztjW20+PjJdPWNbaz4+Ml07Yj0oY1ttPj4yXXwwKSsxfDA7aWYoKGRbKGNbbT4+Ml18MCkrMT4+MF18MCk8MTI4KWNbaD4+Ml09ZFtiPj4wXTtlbHNlIGJHKGIsaCl8MDtkbyBpZigoY1toPj4yXXwwKT49MTIpe2lmKCEoY1toPj4yXSYxKSl7Y1tyPj4yXT1hWyhjW2w+PjJdfDApKzEzPj4wXTticmVha31jW3A+PjJdPWRbY1ttPj4yXT4+MF07Y1tvPj4yXT0oKGNbaD4+Ml18MCktMTJ8MCkvMnwwO2lmKCgoY1twPj4yXXwwKSsoY1tvPj4yXXwwKXwwKT4oY1tqPj4yXXwwKSl7cj0oUWooNzQ3NDIpfDApJjI1NTthWyhjW2w+PjJdfDApKzExPj4wXT1yO2NbcT4+Ml09MDtyPWNbcT4+Ml18MDtpPXM7cmV0dXJuIHJ8MH1pZigoY1soY1soY1tsPj4yXXwwKSs0Pj4yXXwwKSsxMj4+Ml18MCk8KGNbbz4+Ml18MCkpYj1jWyhjWyhjW2w+PjJdfDApKzQ+PjJdfDApKzEyPj4yXXwwO2Vsc2UgYj1jW28+PjJdfDA7Y1tuPj4yXT1iO2Nbcj4+Ml09ZVIoKGNbbT4+Ml18MCkrKGNbcD4+Ml18MCl8MCxjWyhjWyhjW2w+PjJdfDApKzQ+PjJdfDApKzE2Pj4yXXwwLGNbbj4+Ml18MCl8MDtpZihjW3I+PjJdfDApe2I9Y1tsPj4yXXwwO2lmKChjW3I+PjJdfDApPjApe2Nbcj4+Ml09YVtiKzEzPj4wXTticmVha31lbHNle2Nbcj4+Ml09YVtiKzEyPj4wXTticmVha319Y1tyPj4yXT0oY1tvPj4yXXwwKS0oY1soY1soY1tsPj4yXXwwKSs0Pj4yXXwwKSsxMj4+Ml18MCk7aWYoIShjW3I+PjJdfDApKWlmKChlWyhjW2w+PjJdfDApKzg+PjFdfDApPjEpe2Nbcj4+Ml09YUcoY1tqPj4yXXwwLGNbaz4+Ml18MCxjW2w+PjJdfDAsMSl8MDticmVha31lbHNle2Nbcj4+Ml09YVsoY1tsPj4yXXwwKSsxMD4+MF07YVsoY1tsPj4yXXwwKSsxND4+MF09MTticmVha31lbHNle2I9Y1tsPj4yXXwwO2lmKChjW3I+PjJdfDApPjApe2Nbcj4+Ml09YVtiKzEzPj4wXTticmVha31lbHNle2Nbcj4+Ml09YVtiKzEyPj4wXTticmVha319fWVsc2UgY1tyPj4yXT1hWyhjW2w+PjJdfDApKzEyPj4wXTt3aGlsZSgwKTtjW3E+PjJdPWNbcj4+Ml07cj1jW3E+PjJdfDA7aT1zO3JldHVybiByfDB9ZnVuY3Rpb24gJEYoYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTA7ZT1pO2k9aSsxNnwwO2g9ZSs4fDA7Zz1lKzR8MDtmPWU7Y1toPj4yXT1hO2NbZz4+Ml09YjtjW2Y+PjJdPWQ7ZD1hRyhjW2g+PjJdfDAsY1tnPj4yXXwwLGNbZj4+Ml18MCwwKXwwO2k9ZTtyZXR1cm4gZHwwfWZ1bmN0aW9uIGFHKGYsZyxqLGspe2Y9ZnwwO2c9Z3wwO2o9anwwO2s9a3wwO3ZhciBsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEQ9MCxFPTAsRj0wLEc9MCxIPTA7Rj1pO2k9aSsxMjh8MDtBPUYrMTI0fDA7bT1GKzEyMHwwO0g9RisxMTZ8MDtCPUYrMTEyfDA7Rz1GKzEwOHwwO289RisxMDR8MDtwPUYrMTAwfDA7ej1GKzk2fDA7cT1GKzkyfDA7RT1GKzg4fDA7dz1GKzg0fDA7RD1GKzgwfDA7bj1GKzc2fDA7cz1GKzE2fDA7bD1GKzcyfDA7eT1GKzY4fDA7cj1GKzh8MDt4PUY7dD1GKzY0fDA7dj1GKzYwfDA7dT1GKzU2fDA7Y1ttPj4yXT1mO2NbSD4+Ml09ZztjW0I+PjJdPWo7Y1tHPj4yXT1rO2NbRT4+Ml09MDtjW3c+PjJdPWNbKGNbQj4+Ml18MCkrND4+Ml07Y1tEPj4yXT1jW2NbQj4+Ml0+PjJdO2Nbbj4+Ml09Y1tIPj4yXTtmPWNbbj4+Ml18MDtkbyBpZihjW0c+PjJdfDApe2s9KGNbbj4+Ml18MCkrMXwwO2lmKChkW2YrMT4+MF18MCk8MTI4KXtjW2w+PjJdPWRbaz4+MF07az0xfWVsc2Ugaz0oYkcoayxsKXwwKSYyNTU7Y1txPj4yXT0xKyhrJjI1NSk7Y1t6Pj4yXT1kW2Nbbj4+Ml0+PjBdO0g9Y1t6Pj4yXXwwO2Nbbz4+Ml09SCsoY0coY1tsPj4yXXwwKXwwKTtjW3A+PjJdPTE7Y1t3Pj4yXT0oY1t3Pj4yXXwwKSs0MH1lbHNle2s9Y1tuPj4yXXwwO2lmKChkW2Y+PjBdfDApPDEyOCl7Y1t6Pj4yXT1kW2s+PjBdO2s9MX1lbHNlIGs9KGJHKGsseil8MCkmMjU1O2NbcT4+Ml09ayYyNTU7Y1tvPj4yXT1jW3o+PjJdO2lmKChjW28+PjJdfDApPj4+MDw9KGNbbT4+Ml18MCk+Pj4wKXtjW3A+PjJdPTA7YnJlYWt9SD0oUWooNzQ0NTIpfDApJjI1NTthWyhjW0I+PjJdfDApKzExPj4wXT1IO2NbQT4+Ml09MDtIPWNbQT4+Ml18MDtpPUY7cmV0dXJuIEh8MH13aGlsZSgwKTthOndoaWxlKDEpe2RvIGlmKGVbKGNbdz4+Ml18MCkrOD4+MV0mNCl7Y1t5Pj4yXT1kWyhjW24+PjJdfDApKyhjW3E+PjJdfDApPj4wXTtpZigoY1t5Pj4yXXwwKT4+PjA+PTEwKXtjW0U+PjJdPTE7YnJlYWt9aWYoIShjW3k+PjJdfDApKXtjW0U+PjJdPS0xO2JyZWFrfWlmKChjW3k+PjJdfDApPT03KXtkRygoY1tuPj4yXXwwKSsoY1tvPj4yXXwwKXwwLGNbeT4+Ml18MCxzKXwwO0g9Y1t3Pj4yXXwwO2NbRT4+Ml09MC0oZUcoY1tIPj4yXXwwLGNbSCs0Pj4yXXwwLCtoW3M+PjNdKXwwKTticmVha31qPWZHKGNbeT4+Ml18MCwoY1tuPj4yXXwwKSsoY1tvPj4yXXwwKXwwKXwwO0g9cjtjW0g+PjJdPWo7Y1tIKzQ+PjJdPUM7SD1jW3c+PjJdfDA7aj1jW0grND4+Ml18MDtHPXg7Y1tHPj4yXT1jW0g+PjJdO2NbRys0Pj4yXT1qO0c9cjtqPWNbRys0Pj4yXXwwO0g9eDtsPWNbSCs0Pj4yXXwwO2lmKChqfDApPChsfDApfCgoanwwKT09KGx8MCk/KGNbRz4+Ml18MCk+Pj4wPChjW0g+PjJdfDApPj4+MDowKSl7Y1tFPj4yXT0tMTticmVha31HPXI7aj1jW0crND4+Ml18MDtIPXg7bD1jW0grND4+Ml18MDtpZigoanwwKT4obHwwKXwoKGp8MCk9PShsfDApPyhjW0c+PjJdfDApPj4+MD4oY1tIPj4yXXwwKT4+PjA6MCkpY1tFPj4yXT0xfWVsc2V7aWYoZVsoY1t3Pj4yXXwwKSs4Pj4xXSY4KXtjW3k+PjJdPWRbKGNbbj4+Ml18MCkrKGNbcT4+Ml18MCk+PjBdO2lmKChjW3k+PjJdfDApPj4+MD49MTApe2NbRT4+Ml09MTticmVha31pZighKGNbeT4+Ml18MCkpe2NbRT4+Ml09LTE7YnJlYWt9ZEcoKGNbbj4+Ml18MCkrKGNbbz4+Ml18MCl8MCxjW3k+PjJdfDAscyl8MDtpZigoY1t5Pj4yXXwwKSE9Nyl7SD1zO2NbRT4+Ml09ZUcoY1tIPj4yXXwwLGNbSCs0Pj4yXXwwLCtoW2Nbdz4+Ml0+PjNdKXwwO2JyZWFrfWlmKCtoW3M+PjNdPCtoW2Nbdz4+Ml0+PjNdKXtjW0U+PjJdPS0xO2JyZWFrfWlmKCEoK2hbcz4+M10+K2hbY1t3Pj4yXT4+M10pKWJyZWFrO2NbRT4+Ml09MTticmVha31pZihlWyhjW3c+PjJdfDApKzg+PjFdJjIpe2s9KGNbbj4+Ml18MCkrKGNbcT4+Ml18MCl8MDtpZigoZFsoY1tuPj4yXXwwKSsoY1txPj4yXXwwKT4+MF18MCk8MTI4KWNbeT4+Ml09ZFtrPj4wXTtlbHNlIGJHKGsseSl8MDtpZigoY1t5Pj4yXXwwKT4+PjA8MTIpe2NbRT4+Ml09LTE7YnJlYWt9aWYoIShjW3k+PjJdJjEpKXtjW0U+PjJdPTE7YnJlYWt9Y1tzKzEyPj4yXT0oKChjW3k+PjJdfDApLTEyfDApPj4+MCkvMnwwO2lmKCgoY1tvPj4yXXwwKSsoY1tzKzEyPj4yXXwwKXwwKT4+PjA+KGNbbT4+Ml18MCk+Pj4wKXtrPTQzO2JyZWFrIGF9aWYoY1soY1tEPj4yXXwwKSsyMCsoY1twPj4yXTw8Mik+PjJdfDApe2FbcysxMD4+MF09YVsoY1tEPj4yXXwwKSs0Pj4wXXwwO2NbcyszMj4+Ml09Y1soY1tEPj4yXXwwKSsxMj4+Ml07YltzKzg+PjFdPTI7Y1tzKzE2Pj4yXT0oY1tuPj4yXXwwKSsoY1tvPj4yXXwwKTtjW0U+PjJdPWdHKHMsY1t3Pj4yXXwwLGNbKGNbRD4+Ml18MCkrMjArKGNbcD4+Ml08PDIpPj4yXXwwLChjW0I+PjJdfDApKzExfDApfDA7YnJlYWt9aWYoKGNbcysxMj4+Ml18MCk8KGNbKGNbdz4+Ml18MCkrMTI+PjJdfDApKWs9Y1tzKzEyPj4yXXwwO2Vsc2Ugaz1jWyhjW3c+PjJdfDApKzEyPj4yXXwwO2NbdD4+Ml09aztjW0U+PjJdPWVSKChjW24+PjJdfDApKyhjW28+PjJdfDApfDAsY1soY1t3Pj4yXXwwKSsxNj4+Ml18MCxjW3Q+PjJdfDApfDA7aWYoY1tFPj4yXXwwKWJyZWFrO2NbRT4+Ml09KGNbcysxMj4+Ml18MCktKGNbKGNbdz4+Ml18MCkrMTI+PjJdfDApO2JyZWFrfWs9ZFsoY1tuPj4yXXwwKSsoY1txPj4yXXwwKT4+MF18MDtpZighKGVbKGNbdz4+Ml18MCkrOD4+MV0mMTYpKXtjW3k+PjJdPWs7Y1tFPj4yXT0oY1t5Pj4yXXwwKSE9MCYxO2JyZWFrfWY9KGNbbj4+Ml18MCkrKGNbcT4+Ml18MCl8MDtpZigoa3wwKTwxMjgpY1t5Pj4yXT1kW2Y+PjBdO2Vsc2UgYkcoZix5KXwwO2lmKChjW3k+PjJdfDApPj4+MD49MTI/KGNbeT4+Ml0mMXwwKT09MDowKXtjW3Y+PjJdPSgoKGNbeT4+Ml18MCktMTJ8MCk+Pj4wKS8yfDA7aWYoKChjW28+PjJdfDApKyhjW3Y+PjJdfDApfDApPj4+MD4oY1ttPj4yXXwwKT4+PjApe2s9NTk7YnJlYWsgYX1pZihlWyhjW3c+PjJdfDApKzg+PjFdJjE2Mzg0KWlmKGhHKChjW24+PjJdfDApKyhjW28+PjJdfDApfDAsY1t2Pj4yXXwwKXwwKXtjW0U+PjJdPShjW3Y+PjJdfDApLShjW2Nbdz4+Ml0+PjJdfDApO2JyZWFrfWVsc2V7Y1tFPj4yXT0xO2JyZWFrfWlmKChjW3Y+PjJdfDApPChjWyhjW3c+PjJdfDApKzEyPj4yXXwwKSlrPWNbdj4+Ml18MDtlbHNlIGs9Y1soY1t3Pj4yXXwwKSsxMj4+Ml18MDtjW3U+PjJdPWs7Y1tFPj4yXT1lUigoY1tuPj4yXXwwKSsoY1tvPj4yXXwwKXwwLGNbKGNbdz4+Ml18MCkrMTY+PjJdfDAsY1t1Pj4yXXwwKXwwO2lmKGNbRT4+Ml18MClicmVhaztjW0U+PjJdPShjW3Y+PjJdfDApLShjWyhjW3c+PjJdfDApKzEyPj4yXXwwKTticmVha31jW0U+PjJdPS0xfXdoaWxlKDApO2Y9Y1twPj4yXXwwO2lmKGNbRT4+Ml18MCl7az03MTticmVha31jW3A+PjJdPWYrMTtjW3c+PjJdPShjW3c+PjJdfDApKzQwO0g9Y0coY1t5Pj4yXXwwKXwwO2Nbbz4+Ml09KGNbbz4+Ml18MCkrSDtIPWlHKGNbeT4+Ml18MCwwKXwwO2NbcT4+Ml09KGNbcT4+Ml18MCkrSDtpZigoY1txPj4yXXwwKT4+PjA+PShjW3o+PjJdfDApPj4+MCl7az03NzticmVha31pZigoY1twPj4yXXwwKT49KGVbKGNbQj4+Ml18MCkrOD4+MV18MCkpe2s9Nzc7YnJlYWt9aWYoKGNbbz4+Ml18MCk+Pj4wPihjW20+PjJdfDApPj4+MCl7az03NzticmVha319aWYoKGt8MCk9PTQzKXtIPShRaig3NDUyNyl8MCkmMjU1O2FbKGNbQj4+Ml18MCkrMTE+PjBdPUg7Y1tBPj4yXT0wO0g9Y1tBPj4yXXwwO2k9RjtyZXR1cm4gSHwwfWVsc2UgaWYoKGt8MCk9PTU5KXtIPShRaig3NDU1Nyl8MCkmMjU1O2FbKGNbQj4+Ml18MCkrMTE+PjBdPUg7Y1tBPj4yXT0wO0g9Y1tBPj4yXXwwO2k9RjtyZXR1cm4gSHwwfWVsc2UgaWYoKGt8MCk9PTcxKXtpZihhWyhjWyhjW0Q+PjJdfDApKzE2Pj4yXXwwKStmPj4wXXwwKWNbRT4+Ml09MC0oY1tFPj4yXXwwKTtjW0E+PjJdPWNbRT4+Ml07SD1jW0E+PjJdfDA7aT1GO3JldHVybiBIfDB9ZWxzZSBpZigoa3wwKT09Nzcpe2FbKGNbQj4+Ml18MCkrMTQ+PjBdPTE7Y1tBPj4yXT1hWyhjW0I+PjJdfDApKzEwPj4wXTtIPWNbQT4+Ml18MDtpPUY7cmV0dXJuIEh8MH1yZXR1cm4gMH1mdW5jdGlvbiBiRyhiLGUpe2I9YnwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wO249aTtpPWkrMzJ8MDtmPW4rMjV8MDtnPW4rMjB8MDtoPW4rMTZ8MDtqPW4rMTJ8MDtrPW4rOHwwO209bjtsPW4rMjR8MDtjW2c+PjJdPWI7Y1toPj4yXT1lO2Nbaj4+Ml09ZFtjW2c+PjJdPj4wXTtjW2c+PjJdPShjW2c+PjJdfDApKzE7Y1trPj4yXT1kW2NbZz4+Ml0+PjBdO2lmKCEoY1trPj4yXSYxMjgpKXtjW2o+PjJdPWNbaj4+Ml0mMTI3O2Nbaj4+Ml09Y1tqPj4yXTw8NztjW2NbaD4+Ml0+PjJdPWNbaj4+Ml18Y1trPj4yXTthW2Y+PjBdPTI7bT1hW2Y+PjBdfDA7aT1uO3JldHVybiBtfDB9Y1tnPj4yXT0oY1tnPj4yXXwwKSsxO2Nbaj4+Ml09Y1tqPj4yXTw8MTQ7Y1tqPj4yXT1jW2o+PjJdfChkW2NbZz4+Ml0+PjBdfDApO2lmKCEoY1tqPj4yXSYxMjgpKXtjW2o+PjJdPWNbaj4+Ml0mMjA4MDg5NTtjW2s+PjJdPWNbaz4+Ml0mMTI3O2Nbaz4+Ml09Y1trPj4yXTw8NztjW2NbaD4+Ml0+PjJdPWNbaj4+Ml18Y1trPj4yXTthW2Y+PjBdPTM7bT1hW2Y+PjBdfDA7aT1uO3JldHVybiBtfDB9Y1tnPj4yXT0oY1tnPj4yXXwwKSstMjthW2w+PjBdPWN1KGNbZz4+Ml18MCxtKXwwO2U9bTtpZigwIT0oY1tlKzQ+PjJdfDApPzE6KGNbbT4+Ml18MCkhPShjW2U+PjJdfDApKWNbY1toPj4yXT4+Ml09LTE7ZWxzZSBjW2NbaD4+Ml0+PjJdPWNbbT4+Ml07YVtmPj4wXT1hW2w+PjBdfDA7bT1hW2Y+PjBdfDA7aT1uO3JldHVybiBtfDB9ZnVuY3Rpb24gY0coYSl7YT1hfDA7dmFyIGI9MCxlPTAsZj0wO2U9aTtpPWkrMTZ8MDtiPWUrNHwwO2Y9ZTtjW2Y+PjJdPWE7YT1jW2Y+PjJdfDA7aWYoKGNbZj4+Ml18MCk+Pj4wPj0xMjgpe2NbYj4+Ml09KChhLTEyfDApPj4+MCkvMnwwO2Y9Y1tiPj4yXXwwO2k9ZTtyZXR1cm4gZnwwfWVsc2V7Y1tiPj4yXT1kWzM1MDYxK2E+PjBdO2Y9Y1tiPj4yXXwwO2k9ZTtyZXR1cm4gZnwwfXJldHVybiAwfWZ1bmN0aW9uIGRHKGUsZixnKXtlPWV8MDtmPWZ8MDtnPWd8MDt2YXIgaD0wLGo9MCxrPTAsbD0wLG09MDttPWk7aT1pKzE2fDA7aD1tKzEyfDA7aj1tKzh8MDtrPW0rNHwwO2w9bTtjW2o+PjJdPWU7Y1trPj4yXT1mO2NbbD4+Ml09Zztzd2l0Y2goY1trPj4yXXwwKXtjYXNlIDA6Y2FzZSAxMTpjYXNlIDEwOntiWyhjW2w+PjJdfDApKzg+PjFdPTE7Y1toPj4yXT0wO2Y9Y1toPj4yXXwwO2k9bTtyZXR1cm4gZnwwfWNhc2UgMTp7Zz1hW2Nbaj4+Ml0+PjBdfDA7Zj1jW2w+PjJdfDA7Y1tmPj4yXT1nO2NbZis0Pj4yXT0oKGd8MCk8MCk8PDMxPj4zMTtiWyhjW2w+PjJdfDApKzg+PjFdPTQ7Y1toPj4yXT0xO2Y9Y1toPj4yXXwwO2k9bTtyZXR1cm4gZnwwfWNhc2UgMjp7Zz1hW2Nbaj4+Ml0+PjBdPDw4fGRbKGNbaj4+Ml18MCkrMT4+MF07Zj1jW2w+PjJdfDA7Y1tmPj4yXT1nO2NbZis0Pj4yXT0oKGd8MCk8MCk8PDMxPj4zMTtiWyhjW2w+PjJdfDApKzg+PjFdPTQ7Y1toPj4yXT0yO2Y9Y1toPj4yXXwwO2k9bTtyZXR1cm4gZnwwfWNhc2UgMzp7Zz1hW2Nbaj4+Ml0+PjBdPDwxNnxkWyhjW2o+PjJdfDApKzE+PjBdPDw4fGRbKGNbaj4+Ml18MCkrMj4+MF07Zj1jW2w+PjJdfDA7Y1tmPj4yXT1nO2NbZis0Pj4yXT0oKGd8MCk8MCk8PDMxPj4zMTtiWyhjW2w+PjJdfDApKzg+PjFdPTQ7Y1toPj4yXT0zO2Y9Y1toPj4yXXwwO2k9bTtyZXR1cm4gZnwwfWNhc2UgNDp7Zz1hW2Nbaj4+Ml0+PjBdPDwyNHxkWyhjW2o+PjJdfDApKzE+PjBdPDwxNnxkWyhjW2o+PjJdfDApKzI+PjBdPDw4fGRbKGNbaj4+Ml18MCkrMz4+MF07Zj1jW2w+PjJdfDA7Y1tmPj4yXT1nO2NbZis0Pj4yXT0oKGd8MCk8MCk8PDMxPj4zMTtiWyhjW2w+PjJdfDApKzg+PjFdPTQ7Y1toPj4yXT00O2Y9Y1toPj4yXXwwO2k9bTtyZXR1cm4gZnwwfWNhc2UgNTp7Zj1kWyhjW2o+PjJdfDApKzI+PjBdPDwyNHxkWyhjW2o+PjJdfDApKzIrMT4+MF08PDE2fGRbKGNbaj4+Ml18MCkrMisyPj4wXTw8OHxkWyhjW2o+PjJdfDApKzIrMz4+MF07Zz1hW2Nbaj4+Ml0+PjBdPDw4fGRbKGNbaj4+Ml18MCkrMT4+MF07Zz1SUihmfDAsMCxhUygwLDEsZ3wwLCgoZ3wwKTwwKTw8MzE+PjMxfDApfDAsQ3wwKXwwO2Y9Y1tsPj4yXXwwO2NbZj4+Ml09ZztjW2YrND4+Ml09QztiWyhjW2w+PjJdfDApKzg+PjFdPTQ7Y1toPj4yXT02O2Y9Y1toPj4yXXwwO2k9bTtyZXR1cm4gZnwwfWNhc2UgNzpjYXNlIDY6e2NbaD4+Ml09cEcoY1tqPj4yXXwwLGNbaz4+Ml18MCxjW2w+PjJdfDApfDA7Zj1jW2g+PjJdfDA7aT1tO3JldHVybiBmfDB9Y2FzZSA5OmNhc2UgODp7Zj1jW2w+PjJdfDA7Y1tmPj4yXT0oY1trPj4yXXwwKS04O2NbZis0Pj4yXT0wO2JbKGNbbD4+Ml18MCkrOD4+MV09NDtjW2g+PjJdPTA7Zj1jW2g+PjJdfDA7aT1tO3JldHVybiBmfDB9ZGVmYXVsdDp7Y1soY1tsPj4yXXwwKSsxNj4+Ml09Y1tqPj4yXTtjWyhjW2w+PjJdfDApKzEyPj4yXT0oKChjW2s+PjJdfDApLTEyfDApPj4+MCkvMnwwO2JbKGNbbD4+Ml18MCkrOD4+MV09YlsxNDU5MCsoKGNbaz4+Ml0mMSk8PDEpPj4xXXwwO2NbaD4+Ml09Y1soY1tsPj4yXXwwKSsxMj4+Ml07Zj1jW2g+PjJdfDA7aT1tO3JldHVybiBmfDB9fXJldHVybiAwfWZ1bmN0aW9uIGVHKGEsYixkKXthPWF8MDtiPWJ8MDtkPStkO3ZhciBlPTAsZj0wLGc9MCxqPTAsaz0wLGw9MCxtPTAsbj0wO2w9aTtpPWkrNDh8MDtlPWwrMzJ8MDtmPWwrMjR8MDtnPWwrMTZ8MDtrPWwrOHwwO2o9bDttPWY7Y1ttPj4yXT1hO2NbbSs0Pj4yXT1iO2hbZz4+M109ZDtpZigraFtnPj4zXTwtOTIyMzM3MjAzNjg1NDc3NTgwOC4wKXtjW2U+PjJdPTE7bT1jW2U+PjJdfDA7aT1sO3JldHVybiBtfDB9aWYoK2hbZz4+M10+OTIyMzM3MjAzNjg1NDc3NTgwOC4wKXtjW2U+PjJdPS0xO209Y1tlPj4yXXwwO2k9bDtyZXR1cm4gbXwwfWQ9K2hbZz4+M107bj0rTihkKT49MS4wPyhkPjAuMD9+fiskKCtNKGQvNDI5NDk2NzI5Ni4wKSw0Mjk0OTY3Mjk1LjApPj4+MDp+fitaKChkLSsofn5kPj4+MCkpLzQyOTQ5NjcyOTYuMCk+Pj4wKTowO2I9aztjW2I+PjJdPX5+ZD4+PjA7Y1tiKzQ+PjJdPW47Yj1mO249Y1tiKzQ+PjJdfDA7bT1rO2E9Y1ttKzQ+PjJdfDA7aWYoKG58MCk8KGF8MCl8KChufDApPT0oYXwwKT8oY1tiPj4yXXwwKT4+PjA8KGNbbT4+Ml18MCk+Pj4wOjApKXtjW2U+PjJdPS0xO249Y1tlPj4yXXwwO2k9bDtyZXR1cm4gbnwwfW09ZjthPWNbbSs0Pj4yXXwwO249aztiPWNbbis0Pj4yXXwwO2lmKChhfDApPihifDApfCgoYXwwKT09KGJ8MCk/KGNbbT4+Ml18MCk+Pj4wPihjW24+PjJdfDApPj4+MDowKSl7bj1rO2lmKCgoY1tuPj4yXXwwKT09MD8oY1tuKzQ+PjJdfDApPT0tMjE0NzQ4MzY0ODowKSYraFtnPj4zXT4wLjApe2NbZT4+Ml09LTE7bj1jW2U+PjJdfDA7aT1sO3JldHVybiBufDB9ZWxzZXtjW2U+PjJdPTE7bj1jW2U+PjJdfDA7aT1sO3JldHVybiBufDB9fW49ZjtoW2o+PjNdPSsoKGNbbj4+Ml18MCk+Pj4wKSs0Mjk0OTY3Mjk2LjAqKyhjW24rND4+Ml18MCk7aWYoK2hbaj4+M108K2hbZz4+M10pe2NbZT4+Ml09LTE7bj1jW2U+PjJdfDA7aT1sO3JldHVybiBufDB9aWYoK2hbaj4+M10+K2hbZz4+M10pe2NbZT4+Ml09MTtuPWNbZT4+Ml18MDtpPWw7cmV0dXJuIG58MH1lbHNle2NbZT4+Ml09MDtuPWNbZT4+Ml18MDtpPWw7cmV0dXJuIG58MH1yZXR1cm4gMH1mdW5jdGlvbiBmRyhiLGUpe2I9YnwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MDtsPWk7aT1pKzMyfDA7Zj1sKzh8MDtnPWwrMjR8MDtoPWwrMjB8MDtrPWwrMTZ8MDtqPWw7Y1tnPj4yXT1iO2NbaD4+Ml09ZTtzd2l0Y2goY1tnPj4yXXwwKXtjYXNlIDE6Y2FzZSAwOntqPWFbY1toPj4yXT4+MF18MDtrPWY7Y1trPj4yXT1qO2Nbays0Pj4yXT0oKGp8MCk8MCk8PDMxPj4zMTticmVha31jYXNlIDI6e2o9YVtjW2g+PjJdPj4wXTw8OHxkWyhjW2g+PjJdfDApKzE+PjBdO2s9ZjtjW2s+PjJdPWo7Y1trKzQ+PjJdPSgoanwwKTwwKTw8MzE+PjMxO2JyZWFrfWNhc2UgMzp7aj1hW2NbaD4+Ml0+PjBdPDwxNnxkWyhjW2g+PjJdfDApKzE+PjBdPDw4fGRbKGNbaD4+Ml18MCkrMj4+MF07az1mO2Nbaz4+Ml09ajtjW2srND4+Ml09KChqfDApPDApPDwzMT4+MzE7YnJlYWt9Y2FzZSA0OntjW2s+PjJdPWRbY1toPj4yXT4+MF08PDI0fGRbKGNbaD4+Ml18MCkrMT4+MF08PDE2fGRbKGNbaD4+Ml18MCkrMj4+MF08PDh8ZFsoY1toPj4yXXwwKSszPj4wXTtqPWNbaz4+Ml18MDtrPWY7Y1trPj4yXT1qO2Nbays0Pj4yXT0oKGp8MCk8MCk8PDMxPj4zMTticmVha31jYXNlIDU6e2I9ZFsoY1toPj4yXXwwKSsyPj4wXTw8MjR8ZFsoY1toPj4yXXwwKSsyKzE+PjBdPDwxNnxkWyhjW2g+PjJdfDApKzIrMj4+MF08PDh8ZFsoY1toPj4yXXwwKSsyKzM+PjBdO2o9YVtjW2g+PjJdPj4wXTw8OHxkWyhjW2g+PjJdfDApKzE+PjBdO2s9ZjtjW2s+PjJdPVJSKGJ8MCwwLGFTKDAsMSxqfDAsKChqfDApPDApPDwzMT4+MzF8MCl8MCxDfDApfDA7Y1trKzQ+PjJdPUM7YnJlYWt9Y2FzZSA2OntrPWo7Y1trPj4yXT1kW2NbaD4+Ml0+PjBdPDwyNHxkWyhjW2g+PjJdfDApKzE+PjBdPDwxNnxkWyhjW2g+PjJdfDApKzI+PjBdPDw4fGRbKGNbaD4+Ml18MCkrMz4+MF07Y1trKzQ+PjJdPTA7az1jW2o+PjJdfDA7Yj1qO2NbYj4+Ml09ZFsoY1toPj4yXXwwKSs0Pj4wXTw8MjR8ZFsoY1toPj4yXXwwKSs0KzE+PjBdPDwxNnxkWyhjW2g+PjJdfDApKzQrMj4+MF08PDh8ZFsoY1toPj4yXXwwKSs0KzM+PjBdO2NbYis0Pj4yXT1rO2I9ajtqPWNbYis0Pj4yXXwwO2s9ZjtjW2s+PjJdPWNbYj4+Ml07Y1trKzQ+PjJdPWo7YnJlYWt9ZGVmYXVsdDp7az1mO2Nbaz4+Ml09KGNbZz4+Ml18MCktODtjW2srND4+Ml09MH19az1mO0M9Y1trKzQ+PjJdfDA7aT1sO3JldHVybiBjW2s+PjJdfDB9ZnVuY3Rpb24gZ0coYixlLGYsZyl7Yj1ifDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7dmFyIGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MDt1PWk7aT1pKzEyOHwwO2g9dSsxMTZ8MDtqPXUrMTEyfDA7az11KzEwOHwwO2w9dSsxMDR8MDttPXUrMTAwfDA7cj11Kzk2fDA7cz11KzkyfDA7dD11Kzg4fDA7cD11Kzg0fDA7cT11KzgwfDA7bj11KzQwfDA7bz11O2Nbaj4+Ml09YjtjW2s+PjJdPWU7Y1tsPj4yXT1mO2NbbT4+Ml09ZztpZigoZFsoY1tqPj4yXXwwKSsxMD4+MF18MHwwKT09KGRbKGNbbD4+Ml18MCkrND4+MF18MHwwKSl7Y1toPj4yXT1aYltjWyhjW2w+PjJdfDApKzEyPj4yXSYyNTVdKGNbKGNbbD4+Ml18MCkrOD4+Ml18MCxjWyhjW2o+PjJdfDApKzEyPj4yXXwwLGNbKGNbaj4+Ml18MCkrMTY+PjJdfDAsY1soY1trPj4yXXwwKSsxMj4+Ml18MCxjWyhjW2s+PjJdfDApKzE2Pj4yXXwwKXwwO3Q9Y1toPj4yXXwwO2k9dTtyZXR1cm4gdHwwfWpHKG4sY1soY1tqPj4yXXwwKSszMj4+Ml18MCwxKTtqRyhvLGNbKGNbaj4+Ml18MCkrMzI+PjJdfDAsMSk7a0cobixjW2o+PjJdfDAsNDA5Nik7a0cobyxjW2s+PjJdfDAsNDA5Nik7Y1tzPj4yXT1aZyhuLGFbKGNbbD4+Ml18MCkrND4+MF18MCl8MDtjW3A+PjJdPShjW3M+PjJdfDApPT0wPzA6Y1tuKzEyPj4yXXwwO2NbdD4+Ml09WmcobyxhWyhjW2w+PjJdfDApKzQ+PjBdfDApfDA7Y1txPj4yXT0oY1t0Pj4yXXwwKT09MD8wOmNbbysxMj4+Ml18MDtjW3I+PjJdPVpiW2NbKGNbbD4+Ml18MCkrMTI+PjJdJjI1NV0oY1soY1tsPj4yXXwwKSs4Pj4yXXwwLGNbcD4+Ml18MCxjW3M+PjJdfDAsY1txPj4yXXwwLGNbdD4+Ml18MCl8MDtpZigoKGNbcz4+Ml18MCk9PTB8KGNbdD4+Ml18MCk9PTApJihjW20+PjJdfDApIT0wKWFbY1ttPj4yXT4+MF09NztYZyhuKTtYZyhvKTtjW2g+PjJdPWNbcj4+Ml07dD1jW2g+PjJdfDA7aT11O3JldHVybiB0fDB9ZnVuY3Rpb24gaEcoYixkKXtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MDtqPWk7aT1pKzE2fDA7aD1qKzEyfDA7ZT1qKzh8MDtmPWorNHwwO2c9ajtjW2U+PjJdPWI7Y1tmPj4yXT1kO2NbZz4+Ml09MDt3aGlsZSgxKXtpZigoY1tnPj4yXXwwKT49KGNbZj4+Ml18MCkpe2U9NjticmVha31pZihhWyhjW2U+PjJdfDApKyhjW2c+PjJdfDApPj4wXXwwKXtlPTQ7YnJlYWt9Y1tnPj4yXT0oY1tnPj4yXXwwKSsxfWlmKChlfDApPT00KXtjW2g+PjJdPTA7aD1jW2g+PjJdfDA7aT1qO3JldHVybiBofDB9ZWxzZSBpZigoZXwwKT09Nil7Y1toPj4yXT0xO2g9Y1toPj4yXXwwO2k9ajtyZXR1cm4gaHwwfXJldHVybiAwfWZ1bmN0aW9uIGlHKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MDtmPWk7aT1pKzE2fDA7ZD1mO2U9Zis4fDA7Zz1kO2NbZz4+Ml09YTtjW2crND4+Ml09YjtjW2U+PjJdPTE7d2hpbGUoMSl7Yj1kO2I9U1IoY1tiPj4yXXwwLGNbYis0Pj4yXXwwLDcpfDA7Zz1DO2E9ZDtjW2E+PjJdPWI7Y1thKzQ+PjJdPWc7YT1jW2U+PjJdfDA7aWYoISgoYnwwKSE9MHwoZ3wwKSE9MCkpYnJlYWs7Y1tlPj4yXT1hKzF9aT1mO3JldHVybiBhfDB9ZnVuY3Rpb24gakcoYSxkLGUpe2E9YXwwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTA7Zj1pO2k9aSsxNnwwO2c9Zis0fDA7aD1mO2o9Zis4fDA7Y1tnPj4yXT1hO2NbaD4+Ml09ZDtiW2o+PjFdPWU7YlsoY1tnPj4yXXwwKSs4Pj4xXT1iW2o+PjFdfDA7Y1soY1tnPj4yXXwwKSszMj4+Ml09Y1toPj4yXTtjWyhjW2c+PjJdfDApKzI0Pj4yXT0wO2k9ZjtyZXR1cm59ZnVuY3Rpb24ga0coYSxkLGYpe2E9YXwwO2Q9ZHwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTA7az1pO2k9aSsxNnwwO2c9ays4fDA7aD1rKzR8MDtqPWs7Y1tnPj4yXT1hO2NbaD4+Ml09ZDtjW2o+PjJdPWY7ZD1jW2c+PjJdfDA7aWYoKGVbKGNbZz4+Ml18MCkrOD4+MV18MCkmOTMxMil7bEcoZCxjW2g+PjJdfDAsY1tqPj4yXXwwKTtpPWs7cmV0dXJufWY9Y1toPj4yXXwwO2NbZD4+Ml09Y1tmPj4yXTtjW2QrND4+Ml09Y1tmKzQ+PjJdO2NbZCs4Pj4yXT1jW2YrOD4+Ml07Y1tkKzEyPj4yXT1jW2YrMTI+PjJdO2NbZCsxNj4+Ml09Y1tmKzE2Pj4yXTtpZigoZVsoY1toPj4yXXwwKSs4Pj4xXXwwKSYyMDQ4KXtpPWs7cmV0dXJufWg9KGNbZz4+Ml18MCkrOHwwO2JbaD4+MV09KGVbaD4+MV18MCkmLTcxNjk7aD0oY1tnPj4yXXwwKSs4fDA7YltoPj4xXT1lW2g+PjFdfDB8Y1tqPj4yXTtpPWs7cmV0dXJufWZ1bmN0aW9uIGxHKGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wO2U9aTtpPWkrMTZ8MDtoPWUrOHwwO2c9ZSs0fDA7Zj1lO2NbaD4+Ml09YTtjW2c+PjJdPWI7Y1tmPj4yXT1kO21HKGNbaD4+Ml18MCk7a0coY1toPj4yXXwwLGNbZz4+Ml18MCxjW2Y+PjJdfDApO2k9ZTtyZXR1cm59ZnVuY3Rpb24gbUcoYSl7YT1hfDA7dmFyIGQ9MCxmPTAsZz0wLGg9MDtoPWk7aT1pKzE2fDA7Zj1oKzR8MDtnPWg7Y1tmPj4yXT1hO2lmKChlWyhjW2Y+PjJdfDApKzg+PjFdfDApJjgxOTIpbkcoY1tmPj4yXXwwLGNbY1tmPj4yXT4+Ml18MCl8MDthPWNbZj4+Ml18MDtkbyBpZighKChlWyhjW2Y+PjJdfDApKzg+PjFdfDApJjEwMjQpKXtkPWNbZj4+Ml18MDtpZigoZVthKzg+PjFdfDApJjMyKXtvRyhjW2Q+PjJdfDApO2JyZWFrfWlmKChlW2QrOD4+MV18MCkmNjQpe2NbZz4+Ml09Y1tjW2Y+PjJdPj4yXTtjWyhjW2c+PjJdfDApKzQ+PjJdPWNbKGNbY1tnPj4yXT4+Ml18MCkrMTg4Pj4yXTtjWyhjW2NbZz4+Ml0+PjJdfDApKzE4OD4+Ml09Y1tnPj4yXX19ZWxzZSBRYltjW2ErMzY+PjJdJjI1NV0oY1soY1tmPj4yXXwwKSsxNj4+Ml18MCk7d2hpbGUoMCk7YlsoY1tmPj4yXXwwKSs4Pj4xXT0xO2k9aDtyZXR1cm59ZnVuY3Rpb24gbkcoYSxkKXthPWF8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTA7az1pO2k9aSs5NnwwO2Y9ays4MHwwO2c9ays3NnwwO2o9ays3MnwwO2g9ays0MHwwO2U9aztjW2Y+PjJdPWE7Y1tnPj4yXT1kO2Nbaj4+Ml09MDtpZighKGNbZz4+Ml18MCkpe2o9Y1tqPj4yXXwwO2k9aztyZXR1cm4ganwwfWlmKCEoY1soY1tnPj4yXXwwKSsxNj4+Ml18MCkpe2o9Y1tqPj4yXXwwO2k9aztyZXR1cm4ganwwfTtjW2g+PjJdPTA7Y1toKzQ+PjJdPTA7Y1toKzg+PjJdPTA7Y1toKzEyPj4yXT0wO2NbaCsxNj4+Ml09MDtjW2grMjA+PjJdPTA7Y1toKzI0Pj4yXT0wO2NbaCsyOD4+Ml09MDtkPWU7YT1kKzQwfDA7ZG97Y1tkPj4yXT0wO2Q9ZCs0fDB9d2hpbGUoKGR8MCk8KGF8MCkpO2JbZSs4Pj4xXT0xO2NbZSszMj4+Ml09Y1soY1tmPj4yXXwwKSszMj4+Ml07Y1toPj4yXT1lO2NbaCs4Pj4yXT1jW2Y+PjJdO2NbaCs0Pj4yXT1jW2c+PjJdO1FiW2NbKGNbZz4+Ml18MCkrMTY+PjJdJjI1NV0oaCk7aWYoKGNbKGNbZj4+Ml18MCkrMjQ+PjJdfDApPjApVGYoY1soY1tmPj4yXXwwKSszMj4+Ml18MCxjWyhjW2Y+PjJdfDApKzIwPj4yXXwwKTtkPWNbZj4+Ml18MDthPWQrNDB8MDtkb3tjW2Q+PjJdPWNbZT4+Ml07ZD1kKzR8MDtlPWUrNHwwfXdoaWxlKChkfDApPChhfDApKTtjW2o+PjJdPWNbaCsyMD4+Ml07aj1jW2o+PjJdfDA7aT1rO3JldHVybiBqfDB9ZnVuY3Rpb24gb0coYSl7YT1hfDA7dmFyIGQ9MCxlPTAsZj0wLGc9MDtnPWk7aT1pKzE2fDA7ZD1nKzh8MDtlPWcrNHwwO2Y9ZztjW2Q+PjJdPWE7Y1tlPj4yXT1jW2NbZD4+Ml0+PjJdO3doaWxlKDEpe2lmKCEoY1tlPj4yXXwwKSlicmVhaztjW2Y+PjJdPWNbY1tlPj4yXT4+Ml07VGYoY1soY1tkPj4yXXwwKSs0Pj4yXXwwLGNbZT4+Ml18MCk7Y1tlPj4yXT1jW2Y+PjJdfWNbY1tkPj4yXT4+Ml09MDtiWyhjW2Q+PjJdfDApKzI0Pj4xXT0wO2NbKGNbZD4+Ml18MCkrOD4+Ml09MDtjWyhjW2Q+PjJdfDApKzEyPj4yXT0wO2NbKGNbZD4+Ml18MCkrMjA+PjJdPTA7YlsoY1tkPj4yXXwwKSsyNj4+MV09MTtpPWc7cmV0dXJufWZ1bmN0aW9uIHBHKGEsZSxmKXthPWF8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGo9MCxrPTAsbD0wLG09MCxuPTA7az1pO2k9aSszMnwwO249aysyMHwwO2w9aysxNnwwO2c9aysxMnwwO2o9azttPWsrOHwwO2Nbbj4+Ml09YTtjW2w+PjJdPWU7Y1tnPj4yXT1mO2Y9ajtjW2Y+PjJdPShkW2Nbbj4+Ml0+PjBdfDApPDwyNHwoZFsoY1tuPj4yXXwwKSsxPj4wXXwwKTw8MTZ8KGRbKGNbbj4+Ml18MCkrMj4+MF18MCk8PDh8KGRbKGNbbj4+Ml18MCkrMz4+MF18MCk7Y1tmKzQ+PjJdPTA7Y1ttPj4yXT0oZFsoY1tuPj4yXXwwKSs0Pj4wXXwwKTw8MjR8KGRbKGNbbj4+Ml18MCkrNCsxPj4wXXwwKTw8MTZ8KGRbKGNbbj4+Ml18MCkrNCsyPj4wXXwwKTw8OHwoZFsoY1tuPj4yXXwwKSs0KzM+PjBdfDApO2Y9UlIoMCxjW2o+PjJdfDAsY1ttPj4yXXwwLDApfDA7ZT1qO2NbZT4+Ml09ZjtjW2UrND4+Ml09QztpZigoY1tsPj4yXXwwKT09Nil7bD1qO209Y1tsKzQ+PjJdfDA7bj1jW2c+PjJdfDA7Y1tuPj4yXT1jW2w+PjJdO2Nbbis0Pj4yXT1tO2JbKGNbZz4+Ml18MCkrOD4+MV09NDtpPWs7cmV0dXJuIDh9ZWxzZXtuPWNbZz4+Ml18MDtjW24+PjJdPWNbaj4+Ml07Y1tuKzQ+PjJdPWNbais0Pj4yXTtuPShxRygraFtjW2c+PjJdPj4zXSl8MCkhPTA7YlsoY1tnPj4yXXwwKSs4Pj4xXT1uPzE6ODtpPWs7cmV0dXJuIDh9cmV0dXJuIDB9ZnVuY3Rpb24gcUcoYSl7YT0rYTt2YXIgYj0wLGQ9MCxlPTAsZj0wLGc9MDtkPWk7aT1pKzMyfDA7Zz1kKzE2fDA7Yj1kKzI0fDA7Zj1kKzh8MDtlPWQ7aFtnPj4zXT1hO2hbZj4+M109K2hbZz4+M107aFtlPj4zXT0raFtmPj4zXTtjW2I+PjJdPStoW2Y+PjNdIT0raFtlPj4zXSYxO2k9ZDtyZXR1cm4gY1tiPj4yXXwwfWZ1bmN0aW9uIHJHKGYsZyl7Zj1mfDA7Zz1nfDA7dmFyIGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTA7cD1pO2k9aSszMnwwO2g9cCsyMHwwO2o9cCsxNnwwO2s9cCsxMnwwO249cCs4fDA7bD1wKzR8MDttPXA7Y1tqPj4yXT1mO2Nbaz4+Ml09ZztpZigoZFsoY1tqPj4yXXwwKSs2Nj4+MF18MCkhPTEpe2lmKChkWyhjW2o+PjJdfDApKzY2Pj4wXXwwKT49MylmPUVGKGNbaj4+Ml18MCl8MDtlbHNlIGY9MDtjW24+PjJdPWY7aWYoY1tuPj4yXXwwKXtjW2g+PjJdPWNbbj4+Ml07bz1jW2g+PjJdfDA7aT1wO3JldHVybiBvfDB9aWYoIShkWyhjW2o+PjJdfDApKzY2Pj4wXXwwKSl7Y1tjW2s+PjJdPj4yXT0xO2NbaD4+Ml09MDtvPWNbaD4+Ml18MDtpPXA7cmV0dXJuIG98MH1pZigoY1soY1tqPj4yXXwwKSs2MD4+Ml18MCkhPTA/KGFbKGNbaj4+Ml18MCkrNjY+PjBdPTEsZz0oY1soY1tqPj4yXXwwKSs2MD4+Ml18MCk+MCxjWyhjW2o+PjJdfDApKzYwPj4yXT0wLGcpOjApe2NbaD4+Ml09MDtvPWNbaD4+Ml18MDtpPXA7cmV0dXJuIG98MH19Y1ttPj4yXT1jWyhjW2o+PjJdfDApKzEyMCsoYVsoY1tqPj4yXXwwKSs2OD4+MF08PDIpPj4yXTtnPShjW2o+PjJdfDApKzgwKyhhWyhjW2o+PjJdfDApKzY4Pj4wXTw8MSl8MDtmPShiW2c+PjFdfDApKzE8PDE2Pj4xNjtiW2c+PjFdPWY7Y1tsPj4yXT1mJjY1NTM1O2Y9KGFbKGNbbT4+Ml18MCkrND4+MF18MCkhPTA7aWYoKGNbbD4+Ml18MCk8KGVbKGNbbT4+Ml18MCkrMTg+PjFdfDApKWlmKGYpe2NbaD4+Ml09MDtvPWNbaD4+Ml18MDtpPXA7cmV0dXJuIG98MH1lbHNle2NbaD4+Ml09c0coY1tqPj4yXXwwKXwwO289Y1toPj4yXXwwO2k9cDtyZXR1cm4gb3wwfWlmKCFmKXtvPWNbaj4+Ml18MDtjW24+PjJdPUZGKG8sZ3IoKGNbKGNbbT4+Ml18MCkrNTY+PjJdfDApKygoZFsoY1ttPj4yXXwwKSs1Pj4wXXwwKSs4KXwwKXwwKXwwO2lmKGNbbj4+Ml18MCl7Y1toPj4yXT1jW24+PjJdO289Y1toPj4yXXwwO2k9cDtyZXR1cm4gb3wwfWVsc2V7Y1toPj4yXT1zRyhjW2o+PjJdfDApfDA7bz1jW2g+PjJdfDA7aT1wO3JldHVybiBvfDB9fWRve2lmKCEoYVsoY1tqPj4yXXwwKSs2OD4+MF18MCkpe289MTc7YnJlYWt9SEYoY1tqPj4yXXwwKTtjW20+PjJdPWNbKGNbaj4+Ml18MCkrMTIwKyhhWyhjW2o+PjJdfDApKzY4Pj4wXTw8Mik+PjJdfXdoaWxlKChlWyhjW2o+PjJdfDApKzgwKyhhWyhjW2o+PjJdfDApKzY4Pj4wXTw8MSk+PjFdfDApPj0oZVsoY1ttPj4yXXwwKSsxOD4+MV18MCkpO2lmKChvfDApPT0xNyl7Y1tjW2s+PjJdPj4yXT0xO2FbKGNbaj4+Ml18MCkrNjY+PjBdPTA7Y1toPj4yXT0wO289Y1toPj4yXXwwO2k9cDtyZXR1cm4gb3wwfWlmKGFbKGNbbT4+Ml18MCkrMj4+MF18MCl7Y1toPj4yXT1CRihjW2o+PjJdfDAsY1trPj4yXXwwKXwwO289Y1toPj4yXXwwO2k9cDtyZXR1cm4gb3wwfWVsc2V7Y1toPj4yXT0wO289Y1toPj4yXXwwO2k9cDtyZXR1cm4gb3wwfXJldHVybiAwfWZ1bmN0aW9uIHNHKGIpe2I9YnwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wO2s9aTtpPWkrMTZ8MDtmPWsrMTJ8MDtoPWsrOHwwO2o9ays0fDA7Zz1rO2NbZj4+Ml09YjtjW2o+PjJdPTA7d2hpbGUoMSl7aWYoY1tqPj4yXXwwKXtmPTU7YnJlYWt9Yj1jWyhjW2Y+PjJdfDApKzEyMCsoYVsoY1tmPj4yXXwwKSs2OD4+MF08PDIpPj4yXXwwO2NbZz4+Ml09YjtpZighKChhW2IrND4+MF18MCkhPTBeMSkpe2Y9NTticmVha31jW2g+PjJdPWdyKChjWyhjW2c+PjJdfDApKzU2Pj4yXXwwKSsoZVsoY1tnPj4yXXwwKSsyMD4+MV0mKGRbKGNbKGNbZz4+Ml18MCkrNjQ+PjJdfDApKyhlWyhjW2Y+PjJdfDApKzgwKyhhWyhjW2Y+PjJdfDApKzY4Pj4wXTw8MSk+PjFdPDwxKT4+MF08PDh8ZFsoY1soY1tnPj4yXXwwKSs2ND4+Ml18MCkrKGVbKGNbZj4+Ml18MCkrODArKGFbKGNbZj4+Ml18MCkrNjg+PjBdPDwxKT4+MV08PDEpKzE+PjBdKSl8MCl8MDtjW2o+PjJdPUZGKGNbZj4+Ml18MCxjW2g+PjJdfDApfDB9aWYoKGZ8MCk9PTUpe2k9aztyZXR1cm4gY1tqPj4yXXwwfXJldHVybiAwfWZ1bmN0aW9uIHRHKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MDtqPWk7aT1pKzMyfDA7az1qKzIwfDA7ZD1qKzE2fDA7ZT1qKzEyfDA7Zj1qKzh8MDtnPWorNHwwO2g9ajtjW2s+PjJdPWE7Y1tkPj4yXT1iO2NbZT4+Ml09Y1tjW2s+PjJdPj4yXTtjW2c+PjJdPV92KGNbZT4+Ml18MCwwLDAsMCl8MDtpZighKGNbZz4+Ml18MCkpe2s9Y1tnPj4yXXwwO2k9ajtyZXR1cm4ga3wwfWs9cWgoY1tlPj4yXXwwLGNbKGNbZD4+Ml18MCkrMTI+PjJdfDApfDA7Y1soY1tnPj4yXXwwKSs4KygoKGNbY1tnPj4yXT4+Ml18MCktMXwwKSo3MnwwKSs4Pj4yXT1rO2NbZj4+Ml09RmgoY1tlPj4yXXwwLGNbKGNbKGNbZD4+Ml18MCkrND4+Ml18MCkrMjA+PjJdfDApfDA7aWYoISgoY1tmPj4yXXwwKT09MHwoY1tmPj4yXXwwKT49Mikpe2s9Y1tnPj4yXXwwO2k9ajtyZXR1cm4ga3wwfWNbaD4+Ml09Y1soY1soY1tlPj4yXXwwKSsxNj4+Ml18MCkrKGNbZj4+Ml08PDQpPj4yXTtrPXFoKGNbZT4+Ml18MCxjW2g+PjJdfDApfDA7Y1soY1tnPj4yXXwwKSs4KygoKGNbY1tnPj4yXT4+Ml18MCktMXwwKSo3MnwwKSs0Pj4yXT1rO2s9Y1tnPj4yXXwwO2k9ajtyZXR1cm4ga3wwfWZ1bmN0aW9uIHVHKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MDtnPWk7aT1pKzE2fDA7ZD1nKzh8MDtlPWcrNHwwO2Y9ZztjW2Q+PjJdPWE7Y1tlPj4yXT1iO2lmKCEoY1tlPj4yXXwwKSl7aT1nO3JldHVybn1jW2Y+PjJdPWNbKGNbZT4+Ml18MCkrMjg+PjJdO2l2KGNbZD4+Ml18MCxjWyhjW2Y+PjJdfDApKzE2Pj4yXXwwKTtldihjW2Q+PjJdfDAsY1soY1tmPj4yXXwwKSsyMD4+Ml18MCk7ZnYoY1tkPj4yXXwwLGNbKGNbZj4+Ml18MCkrOD4+Ml18MCk7aXYoY1tkPj4yXXwwLGNbKGNbZT4+Ml18MCkrMTI+PjJdfDApO1RmKGNbZD4+Ml18MCxjW2U+PjJdfDApO2k9ZztyZXR1cm59ZnVuY3Rpb24gdkcoYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MDtoPWk7aT1pKzE2fDA7Zz1oKzEyfDA7ZD1oKzh8MDtlPWgrNHwwO2Y9aDtjW2Q+PjJdPWE7Y1tlPj4yXT1iO2lmKChjW2Q+PjJdfDApPT0wfChjW2U+PjJdfDApPT0wKXtjW2c+PjJdPTE7Zz1jW2c+PjJdfDA7aT1oO3JldHVybiBnfDB9Y1tmPj4yXT0wO3doaWxlKDEpe2lmKChjW2Y+PjJdfDApPj0oY1tjW2U+PjJdPj4yXXwwKSl7ZD04O2JyZWFrfWlmKChzeihjW2Q+PjJdfDAsY1soY1soY1tlPj4yXXwwKSs0Pj4yXXwwKSsoKGNbZj4+Ml18MCkqMjB8MCkrND4+Ml18MCl8MCk+PTApe2Q9NjticmVha31jW2Y+PjJdPShjW2Y+PjJdfDApKzF9aWYoKGR8MCk9PTYpe2NbZz4+Ml09MTtnPWNbZz4+Ml18MDtpPWg7cmV0dXJuIGd8MH1lbHNlIGlmKChkfDApPT04KXtjW2c+PjJdPTA7Zz1jW2c+PjJdfDA7aT1oO3JldHVybiBnfDB9cmV0dXJuIDB9ZnVuY3Rpb24gd0coZSxmKXtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTA7aj1pO2k9aSsxNnwwO2c9ais0fDA7aD1qO2NbZz4+Ml09ZTtjW2g+PjJdPWY7aWYoKGRbY1toPj4yXT4+MF18MCkhPTE1Mil7aT1qO3JldHVybiAwfWlmKChiWyhjW2g+PjJdfDApKzMyPj4xXXwwKTwwKXtlPShjW2c+PjJdfDApKzIwfDA7YVtlPj4wXT1kW2U+PjBdfDI7aT1qO3JldHVybiAwfWlmKChjWyhjWyhjW2c+PjJdfDApKzI0Pj4yXXwwKSsoYlsoY1toPj4yXXwwKSszMj4+MV08PDIpPj4yXXwwKTwwKXtpPWo7cmV0dXJuIDB9ZT0oY1tnPj4yXXwwKSsyMHwwO2FbZT4+MF09ZFtlPj4wXXwxO2k9ajtyZXR1cm4gMH1mdW5jdGlvbiB4RyhhLGYpe2E9YXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wO2w9aTtpPWkrMTZ8MDtoPWwrMTJ8MDtqPWwrOHwwO2s9bCs0fDA7Zz1sO2Nbaj4+Ml09YTtjW2s+PjJdPWY7aWYoKGVbKGNbaj4+Ml18MCkrNTA+PjFdfDApIT0oZVsoY1trPj4yXXwwKSs1MD4+MV18MCkpe2NbaD4+Ml09MDtrPWNbaD4+Ml18MDtpPWw7cmV0dXJuIGt8MH1pZigoZFsoY1tqPj4yXXwwKSs1ND4+MF18MCkhPShkWyhjW2s+PjJdfDApKzU0Pj4wXXwwKSl7Y1toPj4yXT0wO2s9Y1toPj4yXXwwO2k9bDtyZXR1cm4ga3wwfWNbZz4+Ml09MDt3aGlsZSgxKXtpZigoY1tnPj4yXXwwKT49KGVbKGNbaz4+Ml18MCkrNTA+PjFdfDApKXtnPTE3O2JyZWFrfWlmKChiWyhjWyhjW2s+PjJdfDApKzQ+PjJdfDApKyhjW2c+PjJdPDwxKT4+MV18MCkhPShiWyhjWyhjW2o+PjJdfDApKzQ+PjJdfDApKyhjW2c+PjJdPDwxKT4+MV18MCkpe2c9ODticmVha31pZigoYlsoY1soY1trPj4yXXwwKSs0Pj4yXXwwKSsoY1tnPj4yXTw8MSk+PjFdfDApPT0tMj8oS3koY1soY1soY1soY1trPj4yXXwwKSs0MD4+Ml18MCkrND4+Ml18MCkrKChjW2c+PjJdfDApKjIwfDApPj4yXXwwLGNbKGNbKGNbKGNbaj4+Ml18MCkrNDA+PjJdfDApKzQ+PjJdfDApKygoY1tnPj4yXXwwKSoyMHwwKT4+Ml18MCwtMSl8MCkhPTA6MCl7Zz0xMTticmVha31pZigoZFsoY1soY1trPj4yXXwwKSsyOD4+Ml18MCkrKGNbZz4+Ml18MCk+PjBdfDApIT0oZFsoY1soY1tqPj4yXXwwKSsyOD4+Ml18MCkrKGNbZz4+Ml18MCk+PjBdfDApKXtnPTEzO2JyZWFrfWlmKFRkKGNbKGNbKGNbaz4+Ml18MCkrMzI+PjJdfDApKyhjW2c+PjJdPDwyKT4+Ml18MCxjWyhjWyhjW2o+PjJdfDApKzMyPj4yXXwwKSsoY1tnPj4yXTw8Mik+PjJdfDApfDApe2c9MTU7YnJlYWt9Y1tnPj4yXT0oY1tnPj4yXXwwKSsxfWlmKChnfDApPT04KXtjW2g+PjJdPTA7az1jW2g+PjJdfDA7aT1sO3JldHVybiBrfDB9ZWxzZSBpZigoZ3wwKT09MTEpe2NbaD4+Ml09MDtrPWNbaD4+Ml18MDtpPWw7cmV0dXJuIGt8MH1lbHNlIGlmKChnfDApPT0xMyl7Y1toPj4yXT0wO2s9Y1toPj4yXXwwO2k9bDtyZXR1cm4ga3wwfWVsc2UgaWYoKGd8MCk9PTE1KXtjW2g+PjJdPTA7az1jW2g+PjJdfDA7aT1sO3JldHVybiBrfDB9ZWxzZSBpZigoZ3wwKT09MTcpaWYoS3koY1soY1trPj4yXXwwKSszNj4+Ml18MCxjWyhjW2o+PjJdfDApKzM2Pj4yXXwwLC0xKXwwKXtjW2g+PjJdPTA7az1jW2g+PjJdfDA7aT1sO3JldHVybiBrfDB9ZWxzZXtjW2g+PjJdPTE7az1jW2g+PjJdfDA7aT1sO3JldHVybiBrfDB9cmV0dXJuIDB9ZnVuY3Rpb24geUcoYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTA7ZT1pO2k9aSsxNnwwO2Y9ZSs4fDA7aD1lKzR8MDtnPWU7Y1tmPj4yXT1hO2NbaD4+Ml09YjtjW2c+PjJdPWQ7Y1soY1toPj4yXXwwKSs0Pj4yXT1jW2Y+PjJdO2NbY1toPj4yXT4+Ml09Y1soY1tmPj4yXXwwKSs0NDg+PjJdO2NbKGNbZj4+Ml18MCkrNDQ4Pj4yXT1jW2c+PjJdO2k9ZTtyZXR1cm59ZnVuY3Rpb24gekcoYSxiLGQsZSl7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MDtwPWk7aT1pKzY0fDA7Zj1wKzUyfDA7Zz1wKzQ4fDA7aD1wKzQ0fDA7aj1wKzQwfDA7bD1wKzE2fDA7bz1wKzEyfDA7bj1wKzh8MDtrPXArNHwwO209cDtjW2Y+PjJdPWE7Y1tnPj4yXT1iO2NbaD4+Ml09ZDtjW2o+PjJdPWU7Y1trPj4yXT1jW2NbZj4+Ml0+PjJdO2NbbT4+Ml09RmgoY1trPj4yXXwwLGNbKGNbZz4+Ml18MCkrNjQ+PjJdfDApfDA7Y1toPj4yXT1JeShjW2s+PjJdfDAsY1toPj4yXXwwLDApfDA7Y1tuPj4yXT1fdihjW2s+PjJdfDAsMCwwLDApfDA7aWYoY1tuPj4yXXwwKXtkPXFoKGNbaz4+Ml18MCxjW2NbZz4+Ml0+PjJdfDApfDA7Y1soY1tuPj4yXXwwKSs4Kzg+PjJdPWQ7ZD1xaChjW2s+PjJdfDAsY1soY1soY1trPj4yXXwwKSsxNj4+Ml18MCkrKGNbbT4+Ml08PDQpPj4yXXwwKXwwO2NbKGNbbj4+Ml18MCkrOCs0Pj4yXT1kfWNbbz4+Ml09U3YoY1tmPj4yXXwwLDAsY1tuPj4yXXwwLGNbaD4+Ml18MCwwLDAsMCwxMzEwNzIsMCwwKXwwO3ZCKGwsMTIsY1tqPj4yXXwwKTtQdihjW2Y+PjJdfDAsY1tvPj4yXXwwLGwpfDA7ZnYoY1trPj4yXXwwLGNbbz4+Ml18MCk7aT1wO3JldHVybn1mdW5jdGlvbiBBRyhkLGUsZixnLGgsaixrLGwpe2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO2s9a3wwO2w9bHwwO3ZhciBtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MCxFPTAsRj0wLEc9MCxIPTAsST0wO0Y9aTtpPWkrOTZ8MDtyPUYrODh8MDtIPUYrODR8MDtzPUYrODB8MDttPUYrNzZ8MDtuPUYrNzJ8MDtvPUYrNjh8MDtHPUYrNjR8MDt0PUYrNjB8MDtFPUYrNTZ8MDt3PUYrNTJ8MDt4PUYrNDh8MDtJPUYrNDR8MDt6PUYrNDB8MDtBPUYrMzZ8MDt5PUYrMzJ8MDtCPUYrMjh8MDtDPUYrMjR8MDtEPUYrMjB8MDtxPUYrMTZ8MDtwPUYrOHwwO3Y9Ris0fDA7dT1GO2Nbcj4+Ml09ZDtjW0g+PjJdPWU7Y1tzPj4yXT1mO2NbbT4+Ml09ZztjW24+PjJdPWg7Y1tvPj4yXT1qO2NbRz4+Ml09aztjW3Q+PjJdPWw7Y1tFPj4yXT1jWyhjW3I+PjJdfDApKzg+PjJdO2NbST4+Ml09Y1tjW3I+PjJdPj4yXTtjW3o+PjJdPVV4KGNbST4+Ml18MCxjW3M+PjJdfDApfDA7Y1t5Pj4yXT0yKyhiWyhjW3M+PjJdfDApKzM0Pj4xXXwwKTtjW3E+PjJdPWNbKGNbSD4+Ml18MCkrOCs0ND4+Ml07Zj0oY1tyPj4yXXwwKSs0MHwwO2s9Y1tmPj4yXXwwO2NbZj4+Ml09aysxO2Nbdz4+Ml09aztjW3U+PjJdPWl4KGNbRT4+Ml18MCwxMDcsY1t3Pj4yXXwwLGNbeT4+Ml18MCl8MDtjW0I+PjJdPShjWyhjW3I+PjJdfDApKzQ0Pj4yXXwwKSsxO2s9KGNbcj4+Ml18MCkrNDR8MDtjW2s+PjJdPShjW2s+PjJdfDApKyhjW3k+PjJdfDApO2s9KGNbcj4+Ml18MCkrNDR8MDtmPShjW2s+PjJdfDApKzF8MDtjW2s+PjJdPWY7Y1tDPj4yXT1mO2Y9KGNbcj4+Ml18MCkrNDR8MDtrPShjW2Y+PjJdfDApKzF8MDtjW2Y+PjJdPWs7Y1tEPj4yXT1rO2NbQT4+Ml09cUQoY1tyPj4yXXwwLGNbSD4+Ml18MCxjW0c+PjJdfDAsMCwwLDQsMCl8MDtpZighKGNbQT4+Ml18MCkpe2k9RjtyZXR1cm59aXgoY1tFPj4yXXwwLDEyMyxjW3E+PjJdfDAsY1tCPj4yXXwwKXwwO2lmKGNbbj4+Ml18MClSQShjW3I+PjJdfDAsY1tuPj4yXXwwLChjW0I+PjJdfDApKzF8MCk7ZWxzZSBpeChjW0U+PjJdfDAsMTIzLGNbcT4+Ml18MCwoY1tCPj4yXXwwKSsxfDApfDA7Y1t4Pj4yXT0wO3doaWxlKDEpe2lmKChjW3g+PjJdfDApPj0oYlsoY1tzPj4yXXwwKSszND4+MV18MCkpYnJlYWs7aWYoKGNbKGNbbz4+Ml18MCkrKGNbeD4+Ml08PDIpPj4yXXwwKT49MClSQShjW3I+PjJdfDAsY1soY1soY1ttPj4yXXwwKSs0Pj4yXXwwKSsoKGNbKGNbbz4+Ml18MCkrKGNbeD4+Ml08PDIpPj4yXXwwKSoyMHwwKT4+Ml18MCwoY1tCPj4yXXwwKSsyKyhjW3g+PjJdfDApfDApO2Vsc2UgangoY1tFPj4yXXwwLDE1NixjW3E+PjJdfDAsY1t4Pj4yXXwwLChjW0I+PjJdfDApKzIrKGNbeD4+Ml18MCl8MCl8MDtjW3g+PjJdPShjW3g+PjJdfDApKzF9Y1t2Pj4yXT1CRyhjW0E+PjJdfDAscCl8MDttPWNbRT4+Ml18MDtpZihjW3Y+PjJdfDApe0hBKG0sY1t1Pj4yXXwwKXwwO2lmKCEoY1soY1tyPj4yXXwwKSsxMjQ+PjJdfDApKWFbKGNbcj4+Ml18MCkrMjA+PjBdPTB9ZWxzZXtqeChtLDk5LGNbQj4+Ml18MCxjW3k+PjJdfDAsY1tDPj4yXXwwKXwwO2l4KGNbRT4+Ml18MCwxMTQsY1t3Pj4yXXwwLGNbRD4+Ml18MCl8MDtqeChjW0U+PjJdfDAsMTE1LGNbdz4+Ml18MCxjW0M+PjJdfDAsY1tEPj4yXXwwKXwwfWE6ZG8gaWYoIShjW3Y+PjJdfDApKXtyRChjW0E+PjJdfDApO2NbdT4+Ml09U3ooY1tFPj4yXXwwLDU3LGNbdz4+Ml18MCl8MDtjW3g+PjJdPTA7d2hpbGUoMSl7aWYoKGNbeD4+Ml18MCk+PShjW3k+PjJdfDApKWJyZWFrIGE7angoY1tFPj4yXXwwLDk2LGNbdz4+Ml18MCxjW3g+PjJdfDAsKGNbQj4+Ml18MCkrKGNbeD4+Ml18MCl8MCl8MDtjW3g+PjJdPShjW3g+PjJdfDApKzF9fXdoaWxlKDApO2REKGNbcj4+Ml18MCxjW3M+PjJdfDApO214KGNbRT4+Ml18MCwxMiwwLGNbeT4+Ml18MCxjW0I+PjJdfDAsY1t6Pj4yXXwwLC0xMCl8MDtKaChjW0U+PjJdfDAsKChjW3Q+PjJdfDApPT0xMD8yOmNbdD4+Ml18MCkmMjU1KTtWeChjW3I+PjJdfDApO2lmKCEoY1t2Pj4yXXwwKSl7aXgoY1tFPj4yXXwwLDcsY1t3Pj4yXXwwLChjW3U+PjJdfDApKzF8MCl8MDtaeihjW0U+PjJdfDAsY1t1Pj4yXXwwKTtpeChjW0U+PjJdfDAsMTExLGNbdz4+Ml18MCwwKXwwO2k9RjtyZXR1cm59ZWxzZXtyRChjW0E+PjJdfDApO2k9RjtyZXR1cm59fWZ1bmN0aW9uIEJHKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGU9MCxmPTAsZz0wO2Y9aTtpPWkrMTZ8MDtlPWYrNHwwO2c9ZjtjW2U+PjJdPWE7Y1tnPj4yXT1iO2E9Y1tnPj4yXXwwO2I9KGNbZT4+Ml18MCkrMjB8MDtjW2E+PjJdPWNbYj4+Ml07Y1thKzQ+PjJdPWNbYis0Pj4yXTtpPWY7cmV0dXJuIGRbKGNbZT4+Ml18MCkrNDU+PjBdfDB8MH1mdW5jdGlvbiBDRyhhKXthPWF8MDt2YXIgYj0wLGQ9MDtkPWk7aT1pKzE2fDA7Yj1kO2NbYj4+Ml09YTtpZighKGNbKGNbYj4+Ml18MCkrND4+Ml18MCkpe2k9ZDtyZXR1cm59Y1soY1soY1tiPj4yXXwwKSs0Pj4yXXwwKSs0NDg+PjJdPWNbY1tiPj4yXT4+Ml07Y1soY1tiPj4yXXwwKSs0Pj4yXT0wO2k9ZDtyZXR1cm59ZnVuY3Rpb24gREcoYSxiLGQsZSl7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MDtwPWk7aT1pKzQ4fDA7az1wKzMyfDA7Zj1wKzI4fDA7bD1wKzI0fDA7bT1wKzIwfDA7bj1wKzE2fDA7bz1wKzEyfDA7aj1wKzh8MDtnPXArNHwwO2g9cDtjW2Y+PjJdPWE7Y1tsPj4yXT1iO2NbbT4+Ml09ZDtjW24+PjJdPWU7ZG8gaWYoKChjW2NbbD4+Ml0+PjJdfDApKyhjW20+PjJdfDApfDApPj4+MD4oY1soY1tsPj4yXXwwKSs0Pj4yXXwwKT4+PjApe2NbZz4+Ml09KGNbY1tsPj4yXT4+Ml18MCkrKGNbbT4+Ml18MCk7Y1tqPj4yXT1VdyhjW2Y+PjJdfDAsY1tsPj4yXXwwLDgwKygoKGNbZz4+Ml18MCktMXwwKSo3MnwwKXwwLDApfDA7aWYoY1tqPj4yXXwwKXtjW2w+PjJdPWNbaj4+Ml07Y1toPj4yXT0oKCgoa3UoY1tmPj4yXXwwLGNbaj4+Ml18MCl8MCktODB8MCk+Pj4wKS83MnwwKSsxO2NbKGNbbD4+Ml18MCkrND4+Ml09Y1toPj4yXTticmVha31jW2s+PjJdPWNbbD4+Ml07bz1jW2s+PjJdfDA7aT1wO3JldHVybiBvfDB9d2hpbGUoMCk7Y1tvPj4yXT0oY1tjW2w+PjJdPj4yXXwwKS0xO3doaWxlKDEpe2lmKChjW28+PjJdfDApPChjW24+PjJdfDApKWJyZWFrO2Y9KGNbbD4+Ml18MCkrOCsoKChjW28+PjJdfDApKyhjW20+PjJdfDApfDApKjcyfDApfDA7YT0oY1tsPj4yXXwwKSs4KygoY1tvPj4yXXwwKSo3MnwwKXwwO2U9Zis3MnwwO2Rve2NbZj4+Ml09Y1thPj4yXTtmPWYrNHwwO2E9YSs0fDB9d2hpbGUoKGZ8MCk8KGV8MCkpO2Nbbz4+Ml09KGNbbz4+Ml18MCkrLTF9Yj1jW2w+PjJdfDA7Y1tiPj4yXT0oY1tiPj4yXXwwKSsoY1ttPj4yXXwwKTtWUigoY1tsPj4yXXwwKSs4KygoY1tuPj4yXXwwKSo3MnwwKXwwLDAsKGNbbT4+Ml18MCkqNzJ8MCl8MDtjW28+PjJdPWNbbj4+Ml07d2hpbGUoMSl7aWYoKGNbbz4+Ml18MCk+PSgoY1tuPj4yXXwwKSsoY1ttPj4yXXwwKXwwKSlicmVhaztjWyhjW2w+PjJdfDApKzgrKChjW28+PjJdfDApKjcyfDApKzQ0Pj4yXT0tMTtjW28+PjJdPShjW28+PjJdfDApKzF9Y1trPj4yXT1jW2w+PjJdO289Y1trPj4yXXwwO2k9cDtyZXR1cm4gb3wwfWZ1bmN0aW9uIEVHKGYsZyxoLGosayl7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7dmFyIGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MCxFPTAsRj0wLEc9MCxIPTAsST0wLEo9MCxLPTAsTD0wLE09MCxOPTAsTz0wLFA9MCxRPTA7UT1pO2k9aSsxMjh8MDt5PVErMTEyfDA7dT1RKzEwOHwwO3Y9USsxMDR8MDt6PVErMTAwfDA7bD1RKzk2fDA7QT1RKzkyfDA7bj1RKzg4fDA7ST1RKzg0fDA7Sz1RKzgwfDA7TD1RKzc2fDA7Sj1RKzcyfDA7TT1RKzY4fDA7Rz1RKzY0fDA7RD1RKzYwfDA7Qz1RKzU2fDA7Tz1RKzUyfDA7Tj1RKzQ4fDA7Qj1RKzQ0fDA7bT1RKzQwfDA7cD1RKzM2fDA7cj1RKzMyfDA7bz1RKzI4fDA7cT1RKzI0fDA7cz1RKzIwfDA7dz1RKzE2fDA7eD1RKzEyfDA7Rj1RKzh8MDtFPVErMTE2fDA7UD1RKzR8MDtIPVE7Y1t1Pj4yXT1mO2Nbdj4+Ml09ZztjW3o+PjJdPWg7Y1tsPj4yXT1qO2NbQT4+Ml09aztjW24+PjJdPWNbKGNbdT4+Ml18MCkrNDQ4Pj4yXTtjW0I+PjJdPWNbY1t1Pj4yXT4+Ml07aWYoZVsoY1tCPj4yXXwwKSs2ND4+MV0mMSl7Y1t5Pj4yXT0wO1A9Y1t5Pj4yXXwwO2k9UTtyZXR1cm4gUHwwfWNbSj4+Ml09Y1soY1t2Pj4yXXwwKSsyOD4+Ml07Y1tOPj4yXT0oY1tKPj4yXXwwKSs4KygoY1t6Pj4yXXwwKSo3MnwwKTtjW0Q+PjJdPWNbKGNbTj4+Ml18MCkrNDQ+PjJdO2NbSz4+Ml09Y1soY1tOPj4yXXwwKSsyMD4+Ml07ZG8gaWYoY1tBPj4yXXwwKXtpZihjW2w+PjJdfDApe2NbeT4+Ml09MDtQPWNbeT4+Ml18MDtpPVE7cmV0dXJuIFB8MH1pZigoY1tjW0o+PjJdPj4yXXwwKT4xKXtjW3k+PjJdPTA7UD1jW3k+PjJdfDA7aT1RO3JldHVybiBQfDB9aWYoISgoY1soY1t2Pj4yXXwwKSszMj4+Ml18MCkhPTA/KGNbKGNbKGNbdj4+Ml18MCkrMzI+PjJdfDApKzQ+PjJdJjIwOTcxNTJ8MCkhPTA6MCkpdD0xMDtpZigoKHR8MCk9PTEwPygoRHooY1tjW3Y+PjJdPj4yXXwwKXwwKSYyMDk3MTUyfDApPT0wOjApPygoRHooY1soY1t2Pj4yXXwwKSs0ND4+Ml18MCl8MCkmMjA5NzE1MnwwKT09MDowKWJyZWFrO2NbeT4+Ml09MDtQPWNbeT4+Ml18MDtpPVE7cmV0dXJuIFB8MH13aGlsZSgwKTtjW00+PjJdPWNbKGNbSz4+Ml18MCkrMjg+PjJdO2lmKChjWyhjW0s+PjJdfDApKzU2Pj4yXXwwKSE9MD8oY1soY1t2Pj4yXXwwKSs1Nj4+Ml18MCkhPTA6MCl7Y1t5Pj4yXT0wO1A9Y1t5Pj4yXXwwO2k9UTtyZXR1cm4gUHwwfWlmKGNbKGNbSz4+Ml18MCkrNjA+PjJdfDApe2NbeT4+Ml09MDtQPWNbeT4+Ml18MDtpPVE7cmV0dXJuIFB8MH1pZigoY1soY1t2Pj4yXXwwKSs4Pj4yXSYyNTZ8MCkhPTA/KGNbKGNbSz4+Ml18MCkrNTY+PjJdfDApIT0wOjApe2NbeT4+Ml09MDtQPWNbeT4+Ml18MDtpPVE7cmV0dXJuIFB8MH1pZighKGNbY1tNPj4yXT4+Ml18MCkpe2NbeT4+Ml09MDtQPWNbeT4+Ml18MDtpPVE7cmV0dXJuIFB8MH1pZihjWyhjW0s+PjJdfDApKzg+PjJdJjEpe2NbeT4+Ml09MDtQPWNbeT4+Ml18MDtpPVE7cmV0dXJuIFB8MH1pZigoY1soY1tLPj4yXXwwKSs1Nj4+Ml18MCkhPTA/KChjW2w+PjJdfDApIT0wPzE6KGNbY1tKPj4yXT4+Ml18MCk+MSk6MCl7Y1t5Pj4yXT0wO1A9Y1t5Pj4yXXwwO2k9UTtyZXR1cm4gUHwwfWlmKChjW0E+PjJdfDApIT0wPyhjWyhjW3Y+PjJdfDApKzg+PjJdJjF8MCkhPTA6MCl7Y1t5Pj4yXT0wO1A9Y1t5Pj4yXXwwO2k9UTtyZXR1cm4gUHwwfWlmKChjWyhjW3Y+PjJdfDApKzQ0Pj4yXXwwKSE9MD8oY1soY1tLPj4yXXwwKSs0ND4+Ml18MCkhPTA6MCl7Y1t5Pj4yXT0wO1A9Y1t5Pj4yXXwwO2k9UTtyZXR1cm4gUHwwfWlmKChjW2w+PjJdfDApIT0wPyhjWyhjW0s+PjJdfDApKzQ0Pj4yXXwwKSE9MDowKXtjW3k+PjJdPTA7UD1jW3k+PjJdfDA7aT1RO3JldHVybiBQfDB9aWYoKGNbKGNbSz4+Ml18MCkrNTY+PjJdfDApIT0wPyhjWyhjW3Y+PjJdfDApKzMyPj4yXXwwKSE9MDowKXtjW3k+PjJdPTA7UD1jW3k+PjJdfDA7aT1RO3JldHVybiBQfDB9aWYoKGNbKGNbSz4+Ml18MCkrNTY+PjJdfDApIT0wPyhjWyhjW3Y+PjJdfDApKzg+PjJdJjF8MCkhPTA6MCl7Y1t5Pj4yXT0wO1A9Y1t5Pj4yXXwwO2k9UTtyZXR1cm4gUHwwfWlmKGNbKGNbSz4+Ml18MCkrOD4+Ml0mMTIyODgpe2NbeT4+Ml09MDtQPWNbeT4+Ml18MDtpPVE7cmV0dXJuIFB8MH1pZigoY1soY1t2Pj4yXXwwKSs4Pj4yXSY4MTkyfDApIT0wPyhjWyhjW0s+PjJdfDApKzQ4Pj4yXXwwKSE9MDowKXtjW3k+PjJdPTA7UD1jW3k+PjJdfDA7aT1RO3JldHVybiBQfDB9aWYoZFsoY1tOPj4yXXwwKSszNj4+MF0mMzIpe2NbeT4+Ml09MDtQPWNbeT4+Ml18MDtpPVE7cmV0dXJuIFB8MH1hOmRvIGlmKGNbKGNbSz4+Ml18MCkrNDg+PjJdfDApe2lmKGNbKGNbSz4+Ml18MCkrNDQ+PjJdfDApe2NbeT4+Ml09MDtQPWNbeT4+Ml18MDtpPVE7cmV0dXJuIFB8MH1kbyBpZighKGNbbD4+Ml18MCkpe2lmKGNbKGNbdj4+Ml18MCkrOD4+Ml0mMSlicmVhaztpZigoY1tjW0o+PjJdPj4yXXwwKSE9MSlicmVhaztjW0w+PjJdPWNbSz4+Ml07d2hpbGUoMSl7aWYoIShjW0w+PjJdfDApKWJyZWFrO2lmKGNbKGNbTD4+Ml18MCkrOD4+Ml0mOSl7dD02MjticmVha31pZigoY1soY1tMPj4yXXwwKSs0OD4+Ml18MCkhPTA/KGRbKGNbTD4+Ml18MCkrND4+MF18MCkhPTExNjowKXt0PTYyO2JyZWFrfWlmKChjW2NbKGNbTD4+Ml18MCkrMjg+PjJdPj4yXXwwKTwxKXt0PTYyO2JyZWFrfWNbTD4+Ml09Y1soY1tMPj4yXXwwKSs0OD4+Ml19aWYoKHR8MCk9PTYyKXtjW3k+PjJdPTA7UD1jW3k+PjJdfDA7aT1RO3JldHVybiBQfDB9aWYoIShjWyhjW3Y+PjJdfDApKzQ0Pj4yXXwwKSlicmVhayBhO2NbbT4+Ml09MDt3aGlsZSgxKXtpZigoY1ttPj4yXXwwKT49KGNbY1soY1t2Pj4yXXwwKSs0ND4+Ml0+PjJdfDApKWJyZWFrIGE7aWYoIShlWyhjWyhjWyhjW3Y+PjJdfDApKzQ0Pj4yXXwwKSs0Pj4yXXwwKSsoKGNbbT4+Ml18MCkqMjB8MCkrMTY+PjFdfDApKWJyZWFrO2NbbT4+Ml09KGNbbT4+Ml18MCkrMX1jW3k+PjJdPTA7UD1jW3k+PjJdfDA7aT1RO3JldHVybiBQfDB9d2hpbGUoMCk7Y1t5Pj4yXT0wO1A9Y1t5Pj4yXXwwO2k9UTtyZXR1cm4gUHwwfXdoaWxlKDApO2NbKGNbdT4+Ml18MCkrNDQ4Pj4yXT1jWyhjW04+PjJdfDApKzg+PjJdO2F4KGNbdT4+Ml18MCwyMSwwLDAsMCl8MDtjWyhjW3U+PjJdfDApKzQ0OD4+Ml09Y1tuPj4yXTtjW0s+PjJdPWNbKGNbSz4+Ml18MCkrNDg+PjJdO3doaWxlKDEpe2lmKCEoY1tLPj4yXXwwKSlicmVhaztjW3I+PjJdPWNbKGNbdj4+Ml18MCkrNDQ+PjJdO2Nbbz4+Ml09Y1soY1t2Pj4yXXwwKSs1Nj4+Ml07Y1txPj4yXT1jWyhjW3Y+PjJdfDApKzYwPj4yXTtjW3M+PjJdPWNbKGNbdj4+Ml18MCkrNDg+PjJdO2NbKGNbdj4+Ml18MCkrNDQ+PjJdPTA7Y1soY1t2Pj4yXXwwKSsyOD4+Ml09MDtjWyhjW3Y+PjJdfDApKzQ4Pj4yXT0wO2NbKGNbdj4+Ml18MCkrNTY+PjJdPTA7Y1soY1t2Pj4yXXwwKSs2MD4+Ml09MDtjW3A+PjJdPV94KGNbQj4+Ml18MCxjW3Y+PjJdfDAsMCl8MDtjWyhjW3Y+PjJdfDApKzYwPj4yXT1jW3E+PjJdO2NbKGNbdj4+Ml18MCkrNTY+PjJdPWNbbz4+Ml07Y1soY1t2Pj4yXXwwKSs0ND4+Ml09Y1tyPj4yXTtjWyhjW3Y+PjJdfDApKzI4Pj4yXT1jW0o+PjJdO2FbKGNbdj4+Ml18MCkrND4+MF09MTE2O2w9Y1tzPj4yXXwwO2lmKCEoY1twPj4yXXwwKSljWyhjW3Y+PjJdfDApKzQ4Pj4yXT1sO2Vsc2V7Y1soY1twPj4yXXwwKSs0OD4+Ml09bDtpZihjW3M+PjJdfDApY1soY1tzPj4yXXwwKSs1Mj4+Ml09Y1twPj4yXTtjWyhjW3A+PjJdfDApKzUyPj4yXT1jW3Y+PjJdO2NbKGNbdj4+Ml18MCkrNDg+PjJdPWNbcD4+Ml19aWYoYVsoY1tCPj4yXXwwKSs2OT4+MF18MCl7dD03ODticmVha31jW0s+PjJdPWNbKGNbSz4+Ml18MCkrNDg+PjJdfWlmKCh0fDApPT03OCl7Y1t5Pj4yXT0xO1A9Y1t5Pj4yXXwwO2k9UTtyZXR1cm4gUHwwfXQ9Y1soY1tOPj4yXXwwKSsyMD4+Ml18MDtjW0w+PjJdPXQ7Y1tLPj4yXT10O1RmKGNbQj4+Ml18MCxjWyhjW04+PjJdfDApKzQ+PjJdfDApO1RmKGNbQj4+Ml18MCxjWyhjW04+PjJdfDApKzg+PjJdfDApO1RmKGNbQj4+Ml18MCxjWyhjW04+PjJdfDApKzEyPj4yXXwwKTtjWyhjW04+PjJdfDApKzQ+PjJdPTA7Y1soY1tOPj4yXXwwKSs4Pj4yXT0wO2NbKGNbTj4+Ml18MCkrMTI+PjJdPTA7Y1soY1tOPj4yXXwwKSsyMD4+Ml09MDtpZihjWyhjW04+PjJdfDApKzE2Pj4yXXwwKXtjW3c+PjJdPWNbKGNbTj4+Ml18MCkrMTY+PjJdO2lmKChlWyhjW3c+PjJdfDApKzM2Pj4xXXwwKT09MSl7bD1jW3U+PjJdfDA7aWYoY1soY1t1Pj4yXXwwKSsxMjQ+PjJdfDApbD1jW2wrMTI0Pj4yXXwwO2NbeD4+Ml09bDtjWyhjW3c+PjJdfDApKzY4Pj4yXT1jWyhjW3g+PjJdfDApKzQ2ND4+Ml07Y1soY1t4Pj4yXXwwKSs0NjQ+PjJdPWNbdz4+Ml19ZWxzZXt4PShjW3c+PjJdfDApKzM2fDA7Ylt4Pj4xXT0oYlt4Pj4xXXwwKSstMTw8MTY+PjE2fWNbKGNbTj4+Ml18MCkrMTY+PjJdPTB9Y1tJPj4yXT1jW3Y+PjJdO3doaWxlKDEpe2lmKCEoY1tJPj4yXXwwKSlicmVhazthW0U+PjBdPTA7Y1tNPj4yXT1jWyhjW0s+PjJdfDApKzI4Pj4yXTtjW0Y+PjJdPWNbY1tNPj4yXT4+Ml07Y1tKPj4yXT1jWyhjW0k+PjJdfDApKzI4Pj4yXTtpZighKGNbSj4+Ml18MCkpe3g9X3YoY1tCPj4yXXwwLDAsMCwwKXwwO2NbKGNbST4+Ml18MCkrMjg+PjJdPXg7Y1tKPj4yXT14O2lmKCEoY1tKPj4yXXwwKSlicmVha31lbHNlIGFbRT4+MF09YVsoY1tOPj4yXXwwKSszNj4+MF18MDtpZigoY1tGPj4yXXwwKT4xPyh4PURHKGNbQj4+Ml18MCxjW0o+PjJdfDAsKGNbRj4+Ml18MCktMXwwLChjW3o+PjJdfDApKzF8MCl8MCxjW0o+PjJdPXgsY1soY1tJPj4yXXwwKSsyOD4+Ml09eCwoYVsoY1tCPj4yXXwwKSs2OT4+MF18MCkhPTApOjApYnJlYWs7Y1tDPj4yXT0wO3doaWxlKDEpe2lmKChjW0M+PjJdfDApPj0oY1tGPj4yXXwwKSlicmVhaztrdihjW0I+PjJdfDAsY1soY1tKPj4yXXwwKSs4KygoKGNbQz4+Ml18MCkrKGNbej4+Ml18MCl8MCkqNzJ8MCkrNTI+PjJdfDApO2w9KGNbSj4+Ml18MCkrOCsoKChjW0M+PjJdfDApKyhjW3o+PjJdfDApfDApKjcyfDApfDA7aD0oY1tNPj4yXXwwKSs4KygoY1tDPj4yXXwwKSo3MnwwKXwwO209bCs3MnwwO2Rve2NbbD4+Ml09Y1toPj4yXTtsPWwrNHwwO2g9aCs0fDB9d2hpbGUoKGx8MCk8KG18MCkpO2w9KGNbTT4+Ml18MCkrOCsoKGNbQz4+Ml18MCkqNzJ8MCl8MDttPWwrNzJ8MDtkb3tjW2w+PjJdPTA7bD1sKzR8MH13aGlsZSgobHwwKTwobXwwKSk7Y1tDPj4yXT0oY1tDPj4yXXwwKSsxfWFbKGNbSj4+Ml18MCkrOCsoKGNbej4+Ml18MCkqNzJ8MCkrMzY+PjBdPWFbRT4+MF18MDtjW0c+PjJdPWNbY1tJPj4yXT4+Ml07Y1tDPj4yXT0wO3doaWxlKDEpe2lmKChjW0M+PjJdfDApPj0oY1tjW0c+PjJdPj4yXXwwKSlicmVhaztpZighKGNbKGNbKGNbRz4+Ml18MCkrND4+Ml18MCkrKChjW0M+PjJdfDApKjIwfDApKzQ+PjJdfDApKXtjW1A+PjJdPXFoKGNbQj4+Ml18MCxjWyhjWyhjW0c+PjJdfDApKzQ+PjJdfDApKygoY1tDPj4yXXwwKSoyMHwwKSs4Pj4yXXwwKXwwO1p3KGNbUD4+Ml18MCk7Y1soY1soY1tHPj4yXXwwKSs0Pj4yXXwwKSsoKGNbQz4+Ml18MCkqMjB8MCkrND4+Ml09Y1tQPj4yXX1jW0M+PjJdPShjW0M+PjJdfDApKzF9aWYoY1soY1tLPj4yXXwwKSs0ND4+Ml18MCl7Y1tIPj4yXT1jWyhjW0s+PjJdfDApKzQ0Pj4yXTtjW0M+PjJdPTA7d2hpbGUoMSl7aWYoKGNbQz4+Ml18MCk+PShjW2NbSD4+Ml0+PjJdfDApKWJyZWFrO2JbKGNbKGNbSD4+Ml18MCkrND4+Ml18MCkrKChjW0M+PjJdfDApKjIwfDApKzE2Pj4xXT0wO2NbQz4+Ml09KGNbQz4+Ml18MCkrMX1jWyhjW0k+PjJdfDApKzQ0Pj4yXT1jW0g+PjJdO2NbKGNbSz4+Ml18MCkrNDQ+PjJdPTB9Y1tPPj4yXT1JeShjW0I+PjJdfDAsY1soY1tLPj4yXXwwKSszMj4+Ml18MCwwKXwwO2lmKGNbQT4+Ml18MCl7Y1soY1tJPj4yXXwwKSs0MD4+Ml09Y1soY1tJPj4yXXwwKSszMj4+Ml07Y1soY1tJPj4yXXwwKSszMj4+Ml09Y1tPPj4yXTt3PWNbQj4+Ml18MDt4PUl5KGNbQj4+Ml18MCxjWyhjW0s+PjJdfDApKzQwPj4yXXwwLDApfDA7eD13eih3LHgsY1soY1tJPj4yXXwwKSs0MD4+Ml18MCl8MDtjWyhjW0k+PjJdfDApKzQwPj4yXT14O3g9UXkoY1tCPj4yXXwwLGNbKGNbSz4+Ml18MCkrMzY+PjJdfDAsMCl8MDtjWyhjW0k+PjJdfDApKzM2Pj4yXT14fWVsc2V7eD13eihjW0I+PjJdfDAsY1tPPj4yXXwwLGNbKGNbST4+Ml18MCkrMzI+PjJdfDApfDA7Y1soY1tJPj4yXXwwKSszMj4+Ml09eH1uSChjW0I+PjJdfDAsY1tJPj4yXXwwLGNbRD4+Ml18MCxjW2NbSz4+Ml0+PjJdfDAsMCk7eD0oY1tJPj4yXXwwKSs4fDA7Y1t4Pj4yXT1jW3g+PjJdfGNbKGNbSz4+Ml18MCkrOD4+Ml0mMTtpZihjWyhjW0s+PjJdfDApKzU2Pj4yXXwwKXtjWyhjW0k+PjJdfDApKzU2Pj4yXT1jWyhjW0s+PjJdfDApKzU2Pj4yXTtjWyhjW0s+PjJdfDApKzU2Pj4yXT0wfWNbST4+Ml09Y1soY1tJPj4yXXwwKSs0OD4+Ml07Y1tLPj4yXT1jWyhjW0s+PjJdfDApKzQ4Pj4yXX1mdihjW0I+PjJdfDAsY1tMPj4yXXwwKTtjW3k+PjJdPTE7UD1jW3k+PjJdfDA7aT1RO3JldHVybiBQfDB9ZnVuY3Rpb24gRkcoZSxmLGcpe2U9ZXwwO2Y9ZnwwO2c9Z3wwO3ZhciBoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTAsRT0wLEY9MCxHPTAsSD0wLEk9MCxKPTAsSz0wLEw9MCxNPTAsTj0wLE89MCxQPTAsUT0wLFI9MCxTPTAsVD0wLFU9MCxWPTAsVz0wLFg9MCxZPTAsWj0wLF89MDtfPWk7aT1pKzI1NnwwO1o9Xys4fDA7aD1fO2o9XysyNDB8MDtrPV8rMjM2fDA7bD1fKzIzMnwwO209XysyMjh8MDtUPV8rMjI0fDA7UT1fKzIyMHwwO1k9XysyMTZ8MDt0PV8rMTkyfDA7SD1fKzE4NHwwO3M9XysxODB8MDtCPV8rMTc2fDA7Qz1fKzE3MnwwO249XysxNjh8MDtGPV8rMTY0fDA7Vz1fKzE2MHwwO0c9XysyNDR8MDtSPV8rMTU2fDA7TD1fKzE1MnwwO089XysxNDh8MDtvPV8rMTQ0fDA7WD1fKzEyMHwwO3g9XysxMTZ8MDt2PV8rMTEyfDA7ej1fKzEwOHwwO0k9XysxMDR8MDtVPV8rMTAwfDA7Vj1fKzk2fDA7eT1fKzkyfDA7dz1fKzg4fDA7QT1fKzg0fDA7TT1fKzgwfDA7UD1fKzc2fDA7cD1fKzcyfDA7RD1fKzQ4fDA7Uz1fKzQwfDA7Sj1fKzM2fDA7dT1fKzMyfDA7Sz1fKzI4fDA7Tj1fKzI0fDA7cj1fKzIwfDA7RT1fKzE2fDA7cT1fKzEyfDA7Y1trPj4yXT1lO2NbbD4+Ml09ZjtjW20+PjJdPWc7Y1tUPj4yXT0wO2NbSD4+Ml09MDtjW0I+PjJdPTA7Y1tDPj4yXT0wO2Nbcz4+Ml09Y1tjW2s+PjJdPj4yXTtjW1E+PjJdPWNbKGNbbD4+Ml18MCkrNDg+PjJdO2U9Y1ttPj4yXXwwO2NbdD4+Ml09Y1tlPj4yXTtjW3QrND4+Ml09Y1tlKzQ+PjJdO2NbdCs4Pj4yXT1jW2UrOD4+Ml07Y1t0KzEyPj4yXT1jW2UrMTI+PjJdO2NbdCsxNj4+Ml09Y1tlKzE2Pj4yXTtjW3QrMjA+PjJdPWNbZSsyMD4+Ml07YTpkbyBpZighKGNbKGNbUT4+Ml18MCkrNDQ+PjJdfDApKXtmPWNbaz4+Ml18MDtpZihjWyhjW1E+PjJdfDApKzU2Pj4yXXwwKXtjW1o+PjJdPVN5KGRbKGNbbD4+Ml18MCkrND4+MF18MCl8MDtFaChmLDM1ODc5LFopO2NbVD4+Ml09MTticmVha31jW1k+PjJdPWR4KGYpfDA7aWYoKGRbdD4+MF18MCk9PTEyKXtpeChjW1k+PjJdfDAsMTA3LGNbdCs4Pj4yXXwwLGNbY1tjW2w+PjJdPj4yXT4+Ml18MCl8MDthW3Q+PjBdPTE0fWlmKGNbKGNbbD4+Ml18MCkrOD4+Ml0mMTAyNCl7Y1tUPj4yXT1wSChjW2s+PjJdfDAsY1tsPj4yXXwwLHQpfDA7YnJlYWt9YjpkbyBpZihjWyhjW2w+PjJdfDApKzg+PjJdJjgxOTIpcUgoY1trPj4yXXwwLGNbbD4+Ml18MCx0KTtlbHNle2lmKGNbKGNbbD4+Ml18MCkrNDQ+PjJdfDApe2Nbaj4+Ml09ckgoY1trPj4yXXwwLGNbbD4+Ml18MCxjW20+PjJdfDApfDA7Wj1jW2o+PjJdfDA7aT1fO3JldHVybiBafDB9c3dpdGNoKGRbKGNbbD4+Ml18MCkrND4+MF18MCl7Y2FzZSAxMTY6e2Nbbj4+Ml09MDtjWyhjW1E+PjJdfDApKzEyPj4yXT1jWyhjW2w+PjJdfDApKzEyPj4yXTtjWyhjW1E+PjJdfDApKzE2Pj4yXT1jWyhjW2w+PjJdfDApKzE2Pj4yXTtjWyhjW1E+PjJdfDApKzU2Pj4yXT1jWyhjW2w+PjJdfDApKzU2Pj4yXTtjWyhjW1E+PjJdfDApKzYwPj4yXT1jWyhjW2w+PjJdfDApKzYwPj4yXTtjW0I+PjJdPWNbKGNbaz4+Ml18MCkrNDI0Pj4yXTtjW1Q+PjJdPVB2KGNbaz4+Ml18MCxjW1E+PjJdfDAsdCl8MDtjWyhjW2w+PjJdfDApKzU2Pj4yXT0wO2NbKGNbbD4+Ml18MCkrNjA+PjJdPTA7aWYoY1tUPj4yXXwwKWJyZWFrIGE7Y1soY1tsPj4yXXwwKSs0OD4+Ml09MDtjWyhjW2w+PjJdfDApKzEyPj4yXT1jWyhjW1E+PjJdfDApKzEyPj4yXTtjWyhjW2w+PjJdfDApKzE2Pj4yXT1jWyhjW1E+PjJdfDApKzE2Pj4yXTtpZigoY1soY1tsPj4yXXwwKSsxMj4+Ml18MCkhPTA/KGNbbj4+Ml09U3ooY1tZPj4yXXwwLDIyLGNbKGNbbD4+Ml18MCkrMTI+PjJdfDApfDAsKGNbKGNbbD4+Ml18MCkrMTY+PjJdfDApIT0wKTowKWp4KGNbWT4+Ml18MCwxNDYsY1soY1tsPj4yXXwwKSsxMj4+Ml18MCwoY1soY1tsPj4yXXwwKSsxNj4+Ml18MCkrMXwwLGNbKGNbbD4+Ml18MCkrMTY+PjJdfDApfDA7Y1tDPj4yXT1jWyhjW2s+PjJdfDApKzQyND4+Ml07Y1tUPj4yXT1QdihjW2s+PjJdfDAsY1tsPj4yXXwwLHQpfDA7Y1tIPj4yXT1jWyhjW2w+PjJdfDApKzQ4Pj4yXTtjWyhjW2w+PjJdfDApKzQ4Pj4yXT1jW1E+PjJdO1o9bkUoYlsoY1tsPj4yXXwwKSs2Pj4xXXwwLGJbKGNbUT4+Ml18MCkrNj4+MV18MCl8MDtiWyhjW2w+PjJdfDApKzY+PjFdPVo7aWYoKChjWyhjW1E+PjJdfDApKzU2Pj4yXXwwKSE9MD8oWj0oRnkoY1soY1tRPj4yXXwwKSs1Nj4+Ml18MCxGKXwwKSE9MCxaJihjW0Y+PjJdfDApPjApOjApPyhYPWJbKGNbbD4+Ml18MCkrNj4+MV18MCxaPWNbRj4+Ml18MCwoWHwwKT4oKE1qKFosKChafDApPDApPDwzMT4+MzEpfDApPDwxNj4+MTZ8MCkpOjApe1o9Y1tGPj4yXXwwO1o9TWooWiwoKFp8MCk8MCk8PDMxPj4zMSl8MDtiWyhjW2w+PjJdfDApKzY+PjFdPVp9aWYoIShjW24+PjJdfDApKWJyZWFrIGI7WnooY1tZPj4yXXwwLGNbbj4+Ml18MCk7YnJlYWsgYn1jYXNlIDExNTpjYXNlIDExNzp7YVtHPj4wXT0wO2NbUj4+Ml09MTtpZigoZFt0Pj4wXXwwKT09KGNbUj4+Ml18MCkpY1tXPj4yXT1jW3QrOD4+Ml07ZWxzZXtWPShjW2s+PjJdfDApKzQwfDA7Wj1jW1Y+PjJdfDA7Y1tWPj4yXT1aKzE7Y1tXPj4yXT1aO2Nbbz4+Ml09aXgoY1tZPj4yXXwwLDEwNyxjW1c+PjJdfDAsMCl8MDtjWyhjW2w+PjJdfDApKzIwPj4yXT1jW28+PjJdO1o9KG16KGNbbD4+Ml18MCl8MCkrOHwwO2NbWj4+Ml09Y1taPj4yXXwzMn12QihYLGNbUj4+Ml18MCxjW1c+PjJdfDApO2NbQj4+Ml09Y1soY1trPj4yXXwwKSs0MjQ+PjJdO2NbVD4+Ml09UHYoY1trPj4yXXwwLGNbUT4+Ml18MCxYKXwwO2lmKGNbVD4+Ml18MClicmVhayBhO2lmKChkWyhjW2w+PjJdfDApKzQ+PjBdfDApPT0xMTcpYVtHPj4wXT0yO2Vsc2UgYVtHPj4wXT0xO2NbKGNbbD4+Ml18MCkrNDg+PjJdPTA7Y1tMPj4yXT1jWyhjW2w+PjJdfDApKzU2Pj4yXTtjWyhjW2w+PjJdfDApKzU2Pj4yXT0wO2NbTz4+Ml09Y1soY1tsPj4yXXwwKSs2MD4+Ml07Y1soY1tsPj4yXXwwKSs2MD4+Ml09MDthW1g+PjBdPWFbRz4+MF18MDtjW0M+PjJdPWNbKGNbaz4+Ml18MCkrNDI0Pj4yXTtjW1Q+PjJdPVB2KGNbaz4+Ml18MCxjW2w+PjJdfDAsWCl8MDtldihjW3M+PjJdfDAsY1soY1tsPj4yXXwwKSs0ND4+Ml18MCk7Y1tIPj4yXT1jWyhjW2w+PjJdfDApKzQ4Pj4yXTtjWyhjW2w+PjJdfDApKzQ4Pj4yXT1jW1E+PjJdO2NbKGNbbD4+Ml18MCkrNDQ+PjJdPTA7aWYoKGRbKGNbbD4+Ml18MCkrND4+MF18MCk9PTExNSl7Wj1uRShiWyhjW2w+PjJdfDApKzY+PjFdfDAsYlsoY1tRPj4yXXwwKSs2Pj4xXXwwKXwwO2JbKGNbbD4+Ml18MCkrNj4+MV09Wn1pdihjW3M+PjJdfDAsY1soY1tsPj4yXXwwKSs1Nj4+Ml18MCk7Y1soY1tsPj4yXXwwKSs1Nj4+Ml09Y1tMPj4yXTtjWyhjW2w+PjJdfDApKzYwPj4yXT1jW08+PjJdO2NbKGNbbD4+Ml18MCkrMTI+PjJdPTA7Y1soY1tsPj4yXXwwKSsxNj4+Ml09MDtpZigoZFt0Pj4wXXwwKT09KGNbUj4+Ml18MCkpYnJlYWsgYjtpZigoZFt0Pj4wXXwwKT09OSl7Y1tJPj4yXT1jW2w+PjJdO3doaWxlKDEpe2lmKCEoY1soY1tJPj4yXXwwKSs0OD4+Ml18MCkpYnJlYWs7Y1tJPj4yXT1jWyhjW0k+PjJdfDApKzQ4Pj4yXX1kSChjW2s+PjJdfDAsY1soY1tJPj4yXXwwKSsyOD4+Ml18MCxjW2NbST4+Ml0+PjJdfDApfWNbdj4+Ml09V3ooY1tZPj4yXXwwKXwwO2NbeD4+Ml09V3ooY1tZPj4yXXwwKXwwO0tHKGNbaz4+Ml18MCxjW2w+PjJdfDAsY1t2Pj4yXXwwKTtpeChjW1k+PjJdfDAsNTcsY1tXPj4yXXwwLGNbdj4+Ml18MCl8MDtjW3o+PjJdPXd4KGNbWT4+Ml18MCl8MDtTRyhjW2s+PjJdfDAsY1tsPj4yXXwwLGNbY1tsPj4yXT4+Ml18MCxjW1c+PjJdfDAsMCwwLHQsY1t4Pj4yXXwwLGNbdj4+Ml18MCk7X3ooY1tZPj4yXXwwLGNbeD4+Ml18MCk7aXgoY1tZPj4yXXwwLDcsY1tXPj4yXXwwLGNbej4+Ml18MCl8MDtfeihjW1k+PjJdfDAsY1t2Pj4yXXwwKTtpeChjW1k+PjJdfDAsMTExLGNbVz4+Ml18MCwwKXwwO2JyZWFrIGJ9ZGVmYXVsdDp7Wj0oY1trPj4yXXwwKSs0MHwwO1g9Y1taPj4yXXwwO2NbWj4+Ml09WCsxO2NbVT4+Ml09WDtYPShjW2s+PjJdfDApKzQwfDA7Wj1jW1g+PjJdfDA7Y1tYPj4yXT1aKzE7Y1tWPj4yXT1aO2NbcD4+Ml09aXgoY1tZPj4yXXwwLDEwNyxjW1U+PjJdfDAsMCl8MDtjWyhjW2w+PjJdfDApKzIwPj4yXT1jW3A+PjJdO1o9KG16KGNbbD4+Ml18MCl8MCkrOHwwO2NbWj4+Ml09Y1taPj4yXXwzMjt2QihELDEsY1tVPj4yXXwwKTtjW0I+PjJdPWNbKGNbaz4+Ml18MCkrNDI0Pj4yXTtjW1Q+PjJdPVB2KGNbaz4+Ml18MCxjW1E+PjJdfDAsRCl8MDtpZihjW1Q+PjJdfDApYnJlYWsgYTtjW3A+PjJdPWl4KGNbWT4+Ml18MCwxMDcsY1tWPj4yXXwwLDApfDA7Y1soY1tsPj4yXXwwKSsyMCs0Pj4yXT1jW3A+PjJdO2NbKGNbbD4+Ml18MCkrNDg+PjJdPTA7Y1tNPj4yXT1jWyhjW2w+PjJdfDApKzU2Pj4yXTtjWyhjW2w+PjJdfDApKzU2Pj4yXT0wO2NbUD4+Ml09Y1soY1tsPj4yXXwwKSs2MD4+Ml07Y1soY1tsPj4yXXwwKSs2MD4+Ml09MDtjW0QrOD4+Ml09Y1tWPj4yXTtjW0M+PjJdPWNbKGNbaz4+Ml18MCkrNDI0Pj4yXTtjW1Q+PjJdPVB2KGNbaz4+Ml18MCxjW2w+PjJdfDAsRCl8MDtjW0g+PjJdPWNbKGNbbD4+Ml18MCkrNDg+PjJdO2NbKGNbbD4+Ml18MCkrNDg+PjJdPWNbUT4+Ml07aWYoKGJbKGNbbD4+Ml18MCkrNj4+MV18MCk+KGJbKGNbUT4+Ml18MCkrNj4+MV18MCkpYlsoY1tsPj4yXXwwKSs2Pj4xXT1iWyhjW1E+PjJdfDApKzY+PjFdfDA7aXYoY1tzPj4yXXwwLGNbKGNbbD4+Ml18MCkrNTY+PjJdfDApO2NbKGNbbD4+Ml18MCkrNTY+PjJdPWNbTT4+Ml07Y1soY1tsPj4yXXwwKSs2MD4+Ml09Y1tQPj4yXTtpZigoZFt0Pj4wXXwwKT09OSl7Y1tKPj4yXT1jW2w+PjJdO3doaWxlKDEpe2lmKCEoY1soY1tKPj4yXXwwKSs0OD4+Ml18MCkpYnJlYWs7Y1tKPj4yXT1jWyhjW0o+PjJdfDApKzQ4Pj4yXX1kSChjW2s+PjJdfDAsY1soY1tKPj4yXXwwKSsyOD4+Ml18MCxjW2NbSj4+Ml0+PjJdfDApfWNbdz4+Ml09V3ooY1tZPj4yXXwwKXwwO2NbeT4+Ml09V3ooY1tZPj4yXXwwKXwwO0tHKGNbaz4+Ml18MCxjW2w+PjJdfDAsY1t3Pj4yXXwwKTtpeChjW1k+PjJdfDAsNTcsY1tVPj4yXXwwLGNbdz4+Ml18MCl8MDtjW1M+PjJdPXZ4KGNbaz4+Ml18MCl8MDtjW0E+PjJdPWl4KGNbWT4+Ml18MCwxMjEsY1tVPj4yXXwwLGNbUz4+Ml18MCl8MDtJaChjW1k+PjJdfDAsMzAsY1tWPj4yXXwwLGNbeT4+Ml18MCxjW1M+PjJdfDAsMCl8MDt4eChjW2s+PjJdfDAsY1tTPj4yXXwwKTtTRyhjW2s+PjJdfDAsY1tsPj4yXXwwLGNbY1tsPj4yXT4+Ml18MCxjW1U+PjJdfDAsMCwwLHQsY1t5Pj4yXXwwLGNbdz4+Ml18MCk7X3ooY1tZPj4yXXwwLGNbeT4+Ml18MCk7aXgoY1tZPj4yXXwwLDcsY1tVPj4yXXwwLGNbQT4+Ml18MCl8MDtfeihjW1k+PjJdfDAsY1t3Pj4yXXwwKTtpeChjW1k+PjJdfDAsMTExLGNbVj4+Ml18MCwwKXwwO2l4KGNbWT4+Ml18MCwxMTEsY1tVPj4yXXwwLDApfDA7YnJlYWsgYn19fXdoaWxlKDApO3NIKGNbaz4+Ml18MCxkWyhjW2w+PjJdfDApKzQ+PjBdfDAsY1tCPj4yXXwwLGNbQz4+Ml18MCwoZFsoY1tsPj4yXXwwKSs0Pj4wXXwwKSE9MTE2JjEpO2lmKGNbKGNbbD4+Ml18MCkrOD4+Ml0mMzIpe2NbRT4+Ml09Y1tjW2NbbD4+Ml0+PjJdPj4yXTtjW0s+PjJdPWlBKGNbcz4+Ml18MCxjW0U+PjJdfDAsMSl8MDtpZighKGNbSz4+Ml18MCkpe2NbVD4+Ml09NzticmVha31jW3U+PjJdPTA7Y1tyPj4yXT0oY1tLPj4yXXwwKSsyMDt3aGlsZSgxKXtpZigoY1t1Pj4yXXwwKT49KGNbRT4+Ml18MCkpYnJlYWs7Wj10SChjW2s+PjJdfDAsY1tsPj4yXXwwLGNbdT4+Ml18MCl8MDtjW2Nbcj4+Ml0+PjJdPVo7aWYoIShjW2Nbcj4+Ml0+PjJdfDApKWNbY1tyPj4yXT4+Ml09Y1soY1tzPj4yXXwwKSs4Pj4yXTtjW3U+PjJdPShjW3U+PjJdfDApKzE7Y1tyPj4yXT0oY1tyPj4yXXwwKSs0fWNbTj4+Ml09Y1tsPj4yXTt3aGlsZSgxKXtpZighKGNbTj4+Ml18MCkpYnJlYWs7Y1t1Pj4yXT0wO3doaWxlKDEpe2lmKChjW3U+PjJdfDApPj0yKWJyZWFrO2NbcT4+Ml09Y1soY1tOPj4yXXwwKSsyMCsoY1t1Pj4yXTw8Mik+PjJdO2lmKChjW3E+PjJdfDApPDApYnJlYWs7ZEEoY1tZPj4yXXwwLGNbcT4+Ml18MCxjW0U+PjJdfDApO1g9Y1tZPj4yXXwwO1o9Y1txPj4yXXwwO01oKFgsWixuQShjW0s+PjJdfDApfDAsLTYpO2NbKGNbTj4+Ml18MCkrMjArKGNbdT4+Ml08PDIpPj4yXT0tMTtjW3U+PjJdPShjW3U+PjJdfDApKzF9Y1tOPj4yXT1jWyhjW04+PjJdfDApKzQ4Pj4yXX1qQShjW0s+PjJdfDApfX1lbHNle1o9Y1trPj4yXXwwO2NbaD4+Ml09U3koZFsoY1tsPj4yXXwwKSs0Pj4wXXwwKXwwO0VoKFosMzU4MzEsaCk7Y1tUPj4yXT0xfXdoaWxlKDApO2NbKGNbbT4+Ml18MCkrMTI+PjJdPWNbdCsxMj4+Ml07Y1soY1ttPj4yXXwwKSsxNj4+Ml09Y1t0KzE2Pj4yXTtmdihjW3M+PjJdfDAsY1tIPj4yXXwwKTtjW2o+PjJdPWNbVD4+Ml07Wj1jW2o+PjJdfDA7aT1fO3JldHVybiBafDB9ZnVuY3Rpb24gR0coYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wO2Q9aTtpPWkrMTZ8MDtlPWQrNHwwO2I9ZDtjW2U+PjJdPWE7Y1tiPj4yXT0wO0J6KGNbZT4+Ml18MCxiKTtpPWQ7cmV0dXJuIGNbYj4+Ml18MH1mdW5jdGlvbiBIRyhhLGIsZSxmKXthPWF8MDtiPWJ8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wO3E9aTtpPWkrMzJ8MDtnPXErMjh8MDtoPXErMjR8MDtqPXErMjB8MDtrPXErMTZ8MDtsPXErMTJ8MDtuPXErOHwwO209cSs0fDA7bz1xO2NbaD4+Ml09YTtjW2o+PjJdPWI7Y1trPj4yXT1lO2NbbD4+Ml09ZjtjW20+PjJdPTA7aWYoIShjW2s+PjJdfDApKXtjW2c+PjJdPTA7cD1jW2c+PjJdfDA7aT1xO3JldHVybiBwfDB9Y1tvPj4yXT1jW2o+PjJdO3doaWxlKDEpe2lmKCEoY1tvPj4yXXwwKSlicmVhaztpZihjWyhjW28+PjJdfDApKzg+PjJdJjgyMDApe3A9NjticmVha31jW28+PjJdPWNbKGNbbz4+Ml18MCkrNDg+PjJdfWlmKChwfDApPT02KXtjW2c+PjJdPTA7cD1jW2c+PjJdfDA7aT1xO3JldHVybiBwfDB9aWYoY1soY1tqPj4yXXwwKSs1Nj4+Ml18MCl7Y1tnPj4yXT0wO3A9Y1tnPj4yXXwwO2k9cTtyZXR1cm4gcHwwfXdoaWxlKDEpe2lmKChkW2Nbaz4+Ml0+PjBdfDB8MCkhPTI4KWJyZWFrO3A9SEcoY1toPj4yXXwwLGNbaj4+Ml18MCxjWyhjW2s+PjJdfDApKzE2Pj4yXXwwLGNbbD4+Ml18MCl8MDtjW20+PjJdPShjW20+PjJdfDApK3A7Y1trPj4yXT1jWyhjW2s+PjJdfDApKzEyPj4yXX1pZihjWyhjW2s+PjJdfDApKzQ+PjJdJjEpe2NbZz4+Ml09MDtwPWNbZz4+Ml18MDtpPXE7cmV0dXJuIHB8MH1hOmRvIGlmKGhFKGNbaz4+Ml18MCxjW2w+PjJdfDApfDApe2NbbT4+Ml09KGNbbT4+Ml18MCkrMTt3aGlsZSgxKXtpZighKGNbaj4+Ml18MCkpYnJlYWsgYTtjW24+PjJdPUl5KGNbaD4+Ml18MCxjW2s+PjJdfDAsMCl8MDtjW24+PjJdPW1IKGNbaD4+Ml18MCxjW24+PjJdfDAsY1tsPj4yXXwwLGNbY1tqPj4yXT4+Ml18MCl8MDtwPXd6KGNbaD4+Ml18MCxjWyhjW2o+PjJdfDApKzMyPj4yXXwwLGNbbj4+Ml18MCl8MDtjWyhjW2o+PjJdfDApKzMyPj4yXT1wO2Nbaj4+Ml09Y1soY1tqPj4yXXwwKSs0OD4+Ml19fXdoaWxlKDApO2NbZz4+Ml09Y1ttPj4yXTtwPWNbZz4+Ml18MDtpPXE7cmV0dXJuIHB8MH1mdW5jdGlvbiBJRyhiKXtiPWJ8MDt2YXIgZD0wLGU9MDtkPWk7aT1pKzE2fDA7ZT1kO2NbZT4+Ml09YjthWyhjW2U+PjJdfDApKzE5Pj4wXT0wO2NbKGNbZT4+Ml18MCkrMjg+PjJdPTA7aT1kO3JldHVybn1mdW5jdGlvbiBKRyhiLGQsZSxmKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MDtxPWk7aT1pKzQ4fDA7Zz1xKzM2fDA7aD1xKzMyfDA7aj1xKzI4fDA7cj1xKzI0fDA7bT1xKzIwfDA7bz1xKzE2fDA7cD1xKzEyfDA7az1xKzh8MDtsPXErNHwwO249cTtjW2c+PjJdPWI7Y1toPj4yXT1kO2Nbaj4+Ml09ZTtjW3I+PjJdPWY7Y1trPj4yXT1jW2NbZz4+Ml0+PjJdO2NbbT4+Ml09Y1tjW2g+PjJdPj4yXTtjW28+PjJdPWlBKGNbaz4+Ml18MCwoY1ttPj4yXXwwKS0oY1tqPj4yXXwwKXwwLChjW3I+PjJdfDApKzF8MCl8MDtpZighKGNbbz4+Ml18MCkpe3I9Y1tvPj4yXXwwO2k9cTtyZXR1cm4gcnwwfWNbbD4+Ml09Y1tqPj4yXTtjW3A+PjJdPShjWyhjW2g+PjJdfDApKzQ+PjJdfDApKygoY1tqPj4yXXwwKSoyMHwwKTt3aGlsZSgxKXtpZigoY1tsPj4yXXwwKT49KGNbbT4+Ml18MCkpYnJlYWs7Y1tuPj4yXT1meShjW2c+PjJdfDAsY1tjW3A+PjJdPj4yXXwwKXwwO2lmKCEoY1tuPj4yXXwwKSljW24+PjJdPWNbKGNbaz4+Ml18MCkrOD4+Ml07Y1soY1tvPj4yXXwwKSsyMCsoKGNbbD4+Ml18MCktKGNbaj4+Ml18MCk8PDIpPj4yXT1jW24+PjJdO2FbKGNbKGNbbz4+Ml18MCkrMTY+PjJdfDApKygoY1tsPj4yXXwwKS0oY1tqPj4yXXwwKSk+PjBdPWFbKGNbcD4+Ml18MCkrMTI+PjBdfDA7Y1tsPj4yXT0oY1tsPj4yXXwwKSsxO2NbcD4+Ml09KGNbcD4+Ml18MCkrMjB9cj1jW28+PjJdfDA7aT1xO3JldHVybiByfDB9ZnVuY3Rpb24gS0coYSxkLGUpe2E9YXwwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wO249aTtpPWkrMzJ8MDtmPW4rMjR8MDtnPW4rMjB8MDtoPW4rMTZ8MDttPW4rMTJ8MDtqPW4rOHwwO2s9bis0fDA7bD1uO2NbZj4+Ml09YTtjW2c+PjJdPWQ7Y1toPj4yXT1lO2NbbT4+Ml09MDtjW2o+PjJdPTA7aWYoY1soY1tnPj4yXXwwKSsxMj4+Ml18MCl7aT1uO3JldHVybn1FQyhjW2Y+PjJdfDApO2lmKCEoY1soY1tnPj4yXXwwKSs1Nj4+Ml18MCkpe2k9bjtyZXR1cm59ZD0oY1tmPj4yXXwwKSs0NHwwO2E9KGNbZD4+Ml18MCkrMXwwO2NbZD4+Ml09YTtjW2o+PjJdPWE7Y1soY1tnPj4yXXwwKSsxMj4+Ml09YTtjW20+PjJdPWR4KGNbZj4+Ml18MCl8MDtkbyBpZihGeShjWyhjW2c+PjJdfDApKzU2Pj4yXXwwLGwpfDApe2l4KGNbbT4+Ml18MCw3NixjW2w+PjJdfDAsY1tqPj4yXXwwKXwwO2lmKCEoY1tsPj4yXXwwKSl7WXooY1ttPj4yXXwwLGNbaD4+Ml18MCl8MDticmVha31pZigoY1tsPj4yXXwwKT49MD8oZD1iWyhjW2c+PjJdfDApKzY+PjFdfDAsYT1jW2w+PjJdfDAsKGR8MCk+KChNaihhLCgoYXwwKTwwKTw8MzE+PjMxKXwwKTw8MTY+PjE2fDApKTowKXthPWNbbD4+Ml18MDthPU1qKGEsKChhfDApPDApPDwzMT4+MzEpfDA7YlsoY1tnPj4yXXwwKSs2Pj4xXT1hO2E9KGNbZz4+Ml18MCkrOHwwO2NbYT4+Ml09Y1thPj4yXXwxNjM4NH19ZWxzZXtSQShjW2Y+PjJdfDAsY1soY1tnPj4yXXwwKSs1Nj4+Ml18MCxjW2o+PjJdfDApO1N6KGNbbT4+Ml18MCwxNyxjW2o+PjJdfDApfDA7aXgoY1ttPj4yXXwwLDIyLGNbaj4+Ml18MCxjW2g+PjJdfDApfDB9d2hpbGUoMCk7aWYoIShjWyhjW2c+PjJdfDApKzYwPj4yXXwwKSl7aT1uO3JldHVybn1kPShjW2Y+PjJdfDApKzQ0fDA7YT0oY1tkPj4yXXwwKSsxfDA7Y1tkPj4yXT1hO2Nbaz4+Ml09YTtjWyhjW2c+PjJdfDApKzE2Pj4yXT1hO2E9KGNbZj4+Ml18MCkrNDR8MDtjW2E+PjJdPShjW2E+PjJdfDApKzE7UkEoY1tmPj4yXXwwLGNbKGNbZz4+Ml18MCkrNjA+PjJdfDAsY1trPj4yXXwwKTtTeihjW20+PjJdfDAsMTcsY1trPj4yXXwwKXwwO2p4KGNbbT4+Ml18MCwxNDYsY1tqPj4yXXwwLChjW2s+PjJdfDApKzF8MCxjW2s+PjJdfDApfDA7aT1uO3JldHVybn1mdW5jdGlvbiBMRyhiLGQsZSl7Yj1ifDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MDtmPWk7aT1pKzE2fDA7aD1mKzR8MDtnPWY7aj1mKzh8MDtjW2g+PjJdPWI7Y1tnPj4yXT1kO2Fbaj4+MF09ZTtiPWFbaj4+MF18MDthWyhlQShjW2g+PjJdfDAsY1tnPj4yXXwwKXwwKT4+MF09YjtpPWY7cmV0dXJufWZ1bmN0aW9uIE1HKGEpe2E9YXwwO3ZhciBkPTAsZT0wO2U9aTtpPWkrMTZ8MDtkPWU7Y1tkPj4yXT1hO2k9ZTtyZXR1cm4gYlsoY1tkPj4yXXwwKSs3Mj4+MV18MH1mdW5jdGlvbiBORyhhKXthPWF8MDt2YXIgYj0wLGU9MDtlPWk7aT1pKzE2fDA7Yj1lO2NbYj4+Ml09YTtpPWU7cmV0dXJuIGRbKGNbYj4+Ml18MCkrNDc+PjBdfDB8MH1mdW5jdGlvbiBPRyhiKXtiPWJ8MDt2YXIgZD0wLGU9MDtlPWk7aT1pKzE2fDA7ZD1lO2NbZD4+Ml09YjtpPWU7cmV0dXJuIGFbKGNbZD4+Ml18MCkrNDM+PjBdfDB9ZnVuY3Rpb24gUEcoYSl7YT1hfDA7dmFyIGI9MCxlPTA7ZT1pO2k9aSsxNnwwO2I9ZTtjW2I+PjJdPWE7aT1lO3JldHVybiBkWyhjW2I+PjJdfDApKzQ4Pj4wXXwwfDB9ZnVuY3Rpb24gUUcoYSl7YT1hfDA7dmFyIGI9MCxkPTA7ZD1pO2k9aSsxNnwwO2I9ZDtjW2I+PjJdPWE7aT1kO3JldHVybiBjWyhjW2I+PjJdfDApKzI4Pj4yXXwwfWZ1bmN0aW9uIFJHKGEpe2E9YXwwO3ZhciBiPTAsZD0wO2Q9aTtpPWkrMTZ8MDtiPWQ7Y1tiPj4yXT1hO2k9ZDtyZXR1cm4gY1soY1tiPj4yXXwwKSszMj4+Ml18MH1mdW5jdGlvbiBTRyhiLGYsZyxoLGosayxsLG0sbil7Yj1ifDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7bD1sfDA7bT1tfDA7bj1ufDA7dmFyIG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MCxFPTAsRj0wLEc9MCxIPTAsST0wLEo9MCxLPTAsTD0wLE09MCxOPTAsTz0wLFA9MCxRPTAsUj0wLFM9MCxUPTAsVT0wLFY9MDtWPWk7aT1pKzE0NHwwO1A9VisxMjR8MDtRPVYrMTIwfDA7dD1WKzExNnwwO289VisxMTJ8MDtSPVYrMTA4fDA7cD1WKzEwNHwwO0w9VisxMDB8MDt1PVYrOTZ8MDtTPVYrOTJ8MDtVPVYrODh8MDtEPVYrODR8MDtyPVYrODB8MDtUPVYrNzZ8MDtDPVYrNzJ8MDtPPVYrNjh8MDtOPVYrNjR8MDtNPVYrNjB8MDtxPVYrMTI4fDA7cz1WKzU2fDA7dz1WKzUyfDA7QT1WKzQ4fDA7eD1WKzQ0fDA7eT1WKzQwfDA7Rz1WKzM2fDA7dj1WKzMyfDA7Sj1WKzI4fDA7SD1WKzI0fDA7RT1WKzIwfDA7ST1WKzE2fDA7Sz1WKzEyfDA7ej1WKzh8MDtCPVYrNHwwO0Y9VjtjW1A+PjJdPWI7Y1tRPj4yXT1mO2NbdD4+Ml09ZztjW28+PjJdPWg7Y1tSPj4yXT1qO2NbcD4+Ml09aztjW0w+PjJdPWw7Y1t1Pj4yXT1tO2NbUz4+Ml09bjtjW1U+PjJdPWNbKGNbUD4+Ml18MCkrOD4+Ml07Y1tDPj4yXT1kW2NbTD4+Ml0+PjBdO2NbTz4+Ml09Y1soY1tMPj4yXXwwKSs4Pj4yXTtjW00+PjJdPTA7aWYoY1twPj4yXXwwKW49ZFsoY1twPj4yXXwwKSsxPj4wXXwwO2Vsc2Ugbj0wO2Nbcj4+Ml09bjtpZigoY1tSPj4yXXwwKSE9MD8oY1tjW1I+PjJdPj4yXXwwKT09MDowKWNbUj4+Ml09MDtpZighKChjW1I+PjJdfDApIT0wfChjW3I+PjJdfDApIT0wKSlmSChjW1U+PjJdfDAsY1soY1tRPj4yXXwwKSsxNj4+Ml18MCxjW3U+PjJdfDApO2NbTj4+Ml09Y1tjW3Q+PjJdPj4yXTtpZihjWyhjW0w+PjJdfDApKzEyPj4yXXwwKXtpZigoKGNbKGNbTD4+Ml18MCkrMTI+PjJdfDApKyhjW04+PjJdfDApfDApPihjWyhjW1A+PjJdfDApKzQ0Pj4yXXwwKSl7aD0oY1tQPj4yXXwwKSs0NHwwO2NbaD4+Ml09KGNbaD4+Ml18MCkrKGNbTj4+Ml18MCl9fWVsc2V7aWYoY1tSPj4yXXwwKXtjW00+PjJdPWNbY1tjW1I+PjJdPj4yXT4+Ml07aWYoISgoZFsoY1tSPj4yXXwwKSsyOD4+MF18MCkmMSkpY1tNPj4yXT0oY1tNPj4yXXwwKSsxO2g9KGNbUD4+Ml18MCkrNDR8MDtjW2g+PjJdPShjW2g+PjJdfDApKyhjW00+PjJdfDApfWNbKGNbTD4+Ml18MCkrMTI+PjJdPShjWyhjW1A+PjJdfDApKzQ0Pj4yXXwwKSsxO2g9KGNbUD4+Ml18MCkrNDR8MDtjW2g+PjJdPShjW2g+PjJdfDApKyhjW04+PjJdfDApfWNbKGNbTD4+Ml18MCkrMTY+PjJdPWNbTj4+Ml07Y1tUPj4yXT1jWyhjW0w+PjJdfDApKzEyPj4yXTthOmRvIGlmKChjW28+PjJdfDApPDApe2lmKChjW0M+PjJdfDApIT0zKXtpZigoY1tDPj4yXXwwKT09MTB8KGNbQz4+Ml18MCk9PTl8KGNbQz4+Ml18MCk9PTEzKWFbcT4+MF09MTtlbHNlIGFbcT4+MF09MDthQihjW1A+PjJdfDAsY1t0Pj4yXXwwLGNbVD4+Ml18MCwwLGFbcT4+MF18MCl8MH19ZWxzZXtjW0Q+PjJdPTA7d2hpbGUoMSl7aWYoKGNbRD4+Ml18MCk+PShjW04+PjJdfDApKWJyZWFrIGE7angoY1tVPj4yXXwwLDk2LGNbbz4+Ml18MCxjW0Q+PjJdfDAsKGNbVD4+Ml18MCkrKGNbRD4+Ml18MCl8MCl8MDtjW0Q+PjJdPShjW0Q+PjJdfDApKzF9fXdoaWxlKDApO2lmKGNbcj4+Ml18MCl7c3dpdGNoKGRbKGNbcD4+Ml18MCkrMT4+MF18MHwwKXtjYXNlIDI6e2NbQT4+Ml09KGNbKGNbUD4+Ml18MCkrNDQ+PjJdfDApKzE7cj0oY1tQPj4yXXwwKSs0NHwwO2Nbcj4+Ml09KGNbcj4+Ml18MCkrKGNbTj4+Ml18MCk7SEEoY1tVPj4yXXwwLGNbKGNbcD4+Ml18MCkrOD4+Ml18MCl8MDtjW3M+PjJdPWVBKGNbVT4+Ml18MCxjWyhjW3A+PjJdfDApKzg+PjJdfDApfDA7YVtjW3M+PjJdPj4wXT03OTtjWyhjW3M+PjJdfDApKzQ+PjJdPTE7Y1soY1tzPj4yXXwwKSs4Pj4yXT1jW0E+PjJdO2Nbdz4+Ml09KHd4KGNbVT4+Ml18MCl8MCkrKGNbTj4+Ml18MCk7Y1tEPj4yXT0wO3doaWxlKDEpe2lmKChjW0Q+PjJdfDApPj0oY1tOPj4yXXwwKSlicmVhaztjW3g+PjJdPWZ5KGNbUD4+Ml18MCxjWyhjWyhjW3Q+PjJdfDApKzQ+PjJdfDApKygoY1tEPj4yXXwwKSoyMHwwKT4+Ml18MCl8MDtuPWNbVT4+Ml18MDttPShjW1Q+PjJdfDApKyhjW0Q+PjJdfDApfDA7aWYoKGNbRD4+Ml18MCk8KChjW04+PjJdfDApLTF8MCkpangobiwzNixtLGNbdz4+Ml18MCwoY1tBPj4yXXwwKSsoY1tEPj4yXXwwKXwwKXwwO2Vsc2UgangobiwzNyxtLGNbdT4+Ml18MCwoY1tBPj4yXXwwKSsoY1tEPj4yXXwwKXwwKXwwO01oKGNbVT4+Ml18MCwtMSxjW3g+PjJdfDAsLTQpO0poKGNbVT4+Ml18MCwtMTI4KTtjW0Q+PjJdPShjW0Q+PjJdfDApKzF9angoY1tVPj4yXXwwLDg0LGNbVD4+Ml18MCxjW0E+PjJdfDAsKGNbTj4+Ml18MCktMXwwKXwwO2JyZWFrfWNhc2UgMTp7SEEoY1tVPj4yXXwwLGNbKGNbcD4+Ml18MCkrOD4+Ml18MCl8MDticmVha31kZWZhdWx0OmdIKGNbUD4+Ml18MCxjWyhjW3A+PjJdfDApKzQ+PjJdfDAsY1t1Pj4yXXwwLGNbTj4+Ml18MCxjW1Q+PjJdfDApfWlmKCEoY1tSPj4yXXwwKSlmSChjW1U+PjJdfDAsY1soY1tRPj4yXXwwKSsxNj4+Ml18MCxjW3U+PjJdfDApfWI6ZG8gc3dpdGNoKGNbQz4+Ml18MCl7Y2FzZSAxOntjW3k+PjJdPXZ4KGNbUD4+Ml18MCl8MDtqeChjW1U+PjJdfDAsOTksY1tUPj4yXXwwLGNbTj4+Ml18MCxjW3k+PjJdfDApfDA7aXgoY1tVPj4yXXwwLDEyNixjW08+PjJdfDAsY1t5Pj4yXXwwKXwwO3h4KGNbUD4+Ml18MCxjW3k+PjJdfDApO2JyZWFrfWNhc2UgMjp7angoY1tVPj4yXXwwLDEyNyxjW08+PjJdfDAsY1tUPj4yXXwwLGNbTj4+Ml18MCl8MDticmVha31jYXNlIDEyOmNhc2UgMTQ6Y2FzZSA2OmNhc2UgNTp7Y1tHPj4yXT1DQShjW1A+PjJdfDAsKGNbTT4+Ml18MCkrMXwwKXwwO2p4KGNbVT4+Ml18MCw5OSxjW1Q+PjJdfDAsY1tOPj4yXXwwLChjW0c+PjJdfDApKyhjW00+PjJdfDApfDApfDA7aWYoKGNbQz4+Ml18MCk9PTYpe2Nbdj4+Ml09KHd4KGNbVT4+Ml18MCl8MCkrNDtJaChjW1U+PjJdfDAsMzEsKGNbTz4+Ml18MCkrMXwwLGNbdj4+Ml18MCxjW0c+PjJdfDAsMCl8MDtpeChjW1U+PjJdfDAsMTI2LChjW08+PjJdfDApKzF8MCxjW0c+PjJdfDApfDB9bj1jW1A+PjJdfDA7aWYoY1tSPj4yXXwwKWxIKG4sY1tSPj4yXXwwLGNbUT4+Ml18MCwoY1tHPj4yXXwwKSsoY1tNPj4yXXwwKXwwLGNbVD4+Ml18MCwxLGNbTT4+Ml18MCk7ZWxzZXtjW0o+PjJdPXZ4KG4pfDA7aXgoY1tVPj4yXXwwLDExNCxjW08+PjJdfDAsY1tKPj4yXXwwKXwwO2p4KGNbVT4+Ml18MCwxMTUsY1tPPj4yXXwwLGNbRz4+Ml18MCxjW0o+PjJdfDApfDA7SmgoY1tVPj4yXXwwLDgpO3h4KGNbUD4+Ml18MCxjW0o+PjJdfDApfUZBKGNbUD4+Ml18MCxjW0c+PjJdfDAsKGNbTT4+Ml18MCkrMXwwKTticmVha31jYXNlIDExOntuPWNbUD4+Ml18MDtpZihjW1I+PjJdfDApe2xIKG4sY1tSPj4yXXwwLGNbUT4+Ml18MCxjW1Q+PjJdfDAsY1tUPj4yXXwwLGNbTj4+Ml18MCxjW00+PjJdfDApO2JyZWFrIGJ9ZWxzZXtjW0g+PjJdPXZ4KG4pfDA7bXgoY1tVPj4yXXwwLDk5LGNbVD4+Ml18MCxjW04+PjJdfDAsY1tIPj4yXXwwLGNbKGNbTD4+Ml18MCkrND4+Ml18MCxjW04+PjJdfDApfDA7V0EoY1tQPj4yXXwwLGNbVD4+Ml18MCxjW04+PjJdfDApO2l4KGNbVT4+Ml18MCwxMjYsY1tPPj4yXXwwLGNbSD4+Ml18MCl8MDt4eChjW1A+PjJdfDAsY1tIPj4yXXwwKTticmVhayBifX1jYXNlIDM6e2l4KGNbVT4+Ml18MCw3NiwxLGNbTz4+Ml18MCl8MDticmVha31jYXNlIDEwOntpZihjW1I+PjJdfDApbEgoY1tQPj4yXXwwLGNbUj4+Ml18MCxjW1E+PjJdfDAsY1tUPj4yXXwwLGNbVD4+Ml18MCxjW04+PjJdfDAsY1tNPj4yXXwwKTticmVha31jYXNlIDk6Y2FzZSAxMzp7aWYoY1tSPj4yXXwwKXtsSChjW1A+PjJdfDAsY1tSPj4yXXwwLGNbUT4+Ml18MCxjW1Q+PjJdfDAsY1tUPj4yXXwwLGNbTj4+Ml18MCxjW00+PjJdfDApO2JyZWFrIGJ9bj1jW1U+PjJdfDA7aWYoKGNbQz4+Ml18MCk9PTEzKXtTeihuLDE2LGNbKGNbTD4+Ml18MCkrOD4+Ml18MCl8MDticmVhayBifWVsc2V7aXgobiw4NyxjW1Q+PjJdfDAsY1tOPj4yXXwwKXwwO1dBKGNbUD4+Ml18MCxjW1Q+PjJdfDAsY1tOPj4yXXwwKTticmVhayBifX1jYXNlIDc6Y2FzZSA4OntjW0I+PjJdPTA7Y1tGPj4yXT1jWyhjW0w+PjJdfDApKzIwPj4yXTtjW0U+PjJdPWNbY1tGPj4yXT4+Ml07Y1tJPj4yXT12eChjW1A+PjJdfDApfDA7Y1tLPj4yXT1DQShjW1A+PjJdfDAsKGNbRT4+Ml18MCkrMnwwKXwwO2Nbej4+Ml09KGNbSz4+Ml18MCkrKGNbRT4+Ml18MCkrMTtpZigoY1tDPj4yXXwwKT09OCljW0I+PjJdPUloKGNbVT4+Ml18MCwzMSwoY1tPPj4yXXwwKSsxfDAsMCxjW1Q+PjJdfDAsY1tOPj4yXXwwKXwwO2p4KGNbVT4+Ml18MCw5OSxjW1Q+PjJdfDAsY1tOPj4yXXwwLGNbej4+Ml18MCl8MDtpZigoY1tDPj4yXXwwKT09OCl7aXgoY1tVPj4yXXwwLDEyNiwoY1tPPj4yXXwwKSsxfDAsY1t6Pj4yXXwwKXwwO0poKGNbVT4+Ml18MCwxNil9Y1tEPj4yXT0wO3doaWxlKDEpe249Y1tVPj4yXXwwO2lmKChjW0Q+PjJdfDApPj0oY1tFPj4yXXwwKSlicmVhaztpeChuLDg1LChjW1Q+PjJdfDApKyhlWyhjWyhjW0Y+PjJdfDApKzQ+PjJdfDApKygoY1tEPj4yXXwwKSoyMHwwKSsxNj4+MV18MCktMXwwLChjW0s+PjJdfDApKyhjW0Q+PjJdfDApfDApfDA7Y1tEPj4yXT0oY1tEPj4yXXwwKSsxfWl4KG4sMTEzLGNbTz4+Ml18MCwoY1tLPj4yXXwwKSsoY1tFPj4yXXwwKXwwKXwwO2p4KGNbVT4+Ml18MCw5OSxjW0s+PjJdfDAsKGNbRT4+Ml18MCkrMnwwLGNbST4+Ml18MCl8MDtpeChjW1U+PjJdfDAsMTI2LGNbTz4+Ml18MCxjW0k+PjJdfDApfDA7aWYoY1tCPj4yXXwwKVp6KGNbVT4+Ml18MCxjW0I+PjJdfDApO3h4KGNbUD4+Ml18MCxjW0k+PjJdfDApO0ZBKGNbUD4+Ml18MCxjW0s+PjJdfDAsKGNbRT4+Ml18MCkrMnwwKTticmVha31kZWZhdWx0Ont9fXdoaWxlKDApO2lmKGNbUj4+Ml18MCl7aT1WO3JldHVybn1pZighKGNbKGNbUT4+Ml18MCkrMTI+PjJdfDApKXtpPVY7cmV0dXJufWl4KGNbVT4+Ml18MCw2OCxjWyhjW1E+PjJdfDApKzEyPj4yXXwwLGNbUz4+Ml18MCl8MDtpPVY7cmV0dXJufWZ1bmN0aW9uIFRHKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTA7aD1pO2k9aSsxNnwwO2Q9aCsxMnwwO2U9aCs4fDA7Zz1oKzR8MDtmPWg7Y1tkPj4yXT1hO2NbZT4+Ml09YjtpZighKGNbZT4+Ml18MCkpe2k9aDtyZXR1cm59Y1tnPj4yXT1jWyhjW2U+PjJdfDApKzQ+PjJdO2NbZj4+Ml09MDt3aGlsZSgxKXtpZigoY1tmPj4yXXwwKT49KGNbY1tlPj4yXT4+Ml18MCkpYnJlYWs7VUcoY1tkPj4yXXwwLGNbY1tnPj4yXT4+Ml18MCk7Y1tmPj4yXT0oY1tmPj4yXXwwKSsxO2NbZz4+Ml09KGNbZz4+Ml18MCkrMjB9aT1oO3JldHVybn1mdW5jdGlvbiBVRyhhLGIpe2E9YXwwO2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTA7ZD1pO2k9aSs0OHwwO2c9ZCszMnwwO2U9ZCsyOHwwO2Y9ZDtjW2c+PjJdPWE7Y1tlPj4yXT1iO2NbZj4+Ml09MDtjW2YrND4+Ml09MDtjW2YrOD4+Ml09MDtjW2YrMTI+PjJdPTA7Y1tmKzE2Pj4yXT0wO2NbZisyMD4+Ml09MDtjW2YrMjQ+PjJdPTA7Y1tmKzQ+PjJdPTIwMztjW2YrOD4+Ml09MjA0O2NbZisyND4+Ml09Y1tnPj4yXTt3eShmLGNbZT4+Ml18MCl8MDtpPWQ7cmV0dXJufWZ1bmN0aW9uIFZHKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wO2s9aTtpPWkrMzJ8MDtoPWs7ZT1rKzE2fDA7Zj1rKzEyfDA7Zz1rKzh8MDtqPWsrNHwwO2NbZT4+Ml09YTtjW2Y+PjJdPWI7aWYoKGRbKGNbZT4+Ml18MCkrNDA5Pj4wXXwwfDApIT0yKXtpPWs7cmV0dXJufWNbZz4+Ml09Y1soY1tlPj4yXXwwKSs4Pj4yXTtiPWNbY1tlPj4yXT4+Ml18MDtjW2g+PjJdPWNbZj4+Ml07Y1tqPj4yXT1HaChiLDM1ODA4LGgpfDA7bXgoY1tnPj4yXXwwLDE2MixjWyhjW2U+PjJdfDApKzQyMD4+Ml18MCwwLDAsY1tqPj4yXXwwLC0xKXwwO2k9aztyZXR1cm59ZnVuY3Rpb24gV0coYSl7YT1hfDA7dmFyIGI9MCxlPTA7ZT1pO2k9aSsxNnwwO2I9ZTtjW2I+PjJdPWE7aT1lO3JldHVybiBkWyhjW2I+PjJdfDApKzQ0Pj4wXXwwfDB9ZnVuY3Rpb24gWEcoYSxiLGQsZSl7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTA7Zj1pO2k9aSsxNnwwO2o9ZisxMnwwO2g9Zis4fDA7az1mKzR8MDtnPWY7Y1tqPj4yXT1hO2NbaD4+Ml09YjtjW2s+PjJdPWQ7Y1tnPj4yXT1lO2p4KGNbKGNbaj4+Ml18MCkrOD4+Ml18MCw4MyxjW2g+PjJdfDAsY1trPj4yXXwwLGNbZz4+Ml18MCl8MDtHQShjW2o+PjJdfDAsY1toPj4yXXwwLGNbZz4+Ml18MCk7aT1mO3JldHVybn1mdW5jdGlvbiBZRyhiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTA7dj1pO2k9aSs2NHwwO2Y9dis1NnwwO2c9dis1MnwwO3U9dis0OHwwO2s9dis0NHwwO3Q9dis0MHwwO2g9diszNnwwO3A9diszMnwwO249disyOHwwO209disyNHwwO2o9disyMHwwO3M9disxNnwwO3I9disxMnwwO289dis4fDA7cT12KzR8MDtsPXY7Y1tmPj4yXT1iO2NbZz4+Ml09ZDtjW3U+PjJdPWNbKGNbZj4+Ml18MCkrOD4+Ml07Y1t0Pj4yXT0wO2NbaD4+Ml09MDthW2NbZz4+Ml0+PjBdPTE7Y1trPj4yXT0wO2NbcD4+Ml09Y1soY1tnPj4yXXwwKSs0MD4+Ml07d2hpbGUoMSl7aWYoKGNbaz4+Ml18MCk+PShjWyhjW2c+PjJdfDApKzQ0Pj4yXXwwKSlicmVhaztjW2o+PjJdPTA7Y1tyPj4yXT1jWyhjW2NbcD4+Ml0+PjJdfDApKzIwPj4yXTtpZihjW3I+PjJdfDApe2NbbT4+Ml09Y1tjW3I+PjJdPj4yXTtjW3M+PjJdPUNBKGNbZj4+Ml18MCxjW20+PjJdfDApfDA7YUIoY1tmPj4yXXwwLGNbcj4+Ml18MCxjW3M+PjJdfDAsMCwxKXwwfWVsc2V7Y1ttPj4yXT0wO2Nbcz4+Ml09MH1pZigoY1soY1twPj4yXXwwKSsxMj4+Ml18MCk+PTApe2Nbaj4+Ml09V3ooY1t1Pj4yXXwwKXwwO2dIKGNbZj4+Ml18MCxjWyhjW3A+PjJdfDApKzEyPj4yXXwwLGNbaj4+Ml18MCwxLGNbcz4+Ml18MCl9aWYoKGVbKGNbKGNbcD4+Ml18MCkrND4+Ml18MCkrMj4+MV18MCkmMzIpe2Nbbz4+Ml09MDtjW2w+PjJdPTA7Y1txPj4yXT1jWyhjW3I+PjJdfDApKzQ+PjJdO3doaWxlKDEpe2lmKGNbbz4+Ml18MClicmVhaztpZigoY1tsPj4yXXwwKT49KGNbbT4+Ml18MCkpYnJlYWs7Y1tvPj4yXT1meShjW2Y+PjJdfDAsY1tjW3E+PjJdPj4yXXwwKXwwO2NbbD4+Ml09KGNbbD4+Ml18MCkrMTtjW3E+PjJdPShjW3E+PjJdfDApKzIwfWlmKCEoY1tvPj4yXXwwKSljW28+PjJdPWNbKGNbY1tmPj4yXT4+Ml18MCkrOD4+Ml07aWYoKGNbdD4+Ml18MCk9PTA/KGNbKGNbZz4+Ml18MCkrMzY+PjJdfDApIT0wOjApe2Q9KGNbZj4+Ml18MCkrNDR8MDtiPShjW2Q+PjJdfDApKzF8MDtjW2Q+PjJdPWI7Y1t0Pj4yXT1ifW14KGNbdT4+Ml18MCw4OCxjW3Q+PjJdfDAsMCwwLGNbbz4+Ml18MCwtNCl8MH1teChjW3U+PjJdfDAsMTQ3LDAsY1tzPj4yXXwwLGNbKGNbcD4+Ml18MCkrOD4+Ml18MCxjWyhjW3A+PjJdfDApKzQ+PjJdfDAsLTUpfDA7SmgoY1t1Pj4yXXwwLGNbbT4+Ml0mMjU1KTtXQShjW2Y+PjJdfDAsY1tzPj4yXXwwLGNbbT4+Ml18MCk7RkEoY1tmPj4yXXwwLGNbcz4+Ml18MCxjW20+PjJdfDApO2lmKGNbaj4+Ml18MCl7X3ooY1t1Pj4yXXwwLGNbaj4+Ml18MCk7RUMoY1tmPj4yXXwwKX1jW2s+PjJdPShjW2s+PjJdfDApKzE7Y1twPj4yXT0oY1twPj4yXXwwKSsxNn1pZihjW3Q+PjJdfDApY1toPj4yXT1TeihjW3U+PjJdfDAsMjEsY1t0Pj4yXXwwKXwwO0VDKGNbZj4+Ml18MCk7Y1trPj4yXT0wO2Nbbj4+Ml09Y1soY1tnPj4yXXwwKSsyOD4+Ml07d2hpbGUoMSl7aWYoKGNbaz4+Ml18MCk+PShjWyhjW2c+PjJdfDApKzM2Pj4yXXwwKSlicmVhaztSQShjW2Y+PjJdfDAsY1soY1tuPj4yXXwwKSsyMD4+Ml18MCxjWyhjW24+PjJdfDApKzE2Pj4yXXwwKTtjW2s+PjJdPShjW2s+PjJdfDApKzE7Y1tuPj4yXT0oY1tuPj4yXXwwKSsyNH1hW2NbZz4+Ml0+PjBdPTA7RUMoY1tmPj4yXXwwKTtpZighKGNbaD4+Ml18MCkpe2k9djtyZXR1cm59WnooY1t1Pj4yXXwwLGNbaD4+Ml18MCk7aT12O3JldHVybn1mdW5jdGlvbiBaRyhhLGIpe2E9YXwwO2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTA7aj1pO2k9aSszMnwwO2s9aisyMHwwO2Q9aisxNnwwO2g9aisxMnwwO2U9ais4fDA7Zj1qKzR8MDtnPWo7Y1trPj4yXT1hO2NbZD4+Ml09YjtjW2g+PjJdPWNbKGNbaz4+Ml18MCkrOD4+Ml07Y1tlPj4yXT0wO2NbZj4+Ml09Y1soY1tkPj4yXXwwKSs0MD4+Ml07d2hpbGUoMSl7aWYoKGNbZT4+Ml18MCk+PShjWyhjW2Q+PjJdfDApKzQ0Pj4yXXwwKSlicmVhaztjW2c+PjJdPWNbKGNbY1tmPj4yXT4+Ml18MCkrMjA+PjJdO2lmKGNbZz4+Ml18MCliPWNbY1tnPj4yXT4+Ml18MDtlbHNlIGI9MDtteChjW2g+PjJdfDAsMTQ5LGNbKGNbZj4+Ml18MCkrOD4+Ml18MCxiLDAsY1soY1tmPj4yXXwwKSs0Pj4yXXwwLC01KXwwO2NbZT4+Ml09KGNbZT4+Ml18MCkrMTtjW2Y+PjJdPShjW2Y+PjJdfDApKzE2fWk9ajtyZXR1cm59ZnVuY3Rpb24gX0coYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wO209aTtpPWkrNDh8MDtsPW07ZD1tKzMyfDA7ZT1tKzI4fDA7az1tKzI0fDA7Zj1tKzIwfDA7aD1tKzE2fDA7bj1tKzEyfDA7Zz1tKzh8MDtqPW0rNHwwO2NbZD4+Ml09YTtjW2U+PjJdPWI7Y1trPj4yXT1jWyhjW2Q+PjJdfDApKzg+PjJdO2Nbbj4+Ml09KGNbKGNbZT4+Ml18MCkrNDQ+PjJdfDApKyhjWyhjW2U+PjJdfDApKzMyPj4yXXwwKTtpZighKGNbbj4+Ml18MCkpe2k9bTtyZXR1cm59angoY1trPj4yXXwwLDc5LDAsY1soY1tlPj4yXXwwKSsxNj4+Ml18MCxjWyhjW2U+PjJdfDApKzIwPj4yXXwwKXwwO2NbaD4+Ml09Y1soY1tlPj4yXXwwKSs0MD4+Ml07Y1tmPj4yXT0wO3doaWxlKDEpe2lmKChjW2Y+PjJdfDApPj0oY1soY1tlPj4yXXwwKSs0ND4+Ml18MCkpYnJlYWs7ZG8gaWYoKGNbKGNbaD4+Ml18MCkrMTI+PjJdfDApPj0wKXtjW2c+PjJdPWNbY1toPj4yXT4+Ml07aWYoKGNbKGNbZz4+Ml18MCkrMjA+PjJdfDApIT0wPyhjW2NbKGNbZz4+Ml18MCkrMjA+PjJdPj4yXXwwKT09MTowKXtjW2o+PjJdPUpHKGNbZD4+Ml18MCxjWyhjW2c+PjJdfDApKzIwPj4yXXwwLDAsMCl8MDtteChjW2s+PjJdfDAsMTA3LGNbKGNbaD4+Ml18MCkrMTI+PjJdfDAsMCwwLGNbaj4+Ml18MCwtNil8MDticmVha31FaChjW2Q+PjJdfDAsMzU3NTcsbCk7Y1soY1toPj4yXXwwKSsxMj4+Ml09LTF9d2hpbGUoMCk7Y1tmPj4yXT0oY1tmPj4yXXwwKSsxO2NbaD4+Ml09KGNbaD4+Ml18MCkrMTZ9aT1tO3JldHVybn1mdW5jdGlvbiAkRyhhLGIpe2E9YXwwO2I9YnwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MDtsPWk7aT1pKzMyfDA7Zj1sKzE2fDA7Zz1sKzEyfDA7aD1sKzh8MDtrPWwrNHwwO2o9bDtjW2c+PjJdPWE7Y1toPj4yXT1iO2lmKCgoKGNbKGNbZz4+Ml18MCkrMzI+PjJdfDApPT0wPyhjW2NbY1tnPj4yXT4+Ml0+PjJdfDApPT0xOjApPyhjW2NbKGNbZz4+Ml18MCkrMjg+PjJdPj4yXXwwKT09MTowKT8oY1soY1soY1tnPj4yXXwwKSsyOD4+Ml18MCkrOCsyMD4+Ml18MCk9PTA6MCl7Y1trPj4yXT1jWyhjWyhjW2c+PjJdfDApKzI4Pj4yXXwwKSs4KzE2Pj4yXTtjW2o+PjJdPWNbY1soY1tjW2c+PjJdPj4yXXwwKSs0Pj4yXT4+Ml07aWYoKGRbKGNbaz4+Ml18MCkrNDI+PjBdfDApJjE2KXtjW2Y+PjJdPTA7az1jW2Y+PjJdfDA7aT1sO3JldHVybiBrfDB9aWYoKGRbY1tqPj4yXT4+MF18MHwwKSE9MTUzKXtjW2Y+PjJdPTA7az1jW2Y+PjJdfDA7aT1sO3JldHVybiBrfDB9aWYoIShjWyhjW2g+PjJdfDApKzQ0Pj4yXXwwKSl7Y1tmPj4yXT0wO2s9Y1tmPj4yXXwwO2k9bDtyZXR1cm4ga3wwfWlmKCEoKGVbKGNbKGNbKGNbaD4+Ml18MCkrNDA+PjJdfDApKzQ+PjJdfDApKzI+PjFdfDApJjI1Nikpe2NbZj4+Ml09MDtrPWNbZj4+Ml18MDtpPWw7cmV0dXJuIGt8MH1pZihjWyhjW2o+PjJdfDApKzQ+PjJdJjE2KXtjW2Y+PjJdPTA7az1jW2Y+PjJdfDA7aT1sO3JldHVybiBrfDB9ZWxzZXtjW2Y+PjJdPWNbaz4+Ml07az1jW2Y+PjJdfDA7aT1sO3JldHVybiBrfDB9fWNbZj4+Ml09MDtrPWNbZj4+Ml18MDtpPWw7cmV0dXJuIGt8MH1mdW5jdGlvbiBhSChiLGUsZil7Yj1ifDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MDtuPWk7aT1pKzMyfDA7bD1uO2o9bisyOHwwO2s9bisyNHwwO2c9bisyMHwwO2g9bisxNnwwO209bisxMnwwO2Nbaj4+Ml09YjtjW2s+PjJdPWU7Y1tnPj4yXT1mO2lmKChkWyhjW2o+PjJdfDApKzQwOT4+MF18MHwwKSE9Mil7aT1uO3JldHVybn1pZihjW2c+PjJdfDApaWYoISgoZFsoY1trPj4yXXwwKSs0Mj4+MF18MCkmMzIpKWY9MTtlbHNlIGY9KGFbKGNbZz4+Ml18MCkrNTU+PjBdJjN8MCk9PTJeMTtlbHNlIGY9MDtjW2g+PjJdPWYmMTtiPWNbY1tqPj4yXT4+Ml18MDtlPShjW2g+PjJdfDApIT0wPzM1NzE2OjE4NDAyO2lmKGNbaD4+Ml18MClmPWNbY1tnPj4yXT4+Ml18MDtlbHNlIGY9MTg0MDI7Y1tsPj4yXT1jW2Nbaz4+Ml0+PjJdO2NbbCs0Pj4yXT1lO2NbbCs4Pj4yXT1mO2NbbT4+Ml09R2goYiwzNTczOSxsKXwwO214KGNbKGNbaj4+Ml18MCkrOD4+Ml18MCwxNjIsY1soY1tqPj4yXXwwKSs0MjA+PjJdfDAsMCwwLGNbbT4+Ml18MCwtMSl8MDtpPW47cmV0dXJufWZ1bmN0aW9uIGJIKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MDtsPWk7aT1pKzMyfDA7ZT1sKzIwfDA7Zj1sKzE2fDA7Zz1sKzEyfDA7aj1sKzh8MDtoPWwrNHwwO2s9bDtjW2U+PjJdPWE7Y1tmPj4yXT1iO2NbZz4+Ml09MDtjW2NbZj4+Ml0+PjJdPTA7ZG8gaWYoKCgoY1soY1tlPj4yXXwwKSs0ND4+Ml18MCk9PTE/KGNbaj4+Ml09Y1tjWyhjW2U+PjJdfDApKzQwPj4yXT4+Ml0sY1toPj4yXT1jWyhjW2o+PjJdfDApKzIwPj4yXSwoY1toPj4yXXwwKSE9MCk6MCk/KGNbY1toPj4yXT4+Ml18MCk9PTE6MCk/KGRbY1tjWyhjW2g+PjJdfDApKzQ+PjJdPj4yXT4+MF18MHwwKT09MTU0OjApe2Nbaz4+Ml09Y1soY1tqPj4yXXwwKSs4Pj4yXTtpZighKGlnKGNbaz4+Ml18MCwzNTcwOCl8MCkpe2NbZz4+Ml09MTtjW2NbZj4+Ml0+PjJdPWNbaD4+Ml07YnJlYWt9aWYoIShpZyhjW2s+PjJdfDAsMzU3MTIpfDApKXtjW2c+PjJdPTI7Y1tjW2Y+PjJdPj4yXT1jW2g+PjJdfX13aGlsZSgwKTtpPWw7cmV0dXJuIGNbZz4+Ml0mMjU1fDB9ZnVuY3Rpb24gY0goYSxiLGUsZixnKXthPWF8MDtiPWJ8MDtlPWV8MDtmPWZ8MDtnPWd8MDt2YXIgaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wLEU9MDtFPWk7aT1pKzk2fDA7dT1FKzg0fDA7aD1FKzgwfDA7Qj1FKzc2fDA7dj1FKzcyfDA7cz1FKzY4fDA7RD1FKzY0fDA7Qz1FKzYwfDA7dz1FKzU2fDA7QT1FKzUyfDA7aj1FKzQ4fDA7ej1FKzQ0fDA7cT1FKzQwfDA7eD1FKzM2fDA7bT1FKzMyfDA7dD1FKzI4fDA7eT1FKzI0fDA7bz1FKzIwfDA7bj1FKzE2fDA7cD1FKzEyfDA7bD1FKzh8MDtrPUUrNHwwO3I9RTtjW3U+PjJdPWE7Y1toPj4yXT1iO2NbQj4+Ml09ZTtjW3Y+PjJdPWY7Y1tzPj4yXT1nO2NbRD4+Ml09Y1soY1t1Pj4yXXwwKSs4Pj4yXTtjW0M+PjJdPWNbKGNbQj4+Ml18MCkrMjQ+PjJdO2Nbdz4+Ml09V3ooY1tEPj4yXXwwKXwwO2Nbaj4+Ml09MDtjW3E+PjJdPWNbY1tCPj4yXT4+Ml07Y1t4Pj4yXT1kW2Nbcz4+Ml0+PjBdO2NbbT4+Ml09Y1soY1tzPj4yXXwwKSs4Pj4yXTtpZihjWyhjW0I+PjJdfDApKzE2Pj4yXXwwKXtpeChjW0Q+PjJdfDAsMTQsY1soY1tCPj4yXXwwKSsxMj4+Ml18MCxjWyhjW0I+PjJdfDApKzE2Pj4yXXwwKXwwO1l6KGNbRD4+Ml18MCxjW0M+PjJdfDApfDA7X3ooY1tEPj4yXXwwLGNbKGNbQj4+Ml18MCkrMTY+PjJdfDApfWNbej4+Ml09Y1soY1tCPj4yXXwwKSs4Pj4yXTtpZigoY1t4Pj4yXXwwKT09OXwoY1t4Pj4yXXwwKT09MTN8KGNbeD4+Ml18MCk9PTEwKXtjW3k+PjJdPTA7Y1t0Pj4yXT1jWyhjW3M+PjJdfDApKzEyPj4yXTtjW3A+PjJdPWNbdj4+Ml19ZWxzZXtjW3k+PjJdPXZ4KGNbdT4+Ml18MCl8MDtjW3Q+PjJdPUNBKGNbdT4+Ml18MCxjW3Y+PjJdfDApfDA7Y1twPj4yXT1jW3Y+PjJdfWNbbz4+Ml09KGNbY1txPj4yXT4+Ml18MCktKGNbKGNbQj4+Ml18MCkrND4+Ml18MCk7aWYoKGRbKGNbQj4+Ml18MCkrMjg+PjBdfDApJjEpe2U9KGNbdT4+Ml18MCkrNDR8MDthPShjW2U+PjJdfDApKzF8MDtjW2U+PjJdPWE7Y1tyPj4yXT1hO2E9KGNbdT4+Ml18MCkrNDB8MDtlPWNbYT4+Ml18MDtjW2E+PjJdPWUrMTtjW24+PjJdPWU7aWYoY1soY1tCPj4yXXwwKSsxNj4+Ml18MCljW2o+PjJdPWZ4KGNbRD4+Ml18MCwyMCl8MDtqeChjW0Q+PjJdfDAsMTEwLGNbbj4+Ml18MCxjW3I+PjJdfDAsKGNbbz4+Ml18MCkrMSsoY1twPj4yXXwwKXwwKXwwO2lmKGNbaj4+Ml18MClaeihjW0Q+PjJdfDAsY1tqPj4yXXwwKTtjW0E+PjJdPTErKGl4KGNbRD4+Ml18MCw1NSxjW3o+PjJdfDAsY1tDPj4yXXwwKXwwKTtmSChjW0Q+PjJdfDAsY1soY1toPj4yXXwwKSsxNj4+Ml18MCxjW3c+PjJdfDApO2p4KGNbRD4+Ml18MCwxMjAsY1t6Pj4yXXwwLGNbcj4+Ml18MCxjW24+PjJdfDApfDA7Y1trPj4yXT0wfWVsc2V7Y1tBPj4yXT0xKyhpeChjW0Q+PjJdfDAsNTYsY1t6Pj4yXXwwLGNbQz4+Ml18MCl8MCk7ZkgoY1tEPj4yXXwwLGNbKGNbaD4+Ml18MCkrMTY+PjJdfDAsY1t3Pj4yXXwwKTtjW24+PjJdPWNbej4+Ml07Y1trPj4yXT0xfWNbbD4+Ml09MDt3aGlsZSgxKXtpZigoY1tsPj4yXXwwKT49KGNbcD4+Ml18MCkpYnJlYWs7angoY1tEPj4yXXwwLDk2LGNbbj4+Ml18MCwoY1tvPj4yXXwwKSsoY1trPj4yXXwwKSsoY1tsPj4yXXwwKXwwLChjW3Q+PjJdfDApKyhjW2w+PjJdfDApfDApfDA7Y1tsPj4yXT0oY1tsPj4yXXwwKSsxfWE6ZG8gc3dpdGNoKGNbeD4+Ml18MCl7Y2FzZSAxMjp7aXgoY1tEPj4yXXwwLDExNCxjW20+PjJdfDAsY1t5Pj4yXXwwKXwwO2p4KGNbRD4+Ml18MCwxMTUsY1ttPj4yXXwwLGNbdD4+Ml18MCxjW3k+PjJdfDApfDA7SmgoY1tEPj4yXXwwLDgpO2JyZWFrfWNhc2UgMTE6e214KGNbRD4+Ml18MCw5OSxjW3Q+PjJdfDAsY1t2Pj4yXXwwLGNbeT4+Ml18MCxjWyhjW3M+PjJdfDApKzQ+PjJdfDAsY1t2Pj4yXXwwKXwwO1dBKGNbdT4+Ml18MCxjW3Q+PjJdfDAsY1t2Pj4yXXwwKTtpeChjW0Q+PjJdfDAsMTI2LGNbbT4+Ml18MCxjW3k+PjJdfDApfDA7YnJlYWt9Y2FzZSAxMDpicmVhaztkZWZhdWx0OntoPWNbRD4+Ml18MDtqPWNbcz4+Ml18MDtpZigoY1t4Pj4yXXwwKT09OSl7aXgoaCw4NyxjW2orMTI+PjJdfDAsY1t2Pj4yXXwwKXwwO1dBKGNbdT4+Ml18MCxjWyhjW3M+PjJdfDApKzEyPj4yXXwwLGNbdj4+Ml18MCk7YnJlYWsgYX1lbHNle1N6KGgsMTYsY1tqKzg+PjJdfDApfDA7YnJlYWsgYX19fXdoaWxlKDApO2lmKGNbeT4+Ml18MCl7aj1jW3U+PjJdfDA7aD1jW3Q+PjJdfDA7aWYoKGNbeD4+Ml18MCk9PTExKUZBKGosaCxjW3Y+PjJdfDApO2Vsc2UgeHgoaixoKTt4eChjW3U+PjJdfDAsY1t5Pj4yXXwwKX1feihjW0Q+PjJdfDAsY1t3Pj4yXXwwKTtrPWNbRD4+Ml18MDtqPWNbej4+Ml18MDtoPWNbQT4+Ml18MDtpZigoZFsoY1tCPj4yXXwwKSsyOD4+MF18MCkmMSlpeChrLDMsaixoKXwwO2Vsc2UgaXgoayw3LGosaCl8MDtpZighKGNbKGNbQj4+Ml18MCkrMTI+PjJdfDApKXtCPWNbRD4+Ml18MDtEPWNbQz4+Ml18MDtfeihCLEQpO2k9RTtyZXR1cm59U3ooY1tEPj4yXXwwLDcyLGNbKGNbQj4+Ml18MCkrMTI+PjJdfDApfDA7Qj1jW0Q+PjJdfDA7RD1jW0M+PjJdfDA7X3ooQixEKTtpPUU7cmV0dXJufWZ1bmN0aW9uIGRIKGUsZixnKXtlPWV8MDtmPWZ8MDtnPWd8MDt2YXIgaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wO0E9aTtpPWkrODB8MDt2PUErOHwwO3U9QTtoPUErNzJ8MDtqPUErNjh8MDtrPUErNjR8MDt0PUErNjB8MDtuPUErNTZ8MDtwPUErNTJ8MDtsPUErNDh8MDttPUErNDR8MDtzPUErNDB8MDtxPUErMzZ8MDt5PUErMzJ8MDtyPUErMjh8MDt4PUErMjR8MDtvPUErMjB8MDt6PUErMTZ8MDt3PUErMTJ8MDtjW2g+PjJdPWU7Y1tqPj4yXT1mO2Nbaz4+Ml09ZztjW3Q+PjJdPWNbKGNbaD4+Ml18MCkrOD4+Ml07Y1tsPj4yXT1jW2NbaD4+Ml0+PjJdO2lmKGFbKGNbaD4+Ml18MCkrNDA5Pj4wXXwwKXtpPUE7cmV0dXJufWlmKGRbKGNbaD4+Ml18MCkrMTY+PjBdfDApe2k9QTtyZXR1cm59aWYoZFsoY1tsPj4yXXwwKSs2OT4+MF18MCl7aT1BO3JldHVybn1hWyhjW2g+PjJdfDApKzE2Pj4wXT0xO2NbbT4+Ml09KGNbKGNbbD4+Ml18MCkrMjQ+PjJdJjR8MCkhPTAmMTtjW3M+PjJdPShjWyhjW2w+PjJdfDApKzI0Pj4yXSY2NHwwKSE9MCYxO21DKGNbdD4+Ml18MCxjW2Nbaz4+Ml0+PjJdfDApO2Nbbj4+Ml09MDt3aGlsZSgxKXtpZigoY1tuPj4yXXwwKT49KGNbY1trPj4yXT4+Ml18MCkpYnJlYWs7Y1txPj4yXT1jWyhjWyhjW2s+PjJdfDApKzQ+PjJdfDApKygoY1tuPj4yXXwwKSoyMHwwKT4+Ml07ZG8gaWYoY1txPj4yXXwwKXtpZihjWyhjWyhjW2s+PjJdfDApKzQ+PjJdfDApKygoY1tuPj4yXXwwKSoyMHwwKSs0Pj4yXXwwKXtjW3k+PjJdPWNbKGNbKGNbaz4+Ml18MCkrND4+Ml18MCkrKChjW24+PjJdfDApKjIwfDApKzQ+PjJdO25DKGNbdD4+Ml18MCxjW24+PjJdfDAsMCxjW3k+PjJdfDAsLTEpfDA7YnJlYWt9aWYoKGRbY1txPj4yXT4+MF18MCkhPTE1Mj8oZFtjW3E+PjJdPj4wXXwwKSE9MTU0OjApe2Nbdz4+Ml09Y1soY1soY1trPj4yXXwwKSs0Pj4yXXwwKSsoKGNbbj4+Ml18MCkqMjB8MCkrOD4+Ml07Zz1jW2w+PjJdfDA7aWYoIShjW3c+PjJdfDApKXtjW3Y+PjJdPShjW24+PjJdfDApKzE7Zz1HaChnLDM1Njk5LHYpfDB9ZWxzZSBnPXFoKGcsY1t3Pj4yXXwwKXwwO2Nbdz4+Ml09ZztuQyhjW3Q+PjJdfDAsY1tuPj4yXXwwLDAsY1t3Pj4yXXwwLDE3MCl8MDticmVha31jW28+PjJdPWJbKGNbcT4+Ml18MCkrMzI+PjFdO2NbcD4+Ml09MDt3aGlsZSgxKXtpZigoY1twPj4yXXwwKT49KGNbY1tqPj4yXT4+Ml18MCkpYnJlYWs7aWYoKGNbKGNbaj4+Ml18MCkrOCsoKGNbcD4+Ml18MCkqNzJ8MCkrNDQ+PjJdfDApPT0oY1soY1txPj4yXXwwKSsyOD4+Ml18MCkpYnJlYWs7Y1twPj4yXT0oY1twPj4yXXwwKSsxfWNbcj4+Ml09Y1soY1tqPj4yXXwwKSs4KygoY1twPj4yXXwwKSo3MnwwKSsxNj4+Ml07aWYoKGNbbz4+Ml18MCk8MCljW28+PjJdPWJbKGNbcj4+Ml18MCkrMzI+PjFdO2lmKChjW28+PjJdfDApPDApY1t4Pj4yXT0yNDc0NTtlbHNlIGNbeD4+Ml09Y1soY1soY1tyPj4yXXwwKSs0Pj4yXXwwKSsoY1tvPj4yXTw8NCk+PjJdO2lmKCEoKGNbcz4+Ml18MCkhPTB8KGNbbT4+Ml18MCkhPTApKXtlPWNbdD4+Ml18MDtmPWNbbj4+Ml18MDtuQyhlLGYsMCxxaChjW2w+PjJdfDAsY1soY1soY1trPj4yXXwwKSs0Pj4yXXwwKSsoKGNbbj4+Ml18MCkqMjB8MCkrOD4+Ml18MCl8MCwxNzApfDA7YnJlYWt9aWYoY1ttPj4yXXwwKXtjW3o+PjJdPTA7Zj1jW2w+PjJdfDA7ZT1jW3g+PjJdfDA7Y1t1Pj4yXT1jW2Nbcj4+Ml0+PjJdO2NbdSs0Pj4yXT1lO2Nbej4+Ml09R2goZiwzMDE2MSx1KXwwO25DKGNbdD4+Ml18MCxjW24+PjJdfDAsMCxjW3o+PjJdfDAsMTcwKXwwO2JyZWFrfWVsc2V7bkMoY1t0Pj4yXXwwLGNbbj4+Ml18MCwwLGNbeD4+Ml18MCwtMSl8MDticmVha319d2hpbGUoMCk7Y1tuPj4yXT0oY1tuPj4yXXwwKSsxfWVIKGNbaD4+Ml18MCxjW2o+PjJdfDAsY1trPj4yXXwwKTtpPUE7cmV0dXJufWZ1bmN0aW9uIGVIKGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTA7bD1pO2k9aSs2NHwwO209bCs1NnwwO249bCs1MnwwO2U9bCs0OHwwO2o9bCs0NHwwO2Y9bCs0MHwwO2g9bCs4fDA7Zz1sKzR8MDtrPWw7Y1ttPj4yXT1hO2Nbbj4+Ml09YjtjW2U+PjJdPWQ7Y1tqPj4yXT1jWyhjW20+PjJdfDApKzg+PjJdO2NbaCs0Pj4yXT1jW24+PjJdO2NbaD4+Ml09Y1ttPj4yXTtjW2Y+PjJdPTA7d2hpbGUoMSl7aWYoKGNbZj4+Ml18MCk+PShjW2NbZT4+Ml0+PjJdfDApKWJyZWFrO2NbZz4+Ml09Y1soY1soY1tlPj4yXXwwKSs0Pj4yXXwwKSsoKGNbZj4+Ml18MCkqMjB8MCk+PjJdO2Nbaz4+Ml09ZHkoaCxjW2c+PjJdfDAsMCl8MDtuQyhjW2o+PjJdfDAsY1tmPj4yXXwwLDEsY1trPj4yXXwwLC0xKXwwO2NbZj4+Ml09KGNbZj4+Ml18MCkrMX1pPWw7cmV0dXJufWZ1bmN0aW9uIGZIKGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wO2g9aTtpPWkrMTZ8MDtlPWgrOHwwO2Y9aCs0fDA7Zz1oO2NbZT4+Ml09YTtjW2Y+PjJdPWI7Y1tnPj4yXT1kO2lmKChjW2Y+PjJdfDApPD0wKXtpPWg7cmV0dXJufWp4KGNbZT4+Ml18MCw2NixjW2Y+PjJdfDAsY1tnPj4yXXwwLDEpfDA7aT1oO3JldHVybn1mdW5jdGlvbiBnSChhLGIsZCxlLGYpe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wO2c9aTtpPWkrMzJ8MDtqPWcrMjR8MDtrPWcrMjB8MDtvPWcrMTZ8MDttPWcrMTJ8MDtuPWcrOHwwO2w9Zys0fDA7aD1nO2Nbaj4+Ml09YTtjW2s+PjJdPWI7Y1tvPj4yXT1kO2NbbT4+Ml09ZTtjW24+PjJdPWY7Y1tsPj4yXT1jWyhjW2o+PjJdfDApKzg+PjJdO2NbaD4+Ml09dngoY1tqPj4yXXwwKXwwO0loKGNbbD4+Ml18MCwzMSxjW2s+PjJdfDAsY1tvPj4yXXwwLGNbbj4+Ml18MCxjW20+PjJdfDApfDA7angoY1tsPj4yXXwwLDk5LGNbbj4+Ml18MCxjW20+PjJdfDAsY1toPj4yXXwwKXwwO2l4KGNbbD4+Ml18MCwxMjYsY1trPj4yXXwwLGNbaD4+Ml18MCl8MDt4eChjW2o+PjJdfDAsY1toPj4yXXwwKTtpPWc7cmV0dXJufWZ1bmN0aW9uIGhIKGYsZyl7Zj1mfDA7Zz1nfDA7dmFyIGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MDtBPWk7aT1pKzgwfDA7dD1BKzY0fDA7aD1BKzYwfDA7dT1BKzU2fDA7dz1BKzUyfDA7cT1BKzQ4fDA7ej1BKzQ0fDA7cj1BKzQwfDA7eD1BKzM2fDA7cD1BKzMyfDA7bT1BKzI4fDA7az1BKzI0fDA7aj1BKzIwfDA7bD1BKzE2fDA7bz1BKzEyfDA7cz1BKzh8MDtuPUErNHwwO3k9QTt2PUErNjh8MDtjW2g+PjJdPWY7Y1t1Pj4yXT1nO2NbcT4+Ml09Y1soY1toPj4yXXwwKSsyND4+Ml07Y1t6Pj4yXT1jW2NbcT4+Ml0+PjJdO2Nbcj4+Ml09Y1soY1txPj4yXXwwKSs0Pj4yXTtjW3g+PjJdPWNbKGNbcT4+Ml18MCkrMTI+PjJdO3N3aXRjaChkW2NbdT4+Ml0+PjBdfDApe2Nhc2UgMTUyOmNhc2UgMTU0OnthOmRvIGlmKGNbcj4+Ml18MCl7Y1twPj4yXT0oY1tyPj4yXXwwKSs4O2Nbdz4+Ml09MDt3aGlsZSgxKXtpZigoY1t3Pj4yXXwwKT49KGNbY1tyPj4yXT4+Ml18MCkpYnJlYWsgYTtpZigoY1soY1t1Pj4yXXwwKSsyOD4+Ml18MCk9PShjWyhjW3A+PjJdfDApKzQ0Pj4yXXwwKSlicmVhaztjW3c+PjJdPShjW3c+PjJdfDApKzE7Y1twPj4yXT0oY1twPj4yXXwwKSs3Mn1jW20+PjJdPWNbKGNbeD4+Ml18MCkrMjg+PjJdO2Nbaz4+Ml09MDt3aGlsZSgxKXtpZigoY1trPj4yXXwwKT49KGNbKGNbeD4+Ml18MCkrMzI+PjJdfDApKWJyZWFrO2lmKChjWyhjW20+PjJdfDApKzQ+PjJdfDApPT0oY1soY1t1Pj4yXXwwKSsyOD4+Ml18MCk/KGNbKGNbbT4+Ml18MCkrOD4+Ml18MCk9PShiWyhjW3U+PjJdfDApKzMyPj4xXXwwKTowKWJyZWFrO2Nbaz4+Ml09KGNbaz4+Ml18MCkrMTtjW20+PjJdPShjW20+PjJdfDApKzI0fWlmKChjW2s+PjJdfDApPj0oY1soY1t4Pj4yXXwwKSszMj4+Ml18MCk/KHk9akgoY1tjW3o+PjJdPj4yXXwwLGNbeD4+Ml18MCl8MCxjW2s+PjJdPXksKHl8MCk+PTApOjApe2NbbT4+Ml09KGNbKGNbeD4+Ml18MCkrMjg+PjJdfDApKygoY1trPj4yXXwwKSoyNHwwKTtjW2NbbT4+Ml0+PjJdPWNbKGNbdT4+Ml18MCkrNDQ+PjJdO2NbKGNbbT4+Ml18MCkrND4+Ml09Y1soY1t1Pj4yXXwwKSsyOD4+Ml07Y1soY1ttPj4yXXwwKSs4Pj4yXT1iWyhjW3U+PjJdfDApKzMyPj4xXTt5PShjW3o+PjJdfDApKzQ0fDA7ej0oY1t5Pj4yXXwwKSsxfDA7Y1t5Pj4yXT16O2NbKGNbbT4+Ml18MCkrMTY+PjJdPXo7Y1soY1ttPj4yXXwwKSsxMj4+Ml09LTE7Y1soY1ttPj4yXXwwKSsyMD4+Ml09Y1t1Pj4yXTtiOmRvIGlmKGNbKGNbeD4+Ml18MCkrMjQ+PjJdfDApe2Nbbz4+Ml09Y1soY1t4Pj4yXXwwKSsyND4+Ml07Y1tzPj4yXT1jWyhjW28+PjJdfDApKzQ+PjJdO2NbbD4+Ml09Y1tjW28+PjJdPj4yXTtjW2o+PjJdPTA7d2hpbGUoMSl7aWYoKGNbaj4+Ml18MCk+PShjW2w+PjJdfDApKWJyZWFrIGI7Y1tuPj4yXT1jW2Nbcz4+Ml0+PjJdO2lmKCgoZFtjW24+PjJdPj4wXXwwKT09MTUyPyhjWyhjW24+PjJdfDApKzI4Pj4yXXwwKT09KGNbKGNbdT4+Ml18MCkrMjg+PjJdfDApOjApPyhiWyhjW24+PjJdfDApKzMyPj4xXXwwKT09KGJbKGNbdT4+Ml18MCkrMzI+PjFdfDApOjApYnJlYWs7Y1tqPj4yXT0oY1tqPj4yXXwwKSsxO2Nbcz4+Ml09KGNbcz4+Ml18MCkrMjB9Y1soY1ttPj4yXXwwKSsxMj4+Ml09Y1tqPj4yXX13aGlsZSgwKTtpZigoY1soY1ttPj4yXXwwKSsxMj4+Ml18MCk8MCl7eT0oY1t4Pj4yXXwwKSsxMnwwO3o9Y1t5Pj4yXXwwO2NbeT4+Ml09eisxO2NbKGNbbT4+Ml18MCkrMTI+PjJdPXp9fWNbKGNbdT4+Ml18MCkrNDA+PjJdPWNbeD4+Ml07YVtjW3U+PjJdPj4wXT0tMTAyO2JbKGNbdT4+Ml18MCkrMzQ+PjFdPWNbaz4+Ml19d2hpbGUoMCk7Y1t0Pj4yXT0xO3o9Y1t0Pj4yXXwwO2k9QTtyZXR1cm4genwwfWNhc2UgMTUzOntpZigoZVsoY1txPj4yXXwwKSsyOD4+MV0mOHwwKT09MD8oY1soY1toPj4yXXwwKSsxNj4+Ml18MCk9PShkWyhjW3U+PjJdfDApKzM4Pj4wXXwwKTowKXtjW3k+PjJdPWNbKGNbeD4+Ml18MCkrNDA+PjJdO2Nbdz4+Ml09MDt3aGlsZSgxKXtpZigoY1t3Pj4yXXwwKT49KGNbKGNbeD4+Ml18MCkrNDQ+PjJdfDApKWJyZWFrO2lmKCEoS3koY1tjW3k+PjJdPj4yXXwwLGNbdT4+Ml18MCwtMSl8MCkpYnJlYWs7Y1t3Pj4yXT0oY1t3Pj4yXXwwKSsxO2NbeT4+Ml09KGNbeT4+Ml18MCkrMTZ9ZG8gaWYoKGNbdz4+Ml18MCk+PShjWyhjW3g+PjJdfDApKzQ0Pj4yXXwwKT8oYVt2Pj4wXT1hWyhjW2Nbej4+Ml0+PjJdfDApKzY2Pj4wXXwwLGNbdz4+Ml09a0goY1tjW3o+PjJdPj4yXXwwLGNbeD4+Ml18MCl8MCwoY1t3Pj4yXXwwKT49MCk6MCl7Y1t5Pj4yXT0oY1soY1t4Pj4yXXwwKSs0MD4+Ml18MCkrKGNbdz4+Ml08PDQpO2NbY1t5Pj4yXT4+Ml09Y1t1Pj4yXTtzPShjW3o+PjJdfDApKzQ0fDA7Zj0oY1tzPj4yXXwwKSsxfDA7Y1tzPj4yXT1mO2NbKGNbeT4+Ml18MCkrOD4+Ml09ZjtpZihjWyhjW3U+PjJdfDApKzIwPj4yXXwwKWg9Y1tjWyhjW3U+PjJdfDApKzIwPj4yXT4+Ml18MDtlbHNlIGg9MDt2PWtpKGNbY1t6Pj4yXT4+Ml18MCxjWyhjW3U+PjJdfDApKzg+PjJdfDAsaCxhW3Y+PjBdfDAsMCl8MDtjWyhjW3k+PjJdfDApKzQ+PjJdPXY7aWYoY1soY1t1Pj4yXXwwKSs0Pj4yXSYxNil7dj0oY1t6Pj4yXXwwKSs0MHwwO3o9Y1t2Pj4yXXwwO2Nbdj4+Ml09eisxO2NbKGNbeT4+Ml18MCkrMTI+PjJdPXo7YnJlYWt9ZWxzZXtjWyhjW3k+PjJdfDApKzEyPj4yXT0tMTticmVha319d2hpbGUoMCk7YlsoY1t1Pj4yXXwwKSszND4+MV09Y1t3Pj4yXTtjWyhjW3U+PjJdfDApKzQwPj4yXT1jW3g+PjJdO2NbdD4+Ml09MTt6PWNbdD4+Ml18MDtpPUE7cmV0dXJuIHp8MH1jW3Q+PjJdPTA7ej1jW3Q+PjJdfDA7aT1BO3JldHVybiB6fDB9ZGVmYXVsdDp7Y1t0Pj4yXT0wO3o9Y1t0Pj4yXXwwO2k9QTtyZXR1cm4genwwfX1yZXR1cm4gMH1mdW5jdGlvbiBpSChhLGIpe2E9YXwwO2I9YnwwO3ZhciBkPTA7ZD1pO2k9aSsxNnwwO2NbZCs0Pj4yXT1hO2NbZD4+Ml09YjtpPWQ7cmV0dXJuIDB9ZnVuY3Rpb24gakgoYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wO2U9aTtpPWkrMTZ8MDtnPWUrOHwwO2Y9ZSs0fDA7ZD1lO2NbZz4+Ml09YTtjW2Y+PjJdPWI7Yj1TQyhjW2c+PjJdfDAsY1soY1tmPj4yXXwwKSsyOD4+Ml18MCwyNCwoY1tmPj4yXXwwKSszMnwwLGQpfDA7Y1soY1tmPj4yXXwwKSsyOD4+Ml09YjtpPWU7cmV0dXJuIGNbZD4+Ml18MH1mdW5jdGlvbiBrSChhLGIpe2E9YXwwO2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTA7ZT1pO2k9aSsxNnwwO2c9ZSs4fDA7Zj1lKzR8MDtkPWU7Y1tnPj4yXT1hO2NbZj4+Ml09YjtiPVNDKGNbZz4+Ml18MCxjWyhjW2Y+PjJdfDApKzQwPj4yXXwwLDE2LChjW2Y+PjJdfDApKzQ0fDAsZCl8MDtjWyhjW2Y+PjJdfDApKzQwPj4yXT1iO2k9ZTtyZXR1cm4gY1tkPj4yXXwwfWZ1bmN0aW9uIGxIKGIsZixnLGgsaixrLGwpe2I9YnwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO2s9a3wwO2w9bHwwO3ZhciBtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MCxFPTAsRj0wLEc9MCxIPTAsST0wLEo9MCxLPTAsTD0wO0w9aTtpPWkrMTEyfDA7cj1MKzk2fDA7cz1MKzkyfDA7bT1MKzg4fDA7bj1MKzg0fDA7bz1MKzgwfDA7dD1MKzc2fDA7cD1MKzcyfDA7Sz1MKzY4fDA7eD1MKzY0fDA7QT1MKzYwfDA7cT1MKzU2fDA7SD1MKzUyfDA7Sj1MKzQ4fDA7Qz1MKzQ0fDA7RD1MKzQwfDA7ej1MKzM2fDA7ST1MKzMyfDA7dj1MKzI4fDA7dz1MKzI0fDA7Rj1MKzIwfDA7Qj1MKzE2fDA7RT1MKzEyfDA7dT1MKzh8MDtHPUwrNHwwO3k9TDtjW3I+PjJdPWI7Y1tzPj4yXT1mO2NbbT4+Ml09ZztjW24+PjJdPWg7Y1tvPj4yXT1qO2NbdD4+Ml09aztjW3A+PjJdPWw7Y1tLPj4yXT1jWyhjW3I+PjJdfDApKzg+PjJdO2NbeD4+Ml09KGRbKGNbcz4+Ml18MCkrMjg+PjBdJjF8MCk9PTAmMTtjW0E+PjJdPWNbY1tjW3M+PjJdPj4yXT4+Ml07Y1txPj4yXT0oY1tBPj4yXXwwKSsoY1t4Pj4yXXwwKSsoY1t0Pj4yXXwwKTtoPShjW3I+PjJdfDApKzQ0fDA7aj0oY1toPj4yXXwwKSsxfDA7Y1toPj4yXT1qO2NbSj4+Ml09ajtjW0M+PjJdPWNbKGNbcz4+Ml18MCkrND4+Ml07aWYoY1twPj4yXXwwKWNbSD4+Ml09KGNbbj4+Ml18MCktKGNbQT4+Ml18MCktKGNbeD4+Ml18MCk7ZWxzZXtjW0g+PjJdPShjWyhjW3I+PjJdfDApKzQ0Pj4yXXwwKSsxO2o9KGNbcj4+Ml18MCkrNDR8MDtjW2o+PjJdPShjW2o+PjJdfDApKyhjW3E+PjJdfDApfWs9Y1ttPj4yXXwwO2lmKGNbKGNbbT4+Ml18MCkrMTY+PjJdfDApaz0oY1trKzE2Pj4yXXwwKSsxfDA7ZWxzZSBrPWNbaysxMj4+Ml18MDtjW3o+PjJdPWs7bT1XeihjW0s+PjJdfDApfDA7Y1soY1tzPj4yXXwwKSsyND4+Ml09bTthQihjW3I+PjJdfDAsY1tjW3M+PjJdPj4yXXwwLGNbSD4+Ml18MCxjW28+PjJdfDAsNSl8MDtpZihjW3g+PjJdfDApaXgoY1tLPj4yXXwwLDExMyxjWyhjW3M+PjJdfDApKzg+PjJdfDAsKGNbSD4+Ml18MCkrKGNbQT4+Ml18MCl8MCl8MDtpZighKGNbcD4+Ml18MCkpWEcoY1tyPj4yXXwwLGNbbj4+Ml18MCwoY1tIPj4yXXwwKSsoY1tBPj4yXXwwKSsoY1t4Pj4yXXwwKXwwLGNbdD4+Ml18MCk7angoY1tLPj4yXXwwLDk5LChjW0g+PjJdfDApKyhjW0M+PjJdfDApfDAsKGNbcT4+Ml18MCktKGNbQz4+Ml18MCl8MCxjW0o+PjJdfDApfDA7aWYoKGNbQz4+Ml18MCk+MCl7Y1tJPj4yXT0oY1soY1tyPj4yXXwwKSs0ND4+Ml18MCkrMTtrPShjW3I+PjJdfDApKzQ0fDA7Y1trPj4yXT0oY1trPj4yXXwwKSsoY1soY1tzPj4yXXwwKSs0Pj4yXXwwKTtjW0I+PjJdPShjW0E+PjJdfDApLShjWyhjW3M+PjJdfDApKzQ+PjJdfDApKyhjW3g+PjJdfDApO2s9Y1tLPj4yXXwwO2lmKGNbeD4+Ml18MCljW3Y+PjJdPVN6KGssMjIsKGNbSD4+Ml18MCkrKGNbQT4+Ml18MCl8MCl8MDtlbHNlIGNbdj4+Ml09U3ooaywxMDksY1soY1tzPj4yXXwwKSs4Pj4yXXwwKXwwO2p4KGNbSz4+Ml18MCw5NSxjW0k+PjJdfDAsY1tIPj4yXXwwLGNbKGNbcz4+Ml18MCkrND4+Ml18MCl8MDtjW0Y+PjJdPWVBKGNbSz4+Ml18MCxjWyhjW3M+PjJdfDApKzIwPj4yXXwwKXwwO2lmKGFbKGNbY1tyPj4yXT4+Ml18MCkrNjk+PjBdfDApe2k9TDtyZXR1cm59Y1soY1tGPj4yXXwwKSs4Pj4yXT0oY1tCPj4yXXwwKSsoY1t0Pj4yXXwwKTtjW0U+PjJdPWNbKGNbRj4+Ml18MCkrMTY+PjJdO1ZSKGNbKGNbRT4+Ml18MCkrMTY+PjJdfDAsMCxlWyhjW0U+PjJdfDApKzY+PjFdfDApfDA7TWgoY1tLPj4yXXwwLC0xLGNbRT4+Ml18MCwtNik7RT1KRyhjW3I+PjJdfDAsY1tjW3M+PjJdPj4yXXwwLGNbQz4+Ml18MCwoZVsoY1tFPj4yXXwwKSs4Pj4xXXwwKS0xfDApfDA7Y1soY1tGPj4yXXwwKSsxNj4+Ml09RTtjW3c+PjJdPXd4KGNbSz4+Ml18MCl8MDtqeChjW0s+PjJdfDAsMTgsKGNbdz4+Ml18MCkrMXwwLDAsKGNbdz4+Ml18MCkrMXwwKXwwO0U9V3ooY1tLPj4yXXwwKXwwO2NbKGNbcz4+Ml18MCkrMTY+PjJdPUU7RT0oY1tyPj4yXXwwKSs0NHwwO0Y9KGNbRT4+Ml18MCkrMXwwO2NbRT4+Ml09RjtjWyhjW3M+PjJdfDApKzEyPj4yXT1GO2l4KGNbSz4+Ml18MCwxNCxjWyhjW3M+PjJdfDApKzEyPj4yXXwwLGNbKGNbcz4+Ml18MCkrMTY+PjJdfDApfDA7U3ooY1tLPj4yXXwwLDEzMyxjWyhjW3M+PjJdfDApKzg+PjJdfDApfDA7aWYoY1t6Pj4yXXwwKWl4KGNbSz4+Ml18MCwyMixjW3o+PjJdfDAsY1soY1tzPj4yXXwwKSsyND4+Ml18MCl8MDtaeihjW0s+PjJdfDAsY1t2Pj4yXXwwKTtYRyhjW3I+PjJdfDAsY1tIPj4yXXwwLGNbST4+Ml18MCxjWyhjW3M+PjJdfDApKzQ+PjJdfDApO1p6KGNbSz4+Ml18MCxjW3c+PjJdfDApfWlmKGRbKGNbcz4+Ml18MCkrMjg+PjBdJjEpY1tEPj4yXT0xMjU7ZWxzZSBjW0Q+PjJdPTEyNjtpeChjW0s+PjJdfDAsY1tEPj4yXXwwLGNbKGNbcz4+Ml18MCkrOD4+Ml18MCxjW0o+PjJdfDApfDA7aWYoIShjW3o+PjJdfDApKXtpPUw7cmV0dXJufWNbRz4+Ml09MDtjW3U+PjJdPWp4KGNbSz4+Ml18MCw2NyxjW3o+PjJdfDAsMCwxKXwwO1N6KGNbSz4+Ml18MCw1MyxjWyhjW3M+PjJdfDApKzg+PjJdfDApfDA7aWYoYVsoY1tzPj4yXXwwKSsyOT4+MF18MCl7ST0oY1tyPj4yXXwwKSs0NHwwO0o9KGNbST4+Ml18MCkrMXwwO2NbST4+Ml09SjtjW0c+PjJdPUo7angoY1tLPj4yXXwwLDk2LGNbKGNbcz4+Ml18MCkrOD4+Ml18MCxjW0E+PjJdfDAsY1tHPj4yXXwwKXwwfVN6KGNbSz4+Ml18MCwxMTcsY1soY1tzPj4yXXwwKSs4Pj4yXXwwKXwwO2lmKGFbKGNbcz4+Ml18MCkrMjk+PjBdfDApe2NbeT4+Ml09KHd4KGNbSz4+Ml18MCl8MCkrMjtqeChjW0s+PjJdfDAsMzcsKGNbSD4+Ml18MCkrKGNbQT4+Ml18MCl8MCxjW3k+PjJdfDAsY1tHPj4yXXwwKXwwO0poKGNbSz4+Ml18MCwtMTI4KX1aeihjW0s+PjJdfDAsY1t1Pj4yXXwwKTtpPUw7cmV0dXJufWZ1bmN0aW9uIG1IKGUsZixnLGgpe2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO3ZhciBqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wO3E9aTtpPWkrMzJ8MDttPXErMjB8MDtqPXErMTZ8MDtuPXErMTJ8MDtvPXErOHwwO3A9cSs0fDA7az1xO2Nbaj4+Ml09ZTtjW24+PjJdPWY7Y1tvPj4yXT1nO2NbcD4+Ml09aDtpZighKGNbbj4+Ml18MCkpe2NbbT4+Ml09MDtwPWNbbT4+Ml18MDtpPXE7cmV0dXJuIHB8MH1kbyBpZigoZFtjW24+PjJdPj4wXXwwKT09MTUyPyhjWyhjW24+PjJdfDApKzI4Pj4yXXwwKT09KGNbbz4+Ml18MCk6MClpZigoYlsoY1tuPj4yXXwwKSszMj4+MV18MCk8MCl7YVtjW24+PjJdPj4wXT0xMDE7YnJlYWt9ZWxzZXtjW2s+PjJdPUl5KGNbaj4+Ml18MCxjWyhjWyhjW3A+PjJdfDApKzQ+PjJdfDApKygoYlsoY1tuPj4yXXwwKSszMj4+MV18MCkqMjB8MCk+PjJdfDAsMCl8MDtpdihjW2o+PjJdfDAsY1tuPj4yXXwwKTtjW24+PjJdPWNbaz4+Ml07YnJlYWt9ZWxzZSBsPTg7d2hpbGUoMCk7ZG8gaWYoKGx8MCk9PTgpe2U9bUgoY1tqPj4yXXwwLGNbKGNbbj4+Ml18MCkrMTI+PjJdfDAsY1tvPj4yXXwwLGNbcD4+Ml18MCl8MDtjWyhjW24+PjJdfDApKzEyPj4yXT1lO2U9bUgoY1tqPj4yXXwwLGNbKGNbbj4+Ml18MCkrMTY+PjJdfDAsY1tvPj4yXXwwLGNbcD4+Ml18MCl8MDtjWyhjW24+PjJdfDApKzE2Pj4yXT1lO2o9Y1tqPj4yXXwwO2U9KGNbbj4+Ml18MCkrMjB8MDtpZihjWyhjW24+PjJdfDApKzQ+PjJdJjIwNDgpe25IKGosY1tlPj4yXXwwLGNbbz4+Ml18MCxjW3A+PjJdfDAsMSk7YnJlYWt9ZWxzZXtvSChqLGNbZT4+Ml18MCxjW28+PjJdfDAsY1twPj4yXXwwKTticmVha319d2hpbGUoMCk7Y1ttPj4yXT1jW24+PjJdO3A9Y1ttPj4yXXwwO2k9cTtyZXR1cm4gcHwwfWZ1bmN0aW9uIG5IKGEsYixlLGYsZyl7YT1hfDA7Yj1ifDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7dmFyIGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wO3E9aTtpPWkrMzJ8MDtoPXErMjh8MDtqPXErMjR8MDtrPXErMjB8MDtsPXErMTZ8MDttPXErMTJ8MDtwPXErOHwwO289cSs0fDA7bj1xO2NbaD4+Ml09YTtjW2o+PjJdPWI7Y1trPj4yXT1lO2NbbD4+Ml09ZjtjW20+PjJdPWc7aWYoIShjW2o+PjJdfDApKXtpPXE7cmV0dXJufXdoaWxlKDEpe29IKGNbaD4+Ml18MCxjW2Nbaj4+Ml0+PjJdfDAsY1trPj4yXXwwLGNbbD4+Ml18MCk7b0goY1toPj4yXXwwLGNbKGNbaj4+Ml18MCkrMzY+PjJdfDAsY1trPj4yXXwwLGNbbD4+Ml18MCk7b0goY1toPj4yXXwwLGNbKGNbaj4+Ml18MCkrNDQ+PjJdfDAsY1trPj4yXXwwLGNbbD4+Ml18MCk7Zj1tSChjW2g+PjJdfDAsY1soY1tqPj4yXXwwKSs0MD4+Ml18MCxjW2s+PjJdfDAsY1tsPj4yXXwwKXwwO2NbKGNbaj4+Ml18MCkrNDA+PjJdPWY7Zj1tSChjW2g+PjJdfDAsY1soY1tqPj4yXXwwKSszMj4+Ml18MCxjW2s+PjJdfDAsY1tsPj4yXXwwKXwwO2NbKGNbaj4+Ml18MCkrMzI+PjJdPWY7Y1twPj4yXT1jWyhjW2o+PjJdfDApKzI4Pj4yXTtjW24+PjJdPWNbY1twPj4yXT4+Ml07Y1tvPj4yXT0oY1twPj4yXXwwKSs4O3doaWxlKDEpe2lmKChjW24+PjJdfDApPD0wKWJyZWFrO25IKGNbaD4+Ml18MCxjWyhjW28+PjJdfDApKzIwPj4yXXwwLGNbaz4+Ml18MCxjW2w+PjJdfDAsMSk7aWYoKGRbKGNbbz4+Ml18MCkrMzYrMT4+MF18MCk+Pj4yJjEpb0goY1toPj4yXXwwLGNbKGNbbz4+Ml18MCkrNjQ+PjJdfDAsY1trPj4yXXwwLGNbbD4+Ml18MCk7Y1tuPj4yXT0oY1tuPj4yXXwwKSstMTtjW28+PjJdPShjW28+PjJdfDApKzcyfWlmKCEoY1ttPj4yXXwwKSl7aD05O2JyZWFrfWY9Y1soY1tqPj4yXXwwKSs0OD4+Ml18MDtjW2o+PjJdPWY7aWYoIWYpe2g9OTticmVha319aWYoKGh8MCk9PTkpe2k9cTtyZXR1cm59fWZ1bmN0aW9uIG9IKGEsYixkLGUpe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MDtsPWk7aT1pKzMyfDA7Zj1sKzE2fDA7Zz1sKzEyfDA7aD1sKzh8MDtqPWwrNHwwO2s9bDtjW2Y+PjJdPWE7Y1tnPj4yXT1iO2NbaD4+Ml09ZDtjW2o+PjJdPWU7aWYoIShjW2c+PjJdfDApKXtpPWw7cmV0dXJufWNbaz4+Ml09MDt3aGlsZSgxKXtpZigoY1trPj4yXXwwKT49KGNbY1tnPj4yXT4+Ml18MCkpYnJlYWs7Yj1tSChjW2Y+PjJdfDAsY1soY1soY1tnPj4yXXwwKSs0Pj4yXXwwKSsoKGNbaz4+Ml18MCkqMjB8MCk+PjJdfDAsY1toPj4yXXwwLGNbaj4+Ml18MCl8MDtjWyhjWyhjW2c+PjJdfDApKzQ+PjJdfDApKygoY1trPj4yXXwwKSoyMHwwKT4+Ml09YjtjW2s+PjJdPShjW2s+PjJdfDApKzF9aT1sO3JldHVybn1mdW5jdGlvbiBwSChhLGQsZSl7YT1hfDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MDttPWk7aT1pKzMyfDA7Zj1tKzIwfDA7Zz1tKzE2fDA7aD1tKzEyfDA7az1tKzh8MDtqPW0rNHwwO2w9bTtjW2Y+PjJdPWE7Y1tnPj4yXT1kO2NbaD4+Ml09ZTtjW2o+PjJdPTE7Y1tsPj4yXT0wO3doaWxlKDEpe2lmKCEoY1soY1tnPj4yXXwwKSs0OD4+Ml18MCkpYnJlYWs7Y1tnPj4yXT1jWyhjW2c+PjJdfDApKzQ4Pj4yXTtjW2o+PjJdPShjW2o+PjJdfDApKzF9d2hpbGUoMSl7aWYoIShjW2c+PjJdfDApKXtmPTc7YnJlYWt9Y1trPj4yXT1jWyhjW2c+PjJdfDApKzQ4Pj4yXTtjWyhjW2c+PjJdfDApKzQ4Pj4yXT0wO2NbbD4+Ml09UHYoY1tmPj4yXXwwLGNbZz4+Ml18MCxjW2g+PjJdfDApfDA7Y1soY1tnPj4yXXwwKSs0OD4+Ml09Y1trPj4yXTtpZihjW2w+PjJdfDApe2Y9NzticmVha31iWyhjW2c+PjJdfDApKzY+PjFdPWNbaj4+Ml07Y1tnPj4yXT1jWyhjW2c+PjJdfDApKzUyPj4yXX1pZigoZnwwKT09Nyl7aT1tO3JldHVybiBjW2w+PjJdfDB9cmV0dXJuIDB9ZnVuY3Rpb24gcUgoYSxiLGUpe2E9YXwwO2I9YnwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MCxFPTAsRj0wLEc9MDtHPWk7aT1pKzEyOHwwO0Y9RztvPUcrMTIwfDA7cD1HKzExNnwwO3E9RysxMTJ8MDtnPUcrMTA4fDA7bD1HKzEwNHwwO0U9RysxMDB8MDtBPUcrOTZ8MDt0PUcrOTJ8MDtzPUcrODh8MDtyPUcrODR8MDt2PUcrODB8MDtCPUcrNzZ8MDt3PUcrNzJ8MDtrPUcrNjh8MDtqPUcrNjR8MDt1PUcrNDB8MDtmPUcrMzJ8MDtuPUcrMjh8MDt6PUcrMjR8MDt4PUcrMjB8MDt5PUcrMTZ8MDtDPUcrMTJ8MDtEPUcrOHwwO209Rys0fDA7Y1tvPj4yXT1hO2NbcD4+Ml09YjtjW3E+PjJdPWU7Y1tnPj4yXT1jWyhjW3A+PjJdfDApKzI4Pj4yXTtjW2w+PjJdPWNbY1tjW3A+PjJdPj4yXT4+Ml07Y1tFPj4yXT1jWyhjW28+PjJdfDApKzg+PjJdO2NbQT4+Ml09Y1soY1twPj4yXXwwKSs0OD4+Ml07Y1t2Pj4yXT0wO2Nbaz4+Ml09MDtjW2o+PjJdPTU7aWYoYXgoY1tvPj4yXXwwLDMzLDAsMCwwKXwwKXtpPUc7cmV0dXJufWNbcj4+Ml09V3ooY1tFPj4yXXwwKXwwO0tHKGNbbz4+Ml18MCxjW3A+PjJdfDAsY1tyPj4yXXwwKTtjW3g+PjJdPWNbKGNbcD4+Ml18MCkrNTY+PjJdO2NbeT4+Ml09Y1soY1twPj4yXXwwKSs2MD4+Ml07Y1tDPj4yXT1jWyhjW3A+PjJdfDApKzEyPj4yXTtjW0Q+PjJdPWNbKGNbcD4+Ml18MCkrMTY+PjJdO2NbKGNbcD4+Ml18MCkrNjA+PjJdPTA7Y1soY1twPj4yXXwwKSs1Nj4+Ml09MDtjWyhjW3A+PjJdfDApKzE2Pj4yXT0wO2NbKGNbcD4+Ml18MCkrMTI+PjJdPTA7Y1t6Pj4yXT1jWyhjW3A+PjJdfDApKzQ0Pj4yXTtjW2Y+PjJdPTA7d2hpbGUoMSl7aWYoKGNbZj4+Ml18MCk+PShjW2NbZz4+Ml0+PjJdfDApKWJyZWFrO2I9Y1tmPj4yXXwwO2lmKChkWyhjW2c+PjJdfDApKzgrKChjW2Y+PjJdfDApKjcyfDApKzM2KzE+PjBdfDApPj4+NSYxKXtoPTU7YnJlYWt9Y1tmPj4yXT1iKzF9aWYoKGh8MCk9PTUpY1t2Pj4yXT1jWyhjW2c+PjJdfDApKzgrKGIqNzJ8MCkrNDQ+PjJdO2g9KGNbbz4+Ml18MCkrNDB8MDtiPWNbaD4+Ml18MDtjW2g+PjJdPWIrMTtjW3c+PjJdPWI7Yj0oY1t6Pj4yXXwwKSE9MDtpZigoZFsoY1twPj4yXXwwKSs0Pj4wXXwwfDApPT0xMTUpe2Nbaj4+Ml09Yj84OjY7Zz0oY1tvPj4yXXwwKSs0MHwwO2g9Y1tnPj4yXXwwO2NbZz4+Ml09aCsxO2Nbaz4+Ml09aH1lbHNlIGNbaj4+Ml09Yj83OjU7dkIodSxjW2o+PjJdfDAsY1t3Pj4yXXwwKTtoPShjW28+PjJdfDApKzQ0fDA7aj0oY1toPj4yXXwwKSsxfDA7Y1toPj4yXT1qO2NbQj4+Ml09ajtqeChjW0U+PjJdfDAsMTEwLGNbdj4+Ml18MCxjW0I+PjJdfDAsY1tsPj4yXXwwKXwwO2lmKGNbej4+Ml18MCl7Y1ttPj4yXT11SChjW28+PjJdfDAsY1twPj4yXXwwLDEpfDA7bXgoY1tFPj4yXXwwLDEwNyxjW3c+PjJdfDAsKGNbY1t6Pj4yXT4+Ml18MCkrMnwwLDAsY1ttPj4yXXwwLC02KXwwO2NbdSsyMD4+Ml09Y1t6Pj4yXX1lbHNlIGl4KGNbRT4+Ml18MCwxMDcsY1t3Pj4yXXwwLGNbbD4+Ml18MCl8MDtpZihjW2s+PjJdfDApe209aXgoY1tFPj4yXXwwLDEwNyxjW2s+PjJdfDAsMCl8MDtjWyhjW3A+PjJdfDApKzIwPj4yXT1tO209KGNbcD4+Ml18MCkrOHwwO2NbbT4+Ml09Y1ttPj4yXXwzMn1jWyhjW3A+PjJdfDApKzQ0Pj4yXT0wO2NbKGNbQT4+Ml18MCkrNTI+PjJdPTA7Y1tuPj4yXT1QdihjW28+PjJdfDAsY1tBPj4yXXwwLHUpfDA7Y1soY1tBPj4yXXwwKSs1Mj4+Ml09Y1twPj4yXTtpZighKGNbbj4+Ml18MCkpe2NbdD4+Ml09aXgoY1tFPj4yXXwwLDU3LGNbdz4+Ml18MCxjW3I+PjJdfDApfDA7U3ooY1tFPj4yXXwwLDEyNCxjW3Y+PjJdfDApfDA7Yj1jW0U+PjJdfDA7ZT1jW3c+PjJdfDA7aWYoY1t6Pj4yXXwwKWp4KGIsOTYsZSwoY1tjW3o+PjJdPj4yXXwwKSsxfDAsY1tCPj4yXXwwKXwwO2Vsc2UgaXgoYiwxMjIsZSxjW0I+PjJdfDApfDA7U3ooY1tFPj4yXXwwLDExNyxjW3c+PjJdfDApfDA7Y1tzPj4yXT1XeihjW0U+PjJdfDApfDA7ZkgoY1tFPj4yXXwwLGNbRD4+Ml18MCxjW3M+PjJdfDApO1NHKGNbbz4+Ml18MCxjW3A+PjJdfDAsY1tjW3A+PjJdPj4yXXwwLGNbdj4+Ml18MCwwLDAsY1txPj4yXXwwLGNbcz4+Ml18MCxjW3I+PjJdfDApO2lmKGNbQz4+Ml18MClpeChjW0U+PjJdfDAsNjgsY1tDPj4yXXwwLGNbcj4+Ml18MCl8MDtfeihjW0U+PjJdfDAsY1tzPj4yXXwwKTtpZihjWyhjW3A+PjJdfDApKzg+PjJdJjgpRWgoY1tvPj4yXXwwLDM1OTgwLEYpO2Vsc2V7Y1soY1twPj4yXXwwKSs0OD4+Ml09MDtQdihjW28+PjJdfDAsY1twPj4yXXwwLHUpfDA7Y1soY1twPj4yXXwwKSs0OD4+Ml09Y1tBPj4yXX1ZeihjW0U+PjJdfDAsY1t0Pj4yXXwwKXwwO196KGNbRT4+Ml18MCxjW3I+PjJdfDApfWV2KGNbY1tvPj4yXT4+Ml18MCxjWyhjW3A+PjJdfDApKzQ0Pj4yXXwwKTtjWyhjW3A+PjJdfDApKzQ0Pj4yXT1jW3o+PjJdO2NbKGNbcD4+Ml18MCkrNTY+PjJdPWNbeD4+Ml07Y1soY1twPj4yXXwwKSs2MD4+Ml09Y1t5Pj4yXTtpPUc7cmV0dXJufWZ1bmN0aW9uIHJIKGYsZyxoKXtmPWZ8MDtnPWd8MDtoPWh8MDt2YXIgaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTAsRT0wLEY9MCxHPTAsSD0wLEk9MCxKPTAsSz0wLEw9MCxNPTAsTj0wLE89MCxQPTAsUT0wLFI9MCxTPTAsVD0wLFU9MCxWPTAsVz0wLFg9MCxZPTAsWj0wLF89MCwkPTAsYWE9MCxiYT0wO2JhPWk7aT1pKzIyNHwwO3E9YmErMjIwfDA7cj1iYSsyMTZ8MDtzPWJhKzIxMnwwO3Q9YmErMjA4fDA7aj1iYSsyMDR8MDtrPWJhKzIwMHwwO1M9YmErMTk2fDA7YWE9YmErMTkyfDA7SD1iYSsxNjh8MDtJPWJhKzE0NHwwO1Q9YmErMTQwfDA7VT1iYSsxMzZ8MDtFPWJhKzEzMnwwO0Y9YmErMTI4fDA7WD1iYSsxMjR8MDtZPWJhKzEyMHwwO0M9YmErMTE2fDA7RD1iYSsxMTJ8MDt6PWJhKzEwOHwwO0E9YmErMTA0fDA7Qj1iYSsxMDB8MDt5PWJhKzk2fDA7dz1iYSs5MnwwO3g9YmErODh8MDtWPWJhKzg0fDA7Vz1iYSs4MHwwO1o9YmErNzZ8MDtfPWJhKzcyfDA7JD1iYSs2OHwwO0w9YmErNjR8MDtNPWJhKzYwfDA7dj1iYSs1NnwwO089YmErNTJ8MDtRPWJhKzQ4fDA7Uj1iYSs0NHwwO0c9YmErNDB8MDtwPWJhKzM2fDA7Tj1iYSszMnwwO3U9YmErMjh8MDtKPWJhKzI0fDA7Sz1iYSsyMHwwO209YmErMTZ8MDtvPWJhKzEyfDA7bj1iYSs4fDA7bD1iYSs0fDA7UD1iYTtjW3I+PjJdPWY7Y1tzPj4yXT1nO2NbdD4+Ml09aDtjW0Q+PjJdPTA7Y1tRPj4yXT0wO2NbRz4+Ml09Y1tjW3I+PjJdPj4yXTtjW2FhPj4yXT1jWyhjW3I+PjJdfDApKzg+PjJdO2NbTT4+Ml09V3ooY1thYT4+Ml18MCl8MDtjW0w+PjJdPVd6KGNbYWE+PjJdfDApfDA7Y1tPPj4yXT1kWyhjW3M+PjJdfDApKzQ+PjBdO2NbUz4+Ml09Y1soY1tzPj4yXXwwKSs0OD4+Ml07Y1twPj4yXT1jWyhjW3M+PjJdfDApKzQ0Pj4yXTtjW04+PjJdPWNbY1twPj4yXT4+Ml07YTpkbyBpZigoY1tPPj4yXXwwKSE9MTE2KXtjW2o+PjJdPTE7d2hpbGUoMSl7aWYoZFsoY1tHPj4yXXwwKSs2OT4+MF18MClicmVhayBhO2lmKChjW2o+PjJdfDApPihjW2NbY1tzPj4yXT4+Ml0+PjJdfDApKWJyZWFrIGE7Y1trPj4yXT0wO2NbbT4+Ml09Y1soY1twPj4yXXwwKSs0Pj4yXTt3aGlsZSgxKXtpZigoY1trPj4yXXwwKT49KGNbTj4+Ml18MCkpYnJlYWs7aWYoKGVbKGNbbT4+Ml18MCkrMTY+PjFdfDApPT0oY1tqPj4yXXwwKSlicmVhaztjW2s+PjJdPShjW2s+PjJdfDApKzE7Y1ttPj4yXT0oY1ttPj4yXXwwKSsyMH1pZigoY1trPj4yXXwwKT09KGNbTj4+Ml18MCkpe2Nbbz4+Ml09V3YoY1tHPj4yXXwwLDEzNCwwKXwwO2lmKCEoY1tvPj4yXXwwKSlicmVhaztmPShjW28+PjJdfDApKzR8MDtjW2Y+PjJdPWNbZj4+Ml18MTAyNDtjWyhjW28+PjJdfDApKzg+PjJdPWNbaj4+Ml07Y1twPj4yXT1UdihjW3I+PjJdfDAsY1twPj4yXXwwLGNbbz4+Ml18MCl8MDtpZihjW3A+PjJdfDApe2g9Y1tqPj4yXSY2NTUzNTtmPWNbTj4+Ml18MDtjW04+PjJdPWYrMTtiWyhjWyhjW3A+PjJdfDApKzQ+PjJdfDApKyhmKjIwfDApKzE2Pj4xXT1ofX1jW2o+PjJdPShjW2o+PjJdfDApKzF9Y1txPj4yXT03O2FhPWNbcT4+Ml18MDtpPWJhO3JldHVybiBhYXwwfXdoaWxlKDApO2NbdT4+Ml09VncoY1tHPj4yXXwwLChjW04+PjJdfDApKzE8PDIsMCl8MDtpZihjW3U+PjJdfDApe2NbY1t1Pj4yXT4+Ml09Y1tOPj4yXTtjW2o+PjJdPTE7Y1tuPj4yXT1jWyhjW3A+PjJdfDApKzQ+PjJdO3doaWxlKDEpe2lmKChjW2o+PjJdfDApPihjW04+PjJdfDApKWJyZWFrO2NbKGNbdT4+Ml18MCkrKGNbaj4+Ml08PDIpPj4yXT0oZVsoY1tuPj4yXXwwKSsxNj4+MV18MCktMTtjW2o+PjJdPShjW2o+PjJdfDApKzE7Y1tuPj4yXT0oY1tuPj4yXXwwKSsyMH1jW1I+PjJdPXVIKGNbcj4+Ml18MCxjW3M+PjJdfDAsMSl8MH1lbHNlIGNbUj4+Ml09MDtjWyhjW3M+PjJdfDApKzQ0Pj4yXT1jW3A+PjJdO2Y9UXkoY1tjW3I+PjJdPj4yXXwwLGNbcD4+Ml18MCwwKXwwO2NbKGNbUz4+Ml18MCkrNDQ+PjJdPWY7YjpkbyBpZigoY1tPPj4yXXwwKSE9MTE2KXtjW2w+PjJdPWNbY1tjW3M+PjJdPj4yXT4+Ml07Y1taPj4yXT0oY1soY1tyPj4yXXwwKSs0ND4+Ml18MCkrMTtmPShjW3I+PjJdfDApKzQ0fDA7Y1tmPj4yXT0oY1tmPj4yXXwwKSsoKGNbbD4+Ml18MCkrMSk7aXgoY1thYT4+Ml18MCw3NiwwLGNbWj4+Ml18MCl8MDtjW1E+PjJdPWlBKGNbRz4+Ml18MCxjW2w+PjJdfDAsMSl8MDtpZihjW1E+PjJdfDApe2Nbaj4+Ml09MDt3aGlsZSgxKXtpZigoY1tqPj4yXXwwKT49KGNbbD4+Ml18MCkpYnJlYWsgYjtmPXRIKGNbcj4+Ml18MCxjW3M+PjJdfDAsY1tqPj4yXXwwKXwwO2NbKGNbUT4+Ml18MCkrMjArKGNbaj4+Ml08PDIpPj4yXT1mO2FbKGNbKGNbUT4+Ml18MCkrMTY+PjJdfDApKyhjW2o+PjJdfDApPj4wXT0wO2Nbaj4+Ml09KGNbaj4+Ml18MCkrMX19fWVsc2UgY1taPj4yXT0wO3doaWxlKDApO2NbKGNbcz4+Ml18MCkrNDg+PjJdPTA7Y1soY1tTPj4yXXwwKSs1Mj4+Ml09MDtUeShjW3I+PjJdfDAsY1tzPj4yXXwwLGNbKGNbcz4+Ml18MCkrNDQ+PjJdfDAsMjkwOTkpfDA7aWYoIShjWyhjW1M+PjJdfDApKzQ4Pj4yXXwwKSlUeShjW3I+PjJdfDAsY1tTPj4yXXwwLGNbKGNbUz4+Ml18MCkrNDQ+PjJdfDAsMjkwOTkpfDA7S0coY1tyPj4yXXwwLGNbcz4+Ml18MCxjW00+PjJdfDApO2lmKChjW08+PjJdfDApPT0xMTY/KGNbKGNbcz4+Ml18MCkrMTI+PjJdfDApIT0wOjApe2o9KGNbcj4+Ml18MCkrNDR8MDtmPShjW2o+PjJdfDApKzF8MDtjW2o+PjJdPWY7Y1tWPj4yXT1mO2Y9KGNbcj4+Ml18MCkrNDR8MDtqPShjW2Y+PjJdfDApKzF8MDtjW2Y+PjJdPWo7Y1tXPj4yXT1qO2o9Y1tzPj4yXXwwO2lmKGNbKGNbcz4+Ml18MCkrMTY+PjJdfDApaj0oY1tqKzE2Pj4yXXwwKSsxfDA7ZWxzZSBqPWNbaisxMj4+Ml18MDtpeChjW2FhPj4yXXwwLDg0LGosY1tWPj4yXXwwKXwwO2l4KGNbYWE+PjJdfDAsODQsY1tWPj4yXXwwLGNbVz4+Ml18MCl8MH1lbHNle2NbVz4+Ml09MDtjW1Y+PjJdPTB9aXYoY1tHPj4yXXwwLGNbKGNbcz4+Ml18MCkrNTY+PjJdfDApO2NbKGNbcz4+Ml18MCkrNTY+PjJdPTA7aXYoY1tHPj4yXXwwLGNbKGNbcz4+Ml18MCkrNjA+PjJdfDApO2NbKGNbcz4+Ml18MCkrNjA+PjJdPTA7Zj0oY1tyPj4yXXwwKSs0NHwwO3A9KGNbZj4+Ml18MCkrMXwwO2NbZj4+Ml09cDtjW1Q+PjJdPXA7cD0oY1tyPj4yXXwwKSs0NHwwO2Y9KGNbcD4+Ml18MCkrMXwwO2NbcD4+Ml09ZjtjW1U+PjJdPWY7Zj0oY1tyPj4yXXwwKSs0NHwwO3A9KGNbZj4+Ml18MCkrMXwwO2NbZj4+Ml09cDtjW1g+PjJdPXA7cD0oY1tyPj4yXXwwKSs0NHwwO2Y9KGNbcD4+Ml18MCkrMXwwO2NbcD4+Ml09ZjtjW1k+PjJdPWY7dkIoSCwxMyxjW1Q+PjJdfDApO3ZCKEksMTMsY1tVPj4yXXwwKTtjW0U+PjJdPSh3eChjW2FhPj4yXXwwKXwwKSsxO2Nbdj4+Ml09angoY1thYT4+Ml18MCwxNSxjW1Q+PjJdfDAsMCxjW0U+PjJdfDApfDA7Y1soY1tTPj4yXXwwKSsxMj4+Ml09Y1tWPj4yXTtjW0o+PjJdPWNbKGNbcj4+Ml18MCkrNDI0Pj4yXTtQdihjW3I+PjJdfDAsY1tTPj4yXXwwLEgpfDA7WUMoY1thYT4+Ml18MCxjW1Q+PjJdfDApO1p6KGNbYWE+PjJdfDAsY1t2Pj4yXXwwKTtjW0Y+PjJdPSh3eChjW2FhPj4yXXwwKXwwKSsxO2Nbdj4+Ml09angoY1thYT4+Ml18MCwxNSxjW1U+PjJdfDAsMCxjW0Y+PjJdfDApfDA7Y1tfPj4yXT1jWyhjW3M+PjJdfDApKzEyPj4yXTtjWyQ+PjJdPWNbKGNbcz4+Ml18MCkrMTY+PjJdO2NbKGNbcz4+Ml18MCkrMTI+PjJdPWNbVz4+Ml07Y1soY1tzPj4yXXwwKSsxNj4+Ml09MDtjW0s+PjJdPWNbKGNbcj4+Ml18MCkrNDI0Pj4yXTtQdihjW3I+PjJdfDAsY1tzPj4yXXwwLEkpfDA7Y1soY1tzPj4yXXwwKSsxMj4+Ml09Y1tfPj4yXTtjWyhjW3M+PjJdfDApKzE2Pj4yXT1jWyQ+PjJdO1lDKGNbYWE+PjJdfDAsY1tVPj4yXXwwKTtjW0M+PjJdPXZIKGNbcj4+Ml18MCxjW3M+PjJdfDAsSCxjW3Q+PjJdfDAsY1tYPj4yXXwwLGNbWj4+Ml18MCxjW1E+PjJdfDAsY1tNPj4yXXwwKXwwO2lmKChjW08+PjJdfDApPT0xMTZ8KGNbTz4+Ml18MCk9PTExNSljW0Q+PjJdPXZIKGNbcj4+Ml18MCxjW3M+PjJdfDAsSSxjW3Q+PjJdfDAsY1tZPj4yXXwwLGNbWj4+Ml18MCxjW1E+PjJdfDAsY1tNPj4yXXwwKXwwO2pBKGNbUT4+Ml18MCk7aWYoKGNbTz4+Ml18MCk9PTExN3woY1tPPj4yXXwwKT09MTE4KXskPWNbTT4+Ml18MDtjW3o+PjJdPSQ7Y1tBPj4yXT0kfWVsc2V7Y1t6Pj4yXT1peChjW2FhPj4yXXwwLDE0LGNbWT4+Ml18MCxjW0Q+PjJdfDApfDA7Y1tBPj4yXT1peChjW2FhPj4yXXwwLDE2LGNbVT4+Ml18MCxjW00+PjJdfDApfDA7WXooY1thYT4+Ml18MCxjW3o+PjJdfDApfDA7JD1uRShiWyhjW3M+PjJdfDApKzY+PjFdfDAsYlsoY1tTPj4yXXwwKSs2Pj4xXXwwKXwwO2JbKGNbcz4+Ml18MCkrNj4+MV09JH1pZigoY1tPPj4yXXwwKT09MTE4KXtjW0I+PjJdPWNbej4+Ml07aWYoKGJbKGNbcz4+Ml18MCkrNj4+MV18MCk+KGJbKGNbUz4+Ml18MCkrNj4+MV18MCkpYlsoY1tzPj4yXXwwKSs2Pj4xXT1iWyhjW1M+PjJdfDApKzY+PjFdfDB9ZWxzZXtjW0I+PjJdPWl4KGNbYWE+PjJdfDAsMTQsY1tYPj4yXXwwLGNbQz4+Ml18MCl8MDtpeChjW2FhPj4yXXwwLDE2LGNbVD4+Ml18MCxjW00+PjJdfDApfDA7WXooY1thYT4+Ml18MCxjW0I+PjJdfDApfDB9Y1t5Pj4yXT1peChjW2FhPj4yXXwwLDE0LGNbWD4+Ml18MCxjW0M+PjJdfDApfDA7aXgoY1thYT4+Ml18MCwxNixjW1Q+PjJdfDAsY1t6Pj4yXXwwKXwwO1l6KGNbYWE+PjJdfDAsY1tMPj4yXXwwKXwwO2RvIGlmKChjW08+PjJdfDApIT0xMTYpaWYoKGNbTz4+Ml18MCk9PTExOCl7Y1t3Pj4yXT1jW3k+PjJdO2NbeT4+Ml09KGNbeT4+Ml18MCkrMTticmVha31lbHNle2Nbdz4+Ml09aXgoY1thYT4+Ml18MCwxNixjW1Q+PjJdfDAsY1t6Pj4yXXwwKXwwO1l6KGNbYWE+PjJdfDAsY1tMPj4yXXwwKXwwO2JyZWFrfWVsc2UgY1t3Pj4yXT1jW3k+PjJdO3doaWxlKDApO2NbeD4+Ml09d3goY1thYT4+Ml18MCl8MDtpZigoY1tPPj4yXXwwKT09MTE2fChjW08+PjJdfDApPT0xMTUpaXgoY1thYT4+Ml18MCwxNCxjW1k+PjJdfDAsY1tEPj4yXXwwKXwwO2l4KGNbYWE+PjJdfDAsMTYsY1tVPj4yXXwwLGNbQj4+Ml18MCl8MDtZeihjW2FhPj4yXXwwLGNbTD4+Ml18MCl8MDtaeihjW2FhPj4yXXwwLGNbdj4+Ml18MCk7aXgoY1thYT4+Ml18MCwxNixjW1Q+PjJdfDAsY1tBPj4yXXwwKXwwO2l4KGNbYWE+PjJdfDAsMTYsY1tVPj4yXXwwLGNbQj4+Ml18MCl8MDtfeihjW2FhPj4yXXwwLGNbTD4+Ml18MCk7bXgoY1thYT4+Ml18MCw5NCwwLDAsMCxjW3U+PjJdfDAsLTE1KXwwO214KGNbYWE+PjJdfDAsOTUsY1tIKzEyPj4yXXwwLGNbSSsxMj4+Ml18MCxjW04+PjJdfDAsY1tSPj4yXXwwLC02KXwwO0poKGNbYWE+PjJdfDAsMSk7angoY1thYT4+Ml18MCwxOCxjW3k+PjJdfDAsY1t3Pj4yXXwwLGNbeD4+Ml18MCl8MDtfeihjW2FhPj4yXXwwLGNbTT4+Ml18MCk7aWYoKGRbY1t0Pj4yXT4+MF18MCk9PTkpe2NbUD4+Ml09Y1tTPj4yXTt3aGlsZSgxKXtpZighKGNbKGNbUD4+Ml18MCkrNDg+PjJdfDApKWJyZWFrO2NbUD4+Ml09Y1soY1tQPj4yXXwwKSs0OD4+Ml19ZEgoY1tyPj4yXXwwLGNbKGNbUD4+Ml18MCkrMjg+PjJdfDAsY1tjW1A+PjJdPj4yXXwwKX1pZihjWyhjW3M+PjJdfDApKzQ4Pj4yXXwwKWZ2KGNbRz4+Ml18MCxjWyhjW3M+PjJdfDApKzQ4Pj4yXXwwKTtjWyhjW3M+PjJdfDApKzQ4Pj4yXT1jW1M+PjJdO2NbKGNbUz4+Ml18MCkrNTI+PjJdPWNbcz4+Ml07c0goY1tyPj4yXXwwLGRbKGNbcz4+Ml18MCkrND4+MF18MCxjW0o+PjJdfDAsY1tLPj4yXXwwLDApO2NbcT4+Ml09KGNbKGNbcj4+Ml18MCkrMzY+PjJdfDApIT0wJjE7YWE9Y1txPj4yXXwwO2k9YmE7cmV0dXJuIGFhfDB9ZnVuY3Rpb24gc0goYSxiLGUsZixnKXthPWF8MDtiPWJ8MDtlPWV8MDtmPWZ8MDtnPWd8MDt2YXIgaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTA7cT1pO2k9aSs0OHwwO289cTtoPXErNDB8MDtqPXErMzZ8MDtrPXErMzJ8MDtsPXErMjh8MDttPXErMjR8MDtuPXErMjB8MDtwPXErMTZ8MDtjW2g+PjJdPWE7Y1tqPj4yXT1iO2Nbaz4+Ml09ZTtjW2w+PjJdPWY7Y1ttPj4yXT1nO2lmKChkWyhjW2g+PjJdfDApKzQwOT4+MF18MHwwKSE9Mil7aT1xO3JldHVybn1jW24+PjJdPWNbKGNbaD4+Ml18MCkrOD4+Ml07YT1jW2NbaD4+Ml0+PjJdfDA7Zz1jW2s+PjJdfDA7ZT1jW2w+PjJdfDA7Zj0oY1ttPj4yXXwwKSE9MD8zNTkyNDoxODQwMjtiPVN5KGNbaj4+Ml18MCl8MDtjW28+PjJdPWc7Y1tvKzQ+PjJdPWU7Y1tvKzg+PjJdPWY7Y1tvKzEyPj4yXT1iO2NbcD4+Ml09R2goYSwzNTk0MyxvKXwwO214KGNbbj4+Ml18MCwxNjIsY1soY1toPj4yXXwwKSs0MjA+PjJdfDAsMCwwLGNbcD4+Ml18MCwtMSl8MDtpPXE7cmV0dXJufWZ1bmN0aW9uIHRIKGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MDtqPWk7aT1pKzE2fDA7ZT1qKzEyfDA7Zj1qKzh8MDtnPWorNHwwO2g9ajtjW2U+PjJdPWE7Y1tmPj4yXT1iO2NbZz4+Ml09ZDtpZihjWyhjW2Y+PjJdfDApKzQ4Pj4yXXwwKWNbaD4+Ml09dEgoY1tlPj4yXXwwLGNbKGNbZj4+Ml18MCkrNDg+PjJdfDAsY1tnPj4yXXwwKXwwO2Vsc2UgY1toPj4yXT0wO2lmKGNbaD4+Ml18MCl7aD1jW2g+PjJdfDA7aT1qO3JldHVybiBofDB9aWYoKGNbZz4+Ml18MCk+PShjW2NbY1tmPj4yXT4+Ml0+PjJdfDApKXtoPWNbaD4+Ml18MDtpPWo7cmV0dXJuIGh8MH1jW2g+PjJdPWZ5KGNbZT4+Ml18MCxjWyhjWyhjW2NbZj4+Ml0+PjJdfDApKzQ+PjJdfDApKygoY1tnPj4yXXwwKSoyMHwwKT4+Ml18MCl8MDtoPWNbaD4+Ml18MDtpPWo7cmV0dXJuIGh8MH1mdW5jdGlvbiB1SChiLGQsZil7Yj1ifDA7ZD1kfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wO3I9aTtpPWkrNDh8MDtnPXIrNDB8MDtoPXIrMzZ8MDtzPXIrMzJ8MDtvPXIrMjh8MDtsPXIrMjR8MDtqPXIrMjB8MDtwPXIrMTZ8MDtrPXIrMTJ8MDtuPXIrOHwwO3E9cis0fDA7bT1yO2NbZz4+Ml09YjtjW2g+PjJdPWQ7Y1tzPj4yXT1mO2Nbbz4+Ml09Y1soY1toPj4yXXwwKSs0ND4+Ml07Y1tsPj4yXT1jW2NbKGNbaD4+Ml18MCkrNDQ+PjJdPj4yXTtjW2o+PjJdPWNbY1tnPj4yXT4+Ml07Y1twPj4yXT1pQShjW2o+PjJdfDAsKGNbbD4+Ml18MCkrKGNbcz4+Ml18MCl8MCwxKXwwO2lmKCEoY1twPj4yXXwwKSl7cz1jW3A+PjJdfDA7aT1yO3JldHVybiBzfDB9Y1trPj4yXT0wO3doaWxlKDEpe2lmKChjW2s+PjJdfDApPj0oY1tsPj4yXXwwKSlicmVhaztjW24+PjJdPShjWyhjW28+PjJdfDApKzQ+PjJdfDApKygoY1trPj4yXXwwKSoyMHwwKTtjW3E+PjJdPWNbY1tuPj4yXT4+Ml07Zj1jW2c+PjJdfDA7aWYoY1soY1txPj4yXXwwKSs0Pj4yXSYyNTYpY1ttPj4yXT1meShmLGNbcT4+Ml18MCl8MDtlbHNle2NbbT4+Ml09dEgoZixjW2g+PjJdfDAsKGVbKGNbbj4+Ml18MCkrMTY+PjFdfDApLTF8MCl8MDtpZighKGNbbT4+Ml18MCkpY1ttPj4yXT1jWyhjW2o+PjJdfDApKzg+PjJdO3M9V3koY1tnPj4yXXwwLGNbcT4+Ml18MCxjW2NbbT4+Ml0+PjJdfDApfDA7Y1soY1soY1tvPj4yXXwwKSs0Pj4yXXwwKSsoKGNbaz4+Ml18MCkqMjB8MCk+PjJdPXN9Y1soY1twPj4yXXwwKSsyMCsoY1trPj4yXTw8Mik+PjJdPWNbbT4+Ml07YVsoY1soY1twPj4yXXwwKSsxNj4+Ml18MCkrKGNbaz4+Ml18MCk+PjBdPWFbKGNbKGNbbz4+Ml18MCkrND4+Ml18MCkrKChjW2s+PjJdfDApKjIwfDApKzEyPj4wXXwwO2Nbaz4+Ml09KGNbaz4+Ml18MCkrMX1zPWNbcD4+Ml18MDtpPXI7cmV0dXJuIHN8MH1mdW5jdGlvbiB2SChiLGUsZixnLGgsaixrLGwpe2I9YnwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO2s9a3wwO2w9bHwwO3ZhciBtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MDtEPWk7aT1pKzgwfDA7bT1EKzY0fDA7bj1EKzYwfDA7bz1EKzU2fDA7cD1EKzUyfDA7cT1EKzQ4fDA7cj1EKzQ0fDA7cz1EKzQwfDA7dD1EKzM2fDA7dT1EKzMyfDA7Qz1EKzI4fDA7eT1EKzI0fDA7dj1EKzIwfDA7dz1EKzE2fDA7eD1EKzEyfDA7ej1EKzh8MDtCPUQrNHwwO0E9RDtjW24+PjJdPWI7Y1tvPj4yXT1lO2NbcD4+Ml09ZjtjW3E+PjJdPWc7Y1tyPj4yXT1oO2Nbcz4+Ml09ajtjW3Q+PjJdPWs7Y1t1Pj4yXT1sO2NbQz4+Ml09Y1soY1tuPj4yXXwwKSs4Pj4yXTtjW3Y+PjJdPXd4KGNbQz4+Ml18MCl8MDtjW3k+PjJdPVd6KGNbQz4+Ml18MCl8MDtpZihjW3M+PjJdfDApe2Nbdz4+Ml09U3ooY1tDPj4yXXwwLDIyLGNbcz4+Ml18MCl8MDtrPWNbQz4+Ml18MDtiPWNbKGNbcD4+Ml18MCkrMTI+PjJdfDA7aj0oY1tzPj4yXXwwKSsxfDA7aD1jWyhjW3A+PjJdfDApKzE2Pj4yXXwwO2NbeD4+Ml09bXgoayw5NSxiLGosaCxuQShjW3Q+PjJdfDApfDAsLTYpfDA7angoY1tDPj4yXXwwLDE4LChjW3g+PjJdfDApKzJ8MCxjW3k+PjJdfDAsKGNbeD4+Ml18MCkrMnwwKXwwO1p6KGNbQz4+Ml18MCxjW3c+PjJdfDApO2p4KGNbQz4+Ml18MCw4NCxjWyhjW3A+PjJdfDApKzEyPj4yXXwwLChjW3M+PjJdfDApKzF8MCwoY1soY1twPj4yXXwwKSsxNj4+Ml18MCktMXwwKXwwO2l4KGNbQz4+Ml18MCw3NiwxLGNbcz4+Ml18MCl8MH1pZihhWyhjW2Nbbj4+Ml0+PjJdfDApKzY5Pj4wXXwwKXtjW20+PjJdPTA7Qz1jW20+PjJdfDA7aT1EO3JldHVybiBDfDB9ZkgoY1tDPj4yXXwwLGNbKGNbbz4+Ml18MCkrMTY+PjJdfDAsY1t5Pj4yXXwwKTtzd2l0Y2goZFtjW3E+PjJdPj4wXXwwKXtjYXNlIDEyOntjW3o+PjJdPXZ4KGNbbj4+Ml18MCl8MDtjW0I+PjJdPXZ4KGNbbj4+Ml18MCl8MDtqeChjW0M+PjJdfDAsOTksY1soY1twPj4yXXwwKSsxMj4+Ml18MCxjWyhjW3A+PjJdfDApKzE2Pj4yXXwwLGNbej4+Ml18MCl8MDtpeChjW0M+PjJdfDAsMTE0LGNbKGNbcT4+Ml18MCkrOD4+Ml18MCxjW0I+PjJdfDApfDA7angoY1tDPj4yXXwwLDExNSxjWyhjW3E+PjJdfDApKzg+PjJdfDAsY1t6Pj4yXXwwLGNbQj4+Ml18MCl8MDtKaChjW0M+PjJdfDAsOCk7eHgoY1tuPj4yXXwwLGNbQj4+Ml18MCk7eHgoY1tuPj4yXXwwLGNbej4+Ml18MCk7YnJlYWt9Y2FzZSAxMTp7Y1tBPj4yXT12eChjW24+PjJdfDApfDA7bXgoY1tDPj4yXXwwLDk5LGNbKGNbcD4+Ml18MCkrMTI+PjJdfDAsY1soY1twPj4yXXwwKSsxNj4+Ml18MCxjW0E+PjJdfDAsY1soY1txPj4yXXwwKSs0Pj4yXXwwLGNbKGNbcD4+Ml18MCkrMTY+PjJdfDApfDA7V0EoY1tuPj4yXXwwLGNbKGNbcD4+Ml18MCkrMTI+PjJdfDAsY1soY1twPj4yXXwwKSsxNj4+Ml18MCk7aXgoY1tDPj4yXXwwLDEyNixjWyhjW3E+PjJdfDApKzg+PjJdfDAsY1tBPj4yXXwwKXwwO3h4KGNbbj4+Ml18MCxjW0E+PjJdfDApO2JyZWFrfWNhc2UgMTA6e1hHKGNbbj4+Ml18MCxjWyhjW3A+PjJdfDApKzEyPj4yXXwwLGNbKGNbcT4+Ml18MCkrOD4+Ml18MCwxKTticmVha31jYXNlIDEzOntpZighKGNbKGNbcT4+Ml18MCkrMTI+PjJdfDApKXtoPUNBKGNbbj4+Ml18MCxjWyhjW3A+PjJdfDApKzE2Pj4yXXwwKXwwO2NbKGNbcT4+Ml18MCkrMTI+PjJdPWg7Y1soY1txPj4yXXwwKSsxNj4+Ml09Y1soY1twPj4yXXwwKSsxNj4+Ml19WEcoY1tuPj4yXXwwLGNbKGNbcD4+Ml18MCkrMTI+PjJdfDAsY1soY1txPj4yXXwwKSsxMj4+Ml18MCxjWyhjW3A+PjJdfDApKzE2Pj4yXXwwKTtTeihjW0M+PjJdfDAsMTYsY1soY1txPj4yXXwwKSs4Pj4yXXwwKXwwO2JyZWFrfWRlZmF1bHQ6e2l4KGNbQz4+Ml18MCw4NyxjWyhjW3A+PjJdfDApKzEyPj4yXXwwLGNbKGNbcD4+Ml18MCkrMTY+PjJdfDApfDA7V0EoY1tuPj4yXXwwLGNbKGNbcD4+Ml18MCkrMTI+PjJdfDAsY1soY1twPj4yXXwwKSsxNj4+Ml18MCl9fWlmKGNbKGNbbz4+Ml18MCkrMTI+PjJdfDApaXgoY1tDPj4yXXwwLDY4LGNbKGNbbz4+Ml18MCkrMTI+PjJdfDAsY1t1Pj4yXXwwKXwwO196KGNbQz4+Ml18MCxjW3k+PjJdfDApO1N6KGNbQz4+Ml18MCw3MixjW3I+PjJdfDApfDA7Y1ttPj4yXT1jW3Y+PjJdO0M9Y1ttPj4yXXwwO2k9RDtyZXR1cm4gQ3wwfWZ1bmN0aW9uIHdIKGIsZSxmKXtiPWJ8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MDtvPWk7aT1pKzMyfDA7Zz1vKzI0fDA7aD1vKzIwfDA7aj1vKzE2fDA7az1vKzEyfDA7bD1vKzh8MDtuPW8rNHwwO209bztjW2c+PjJdPWI7Y1toPj4yXT1lO2Nbaj4+Ml09ZjtjW2s+PjJdPWNbY1tnPj4yXT4+Ml07aWYoIShjWyhjW2s+PjJdfDApKzI0Pj4yXSY1MjQyODgpKXtpPW87cmV0dXJufWlmKChkWyhjW2o+PjJdfDApKzQyPj4wXXwwKSYxNil7aT1vO3JldHVybn1pZihjWyhjW2o+PjJdfDApKzEyPj4yXXwwKXtpPW87cmV0dXJufWNbbD4+Ml09MDtjW24+PjJdPWR4KGNbZz4+Ml18MCl8MDtkbyBpZighKFl4KGNbaj4+Ml18MCl8MCkpe2NbbT4+Ml09Y1soY1tqPj4yXXwwKSsxNj4+Ml07d2hpbGUoMSl7aWYoIShjW20+PjJdfDApKWJyZWFrO2lmKGRbKGNbbT4+Ml18MCkrMjQ+PjBdfDApYnJlYWs7aWYoY1soY1trPj4yXXwwKSsyND4+Ml0mMzM1NTQ0MzIpYnJlYWs7Y1ttPj4yXT1jWyhjW20+PjJdfDApKzQ+PjJdfWlmKGNbbT4+Ml18MCl7Y1tsPj4yXT1XeihjW24+PjJdfDApfDA7aXgoY1tuPj4yXXwwLDY1LDEsY1tsPj4yXXwwKXwwO2JyZWFrfWVsc2V7aT1vO3JldHVybn19d2hpbGUoMCk7YVsoY1tnPj4yXXwwKSsxNTA+PjBdPTE7Zj1jW2c+PjJdfDA7Y3coZixHeihjW2s+PjJdfDAsY1toPj4yXXwwLDApfDAsMCk7YVsoY1tnPj4yXXwwKSsxNTA+PjBdPTA7aWYoIShjWyhjW2s+PjJdfDApKzI0Pj4yXSYzMzU1NDQzMikpe2Y9Y1tuPj4yXXwwO2l4KGYsNjUsMCwod3goY1tuPj4yXXwwKXwwKSsyfDApfDA7dEEoY1tnPj4yXXwwLDc4NywyLDAsLTIsNCl9aWYoIShjW2w+PjJdfDApKXtpPW87cmV0dXJufV96KGNbbj4+Ml18MCxjW2w+PjJdfDApO2k9bztyZXR1cm59ZnVuY3Rpb24geEgoYSxiLGUsZil7YT1hfDA7Yj1ifDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTA7cj1pO2k9aSs2NHwwO3E9cis4fDA7cD1yO2c9cis0OHwwO2g9cis0NHwwO2o9cis0MHwwO2s9ciszNnwwO289ciszMnwwO2w9cisyOHwwO249cisyNHwwO209cisyMHwwO2NbZz4+Ml09YTtjW2g+PjJdPWI7Y1tqPj4yXT1lO2Nbaz4+Ml09ZjtjW2w+PjJdPWNbY1tnPj4yXT4+Ml07Y1ttPj4yXT0oY1soY1tsPj4yXXwwKSsxNj4+Ml18MCkrKGNbaj4+Ml08PDQpO2Nbbz4+Ml09ZHgoY1tnPj4yXXwwKXwwO3J4KGNbZz4+Ml18MCwxLGNbaj4+Ml18MCk7aWYoKGRbKGNbaD4+Ml18MCkrNDI+PjBdfDApJjE2KWZ4KGNbbz4+Ml18MCwxNTIpfDA7Y1tuPj4yXT16eChjW2c+PjJdfDAsY1toPj4yXXwwKXwwO3doaWxlKDEpe2lmKCEoY1tuPj4yXXwwKSlicmVhaztfQihjW2c+PjJdfDAsY1tuPj4yXXwwKTtjW24+PjJdPWNbKGNbbj4+Ml18MCkrMzI+PjJdfWlmKChkWyhjW2g+PjJdfDApKzQyPj4wXXwwKSY4KXtuPWNbZz4+Ml18MDtiPWNbY1toPj4yXT4+Ml18MDtjW3A+PjJdPWNbY1ttPj4yXT4+Ml07Y1twKzQ+PjJdPWI7Y3gobiwzNjE2OSxwKX1wPWNbZz4+Ml18MDtiPShjW2o+PjJdfDApPT0xPzE5OTA1OjE5OTI0O249Y1tjW2g+PjJdPj4yXXwwO2NbcT4+Ml09Y1tjW20+PjJdPj4yXTtjW3ErND4+Ml09YjtjW3ErOD4+Ml09bjtjeChwLDM2MjE0LHEpO2lmKChjW2s+PjJdfDApPT0wPygoZFsoY1toPj4yXXwwKSs0Mj4+MF18MCkmMTZ8MCk9PTA6MCl5SChjW2c+PjJdfDAsY1toPj4yXXwwKTtpZighKChkWyhjW2g+PjJdfDApKzQyPj4wXXwwKSYxNikpe289Y1tvPj4yXXwwO3A9Y1tqPj4yXXwwO3E9Y1toPj4yXXwwO3E9Y1txPj4yXXwwO214KG8sMTM4LHAsMCwwLHEsMCl8MDtxPWNbZz4+Ml18MDtwPWNbaj4+Ml18MDtleChxLHApO3A9Y1tsPj4yXXwwO3E9Y1tqPj4yXXwwO3pIKHAscSk7aT1yO3JldHVybn1teChjW28+PjJdfDAsMTU0LGNbaj4+Ml18MCwwLDAsY1tjW2g+PjJdPj4yXXwwLDApfDA7bz1jW28+PjJdfDA7cD1jW2o+PjJdfDA7cT1jW2g+PjJdfDA7cT1jW3E+PjJdfDA7bXgobywxMzgscCwwLDAscSwwKXwwO3E9Y1tnPj4yXXwwO3A9Y1tqPj4yXXwwO2V4KHEscCk7cD1jW2w+PjJdfDA7cT1jW2o+PjJdfDA7ekgocCxxKTtpPXI7cmV0dXJufWZ1bmN0aW9uIHlIKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MDtuPWk7aT1pKzMyfDA7ZD1uKzI4fDA7ZT1uKzI0fDA7az1uKzIwfDA7Zz1uKzE2fDA7bD1uKzEyfDA7aj1uKzh8MDtoPW4rNHwwO2Y9bjtjW2Q+PjJdPWE7Y1tlPj4yXT1iO2Nbaz4+Ml09Y1soY1tlPj4yXXwwKSsyOD4+Ml07Y1tnPj4yXT0wO3doaWxlKDEpe2Nbaj4+Ml09MDtpZighKChjW2c+PjJdfDApIT0wPyhjW2s+PjJdfDApPj0oY1tnPj4yXXwwKTowKSljW2o+PjJdPWNbaz4+Ml07Y1tsPj4yXT1jWyhjW2U+PjJdfDApKzg+PjJdO3doaWxlKDEpe2lmKCEoY1tsPj4yXXwwKSlicmVhaztjW2g+PjJdPWNbKGNbbD4+Ml18MCkrNDQ+PjJdO2lmKCEoKGNbZz4+Ml18MCkhPTA/KGNbaD4+Ml18MCk+PShjW2c+PjJdfDApOjApKW09OTtpZigobXwwKT09OT8obT0wLChjW2g+PjJdfDApPihjW2o+PjJdfDApKTowKWNbaj4+Ml09Y1toPj4yXTtjW2w+PjJdPWNbKGNbbD4+Ml18MCkrMjA+PjJdfWlmKCEoY1tqPj4yXXwwKSlicmVhaztjW2Y+PjJdPUZoKGNbY1tkPj4yXT4+Ml18MCxjWyhjW2U+PjJdfDApKzY0Pj4yXXwwKXwwO1JDKGNbZD4+Ml18MCxjW2o+PjJdfDAsY1tmPj4yXXwwKTtjW2c+PjJdPWNbaj4+Ml19aT1uO3JldHVybn1mdW5jdGlvbiB6SChhLGQpe2E9YXwwO2Q9ZHwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wO2s9aTtpPWkrMTZ8MDtmPWsrMTJ8MDtnPWsrOHwwO2g9ays0fDA7aj1rO2NbZj4+Ml09YTtjW2c+PjJdPWQ7aWYoKChlWyhjWyhjWyhjW2Y+PjJdfDApKzE2Pj4yXXwwKSsoY1tnPj4yXTw8NCkrMTI+PjJdfDApKzc4Pj4xXXwwKSYyfDApIT0yKXtpPWs7cmV0dXJufWNbaD4+Ml09Y1soY1soY1soY1tmPj4yXXwwKSsxNj4+Ml18MCkrKGNbZz4+Ml08PDQpKzEyPj4yXXwwKSs4Kzg+PjJdO3doaWxlKDEpe2lmKCEoY1toPj4yXXwwKSlicmVhaztjW2o+PjJdPWNbKGNbaD4+Ml18MCkrOD4+Ml07aWYoY1soY1tqPj4yXXwwKSsxMj4+Ml18MCl7QUgoY1tmPj4yXXwwLGNbaj4+Ml18MCk7Y1soY1tqPj4yXXwwKSs0Pj4yXT0wO2JbKGNbaj4+Ml18MCkrMzQ+PjFdPTB9Y1toPj4yXT1jW2NbaD4+Ml0+PjJdfWo9KGNbKGNbKGNbZj4+Ml18MCkrMTY+PjJdfDApKyhjW2c+PjJdPDw0KSsxMj4+Ml18MCkrNzh8MDtiW2o+PjFdPShlW2o+PjFdfDApJi0zO2k9aztyZXR1cm59ZnVuY3Rpb24gQUgoYSxkKXthPWF8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MDtqPWk7aT1pKzE2fDA7ZT1qKzEyfDA7Zj1qKzh8MDtnPWorNHwwO2g9ajtjW2U+PjJdPWE7Y1tmPj4yXT1kO2Q9Y1soY1tmPj4yXXwwKSs0Pj4yXXwwO2NbaD4+Ml09ZDtpZighZCl7aT1qO3JldHVybn1jW2c+PjJdPTA7d2hpbGUoMSl7YT1jW2U+PjJdfDA7aWYoKGNbZz4+Ml18MCk+PShiWyhjW2Y+PjJdfDApKzM0Pj4xXXwwKSlicmVhaztUZihhLGNbY1toPj4yXT4+Ml18MCk7aXYoY1tlPj4yXXwwLGNbKGNbaD4+Ml18MCkrND4+Ml18MCk7VGYoY1tlPj4yXXwwLGNbKGNbaD4+Ml18MCkrOD4+Ml18MCk7Y1tnPj4yXT0oY1tnPj4yXXwwKSsxO2NbaD4+Ml09KGNbaD4+Ml18MCkrMTZ9VGYoYSxjWyhjW2Y+PjJdfDApKzQ+PjJdfDApO2k9ajtyZXR1cm59ZnVuY3Rpb24gQkgoYSxkLGUsZixnKXthPWF8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDt2YXIgaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MDtwPWk7aT1pKzE0NHwwO2g9cCsxMjh8MDtqPXArMTI0fDA7az1wKzEyMHwwO2w9cCsxMTZ8MDttPXArMTEyfDA7bz1wO249cCs4MHwwO2NbaD4+Ml09YTtjW2o+PjJdPWQ7Y1trPj4yXT1lO2NbbD4+Ml09ZjtjW20+PjJdPWc7Y1tuPj4yXT0wO2Nbbis0Pj4yXT0wO2Nbbis4Pj4yXT0wO2NbbisxMj4+Ml09MDtjW24rMTY+PjJdPTA7Y1tuKzIwPj4yXT0wO2NbbisyND4+Ml09MDtjW24rMjg+PjJdPTA7Zj1vO2c9Zis4MHwwO2Rve2NbZj4+Ml09MDtmPWYrNHwwfXdoaWxlKChmfDApPChnfDApKTtjW28+PjJdPTE7Y1tvKzgrOD4+Ml09Y1tjW2o+PjJdPj4yXTtjW28rOCsxNj4+Ml09Y1tqPj4yXTtjW28rOCs0ND4+Ml09LTE7Y1tuPj4yXT1jW2g+PjJdO2Nbbis0Pj4yXT1vO2JbbisyOD4+MV09Y1trPj4yXTtvPShBeShuLGNbbD4+Ml18MCl8MCk9PTA7aWYoIShvJihjW20+PjJdfDApIT0wKSl7aT1wO3JldHVybn1CeShuLGNbbT4+Ml18MCl8MDtpPXA7cmV0dXJufWZ1bmN0aW9uIENIKGIpe2I9YnwwO3ZhciBlPTAsZj0wO2Y9aTtpPWkrMTZ8MDtlPWY7Y1tlPj4yXT1iO2I9Y1tlPj4yXXwwO2lmKChkW2NbZT4+Ml0+PjBdfDB8MCk9PTk3KXthW2I+PjBdPTU1O2k9ZjtyZXR1cm59aWYoKGRbYj4+MF18MHwwKSE9NTMpe2k9ZjtyZXR1cm59aWYoKGRbY1soY1tlPj4yXXwwKSsxMj4+Ml0+PjBdfDB8MCkhPTk3KXtpPWY7cmV0dXJufWFbY1soY1tlPj4yXXwwKSsxMj4+Ml0+PjBdPTU1O2k9ZjtyZXR1cm59ZnVuY3Rpb24gREgoYSxkLGUpe2E9YXwwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wO2s9aTtpPWkrMTZ8MDtqPWsrMTJ8MDtmPWsrOHwwO2c9ays0fDA7aD1rO2NbZj4+Ml09YTtjW2c+PjJdPWQ7Y1toPj4yXT1lO3doaWxlKDEpe2U9Y1tnPj4yXXwwO2NbZz4+Ml09ZSstMTtpZigoZXwwKTw9MCl7Zj01O2JyZWFrfWQ9Y1toPj4yXXwwO2U9Y1tmPj4yXXwwO2NbZj4+Ml09ZSsyO2lmKChkfDApPT0oYltlPj4xXXwwKSl7Zj00O2JyZWFrfX1pZigoZnwwKT09NCl7Y1tqPj4yXT0xO2o9Y1tqPj4yXXwwO2k9aztyZXR1cm4ganwwfWVsc2UgaWYoKGZ8MCk9PTUpe2Nbaj4+Ml09MDtqPWNbaj4+Ml18MDtpPWs7cmV0dXJuIGp8MH1yZXR1cm4gMH1mdW5jdGlvbiBFSChhKXthPWF8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTA7bD1pO2k9aSszMnwwO2Y9bCsxMnwwO2o9bCs4fDA7aD1sKzR8MDtnPWw7az1sKzE2fDA7Y1tmPj4yXT1hO2Nbaj4+Ml09MDtjW2c+PjJdPWNbKGNbKGNbZj4+Ml18MCkrMTI+PjJdfDApKzQ+PjJdO2NbaD4+Ml09MDt3aGlsZSgxKXtpZigoY1toPj4yXXwwKT49KGVbKGNbZj4+Ml18MCkrNTI+PjFdfDApKWJyZWFrO2Jbaz4+MV09YlsoY1soY1tmPj4yXXwwKSs0Pj4yXXwwKSsoY1toPj4yXTw8MSk+PjFdfDA7aWYoKGJbaz4+MV18MCk8MClhPTE7ZWxzZSBhPWRbKGNbZz4+Ml18MCkrKGJbKGNbKGNbZj4+Ml18MCkrND4+Ml18MCkrKGNbaD4+Ml08PDEpPj4xXTw8NCkrMTQ+PjBdfDA7Y1tqPj4yXT0oY1tqPj4yXXwwKSthO2NbaD4+Ml09KGNbaD4+Ml18MCkrMX1rPU1qKGNbaj4+Ml08PDIsMCl8MDtiWyhjW2Y+PjJdfDApKzQ4Pj4xXT1rO2k9bDtyZXR1cm59ZnVuY3Rpb24gRkgoYSxiKXthPWF8MDtiPWJ8MDt2YXIgZT0wLGY9MCxnPTA7Zz1pO2k9aSsxNnwwO2U9Zys0fDA7Zj1nO2NbZT4+Ml09YTtjW2Y+PjJdPWI7R0goY1tlPj4yXXwwLGNbZj4+Ml18MCk7aXYoY1tlPj4yXXwwLGNbKGNbZj4+Ml18MCkrMzY+PjJdfDApO2V2KGNbZT4+Ml18MCxjWyhjW2Y+PjJdfDApKzQwPj4yXXwwKTtUZihjW2U+PjJdfDAsY1soY1tmPj4yXXwwKSsxNj4+Ml18MCk7aWYoISgoZFsoY1tmPj4yXXwwKSs1NT4+MF18MCk+Pj40JjEpKXthPWNbZT4+Ml18MDtiPWNbZj4+Ml18MDtUZihhLGIpO2k9ZztyZXR1cm59VGYoY1tlPj4yXXwwLGNbKGNbZj4+Ml18MCkrMzI+PjJdfDApO2E9Y1tlPj4yXXwwO2I9Y1tmPj4yXXwwO1RmKGEsYik7aT1nO3JldHVybn1mdW5jdGlvbiBHSChhLGIpe2E9YXwwO2I9YnwwO3ZhciBkPTA7ZD1pO2k9aSsxNnwwO2NbZCs0Pj4yXT1hO2NbZD4+Ml09YjtpPWQ7cmV0dXJufWZ1bmN0aW9uIEhIKGIsZSl7Yj1ifDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wO2Y9aTtpPWkrMTZ8MDtoPWY7Zz1mKzR8MDtjW2g+PjJdPWI7YVtnPj4wXT1lO2I9eEIoY1toPj4yXXwwLDQrKGRbZz4+MF18MCl8MCwwKXwwO2k9ZjtyZXR1cm4gYnwwfWZ1bmN0aW9uIElIKGYsZyl7Zj1mfDA7Zz1nfDA7dmFyIGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTA7dj1pO2k9aSs2NHwwO2g9dis1MnwwO2o9dis0OHwwO3E9dis0NHwwO3M9dis0MHwwO3A9diszNnwwO2w9diszMnwwO249disyOHwwO2s9disyNHwwO3Q9disyMHwwO3I9disxNnwwO209dis4fDA7bz12O2NbaD4+Ml09ZjtjW2o+PjJdPWc7Y1trPj4yXT1jW2NbaD4+Ml0+PjJdO2NbdD4+Ml09Y1soY1toPj4yXXwwKSs4Pj4yXTthOmRvIGlmKCEoYVsoY1trPj4yXXwwKSsxNDgrNz4+MF18MCkpe2NbbD4+Ml09MDt3aGlsZSgxKXtpZigoY1tsPj4yXXwwKT49KGJbKGNbaj4+Ml18MCkrMzQ+PjFdfDApKWJyZWFrIGE7aWYoZFsoY1soY1tqPj4yXXwwKSs0Pj4yXXwwKSsoY1tsPj4yXTw8NCkrMTU+PjBdJjEpYVsoY1soY1tqPj4yXXwwKSs0Pj4yXXwwKSsoY1tsPj4yXTw8NCkrMTI+PjBdPTI7Y1tsPj4yXT0oY1tsPj4yXXwwKSsxfX13aGlsZSgwKTtpZihhWyhjW2g+PjJdfDApKzQxMD4+MF18MCl7aT12O3JldHVybn1pZihjWyhjW2g+PjJdfDApKzEzMj4+Ml18MClMRyhjW3Q+PjJdfDAsY1soY1toPj4yXXwwKSsxMzI+PjJdfDAsLTEyMik7Zj1jW2o+PjJdfDA7ZG8gaWYoKGJbKGNbaj4+Ml18MCkrMzI+PjFdfDApPj0wKXtYeShtLGNbKGNbKGNbaj4+Ml18MCkrND4+Ml18MCkrKGJbZiszMj4+MV08PDQpPj4yXXwwKTt0PWNbaD4+Ml18MDtjW3I+PjJdPVR2KHQsMCxqdyhjW2s+PjJdfDAsNTUsbSwwKXwwKXwwO2lmKCEoY1tyPj4yXXwwKSl7aT12O3JldHVybn1hWyhjWyhjW3I+PjJdfDApKzQ+PjJdfDApKzEyPj4wXT1hWyhjW2g+PjJdfDApKzQwOD4+MF18MDtJdihjW2g+PjJdfDAsMCwwLDAsY1tyPj4yXXwwLGRbKGNbaj4+Ml18MCkrNDM+PjBdfDAsMCwwLDAsMCwyKTtpZihhWyhjW2s+PjJdfDApKzY5Pj4wXXwwKXtpPXY7cmV0dXJufWVsc2V7Y1tzPj4yXT1KaihjW2o+PjJdfDApfDA7YlsoY1tqPj4yXXwwKSszMj4+MV09LTE7YnJlYWt9fWVsc2V7Y1tzPj4yXT1KaihmKXwwO2lmKGNbdD4+Ml18MClMRyhjW3Q+PjJdfDAsY1soY1tzPj4yXXwwKSs0ND4+Ml18MCwxMyk7Y1tuPj4yXT0xO2NbbD4+Ml09MTt3aGlsZSgxKXtpZigoY1tsPj4yXXwwKT49KGVbKGNbcz4+Ml18MCkrNTA+PjFdfDApKWJyZWFrO2lmKERIKGNbKGNbcz4+Ml18MCkrND4+Ml18MCxjW24+PjJdfDAsYlsoY1soY1tzPj4yXXwwKSs0Pj4yXXwwKSsoY1tsPj4yXTw8MSk+PjFdfDApfDApe3Q9KGNbcz4+Ml18MCkrNTJ8MDtiW3Q+PjFdPShiW3Q+PjFdfDApKy0xPDwxNj4+MTZ9ZWxzZXtyPWJbKGNbKGNbcz4+Ml18MCkrND4+Ml18MCkrKGNbbD4+Ml08PDEpPj4xXXwwO3Q9Y1tuPj4yXXwwO2Nbbj4+Ml09dCsxO2JbKGNbKGNbcz4+Ml18MCkrND4+Ml18MCkrKHQ8PDEpPj4xXT1yfWNbbD4+Ml09KGNbbD4+Ml18MCkrMX1iWyhjW3M+PjJdfDApKzUwPj4xXT1jW24+PjJdfXdoaWxlKDApO3Q9KGNbcz4+Ml18MCkrNTV8MDthW3Q+PjBdPWFbdD4+MF0mLTMzfDMyO2lmKCEoYVsoY1trPj4yXXwwKSsxNDgrNz4+MF18MCkpe3Q9KGNbcz4+Ml18MCkrNTV8MDthW3Q+PjBdPWFbdD4+MF0mLTl8OH1jW3A+PjJdPWVbKGNbcz4+Ml18MCkrNTA+PjFdO2NbKGNbcz4+Ml18MCkrNDQ+PjJdPWNbKGNbaj4+Ml18MCkrMjg+PjJdO2NbcT4+Ml09Y1soY1tqPj4yXXwwKSs4Pj4yXTtiOndoaWxlKDEpe2lmKCEoY1txPj4yXXwwKSlicmVhaztjOmRvIGlmKChhWyhjW3E+PjJdfDApKzU1Pj4wXSYzfDApIT0yKXtjW28+PjJdPTA7Y1tsPj4yXT0wO3doaWxlKDEpe2lmKChjW2w+PjJdfDApPj0oY1twPj4yXXwwKSlicmVhaztpZighKERIKGNbKGNbcT4+Ml18MCkrND4+Ml18MCxlWyhjW3E+PjJdfDApKzUwPj4xXXwwLGJbKGNbKGNbcz4+Ml18MCkrND4+Ml18MCkrKGNbbD4+Ml08PDEpPj4xXXwwKXwwKSljW28+PjJdPShjW28+PjJdfDApKzE7Y1tsPj4yXT0oY1tsPj4yXXwwKSsxfWlmKCEoY1tvPj4yXXwwKSl7YlsoY1txPj4yXXwwKSs1Mj4+MV09YlsoY1txPj4yXXwwKSs1MD4+MV18MDticmVha31pZihOSChjW2s+PjJdfDAsY1txPj4yXXwwLChlWyhjW3E+PjJdfDApKzUwPj4xXXwwKSsoY1tvPj4yXXwwKXwwKXwwKXt1PTUwO2JyZWFrIGJ9Y1tsPj4yXT0wO2Nbbj4+Ml09ZVsoY1txPj4yXXwwKSs1MD4+MV07d2hpbGUoMSl7aWYoKGNbbD4+Ml18MCk+PShjW3A+PjJdfDApKWJyZWFrIGM7aWYoIShESChjWyhjW3E+PjJdfDApKzQ+PjJdfDAsZVsoY1txPj4yXXwwKSs1MD4+MV18MCxiWyhjWyhjW3M+PjJdfDApKzQ+PjJdfDApKyhjW2w+PjJdPDwxKT4+MV18MCl8MCkpe2JbKGNbKGNbcT4+Ml18MCkrND4+Ml18MCkrKGNbbj4+Ml08PDEpPj4xXT1iWyhjWyhjW3M+PjJdfDApKzQ+PjJdfDApKyhjW2w+PjJdPDwxKT4+MV18MDtjWyhjWyhjW3E+PjJdfDApKzMyPj4yXXwwKSsoY1tuPj4yXTw8Mik+PjJdPWNbKGNbKGNbcz4+Ml18MCkrMzI+PjJdfDApKyhjW2w+PjJdPDwyKT4+Ml07Y1tuPj4yXT0oY1tuPj4yXXwwKSsxfWNbbD4+Ml09KGNbbD4+Ml18MCkrMX19d2hpbGUoMCk7Y1txPj4yXT1jWyhjW3E+PjJdfDApKzIwPj4yXX1pZigodXwwKT09NTApe2k9djtyZXR1cm59aWYoKGNbcD4+Ml18MCk+PShiWyhjW2o+PjJdfDApKzM0Pj4xXXwwKSl7YlsoY1tzPj4yXXwwKSs1Mj4+MV09YlsoY1tqPj4yXXwwKSszND4+MV18MDtpPXY7cmV0dXJufWlmKE5IKGNbaz4+Ml18MCxjW3M+PjJdfDAsYlsoY1tqPj4yXXwwKSszND4+MV18MCl8MCl7aT12O3JldHVybn1jW2w+PjJdPTA7Y1tuPj4yXT1jW3A+PjJdO3doaWxlKDEpe2lmKChjW2w+PjJdfDApPj0oYlsoY1tqPj4yXXwwKSszND4+MV18MCkpYnJlYWs7aWYoIShESChjWyhjW3M+PjJdfDApKzQ+PjJdfDAsY1tuPj4yXXwwLGNbbD4+Ml18MCl8MCkpe2JbKGNbKGNbcz4+Ml18MCkrND4+Ml18MCkrKGNbbj4+Ml08PDEpPj4xXT1jW2w+PjJdO2NbKGNbKGNbcz4+Ml18MCkrMzI+PjJdfDApKyhjW24+PjJdPDwyKT4+Ml09MzQ4MzQ7Y1tuPj4yXT0oY1tuPj4yXXwwKSsxfWNbbD4+Ml09KGNbbD4+Ml18MCkrMX1pPXY7cmV0dXJufWZ1bmN0aW9uIEpIKGEpe2E9YXwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wO2o9aTtpPWkrMTZ8MDtlPWorMTJ8MDtoPWorOHwwO2c9ais0fDA7Zj1qO2NbZT4+Ml09YTtjW2g+PjJdPTA7Y1tmPj4yXT1iWyhjW2U+PjJdfDApKzM0Pj4xXTtjW2c+PjJdPWNbKGNbZT4+Ml18MCkrND4+Ml07d2hpbGUoMSl7aWYoKGNbZj4+Ml18MCk8PTApYnJlYWs7Y1toPj4yXT0oY1toPj4yXXwwKSsoZFsoY1tnPj4yXXwwKSsxND4+MF18MCk7Y1tmPj4yXT0oY1tmPj4yXXwwKSstMTtjW2c+PjJdPShjW2c+PjJdfDApKzE2fWlmKChiWyhjW2U+PjJdfDApKzMyPj4xXXwwKT49MCl7Zz1jW2g+PjJdfDA7Zz1nPDwyO2c9TWooZywwKXwwO2g9Y1tlPj4yXXwwO2g9aCs0MHwwO2JbaD4+MV09ZztpPWo7cmV0dXJufWNbaD4+Ml09KGNbaD4+Ml18MCkrMTtnPWNbaD4+Ml18MDtnPWc8PDI7Zz1NaihnLDApfDA7aD1jW2U+PjJdfDA7aD1oKzQwfDA7YltoPj4xXT1nO2k9ajtyZXR1cm59ZnVuY3Rpb24gS0goZCxlKXtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MDt3PWk7aT1pKzgwfDA7cT13KzE2fDA7cD13Kzh8MDtnPXc7aD13KzY4fDA7Zj13KzY0fDA7aj13KzYwfDA7az13KzU2fDA7bD13KzUyfDA7bj13KzQ4fDA7dT13KzQ0fDA7cz13KzQwfDA7dD13KzM2fDA7cj13KzMyfDA7bz13KzI4fDA7bT13KzI0fDA7dj13KzIwfDA7Y1tmPj4yXT1kO2Nbaj4+Ml09ZTtjW24+PjJdPTA7Y1tvPj4yXT1jWyhjW2o+PjJdfDApKzQ+PjJdO2Nbaz4+Ml09MDt3aGlsZSgxKXtpZigoY1trPj4yXXwwKT49KGJbKGNbaj4+Ml18MCkrMzQ+PjFdfDApKWJyZWFrO2U9KExIKGNbY1tvPj4yXT4+Ml18MCl8MCkrNXwwO2Nbbj4+Ml09KGNbbj4+Ml18MCkrZTtjW2s+PjJdPShjW2s+PjJdfDApKzE7Y1tvPj4yXT0oY1tvPj4yXXwwKSsxNn1lPUxIKGNbY1tqPj4yXT4+Ml18MCl8MDtjW24+PjJdPShjW24+PjJdfDApK2U7aWYoKGNbbj4+Ml18MCk8NTApe2Nbcz4+Ml09MTg0MDI7Y1t0Pj4yXT0zNDcxMDtjW3I+PjJdPTM0NzA2fWVsc2V7Y1tzPj4yXT0zNzM2OTtjW3Q+PjJdPTM3MzczO2Nbcj4+Ml09MzczNzh9Y1tuPj4yXT0oY1tuPj4yXXwwKSsoMzUrKChiWyhjW2o+PjJdfDApKzM0Pj4xXXwwKSo2fDApKTtlPWNbbj4+Ml18MDtjW3U+PjJdPUNoKDAsZSwoKGV8MCk8MCk8PDMxPj4zMSl8MDtpZighKGNbdT4+Ml18MCkpe21oKGNbZj4+Ml18MCk7Y1toPj4yXT0wO3Y9Y1toPj4yXXwwO2k9dztyZXR1cm4gdnwwfVFkKGNbbj4+Ml18MCxjW3U+PjJdfDAsMzczODEsZyl8MDtjW2w+PjJdPUpmKGNbdT4+Ml18MCl8MDtNSChjW3U+PjJdfDAsbCxjW2Nbaj4+Ml0+PjJdfDApO2c9Y1tsPj4yXXwwO2NbbD4+Ml09ZysxO2FbKGNbdT4+Ml18MCkrZz4+MF09NDA7Y1tvPj4yXT1jWyhjW2o+PjJdfDApKzQ+PjJdO2Nbaz4+Ml09MDt3aGlsZSgxKXtmPShjW24+PjJdfDApLShjW2w+PjJdfDApfDA7ZD0oY1t1Pj4yXXwwKSsoY1tsPj4yXXwwKXwwO2lmKChjW2s+PjJdfDApPj0oYlsoY1tqPj4yXXwwKSszND4+MV18MCkpYnJlYWs7UWQoZixkLGNbcz4+Ml18MCxwKXwwO2c9SmYoKGNbdT4+Ml18MCkrKGNbbD4+Ml18MCl8MCl8MDtjW2w+PjJdPShjW2w+PjJdfDApK2c7Y1tzPj4yXT1jW3Q+PjJdO01IKGNbdT4+Ml18MCxsLGNbY1tvPj4yXT4+Ml18MCk7Y1t2Pj4yXT1jWzU0OTIrKChhWyhjW28+PjJdfDApKzEzPj4wXXwwKS02NTw8Mik+PjJdO2NbbT4+Ml09SmYoY1t2Pj4yXXwwKXwwO1RSKChjW3U+PjJdfDApKyhjW2w+PjJdfDApfDAsY1t2Pj4yXXwwLGNbbT4+Ml18MCl8MDtjW2w+PjJdPShjW2w+PjJdfDApKyhjW20+PjJdfDApO2Nbaz4+Ml09KGNbaz4+Ml18MCkrMTtjW28+PjJdPShjW28+PjJdfDApKzE2fWNbcT4+Ml09Y1tyPj4yXTtRZChmLGQsMTgzOTEscSl8MDtjW2g+PjJdPWNbdT4+Ml07dj1jW2g+PjJdfDA7aT13O3JldHVybiB2fDB9ZnVuY3Rpb24gTEgoYil7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wO2Y9aTtpPWkrMTZ8MDtkPWYrNHwwO2U9ZjtjW2Q+PjJdPWI7Y1tlPj4yXT0wO3doaWxlKDEpe2lmKCEoYVtjW2Q+PjJdPj4wXXwwKSlicmVhaztpZigoYVtjW2Q+PjJdPj4wXXwwKT09MzQpY1tlPj4yXT0oY1tlPj4yXXwwKSsxO2NbZT4+Ml09KGNbZT4+Ml18MCkrMTtjW2Q+PjJdPShjW2Q+PjJdfDApKzF9aT1mO3JldHVybiAoY1tlPj4yXXwwKSsyfDB9ZnVuY3Rpb24gTUgoYixlLGYpe2I9YnwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wO249aTtpPWkrMzJ8MDtnPW4rMjR8MDtoPW4rMjB8MDtvPW4rMTZ8MDttPW4rMTJ8MDtqPW4rOHwwO2s9bis0fDA7bD1uO2NbZz4+Ml09YjtjW2g+PjJdPWU7Y1tvPj4yXT1mO2NbbT4+Ml09Y1tvPj4yXTtjW2o+PjJdPWNbY1toPj4yXT4+Ml07Y1trPj4yXT0wO3doaWxlKDEpe2lmKCEoYVsoY1ttPj4yXXwwKSsoY1trPj4yXXwwKT4+MF18MCkpYnJlYWs7aWYoKGRbMTg0MDMrKGRbKGNbbT4+Ml18MCkrKGNbaz4+Ml18MCk+PjBdfDApPj4wXSY2fDApPT0wPyhkWyhjW20+PjJdfDApKyhjW2s+PjJdfDApPj4wXXwwKSE9OTU6MClicmVhaztjW2s+PjJdPShjW2s+PjJdfDApKzF9aWYoKChkWzE4NDAzKyhkW2NbbT4+Ml0+PjBdfDApPj4wXSY0fDApPT0wPyhEaShjW20+PjJdfDAsY1trPj4yXXwwKXwwKT09NTU6MCk/KGRbKGNbbT4+Ml18MCkrKGNbaz4+Ml18MCk+PjBdfDApPT0wOjApZT0oY1trPj4yXXwwKT09MDtlbHNlIGU9MTtjW2w+PjJdPWUmMTtpZihjW2w+PjJdfDApe289Y1tqPj4yXXwwO2Nbaj4+Ml09bysxO2FbKGNbZz4+Ml18MCkrbz4+MF09MzR9Y1trPj4yXT0wO3doaWxlKDEpe2lmKCEoYVsoY1ttPj4yXXwwKSsoY1trPj4yXXwwKT4+MF18MCkpYnJlYWs7Zj1hWyhjW20+PjJdfDApKyhjW2s+PjJdfDApPj4wXXwwO289Y1tqPj4yXXwwO2Nbaj4+Ml09bysxO2FbKGNbZz4+Ml18MCkrbz4+MF09ZjtpZigoZFsoY1ttPj4yXXwwKSsoY1trPj4yXXwwKT4+MF18MCk9PTM0KXtvPWNbaj4+Ml18MDtjW2o+PjJdPW8rMTthWyhjW2c+PjJdfDApK28+PjBdPTM0fWNbaz4+Ml09KGNbaz4+Ml18MCkrMX1pZighKGNbbD4+Ml18MCkpe209Y1tqPj4yXXwwO289Y1tnPj4yXXwwO209byttfDA7YVttPj4wXT0wO209Y1tqPj4yXXwwO289Y1toPj4yXXwwO2Nbbz4+Ml09bTtpPW47cmV0dXJufW09Y1tqPj4yXXwwO2Nbaj4+Ml09bSsxO2FbKGNbZz4+Ml18MCkrbT4+MF09MzQ7bT1jW2o+PjJdfDA7bz1jW2c+PjJdfDA7bT1vK218MDthW20+PjBdPTA7bT1jW2o+PjJdfDA7bz1jW2g+PjJdfDA7Y1tvPj4yXT1tO2k9bjtyZXR1cm59ZnVuY3Rpb24gTkgoZCxmLGcpe2Q9ZHwwO2Y9ZnwwO2c9Z3wwO3ZhciBoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTA7bz1pO2k9aSszMnwwO2g9bysyMHwwO2o9bysxNnwwO2s9bysxMnwwO2w9bys4fDA7bj1vKzR8MDttPW87Y1tqPj4yXT1kO2Nbaz4+Ml09ZjtjW2w+PjJdPWc7aWYoKGVbKGNbaz4+Ml18MCkrNTI+PjFdfDB8MCk+PShjW2w+PjJdfDApKXtjW2g+PjJdPTA7bj1jW2g+PjJdfDA7aT1vO3JldHVybiBufDB9Y1ttPj4yXT0oY1tsPj4yXXwwKSo3O2Y9Y1ttPj4yXXwwO2Nbbj4+Ml09c2goY1tqPj4yXXwwLGYsKChmfDApPDApPDwzMT4+MzEpfDA7aWYoIShjW24+PjJdfDApKXtjW2g+PjJdPTc7bj1jW2g+PjJdfDA7aT1vO3JldHVybiBufDB9ZWxzZXtUUihjW24+PjJdfDAsY1soY1trPj4yXXwwKSszMj4+Ml18MCwoZVsoY1trPj4yXXwwKSs1Mj4+MV18MCk8PDJ8MCl8MDtjWyhjW2s+PjJdfDApKzMyPj4yXT1jW24+PjJdO2Nbbj4+Ml09KGNbbj4+Ml18MCkrKGNbbD4+Ml08PDIpO1RSKGNbbj4+Ml18MCxjWyhjW2s+PjJdfDApKzQ+PjJdfDAsKGVbKGNbaz4+Ml18MCkrNTI+PjFdfDApPDwxfDApfDA7Y1soY1trPj4yXXwwKSs0Pj4yXT1jW24+PjJdO2Nbbj4+Ml09KGNbbj4+Ml18MCkrKGNbbD4+Ml08PDEpO1RSKGNbbj4+Ml18MCxjWyhjW2s+PjJdfDApKzI4Pj4yXXwwLGVbKGNbaz4+Ml18MCkrNTI+PjFdfDB8MCl8MDtjWyhjW2s+PjJdfDApKzI4Pj4yXT1jW24+PjJdO2JbKGNbaz4+Ml18MCkrNTI+PjFdPWNbbD4+Ml07bj0oY1trPj4yXXwwKSs1NXwwO2Fbbj4+MF09YVtuPj4wXSYtMTd8MTY7Y1toPj4yXT0wO249Y1toPj4yXXwwO2k9bztyZXR1cm4gbnwwfXJldHVybiAwfWZ1bmN0aW9uIE9IKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MDtlPWk7aT1pKzE2fDA7ZD1lKzh8MDtmPWUrNHwwO2c9ZTtjW2Q+PjJdPWE7Y1tmPj4yXT1iO2NbZz4+Ml09ZHgoY1tkPj4yXXwwKXwwO1R6KGNbZD4+Ml18MCxjW2Y+PjJdfDAsMSwxLChjW2Y+PjJdfDApPT0xPzE5OTA1OjE5OTI0KTtJaChjW2c+PjJdfDAsMTA1LDAsMSxjW2Y+PjJdfDAsNSl8MDtpZihjWyhjW2Q+PjJdfDApKzQwPj4yXXwwKXtpPWU7cmV0dXJufWNbKGNbZD4+Ml18MCkrNDA+PjJdPTE7aT1lO3JldHVybn1mdW5jdGlvbiBQSChhKXthPWF8MDt2YXIgYj0wLGU9MCxmPTAsZz0wLGg9MCxqPTA7aj1pO2k9aSszMnwwO2I9aisxNnwwO2U9aisxMnwwO2g9ais4fDA7Zj1qKzR8MDtnPWo7Y1tiPj4yXT1hO2NbaD4+Ml09ZHgoY1tiPj4yXXwwKXwwO2NbZT4+Ml09MDt3aGlsZSgxKXtpZigoY1tlPj4yXXwwKT49KGNbKGNbYj4+Ml18MCkrMTEyPj4yXXwwKSlicmVhaztjW2Y+PjJdPShjWyhjW2I+PjJdfDApKzExNj4+Ml18MCkrKGNbZT4+Ml08PDQpO2NbZz4+Ml09Y1tjW2Y+PjJdPj4yXTtteChjW2g+PjJdfDAsMTUxLGNbZz4+Ml18MCxjWyhjW2Y+PjJdfDApKzQ+PjJdfDAsZFsoY1tmPj4yXXwwKSs4Pj4wXXwwLGNbKGNbZj4+Ml18MCkrMTI+PjJdfDAsLTIpfDA7Y1tlPj4yXT0oY1tlPj4yXXwwKSsxfWk9ajtyZXR1cm59ZnVuY3Rpb24gUUgoYil7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTA7bD1pO2k9aSszMnwwO2Q9bCsyNHwwO2g9bCsyMHwwO2Y9bCsxNnwwO2o9bCsxMnwwO2c9bCs4fDA7az1sKzR8MDtlPWw7Y1tkPj4yXT1iO2NbZj4+Ml09Y1tjW2Q+PjJdPj4yXTtjW2s+PjJdPWNbKGNbZD4+Ml18MCkrOD4+Ml07Y1toPj4yXT1jWyhjW2Q+PjJdfDApKzEyMD4+Ml07d2hpbGUoMSl7aWYoIShjW2g+PjJdfDApKXtkPTU7YnJlYWt9Y1tqPj4yXT0oY1soY1tmPj4yXXwwKSsxNj4+Ml18MCkrKGNbKGNbaD4+Ml18MCkrOD4+Ml08PDQpO2NbZz4+Ml09Y1soY1toPj4yXXwwKSsxMj4+Ml07VXooY1tkPj4yXXwwLDAsY1soY1toPj4yXXwwKSs4Pj4yXXwwLGNbKGNbKGNbaj4+Ml18MCkrMTI+PjJdfDApKzcyPj4yXXwwLDEwNCk7aHgoY1trPj4yXXwwLChjW2c+PjJdfDApLTF8MCxjW2NbKGNbaD4+Ml18MCkrND4+Ml0+PjJdfDApfDA7Y1tlPj4yXT1LaChjW2s+PjJdfDAsMTAsMzc1NTcsMCl8MDtpZighKGNbZT4+Ml18MCkpe2Q9NTticmVha31jWyhjW2U+PjJdfDApKzg+PjJdPWNbZz4+Ml07Y1soY1tlPj4yXXwwKSsxMj4+Ml09KGNbZz4+Ml18MCkrMTtjWyhjW2U+PjJdfDApKzQwKzEyPj4yXT1jW2c+PjJdO2NbKGNbZT4+Ml18MCkrNjArND4+Ml09KGNbZz4+Ml18MCktMTtjWyhjW2U+PjJdfDApKzYwKzEyPj4yXT1jW2c+PjJdO2FbKGNbZT4+Ml18MCkrNjArMz4+MF09MTY7Y1soY1tlPj4yXXwwKSs4MCs4Pj4yXT0oY1tnPj4yXXwwKSsxO2NbKGNbZT4+Ml18MCkrMTAwKzEyPj4yXT1jW2c+PjJdO2NbKGNbZT4+Ml18MCkrMTYwKzg+PjJdPWNbZz4+Ml07Y1toPj4yXT1jW2NbaD4+Ml0+PjJdfWlmKChkfDApPT01KXtpPWw7cmV0dXJufX1mdW5jdGlvbiBSSChhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTA7Yj1pO2k9aSsxNnwwO2Q9YjtlPWIrNHwwO2NbZT4+Ml09YTtjW2Q+PjJdPWNbZT4+Ml07UmQoMjEsMzk1NDYsZCk7aT1iO3JldHVybn1cbmZ1bmN0aW9uIGd3KGUsZixnLGgsail7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7dmFyIGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTAsRT0wLEY9MCxHPTAsSD0wLEk9MCxKPTAsSz0wLEw9MCxNPTAsTj0wLE89MCxQPTAsUT0wLFI9MCxTPTAsVD0wLFU9MCxWPTAsVz0wLFg9MCxZPTAsWj0wLF89MCwkPTAsYWE9MCxiYT0wLGNhPTAsZGE9MCxlYT0wLGZhPTAsZ2E9MCxoYT0wLGlhPTAsamE9MCxrYT0wLGxhPTAsbWE9MCxuYT0wLG9hPTA7b2E9aTtpPWkrMzA0fDA7Qz1vYSszMnwwO0I9b2ErMTZ8MDtBPW9hO0Y9b2ErMjg0fDA7Rz1vYSsyODB8MDtIPW9hKzI3NnwwO0k9b2ErMjcyfDA7Sj1vYSsyNjh8MDtQPW9hKzI2NHwwO2NhPW9hKzI2MHwwO2s9b2ErMjU2fDA7Uj1vYSsyNTJ8MDtaPW9hKzI0OHwwO1Y9b2ErMjQ0fDA7bmE9b2ErMjQwfDA7YWE9b2ErMjM2fDA7Xz1vYSsyMzJ8MDskPW9hKzIyOHwwO1M9b2ErMjI0fDA7VD1vYSsyMjB8MDtXPW9hKzIxNnwwO1E9b2ErMjEyfDA7bGE9b2ErMjA4fDA7Tj1vYSsyMDR8MDtNPW9hKzIwMHwwO3A9b2ErMTc2fDA7cT1vYSsxNzJ8MDttYT1vYSsyOTF8MDtPPW9hKzI5MHwwO0Q9b2ErMjg5fDA7bz1vYSsyODh8MDtiYT1vYSsxNjh8MDtoYT1vYSsxNjR8MDtmYT1vYSsxNjB8MDtqYT1vYSsxNTZ8MDtpYT1vYSsxNTJ8MDtrYT1vYSsxNDh8MDtnYT1vYSsxNDR8MDtLPW9hKzE0MHwwO1k9b2ErMTM2fDA7ZGE9b2ErMTMyfDA7ej1vYSsxMjh8MDt4PW9hKzEyNHwwO249b2ErMTIwfDA7dD1vYSsxMTZ8MDt2PW9hKzExMnwwO3c9b2ErMTA4fDA7bT1vYSsxMDR8MDt5PW9hKzcyfDA7cj1vYSs2OHwwO3U9b2ErNjR8MDtsPW9hKzYwfDA7cz1vYSs1NnwwO0w9b2ErNTJ8MDtVPW9hKzQ4fDA7ZWE9b2ErNDR8MDtYPW9hKzQwfDA7Y1tGPj4yXT1lO2NbRz4+Ml09ZjtjW0g+PjJdPWc7Y1tJPj4yXT1oO2NbSj4+Ml09ajtjWyQ+PjJdPTA7Y1tTPj4yXT0wO2NbVD4+Ml09MDtjW1c+PjJdPS0xO2NbbGE+PjJdPTA7Y1tOPj4yXT0wO2NbTT4+Ml09MDthW21hPj4wXT0wO2FbTz4+MF09MDtjW2JhPj4yXT0wO2NbaGE+PjJdPTA7Y1tmYT4+Ml09MDtjW2phPj4yXT0wO2NbSz4+Ml09MDtjW1A+PjJdPWNbY1tGPj4yXT4+Ml07Y1twPj4yXT0wO2NbcCs0Pj4yXT0wO2NbcCs4Pj4yXT0wO2NbcCsxMj4+Ml09MDtjW3ArMTY+PjJdPTA7Y1twKzIwPj4yXT0wO2E6ZG8gaWYoKGNbKGNbRj4+Ml18MCkrMzY+PjJdfDApPT0wPyhkWyhjW1A+PjJdfDApKzY5Pj4wXXwwKT09MDowKXtpZigoKGNbSD4+Ml18MCkhPTA/KGNbKGNbSD4+Ml18MCkrOD4+Ml0mNTEyfDApIT0wOjApPyhjWyhjW0g+PjJdfDApKzQ4Pj4yXXwwKT09MDowKXtjW2JhPj4yXT1jW2NbSD4+Ml0+PjJdO2NbY1tIPj4yXT4+Ml09MDtmdihjW1A+PjJdfDAsY1tIPj4yXXwwKTtjW0g+PjJdPTB9Y1trPj4yXT1jWyhjW0c+PjJdfDApKzgrOD4+Ml07aWYoKCgoKChjW2s+PjJdfDApIT0wPyhjW2NhPj4yXT1iQyhjW0Y+PjJdfDAsY1tHPj4yXXwwKXwwLChjW2NhPj4yXXwwKSE9MCk6MCk/KGNbcT4+Ml09RmgoY1tQPj4yXXwwLGNbKGNbY2E+PjJdfDApKzY0Pj4yXXwwKXwwLChheChjW0Y+PjJdfDAsMTgsY1tjW2NhPj4yXT4+Ml18MCwwLGNbKGNbKGNbUD4+Ml18MCkrMTY+PjJdfDApKyhjW3E+PjJdPDw0KT4+Ml18MCl8MCk9PTApOjApPyhhW0Q+PjBdPSgoZFsoY1tjYT4+Ml18MCkrNDI+PjBdJjMyfDApPT0wXjEpJjEsY1tkYT4+Ml09VEMoY1tGPj4yXXwwLGNbY2E+PjJdfDAsMTA4LDAseil8MCxjW1k+PjJdPShjWyhjW2NhPj4yXXwwKSsxMj4+Ml18MCkhPTAmMSwoVHgoY1tGPj4yXXwwLGNbY2E+PjJdfDApfDApPT0wKTowKT8oVUMoY1tGPj4yXXwwLGNbY2E+PjJdfDAsY1t6Pj4yXXwwKXwwKT09MDowKT8oY1tuYT4+Ml09ZHgoY1tGPj4yXXwwKXwwLChjW25hPj4yXXwwKSE9MCk6MCl7aWYoIShkWyhjW0Y+PjJdfDApKzE4Pj4wXXwwKSlWQyhjW25hPj4yXXwwKTtyeChjW0Y+PjJdfDAsKChjW0g+PjJdfDApIT0wPzE6KGNbZGE+PjJdfDApIT0wKSYxLGNbcT4+Ml18MCk7aWYoISgoY1tJPj4yXXwwKT09MD8oV0MoY1tGPj4yXXwwLGNbY2E+PjJdfDAsY1tIPj4yXXwwLGNbSj4+Ml18MCxjW3E+PjJdfDApfDApIT0wOjApKUU9MTc7YjpkbyBpZigoRXwwKT09MTcpe2NbZmE+PjJdPVhDKGNbRj4+Ml18MCxjW3E+PjJdfDAsY1tjYT4+Ml18MCl8MDtrPShjWyhjW0Y+PjJdfDApKzQ0Pj4yXXwwKSsxfDA7Y1tpYT4+Ml09aztjW2thPj4yXT1rO2s9KGNbRj4+Ml18MCkrNDR8MDtjW2s+PjJdPShjW2s+PjJdfDApKygoYlsoY1tjYT4+Ml18MCkrMzQ+PjFdfDApKzEpO2lmKGRbKGNbY2E+PjJdfDApKzQyPj4wXSYxNil7Y1trYT4+Ml09KGNba2E+PjJdfDApKzE7az0oY1tGPj4yXXwwKSs0NHwwO2Nbaz4+Ml09KGNbaz4+Ml18MCkrMX1jW2dhPj4yXT0oY1trYT4+Ml18MCkrMTthW28+PjBdPShkWyhjW2NhPj4yXXwwKSs0Mj4+MF0mMTI4fDApPT0wO2M6ZG8gaWYoY1tJPj4yXXwwKXtjW1I+PjJdPTA7d2hpbGUoMSl7aWYoKGNbUj4+Ml18MCk+PShjWyhjW0k+PjJdfDApKzQ+PjJdfDApKWJyZWFrO2NbKGNbY1tJPj4yXT4+Ml18MCkrKGNbUj4+Ml08PDMpKzQ+PjJdPS0xO2NbUj4+Ml09KGNbUj4+Ml18MCkrMX1jW1I+PjJdPTA7d2hpbGUoMSl7aWYoKGNbUj4+Ml18MCk+PShjWyhjW0k+PjJdfDApKzQ+PjJdfDApKWJyZWFrIGM7Y1taPj4yXT0wO3doaWxlKDEpe2lmKChjW1o+PjJdfDApPj0oYlsoY1tjYT4+Ml18MCkrMzQ+PjFdfDApKWJyZWFrO2s9KGlnKGNbKGNbY1tJPj4yXT4+Ml18MCkrKGNbUj4+Ml08PDMpPj4yXXwwLGNbKGNbKGNbY2E+PjJdfDApKzQ+PjJdfDApKyhjW1o+PjJdPDw0KT4+Ml18MCl8MCk9PTA7aj1jW1o+PjJdfDA7aWYoayl7RT0yODticmVha31jW1o+PjJdPWorMX1kbyBpZigoRXwwKT09Mjgpe0U9MDtjWyhjW2NbST4+Ml0+PjJdfDApKyhjW1I+PjJdPDwzKSs0Pj4yXT1qO2lmKChjW1I+PjJdfDApIT0oY1taPj4yXXwwKSlhW28+PjBdPTA7aWYoKGNbWj4+Ml18MCkhPShiWyhjW2NhPj4yXXwwKSszMj4+MV18MCkpYnJlYWs7Y1tXPj4yXT1jW1I+PjJdfXdoaWxlKDApO2lmKChjW1o+PjJdfDApPj0oYlsoY1tjYT4+Ml18MCkrMzQ+PjFdfDApKXtrPSh1aShjWyhjW2NbST4+Ml0+PjJdfDApKyhjW1I+PjJdPDwzKT4+Ml18MCl8MCk9PTA7aWYoa3woYVtEPj4wXXwwKSE9MClicmVhaztjW1c+PjJdPWNbUj4+Ml07YVtvPj4wXT0wfWNbUj4+Ml09KGNbUj4+Ml18MCkrMX1uYT1jW0Y+PjJdfDA7bWE9Y1soY1tjW0k+PjJdPj4yXXwwKSsoY1tSPj4yXTw8Myk+PjJdfDA7Y1tBPj4yXT1jW0c+PjJdO2NbQSs0Pj4yXT0wO2NbQSs4Pj4yXT1tYTtFaChuYSwzNDI2MSxBKTthWyhjW0Y+PjJdfDApKzE3Pj4wXT0xO2JyZWFrIGF9d2hpbGUoMCk7ZG8gaWYoIShjW0g+PjJdfDApKXtjW3k+PjJdPTA7Y1t5KzQ+PjJdPTA7Y1t5Kzg+PjJdPTA7Y1t5KzEyPj4yXT0wO2NbeSsxNj4+Ml09MDtjW3krMjA+PjJdPTA7Y1t5KzI0Pj4yXT0wO2NbeSsyOD4+Ml09MDtjW3k+PjJdPWNbRj4+Ml07Y1tsYT4+Ml09LTE7aWYoY1tiYT4+Ml18MCl7Y1tfPj4yXT1jW2NbYmE+PjJdPj4yXTtpZihCeSh5LGNbYmE+PjJdfDApfDApYnJlYWsgYTtlbHNlIGJyZWFrfWVsc2V7Y1tfPj4yXT0wO2JyZWFrfX1lbHNle3k9KGNbRj4+Ml18MCkrNDR8MDtBPShjW3k+PjJdfDApKzF8MDtjW3k+PjJdPUE7Y1t4Pj4yXT1BO2Nbbj4+Ml09KHd4KGNbbmE+PjJdfDApfDApKzE7angoY1tuYT4+Ml18MCwxNSxjW3g+PjJdfDAsMCxjW24+PjJdfDApfDA7dkIocCwxMyxjW3g+PjJdfDApO2NbcCsxMj4+Ml09KGRbbz4+MF18MCkhPTA/Y1tnYT4+Ml18MDowO2NbcCsxNj4+Ml09YlsoY1tjYT4+Ml18MCkrMzQ+PjFdO2NbdD4+Ml09UHYoY1tGPj4yXXwwLGNbSD4+Ml18MCxwKXwwO2NbaGE+PjJdPWNbcCsxMj4+Ml07aWYoY1t0Pj4yXXwwKWJyZWFrIGE7aWYoZFsoY1tQPj4yXXwwKSs2OT4+MF18MClicmVhayBhO2lmKGNbKGNbRj4+Ml18MCkrMzY+PjJdfDApYnJlYWsgYTtZQyhjW25hPj4yXXwwLGNbeD4+Ml18MCk7WnooY1tuYT4+Ml18MCwoY1tuPj4yXXwwKS0xfDApO2NbXz4+Ml09Y1tjW2NbSD4+Ml0+PjJdPj4yXTtpZighKChjW2RhPj4yXXwwKT09MD8oWkMoY1tGPj4yXXwwLGNbcT4+Ml18MCxjW2NhPj4yXXwwKXwwKT09MDowKSlhW21hPj4wXT0xO2lmKCEoYVttYT4+MF18MCkpYnJlYWs7eT0oY1tGPj4yXXwwKSs0MHwwO0E9Y1t5Pj4yXXwwO2NbeT4+Ml09QSsxO2NbbGE+PjJdPUE7Y1t2Pj4yXT12eChjW0Y+PjJdfDApfDA7Y1t3Pj4yXT12eChjW0Y+PjJdfDApfDA7aXgoY1tuYT4+Ml18MCwxMDcsY1tsYT4+Ml18MCxjW18+PjJdfDApfDA7Y1ttPj4yXT1TeihjW25hPj4yXXwwLDE2LGNbcCs4Pj4yXXwwKXwwO2p4KGNbbmE+PjJdfDAsOTksY1toYT4+Ml18MCxjW18+PjJdfDAsY1t2Pj4yXXwwKXwwO2l4KGNbbmE+PjJdfDAsMTE0LGNbbGE+PjJdfDAsY1t3Pj4yXXwwKXwwO2p4KGNbbmE+PjJdfDAsMTE1LGNbbGE+PjJdfDAsY1t2Pj4yXXwwLGNbdz4+Ml18MCl8MDtZeihjW25hPj4yXXwwLGNbbT4+Ml18MCl8MDtaeihjW25hPj4yXXwwLGNbbT4+Ml18MCk7eHgoY1tGPj4yXXwwLGNbdj4+Ml18MCk7eHgoY1tGPj4yXXwwLGNbdz4+Ml18MCl9d2hpbGUoMCk7aWYoKGNbST4+Ml18MCk9PTAmKGNbXz4+Ml18MCk+MCljW1c+PjJdPWJbKGNbY2E+PjJdfDApKzMyPj4xXTtjW1I+PjJdPTA7d2hpbGUoMSl7aWYoKGNbUj4+Ml18MCk+PShiWyhjW2NhPj4yXXwwKSszND4+MV18MCkpYnJlYWs7Y1skPj4yXT0oY1skPj4yXXwwKSsoKGRbKGNbKGNbY2E+PjJdfDApKzQ+PjJdfDApKyhjW1I+PjJdPDw0KSsxNT4+MF0mMnwwKSE9MD8xOjApO2NbUj4+Ml09KGNbUj4+Ml18MCkrMX1pZigoY1tJPj4yXXwwKT09MCYoY1tfPj4yXXwwKSE9MD8oY1tfPj4yXXwwKSE9KChiWyhjW2NhPj4yXXwwKSszND4+MV18MCktKGNbJD4+Ml18MCl8MCk6MCl7bmE9Y1tGPj4yXXwwO2xhPShiWyhjW2NhPj4yXXwwKSszND4+MV18MCktKGNbJD4+Ml18MCl8MDttYT1jW18+PjJdfDA7Y1tCPj4yXT1jW0c+PjJdO2NbQis0Pj4yXT0wO2NbQis4Pj4yXT1sYTtjW0IrMTI+PjJdPW1hO0VoKG5hLDM0MjkzLEIpO2JyZWFrIGF9ZG8gaWYoY1tJPj4yXXwwKXtpZigoY1tfPj4yXXwwKT09KGNbKGNbST4+Ml18MCkrND4+Ml18MCkpYnJlYWs7bmE9Y1tGPj4yXXwwO21hPWNbKGNbST4+Ml18MCkrND4+Ml18MDtjW0M+PjJdPWNbXz4+Ml07Y1tDKzQ+PjJdPW1hO0VoKG5hLDM0MzQ1LEMpO2JyZWFrIGF9d2hpbGUoMCk7aWYoY1soY1tQPj4yXXwwKSsyND4+Ml0mMTI4KXtCPShjW0Y+PjJdfDApKzQ0fDA7Qz0oY1tCPj4yXXwwKSsxfDA7Y1tCPj4yXT1DO2NbamE+PjJdPUM7aXgoY1tuYT4+Ml18MCw3NiwwLGNbamE+PjJdfDApfDB9ZDpkbyBpZighKGNbWT4+Ml18MCkpe2Nbcj4+Ml09RkMoY1tGPj4yXXwwLGNbY2E+PjJdfDAsMTA1LDAsLTEsMCxTLFQpfDA7Y1tLPj4yXT1WdyhjW1A+PjJdfDAsKGNbcj4+Ml18MCkrMTw8MiwwKXwwO2lmKCEoY1tLPj4yXXwwKSlicmVhayBhO2NbUj4+Ml09MDt3aGlsZSgxKXtpZigoY1tSPj4yXXwwKT49KGNbcj4+Ml18MCkpYnJlYWsgZDtCPShjW0Y+PjJdfDApKzQ0fDA7Qz0oY1tCPj4yXXwwKSsxfDA7Y1tCPj4yXT1DO2NbKGNbSz4+Ml18MCkrKGNbUj4+Ml08PDIpPj4yXT1DO2NbUj4+Ml09KGNbUj4+Ml18MCkrMX19d2hpbGUoMCk7ZG8gaWYoYVttYT4+MF18MCl7Y1tOPj4yXT1TeihjW25hPj4yXXwwLDU3LGNbbGE+PjJdfDApfDA7Y1tNPj4yXT13eChjW25hPj4yXXwwKXwwfWVsc2V7aWYoIShjW0g+PjJdfDApKWJyZWFrO0M9U3ooY1tuYT4+Ml18MCwxNixjW3ArOD4+Ml18MCl8MDtjW00+PjJdPUM7Y1tOPj4yXT1DfXdoaWxlKDApO2NbUT4+Ml09V3ooY1tuYT4+Ml18MCl8MDtpZihjW3o+PjJdJjEpe2NbdT4+Ml09Q0EoY1tGPj4yXXwwLChiWyhjW2NhPj4yXXwwKSszND4+MV18MCkrMXwwKXwwO2lmKChjW1c+PjJdfDApPDApaXgoY1tuYT4+Ml18MCw3NiwtMSxjW3U+PjJdfDApfDA7ZWxzZXtpZihhW21hPj4wXXwwKWp4KGNbbmE+PjJdfDAsOTYsY1tsYT4+Ml18MCxjW1c+PjJdfDAsY1t1Pj4yXXwwKXwwO2Vsc2UgUkEoY1tGPj4yXXwwLGNbKGNbKGNbYmE+PjJdfDApKzQ+PjJdfDApKygoY1tXPj4yXXwwKSoyMHwwKT4+Ml18MCxjW3U+PjJdfDApO2NbbD4+Ml09U3ooY1tuYT4+Ml18MCwzNSxjW3U+PjJdfDApfDA7aXgoY1tuYT4+Ml18MCw3NiwtMSxjW3U+PjJdfDApfDA7WnooY1tuYT4+Ml18MCxjW2w+PjJdfDApO1N6KGNbbmE+PjJdfDAsMTcsY1t1Pj4yXXwwKXwwfWNbWj4+Ml09MDtjW1I+PjJdPTA7d2hpbGUoMSl7aWYoKGNbUj4+Ml18MCk+PShiWyhjW2NhPj4yXXwwKSszND4+MV18MCkpYnJlYWs7ZTpkbyBpZihjW0k+PjJdfDApe2NbWj4+Ml09MDt3aGlsZSgxKXtpZigoY1taPj4yXXwwKT49KGNbKGNbST4+Ml18MCkrND4+Ml18MCkpYnJlYWsgZTtpZigoY1soY1tjW0k+PjJdPj4yXXwwKSsoY1taPj4yXTw8MykrND4+Ml18MCk9PShjW1I+PjJdfDApKWJyZWFrIGU7Y1taPj4yXT0oY1taPj4yXXwwKSsxfX13aGlsZSgwKTtkbyBpZigoYVttYT4+MF18MCkhPTB8KGNbYmE+PjJdfDApIT0wKXtpZigoY1tJPj4yXXwwKSE9MD8oY1taPj4yXXwwKT49KGNbKGNbST4+Ml18MCkrND4+Ml18MCk6MCl7RT05MDticmVha31pZihhW21hPj4wXXwwKXtqeChjW25hPj4yXXwwLDk2LGNbbGE+PjJdfDAsY1taPj4yXXwwLChjW3U+PjJdfDApKyhjW1I+PjJdfDApKzF8MCl8MDticmVha31lbHNle19DKGNbRj4+Ml18MCxjWyhjWyhjW2JhPj4yXXwwKSs0Pj4yXXwwKSsoKGNbWj4+Ml18MCkqMjB8MCk+PjJdfDAsKGNbdT4+Ml18MCkrKGNbUj4+Ml18MCkrMXwwKTticmVha319ZWxzZSBFPTkwO3doaWxlKDApO2lmKChFfDApPT05MCl7RT0wO1JBKGNbRj4+Ml18MCxjWyhjWyhjW2NhPj4yXXwwKSs0Pj4yXXwwKSsoY1tSPj4yXTw8NCkrND4+Ml18MCwoY1t1Pj4yXXwwKSsoY1tSPj4yXXwwKSsxfDApfWlmKCEoY1tJPj4yXXwwKSljW1o+PjJdPShjW1o+PjJdfDApKzE7Y1tSPj4yXT0oY1tSPj4yXXwwKSsxfWlmKCEoY1tZPj4yXXwwKSkkQyhjW25hPj4yXXwwLGNbY2E+PjJdfDAsKGNbdT4+Ml18MCkrMXwwKTthRChjW0Y+PjJdfDAsY1tkYT4+Ml18MCwxMDgsMCwxLGNbY2E+PjJdfDAsKGNbdT4+Ml18MCktKGJbKGNbY2E+PjJdfDApKzM0Pj4xXXwwKS0xfDAsY1tKPj4yXXwwLGNbUT4+Ml18MCk7RkEoY1tGPj4yXXwwLGNbdT4+Ml18MCwoYlsoY1tjYT4+Ml18MCkrMzQ+PjFdfDApKzF8MCl9ZG8gaWYoIShjW1k+PjJdfDApKXtpZihkWyhjW2NhPj4yXXwwKSs0Mj4+MF0mMTYpaXgoY1tuYT4+Ml18MCw3OSwwLGNbaWE+PjJdfDApfDA7ZjpkbyBpZigoY1tXPj4yXXwwKT49MCl7ZG8gaWYoYVttYT4+MF18MClqeChjW25hPj4yXXwwLDk2LGNbbGE+PjJdfDAsY1tXPj4yXXwwLGNba2E+PjJdfDApfDA7ZWxzZXtpZihjW0g+PjJdfDApe2l4KGNbbmE+PjJdfDAsODQsKGNbaGE+PjJdfDApKyhjW1c+PjJdfDApfDAsY1trYT4+Ml18MCl8MDticmVha31SQShjW0Y+PjJdfDAsY1soY1soY1tiYT4+Ml18MCkrND4+Ml18MCkrKChjW1c+PjJdfDApKjIwfDApPj4yXXwwLGNba2E+PjJdfDApO2Nbcz4+Ml09ZUEoY1tuYT4+Ml18MCwtMSl8MDtpZighKGNbcz4+Ml18MCkpYnJlYWs7aWYoKGRbY1tzPj4yXT4+MF18MCkhPTc5KWJyZWFrO2lmKGRbKGNbY2E+PjJdfDApKzQyPj4wXSYxNilicmVhazthW08+PjBdPTE7YVtjW3M+PjJdPj4wXT0xMTQ7Y1soY1tzPj4yXXwwKSs0Pj4yXT1jW1M+PjJdO2NbKGNbcz4+Ml18MCkrOD4+Ml09Y1trYT4+Ml07Y1soY1tzPj4yXXwwKSsxMj4+Ml09Y1tmYT4+Ml19d2hpbGUoMCk7aWYoYVtPPj4wXXwwKWJyZWFrO2o9Y1tuYT4+Ml18MDtpZihkWyhjW2NhPj4yXXwwKSs0Mj4+MF0mMTYpe2NbTD4+Ml09d3goail8MDtpeChjW25hPj4yXXwwLDM0LGNba2E+PjJdfDAsKGNbTD4+Ml18MCkrMnwwKXwwfWVsc2V7Y1tMPj4yXT1TeihqLDM1LGNba2E+PjJdfDApfDA7angoY1tuYT4+Ml18MCwxMTQsY1tTPj4yXXwwLGNba2E+PjJdfDAsY1tmYT4+Ml18MCl8MDtaeihjW25hPj4yXXwwLGNbTD4+Ml18MCl9U3ooY1tuYT4+Ml18MCwxNyxjW2thPj4yXXwwKXwwfWVsc2V7ZG8gaWYoIShkWyhjW2NhPj4yXXwwKSs0Mj4+MF0mMTYpKXtpZihkW0Q+PjBdfDApYnJlYWs7angoY1tuYT4+Ml18MCwxMTQsY1tTPj4yXXwwLGNba2E+PjJdfDAsY1tmYT4+Ml18MCl8MDthW08+PjBdPTE7YnJlYWsgZn13aGlsZSgwKTtpeChjW25hPj4yXXwwLDc5LDAsY1trYT4+Ml18MCl8MH13aGlsZSgwKTtiRChjW0Y+PjJdfDAsY1tmYT4+Ml18MCxjW2thPj4yXXwwKTtjWyQ+PjJdPTA7Y1tSPj4yXT0wO3doaWxlKDEpe2lmKChjW1I+PjJdfDApPj0oYlsoY1tjYT4+Ml18MCkrMzQ+PjFdfDApKWJyZWFrO2NbVT4+Ml09KGNba2E+PjJdfDApKzErKGNbUj4+Ml18MCk7ZzpkbyBpZigoY1tSPj4yXXwwKT09KGJbKGNbY2E+PjJdfDApKzMyPj4xXXwwKSlTeihjW25hPj4yXXwwLDgwLGNbVT4+Ml18MCl8MDtlbHNle2g6ZG8gaWYoIShjW0k+PjJdfDApKWlmKGRbKGNbKGNbY2E+PjJdfDApKzQ+PjJdfDApKyhjW1I+PjJdPDw0KSsxNT4+MF0mMil7Y1taPj4yXT0tMTtjWyQ+PjJdPShjWyQ+PjJdfDApKzE7YnJlYWt9ZWxzZXtjW1o+PjJdPShjW1I+PjJdfDApLShjWyQ+PjJdfDApO2JyZWFrfWVsc2V7Y1taPj4yXT0wO3doaWxlKDEpe2lmKChjW1o+PjJdfDApPj0oY1soY1tJPj4yXXwwKSs0Pj4yXXwwKSlicmVhayBoO2lmKChjWyhjW2NbST4+Ml0+PjJdfDApKyhjW1o+PjJdPDwzKSs0Pj4yXXwwKT09KGNbUj4+Ml18MCkpYnJlYWsgaDtjW1o+PjJdPShjW1o+PjJdfDApKzF9fXdoaWxlKDApO2RvIGlmKCEoKGNbWj4+Ml18MCk8MHwoY1tfPj4yXXwwKT09MCkpe2lmKChjW0k+PjJdfDApIT0wPyhjW1o+PjJdfDApPj0oY1soY1tJPj4yXXwwKSs0Pj4yXXwwKTowKWJyZWFrO2lmKGFbbWE+PjBdfDApe2p4KGNbbmE+PjJdfDAsOTYsY1tsYT4+Ml18MCxjW1o+PjJdfDAsY1tVPj4yXXwwKXwwO2JyZWFrIGd9aWYoIShjW0g+PjJdfDApKXtSQShjW0Y+PjJdfDAsY1soY1soY1tiYT4+Ml18MCkrND4+Ml18MCkrKChjW1o+PjJdfDApKjIwfDApPj4yXXwwLGNbVT4+Ml18MCk7YnJlYWsgZ31pZigoY1toYT4+Ml18MCk9PShjW2dhPj4yXXwwKSlicmVhayBnO2l4KGNbbmE+PjJdfDAsODUsKGNbaGE+PjJdfDApKyhjW1o+PjJdfDApfDAsY1tVPj4yXXwwKXwwO2JyZWFrIGd9d2hpbGUoMCk7Y0QoY1tGPj4yXXwwLGNbKGNbKGNbY2E+PjJdfDApKzQ+PjJdfDApKyhjW1I+PjJdPDw0KSs0Pj4yXXwwLGNbVT4+Ml18MCl9d2hpbGUoMCk7Y1tSPj4yXT0oY1tSPj4yXXwwKSsxfWlmKGRbKGNbY2E+PjJdfDApKzQyPj4wXSYxNil7Y1tlYT4+Ml09VXgoY1tQPj4yXXwwLGNbY2E+PjJdfDApfDA7ZEQoY1tGPj4yXXwwLGNbY2E+PjJdfDApO214KGNbbmE+PjJdfDAsMTIsMSwoYlsoY1tjYT4+Ml18MCkrMzQ+PjFdfDApKzJ8MCxjW2lhPj4yXXwwLGNbZWE+PjJdfDAsLTEwKXwwO0poKGNbbmE+PjJdfDAsKChjW0o+PjJdfDApPT0xMD8yOmNbSj4+Ml18MCkmMjU1KTtWeChjW0Y+PjJdfDApO2JyZWFrfWVsc2V7ZUQoY1tGPj4yXXwwLGNbY2E+PjJdfDAsY1tLPj4yXXwwLGNbUz4+Ml18MCxjW1Q+PjJdfDAsY1tpYT4+Ml18MCwwLChjW1c+PjJdfDApPj0wJjI1NSxjW0o+PjJdJjI1NSxjW1E+PjJdfDAsWCwwKTtmRChjW0Y+PjJdfDAsY1tjYT4+Ml18MCwwLGNbaWE+PjJdfDAsMCwwKTtnRChjW0Y+PjJdfDAsY1tjYT4+Ml18MCxjW1M+PjJdfDAsY1tUPj4yXXwwLGNbaWE+PjJdfDAsY1tLPj4yXXwwLDAsZFtPPj4wXXwwLChjW1g+PjJdfDApPT0wJjEpO2JyZWFrfX13aGlsZSgwKTtpZihjWyhjW1A+PjJdfDApKzI0Pj4yXSYxMjgpaXgoY1tuYT4+Ml18MCw5MSxjW2phPj4yXXwwLDEpfDA7aWYoY1tkYT4+Ml18MClhRChjW0Y+PjJdfDAsY1tkYT4+Ml18MCwxMDgsMCwyLGNbY2E+PjJdfDAsKGNbZ2E+PjJdfDApLTItKGJbKGNbY2E+PjJdfDApKzM0Pj4xXXwwKXwwLGNbSj4+Ml18MCxjW1E+PjJdfDApO196KGNbbmE+PjJdfDAsY1tRPj4yXXwwKTtkbyBpZihhW21hPj4wXXwwKXtpeChjW25hPj4yXXwwLDcsY1tsYT4+Ml18MCxjW00+PjJdfDApfDA7WnooY1tuYT4+Ml18MCxjW04+PjJdfDApO1N6KGNbbmE+PjJdfDAsMTExLGNbbGE+PjJdfDApfDB9ZWxzZXtpZighKGNbSD4+Ml18MCkpYnJlYWs7WXooY1tuYT4+Ml18MCxjW00+PjJdfDApfDA7WnooY1tuYT4+Ml18MCxjW04+PjJdfDApfXdoaWxlKDApO2lmKChjW1k+PjJdfDApIT0wPzE6KGRbKGNbY2E+PjJdfDApKzQyPj4wXSYxNnwwKSE9MClicmVhaztpZigoY1tTPj4yXXwwKTwoY1tUPj4yXXwwKSlTeihjW25hPj4yXXwwLDExMSxjW1M+PjJdfDApfDA7Y1tWPj4yXT0wO2NbYWE+PjJdPWNbKGNbY2E+PjJdfDApKzg+PjJdO3doaWxlKDEpe2lmKCEoY1thYT4+Ml18MCkpYnJlYWsgYjtTeihjW25hPj4yXXwwLDExMSwoY1tWPj4yXXwwKSsoY1tUPj4yXXwwKXwwKXwwO2NbYWE+PjJdPWNbKGNbYWE+PjJdfDApKzIwPj4yXTtjW1Y+PjJdPShjW1Y+PjJdfDApKzF9fXdoaWxlKDApO2lmKChkWyhjW0Y+PjJdfDApKzE4Pj4wXXwwKT09MD8oY1soY1tGPj4yXXwwKSsxMjg+PjJdfDApPT0wOjApaEQoY1tGPj4yXXwwKTtpZigoKGNbKGNbUD4+Ml18MCkrMjQ+PjJdJjEyOHwwKSE9MD8oYVsoY1tGPj4yXXwwKSsxOD4+MF18MCk9PTA6MCk/KGNbKGNbRj4+Ml18MCkrMTI4Pj4yXXwwKT09MDowKXtpeChjW25hPj4yXXwwLDg3LGNbamE+PjJdfDAsMSl8MDttQyhjW25hPj4yXXwwLDEpO25DKGNbbmE+PjJdfDAsMCwwLDM0MzcwLDApfDB9fX13aGlsZSgwKTtodihjW1A+PjJdfDAsY1tHPj4yXXwwKTtldihjW1A+PjJdfDAsY1tiYT4+Ml18MCk7ZnYoY1tQPj4yXXwwLGNbSD4+Ml18MCk7a3YoY1tQPj4yXXwwLGNbST4+Ml18MCk7VGYoY1tQPj4yXXwwLGNbSz4+Ml18MCk7aT1vYTtyZXR1cm59ZnVuY3Rpb24gaHcoYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MDtrPWk7aT1pKzMyfDA7Zj1rKzE2fDA7ZT1rKzEyfDA7Zz1rKzh8MDtoPWsrNHwwO2o9aztjW2U+PjJdPWE7Y1tnPj4yXT1iO2NbaD4+Ml09ZDtpZigoY1tnPj4yXXwwKT09MD8oY1tnPj4yXT1zaChjW2U+PjJdfDAsOCwwKXwwLChjW2c+PjJdfDApPT0wKTowKXtjW2Y+PjJdPTA7aj1jW2Y+PjJdfDA7aT1rO3JldHVybiBqfDB9ZD1TQyhjW2U+PjJdfDAsY1tjW2c+PjJdPj4yXXwwLDgsKGNbZz4+Ml18MCkrNHwwLGopfDA7Y1tjW2c+PjJdPj4yXT1kO2U9Y1tlPj4yXXwwO2lmKChjW2o+PjJdfDApPDApe2t2KGUsY1tnPj4yXXwwKTtjW2Y+PjJdPTA7aj1jW2Y+PjJdfDA7aT1rO3JldHVybiBqfDB9ZWxzZXtoPVR3KGUsY1toPj4yXXwwKXwwO2NbKGNbY1tnPj4yXT4+Ml18MCkrKGNbaj4+Ml08PDMpPj4yXT1oO2NbZj4+Ml09Y1tnPj4yXTtqPWNbZj4+Ml18MDtpPWs7cmV0dXJuIGp8MH1yZXR1cm4gMH1mdW5jdGlvbiBpdyhhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MDtlPWk7aT1pKzE2fDA7Zj1lKzh8MDtoPWUrNHwwO2c9ZTtjW2Y+PjJdPWE7Y1toPj4yXT1iO2NbZz4+Ml09ZDtjWyhjW2Y+PjJdfDApKzQ+PjJdPWNbY1toPj4yXT4+Ml07Y1soY1tmPj4yXXwwKSs4Pj4yXT0oY1tjW2c+PjJdPj4yXXwwKSsoY1soY1tnPj4yXXwwKSs0Pj4yXXwwKTtpPWU7cmV0dXJufWZ1bmN0aW9uIGp3KGUsZixnLGgpe2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO3ZhciBqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wO3E9aTtpPWkrMzJ8MDtqPXErMjR8MDtrPXErMjB8MDtsPXErMTZ8MDttPXErMTJ8MDtwPXErOHwwO289cSs0fDA7bj1xO2Nbaj4+Ml09ZTtjW2s+PjJdPWY7Y1tsPj4yXT1nO2NbbT4+Ml09aDtjW28+PjJdPTA7Y1tuPj4yXT0wO2RvIGlmKGNbbD4+Ml18MCl7aWYoKChjW2s+PjJdfDApPT0xMzQ/KGNbY1tsPj4yXT4+Ml18MCkhPTA6MCk/KFFpKGNbY1tsPj4yXT4+Ml18MCxuKXwwKSE9MDowKWJyZWFrO2Nbbz4+Ml09KGNbKGNbbD4+Ml18MCkrND4+Ml18MCkrMX13aGlsZSgwKTtjW3A+PjJdPVZ3KGNbaj4+Ml18MCw0OCsoY1tvPj4yXXwwKXwwLDApfDA7aWYoIShjW3A+PjJdfDApKXtwPWNbcD4+Ml18MDtpPXE7cmV0dXJuIHB8MH1qPWNbcD4+Ml18MDtlPWorNDh8MDtkb3tjW2o+PjJdPTA7aj1qKzR8MH13aGlsZSgoanwwKTwoZXwwKSk7YVtjW3A+PjJdPj4wXT1jW2s+PjJdO2JbKGNbcD4+Ml18MCkrMzQ+PjFdPS0xO2RvIGlmKGNbbD4+Ml18MCl7aj1jW3A+PjJdfDA7aWYoIShjW28+PjJdfDApKXtvPWorNHwwO2Nbbz4+Ml09Y1tvPj4yXXwxMDI0O2NbKGNbcD4+Ml18MCkrOD4+Ml09Y1tuPj4yXTticmVha31jWyhjW3A+PjJdfDApKzg+PjJdPWorNDg7aWYoY1soY1tsPj4yXXwwKSs0Pj4yXXwwKVRSKGNbKGNbcD4+Ml18MCkrOD4+Ml18MCxjW2NbbD4+Ml0+PjJdfDAsY1soY1tsPj4yXXwwKSs0Pj4yXXwwKXwwO2FbKGNbKGNbcD4+Ml18MCkrOD4+Ml18MCkrKGNbKGNbbD4+Ml18MCkrND4+Ml18MCk+PjBdPTA7aWYoKGNbbT4+Ml18MCkhPTA/KGRbMTg0MDMrKGRbY1soY1twPj4yXXwwKSs4Pj4yXT4+MF18MCk+PjBdJjEyOHwwKSE9MDowKXtpZigoYVtjWyhjW3A+PjJdfDApKzg+PjJdPj4wXXwwKT09MzQpe289KGNbcD4+Ml18MCkrNHwwO2Nbbz4+Ml09Y1tvPj4yXXw2NH1adyhjWyhjW3A+PjJdfDApKzg+PjJdfDApfX13aGlsZSgwKTtjWyhjW3A+PjJdfDApKzI0Pj4yXT0xO3A9Y1twPj4yXXwwO2k9cTtyZXR1cm4gcHwwfWZ1bmN0aW9uIGt3KGQsZSxmKXtkPWR8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MDt1PWk7aT1pKzY0fDA7cT11KzE2fDA7cD11Kzh8MDtnPXUrNDR8MDtoPXUrNDB8MDtqPXUrMzZ8MDttPXUrMzJ8MDtzPXUrMjh8MDtyPXUrNTB8MDtuPXU7bD11KzI0fDA7bz11KzQ4fDA7az11KzIwfDA7Y1tnPj4yXT1kO2NbaD4+Ml09ZTtjW2o+PjJdPWY7Y1ttPj4yXT1jW2NbZz4+Ml0+PjJdO2lmKCEoY1toPj4yXXwwKSl7aT11O3JldHVybn1jW3M+PjJdPWNbKGNbaD4+Ml18MCkrOD4+Ml07aWYoYVsoY1tzPj4yXXwwKSsxPj4wXXwwKXtkbyBpZigoYVtjW3M+PjJdPj4wXXwwKSE9NjMpe2Jbcj4+MV09MDtiW28+PjFdPTA7d2hpbGUoMSl7aWYoKGJbbz4+MV18MCk+PShjWyhjW2c+PjJdfDApKzQwND4+Ml18MCkpYnJlYWs7aWYoKGNbKGNbKGNbZz4+Ml18MCkrNDI4Pj4yXXwwKSsoYltvPj4xXTw8Mik+PjJdfDApIT0wPyhoUihjWyhjWyhjW2c+PjJdfDApKzQyOD4+Ml18MCkrKGJbbz4+MV08PDIpPj4yXXwwLGNbcz4+Ml18MCl8MCk9PTA6MCl7dD0xNDticmVha31iW28+PjFdPShiW28+PjFdfDApKzE8PDE2Pj4xNn1pZigodHwwKT09MTQpYltyPj4xXT0oYltvPj4xXXwwKSsxO2lmKCEoYltyPj4xXXwwKSl7cD0oY1tnPj4yXXwwKSs0MDB8MDt0PShiW3A+PjFdfDApKzE8PDE2Pj4xNjtiW3A+PjFdPXQ7YltyPj4xXT10fX1lbHNle2NbbD4+Ml09MD09KE1pKChjW3M+PjJdfDApKzF8MCxuLChjW2o+PjJdfDApLTF8MCwxKXwwKSYxO2Jbcj4+MV09Y1tuPj4yXTt0PW47ZD1jW3QrND4+Ml18MDtpZighKChjW2w+PjJdfDApPT0wfCgoZHwwKTwwfChkfDApPT0wJihjW3Q+PjJdfDApPj4+MDwxKSk/KGQ9bixmPWNbZCs0Pj4yXXwwLHQ9Y1soY1ttPj4yXXwwKSs5NiszNj4+Ml18MCxlPSgodHwwKTwwKTw8MzE+PjMxLCEoKGZ8MCk+KGV8MCl8KChmfDApPT0oZXwwKT8oY1tkPj4yXXwwKT4+PjA+dD4+PjA6MCkpKTowKXtwPW47ZT1jW3ArND4+Ml18MDt0PWJbKGNbZz4+Ml18MCkrNDAwPj4xXXwwO2Q9KCh0fDApPDApPDwzMT4+MzE7aWYoISgoZXwwKT4oZHwwKXwoKGV8MCk9PShkfDApPyhjW3A+PjJdfDApPj4+MD50Pj4+MDowKSkpYnJlYWs7YlsoY1tnPj4yXXwwKSs0MDA+PjFdPWNbbj4+Ml07YnJlYWt9dD1jW2c+PjJdfDA7Y1twPj4yXT1jWyhjW20+PjJdfDApKzk2KzM2Pj4yXTtFaCh0LDM0MTk1LHApO2k9dTtyZXR1cm59d2hpbGUoMCk7YlsoY1toPj4yXXwwKSszMj4+MV09YltyPj4xXXwwO2RvIGlmKChiW3I+PjFdfDApPihjWyhjW2c+PjJdfDApKzQwND4+Ml18MCkpe2Nbaz4+Ml09VXcoY1ttPj4yXXwwLGNbKGNbZz4+Ml18MCkrNDI4Pj4yXXwwLGJbcj4+MV08PDIsMCl8MDtpZighKGNbaz4+Ml18MCkpe2k9dTtyZXR1cm59ZWxzZXtjWyhjW2c+PjJdfDApKzQyOD4+Ml09Y1trPj4yXTtWUigoY1trPj4yXXwwKSsoY1soY1tnPj4yXXwwKSs0MDQ+PjJdPDwyKXwwLDAsKGJbcj4+MV18MCktKGNbKGNbZz4+Ml18MCkrNDA0Pj4yXXwwKTw8MnwwKXwwO2NbKGNbZz4+Ml18MCkrNDA0Pj4yXT1iW3I+PjFdO2JyZWFrfX13aGlsZSgwKTtpZighKGNbKGNbKGNbZz4+Ml18MCkrNDI4Pj4yXXwwKSsoKGJbcj4+MV18MCktMTw8Mik+PjJdfDApKXt0PVl3KGNbbT4+Ml18MCxjW3M+PjJdfDAsY1tqPj4yXXwwLDApfDA7Y1soY1soY1tnPj4yXXwwKSs0Mjg+PjJdfDApKygoYltyPj4xXXwwKS0xPDwyKT4+Ml09dH19ZWxzZXtzPShjW2c+PjJdfDApKzQwMHwwO3Q9KGJbcz4+MV18MCkrMTw8MTY+PjE2O2Jbcz4+MV09dDtiWyhjW2g+PjJdfDApKzMyPj4xXT10fWlmKChiWyhjW2c+PjJdfDApKzQwMD4+MV18MCk8PShjWyhjW20+PjJdfDApKzk2KzM2Pj4yXXwwKSl7aT11O3JldHVybn1FaChjW2c+PjJdfDAsMzQyMzgscSk7aT11O3JldHVybn1mdW5jdGlvbiBsdyhhLGIsZCxlKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTA7bD1pO2k9aSszMnwwO2Y9bCsxNnwwO2c9bCsxMnwwO2g9bCs4fDA7aj1sKzR8MDtrPWw7Y1tmPj4yXT1hO2NbZz4+Ml09YjtjW2g+PjJdPWQ7Y1tqPj4yXT1lO2lmKChjWyhjW2g+PjJdfDApKzQ+PjJdfDApPj4+MDw9MCl7YT1jW2c+PjJdfDA7aT1sO3JldHVybiBhfDB9Y1trPj4yXT1qdyhjW2NbZj4+Ml0+PjJdfDAsNTMsY1toPj4yXXwwLGNbaj4+Ml18MCl8MDtpZighKGNbaz4+Ml18MCkpe2E9Y1tnPj4yXXwwO2k9bDtyZXR1cm4gYXwwfWNbKGNbaz4+Ml18MCkrMTI+PjJdPWNbZz4+Ml07YT0oY1trPj4yXXwwKSs0fDA7Y1thPj4yXT1jW2E+PjJdfDQzNTI7Y1tnPj4yXT1jW2s+PjJdO2E9Y1tnPj4yXXwwO2k9bDtyZXR1cm4gYXwwfWZ1bmN0aW9uIG13KGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wO2s9aTtpPWkrMzJ8MDtlPWsrMjB8MDtmPWsrMTZ8MDtnPWsrMTJ8MDtsPWsrOHwwO2o9ays0fDA7aD1rO2NbZj4+Ml09YTtjW2c+PjJdPWI7Y1tsPj4yXT1kO2NbaD4+Ml09Y1tjW2Y+PjJdPj4yXTtjW2o+PjJdPWp3KGNbaD4+Ml18MCwxNTEsY1tsPj4yXXwwLDEpfDA7aWYoIShjW2o+PjJdfDApKXtldihjW2g+PjJdfDAsY1tnPj4yXXwwKTtjW2U+PjJdPTA7bD1jW2U+PjJdfDA7aT1rO3JldHVybiBsfDB9ZWxzZXtjWyhjW2o+PjJdfDApKzIwPj4yXT1jW2c+PjJdO3N3KGNbZj4+Ml18MCxjW2o+PjJdfDApO2NbZT4+Ml09Y1tqPj4yXTtsPWNbZT4+Ml18MDtpPWs7cmV0dXJuIGx8MH1yZXR1cm4gMH1mdW5jdGlvbiBudyhhLGIsZCxlKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MDtmPWk7aT1pKzE2fDA7az1mKzEyfDA7aj1mKzh8MDtnPWYrNHwwO2g9ZjtjW2s+PjJdPWE7Y1tqPj4yXT1iO2NbZz4+Ml09ZDtjW2g+PjJdPWU7ZT1FdihjW2s+PjJdfDAsY1tqPj4yXXwwLGNbY1tnPj4yXT4+Ml18MCxjW2NbaD4+Ml0+PjJdfDAsMCl8MDtjW2NbZz4+Ml0+PjJdPWU7Y1soY1tnPj4yXXwwKSs4Pj4yXT1jWyhjW2g+PjJdfDApKzg+PjJdO2k9ZjtyZXR1cm59ZnVuY3Rpb24gb3coYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTA7Zz1pO2k9aSsxNnwwO2U9Zys4fDA7aD1nKzR8MDtmPWc7Y1tlPj4yXT1hO2NbaD4+Ml09YjtjW2Y+PjJdPWQ7aWYoIShjW2g+PjJdfDApKXtpPWc7cmV0dXJufWg9RXYoY1tlPj4yXXwwLDE5LGNbY1tmPj4yXT4+Ml18MCwwLDApfDA7Y1tjW2Y+PjJdPj4yXT1oO2k9ZztyZXR1cm59ZnVuY3Rpb24gcHcoYSxiLGQsZSl7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTA7Zj1pO2k9aSsxNnwwO2s9ZisxMnwwO2o9Zis4fDA7Zz1mKzR8MDtoPWY7Y1trPj4yXT1hO2Nbaj4+Ml09YjtjW2c+PjJdPWQ7Y1toPj4yXT1lO2U9RXYoY1trPj4yXXwwLGNbaj4+Ml18MCxjW2NbZz4+Ml0+PjJdfDAsMCwwKXwwO2NbY1tnPj4yXT4+Ml09ZTtjWyhjW2c+PjJdfDApKzg+PjJdPShjW2NbaD4+Ml0+PjJdfDApKyhjWyhjW2g+PjJdfDApKzQ+PjJdfDApO2k9ZjtyZXR1cm59ZnVuY3Rpb24gcXcoYixlLGYsZyl7Yj1ifDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7dmFyIGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wO209aTtpPWkrMzJ8MDtuPW0rMTZ8MDtoPW0rMTJ8MDtqPW0rOHwwO2s9bSs0fDA7bD1tO2Nbbj4+Ml09YjtjW2g+PjJdPWU7Y1tqPj4yXT1mO2Nbaz4+Ml09ZztjW2w+PjJdPWNbY1tuPj4yXT4+Ml07aWYoISgoY1tqPj4yXXwwKSE9MCYoY1toPj4yXXwwKSE9MCkpe2k9bTtyZXR1cm59aWYoKGRbY1toPj4yXT4+MF18MHwwKSE9MTAxKXtpPW07cmV0dXJufWFbY1tqPj4yXT4+MF09Y1trPj4yXTtpdihjW2w+PjJdfDAsY1soY1tqPj4yXXwwKSsxNj4+Ml18MCk7Y1soY1tqPj4yXXwwKSsxNj4+Ml09MDtpPW07cmV0dXJufWZ1bmN0aW9uIHJ3KGEsYixkLGUsZil7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wO2c9aTtpPWkrMzJ8MDtoPWcrMTZ8MDtsPWcrMTJ8MDtrPWcrOHwwO2o9Zys0fDA7bT1nO2NbaD4+Ml09YTtjW2w+PjJdPWI7Y1trPj4yXT1kO2Nbaj4+Ml09ZTtjW20+PjJdPWY7Y1soY1toPj4yXXwwKSs0Pj4yXT1jW2NbbT4+Ml0+PjJdO2Y9RXYoY1tsPj4yXXwwLGNbaz4+Ml18MCxjW2Nbaj4+Ml0+PjJdfDAsMCwwKXwwO2NbY1toPj4yXT4+Ml09ZjtjWyhjW2g+PjJdfDApKzg+PjJdPWNbKGNbaj4+Ml18MCkrOD4+Ml07aT1nO3JldHVybn1mdW5jdGlvbiBzdyhhLGIpe2E9YXwwO2I9YnwwO3ZhciBkPTAsZT0wLGY9MDtmPWk7aT1pKzE2fDA7ZD1mKzR8MDtlPWY7Y1tkPj4yXT1hO2NbZT4+Ml09YjtpZihjWyhjW2Q+PjJdfDApKzM2Pj4yXXwwKXtpPWY7cmV0dXJufXp6KGNbZT4+Ml18MCk7WnkoY1tkPj4yXXwwLGNbKGNbZT4+Ml18MCkrMjQ+PjJdfDApfDA7aT1mO3JldHVybn1mdW5jdGlvbiB0dyhhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MDtoPWk7aT1pKzE2fDA7ZT1oKzh8MDtmPWgrNHwwO2c9aDtjW2U+PjJdPWE7Y1tmPj4yXT1iO2NbZz4+Ml09ZDtpZihjW2Y+PjJdfDApe2NbKGNbZj4+Ml18MCkrMjA+PjJdPWNbZz4+Ml07ZD0oY1tmPj4yXXwwKSs0fDA7Y1tkPj4yXT1jW2Q+PjJdfDIwOTkyMDA7c3coY1tlPj4yXXwwLGNbZj4+Ml18MCk7aT1oO3JldHVybn1lbHNle2Z2KGNbY1tlPj4yXT4+Ml18MCxjW2c+PjJdfDApO2k9aDtyZXR1cm59fWZ1bmN0aW9uIHV3KGEsYixlLGYsZyl7YT1hfDA7Yj1ifDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7dmFyIGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTA7bT1pO2k9aSszMnwwO2w9bTtoPW0rMjh8MDtwPW0rMjR8MDtqPW0rMjB8MDtvPW0rMTZ8MDtuPW0rMTJ8MDtrPW0rOHwwO2NbaD4+Ml09YTtjW3A+PjJdPWI7Y1tqPj4yXT1lO2Nbbz4+Ml09ZjtjW24+PjJdPWc7Y1trPj4yXT1UdihjW2g+PjJdfDAsY1twPj4yXXwwLDApfDA7aWYoKGNbbz4+Ml18MCkhPTB8KGNbbj4+Ml18MCkhPS0xPyhkWyhjW2NbaD4+Ml0+PjJdfDApKzE0OCs1Pj4wXXwwfDApPT0wOjApe3A9Y1toPj4yXXwwO289Y1tjW2o+PjJdPj4yXXwwO2NbbD4+Ml09Y1soY1tqPj4yXXwwKSs0Pj4yXTtjW2wrND4+Ml09bztFaChwLDM0MTU1LGwpfVV2KGNbaD4+Ml18MCxjW2s+PjJdfDAsY1tqPj4yXXwwLDEpO2k9bTtyZXR1cm4gY1trPj4yXXwwfWZ1bmN0aW9uIHZ3KGIsZCxlKXtiPWJ8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTA7dT1pO2k9aSs4MHwwO209dSsxNnwwO2w9dSs4fDA7dD11O3A9dSs2OHwwO3E9dSs2NHwwO3I9dSs2MHwwO2g9dSs1NnwwO2s9dSs1MnwwO3M9dSs0OHwwO2c9dSs0NHwwO2Y9dSs0MHwwO2o9dSszNnwwO249dSszMnwwO289dSsyOHwwO2NbcD4+Ml09YjtjW3E+PjJdPWQ7Y1tyPj4yXT1lO2Nbcz4+Ml09Y1tjW3A+PjJdPj4yXTtpZihhWyhjW3M+PjJdfDApKzY5Pj4wXXwwKXtzPWNbcz4+Ml18MDt0PWNbcT4+Ml18MDtodihzLHQpO2k9dTtyZXR1cm59aWYoS3ooY1twPj4yXXwwKXwwKXtzPWNbcz4+Ml18MDt0PWNbcT4+Ml18MDtodihzLHQpO2k9dTtyZXR1cm59Y1toPj4yXT1LaihjW3M+PjJdfDAsY1soY1txPj4yXXwwKSs4Kzg+PjJdfDAsY1soY1txPj4yXXwwKSs4KzQ+PjJdfDApfDA7aWYoIShjW2g+PjJdfDApKXtmPWNbcD4+Ml18MDtnPWNbcT4+Ml18MDtpZihjW3I+PjJdfDApWkIoZixjW2crOCs0Pj4yXXwwKTtlbHNle2NbdD4+Ml09ZztjW3QrND4+Ml09MDtFaChmLDMzOTQ1LHQpfWFbKGNbcD4+Ml18MCkrMTc+PjBdPTE7cz1jW3M+PjJdfDA7dD1jW3E+PjJdfDA7aHYocyx0KTtpPXU7cmV0dXJufWlmKGFbKGNbaD4+Ml18MCkrNTU+PjBdJjMpe3Q9Y1twPj4yXXwwO2NbbD4+Ml09MDtFaCh0LDMzOTYzLGwpO3M9Y1tzPj4yXXwwO3Q9Y1txPj4yXXwwO2h2KHMsdCk7aT11O3JldHVybn1jW2c+PjJdPUZoKGNbcz4+Ml18MCxjWyhjW2g+PjJdfDApKzI0Pj4yXXwwKXwwO2NbZj4+Ml09MTA7Y1tqPj4yXT1jWyhjW2g+PjJdfDApKzEyPj4yXTtjW24+PjJdPWNbKGNbKGNbcz4+Ml18MCkrMTY+PjJdfDApKyhjW2c+PjJdPDw0KT4+Ml07Y1tvPj4yXT0oY1tnPj4yXXwwKT09MT8xOTkwNToxOTkyNDtpZihheChjW3A+PjJdfDAsOSxjW28+PjJdfDAsMCxjW24+PjJdfDApfDApe3M9Y1tzPj4yXXwwO3Q9Y1txPj4yXXwwO2h2KHMsdCk7aT11O3JldHVybn1pZihjW2c+PjJdfDApY1tmPj4yXT0xMjtpZihheChjW3A+PjJdfDAsY1tmPj4yXXwwLGNbY1toPj4yXT4+Ml18MCxjW2Nbaj4+Ml0+PjJdfDAsY1tuPj4yXXwwKXwwKXtzPWNbcz4+Ml18MDt0PWNbcT4+Ml18MDtodihzLHQpO2k9dTtyZXR1cm59Y1trPj4yXT1keChjW3A+PjJdfDApfDA7aWYoIShjW2s+PjJdfDApKXtzPWNbcz4+Ml18MDt0PWNbcT4+Ml18MDtodihzLHQpO2k9dTtyZXR1cm59cngoY1twPj4yXXwwLDEsY1tnPj4yXXwwKTt0PWNbcD4+Ml18MDtvPShjW2c+PjJdfDApPT0xPzE5OTA1OjE5OTI0O3I9Y1tjW2g+PjJdPj4yXXwwO2NbbT4+Ml09Y1soY1soY1tzPj4yXXwwKSsxNj4+Ml18MCkrKGNbZz4+Ml08PDQpPj4yXTtjW20rND4+Ml09bztjW20rOD4+Ml09cjtjeCh0LDM0MDM2LG0pO1FDKGNbcD4+Ml18MCxjW2c+PjJdfDAsMzA4NTQsY1tjW2g+PjJdPj4yXXwwKTtleChjW3A+PjJdfDAsY1tnPj4yXXwwKTtSQyhjW3A+PjJdfDAsY1soY1toPj4yXXwwKSs0ND4+Ml18MCxjW2c+PjJdfDApO214KGNbaz4+Ml18MCwxMzksY1tnPj4yXXwwLDAsMCxjW2NbaD4+Ml0+PjJdfDAsMCl8MDtzPWNbcz4+Ml18MDt0PWNbcT4+Ml18MDtodihzLHQpO2k9dTtyZXR1cm59ZnVuY3Rpb24gd3coYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MDtoPWk7aT1pKzE2fDA7ZD1oKzEyfDA7ZT1oKzh8MDtnPWgrNHwwO2Y9aDtjW2Q+PjJdPWE7Y1tlPj4yXT1iO2NbZz4+Ml09ZHgoY1tkPj4yXXwwKXwwO2lmKGNbZT4+Ml18MClkPU96KGNbZD4+Ml18MCxjW2U+PjJdfDAsY1tlPj4yXXwwLGUpfDA7ZWxzZSBkPTA7Y1tmPj4yXT1kO2lmKCEoY1tnPj4yXXwwKSl7aT1oO3JldHVybn1pZighKChjW2Y+PjJdfDApPj0yfChjW2Y+PjJdfDApPT0wKSl7aT1oO3JldHVybn1TeihjW2c+PjJdfDAsMTAsY1tmPj4yXXwwKXwwO0xoKGNbZz4+Ml18MCxjW2Y+PjJdfDApO2k9aDtyZXR1cm59ZnVuY3Rpb24geHcoZixnLGgsaixrKXtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDtrPWt8MDt2YXIgbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxEPTAsRT0wLEY9MCxHPTAsSD0wLEk9MCxKPTAsSz0wLEw9MCxNPTAsTj0wLE89MCxQPTAsUT0wLFI9MCxTPTAsVD0wLFU9MCxWPTAsVz0wLFg9MCxZPTAsWj0wLF89MCwkPTAsYWE9MCxiYT0wLGNhPTAsZGE9MCxlYT0wLGZhPTAsZ2E9MCxoYT0wLGlhPTAsamE9MCxrYT0wLGxhPTAsbWE9MCxuYT0wLG9hPTAscGE9MCxxYT0wLHJhPTAsc2E9MCx0YT0wLHVhPTAsdmE9MCx3YT0wLHhhPTAseWE9MCx6YT0wLEFhPTAsQmE9MCxDYT0wLERhPTAsRWE9MCxGYT0wLEdhPTAsSGE9MCxJYT0wLEphPTAsS2E9MCxMYT0wLE1hPTAsTmE9MCxPYT0wLFBhPTAsUWE9MCxSYT0wLFNhPTAsVGE9MCxVYT0wLFZhPTAsV2E9MCxYYT0wLFlhPTAsWmE9MCxfYT0wLCRhPTAsYWI9MCxiYj0wLGNiPTAsZGI9MCxlYj0wLGZiPTAsZ2I9MCxoYj0wLGliPTAsamI9MCxrYj0wLGxiPTAsbWI9MCxuYj0wLG9iPTAscGI9MCxxYj0wLHJiPTAsc2I9MCx0Yj0wLHViPTAsdmI9MCx3Yj0wLHhiPTAseWI9MCx6Yj0wLEFiPTAsQmI9MCxDYj0wLERiPTAsRWI9MCxGYj0wLEdiPTAsSGI9MCxJYj0wLEpiPTAsS2I9MCxMYj0wLE1iPTAsTmI9MCxPYj0wLFBiPTAsUWI9MCxSYj0wLFNiPTAsVGI9MCxVYj0wLFZiPTAsV2I9MCxYYj0wLFliPTAsWmI9MCxfYj0wLCRiPTAsYWM9MCxiYz0wLGNjPTAsZGM9MCxlYz0wLGZjPTA7ZmM9aTtpPWkrODE2fDA7SWE9ZmMrMjY0fDA7UWI9ZmMrMjU2fDA7UGI9ZmMrMjQ4fDA7WWE9ZmMrMjQwfDA7emE9ZmMrMjA4fDA7eWE9ZmMrMjAwfDA7eGE9ZmMrMTg0fDA7d2E9ZmMrMTYwfDA7T2I9ZmMrMTQ0fDA7TmI9ZmMrMTI4fDA7dmE9ZmMrMTEyfDA7dWE9ZmMrOTZ8MDtaYj1mYys3MnwwO3RhPWZjKzY0fDA7c2E9ZmMrNTZ8MDtyYT1mYys0OHwwO3I9ZmMrNDB8MDtwPWZjKzMyfDA7YWM9ZmMrODA4fDA7bD1mYys4MDR8MDtzPWZjKzgwMHwwO249ZmMrNzk2fDA7bz1mYys3OTJ8MDtkYz1mYys3ODh8MDtlYz1mYys3ODR8MDtfYT1mYys3ODB8MDttPWZjKzc3NnwwO3E9ZmMrNzYwfDA7JGI9ZmMrNzU2fDA7Vz1mYys3NTJ8MDtxYT1mYys3NDh8MDtYPWZjKzc0NHwwO2thPWZjKzc0MHwwO2NjPWZjKzczNnwwO0VhPWZjKzczMnwwO2JjPWZjKzcyOHwwO0ViPWZjKzcyNHwwO3Y9ZmMrNzIwfDA7bWE9ZmMrNzE2fDA7Xz1mYys3MTJ8MDtGYT1mYys3MDh8MDskPWZjKzcwNHwwO0I9ZmMrNzAwfDA7Uz1mYys2OTZ8MDtPYT1mYys2OTJ8MDtCYT1mYys2ODh8MDtFPWZjKzY4NHwwO2ZhPWZjKzY4MHwwO1Q9ZmMrNjc2fDA7Rj1mYys2NzJ8MDtVPWZjKzY2OHwwO0FhPWZjKzY2NHwwO1k9ZmMrNjYwfDA7Z2E9ZmMrNjU2fDA7UT1mYysyNHwwO2FhPWZjKzY1MnwwO0Q9ZmMrNjQ4fDA7eT1mYys2NDR8MDtNPWZjKzY0MHwwO1I9ZmMrNjM2fDA7ej1mYys2MzJ8MDtuYT1mYys2Mjh8MDtvYT1mYys2MjR8MDtwYT1mYysxNnwwO2xhPWZjKzYyMHwwO1A9ZmMrNjE2fDA7RGE9ZmMrNjEyfDA7WWI9ZmMrNjA4fDA7VGI9ZmMrNjA0fDA7VWI9ZmMrNjAwfDA7VmI9ZmMrNTk2fDA7V2I9ZmMrNTkyfDA7WGI9ZmMrNTg4fDA7ZGE9ZmMrNTg0fDA7SD1mYys1ODB8MDtoYT1mYys1NzZ8MDt6Yj1mYys1NzJ8MDtHYj1mYys1Njh8MDtmYj1mYys1NjR8MDt2Yj1mYys1NjB8MDtlYj1mYys4MTJ8MDtlYT1mYys1NTZ8MDtpYT1mYys1NTJ8MDtJPWZjKzU0OHwwO0E9ZmMrNTM2fDA7Sj1mYys1MzJ8MDtLPWZjKzUyOHwwO1o9ZmMrNTI0fDA7YmE9ZmMrNTIwfDA7Y2E9ZmMrNTE2fDA7amE9ZmMrNTEyfDA7TD1mYys1MDh8MDtWPWZjKzUwNHwwO1JhPWZjKzUwMHwwO1VhPWZjKzQ5NnwwO1RhPWZjKzQ5MnwwO1NhPWZjKzQ4OHwwO01hPWZjKzQ4NHwwO1BhPWZjKzQ4MHwwO1FhPWZjKzQ3NnwwO1phPWZjKzQ3MnwwO1dhPWZjKzQ2OHwwO1ZhPWZjKzQ2NHwwO1hhPWZjKzQ2MHwwO0thPWZjKzQ1NnwwO0phPWZjKzQ1MnwwO0xhPWZjKzQ0OHwwO05hPWZjKzQ0NHwwO2diPWZjKzQ0MHwwO2xiPWZjKzQzNnwwO2JiPWZjKzQzMnwwO3diPWZjKzQyOHwwO2tiPWZjKzQyNHwwO1JiPWZjKzQyMHwwO0tiPWZjKzQxNnwwO2FiPWZjKzQxMnwwO2RiPWZjKzQwOHwwO3hiPWZjKzQwNHwwO3liPWZjKzQwMHwwO0hiPWZjKzM5NnwwO0FiPWZjKzM5MnwwO0liPWZjKzM4OHwwO0JiPWZjKzM4NHwwO0piPWZjKzM4MHwwO0NiPWZjKzM3NnwwO0RiPWZjKzM3MnwwO0ZiPWZjKzM2OHwwO3ViPWZjKzM2NHwwO2liPWZjKzM2MHwwO2piPWZjKzM1NnwwO0xiPWZjKzM1MnwwO1NiPWZjKzM0OHwwO21iPWZjKzM0NHwwO29iPWZjKzM0MHwwO25iPWZjKzMzNnwwO3BiPWZjKzMzMnwwO3FiPWZjKzMyOHwwO3JiPWZjKzMyNHwwO2NiPWZjKzMyMHwwO01iPWZjKzMxNnwwO3NiPWZjKzMxMnwwO3RiPWZjKzMwOHwwO2hiPWZjKzMwNHwwOyRhPWZjKzMwMHwwO0hhPWZjKzI5NnwwO089ZmMrMjkyfDA7dz1mYysyODh8MDt4PWZjKzI4NHwwO0NhPWZjKzI4MHwwO0dhPWZjKzI3NnwwO049ZmMrMjcyfDA7Rz1mYysyNjh8MDt0PWZjKzh8MDt1PWZjO2NbYWM+PjJdPWY7Y1tsPj4yXT1nO2Nbcz4+Ml09aDtjW24+PjJdPWo7Y1tvPj4yXT1rO2NbZGM+PjJdPTA7Y1tlYz4+Ml09MDtjW19hPj4yXT0wO2NbWD4+Ml09MDtjW2NjPj4yXT1jW2NbYWM+PjJdPj4yXTtjW2JjPj4yXT1keChjW2FjPj4yXXwwKXwwO2lmKCEoY1tiYz4+Ml18MCkpe2k9ZmM7cmV0dXJufWlDKGNbYmM+PjJdfDApO2NbKGNbYWM+PjJdfDApKzQ0Pj4yXT0yO2NbJGI+PjJdPU96KGNbYWM+PjJdfDAsY1tsPj4yXXwwLGNbcz4+Ml18MCxtKXwwO2lmKChjWyRiPj4yXXwwKTwwKXtpPWZjO3JldHVybn1jW0VhPj4yXT0oY1soY1tjYz4+Ml18MCkrMTY+PjJdfDApKyhjWyRiPj4yXTw8NCk7aWYoKGNbJGI+PjJdfDApPT0xPyh0eChjW2FjPj4yXXwwKXwwKSE9MDowKXtpPWZjO3JldHVybn1jW2RjPj4yXT1UdyhjW2NjPj4yXXwwLGNbbT4+Ml18MCl8MDtpZighKGNbZGM+PjJdfDApKXtpPWZjO3JldHVybn1rPWNbY2M+PjJdfDA7bD1jW24+PjJdfDA7aWYoY1tvPj4yXXwwKXtjW3A+PjJdPWw7Y1tlYz4+Ml09R2goaywzMjEwMyxwKXwwfWVsc2UgY1tlYz4+Ml09VHcoayxsKXwwO2lmKChjWyhjW3M+PjJdfDApKzQ+PjJdfDApPj4+MD4wKWw9Y1tjW0VhPj4yXT4+Ml18MDtlbHNlIGw9MDtjW19hPj4yXT1sO2E6ZG8gaWYoIShheChjW2FjPj4yXXwwLDE5LGNbZGM+PjJdfDAsY1tlYz4+Ml18MCxjW19hPj4yXXwwKXwwKSl7Y1txPj4yXT0wO2NbcSs0Pj4yXT1jW2RjPj4yXTtjW3ErOD4+Ml09Y1tlYz4+Ml07Y1txKzEyPj4yXT0wO2NbKGNbY2M+PjJdfDApKzM4MCs4Pj4yXT0wO2Nba2E+PjJdPUdmKGNbY2M+PjJdfDAsY1tfYT4+Ml18MCwxNCxxKXwwO2lmKCEoY1trYT4+Ml18MCkpe2pDKGNbYmM+PjJdfDAsMzIxMDcsY1txPj4yXXwwKTtLZChjW3E+PjJdfDApO2JyZWFrfWlmKChjW2thPj4yXXwwKSE9MTIpe2lmKGNbcT4+Ml18MCl7YmM9Y1thYz4+Ml18MDtjW3I+PjJdPWNbcT4+Ml07RWgoYmMsMTgzOTEscik7S2QoY1txPj4yXXwwKX1iYz0oY1thYz4+Ml18MCkrMzZ8MDtjW2JjPj4yXT0oY1tiYz4+Ml18MCkrMTtjWyhjW2FjPj4yXXwwKSsxMj4+Ml09Y1trYT4+Ml07YnJlYWt9Y1tXPj4yXT0wO2NbcWE+PjJdPTU3O3doaWxlKDEpe2lmKChjW1c+PjJdfDApPihjW3FhPj4yXXwwKSlicmVhaztjW1g+PjJdPSgoY1tXPj4yXXwwKSsoY1txYT4+Ml18MCl8MCkvMnwwO2Nba2E+PjJdPVRkKGNbZGM+PjJdfDAsY1s0NDc2KygoY1tYPj4yXXwwKSoxMnwwKT4+Ml18MCl8MDtpZighKGNba2E+PjJdfDApKWJyZWFrO2w9Y1tYPj4yXXwwO2lmKChjW2thPj4yXXwwKTwwKXtjW3FhPj4yXT1sLTE7Y29udGludWV9ZWxzZXtjW1c+PjJdPWwrMTtjb250aW51ZX19aWYoKGNbVz4+Ml18MCk8PShjW3FhPj4yXXwwKSl7Y1tFYj4+Ml09NDQ3NisoKGNbWD4+Ml18MCkqMTJ8MCk7aWYoKGRbKGNbRWI+PjJdfDApKzU+PjBdJjF8MCkhPTA/KEt6KGNbYWM+PjJdfDApfDApIT0wOjApYnJlYWs7ZG8gc3dpdGNoKGRbKGNbRWI+PjJdfDApKzQ+PjBdfDApe2Nhc2UgMTE6e0xoKGNbYmM+PjJdfDAsY1skYj4+Ml18MCk7aWYoY1tlYz4+Ml18MCl7Y1ttYT4+Ml09RGooUGkoY1tlYz4+Ml18MCl8MCl8MDtyeChjW2FjPj4yXXwwLDAsY1skYj4+Ml18MCk7angoY1tiYz4+Ml18MCwxMDIsY1skYj4+Ml18MCwzLGNbbWE+PjJdfDApfDA7Y1soY1soY1tFYT4+Ml18MCkrMTI+PjJdfDApKzgwPj4yXT1jW21hPj4yXTtFaihjWyhjW0VhPj4yXXwwKSs0Pj4yXXwwLGNbKGNbKGNbRWE+PjJdfDApKzEyPj4yXXwwKSs4MD4+Ml18MCl8MDticmVhayBhfWVsc2V7a0MoY1tiYz4+Ml18MCwzMjExNCk7YWM9KGNbYWM+PjJdfDApKzQ0fDA7Y1thYz4+Ml09KGNbYWM+PjJdfDApKzI7Y1t2Pj4yXT1LaChjW2JjPj4yXXwwLDksMzIxMjUsMCl8MDtjWyhjW3Y+PjJdfDApKzQ+PjJdPWNbJGI+PjJdO2NbKGNbdj4+Ml18MCkrMjArND4+Ml09Y1skYj4+Ml07Y1soY1t2Pj4yXXwwKSsxMjArND4+Ml09LTJlMzticmVhayBhfX1jYXNlIDI1OntjW18+PjJdPWNbKGNbRWE+PjJdfDApKzQ+PjJdO2lmKGNbZWM+PjJdfDApe2JjPVBpKGNbZWM+PjJdfDApfDA7Y1soY1tjYz4+Ml18MCkrODA+PjJdPWJjO2lmKDchPShDaShjW18+PjJdfDAsY1soY1tjYz4+Ml18MCkrODA+PjJdfDAsLTEsMCl8MCkpYnJlYWsgYTttaChjW2NjPj4yXXwwKTticmVhayBhfWlmKGNbXz4+Ml18MClsPXNnKGNbXz4+Ml18MCl8MDtlbHNlIGw9MDtjW0ZhPj4yXT1sO2FjPWNbRmE+PjJdfDA7bEMoY1tiYz4+Ml18MCwzMjE2MSxhYywoKGFjfDApPDApPDwzMT4+MzEpO2JyZWFrIGF9Y2FzZSAyNjp7Y1skPj4yXT1jWyhjW0VhPj4yXXwwKSs0Pj4yXTtjW0I+PjJdPS0xO2lmKGNbZWM+PjJdfDApY1tCPj4yXT0oR2koY1tlYz4+Ml18MCwwKXwwKSYyNTU7YjpkbyBpZigoY1tCPj4yXXwwKT49MD8oY1soY1tzPj4yXXwwKSs0Pj4yXXwwKT09MDowKXtjW1M+PjJdPTA7d2hpbGUoMSl7aWYoKGNbUz4+Ml18MCk+PShjWyhjW2NjPj4yXXwwKSsyMD4+Ml18MCkpYnJlYWsgYjtWQihjWyhjWyhjW2NjPj4yXXwwKSsxNj4+Ml18MCkrKGNbUz4+Ml08PDQpKzQ+PjJdfDAsY1tCPj4yXXwwKXwwO2NbUz4+Ml09KGNbUz4+Ml18MCkrMX19d2hpbGUoMCk7Y1tCPj4yXT1WQihjWyQ+PjJdfDAsY1tCPj4yXXwwKXwwO2FjPWNbQj4+Ml18MDtsQyhjW2JjPj4yXXwwLDMyMTcxLGFjLCgoYWN8MCk8MCk8PDMxPj4zMSk7YnJlYWsgYX1jYXNlIDIzOntzeChjW2FjPj4yXXwwLGNbJGI+PjJdfDApO2w9KGNbYWM+PjJdfDApKzQ0fDA7bT0oY1tsPj4yXXwwKSsxfDA7Y1tsPj4yXT1tO2NbT2E+PjJdPW07bT1jW2JjPj4yXXwwO2w9Y1skYj4+Ml18MDtrPWNbT2E+PjJdfDA7aWYoKGRbMTc2MTMrKGRbY1tkYz4+Ml0+PjBdfDApPj4wXXwwKT09MTEyKWl4KG0sMTU4LGwsayl8MDtlbHNlIGp4KG0sMTU5LGwsayxEaihQaShjW2VjPj4yXXwwKXwwKXwwKXwwO2l4KGNbYmM+PjJdfDAsODcsY1tPYT4+Ml18MCwxKXwwO21DKGNbYmM+PjJdfDAsMSk7bkMoY1tiYz4+Ml18MCwwLDAsY1tkYz4+Ml18MCwtMSl8MDticmVhayBhfWNhc2UgMjI6e2NbQmE+PjJdPTMyMTg1O2NbRT4+Ml09b0MoY1tlYz4+Ml18MCl8MDtpZigoY1tFPj4yXXwwKT09LTE/KGNbKGNbcz4+Ml18MCkrND4+Ml18MCk9PTA6MCljW0U+PjJdPWRbKGNbY2M+PjJdfDApKzcxPj4wXTtlbHNle2lmKCEoY1soY1tzPj4yXXwwKSs0Pj4yXXwwKSl7Y1tUPj4yXT0yO3doaWxlKDEpe2lmKChjW1Q+PjJdfDApPj0oY1soY1tjYz4+Ml18MCkrMjA+PjJdfDApKWJyZWFrO2NbZmE+PjJdPVBmKGNbKGNbKGNbY2M+PjJdfDApKzE2Pj4yXXwwKSsoY1tUPj4yXTw8NCkrND4+Ml18MCl8MDtVQihjW2ZhPj4yXXwwLGNbRT4+Ml18MCl8MDtjW1Q+PjJdPShjW1Q+PjJdfDApKzF9YVsoY1tjYz4+Ml18MCkrNzE+PjBdPWNbRT4+Ml19Y1tmYT4+Ml09UGYoY1soY1tFYT4+Ml18MCkrND4+Ml18MCl8MDtjW0U+PjJdPVVCKGNbZmE+PjJdfDAsY1tFPj4yXXwwKXwwfWlmKChjW0U+PjJdfDApPT0xKWNbQmE+PjJdPTMyMTkyO2pDKGNbYmM+PjJdfDAsMzIyMDIsY1tCYT4+Ml18MCk7YnJlYWsgYX1jYXNlIDE5OntrQyhjW2JjPj4yXXwwLDMyMjE1KTtpZihjW2VjPj4yXXwwKXtjW1k+PjJdPUpmKGNbZWM+PjJdfDApfDA7Y1tGPj4yXT0wO3doaWxlKDEpe2FjPXBDKGNbRj4+Ml18MCl8MDtjW0FhPj4yXT1hYztpZighYWMpYnJlYWs7aWYoISh6ZChjW2VjPj4yXXwwLGNbQWE+PjJdfDAsY1tZPj4yXXwwKXwwKSlicmVhaztjW0Y+PjJdPShjW0Y+PjJdfDApKzF9aWYoIShjW0FhPj4yXXwwKSljW0Y+PjJdPS0xfWVsc2UgY1tGPj4yXT0tMTtpZigoY1tGPj4yXXwwKT09LTE/KGNbKGNbcz4+Ml18MCkrND4+Ml18MCk9PTA6MCl7Y1skYj4+Ml09MDtjWyhjW3M+PjJdfDApKzQ+PjJdPTF9Y1tVPj4yXT0oY1soY1tjYz4+Ml18MCkrMjA+PjJdfDApLTE7d2hpbGUoMSl7aWYoKGNbVT4+Ml18MCk8MClicmVhaztkbyBpZihjWyhjWyhjW2NjPj4yXXwwKSsxNj4+Ml18MCkrKGNbVT4+Ml08PDQpKzQ+PjJdfDApe2lmKChjW1U+PjJdfDApIT0oY1skYj4+Ml18MCk/KGNbKGNbcz4+Ml18MCkrND4+Ml18MCkhPTA6MClicmVhaztMaChjW2JjPj4yXXwwLGNbVT4+Ml18MCk7angoY1tiYz4+Ml18MCw5LGNbVT4+Ml18MCwxLGNbRj4+Ml18MCl8MH13aGlsZSgwKTtjW1U+PjJdPShjW1U+PjJdfDApKy0xfWl4KGNbYmM+PjJdfDAsODcsMSwxKXwwO2JyZWFrIGF9Y2FzZSAyMDp7Y1tnYT4+Ml09UGYoY1soY1tFYT4+Ml18MCkrND4+Ml18MCl8MDthYz1RO2NbYWM+PjJdPS0yO2NbYWMrND4+Ml09LTE7aWYoKGNbZWM+PjJdfDApIT0wPyhIaShjW2VjPj4yXXwwLFEpfDAsYWM9USwkYj1jW2FjKzQ+PjJdfDAsKCRifDApPC0xfCgkYnwwKT09LTEmKGNbYWM+PjJdfDApPj4+MDw0Mjk0OTY3Mjk1KTowKXthYz1RO2NbYWM+PjJdPS0xO2NbYWMrND4+Ml09LTF9JGI9UTskYj1xQyhjW2dhPj4yXXwwLGNbJGI+PjJdfDAsY1skYis0Pj4yXXwwKXwwO2FjPVE7Y1thYz4+Ml09JGI7Y1thYys0Pj4yXT1DO2FjPVE7bEMoY1tiYz4+Ml18MCwzMjIyOCxjW2FjPj4yXXwwLGNbYWMrND4+Ml18MCk7YnJlYWsgYX1jYXNlIDE6e2NbYWE+PjJdPWNbKGNbRWE+PjJdfDApKzQ+PjJdO2lmKCEoY1tlYz4+Ml18MCkpe2FjPWNbYmM+PjJdfDA7YmM9ckMoY1thYT4+Ml18MCl8MDtsQyhhYywzMjI0NyxiYywoKGJjfDApPDApPDwzMT4+MzEpO2JyZWFrIGF9Y1tEPj4yXT1zQyhjW2VjPj4yXXwwKXwwO2FbKGNbY2M+PjJdfDApKzcyPj4wXT1jW0Q+PjJdO2Nba2E+PjJdPXRDKGNbYWE+PjJdfDAsY1tEPj4yXXwwKXwwO2lmKGNba2E+PjJdfDApYnJlYWsgYTtpZighKChjW0Q+PjJdfDApPT0xfChjW0Q+PjJdfDApPT0yKSlicmVhayBhO2NbTT4+Ml09d3goY1tiYz4+Ml18MCl8MDtjW3k+PjJdPUtoKGNbYmM+PjJdfDAsNSwzMjI1OSwwKXwwO2NbKGNbeT4+Ml18MCkrND4+Ml09Y1skYj4+Ml07Y1soY1t5Pj4yXXwwKSsyMCs0Pj4yXT1jWyRiPj4yXTtjWyhjW3k+PjJdfDApKzQwKzg+PjJdPShjW00+PjJdfDApKzQ7Y1soY1t5Pj4yXXwwKSs4MCs0Pj4yXT1jWyRiPj4yXTtjWyhjW3k+PjJdfDApKzgwKzEyPj4yXT0oY1tEPj4yXXwwKS0xO0xoKGNbYmM+PjJdfDAsY1skYj4+Ml18MCk7YnJlYWsgYX1jYXNlIDE1OntpZighKChjW2VjPj4yXXwwKSE9MD8oX2I9KFFpKGNbZWM+PjJdfDAsUil8MCk9PTAsIShfYnwoY1tSPj4yXXwwKTw9MCkpOjApKWNbUj4+Ml09MjE0NzQ4MzY0NztyeChjW2FjPj4yXXwwLDAsY1skYj4+Ml18MCk7aXgoY1tiYz4+Ml18MCw3NixjW1I+PjJdfDAsMSl8MDtjW3o+PjJdPVN6KGNbYmM+PjJdfDAsNjksY1skYj4+Ml18MCl8MDtTeihjW2JjPj4yXXwwLDg3LDEpfDA7aXgoY1tiYz4+Ml18MCw5MSwxLC0xKXwwO2l4KGNbYmM+PjJdfDAsNjYsMSxjW3o+PjJdfDApfDA7WnooY1tiYz4+Ml18MCxjW3o+PjJdfDApO2JyZWFrIGF9Y2FzZSA0OmlmKGNbZWM+PjJdfDApe2NbbmE+PjJdPVBpKGNbZWM+PjJdfDApfDA7Y1soY1soY1tFYT4+Ml18MCkrMTI+PjJdfDApKzgwPj4yXT1jW25hPj4yXTtFaihjWyhjW0VhPj4yXXwwKSs0Pj4yXXwwLGNbKGNbKGNbRWE+PjJdfDApKzEyPj4yXXwwKSs4MD4+Ml18MCl8MDticmVhayBhfWVsc2V7YWM9Y1soY1soY1tFYT4+Ml18MCkrMTI+PjJdfDApKzgwPj4yXXwwO2xDKGNbYmM+PjJdfDAsMzIxMTQsYWMsKChhY3wwKTwwKTw8MzE+PjMxKTticmVhayBhfWNhc2UgNTp7aWYoIShjW2VjPj4yXXwwKSl7az1jW2JjPj4yXXwwO2lmKCEoY1soY1tjYz4+Ml18MCkrMjQ+PjJdJjMyKSlsPTA7ZWxzZSBsPXVDKGNbKGNbRWE+PjJdfDApKzQ+PjJdfDAsMCl8MDtsQyhrLDMyMjc5LGwsKChsfDApPDApPDwzMT4+MzEpO2JyZWFrIGF9Y1tvYT4+Ml09MTtpZihRaShjW2VjPj4yXXwwLG9hKXwwKXVDKGNbKGNbRWE+PjJdfDApKzQ+PjJdfDAsY1tvYT4+Ml18MCl8MDtiYz0oR2koY1tlYz4+Ml18MCwoY1tvYT4+Ml18MCkhPTAmMjU1KXwwKTw8MjQ+PjI0IT0wO2w9KGNbY2M+PjJdfDApKzI0fDA7az1jW2w+PjJdfDA7aWYoYmMpY1tsPj4yXT1rfDMyO2Vsc2UgY1tsPj4yXT1rJi0zMzt2QyhjW2NjPj4yXXwwKTticmVhayBhfWNhc2UgMjQ6eyRiPXBhO2NbJGI+PjJdPTA7Y1skYis0Pj4yXT0wO2Nba2E+PjJdPTA7aWYoIShjW2thPj4yXXwwKSl7YWM9cGE7bEMoY1tiYz4+Ml18MCwzMjI5MSxjW2FjPj4yXXwwLGNbYWMrND4+Ml18MCk7YnJlYWsgYX1pZigoY1trYT4+Ml18MCk9PTEyKWJyZWFrIGE7YmM9KGNbYWM+PjJdfDApKzM2fDA7Y1tiYz4+Ml09KGNbYmM+PjJdfDApKzE7Y1soY1thYz4+Ml18MCkrMTI+PjJdPWNba2E+PjJdO2JyZWFrIGF9Y2FzZSAzMjppZihjW2VjPj4yXXwwKXt3QyhjW2FjPj4yXXwwLGNbZWM+PjJdfDApfDA7YnJlYWsgYX1lbHNle2xDKGNbYmM+PjJdfDAsMzIzMDEsZFsoY1tjYz4+Ml18MCkrNjg+PjBdfDAsMCk7YnJlYWsgYX1jYXNlIDMzOntpZighKGNbZWM+PjJdfDApKXtqQyhjW2JjPj4yXXwwLDMyMzEyLGNbMjQzXXwwKTticmVhayBhfWlmKChhW2NbZWM+PjJdPj4wXXwwKSE9MD8oY1trYT4+Ml09WXIoY1tjW2NjPj4yXT4+Ml18MCxjW2VjPj4yXXwwLDEsbGEpfDAsKGNba2E+PjJdfDApIT0wfChjW2xhPj4yXXwwKT09MCk6MCl7RWgoY1thYz4+Ml18MCwzMjMzMyxyYSk7YnJlYWsgYX1pZigoZFsoY1tjYz4+Ml18MCkrNjg+PjBdfDApPD0xKXhDKGNbYWM+PjJdfDApfDA7S2QoY1syNDNdfDApO2lmKGFbY1tlYz4+Ml0+PjBdfDApe2Nbc2E+PjJdPWNbZWM+PjJdO2NbMjQzXT1PZCgxODM5MSxzYSl8MDticmVhayBhfWVsc2V7Y1syNDNdPTA7YnJlYWsgYX19Y2FzZSAzMDp7aWYoIShjW2VjPj4yXXwwKSl7YWM9KGRbKGNbRWE+PjJdfDApKzg+PjBdfDApLTF8MDtsQyhjW2JjPj4yXXwwLDMyMzU4LGFjLCgoYWN8MCk8MCk8PDMxPj4zMSk7YnJlYWsgYX1pZihhWyhjW2NjPj4yXXwwKSs2Nz4+MF18MCl7YmM9KChPaShjW2VjPj4yXXwwLDAsMSl8MCkmMjU1KSsxJjc7Y1tQPj4yXT1iYztjW1A+PjJdPShjW1A+PjJdfDApPT0wPzE6YmM7YVsoY1tFYT4+Ml18MCkrOD4+MF09Y1tQPj4yXTthWyhjW0VhPj4yXXwwKSs5Pj4wXT0xO3ZDKGNbY2M+PjJdfDApO2JyZWFrIGF9ZWxzZXtFaChjW2FjPj4yXXwwLDMyMzcwLHRhKTticmVhayBhfX1jYXNlIDI6e2lmKCEoY1tlYz4+Ml18MCkpe2FjPShjWyhjW2NjPj4yXXwwKSsyND4+Ml0mY1soY1tFYj4+Ml18MCkrOD4+Ml18MCkhPTAmMTtsQyhjW2JjPj4yXXwwLGNbY1tFYj4+Ml0+PjJdfDAsYWMsKChhY3wwKTwwKTw8MzE+PjMxKTticmVhayBhfWNbRGE+PjJdPWNbKGNbRWI+PjJdfDApKzg+PjJdO2lmKCEoZFsoY1tjYz4+Ml18MCkrNjc+PjBdfDApKWNbRGE+PjJdPWNbRGE+PjJdJi01MjQyODk7YWM9KEdpKGNbZWM+PjJdfDAsMCl8MCk8PDI0Pj4yNCE9MDtsPWNbRGE+PjJdfDA7aWYoIWFjKXthYz0oY1tjYz4+Ml18MCkrMjR8MDtjW2FjPj4yXT1jW2FjPj4yXSZ+bDtpZigoY1tEYT4+Ml18MCk9PTMzNTU0NDMyKXthYz0oY1tjYz4+Ml18MCkrNDQ4fDA7Y1thYz4+Ml09MDtjW2FjKzQ+PjJdPTB9fWVsc2V7YWM9KGNbY2M+PjJdfDApKzI0fDA7Y1thYz4+Ml09Y1thYz4+Ml18bH1meChjW2JjPj4yXXwwLDE1MCl8MDt2QyhjW2NjPj4yXXwwKTticmVhayBhfWNhc2UgMzE6e2lmKCEoY1tlYz4+Ml18MCkpYnJlYWsgYTtjW1liPj4yXT1EaChjW2FjPj4yXXwwLDIsY1tlYz4+Ml18MCxjW19hPj4yXXwwKXwwO2lmKCEoY1tZYj4+Ml18MCkpYnJlYWsgYTtjW1ZiPj4yXT0wO2NbWGI+PjJdPUpqKGNbWWI+PjJdfDApfDA7Y1soY1thYz4+Ml18MCkrNDQ+PjJdPTY7c3goY1thYz4+Ml18MCxjWyRiPj4yXXwwKTt5QyhjW2JjPj4yXXwwLDYsNTE3Mik7VHgoY1thYz4+Ml18MCxjW1liPj4yXXwwKXwwO2NbVGI+PjJdPTA7Y1tXYj4+Ml09Y1soY1tZYj4+Ml18MCkrND4+Ml07d2hpbGUoMSl7aWYoKGNbVGI+PjJdfDApPj0oYlsoY1tZYj4+Ml18MCkrMzQ+PjFdfDApKWJyZWFrIGE7aWYoZFsoY1tXYj4+Ml18MCkrMTU+PjBdJjIpY1tWYj4+Ml09KGNbVmI+PjJdfDApKzE7ZWxzZXtjOmRvIGlmKCEoZFsoY1tXYj4+Ml18MCkrMTU+PjBdJjEpKWNbVWI+PjJdPTA7ZWxzZXthYz0oY1tYYj4+Ml18MCk9PTA7Y1tVYj4+Ml09MTtpZihhYylicmVhazt3aGlsZSgxKXtpZigoY1tVYj4+Ml18MCk+KGJbKGNbWWI+PjJdfDApKzM0Pj4xXXwwKSlicmVhayBjO2lmKChiWyhjWyhjW1hiPj4yXXwwKSs0Pj4yXXwwKSsoKGNbVWI+PjJdfDApLTE8PDEpPj4xXXwwKT09KGNbVGI+PjJdfDApKWJyZWFrIGM7Y1tVYj4+Ml09KGNbVWI+PjJdfDApKzF9fXdoaWxlKDApO2w9Y1tiYz4+Ml18MDtrPShjW1RiPj4yXXwwKS0oY1tWYj4+Ml18MCl8MDttPWNbY1tXYj4+Ml0+PjJdfDA7Zz12aShjW1diPj4yXXwwLDE4NDAyKXwwO2g9KGRbKGNbV2I+PjJdfDApKzEyPj4wXXwwKSE9MD8xOjA7aWYoY1soY1tXYj4+Ml18MCkrND4+Ml18MClmPWNbKGNbKGNbV2I+PjJdfDApKzQ+PjJdfDApKzg+PjJdfDA7ZWxzZSBmPTA7YWM9Y1tVYj4+Ml18MDtjW1piPj4yXT1rO2NbWmIrND4+Ml09bTtjW1piKzg+PjJdPWc7Y1taYisxMj4+Ml09aDtjW1piKzE2Pj4yXT1mO2NbWmIrMjA+PjJdPWFjO3pDKGwsMSwzMjQyMyxaYik7aXgoY1tiYz4+Ml18MCw4NywxLDYpfDB9Y1tUYj4+Ml09KGNbVGI+PjJdfDApKzE7Y1tXYj4+Ml09KGNbV2I+PjJdfDApKzE2fX1jYXNlIDI5OntjW2JjPj4yXT1keChjW2FjPj4yXXwwKXwwO2NbKGNbYWM+PjJdfDApKzQ0Pj4yXT00O3N4KGNbYWM+PjJdfDAsY1skYj4+Ml18MCk7eUMoY1tiYz4+Ml18MCw0LDUxOTYpO2NbSD4+Ml09Y1soY1soY1tFYT4+Ml18MCkrMTI+PjJdfDApKzgrOD4+Ml07d2hpbGUoMSl7aWYoIShjW0g+PjJdfDApKWJyZWFrIGE7Y1toYT4+Ml09Y1soY1tIPj4yXXwwKSs4Pj4yXTthYz1jW2JjPj4yXXwwO19iPWJbKGNbaGE+PjJdfDApKzQwPj4xXXwwOyRiPWJbKGNbaGE+PjJdfDApKzM4Pj4xXXwwO2NbdWE+PjJdPWNbY1toYT4+Ml0+PjJdO2NbdWErND4+Ml09MDtjW3VhKzg+PjJdPV9iO2NbdWErMTI+PjJdPSRiO3pDKGFjLDEsMzI0MzAsdWEpO2l4KGNbYmM+PjJdfDAsODcsMSw0KXwwO2NbZGE+PjJdPWNbKGNbaGE+PjJdfDApKzg+PjJdO3doaWxlKDEpe2lmKCEoY1tkYT4+Ml18MCkpYnJlYWs7YWM9Y1tiYz4+Ml18MDtfYj1iWyhjW2RhPj4yXXwwKSs0OD4+MV18MDskYj1iW2NbKGNbZGE+PjJdfDApKzg+PjJdPj4xXXwwO2NbdmE+PjJdPWNbY1tkYT4+Ml0+PjJdO2NbdmErND4+Ml09X2I7Y1t2YSs4Pj4yXT0kYjt6QyhhYywyLDMyNDM1LHZhKTtpeChjW2JjPj4yXXwwLDg3LDEsNCl8MDtjW2RhPj4yXT1jWyhjW2RhPj4yXXwwKSsyMD4+Ml19Y1tIPj4yXT1jW2NbSD4+Ml0+PjJdfX1jYXNlIDE2OntpZighKGNbZWM+PjJdfDApKWJyZWFrIGE7Y1t6Yj4+Ml09S2ooY1tjYz4+Ml18MCxjW2VjPj4yXXwwLGNbX2E+PjJdfDApfDA7aWYoIShjW3piPj4yXXwwKSlicmVhayBhO2w9Y1t6Yj4+Ml18MDtpZihjWyhjW0ViPj4yXXwwKSs4Pj4yXXwwKXtjW3ZiPj4yXT1lW2wrNTI+PjFdO2NbKGNbYWM+PjJdfDApKzQ0Pj4yXT02fWVsc2V7Y1t2Yj4+Ml09ZVtsKzUwPj4xXTtjWyhjW2FjPj4yXXwwKSs0ND4+Ml09M31jW0diPj4yXT1jWyhjW3piPj4yXXwwKSsxMj4+Ml07c3goY1thYz4+Ml18MCxjWyRiPj4yXXwwKTt5QyhjW2JjPj4yXXwwLGNbKGNbYWM+PjJdfDApKzQ0Pj4yXXwwLDUyMTIpO2NbZmI+PjJdPTA7d2hpbGUoMSl7aWYoKGNbZmI+PjJdfDApPj0oY1t2Yj4+Ml18MCkpYnJlYWsgYTtiW2ViPj4xXT1iWyhjWyhjW3piPj4yXXwwKSs0Pj4yXXwwKSsoY1tmYj4+Ml08PDEpPj4xXXwwO2w9Y1tiYz4+Ml18MDtrPWJbZWI+PjFdfDA7aWYoKGJbZWI+PjFdfDApPDApbT0wO2Vsc2UgbT1jWyhjWyhjW0diPj4yXXwwKSs0Pj4yXXwwKSsoYltlYj4+MV08PDQpPj4yXXwwO2NbTmI+PjJdPWNbZmI+PjJdO2NbTmIrND4+Ml09aztjW05iKzg+PjJdPW07ekMobCwxLDMyNDM5LE5iKTtpZihjWyhjW0ViPj4yXXwwKSs4Pj4yXXwwKXskYj1jW2JjPj4yXXwwO1piPWNbKGNbKGNbemI+PjJdfDApKzMyPj4yXXwwKSsoY1tmYj4+Ml08PDIpPj4yXXwwO19iPShjW2ZiPj4yXXwwKTwoZVsoY1t6Yj4+Ml18MCkrNTA+PjFdfDApJjE7Y1tPYj4+Ml09ZFsoY1soY1t6Yj4+Ml18MCkrMjg+PjJdfDApKyhjW2ZiPj4yXXwwKT4+MF07Y1tPYis0Pj4yXT1aYjtjW09iKzg+PjJdPV9iO3pDKCRiLDQsMzI0NDMsT2IpfWl4KGNbYmM+PjJdfDAsODcsMSxjWyhjW2FjPj4yXXwwKSs0ND4+Ml18MCl8MDtjW2ZiPj4yXT0oY1tmYj4+Ml18MCkrMX19Y2FzZSAxNzp7aWYoIShjW2VjPj4yXXwwKSlicmVhayBhO2NbaWE+PjJdPXRpKGNbY2M+PjJdfDAsY1tlYz4+Ml18MCxjW19hPj4yXXwwKXwwO2lmKCEoY1tpYT4+Ml18MCkpYnJlYWsgYTtjW2JjPj4yXT1keChjW2FjPj4yXXwwKXwwO2NbKGNbYWM+PjJdfDApKzQ0Pj4yXT01O3N4KGNbYWM+PjJdfDAsY1skYj4+Ml18MCk7eUMoY1tiYz4+Ml18MCw1LDUyMzYpO2NbZWE+PjJdPWNbKGNbaWE+PjJdfDApKzg+PjJdO2NbST4+Ml09MDt3aGlsZSgxKXtpZighKGNbZWE+PjJdfDApKWJyZWFrIGE7Y1tBPj4yXT1jWzEzMTRdO2NbQSs0Pj4yXT1jWzEzMTVdO2NbQSs4Pj4yXT1jWzEzMTZdO2FjPWNbYmM+PjJdfDA7WWI9Y1tjW2VhPj4yXT4+Ml18MDtaYj0oZFsoY1tlYT4+Ml18MCkrNTQ+PjBdfDApIT0wJjE7X2I9Y1tBKygoYVsoY1tlYT4+Ml18MCkrNTU+PjBdJjMpPDwyKT4+Ml18MDskYj0oY1soY1tlYT4+Ml18MCkrMzY+PjJdfDApIT0wJjE7Y1t3YT4+Ml09Y1tJPj4yXTtjW3dhKzQ+PjJdPVliO2Nbd2ErOD4+Ml09WmI7Y1t3YSsxMj4+Ml09X2I7Y1t3YSsxNj4+Ml09JGI7ekMoYWMsMSwzMjQ0Nyx3YSk7aXgoY1tiYz4+Ml18MCw4NywxLDUpfDA7Y1tlYT4+Ml09Y1soY1tlYT4+Ml18MCkrMjA+PjJdO2NbST4+Ml09KGNbST4+Ml18MCkrMX19Y2FzZSAxMDp7Y1soY1thYz4+Ml18MCkrNDQ+PjJdPTM7eUMoY1tiYz4+Ml18MCwzLDUyNjgpO2NbSj4+Ml09MDt3aGlsZSgxKXtpZigoY1tKPj4yXXwwKT49KGNbKGNbY2M+PjJdfDApKzIwPj4yXXwwKSlicmVhayBhO2lmKGNbKGNbKGNbY2M+PjJdfDApKzE2Pj4yXXwwKSsoY1tKPj4yXTw8NCkrND4+Ml18MCl7YWM9Y1tiYz4+Ml18MDtaYj1jW0o+PjJdfDA7X2I9Y1soY1soY1tjYz4+Ml18MCkrMTY+PjJdfDApKyhjW0o+PjJdPDw0KT4+Ml18MDskYj1JaShjWyhjWyhjW2NjPj4yXXwwKSsxNj4+Ml18MCkrKGNbSj4+Ml08PDQpKzQ+PjJdfDApfDA7Y1t4YT4+Ml09WmI7Y1t4YSs0Pj4yXT1fYjtjW3hhKzg+PjJdPSRiO3pDKGFjLDEsMzI0NTMseGEpO2l4KGNbYmM+PjJdfDAsODcsMSwzKXwwfWNbSj4+Ml09KGNbSj4+Ml18MCkrMX19Y2FzZSA3OntjW0s+PjJdPTA7Y1soY1thYz4+Ml18MCkrNDQ+PjJdPTI7eUMoY1tiYz4+Ml18MCwyLDUyODApO2NbWj4+Ml09Y1soY1tjYz4+Ml18MCkrMzY0Kzg+PjJdO3doaWxlKDEpe2lmKCEoY1taPj4yXXwwKSlicmVhayBhO2NbYmE+PjJdPWNbKGNbWj4+Ml18MCkrOD4+Ml07YWM9Y1tiYz4+Ml18MDtfYj1jW0s+PjJdfDA7Y1tLPj4yXT1fYisxOyRiPWNbY1tiYT4+Ml0+PjJdfDA7Y1t5YT4+Ml09X2I7Y1t5YSs0Pj4yXT0kYjt6QyhhYywxLDMyNDU3LHlhKTtpeChjW2JjPj4yXXwwLDg3LDEsMil8MDtjW1o+PjJdPWNbY1taPj4yXT4+Ml19fWNhc2UgMTQ6e2lmKCEoY1tlYz4+Ml18MCkpYnJlYWsgYTtjW2phPj4yXT10aShjW2NjPj4yXXwwLGNbZWM+PjJdfDAsY1tfYT4+Ml18MCl8MDtpZighKGNbamE+PjJdfDApKWJyZWFrIGE7Y1tiYz4+Ml09ZHgoY1thYz4+Ml18MCl8MDtjW2NhPj4yXT1jWyhjW2phPj4yXXwwKSsxNj4+Ml07aWYoIShjW2NhPj4yXXwwKSlicmVhayBhO2NbTD4+Ml09MDtjWyhjW2FjPj4yXXwwKSs0ND4+Ml09ODtzeChjW2FjPj4yXXwwLGNbJGI+PjJdfDApO3lDKGNbYmM+PjJdfDAsOCw1Mjg4KTt3aGlsZSgxKXtpZighKGNbY2E+PjJdfDApKWJyZWFrIGE7Y1tWPj4yXT0wO3doaWxlKDEpe2lmKChjW1Y+PjJdfDApPj0oY1soY1tjYT4+Ml18MCkrMjA+PjJdfDApKWJyZWFrO2FjPWNbYmM+PjJdfDA7VmI9Y1tMPj4yXXwwO1diPWNbVj4+Ml18MDtYYj1jWyhjW2NhPj4yXXwwKSs4Pj4yXXwwO1liPWNbKGNbKGNbamE+PjJdfDApKzQ+PjJdfDApKyhjWyhjW2NhPj4yXXwwKSszNisoY1tWPj4yXTw8Myk+PjJdPDw0KT4+Ml18MDtaYj1jWyhjW2NhPj4yXXwwKSszNisoY1tWPj4yXTw8MykrND4+Ml18MDtfYj1BQyhhWyhjW2NhPj4yXXwwKSsyNSsxPj4wXXwwKXwwOyRiPUFDKGFbKGNbY2E+PjJdfDApKzI1Pj4wXXwwKXwwO2NbemE+PjJdPVZiO2NbemErND4+Ml09V2I7Y1t6YSs4Pj4yXT1YYjtjW3phKzEyPj4yXT1ZYjtjW3phKzE2Pj4yXT1aYjtjW3phKzIwPj4yXT1fYjtjW3phKzI0Pj4yXT0kYjtjW3phKzI4Pj4yXT0zMjQ2OTt6QyhhYywxLDMyNDYwLHphKTtpeChjW2JjPj4yXXwwLDg3LDEsOCl8MDtjW1Y+PjJdPShjW1Y+PjJdfDApKzF9Y1tMPj4yXT0oY1tMPj4yXXwwKSsxO2NbY2E+PjJdPWNbKGNbY2E+PjJdfDApKzQ+PjJdfX1jYXNlIDEzOntjW1dhPj4yXT0oY1soY1thYz4+Ml18MCkrNDQ+PjJdfDApKzE7WmI9KGNbYWM+PjJdfDApKzQ0fDA7Y1taYj4+Ml09KGNbWmI+PjJdfDApKzQ7WmI9KGNbYWM+PjJdfDApKzQ0fDA7WWI9KGNbWmI+PjJdfDApKzF8MDtjW1piPj4yXT1ZYjtjW1ZhPj4yXT1ZYjtZYj0oY1thYz4+Ml18MCkrNDR8MDtaYj0oY1tZYj4+Ml18MCkrMXwwO2NbWWI+PjJdPVpiO2NbWGE+PjJdPVpiO2NbYmM+PjJdPWR4KGNbYWM+PjJdfDApfDA7eUMoY1tiYz4+Ml18MCw0LDUzMjApO3N4KGNbYWM+PjJdfDAsY1skYj4+Ml18MCk7Y1tRYT4+Ml09Y1soY1soY1soY1tjYz4+Ml18MCkrMTY+PjJdfDApKyhjWyRiPj4yXTw8NCkrMTI+PjJdfDApKzgrOD4+Ml07d2hpbGUoMSl7aWYoIShjW1FhPj4yXXwwKSlicmVhayBhO2lmKGNbZWM+PjJdfDApe2NbVWE+PjJdPURoKGNbYWM+PjJdfDAsMCxjW2VjPj4yXXwwLGNbX2E+PjJdfDApfDA7Y1tRYT4+Ml09MH1lbHNle2NbVWE+PjJdPWNbKGNbUWE+PjJdfDApKzg+PjJdO2NbUWE+PjJdPWNbY1tRYT4+Ml0+PjJdfWlmKCEoY1tVYT4+Ml18MCkpY29udGludWU7aWYoIShjWyhjW1VhPj4yXXwwKSsxNj4+Ml18MCkpY29udGludWU7VHooY1thYz4+Ml18MCxjWyRiPj4yXXwwLGNbKGNbVWE+PjJdfDApKzI4Pj4yXXwwLDAsY1tjW1VhPj4yXT4+Ml18MCk7aWYoKChiWyhjW1VhPj4yXXwwKSszND4+MV18MCkrKGNbWGE+PjJdfDApfDApPihjWyhjW2FjPj4yXXwwKSs0ND4+Ml18MCkpY1soY1thYz4+Ml18MCkrNDQ+PjJdPShiWyhjW1VhPj4yXXwwKSszND4+MV18MCkrKGNbWGE+PjJdfDApO1V6KGNbYWM+PjJdfDAsMCxjWyRiPj4yXXwwLGNbVWE+PjJdfDAsMTA0KTtoeChjW2JjPj4yXXwwLGNbV2E+PjJdfDAsY1tjW1VhPj4yXT4+Ml18MCl8MDtjW01hPj4yXT0xO2NbUmE+PjJdPWNbKGNbVWE+PjJdfDApKzE2Pj4yXTtkOndoaWxlKDEpe2lmKCEoY1tSYT4+Ml18MCkpYnJlYWs7Y1tUYT4+Ml09dGkoY1tjYz4+Ml18MCxjWyhjW1JhPj4yXXwwKSs4Pj4yXXwwLGNbX2E+PjJdfDApfDA7ZG8gaWYoY1tUYT4+Ml18MCl7Y1tTYT4+Ml09MDtUeihjW2FjPj4yXXwwLGNbJGI+PjJdfDAsY1soY1tUYT4+Ml18MCkrMjg+PjJdfDAsMCxjW2NbVGE+PjJdPj4yXXwwKTtjW1phPj4yXT1CQyhjW2FjPj4yXXwwLGNbVGE+PjJdfDAsY1tSYT4+Ml18MCxTYSwwKXwwO2lmKGNbWmE+PjJdfDApe19iPTIwNzticmVhayBkfWlmKCEoY1tTYT4+Ml18MCkpe1V6KGNbYWM+PjJdfDAsY1tNYT4+Ml18MCxjWyRiPj4yXXwwLGNbVGE+PjJdfDAsMTA0KTticmVha31lbHNle2p4KGNbYmM+PjJdfDAsMTA0LGNbTWE+PjJdfDAsY1soY1tTYT4+Ml18MCkrNDQ+PjJdfDAsY1skYj4+Ml18MCl8MDtWeihjW2FjPj4yXXwwLGNbU2E+PjJdfDApO2JyZWFrfX13aGlsZSgwKTtjW01hPj4yXT0oY1tNYT4+Ml18MCkrMTtjW1JhPj4yXT1jWyhjW1JhPj4yXXwwKSs0Pj4yXX1pZigoX2J8MCk9PTIwNyl7X2I9MDtjW1FhPj4yXT0wfWlmKGNbUmE+PjJdfDApYnJlYWsgYTtpZigoY1soY1thYz4+Ml18MCkrNDA+PjJdfDApPChjW01hPj4yXXwwKSljWyhjW2FjPj4yXXwwKSs0MD4+Ml09Y1tNYT4+Ml07Y1tLYT4+Ml09U3ooY1tiYz4+Ml18MCw1NywwKXwwO2NbTWE+PjJdPTE7Y1tSYT4+Ml09Y1soY1tVYT4+Ml18MCkrMTY+PjJdO3doaWxlKDEpe2lmKCEoY1tSYT4+Ml18MCkpYnJlYWs7Y1tUYT4+Ml09dGkoY1tjYz4+Ml18MCxjWyhjW1JhPj4yXXwwKSs4Pj4yXXwwLGNbX2E+PjJdfDApfDA7Y1tTYT4+Ml09MDtjW0xhPj4yXT0wO2lmKGNbVGE+PjJdfDApY1taYT4+Ml09QkMoY1thYz4+Ml18MCxjW1RhPj4yXXwwLGNbUmE+PjJdfDAsU2EsTGEpfDA7Y1tKYT4+Ml09V3ooY1tiYz4+Ml18MCl8MDtkbyBpZigoY1tUYT4+Ml18MCkhPTAmKGNbU2E+PjJdfDApPT0wKXtjW05hPj4yXT1jWyhjW1JhPj4yXXwwKSszNj4+Ml07bD1jW2JjPj4yXXwwO2lmKChjW05hPj4yXXwwKSE9KGJbKGNbVWE+PjJdfDApKzMyPj4xXXwwKSl7angobCw5NiwwLGNbTmE+PjJdfDAsY1tYYT4+Ml18MCl8MDtQQShjW2JjPj4yXXwwLGNbVWE+PjJdfDAsY1tOYT4+Ml18MCxjW1hhPj4yXXwwKTtpeChjW2JjPj4yXXwwLDM0LGNbWGE+PjJdfDAsY1tKYT4+Ml18MCl8MH1lbHNlIGl4KGwsMTIzLDAsY1tYYT4+Ml18MCl8MDtqeChjW2JjPj4yXXwwLDMyLGNbTWE+PjJdfDAsMCxjW1hhPj4yXXwwKXwwO1l6KGNbYmM+PjJdfDAsY1tKYT4+Ml18MCl8MDtaYj1jW2JjPj4yXXwwO1p6KFpiLCh3eChjW2JjPj4yXXwwKXwwKS0yfDApfWVsc2V7Y1tQYT4+Ml09MDt3aGlsZSgxKXtpZigoY1tQYT4+Ml18MCk+PShjWyhjW1JhPj4yXXwwKSsyMD4+Ml18MCkpYnJlYWs7bD1jW1BhPj4yXXwwO2lmKGNbTGE+PjJdfDApbD1jWyhjW0xhPj4yXXwwKSsobDw8Mik+PjJdfDA7ZWxzZSBsPWNbKGNbUmE+PjJdfDApKzM2KyhsPDwzKT4+Ml18MDtOQShjW2JjPj4yXXwwLGNbVWE+PjJdfDAsMCxsLChjW1hhPj4yXXwwKSsoY1tQYT4+Ml18MCl8MCk7aXgoY1tiYz4+Ml18MCwzNCwoY1tYYT4+Ml18MCkrKGNbUGE+PjJdfDApfDAsY1tKYT4+Ml18MCl8MDtjW1BhPj4yXT0oY1tQYT4+Ml18MCkrMX1pZighKGNbVGE+PjJdfDApKWJyZWFrO1ZiPWNbYmM+PjJdfDA7V2I9Y1tYYT4+Ml18MDtYYj1jWyhjW1JhPj4yXXwwKSsyMD4+Ml18MDtZYj1jW1ZhPj4yXXwwO1piPUNDKGNbY2M+PjJdfDAsY1tTYT4+Ml18MCl8MDtteChWYiw5OSxXYixYYixZYixaYixjWyhjW1JhPj4yXXwwKSsyMD4+Ml18MCl8MDtJaChjW2JjPj4yXXwwLDMxLGNbTWE+PjJdfDAsY1tKYT4+Ml18MCxjW1ZhPj4yXXwwLDApfDB9d2hpbGUoMCk7aXgoY1tiYz4+Ml18MCwxMjMsMCwoY1tXYT4+Ml18MCkrMXwwKXwwO1liPWNbYmM+PjJdfDA7WmI9KGNbV2E+PjJdfDApKzJ8MDtYYj0oY1tNYT4+Ml18MCktMXwwO2NbWWE+PjJdPWNbKGNbUmE+PjJdfDApKzg+PjJdO2NbWWErND4+Ml09WGI7ekMoWWIsWmIsMzI0NzQsWWEpO2l4KGNbYmM+PjJdfDAsODcsY1tXYT4+Ml18MCw0KXwwO196KGNbYmM+PjJdfDAsY1tKYT4+Ml18MCk7VGYoY1tjYz4+Ml18MCxjW0xhPj4yXXwwKTtjW01hPj4yXT0oY1tNYT4+Ml18MCkrMTtjW1JhPj4yXT1jWyhjW1JhPj4yXXwwKSs0Pj4yXX1peChjW2JjPj4yXXwwLDcsMCwoY1tLYT4+Ml18MCkrMXwwKXwwO1p6KGNbYmM+PjJdfDAsY1tLYT4+Ml18MCl9fWNhc2UgNjp7aWYoIShjW2VjPj4yXXwwKSlicmVhayBhO2JjPWNbY2M+PjJdfDA7REMoYmMsKEdpKGNbZWM+PjJdfDAsMCl8MCkmMjU1KTticmVhayBhfWNhc2UgMTg6e2Nba2I+PjJdPShkWzE3NjEzKyhkW2NbZGM+PjJdPj4wXXwwKT4+MF18MCk9PTExMyYxO2lmKCEoY1tjW3M+PjJdPj4yXXwwKSljWyRiPj4yXT0tMTtjWyhjW2FjPj4yXXwwKSs0ND4+Ml09NjtrQyhjW2JjPj4yXXwwLDMyNDc3KTtjW3diPj4yXT0xMDA7aWYoKGNbZWM+PjJdfDApIT0wPyhRaShjW2VjPj4yXXwwLHdiKXwwLChjW3diPj4yXXwwKTw9MCk6MCljW3diPj4yXT0xMDA7aXgoY1tiYz4+Ml18MCw3NixjW3diPj4yXXwwLDEpfDA7Y1tnYj4+Ml09MDtlOndoaWxlKDEpe2lmKChjW2diPj4yXXwwKT49KGNbKGNbY2M+PjJdfDApKzIwPj4yXXwwKSlicmVhaztjW2RiPj4yXT0wO2NbeGI+PjJdPTA7aWYoISgoY1skYj4+Ml18MCk+PTA/KGNbZ2I+PjJdfDApIT0oY1skYj4+Ml18MCk6MCkpX2I9MjQyO2Y6ZG8gaWYoKF9ifDApPT0yNDIpe19iPTA7c3goY1thYz4+Ml18MCxjW2diPj4yXXwwKTtjW2JiPj4yXT1TeihjW2JjPj4yXXwwLDY2LDEpfDA7aXgoY1tiYz4+Ml18MCw3NSwwLDApfDA7WnooY1tiYz4+Ml18MCxjW2JiPj4yXXwwKTtjW0tiPj4yXT0oY1soY1soY1tjYz4+Ml18MCkrMTY+PjJdfDApKyhjW2diPj4yXTw8NCkrMTI+PjJdfDApKzg7Y1tkYj4+Ml09MDtjW1JiPj4yXT1jWyhjW0tiPj4yXXwwKSs4Pj4yXTt3aGlsZSgxKXtpZighKGNbUmI+PjJdfDApKWJyZWFrO2NbSGI+PjJdPWNbKGNbUmI+PjJdfDApKzg+PjJdO2lmKCEoZFsoY1tIYj4+Ml18MCkrNDI+PjBdJjMyKSljW2RiPj4yXT0oY1tkYj4+Ml18MCkrMTtjW3liPj4yXT0wO2NbQWI+PjJdPWNbKGNbSGI+PjJdfDApKzg+PjJdO3doaWxlKDEpe2lmKCEoY1tBYj4+Ml18MCkpYnJlYWs7Y1tkYj4+Ml09KGNbZGI+PjJdfDApKzE7Y1tBYj4+Ml09Y1soY1tBYj4+Ml18MCkrMjA+PjJdO2NbeWI+PjJdPShjW3liPj4yXXwwKSsxfWlmKChjW3liPj4yXXwwKT4oY1t4Yj4+Ml18MCkpY1t4Yj4+Ml09Y1t5Yj4+Ml07Y1tSYj4+Ml09Y1tjW1JiPj4yXT4+Ml19Y1thYj4+Ml09VncoY1tjYz4+Ml18MCwoY1tkYj4+Ml18MCkrMTw8MiwwKXwwO2lmKCEoY1thYj4+Ml18MCkpYnJlYWsgZTtjW2RiPj4yXT0wO2NbUmI+PjJdPWNbKGNbS2I+PjJdfDApKzg+PjJdO3doaWxlKDEpe2lmKCEoY1tSYj4+Ml18MCkpYnJlYWs7Y1tJYj4+Ml09Y1soY1tSYj4+Ml18MCkrOD4+Ml07aWYoIShkWyhjW0liPj4yXXwwKSs0Mj4+MF0mMzIpKXtZYj1jWyhjW0liPj4yXXwwKSsyOD4+Ml18MDtaYj1jW2RiPj4yXXwwO2NbZGI+PjJdPVpiKzE7Y1soY1thYj4+Ml18MCkrKFpiPDwyKT4+Ml09WWJ9Y1tCYj4+Ml09Y1soY1tJYj4+Ml18MCkrOD4+Ml07d2hpbGUoMSl7aWYoIShjW0JiPj4yXXwwKSlicmVhaztZYj1jWyhjW0JiPj4yXXwwKSs0ND4+Ml18MDtaYj1jW2RiPj4yXXwwO2NbZGI+PjJdPVpiKzE7Y1soY1thYj4+Ml18MCkrKFpiPDwyKT4+Ml09WWI7Y1tCYj4+Ml09Y1soY1tCYj4+Ml18MCkrMjA+PjJdfWNbUmI+PjJdPWNbY1tSYj4+Ml0+PjJdfWNbKGNbYWI+PjJdfDApKyhjW2RiPj4yXTw8Mik+PjJdPTA7aWYoKGNbKGNbYWM+PjJdfDApKzQ0Pj4yXXwwKT4oOCsoY1t4Yj4+Ml18MCl8MCkpbD1jWyhjW2FjPj4yXXwwKSs0ND4+Ml18MDtlbHNlIGw9OCsoY1t4Yj4+Ml18MCl8MDtjWyhjW2FjPj4yXXwwKSs0ND4+Ml09bDtteChjW2JjPj4yXXwwLDE0MSwyLGNbZGI+PjJdfDAsMSxjW2FiPj4yXXwwLC0xNSl8MDtKaChjW2JjPj4yXXwwLGNbZ2I+PjJdJjI1NSk7Y1tiYj4+Ml09U3ooY1tiYz4+Ml18MCwzNCwyKXwwO1liPWNbYmM+PjJdfDA7WmI9Y1tjYz4+Ml18MDtjW1BiPj4yXT1jWyhjWyhjW2NjPj4yXXwwKSsxNj4+Ml18MCkrKGNbZ2I+PjJdPDw0KT4+Ml07bXgoWWIsOTcsMCwzLDAsR2goWmIsMzI0OTMsUGIpfDAsLTEpfDA7angoY1tiYz4+Ml18MCw4MywyLDQsMSl8MDtqeChjW2JjPj4yXXwwLDUyLDQsMywyKXwwO2l4KGNbYmM+PjJdfDAsODcsMiwxKXwwO1p6KGNbYmM+PjJdfDAsY1tiYj4+Ml18MCk7Y1tSYj4+Ml09Y1soY1tLYj4+Ml18MCkrOD4+Ml07d2hpbGUoMSl7aWYoIShjW1JiPj4yXXwwKSlicmVhayBmO2lmKCEoKGNba2I+PjJdfDApIT0wXjEpKWJyZWFrIGY7Y1tKYj4+Ml09Y1soY1tSYj4+Ml18MCkrOD4+Ml07Y1tGYj4+Ml09MDtjW0xiPj4yXT0tMTtnOmRvIGlmKGNbKGNbSmI+PjJdfDApKzg+PjJdfDApe2lmKCEoZFsoY1tKYj4+Ml18MCkrNDI+PjBdJjMyKSlsPTA7ZWxzZSBsPUpqKGNbSmI+PjJdfDApfDA7Y1tEYj4+Ml09bDtjW2JiPj4yXT1TeihjW2JjPj4yXXwwLDY2LDEpfDA7aXgoY1tiYz4+Ml18MCw3NSwwLDApfDA7WnooY1tiYz4+Ml18MCxjW2JiPj4yXXwwKTtFQyhjW2FjPj4yXXwwKTtGQyhjW2FjPj4yXXwwLGNbSmI+PjJdfDAsMTA0LDAsMSwwLGliLGpiKXwwO2l4KGNbYmM+PjJdfDAsNzYsMCw3KXwwO2NbbGI+PjJdPTA7Y1tDYj4+Ml09Y1soY1tKYj4+Ml18MCkrOD4+Ml07d2hpbGUoMSl7bD1jW2JjPj4yXXwwO2lmKCEoY1tDYj4+Ml18MCkpYnJlYWs7aXgobCw3NiwwLDgrKGNbbGI+PjJdfDApfDApfDA7Y1tDYj4+Ml09Y1soY1tDYj4+Ml18MCkrMjA+PjJdO2NbbGI+PjJdPShjW2xiPj4yXXwwKSsxfWl4KGwsNTcsY1tpYj4+Ml18MCwwKXwwO2NbdWI+PjJdPWl4KGNbYmM+PjJdfDAsOTEsNywxKXwwO2NbbGI+PjJdPTA7d2hpbGUoMSl7aWYoKGNbbGI+PjJdfDApPj0oYlsoY1tKYj4+Ml18MCkrMzQ+PjFdfDApKWJyZWFrO2RvIGlmKChjW2xiPj4yXXwwKSE9KGJbKGNbSmI+PjJdfDApKzMyPj4xXXwwKSl7aWYoIShkWyhjWyhjW0piPj4yXXwwKSs0Pj4yXXwwKSsoY1tsYj4+Ml08PDQpKzEyPj4wXXwwKSlicmVhaztOQShjW2JjPj4yXXwwLGNbSmI+PjJdfDAsY1tpYj4+Ml18MCxjW2xiPj4yXXwwLDMpO0poKGNbYmM+PjJdfDAsLTEyOCk7Y1ttYj4+Ml09U3ooY1tiYz4+Ml18MCwzNSwzKXwwO2l4KGNbYmM+PjJdfDAsOTEsMSwtMSl8MDtaYj1jW2NjPj4yXXwwO1liPWNbKGNbKGNbSmI+PjJdfDApKzQ+PjJdfDApKyhjW2xiPj4yXTw8NCk+PjJdfDA7Y1tRYj4+Ml09Y1tjW0piPj4yXT4+Ml07Y1tRYis0Pj4yXT1ZYjtjW1NiPj4yXT1HaChaYiwzMjUxNyxRYil8MDtteChjW2JjPj4yXXwwLDk3LDAsMywwLGNbU2I+PjJdfDAsLTEpfDA7aXgoY1tiYz4+Ml18MCw4NywzLDEpfDA7Y1tvYj4+Ml09U3ooY1tiYz4+Ml18MCw2NiwxKXwwO2Z4KGNbYmM+PjJdfDAsNzUpfDA7WnooY1tiYz4+Ml18MCxjW21iPj4yXXwwKTtaeihjW2JjPj4yXXwwLGNbb2I+PjJdfDApfXdoaWxlKDApO2NbbGI+PjJdPShjW2xiPj4yXXwwKSsxfWNbbGI+PjJdPTA7Y1tDYj4+Ml09Y1soY1tKYj4+Ml18MCkrOD4+Ml07d2hpbGUoMSl7bD1jW2JjPj4yXXwwO2lmKCEoY1tDYj4+Ml18MCkpYnJlYWs7Y1tjYj4+Ml09V3oobCl8MDtpZigoY1tEYj4+Ml18MCkhPShjW0NiPj4yXXwwKSl7Y1tMYj4+Ml09b0EoY1thYz4+Ml18MCxjW0NiPj4yXXwwLGNbaWI+PjJdfDAsMCwwLHBiLGNbRmI+PjJdfDAsY1tMYj4+Ml18MCl8MDtjW0ZiPj4yXT1jW0NiPj4yXTtpeChjW2JjPj4yXXwwLDkxLDgrKGNbbGI+PjJdfDApfDAsMSl8MDtjW25iPj4yXT1JaChjW2JjPj4yXXwwLDMxLChjW2piPj4yXXwwKSsoY1tsYj4+Ml18MCl8MCxjW2NiPj4yXXwwLGNbTGI+PjJdfDAsZVsoY1tDYj4+Ml18MCkrNTI+PjFdfDApfDA7aXgoY1tiYz4+Ml18MCw5MSwxLC0xKXwwO2h4KGNbYmM+PjJdfDAsMywzMjUzNyl8MDtqeChjW2JjPj4yXXwwLDUyLDcsMywzKXwwO2h4KGNbYmM+PjJdfDAsNCwzMjU0Mil8MDtqeChjW2JjPj4yXXwwLDUyLDQsMywzKXwwO2NbcmI+PjJdPWh4KGNbYmM+PjJdfDAsNCxjW2NbQ2I+PjJdPj4yXXwwKXwwO2p4KGNbYmM+PjJdfDAsNTIsNCwzLDMpfDA7aXgoY1tiYz4+Ml18MCw4NywzLDEpfDA7Y1txYj4+Ml09U3ooY1tiYz4+Ml18MCw2NiwxKXwwO2Z4KGNbYmM+PjJdfDAsNzUpfDA7WnooY1tiYz4+Ml18MCxjW25iPj4yXXwwKTtpZihkWyhjW0NiPj4yXXwwKSs1ND4+MF18MCl7Y1tNYj4+Ml09V3ooY1tiYz4+Ml18MCl8MDtjW3RiPj4yXT0wO3doaWxlKDEpe2lmKChjW3RiPj4yXXwwKT49KGVbKGNbQ2I+PjJdfDApKzUwPj4xXXwwKSlicmVhaztjW2hiPj4yXT1iWyhjWyhjW0NiPj4yXXwwKSs0Pj4yXXwwKSsoY1t0Yj4+Ml08PDEpPj4xXTtpZighKChjW2hiPj4yXXwwKT49MD8oZFsoY1soY1tKYj4+Ml18MCkrND4+Ml18MCkrKGNbaGI+PjJdPDw0KSsxMj4+MF18MCkhPTA6MCkpaXgoY1tiYz4+Ml18MCwzNCwoY1tMYj4+Ml18MCkrKGNbdGI+PjJdfDApfDAsY1tNYj4+Ml18MCl8MDtjW3RiPj4yXT0oY1t0Yj4+Ml18MCkrMX1jW3NiPj4yXT1TeihjW2JjPj4yXXwwLDcsKGNbamI+PjJdfDApKyhjW2xiPj4yXXwwKXwwKXwwO1l6KGNbYmM+PjJdfDAsY1tNYj4+Ml18MCl8MDtaeihjW2JjPj4yXXwwLGNbc2I+PjJdfDApO0loKGNbYmM+PjJdfDAsNTksKGNbamI+PjJdfDApKyhjW2xiPj4yXXwwKXwwLGNbTWI+PjJdfDAsY1tMYj4+Ml18MCxlWyhjW0NiPj4yXXwwKSs1MD4+MV18MCl8MDtpeChjW2JjPj4yXXwwLDkxLDEsLTEpfDA7aHgoY1tiYz4+Ml18MCwzLDMyNTYzKXwwO1l6KGNbYmM+PjJdfDAsY1tyYj4+Ml18MCl8MDtfeihjW2JjPj4yXXwwLGNbTWI+PjJdfDApfVp6KGNbYmM+PjJdfDAsY1txYj4+Ml18MCk7cEEoY1thYz4+Ml18MCxjW3BiPj4yXXwwKX1jW0NiPj4yXT1jWyhjW0NiPj4yXXwwKSsyMD4+Ml07Y1tsYj4+Ml09KGNbbGI+PjJdfDApKzF9aXgobCw3LGNbaWI+PjJdfDAsY1t1Yj4+Ml18MCl8MDtaeihjW2JjPj4yXXwwLChjW3ViPj4yXXwwKS0xfDApO2h4KGNbYmM+PjJdfDAsMiwzMjU5MCl8MDtjW2xiPj4yXT0wO2NbQ2I+PjJdPWNbKGNbSmI+PjJdfDApKzg+PjJdO3doaWxlKDEpe2lmKCEoY1tDYj4+Ml18MCkpYnJlYWsgZztpZigoY1tEYj4+Ml18MCkhPShjW0NiPj4yXXwwKSl7Y1tiYj4+Ml09d3goY1tiYz4+Ml18MCl8MDtpeChjW2JjPj4yXXwwLDY2LDEsKGNbYmI+PjJdfDApKzJ8MCl8MDtpeChjW2JjPj4yXXwwLDc1LDAsMCl8MDtpeChjW2JjPj4yXXwwLDEwMCwoY1tqYj4+Ml18MCkrKGNbbGI+PjJdfDApfDAsMyl8MDtqeChjW2JjPj4yXXwwLDM3LDgrKGNbbGI+PjJdfDApfDAsKGNbYmI+PjJdfDApKzh8MCwzKXwwO0poKGNbYmM+PjJdfDAsLTExMik7aXgoY1tiYz4+Ml18MCw5MSwxLC0xKXwwO2h4KGNbYmM+PjJdfDAsMyxjW2NbQ2I+PjJdPj4yXXwwKXwwO2p4KGNbYmM+PjJdfDAsNTIsMywyLDcpfDA7aXgoY1tiYz4+Ml18MCw4Nyw3LDEpfDB9Y1tDYj4+Ml09Y1soY1tDYj4+Ml18MCkrMjA+PjJdO2NbbGI+PjJdPShjW2xiPj4yXXwwKSsxfX13aGlsZSgwKTtjW1JiPj4yXT1jW2NbUmI+PjJdPj4yXX19d2hpbGUoMCk7Y1tnYj4+Ml09KGNbZ2I+PjJdfDApKzF9Y1skYT4+Ml09S2goY1tiYz4+Ml18MCw0LDMyNjE5LDApfDA7aWYoIShjWyRhPj4yXXwwKSlicmVhayBhO2NbKGNbJGE+PjJdfDApKzg+PjJdPTAtKGNbd2I+PjJdfDApO2FbKGNbJGE+PjJdfDApKzQwKzE+PjBdPS0yO2NbKGNbJGE+PjJdfDApKzQwKzE2Pj4yXT0zMjYzNTticmVhayBhfWNhc2UgMTI6e2lmKCEoY1tlYz4+Ml18MCkpe2lmKEt6KGNbYWM+PjJdfDApfDApYnJlYWsgYTtqQyhjW2JjPj4yXXwwLDMyNjM4LGNbNTMzNisoZFsoY1tjW2FjPj4yXT4+Ml18MCkrNjY+PjBdPDwzKT4+Ml18MCk7YnJlYWsgYX1pZigoZVsoY1soY1soY1tjYz4+Ml18MCkrMTY+PjJdfDApKzEyPj4yXXwwKSs3OD4+MV0mMXwwKT09MT8oZVsoY1soY1soY1tjYz4+Ml18MCkrMTY+PjJdfDApKzEyPj4yXXwwKSs3OD4+MV0mNHwwKSE9NDowKWJyZWFrIGE7Y1tIYT4+Ml09NTMzNjt3aGlsZSgxKXtpZighKGNbY1tIYT4+Ml0+PjJdfDApKWJyZWFrO2JjPTA9PShpZyhjW2VjPj4yXXwwLGNbY1tIYT4+Ml0+PjJdfDApfDApO2w9Y1tIYT4+Ml18MDtpZihiYyl7X2I9MzA5O2JyZWFrfWNbSGE+PjJdPWwrOH1pZigoX2J8MCk9PTMwOSl7aWYoZFtsKzQ+PjBdfDApbD1kWyhjW0hhPj4yXXwwKSs0Pj4wXXwwO2Vsc2UgbD0oYVs5NjhdfDApPT0wPzM6MjtiYz1sJjI1NTthWyhjW2NjPj4yXXwwKSs2Nj4+MF09YmM7YVsoY1soY1soY1tjYz4+Ml18MCkrMTY+PjJdfDApKzEyPj4yXXwwKSs3Nz4+MF09YmN9aWYoY1tjW0hhPj4yXT4+Ml18MClicmVhayBhO2JjPWNbYWM+PjJdfDA7Y1tJYT4+Ml09Y1tlYz4+Ml07RWgoYmMsMzI2NDcsSWEpO2JyZWFrIGF9Y2FzZSAwOntjW08+PjJdPWNbKGNbRWI+PjJdfDApKzg+PjJdO0xoKGNbYmM+PjJdfDAsY1skYj4+Ml18MCk7aWYoKGNbZWM+PjJdfDApIT0wPyhkWyhjW0ViPj4yXXwwKSs1Pj4wXSYyfDApPT0wOjApe2Nbdz4+Ml09S2goY1tiYz4+Ml18MCwyLDMyNjcyLDApfDA7Y1soY1t3Pj4yXXwwKSs0Pj4yXT1jWyRiPj4yXTtjWyhjW3c+PjJdfDApKzIwKzQ+PjJdPWNbJGI+PjJdO2NbKGNbdz4+Ml18MCkrMjArOD4+Ml09Y1tPPj4yXTtiYz1QaShjW2VjPj4yXXwwKXwwO2NbKGNbdz4+Ml18MCkrMjArMTI+PjJdPWJjO2JyZWFrIGF9Y1t4Pj4yXT1LaChjW2JjPj4yXXwwLDMsMzI2ODAsMCl8MDtjWyhjW3g+PjJdfDApKzQ+PjJdPWNbJGI+PjJdO2NbKGNbeD4+Ml18MCkrMjArND4+Ml09Y1skYj4+Ml07Y1soY1t4Pj4yXXwwKSsyMCsxMj4+Ml09Y1tPPj4yXTttQyhjW2JjPj4yXXwwLDEpO25DKGNbYmM+PjJdfDAsMCwwLGNbZGM+PjJdfDAsLTEpfDA7R0MoY1tiYz4+Ml18MCk7YnJlYWsgYX1jYXNlIDg6e2NbQ2E+PjJdPTA7Y1soY1thYz4+Ml18MCkrNDQ+PjJdPTE7a0MoY1tiYz4+Ml18MCwzMjY5Mik7d2hpbGUoMSl7YWM9Y1tDYT4+Ml18MDtjW0NhPj4yXT1hYysxO2FjPUFkKGFjKXwwO2NbR2E+PjJdPWFjO2w9Y1tiYz4+Ml18MDtpZighYWMpYnJlYWs7aHgobCwxLGNbR2E+PjJdfDApfDA7aXgoY1tiYz4+Ml18MCw4NywxLDEpfDB9R0MobCk7YnJlYWsgYX1jYXNlIDM2OntjW04+PjJdPShjW2Nbcz4+Ml0+PjJdfDApIT0wP2NbJGI+PjJdfDA6MTA7Y1tHPj4yXT0wO2RvIGlmKGNbZWM+PjJdfDApe2lmKCEoaWcoY1tlYz4+Ml18MCwzMjcwNyl8MCkpe2NbRz4+Ml09MTticmVha31pZighKGlnKGNbZWM+PjJdfDAsMzI3MTIpfDApKXtjW0c+PjJdPTI7YnJlYWt9aWYoIShpZyhjW2VjPj4yXXwwLDMyNzIwKXwwKSljW0c+PjJdPTN9d2hpbGUoMCk7eUMoY1tiYz4+Ml18MCwzLDU0MDgpO2NbKGNbYWM+PjJdfDApKzQ0Pj4yXT0zO2p4KGNbYmM+PjJdfDAsOCxjW04+PjJdfDAsY1tHPj4yXXwwLDEpfDA7aXgoY1tiYz4+Ml18MCw4NywxLDMpfDA7YnJlYWsgYX1jYXNlIDM1OntpZihjW2VjPj4yXXwwKXthYz1jW2NjPj4yXXwwO3pmKGFjLFBpKGNbZWM+PjJdfDApfDApfDB9aWYoKGNbKGNbY2M+PjJdfDApKzIyND4+Ml18MCk9PTEzOSlsPWNbKGNbY2M+PjJdfDApKzIyOD4+Ml18MDtlbHNlIGw9MDtsQyhjW2JjPj4yXXwwLDMyNzI5LGwsKChsfDApPDApPDwzMT4+MzEpO2JyZWFrIGF9Y2FzZSAyNzp7bmYoY1tjYz4+Ml18MCl8MDticmVhayBhfWNhc2UgMjg6e2lmKChjW2VjPj4yXXwwKSE9MD8oSGkoY1tlYz4+Ml18MCx0KXwwKT09MDowKXthYz10O0dkKGNbYWM+PjJdfDAsY1thYys0Pj4yXXwwKXwwfWFjPWNbYmM+PjJdfDA7YmM9R2QoLTEsLTEpfDA7bEMoYWMsMzI3NTYsYmMsQyk7YnJlYWsgYX1jYXNlIDM0OntpZigoY1tlYz4+Ml18MCkhPTA/KF9iPShIaShjW2VjPj4yXXwwLHUpfDApPT0wLGFjPXUsJGI9Y1thYys0Pj4yXXwwLF9iJigoJGJ8MCk+MHwoJGJ8MCk9PTAmKGNbYWM+PjJdfDApPj4+MD49MCkpOjApRWYoY1tjYz4+Ml18MCwxMSxjW3U+PjJdJjIxNDc0ODM2NDcpfDA7YWM9Y1tiYz4+Ml18MDtiYz1FZihjW2NjPj4yXXwwLDExLC0xKXwwO2xDKGFjLDMyNzcyLGJjLCgoYmN8MCk8MCk8PDMxPj4zMSk7YnJlYWsgYX1kZWZhdWx0OntpZihjW2VjPj4yXXwwKXthYz1jW2NjPj4yXXwwO3ZmKGFjLFBpKGNbZWM+PjJdfDApfDApfDB9YWM9Y1soY1tjYz4+Ml18MCkrNDI4Pj4yXXwwO2xDKGNbYmM+PjJdfDAsMzI3NDgsYWMsKChhY3wwKTwwKTw8MzE+PjMxKTticmVhayBhfX13aGlsZSgwKX19d2hpbGUoMCk7VGYoY1tjYz4+Ml18MCxjW2RjPj4yXXwwKTtUZihjW2NjPj4yXXwwLGNbZWM+PjJdfDApO2k9ZmM7cmV0dXJufWZ1bmN0aW9uIHl3KGIsZCxlKXtiPWJ8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MDt3PWk7aT1pKzExMnwwO3Q9dysyNHwwO3M9dztmPXcrMTA4fDA7Zz13KzEwNHwwO2g9dysxMDB8MDtwPXcrOTZ8MDt2PXcrOTJ8MDtqPXcrODh8MDtxPXcrNjR8MDtrPXcrNTZ8MDtsPXcrNDh8MDtyPXcrNDR8MDt1PXcrNDB8MDtuPXcrMzZ8MDttPXcrMzJ8MDtvPXcrMjh8MDtjW2Y+PjJdPWI7Y1tnPj4yXT1kO2NbaD4+Ml09ZTtjW3A+PjJdPWNbKGNbZj4+Ml18MCkrNDQ0Pj4yXTtjW2o+PjJdPWNbY1tmPj4yXT4+Ml07Y1soY1tmPj4yXXwwKSs0NDQ+PjJdPTA7ZG8gaWYoKGNbcD4+Ml18MCkhPTA/KGNbKGNbZj4+Ml18MCkrMzY+PjJdfDApPT0wOjApe2Nbdj4+Ml09Y1tjW3A+PjJdPj4yXTtjW2s+PjJdPUZoKGNbY1tmPj4yXT4+Ml18MCxjWyhjW3A+PjJdfDApKzIwPj4yXXwwKXwwO2NbKGNbcD4+Ml18MCkrMjg+PjJdPWNbZz4+Ml07d2hpbGUoMSl7ZT1jW3A+PjJdfDA7aWYoIShjW2c+PjJdfDApKWJyZWFrO2NbKGNbZz4+Ml18MCkrND4+Ml09ZTtjW2c+PjJdPWNbKGNbZz4+Ml18MCkrMjg+PjJdfVh5KGwsY1tlPj4yXXwwKTtjQyhxLGNbZj4+Ml18MCxjW2s+PjJdfDAsMTg2NjQsbCk7aWYoKGhDKHEsY1soY1twPj4yXXwwKSsyOD4+Ml18MCl8MCk9PTA/KGZDKHEsY1soY1twPj4yXXwwKSsxMj4+Ml18MCl8MCk9PTA6MCl7aWYoIShhWyhjW2o+PjJdfDApKzE0OCs1Pj4wXXwwKSl7Y1tyPj4yXT1keChjW2Y+PjJdfDApfDA7aWYoIShjW3I+PjJdfDApKWJyZWFrO3J4KGNbZj4+Ml18MCwwLGNbaz4+Ml18MCk7Y1t1Pj4yXT1ZdyhjW2o+PjJdfDAsY1tjW2g+PjJdPj4yXXwwLGNbKGNbaD4+Ml18MCkrND4+Ml18MCwwKXwwO3E9Y1tmPj4yXXwwO2I9KGNbaz4+Ml18MCk9PTE/MTk5MDU6MTk5MjQ7ZD1jW3Y+PjJdfDA7aD1jWyhjW3A+PjJdfDApKzQ+PjJdfDA7bD1jW3U+PjJdfDA7Y1tzPj4yXT1jWyhjWyhjW2o+PjJdfDApKzE2Pj4yXXwwKSsoY1trPj4yXTw8NCk+PjJdO2Nbcys0Pj4yXT1iO2Nbcys4Pj4yXT1kO2NbcysxMj4+Ml09aDtjW3MrMTY+PjJdPWw7Y3gocSwzMjAxMCxzKTtUZihjW2o+PjJdfDAsY1t1Pj4yXXwwKTtleChjW2Y+PjJdfDAsY1trPj4yXXwwKTtyPWNbcj4+Ml18MDtzPWNbaz4+Ml18MDt1PWNbaj4+Ml18MDtjW3Q+PjJdPWNbdj4+Ml07Z3gocixzLEdoKHUsMzIwNzQsdCl8MCl9aWYoYVsoY1tqPj4yXXwwKSsxNDgrNT4+MF18MCl7Y1tuPj4yXT1jW3A+PjJdO2NbbT4+Ml09KGNbKGNbKGNbaj4+Ml18MCkrMTY+PjJdfDApKyhjW2s+PjJdPDw0KSsxMj4+Ml18MCkrNDA7Y1twPj4yXT1VaihjW20+PjJdfDAsY1t2Pj4yXXwwLGNbcD4+Ml18MCl8MDtpZihjW3A+PjJdfDApe21oKGNbaj4+Ml18MCk7YnJlYWt9aWYoKGNbKGNbbj4+Ml18MCkrMjA+PjJdfDApPT0oY1soY1tuPj4yXXwwKSsyND4+Ml18MCkpe2Nbbz4+Ml09c2ooKGNbKGNbbj4+Ml18MCkrMjQ+PjJdfDApKzh8MCxjWyhjW24+PjJdfDApKzQ+PjJdfDApfDA7Y1soY1tuPj4yXXwwKSszMj4+Ml09Y1soY1tvPj4yXXwwKSs2MD4+Ml07Y1soY1tvPj4yXXwwKSs2MD4+Ml09Y1tuPj4yXX19fX13aGlsZSgwKTtRZihjW2o+PjJdfDAsY1twPj4yXXwwKTtvdihjW2o+PjJdfDAsY1tnPj4yXXwwKTtpPXc7cmV0dXJufWZ1bmN0aW9uIHp3KGIsZSxmLGcsaCxqLGssbCxtLG4pe2I9YnwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO2s9a3wwO2w9bHwwO209bXwwO249bnwwO3ZhciBvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTAsRT0wLEY9MCxHPTAsSD0wLEk9MCxKPTAsSz0wLEw9MCxNPTAsTj0wLE89MCxQPTAsUT0wO1E9aTtpPWkrMTYwfDA7dj1RKzQ4fDA7dT1RKzMyfDA7dD1RKzI0fDA7Rj1RKzE2fDA7cz1RKzh8MDtyPVE7ST1RKzE1NnwwO289USsxNTJ8MDtwPVErMTQ4fDA7eD1RKzE0NHwwO3k9USsxNDB8MDtKPVErMTM2fDA7Sz1RKzEzMnwwO0w9USsxMjh8MDt6PVErMTI0fDA7QT1RKzEyMHwwO089USsxMTZ8MDtFPVErMTEyfDA7UD1RKzEwOHwwO009USsxMDR8MDtOPVErMTAwfDA7RD1RKzk2fDA7cT1RKzcyfDA7Qz1RKzY4fDA7Qj1RKzY0fDA7Rz1RKzYwfDA7SD1RKzU2fDA7Y1tJPj4yXT1iO2Nbbz4+Ml09ZTtjW3A+PjJdPWY7Y1t4Pj4yXT1nO2NbeT4+Ml09aDtjW0o+PjJdPWo7Y1tLPj4yXT1rO2NbTD4+Ml09bDtjW3o+PjJdPW07Y1tBPj4yXT1uO2NbTz4+Ml09MDtjW1A+PjJdPTA7Y1tNPj4yXT1jW2NbST4+Ml0+PjJdO2RvIGlmKGNbej4+Ml18MClpZigoY1soY1twPj4yXXwwKSs0Pj4yXXwwKT4+PjA8PTApe2NbTj4+Ml09MTtjW0Q+PjJdPWNbbz4+Ml07aWYoY1tLPj4yXXwwKXt3PTY7YnJlYWt9ZWxzZSBicmVha31lbHNle0VoKGNbST4+Ml18MCwzMTY5MyxyKTticmVha31lbHNle2NbTj4+Ml09T3ooY1tJPj4yXXwwLGNbbz4+Ml18MCxjW3A+PjJdfDAsRCl8MDtpZigoY1tOPj4yXXwwKT49MCYoY1tLPj4yXXwwKSE9MCl3PTZ9d2hpbGUoMCk7ZG8gaWYoKHd8MCk9PTY/KGRbKGNbTT4+Ml18MCkrNjk+PjBdfDApPT0wOjApe2lmKChjW04+PjJdfDApIT0xPyhkWyhjW00+PjJdfDApKzE0OCs1Pj4wXXwwKSE9MDowKXtUZihjW00+PjJdfDAsY1soY1tLPj4yXXwwKSs4KzQ+PjJdfDApO2NbKGNbSz4+Ml18MCkrOCs0Pj4yXT0wfWNbRT4+Ml09YkMoY1tJPj4yXXwwLGNbSz4+Ml18MCl8MDtpZigoKGRbKGNbTT4+Ml18MCkrMTQ4KzU+PjBdfDApPT0wPygoY1tFPj4yXXwwKSE9MD8oY1soY1twPj4yXXwwKSs0Pj4yXXwwKT09MDowKTowKT8oY1soY1tFPj4yXXwwKSs2ND4+Ml18MCk9PShjWyhjWyhjW00+PjJdfDApKzE2Pj4yXXwwKSsxNisxMj4+Ml18MCk6MCljW04+PjJdPTE7aWYoKGFbKGNbTT4+Ml18MCkrNjk+PjBdfDApPT0wPyhjQyhxLGNbST4+Ml18MCxjW04+PjJdfDAsMTg2NjQsY1tEPj4yXXwwKSwoZEMocSxjW0s+PjJdfDApfDApPT0wKTowKXtjW0U+PjJdPWJDKGNbST4+Ml18MCxjW0s+PjJdfDApfDA7aWYoIShjW0U+PjJdfDApKXtpZigoZFsoY1tNPj4yXXwwKSsxNDgrND4+MF18MCkhPTEpYnJlYWs7YVsoY1tNPj4yXXwwKSsxNDgrNj4+MF09MTticmVha31pZihkWyhjW0U+PjJdfDApKzQyPj4wXSYxNil7RWgoY1tJPj4yXXwwLDMxNzM5LHMpO2JyZWFrfWNbUD4+Ml09VHcoY1tNPj4yXXwwLGNbRD4+Ml18MCl8MDtpZigoY1tQPj4yXXwwKSE9MD8wPT0oU3goY1tJPj4yXXwwLGNbUD4+Ml18MCl8MCk6MCl7aWYoc2ooKGNbKGNbKGNbTT4+Ml18MCkrMTY+PjJdfDApKyhjW04+PjJdPDw0KSsxMj4+Ml18MCkrNDB8MCxjW1A+PjJdfDApfDApe289Y1tJPj4yXXwwO2lmKGNbQT4+Ml18MCl7c3gobyxjW04+PjJdfDApO2JyZWFrfWVsc2V7Y1tGPj4yXT1jW0Q+PjJdO0VoKG8sMzE3ODAsRik7YnJlYWt9fWlmKCEoemQoY1tjW0U+PjJdPj4yXXwwLDI3ODQ0LDcpfDApKXtFaChjW0k+PjJdfDAsMzE4MDYsdCk7YnJlYWt9aWYoKGNbeD4+Ml18MCkhPTc3PyhjWyhjW0U+PjJdfDApKzEyPj4yXXwwKSE9MDowKXtOPWNbST4+Ml18MDtIPWNbSz4+Ml18MDtjW3U+PjJdPShjW3g+PjJdfDApPT02Mz8zMTg0NDozMTg1MTtjW3UrND4+Ml09SDtjW3UrOD4+Ml09MDtFaChOLDMxODU3LHUpO2JyZWFrfWlmKChjW3g+PjJdfDApPT03Nz8oY1soY1tFPj4yXXwwKSsxMj4+Ml18MCk9PTA6MCl7Tj1jW0k+PjJdfDA7Y1t2Pj4yXT1jW0s+PjJdO2Nbdis0Pj4yXT0wO0VoKE4sMzE4OTQsdik7YnJlYWt9Y1tDPj4yXT1GaChjW00+PjJdfDAsY1soY1tFPj4yXXwwKSs2ND4+Ml18MCl8MDtjW0I+PjJdPTc7Y1tHPj4yXT1jWyhjWyhjW00+PjJdfDApKzE2Pj4yXXwwKSsoY1tDPj4yXTw8NCk+PjJdO2lmKGNbej4+Ml18MClvPWNbKGNbKGNbTT4+Ml18MCkrMTY+PjJdfDApKzE2Pj4yXXwwO2Vsc2Ugbz1jW0c+PjJdfDA7Y1tIPj4yXT1vO2lmKChjW0M+PjJdfDApPT0xfChjW3o+PjJdfDApIT0wKWNbQj4+Ml09NTtpZigoYXgoY1tJPj4yXXwwLGNbQj4+Ml18MCxjW1A+PjJdfDAsY1tjW0U+PjJdPj4yXXwwLGNbSD4+Ml18MCl8MCk9PTA/KGF4KGNbST4+Ml18MCwxOCwoY1tDPj4yXXwwKT09MT8xOTkwNToxOTkyNCwwLGNbRz4+Ml18MCl8MCk9PTA6MCl7aWYoKGNbeD4+Ml18MCk9PTc3KWNbeD4+Ml09NjM7Y1tPPj4yXT1zaChjW00+PjJdfDAsMzYsMCl8MDtpZighKGNbTz4+Ml18MCkpYnJlYWs7Y1tjW08+PjJdPj4yXT1jW1A+PjJdO2NbUD4+Ml09MDtIPXFoKGNbTT4+Ml18MCxjWyhjW0s+PjJdfDApKzgrOD4+Ml18MCl8MDtjWyhjW08+PjJdfDApKzQ+PjJdPUg7Y1soY1tPPj4yXXwwKSsyMD4+Ml09Y1soY1soY1tNPj4yXXwwKSsxNj4+Ml18MCkrKGNbTj4+Ml08PDQpKzEyPj4yXTtjWyhjW08+PjJdfDApKzI0Pj4yXT1jWyhjW0U+PjJdfDApKzY0Pj4yXTthWyhjW08+PjJdfDApKzg+PjBdPWNbeT4+Ml07YVsoY1tPPj4yXXwwKSs5Pj4wXT0oY1t4Pj4yXXwwKT09NjM/MToyO049SXkoY1tNPj4yXXwwLGNbTD4+Ml18MCwxKXwwO2NbKGNbTz4+Ml18MCkrMTI+PjJdPU47Tj1JeihjW00+PjJdfDAsY1tKPj4yXXwwKXwwO2NbKGNbTz4+Ml18MCkrMTY+PjJdPU47Y1soY1tJPj4yXXwwKSs0NDQ+PjJdPWNbTz4+Ml19fX19d2hpbGUoMCk7VGYoY1tNPj4yXXwwLGNbUD4+Ml18MCk7aHYoY1tNPj4yXXwwLGNbSz4+Ml18MCk7a3YoY1tNPj4yXXwwLGNbSj4+Ml18MCk7aXYoY1tNPj4yXXwwLGNbTD4+Ml18MCk7aWYoY1soY1tJPj4yXXwwKSs0NDQ+PjJdfDApe2k9UTtyZXR1cm59UWYoY1tNPj4yXXwwLGNbTz4+Ml18MCk7aT1RO3JldHVybn1mdW5jdGlvbiBBdyhiLGQsZSxmLGcpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO3ZhciBoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTA7bj1pO2k9aSszMnwwO2g9bisxNnwwO289bisxMnwwO2o9bis4fDA7az1uKzR8MDtsPW4rMjB8MDttPW47Y1toPj4yXT1iO2Nbbz4+Ml09ZDtjW2o+PjJdPWU7Y1trPj4yXT1mO2FbbD4+MF09ZztjW20+PjJdPWFDKGNbaD4+Ml18MCwxMTAsY1tvPj4yXXwwKXwwO2lmKGNbbT4+Ml18MCl7bz1ReShjW2g+PjJdfDAsY1tqPj4yXXwwLDEpfDA7Y1soY1ttPj4yXXwwKSsyMD4+Ml09bztvPUl5KGNbaD4+Ml18MCxjW2s+PjJdfDAsMSl8MDtjWyhjW20+PjJdfDApKzE2Pj4yXT1vO2FbKGNbbT4+Ml18MCkrMT4+MF09YVtsPj4wXXwwfWV2KGNbaD4+Ml18MCxjW2o+PjJdfDApO2l2KGNbaD4+Ml18MCxjW2s+PjJdfDApO2k9bjtyZXR1cm4gY1ttPj4yXXwwfWZ1bmN0aW9uIEJ3KGIsZCxlLGYsZyl7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7dmFyIGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MDtuPWk7aT1pKzMyfDA7aD1uKzE2fDA7bz1uKzEyfDA7aj1uKzh8MDtrPW4rNHwwO2w9bisyMHwwO209bjtjW2g+PjJdPWI7Y1tvPj4yXT1kO2Nbaj4+Ml09ZTtjW2s+PjJdPWY7YVtsPj4wXT1nO2NbbT4+Ml09YUMoY1toPj4yXXwwLDEwOCxjW28+PjJdfDApfDA7Yj1jW2g+PjJdfDA7aWYoY1ttPj4yXXwwKXtvPV94KGIsY1trPj4yXXwwLDEpfDA7Y1soY1ttPj4yXXwwKSs4Pj4yXT1vO2NbKGNbbT4+Ml18MCkrMjQ+PjJdPWNbaj4+Ml07YVsoY1ttPj4yXXwwKSsxPj4wXT1hW2w+PjBdfDA7bD1jW2g+PjJdfDA7bz1jW2s+PjJdfDA7ZnYobCxvKTtvPWNbbT4+Ml18MDtpPW47cmV0dXJuIG98MH1lbHNle2t2KGIsY1tqPj4yXXwwKTtsPWNbaD4+Ml18MDtvPWNbaz4+Ml18MDtmdihsLG8pO289Y1ttPj4yXXwwO2k9bjtyZXR1cm4gb3wwfXJldHVybiAwfWZ1bmN0aW9uIEN3KGIsZCxlKXtiPWJ8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MDtqPWk7aT1pKzE2fDA7Zj1qKzEyfDA7az1qKzh8MDtnPWorNHwwO2g9ajtjW2Y+PjJdPWI7Y1trPj4yXT1kO2NbZz4+Ml09ZTtjW2g+PjJdPWFDKGNbZj4+Ml18MCwxMDksY1trPj4yXXwwKXwwO2lmKGNbaD4+Ml18MCl7az1JeShjW2Y+PjJdfDAsY1tnPj4yXXwwLDEpfDA7Y1soY1toPj4yXXwwKSsxNj4+Ml09azthWyhjW2g+PjJdfDApKzE+PjBdPTEwfWl2KGNbZj4+Ml18MCxjW2c+PjJdfDApO2k9ajtyZXR1cm4gY1toPj4yXXwwfWZ1bmN0aW9uIER3KGIsZCl7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTA7aj1pO2k9aSsxNnwwO2U9aisxMnwwO2Y9ais4fDA7Zz1qKzR8MDtoPWo7Y1tmPj4yXT1iO2NbZz4+Ml09ZDtjW2g+PjJdPXNoKGNbZj4+Ml18MCwzNiwwKXwwO2lmKCEoY1toPj4yXXwwKSl7ZnYoY1tmPj4yXXwwLGNbZz4+Ml18MCk7Y1tlPj4yXT0wO2g9Y1tlPj4yXXwwO2k9ajtyZXR1cm4gaHwwfWVsc2V7YVtjW2g+PjJdPj4wXT0xMTk7Y1soY1toPj4yXXwwKSs4Pj4yXT1jW2c+PjJdO2FbKGNbaD4+Ml18MCkrMT4+MF09MTA7Y1tlPj4yXT1jW2g+PjJdO2g9Y1tlPj4yXXwwO2k9ajtyZXR1cm4gaHwwfXJldHVybiAwfWZ1bmN0aW9uIEV3KGIsZCxlKXtiPWJ8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTA7cj1pO2k9aSs0OHwwO3A9cjtsPXIrNDB8MDttPXIrMzZ8MDtuPXIrMzJ8MDtoPXIrMjh8MDtmPXIrMjR8MDtxPXIrMjB8MDtqPXIrMTZ8MDtvPXIrMTJ8MDtnPXIrOHwwO2NbbD4+Ml09YjtjW20+PjJdPWQ7Y1tuPj4yXT1lO2NbaD4+Ml09MDtjW28+PjJdPWNbY1tsPj4yXT4+Ml07aWYoYVsoY1tvPj4yXXwwKSs2OT4+MF18MCl7cD1jW28+PjJdfDA7cT1jW20+PjJdfDA7aHYocCxxKTtpPXI7cmV0dXJufWlmKEt6KGNbbD4+Ml18MCl8MCl7cD1jW28+PjJdfDA7cT1jW20+PjJdfDA7aHYocCxxKTtpPXI7cmV0dXJufWNbcT4+Ml09Y1soY1ttPj4yXXwwKSs4KzQ+PjJdO2Nbaj4+Ml09Y1soY1ttPj4yXXwwKSs4Kzg+PjJdO2NbZj4+Ml09MDt3aGlsZSgxKXtpZigoY1tmPj4yXXwwKT49KGNbKGNbbz4+Ml18MCkrMjA+PjJdfDApKWJyZWFrO2I9Y1tmPj4yXXwwO2NbZz4+Ml09KGNbZj4+Ml18MCk8Mj9iXjE6YjtpZighKChjW3E+PjJdfDApIT0wPyhpZyhjWyhjWyhjW28+PjJdfDApKzE2Pj4yXXwwKSsoY1tnPj4yXTw8NCk+PjJdfDAsY1txPj4yXXwwKXwwKSE9MDowKSlrPTc7aWYoKGt8MCk9PTc/KGs9MCxjW2g+PjJdPXNqKChjWyhjWyhjW28+PjJdfDApKzE2Pj4yXXwwKSsoY1tnPj4yXTw8NCkrMTI+PjJdfDApKzQwfDAsY1tqPj4yXXwwKXwwLChjW2g+PjJdfDApIT0wKTowKWJyZWFrO2NbZj4+Ml09KGNbZj4+Ml18MCkrMX1pZihjW2g+PjJdfDApe19CKGNbbD4+Ml18MCxjW2g+PjJdfDApO3A9Y1tvPj4yXXwwO3E9Y1ttPj4yXXwwO2h2KHAscSk7aT1yO3JldHVybn1mPWNbbD4+Ml18MDtpZihjW24+PjJdfDApWkIoZixjW3E+PjJdfDApO2Vsc2V7Y1twPj4yXT1jW20+PjJdO2NbcCs0Pj4yXT0wO0VoKGYsMzE2MjIscCl9YVsoY1tsPj4yXXwwKSsxNz4+MF09MTtwPWNbbz4+Ml18MDtxPWNbbT4+Ml18MDtodihwLHEpO2k9cjtyZXR1cm59ZnVuY3Rpb24gRncoYSxiLGQsZSl7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTA7Zj1pO2k9aSsxNnwwO2s9ZisxMnwwO2o9Zis4fDA7aD1mKzR8MDtnPWY7Y1trPj4yXT1hO2Nbaj4+Ml09YjtjW2g+PjJdPWQ7Y1tnPj4yXT1lO0lCKGNbaz4+Ml18MCwyNCw0NDQ4LGNbaj4+Ml18MCxjW2o+PjJdfDAsY1toPj4yXXwwLGNbZz4+Ml18MCk7aT1mO3JldHVybn1mdW5jdGlvbiBHdyhhLGIpe2E9YXwwO2I9YnwwO3ZhciBkPTAsZT0wLGY9MDtkPWk7aT1pKzE2fDA7Zj1kKzR8MDtlPWQ7Y1tmPj4yXT1hO2NbZT4+Ml09YjtJQihjW2Y+PjJdfDAsMjUsNDQyMCxjW2U+PjJdfDAsMCwwLGNbZT4+Ml18MCk7aT1kO3JldHVybn1mdW5jdGlvbiBIdyhiLGQsZSl7Yj1ifDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wO3U9aTtpPWkrNjR8MDt0PXU7cT11KzQ4fDA7Zj11KzQ0fDA7Zz11KzQwfDA7aj11KzM2fDA7bT11KzMyfDA7bz11KzI4fDA7bD11KzI0fDA7cz11KzIwfDA7cj11KzE2fDA7aD11KzEyfDA7az11Kzh8MDtuPXUrNHwwO2NbcT4+Ml09YjtjW2Y+PjJdPWQ7Y1tnPj4yXT1lO2NbaD4+Ml09Y1tjW3E+PjJdPj4yXTtpZihLeihjW3E+PjJdfDApfDApe2k9dTtyZXR1cm59aWYoIShjW2Y+PjJdfDApKXtrQShjW3E+PjJdfDAsMCk7aT11O3JldHVybn1pZighKChjW2c+PjJdfDApIT0wPyhjW2NbZz4+Ml0+PjJdfDApIT0wOjApKXA9NjtkbyBpZigocHwwKT09Nil7Y1tuPj4yXT1UdyhjW2NbcT4+Ml0+PjJdfDAsY1tmPj4yXXwwKXwwO2lmKCEoY1tuPj4yXXwwKSl7aT11O3JldHVybn1jW2o+PjJdPVNqKGNbaD4+Ml18MCxhWyhjW2g+PjJdfDApKzY2Pj4wXXwwLGNbbj4+Ml18MCwwKXwwO2lmKCEoY1tqPj4yXXwwKSl7VGYoY1toPj4yXXwwLGNbbj4+Ml18MCk7YnJlYWt9a0EoY1txPj4yXXwwLGNbbj4+Ml18MCk7VGYoY1toPj4yXXwwLGNbbj4+Ml18MCk7aT11O3JldHVybn13aGlsZSgwKTtjW3I+PjJdPU96KGNbcT4+Ml18MCxjW2Y+PjJdfDAsY1tnPj4yXXwwLGspfDA7aWYoKGNbcj4+Ml18MCk8MCl7aT11O3JldHVybn1jW20+PjJdPVR3KGNbaD4+Ml18MCxjW2s+PjJdfDApfDA7aWYoIShjW20+PjJdfDApKXtpPXU7cmV0dXJufWNbbz4+Ml09Y1soY1soY1toPj4yXXwwKSsxNj4+Ml18MCkrKGNbcj4+Ml08PDQpPj4yXTtjW2w+PjJdPXRpKGNbaD4+Ml18MCxjW20+PjJdfDAsY1tvPj4yXXwwKXwwO2lmKGNbbD4+Ml18MCl7bEEoY1txPj4yXXwwLGNbbD4+Ml18MCwwKTtUZihjW2g+PjJdfDAsY1ttPj4yXXwwKTtpPXU7cmV0dXJufWNbcz4+Ml09S2ooY1toPj4yXXwwLGNbbT4+Ml18MCxjW28+PjJdfDApfDA7VGYoY1toPj4yXXwwLGNbbT4+Ml18MCk7Zj1jW3E+PjJdfDA7aWYoY1tzPj4yXXwwKXtyeChmLDAsY1tyPj4yXXwwKTttQShjW3E+PjJdfDAsY1tzPj4yXXwwLC0xKTtpPXU7cmV0dXJufWVsc2V7RWgoZiwzMTAwNyx0KTtpPXU7cmV0dXJufX1mdW5jdGlvbiBJdyhhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MDtyPWk7aT1pKzQ4fDA7bD1yKzQ0fDA7ZT1yKzQwfDA7Zj1yKzM2fDA7bT1yKzMyfDA7aD1yKzI4fDA7Zz1yKzI0fDA7cT1yKzIwfDA7az1yKzE2fDA7bz1yKzEyfDA7bj1yKzh8MDtqPXIrNHwwO3A9cjtjW2w+PjJdPWE7Y1tlPj4yXT1iO2NbZj4+Ml09ZDtjW20+PjJdPWNbY1tsPj4yXT4+Ml07aWYoS3ooY1tsPj4yXXwwKXwwKXtpPXI7cmV0dXJufWE6ZG8gaWYoY1tlPj4yXXwwKXtpZihjWyhjW2Y+PjJdfDApKzQ+PjJdfDApe2NbaD4+Ml09T3ooY1tsPj4yXXwwLGNbZT4+Ml18MCxjW2Y+PjJdfDAsail8MDtpZigoY1toPj4yXXwwKTwwKWJyZWFrO2Nbaz4+Ml09Y1soY1soY1ttPj4yXXwwKSsxNj4+Ml18MCkrKGNbaD4+Ml08PDQpPj4yXTtjW3E+PjJdPVR3KGNbbT4+Ml18MCxjW2o+PjJdfDApfDA7aWYoIShjW3E+PjJdfDApKWJyZWFrO2o9S2ooY1ttPj4yXXwwLGNbcT4+Ml18MCxjW2s+PjJdfDApfDA7Y1tuPj4yXT1qO2U9Y1tsPj4yXXwwO2lmKCFqKXtuPURoKGUsMCxjW3E+PjJdfDAsY1trPj4yXXwwKXwwO2Nbbz4+Ml09bjtpZihuKU56KGNbbD4+Ml18MCxjW28+PjJdfDAsMCl9ZWxzZSBOeihlLGNbKGNbbj4+Ml18MCkrMTI+PjJdfDAsY1tuPj4yXXwwKTtUZihjW20+PjJdfDAsY1txPj4yXXwwKTticmVha31jW2g+PjJdPU16KGNbbT4+Ml18MCxjW2U+PjJdfDApfDA7aWYoKGNbaD4+Ml18MCk+PTApe0x6KGNbbD4+Ml18MCxjW2g+PjJdfDApO2JyZWFrfWNbcT4+Ml09VHcoY1ttPj4yXXwwLGNbZT4+Ml18MCl8MDtpZihjW3E+PjJdfDApe2s9S2ooY1ttPj4yXXwwLGNbcT4+Ml18MCwwKXwwO2Nbbj4+Ml09aztlPWNbbD4+Ml18MDtpZighayl7bj1EaChlLDAsY1txPj4yXXwwLDApfDA7Y1tvPj4yXT1uO2lmKG4pTnooY1tsPj4yXXwwLGNbbz4+Ml18MCwwKX1lbHNlIE56KGUsY1soY1tuPj4yXXwwKSsxMj4+Ml18MCxjW24+PjJdfDApO1RmKGNbbT4+Ml18MCxjW3E+PjJdfDApfX1lbHNle2NbZz4+Ml09MDt3aGlsZSgxKXtpZigoY1tnPj4yXXwwKT49KGNbKGNbbT4+Ml18MCkrMjA+PjJdfDApKWJyZWFrIGE7aWYoKGNbZz4+Ml18MCkhPTEpTHooY1tsPj4yXXwwLGNbZz4+Ml18MCk7Y1tnPj4yXT0oY1tnPj4yXXwwKSsxfX13aGlsZSgwKTtjW3A+PjJdPWR4KGNbbD4+Ml18MCl8MDtpZighKGNbcD4+Ml18MCkpe2k9cjtyZXR1cm59ZngoY1twPj4yXXwwLDE1MCl8MDtpPXI7cmV0dXJufWZ1bmN0aW9uIEp3KGIsZSxmKXtiPWJ8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MCxFPTA7RT1pO2k9aSsxNzZ8MDt5PUUrOTZ8MDt4PUUrODB8MDt3PUUrNDB8MDt6PUUrMTZ8MDt2PUUrOHwwO2g9RTtqPUUrMTcyfDA7az1FKzE2OHwwO2c9RSsxNjR8MDtuPUUrMTYwfDA7QT1FKzE1NnwwO3I9RSsxNTJ8MDtCPUUrMTQ4fDA7bD1FKzE0NHwwO289RSsxNDB8MDtDPUUrMTM2fDA7dT1FKzEzMnwwO0Q9RSsxMjh8MDtzPUUrMTI0fDA7dD1FKzEyMHwwO209RSsxMTZ8MDtwPUUrMTEyfDA7cT1FKzEwOHwwO2Nbaj4+Ml09YjtjW2s+PjJdPWU7Y1tnPj4yXT1mO2NbQj4+Ml09MDtjW2w+PjJdPWNbY1tqPj4yXT4+Ml07Y1tEPj4yXT0wO2Nbcz4+Ml09MDtjW3Q+PjJdPWNbKGNbbD4+Ml18MCkrMjQ+PjJdO2RvIGlmKCgoYVsoY1tsPj4yXXwwKSs2OT4+MF18MCk9PTA/KGNbcj4+Ml09cHgoY1tqPj4yXXwwLDAsKGNbaz4+Ml18MCkrOHwwKXwwLChjW3I+PjJdfDApIT0wKTowKT8oY1tuPj4yXT1GaChjW2Nbaj4+Ml0+PjJdfDAsY1soY1tyPj4yXXwwKSs2ND4+Ml18MCl8MCxjW0E+PjJdPWNbKGNbKGNbbD4+Ml18MCkrMTY+PjJdfDApKyhjW24+PjJdPDw0KT4+Ml0sZT0oY1tsPj4yXXwwKSsyNHwwLGNbZT4+Ml09Y1tlPj4yXXwyMDk3MTUyLGNbQj4+Ml09VHcoY1tsPj4yXXwwLGNbZz4+Ml18MCl8MCwoY1tCPj4yXXwwKSE9MCk6MCl7aWYoKHRpKGNbbD4+Ml18MCxjW0I+PjJdfDAsY1tBPj4yXXwwKXwwKT09MD8oS2ooY1tsPj4yXXwwLGNbQj4+Ml18MCxjW0E+PjJdfDApfDApPT0wOjApe2lmKHF4KGNbaj4+Ml18MCxjW2Nbcj4+Ml0+PjJdfDApfDApYnJlYWs7aWYoU3goY1tqPj4yXXwwLGNbQj4+Ml18MCl8MClicmVhaztnPWNbaj4+Ml18MDtpZihjWyhjW3I+PjJdfDApKzEyPj4yXXwwKXtjW3Y+PjJdPWNbY1tyPj4yXT4+Ml07RWgoZywyODMzNyx2KTticmVha31pZihheChnLDI2LGNbQT4+Ml18MCxjW2Nbcj4+Ml0+PjJdfDAsMCl8MClicmVhaztpZihUeChjW2o+PjJdfDAsY1tyPj4yXXwwKXwwKWJyZWFrO2lmKChkWyhjW3I+PjJdfDApKzQyPj4wXSYxNnwwKSE9MD8oY1tzPj4yXT1VeChjW2w+PjJdfDAsY1tyPj4yXXwwKXwwLChjWyhjW2NbKGNbcz4+Ml18MCkrOD4+Ml0+PjJdfDApKzc2Pj4yXXwwKT09MCk6MCljW3M+PjJdPTA7Y1t1Pj4yXT1keChjW2o+PjJdfDApfDA7aWYoIShjW3U+PjJdfDApKWJyZWFrO3J4KGNbaj4+Ml18MCwoY1tzPj4yXXwwKSE9MCYxLGNbbj4+Ml18MCk7ZXgoY1tqPj4yXXwwLGNbbj4+Ml18MCk7aWYoY1tzPj4yXXwwKXtoPShjW2o+PjJdfDApKzQ0fDA7dj0oY1toPj4yXXwwKSsxfDA7Y1toPj4yXT12O2NbbT4+Ml09djtoeChjW3U+PjJdfDAsY1ttPj4yXXwwLGNbQj4+Ml18MCl8MDtteChjW3U+PjJdfDAsMTU3LGNbbT4+Ml18MCwwLDAsY1tzPj4yXXwwLC0xMCl8MDtWeChjW2o+PjJdfDApfWNbQz4+Ml09Y1tjW3I+PjJdPj4yXTtjW28+PjJdPVd4KGNbQz4+Ml18MCwtMSl8MDtpZigoY1soY1tsPj4yXXwwKSsyND4+Ml0mNTI0Mjg4fDApIT0wPyh2PVh4KGNbaj4+Ml18MCxjW3I+PjJdfDApfDAsY1tEPj4yXT12LCh2fDApIT0wKTowKXt2PWNbaj4+Ml18MDtoPShjW24+PjJdfDApPT0xPzE5OTA1OjE5OTI0O209Y1tDPj4yXXwwO3M9Y1tCPj4yXXwwO3U9Y1tEPj4yXXwwO2Nbej4+Ml09Y1tBPj4yXTtjW3orND4+Ml09aDtjW3orOD4+Ml09bTtjW3orMTI+PjJdPXM7Y1t6KzE2Pj4yXT11O2N4KHYsMjgzNjQseik7VGYoY1tsPj4yXXwwLGNbRD4+Ml18MCl9ej1jW2o+PjJdfDA7ZT0oY1tuPj4yXXwwKT09MT8xOTkwNToxOTkyNDtoPWNbQj4+Ml18MDttPWNbQj4+Ml18MDtuPWNbQj4+Ml18MDtzPWNbQj4+Ml18MDt1PWNbQj4+Ml18MDt2PWNbbz4+Ml18MDtDPWNbQz4+Ml18MDtjW3c+PjJdPWNbQT4+Ml07Y1t3KzQ+PjJdPWU7Y1t3Kzg+PjJdPWg7Y1t3KzEyPj4yXT1tO2NbdysxNj4+Ml09bjtjW3crMjA+PjJdPXM7Y1t3KzI0Pj4yXT11O2NbdysyOD4+Ml09djtjW3crMzI+PjJdPUM7Y3goeiwyODQzMyx3KTtpZih0aShjW2w+PjJdfDAsMjg4MTcsY1tBPj4yXXwwKXwwKXtDPWNbaj4+Ml18MDt3PWNbQj4+Ml18MDt6PWNbY1tyPj4yXT4+Ml18MDtjW3g+PjJdPWNbQT4+Ml07Y1t4KzQ+PjJdPXc7Y1t4Kzg+PjJdPXo7Y3goQywyODgzMyx4KX1DPUF4KGNbaj4+Ml18MCxjW3I+PjJdfDApfDA7Y1tEPj4yXT1DO2lmKEMpe0M9Y1tqPj4yXXwwO3o9Y1tCPj4yXXwwO0E9Y1tEPj4yXXwwO2NbeT4+Ml09Y1tCPj4yXTtjW3krND4+Ml09ejtjW3krOD4+Ml09QTtjeChDLDI4ODkxLHkpO1RmKGNbbD4+Ml18MCxjW0Q+PjJdfDApfWE6ZG8gaWYoY1soY1tsPj4yXXwwKSsyND4+Ml0mNTI0Mjg4KXtjW3A+PjJdPVl4KGNbcj4+Ml18MCl8MDt3aGlsZSgxKXtpZighKGNbcD4+Ml18MCkpYnJlYWsgYTtjW3E+PjJdPWNbY1twPj4yXT4+Ml07aWYoKGNbcT4+Ml18MCkhPShjW3I+PjJdfDApKXl4KGNbaj4+Ml18MCxjW2NbcD4+Ml0+PjJdfDAsY1tjW3E+PjJdPj4yXXwwKTtjW3A+PjJdPWNbKGNbcD4+Ml18MCkrMTI+PjJdfX13aGlsZSgwKTt5eChjW2o+PjJdfDAsY1tyPj4yXXwwLGNbQj4+Ml18MCk7YnJlYWt9RD1jW2o+PjJdfDA7Y1toPj4yXT1jW0I+PjJdO0VoKEQsMjgyNzgsaCl9d2hpbGUoMCk7aHYoY1tsPj4yXXwwLGNbaz4+Ml18MCk7VGYoY1tsPj4yXXwwLGNbQj4+Ml18MCk7Y1soY1tsPj4yXXwwKSsyND4+Ml09Y1t0Pj4yXTtpPUU7cmV0dXJufWZ1bmN0aW9uIEt3KGUsZil7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTAsRT0wO0U9aTtpPWkrMTQ0fDA7dz1FKzQwfDA7dj1FKzMyfDA7ej1FKzI0fDA7eT1FKzE2fDA7eD1FKzh8MDt1PUU7Zz1FKzEyOHwwO2g9RSsxMjR8MDtuPUUrMTIwfDA7bz1FKzExNnwwO2s9RSsxMTJ8MDtCPUUrMTA4fDA7RD1FKzEwNHwwO0E9RSsxMDB8MDtsPUUrOTZ8MDttPUUrOTJ8MDtqPUUrODh8MDt0PUUrODR8MDtxPUUrODB8MDtwPUUrNzZ8MDtyPUUrNzJ8MDtDPUUrNjh8MDtzPUUrNjR8MDtjW2c+PjJdPWU7Y1toPj4yXT1mO2NbdD4+Ml09Y1soY1tnPj4yXXwwKSs4Pj4yXTtjW2o+PjJdPWNbY1tnPj4yXT4+Ml07aWYoY1soY1tnPj4yXXwwKSszNj4+Ml18MCl7aT1FO3JldHVybn1pZihkWyhjW2o+PjJdfDApKzY5Pj4wXXwwKXtpPUU7cmV0dXJufWNbbj4+Ml09Y1soY1tnPj4yXXwwKSs0NDA+PjJdO2Nbaz4+Ml09RmgoY1tqPj4yXXwwLGNbKGNbbj4+Ml18MCkrNjQ+PjJdfDApfDA7Y1tCPj4yXT1jWyhjWyhjW2o+PjJdfDApKzE2Pj4yXXwwKSsoY1trPj4yXTw8NCk+PjJdO2NbRD4+Ml09KGNbY1tuPj4yXT4+Ml18MCkrMTY7Y1tsPj4yXT0oY1soY1tuPj4yXXwwKSs0Pj4yXXwwKSsoKGJbKGNbbj4+Ml18MCkrMzQ+PjFdfDApLTE8PDQpO2NbbT4+Ml09Y1soY1tsPj4yXXwwKSs0Pj4yXTtjW28+PjJdPXRpKGNbaj4+Ml18MCxjW0Q+PjJdfDAsY1tCPj4yXXwwKXwwO2lmKGF4KGNbZz4+Ml18MCwyNixjW0I+PjJdfDAsY1tjW28+PjJdPj4yXXwwLDApfDApe2k9RTtyZXR1cm59aWYoKGNbbT4+Ml18MCkhPTA/KGRbY1soY1ttPj4yXXwwKSsxMj4+Ml0+PjBdfDApPT0xMDE6MCljW20+PjJdPTA7aWYoZFsoY1tsPj4yXXwwKSsxNT4+MF0mMSl7RWgoY1tnPj4yXXwwLDI3ODgwLHUpO2k9RTtyZXR1cm59aWYoY1soY1tuPj4yXXwwKSs4Pj4yXXwwKXtFaChjW2c+PjJdfDAsMjc5MTIseCk7aT1FO3JldHVybn1pZigoY1soY1tqPj4yXXwwKSsyND4+Ml0mNTI0Mjg4fDApIT0wPygoY1ttPj4yXXwwKSE9MD8oY1soY1tuPj4yXXwwKSsxNj4+Ml18MCkhPTA6MCk6MCl7RWgoY1tnPj4yXXwwLDI3OTM5LHkpO2k9RTtyZXR1cm59aWYoISgoY1ttPj4yXXwwKSE9MD8xOihkWyhjW2w+PjJdfDApKzEyPj4wXXwwKT09MCkpe0VoKGNbZz4+Ml18MCwyNzk5OCx6KTtpPUU7cmV0dXJufWRvIGlmKGNbbT4+Ml18MCl7Y1twPj4yXT0wO2Nbcj4+Ml09dXgoY1tqPj4yXXwwLGNbbT4+Ml18MCwxLDY1LHApfDA7aWYoY1tyPj4yXXwwKXtpPUU7cmV0dXJufWlmKGNbcD4+Ml18MCl7Y2goY1twPj4yXXwwKTticmVha31FaChjW2c+PjJdfDAsMjgwNTEsdik7aT1FO3JldHVybn13aGlsZSgwKTtjW0E+PjJdPVl3KGNbaj4+Ml18MCxjW2NbaD4+Ml0+PjJdfDAsY1soY1toPj4yXXwwKSs0Pj4yXXwwLDApfDA7aWYoY1tBPj4yXXwwKXtjW0M+PjJdPShjW0E+PjJdfDApKygoY1soY1toPj4yXXwwKSs0Pj4yXXwwKS0xKTtjW3M+PjJdPWNbKGNbaj4+Ml18MCkrMjQ+PjJdO3doaWxlKDEpe2lmKChjW0M+PjJdfDApPj4+MDw9KGNbQT4+Ml18MCk+Pj4wKWJyZWFrO2lmKChhW2NbQz4+Ml0+PjBdfDApIT01OT8oZFsxODQwMysoZFtjW0M+PjJdPj4wXXwwKT4+MF0mMXwwKT09MDowKWJyZWFrO3o9Y1tDPj4yXXwwO2NbQz4+Ml09eistMTthW3o+PjBdPTB9Qz0oY1tqPj4yXXwwKSsyNHwwO2NbQz4+Ml09Y1tDPj4yXXwyMDk3MTUyO0M9Y1tnPj4yXXwwO3Y9KGNbaz4+Ml18MCk9PTE/MTk5MDU6MTk5MjQ7eD1jWyhjW24+PjJdfDApKzQ0Pj4yXXwwO3k9Y1tBPj4yXXwwO3o9KGNbKGNbbj4+Ml18MCkrNDQ+PjJdfDApKzF8MDtEPWNbRD4+Ml18MDtjW3c+PjJdPWNbQj4+Ml07Y1t3KzQ+PjJdPXY7Y1t3Kzg+PjJdPXg7Y1t3KzEyPj4yXT15O2NbdysxNj4+Ml09ejtjW3crMjA+PjJdPUQ7Y3goQywyODA5Nyx3KTtUZihjW2o+PjJdfDAsY1tBPj4yXXwwKTtjWyhjW2o+PjJdfDApKzI0Pj4yXT1jW3M+PjJdfWNbcT4+Ml09dngoY1tnPj4yXXwwKXwwO2p4KGNbdD4+Ml18MCwxMDEsY1trPj4yXXwwLGNbcT4+Ml18MCwyKXwwO0xoKGNbdD4+Ml18MCxjW2s+PjJdfDApO2l4KGNbdD4+Ml18MCw5MSxjW3E+PjJdfDAsLTIpfDA7Qz1jW3Q+PjJdfDA7RD1jW3E+PjJdfDA7aXgoQyw2NixELCh3eChjW3Q+PjJdfDApfDApKzJ8MCl8MDtqeChjW3Q+PjJdfDAsMTAyLGNbaz4+Ml18MCwyLDMpfDA7eHgoY1tnPj4yXXwwLGNbcT4+Ml18MCk7eXgoY1tnPj4yXXwwLGNbbz4+Ml18MCxjW2Nbbz4+Ml0+PjJdfDApO2k9RTtyZXR1cm59ZnVuY3Rpb24gTHcoZSxmKXtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MDt1PWk7aT1pKzY0fDA7dD11KzE2fDA7cz11Kzh8MDtnPXU7aD11KzU2fDA7aj11KzUyfDA7cD11KzQ4fDA7cT11KzQ0fDA7cj11KzQwfDA7bT11KzM2fDA7bD11KzMyfDA7bj11KzI4fDA7az11KzI0fDA7bz11KzIwfDA7Y1toPj4yXT1lO2Nbaj4+Ml09ZjtjW2s+PjJdPWNbY1toPj4yXT4+Ml07ZG8gaWYoKGFbKGNbaz4+Ml18MCkrNjk+PjBdfDApPT0wPyhjW3E+PjJdPXB4KGNbaD4+Ml18MCwwLChjW2o+PjJdfDApKzh8MCl8MCwoY1txPj4yXXwwKSE9MCk6MCl7aWYoZFsoY1txPj4yXXwwKSs0Mj4+MF0mMTYpe0VoKGNbaD4+Ml18MCwyNzY5MSxnKTticmVha31lPWNbaD4+Ml18MDtpZihjWyhjW3E+PjJdfDApKzEyPj4yXXwwKXtFaChlLDI3NzI1LHMpO2JyZWFrfWlmKCgoMD09KHF4KGUsY1tjW3E+PjJdPj4yXXwwKXwwKT8oY1ttPj4yXT1GaChjW2s+PjJdfDAsY1soY1txPj4yXXwwKSs2ND4+Ml18MCl8MCxjW3A+PjJdPXNoKGNbaz4+Ml18MCw3MiwwKXwwLChjW3A+PjJdfDApIT0wKTowKT8oY1soY1toPj4yXXwwKSs0NDA+PjJdPWNbcD4+Ml0sYlsoY1twPj4yXXwwKSszNj4+MV09MSxiWyhjW3A+PjJdfDApKzM0Pj4xXT1iWyhjW3E+PjJdfDApKzM0Pj4xXXwwLGNbbj4+Ml09KCgoKGJbKGNbcD4+Ml18MCkrMzQ+PjFdfDApLTF8MCkvOHwwKTw8MykrOCxzPXNoKGNbaz4+Ml18MCxjW24+PjJdPDw0LDApfDAsY1soY1twPj4yXXwwKSs0Pj4yXT1zLHM9Y1trPj4yXXwwLGNbdD4+Ml09Y1tjW3E+PjJdPj4yXSx0PUdoKHMsMjc3NTUsdCl8MCxjW2NbcD4+Ml0+PjJdPXQsKGNbKGNbcD4+Ml18MCkrND4+Ml18MCkhPTApOjApPyhjW2NbcD4+Ml0+PjJdfDApIT0wOjApe1RSKGNbKGNbcD4+Ml18MCkrND4+Ml18MCxjWyhjW3E+PjJdfDApKzQ+PjJdfDAsYlsoY1twPj4yXXwwKSszND4+MV08PDR8MCl8MDtjW2w+PjJdPTA7d2hpbGUoMSl7aWYoKGNbbD4+Ml18MCk+PShiWyhjW3A+PjJdfDApKzM0Pj4xXXwwKSlicmVhaztjW28+PjJdPShjWyhjW3A+PjJdfDApKzQ+PjJdfDApKyhjW2w+PjJdPDw0KTt0PXFoKGNbaz4+Ml18MCxjW2Nbbz4+Ml0+PjJdfDApfDA7Y1tjW28+PjJdPj4yXT10O2NbKGNbbz4+Ml18MCkrOD4+Ml09MDtjWyhjW28+PjJdfDApKzQ+PjJdPTA7Y1tsPj4yXT0oY1tsPj4yXXwwKSsxfWNbKGNbcD4+Ml18MCkrNjQ+PjJdPWNbKGNbKGNbaz4+Ml18MCkrMTY+PjJdfDApKyhjW20+PjJdPDw0KSsxMj4+Ml07Y1soY1twPj4yXXwwKSs0ND4+Ml09Y1soY1txPj4yXXwwKSs0ND4+Ml07YlsoY1twPj4yXXwwKSszNj4+MV09MTtyeChjW2g+PjJdfDAsMCxjW20+PjJdfDApO2Nbcj4+Ml09ZHgoY1toPj4yXXwwKXwwO2lmKGNbcj4+Ml18MClleChjW2g+PjJdfDAsY1ttPj4yXXwwKX19d2hpbGUoMCk7aHYoY1trPj4yXXwwLGNbaj4+Ml18MCk7aT11O3JldHVybn1mdW5jdGlvbiBNdyhiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTA7dT1pO2k9aSs5NnwwO3E9dSszMnwwO3A9dSs4fDA7bz11O2U9dSs4MHwwO2Y9dSs3NnwwO209dSs3MnwwO2c9dSs2OHwwO3M9dSs2NHwwO3Q9dSs2MHwwO2g9dSs1NnwwO2o9dSs1MnwwO249dSs0OHwwO2s9dSs0NHwwO2w9dSs0MHwwO3I9dSszNnwwO2NbZT4+Ml09YjtjW2Y+PjJdPWQ7Y1ttPj4yXT1jWyhjW2U+PjJdfDApKzQ0MD4+Ml07Y1tnPj4yXT1jW2NbZT4+Ml0+PjJdO2lmKCEoY1ttPj4yXXwwKSl7aT11O3JldHVybn1fdyhjW2U+PjJdfDApO2NbKGNbZT4+Ml18MCkrNDUyPj4yXT0wO2lmKChjWyhjW20+PjJdfDApKzQ4Pj4yXXwwKTwxKXtpPXU7cmV0dXJufWlmKCEoYVsoY1tnPj4yXXwwKSsxNDgrNT4+MF18MCkpe2lmKGNbZj4+Ml18MCljWyhjW2U+PjJdfDApKzM4NCs0Pj4yXT0oY1tjW2Y+PjJdPj4yXXwwKS0oY1soY1tlPj4yXXwwKSszODQ+PjJdfDApKyhjWyhjW2Y+PjJdfDApKzQ+PjJdfDApO3I9Y1tnPj4yXXwwO2Nbbz4+Ml09KGNbZT4+Ml18MCkrMzg0O2Nbcz4+Ml09R2gociwyNzU1MixvKXwwO2NbaD4+Ml09RmgoY1tnPj4yXXwwLGNbKGNbbT4+Ml18MCkrNjQ+PjJdfDApfDA7cj1jW2U+PjJdfDA7ZD0oY1toPj4yXXwwKT09MT8xOTkwNToxOTkyNDtrPWNbY1ttPj4yXT4+Ml18MDtiPWNbY1ttPj4yXT4+Ml18MDtsPWNbcz4+Ml18MDtvPWNbKGNbZT4+Ml18MCkrMTAwPj4yXXwwO2NbcD4+Ml09Y1soY1soY1tnPj4yXXwwKSsxNj4+Ml18MCkrKGNbaD4+Ml08PDQpPj4yXTtjW3ArND4+Ml09ZDtjW3ArOD4+Ml09aztjW3ArMTI+PjJdPWI7Y1twKzE2Pj4yXT1sO2NbcCsyMD4+Ml09bztjeChyLDI3NTc2LHApO1RmKGNbZz4+Ml18MCxjW3M+PjJdfDApO2Nbbj4+Ml09ZHgoY1tlPj4yXXwwKXwwO2V4KGNbZT4+Ml18MCxjW2g+PjJdfDApO2Z4KGNbbj4+Ml18MCwxNTApfDA7cz1jW2c+PjJdfDA7Y1txPj4yXT1jW2NbbT4+Ml0+PjJdO2NbdD4+Ml09R2gocywyNzY2NCxxKXwwO2d4KGNbbj4+Ml18MCxjW2g+PjJdfDAsY1t0Pj4yXXwwKTtzPShjW2U+PjJdfDApKzQ0fDA7dD0oY1tzPj4yXXwwKSsxfDA7Y1tzPj4yXT10O2Nbaj4+Ml09dDtoeChjW24+PjJdfDAsY1tqPj4yXXwwLGNbY1ttPj4yXT4+Ml18MCl8MDtpeChjW24+PjJdfDAsMTUzLGNbaD4+Ml18MCxjW2o+PjJdfDApfDA7aT11O3JldHVybn1jW2w+PjJdPWNbKGNbbT4+Ml18MCkrNjQ+PjJdO2Nbcj4+Ml09Y1tjW20+PjJdPj4yXTtjW2s+PjJdPVVqKChjW2w+PjJdfDApKzh8MCxjW3I+PjJdfDAsY1ttPj4yXXwwKXwwO2lmKGNbaz4+Ml18MCl7bWgoY1tnPj4yXXwwKTtpPXU7cmV0dXJufWVsc2V7Y1soY1tlPj4yXXwwKSs0NDA+PjJdPTA7aT11O3JldHVybn19ZnVuY3Rpb24gTncoYixlLGYsZyxoKXtiPWJ8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDt2YXIgaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTA7bz1pO2k9aSszMnwwO2o9bysyOHwwO3I9bysyNHwwO3E9bysyMHwwO2s9bysxNnwwO3A9bysxMnwwO209bys4fDA7bj1vKzR8MDtsPW87Y1tqPj4yXT1iO2Nbcj4+Ml09ZTtjW3E+PjJdPWY7Y1trPj4yXT1nO2NbcD4+Ml09aDt6dihjW2o+PjJdfDAsY1tyPj4yXXwwLGNbcT4+Ml18MCwwLDAsMSxjW3A+PjJdfDApO2Nbbj4+Ml09Y1soY1tqPj4yXXwwKSs0NDA+PjJdO2lmKCEoY1tuPj4yXXwwKSl7aT1vO3JldHVybn1jW2w+PjJdPWNbY1tqPj4yXT4+Ml07Y1ttPj4yXT1GaChjW2w+PjJdfDAsY1soY1tuPj4yXXwwKSs2ND4+Ml18MCl8MDtyPShjW24+PjJdfDApKzQyfDA7YVtyPj4wXT1kW3I+PjBdfDB8MTY7Y1soY1tuPj4yXXwwKSs0OD4+Ml09MDtyPWNbbD4+Ml18MDtxPWNbbj4+Ml18MDskdyhyLHEsVHcoY1tsPj4yXXwwLGNbaz4+Ml18MCl8MCk7JHcoY1tsPj4yXXwwLGNbbj4+Ml18MCwwKTtxPWNbbD4+Ml18MDtyPWNbbj4+Ml18MDskdyhxLHIscWgoY1tsPj4yXXwwLGNbY1tuPj4yXT4+Ml18MCl8MCk7Y1soY1tqPj4yXXwwKSszODQrND4+Ml09KGNbY1trPj4yXT4+Ml18MCkrKGNbKGNbaz4+Ml18MCkrND4+Ml18MCktKGNbKGNbaj4+Ml18MCkrMzg0Pj4yXXwwKTtpZighKGNbKGNbbj4+Ml18MCkrNTI+PjJdfDApKXtpPW87cmV0dXJufWF4KGNbaj4+Ml18MCwyOSxjW2Nbbj4+Ml0+PjJdfDAsY1tjWyhjW24+PjJdfDApKzUyPj4yXT4+Ml18MCxjWyhjWyhjW2Nbaj4+Ml0+PjJdfDApKzE2Pj4yXXwwKSsoY1ttPj4yXTw8NCk+PjJdfDApfDA7aT1vO3JldHVybn1mdW5jdGlvbiBPdyhhKXthPWF8MDt2YXIgYj0wLGQ9MDtiPWk7aT1pKzE2fDA7ZD1iO2NbZD4+Ml09YTtfdyhjW2Q+PjJdfDApO2NbKGNbZD4+Ml18MCkrNDUyPj4yXT0wO2NbKGNbZD4+Ml18MCkrNDUyKzQ+PjJdPTA7aT1iO3JldHVybn1mdW5jdGlvbiBQdyhhLGIpe2E9YXwwO2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTA7Zj1pO2k9aSsxNnwwO2c9Zis4fDA7ZD1mKzR8MDtlPWY7Y1tnPj4yXT1hO2NbZD4+Ml09YjtjW2U+PjJdPShjW2c+PjJdfDApKzQ1MjtiPWNbZD4+Ml18MDtpZighKGNbY1tlPj4yXT4+Ml18MCkpe2NbY1tlPj4yXT4+Ml09Y1tiPj4yXTtjWyhjW2U+PjJdfDApKzQ+PjJdPWNbKGNbZD4+Ml18MCkrND4+Ml07aT1mO3JldHVybn1lbHNle2NbKGNbZT4+Ml18MCkrND4+Ml09KGNbY1tkPj4yXT4+Ml18MCkrKGNbYis0Pj4yXXwwKS0oY1tjW2U+PjJdPj4yXXwwKTtpPWY7cmV0dXJufX1mdW5jdGlvbiBRdyhiLGQsZSxmLGcpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO3ZhciBoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MDtzPWk7aT1pKzQ4fDA7cT1zO2g9cys0MHwwO2o9cyszNnwwO3Q9cyszMnwwO2s9cysyOHwwO2w9cysyNHwwO209cysyMHwwO3A9cysxNnwwO3I9cysxMnwwO249cys4fDA7bz1zKzR8MDtjW2g+PjJdPWI7Y1tqPj4yXT1kO2NbdD4+Ml09ZTtjW2s+PjJdPWY7Y1tsPj4yXT1nO2NbbT4+Ml09Y1tjW2g+PjJdPj4yXTtjW3I+PjJdPVR3KGNbY1toPj4yXT4+Ml18MCxjW3Q+PjJdfDApfDA7YTpkbyBpZigoY1tyPj4yXXwwKSE9MCYoY1tqPj4yXXwwKSE9MCl7Y1tuPj4yXT0wO3doaWxlKDEpe2lmKChjW24+PjJdfDApPj0oY1tjW2o+PjJdPj4yXXwwKSlicmVhayBhO2lmKCEoaWcoY1tyPj4yXXwwLGNbKGNbaj4+Ml18MCkrOCsoY1tuPj4yXTw8NCk+PjJdfDApfDApKXt0PWNbaD4+Ml18MDtjW3E+PjJdPWNbcj4+Ml07RWgodCwyNzQ4NCxxKX1jW24+PjJdPShjW24+PjJdfDApKzF9fXdoaWxlKDApO2lmKGNbaj4+Ml18MCl7Y1tvPj4yXT0yNCsoY1tjW2o+PjJdPj4yXTw8NCk7dD1jW28+PjJdfDA7Y1twPj4yXT1VdyhjW20+PjJdfDAsY1tqPj4yXXwwLHQsKCh0fDApPDApPDwzMT4+MzEpfDB9ZWxzZSBjW3A+PjJdPXNoKGNbbT4+Ml18MCwyNCwwKXwwO2lmKGFbKGNbbT4+Ml18MCkrNjk+PjBdfDApe2V2KGNbbT4+Ml18MCxjW2s+PjJdfDApO2Z2KGNbbT4+Ml18MCxjW2w+PjJdfDApO1RmKGNbbT4+Ml18MCxjW3I+PjJdfDApO2NbcD4+Ml09Y1tqPj4yXTt0PWNbcD4+Ml18MDtpPXM7cmV0dXJuIHR8MH1lbHNle2NbKGNbcD4+Ml18MCkrOCsoY1tjW3A+PjJdPj4yXTw8NCkrOD4+Ml09Y1tsPj4yXTtjWyhjW3A+PjJdfDApKzgrKGNbY1twPj4yXT4+Ml08PDQpKzQ+PjJdPWNbaz4+Ml07Y1soY1twPj4yXXwwKSs4KyhjW2NbcD4+Ml0+PjJdPDw0KT4+Ml09Y1tyPj4yXTtjWyhjW3A+PjJdfDApKzgrKGNbY1twPj4yXT4+Ml08PDQpKzEyPj4yXT0wO3Q9Y1twPj4yXXwwO2NbdD4+Ml09KGNbdD4+Ml18MCkrMTt0PWNbcD4+Ml18MDtpPXM7cmV0dXJuIHR8MH1yZXR1cm4gMH1mdW5jdGlvbiBSdyhmLGcpe2Y9ZnwwO2c9Z3wwO3ZhciBoPTAsaj0wLGs9MCxsPTA7aj1pO2k9aSsxNnwwO2w9ais0fDA7az1qKzh8MDtoPWo7Y1tsPj4yXT1mO2Fbaz4+MF09ZztjW2g+PjJdPWJbMTA4MDYrKGNbbD4+Ml08PDEpPj4xXTtjW2g+PjJdPShjW2g+PjJdfDApKyhkW2s+PjBdfDApO2k9ajtyZXR1cm4gZVsxMTQ1NisoY1toPj4yXTw8MSk+PjFdfDB9ZnVuY3Rpb24gU3coYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wO2I9aTtpPWkrMTZ8MDtkPWIrNHwwO2U9YjtjW2Q+PjJdPWE7Y1tlPj4yXT1jWyhjW2Q+PjJdfDApKzQ+PjJdO2NbKGNbZD4+Ml18MCkrND4+Ml09Y1tlPj4yXTtpPWI7cmV0dXJufWZ1bmN0aW9uIFR3KGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MDtnPWk7aT1pKzE2fDA7ZD1nKzh8MDtlPWcrNHwwO2Y9ZztjW2Q+PjJdPWE7Y1tlPj4yXT1iO2lmKGNbZT4+Ml18MCl7Y1tmPj4yXT1ZdyhjW2Q+PjJdfDAsY1tjW2U+PjJdPj4yXXwwLGNbKGNbZT4+Ml18MCkrND4+Ml18MCwwKXwwO1p3KGNbZj4+Ml18MCk7Zj1jW2Y+PjJdfDA7aT1nO3JldHVybiBmfDB9ZWxzZXtjW2Y+PjJdPTA7Zj1jW2Y+PjJdfDA7aT1nO3JldHVybiBmfDB9cmV0dXJuIDB9ZnVuY3Rpb24gVXcoYSxiLGQsZil7YT1hfDA7Yj1ifDA7ZD1kfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTA7bD1pO2k9aSszMnwwO2c9bCsxNnwwO2g9bCsxMnwwO2o9bCs4fDA7az1sO2NbaD4+Ml09YTtjW2o+PjJdPWI7Yj1rO2NbYj4+Ml09ZDtjW2IrND4+Ml09ZjtkPWNbaD4+Ml18MDtpZighKGNbaj4+Ml18MCkpe2NbZz4+Ml09VncoZCxjW2s+PjJdfDAsY1trKzQ+PjJdfDApfDA7az1jW2c+PjJdfDA7aT1sO3JldHVybiBrfDB9aWYoKGx1KGQsY1tqPj4yXXwwKXwwKSE9MD8oYj1rLGE9Y1tiKzQ+PjJdfDAsYT4+PjA8MHwoKGF8MCk9PTA/KGNbYj4+Ml18MCk+Pj4wPD0oZVsoY1toPj4yXXwwKSsyNTYrND4+MV18MCk+Pj4wOjApKTowKXtjW2c+PjJdPWNbaj4+Ml07az1jW2c+PjJdfDA7aT1sO3JldHVybiBrfDB9Y1tnPj4yXT1XdyhjW2g+PjJdfDAsY1tqPj4yXXwwLGNbaz4+Ml18MCxjW2srND4+Ml18MCl8MDtrPWNbZz4+Ml18MDtpPWw7cmV0dXJuIGt8MH1mdW5jdGlvbiBWdyhiLGQsZil7Yj1ifDA7ZD1kfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTA7bD1pO2k9aSszMnwwO2c9bCsxNnwwO2g9bCsxMnwwO2o9bDtrPWwrOHwwO2NbaD4+Ml09YjtiPWo7Y1tiPj4yXT1kO2NbYis0Pj4yXT1mO2RvIGlmKGNbKGNbaD4+Ml18MCkrMjU2Pj4yXXwwKXtpZihhWyhjW2g+PjJdfDApKzY5Pj4wXXwwKXtjW2c+PjJdPTA7az1jW2c+PjJdfDA7aT1sO3JldHVybiBrfDB9fWVsc2V7Yj1qO2Y9Y1tiKzQ+PjJdfDA7ZD0oY1toPj4yXXwwKSsyNTZ8MDtpZihmPj4+MD4wfCgoZnwwKT09MD8oY1tiPj4yXXwwKT4+PjA+KGVbKGNbaD4+Ml18MCkrMjU2KzQ+PjFdfDApPj4+MDowKSl7az1kKzE2KzR8MDtjW2s+PjJdPShjW2s+PjJdfDApKzE7YnJlYWt9Yj1jW2QrMjg+PjJdfDA7Y1trPj4yXT1iO2lmKCFiKXtrPShjW2g+PjJdfDApKzI1NisxNis4fDA7Y1trPj4yXT0oY1trPj4yXXwwKSsxO2JyZWFrfWNbKGNbaD4+Ml18MCkrMjU2KzI4Pj4yXT1jW2Nbaz4+Ml0+PjJdO2o9KGNbaD4+Ml18MCkrMjU2Kzh8MDtjW2o+PjJdPShjW2o+PjJdfDApKzE7aj0oY1toPj4yXXwwKSsyNTYrMTZ8MDtjW2o+PjJdPShjW2o+PjJdfDApKzE7aWYoKGNbKGNbaD4+Ml18MCkrMjU2Kzg+PjJdfDApPihjWyhjW2g+PjJdfDApKzI1NisxMj4+Ml18MCkpY1soY1toPj4yXXwwKSsyNTYrMTI+PjJdPWNbKGNbaD4+Ml18MCkrMjU2Kzg+PjJdO2NbZz4+Ml09Y1trPj4yXTtrPWNbZz4+Ml18MDtpPWw7cmV0dXJuIGt8MH13aGlsZSgwKTtrPWo7Y1tnPj4yXT1YdyhjW2g+PjJdfDAsY1trPj4yXXwwLGNbays0Pj4yXXwwKXwwO2s9Y1tnPj4yXXwwO2k9bDtyZXR1cm4ga3wwfWZ1bmN0aW9uIFd3KGEsYixmLGcpe2E9YXwwO2I9YnwwO2Y9ZnwwO2c9Z3wwO3ZhciBoPTAsaj0wLGs9MCxsPTAsbT0wO209aTtpPWkrMzJ8MDtoPW0rMTZ8MDtqPW0rMTJ8MDtrPW07bD1tKzh8MDtjW2g+PjJdPWE7Y1tqPj4yXT1iO2I9aztjW2I+PjJdPWY7Y1tiKzQ+PjJdPWc7Y1tsPj4yXT0wO2lmKGRbKGNbaD4+Ml18MCkrNjk+PjBdfDApe2w9Y1tsPj4yXXwwO2k9bTtyZXR1cm4gbHwwfWlmKGx1KGNbaD4+Ml18MCxjW2o+PjJdfDApfDApe2I9aztjW2w+PjJdPVZ3KGNbaD4+Ml18MCxjW2I+PjJdfDAsY1tiKzQ+PjJdfDApfDA7aWYoIShjW2w+PjJdfDApKXtsPWNbbD4+Ml18MDtpPW07cmV0dXJuIGx8MH1UUihjW2w+PjJdfDAsY1tqPj4yXXwwLGVbKGNbaD4+Ml18MCkrMjU2KzQ+PjFdfDB8MCl8MDtUZihjW2g+PjJdfDAsY1tqPj4yXXwwKTtsPWNbbD4+Ml18MDtpPW07cmV0dXJuIGx8MH1lbHNle2I9aztjW2w+PjJdPU1kKGNbaj4+Ml18MCxjW2I+PjJdfDAsY1tiKzQ+PjJdfDApfDA7aWYoY1tsPj4yXXwwKXtsPWNbbD4+Ml18MDtpPW07cmV0dXJuIGx8MH1taChjW2g+PjJdfDApO2w9Y1tsPj4yXXwwO2k9bTtyZXR1cm4gbHwwfXJldHVybiAwfWZ1bmN0aW9uIFh3KGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wO2c9aTtpPWkrMTZ8MDtlPWcrMTJ8MDtoPWc7Zj1nKzh8MDtjW2U+PjJdPWE7YT1oO2NbYT4+Ml09YjtjW2ErND4+Ml09ZDthPWg7Y1tmPj4yXT0kZihjW2E+PjJdfDAsY1thKzQ+PjJdfDApfDA7aWYoY1tmPj4yXXwwKXtoPWNbZj4+Ml18MDtpPWc7cmV0dXJuIGh8MH1taChjW2U+PjJdfDApO2g9Y1tmPj4yXXwwO2k9ZztyZXR1cm4gaHwwfWZ1bmN0aW9uIFl3KGIsZCxlLGYpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wLG09MDttPWk7aT1pKzMyfDA7Zz1tKzIwfDA7aD1tKzE2fDA7aj1tKzEyfDA7az1tO2w9bSs4fDA7Y1toPj4yXT1iO2Nbaj4+Ml09ZDtkPWs7Y1tkPj4yXT1lO2NbZCs0Pj4yXT1mO2lmKCEoY1tqPj4yXXwwKSl7Y1tnPj4yXT0wO2w9Y1tnPj4yXXwwO2k9bTtyZXR1cm4gbHwwfWI9Y1toPj4yXXwwO2Q9aztkPVJSKGNbZD4+Ml18MCxjW2QrND4+Ml18MCwxLDApfDA7Y1tsPj4yXT1WdyhiLGQsQyl8MDtpZihjW2w+PjJdfDApe1RSKGNbbD4+Ml18MCxjW2o+PjJdfDAsY1trPj4yXXwwKXwwO2FbKGNbbD4+Ml18MCkrKGNbaz4+Ml18MCk+PjBdPTB9Y1tnPj4yXT1jW2w+PjJdO2w9Y1tnPj4yXXwwO2k9bTtyZXR1cm4gbHwwfWZ1bmN0aW9uIFp3KGIpe2I9YnwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MDtqPWk7aT1pKzE2fDA7ZT1qKzh8MDtoPWorMTJ8MDtmPWorNHwwO2c9ajtjW2U+PjJdPWI7aWYoIShjW2U+PjJdfDApKXtpPWo7cmV0dXJufWFbaD4+MF09YVtjW2U+PjJdPj4wXXwwO2lmKCEoZFsxODQwMysoZFtoPj4wXXwwKT4+MF0mMTI4KSl7aT1qO3JldHVybn1pZigoYVtoPj4wXXwwKT09OTEpYVtoPj4wXT05MztjW2Y+PjJdPTE7Y1tnPj4yXT0wO3doaWxlKDEpe2I9Y1tmPj4yXXwwO2lmKChhWyhjW2U+PjJdfDApKyhjW2Y+PjJdfDApPj4wXXwwKT09KGFbaD4+MF18MCkpe2lmKChhWyhjW2U+PjJdfDApKyhiKzEpPj4wXXwwKSE9KGFbaD4+MF18MCkpYnJlYWs7az1hW2g+PjBdfDA7Yj1jW2c+PjJdfDA7Y1tnPj4yXT1iKzE7YVsoY1tlPj4yXXwwKStiPj4wXT1rO2NbZj4+Ml09KGNbZj4+Ml18MCkrMX1lbHNle2I9YVsoY1tlPj4yXXwwKStiPj4wXXwwO2s9Y1tnPj4yXXwwO2NbZz4+Ml09aysxO2FbKGNbZT4+Ml18MCkraz4+MF09Yn1jW2Y+PjJdPShjW2Y+PjJdfDApKzF9YVsoY1tlPj4yXXwwKSsoY1tnPj4yXXwwKT4+MF09MDtpPWo7cmV0dXJufWZ1bmN0aW9uIF93KGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTAsZz0wLGg9MDtnPWk7aT1pKzE2fDA7Yj1nKzEyfDA7Zj1nKzh8MDtlPWcrNHwwO2Q9ZztjW2I+PjJdPWE7aWYoIShjWyhjW2I+PjJdfDApKzQ1Mj4+Ml18MCkpe2k9ZztyZXR1cm59aWYoIShjWyhjW2I+PjJdfDApKzQ0MD4+Ml18MCkpe2k9ZztyZXR1cm59Y1tmPj4yXT1jWyhjW2I+PjJdfDApKzQ1Mj4+Ml07Y1tlPj4yXT1jWyhjW2I+PjJdfDApKzQ1Mis0Pj4yXTtjW2Q+PjJdPWNbY1tiPj4yXT4+Ml07aD1jW2Q+PjJdfDA7Yj1jWyhjW2I+PjJdfDApKzQ0MD4+Ml18MDthPWNbZT4+Ml18MDskdyhoLGIsWXcoY1tkPj4yXXwwLGNbZj4+Ml18MCxhLCgoYXwwKTwwKTw8MzE+PjMxKXwwKTtpPWc7cmV0dXJufWZ1bmN0aW9uICR3KGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wO2s9aTtpPWkrMzJ8MDtlPWsrMjB8MDtmPWsrMTZ8MDtnPWsrMTJ8MDtsPWsrOHwwO2g9ays0fDA7aj1rO2NbZT4+Ml09YTtjW2Y+PjJdPWI7Y1tnPj4yXT1kO2NbbD4+Ml09MisoY1soY1tmPj4yXXwwKSs0OD4+Ml18MCk8PDI7ZD1jW2w+PjJdfDA7Y1toPj4yXT1VdyhjW2U+PjJdfDAsY1soY1tmPj4yXXwwKSs1Mj4+Ml18MCxkLCgoZHwwKTwwKTw8MzE+PjMxKXwwO2lmKCEoY1toPj4yXXwwKSl7VGYoY1tlPj4yXXwwLGNbZz4+Ml18MCk7aT1rO3JldHVybn1lbHNle2Q9KGNbZj4+Ml18MCkrNDh8MDtsPWNbZD4+Ml18MDtjW2Q+PjJdPWwrMTtjW2o+PjJdPWw7Y1soY1toPj4yXXwwKSsoY1tqPj4yXTw8Mik+PjJdPWNbZz4+Ml07Y1soY1toPj4yXXwwKSsoKGNbaj4+Ml18MCkrMTw8Mik+PjJdPTA7Y1soY1tmPj4yXXwwKSs1Mj4+Ml09Y1toPj4yXTtpPWs7cmV0dXJufX1mdW5jdGlvbiBheChhLGIsZSxmLGcpe2E9YXwwO2I9YnwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO3ZhciBoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTA7cj1pO2k9aSs0OHwwO3E9cjtoPXIrMzJ8MDtqPXIrMjh8MDtrPXIrMjR8MDtsPXIrMjB8MDttPXIrMTZ8MDtuPXIrMTJ8MDtvPXIrOHwwO3A9cis0fDA7Y1tqPj4yXT1hO2Nbaz4+Ml09YjtjW2w+PjJdPWU7Y1ttPj4yXT1mO2Nbbj4+Ml09ZztjW28+PjJdPWNbY1tqPj4yXT4+Ml07aWYoKGRbKGNbbz4+Ml18MCkrMTQ4KzU+PjBdfDB8MCk9PTA/KGRbKGNbaj4+Ml18MCkrNDEwPj4wXXwwfDApPT0wOjApe2lmKCEoY1soY1tvPj4yXXwwKSsyOTY+PjJdfDApKXtjW2g+PjJdPTA7Zz1jW2g+PjJdfDA7aT1yO3JldHVybiBnfDB9Y1twPj4yXT1TYltjWyhjW28+PjJdfDApKzI5Nj4+Ml0mMjU1XShjWyhjW28+PjJdfDApKzMwMD4+Ml18MCxjW2s+PjJdfDAsY1tsPj4yXXwwLGNbbT4+Ml18MCxjW24+PjJdfDAsY1soY1tqPj4yXXwwKSs0NDg+PjJdfDApfDA7aWYoKGNbcD4+Ml18MCkhPTEpe2lmKChjW3A+PjJdfDApIT0wJihjW3A+PjJdfDApIT0yKXtjW3A+PjJdPTE7YngoY1tqPj4yXXwwKX19ZWxzZXtFaChjW2o+PjJdfDAsMjc1MTQscSk7Y1soY1tqPj4yXXwwKSsxMj4+Ml09MjN9Y1toPj4yXT1jW3A+PjJdO2c9Y1toPj4yXXwwO2k9cjtyZXR1cm4gZ3wwfWNbaD4+Ml09MDtnPWNbaD4+Ml18MDtpPXI7cmV0dXJuIGd8MH1mdW5jdGlvbiBieChhKXthPWF8MDt2YXIgYj0wLGQ9MDtiPWk7aT1pKzE2fDA7ZD1iKzR8MDtjW2Q+PjJdPWE7RWgoY1tkPj4yXXwwLDI3NTI5LGIpO2NbKGNbZD4+Ml18MCkrMTI+PjJdPTE7aT1iO3JldHVybn1mdW5jdGlvbiBjeChiLGQsZSl7Yj1ifDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTA7bj1pO2k9aSsxMjh8MDtoPW4rMzZ8MDtmPW4rMzJ8MDtnPW4rMTZ8MDttPW4rOHwwO2w9bis0fDA7aj1uO2s9bis0MHwwO2NbaD4+Ml09YjtjW2Y+PjJdPWQ7Y1tsPj4yXT0wO2Nbaj4+Ml09Y1tjW2g+PjJdPj4yXTtpZihjWyhjW2g+PjJdfDApKzM2Pj4yXXwwKXtpPW47cmV0dXJufWNbZz4+Ml09ZTtjW20+PjJdPW94KGNbaj4+Ml18MCxjW2Y+PjJdfDAsZyl8MDtpZighKGNbbT4+Ml18MCkpe2k9bjtyZXR1cm59Zj0oY1toPj4yXXwwKSsxOHwwO2FbZj4+MF09KGFbZj4+MF18MCkrMTw8MjQ+PjI0O2Y9aztnPShjW2g+PjJdfDApKzQwMHwwO2I9Zis4MHwwO2Rve2FbZj4+MF09YVtnPj4wXXwwO2Y9ZisxfDA7Zz1nKzF8MH13aGlsZSgoZnwwKTwoYnwwKSk7Zj0oY1toPj4yXXwwKSs0MDB8MDtiPWYrODB8MDtkb3thW2Y+PjBdPTA7Zj1mKzF8MH13aGlsZSgoZnwwKTwoYnwwKSk7WWgoY1toPj4yXXwwLGNbbT4+Ml18MCxsKXwwO1RmKGNbaj4+Ml18MCxjW2w+PjJdfDApO1RmKGNbaj4+Ml18MCxjW20+PjJdfDApO2Y9KGNbaD4+Ml18MCkrNDAwfDA7Zz1rO2I9Zis4MHwwO2Rve2FbZj4+MF09YVtnPj4wXXwwO2Y9ZisxfDA7Zz1nKzF8MH13aGlsZSgoZnwwKTwoYnwwKSk7bT0oY1toPj4yXXwwKSsxOHwwO2FbbT4+MF09KGFbbT4+MF18MCkrLTE8PDI0Pj4yNDtpPW47cmV0dXJufWZ1bmN0aW9uIGR4KGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MDtlPWk7aT1pKzE2fDA7Yj1lKzR8MDtkPWU7Y1tiPj4yXT1hO2NbZD4+Ml09Y1soY1tiPj4yXXwwKSs4Pj4yXTtpZihjW2Q+PjJdfDApe2Q9Y1tkPj4yXXwwO2k9ZTtyZXR1cm4gZHwwfWVsc2V7ZD1ueChjW2I+PjJdfDApfDA7aT1lO3JldHVybiBkfDB9cmV0dXJuIDB9ZnVuY3Rpb24gZXgoYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MDtkPWk7aT1pKzE2fDA7aD1kKzEyfDA7ZT1kKzh8MDtmPWQrNHwwO2c9ZDtjW2g+PjJdPWE7Y1tlPj4yXT1iO2NbZj4+Ml09Y1tjW2g+PjJdPj4yXTtjW2c+PjJdPWNbKGNbaD4+Ml18MCkrOD4+Ml07angoY1tnPj4yXXwwLDEwMixjW2U+PjJdfDAsMSwoY1tjWyhjWyhjW2Y+PjJdfDApKzE2Pj4yXXwwKSsoY1tlPj4yXTw8NCkrMTI+PjJdPj4yXXwwKSsxfDApfDA7aT1kO3JldHVybn1mdW5jdGlvbiBmeChhLGIpe2E9YXwwO2I9YnwwO3ZhciBkPTAsZT0wLGY9MDtkPWk7aT1pKzE2fDA7Zj1kKzR8MDtlPWQ7Y1tmPj4yXT1hO2NbZT4+Ml09YjthPWp4KGNbZj4+Ml18MCxjW2U+PjJdfDAsMCwwLDApfDA7aT1kO3JldHVybiBhfDB9ZnVuY3Rpb24gZ3goYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wO2c9aTtpPWkrMTZ8MDtlPWcrMTJ8MDtqPWcrOHwwO2g9Zys0fDA7Zj1nO2NbZT4+Ml09YTtjW2o+PjJdPWI7Y1toPj4yXT1kO214KGNbZT4+Ml18MCwxMzYsY1tqPj4yXXwwLDAsMCxjW2g+PjJdfDAsLTEpfDA7Y1tmPj4yXT0wO3doaWxlKDEpe2lmKChjW2Y+PjJdfDApPj0oY1soY1tjW2U+PjJdPj4yXXwwKSsyMD4+Ml18MCkpYnJlYWs7TGgoY1tlPj4yXXwwLGNbZj4+Ml18MCk7Y1tmPj4yXT0oY1tmPj4yXXwwKSsxfWk9ZztyZXR1cm59ZnVuY3Rpb24gaHgoYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTA7ZT1pO2k9aSsxNnwwO2g9ZSs4fDA7Zz1lKzR8MDtmPWU7Y1toPj4yXT1hO2NbZz4+Ml09YjtjW2Y+PjJdPWQ7ZD1teChjW2g+PjJdfDAsOTcsMCxjW2c+PjJdfDAsMCxjW2Y+PjJdfDAsMCl8MDtpPWU7cmV0dXJuIGR8MH1mdW5jdGlvbiBpeChhLGIsZCxlKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MDtmPWk7aT1pKzE2fDA7az1mKzEyfDA7aj1mKzh8MDtoPWYrNHwwO2c9ZjtjW2s+PjJdPWE7Y1tqPj4yXT1iO2NbaD4+Ml09ZDtjW2c+PjJdPWU7ZT1qeChjW2s+PjJdfDAsY1tqPj4yXXwwLGNbaD4+Ml18MCxjW2c+PjJdfDAsMCl8MDtpPWY7cmV0dXJuIGV8MH1mdW5jdGlvbiBqeChiLGQsZSxmLGcpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO3ZhciBoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MDtxPWk7aT1pKzMyfDA7aD1xKzI4fDA7aj1xKzI0fDA7az1xKzIwfDA7bD1xKzE2fDA7bT1xKzEyfDA7bj1xKzh8MDtvPXErNHwwO3A9cTtjW2o+PjJdPWI7Y1trPj4yXT1kO2NbbD4+Ml09ZTtjW20+PjJdPWY7Y1tuPj4yXT1nO2Nbbz4+Ml09Y1soY1tqPj4yXXwwKSsxMzY+PjJdO2Q9Y1tqPj4yXXwwO2lmKChjWyhjWyhjW2o+PjJdfDApKzEyPj4yXXwwKSs0OD4+Ml18MCk8PShjW28+PjJdfDApKXtjW2g+PjJdPWt4KGQsY1trPj4yXXwwLGNbbD4+Ml18MCxjW20+PjJdfDAsY1tuPj4yXXwwKXwwO3A9Y1toPj4yXXwwO2k9cTtyZXR1cm4gcHwwfWVsc2V7Zz1kKzEzNnwwO2NbZz4+Ml09KGNbZz4+Ml18MCkrMTtjW3A+PjJdPShjWyhjW2o+PjJdfDApKzg4Pj4yXXwwKSsoKGNbbz4+Ml18MCkqMjB8MCk7YVtjW3A+PjJdPj4wXT1jW2s+PjJdO2FbKGNbcD4+Ml18MCkrMz4+MF09MDtjWyhjW3A+PjJdfDApKzQ+PjJdPWNbbD4+Ml07Y1soY1twPj4yXXwwKSs4Pj4yXT1jW20+PjJdO2NbKGNbcD4+Ml18MCkrMTI+PjJdPWNbbj4+Ml07Y1soY1twPj4yXXwwKSsxNj4+Ml09MDthWyhjW3A+PjJdfDApKzE+PjBdPTA7Y1toPj4yXT1jW28+PjJdO3A9Y1toPj4yXXwwO2k9cTtyZXR1cm4gcHwwfXJldHVybiAwfWZ1bmN0aW9uIGt4KGEsYixkLGUsZil7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MDtuPWk7aT1pKzMyfDA7Zz1uKzIwfDA7aD1uKzE2fDA7aj1uKzEyfDA7az1uKzh8MDtsPW4rNHwwO209bjtjW2g+PjJdPWE7Y1tqPj4yXT1iO2Nbaz4+Ml09ZDtjW2w+PjJdPWU7Y1ttPj4yXT1mO2lmKGx4KGNbaD4+Ml18MCwxKXwwKXtjW2c+PjJdPTE7Zj1jW2c+PjJdfDA7aT1uO3JldHVybiBmfDB9ZWxzZXtjW2c+PjJdPWp4KGNbaD4+Ml18MCxjW2o+PjJdfDAsY1trPj4yXXwwLGNbbD4+Ml18MCxjW20+PjJdfDApfDA7Zj1jW2c+PjJdfDA7aT1uO3JldHVybiBmfDB9cmV0dXJuIDB9ZnVuY3Rpb24gbHgoYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MDtoPWk7aT1pKzMyfDA7ZD1oKzE2fDA7Zz1oKzh8MDtmPWgrNHwwO2U9aDtjW2Q+PjJdPWE7Y1toKzEyPj4yXT1iO2NbZj4+Ml09Y1soY1tkPj4yXXwwKSsxMj4+Ml07aWYoY1soY1tmPj4yXXwwKSs0OD4+Ml18MCliPWNbKGNbZj4+Ml18MCkrNDg+PjJdPDwxO2Vsc2UgYj01MTtjW2U+PjJdPWI7Y1tnPj4yXT1VdyhjW2NbZj4+Ml0+PjJdfDAsY1soY1tkPj4yXXwwKSs4OD4+Ml18MCwoY1tlPj4yXXwwKSoyMHwwLDApfDA7aWYoIShjW2c+PjJdfDApKXtnPWNbZz4+Ml18MDtnPShnfDApIT0wO2c9Zz8wOjc7aT1oO3JldHVybiBnfDB9ZT1rdShjW2NbZj4+Ml0+PjJdfDAsY1tnPj4yXXwwKXwwO2NbKGNbZj4+Ml18MCkrNTI+PjJdPWU7Y1soY1tmPj4yXXwwKSs0OD4+Ml09KChjWyhjW2Y+PjJdfDApKzUyPj4yXXwwKT4+PjApLzIwfDA7Y1soY1tkPj4yXXwwKSs4OD4+Ml09Y1tnPj4yXTtnPWNbZz4+Ml18MDtnPShnfDApIT0wO2c9Zz8wOjc7aT1oO3JldHVybiBnfDB9ZnVuY3Rpb24gbXgoYSxiLGQsZSxmLGcsaCl7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7dmFyIGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wO2s9aTtpPWkrMzJ8MDtuPWsrMjh8MDtyPWsrMjR8MDtxPWsrMjB8MDtwPWsrMTZ8MDtvPWsrMTJ8MDttPWsrOHwwO2w9ays0fDA7aj1rO2Nbbj4+Ml09YTtjW3I+PjJdPWI7Y1txPj4yXT1kO2NbcD4+Ml09ZTtjW28+PjJdPWY7Y1ttPj4yXT1nO2NbbD4+Ml09aDtjW2o+PjJdPWp4KGNbbj4+Ml18MCxjW3I+PjJdfDAsY1txPj4yXXwwLGNbcD4+Ml18MCxjW28+PjJdfDApfDA7TWgoY1tuPj4yXXwwLGNbaj4+Ml18MCxjW20+PjJdfDAsY1tsPj4yXXwwKTtpPWs7cmV0dXJuIGNbaj4+Ml18MH1mdW5jdGlvbiBueChiKXtiPWJ8MDt2YXIgZD0wLGY9MCxnPTA7Zz1pO2k9aSsxNnwwO2Q9Zys0fDA7Zj1nO2NbZD4+Ml09YjtiPUhoKGNbZD4+Ml18MCl8MDtjWyhjW2Q+PjJdfDApKzg+PjJdPWI7Y1tmPj4yXT1iO2lmKGNbZj4+Ml18MClpeChjW2Y+PjJdfDAsNzEsMCwxKXwwO2lmKGNbKGNbZD4+Ml18MCkrMTI0Pj4yXXwwKXtmPWNbZj4+Ml18MDtpPWc7cmV0dXJuIGZ8MH1pZigoZVsoY1tjW2Q+PjJdPj4yXXwwKSs2ND4+MV18MCkmOCl7Zj1jW2Y+PjJdfDA7aT1nO3JldHVybiBmfDB9YVsoY1tkPj4yXXwwKSsyMz4+MF09MTtmPWNbZj4+Ml18MDtpPWc7cmV0dXJuIGZ8MH1mdW5jdGlvbiBveChiLGUsZil7Yj1ifDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wO2o9aTtpPWkrMTI4fDA7Zz1qKzQwfDA7bT1qKzM2fDA7bD1qKzMyfDA7aD1qKzI4fDA7az1qO2NbZz4+Ml09YjtjW20+PjJdPWU7Y1tsPj4yXT1mO2RnKGssY1tnPj4yXXwwLGorNDR8MCw3MCxjWyhjW2c+PjJdfDApKzk2Pj4yXXwwKTthW2srMjU+PjBdPTE7ZWcoayxjW20+PjJdfDAsY1tsPj4yXXwwKTtjW2g+PjJdPWZnKGspfDA7aWYoKGRbaysyND4+MF18MHwwKSE9MSl7bT1jW2g+PjJdfDA7aT1qO3JldHVybiBtfDB9bWgoY1tnPj4yXXwwKTttPWNbaD4+Ml18MDtpPWo7cmV0dXJuIG18MH1mdW5jdGlvbiBweChhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wO2s9aTtpPWkrMzJ8MDtlPWsrMTZ8MDtmPWsrMTJ8MDtnPWsrOHwwO2o9ays0fDA7aD1rO2NbZT4+Ml09YTtjW2Y+PjJdPWI7Y1tnPj4yXT1kO2lmKGNbY1tnPj4yXT4+Ml18MCl7Y1toPj4yXT1GaChjW2NbZT4+Ml0+PjJdfDAsY1tjW2c+PjJdPj4yXXwwKXwwO2Nbaj4+Ml09Y1soY1soY1tjW2U+PjJdPj4yXXwwKSsxNj4+Ml18MCkrKGNbaD4+Ml08PDQpPj4yXX1lbHNlIGNbaj4+Ml09Y1soY1tnPj4yXXwwKSs0Pj4yXTtqPURoKGNbZT4+Ml18MCxjW2Y+PjJdfDAsY1soY1tnPj4yXXwwKSs4Pj4yXXwwLGNbaj4+Ml18MCl8MDtpPWs7cmV0dXJuIGp8MH1mdW5jdGlvbiBxeChhLGIpe2E9YXwwO2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wO2g9aTtpPWkrMTZ8MDtnPWg7ZD1oKzEyfDA7ZT1oKzh8MDtmPWgrNHwwO2NbZT4+Ml09YTtjW2Y+PjJdPWI7aWYoKEpmKGNbZj4+Ml18MCl8MCk+Nj8wPT0oemQoY1tmPj4yXXwwLDI3ODQ0LDcpfDApOjApe2I9Y1tlPj4yXXwwO2NbZz4+Ml09Y1tmPj4yXTtFaChiLDI3ODUyLGcpO2NbZD4+Ml09MTtiPWNbZD4+Ml18MDtpPWg7cmV0dXJuIGJ8MH1jW2Q+PjJdPTA7Yj1jW2Q+PjJdfDA7aT1oO3JldHVybiBifDB9ZnVuY3Rpb24gcngoYixlLGYpe2I9YnwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wO2w9aTtpPWkrMTZ8MDtnPWwrMTJ8MDtoPWwrOHwwO2o9bCs0fDA7az1sO2NbZz4+Ml09YjtjW2g+PjJdPWU7Y1tqPj4yXT1mO2Y9Y1tnPj4yXXwwO2lmKGNbKGNbZz4+Ml18MCkrMTI0Pj4yXXwwKWY9Y1tmKzEyND4+Ml18MDtjW2s+PjJdPWY7c3goY1tnPj4yXXwwLGNbaj4+Ml18MCk7Zz0oY1trPj4yXXwwKSs5MnwwO2NbZz4+Ml09Y1tnPj4yXXwxPDxjW2o+PjJdO2s9KGNbaz4+Ml18MCkrMjB8MDthW2s+PjBdPWRbaz4+MF18MHxjW2g+PjJdO2k9bDtyZXR1cm59ZnVuY3Rpb24gc3goYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wO2Y9aTtpPWkrMTZ8MDtnPWYrOHwwO2Q9Zis0fDA7ZT1mO2NbZz4+Ml09YTtjW2Q+PjJdPWI7Yj1jW2c+PjJdfDA7aWYoY1soY1tnPj4yXXwwKSsxMjQ+PjJdfDApYj1jW2IrMTI0Pj4yXXwwO2NbZT4+Ml09YjtpZigoY1soY1tlPj4yXXwwKSs5Nj4+Ml0mMTw8Y1tkPj4yXXwwKSE9MHwwKXtpPWY7cmV0dXJufWc9KGNbZT4+Ml18MCkrOTZ8MDtjW2c+PjJdPWNbZz4+Ml18MTw8Y1tkPj4yXTtpZigoY1tkPj4yXXwwKSE9MSl7aT1mO3JldHVybn10eChjW2U+PjJdfDApfDA7aT1mO3JldHVybn1mdW5jdGlvbiB0eChiKXtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wO2s9aTtpPWkrMzJ8MDtqPWs7ZD1rKzIwfDA7ZT1rKzE2fDA7Zj1rKzEyfDA7aD1rKzh8MDtnPWsrNHwwO2NbZT4+Ml09YjtjW2Y+PjJdPWNbY1tlPj4yXT4+Ml07aWYoKGNbKGNbKGNbZj4+Ml18MCkrMTY+PjJdfDApKzE2KzQ+PjJdfDApPT0wPyhhWyhjW2U+PjJdfDApKzQwOT4+MF18MCk9PTA6MCl7Y1toPj4yXT1iayhjW2NbZj4+Ml0+PjJdfDAsMCxjW2Y+PjJdfDAsZywwLDU0Mil8MDtpZihjW2g+PjJdfDApe0VoKGNbZT4+Ml18MCwyNzc3NCxqKTtjWyhjW2U+PjJdfDApKzEyPj4yXT1jW2g+PjJdO2NbZD4+Ml09MTtqPWNbZD4+Ml18MDtpPWs7cmV0dXJuIGp8MH1jWyhjWyhjW2Y+PjJdfDApKzE2Pj4yXXwwKSsxNis0Pj4yXT1jW2c+PjJdO2lmKDc9PShDaShjW2c+PjJdfDAsY1soY1tmPj4yXXwwKSs4MD4+Ml18MCwtMSwwKXwwKSl7bWgoY1tmPj4yXXwwKTtjW2Q+PjJdPTE7aj1jW2Q+PjJdfDA7aT1rO3JldHVybiBqfDB9fWNbZD4+Ml09MDtqPWNbZD4+Ml18MDtpPWs7cmV0dXJuIGp8MH1mdW5jdGlvbiB1eChiLGQsZSxmLGcpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO3ZhciBoPTAsaj0wLGs9MCxsPTAsbT0wLG49MDtuPWk7aT1pKzE2fDA7aD1uKzh8MDtqPW4rNHwwO2s9bisxM3wwO2w9bisxMnwwO209bjtjW2g+PjJdPWI7Y1tqPj4yXT1kO2Fbaz4+MF09ZTthW2w+PjBdPWY7Y1ttPj4yXT1nO2lmKCEoY1tqPj4yXXwwKSl7Zz0wO2k9bjtyZXR1cm4gZ3wwfWc9Q3goY1toPj4yXXwwLGNbaj4+Ml18MCxhW2s+PjBdfDAsYVtsPj4wXXwwLGNbbT4+Ml18MCwwKXwwO2k9bjtyZXR1cm4gZ3wwfWZ1bmN0aW9uIHZ4KGIpe2I9YnwwO3ZhciBlPTAsZj0wLGc9MCxoPTA7Zz1pO2k9aSsxNnwwO2U9Zys0fDA7Zj1nO2NbZj4+Ml09YjtiPWNbZj4+Ml18MDtpZighKGRbKGNbZj4+Ml18MCkrMTk+PjBdfDApKXtiPWIrNDR8MDtmPShjW2I+PjJdfDApKzF8MDtjW2I+PjJdPWY7Y1tlPj4yXT1mO2Y9Y1tlPj4yXXwwO2k9ZztyZXR1cm4gZnwwfWVsc2V7aD1iKzE5fDA7Yj0oYVtoPj4wXXwwKSstMTw8MjQ+PjI0O2FbaD4+MF09YjtjW2U+PjJdPWNbKGNbZj4+Ml18MCkrMzUyKygoYiYyNTUpPDwyKT4+Ml07Zj1jW2U+PjJdfDA7aT1nO3JldHVybiBmfDB9cmV0dXJuIDB9ZnVuY3Rpb24gd3goYSl7YT1hfDA7dmFyIGI9MCxkPTA7ZD1pO2k9aSsxNnwwO2I9ZDtjW2I+PjJdPWE7aT1kO3JldHVybiBjWyhjW2I+PjJdfDApKzEzNj4+Ml18MH1mdW5jdGlvbiB4eChiLGUpe2I9YnwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wO2s9aTtpPWkrMTZ8MDtnPWsrMTJ8MDtoPWsrOHwwO2Y9ays0fDA7aj1rO2NbZz4+Ml09YjtjW2g+PjJdPWU7aWYoIShjW2g+PjJdfDApKXtpPWs7cmV0dXJufWlmKChkWyhjW2c+PjJdfDApKzE5Pj4wXXwwfDApPj04KXtpPWs7cmV0dXJufWNbZj4+Ml09MDtjW2o+PjJdPShjW2c+PjJdfDApKzE1Mjt3aGlsZSgxKXtpZigoY1tmPj4yXXwwKT49KGRbKGNbZz4+Ml18MCkrMjU+PjBdfDB8MCkpe2Y9ODticmVha31pZigoY1soY1tqPj4yXXwwKSsxMj4+Ml18MCk9PShjW2g+PjJdfDApKXtmPTY7YnJlYWt9Y1tmPj4yXT0oY1tmPj4yXXwwKSsxO2Nbaj4+Ml09KGNbaj4+Ml18MCkrMjB9aWYoKGZ8MCk9PTYpe2FbKGNbaj4+Ml18MCkrNj4+MF09MTtpPWs7cmV0dXJufWVsc2UgaWYoKGZ8MCk9PTgpe2g9Y1toPj4yXXwwO2I9KGNbZz4+Ml18MCkrMTl8MDtqPWFbYj4+MF18MDthW2I+PjBdPWorMTw8MjQ+PjI0O2NbKGNbZz4+Ml18MCkrMzUyKygoaiYyNTUpPDwyKT4+Ml09aDtpPWs7cmV0dXJufX1mdW5jdGlvbiB5eChhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MDtvPWk7aT1pKzQ4fDA7bT1vO2U9byszMnwwO2Y9bysyOHwwO2c9bysyNHwwO2w9bysyMHwwO249bysxNnwwO2g9bysxMnwwO2s9bys4fDA7aj1vKzR8MDtjW2U+PjJdPWE7Y1tmPj4yXT1iO2NbZz4+Ml09ZDtjW2w+PjJdPWR4KGNbZT4+Ml18MCl8MDtpZighKGNbbD4+Ml18MCkpe2k9bztyZXR1cm59Y1toPj4yXT1GaChjW2NbZT4+Ml0+PjJdfDAsY1soY1tmPj4yXXwwKSs2ND4+Ml18MCl8MDtjW2s+PjJdPXp4KGNbZT4+Ml18MCxjW2Y+PjJdfDApfDA7d2hpbGUoMSl7aWYoIShjW2s+PjJdfDApKWJyZWFrO2Nbaj4+Ml09RmgoY1tjW2U+PjJdPj4yXXwwLGNbKGNbaz4+Ml18MCkrMjA+PjJdfDApfDA7bXgoY1tsPj4yXXwwLDE0MCxjW2o+PjJdfDAsMCwwLGNbY1trPj4yXT4+Ml18MCwwKXwwO2Nbaz4+Ml09Y1soY1trPj4yXXwwKSszMj4+Ml19bXgoY1tsPj4yXXwwLDEzOCxjW2g+PjJdfDAsMCwwLGNbY1tmPj4yXT4+Ml18MCwwKXwwO2Q9Y1tjW2U+PjJdPj4yXXwwO2NbbT4+Ml09Y1tnPj4yXTtjW24+PjJdPUdoKGQsMjgyMDYsbSl8MDtpZighKGNbbj4+Ml18MCkpe2k9bztyZXR1cm59Z3goY1tsPj4yXXwwLGNbaD4+Ml18MCxjW24+PjJdfDApO2Q9QXgoY1tlPj4yXXwwLGNbZj4+Ml18MCl8MDtjW24+PjJdPWQ7aWYoIWQpe2k9bztyZXR1cm59Z3goY1tsPj4yXXwwLDEsY1tuPj4yXXwwKTtpPW87cmV0dXJufWZ1bmN0aW9uIHp4KGIsZCl7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTA7bD1pO2k9aSszMnwwO2s9bCsyNHwwO209bCsyMHwwO2Y9bCsxNnwwO2U9bCsxMnwwO2g9bCs4fDA7Zz1sKzR8MDtqPWw7Y1ttPj4yXT1iO2NbZj4+Ml09ZDtjW2U+PjJdPWNbKGNbKGNbY1ttPj4yXT4+Ml18MCkrMTY+PjJdfDApKzE2KzEyPj4yXTtjW2g+PjJdPTA7aWYoYVsoY1ttPj4yXXwwKSsxNTA+PjBdfDApe2Nbaz4+Ml09MDttPWNbaz4+Ml18MDtpPWw7cmV0dXJuIG18MH1hOmRvIGlmKChjW2U+PjJdfDApIT0oY1soY1tmPj4yXXwwKSs2ND4+Ml18MCkpe2NbZz4+Ml09Y1soY1tlPj4yXXwwKSs0MCs4Pj4yXTt3aGlsZSgxKXtpZighKGNbZz4+Ml18MCkpYnJlYWsgYTtjW2o+PjJdPWNbKGNbZz4+Ml18MCkrOD4+Ml07aWYoKGNbKGNbaj4+Ml18MCkrMjQ+PjJdfDApPT0oY1soY1tmPj4yXXwwKSs2ND4+Ml18MCk/MD09KGlnKGNbKGNbaj4+Ml18MCkrND4+Ml18MCxjW2NbZj4+Ml0+PjJdfDApfDApOjApe2lmKGNbaD4+Ml18MCliPWNbaD4+Ml18MDtlbHNlIGI9Y1soY1tmPj4yXXwwKSs2MD4+Ml18MDtjWyhjW2o+PjJdfDApKzMyPj4yXT1iO2NbaD4+Ml09Y1tqPj4yXX1jW2c+PjJdPWNbY1tnPj4yXT4+Ml19fXdoaWxlKDApO2lmKGNbaD4+Ml18MCliPWNbaD4+Ml18MDtlbHNlIGI9Y1soY1tmPj4yXXwwKSs2MD4+Ml18MDtjW2s+PjJdPWI7bT1jW2s+PjJdfDA7aT1sO3JldHVybiBtfDB9ZnVuY3Rpb24gQXgoYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTA7bT1pO2k9aSszMnwwO2o9bTtkPW0rMjh8MDtlPW0rMjR8MDtoPW0rMjB8MDtsPW0rMTZ8MDtnPW0rMTJ8MDtmPW0rOHwwO2s9bSs0fDA7Y1tkPj4yXT1hO2NbZT4+Ml09YjtjW2w+PjJdPTA7Y1tnPj4yXT1jWyhjWyhjW2NbZD4+Ml0+PjJdfDApKzE2Pj4yXXwwKSsxNisxMj4+Ml07YTpkbyBpZigoY1soY1tlPj4yXXwwKSs2ND4+Ml18MCkhPShjW2c+PjJdfDApKXtjW2Y+PjJdPWNbY1tkPj4yXT4+Ml07Y1toPj4yXT16eChjW2Q+PjJdfDAsY1tlPj4yXXwwKXwwO3doaWxlKDEpe2lmKCEoY1toPj4yXXwwKSlicmVhayBhO2lmKChjWyhjW2g+PjJdfDApKzIwPj4yXXwwKT09KGNbZz4+Ml18MCkpY1tsPj4yXT1CeChjW2Y+PjJdfDAsY1tsPj4yXXwwLGNbY1toPj4yXT4+Ml18MCl8MDtjW2g+PjJdPWNbKGNbaD4+Ml18MCkrMzI+PjJdfX13aGlsZSgwKTtpZighKGNbbD4+Ml18MCkpe2w9Y1tsPj4yXXwwO2k9bTtyZXR1cm4gbHwwfWg9Y1tjW2Q+PjJdPj4yXXwwO2Nbaj4+Ml09Y1tsPj4yXTtjW2s+PjJdPUdoKGgsMjgyMTgsail8MDtUZihjW2NbZD4+Ml0+PjJdfDAsY1tsPj4yXXwwKTtjW2w+PjJdPWNbaz4+Ml07bD1jW2w+PjJdfDA7aT1tO3JldHVybiBsfDB9ZnVuY3Rpb24gQngoYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTA7bD1pO2k9aSszMnwwO2o9bCs4fDA7aD1sO2U9bCsyOHwwO2Y9bCsyNHwwO2c9bCsyMHwwO2s9bCsxNnwwO2NbZT4+Ml09YTtjW2Y+PjJdPWI7Y1tnPj4yXT1kO2E9Y1tlPj4yXXwwO2lmKGNbZj4+Ml18MCl7aD1jW2c+PjJdfDA7Y1tqPj4yXT1jW2Y+PjJdO2Nbais0Pj4yXT1oO2Nbaz4+Ml09R2goYSwyODI1MCxqKXwwO1RmKGNbZT4+Ml18MCxjW2Y+PjJdfDApO2s9Y1trPj4yXXwwO2k9bDtyZXR1cm4ga3wwfWVsc2V7Y1toPj4yXT1jW2c+PjJdO2Nbaz4+Ml09R2goYSwyODI0MixoKXwwO2s9Y1trPj4yXXwwO2k9bDtyZXR1cm4ga3wwfXJldHVybiAwfWZ1bmN0aW9uIEN4KGYsZyxqLGssbCxtKXtmPWZ8MDtnPWd8MDtqPWp8MDtrPWt8MDtsPWx8MDttPW18MDt2YXIgbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsRD0wLEU9MDtFPWk7aT1pKzY0fDA7dD1FO3o9RSs1MnwwO3Y9RSs0OHwwO249RSs0NHwwO3g9RSs1OHwwO3k9RSs1N3wwO0E9RSs0MHwwO289RSszNnwwO3M9RSszMnwwO3c9RSsyOHwwO0I9RSsyNHwwO3I9RSsyMHwwO3U9RSsxNnwwO0Q9RSsxMnwwO3A9RSs1NnwwO3E9RSs4fDA7Y1t2Pj4yXT1mO2Nbbj4+Ml09ZzthW3g+PjBdPWo7YVt5Pj4wXT1rO2NbQT4+Ml09bDtjW28+PjJdPW07Y1t3Pj4yXT0wO2NbQj4+Ml09MDtjW3I+PjJdPTE7Y1t1Pj4yXT0xODQwMjtjW0Q+PjJdPTA7d2hpbGUoMSl7bD1kW2Nbbj4+Ml0+PjBdfDA7Y1tzPj4yXT1sO2lmKCEoKGx8MCk9PTE1Nj8xOihjW3M+PjJdfDApPT0xNjEpKWJyZWFrO2Nbbj4+Ml09Y1soY1tuPj4yXXwwKSsxMj4+Ml19aWYoKGNbcz4+Ml18MCk9PTE1NyljW3M+PjJdPWRbKGNbbj4+Ml18MCkrMzg+PjBdO2lmKChjW3M+PjJdfDApPT02Nil7YVtwPj4wXT1EeChjWyhjW24+PjJdfDApKzg+PjJdfDAsMCl8MDtjW0Q+PjJdPUN4KGNbdj4+Ml18MCxjWyhjW24+PjJdfDApKzEyPj4yXXwwLGFbeD4+MF18MCxhW3A+PjBdfDAsY1tBPj4yXXwwLGNbbz4+Ml18MCl8MDtpZihjW2NbQT4+Ml0+PjJdfDApe0V4KGNbY1tBPj4yXT4+Ml18MCxhW3A+PjBdfDAsMSk7RngoY1tjW0E+PjJdPj4yXXwwLGFbeT4+MF18MCwxKX1jW3o+PjJdPWNbRD4+Ml07RD1jW3o+PjJdfDA7aT1FO3JldHVybiBEfDB9ZG8gaWYoKGNbcz4+Ml18MCk9PTE1NSl7aWYoKGRbY1soY1tuPj4yXXwwKSsxMj4+Ml0+PjBdfDB8MCkhPTEzND8oZFtjWyhjW24+PjJdfDApKzEyPj4yXT4+MF18MHwwKSE9MTMyOjApYnJlYWs7Y1tuPj4yXT1jWyhjW24+PjJdfDApKzEyPj4yXTtjW3M+PjJdPWRbY1tuPj4yXT4+MF07Y1tyPj4yXT0tMTtjW3U+PjJdPTI4MjY0fXdoaWxlKDApO2RvIGlmKChjW3M+PjJdfDApPT05N3woY1tzPj4yXXwwKT09MTMyfChjW3M+PjJdfDApPT0xMzQpe2NbQj4+Ml09R3goY1t2Pj4yXXwwLGNbbz4+Ml18MCl8MDtpZihjW0I+PjJdfDApe2lmKGNbKGNbbj4+Ml18MCkrND4+Ml0mMTAyNCl7dj1jW0I+PjJdfDA7dT1jWyhjW24+PjJdfDApKzg+PjJdfDA7dz1jW3I+PjJdfDA7dz1hUyh1fDAsKCh1fDApPDApPDwzMT4+MzF8MCx3fDAsKCh3fDApPDApPDwzMT4+MzF8MCl8MDtoaCh2LHcsQyl9ZWxzZXtsPWNbdj4+Ml18MDtnPWNbKGNbbj4+Ml18MCkrOD4+Ml18MDtjW3Q+PjJdPWNbdT4+Ml07Y1t0KzQ+PjJdPWc7Y1t3Pj4yXT1HaChsLDI0NzA1LHQpfDA7aWYoIShjW3c+PjJdfDApKXtuPTQyO2JyZWFrfV9oKGNbQj4+Ml18MCwtMSxjW3c+PjJdfDAsMSwxNzApfWlmKChjW3M+PjJdfDApPT0xMzR8KGNbcz4+Ml18MCk9PTEzMj8oZFt5Pj4wXXwwfDApPT02NTowKUZ4KGNbQj4+Ml18MCw2NywxKTtlbHNlIEZ4KGNbQj4+Ml18MCxhW3k+PjBdfDAsMSk7aWYoKGVbKGNbQj4+Ml18MCkrOD4+MV18MCkmMTIpe3k9KGNbQj4+Ml18MCkrOHwwO2JbeT4+MV09KGVbeT4+MV18MCkmLTN9aWYoKGRbeD4+MF18MHwwKSE9MSl7Y1tEPj4yXT1pdShjW0I+PjJdfDAsZFt4Pj4wXXwwKXwwO249NDF9ZWxzZSBuPTQxfWVsc2Ugbj00Mn1lbHNle2lmKChjW3M+PjJdfDApIT0xNTUpe2lmKChjW3M+PjJdfDApPT0xMDEpe2NbQj4+Ml09R3goY1t2Pj4yXXwwLGNbbz4+Ml18MCl8MDtpZighKGNbQj4+Ml18MCkpe249NDI7YnJlYWt9ZWxzZXtuPTQxO2JyZWFrfX1pZigoY1tzPj4yXXwwKSE9MTMzKXtuPTQxO2JyZWFrfWNbQj4+Ml09R3goY1t2Pj4yXXwwLGNbbz4+Ml18MCl8MDtpZighKGNbQj4+Ml18MCkpe249NDI7YnJlYWt9Y1t3Pj4yXT0oY1soY1tuPj4yXXwwKSs4Pj4yXXwwKSsyO2NbcT4+Ml09KEpmKGNbdz4+Ml18MCl8MCktMTt5PWNbQj4+Ml18MDtuPUl4KGNbdj4+Ml18MCxjW3c+PjJdfDAsY1txPj4yXXwwKXwwO2doKHksbiwoY1txPj4yXXwwKS8yfDAsMCwxNzApfDA7bj00MTticmVha313PTA9PSh1eChjW3Y+PjJdfDAsY1soY1tuPj4yXXwwKSsxMj4+Ml18MCxhW3g+PjBdfDAsYVt5Pj4wXXwwLEIpfDApO2lmKHcmKGNbQj4+Ml18MCkhPTApe0h4KGNbQj4+Ml18MCl8MDtuPWNbQj4+Ml18MDtkbyBpZighKChlWyhjW0I+PjJdfDApKzg+PjFdfDApJjgpKXt3PW47bj1jW0I+PjJdfDA7aWYoKGNbdz4+Ml18MCk9PTA/KGNbdys0Pj4yXXwwKT09LTIxNDc0ODM2NDg6MCl7aFtuPj4zXT05MjIzMzcyMDM2ODU0Nzc1ODA4LjA7YlsoY1tCPj4yXXwwKSs4Pj4xXT0oZVsoY1tCPj4yXXwwKSs4Pj4xXXwwKSYtNDk2NjR8ODticmVha31lbHNle3Y9bjt2PVFSKDAsMCxjW3Y+PjJdfDAsY1t2KzQ+PjJdfDApfDA7dz1jW0I+PjJdfDA7Y1t3Pj4yXT12O2Nbdys0Pj4yXT1DO2JyZWFrfX1lbHNlIGhbY1tCPj4yXT4+M109LStoW24+PjNdO3doaWxlKDApO0Z4KGNbQj4+Ml18MCxhW3k+PjBdfDAsYVt4Pj4wXXwwKTtuPTQxfWVsc2Ugbj00MX13aGlsZSgwKTtpZigobnwwKT09NDEpe2NbY1tBPj4yXT4+Ml09Y1tCPj4yXTtjW3o+PjJdPWNbRD4+Ml07RD1jW3o+PjJdfDA7aT1FO3JldHVybiBEfDB9ZWxzZSBpZigobnwwKT09NDIpe21oKGNbdj4+Ml18MCk7VGYoY1t2Pj4yXXwwLGNbdz4+Ml18MCk7Y2goY1tCPj4yXXwwKTtjW3o+PjJdPTc7RD1jW3o+PjJdfDA7aT1FO3JldHVybiBEfDB9cmV0dXJuIDB9ZnVuY3Rpb24gRHgoYixlKXtiPWJ8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MDtuPWk7aT1pKzMyfDA7Zj1uKzE2fDA7Zz1uKzEyfDA7aj1uKzh8MDtoPW4rMjB8MDtsPW4rNHwwO2s9bjtjW2Y+PjJdPWI7Y1tnPj4yXT1lO2Nbaj4+Ml09MDthW2g+PjBdPTY3O2NbbD4+Ml09MDthOndoaWxlKDEpe2lmKCEoYVtjW2Y+PjJdPj4wXXwwKSlicmVhaztjW2o+PjJdPShjW2o+PjJdPDw4KSsoZFsxNzYxMysoYVtjW2Y+PjJdPj4wXSYyNTUpPj4wXXwwKTtjW2Y+PjJdPShjW2Y+PjJdfDApKzE7aWYoKGNbaj4+Ml18MCk9PTE2Njc3ODUwNzQpe2FbaD4+MF09NjY7Y1tsPj4yXT1jW2Y+PjJdO2NvbnRpbnVlfWlmKChjW2o+PjJdfDApPT0xNjY4MDUwNzg2KXthW2g+PjBdPTY2O2NvbnRpbnVlfWlmKChjW2o+PjJdfDApPT0xOTUyODA3MDI4KXthW2g+PjBdPTY2O2NvbnRpbnVlfWRvIGlmKChjW2o+PjJdfDApPT0xNjUxMjczNTcwKXtpZigoYVtoPj4wXXwwKSE9Njc/KGFbaD4+MF18MCkhPTY5OjApYnJlYWs7YVtoPj4wXT02NTtpZigoYVtjW2Y+PjJdPj4wXXwwKSE9NDApY29udGludWUgYTtjW2w+PjJdPWNbZj4+Ml07Y29udGludWUgYX13aGlsZSgwKTtpZigoY1tqPj4yXXwwKT09MTkxOTI0NjcwMD8oYVtoPj4wXXwwKT09Njc6MCl7YVtoPj4wXT02OTtjb250aW51ZX1pZigoY1tqPj4yXXwwKT09MTcxODM4MjQzMz8oYVtoPj4wXXwwKT09Njc6MCl7YVtoPj4wXT02OTtjb250aW51ZX1pZigoY1tqPj4yXXwwKT09MTY4NTAyNjE0Nj8oYVtoPj4wXXwwKT09Njc6MCl7YVtoPj4wXT02OTtjb250aW51ZX1pZigoY1tqPj4yXSYxNjc3NzIxNXwwKT09NjkwOTU1Nil7bT0yNDticmVha319aWYoKG18MCk9PTI0KWFbaD4+MF09Njg7aWYoIShjW2c+PjJdfDApKXttPWFbaD4+MF18MDtpPW47cmV0dXJuIG18MH1hW2NbZz4+Ml0+PjBdPTE7aWYoKGFbaD4+MF18MCk+PTY3KXttPWFbaD4+MF18MDtpPW47cmV0dXJuIG18MH1pZighKGNbbD4+Ml18MCkpe2FbY1tnPj4yXT4+MF09NTttPWFbaD4+MF18MDtpPW47cmV0dXJuIG18MH13aGlsZSgxKXtpZighKGFbY1tsPj4yXT4+MF18MCkpe209MzM7YnJlYWt9aWYoZFsxODQwMysoZFtjW2w+PjJdPj4wXXwwKT4+MF0mNClicmVhaztjW2w+PjJdPShjW2w+PjJdfDApKzF9aWYoKG18MCk9PTMzKXttPWFbaD4+MF18MDtpPW47cmV0dXJuIG18MH1jW2s+PjJdPTA7UWkoY1tsPj4yXXwwLGspfDA7bT0oKGNbaz4+Ml18MCkvNHwwKSsxfDA7Y1trPj4yXT1tO2Nbaz4+Ml09KGNbaz4+Ml18MCk+MjU1PzI1NTptO2FbY1tnPj4yXT4+MF09Y1trPj4yXTttPWFbaD4+MF18MDtpPW47cmV0dXJuIG18MH1mdW5jdGlvbiBFeChmLGcsaCl7Zj1mfDA7Zz1nfDA7aD1ofDA7dmFyIGo9MCxrPTAsbD0wLG09MDttPWk7aT1pKzE2fDA7az1tO2o9bSs1fDA7bD1tKzR8MDtjW2s+PjJdPWY7YVtqPj4wXT1nO2FbbD4+MF09aDtpZigoZVsoY1trPj4yXXwwKSs4Pj4xXXwwKSYxKXtpPW07cmV0dXJufXN3aXRjaChkW2o+PjBdfDB8MCl7Y2FzZSA2NTp7aj1jW2s+PjJdfDA7aWYoKGVbKGNbaz4+Ml18MCkrOD4+MV18MCkmMTYpe2w9ais4fDA7YltsPj4xXT0oZVtsPj4xXXwwKSYtMzMyNjQ7aT1tO3JldHVybn1GeChqLDY2LGFbbD4+MF18MCk7aWYoISgoZVsoY1trPj4yXXwwKSs4Pj4xXXwwKSYyKSl7aT1tO3JldHVybn1iWyhjW2s+PjJdfDApKzg+PjFdPShlWyhjW2s+PjJdfDApKzg+PjFdfDApJi00OTY2NHwxNjtpPW07cmV0dXJufWNhc2UgNjc6e0h4KGNbaz4+Ml18MCl8MDtpPW07cmV0dXJufWNhc2UgNjg6e1F4KGNbaz4+Ml18MCl8MDtpPW07cmV0dXJufWNhc2UgNjk6e1J4KGNbaz4+Ml18MCl8MDtpPW07cmV0dXJufWRlZmF1bHQ6e2Y9KGNbaz4+Ml18MCkrOHwwO2JbZj4+MV09ZVtmPj4xXXwwfCgoZVsoY1trPj4yXXwwKSs4Pj4xXXwwKSYxNik+PjM7RngoY1trPj4yXXwwLDY2LGFbbD4+MF18MCk7bD0oY1trPj4yXXwwKSs4fDA7YltsPj4xXT0oZVtsPj4xXXwwKSYtMTY0MTM7aT1tO3JldHVybn19fWZ1bmN0aW9uIEZ4KGIsZCxlKXtiPWJ8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wO2Y9aTtpPWkrMTZ8MDtqPWY7aD1mKzV8MDtnPWYrNHwwO2Nbaj4+Ml09YjthW2g+PjBdPWQ7YVtnPj4wXT1lO0x4KGNbaj4+Ml18MCxhW2g+PjBdfDAsYVtnPj4wXXwwKTtpPWY7cmV0dXJufWZ1bmN0aW9uIEd4KGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MCxlPTA7ZD1pO2k9aSsxNnwwO2U9ZCs0fDA7Y1tlPj4yXT1hO2NbZD4+Ml09YjtiPVpoKGNbZT4+Ml18MCl8MDtpPWQ7cmV0dXJuIGJ8MH1mdW5jdGlvbiBIeChkKXtkPWR8MDt2YXIgZj0wLGc9MCxqPTAsaz0wLjA7Zz1pO2k9aSsxNnwwO2Y9ZztjW2Y+PjJdPWQ7ZG8gaWYoISgoZVsoY1tmPj4yXXwwKSs4Pj4xXXwwKSYxMykpe2o9MD09KE1pKGNbKGNbZj4+Ml18MCkrMTY+PjJdfDAsY1tmPj4yXXwwLGNbKGNbZj4+Ml18MCkrMTI+PjJdfDAsYVsoY1tmPj4yXXwwKSsxMD4+MF18MCl8MCk7ZD1jW2Y+PjJdfDA7aWYoail7YlsoY1tmPj4yXXwwKSs4Pj4xXT0oZVtkKzg+PjFdfDApJi00OTY2NHw0O2JyZWFrfWVsc2V7az0rJGcoZCk7aFtjW2Y+PjJdPj4zXT1rO2JbKGNbZj4+Ml18MCkrOD4+MV09KGVbKGNbZj4+Ml18MCkrOD4+MV18MCkmLTQ5NjY0fDg7SngoY1tmPj4yXXwwKTticmVha319d2hpbGUoMCk7aj0oY1tmPj4yXXwwKSs4fDA7YltqPj4xXT0oZVtqPj4xXXwwKSYtMTY0MDM7aT1nO3JldHVybiAwfWZ1bmN0aW9uIEl4KGIsZCxlKXtiPWJ8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTA7az1pO2k9aSszMnwwO2w9aysxNnwwO2Y9aysxMnwwO2c9ays4fDA7aj1rKzR8MDtoPWs7Y1tsPj4yXT1iO2NbZj4+Ml09ZDtjW2c+PjJdPWU7ZD0oKGNbZz4+Ml18MCkvMnwwKSsxfDA7Y1tqPj4yXT1WdyhjW2w+PjJdfDAsZCwoKGR8MCk8MCk8PDMxPj4zMSl8MDtjW2c+PjJdPShjW2c+PjJdfDApKy0xO2lmKCEoY1tqPj4yXXwwKSl7bD1jW2o+PjJdfDA7aT1rO3JldHVybiBsfDB9Y1toPj4yXT0wO3doaWxlKDEpe2I9Y1toPj4yXXwwO2lmKChjW2g+PjJdfDApPj0oY1tnPj4yXXwwKSlicmVhaztsPSgoTGkoYVsoY1tmPj4yXXwwKStiPj4wXXwwKXwwKSYyNTUpPDw0O2w9KGx8KExpKGFbKGNbZj4+Ml18MCkrKChjW2g+PjJdfDApKzEpPj4wXXwwKXwwKSYyNTUpJjI1NTthWyhjW2o+PjJdfDApKygoY1toPj4yXXwwKS8yfDApPj4wXT1sO2NbaD4+Ml09KGNbaD4+Ml18MCkrMn1hWyhjW2o+PjJdfDApKygoYnwwKS8yfDApPj4wXT0wO2w9Y1tqPj4yXXwwO2k9aztyZXR1cm4gbHwwfWZ1bmN0aW9uIEp4KGEpe2E9YXwwO3ZhciBkPTAsZj0wLGc9MCxqPTAsaz0wLGw9MCxtPTA7Zz1pO2k9aSsxNnwwO2Q9Zys4fDA7Zj1nO2NbZD4+Ml09YTtrPUt4KCtoW2NbZD4+Ml0+PjNdKXwwO209ZjtjW20+PjJdPWs7Y1ttKzQ+PjJdPUM7bT1mO2s9ZjtsPWNbays0Pj4yXXwwO2E9ZjtqPWNbYSs0Pj4yXXwwO2lmKCEoK2hbY1tkPj4yXT4+M109PSsoKGNbbT4+Ml18MCk+Pj4wKSs0Mjk0OTY3Mjk2LjAqKyhjW20rND4+Ml18MCkmKChsfDApPi0yMTQ3NDgzNjQ4fChsfDApPT0tMjE0NzQ4MzY0OCYoY1trPj4yXXwwKT4+PjA+MCkmKChqfDApPDIxNDc0ODM2NDd8KGp8MCk9PTIxNDc0ODM2NDcmKGNbYT4+Ml18MCk+Pj4wPDQyOTQ5NjcyOTUpKSl7aT1nO3JldHVybn1rPWY7bD1jW2srND4+Ml18MDttPWNbZD4+Ml18MDtjW20+PjJdPWNbaz4+Ml07Y1ttKzQ+PjJdPWw7YlsoY1tkPj4yXXwwKSs4Pj4xXT0oZVsoY1tkPj4yXXwwKSs4Pj4xXXwwKSYtNDk2NjR8NDtpPWc7cmV0dXJufWZ1bmN0aW9uIEt4KGEpe2E9K2E7dmFyIGI9MCxkPTAsZT0wLGY9MDtlPWk7aT1pKzE2fDA7Yj1lKzh8MDtkPWU7aFtkPj4zXT1hO2RvIGlmKCEoK2hbZD4+M108PS05MjIzMzcyMDM2ODU0Nzc1ODA4LjApKWlmKCtoW2Q+PjNdPj05MjIzMzcyMDM2ODU0Nzc1ODA4LjApe2Q9YjtjW2Q+PjJdPS0xO2NbZCs0Pj4yXT0yMTQ3NDgzNjQ3O2JyZWFrfWVsc2V7YT0raFtkPj4zXTtmPStOKGEpPj0xLjA/KGE+MC4wP35+KyQoK00oYS80Mjk0OTY3Mjk2LjApLDQyOTQ5NjcyOTUuMCk+Pj4wOn5+K1ooKGEtKyh+fmE+Pj4wKSkvNDI5NDk2NzI5Ni4wKT4+PjApOjA7ZD1iO2NbZD4+Ml09fn5hPj4+MDtjW2QrND4+Ml09ZjticmVha31lbHNle2Y9YjtjW2Y+PjJdPTA7Y1tmKzQ+PjJdPS0yMTQ3NDgzNjQ4fXdoaWxlKDApO2Y9YjtDPWNbZis0Pj4yXXwwO2k9ZTtyZXR1cm4gY1tmPj4yXXwwfWZ1bmN0aW9uIEx4KGQsZixnKXtkPWR8MDtmPWZ8MDtnPWd8MDt2YXIgaD0wLGo9MCxrPTAsbD0wO2w9aTtpPWkrMTZ8MDtrPWw7aD1sKzV8MDtqPWwrNHwwO2Nbaz4+Ml09ZDthW2g+PjBdPWY7YVtqPj4wXT1nO2lmKChhW2g+PjBdfDApPDY3KXtpZigoYVtoPj4wXXwwKSE9NjYpe2k9bDtyZXR1cm59aWYoMD09KGVbKGNbaz4+Ml18MCkrOD4+MV0mMnwwKT8oZVsoY1trPj4yXXwwKSs4Pj4xXSYxMnwwKSE9MDowKU14KGNbaz4+Ml18MCxhW2o+PjBdfDAsMSl8MDtrPShjW2s+PjJdfDApKzh8MDtiW2s+PjFdPWVbaz4+MV0mLTEzO2k9bDtyZXR1cm59aWYoZVsoY1trPj4yXXwwKSs4Pj4xXSY0KXtpPWw7cmV0dXJufWg9Y1trPj4yXXwwO2lmKGVbKGNbaz4+Ml18MCkrOD4+MV0mOCl7SngoaCk7aT1sO3JldHVybn1pZighKGVbaCs4Pj4xXSYyKSl7aT1sO3JldHVybn1CaChjW2s+PjJdfDAsMSk7aT1sO3JldHVybn1mdW5jdGlvbiBNeChmLGcsail7Zj1mfDA7Zz1nfDA7aj1qfDA7dmFyIGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTA7cj1pO2k9aSs0OHwwO3E9cis4fDA7cD1yO2s9cisyOHwwO2w9cisyNHwwO209ciszM3wwO249ciszMnwwO289cisyMHwwO2NbbD4+Ml09ZjthW20+PjBdPWc7YVtuPj4wXT1qO2Nbbz4+Ml09ZVsoY1tsPj4yXXwwKSs4Pj4xXTtjW3IrMTY+PjJdPTMyO2lmKE54KGNbbD4+Ml18MCwzMil8MCl7YVsoY1tsPj4yXXwwKSsxMD4+MF09MDtjW2s+PjJdPTc7cT1jW2s+PjJdfDA7aT1yO3JldHVybiBxfDB9aj1jWyhjW2w+PjJdfDApKzE2Pj4yXXwwO2c9Y1tsPj4yXXwwO2lmKGNbbz4+Ml0mNCl7Zj1nO289Y1tmKzQ+PjJdfDA7cT1wO2NbcT4+Ml09Y1tmPj4yXTtjW3ErND4+Ml09bztRZCgzMixqLDI4MjY2LHApfDB9ZWxzZXtoW3E+PjNdPStoW2c+PjNdO1FkKDMyLGosMjgyNzEscSl8MH1xPUpmKGNbKGNbbD4+Ml18MCkrMTY+PjJdfDApfDA7Y1soY1tsPj4yXXwwKSsxMj4+Ml09cTthWyhjW2w+PjJdfDApKzEwPj4wXT0xO3E9KGNbbD4+Ml18MCkrOHwwO2JbcT4+MV09ZVtxPj4xXXw1MTQ7aWYoYVtuPj4wXXwwKXtxPShjW2w+PjJdfDApKzh8MDtiW3E+PjFdPWVbcT4+MV0mLTEzfWl1KGNbbD4+Ml18MCxkW20+PjBdfDApfDA7Y1trPj4yXT0wO3E9Y1trPj4yXXwwO2k9cjtyZXR1cm4gcXwwfWZ1bmN0aW9uIE54KGEsZCl7YT1hfDA7ZD1kfDA7dmFyIGY9MCxnPTAsaD0wLGo9MDtqPWk7aT1pKzE2fDA7Zj1qKzh8MDtnPWorNHwwO2g9ajtjW2c+PjJdPWE7Y1toPj4yXT1kO2E9Y1tnPj4yXXwwO2lmKChjWyhjW2c+PjJdfDApKzI0Pj4yXXwwKTwoY1toPj4yXXwwKSl7Y1tmPj4yXT1PeChhLGNbaD4+Ml18MCwwKXwwO2g9Y1tmPj4yXXwwO2k9ajtyZXR1cm4gaHwwfWVsc2V7Y1soY1tnPj4yXXwwKSsxNj4+Ml09Y1thKzIwPj4yXTtoPShjW2c+PjJdfDApKzh8MDtiW2g+PjFdPShlW2g+PjFdfDApJjEzO2NbZj4+Ml09MDtoPWNbZj4+Ml18MDtpPWo7cmV0dXJuIGh8MH1yZXR1cm4gMH1mdW5jdGlvbiBPeChhLGQsZil7YT1hfDA7ZD1kfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTA7bD1pO2k9aSsxNnwwO2g9bCsxMnwwO2o9bCs4fDA7Zz1sKzR8MDtrPWw7Y1tqPj4yXT1hO2NbZz4+Ml09ZDtjW2s+PjJdPWY7ZG8gaWYoKGNbKGNbaj4+Ml18MCkrMjQ+PjJdfDApPChjW2c+PjJdfDApKXtpZigoY1tnPj4yXXwwKTwzMiljW2c+PjJdPTMyO2lmKCgoY1trPj4yXXwwKSE9MD8oY1soY1tqPj4yXXwwKSsyND4+Ml18MCk+MDowKT8oY1soY1tqPj4yXXwwKSsxNj4+Ml18MCk9PShjWyhjW2o+PjJdfDApKzIwPj4yXXwwKTowKXthPWNbZz4+Ml18MDthPVB4KGNbKGNbaj4+Ml18MCkrMzI+PjJdfDAsY1soY1tqPj4yXXwwKSsxNj4+Ml18MCxhLCgoYXwwKTwwKTw8MzE+PjMxKXwwO2NbKGNbaj4+Ml18MCkrMjA+PjJdPWE7Y1soY1tqPj4yXXwwKSsxNj4+Ml09YTtjW2s+PjJdPTB9ZWxzZXtpZigoY1soY1tqPj4yXXwwKSsyND4+Ml18MCk+MClUZihjWyhjW2o+PjJdfDApKzMyPj4yXXwwLGNbKGNbaj4+Ml18MCkrMjA+PjJdfDApO2E9Y1tnPj4yXXwwO2E9Q2goY1soY1tqPj4yXXwwKSszMj4+Ml18MCxhLCgoYXwwKTwwKTw8MzE+PjMxKXwwO2NbKGNbaj4+Ml18MCkrMjA+PjJdPWF9Zz1jW2o+PjJdfDA7aWYoY1soY1tqPj4yXXwwKSsyMD4+Ml18MCl7YT1rdShjW2crMzI+PjJdfDAsY1soY1tqPj4yXXwwKSsyMD4+Ml18MCl8MDtjWyhjW2o+PjJdfDApKzI0Pj4yXT1hO2JyZWFrfWloKGcpO2NbKGNbaj4+Ml18MCkrMTY+PjJdPTA7Y1soY1tqPj4yXXwwKSsyND4+Ml09MDtjW2g+PjJdPTc7az1jW2g+PjJdfDA7aT1sO3JldHVybiBrfDB9d2hpbGUoMCk7aWYoKChjW2s+PjJdfDApIT0wPyhjWyhjW2o+PjJdfDApKzE2Pj4yXXwwKSE9MDowKT8oY1soY1tqPj4yXXwwKSsxNj4+Ml18MCkhPShjWyhjW2o+PjJdfDApKzIwPj4yXXwwKTowKVRSKGNbKGNbaj4+Ml18MCkrMjA+PjJdfDAsY1soY1tqPj4yXXwwKSsxNj4+Ml18MCxjWyhjW2o+PjJdfDApKzEyPj4yXXwwKXwwO2lmKChlWyhjW2o+PjJdfDApKzg+PjFdfDApJjEwMjQpUWJbY1soY1tqPj4yXXwwKSszNj4+Ml0mMjU1XShjWyhjW2o+PjJdfDApKzE2Pj4yXXwwKTtjWyhjW2o+PjJdfDApKzE2Pj4yXT1jWyhjW2o+PjJdfDApKzIwPj4yXTtrPShjW2o+PjJdfDApKzh8MDtiW2s+PjFdPShlW2s+PjFdfDApJi03MTY5O2NbaD4+Ml09MDtrPWNbaD4+Ml18MDtpPWw7cmV0dXJuIGt8MH1mdW5jdGlvbiBQeChhLGIsZCxlKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MDtqPWk7aT1pKzMyfDA7Zj1qKzE2fDA7Zz1qKzEyfDA7az1qO2g9ais4fDA7Y1tmPj4yXT1hO2NbZz4+Ml09YjtiPWs7Y1tiPj4yXT1kO2NbYis0Pj4yXT1lO2I9aztjW2g+PjJdPVV3KGNbZj4+Ml18MCxjW2c+PjJdfDAsY1tiPj4yXXwwLGNbYis0Pj4yXXwwKXwwO2lmKGNbaD4+Ml18MCl7az1jW2g+PjJdfDA7aT1qO3JldHVybiBrfDB9VGYoY1tmPj4yXXwwLGNbZz4+Ml18MCk7az1jW2g+PjJdfDA7aT1qO3JldHVybiBrfDB9ZnVuY3Rpb24gUXgoYSl7YT1hfDA7dmFyIGQ9MCxmPTAsZz0wO2Q9aTtpPWkrMTZ8MDtmPWQ7Y1tmPj4yXT1hO2c9YWgoY1tmPj4yXXwwKXwwO2E9Y1tmPj4yXXwwO2NbYT4+Ml09ZztjW2ErND4+Ml09QztiWyhjW2Y+PjJdfDApKzg+PjFdPShlWyhjW2Y+PjJdfDApKzg+PjFdfDApJi00OTY2NHw0O2k9ZDtyZXR1cm4gMH1mdW5jdGlvbiBSeChhKXthPWF8MDt2YXIgZD0wLGY9MCxnPTAuMDtkPWk7aT1pKzE2fDA7Zj1kO2NbZj4+Ml09YTtnPSskZyhjW2Y+PjJdfDApO2hbY1tmPj4yXT4+M109ZztiWyhjW2Y+PjJdfDApKzg+PjFdPShlWyhjW2Y+PjJdfDApKzg+PjFdfDApJi00OTY2NHw4O2k9ZDtyZXR1cm4gMH1mdW5jdGlvbiBTeChiLGUpe2I9YnwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wO2s9aTtpPWkrMTZ8MDtqPWs7Zj1rKzEyfDA7Zz1rKzh8MDtoPWsrNHwwO2NbZz4+Ml09YjtjW2g+PjJdPWU7aWYoKCgoYVsoY1tjW2c+PjJdPj4yXXwwKSsxNDgrNT4+MF18MCk9PTA/KGRbKGNbZz4+Ml18MCkrMTg+PjBdfDApPT0wOjApPyhjWyhjW2NbZz4+Ml0+PjJdfDApKzI0Pj4yXSYyMDQ4fDApPT0wOjApPzA9PSh6ZChjW2g+PjJdfDAsMjc4NDQsNyl8MCk6MCl7ZT1jW2c+PjJdfDA7Y1tqPj4yXT1jW2g+PjJdO0VoKGUsMzA3NzUsaik7Y1tmPj4yXT0xO2U9Y1tmPj4yXXwwO2k9aztyZXR1cm4gZXwwfWNbZj4+Ml09MDtlPWNbZj4+Ml18MDtpPWs7cmV0dXJuIGV8MH1mdW5jdGlvbiBUeChhLGYpe2E9YXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wO3I9aTtpPWkrNDh8MDtwPXI7Zz1yKzM2fDA7aD1yKzMyfDA7aj1yKzI4fDA7bz1yKzI0fDA7bj1yKzIwfDA7bT1yKzE2fDA7bD1yKzEyfDA7az1yKzh8MDtxPXIrNHwwO2NbaD4+Ml09YTtjW2o+PjJdPWY7Y1ttPj4yXT0wO2Nbaz4+Ml09Y1tjW2g+PjJdPj4yXTtpZihaeChjW2g+PjJdfDAsY1tqPj4yXXwwKXwwKXtjW2c+PjJdPTE7cT1jW2c+PjJdfDA7aT1yO3JldHVybiBxfDB9aWYoZFsoY1tqPj4yXXwwKSs0Mj4+MF0mMTYpe2NbZz4+Ml09MDtxPWNbZz4+Ml18MDtpPXI7cmV0dXJuIHF8MH1pZigoYlsoY1tqPj4yXXwwKSszND4+MV18MCk+MCl7Y1tnPj4yXT0wO3E9Y1tnPj4yXXwwO2k9cjtyZXR1cm4gcXwwfWlmKChiWyhjW2o+PjJdfDApKzM0Pj4xXXwwKTwwKXtxPWNbaD4+Ml18MDtjW3A+PjJdPWNbY1tqPj4yXT4+Ml07RWgocSwyODk4MyxwKTtjW2c+PjJdPTE7cT1jW2c+PjJdfDA7aT1yO3JldHVybiBxfDB9Y1tuPj4yXT1feChjW2s+PjJdfDAsY1soY1tqPj4yXXwwKSsxMj4+Ml18MCwwKXwwO2lmKGNbbj4+Ml18MCl7Y1tsPj4yXT1jWyhjW2g+PjJdfDApKzQwPj4yXTskeChjW2g+PjJdfDAsY1soY1tuPj4yXXwwKSsyOD4+Ml18MCk7YlsoY1tqPj4yXXwwKSszND4+MV09LTE7cD0oY1trPj4yXXwwKSsyNTZ8MDtjW3A+PjJdPShjW3A+PjJdfDApKzE7Y1txPj4yXT1jWyhjW2s+PjJdfDApKzI5Nj4+Ml07Y1soY1trPj4yXXwwKSsyOTY+PjJdPTA7Y1tvPj4yXT1heShjW2g+PjJdfDAsY1tuPj4yXXwwKXwwO2NbKGNbaz4+Ml18MCkrMjk2Pj4yXT1jW3E+PjJdO2NbKGNbaD4+Ml18MCkrNDA+PjJdPWNbbD4+Ml07ZG8gaWYoY1soY1tqPj4yXXwwKSsyND4+Ml18MCl7YnkoY1toPj4yXXwwLGNbKGNbaj4+Ml18MCkrMjQ+PjJdfDAsKGNbaj4+Ml18MCkrMzR8MCwoY1tqPj4yXXwwKSs0fDApfDA7aWYoKChkWyhjW2s+PjJdfDApKzY5Pj4wXXwwKT09MD8oY1soY1toPj4yXXwwKSszNj4+Ml18MCk9PTA6MCk/KGJbKGNbaj4+Ml18MCkrMzQ+PjFdfDApPT0oY1tjW2Nbbj4+Ml0+PjJdPj4yXXwwKTowKWN5KGNbaD4+Ml18MCxjW2o+PjJdfDAsY1tuPj4yXXwwKX1lbHNlIGlmKGNbbz4+Ml18MCl7YlsoY1tqPj4yXXwwKSszND4+MV09YlsoY1tvPj4yXXwwKSszND4+MV18MDtjWyhjW2o+PjJdfDApKzQ+PjJdPWNbKGNbbz4+Ml18MCkrND4+Ml07YlsoY1tvPj4yXXwwKSszND4+MV09MDtjWyhjW28+PjJdfDApKzQ+PjJdPTA7YnJlYWt9ZWxzZXtiWyhjW2o+PjJdfDApKzM0Pj4xXT0wO2NbbT4+Ml09KGNbbT4+Ml18MCkrMTticmVha313aGlsZSgwKTtSZihjW2s+PjJdfDAsY1tvPj4yXXwwKTtmdihjW2s+PjJdfDAsY1tuPj4yXXwwKTtxPShjW2s+PjJdfDApKzI1NnwwO2NbcT4+Ml09KGNbcT4+Ml18MCkrLTF9ZWxzZSBjW20+PjJdPShjW20+PjJdfDApKzE7cT0oY1soY1tqPj4yXXwwKSs2ND4+Ml18MCkrNzh8MDtiW3E+PjFdPWVbcT4+MV18MjtjW2c+PjJdPWNbbT4+Ml07cT1jW2c+PjJdfDA7aT1yO3JldHVybiBxfDB9ZnVuY3Rpb24gVXgoYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wO2Y9aTtpPWkrMTZ8MDtkPWYrOHwwO2c9Zis0fDA7ZT1mO2NbZD4+Ml09YTtjW2c+PjJdPWI7Y1tlPj4yXT1jWyhjW2c+PjJdfDApKzU2Pj4yXTt3aGlsZSgxKXtpZighKGNbZT4+Ml18MCkpe2Q9NTticmVha31pZigoY1tjW2U+PjJdPj4yXXwwKT09KGNbZD4+Ml18MCkpe2Q9NTticmVha31jW2U+PjJdPWNbKGNbZT4+Ml18MCkrMjQ+PjJdfWlmKChkfDApPT01KXtpPWY7cmV0dXJuIGNbZT4+Ml18MH1yZXR1cm4gMH1mdW5jdGlvbiBWeChiKXtiPWJ8MDt2YXIgZD0wLGU9MCxmPTA7ZT1pO2k9aSsxNnwwO2Y9ZSs0fDA7ZD1lO2NbZj4+Ml09YjtiPWNbZj4+Ml18MDtpZihjWyhjW2Y+PjJdfDApKzEyND4+Ml18MCliPWNbYisxMjQ+PjJdfDA7Y1tkPj4yXT1iO2FbKGNbZD4+Ml18MCkrMjE+PjBdPTE7aT1lO3JldHVybn1mdW5jdGlvbiBXeChhLGIpe2E9YXwwO2I9YnwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MDtqPWk7aT1pKzMyfDA7az1qKzE2fDA7ZT1qKzEyfDA7aD1qKzh8MDtmPWorNHwwO2c9ajtjW2s+PjJdPWE7Y1tlPj4yXT1iO2NbaD4+Ml09MDtjW2Y+PjJdPWNbaz4+Ml07aWYoKGNbZT4+Ml18MCk+PTApY1tnPj4yXT0oY1tmPj4yXXwwKSsoY1tlPj4yXXwwKTtlbHNlIGNbZz4+Ml09LTE7d2hpbGUoMSl7aWYoIShkW2NbZj4+Ml0+PjBdfDApKXtlPTEwO2JyZWFrfWlmKChjW2Y+PjJdfDApPj4+MD49KGNbZz4+Ml18MCk+Pj4wKXtlPTEwO2JyZWFrfWs9Y1tmPj4yXXwwO2NbZj4+Ml09aysxO2E6ZG8gaWYoKGRbaz4+MF18MHwwKT49MTkyKXdoaWxlKDEpe2lmKCgoZFtjW2Y+PjJdPj4wXXwwKSYxOTJ8MCkhPTEyOClicmVhayBhO2NbZj4+Ml09KGNbZj4+Ml18MCkrMX13aGlsZSgwKTtjW2g+PjJdPShjW2g+PjJdfDApKzF9aWYoKGV8MCk9PTEwKXtpPWo7cmV0dXJuIGNbaD4+Ml18MH1yZXR1cm4gMH1mdW5jdGlvbiBYeChhLGIpe2E9YXwwO2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wO2c9aTtpPWkrMTZ8MDtkPWcrMTJ8MDtoPWcrOHwwO2U9Zys0fDA7Zj1nO2NbZD4+Ml09YTtjW2g+PjJdPWI7Y1tmPj4yXT0wO2NbZT4+Ml09WXgoY1toPj4yXXwwKXwwO3doaWxlKDEpe2lmKCEoY1tlPj4yXXwwKSlicmVhaztjW2Y+PjJdPUJ4KGNbY1tkPj4yXT4+Ml18MCxjW2Y+PjJdfDAsY1tjW2NbZT4+Ml0+PjJdPj4yXXwwKXwwO2NbZT4+Ml09Y1soY1tlPj4yXXwwKSsxMj4+Ml19aT1nO3JldHVybiBjW2Y+PjJdfDB9ZnVuY3Rpb24gWXgoYSl7YT1hfDA7dmFyIGI9MCxkPTA7Yj1pO2k9aSsxNnwwO2Q9YjtjW2Q+PjJdPWE7YT1zaigoY1soY1tkPj4yXXwwKSs2ND4+Ml18MCkrNTZ8MCxjW2NbZD4+Ml0+PjJdfDApfDA7aT1iO3JldHVybiBhfDB9ZnVuY3Rpb24gWngoYSxiKXthPWF8MDtiPWJ8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTA7cT1pO2k9aSs0OHwwO209cSs4fDA7bD1xO2U9cSs0NHwwO2Y9cSs0MHwwO2c9cSszNnwwO2g9cSszMnwwO289cSsyOHwwO2o9cSsyNHwwO2s9cSsyMHwwO3A9cSsxNnwwO249cSsxMnwwO2NbZj4+Ml09YTtjW2c+PjJdPWI7Y1toPj4yXT1jW2NbZj4+Ml0+PjJdO2lmKCgoZFsoY1tnPj4yXXwwKSs0Mj4+MF18MCkmMTZ8MCkhPTA/KFV4KGNbaD4+Ml18MCxjW2c+PjJdfDApfDApPT0wOjApe2Nbbz4+Ml09Y1tjWyhjW2c+PjJdfDApKzUyPj4yXT4+Ml07Y1tqPj4yXT1zaigoY1toPj4yXXwwKSszMjB8MCxjW28+PjJdfDApfDA7aWYoY1tqPj4yXXwwKXtjW24+PjJdPTA7Y1trPj4yXT1KeihjW2g+PjJdfDAsY1tnPj4yXXwwLGNbaj4+Ml18MCxjWyhjW2Nbaj4+Ml0+PjJdfDApKzg+PjJdfDAsbil8MDtpZihjW2s+PjJdfDApe3A9Y1tmPj4yXXwwO2NbbT4+Ml09Y1tuPj4yXTtFaChwLDE4MzkxLG0pfVRmKGNbaD4+Ml18MCxjW24+PjJdfDApfWVsc2V7Y1twPj4yXT1jW2NbKGNbZz4+Ml18MCkrNTI+PjJdPj4yXTtvPWNbZj4+Ml18MDtjW2w+PjJdPWNbcD4+Ml07RWgobywzMDYzMSxsKTtjW2s+PjJdPTF9Y1tlPj4yXT1jW2s+PjJdO3A9Y1tlPj4yXXwwO2k9cTtyZXR1cm4gcHwwfWNbZT4+Ml09MDtwPWNbZT4+Ml18MDtpPXE7cmV0dXJuIHB8MH1mdW5jdGlvbiBfeChkLGUsZil7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MDtuPWk7aT1pKzMyfDA7Zz1uKzIwfDA7aD1uKzE2fDA7aj1uKzEyfDA7az1uKzh8MDtsPW4rNHwwO209bjtjW2g+PjJdPWQ7Y1tqPj4yXT1lO2Nbaz4+Ml09ZjtpZighKGNbaj4+Ml18MCkpe2NbZz4+Ml09MDttPWNbZz4+Ml18MDtpPW47cmV0dXJuIG18MH1jW2w+PjJdPVZ3KGNbaD4+Ml18MCw2OCwwKXwwO2lmKCEoY1tsPj4yXXwwKSl7Y1tnPj4yXT0wO209Y1tnPj4yXXwwO2k9bjtyZXR1cm4gbXwwfWU9UXkoY1toPj4yXXwwLGNbY1tqPj4yXT4+Ml18MCxjW2s+PjJdfDApfDA7Y1tjW2w+PjJdPj4yXT1lO2U9R3ooY1toPj4yXXwwLGNbKGNbaj4+Ml18MCkrMjg+PjJdfDAsY1trPj4yXXwwKXwwO2NbKGNbbD4+Ml18MCkrMjg+PjJdPWU7ZT1JeShjW2g+PjJdfDAsY1soY1tqPj4yXXwwKSszMj4+Ml18MCxjW2s+PjJdfDApfDA7Y1soY1tsPj4yXXwwKSszMj4+Ml09ZTtlPVF5KGNbaD4+Ml18MCxjWyhjW2o+PjJdfDApKzM2Pj4yXXwwLGNbaz4+Ml18MCl8MDtjWyhjW2w+PjJdfDApKzM2Pj4yXT1lO2U9SXkoY1toPj4yXXwwLGNbKGNbaj4+Ml18MCkrNDA+PjJdfDAsY1trPj4yXXwwKXwwO2NbKGNbbD4+Ml18MCkrNDA+PjJdPWU7ZT1ReShjW2g+PjJdfDAsY1soY1tqPj4yXXwwKSs0ND4+Ml18MCxjW2s+PjJdfDApfDA7Y1soY1tsPj4yXXwwKSs0ND4+Ml09ZTthWyhjW2w+PjJdfDApKzQ+PjBdPWFbKGNbaj4+Ml18MCkrND4+MF18MDtlPV94KGNbaD4+Ml18MCxjWyhjW2o+PjJdfDApKzQ4Pj4yXXwwLGNbaz4+Ml18MCl8MDtjW20+PjJdPWU7Y1soY1tsPj4yXXwwKSs0OD4+Ml09ZTtpZihjW20+PjJdfDApY1soY1ttPj4yXXwwKSs1Mj4+Ml09Y1tsPj4yXTtjWyhjW2w+PjJdfDApKzUyPj4yXT0wO209SXkoY1toPj4yXXwwLGNbKGNbaj4+Ml18MCkrNTY+PjJdfDAsY1trPj4yXXwwKXwwO2NbKGNbbD4+Ml18MCkrNTY+PjJdPW07bT1JeShjW2g+PjJdfDAsY1soY1tqPj4yXXwwKSs2MD4+Ml18MCxjW2s+PjJdfDApfDA7Y1soY1tsPj4yXXwwKSs2MD4+Ml09bTtjWyhjW2w+PjJdfDApKzEyPj4yXT0wO2NbKGNbbD4+Ml18MCkrMTY+PjJdPTA7Y1soY1tsPj4yXXwwKSs4Pj4yXT1jWyhjW2o+PjJdfDApKzg+PjJdJi0zMztjWyhjW2w+PjJdfDApKzIwPj4yXT0tMTtjWyhjW2w+PjJdfDApKzIwKzQ+PjJdPS0xO2JbKGNbbD4+Ml18MCkrNj4+MV09YlsoY1tqPj4yXXwwKSs2Pj4xXXwwO209SHooY1toPj4yXXwwLGNbKGNbaj4+Ml18MCkrNjQ+PjJdfDApfDA7Y1soY1tsPj4yXXwwKSs2ND4+Ml09bTtjW2c+PjJdPWNbbD4+Ml07bT1jW2c+PjJdfDA7aT1uO3JldHVybiBtfDB9ZnVuY3Rpb24gJHgoYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MDtoPWk7aT1pKzE2fDA7ZD1oKzEyfDA7ZT1oKzh8MDtmPWgrNHwwO2c9aDtjW2Q+PjJdPWE7Y1tlPj4yXT1iO2lmKCEoY1tlPj4yXXwwKSl7aT1oO3JldHVybn1jW2Y+PjJdPTA7Y1tnPj4yXT0oY1tlPj4yXXwwKSs4O3doaWxlKDEpe2lmKChjW2Y+PjJdfDApPj0oY1tjW2U+PjJdPj4yXXwwKSl7ZD04O2JyZWFrfWlmKChjWyhjW2c+PjJdfDApKzQ0Pj4yXXwwKT49MCl7ZD04O2JyZWFrfWI9KGNbZD4+Ml18MCkrNDB8MDthPWNbYj4+Ml18MDtjW2I+PjJdPWErMTtjWyhjW2c+PjJdfDApKzQ0Pj4yXT1hO2lmKGNbKGNbZz4+Ml18MCkrMjA+PjJdfDApJHgoY1tkPj4yXXwwLGNbKGNbKGNbZz4+Ml18MCkrMjA+PjJdfDApKzI4Pj4yXXwwKTtjW2Y+PjJdPShjW2Y+PjJdfDApKzE7Y1tnPj4yXT0oY1tnPj4yXXwwKSs3Mn1pZigoZHwwKT09OCl7aT1oO3JldHVybn19ZnVuY3Rpb24gYXkoZCxlKXtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wO209aTtpPWkrMzJ8MDtmPW0rMjB8MDtnPW0rMTZ8MDtoPW0rMTJ8MDtrPW0rOHwwO2o9bSs0fDA7bD1tO2NbZz4+Ml09ZDtjW2g+PjJdPWU7Y1tqPj4yXT1jW2NbZz4+Ml0+PjJdO2NbbD4+Ml09Y1soY1tqPj4yXXwwKSsyND4+Ml07ZT0oY1tqPj4yXXwwKSsyNHwwO2NbZT4+Ml09Y1tlPj4yXSYtNTtlPShjW2o+PjJdfDApKzI0fDA7Y1tlPj4yXT1jW2U+PjJdfDY0O215KGNbZz4+Ml18MCxjW2g+PjJdfDAsMCk7aWYoY1soY1tnPj4yXXwwKSszNj4+Ml18MCl7Y1tmPj4yXT0wO2w9Y1tmPj4yXXwwO2k9bTtyZXR1cm4gbHwwfXdoaWxlKDEpe2lmKCEoY1soY1toPj4yXXwwKSs0OD4+Ml18MCkpYnJlYWs7Y1toPj4yXT1jWyhjW2g+PjJdfDApKzQ4Pj4yXX1jWyhjW2o+PjJdfDApKzI0Pj4yXT1jW2w+PjJdO2Nbaz4+Ml09c2goY1tqPj4yXXwwLDcyLDApfDA7aWYoIShjW2s+PjJdfDApKXtjW2Y+PjJdPTA7bD1jW2Y+PjJdfDA7aT1tO3JldHVybiBsfDB9YlsoY1trPj4yXXwwKSszNj4+MV09MTtjW2Nbaz4+Ml0+PjJdPTA7YlsoY1trPj4yXXwwKSszOD4+MV09MjAwO2J5KGNbZz4+Ml18MCxjW2NbaD4+Ml0+PjJdfDAsKGNbaz4+Ml18MCkrMzR8MCwoY1trPj4yXXwwKSs0fDApfDA7Y3koY1tnPj4yXXwwLGNbaz4+Ml18MCxjW2g+PjJdfDApO2JbKGNbaz4+Ml18MCkrMzI+PjFdPS0xO2lmKGFbKGNbaj4+Ml18MCkrNjk+PjBdfDApe1JmKGNbaj4+Ml18MCxjW2s+PjJdfDApO2NbZj4+Ml09MDtsPWNbZj4+Ml18MDtpPW07cmV0dXJuIGx8MH1lbHNle2NbZj4+Ml09Y1trPj4yXTtsPWNbZj4+Ml18MDtpPW07cmV0dXJuIGx8MH1yZXR1cm4gMH1mdW5jdGlvbiBieShlLGYsZyxoKXtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDt2YXIgaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTAsRT0wO0Q9aTtpPWkrMTEyfDA7dT1EKzh8MDt0PUQ7dz1EKzEwNHwwO0U9RCsxMDB8MDtqPUQrOTZ8MDt4PUQrOTJ8MDt5PUQrODh8MDtBPUQrODR8MDtCPUQrODB8MDtDPUQrNzZ8MDtrPUQrNzJ8MDt6PUQrNjh8MDtxPUQrNjR8MDtuPUQrNjB8MDtwPUQrNTZ8MDt2PUQrNTJ8MDtvPUQrNDh8MDtsPUQrMzJ8MDtyPUQrMjh8MDtzPUQrMjR8MDttPUQrMjB8MDtjW0U+PjJdPWU7Y1tqPj4yXT1mO2NbeD4+Ml09ZztjW3k+PjJdPWg7Y1tBPj4yXT1jW2NbRT4+Ml0+PjJdO3pqKGwpO2lmKGNbaj4+Ml18MCl7Y1tuPj4yXT1jW2Nbaj4+Ml0+PjJdO2Nbej4+Ml09c2goY1tBPj4yXXwwLGNbbj4+Ml08PDQsMCl8MH1lbHNle2Nbbj4+Ml09MDtjW3o+PjJdPTB9YltjW3g+PjJdPj4xXT1jW24+PjJdO2NbY1t5Pj4yXT4+Ml09Y1t6Pj4yXTtjW0I+PjJdPTA7Y1txPj4yXT1jW3o+PjJdO3doaWxlKDEpe2lmKChjW0I+PjJdfDApPj0oY1tuPj4yXXwwKSlicmVhaztpZighKChhWyhjW0E+PjJdfDApKzY5Pj4wXXwwKSE9MF4xKSlicmVhaztjW3A+PjJdPWt5KGNbKGNbKGNbaj4+Ml18MCkrND4+Ml18MCkrKChjW0I+PjJdfDApKjIwfDApPj4yXXwwKXwwO0U9Y1soY1soY1tqPj4yXXwwKSs0Pj4yXXwwKSsoKGNbQj4+Ml18MCkqMjB8MCkrND4+Ml18MDtjW3Y+PjJdPUU7ZG8gaWYoIUUpe2Nbcj4+Ml09Y1twPj4yXTt3aGlsZSgxKXtmPWNbcj4+Ml18MDtpZigoZFtjW3I+PjJdPj4wXXwwKSE9MTIyKWJyZWFrO2Nbcj4+Ml09Y1tmKzE2Pj4yXX1pZigoZFtmPj4wXXwwKT09MTUyPyhjWyhjW3I+PjJdfDApKzQ0Pj4yXXwwKSE9MDowKXtjW20+PjJdPWJbKGNbcj4+Ml18MCkrMzI+PjFdO2Nbcz4+Ml09Y1soY1tyPj4yXXwwKSs0ND4+Ml07aWYoKGNbbT4+Ml18MCk8MCljW20+PjJdPWJbKGNbcz4+Ml18MCkrMzI+PjFdO2lmKChjW20+PjJdfDApPj0wKWY9Y1soY1soY1tzPj4yXXwwKSs0Pj4yXXwwKSsoY1ttPj4yXTw8NCk+PjJdfDA7ZWxzZSBmPTI0NzQ1O2Nbdj4+Ml09ZjticmVha31pZigoZFtjW3I+PjJdPj4wXXwwKT09NTUpe2Nbdj4+Ml09Y1soY1tyPj4yXXwwKSs4Pj4yXTticmVha31lbHNle2Nbdj4+Ml09Y1soY1soY1tqPj4yXXwwKSs0Pj4yXXwwKSsoKGNbQj4+Ml18MCkqMjB8MCkrOD4+Ml07YnJlYWt9fXdoaWxlKDApO0U9Y1tBPj4yXXwwO2NbdD4+Ml09Y1t2Pj4yXTtjW3Y+PjJdPUdoKEUsMTgzOTEsdCl8MDtjW2s+PjJdPTA7d2hpbGUoMSl7aWYoY1t2Pj4yXXwwKWU9KHNqKGwsY1t2Pj4yXXwwKXwwKSE9MDtlbHNlIGU9MDtmPWNbdj4+Ml18MDtpZighZSlicmVhaztjW28+PjJdPUpmKGYpfDA7aWYoKGNbbz4+Ml18MCk+MCl7Y1tDPj4yXT0oY1tvPj4yXXwwKS0xO3doaWxlKDEpe2lmKChjW0M+PjJdfDApPD0wKWJyZWFrO2lmKCEoZFsxODQwMysoZFsoY1t2Pj4yXXwwKSsoY1tDPj4yXXwwKT4+MF18MCk+PjBdJjQpKWJyZWFrO2NbQz4+Ml09KGNbQz4+Ml18MCkrLTF9aWYoKGFbKGNbdj4+Ml18MCkrKGNbQz4+Ml18MCk+PjBdfDApPT01OCljW28+PjJdPWNbQz4+Ml19RT1jW0E+PjJdfDA7ZT1jW28+PjJdfDA7aD1jW3Y+PjJdfDA7Zz0oY1trPj4yXXwwKSsxfDA7Y1trPj4yXT1nO2NbdT4+Ml09ZTtjW3UrND4+Ml09aDtjW3UrOD4+Ml09ZztjW3Y+PjJdPUdoKEUsMjkwNDcsdSl8MDtpZigoY1trPj4yXXwwKT4+PjA8PTMpY29udGludWU7U2QoNCxrKX1jW2NbcT4+Ml0+PjJdPWY7aWYoKGNbdj4+Ml18MCkhPTA/KEU9VWoobCxjW3Y+PjJdfDAsY1txPj4yXXwwKXwwLChFfDApPT0oY1txPj4yXXwwKSk6MCltaChjW0E+PjJdfDApO2NbQj4+Ml09KGNbQj4+Ml18MCkrMTtjW3E+PjJdPShjW3E+PjJdfDApKzE2fUFqKGwpO2lmKCEoYVsoY1tBPj4yXXwwKSs2OT4+MF18MCkpe2Nbdz4+Ml09MDtFPWNbdz4+Ml18MDtpPUQ7cmV0dXJuIEV8MH1jW0M+PjJdPTA7d2hpbGUoMSl7Zj1jW0E+PjJdfDA7aWYoKGNbQz4+Ml18MCk+PShjW0I+PjJdfDApKWJyZWFrO1RmKGYsY1soY1t6Pj4yXXwwKSsoY1tDPj4yXTw8NCk+PjJdfDApO2NbQz4+Ml09KGNbQz4+Ml18MCkrMX1UZihmLGNbej4+Ml18MCk7Y1tjW3k+PjJdPj4yXT0wO2JbY1t4Pj4yXT4+MV09MDtjW3c+PjJdPTc7RT1jW3c+PjJdfDA7aT1EO3JldHVybiBFfDB9ZnVuY3Rpb24gY3koZSxmLGcpe2U9ZXwwO2Y9ZnwwO2c9Z3wwO3ZhciBoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MDt3PWk7aT1pKzk2fDA7aD13Kzg0fDA7aj13KzgwfDA7az13Kzc2fDA7bT13KzcyfDA7dD13KzQwfDA7cj13KzM2fDA7cz13KzMyfDA7bj13KzI4fDA7cT13KzI0fDA7bD13KzIwfDA7dT13O3Y9dysxNnwwO3A9dysxMnwwO289dys4fDA7Y1toPj4yXT1lO2Nbaj4+Ml09ZjtjW2s+PjJdPWc7Y1ttPj4yXT1jW2NbaD4+Ml0+PjJdO2Y9dTtjW2Y+PjJdPTA7Y1tmKzQ+PjJdPTA7aWYoYVsoY1ttPj4yXXwwKSs2OT4+MF18MCl7aT13O3JldHVybn07Y1t0Pj4yXT0wO2NbdCs0Pj4yXT0wO2NbdCs4Pj4yXT0wO2NbdCsxMj4+Ml09MDtjW3QrMTY+PjJdPTA7Y1t0KzIwPj4yXT0wO2NbdCsyND4+Ml09MDtjW3QrMjg+PjJdPTA7Y1t0KzQ+PjJdPWNbKGNbaz4+Ml18MCkrMjg+PjJdO2NbbD4+Ml09Y1soY1tjW2s+PjJdPj4yXXwwKSs0Pj4yXTtjW24+PjJdPTA7Y1tyPj4yXT1jWyhjW2o+PjJdfDApKzQ+PjJdO3doaWxlKDEpe2lmKChjW24+PjJdfDApPj0oYlsoY1tqPj4yXXwwKSszND4+MV18MCkpYnJlYWs7Y1txPj4yXT1jWyhjW2w+PjJdfDApKygoY1tuPj4yXXwwKSoyMHwwKT4+Ml07Y1t2Pj4yXT1keSh0LGNbcT4+Ml18MCwoY1tyPj4yXXwwKSsxNHwwKXwwO2c9dTtnPVJSKGNbZz4+Ml18MCxjW2crND4+Ml18MCxkWyhjW3I+PjJdfDApKzE0Pj4wXXwwLDApfDA7Zj11O2NbZj4+Ml09ZztjW2YrND4+Ml09QztmPWV5KGNbcT4+Ml18MCl8MDthWyhjW3I+PjJdfDApKzEzPj4wXT1mO2lmKCgoY1t2Pj4yXXwwKSE9MD8oZj1KZihjW3Y+PjJdfDApfDAsY1tvPj4yXT1mLChmfDApPjApOjApPyhjW3A+PjJdPUpmKGNbY1tyPj4yXT4+Ml18MCl8MCxmPShjW3A+PjJdfDApKyhjW28+PjJdfDApKzJ8MCxmPVB4KGNbbT4+Ml18MCxjW2Nbcj4+Ml0+PjJdfDAsZiwoKGZ8MCk8MCk8PDMxPj4zMSl8MCxjW2Nbcj4+Ml0+PjJdPWYsKGNbY1tyPj4yXT4+Ml18MCkhPTApOjApe1RSKChjW2Nbcj4+Ml0+PjJdfDApKygoY1twPj4yXXwwKSsxKXwwLGNbdj4+Ml18MCwoY1tvPj4yXXwwKSsxfDApfDA7Zj0oY1tyPj4yXXwwKSsxNXwwO2FbZj4+MF09ZFtmPj4wXXw0fWlmKCEoYVsoY1tyPj4yXXwwKSsxMz4+MF18MCkpYVsoY1tyPj4yXXwwKSsxMz4+MF09NjU7Y1tzPj4yXT1meShjW2g+PjJdfDAsY1txPj4yXXwwKXwwO2lmKChjW3M+PjJdfDApIT0wPyhjWyhjW3I+PjJdfDApKzg+PjJdfDApPT0wOjApe2Y9cWgoY1ttPj4yXXwwLGNbY1tzPj4yXT4+Ml18MCl8MDtjWyhjW3I+PjJdfDApKzg+PjJdPWZ9Y1tuPj4yXT0oY1tuPj4yXXwwKSsxO2Nbcj4+Ml09KGNbcj4+Ml18MCkrMTZ9dj11O3Y9YVMoY1t2Pj4yXXwwLGNbdis0Pj4yXXwwLDQsMCl8MDt2PU1qKHYsQyl8MDtiWyhjW2o+PjJdfDApKzQwPj4xXT12O2k9dztyZXR1cm59ZnVuY3Rpb24gZHkoZSxmLGcpe2U9ZXwwO2Y9ZnwwO2c9Z3wwO3ZhciBoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTA7eD1pO2k9aSsxMjh8MDtoPXgrMTEyfDA7aj14KzEwOHwwO2s9eCsxMDR8MDt3PXgrMTAwfDA7bj14Kzk2fDA7bD14KzExNnwwO3M9eCs5MnwwO3E9eCs4OHwwO209eCs4NHwwO3Q9eCs4MHwwO3U9eCs0OHwwO289eCs0MHwwO3Y9eCs4fDA7cj14KzR8MDtwPXg7Y1toPj4yXT1lO2Nbaj4+Ml09ZjtjW2s+PjJdPWc7Y1t3Pj4yXT0wO2FbbD4+MF09MTthOmRvIHN3aXRjaChkW2Nbaj4+Ml0+PjBdfDApe2Nhc2UgMTUyOmNhc2UgMTU0OntjW3M+PjJdPTA7Y1txPj4yXT0wO2NbbT4+Ml09YlsoY1tqPj4yXXwwKSszMj4+MV07d2hpbGUoMSl7aWYoIShjW2g+PjJdfDApKWJyZWFrO2lmKCEoKGNbcz4+Ml18MCkhPTBeMSkpYnJlYWs7Y1t0Pj4yXT1jWyhjW2g+PjJdfDApKzQ+PjJdO2Nbbj4+Ml09MDt3aGlsZSgxKXtpZigoY1tuPj4yXXwwKT49KGNbY1t0Pj4yXT4+Ml18MCkpYnJlYWs7aWYoKGNbKGNbdD4+Ml18MCkrOCsoKGNbbj4+Ml18MCkqNzJ8MCkrNDQ+PjJdfDApPT0oY1soY1tqPj4yXXwwKSsyOD4+Ml18MCkpYnJlYWs7Y1tuPj4yXT0oY1tuPj4yXXwwKSsxfWlmKChjW24+PjJdfDApPChjW2NbdD4+Ml0+PjJdfDApKXtjW3M+PjJdPWNbKGNbdD4+Ml18MCkrOCsoKGNbbj4+Ml18MCkqNzJ8MCkrMTY+PjJdO2NbcT4+Ml09Y1soY1t0Pj4yXXwwKSs4KygoY1tuPj4yXXwwKSo3MnwwKSsyMD4+Ml07Y29udGludWV9ZWxzZXtjW2g+PjJdPWNbKGNbaD4+Ml18MCkrMTY+PjJdO2NvbnRpbnVlfX1pZihjW3M+PjJdfDApe2lmKGNbcT4+Ml18MCl7aWYoKGNbbT4+Ml18MCk8MClicmVhayBhO2lmKChjW20+PjJdfDApPj0oY1tjW2NbcT4+Ml0+PjJdPj4yXXwwKSlicmVhayBhO2Nbbz4+Ml09Y1soY1soY1tjW3E+PjJdPj4yXXwwKSs0Pj4yXXwwKSsoKGNbbT4+Ml18MCkqMjB8MCk+PjJdO2NbdSs0Pj4yXT1jWyhjW3E+PjJdfDApKzI4Pj4yXTtjW3UrMTY+PjJdPWNbaD4+Ml07Y1t1Pj4yXT1jW2NbaD4+Ml0+PjJdO2Nbdz4+Ml09ZHkodSxjW28+PjJdfDAsbCl8MDticmVhayBhfWlmKGNbKGNbcz4+Ml18MCkrNjQ+PjJdfDApe2lmKChjW20+PjJdfDApPDApY1ttPj4yXT1iWyhjW3M+PjJdfDApKzMyPj4xXTtpZigoY1ttPj4yXXwwKTwwKXtjW3c+PjJdPTE4NzU5O2JyZWFrIGF9ZWxzZXtjW3c+PjJdPXZpKChjWyhjW3M+PjJdfDApKzQ+PjJdfDApKyhjW20+PjJdPDw0KXwwLDApfDA7YVtsPj4wXT1hWyhjWyhjW3M+PjJdfDApKzQ+PjJdfDApKyhjW20+PjJdPDw0KSsxND4+MF18MDticmVhayBhfX19YnJlYWt9Y2FzZSAxMTk6e2Nbcj4+Ml09Y1soY1tqPj4yXXwwKSsyMD4+Ml07Y1twPj4yXT1jW2NbKGNbY1tyPj4yXT4+Ml18MCkrND4+Ml0+PjJdO2Nbdis0Pj4yXT1jWyhjW3I+PjJdfDApKzI4Pj4yXTtjW3YrMTY+PjJdPWNbaD4+Ml07Y1t2Pj4yXT1jW2NbaD4+Ml0+PjJdO2Nbdz4+Ml09ZHkodixjW3A+PjJdfDAsbCl8MDticmVha31kZWZhdWx0Ont9fXdoaWxlKDApO2lmKCEoY1trPj4yXXwwKSl7dz1jW3c+PjJdfDA7aT14O3JldHVybiB3fDB9YVtjW2s+PjJdPj4wXT1hW2w+PjBdfDA7dz1jW3c+PjJdfDA7aT14O3JldHVybiB3fDB9ZnVuY3Rpb24gZXkoZSl7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MDtqPWk7aT1pKzE2fDA7Zj1qKzh8MDtnPWorNHwwO2g9ajtjW2c+PjJdPWU7Y1tnPj4yXT1reShjW2c+PjJdfDApfDA7aWYoY1soY1tnPj4yXXwwKSs0Pj4yXSY1MTIpe2FbZj4+MF09MDtoPWFbZj4+MF18MDtpPWo7cmV0dXJuIGh8MH1jW2g+PjJdPWRbY1tnPj4yXT4+MF07aWYoKGNbaD4+Ml18MCk9PTExOSl7YVtmPj4wXT1leShjW2NbKGNbY1soY1tnPj4yXXwwKSsyMD4+Ml0+PjJdfDApKzQ+PjJdPj4yXXwwKXwwO2g9YVtmPj4wXXwwO2k9ajtyZXR1cm4gaHwwfWlmKChjW2g+PjJdfDApPT0xNTcpY1toPj4yXT1kWyhjW2c+PjJdfDApKzM4Pj4wXTtpZigoY1toPj4yXXwwKT09NjYpe2FbZj4+MF09RHgoY1soY1tnPj4yXXwwKSs4Pj4yXXwwLDApfDA7aD1hW2Y+PjBdfDA7aT1qO3JldHVybiBofDB9aWYoKGNbaD4+Ml18MCk9PTE1NHwoY1toPj4yXXwwKT09MTUyKXthW2Y+PjBdPWx5KGNbKGNbZz4+Ml18MCkrNDQ+PjJdfDAsYlsoY1tnPj4yXXwwKSszMj4+MV18MCl8MDtoPWFbZj4+MF18MDtpPWo7cmV0dXJuIGh8MH1lPWNbZz4+Ml18MDtpZigoY1toPj4yXXwwKT09MTU5KXthW2Y+PjBdPWV5KGNbKGNbKGNbY1soY1soY1tnPj4yXXwwKSsxMj4+Ml18MCkrMjA+PjJdPj4yXXwwKSs0Pj4yXXwwKSsoKGJbZSszMj4+MV18MCkqMjB8MCk+PjJdfDApfDA7aD1hW2Y+PjBdfDA7aT1qO3JldHVybiBofDB9ZWxzZXthW2Y+PjBdPWFbZSsxPj4wXXwwO2g9YVtmPj4wXXwwO2k9ajtyZXR1cm4gaHwwfXJldHVybiAwfWZ1bmN0aW9uIGZ5KGUsZil7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wO3I9aTtpPWkrNDh8MDtnPXIrMzZ8MDtzPXIrMzJ8MDtoPXIrMjh8MDtuPXIrMjR8MDttPXIrMjB8MDtsPXIrMTZ8MDtrPXIrMTJ8MDtwPXIrOHwwO289cis0fDA7aj1yO2NbZz4+Ml09ZTtjW3M+PjJdPWY7Y1toPj4yXT1jW2NbZz4+Ml0+PjJdO2Nbbj4+Ml09MDtjW20+PjJdPWNbcz4+Ml07d2hpbGUoMSl7aWYoIShjW20+PjJdfDApKWJyZWFrO2NbbD4+Ml09ZFtjW20+PjJdPj4wXTtpZihjWyhjW20+PjJdfDApKzQ+PjJdJjUxMilicmVhaztpZigoY1tsPj4yXXwwKT09NjZ8KGNbbD4+Ml18MCk9PTE1Nil7Y1ttPj4yXT1jWyhjW20+PjJdfDApKzEyPj4yXTtjb250aW51ZX1pZigoY1tsPj4yXXwwKT09NTMpe3E9OTticmVha31pZigoY1tsPj4yXXwwKT09MTU3PyhkWyhjW20+PjJdfDApKzM4Pj4wXXwwKT09NTM6MCl7cT05O2JyZWFrfWlmKChjW2w+PjJdfDApPT0xNTR8KGNbbD4+Ml18MCk9PTE1MnwoY1tsPj4yXXwwKT09MTU3fChjW2w+PjJdfDApPT04OD8oY1soY1ttPj4yXXwwKSs0ND4+Ml18MCkhPTA6MCl7cT0xMjticmVha31pZighKGNbKGNbbT4+Ml18MCkrND4+Ml0mMjU2KSlicmVhaztpZigoY1soY1ttPj4yXXwwKSsxMj4+Ml18MCkhPTA/KGNbKGNbKGNbbT4+Ml18MCkrMTI+PjJdfDApKzQ+PjJdJjI1NnwwKSE9MDowKXtjW20+PjJdPWNbKGNbbT4+Ml18MCkrMTI+PjJdO2NvbnRpbnVlfWNbbz4+Ml09Y1soY1ttPj4yXXwwKSsxNj4+Ml07YTpkbyBpZigoY1soY1ttPj4yXXwwKSsyMD4+Ml18MCkhPTA/KGNbKGNbbT4+Ml18MCkrND4+Ml0mMjA0OHwwKT09MDowKXtjW2o+PjJdPTA7d2hpbGUoMSl7aWYoKGNbaj4+Ml18MCk+PShjW2NbKGNbbT4+Ml18MCkrMjA+PjJdPj4yXXwwKSlicmVhayBhO2Y9Y1tqPj4yXXwwO2lmKGNbKGNbKGNbKGNbKGNbbT4+Ml18MCkrMjA+PjJdfDApKzQ+PjJdfDApKygoY1tqPj4yXXwwKSoyMHwwKT4+Ml18MCkrND4+Ml0mMjU2KWJyZWFrO2Nbaj4+Ml09ZisxfWNbbz4+Ml09Y1soY1soY1soY1ttPj4yXXwwKSsyMD4+Ml18MCkrND4+Ml18MCkrKGYqMjB8MCk+PjJdfXdoaWxlKDApO2NbbT4+Ml09Y1tvPj4yXX1pZigocXwwKT09OSljW24+PjJdPWd5KGNbZz4+Ml18MCxhWyhjW2g+PjJdfDApKzY2Pj4wXXwwLDAsY1soY1ttPj4yXXwwKSs4Pj4yXXwwKXwwO2Vsc2UgaWYoKHF8MCk9PTEyPyhjW2s+PjJdPWJbKGNbbT4+Ml18MCkrMzI+PjFdLChjW2s+PjJdfDApPj0wKTowKXtjW3A+PjJdPWNbKGNbKGNbKGNbbT4+Ml18MCkrNDQ+PjJdfDApKzQ+PjJdfDApKyhjW2s+PjJdPDw0KSs4Pj4yXTtjW24+PjJdPVNqKGNbaD4+Ml18MCxhWyhjW2g+PjJdfDApKzY2Pj4wXXwwLGNbcD4+Ml18MCwwKXwwfWlmKCEoaHkoY1tnPj4yXXwwLGNbbj4+Ml18MCl8MCkpe3M9Y1tuPj4yXXwwO2k9cjtyZXR1cm4gc3wwfWNbbj4+Ml09MDtzPWNbbj4+Ml18MDtpPXI7cmV0dXJuIHN8MH1mdW5jdGlvbiBneShiLGUsZixnKXtiPWJ8MDtlPWV8MDtmPWZ8MDtnPWd8MDt2YXIgaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MDtvPWk7aT1pKzMyfDA7bj1vO2g9bysyMHwwO2o9bysyNHwwO3A9bysxNnwwO2s9bysxMnwwO209bys4fDA7bD1vKzR8MDtjW2g+PjJdPWI7YVtqPj4wXT1lO2NbcD4+Ml09ZjtjW2s+PjJdPWc7Y1tsPj4yXT1jW2NbaD4+Ml0+PjJdO2NbbT4+Ml09Y1twPj4yXTtpZighKGNbbT4+Ml18MCkpY1ttPj4yXT1TaihjW2w+PjJdfDAsYVtqPj4wXXwwLGNbaz4+Ml18MCwwKXwwO2lmKCEoKGNbbT4+Ml18MCkhPTA/KGNbKGNbbT4+Ml18MCkrMTI+PjJdfDApIT0wOjApKXtpeShjW2w+PjJdfDAsZFtqPj4wXXwwLGNbaz4+Ml18MCk7Y1ttPj4yXT1TaihjW2w+PjJdfDAsYVtqPj4wXXwwLGNbaz4+Ml18MCwwKXwwfWlmKCgoY1ttPj4yXXwwKSE9MD8oY1soY1ttPj4yXXwwKSsxMj4+Ml18MCk9PTA6MCk/KGp5KGNbbD4+Ml18MCxjW20+PjJdfDApfDApIT0wOjApY1ttPj4yXT0wO2lmKGNbbT4+Ml18MCl7cD1jW20+PjJdfDA7aT1vO3JldHVybiBwfDB9cD1jW2g+PjJdfDA7Y1tuPj4yXT1jW2s+PjJdO0VoKHAsMjkwMTMsbik7cD1jW20+PjJdfDA7aT1vO3JldHVybiBwfDB9ZnVuY3Rpb24gaHkoYixkKXtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wO2w9aTtpPWkrMzJ8MDtlPWwrMjB8MDtmPWwrMTZ8MDtnPWwrMTJ8MDtrPWwrOHwwO2g9bCs0fDA7aj1sO2NbZj4+Ml09YjtjW2c+PjJdPWQ7aWYoKGNbZz4+Ml18MCkhPTA/KGNbaz4+Ml09Y1tjW2c+PjJdPj4yXSxjW2g+PjJdPWNbY1tmPj4yXT4+Ml0sY1tqPj4yXT1neShjW2Y+PjJdfDAsYVsoY1toPj4yXXwwKSs2Nj4+MF18MCxjW2c+PjJdfDAsY1trPj4yXXwwKXwwLChjW2o+PjJdfDApPT0wKTowKXtjW2U+PjJdPTE7az1jW2U+PjJdfDA7aT1sO3JldHVybiBrfDB9Y1tlPj4yXT0wO2s9Y1tlPj4yXXwwO2k9bDtyZXR1cm4ga3wwfWZ1bmN0aW9uIGl5KGIsZSxmKXtiPWJ8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wO249aTtpPWkrMzJ8MDtnPW4rMjB8MDtoPW4rMTZ8MDtqPW4rMTJ8MDtsPW4rOHwwO209bis0fDA7az1uO2NbZz4+Ml09YjtjW2g+PjJdPWU7Y1tqPj4yXT1mO2RvIGlmKGNbKGNbZz4+Ml18MCkrMjMyPj4yXXwwKXtjW2w+PjJdPXFoKGNbZz4+Ml18MCxjW2o+PjJdfDApfDA7aWYoY1tsPj4yXXwwKXtfYltjWyhjW2c+PjJdfDApKzIzMj4+Ml0mMjU1XShjWyhjW2c+PjJdfDApKzI0MD4+Ml18MCxjW2c+PjJdfDAsY1toPj4yXXwwLGNbbD4+Ml18MCk7VGYoY1tnPj4yXXwwLGNbbD4+Ml18MCk7YnJlYWt9ZWxzZXtpPW47cmV0dXJufX13aGlsZSgwKTtpZighKGNbKGNbZz4+Ml18MCkrMjM2Pj4yXXwwKSl7aT1uO3JldHVybn1jW2s+PjJdPVpoKGNbZz4+Ml18MCl8MDtfaChjW2s+PjJdfDAsLTEsY1tqPj4yXXwwLDEsMCk7Y1ttPj4yXT1aZyhjW2s+PjJdfDAsKChhWzk2OF18MCk9PTA/MzoyKSYyNTUpfDA7aWYoY1ttPj4yXXwwKV9iW2NbKGNbZz4+Ml18MCkrMjM2Pj4yXSYyNTVdKGNbKGNbZz4+Ml18MCkrMjQwPj4yXXwwLGNbZz4+Ml18MCxkWyhjW2c+PjJdfDApKzY2Pj4wXXwwLGNbbT4+Ml18MCk7Y2goY1trPj4yXXwwKTtpPW47cmV0dXJufWZ1bmN0aW9uIGp5KGIsZCl7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MDtsPWk7aT1pKzMyfDA7aD1sKzIwfDA7ZT1sKzE2fDA7aj1sKzEyfDA7az1sKzh8MDtnPWwrNHwwO2Y9bDtjW2U+PjJdPWI7Y1tqPj4yXT1kO2NbZz4+Ml09Y1tjW2o+PjJdPj4yXTtjW2Y+PjJdPTA7d2hpbGUoMSl7aWYoKGNbZj4+Ml18MCk+PTMpe2U9NjticmVha31jW2s+PjJdPVNqKGNbZT4+Ml18MCxhWzI5MDQ0KyhjW2Y+PjJdfDApPj4wXXwwLGNbZz4+Ml18MCwwKXwwO2lmKGNbKGNbaz4+Ml18MCkrMTI+PjJdfDApe2U9NDticmVha31jW2Y+PjJdPShjW2Y+PjJdfDApKzF9aWYoKGV8MCk9PTQpe2c9Y1tqPj4yXXwwO2s9Y1trPj4yXXwwO2NbZz4+Ml09Y1trPj4yXTtjW2crND4+Ml09Y1trKzQ+PjJdO2NbZys4Pj4yXT1jW2srOD4+Ml07Y1tnKzEyPj4yXT1jW2srMTI+PjJdO2NbZysxNj4+Ml09Y1trKzE2Pj4yXTtjWyhjW2o+PjJdfDApKzE2Pj4yXT0wO2NbaD4+Ml09MDtrPWNbaD4+Ml18MDtpPWw7cmV0dXJuIGt8MH1lbHNlIGlmKChlfDApPT02KXtjW2g+PjJdPTE7az1jW2g+PjJdfDA7aT1sO3JldHVybiBrfDB9cmV0dXJuIDB9ZnVuY3Rpb24ga3koYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wO2U9aTtpPWkrMTZ8MDtkPWU7Y1tkPj4yXT1hO3doaWxlKDEpe2lmKGNbZD4+Ml18MClhPShjWyhjW2Q+PjJdfDApKzQ+PjJdJjQwOTZ8MCkhPTA7ZWxzZSBhPTA7Yj1jW2Q+PjJdfDA7aWYoIWEpYnJlYWs7YT1jW2Q+PjJdfDA7aWYoY1tiKzQ+PjJdJjI2MjE0NCl7Y1tkPj4yXT1jW2NbKGNbYSsyMD4+Ml18MCkrND4+Ml0+PjJdO2NvbnRpbnVlfWVsc2V7Y1tkPj4yXT1jW2ErMTI+PjJdO2NvbnRpbnVlfX1pPWU7cmV0dXJuIGJ8MH1mdW5jdGlvbiBseShiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MDtnPWk7aT1pKzE2fDA7ZT1nKzR8MDtmPWc7Y1tlPj4yXT1iO2NbZj4+Ml09ZDtpZigoY1tmPj4yXXwwKTwwKXtiPTY4O2I9YiYyNTU7aT1nO3JldHVybiBifDB9Yj1hWyhjWyhjW2U+PjJdfDApKzQ+PjJdfDApKyhjW2Y+PjJdPDw0KSsxMz4+MF18MDtiPWImMjU1O2k9ZztyZXR1cm4gYnwwfWZ1bmN0aW9uIG15KGIsZSxmKXtiPWJ8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MDtsPWk7aT1pKzE2fDA7Zz1sKzEyfDA7aD1sKzh8MDtqPWwrNHwwO2s9bDtjW2c+PjJdPWI7Y1toPj4yXT1lO2Nbaj4+Ml09ZjtpZighKGNbaD4+Ml18MCkpe2k9bDtyZXR1cm59Y1trPj4yXT1jW2NbZz4+Ml0+PjJdO2lmKGFbKGNbaz4+Ml18MCkrNjk+PjBdfDApe2k9bDtyZXR1cm59aWYoY1soY1toPj4yXXwwKSs4Pj4yXSYxMjgpe2k9bDtyZXR1cm59bnkoY1tnPj4yXXwwLGNbaD4+Ml18MCk7aWYoY1soY1tnPj4yXXwwKSszNj4+Ml18MCl7aT1sO3JldHVybn1pZihkWyhjW2s+PjJdfDApKzY5Pj4wXXwwKXtpPWw7cmV0dXJufW95KGNbZz4+Ml18MCxjW2g+PjJdfDAsY1tqPj4yXXwwKTtpZihjWyhjW2c+PjJdfDApKzM2Pj4yXXwwKXtpPWw7cmV0dXJufWlmKGRbKGNbaz4+Ml18MCkrNjk+PjBdfDApe2k9bDtyZXR1cm59cHkoY1tnPj4yXXwwLGNbaD4+Ml18MCk7aT1sO3JldHVybn1mdW5jdGlvbiBueShiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTA7Zz1pO2k9aSs0OHwwO2g9ZyszMnwwO2U9ZysyOHwwO2Y9ZztjW2g+PjJdPWI7Y1tlPj4yXT1kO2NbZj4+Ml09MDtjW2YrND4+Ml09MDtjW2YrOD4+Ml09MDtjW2YrMTI+PjJdPTA7Y1tmKzE2Pj4yXT0wO2NbZisyMD4+Ml09MDtjW2YrMjQ+PjJdPTA7Y1tmKzQ+PjJdPTE5MDtjW2Y+PjJdPWNbaD4+Ml07aWYoYVsoY1toPj4yXXwwKSsyMj4+MF18MCl7Y1tmKzg+PjJdPTE5MTtzeShmLGNbZT4+Ml18MCl8MH1jW2YrOD4+Ml09MTkyO2lmKGNbKGNbZT4+Ml18MCkrOD4+Ml0mMTAyNCl7aD1jW2U+PjJdfDA7c3koZixoKXwwO2k9ZztyZXR1cm59Y1tmKzEyPj4yXT0xMzI7aD1jW2U+PjJdfDA7c3koZixoKXwwO2k9ZztyZXR1cm59ZnVuY3Rpb24gb3koYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wO2U9aTtpPWkrNDh8MDtqPWUrMzZ8MDtmPWUrMzJ8MDtoPWUrMjh8MDtnPWU7Y1tqPj4yXT1hO2NbZj4+Ml09YjtjW2g+PjJdPWQ7Y1tnPj4yXT0wO2NbZys0Pj4yXT0wO2NbZys4Pj4yXT0wO2NbZysxMj4+Ml09MDtjW2crMTY+PjJdPTA7Y1tnKzIwPj4yXT0wO2NbZysyND4+Ml09MDtjW2crND4+Ml09MTkzO2NbZys4Pj4yXT0xOTQ7Y1tnPj4yXT1jW2o+PjJdO2NbZysyND4+Ml09Y1toPj4yXTtzeShnLGNbZj4+Ml18MCl8MDtpPWU7cmV0dXJufWZ1bmN0aW9uIHB5KGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MDtkPWk7aT1pKzQ4fDA7Zz1kKzMyfDA7ZT1kKzI4fDA7Zj1kO2NbZz4+Ml09YTtjW2U+PjJdPWI7Y1tmPj4yXT0wO2NbZis0Pj4yXT0wO2NbZis4Pj4yXT0wO2NbZisxMj4+Ml09MDtjW2YrMTY+PjJdPTA7Y1tmKzIwPj4yXT0wO2NbZisyND4+Ml09MDtjW2YrMTI+PjJdPTEzMztjW2YrND4+Ml09MTkwO2NbZj4+Ml09Y1tnPj4yXTtzeShmLGNbZT4+Ml18MCl8MDtpPWQ7cmV0dXJufWZ1bmN0aW9uIHF5KGEsYil7YT1hfDA7Yj1ifDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wO2w9aTtpPWkrMzJ8MDtuPWwrMjh8MDttPWwrMjR8MDtnPWwrMjB8MDtlPWwrMTZ8MDtrPWwrMTJ8MDtmPWwrOHwwO2o9bCs0fDA7aD1sO2Nbbj4+Ml09YTtjW20+PjJdPWI7YT0oY1ttPj4yXXwwKSs4fDA7Y1thPj4yXT1jW2E+PjJdfDEyODtjW2c+PjJdPWNbY1tuPj4yXT4+Ml07Y1trPj4yXT1jWyhjW20+PjJdfDApKzI4Pj4yXTtjW2U+PjJdPTA7Y1tmPj4yXT0oY1trPj4yXXwwKSs4O3doaWxlKDEpe2lmKChjW2U+PjJdfDApPj0oY1tjW2s+PjJdPj4yXXwwKSlicmVhaztjW2o+PjJdPWNbKGNbZj4+Ml18MCkrMTY+PjJdO2lmKCgoZFsoY1tqPj4yXXwwKSs0Mj4+MF18MCkmMnwwKSE9MD8oY1toPj4yXT1jWyhjW2Y+PjJdfDApKzIwPj4yXSwoY1toPj4yXXwwKSE9MCk6MCl7d2hpbGUoMSl7aWYoIShjWyhjW2g+PjJdfDApKzQ4Pj4yXXwwKSlicmVhaztjW2g+PjJdPWNbKGNbaD4+Ml18MCkrNDg+PjJdfWN5KGNbZz4+Ml18MCxjW2o+PjJdfDAsY1toPj4yXXwwKX1jW2U+PjJdPShjW2U+PjJdfDApKzE7Y1tmPj4yXT0oY1tmPj4yXXwwKSs3Mn1pPWw7cmV0dXJufWZ1bmN0aW9uIHJ5KGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MDtkPWk7aT1pKzE2fDA7Y1tkKzQ+PjJdPWE7Y1tkPj4yXT1iO2k9ZDtyZXR1cm4gMH1mdW5jdGlvbiBzeShhLGIpe2E9YXwwO2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wO2g9aTtpPWkrMTZ8MDtlPWgrMTJ8MDtmPWgrOHwwO2Q9aCs0fDA7Zz1oO2NbZj4+Ml09YTtjW2Q+PjJdPWI7ZG8gaWYoY1tkPj4yXXwwKXtpZigoY1soY1tmPj4yXXwwKSs4Pj4yXXwwKT09MD8oY1soY1tmPj4yXXwwKSsxMj4+Ml18MCk9PTA6MClicmVhaztjW2c+PjJdPTA7YT0oY1tmPj4yXXwwKSsxNnwwO2NbYT4+Ml09KGNbYT4+Ml18MCkrMTt3aGlsZSgxKXtpZighKGNbZD4+Ml18MCkpe2Q9MTU7YnJlYWt9aWYoKGNbKGNbZj4+Ml18MCkrOD4+Ml18MCkhPTA/KGNbZz4+Ml09WWJbY1soY1tmPj4yXXwwKSs4Pj4yXSYyNTVdKGNbZj4+Ml18MCxjW2Q+PjJdfDApfDAsKGNbZz4+Ml18MCkhPTApOjApe2Q9MTU7YnJlYWt9aWYodHkoY1tmPj4yXXwwLGNbZD4+Ml18MCl8MCl7ZD0xMTticmVha31pZih1eShjW2Y+PjJdfDAsY1tkPj4yXXwwKXwwKXtkPTExO2JyZWFrfWlmKGNbKGNbZj4+Ml18MCkrMTI+PjJdfDApUmJbY1soY1tmPj4yXXwwKSsxMj4+Ml0mMjU1XShjW2Y+PjJdfDAsY1tkPj4yXXwwKTtjW2Q+PjJdPWNbKGNbZD4+Ml18MCkrNDg+PjJdfWlmKChkfDApPT0xMSl7Zz0oY1tmPj4yXXwwKSsxNnwwO2NbZz4+Ml09KGNbZz4+Ml18MCkrLTE7Y1tlPj4yXT0yO2c9Y1tlPj4yXXwwO2k9aDtyZXR1cm4gZ3wwfWVsc2UgaWYoKGR8MCk9PTE1KXtmPShjW2Y+PjJdfDApKzE2fDA7Y1tmPj4yXT0oY1tmPj4yXXwwKSstMTtjW2U+PjJdPWNbZz4+Ml0mMjtnPWNbZT4+Ml18MDtpPWg7cmV0dXJuIGd8MH19d2hpbGUoMCk7Y1tlPj4yXT0wO2c9Y1tlPj4yXXwwO2k9aDtyZXR1cm4gZ3wwfWZ1bmN0aW9uIHR5KGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MDtnPWk7aT1pKzE2fDA7ZD1nKzh8MDtlPWcrNHwwO2Y9ZztjW2U+PjJdPWE7Y1tmPj4yXT1iO2RvIGlmKCEodnkoY1tlPj4yXXwwLGNbY1tmPj4yXT4+Ml18MCl8MCkpe2lmKHd5KGNbZT4+Ml18MCxjWyhjW2Y+PjJdfDApKzMyPj4yXXwwKXwwKXtjW2Q+PjJdPTI7YnJlYWt9aWYodnkoY1tlPj4yXXwwLGNbKGNbZj4+Ml18MCkrMzY+PjJdfDApfDApe2NbZD4+Ml09MjticmVha31pZih3eShjW2U+PjJdfDAsY1soY1tmPj4yXXwwKSs0MD4+Ml18MCl8MCl7Y1tkPj4yXT0yO2JyZWFrfWlmKHZ5KGNbZT4+Ml18MCxjWyhjW2Y+PjJdfDApKzQ0Pj4yXXwwKXwwKXtjW2Q+PjJdPTI7YnJlYWt9aWYod3koY1tlPj4yXXwwLGNbKGNbZj4+Ml18MCkrNTY+PjJdfDApfDApe2NbZD4+Ml09MjticmVha31pZih3eShjW2U+PjJdfDAsY1soY1tmPj4yXXwwKSs2MD4+Ml18MCl8MCl7Y1tkPj4yXT0yO2JyZWFrfWVsc2V7Y1tkPj4yXT0wO2JyZWFrfX1lbHNlIGNbZD4+Ml09Mjt3aGlsZSgwKTtpPWc7cmV0dXJuIGNbZD4+Ml18MH1mdW5jdGlvbiB1eShhLGIpe2E9YXwwO2I9YnwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTA7az1pO2k9aSszMnwwO2o9aysyMHwwO2U9aysxNnwwO2w9aysxMnwwO2g9ays4fDA7Zj1rKzR8MDtnPWs7Y1tlPj4yXT1hO2NbbD4+Ml09YjtjW2g+PjJdPWNbKGNbbD4+Ml18MCkrMjg+PjJdO2E6ZG8gaWYoY1toPj4yXXwwKXtjW2Y+PjJdPWNbY1toPj4yXT4+Ml07Y1tnPj4yXT0oY1toPj4yXXwwKSs4O3doaWxlKDEpe2lmKChjW2Y+PjJdfDApPD0wKWJyZWFrIGE7aWYoc3koY1tlPj4yXXwwLGNbKGNbZz4+Ml18MCkrMjA+PjJdfDApfDApe2U9NTticmVha31pZigoKGRbKGNbZz4+Ml18MCkrMzYrMT4+MF18MCk+Pj4yJjF8MCkhPTA/KHZ5KGNbZT4+Ml18MCxjWyhjW2c+PjJdfDApKzY0Pj4yXXwwKXwwKSE9MDowKXtlPTg7YnJlYWt9Y1tmPj4yXT0oY1tmPj4yXXwwKSstMTtjW2c+PjJdPShjW2c+PjJdfDApKzcyfWlmKChlfDApPT01KXtjW2o+PjJdPTI7bD1jW2o+PjJdfDA7aT1rO3JldHVybiBsfDB9ZWxzZSBpZigoZXwwKT09OCl7Y1tqPj4yXT0yO2w9Y1tqPj4yXXwwO2k9aztyZXR1cm4gbHwwfX13aGlsZSgwKTtjW2o+PjJdPTA7bD1jW2o+PjJdfDA7aT1rO3JldHVybiBsfDB9ZnVuY3Rpb24gdnkoYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTA7aj1pO2k9aSszMnwwO2Q9aisxNnwwO2U9aisxMnwwO2Y9ais4fDA7Zz1qKzR8MDtoPWo7Y1tlPj4yXT1hO2NbZj4+Ml09YjthOmRvIGlmKGNbZj4+Ml18MCl7Y1tnPj4yXT1jW2NbZj4+Ml0+PjJdO2NbaD4+Ml09Y1soY1tmPj4yXXwwKSs0Pj4yXTt3aGlsZSgxKXtpZigoY1tnPj4yXXwwKTw9MClicmVhayBhO2lmKHd5KGNbZT4+Ml18MCxjW2NbaD4+Ml0+PjJdfDApfDApYnJlYWs7Y1tnPj4yXT0oY1tnPj4yXXwwKSstMTtjW2g+PjJdPShjW2g+PjJdfDApKzIwfWNbZD4+Ml09MjthPWNbZD4+Ml18MDtpPWo7cmV0dXJuIGF8MH13aGlsZSgwKTtjW2Q+PjJdPTA7YT1jW2Q+PjJdfDA7aT1qO3JldHVybiBhfDB9ZnVuY3Rpb24gd3koYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTA7Zj1pO2k9aSsxNnwwO2Q9Zis0fDA7ZT1mO2NbZD4+Ml09YTtjW2U+PjJdPWI7aWYoIShjW2U+PjJdfDApKXthPTA7aT1mO3JldHVybiBhfDB9YT14eShjW2Q+PjJdfDAsY1tlPj4yXXwwKXwwO2k9ZjtyZXR1cm4gYXwwfWZ1bmN0aW9uIHh5KGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTA7aD1pO2k9aSsxNnwwO2Q9aCsxMnwwO2U9aCs4fDA7Zj1oKzR8MDtnPWg7Y1tlPj4yXT1hO2NbZj4+Ml09YjtjW2c+PjJdPVliW2NbKGNbZT4+Ml18MCkrND4+Ml0mMjU1XShjW2U+PjJdfDAsY1tmPj4yXXwwKXwwO2lmKChjW2c+PjJdfDApPT0wPyhjWyhjW2Y+PjJdfDApKzQ+PjJdJjg0MDQ5OTJ8MCk9PTA6MCl7aWYoKGNbKGNbZj4+Ml18MCkrMTI+PjJdfDApIT0wPyh4eShjW2U+PjJdfDAsY1soY1tmPj4yXXwwKSsxMj4+Ml18MCl8MCkhPTA6MCl7Y1tkPj4yXT0yO2c9Y1tkPj4yXXwwO2k9aDtyZXR1cm4gZ3wwfWlmKChjWyhjW2Y+PjJdfDApKzE2Pj4yXXwwKSE9MD8oeHkoY1tlPj4yXXwwLGNbKGNbZj4+Ml18MCkrMTY+PjJdfDApfDApIT0wOjApe2NbZD4+Ml09MjtnPWNbZD4+Ml18MDtpPWg7cmV0dXJuIGd8MH1pZihjWyhjW2Y+PjJdfDApKzQ+PjJdJjIwNDgpe2lmKHN5KGNbZT4+Ml18MCxjWyhjW2Y+PjJdfDApKzIwPj4yXXwwKXwwKXtjW2Q+PjJdPTI7Zz1jW2Q+PjJdfDA7aT1oO3JldHVybiBnfDB9fWVsc2UgaWYoKGNbKGNbZj4+Ml18MCkrMjA+PjJdfDApIT0wPyh2eShjW2U+PjJdfDAsY1soY1tmPj4yXXwwKSsyMD4+Ml18MCl8MCkhPTA6MCl7Y1tkPj4yXT0yO2c9Y1tkPj4yXXwwO2k9aDtyZXR1cm4gZ3wwfWNbZD4+Ml09MDtnPWNbZD4+Ml18MDtpPWg7cmV0dXJuIGd8MH1jW2Q+PjJdPWNbZz4+Ml0mMjtnPWNbZD4+Ml18MDtpPWg7cmV0dXJuIGd8MH1mdW5jdGlvbiB5eShmLGcpe2Y9ZnwwO2c9Z3wwO3ZhciBoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTAsRT0wLEY9MCxHPTAsSD0wLEk9MCxKPTAsSz0wLEw9MCxNPTA7TT1pO2k9aSsxNDR8MDttPU0rNDB8MDtGPU0rMzJ8MDtIPU0rMjR8MDtHPU0rMTZ8MDtFPU0rOHwwO0Q9TTtMPU0rMTI4fDA7cT1NKzEyNHwwO3I9TSsxMjB8MDtBPU0rMTE2fDA7Qz1NKzExMnwwO249TSsxMDh8MDtwPU0rMTA0fDA7bz1NKzEwMHwwO2w9TSs5NnwwO3o9TSs5MnwwO3Y9TSs4OHwwO3g9TSs4NHwwO0k9TSs4MHwwO3U9TSs3NnwwO3c9TSs3MnwwO0o9TSs2OHwwO3k9TSs2NHwwO3Q9TSsxMzJ8MDtzPU0rNjB8MDtCPU0rNTZ8MDtqPU0rNTJ8MDtoPU0rNDh8MDtrPU0rNDR8MDtjW3E+PjJdPWY7Y1tyPj4yXT1nO2NbQT4+Ml09Y1soY1txPj4yXXwwKSsyND4+Ml07Y1tDPj4yXT1jW2NbQT4+Ml0+PjJdO2lmKGNbKGNbcj4+Ml18MCkrND4+Ml0mNCl7Y1tMPj4yXT0xO0w9Y1tMPj4yXXwwO2k9TTtyZXR1cm4gTHwwfWY9KGNbcj4+Ml18MCkrNHwwO2NbZj4+Ml09Y1tmPj4yXXw0O3N3aXRjaChkW2Nbcj4+Ml0+PjBdfDApe2Nhc2UgNTU6e2NbTD4+Ml09X3koY1tDPj4yXXwwLDAsMCxjWyhjW3I+PjJdfDApKzg+PjJdfDAsY1tBPj4yXXwwLGNbcj4+Ml18MCl8MDtMPWNbTD4+Ml18MDtpPU07cmV0dXJuIEx8MH1jYXNlIDEyMjp7JHkoY1tDPj4yXXwwLGNbQT4+Ml18MCwyOTU2MSwzMik7Y1tsPj4yXT1jWyhjW3I+PjJdfDApKzE2Pj4yXTtpZigoZFtjW2w+PjJdPj4wXXwwKT09NTUpe2Nbbz4+Ml09MDtjW3A+PjJdPWNbKGNbKGNbcj4+Ml18MCkrMTI+PjJdfDApKzg+PjJdO2Nbbj4+Ml09Y1soY1tsPj4yXXwwKSs4Pj4yXX1lbHNle2Nbbz4+Ml09Y1soY1soY1tyPj4yXXwwKSsxMj4+Ml18MCkrOD4+Ml07Y1twPj4yXT1jWyhjWyhjW2w+PjJdfDApKzEyPj4yXXwwKSs4Pj4yXTtjW24+PjJdPWNbKGNbKGNbbD4+Ml18MCkrMTY+PjJdfDApKzg+PjJdfWNbTD4+Ml09X3koY1tDPj4yXXwwLGNbbz4+Ml18MCxjW3A+PjJdfDAsY1tuPj4yXXwwLGNbQT4+Ml18MCxjW3I+PjJdfDApfDA7TD1jW0w+PjJdfDA7aT1NO3JldHVybiBMfDB9Y2FzZSAxNTE6e2Nbej4+Ml09Y1soY1tyPj4yXXwwKSsyMD4+Ml07aWYoY1t6Pj4yXXwwKWg9Y1tjW3o+PjJdPj4yXXwwO2Vsc2UgaD0wO2Nbdj4+Ml09aDtjW3g+PjJdPTA7Y1tJPj4yXT0wO2NbdT4+Ml09MDthW3Q+PjBdPWFbKGNbY1tDPj4yXT4+Ml18MCkrNjY+PjBdfDA7Y1tKPj4yXT1jWyhjW3I+PjJdfDApKzg+PjJdO2Nbdz4+Ml09SmYoY1tKPj4yXXwwKXwwO2NbeT4+Ml09a2koY1tjW0M+PjJdPj4yXXwwLGNbSj4+Ml18MCxjW3Y+PjJdfDAsYVt0Pj4wXXwwLDApfDA7ZG8gaWYoIShjW3k+PjJdfDApKXtjW3k+PjJdPWtpKGNbY1tDPj4yXT4+Ml18MCxjW0o+PjJdfDAsLTIsYVt0Pj4wXXwwLDApfDA7aWYoIShjW3k+PjJdfDApKXtjW3g+PjJdPTE7YnJlYWt9ZWxzZXtjW0k+PjJdPTE7YnJlYWt9fWVsc2V7Y1t1Pj4yXT0oY1soY1t5Pj4yXXwwKSsxNj4+Ml18MCkhPTAmMTtkbyBpZihlWyhjW3k+PjJdfDApKzI+PjFdJjEwMjQpe3Q9KGNbcj4+Ml18MCkrNHwwO2NbdD4+Ml09Y1t0Pj4yXXwyNjYyNDA7aWYoKGNbdj4+Ml18MCkhPTIpe2NbKGNbcj4+Ml18MCkrMjg+PjJdPShhW2NbKGNbeT4+Ml18MCkrMjA+PjJdPj4wXXwwKT09MTE3PzgzODg2MDg6MTI1ODI5MTIwO2JyZWFrfXY9YXooY1soY1soY1t6Pj4yXXwwKSs0Pj4yXXwwKSsyMD4+Ml18MCl8MDtjWyhjW3I+PjJdfDApKzI4Pj4yXT12O2lmKChjWyhjW3I+PjJdfDApKzI4Pj4yXXwwKTwwKXtFaChjW0M+PjJdfDAsMjk1NzgsRCk7RD0oY1tBPj4yXXwwKSsyNHwwO2NbRD4+Ml09KGNbRD4+Ml18MCkrMX19d2hpbGUoMCk7Y1tzPj4yXT1heChjW0M+PjJdfDAsMzEsMCxjWyhjW3k+PjJdfDApKzIwPj4yXXwwLDApfDA7aWYoY1tzPj4yXXwwKXtpZigoY1tzPj4yXXwwKT09MSl7Sz1jW0M+PjJdfDA7Y1tFPj4yXT1jWyhjW3k+PjJdfDApKzIwPj4yXTtFaChLLDI5NjQ5LEUpO0s9KGNbQT4+Ml18MCkrMjR8MDtjW0s+PjJdPShjW0s+PjJdfDApKzF9YVtjW3I+PjJdPj4wXT0xMDE7Y1tMPj4yXT0xO0w9Y1tMPj4yXXwwO2k9TTtyZXR1cm4gTHwwfWVsc2V7aWYoZVsoY1t5Pj4yXXwwKSsyPj4xXSYxMDI0MCl7RT0oY1tyPj4yXXwwKSs0fDA7Y1tFPj4yXT1jW0U+PjJdfDUyNDI4OH1pZihlWyhjW3k+PjJdfDApKzI+PjFdJjIwNDgpYnJlYWs7JHkoY1tDPj4yXXwwLGNbQT4+Ml18MCwyOTY4NCwzNCk7YnJlYWt9fXdoaWxlKDApO2lmKChjW3U+PjJdfDApIT0wPyhlWyhjW0E+PjJdfDApKzI4Pj4xXSYxfDApPT0wOjApe0k9Y1tDPj4yXXwwO0o9Y1tKPj4yXXwwO2NbRz4+Ml09Y1t3Pj4yXTtjW0crND4+Ml09SjtFaChJLDI5NzEyLEcpO0o9KGNbQT4+Ml18MCkrMjR8MDtjW0o+PjJdPShjW0o+PjJdfDApKzE7Y1t1Pj4yXT0wfWVsc2UgSz0zMTtkbyBpZigoS3wwKT09MzEpe2lmKChjW3g+PjJdfDApIT0wPyhkWyhjW2NbQz4+Ml0+PjJdfDApKzE0OCs1Pj4wXXwwKT09MDowKXtLPWNbQz4+Ml18MDtKPWNbSj4+Ml18MDtjW0g+PjJdPWNbdz4+Ml07Y1tIKzQ+PjJdPUo7RWgoSywyOTc0OCxIKTtLPShjW0E+PjJdfDApKzI0fDA7Y1tLPj4yXT0oY1tLPj4yXXwwKSsxO2JyZWFrfWlmKGNbST4+Ml18MCl7Sz1jW0M+PjJdfDA7Sj1jW0o+PjJdfDA7Y1tGPj4yXT1jW3c+PjJdO2NbRis0Pj4yXT1KO0VoKEssMjk3NzEsRik7Sz0oY1tBPj4yXXwwKSsyNHwwO2NbSz4+Ml09KGNbSz4+Ml18MCkrMX19d2hpbGUoMCk7aWYoY1t1Pj4yXXwwKXtLPShjW0E+PjJdfDApKzI4fDA7YltLPj4xXT1lW0s+PjFdJi0yfXZ5KGNbcT4+Ml18MCxjW3o+PjJdfDApfDA7aWYoY1t1Pj4yXXwwKXtjW0I+PjJdPWNbQT4+Ml07YVtjW3I+PjJdPj4wXT0tMTAzO2FbKGNbcj4+Ml18MCkrMzg+PjBdPTA7d2hpbGUoMSl7aWYoIShjW0I+PjJdfDApKWJyZWFrO2lmKCEoKGJ6KGNbcj4+Ml18MCxjWyhjW0I+PjJdfDApKzQ+PjJdfDApfDApIT0wXjEpKWJyZWFrO0s9KGNbcj4+Ml18MCkrMzh8MDthW0s+PjBdPShhW0s+PjBdfDApKzE8PDI0Pj4yNDtjW0I+PjJdPWNbKGNbQj4+Ml18MCkrMTY+PjJdfWlmKGNbQj4+Ml18MCl7Sz0oY1tCPj4yXXwwKSsyOHwwO2JbSz4+MV09ZVtLPj4xXXwoMTZ8ZVsoY1t5Pj4yXXwwKSsyPj4xXSY0MDk2KX1LPShjW0E+PjJdfDApKzI4fDA7YltLPj4xXT1lW0s+PjFdfDF9Y1tMPj4yXT0xO0w9Y1tMPj4yXXwwO2k9TTtyZXR1cm4gTHwwfWNhc2UgMzM6Y2FzZSAyMDpjYXNlIDExOTp7aWYoKGNbKGNbcj4+Ml18MCkrND4+Ml0mMjA0OHwwKSE9MD8oY1tqPj4yXT1jWyhjW0E+PjJdfDApKzIwPj4yXSwkeShjW0M+PjJdfDAsY1tBPj4yXXwwLDI5ODE2LDM4KSxzeShjW3E+PjJdfDAsY1soY1tyPj4yXXwwKSsyMD4+Ml18MCl8MCwoY1tqPj4yXXwwKSE9KGNbKGNbQT4+Ml18MCkrMjA+PjJdfDApKTowKXtLPShjW3I+PjJdfDApKzR8MDtjW0s+PjJdPWNbSz4+Ml18MzI7Sz0oY1tBPj4yXXwwKSsyOHwwO2JbSz4+MV09ZVtLPj4xXXw2NH1icmVha31jYXNlIDEzNTp7JHkoY1tDPj4yXXwwLGNbQT4+Ml18MCwyOTgyNywzOCk7YnJlYWt9Y2FzZSAxNDg6Y2FzZSAyOTpjYXNlIDQxOmNhc2UgMzg6Y2FzZSAzOTpjYXNlIDQwOmNhc2UgMzY6Y2FzZSAzNzp7aWYoKGFbKGNbY1tDPj4yXT4+Ml18MCkrNjk+PjBdfDApPT0wPyhjW2g+PjJdPWN6KGNbKGNbcj4+Ml18MCkrMTI+PjJdfDApfDAsY1trPj4yXT1jeihjWyhjW3I+PjJdfDApKzE2Pj4yXXwwKXwwLChjW2g+PjJdfDApIT0oY1trPj4yXXwwKSk6MClFaChjW0M+PjJdfDAsMjk4MzgsbSk7YnJlYWt9ZGVmYXVsdDp7fX1pZihjWyhjW0M+PjJdfDApKzM2Pj4yXXwwKWg9MTtlbHNlIGg9KGRbKGNbY1tDPj4yXT4+Ml18MCkrNjk+PjBdfDApIT0wO2NbTD4+Ml09aD8yOjA7TD1jW0w+PjJdfDA7aT1NO3JldHVybiBMfDB9ZnVuY3Rpb24genkoZixnKXtmPWZ8MDtnPWd8MDt2YXIgaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wLEU9MDtFPWk7aT1pKzEyOHwwO0M9RSs4fDA7Qj1FO0Q9RSsxMTZ8MDtoPUUrMTEyfDA7eD1FKzEwOHwwO3M9RSsxMDR8MDt2PUUrNzJ8MDt5PUUrNjh8MDtsPUUrNjR8MDtBPUUrNjB8MDtrPUUrNTZ8MDtuPUUrNTJ8MDt6PUUrNDh8MDtqPUUrNDR8MDt0PUUrNDB8MDtvPUUrMzZ8MDtyPUUrMzJ8MDttPUUrMjh8MDt3PUUrMjR8MDtwPUUrMjB8MDt1PUUrMTZ8MDtxPUUrMTJ8MDtjW2g+PjJdPWY7Y1t4Pj4yXT1nO2lmKGNbKGNbeD4+Ml18MCkrOD4+Ml0mNCl7Y1tEPj4yXT0xO0Q9Y1tEPj4yXXwwO2k9RTtyZXR1cm4gRHwwfWNbcz4+Ml09Y1soY1toPj4yXXwwKSsyND4+Ml07Y1tBPj4yXT1jW2NbaD4+Ml0+PjJdO2Nbaj4+Ml09Y1tjW0E+PjJdPj4yXTtpZighKGNbKGNbeD4+Ml18MCkrOD4+Ml0mNjQpKXtteShjW0E+PjJdfDAsY1t4Pj4yXXwwLGNbcz4+Ml18MCk7aWYoY1soY1tBPj4yXXwwKSszNj4+Ml18MCloPTE7ZWxzZSBoPShkWyhjW2o+PjJdfDApKzY5Pj4wXXwwKSE9MDtjW0Q+PjJdPWg/MjoxO0Q9Y1tEPj4yXXwwO2k9RTtyZXR1cm4gRHwwfWNbeT4+Ml09KGNbKGNbeD4+Ml18MCkrNDg+PjJdfDApIT0wJjE7Y1tsPj4yXT0wO2Nbej4+Ml09Y1t4Pj4yXTthOndoaWxlKDEpe2lmKCEoY1t4Pj4yXXwwKSl7aD02ODticmVha31mPShjW3g+PjJdfDApKzh8MDtjW2Y+PjJdPWNbZj4+Ml18NDtjW3Y+PjJdPTA7Y1t2KzQ+PjJdPTA7Y1t2Kzg+PjJdPTA7Y1t2KzEyPj4yXT0wO2NbdisxNj4+Ml09MDtjW3YrMjA+PjJdPTA7Y1t2KzI0Pj4yXT0wO2NbdisyOD4+Ml09MDtjW3Y+PjJdPWNbQT4+Ml07aWYoQXkodixjWyhjW3g+PjJdfDApKzU2Pj4yXXwwKXwwKXtoPTExO2JyZWFrfWlmKEF5KHYsY1soY1t4Pj4yXXwwKSs2MD4+Ml18MCl8MCl7aD0xMTticmVha31pZihjWyhjW3g+PjJdfDApKzg+PjJdJjY1NTM2KXtjW3Q+PjJdPWNbKGNbKGNbeD4+Ml18MCkrMjg+PjJdfDApKzgrMjA+PjJdO2NbKGNbdD4+Ml18MCkrNDQ+PjJdPWNbKGNbeD4+Ml18MCkrNDQ+PjJdO2NbKGNbeD4+Ml18MCkrNDQ+PjJdPTB9Y1trPj4yXT0wO3doaWxlKDEpe2lmKChjW2s+PjJdfDApPj0oY1tjWyhjW3g+PjJdfDApKzI4Pj4yXT4+Ml18MCkpYnJlYWs7Y1tvPj4yXT0oY1soY1t4Pj4yXXwwKSsyOD4+Ml18MCkrOCsoKGNbaz4+Ml18MCkqNzJ8MCk7aWYoY1soY1tvPj4yXXwwKSsyMD4+Ml18MCl7Y1ttPj4yXT0wO2Nbdz4+Ml09Y1soY1tBPj4yXXwwKSs0NDg+PjJdO2Nbcj4+Ml09Y1tzPj4yXTt3aGlsZSgxKXtpZighKGNbcj4+Ml18MCkpYnJlYWs7Y1ttPj4yXT0oY1ttPj4yXXwwKSsoY1soY1tyPj4yXXwwKSsyMD4+Ml18MCk7Y1tyPj4yXT1jWyhjW3I+PjJdfDApKzE2Pj4yXX1pZihjWyhjW28+PjJdfDApKzg+PjJdfDApY1soY1tBPj4yXXwwKSs0NDg+PjJdPWNbKGNbbz4+Ml18MCkrOD4+Ml07b3koY1tBPj4yXXwwLGNbKGNbbz4+Ml18MCkrMjA+PjJdfDAsY1tzPj4yXXwwKTtjWyhjW0E+PjJdfDApKzQ0OD4+Ml09Y1t3Pj4yXTtpZihjWyhjW0E+PjJdfDApKzM2Pj4yXXwwKXtoPTI0O2JyZWFrIGF9aWYoZFsoY1tqPj4yXXwwKSs2OT4+MF18MCl7aD0yNDticmVhayBhfWNbcj4+Ml09Y1tzPj4yXTt3aGlsZSgxKXtpZighKGNbcj4+Ml18MCkpYnJlYWs7Y1ttPj4yXT0oY1ttPj4yXXwwKS0oY1soY1tyPj4yXXwwKSsyMD4+Ml18MCk7Y1tyPj4yXT1jWyhjW3I+PjJdfDApKzE2Pj4yXX1mPShjW28+PjJdfDApKzM2KzF8MDthW2Y+PjBdPWFbZj4+MF0mLTl8KChjW20+PjJdfDApIT0wJjEpPDwzJjI1NX1jW2s+PjJdPShjW2s+PjJdfDApKzF9Ylt2KzI4Pj4xXT0xO2Nbdis0Pj4yXT1jWyhjW3g+PjJdfDApKzI4Pj4yXTtjW3YrMTY+PjJdPWNbcz4+Ml07aWYoQnkodixjW2NbeD4+Ml0+PjJdfDApfDApe2g9MzE7YnJlYWt9Y1tuPj4yXT1jWyhjW3g+PjJdfDApKzM2Pj4yXTtpZigoY1tuPj4yXXwwKT09MD8oZVt2KzI4Pj4xXSYxNnwwKT09MDowKXtmPXYrMjh8MDtiW2Y+PjFdPWVbZj4+MV0mLTJ9ZWxzZXtmPShjW3g+PjJdfDApKzh8MDtjW2Y+PjJdPWNbZj4+Ml18KDh8ZVt2KzI4Pj4xXSY0MDk2KX1pZighKChjW24+PjJdfDApIT0wPzE6KGNbKGNbeD4+Ml18MCkrNDA+PjJdfDApPT0wKSl7aD0zNzticmVha31jW3YrOD4+Ml09Y1tjW3g+PjJdPj4yXTtpZihBeSh2LGNbKGNbeD4+Ml18MCkrNDA+PjJdfDApfDApe2g9Mzk7YnJlYWt9aWYoQXkodixjWyhjW3g+PjJdfDApKzMyPj4yXXwwKXwwKXtoPTQxO2JyZWFrfWNbaz4+Ml09MDt3aGlsZSgxKXtpZigoY1trPj4yXXwwKT49KGNbY1soY1t4Pj4yXXwwKSsyOD4+Ml0+PjJdfDApKWJyZWFrO2NbcD4+Ml09KGNbKGNbeD4+Ml18MCkrMjg+PjJdfDApKzgrKChjW2s+PjJdfDApKjcyfDApO2lmKCgoZFsoY1twPj4yXXwwKSszNisxPj4wXXwwKT4+PjImMXwwKSE9MD8oQnkodixjWyhjW3A+PjJdfDApKzY0Pj4yXXwwKXwwKSE9MDowKXtoPTQ2O2JyZWFrIGF9Y1trPj4yXT0oY1trPj4yXXwwKSsxfWNbdisxNj4+Ml09MDtmPXYrMjh8MDtiW2Y+PjFdPWVbZj4+MV18MTtpZihjWyhjW3g+PjJdfDApKzg+PjJdJjY1NTM2KXtjW3U+PjJdPWNbKGNbKGNbeD4+Ml18MCkrMjg+PjJdfDApKzgrMjA+PjJdO2NbKGNbeD4+Ml18MCkrNDQ+PjJdPWNbKGNbdT4+Ml18MCkrNDQ+PjJdO2NbKGNbdT4+Ml18MCkrNDQ+PjJdPTB9aWYoKGNbeT4+Ml18MCk8PShjW2w+PjJdfDApPyhDeSh2LGNbeD4+Ml18MCxjWyhjW3g+PjJdfDApKzQ0Pj4yXXwwLDI5MDk5KXwwKSE9MDowKXtoPTUyO2JyZWFrfWlmKGFbKGNbaj4+Ml18MCkrNjk+PjBdfDApe2g9NTQ7YnJlYWt9YjpkbyBpZihjW24+PjJdfDApe2lmKEN5KHYsY1t4Pj4yXXwwLGNbbj4+Ml18MCwyOTEwNSl8MCl7aD01ODticmVhayBhfWlmKGRbKGNbaj4+Ml18MCkrNjk+PjBdfDApe2g9NTg7YnJlYWsgYX1jW2s+PjJdPTA7Y1txPj4yXT1jWyhjW24+PjJdfDApKzQ+PjJdO3doaWxlKDEpe2lmKChjW2s+PjJdfDApPj0oY1tjW24+PjJdPj4yXXwwKSlicmVhayBiO2lmKGNbKGNbY1txPj4yXT4+Ml18MCkrND4+Ml0mMil7aD02MjticmVhayBhfWNbaz4+Ml09KGNbaz4+Ml18MCkrMTtjW3E+PjJdPShjW3E+PjJdfDApKzIwfX13aGlsZSgwKTtpZigoY1soY1t4Pj4yXXwwKSs1Mj4+Ml18MCkhPTA/KGNbY1tjW3g+PjJdPj4yXT4+Ml18MCkhPShjW2NbY1soY1t4Pj4yXXwwKSs1Mj4+Ml0+PjJdPj4yXXwwKTowKXtoPTY2O2JyZWFrfWNbeD4+Ml09Y1soY1t4Pj4yXXwwKSs0OD4+Ml07Y1tsPj4yXT0oY1tsPj4yXXwwKSsxfXN3aXRjaChofDApe2Nhc2UgMTE6e2NbRD4+Ml09MjtEPWNbRD4+Ml18MDtpPUU7cmV0dXJuIER8MH1jYXNlIDI0OntjW0Q+PjJdPTI7RD1jW0Q+PjJdfDA7aT1FO3JldHVybiBEfDB9Y2FzZSAzMTp7Y1tEPj4yXT0yO0Q9Y1tEPj4yXXwwO2k9RTtyZXR1cm4gRHwwfWNhc2UgMzc6e0VoKGNbQT4+Ml18MCwyOTA1NSxCKTtjW0Q+PjJdPTI7RD1jW0Q+PjJdfDA7aT1FO3JldHVybiBEfDB9Y2FzZSAzOTp7Y1tEPj4yXT0yO0Q9Y1tEPj4yXXwwO2k9RTtyZXR1cm4gRHwwfWNhc2UgNDE6e2NbRD4+Ml09MjtEPWNbRD4+Ml18MDtpPUU7cmV0dXJuIER8MH1jYXNlIDQ2OntjW0Q+PjJdPTI7RD1jW0Q+PjJdfDA7aT1FO3JldHVybiBEfDB9Y2FzZSA1Mjp7Y1tEPj4yXT0yO0Q9Y1tEPj4yXXwwO2k9RTtyZXR1cm4gRHwwfWNhc2UgNTQ6e2NbRD4+Ml09MjtEPWNbRD4+Ml18MDtpPUU7cmV0dXJuIER8MH1jYXNlIDU4OntjW0Q+PjJdPTI7RD1jW0Q+PjJdfDA7aT1FO3JldHVybiBEfDB9Y2FzZSA2Mjp7RWgoY1tBPj4yXXwwLDI5MTExLEMpO2NbRD4+Ml09MjtEPWNbRD4+Ml18MDtpPUU7cmV0dXJuIER8MH1jYXNlIDY2OntEeShjW0E+PjJdfDAsY1soY1t4Pj4yXXwwKSs1Mj4+Ml18MCk7Y1tEPj4yXT0yO0Q9Y1tEPj4yXXwwO2k9RTtyZXR1cm4gRHwwfWNhc2UgNjg6e2lmKChjW3k+PjJdfDApIT0wPyhFeShjW0E+PjJdfDAsY1t6Pj4yXXwwKXwwKSE9MDowKXtjW0Q+PjJdPTI7RD1jW0Q+PjJdfDA7aT1FO3JldHVybiBEfDB9Y1tEPj4yXT0xO0Q9Y1tEPj4yXXwwO2k9RTtyZXR1cm4gRHwwfX1yZXR1cm4gMH1mdW5jdGlvbiBBeShkLGYpe2Q9ZHwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTA7bj1pO2k9aSs0OHwwO2c9bis0MHwwO2g9biszNnwwO2o9biszMnwwO2w9bis0NHwwO209bis0fDA7az1uO2NbaD4+Ml09ZDtjW2o+PjJdPWY7aWYoIShjW2o+PjJdfDApKXtjW2c+PjJdPTA7bT1jW2c+PjJdfDA7aT1uO3JldHVybiBtfDB9Y1trPj4yXT1jW2NbaD4+Ml0+PjJdO2lmKFp5KGNbaz4+Ml18MCwoY1soY1tqPj4yXXwwKSsyND4+Ml18MCkrKGNbKGNbY1toPj4yXT4+Ml18MCkrNDE2Pj4yXXwwKXwwKXwwKXtjW2c+PjJdPTE7bT1jW2c+PjJdfDA7aT1uO3JldHVybiBtfDB9az0oY1trPj4yXXwwKSs0MTZ8MDtjW2s+PjJdPShjW2s+PjJdfDApKyhjWyhjW2o+PjJdfDApKzI0Pj4yXXwwKTtiW2w+PjFdPShlWyhjW2g+PjJdfDApKzI4Pj4xXXwwKSY0MTEyO2s9KGNbaD4+Ml18MCkrMjh8MDtiW2s+PjFdPShlW2s+PjFdfDApJi00MTEzO2NbbT4+Ml09Y1tjW2g+PjJdPj4yXTtjW20rND4+Ml09MTkzO2NbbSs4Pj4yXT0xOTQ7Y1ttKzEyPj4yXT0wO2NbbSsxNj4+Ml09MDthW20rMjA+PjBdPTA7Y1ttKzI0Pj4yXT1jW2g+PjJdO3d5KG0sY1tqPj4yXXwwKXwwO2s9KGNbY1toPj4yXT4+Ml18MCkrNDE2fDA7Y1trPj4yXT0oY1trPj4yXXwwKS0oY1soY1tqPj4yXXwwKSsyND4+Ml18MCk7aWYoISgoY1soY1toPj4yXXwwKSsyND4+Ml18MCk8PTA/KGNbKGNbbT4+Ml18MCkrMzY+PjJdfDApPD0wOjApKXttPShjW2o+PjJdfDApKzR8MDtjW20+PjJdPWNbbT4+Ml18OH1pZigoZVsoY1toPj4yXXwwKSsyOD4+MV18MCkmMTYpe209KGNbaj4+Ml18MCkrNHwwO2NbbT4+Ml09Y1ttPj4yXXwyfW09KGNbaD4+Ml18MCkrMjh8MDtiW20+PjFdPWVbbT4+MV18MHwoZVtsPj4xXXwwKTtjW2c+PjJdPShjWyhjW2o+PjJdfDApKzQ+PjJdJjh8MCkhPTAmMTttPWNbZz4+Ml18MDtpPW47cmV0dXJuIG18MH1mdW5jdGlvbiBCeShhLGIpe2E9YXwwO2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wO2g9aTtpPWkrMTZ8MDtkPWgrMTJ8MDtlPWgrOHwwO2Y9aCs0fDA7Zz1oO2NbZT4+Ml09YTtjW2Y+PjJdPWI7YTpkbyBpZihjW2Y+PjJdfDApe2NbZz4+Ml09MDt3aGlsZSgxKXtpZigoY1tnPj4yXXwwKT49KGNbY1tmPj4yXT4+Ml18MCkpYnJlYWsgYTtpZihBeShjW2U+PjJdfDAsY1soY1soY1tmPj4yXXwwKSs0Pj4yXXwwKSsoKGNbZz4+Ml18MCkqMjB8MCk+PjJdfDApfDApYnJlYWs7Y1tnPj4yXT0oY1tnPj4yXXwwKSsxfWNbZD4+Ml09MjthPWNbZD4+Ml18MDtpPWg7cmV0dXJuIGF8MH13aGlsZSgwKTtjW2Q+PjJdPTA7YT1jW2Q+PjJdfDA7aT1oO3JldHVybiBhfDB9ZnVuY3Rpb24gQ3koZCxlLGYsZyl7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7dmFyIGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wO3c9aTtpPWkrNjR8MDtoPXcrNDh8MDtqPXcrNDR8MDtrPXcrNDB8MDtsPXcrMzZ8MDttPXcrMzJ8MDtuPXcrMjh8MDtwPXcrMjR8MDtvPXcrMjB8MDt0PXcrMTZ8MDt1PXcrMTJ8MDtxPXcrOHwwO3I9dys0fDA7cz13O2Nbaj4+Ml09ZDtjW2s+PjJdPWU7Y1tsPj4yXT1mO2NbbT4+Ml09ZztpZighKGNbbD4+Ml18MCkpe2NbaD4+Ml09MDt2PWNbaD4+Ml18MDtpPXc7cmV0dXJuIHZ8MH1jW3E+PjJdPWNbY1tjW2s+PjJdPj4yXT4+Ml07Y1t1Pj4yXT1jW2Nbaj4+Ml0+PjJdO2Nbbj4+Ml09MDtjW3Q+PjJdPWNbKGNbbD4+Ml18MCkrND4+Ml07YTp3aGlsZSgxKXtpZigoY1tuPj4yXXwwKT49KGNbY1tsPj4yXT4+Ml18MCkpe3Y9MjA7YnJlYWt9Y1tyPj4yXT1jW2NbdD4+Ml0+PjJdO2Nbcz4+Ml09a3koY1tyPj4yXXwwKXwwO2lmKChhW2NbbT4+Ml0+PjBdfDApIT03MT8oY1tvPj4yXT1IeShjW3U+PjJdfDAsY1tjW2s+PjJdPj4yXXwwLGNbcz4+Ml18MCl8MCwoY1tvPj4yXXwwKT4wKTowKWJbKGNbdD4+Ml18MCkrMTY+PjFdPWNbbz4+Ml07ZWxzZSB2PTg7YjpkbyBpZigodnwwKT09OCl7dj0wO2lmKEZ5KGNbcz4+Ml18MCxvKXwwKXtpZigoY1tvPj4yXXwwKTwxfChjW28+PjJdfDApPjY1NTM1KXt2PTEwO2JyZWFrIGF9YlsoY1t0Pj4yXXwwKSsxNj4+MV09Y1tvPj4yXTticmVha31iWyhjW3Q+PjJdfDApKzE2Pj4xXT0wO2lmKEF5KGNbaj4+Ml18MCxjW3I+PjJdfDApfDApe3Y9MTM7YnJlYWsgYX1jW3A+PjJdPTA7d2hpbGUoMSl7aWYoKGNbcD4+Ml18MCk+PShjW2NbY1trPj4yXT4+Ml0+PjJdfDApKWJyZWFrIGI7aWYoIShLeShjW3I+PjJdfDAsY1soY1soY1tjW2s+PjJdPj4yXXwwKSs0Pj4yXXwwKSsoKGNbcD4+Ml18MCkqMjB8MCk+PjJdfDAsLTEpfDApKWJbKGNbdD4+Ml18MCkrMTY+PjFdPShjW3A+PjJdfDApKzE7Y1twPj4yXT0oY1twPj4yXXwwKSsxfX13aGlsZSgwKTtjW24+PjJdPShjW24+PjJdfDApKzE7Y1t0Pj4yXT0oY1t0Pj4yXXwwKSsyMH1pZigodnwwKT09MTApe0d5KGNbdT4+Ml18MCxjW20+PjJdfDAsKGNbbj4+Ml18MCkrMXwwLGNbcT4+Ml18MCk7Y1toPj4yXT0xO3Y9Y1toPj4yXXwwO2k9dztyZXR1cm4gdnwwfWVsc2UgaWYoKHZ8MCk9PTEzKXtjW2g+PjJdPTE7dj1jW2g+PjJdfDA7aT13O3JldHVybiB2fDB9ZWxzZSBpZigodnwwKT09MjApe2NbaD4+Ml09VHkoY1t1Pj4yXXwwLGNbaz4+Ml18MCxjW2w+PjJdfDAsY1ttPj4yXXwwKXwwO3Y9Y1toPj4yXXwwO2k9dztyZXR1cm4gdnwwfXJldHVybiAwfWZ1bmN0aW9uIER5KGEsYil7YT1hfDA7Yj1ifDA7dmFyIGU9MCxmPTAsZz0wLGg9MDtnPWk7aT1pKzMyfDA7Zj1nKzh8MDtoPWcrMTZ8MDtlPWcrMTJ8MDtjW2g+PjJdPWE7Y1tlPj4yXT1iO2I9Y1toPj4yXXwwO2lmKGNbKGNbZT4+Ml18MCkrOD4+Ml0mNTEyKXtFaChiLDI5MzIxLGcpO2k9ZztyZXR1cm59ZWxzZXtjW2Y+PjJdPVN5KGRbKGNbZT4+Ml18MCkrND4+MF18MCl8MDtFaChiLDI5MzY3LGYpO2k9ZztyZXR1cm59fWZ1bmN0aW9uIEV5KGUsZil7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MDt3PWk7aT1pKzgwfDA7dj13Kzh8MDtxPXcrNjR8MDtyPXcrNjB8MDtnPXcrNTZ8MDtzPXcrNTJ8MDt1PXcrNDh8MDt0PXcrNDR8MDtoPXcrNDB8MDtrPXcrMzZ8MDtuPXcrMzJ8MDtqPXcrMjh8MDttPXcrMjR8MDtsPXcrMjB8MDtvPXcrMTZ8MDtwPXcrMTJ8MDtjW3I+PjJdPWU7Y1tnPj4yXT1mO2Nbaz4+Ml09MTtjW3U+PjJdPWNbKGNbZz4+Ml18MCkrNDQ+PjJdO2lmKCEoY1t1Pj4yXXwwKSl7Y1txPj4yXT0wO3Y9Y1txPj4yXXwwO2k9dztyZXR1cm4gdnwwfWNbaD4+Ml09Y1tjW3I+PjJdPj4yXTtpZigoY1tjW3U+PjJdPj4yXXwwKT4oY1soY1toPj4yXXwwKSs5Nis4Pj4yXXwwKSl7RWgoY1tyPj4yXXwwLDI5MTcwLHcpO2NbcT4+Ml09MTt2PWNbcT4+Ml18MDtpPXc7cmV0dXJuIHZ8MH1jW3M+PjJdPTA7d2hpbGUoMSl7aWYoKGNbcz4+Ml18MCk+PShjW2NbdT4+Ml0+PjJdfDApKWJyZWFrO2Y9KGNbKGNbdT4+Ml18MCkrND4+Ml18MCkrKChjW3M+PjJdfDApKjIwfDApKzEzfDA7YVtmPj4wXT1hW2Y+PjBdJi0yO2Nbcz4+Ml09KGNbcz4+Ml18MCkrMX1jWyhjW2c+PjJdfDApKzUyPj4yXT0wO3doaWxlKDEpe2lmKCEoY1soY1tnPj4yXXwwKSs0OD4+Ml18MCkpYnJlYWs7Y1soY1soY1tnPj4yXXwwKSs0OD4+Ml18MCkrNTI+PjJdPWNbZz4+Ml07Y1tnPj4yXT1jWyhjW2c+PjJdfDApKzQ4Pj4yXX1hOndoaWxlKDEpe2lmKCEoKGNbZz4+Ml18MCkhPTA/KGNbaz4+Ml18MCkhPTA6MCkpe2c9MzY7YnJlYWt9Y1trPj4yXT0wO2NbdD4+Ml09Y1tjW2c+PjJdPj4yXTtjW3M+PjJdPTA7Y1tuPj4yXT1jWyhjW3U+PjJdfDApKzQ+PjJdO3doaWxlKDEpe2lmKChjW3M+PjJdfDApPj0oY1tjW3U+PjJdPj4yXXwwKSlicmVhaztjW2o+PjJdPS0xO2RvIGlmKCEoYVsoY1tuPj4yXXwwKSsxMz4+MF0mMSkpe2NbbT4+Ml09a3koY1tjW24+PjJdPj4yXXwwKXwwO2lmKEZ5KGNbbT4+Ml18MCxqKXwwKXtpZigoY1tqPj4yXXwwKTw9MCl7Zz0xODticmVhayBhfWlmKChjW2o+PjJdfDApPihjW2NbdD4+Ml0+PjJdfDApKXtnPTE4O2JyZWFrIGF9fWVsc2V7Y1tqPj4yXT1IeShjW3I+PjJdfDAsY1t0Pj4yXXwwLGNbbT4+Ml18MCl8MDtpZighKGNbaj4+Ml18MCkpe2NbbD4+Ml09SXkoY1toPj4yXXwwLGNbbT4+Ml18MCwwKXwwO2lmKCEoYVsoY1toPj4yXXwwKSs2OT4+MF18MCkpY1tqPj4yXT1KeShjW3I+PjJdfDAsY1tnPj4yXXwwLGNbbD4+Ml18MCl8MDtpdihjW2g+PjJdfDAsY1tsPj4yXXwwKX19aWYoKGNbaj4+Ml18MCk8PTApe2Nbaz4+Ml09MTticmVha31jW28+PjJdPVd2KGNbaD4+Ml18MCwxMzQsMCl8MDtpZighKGNbbz4+Ml18MCkpe2c9MjU7YnJlYWsgYX1mPShjW28+PjJdfDApKzR8MDtjW2Y+PjJdPWNbZj4+Ml18MTAyNDtjWyhjW28+PjJdfDApKzg+PjJdPWNbaj4+Ml07aWYoKGNbY1tuPj4yXT4+Ml18MCk9PShjW20+PjJdfDApKWNbY1tuPj4yXT4+Ml09Y1tvPj4yXTtlbHNle2NbcD4+Ml09Y1tjW24+PjJdPj4yXTt3aGlsZSgxKXtpZigoZFtjWyhjW3A+PjJdfDApKzEyPj4yXT4+MF18MCkhPTUzKWJyZWFrO2NbcD4+Ml09Y1soY1twPj4yXXwwKSsxMj4+Ml19Y1soY1twPj4yXXwwKSsxMj4+Ml09Y1tvPj4yXX1pdihjW2g+PjJdfDAsY1ttPj4yXXwwKTtiWyhjW24+PjJdfDApKzE2Pj4xXT1jW2o+PjJdO2Y9KGNbbj4+Ml18MCkrMTN8MDthW2Y+PjBdPWFbZj4+MF0mLTJ8MX13aGlsZSgwKTtjW3M+PjJdPShjW3M+PjJdfDApKzE7Y1tuPj4yXT0oY1tuPj4yXXwwKSsyMH1jW2c+PjJdPWNbKGNbZz4+Ml18MCkrNTI+PjJdfWlmKChnfDApPT0xOCl7R3koY1tyPj4yXXwwLDI5MDk5LChjW3M+PjJdfDApKzF8MCxjW2NbdD4+Ml0+PjJdfDApO2NbcT4+Ml09MTt2PWNbcT4+Ml18MDtpPXc7cmV0dXJuIHZ8MH1lbHNlIGlmKChnfDApPT0yNSl7Y1txPj4yXT0xO3Y9Y1txPj4yXXwwO2k9dztyZXR1cm4gdnwwfWVsc2UgaWYoKGd8MCk9PTM2KXtjW3M+PjJdPTA7d2hpbGUoMSl7aWYoKGNbcz4+Ml18MCk+PShjW2NbdT4+Ml0+PjJdfDApKXtnPTQxO2JyZWFrfWlmKCEoYVsoY1soY1t1Pj4yXXwwKSs0Pj4yXXwwKSsoKGNbcz4+Ml18MCkqMjB8MCkrMTM+PjBdJjEpKXtnPTM5O2JyZWFrfWNbcz4+Ml09KGNbcz4+Ml18MCkrMX1pZigoZ3wwKT09Mzkpe3U9Y1tyPj4yXXwwO2Nbdj4+Ml09KGNbcz4+Ml18MCkrMTtFaCh1LDI5MjA0LHYpO2NbcT4+Ml09MTt2PWNbcT4+Ml18MDtpPXc7cmV0dXJuIHZ8MH1lbHNlIGlmKChnfDApPT00MSl7Y1txPj4yXT0wO3Y9Y1txPj4yXXwwO2k9dztyZXR1cm4gdnwwfX1yZXR1cm4gMH1mdW5jdGlvbiBGeShhLGIpe2E9YXwwO2I9YnwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MDtrPWk7aT1pKzMyfDA7ZT1rKzE2fDA7Zj1rKzEyfDA7Zz1rKzh8MDtoPWsrNHwwO2o9aztjW2Y+PjJdPWE7Y1tnPj4yXT1iO2NbaD4+Ml09MDthPWNbZj4+Ml18MDtpZihjWyhjW2Y+PjJdfDApKzQ+PjJdJjEwMjQpe2NbY1tnPj4yXT4+Ml09Y1thKzg+PjJdO2NbZT4+Ml09MTtqPWNbZT4+Ml18MDtpPWs7cmV0dXJuIGp8MH1zd2l0Y2goZFthPj4wXXwwfDApe2Nhc2UgMTU2OntjW2g+PjJdPUZ5KGNbKGNbZj4+Ml18MCkrMTI+PjJdfDAsY1tnPj4yXXwwKXwwO2JyZWFrfWNhc2UgMTU1OntpZihGeShjWyhjW2Y+PjJdfDApKzEyPj4yXXwwLGopfDApe2NbY1tnPj4yXT4+Ml09MC0oY1tqPj4yXXwwKTtjW2g+PjJdPTF9YnJlYWt9ZGVmYXVsdDp7fX1jW2U+PjJdPWNbaD4+Ml07aj1jW2U+PjJdfDA7aT1rO3JldHVybiBqfDB9ZnVuY3Rpb24gR3koYSxiLGQsZSl7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wO2Y9aTtpPWkrMzJ8MDtnPWY7bD1mKzI0fDA7az1mKzIwfDA7aD1mKzE2fDA7aj1mKzEyfDA7Y1tsPj4yXT1hO2Nbaz4+Ml09YjtjW2g+PjJdPWQ7Y1tqPj4yXT1lO2I9Y1tsPj4yXXwwO2U9Y1trPj4yXXwwO2E9Y1tqPj4yXXwwO2NbZz4+Ml09Y1toPj4yXTtjW2crND4+Ml09ZTtjW2crOD4+Ml09YTtFaChiLDI5MjY1LGcpO2k9ZjtyZXR1cm59ZnVuY3Rpb24gSHkoYSxiLGUpe2E9YXwwO2I9YnwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTA7bT1pO2k9aSszMnwwO2Y9bSsyNHwwO2c9bSsxNnwwO2g9bSsxMnwwO2o9bSs4fDA7bD1tKzR8MDtrPW07Y1ttKzIwPj4yXT1hO2NbZz4+Ml09YjtjW2g+PjJdPWU7YTpkbyBpZigoZFtjW2g+PjJdPj4wXXwwfDApPT01NSl7Y1tsPj4yXT1jWyhjW2g+PjJdfDApKzg+PjJdO2Nbaj4+Ml09MDt3aGlsZSgxKXtpZigoY1tqPj4yXXwwKT49KGNbY1tnPj4yXT4+Ml18MCkpYnJlYWsgYTtjW2s+PjJdPWNbKGNbKGNbZz4+Ml18MCkrND4+Ml18MCkrKChjW2o+PjJdfDApKjIwfDApKzQ+PjJdO2lmKChjW2s+PjJdfDApIT0wPyhpZyhjW2s+PjJdfDAsY1tsPj4yXXwwKXwwKT09MDowKWJyZWFrO2Nbaj4+Ml09KGNbaj4+Ml18MCkrMX1jW2Y+PjJdPShjW2o+PjJdfDApKzE7bD1jW2Y+PjJdfDA7aT1tO3JldHVybiBsfDB9d2hpbGUoMCk7Y1tmPj4yXT0wO2w9Y1tmPj4yXXwwO2k9bTtyZXR1cm4gbHwwfWZ1bmN0aW9uIEl5KGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wO2g9aTtpPWkrMTZ8MDtlPWgrOHwwO2Y9aCs0fDA7Zz1oO2NbZT4+Ml09YTtjW2Y+PjJdPWI7Y1tnPj4yXT1kO2lmKCEoY1tmPj4yXXwwKSl7Yj0wO2k9aDtyZXR1cm4gYnwwfWI9TXkoY1tlPj4yXXwwLGNbZj4+Ml18MCxjW2c+PjJdfDAsMCl8MDtpPWg7cmV0dXJuIGJ8MH1mdW5jdGlvbiBKeShkLGUsZil7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTA7bD1pO2k9aSs4MHwwO2s9bCs2MHwwO3E9bCs1NnwwO3I9bCs1MnwwO2c9bCs0OHwwO2g9bCs0NHwwO2o9bCs0MHwwO3A9bCs4fDA7bj1sKzR8MDttPWw7bz1sKzY0fDA7Y1txPj4yXT1kO2Nbcj4+Ml09ZTtjW2c+PjJdPWY7Y1tqPj4yXT1jW2Nbcj4+Ml0+PjJdO2NbcD4+Ml09MDtjW3ArND4+Ml09MDtjW3ArOD4+Ml09MDtjW3ArMTI+PjJdPTA7Y1twKzE2Pj4yXT0wO2NbcCsyMD4+Ml09MDtjW3ArMjQ+PjJdPTA7Y1twKzI4Pj4yXT0wO2NbcD4+Ml09Y1txPj4yXTtjW3ArND4+Ml09Y1soY1tyPj4yXXwwKSsyOD4+Ml07Y1twKzg+PjJdPWNbaj4+Ml07YltwKzI4Pj4xXT0xO2NbcCsyND4+Ml09MDtjW24+PjJdPWNbY1txPj4yXT4+Ml07YVtvPj4wXT1hWyhjW24+PjJdfDApKzczPj4wXXwwO2FbKGNbbj4+Ml18MCkrNzM+PjBdPTE7Y1ttPj4yXT1BeShwLGNbZz4+Ml18MCl8MDthWyhjW24+PjJdfDApKzczPj4wXT1hW28+PjBdfDA7aWYoY1ttPj4yXXwwKXtjW2s+PjJdPTA7cj1jW2s+PjJdfDA7aT1sO3JldHVybiByfDB9Y1toPj4yXT0wO3doaWxlKDEpe2lmKChjW2g+PjJdfDApPj0oY1tjW2o+PjJdPj4yXXwwKSl7Zj04O2JyZWFrfXI9KEt5KGNbKGNbKGNbaj4+Ml18MCkrND4+Ml18MCkrKChjW2g+PjJdfDApKjIwfDApPj4yXXwwLGNbZz4+Ml18MCwtMSl8MCk8MjtkPShjW2g+PjJdfDApKzF8MDtpZihyKXtmPTY7YnJlYWt9Y1toPj4yXT1kfWlmKChmfDApPT02KXtjW2s+PjJdPWQ7cj1jW2s+PjJdfDA7aT1sO3JldHVybiByfDB9ZWxzZSBpZigoZnwwKT09OCl7Y1trPj4yXT0wO3I9Y1trPj4yXXwwO2k9bDtyZXR1cm4gcnwwfXJldHVybiAwfWZ1bmN0aW9uIEt5KGEsZSxmKXthPWF8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTA7bT1pO2k9aSszMnwwO2c9bSsxNnwwO2g9bSsxMnwwO2o9bSs4fDA7az1tKzR8MDtsPW07Y1toPj4yXT1hO2Nbaj4+Ml09ZTtjW2s+PjJdPWY7aWYoKGNbaD4+Ml18MCk9PTB8KGNbaj4+Ml18MCk9PTApe2NbZz4+Ml09KGNbaj4+Ml18MCk9PShjW2g+PjJdfDApPzA6MjtsPWNbZz4+Ml18MDtpPW07cmV0dXJuIGx8MH1jW2w+PjJdPWNbKGNbaD4+Ml18MCkrND4+Ml18Y1soY1tqPj4yXXwwKSs0Pj4yXTtmPWNbaD4+Ml18MDtpZihjW2w+PjJdJjEwMjQpe2lmKChjW2YrND4+Ml0mY1soY1tqPj4yXXwwKSs0Pj4yXSYxMDI0fDApIT0wPyhjWyhjW2g+PjJdfDApKzg+PjJdfDApPT0oY1soY1tqPj4yXXwwKSs4Pj4yXXwwKTowKXtjW2c+PjJdPTA7bD1jW2c+PjJdfDA7aT1tO3JldHVybiBsfDB9Y1tnPj4yXT0yO2w9Y1tnPj4yXXwwO2k9bTtyZXR1cm4gbHwwfWE9ZFtjW2g+PjJdPj4wXXwwO2lmKChkW2Y+PjBdfDApIT0oZFtjW2o+PjJdPj4wXXwwKSl7aWYoKGF8MCk9PTUzPyhLeShjWyhjW2g+PjJdfDApKzEyPj4yXXwwLGNbaj4+Ml18MCxjW2s+PjJdfDApfDApPDI6MCl7Y1tnPj4yXT0xO2w9Y1tnPj4yXXwwO2k9bTtyZXR1cm4gbHwwfWlmKChkW2Nbaj4+Ml0+PjBdfDApPT01Mz8oS3koY1toPj4yXXwwLGNbKGNbaj4+Ml18MCkrMTI+PjJdfDAsY1trPj4yXXwwKXwwKTwyOjApe2NbZz4+Ml09MTtsPWNbZz4+Ml18MDtpPW07cmV0dXJuIGx8MH1jW2c+PjJdPTI7bD1jW2c+PjJdfDA7aT1tO3JldHVybiBsfDB9ZG8gaWYoKChhfDApIT0xNTI/KGRbY1toPj4yXT4+MF18MCkhPTE1NDowKT8oY1soY1toPj4yXXwwKSs4Pj4yXXwwKSE9MDowKXtmPWNbKGNbaD4+Ml18MCkrOD4+Ml18MDthPWNbKGNbaj4+Ml18MCkrOD4+Ml18MDtpZigoZFtjW2g+PjJdPj4wXXwwKT09MTUxKXtpZighKGlnKGYsYSl8MCkpYnJlYWs7Y1tnPj4yXT0yO2w9Y1tnPj4yXXwwO2k9bTtyZXR1cm4gbHwwfWVsc2V7aWYoIShoUihmLGEpfDApKWJyZWFrO2NbZz4+Ml09KGRbY1toPj4yXT4+MF18MCk9PTUzPzE6MjtsPWNbZz4+Ml18MDtpPW07cmV0dXJuIGx8MH19d2hpbGUoMCk7aWYoKGNbKGNbaD4+Ml18MCkrND4+Ml0mMTZ8MCkhPShjWyhjW2o+PjJdfDApKzQ+PjJdJjE2fDApKXtjW2c+PjJdPTI7bD1jW2c+PjJdfDA7aT1tO3JldHVybiBsfDB9ZG8gaWYoIShjW2w+PjJdJjE2Mzg0KSl7aWYoY1tsPj4yXSYyMDQ4KXtjW2c+PjJdPTI7bD1jW2c+PjJdfDA7aT1tO3JldHVybiBsfDB9aWYoS3koY1soY1toPj4yXXwwKSsxMj4+Ml18MCxjWyhjW2o+PjJdfDApKzEyPj4yXXwwLGNbaz4+Ml18MCl8MCl7Y1tnPj4yXT0yO2w9Y1tnPj4yXXwwO2k9bTtyZXR1cm4gbHwwfWlmKEt5KGNbKGNbaD4+Ml18MCkrMTY+PjJdfDAsY1soY1tqPj4yXXwwKSsxNj4+Ml18MCxjW2s+PjJdfDApfDApe2NbZz4+Ml09MjtsPWNbZz4+Ml18MDtpPW07cmV0dXJuIGx8MH1pZihMeShjWyhjW2g+PjJdfDApKzIwPj4yXXwwLGNbKGNbaj4+Ml18MCkrMjA+PjJdfDAsY1trPj4yXXwwKXwwKXtjW2c+PjJdPTI7bD1jW2c+PjJdfDA7aT1tO3JldHVybiBsfDB9aWYoKGNbbD4+Ml0mODE5MnwwKT09MD8oZFtjW2g+PjJdPj4wXXwwKSE9OTc6MCl7aWYoKGJbKGNbaD4+Ml18MCkrMzI+PjFdfDApIT0oYlsoY1tqPj4yXXwwKSszMj4+MV18MCkpe2NbZz4+Ml09MjtsPWNbZz4+Ml18MDtpPW07cmV0dXJuIGx8MH1pZigoY1soY1toPj4yXXwwKSsyOD4+Ml18MCkhPShjWyhjW2o+PjJdfDApKzI4Pj4yXXwwKSl7aWYoKGNbKGNbaD4+Ml18MCkrMjg+PjJdfDApPT0oY1trPj4yXXwwKT8oY1soY1tqPj4yXXwwKSsyOD4+Ml18MCk8MDowKWJyZWFrO2NbZz4+Ml09MjtsPWNbZz4+Ml18MDtpPW07cmV0dXJuIGx8MH19fXdoaWxlKDApO2NbZz4+Ml09MDtsPWNbZz4+Ml18MDtpPW07cmV0dXJuIGx8MH1mdW5jdGlvbiBMeShhLGIsZSl7YT1hfDA7Yj1ifDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTA7bj1pO2k9aSszMnwwO209bisyNHwwO2Y9bisyMHwwO2c9bisxNnwwO2g9bisxMnwwO2o9bis4fDA7az1uKzR8MDtsPW47Y1tmPj4yXT1hO2NbZz4+Ml09YjtjW2g+PjJdPWU7aWYoKGNbZj4+Ml18MCk9PTAmKGNbZz4+Ml18MCk9PTApe2NbbT4+Ml09MDttPWNbbT4+Ml18MDtpPW47cmV0dXJuIG18MH1pZigoY1tmPj4yXXwwKT09MHwoY1tnPj4yXXwwKT09MCl7Y1ttPj4yXT0xO209Y1ttPj4yXXwwO2k9bjtyZXR1cm4gbXwwfWlmKChjW2NbZj4+Ml0+PjJdfDApIT0oY1tjW2c+PjJdPj4yXXwwKSl7Y1ttPj4yXT0xO209Y1ttPj4yXXwwO2k9bjtyZXR1cm4gbXwwfWNbaj4+Ml09MDt3aGlsZSgxKXtpZigoY1tqPj4yXXwwKT49KGNbY1tmPj4yXT4+Ml18MCkpe2Y9MTQ7YnJlYWt9Y1trPj4yXT1jWyhjWyhjW2Y+PjJdfDApKzQ+PjJdfDApKygoY1tqPj4yXXwwKSoyMHwwKT4+Ml07Y1tsPj4yXT1jWyhjWyhjW2c+PjJdfDApKzQ+PjJdfDApKygoY1tqPj4yXXwwKSoyMHwwKT4+Ml07aWYoKGRbKGNbKGNbZj4+Ml18MCkrND4+Ml18MCkrKChjW2o+PjJdfDApKjIwfDApKzEyPj4wXXwwfDApIT0oZFsoY1soY1tnPj4yXXwwKSs0Pj4yXXwwKSsoKGNbaj4+Ml18MCkqMjB8MCkrMTI+PjBdfDB8MCkpe2Y9MTA7YnJlYWt9aWYoS3koY1trPj4yXXwwLGNbbD4+Ml18MCxjW2g+PjJdfDApfDApe2Y9MTI7YnJlYWt9Y1tqPj4yXT0oY1tqPj4yXXwwKSsxfWlmKChmfDApPT0xMCl7Y1ttPj4yXT0xO209Y1ttPj4yXXwwO2k9bjtyZXR1cm4gbXwwfWVsc2UgaWYoKGZ8MCk9PTEyKXtjW20+PjJdPTE7bT1jW20+PjJdfDA7aT1uO3JldHVybiBtfDB9ZWxzZSBpZigoZnwwKT09MTQpe2NbbT4+Ml09MDttPWNbbT4+Ml18MDtpPW47cmV0dXJuIG18MH1yZXR1cm4gMH1mdW5jdGlvbiBNeShhLGIsZSxmKXthPWF8MDtiPWJ8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wO3Q9aTtpPWkrNDh8MDtvPXQrNDR8MDtwPXQrNDB8MDtuPXQrMzZ8MDtxPXQrMzJ8MDtyPXQrMjh8MDtzPXQrMjR8MDtsPXQrMjB8MDtqPXQrMTZ8MDtnPXQrMTJ8MDtrPXQrOHwwO2g9dCs0fDA7bT10O2Nbbz4+Ml09YTtjW3A+PjJdPWI7Y1tuPj4yXT1lO2NbcT4+Ml09ZjtpZihjW3E+PjJdfDApe2Nbcz4+Ml09Y1tjW3E+PjJdPj4yXTtjW2w+PjJdPTMyNzY4fWVsc2V7Yj1jW28+PjJdfDA7Zj1OeShjW3A+PjJdfDAsY1tuPj4yXXwwKXwwO2Nbcz4+Ml09VncoYixmLCgoZnwwKTwwKTw8MzE+PjMxKXwwO2NbbD4+Ml09MH1jW3I+PjJdPWNbcz4+Ml07aWYoIShjW3I+PjJdfDApKXtzPWNbcj4+Ml18MDtpPXQ7cmV0dXJuIHN8MH1jW2o+PjJdPU95KGNbcD4+Ml18MCxjW24+PjJdfDApfDA7Y1tnPj4yXT1jW2o+PjJdJjQwOTU7aWYoKGNbKGNbcD4+Ml18MCkrND4+Ml0mMTAyNHwwKT09MD8oY1soY1twPj4yXXwwKSs4Pj4yXXwwKSE9MDowKWNbaz4+Ml09KEpmKGNbKGNbcD4+Ml18MCkrOD4+Ml18MCl8MCkrMTtlbHNlIGNbaz4+Ml09MDtpZighKGNbbj4+Ml18MCkpe2NbaD4+Ml09UHkoY1twPj4yXXwwKXwwO1RSKGNbcz4+Ml18MCxjW3A+PjJdfDAsY1toPj4yXXwwKXwwO2lmKChjW2g+PjJdfDApPj4+MDw0OClWUigoY1tzPj4yXXwwKSsoY1toPj4yXXwwKXwwLDAsNDgtKGNbaD4+Ml18MCl8MCl8MH1lbHNlIFRSKGNbcz4+Ml18MCxjW3A+PjJdfDAsY1tnPj4yXXwwKXwwO2Y9KGNbcj4+Ml18MCkrNHwwO2NbZj4+Ml09Y1tmPj4yXSYtMTIyODgxO2Y9KGNbcj4+Ml18MCkrNHwwO2NbZj4+Ml09Y1tmPj4yXXxjW2o+PjJdJjI0NTc2O2Y9KGNbcj4+Ml18MCkrNHwwO2NbZj4+Ml09Y1tmPj4yXXxjW2w+PjJdO2lmKGNbaz4+Ml18MCl7bD0oY1tzPj4yXXwwKSsoY1tnPj4yXXwwKXwwO2NbKGNbcj4+Ml18MCkrOD4+Ml09bDtjW20+PjJdPWw7VFIoY1ttPj4yXXwwLGNbKGNbcD4+Ml18MCkrOD4+Ml18MCxjW2s+PjJdfDApfDB9ZG8gaWYoISgoY1soY1twPj4yXXwwKSs0Pj4yXXxjWyhjW3I+PjJdfDApKzQ+PjJdKSY4NDA0OTkyKSl7YT1jW28+PjJdfDA7ZT0oY1twPj4yXXwwKSsyMHwwO2lmKGNbKGNbcD4+Ml18MCkrND4+Ml0mMjA0OCl7bT1feChhLGNbZT4+Ml18MCxjW24+PjJdfDApfDA7Y1soY1tyPj4yXXwwKSsyMD4+Ml09bTticmVha31lbHNle209UXkoYSxjW2U+PjJdfDAsY1tuPj4yXXwwKXwwO2NbKGNbcj4+Ml18MCkrMjA+PjJdPW07YnJlYWt9fXdoaWxlKDApO2E9Y1twPj4yXXwwO2lmKCEoY1soY1tyPj4yXXwwKSs0Pj4yXSYyNDU3Nikpe2lmKGNbYSs0Pj4yXSY4NDA0OTkyKXtzPWNbcj4+Ml18MDtpPXQ7cmV0dXJuIHN8MH1pZigoZFtjW3I+PjJdPj4wXXwwfDApPT0xNTkpY1soY1tyPj4yXXwwKSsxMj4+Ml09Y1soY1twPj4yXXwwKSsxMj4+Ml07ZWxzZXtzPUl5KGNbbz4+Ml18MCxjWyhjW3A+PjJdfDApKzEyPj4yXXwwLDApfDA7Y1soY1tyPj4yXXwwKSsxMj4+Ml09c31zPUl5KGNbbz4+Ml18MCxjWyhjW3A+PjJdfDApKzE2Pj4yXXwwLDApfDA7Y1soY1tyPj4yXXwwKSsxNj4+Ml09cztzPWNbcj4+Ml18MDtpPXQ7cmV0dXJuIHN8MH1uPVJ5KGEsY1tuPj4yXXwwKXwwO2Nbcz4+Ml09KGNbcz4+Ml18MCkrbjtpZighKGNbKGNbcj4+Ml18MCkrND4+Ml0mODQwNDk5Mikpe2lmKGNbKGNbcD4+Ml18MCkrMTI+PjJdfDApYT1NeShjW28+PjJdfDAsY1soY1twPj4yXXwwKSsxMj4+Ml18MCwxLHMpfDA7ZWxzZSBhPTA7Y1soY1tyPj4yXXwwKSsxMj4+Ml09YTtpZihjWyhjW3A+PjJdfDApKzE2Pj4yXXwwKWE9TXkoY1tvPj4yXXwwLGNbKGNbcD4+Ml18MCkrMTY+PjJdfDAsMSxzKXwwO2Vsc2UgYT0wO2NbKGNbcj4+Ml18MCkrMTY+PjJdPWF9aWYoIShjW3E+PjJdfDApKXtzPWNbcj4+Ml18MDtpPXQ7cmV0dXJuIHN8MH1jW2NbcT4+Ml0+PjJdPWNbcz4+Ml07cz1jW3I+PjJdfDA7aT10O3JldHVybiBzfDB9ZnVuY3Rpb24gTnkoYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wO2c9aTtpPWkrMTZ8MDtkPWcrOHwwO2U9Zys0fDA7Zj1nO2NbZD4+Ml09YTtjW2U+PjJdPWI7Y1tmPj4yXT0wO2lmKCEoY1tkPj4yXXwwKSl7YT1jW2Y+PjJdfDA7aT1nO3JldHVybiBhfDB9Y1tmPj4yXT1SeShjW2Q+PjJdfDAsY1tlPj4yXXwwKXwwO2lmKCEoY1tlPj4yXSYxKSl7YT1jW2Y+PjJdfDA7aT1nO3JldHVybiBhfDB9YT1OeShjWyhjW2Q+PjJdfDApKzEyPj4yXXwwLGNbZT4+Ml18MCl8MDthPWErKE55KGNbKGNbZD4+Ml18MCkrMTY+PjJdfDAsY1tlPj4yXXwwKXwwKXwwO2NbZj4+Ml09KGNbZj4+Ml18MCkrYTthPWNbZj4+Ml18MDtpPWc7cmV0dXJuIGF8MH1mdW5jdGlvbiBPeShhLGIpe2E9YXwwO2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTA7Zj1pO2k9aSsxNnwwO2Q9Zis4fDA7Zz1mKzR8MDtlPWY7Y1tkPj4yXT1hO2NbZz4+Ml09YjtkbyBpZighKGNbZz4+Ml18MCkpY1tlPj4yXT00ODtlbHNle2lmKChjWyhjW2Q+PjJdfDApKzEyPj4yXXwwKT09MD8oY1soY1tkPj4yXXwwKSsyMD4+Ml18MCk9PTA6MCl7Y1tlPj4yXT0xNjM5NjticmVha31jW2U+PjJdPTgyMjB9d2hpbGUoMCk7aT1mO3JldHVybiBjW2U+PjJdfDB9ZnVuY3Rpb24gUHkoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wO2U9aTtpPWkrMTZ8MDtiPWUrNHwwO2Q9ZTtjW2Q+PjJdPWE7ZG8gaWYoIShjWyhjW2Q+PjJdfDApKzQ+PjJdJjE2Mzg0KSlpZihjWyhjW2Q+PjJdfDApKzQ+PjJdJjgxOTIpe2NbYj4+Ml09Mjg7YnJlYWt9ZWxzZXtjW2I+PjJdPTQ4O2JyZWFrfWVsc2UgY1tiPj4yXT0xMjt3aGlsZSgwKTtpPWU7cmV0dXJuIGNbYj4+Ml18MH1mdW5jdGlvbiBReShiLGUsZil7Yj1ifDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MDtxPWk7aT1pKzQ4fDA7Zz1xKzMyfDA7aD1xKzI4fDA7aj1xKzI0fDA7az1xKzIwfDA7bj1xKzE2fDA7bT1xKzEyfDA7cD1xKzh8MDtsPXErNHwwO289cTtjW2g+PjJdPWI7Y1tqPj4yXT1lO2Nbaz4+Ml09ZjtpZighKGNbaj4+Ml18MCkpe2NbZz4+Ml09MDtwPWNbZz4+Ml18MDtpPXE7cmV0dXJuIHB8MH1jW24+PjJdPVZ3KGNbaD4+Ml18MCw4LDApfDA7aWYoIShjW24+PjJdfDApKXtjW2c+PjJdPTA7cD1jW2c+PjJdfDA7aT1xO3JldHVybiBwfDB9ZT1jW2Nbaj4+Ml0+PjJdfDA7Y1tsPj4yXT1lO2NbY1tuPj4yXT4+Ml09ZTthOmRvIGlmKCEoY1trPj4yXSYxKSl7Y1tsPj4yXT0xO3doaWxlKDEpe2lmKChjW2w+PjJdfDApPj0oY1tjW2o+PjJdPj4yXXwwKSlicmVhayBhO2NbbD4+Ml09KGNbbD4+Ml18MCkrKGNbbD4+Ml18MCl9fXdoaWxlKDApO2U9VncoY1toPj4yXXwwLChjW2w+PjJdfDApKjIwfDAsMCl8MDtjW20+PjJdPWU7Y1soY1tuPj4yXXwwKSs0Pj4yXT1lO2lmKCEoY1ttPj4yXXwwKSl7VGYoY1toPj4yXXwwLGNbbj4+Ml18MCk7Y1tnPj4yXT0wO3A9Y1tnPj4yXXwwO2k9cTtyZXR1cm4gcHwwfWNbcD4+Ml09Y1soY1tqPj4yXXwwKSs0Pj4yXTtjW2w+PjJdPTA7d2hpbGUoMSl7aWYoKGNbbD4+Ml18MCk+PShjW2Nbaj4+Ml0+PjJdfDApKWJyZWFrO2Nbbz4+Ml09Y1tjW3A+PjJdPj4yXTtlPUl5KGNbaD4+Ml18MCxjW28+PjJdfDAsY1trPj4yXXwwKXwwO2NbY1ttPj4yXT4+Ml09ZTtlPXFoKGNbaD4+Ml18MCxjWyhjW3A+PjJdfDApKzQ+PjJdfDApfDA7Y1soY1ttPj4yXXwwKSs0Pj4yXT1lO2U9cWgoY1toPj4yXXwwLGNbKGNbcD4+Ml18MCkrOD4+Ml18MCl8MDtjWyhjW20+PjJdfDApKzg+PjJdPWU7YVsoY1ttPj4yXXwwKSsxMj4+MF09YVsoY1twPj4yXXwwKSsxMj4+MF18MDtlPShjW20+PjJdfDApKzEzfDA7YVtlPj4wXT1hW2U+PjBdJi0yO2U9KGNbbT4+Ml18MCkrMTN8MDthW2U+PjBdPWFbZT4+MF0mLTN8KChkWyhjW3A+PjJdfDApKzEzPj4wXXwwKT4+PjEmMSk8PDEmMjU1O2NbKGNbbT4+Ml18MCkrMTY+PjJdPWNbKGNbcD4+Ml18MCkrMTY+PjJdO2NbbD4+Ml09KGNbbD4+Ml18MCkrMTtjW20+PjJdPShjW20+PjJdfDApKzIwO2NbcD4+Ml09KGNbcD4+Ml18MCkrMjB9Y1tnPj4yXT1jW24+PjJdO3A9Y1tnPj4yXXwwO2k9cTtyZXR1cm4gcHwwfWZ1bmN0aW9uIFJ5KGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MDtmPWk7aT1pKzE2fDA7ZD1mKzh8MDtnPWYrNHwwO2U9ZjtjW2Q+PjJdPWE7Y1tnPj4yXT1iO2NbZT4+Ml09KE95KGNbZD4+Ml18MCxjW2c+PjJdfDApfDApJjQwOTU7aWYoKGNbKGNbZD4+Ml18MCkrND4+Ml0mMTAyNHwwKT09MD8oY1soY1tkPj4yXXwwKSs4Pj4yXXwwKSE9MDowKXtnPShKZihjWyhjW2Q+PjJdfDApKzg+PjJdfDApfDApKzF8MDtjW2U+PjJdPShjW2U+PjJdfDApK2d9aT1mO3JldHVybiAoY1tlPj4yXXwwKSs3Ji04fDB9ZnVuY3Rpb24gU3koYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wO2Q9aTtpPWkrMTZ8MDtlPWQrNHwwO2I9ZDtjW2U+PjJdPWE7c3dpdGNoKGNbZT4+Ml18MCl7Y2FzZSAxMTY6e2NbYj4+Ml09Mjk0NDk7YnJlYWt9Y2FzZSAxMTg6e2NbYj4+Ml09Mjk0NTk7YnJlYWt9Y2FzZSAxMTc6e2NbYj4+Ml09Mjk0Njk7YnJlYWt9ZGVmYXVsdDpjW2I+PjJdPTI5NDc2fWk9ZDtyZXR1cm4gY1tiPj4yXXwwfWZ1bmN0aW9uIFR5KGEsZixnLGgpe2E9YXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO3ZhciBqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wO3Q9aTtpPWkrNDh8MDtsPXQ7cD10KzM2fDA7bT10KzMyfDA7aj10KzI4fDA7bj10KzI0fDA7cT10KzIwfDA7cj10KzE2fDA7az10KzEyfDA7cz10Kzh8MDtvPXQrNHwwO2NbbT4+Ml09YTtjW2o+PjJdPWY7Y1tuPj4yXT1nO2NbcT4+Ml09aDtjW2s+PjJdPWNbY1ttPj4yXT4+Ml07aWYoKGNbbj4+Ml18MCkhPTA/KGRbKGNbY1ttPj4yXT4+Ml18MCkrNjk+PjBdfDApPT0wOjApe2lmKChjW2Nbbj4+Ml0+PjJdfDApPihjWyhjW2s+PjJdfDApKzk2Kzg+PjJdfDApKXtzPWNbbT4+Ml18MDtjW2w+PjJdPWNbcT4+Ml07RWgocywyOTQ4MixsKTtjW3A+PjJdPTE7cz1jW3A+PjJdfDA7aT10O3JldHVybiBzfDB9Y1tzPj4yXT1jW2Nbaj4+Ml0+PjJdO2Nbcj4+Ml09MDtjW28+PjJdPWNbKGNbbj4+Ml18MCkrND4+Ml07d2hpbGUoMSl7aWYoKGNbcj4+Ml18MCk+PShjW2Nbbj4+Ml0+PjJdfDApKXtqPTEzO2JyZWFrfWlmKGJbKGNbbz4+Ml18MCkrMTY+PjFdfDApe2s9Y1ttPj4yXXwwO2lmKChlWyhjW28+PjJdfDApKzE2Pj4xXXwwKT4oY1tjW3M+PjJdPj4yXXwwKSl7aj0xMDticmVha31VeShrLGNbcz4+Ml18MCwoZVsoY1tvPj4yXXwwKSsxNj4+MV18MCktMXwwLGNbY1tvPj4yXT4+Ml18MCxjW3E+PjJdfDAsMCl9Y1tyPj4yXT0oY1tyPj4yXXwwKSsxO2Nbbz4+Ml09KGNbbz4+Ml18MCkrMjB9aWYoKGp8MCk9PTEwKXtHeShrLGNbcT4+Ml18MCwoY1tyPj4yXXwwKSsxfDAsY1tjW3M+PjJdPj4yXXwwKTtjW3A+PjJdPTE7cz1jW3A+PjJdfDA7aT10O3JldHVybiBzfDB9ZWxzZSBpZigoanwwKT09MTMpe2NbcD4+Ml09MDtzPWNbcD4+Ml18MDtpPXQ7cmV0dXJuIHN8MH19Y1twPj4yXT0wO3M9Y1twPj4yXXwwO2k9dDtyZXR1cm4gc3wwfWZ1bmN0aW9uIFV5KGIsZSxmLGcsaCxqKXtiPWJ8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDt2YXIgaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wO3E9aTtpPWkrNDh8MDtrPXErMzJ8MDt0PXErMjh8MDtzPXErMjR8MDtuPXErMjB8MDtsPXErMTZ8MDttPXErMTJ8MDtyPXErOHwwO3A9cSs0fDA7bz1xO2Nbaz4+Ml09YjtjW3Q+PjJdPWU7Y1tzPj4yXT1mO2Nbbj4+Ml09ZztjW2w+PjJdPWg7Y1ttPj4yXT1qO2Nbcj4+Ml09Y1soY1soY1t0Pj4yXXwwKSs0Pj4yXXwwKSsoKGNbcz4+Ml18MCkqMjB8MCk+PjJdO2Nbbz4+Ml09Y1tjW2s+PjJdPj4yXTtjW3A+PjJdPUl5KGNbbz4+Ml18MCxjW3I+PjJdfDAsMCl8MDtpZighKGNbcD4+Ml18MCkpe2k9cTtyZXR1cm59aWYoKGFbY1tsPj4yXT4+MF18MCkhPTcxKVZ5KGNbcD4+Ml18MCxjW20+PjJdfDApO2lmKChkW2Nbbj4+Ml0+PjBdfDApPT01MyljW3A+PjJdPVd5KGNbaz4+Ml18MCxjW3A+PjJdfDAsY1soY1tuPj4yXXwwKSs4Pj4yXXwwKXwwO2s9KGNbcD4+Ml18MCkrNHwwO2Nbaz4+Ml09Y1trPj4yXXw0MTk0MzA0O2s9KGNbbj4+Ml18MCkrNHwwO2Nbaz4+Ml09Y1trPj4yXXwzMjc2ODtpdihjW28+PjJdfDAsY1tuPj4yXXwwKTtrPWNbbj4+Ml18MDtsPWNbcD4+Ml18MDttPWsrNDh8MDtkb3tjW2s+PjJdPWNbbD4+Ml07az1rKzR8MDtsPWwrNHwwfXdoaWxlKChrfDApPChtfDApKTtpZigoY1soY1tuPj4yXXwwKSs0Pj4yXSYxMDI0fDApPT0wPyhjWyhjW24+PjJdfDApKzg+PjJdfDApIT0wOjApe3Q9cWgoY1tvPj4yXXwwLGNbKGNbbj4+Ml18MCkrOD4+Ml18MCl8MDtjWyhjW24+PjJdfDApKzg+PjJdPXQ7dD0oY1tuPj4yXXwwKSs0fDA7Y1t0Pj4yXT1jW3Q+PjJdfDY1NTM2fVRmKGNbbz4+Ml18MCxjW3A+PjJdfDApO2k9cTtyZXR1cm59ZnVuY3Rpb24gVnkoYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wO2c9aTtpPWkrNDh8MDtkPWcrMzJ8MDtlPWcrMjh8MDtmPWc7Y1tkPj4yXT1hO2NbZT4+Ml09YjtpZigoY1tlPj4yXXwwKTw9MCl7aT1nO3JldHVybn07Y1tmPj4yXT0wO2NbZis0Pj4yXT0wO2NbZis4Pj4yXT0wO2NbZisxMj4+Ml09MDtjW2YrMTY+PjJdPTA7Y1tmKzIwPj4yXT0wO2NbZisyND4+Ml09MDtjW2YrND4+Ml09MTk1O2NbZisyND4+Ml09Y1tlPj4yXTt3eShmLGNbZD4+Ml18MCl8MDtpPWc7cmV0dXJufWZ1bmN0aW9uIFd5KGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MDtlPWk7aT1pKzMyfDA7aD1lKzE2fDA7Zz1lKzEyfDA7aj1lKzh8MDtmPWU7Y1toPj4yXT1hO2NbZz4+Ml09YjtjW2o+PjJdPWQ7WHkoZixjW2o+PjJdfDApO2Q9bHcoY1toPj4yXXwwLGNbZz4+Ml18MCxmLDApfDA7aT1lO3JldHVybiBkfDB9ZnVuY3Rpb24gWHkoYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTA7ZD1pO2k9aSsxNnwwO2U9ZCs0fDA7Zj1kO2NbZT4+Ml09YTtjW2Y+PjJdPWI7Y1tjW2U+PjJdPj4yXT1jW2Y+PjJdO2I9SmYoY1tmPj4yXXwwKXwwO2NbKGNbZT4+Ml18MCkrND4+Ml09YjtpPWQ7cmV0dXJufWZ1bmN0aW9uIFl5KGIsZSl7Yj1ifDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wO2g9aTtpPWkrMTZ8MDtmPWgrNHwwO2c9aDtjW2Y+PjJdPWI7Y1tnPj4yXT1lO2lmKChkW2NbZz4+Ml0+PjBdfDB8MCkhPTE1Myl7aT1oO3JldHVybiAwfWI9KGNbZz4+Ml18MCkrMzh8MDthW2I+PjBdPShkW2I+PjBdfDApKyhjWyhjW2Y+PjJdfDApKzI0Pj4yXXwwKTtpPWg7cmV0dXJuIDB9ZnVuY3Rpb24gWnkoYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTA7aD1pO2k9aSszMnwwO2c9aDtkPWgrMTZ8MDtqPWgrMTJ8MDtmPWgrOHwwO2U9aCs0fDA7Y1tkPj4yXT1hO2Nbaj4+Ml09YjtjW2Y+PjJdPTA7Y1tlPj4yXT1jWyhjW2NbZD4+Ml0+PjJdfDApKzk2KzEyPj4yXTtpZigoY1tqPj4yXXwwKTw9KGNbZT4+Ml18MCkpe2o9Y1tmPj4yXXwwO2k9aDtyZXR1cm4ganwwfWo9Y1tkPj4yXXwwO2NbZz4+Ml09Y1tlPj4yXTtFaChqLDI5NTEzLGcpO2NbZj4+Ml09MTtqPWNbZj4+Ml18MDtpPWg7cmV0dXJuIGp8MH1mdW5jdGlvbiBfeShmLGcsaCxqLGssbCl7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7bD1sfDA7dmFyIG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxEPTAsRT0wLEY9MCxHPTAsSD0wLEk9MCxKPTAsSz0wLEw9MCxNPTAsTj0wLE89MCxQPTAsUT0wLFI9MCxTPTAsVD0wLFU9MCxWPTAsVz0wLFg9MDtYPWk7aT1pKzE3NnwwO1c9WCs0MHwwO1Y9WCsyNHwwO0Q9WCs4fDA7Qj1YO0k9WCsxNjR8MDtKPVgrMTYwfDA7bT1YKzE1NnwwO0s9WCsxNTJ8MDtMPVgrMTQ4fDA7TT1YKzE0NHwwO049WCsxNDB8MDtxPVgrMTM2fDA7cz1YKzEzMnwwO089WCsxMjh8MDtvPVgrMTI0fDA7dD1YKzEyMHwwO1A9WCsxMTZ8MDt4PVgrMTEyfDA7Uz1YKzEwOHwwO1U9WCsxMDR8MDtUPVgrMTAwfDA7UT1YKzk2fDA7QT1YKzkyfDA7dj1YKzg4fDA7dz1YKzg0fDA7ej1YKzgwfDA7cD1YKzc2fDA7Rj1YKzcyfDA7dT1YKzY4fDA7cj1YKzY0fDA7RT1YKzYwfDA7eT1YKzU2fDA7SD1YKzUyfDA7Uj1YKzQ4fDA7Y1tKPj4yXT1mO2NbbT4+Ml09ZztjW0s+PjJdPWg7Y1tMPj4yXT1qO2NbTT4+Ml09aztjW04+PjJdPWw7Y1tPPj4yXT0wO2Nbbz4+Ml09MDtjW3Q+PjJdPTA7Y1tQPj4yXT1jW2NbSj4+Ml0+PjJdO2NbUz4+Ml09MDtjW1U+PjJdPWNbTT4+Ml07Y1tUPj4yXT0wO2NbUT4+Ml09MDtjW0E+PjJdPTA7Y1soY1tOPj4yXXwwKSsyOD4+Ml09LTE7Y1soY1tOPj4yXXwwKSs0ND4+Ml09MDthOmRvIGlmKGNbbT4+Ml18MCl7aWYoZVsoY1tNPj4yXXwwKSsyOD4+MV0mNil7Y1ttPj4yXT0wO2JyZWFrfWNbcT4+Ml09MDt3aGlsZSgxKXtpZigoY1txPj4yXXwwKT49KGNbKGNbUD4+Ml18MCkrMjA+PjJdfDApKWJyZWFrIGE7aD0oaWcoY1soY1soY1tQPj4yXXwwKSsxNj4+Ml18MCkrKGNbcT4+Ml08PDQpPj4yXXwwLGNbbT4+Ml18MCl8MCk9PTA7bD1jW3E+PjJdfDA7aWYoaClicmVhaztjW3E+PjJdPWwrMX1jW1Q+PjJdPWNbKGNbKGNbUD4+Ml18MCkrMTY+PjJdfDApKyhsPDw0KSsxMj4+Ml19d2hpbGUoMCk7Yjp3aGlsZSgxKXtpZighKChjW00+PjJdfDApIT0wPyhjW08+PjJdfDApPT0wOjApKXtHPTg5O2JyZWFrfWNbej4+Ml09Y1soY1tNPj4yXXwwKSs0Pj4yXTtpZihjW3o+PjJdfDApe2NbcT4+Ml09MDtjW3g+PjJdPShjW3o+PjJdfDApKzg7d2hpbGUoMSl7aWYoKGNbcT4+Ml18MCk+PShjW2Nbej4+Ml0+PjJdfDApKWJyZWFrO2NbQT4+Ml09Y1soY1t4Pj4yXXwwKSsxNj4+Ml07aWYoKGNbKGNbeD4+Ml18MCkrMjA+PjJdfDApIT0wPyhjWyhjWyhjW3g+PjJdfDApKzIwPj4yXXwwKSs4Pj4yXSYyMDQ4fDApIT0wOjApe2NbcD4+Ml09MDtjW3c+PjJdPWNbY1soY1t4Pj4yXXwwKSsyMD4+Ml0+PjJdO2Nbcz4+Ml09MDt3aGlsZSgxKXtpZigoY1tzPj4yXXwwKT49KGNbY1t3Pj4yXT4+Ml18MCkpYnJlYWs7aWYoZnooY1soY1soY1t3Pj4yXXwwKSs0Pj4yXXwwKSsoKGNbcz4+Ml18MCkqMjB8MCkrOD4+Ml18MCxjW0w+PjJdfDAsY1tLPj4yXXwwLGNbbT4+Ml18MCl8MCl7Y1tPPj4yXT0oY1tPPj4yXXwwKSsxO2Nbbz4+Ml09MjtjW1M+PjJdPWNbeD4+Ml07YlsoY1tOPj4yXXwwKSszMj4+MV09Y1tzPj4yXTtjW3A+PjJdPTF9Y1tzPj4yXT0oY1tzPj4yXXwwKSsxfWlmKCEoKGNbcD4+Ml18MCkhPTB8KGNbSz4+Ml18MCk9PTApKUc9MjF9ZWxzZSBHPTIxO2M6ZG8gaWYoKEd8MCk9PTIxKXtHPTA7aWYoKGNbbT4+Ml18MCkhPTA/KGNbKGNbQT4+Ml18MCkrNjQ+PjJdfDApIT0oY1tUPj4yXXwwKTowKWJyZWFrO2lmKGNbSz4+Ml18MCl7aWYoY1soY1t4Pj4yXXwwKSsxMj4+Ml18MClsPWNbKGNbeD4+Ml18MCkrMTI+PjJdfDA7ZWxzZSBsPWNbY1tBPj4yXT4+Ml18MDtjW0Y+PjJdPWw7aWYoaWcoY1tGPj4yXXwwLGNbSz4+Ml18MCl8MClicmVha31oPWNbbz4+Ml18MDtjW28+PjJdPWgrMTtpZighaCljW1M+PjJdPWNbeD4+Ml07Y1tzPj4yXT0wO2Nbdj4+Ml09Y1soY1tBPj4yXXwwKSs0Pj4yXTt3aGlsZSgxKXtpZigoY1tzPj4yXXwwKT49KGJbKGNbQT4+Ml18MCkrMzQ+PjFdfDApKWJyZWFrIGM7aWYoIShpZyhjW2Nbdj4+Ml0+PjJdfDAsY1tMPj4yXXwwKXwwKSl7aWYoKGNbTz4+Ml18MCkhPTEpYnJlYWs7aWYoKGRbKGNbeD4+Ml18MCkrMzY+PjBdJjR8MCk9PTA/KGd6KGNbKGNbeD4+Ml18MCkrNTI+PjJdfDAsY1tMPj4yXXwwKXwwKT09MDowKWJyZWFrfWNbcz4+Ml09KGNbcz4+Ml18MCkrMTtjW3Y+PjJdPShjW3Y+PjJdfDApKzE2fWNbTz4+Ml09KGNbTz4+Ml18MCkrMTtjW1M+PjJdPWNbeD4+Ml07aWYoKGNbcz4+Ml18MCk9PShiWyhjW0E+PjJdfDApKzMyPj4xXXwwKSlsPS0xO2Vsc2UgbD0oY1tzPj4yXSY2NTUzNSk8PDE2Pj4xNjtiWyhjW04+PjJdfDApKzMyPj4xXT1sfXdoaWxlKDApO2NbcT4+Ml09KGNbcT4+Ml18MCkrMTtjW3g+PjJdPShjW3g+PjJdfDApKzcyfWlmKGNbUz4+Ml18MCl7Y1soY1tOPj4yXXwwKSsyOD4+Ml09Y1soY1tTPj4yXXwwKSs0ND4+Ml07Y1soY1tOPj4yXXwwKSs0ND4+Ml09Y1soY1tTPj4yXXwwKSsxNj4+Ml07aWYoZFsoY1tTPj4yXXwwKSszNj4+MF0mOCl7aD0oY1tOPj4yXXwwKSs0fDA7Y1toPj4yXT1jW2g+PjJdfDEwNDg1NzZ9Y1tUPj4yXT1jWyhjWyhjW04+PjJdfDApKzQ0Pj4yXXwwKSs2ND4+Ml19fWlmKChjW20+PjJdfDApPT0wJihjW0s+PjJdfDApIT0wJihjW28+PjJdfDApPT0wPyhjWyhjW0o+PjJdfDApKzEyOD4+Ml18MCkhPTA6MCl7Y1t1Pj4yXT1kWyhjW0o+PjJdfDApKzE0OD4+MF07aWYoKGNbdT4+Ml18MCkhPTEwOT8oaWcoMjk5NDAsY1tLPj4yXXwwKXwwKT09MDowKXtjWyhjW04+PjJdfDApKzI4Pj4yXT0xO2NbQT4+Ml09Y1soY1tKPj4yXXwwKSsxMjg+PjJdfWVsc2UgRz01MDtkbyBpZigoR3wwKT09NTApe0c9MDtpZigoY1t1Pj4yXXwwKSE9MTA4PyhpZygyOTk0NCxjW0s+PjJdfDApfDApPT0wOjApe2NbKGNbTj4+Ml18MCkrMjg+PjJdPTA7Y1tBPj4yXT1jWyhjW0o+PjJdfDApKzEyOD4+Ml07YnJlYWt9Y1tBPj4yXT0wfXdoaWxlKDApO2lmKGNbQT4+Ml18MCl7Y1tUPj4yXT1jWyhjW0E+PjJdfDApKzY0Pj4yXTtjW28+PjJdPShjW28+PjJdfDApKzE7Y1tyPj4yXT0wO2Nbdj4+Ml09Y1soY1tBPj4yXXwwKSs0Pj4yXTt3aGlsZSgxKXtpZigoY1tyPj4yXXwwKT49KGJbKGNbQT4+Ml18MCkrMzQ+PjFdfDApKWJyZWFrO2g9KGlnKGNbY1t2Pj4yXT4+Ml18MCxjW0w+PjJdfDApfDApPT0wO249Y1tyPj4yXXwwO2lmKGgpe0c9NTg7YnJlYWt9Y1tyPj4yXT1uKzE7Y1t2Pj4yXT0oY1t2Pj4yXXwwKSsxNn1pZigoR3wwKT09NTg/KEc9MCwobnwwKT09KGJbKGNbQT4+Ml18MCkrMzI+PjFdfDApKTowKWNbcj4+Ml09LTE7aWYoKChjW3I+PjJdfDApPj0oYlsoY1tBPj4yXXwwKSszND4+MV18MCk/KHVpKGNbTD4+Ml18MCl8MCkhPTA6MCk/KGRbKGNbQT4+Ml18MCkrNDI+PjBdJjY0fDApPT0wOjApY1tyPj4yXT0tMTtpZigoY1tyPj4yXXwwKTwoYlsoY1tBPj4yXXwwKSszND4+MV18MCkpe2NbTz4+Ml09KGNbTz4+Ml18MCkrMTtsPWNbTj4+Ml18MDtkbyBpZigoY1tyPj4yXXwwKT49MCl7az0oY1tyPj4yXXwwKT49MzI/LTE6MTw8Y1tyPj4yXTtmPWNbSj4+Ml18MDtpZighKGNbbCsyOD4+Ml18MCkpe2g9ZisxNDB8MDtjW2g+PjJdPWNbaD4+Ml18azticmVha31lbHNle2g9ZisxNDR8MDtjW2g+PjJdPWNbaD4+Ml18azticmVha319ZWxzZSBhW2wrMT4+MF09Njg7d2hpbGUoMCk7YlsoY1tOPj4yXXwwKSszMj4+MV09Y1tyPj4yXTtjWyhjW04+PjJdfDApKzQ0Pj4yXT1jW0E+PjJdO2NbUT4+Ml09MX19fWlmKCgoKGNbTz4+Ml18MCk9PTAmKGNbbz4+Ml18MCk9PTEmKGNbUz4+Ml18MCkhPTA/KGVbKGNbTT4+Ml18MCkrMjg+PjFdJjMyfDApPT0wOjApPyh1aShjW0w+PjJdfDApfDApIT0wOjApPyhkWyhjWyhjW1M+PjJdfDApKzE2Pj4yXXwwKSs0Mj4+MF0mNjR8MCk9PTA6MCl7Y1tPPj4yXT0xO2JbKGNbTj4+Ml18MCkrMzI+PjFdPS0xO2FbKGNbTj4+Ml18MCkrMT4+MF09Njh9aD1jWyhjW00+PjJdfDApKzg+PjJdfDA7Y1t3Pj4yXT1oO2Q6ZG8gaWYoKGh8MCkhPTAmKGNbSz4+Ml18MCk9PTAmKGNbTz4+Ml18MCk9PTApe2Nbcz4+Ml09MDt3aGlsZSgxKXtpZigoY1tzPj4yXXwwKT49KGNbY1t3Pj4yXT4+Ml18MCkpYnJlYWsgZDtjW0U+PjJdPWNbKGNbKGNbdz4+Ml18MCkrND4+Ml18MCkrKChjW3M+PjJdfDApKjIwfDApKzQ+PjJdO2lmKChjW0U+PjJdfDApIT0wPyhpZyhjW0U+PjJdfDAsY1tMPj4yXXwwKXwwKT09MDowKXtHPTgyO2JyZWFrIGJ9Y1tzPj4yXT0oY1tzPj4yXXwwKSsxfX13aGlsZSgwKTtpZihjW08+PjJdfDApY29udGludWU7Y1tNPj4yXT1jWyhjW00+PjJdfDApKzE2Pj4yXTtjW3Q+PjJdPShjW3Q+PjJdfDApKzF9aWYoKEd8MCk9PTgyKXtjW3k+PjJdPWNbKGNbKGNbdz4+Ml18MCkrND4+Ml18MCkrKChjW3M+PjJdfDApKjIwfDApPj4yXTtpZigoZVsoY1tNPj4yXXwwKSsyOD4+MV0mMXwwKT09MD8oY1soY1t5Pj4yXXwwKSs0Pj4yXSYyfDApIT0wOjApe1c9Y1tKPj4yXXwwO2NbQj4+Ml09Y1tFPj4yXTtFaChXLDI5OTQ4LEIpO2NbST4+Ml09MjtXPWNbST4+Ml18MDtpPVg7cmV0dXJuIFd8MH1VeShjW0o+PjJdfDAsY1t3Pj4yXXwwLGNbcz4+Ml18MCxjW04+PjJdfDAsMTg0MDIsY1t0Pj4yXXwwKTtjW08+PjJdPTE7Y1tTPj4yXT0wfWVsc2UgaWYoKEd8MCk9PTg5KXtpZigoY1tPPj4yXXwwKT09MCYoY1tLPj4yXXwwKT09MD8oY1soY1tOPj4yXXwwKSs0Pj4yXSY2NHwwKSE9MDowKXthW2NbTj4+Ml0+PjBdPTk3O2NbKGNbTj4+Ml18MCkrNDQ+PjJdPTA7Y1tJPj4yXT0xO1c9Y1tJPj4yXXwwO2k9WDtyZXR1cm4gV3wwfWlmKChjW08+PjJdfDApIT0xKXtjW0g+PjJdPShjW08+PjJdfDApPT0wPzI5OTc5OjI5OTk0O2RvIGlmKCEoY1ttPj4yXXwwKSl7az1jW0o+PjJdfDA7bD1jW0g+PjJdfDA7aWYoY1tLPj4yXXwwKXtLPWNbSz4+Ml18MDtXPWNbTD4+Ml18MDtjW1Y+PjJdPWw7Y1tWKzQ+PjJdPUs7Y1tWKzg+PjJdPVc7RWgoaywzMDAyOSxWKTticmVha31lbHNle1Y9Y1tMPj4yXXwwO2NbVz4+Ml09bDtjW1crND4+Ml09VjtFaChrLDMwMDM5LFcpO2JyZWFrfX1lbHNle1c9Y1tKPj4yXXwwO0c9Y1ttPj4yXXwwO0s9Y1tLPj4yXXwwO1Y9Y1tMPj4yXXwwO2NbRD4+Ml09Y1tIPj4yXTtjW0QrND4+Ml09RztjW0QrOD4+Ml09SztjW0QrMTI+PjJdPVY7RWgoVywzMDAxNixEKX13aGlsZSgwKTthWyhjW0o+PjJdfDApKzE3Pj4wXT0xO1c9KGNbVT4+Ml18MCkrMjR8MDtjW1c+PjJdPShjW1c+PjJdfDApKzF9aWYoKGNbUz4+Ml18MCkhPTA/KGJbKGNbTj4+Ml18MCkrMzI+PjFdfDApPj0wOjApe1c9YlsoY1tOPj4yXXwwKSszMj4+MV18MDtjW1I+PjJdPVc7Y1tSPj4yXT0oY1tSPj4yXXwwKT49NjQ/NjM6VztSPVdSKDEsMCxjW1I+PjJdfDApfDA7Vz0oY1tTPj4yXXwwKSs1NnwwO1M9VztWPWNbUys0Pj4yXXxDO2NbVz4+Ml09Y1tTPj4yXXxSO2NbVys0Pj4yXT1WfWl2KGNbUD4+Ml18MCxjWyhjW04+PjJdfDApKzEyPj4yXXwwKTtjWyhjW04+PjJdfDApKzEyPj4yXT0wO2l2KGNbUD4+Ml18MCxjWyhjW04+PjJdfDApKzE2Pj4yXXwwKTtjWyhjW04+PjJdfDApKzE2Pj4yXT0wO2FbY1tOPj4yXT4+MF09KGNbUT4+Ml18MCkhPTA/ODg6MTUyfWlmKChjW08+PjJdfDApIT0xKXtjW0k+PjJdPTI7Vz1jW0k+PjJdfDA7aT1YO3JldHVybiBXfDB9aWYoIShjWyhjW04+PjJdfDApKzQ+PjJdJjQxOTQzMDQpKWh6KGNbSj4+Ml18MCxjW04+PjJdfDAsY1tUPj4yXXwwLGNbKGNbTT4+Ml18MCkrND4+Ml18MCk7d2hpbGUoMSl7Vz0oY1tVPj4yXXwwKSsyMHwwO2NbVz4+Ml09KGNbVz4+Ml18MCkrMTtpZigoY1tVPj4yXXwwKT09KGNbTT4+Ml18MCkpYnJlYWs7Y1tVPj4yXT1jWyhjW1U+PjJdfDApKzE2Pj4yXX1jW0k+PjJdPTE7Vz1jW0k+PjJdfDA7aT1YO3JldHVybiBXfDB9ZnVuY3Rpb24gJHkoYSxiLGQsZil7YT1hfDA7Yj1ifDA7ZD1kfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MDttPWk7aT1pKzMyfDA7az1tO2c9bSsyNHwwO2g9bSsyMHwwO2o9bSsxNnwwO249bSsxMnwwO2w9bSs4fDA7Y1tnPj4yXT1hO2NbaD4+Ml09YjtjW2o+PjJdPWQ7Y1tuPj4yXT1mO2lmKCEoKGVbKGNbaD4+Ml18MCkrMjg+PjFdfDApJmNbbj4+Ml0pKXtpPW07cmV0dXJufWNbbD4+Ml09Mjk4NTY7aWYoISgoZVsoY1toPj4yXXwwKSsyOD4+MV18MCkmMzIpKXtpZigoZVsoY1toPj4yXXwwKSsyOD4+MV18MCkmNCljW2w+PjJdPTI5OTAyfWVsc2UgY1tsPj4yXT0yOTg4NDtuPWNbZz4+Ml18MDtkPWNbbD4+Ml18MDtjW2s+PjJdPWNbaj4+Ml07Y1trKzQ+PjJdPWQ7RWgobiwyOTkyMCxrKTtpPW07cmV0dXJufWZ1bmN0aW9uIGF6KGEpe2E9YXwwO3ZhciBiPTAsZT0wLGY9MCxnPTA7Zz1pO2k9aSsxNnwwO2I9ZysxMnwwO2U9Zys4fDA7Zj1nO2NbZT4+Ml09YTtoW2Y+PjNdPS0xLjA7aWYoKGRbY1tlPj4yXT4+MF18MHwwKSE9MTMyKXtjW2I+PjJdPS0xO2Y9Y1tiPj4yXXwwO2k9ZztyZXR1cm4gZnwwfWE9Y1soY1tlPj4yXXwwKSs4Pj4yXXwwO2V6KGEsZixKZihjWyhjW2U+PjJdfDApKzg+PjJdfDApfDAsMSl8MDtpZigraFtmPj4zXT4xLjApe2NbYj4+Ml09LTE7Zj1jW2I+PjJdfDA7aT1nO3JldHVybiBmfDB9ZWxzZXtjW2I+PjJdPX5+KCtoW2Y+PjNdKjEzNDIxNzcyOC4wKTtmPWNbYj4+Ml18MDtpPWc7cmV0dXJuIGZ8MH1yZXR1cm4gMH1mdW5jdGlvbiBieihhLGIpe2E9YXwwO2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wO2U9aTtpPWkrNDh8MDtmPWUrNDR8MDtoPWUrNDB8MDtnPWUrMTJ8MDtkPWU7Y1tmPj4yXT1hO2NbaD4+Ml09YjtjW2c+PjJdPTA7Y1tnKzQ+PjJdPTA7Y1tnKzg+PjJdPTA7Y1tnKzEyPj4yXT0wO2NbZysxNj4+Ml09MDtjW2crMjA+PjJdPTA7Y1tnKzI0Pj4yXT0wO2NbZys0Pj4yXT0xOTY7Y1tnKzI0Pj4yXT1kO2NbZD4+Ml09Y1toPj4yXTtjW2QrND4+Ml09MDtjW2QrOD4+Ml09MDt2eShnLGNbKGNbZj4+Ml18MCkrMjA+PjJdfDApfDA7aT1lO3JldHVybiAoKGNbZCs0Pj4yXXwwKT4wPzE6KGNbZCs4Pj4yXXwwKT09MCkmMXwwfWZ1bmN0aW9uIGN6KGIpe2I9YnwwO3ZhciBlPTAsZj0wLGc9MCxoPTA7aD1pO2k9aSsxNnwwO2U9aCs0fDA7Zj1oO2c9aCs4fDA7Y1tmPj4yXT1iO2FbZz4+MF09YVtjW2Y+PjJdPj4wXXwwO2lmKChkW2c+PjBdfDB8MCk9PTE1NylhW2c+PjBdPWFbKGNbZj4+Ml18MCkrMzg+PjBdfDA7aWYoKGRbZz4+MF18MHwwKT09MTU4KXtjW2U+PjJdPWNbY1soY1tmPj4yXXwwKSsyMD4+Ml0+PjJdO2I9Y1tlPj4yXXwwO2k9aDtyZXR1cm4gYnwwfWlmKChkW2c+PjBdfDB8MCk9PTExOSl7Y1tlPj4yXT1jW2NbY1soY1tmPj4yXXwwKSsyMD4+Ml0+PjJdPj4yXTtiPWNbZT4+Ml18MDtpPWg7cmV0dXJuIGJ8MH1lbHNle2NbZT4+Ml09MTtiPWNbZT4+Ml18MDtpPWg7cmV0dXJuIGJ8MH1yZXR1cm4gMH1mdW5jdGlvbiBkeihhLGIpe2E9YXwwO2I9YnwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTA7bD1pO2k9aSszMnwwO2U9bCsyMHwwO2Y9bCsxNnwwO2o9bCsxMnwwO2c9bCs4fDA7aD1sKzR8MDtrPWw7Y1tlPj4yXT1hO2NbZj4+Ml09YjtpZigoZFtjW2Y+PjJdPj4wXXwwfDApIT0xNTI/KGRbY1tmPj4yXT4+MF18MHwwKSE9MTU0OjApe2k9bDtyZXR1cm4gMH1jW2c+PjJdPWNbKGNbZT4+Ml18MCkrMjQ+PjJdO2NbaD4+Ml09Y1tjW2c+PjJdPj4yXTtpZihjW2g+PjJdfDApZT1jW2NbaD4+Ml0+PjJdfDA7ZWxzZSBlPTA7Y1trPj4yXT1lO2Nbaj4+Ml09MDt3aGlsZSgxKXtpZigoY1tqPj4yXXwwKT49KGNbaz4+Ml18MCkpYnJlYWs7aWYoKGNbKGNbZj4+Ml18MCkrMjg+PjJdfDApPT0oY1soY1toPj4yXXwwKSs4KygoY1tqPj4yXXwwKSo3MnwwKSs0ND4+Ml18MCkpYnJlYWs7Y1tqPj4yXT0oY1tqPj4yXXwwKSsxfWU9Y1tnPj4yXXwwO2lmKChjW2o+PjJdfDApPChjW2s+PjJdfDApKXtrPWUrNHwwO2Nbaz4+Ml09KGNbaz4+Ml18MCkrMTtpPWw7cmV0dXJuIDB9ZWxzZXtrPWUrOHwwO2Nbaz4+Ml09KGNbaz4+Ml18MCkrMTtpPWw7cmV0dXJuIDB9cmV0dXJuIDB9ZnVuY3Rpb24gZXooYixlLGYsZyl7Yj1ifDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7dmFyIGo9MCxrPTAuMCxsPTAuMCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxEPTAsRT0wLEY9MCxHPTA7Rz1pO2k9aSs5NnwwO0Y9Rys3NnwwO3c9Rys3MnwwO3g9Rys2OHwwO2o9Rys2NHwwO209Rys4MHwwO3E9Rys2MHwwO0U9Rys1NnwwO3U9Rys1MnwwO3Q9RysxNnwwO3A9Rys0OHwwO3o9Rys0NHwwO3I9Rys0MHwwO3k9RyszNnwwO0Q9Rys4fDA7QT1HKzMyfDA7Qj1HKzI4fDA7bj1HKzI0fDA7dj1HO2Nbdz4+Ml09YjtjW3g+PjJdPWU7Y1tqPj4yXT1mO2FbbT4+MF09ZztjW0U+PjJdPShjW3c+PjJdfDApKyhjW2o+PjJdfDApO2NbdT4+Ml09MTtiPXQ7Y1tiPj4yXT0wO2NbYis0Pj4yXT0wO2NbcD4+Ml09MDtjW3o+PjJdPTE7Y1tyPj4yXT0wO2NbeT4+Ml09MTtjW0E+PjJdPTA7Y1tCPj4yXT0wO2hbY1t4Pj4yXT4+M109MC4wO2lmKChkW20+PjBdfDApPT0xKWNbcT4+Ml09MTtlbHNle2NbcT4+Ml09MjtjW24+PjJdPTMtKGRbbT4+MF18MCk7d2hpbGUoMSl7aWYoKGNbbj4+Ml18MCk+PShjW2o+PjJdfDApKWJyZWFrO2lmKGFbKGNbdz4+Ml18MCkrKGNbbj4+Ml18MCk+PjBdfDApYnJlYWs7Y1tuPj4yXT0oY1tuPj4yXXwwKSsyfWNbQj4+Ml09KGNbbj4+Ml18MCk8KGNbaj4+Ml18MCkmMTtjW0U+PjJdPShjW3c+PjJdfDApKyhjW24+PjJdXjEpO2Nbdz4+Ml09KGNbdz4+Ml18MCkrKGRbbT4+MF0mMSl9d2hpbGUoMSl7aWYoKGNbdz4+Ml18MCk+Pj4wPj0oY1tFPj4yXXwwKT4+PjApYnJlYWs7aWYoIShkWzE4NDAzKyhkW2Nbdz4+Ml0+PjBdfDApPj4wXSYxKSlicmVhaztjW3c+PjJdPShjW3c+PjJdfDApKyhjW3E+PjJdfDApfWlmKChjW3c+PjJdfDApPj4+MD49KGNbRT4+Ml18MCk+Pj4wKXtjW0Y+PjJdPTA7Rj1jW0Y+PjJdfDA7aT1HO3JldHVybiBGfDB9aWYoKGFbY1t3Pj4yXT4+MF18MCkhPTQ1KXtpZigoYVtjW3c+PjJdPj4wXXwwKT09NDMpY1t3Pj4yXT0oY1t3Pj4yXXwwKSsoY1txPj4yXXwwKX1lbHNle2NbdT4+Ml09LTE7Y1t3Pj4yXT0oY1t3Pj4yXXwwKSsoY1txPj4yXXwwKX13aGlsZSgxKXtpZigoY1t3Pj4yXXwwKT4+PjA+PShjW0U+PjJdfDApPj4+MClicmVhaztiPXQ7ZT1jW2IrND4+Ml18MDtpZighKChkWzE4NDAzKyhkW2Nbdz4+Ml0+PjBdfDApPj4wXSY0fDApIT0wJigoZXwwKTwyMTQ3NDgzNjR8KGV8MCk9PTIxNDc0ODM2NCYoY1tiPj4yXXwwKT4+PjA8MzQzNTk3MzgzNSkpKWJyZWFrO2I9dDtiPWFTKGNbYj4+Ml18MCxjW2IrND4+Ml18MCwxMCwwKXwwO2U9KGFbY1t3Pj4yXT4+MF18MCktNDh8MDtlPVJSKGJ8MCxDfDAsZXwwLCgoZXwwKTwwKTw8MzE+PjMxfDApfDA7Yj10O2NbYj4+Ml09ZTtjW2IrND4+Ml09QztjW3c+PjJdPShjW3c+PjJdfDApKyhjW3E+PjJdfDApO2NbQT4+Ml09KGNbQT4+Ml18MCkrMX13aGlsZSgxKXtpZigoY1t3Pj4yXXwwKT4+PjA+PShjW0U+PjJdfDApPj4+MClicmVhaztpZighKGRbMTg0MDMrKGRbY1t3Pj4yXT4+MF18MCk+PjBdJjQpKWJyZWFrO2Nbdz4+Ml09KGNbdz4+Ml18MCkrKGNbcT4+Ml18MCk7Y1tBPj4yXT0oY1tBPj4yXXwwKSsxO2NbcD4+Ml09KGNbcD4+Ml18MCkrMX1hOmRvIGlmKChjW3c+PjJdfDApPj4+MDwoY1tFPj4yXXwwKT4+PjApe2I6ZG8gaWYoKGFbY1t3Pj4yXT4+MF18MCk9PTQ2KXtjW3c+PjJdPShjW3c+PjJdfDApKyhjW3E+PjJdfDApO3doaWxlKDEpe2lmKChjW3c+PjJdfDApPj4+MD49KGNbRT4+Ml18MCk+Pj4wKWJyZWFrIGI7aWYoIShkWzE4NDAzKyhkW2Nbdz4+Ml0+PjBdfDApPj4wXSY0KSlicmVhayBiO2I9dDtlPWNbYis0Pj4yXXwwO2lmKChlfDApPDIxNDc0ODM2NHwoZXwwKT09MjE0NzQ4MzY0JihjW2I+PjJdfDApPj4+MDwzNDM1OTczODM1KXtiPXQ7Yj1hUyhjW2I+PjJdfDAsY1tiKzQ+PjJdfDAsMTAsMCl8MDtlPShhW2Nbdz4+Ml0+PjBdfDApLTQ4fDA7ZT1SUihifDAsQ3wwLGV8MCwoKGV8MCk8MCk8PDMxPj4zMXwwKXwwO2I9dDtjW2I+PjJdPWU7Y1tiKzQ+PjJdPUM7Y1twPj4yXT0oY1twPj4yXXwwKSstMX1jW3c+PjJdPShjW3c+PjJdfDApKyhjW3E+PjJdfDApO2NbQT4+Ml09KGNbQT4+Ml18MCkrMX19d2hpbGUoMCk7aWYoKGNbdz4+Ml18MCk+Pj4wPChjW0U+PjJdfDApPj4+MCl7aWYoISgoYVtjW3c+PjJdPj4wXXwwKSE9MTAxPyhhW2Nbdz4+Ml0+PjBdfDApIT02OTowKSlvPTM0O2M6ZG8gaWYoKG98MCk9PTM0KXtjW3c+PjJdPShjW3c+PjJdfDApKyhjW3E+PjJdfDApO2NbeT4+Ml09MDtpZigoY1t3Pj4yXXwwKT4+PjA+PShjW0U+PjJdfDApPj4+MClicmVhayBhO2lmKChhW2Nbdz4+Ml0+PjBdfDApIT00NSl7aWYoKGFbY1t3Pj4yXT4+MF18MCk9PTQzKWNbdz4+Ml09KGNbdz4+Ml18MCkrKGNbcT4+Ml18MCl9ZWxzZXtjW3o+PjJdPS0xO2Nbdz4+Ml09KGNbdz4+Ml18MCkrKGNbcT4+Ml18MCl9d2hpbGUoMSl7aWYoKGNbdz4+Ml18MCk+Pj4wPj0oY1tFPj4yXXwwKT4+PjApYnJlYWsgYztpZighKGRbMTg0MDMrKGRbY1t3Pj4yXT4+MF18MCk+PjBdJjQpKWJyZWFrIGM7aWYoKGNbcj4+Ml18MCk8MWU0KWo9KChjW3I+PjJdfDApKjEwfDApKygoYVtjW3c+PjJdPj4wXXwwKS00OCl8MDtlbHNlIGo9MWU0O2Nbcj4+Ml09ajtjW3c+PjJdPShjW3c+PjJdfDApKyhjW3E+PjJdfDApO2NbeT4+Ml09MX19d2hpbGUoMCk7d2hpbGUoMSl7aWYoKGNbdz4+Ml18MCk+Pj4wPj0oY1tFPj4yXXwwKT4+PjApYnJlYWsgYTtpZighKGRbMTg0MDMrKGRbY1t3Pj4yXT4+MF18MCk+PjBdJjEpKWJyZWFrIGE7Y1t3Pj4yXT0oY1t3Pj4yXXwwKSsoY1txPj4yXXwwKX19fXdoaWxlKDApO3E9XyhjW3I+PjJdfDAsY1t6Pj4yXXwwKXwwO2Nbcj4+Ml09cSsoY1twPj4yXXwwKTtpZigoY1tyPj4yXXwwKTwwKXtjW3o+PjJdPS0xO2Nbcj4+Ml09XyhjW3I+PjJdfDAsLTEpfDB9ZWxzZSBjW3o+PjJdPTE7cT10O2RvIGlmKCEoKGNbcT4+Ml18MCk9PTAmKGNbcSs0Pj4yXXwwKT09MCkpe3doaWxlKDEpe2lmKChjW3I+PjJdfDApPD0wKWJyZWFrO209dDtqPWNbbT4+Ml18MDttPWNbbSs0Pj4yXXwwO2lmKChjW3o+PjJdfDApPjApe2lmKChtfDApPjIxNDc0ODM2NHwobXwwKT09MjE0NzQ4MzY0Jmo+Pj4wPj0zNDM1OTczODM2KWJyZWFrO3A9dDtwPWFTKGNbcD4+Ml18MCxjW3ArND4+Ml18MCwxMCwwKXwwO3E9dDtjW3E+PjJdPXA7Y1txKzQ+PjJdPUN9ZWxzZXtxPSRSKGp8MCxtfDAsMTAsMCl8MDtpZigocXwwKSE9MHwoQ3wwKSE9MClicmVhaztwPXQ7cD1fUihjW3A+PjJdfDAsY1twKzQ+PjJdfDAsMTAsMCl8MDtxPXQ7Y1txPj4yXT1wO2NbcSs0Pj4yXT1DfWNbcj4+Ml09KGNbcj4+Ml18MCkrLTF9cD0oY1t1Pj4yXXwwKTwwO3E9dDtvPWNbcT4+Ml18MDtxPWNbcSs0Pj4yXXwwO2I9UVIoMCwwLG98MCxxfDApfDA7dT10O2NbdT4+Ml09cD9iOm87Y1t1KzQ+PjJdPXA/QzpxO2lmKCEoY1tyPj4yXXwwKSl7ej10O2hbRD4+M109KygoY1t6Pj4yXXwwKT4+PjApKzQyOTQ5NjcyOTYuMCorKGNbeis0Pj4yXXwwKTticmVha31oW3Y+PjNdPTEuMDtpZigoY1tyPj4yXXwwKTw9MzA3KXt3aGlsZSgxKXtpZighKChjW3I+PjJdfDApJTIyfDApKWJyZWFrO2hbdj4+M109K2hbdj4+M10qMTAuMDtjW3I+PjJdPShjW3I+PjJdfDApLTF9d2hpbGUoMSl7aWYoKGNbcj4+Ml18MCk8PTApYnJlYWs7aFt2Pj4zXT0raFt2Pj4zXSoxLjBlMjI7Y1tyPj4yXT0oY1tyPj4yXXwwKS0yMn11PXQ7bD0rKChjW3U+PjJdfDApPj4+MCkrNDI5NDk2NzI5Ni4wKisoY1t1KzQ+PjJdfDApO2s9K2hbdj4+M107aWYoKGNbej4+Ml18MCk8MCl7aFtEPj4zXT1sL2s7YnJlYWt9ZWxzZXtoW0Q+PjNdPWwqazticmVha319aWYoKGNbcj4+Ml18MCk+PTM0Mil7dj10O2s9KygoY1t2Pj4yXXwwKT4+PjApKzQyOTQ5NjcyOTYuMCorKGNbdis0Pj4yXXwwKTtpZigoY1t6Pj4yXXwwKTwwKXtoW0Q+PjNdPTAuMCprO2JyZWFrfWVsc2V7aFtEPj4zXT1zKms7YnJlYWt9fXdoaWxlKDEpe2lmKCEoKGNbcj4+Ml18MCklMzA4fDApKWJyZWFrO2hbdj4+M109K2hbdj4+M10qMTAuMDtjW3I+PjJdPShjW3I+PjJdfDApLTF9dT10O2w9KygoY1t1Pj4yXXwwKT4+PjApKzQyOTQ5NjcyOTYuMCorKGNbdSs0Pj4yXXwwKTtrPStoW3Y+PjNdO2lmKChjW3o+PjJdfDApPDApe2hbRD4+M109bC9rO2hbRD4+M109K2hbRD4+M10vMS5lKzMwODticmVha31lbHNle2hbRD4+M109bCprO2hbRD4+M109K2hbRD4+M10qMS5lKzMwODticmVha319ZWxzZSBoW0Q+PjNdPShjW3U+PjJdfDApPDA/LTAuMDowLjA7d2hpbGUoMCk7aFtjW3g+PjJdPj4zXT0raFtEPj4zXTtpZigoKGNbQT4+Ml18MCk+MD8oY1t3Pj4yXXwwKT09KGNbRT4+Ml18MCk6MCkmKGNbeT4+Ml18MCkhPTApaj0oY1tCPj4yXXwwKT09MDtlbHNlIGo9MDtjW0Y+PjJdPWomMTtGPWNbRj4+Ml18MDtpPUc7cmV0dXJuIEZ8MH1mdW5jdGlvbiBmeihiLGQsZSxmKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wO249aTtpPWkrMzJ8MDtnPW4rMjB8MDtoPW4rMTZ8MDtqPW4rMTJ8MDtrPW4rOHwwO2w9bis0fDA7bT1uO2NbaD4+Ml09YjtjW2o+PjJdPWQ7Y1trPj4yXT1lO2NbbD4+Ml09ZjtjW20+PjJdPTA7d2hpbGUoMSl7aWYoIShhWyhjW2g+PjJdfDApKyhjW20+PjJdfDApPj4wXXwwKSlicmVhaztpZigoYVsoY1toPj4yXXwwKSsoY1ttPj4yXXwwKT4+MF18MCk9PTQ2KWJyZWFrO2NbbT4+Ml09KGNbbT4+Ml18MCkrMX1kbyBpZihjW2w+PjJdfDApe2lmKCh6ZChjW2g+PjJdfDAsY1tsPj4yXXwwLGNbbT4+Ml18MCl8MCk9PTA/KGFbKGNbbD4+Ml18MCkrKGNbbT4+Ml18MCk+PjBdfDApPT0wOjApYnJlYWs7Y1tnPj4yXT0wO2U9Y1tnPj4yXXwwO2k9bjtyZXR1cm4gZXwwfXdoaWxlKDApO2NbaD4+Ml09KGNbaD4+Ml18MCkrKChjW20+PjJdfDApKzEpO2NbbT4+Ml09MDt3aGlsZSgxKXtpZighKGFbKGNbaD4+Ml18MCkrKGNbbT4+Ml18MCk+PjBdfDApKWJyZWFrO2lmKChhWyhjW2g+PjJdfDApKyhjW20+PjJdfDApPj4wXXwwKT09NDYpYnJlYWs7Y1ttPj4yXT0oY1ttPj4yXXwwKSsxfWRvIGlmKGNbaz4+Ml18MCl7aWYoKHpkKGNbaD4+Ml18MCxjW2s+PjJdfDAsY1ttPj4yXXwwKXwwKT09MD8oYVsoY1trPj4yXXwwKSsoY1ttPj4yXXwwKT4+MF18MCk9PTA6MClicmVhaztjW2c+PjJdPTA7ZT1jW2c+PjJdfDA7aT1uO3JldHVybiBlfDB9d2hpbGUoMCk7Y1toPj4yXT0oY1toPj4yXXwwKSsoKGNbbT4+Ml18MCkrMSk7aWYoKGNbaj4+Ml18MCkhPTA/KGlnKGNbaD4+Ml18MCxjW2o+PjJdfDApfDApIT0wOjApe2NbZz4+Ml09MDtlPWNbZz4+Ml18MDtpPW47cmV0dXJuIGV8MH1jW2c+PjJdPTE7ZT1jW2c+PjJdfDA7aT1uO3JldHVybiBlfDB9ZnVuY3Rpb24gZ3ooYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MDtoPWk7aT1pKzE2fDA7ZD1oKzEyfDA7ZT1oKzh8MDtmPWgrNHwwO2c9aDtjW2U+PjJdPWE7Y1tmPj4yXT1iO2E6ZG8gaWYoY1tlPj4yXXwwKXtjW2c+PjJdPTA7d2hpbGUoMSl7aWYoKGNbZz4+Ml18MCk+PShjWyhjW2U+PjJdfDApKzQ+PjJdfDApKWJyZWFrIGE7aWYoIShpZyhjWyhjW2NbZT4+Ml0+PjJdfDApKyhjW2c+PjJdPDwzKT4+Ml18MCxjW2Y+PjJdfDApfDApKWJyZWFrO2NbZz4+Ml09KGNbZz4+Ml18MCkrMX1jW2Q+PjJdPTE7Yj1jW2Q+PjJdfDA7aT1oO3JldHVybiBifDB9d2hpbGUoMCk7Y1tkPj4yXT0wO2I9Y1tkPj4yXXwwO2k9aDtyZXR1cm4gYnwwfWZ1bmN0aW9uIGh6KGUsZixnLGgpe2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO3ZhciBqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wO3M9aTtpPWkrNDh8MDtrPXMrMzZ8MDtsPXMrMzJ8MDtqPXMrMjh8MDttPXMrMjR8MDt0PXMrMjB8MDtxPXMrMTZ8MDtyPXMrMTJ8MDtwPXMrOHwwO289cys0fDA7bj1zO2Nbaz4+Ml09ZTtjW2w+PjJdPWY7Y1tqPj4yXT1nO2NbbT4+Ml09aDtjW3Q+PjJdPWNbY1trPj4yXT4+Ml07Y1txPj4yXT0wO2lmKCEoY1soY1t0Pj4yXXwwKSsyOTY+PjJdfDApKXtpPXM7cmV0dXJufWNbbz4+Ml09RmgoY1tjW2s+PjJdPj4yXXwwLGNbaj4+Ml18MCl8MDtpZigoY1tvPj4yXXwwKTwwKXtpPXM7cmV0dXJufWE6ZG8gaWYoKGRbY1tsPj4yXT4+MF18MCk9PTg4KWNbcT4+Ml09Y1soY1trPj4yXXwwKSsxMjg+PjJdO2Vsc2V7Y1twPj4yXT0wO3doaWxlKDEpe2lmKChjW3A+PjJdfDApPj0oY1tjW20+PjJdPj4yXXwwKSlicmVhayBhO2o9Y1twPj4yXXwwO2lmKChjWyhjW2w+PjJdfDApKzI4Pj4yXXwwKT09KGNbKGNbbT4+Ml18MCkrOCsoKGNbcD4+Ml18MCkqNzJ8MCkrNDQ+PjJdfDApKWJyZWFrO2NbcD4+Ml09aisxfWNbcT4+Ml09Y1soY1ttPj4yXXwwKSs4KyhqKjcyfDApKzE2Pj4yXX13aGlsZSgwKTtjW24+PjJdPWJbKGNbbD4+Ml18MCkrMzI+PjFdO2lmKCEoY1txPj4yXXwwKSl7aT1zO3JldHVybn1kbyBpZigoY1tuPj4yXXwwKTwwKWlmKChiWyhjW3E+PjJdfDApKzMyPj4xXXwwKT49MCl7Y1tyPj4yXT1jWyhjWyhjW3E+PjJdfDApKzQ+PjJdfDApKyhiWyhjW3E+PjJdfDApKzMyPj4xXTw8NCk+PjJdO2JyZWFrfWVsc2V7Y1tyPj4yXT0xOTg5NTticmVha31lbHNlIGNbcj4+Ml09Y1soY1soY1txPj4yXXwwKSs0Pj4yXXwwKSsoY1tuPj4yXTw8NCk+PjJdO3doaWxlKDApO2lmKDIhPShpeihjW2s+PjJdfDAsY1tjW3E+PjJdPj4yXXwwLGNbcj4+Ml18MCxjW28+PjJdfDApfDApKXtpPXM7cmV0dXJufWFbY1tsPj4yXT4+MF09MTAxO2k9cztyZXR1cm59ZnVuY3Rpb24gaXooYixkLGUsZil7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTA7cj1pO2k9aSs2NHwwO3A9cisxNnwwO289cjtnPXIrNTJ8MDtoPXIrNDh8MDtqPXIrNDR8MDtrPXIrNDB8MDtsPXIrMzZ8MDttPXIrMzJ8MDtxPXIrMjh8MDtuPXIrMjR8MDtjW2g+PjJdPWI7Y1tqPj4yXT1kO2Nbaz4+Ml09ZTtjW2w+PjJdPWY7Y1ttPj4yXT1jW2NbaD4+Ml0+PjJdO2NbcT4+Ml09Y1soY1soY1ttPj4yXXwwKSsxNj4+Ml18MCkrKGNbbD4+Ml08PDQpPj4yXTtpZihhWyhjW20+PjJdfDApKzE0OCs1Pj4wXXwwKXtjW2c+PjJdPTA7cT1jW2c+PjJdfDA7aT1yO3JldHVybiBxfDB9Y1tuPj4yXT1TYltjWyhjW20+PjJdfDApKzI5Nj4+Ml0mMjU1XShjWyhjW20+PjJdfDApKzMwMD4+Ml18MCwyMCxjW2o+PjJdfDAsY1trPj4yXXwwLGNbcT4+Ml18MCxjWyhjW2g+PjJdfDApKzQ0OD4+Ml18MCl8MDtpZigoY1tuPj4yXXwwKSE9MSl7aWYoKGNbbj4+Ml18MCkhPTImKGNbbj4+Ml18MCkhPTApYngoY1toPj4yXXwwKX1lbHNle2Y9Y1toPj4yXXwwO2lmKChjW2w+PjJdfDApIT0wPzE6KGNbKGNbbT4+Ml18MCkrMjA+PjJdfDApPjIpe209Y1tqPj4yXXwwO3A9Y1trPj4yXXwwO2Nbbz4+Ml09Y1txPj4yXTtjW28rND4+Ml09bTtjW28rOD4+Ml09cDtFaChmLDMwMDQ2LG8pfWVsc2V7cT1jW2s+PjJdfDA7Y1twPj4yXT1jW2o+PjJdO2NbcCs0Pj4yXT1xO0VoKGYsMzAwNzkscCl9Y1soY1toPj4yXXwwKSsxMj4+Ml09MjN9Y1tnPj4yXT1jW24+PjJdO3E9Y1tnPj4yXXwwO2k9cjtyZXR1cm4gcXwwfVxuZnVuY3Rpb24gYk4oYSl7YT1hfDA7dmFyIGQ9MCxmPTAsZz0wLGg9MCxqPTA7aj1pO2k9aSsxNnwwO2c9aisxMnwwO2g9ais4fDA7Zj1qKzR8MDtkPWo7Y1tnPj4yXT1hO2NbaD4+Ml09Y1soY1tnPj4yXXwwKSs0Pj4yXTtjW2Y+PjJdPShjW2g+PjJdfDApKzcyO3doaWxlKDEpe2lmKCEoY1tjW2Y+PjJdPj4yXXwwKSlicmVhaztjW2Q+PjJdPWNbY1tmPj4yXT4+Ml07YT0oY1tkPj4yXXwwKSsxMnwwO2lmKChjW2NbZD4+Ml0+PjJdfDApIT0oY1tnPj4yXXwwKSl7Y1tmPj4yXT1hO2NvbnRpbnVlfWNbY1tmPj4yXT4+Ml09Y1thPj4yXTtpZigoY1soY1tkPj4yXXwwKSs0Pj4yXXwwKT09MSljb250aW51ZTtLZChjW2Q+PjJdfDApfWE9Y1toPj4yXXwwO2lmKChjWyhjW2g+PjJdfDApKzc2Pj4yXXwwKT09KGNbZz4+Ml18MCkpe2NbYSs3Nj4+Ml09MDtoPShjW2g+PjJdfDApKzIyfDA7YltoPj4xXT0oZVtoPj4xXXwwKSYtOTc7aT1qO3JldHVybn1pZigoY1thKzQwPj4yXXwwKSE9Mil7aT1qO3JldHVybn1oPShjW2g+PjJdfDApKzIyfDA7YltoPj4xXT0oZVtoPj4xXXwwKSYtNjU7aT1qO3JldHVybn1mdW5jdGlvbiBjTihiKXtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTA7bT1pO2k9aSszMnwwO2Q9bSsyOHwwO2U9bSsyNHwwO2w9bSsyMHwwO2s9bSsxNnwwO2c9bSsxMnwwO2g9bSs4fDA7Zj1tKzR8MDtqPW07Y1tlPj4yXT1iO2NbbD4+Ml09MDtjW2s+PjJdPWNbY1tlPj4yXT4+Ml07X0ooY1tlPj4yXXwwKTtkbyBpZighKGFbKGNbZT4+Ml18MCkrMTg+PjBdfDApKXtjW2o+PjJdPUpGKGNbZT4+Ml18MCl8MDtiPVZGKGNbZT4+Ml18MCxjW2o+PjJdfDApfDA7aWYoKGJ8MCkhPShjW2o+PjJdfDApPyhjW2o+PjJdfDApIT0oKCgoY1szODRdfDApPj4+MCkvKChjWyhjW2U+PjJdfDApKzMyPj4yXXwwKT4+PjApfDApKzF8MCk6MCl7Y1toPj4yXT1ncigoY1soY1soY1tlPj4yXXwwKSsxMj4+Ml18MCkrNTY+PjJdfDApKzM2fDApfDA7Y1tnPj4yXT1aSihjW2U+PjJdfDAsY1tqPj4yXXwwLGNbaD4+Ml18MCl8MDtpZigoY1tnPj4yXXwwKT4+PjA+KGNbaj4+Ml18MCk+Pj4wKXtjW2Q+PjJdPVFqKDYxOTE5KXwwO2w9Y1tkPj4yXXwwO2k9bTtyZXR1cm4gbHwwfWlmKChjW2c+PjJdfDApPj4+MDwoY1tqPj4yXXwwKT4+PjApY1tsPj4yXT1YSChjW2U+PjJdfDAsMCwwKXwwO2NbZj4+Ml09Y1tqPj4yXTt3aGlsZSgxKXtpZighKChjW2Y+PjJdfDApPj4+MD4oY1tnPj4yXXwwKT4+PjA/KGNbbD4+Ml18MCk9PTA6MCkpYnJlYWs7Y1tsPj4yXT0kSihjW2U+PjJdfDAsY1tnPj4yXXwwLGNbZj4+Ml18MCwxKXwwO2NbZj4+Ml09KGNbZj4+Ml18MCkrLTF9aWYoKChjW2w+PjJdfDApPT0xMDF8KGNbbD4+Ml18MCk9PTApJihjW2g+PjJdfDApPj4+MD4wKXtjW2w+PjJdPUdnKGNbKGNbKGNbZT4+Ml18MCkrMTI+PjJdfDApKzcyPj4yXXwwKXwwO2Z0KChjWyhjWyhjW2U+PjJdfDApKzEyPj4yXXwwKSs1Nj4+Ml18MCkrMzJ8MCwwKTtmdCgoY1soY1soY1tlPj4yXXwwKSsxMj4+Ml18MCkrNTY+PjJdfDApKzM2fDAsMCk7ZnQoKGNbKGNbKGNbZT4+Ml18MCkrMTI+PjJdfDApKzU2Pj4yXXwwKSsyOHwwLGNbZz4+Ml18MCk7YVsoY1tlPj4yXXwwKSsxOT4+MF09MTtjWyhjW2U+PjJdfDApKzQ0Pj4yXT1jW2c+PjJdfWlmKCEoY1tsPj4yXXwwKSlicmVhaztxcihjW2s+PjJdfDApfDA7YnJlYWt9Y1tkPj4yXT1Raig2MTkxNCl8MDtsPWNbZD4+Ml18MDtpPW07cmV0dXJuIGx8MH13aGlsZSgwKTtjW2Q+PjJdPWNbbD4+Ml07bD1jW2Q+PjJdfDA7aT1tO3JldHVybiBsfDB9ZnVuY3Rpb24gZE4oYil7Yj1ifDA7dmFyIGU9MCxmPTAsZz0wLGg9MDtoPWk7aT1pKzE2fDA7ZT1oKzh8MDtmPWgrNHwwO2c9aDtjW2Y+PjJdPWI7Y1tnPj4yXT0wO2I9Y1tmPj4yXXwwO2lmKGNbKGNbZj4+Ml18MCkrNDQ+PjJdfDApe2NbZT4+Ml09Y1tiKzQ0Pj4yXTtnPWNbZT4+Ml18MDtpPWg7cmV0dXJuIGd8MH1pZigoKGRbYisxNz4+MF18MHwwKT09Mj8oZFsoY1tmPj4yXXwwKSs0Pj4wXXwwfDApIT0wOjApPyhkWyhjW2Y+PjJdfDApKzU+PjBdfDB8MCk9PTE6MCl7YVsoY1tmPj4yXXwwKSsxNz4+MF09MTtjW2U+PjJdPTA7Zz1jW2U+PjJdfDA7aT1oO3JldHVybiBnfDB9Yj0oY1tmPj4yXXwwKSsxMDh8MDtjW2I+PjJdPShjW2I+PjJdfDApKzE7Y1tnPj4yXT1ycihjW2Y+PjJdfDAsZFsoY1tmPj4yXXwwKSsyMD4+MF18MCwxKXwwO2NbZT4+Ml09bXIoY1tmPj4yXXwwLGNbZz4+Ml18MCl8MDtnPWNbZT4+Ml18MDtpPWg7cmV0dXJuIGd8MH1mdW5jdGlvbiBlTihiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTA7aD1pO2k9aSsxNnwwO2U9aCsxMnwwO2c9aCs0fDA7Zj1oO2NbZT4+Ml09YjtjW2grOD4+Ml09ZDtjW2c+PjJdPTA7aWYoYVsoY1tlPj4yXXwwKSsxOT4+MF18MCl7Zz1jW2c+PjJdfDA7aT1oO3JldHVybiBnfDB9aWYoKGNbKGNbZT4+Ml18MCkrMjg+PjJdfDApPj4+MDw9MCl7Zz1jW2c+PjJdfDA7aT1oO3JldHVybiBnfDB9Y1tnPj4yXT12ZyhjW2U+PjJdfDAsMSxmLDApfDA7aWYoIShjW2c+PjJdfDApKWNbZz4+Ml09R2coY1tmPj4yXXwwKXwwO2lmKCEoY1tnPj4yXXwwKSl7QnQoY1tmPj4yXXwwKTthWyhjW2U+PjJdfDApKzE5Pj4wXT0xfXlnKGNbZj4+Ml18MCk7Zz1jW2c+PjJdfDA7aT1oO3JldHVybiBnfDB9ZnVuY3Rpb24gZk4oYixlKXtiPWJ8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MDtvPWk7aT1pKzQ4fDA7Zj1vKzM2fDA7Zz1vKzMyfDA7aD1vKzI4fDA7bj1vKzI0fDA7bT1vKzIwfDA7az1vKzh8MDtsPW87aj1vKzE2fDA7Y1tnPj4yXT1iO2NbaD4+Ml09ZTtjW2o+PjJdPTA7aWYoKChjW2g+PjJdfDApIT0wPyhkWyhjW2c+PjJdfDApKzU+PjBdfDApIT00OjApPyhjW2NbKGNbZz4+Ml18MCkrNjg+PjJdPj4yXXwwKSE9MDowKXthWyhjW2c+PjJdfDApKzIwPj4wXT0xO2NbbT4+Ml09MDt3aGlsZSgxKXtpZighKGFbKGNbaD4+Ml18MCkrKGNbbT4+Ml18MCk+PjBdfDApKWJyZWFrO2Nbaj4+Ml09KGNbaj4+Ml18MCkrKGFbKGNbaD4+Ml18MCkrKGNbbT4+Ml18MCk+PjBdfDApO2NbbT4+Ml09KGNbbT4+Ml18MCkrMX1pZihhWyhjW2c+PjJdfDApKzg+PjBdfDApe2I9cHMoY1tnPj4yXXwwKXwwO2U9KGNbZz4+Ml18MCkrODB8MDtjW2U+PjJdPWI7Y1tlKzQ+PjJdPUN9cD0oY1tnPj4yXXwwKSs4MHwwO2I9Y1twKzQ+PjJdfDA7ZT1rO2NbZT4+Ml09Y1twPj4yXTtjW2UrND4+Ml09YjtlPWs7ZT1SdChjWyhjW2c+PjJdfDApKzY4Pj4yXXwwLGNbZT4+Ml18MCxjW2UrND4+Ml18MCwoKGNbMzg0XXwwKS8oY1soY1tnPj4yXXwwKSsxNjA+PjJdfDApfDApKzF8MCl8MDtjW24+PjJdPWU7aWYoKCgoMD09KGV8MCk/KHE9Y1soY1tnPj4yXXwwKSs2OD4+Ml18MCxiPWNbaD4+Ml18MCxlPWNbbT4+Ml18MCxwPWsscD1SUihjW3A+PjJdfDAsY1twKzQ+PjJdfDAsNCwwKXwwLHA9SWcocSxiLGUscCxDKXwwLGNbbj4+Ml09cCwwPT0ocHwwKSk6MCk/KHA9Y1soY1tnPj4yXXwwKSs2OD4+Ml18MCxlPWssZT1SUihjW2U+PjJdfDAsY1tlKzQ+PjJdfDAsNCwwKXwwLHE9Y1ttPj4yXXwwLHE9UlIoZXwwLEN8MCxxfDAsKChxfDApPDApPDwzMT4+MzF8MCl8MCxxPVJ0KHAscSxDLGNbbT4+Ml18MCl8MCxjW24+PjJdPXEsMD09KHF8MCkpOjApPyhwPWNbKGNbZz4+Ml18MCkrNjg+PjJdfDAsZT1rLGU9UlIoY1tlPj4yXXwwLGNbZSs0Pj4yXXwwLDQsMCl8MCxxPWNbbT4+Ml18MCxxPVJSKGV8MCxDfDAscXwwLCgocXwwKTwwKTw8MzE+PjMxfDApfDAscT1SUihxfDAsQ3wwLDQsMCl8MCxxPVJ0KHAscSxDLGNbaj4+Ml18MCl8MCxjW24+PjJdPXEsMD09KHF8MCkpOjApPyhwPWNbKGNbZz4+Ml18MCkrNjg+PjJdfDAsZT1rLGU9UlIoY1tlPj4yXXwwLGNbZSs0Pj4yXXwwLDQsMCl8MCxxPWNbbT4+Ml18MCxxPVJSKGV8MCxDfDAscXwwLCgocXwwKTwwKTw8MzE+PjMxfDApfDAscT1SUihxfDAsQ3wwLDgsMCl8MCxxPUlnKHAsMjU5MDEsOCxxLEMpfDAsY1tuPj4yXT1xLDA9PShxfDApKTowKXtwPShjW20+PjJdfDApKzIwfDA7cT0oY1tnPj4yXXwwKSs4MHwwO2U9cTtwPVJSKGNbZT4+Ml18MCxjW2UrND4+Ml18MCxwfDAsKChwfDApPDApPDwzMT4+MzF8MCl8MDtjW3E+PjJdPXA7Y1txKzQ+PjJdPUM7cT1YaShjWyhjW2c+PjJdfDApKzY4Pj4yXXwwLGwpfDA7Y1tuPj4yXT1xO2lmKDA9PShxfDApPyhwPWwsYj1jW3ArND4+Ml18MCxxPShjW2c+PjJdfDApKzgwfDAsZT1jW3ErND4+Ml18MCwoYnwwKT4oZXwwKXwoKGJ8MCk9PShlfDApPyhjW3A+PjJdfDApPj4+MD4oY1txPj4yXXwwKT4+PjA6MCkpOjApe3E9KGNbZz4+Ml18MCkrODB8MDtjW24+PjJdPXVyKGNbKGNbZz4+Ml18MCkrNjg+PjJdfDAsY1txPj4yXXwwLGNbcSs0Pj4yXXwwKXwwfWNbZj4+Ml09Y1tuPj4yXTtxPWNbZj4+Ml18MDtpPW87cmV0dXJuIHF8MH1jW2Y+PjJdPWNbbj4+Ml07cT1jW2Y+PjJdfDA7aT1vO3JldHVybiBxfDB9Y1tmPj4yXT0wO3E9Y1tmPj4yXXwwO2k9bztyZXR1cm4gcXwwfWZ1bmN0aW9uIGdOKGYpe2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wO3U9aTtpPWkrNDh8MDtnPXUrNDR8MDtzPXUrNDB8MDtrPXUrMzZ8MDtyPXUrMzJ8MDtqPXUrMjh8MDtoPXUrMjR8MDttPXUrMjB8MDtwPXUrMTZ8MDtsPXUrMTJ8MDtxPXUrOHwwO249dSs0fDA7bz11O2NbZz4+Ml09ZjtjW3M+PjJdPTA7Y1tqPj4yXT0wO2NbbT4+Ml09MDtjW3A+PjJdPWNbKGNbZz4+Ml18MCkrMTY+PjJdO2NbbD4+Ml09KChjWyhjW3A+PjJdfDApKzE1Nj4+Ml18MCk+Pj4wKS8oKGNbKGNbcD4+Ml18MCkrMTYwPj4yXXwwKT4+PjApfDA7Zj0oY1twPj4yXXwwKSsyMXwwO2FbZj4+MF09ZFtmPj4wXXwwfDQ7Y1tyPj4yXT0oKGNbKGNbZz4+Ml18MCkrMjA+PjJdfDApLTEmfigoY1tsPj4yXXwwKS0xKSkrMTtjW2s+PjJdPWNbKGNbcD4+Ml18MCkrMjg+PjJdO2RvIGlmKChjWyhjW2c+PjJdfDApKzIwPj4yXXwwKT4+PjA8PShjW2s+PjJdfDApPj4+MClpZigoKGNbcj4+Ml18MCkrKGNbbD4+Ml18MCktMXwwKT4+PjA+KGNbaz4+Ml18MCk+Pj4wKXtjW2o+PjJdPShjW2s+PjJdfDApKzEtKGNbcj4+Ml18MCk7YnJlYWt9ZWxzZXtjW2o+PjJdPWNbbD4+Ml07YnJlYWt9ZWxzZSBjW2o+PjJdPShjWyhjW2c+PjJdfDApKzIwPj4yXXwwKS0oY1tyPj4yXXwwKSsxO3doaWxlKDApO2NbaD4+Ml09MDt3aGlsZSgxKXtpZighKChjW2g+PjJdfDApPChjW2o+PjJdfDApPyhjW3M+PjJdfDApPT0wOjApKWJyZWFrO2NbcT4+Ml09KGNbcj4+Ml18MCkrKGNbaD4+Ml18MCk7aWYoKGNbcT4+Ml18MCkhPShjWyhjW2c+PjJdfDApKzIwPj4yXXwwKT8obmooY1soY1twPj4yXXwwKSs2MD4+Ml18MCxjW3E+PjJdfDApfDApIT0wOjApe2Y9aHMoY1twPj4yXXwwLGNbcT4+Ml18MCl8MDtjW24+PjJdPWY7aWYoZil7aWYoKGVbKGNbbj4+Ml18MCkrMjQ+PjFdfDApJjgpY1ttPj4yXT0xO0pzKGNbbj4+Ml18MCl9fWVsc2UgdD0xMDtpZigoKHR8MCk9PTEwPyh0PTAsKGNbcT4+Ml18MCkhPSgoKGNbMzg0XXwwKS8oY1soY1twPj4yXXwwKSsxNjA+PjJdfDApfDApKzF8MCkpOjApPyhjW3M+PjJdPXZnKGNbcD4+Ml18MCxjW3E+PjJdfDAsbiwwKXwwLChjW3M+PjJdfDApPT0wKTowKXtjW3M+PjJdPWhOKGNbbj4+Ml18MCl8MDtpZigoZVsoY1tuPj4yXXwwKSsyND4+MV18MCkmOCljW20+PjJdPTE7SnMoY1tuPj4yXXwwKX1jW2g+PjJdPShjW2g+PjJdfDApKzF9aWYoISgoY1tzPj4yXXwwKT09MCYoY1ttPj4yXXwwKSE9MCkpe3Q9Y1twPj4yXXwwO3Q9dCsyMXwwO3I9YVt0Pj4wXXwwO3I9ciYyNTU7cj1yJi01O3I9ciYyNTU7YVt0Pj4wXT1yO3Q9Y1tzPj4yXXwwO2k9dTtyZXR1cm4gdHwwfWNbaD4+Ml09MDt3aGlsZSgxKXtpZigoY1toPj4yXXwwKT49KGNbaj4+Ml18MCkpYnJlYWs7Y1tvPj4yXT1ocyhjW3A+PjJdfDAsKGNbcj4+Ml18MCkrKGNbaD4+Ml18MCl8MCl8MDtpZihjW28+PjJdfDApe3Q9KGNbbz4+Ml18MCkrMjR8MDtiW3Q+PjFdPWVbdD4+MV18MHw4O0pzKGNbbz4+Ml18MCl9Y1toPj4yXT0oY1toPj4yXXwwKSsxfXQ9Y1twPj4yXXwwO3Q9dCsyMXwwO3I9YVt0Pj4wXXwwO3I9ciYyNTU7cj1yJi01O3I9ciYyNTU7YVt0Pj4wXT1yO3Q9Y1tzPj4yXXwwO2k9dTtyZXR1cm4gdHwwfWZ1bmN0aW9uIGhOKGEpe2E9YXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wO2s9aTtpPWkrMTZ8MDtmPWsrMTJ8MDtnPWsrOHwwO2g9ays0fDA7aj1rO2NbZz4+Ml09YTtjW2g+PjJdPWNbKGNbZz4+Ml18MCkrMTY+PjJdO2Nbaj4+Ml09MDtpZigoZFsoY1toPj4yXXwwKSsxNz4+MF18MHwwKT09Mj8oY1tqPj4yXT1pTihjW2g+PjJdfDApfDAsKGNbaj4+Ml18MCkhPTApOjApe2NbZj4+Ml09Y1tqPj4yXTtqPWNbZj4+Ml18MDtpPWs7cmV0dXJuIGp8MH1qcyhjW2c+PjJdfDApO2RvIGlmKChjWyhjW2g+PjJdfDApKzYwPj4yXXwwKSE9MD8ocWooY1soY1toPj4yXXwwKSs2MD4+Ml18MCxjWyhjW2c+PjJdfDApKzIwPj4yXXwwKXwwKT09MDowKXtpZigoY1soY1tnPj4yXXwwKSsyMD4+Ml18MCk+Pj4wPihjWyhjW2g+PjJdfDApKzMyPj4yXXwwKT4+PjApe2lmKChkWyhjW2g+PjJdfDApKzE3Pj4wXXwwfDApPT00KWJyZWFrO2E9KGNbZz4+Ml18MCkrMjR8MDtiW2E+PjFdPWVbYT4+MV18MHw4O2JyZWFrfWNbaj4+Ml09ak4oY1tnPj4yXXwwKXwwO2lmKGNbaj4+Ml18MCl7Y1tmPj4yXT1jW2o+PjJdO2o9Y1tmPj4yXXwwO2k9aztyZXR1cm4ganwwfX13aGlsZSgwKTthPShjW2c+PjJdfDApKzI0fDA7YlthPj4xXT1lW2E+PjFdfDB8NDtpZigoY1soY1toPj4yXXwwKSsxMDQ+PjJdfDApPjApY1tqPj4yXT13dChjW2c+PjJdfDApfDA7aWYoKGNbKGNbaD4+Ml18MCkrMjg+PjJdfDApPj4+MDwoY1soY1tnPj4yXXwwKSsyMD4+Ml18MCk+Pj4wKWNbKGNbaD4+Ml18MCkrMjg+PjJdPWNbKGNbZz4+Ml18MCkrMjA+PjJdO2NbZj4+Ml09Y1tqPj4yXTtqPWNbZj4+Ml18MDtpPWs7cmV0dXJuIGp8MH1mdW5jdGlvbiBpTihiKXtiPWJ8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wO2w9aTtpPWkrMzJ8MDtoPWwrMjB8MDtqPWwrMTZ8MDtrPWwrMTJ8MDtnPWwrOHwwO2U9bCs0fDA7Zj1sO2Nbaj4+Ml09YjtjW2s+PjJdPTA7Y1tnPj4yXT1jW2Nbaj4+Ml0+PjJdO2I9Y1tqPj4yXXwwO2lmKGNbKGNbaj4+Ml18MCkrNDQ+PjJdfDApe2NbaD4+Ml09Y1tiKzQ0Pj4yXTtrPWNbaD4+Ml18MDtpPWw7cmV0dXJuIGt8MH1pZigoQnIoYil8MCk9PTA/KGRbKGNbaj4+Ml18MCkrNT4+MF18MCkhPTI6MCl7Yj1raihjWyhjW2o+PjJdfDApKzI4Pj4yXXwwKXwwO2NbKGNbaj4+Ml18MCkrNjA+PjJdPWI7aWYoIShjWyhjW2o+PjJdfDApKzYwPj4yXXwwKSl7Y1toPj4yXT03O2s9Y1toPj4yXXwwO2k9bDtyZXR1cm4ga3wwfWRvIGlmKCEoY1tjWyhjW2o+PjJdfDApKzY4Pj4yXT4+Ml18MCkpe2lmKChkWyhjW2o+PjJdfDApKzU+PjBdfDApPT00KXtrTihjWyhjW2o+PjJdfDApKzY4Pj4yXXwwKTticmVha31jW2U+PjJdPTY7Yj1jW2U+PjJdfDA7aWYoYVsoY1tqPj4yXXwwKSsxMz4+MF18MCl7Y1tlPj4yXT1ifDQxMDQ7Y1tmPj4yXT1jWzExXX1lbHNle2NbZT4+Ml09YnwyMDQ4O2NbZj4+Ml09MH1jW2s+PjJdPWxOKGNbaj4+Ml18MCl8MDtpZighKGNbaz4+Ml18MCkpY1trPj4yXT1UdChjW2c+PjJdfDAsY1soY1tqPj4yXXwwKSsxODA+PjJdfDAsY1soY1tqPj4yXXwwKSs2OD4+Ml18MCxjW2U+PjJdfDAsY1tmPj4yXXwwKXwwfXdoaWxlKDApO2lmKCEoY1trPj4yXXwwKSl7Y1soY1tqPj4yXXwwKSs0OD4+Ml09MDtnPShjW2o+PjJdfDApKzgwfDA7Y1tnPj4yXT0wO2NbZys0Pj4yXT0wO2FbKGNbaj4+Ml18MCkrMjA+PjBdPTA7Zz0oY1tqPj4yXXwwKSs4OHwwO2NbZz4+Ml09MDtjW2crND4+Ml09MDtjW2s+PjJdPUR0KGNbaj4+Ml18MCl8MH19Yj1jW2o+PjJdfDA7aWYoY1trPj4yXXwwKXtwaihjW2IrNjA+PjJdfDApO2NbKGNbaj4+Ml18MCkrNjA+PjJdPTB9ZWxzZSBhW2IrMTc+PjBdPTM7Y1toPj4yXT1jW2s+PjJdO2s9Y1toPj4yXXwwO2k9bDtyZXR1cm4ga3wwfWZ1bmN0aW9uIGpOKGEpe2E9YXwwO3ZhciBkPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wO209aTtpPWkrMzJ8MDtkPW0rMjh8MDtmPW0rMjR8MDtrPW0rMjB8MDtsPW0rMTZ8MDtnPW0rMTJ8MDtqPW0rOHwwO2g9bTtjW2Y+PjJdPWE7Y1trPj4yXT1jWyhjW2Y+PjJdfDApKzE2Pj4yXTtvPShjW2s+PjJdfDApKzgwfDA7bj1jW28rND4+Ml18MDthPWg7Y1thPj4yXT1jW28+PjJdO2NbYSs0Pj4yXT1uO2Nbaj4+Ml09Y1soY1tmPj4yXXwwKSs0Pj4yXTtjW2c+PjJdPWdzKGNbaz4+Ml18MCxjW2o+PjJdfDApfDA7YT0oY1tmPj4yXXwwKSsyNHwwO2JbYT4+MV09ZVthPj4xXXwwfDg7YT1oO2NbbD4+Ml09UnQoY1soY1trPj4yXXwwKSs2OD4+Ml18MCxjW2E+PjJdfDAsY1thKzQ+PjJdfDAsY1soY1tmPj4yXXwwKSsyMD4+Ml18MCl8MDtpZihjW2w+PjJdfDApe2NbZD4+Ml09Y1tsPj4yXTtvPWNbZD4+Ml18MDtpPW07cmV0dXJuIG98MH1wPWNbKGNbaz4+Ml18MCkrNjg+PjJdfDA7YT1jW2o+PjJdfDA7bj1jWyhjW2s+PjJdfDApKzE2MD4+Ml18MDtvPWg7bz1SUihjW28+PjJdfDAsY1tvKzQ+PjJdfDAsNCwwKXwwO2NbbD4+Ml09SWcocCxhLG4sbyxDKXwwO2lmKGNbbD4+Ml18MCl7Y1tkPj4yXT1jW2w+PjJdO3A9Y1tkPj4yXXwwO2k9bTtyZXR1cm4gcHwwfW89Y1soY1trPj4yXXwwKSs2OD4+Ml18MDtuPWg7cD1jWyhjW2s+PjJdfDApKzE2MD4+Ml18MDtwPVJSKGNbbj4+Ml18MCxjW24rND4+Ml18MCxwfDAsKChwfDApPDApPDwzMT4+MzF8MCl8MDtwPVJSKHB8MCxDfDAsNCwwKXwwO2NbbD4+Ml09UnQobyxwLEMsY1tnPj4yXXwwKXwwO2lmKGNbbD4+Ml18MCl7Y1tkPj4yXT1jW2w+PjJdO3A9Y1tkPj4yXXwwO2k9bTtyZXR1cm4gcHwwfWVsc2V7bz04KyhjWyhjW2s+PjJdfDApKzE2MD4+Ml18MCl8MDtwPShjW2s+PjJdfDApKzgwfDA7bj1wO289UlIoY1tuPj4yXXwwLGNbbis0Pj4yXXwwLG98MCwoKG98MCk8MCk8PDMxPj4zMXwwKXwwO2NbcD4+Ml09bztjW3ArND4+Ml09QztwPShjW2s+PjJdfDApKzQ4fDA7Y1twPj4yXT0oY1twPj4yXXwwKSsxO2NbbD4+Ml09bGooY1soY1trPj4yXXwwKSs2MD4+Ml18MCxjWyhjW2Y+PjJdfDApKzIwPj4yXXwwKXwwO3A9U3QoY1trPj4yXXwwLGNbKGNbZj4+Ml18MCkrMjA+PjJdfDApfDA7Y1tsPj4yXT1jW2w+PjJdfHA7Y1tkPj4yXT1jW2w+PjJdO3A9Y1tkPj4yXXwwO2k9bTtyZXR1cm4gcHwwfXJldHVybiAwfWZ1bmN0aW9uIGtOKGEpe2E9YXwwO3ZhciBiPTAsZD0wO2I9aTtpPWkrMTZ8MDtkPWI7Y1tkPj4yXT1hO1R0KDAsMCxjW2Q+PjJdfDAsMCwtMSl8MDtpPWI7cmV0dXJufWZ1bmN0aW9uIGxOKGIpe2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wO2g9aTtpPWkrMTZ8MDtkPWgrMTJ8MDtlPWgrOHwwO2Y9aCs0fDA7Zz1oO2NbZT4+Ml09YjtjW2Y+PjJdPTA7aWYoYVsoY1tlPj4yXXwwKSsxMz4+MF18MCl7Y1tkPj4yXT0wO2c9Y1tkPj4yXXwwO2k9aDtyZXR1cm4gZ3wwfWlmKCEoY1soY1tlPj4yXXwwKSsyOD4+Ml18MCkpe2NbZD4+Ml09MDtnPWNbZD4+Ml18MDtpPWg7cmV0dXJuIGd8MH1jW2c+PjJdPUFpKGNbKGNbZT4+Ml18MCkrNjQ+PjJdfDAsMjAsZil8MDtpZigoY1tnPj4yXXwwKSE9MTIpe2lmKChjW2c+PjJdfDApPT0wJihjW2Y+PjJdfDApIT0wKWNbZz4+Ml09MTAzMn1lbHNlIGNbZz4+Ml09MDtjW2Q+PjJdPWNbZz4+Ml07Zz1jW2Q+PjJdfDA7aT1oO3JldHVybiBnfDB9ZnVuY3Rpb24gbU4oYSxkLGYsZyl7YT1hfDA7ZD1kfDA7Zj1mfDA7Zz1nfDA7dmFyIGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MDtvPWk7aT1pKzMyfDA7aD1vKzIwfDA7aj1vKzE2fDA7az1vKzEyfDA7bD1vKzh8MDttPW8rNHwwO249bztjW2o+PjJdPWE7Y1trPj4yXT1kO2NbbD4+Ml09ZjtjW20+PjJdPWc7Zj1jW2o+PjJdfDA7ZG8gaWYoY1soY1tqPj4yXXwwKSsxNDQ+PjJdfDApe2c9Y1tmKzE0ND4+Ml18MDtjW24+PjJdPWc7Y1tjW20+PjJdPj4yXT1nO2NbKGNbaj4+Ml18MCkrMTQ0Pj4yXT1jWyhjW24+PjJdfDApKzEyPj4yXTtjWyhjW24+PjJdfDApKzEyPj4yXT0wO1ZSKGNbKGNbbj4+Ml18MCkrOD4+Ml18MCwwLGVbKGNbaj4+Ml18MCkrMTQ4Pj4xXXwwfDApfDB9ZWxzZXtnPWtnKDQwKyhlW2YrMTQ4Pj4xXXwwKXwwLDApfDA7Y1tuPj4yXT1nO2NbY1ttPj4yXT4+Ml09ZztpZihjW24+PjJdfDApe2NbKGNbbj4+Ml18MCkrOD4+Ml09KGNbbj4+Ml18MCkrNDA7YlsoY1tuPj4yXXwwKSsyND4+MV09MzI7YlsoY1tuPj4yXXwwKSsyNj4+MV09MTtjWyhjW24+PjJdfDApKzE2Pj4yXT1jW2o+PjJdO2JyZWFrfW09Y1soY1tqPj4yXXwwKSs2ND4+Ml18MDtuPWNbKGNbaj4+Ml18MCkrMTYwPj4yXXwwO249YVMoKGNbaz4+Ml18MCktMXwwLDAsbnwwLCgobnwwKTwwKTw8MzE+PjMxfDApfDA7TXMobSxuLEMsY1tsPj4yXXwwKXwwO2NbaD4+Ml09NztuPWNbaD4+Ml18MDtpPW87cmV0dXJuIG58MH13aGlsZSgwKTtjWyhjW24+PjJdfDApKzIwPj4yXT1jW2s+PjJdO2NbKGNbbj4+Ml18MCkrND4+Ml09Y1tsPj4yXTtuPShjW2o+PjJdfDApKzEyOHwwO2Nbbj4+Ml09KGNbbj4+Ml18MCkrMTtjW2g+PjJdPTA7bj1jW2g+PjJdfDA7aT1vO3JldHVybiBufDB9ZnVuY3Rpb24gbk4oYSxmLGcpe2E9YXwwO2Y9ZnwwO2c9Z3wwO3ZhciBoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTA7bz1pO2k9aSszMnwwO2g9bysyMHwwO2o9bysxNnwwO2s9bysxMnwwO2w9bys4fDA7bT1vKzR8MDtuPW87Y1tqPj4yXT1hO2Nbaz4+Ml09ZjtjW2w+PjJdPWc7aWYoKGRbKGNbaj4+Ml18MCkrMzM+PjBdfDApPT0yKXtjW2g+PjJdPTA7bj1jW2g+PjJdfDA7aT1vO3JldHVybiBufDB9Zz1vTihjW2o+PjJdfDApfDA7aWYoKGd8MCk+KGNbKGNbaj4+Ml18MCkrMjA+PjJdfDApKXtjW20+PjJdPWNbKGNbaj4+Ml18MCkrOD4+Ml07d2hpbGUoMSl7aWYoIShjW20+PjJdfDApKWJyZWFrO2lmKChiWyhjW20+PjJdfDApKzI2Pj4xXXwwKT09MD8oZVsoY1ttPj4yXXwwKSsyND4+MV0mOHwwKT09MDowKWJyZWFrO2NbbT4+Ml09Y1soY1ttPj4yXXwwKSszNj4+Ml19Y1soY1tqPj4yXXwwKSs4Pj4yXT1jW20+PjJdO2E6ZG8gaWYoIShjW20+PjJdfDApKXtjW20+PjJdPWNbKGNbaj4+Ml18MCkrND4+Ml07d2hpbGUoMSl7aWYoIShjW20+PjJdfDApKWJyZWFrIGE7aWYoIShiWyhjW20+PjJdfDApKzI2Pj4xXXwwKSlicmVhayBhO2NbbT4+Ml09Y1soY1ttPj4yXXwwKSszNj4+Ml19fXdoaWxlKDApO2lmKChjW20+PjJdfDApIT0wPyhjW24+PjJdPVliW2NbKGNbaj4+Ml18MCkrMzY+PjJdJjI1NV0oY1soY1tqPj4yXXwwKSs0MD4+Ml18MCxjW20+PjJdfDApfDAsKGNbbj4+Ml18MCkhPTAmKGNbbj4+Ml18MCkhPTUpOjApe2NbaD4+Ml09Y1tuPj4yXTtuPWNbaD4+Ml18MDtpPW87cmV0dXJuIG58MH19bj1PYltjWzE0ND4+Ml0mMjU1XShjWyhjW2o+PjJdfDApKzQ0Pj4yXXwwLGNbaz4+Ml18MCwyKXwwO2NbY1tsPj4yXT4+Ml09bjtjW2g+PjJdPShjW2NbbD4+Ml0+PjJdfDApPT0wPzc6MDtuPWNbaD4+Ml18MDtpPW87cmV0dXJuIG58MH1mdW5jdGlvbiBvTihhKXthPWF8MDt2YXIgYj0wLGQ9MDtiPWk7aT1pKzE2fDA7ZD1iO2NbZD4+Ml09YTthPVRiW2NbMTQwPj4yXSYyNTVdKGNbKGNbZD4+Ml18MCkrNDQ+PjJdfDApfDA7aT1iO3JldHVybiBhfDB9ZnVuY3Rpb24gcE4oYSl7YT1hfDA7dmFyIGI9MCxkPTA7ZD1pO2k9aSsxNnwwO2I9ZDtjW2I+PjJdPWE7aT1kO3JldHVybiBjWyhjW2I+PjJdfDApKzEwOD4+Ml18MH1mdW5jdGlvbiBxTihmKXtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MDtyPWk7aT1pKzQ4fDA7bj1yKzQwfDA7bz1yKzM2fDA7bD1yKzMyfDA7cT1yKzI4fDA7cD1yKzI0fDA7aD1yKzIwfDA7az1yKzEyfDA7bT1yKzh8MDtqPXIrNHwwO2c9cjtjW28+PjJdPWY7Y1toPj4yXT0wO2NbbD4+Ml09cksoY1tjW28+PjJdPj4yXXwwKXwwO2lmKGNbbD4+Ml18MCl7Y1tuPj4yXT1jW2w+PjJdO3E9Y1tuPj4yXXwwO2k9cjtyZXR1cm4gcXwwfWNbbD4+Ml09WEYoY1tvPj4yXXwwLDEscSwwKXwwO2lmKGNbbD4+Ml18MCl7Y1tuPj4yXT1jW2w+PjJdO3E9Y1tuPj4yXXwwO2k9cjtyZXR1cm4gcXwwfWY9Z3IoKGNbKGNbcT4+Ml18MCkrNTY+PjJdfDApKzI4fDApfDA7Y1tyKzE2Pj4yXT1mO2NbcD4+Ml09ZjtGZyhjW2Nbbz4+Ml0+PjJdfDAsaCk7aWYoISgoY1twPj4yXXwwKSE9MD8oZVIoKGNbKGNbcT4+Ml18MCkrNTY+PjJdfDApKzI0fDAsKGNbKGNbcT4+Ml18MCkrNTY+PjJdfDApKzkyfDAsNCl8MCk9PTA6MCkpY1twPj4yXT1jW2g+PjJdO2E6ZG8gaWYoKGNbcD4+Ml18MCk+MCl7Y1tqPj4yXT1jWyhjW3E+PjJdfDApKzU2Pj4yXTtjW2w+PjJdPTI2O2I6ZG8gaWYoIShlUihjW2o+PjJdfDAsNDE3OTYsMTYpfDApKXtpZigoZFsoY1tqPj4yXXwwKSsxOD4+MF18MHwwKT4yKXtmPShjW28+PjJdfDApKzIyfDA7YltmPj4xXT1lW2Y+PjFdfDB8MX1pZigoZFsoY1tqPj4yXXwwKSsxOT4+MF18MHwwKTw9Mil7ZG8gaWYoKGRbKGNbaj4+Ml18MCkrMTk+PjBdfDB8MCk9PTI/KChlWyhjW28+PjJdfDApKzIyPj4xXXwwKSYxNnwwKT09MDowKXtjW2c+PjJdPTA7Y1tsPj4yXT14SyhjW2Nbbz4+Ml0+PjJdfDAsZyl8MDtpZihjW2w+PjJdfDApYnJlYWsgYjtpZihjW2c+PjJdfDApe2NbbD4+Ml09MjY7YnJlYWt9UUIoY1txPj4yXXwwKTtjW24+PjJdPTA7cT1jW24+PjJdfDA7aT1yO3JldHVybiBxfDB9d2hpbGUoMCk7aWYoKGVSKChjW2o+PjJdfDApKzIxfDAsNDQwNDksMyl8MCk9PTA/KGNbaz4+Ml09KGRbKGNbaj4+Ml18MCkrMTY+PjBdfDApPDw4fChkWyhjW2o+PjJdfDApKzE3Pj4wXXwwKTw8MTYsISgoKGNbaz4+Ml18MCk+Pj4wPjY1NTM2PzE6KChjW2s+PjJdfDApLTEmY1trPj4yXXwwKSE9MCl8KGNbaz4+Ml18MCk+Pj4wPD0yNTYpKTowKXtjW20+PjJdPShjW2s+PjJdfDApLShkWyhjW2o+PjJdfDApKzIwPj4wXXwwKTtpZigoY1trPj4yXXwwKSE9KGNbKGNbbz4+Ml18MCkrMzI+PjJdfDApKXtRQihjW3E+PjJdfDApO2NbKGNbbz4+Ml18MCkrMzY+PjJdPWNbbT4+Ml07Y1soY1tvPj4yXXwwKSszMj4+Ml09Y1trPj4yXTtVaShjW28+PjJdfDApO2NbbD4+Ml09VmkoY1tjW28+PjJdPj4yXXwwLChjW28+PjJdfDApKzMyfDAsKGNbaz4+Ml18MCktKGNbbT4+Ml18MCl8MCl8MDtjW24+PjJdPWNbbD4+Ml07cT1jW24+PjJdfDA7aT1yO3JldHVybiBxfDB9aWYoKGNbKGNbKGNbbz4+Ml18MCkrND4+Ml18MCkrMjQ+PjJdJjY1NTM2fDApPT0wPyhjW3A+PjJdfDApPihjW2g+PjJdfDApOjApe2NbbD4+Ml09UWooNjExOTEpfDA7YnJlYWt9aWYoKGNbbT4+Ml18MCk+Pj4wPj00ODApe2NbKGNbbz4+Ml18MCkrMzI+PjJdPWNbaz4+Ml07Y1soY1tvPj4yXXwwKSszNj4+Ml09Y1ttPj4yXTttPShncigoY1tqPj4yXXwwKSs1MnwwKXwwKSE9MDthWyhjW28+PjJdfDApKzE3Pj4wXT1tPzE6MDttPShncigoY1tqPj4yXXwwKSs2NHwwKXwwKSE9MDthWyhjW28+PjJdfDApKzE4Pj4wXT1tPzE6MDticmVhayBhfX19fXdoaWxlKDApO1FCKGNbcT4+Ml18MCk7Y1soY1tvPj4yXXwwKSsxMj4+Ml09MDtjW24+PjJdPWNbbD4+Ml07cT1jW24+PjJdfDA7aT1yO3JldHVybiBxfDB9d2hpbGUoMCk7YlsoY1tvPj4yXXwwKSsyND4+MV09KCgoY1soY1tvPj4yXXwwKSszNj4+Ml18MCktMTI8PDY+Pj4wKS8yNTV8MCktMjM7YlsoY1tvPj4yXXwwKSsyNj4+MV09KCgoY1soY1tvPj4yXXwwKSszNj4+Ml18MCktMTI8PDU+Pj4wKS8yNTV8MCktMjM7YlsoY1tvPj4yXXwwKSsyOD4+MV09KGNbKGNbbz4+Ml18MCkrMzY+PjJdfDApLTM1O2JbKGNbbz4+Ml18MCkrMzA+PjFdPSgoKGNbKGNbbz4+Ml18MCkrMzY+PjJdfDApLTEyPDw1Pj4+MCkvMjU1fDApLTIzO2c9Y1tvPj4yXXwwO2lmKChlWyhjW28+PjJdfDApKzI0Pj4xXXwwfDApPjEyNylhW2crMjE+PjBdPTEyNztlbHNlIGFbKGNbbz4+Ml18MCkrMjE+PjBdPWJbZysyND4+MV07Y1soY1tvPj4yXXwwKSsxMj4+Ml09Y1txPj4yXTtjWyhjW28+PjJdfDApKzQ0Pj4yXT1jW3A+PjJdO2Nbbj4+Ml09MDtxPWNbbj4+Ml18MDtpPXI7cmV0dXJuIHF8MH1mdW5jdGlvbiByTihiLGUsZil7Yj1ifDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wO209aTtpPWkrMzJ8MDtoPW0rMTZ8MDtqPW0rMTJ8MDtrPW0rOHwwO2c9bSs0fDA7bD1tO2Nbaj4+Ml09YjtjW2s+PjJdPWU7Y1tnPj4yXT1mO2NbbD4+Ml09MDtpZihjWyhjW2o+PjJdfDApKzQ0Pj4yXXwwKXtjW2g+PjJdPWNbKGNbaj4+Ml18MCkrNDQ+PjJdO2w9Y1toPj4yXXwwO2k9bTtyZXR1cm4gbHwwfWFbKGNbaj4+Ml18MCkrMjI+PjBdPWNbZz4+Ml07aWYoKGRbKGNbaj4+Ml18MCkrMTc+PjBdfDB8MCk9PTEpe2Y9KEJyKGNbaj4+Ml18MCl8MCkhPTA7Zz1jW2o+PjJdfDA7aWYoIWYpe2NbbD4+Ml09R3QoZywyKXwwO2lmKChjW2w+PjJdfDApPT0wJihjW2s+PjJdfDApIT0wKWNbbD4+Ml09RnQoY1tqPj4yXXwwLDQpfDB9ZWxzZXtkbyBpZigoZFtnKzQ+PjBdfDB8MCkhPTA/KEVyKGNbKGNbaj4+Ml18MCkrMjE2Pj4yXXwwLC0xKXwwKSE9MDowKXtjW2w+PjJdPUd0KGNbaj4+Ml18MCw0KXwwO2lmKCEoY1tsPj4yXXwwKSl7RXIoY1soY1tqPj4yXXwwKSsyMTY+PjJdfDAsMSl8MDticmVha31jW2g+PjJdPWNbbD4+Ml07bD1jW2g+PjJdfDA7aT1tO3JldHVybiBsfDB9d2hpbGUoMCk7Y1tsPj4yXT1zTihjWyhjW2o+PjJdfDApKzIxNj4+Ml18MCl8MH1pZighKGNbbD4+Ml18MCkpe2FbKGNbaj4+Ml18MCkrMTc+PjBdPTI7Y1soY1tqPj4yXXwwKSs0MD4+Ml09Y1soY1tqPj4yXXwwKSsyOD4+Ml07Y1soY1tqPj4yXXwwKSszNj4+Ml09Y1soY1tqPj4yXXwwKSsyOD4+Ml07Y1soY1tqPj4yXXwwKSszMj4+Ml09Y1soY1tqPj4yXXwwKSsyOD4+Ml07az0oY1tqPj4yXXwwKSs4MHwwO2Nbaz4+Ml09MDtjW2srND4+Ml09MH19Y1toPj4yXT1jW2w+PjJdO2w9Y1toPj4yXXwwO2k9bTtyZXR1cm4gbHwwfWZ1bmN0aW9uIHNOKGIpe2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTA7Zz1pO2k9aSsxNnwwO2Q9Zys4fDA7ZT1nKzR8MDtmPWc7Y1tlPj4yXT1iO2lmKGFbKGNbZT4+Ml18MCkrNDY+PjBdfDApe2NbZD4+Ml09ODtmPWNbZD4+Ml18MDtpPWc7cmV0dXJuIGZ8MH1jW2Y+PjJdPVhzKGNbZT4+Ml18MCwwLDEpfDA7aWYoY1tmPj4yXXwwKXtjW2Q+PjJdPWNbZj4+Ml07Zj1jW2Q+PjJdfDA7aT1nO3JldHVybiBmfDB9YVsoY1tlPj4yXXwwKSs0ND4+MF09MTtiPShjW2U+PjJdfDApKzUyfDA7aWYoZVIoYixEcyhjW2U+PjJdfDApfDAsNDgpfDApe0tyKGNbZT4+Ml18MCwwLDEpO2FbKGNbZT4+Ml18MCkrNDQ+PjBdPTA7Y1tmPj4yXT01MTd9Y1tkPj4yXT1jW2Y+PjJdO2Y9Y1tkPj4yXXwwO2k9ZztyZXR1cm4gZnwwfWZ1bmN0aW9uIHROKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wO2Y9aTtpPWkrMTZ8MDtkPWYrNHwwO2U9ZjtjW2Q+PjJdPWE7Y1tlPj4yXT1iO2lmKGNbKGNbZD4+Ml18MCkrMjQ0Pj4yXXwwKXVOKGNbKGNbZD4+Ml18MCkrMjQ0Pj4yXXwwKTtTSihjW2Q+PjJdfDAsY1tlPj4yXXwwKTtpPWY7cmV0dXJufWZ1bmN0aW9uIHVOKGEpe2E9YXwwO3ZhciBiPTAsZD0wO2I9aTtpPWkrMTZ8MDtkPWI7Y1tkPj4yXT1hO2loKGNbZD4+Ml18MCk7aT1iO3JldHVybn1mdW5jdGlvbiB2TihhLGIsZCxlLGYpe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wLEU9MCxGPTAsRz0wLEg9MDtIPWk7aT1pKzYyNHwwO2c9SCs5MnwwO2g9SCs4OHwwO2o9SCs4NHwwO2s9SCs4MHwwO2w9SCs3NnwwO209SCs3MnwwO3o9SCs2OHwwO3A9SCs2NHwwO3g9SCs2MHwwO289SCs1NnwwO3c9SCs1MnwwO0I9SCs0OHwwO249SCs0NHwwO3Q9SCs0MHwwO3M9SCszNnwwO3I9SCszMnwwO3Y9SCsyOHwwO3U9SCsyNHwwO0M9SCsyMHwwO0Y9SCs5NnwwO0U9SCsxNnwwO0E9SCsxMnwwO3k9SCs4fDA7RD1IKzR8MDtxPUg7Y1toPj4yXT1hO2Nbaj4+Ml09YjtjW2s+PjJdPWQ7Y1tsPj4yXT1lO2NbbT4+Ml09ZjtjW3o+PjJdPWNbaz4+Ml07Y1twPj4yXT0tMTtjW3g+PjJdPTA7Y1tvPj4yXT1jW2w+PjJdJi0yNTY7Y1tCPj4yXT0wO2Nbbj4+Ml09MDtjW3Q+PjJdPWNbbD4+Ml0mMTY7Y1tzPj4yXT1jW2w+PjJdJjg7Y1tyPj4yXT1jW2w+PjJdJjQ7Y1t2Pj4yXT1jW2w+PjJdJjE7Y1t1Pj4yXT1jW2w+PjJdJjI7aWYoY1tyPj4yXXwwKWlmKChjW28+PjJdfDApPT0xNjM4NHwoY1tvPj4yXXwwKT09MjA0OCllPTE7ZWxzZSBlPShjW28+PjJdfDApPT01MjQyODg7ZWxzZSBlPTA7Y1tDPj4yXT1lJjE7Y1tFPj4yXT1jW2o+PjJdO2I9Y1sxNzE4XXwwO2lmKChifDApIT0odVIoKXwwKSl7Y1sxNzE4XT11UigpfDA7U2QoMCwwKX1lPWNbej4+Ml18MDtkPWUrNDR8MDtkb3tjW2U+PjJdPTA7ZT1lKzR8MH13aGlsZSgoZXwwKTwoZHwwKSk7ZT1jW0U+PjJdfDA7ZG8gaWYoKGNbbz4+Ml18MCkhPTI1Nil7aWYoIWUpe2NbQj4+Ml09a08oY1soY1toPj4yXXwwKSs4Pj4yXXwwLEYpfDA7aWYoIShjW0I+PjJdfDApKXtjW0U+PjJdPUY7YnJlYWt9Y1tnPj4yXT1jW0I+PjJdO0c9Y1tnPj4yXXwwO2k9SDtyZXR1cm4gR3wwfX1lbHNle2NbQT4+Ml09Qk8oZSxjW2w+PjJdfDApfDA7aWYoIShjW0E+PjJdfDApKXtjW0E+PjJdPUpkKDEyLDApfDA7aWYoIShjW0E+PjJdfDApKXtjW2c+PjJdPTc7Rz1jW2c+PjJdfDA7aT1IO3JldHVybiBHfDB9fWVsc2UgY1twPj4yXT1jW2NbQT4+Ml0+PjJdO2NbKGNbej4+Ml18MCkrMjg+PjJdPWNbQT4+Ml19d2hpbGUoMCk7aWYoY1t2Pj4yXXwwKWNbeD4+Ml09Y1t4Pj4yXTtpZihjW3U+PjJdfDApY1t4Pj4yXT1jW3g+PjJdfDI7aWYoY1tyPj4yXXwwKWNbeD4+Ml09Y1t4Pj4yXXw2NDtpZihjW3Q+PjJdfDApY1t4Pj4yXT1jW3g+PjJdfDEzMTIwMDtjW3g+PjJdPWNbeD4+Ml07ZG8gaWYoKGNbcD4+Ml18MCk8MCl7Y1tCPj4yXT1DTyhjW0U+PjJdfDAsY1tsPj4yXXwwLHksRCxxKXwwO2lmKGNbQj4+Ml18MCl7Y1tnPj4yXT1jW0I+PjJdO0c9Y1tnPj4yXXwwO2k9SDtyZXR1cm4gR3wwfWNbcD4+Ml09Z08oY1tFPj4yXXwwLGNbeD4+Ml18MCxjW3k+PjJdfDApfDA7aWYoKGNbcD4+Ml18MCk8MD8oRj0oY1soQlEoKXwwKT4+Ml18MCkhPTIxLEYmKGNbdT4+Ml18MCkhPTApOjApe2NbbD4+Ml09Y1tsPj4yXSYtNztjW3g+PjJdPWNbeD4+Ml0mLTY3O2NbbD4+Ml09Y1tsPj4yXXwxO2NbeD4+Ml09Y1t4Pj4yXTtjW3Y+PjJdPTE7Y1twPj4yXT1nTyhjW0U+PjJdfDAsY1t4Pj4yXXwwLGNbeT4+Ml18MCl8MH1pZigoY1twPj4yXXwwKTwwKXtGPW90KDM1MTg2KXwwO2NbQj4+Ml09Y08oRiw0NDEyOCxjW0U+PjJdfDAsMzUxODYpfDA7YnJlYWt9aWYoY1tsPj4yXSY1MjYzMzYpe0RPKGNbcD4+Ml18MCxjW0Q+PjJdfDAsY1txPj4yXXwwKXwwO0c9MzR9ZWxzZSBHPTM0fWVsc2UgRz0zNDt3aGlsZSgwKTtpZigoR3wwKT09MzQpe2lmKGNbbT4+Ml18MCljW2NbbT4+Ml0+PjJdPWNbbD4+Ml07aWYoY1soY1t6Pj4yXXwwKSsyOD4+Ml18MCl7Y1tjWyhjW3o+PjJdfDApKzI4Pj4yXT4+Ml09Y1twPj4yXTtjWyhjWyhjW3o+PjJdfDApKzI4Pj4yXXwwKSs0Pj4yXT1jW2w+PjJdfWlmKGNbcz4+Ml18MClUYltjWzY2MzI+PjJdJjI1NV0oY1tFPj4yXXwwKXwwO2lmKGNbcz4+Ml18MCljW24+PjJdPWNbbj4+Ml18MzI7aWYoY1t2Pj4yXXwwKWNbbj4+Ml09Y1tuPj4yXXwyO2Nbdz4+Ml09KGNbbz4+Ml18MCkhPTI1NiYxO2lmKGNbdz4+Ml18MCljW24+PjJdPWNbbj4+Ml18MTI4O2lmKGNbQz4+Ml18MCljW24+PjJdPWNbbj4+Ml18ODtpZihjW2w+PjJdJjY0KWNbbj4+Ml09Y1tuPj4yXXw2NDtjW0I+PjJdPUVPKGNbaD4+Ml18MCxjW3A+PjJdfDAsY1trPj4yXXwwLGNbaj4+Ml18MCxjW24+PjJdfDApfDB9aWYoY1tCPj4yXXwwKUtkKGNbKGNbej4+Ml18MCkrMjg+PjJdfDApO2NbZz4+Ml09Y1tCPj4yXTtHPWNbZz4+Ml18MDtpPUg7cmV0dXJuIEd8MH1mdW5jdGlvbiB3TihhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wO2s9aTtpPWkrMzJ8MDtlPWsrMjB8MDtmPWsrMTJ8MDtnPWsrOHwwO2o9ays0fDA7aD1rO2NbaysxNj4+Ml09YTtjW2Y+PjJdPWI7Y1tnPj4yXT1kO2Nbaj4+Ml09MDtpZigoVGJbY1s2NjMyPj4yXSYyNTVdKGNbZj4+Ml18MCl8MCk9PS0xKXtpZigoY1soQlEoKXwwKT4+Ml18MCk9PTIpY1tqPj4yXT01ODk4O2Vsc2UgY1tqPj4yXT1jTygyNTcwLDQ0MjI1LGNbZj4+Ml18MCwzNTMxMil8MDtjW2U+PjJdPWNbaj4+Ml07Yj1jW2U+PjJdfDA7aT1rO3JldHVybiBifDB9ZG8gaWYoY1tnPj4yXSYxKXtjW2o+PjJdPVliW2NbNjY0ND4+Ml0mMjU1XShjW2Y+PjJdfDAsaCl8MDtpZihjW2o+PjJdfDApe2Nbaj4+Ml09MDticmVha31pZihyTyhjW2g+PjJdfDAsMCwwKXwwKWNbaj4+Ml09Y08oMTI5MCw0NDQ1OSxjW2Y+PjJdfDAsMzUzMjIpfDA7Yk8oMCxjW2g+PjJdfDAsMzUzMjQpfXdoaWxlKDApO2NbZT4+Ml09Y1tqPj4yXTtiPWNbZT4+Ml18MDtpPWs7cmV0dXJuIGJ8MH1mdW5jdGlvbiB4TihhLGIsZCxlKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MDtqPWk7aT1pKzk2fDA7Zj1qKzg0fDA7az1qKzgwfDA7Zz1qKzc2fDA7aD1qO2Nbais4OD4+Ml09YTtjW2Y+PjJdPWI7Y1trPj4yXT1kO2NbZz4+Ml09ZTtpZighKGNbaz4+Ml18MCkpe2s9MD09KFliW2NbNjQ4OD4+Ml0mMjU1XShjW2Y+PjJdfDAsaCl8MCk7Y1tjW2c+PjJdPj4yXT0oaz8oY1toKzM2Pj4yXXwwKT4wOjApJjE7aT1qO3JldHVybiAwfWVsc2V7az0oWWJbY1s2NDY0Pj4yXSYyNTVdKGNbZj4+Ml18MCw2KXwwKT09MCYxO2NbY1tnPj4yXT4+Ml09aztpPWo7cmV0dXJuIDB9cmV0dXJuIDB9ZnVuY3Rpb24geU4oYixkLGUsZil7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wO3I9aTtpPWkrMTI4fDA7cz1yKzExMnwwO2c9cisxMDh8MDtoPXIrMTA0fDA7cD1yKzEwMHwwO209cis5NnwwO249cis5MnwwO289cis4OHwwO3E9cis4NHwwO2o9cis4MHwwO2s9cis0fDA7bD1yO2NbcisxMTY+PjJdPWI7Y1tzPj4yXT1kO2NbZz4+Ml09ZTtjW2g+PjJdPWY7Y1twPj4yXT0wO2Nbbj4+Ml09MTtjW28+PjJdPWNbcz4+Ml07Y1txPj4yXT0wO3doaWxlKDEpe2Nbaj4+Ml09MDtpZihZYltjWzY3NjQ+PjJdJjI1NV0oY1tvPj4yXXwwLGspfDApe2lmKChjWyhCUSgpfDApPj4yXXwwKSE9Mil7cz1vdCgzNTQzNil8MDtjW3A+PjJdPWNPKHMsNDQzMTMsY1tvPj4yXXwwLDM1NDM2KXwwfX1lbHNlIGNbaj4+Ml09KGNbaysxMj4+Ml0mNjE0NDB8MCk9PTQwOTYwJjE7aWYoY1tqPj4yXXwwKXtpZighKGNbcT4+Ml18MCkpe2NbcT4+Ml09SWQoY1tnPj4yXXwwKXwwO2lmKCEoY1txPj4yXXwwKSljW3A+PjJdPTd9ZWxzZXtzPShjW24+PjJdfDApKzF8MDtjW24+PjJdPXM7aWYoKHN8MCk+MTAwKWNbcD4+Ml09b3QoMzU0NDcpfDB9ZG8gaWYoIShjW3A+PjJdfDApKXtjW20+PjJdPU9iW2NbNjc1Mj4+Ml0mMjU1XShjW28+PjJdfDAsY1txPj4yXXwwLChjW2c+PjJdfDApLTF8MCl8MDtpZigoY1ttPj4yXXwwKTwwKXtzPW90KDM1NDUzKXwwO2NbcD4+Ml09Y08ocyw0NDMwNCxjW28+PjJdfDAsMzU0NTMpfDA7YnJlYWt9ZG8gaWYoKGFbY1txPj4yXT4+MF18MCkhPTQ3KXtjW2w+PjJdPUpmKGNbbz4+Ml18MCl8MDt3aGlsZSgxKXtpZigoY1tsPj4yXXwwKTw9MClicmVhaztpZigoYVsoY1tvPj4yXXwwKSsoKGNbbD4+Ml18MCktMSk+PjBdfDApPT00NylicmVhaztjW2w+PjJdPShjW2w+PjJdfDApKy0xfWlmKCgoY1ttPj4yXXwwKSsoY1tsPj4yXXwwKSsxfDApPihjW2c+PjJdfDApKXtjW3A+PjJdPW90KDM1NDU5KXwwO2JyZWFrfWVsc2V7VVIoKGNbcT4+Ml18MCkrKGNbbD4+Ml18MCl8MCxjW3E+PjJdfDAsKGNbbT4+Ml18MCkrMXwwKXwwO1RSKGNbcT4+Ml18MCxjW28+PjJdfDAsY1tsPj4yXXwwKXwwO2NbbT4+Ml09KGNbbT4+Ml18MCkrKGNbbD4+Ml18MCk7YnJlYWt9fXdoaWxlKDApO2FbKGNbcT4+Ml18MCkrKGNbbT4+Ml18MCk+PjBdPTB9d2hpbGUoMCk7Y1tvPj4yXT1jW3E+PjJdfWlmKChjW3A+PjJdfDApPT0wPyhjW28+PjJdfDApIT0oY1toPj4yXXwwKTowKWNbcD4+Ml09QU8oY1tvPj4yXXwwLGNbaD4+Ml18MCxjW2c+PjJdfDApfDA7aWYoIShjW2o+PjJdfDApKXtnPTMwO2JyZWFrfWNbbz4+Ml09Y1toPj4yXTtpZihjW3A+PjJdfDApe2c9MzA7YnJlYWt9fWlmKChnfDApPT0zMCl7S2QoY1txPj4yXXwwKTtpPXI7cmV0dXJuIGNbcD4+Ml18MH1yZXR1cm4gMH1mdW5jdGlvbiB6TihiLGQsZSl7Yj1ifDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wO2w9aTtpPWkrMzJ8MDtmPWwrMTZ8MDtnPWwrMTJ8MDtoPWwrOHwwO2o9bCs0fDA7az1sO2NbbCsyMD4+Ml09YjtjW2Y+PjJdPWQ7Y1tnPj4yXT1lO1ZSKGNbZz4+Ml18MCwwLGNbZj4+Ml18MCl8MDtjWzE3MThdPXVSKCl8MDtjW2g+PjJdPWdPKDQ0NDQ2LDAsMCl8MDtpZigoY1toPj4yXXwwKTwwKXtGYihrfDApfDA7ZT1jW2c+PjJdfDA7YVtlPj4wXT1hW2s+PjBdfDA7YVtlKzE+PjBdPWFbaysxPj4wXXwwO2FbZSsyPj4wXT1hW2srMj4+MF18MDthW2UrMz4+MF09YVtrKzM+PjBdfDA7ZT0oY1tnPj4yXXwwKSs0fDA7YVtlPj4wXT1hWzY4NzJdfDA7YVtlKzE+PjBdPWFbNjg3M118MDthW2UrMj4+MF09YVs2ODc0XXwwO2FbZSszPj4wXT1hWzY4NzVdfDA7Y1tmPj4yXT04O2U9Y1tmPj4yXXwwO2k9bDtyZXR1cm4gZXwwfWRve2Nbaj4+Ml09T2JbY1s2NTM2Pj4yXSYyNTVdKGNbaD4+Ml18MCxjW2c+PjJdfDAsY1tmPj4yXXwwKXwwO2lmKChjW2o+PjJdfDApPj0wKWJyZWFrfXdoaWxlKChjWyhCUSgpfDApPj4yXXwwKT09NCk7Yk8oMCxjW2g+PjJdfDAsMzU1ODMpO2U9Y1tmPj4yXXwwO2k9bDtyZXR1cm4gZXwwfWZ1bmN0aW9uIEFOKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wO2U9aTtpPWkrMTZ8MDtmPWUrNHwwO2Q9ZTtjW2UrOD4+Ml09YTtjW2Y+PjJdPWI7Y1tkPj4yXT0oKGNbZj4+Ml18MCkrOTk5OTk5fDApLzFlNnwwO3pSKGNbZD4+Ml18MCl8MDtpPWU7cmV0dXJuIChjW2Q+PjJdfDApKjFlNnwwfWZ1bmN0aW9uIEJOKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MDtlPWk7aT1pKzMyfDA7Zj1lKzEyfDA7Zz1lO2Q9ZSs4fDA7Y1tlKzE2Pj4yXT1hO2NbZj4+Ml09YjtiPWc7Y1tiPj4yXT0wO2NbYis0Pj4yXT0wO2NbZD4+Ml09RE4oMCxnKXwwO2I9ZztoW2NbZj4+Ml0+PjNdPSgrKChjW2I+PjJdfDApPj4+MCkrNDI5NDk2NzI5Ni4wKisoY1tiKzQ+PjJdfDApKS84NjQuMGU1O2k9ZTtyZXR1cm4gY1tkPj4yXXwwfWZ1bmN0aW9uIENOKGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wO2U9aTtpPWkrMTZ8MDtjW2UrOD4+Ml09YTtjW2UrND4+Ml09YjtjW2U+PjJdPWQ7ZD1jWyhCUSgpfDApPj4yXXwwO2k9ZTtyZXR1cm4gZHwwfWZ1bmN0aW9uIEROKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MDtlPWk7aT1pKzMyfDA7Zj1lKzEyfDA7ZD1lKzh8MDtnPWU7Y1tlKzE2Pj4yXT1hO2NbZj4+Ml09YjtjW2Q+PjJdPTA7SGIoZ3wwLDApfDA7Yj1jW2c+PjJdfDA7Yj1hUygxZTMsMCxifDAsKChifDApPDApPDwzMT4+MzF8MCl8MDtiPVJSKDEwNDU2MzU1ODQsNDkwOTYsYnwwLEN8MCl8MDthPShjW2crND4+Ml18MCkvMWUzfDA7YT1SUihifDAsQ3wwLGF8MCwoKGF8MCk8MCk8PDMxPj4zMXwwKXwwO2I9Y1tmPj4yXXwwO2NbYj4+Ml09YTtjW2IrND4+Ml09QztpPWU7cmV0dXJuIGNbZD4+Ml18MH1mdW5jdGlvbiBFTihhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wO2s9aTtpPWkrMzJ8MDtlPWsrMTJ8MDtmPWsrOHwwO2c9ays0fDA7aD1rO2NbaysxNj4+Ml09YTtjW2U+PjJdPWI7Y1tmPj4yXT1kO2NbaD4+Ml09MTI7aWYoIShjW2U+PjJdfDApKXtjW2g+PjJdPTA7Y1tnPj4yXT0wO3doaWxlKDEpe2lmKChjW2c+PjJdfDApPj4+MD49MjgpYnJlYWs7aWYoY1s2NDM2KygoY1tnPj4yXXwwKSoxMnwwKSs4Pj4yXXwwKWNbNjQzNisoKGNbZz4+Ml18MCkqMTJ8MCkrND4+Ml09Y1s2NDM2KygoY1tnPj4yXXwwKSoxMnwwKSs4Pj4yXTtjW2c+PjJdPShjW2c+PjJdfDApKzF9aj1jW2g+PjJdfDA7aT1rO3JldHVybiBqfDB9Y1tnPj4yXT0wO3doaWxlKDEpe2lmKChjW2c+PjJdfDApPj4+MD49Mjgpe2o9MTY7YnJlYWt9Yj0oaFIoY1tlPj4yXXwwLGNbNjQzNisoKGNbZz4+Ml18MCkqMTJ8MCk+PjJdfDApfDApPT0wO2Q9Y1tnPj4yXXwwO2lmKGIpYnJlYWs7Y1tnPj4yXT1kKzF9aWYoKGp8MCk9PTE2KXtqPWNbaD4+Ml18MDtpPWs7cmV0dXJuIGp8MH1pZighKGNbNjQzNisoZCoxMnwwKSs4Pj4yXXwwKSljWzY0MzYrKChjW2c+PjJdfDApKjEyfDApKzg+PjJdPWNbNjQzNisoKGNbZz4+Ml18MCkqMTJ8MCkrND4+Ml07Y1toPj4yXT0wO2lmKCEoY1tmPj4yXXwwKSljW2Y+PjJdPWNbNjQzNisoKGNbZz4+Ml18MCkqMTJ8MCkrOD4+Ml07Y1s2NDM2KygoY1tnPj4yXXwwKSoxMnwwKSs0Pj4yXT1jW2Y+PjJdO2o9Y1toPj4yXXwwO2k9aztyZXR1cm4ganwwfWZ1bmN0aW9uIEZOKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MDtnPWk7aT1pKzE2fDA7Zj1nKzEyfDA7ZD1nKzR8MDtlPWc7Y1tnKzg+PjJdPWE7Y1tkPj4yXT1iO2NbZT4+Ml09MDt3aGlsZSgxKXtpZigoY1tlPj4yXXwwKT4+PjA+PTI4KXthPTY7YnJlYWt9YT0oaFIoY1tkPj4yXXwwLGNbNjQzNisoKGNbZT4+Ml18MCkqMTJ8MCk+PjJdfDApfDApPT0wO2I9Y1tlPj4yXXwwO2lmKGEpe2E9NDticmVha31jW2U+PjJdPWIrMX1pZigoYXwwKT09NCl7Y1tmPj4yXT1jWzY0MzYrKGIqMTJ8MCkrND4+Ml07Zj1jW2Y+PjJdfDA7aT1nO3JldHVybiBmfDB9ZWxzZSBpZigoYXwwKT09Nil7Y1tmPj4yXT0wO2Y9Y1tmPj4yXXwwO2k9ZztyZXR1cm4gZnwwfXJldHVybiAwfWZ1bmN0aW9uIEdOKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MDtnPWk7aT1pKzE2fDA7Zj1nKzEyfDA7ZD1nKzR8MDtlPWc7Y1tnKzg+PjJdPWE7Y1tkPj4yXT1iO2NbZT4+Ml09LTE7YTpkbyBpZihjW2Q+PjJdfDApe2NbZT4+Ml09MDt3aGlsZSgxKXtpZigoY1tlPj4yXXwwKT49MjcpYnJlYWsgYTtpZighKGhSKGNbZD4+Ml18MCxjWzY0MzYrKChjW2U+PjJdfDApKjEyfDApPj4yXXwwKXwwKSlicmVhayBhO2NbZT4+Ml09KGNbZT4+Ml18MCkrMX19d2hpbGUoMCk7Y1tlPj4yXT0oY1tlPj4yXXwwKSsxO3doaWxlKDEpe2lmKChjW2U+PjJdfDApPj0yOCl7ZD0xMTticmVha31hPWNbZT4+Ml18MDtpZihjWzY0MzYrKChjW2U+PjJdfDApKjEyfDApKzQ+PjJdfDApe2Q9OTticmVha31jW2U+PjJdPWErMX1pZigoZHwwKT09OSl7Y1tmPj4yXT1jWzY0MzYrKGEqMTJ8MCk+PjJdO2Y9Y1tmPj4yXXwwO2k9ZztyZXR1cm4gZnwwfWVsc2UgaWYoKGR8MCk9PTExKXtjW2Y+PjJdPTA7Zj1jW2Y+PjJdfDA7aT1nO3JldHVybiBmfDB9cmV0dXJuIDB9ZnVuY3Rpb24gSE4oYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wO2Q9aTtpPWkrMTZ8MDtjW2QrND4+Ml09YTtjW2Q+PjJdPWI7aT1kO3JldHVybiA2MzYwfWZ1bmN0aW9uIElOKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MDtiPWk7aT1pKzE2fDA7ZD1iKzR8MDtlPWI7Y1tkPj4yXT1hO2NbZT4+Ml09Y1tkPj4yXTtQTihjW2Q+PjJdfDAsMCl8MDtLZChjWyhjW2U+PjJdfDApKzI0Pj4yXXwwKTthPXVPKGNbZD4+Ml18MCl8MDtpPWI7cmV0dXJuIGF8MH1mdW5jdGlvbiBKTihhLGIsZCxlLGYpe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wO209aTtpPWkrMzJ8MDtnPW0rMjh8MDtvPW0rMjR8MDtoPW0rMjB8MDtqPW0rMTZ8MDtuPW07bD1tKzEyfDA7az1tKzh8MDtjW28+PjJdPWE7Y1toPj4yXT1iO2Nbaj4+Ml09ZDtiPW47Y1tiPj4yXT1lO2NbYis0Pj4yXT1mO2NbbD4+Ml09Y1tvPj4yXTtiPW47Y1trPj4yXT10TyhjW2w+PjJdfDAsY1tiPj4yXXwwLGNbYis0Pj4yXXwwLGNbaD4+Ml18MCxjW2o+PjJdfDApfDA7aWYoKGNbaz4+Ml18MCk9PShjW2o+PjJdfDApKXtjW2c+PjJdPTA7bz1jW2c+PjJdfDA7aT1tO3JldHVybiBvfDB9aWYoKGNbaz4+Ml18MCk8MCl7Y1tnPj4yXT0yNjY7bz1jW2c+PjJdfDA7aT1tO3JldHVybiBvfDB9ZWxzZXtwTyhjW2w+PjJdfDAsMCk7VlIoKGNbaD4+Ml18MCkrKGNbaz4+Ml18MCl8MCwwLChjW2o+PjJdfDApLShjW2s+PjJdfDApfDApfDA7Y1tnPj4yXT01MjI7bz1jW2c+PjJdfDA7aT1tO3JldHVybiBvfDB9cmV0dXJuIDB9ZnVuY3Rpb24gS04oYSxiLGQsZSxmKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MDtuPWk7aT1pKzMyfDA7Zz1uKzI4fDA7bz1uKzI0fDA7aD1uKzIwfDA7aj1uKzE2fDA7az1uO2w9bisxMnwwO209bis4fDA7Y1tvPj4yXT1hO2NbaD4+Ml09YjtjW2o+PjJdPWQ7Yj1rO2NbYj4+Ml09ZTtjW2IrND4+Ml09ZjtjW2w+PjJdPWNbbz4+Ml07Y1ttPj4yXT0wO3doaWxlKDEpe289aztvPW5PKGNbbD4+Ml18MCxjW28+PjJdfDAsY1tvKzQ+PjJdfDAsY1toPj4yXXwwLGNbaj4+Ml18MCl8MDtjW20+PjJdPW87aWYoISgob3wwKTwoY1tqPj4yXXwwKT8oY1ttPj4yXXwwKT4wOjApKWJyZWFrO2Nbaj4+Ml09KGNbaj4+Ml18MCktKGNbbT4+Ml18MCk7Yj1jW20+PjJdfDA7bz1rO2I9UlIoY1tvPj4yXXwwLGNbbys0Pj4yXXwwLGJ8MCwoKGJ8MCk8MCk8PDMxPj4zMXwwKXwwO289aztjW28+PjJdPWI7Y1tvKzQ+PjJdPUM7Y1toPj4yXT0oY1toPj4yXXwwKSsoY1ttPj4yXXwwKX1pZigoY1tqPj4yXXwwKTw9KGNbbT4+Ml18MCkpe2NbZz4+Ml09MDtvPWNbZz4+Ml18MDtpPW47cmV0dXJuIG98MH1pZigoY1ttPj4yXXwwKTwwPyhjWyhjW2w+PjJdfDApKzIwPj4yXXwwKSE9Mjg6MCl7Y1tnPj4yXT03Nzg7bz1jW2c+PjJdfDA7aT1uO3JldHVybiBvfDB9cE8oY1tsPj4yXXwwLDApO2NbZz4+Ml09MTM7bz1jW2c+PjJdfDA7aT1uO3JldHVybiBvfDB9ZnVuY3Rpb24gTE4oYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MDtqPWk7aT1pKzMyfDA7ZT1qKzIwfDA7az1qKzE2fDA7Zj1qO2c9aisxMnwwO2g9ais4fDA7Y1trPj4yXT1hO2E9ZjtjW2E+PjJdPWI7Y1thKzQ+PjJdPWQ7Y1tnPj4yXT1jW2s+PjJdO2lmKChjWyhjW2c+PjJdfDApKzQwPj4yXXwwKT4wKXtrPWY7YT1jWyhjW2c+PjJdfDApKzQwPj4yXXwwO2E9UlIoY1trPj4yXXwwLGNbays0Pj4yXXwwLGF8MCwoKGF8MCk8MCk8PDMxPj4zMXwwKXwwO2E9UVIoYXwwLEN8MCwxLDApfDA7az1jWyhjW2c+PjJdfDApKzQwPj4yXXwwO2s9X1IoYXwwLEN8MCxrfDAsKChrfDApPDApPDwzMT4+MzF8MCl8MDthPWNbKGNbZz4+Ml18MCkrNDA+PjJdfDA7YT1hUyhrfDAsQ3wwLGF8MCwoKGF8MCk8MCk8PDMxPj4zMXwwKXwwO2s9ZjtjW2s+PjJdPWE7Y1trKzQ+PjJdPUN9az1mO2NbaD4+Ml09c08oY1soY1tnPj4yXXwwKSsxMj4+Ml18MCxjW2s+PjJdfDAsY1trKzQ+PjJdfDApfDA7aWYoY1toPj4yXXwwKXtrPWNbZz4+Ml18MDtwTyhrLGNbKEJRKCl8MCk+PjJdfDApO2NbZT4+Ml09Y08oMTU0Niw0NDE1MSxjWyhjW2c+PjJdfDApKzMyPj4yXXwwLDMyOTk4KXwwO2s9Y1tlPj4yXXwwO2k9ajtyZXR1cm4ga3wwfWVsc2V7Y1tlPj4yXT0wO2s9Y1tlPj4yXXwwO2k9ajtyZXR1cm4ga3wwfXJldHVybiAwfWZ1bmN0aW9uIE1OKGEsZCl7YT1hfDA7ZD1kfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wO2s9aTtpPWkrMzJ8MDtmPWsrMjh8MDtvPWsrMjR8MDtuPWsrMjB8MDtqPWsrMTZ8MDtoPWsrMTJ8MDtsPWsrOHwwO209ays0fDA7Zz1rO2Nbbz4+Ml09YTtjW24+PjJdPWQ7Y1toPj4yXT1jW28+PjJdO2NbbD4+Ml09Y1tuPj4yXSYxNjtjW20+PjJdPShjW24+PjJdJjE1fDApPT0zJjE7Y1tqPj4yXT1yTyhjWyhjW2g+PjJdfDApKzEyPj4yXXwwLGNbbT4+Ml18MCxjW2w+PjJdfDApfDA7ZD1jW2g+PjJdfDA7aWYoY1tqPj4yXXwwKXtwTyhkLGNbKEJRKCl8MCk+PjJdfDApO2NbZj4+Ml09Y08oMTAzNCw0NDQzNSxjWyhjW2g+PjJdfDApKzMyPj4yXXwwLDMyOTUzKXwwO289Y1tmPj4yXXwwO2k9aztyZXR1cm4gb3wwfWlmKChlW2QrMTg+PjFdfDApJjgpe2Nbaj4+Ml09WWJbY1s2NjQ0Pj4yXSYyNTVdKGNbKGNbaD4+Ml18MCkrMzI+PjJdfDAsZyl8MDtpZighKGNbaj4+Ml18MCkpe3JPKGNbZz4+Ml18MCwwLDApfDA7Yk8oY1toPj4yXXwwLGNbZz4+Ml18MCwzMjk2Nyl9ZWxzZSBjW2o+PjJdPTA7bz0oY1toPj4yXXwwKSsxOHwwO2Jbbz4+MV09KGVbbz4+MV18MCkmLTl9Y1tmPj4yXT1jW2o+PjJdO289Y1tmPj4yXXwwO2k9aztyZXR1cm4gb3wwfWZ1bmN0aW9uIE5OKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wO2g9aTtpPWkrOTZ8MDtkPWgrODh8MDtlPWgrODR8MDtmPWgrODB8MDtqPWgrNzZ8MDtnPWg7Y1tlPj4yXT1hO2NbZj4+Ml09YjtjW2o+PjJdPVliW2NbNjUwMD4+Ml0mMjU1XShjWyhjW2U+PjJdfDApKzEyPj4yXXwwLGcpfDA7aWYoY1tqPj4yXXwwKXtqPWNbZT4+Ml18MDtwTyhqLGNbKEJRKCl8MCk+PjJdfDApO2NbZD4+Ml09MTgwMjtqPWNbZD4+Ml18MDtpPWg7cmV0dXJuIGp8MH1iPWNbZyszNj4+Ml18MDtqPWNbZj4+Ml18MDtjW2o+PjJdPWI7Y1tqKzQ+PjJdPSgoYnwwKTwwKTw8MzE+PjMxO2o9Y1tmPj4yXXwwO2lmKChjW2o+PjJdfDApPT0xJihjW2orND4+Ml18MCk9PTApe2o9Y1tmPj4yXXwwO2Nbaj4+Ml09MDtjW2orND4+Ml09MH1jW2Q+PjJdPTA7aj1jW2Q+PjJdfDA7aT1oO3JldHVybiBqfDB9ZnVuY3Rpb24gT04oYixlKXtiPWJ8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MDttPWk7aT1pKzMyfDA7Zj1tKzI0fDA7bj1tKzIwfDA7Zz1tKzE2fDA7aD1tKzEyfDA7bD1tKzh8MDtqPW0rNHwwO2s9bTtjW24+PjJdPWI7Y1tnPj4yXT1lO2NbaD4+Ml09Y1tuPj4yXTtjW2w+PjJdPWNbKGNbaD4+Ml18MCkrMjQ+PjJdO2Nbaj4+Ml09MDtpZigoZFsoY1toPj4yXXwwKSsxNj4+MF18MHwwKT4wKXthWyhjW2g+PjJdfDApKzE2Pj4wXT1jW2c+PjJdO0hhKGNbbD4+Ml18MCwwKXwwO2NbZj4+Ml09MDtuPWNbZj4+Ml18MDtpPW07cmV0dXJuIG58MH1jW2o+PjJdPVliW2NbNjY1Nj4+Ml0mMjU1XShjW2w+PjJdfDAsNTExKXwwO2lmKChjW2o+PjJdfDApPj0wKXthWyhjW2g+PjJdfDApKzE2Pj4wXT1jW2c+PjJdO2NbZj4+Ml09Y1tqPj4yXTtuPWNbZj4+Ml18MDtpPW07cmV0dXJuIG58MH1jW2s+PjJdPWNbKEJRKCl8MCk+PjJdO2lmKDE3IT0oY1trPj4yXXwwKSl7Y1tqPj4yXT1xTyhjW2s+PjJdfDAsMzg1MCl8MDtpZigoY1tqPj4yXXwwKSE9NSlwTyhjW2g+PjJdfDAsY1trPj4yXXwwKX1lbHNlIGNbaj4+Ml09NTtjW2Y+PjJdPWNbaj4+Ml07bj1jW2Y+PjJdfDA7aT1tO3JldHVybiBufDB9ZnVuY3Rpb24gUE4oYixlKXtiPWJ8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MDttPWk7aT1pKzMyfDA7Zj1tKzI0fDA7bj1tKzIwfDA7Zz1tKzE2fDA7aD1tKzEyfDA7bD1tKzh8MDtqPW0rNHwwO2s9bTtjW24+PjJdPWI7Y1tnPj4yXT1lO2NbaD4+Ml09Y1tuPj4yXTtjW2w+PjJdPWNbKGNbaD4+Ml18MCkrMjQ+PjJdO2lmKChkWyhjW2g+PjJdfDApKzE2Pj4wXXwwfDApPT0oY1tnPj4yXXwwKSl7Y1tmPj4yXT0wO249Y1tmPj4yXXwwO2k9bTtyZXR1cm4gbnwwfWlmKChjW2c+PjJdfDApPT0xKXthWyhjW2g+PjJdfDApKzE2Pj4wXT0xO2NbZj4+Ml09MDtuPWNbZj4+Ml18MDtpPW07cmV0dXJuIG58MH1jW2o+PjJdPVRiW2NbNjY2OD4+Ml0mMjU1XShjW2w+PjJdfDApfDA7aWYoKGNbaj4+Ml18MCk+PTApe2FbKGNbaD4+Ml18MCkrMTY+PjBdPTA7Y1tmPj4yXT0wO249Y1tmPj4yXXwwO2k9bTtyZXR1cm4gbnwwfWNbaz4+Ml09Y1soQlEoKXwwKT4+Ml07aWYoKGNbaz4+Ml18MCk9PTIpY1tqPj4yXT0wO2Vsc2V7Y1tqPj4yXT0yMDU4O3BPKGNbaD4+Ml18MCxjW2s+PjJdfDApfWNbZj4+Ml09Y1tqPj4yXTtuPWNbZj4+Ml18MDtpPW07cmV0dXJuIG58MH1mdW5jdGlvbiBRTihhLGIpe2E9YXwwO2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MDtlPWk7aT1pKzMyfDA7aj1lKzE2fDA7Zj1lKzEyfDA7ZD1lKzh8MDtnPWUrNHwwO2g9ZTtjW2o+PjJdPWE7Y1tmPj4yXT1iO2NbZD4+Ml09MDtjW2c+PjJdPTA7Y1toPj4yXT1jW2o+PjJdO2NbZz4+Ml09KFliW2NbNjQ2ND4+Ml0mMjU1XShjWyhjW2g+PjJdfDApKzI0Pj4yXXwwLDApfDApPT0wJjE7Y1tjW2Y+PjJdPj4yXT1jW2c+PjJdO2k9ZTtyZXR1cm4gY1tkPj4yXXwwfWZ1bmN0aW9uIFJOKGEsYixlKXthPWF8MDtiPWJ8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTA7bT1pO2k9aSszMnwwO2s9bTtmPW0rMjh8MDtvPW0rMjR8MDtuPW0rMjB8MDtnPW0rMTZ8MDtoPW0rMTJ8MDtqPW0rOHwwO2w9bSs0fDA7Y1tvPj4yXT1hO2Nbbj4+Ml09YjtjW2c+PjJdPWU7Y1toPj4yXT1jW28+PjJdO2RvIHN3aXRjaChjW24+PjJdfDApe2Nhc2UgMTp7Y1tjW2c+PjJdPj4yXT1kWyhjW2g+PjJdfDApKzE2Pj4wXTtjW2Y+PjJdPTA7YnJlYWt9Y2FzZSA0OntjW2NbZz4+Ml0+PjJdPWNbKGNbaD4+Ml18MCkrMjA+PjJdO2NbZj4+Ml09MDticmVha31jYXNlIDY6e2NbKGNbaD4+Ml18MCkrNDA+PjJdPWNbY1tnPj4yXT4+Ml07Y1tmPj4yXT0wO2JyZWFrfWNhc2UgNTp7bz1jW2c+PjJdfDA7Y1tqPj4yXT1pTyhjW2g+PjJdfDAsY1tvPj4yXXwwLGNbbys0Pj4yXXwwKXwwO2NbZj4+Ml09Y1tqPj4yXTticmVha31jYXNlIDEwOntqTyhjW2g+PjJdfDAsNCxjW2c+PjJdfDApO2NbZj4+Ml09MDticmVha31jYXNlIDEzOntqTyhjW2g+PjJdfDAsMTYsY1tnPj4yXXwwKTtjW2Y+PjJdPTA7YnJlYWt9Y2FzZSAxMjp7Y1trPj4yXT1jWyhjWyhjW2g+PjJdfDApKzQ+PjJdfDApKzE2Pj4yXTtvPU9kKDE4MzkxLGspfDA7Y1tjW2c+PjJdPj4yXT1vO2NbZj4+Ml09MDticmVha31jYXNlIDE2OntvPWNbKGNbKGNbaD4+Ml18MCkrND4+Ml18MCkrOD4+Ml18MDtjW2w+PjJdPUpkKG8sKChvfDApPDApPDwzMT4+MzEpfDA7aWYoY1tsPj4yXXwwKXtrTyhjWyhjWyhjW2g+PjJdfDApKzQ+PjJdfDApKzg+PjJdfDAsY1tsPj4yXXwwKXwwO2NbY1tnPj4yXT4+Ml09Y1tsPj4yXX1jW2Y+PjJdPTA7YnJlYWt9Y2FzZSAyMDp7bz1sTyhjW2g+PjJdfDApfDA7Y1tjW2c+PjJdPj4yXT1vO2NbZj4+Ml09MDticmVha31kZWZhdWx0OmNbZj4+Ml09MTJ9d2hpbGUoMCk7aT1tO3JldHVybiBjW2Y+PjJdfDB9ZnVuY3Rpb24gU04oYSl7YT1hfDA7dmFyIGI9MDtiPWk7aT1pKzE2fDA7Y1tiPj4yXT1hO2k9YjtyZXR1cm4gNDA5Nn1mdW5jdGlvbiBUTihhKXthPWF8MDt2YXIgYj0wLGQ9MCxmPTAsZz0wO2Q9aTtpPWkrMTZ8MDtnPWQrOHwwO2Y9ZCs0fDA7Yj1kO2NbZz4+Ml09YTtjW2Y+PjJdPWNbZz4+Ml07Y1tiPj4yXT0wO2lmKCEoKGVbKGNbZj4+Ml18MCkrMTg+PjFdfDApJjE2KSl7Zz1jW2I+PjJdfDA7aT1kO3JldHVybiBnfDB9Y1tiPj4yXT1jW2I+PjJdfDQwOTY7Zz1jW2I+PjJdfDA7aT1kO3JldHVybiBnfDB9ZnVuY3Rpb24gVU4oYSxkLGYsZyl7YT1hfDA7ZD1kfDA7Zj1mfDA7Zz1nfDA7dmFyIGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTA7dT1pO2k9aSs0OHwwO3Y9dSszMnwwO2g9dSsyOHwwO2o9dSsyNHwwO2s9dSsyMHwwO3A9dSsxNnwwO289dSsxMnwwO3I9dSs4fDA7cT11KzR8MDtzPXU7bj11KzQwfDA7bD11KzM4fDA7bT11KzM2fDA7Y1t2Pj4yXT1hO2NbaD4+Ml09ZDtjW2o+PjJdPWY7Y1trPj4yXT1nO2NbcD4+Ml09Y1t2Pj4yXTtjW28+PjJdPWNbKGNbcD4+Ml18MCkrMzY+PjJdO2NbcT4+Ml09Y1tjW28+PjJdPj4yXTtjW3M+PjJdPTA7YltuPj4xXT0oMTw8KGNbaD4+Ml18MCkrKGNbaj4+Ml18MCkpLSgxPDxjW2g+PjJdKTtpZihjW2s+PjJdJjEpe2JbbD4+MV09MDtjW3I+PjJdPWNbKGNbcT4+Ml18MCkrMzI+PjJdO3doaWxlKDEpe2lmKCEoY1tyPj4yXXwwKSlicmVhaztpZigoY1tyPj4yXXwwKSE9KGNbbz4+Ml18MCkpYltsPj4xXT1lW2w+PjFdfDB8KGVbKGNbcj4+Ml18MCkrMTA+PjFdfDApO2Nbcj4+Ml09Y1soY1tyPj4yXXwwKSs0Pj4yXX1pZighKChlW24+PjFdfDApJihlW2w+PjFdfDApKSljW3M+PjJdPWhPKGNbcD4+Ml18MCwyLChjW2g+PjJdfDApKzEyMHwwLGNbaj4+Ml18MCl8MDtlbHNlIGNbcz4+Ml09MDtpZihjW3M+PjJdfDApe3Y9Y1tzPj4yXXwwO2k9dTtyZXR1cm4gdnwwfXY9KGNbbz4+Ml18MCkrMTJ8MDtiW3Y+PjFdPShlW3Y+PjFdfDApJn4oZVtuPj4xXXwwKTt2PShjW28+PjJdfDApKzEwfDA7Ylt2Pj4xXT0oZVt2Pj4xXXwwKSZ+KGVbbj4+MV18MCk7dj1jW3M+PjJdfDA7aT11O3JldHVybiB2fDB9aWYoIShjW2s+PjJdJjQpKXtjW3I+PjJdPWNbKGNbcT4+Ml18MCkrMzI+PjJdO3doaWxlKDEpe2lmKCEoY1tyPj4yXXwwKSlicmVhaztpZigoZVsoY1tyPj4yXXwwKSsxMj4+MV18MCkmKGVbbj4+MV18MCkpe3Q9Mjg7YnJlYWt9aWYoKGVbKGNbcj4+Ml18MCkrMTA+PjFdfDApJihlW24+PjFdfDApKXt0PTI4O2JyZWFrfWNbcj4+Ml09Y1soY1tyPj4yXXwwKSs0Pj4yXX1pZigodHwwKT09MjgpY1tzPj4yXT01O2lmKGNbcz4+Ml18MCl7dj1jW3M+PjJdfDA7aT11O3JldHVybiB2fDB9Y1tzPj4yXT1oTyhjW3A+PjJdfDAsMSwoY1toPj4yXXwwKSsxMjB8MCxjW2o+PjJdfDApfDA7aWYoY1tzPj4yXXwwKXt2PWNbcz4+Ml18MDtpPXU7cmV0dXJuIHZ8MH12PShjW28+PjJdfDApKzEyfDA7Ylt2Pj4xXT1lW3Y+PjFdfDB8KGVbbj4+MV18MCk7dj1jW3M+PjJdfDA7aT11O3JldHVybiB2fDB9YlttPj4xXT0wO2Nbcj4+Ml09Y1soY1txPj4yXXwwKSszMj4+Ml07d2hpbGUoMSl7aWYoIShjW3I+PjJdfDApKWJyZWFrO2lmKChlWyhjW3I+PjJdfDApKzEyPj4xXXwwKSYoZVtuPj4xXXwwKSl7dD0xNjticmVha31iW20+PjFdPWVbbT4+MV18MHwoZVsoY1tyPj4yXXwwKSsxMD4+MV18MCk7Y1tyPj4yXT1jWyhjW3I+PjJdfDApKzQ+PjJdfWlmKCh0fDApPT0xNiljW3M+PjJdPTU7ZG8gaWYoIShjW3M+PjJdfDApKWlmKCEoKGVbbT4+MV18MCkmKGVbbj4+MV18MCkpKXtjW3M+PjJdPWhPKGNbcD4+Ml18MCwwLChjW2g+PjJdfDApKzEyMHwwLGNbaj4+Ml18MCl8MDticmVha31lbHNle2Nbcz4+Ml09MDticmVha313aGlsZSgwKTtpZihjW3M+PjJdfDApe3Y9Y1tzPj4yXXwwO2k9dTtyZXR1cm4gdnwwfXY9KGNbbz4+Ml18MCkrMTB8MDtiW3Y+PjFdPWVbdj4+MV18MHwoZVtuPj4xXXwwKTt2PWNbcz4+Ml18MDtpPXU7cmV0dXJuIHZ8MH1mdW5jdGlvbiBWTihhKXthPWF8MDt2YXIgYj0wO2I9aTtpPWkrMTZ8MDtjW2I+PjJdPWE7Wk4oKTskTigpO2k9YjtyZXR1cm59ZnVuY3Rpb24gV04oYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MDtrPWk7aT1pKzMyfDA7ZD1rKzI0fDA7bD1rKzIwfDA7ZT1rKzE2fDA7Zj1rKzEyfDA7aD1rKzh8MDtqPWsrNHwwO2c9aztjW2w+PjJdPWE7Y1tlPj4yXT1iO2NbZz4+Ml09Y1tsPj4yXTtjW2Y+PjJdPWNbKGNbZz4+Ml18MCkrMzY+PjJdO2lmKCEoY1tmPj4yXXwwKSl7Y1tkPj4yXT0wO2w9Y1tkPj4yXXwwO2k9aztyZXR1cm4gbHwwfWNbaD4+Ml09Y1tjW2Y+PjJdPj4yXTtjW2o+PjJdPShjW2g+PjJdfDApKzMyO3doaWxlKDEpe2lmKChjW2Nbaj4+Ml0+PjJdfDApPT0oY1tmPj4yXXwwKSlicmVhaztjW2o+PjJdPShjW2Nbaj4+Ml0+PjJdfDApKzR9Y1tjW2o+PjJdPj4yXT1jWyhjW2Y+PjJdfDApKzQ+PjJdO0tkKGNbZj4+Ml18MCk7Y1soY1tnPj4yXXwwKSszNj4+Ml09MDtaTigpO2w9KGNbaD4+Ml18MCkrMjh8MDtjW2w+PjJdPShjW2w+PjJdfDApKy0xO2lmKCEoY1soY1toPj4yXXwwKSsyOD4+Ml18MCkpe2lmKChjW2U+PjJdfDApIT0wPyhjWyhjW2g+PjJdfDApKzEyPj4yXXwwKT49MDowKVRiW2NbNjYzMj4+Ml0mMjU1XShjWyhjW2g+PjJdfDApKzg+PjJdfDApfDA7X04oY1tnPj4yXXwwKX0kTigpO2NbZD4+Ml09MDtsPWNbZD4+Ml18MDtpPWs7cmV0dXJuIGx8MH1mdW5jdGlvbiBYTihhLGIsZCxlLGYpe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wO2c9aTtpPWkrMzJ8MDtoPWcrOHwwO2NbZysxNj4+Ml09YTthPWc7Y1thPj4yXT1iO2NbYSs0Pj4yXT1kO2NbZysxMj4+Ml09ZTtjW2g+PjJdPWY7Y1tjW2g+PjJdPj4yXT0wO2k9ZztyZXR1cm4gMH1mdW5jdGlvbiBZTihhLGIsZCxlKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDt2YXIgZj0wO2Y9aTtpPWkrMTZ8MDtjW2YrMTI+PjJdPWE7YT1mO2NbYT4+Ml09YjtjW2ErND4+Ml09ZDtjW2YrOD4+Ml09ZTtpPWY7cmV0dXJuIDB9ZnVuY3Rpb24gWk4oKXtyZXR1cm59ZnVuY3Rpb24gX04oYSl7YT1hfDA7dmFyIGI9MCxkPTAsZj0wLGc9MCxoPTA7aD1pO2k9aSsxNnwwO2I9aCsxMnwwO2c9aCs4fDA7Zj1oKzR8MDtkPWg7Y1tiPj4yXT1hO2NbZz4+Ml09Y1soY1soY1tiPj4yXXwwKSs4Pj4yXXwwKSsyMD4+Ml07aWYoIShjW2c+PjJdfDApKXtpPWg7cmV0dXJufWlmKGNbKGNbZz4+Ml18MCkrMjg+PjJdfDApe2k9aDtyZXR1cm59Y1tmPj4yXT1hTygpfDA7Y1tkPj4yXT0wO3doaWxlKDEpe2E9Y1tnPj4yXXwwO2lmKChjW2Q+PjJdfDApPj0oZVsoY1tnPj4yXXwwKSsyMD4+MV18MHwwKSlicmVhaztpZigoY1thKzEyPj4yXXwwKT49MClZYltjWzY3MTY+PjJdJjI1NV0oY1soY1soY1tnPj4yXXwwKSsyND4+Ml18MCkrKGNbZD4+Ml08PDIpPj4yXXwwLGNbKGNbZz4+Ml18MCkrMTY+PjJdfDApfDA7ZWxzZSBLZChjWyhjWyhjW2c+PjJdfDApKzI0Pj4yXXwwKSsoY1tkPj4yXTw8Mik+PjJdfDApO2NbZD4+Ml09KGNbZD4+Ml18MCkrKGNbZj4+Ml18MCl9S2QoY1thKzI0Pj4yXXwwKTtpZigoY1soY1tnPj4yXXwwKSsxMj4+Ml18MCk+PTApe2JPKGNbYj4+Ml18MCxjWyhjW2c+PjJdfDApKzEyPj4yXXwwLDMzNTc0KTtjWyhjW2c+PjJdfDApKzEyPj4yXT0tMX1jWyhjW2NbZz4+Ml0+PjJdfDApKzIwPj4yXT0wO0tkKGNbZz4+Ml18MCk7aT1oO3JldHVybn1mdW5jdGlvbiAkTigpe3JldHVybn1mdW5jdGlvbiBhTygpe3ZhciBhPTAsYj0wLGQ9MCxlPTA7ZT1pO2k9aSsxNnwwO2E9ZSs4fDA7ZD1lKzR8MDtiPWU7Y1tkPj4yXT0zMjc2ODtjW2I+PjJdPVBiW2NbNjc0MD4+Ml0mMjU1XSgpfDA7aWYoKGNbYj4+Ml18MCk8KGNbZD4+Ml18MCkpe2NbYT4+Ml09MTtkPWNbYT4+Ml18MDtpPWU7cmV0dXJuIGR8MH1lbHNle2NbYT4+Ml09KGNbYj4+Ml18MCkvKGNbZD4+Ml18MCl8MDtkPWNbYT4+Ml18MDtpPWU7cmV0dXJuIGR8MH1yZXR1cm4gMH1mdW5jdGlvbiBiTyhhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MDtnPWk7aT1pKzE2fDA7ZT1nKzh8MDtoPWcrNHwwO2Y9ZztjW2U+PjJdPWE7Y1toPj4yXT1iO2NbZj4+Ml09ZDtpZighKFRiW2NbNjQ1Mj4+Ml0mMjU1XShjW2g+PjJdfDApfDApKXtpPWc7cmV0dXJufWlmKGNbZT4+Ml18MCllPWNbKGNbZT4+Ml18MCkrMzI+PjJdfDA7ZWxzZSBlPTA7Y08oNDEwNiw0NDA5MSxlLGNbZj4+Ml18MCl8MDtpPWc7cmV0dXJufWZ1bmN0aW9uIGNPKGEsYixkLGUpe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wO249aTtpPWkrNDh8MDtsPW47Zj1uKzQwfDA7Zz1uKzM2fDA7aD1uKzMyfDA7aj1uKzI4fDA7bT1uKzI0fDA7az1uKzIwfDA7Y1tmPj4yXT1hO2NbZz4+Ml09YjtjW2g+PjJdPWQ7Y1tqPj4yXT1lO2Nbaz4+Ml09Y1soQlEoKXwwKT4+Ml07Y1ttPj4yXT1DUShjW2s+PjJdfDApfDA7aWYoIShjW2g+PjJdfDApKWNbaD4+Ml09MTg0MDI7ZD1jW2Y+PjJdfDA7YT1jW2s+PjJdfDA7az1jW2c+PjJdfDA7ZT1jW2g+PjJdfDA7Yj1jW20+PjJdfDA7Y1tsPj4yXT1jW2o+PjJdO2NbbCs0Pj4yXT1hO2NbbCs4Pj4yXT1rO2NbbCsxMj4+Ml09ZTtjW2wrMTY+PjJdPWI7UmQoZCw0NDA5NyxsKTtpPW47cmV0dXJuIGNbZj4+Ml18MH1mdW5jdGlvbiBkTyhhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTA7ZT1pO2k9aSsxNnwwO2Y9ZTtqPWUrMTJ8MDtoPWUrOHwwO2c9ZSs0fDA7Y1tqPj4yXT1hO2NbaD4+Ml09YjtjW2c+PjJdPWQ7ZD1jW2o+PjJdfDA7YT1jW2g+PjJdfDA7Y1tmPj4yXT1jW2c+PjJdO2E9RVEoZCxhLGYpfDA7aT1lO3JldHVybiBhfDB9ZnVuY3Rpb24gZU8oYixkKXtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MDtrPWk7aT1pKzU0NHwwO2w9aztlPWsrMjB8MDttPWsrMTZ8MDtmPWsrMTJ8MDtoPWsrOHwwO2c9ays0fDA7aj1rKzI0fDA7Y1ttPj4yXT1iO2NbZj4+Ml09ZDtjW2c+PjJdPS0xO2NbbD4+Ml09Y1ttPj4yXTtRZCg1MTIsaiwxODM5MSxsKXwwO2NbaD4+Ml09a1Ioail8MDt3aGlsZSgxKXtpZigoY1toPj4yXXwwKTw9MClicmVhaztpZigoYVtqKyhjW2g+PjJdfDApPj4wXXwwKT09NDcpYnJlYWs7Y1toPj4yXT0oY1toPj4yXXwwKSstMX1pZigoY1toPj4yXXwwKT4wKWFbaisoY1toPj4yXXwwKT4+MF09MDtlbHNle2lmKChhW2o+PjBdfDApIT00NylhW2o+PjBdPTQ2O2FbaisxPj4wXT0wfWNbZz4+Ml09Z08oaiwwLDApfDA7Y1tjW2Y+PjJdPj4yXT1jW2c+PjJdO2lmKChjW2c+PjJdfDApPj0wKXtjW2U+PjJdPTA7bT1jW2U+PjJdfDA7aT1rO3JldHVybiBtfDB9ZWxzZXtjW2U+PjJdPWNPKG90KDMyOTEyKXwwLDQ0MjMyLGosMzI5MTIpfDA7bT1jW2U+PjJdfDA7aT1rO3JldHVybiBtfDB9cmV0dXJuIDB9ZnVuY3Rpb24gZk8oKXtyZXR1cm4gaWIoMzApfDB9ZnVuY3Rpb24gZ08oYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wO209aTtpPWkrMTEyfDA7bD1tO2U9bSsxMDB8MDtmPW0rOTZ8MDtnPW0rOTJ8MDtoPW0rODh8MDtqPW0rODR8MDtrPW0rOHwwO2NbZT4+Ml09YTtjW2Y+PjJdPWI7Y1tnPj4yXT1kO2Nbaj4+Ml09KGNbZz4+Ml18MCkhPTA/Y1tnPj4yXXwwOjQyMDt3aGlsZSgxKXtjW2g+PjJdPU9iW2NbNjQ0MD4+Ml0mMjU1XShjW2U+PjJdfDAsY1tmPj4yXXw1MjQyODgsY1tqPj4yXXwwKXwwO2lmKChjW2g+PjJdfDApPDApaWYoKGNbKEJRKCl8MCk+PjJdfDApPT00KWNvbnRpbnVlO2Vsc2UgYnJlYWs7aWYoKGNbaD4+Ml18MCk+PTMpYnJlYWs7VGJbY1s2NDUyPj4yXSYyNTVdKGNbaD4+Ml18MCl8MDthPWNbaD4+Ml18MDtjW2w+PjJdPWNbZT4+Ml07Y1tsKzQ+PjJdPWE7UmQoMjgsNDQzMTksbCk7Y1toPj4yXT0tMTtpZigoT2JbY1s2NDQwPj4yXSYyNTVdKDQ0MzYyLGNbZj4+Ml18MCxjW2c+PjJdfDApfDApPDApYnJlYWt9aWYoISgoY1toPj4yXXwwKT49MCYoY1tnPj4yXXwwKSE9MCkpe2E9Y1toPj4yXXwwO2k9bTtyZXR1cm4gYXwwfWlmKFliW2NbNjUwMD4+Ml0mMjU1XShjW2g+PjJdfDAsayl8MCl7YT1jW2g+PjJdfDA7aT1tO3JldHVybiBhfDB9aWYoY1trKzM2Pj4yXXwwKXthPWNbaD4+Ml18MDtpPW07cmV0dXJuIGF8MH1pZigoY1trKzEyPj4yXSY1MTF8MCk9PShjW2c+PjJdfDApKXthPWNbaD4+Ml18MDtpPW07cmV0dXJuIGF8MH1ZYltjWzY2MDg+PjJdJjI1NV0oY1toPj4yXXwwLGNbZz4+Ml18MCl8MDthPWNbaD4+Ml18MDtpPW07cmV0dXJuIGF8MH1mdW5jdGlvbiBoTyhhLGQsZSxmKXthPWF8MDtkPWR8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTA7bz1pO2k9aSs0OHwwO249bztwPW8rNDB8MDtnPW8rMzZ8MDtoPW8rMzJ8MDtqPW8rMjh8MDtsPW8rMjR8MDtrPW8rOHwwO209bys0fDA7Y1twPj4yXT1hO2NbZz4+Ml09ZDtjW2g+PjJdPWU7Y1tqPj4yXT1mO2NbbT4+Ml09MDtjW2w+PjJdPWNbKGNbKGNbcD4+Ml18MCkrOD4+Ml18MCkrMjA+PjJdO2lmKChjWyhjW2w+PjJdfDApKzEyPj4yXXwwKTwwKXtwPWNbbT4+Ml18MDtpPW87cmV0dXJuIHB8MH07Y1trPj4yXT0wO2Nbays0Pj4yXT0wO2Nbays4Pj4yXT0wO2NbaysxMj4+Ml09MDtiW2s+PjFdPWNbZz4+Ml07YltrKzI+PjFdPTA7Y1trKzQ+PjJdPWNbaD4+Ml07Y1trKzg+PjJdPWNbaj4+Ml07YT1jWzE2MzFdfDA7cD1jWyhjW2w+PjJdfDApKzEyPj4yXXwwO2Nbbj4+Ml09aztjW20+PjJdPU9iW2EmMjU1XShwLDEzLG4pfDA7Y1ttPj4yXT0oY1ttPj4yXXwwKSE9LTE/MDo1O3A9Y1ttPj4yXXwwO2k9bztyZXR1cm4gcHwwfWZ1bmN0aW9uIGlPKGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTA7bj1pO2k9aSsxMjh8MDtlPW4rMTEyfDA7Zj1uKzEwOHwwO2c9bisxNnwwO2w9bis4fDA7aD1uKzMyfDA7az1uKzI4fDA7bT1uKzI0fDA7aj1uO2NbZj4+Ml09YTthPWc7Y1thPj4yXT1iO2NbYSs0Pj4yXT1kO2E6ZG8gaWYoKGNbKGNbZj4+Ml18MCkrNDA+PjJdfDApPjApe2lmKFliW2NbNjUwMD4+Ml0mMjU1XShjWyhjW2Y+PjJdfDApKzEyPj4yXXwwLGgpfDApe2NbZT4+Ml09MTgwMjthPWNbZT4+Ml18MDtpPW47cmV0dXJuIGF8MH1iPWNbKGNbZj4+Ml18MCkrNDA+PjJdfDA7Yj1SUihjW2c+PjJdfDAsY1tnKzQ+PjJdfDAsYnwwLCgoYnwwKTwwKTw8MzE+PjMxfDApfDA7Yj1RUihifDAsQ3wwLDEsMCl8MDtnPWNbKGNbZj4+Ml18MCkrNDA+PjJdfDA7Zz1fUihifDAsQ3wwLGd8MCwoKGd8MCk8MCk8PDMxPj4zMXwwKXwwO2I9Y1soY1tmPj4yXXwwKSs0MD4+Ml18MDtiPWFTKGd8MCxDfDAsYnwwLCgoYnwwKTwwKTw8MzE+PjMxfDApfDA7Zz1sO2NbZz4+Ml09YjtjW2crND4+Ml09QztnPWw7Yj1jW2crND4+Ml18MDthPWNbaCszNj4+Ml18MDtkPSgoYXwwKTwwKTw8MzE+PjMxO2lmKChifDApPihkfDApfCgoYnwwKT09KGR8MCk/KGNbZz4+Ml18MCk+Pj4wPmE+Pj4wOjApKXtjW2s+PjJdPWNbaCs0MD4+Ml07Y1ttPj4yXT0wO2g9XygoY1toKzM2Pj4yXXwwKS8oY1trPj4yXXwwKXwwLGNbaz4+Ml18MCl8MDtoPWgrKGNbaz4+Ml18MCktMXwwO2E9ajtjW2E+PjJdPWg7Y1thKzQ+PjJdPSgoaHwwKTwwKTw8MzE+PjMxO3doaWxlKDEpe2Q9ajtoPWNbZD4+Ml18MDtkPWNbZCs0Pj4yXXwwO2c9bDthPWNbaz4+Ml18MDthPVJSKGNbZz4+Ml18MCxjW2crND4+Ml18MCxhfDAsKChhfDApPDApPDwzMT4+MzF8MCl8MDthPVFSKGF8MCxDfDAsMSwwKXwwO2c9QztpZighKChkfDApPChnfDApfChkfDApPT0oZ3wwKSZoPj4+MDxhPj4+MCkpYnJlYWsgYTtoPWo7ZD1jW2grND4+Ml18MDthPWw7Zz1jW2ErND4+Ml18MDtpZigoZHwwKT4oZ3wwKXwoKGR8MCk9PShnfDApPyhjW2g+PjJdfDApPj4+MD49KGNbYT4+Ml18MCk+Pj4wOjApKXtoPWw7aD1RUihjW2g+PjJdfDAsY1toKzQ+PjJdfDAsMSwwKXwwO2E9ajtjW2E+PjJdPWg7Y1thKzQ+PjJdPUN9YT1qO2NbbT4+Ml09bk8oY1tmPj4yXXwwLGNbYT4+Ml18MCxjW2ErND4+Ml18MCwxODQwMiwxKXwwO2lmKChjW20+PjJdfDApIT0xKWJyZWFrO2g9Y1trPj4yXXwwO2E9ajtoPVJSKGNbYT4+Ml18MCxjW2ErND4+Ml18MCxofDAsKChofDApPDApPDwzMT4+MzF8MCl8MDthPWo7Y1thPj4yXT1oO2NbYSs0Pj4yXT1DfWNbZT4+Ml09Nzc4O2E9Y1tlPj4yXXwwO2k9bjtyZXR1cm4gYXwwfX13aGlsZSgwKTtjW2U+PjJdPTA7YT1jW2U+PjJdfDA7aT1uO3JldHVybiBhfDB9ZnVuY3Rpb24gak8oZixnLGgpe2Y9ZnwwO2c9Z3wwO2g9aHwwO3ZhciBqPTAsaz0wLGw9MCxtPTA7bT1pO2k9aSsxNnwwO2s9bSs0fDA7aj1tKzh8MDtsPW07Y1trPj4yXT1mO2Fbaj4+MF09ZztjW2w+PjJdPWg7aWYoKGNbY1tsPj4yXT4+Ml18MCk8MCl7Y1tjW2w+PjJdPj4yXT0oKGVbKGNbaz4+Ml18MCkrMTg+PjFdfDApJihkW2o+PjBdfDApfDApIT0wJjE7aT1tO3JldHVybn1qPWRbaj4+MF18MDtpZighKGNbY1tsPj4yXT4+Ml18MCkpe2w9KGNbaz4+Ml18MCkrMTh8MDtiW2w+PjFdPShlW2w+PjFdfDApJn5qO2k9bTtyZXR1cm59ZWxzZXtsPShjW2s+PjJdfDApKzE4fDA7YltsPj4xXT1lW2w+PjFdfDB8ajtpPW07cmV0dXJufX1mdW5jdGlvbiBrTyhiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wO209aTtpPWkrNjR8MDtqPW0rOHwwO2w9bSs0OHwwO2U9bSs0NHwwO2Y9bSs0MHwwO2s9bSszNnwwO2c9bSszMnwwO2g9bTtjW2U+PjJdPWI7Y1tmPj4yXT1kO2NbZz4+Ml09MDthW2NbZj4+Ml0+PjBdPTA7Y1trPj4yXT1tTygpfDA7aWYoIShjW2s+PjJdfDApKXtjW2w+PjJdPTY0MTA7bD1jW2w+PjJdfDA7aT1tO3JldHVybiBsfDB9d2hpbGUoMSl7U2QoOCxoKTthWyhjW2Y+PjJdfDApKygoY1tlPj4yXXwwKS0yKT4+MF09MDtiPWNbZT4+Ml18MDtkPWNbZj4+Ml18MDtvPWg7cD1jW28+PjJdfDA7bz1jW28rND4+Ml18MDtjW2o+PjJdPWNbaz4+Ml07bj1qKzh8MDtjW24+PjJdPXA7Y1tuKzQ+PjJdPW87Y1tqKzE2Pj4yXT0wO1FkKGIsZCw0NDM3MixqKXwwO2lmKGFbKGNbZj4+Ml18MCkrKChjW2U+PjJdfDApLTIpPj4wXXwwKXtlPTU7YnJlYWt9cD1jW2c+PjJdfDA7Y1tnPj4yXT1wKzE7aWYoKHB8MCk+MTApe2U9NTticmVha31pZihZYltjWzY0NjQ+PjJdJjI1NV0oY1tmPj4yXXwwLDApfDApe2U9NzticmVha319aWYoKGV8MCk9PTUpe2NbbD4+Ml09MTtwPWNbbD4+Ml18MDtpPW07cmV0dXJuIHB8MH1lbHNlIGlmKChlfDApPT03KXtjW2w+PjJdPTA7cD1jW2w+PjJdfDA7aT1tO3JldHVybiBwfDB9cmV0dXJuIDB9ZnVuY3Rpb24gbE8oYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wO2U9aTtpPWkrODB8MDtiPWUrNzZ8MDtkPWU7Y1tiPj4yXT1hO2lmKCEoY1soY1tiPj4yXXwwKSs4Pj4yXXwwKSl7YT0wO2E9YSYxO2k9ZTtyZXR1cm4gYXwwfWlmKFliW2NbNjQ4OD4+Ml0mMjU1XShjWyhjW2I+PjJdfDApKzMyPj4yXXwwLGQpfDApe2E9MTthPWEmMTtpPWU7cmV0dXJuIGF8MH1hPShjW2QrNzI+PjJdfDApIT0oY1soY1soY1tiPj4yXXwwKSs4Pj4yXXwwKSs0Pj4yXXwwKTthPWEmMTtpPWU7cmV0dXJuIGF8MH1mdW5jdGlvbiBtTygpe3ZhciBhPTAsYj0wLGQ9MCxlPTAsZj0wLGc9MDtmPWk7aT1pKzk2fDA7ZD1mKzg0fDA7Yj1mKzgwfDA7YT1mKzR8MDtlPWY7Y1tiPj4yXT0wO2NbZT4+Ml09Y1syNDNdO2lmKCEoY1sxNjkzXXwwKSljWzE2OTNdPXJiKDQ0Mzg5KXwwO2lmKCEoY1sxNjk0XXwwKSljWzE2OTRdPXJiKDQ0NDAzKXwwO3doaWxlKDEpe2lmKCgoKGNbZT4+Ml18MCkhPTA/KFliW2NbNjQ4OD4+Ml0mMjU1XShjW2U+PjJdfDAsYSl8MCk9PTA6MCk/KGNbYSsxMj4+Ml0mNjE0NDB8MCk9PTE2Mzg0OjApPyhZYltjWzY0NjQ+PjJdJjI1NV0oY1tlPj4yXXwwLDMpfDApPT0wOjApe2E9OTticmVha31pZigoY1tiPj4yXXwwKT4+PjA+PTYpe2E9MTI7YnJlYWt9Zz1jW2I+PjJdfDA7Y1tiPj4yXT1nKzE7Y1tlPj4yXT1jWzY3NzIrKGc8PDIpPj4yXX1pZigoYXwwKT09OSl7Y1tkPj4yXT1jW2U+PjJdO2c9Y1tkPj4yXXwwO2k9ZjtyZXR1cm4gZ3wwfWVsc2UgaWYoKGF8MCk9PTEyKXtjW2Q+PjJdPTA7Zz1jW2Q+PjJdfDA7aT1mO3JldHVybiBnfDB9cmV0dXJuIDB9ZnVuY3Rpb24gbk8oYSxiLGQsZSxmKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MDtnPWk7aT1pKzMyfDA7aD1nKzE2fDA7bD1nO2s9ZysxMnwwO2o9Zys4fDA7Y1toPj4yXT1hO2E9bDtjW2E+PjJdPWI7Y1thKzQ+PjJdPWQ7Y1trPj4yXT1lO2Nbaj4+Ml09ZjtlPWw7ZT1vTyhjWyhjW2g+PjJdfDApKzEyPj4yXXwwLGNbZT4+Ml18MCxjW2UrND4+Ml18MCxjW2s+PjJdfDAsY1tqPj4yXXwwLChjW2g+PjJdfDApKzIwfDApfDA7aT1nO3JldHVybiBlfDB9ZnVuY3Rpb24gb08oYSxiLGQsZSxmLGcpe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO3ZhciBoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MDtxPWk7aT1pKzQ4fDA7aD1xKzMyfDA7aj1xKzh8MDtrPXErMjh8MDtsPXErMjR8MDttPXErMjB8MDtvPXErMTZ8MDtuPXE7Y1toPj4yXT1hO2E9ajtjW2E+PjJdPWI7Y1thKzQ+PjJdPWQ7Y1trPj4yXT1lO2NbbD4+Ml09ZjtjW20+PjJdPWc7Y1tvPj4yXT0wO2NbbD4+Ml09Y1tsPj4yXSYxMzEwNzE7ZG97ZT12UihjW2g+PjJdfDAsY1tqPj4yXXwwLDApfDA7Zz1uO2NbZz4+Ml09ZTtjW2crND4+Ml09KChlfDApPDApPDwzMT4+MzE7aWYoKGNbbis0Pj4yXXwwKTwwKXtwPTM7YnJlYWt9Y1tvPj4yXT1PYltjWzY1NzI+PjJdJjI1NV0oY1toPj4yXXwwLGNbaz4+Ml18MCxjW2w+PjJdfDApfDA7aWYoKGNbbz4+Ml18MCk+PTApYnJlYWt9d2hpbGUoKGNbKEJRKCl8MCk+PjJdfDApPT00KTtpZigocHwwKT09MyljW28+PjJdPS0xO2lmKChjW28+PjJdfDApPj0wKXtwPWNbbz4+Ml18MDtpPXE7cmV0dXJuIHB8MH1wPWNbKEJRKCl8MCk+PjJdfDA7Y1tjW20+PjJdPj4yXT1wO3A9Y1tvPj4yXXwwO2k9cTtyZXR1cm4gcHwwfWZ1bmN0aW9uIHBPKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wO2Q9aTtpPWkrMTZ8MDtlPWQrNHwwO2Y9ZDtjW2U+PjJdPWE7Y1tmPj4yXT1iO2NbKGNbZT4+Ml18MCkrMjA+PjJdPWNbZj4+Ml07aT1kO3JldHVybn1mdW5jdGlvbiBxTyhhLGIpe2E9YXwwO2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTA7Zj1pO2k9aSsxNnwwO2Q9Zis4fDA7Zz1mKzR8MDtlPWY7Y1tnPj4yXT1hO2NbZT4+Ml09Yjtzd2l0Y2goY1tnPj4yXXwwKXtjYXNlIDM3OmNhc2UgNDpjYXNlIDE2OmNhc2UgMTEwOmNhc2UgMTE6Y2FzZSAxMzp7Y1tkPj4yXT01O2JyZWFrfWNhc2UgMTp7Y1tkPj4yXT0zO2JyZWFrfWRlZmF1bHQ6Y1tkPj4yXT1jW2U+PjJdfWk9ZjtyZXR1cm4gY1tkPj4yXXwwfWZ1bmN0aW9uIHJPKGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTA7Zj1pO2k9aSsxNnwwO2c9ZisxMnwwO2U9ZjtjW2c+PjJdPWE7Y1tmKzg+PjJdPWI7Y1tmKzQ+PjJdPWQ7Y1tlPj4yXT1xUihjW2c+PjJdfDApfDA7aT1mO3JldHVybiBjW2U+PjJdfDB9ZnVuY3Rpb24gc08oYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTA7aD1pO2k9aSsxNnwwO2U9aCsxMnwwO2Y9aDtnPWgrOHwwO2NbZT4+Ml09YTthPWY7Y1thPj4yXT1iO2NbYSs0Pj4yXT1kO3doaWxlKDEpe2NbZz4+Ml09WWJbY1s2NTEyPj4yXSYyNTVdKGNbZT4+Ml18MCxjW2Y+PjJdfDApfDA7aWYoKGNbZz4+Ml18MCk+PTApe2I9NDticmVha31pZigoY1soQlEoKXwwKT4+Ml18MCkhPTQpe2I9NDticmVha319aWYoKGJ8MCk9PTQpe2k9aDtyZXR1cm4gY1tnPj4yXXwwfXJldHVybiAwfWZ1bmN0aW9uIHRPKGEsYixkLGUsZil7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MDtxPWk7aT1pKzQ4fDA7Zz1xKzM2fDA7aD1xKzMyfDA7aj1xKzh8MDtrPXErMjh8MDtsPXErMjR8MDttPXErMjB8MDtvPXErMTZ8MDtuPXE7Y1toPj4yXT1hO2E9ajtjW2E+PjJdPWI7Y1thKzQ+PjJdPWQ7Y1trPj4yXT1lO2NbbD4+Ml09ZjtjW28+PjJdPTA7ZG97YT12UihjWyhjW2g+PjJdfDApKzEyPj4yXXwwLGNbaj4+Ml18MCwwKXwwO2U9bjtjW2U+PjJdPWE7Y1tlKzQ+PjJdPSgoYXwwKTwwKTw8MzE+PjMxO2lmKChjW24rND4+Ml18MCk8MCl7cD0zO2JyZWFrfWNbbT4+Ml09T2JbY1s2NTM2Pj4yXSYyNTVdKGNbKGNbaD4+Ml18MCkrMTI+PjJdfDAsY1trPj4yXXwwLGNbbD4+Ml18MCl8MDtpZigoY1ttPj4yXXwwKT09KGNbbD4+Ml18MCkpYnJlYWs7aWYoKGNbbT4+Ml18MCk+PTApe2lmKChjW20+PjJdfDApPjApe2NbbD4+Ml09KGNbbD4+Ml18MCktKGNbbT4+Ml18MCk7YT1jW20+PjJdfDA7ZT1qO2E9UlIoY1tlPj4yXXwwLGNbZSs0Pj4yXXwwLGF8MCwoKGF8MCk8MCk8PDMxPj4zMXwwKXwwO2U9ajtjW2U+PjJdPWE7Y1tlKzQ+PjJdPUM7Y1tvPj4yXT0oY1tvPj4yXXwwKSsoY1ttPj4yXXwwKTtjW2s+PjJdPShjW2s+PjJdfDApKyhjW20+PjJdfDApfX1lbHNle2lmKChjWyhCUSgpfDApPj4yXXwwKSE9NCl7cD04O2JyZWFrfWNbbT4+Ml09MX19d2hpbGUoKGNbbT4+Ml18MCk+MCk7aWYoKHB8MCk9PTMpe3A9Y1toPj4yXXwwO3BPKHAsY1soQlEoKXwwKT4+Ml18MCk7Y1tnPj4yXT0tMTtwPWNbZz4+Ml18MDtpPXE7cmV0dXJuIHB8MH1lbHNlIGlmKChwfDApPT04KXtjW28+PjJdPTA7cD1jW2g+PjJdfDA7cE8ocCxjWyhCUSgpfDApPj4yXXwwKX1jW2c+PjJdPShjW20+PjJdfDApKyhjW28+PjJdfDApO3A9Y1tnPj4yXXwwO2k9cTtyZXR1cm4gcHwwfWZ1bmN0aW9uIHVPKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MDtkPWk7aT1pKzE2fDA7ZT1kKzR8MDtiPWQ7Y1tlPj4yXT1hO2NbYj4+Ml09Y1tlPj4yXTtpZigoY1soY1tiPj4yXXwwKSsxMj4+Ml18MCk+PTApe2JPKGNbYj4+Ml18MCxjWyhjW2I+PjJdfDApKzEyPj4yXXwwLDMxMzIxKTtjWyhjW2I+PjJdfDApKzEyPj4yXT0tMX1LZChjWyhjW2I+PjJdfDApKzI4Pj4yXXwwKTthPWNbYj4+Ml18MDtiPWErNDR8MDtkb3tjW2E+PjJdPTA7YT1hKzR8MH13aGlsZSgoYXwwKTwoYnwwKSk7aT1kO3JldHVybiAwfWZ1bmN0aW9uIHZPKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MDtkPWk7aT1pKzE2fDA7Y1tkKzQ+PjJdPWE7Y1tkPj4yXT1iO2k9ZDtyZXR1cm4gNjc5Nn1mdW5jdGlvbiB3TyhhKXthPWF8MDt2YXIgYj0wLGQ9MDtiPWk7aT1pKzE2fDA7ZD1iO2NbZD4+Ml09YTthPXVPKGNbZD4+Ml18MCl8MDtpPWI7cmV0dXJuIGF8MH1mdW5jdGlvbiB4TyhhLGIpe2E9YXwwO2I9YnwwO3ZhciBkPTA7ZD1pO2k9aSsxNnwwO2NbZCs0Pj4yXT1hO2NbZD4+Ml09YjtpPWQ7cmV0dXJuIDB9ZnVuY3Rpb24geU8oYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wO2Q9aTtpPWkrMTZ8MDtjW2QrND4+Ml09YTtjW2Q+PjJdPWI7aT1kO3JldHVybiAwfWZ1bmN0aW9uIHpPKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MCxlPTA7ZD1pO2k9aSsxNnwwO2U9ZDtjW2QrND4+Ml09YTtjW2U+PjJdPWI7Y1tjW2U+PjJdPj4yXT0wO2k9ZDtyZXR1cm4gMH1mdW5jdGlvbiBBTyhiLGQsZSl7Yj1ifDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTA7bj1pO2k9aSszMnwwO209bjtmPW4rMjR8MDtnPW4rMjB8MDtoPW4rMTZ8MDtqPW4rMTJ8MDtsPW4rOHwwO2s9bis0fDA7Y1tnPj4yXT1iO2NbaD4+Ml09ZDtjW2o+PjJdPWU7Y1tsPj4yXT1KZihjW2c+PjJdfDApfDA7Y1trPj4yXT0wO2RvIGlmKChhW2NbZz4+Ml0+PjBdfDApIT00Nyl7aWYoWWJbY1s2NDc2Pj4yXSYyNTVdKGNbaD4+Ml18MCwoY1tqPj4yXXwwKS0yfDApfDApe2Nbaz4+Ml09SmYoY1toPj4yXXwwKXwwO2I9Y1trPj4yXXwwO2Nbaz4+Ml09YisxO2FbKGNbaD4+Ml18MCkrYj4+MF09NDc7YnJlYWt9Yj1vdCgzNTM3OSl8MDtjW2Y+PjJdPWNPKGIsNDQxMzMsY1tnPj4yXXwwLDM1Mzc5KXwwO2I9Y1tmPj4yXXwwO2k9bjtyZXR1cm4gYnwwfXdoaWxlKDApO2lmKCgoY1trPj4yXXwwKSsoY1tsPj4yXXwwKSsxfDApPihjW2o+PjJdfDApKXthWyhjW2g+PjJdfDApKyhjW2s+PjJdfDApPj4wXT0wO2NbZj4+Ml09b3QoMzUzODgpfDA7Yj1jW2Y+PjJdfDA7aT1uO3JldHVybiBifDB9ZWxzZXtkPShjW2o+PjJdfDApLShjW2s+PjJdfDApfDA7Yj0oY1toPj4yXXwwKSsoY1trPj4yXXwwKXwwO2NbbT4+Ml09Y1tnPj4yXTtRZChkLGIsMTgzOTEsbSl8MDtjW2Y+PjJdPTA7Yj1jW2Y+PjJdfDA7aT1uO3JldHVybiBifDB9cmV0dXJuIDB9ZnVuY3Rpb24gQk8oYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wO2o9aTtpPWkrOTZ8MDtrPWorOTJ8MDtkPWorODh8MDtmPWorODR8MDtoPWorOHwwO2U9ais0fDA7Zz1qO2Nbaz4+Ml09YTtjW2Q+PjJdPWI7Y1tmPj4yXT0wO2lmKFliW2NbNjQ4OD4+Ml0mMjU1XShjW2s+PjJdfDAsaCl8MCl7az1jW2Y+PjJdfDA7aT1qO3JldHVybiBrfDB9Wk4oKTtjW2U+PjJdPWNbMTczOF07d2hpbGUoMSl7aWYoY1tlPj4yXXwwKWlmKChjW2NbZT4+Ml0+PjJdfDApIT0oY1toPj4yXXwwKSlhPTE7ZWxzZSBhPShjWyhjW2U+PjJdfDApKzQ+PjJdfDApIT0oY1toKzcyPj4yXXwwKTtlbHNlIGE9MDtiPWNbZT4+Ml18MDtpZighYSlicmVhaztjW2U+PjJdPWNbYiszMj4+Ml19aWYoYil7Y1tnPj4yXT0oY1tlPj4yXXwwKSsyODt3aGlsZSgxKXtpZighKGNbY1tnPj4yXT4+Ml18MCkpYnJlYWs7aWYoKGNbKGNbY1tnPj4yXT4+Ml18MCkrND4+Ml18MCk9PShjW2Q+PjJdfDApKWJyZWFrO2NbZz4+Ml09KGNbY1tnPj4yXT4+Ml18MCkrOH1jW2Y+PjJdPWNbY1tnPj4yXT4+Ml07aWYoY1tmPj4yXXwwKWNbY1tnPj4yXT4+Ml09Y1soY1tmPj4yXXwwKSs4Pj4yXX0kTigpO2s9Y1tmPj4yXXwwO2k9ajtyZXR1cm4ga3wwfWZ1bmN0aW9uIENPKGIsZCxlLGYsZyl7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7dmFyIGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MDtyPWk7aT1pKzU2MHwwO2g9cisyOHwwO2o9cisyNHwwO2s9cisyMHwwO2w9cisxNnwwO209cisxMnwwO289cis4fDA7cT1yKzMyfDA7bj1yKzR8MDtwPXI7Y1toPj4yXT1iO2Nbaj4+Ml09ZDtjW2s+PjJdPWU7Y1tsPj4yXT1mO2NbbT4+Ml09ZztjW28+PjJdPTA7Y1tjW2s+PjJdPj4yXT0wO2NbY1tsPj4yXT4+Ml09MDtjW2NbbT4+Ml0+PjJdPTA7aWYoY1tqPj4yXSY1MjYzMzYpe2Nbbj4+Ml09KEpmKGNbaD4+Ml18MCl8MCktMTt3aGlsZSgxKXtpZigoYVsoY1toPj4yXXwwKSsoY1tuPj4yXXwwKT4+MF18MCk9PTQ1KWJyZWFrO2Nbbj4+Ml09KGNbbj4+Ml18MCkrLTF9VFIocXwwLGNbaD4+Ml18MCxjW24+PjJdfDApfDA7YVtxKyhjW24+PjJdfDApPj4wXT0wO2Nbbz4+Ml09U08ocSxjW2s+PjJdfDAsY1tsPj4yXXwwLGNbbT4+Ml18MCl8MDtiPWNbbz4+Ml18MDtpPXI7cmV0dXJuIGJ8MH1pZihjW2o+PjJdJjgpe2NbY1trPj4yXT4+Ml09Mzg0O2I9Y1tvPj4yXXwwO2k9cjtyZXR1cm4gYnwwfWlmKCEoY1tqPj4yXSY2NCkpe2I9Y1tvPj4yXXwwO2k9cjtyZXR1cm4gYnwwfWNbcD4+Ml09SGYoY1toPj4yXXwwLDQ0NjA2KXwwO2lmKCEoY1twPj4yXXwwKSl7Yj1jW28+PjJdfDA7aT1yO3JldHVybiBifDB9Y1tvPj4yXT1TTyhjW3A+PjJdfDAsY1trPj4yXXwwLGNbbD4+Ml18MCxjW20+PjJdfDApfDA7Yj1jW28+PjJdfDA7aT1yO3JldHVybiBifDB9ZnVuY3Rpb24gRE8oYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTA7aD1pO2k9aSsxNnwwO2U9aCs4fDA7Zj1oKzR8MDtnPWg7Y1tlPj4yXT1hO2NbZj4+Ml09YjtjW2c+PjJdPWQ7aWYoUGJbY1s2NjkyPj4yXSYyNTVdKCl8MCl7Yj0wO2k9aDtyZXR1cm4gYnwwfWI9T2JbY1s2NjgwPj4yXSYyNTVdKGNbZT4+Ml18MCxjW2Y+PjJdfDAsY1tnPj4yXXwwKXwwO2k9aDtyZXR1cm4gYnwwfWZ1bmN0aW9uIEVPKGEsZCxmLGcsaCl7YT1hfDA7ZD1kfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7dmFyIGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wO3Q9aTtpPWkrNDh8MDtyPXQ7aj10KzQwfDA7az10KzM2fDA7dT10KzMyfDA7bD10KzI4fDA7bT10KzI0fDA7bz10KzIwfDA7cD10KzE2fDA7cT10KzEyfDA7cz10Kzh8MDtuPXQrNHwwO2Nbaj4+Ml09YTtjW2s+PjJdPWQ7Y1t1Pj4yXT1mO2NbbD4+Ml09ZztjW20+PjJdPWg7Y1twPj4yXT1jW3U+PjJdO2NbcT4+Ml09MDtjWyhjW3A+PjJdfDApKzEyPj4yXT1jW2s+PjJdO2NbKGNbcD4+Ml18MCkrND4+Ml09Y1tqPj4yXTtjWyhjW3A+PjJdfDApKzMyPj4yXT1jW2w+PjJdO2JbKGNbcD4+Ml18MCkrMTg+PjFdPWNbbT4+Ml0mMjU1O2lmKElmKChjW20+PjJdJjY0fDApIT0wP2NbbD4+Ml18MDowLDQ0NDY1LDEpfDApe3U9KGNbcD4+Ml18MCkrMTh8MDtiW3U+PjFdPWVbdT4+MV18MHwxNn1pZighKGhSKGNbKGNbaj4+Ml18MCkrMTY+PjJdfDAsNDQwODEpfDApKXt1PShjW3A+PjJdfDApKzE4fDA7Ylt1Pj4xXT1lW3U+PjFdfDB8MX1pZihjW20+PjJdJjEyOCljW28+PjJdPTY3OTY7ZWxzZSBjW28+PjJdPVliW2NbY1soY1tqPj4yXXwwKSsyMD4+Ml0+PjJdJjI1NV0oY1tsPj4yXXwwLGNbcD4+Ml18MCl8MDtpZigoY1tvPj4yXXwwKSE9Njg3Nil7aWYoKGNbbz4+Ml18MCk9PTYzNjApe2Nbbj4+Ml09KGtSKGNbbD4+Ml18MCl8MCkrNjt1PWNbbj4+Ml18MDtjW3M+PjJdPUpkKHUsKCh1fDApPDApPDwzMT4+MzEpfDA7aWYoIShjW3M+PjJdfDApKWNbcT4+Ml09NztlbHNle2c9Y1tuPj4yXXwwO3U9Y1tzPj4yXXwwO2Nbcj4+Ml09Y1tsPj4yXTtRZChnLHUsNDQ0NzAscil8MH1jWyhjW3A+PjJdfDApKzI0Pj4yXT1jW3M+PjJdfX1lbHNle1pOKCk7Y1txPj4yXT1GTyhjW3A+PjJdfDAsKGNbcD4+Ml18MCkrOHwwKXwwO2lmKGNbcT4+Ml18MCl7Yk8oY1twPj4yXXwwLGNbaz4+Ml18MCwzNDY5Mik7Y1trPj4yXT0tMX0kTigpfXBPKGNbcD4+Ml18MCwwKTtpZighKGNbcT4+Ml18MCkpe2NbY1twPj4yXT4+Ml09Y1tvPj4yXTtHTyhjW3A+PjJdfDApO3U9Y1txPj4yXXwwO2k9dDtyZXR1cm4gdXwwfWlmKChjW2s+PjJdfDApPDApe3U9Y1txPj4yXXwwO2k9dDtyZXR1cm4gdXwwfWJPKGNbcD4+Ml18MCxjW2s+PjJdfDAsMzQ3NzcpO3U9Y1txPj4yXXwwO2k9dDtyZXR1cm4gdXwwfWZ1bmN0aW9uIEZPKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wO2s9aTtpPWkrMTEyfDA7Zj1rKzEwNHwwO2Q9aysxMDB8MDtnPWsrOTZ8MDtsPWsrOTJ8MDttPWsrODh8MDtoPWsrODB8MDtlPWsrNHwwO2o9aztjW2Q+PjJdPWE7Y1tnPj4yXT1iO2Nbaj4+Ml09MDtjW20+PjJdPWNbKGNbZD4+Ml18MCkrMTI+PjJdO2NbbD4+Ml09WWJbY1s2NTAwPj4yXSYyNTVdKGNbbT4+Ml18MCxlKXwwO2lmKGNbbD4+Ml18MCl7bT1jW2Q+PjJdfDA7cE8obSxjWyhCUSgpfDApPj4yXXwwKTtpZigoY1soY1tkPj4yXXwwKSsyMD4+Ml18MCk9PTc1KXtjW2Y+PjJdPTIyO209Y1tmPj4yXXwwO2k9aztyZXR1cm4gbXwwfWVsc2V7Y1tmPj4yXT0xMDttPWNbZj4+Ml18MDtpPWs7cmV0dXJuIG18MH19O2NbaD4+Ml09MDtjW2grND4+Ml09MDtjW2g+PjJdPWNbZT4+Ml07Y1toKzQ+PjJdPWNbZSs3Mj4+Ml07Y1tqPj4yXT1jWzE3MzhdO3doaWxlKDEpe2lmKGNbaj4+Ml18MClhPShlUihoLGNbaj4+Ml18MCw4KXwwKSE9MDtlbHNlIGE9MDtkPWNbaj4+Ml18MDtpZighYSlicmVhaztjW2o+PjJdPWNbZCszMj4+Ml19aWYoIWQpe2Nbaj4+Ml09SmQoNDAsMCl8MDtpZighKGNbaj4+Ml18MCkpe2NbZj4+Ml09NzttPWNbZj4+Ml18MDtpPWs7cmV0dXJuIG18MH1kPWNbaj4+Ml18MDthPWQrNDB8MDtkb3tjW2Q+PjJdPTA7ZD1kKzR8MH13aGlsZSgoZHwwKTwoYXwwKSk7bT1jW2o+PjJdfDA7Y1ttPj4yXT1jW2g+PjJdO2NbbSs0Pj4yXT1jW2grND4+Ml07Y1soY1tqPj4yXXwwKSsxNj4+Ml09MTtjWyhjW2o+PjJdfDApKzMyPj4yXT1jWzE3MzhdO2NbKGNbaj4+Ml18MCkrMzY+PjJdPTA7aWYoY1sxNzM4XXwwKWNbKGNbMTczOF18MCkrMzY+PjJdPWNbaj4+Ml07Y1sxNzM4XT1jW2o+PjJdfWVsc2V7bT0oY1tqPj4yXXwwKSsxNnwwO2NbbT4+Ml09KGNbbT4+Ml18MCkrMX1jW2NbZz4+Ml0+PjJdPWNbaj4+Ml07Y1tmPj4yXT0wO209Y1tmPj4yXXwwO2k9aztyZXR1cm4gbXwwfWZ1bmN0aW9uIEdPKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wO2w9aTtpPWkrMTEyfDA7az1sKzI0fDA7aj1sKzE2fDA7Zj1sKzh8MDtkPWw7Zz1sKzEwOHwwO2g9bCszMnwwO2I9bCsyOHwwO2NbZz4+Ml09YTtpZigoZVsoY1tnPj4yXXwwKSsxOD4+MV18MCkmMTI4KXtpPWw7cmV0dXJufWNbYj4+Ml09WWJbY1s2NTAwPj4yXSYyNTVdKGNbKGNbZz4+Ml18MCkrMTI+PjJdfDAsaCl8MDtpZihjW2I+PjJdfDApe2NbZD4+Ml09Y1soY1tnPj4yXXwwKSszMj4+Ml07UmQoMjgsNDQ0NzgsZCk7aT1sO3JldHVybn1pZighKGNbaCsxNj4+Ml18MCkpe2NbZj4+Ml09Y1soY1tnPj4yXXwwKSszMj4+Ml07UmQoMjgsNDQ1MDIsZik7aT1sO3JldHVybn1hPWNbZz4+Ml18MDtpZigoY1toKzE2Pj4yXXwwKT4+PjA+MSl7Y1tqPj4yXT1jW2ErMzI+PjJdO1JkKDI4LDQ0NTMxLGopO2k9bDtyZXR1cm59aWYoIShsTyhhKXwwKSl7aT1sO3JldHVybn1jW2s+PjJdPWNbKGNbZz4+Ml18MCkrMzI+PjJdO1JkKDI4LDQ0NTU4LGspO2k9bDtyZXR1cm59ZnVuY3Rpb24gSE8oYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MDtmPWk7aT1pKzE2fDA7Yj1mKzh8MDtlPWYrNHwwO2Q9ZjtjW2I+PjJdPWE7Y1tlPj4yXT0wO2NbZD4+Ml09Y1tiPj4yXTtHTyhjW2Q+PjJdfDApO0pPKGNbYj4+Ml18MCwwKXwwO1pOKCk7aWYoKGNbKGNbZD4+Ml18MCkrOD4+Ml18MCkhPTA/KGNbKGNbKGNbZD4+Ml18MCkrOD4+Ml18MCkrMjQ+PjJdfDApIT0wOjApUU8oY1tkPj4yXXwwKTtSTyhjW2Q+PjJdfDApO2NbZT4+Ml09dU8oY1tiPj4yXXwwKXwwOyROKCk7aT1mO3JldHVybiBjW2U+PjJdfDB9ZnVuY3Rpb24gSU8oZSxmKXtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wO3A9aTtpPWkrNDh8MDtrPXArNDR8MDtxPXArNDB8MDtsPXArMzZ8MDtvPXArMzJ8MDttPXArMjh8MDtuPXArMjR8MDtoPXArOHwwO2o9cDtjW3E+PjJdPWU7Y1tsPj4yXT1mO2Nbbz4+Ml09MDtjW20+PjJdPWNbcT4+Ml07Y1tqPj4yXT0wO2lmKChkWyhjW20+PjJdfDApKzE2Pj4wXXwwfDApPj0oY1tsPj4yXXwwKSl7Y1trPj4yXT0wO3E9Y1trPj4yXXwwO2k9cDtyZXR1cm4gcXwwfVpOKCk7Y1tuPj4yXT1jWyhjW20+PjJdfDApKzg+PjJdO2lmKChkWyhjW20+PjJdfDApKzE2Pj4wXXwwfDApIT0oZFsoY1tuPj4yXXwwKSsxMj4+MF18MHwwKT8oKGNbbD4+Ml18MCk+MT8xOihkWyhjW24+PjJdfDApKzEyPj4wXXwwfDApPj0zKTowKWNbbz4+Ml09NTtlbHNlIGc9NjthOmRvIGlmKChnfDApPT02KXtkbyBpZigoY1tsPj4yXXwwKT09MSl7aWYoKGRbKGNbbj4+Ml18MCkrMTI+PjBdfDB8MCkhPTE/KGRbKGNbbj4+Ml18MCkrMTI+PjBdfDB8MCkhPTI6MClicmVhazthWyhjW20+PjJdfDApKzE2Pj4wXT0xO3E9KGNbbj4+Ml18MCkrOHwwO2NbcT4+Ml09KGNbcT4+Ml18MCkrMTtxPShjW24+PjJdfDApKzI0fDA7Y1txPj4yXT0oY1txPj4yXXwwKSsxO2JyZWFrIGF9d2hpbGUoMCk7Y1toKzg+PjJdPTE7YltoKzI+PjFdPTA7aWYoKGNbbD4+Ml18MCkhPTEpe2lmKChjW2w+PjJdfDApPT00PyhkWyhjW20+PjJdfDApKzE2Pj4wXXwwfDApPDM6MClnPTEzfWVsc2UgZz0xMztpZigoZ3wwKT09MTM/KGJbaD4+MV09KGNbbD4+Ml18MCk9PTE/MDoxLGNbaCs0Pj4yXT1jWzM4NF0sKE9PKGNbbT4+Ml18MCxoKXwwKSE9MCk6MCl7Y1tqPj4yXT1jWyhCUSgpfDApPj4yXTtjW28+PjJdPXFPKGNbaj4+Ml18MCwzODUwKXwwO2lmKChjW28+PjJdfDApPT01KWJyZWFrO3BPKGNbbT4+Ml18MCxjW2o+PjJdfDApO2JyZWFrfWRvIGlmKChjW2w+PjJdfDApIT0xKXtpZigoY1tsPj4yXXwwKT09ND8oY1soY1tuPj4yXXwwKSs4Pj4yXXwwKT4xOjApe2Nbbz4+Ml09NTticmVha31iW2g+PjFdPTE7Zj1jWzM4NF18MDtpZigoY1tsPj4yXXwwKT09Mil7Y1toKzQ+PjJdPWYrMTtjW2grOD4+Ml09MX1lbHNle2NbaCs0Pj4yXT1mKzI7Y1toKzg+PjJdPTUxMH1pZigoT08oY1ttPj4yXXwwLGgpfDApIT0wPyhjW2o+PjJdPWNbKEJRKCl8MCk+PjJdLGNbbz4+Ml09cU8oY1tqPj4yXXwwLDM4NTApfDAsKGNbbz4+Ml18MCkhPTUpOjApcE8oY1ttPj4yXXwwLGNbaj4+Ml18MCl9ZWxzZXtjW2grND4+Ml09KGNbMzg0XXwwKSsyO2NbaCs4Pj4yXT01MTA7aWYoT08oY1ttPj4yXXwwLGgpfDApe2Nbaj4+Ml09Y1soQlEoKXwwKT4+Ml07Y1tvPj4yXT1xTyhjW2o+PjJdfDAsMzg1MCl8MH1jW2grND4+Ml09Y1szODRdO2NbaCs4Pj4yXT0xO2JbaD4+MV09MjtxPShPTyhjW20+PjJdfDAsaCl8MCkhPTA7aWYocSYoY1tvPj4yXXwwKT09MCl7Y1tqPj4yXT1jWyhCUSgpfDApPj4yXTtjW28+PjJdPTIwNTh9aWYoIShjW28+PjJdfDApKXthWyhjW20+PjJdfDApKzE2Pj4wXT0xO3E9KGNbbj4+Ml18MCkrMjR8MDtjW3E+PjJdPShjW3E+PjJdfDApKzE7Y1soY1tuPj4yXXwwKSs4Pj4yXT0xO2JyZWFrfWlmKChjW28+PjJdfDApPT01KWJyZWFrIGE7cE8oY1ttPj4yXXwwLGNbaj4+Ml18MCk7YnJlYWsgYX13aGlsZSgwKTtmPWNbbD4+Ml18MDtpZighKGNbbz4+Ml18MCkpe2FbKGNbbT4+Ml18MCkrMTY+PjBdPWY7YVsoY1tuPj4yXXwwKSsxMj4+MF09Y1tsPj4yXTticmVha31pZigoZnwwKT09NCl7YVsoY1ttPj4yXXwwKSsxNj4+MF09MzthWyhjW24+PjJdfDApKzEyPj4wXT0zfX13aGlsZSgwKTskTigpO2Nbaz4+Ml09Y1tvPj4yXTtxPWNbaz4+Ml18MDtpPXA7cmV0dXJuIHF8MH1mdW5jdGlvbiBKTyhhLGIpe2E9YXwwO2I9YnwwO3ZhciBkPTAsZT0wLGY9MDtkPWk7aT1pKzE2fDA7Zj1kKzR8MDtlPWQ7Y1tmPj4yXT1hO2NbZT4+Ml09YjthPU5PKGNbZj4+Ml18MCxjW2U+PjJdfDAsMCl8MDtpPWQ7cmV0dXJuIGF8MH1mdW5jdGlvbiBLTyhlLGYpe2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wO249aTtpPWkrNDh8MDttPW47bz1uKzQwfDA7Zz1uKzM2fDA7az1uKzMyfDA7bD1uKzI4fDA7aj1uKzI0fDA7aD1uKzh8MDtjW28+PjJdPWU7Y1tnPj4yXT1mO2Nbaz4+Ml09MDtjW2w+PjJdPTA7Y1tqPj4yXT1jW28+PjJdO1pOKCk7aWYoKGRbKGNbKGNbaj4+Ml18MCkrOD4+Ml18MCkrMTI+PjBdfDApPjEpY1tsPj4yXT0xO2RvIGlmKChjW2w+PjJdfDApPT0wPyhhWyhjWyhjW2o+PjJdfDApKzg+PjJdfDApKzEzPj4wXXwwKT09MDowKXtiW2grMj4+MV09MDtjW2grND4+Ml09KGNbMzg0XXwwKSsxO2NbaCs4Pj4yXT0xO2JbaD4+MV09MTtmPWNbMTYzMV18MDtvPWNbKGNbaj4+Ml18MCkrMTI+PjJdfDA7Y1ttPj4yXT1oO2lmKE9iW2YmMjU1XShvLDEyLG0pfDApe2Nbaz4+Ml09MzU5NDtvPWNbaj4+Ml18MDtwTyhvLGNbKEJRKCl8MCk+PjJdfDApO2JyZWFrfWlmKChiW2g+PjFdfDApIT0yKWNbbD4+Ml09MX13aGlsZSgwKTskTigpO2NbY1tnPj4yXT4+Ml09Y1tsPj4yXTtpPW47cmV0dXJuIGNbaz4+Ml18MH1mdW5jdGlvbiBMTyhhLGYsZyxoLGope2E9YXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO3ZhciBrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wLEU9MCxGPTA7RT1pO2k9aSsxNjB8MDt6PUUrMTUyfDA7Rj1FKzE0OHwwO0E9RSsxNDR8MDtrPUUrMTQwfDA7bD1FKzEzNnwwO0I9RSsxMzJ8MDt1PUUrMTI4fDA7dD1FKzEyNHwwO0M9RSsxMjB8MDtEPUUrMTE2fDA7cz1FKzExMnwwO3I9RSsxMDh8MDttPUUrMTA0fDA7cD1FKzEwMHwwO3c9RSsyNHwwO289RSsyMHwwO3g9RSsxNnwwO3k9RSsxMnwwO3E9RSs4fDA7bj1FKzR8MDt2PUU7Y1tGPj4yXT1hO2NbQT4+Ml09ZjtjW2s+PjJdPWc7Y1tsPj4yXT1oO2NbQj4+Ml09ajtjW3U+PjJdPWNbRj4+Ml07Y1tEPj4yXT0wO2Nbcz4+Ml09YU8oKXwwO2lmKChjWyhjW3U+PjJdfDApKzM2Pj4yXXwwKT09MD8oY1tEPj4yXT1NTyhjW3U+PjJdfDApfDAsKGNbRD4+Ml18MCkhPTApOjApe2Nbej4+Ml09Y1tEPj4yXTtGPWNbej4+Ml18MDtpPUU7cmV0dXJuIEZ8MH1jW3Q+PjJdPWNbKGNbdT4+Ml18MCkrMzY+PjJdO2NbQz4+Ml09Y1tjW3Q+PjJdPj4yXTtjW3I+PjJdPV8oKChjW0E+PjJdfDApKyhjW3M+PjJdfDApfDApLyhjW3M+PjJdfDApfDAsY1tzPj4yXXwwKXwwO2E6ZG8gaWYoKGVbKGNbQz4+Ml18MCkrMjA+PjFdfDB8MCk8KGNbcj4+Ml18MCkpe2NbcD4+Ml09XyhjW3I+PjJdfDAsY1trPj4yXXwwKXwwO2NbKGNbQz4+Ml18MCkrMTY+PjJdPWNbaz4+Ml07YjpkbyBpZigoY1soY1tDPj4yXXwwKSsxMj4+Ml18MCk+PTApe2lmKFliW2NbNjUwMD4+Ml0mMjU1XShjWyhjW0M+PjJdfDApKzEyPj4yXXwwLHcpfDApe2NbRD4+Ml09NDg3NDticmVhayBhfWlmKChjW3crMzY+PjJdfDApPChjW3A+PjJdfDApKXtpZighKGNbbD4+Ml18MCkpYnJlYWsgYTtjW28+PjJdPShjW3crMzY+PjJdfDApLzQwOTZ8MDt3aGlsZSgxKXtpZigoY1tvPj4yXXwwKT49KChjW3A+PjJdfDApLzQwOTZ8MHwwKSlicmVhayBiO2NbeD4+Ml09MDtGPShjW28+PjJdPDwxMikrNDA5Ni0xfDA7aWYoKG9PKGNbKGNbQz4+Ml18MCkrMTI+PjJdfDAsRiwoKEZ8MCk8MCk8PDMxPj4zMSwxODQwMiwxLHgpfDApIT0xKWJyZWFrO2Nbbz4+Ml09KGNbbz4+Ml18MCkrMX1jW3k+PjJdPWNbKGNbQz4+Ml18MCkrOD4+Ml07Y1tEPj4yXT1jTyg0ODc0LDQ0MTg2LGNbeT4+Ml18MCwzMzgzOSl8MDticmVhayBhfX13aGlsZSgwKTtjW20+PjJdPUxkKGNbKGNbQz4+Ml18MCkrMjQ+PjJdfDAsY1tyPj4yXTw8Mil8MDtpZighKGNbbT4+Ml18MCkpe2NbRD4+Ml09MzA4MjticmVha31jWyhjW0M+PjJdfDApKzI0Pj4yXT1jW20+PjJdO3doaWxlKDEpe2lmKChlWyhjW0M+PjJdfDApKzIwPj4xXXwwfDApPj0oY1tyPj4yXXwwKSlicmVhayBhO2NbcT4+Ml09XyhjW2s+PjJdfDAsY1tzPj4yXXwwKXwwO2lmKChjWyhjW0M+PjJdfDApKzEyPj4yXXwwKT49MCl7dz1jWzE2NzZdfDA7Zz1jW3E+PjJdfDA7eD0oZFsoY1tDPj4yXXwwKSsyMj4+MF18MHwwKSE9MD8xOjM7eT1jWyhjW0M+PjJdfDApKzEyPj4yXXwwO0Y9Y1trPj4yXXwwO0Y9YVMoRnwwLCgoRnwwKTwwKTw8MzE+PjMxfDAsZVsoY1tDPj4yXXwwKSsyMD4+MV18MHwwLDApfDA7Y1t2Pj4yXT1TYlt3JjI1NV0oMCxnLHgsMSx5LEYpfDA7aWYoKGNbdj4+Ml18MCk9PSgtMXwwKSl7az0yMTticmVha319ZWxzZXtGPWNbaz4+Ml18MDtjW3Y+PjJdPUpkKEYsKChGfDApPDApPDwzMT4+MzEpfDA7aWYoIShjW3Y+PjJdfDApKXtrPTIzO2JyZWFrfVZSKGNbdj4+Ml18MCwwLGNbaz4+Ml18MCl8MH1jW24+PjJdPTA7d2hpbGUoMSl7aWYoKGNbbj4+Ml18MCk+PShjW3M+PjJdfDApKWJyZWFrO0Y9XyhjW2s+PjJdfDAsY1tuPj4yXXwwKXwwO2NbKGNbKGNbQz4+Ml18MCkrMjQ+PjJdfDApKygoZVsoY1tDPj4yXXwwKSsyMD4+MV18MCkrKGNbbj4+Ml18MCk8PDIpPj4yXT0oY1t2Pj4yXXwwKStGO2Nbbj4+Ml09KGNbbj4+Ml18MCkrMX1GPShjW0M+PjJdfDApKzIwfDA7YltGPj4xXT0oZVtGPj4xXXwwKSsoY1tzPj4yXXwwKX1pZigoa3wwKT09MjEpe2NbRD4+Ml09Y08oNTM4Niw0NDI3MyxjWyhjW0M+PjJdfDApKzg+PjJdfDAsMzM4NjYpfDA7YnJlYWt9ZWxzZSBpZigoa3wwKT09MjMpe2NbRD4+Ml09NzticmVha319d2hpbGUoMCk7aWYoKGVbKGNbQz4+Ml18MCkrMjA+PjFdfDB8MCk+KGNbQT4+Ml18MCkpY1tjW0I+PjJdPj4yXT1jWyhjWyhjW0M+PjJdfDApKzI0Pj4yXXwwKSsoY1tBPj4yXTw8Mik+PjJdO2Vsc2UgY1tjW0I+PjJdPj4yXT0wO2lmKChjW0Q+PjJdfDApPT0wPyhkWyhjW0M+PjJdfDApKzIyPj4wXXwwfDApIT0wOjApY1tEPj4yXT04O2Nbej4+Ml09Y1tEPj4yXTtGPWNbej4+Ml18MDtpPUU7cmV0dXJuIEZ8MH1mdW5jdGlvbiBNTyhiKXtiPWJ8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wO3I9aTtpPWkrMTI4fDA7bz1yO2U9cisxMTZ8MDtmPXIrMTEyfDA7aj1yKzEwOHwwO2w9cisxMDR8MDttPXIrMTAwfDA7az1yKzk2fDA7cT1yKzkyfDA7Zz1yKzg4fDA7bj1yKzEyfDA7cD1yKzh8MDtoPXIrNHwwO2NbZj4+Ml09YjtjW2o+PjJdPTA7Y1tqPj4yXT1KZCgxNiwwKXwwO2lmKCEoY1tqPj4yXXwwKSl7Y1tlPj4yXT03O3E9Y1tlPj4yXXwwO2k9cjtyZXR1cm4gcXwwfWI9Y1tqPj4yXXwwO2NbYj4+Ml09MDtjW2IrND4+Ml09MDtjW2IrOD4+Ml09MDtjW2IrMTI+PjJdPTA7Wk4oKTtjW2s+PjJdPWNbKGNbZj4+Ml18MCkrOD4+Ml07Y1tsPj4yXT1jWyhjW2s+PjJdfDApKzIwPj4yXTthOmRvIGlmKCEoY1tsPj4yXXwwKSl7Y1twPj4yXT1jWyhjW2Y+PjJdfDApKzMyPj4yXTtkbyBpZighKFliW2NbNjUwMD4+Ml0mMjU1XShjWyhjW2Y+PjJdfDApKzEyPj4yXXwwLG4pfDApKXtjW2c+PjJdPTYrKGtSKGNbcD4+Ml18MCl8MCk7Y1tsPj4yXT1KZCgzNisoY1tnPj4yXXwwKXwwLDApfDA7aWYoIShjW2w+PjJdfDApKXtjW20+PjJdPTc7YnJlYWt9VlIoY1tsPj4yXXwwLDAsMzYrKGNbZz4+Ml18MCl8MCl8MDtiPShjW2w+PjJdfDApKzM2fDA7Y1soY1tsPj4yXXwwKSs4Pj4yXT1iO2NbcT4+Ml09YjtnPWNbZz4+Ml18MDtiPWNbcT4+Ml18MDtjW28+PjJdPWNbcD4+Ml07UWQoZyxiLDQ0NTg2LG8pfDA7Y1soY1tsPj4yXXwwKSsxMj4+Ml09LTE7Y1soY1soY1tmPj4yXXwwKSs4Pj4yXXwwKSsyMD4+Ml09Y1tsPj4yXTtjW2NbbD4+Ml0+PjJdPWNbKGNbZj4+Ml18MCkrOD4+Ml07aWYoKGNbM118MCkhPTA/KGNbKGNbbD4+Ml18MCkrND4+Ml09OCwoY1soY1tsPj4yXXwwKSs0Pj4yXXwwKT09MCk6MCl7Y1ttPj4yXT03O2JyZWFrfWlmKGRbKGNbaz4+Ml18MCkrMTM+PjBdfDApYnJlYWsgYTtjW2g+PjJdPTY2O2lmKElmKGNbKGNbZj4+Ml18MCkrMzI+PjJdfDAsNDQ1OTMsMCl8MCl7Y1toPj4yXT0wO2FbKGNbbD4+Ml18MCkrMjI+PjBdPTF9cD1nTyhjW3E+PjJdfDAsY1toPj4yXXwwLGNbbisxMj4+Ml0mNTExKXwwO2NbKGNbbD4+Ml18MCkrMTI+PjJdPXA7aWYoKGNbKGNbbD4+Ml18MCkrMTI+PjJdfDApPDApe3A9b3QoMzM2OTEpfDA7Y1ttPj4yXT1jTyhwLDQ0MTI4LGNbcT4+Ml18MCwzMzY5MSl8MDticmVha31ETyhjWyhjW2w+PjJdfDApKzEyPj4yXXwwLGNbbisyMD4+Ml18MCxjW24rMjQ+PjJdfDApfDA7Y1ttPj4yXT0wO2lmKChoTyhjW2Y+PjJdfDAsMSwxMjgsMSl8MCk9PTA/KHNPKGNbKGNbbD4+Ml18MCkrMTI+PjJdfDAsMCwwKXwwKSE9MDowKWNbbT4+Ml09Y08oNDYxOCw0NDE1MSxjW3E+PjJdfDAsMzM3MDcpfDA7aWYoIShjW20+PjJdfDApKWNbbT4+Ml09aE8oY1tmPj4yXXwwLDAsMTI4LDEpfDA7aWYoIShjW20+PjJdfDApKWJyZWFrIGF9ZWxzZSBjW20+PjJdPTE4MDI7d2hpbGUoMCk7X04oY1tmPj4yXXwwKTtLZChjW2o+PjJdfDApOyROKCk7Y1tlPj4yXT1jW20+PjJdO3E9Y1tlPj4yXXwwO2k9cjtyZXR1cm4gcXwwfXdoaWxlKDApO2NbY1tqPj4yXT4+Ml09Y1tsPj4yXTtxPShjW2w+PjJdfDApKzI4fDA7Y1txPj4yXT0oY1txPj4yXXwwKSsxO2NbKGNbZj4+Ml18MCkrMzY+PjJdPWNbaj4+Ml07JE4oKTtjWyhjW2o+PjJdfDApKzQ+PjJdPWNbKGNbbD4+Ml18MCkrMzI+PjJdO2NbKGNbbD4+Ml18MCkrMzI+PjJdPWNbaj4+Ml07Y1tlPj4yXT0wO3E9Y1tlPj4yXXwwO2k9cjtyZXR1cm4gcXwwfWZ1bmN0aW9uIE5PKGUsZixnKXtlPWV8MDtmPWZ8MDtnPWd8MDt2YXIgaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTA7cD1pO2k9aSs0OHwwO2g9cCs0NHwwO3E9cCs0MHwwO2o9cCszNnwwO2w9cCsyOHwwO209cCsyNHwwO2s9cCs4fDA7bj1wO2NbcT4+Ml09ZTtjW2o+PjJdPWY7Y1twKzMyPj4yXT1nO2NbbD4+Ml09Y1txPj4yXTtjW24+PjJdPTA7aWYoKGRbKGNbbD4+Ml18MCkrMTY+PjBdfDB8MCk8PShjW2o+PjJdfDApKXtjW2g+PjJdPTA7cT1jW2g+PjJdfDA7aT1wO3JldHVybiBxfDB9Wk4oKTtjW20+PjJdPWNbKGNbbD4+Ml18MCkrOD4+Ml07ZG8gaWYoKGRbKGNbbD4+Ml18MCkrMTY+PjBdfDB8MCk+MSl7aWYoKGNbaj4+Ml18MCk9PTE/KGJbaz4+MV09MCxiW2srMj4+MV09MCxjW2srND4+Ml09KGNbMzg0XXwwKSsyLGNbays4Pj4yXT01MTAsKE9PKGNbbD4+Ml18MCxrKXwwKSE9MCk6MCl7Y1tuPj4yXT0yMzE0O3E9Y1tsPj4yXXwwO3BPKHEsY1soQlEoKXwwKT4+Ml18MCk7YnJlYWt9YltrPj4xXT0yO2JbaysyPj4xXT0wO2Nbays0Pj4yXT1jWzM4NF07Y1trKzg+PjJdPTI7aWYoIShPTyhjW2w+PjJdfDAsayl8MCkpe2FbKGNbbT4+Ml18MCkrMTI+PjBdPTE7bz0xMDticmVha31lbHNle2Nbbj4+Ml09MjA1ODtxPWNbbD4+Ml18MDtwTyhxLGNbKEJRKCl8MCk+PjJdfDApO2JyZWFrfX1lbHNlIG89MTA7d2hpbGUoMCk7aWYoKG98MCk9PTEwPyhjW2o+PjJdfDApPT0wOjApe3E9KGNbbT4+Ml18MCkrOHwwO2NbcT4+Ml09KGNbcT4+Ml18MCkrLTE7ZG8gaWYoIShjWyhjW20+PjJdfDApKzg+PjJdfDApKXtiW2s+PjFdPTI7YltrKzI+PjFdPTA7Y1trKzg+PjJdPTA7Y1trKzQ+PjJdPTA7aWYoIShPTyhjW2w+PjJdfDAsayl8MCkpe2FbKGNbbT4+Ml18MCkrMTI+PjBdPTA7YnJlYWt9ZWxzZXtjW24+PjJdPTIwNTg7cT1jW2w+PjJdfDA7cE8ocSxjWyhCUSgpfDApPj4yXXwwKTthWyhjW20+PjJdfDApKzEyPj4wXT0wO2FbKGNbbD4+Ml18MCkrMTY+PjBdPTA7YnJlYWt9fXdoaWxlKDApO3E9KGNbbT4+Ml18MCkrMjR8MDtjW3E+PjJdPShjW3E+PjJdfDApKy0xO2lmKCEoY1soY1ttPj4yXXwwKSsyND4+Ml18MCkpUE8oY1tsPj4yXXwwKX0kTigpO2lmKCEoY1tuPj4yXXwwKSlhWyhjW2w+PjJdfDApKzE2Pj4wXT1jW2o+PjJdO2NbaD4+Ml09Y1tuPj4yXTtxPWNbaD4+Ml18MDtpPXA7cmV0dXJuIHF8MH1mdW5jdGlvbiBPTyhmLGcpe2Y9ZnwwO2c9Z3wwO3ZhciBoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MDtxPWk7aT1pKzY0fDA7cD1xKzh8MDtvPXE7aD1xKzQ4fDA7aj1xKzQ0fDA7az1xKzQwfDA7bj1xKzM2fDA7bT1xKzMyfDA7bD1xKzE2fDA7Y1tqPj4yXT1mO2Nbaz4+Ml09ZztjW20+PjJdPWNbKGNbaj4+Ml18MCkrOD4+Ml07ZG8gaWYoKChlWyhjW2o+PjJdfDApKzE4Pj4xXXwwKSYzfDApPT0xKXtpZihkWyhjW20+PjJdfDApKzEzPj4wXXwwKXtjW24+PjJdPTA7YnJlYWt9YltsKzI+PjFdPTA7Y1tsKzQ+PjJdPShjWzM4NF18MCkrMjtjW2wrOD4+Ml09NTEwO2JbbD4+MV09MTtnPWNbMTYzMV18MDtwPWNbKGNbaj4+Ml18MCkrMTI+PjJdfDA7Y1tvPj4yXT1sO2Nbbj4+Ml09T2JbZyYyNTVdKHAsMTMsbyl8MDtpZigoY1tuPj4yXXwwKT49MCl7YVsoY1ttPj4yXXwwKSsxMz4+MF09MTtwPShjW20+PjJdfDApKzI0fDA7Y1twPj4yXT0oY1twPj4yXXwwKSsxO2JyZWFrfWNbaD4+Ml09Y1tuPj4yXTtwPWNbaD4+Ml18MDtpPXE7cmV0dXJuIHB8MH1lbHNle2c9Y1sxNjMxXXwwO289Y1soY1tqPj4yXXwwKSsxMj4+Ml18MDtjW3A+PjJdPWNbaz4+Ml07Y1tuPj4yXT1PYltnJjI1NV0obywxMyxwKXwwfXdoaWxlKDApO2NbaD4+Ml09Y1tuPj4yXTtwPWNbaD4+Ml18MDtpPXE7cmV0dXJuIHB8MH1mdW5jdGlvbiBQTyhhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wLGc9MDtnPWk7aT1pKzE2fDA7Yj1nKzEyfDA7ZT1nKzh8MDtkPWcrNHwwO2Y9ZztjW2I+PjJdPWE7Y1tlPj4yXT1jWyhjW2I+PjJdfDApKzg+PjJdO2NbZD4+Ml09Y1soY1tlPj4yXXwwKSsyOD4+Ml07d2hpbGUoMSl7aWYoIShjW2Q+PjJdfDApKWJyZWFrO2NbZj4+Ml09Y1soY1tkPj4yXXwwKSs4Pj4yXTtiTyhjW2I+PjJdfDAsY1tjW2Q+PjJdPj4yXXwwLDMwNTkyKTtLZChjW2Q+PjJdfDApO2NbZD4+Ml09Y1tmPj4yXX1jWyhjW2U+PjJdfDApKzI4Pj4yXT0wO2k9ZztyZXR1cm59ZnVuY3Rpb24gUU8oYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MDtiPWk7aT1pKzE2fDA7ZD1iKzh8MDtlPWIrNHwwO2Y9YjtjW2Q+PjJdPWE7Y1tlPj4yXT1jWyhjW2Q+PjJdfDApKzg+PjJdO2NbZj4+Ml09Y1soY1tkPj4yXXwwKSsyOD4+Ml07Y1soY1tmPj4yXXwwKSs4Pj4yXT1jWyhjW2U+PjJdfDApKzI4Pj4yXTtjWyhjW2U+PjJdfDApKzI4Pj4yXT1jW2Y+PjJdO2NbKGNbZD4+Ml18MCkrMTI+PjJdPS0xO2NbKGNbZD4+Ml18MCkrMjg+PjJdPTA7aT1iO3JldHVybn1mdW5jdGlvbiBSTyhhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTA7ZT1pO2k9aSsxNnwwO2I9ZSs0fDA7ZD1lO2NbYj4+Ml09YTtjW2Q+PjJdPWNbKGNbYj4+Ml18MCkrOD4+Ml07aWYoIShjW2Q+PjJdfDApKXtpPWU7cmV0dXJufWE9KGNbZD4+Ml18MCkrMTZ8MDtjW2E+PjJdPShjW2E+PjJdfDApKy0xO2lmKGNbKGNbZD4+Ml18MCkrMTY+PjJdfDApe2k9ZTtyZXR1cm59UE8oY1tiPj4yXXwwKTtiPWNbKGNbZD4+Ml18MCkrMzI+PjJdfDA7aWYoY1soY1tkPj4yXXwwKSszNj4+Ml18MCljWyhjWyhjW2Q+PjJdfDApKzM2Pj4yXXwwKSszMj4+Ml09YjtlbHNlIGNbMTczOF09YjtpZihjWyhjW2Q+PjJdfDApKzMyPj4yXXwwKWNbKGNbKGNbZD4+Ml18MCkrMzI+PjJdfDApKzM2Pj4yXT1jWyhjW2Q+PjJdfDApKzM2Pj4yXTtLZChjW2Q+PjJdfDApO2k9ZTtyZXR1cm59ZnVuY3Rpb24gU08oYSxiLGQsZSl7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MDtsPWk7aT1pKzk2fDA7bT1sKzkyfDA7Zj1sKzg4fDA7Zz1sKzg0fDA7aD1sKzgwfDA7az1sKzR8MDtqPWw7Y1ttPj4yXT1hO2NbZj4+Ml09YjtjW2c+PjJdPWQ7Y1toPj4yXT1lO2Nbaj4+Ml09MDtpZighKFliW2NbNjQ4OD4+Ml0mMjU1XShjW20+PjJdfDAsayl8MCkpe2NbY1tmPj4yXT4+Ml09Y1trKzEyPj4yXSY1MTE7Y1tjW2c+PjJdPj4yXT1jW2srMjA+PjJdO2NbY1toPj4yXT4+Ml09Y1trKzI0Pj4yXTttPWNbaj4+Ml18MDtpPWw7cmV0dXJuIG18MH1lbHNle2Nbaj4+Ml09MTgwMjttPWNbaj4+Ml18MDtpPWw7cmV0dXJuIG18MH1yZXR1cm4gMH1mdW5jdGlvbiBUTyhhLGIpe2E9YXwwO2I9YnwwO3ZhciBkPTA7ZD1pO2k9aSsxNnwwO2NbZCs0Pj4yXT1hO2NbZD4+Ml09YjtpPWQ7cmV0dXJuIDY4NzZ9ZnVuY3Rpb24gVU8oYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MDtlPWk7aT1pKzE2fDA7Yj1lO2Q9ZSs4fDA7Y1tkPj4yXT1hO2lmKChjW2NbZD4+Ml0+PjJdfDApPD0oY1soY1tkPj4yXXwwKSs0Pj4yXXwwKSl7ZD1iO2NbZD4+Ml09MDtjW2QrND4+Ml09MDtkPWI7YT1kO2E9Y1thPj4yXXwwO2Q9ZCs0fDA7ZD1jW2Q+PjJdfDA7Qz1kO2k9ZTtyZXR1cm4gYXwwfWVsc2V7Zj0oY1tkPj4yXXwwKSs0fDA7YT1jW2Y+PjJdfDA7Y1tmPj4yXT1hKzE7YT1kZShjWyhjWyhjW2Q+PjJdfDApKzg+PjJdfDApKyhhPDwyKT4+Ml18MCl8MDtkPWI7Y1tkPj4yXT1hO2NbZCs0Pj4yXT1DO2Q9YjthPWQ7YT1jW2E+PjJdfDA7ZD1kKzR8MDtkPWNbZD4+Ml18MDtDPWQ7aT1lO3JldHVybiBhfDB9cmV0dXJuIDB9ZnVuY3Rpb24gVk8oYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MC4wLGc9MDtlPWk7aT1pKzE2fDA7Yj1lO2Q9ZSs4fDA7Y1tkPj4yXT1hO2lmKChjW2NbZD4+Ml0+PjJdfDApPD0oY1soY1tkPj4yXXwwKSs0Pj4yXXwwKSl7aFtiPj4zXT0wLjA7Zj0raFtiPj4zXTtpPWU7cmV0dXJuICtmfWVsc2V7Zz0oY1tkPj4yXXwwKSs0fDA7YT1jW2c+PjJdfDA7Y1tnPj4yXT1hKzE7aFtiPj4zXT0rYmUoY1soY1soY1tkPj4yXXwwKSs4Pj4yXXwwKSsoYTw8Mik+PjJdfDApO2Y9K2hbYj4+M107aT1lO3JldHVybiArZn1yZXR1cm4gMC4wfWZ1bmN0aW9uIFdPKGIsZCl7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGo9MCxrPTAsbD0wO2w9aTtpPWkrMzJ8MDtlPWwrMjB8MDtmPWwrMTZ8MDtnPWwrMTJ8MDtrPWwrOHwwO2o9bDtjW2Y+PjJdPWI7Y1tnPj4yXT1kO2lmKChjW2NbZz4+Ml0+PjJdfDApPD0wKXthW2U+PjBdPTQ4O2I9YVtlPj4wXXwwO2k9bDtyZXR1cm4gYnwwfWVsc2V7Yj1jW2c+PjJdfDA7Y1tiPj4yXT0oY1tiPj4yXXwwKSstMTtjW2s+PjJdPX5+K2hbY1tmPj4yXT4+M107aFtqPj4zXT0rKGNbaz4+Ml18MCk7Y1trPj4yXT0oY1trPj4yXXwwKSs0ODtoW2NbZj4+Ml0+PjNdPSgraFtjW2Y+PjJdPj4zXS0raFtqPj4zXSkqMTAuMDthW2U+PjBdPWNbaz4+Ml07Yj1hW2U+PjBdfDA7aT1sO3JldHVybiBifDB9cmV0dXJuIDB9ZnVuY3Rpb24gWE8oYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MDtlPWk7aT1pKzE2fDA7Yj1lKzR8MDtkPWU7Y1tkPj4yXT1hO2lmKChjW2NbZD4+Ml0+PjJdfDApPD0oY1soY1tkPj4yXXwwKSs0Pj4yXXwwKSl7Y1tiPj4yXT0wO2E9Y1tiPj4yXXwwO2k9ZTtyZXR1cm4gYXwwfWVsc2V7Zj0oY1tkPj4yXXwwKSs0fDA7YT1jW2Y+PjJdfDA7Y1tmPj4yXT1hKzE7Y1tiPj4yXT0kZChjWyhjWyhjW2Q+PjJdfDApKzg+PjJdfDApKyhhPDwyKT4+Ml18MCl8MDthPWNbYj4+Ml18MDtpPWU7cmV0dXJuIGF8MH1yZXR1cm4gMH1mdW5jdGlvbiBZTyhiLGQsZSl7Yj1ifDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MDtqPWk7aT1pKzE2fDA7Zj1qKzR8MDtnPWo7aD1qKzh8MDtjW2Y+PjJdPWI7Y1tnPj4yXT1kO2FbaD4+MF09ZTtiPWNbZz4+Ml18MDtiPVJSKGNbKGNbZj4+Ml18MCkrMTI+PjJdfDAsMCxifDAsKChifDApPDApPDwzMT4+MzF8MCl8MDtlPUM7aWYoKGV8MCk+MHwoKGV8MCk9PTA/Yj4+PjA+PShjWyhjW2Y+PjJdfDApKzE2Pj4yXXwwKT4+PjA6MCk/KGI9dkEoY1tmPj4yXXwwLGNbZz4+Ml18MCl8MCxjW2c+PjJdPWIsKGJ8MCk8PTApOjApe2k9ajtyZXR1cm59d2hpbGUoMSl7Yj1jW2c+PjJdfDA7Y1tnPj4yXT1iKy0xO2lmKChifDApPD0wKWJyZWFrO2U9YVtoPj4wXXwwO2Q9KGNbZj4+Ml18MCkrMTJ8MDtiPWNbZD4+Ml18MDtjW2Q+PjJdPWIrMTthWyhjWyhjW2Y+PjJdfDApKzg+PjJdfDApK2I+PjBdPWV9aT1qO3JldHVybn1mdW5jdGlvbiBaTyhhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTA7ZD1pO2k9aSsxNnwwO2I9ZDtjW2I+PjJdPWE7YT0yOTY7ZT1jW2ErND4+Ml18MDtpZigoZXwwKTwwfChlfDApPT0wJihjW2E+PjJdfDApPj4+MDw9MCl7aT1kO3JldHVybn1GZChjW2I+PjJdfDApfDA7aT1kO3JldHVybn1mdW5jdGlvbiBfTyhhLGIpe2E9YXwwO2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MDtoPWk7aT1pKzMyfDA7aj1oKzIwfDA7ZD1oKzE2fDA7ZT1oKzEyfDA7Zz1oKzh8MDtmPWg7Y1tqPj4yXT1hO2NbZD4+Ml09YjtjW2U+PjJdPVRiW2NbNjQ+PjJdJjI1NV0oY1tqPj4yXXwwKXwwO1JpKDUsY1tqPj4yXXwwKTtiPTI5NjthPWNbYis0Pj4yXXwwO2RvIGlmKChhfDApPjB8KGF8MCk9PTAmKGNbYj4+Ml18MCk+Pj4wPjApe2I9X2YoMCl8MDthPWY7Y1thPj4yXT1iO2NbYSs0Pj4yXT1DO2E9ZjtiPWNbYT4+Ml18MDthPWNbYSs0Pj4yXXwwO2Y9Mjk2O2o9Y1tlPj4yXXwwO2o9UVIoY1tmPj4yXXwwLGNbZis0Pj4yXXwwLGp8MCwoKGp8MCk8MCk8PDMxPj4zMXwwKXwwO2Y9QztpZigoYXwwKT4oZnwwKXwoYXwwKT09KGZ8MCkmYj4+PjA+PWo+Pj4wKXtjWzc5XT0xO1pPKGNbZT4+Ml18MCk7YnJlYWt9ZWxzZXtjWzc5XT0wO2JyZWFrfX13aGlsZSgwKTtjW2c+PjJdPVRiW2NbNDg+PjJdJjI1NV0oY1tlPj4yXXwwKXwwO2lmKCEoY1tnPj4yXXwwKSl7Yj1jW2c+PjJdfDA7aj1jW2Q+PjJdfDA7Y1tqPj4yXT1iO2o9Y1tlPj4yXXwwO2k9aDtyZXR1cm4ganwwfWNbZT4+Ml09YWcoY1tnPj4yXXwwKXwwO1NpKDAsY1tlPj4yXXwwKTtTaSg5LDEpO2I9Y1tnPj4yXXwwO2o9Y1tkPj4yXXwwO2Nbaj4+Ml09YjtqPWNbZT4+Ml18MDtpPWg7cmV0dXJuIGp8MH1mdW5jdGlvbiAkTygpe2JQKDg3ODAsMyk7cmV0dXJufWZ1bmN0aW9uIGFQKCl7YlAoODU1Niw4KTtyZXR1cm59ZnVuY3Rpb24gYlAoYSxiKXthPWF8MDtiPWJ8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MDttPWk7aT1pKzMyfDA7ZT1tKzI0fDA7Zj1tKzIwfDA7aD1tKzE2fDA7az1tKzEyfDA7bD1tKzh8MDtqPW0rNHwwO2c9bTtjW2U+PjJdPWE7Y1tmPj4yXT1iO2NbaD4+Ml09MDt3aGlsZSgxKXtpZigoY1toPj4yXXwwKT49KGNbZj4+Ml18MCkpYnJlYWs7Y1tsPj4yXT1jWyhjW2U+PjJdfDApKygoY1toPj4yXXwwKSoyOHwwKSsyMD4+Ml07Y1tqPj4yXT1KZihjW2w+PjJdfDApfDA7Y1tnPj4yXT0oKGRbMTc2MTMrKGRbY1tsPj4yXT4+MF18MCk+PjBdfDApKyhjW2o+PjJdfDApfDApJTIzfDA7Y1trPj4yXT1odShjW2c+PjJdfDAsY1tsPj4yXXwwKXwwO2lmKGNbaz4+Ml18MCl7Y1soY1tlPj4yXXwwKSsoKGNbaD4+Ml18MCkqMjh8MCkrOD4+Ml09Y1soY1trPj4yXXwwKSs4Pj4yXTtjWyhjW2s+PjJdfDApKzg+PjJdPShjW2U+PjJdfDApKygoY1toPj4yXXwwKSoyOHwwKX1lbHNle2NbKGNbZT4+Ml18MCkrKChjW2g+PjJdfDApKjI4fDApKzg+PjJdPTA7Y1soY1tlPj4yXXwwKSsoKGNbaD4+Ml18MCkqMjh8MCkrMjQ+PjJdPWNbMTA5MisoY1tnPj4yXTw8Mik+PjJdO2NbMTA5MisoY1tnPj4yXTw8Mik+PjJdPShjW2U+PjJdfDApKygoY1toPj4yXXwwKSoyOHwwKX1jW2g+PjJdPShjW2g+PjJdfDApKzF9aT1tO3JldHVybn1mdW5jdGlvbiBjUChhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MDtnPWk7aT1pKzE2fDA7ZT1nKzEyfDA7aD1nKzR8MDtmPWc7Y1tlPj4yXT1hO2NbZys4Pj4yXT1iO2NbaD4+Ml09ZDthPSRkKGNbY1toPj4yXT4+Ml18MCl8MDtjW2Y+PjJdPWE7aWYoIWEpe2k9ZztyZXR1cm59aD1jW2U+PjJdfDA7amUoaCx5ZChjW2Y+PjJdfDApfDApO2k9ZztyZXR1cm59ZnVuY3Rpb24gZFAoYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTA7ZT1pO2k9aSsxNnwwO2c9ZSsxMnwwO2g9ZSs0fDA7Zj1lO2NbZz4+Ml09YTtjW2UrOD4+Ml09YjtjW2g+PjJdPWQ7Y1tmPj4yXT1jZShjW2NbaD4+Ml0+PjJdfDApfDA7YT1jW2c+PjJdfDA7bWUoYSxBZChjW2Y+PjJdfDApfDAsLTEsMCk7aT1lO3JldHVybn1mdW5jdGlvbiBlUChhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTA7ZT1pO2k9aSsxNnwwO2Y9ZSs4fDA7Y1tmPj4yXT1hO2NbZSs0Pj4yXT1iO2NbZT4+Ml09ZDthPWNbZj4+Ml18MDttZShhLGpmKCl8MCwtMSwwKTtpPWU7cmV0dXJufWZ1bmN0aW9uIGZQKGIsZSxmKXtiPWJ8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTA7dj1pO2k9aSs2NHwwO2c9dis1MnwwO2g9dis0OHwwO2o9dis0NHwwO3U9dis0MHwwO3Q9diszNnwwO3I9diszMnwwO209disyOHwwO249disyNHwwO2s9disyMHwwO2w9disxNnwwO3E9disxMnwwO3M9dis4fDA7bz12KzR8MDtwPXY7Y1tnPj4yXT1iO2NbaD4+Ml09ZTtjW2o+PjJdPWY7Y1trPj4yXT0wO2NbbD4+Ml09MDtpZigoZWUoY1tjW2o+PjJdPj4yXXwwKXwwKT09NSl7aT12O3JldHVybn1jW3U+PjJdPSRkKGNbY1tqPj4yXT4+Ml18MCl8MDtpZighKGNbdT4+Ml18MCkpe2k9djtyZXR1cm59Y1tyPj4yXT1hZShjW2Nbaj4+Ml0+PjJdfDApfDA7YTpkbyBpZigoY1toPj4yXXwwKSE9MSl7Yj0kZChjWyhjW2o+PjJdfDApKzQ+PjJdfDApfDA7Y1t0Pj4yXT1iO2lmKCFiKXtpPXY7cmV0dXJufWNbcz4+Ml09Y1t0Pj4yXTtjW3E+PjJdPTA7d2hpbGUoMSl7aWYoIShhW2Nbcz4+Ml0+PjBdfDApKWJyZWFrO2I9Y1tzPj4yXXwwO2Nbcz4+Ml09YisxO2I6ZG8gaWYoKGRbYj4+MF18MCk+PTE5Mil3aGlsZSgxKXtpZigoZFtjW3M+PjJdPj4wXSYxOTJ8MCkhPTEyOClicmVhayBiO2Nbcz4+Ml09KGNbcz4+Ml18MCkrMX13aGlsZSgwKTtjW3E+PjJdPShjW3E+PjJdfDApKzF9aWYoKGNbcT4+Ml18MCk+MCl7Zj1jW2c+PjJdfDA7Yj1jW3E+PjJdfDA7Yj1hUyhifDAsKChifDApPDApPDwzMT4+MzF8MCw1LDApfDA7Y1tsPj4yXT1PUChmLGIsQyl8MDtpZighKGNbbD4+Ml18MCkpe2k9djtyZXR1cm59Y1trPj4yXT0oY1tsPj4yXXwwKSsoY1txPj4yXTw8Mik7Y1tzPj4yXT1jW3Q+PjJdO2NbcT4+Ml09MDt3aGlsZSgxKXtpZighKGFbY1tzPj4yXT4+MF18MCkpYnJlYWsgYTtjWyhjW2w+PjJdfDApKyhjW3E+PjJdPDwyKT4+Ml09Y1tzPj4yXTtiPWNbcz4+Ml18MDtjW3M+PjJdPWIrMTtjOmRvIGlmKChkW2I+PjBdfDApPj0xOTIpd2hpbGUoMSl7aWYoKGRbY1tzPj4yXT4+MF0mMTkyfDApIT0xMjgpYnJlYWsgYztjW3M+PjJdPShjW3M+PjJdfDApKzF9d2hpbGUoMCk7YVsoY1trPj4yXXwwKSsoY1txPj4yXXwwKT4+MF09KGNbcz4+Ml18MCktKGNbKGNbbD4+Ml18MCkrKGNbcT4+Ml08PDIpPj4yXXwwKTtjW3E+PjJdPShjW3E+PjJdfDApKzF9fX1lbHNle2NbcT4+Ml09MTtjW2s+PjJdPTQ1MjIwO2NbbD4+Ml09ODU1MjtjW3Q+PjJdPTB9d2hpbGUoMCk7aWYoKGNbcT4+Ml18MCk+MCl7Y1ttPj4yXT11ZShjW2c+PjJdfDApfDA7ZDpkbyBpZigoY1ttPj4yXSYxfDApIT0wJihjW3I+PjJdfDApPjApZG97Y1tvPj4yXT0wO2Nbbj4+Ml09MDt3aGlsZSgxKXtpZigoY1tuPj4yXXwwKT49KGNbcT4+Ml18MCkpYnJlYWs7Y1tvPj4yXT1kWyhjW2s+PjJdfDApKyhjW24+PjJdfDApPj4wXTtpZigoY1tvPj4yXXwwKTw9KGNbcj4+Ml18MCk/KGVSKGNbdT4+Ml18MCxjWyhjW2w+PjJdfDApKyhjW24+PjJdPDwyKT4+Ml18MCxjW28+PjJdfDApfDApPT0wOjApYnJlYWs7Y1tuPj4yXT0oY1tuPj4yXXwwKSsxfWlmKChjW24+PjJdfDApPj0oY1txPj4yXXwwKSlicmVhayBkO2NbdT4+Ml09KGNbdT4+Ml18MCkrKGNbbz4+Ml18MCk7Y1tyPj4yXT0oY1tyPj4yXXwwKS0oY1tvPj4yXXwwKX13aGlsZSgoY1tyPj4yXXwwKT4wKTt3aGlsZSgwKTtlOmRvIGlmKChjW20+PjJdJjJ8MCkhPTAmKGNbcj4+Ml18MCk+MClkb3tjW3A+PjJdPTA7Y1tuPj4yXT0wO3doaWxlKDEpe2lmKChjW24+PjJdfDApPj0oY1txPj4yXXwwKSlicmVhaztjW3A+PjJdPWRbKGNbaz4+Ml18MCkrKGNbbj4+Ml18MCk+PjBdO2lmKChjW3A+PjJdfDApPD0oY1tyPj4yXXwwKT8oZVIoKGNbdT4+Ml18MCkrKChjW3I+PjJdfDApLShjW3A+PjJdfDApKXwwLGNbKGNbbD4+Ml18MCkrKGNbbj4+Ml08PDIpPj4yXXwwLGNbcD4+Ml18MCl8MCk9PTA6MClicmVhaztjW24+PjJdPShjW24+PjJdfDApKzF9aWYoKGNbbj4+Ml18MCk+PShjW3E+PjJdfDApKWJyZWFrIGU7Y1tyPj4yXT0oY1tyPj4yXXwwKS0oY1twPj4yXXwwKX13aGlsZSgoY1tyPj4yXXwwKT4wKTt3aGlsZSgwKTtpZihjW3Q+PjJdfDApS2QoY1tsPj4yXXwwKX1tZShjW2c+PjJdfDAsY1t1Pj4yXXwwLGNbcj4+Ml18MCwtMSk7aT12O3JldHVybn1mdW5jdGlvbiBnUChhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wO249aTtpPWkrMzJ8MDtlPW4rMjR8MDtmPW4rMjB8MDtnPW4rMTZ8MDtoPW4rMTJ8MDtrPW4rOHwwO2o9bis0fDA7bD1uO2NbZT4+Ml09YTtjW2Y+PjJdPWI7Y1tnPj4yXT1kO2E9KHVlKGNbZT4+Ml18MCl8MCk9PTA7Y1trPj4yXT1hPzA6LTE7Y1tsPj4yXT1QUChjW2U+PjJdfDApfDA7Y1tqPj4yXT0wO2lmKChlZShjW2NbZz4+Ml0+PjJdfDApfDApPT01KXtpPW47cmV0dXJufWNbaD4+Ml09MTt3aGlsZSgxKXtpZigoY1toPj4yXXwwKT49KGNbZj4+Ml18MCkpYnJlYWs7aWYoKGVlKGNbKGNbZz4+Ml18MCkrKGNbaD4+Ml08PDIpPj4yXXwwKXwwKT09NSl7bT05O2JyZWFrfWE9TUkoY1soY1tnPj4yXXwwKSsoY1tqPj4yXTw8Mik+PjJdfDAsY1soY1tnPj4yXXwwKSsoY1toPj4yXTw8Mik+PjJdfDAsY1tsPj4yXXwwKXwwO2lmKChhXmNbaz4+Ml18MCk+PTApY1tqPj4yXT1jW2g+PjJdO2NbaD4+Ml09KGNbaD4+Ml18MCkrMX1pZigobXwwKT09OSl7aT1uO3JldHVybn1vZShjW2U+PjJdfDAsY1soY1tnPj4yXXwwKSsoY1tqPj4yXTw8Mik+PjJdfDApO2k9bjtyZXR1cm59ZnVuY3Rpb24gaFAoYSxkLGUpe2E9YXwwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wO249aTtpPWkrMzJ8MDtnPW4rMjh8MDtmPW4rMjB8MDtrPW4rMTZ8MDtsPW4rMTJ8MDtqPW4rOHwwO2g9bis0fDA7bT1uO2NbZz4+Ml09YTtjW24rMjQ+PjJdPWQ7Y1tmPj4yXT1lO2Nbaz4+Ml09Y1tjW2Y+PjJdPj4yXTtjW2w+PjJdPXdlKGNbZz4+Ml18MCw0MCl8MDtpZighKGNbbD4+Ml18MCkpe2k9bjtyZXR1cm59YT0oZWUoY1tjW2Y+PjJdPj4yXXwwKXwwKT09NTtmPShiWyhjW2w+PjJdfDApKzg+PjFdfDApIT0wO2lmKGEpe2lmKCFmKXtpPW47cmV0dXJufVFQKGNbZz4+Ml18MCk7aT1uO3JldHVybn1kPWNbZz4+Ml18MDtpZighZil7bT12ZShkKXwwO2NbKGNbbD4+Ml18MCkrMzI+PjJdPW07amgoY1tsPj4yXXwwLGNbaz4+Ml18MCl8MDtpPW47cmV0dXJufWNbbT4+Ml09UFAoZCl8MDtjW2o+PjJdPSh1ZShjW2c+PjJdfDApfDApIT0wJjE7Y1toPj4yXT1NSShjW2w+PjJdfDAsY1trPj4yXXwwLGNbbT4+Ml18MCl8MDtpZighKChjW2o+PjJdfDApIT0wJihjW2g+PjJdfDApPDApPyEoKGNbaj4+Ml18MCk9PTAmKGNbaD4+Ml18MCk+MCk6MCl7UVAoY1tnPj4yXXwwKTtpPW47cmV0dXJufWpoKGNbbD4+Ml18MCxjW2s+PjJdfDApfDA7aT1uO3JldHVybn1mdW5jdGlvbiBpUChhKXthPWF8MDt2YXIgZD0wLGU9MCxmPTA7Zj1pO2k9aSsxNnwwO2Q9Zis0fDA7ZT1mO2NbZD4+Ml09YTtjW2U+PjJdPXdlKGNbZD4+Ml18MCwwKXwwO2lmKCEoY1tlPj4yXXwwKSl7aT1mO3JldHVybn1pZihiWyhjW2U+PjJdfDApKzg+PjFdfDApb2UoY1tkPj4yXXwwLGNbZT4+Ml18MCk7WGcoY1tlPj4yXXwwKTtpPWY7cmV0dXJufWZ1bmN0aW9uIGpQKGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wO2c9aTtpPWkrMTZ8MDtlPWcrMTJ8MDtoPWcrNHwwO2Y9ZztjW2U+PjJdPWE7Y1tnKzg+PjJdPWI7Y1toPj4yXT1kO2NbZj4+Ml09MDtzd2l0Y2goZWUoY1tjW2g+PjJdPj4yXXwwKXwwKXtjYXNlIDE6e2NbZj4+Ml09Mzk3MTA7YnJlYWt9Y2FzZSAzOntjW2Y+PjJdPTQ1MjEwO2JyZWFrfWNhc2UgMjp7Y1tmPj4yXT0zOTcwNTticmVha31jYXNlIDQ6e2NbZj4+Ml09NDUyMTU7YnJlYWt9ZGVmYXVsdDpjW2Y+PjJdPTM5NzE4fW1lKGNbZT4+Ml18MCxjW2Y+PjJdfDAsLTEsMCk7aT1nO3JldHVybn1mdW5jdGlvbiBrUChiLGUsZil7Yj1ifDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTA7bD1pO2k9aSszMnwwO2c9bCsxNnwwO2g9bCs4fDA7aj1sKzR8MDtrPWw7Y1tnPj4yXT1iO2NbbCsxMj4+Ml09ZTtjW2g+PjJdPWY7c3dpdGNoKGVlKGNbY1toPj4yXT4+Ml18MCl8MCl7Y2FzZSAyOmNhc2UgMTpjYXNlIDQ6e2plKGNbZz4+Ml18MCxhZShjW2NbaD4+Ml0+PjJdfDApfDApO2k9bDtyZXR1cm59Y2FzZSAzOntjW2s+PjJdPSRkKGNbY1toPj4yXT4+Ml18MCl8MDtpZighKGNbaz4+Ml18MCkpe2k9bDtyZXR1cm59Y1tqPj4yXT0wO2E6d2hpbGUoMSl7aWYoIShhW2Nbaz4+Ml0+PjBdfDApKWJyZWFrO2Nbaj4+Ml09KGNbaj4+Ml18MCkrMTtiPWNbaz4+Ml18MDtjW2s+PjJdPWIrMTtpZigoZFtiPj4wXXwwKTwxOTIpY29udGludWU7d2hpbGUoMSl7aWYoKGRbY1trPj4yXT4+MF0mMTkyfDApIT0xMjgpY29udGludWUgYTtjW2s+PjJdPShjW2s+PjJdfDApKzF9fWplKGNbZz4+Ml18MCxjW2o+PjJdfDApO2k9bDtyZXR1cm59ZGVmYXVsdDp7bGUoY1tnPj4yXXwwKTtpPWw7cmV0dXJufX19ZnVuY3Rpb24gbFAoYSxiLGUpe2E9YXwwO2I9YnwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wO3E9aTtpPWkrNDh8MDtmPXErNDB8MDtnPXErMzJ8MDtvPXErMjh8MDtwPXErMjR8MDtrPXErMjB8MDtsPXErMTZ8MDttPXErMTJ8MDtuPXErOHwwO2g9cSs0fDA7aj1xO2NbZj4+Ml09YTtjW3ErMzY+PjJdPWI7Y1tnPj4yXT1lO2NbaD4+Ml09MTtjW20+PjJdPWVlKGNbY1tnPj4yXT4+Ml18MCl8MDtjW24+PjJdPWVlKGNbKGNbZz4+Ml18MCkrND4+Ml18MCl8MDtpZigoY1ttPj4yXXwwKT09NXwoY1tuPj4yXXwwKT09NSl7aT1xO3JldHVybn1jW2s+PjJdPWFlKGNbY1tnPj4yXT4+Ml18MCl8MDtjW2w+PjJdPWFlKGNbKGNbZz4+Ml18MCkrND4+Ml18MCl8MDtiPWNbY1tnPj4yXT4+Ml18MDtpZigoY1ttPj4yXXwwKT09NCYoY1tuPj4yXXwwKT09NCl7Y1tvPj4yXT1fZChiKXwwO2NbcD4+Ml09X2QoY1soY1tnPj4yXXwwKSs0Pj4yXXwwKXwwO2Nbaj4+Ml09MH1lbHNle2Nbbz4+Ml09JGQoYil8MDtjW3A+PjJdPSRkKGNbKGNbZz4+Ml18MCkrND4+Ml18MCl8MDtjW2o+PjJdPTF9YTp3aGlsZSgxKXtpZigoY1tsPj4yXXwwKT4oY1trPj4yXXwwKSlicmVhaztpZighKGVSKGNbbz4+Ml18MCxjW3A+PjJdfDAsY1tsPj4yXXwwKXwwKSlicmVhaztjW2g+PjJdPShjW2g+PjJdfDApKzE7d2hpbGUoMSl7Y1trPj4yXT0oY1trPj4yXXwwKSstMTtjW28+PjJdPShjW28+PjJdfDApKzE7aWYoIShjW2o+PjJdfDApKWNvbnRpbnVlIGE7aWYoKChkW2Nbbz4+Ml0+PjBdfDApJjE5MnwwKSE9MTI4KWNvbnRpbnVlIGF9fWlmKChjW2w+PjJdfDApPihjW2s+PjJdfDApKWNbaD4+Ml09MDtqZShjW2Y+PjJdfDAsY1toPj4yXXwwKTtpPXE7cmV0dXJufWZ1bmN0aW9uIG1QKGIsZCxlKXtiPWJ8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wO3A9aTtpPWkrODB8MDttPXA7Zj1wKzY0fDA7Zz1wKzYwfDA7aD1wKzU2fDA7bj1wKzQ0fDA7bD1wKzE2fDA7bz1wKzEyfDA7az1wKzh8MDtqPXArNHwwO2NbZj4+Ml09YjtjW2c+PjJdPWQ7Y1toPj4yXT1lO2Nbaj4+Ml09dmUoY1tmPj4yXXwwKXwwO2lmKChjW2c+PjJdfDApPDEpe2k9cDtyZXR1cm59Yj0kZChjW2NbaD4+Ml0+PjJdfDApfDA7Y1tvPj4yXT1iO2lmKCFiKXtpPXA7cmV0dXJufWNbbj4+Ml09KGNbZz4+Ml18MCktMTtjW24rND4+Ml09MDtjW24rOD4+Ml09KGNbaD4+Ml18MCkrNDtkZyhsLGNbaj4+Ml18MCwwLDAsY1soY1tqPj4yXXwwKSs5Nj4+Ml18MCk7YVtsKzI1Pj4wXT0yO289Y1tvPj4yXXwwO2NbbT4+Ml09bjtyQShsLG8sbSk7Y1trPj4yXT1jW2wrMTI+PjJdO249Y1tmPj4yXXwwO289ZmcobCl8MDttZShuLG8sY1trPj4yXXwwLDE3MCk7aT1wO3JldHVybn1mdW5jdGlvbiBuUChhLGIsZSl7YT1hfDA7Yj1ifDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MDtoPWk7aT1pKzE2fDA7Zj1oKzEyfDA7aj1oKzR8MDtnPWg7Y1tmPj4yXT1hO2NbaCs4Pj4yXT1iO2Nbaj4+Ml09ZTtjW2c+PjJdPSRkKGNbY1tqPj4yXT4+Ml18MCl8MDtpZighKGNbZz4+Ml18MCkpe2k9aDtyZXR1cm59aWYoIShkW2NbZz4+Ml0+PjBdfDApKXtpPWg7cmV0dXJufWo9Y1tmPj4yXXwwO2plKGosSkMoZyl8MCk7aT1oO3JldHVybn1mdW5jdGlvbiBvUChiLGQsZSl7Yj1ifDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MDtvPWk7aT1pKzQ4fDA7Zj1vKzMyfDA7Zz1vKzI4fDA7aD1vKzI0fDA7bT1vKzIwfDA7bj1vKzE2fDA7az1vKzEyfDA7bD1vO2o9bys4fDA7Y1tmPj4yXT1iO2NbZz4+Ml09ZDtjW2g+PjJdPWU7Yj0oY1tnPj4yXTw8MikrMXwwO2I9SmQoYiwoKGJ8MCk8MCk8PDMxPj4zMSl8MDtjW20+PjJdPWI7Y1tuPj4yXT1iO2lmKCEoY1ttPj4yXXwwKSl7c2UoY1tmPj4yXXwwKTtpPW87cmV0dXJufWNbaz4+Ml09MDt3aGlsZSgxKXtpZigoY1trPj4yXXwwKT49KGNbZz4+Ml18MCkpYnJlYWs7cD1kZShjWyhjW2g+PjJdfDApKyhjW2s+PjJdPDwyKT4+Ml18MCl8MDtiPUM7ZT1sO2NbZT4+Ml09cDtjW2UrND4+Ml09YjtlPWw7ZD1jW2UrND4+Ml18MDtlPShjW2wrND4+Ml18MCk8MHwoKGR8MCk+MHwoZHwwKT09MCYoY1tlPj4yXXwwKT4+PjA+MTExNDExMSk7ZD1sO2NbZD4+Ml09ZT82NTUzMzpwO2NbZCs0Pj4yXT1lPzA6YjtjW2o+PjJdPWNbbD4+Ml0mMjA5NzE1MTtkPWNbaj4+Ml18MDtkbyBpZigoY1tqPj4yXXwwKT4+PjA+PTEyOCl7ZT1jW2o+PjJdfDA7aWYoZD4+PjA8MjA0OCl7Yj1jW24+PjJdfDA7Y1tuPj4yXT1iKzE7YVtiPj4wXT0xOTIrKGU+Pj42JjMxKTtiPTEyOCsoY1tqPj4yXSY2MykmMjU1O3A9Y1tuPj4yXXwwO2Nbbj4+Ml09cCsxO2FbcD4+MF09YjticmVha31kPWNbaj4+Ml18MDtpZihlPj4+MDw2NTUzNil7cD1jW24+PjJdfDA7Y1tuPj4yXT1wKzE7YVtwPj4wXT0yMjQrKGQ+Pj4xMiYxNSk7cD0xMjgrKChjW2o+PjJdfDApPj4+NiY2MykmMjU1O2I9Y1tuPj4yXXwwO2Nbbj4+Ml09YisxO2FbYj4+MF09cDtiPTEyOCsoY1tqPj4yXSY2MykmMjU1O3A9Y1tuPj4yXXwwO2Nbbj4+Ml09cCsxO2FbcD4+MF09YjticmVha31lbHNle2I9Y1tuPj4yXXwwO2Nbbj4+Ml09YisxO2FbYj4+MF09MjQwKyhkPj4+MTgmNyk7Yj0xMjgrKChjW2o+PjJdfDApPj4+MTImNjMpJjI1NTtwPWNbbj4+Ml18MDtjW24+PjJdPXArMTthW3A+PjBdPWI7cD0xMjgrKChjW2o+PjJdfDApPj4+NiY2MykmMjU1O2I9Y1tuPj4yXXwwO2Nbbj4+Ml09YisxO2FbYj4+MF09cDtiPTEyOCsoY1tqPj4yXSY2MykmMjU1O3A9Y1tuPj4yXXwwO2Nbbj4+Ml09cCsxO2FbcD4+MF09YjticmVha319ZWxzZXtwPWNbbj4+Ml18MDtjW24+PjJdPXArMTthW3A+PjBdPWR9d2hpbGUoMCk7Y1trPj4yXT0oY1trPj4yXXwwKSsxfXA9KGNbbj4+Ml18MCktKGNbbT4+Ml18MCl8MDtuZShjW2Y+PjJdfDAsY1ttPj4yXXwwLHAsKChwfDApPDApPDwzMT4+MzEsMTQ4LDEpO2k9bztyZXR1cm59ZnVuY3Rpb24gcFAoYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxqPTAsaz0wO2s9aTtpPWkrMzJ8MDtlPWsrMjR8MDtmPWsrMTZ8MDtnPWsrOHwwO2o9aztjW2U+PjJdPWE7Y1trKzIwPj4yXT1iO2NbZj4+Ml09ZDtzd2l0Y2goZWUoY1tjW2Y+PjJdPj4yXXwwKXwwKXtjYXNlIDE6e2o9ZztjW2o+PjJdPWRlKGNbY1tmPj4yXT4+Ml18MCl8MDtjW2orND4+Ml09QztkbyBpZigoY1tnKzQ+PjJdfDApPDApe2o9ZztpZighKChjW2o+PjJdfDApPT0wPyhjW2orND4+Ml18MCk9PS0yMTQ3NDgzNjQ4OjApKXthPWc7YT1RUigwLDAsY1thPj4yXXwwLGNbYSs0Pj4yXXwwKXwwO2o9ZztjW2o+PjJdPWE7Y1tqKzQ+PjJdPUM7YnJlYWt9aWUoY1tlPj4yXXwwLDQ1MTY1LC0xKTtpPWs7cmV0dXJufXdoaWxlKDApO2o9ZztrZShjW2U+PjJdfDAsY1tqPj4yXXwwLGNbais0Pj4yXXwwKTtpPWs7cmV0dXJufWNhc2UgNTp7bGUoY1tlPj4yXXwwKTtpPWs7cmV0dXJufWRlZmF1bHQ6e2hbaj4+M109K2JlKGNbY1tmPj4yXT4+Ml18MCk7aWYoK2hbaj4+M108MC4wKWhbaj4+M109LStoW2o+PjNdO2hlKGNbZT4+Ml18MCwraFtqPj4zXSk7aT1rO3JldHVybn19fWZ1bmN0aW9uIHFQKGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAuMDttPWk7aT1pKzQ4fDA7az1tKzh8MDtlPW0rNDB8MDtuPW0rMzZ8MDtmPW0rMzJ8MDtnPW0rMjh8MDtqPW07bD1tKzI0fDA7Y1tlPj4yXT1hO2Nbbj4+Ml09YjtjW2Y+PjJdPWQ7Y1tnPj4yXT0wO2RvIGlmKChjW24+PjJdfDApPT0yKWlmKDU9PShlZShjWyhjW2Y+PjJdfDApKzQ+PjJdfDApfDApKXtpPW07cmV0dXJufWVsc2V7bj1jZShjWyhjW2Y+PjJdfDApKzQ+PjJdfDApfDA7Y1tnPj4yXT1uO249KGNbZz4+Ml18MCk+MzA/MzA6bjtjW2c+PjJdPW47Y1tnPj4yXT0oY1tnPj4yXXwwKTwwPzA6bjticmVha313aGlsZSgwKTtpZigoZWUoY1tjW2Y+PjJdPj4yXXwwKXwwKT09NSl7aT1tO3JldHVybn1oW2o+PjNdPStiZShjW2NbZj4+Ml0+PjJdfDApO2RvIGlmKChjW2c+PjJdfDApPT0wJitoW2o+PjNdPj0wLjAmK2hbaj4+M108OTIyMzM3MjAzNjg1NDc3NTgwOC4wKXtvPStoW2o+PjNdKy41O2hbaj4+M109Kyh+fm8+Pj4wPj4+MCkrNDI5NDk2NzI5Ni4wKisoKCtOKG8pPj0xLjA/KG8+MC4wP35+KyQoK00oby80Mjk0OTY3Mjk2LjApLDQyOTQ5NjcyOTUuMCk+Pj4wOn5+K1ooKG8tKyh+fm8+Pj4wKSkvNDI5NDk2NzI5Ni4wKT4+PjApOjApfDApfWVsc2V7aWYoKGNbZz4+Ml18MCk9PTAmK2hbaj4+M108MC4wPy0raFtqPj4zXTw5MjIzMzcyMDM2ODU0Nzc1ODA4LjA6MCl7bz0tK2hbaj4+M10rLjU7aFtqPj4zXT0tKCsofn5vPj4+MD4+PjApKzQyOTQ5NjcyOTYuMCorKCgrTihvKT49MS4wPyhvPjAuMD9+fiskKCtNKG8vNDI5NDk2NzI5Ni4wKSw0Mjk0OTY3Mjk1LjApPj4+MDp+fitaKChvLSsofn5vPj4+MCkpLzQyOTQ5NjcyOTYuMCk+Pj4wKTowKXwwKSk7YnJlYWt9bz0raFtqPj4zXTtjW2s+PjJdPWNbZz4+Ml07aFtrKzg+PjNdPW87Y1tsPj4yXT1PZCg0NTIwNSxrKXwwO2lmKGNbbD4+Ml18MCl7bj1jW2w+PjJdfDA7ZXoobixqLEpmKGNbbD4+Ml18MCl8MCwxKXwwO0tkKGNbbD4+Ml18MCk7YnJlYWt9c2UoY1tlPj4yXXwwKTtpPW07cmV0dXJufXdoaWxlKDApO2hlKGNbZT4+Ml18MCwraFtqPj4zXSk7aT1tO3JldHVybn1mdW5jdGlvbiByUChiLGUsZil7Yj1ifDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MDttPWk7aT1pKzMyfDA7Zz1tKzI0fDA7bj1tKzE2fDA7az1tKzEyfDA7bD1tKzh8MDtoPW0rNHwwO2o9bTtjW2c+PjJdPWI7Y1ttKzIwPj4yXT1lO2Nbbj4+Ml09ZjtjW2w+PjJdPSRkKGNbY1tuPj4yXT4+Ml18MCl8MDtjW2o+PjJdPWFlKGNbY1tuPj4yXT4+Ml18MCl8MDtpZighKGNbbD4+Ml18MCkpe2k9bTtyZXR1cm59Yj1jW2c+PjJdfDA7bj1jW2o+PjJdfDA7bj1SUihufDAsKChufDApPDApPDwzMT4+MzF8MCwxLDApfDA7Y1trPj4yXT1PUChiLG4sQyl8MDtpZighKGNbaz4+Ml18MCkpe2k9bTtyZXR1cm59Y1toPj4yXT0wO3doaWxlKDEpe2lmKChjW2g+PjJdfDApPj0oY1tqPj4yXXwwKSlicmVhazthWyhjW2s+PjJdfDApKyhjW2g+PjJdfDApPj4wXT1hWyhjW2w+PjJdfDApKyhjW2g+PjJdfDApPj4wXSZ+KGRbMTg0MDMrKGRbKGNbbD4+Ml18MCkrKGNbaD4+Ml18MCk+PjBdfDApPj4wXSYzMik7Y1toPj4yXT0oY1toPj4yXXwwKSsxfW1lKGNbZz4+Ml18MCxjW2s+PjJdfDAsY1tqPj4yXXwwLDE0OCk7aT1tO3JldHVybn1mdW5jdGlvbiBzUChiLGUsZil7Yj1ifDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MDttPWk7aT1pKzMyfDA7Zz1tKzI0fDA7bj1tKzE2fDA7az1tKzEyfDA7bD1tKzh8MDtoPW0rNHwwO2o9bTtjW2c+PjJdPWI7Y1ttKzIwPj4yXT1lO2Nbbj4+Ml09ZjtjW2w+PjJdPSRkKGNbY1tuPj4yXT4+Ml18MCl8MDtjW2o+PjJdPWFlKGNbY1tuPj4yXT4+Ml18MCl8MDtpZighKGNbbD4+Ml18MCkpe2k9bTtyZXR1cm59Yj1jW2c+PjJdfDA7bj1jW2o+PjJdfDA7bj1SUihufDAsKChufDApPDApPDwzMT4+MzF8MCwxLDApfDA7Y1trPj4yXT1PUChiLG4sQyl8MDtpZighKGNbaz4+Ml18MCkpe2k9bTtyZXR1cm59Y1toPj4yXT0wO3doaWxlKDEpe2lmKChjW2g+PjJdfDApPj0oY1tqPj4yXXwwKSlicmVhazthWyhjW2s+PjJdfDApKyhjW2g+PjJdfDApPj4wXT1hWzE3NjEzKyhkWyhjW2w+PjJdfDApKyhjW2g+PjJdfDApPj4wXXwwKT4+MF18MDtjW2g+PjJdPShjW2g+PjJdfDApKzF9bWUoY1tnPj4yXXwwLGNbaz4+Ml18MCxjW2o+PjJdfDAsMTQ4KTtpPW07cmV0dXJufWZ1bmN0aW9uIHRQKGIsZSxmKXtiPWJ8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTA7bz1pO2k9aSs0OHwwO2c9bysyOHwwO3A9bysyMHwwO2o9bysxNnwwO2s9bysxMnwwO2w9bys4fDA7bj1vKzR8MDttPW87aD1vKzMyfDA7Y1tnPj4yXT1iO2NbbysyND4+Ml09ZTtjW3A+PjJdPWY7Y1tsPj4yXT1fZChjW2NbcD4+Ml0+PjJdfDApfDA7Y1trPj4yXT1hZShjW2NbcD4+Ml0+PjJdfDApfDA7Zj1jW2c+PjJdfDA7Yj1jW2s+PjJdfDA7Yj1hUyhifDAsKChifDApPDApPDwzMT4+MzF8MCwyLDApfDA7Yj1SUihifDAsQ3wwLDEsMCl8MDtiPU9QKGYsYixDKXwwO2Nbbj4+Ml09YjtjW20+PjJdPWI7aWYoIShjW24+PjJdfDApKXtpPW87cmV0dXJufWNbaj4+Ml09MDt3aGlsZSgxKXtpZigoY1tqPj4yXXwwKT49KGNbaz4+Ml18MCkpYnJlYWs7YVtoPj4wXT1hW2NbbD4+Ml0+PjBdfDA7cD1hWzQ1MTg5KygoZFtoPj4wXXwwKT4+NCYxNSk+PjBdfDA7Yj1jW20+PjJdfDA7Y1ttPj4yXT1iKzE7YVtiPj4wXT1wO2I9YVs0NTE4OSsoKGRbaD4+MF18MCkmMTUpPj4wXXwwO3A9Y1ttPj4yXXwwO2NbbT4+Ml09cCsxO2FbcD4+MF09YjtjW2o+PjJdPShjW2o+PjJdfDApKzE7Y1tsPj4yXT0oY1tsPj4yXXwwKSsxfWFbY1ttPj4yXT4+MF09MDttZShjW2c+PjJdfDAsY1tuPj4yXXwwLGNbaz4+Ml08PDEsMTQ4KTtpPW87cmV0dXJufWZ1bmN0aW9uIHVQKGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTA7Zz1pO2k9aSszMnwwO2U9ZysxNnwwO2Y9ZztjW2U+PjJdPWE7Y1tnKzEyPj4yXT1iO2NbZys4Pj4yXT1kO1NkKDgsZik7aWYoKGNbZis0Pj4yXXwwKTwwKXtkPWY7ZD1RUigwLDAsY1tkPj4yXXwwLGNbZCs0Pj4yXSYyMTQ3NDgzNjQ3fDApfDA7YT1mO2NbYT4+Ml09ZDtjW2ErND4+Ml09Q31rZShjW2U+PjJdfDAsY1tmPj4yXXwwLGNbZis0Pj4yXXwwKTtpPWc7cmV0dXJufWZ1bmN0aW9uIHZQKGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MDtoPWk7aT1pKzMyfDA7ZT1oKzE2fDA7aj1oKzh8MDtmPWgrNHwwO2c9aDtjW2U+PjJdPWE7Y1toKzEyPj4yXT1iO2Nbaj4+Ml09ZDthPWNlKGNbY1tqPj4yXT4+Ml18MCl8MDtjW2Y+PjJdPWE7Y1tmPj4yXT0oY1tmPj4yXXwwKTwxPzE6YTthPWNbZj4+Ml18MDtjW2c+PjJdPU9QKGNbZT4+Ml18MCxhLCgoYXwwKTwwKTw8MzE+PjMxKXwwO2lmKCEoY1tnPj4yXXwwKSl7aT1oO3JldHVybn1TZChjW2Y+PjJdfDAsY1tnPj4yXXwwKTtmZShjW2U+PjJdfDAsY1tnPj4yXXwwLGNbZj4+Ml18MCwxNDgpO2k9aDtyZXR1cm59ZnVuY3Rpb24gd1AoYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTA7Zz1pO2k9aSsxNnwwO2U9ZysxMnwwO2Y9Zys0fDA7aD1nO2NbZT4+Ml09YTtjW2crOD4+Ml09YjtjW2Y+PjJdPWQ7Y1toPj4yXT1QUChjW2U+PjJdfDApfDA7aWYoIShNSShjW2NbZj4+Ml0+PjJdfDAsY1soY1tmPj4yXXwwKSs0Pj4yXXwwLGNbaD4+Ml18MCl8MCkpe2k9ZztyZXR1cm59b2UoY1tlPj4yXXwwLGNbY1tmPj4yXT4+Ml18MCk7aT1nO3JldHVybn1mdW5jdGlvbiB4UChhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTA7ZT1pO2k9aSsxNnwwO2Y9ZSs4fDA7Y1tmPj4yXT1hO2NbZSs0Pj4yXT1iO2NbZT4+Ml09ZDthPWNbZj4+Ml18MDttZShhLGtmKCl8MCwtMSwwKTtpPWU7cmV0dXJufWZ1bmN0aW9uIHlQKGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTA7ZT1pO2k9aSsxNnwwO2Y9ZTtnPWUrNHwwO2NbZSsxMj4+Ml09YTtjW2UrOD4+Ml09YjtjW2c+PjJdPWQ7YT1jZShjW2NbZz4+Ml0+PjJdfDApfDA7Y1tmPj4yXT0kZChjWyhjW2c+PjJdfDApKzQ+PjJdfDApfDA7UmQoYSwxODM5MSxmKTtpPWU7cmV0dXJufWZ1bmN0aW9uIHpQKGIsZSxmKXtiPWJ8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MDt5PWk7aT1pKzE0NHwwO3M9eSszMnwwO3I9eSsyNHwwO2c9eSs4MHwwO2o9eSs3MnwwO3A9eSsxNnwwO3E9eSs4fDA7dz15Kzg0fDA7eD15KzY4fDA7dj15KzY0fDA7bz15KzYwfDA7az15KzU2fDA7bD15KzUyfDA7bT15KzQ4fDA7bj15O3U9eSs0NHwwO3Q9eSs0MHwwO2NbZz4+Ml09YjtjW3krNzY+PjJdPWU7Y1tqPj4yXT1mO3N3aXRjaChlZShjW2Nbaj4+Ml0+PjJdfDApfDApe2Nhc2UgMjp7aFtwPj4zXT0rYmUoY1tjW2o+PjJdPj4yXXwwKTtoW3I+PjNdPStoW3A+PjNdO1FkKDUwLHcsMjgyNzEscil8MDtleih3LHEsMjAsMSl8MDtpZigraFtwPj4zXSE9K2hbcT4+M10pe2hbcz4+M109K2hbcD4+M107UWQoNTAsdyw0NTE4MixzKXwwfW1lKGNbZz4+Ml18MCx3LC0xLC0xKTtpPXk7cmV0dXJufWNhc2UgMTp7b2UoY1tnPj4yXXwwLGNbY1tqPj4yXT4+Ml18MCk7aT15O3JldHVybn1jYXNlIDQ6e2NbeD4+Ml09MDtjW3Y+PjJdPV9kKGNbY1tqPj4yXT4+Ml18MCl8MDtjW28+PjJdPWFlKGNbY1tqPj4yXT4+Ml18MCl8MDt1PWNbZz4+Ml18MDt3PWNbbz4+Ml18MDtjW3g+PjJdPU9QKHUsUlIoYVMoMiwwLHd8MCwoKHd8MCk8MCk8PDMxPj4zMXwwKXwwLEN8MCw0LDApfDAsQyl8MDtpZighKGNbeD4+Ml18MCkpe2k9eTtyZXR1cm59Y1trPj4yXT0wO3doaWxlKDEpe2lmKChjW2s+PjJdfDApPj0oY1tvPj4yXXwwKSlicmVhazthWyhjW3g+PjJdfDApKygoY1trPj4yXTw8MSkrMik+PjBdPWFbNDUxODkrKGFbKGNbdj4+Ml18MCkrKGNbaz4+Ml18MCk+PjBdPj40JjE1KT4+MF18MDthWyhjW3g+PjJdfDApKygoY1trPj4yXTw8MSkrMyk+PjBdPWFbNDUxODkrKGFbKGNbdj4+Ml18MCkrKGNbaz4+Ml18MCk+PjBdJjE1KT4+MF18MDtjW2s+PjJdPShjW2s+PjJdfDApKzF9YVsoY1t4Pj4yXXwwKSsoKGNbbz4+Ml08PDEpKzIpPj4wXT0zOTthWyhjW3g+PjJdfDApKygoY1tvPj4yXTw8MSkrMyk+PjBdPTA7YVtjW3g+PjJdPj4wXT04ODthWyhjW3g+PjJdfDApKzE+PjBdPTM5O21lKGNbZz4+Ml18MCxjW3g+PjJdfDAsLTEsLTEpO0tkKGNbeD4+Ml18MCk7aT15O3JldHVybn1jYXNlIDM6e2NbdT4+Ml09JGQoY1tjW2o+PjJdPj4yXXwwKXwwO2lmKCEoY1t1Pj4yXXwwKSl7aT15O3JldHVybn1jW2w+PjJdPTA7eD1uO2NbeD4+Ml09MDtjW3grND4+Ml09MDt3aGlsZSgxKXtpZighKGFbKGNbdT4+Ml18MCkrKGNbbD4+Ml18MCk+PjBdfDApKWJyZWFrO2lmKChkWyhjW3U+PjJdfDApKyhjW2w+PjJdfDApPj4wXXwwKT09Mzkpe3c9bjt3PVJSKGNbdz4+Ml18MCxjW3crND4+Ml18MCwxLDApfDA7eD1uO2NbeD4+Ml09dztjW3grND4+Ml09Q31jW2w+PjJdPShjW2w+PjJdfDApKzF9dz1jW2c+PjJdfDA7dj1jW2w+PjJdfDA7eD1uO3g9UlIodnwwLCgodnwwKTwwKTw8MzE+PjMxfDAsY1t4Pj4yXXwwLGNbeCs0Pj4yXXwwKXwwO3g9UlIoeHwwLEN8MCwzLDApfDA7Y1t0Pj4yXT1PUCh3LHgsQyl8MDtpZighKGNbdD4+Ml18MCkpe2k9eTtyZXR1cm59YVtjW3Q+PjJdPj4wXT0zOTtjW2w+PjJdPTA7Y1ttPj4yXT0xO3doaWxlKDEpe2lmKCEoYVsoY1t1Pj4yXXwwKSsoY1tsPj4yXXwwKT4+MF18MCkpYnJlYWs7dz1hWyhjW3U+PjJdfDApKyhjW2w+PjJdfDApPj4wXXwwO3g9Y1ttPj4yXXwwO2NbbT4+Ml09eCsxO2FbKGNbdD4+Ml18MCkreD4+MF09dztpZigoZFsoY1t1Pj4yXXwwKSsoY1tsPj4yXXwwKT4+MF18MCk9PTM5KXt4PWNbbT4+Ml18MDtjW20+PjJdPXgrMTthWyhjW3Q+PjJdfDApK3g+PjBdPTM5fWNbbD4+Ml09KGNbbD4+Ml18MCkrMX14PWNbbT4+Ml18MDtjW20+PjJdPXgrMTthWyhjW3Q+PjJdfDApK3g+PjBdPTM5O2FbKGNbdD4+Ml18MCkrKGNbbT4+Ml18MCk+PjBdPTA7bWUoY1tnPj4yXXwwLGNbdD4+Ml18MCxjW20+PjJdfDAsMTQ4KTtpPXk7cmV0dXJufWRlZmF1bHQ6e21lKGNbZz4+Ml18MCwzOTY5MSw0LDApO2k9eTtyZXR1cm59fX1mdW5jdGlvbiBBUChhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wO2U9aTtpPWkrMTZ8MDtnPWUrMTJ8MDtmPWU7Y1tnPj4yXT1hO2NbZSs4Pj4yXT1iO2NbZSs0Pj4yXT1kO2NbZj4+Ml09dmUoY1tnPj4yXXwwKXwwO2Q9Y1tnPj4yXXwwO2E9cGYoY1tmPj4yXXwwKXwwO2tlKGQsYSxDKTtpPWU7cmV0dXJufWZ1bmN0aW9uIEJQKGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTA7ZT1pO2k9aSsxNnwwO2c9ZSsxMnwwO2Y9ZTtjW2c+PjJdPWE7Y1tlKzg+PjJdPWI7Y1tlKzQ+PjJdPWQ7Y1tmPj4yXT12ZShjW2c+PjJdfDApfDA7YT1jW2c+PjJdfDA7amUoYSxxZihjW2Y+PjJdfDApfDApO2k9ZTtyZXR1cm59ZnVuY3Rpb24gQ1AoYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MDtlPWk7aT1pKzE2fDA7Zz1lKzEyfDA7Zj1lO2NbZz4+Ml09YTtjW2UrOD4+Ml09YjtjW2UrND4+Ml09ZDtjW2Y+PjJdPXZlKGNbZz4+Ml18MCl8MDthPWNbZz4+Ml18MDtqZShhLHJmKGNbZj4+Ml18MCl8MCk7aT1lO3JldHVybn1mdW5jdGlvbiBEUChiLGUsZil7Yj1ifDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MDt3PWk7aT1pKzgwfDA7cD13KzY0fDA7Zz13KzU2fDA7dj13KzUyfDA7bj13KzQ4fDA7bz13KzQ0fDA7dT13KzQwfDA7cz13KzM2fDA7bD13KzMyfDA7bT13KzI4fDA7az13O2o9dysyNHwwO3E9dysyMHwwO3I9dysxNnwwO3Q9dysxMnwwO2g9dys4fDA7Y1twPj4yXT1iO2Nbdys2MD4+Ml09ZTtjW2c+PjJdPWY7Y1t2Pj4yXT0kZChjW2NbZz4+Ml0+PjJdfDApfDA7aWYoIShjW3Y+PjJdfDApKXtpPXc7cmV0dXJufWNbcz4+Ml09YWUoY1tjW2c+PjJdPj4yXXwwKXwwO2Nbbj4+Ml09JGQoY1soY1tnPj4yXXwwKSs0Pj4yXXwwKXwwO2lmKCEoY1tuPj4yXXwwKSl7aT13O3JldHVybn1pZighKGRbY1tuPj4yXT4+MF18MCkpe29lKGNbcD4+Ml18MCxjW2NbZz4+Ml0+PjJdfDApO2k9dztyZXR1cm59Y1tsPj4yXT1hZShjWyhjW2c+PjJdfDApKzQ+PjJdfDApfDA7Y1tvPj4yXT0kZChjWyhjW2c+PjJdfDApKzg+PjJdfDApfDA7aWYoIShjW28+PjJdfDApKXtpPXc7cmV0dXJufWNbbT4+Ml09YWUoY1soY1tnPj4yXXwwKSs4Pj4yXXwwKXwwO2Y9KGNbcz4+Ml18MCkrMXwwO2I9aztjW2I+PjJdPWY7Y1tiKzQ+PjJdPSgoZnwwKTwwKTw8MzE+PjMxO2I9aztjW3U+PjJdPU9QKGNbcD4+Ml18MCxjW2I+PjJdfDAsY1tiKzQ+PjJdfDApfDA7aWYoIShjW3U+PjJdfDApKXtpPXc7cmV0dXJufWNbaj4+Ml09KGNbcz4+Ml18MCktKGNbbD4+Ml18MCk7Y1tyPj4yXT0wO2NbcT4+Ml09MDt3aGlsZSgxKXtpZigoY1txPj4yXXwwKT4oY1tqPj4yXXwwKSl7Zz0xODticmVha31pZigoZFsoY1t2Pj4yXXwwKSsoY1txPj4yXXwwKT4+MF18MHwwKT09KGRbY1tuPj4yXT4+MF18MHwwKT8oZVIoKGNbdj4+Ml18MCkrKGNbcT4+Ml18MCl8MCxjW24+PjJdfDAsY1tsPj4yXXwwKXwwKT09MDowKXtjW2g+PjJdPXZlKGNbcD4+Ml18MCl8MDtnPShjW20+PjJdfDApLShjW2w+PjJdfDApfDA7Zj1rO2c9UlIoY1tmPj4yXXwwLGNbZis0Pj4yXXwwLGd8MCwoKGd8MCk8MCk8PDMxPj4zMXwwKXwwO2Y9aztjW2Y+PjJdPWc7Y1tmKzQ+PjJdPUM7Zj1rO2Y9UVIoY1tmPj4yXXwwLGNbZis0Pj4yXXwwLDEsMCl8MDtnPUM7Yj1jWyhjW2g+PjJdfDApKzk2Pj4yXXwwO2U9KChifDApPDApPDwzMT4+MzE7aWYoKGd8MCk+KGV8MCl8KGd8MCk9PShlfDApJmY+Pj4wPmI+Pj4wKXtnPTEzO2JyZWFrfWNbdD4+Ml09Y1t1Pj4yXTtiPWNbaz4+Ml18MDtjW3U+PjJdPU1kKGNbdT4+Ml18MCxiLCgoYnwwKTwwKTw8MzE+PjMxKXwwO2lmKCEoY1t1Pj4yXXwwKSl7Zz0xNTticmVha31UUigoY1t1Pj4yXXwwKSsoY1tyPj4yXXwwKXwwLGNbbz4+Ml18MCxjW20+PjJdfDApfDA7Y1tyPj4yXT0oY1tyPj4yXXwwKSsoY1ttPj4yXXwwKTtjW3E+PjJdPShjW3E+PjJdfDApKygoY1tsPj4yXXwwKS0xKX1lbHNle2Y9YVsoY1t2Pj4yXXwwKSsoY1txPj4yXXwwKT4+MF18MDtiPWNbcj4+Ml18MDtjW3I+PjJdPWIrMTthWyhjW3U+PjJdfDApK2I+PjBdPWZ9Y1txPj4yXT0oY1txPj4yXXwwKSsxfWlmKChnfDApPT0xMyl7cmUoY1twPj4yXXwwKTtLZChjW3U+PjJdfDApO2k9dztyZXR1cm59ZWxzZSBpZigoZ3wwKT09MTUpe3NlKGNbcD4+Ml18MCk7S2QoY1t0Pj4yXXwwKTtpPXc7cmV0dXJufWVsc2UgaWYoKGd8MCk9PTE4KXtUUigoY1t1Pj4yXXwwKSsoY1tyPj4yXXwwKXwwLChjW3Y+PjJdfDApKyhjW3E+PjJdfDApfDAsKGNbcz4+Ml18MCktKGNbcT4+Ml18MCl8MCl8MDtjW3I+PjJdPShjW3I+PjJdfDApKygoY1tzPj4yXXwwKS0oY1txPj4yXXwwKSk7YVsoY1t1Pj4yXXwwKSsoY1tyPj4yXXwwKT4+MF09MDttZShjW3A+PjJdfDAsY1t1Pj4yXXwwLGNbcj4+Ml18MCwxNDgpO2k9dztyZXR1cm59fWZ1bmN0aW9uIEVQKGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MDtnPWk7aT1pKzMyfDA7ZT1nKzIwfDA7aj1nKzEyfDA7aD1nO2Y9Zys4fDA7Y1tlPj4yXT1hO2NbZysxNj4+Ml09YjtjW2o+PjJdPWQ7aj1kZShjW2Nbaj4+Ml0+PjJdfDApfDA7ZD1DO2I9aDtjW2I+PjJdPWo7Y1tiKzQ+PjJdPWQ7Yj0oY1toKzQ+PjJdfDApPDA7YT1oO2NbYT4+Ml09Yj8wOmo7Y1thKzQ+PjJdPWI/MDpkO2E9aDtjW2Y+PjJdPXBlKGNbZT4+Ml18MCxjW2E+PjJdfDAsY1thKzQ+PjJdfDApfDA7aWYoIShjW2Y+PjJdfDApKXtpPWc7cmV0dXJufXFlKGNbZT4+Ml18MCxjW2Y+PjJdfDApO2k9ZztyZXR1cm59ZnVuY3Rpb24gRlAoYixlLGYpe2I9YnwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wO3I9aTtpPWkrNDh8MDttPXIrNDR8MDtnPXIrNDB8MDtoPXIrMzZ8MDtwPXIrMzJ8MDtxPXIrMjh8MDtqPXIrMjR8MDtsPXIrMjB8MDtuPXIrOHwwO289cjtrPXIrMTZ8MDtjW20+PjJdPWI7Y1tnPj4yXT1lO2NbaD4+Ml09ZjtjW2s+PjJdPTA7aWYoKGVlKGNbKGNbaD4+Ml18MCkrND4+Ml18MCl8MCk9PTUpe2k9cjtyZXR1cm59aWYoKGNbZz4+Ml18MCk9PTM/KGVlKGNbKGNbaD4+Ml18MCkrOD4+Ml18MCl8MCk9PTU6MCl7aT1yO3JldHVybn1jW2w+PjJdPWVlKGNbY1toPj4yXT4+Ml18MCl8MDtiPWNlKGNbKGNbaD4+Ml18MCkrND4+Ml18MCl8MDtlPW47Y1tlPj4yXT1iO2NbZSs0Pj4yXT0oKGJ8MCk8MCk8PDMxPj4zMTtlPWNbY1toPj4yXT4+Ml18MDthOmRvIGlmKChjW2w+PjJdfDApPT00KXtjW2o+PjJdPWFlKGUpfDA7Y1twPj4yXT1fZChjW2NbaD4+Ml0+PjJdfDApfDA7aWYoIShjW3A+PjJdfDApKXtpPXI7cmV0dXJufX1lbHNle2NbcD4+Ml09JGQoZSl8MDtpZighKGNbcD4+Ml18MCkpe2k9cjtyZXR1cm59Y1tqPj4yXT0wO2lmKChjW24rND4+Ml18MCk8MCl7Y1txPj4yXT1jW3A+PjJdO3doaWxlKDEpe2lmKCEoYVtjW3E+PjJdPj4wXXwwKSlicmVhayBhO2I9Y1txPj4yXXwwO2NbcT4+Ml09YisxO2I6ZG8gaWYoKGRbYj4+MF18MCk+PTE5Mil3aGlsZSgxKXtpZigoZFtjW3E+PjJdPj4wXSYxOTJ8MCkhPTEyOClicmVhayBiO2NbcT4+Ml09KGNbcT4+Ml18MCkrMX13aGlsZSgwKTtjW2o+PjJdPShjW2o+PjJdfDApKzF9fX13aGlsZSgwKTtpZigoY1tnPj4yXXwwKT09Myl7Zz1jZShjWyhjW2g+PjJdfDApKzg+PjJdfDApfDA7aD1vO2NbaD4+Ml09ZztjW2grND4+Ml09KChnfDApPDApPDwzMT4+MzE7aWYoKGNbbys0Pj4yXXwwKTwwKXtnPW87Zz1RUigwLDAsY1tnPj4yXXwwLGNbZys0Pj4yXXwwKXwwO2g9bztjW2g+PjJdPWc7Y1toKzQ+PjJdPUM7Y1trPj4yXT0xfX1lbHNle2c9Y1sodmUoY1ttPj4yXXwwKXwwKSs5Nj4+Ml18MDtoPW87Y1toPj4yXT1nO2NbaCs0Pj4yXT0oKGd8MCk8MCk8PDMxPj4zMX1kbyBpZigoY1tuKzQ+PjJdfDApPDApe2c9Y1tqPj4yXXwwO2g9bjtnPVJSKGNbaD4+Ml18MCxjW2grND4+Ml18MCxnfDAsKChnfDApPDApPDwzMT4+MzF8MCl8MDtoPW47Y1toPj4yXT1nO2NbaCs0Pj4yXT1DO2lmKChjW24rND4+Ml18MCk8MCl7Zj1uO2c9bztmPVJSKGNbZz4+Ml18MCxjW2crND4+Ml18MCxjW2Y+PjJdfDAsY1tmKzQ+PjJdfDApfDA7Zz1DO2I9bztjW2I+PjJdPWY7Y1tiKzQ+PjJdPWc7Yj0oY1tvKzQ+PjJdfDApPDA7aD1vO2NbaD4+Ml09Yj8wOmY7Y1toKzQ+PjJdPWI/MDpnO2g9bjtjW2g+PjJdPTA7Y1toKzQ+PjJdPTB9fWVsc2V7aD1uO2c9Y1toKzQ+PjJdfDA7aWYoKGd8MCk+MHwoZ3wwKT09MCYoY1toPj4yXXwwKT4+PjA+MCl7Zz1uO2c9UlIoY1tnPj4yXXwwLGNbZys0Pj4yXXwwLC0xLC0xKXwwO2g9bjtjW2g+PjJdPWc7Y1toKzQ+PjJdPUM7YnJlYWt9aD1vO2c9Y1toKzQ+PjJdfDA7aWYoKGd8MCk+MHwoZ3wwKT09MCYoY1toPj4yXXwwKT4+PjA+MCl7Zz1vO2c9UlIoY1tnPj4yXXwwLGNbZys0Pj4yXXwwLC0xLC0xKXwwO2g9bztjW2g+PjJdPWc7Y1toKzQ+PjJdPUN9fXdoaWxlKDApO2lmKChjW2s+PjJdfDApIT0wPyhoPW8saz1uLGg9UVIoY1trPj4yXXwwLGNbays0Pj4yXXwwLGNbaD4+Ml18MCxjW2grND4+Ml18MCl8MCxrPW4sY1trPj4yXT1oLGNbays0Pj4yXT1DLChjW24rND4+Ml18MCk8MCk6MCl7aD1uO2s9bztoPVJSKGNbaz4+Ml18MCxjW2srND4+Ml18MCxjW2g+PjJdfDAsY1toKzQ+PjJdfDApfDA7az1vO2Nbaz4+Ml09aDtjW2srND4+Ml09QztrPW47Y1trPj4yXT0wO2Nbays0Pj4yXT0wfWlmKChjW2w+PjJdfDApPT00KXtoPW47bD1vO2w9UlIoY1toPj4yXXwwLGNbaCs0Pj4yXXwwLGNbbD4+Ml18MCxjW2wrND4+Ml18MCl8MDtoPUM7cT1jW2o+PjJdfDA7az0oKHF8MCk8MCk8PDMxPj4zMTtpZigoaHwwKT4oa3wwKXwoaHwwKT09KGt8MCkmbD4+PjA+cT4+PjApe2w9Y1tqPj4yXXwwO2o9bjtqPVFSKGx8MCwoKGx8MCk8MCk8PDMxPj4zMXwwLGNbaj4+Ml18MCxjW2orND4+Ml18MCl8MDtsPUM7az1vO2Nbaz4+Ml09ajtjW2srND4+Ml09bDtrPShjW28rND4+Ml18MCk8MDtxPW87Y1txPj4yXT1rPzA6ajtjW3ErND4+Ml09az8wOmx9cT1vO2dlKGNbbT4+Ml18MCwoY1twPj4yXXwwKSsoY1tuPj4yXXwwKXwwLGNbcT4+Ml18MCxjW3ErND4+Ml18MCwtMSk7aT1yO3JldHVybn13aGlsZSgxKXtsPW47ZT1jW3A+PjJdfDA7aWYoISgoZFtjW3A+PjJdPj4wXXwwKSE9MD8oY1tsPj4yXXwwKSE9MHwoY1tsKzQ+PjJdfDApIT0wOjApKWJyZWFrO2NbcD4+Ml09ZSsxO2M6ZG8gaWYoKGRbZT4+MF18MCk+PTE5Mil3aGlsZSgxKXtpZigoZFtjW3A+PjJdPj4wXSYxOTJ8MCkhPTEyOClicmVhayBjO2NbcD4+Ml09KGNbcD4+Ml18MCkrMX13aGlsZSgwKTtrPW47az1SUihjW2s+PjJdfDAsY1trKzQ+PjJdfDAsLTEsLTEpfDA7bD1uO2NbbD4+Ml09aztjW2wrND4+Ml09Q31jW3E+PjJdPWU7d2hpbGUoMSl7bj1vO2lmKCEoKGRbY1txPj4yXT4+MF18MCkhPTA/KGNbbj4+Ml18MCkhPTB8KGNbbis0Pj4yXXwwKSE9MDowKSlicmVhaztuPWNbcT4+Ml18MDtjW3E+PjJdPW4rMTtkOmRvIGlmKChkW24+PjBdfDApPj0xOTIpd2hpbGUoMSl7aWYoKGRbY1txPj4yXT4+MF0mMTkyfDApIT0xMjgpYnJlYWsgZDtjW3E+PjJdPShjW3E+PjJdfDApKzF9d2hpbGUoMCk7bD1vO2w9UlIoY1tsPj4yXXwwLGNbbCs0Pj4yXXwwLC0xLC0xKXwwO249bztjW24+PjJdPWw7Y1tuKzQ+PjJdPUN9cT0oY1txPj4yXXwwKS0oY1twPj4yXXwwKXwwO25lKGNbbT4+Ml18MCxjW3A+PjJdfDAscSwoKHF8MCk8MCk8PDMxPj4zMSwtMSwxKTtpPXI7cmV0dXJufWZ1bmN0aW9uIEdQKGIsZSxmKXtiPWJ8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLjA7bT1pO2k9aSszMnwwO249bSsyNHwwO2c9bSsxNnwwO2o9bSsxMnwwO2s9bSs4fDA7bD1tO2Nbbj4+Ml09YjtjW20rMjA+PjJdPWU7Y1tnPj4yXT1mO2Nbaj4+Ml09d2UoY1tuPj4yXXwwLDMyKXwwO2Nbaz4+Ml09VGUoY1tjW2c+PjJdPj4yXXwwKXwwO2lmKCEoKGNbaj4+Ml18MCkhPTAmKGNbaz4+Ml18MCkhPTUpKXtpPW07cmV0dXJufW49KGNbaj4+Ml18MCkrMTZ8MDtiPW47Yj1SUihjW2I+PjJdfDAsY1tiKzQ+PjJdfDAsMSwwKXwwO2Nbbj4+Ml09YjtjW24rND4+Ml09QztnPWNbY1tnPj4yXT4+Ml18MDtpZigoY1trPj4yXXwwKSE9MSl7bz0rYmUoZyk7bj1jW2o+PjJdfDA7aFtuPj4zXT0raFtuPj4zXStvO2FbKGNbaj4+Ml18MCkrMjU+PjBdPTE7aT1tO3JldHVybn1uPWRlKGcpfDA7az1sO2Nbaz4+Ml09bjtjW2srND4+Ml09QztrPWw7bj1jW2o+PjJdfDA7aFtuPj4zXT0raFtuPj4zXSsoKygoY1trPj4yXXwwKT4+PjApKzQyOTQ5NjcyOTYuMCorKGNbays0Pj4yXXwwKSk7aWYoZFsoY1tqPj4yXXwwKSsyNT4+MF18MHwoZFsoY1tqPj4yXXwwKSsyND4+MF18MCkpe2k9bTtyZXR1cm59bj1sO2lmKCEoSUkoKGNbaj4+Ml18MCkrOHwwLGNbbj4+Ml18MCxjW24rND4+Ml18MCl8MCkpe2k9bTtyZXR1cm59YVsoY1tqPj4yXXwwKSsyND4+MF09MTtpPW07cmV0dXJufWZ1bmN0aW9uIEhQKGIpe2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTA7Zj1pO2k9aSsxNnwwO2Q9Zis0fDA7ZT1mO2NbZD4+Ml09YjtjW2U+PjJdPXdlKGNbZD4+Ml18MCwwKXwwO2lmKCEoY1tlPj4yXXwwKSl7aT1mO3JldHVybn1iPShjW2U+PjJdfDApKzE2fDA7Zz1jW2IrND4+Ml18MDtpZighKChnfDApPjB8KGd8MCk9PTAmKGNbYj4+Ml18MCk+Pj4wPjApKXtpPWY7cmV0dXJufWlmKGFbKGNbZT4+Ml18MCkrMjQ+PjBdfDApe2llKGNbZD4+Ml18MCw0NTE2NSwtMSk7aT1mO3JldHVybn1kPWNbZD4+Ml18MDtiPWNbZT4+Ml18MDtpZihhWyhjW2U+PjJdfDApKzI1Pj4wXXwwKXtoZShkLCtoW2I+PjNdKTtpPWY7cmV0dXJufWVsc2V7Zz1iKzh8MDtrZShkLGNbZz4+Ml18MCxjW2crND4+Ml18MCk7aT1mO3JldHVybn19ZnVuY3Rpb24gSVAoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MC4wO2Q9aTtpPWkrMTZ8MDtlPWQrNHwwO2I9ZDtjW2U+PjJdPWE7Y1tiPj4yXT13ZShjW2U+PjJdfDAsMCl8MDthPWNbZT4+Ml18MDtpZighKGNbYj4+Ml18MCkpe2Y9MC4wO2hlKGEsZik7aT1kO3JldHVybn1mPStoW2NbYj4+Ml0+PjNdO2hlKGEsZik7aT1kO3JldHVybn1mdW5jdGlvbiBKUChhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wO2U9aTtpPWkrMTZ8MDtiPWUrNHwwO2Q9ZTtjW2I+PjJdPWE7Y1tkPj4yXT13ZShjW2I+PjJdfDAsMCl8MDtpZighKGNbZD4+Ml18MCkpe2k9ZTtyZXR1cm59YT0oY1tkPj4yXXwwKSsxNnwwO2Y9Y1thKzQ+PjJdfDA7aWYoISgoZnwwKT4wfChmfDApPT0wJihjW2E+PjJdfDApPj4+MD4wKSl7aT1lO3JldHVybn1mPShjW2Q+PjJdfDApKzE2fDA7aGUoY1tiPj4yXXwwLCtoW2NbZD4+Ml0+PjNdLygrKChjW2Y+PjJdfDApPj4+MCkrNDI5NDk2NzI5Ni4wKisoY1tmKzQ+PjJdfDApKSk7aT1lO3JldHVybn1mdW5jdGlvbiBLUChhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTA7Zz1pO2k9aSsxNnwwO2o9ZysxMnwwO2g9Zys4fDA7ZT1nKzR8MDtmPWc7Y1tqPj4yXT1hO2NbaD4+Ml09YjtjW2U+PjJdPWQ7Y1tmPj4yXT13ZShjW2o+PjJdfDAsOCl8MDtpZighKGNbaD4+Ml18MCkpe2lmKCEoY1tmPj4yXXwwKSl7aT1nO3JldHVybn19ZWxzZXtqPTUhPShlZShjW2NbZT4+Ml0+PjJdfDApfDApO2lmKCEoaiYoY1tmPj4yXXwwKSE9MCkpe2k9ZztyZXR1cm59fWo9Y1tmPj4yXXwwO2g9ajtoPVJSKGNbaD4+Ml18MCxjW2grND4+Ml18MCwxLDApfDA7Y1tqPj4yXT1oO2Nbais0Pj4yXT1DO2k9ZztyZXR1cm59ZnVuY3Rpb24gTFAoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wO2Q9aTtpPWkrMTZ8MDtlPWQrNHwwO2I9ZDtjW2U+PjJdPWE7Y1tiPj4yXT13ZShjW2U+PjJdfDAsMCl8MDthPWNbZT4+Ml18MDtpZighKGNbYj4+Ml18MCkpe2I9MDtlPTA7a2UoYSxiLGUpO2k9ZDtyZXR1cm59ZT1jW2I+PjJdfDA7Yj1jW2U+PjJdfDA7ZT1jW2UrND4+Ml18MDtrZShhLGIsZSk7aT1kO3JldHVybn1mdW5jdGlvbiBNUChhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTA7cD1pO2k9aSs0OHwwO2U9cCszNnwwO2Y9cCszMnwwO2c9cCsyOHwwO289cCsyNHwwO209cCsyMHwwO249cCsxNnwwO2w9cCsxMnwwO2s9cCs4fDA7aD1wKzR8MDtqPXA7Y1tlPj4yXT1hO2NbZj4+Ml09YjtjW2c+PjJdPWQ7aWYoKGVlKGNbY1tnPj4yXT4+Ml18MCl8MCk9PTUpe2k9cDtyZXR1cm59Y1ttPj4yXT13ZShjW2U+PjJdfDAsMjgpfDA7aWYoIShjW20+PjJdfDApKXtpPXA7cmV0dXJufWNbaD4+Ml09dmUoY1tlPj4yXXwwKXwwO2Nbaj4+Ml09KGNbKGNbbT4+Ml18MCkrMjA+PjJdfDApPT0wJjE7Y1soY1ttPj4yXXwwKSsyMD4+Ml09Y1soY1toPj4yXXwwKSs5Nj4+Ml07aWYoIShjW2o+PjJdfDApKXtpZigoY1tmPj4yXXwwKT09Mil7Y1tuPj4yXT0kZChjWyhjW2c+PjJdfDApKzQ+PjJdfDApfDA7Y1trPj4yXT1hZShjWyhjW2c+PjJdfDApKzQ+PjJdfDApfDB9ZWxzZXtjW24+PjJdPTM0NzEwO2Nbaz4+Ml09MX1pZihjW2s+PjJdfDApc0EoY1ttPj4yXXwwLGNbbj4+Ml18MCxjW2s+PjJdfDApfWNbbz4+Ml09JGQoY1tjW2c+PjJdPj4yXXwwKXwwO2NbbD4+Ml09YWUoY1tjW2c+PjJdPj4yXXwwKXwwO2lmKCEoY1tvPj4yXXwwKSl7aT1wO3JldHVybn1zQShjW20+PjJdfDAsY1tvPj4yXXwwLGNbbD4+Ml18MCk7aT1wO3JldHVybn1mdW5jdGlvbiBOUChhKXthPWF8MDt2YXIgYj0wLGU9MCxmPTA7Zj1pO2k9aSsxNnwwO2I9Zis0fDA7ZT1mO2NbYj4+Ml09YTtjW2U+PjJdPXdlKGNbYj4+Ml18MCwwKXwwO2lmKCEoY1tlPj4yXXwwKSl7aT1mO3JldHVybn1pZigoZFsoY1tlPj4yXXwwKSsyND4+MF18MHwwKT09Mil7cmUoY1tiPj4yXXwwKTtpPWY7cmV0dXJufWI9Y1tiPj4yXXwwO2lmKChkWyhjW2U+PjJdfDApKzI0Pj4wXXwwfDApPT0xKXtzZShiKTtpPWY7cmV0dXJufWVsc2V7bWUoYixmZyhjW2U+PjJdfDApfDAsLTEsMTQ4KTtpPWY7cmV0dXJufX1mdW5jdGlvbiBPUChhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wO2g9aTtpPWkrMzJ8MDtlPWgrMTZ8MDtmPWg7Zz1oKzEyfDA7az1oKzh8MDtjW2U+PjJdPWE7aj1mO2Nbaj4+Ml09YjtjW2orND4+Ml09ZDtjW2s+PjJdPXZlKGNbZT4+Ml18MCl8MDtkPWY7aj1jW2QrND4+Ml18MDthPWNbKGNbaz4+Ml18MCkrOTY+PjJdfDA7Yj0oKGF8MCk8MCk8PDMxPj4zMTtpZigoanwwKT4oYnwwKXwoKGp8MCk9PShifDApPyhjW2Q+PjJdfDApPj4+MD5hPj4+MDowKSl7cmUoY1tlPj4yXXwwKTtjW2c+PjJdPTA7az1jW2c+PjJdfDA7aT1oO3JldHVybiBrfDB9az1mO2NbZz4+Ml09JGYoY1trPj4yXXwwLGNbays0Pj4yXXwwKXwwO2lmKGNbZz4+Ml18MCl7az1jW2c+PjJdfDA7aT1oO3JldHVybiBrfDB9c2UoY1tlPj4yXXwwKTtrPWNbZz4+Ml18MDtpPWg7cmV0dXJuIGt8MH1mdW5jdGlvbiBQUChhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTA7ZD1pO2k9aSsxNnwwO2U9ZCs0fDA7Yj1kO2NbZT4+Ml09YTtjW2I+PjJdPShjWyhjWyhjW2U+PjJdfDApKzEyPj4yXXwwKSs4OD4+Ml18MCkrKCgoY1soY1tlPj4yXXwwKSsxNj4+Ml18MCktMXwwKSoyMHwwKTtpPWQ7cmV0dXJuIGNbKGNbYj4+Ml18MCkrMTY+PjJdfDB9ZnVuY3Rpb24gUVAoYil7Yj1ifDA7dmFyIGQ9MCxlPTA7ZD1pO2k9aSsxNnwwO2U9ZDtjW2U+PjJdPWI7YVsoY1tlPj4yXXwwKSsyND4+MF09MTtpPWQ7cmV0dXJufWZ1bmN0aW9uIFJQKGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MDtnPWk7aT1pKzY0fDA7ZT1nKzU2fDA7aj1nKzUyfDA7aD1nKzQ4fDA7Zj1nO2NbZT4+Ml09YTtjW2o+PjJdPWI7Y1toPj4yXT1kO2lmKFpQKGNbZT4+Ml18MCxjW2o+PjJdfDAsY1toPj4yXXwwLGYpfDApe2k9ZztyZXR1cm59X1AoZik7aj1mO2hlKGNbZT4+Ml18MCwoKygoY1tqPj4yXXwwKT4+PjApKzQyOTQ5NjcyOTYuMCorKGNbais0Pj4yXXwwKSkvODY0LjBlNSk7aT1nO3JldHVybn1mdW5jdGlvbiBTUChhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MDtqPWk7aT1pKzE3NnwwO2Y9ais0OHwwO2U9ais2OHwwO2w9ais2NHwwO2s9ais2MHwwO2c9ajtoPWorNzJ8MDtjW2U+PjJdPWE7Y1tsPj4yXT1iO2Nbaz4+Ml09ZDtpZihaUChjW2U+PjJdfDAsY1tsPj4yXXwwLGNbaz4+Ml18MCxnKXwwKXtpPWo7cmV0dXJufWFRKGcpO2s9Y1tnKzEyPj4yXXwwO2w9Y1tnKzE2Pj4yXXwwO2NbZj4+Ml09Y1tnKzg+PjJdO2NbZis0Pj4yXT1rO2NbZis4Pj4yXT1sO1FkKDEwMCxoLDQ1NTA2LGYpfDA7bWUoY1tlPj4yXXwwLGgsLTEsLTEpO2k9ajtyZXR1cm59ZnVuY3Rpb24gVFAoYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxqPTAsaz0wLGw9MCxtPTA7az1pO2k9aSsxNzZ8MDtmPWsrNDh8MDtlPWsrNjh8MDttPWsrNjR8MDtsPWsrNjB8MDtnPWs7aj1rKzcyfDA7Y1tlPj4yXT1hO2NbbT4+Ml09YjtjW2w+PjJdPWQ7aWYoWlAoY1tlPj4yXXwwLGNbbT4+Ml18MCxjW2w+PjJdfDAsZyl8MCl7aT1rO3JldHVybn1iUShnKTtsPWNbZysyND4+Ml18MDttPX5+K2hbZyszMj4+M107Y1tmPj4yXT1jW2crMjA+PjJdO2NbZis0Pj4yXT1sO2NbZis4Pj4yXT1tO1FkKDEwMCxqLDQ1NDkxLGYpfDA7bWUoY1tlPj4yXXwwLGosLTEsLTEpO2k9aztyZXR1cm59ZnVuY3Rpb24gVVAoYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxqPTAsaz0wLGw9MCxtPTA7az1pO2k9aSsxOTJ8MDtmPWsrNDh8MDtlPWsrODB8MDttPWsrNzZ8MDtsPWsrNzJ8MDtnPWs7aj1rKzg0fDA7Y1tlPj4yXT1hO2NbbT4+Ml09YjtjW2w+PjJdPWQ7aWYoWlAoY1tlPj4yXXwwLGNbbT4+Ml18MCxjW2w+PjJdfDAsZyl8MCl7aT1rO3JldHVybn0kUChnKTtiPWNbZysxMj4+Ml18MDtkPWNbZysxNj4+Ml18MDthPWNbZysyMD4+Ml18MDtsPWNbZysyND4+Ml18MDttPX5+K2hbZyszMj4+M107Y1tmPj4yXT1jW2crOD4+Ml07Y1tmKzQ+PjJdPWI7Y1tmKzg+PjJdPWQ7Y1tmKzEyPj4yXT1hO2NbZisxNj4+Ml09bDtjW2YrMjA+PjJdPW07UWQoMTAwLGosNDU0NjEsZil8MDttZShjW2U+PjJdfDAsaiwtMSwtMSk7aT1rO3JldHVybn1mdW5jdGlvbiBWUChiLGQsZSl7Yj1ifDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEQ9MCxFPTAsRj0wLEc9MCxIPTAsST0wLEo9MDtKPWk7aT1pKzMzNnwwO3o9SisxOTJ8MDt5PUorMTg0fDA7eD1KKzE3NnwwO3c9SisxNjh8MDt2PUorMTYwfDA7dT1KKzE1MnwwO3Q9SisxNDR8MDtCPUorMTM2fDA7QT1KKzEyOHwwO3M9SisxMjB8MDtyPUorMTEyfDA7bT1KKzIzMnwwO2Y9SisyMjh8MDtnPUorMjI0fDA7RT1KKzY0fDA7az1KKzU2fDA7bj1KKzIyMHwwO289SisyMTZ8MDtHPUorMjEyfDA7aj1KKzIwOHwwO0k9SisyMDR8MDtIPUorMjM2fDA7cT1KKzQ4fDA7cD1KKzIwMHwwO0Y9SjtEPUorMTk2fDA7Y1ttPj4yXT1iO2NbZj4+Ml09ZDtjW2c+PjJdPWU7aWYoIShjW2Y+PjJdfDApKXtpPUo7cmV0dXJufWNbST4+Ml09JGQoY1tjW2c+PjJdPj4yXXwwKXwwO2lmKCEoY1tJPj4yXXwwKSl7aT1KO3JldHVybn1pZihaUChjW20+PjJdfDAsKGNbZj4+Ml18MCktMXwwLChjW2c+PjJdfDApKzR8MCxFKXwwKXtpPUo7cmV0dXJufWNbaj4+Ml09dmUoY1ttPj4yXXwwKXwwO2Nbbj4+Ml09MDtiPWs7Y1tiPj4yXT0xO2NbYis0Pj4yXT0wO2E6d2hpbGUoMSl7aWYoIShhWyhjW0k+PjJdfDApKyhjW24+PjJdfDApPj4wXXwwKSlicmVhaztpZigoYVsoY1tJPj4yXXwwKSsoY1tuPj4yXXwwKT4+MF18MCk9PTM3KXtzd2l0Y2goYVsoY1tJPj4yXXwwKSsoKGNbbj4+Ml18MCkrMSk+PjBdfDApe2Nhc2UgODc6Y2FzZSA4MzpjYXNlIDc3OmNhc2UgMTA5OmNhc2UgNzI6Y2FzZSAxMDA6e2U9aztiPWs7Y1tiPj4yXT1SUihjW2U+PjJdfDAsY1tlKzQ+PjJdfDAsMSwwKXwwO2NbYis0Pj4yXT1DO2JyZWFrfWNhc2UgMzc6Y2FzZSAxMTk6YnJlYWs7Y2FzZSAxMDI6e2U9aztiPWs7Y1tiPj4yXT1SUihjW2U+PjJdfDAsY1tlKzQ+PjJdfDAsOCwwKXwwO2NbYis0Pj4yXT1DO2JyZWFrfWNhc2UgMTA2OntlPWs7Yj1rO2NbYj4+Ml09UlIoY1tlPj4yXXwwLGNbZSs0Pj4yXXwwLDMsMCl8MDtjW2IrND4+Ml09QzticmVha31jYXNlIDg5OntlPWs7Yj1rO2NbYj4+Ml09UlIoY1tlPj4yXXwwLGNbZSs0Pj4yXXwwLDgsMCl8MDtjW2IrND4+Ml09QzticmVha31jYXNlIDc0OmNhc2UgMTE1OntlPWs7Yj1rO2NbYj4+Ml09UlIoY1tlPj4yXXwwLGNbZSs0Pj4yXXwwLDUwLDApfDA7Y1tiKzQ+PjJdPUM7YnJlYWt9ZGVmYXVsdDp7bD00NDticmVhayBhfX1jW24+PjJdPShjW24+PjJdfDApKzF9Y1tuPj4yXT0oY1tuPj4yXXwwKSsxO2U9aztlPVJSKGNbZT4+Ml18MCxjW2UrND4+Ml18MCwxLDApfDA7Yj1rO2NbYj4+Ml09ZTtjW2IrND4+Ml09Q31pZigobHwwKT09NDQpe2k9SjtyZXR1cm59bD1rO2I9Y1tsKzQ+PjJdfDA7aWYoIShiPj4+MDwwfChifDApPT0wJihjW2w+PjJdfDApPj4+MDwxMDApKXtiPWs7ZD1jW2IrND4+Ml18MDtsPWNbKGNbaj4+Ml18MCkrOTY+PjJdfDA7ZT0oKGx8MCk8MCk8PDMxPj4zMTtpZihkPj4+MD5lPj4+MHwoKGR8MCk9PShlfDApPyhjW2I+PjJdfDApPj4+MD5sPj4+MDowKSl7cmUoY1ttPj4yXXwwKTtpPUo7cmV0dXJufWw9Y1trPj4yXXwwO2NbRz4+Ml09VncoY1tqPj4yXXwwLGwsKChsfDApPDApPDwzMT4+MzEpfDA7aWYoIShjW0c+PjJdfDApKXtzZShjW20+PjJdfDApO2k9SjtyZXR1cm59fWVsc2UgY1tHPj4yXT1IO19QKEUpOyRQKEUpO2Nbbz4+Ml09MDtjW24+PjJdPTA7d2hpbGUoMSl7aWYoIShhWyhjW0k+PjJdfDApKyhjW24+PjJdfDApPj4wXXwwKSlicmVhaztmPWNbbj4+Ml18MDtiOmRvIGlmKChhWyhjW0k+PjJdfDApKyhjW24+PjJdfDApPj4wXXwwKSE9Mzcpe2s9YVsoY1tJPj4yXXwwKStmPj4wXXwwO2w9Y1tvPj4yXXwwO2Nbbz4+Ml09bCsxO2FbKGNbRz4+Ml18MCkrbD4+MF09a31lbHNle2Nbbj4+Ml09ZisxO2RvIHN3aXRjaChhWyhjW0k+PjJdfDApKyhjW24+PjJdfDApPj4wXXwwKXtjYXNlIDEwMDp7bD0oY1tHPj4yXXwwKSsoY1tvPj4yXXwwKXwwO2Nbcj4+Ml09Y1tFKzE2Pj4yXTtRZCgzLGwsNDUzMDMscil8MDtjW28+PjJdPShjW28+PjJdfDApKzI7YnJlYWsgYn1jYXNlIDEwMjp7aFtxPj4zXT0raFtFKzMyPj4zXTtpZigraFtxPj4zXT41OS45OTkpaFtxPj4zXT01OS45OTk7bD0oY1tHPj4yXXwwKSsoY1tvPj4yXXwwKXwwO2hbcz4+M109K2hbcT4+M107UWQoNyxsLDQ1MzA4LHMpfDA7Y1tvPj4yXT0oSmYoKGNbRz4+Ml18MCkrKGNbbz4+Ml18MCl8MCl8MCkrKGNbbz4+Ml18MCk7YnJlYWsgYn1jYXNlIDcyOntsPShjW0c+PjJdfDApKyhjW28+PjJdfDApfDA7Y1tBPj4yXT1jW0UrMjA+PjJdO1FkKDMsbCw0NTMwMyxBKXwwO2Nbbz4+Ml09KGNbbz4+Ml18MCkrMjticmVhayBifWNhc2UgMTA2OmNhc2UgODc6e2Y9RjtnPUU7ZD1mKzQ4fDA7ZG97Y1tmPj4yXT1jW2c+PjJdO2Y9Zis0fDA7Zz1nKzR8MH13aGlsZSgoZnwwKTwoZHwwKSk7YVtGKzQyPj4wXT0wO2NbRisxMj4+Ml09MTtjW0YrMTY+PjJdPTE7X1AoRik7az1FO2w9RjtjW3A+PjJdPV9SKFJSKFFSKGNbaz4+Ml18MCxjW2srND4+Ml18MCxjW2w+PjJdfDAsY1tsKzQ+PjJdfDApfDAsQ3wwLDQzMmU1LDApfDAsQ3wwLDg2NGU1LDApfDA7aWYoKGFbKGNbST4+Ml18MCkrKGNbbj4+Ml18MCk+PjBdfDApPT04Nyl7bD1FO2w9UlIoY1tsPj4yXXwwLGNbbCs0Pj4yXXwwLDQzMmU1LDApfDA7bD1fUihsfDAsQ3wwLDg2NGU1LDApfDA7bD0kUihsfDAsQ3wwLDcsMCl8MDtjW0Q+PjJdPWw7bD0oY1tHPj4yXXwwKSsoY1tvPj4yXXwwKXwwO2NbQj4+Ml09KChjW3A+PjJdfDApKzctKGNbRD4+Ml18MCl8MCkvN3wwO1FkKDMsbCw0NTMwMyxCKXwwO2Nbbz4+Ml09KGNbbz4+Ml18MCkrMjticmVhayBifWVsc2V7bD0oY1tHPj4yXXwwKSsoY1tvPj4yXXwwKXwwO2NbdD4+Ml09KGNbcD4+Ml18MCkrMTtRZCg0LGwsNDUzMTUsdCl8MDtjW28+PjJdPShjW28+PjJdfDApKzM7YnJlYWsgYn19Y2FzZSA3NDp7bD0oY1tHPj4yXXwwKSsoY1tvPj4yXXwwKXwwO2s9RTtoW3U+PjNdPSgrKChjW2s+PjJdfDApPj4+MCkrNDI5NDk2NzI5Ni4wKisoY1trKzQ+PjJdfDApKS84NjQuMGU1O1FkKDIwLGwsNDE5NDYsdSl8MDtjW28+PjJdPShKZigoY1tHPj4yXXwwKSsoY1tvPj4yXXwwKXwwKXwwKSsoY1tvPj4yXXwwKTticmVhayBifWNhc2UgMTA5OntsPShjW0c+PjJdfDApKyhjW28+PjJdfDApfDA7Y1t2Pj4yXT1jW0UrMTI+PjJdO1FkKDMsbCw0NTMwMyx2KXwwO2Nbbz4+Ml09KGNbbz4+Ml18MCkrMjticmVhayBifWNhc2UgNzc6e2w9KGNbRz4+Ml18MCkrKGNbbz4+Ml18MCl8MDtjW3c+PjJdPWNbRSsyND4+Ml07UWQoMyxsLDQ1MzAzLHcpfDA7Y1tvPj4yXT0oY1tvPj4yXXwwKSsyO2JyZWFrIGJ9Y2FzZSAxMTU6e2w9KGNbRz4+Ml18MCkrKGNbbz4+Ml18MCl8MDtqPUU7az14O2Nbaz4+Ml09UVIoX1IoY1tqPj4yXXwwLGNbais0Pj4yXXwwLDFlMywwKXwwLEN8MCw0MTMzNjI0OTYsNDkpfDA7Y1trKzQ+PjJdPUM7UWQoMzAsbCwyODI2Nix4KXwwO2Nbbz4+Ml09KEpmKChjW0c+PjJdfDApKyhjW28+PjJdfDApfDApfDApKyhjW28+PjJdfDApO2JyZWFrIGJ9Y2FzZSA4Mzp7bD0oY1tHPj4yXXwwKSsoY1tvPj4yXXwwKXwwO2NbeT4+Ml09fn4raFtFKzMyPj4zXTtRZCgzLGwsNDUzMDMseSl8MDtjW28+PjJdPShjW28+PjJdfDApKzI7YnJlYWsgYn1jYXNlIDExOTp7az1FO2s9JFIoX1IoUlIoY1trPj4yXXwwLGNbays0Pj4yXXwwLDEyOTZlNSwwKXwwLEN8MCw4NjRlNSwwKXwwLEN8MCw3LDApfDA7bD1jW28+PjJdfDA7Y1tvPj4yXT1sKzE7YVsoY1tHPj4yXXwwKStsPj4wXT0oKGsmMjU1KTw8MjQ+PjI0KSs0ODticmVhayBifWNhc2UgODk6e2w9KGNbRz4+Ml18MCkrKGNbbz4+Ml18MCl8MDtjW3o+PjJdPWNbRSs4Pj4yXTtRZCg1LGwsNDUzMjAseil8MDtjW28+PjJdPShKZigoY1tHPj4yXXwwKSsoY1tvPj4yXXwwKXwwKXwwKSsoY1tvPj4yXXwwKTticmVhayBifWRlZmF1bHQ6e2w9Y1tvPj4yXXwwO2Nbbz4+Ml09bCsxO2FbKGNbRz4+Ml18MCkrbD4+MF09Mzc7YnJlYWsgYn19d2hpbGUoMCl9d2hpbGUoMCk7Y1tuPj4yXT0oY1tuPj4yXXwwKSsxfWFbKGNbRz4+Ml18MCkrKGNbbz4+Ml18MCk+PjBdPTA7bWUoY1ttPj4yXXwwLGNbRz4+Ml18MCwtMSwoY1tHPj4yXXwwKT09KEh8MCk/LTE6MTcwKTtpPUo7cmV0dXJufWZ1bmN0aW9uIFdQKGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MDtlPWk7aT1pKzE2fDA7Zj1lKzh8MDtjW2Y+PjJdPWE7Y1tlKzQ+PjJdPWI7Y1tlPj4yXT1kO1RQKGNbZj4+Ml18MCwwLDApO2k9ZTtyZXR1cm59ZnVuY3Rpb24gWFAoYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wO2U9aTtpPWkrMTZ8MDtmPWUrOHwwO2NbZj4+Ml09YTtjW2UrND4+Ml09YjtjW2U+PjJdPWQ7VVAoY1tmPj4yXXwwLDAsMCk7aT1lO3JldHVybn1mdW5jdGlvbiBZUChhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTA7ZT1pO2k9aSsxNnwwO2Y9ZSs4fDA7Y1tmPj4yXT1hO2NbZSs0Pj4yXT1iO2NbZT4+Ml09ZDtTUChjW2Y+PjJdfDAsMCwwKTtpPWU7cmV0dXJufWZ1bmN0aW9uIFpQKGIsZCxlLGYpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAuMDtwPWk7aT1pKzMyfDA7bz1wKzI4fDA7Zz1wKzI0fDA7aD1wKzIwfDA7aj1wKzE2fDA7az1wKzEyfDA7bT1wKzh8MDtuPXArNHwwO2w9cDtjW2c+PjJdPWI7Y1toPj4yXT1kO2Nbaj4+Ml09ZTtjW2s+PjJdPWY7ZD1jW2s+PjJdfDA7ZT1kKzQ4fDA7ZG97Y1tkPj4yXT0wO2Q9ZCs0fDB9d2hpbGUoKGR8MCk8KGV8MCkpO2lmKCEoY1toPj4yXXwwKSl7Y1tvPj4yXT1jUShjW2c+PjJdfDAsY1trPj4yXXwwKXwwO289Y1tvPj4yXXwwO2k9cDtyZXR1cm4gb3wwfWY9ZWUoY1tjW2o+PjJdPj4yXXwwKXwwO2NbbD4+Ml09ZjtkPWNbY1tqPj4yXT4+Ml18MDtkbyBpZigoZnwwKT09MnwoY1tsPj4yXXwwKT09MSl7cT0rYmUoZCkqODY0LjBlNSsuNTtmPStOKHEpPj0xLjA/KHE+MC4wP35+KyQoK00ocS80Mjk0OTY3Mjk2LjApLDQyOTQ5NjcyOTUuMCk+Pj4wOn5+K1ooKHEtKyh+fnE+Pj4wKSkvNDI5NDk2NzI5Ni4wKT4+PjApOjA7bD1jW2s+PjJdfDA7Y1tsPj4yXT1+fnE+Pj4wO2NbbCs0Pj4yXT1mO2FbKGNbaz4+Ml18MCkrNDI+PjBdPTF9ZWxzZXtjW24+PjJdPSRkKGQpfDA7aWYoKGNbbj4+Ml18MCkhPTA/KGRRKGNbZz4+Ml18MCxjW24+PjJdfDAsY1trPj4yXXwwKXwwKT09MDowKWJyZWFrO2Nbbz4+Ml09MTtvPWNbbz4+Ml18MDtpPXA7cmV0dXJuIG98MH13aGlsZSgwKTtjW20+PjJdPTE7d2hpbGUoMSl7aWYoKGNbbT4+Ml18MCk+PShjW2g+PjJdfDApKXtkPTE0O2JyZWFrfWNbbj4+Ml09JGQoY1soY1tqPj4yXXwwKSsoY1ttPj4yXTw8Mik+PjJdfDApfDA7aWYoIShjW24+PjJdfDApKXtkPTEyO2JyZWFrfWlmKGVRKGNbZz4+Ml18MCxjW24+PjJdfDAsY1trPj4yXXwwKXwwKXtkPTEyO2JyZWFrfWNbbT4+Ml09KGNbbT4+Ml18MCkrMX1pZigoZHwwKT09MTIpe2Nbbz4+Ml09MTtvPWNbbz4+Ml18MDtpPXA7cmV0dXJuIG98MH1lbHNlIGlmKChkfDApPT0xNCl7Y1tvPj4yXT0wO289Y1tvPj4yXXwwO2k9cDtyZXR1cm4gb3wwfXJldHVybiAwfWZ1bmN0aW9uIF9QKGIpe2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAuMDtuPWk7aT1pKzMyfDA7ZD1uKzI4fDA7bT1uKzI0fDA7aj1uKzIwfDA7Zz1uKzE2fDA7ZT1uKzEyfDA7Zj1uKzh8MDtrPW4rNHwwO2w9bjtjW2Q+PjJdPWI7aWYoYVsoY1tkPj4yXXwwKSs0Mj4+MF18MCl7aT1uO3JldHVybn1pZihhWyhjW2Q+PjJdfDApKzQwPj4wXXwwKXtjW20+PjJdPWNbKGNbZD4+Ml18MCkrOD4+Ml07Y1tqPj4yXT1jWyhjW2Q+PjJdfDApKzEyPj4yXTtjW2c+PjJdPWNbKGNbZD4+Ml18MCkrMTY+PjJdfWVsc2V7Y1ttPj4yXT0yZTM7Y1tqPj4yXT0xO2NbZz4+Ml09MX1pZigoY1tqPj4yXXwwKTw9Mil7Y1ttPj4yXT0oY1ttPj4yXXwwKSstMTtjW2o+PjJdPShjW2o+PjJdfDApKzEyfWNbZT4+Ml09KGNbbT4+Ml18MCkvMTAwfDA7Y1tmPj4yXT0yLShjW2U+PjJdfDApKygoY1tlPj4yXXwwKS80fDApO2Nbaz4+Ml09KCgoY1ttPj4yXXwwKSs0NzE2fDApKjM2NTI1fDApLzEwMHwwO2NbbD4+Ml09KCgoY1tqPj4yXXwwKSsxfDApKjMwNjAwMXwwKS8xZTR8MDtvPSgrKChjW2s+PjJdfDApKyhjW2w+PjJdfDApKyhjW2c+PjJdfDApKyhjW2Y+PjJdfDApfDApLTE1MjQuNSkqODY0LjBlNTttPStOKG8pPj0xLjA/KG8+MC4wP35+KyQoK00oby80Mjk0OTY3Mjk2LjApLDQyOTQ5NjcyOTUuMCk+Pj4wOn5+K1ooKG8tKyh+fm8+Pj4wKSkvNDI5NDk2NzI5Ni4wKT4+PjApOjA7Yj1jW2Q+PjJdfDA7Y1tiPj4yXT1+fm8+Pj4wO2NbYis0Pj4yXT1tO2FbKGNbZD4+Ml18MCkrNDI+PjBdPTE7aWYoIShhWyhjW2Q+PjJdfDApKzQxPj4wXXwwKSl7aT1uO3JldHVybn1tPV8oY1soY1tkPj4yXXwwKSsyMD4+Ml18MCwzNmU1KXwwO209bSsoKGNbKGNbZD4+Ml18MCkrMjQ+PjJdfDApKjZlNHwwKXwwO289K2hbKGNbZD4+Ml18MCkrMzI+PjNdKjEuMGUzO209UlIobXwwLCgobXwwKTwwKTw8MzE+PjMxfDAsfn5vPj4+MHwwLCgrTihvKT49MS4wPyhvPjAuMD9+fiskKCtNKG8vNDI5NDk2NzI5Ni4wKSw0Mjk0OTY3Mjk1LjApPj4+MDp+fitaKChvLSsofn5vPj4+MCkpLzQyOTQ5NjcyOTYuMCk+Pj4wKTowKXwwKXwwO2I9Y1tkPj4yXXwwO2w9YjttPVJSKGNbbD4+Ml18MCxjW2wrND4+Ml18MCxtfDAsQ3wwKXwwO2NbYj4+Ml09bTtjW2IrND4+Ml09QztpZighKGFbKGNbZD4+Ml18MCkrNDM+PjBdfDApKXtpPW47cmV0dXJufW09KGNbKGNbZD4+Ml18MCkrMjg+PjJdfDApKjZlNHwwO2I9Y1tkPj4yXXwwO2w9YjttPVFSKGNbbD4+Ml18MCxjW2wrND4+Ml18MCxtfDAsKChtfDApPDApPDwzMT4+MzF8MCl8MDtjW2I+PjJdPW07Y1tiKzQ+PjJdPUM7YVsoY1tkPj4yXXwwKSs0MD4+MF09MDthWyhjW2Q+PjJdfDApKzQxPj4wXT0wO2FbKGNbZD4+Ml18MCkrNDM+PjBdPTA7aT1uO3JldHVybn1mdW5jdGlvbiAkUChhKXthPWF8MDt2YXIgYj0wLGQ9MDtiPWk7aT1pKzE2fDA7ZD1iO2NbZD4+Ml09YTthUShjW2Q+PjJdfDApO2JRKGNbZD4+Ml18MCk7aT1iO3JldHVybn1mdW5jdGlvbiBhUShiKXtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTA7bT1pO2k9aSszMnwwO2Q9bSsyOHwwO2w9bSsyNHwwO2U9bSsyMHwwO2Y9bSsxNnwwO2c9bSsxMnwwO2g9bSs4fDA7aj1tKzR8MDtrPW07Y1tkPj4yXT1iO2lmKGFbKGNbZD4+Ml18MCkrNDA+PjBdfDApe2k9bTtyZXR1cm59Yj1jW2Q+PjJdfDA7aWYoYVsoY1tkPj4yXXwwKSs0Mj4+MF18MCl7Yj1SUihjW2I+PjJdfDAsY1tiKzQ+PjJdfDAsNDMyZTUsMCl8MDtiPV9SKGJ8MCxDfDAsODY0ZTUsMCl8MDtjW2w+PjJdPWI7Y1tlPj4yXT1+figoKyhjW2w+PjJdfDApLTE4NjcyMTYuMjUpLzM2NTI0LjI1KTtjW2U+PjJdPShjW2w+PjJdfDApKzErKGNbZT4+Ml18MCktKChjW2U+PjJdfDApLzR8MCk7Y1tmPj4yXT0oY1tlPj4yXXwwKSsxNTI0O2NbZz4+Ml09fn4oKCsoY1tmPj4yXXwwKS0xMjIuMSkvMzY1LjI1KTtjW2g+PjJdPSgoY1tnPj4yXSYzMjc2NykqMzY1MjV8MCkvMTAwfDA7Y1tqPj4yXT1+figrKChjW2Y+PjJdfDApLShjW2g+PjJdfDApfDApLzMwLjYwMDEpO2Nbaz4+Ml09fn4oKyhjW2o+PjJdfDApKjMwLjYwMDEpO2NbKGNbZD4+Ml18MCkrMTY+PjJdPShjW2Y+PjJdfDApLShjW2g+PjJdfDApLShjW2s+PjJdfDApO2w9Y1tqPj4yXXwwO2NbKGNbZD4+Ml18MCkrMTI+PjJdPShjW2o+PjJdfDApPDE0P2wtMXwwOmwtMTN8MDtsPWNbZz4+Ml18MDtjWyhjW2Q+PjJdfDApKzg+PjJdPShjWyhjW2Q+PjJdfDApKzEyPj4yXXwwKT4yP2wtNDcxNnwwOmwtNDcxNXwwfWVsc2V7Y1tiKzg+PjJdPTJlMztjWyhjW2Q+PjJdfDApKzEyPj4yXT0xO2NbKGNbZD4+Ml18MCkrMTY+PjJdPTF9YVsoY1tkPj4yXXwwKSs0MD4+MF09MTtpPW07cmV0dXJufWZ1bmN0aW9uIGJRKGIpe2I9YnwwO3ZhciBkPTAsZT0wLGY9MDtmPWk7aT1pKzE2fDA7ZD1mKzR8MDtlPWY7Y1tkPj4yXT1iO2lmKGFbKGNbZD4+Ml18MCkrNDE+PjBdfDApe2k9ZjtyZXR1cm59X1AoY1tkPj4yXXwwKTtiPWNbZD4+Ml18MDtiPVJSKGNbYj4+Ml18MCxjW2IrND4+Ml18MCw0MzJlNSwwKXwwO2I9JFIoYnwwLEN8MCw4NjRlNSwwKXwwO2NbZT4+Ml09YjtoWyhjW2Q+PjJdfDApKzMyPj4zXT0rKGNbZT4+Ml18MCkvMS4wZTM7Y1tlPj4yXT1+fitoWyhjW2Q+PjJdfDApKzMyPj4zXTtiPShjW2Q+PjJdfDApKzMyfDA7aFtiPj4zXT0raFtiPj4zXS0rKGNbZT4+Ml18MCk7Y1soY1tkPj4yXXwwKSsyMD4+Ml09KGNbZT4+Ml18MCkvMzYwMHwwO2NbZT4+Ml09KGNbZT4+Ml18MCktKChjWyhjW2Q+PjJdfDApKzIwPj4yXXwwKSozNjAwfDApO2NbKGNbZD4+Ml18MCkrMjQ+PjJdPShjW2U+PjJdfDApLzYwfDA7Yj0oY1tkPj4yXXwwKSszMnwwO2hbYj4+M109K2hbYj4+M10rICsoKGNbZT4+Ml18MCktKChjWyhjW2Q+PjJdfDApKzI0Pj4yXXwwKSo2MHwwKXwwKTthWyhjW2Q+PjJdfDApKzQxPj4wXT0xO2k9ZjtyZXR1cm59ZnVuY3Rpb24gY1EoYixkKXtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wO2c9aTtpPWkrMTZ8MDtlPWcrOHwwO2g9Zys0fDA7Zj1nO2NbaD4+Ml09YjtjW2Y+PjJdPWQ7Yj1tUShjW2g+PjJdfDApfDA7ZD1jW2Y+PjJdfDA7Y1tkPj4yXT1iO2NbZCs0Pj4yXT1DO2Q9Y1tmPj4yXXwwO2I9Y1tkKzQ+PjJdfDA7aWYoKGJ8MCk+MHwoYnwwKT09MCYoY1tkPj4yXXwwKT4+PjA+MCl7YVsoY1tmPj4yXXwwKSs0Mj4+MF09MTtjW2U+PjJdPTA7aD1jW2U+PjJdfDA7aT1nO3JldHVybiBofDB9ZWxzZXtjW2U+PjJdPTE7aD1jW2U+PjJdfDA7aT1nO3JldHVybiBofDB9cmV0dXJuIDB9ZnVuY3Rpb24gZFEoYixkLGUpe2I9YnwwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGo9MCxrPTAsbD0wLG09MCxuPTAuMDttPWk7aT1pKzMyfDA7Zj1tKzIwfDA7Zz1tKzE2fDA7aj1tKzEyfDA7az1tKzh8MDtsPW07Y1tnPj4yXT1iO2Nbaj4+Ml09ZDtjW2s+PjJdPWU7aWYoIShsUShjW2o+PjJdfDAsY1trPj4yXXwwKXwwKSl7Y1tmPj4yXT0wO2Q9Y1tmPj4yXXwwO2k9bTtyZXR1cm4gZHwwfWlmKCEoaFEoY1tqPj4yXXwwLGNbaz4+Ml18MCl8MCkpe2NbZj4+Ml09MDtkPWNbZj4+Ml18MDtpPW07cmV0dXJuIGR8MH1pZighKGlnKGNbaj4+Ml18MCw0NTQ0NSl8MCkpe2NbZj4+Ml09Y1EoY1tnPj4yXXwwLGNbaz4+Ml18MCl8MDtkPWNbZj4+Ml18MDtpPW07cmV0dXJuIGR8MH1kPWNbaj4+Ml18MDtpZihleihkLGwsSmYoY1tqPj4yXXwwKXwwLDEpfDApe249K2hbbD4+M10qODY0LjBlNSsuNTtsPStOKG4pPj0xLjA/KG4+MC4wP35+KyQoK00obi80Mjk0OTY3Mjk2LjApLDQyOTQ5NjcyOTUuMCk+Pj4wOn5+K1ooKG4tKyh+fm4+Pj4wKSkvNDI5NDk2NzI5Ni4wKT4+PjApOjA7ZD1jW2s+PjJdfDA7Y1tkPj4yXT1+fm4+Pj4wO2NbZCs0Pj4yXT1sO2FbKGNbaz4+Ml18MCkrNDI+PjBdPTE7Y1tmPj4yXT0wO2Q9Y1tmPj4yXXwwO2k9bTtyZXR1cm4gZHwwfWVsc2V7Y1tmPj4yXT0xO2Q9Y1tmPj4yXXwwO2k9bTtyZXR1cm4gZHwwfXJldHVybiAwfWZ1bmN0aW9uIGVRKGIsZSxmKXtiPWJ8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLjA7ej1pO2k9aSsxNjB8MDtnPXorMTI0fDA7aj16KzEyMHwwO3c9eisxMTZ8MDt4PXorMTEyfDA7bT16KzEwOHwwO249eis4MHwwO3k9eisxMDR8MDtsPXorNzJ8MDtrPXorNjR8MDtvPXorNTZ8MDt2PXorMTAwfDA7dT16Kzh8MDt0PXo7cD16Kzk2fDA7cT16KzkyfDA7cj16Kzg4fDA7Y1tnPj4yXT1iO2Nbaj4+Ml09ZTtjW3c+PjJdPWY7Y1t4Pj4yXT0xO2NbeT4+Ml09eisxMjg7Y1ttPj4yXT0wO3doaWxlKDEpe2lmKChjW20+PjJdfDApPDI5KWI9KGFbKGNbaj4+Ml18MCkrKGNbbT4+Ml18MCk+PjBdfDApIT0wO2Vsc2UgYj0wO2Y9Y1ttPj4yXXwwO2lmKCFiKWJyZWFrO2FbKGNbeT4+Ml18MCkrKGNbbT4+Ml18MCk+PjBdPWFbMTc2MTMrKGRbKGNbaj4+Ml18MCkrZj4+MF18MCk+PjBdfDA7Y1ttPj4yXT0oY1ttPj4yXXwwKSsxfWFbKGNbeT4+Ml18MCkrZj4+MF09MDtzd2l0Y2goYVtjW3k+PjJdPj4wXXwwKXtjYXNlIDEwODp7aWYoaFIoY1t5Pj4yXXwwLDQ1MzI1KXwwKXt5PWNbeD4+Ml18MDtpPXo7cmV0dXJuIHl8MH1fUChjW3c+PjJdfDApO3Y9ZlEoY1t3Pj4yXXwwLGNbZz4+Ml18MCx4KXwwO3k9Y1t3Pj4yXXwwO3U9eTtjW3k+PjJdPVJSKGNbdT4+Ml18MCxjW3UrND4+Ml18MCx2fDAsQ3wwKXwwO2NbeSs0Pj4yXT1DO2dRKGNbdz4+Ml18MCk7eT1jW3g+PjJdfDA7aT16O3JldHVybiB5fDB9Y2FzZSAxMTc6e2lmKChoUihjW3k+PjJdfDAsNDUzMzUpfDApPT0wPyhhWyhjW3c+PjJdfDApKzQyPj4wXXwwKSE9MDowKXt2PWNbdz4+Ml18MDt2PVJSKGNbdj4+Ml18MCxjW3YrND4+Ml18MCw0MzIwMCwwKXwwO3Y9X1IodnwwLEN8MCw4NjQwMCwwKXwwO3Y9UlIodnwwLEN8MCwxMDQ1NjM1NTg0LDQ5MDk2KXwwO3k9Y1t3Pj4yXXwwO2NbeT4+Ml09djtjW3krND4+Ml09QztnUShjW3c+PjJdfDApO2NbeD4+Ml09MDt5PWNbeD4+Ml18MDtpPXo7cmV0dXJuIHl8MH1pZihoUihjW3k+PjJdfDAsNDUzNDUpfDApe3k9Y1t4Pj4yXXwwO2k9ejtyZXR1cm4geXwwfWlmKGFbKGNbdz4+Ml18MCkrNDQ+PjBdfDApe2NbeD4+Ml09MDt5PWNbeD4+Ml18MDtpPXo7cmV0dXJuIHl8MH1fUChjW3c+PjJdfDApO3k9bDtjW3k+PjJdPWZRKGNbdz4+Ml18MCxjW2c+PjJdfDAseCl8MDtjW3krND4+Ml09QztpZighKGNbeD4+Ml18MCkpe3U9bDt5PWNbdz4+Ml18MDt2PXk7dT1RUihjW3Y+PjJdfDAsY1t2KzQ+PjJdfDAsY1t1Pj4yXXwwLGNbdSs0Pj4yXXwwKXwwO2NbeT4+Ml09dTtjW3krND4+Ml09QztnUShjW3c+PjJdfDApO3k9bDt1PWNbeT4+Ml18MDt5PWNbeSs0Pj4yXXwwO3Y9ZlEoY1t3Pj4yXXwwLGNbZz4+Ml18MCx4KXwwO3Y9UVIodXwwLHl8MCx2fDAsQ3wwKXwwO3k9Y1t3Pj4yXXwwO3U9eTt2PVJSKGNbdT4+Ml18MCxjW3UrND4+Ml18MCx2fDAsQ3wwKXwwO2NbeT4+Ml09djtjW3krND4+Ml09Q31hWyhjW3c+PjJdfDApKzQ0Pj4wXT0xO3k9Y1t4Pj4yXXwwO2k9ejtyZXR1cm4geXwwfWNhc2UgMTE5OntpZihsUihjW3k+PjJdfDAsNDUzNDksOCl8MCl7eT1jW3g+PjJdfDA7aT16O3JldHVybiB5fDB9aWYoIShleigoY1t5Pj4yXXwwKSs4fDAsbixKZigoY1t5Pj4yXXwwKSs4fDApfDAsMSl8MCkpe3k9Y1t4Pj4yXXwwO2k9ejtyZXR1cm4geXwwfXk9fn4raFtuPj4zXTtjW20+PjJdPXk7aWYoISgoKGNbbT4+Ml18MCk+PTA/Kyh5fDApPT0raFtuPj4zXTowKSYraFtuPj4zXTw3LjApKXt5PWNbeD4+Ml18MDtpPXo7cmV0dXJuIHl8MH0kUChjW3c+PjJdfDApO2FbKGNbdz4+Ml18MCkrNDM+PjBdPTA7YVsoY1t3Pj4yXXwwKSs0Mj4+MF09MDtfUChjW3c+PjJdfDApO3Q9Y1t3Pj4yXXwwO3Y9aztjW3Y+PjJdPSRSKF9SKFJSKGNbdD4+Ml18MCxjW3QrND4+Ml18MCwxMjk2ZTUsMCl8MCxDfDAsODY0ZTUsMCl8MCxDfDAsNywwKXwwO2Nbdis0Pj4yXT1DO3Y9azt0PWNbdis0Pj4yXXwwO3k9Y1ttPj4yXXwwO3U9KCh5fDApPDApPDwzMT4+MzE7aWYoKHR8MCk+KHV8MCl8KCh0fDApPT0odXwwKT8oY1t2Pj4yXXwwKT4+PjA+eT4+PjA6MCkpe3Y9azt2PVFSKGNbdj4+Ml18MCxjW3YrND4+Ml18MCw3LDApfDA7eT1rO2NbeT4+Ml09djtjW3krND4+Ml09Q315PWNbbT4+Ml18MDt2PWs7dj1hUyhRUih5fDAsKCh5fDApPDApPDwzMT4+MzF8MCxjW3Y+PjJdfDAsY1t2KzQ+PjJdfDApfDAsQ3wwLDg2NGU1LDApfDA7eT1jW3c+PjJdfDA7dT15O2NbeT4+Ml09UlIoY1t1Pj4yXXwwLGNbdSs0Pj4yXXwwLHZ8MCxDfDApfDA7Y1t5KzQ+PjJdPUM7Z1EoY1t3Pj4yXXwwKTtjW3g+PjJdPTA7eT1jW3g+PjJdfDA7aT16O3JldHVybiB5fDB9Y2FzZSAxMTU6e2lmKGxSKGNbeT4+Ml18MCw0NTM1OCw5KXwwKXt5PWNbeD4+Ml18MDtpPXo7cmV0dXJuIHl8MH1jW3k+PjJdPShjW3k+PjJdfDApKzk7YVEoY1t3Pj4yXXwwKTthWyhjW3c+PjJdfDApKzQxPj4wXT0xO2NbKGNbdz4+Ml18MCkrMjQ+PjJdPTA7Y1soY1t3Pj4yXXwwKSsyMD4+Ml09MDtoWyhjW3c+PjJdfDApKzMyPj4zXT0wLjA7YVsoY1t3Pj4yXXwwKSs0Mz4+MF09MDthWyhjW3c+PjJdfDApKzQyPj4wXT0wO2lmKCEoaFIoY1t5Pj4yXXwwLDQ1MzY4KXwwKSl7Y1soY1t3Pj4yXXwwKSsxNj4+Ml09MTtjW3g+PjJdPTA7eT1jW3g+PjJdfDA7aT16O3JldHVybiB5fDB9aWYoIShoUihjW3k+PjJdfDAsNDUzNzQpfDApKXthUShjW3c+PjJdfDApO2NbKGNbdz4+Ml18MCkrMTI+PjJdPTE7Y1soY1t3Pj4yXXwwKSsxNj4+Ml09MTtjW3g+PjJdPTA7eT1jW3g+PjJdfDA7aT16O3JldHVybiB5fDB9aWYoaFIoY1t5Pj4yXXwwLDQ1Mzc5KXwwKXt5PWNbeD4+Ml18MDtpPXo7cmV0dXJuIHl8MH1jW3g+PjJdPTA7eT1jW3g+PjJdfDA7aT16O3JldHVybiB5fDB9Y2FzZSA1NzpjYXNlIDU2OmNhc2UgNTU6Y2FzZSA1NDpjYXNlIDUzOmNhc2UgNTI6Y2FzZSA1MTpjYXNlIDUwOmNhc2UgNDk6Y2FzZSA0ODpjYXNlIDQ1OmNhc2UgNDM6e2NbbT4+Ml09MTt3aGlsZSgxKXtpZighKGFbKGNbeT4+Ml18MCkrKGNbbT4+Ml18MCk+PjBdfDApKWJyZWFrO2lmKChhWyhjW3k+PjJdfDApKyhjW20+PjJdfDApPj4wXXwwKT09NTgpYnJlYWs7aWYoISgoZFsxODQwMysoZFsoY1t5Pj4yXXwwKSsoY1ttPj4yXXwwKT4+MF18MCk+PjBdJjF8MCkhPTBeMSkpYnJlYWs7Y1ttPj4yXT0oY1ttPj4yXXwwKSsxfWlmKCEoZXooY1t5Pj4yXXwwLG4sY1ttPj4yXXwwLDEpfDApKXtjW3g+PjJdPTE7eT1jW3g+PjJdfDA7aT16O3JldHVybiB5fDB9aWYoKGFbKGNbeT4+Ml18MCkrKGNbbT4+Ml18MCk+PjBdfDApPT01OCl7Y1t2Pj4yXT1jW3k+PjJdO2lmKCEoZFsxODQwMysoZFtjW3Y+PjJdPj4wXXwwKT4+MF0mNCkpY1t2Pj4yXT0oY1t2Pj4yXXwwKSsxO2Y9dTtiPWYrNDh8MDtkb3tjW2Y+PjJdPTA7Zj1mKzR8MH13aGlsZSgoZnwwKTwoYnwwKSk7aWYoaFEoY1t2Pj4yXXwwLHUpfDApe3k9Y1t4Pj4yXXwwO2k9ejtyZXR1cm4geXwwfV9QKHUpO3Y9dTt2PVFSKGNbdj4+Ml18MCxjW3YrND4+Ml18MCw0MzJlNSwwKXwwO3M9dTtjW3M+PjJdPXY7Y1tzKzQ+PjJdPUM7cz11O3M9X1IoY1tzPj4yXXwwLGNbcys0Pj4yXXwwLDg2NGU1LDApfDA7dj10O2Nbdj4+Ml09cztjW3YrND4+Ml09Qzt0PWFTKGNbdD4+Ml18MCxjW3QrND4+Ml18MCw4NjRlNSwwKXwwO3Y9dTt0PVFSKGNbdj4+Ml18MCxjW3YrND4+Ml18MCx0fDAsQ3wwKXwwO3Y9dTtjW3Y+PjJdPXQ7Y1t2KzQ+PjJdPUM7aWYoKGFbY1t5Pj4yXT4+MF18MCk9PTQ1KXt2PXU7dj1RUigwLDAsY1t2Pj4yXXwwLGNbdis0Pj4yXXwwKXwwO3k9dTtjW3k+PjJdPXY7Y1t5KzQ+PjJdPUN9X1AoY1t3Pj4yXXwwKTtnUShjW3c+PjJdfDApO3Y9dTt5PWNbdz4+Ml18MDt3PXk7dz1SUihjW3c+PjJdfDAsY1t3KzQ+PjJdfDAsY1t2Pj4yXXwwLGNbdis0Pj4yXXwwKXwwO2NbeT4+Ml09dztjW3krND4+Ml09QztjW3g+PjJdPTA7eT1jW3g+PjJdfDA7aT16O3JldHVybiB5fDB9Y1t5Pj4yXT0oY1t5Pj4yXXwwKSsoY1ttPj4yXXwwKTt3aGlsZSgxKXtmPWNbeT4+Ml18MDtpZighKGRbMTg0MDMrKGRbY1t5Pj4yXT4+MF18MCk+PjBdJjEpKWJyZWFrO2NbeT4+Ml09ZisxfWNbbT4+Ml09SmYoZil8MDtpZigoY1ttPj4yXXwwKT4xMHwoY1ttPj4yXXwwKTwzKXt5PWNbeD4+Ml18MDtpPXo7cmV0dXJuIHl8MH1pZigoYVsoY1t5Pj4yXXwwKSsoKGNbbT4+Ml18MCktMSk+PjBdfDApPT0xMTUpe2FbKGNbeT4+Ml18MCkrKChjW20+PjJdfDApLTEpPj4wXT0wO2NbbT4+Ml09KGNbbT4+Ml18MCkrLTF9X1AoY1t3Pj4yXXwwKTtjW3g+PjJdPTA7aFtvPj4zXT0raFtuPj4zXTwwLjA/LS41Oi41O2lmKChjW20+PjJdfDApPT0zPyhoUihjW3k+PjJdfDAsNDUzNzkpfDApPT0wOjApe0E9K2hbbj4+M10qODY0LjBlNSsgK2hbbz4+M107dj0rTihBKT49MS4wPyhBPjAuMD9+fiskKCtNKEEvNDI5NDk2NzI5Ni4wKSw0Mjk0OTY3Mjk1LjApPj4+MDp+fitaKChBLSsofn5BPj4+MCkpLzQyOTQ5NjcyOTYuMCk+Pj4wKTowO3k9Y1t3Pj4yXXwwO3U9eTt2PVJSKGNbdT4+Ml18MCxjW3UrND4+Ml18MCx+fkE+Pj4wfDAsdnwwKXwwO2NbeT4+Ml09djtjW3krND4+Ml09Q31lbHNlIHM9NTQ7ZG8gaWYoKHN8MCk9PTU0KXtpZigoY1ttPj4yXXwwKT09ND8oaFIoY1t5Pj4yXXwwLDQ1MzgzKXwwKT09MDowKXtBPStoW24+PjNdKjM2LjBlNSsgK2hbbz4+M107dj0rTihBKT49MS4wPyhBPjAuMD9+fiskKCtNKEEvNDI5NDk2NzI5Ni4wKSw0Mjk0OTY3Mjk1LjApPj4+MDp+fitaKChBLSsofn5BPj4+MCkpLzQyOTQ5NjcyOTYuMCk+Pj4wKTowO3k9Y1t3Pj4yXXwwO3U9eTt2PVJSKGNbdT4+Ml18MCxjW3UrND4+Ml18MCx+fkE+Pj4wfDAsdnwwKXwwO2NbeT4+Ml09djtjW3krND4+Ml09QzticmVha31pZigoY1ttPj4yXXwwKT09Nj8oaFIoY1t5Pj4yXXwwLDQ1Mzg4KXwwKT09MDowKXtBPStoW24+PjNdKjYuMGU0KyAraFtvPj4zXTt2PStOKEEpPj0xLjA/KEE+MC4wP35+KyQoK00oQS80Mjk0OTY3Mjk2LjApLDQyOTQ5NjcyOTUuMCk+Pj4wOn5+K1ooKEEtKyh+fkE+Pj4wKSkvNDI5NDk2NzI5Ni4wKT4+PjApOjA7eT1jW3c+PjJdfDA7dT15O3Y9UlIoY1t1Pj4yXXwwLGNbdSs0Pj4yXXwwLH5+QT4+PjB8MCx2fDApfDA7Y1t5Pj4yXT12O2NbeSs0Pj4yXT1DO2JyZWFrfWlmKChjW20+PjJdfDApPT02PyhoUihjW3k+PjJdfDAsNDUzOTUpfDApPT0wOjApe0E9K2hbbj4+M10qMS4wZTMrICtoW28+PjNdO3Y9K04oQSk+PTEuMD8oQT4wLjA/fn4rJCgrTShBLzQyOTQ5NjcyOTYuMCksNDI5NDk2NzI5NS4wKT4+PjA6fn4rWigoQS0rKH5+QT4+PjApKS80Mjk0OTY3Mjk2LjApPj4+MCk6MDt5PWNbdz4+Ml18MDt1PXk7dj1SUihjW3U+PjJdfDAsY1t1KzQ+PjJdfDAsfn5BPj4+MHwwLHZ8MCl8MDtjW3k+PjJdPXY7Y1t5KzQ+PjJdPUM7YnJlYWt9aWYoKGNbbT4+Ml18MCk9PTU/KGhSKGNbeT4+Ml18MCw0NTM2OCl8MCk9PTA6MCl7JFAoY1t3Pj4yXXwwKTt5PShjW3c+PjJdfDApKzEyfDA7Y1t5Pj4yXT0oY1t5Pj4yXXwwKSt+fitoW24+PjNdO3k9Y1soY1t3Pj4yXXwwKSsxMj4+Ml18MDtjW3A+PjJdPSgoKGNbKGNbdz4+Ml18MCkrMTI+PjJdfDApPjA/eS0xfDA6eS0xMnwwKXwwKS8xMnwwO3k9KGNbdz4+Ml18MCkrOHwwO2NbeT4+Ml09KGNbeT4+Ml18MCkrKGNbcD4+Ml18MCk7eT0oY1t3Pj4yXXwwKSsxMnwwO2NbeT4+Ml09KGNbeT4+Ml18MCktKChjW3A+PjJdfDApKjEyfDApO2FbKGNbdz4+Ml18MCkrNDI+PjBdPTA7X1AoY1t3Pj4yXXwwKTtjW3E+PjJdPX5+K2hbbj4+M107aWYoISgrKGNbcT4+Ml18MCkhPStoW24+PjNdKSlicmVhaztBPSgraFtuPj4zXS0rKGNbcT4+Ml18MCkpKjMwLjAqODY0LjBlNSsgK2hbbz4+M107dj0rTihBKT49MS4wPyhBPjAuMD9+fiskKCtNKEEvNDI5NDk2NzI5Ni4wKSw0Mjk0OTY3Mjk1LjApPj4+MDp+fitaKChBLSsofn5BPj4+MCkpLzQyOTQ5NjcyOTYuMCk+Pj4wKTowO3k9Y1t3Pj4yXXwwO3U9eTt2PVJSKGNbdT4+Ml18MCxjW3UrND4+Ml18MCx+fkE+Pj4wfDAsdnwwKXwwO2NbeT4+Ml09djtjW3krND4+Ml09QzticmVha31pZigoY1ttPj4yXXwwKT09ND8oaFIoY1t5Pj4yXXwwLDQ1Mzc0KXwwKT09MDowKXtjW3I+PjJdPX5+K2hbbj4+M107JFAoY1t3Pj4yXXwwKTt5PShjW3c+PjJdfDApKzh8MDtjW3k+PjJdPShjW3k+PjJdfDApKyhjW3I+PjJdfDApO2FbKGNbdz4+Ml18MCkrNDI+PjBdPTA7X1AoY1t3Pj4yXXwwKTtpZighKCsoY1tyPj4yXXwwKSE9K2hbbj4+M10pKWJyZWFrO0E9KCtoW24+PjNdLSsoY1tyPj4yXXwwKSkqMzY1LjAqODY0LjBlNSsgK2hbbz4+M107dj0rTihBKT49MS4wPyhBPjAuMD9+fiskKCtNKEEvNDI5NDk2NzI5Ni4wKSw0Mjk0OTY3Mjk1LjApPj4+MDp+fitaKChBLSsofn5BPj4+MCkpLzQyOTQ5NjcyOTYuMCk+Pj4wKTowO3k9Y1t3Pj4yXXwwO3U9eTt2PVJSKGNbdT4+Ml18MCxjW3UrND4+Ml18MCx+fkE+Pj4wfDAsdnwwKXwwO2NbeT4+Ml09djtjW3krND4+Ml09QzticmVha31jW3g+PjJdPTF9d2hpbGUoMCk7Z1EoY1t3Pj4yXXwwKTt5PWNbeD4+Ml18MDtpPXo7cmV0dXJuIHl8MH1kZWZhdWx0Ont5PWNbeD4+Ml18MDtpPXo7cmV0dXJuIHl8MH19cmV0dXJuIDB9ZnVuY3Rpb24gZlEoYixkLGUpe2I9YnwwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTA7cT1pO2k9aSsxNzZ8MDtnPXErOTZ8MDtmPXErMTY0fDA7aj1xKzE2MHwwO2s9cSsxNTZ8MDtvPXErNDh8MDtwPXE7bj1xKzE1MnwwO209cSsxMDh8MDtsPXErMTA0fDA7Y1tmPj4yXT1iO2Nbaj4+Ml09ZDtjW2s+PjJdPWU7ZD1tO2U9ZCs0NHwwO2Rve2NbZD4+Ml09MDtkPWQrNHwwfXdoaWxlKChkfDApPChlfDApKTtkPW87Yj1jW2Y+PjJdfDA7ZT1kKzQ4fDA7ZG97Y1tkPj4yXT1jW2I+PjJdO2Q9ZCs0fDA7Yj1iKzR8MH13aGlsZSgoZHwwKTwoZXwwKSk7JFAobyk7aWYoKGNbbys4Pj4yXXwwKT49MTk3MT8oY1tvKzg+PjJdfDApPDIwMzg6MCl7Y1tsPj4yXT1+figraFtvKzMyPj4zXSsuNSk7aFtvKzMyPj4zXT0rKGNbbD4+Ml18MCl9ZWxzZXtjW28rOD4+Ml09MmUzO2NbbysxMj4+Ml09MTtjW28rMTY+PjJdPTE7Y1tvKzIwPj4yXT0wO2NbbysyND4+Ml09MDtoW28rMzI+PjNdPTAuMH1jW28rMjg+PjJdPTA7YVtvKzQyPj4wXT0wO19QKG8pO2w9bztsPV9SKGNbbD4+Ml18MCxjW2wrND4+Ml18MCwxZTMsMCl8MDtsPVFSKGx8MCxDfDAsNDEzMzYyNDk2LDQ5KXwwO2Nbbj4+Ml09bDtpZihrUShuLG0pfDApe2llKGNbaj4+Ml18MCw0NTQyMiwtMSk7Y1tjW2s+PjJdPj4yXT0xO289ZztjW28+PjJdPTA7Y1tvKzQ+PjJdPTA7bz1nO3A9bztwPWNbcD4+Ml18MDtvPW8rNHwwO289Y1tvPj4yXXwwO0M9bztpPXE7cmV0dXJuIHB8MH1lbHNle2NbcCs4Pj4yXT0oY1ttKzIwPj4yXXwwKSsxOTAwO2NbcCsxMj4+Ml09KGNbbSsxNj4+Ml18MCkrMTtjW3ArMTY+PjJdPWNbbSsxMj4+Ml07Y1twKzIwPj4yXT1jW20rOD4+Ml07Y1twKzI0Pj4yXT1jW20rND4+Ml07aFtwKzMyPj4zXT0rKGNbbT4+Ml18MCk7YVtwKzQwPj4wXT0xO2FbcCs0MT4+MF09MTthW3ArNDI+PjBdPTA7YVtwKzQzPj4wXT0wO19QKHApO2NbY1trPj4yXT4+Ml09MDtuPXA7cD1vO3A9UVIoY1tuPj4yXXwwLGNbbis0Pj4yXXwwLGNbcD4+Ml18MCxjW3ArND4+Ml18MCl8MDtvPWc7Y1tvPj4yXT1wO2Nbbys0Pj4yXT1DO289ZztwPW87cD1jW3A+PjJdfDA7bz1vKzR8MDtvPWNbbz4+Ml18MDtDPW87aT1xO3JldHVybiBwfDB9cmV0dXJuIDB9ZnVuY3Rpb24gZ1EoYil7Yj1ifDA7dmFyIGQ9MCxlPTA7ZD1pO2k9aSsxNnwwO2U9ZDtjW2U+PjJdPWI7YVsoY1tlPj4yXXwwKSs0MD4+MF09MDthWyhjW2U+PjJdfDApKzQxPj4wXT0wO2FbKGNbZT4+Ml18MCkrNDM+PjBdPTA7aT1kO3JldHVybn1mdW5jdGlvbiBoUShiLGUpe2I9YnwwO2U9ZXwwO3ZhciBmPTAsZz0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wO3E9aTtpPWkrNjR8MDtwPXErMjR8MDtyPXErMTZ8MDtmPXErNDh8MDtnPXErNDR8MDtqPXErNDB8MDtrPXErMzZ8MDtsPXErMzJ8MDtvPXErMjh8MDttPXErOHwwO249cTtjW2c+PjJdPWI7Y1tqPj4yXT1lO2hbbT4+M109MC4wO2I9Y1tnPj4yXXwwO2Nbcj4+Ml09aztjW3IrND4+Ml09bDtpZigoaVEoYiw0NTQwMixyKXwwKSE9Mil7Y1tmPj4yXT0xO3I9Y1tmPj4yXXwwO2k9cTtyZXR1cm4gcnwwfWNbZz4+Ml09KGNbZz4+Ml18MCkrNTtpZigoYVtjW2c+PjJdPj4wXXwwKT09NTgpe2NbZz4+Ml09KGNbZz4+Ml18MCkrMTtyPWNbZz4+Ml18MDtjW3A+PjJdPW87aWYoKGlRKHIsNDU0MTAscCl8MCkhPTEpe2NbZj4+Ml09MTtyPWNbZj4+Ml18MDtpPXE7cmV0dXJuIHJ8MH1jW2c+PjJdPShjW2c+PjJdfDApKzI7aWYoKGFbY1tnPj4yXT4+MF18MCk9PTQ2PyhkWzE4NDAzKyhkWyhjW2c+PjJdfDApKzE+PjBdfDApPj4wXSY0fDApIT0wOjApe2hbbj4+M109MS4wO2NbZz4+Ml09KGNbZz4+Ml18MCkrMTt3aGlsZSgxKXtpZighKGRbMTg0MDMrKGRbY1tnPj4yXT4+MF18MCk+PjBdJjQpKWJyZWFrO2hbbT4+M109K2hbbT4+M10qMTAuMCsgKyhhW2NbZz4+Ml0+PjBdfDApLTQ4LjA7aFtuPj4zXT0raFtuPj4zXSoxMC4wO2NbZz4+Ml09KGNbZz4+Ml18MCkrMX1oW20+PjNdPStoW20+PjNdLytoW24+PjNdfX1lbHNlIGNbbz4+Ml09MDthWyhjW2o+PjJdfDApKzQyPj4wXT0wO2FbKGNbaj4+Ml18MCkrNDE+PjBdPTE7Y1soY1tqPj4yXXwwKSsyMD4+Ml09Y1trPj4yXTtjWyhjW2o+PjJdfDApKzI0Pj4yXT1jW2w+PjJdO2hbKGNbaj4+Ml18MCkrMzI+PjNdPSsoY1tvPj4yXXwwKSsgK2hbbT4+M107aWYoalEoY1tnPj4yXXwwLGNbaj4+Ml18MCl8MCl7Y1tmPj4yXT0xO3I9Y1tmPj4yXXwwO2k9cTtyZXR1cm4gcnwwfWVsc2V7YVsoY1tqPj4yXXwwKSs0Mz4+MF09KGNbKGNbaj4+Ml18MCkrMjg+PjJdfDApIT0wPzE6MDtjW2Y+PjJdPTA7cj1jW2Y+PjJdfDA7aT1xO3JldHVybiByfDB9cmV0dXJuIDB9ZnVuY3Rpb24gaVEoZixnLGgpe2Y9ZnwwO2c9Z3wwO2g9aHwwO3ZhciBqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTA7cz1pO2k9aSs0OHwwO2o9cysyOHwwO2s9cysyNHwwO209cys4fDA7cj1zKzR8MDtwPXMrMzZ8MDtsPXMrMzV8MDtvPXMrMzR8MDtxPXM7bj1zKzMyfDA7Y1tqPj4yXT1mO2Nbaz4+Ml09ZztjW3I+PjJdPTA7Y1ttPj4yXT1oO2E6d2hpbGUoMSl7YVtsPj4wXT0oYVtjW2s+PjJdPj4wXXwwKS00ODthW28+PjBdPShhWyhjW2s+PjJdfDApKzE+PjBdfDApLTQ4O2NbcT4+Ml09MDtiW24+PjFdPWJbMTY0MjIrKChhWyhjW2s+PjJdfDApKzI+PjBdfDApLTk3PDwxKT4+MV18MDthW3A+PjBdPWFbKGNbaz4+Ml18MCkrMz4+MF18MDtjW3E+PjJdPTA7d2hpbGUoMSl7Zz1hW2w+PjBdfDA7YVtsPj4wXT1nKy0xPDwyND4+MjQ7aWYoIShnPDwyND4+MjQpKWJyZWFrO2lmKCEoZFsxODQwMysoZFtjW2o+PjJdPj4wXXwwKT4+MF0mNCkpe2o9MTE7YnJlYWsgYX1jW3E+PjJdPSgoY1txPj4yXXwwKSoxMHwwKSsoYVtjW2o+PjJdPj4wXXwwKS00ODtjW2o+PjJdPShjW2o+PjJdfDApKzF9aWYoKGNbcT4+Ml18MCk8KGFbbz4+MF18MCkpe2o9MTE7YnJlYWt9aWYoKGNbcT4+Ml18MCk+KGVbbj4+MV18MCkpe2o9MTE7YnJlYWt9aWYoKGFbcD4+MF18MCkhPTA/KGFbcD4+MF18MCkhPShhW2Nbaj4+Ml0+PjBdfDApOjApe2o9MTE7YnJlYWt9Zj1jW3E+PjJdfDA7aD0oY1ttPj4yXXwwKSsoNC0xKSZ+KDQtMSk7Zz1jW2g+PjJdfDA7Y1ttPj4yXT1oKzQ7Y1tnPj4yXT1mO2Nbaj4+Ml09KGNbaj4+Ml18MCkrMTtjW3I+PjJdPShjW3I+PjJdfDApKzE7Y1trPj4yXT0oY1trPj4yXXwwKSs0O2lmKCEoYVtwPj4wXXwwKSl7aj0xMTticmVha319aWYoKGp8MCk9PTExKXtpPXM7cmV0dXJuIGNbcj4+Ml18MH1yZXR1cm4gMH1mdW5jdGlvbiBqUShiLGUpe2I9YnwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTA7cD1pO2k9aSs0OHwwO249cDtmPXArMzJ8MDtnPXArMjh8MDtoPXArMjR8MDttPXArMjB8MDtrPXArMTZ8MDtsPXArMTJ8MDtqPXArOHwwO2NbZz4+Ml09YjtjW2g+PjJdPWU7Y1ttPj4yXT0wO3doaWxlKDEpe2lmKCEoZFsxODQwMysoZFtjW2c+PjJdPj4wXXwwKT4+MF0mMSkpYnJlYWs7Y1tnPj4yXT0oY1tnPj4yXXwwKSsxfWNbKGNbaD4+Ml18MCkrMjg+PjJdPTA7Y1tqPj4yXT1hW2NbZz4+Ml0+PjBdO2RvIGlmKChjW2o+PjJdfDApPT00NSl7Y1ttPj4yXT0tMTtvPTExfWVsc2V7aWYoKGNbaj4+Ml18MCk9PTQzKXtjW20+PjJdPTE7bz0xMTticmVha31pZigoY1tqPj4yXXwwKT09OTB8KGNbaj4+Ml18MCk9PTEyMil7Y1tnPj4yXT0oY1tnPj4yXXwwKSsxO2JyZWFrfWNbZj4+Ml09KGNbaj4+Ml18MCkhPTAmMTtvPWNbZj4+Ml18MDtpPXA7cmV0dXJuIG98MH13aGlsZSgwKTtkbyBpZigob3wwKT09MTEpe2NbZz4+Ml09KGNbZz4+Ml18MCkrMTtvPWNbZz4+Ml18MDtjW24+PjJdPWs7Y1tuKzQ+PjJdPWw7aWYoKGlRKG8sNDU0MTQsbil8MCk9PTIpe2NbZz4+Ml09KGNbZz4+Ml18MCkrNTtvPV8oY1ttPj4yXXwwLChjW2w+PjJdfDApKygoY1trPj4yXXwwKSo2MHwwKXwwKXwwO2NbKGNbaD4+Ml18MCkrMjg+PjJdPW87YnJlYWt9Y1tmPj4yXT0xO289Y1tmPj4yXXwwO2k9cDtyZXR1cm4gb3wwfXdoaWxlKDApO3doaWxlKDEpe2lmKCEoZFsxODQwMysoZFtjW2c+PjJdPj4wXXwwKT4+MF0mMSkpYnJlYWs7Y1tnPj4yXT0oY1tnPj4yXXwwKSsxfWFbKGNbaD4+Ml18MCkrNDQ+PjBdPTE7Y1tmPj4yXT0oYVtjW2c+PjJdPj4wXXwwKSE9MCYxO289Y1tmPj4yXXwwO2k9cDtyZXR1cm4gb3wwfWZ1bmN0aW9uIGtRKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTA7Zz1pO2k9aSsxNnwwO2g9ZysxMnwwO2Q9Zys4fDA7Zj1nKzR8MDtlPWc7Y1toPj4yXT1hO2NbZD4+Ml09YjthPUtiKGNbaD4+Ml18MCl8MDtjW2U+PjJdPWE7Y1tlPj4yXT0oY1s2OV18MCkhPTA/MDphO2lmKGNbZT4+Ml18MCl7ZD1jW2Q+PjJdfDA7Yj1jW2U+PjJdfDA7YT1kKzQ0fDA7ZG97Y1tkPj4yXT1jW2I+PjJdO2Q9ZCs0fDA7Yj1iKzR8MH13aGlsZSgoZHwwKTwoYXwwKSl9Y1tmPj4yXT0oY1tlPj4yXXwwKT09MCYxO2k9ZztyZXR1cm4gY1tmPj4yXXwwfWZ1bmN0aW9uIGxRKGIsZSl7Yj1ifDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wO289aTtpPWkrNDh8MDtmPW87Zz1vKzM2fDA7aD1vKzMyfDA7aj1vKzI4fDA7bT1vKzI0fDA7bD1vKzIwfDA7az1vKzE2fDA7bj1vKzEyfDA7Y1toPj4yXT1iO2Nbaj4+Ml09ZTtpZigoYVtjW2g+PjJdPj4wXXwwKT09NDUpe2NbaD4+Ml09KGNbaD4+Ml18MCkrMTtjW24+PjJdPTF9ZWxzZSBjW24+PjJdPTA7Yj1jW2g+PjJdfDA7Y1tmPj4yXT1tO2NbZis0Pj4yXT1sO2NbZis4Pj4yXT1rO2lmKChpUShiLDQ1NDQ5LGYpfDApIT0zKXtjW2c+PjJdPTE7bj1jW2c+PjJdfDA7aT1vO3JldHVybiBufDB9Y1toPj4yXT0oY1toPj4yXXwwKSsxMDt3aGlsZSgxKXtpZihkWzE4NDAzKyhkW2NbaD4+Ml0+PjBdfDApPj4wXSYxKWY9MTtlbHNlIGY9ODQ9PShkW2NbaD4+Ml0+PjBdfDApO2U9Y1toPj4yXXwwO2lmKCFmKWJyZWFrO2NbaD4+Ml09ZSsxfWRvIGlmKGhRKGUsY1tqPj4yXXwwKXwwKXtpZighKGFbY1toPj4yXT4+MF18MCkpe2FbKGNbaj4+Ml18MCkrNDE+PjBdPTA7YnJlYWt9Y1tnPj4yXT0xO249Y1tnPj4yXXwwO2k9bztyZXR1cm4gbnwwfXdoaWxlKDApO2FbKGNbaj4+Ml18MCkrNDI+PjBdPTA7YVsoY1tqPj4yXXwwKSs0MD4+MF09MTttPWNbbT4+Ml18MDtjWyhjW2o+PjJdfDApKzg+PjJdPShjW24+PjJdfDApIT0wPzAtbXwwOm07Y1soY1tqPj4yXXwwKSsxMj4+Ml09Y1tsPj4yXTtjWyhjW2o+PjJdfDApKzE2Pj4yXT1jW2s+PjJdO2lmKGFbKGNbaj4+Ml18MCkrNDM+PjBdfDApX1AoY1tqPj4yXXwwKTtjW2c+PjJdPTA7bj1jW2c+PjJdfDA7aT1vO3JldHVybiBufDB9ZnVuY3Rpb24gbVEoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MDtmPWk7aT1pKzE2fDA7Yj1mKzh8MDtlPWYrNHwwO2Q9ZjtjW2I+PjJdPWE7Y1tkPj4yXT0oY1soY1tiPj4yXXwwKSsxMj4+Ml18MCkrNTY7YT1jW2Q+PjJdfDA7aWYoKGNbYT4+Ml18MCk9PTAmKGNbYSs0Pj4yXXwwKT09MD8oY1tlPj4yXT1xSShjW2NbKGNbY1tiPj4yXT4+Ml18MCkrMzI+PjJdPj4yXXwwLGNbZD4+Ml18MCl8MCwoY1tlPj4yXXwwKSE9MCk6MCl7ZT1jW2Q+PjJdfDA7Y1tlPj4yXT0wO2NbZSs0Pj4yXT0wfWU9Y1tkPj4yXXwwO0M9Y1tlKzQ+PjJdfDA7aT1mO3JldHVybiBjW2U+PjJdfDB9ZnVuY3Rpb24gblEoYixkLGUpe2I9YnwwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTA7cj1pO2k9aSs2NHwwO2w9cjtmPXIrNjB8MDtzPXIrNTJ8MDtvPXIrNDh8MDtwPXIrNDR8MDtrPXIrNDB8MDtqPXIrMzJ8MDttPXIrMjh8MDtoPXIrMjR8MDtuPXIrMjB8MDtnPXIrMTZ8MDtjW2Y+PjJdPWI7Y1tyKzU2Pj4yXT1kO2Nbcz4+Ml09ZTtjW28+PjJdPSRkKGNbY1tzPj4yXT4+Ml18MCl8MDtjW3A+PjJdPSRkKGNbKGNbcz4+Ml18MCkrND4+Ml18MCl8MDtjW20+PjJdPWNbbz4+Ml07Y1toPj4yXT0wO2NbZz4+Ml09dmUoY1tmPj4yXXwwKXwwO2lmKCEoY1tvPj4yXXwwKSl7aT1yO3JldHVybn1kb3tpZighKGFbY1ttPj4yXT4+MF18MCkpe3E9NzticmVha31jW2o+PjJdPWNbbT4+Ml07Y1tqKzQ+PjJdPWNbaD4+Ml07ZG97Y1ttPj4yXT0oY1ttPj4yXXwwKSsoY1toPj4yXXwwKTtjW2g+PjJdPSR1KGNbbT4+Ml18MCxrKXwwfXdoaWxlKChjW2s+PjJdfDApPT0xNjIpfXdoaWxlKChjW2s+PjJdfDApIT0yMj8oY1trPj4yXXwwKSE9MTI1OjApO2lmKChxfDApPT03KXtpPXI7cmV0dXJufXM9Y1tnPj4yXXwwO209Y1tvPj4yXXwwO3A9Y1twPj4yXXwwO3E9KGNbaj4+Ml18MCkrKGNbais0Pj4yXXwwKXwwO2NbbD4+Ml09KGNbaj4+Ml18MCktKGNbbz4+Ml18MCk7Y1tsKzQ+PjJdPW07Y1tsKzg+PjJdPXA7Y1tsKzEyPj4yXT1xO2Nbbj4+Ml09R2gocyw0NTU5NSxsKXwwO21lKGNbZj4+Ml18MCxjW24+PjJdfDAsLTEsMTcwKTtpPXI7cmV0dXJufWZ1bmN0aW9uIG9RKGIsZCxlKXtiPWJ8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MDtzPWk7aT1pKzgwfDA7bT1zO2Y9cys2OHwwO3Q9cys2MHwwO3A9cys1NnwwO3E9cys1MnwwO2w9cys0OHwwO2s9cys0MHwwO2g9cyszMnwwO249cysyOHwwO2o9cysyNHwwO289cysyMHwwO2c9cysxNnwwO2NbZj4+Ml09YjtjW3MrNjQ+PjJdPWQ7Y1t0Pj4yXT1lO2NbcD4+Ml09JGQoY1tjW3Q+PjJdPj4yXXwwKXwwO2NbcT4+Ml09JGQoY1soY1t0Pj4yXXwwKSs0Pj4yXXwwKXwwO2NbaD4+Ml09MztjW24+PjJdPWNbcD4+Ml07Y1tqPj4yXT0wO2NbZz4+Ml09dmUoY1tmPj4yXXwwKXwwO2lmKCEoY1twPj4yXXwwKSl7aT1zO3JldHVybn13aGlsZSgxKXtpZighKGFbY1tuPj4yXT4+MF18MCkpe3I9ODticmVha31jW2s+PjJdPWNbbj4+Ml07Y1trKzQ+PjJdPWNbaj4+Ml07ZG97Y1tuPj4yXT0oY1tuPj4yXXwwKSsoY1tqPj4yXXwwKTtjW2o+PjJdPSR1KGNbbj4+Ml18MCxsKXwwfXdoaWxlKChjW2w+PjJdfDApPT0xNjIpO3Q9KGNbaD4+Ml18MCkrMXwwO2NbaD4+Ml09dDtjW2g+PjJdPShjW2w+PjJdfDApPT0xMjJ8KGNbbD4+Ml18MCk9PTEwNz8wOnQ7aWYoKGNbaD4+Ml18MCkhPTIpY29udGludWU7aWYoISgoY1tsPj4yXXwwKSE9MTM3JihjW2w+PjJdfDApIT03NCYoY1tsPj4yXXwwKSE9NSkpYnJlYWt9aWYoKHJ8MCk9PTgpe2k9cztyZXR1cm59dD1jW2c+PjJdfDA7bj1jW3A+PjJdfDA7cT1jW3E+PjJdfDA7cj0oY1trPj4yXXwwKSsoY1trKzQ+PjJdfDApfDA7Y1ttPj4yXT0oY1trPj4yXXwwKS0oY1twPj4yXXwwKTtjW20rND4+Ml09bjtjW20rOD4+Ml09cTtjW20rMTI+PjJdPXI7Y1tvPj4yXT1HaCh0LDQ1NTk1LG0pfDA7bWUoY1tmPj4yXXwwLGNbbz4+Ml18MCwtMSwxNzApO2k9cztyZXR1cm59ZnVuY3Rpb24gcFEoYixkLGUpe2I9YnwwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTA7dT1pO2k9aSs4MHwwO2w9dSsxNnwwO2s9dTtmPXUrNzZ8MDt2PXUrNjh8MDtnPXUrNjR8MDtyPXUrNjB8MDt0PXUrNTZ8MDtuPXUrNTJ8MDtwPXUrNDh8MDtvPXUrNDR8MDttPXUrNDB8MDtoPXUrMzZ8MDtqPXUrMzJ8MDtzPXUrMjh8MDtxPXUrMjR8MDtjW2Y+PjJdPWI7Y1t1KzcyPj4yXT1kO2Nbdj4+Ml09ZTtjW2c+PjJdPXZlKGNbZj4+Ml18MCl8MDtjW3I+PjJdPTA7Y1tuPj4yXT0kZChjW2Nbdj4+Ml0+PjJdfDApfDA7Y1twPj4yXT0kZChjWyhjW3Y+PjJdfDApKzQ+PjJdfDApfDA7Y1tvPj4yXT0kZChjWyhjW3Y+PjJdfDApKzg+PjJdfDApfDA7aWYoKGNbbj4+Ml18MCk9PTB8KGNbcD4+Ml18MCk9PTApe2k9dTtyZXR1cm59Y1ttPj4yXT1jW24+PjJdO3doaWxlKDEpe2lmKCEoYVtjW20+PjJdPj4wXXwwKSlicmVhaztjW2g+PjJdPSR1KGNbbT4+Ml18MCxqKXwwO2lmKChjW2o+PjJdfDApPT0xMDUpe2Rve2NbbT4+Ml09KGNbbT4+Ml18MCkrKGNbaD4+Ml18MCk7Y1toPj4yXT0kdShjW20+PjJdfDAsail8MH13aGlsZSgoY1tqPj4yXXwwKT09MTYyKTtpZigoY1tqPj4yXXwwKT09MTYzKWJyZWFrO3Y9Y1toPj4yXXwwO2Nbcz4+Ml09WXcoY1tnPj4yXXwwLGNbbT4+Ml18MCx2LCgodnwwKTwwKTw8MzE+PjMxKXwwO2lmKCEoY1tzPj4yXXwwKSlicmVhaztadyhjW3M+PjJdfDApO2lmKCEoaWcoY1twPj4yXXwwLGNbcz4+Ml18MCl8MCkpe3Y9Y1tnPj4yXXwwO2Q9KGNbbT4+Ml18MCktKGNbbj4+Ml18MCl8MDtlPWNbbj4+Ml18MDtiPWNbbz4+Ml18MDtjW2s+PjJdPShjW3I+PjJdfDApIT0wP2Nbcj4+Ml18MDoxODQwMjtjW2srND4+Ml09ZDtjW2srOD4+Ml09ZTtjW2srMTI+PjJdPWI7Y1txPj4yXT1HaCh2LDQ1NTg0LGspfDA7VGYoY1tnPj4yXXwwLGNbcj4+Ml18MCk7Y1tyPj4yXT1jW3E+PjJdO2Nbbj4+Ml09KGNbbT4+Ml18MCkrKGNbaD4+Ml18MCl9VGYoY1tnPj4yXXwwLGNbcz4+Ml18MCl9Y1ttPj4yXT0oY1ttPj4yXXwwKSsoY1toPj4yXXwwKX12PWNbZz4+Ml18MDtzPWNbbj4+Ml18MDtjW2w+PjJdPShjW3I+PjJdfDApIT0wP2Nbcj4+Ml18MDoxODQwMjtjW2wrND4+Ml09cztjW3Q+PjJdPUdoKHYsMjQ3MDUsbCl8MDttZShjW2Y+PjJdfDAsY1t0Pj4yXXwwLC0xLDE3MCk7VGYoY1tnPj4yXXwwLGNbcj4+Ml18MCk7aT11O3JldHVybn1mdW5jdGlvbiBxUShhLGIpe2E9YXwwO2I9YnwwO3ZhciBkPTAsZT0wLGY9MDtkPWk7aT1pKzE2fDA7ZT1kKzR8MDtmPWQ7Y1tlPj4yXT1hO2NbZj4+Ml09YjthPWt1KGNbZT4+Ml18MCxjW2Y+PjJdfDApfDA7Yj1jWyhjW2U+PjJdfDApKzQ1Nj4+Ml18MDtjW2I+PjJdPShjW2I+PjJdfDApK2E7aT1kO3JldHVybn1mdW5jdGlvbiByUShiLGQsZSl7Yj1ifDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTA7az1pO2k9aSsxNnwwO2Y9aysxMnwwO2c9ays4fDA7aD1rKzR8MDtqPWs7Y1tmPj4yXT1iO2NbZz4+Ml09ZDtjW2g+PjJdPWU7aWYoIShjW2c+PjJdfDApKXtlPWNbZj4+Ml18MDtqPWNbZz4+Ml18MDtUZihlLGopO2k9aztyZXR1cm59Y1tqPj4yXT1jW2c+PjJdO3doaWxlKDEpe2lmKChjW2o+PjJdfDApPj4+MD49KChjW2c+PjJdfDApKygoY1toPj4yXXwwKSoyMHwwKXwwKT4+PjApYnJlYWs7aWYoYVsoY1tqPj4yXXwwKSsxPj4wXXwwKUlBKGNbZj4+Ml18MCxhWyhjW2o+PjJdfDApKzE+PjBdfDAsY1soY1tqPj4yXXwwKSsxNj4+Ml18MCk7Y1tqPj4yXT0oY1tqPj4yXXwwKSsyMH1lPWNbZj4+Ml18MDtqPWNbZz4+Ml18MDtUZihlLGopO2k9aztyZXR1cm59ZnVuY3Rpb24gc1EoYSxiKXthPWF8MDtiPWJ8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wO2w9aTtpPWkrMzJ8MDtlPWwrMTZ8MDtmPWwrMTJ8MDtnPWwrOHwwO2g9bCs0fDA7aj1sO2NbZT4+Ml09YTtjW2Y+PjJdPWI7Y1tnPj4yXT1jWyhjW2Y+PjJdfDApKzg+PjJdO3doaWxlKDEpe2lmKCEoY1tnPj4yXXwwKSlicmVhaztjW2g+PjJdPWNbKGNbZz4+Ml18MCkrMjA+PjJdO2lmKCEoKGNbZT4+Ml18MCkhPTA/KGNbKGNbZT4+Ml18MCkrNDU2Pj4yXXwwKSE9MDowKSlrPTU7aWYoKGt8MCk9PTU/KGs9MCwoKGRbKGNbZj4+Ml18MCkrNDI+PjBdfDApJjE2fDApPT0wKTowKXtjW2o+PjJdPWNbY1tnPj4yXT4+Ml07VWooKGNbKGNbZz4+Ml18MCkrMjQ+PjJdfDApKzI0fDAsY1tqPj4yXXwwLDApfDB9RkgoY1tlPj4yXXwwLGNbZz4+Ml18MCk7Y1tnPj4yXT1jW2g+PjJdfXRRKGNbZT4+Ml18MCxjW2Y+PjJdfDApO0FIKGNbZT4+Ml18MCxjW2Y+PjJdfDApO1RmKGNbZT4+Ml18MCxjW2NbZj4+Ml0+PjJdfDApO1RmKGNbZT4+Ml18MCxjWyhjW2Y+PjJdfDApKzIwPj4yXXwwKTtmdihjW2U+PjJdfDAsY1soY1tmPj4yXXwwKSsxMj4+Ml18MCk7ZXYoY1tlPj4yXXwwLGNbKGNbZj4+Ml18MCkrMjQ+PjJdfDApO3VRKGNbZT4+Ml18MCxjW2Y+PjJdfDApO1RmKGNbZT4+Ml18MCxjW2Y+PjJdfDApO2k9bDtyZXR1cm59ZnVuY3Rpb24gdFEoYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wO2s9aTtpPWkrMzJ8MDtkPWsrMjB8MDtlPWsrMTZ8MDtnPWsrMTJ8MDtoPWsrOHwwO2Y9ays0fDA7aj1rO2NbZD4+Ml09YTtjW2U+PjJdPWI7Y1tnPj4yXT1jWyhjW2U+PjJdfDApKzE2Pj4yXTt3aGlsZSgxKXtpZighKGNbZz4+Ml18MCkpYnJlYWs7aWYoISgoY1tkPj4yXXwwKSE9MD8oY1soY1tkPj4yXXwwKSs0NTY+PjJdfDApIT0wOjApKXthPWNbKGNbZz4+Ml18MCkrMTI+PjJdfDA7aWYoY1soY1tnPj4yXXwwKSsxNj4+Ml18MCljWyhjWyhjW2c+PjJdfDApKzE2Pj4yXXwwKSsxMj4+Ml09YTtlbHNle2NbZj4+Ml09YTthPWNbZz4+Ml18MDtpZihjW2Y+PjJdfDApYT1jWyhjW2ErMTI+PjJdfDApKzg+PjJdfDA7ZWxzZSBhPWNbYSs4Pj4yXXwwO2Nbaj4+Ml09YTtVaigoY1soY1tlPj4yXXwwKSs2ND4+Ml18MCkrNTZ8MCxjW2o+PjJdfDAsY1tmPj4yXXwwKXwwfWlmKGNbKGNbZz4+Ml18MCkrMTI+PjJdfDApY1soY1soY1tnPj4yXXwwKSsxMj4+Ml18MCkrMTY+PjJdPWNbKGNbZz4+Ml18MCkrMTY+PjJdfXVHKGNbZD4+Ml18MCxjWyhjW2c+PjJdfDApKzI4Pj4yXXwwKTt1RyhjW2Q+PjJdfDAsY1soY1tnPj4yXXwwKSsyOCs0Pj4yXXwwKTtjW2g+PjJdPWNbKGNbZz4+Ml18MCkrND4+Ml07VGYoY1tkPj4yXXwwLGNbZz4+Ml18MCk7Y1tnPj4yXT1jW2g+PjJdfWk9aztyZXR1cm59ZnVuY3Rpb24gdVEoYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wO2c9aTtpPWkrMTZ8MDtkPWcrOHwwO2U9Zys0fDA7Zj1nO2NbZD4+Ml09YTtjW2U+PjJdPWI7aWYoISgoY1tkPj4yXXwwKSE9MD8oY1soY1tkPj4yXXwwKSs0NTY+PjJdfDApIT0wOjApKVZKKDAsY1tlPj4yXXwwKXwwO2lmKCEoY1soY1tlPj4yXXwwKSs1Mj4+Ml18MCkpe2k9ZztyZXR1cm59Y1tmPj4yXT0wO3doaWxlKDEpe2lmKChjW2Y+PjJdfDApPj0oY1soY1tlPj4yXXwwKSs0OD4+Ml18MCkpYnJlYWs7aWYoKGNbZj4+Ml18MCkhPTEpVGYoY1tkPj4yXXwwLGNbKGNbKGNbZT4+Ml18MCkrNTI+PjJdfDApKyhjW2Y+PjJdPDwyKT4+Ml18MCk7Y1tmPj4yXT0oY1tmPj4yXXwwKSsxfVRmKGNbZD4+Ml18MCxjWyhjW2U+PjJdfDApKzUyPj4yXXwwKTtpPWc7cmV0dXJufWZ1bmN0aW9uIHZRKGEpe2E9YXwwO3JldHVybiAoKGF8MzIpKy05N3wwKT4+PjA8MjZ8MH1mdW5jdGlvbiB3UShhKXthPWF8MDtyZXR1cm4gKChhfDApPT0zMnwoYXwwKT09OSkmMXwwfWZ1bmN0aW9uIHhRKGEpe2E9YXwwO3JldHVybiAoYSstOTd8MCk+Pj4wPDI2fDB9ZnVuY3Rpb24geVEoYSl7YT1hfDA7cmV0dXJuIChhKy02NXwwKT4+PjA8MjZ8MH1mdW5jdGlvbiB6UShhKXthPWF8MDt2YXIgYj0wO2I9KHlRKGEpfDApPT0wO3JldHVybiAoYj9hOmF8MzIpfDB9ZnVuY3Rpb24gQVEoYSl7YT1hfDA7dmFyIGI9MDtiPSh4UShhKXwwKT09MDtyZXR1cm4gKGI/YTphJjk1KXwwfWZ1bmN0aW9uIEJRKCl7dmFyIGE9MDtpZighKGNbMjIxNl18MCkpYT04OTEyO2Vsc2UgYT1jWyhxYigpfDApKzYwPj4yXXwwO3JldHVybiBhfDB9ZnVuY3Rpb24gQ1EoYil7Yj1ifDA7dmFyIGM9MCxlPTA7Yz0wO3doaWxlKDEpe2lmKChkWzQ1NzQwK2M+PjBdfDApPT0oYnwwKSl7ZT0yO2JyZWFrfWM9YysxfDA7aWYoKGN8MCk9PTg3KXtjPTg3O2I9NDU4Mjg7ZT01O2JyZWFrfX1pZigoZXwwKT09MilpZighYyliPTQ1ODI4O2Vsc2V7Yj00NTgyODtlPTV9aWYoKGV8MCk9PTUpd2hpbGUoMSl7ZT1iO3doaWxlKDEpe2I9ZSsxfDA7aWYoIShhW2U+PjBdfDApKWJyZWFrO2Vsc2UgZT1ifWM9YystMXwwO2lmKCFjKWJyZWFrO2Vsc2UgZT01fXJldHVybiBifDB9ZnVuY3Rpb24gRFEoYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MDtzPWk7aT1pKzE5MnwwO2o9cysxNTJ8MDtoPXMrMTM2fDA7cj1zKzEyMHwwO3E9cysxMDR8MDtwPXMrOTZ8MDttPXMrODB8MDtsPXMrNjR8MDtmPXMrNDh8MDtuPXMrMzJ8MDtnPXMrMTZ8MDtlPXM7dD1zKzE3NnwwO2s9cysxNjh8MDtjW3Q+PjJdPWQ7ZD0oY1t0Pj4yXXwwKSsoNC0xKSZ+KDQtMSk7bz1jW2Q+PjJdfDA7Y1t0Pj4yXT1kKzQ7bz0oYnwwKT09ND9vfDMyNzY4Om87YTpkbyBzd2l0Y2goYnwwKXtjYXNlIDE0OntjW2U+PjJdPWE7Y1tlKzQ+PjJdPTE0O2NbZSs4Pj4yXT1vO2Q9R1EobWIoMjIxLGV8MCl8MCl8MDticmVha31jYXNlIDk6e2NbZz4+Ml09YTtjW2crND4+Ml09MTY7Y1tnKzg+PjJdPWs7ZD1tYigyMjEsZ3wwKXwwO3N3aXRjaChkfDApe2Nhc2UgLTIyOntjW24+PjJdPWE7Y1tuKzQ+PjJdPTk7Y1tuKzg+PjJdPW87ZD1tYigyMjEsbnwwKXwwO2JyZWFrIGF9Y2FzZSAwOntkPWNbays0Pj4yXXwwO2Q9KGNbaz4+Ml18MCk9PTI/MC1kfDA6ZDticmVhayBhfWRlZmF1bHQ6e2Q9R1EoZCl8MDticmVhayBhfX19Y2FzZSAxMDMwOntjW2Y+PjJdPWE7Y1tmKzQ+PjJdPTEwMzA7Y1tmKzg+PjJdPW87ZD1tYigyMjEsZnwwKXwwO2lmKChkfDApIT0tMjIpe2lmKChkfDApPi0xKXtjW2w+PjJdPWQ7Y1tsKzQ+PjJdPTI7Y1tsKzg+PjJdPTE7bWIoMjIxLGx8MCl8MH1kPUdRKGQpfDA7YnJlYWsgYX1jW20+PjJdPWE7Y1ttKzQ+PjJdPTEwMzA7Y1ttKzg+PjJdPTA7ZD1tYigyMjEsbXwwKXwwO2lmKChkfDApPT0tMjIpe2NbcT4+Ml09YTtjW3ErND4+Ml09MDtjW3ErOD4+Ml09bztkPW1iKDIyMSxxfDApfDA7aWYoKGR8MCk+LTEpe2Nbcj4+Ml09ZDtjW3IrND4+Ml09MjtjW3IrOD4+Ml09MTttYigyMjEscnwwKXwwfWQ9R1EoZCl8MDticmVhayBhfWVsc2V7aWYoKGR8MCk+LTEpe2NbcD4+Ml09ZDtDYig2LHB8MCl8MH1kPUdRKC0yMil8MDticmVhayBhfX1kZWZhdWx0OmlmKChiKy0xMnwwKT4+PjA8NSl7Y1toPj4yXT1hO2NbaCs0Pj4yXT1iO2NbaCs4Pj4yXT1vO2Q9R1EobWIoMjIxLGh8MCl8MCl8MDticmVhayBhfWVsc2V7Y1tqPj4yXT1hO2Nbais0Pj4yXT1iO2Nbais4Pj4yXT1vO2Q9R1EobWIoMjIxLGp8MCl8MCl8MDticmVhayBhfX13aGlsZSgwKTtpPXM7cmV0dXJuIGR8MH1mdW5jdGlvbiBFUShhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MDtlPWk7aT1pKzMyfDA7Zj1lO2c9ZSsxNnwwO2NbZz4+Ml09ZDtoPShjW2c+PjJdfDApKyg0LTEpJn4oNC0xKTtkPWNbaD4+Ml18MDtjW2c+PjJdPWgrNDtjW2Y+PjJdPWE7Y1tmKzQ+PjJdPWJ8MzI3Njg7Y1tmKzg+PjJdPWQ7ZD1HUShEYig1LGZ8MCl8MCl8MDtpPWU7cmV0dXJuIGR8MH1mdW5jdGlvbiBGUShiLGMpe2I9YnwwO2M9Y3wwO3ZhciBkPTAsZT0wO2Q9MDt3aGlsZSgxKXthW2IrZD4+MF09YVs0NzYzMitkPj4wXXwwO2lmKChkfDApPT0xNClicmVhaztlbHNlIGQ9ZCsxfDB9aWYoIWMpe2FbYisxND4+MF09NDg7YVtiKzE1Pj4wXT0wfWVsc2V7ZD0xNDtlPWM7d2hpbGUoMSl7ZD1kKzF8MDtpZihlPj4+MDwxMClicmVhaztlbHNlIGU9KGU+Pj4wKS8xMHwwfWFbYitkPj4wXT0wO3doaWxlKDEpe2Q9ZCstMXwwO2FbYitkPj4wXT0oYz4+PjApJTEwfDB8NDg7aWYoYz4+PjA8MTApYnJlYWs7ZWxzZSBjPShjPj4+MCkvMTB8MH19cmV0dXJufWZ1bmN0aW9uIEdRKGEpe2E9YXwwO2lmKGE+Pj4wPjQyOTQ5NjMyMDApe2NbKEJRKCl8MCk+PjJdPTAtYTthPS0xfXJldHVybiBhfDB9ZnVuY3Rpb24gSFEoYSl7YT0rYTtyZXR1cm4gKygrWCgrKGErLTE0MTYuMDk5Njg5ODgzOTY4MykpKjIyNDcxMTY0MTg1Nzc4OTQ4ODQ2NjE2MzEuMGUyODMqMjI0NzExNjQxODU3Nzg5NDg4NDY2MTYzMS4wZTI4Myl9ZnVuY3Rpb24gSVEoYSl7YT0rYTt2YXIgYj0wO2hbaz4+M109YTtiPVNSKGNbaz4+Ml18MCxjW2srND4+Ml18MCw1Mil8MDtiPWImMjA0NztkbyBpZihiPj4+MD49MTAyNClpZihiPj4+MDwxMDQ5KXthPStZKCsoYSoyLjAtMS4wLygrTygrKGEqYSstMS4wKSkrYSkpKTticmVha31lbHNle2E9K1koK2EpKy42OTMxNDcxODA1NTk5NDUzO2JyZWFrfWVsc2V7YT1hKy0xLjA7YT0rT1EoYSsgK08oKyhhKmErYSoyLjApKSl9d2hpbGUoMCk7cmV0dXJuICthfWZ1bmN0aW9uIEpRKGEpe2E9K2E7dmFyIGI9MCxkPTAsZT0wLGY9MC4wO2hbaz4+M109YTtlPWNbaz4+Ml18MDtkPWNbays0Pj4yXXwwO2I9U1IoZXwwLGR8MCw1Mil8MDtiPWImMjA0NztjW2s+PjJdPWU7Y1trKzQ+PjJdPWQmMjE0NzQ4MzY0NzthPStoW2s+PjNdO2RvIGlmKGI+Pj4wPD0xMDQ4KXtpZihiPj4+MD4xMDIzKXthPStZKCsoYSoyLjArMS4wLyhhKyArTygrKGEqYSsxLjApKSkpKTticmVha31pZihiPj4+MD45OTYpe2Y9YSphO2E9K09RKGErZi8oK08oKyhmKzEuMCkpKzEuMCkpfX1lbHNlIGE9K1koK2EpKy42OTMxNDcxODA1NTk5NDUzO3doaWxlKDApO3JldHVybiArKChkfDApPDA/LWE6YSl9ZnVuY3Rpb24gS1EoYSl7YT0rYTt2YXIgYj0wLGQ9MCxlPTAsZj0wLjA7aFtrPj4zXT1hO2U9Y1trPj4yXXwwO2Q9Y1trKzQ+PjJdfDA7Yj1TUihlfDAsZHwwLDUyKXwwO2I9YiYyMDQ3O2Nbaz4+Ml09ZTtjW2srND4+Ml09ZCYyMTQ3NDgzNjQ3O2E9K2hbaz4+M107aWYoYj4+PjA8MTAyMil7aWYoYj4+PjA+PTk5MSl7Zj1hKjIuMDthPStPUShmK2EqZi8oMS4wLWEpKSouNX19ZWxzZSBhPStPUShhLygxLjAtYSkqMi4wKSouNTtyZXR1cm4gKygoZHwwKTwwPy1hOmEpfWZ1bmN0aW9uIExRKGEpe2E9K2E7dmFyIGI9MDtoW2s+PjNdPWE7Yj1jW2srND4+Ml0mMjE0NzQ4MzY0NztjW2s+PjJdPWNbaz4+Ml07Y1trKzQ+PjJdPWI7YT0raFtrPj4zXTtkbyBpZihiPj4+MDwxMDcyMDQ5NzMwKWlmKGI+Pj4wPDEwNDU0MzAyNzIpYT0xLjA7ZWxzZXthPStNUShhKTthPWEqYS8oKGErMS4wKSoyLjApKzEuMH1lbHNlIGlmKGI+Pj4wPDEwODI1MzU0OTApe2E9K1goK2EpO2E9KGErMS4wL2EpKi41O2JyZWFrfWVsc2V7YT0rSFEoYSk7YnJlYWt9d2hpbGUoMCk7cmV0dXJuICthfWZ1bmN0aW9uIE1RKGEpe2E9K2E7dmFyIGI9MC4wLGQ9MC4wLGU9MCxmPTAsZz0wLGk9MCxqPTAuMCxsPTAsbT0wLjA7aFtrPj4zXT1hO2U9Y1trPj4yXXwwO2Y9Y1trKzQ+PjJdfDA7Zz1mJjIxNDc0ODM2NDc7aT1TUihlfDAsZnwwLDYzKXwwO2RvIGlmKGc+Pj4wPjEwNzgxNTk0ODEpe2c9ZiYyMTQ3NDgzNjQ3O2lmKCEoZz4+PjA+MjE0NjQzNTA3MnwoZ3wwKT09MjE0NjQzNTA3MiZlPj4+MD4wKSlpZighaSlpZihhPjcwOS43ODI3MTI4OTMzODQpYT1hKjg5ODg0NjU2NzQzMTE1Nzk1Mzg2NDY1MjUuMGUyODM7ZWxzZSBsPTExO2Vsc2UgYT0tMS4wfWVsc2V7aWYoZz4+PjA8PTEwNzEwMDExNTQpaWYoZz4+PjA8MTAxNjA3MDE0NClicmVhaztlbHNle2o9MC4wO2c9MDtsPTE0O2JyZWFrfWlmKGc+Pj4wPDEwNzI3MzQ4OTgpaWYoIWkpe2I9YSstLjY5MzE0NzE4MDM2OTEyMzg7ZT0xO2Q9MS45MDgyMTQ5MjkyNzA1ODc3ZS0xMDtsPTEyO2JyZWFrfWVsc2V7Yj1hKy42OTMxNDcxODAzNjkxMjM4O2U9LTE7ZD0tMS45MDgyMTQ5MjkyNzA1ODc3ZS0xMDtsPTEyO2JyZWFrfWVsc2UgbD0xMX13aGlsZSgwKTtpZigobHwwKT09MTEpe2U9fn4oYSoxLjQ0MjY5NTA0MDg4ODk2MzQrKChpfDApIT0wPy0uNTouNSkpO2Q9KyhlfDApO2I9YS1kKi42OTMxNDcxODAzNjkxMjM4O2Q9ZCoxLjkwODIxNDkyOTI3MDU4NzdlLTEwO2w9MTJ9aWYoKGx8MCk9PTEyKXtqPWItZDthPWo7aj1iLWotZDtnPWU7bD0xNH1hOmRvIGlmKChsfDApPT0xNCl7ZD1hKi41O2I9YSpkO209YiooYiooYiooYiooNC4wMDgyMTc4MjczMjkzNjJlLTA2LWIqMi4wMTA5OTIxODE4MzYyNDM3ZS0wNykrLTcuOTM2NTA3NTc4Njc0ODhlLTA1KSsxLjU4NzMwMTU4NzI1NDgxNDZlLTAzKSstLjAzMzMzMzMzMzMzMzMzMzEzKSsxLjA7ZD0zLjAtZCptO2Q9YiooKG0tZCkvKDYuMC1hKmQpKTtpZighZyl7YT1hLShhKmQtYik7YnJlYWt9Yj1hKihkLWopLWotYjtzd2l0Y2goZ3wwKXtjYXNlIC0xOnthPShhLWIpKi41Ky0uNTticmVhayBhfWNhc2UgMTppZihhPC0uMjUpe2E9KGItKGErLjUpKSotMi4wO2JyZWFrIGF9ZWxzZXthPShhLWIpKjIuMCsxLjA7YnJlYWsgYX1kZWZhdWx0OntpPVdSKGcrMTAyM3wwLDAsNTIpfDA7bD1DO2Nbaz4+Ml09aTtjW2srND4+Ml09bDtkPStoW2s+PjNdO2lmKGc+Pj4wPjU2KXthPWEtYisxLjA7YT0oKGd8MCk9PTEwMjQ/YSoyLjAqODk4ODQ2NTY3NDMxMTU3OTUzODY0NjUyNS4wZTI4MzpkKmEpKy0xLjA7YnJlYWsgYX1lPVdSKDEwMjMtZ3wwLDAsNTIpfDA7Zj1DO2lmKChnfDApPDIwKXtjW2s+PjJdPWU7Y1trKzQ+PjJdPWY7YT0xLjAtK2hbaz4+M10rKGEtYil9ZWxzZXtjW2s+PjJdPWU7Y1trKzQ+PjJdPWY7YT1hLSgraFtrPj4zXStiKSsxLjB9YT1kKmE7YnJlYWsgYX19fXdoaWxlKDApO3JldHVybiArYX1mdW5jdGlvbiBOUShhKXthPSthO3ZhciBiPTAsZD0wLGU9MCxmPTAsZz0wLjAsaT0wLjAsaj0wLjAsbD0wLjAsbT0wLjA7aFtrPj4zXT1hO2Q9Y1trPj4yXXwwO2I9Y1trKzQ+PjJdfDA7ZT0oYnwwKTwwO2RvIGlmKGV8Yj4+PjA8MTA0ODU3Nil7aWYoKGR8MCk9PTAmKGImMjE0NzQ4MzY0N3wwKT09MCl7YT0tMS4wLyhhKmEpO2JyZWFrfWlmKGUpe2E9KGEtYSkvMC4wO2JyZWFrfWVsc2V7aFtrPj4zXT1hKjE4MDE0Mzk4NTA5NDgxOTg0LjA7Yj1jW2srND4+Ml18MDtlPWNbaz4+Ml18MDtkPS0xMDc3O2Y9OTticmVha319ZWxzZSBpZihiPj4+MDw9MjE0NjQzNTA3MSlpZigoZHwwKT09MCYwPT0wJihifDApPT0xMDcyNjkzMjQ4KWE9MC4wO2Vsc2V7ZT1kO2Q9LTEwMjM7Zj05fXdoaWxlKDApO2lmKChmfDApPT05KXtmPWIrNjE0MjQyfDA7Y1trPj4yXT1lO2Nbays0Pj4yXT0oZiYxMDQ4NTc1KSsxMDcyMDc5MDA2O209K2hbaz4+M10rLTEuMDthPW0qKG0qLjUpO2o9bS8obSsyLjApO2w9aipqO2k9bCpsO2hbaz4+M109bS1hO2U9Y1trKzQ+PjJdfDA7Y1trPj4yXT0wO2Nbays0Pj4yXT1lO2c9K2hbaz4+M107YT1qKihhKyhpKihpKihpKi4xNTMxMzgzNzY5OTIwOTM3MysuMjIyMjIxOTg0MzIxNDk3ODQpKy4zOTk5OTk5OTk5OTQwOTQyKStsKihpKihpKihpKi4xNDc5ODE5ODYwNTExNjU4NisuMTgxODM1NzIxNjE2MTgwNSkrLjI4NTcxNDI4NzQzNjYyMzkpKy42NjY2NjY2NjY2NjY2NzM1KSkpKyhtLWctYSk7bT1nKi40MzQyOTQ0ODE4NzgxNjg5O2k9KyhkKyhmPj4+MjApfDApO2w9aSouMzAxMDI5OTk1NjYzNjExNzc7aj1sK207YT1qKyhtKyhsLWopKyhhKi40MzQyOTQ0ODE4NzgxNjg5KyhpKjMuNjk0MjM5MDc3MTU4OTMxZS0xMysoZythKSoyLjUwODI5NDY3MTE2NDUyNzVlLTExKSkpfXJldHVybiArYX1mdW5jdGlvbiBPUShhKXthPSthO3ZhciBiPTAsZD0wLjAsZT0wLjAsZj0wLGc9MCxpPTAuMCxqPTAuMCxsPTAuMCxtPTAuMDtoW2s+PjNdPWE7Yj1jW2srND4+Ml18MDtkbyBpZigoYnwwKTwwfGI+Pj4wPDEwNzEyODQ4NTgpaWYoYj4+PjA8PTMyMjAxNzY4OTUpe2c9V1IoYnwwLDAsMSl8MDtpZihnPj4+MDwyMDM0MjM3NDQwKWJyZWFrO2lmKGI+Pj4wPDMyMTgyNTk2NTMpe2U9MC4wO2Q9MC4wO2Y9MTE7YnJlYWt9ZWxzZXtmPTg7YnJlYWt9fWVsc2V7aWYoYT09LTEuMCl7YT0tczticmVha31hPShhLWEpLzAuMDticmVha31lbHNlIGlmKGI+Pj4wPD0yMTQ2NDM1MDcxKWY9ODt3aGlsZSgwKTtpZigoZnwwKT09OCl7ZD1hKzEuMDtoW2s+PjNdPWQ7Yj0oY1trKzQ+PjJdfDApKzYxNDI0MnwwO2Y9KGI+Pj4yMCkrLTEwMjN8MDtpZigoZnwwKTw1NClhPSgoZnwwKT4xPzEuMC0oZC1hKTphLShkKy0xLjApKS9kO2Vsc2UgYT0wLjA7Y1trPj4yXT1jW2s+PjJdO2Nbays0Pj4yXT0oYiYxMDQ4NTc1KSsxMDcyMDc5MDA2O2U9YTthPStoW2s+PjNdKy0xLjA7ZD0rKGZ8MCk7Zj0xMX1pZigoZnwwKT09MTEpe2k9YSooYSouNSk7bT1hLyhhKzIuMCk7bD1tKm07aj1sKmw7YT1kKi42OTMxNDcxODAzNjkxMjM4KyhhKyhlK2QqMS45MDgyMTQ5MjkyNzA1ODc3ZS0xMCttKihpKyhqKihqKihqKi4xNTMxMzgzNzY5OTIwOTM3MysuMjIyMjIxOTg0MzIxNDk3ODQpKy4zOTk5OTk5OTk5OTQwOTQyKStsKihqKihqKihqKi4xNDc5ODE5ODYwNTExNjU4NisuMTgxODM1NzIxNjE2MTgwNSkrLjI4NTcxNDI4NzQzNjYyMzkpKy42NjY2NjY2NjY2NjY2NzM1KSkpLWkpKX1yZXR1cm4gK2F9ZnVuY3Rpb24gUFEoYSl7YT0rYTt2YXIgYj0wLjAsZD0wLjAsZT0wO2hbaz4+M109YTtlPWNbays0Pj4yXXwwO2Q9KGV8MCk8MD8tLjU6LjU7ZT1lJjIxNDc0ODM2NDc7Y1trPj4yXT1jW2s+PjJdO2Nbays0Pj4yXT1lO2I9K2hbaz4+M107ZG8gaWYoZT4+PjA8MTA4MjUzNTQ5MCl7Yj0rTVEoYik7aWYoZT4+PjA+PTEwNzI2OTMyNDgpe2E9ZCooYitiLyhiKzEuMCkpO2JyZWFrfWlmKGU+Pj4wPj0xMDQ1NDMwMjcyKWE9ZCooYioyLjAtYipiLyhiKzEuMCkpfWVsc2UgYT1kKjIuMCorSFEoYik7d2hpbGUoMCk7cmV0dXJuICthfWZ1bmN0aW9uIFFRKGEpe2E9K2E7dmFyIGI9MCxkPTA7aFtrPj4zXT1hO2Q9Y1trKzQ+PjJdfDA7Yj1kJjIxNDc0ODM2NDc7Y1trPj4yXT1jW2s+PjJdO2Nbays0Pj4yXT1iO2E9K2hbaz4+M107ZG8gaWYoYj4+PjA+MTA3MTc0ODA3NClpZihiPj4+MD4xMDc3MTQ5Njk2KXthPTEuMC0wLjAvYTticmVha31lbHNle2E9MS4wLTIuMC8oK01RKGEqMi4wKSsyLjApO2JyZWFrfWVsc2V7aWYoYj4+PjA+MTA3MDYxODc5OCl7YT0rTVEoYSoyLjApO2E9YS8oYSsyLjApO2JyZWFrfWlmKGI+Pj4wPjEwNDg1NzUpe2E9K01RKGEqLTIuMCk7YT0tYS8oYSsyLjApfX13aGlsZSgwKTtyZXR1cm4gKygoZHwwKTwwPy1hOmEpfWZ1bmN0aW9uIFJRKGEsYixkLGUsZixnKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDt2YXIgaD0wLGo9MCxrPTA7az1pO2k9aSszMnwwO2g9aztkbyBpZigoZyY0MDk1fDApPT0wJigoKGd8MCk8MCk8PDMxPj4zMSYtNDA5NnwwKT09MCl7aWYoYj4+PjA+MjE0NzQ4MzY0Nil7Y1soQlEoKXwwKT4+Ml09MTI7Zj0tMTticmVha31qPShlJjE2fDApIT0wO2lmKGopR1IoLTEpO2NbaD4+Ml09YTtjW2grND4+Ml09YjtjW2grOD4+Ml09ZDtjW2grMTI+PjJdPWU7Y1toKzE2Pj4yXT1mO2NbaCsyMD4+Ml09Zz4+MTI7Zj1HUShjYigxOTIsaHwwKXwwKXwwO2lmKGopSFIoKX1lbHNle2NbKEJRKCl8MCk+PjJdPTIyO2Y9LTF9d2hpbGUoMCk7aT1rO3JldHVybiBmfDB9ZnVuY3Rpb24gU1EoYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MDtkPWk7aT1pKzE2fDA7ZT1kO0dSKC0xKTtjW2U+PjJdPWE7Y1tlKzQ+PjJdPWI7YT1HUShYYSg5MSxlfDApfDApfDA7SFIoKTtpPWQ7cmV0dXJuIGF8MH1mdW5jdGlvbiBUUShhLGIpe2E9YXwwO2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wO2g9aTtpPWkrNjR8MDtnPWgrMTZ8MDtmPWgrOHwwO2Q9aDtlPWgrMjR8MDtjW2Q+PjJdPWE7Y1tkKzQ+PjJdPWI7ZD1qYig5NCxkfDApfDA7aWYoKGR8MCk9PS05PyhjW2Y+PjJdPWEsY1tmKzQ+PjJdPTEsKG1iKDIyMSxmfDApfDApPj0wKTowKXtGUShlLGEpO2NbZz4+Ml09ZTtjW2crND4+Ml09YjtkPUdRKHdiKDE1LGd8MCl8MCl8MH1lbHNlIGQ9R1EoZCl8MDtpPWg7cmV0dXJuIGR8MH1mdW5jdGlvbiBVUShhLGIpe2E9YXwwO2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wO2g9aTtpPWkrNjR8MDtnPWgrMTZ8MDtmPWgrOHwwO2Q9aDtlPWgrMjR8MDtjW2Q+PjJdPWE7Y1tkKzQ+PjJdPWI7ZD1kYigxOTcsZHwwKXwwO2lmKChkfDApPT0tOT8oY1tmPj4yXT1hLGNbZis0Pj4yXT0xLChtYigyMjEsZnwwKXwwKT49MCk6MCl7RlEoZSxhKTtjW2c+PjJdPWU7Y1tnKzQ+PjJdPWI7ZD1HUShmYigxOTUsZ3wwKXwwKXwwfWVsc2UgZD1HUShkKXwwO2k9aDtyZXR1cm4gZHwwfWZ1bmN0aW9uIFZRKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MCxlPTA7ZD1pO2k9aSsxNnwwO2U9ZDtjW2U+PjJdPWE7Y1tlKzQ+PjJdPWI7YT1HUShlYigxOTYsZXwwKXwwKXwwO2k9ZDtyZXR1cm4gYXwwfWZ1bmN0aW9uIFdRKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MCxlPTA7ZD1pO2k9aSsxNnwwO2U9ZDtjW2U+PjJdPWE7Y1tlKzQ+PjJdPWI7YT1HUShaYSgzOSxlfDApfDApfDA7aT1kO3JldHVybiBhfDB9ZnVuY3Rpb24gWFEoYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MDtkPWk7aT1pKzE2fDA7ZT1kO2NbZT4+Ml09YTtjW2UrND4+Ml09YjthPUdRKGZiKDE5NSxlfDApfDApfDA7aT1kO3JldHVybiBhfDB9ZnVuY3Rpb24gWVEoYSl7YT1hfDA7cmV0dXJuIDB9ZnVuY3Rpb24gWlEoYSl7YT1hfDA7cmV0dXJufWZ1bmN0aW9uIF9RKGEpe2E9YXwwO3ZhciBiPTAsZD0wO2I9aTtpPWkrMTZ8MDtkPWI7Y1tkPj4yXT1jW2ErNjA+PjJdO2E9R1EoQ2IoNixkfDApfDApfDA7aT1iO3JldHVybiBhfDB9ZnVuY3Rpb24gJFEoYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MDtmPWk7aT1pKzMyfDA7Zz1mO2U9ZisyMHwwO2NbZz4+Ml09Y1thKzYwPj4yXTtjW2crND4+Ml09MDtjW2crOD4+Ml09YjtjW2crMTI+PjJdPWU7Y1tnKzE2Pj4yXT1kO2lmKChHUSh2YigxNDAsZ3wwKXwwKXwwKTwwKXtjW2U+PjJdPS0xO2E9LTF9ZWxzZSBhPWNbZT4+Ml18MDtpPWY7cmV0dXJuIGF8MH1mdW5jdGlvbiBhUihhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wO3E9aTtpPWkrNDh8MDtuPXErMTZ8MDttPXE7ZT1xKzMyfDA7bz1hKzI4fDA7Zj1jW28+PjJdfDA7Y1tlPj4yXT1mO3A9YSsyMHwwO2Y9KGNbcD4+Ml18MCktZnwwO2NbZSs0Pj4yXT1mO2NbZSs4Pj4yXT1iO2NbZSsxMj4+Ml09ZDtrPWErNjB8MDtsPWErNDR8MDtiPTI7Zj1mK2R8MDt3aGlsZSgxKXtpZighKGNbMjIxNl18MCkpe2Nbbj4+Ml09Y1trPj4yXTtjW24rND4+Ml09ZTtjW24rOD4+Ml09YjtoPUdRKE1iKDE0NixufDApfDApfDB9ZWxzZXtMYSgxNTQsYXwwKTtjW20+PjJdPWNbaz4+Ml07Y1ttKzQ+PjJdPWU7Y1ttKzg+PjJdPWI7aD1HUShNYigxNDYsbXwwKXwwKXwwO0RhKDApfWlmKChmfDApPT0oaHwwKSl7Zj02O2JyZWFrfWlmKChofDApPDApe2Y9ODticmVha31mPWYtaHwwO2c9Y1tlKzQ+PjJdfDA7aWYoaD4+PjA8PWc+Pj4wKWlmKChifDApPT0yKXtjW28+PjJdPShjW28+PjJdfDApK2g7aj1nO2I9Mn1lbHNlIGo9ZztlbHNle2o9Y1tsPj4yXXwwO2Nbbz4+Ml09ajtjW3A+PjJdPWo7aj1jW2UrMTI+PjJdfDA7aD1oLWd8MDtlPWUrOHwwO2I9YistMXwwfWNbZT4+Ml09KGNbZT4+Ml18MCkraDtjW2UrND4+Ml09ai1ofWlmKChmfDApPT02KXtuPWNbbD4+Ml18MDtjW2ErMTY+PjJdPW4rKGNbYSs0OD4+Ml18MCk7YT1uO2Nbbz4+Ml09YTtjW3A+PjJdPWF9ZWxzZSBpZigoZnwwKT09OCl7Y1thKzE2Pj4yXT0wO2Nbbz4+Ml09MDtjW3A+PjJdPTA7Y1thPj4yXT1jW2E+PjJdfDMyO2lmKChifDApPT0yKWQ9MDtlbHNlIGQ9ZC0oY1tlKzQ+PjJdfDApfDB9aT1xO3JldHVybiBkfDB9ZnVuY3Rpb24gYlIoYixkLGUpe2I9YnwwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wO2c9aTtpPWkrODB8MDtmPWc7Y1tiKzM2Pj4yXT0xNjM7aWYoKGNbYj4+Ml0mNjR8MCk9PTA/KGNbZj4+Ml09Y1tiKzYwPj4yXSxjW2YrND4+Ml09MjE1MDUsY1tmKzg+PjJdPWcrMTIsKEthKDU0LGZ8MCl8MCkhPTApOjApYVtiKzc1Pj4wXT0tMTtmPWFSKGIsZCxlKXwwO2k9ZztyZXR1cm4gZnwwfWZ1bmN0aW9uIGNSKGEpe2E9YXwwO3ZhciBiPTAsZD0wO2RvIGlmKGEpe2lmKChjW2ErNzY+PjJdfDApPD0tMSl7Yj1EUihhKXwwO2JyZWFrfWQ9KFlRKGEpfDApPT0wO2I9RFIoYSl8MDtpZighZClaUShhKX1lbHNle2lmKCEoY1syMjI3XXwwKSliPTA7ZWxzZSBiPWNSKGNbMjIyN118MCl8MDtCYig4ODkyKTthPWNbMjIyMl18MDtpZihhKWRve2lmKChjW2ErNzY+PjJdfDApPi0xKWQ9WVEoYSl8MDtlbHNlIGQ9MDtpZigoY1thKzIwPj4yXXwwKT4+PjA+KGNbYSsyOD4+Ml18MCk+Pj4wKWI9RFIoYSl8MHxiO2lmKGQpWlEoYSk7YT1jW2ErNTY+PjJdfDB9d2hpbGUoKGF8MCkhPTApO3ViKDg4OTIpfXdoaWxlKDApO3JldHVybiBifDB9ZnVuY3Rpb24gZFIoYSxiLGQsZSl7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wO3I9aTtpPWkrMjA4fDA7bz1yKzh8MDtwPXI7Zj1fKGQsYil8MDtuPXA7Y1tuPj4yXT0xO2Nbbis0Pj4yXT0wO2lmKGYpe2o9Zi1kfDA7Y1tvKzQ+PjJdPWQ7Y1tvPj4yXT1kO2c9ZDtiPWQ7aD0yO3doaWxlKDEpe2I9YitkK2d8MDtjW28rKGg8PDIpPj4yXT1iO2lmKGI+Pj4wPGY+Pj4wKXtuPWc7Zz1iO2g9aCsxfDA7Yj1ufWVsc2UgYnJlYWt9bj0wLWR8MDtrPWEranwwO209cCs0fDA7aWYoKGp8MCk+MCl7aj1rO2Y9MTtoPTE7d2hpbGUoMSl7ZG8gaWYoKGYmM3wwKT09Myl7RVIoYSxkLGUsaCxvKTtsPWNbbT4+Ml18MDtiPWw8PDMwfChjW3A+PjJdfDApPj4+MjtjW3A+PjJdPWI7Y1ttPj4yXT1sPj4+MjtoPWgrMnwwfWVsc2V7Yj1oKy0xfDA7aWYoKGNbbysoYjw8Mik+PjJdfDApPj4+MDwoai1hfDApPj4+MClFUihhLGQsZSxoLG8pO2Vsc2UgRlIoYSxkLGUscCxoLDAsbyk7aWYoKGh8MCk9PTEpe2I9Y1twPj4yXXwwO2NbbT4+Ml09Yj4+PjMxfGNbbT4+Ml08PDE7Yj1iPDwxO2NbcD4+Ml09YjtoPTA7YnJlYWt9aWYoYj4+PjA+MzEpe2Y9Y1twPj4yXXwwO2NbbT4+Ml09ZjtjW3A+PjJdPTA7Yj1oKy0zM3wwO2c9MH1lbHNle2Y9Y1ttPj4yXXwwO2c9Y1twPj4yXXwwfWNbbT4+Ml09Zz4+PigzMi1ifDApfGY8PGI7Yj1nPDxiO2NbcD4+Ml09YjtoPTF9d2hpbGUoMCk7Zj1ifDE7Y1twPj4yXT1mO2I9YStkfDA7aWYoYj4+PjA+PWs+Pj4wKXtmPWI7YnJlYWt9ZWxzZSBhPWJ9fWVsc2V7Zj1hO2g9MX1GUihmLGQsZSxwLGgsMCxvKTtsPXArNHwwO2I9Y1twPj4yXXwwO2lmKCEoKGh8MCk9PTEmKGJ8MCk9PTEmKGNbbD4+Ml18MCk9PTApKXtnPWY7d2hpbGUoMSl7aWYoKGh8MCk8Mil7Zj1iKy0xfDA7ZG8gaWYoZil7aWYoIShmJjEpKXtqPWY7Zj0wO2Rve2Y9ZisxfDA7aj1qPj4+MX13aGlsZSgoaiYxfDApPT0wKTtpZighZilxPTI0fWVsc2UgcT0yNDtpZigocXwwKT09MjQpe3E9MDtrPWNbbT4+Ml18MDtpZighayl7Zj02NDtxPTMwO2JyZWFrfWlmKCEoayYxKSl7aj1rO2Y9MH1lbHNle2E9MDtqPWs7Zj0wO2JyZWFrfXdoaWxlKDEpe2E9ZisxfDA7aj1qPj4+MTtpZihqJjEpe2o9YTticmVha31lbHNlIGY9YX1pZighail7YT0wO2o9aztmPTA7YnJlYWt9ZWxzZSBmPWYrMzN8MH1pZihmPj4+MD4zMSlxPTMwO2Vsc2V7YT1mO2o9Y1ttPj4yXXwwfX1lbHNle2Y9MzI7cT0zMH13aGlsZSgwKTtpZigocXwwKT09MzApe3E9MDtiPWNbbT4+Ml18MDtjW3A+PjJdPWI7Y1ttPj4yXT0wO2E9ZistMzJ8MDtqPTB9Y1twPj4yXT1qPDwzMi1hfGI+Pj5hO2NbbT4+Ml09aj4+PmE7Zz1nK258MDtmPWYraHwwfWVsc2V7YT1iPj4+MzA7az1hfGNbbT4+Ml08PDI7Zj1oKy0yfDA7Y1twPj4yXT0oYjw8MSYyMTQ3NDgzNjQ2fGE8PDMxKV4zO2NbbT4+Ml09az4+PjE7RlIoZysoMC0oKGNbbysoZjw8Mik+PjJdfDApK2QpKXwwLGQsZSxwLGgrLTF8MCwxLG8pO2s9Y1twPj4yXXwwO2NbbT4+Ml09az4+PjMxfGNbbT4+Ml08PDE7Y1twPj4yXT1rPDwxfDE7Zz1nK258MDtGUihnLGQsZSxwLGYsMSxvKX1iPWNbcD4+Ml18MDtpZigoZnwwKT09MSYoYnwwKT09MSYoY1tsPj4yXXwwKT09MClicmVhaztlbHNlIGg9Zn19fWk9cjtyZXR1cm59ZnVuY3Rpb24gZVIoYixjLGQpe2I9YnwwO2M9Y3wwO2Q9ZHwwO3ZhciBlPTAsZj0wO2E6ZG8gaWYoIWQpZD0wO2Vsc2V7Zj1kO2U9Yjt3aGlsZSgxKXtiPWFbZT4+MF18MDtkPWFbYz4+MF18MDtpZihiPDwyND4+MjQhPWQ8PDI0Pj4yNClicmVhaztmPWYrLTF8MDtpZighZil7ZD0wO2JyZWFrIGF9ZWxzZXtlPWUrMXwwO2M9YysxfDB9fWQ9KGImMjU1KS0oZCYyNTUpfDB9d2hpbGUoMCk7cmV0dXJuIGR8MH1mdW5jdGlvbiBmUihiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wO2U9ZDthOmRvIGlmKCEoKGVeYikmMykpe2lmKGUmMylkb3tlPWFbZD4+MF18MDthW2I+PjBdPWU7aWYoIShlPDwyND4+MjQpKWJyZWFrIGE7ZD1kKzF8MDtiPWIrMXwwfXdoaWxlKChkJjN8MCkhPTApO2U9Y1tkPj4yXXwwO2lmKCEoKGUmLTIxMzkwNjIxNDReLTIxMzkwNjIxNDQpJmUrLTE2ODQzMDA5KSl7Zj1iO3doaWxlKDEpe2Q9ZCs0fDA7Yj1mKzR8MDtjW2Y+PjJdPWU7ZT1jW2Q+PjJdfDA7aWYoKGUmLTIxMzkwNjIxNDReLTIxMzkwNjIxNDQpJmUrLTE2ODQzMDA5KWJyZWFrO2Vsc2UgZj1ifX1mPTh9ZWxzZSBmPTg7d2hpbGUoMCk7aWYoKGZ8MCk9PTgpe2Y9YVtkPj4wXXwwO2FbYj4+MF09ZjtpZihmPDwyND4+MjQpZG97ZD1kKzF8MDtiPWIrMXwwO2Y9YVtkPj4wXXwwO2FbYj4+MF09Zn13aGlsZShmPDwyND4+MjQhPTApfXJldHVybiBifDB9ZnVuY3Rpb24gZ1IoYixkLGUpe2I9YnwwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MDtnPWQ7ZG8gaWYoISgoZ15iKSYzKSl7Zj0oZXwwKSE9MDthOmRvIGlmKGYmKGcmM3wwKSE9MCl3aGlsZSgxKXtnPWFbZD4+MF18MDthW2I+PjBdPWc7aWYoIShnPDwyND4+MjQpKWJyZWFrIGE7ZT1lKy0xfDA7ZD1kKzF8MDtiPWIrMXwwO2Y9KGV8MCkhPTA7aWYoIShmJihkJjN8MCkhPTApKXtoPTU7YnJlYWt9fWVsc2UgaD01O3doaWxlKDApO2lmKChofDApPT01KWlmKCFmKXtlPTA7YnJlYWt9aWYoYVtkPj4wXXwwKXtiOmRvIGlmKGU+Pj4wPjMpZG97Zj1jW2Q+PjJdfDA7aWYoKGYmLTIxMzkwNjIxNDReLTIxMzkwNjIxNDQpJmYrLTE2ODQzMDA5KWJyZWFrIGI7Y1tiPj4yXT1mO2U9ZSstNHwwO2Q9ZCs0fDA7Yj1iKzR8MH13aGlsZShlPj4+MD4zKTt3aGlsZSgwKTtoPTExfX1lbHNlIGg9MTE7d2hpbGUoMCk7YzpkbyBpZigoaHwwKT09MTEpaWYoIWUpZT0wO2Vsc2Ugd2hpbGUoMSl7aD1hW2Q+PjBdfDA7YVtiPj4wXT1oO2lmKCEoaDw8MjQ+PjI0KSlicmVhayBjO2U9ZSstMXwwO2I9YisxfDA7aWYoIWUpe2U9MDticmVha31lbHNlIGQ9ZCsxfDB9d2hpbGUoMCk7VlIoYnwwLDAsZXwwKXwwO3JldHVybiBifDB9ZnVuY3Rpb24gaFIoYixjKXtiPWJ8MDtjPWN8MDt2YXIgZD0wLGU9MDtlPWFbYj4+MF18MDtkPWFbYz4+MF18MDtpZihlPDwyND4+MjQ9PTA/MTplPDwyND4+MjQhPWQ8PDI0Pj4yNCljPWU7ZWxzZXtkb3tiPWIrMXwwO2M9YysxfDA7ZT1hW2I+PjBdfDA7ZD1hW2M+PjBdfDB9d2hpbGUoIShlPDwyND4+MjQ9PTA/MTplPDwyND4+MjQhPWQ8PDI0Pj4yNCkpO2M9ZX1yZXR1cm4gKGMmMjU1KS0oZCYyNTUpfDB9ZnVuY3Rpb24gaVIoYSxiKXthPWF8MDtiPWJ8MDtmUihhLGIpfDA7cmV0dXJuIGF8MH1mdW5jdGlvbiBqUihhKXthPWF8MDt2YXIgYj0wLGM9MDtjPShrUihhKXwwKSsxfDA7Yj1KUihjKXwwO2lmKCFiKWI9MDtlbHNlIFRSKGJ8MCxhfDAsY3wwKXwwO3JldHVybiBifDB9ZnVuY3Rpb24ga1IoYil7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wO2Y9YjthOmRvIGlmKCEoZiYzKSllPTQ7ZWxzZXtkPWI7Yj1mO3doaWxlKDEpe2lmKCEoYVtkPj4wXXwwKSlicmVhayBhO2Q9ZCsxfDA7Yj1kO2lmKCEoYiYzKSl7Yj1kO2U9NDticmVha319fXdoaWxlKDApO2lmKChlfDApPT00KXt3aGlsZSgxKXtkPWNbYj4+Ml18MDtpZighKChkJi0yMTM5MDYyMTQ0Xi0yMTM5MDYyMTQ0KSZkKy0xNjg0MzAwOSkpYj1iKzR8MDtlbHNlIGJyZWFrfWlmKChkJjI1NSk8PDI0Pj4yNClkbyBiPWIrMXwwO3doaWxlKChhW2I+PjBdfDApIT0wKX1yZXR1cm4gYi1mfDB9ZnVuY3Rpb24gbFIoYixjLGUpe2I9YnwwO2M9Y3wwO2U9ZXwwO3ZhciBmPTAsZz0wO2lmKCFlKWM9MDtlbHNle2Y9YVtiPj4wXXwwO2E6ZG8gaWYoIShmPDwyND4+MjQpKWY9MDtlbHNlIHdoaWxlKDEpe2U9ZSstMXwwO2c9YVtjPj4wXXwwO2lmKCEoZjw8MjQ+PjI0PT1nPDwyND4+MjQmKChlfDApIT0wJmc8PDI0Pj4yNCE9MCkpKWJyZWFrIGE7Yj1iKzF8MDtjPWMrMXwwO2Y9YVtiPj4wXXwwO2lmKCEoZjw8MjQ+PjI0KSl7Zj0wO2JyZWFrfX13aGlsZSgwKTtjPShmJjI1NSktKGRbYz4+MF18MCl8MH1yZXR1cm4gY3wwfWZ1bmN0aW9uIG1SKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtnUihhLGIsYyl8MDtyZXR1cm4gYXwwfWZ1bmN0aW9uIG5SKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MCxlPTA7ZD1pO2k9aSsxNnwwO2U9ZDtjW2U+PjJdPWE7Y1tlKzQ+PjJdPWI7YT1HUShzYigzMyxlfDApfDApfDA7aT1kO3JldHVybiBhfDB9ZnVuY3Rpb24gb1IoYSl7YT1hfDA7dmFyIGI9MCxkPTA7Yj1pO2k9aSsxNnwwO2Q9YjtjW2Q+PjJdPWE7YT1DYig2LGR8MCl8MDthPUdRKChhfDApPT0tND8tMTE1OmEpfDA7aT1iO3JldHVybiBhfDB9ZnVuY3Rpb24gcFIoYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wO2o9aTtpPWkrNjR8MDtoPWorMjR8MDtnPWorMTZ8MDtlPWo7Zj1qKzM2fDA7Y1tlPj4yXT1hO2NbZSs0Pj4yXT1iO2NbZSs4Pj4yXT1kO2U9TGIoMjA3LGV8MCl8MDtpZigoZXwwKT09LTk/KGNbZz4+Ml09YSxjW2crND4+Ml09MSwobWIoMjIxLGd8MCl8MCk+PTApOjApe0ZRKGYsYSk7Y1toPj4yXT1mO2NbaCs0Pj4yXT1iO2NbaCs4Pj4yXT1kO2U9R1EoaGIoMjEyLGh8MCl8MCl8MH1lbHNlIGU9R1EoZSl8MDtpPWo7cmV0dXJuIGV8MH1mdW5jdGlvbiBxUihhKXthPWF8MDt2YXIgYj0wLGQ9MDtiPWk7aT1pKzE2fDA7ZD1iO2NbZD4+Ml09YTthPUdRKE9hKDExOCxkfDApfDApfDA7aT1iO3JldHVybiBhfDB9ZnVuY3Rpb24gclIoYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MDtkPWk7aT1pKzE2fDA7ZT1kO2NbZT4+Ml09YTtjW2UrND4+Ml09MDtjW2UrOD4+Ml09YjtjW2UrMTI+PjJdPSgoYnwwKTwwKTw8MzE+PjMxO2I9R1EoZ2IoMTk0LGV8MCl8MCl8MDtpPWQ7cmV0dXJuIGJ8MH1mdW5jdGlvbiBzUihhLGIpe2E9YXwwO2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTA7Zz1pO2k9aSs0MTEyfDA7ZT1nO2Q9Zys4fDA7aWYoYSlpZighYil7Y1soQlEoKXwwKT4+Ml09MjI7YT0wfWVsc2UgZj00O2Vsc2V7Yj00MDk2O2E9ZDtmPTR9aWYoKGZ8MCk9PTQpe2NbZT4+Ml09YTtjW2UrND4+Ml09YjtpZigoR1EoUmEoMTgzLGV8MCl8MCl8MCk+PTApe2lmKChhfDApPT0oZHwwKSlhPWpSKGQpfDB9ZWxzZSBhPTB9aT1nO3JldHVybiBhfDB9ZnVuY3Rpb24gdFIoKXt2YXIgYT0wLGI9MDtiPWk7aT1pKzE2fDA7YT1wYigyMDEsYnwwKXwwO2k9YjtyZXR1cm4gYXwwfWZ1bmN0aW9uIHVSKCl7dmFyIGE9MCxiPTA7Yj1pO2k9aSsxNnwwO2E9UWEoMjAsYnwwKXwwO2k9YjtyZXR1cm4gYXwwfWZ1bmN0aW9uIHZSKGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTA7Zj1pO2k9aSszMnwwO2c9ZjtlPWYrMjB8MDtjW2c+PjJdPWE7Y1tnKzQ+PjJdPTA7Y1tnKzg+PjJdPWI7Y1tnKzEyPj4yXT1lO2NbZysxNj4+Ml09ZDtkPShHUSh2YigxNDAsZ3wwKXwwKXwwKSE9MDtpPWY7cmV0dXJuIChkPy0xOmNbZT4+Ml18MCl8MH1mdW5jdGlvbiB3UihhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTA7ZT1pO2k9aSsxNnwwO2Y9ZTtjW2Y+PjJdPWE7Y1tmKzQ+PjJdPWI7Y1tmKzg+PjJdPWQ7YT1HUShBYigzLGZ8MCl8MCl8MDtpPWU7cmV0dXJuIGF8MH1mdW5jdGlvbiB4UihhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTA7ZT1pO2k9aSsxNnwwO2Y9ZTtjW2Y+PjJdPWE7Y1tmKzQ+PjJdPWI7Y1tmKzg+PjJdPWQ7YT1HUShFYSg4NSxmfDApfDApfDA7aT1lO3JldHVybiBhfDB9ZnVuY3Rpb24geVIoYSl7YT1hfDA7dmFyIGI9MCxkPTA7Yj1pO2k9aSsxNnwwO2Q9YjtjW2Q+PjJdPWE7YT1HUShOYSg0MCxkfDApfDApfDA7aT1iO3JldHVybiBhfDB9ZnVuY3Rpb24gelIoYSl7YT1hfDA7dmFyIGI9MCxkPTA7ZD1pO2k9aSsxNnwwO2I9ZDtjW2I+PjJdPWE7Y1tiKzQ+PjJdPTA7YT0oa2IoYnwwLGJ8MCl8MCk9PTA7aT1kO3JldHVybiAoYT8wOmNbYj4+Ml18MCl8MH1mdW5jdGlvbiBBUihhKXthPWF8MDt2YXIgYj0wLGQ9MDtiPWk7aT1pKzE2fDA7ZD1iO2NbZD4+Ml09YTthPUdRKHliKDEwLGR8MCl8MCl8MDtpPWI7cmV0dXJuIGF8MH1mdW5jdGlvbiBCUihhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTA7ZT1pO2k9aSsxNnwwO2Y9ZTtjW2Y+PjJdPWE7Y1tmKzQ+PjJdPWI7Y1tmKzg+PjJdPWQ7YT1HUShFYig0LGZ8MCl8MCl8MDtpPWU7cmV0dXJuIGF8MH1mdW5jdGlvbiBDUihhKXthPWF8MDtpZighKGNbYSs2OD4+Ml18MCkpWlEoYSk7cmV0dXJufWZ1bmN0aW9uIERSKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTAsZz0wLGg9MDtiPWErMjB8MDtnPWErMjh8MDtpZigoY1tiPj4yXXwwKT4+PjA+KGNbZz4+Ml18MCk+Pj4wPyhPYltjW2ErMzY+PjJdJjI1NV0oYSwwLDApfDAsKGNbYj4+Ml18MCk9PTApOjApYj0tMTtlbHNle2g9YSs0fDA7ZD1jW2g+PjJdfDA7ZT1hKzh8MDtmPWNbZT4+Ml18MDtpZihkPj4+MDxmPj4+MClPYltjW2ErNDA+PjJdJjI1NV0oYSxkLWZ8MCwxKXwwO2NbYSsxNj4+Ml09MDtjW2c+PjJdPTA7Y1tiPj4yXT0wO2NbZT4+Ml09MDtjW2g+PjJdPTA7Yj0wfXJldHVybiBifDB9ZnVuY3Rpb24gRVIoYSxiLGQsZSxmKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTA7cD1pO2k9aSsyNDB8MDtvPXA7Y1tvPj4yXT1hO2E6ZG8gaWYoKGV8MCk+MSl7bj0wLWJ8MDtnPWU7aD1hO2s9YTtsPTE7d2hpbGUoMSl7YT1oK258MDttPWcrLTJ8MDtqPWgrKDAtKChjW2YrKG08PDIpPj4yXXwwKStiKSl8MDtpZigoWWJbZCYyNTVdKGssail8MCk+LTE/KFliW2QmMjU1XShrLGEpfDApPi0xOjApe2U9bDticmVhayBhfWU9bCsxfDA7aD1vKyhsPDwyKXwwO2lmKChZYltkJjI1NV0oaixhKXwwKT4tMSl7Y1toPj4yXT1qO2E9ajtnPWcrLTF8MH1lbHNle2NbaD4+Ml09YTtnPW19aWYoKGd8MCk8PTEpYnJlYWsgYTtoPWE7az1jW28+PjJdfDA7bD1lfX1lbHNlIGU9MTt3aGlsZSgwKTtJUihiLG8sZSk7aT1wO3JldHVybn1mdW5jdGlvbiBGUihhLGIsZCxlLGYsZyxoKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDt2YXIgaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTA7cj1pO2k9aSsyNDB8MDtwPXI7az1jW2U+PjJdfDA7ZT1jW2UrND4+Ml18MDtjW3A+PjJdPWE7bz0wLWJ8MDthOmRvIGlmKChlfDApIT0wfChrfDApIT0xPyhqPWErKDAtKGNbaCsoZjw8Mik+PjJdfDApKXwwLChZYltkJjI1NV0oaixhKXwwKT49MSk6MCl7Zz0oZ3wwKT09MDtuPWo7bD1rO209ZTtqPTE7d2hpbGUoMSl7aWYoZyYoZnwwKT4xKXtlPWNbaCsoZistMjw8Mik+PjJdfDA7aWYoKFliW2QmMjU1XShhK298MCxuKXwwKT4tMSl7Zz1mO2U9ajtxPTIwO2JyZWFrIGF9aWYoKFliW2QmMjU1XShhKygwLShlK2IpKXwwLG4pfDApPi0xKXtnPWY7ZT1qO3E9MjA7YnJlYWsgYX19ZT1qKzF8MDtjW3ArKGo8PDIpPj4yXT1uO2c9bCstMXwwO2RvIGlmKGcpe2lmKCEoZyYxKSl7YT1nO2c9MDtkb3tnPWcrMXwwO2E9YT4+PjF9d2hpbGUoKGEmMXwwKT09MCk7aWYoIWcpcT0xMX1lbHNlIHE9MTE7aWYoKHF8MCk9PTExKXtxPTA7aWYoIW0pe2c9NjQ7cT0xNjticmVha31pZighKG0mMSkpe2E9bTtnPTB9ZWxzZXtrPTA7YT1sO2o9bTtnPTA7YnJlYWt9d2hpbGUoMSl7aj1nKzF8MDthPWE+Pj4xO2lmKGEmMSl7YT1qO2JyZWFrfWVsc2UgZz1qfWlmKCFhKXtrPTA7YT1sO2o9bTtnPTA7YnJlYWt9ZWxzZSBnPWcrMzN8MH1pZihnPj4+MD4zMSlxPTE2O2Vsc2V7az1nO2E9bDtqPW19fWVsc2V7Zz0zMjtxPTE2fXdoaWxlKDApO2lmKChxfDApPT0xNil7cT0wO2s9ZystMzJ8MDthPW07aj0wfWw9ajw8MzIta3xhPj4+azttPWo+Pj5rO2c9ZytmfDA7aWYoISgobXwwKSE9MHwobHwwKSE9MSkpe2E9bjtxPTIwO2JyZWFrIGF9YT1uKygwLShjW2grKGc8PDIpPj4yXXwwKSl8MDtpZigoWWJbZCYyNTVdKGEsY1twPj4yXXwwKXwwKTwxKXthPW47Zj1nO2c9MDtxPTE5O2JyZWFrfWVsc2V7az1uO2Y9ZztnPTE7bj1hO2o9ZTthPWt9fX1lbHNle2U9MTtxPTE5fXdoaWxlKDApO2lmKChxfDApPT0xOT8oZ3wwKT09MDowKXtnPWY7cT0yMH1pZigocXwwKT09MjApe0lSKGIscCxlKTtFUihhLGIsZCxnLGgpfWk9cjtyZXR1cm59ZnVuY3Rpb24gR1IoYSl7YT1hfDA7cmV0dXJufWZ1bmN0aW9uIEhSKCl7cmV0dXJufWZ1bmN0aW9uIElSKGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MDtoPWk7aT1pKzI1NnwwO2U9aDthOmRvIGlmKChkfDApPj0yPyhnPWIrKGQ8PDIpfDAsY1tnPj4yXT1lLChhfDApIT0wKTowKXdoaWxlKDEpe2Y9YT4+PjA+MjU2PzI1NjphO1RSKGV8MCxjW2I+PjJdfDAsZnwwKXwwO2U9MDtkb3tqPWIrKGU8PDIpfDA7ZT1lKzF8MDtUUihjW2o+PjJdfDAsY1tiKyhlPDwyKT4+Ml18MCxmfDApfDA7Y1tqPj4yXT0oY1tqPj4yXXwwKStmfXdoaWxlKChlfDApIT0oZHwwKSk7aWYoKGF8MCk9PShmfDApKWJyZWFrIGE7YT1hLWZ8MDtlPWNbZz4+Ml18MH13aGlsZSgwKTtpPWg7cmV0dXJufWZ1bmN0aW9uIEpSKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTAsZz0wLGg9MCxpPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTAsRT0wLEY9MCxHPTAsSD0wLEk9MCxKPTAsSz0wLEw9MCxNPTA7ZG8gaWYoYT4+PjA8MjQ1KXtvPWE+Pj4wPDExPzE2OmErMTEmLTg7YT1vPj4+MztpPWNbMjI1N118MDtkPWk+Pj5hO2lmKGQmMyl7YT0oZCYxXjEpK2F8MDtlPWE8PDE7ZD05MDY4KyhlPDwyKXwwO2U9OTA2OCsoZSsyPDwyKXwwO2Y9Y1tlPj4yXXwwO2c9Zis4fDA7aD1jW2c+PjJdfDA7ZG8gaWYoKGR8MCkhPShofDApKXtpZihoPj4+MDwoY1syMjYxXXwwKT4+PjApTWEoKTtiPWgrMTJ8MDtpZigoY1tiPj4yXXwwKT09KGZ8MCkpe2NbYj4+Ml09ZDtjW2U+PjJdPWg7YnJlYWt9ZWxzZSBNYSgpfWVsc2UgY1syMjU3XT1pJn4oMTw8YSk7d2hpbGUoMCk7TT1hPDwzO2NbZis0Pj4yXT1NfDM7TT1mKyhNfDQpfDA7Y1tNPj4yXT1jW00+PjJdfDE7TT1nO3JldHVybiBNfDB9aD1jWzIyNTldfDA7aWYobz4+PjA+aD4+PjApe2lmKGQpe2U9Mjw8YTtlPWQ8PGEmKGV8MC1lKTtlPShlJjAtZSkrLTF8MDtqPWU+Pj4xMiYxNjtlPWU+Pj5qO2Y9ZT4+PjUmODtlPWU+Pj5mO2c9ZT4+PjImNDtlPWU+Pj5nO2Q9ZT4+PjEmMjtlPWU+Pj5kO2E9ZT4+PjEmMTthPShmfGp8Z3xkfGEpKyhlPj4+YSl8MDtlPWE8PDE7ZD05MDY4KyhlPDwyKXwwO2U9OTA2OCsoZSsyPDwyKXwwO2c9Y1tlPj4yXXwwO2o9Zys4fDA7Zj1jW2o+PjJdfDA7ZG8gaWYoKGR8MCkhPShmfDApKXtpZihmPj4+MDwoY1syMjYxXXwwKT4+PjApTWEoKTtiPWYrMTJ8MDtpZigoY1tiPj4yXXwwKT09KGd8MCkpe2NbYj4+Ml09ZDtjW2U+PjJdPWY7az1jWzIyNTldfDA7YnJlYWt9ZWxzZSBNYSgpfWVsc2V7Y1syMjU3XT1pJn4oMTw8YSk7az1ofXdoaWxlKDApO009YTw8MztoPU0tb3wwO2NbZys0Pj4yXT1vfDM7aT1nK298MDtjW2crKG98NCk+PjJdPWh8MTtjW2crTT4+Ml09aDtpZihrKXtmPWNbMjI2Ml18MDtkPWs+Pj4zO2I9ZDw8MTtlPTkwNjgrKGI8PDIpfDA7YT1jWzIyNTddfDA7ZD0xPDxkO2lmKGEmZCl7YT05MDY4KyhiKzI8PDIpfDA7Yj1jW2E+PjJdfDA7aWYoYj4+PjA8KGNbMjI2MV18MCk+Pj4wKU1hKCk7ZWxzZXtsPWE7bT1ifX1lbHNle2NbMjI1N109YXxkO2w9OTA2OCsoYisyPDwyKXwwO209ZX1jW2w+PjJdPWY7Y1ttKzEyPj4yXT1mO2NbZis4Pj4yXT1tO2NbZisxMj4+Ml09ZX1jWzIyNTldPWg7Y1syMjYyXT1pO009ajtyZXR1cm4gTXwwfWE9Y1syMjU4XXwwO2lmKGEpe2Q9KGEmMC1hKSstMXwwO0w9ZD4+PjEyJjE2O2Q9ZD4+Pkw7Sz1kPj4+NSY4O2Q9ZD4+Pks7TT1kPj4+MiY0O2Q9ZD4+Pk07YT1kPj4+MSYyO2Q9ZD4+PmE7ZT1kPj4+MSYxO2U9Y1s5MzMyKygoS3xMfE18YXxlKSsoZD4+PmUpPDwyKT4+Ml18MDtkPShjW2UrND4+Ml0mLTgpLW98MDthPWU7d2hpbGUoMSl7Yj1jW2ErMTY+PjJdfDA7aWYoIWIpe2I9Y1thKzIwPj4yXXwwO2lmKCFiKXtqPWQ7YnJlYWt9fWE9KGNbYis0Pj4yXSYtOCktb3wwO009YT4+PjA8ZD4+PjA7ZD1NP2E6ZDthPWI7ZT1NP2I6ZX1nPWNbMjI2MV18MDtpZihlPj4+MDxnPj4+MClNYSgpO2k9ZStvfDA7aWYoZT4+PjA+PWk+Pj4wKU1hKCk7aD1jW2UrMjQ+PjJdfDA7ZD1jW2UrMTI+PjJdfDA7ZG8gaWYoKGR8MCk9PShlfDApKXthPWUrMjB8MDtiPWNbYT4+Ml18MDtpZighYil7YT1lKzE2fDA7Yj1jW2E+PjJdfDA7aWYoIWIpe249MDticmVha319d2hpbGUoMSl7ZD1iKzIwfDA7Zj1jW2Q+PjJdfDA7aWYoZil7Yj1mO2E9ZDtjb250aW51ZX1kPWIrMTZ8MDtmPWNbZD4+Ml18MDtpZighZilicmVhaztlbHNle2I9ZjthPWR9fWlmKGE+Pj4wPGc+Pj4wKU1hKCk7ZWxzZXtjW2E+PjJdPTA7bj1iO2JyZWFrfX1lbHNle2Y9Y1tlKzg+PjJdfDA7aWYoZj4+PjA8Zz4+PjApTWEoKTtiPWYrMTJ8MDtpZigoY1tiPj4yXXwwKSE9KGV8MCkpTWEoKTthPWQrOHwwO2lmKChjW2E+PjJdfDApPT0oZXwwKSl7Y1tiPj4yXT1kO2NbYT4+Ml09ZjtuPWQ7YnJlYWt9ZWxzZSBNYSgpfXdoaWxlKDApO2RvIGlmKGgpe2I9Y1tlKzI4Pj4yXXwwO2E9OTMzMisoYjw8Mil8MDtpZigoZXwwKT09KGNbYT4+Ml18MCkpe2NbYT4+Ml09bjtpZighbil7Y1syMjU4XT1jWzIyNThdJn4oMTw8Yik7YnJlYWt9fWVsc2V7aWYoaD4+PjA8KGNbMjI2MV18MCk+Pj4wKU1hKCk7Yj1oKzE2fDA7aWYoKGNbYj4+Ml18MCk9PShlfDApKWNbYj4+Ml09bjtlbHNlIGNbaCsyMD4+Ml09bjtpZighbilicmVha31hPWNbMjI2MV18MDtpZihuPj4+MDxhPj4+MClNYSgpO2NbbisyND4+Ml09aDtiPWNbZSsxNj4+Ml18MDtkbyBpZihiKWlmKGI+Pj4wPGE+Pj4wKU1hKCk7ZWxzZXtjW24rMTY+PjJdPWI7Y1tiKzI0Pj4yXT1uO2JyZWFrfXdoaWxlKDApO2I9Y1tlKzIwPj4yXXwwO2lmKGIpaWYoYj4+PjA8KGNbMjI2MV18MCk+Pj4wKU1hKCk7ZWxzZXtjW24rMjA+PjJdPWI7Y1tiKzI0Pj4yXT1uO2JyZWFrfX13aGlsZSgwKTtpZihqPj4+MDwxNil7TT1qK298MDtjW2UrND4+Ml09TXwzO009ZSsoTSs0KXwwO2NbTT4+Ml09Y1tNPj4yXXwxfWVsc2V7Y1tlKzQ+PjJdPW98MztjW2UrKG98NCk+PjJdPWp8MTtjW2UrKGorbyk+PjJdPWo7Yj1jWzIyNTldfDA7aWYoYil7Zz1jWzIyNjJdfDA7ZD1iPj4+MztiPWQ8PDE7Zj05MDY4KyhiPDwyKXwwO2E9Y1syMjU3XXwwO2Q9MTw8ZDtpZihhJmQpe2I9OTA2OCsoYisyPDwyKXwwO2E9Y1tiPj4yXXwwO2lmKGE+Pj4wPChjWzIyNjFdfDApPj4+MClNYSgpO2Vsc2V7cD1iO3E9YX19ZWxzZXtjWzIyNTddPWF8ZDtwPTkwNjgrKGIrMjw8Mil8MDtxPWZ9Y1twPj4yXT1nO2NbcSsxMj4+Ml09ZztjW2crOD4+Ml09cTtjW2crMTI+PjJdPWZ9Y1syMjU5XT1qO2NbMjI2Ml09aX1NPWUrOHwwO3JldHVybiBNfDB9ZWxzZSBxPW99ZWxzZSBxPW99ZWxzZSBpZihhPj4+MDw9NDI5NDk2NzIzMSl7YT1hKzExfDA7bT1hJi04O2w9Y1syMjU4XXwwO2lmKGwpe2Q9MC1tfDA7YT1hPj4+ODtpZihhKWlmKG0+Pj4wPjE2Nzc3MjE1KWs9MzE7ZWxzZXtxPShhKzEwNDgzMjB8MCk+Pj4xNiY4O3Y9YTw8cTtwPSh2KzUyMDE5MnwwKT4+PjE2JjQ7dj12PDxwO2s9KHYrMjQ1NzYwfDApPj4+MTYmMjtrPTE0LShwfHF8aykrKHY8PGs+Pj4xNSl8MDtrPW0+Pj4oays3fDApJjF8azw8MX1lbHNlIGs9MDthPWNbOTMzMisoazw8Mik+PjJdfDA7YTpkbyBpZighYSl7Zj0wO2E9MDt2PTg2fWVsc2V7aD1kO2Y9MDtpPW08PCgoa3wwKT09MzE/MDoyNS0oaz4+PjEpfDApO2o9YTthPTA7d2hpbGUoMSl7Zz1jW2orND4+Ml0mLTg7ZD1nLW18MDtpZihkPj4+MDxoPj4+MClpZigoZ3wwKT09KG18MCkpe2c9ajthPWo7dj05MDticmVhayBhfWVsc2UgYT1qO2Vsc2UgZD1oO3Y9Y1tqKzIwPj4yXXwwO2o9Y1tqKzE2KyhpPj4+MzE8PDIpPj4yXXwwO2Y9KHZ8MCk9PTB8KHZ8MCk9PShqfDApP2Y6djtpZighail7dj04NjticmVha31lbHNle2g9ZDtpPWk8PDF9fX13aGlsZSgwKTtpZigodnwwKT09ODYpe2lmKChmfDApPT0wJihhfDApPT0wKXthPTI8PGs7YT1sJihhfDAtYSk7aWYoIWEpe3E9bTticmVha31hPShhJjAtYSkrLTF8MDtuPWE+Pj4xMiYxNjthPWE+Pj5uO2w9YT4+PjUmODthPWE+Pj5sO3A9YT4+PjImNDthPWE+Pj5wO3E9YT4+PjEmMjthPWE+Pj5xO2Y9YT4+PjEmMTtmPWNbOTMzMisoKGx8bnxwfHF8ZikrKGE+Pj5mKTw8Mik+PjJdfDA7YT0wfWlmKCFmKXtpPWQ7aj1hfWVsc2V7Zz1mO3Y9OTB9fWlmKCh2fDApPT05MCl3aGlsZSgxKXt2PTA7cT0oY1tnKzQ+PjJdJi04KS1tfDA7Zj1xPj4+MDxkPj4+MDtkPWY/cTpkO2E9Zj9nOmE7Zj1jW2crMTY+PjJdfDA7aWYoZil7Zz1mO3Y9OTA7Y29udGludWV9Zz1jW2crMjA+PjJdfDA7aWYoIWcpe2k9ZDtqPWE7YnJlYWt9ZWxzZSB2PTkwfWlmKChqfDApIT0wP2k+Pj4wPCgoY1syMjU5XXwwKS1tfDApPj4+MDowKXtmPWNbMjI2MV18MDtpZihqPj4+MDxmPj4+MClNYSgpO2g9aittfDA7aWYoaj4+PjA+PWg+Pj4wKU1hKCk7Zz1jW2orMjQ+PjJdfDA7ZD1jW2orMTI+PjJdfDA7ZG8gaWYoKGR8MCk9PShqfDApKXthPWorMjB8MDtiPWNbYT4+Ml18MDtpZighYil7YT1qKzE2fDA7Yj1jW2E+PjJdfDA7aWYoIWIpe289MDticmVha319d2hpbGUoMSl7ZD1iKzIwfDA7ZT1jW2Q+PjJdfDA7aWYoZSl7Yj1lO2E9ZDtjb250aW51ZX1kPWIrMTZ8MDtlPWNbZD4+Ml18MDtpZighZSlicmVhaztlbHNle2I9ZTthPWR9fWlmKGE+Pj4wPGY+Pj4wKU1hKCk7ZWxzZXtjW2E+PjJdPTA7bz1iO2JyZWFrfX1lbHNle2U9Y1tqKzg+PjJdfDA7aWYoZT4+PjA8Zj4+PjApTWEoKTtiPWUrMTJ8MDtpZigoY1tiPj4yXXwwKSE9KGp8MCkpTWEoKTthPWQrOHwwO2lmKChjW2E+PjJdfDApPT0oanwwKSl7Y1tiPj4yXT1kO2NbYT4+Ml09ZTtvPWQ7YnJlYWt9ZWxzZSBNYSgpfXdoaWxlKDApO2RvIGlmKGcpe2I9Y1tqKzI4Pj4yXXwwO2E9OTMzMisoYjw8Mil8MDtpZigoanwwKT09KGNbYT4+Ml18MCkpe2NbYT4+Ml09bztpZighbyl7Y1syMjU4XT1jWzIyNThdJn4oMTw8Yik7YnJlYWt9fWVsc2V7aWYoZz4+PjA8KGNbMjI2MV18MCk+Pj4wKU1hKCk7Yj1nKzE2fDA7aWYoKGNbYj4+Ml18MCk9PShqfDApKWNbYj4+Ml09bztlbHNlIGNbZysyMD4+Ml09bztpZighbylicmVha31hPWNbMjI2MV18MDtpZihvPj4+MDxhPj4+MClNYSgpO2NbbysyND4+Ml09ZztiPWNbaisxNj4+Ml18MDtkbyBpZihiKWlmKGI+Pj4wPGE+Pj4wKU1hKCk7ZWxzZXtjW28rMTY+PjJdPWI7Y1tiKzI0Pj4yXT1vO2JyZWFrfXdoaWxlKDApO2I9Y1tqKzIwPj4yXXwwO2lmKGIpaWYoYj4+PjA8KGNbMjI2MV18MCk+Pj4wKU1hKCk7ZWxzZXtjW28rMjA+PjJdPWI7Y1tiKzI0Pj4yXT1vO2JyZWFrfX13aGlsZSgwKTtiOmRvIGlmKGk+Pj4wPj0xNil7Y1tqKzQ+PjJdPW18MztjW2orKG18NCk+PjJdPWl8MTtjW2orKGkrbSk+PjJdPWk7Yj1pPj4+MztpZihpPj4+MDwyNTYpe2E9Yjw8MTtlPTkwNjgrKGE8PDIpfDA7ZD1jWzIyNTddfDA7Yj0xPDxiO2lmKGQmYil7Yj05MDY4KyhhKzI8PDIpfDA7YT1jW2I+PjJdfDA7aWYoYT4+PjA8KGNbMjI2MV18MCk+Pj4wKU1hKCk7ZWxzZXtzPWI7dD1hfX1lbHNle2NbMjI1N109ZHxiO3M9OTA2OCsoYSsyPDwyKXwwO3Q9ZX1jW3M+PjJdPWg7Y1t0KzEyPj4yXT1oO2NbaisobSs4KT4+Ml09dDtjW2orKG0rMTIpPj4yXT1lO2JyZWFrfWI9aT4+Pjg7aWYoYilpZihpPj4+MD4xNjc3NzIxNSllPTMxO2Vsc2V7TD0oYisxMDQ4MzIwfDApPj4+MTYmODtNPWI8PEw7Sz0oTSs1MjAxOTJ8MCk+Pj4xNiY0O009TTw8SztlPShNKzI0NTc2MHwwKT4+PjE2JjI7ZT0xNC0oS3xMfGUpKyhNPDxlPj4+MTUpfDA7ZT1pPj4+KGUrN3wwKSYxfGU8PDF9ZWxzZSBlPTA7Yj05MzMyKyhlPDwyKXwwO2NbaisobSsyOCk+PjJdPWU7Y1tqKyhtKzIwKT4+Ml09MDtjW2orKG0rMTYpPj4yXT0wO2E9Y1syMjU4XXwwO2Q9MTw8ZTtpZighKGEmZCkpe2NbMjI1OF09YXxkO2NbYj4+Ml09aDtjW2orKG0rMjQpPj4yXT1iO2NbaisobSsxMik+PjJdPWg7Y1tqKyhtKzgpPj4yXT1oO2JyZWFrfWI9Y1tiPj4yXXwwO2M6ZG8gaWYoKGNbYis0Pj4yXSYtOHwwKSE9KGl8MCkpe2U9aTw8KChlfDApPT0zMT8wOjI1LShlPj4+MSl8MCk7d2hpbGUoMSl7YT1iKzE2KyhlPj4+MzE8PDIpfDA7ZD1jW2E+PjJdfDA7aWYoIWQpYnJlYWs7aWYoKGNbZCs0Pj4yXSYtOHwwKT09KGl8MCkpe3k9ZDticmVhayBjfWVsc2V7ZT1lPDwxO2I9ZH19aWYoYT4+PjA8KGNbMjI2MV18MCk+Pj4wKU1hKCk7ZWxzZXtjW2E+PjJdPWg7Y1tqKyhtKzI0KT4+Ml09YjtjW2orKG0rMTIpPj4yXT1oO2NbaisobSs4KT4+Ml09aDticmVhayBifX1lbHNlIHk9Yjt3aGlsZSgwKTtiPXkrOHwwO2E9Y1tiPj4yXXwwO009Y1syMjYxXXwwO2lmKGE+Pj4wPj1NPj4+MCZ5Pj4+MD49TT4+PjApe2NbYSsxMj4+Ml09aDtjW2I+PjJdPWg7Y1tqKyhtKzgpPj4yXT1hO2NbaisobSsxMik+PjJdPXk7Y1tqKyhtKzI0KT4+Ml09MDticmVha31lbHNlIE1hKCl9ZWxzZXtNPWkrbXwwO2Nbais0Pj4yXT1NfDM7TT1qKyhNKzQpfDA7Y1tNPj4yXT1jW00+PjJdfDF9d2hpbGUoMCk7TT1qKzh8MDtyZXR1cm4gTXwwfWVsc2UgcT1tfWVsc2UgcT1tfWVsc2UgcT0tMTt3aGlsZSgwKTtkPWNbMjI1OV18MDtpZihkPj4+MD49cT4+PjApe2I9ZC1xfDA7YT1jWzIyNjJdfDA7aWYoYj4+PjA+MTUpe2NbMjI2Ml09YStxO2NbMjI1OV09YjtjW2ErKHErNCk+PjJdPWJ8MTtjW2ErZD4+Ml09YjtjW2ErND4+Ml09cXwzfWVsc2V7Y1syMjU5XT0wO2NbMjI2Ml09MDtjW2ErND4+Ml09ZHwzO009YSsoZCs0KXwwO2NbTT4+Ml09Y1tNPj4yXXwxfU09YSs4fDA7cmV0dXJuIE18MH1hPWNbMjI2MF18MDtpZihhPj4+MD5xPj4+MCl7TD1hLXF8MDtjWzIyNjBdPUw7TT1jWzIyNjNdfDA7Y1syMjYzXT1NK3E7Y1tNKyhxKzQpPj4yXT1MfDE7Y1tNKzQ+PjJdPXF8MztNPU0rOHwwO3JldHVybiBNfDB9ZG8gaWYoIShjWzIzNzVdfDApKXthPWliKDMwKXwwO2lmKCEoYSstMSZhKSl7Y1syMzc3XT1hO2NbMjM3Nl09YTtjWzIzNzhdPS0xO2NbMjM3OV09LTE7Y1syMzgwXT0wO2NbMjM2OF09MDtjWzIzNzVdPShGYigwKXwwKSYtMTZeMTQzMTY1NTc2ODticmVha31lbHNlIE1hKCl9d2hpbGUoMCk7aj1xKzQ4fDA7aT1jWzIzNzddfDA7az1xKzQ3fDA7aD1pK2t8MDtpPTAtaXwwO2w9aCZpO2lmKGw+Pj4wPD1xPj4+MCl7TT0wO3JldHVybiBNfDB9YT1jWzIzNjddfDA7aWYoKGF8MCkhPTA/KHQ9Y1syMzY1XXwwLHk9dCtsfDAseT4+PjA8PXQ+Pj4wfHk+Pj4wPmE+Pj4wKTowKXtNPTA7cmV0dXJuIE18MH1kOmRvIGlmKCEoY1syMzY4XSY0KSl7YT1jWzIyNjNdfDA7ZTpkbyBpZihhKXtmPTk0NzY7d2hpbGUoMSl7ZD1jW2Y+PjJdfDA7aWYoZD4+PjA8PWE+Pj4wPyhyPWYrNHwwLChkKyhjW3I+PjJdfDApfDApPj4+MD5hPj4+MCk6MCl7Zz1mO2E9cjticmVha31mPWNbZis4Pj4yXXwwO2lmKCFmKXt2PTE3NDticmVhayBlfX1kPWgtKGNbMjI2MF18MCkmaTtpZihkPj4+MDwyMTQ3NDgzNjQ3KXtmPWJiKGR8MCl8MDt5PShmfDApPT0oKGNbZz4+Ml18MCkrKGNbYT4+Ml18MCl8MCk7YT15P2Q6MDtpZih5KXtpZigoZnwwKSE9KC0xfDApKXt3PWY7cD1hO3Y9MTk0O2JyZWFrIGR9fWVsc2Ugdj0xODR9ZWxzZSBhPTB9ZWxzZSB2PTE3NDt3aGlsZSgwKTtkbyBpZigodnwwKT09MTc0KXtnPWJiKDApfDA7aWYoKGd8MCkhPSgtMXwwKSl7YT1nO2Q9Y1syMzc2XXwwO2Y9ZCstMXwwO2lmKCEoZiZhKSlkPWw7ZWxzZSBkPWwtYSsoZithJjAtZCl8MDthPWNbMjM2NV18MDtmPWErZHwwO2lmKGQ+Pj4wPnE+Pj4wJmQ+Pj4wPDIxNDc0ODM2NDcpe3k9Y1syMzY3XXwwO2lmKCh5fDApIT0wP2Y+Pj4wPD1hPj4+MHxmPj4+MD55Pj4+MDowKXthPTA7YnJlYWt9Zj1iYihkfDApfDA7eT0oZnwwKT09KGd8MCk7YT15P2Q6MDtpZih5KXt3PWc7cD1hO3Y9MTk0O2JyZWFrIGR9ZWxzZSB2PTE4NH1lbHNlIGE9MH1lbHNlIGE9MH13aGlsZSgwKTtmOmRvIGlmKCh2fDApPT0xODQpe2c9MC1kfDA7ZG8gaWYoaj4+PjA+ZD4+PjAmKGQ+Pj4wPDIxNDc0ODM2NDcmKGZ8MCkhPSgtMXwwKSk/KHU9Y1syMzc3XXwwLHU9ay1kK3UmMC11LHU+Pj4wPDIxNDc0ODM2NDcpOjApaWYoKGJiKHV8MCl8MCk9PSgtMXwwKSl7YmIoZ3wwKXwwO2JyZWFrIGZ9ZWxzZXtkPXUrZHwwO2JyZWFrfXdoaWxlKDApO2lmKChmfDApIT0oLTF8MCkpe3c9ZjtwPWQ7dj0xOTQ7YnJlYWsgZH19d2hpbGUoMCk7Y1syMzY4XT1jWzIzNjhdfDQ7dj0xOTF9ZWxzZXthPTA7dj0xOTF9d2hpbGUoMCk7aWYoKCgodnwwKT09MTkxP2w+Pj4wPDIxNDc0ODM2NDc6MCk/KHc9YmIobHwwKXwwLHg9YmIoMCl8MCx3Pj4+MDx4Pj4+MCYoKHd8MCkhPSgtMXwwKSYoeHwwKSE9KC0xfDApKSk6MCk/KHo9eC13fDAsQT16Pj4+MD4ocSs0MHwwKT4+PjAsQSk6MCl7cD1BP3o6YTt2PTE5NH1pZigodnwwKT09MTk0KXthPShjWzIzNjVdfDApK3B8MDtjWzIzNjVdPWE7aWYoYT4+PjA+KGNbMjM2Nl18MCk+Pj4wKWNbMjM2Nl09YTtoPWNbMjI2M118MDtnOmRvIGlmKGgpe2c9OTQ3Njtkb3thPWNbZz4+Ml18MDtkPWcrNHwwO2Y9Y1tkPj4yXXwwO2lmKCh3fDApPT0oYStmfDApKXtCPWE7Qz1kO0Q9ZjtFPWc7dj0yMDQ7YnJlYWt9Zz1jW2crOD4+Ml18MH13aGlsZSgoZ3wwKSE9MCk7aWYoKCh2fDApPT0yMDQ/KGNbRSsxMj4+Ml0mOHwwKT09MDowKT9oPj4+MDx3Pj4+MCZoPj4+MD49Qj4+PjA6MCl7Y1tDPj4yXT1EK3A7TT0oY1syMjYwXXwwKStwfDA7TD1oKzh8MDtMPShMJjd8MCk9PTA/MDowLUwmNztLPU0tTHwwO2NbMjI2M109aCtMO2NbMjI2MF09SztjW2grKEwrNCk+PjJdPUt8MTtjW2grKE0rNCk+PjJdPTQwO2NbMjI2NF09Y1syMzc5XTticmVha31hPWNbMjI2MV18MDtpZih3Pj4+MDxhPj4+MCl7Y1syMjYxXT13O2E9d31kPXcrcHwwO2c9OTQ3Njt3aGlsZSgxKXtpZigoY1tnPj4yXXwwKT09KGR8MCkpe2Y9ZztkPWc7dj0yMTI7YnJlYWt9Zz1jW2crOD4+Ml18MDtpZighZyl7ZD05NDc2O2JyZWFrfX1pZigodnwwKT09MjEyKWlmKCEoY1tkKzEyPj4yXSY4KSl7Y1tmPj4yXT13O249ZCs0fDA7Y1tuPj4yXT0oY1tuPj4yXXwwKStwO249dys4fDA7bj0obiY3fDApPT0wPzA6MC1uJjc7az13KyhwKzgpfDA7az0oayY3fDApPT0wPzA6MC1rJjc7Yj13KyhrK3ApfDA7bT1uK3F8MDtvPXcrbXwwO2w9Yi0odytuKS1xfDA7Y1t3KyhuKzQpPj4yXT1xfDM7aDpkbyBpZigoYnwwKSE9KGh8MCkpe2lmKChifDApPT0oY1syMjYyXXwwKSl7TT0oY1syMjU5XXwwKStsfDA7Y1syMjU5XT1NO2NbMjI2Ml09bztjW3crKG0rNCk+PjJdPU18MTtjW3crKE0rbSk+PjJdPU07YnJlYWt9aT1wKzR8MDtkPWNbdysoaStrKT4+Ml18MDtpZigoZCYzfDApPT0xKXtqPWQmLTg7Zz1kPj4+MztpOmRvIGlmKGQ+Pj4wPj0yNTYpe2g9Y1t3Kygoa3wyNCkrcCk+PjJdfDA7ZT1jW3crKHArMTIrayk+PjJdfDA7ZG8gaWYoKGV8MCk9PShifDApKXtmPWt8MTY7ZT13KyhpK2YpfDA7ZD1jW2U+PjJdfDA7aWYoIWQpe2U9dysoZitwKXwwO2Q9Y1tlPj4yXXwwO2lmKCFkKXtKPTA7YnJlYWt9fXdoaWxlKDEpe2Y9ZCsyMHwwO2c9Y1tmPj4yXXwwO2lmKGcpe2Q9ZztlPWY7Y29udGludWV9Zj1kKzE2fDA7Zz1jW2Y+PjJdfDA7aWYoIWcpYnJlYWs7ZWxzZXtkPWc7ZT1mfX1pZihlPj4+MDxhPj4+MClNYSgpO2Vsc2V7Y1tlPj4yXT0wO0o9ZDticmVha319ZWxzZXtmPWNbdysoKGt8OCkrcCk+PjJdfDA7aWYoZj4+PjA8YT4+PjApTWEoKTthPWYrMTJ8MDtpZigoY1thPj4yXXwwKSE9KGJ8MCkpTWEoKTtkPWUrOHwwO2lmKChjW2Q+PjJdfDApPT0oYnwwKSl7Y1thPj4yXT1lO2NbZD4+Ml09ZjtKPWU7YnJlYWt9ZWxzZSBNYSgpfXdoaWxlKDApO2lmKCFoKWJyZWFrO2E9Y1t3KyhwKzI4K2spPj4yXXwwO2Q9OTMzMisoYTw8Mil8MDtkbyBpZigoYnwwKSE9KGNbZD4+Ml18MCkpe2lmKGg+Pj4wPChjWzIyNjFdfDApPj4+MClNYSgpO2E9aCsxNnwwO2lmKChjW2E+PjJdfDApPT0oYnwwKSljW2E+PjJdPUo7ZWxzZSBjW2grMjA+PjJdPUo7aWYoIUopYnJlYWsgaX1lbHNle2NbZD4+Ml09SjtpZihKKWJyZWFrO2NbMjI1OF09Y1syMjU4XSZ+KDE8PGEpO2JyZWFrIGl9d2hpbGUoMCk7ZD1jWzIyNjFdfDA7aWYoSj4+PjA8ZD4+PjApTWEoKTtjW0orMjQ+PjJdPWg7Yj1rfDE2O2E9Y1t3KyhiK3ApPj4yXXwwO2RvIGlmKGEpaWYoYT4+PjA8ZD4+PjApTWEoKTtlbHNle2NbSisxNj4+Ml09YTtjW2ErMjQ+PjJdPUo7YnJlYWt9d2hpbGUoMCk7Yj1jW3crKGkrYik+PjJdfDA7aWYoIWIpYnJlYWs7aWYoYj4+PjA8KGNbMjI2MV18MCk+Pj4wKU1hKCk7ZWxzZXtjW0orMjA+PjJdPWI7Y1tiKzI0Pj4yXT1KO2JyZWFrfX1lbHNle2U9Y1t3Kygoa3w4KStwKT4+Ml18MDtmPWNbdysocCsxMitrKT4+Ml18MDtkPTkwNjgrKGc8PDE8PDIpfDA7ZG8gaWYoKGV8MCkhPShkfDApKXtpZihlPj4+MDxhPj4+MClNYSgpO2lmKChjW2UrMTI+PjJdfDApPT0oYnwwKSlicmVhaztNYSgpfXdoaWxlKDApO2lmKChmfDApPT0oZXwwKSl7Y1syMjU3XT1jWzIyNTddJn4oMTw8Zyk7YnJlYWt9ZG8gaWYoKGZ8MCk9PShkfDApKUY9Zis4fDA7ZWxzZXtpZihmPj4+MDxhPj4+MClNYSgpO2E9Zis4fDA7aWYoKGNbYT4+Ml18MCk9PShifDApKXtGPWE7YnJlYWt9TWEoKX13aGlsZSgwKTtjW2UrMTI+PjJdPWY7Y1tGPj4yXT1lfXdoaWxlKDApO2I9dysoKGp8aykrcCl8MDtmPWorbHwwfWVsc2UgZj1sO2I9Yis0fDA7Y1tiPj4yXT1jW2I+PjJdJi0yO2NbdysobSs0KT4+Ml09ZnwxO2NbdysoZittKT4+Ml09ZjtiPWY+Pj4zO2lmKGY+Pj4wPDI1Nil7YT1iPDwxO2U9OTA2OCsoYTw8Mil8MDtkPWNbMjI1N118MDtiPTE8PGI7ZG8gaWYoIShkJmIpKXtjWzIyNTddPWR8YjtLPTkwNjgrKGErMjw8Mil8MDtMPWV9ZWxzZXtiPTkwNjgrKGErMjw8Mil8MDthPWNbYj4+Ml18MDtpZihhPj4+MD49KGNbMjI2MV18MCk+Pj4wKXtLPWI7TD1hO2JyZWFrfU1hKCl9d2hpbGUoMCk7Y1tLPj4yXT1vO2NbTCsxMj4+Ml09bztjW3crKG0rOCk+PjJdPUw7Y1t3KyhtKzEyKT4+Ml09ZTticmVha31iPWY+Pj44O2RvIGlmKCFiKWU9MDtlbHNle2lmKGY+Pj4wPjE2Nzc3MjE1KXtlPTMxO2JyZWFrfUs9KGIrMTA0ODMyMHwwKT4+PjE2Jjg7TD1iPDxLO0o9KEwrNTIwMTkyfDApPj4+MTYmNDtMPUw8PEo7ZT0oTCsyNDU3NjB8MCk+Pj4xNiYyO2U9MTQtKEp8S3xlKSsoTDw8ZT4+PjE1KXwwO2U9Zj4+PihlKzd8MCkmMXxlPDwxfXdoaWxlKDApO2I9OTMzMisoZTw8Mil8MDtjW3crKG0rMjgpPj4yXT1lO2NbdysobSsyMCk+PjJdPTA7Y1t3KyhtKzE2KT4+Ml09MDthPWNbMjI1OF18MDtkPTE8PGU7aWYoIShhJmQpKXtjWzIyNThdPWF8ZDtjW2I+PjJdPW87Y1t3KyhtKzI0KT4+Ml09YjtjW3crKG0rMTIpPj4yXT1vO2NbdysobSs4KT4+Ml09bzticmVha31iPWNbYj4+Ml18MDtqOmRvIGlmKChjW2IrND4+Ml0mLTh8MCkhPShmfDApKXtlPWY8PCgoZXwwKT09MzE/MDoyNS0oZT4+PjEpfDApO3doaWxlKDEpe2E9YisxNisoZT4+PjMxPDwyKXwwO2Q9Y1thPj4yXXwwO2lmKCFkKWJyZWFrO2lmKChjW2QrND4+Ml0mLTh8MCk9PShmfDApKXtNPWQ7YnJlYWsgan1lbHNle2U9ZTw8MTtiPWR9fWlmKGE+Pj4wPChjWzIyNjFdfDApPj4+MClNYSgpO2Vsc2V7Y1thPj4yXT1vO2NbdysobSsyNCk+PjJdPWI7Y1t3KyhtKzEyKT4+Ml09bztjW3crKG0rOCk+PjJdPW87YnJlYWsgaH19ZWxzZSBNPWI7d2hpbGUoMCk7Yj1NKzh8MDthPWNbYj4+Ml18MDtMPWNbMjI2MV18MDtpZihhPj4+MD49TD4+PjAmTT4+PjA+PUw+Pj4wKXtjW2ErMTI+PjJdPW87Y1tiPj4yXT1vO2NbdysobSs4KT4+Ml09YTtjW3crKG0rMTIpPj4yXT1NO2NbdysobSsyNCk+PjJdPTA7YnJlYWt9ZWxzZSBNYSgpfWVsc2V7TT0oY1syMjYwXXwwKStsfDA7Y1syMjYwXT1NO2NbMjI2M109bztjW3crKG0rNCk+PjJdPU18MX13aGlsZSgwKTtNPXcrKG58OCl8MDtyZXR1cm4gTXwwfWVsc2UgZD05NDc2O3doaWxlKDEpe2E9Y1tkPj4yXXwwO2lmKGE+Pj4wPD1oPj4+MD8oYj1jW2QrND4+Ml18MCxlPWErYnwwLGU+Pj4wPmg+Pj4wKTowKWJyZWFrO2Q9Y1tkKzg+PjJdfDB9Zj1hKyhiKy0zOSl8MDthPWErKGIrLTQ3KygoZiY3fDApPT0wPzA6MC1mJjcpKXwwO2Y9aCsxNnwwO2E9YT4+PjA8Zj4+PjA/aDphO2I9YSs4fDA7ZD13Kzh8MDtkPShkJjd8MCk9PTA/MDowLWQmNztNPXArLTQwLWR8MDtjWzIyNjNdPXcrZDtjWzIyNjBdPU07Y1t3KyhkKzQpPj4yXT1NfDE7Y1t3KyhwKy0zNik+PjJdPTQwO2NbMjI2NF09Y1syMzc5XTtkPWErNHwwO2NbZD4+Ml09Mjc7Y1tiPj4yXT1jWzIzNjldO2NbYis0Pj4yXT1jWzIzNzBdO2NbYis4Pj4yXT1jWzIzNzFdO2NbYisxMj4+Ml09Y1syMzcyXTtjWzIzNjldPXc7Y1syMzcwXT1wO2NbMjM3Ml09MDtjWzIzNzFdPWI7Yj1hKzI4fDA7Y1tiPj4yXT03O2lmKChhKzMyfDApPj4+MDxlPj4+MClkb3tNPWI7Yj1iKzR8MDtjW2I+PjJdPTd9d2hpbGUoKE0rOHwwKT4+PjA8ZT4+PjApO2lmKChhfDApIT0oaHwwKSl7Zz1hLWh8MDtjW2Q+PjJdPWNbZD4+Ml0mLTI7Y1toKzQ+PjJdPWd8MTtjW2E+PjJdPWc7Yj1nPj4+MztpZihnPj4+MDwyNTYpe2E9Yjw8MTtlPTkwNjgrKGE8PDIpfDA7ZD1jWzIyNTddfDA7Yj0xPDxiO2lmKGQmYil7Yj05MDY4KyhhKzI8PDIpfDA7YT1jW2I+PjJdfDA7aWYoYT4+PjA8KGNbMjI2MV18MCk+Pj4wKU1hKCk7ZWxzZXtHPWI7SD1hfX1lbHNle2NbMjI1N109ZHxiO0c9OTA2OCsoYSsyPDwyKXwwO0g9ZX1jW0c+PjJdPWg7Y1tIKzEyPj4yXT1oO2NbaCs4Pj4yXT1IO2NbaCsxMj4+Ml09ZTticmVha31iPWc+Pj44O2lmKGIpaWYoZz4+PjA+MTY3NzcyMTUpZT0zMTtlbHNle0w9KGIrMTA0ODMyMHwwKT4+PjE2Jjg7TT1iPDxMO0s9KE0rNTIwMTkyfDApPj4+MTYmNDtNPU08PEs7ZT0oTSsyNDU3NjB8MCk+Pj4xNiYyO2U9MTQtKEt8THxlKSsoTTw8ZT4+PjE1KXwwO2U9Zz4+PihlKzd8MCkmMXxlPDwxfWVsc2UgZT0wO2Q9OTMzMisoZTw8Mil8MDtjW2grMjg+PjJdPWU7Y1toKzIwPj4yXT0wO2NbZj4+Ml09MDtiPWNbMjI1OF18MDthPTE8PGU7aWYoIShiJmEpKXtjWzIyNThdPWJ8YTtjW2Q+PjJdPWg7Y1toKzI0Pj4yXT1kO2NbaCsxMj4+Ml09aDtjW2grOD4+Ml09aDticmVha31iPWNbZD4+Ml18MDtrOmRvIGlmKChjW2IrND4+Ml0mLTh8MCkhPShnfDApKXtlPWc8PCgoZXwwKT09MzE/MDoyNS0oZT4+PjEpfDApO3doaWxlKDEpe2E9YisxNisoZT4+PjMxPDwyKXwwO2Q9Y1thPj4yXXwwO2lmKCFkKWJyZWFrO2lmKChjW2QrND4+Ml0mLTh8MCk9PShnfDApKXtJPWQ7YnJlYWsga31lbHNle2U9ZTw8MTtiPWR9fWlmKGE+Pj4wPChjWzIyNjFdfDApPj4+MClNYSgpO2Vsc2V7Y1thPj4yXT1oO2NbaCsyND4+Ml09YjtjW2grMTI+PjJdPWg7Y1toKzg+PjJdPWg7YnJlYWsgZ319ZWxzZSBJPWI7d2hpbGUoMCk7Yj1JKzh8MDthPWNbYj4+Ml18MDtNPWNbMjI2MV18MDtpZihhPj4+MD49TT4+PjAmST4+PjA+PU0+Pj4wKXtjW2ErMTI+PjJdPWg7Y1tiPj4yXT1oO2NbaCs4Pj4yXT1hO2NbaCsxMj4+Ml09STtjW2grMjQ+PjJdPTA7YnJlYWt9ZWxzZSBNYSgpfX1lbHNle009Y1syMjYxXXwwO2lmKChNfDApPT0wfHc+Pj4wPE0+Pj4wKWNbMjI2MV09dztjWzIzNjldPXc7Y1syMzcwXT1wO2NbMjM3Ml09MDtjWzIyNjZdPWNbMjM3NV07Y1syMjY1XT0tMTtiPTA7ZG97TT1iPDwxO0w9OTA2OCsoTTw8Mil8MDtjWzkwNjgrKE0rMzw8Mik+PjJdPUw7Y1s5MDY4KyhNKzI8PDIpPj4yXT1MO2I9YisxfDB9d2hpbGUoKGJ8MCkhPTMyKTtNPXcrOHwwO009KE0mN3wwKT09MD8wOjAtTSY3O0w9cCstNDAtTXwwO2NbMjI2M109dytNO2NbMjI2MF09TDtjW3crKE0rNCk+PjJdPUx8MTtjW3crKHArLTM2KT4+Ml09NDA7Y1syMjY0XT1jWzIzNzldfXdoaWxlKDApO2I9Y1syMjYwXXwwO2lmKGI+Pj4wPnE+Pj4wKXtMPWItcXwwO2NbMjI2MF09TDtNPWNbMjI2M118MDtjWzIyNjNdPU0rcTtjW00rKHErNCk+PjJdPUx8MTtjW00rND4+Ml09cXwzO009TSs4fDA7cmV0dXJuIE18MH19Y1soQlEoKXwwKT4+Ml09MTI7TT0wO3JldHVybiBNfDB9ZnVuY3Rpb24gS1IoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MCxnPTAsaD0wLGk9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MDtpZighYSlyZXR1cm47Yj1hKy04fDA7aT1jWzIyNjFdfDA7aWYoYj4+PjA8aT4+PjApTWEoKTtkPWNbYSstND4+Ml18MDtlPWQmMztpZigoZXwwKT09MSlNYSgpO289ZCYtODtxPWErKG8rLTgpfDA7ZG8gaWYoIShkJjEpKXtiPWNbYj4+Ml18MDtpZighZSlyZXR1cm47aj0tOC1ifDA7bD1hK2p8MDttPWIrb3wwO2lmKGw+Pj4wPGk+Pj4wKU1hKCk7aWYoKGx8MCk9PShjWzIyNjJdfDApKXtiPWErKG8rLTQpfDA7ZD1jW2I+PjJdfDA7aWYoKGQmM3wwKSE9Myl7dT1sO2c9bTticmVha31jWzIyNTldPW07Y1tiPj4yXT1kJi0yO2NbYSsoais0KT4+Ml09bXwxO2NbcT4+Ml09bTtyZXR1cm59Zj1iPj4+MztpZihiPj4+MDwyNTYpe2U9Y1thKyhqKzgpPj4yXXwwO2Q9Y1thKyhqKzEyKT4+Ml18MDtiPTkwNjgrKGY8PDE8PDIpfDA7aWYoKGV8MCkhPShifDApKXtpZihlPj4+MDxpPj4+MClNYSgpO2lmKChjW2UrMTI+PjJdfDApIT0obHwwKSlNYSgpfWlmKChkfDApPT0oZXwwKSl7Y1syMjU3XT1jWzIyNTddJn4oMTw8Zik7dT1sO2c9bTticmVha31pZigoZHwwKSE9KGJ8MCkpe2lmKGQ+Pj4wPGk+Pj4wKU1hKCk7Yj1kKzh8MDtpZigoY1tiPj4yXXwwKT09KGx8MCkpaD1iO2Vsc2UgTWEoKX1lbHNlIGg9ZCs4fDA7Y1tlKzEyPj4yXT1kO2NbaD4+Ml09ZTt1PWw7Zz1tO2JyZWFrfWg9Y1thKyhqKzI0KT4+Ml18MDtlPWNbYSsoaisxMik+PjJdfDA7ZG8gaWYoKGV8MCk9PShsfDApKXtkPWErKGorMjApfDA7Yj1jW2Q+PjJdfDA7aWYoIWIpe2Q9YSsoaisxNil8MDtiPWNbZD4+Ml18MDtpZighYil7az0wO2JyZWFrfX13aGlsZSgxKXtlPWIrMjB8MDtmPWNbZT4+Ml18MDtpZihmKXtiPWY7ZD1lO2NvbnRpbnVlfWU9YisxNnwwO2Y9Y1tlPj4yXXwwO2lmKCFmKWJyZWFrO2Vsc2V7Yj1mO2Q9ZX19aWYoZD4+PjA8aT4+PjApTWEoKTtlbHNle2NbZD4+Ml09MDtrPWI7YnJlYWt9fWVsc2V7Zj1jW2ErKGorOCk+PjJdfDA7aWYoZj4+PjA8aT4+PjApTWEoKTtiPWYrMTJ8MDtpZigoY1tiPj4yXXwwKSE9KGx8MCkpTWEoKTtkPWUrOHwwO2lmKChjW2Q+PjJdfDApPT0obHwwKSl7Y1tiPj4yXT1lO2NbZD4+Ml09ZjtrPWU7YnJlYWt9ZWxzZSBNYSgpfXdoaWxlKDApO2lmKGgpe2I9Y1thKyhqKzI4KT4+Ml18MDtkPTkzMzIrKGI8PDIpfDA7aWYoKGx8MCk9PShjW2Q+PjJdfDApKXtjW2Q+PjJdPWs7aWYoIWspe2NbMjI1OF09Y1syMjU4XSZ+KDE8PGIpO3U9bDtnPW07YnJlYWt9fWVsc2V7aWYoaD4+PjA8KGNbMjI2MV18MCk+Pj4wKU1hKCk7Yj1oKzE2fDA7aWYoKGNbYj4+Ml18MCk9PShsfDApKWNbYj4+Ml09aztlbHNlIGNbaCsyMD4+Ml09aztpZighayl7dT1sO2c9bTticmVha319ZD1jWzIyNjFdfDA7aWYoaz4+PjA8ZD4+PjApTWEoKTtjW2srMjQ+PjJdPWg7Yj1jW2ErKGorMTYpPj4yXXwwO2RvIGlmKGIpaWYoYj4+PjA8ZD4+PjApTWEoKTtlbHNle2NbaysxNj4+Ml09YjtjW2IrMjQ+PjJdPWs7YnJlYWt9d2hpbGUoMCk7Yj1jW2ErKGorMjApPj4yXXwwO2lmKGIpaWYoYj4+PjA8KGNbMjI2MV18MCk+Pj4wKU1hKCk7ZWxzZXtjW2srMjA+PjJdPWI7Y1tiKzI0Pj4yXT1rO3U9bDtnPW07YnJlYWt9ZWxzZXt1PWw7Zz1tfX1lbHNle3U9bDtnPW19fWVsc2V7dT1iO2c9b313aGlsZSgwKTtpZih1Pj4+MD49cT4+PjApTWEoKTtiPWErKG8rLTQpfDA7ZD1jW2I+PjJdfDA7aWYoIShkJjEpKU1hKCk7aWYoIShkJjIpKXtpZigocXwwKT09KGNbMjI2M118MCkpe3Q9KGNbMjI2MF18MCkrZ3wwO2NbMjI2MF09dDtjWzIyNjNdPXU7Y1t1KzQ+PjJdPXR8MTtpZigodXwwKSE9KGNbMjI2Ml18MCkpcmV0dXJuO2NbMjI2Ml09MDtjWzIyNTldPTA7cmV0dXJufWlmKChxfDApPT0oY1syMjYyXXwwKSl7dD0oY1syMjU5XXwwKStnfDA7Y1syMjU5XT10O2NbMjI2Ml09dTtjW3UrND4+Ml09dHwxO2NbdSt0Pj4yXT10O3JldHVybn1nPShkJi04KStnfDA7Zj1kPj4+MztkbyBpZihkPj4+MD49MjU2KXtoPWNbYSsobysxNik+PjJdfDA7Yj1jW2ErKG98NCk+PjJdfDA7ZG8gaWYoKGJ8MCk9PShxfDApKXtkPWErKG8rMTIpfDA7Yj1jW2Q+PjJdfDA7aWYoIWIpe2Q9YSsobys4KXwwO2I9Y1tkPj4yXXwwO2lmKCFiKXtwPTA7YnJlYWt9fXdoaWxlKDEpe2U9YisyMHwwO2Y9Y1tlPj4yXXwwO2lmKGYpe2I9ZjtkPWU7Y29udGludWV9ZT1iKzE2fDA7Zj1jW2U+PjJdfDA7aWYoIWYpYnJlYWs7ZWxzZXtiPWY7ZD1lfX1pZihkPj4+MDwoY1syMjYxXXwwKT4+PjApTWEoKTtlbHNle2NbZD4+Ml09MDtwPWI7YnJlYWt9fWVsc2V7ZD1jW2Erbz4+Ml18MDtpZihkPj4+MDwoY1syMjYxXXwwKT4+PjApTWEoKTtlPWQrMTJ8MDtpZigoY1tlPj4yXXwwKSE9KHF8MCkpTWEoKTtmPWIrOHwwO2lmKChjW2Y+PjJdfDApPT0ocXwwKSl7Y1tlPj4yXT1iO2NbZj4+Ml09ZDtwPWI7YnJlYWt9ZWxzZSBNYSgpfXdoaWxlKDApO2lmKGgpe2I9Y1thKyhvKzIwKT4+Ml18MDtkPTkzMzIrKGI8PDIpfDA7aWYoKHF8MCk9PShjW2Q+PjJdfDApKXtjW2Q+PjJdPXA7aWYoIXApe2NbMjI1OF09Y1syMjU4XSZ+KDE8PGIpO2JyZWFrfX1lbHNle2lmKGg+Pj4wPChjWzIyNjFdfDApPj4+MClNYSgpO2I9aCsxNnwwO2lmKChjW2I+PjJdfDApPT0ocXwwKSljW2I+PjJdPXA7ZWxzZSBjW2grMjA+PjJdPXA7aWYoIXApYnJlYWt9ZD1jWzIyNjFdfDA7aWYocD4+PjA8ZD4+PjApTWEoKTtjW3ArMjQ+PjJdPWg7Yj1jW2ErKG8rOCk+PjJdfDA7ZG8gaWYoYilpZihiPj4+MDxkPj4+MClNYSgpO2Vsc2V7Y1twKzE2Pj4yXT1iO2NbYisyND4+Ml09cDticmVha313aGlsZSgwKTtiPWNbYSsobysxMik+PjJdfDA7aWYoYilpZihiPj4+MDwoY1syMjYxXXwwKT4+PjApTWEoKTtlbHNle2NbcCsyMD4+Ml09YjtjW2IrMjQ+PjJdPXA7YnJlYWt9fX1lbHNle2U9Y1thK28+PjJdfDA7ZD1jW2ErKG98NCk+PjJdfDA7Yj05MDY4KyhmPDwxPDwyKXwwO2lmKChlfDApIT0oYnwwKSl7aWYoZT4+PjA8KGNbMjI2MV18MCk+Pj4wKU1hKCk7aWYoKGNbZSsxMj4+Ml18MCkhPShxfDApKU1hKCl9aWYoKGR8MCk9PShlfDApKXtjWzIyNTddPWNbMjI1N10mfigxPDxmKTticmVha31pZigoZHwwKSE9KGJ8MCkpe2lmKGQ+Pj4wPChjWzIyNjFdfDApPj4+MClNYSgpO2I9ZCs4fDA7aWYoKGNbYj4+Ml18MCk9PShxfDApKW49YjtlbHNlIE1hKCl9ZWxzZSBuPWQrOHwwO2NbZSsxMj4+Ml09ZDtjW24+PjJdPWV9d2hpbGUoMCk7Y1t1KzQ+PjJdPWd8MTtjW3UrZz4+Ml09ZztpZigodXwwKT09KGNbMjI2Ml18MCkpe2NbMjI1OV09ZztyZXR1cm59fWVsc2V7Y1tiPj4yXT1kJi0yO2NbdSs0Pj4yXT1nfDE7Y1t1K2c+PjJdPWd9Yj1nPj4+MztpZihnPj4+MDwyNTYpe2Q9Yjw8MTtmPTkwNjgrKGQ8PDIpfDA7ZT1jWzIyNTddfDA7Yj0xPDxiO2lmKGUmYil7Yj05MDY4KyhkKzI8PDIpfDA7ZD1jW2I+PjJdfDA7aWYoZD4+PjA8KGNbMjI2MV18MCk+Pj4wKU1hKCk7ZWxzZXtyPWI7cz1kfX1lbHNle2NbMjI1N109ZXxiO3I9OTA2OCsoZCsyPDwyKXwwO3M9Zn1jW3I+PjJdPXU7Y1tzKzEyPj4yXT11O2NbdSs4Pj4yXT1zO2NbdSsxMj4+Ml09ZjtyZXR1cm59Yj1nPj4+ODtpZihiKWlmKGc+Pj4wPjE2Nzc3MjE1KWY9MzE7ZWxzZXtyPShiKzEwNDgzMjB8MCk+Pj4xNiY4O3M9Yjw8cjtxPShzKzUyMDE5MnwwKT4+PjE2JjQ7cz1zPDxxO2Y9KHMrMjQ1NzYwfDApPj4+MTYmMjtmPTE0LShxfHJ8ZikrKHM8PGY+Pj4xNSl8MDtmPWc+Pj4oZis3fDApJjF8Zjw8MX1lbHNlIGY9MDtiPTkzMzIrKGY8PDIpfDA7Y1t1KzI4Pj4yXT1mO2NbdSsyMD4+Ml09MDtjW3UrMTY+PjJdPTA7ZD1jWzIyNThdfDA7ZT0xPDxmO2E6ZG8gaWYoZCZlKXtiPWNbYj4+Ml18MDtiOmRvIGlmKChjW2IrND4+Ml0mLTh8MCkhPShnfDApKXtmPWc8PCgoZnwwKT09MzE/MDoyNS0oZj4+PjEpfDApO3doaWxlKDEpe2Q9YisxNisoZj4+PjMxPDwyKXwwO2U9Y1tkPj4yXXwwO2lmKCFlKWJyZWFrO2lmKChjW2UrND4+Ml0mLTh8MCk9PShnfDApKXt0PWU7YnJlYWsgYn1lbHNle2Y9Zjw8MTtiPWV9fWlmKGQ+Pj4wPChjWzIyNjFdfDApPj4+MClNYSgpO2Vsc2V7Y1tkPj4yXT11O2NbdSsyND4+Ml09YjtjW3UrMTI+PjJdPXU7Y1t1Kzg+PjJdPXU7YnJlYWsgYX19ZWxzZSB0PWI7d2hpbGUoMCk7Yj10Kzh8MDtkPWNbYj4+Ml18MDtzPWNbMjI2MV18MDtpZihkPj4+MD49cz4+PjAmdD4+PjA+PXM+Pj4wKXtjW2QrMTI+PjJdPXU7Y1tiPj4yXT11O2NbdSs4Pj4yXT1kO2NbdSsxMj4+Ml09dDtjW3UrMjQ+PjJdPTA7YnJlYWt9ZWxzZSBNYSgpfWVsc2V7Y1syMjU4XT1kfGU7Y1tiPj4yXT11O2NbdSsyND4+Ml09YjtjW3UrMTI+PjJdPXU7Y1t1Kzg+PjJdPXV9d2hpbGUoMCk7dT0oY1syMjY1XXwwKSstMXwwO2NbMjI2NV09dTtpZighdSliPTk0ODQ7ZWxzZSByZXR1cm47d2hpbGUoMSl7Yj1jW2I+PjJdfDA7aWYoIWIpYnJlYWs7ZWxzZSBiPWIrOHwwfWNbMjI2NV09LTE7cmV0dXJufWZ1bmN0aW9uIExSKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MDtpZihhKXtkPV8oYixhKXwwO2lmKChifGEpPj4+MD42NTUzNSlkPSgoZD4+PjApLyhhPj4+MCl8MHwwKT09KGJ8MCk/ZDotMX1lbHNlIGQ9MDtiPUpSKGQpfDA7aWYoIWIpcmV0dXJuIGJ8MDtpZighKGNbYistND4+Ml0mMykpcmV0dXJuIGJ8MDtWUihifDAsMCxkfDApfDA7cmV0dXJuIGJ8MH1mdW5jdGlvbiBNUihhLGIpe2E9YXwwO2I9YnwwO3ZhciBkPTAsZT0wO2lmKCFhKXthPUpSKGIpfDA7cmV0dXJuIGF8MH1pZihiPj4+MD40Mjk0OTY3MjMxKXtjWyhCUSgpfDApPj4yXT0xMjthPTA7cmV0dXJuIGF8MH1kPU5SKGErLTh8MCxiPj4+MDwxMT8xNjpiKzExJi04KXwwO2lmKGQpe2E9ZCs4fDA7cmV0dXJuIGF8MH1kPUpSKGIpfDA7aWYoIWQpe2E9MDtyZXR1cm4gYXwwfWU9Y1thKy00Pj4yXXwwO2U9KGUmLTgpLSgoZSYzfDApPT0wPzg6NCl8MDtUUihkfDAsYXwwLChlPj4+MDxiPj4+MD9lOmIpfDApfDA7S1IoYSk7YT1kO3JldHVybiBhfDB9ZnVuY3Rpb24gTlIoYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxpPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wO289YSs0fDA7cD1jW28+PjJdfDA7aj1wJi04O2w9YStqfDA7aT1jWzIyNjFdfDA7ZD1wJjM7aWYoISgoZHwwKSE9MSZhPj4+MD49aT4+PjAmYT4+PjA8bD4+PjApKU1hKCk7ZT1hKyhqfDQpfDA7Zj1jW2U+PjJdfDA7aWYoIShmJjEpKU1hKCk7aWYoIWQpe2lmKGI+Pj4wPDI1Nil7YT0wO3JldHVybiBhfDB9aWYoaj4+PjA+PShiKzR8MCk+Pj4wPyhqLWJ8MCk+Pj4wPD1jWzIzNzddPDwxPj4+MDowKXJldHVybiBhfDA7YT0wO3JldHVybiBhfDB9aWYoaj4+PjA+PWI+Pj4wKXtkPWotYnwwO2lmKGQ+Pj4wPD0xNSlyZXR1cm4gYXwwO2Nbbz4+Ml09cCYxfGJ8MjtjW2ErKGIrNCk+PjJdPWR8MztjW2U+PjJdPWNbZT4+Ml18MTtPUihhK2J8MCxkKTtyZXR1cm4gYXwwfWlmKChsfDApPT0oY1syMjYzXXwwKSl7ZD0oY1syMjYwXXwwKStqfDA7aWYoZD4+PjA8PWI+Pj4wKXthPTA7cmV0dXJuIGF8MH1uPWQtYnwwO2Nbbz4+Ml09cCYxfGJ8MjtjW2ErKGIrNCk+PjJdPW58MTtjWzIyNjNdPWErYjtjWzIyNjBdPW47cmV0dXJuIGF8MH1pZigobHwwKT09KGNbMjI2Ml18MCkpe2U9KGNbMjI1OV18MCkranwwO2lmKGU+Pj4wPGI+Pj4wKXthPTA7cmV0dXJuIGF8MH1kPWUtYnwwO2lmKGQ+Pj4wPjE1KXtjW28+PjJdPXAmMXxifDI7Y1thKyhiKzQpPj4yXT1kfDE7Y1thK2U+PjJdPWQ7ZT1hKyhlKzQpfDA7Y1tlPj4yXT1jW2U+PjJdJi0yO2U9YStifDB9ZWxzZXtjW28+PjJdPXAmMXxlfDI7ZT1hKyhlKzQpfDA7Y1tlPj4yXT1jW2U+PjJdfDE7ZT0wO2Q9MH1jWzIyNTldPWQ7Y1syMjYyXT1lO3JldHVybiBhfDB9aWYoZiYyKXthPTA7cmV0dXJuIGF8MH1tPShmJi04KStqfDA7aWYobT4+PjA8Yj4+PjApe2E9MDtyZXR1cm4gYXwwfW49bS1ifDA7Zz1mPj4+MztkbyBpZihmPj4+MD49MjU2KXtoPWNbYSsoaisyNCk+PjJdfDA7Zz1jW2ErKGorMTIpPj4yXXwwO2RvIGlmKChnfDApPT0obHwwKSl7ZT1hKyhqKzIwKXwwO2Q9Y1tlPj4yXXwwO2lmKCFkKXtlPWErKGorMTYpfDA7ZD1jW2U+PjJdfDA7aWYoIWQpe2s9MDticmVha319d2hpbGUoMSl7Zj1kKzIwfDA7Zz1jW2Y+PjJdfDA7aWYoZyl7ZD1nO2U9Zjtjb250aW51ZX1mPWQrMTZ8MDtnPWNbZj4+Ml18MDtpZighZylicmVhaztlbHNle2Q9ZztlPWZ9fWlmKGU+Pj4wPGk+Pj4wKU1hKCk7ZWxzZXtjW2U+PjJdPTA7az1kO2JyZWFrfX1lbHNle2Y9Y1thKyhqKzgpPj4yXXwwO2lmKGY+Pj4wPGk+Pj4wKU1hKCk7ZD1mKzEyfDA7aWYoKGNbZD4+Ml18MCkhPShsfDApKU1hKCk7ZT1nKzh8MDtpZigoY1tlPj4yXXwwKT09KGx8MCkpe2NbZD4+Ml09ZztjW2U+PjJdPWY7az1nO2JyZWFrfWVsc2UgTWEoKX13aGlsZSgwKTtpZihoKXtkPWNbYSsoaisyOCk+PjJdfDA7ZT05MzMyKyhkPDwyKXwwO2lmKChsfDApPT0oY1tlPj4yXXwwKSl7Y1tlPj4yXT1rO2lmKCFrKXtjWzIyNThdPWNbMjI1OF0mfigxPDxkKTticmVha319ZWxzZXtpZihoPj4+MDwoY1syMjYxXXwwKT4+PjApTWEoKTtkPWgrMTZ8MDtpZigoY1tkPj4yXXwwKT09KGx8MCkpY1tkPj4yXT1rO2Vsc2UgY1toKzIwPj4yXT1rO2lmKCFrKWJyZWFrfWU9Y1syMjYxXXwwO2lmKGs+Pj4wPGU+Pj4wKU1hKCk7Y1trKzI0Pj4yXT1oO2Q9Y1thKyhqKzE2KT4+Ml18MDtkbyBpZihkKWlmKGQ+Pj4wPGU+Pj4wKU1hKCk7ZWxzZXtjW2srMTY+PjJdPWQ7Y1tkKzI0Pj4yXT1rO2JyZWFrfXdoaWxlKDApO2Q9Y1thKyhqKzIwKT4+Ml18MDtpZihkKWlmKGQ+Pj4wPChjWzIyNjFdfDApPj4+MClNYSgpO2Vsc2V7Y1trKzIwPj4yXT1kO2NbZCsyND4+Ml09azticmVha319fWVsc2V7Zj1jW2ErKGorOCk+PjJdfDA7ZT1jW2ErKGorMTIpPj4yXXwwO2Q9OTA2OCsoZzw8MTw8Mil8MDtpZigoZnwwKSE9KGR8MCkpe2lmKGY+Pj4wPGk+Pj4wKU1hKCk7aWYoKGNbZisxMj4+Ml18MCkhPShsfDApKU1hKCl9aWYoKGV8MCk9PShmfDApKXtjWzIyNTddPWNbMjI1N10mfigxPDxnKTticmVha31pZigoZXwwKSE9KGR8MCkpe2lmKGU+Pj4wPGk+Pj4wKU1hKCk7ZD1lKzh8MDtpZigoY1tkPj4yXXwwKT09KGx8MCkpaD1kO2Vsc2UgTWEoKX1lbHNlIGg9ZSs4fDA7Y1tmKzEyPj4yXT1lO2NbaD4+Ml09Zn13aGlsZSgwKTtpZihuPj4+MDwxNil7Y1tvPj4yXT1tfHAmMXwyO2I9YSsobXw0KXwwO2NbYj4+Ml09Y1tiPj4yXXwxO3JldHVybiBhfDB9ZWxzZXtjW28+PjJdPXAmMXxifDI7Y1thKyhiKzQpPj4yXT1ufDM7cD1hKyhtfDQpfDA7Y1twPj4yXT1jW3A+PjJdfDE7T1IoYStifDAsbik7cmV0dXJuIGF8MH1yZXR1cm4gMH1cbmZ1bmN0aW9uIHB1KGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTAsZz0wO2c9aTtpPWkrMTZ8MDtmPWcrMTJ8MDtiPWcrOHwwO2Q9Zys0fDA7ZT1nO2NbYj4+Ml09YTtpZihjWyhjW2I+PjJdfDApKzQ+PjJdfDApe2NbZj4+Ml09MTtmPWNbZj4+Ml18MDtpPWc7cmV0dXJuIGZ8MH1jW2Q+PjJdPTA7d2hpbGUoMSl7aWYoKGNbZD4+Ml18MCk+PShjWyhjW2I+PjJdfDApKzIwPj4yXXwwKSl7Yj05O2JyZWFrfWNbZT4+Ml09Y1soY1soY1tiPj4yXXwwKSsxNj4+Ml18MCkrKGNbZD4+Ml08PDQpKzQ+PjJdO2lmKChjW2U+PjJdfDApIT0wPyhxdShjW2U+PjJdfDApfDApIT0wOjApe2I9NzticmVha31jW2Q+PjJdPShjW2Q+PjJdfDApKzF9aWYoKGJ8MCk9PTcpe2NbZj4+Ml09MTtmPWNbZj4+Ml18MDtpPWc7cmV0dXJuIGZ8MH1lbHNlIGlmKChifDApPT05KXtjW2Y+PjJdPTA7Zj1jW2Y+PjJdfDA7aT1nO3JldHVybiBmfDB9cmV0dXJuIDB9ZnVuY3Rpb24gcXUoYSl7YT1hfDA7dmFyIGI9MCxkPTA7ZD1pO2k9aSsxNnwwO2I9ZDtjW2I+PjJdPWE7aT1kO3JldHVybiAoY1soY1tiPj4yXXwwKSsxNj4+Ml18MCkhPTB8MH1mdW5jdGlvbiBydShhLGIpe2E9YXwwO2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wO2w9aTtpPWkrMzJ8MDtkPWwrMjR8MDtlPWwrMjB8MDtnPWwrMTZ8MDtmPWwrMTJ8MDtqPWwrOHwwO2g9bCs0fDA7az1sO2NbZD4+Ml09YTtjW2U+PjJdPWI7aWYoIShjWyhjW2Q+PjJdfDApKzM0MD4+Ml18MCkpe2k9bDtyZXR1cm59Y1tmPj4yXT1jWyhjW2Q+PjJdfDApKzM0MD4+Ml07Y1soY1tkPj4yXXwwKSszNDA+PjJdPTA7Y1tnPj4yXT0wO3doaWxlKDEpe2lmKChjW2c+PjJdfDApPj0oY1soY1tkPj4yXXwwKSszMTY+PjJdfDApKWJyZWFrO2Nbaj4+Ml09Y1soY1tmPj4yXXwwKSsoY1tnPj4yXTw8Mik+PjJdO2NbaD4+Ml09Y1soY1tqPj4yXXwwKSs4Pj4yXTtpZigoY1toPj4yXXwwKSE9MD8oY1trPj4yXT1jWyhjW2NbaD4+Ml0+PjJdfDApKyhjW2U+PjJdfDApPj4yXSwoY1trPj4yXXwwKSE9MCk6MClUYltjW2s+PjJdJjI1NV0oY1toPj4yXXwwKXwwO2NbKGNbaj4+Ml18MCkrMjA+PjJdPTA7c3UoY1tqPj4yXXwwKTtjW2c+PjJdPShjW2c+PjJdfDApKzF9VGYoY1tkPj4yXXwwLGNbZj4+Ml18MCk7Y1soY1tkPj4yXXwwKSszMTY+PjJdPTA7aT1sO3JldHVybn1mdW5jdGlvbiBzdShhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wO2Y9aTtpPWkrMTZ8MDtiPWYrOHwwO2Q9Zis0fDA7ZT1mO2NbYj4+Ml09YTtjW2Q+PjJdPWNbY1tiPj4yXT4+Ml07YT0oY1tiPj4yXXwwKSsxMnwwO2NbYT4+Ml09KGNbYT4+Ml18MCkrLTE7aWYoY1soY1tiPj4yXXwwKSsxMj4+Ml18MCl7aT1mO3JldHVybn1jW2U+PjJdPWNbKGNbYj4+Ml18MCkrOD4+Ml07aWYoY1tlPj4yXXwwKVRiW2NbKGNbY1tlPj4yXT4+Ml18MCkrMTY+PjJdJjI1NV0oY1tlPj4yXXwwKXwwO1RmKGNbZD4+Ml18MCxjW2I+PjJdfDApO2k9ZjtyZXR1cm59ZnVuY3Rpb24gdHUoYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTA7aD1pO2k9aSsxNnwwO2Q9aCsxMnwwO2o9aCs4fDA7Zj1oKzR8MDtlPWg7Y1tkPj4yXT1hO2Nbaj4+Ml09YjtjW2Y+PjJdPShjW2o+PjJdfDApKzU2O3doaWxlKDEpe2lmKCEoY1tjW2Y+PjJdPj4yXXwwKSl7Zz02O2JyZWFrfWE9Y1tjW2Y+PjJdPj4yXXwwO2lmKChjW2NbY1tmPj4yXT4+Ml0+PjJdfDApPT0oY1tkPj4yXXwwKSlicmVhaztjW2Y+PjJdPWErMjR9aWYoKGd8MCk9PTYpe2k9aDtyZXR1cm59Y1tlPj4yXT1hO2NbY1tmPj4yXT4+Ml09Y1soY1tlPj4yXXwwKSsyND4+Ml07c3UoY1tlPj4yXXwwKTtpPWg7cmV0dXJufWZ1bmN0aW9uIHV1KGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTA7Zj1pO2k9aSsxNnwwO2I9Zis4fDA7ZD1mKzR8MDtlPWY7Y1tiPj4yXT1hO2NbZD4+Ml09Y1soY1tiPj4yXXwwKSszNDQ+PjJdO2NbKGNbYj4+Ml18MCkrMzQ0Pj4yXT0wO2lmKCEoY1tkPj4yXXwwKSl7aT1mO3JldHVybn1TaChjW2I+PjJdfDApO2Rve2NbZT4+Ml09Y1soY1tkPj4yXXwwKSsyND4+Ml07c3UoY1tkPj4yXXwwKTtjW2Q+PjJdPWNbZT4+Ml19d2hpbGUoKGNbZD4+Ml18MCkhPTApO2k9ZjtyZXR1cm59ZnVuY3Rpb24gdnUoYSl7YT1hfDA7dmFyIGI9MCxkPTA7Yj1pO2k9aSsxNnwwO2Q9YjtjW2Q+PjJdPWE7UWJbY1sxNjQ+PjJdJjI1NV0oY1soY1tkPj4yXXwwKSs0ND4+Ml18MCk7aT1iO3JldHVybn1mdW5jdGlvbiB3dShhKXthPWF8MDt2YXIgYj0wLGQ9MDtkPWk7aT1pKzE2fDA7Y1tkPj4yXT1hO2E9MTYyODtiPWErMTAwfDA7ZG97Y1thPj4yXT0wO2E9YSs0fDB9d2hpbGUoKGF8MCk8KGJ8MCkpO2NbNDIxXT0oY1s1M118MCk9PTAmMTtpZigoY1s0MjFdfDApIT0wJihjWzU1XXwwKSE9MCYoY1s1M118MCk9PTApe2NbNDIyXT1jWzU1XTtjWzQxMF09MTA7Y1s0MjBdPTE7aT1kO3JldHVybiAwfWVsc2V7Y1s0MjJdPTA7Y1s0MTBdPTEwO2NbNDIwXT0xO2k9ZDtyZXR1cm4gMH1yZXR1cm4gMH1mdW5jdGlvbiB4dShhKXthPWF8MDt2YXIgYj0wLGQ9MDtkPWk7aT1pKzE2fDA7Y1tkPj4yXT1hO2E9MTYyODtiPWErMTAwfDA7ZG97Y1thPj4yXT0wO2E9YSs0fDB9d2hpbGUoKGF8MCk8KGJ8MCkpO2k9ZDtyZXR1cm59ZnVuY3Rpb24geXUoYixlLGYpe2I9YnwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTA7bT1pO2k9aSszMnwwO2c9bSsyMHwwO2g9bSsxNnwwO2o9bSsxMnwwO2s9bSs4fDA7bD1tKzR8MDtuPW07Y1tnPj4yXT1iO2NbaD4+Ml09ZTtjW2o+PjJdPWY7Y1tuPj4yXT02MCsoKGNbNDIxXXwwKSo1MnwwKTtiPWNbbj4+Ml18MDtjW2s+PjJdPWtnKGIsKChifDApPDApPDwzMT4+MzEpfDA7aWYoIShjW2s+PjJdfDApKXtuPWNbaz4+Ml18MDtpPW07cmV0dXJuIG58MH1pZihjWzQyMV18MCl7Y1tsPj4yXT0oY1trPj4yXXwwKSs2MDtjWyhjW2w+PjJdfDApKzEyPj4yXT0xMH1lbHNlIGNbbD4+Ml09MTYyODtpZighKGRbKGNbbD4+Ml18MCkrMjArMTQ+PjBdfDApKXthWyhjW2w+PjJdfDApKzIwKzE0Pj4wXT0xO249KGNbbD4+Ml18MCkrMjB8MDtjWyhjW2w+PjJdfDApKzIwKzI0Pj4yXT1uO2NbKGNbbD4+Ml18MCkrMjArMjg+PjJdPW59Y1tjW2s+PjJdPj4yXT1jW2w+PjJdO2NbKGNbaz4+Ml18MCkrND4+Ml09Y1tnPj4yXTtjWyhjW2s+PjJdfDApKzg+PjJdPWNbaD4+Ml07Y1soY1trPj4yXXwwKSsxMj4+Ml09KGNbZz4+Ml18MCkrKGNbaD4+Ml18MCkrMzI7Y1soY1trPj4yXXwwKSsxNj4+Ml09KGNbaj4+Ml18MCkhPTA/MTowO1B1KGNbaz4+Ml18MCk7aWYoY1tqPj4yXXwwKXtjWyhjW2s+PjJdfDApKzIwPj4yXT0xMDtuPShjW2w+PjJdfDApKzh8MDtjW24+PjJdPShjW24+PjJdfDApKyhjWyhjW2s+PjJdfDApKzIwPj4yXXwwKTtjWyhjW2w+PjJdfDApKzEyPj4yXT0oY1soY1tsPj4yXXwwKSs0Pj4yXXwwKSsxMC0oY1soY1tsPj4yXXwwKSs4Pj4yXXwwKX1pZihjWyhjW2s+PjJdfDApKzQ0Pj4yXXwwKXtuPWNbaz4+Ml18MDtpPW07cmV0dXJuIG58MH1GdShjW2s+PjJdfDApO2Nbaz4+Ml09MDtuPWNbaz4+Ml18MDtpPW07cmV0dXJuIG58MH1mdW5jdGlvbiB6dShhLGIpe2E9YXwwO2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wO2c9aTtpPWkrMTZ8MDtoPWcrMTJ8MDtkPWcrOHwwO2U9Zys0fDA7Zj1nO2NbaD4+Ml09YTtjW2Q+PjJdPWI7Y1tlPj4yXT1jW2g+PjJdO2lmKCEoY1soY1tlPj4yXXwwKSsxNj4+Ml18MCkpe2k9ZztyZXR1cm59Y1tmPj4yXT1jW2NbZT4+Ml0+PjJdO2g9KGNbZj4+Ml18MCkrNHwwO2NbaD4+Ml09KGNbaD4+Ml18MCkrKChjW2Q+PjJdfDApLShjWyhjW2U+PjJdfDApKzI0Pj4yXXwwKSk7Y1soY1tmPj4yXXwwKSsxMj4+Ml09KGNbKGNbZj4+Ml18MCkrND4+Ml18MCkrMTAtKGNbKGNbZj4+Ml18MCkrOD4+Ml18MCk7Y1soY1tlPj4yXXwwKSsyND4+Ml09Y1tkPj4yXTtjWyhjW2U+PjJdfDApKzI4Pj4yXT0oKChjWyhjW2U+PjJdfDApKzI0Pj4yXXwwKSo5fDApPj4+MCkvMTB8MDtIdShjW2U+PjJdfDApO2k9ZztyZXR1cm59ZnVuY3Rpb24gQXUoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MDtkPWk7aT1pKzE2fDA7Zj1kKzh8MDtiPWQrNHwwO2U9ZDtjW2Y+PjJdPWE7Y1tlPj4yXT1jW2Y+PjJdO2NbYj4+Ml09Y1soY1tlPj4yXXwwKSs0MD4+Ml07aT1kO3JldHVybiBjW2I+PjJdfDB9ZnVuY3Rpb24gQnUoYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTA7ZT1pO2k9aSsxNnwwO2g9ZSs4fDA7Zz1lKzR8MDtmPWU7Y1toPj4yXT1hO2NbZz4+Ml09YjtjW2Y+PjJdPWQ7YT1NdShjW2g+PjJdfDAsY1tnPj4yXXwwLGNbZj4+Ml18MCl8MDtpPWU7cmV0dXJuIGF8MH1mdW5jdGlvbiBDdShiLGQsZSl7Yj1ifDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTA7az1pO2k9aSszMnwwO249aysyNHwwO209aysyMHwwO2w9aysxNnwwO2Y9aysxMnwwO2g9ays4fDA7Zz1rKzR8MDtqPWs7Y1tuPj4yXT1iO2NbbT4+Ml09ZDtjW2w+PjJdPWU7Y1tmPj4yXT1jW24+PjJdO2NbaD4+Ml09Y1ttPj4yXTtjW2c+PjJdPWNbY1tmPj4yXT4+Ml07aWYoKGNbbD4+Ml18MCk9PTA/KGNbKGNbZz4+Ml18MCkrMTY+PjJdfDApPj4+MDw9KGNbKGNbZz4+Ml18MCkrND4+Ml18MCk+Pj4wOjApe2Nbaj4+Ml09KGNbZz4+Ml18MCkrMjArMjQ7Y1soY1toPj4yXXwwKSsyOD4+Ml09KGNbZz4+Ml18MCkrMjA7bT1jW2g+PjJdfDA7bj1jW2Nbaj4+Ml0+PjJdfDA7Y1soY1toPj4yXXwwKSsyND4+Ml09bjtjW24rMjg+PjJdPW07Y1tjW2o+PjJdPj4yXT1jW2g+PjJdO249KGNbZj4+Ml18MCkrMzZ8MDtjW24+PjJdPShjW24+PjJdfDApKzE7YVsoY1toPj4yXXwwKSsxMj4+MF09MDtpPWs7cmV0dXJufUp1KGNbaD4+Ml18MCwxKTtpPWs7cmV0dXJufWZ1bmN0aW9uIER1KGEsYixkLGUpe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MDtsPWk7aT1pKzMyfDA7bz1sKzI4fDA7bj1sKzI0fDA7bT1sKzIwfDA7Zj1sKzE2fDA7aD1sKzEyfDA7aj1sKzh8MDtrPWwrNHwwO2c9bDtjW28+PjJdPWE7Y1tuPj4yXT1iO2NbbT4+Ml09ZDtjW2Y+PjJdPWU7Y1toPj4yXT1jW28+PjJdO2Nbaj4+Ml09Y1tuPj4yXTtjW2c+PjJdPSgoY1ttPj4yXXwwKT4+PjApJSgoY1soY1toPj4yXXwwKSs0ND4+Ml18MCk+Pj4wKXwwO2Nbaz4+Ml09KGNbKGNbaD4+Ml18MCkrNDg+PjJdfDApKyhjW2c+PjJdPDwyKTt3aGlsZSgxKXtpZigoY1tjW2s+PjJdPj4yXXwwKT09KGNbaj4+Ml18MCkpYnJlYWs7Y1trPj4yXT0oY1tjW2s+PjJdPj4yXXwwKSsxNn1jW2Nbaz4+Ml0+PjJdPWNbKGNbaj4+Ml18MCkrMTY+PjJdO2NbZz4+Ml09KChjW2Y+PjJdfDApPj4+MCklKChjWyhjW2g+PjJdfDApKzQ0Pj4yXXwwKT4+PjApfDA7Y1soY1tqPj4yXXwwKSs4Pj4yXT1jW2Y+PjJdO2NbKGNbaj4+Ml18MCkrMTY+PjJdPWNbKGNbKGNbaD4+Ml18MCkrNDg+PjJdfDApKyhjW2c+PjJdPDwyKT4+Ml07Y1soY1soY1toPj4yXXwwKSs0OD4+Ml18MCkrKGNbZz4+Ml08PDIpPj4yXT1jW2o+PjJdO2lmKChjW2Y+PjJdfDApPj4+MDw9KGNbKGNbaD4+Ml18MCkrMzI+PjJdfDApPj4+MCl7aT1sO3JldHVybn1jWyhjW2g+PjJdfDApKzMyPj4yXT1jW2Y+PjJdO2k9bDtyZXR1cm59ZnVuY3Rpb24gRXUoYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wO2Y9aTtpPWkrMTZ8MDtnPWYrOHwwO2Q9Zis0fDA7ZT1mO2NbZz4+Ml09YTtjW2Q+PjJdPWI7Y1tlPj4yXT1jW2c+PjJdO2lmKChjW2Q+PjJdfDApPj4+MD4oY1soY1tlPj4yXXwwKSszMj4+Ml18MCk+Pj4wKXtpPWY7cmV0dXJufUx1KGNbZT4+Ml18MCxjW2Q+PjJdfDApO2NbKGNbZT4+Ml18MCkrMzI+PjJdPShjW2Q+PjJdfDApLTE7aT1mO3JldHVybn1mdW5jdGlvbiBGdShhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wO2U9aTtpPWkrMTZ8MDtmPWUrOHwwO2I9ZSs0fDA7ZD1lO2NbZj4+Ml09YTtjW2I+PjJdPWNbZj4+Ml07Y1tkPj4yXT1jW2NbYj4+Ml0+PjJdO2lmKGNbKGNbYj4+Ml18MCkrNDA+PjJdfDApTHUoY1tiPj4yXXwwLDApO2Y9KGNbZD4+Ml18MCkrNHwwO2NbZj4+Ml09KGNbZj4+Ml18MCktKGNbKGNbYj4+Ml18MCkrMjQ+PjJdfDApO2Y9KGNbZD4+Ml18MCkrOHwwO2NbZj4+Ml09KGNbZj4+Ml18MCktKGNbKGNbYj4+Ml18MCkrMjA+PjJdfDApO2NbKGNbZD4+Ml18MCkrMTI+PjJdPShjWyhjW2Q+PjJdfDApKzQ+PjJdfDApKzEwLShjWyhjW2Q+PjJdfDApKzg+PjJdfDApO0h1KGNbYj4+Ml18MCk7S2QoY1soY1tiPj4yXXwwKSs1Nj4+Ml18MCk7S2QoY1soY1tiPj4yXXwwKSs0OD4+Ml18MCk7S2QoY1tiPj4yXXwwKTtpPWU7cmV0dXJufWZ1bmN0aW9uIEd1KGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MCxmPTAsZz0wO2Y9aTtpPWkrMTZ8MDtnPWYrMTJ8MDtiPWYrOHwwO2Q9Zis0fDA7ZT1mO2NbZz4+Ml09YTtjW2I+PjJdPWNbZz4+Ml07aWYoIShjWyhjW2I+PjJdfDApKzE2Pj4yXXwwKSl7aT1mO3JldHVybn1jW2Q+PjJdPWNbY1tiPj4yXT4+Ml07Y1tlPj4yXT1jWyhjW2Q+PjJdfDApKzQ+PjJdO2NbKGNbZD4+Ml18MCkrND4+Ml09MDtIdShjW2I+PjJdfDApO2NbKGNbZD4+Ml18MCkrND4+Ml09Y1tlPj4yXTtpPWY7cmV0dXJufWZ1bmN0aW9uIEh1KGEpe2E9YXwwO3ZhciBiPTAsZT0wLGY9MCxnPTA7Zz1pO2k9aSsxNnwwO2I9Zys4fDA7Zj1nKzR8MDtlPWc7Y1tiPj4yXT1hO2NbZj4+Ml09Y1tjW2I+PjJdPj4yXTt3aGlsZSgxKXtpZigoY1soY1tmPj4yXXwwKSsxNj4+Ml18MCk+Pj4wPD0oY1soY1tmPj4yXXwwKSs0Pj4yXXwwKT4+PjApYnJlYWs7YT1jWyhjW2Y+PjJdfDApKzIwKzI4Pj4yXXwwO2NbZT4+Ml09YTtpZihkW2ErMTQ+PjBdfDApYnJlYWs7SXUoY1tlPj4yXXwwKXwwO0p1KGNbZT4+Ml18MCwxKX1pZihjWyhjW2I+PjJdfDApKzQwPj4yXXwwKXtpPWc7cmV0dXJufWlmKCEoY1soY1tiPj4yXXwwKSs1Nj4+Ml18MCkpe2k9ZztyZXR1cm59S2QoY1soY1tiPj4yXXwwKSs1Nj4+Ml18MCk7Y1soY1tiPj4yXXwwKSs1Mj4+Ml09MDtjWyhjW2I+PjJdfDApKzU2Pj4yXT0wO2k9ZztyZXR1cm59ZnVuY3Rpb24gSXUoYil7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wO2U9aTtpPWkrMTZ8MDtkPWUrNHwwO2Y9ZTtjW2Q+PjJdPWI7Y1tmPj4yXT1jWyhjW2Q+PjJdfDApKzIwPj4yXTtjWyhjWyhjW2Q+PjJdfDApKzI4Pj4yXXwwKSsyND4+Ml09Y1soY1tkPj4yXXwwKSsyND4+Ml07Y1soY1soY1tkPj4yXXwwKSsyND4+Ml18MCkrMjg+PjJdPWNbKGNbZD4+Ml18MCkrMjg+PjJdO2NbKGNbZD4+Ml18MCkrMjQ+PjJdPTA7Y1soY1tkPj4yXXwwKSsyOD4+Ml09MDthWyhjW2Q+PjJdfDApKzEyPj4wXT0xO2I9KGNbZj4+Ml18MCkrMzZ8MDtjW2I+PjJdPShjW2I+PjJdfDApKy0xO2k9ZTtyZXR1cm4gY1tkPj4yXXwwfWZ1bmN0aW9uIEp1KGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wO2g9aTtpPWkrMzJ8MDtkPWgrMTZ8MDtlPWgrMTJ8MDtqPWgrOHwwO2Y9aCs0fDA7Zz1oO2NbZD4+Ml09YTtjW2U+PjJdPWI7Y1tmPj4yXT1jWyhjW2Q+PjJdfDApKzIwPj4yXTtjW2o+PjJdPSgoY1soY1tkPj4yXXwwKSs4Pj4yXXwwKT4+PjApJSgoY1soY1tmPj4yXXwwKSs0ND4+Ml18MCk+Pj4wKXwwO2NbZz4+Ml09KGNbKGNbZj4+Ml18MCkrNDg+PjJdfDApKyhjW2o+PjJdPDwyKTt3aGlsZSgxKXtiPShjW2NbZz4+Ml0+PjJdfDApKzE2fDA7aWYoKGNbY1tnPj4yXT4+Ml18MCk9PShjW2Q+PjJdfDApKWJyZWFrO2NbZz4+Ml09Yn1jW2NbZz4+Ml0+PjJdPWNbYj4+Ml07aj0oY1tmPj4yXXwwKSs0MHwwO2Nbaj4+Ml09KGNbaj4+Ml18MCkrLTE7aWYoIShjW2U+PjJdfDApKXtpPWg7cmV0dXJufUt1KGNbZD4+Ml18MCk7aT1oO3JldHVybn1mdW5jdGlvbiBLdShiKXtiPWJ8MDt2YXIgZD0wLGU9MCxmPTA7Zj1pO2k9aSsxNnwwO2Q9Zis0fDA7ZT1mO2NbZD4+Ml09YjtjW2U+PjJdPWNbKGNbZD4+Ml18MCkrMjA+PjJdO2lmKGFbKGNbZD4+Ml18MCkrMTM+PjBdfDApe2NbKGNbZD4+Ml18MCkrMTY+PjJdPWNbKGNbZT4+Ml18MCkrNTI+PjJdO2NbKGNbZT4+Ml18MCkrNTI+PjJdPWNbZD4+Ml19ZWxzZSBiaihjW2NbZD4+Ml0+PjJdfDApO2lmKCEoY1soY1tlPj4yXXwwKSsxNj4+Ml18MCkpe2k9ZjtyZXR1cm59ZT0oY1tjW2U+PjJdPj4yXXwwKSsxNnwwO2NbZT4+Ml09KGNbZT4+Ml18MCkrLTE7aT1mO3JldHVybn1mdW5jdGlvbiBMdShiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTA7bD1pO2k9aSszMnwwO2U9bCsyMHwwO2Y9bCsxNnwwO2c9bCsxMnwwO2g9bCs4fDA7az1sKzR8MDtqPWw7Y1tlPj4yXT1iO2NbZj4+Ml09ZDtpZigoKGNbKGNbZT4+Ml18MCkrMzI+PjJdfDApLShjW2Y+PjJdfDApfDApPj4+MDwoY1soY1tlPj4yXXwwKSs0ND4+Ml18MCk+Pj4wKXtjW2c+PjJdPSgoY1tmPj4yXXwwKT4+PjApJSgoY1soY1tlPj4yXXwwKSs0ND4+Ml18MCk+Pj4wKXwwO2NbaD4+Ml09KChjWyhjW2U+PjJdfDApKzMyPj4yXXwwKT4+PjApJSgoY1soY1tlPj4yXXwwKSs0ND4+Ml18MCk+Pj4wKXwwfWVsc2V7Y1tnPj4yXT0oKGNbKGNbZT4+Ml18MCkrNDQ+PjJdfDApPj4+MCkvMnwwO2NbaD4+Ml09KGNbZz4+Ml18MCktMX13aGlsZSgxKXtjW2s+PjJdPShjWyhjW2U+PjJdfDApKzQ4Pj4yXXwwKSsoY1tnPj4yXTw8Mik7d2hpbGUoMSl7Yj1jW2Nbaz4+Ml0+PjJdfDA7Y1tqPj4yXT1iO2lmKCFiKWJyZWFrO2lmKChjWyhjW2o+PjJdfDApKzg+PjJdfDApPj4+MDwoY1tmPj4yXXwwKT4+PjApe2Nbaz4+Ml09KGNbaj4+Ml18MCkrMTY7Y29udGludWV9Yj0oY1tlPj4yXXwwKSs0MHwwO2NbYj4+Ml09KGNbYj4+Ml18MCkrLTE7Y1tjW2s+PjJdPj4yXT1jWyhjW2o+PjJdfDApKzE2Pj4yXTtpZighKGFbKGNbaj4+Ml18MCkrMTI+PjBdfDApKUl1KGNbaj4+Ml18MCl8MDtLdShjW2o+PjJdfDApfWlmKChjW2c+PjJdfDApPT0oY1toPj4yXXwwKSlicmVhaztjW2c+PjJdPSgoKGNbZz4+Ml18MCkrMXwwKT4+PjApJSgoY1soY1tlPj4yXXwwKSs0ND4+Ml18MCk+Pj4wKXwwfWk9bDtyZXR1cm59ZnVuY3Rpb24gTXUoYixkLGUpe2I9YnwwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTA7bD1pO2k9aSszMnwwO2o9bCsyMHwwO209bCsxNnwwO2Y9bCsxMnwwO2c9bCs4fDA7aD1sKzR8MDtrPWw7Y1ttPj4yXT1iO2NbZj4+Ml09ZDtjW2c+PjJdPWU7Y1toPj4yXT1jW20+PjJdO2Nbaz4+Ml09MDtjW2s+PjJdPWNbKGNbKGNbaD4+Ml18MCkrNDg+PjJdfDApKygoKChjW2Y+PjJdfDApPj4+MCklKChjWyhjW2g+PjJdfDApKzQ0Pj4yXXwwKT4+PjApfDApPDwyKT4+Ml07d2hpbGUoMSl7aWYoY1trPj4yXXwwKWQ9KGNbKGNbaz4+Ml18MCkrOD4+Ml18MCkhPShjW2Y+PjJdfDApO2Vsc2UgZD0wO2U9Y1trPj4yXXwwO2lmKCFkKWJyZWFrO2Nbaz4+Ml09Y1tlKzE2Pj4yXX1pZihlKXtlPWNbaz4+Ml18MDtpZihhWyhjW2s+PjJdfDApKzEyPj4wXXwwKXtjW2o+PjJdPWU7bT1jW2o+PjJdfDA7aT1sO3JldHVybiBtfDB9ZWxzZXtjW2o+PjJdPUl1KGUpfDA7bT1jW2o+PjJdfDA7aT1sO3JldHVybiBtfDB9fWVsc2UgaWYoY1tnPj4yXXwwKXtjW2o+PjJdPU51KGNbaD4+Ml18MCxjW2Y+PjJdfDAsY1tnPj4yXXwwKXwwO209Y1tqPj4yXXwwO2k9bDtyZXR1cm4gbXwwfWVsc2V7Y1tqPj4yXT0wO209Y1tqPj4yXXwwO2k9bDtyZXR1cm4gbXwwfXJldHVybiAwfWZ1bmN0aW9uIE51KGIsZCxlKXtiPWJ8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wO3A9aTtpPWkrNDh8MDtmPXArMzJ8MDtnPXArMjh8MDtoPXArMjR8MDtqPXArMjB8MDtsPXArMTZ8MDttPXArMTJ8MDtvPXArOHwwO249cCs0fDA7az1wO2NbZz4+Ml09YjtjW2g+PjJdPWQ7Y1tqPj4yXT1lO2NbbT4+Ml09Y1tjW2c+PjJdPj4yXTtjW28+PjJdPTA7Y1tsPj4yXT0oY1soY1tnPj4yXXwwKSs0MD4+Ml18MCktKGNbKGNbZz4+Ml18MCkrMzY+PjJdfDApO2RvIGlmKChjW2o+PjJdfDApPT0xKXtpZigoY1tsPj4yXXwwKT4+PjA8KGNbKGNbbT4+Ml18MCkrMTI+PjJdfDApPj4+MD8oY1tsPj4yXXwwKT4+PjA8KGNbKGNbZz4+Ml18MCkrMjg+PjJdfDApPj4+MDowKXtpZighKE91KGNbZz4+Ml18MCl8MCkpYnJlYWs7aWYoKGNbKGNbZz4+Ml18MCkrMzY+PjJdfDApPj4+MD49KGNbbD4+Ml18MCk+Pj4wKWJyZWFrfWNbZj4+Ml09MDtvPWNbZj4+Ml18MDtpPXA7cmV0dXJuIG98MH13aGlsZSgwKTtpZigoY1soY1tnPj4yXXwwKSs0MD4+Ml18MCk+Pj4wPj0oY1soY1tnPj4yXXwwKSs0ND4+Ml18MCk+Pj4wKVB1KGNbZz4+Ml18MCk7ZG8gaWYoKGNbKGNbZz4+Ml18MCkrMTY+PjJdfDApIT0wPyhhWyhjWyhjW20+PjJdfDApKzIwKzI4Pj4yXXwwKSsxND4+MF18MCk9PTA6MCl7aWYoKChjWyhjW2c+PjJdfDApKzQwPj4yXXwwKSsxfDApPj4+MDwoY1soY1tnPj4yXXwwKSsyND4+Ml18MCk+Pj4wPyhPdShjW2c+PjJdfDApfDApPT0wOjApYnJlYWs7Y1tvPj4yXT1jWyhjW20+PjJdfDApKzIwKzI4Pj4yXTtKdShjW28+PjJdfDAsMCk7SXUoY1tvPj4yXXwwKXwwO2Nbbj4+Ml09Y1soY1tvPj4yXXwwKSsyMD4+Ml07aWYoKGNbKGNbbj4+Ml18MCkrMTI+PjJdfDApIT0oY1soY1tnPj4yXXwwKSsxMj4+Ml18MCkpe0t1KGNbbz4+Ml18MCk7Y1tvPj4yXT0wO2JyZWFrfWVsc2V7bT0oY1ttPj4yXXwwKSsxNnwwO2NbbT4+Ml09KGNbbT4+Ml18MCktKChjWyhjW24+PjJdfDApKzE2Pj4yXXwwKS0oY1soY1tnPj4yXXwwKSsxNj4+Ml18MCkpO2JyZWFrfX13aGlsZSgwKTtpZighKGNbbz4+Ml18MCkpY1tvPj4yXT1RdShjW2c+PjJdfDAsKGNbaj4+Ml18MCk9PTEmMSl8MDtpZigoY1tvPj4yXXwwKSE9MD8oY1trPj4yXT0oKGNbaD4+Ml18MCk+Pj4wKSUoKGNbKGNbZz4+Ml18MCkrNDQ+PjJdfDApPj4+MCl8MCxuPShjW2c+PjJdfDApKzQwfDAsY1tuPj4yXT0oY1tuPj4yXXwwKSsxLGNbKGNbbz4+Ml18MCkrOD4+Ml09Y1toPj4yXSxjWyhjW28+PjJdfDApKzE2Pj4yXT1jWyhjWyhjW2c+PjJdfDApKzQ4Pj4yXXwwKSsoY1trPj4yXTw8Mik+PjJdLGNbKGNbbz4+Ml18MCkrMjA+PjJdPWNbZz4+Ml0sY1soY1tvPj4yXXwwKSsyOD4+Ml09MCxjWyhjW28+PjJdfDApKzI0Pj4yXT0wLGFbKGNbbz4+Ml18MCkrMTI+PjBdPTEsY1tjWyhjW28+PjJdfDApKzQ+PjJdPj4yXT0wLGNbKGNbKGNbZz4+Ml18MCkrNDg+PjJdfDApKyhjW2s+PjJdPDwyKT4+Ml09Y1tvPj4yXSwoY1toPj4yXXwwKT4+PjA+KGNbKGNbZz4+Ml18MCkrMzI+PjJdfDApPj4+MCk6MCljWyhjW2c+PjJdfDApKzMyPj4yXT1jW2g+PjJdO2NbZj4+Ml09Y1tvPj4yXTtvPWNbZj4+Ml18MDtpPXA7cmV0dXJuIG98MH1mdW5jdGlvbiBPdShhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTA7ZD1pO2k9aSsxNnwwO2I9ZCs0fDA7ZT1kO2NbZT4+Ml09YTtpZigoY1s0MjRdfDApIT0wPygoY1soY1tlPj4yXXwwKSs0Pj4yXXwwKSsoY1soY1tlPj4yXXwwKSs4Pj4yXXwwKXwwKTw9KGNbNDIzXXwwKTowKXtjW2I+PjJdPWNbNDMxXTtlPWNbYj4+Ml18MDtpPWQ7cmV0dXJuIGV8MH1jW2I+PjJdPVN1KCl8MDtlPWNbYj4+Ml18MDtpPWQ7cmV0dXJuIGV8MH1mdW5jdGlvbiBQdShhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MDtrPWk7aT1pKzMyfDA7Yj1rKzI0fDA7ZD1rKzIwfDA7Zz1rKzE2fDA7Zj1rKzEyfDA7aj1rKzh8MDtoPWsrNHwwO2U9aztjW2I+PjJdPWE7YT1jWyhjW2I+PjJdfDApKzQ0Pj4yXTw8MTtjW2c+PjJdPWE7Y1tnPj4yXT0oY1tnPj4yXXwwKT4+PjA8MjU2PzI1NjphO2lmKGNbKGNbYj4+Ml18MCkrNDQ+PjJdfDApWWooKTtjW2Q+PjJdPWtnKGNbZz4+Ml08PDIsMCl8MDtpZihjWyhjW2I+PjJdfDApKzQ0Pj4yXXwwKVpqKCk7aWYoIShjW2Q+PjJdfDApKXtpPWs7cmV0dXJufWNbZj4+Ml09MDt3aGlsZSgxKXtpZigoY1tmPj4yXXwwKT4+PjA+PShjWyhjW2I+PjJdfDApKzQ0Pj4yXXwwKT4+PjApYnJlYWs7Y1toPj4yXT1jWyhjWyhjW2I+PjJdfDApKzQ4Pj4yXXwwKSsoY1tmPj4yXTw8Mik+PjJdO3doaWxlKDEpe2E9Y1toPj4yXXwwO2Nbaj4+Ml09YTtpZighYSlicmVhaztjW2U+PjJdPSgoY1soY1tqPj4yXXwwKSs4Pj4yXXwwKT4+PjApJSgoY1tnPj4yXXwwKT4+PjApfDA7Y1toPj4yXT1jWyhjW2o+PjJdfDApKzE2Pj4yXTtjWyhjW2o+PjJdfDApKzE2Pj4yXT1jWyhjW2Q+PjJdfDApKyhjW2U+PjJdPDwyKT4+Ml07Y1soY1tkPj4yXXwwKSsoY1tlPj4yXTw8Mik+PjJdPWNbaj4+Ml19Y1tmPj4yXT0oY1tmPj4yXXwwKSsxfUtkKGNbKGNbYj4+Ml18MCkrNDg+PjJdfDApO2NbKGNbYj4+Ml18MCkrNDg+PjJdPWNbZD4+Ml07Y1soY1tiPj4yXXwwKSs0ND4+Ml09Y1tnPj4yXTtpPWs7cmV0dXJufWZ1bmN0aW9uIFF1KGIsZCl7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MDtsPWk7aT1pKzMyfDA7ZT1sKzE2fDA7Zj1sKzEyfDA7Zz1sKzh8MDtoPWwrNHwwO2o9bDtjW2Y+PjJdPWI7Y1tnPj4yXT1kO2NbaD4+Ml09MDtkbyBpZihjWyhjW2Y+PjJdfDApKzUyPj4yXXwwKWs9NDtlbHNle2lmKChjWyhjW2Y+PjJdfDApKzQwPj4yXXwwKT09MD8oUnUoY1tmPj4yXXwwKXwwKSE9MDowKXtrPTQ7YnJlYWt9aWYoY1tnPj4yXXwwKVlqKCk7Y1tqPj4yXT1qaihjWyhjW2Y+PjJdfDApKzEyPj4yXXwwKXwwO2NbaD4+Ml09KGNbaj4+Ml18MCkrKGNbKGNbZj4+Ml18MCkrND4+Ml18MCk7aWYoY1tnPj4yXXwwKVpqKCk7aWYoY1tqPj4yXXwwKXtjW2NbaD4+Ml0+PjJdPWNbaj4+Ml07Y1soY1toPj4yXXwwKSs0Pj4yXT0oY1toPj4yXXwwKSszMjthWyhjW2g+PjJdfDApKzEzPj4wXT0wO2FbKGNbaD4+Ml18MCkrMTQ+PjBdPTA7YnJlYWt9Y1tlPj4yXT0wO2s9Y1tlPj4yXXwwO2k9bDtyZXR1cm4ga3wwfXdoaWxlKDApO2lmKChrfDApPT00KXtjW2g+PjJdPWNbKGNbZj4+Ml18MCkrNTI+PjJdO2NbKGNbZj4+Ml18MCkrNTI+PjJdPWNbKGNbaD4+Ml18MCkrMTY+PjJdO2NbKGNbaD4+Ml18MCkrMTY+PjJdPTB9aWYoY1soY1tmPj4yXXwwKSsxNj4+Ml18MCl7az0oY1tjW2Y+PjJdPj4yXXwwKSsxNnwwO2Nbaz4+Ml09KGNbaz4+Ml18MCkrMX1jW2U+PjJdPWNbaD4+Ml07az1jW2U+PjJdfDA7aT1sO3JldHVybiBrfDB9ZnVuY3Rpb24gUnUoYil7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTA7bD1pO2k9aSszMnwwO2Q9bCsyOHwwO2U9bCsyNHwwO2o9bDtrPWwrMjB8MDtnPWwrMTZ8MDtmPWwrMTJ8MDtoPWwrOHwwO2NbZT4+Ml09YjtpZighKGNbNDIyXXwwKSl7Y1tkPj4yXT0wO2s9Y1tkPj4yXXwwO2k9bDtyZXR1cm4ga3wwfWlmKChjWyhjW2U+PjJdfDApKzI0Pj4yXXwwKT4+PjA8Myl7Y1tkPj4yXT0wO2s9Y1tkPj4yXXwwO2k9bDtyZXR1cm4ga3wwfVlqKCk7aWYoKGNbNDIyXXwwKT4wKXtiPWNbKGNbZT4+Ml18MCkrMTI+PjJdfDA7bT1jWzQyMl18MDttPWFTKGJ8MCwoKGJ8MCk8MCk8PDMxPj4zMXwwLG18MCwoKG18MCk8MCk8PDMxPj4zMXwwKXwwO2I9ajtjW2I+PjJdPW07Y1tiKzQ+PjJdPUN9ZWxzZXtiPWNbNDIyXXwwO2I9YVMoLTEwMjQsLTEsYnwwLCgoYnwwKTwwKTw8MzE+PjMxfDApfDA7bT1qO2NbbT4+Ml09YjtjW20rND4+Ml09Q31vPWo7Yj1jW28+PjJdfDA7bz1jW28rND4+Ml18MDttPWNbKGNbZT4+Ml18MCkrMTI+PjJdfDA7bT1hUyhtfDAsKChtfDApPDApPDwzMT4+MzF8MCxjWyhjW2U+PjJdfDApKzI0Pj4yXXwwLDApfDA7bj1DO2lmKChvfDApPihufDApfChvfDApPT0obnwwKSZiPj4+MD5tPj4+MCl7bj1jWyhjW2U+PjJdfDApKzEyPj4yXXwwO249YVMobnwwLCgobnwwKTwwKTw8MzE+PjMxfDAsY1soY1tlPj4yXXwwKSsyND4+Ml18MCwwKXwwO289ajtjW28+PjJdPW47Y1tvKzQ+PjJdPUN9bz1qO289JGYoY1tvPj4yXXwwLGNbbys0Pj4yXXwwKXwwO2NbKGNbZT4+Ml18MCkrNTY+PjJdPW87Y1trPj4yXT1vO1pqKCk7YTpkbyBpZihjW2s+PjJdfDApe289YWcoY1trPj4yXXwwKXwwO2NbZz4+Ml09KG98MCkvKGNbKGNbZT4+Ml18MCkrMTI+PjJdfDApfDA7Y1tmPj4yXT0wO3doaWxlKDEpe2lmKChjW2Y+PjJdfDApPj0oY1tnPj4yXXwwKSlicmVhayBhO2NbaD4+Ml09KGNbaz4+Ml18MCkrKGNbKGNbZT4+Ml18MCkrND4+Ml18MCk7Y1tjW2g+PjJdPj4yXT1jW2s+PjJdO2NbKGNbaD4+Ml18MCkrND4+Ml09KGNbaD4+Ml18MCkrMzI7YVsoY1toPj4yXXwwKSsxMz4+MF09MTthWyhjW2g+PjJdfDApKzE0Pj4wXT0wO2NbKGNbaD4+Ml18MCkrMTY+PjJdPWNbKGNbZT4+Ml18MCkrNTI+PjJdO2NbKGNbZT4+Ml18MCkrNTI+PjJdPWNbaD4+Ml07Y1trPj4yXT0oY1trPj4yXXwwKSsoY1soY1tlPj4yXXwwKSsxMj4+Ml18MCk7Y1tmPj4yXT0oY1tmPj4yXXwwKSsxfX13aGlsZSgwKTtjW2Q+PjJdPShjWyhjW2U+PjJdfDApKzUyPj4yXXwwKSE9MCYxO289Y1tkPj4yXXwwO2k9bDtyZXR1cm4gb3wwfWZ1bmN0aW9uIFN1KCl7cmV0dXJuIGNbNzldfDB9ZnVuY3Rpb24gVHUoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MDtlPWk7aT1pKzE2fDA7ZD1lO2Y9ZSs4fDA7Yj1lKzR8MDtjW2Y+PjJdPWE7Y1tmPj4yXT0oY1tmPj4yXXwwKSs3Ji04O2NbYj4+Ml09SlIoKGNbZj4+Ml18MCkrOHwwKXwwO2E9Y1tmPj4yXXwwO2lmKGNbYj4+Ml18MCl7Zj1jW2I+PjJdfDA7Y1tmPj4yXT1hO2NbZis0Pj4yXT0oKGF8MCk8MCk8PDMxPj4zMTtjW2I+PjJdPShjW2I+PjJdfDApKzg7Zj1jW2I+PjJdfDA7aT1lO3JldHVybiBmfDB9ZWxzZXtjW2Q+PjJdPWE7UmQoNywyNjM5OSxkKTtmPWNbYj4+Ml18MDtpPWU7cmV0dXJuIGZ8MH1yZXR1cm4gMH1mdW5jdGlvbiBVdShhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTA7Yj1pO2k9aSsxNnwwO2U9Yis0fDA7ZD1iO2NbZT4+Ml09YTtjW2Q+PjJdPWNbZT4+Ml07Y1tkPj4yXT0oY1tkPj4yXXwwKSstODtLUihjW2Q+PjJdfDApO2k9YjtyZXR1cm59ZnVuY3Rpb24gVnUoYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MDtoPWk7aT1pKzMyfDA7Zz1oO2Q9aCsxNnwwO2U9aCsxMnwwO2Y9aCs4fDA7Y1tkPj4yXT1hO2NbZT4+Ml09YjtjW2Y+PjJdPWNbZD4+Ml07Y1tmPj4yXT0oY1tmPj4yXXwwKSstODtjW2Y+PjJdPU1SKGNbZj4+Ml18MCwoY1tlPj4yXXwwKSs4fDApfDA7aWYoY1tmPj4yXXwwKXthPWNbZT4+Ml18MDtnPWNbZj4+Ml18MDtjW2c+PjJdPWE7Y1tnKzQ+PjJdPSgoYXwwKTwwKTw8MzE+PjMxO2NbZj4+Ml09KGNbZj4+Ml18MCkrODtnPWNbZj4+Ml18MDtpPWg7cmV0dXJuIGd8MH1lbHNle2I9V3UoY1tkPj4yXXwwKXwwO2E9Y1tlPj4yXXwwO2NbZz4+Ml09YjtjW2crND4+Ml09YTtSZCg3LDI2MzYzLGcpO2c9Y1tmPj4yXXwwO2k9aDtyZXR1cm4gZ3wwfXJldHVybiAwfWZ1bmN0aW9uIFd1KGEpe2E9YXwwO3ZhciBiPTAsZD0wLGU9MDtkPWk7aT1pKzE2fDA7ZT1kKzR8MDtiPWQ7Y1tlPj4yXT1hO2NbYj4+Ml09Y1tlPj4yXTtjW2I+PjJdPShjW2I+PjJdfDApKy04O2k9ZDtyZXR1cm4gY1tjW2I+PjJdPj4yXXwwfWZ1bmN0aW9uIFh1KGEpe2E9YXwwO3ZhciBiPTAsZD0wO2Q9aTtpPWkrMTZ8MDtiPWQ7Y1tiPj4yXT1hO2k9ZDtyZXR1cm4gKGNbYj4+Ml18MCkrNyYtOHwwfWZ1bmN0aW9uIFl1KGEpe2E9YXwwO3ZhciBiPTA7Yj1pO2k9aSsxNnwwO2NbYj4+Ml09YTtpPWI7cmV0dXJuIDB9ZnVuY3Rpb24gWnUoYSl7YT1hfDA7dmFyIGI9MDtiPWk7aT1pKzE2fDA7Y1tiPj4yXT1hO2k9YjtyZXR1cm59ZnVuY3Rpb24gX3UoZCl7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wO2Y9aTtpPWkrMTZ8MDtnPWYrNHwwO2U9ZjtjW2c+PjJdPWQ7Y1tlPj4yXT1ZYltjW2c+PjJdJjI1NV0oMTYwOCwwKXwwO2lmKCEoY1tlPj4yXXwwKSl7Zz1jW2U+PjJdfDA7aT1mO3JldHVybiBnfDB9Y1tjW2U+PjJdPj4yXT0oY1tlPj4yXXwwKSs4O2JbKGNbZT4+Ml18MCkrOD4+MV09MDthWyhjW2U+PjJdfDApKzgrMj4+MF09MDtnPWNbZT4+Ml18MDtpPWY7cmV0dXJuIGd8MH1mdW5jdGlvbiAkdShiLGUpe2I9YnwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MDtvPWk7aT1pKzMyfDA7bj1vKzI0fDA7bT1vKzIwfDA7aD1vKzE2fDA7bD1vKzEyfDA7aj1vKzh8MDtmPW8rNHwwO2c9bztjW20+PjJdPWI7Y1toPj4yXT1lO2E6ZG8gc3dpdGNoKGRbMzkyODIrKGRbY1ttPj4yXT4+MF18MCk+PjBdfDApe2Nhc2UgNzp7Y1tsPj4yXT0xO3doaWxlKDEpe2lmKCEoZFsxODQwMysoZFsoY1ttPj4yXXwwKSsoY1tsPj4yXXwwKT4+MF18MCk+PjBdJjEpKWJyZWFrO2NbbD4+Ml09KGNbbD4+Ml18MCkrMX1jW2NbaD4+Ml0+PjJdPTE2MjtjW24+PjJdPWNbbD4+Ml07bj1jW24+PjJdfDA7aT1vO3JldHVybiBufDB9Y2FzZSAxMTp7aWYoKGRbKGNbbT4+Ml18MCkrMT4+MF18MCkhPTQ1KXtjW2NbaD4+Ml0+PjJdPTQ4O2Nbbj4+Ml09MTtuPWNbbj4+Ml18MDtpPW87cmV0dXJuIG58MH1jW2w+PjJdPTI7d2hpbGUoMSl7az1kWyhjW20+PjJdfDApKyhjW2w+PjJdfDApPj4wXXwwO2Nbaj4+Ml09aztpZighKChrfDApIT0wPyhjW2o+PjJdfDApIT0xMDowKSlicmVhaztjW2w+PjJdPShjW2w+PjJdfDApKzF9Y1tjW2g+PjJdPj4yXT0xNjI7Y1tuPj4yXT1jW2w+PjJdO249Y1tuPj4yXXwwO2k9bztyZXR1cm4gbnwwfWNhc2UgMTc6e2NbY1toPj4yXT4+Ml09MjI7Y1tuPj4yXT0xO249Y1tuPj4yXXwwO2k9bztyZXR1cm4gbnwwfWNhc2UgMTg6e2NbY1toPj4yXT4+Ml09MjM7Y1tuPj4yXT0xO249Y1tuPj4yXXwwO2k9bztyZXR1cm4gbnwwfWNhc2UgMTk6e2NbY1toPj4yXT4+Ml09MTtjW24+PjJdPTE7bj1jW24+PjJdfDA7aT1vO3JldHVybiBufDB9Y2FzZSAyMDp7Y1tjW2g+PjJdPj4yXT00NztjW24+PjJdPTE7bj1jW24+PjJdfDA7aT1vO3JldHVybiBufDB9Y2FzZSAyMTp7Y1tjW2g+PjJdPj4yXT00OTtjW24+PjJdPTE7bj1jW24+PjJdfDA7aT1vO3JldHVybiBufDB9Y2FzZSAxNjp7aWYoKGRbKGNbbT4+Ml18MCkrMT4+MF18MCk9PTQyPyhkWyhjW20+PjJdfDApKzI+PjBdfDApIT0wOjApe2NbbD4+Ml09MztjW2o+PjJdPWRbKGNbbT4+Ml18MCkrMj4+MF07d2hpbGUoMSl7aWYoKGNbaj4+Ml18MCk9PTQyPyhkWyhjW20+PjJdfDApKyhjW2w+PjJdfDApPj4wXXwwKT09NDc6MClicmVhaztrPWRbKGNbbT4+Ml18MCkrKGNbbD4+Ml18MCk+PjBdfDA7Y1tqPj4yXT1rO2lmKCFrKWJyZWFrO2NbbD4+Ml09KGNbbD4+Ml18MCkrMX1pZihjW2o+PjJdfDApY1tsPj4yXT0oY1tsPj4yXXwwKSsxO2NbY1toPj4yXT4+Ml09MTYyO2Nbbj4+Ml09Y1tsPj4yXTtuPWNbbj4+Ml18MDtpPW87cmV0dXJuIG58MH1jW2NbaD4+Ml0+PjJdPTUwO2Nbbj4+Ml09MTtuPWNbbj4+Ml18MDtpPW87cmV0dXJuIG58MH1jYXNlIDIyOntjW2NbaD4+Ml0+PjJdPTUxO2Nbbj4+Ml09MTtuPWNbbj4+Ml18MDtpPW87cmV0dXJuIG58MH1jYXNlIDE0OntjW2NbaD4+Ml0+PjJdPTM3O2Nbbj4+Ml09MSsoKGRbKGNbbT4+Ml18MCkrMT4+MF18MCk9PTYxJjEpO249Y1tuPj4yXXwwO2k9bztyZXR1cm4gbnwwfWNhc2UgMTI6e209ZFsoY1ttPj4yXXwwKSsxPj4wXXwwO2Nbaj4+Ml09bTtpZigobXwwKT09NjEpe2NbY1toPj4yXT4+Ml09Mzk7Y1tuPj4yXT0yO249Y1tuPj4yXXwwO2k9bztyZXR1cm4gbnwwfWlmKChjW2o+PjJdfDApPT02Mil7Y1tjW2g+PjJdPj4yXT0zNjtjW24+PjJdPTI7bj1jW24+PjJdfDA7aT1vO3JldHVybiBufDB9Zj1jW2g+PjJdfDA7aWYoKGNbaj4+Ml18MCk9PTYwKXtjW2Y+PjJdPTQ1O2Nbbj4+Ml09MjtuPWNbbj4+Ml18MDtpPW87cmV0dXJuIG58MH1lbHNle2NbZj4+Ml09NDA7Y1tuPj4yXT0xO249Y1tuPj4yXXwwO2k9bztyZXR1cm4gbnwwfX1jYXNlIDEzOnttPWRbKGNbbT4+Ml18MCkrMT4+MF18MDtjW2o+PjJdPW07aWYoKG18MCk9PTYxKXtjW2NbaD4+Ml0+PjJdPTQxO2Nbbj4+Ml09MjtuPWNbbj4+Ml18MDtpPW87cmV0dXJuIG58MH1mPWNbaD4+Ml18MDtpZigoY1tqPj4yXXwwKT09NjIpe2NbZj4+Ml09NDY7Y1tuPj4yXT0yO249Y1tuPj4yXXwwO2k9bztyZXR1cm4gbnwwfWVsc2V7Y1tmPj4yXT0zODtjW24+PjJdPTE7bj1jW24+PjJdfDA7aT1vO3JldHVybiBufDB9fWNhc2UgMTU6e2Y9Y1toPj4yXXwwO2lmKChkWyhjW20+PjJdfDApKzE+PjBdfDApIT02MSl7Y1tmPj4yXT0xNjM7Y1tuPj4yXT0xO249Y1tuPj4yXXwwO2k9bztyZXR1cm4gbnwwfWVsc2V7Y1tmPj4yXT0zNjtjW24+PjJdPTI7bj1jW24+PjJdfDA7aT1vO3JldHVybiBufDB9fWNhc2UgMTA6e2Y9Y1toPj4yXXwwO2lmKChkWyhjW20+PjJdfDApKzE+PjBdfDApIT0xMjQpe2NbZj4+Ml09NDQ7Y1tuPj4yXT0xO249Y1tuPj4yXXwwO2k9bztyZXR1cm4gbnwwfWVsc2V7Y1tmPj4yXT01MjtjW24+PjJdPTI7bj1jW24+PjJdfDA7aT1vO3JldHVybiBufDB9fWNhc2UgMjM6e2NbY1toPj4yXT4+Ml09MjY7Y1tuPj4yXT0xO249Y1tuPj4yXXwwO2k9bztyZXR1cm4gbnwwfWNhc2UgMjQ6e2NbY1toPj4yXT4+Ml09NDM7Y1tuPj4yXT0xO249Y1tuPj4yXXwwO2k9bztyZXR1cm4gbnwwfWNhc2UgMjU6e2NbY1toPj4yXT4+Ml09NTQ7Y1tuPj4yXT0xO249Y1tuPj4yXXwwO2k9bztyZXR1cm4gbnwwfWNhc2UgODp7Y1tmPj4yXT1kW2NbbT4+Ml0+PjBdO2NbbD4+Ml09MTt3aGlsZSgxKXtrPWRbKGNbbT4+Ml18MCkrKGNbbD4+Ml18MCk+PjBdfDA7Y1tqPj4yXT1rO2lmKCFrKWJyZWFrO2lmKChjW2o+PjJdfDApPT0oY1tmPj4yXXwwKSl7aWYoKGRbKGNbbT4+Ml18MCkrKChjW2w+PjJdfDApKzEpPj4wXXwwKSE9KGNbZj4+Ml18MCkpYnJlYWs7Y1tsPj4yXT0oY1tsPj4yXXwwKSsxfWNbbD4+Ml09KGNbbD4+Ml18MCkrMX1pZigoY1tqPj4yXXwwKT09Mzkpe2NbY1toPj4yXT4+Ml09OTc7Y1tuPj4yXT0oY1tsPj4yXXwwKSsxO249Y1tuPj4yXXwwO2k9bztyZXR1cm4gbnwwfWY9Y1toPj4yXXwwO2lmKGNbaj4+Ml18MCl7Y1tmPj4yXT01NTtjW24+PjJdPShjW2w+PjJdfDApKzE7bj1jW24+PjJdfDA7aT1vO3JldHVybiBufDB9ZWxzZXtjW2Y+PjJdPTE2MztjW24+PjJdPWNbbD4+Ml07bj1jW24+PjJdfDA7aT1vO3JldHVybiBufDB9fWNhc2UgMjY6e2lmKGRbMTg0MDMrKGRbKGNbbT4+Ml18MCkrMT4+MF18MCk+PjBdJjQpaz02NDtlbHNle2NbY1toPj4yXT4+Ml09MTIyO2Nbbj4+Ml09MTtuPWNbbj4+Ml18MDtpPW87cmV0dXJuIG58MH1icmVha31jYXNlIDM6e2s9NjQ7YnJlYWt9Y2FzZSA5OntjW2w+PjJdPTE7Y1tqPj4yXT1kW2NbbT4+Ml0+PjBdO3doaWxlKDEpe2lmKChjW2o+PjJdfDApPT05MylicmVhaztrPWRbKGNbbT4+Ml18MCkrKGNbbD4+Ml18MCk+PjBdfDA7Y1tqPj4yXT1rO2lmKCFrKWJyZWFrO2NbbD4+Ml09KGNbbD4+Ml18MCkrMX1jW2NbaD4+Ml0+PjJdPShjW2o+PjJdfDApPT05Mz81NToxNjM7Y1tuPj4yXT1jW2w+PjJdO249Y1tuPj4yXXwwO2k9bztyZXR1cm4gbnwwfWNhc2UgNjp7Y1tjW2g+PjJdPj4yXT0xMzU7Y1tsPj4yXT0xO3doaWxlKDEpe2Y9Y1tsPj4yXXwwO2lmKCEoZFsxODQwMysoZFsoY1ttPj4yXXwwKSsoY1tsPj4yXXwwKT4+MF18MCk+PjBdJjQpKWJyZWFrO2NbbD4+Ml09ZisxfWNbbj4+Ml09ZjtuPWNbbj4+Ml18MDtpPW87cmV0dXJuIG58MH1jYXNlIDU6Y2FzZSA0OntjW2c+PjJdPTA7Y1tjW2g+PjJdPj4yXT0xMzU7Y1tsPj4yXT0xO3doaWxlKDEpe2I9ZFsoY1ttPj4yXXwwKSsoY1tsPj4yXXwwKT4+MF18MDtjW2o+PjJdPWI7aWYoIWIpYnJlYWs7aWYoZFsxODQwMysoY1tqPj4yXSYyNTUpPj4wXSY3MCljW2c+PjJdPShjW2c+PjJdfDApKzE7ZWxzZXtpZigoY1tqPj4yXXwwKT09NDAmKGNbZz4+Ml18MCk+MCl7az0xMDc7YnJlYWt9aWYoKGNbaj4+Ml18MCkhPTU4KWJyZWFrO2lmKChkWyhjW20+PjJdfDApKygoY1tsPj4yXXwwKSsxKT4+MF18MCkhPTU4KWJyZWFrO2NbbD4+Ml09KGNbbD4+Ml18MCkrMX1jW2w+PjJdPShjW2w+PjJdfDApKzF9ZG8gaWYoKGt8MCk9PTEwNyl7d2hpbGUoMSl7Y1tsPj4yXT0oY1tsPj4yXXwwKSsxO2s9ZFsoY1ttPj4yXXwwKSsoY1tsPj4yXXwwKT4+MF18MDtjW2o+PjJdPWs7aWYoIWspYnJlYWs7aWYoKGNbaj4+Ml18MCkhPTQxPyhkWzE4NDAzKyhjW2o+PjJdJjI1NSk+PjBdJjF8MCk9PTA6MClrPTEwNztlbHNlIGJyZWFrfWlmKChjW2o+PjJdfDApPT00MSl7Y1tsPj4yXT0oY1tsPj4yXXwwKSsxO2JyZWFrfWVsc2V7Y1tjW2g+PjJdPj4yXT0xNjM7YnJlYWt9fXdoaWxlKDApO2lmKCEoY1tnPj4yXXwwKSljW2NbaD4+Ml0+PjJdPTE2MztjW24+PjJdPWNbbD4+Ml07bj1jW24+PjJdfDA7aT1vO3JldHVybiBufDB9Y2FzZSAxOntjW2w+PjJdPTE7d2hpbGUoMSl7Zj1jW2w+PjJdfDA7aWYoKGRbMzkyODIrKGRbKGNbbT4+Ml18MCkrKGNbbD4+Ml18MCk+PjBdfDApPj4wXXwwKT4xKWJyZWFrO2NbbD4+Ml09ZisxfWlmKGRbMTg0MDMrKGRbKGNbbT4+Ml18MCkrZj4+MF18MCk+PjBdJjcwKXtjW2w+PjJdPShjW2w+PjJdfDApKzE7YnJlYWsgYX1jW2NbaD4+Ml0+PjJdPTU1O2Nbbj4+Ml09VGkoY1ttPj4yXXwwLGNbbD4+Ml18MCxjW2g+PjJdfDApfDA7bj1jW24+PjJdfDA7aT1vO3JldHVybiBufDB9Y2FzZSAwOntpZigoZFsoY1ttPj4yXXwwKSsxPj4wXXwwKT09Mzkpe2NbY1toPj4yXT4+Ml09MTMzO2NbbD4+Ml09Mjt3aGlsZSgxKXtmPWNbbD4+Ml18MDtpZighKGRbMTg0MDMrKGRbKGNbbT4+Ml18MCkrKGNbbD4+Ml18MCk+PjBdfDApPj4wXSY4KSlicmVhaztjW2w+PjJdPWYrMX1pZighKChkWyhjW20+PjJdfDApK2Y+PjBdfDApPT0zOT8oKGNbbD4+Ml18MCklMnwwfDApPT0wOjApKWs9MTMxO2I6ZG8gaWYoKGt8MCk9PTEzMSl7Y1tjW2g+PjJdPj4yXT0xNjM7d2hpbGUoMSl7aWYoIShkWyhjW20+PjJdfDApKyhjW2w+PjJdfDApPj4wXXwwKSlicmVhayBiO2lmKChkWyhjW20+PjJdfDApKyhjW2w+PjJdfDApPj4wXXwwKT09MzkpYnJlYWsgYjtjW2w+PjJdPShjW2w+PjJdfDApKzF9fXdoaWxlKDApO2lmKGFbKGNbbT4+Ml18MCkrKGNbbD4+Ml18MCk+PjBdfDApY1tsPj4yXT0oY1tsPj4yXXwwKSsxO2Nbbj4+Ml09Y1tsPj4yXTtuPWNbbj4+Ml18MDtpPW87cmV0dXJuIG58MH1lbHNlIGs9MTM4O2JyZWFrfWNhc2UgMjp7az0xMzg7YnJlYWt9ZGVmYXVsdDp7Y1tjW2g+PjJdPj4yXT0xNjM7Y1tuPj4yXT0xO249Y1tuPj4yXXwwO2k9bztyZXR1cm4gbnwwfX13aGlsZSgwKTtpZigoa3wwKT09NjQpe2NbY1toPj4yXT4+Ml09MTM0O2RvIGlmKChkW2NbbT4+Ml0+PjBdfDApPT00OCl7aWYoKGRbKGNbbT4+Ml18MCkrMT4+MF18MCkhPTEyMD8oZFsoY1ttPj4yXXwwKSsxPj4wXXwwKSE9ODg6MClicmVhaztpZihkWzE4NDAzKyhkWyhjW20+PjJdfDApKzI+PjBdfDApPj4wXSY4KXtjW2w+PjJdPTM7d2hpbGUoMSl7Zj1jW2w+PjJdfDA7aWYoIShkWzE4NDAzKyhkWyhjW20+PjJdfDApKyhjW2w+PjJdfDApPj4wXXwwKT4+MF0mOCkpYnJlYWs7Y1tsPj4yXT1mKzF9Y1tuPj4yXT1mO249Y1tuPj4yXXwwO2k9bztyZXR1cm4gbnwwfX13aGlsZSgwKTtjW2w+PjJdPTA7d2hpbGUoMSl7Zj1jW2w+PjJdfDA7aWYoIShkWzE4NDAzKyhkWyhjW20+PjJdfDApKyhjW2w+PjJdfDApPj4wXXwwKT4+MF0mNCkpYnJlYWs7Y1tsPj4yXT1mKzF9aWYoKGRbKGNbbT4+Ml18MCkrZj4+MF18MCk9PTQ2KXtjW2w+PjJdPShjW2w+PjJdfDApKzE7d2hpbGUoMSl7aWYoIShkWzE4NDAzKyhkWyhjW20+PjJdfDApKyhjW2w+PjJdfDApPj4wXXwwKT4+MF0mNCkpYnJlYWs7Y1tsPj4yXT0oY1tsPj4yXXwwKSsxfWNbY1toPj4yXT4+Ml09MTMyfWlmKCEoKGRbKGNbbT4+Ml18MCkrKGNbbD4+Ml18MCk+PjBdfDApIT0xMDE/KGRbKGNbbT4+Ml18MCkrKGNbbD4+Ml18MCk+PjBdfDApIT02OTowKSlrPTgyO2RvIGlmKChrfDApPT04Mil7aWYoIShkWzE4NDAzKyhkWyhjW20+PjJdfDApKygoY1tsPj4yXXwwKSsxKT4+MF18MCk+PjBdJjQpKXtpZigoZFsoY1ttPj4yXXwwKSsoKGNbbD4+Ml18MCkrMSk+PjBdfDApIT00Mz8oZFsoY1ttPj4yXXwwKSsoKGNbbD4+Ml18MCkrMSk+PjBdfDApIT00NTowKWJyZWFrO2lmKCEoZFsxODQwMysoZFsoY1ttPj4yXXwwKSsoKGNbbD4+Ml18MCkrMik+PjBdfDApPj4wXSY0KSlicmVha31jW2w+PjJdPShjW2w+PjJdfDApKzI7d2hpbGUoMSl7aWYoIShkWzE4NDAzKyhkWyhjW20+PjJdfDApKyhjW2w+PjJdfDApPj4wXXwwKT4+MF0mNCkpYnJlYWs7Y1tsPj4yXT0oY1tsPj4yXXwwKSsxfWNbY1toPj4yXT4+Ml09MTMyfXdoaWxlKDApO3doaWxlKDEpe2lmKCEoZFsxODQwMysoZFsoY1ttPj4yXXwwKSsoY1tsPj4yXXwwKT4+MF18MCk+PjBdJjcwKSlicmVhaztjW2NbaD4+Ml0+PjJdPTE2MztjW2w+PjJdPShjW2w+PjJdfDApKzF9Y1tuPj4yXT1jW2w+PjJdO249Y1tuPj4yXXwwO2k9bztyZXR1cm4gbnwwfWVsc2UgaWYoKGt8MCk9PTEzOCljW2w+PjJdPTE7d2hpbGUoMSl7aWYoIShkWzE4NDAzKyhkWyhjW20+PjJdfDApKyhjW2w+PjJdfDApPj4wXXwwKT4+MF0mNzApKWJyZWFrO2NbbD4+Ml09KGNbbD4+Ml18MCkrMX1jW2NbaD4+Ml0+PjJdPTU1O2Nbbj4+Ml09Y1tsPj4yXTtuPWNbbj4+Ml18MDtpPW87cmV0dXJuIG58MH1mdW5jdGlvbiBhdihhLGIsZCxlKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MDtsPWk7aT1pKzQ4fDA7aD1sKzMyfDA7bj1sKzI4fDA7Zj1sKzI0fDA7bT1sKzIwfDA7aj1sKzh8MDtnPWwrNHwwO2s9bDtjW24+PjJdPWE7Y1tmPj4yXT1iO2NbbT4+Ml09ZTtjW2s+PjJdPWNbbj4+Ml07Y1soY1trPj4yXXwwKSs0Pj4yXT1jW20+PjJdO3doaWxlKDEpe2NbZz4+Ml09cHYoY1trPj4yXXwwLGNbZj4+Ml0mMjU1KXwwO2RvIGlmKChjW2c+PjJdfDApPj4+MD45OTkpaWYoKGNbZz4+Ml18MCk+Pj4wPD0xMzMxKXtydihjW2s+PjJdfDAsKGNbZz4+Ml18MCktMWUzfDApO2JyZWFrfWVsc2V7Y1tqPj4yXT1jW2Q+PjJdO2Nbais0Pj4yXT1jW2QrND4+Ml07bT1jW2s+PjJdfDA7bj1jW2Y+PjJdfDA7Y1toPj4yXT1jW2Q+PjJdO2NbaCs0Pj4yXT1jW2QrND4+Ml07c3YobSxuLGgpO252KGNbaz4+Ml18MCxjW2Y+PjJdJjI1NSxqKTtjW2Y+PjJdPTI1MjticmVha31lbHNle2E9Y1trPj4yXXwwO209Y1tnPj4yXXwwO249Y1tmPj4yXXwwO2NbaD4+Ml09Y1tkPj4yXTtjW2grND4+Ml09Y1tkKzQ+PjJdO3F2KGEsbSxuLGgpO2NbZj4+Ml09MjUyfXdoaWxlKDApO2lmKChjW2Y+PjJdfDApPT0yNTIpe2Y9OTticmVha31pZigoY1tjW2s+PjJdPj4yXXwwKT4+PjA8PSgoY1trPj4yXXwwKSs4fDApPj4+MCl7Zj05O2JyZWFrfX1pZigoZnwwKT09OSl7aT1sO3JldHVybn19ZnVuY3Rpb24gYnYoYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wO2Y9aTtpPWkrMTZ8MDtnPWYrOHwwO2Q9Zis0fDA7ZT1mO2NbZz4+Ml09YTtjW2Q+PjJdPWI7Y1tlPj4yXT1jW2c+PjJdO3doaWxlKDEpe2lmKChjW2NbZT4+Ml0+PjJdfDApPj4+MDw9KChjW2U+PjJdfDApKzh8MCk+Pj4wKWJyZWFrO212KGNbZT4+Ml18MCl9UWJbY1tkPj4yXSYyNTVdKGNbZT4+Ml18MCk7aT1mO3JldHVybn1mdW5jdGlvbiBjdihhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTA7ZT1pO2k9aSsxNnwwO2I9ZSs0fDA7ZD1lO2NbYj4+Ml09YTtpZighKGNbYj4+Ml18MCkpe2k9ZTtyZXR1cm59Y1tkPj4yXT1jW2NbYj4+Ml0+PjJdO1NmKGNbZD4+Ml18MCxjW2I+PjJdfDApO2E9Y1soY1tiPj4yXXwwKSs4Pj4yXXwwO2lmKGNbKGNbYj4+Ml18MCkrND4+Ml18MCljWyhjWyhjW2I+PjJdfDApKzQ+PjJdfDApKzg+PjJdPWE7ZWxzZSBjWyhjW2Q+PjJdfDApKzQ+PjJdPWE7aWYoY1soY1tiPj4yXXwwKSs4Pj4yXXwwKWNbKGNbKGNbYj4+Ml18MCkrOD4+Ml18MCkrND4+Ml09Y1soY1tiPj4yXXwwKSs0Pj4yXTtjWyhjW2I+PjJdfDApKzIwPj4yXT0xNDQzMjgzOTEyO2NbY1tiPj4yXT4+Ml09MDtUZihjW2Q+PjJdfDAsY1tiPj4yXXwwKTtpPWU7cmV0dXJufWZ1bmN0aW9uIGR2KGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTA7aD1pO2k9aSsxNnwwO2Q9aCsxMnwwO2U9aCs4fDA7Zj1oKzR8MDtnPWg7Y1tkPj4yXT1hO2NbZT4+Ml09YjtpZighKGNbZT4+Ml18MCkpe2k9aDtyZXR1cm59Y1tmPj4yXT0wO3doaWxlKDEpe2lmKChjW2Y+PjJdfDApPj0oY1tjW2U+PjJdPj4yXXwwKSlicmVhaztjW2c+PjJdPShjW2U+PjJdfDApKzgrKGNbZj4+Ml08PDQpO2V2KGNbZD4+Ml18MCxjWyhjW2c+PjJdfDApKzQ+PjJdfDApO2Z2KGNbZD4+Ml18MCxjWyhjW2c+PjJdfDApKzg+PjJdfDApO1RmKGNbZD4+Ml18MCxjW2NbZz4+Ml0+PjJdfDApO2NbZj4+Ml09KGNbZj4+Ml18MCkrMX1UZihjW2Q+PjJdfDAsY1tlPj4yXXwwKTtpPWg7cmV0dXJufWZ1bmN0aW9uIGV2KGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wO2Y9aTtpPWkrMTZ8MDtkPWYrNHwwO2U9ZjtjW2Q+PjJdPWE7Y1tlPj4yXT1iO2lmKCEoY1tlPj4yXXwwKSl7aT1mO3JldHVybn1sdihjW2Q+PjJdfDAsY1tlPj4yXXwwKTtpPWY7cmV0dXJufWZ1bmN0aW9uIGZ2KGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wO2Y9aTtpPWkrMTZ8MDtkPWYrNHwwO2U9ZjtjW2Q+PjJdPWE7Y1tlPj4yXT1iO2lmKCEoY1tlPj4yXXwwKSl7aT1mO3JldHVybn1ndihjW2Q+PjJdfDAsY1tlPj4yXXwwLDEpO2k9ZjtyZXR1cm59ZnVuY3Rpb24gZ3YoYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wO2o9aTtpPWkrMTZ8MDtlPWorMTJ8MDtmPWorOHwwO2c9ais0fDA7aD1qO2NbZT4+Ml09YTtjW2Y+PjJdPWI7Y1tnPj4yXT1kO3doaWxlKDEpe2lmKCEoY1tmPj4yXXwwKSlicmVhaztjW2g+PjJdPWNbKGNbZj4+Ml18MCkrNDg+PjJdO2V2KGNbZT4+Ml18MCxjW2NbZj4+Ml0+PjJdfDApO2h2KGNbZT4+Ml18MCxjWyhjW2Y+PjJdfDApKzI4Pj4yXXwwKTtpdihjW2U+PjJdfDAsY1soY1tmPj4yXXwwKSszMj4+Ml18MCk7ZXYoY1tlPj4yXXwwLGNbKGNbZj4+Ml18MCkrMzY+PjJdfDApO2l2KGNbZT4+Ml18MCxjWyhjW2Y+PjJdfDApKzQwPj4yXXwwKTtldihjW2U+PjJdfDAsY1soY1tmPj4yXXwwKSs0ND4+Ml18MCk7aXYoY1tlPj4yXXwwLGNbKGNbZj4+Ml18MCkrNTY+PjJdfDApO2l2KGNbZT4+Ml18MCxjWyhjW2Y+PjJdfDApKzYwPj4yXXwwKTtpZihjWyhjW2Y+PjJdfDApKzY0Pj4yXXwwKWR2KGNbZT4+Ml18MCxjWyhjW2Y+PjJdfDApKzY0Pj4yXXwwKTtpZihjW2c+PjJdfDApVGYoY1tlPj4yXXwwLGNbZj4+Ml18MCk7Y1tmPj4yXT1jW2g+PjJdO2NbZz4+Ml09MX1pPWo7cmV0dXJufWZ1bmN0aW9uIGh2KGEsYil7YT1hfDA7Yj1ifDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTA7aj1pO2k9aSsxNnwwO2U9aisxMnwwO2Y9ais4fDA7Zz1qKzR8MDtoPWo7Y1tlPj4yXT1hO2NbZj4+Ml09YjtpZighKGNbZj4+Ml18MCkpe2k9ajtyZXR1cm59Y1toPj4yXT0oY1tmPj4yXXwwKSs4O2NbZz4+Ml09MDt3aGlsZSgxKXthPWNbZT4+Ml18MDtpZigoY1tnPj4yXXwwKT49KGNbY1tmPj4yXT4+Ml18MCkpYnJlYWs7VGYoYSxjWyhjW2g+PjJdfDApKzQ+PjJdfDApO1RmKGNbZT4+Ml18MCxjWyhjW2g+PjJdfDApKzg+PjJdfDApO1RmKGNbZT4+Ml18MCxjWyhjW2g+PjJdfDApKzEyPj4yXXwwKTtpZigoZFsoY1toPj4yXXwwKSszNisxPj4wXXwwKT4+PjEmMSlUZihjW2U+PjJdfDAsY1soY1toPj4yXXwwKSs2ND4+Ml18MCk7aWYoKGRbKGNbaD4+Ml18MCkrMzYrMT4+MF18MCk+Pj4yJjEpZXYoY1tlPj4yXXwwLGNbKGNbaD4+Ml18MCkrNjQ+PjJdfDApO1JmKGNbZT4+Ml18MCxjWyhjW2g+PjJdfDApKzE2Pj4yXXwwKTtmdihjW2U+PjJdfDAsY1soY1toPj4yXXwwKSsyMD4+Ml18MCk7aXYoY1tlPj4yXXwwLGNbKGNbaD4+Ml18MCkrNDg+PjJdfDApO2t2KGNbZT4+Ml18MCxjWyhjW2g+PjJdfDApKzUyPj4yXXwwKTtjW2c+PjJdPShjW2c+PjJdfDApKzE7Y1toPj4yXT0oY1toPj4yXXwwKSs3Mn1UZihhLGNbZj4+Ml18MCk7aT1qO3JldHVybn1mdW5jdGlvbiBpdihhLGIpe2E9YXwwO2I9YnwwO3ZhciBkPTAsZT0wLGY9MDtmPWk7aT1pKzE2fDA7ZD1mKzR8MDtlPWY7Y1tkPj4yXT1hO2NbZT4+Ml09YjtpZighKGNbZT4+Ml18MCkpe2k9ZjtyZXR1cm59anYoY1tkPj4yXXwwLGNbZT4+Ml18MCk7aT1mO3JldHVybn1mdW5jdGlvbiBqdihhLGIpe2E9YXwwO2I9YnwwO3ZhciBlPTAsZj0wLGc9MDtnPWk7aT1pKzE2fDA7ZT1nKzR8MDtmPWc7Y1tlPj4yXT1hO2NbZj4+Ml09YjtkbyBpZighKGNbKGNbZj4+Ml18MCkrND4+Ml0mODQwNDk5Mikpe2lmKChjWyhjW2Y+PjJdfDApKzEyPj4yXXwwKSE9MD8oZFtjW2Y+PjJdPj4wXXwwfDApIT0xNTk6MClqdihjW2U+PjJdfDAsY1soY1tmPj4yXXwwKSsxMj4+Ml18MCk7aXYoY1tlPj4yXXwwLGNbKGNbZj4+Ml18MCkrMTY+PjJdfDApO2E9Y1tlPj4yXXwwO2I9KGNbZj4+Ml18MCkrMjB8MDtpZihjWyhjW2Y+PjJdfDApKzQ+PjJdJjIwNDgpe2Z2KGEsY1tiPj4yXXwwKTticmVha31lbHNle2V2KGEsY1tiPj4yXXwwKTticmVha319d2hpbGUoMCk7aWYoY1soY1tmPj4yXXwwKSs0Pj4yXSY2NTUzNilUZihjW2U+PjJdfDAsY1soY1tmPj4yXXwwKSs4Pj4yXXwwKTtpZihjWyhjW2Y+PjJdfDApKzQ+PjJdJjMyNzY4KXtpPWc7cmV0dXJufVRmKGNbZT4+Ml18MCxjW2Y+PjJdfDApO2k9ZztyZXR1cm59ZnVuY3Rpb24ga3YoYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wO2c9aTtpPWkrMTZ8MDtkPWcrOHwwO2U9Zys0fDA7Zj1nO2NbZD4+Ml09YTtjW2U+PjJdPWI7aWYoIShjW2U+PjJdfDApKXtpPWc7cmV0dXJufWNbZj4+Ml09MDt3aGlsZSgxKXthPWNbZD4+Ml18MDtpZigoY1tmPj4yXXwwKT49KGNbKGNbZT4+Ml18MCkrND4+Ml18MCkpYnJlYWs7VGYoYSxjWyhjW2NbZT4+Ml0+PjJdfDApKyhjW2Y+PjJdPDwzKT4+Ml18MCk7Y1tmPj4yXT0oY1tmPj4yXXwwKSsxfVRmKGEsY1tjW2U+PjJdPj4yXXwwKTtUZihjW2Q+PjJdfDAsY1tlPj4yXXwwKTtpPWc7cmV0dXJufWZ1bmN0aW9uIGx2KGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTA7aD1pO2k9aSsxNnwwO2Q9aCsxMnwwO2U9aCs4fDA7Zj1oKzR8MDtnPWg7Y1tkPj4yXT1hO2NbZT4+Ml09YjtjW2c+PjJdPWNbKGNbZT4+Ml18MCkrND4+Ml07Y1tmPj4yXT0wO3doaWxlKDEpe2E9Y1tkPj4yXXwwO2lmKChjW2Y+PjJdfDApPj0oY1tjW2U+PjJdPj4yXXwwKSlicmVhaztpdihhLGNbY1tnPj4yXT4+Ml18MCk7VGYoY1tkPj4yXXwwLGNbKGNbZz4+Ml18MCkrND4+Ml18MCk7VGYoY1tkPj4yXXwwLGNbKGNbZz4+Ml18MCkrOD4+Ml18MCk7Y1tmPj4yXT0oY1tmPj4yXXwwKSsxO2NbZz4+Ml09KGNbZz4+Ml18MCkrMjB9VGYoYSxjWyhjW2U+PjJdfDApKzQ+PjJdfDApO1RmKGNbZD4+Ml18MCxjW2U+PjJdfDApO2k9aDtyZXR1cm59ZnVuY3Rpb24gbXYoYil7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MDtkPWk7aT1pKzE2fDA7Zj1kKzR8MDtlPWQ7Y1tmPj4yXT1iO2c9Y1tmPj4yXXwwO2I9Y1tnPj4yXXwwO2NbZz4+Ml09YistMTY7Y1tlPj4yXT1iO252KGNbZj4+Ml18MCxhWyhjW2U+PjJdfDApKzI+PjBdfDAsKGNbZT4+Ml18MCkrNHwwKTtpPWQ7cmV0dXJufWZ1bmN0aW9uIG52KGIsZSxmKXtiPWJ8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MDtqPWk7aT1pKzE2fDA7bD1qKzh8MDtrPWorMTJ8MDtnPWorNHwwO2g9ajtjW2w+PjJdPWI7YVtrPj4wXT1lO2NbZz4+Ml09ZjtjW2g+PjJdPWNbKGNbbD4+Ml18MCkrND4+Ml07ZG8gc3dpdGNoKGRbaz4+MF18MHwwKXtjYXNlIDIwNjpjYXNlIDE5NTpjYXNlIDE5NDpjYXNlIDE2Mzp7ZnYoY1tjW2g+PjJdPj4yXXwwLGNbY1tnPj4yXT4+Ml18MCk7aT1qO3JldHVybn1jYXNlIDE3MzpjYXNlIDE3Mjp7aXYoY1tjW2g+PjJdPj4yXXwwLGNbY1tnPj4yXT4+Ml18MCk7aT1qO3JldHVybn1jYXNlIDIyNjpjYXNlIDIyNDpjYXNlIDIxODpjYXNlIDIwOTpjYXNlIDIwODpjYXNlIDIwNzpjYXNlIDIwNDpjYXNlIDIwMjpjYXNlIDE5OTpjYXNlIDE4NzpjYXNlIDE4NjpjYXNlIDE3Nzp7ZXYoY1tjW2g+PjJdPj4yXXwwLGNbY1tnPj4yXT4+Ml18MCk7aT1qO3JldHVybn1jYXNlIDIxMjpjYXNlIDIxMTpjYXNlIDIwMDpjYXNlIDE5Mzp7aHYoY1tjW2g+PjJdPj4yXXwwLGNbY1tnPj4yXT4+Ml18MCk7aT1qO3JldHVybn1jYXNlIDI1MDpjYXNlIDE5Njp7ZHYoY1tjW2g+PjJdPj4yXXwwLGNbY1tnPj4yXT4+Ml18MCk7aT1qO3JldHVybn1jYXNlIDI0MTpjYXNlIDIzNjpjYXNlIDIyNzpjYXNlIDIyNTpjYXNlIDIxNTpjYXNlIDIwMzpjYXNlIDIwMTp7aXYoY1tjW2g+PjJdPj4yXXwwLGNbY1tnPj4yXT4+Ml18MCk7aT1qO3JldHVybn1jYXNlIDIyMDpjYXNlIDIxNzpjYXNlIDIxNjp7a3YoY1tjW2g+PjJdPj4yXXwwLGNbY1tnPj4yXT4+Ml18MCk7aT1qO3JldHVybn1jYXNlIDIzNzpjYXNlIDIzMjp7b3YoY1tjW2g+PjJdPj4yXXwwLGNbY1tnPj4yXT4+Ml18MCk7aT1qO3JldHVybn1jYXNlIDIzNDp7a3YoY1tjW2g+PjJdPj4yXXwwLGNbKGNbZz4+Ml18MCkrND4+Ml18MCk7aT1qO3JldHVybn1kZWZhdWx0OntpPWo7cmV0dXJufX13aGlsZSgwKX1mdW5jdGlvbiBvdihhLGIpe2E9YXwwO2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTA7Zz1pO2k9aSsxNnwwO2Q9Zys4fDA7ZT1nKzR8MDtmPWc7Y1tkPj4yXT1hO2NbZT4+Ml09Yjt3aGlsZSgxKXtpZighKGNbZT4+Ml18MCkpYnJlYWs7Y1tmPj4yXT1jW2U+PjJdO2NbZT4+Ml09Y1soY1tlPj4yXXwwKSsyOD4+Ml07aXYoY1tkPj4yXXwwLGNbKGNbZj4+Ml18MCkrMTY+PjJdfDApO2V2KGNbZD4+Ml18MCxjWyhjW2Y+PjJdfDApKzIwPj4yXXwwKTtmdihjW2Q+PjJdfDAsY1soY1tmPj4yXXwwKSs4Pj4yXXwwKTtrdihjW2Q+PjJdfDAsY1soY1tmPj4yXXwwKSsyND4+Ml18MCk7VGYoY1tkPj4yXXwwLGNbZj4+Ml18MCl9aT1nO3JldHVybn1mdW5jdGlvbiBwdihmLGcpe2Y9ZnwwO2c9Z3wwO3ZhciBoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MDtwPWk7aT1pKzMyfDA7aD1wKzE2fDA7cT1wKzEyfDA7aj1wKzIxfDA7az1wKzh8MDtuPXArNHwwO2w9cCsyMHwwO209cDtjW3E+PjJdPWY7YVtqPj4wXT1nO2Nbbj4+Ml09ZVtjW2NbcT4+Ml0+PjJdPj4xXTtpZigoY1tuPj4yXXwwKT49MWUzKXtjW2g+PjJdPWNbbj4+Ml07cT1jW2g+PjJdfDA7aT1wO3JldHVybiBxfDB9d2hpbGUoMSl7Y1trPj4yXT1iWzE0NTk0KyhjW24+PjJdPDwxKT4+MV07Y1trPj4yXT0oY1trPj4yXXwwKSsoZFtqPj4wXXwwKTtpZighKChjW2s+PjJdfDApPDB8KGNbaz4+Ml18MCk+PTE1NjcpPyhkWzM3NjE5KyhjW2s+PjJdfDApPj4wXXwwKT09KGRbaj4+MF18MCk6MCl7bz0xMzticmVha31pZigoZFtqPj4wXXwwKT4+PjA+PTk2KWJyZWFrO3E9YVszOTE4NisoZFtqPj4wXXwwKT4+MF18MDthW2w+PjBdPXE7aWYoIShxJjI1NSkpYnJlYWs7YVtqPj4wXT1hW2w+PjBdfDB9aWYoKG98MCk9PTEzKXtjW2g+PjJdPWVbMTE0NTYrKGNbaz4+Ml08PDEpPj4xXTtxPWNbaD4+Ml18MDtpPXA7cmV0dXJuIHF8MH1jW20+PjJdPShjW2s+PjJdfDApLShkW2o+PjBdfDApKzk2O2lmKCgoY1ttPj4yXXwwKTwxNTY3PyhkWzM3NjE5KyhjW20+PjJdfDApPj4wXXwwKT09OTY6MCk/KGRbaj4+MF18MCk+MDowKXtjW2g+PjJdPWVbMTE0NTYrKGNbbT4+Ml08PDEpPj4xXTtxPWNbaD4+Ml18MDtpPXA7cmV0dXJuIHF8MH1jW2g+PjJdPWVbMTU1MDYrKGNbbj4+Ml08PDEpPj4xXTtxPWNbaD4+Ml18MDtpPXA7cmV0dXJuIHF8MH1mdW5jdGlvbiBxdihkLGUsZixnKXtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDt2YXIgaD0wLGo9MCxrPTAsbD0wLG09MDttPWk7aT1pKzE2fDA7aD1tKzEyfDA7aj1tKzh8MDtrPW0rNHwwO2w9bTtjW2g+PjJdPWQ7Y1tqPj4yXT1lO2Nbaz4+Ml09ZjtkPWNbaD4+Ml18MDtjW2Q+PjJdPShjW2Q+PjJdfDApKzE2O2lmKChjW2NbaD4+Ml0+PjJdfDApPj4+MD49KChjW2g+PjJdfDApKzgrMTYwMHwwKT4+PjApe3R2KGNbaD4+Ml18MCk7aT1tO3JldHVybn1pZigoY1tqPj4yXXwwKT40NTUpY1tqPj4yXT0oY1tqPj4yXXwwKSszMzI7Y1tsPj4yXT1jW2NbaD4+Ml0+PjJdO2JbY1tsPj4yXT4+MV09Y1tqPj4yXTthWyhjW2w+PjJdfDApKzI+PjBdPWNbaz4+Ml07bD0oY1tsPj4yXXwwKSs0fDA7Y1tsPj4yXT1jW2c+PjJdO2NbbCs0Pj4yXT1jW2crND4+Ml07aT1tO3JldHVybn1mdW5jdGlvbiBydihmLGcpe2Y9ZnwwO2c9Z3wwO3ZhciBoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTAsRT0wLEY9MCxHPTAsSD0wLEk9MCxKPTAsSz0wLEw9MCxNPTAsTj0wLE89MCxQPTAsUT0wLFI9MCxTPTAsVD0wLFU9MCxWPTAsVz0wLFg9MCxZPTAsWj0wLF89MCwkPTAsYWE9MCxiYT0wLGNhPTAsZGE9MCxlYT0wLGZhPTA7ZmE9aTtpPWkrMjg4fDA7aD1mYSsyODB8MDtUPWZhKzQwfDA7Uz1mYSszMnwwO1Y9ZmErMjR8MDtVPWZhKzE2fDA7Wj1mYSs4fDA7Uj1mYTskPWZhKzI3NnwwO2FhPWZhKzI3MnwwO2NhPWZhKzI2OHwwO2JhPWZhKzI2NHwwO2RhPWZhKzI2MHwwO2VhPWZhKzI1NnwwO189ZmErMjUyfDA7WD1mYSsyNDB8MDtQPWZhKzIyOHwwO1E9ZmErMjE2fDA7bT1mYSsxOTJ8MDtvPWZhKzE4OHwwO0Q9ZmErMTg0fDA7dj1mYSsxODB8MDtzPWZhKzE3NnwwO1c9ZmErMTY4fDA7RT1mYSsxNjR8MDt0PWZhKzE2MHwwO3E9ZmErMTU2fDA7Rj1mYSsxNTJ8MDt1PWZhKzE0OHwwO3I9ZmErMTQ0fDA7QT1mYSsxNDB8MDtCPWZhKzEzNnwwO0k9ZmErMTMyfDA7Sj1mYSsxMjh8MDtMPWZhKzEyNHwwO0s9ZmErMTIwfDA7TT1mYSsxMTZ8MDtOPWZhKzExMnwwO089ZmErMTA4fDA7bj1mYSsxMDR8MDtZPWZhKzk2fDA7dz1mYSs5MnwwO3k9ZmErODh8MDtrPWZhKzg0fDA7ej1mYSs4MHwwO2w9ZmErNzZ8MDt4PWZhKzcyfDA7Qz1mYSs2OHwwO0g9ZmErNjR8MDtHPWZhKzYwfDA7cD1mYSs1NnwwO2o9ZmErNDh8MDtjWyQ+PjJdPWY7Y1thYT4+Ml09ZztjW18+PjJdPWNbKGNbJD4+Ml18MCkrND4+Ml07Y1tkYT4+Ml09Y1tjWyQ+PjJdPj4yXTtpZigoZFsyNjQ4NisoY1thYT4+Ml08PDEpKzE+PjBdfDApPT0wPyhjW2NbJD4+Ml0+PjJdfDApPj4+MD49KChjWyQ+PjJdfDApKzgrMTU4NHwwKT4+PjA6MCl7dHYoY1skPj4yXXwwKTtpPWZhO3JldHVybn1hOmRvIHN3aXRjaChjW2FhPj4yXXwwKXtjYXNlIDA6e2FbKGNbXz4+Ml18MCkrNDA5Pj4wXT0xO2JyZWFrfWNhc2UgMTp7YVsoY1tfPj4yXXwwKSs0MDk+PjBdPTI7YnJlYWt9Y2FzZSAyOnt1dihjW18+PjJdfDApO2JyZWFrfWNhc2UgMzp7dnYoY1tfPj4yXXwwLGNbKGNbZGE+PjJdfDApKy0xNis0Pj4yXXwwKTticmVha31jYXNlIDQ6e2NbKGNbZGE+PjJdfDApKzE2KzQ+PjJdPTc7YnJlYWt9Y2FzZSA3OmNhc2UgNjpjYXNlIDU6e2NbKGNbZGE+PjJdfDApKzQ+PjJdPWRbKGNbZGE+PjJdfDApKzI+PjBdO2JyZWFrfWNhc2UgOTpjYXNlIDg6e3d2KGNbXz4+Ml18MCk7YnJlYWt9Y2FzZSAxMDp7eHYoY1tfPj4yXXwwKTticmVha31jYXNlIDExOnt5dihjW18+PjJdfDAsMCwoY1tkYT4+Ml18MCkrNHwwKTticmVha31jYXNlIDEyOnt5dihjW18+PjJdfDAsMSwoY1tkYT4+Ml18MCkrNHwwKTticmVha31jYXNlIDEzOnt5dihjW18+PjJdfDAsMiwoY1tkYT4+Ml18MCkrNHwwKTticmVha31jYXNlIDE0Ont6dihjW18+PjJdfDAsKGNbZGE+PjJdfDApKy0xNis0fDAsKGNbZGE+PjJdfDApKzR8MCxjWyhjW2RhPj4yXXwwKSstNjQrND4+Ml18MCwwLDAsY1soY1tkYT4+Ml18MCkrLTMyKzQ+PjJdfDApO2JyZWFrfWNhc2UgMTU6e0F2KGNbXz4+Ml18MCk7YnJlYWt9Y2FzZSAyMTU6Y2FzZSA5MDpjYXNlIDc2OmNhc2UgNjc6Y2FzZSA1NzpjYXNlIDQyOmNhc2UgMjI6Y2FzZSAxOTpjYXNlIDE2OntjWyhjW2RhPj4yXXwwKSsxNis0Pj4yXT0wO2JyZWFrfWNhc2UgMTc6e2NbKGNbZGE+PjJdfDApKy0zMis0Pj4yXT0xO2JyZWFrfWNhc2UgNDM6Y2FzZSAxODp7Y1soY1tkYT4+Ml18MCkrND4+Ml09MTticmVha31jYXNlIDIwOntCdihjW18+PjJdfDAsKGNbZGE+PjJdfDApKy0zMis0fDAsKGNbZGE+PjJdfDApKy0xNis0fDAsY1soY1tkYT4+Ml18MCkrND4+Ml0mMjU1LDApO2JyZWFrfWNhc2UgMjE6e0J2KGNbXz4+Ml18MCwwLDAsMCxjWyhjW2RhPj4yXXwwKSs0Pj4yXXwwKTtmdihjW2NbXz4+Ml0+PjJdfDAsY1soY1tkYT4+Ml18MCkrND4+Ml18MCk7YnJlYWt9Y2FzZSAyMzp7aWYoKGNbKGNbZGE+PjJdfDApKzQrND4+Ml18MCk9PTU/KHpkKGNbKGNbZGE+PjJdfDApKzQ+PjJdfDAsMjQ3NDUsNSl8MCk9PTA6MCl7Y1soY1tkYT4+Ml18MCkrLTE2KzQ+PjJdPTk2O2JyZWFrIGF9Y1soY1tkYT4+Ml18MCkrLTE2KzQ+PjJdPTA7Xz1jW18+PjJdfDA7Wj1jWyhjW2RhPj4yXXwwKSs0Pj4yXXwwO2NbUj4+Ml09Y1soY1tkYT4+Ml18MCkrNCs0Pj4yXTtjW1IrND4+Ml09WjtFaChfLDI3MTUwLFIpO2JyZWFrfWNhc2UgMjQ6e0N2KGNbXz4+Ml18MCwoY1tkYT4+Ml18MCkrLTE2KzR8MCwoY1tkYT4+Ml18MCkrNHwwKTticmVha31jYXNlIDk2OmNhc2UgNjA6Y2FzZSAyNTp7Y1soY1tkYT4+Ml18MCkrMTYrNCs0Pj4yXT0wO2NbKGNbZGE+PjJdfDApKzE2KzQ+PjJdPTA7YnJlYWt9Y2FzZSAyNjp7Y1soY1tkYT4+Ml18MCkrLTQ4KzQrND4+Ml09KGNbKGNbZGE+PjJdfDApKzQ+PjJdfDApKyhjWyhjW2RhPj4yXXwwKSs0KzQ+PjJdfDApLShjWyhjW2RhPj4yXXwwKSstNDgrND4+Ml18MCk7YnJlYWt9Y2FzZSAyNzp7Y1soY1tkYT4+Ml18MCkrLTgwKzQrND4+Ml09KGNbKGNbZGE+PjJdfDApKzQ+PjJdfDApKyhjWyhjW2RhPj4yXXwwKSs0KzQ+PjJdfDApLShjWyhjW2RhPj4yXXwwKSstODArND4+Ml18MCk7YnJlYWt9Y2FzZSAyODp7Y1soY1tkYT4+Ml18MCkrLTE2KzQrND4+Ml09KGNbKGNbZGE+PjJdfDApKzQrND4+Ml18MCkrKChjWyhjW2RhPj4yXXwwKSs0Pj4yXXwwKS0oY1soY1tkYT4+Ml18MCkrLTE2KzQ+PjJdfDApKTticmVha31jYXNlIDYyOmNhc2UgMjk6e189KGNbXz4+Ml18MCkrODR8MDtaPShjW2RhPj4yXXwwKSs0fDA7Y1tfPj4yXT1jW1o+PjJdO2NbXys0Pj4yXT1jW1orND4+Ml07YnJlYWt9Y2FzZSAzMjpjYXNlIDMwOntEdihjW18+PjJdfDAsKGNbZGE+PjJdfDApKzR8MCk7YnJlYWt9Y2FzZSAzMTp7RHYoY1tfPj4yXXwwLChjW2RhPj4yXXwwKSstMTYrNHwwKTticmVha31jYXNlIDMzOntjW1A+PjJdPUV2KGNbXz4+Ml18MCwxNTUsY1soY1tkYT4+Ml18MCkrND4+Ml18MCwwLDApfDA7Y1tQKzQ+PjJdPWNbKGNbZGE+PjJdfDApKy0xNis0Pj4yXTtjW1ArOD4+Ml09Y1soY1tkYT4+Ml18MCkrNCs4Pj4yXTtEdihjW18+PjJdfDAsUCk7YnJlYWt9Y2FzZSAzNDp7Wj1jW18+PjJdfDA7WT0oY1tkYT4+Ml18MCkrNHwwO2NbaD4+Ml09Y1tZPj4yXTtjW2grND4+Ml09Y1tZKzQ+PjJdO0Z2KFEsWiw5NyxoKTtEdihjW18+PjJdfDAsUSk7YnJlYWt9Y2FzZSAzNTp7R3YoY1tfPj4yXXwwLGNbKGNbZGE+PjJdfDApKzQ+PjJdfDApO2JyZWFrfWNhc2UgMzY6e0h2KGNbXz4+Ml18MCwwLGNbKGNbZGE+PjJdfDApKy0xNis0Pj4yXXwwLGNbKGNbZGE+PjJdfDApKzQ+PjJdfDAsY1soY1tkYT4+Ml18MCkrLTMyKzQ+PjJdfDApO2JyZWFrfWNhc2UgMzc6e0l2KGNbXz4+Ml18MCwwLDAsMCwwLGNbKGNbZGE+PjJdfDApKzQ+PjJdfDAsMCwwLDAsMCwxKTticmVha31jYXNlIDM4OntKdihjW18+PjJdfDAsY1soY1tkYT4+Ml18MCkrLTE2KzQ+PjJdfDApO2JyZWFrfWNhc2UgMzk6e0t2KGNbXz4+Ml18MCwwLChjW2RhPj4yXXwwKSstMzIrNHwwLGNbKGNbZGE+PjJdfDApKy0xNis0Pj4yXXwwLGNbKGNbZGE+PjJdfDApKzQ+PjJdfDApO2JyZWFrfWNhc2UgNDA6e0x2KGNbXz4+Ml18MCxjWyhjW2RhPj4yXXwwKSs0Pj4yXXwwKTticmVha31jYXNlIDQxOntNdihjW18+PjJdfDAsKGNbZGE+PjJdfDApKzR8MCk7YnJlYWt9Y2FzZSA0NDp7Y1soY1tkYT4+Ml18MCkrMTYrND4+Ml09MDticmVha31jYXNlIDQ1OntjWyhjW2RhPj4yXXwwKSstMTYrND4+Ml09Y1soY1tkYT4+Ml18MCkrLTE2KzQ+PjJdJn5jWyhjW2RhPj4yXXwwKSs0KzQ+PjJdfGNbKGNbZGE+PjJdfDApKzQ+PjJdO2JyZWFrfWNhc2UgNDY6e2NbKGNbZGE+PjJdfDApKy0xNis0Pj4yXT0wO2NbKGNbZGE+PjJdfDApKy0xNis0KzQ+PjJdPTA7YnJlYWt9Y2FzZSA0Nzp7Y1soY1tkYT4+Ml18MCkrLTMyKzQ+PjJdPTA7Y1soY1tkYT4+Ml18MCkrLTMyKzQrND4+Ml09MDticmVha31jYXNlIDQ4OntjWyhjW2RhPj4yXXwwKSstMzIrND4+Ml09Y1soY1tkYT4+Ml18MCkrND4+Ml07Y1soY1tkYT4+Ml18MCkrLTMyKzQrND4+Ml09MjU1O2JyZWFrfWNhc2UgNDk6e2NbKGNbZGE+PjJdfDApKy0zMis0Pj4yXT1jWyhjW2RhPj4yXXwwKSs0Pj4yXTw8ODtjWyhjW2RhPj4yXXwwKSstMzIrNCs0Pj4yXT02NTI4MDticmVha31jYXNlIDUwOntjWyhjW2RhPj4yXXwwKSstMTYrND4+Ml09NzticmVha31jYXNlIDUxOntjWyhjW2RhPj4yXXwwKSstMTYrND4+Ml09ODticmVha31jYXNlIDUyOntjWyhjW2RhPj4yXXwwKSs0Pj4yXT05O2JyZWFrfWNhc2UgNTM6e2NbKGNbZGE+PjJdfDApKzQ+PjJdPTY7YnJlYWt9Y2FzZSA1NDp7Y1soY1tkYT4+Ml18MCkrLTE2KzQ+PjJdPTA7YnJlYWt9Y2FzZSA1NTp7Y1soY1tkYT4+Ml18MCkrLTMyKzQ+PjJdPTA7YnJlYWt9Y2FzZSAxNDQ6Y2FzZSA3MTpjYXNlIDU2OntjWyhjW2RhPj4yXXwwKSstMTYrND4+Ml09Y1soY1tkYT4+Ml18MCkrND4+Ml07YnJlYWt9Y2FzZSAyMTY6Y2FzZSAxOTA6Y2FzZSAxODc6Y2FzZSA3NTpjYXNlIDU4OntjWyhjW2RhPj4yXXwwKSstMTYrND4+Ml09MTticmVha31jYXNlIDU5OntjWyhjW2RhPj4yXXwwKSstMTYrND4+Ml09MDticmVha31jYXNlIDYxOntjWyhjW18+PjJdfDApKzg0KzQ+PjJdPTA7YnJlYWt9Y2FzZSA2Mzp7SHYoY1tfPj4yXXwwLGNbKGNbZGE+PjJdfDApKy00OCs0Pj4yXXwwLGNbKGNbZGE+PjJdfDApKzQ+PjJdfDAsY1soY1tkYT4+Ml18MCkrLTMyKzQ+PjJdfDAsMCk7YnJlYWt9Y2FzZSA2NDp7SXYoY1tfPj4yXXwwLDAsMCwwLGNbKGNbZGE+PjJdfDApKy0zMis0Pj4yXXwwLGNbKGNbZGE+PjJdfDApKzQ+PjJdfDAsMCwwLDAsMCwxKTticmVha31jYXNlIDY1OntKdihjW18+PjJdfDAsY1soY1tkYT4+Ml18MCkrLTMyKzQ+PjJdfDApO2JyZWFrfWNhc2UgNjY6e0t2KGNbXz4+Ml18MCxjWyhjW2RhPj4yXXwwKSstOTYrND4+Ml18MCwoY1tkYT4+Ml18MCkrLTQ4KzR8MCxjWyhjW2RhPj4yXXwwKSstMzIrND4+Ml18MCxjWyhjW2RhPj4yXXwwKSstMTYrND4+Ml18MCk7THYoY1tfPj4yXXwwLGNbKGNbZGE+PjJdfDApKzQ+PjJdfDApO2JyZWFrfWNhc2UgNzA6Y2FzZSA2ODp7Y1soY1tkYT4+Ml18MCkrMTYrND4+Ml09MTA7YnJlYWt9Y2FzZSA2OTp7Y1soY1tkYT4+Ml18MCkrLTMyKzQ+PjJdPWNbKGNbZGE+PjJdfDApKzQ+PjJdO2JyZWFrfWNhc2UgNzI6e2NbKGNbZGE+PjJdfDApKzQ+PjJdPTQ7YnJlYWt9Y2FzZSAxNDU6Y2FzZSA3Mzp7Y1soY1tkYT4+Ml18MCkrND4+Ml09NTticmVha31jYXNlIDc0OntOdihjW18+PjJdfDAsY1soY1tkYT4+Ml18MCkrND4+Ml18MCwwLGNbKGNbZGE+PjJdfDApKy0xNis0Pj4yXXwwKTticmVha31jYXNlIDc3OntPdihjW18+PjJdfDAsKGNbZGE+PjJdfDApKy0xMjgrNHwwLChjW2RhPj4yXXwwKSstNjQrNHwwLChjW2RhPj4yXXwwKSstNDgrNHwwLGNbKGNbZGE+PjJdfDApKy0zMis0Pj4yXXwwLGNbKGNbZGE+PjJdfDApKzQ+PjJdfDAsY1soY1tkYT4+Ml18MCkrLTExMis0Pj4yXXwwLGNbKGNbZGE+PjJdfDApKy04MCs0Pj4yXXwwKTticmVha31jYXNlIDc4OntOdihjW18+PjJdfDAsY1soY1tkYT4+Ml18MCkrND4+Ml18MCwxLGNbKGNbZGE+PjJdfDApKy0xNis0Pj4yXXwwKTticmVha31jYXNlIDc5OntjW20+PjJdPWNbMTA2M107Y1ttKzQ+PjJdPWNbMTA2NF07Y1ttKzg+PjJdPWNbMTA2NV07Y1ttKzEyPj4yXT1jWzEwNjZdO2NbbSsxNj4+Ml09Y1sxMDY3XTtjW20rMjA+PjJdPWNbMTA2OF07UHYoY1tfPj4yXXwwLGNbKGNbZGE+PjJdfDApKzQ+PjJdfDAsbSl8MDtmdihjW2NbXz4+Ml0+PjJdfDAsY1soY1tkYT4+Ml18MCkrND4+Ml18MCk7YnJlYWt9Y2FzZSA4MDp7Y1tvPj4yXT1jWyhjW2RhPj4yXXwwKSs0Pj4yXTtpZihjW28+PjJdfDApe2NbKGNbbz4+Ml18MCkrNjQ+PjJdPWNbKGNbZGE+PjJdfDApKy0xNis0Pj4yXTtRdihjW18+PjJdfDAsY1tvPj4yXXwwKX1lbHNlIGR2KGNbY1tfPj4yXT4+Ml18MCxjWyhjW2RhPj4yXXwwKSstMTYrND4+Ml18MCk7Y1soY1tkYT4+Ml18MCkrLTE2KzQ+PjJdPWNbbz4+Ml07YnJlYWt9Y2FzZSA4MTp7Y1tEPj4yXT1jWyhjW2RhPj4yXXwwKSs0Pj4yXTtjW3Y+PjJdPWNbKGNbZGE+PjJdfDApKy0zMis0Pj4yXTtpZigoY1tEPj4yXXwwKSE9MD8oY1soY1tEPj4yXXwwKSs0OD4+Ml18MCkhPTA6MCl7Y1tXKzQ+PjJdPTA7UXYoY1tfPj4yXXwwLGNbRD4+Ml18MCk7Y1tzPj4yXT1SdihjW18+PjJdfDAsMCwwLDAsVyxjW0Q+PjJdfDAsMCwwKXwwO2NbRD4+Ml09U3YoY1tfPj4yXXwwLDAsY1tzPj4yXXwwLDAsMCwwLDAsMCwwLDApfDB9aWYoY1tEPj4yXXwwKXthWyhjW0Q+PjJdfDApKzQ+PjBdPWNbKGNbZGE+PjJdfDApKy0xNis0Pj4yXTtjWyhjW0Q+PjJdfDApKzQ4Pj4yXT1jW3Y+PjJdO2lmKGNbdj4+Ml18MCl7Wj0oY1t2Pj4yXXwwKSs4fDA7Y1taPj4yXT1jW1o+PjJdJi0xMDI1fVo9KGNbRD4+Ml18MCkrOHwwO2NbWj4+Ml09Y1taPj4yXSYtMTAyNTtpZigoY1soY1tkYT4+Ml18MCkrLTE2KzQ+PjJdfDApIT0xMTYpYVsoY1tfPj4yXXwwKSsyMj4+MF09MX1lbHNlIGZ2KGNbY1tfPj4yXT4+Ml18MCxjW3Y+PjJdfDApO2NbKGNbZGE+PjJdfDApKy0zMis0Pj4yXT1jW0Q+PjJdO2JyZWFrfWNhc2UgODQ6Y2FzZSA4Mjp7Y1soY1tkYT4+Ml18MCkrND4+Ml09ZFsoY1tkYT4+Ml18MCkrMj4+MF07YnJlYWt9Y2FzZSA4Mzp7Y1soY1tkYT4+Ml18MCkrLTE2KzQ+PjJdPTExNjticmVha31jYXNlIDg1OntfPVN2KGNbXz4+Ml18MCxjWyhjW2RhPj4yXXwwKSstOTYrND4+Ml18MCxjWyhjW2RhPj4yXXwwKSstODArND4+Ml18MCxjWyhjW2RhPj4yXXwwKSstNjQrND4+Ml18MCxjWyhjW2RhPj4yXXwwKSstNDgrND4+Ml18MCxjWyhjW2RhPj4yXXwwKSstMzIrND4+Ml18MCxjWyhjW2RhPj4yXXwwKSstMTYrND4+Ml18MCxjWyhjW2RhPj4yXXwwKSstMTEyKzQ+PjJdfDAsY1soY1tkYT4+Ml18MCkrND4+Ml18MCxjWyhjW2RhPj4yXXwwKSs0KzQ+PjJdfDApfDA7Y1soY1tkYT4+Ml18MCkrLTEyOCs0Pj4yXT1fO2JyZWFrfWNhc2UgODY6e189U3YoY1tfPj4yXXwwLGNbKGNbZGE+PjJdfDApKy0xNis0Pj4yXXwwLDAsMCwwLDAsMCw1MTIsMCwwKXwwO2NbKGNbZGE+PjJdfDApKy00OCs0Pj4yXT1fO2JyZWFrfWNhc2UgODc6e2NbdD4+Ml09Y1soY1tkYT4+Ml18MCkrLTY0KzQ+PjJdO2NbRT4+Ml09U3YoY1tfPj4yXXwwLGNbKGNbZGE+PjJdfDApKy0xNis0Pj4yXXwwLDAsMCwwLDAsMCwxNTM2LDAsMCl8MDtpZihjW3Q+PjJdfDApe189KGNbdD4+Ml18MCkrOHwwO2NbXz4+Ml09Y1tfPj4yXSYtMTAyNX1pZihjW0U+PjJdfDApe2FbKGNbRT4+Ml18MCkrND4+MF09MTE2O2NbKGNbRT4+Ml18MCkrNDg+PjJdPWNbdD4+Ml07Y1soY1tkYT4+Ml18MCkrLTY0KzQ+PjJdPWNbRT4+Ml07YnJlYWsgYX1lbHNle2NbKGNbZGE+PjJdfDApKy02NCs0Pj4yXT1jW3Q+PjJdO2JyZWFrIGF9fWNhc2UgODg6e2NbKGNbZGE+PjJdfDApKzQ+PjJdPTE7YnJlYWt9Y2FzZSA4OTp7Y1soY1tkYT4+Ml18MCkrND4+Ml09MjticmVha31jYXNlIDIxMTpjYXNlIDIwNjpjYXNlIDIwMzpjYXNlIDEyNjpjYXNlIDExOTpjYXNlIDkxOntjWyhjW2RhPj4yXXwwKSsxNis0Pj4yXT0wO2JyZWFrfWNhc2UgOTI6e1o9VHYoY1tfPj4yXXwwLGNbKGNbZGE+PjJdfDApKy0zMis0Pj4yXXwwLGNbKGNbZGE+PjJdfDApKy0xNis0Pj4yXXwwKXwwO2NbKGNbZGE+PjJdfDApKy0zMis0Pj4yXT1aO2lmKChjWyhjW2RhPj4yXXwwKSs0KzQ+PjJdfDApPj4+MD4wKVV2KGNbXz4+Ml18MCxjWyhjW2RhPj4yXXwwKSstMzIrND4+Ml18MCwoY1tkYT4+Ml18MCkrNHwwLDEpO1Z2KGNbXz4+Ml18MCxjWyhjW2RhPj4yXXwwKSstMzIrND4+Ml18MCwoY1tkYT4+Ml18MCkrLTE2KzR8MCk7YnJlYWt9Y2FzZSA5Mzp7Y1txPj4yXT1XdihjW2NbXz4+Ml0+PjJdfDAsMTYwLDApfDA7Xz1UdihjW18+PjJdfDAsY1soY1tkYT4+Ml18MCkrLTE2KzQ+PjJdfDAsY1txPj4yXXwwKXwwO2NbKGNbZGE+PjJdfDApKy0xNis0Pj4yXT1fO2JyZWFrfWNhc2UgOTQ6e2NbRj4+Ml09RXYoY1tfPj4yXXwwLDE2MCwwLDAsMCl8MDtjW3U+PjJdPUV2KGNbXz4+Ml18MCw1NSwwLDAsKGNbZGE+PjJdfDApKy0zMis0fDApfDA7Y1tyPj4yXT1FdihjW18+PjJdfDAsMTIyLGNbdT4+Ml18MCxjW0Y+PjJdfDAsMCl8MDtfPVR2KGNbXz4+Ml18MCxjWyhjW2RhPj4yXXwwKSstNDgrND4+Ml18MCxjW3I+PjJdfDApfDA7Y1soY1tkYT4+Ml18MCkrLTQ4KzQ+PjJdPV87YnJlYWt9Y2FzZSAyMjY6Y2FzZSAyMjU6Y2FzZSAxMDY6Y2FzZSA5NTp7Xz0oY1tkYT4+Ml18MCkrLTE2KzR8MDtaPShjW2RhPj4yXXwwKSs0fDA7Y1tfPj4yXT1jW1o+PjJdO2NbXys0Pj4yXT1jW1orND4+Ml07YnJlYWt9Y2FzZSA5Nzp7Xz1zaChjW2NbXz4+Ml0+PjJdfDAsODAsMCl8MDtjWyhjW2RhPj4yXXwwKSsxNis0Pj4yXT1fO2JyZWFrfWNhc2UgOTg6e2NbKGNbZGE+PjJdfDApKy0xNis0Pj4yXT1jWyhjW2RhPj4yXXwwKSs0Pj4yXTtYdihjWyhjW2RhPj4yXXwwKSstMTYrND4+Ml18MCk7YnJlYWt9Y2FzZSA5OTp7aWYoKGNbKGNbZGE+PjJdfDApKy0xNis0Pj4yXXwwKSE9MD8oY1tjWyhjW2RhPj4yXXwwKSstMTYrND4+Ml0+PjJdfDApPjA6MClhWyhjWyhjW2RhPj4yXXwwKSstMTYrND4+Ml18MCkrOCsoKChjW2NbKGNbZGE+PjJdfDApKy0xNis0Pj4yXT4+Ml18MCktMXwwKSo3MnwwKSszNj4+MF09Y1soY1tkYT4+Ml18MCkrND4+Ml07YnJlYWt9Y2FzZSAxMDA6e2NbKGNbZGE+PjJdfDApKzE2KzQ+PjJdPTA7YnJlYWt9Y2FzZSAxMDE6e1o9UnYoY1tfPj4yXXwwLGNbKGNbZGE+PjJdfDApKy05Nis0Pj4yXXwwLChjW2RhPj4yXXwwKSstODArNHwwLChjW2RhPj4yXXwwKSstNjQrNHwwLChjW2RhPj4yXXwwKSstNDgrNHwwLDAsY1soY1tkYT4+Ml18MCkrLTE2KzQ+PjJdfDAsY1soY1tkYT4+Ml18MCkrND4+Ml18MCl8MDtjWyhjW2RhPj4yXXwwKSstOTYrND4+Ml09WjtZdihjW18+PjJdfDAsY1soY1tkYT4+Ml18MCkrLTk2KzQ+PjJdfDAsKGNbZGE+PjJdfDApKy0zMis0fDApO2JyZWFrfWNhc2UgMTAyOntaPVJ2KGNbXz4+Ml18MCxjWyhjW2RhPj4yXXwwKSstMTI4KzQ+PjJdfDAsKGNbZGE+PjJdfDApKy0xMTIrNHwwLChjW2RhPj4yXXwwKSstOTYrNHwwLChjW2RhPj4yXXwwKSstMzIrNHwwLDAsY1soY1tkYT4+Ml18MCkrLTE2KzQ+PjJdfDAsY1soY1tkYT4+Ml18MCkrND4+Ml18MCl8MDtjWyhjW2RhPj4yXXwwKSstMTI4KzQ+PjJdPVo7WnYoY1tfPj4yXXwwLGNbKGNbZGE+PjJdfDApKy0xMjgrND4+Ml18MCxjWyhjW2RhPj4yXXwwKSstNjQrND4+Ml18MCk7YnJlYWt9Y2FzZSAxMDM6e189UnYoY1tfPj4yXXwwLGNbKGNbZGE+PjJdfDApKy05Nis0Pj4yXXwwLDAsMCwoY1tkYT4+Ml18MCkrLTMyKzR8MCxjWyhjW2RhPj4yXXwwKSstNjQrND4+Ml18MCxjWyhjW2RhPj4yXXwwKSstMTYrND4+Ml18MCxjWyhjW2RhPj4yXXwwKSs0Pj4yXXwwKXwwO2NbKGNbZGE+PjJdfDApKy05Nis0Pj4yXT1fO2JyZWFrfWNhc2UgMTA0OntpZigoKChjWyhjW2RhPj4yXXwwKSstOTYrND4+Ml18MCk9PTA/KGNbKGNbZGE+PjJdfDApKy0zMis0KzQ+PjJdfDApPT0wOjApPyhjWyhjW2RhPj4yXXwwKSstMTYrND4+Ml18MCk9PTA6MCk/KGNbKGNbZGE+PjJdfDApKzQ+PjJdfDApPT0wOjApe2NbKGNbZGE+PjJdfDApKy05Nis0Pj4yXT1jWyhjW2RhPj4yXXwwKSstNjQrND4+Ml07YnJlYWsgYX1pZigoY1tjWyhjW2RhPj4yXXwwKSstNjQrND4+Ml0+PjJdfDApIT0xKXtYdihjWyhjW2RhPj4yXXwwKSstNjQrND4+Ml18MCk7Y1tJPj4yXT1TdihjW18+PjJdfDAsMCxjWyhjW2RhPj4yXXwwKSstNjQrND4+Ml18MCwwLDAsMCwwLDIwNDgsMCwwKXwwO189UnYoY1tfPj4yXXwwLGNbKGNbZGE+PjJdfDApKy05Nis0Pj4yXXwwLDAsMCwoY1tkYT4+Ml18MCkrLTMyKzR8MCxjW0k+PjJdfDAsY1soY1tkYT4+Ml18MCkrLTE2KzQ+PjJdfDAsY1soY1tkYT4+Ml18MCkrND4+Ml18MCl8MDtjWyhjW2RhPj4yXXwwKSstOTYrND4+Ml09XzticmVhayBhfVo9UnYoY1tfPj4yXXwwLGNbKGNbZGE+PjJdfDApKy05Nis0Pj4yXXwwLDAsMCwoY1tkYT4+Ml18MCkrLTMyKzR8MCwwLGNbKGNbZGE+PjJdfDApKy0xNis0Pj4yXXwwLGNbKGNbZGE+PjJdfDApKzQ+PjJdfDApfDA7Y1soY1tkYT4+Ml18MCkrLTk2KzQ+PjJdPVo7aWYoY1soY1tkYT4+Ml18MCkrLTk2KzQ+PjJdfDApe2NbQT4+Ml09KGNbKGNbZGE+PjJdfDApKy05Nis0Pj4yXXwwKSs4KygoKGNbY1soY1tkYT4+Ml18MCkrLTk2KzQ+PjJdPj4yXXwwKS0xfDApKjcyfDApO2NbQj4+Ml09KGNbKGNbZGE+PjJdfDApKy02NCs0Pj4yXXwwKSs4O2NbKGNbQT4+Ml18MCkrOD4+Ml09Y1soY1tCPj4yXXwwKSs4Pj4yXTtjWyhjW0E+PjJdfDApKzQ+PjJdPWNbKGNbQj4+Ml18MCkrND4+Ml07Y1soY1tBPj4yXXwwKSsyMD4+Ml09Y1soY1tCPj4yXXwwKSsyMD4+Ml07Y1soY1tCPj4yXXwwKSs0Pj4yXT0wO2NbKGNbQj4+Ml18MCkrOD4+Ml09MDtjWyhjW0I+PjJdfDApKzIwPj4yXT0wfWh2KGNbY1tfPj4yXT4+Ml18MCxjWyhjW2RhPj4yXXwwKSstNjQrND4+Ml18MCk7YnJlYWt9Y2FzZSAxMTQ6Y2FzZSAxMDU6e2NbKGNbZGE+PjJdfDApKzE2KzQ+PjJdPTA7Y1soY1tkYT4+Ml18MCkrMTYrNCs0Pj4yXT0wO2JyZWFrfWNhc2UgMTA3OntfPV92KGNbY1tfPj4yXT4+Ml18MCwwLChjW2RhPj4yXXwwKSstMTYrNHwwLChjW2RhPj4yXXwwKSs0fDApfDA7Y1soY1tkYT4+Ml18MCkrLTE2KzQ+PjJdPV87YnJlYWt9Y2FzZSAxMDg6e2NbKGNbZGE+PjJdfDApKzQ+PjJdPTE7YnJlYWt9Y2FzZSAxMDk6e189JHYoY1tfPj4yXXwwLChjW2RhPj4yXXwwKSstMTYrNHwwLDAsMCl8MDtjWyhjW2RhPj4yXXwwKSstMTYrND4+Ml09XzticmVha31jYXNlIDExMDp7Xz0kdihjW18+PjJdfDAsKGNbZGE+PjJdfDApKy0zMis0fDAsKGNbZGE+PjJdfDApKy0xNis0fDAsMCl8MDtjWyhjW2RhPj4yXXwwKSstMzIrND4+Ml09XzticmVha31jYXNlIDExMTp7Xz0kdihjW18+PjJdfDAsKGNbZGE+PjJdfDApKy00OCs0fDAsKGNbZGE+PjJdfDApKy0zMis0fDAsKGNbZGE+PjJdfDApKy0xNis0fDApfDA7Y1soY1tkYT4+Ml18MCkrLTQ4KzQ+PjJdPV87YnJlYWt9Y2FzZSAxOTk6Y2FzZSAxMzY6Y2FzZSAxMjk6Y2FzZSAxMTI6e2NbKGNbZGE+PjJdfDApKy0xNis0Pj4yXT1jWyhjW2RhPj4yXXwwKSs0Pj4yXTticmVha31jYXNlIDIwMjpjYXNlIDIwMDpjYXNlIDEzNTpjYXNlIDEyODpjYXNlIDExMzp7Y1soY1tkYT4+Ml18MCkrMTYrND4+Ml09MDticmVha31jYXNlIDExNTp7Xz0oY1tkYT4+Ml18MCkrLTMyKzR8MDtaPShjW2RhPj4yXXwwKSs0fDA7Y1tfPj4yXT1jW1o+PjJdO2NbXys0Pj4yXT1jW1orND4+Ml07YnJlYWt9Y2FzZSAxMTY6e2NbKGNbZGE+PjJdfDApKy0xNis0Pj4yXT0wO2NbKGNbZGE+PjJdfDApKy0xNis0KzQ+PjJdPTE7YnJlYWt9Y2FzZSAxMTc6e2NbKGNbZGE+PjJdfDApKy00OCs0Pj4yXT1jWyhjW2RhPj4yXXwwKSstMTYrND4+Ml07YnJlYWt9Y2FzZSAxNDY6Y2FzZSAxMTg6e2NbKGNbZGE+PjJdfDApKzE2KzQ+PjJdPTA7YnJlYWt9Y2FzZSAxMjc6Y2FzZSAxMjA6e2NbKGNbZGE+PjJdfDApKy0zMis0Pj4yXT1jWyhjW2RhPj4yXXwwKSs0Pj4yXTticmVha31jYXNlIDEyMTp7Xz1UdihjW18+PjJdfDAsY1soY1tkYT4+Ml18MCkrLTQ4KzQ+PjJdfDAsY1soY1tkYT4+Ml18MCkrLTE2KzQ+PjJdfDApfDA7Y1soY1tkYT4+Ml18MCkrLTQ4KzQ+PjJdPV87YXcoY1soY1tkYT4+Ml18MCkrLTQ4KzQ+PjJdfDAsY1soY1tkYT4+Ml18MCkrND4+Ml18MCk7YnJlYWt9Y2FzZSAxMjI6e189VHYoY1tfPj4yXXwwLDAsY1soY1tkYT4+Ml18MCkrLTE2KzQ+PjJdfDApfDA7Y1soY1tkYT4+Ml18MCkrLTE2KzQ+PjJdPV87YXcoY1soY1tkYT4+Ml18MCkrLTE2KzQ+PjJdfDAsY1soY1tkYT4+Ml18MCkrND4+Ml18MCk7YnJlYWt9Y2FzZSAxMjM6e2NbKGNbZGE+PjJdfDApKzQ+PjJdPTA7YnJlYWt9Y2FzZSAxMjQ6e2NbKGNbZGE+PjJdfDApKzQ+PjJdPTE7YnJlYWt9Y2FzZSAxMjU6e2NbKGNbZGE+PjJdfDApKzE2KzQ+PjJdPS0xO2JyZWFrfWNhc2UgMTMwOntjWyhjW2RhPj4yXXwwKSsxNis0Pj4yXT0wO2NbKGNbZGE+PjJdfDApKzE2KzQrND4+Ml09MDticmVha31jYXNlIDEzMTp7Y1soY1tkYT4+Ml18MCkrLTE2KzQ+PjJdPWNbKGNbZGE+PjJdfDApKzQ+PjJdO2NbKGNbZGE+PjJdfDApKy0xNis0KzQ+PjJdPTA7YnJlYWt9Y2FzZSAxMzI6e2NbKGNbZGE+PjJdfDApKy00OCs0Pj4yXT1jWyhjW2RhPj4yXXwwKSstMzIrND4+Ml07Y1soY1tkYT4+Ml18MCkrLTQ4KzQrND4+Ml09Y1soY1tkYT4+Ml18MCkrND4+Ml07YnJlYWt9Y2FzZSAxMzM6e2NbKGNbZGE+PjJdfDApKy00OCs0KzQ+PjJdPWNbKGNbZGE+PjJdfDApKy0zMis0Pj4yXTtjWyhjW2RhPj4yXXwwKSstNDgrND4+Ml09Y1soY1tkYT4+Ml18MCkrND4+Ml07YnJlYWt9Y2FzZSAxMzQ6e2J3KGNbXz4+Ml18MCxjWyhjW2RhPj4yXXwwKSstODArND4+Ml18MCwxKTtZdihjW18+PjJdfDAsY1soY1tkYT4+Ml18MCkrLTMyKzQ+PjJdfDAsKGNbZGE+PjJdfDApKy0xNis0fDApO2N3KGNbXz4+Ml18MCxjWyhjW2RhPj4yXXwwKSstMzIrND4+Ml18MCxjWyhjW2RhPj4yXXwwKSs0Pj4yXXwwKTticmVha31jYXNlIDEzNzp7YncoY1tfPj4yXXwwLGNbKGNbZGE+PjJdfDApKy0xMTIrND4+Ml18MCwxKTtZdihjW18+PjJdfDAsY1soY1tkYT4+Ml18MCkrLTY0KzQ+PjJdfDAsKGNbZGE+PjJdfDApKy00OCs0fDApO2R3KGNbXz4+Ml18MCxjWyhjW2RhPj4yXXwwKSstMTYrND4+Ml18MCwyNzE3Nyk7ZXcoY1tfPj4yXXwwLGNbKGNbZGE+PjJdfDApKy02NCs0Pj4yXXwwLGNbKGNbZGE+PjJdfDApKy0xNis0Pj4yXXwwLGNbKGNbZGE+PjJdfDApKzQ+PjJdfDAsY1soY1tkYT4+Ml18MCkrLTgwKzQ+PjJdfDApO2JyZWFrfWNhc2UgMTM4OntaPVR2KGNbXz4+Ml18MCxjWyhjW2RhPj4yXXwwKSstNjQrND4+Ml18MCxjWyhjW2RhPj4yXXwwKSs0Pj4yXXwwKXwwO2NbKGNbZGE+PjJdfDApKy02NCs0Pj4yXT1aO1V2KGNbXz4+Ml18MCxjWyhjW2RhPj4yXXwwKSstNjQrND4+Ml18MCwoY1tkYT4+Ml18MCkrLTMyKzR8MCwxKTticmVha31jYXNlIDEzOTp7Xz1mdyhjW18+PjJdfDAsY1soY1tkYT4+Ml18MCkrLTk2KzQ+PjJdfDAsY1soY1tkYT4+Ml18MCkrLTQ4KzQ+PjJdfDAsY1soY1tkYT4+Ml18MCkrND4+Ml18MCl8MDtjWyhjW2RhPj4yXXwwKSstOTYrND4+Ml09XzticmVha31jYXNlIDE0MDp7Y1tYPj4yXT1UdihjW18+PjJdfDAsMCxjWyhjW2RhPj4yXXwwKSs0Pj4yXXwwKXwwO1V2KGNbXz4+Ml18MCxjW1g+PjJdfDAsKGNbZGE+PjJdfDApKy0zMis0fDAsMSk7Y1soY1tkYT4+Ml18MCkrLTMyKzQ+PjJdPWNbWD4+Ml07YnJlYWt9Y2FzZSAxNDE6e189ZncoY1tfPj4yXXwwLDAsY1soY1tkYT4+Ml18MCkrLTQ4KzQ+PjJdfDAsY1soY1tkYT4+Ml18MCkrND4+Ml18MCl8MDtjWyhjW2RhPj4yXXwwKSstNjQrND4+Ml09XzticmVha31jYXNlIDE0Mjp7YncoY1tfPj4yXXwwLGNbKGNbZGE+PjJdfDApKy04MCs0Pj4yXXwwLDEpO2d3KGNbXz4+Ml18MCxjWyhjW2RhPj4yXXwwKSstMzIrND4+Ml18MCxjWyhjW2RhPj4yXXwwKSs0Pj4yXXwwLGNbKGNbZGE+PjJdfDApKy0xNis0Pj4yXXwwLGNbKGNbZGE+PjJdfDApKy02NCs0Pj4yXXwwKTticmVha31jYXNlIDE0Mzp7YncoY1tfPj4yXXwwLGNbKGNbZGE+PjJdfDApKy05Nis0Pj4yXXwwLDEpO2d3KGNbXz4+Ml18MCxjWyhjW2RhPj4yXXwwKSstNDgrND4+Ml18MCwwLGNbKGNbZGE+PjJdfDApKy0zMis0Pj4yXXwwLGNbKGNbZGE+PjJdfDApKy04MCs0Pj4yXXwwKTticmVha31jYXNlIDE0Nzp7Y1soY1tkYT4+Ml18MCkrLTMyKzQ+PjJdPWNbKGNbZGE+PjJdfDApKy0xNis0Pj4yXTticmVha31jYXNlIDE0ODp7Xz1odyhjW2NbXz4+Ml0+PjJdfDAsY1soY1tkYT4+Ml18MCkrLTMyKzQ+PjJdfDAsKGNbZGE+PjJdfDApKzR8MCl8MDtjWyhjW2RhPj4yXXwwKSstMzIrND4+Ml09XzticmVha31jYXNlIDE0OTp7Xz1odyhjW2NbXz4+Ml0+PjJdfDAsMCwoY1tkYT4+Ml18MCkrNHwwKXwwO2NbKGNbZGE+PjJdfDApKzQ+PjJdPV87YnJlYWt9Y2FzZSAxNTA6e2l3KChjW2RhPj4yXXwwKSstMzIrNHwwLChjW2RhPj4yXXwwKSstMzIrNHwwLChjW2RhPj4yXXwwKSs0fDApO2NbKGNbZGE+PjJdfDApKy0zMis0Pj4yXT1jWyhjW2RhPj4yXXwwKSstMTYrND4+Ml07YnJlYWt9Y2FzZSAxNTc6Y2FzZSAxNTY6Y2FzZSAxNTE6e1k9KGNbZGE+PjJdfDApKzR8MDtaPWNbXz4+Ml18MDtfPWRbKGNbZGE+PjJdfDApKzI+PjBdfDA7Zz0oY1tkYT4+Ml18MCkrNHwwO2NbaD4+Ml09Y1tnPj4yXTtjW2grND4+Ml09Y1tnKzQ+PjJdO0Z2KFksWixfLGgpO2JyZWFrfWNhc2UgMTUzOmNhc2UgMTUyOntaPShjW2RhPj4yXXwwKSs0fDA7Xz1jW18+PjJdfDA7WT0oY1tkYT4+Ml18MCkrNHwwO2NbaD4+Ml09Y1tZPj4yXTtjW2grND4+Ml09Y1tZKzQ+PjJdO0Z2KFosXyw1NSxoKTticmVha31jYXNlIDE1NDp7Y1tKPj4yXT1qdyhjW2NbXz4+Ml0+PjJdfDAsNTUsKGNbZGE+PjJdfDApKy0zMis0fDAsMSl8MDtjW0w+PjJdPWp3KGNbY1tfPj4yXT4+Ml18MCw1NSwoY1tkYT4+Ml18MCkrNHwwLDEpfDA7aXcoKGNbZGE+PjJdfDApKy0zMis0fDAsKGNbZGE+PjJdfDApKy0zMis0fDAsKGNbZGE+PjJdfDApKzR8MCk7Xz1FdihjW18+PjJdfDAsMTIyLGNbSj4+Ml18MCxjW0w+PjJdfDAsMCl8MDtjWyhjW2RhPj4yXXwwKSstMzIrND4+Ml09XzticmVha31jYXNlIDE1NTp7Y1tLPj4yXT1qdyhjW2NbXz4+Ml0+PjJdfDAsNTUsKGNbZGE+PjJdfDApKy02NCs0fDAsMSl8MDtjW00+PjJdPWp3KGNbY1tfPj4yXT4+Ml18MCw1NSwoY1tkYT4+Ml18MCkrLTMyKzR8MCwxKXwwO2NbTj4+Ml09ancoY1tjW18+PjJdPj4yXXwwLDU1LChjW2RhPj4yXXwwKSs0fDAsMSl8MDtjW08+PjJdPUV2KGNbXz4+Ml18MCwxMjIsY1tNPj4yXXwwLGNbTj4+Ml18MCwwKXwwO2l3KChjW2RhPj4yXXwwKSstNjQrNHwwLChjW2RhPj4yXXwwKSstNjQrNHwwLChjW2RhPj4yXXwwKSs0fDApO189RXYoY1tfPj4yXXwwLDEyMixjW0s+PjJdfDAsY1tPPj4yXXwwLDApfDA7Y1soY1tkYT4+Ml18MCkrLTY0KzQ+PjJdPV87YnJlYWt9Y2FzZSAxNTg6e2NbWD4+Ml09ancoY1tjW18+PjJdPj4yXXwwLDEzNCwoY1tkYT4+Ml18MCkrNHwwLDEpfDA7Y1tYKzQ+PjJdPWNbKGNbZGE+PjJdfDApKzQ+PjJdO2NbWCs4Pj4yXT0oY1soY1tkYT4+Ml18MCkrND4+Ml18MCkrKGNbKGNbZGE+PjJdfDApKzQrND4+Ml18MCk7aWYoY1tYPj4yXXwwKXtfPShjW1g+PjJdfDApKzR8MDtjW18+PjJdPWNbXz4+Ml18ODM4ODYwOH1fPShjW2RhPj4yXXwwKSs0fDA7Y1tfPj4yXT1jW1g+PjJdO2NbXys0Pj4yXT1jW1grND4+Ml07Y1tfKzg+PjJdPWNbWCs4Pj4yXTticmVha31jYXNlIDE1OTp7aWYoKGFbY1soY1tkYT4+Ml18MCkrND4+Ml0+PjBdfDApPT0zNT8oZFsxODQwMysoZFsoY1soY1tkYT4+Ml18MCkrND4+Ml18MCkrMT4+MF18MCk+PjBdJjR8MCkhPTA6MCl7aD0oY1tkYT4+Ml18MCkrNHwwO2NbWT4+Ml09Y1toPj4yXTtjW1krND4+Ml09Y1toKzQ+PjJdO2l3KChjW2RhPj4yXXwwKSs0fDAsWSxZKTtoPWNbXz4+Ml18MDtpZighKGRbKGNbXz4+Ml18MCkrMTg+PjBdfDApKXtjW1o+PjJdPVk7RWgoaCwyNjQ2MixaKTtjWyhjW2RhPj4yXXwwKSs0Pj4yXT0wO2JyZWFrIGF9Xz1FdihoLDE1NywwLDAsMCl8MDtjWyhjW2RhPj4yXXwwKSs0Pj4yXT1fO2lmKCEoY1soY1tkYT4+Ml18MCkrND4+Ml18MCkpYnJlYWsgYTtRaSgoY1tZPj4yXXwwKSsxfDAsKGNbKGNbZGE+PjJdfDApKzQ+PjJdfDApKzI4fDApfDA7YnJlYWsgYX1jW24+PjJdPWNbKGNbZGE+PjJdfDApKzQrND4+Ml07WT0oY1tkYT4+Ml18MCkrNHwwO1o9Y1tfPj4yXXwwO2c9KGNbZGE+PjJdfDApKzR8MDtjW2g+PjJdPWNbZz4+Ml07Y1toKzQ+PjJdPWNbZys0Pj4yXTtGdihZLFosMTM1LGgpO2t3KGNbXz4+Ml18MCxjWyhjW2RhPj4yXXwwKSs0Pj4yXXwwLGNbbj4+Ml18MCk7YnJlYWt9Y2FzZSAxNjA6e189bHcoY1tfPj4yXXwwLGNbKGNbZGE+PjJdfDApKy0zMis0Pj4yXXwwLChjW2RhPj4yXXwwKSs0fDAsMSl8MDtjWyhjW2RhPj4yXXwwKSstMzIrND4+Ml09XztjWyhjW2RhPj4yXXwwKSstMzIrNCs4Pj4yXT0oY1soY1tkYT4+Ml18MCkrND4+Ml18MCkrKGNbKGNbZGE+PjJdfDApKzQrND4+Ml18MCk7YnJlYWt9Y2FzZSAxNjE6e2l3KChjW2RhPj4yXXwwKSstODArNHwwLChjW2RhPj4yXXwwKSstODArNHwwLChjW2RhPj4yXXwwKSs0fDApO189RXYoY1tfPj4yXXwwLDY2LGNbKGNbZGE+PjJdfDApKy00OCs0Pj4yXXwwLDAsKGNbZGE+PjJdfDApKy0xNis0fDApfDA7Y1soY1tkYT4+Ml18MCkrLTgwKzQ+PjJdPV87YnJlYWt9Y2FzZSAxNjI6e2lmKChjWyhjW2RhPj4yXXwwKSstMTYrND4+Ml18MCkhPTA/KGNbY1soY1tkYT4+Ml18MCkrLTE2KzQ+PjJdPj4yXXwwKT4oY1soY1tjW18+PjJdPj4yXXwwKSs5NisyND4+Ml18MCk6MCl7Wj1jW18+PjJdfDA7Y1tVPj4yXT0oY1tkYT4+Ml18MCkrLTY0KzQ7RWgoWiwyNzE4NixVKX1jW1g+PjJdPW13KGNbXz4+Ml18MCxjWyhjW2RhPj4yXXwwKSstMTYrND4+Ml18MCwoY1tkYT4+Ml18MCkrLTY0KzR8MCl8MDtpdyhYLChjW2RhPj4yXXwwKSstNjQrNHwwLChjW2RhPj4yXXwwKSs0fDApO2lmKChjWyhjW2RhPj4yXXwwKSstMzIrND4+Ml18MCk9PTE/KGNbWD4+Ml18MCkhPTA6MCl7Xz0oY1tYPj4yXXwwKSs0fDA7Y1tfPj4yXT1jW18+PjJdfDE2fV89KGNbZGE+PjJdfDApKy02NCs0fDA7Y1tfPj4yXT1jW1g+PjJdO2NbXys0Pj4yXT1jW1grND4+Ml07Y1tfKzg+PjJdPWNbWCs4Pj4yXTticmVha31jYXNlIDE2Mzp7Y1tYPj4yXT1tdyhjW18+PjJdfDAsMCwoY1tkYT4+Ml18MCkrLTQ4KzR8MCl8MDtpdyhYLChjW2RhPj4yXXwwKSstNDgrNHwwLChjW2RhPj4yXXwwKSs0fDApO189KGNbZGE+PjJdfDApKy00OCs0fDA7Y1tfPj4yXT1jW1g+PjJdO2NbXys0Pj4yXT1jW1grND4+Ml07Y1tfKzg+PjJdPWNbWCs4Pj4yXTticmVha31jYXNlIDE2NDp7Y1tYPj4yXT1tdyhjW18+PjJdfDAsMCwoY1tkYT4+Ml18MCkrNHwwKXwwO2l3KFgsKGNbZGE+PjJdfDApKzR8MCwoY1tkYT4+Ml18MCkrNHwwKTtfPShjW2RhPj4yXXwwKSs0fDA7Y1tfPj4yXT1jW1g+PjJdO2NbXys0Pj4yXT1jW1grND4+Ml07Y1tfKzg+PjJdPWNbWCs4Pj4yXTticmVha31jYXNlIDE2NTp7Y1t3Pj4yXT1UdihjW18+PjJdfDAsY1soY1tkYT4+Ml18MCkrLTQ4KzQ+PjJdfDAsY1soY1tkYT4+Ml18MCkrLTE2KzQ+PjJdfDApfDA7Y1tYPj4yXT1FdihjW18+PjJdfDAsMTU4LDAsMCwwKXwwO2lmKGNbWD4+Ml18MCl7Y1soY1tYPj4yXXwwKSsyMD4+Ml09Y1t3Pj4yXTtpdyhYLChjW2RhPj4yXXwwKSstNjQrNHwwLChjW2RhPj4yXXwwKSs0fDApfWVsc2UgZXYoY1tjW18+PjJdPj4yXXwwLGNbdz4+Ml18MCk7Xz0oY1tkYT4+Ml18MCkrLTY0KzR8MDtjW18+PjJdPWNbWD4+Ml07Y1tfKzQ+PjJdPWNbWCs0Pj4yXTtjW18rOD4+Ml09Y1tYKzg+PjJdO2JyZWFrfWNhc2UgMTczOmNhc2UgMTcyOmNhc2UgMTcxOmNhc2UgMTcwOmNhc2UgMTY5OmNhc2UgMTY4OmNhc2UgMTY3OmNhc2UgMTY2OntudyhjW18+PjJdfDAsZFsoY1tkYT4+Ml18MCkrLTE2KzI+PjBdfDAsKGNbZGE+PjJdfDApKy0zMis0fDAsKGNbZGE+PjJdfDApKzR8MCk7YnJlYWt9Y2FzZSAxNzQ6e189KGNbZGE+PjJdfDApKzR8MDtaPShjW2RhPj4yXXwwKSs0fDA7Y1tfPj4yXT1jW1o+PjJdO2NbXys0Pj4yXT1jW1orND4+Ml07YnJlYWt9Y2FzZSAxNzU6e189KGNbZGE+PjJdfDApKy0xNis0fDA7Wj0oY1tkYT4+Ml18MCkrNHwwO2NbXz4+Ml09Y1taPj4yXTtjW18rND4+Ml09Y1taKzQ+PjJdO189KGNbZGE+PjJdfDApKy0xNis0KzR8MDtjW18+PjJdPWNbXz4+Ml18LTIxNDc0ODM2NDg7YnJlYWt9Y2FzZSAxNzY6e2Nbaz4+Ml09Y1soY1tkYT4+Ml18MCkrLTE2KzQrND4+Ml0mLTIxNDc0ODM2NDg7Wj0oY1tkYT4+Ml18MCkrLTE2KzQrNHwwO2NbWj4+Ml09Y1taPj4yXSYyMTQ3NDgzNjQ3O2NbeT4+Ml09VHYoY1tfPj4yXXwwLDAsY1soY1tkYT4+Ml18MCkrND4+Ml18MCl8MDtjW3k+PjJdPVR2KGNbXz4+Ml18MCxjW3k+PjJdfDAsY1soY1tkYT4+Ml18MCkrLTMyKzQ+PjJdfDApfDA7Wj1tdyhjW18+PjJdfDAsY1t5Pj4yXXwwLChjW2RhPj4yXXwwKSstMTYrNHwwKXwwO2NbKGNbZGE+PjJdfDApKy0zMis0Pj4yXT1aO293KGNbXz4+Ml18MCxjW2s+PjJdfDAsKGNbZGE+PjJdfDApKy0zMis0fDApO2NbKGNbZGE+PjJdfDApKy0zMis0Kzg+PjJdPWNbKGNbZGE+PjJdfDApKzQrOD4+Ml07aWYoY1soY1tkYT4+Ml18MCkrLTMyKzQ+PjJdfDApe189KGNbKGNbZGE+PjJdfDApKy0zMis0Pj4yXXwwKSs0fDA7Y1tfPj4yXT1jW18+PjJdfDEyOH1icmVha31jYXNlIDE3Nzp7Y1tsPj4yXT1jWyhjW2RhPj4yXXwwKSstNDgrNCs0Pj4yXSYtMjE0NzQ4MzY0ODtaPShjW2RhPj4yXXwwKSstNDgrNCs0fDA7Y1taPj4yXT1jW1o+PjJdJjIxNDc0ODM2NDc7Y1t6Pj4yXT1UdihjW18+PjJdfDAsMCxjWyhjW2RhPj4yXXwwKSstMzIrND4+Ml18MCl8MDtjW3o+PjJdPVR2KGNbXz4+Ml18MCxjW3o+PjJdfDAsY1soY1tkYT4+Ml18MCkrLTY0KzQ+PjJdfDApfDA7Y1t6Pj4yXT1UdihjW18+PjJdfDAsY1t6Pj4yXXwwLGNbKGNbZGE+PjJdfDApKzQ+PjJdfDApfDA7Wj1tdyhjW18+PjJdfDAsY1t6Pj4yXXwwLChjW2RhPj4yXXwwKSstNDgrNHwwKXwwO2NbKGNbZGE+PjJdfDApKy02NCs0Pj4yXT1aO293KGNbXz4+Ml18MCxjW2w+PjJdfDAsKGNbZGE+PjJdfDApKy02NCs0fDApO2NbKGNbZGE+PjJdfDApKy02NCs0Kzg+PjJdPWNbKGNbZGE+PjJdfDApKzQrOD4+Ml07aWYoY1soY1tkYT4+Ml18MCkrLTY0KzQ+PjJdfDApe189KGNbKGNbZGE+PjJdfDApKy02NCs0Pj4yXXwwKSs0fDA7Y1tfPj4yXT1jW18+PjJdfDEyOH1icmVha31jYXNlIDE3ODp7cHcoY1tfPj4yXXwwLGRbKGNbZGE+PjJdfDApKzI+PjBdfDAsKGNbZGE+PjJdfDApKy0xNis0fDAsKGNbZGE+PjJdfDApKzR8MCk7YnJlYWt9Y2FzZSAxNzk6e3B3KGNbXz4+Ml18MCwzNSwoY1tkYT4+Ml18MCkrLTMyKzR8MCwoY1tkYT4+Ml18MCkrNHwwKTticmVha31jYXNlIDE4MDp7bncoY1tfPj4yXXwwLDI5LChjW2RhPj4yXXwwKSstMzIrNHwwLChjW2RhPj4yXXwwKSs0fDApO3F3KGNbXz4+Ml18MCxjWyhjW2RhPj4yXXwwKSs0Pj4yXXwwLGNbKGNbZGE+PjJdfDApKy0zMis0Pj4yXXwwLDM0KTticmVha31jYXNlIDE4MTp7bncoY1tfPj4yXXwwLDE0OCwoY1tkYT4+Ml18MCkrLTQ4KzR8MCwoY1tkYT4+Ml18MCkrNHwwKTtxdyhjW18+PjJdfDAsY1soY1tkYT4+Ml18MCkrND4+Ml18MCxjWyhjW2RhPj4yXXwwKSstNDgrND4+Ml18MCwzNSk7YnJlYWt9Y2FzZSAxODM6Y2FzZSAxODI6e3J3KChjW2RhPj4yXXwwKSstMTYrNHwwLGNbXz4+Ml18MCxkWyhjW2RhPj4yXXwwKSstMTYrMj4+MF18MCwoY1tkYT4+Ml18MCkrNHwwLChjW2RhPj4yXXwwKSstMTYrNHwwKTticmVha31jYXNlIDE4NDp7cncoKGNbZGE+PjJdfDApKy0xNis0fDAsY1tfPj4yXXwwLDE1NSwoY1tkYT4+Ml18MCkrNHwwLChjW2RhPj4yXXwwKSstMTYrNHwwKTticmVha31jYXNlIDE4NTp7cncoKGNbZGE+PjJdfDApKy0xNis0fDAsY1tfPj4yXXwwLDE1NiwoY1tkYT4+Ml18MCkrNHwwLChjW2RhPj4yXXwwKSstMTYrNHwwKTticmVha31jYXNlIDE4OTpjYXNlIDE4Njp7Y1soY1tkYT4+Ml18MCkrND4+Ml09MDticmVha31jYXNlIDE4ODp7Y1t4Pj4yXT1UdihjW18+PjJdfDAsMCxjWyhjW2RhPj4yXXwwKSstMzIrND4+Ml18MCl8MDtjW3g+PjJdPVR2KGNbXz4+Ml18MCxjW3g+PjJdfDAsY1soY1tkYT4+Ml18MCkrND4+Ml18MCl8MDtaPUV2KGNbXz4+Ml18MCwzMixjWyhjW2RhPj4yXXwwKSstNjQrND4+Ml18MCwwLDApfDA7Y1soY1tkYT4+Ml18MCkrLTY0KzQ+PjJdPVo7aWYoY1soY1tkYT4+Ml18MCkrLTY0KzQ+PjJdfDApY1soY1soY1tkYT4+Ml18MCkrLTY0KzQ+PjJdfDApKzIwPj4yXT1jW3g+PjJdO2Vsc2UgZXYoY1tjW18+PjJdPj4yXXwwLGNbeD4+Ml18MCk7b3coY1tfPj4yXXwwLGNbKGNbZGE+PjJdfDApKy00OCs0Pj4yXXwwLChjW2RhPj4yXXwwKSstNjQrNHwwKTtjWyhjW2RhPj4yXXwwKSstNjQrNCs4Pj4yXT1jWyhjW2RhPj4yXXwwKSs0Kzg+PjJdO2JyZWFrfWNhc2UgMTkxOntkbyBpZighKGNbKGNbZGE+PjJdfDApKy0xNis0Pj4yXXwwKSl7aXYoY1tjW18+PjJdPj4yXXwwLGNbKGNbZGE+PjJdfDApKy02NCs0Pj4yXXwwKTtfPUV2KGNbXz4+Ml18MCwxMzQsMCwwLDQyNzYrKGNbKGNbZGE+PjJdfDApKy00OCs0Pj4yXTw8Myl8MCl8MDtjWyhjW2RhPj4yXXwwKSstNjQrND4+Ml09X31lbHNle2lmKChjW2NbKGNbZGE+PjJdfDApKy0xNis0Pj4yXT4+Ml18MCk9PTEpe2NbQz4+Ml09Y1tjWyhjWyhjW2RhPj4yXXwwKSstMTYrND4+Ml18MCkrND4+Ml0+PjJdO2NbY1soY1soY1tkYT4+Ml18MCkrLTE2KzQ+PjJdfDApKzQ+PjJdPj4yXT0wO2V2KGNbY1tfPj4yXT4+Ml18MCxjWyhjW2RhPj4yXXwwKSstMTYrND4+Ml18MCk7aWYoY1tDPj4yXXwwKXtaPShjW0M+PjJdfDApKzR8MDtjW1o+PjJdPWNbWj4+Ml0mLTI1NztaPShjW0M+PjJdfDApKzR8MDtjW1o+PjJdPWNbWj4+Ml18NTEyfV89RXYoY1tfPj4yXXwwLChjWyhjW2RhPj4yXXwwKSstNDgrND4+Ml18MCkhPTA/MzY6MzcsY1soY1tkYT4+Ml18MCkrLTY0KzQ+PjJdfDAsY1tDPj4yXXwwLDApfDA7Y1soY1tkYT4+Ml18MCkrLTY0KzQ+PjJdPV87YnJlYWt9Wj1FdihjW18+PjJdfDAsMzMsY1soY1tkYT4+Ml18MCkrLTY0KzQ+PjJdfDAsMCwwKXwwO2NbKGNbZGE+PjJdfDApKy02NCs0Pj4yXT1aO2lmKGNbKGNbZGE+PjJdfDApKy02NCs0Pj4yXXwwKXtjWyhjWyhjW2RhPj4yXXwwKSstNjQrND4+Ml18MCkrMjA+PjJdPWNbKGNbZGE+PjJdfDApKy0xNis0Pj4yXTtzdyhjW18+PjJdfDAsY1soY1tkYT4+Ml18MCkrLTY0KzQ+PjJdfDApfWVsc2UgZXYoY1tjW18+PjJdPj4yXXwwLGNbKGNbZGE+PjJdfDApKy0xNis0Pj4yXXwwKTtvdyhjW18+PjJdfDAsY1soY1tkYT4+Ml18MCkrLTQ4KzQ+PjJdfDAsKGNbZGE+PjJdfDApKy02NCs0fDApfXdoaWxlKDApO2NbKGNbZGE+PjJdfDApKy02NCs0Kzg+PjJdPShjWyhjW2RhPj4yXXwwKSs0Pj4yXXwwKSsoY1soY1tkYT4+Ml18MCkrNCs0Pj4yXXwwKTticmVha31jYXNlIDE5Mjp7aXcoKGNbZGE+PjJdfDApKy0zMis0fDAsKGNbZGE+PjJdfDApKy0zMis0fDAsKGNbZGE+PjJdfDApKzR8MCk7Wj1FdihjW18+PjJdfDAsMTE5LDAsMCwwKXwwO2NbKGNbZGE+PjJdfDApKy0zMis0Pj4yXT1aO3R3KGNbXz4+Ml18MCxjWyhjW2RhPj4yXXwwKSstMzIrND4+Ml18MCxjWyhjW2RhPj4yXXwwKSstMTYrND4+Ml18MCk7YnJlYWt9Y2FzZSAxOTM6e1o9RXYoY1tfPj4yXXwwLDMzLGNbKGNbZGE+PjJdfDApKy02NCs0Pj4yXXwwLDAsMCl8MDtjWyhjW2RhPj4yXXwwKSstNjQrND4+Ml09Wjt0dyhjW18+PjJdfDAsY1soY1tkYT4+Ml18MCkrLTY0KzQ+PjJdfDAsY1soY1tkYT4+Ml18MCkrLTE2KzQ+PjJdfDApO293KGNbXz4+Ml18MCxjWyhjW2RhPj4yXXwwKSstNDgrND4+Ml18MCwoY1tkYT4+Ml18MCkrLTY0KzR8MCk7Y1soY1tkYT4+Ml18MCkrLTY0KzQrOD4+Ml09KGNbKGNbZGE+PjJdfDApKzQ+PjJdfDApKyhjWyhjW2RhPj4yXXwwKSs0KzQ+PjJdfDApO2JyZWFrfWNhc2UgMTk0OntjW0g+PjJdPV92KGNbY1tfPj4yXT4+Ml18MCwwLChjW2RhPj4yXXwwKSstMzIrNHwwLChjW2RhPj4yXXwwKSstMTYrNHwwKXwwO2NbRz4+Ml09U3YoY1tfPj4yXXwwLDAsY1tIPj4yXXwwLDAsMCwwLDAsMCwwLDApfDA7aWYoY1soY1tkYT4+Ml18MCkrND4+Ml18MCladihjW18+PjJdfDAsKGNbRz4+Ml18MCkhPTA/Y1tIPj4yXXwwOjAsY1soY1tkYT4+Ml18MCkrND4+Ml18MCk7aD1FdihjW18+PjJdfDAsMzMsY1soY1tkYT4+Ml18MCkrLTY0KzQ+PjJdfDAsMCwwKXwwO2NbKGNbZGE+PjJdfDApKy02NCs0Pj4yXT1oO3R3KGNbXz4+Ml18MCxjWyhjW2RhPj4yXXwwKSstNjQrND4+Ml18MCxjW0c+PjJdfDApO293KGNbXz4+Ml18MCxjWyhjW2RhPj4yXXwwKSstNDgrND4+Ml18MCwoY1tkYT4+Ml18MCkrLTY0KzR8MCk7aD1jW2RhPj4yXXwwO2lmKGNbKGNbZGE+PjJdfDApKy0xNis0Pj4yXXwwKWg9KGNbKGNbZGE+PjJdfDApKy0xNis0Pj4yXXwwKSsoY1toKy0xNis0KzQ+PjJdfDApfDA7ZWxzZSBoPShjWyhjW2RhPj4yXXwwKSstMzIrND4+Ml18MCkrKGNbaCstMzIrNCs0Pj4yXXwwKXwwO2NbKGNbZGE+PjJdfDApKy02NCs0Kzg+PjJdPWg7YnJlYWt9Y2FzZSAxOTU6e2l3KChjW2RhPj4yXXwwKSstNDgrNHwwLChjW2RhPj4yXXwwKSstNDgrNHwwLChjW2RhPj4yXXwwKSs0fDApO1o9RXYoY1tfPj4yXXwwLDIwLDAsMCwwKXwwO2NbKGNbZGE+PjJdfDApKy00OCs0Pj4yXT1aO2NbcD4+Ml09Wjt0dyhjW18+PjJdfDAsY1twPj4yXXwwLGNbKGNbZGE+PjJdfDApKy0xNis0Pj4yXXwwKTticmVha31jYXNlIDE5Njp7aXcoKGNbZGE+PjJdfDApKy02NCs0fDAsKGNbZGE+PjJdfDApKy02NCs0fDAsKGNbZGE+PjJdfDApKzR8MCk7Wj1FdihjW18+PjJdfDAsMTM2LGNbKGNbZGE+PjJdfDApKy00OCs0Pj4yXXwwLDAsMCl8MDtjWyhjW2RhPj4yXXwwKSstNjQrND4+Ml09WjtpZighKGNbKGNbZGE+PjJdfDApKy02NCs0Pj4yXXwwKSl7ZXYoY1tjW18+PjJdPj4yXXwwLGNbKGNbZGE+PjJdfDApKy0zMis0Pj4yXXwwKTtpdihjW2NbXz4+Ml0+PjJdfDAsY1soY1tkYT4+Ml18MCkrLTE2KzQ+PjJdfDApO2JyZWFrIGF9aWYoY1soY1tkYT4+Ml18MCkrLTE2KzQ+PjJdfDApaD1UdihjW18+PjJdfDAsY1soY1tkYT4+Ml18MCkrLTMyKzQ+PjJdfDAsY1soY1tkYT4+Ml18MCkrLTE2KzQ+PjJdfDApfDA7ZWxzZSBoPWNbKGNbZGE+PjJdfDApKy0zMis0Pj4yXXwwO2NbKGNbKGNbZGE+PjJdfDApKy02NCs0Pj4yXXwwKSsyMD4+Ml09aDtzdyhjW18+PjJdfDAsY1soY1tkYT4+Ml18MCkrLTY0KzQ+PjJdfDApO2JyZWFrfWNhc2UgMTk3OntaPVR2KGNbXz4+Ml18MCxjWyhjW2RhPj4yXXwwKSstNjQrND4+Ml18MCxjWyhjW2RhPj4yXXwwKSstMzIrND4+Ml18MCl8MDtjWyhjW2RhPj4yXXwwKSstNjQrND4+Ml09WjtfPVR2KGNbXz4+Ml18MCxjWyhjW2RhPj4yXXwwKSstNjQrND4+Ml18MCxjWyhjW2RhPj4yXXwwKSs0Pj4yXXwwKXwwO2NbKGNbZGE+PjJdfDApKy02NCs0Pj4yXT1fO2JyZWFrfWNhc2UgMTk4OntaPVR2KGNbXz4+Ml18MCwwLGNbKGNbZGE+PjJdfDApKy0zMis0Pj4yXXwwKXwwO2NbKGNbZGE+PjJdfDApKy00OCs0Pj4yXT1aO189VHYoY1tfPj4yXXwwLGNbKGNbZGE+PjJdfDApKy00OCs0Pj4yXXwwLGNbKGNbZGE+PjJdfDApKzQ+PjJdfDApfDA7Y1soY1tkYT4+Ml18MCkrLTQ4KzQ+PjJdPV87YnJlYWt9Y2FzZSAyMDE6e2NbKGNbZGE+PjJdfDApKzQ+PjJdPWNbKGNbZGE+PjJdfDApKzQ+PjJdO2JyZWFrfWNhc2UgMjA0OntfPVR2KGNbXz4+Ml18MCxjWyhjW2RhPj4yXXwwKSstMzIrND4+Ml18MCxjWyhjW2RhPj4yXXwwKSs0Pj4yXXwwKXwwO2NbKGNbZGE+PjJdfDApKy0zMis0Pj4yXT1fO2JyZWFrfWNhc2UgMjA1OntfPVR2KGNbXz4+Ml18MCwwLGNbKGNbZGE+PjJdfDApKzQ+PjJdfDApfDA7Y1soY1tkYT4+Ml18MCkrND4+Ml09XzticmVha31jYXNlIDIxMjpjYXNlIDIwNzp7Y1soY1tkYT4+Ml18MCkrLTMyKzQ+PjJdPWNbKGNbZGE+PjJdfDApKy0xNis0Pj4yXTticmVha31jYXNlIDIwODp7SXYoY1tfPj4yXXwwLChjW2RhPj4yXXwwKSstMTEyKzR8MCwoY1tkYT4+Ml18MCkrLTk2KzR8MCxfdihjW2NbXz4+Ml0+PjJdfDAsMCwoY1tkYT4+Ml18MCkrLTY0KzR8MCwwKXwwLGNbKGNbZGE+PjJdfDApKy0zMis0Pj4yXXwwLGNbKGNbZGE+PjJdfDApKy0xNjArND4+Ml18MCwoY1tkYT4+Ml18MCkrLTE3Nis0fDAsY1soY1tkYT4+Ml18MCkrND4+Ml18MCwwLGNbKGNbZGE+PjJdfDApKy0xMjgrND4+Ml18MCwwKTticmVha31jYXNlIDI1MDpjYXNlIDIwOTp7Y1soY1tkYT4+Ml18MCkrND4+Ml09MjticmVha31jYXNlIDIxMDp7Y1soY1tkYT4+Ml18MCkrMTYrND4+Ml09MDticmVha31jYXNlIDIxMzp7Xz11dyhjW18+PjJdfDAsY1soY1tkYT4+Ml18MCkrLTY0KzQ+PjJdfDAsKGNbZGE+PjJdfDApKy0zMis0fDAsY1soY1tkYT4+Ml18MCkrLTE2KzQ+PjJdfDAsY1soY1tkYT4+Ml18MCkrND4+Ml18MCl8MDtjWyhjW2RhPj4yXXwwKSstNjQrND4+Ml09XzticmVha31jYXNlIDIxNDp7Xz11dyhjW18+PjJdfDAsMCwoY1tkYT4+Ml18MCkrLTMyKzR8MCxjWyhjW2RhPj4yXXwwKSstMTYrND4+Ml18MCxjWyhjW2RhPj4yXXwwKSs0Pj4yXXwwKXwwO2NbKGNbZGE+PjJdfDApKy0zMis0Pj4yXT1fO2JyZWFrfWNhc2UgMjE3Ont2dyhjW18+PjJdfDAsY1soY1tkYT4+Ml18MCkrND4+Ml18MCxjWyhjW2RhPj4yXXwwKSstMTYrND4+Ml18MCk7YnJlYWt9Y2FzZSAyMTg6e3d3KGNbXz4+Ml18MCwwKTticmVha31jYXNlIDIxOTp7d3coY1tfPj4yXXwwLChjW2RhPj4yXXwwKSs0fDApO2JyZWFrfWNhc2UgMjIwOnt4dyhjW18+PjJdfDAsKGNbZGE+PjJdfDApKy0xNis0fDAsKGNbZGE+PjJdfDApKzR8MCwwLDApO2JyZWFrfWNhc2UgMjIxOnt4dyhjW18+PjJdfDAsKGNbZGE+PjJdfDApKy00OCs0fDAsKGNbZGE+PjJdfDApKy0zMis0fDAsKGNbZGE+PjJdfDApKzR8MCwwKTticmVha31jYXNlIDIyMjp7eHcoY1tfPj4yXXwwLChjW2RhPj4yXXwwKSstNjQrNHwwLChjW2RhPj4yXXwwKSstNDgrNHwwLChjW2RhPj4yXXwwKSstMTYrNHwwLDApO2JyZWFrfWNhc2UgMjIzOnt4dyhjW18+PjJdfDAsKGNbZGE+PjJdfDApKy00OCs0fDAsKGNbZGE+PjJdfDApKy0zMis0fDAsKGNbZGE+PjJdfDApKzR8MCwxKTticmVha31jYXNlIDIyNDp7eHcoY1tfPj4yXXwwLChjW2RhPj4yXXwwKSstNjQrNHwwLChjW2RhPj4yXXwwKSstNDgrNHwwLChjW2RhPj4yXXwwKSstMTYrNHwwLDEpO2JyZWFrfWNhc2UgMjI3OntjW2o+PjJdPWNbKGNbZGE+PjJdfDApKy00OCs0Pj4yXTtjW2orND4+Ml09KGNbKGNbZGE+PjJdfDApKzQ+PjJdfDApLShjWyhjW2RhPj4yXXwwKSstNDgrND4+Ml18MCkrKGNbKGNbZGE+PjJdfDApKzQrND4+Ml18MCk7eXcoY1tfPj4yXXwwLGNbKGNbZGE+PjJdfDApKy0xNis0Pj4yXXwwLGopO2JyZWFrfWNhc2UgMjI4Ont6dyhjW18+PjJdfDAsKGNbZGE+PjJdfDApKy0xMTIrNHwwLChjW2RhPj4yXXwwKSstOTYrNHwwLGNbKGNbZGE+PjJdfDApKy04MCs0Pj4yXXwwLGNbKGNbZGE+PjJdfDApKy02NCs0Pj4yXXwwLGNbKGNbZGE+PjJdfDApKy02NCs0KzQ+PjJdfDAsY1soY1tkYT4+Ml18MCkrLTMyKzQ+PjJdfDAsY1soY1tkYT4+Ml18MCkrND4+Ml18MCxjWyhjW2RhPj4yXXwwKSstMTYwKzQ+PjJdfDAsY1soY1tkYT4+Ml18MCkrLTEyOCs0Pj4yXXwwKTtoPShjW2RhPj4yXXwwKSstMTYwKzR8MDtqPWNbZGE+PjJdfDA7aWYoIShjWyhjW2RhPj4yXXwwKSstOTYrNCs0Pj4yXXwwKSl7Xz1qKy0xMTIrNHwwO2NbaD4+Ml09Y1tfPj4yXTtjW2grND4+Ml09Y1tfKzQ+PjJdO2JyZWFrIGF9ZWxzZXtfPWorLTk2KzR8MDtjW2g+PjJdPWNbXz4+Ml07Y1toKzQ+PjJdPWNbXys0Pj4yXTticmVhayBhfX1jYXNlIDIyOTp7Y1soY1tkYT4+Ml18MCkrND4+Ml09NjM7YnJlYWt9Y2FzZSAyMzA6e2NbKGNbZGE+PjJdfDApKzQ+PjJdPTU5O2JyZWFrfWNhc2UgMjMxOntjWyhjW2RhPj4yXXwwKSstMTYrND4+Ml09Nzc7YnJlYWt9Y2FzZSAyMzI6e2NbKGNbZGE+PjJdfDApKzE2KzQ+PjJdPTYzO2JyZWFrfWNhc2UgMjM0OmNhc2UgMjMzOntjWyhjW2RhPj4yXXwwKSs0Pj4yXT1kWyhjW2RhPj4yXXwwKSsyPj4wXTtjWyhjW2RhPj4yXXwwKSs0KzQ+PjJdPTA7YnJlYWt9Y2FzZSAyMzU6e2NbKGNbZGE+PjJdfDApKy0zMis0Pj4yXT0xMTA7Y1soY1tkYT4+Ml18MCkrLTMyKzQrND4+Ml09Y1soY1tkYT4+Ml18MCkrND4+Ml07YnJlYWt9Y2FzZSAyNTU6Y2FzZSAyMzY6e2NbKGNbZGE+PjJdfDApKzE2KzQ+PjJdPTA7YnJlYWt9Y2FzZSAyNTY6Y2FzZSAyMzc6e2NbKGNbZGE+PjJdfDApKy0xNis0Pj4yXT1jWyhjW2RhPj4yXXwwKSs0Pj4yXTticmVha31jYXNlIDIzODp7Y1soY1soY1soY1tkYT4+Ml18MCkrLTMyKzQ+PjJdfDApKzMyPj4yXXwwKSsyOD4+Ml09Y1soY1tkYT4+Ml18MCkrLTE2KzQ+PjJdO2NbKGNbKGNbZGE+PjJdfDApKy0zMis0Pj4yXXwwKSszMj4+Ml09Y1soY1tkYT4+Ml18MCkrLTE2KzQ+PjJdO2JyZWFrfWNhc2UgMjM5OntjWyhjWyhjW2RhPj4yXXwwKSstMTYrND4+Ml18MCkrMzI+PjJdPWNbKGNbZGE+PjJdfDApKy0xNis0Pj4yXTticmVha31jYXNlIDI0MDp7Wj0oY1tkYT4+Ml18MCkrLTMyKzR8MDtZPShjW2RhPj4yXXwwKSs0fDA7Y1taPj4yXT1jW1k+PjJdO2NbWis0Pj4yXT1jW1krND4+Ml07RWgoY1tfPj4yXXwwLDI3MjIwLFYpO2JyZWFrfWNhc2UgMjQxOntFaChjW18+PjJdfDAsMjczMTUsUyk7YnJlYWt9Y2FzZSAyNDI6e0VoKGNbXz4+Ml18MCwyNzM5OSxUKTticmVha31jYXNlIDI0Mzp7Xz1BdyhjW2NbXz4+Ml0+PjJdfDAsKGNbZGE+PjJdfDApKy02NCs0fDAsY1soY1tkYT4+Ml18MCkrLTE2KzQ+PjJdfDAsY1soY1tkYT4+Ml18MCkrND4+Ml18MCxjWyhjW2RhPj4yXXwwKSstODArND4+Ml0mMjU1KXwwO2NbKGNbZGE+PjJdfDApKy05Nis0Pj4yXT1fO2JyZWFrfWNhc2UgMjQ0OntfPUJ3KGNbY1tfPj4yXT4+Ml18MCwoY1tkYT4+Ml18MCkrLTMyKzR8MCxjWyhjW2RhPj4yXXwwKSstMTYrND4+Ml18MCxjWyhjW2RhPj4yXXwwKSs0Pj4yXXwwLGNbKGNbZGE+PjJdfDApKy02NCs0Pj4yXSYyNTUpfDA7Y1soY1tkYT4+Ml18MCkrLTY0KzQ+PjJdPV87YnJlYWt9Y2FzZSAyNDU6e189Q3coY1tjW18+PjJdPj4yXXwwLChjW2RhPj4yXXwwKSstMzIrNHwwLGNbKGNbZGE+PjJdfDApKzQ+PjJdfDApfDA7Y1soY1tkYT4+Ml18MCkrLTY0KzQ+PjJdPV87YnJlYWt9Y2FzZSAyNDY6e189RHcoY1tjW18+PjJdPj4yXXwwLGNbKGNbZGE+PjJdfDApKzQ+PjJdfDApfDA7Y1soY1tkYT4+Ml18MCkrND4+Ml09XzticmVha31jYXNlIDI0Nzp7aXcoKGNbZGE+PjJdfDApKy00OCs0fDAsKGNbZGE+PjJdfDApKy00OCs0fDAsKGNbZGE+PjJdfDApKzR8MCk7Xz1FdihjW18+PjJdfDAsODMsMCwwLDApfDA7Y1soY1tkYT4+Ml18MCkrLTQ4KzQ+PjJdPV87aWYoY1soY1tkYT4+Ml18MCkrLTQ4KzQ+PjJdfDApYVsoY1soY1tkYT4+Ml18MCkrLTQ4KzQ+PjJdfDApKzE+PjBdPTQ7YnJlYWt9Y2FzZSAyNDg6e2l3KChjW2RhPj4yXXwwKSstODArNHwwLChjW2RhPj4yXXwwKSstODArNHwwLChjW2RhPj4yXXwwKSs0fDApO189RXYoY1tfPj4yXXwwLDgzLDAsMCwoY1tkYT4+Ml18MCkrLTE2KzR8MCl8MDtjWyhjW2RhPj4yXXwwKSstODArND4+Ml09XztpZihjWyhjW2RhPj4yXXwwKSstODArND4+Ml18MClhWyhjWyhjW2RhPj4yXXwwKSstODArND4+Ml18MCkrMT4+MF09Y1soY1tkYT4+Ml18MCkrLTQ4KzQ+PjJdO2JyZWFrfWNhc2UgMjQ5OntjWyhjW2RhPj4yXXwwKSs0Pj4yXT0xO2JyZWFrfWNhc2UgMjUxOntjWyhjW2RhPj4yXXwwKSs0Pj4yXT0zO2JyZWFrfWNhc2UgMjUyOntFdyhjW18+PjJdfDAsY1soY1tkYT4+Ml18MCkrND4+Ml18MCxjWyhjW2RhPj4yXXwwKSstMTYrND4+Ml18MCk7YnJlYWt9Y2FzZSAyNTM6e0Z3KGNbXz4+Ml18MCxjWyhjW2RhPj4yXXwwKSstNDgrND4+Ml18MCxjWyhjW2RhPj4yXXwwKSstMTYrND4+Ml18MCxjWyhjW2RhPj4yXXwwKSs0Pj4yXXwwKTticmVha31jYXNlIDI1NDp7R3coY1tfPj4yXXwwLGNbKGNbZGE+PjJdfDApKzQ+PjJdfDApO2JyZWFrfWNhc2UgMjU3OntIdyhjW18+PjJdfDAsMCwwKTticmVha31jYXNlIDI1ODp7SHcoY1tfPj4yXXwwLChjW2RhPj4yXXwwKSstMTYrNHwwLChjW2RhPj4yXXwwKSs0fDApO2JyZWFrfWNhc2UgMjU5OntJdyhjW18+PjJdfDAsMCwwKTticmVha31jYXNlIDI2MDp7SXcoY1tfPj4yXXwwLChjW2RhPj4yXXwwKSstMTYrNHwwLChjW2RhPj4yXXwwKSs0fDApO2JyZWFrfWNhc2UgMjYxOntKdyhjW18+PjJdfDAsY1soY1tkYT4+Ml18MCkrLTQ4KzQ+PjJdfDAsKGNbZGE+PjJdfDApKzR8MCk7YnJlYWt9Y2FzZSAyNjI6e2NbKGNbZGE+PjJdfDApKy0xNis0KzQ+PjJdPShjWyhjW18+PjJdfDApKzM5Mj4+Ml18MCktKGNbKGNbZGE+PjJdfDApKy0xNis0Pj4yXXwwKSsoY1soY1tfPj4yXXwwKSszOTIrND4+Ml18MCk7S3coY1tfPj4yXXwwLChjW2RhPj4yXXwwKSstMTYrNHwwKTticmVha31jYXNlIDI2Mzp7QXYoY1tfPj4yXXwwKTtMdyhjW18+PjJdfDAsY1soY1tkYT4+Ml18MCkrND4+Ml18MCk7YnJlYWt9Y2FzZSAyNjQ6e013KGNbXz4+Ml18MCwwKTticmVha31jYXNlIDI2NTp7TXcoY1tfPj4yXXwwLChjW2RhPj4yXXwwKSs0fDApO2JyZWFrfWNhc2UgMjY2OntOdyhjW18+PjJdfDAsKGNbZGE+PjJdfDApKy00OCs0fDAsKGNbZGE+PjJdfDApKy0zMis0fDAsKGNbZGE+PjJdfDApKzR8MCxjWyhjW2RhPj4yXXwwKSstNjQrND4+Ml18MCk7YnJlYWt9Y2FzZSAyNjc6e093KGNbXz4+Ml18MCk7YnJlYWt9Y2FzZSAyNzA6Y2FzZSAyNjk6Y2FzZSAyNjg6e1B3KGNbXz4+Ml18MCwoY1tkYT4+Ml18MCkrNHwwKTticmVha31jYXNlIDI3MTp7Y1soY1tkYT4+Ml18MCkrMTYrND4+Ml09MDticmVha31jYXNlIDI3Mjp7Y1soY1tkYT4+Ml18MCkrLTE2KzQ+PjJdPWNbKGNbZGE+PjJdfDApKzQ+PjJdO2JyZWFrfWNhc2UgMjczOntjWyhjW2RhPj4yXXwwKSstMzIrND4+Ml09Y1soY1tkYT4+Ml18MCkrND4+Ml07YnJlYWt9Y2FzZSAyNzQ6e189UXcoY1tfPj4yXXwwLDAsKGNbZGE+PjJdfDApKy04MCs0fDAsY1soY1tkYT4+Ml18MCkrLTY0KzQ+PjJdfDAsY1soY1tkYT4+Ml18MCkrLTE2KzQ+PjJdfDApfDA7Y1soY1tkYT4+Ml18MCkrLTgwKzQ+PjJdPV87YnJlYWt9Y2FzZSAyNzU6e189UXcoY1tfPj4yXXwwLGNbKGNbZGE+PjJdfDApKy0xMTIrND4+Ml18MCwoY1tkYT4+Ml18MCkrLTgwKzR8MCxjWyhjW2RhPj4yXXwwKSstNjQrND4+Ml18MCxjWyhjW2RhPj4yXXwwKSstMTYrND4+Ml18MCl8MDtjWyhjW2RhPj4yXXwwKSstMTEyKzQ+PjJdPV87YnJlYWt9ZGVmYXVsdDp7fX13aGlsZSgwKTtjW2NhPj4yXT1kWzI2NDg2KyhjW2FhPj4yXTw8MSk+PjBdO2NbZWE+PjJdPWRbMjY0ODYrKGNbYWE+PjJdPDwxKSsxPj4wXTtjW2JhPj4yXT1SdyhlWyhjW2RhPj4yXXwwKSsoMC0oY1tlYT4+Ml18MCk8PDQpPj4xXXwwLGNbY2E+PjJdJjI1NSl8MDtpZigoY1tiYT4+Ml18MCk+OTk5KXtkYT1jWyQ+PjJdfDA7Y1tkYT4+Ml09KGNbZGE+PjJdfDApKygwLShjW2VhPj4yXXwwKTw8NCk7U3coY1skPj4yXXwwKTtpPWZhO3JldHVybn1pZigoY1tiYT4+Ml18MCk+NDU1KWNbYmE+PjJdPShjW2JhPj4yXXwwKSszMzI7Y1tkYT4+Ml09KGNbZGE+PjJdfDApKygwLSgoY1tlYT4+Ml18MCktMSk8PDQpO2NbY1skPj4yXT4+Ml09Y1tkYT4+Ml07YltjW2RhPj4yXT4+MV09Y1tiYT4+Ml07YVsoY1tkYT4+Ml18MCkrMj4+MF09Y1tjYT4+Ml07aT1mYTtyZXR1cm59ZnVuY3Rpb24gc3YoYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTA7ZT1pO2k9aSsxNnwwO2g9ZTtmPWUrMTJ8MDtnPWUrNHwwO2NbZj4+Ml09YTtjW2UrOD4+Ml09YjtjW2c+PjJdPWNbKGNbZj4+Ml18MCkrND4+Ml07YT1jW2c+PjJdfDA7Y1toPj4yXT1kO0VoKGEsMjY0NjIsaCk7Y1soY1tmPj4yXXwwKSs0Pj4yXT1jW2c+PjJdO2k9ZTtyZXR1cm59ZnVuY3Rpb24gdHYoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MDtmPWk7aT1pKzE2fDA7ZT1mO2I9Zis4fDA7ZD1mKzR8MDtjW2I+PjJdPWE7Y1tkPj4yXT1jWyhjW2I+PjJdfDApKzQ+PjJdO2E9Y1tiPj4yXXwwO2NbYT4+Ml09KGNbYT4+Ml18MCkrLTE2O3doaWxlKDEpe2lmKChjW2NbYj4+Ml0+PjJdfDApPj4+MDw9KChjW2I+PjJdfDApKzh8MCk+Pj4wKWJyZWFrO212KGNbYj4+Ml18MCl9RWgoY1tkPj4yXXwwLDM3NTk3LGUpO2NbKGNbYj4+Ml18MCkrND4+Ml09Y1tkPj4yXTtpPWY7cmV0dXJufWZ1bmN0aW9uIHV2KGIpe2I9YnwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MDtuPWk7aT1pKzMyfDA7ZT1uKzI4fDA7Zj1uKzI0fDA7bD1uKzIwfDA7aD1uKzE2fDA7Zz1uKzEyfDA7az1uKzh8MDttPW4rNHwwO2o9bjtjW2U+PjJdPWI7Y1tmPj4yXT1jW2NbZT4+Ml0+PjJdO2lmKGFbKGNbZT4+Ml18MCkrMTg+PjBdfDApe2k9bjtyZXR1cm59aWYoKGRbKGNbZj4+Ml18MCkrNjk+PjBdfDApPT0wPyhjWyhjW2U+PjJdfDApKzM2Pj4yXXwwKT09MDowKXtjW2w+PjJdPWR4KGNbZT4+Ml18MCl8MDtkbyBpZigoY1tsPj4yXXwwKSE9MD8oZngoY1tsPj4yXXwwLDc1KXwwLChkWyhjW2Y+PjJdfDApKzY5Pj4wXXwwKT09MCk6MCl7aWYoKGNbKGNbZT4+Ml18MCkrOTY+PjJdfDApPT0wPyhjWyhjW2U+PjJdfDApKzgwPj4yXXwwKT09MDowKWJyZWFrO1p6KGNbbD4+Ml18MCwwKTtjW2g+PjJdPTA7d2hpbGUoMSl7aWYoKGNbaD4+Ml18MCk+PShjWyhjW2Y+PjJdfDApKzIwPj4yXXwwKSlicmVhaztpZigoKGNbKGNbZT4+Ml18MCkrOTY+PjJdJjE8PGNbaD4+Ml18MCkhPTB8MCkhPTA/KExoKGNbbD4+Ml18MCxjW2g+PjJdfDApLGNbaz4+Ml09Y1soY1soY1tmPj4yXXwwKSsxNj4+Ml18MCkrKGNbaD4+Ml08PDQpKzEyPj4yXSxJaChjW2w+PjJdfDAsMixjW2g+PjJdfDAsKGNbKGNbZT4+Ml18MCkrOTI+PjJdJjE8PGNbaD4+Ml18MCkhPTAmMSxjW2Nbaz4+Ml0+PjJdfDAsY1soY1trPj4yXXwwKSs0Pj4yXXwwKXwwLChkWyhjW2Y+PjJdfDApKzE0OCs1Pj4wXXwwKT09MCk6MClKaChjW2w+PjJdfDAsMSk7Y1toPj4yXT0oY1toPj4yXXwwKSsxfWNbZz4+Ml09MDt3aGlsZSgxKXtpZigoY1tnPj4yXXwwKT49KGNbKGNbZT4+Ml18MCkrNDEyPj4yXXwwKSlicmVhaztjW20+PjJdPVV4KGNbZj4+Ml18MCxjWyhjWyhjW2U+PjJdfDApKzQ2MD4+Ml18MCkrKGNbZz4+Ml08PDIpPj4yXXwwKXwwO214KGNbbD4+Ml18MCwxNTIsMCwwLDAsY1ttPj4yXXwwLC0xMCl8MDtjW2c+PjJdPShjW2c+PjJdfDApKzF9Y1soY1tlPj4yXXwwKSs0MTI+PjJdPTA7UEgoY1tlPj4yXXwwKTtRSChjW2U+PjJdfDApO2E6ZG8gaWYoY1soY1tlPj4yXXwwKSs4MD4+Ml18MCl7Y1tqPj4yXT1jWyhjW2U+PjJdfDApKzgwPj4yXTthWyhjW2U+PjJdfDApKzIzPj4wXT0wO2NbZz4+Ml09MDt3aGlsZSgxKXtpZigoY1tnPj4yXXwwKT49KGNbY1tqPj4yXT4+Ml18MCkpYnJlYWsgYTtSQShjW2U+PjJdfDAsY1soY1soY1tqPj4yXXwwKSs0Pj4yXXwwKSsoKGNbZz4+Ml18MCkqMjB8MCk+PjJdfDAsY1soY1soY1tqPj4yXXwwKSs0Pj4yXXwwKSsoKGNbZz4+Ml18MCkqMjB8MCkrMTY+PjJdfDApO2NbZz4+Ml09KGNbZz4+Ml18MCkrMX19d2hpbGUoMCk7WXooY1tsPj4yXXwwLDEpfDB9d2hpbGUoMCk7aWYoKChjW2w+PjJdfDApIT0wPyhjWyhjW2U+PjJdfDApKzM2Pj4yXXwwKT09MDowKT8oYVsoY1tmPj4yXXwwKSs2OT4+MF18MCk9PTA6MCl7aWYoKGNbKGNbZT4+Ml18MCkrMTIwPj4yXXwwKSE9MD8oY1soY1tlPj4yXXwwKSs0MD4+Ml18MCk9PTA6MCljWyhjW2U+PjJdfDApKzQwPj4yXT0xO05oKGNbbD4+Ml18MCxjW2U+PjJdfDApO2NbKGNbZT4+Ml18MCkrMTI+PjJdPTEwMTtpPW47cmV0dXJufWNbKGNbZT4+Ml18MCkrMTI+PjJdPTE7aT1uO3JldHVybn1pZihjWyhjW2U+PjJdfDApKzEyPj4yXXwwKXtpPW47cmV0dXJufWNbKGNbZT4+Ml18MCkrMTI+PjJdPTE7aT1uO3JldHVybn1mdW5jdGlvbiB2dihhLGIpe2E9YXwwO2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MDtqPWk7aT1pKzMyfDA7ZD1qKzE2fDA7ZT1qKzEyfDA7Zj1qKzh8MDtoPWorNHwwO2c9ajtjW2Q+PjJdPWE7Y1tlPj4yXT1iO2NbZj4+Ml09Y1tjW2Q+PjJdPj4yXTtpZihheChjW2Q+PjJdfDAsMjIsMzc1MjcsMCwwKXwwKXtpPWo7cmV0dXJufWNbaD4+Ml09ZHgoY1tkPj4yXXwwKXwwO2lmKCEoY1toPj4yXXwwKSl7aT1qO3JldHVybn1hOmRvIGlmKChjW2U+PjJdfDApIT03KXtjW2c+PjJdPTA7d2hpbGUoMSl7aWYoKGNbZz4+Ml18MCk+PShjWyhjW2Y+PjJdfDApKzIwPj4yXXwwKSlicmVhayBhO2l4KGNbaD4+Ml18MCwyLGNbZz4+Ml18MCwoKGNbZT4+Ml18MCk9PTkmMSkrMXwwKXwwO0xoKGNbaD4+Ml18MCxjW2c+PjJdfDApO2NbZz4+Ml09KGNbZz4+Ml18MCkrMX19d2hpbGUoMCk7ZngoY1toPj4yXXwwLDEpfDA7aT1qO3JldHVybn1mdW5jdGlvbiB3dihhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTA7ZT1pO2k9aSsxNnwwO2I9ZSs0fDA7ZD1lO2NbYj4+Ml09YTtpZihheChjW2I+PjJdfDAsMjIsMzc1NTAsMCwwKXwwKXtpPWU7cmV0dXJufWNbZD4+Ml09ZHgoY1tiPj4yXXwwKXwwO2lmKCEoY1tkPj4yXXwwKSl7aT1lO3JldHVybn1TeihjW2Q+PjJdfDAsMSwxKXwwO2k9ZTtyZXR1cm59ZnVuY3Rpb24geHYoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wO2U9aTtpPWkrMTZ8MDtiPWUrNHwwO2Q9ZTtjW2I+PjJdPWE7aWYoYXgoY1tiPj4yXXwwLDIyLDM3NTQxLDAsMCl8MCl7aT1lO3JldHVybn1jW2Q+PjJdPWR4KGNbYj4+Ml18MCl8MDtpZighKGNbZD4+Ml18MCkpe2k9ZTtyZXR1cm59aXgoY1tkPj4yXXwwLDEsMSwxKXwwO2k9ZTtyZXR1cm59ZnVuY3Rpb24geXYoYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MDtqPWk7aT1pKzMyfDA7ZT1qKzE2fDA7Zj1qKzEyfDA7az1qKzh8MDtoPWorNHwwO2c9ajtjW2U+PjJdPWE7Y1tmPj4yXT1iO2Nbaz4+Ml09ZDtjW2g+PjJdPVR3KGNbY1tlPj4yXT4+Ml18MCxjW2s+PjJdfDApfDA7aWYoIShjW2g+PjJdfDApKXtpPWo7cmV0dXJufWNbZz4+Ml09ZHgoY1tlPj4yXXwwKXwwO2lmKChjW2c+PjJdfDApIT0wPyhheChjW2U+PjJdfDAsMzIsY1s1NTEyKyhjW2Y+PjJdPDwyKT4+Ml18MCxjW2g+PjJdfDAsMCl8MCk9PTA6MCl7bXgoY1tnPj4yXXwwLDAsY1tmPj4yXXwwLDAsMCxjW2g+PjJdfDAsLTEpfDA7aT1qO3JldHVybn1UZihjW2NbZT4+Ml0+PjJdfDAsY1toPj4yXXwwKTtpPWo7cmV0dXJufWZ1bmN0aW9uIHp2KGUsZixnLGgsaixrLGwpe2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO2s9a3wwO2w9bHwwO3ZhciBtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MCxFPTAsRj0wLEc9MCxIPTAsST0wLEo9MDtKPWk7aT1pKzExMnwwO3Q9SisxNnwwO0c9Sis4fDA7cz1KO3c9Sis5NnwwO209Sis5MnwwO249Sis4OHwwO289Sis4NHwwO3g9Sis4MHwwO3k9Sis3NnwwO3o9Sis3MnwwO3I9Sis2OHwwO0g9Sis2NHwwO0E9Sis2MHwwO0Y9Sis1NnwwO0k9Sis1MnwwO0I9Sis0OHwwO3U9Sis0NHwwO3Y9Sis0MHwwO3A9SiszNnwwO3E9SiszMnwwO0M9SisyOHwwO0Q9SisyNHwwO0U9SisyMHwwO2Nbdz4+Ml09ZTtjW20+PjJdPWY7Y1tuPj4yXT1nO2Nbbz4+Ml09aDtjW3g+PjJdPWo7Y1t5Pj4yXT1rO2Nbej4+Ml09bDtjW0g+PjJdPTA7Y1tBPj4yXT1jW2Nbdz4+Ml0+PjJdO2lmKChkWyhjW0E+PjJdfDApKzE0OCs1Pj4wXXwwKSE9MD8oY1soY1tBPj4yXXwwKSsxNDg+PjJdfDApPT0xOjApe2NbST4+Ml09ZFsoY1tBPj4yXXwwKSsxNDgrND4+MF07Y1tIPj4yXT1xaChjW0E+PjJdfDAsKGNbST4+Ml18MCk9PTE/MTk5MDU6MTk5MjQpfDA7Y1tCPj4yXT1jW20+PjJdfWVsc2V7Y1tJPj4yXT1PeihjW3c+PjJdfDAsY1ttPj4yXXwwLGNbbj4+Ml18MCxCKXwwO2lmKChjW0k+PjJdfDApPDApe2k9SjtyZXR1cm59aWYoKGNbbz4+Ml18MCkhPTA/KChjW0k+PjJdfDApIT0xPyhjWyhjW24+PjJdfDApKzQ+PjJdfDApPj4+MD4wOjApOjApe0VoKGNbdz4+Ml18MCwzNzQxNyxzKTtpPUo7cmV0dXJufWlmKGNbbz4+Ml18MCljW0k+PjJdPTE7Y1tIPj4yXT1UdyhjW0E+PjJdfDAsY1tCPj4yXXwwKXwwfXM9KGNbdz4+Ml18MCkrMzg0fDA7ZT1jW0I+PjJdfDA7Y1tzPj4yXT1jW2U+PjJdO2Nbcys0Pj4yXT1jW2UrND4+Ml07aWYoIShjW0g+PjJdfDApKXtpPUo7cmV0dXJufWE6ZG8gaWYoIShTeChjW3c+PjJdfDAsY1tIPj4yXXwwKXwwKSl7aWYoKGRbKGNbQT4+Ml18MCkrMTQ4KzQ+PjBdfDApPT0xKWNbbz4+Ml09MTtjW3U+PjJdPWNbKGNbKGNbQT4+Ml18MCkrMTY+PjJdfDApKyhjW0k+PjJdPDw0KT4+Ml07aWYoIShheChjW3c+PjJdfDAsMTgsKGNbbz4+Ml18MCk9PTE/MTk5MDU6MTk5MjQsMCxjW3U+PjJdfDApfDApKXtpZigoY1t5Pj4yXXwwKT09MD8oYXgoY1t3Pj4yXXwwLGRbMzc0NTgrKChjW28+PjJdfDApKyhjW3g+PjJdPDwxKSk+PjBdfDAsY1tIPj4yXXwwLDAsY1t1Pj4yXXwwKXwwKSE9MDowKWJyZWFrO2RvIGlmKCEoYVsoY1t3Pj4yXXwwKSs0MTA+PjBdfDApKXtjW3Y+PjJdPWNbKGNbKGNbQT4+Ml18MCkrMTY+PjJdfDApKyhjW0k+PjJdPDw0KT4+Ml07aWYoS3ooY1t3Pj4yXXwwKXwwKWJyZWFrIGE7Y1tyPj4yXT10aShjW0E+PjJdfDAsY1tIPj4yXXwwLGNbdj4+Ml18MCl8MDtpZighKGNbcj4+Ml18MCkpe2lmKCEoS2ooY1tBPj4yXXwwLGNbSD4+Ml18MCxjW3Y+PjJdfDApfDApKWJyZWFrO0k9Y1t3Pj4yXXwwO2NbdD4+Ml09Y1tIPj4yXTtFaChJLDM3NDg2LHQpO2JyZWFrIGF9bT1jW3c+PjJdfDA7aWYoY1t6Pj4yXXwwKXtzeChtLGNbST4+Ml18MCk7YnJlYWsgYX1lbHNle2NbRz4+Ml09Y1tCPj4yXTtFaChtLDM3NDYyLEcpO2JyZWFrIGF9fXdoaWxlKDApO2Nbcj4+Ml09c2goY1tBPj4yXXwwLDcyLDApfDA7aWYoIShjW3I+PjJdfDApKXtjWyhjW3c+PjJdfDApKzEyPj4yXT03O0k9KGNbdz4+Ml18MCkrMzZ8MDtjW0k+PjJdPShjW0k+PjJdfDApKzE7YnJlYWt9Y1tjW3I+PjJdPj4yXT1jW0g+PjJdO2JbKGNbcj4+Ml18MCkrMzI+PjFdPS0xO2NbKGNbcj4+Ml18MCkrNjQ+PjJdPWNbKGNbKGNbQT4+Ml18MCkrMTY+PjJdfDApKyhjW0k+PjJdPDw0KSsxMj4+Ml07YlsoY1tyPj4yXXwwKSszNj4+MV09MTtiWyhjW3I+PjJdfDApKzM4Pj4xXT0yMDA7Y1soY1t3Pj4yXXwwKSs0NDA+PjJdPWNbcj4+Ml07aWYoKGFbKGNbdz4+Ml18MCkrMTg+PjBdfDApPT0wPyhoUihjW0g+PjJdfDAsMjg4MTcpfDApPT0wOjApY1soY1soY1tyPj4yXXwwKSs2ND4+Ml18MCkrNzI+PjJdPWNbcj4+Ml07aWYoYVsoY1tBPj4yXXwwKSsxNDgrNT4+MF18MCl7aT1KO3JldHVybn1IPWR4KGNbdz4+Ml18MCl8MDtjW0Y+PjJdPUg7aWYoIUgpe2k9SjtyZXR1cm59cngoY1t3Pj4yXXwwLDEsY1tJPj4yXXwwKTtpZihjW3k+PjJdfDApZngoY1tGPj4yXXwwLDE1Mil8MDtIPShjW3c+PjJdfDApKzQ0fDA7bT0oY1tIPj4yXXwwKSsxfDA7Y1tIPj4yXT1tO2NbKGNbdz4+Ml18MCkrMTAwPj4yXT1tO2NbQz4+Ml09bTttPShjW3c+PjJdfDApKzQ0fDA7SD0oY1ttPj4yXXwwKSsxfDA7Y1ttPj4yXT1IO2NbKGNbdz4+Ml18MCkrMTA0Pj4yXT1IO2NbRD4+Ml09SDtIPShjW3c+PjJdfDApKzQ0fDA7bT0oY1tIPj4yXXwwKSsxfDA7Y1tIPj4yXT1tO2NbRT4+Ml09bTtqeChjW0Y+PjJdfDAsMTAxLGNbST4+Ml18MCxjW0U+PjJdfDAsMil8MDtMaChjW0Y+PjJdfDAsY1tJPj4yXXwwKTtjW3A+PjJdPVN6KGNbRj4+Ml18MCwyMSxjW0U+PjJdfDApfDA7Y1txPj4yXT0oY1soY1tBPj4yXXwwKSsyND4+Ml0mMzI3Njh8MCkhPTA/MTo0O2p4KGNbRj4+Ml18MCwxMDIsY1tJPj4yXXwwLDIsY1txPj4yXXwwKXwwO2p4KGNbRj4+Ml18MCwxMDIsY1tJPj4yXXwwLDUsZFsoY1tBPj4yXXwwKSs2Nj4+MF18MCl8MDtaeihjW0Y+PjJdfDAsY1twPj4yXXwwKTttPWNbRj4+Ml18MDtpZigoY1t4Pj4yXXwwKSE9MHwoY1t5Pj4yXXwwKSE9MClpeChtLDc2LDAsY1tEPj4yXXwwKXwwO2Vsc2V7SD1peChtLDEzNSxjW0k+PjJdfDAsY1tEPj4yXXwwKXwwO2NbKGNbdz4+Ml18MCkrMTMyPj4yXT1IfU9IKGNbdz4+Ml18MCxjW0k+PjJdfDApO2l4KGNbRj4+Ml18MCwxMTQsMCxjW0M+PjJdfDApfDA7bXgoY1tGPj4yXXwwLDgxLDYsY1tFPj4yXXwwLDAsMzc1MjEsLTIpfDA7angoY1tGPj4yXXwwLDExNSwwLGNbRT4+Ml18MCxjW0M+PjJdfDApfDA7SmgoY1tGPj4yXXwwLDgpO2Z4KGNbRj4+Ml18MCwxMTEpfDA7aT1KO3JldHVybn19d2hpbGUoMCk7VGYoY1tBPj4yXXwwLGNbSD4+Ml18MCk7aT1KO3JldHVybn1mdW5jdGlvbiBBdihiKXtiPWJ8MDt2YXIgZD0wLGU9MDtkPWk7aT1pKzE2fDA7ZT1kO2NbZT4+Ml09YjtiPShjW2U+PjJdfDApKzI0fDA7YVtiPj4wXT0oYVtiPj4wXXwwKSsxPDwyND4+MjQ7Yj0oY1tjW2U+PjJdPj4yXXwwKSsyNTZ8MDtjW2I+PjJdPShjW2I+PjJdfDApKzE7aT1kO3JldHVybn1mdW5jdGlvbiBCdihlLGYsZyxoLGope2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO3ZhciBrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wLEU9MCxGPTAsRz0wLEg9MCxJPTAsSj0wLEs9MCxMPTAsTT0wLE49MCxPPTAsUD0wLFE9MCxSPTA7Uj1pO2k9aSsyMDh8MDtLPVIrNzJ8MDtJPVIrNjR8MDtNPVIrMzJ8MDtMPVIrMTZ8MDtKPVIrOHwwO0g9UjtrPVIrMjAwfDA7bD1SKzE5NnwwO209UisxOTJ8MDtuPVIrMjA0fDA7bz1SKzE4OHwwO3c9UisxODR8MDtyPVIrMTgwfDA7dD1SKzE3NnwwO3o9UisxNzJ8MDt1PVIrMTY4fDA7Rz1SKzE2NHwwO1A9UisxNjB8MDtRPVIrMTU2fDA7Tz1SKzE1MnwwO3M9UisxMjh8MDtGPVIrMTIwfDA7cT1SKzExNnwwO0Q9UisxMTJ8MDtFPVIrMTA4fDA7cD1SKzEwNHwwO0M9UisxMDB8MDt5PVIrOTZ8MDt4PVIrOTJ8MDtBPVIrODh8MDtCPVIrODR8MDtOPVIrODB8MDt2PVIrNzZ8MDtjW2s+PjJdPWU7Y1tsPj4yXT1mO2NbbT4+Ml09ZzthW24+PjBdPWg7Y1tvPj4yXT1qO2Nbcj4+Ml09Y1tjW2s+PjJdPj4yXTtpZigoY1ttPj4yXXwwKT09MCYoY1tvPj4yXXwwKT09MCl7aT1SO3JldHVybn1jW3c+PjJdPWNbKGNbaz4+Ml18MCkrNDQwPj4yXTtpZighKGNbdz4+Ml18MCkpe2k9UjtyZXR1cm59aWYoKGFbKGNbcj4+Ml18MCkrMTQ4KzU+PjBdfDApIT0wPyhjWyhjW3c+PjJdfDApKzI4Pj4yXT1jWyhjW3I+PjJdfDApKzE0OD4+Ml0sKGNbKGNbdz4+Ml18MCkrMjg+PjJdfDApPT0xKTowKXtoPShjW3c+PjJdfDApKzQyfDA7YVtoPj4wXT1kW2g+PjBdfDF9ZG8gaWYoZFtuPj4wXSYzMil7aWYoZFsoY1t3Pj4yXXwwKSs0Mj4+MF0mOCl7RWgoY1trPj4yXXwwLDM3MDk4LEgpO2k9UjtyZXR1cm59aWYoIShkWyhjW3c+PjJdfDApKzQyPj4wXSY0KSl7SD1jW2s+PjJdfDA7Y1tKPj4yXT1jW2Nbdz4+Ml0+PjJdO0VoKEgsMzcxNDgsSik7YnJlYWt9ZWxzZXtKPShjW3c+PjJdfDApKzQyfDA7YVtKPj4wXT1kW0o+PjBdfDk2O0lIKGNbaz4+Ml18MCxjW3c+PjJdfDApO2JyZWFrfX13aGlsZSgwKTtjW3Q+PjJdPUZoKGNbcj4+Ml18MCxjWyhjW3c+PjJdfDApKzY0Pj4yXXwwKXwwO2lmKGNbKGNbdz4+Ml18MCkrMjQ+PjJdfDApQkgoY1trPj4yXXwwLGNbdz4+Ml18MCw0LDAsY1soY1t3Pj4yXXwwKSsyND4+Ml18MCk7SkgoY1t3Pj4yXXwwKTtjW3o+PjJdPWNbKGNbdz4+Ml18MCkrOD4+Ml07d2hpbGUoMSl7aWYoIShjW3o+PjJdfDApKWJyZWFrO0VIKGNbej4+Ml18MCk7Y1t6Pj4yXT1jWyhjW3o+PjJdfDApKzIwPj4yXX1pZighKGFbKGNbcj4+Ml18MCkrMTQ4KzU+PjBdfDApKXtjW0c+PjJdPWR4KGNbaz4+Ml18MCl8MDtpZighKGNbRz4+Ml18MCkpe2k9UjtyZXR1cm59U3ooY1tHPj4yXXwwLDExMSwwKXwwO2lmKCEoY1soY1t3Pj4yXXwwKSsxMj4+Ml18MCkpe2NbUD4+Ml09MzI5OTM7Y1tRPj4yXT0zNzE4MH1lbHNle2NbUD4+Ml09MzYwNTg7Y1tRPj4yXT0zNzE4Nn1kbyBpZihjW28+PjJdfDApe0g9KGNbaz4+Ml18MCkrNDR8MDtKPShjW0g+PjJdfDApKzF8MDtjW0g+PjJdPUo7Y1tGPj4yXT1KO0o9KGNbaz4+Ml18MCkrNDR8MDtIPShjW0o+PjJdfDApKzF8MDtjW0o+PjJdPUg7Y1tEPj4yXT1IO0g9KGNbaz4+Ml18MCkrNDR8MDtKPShjW0g+PjJdfDApKzF8MDtjW0g+PjJdPUo7Y1tFPj4yXT1KO1Z4KGNbaz4+Ml18MCk7angoY1tHPj4yXXwwLDEwNSwxLGNbKGNbaz4+Ml18MCkrMTA0Pj4yXXwwLGNbdD4+Ml18MCl8MDtKaChjW0c+PjJdfDAsMTYpO2NbKGNbaz4+Ml18MCkrNDA+PjJdPTI7Y1txPj4yXT0od3goY1tHPj4yXXwwKXwwKSsxO2p4KGNbRz4+Ml18MCwxNSxjW0Y+PjJdfDAsMCxjW3E+PjJdfDApfDA7dkIocywxMyxjW0Y+PjJdfDApO1B2KGNbaz4+Ml18MCxjW28+PjJdfDAscyl8MDtZQyhjW0c+PjJdfDAsY1tGPj4yXXwwKTtaeihjW0c+PjJdfDAsKGNbcT4+Ml18MCktMXwwKTtpZihjWyhjW2s+PjJdfDApKzM2Pj4yXXwwKXtpPVI7cmV0dXJufWNbQz4+Ml09YXkoY1trPj4yXXwwLGNbbz4+Ml18MCl8MDtpZighKGNbQz4+Ml18MCkpe2k9UjtyZXR1cm59ZWxzZXtiWyhjW3c+PjJdfDApKzM0Pj4xXT1iWyhjW0M+PjJdfDApKzM0Pj4xXXwwO2NbKGNbdz4+Ml18MCkrND4+Ml09Y1soY1tDPj4yXXwwKSs0Pj4yXTtiWyhjW0M+PjJdfDApKzM0Pj4xXT0wO2NbKGNbQz4+Ml18MCkrND4+Ml09MDtSZihjW3I+PjJdfDAsY1tDPj4yXXwwKTtjW3A+PjJdPVN6KGNbRz4+Ml18MCwxNixjW3MrOD4+Ml18MCl8MDtqeChjW0c+PjJdfDAsOTksY1tzKzEyPj4yXXwwLGNbcysxNj4+Ml18MCxjW0Q+PjJdfDApfDA7JEMoY1tHPj4yXXwwLGNbdz4+Ml18MCwwKTtpeChjW0c+PjJdfDAsMTE0LDEsY1tFPj4yXXwwKXwwO2p4KGNbRz4+Ml18MCwxMTUsMSxjW0Q+PjJdfDAsY1tFPj4yXXwwKXwwO1l6KGNbRz4+Ml18MCxjW3A+PjJdfDApfDA7WnooY1tHPj4yXXwwLGNbcD4+Ml18MCk7U3ooY1tHPj4yXXwwLDExMSwxKXwwO2JyZWFrfX13aGlsZSgwKTtpZihjW28+PjJdfDApY1tPPj4yXT1LSChjW3I+PjJdfDAsY1t3Pj4yXXwwKXwwO2Vsc2V7Y1t5Pj4yXT0oZFtuPj4wXXwwKSE9MD8oY1trPj4yXXwwKSszOTJ8MDpjW20+PjJdfDA7Y1t1Pj4yXT0oY1tjW3k+PjJdPj4yXXwwKS0oY1soY1trPj4yXXwwKSszODQ+PjJdfDApO2lmKChhW2NbY1t5Pj4yXT4+Ml0+PjBdfDApIT01OSljW3U+PjJdPShjW3U+PjJdfDApKyhjWyhjW3k+PjJdfDApKzQ+PjJdfDApO0o9Y1tyPj4yXXwwO2g9Y1t1Pj4yXXwwO0g9Y1soY1trPj4yXXwwKSszODQ+PjJdfDA7Y1tMPj4yXT1jW1E+PjJdO2NbTCs0Pj4yXT1oO2NbTCs4Pj4yXT1IO2NbTz4+Ml09R2goSiwzNzE5MSxMKXwwfVE9Y1trPj4yXXwwO0U9KGNbdD4+Ml18MCk9PTE/MTk5MDU6MTk5MjQ7Rj1jW1A+PjJdfDA7aD1jW2Nbdz4+Ml0+PjJdfDA7SD1jW2Nbdz4+Ml0+PjJdfDA7Sj1jWyhjW2s+PjJdfDApKzEwND4+Ml18MDtMPWNbTz4+Ml18MDtQPWNbKGNbaz4+Ml18MCkrMTAwPj4yXXwwO2NbTT4+Ml09Y1soY1soY1tyPj4yXXwwKSsxNj4+Ml18MCkrKGNbdD4+Ml08PDQpPj4yXTtjW00rND4+Ml09RTtjW00rOD4+Ml09RjtjW00rMTI+PjJdPWg7Y1tNKzE2Pj4yXT1IO2NbTSsyMD4+Ml09SjtjW00rMjQ+PjJdPUw7Y1tNKzI4Pj4yXT1QO2N4KFEsMzcyMDYsTSk7VGYoY1tyPj4yXXwwLGNbTz4+Ml18MCk7ZXgoY1trPj4yXXwwLGNbdD4+Ml18MCk7aWYoKGRbKGNbdz4+Ml18MCkrNDI+PjBdJjh8MCkhPTA/KGNbeD4+Ml09KGNbKGNbcj4+Ml18MCkrMTY+PjJdfDApKyhjW3Q+PjJdPDw0KSwoY1soY1soY1t4Pj4yXXwwKSsxMj4+Ml18MCkrNzI+PjJdfDApPT0wKTowKXtRPWNbaz4+Ml18MDtjW0k+PjJdPWNbY1t4Pj4yXT4+Ml07Y3goUSwzNzI5MyxJKX1PPWNbRz4+Ml18MDtQPWNbdD4+Ml18MDtRPWNbcj4+Ml18MDtjW0s+PjJdPWNbY1t3Pj4yXT4+Ml07Z3goTyxQLEdoKFEsMzczMzUsSyl8MCl9aWYoIShhWyhjW3I+PjJdfDApKzE0OCs1Pj4wXXwwKSl7aT1SO3JldHVybn1jW0I+PjJdPWNbKGNbdz4+Ml18MCkrNjQ+PjJdO2NbQT4+Ml09VWooKGNbQj4+Ml18MCkrOHwwLGNbY1t3Pj4yXT4+Ml18MCxjW3c+PjJdfDApfDA7aWYoY1tBPj4yXXwwKXttaChjW3I+PjJdfDApO2k9UjtyZXR1cm59Y1soY1trPj4yXXwwKSs0NDA+PjJdPTA7UT0oY1tyPj4yXXwwKSsyNHwwO2NbUT4+Ml09Y1tRPj4yXXwyO2lmKGNbKGNbdz4+Ml18MCkrMTI+PjJdfDApe2k9UjtyZXR1cm59Y1tOPj4yXT1jWyhjW2s+PjJdfDApKzM4ND4+Ml07aWYoIShjW2NbbD4+Ml0+PjJdfDApKWNbbD4+Ml09Y1ttPj4yXTtjW3Y+PjJdPShjW2NbbD4+Ml0+PjJdfDApLShjW04+PjJdfDApO1E9MTMrKFd4KGNbTj4+Ml18MCxjW3Y+PjJdfDApfDApfDA7Y1soY1t3Pj4yXXwwKSs0ND4+Ml09UTtpPVI7cmV0dXJufWZ1bmN0aW9uIEN2KGUsZixnKXtlPWV8MDtmPWZ8MDtnPWd8MDt2YXIgaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MDt2PWk7aT1pKzY0fDA7cj12Kzh8MDtxPXY7aD12KzQ4fDA7aj12KzQ0fDA7az12KzQwfDA7bz12KzM2fDA7bj12KzMyfDA7cz12KzI4fDA7dD12KzI0fDA7cD12KzIwfDA7bT12KzE2fDA7bD12KzEyfDA7Y1toPj4yXT1lO2Nbaj4+Ml09ZjtjW2s+PjJdPWc7Y1ttPj4yXT1jW2NbaD4+Ml0+PjJdO2c9Y1soY1toPj4yXXwwKSs0NDA+PjJdfDA7Y1tvPj4yXT1nO2lmKCFnKXtpPXY7cmV0dXJufWlmKCgoYlsoY1tvPj4yXXwwKSszND4+MV18MCkrMXwwKT4oY1soY1ttPj4yXXwwKSs5Nis4Pj4yXXwwKSl7dT1jW2g+PjJdfDA7Y1txPj4yXT1jW2Nbbz4+Ml0+PjJdO0VoKHUsMzcwNDkscSk7aT12O3JldHVybn1jW3M+PjJdPUNoKGNbbT4+Ml18MCwoY1soY1tqPj4yXXwwKSs0Pj4yXXwwKSsoY1soY1trPj4yXXwwKSs0Pj4yXXwwKSsyfDAsMCl8MDtpZighKGNbcz4+Ml18MCkpe2k9djtyZXR1cm59VFIoY1tzPj4yXXwwLGNbY1tqPj4yXT4+Ml18MCxjWyhjW2o+PjJdfDApKzQ+PjJdfDApfDA7YVsoY1tzPj4yXXwwKSsoY1soY1tqPj4yXXwwKSs0Pj4yXXwwKT4+MF09MDtadyhjW3M+PjJdfDApO2Nbbj4+Ml09MDt3aGlsZSgxKXtpZigoY1tuPj4yXXwwKT49KGJbKGNbbz4+Ml18MCkrMzQ+PjFdfDApKWJyZWFrO2lmKCEoVGQoY1tzPj4yXXwwLGNbKGNbKGNbbz4+Ml18MCkrND4+Ml18MCkrKGNbbj4+Ml08PDQpPj4yXXwwKXwwKSl7dT04O2JyZWFrfWNbbj4+Ml09KGNbbj4+Ml18MCkrMX1pZigodXwwKT09OCl7dT1jW2g+PjJdfDA7Y1tyPj4yXT1jW3M+PjJdO0VoKHUsMzcwNzIscik7VGYoY1ttPj4yXXwwLGNbcz4+Ml18MCk7aT12O3JldHVybn1kbyBpZighKGJbKGNbbz4+Ml18MCkrMzQ+PjFdJjcpKXtjW2w+PjJdPVV3KGNbbT4+Ml18MCxjWyhjW28+PjJdfDApKzQ+PjJdfDAsKGJbKGNbbz4+Ml18MCkrMzQ+PjFdfDApKzg8PDQsMCl8MDtpZihjW2w+PjJdfDApe2NbKGNbbz4+Ml18MCkrND4+Ml09Y1tsPj4yXTticmVha31UZihjW20+PjJdfDAsY1tzPj4yXXwwKTtpPXY7cmV0dXJufXdoaWxlKDApO2NbcD4+Ml09KGNbKGNbbz4+Ml18MCkrND4+Ml18MCkrKGJbKGNbbz4+Ml18MCkrMzQ+PjFdPDw0KTt1PWNbcD4+Ml18MDtjW3U+PjJdPTA7Y1t1KzQ+PjJdPTA7Y1t1Kzg+PjJdPTA7Y1t1KzEyPj4yXT0wO2NbY1twPj4yXT4+Ml09Y1tzPj4yXTtpZighKGNbKGNbaz4+Ml18MCkrND4+Ml18MCkpe2FbKGNbcD4+Ml18MCkrMTM+PjBdPTY1O2FbKGNbcD4+Ml18MCkrMTQ+PjBdPTF9ZWxzZXt1PWNbcz4+Ml18MDtjW3Q+PjJdPXUrKEpmKGNbcz4+Ml18MCl8MCkrMTtUUihjW3Q+PjJdfDAsY1tjW2s+PjJdPj4yXXwwLGNbKGNbaz4+Ml18MCkrND4+Ml18MCl8MDthWyhjW3Q+PjJdfDApKyhjWyhjW2s+PjJdfDApKzQ+PjJdfDApPj4wXT0wO1p3KGNbdD4+Ml18MCk7dT1EeChjW3Q+PjJdfDAsKGNbcD4+Ml18MCkrMTR8MCl8MDthWyhjW3A+PjJdfDApKzEzPj4wXT11O3U9KGNbcD4+Ml18MCkrMTV8MDthW3U+PjBdPWRbdT4+MF18NH11PShjW28+PjJdfDApKzM0fDA7Ylt1Pj4xXT0oYlt1Pj4xXXwwKSsxPDwxNj4+MTY7Y1soY1toPj4yXXwwKSs4NCs0Pj4yXT0wO2k9djtyZXR1cm59ZnVuY3Rpb24gRHYoZCxlKXtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MDtuPWk7aT1pKzgwfDA7aD1uO2Y9bis3MnwwO2o9bis2OHwwO2c9bis2NHwwO2w9bis2MHwwO2s9bis1NnwwO209bis4fDA7Y1tmPj4yXT1kO2Nbaj4+Ml09ZTtjW2s+PjJdPWNbY1tmPj4yXT4+Ml07Y1tnPj4yXT1jWyhjW2Y+PjJdfDApKzQ0MD4+Ml07aWYoIShjW2c+PjJdfDApKXtsPWNbaz4+Ml18MDttPWNbaj4+Ml18MDttPWNbbT4+Ml18MDtpdihsLG0pO2k9bjtyZXR1cm59Y1tsPj4yXT0oY1soY1tnPj4yXXwwKSs0Pj4yXXwwKSsoKGJbKGNbZz4+Ml18MCkrMzQ+PjFdfDApLTE8PDQpO2lmKEhIKGNbY1tqPj4yXT4+Ml18MCxhWyhjW2s+PjJdfDApKzE0OCs1Pj4wXXwwKXwwKXtpdihjW2s+PjJdfDAsY1soY1tsPj4yXXwwKSs0Pj4yXXwwKTtmPW07Zz1mKzQ4fDA7ZG97Y1tmPj4yXT0wO2Y9Zis0fDB9d2hpbGUoKGZ8MCk8KGd8MCkpO2FbbT4+MF09LTk1O2g9KGNbKGNbaj4+Ml18MCkrOD4+Ml18MCktKGNbKGNbaj4+Ml18MCkrND4+Ml18MCl8MDtjW20rOD4+Ml09WXcoY1trPj4yXXwwLGNbKGNbaj4+Ml18MCkrND4+Ml18MCxoLCgoaHwwKTwwKTw8MzE+PjMxKXwwO2NbbSsxMj4+Ml09Y1tjW2o+PjJdPj4yXTtjW20rND4+Ml09NDA5NjtoPUl5KGNbaz4+Ml18MCxtLDEpfDA7Y1soY1tsPj4yXXwwKSs0Pj4yXT1oO1RmKGNbaz4+Ml18MCxjW20rOD4+Ml18MCk7bD1jW2s+PjJdfDA7bT1jW2o+PjJdfDA7bT1jW20+PjJdfDA7aXYobCxtKTtpPW47cmV0dXJufWVsc2V7bT1jW2Y+PjJdfDA7Y1toPj4yXT1jW2NbbD4+Ml0+PjJdO0VoKG0sMzcwMDQsaCk7bD1jW2s+PjJdfDA7bT1jW2o+PjJdfDA7bT1jW20+PjJdfDA7aXYobCxtKTtpPW47cmV0dXJufX1mdW5jdGlvbiBFdihhLGIsZCxlLGYpe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTA7bj1pO2k9aSszMnwwO2c9bisyMHwwO2g9bisxNnwwO2o9bisxMnwwO2s9bis4fDA7bD1uKzR8MDttPW47Y1tnPj4yXT1hO2NbaD4+Ml09YjtjW2o+PjJdPWQ7Y1trPj4yXT1lO2NbbD4+Ml09ZjtpZigoY1toPj4yXXwwKT09Mjg/KGNbKGNbZz4+Ml18MCkrMzY+PjJdfDApPT0wOjApY1ttPj4yXT13eihjW2NbZz4+Ml0+PjJdfDAsY1tqPj4yXXwwLGNbaz4+Ml18MCl8MDtlbHNle2NbbT4+Ml09ancoY1tjW2c+PjJdPj4yXXwwLGNbaD4+Ml0mMjU1LGNbbD4+Ml18MCwxKXwwO3l6KGNbY1tnPj4yXT4+Ml18MCxjW20+PjJdfDAsY1tqPj4yXXwwLGNbaz4+Ml18MCl9aWYoIShjW20+PjJdfDApKXtmPWNbbT4+Ml18MDtpPW47cmV0dXJuIGZ8MH1aeShjW2c+PjJdfDAsY1soY1ttPj4yXXwwKSsyND4+Ml18MCl8MDtmPWNbbT4+Ml18MDtpPW47cmV0dXJuIGZ8MH1mdW5jdGlvbiBGdihlLGYsZyxoKXtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDt2YXIgaj0wLGs9MCxsPTAsbT0wLG49MDttPWk7aT1pKzE2fDA7aj1tKzEyfDA7bj1tKzh8MDtrPW0rNHwwO2w9bTtjW2o+PjJdPWU7Y1tuPj4yXT1mO2Nbaz4+Ml09ZztjW2w+PjJdPVZ3KGNbY1tuPj4yXT4+Ml18MCw0OCsoY1toKzQ+PjJdfDApKzF8MCwwKXwwO2lmKCEoY1tsPj4yXXwwKSl7bj1jW2w+PjJdfDA7bD1jW2o+PjJdfDA7Y1tsPj4yXT1uO2w9Y1toPj4yXXwwO249Y1tqPj4yXXwwO249bis0fDA7Y1tuPj4yXT1sO249aCs0fDA7bj1jW24+PjJdfDA7aD1jW2g+PjJdfDA7aD1oK258MDtuPWNbaj4+Ml18MDtuPW4rOHwwO2Nbbj4+Ml09aDtpPW07cmV0dXJufWc9Y1tsPj4yXXwwO2U9Zys0OHwwO2Rve2NbZz4+Ml09MDtnPWcrNHwwfXdoaWxlKChnfDApPChlfDApKTthW2NbbD4+Ml0+PjBdPWNbaz4+Ml07Y1soY1tsPj4yXXwwKSs0Pj4yXT04Mzg4NjA4O2JbKGNbbD4+Ml18MCkrMzQ+PjFdPS0xO2NbKGNbbD4+Ml18MCkrOD4+Ml09KGNbbD4+Ml18MCkrNDg7VFIoY1soY1tsPj4yXXwwKSs4Pj4yXXwwLGNbaD4+Ml18MCxjW2grND4+Ml18MCl8MDthWyhjWyhjW2w+PjJdfDApKzg+PjJdfDApKyhjW2grND4+Ml18MCk+PjBdPTA7aWYoZFsxODQwMysoZFtjWyhjW2w+PjJdfDApKzg+PjJdPj4wXXwwKT4+MF0mMTI4KXtpZigoYVtjWyhjW2w+PjJdfDApKzg+PjJdPj4wXXwwKT09MzQpe249KGNbbD4+Ml18MCkrNHwwO2Nbbj4+Ml09Y1tuPj4yXXw2NH1adyhjWyhjW2w+PjJdfDApKzg+PjJdfDApfWNbKGNbbD4+Ml18MCkrMjQ+PjJdPTE7bj1jW2w+PjJdfDA7bD1jW2o+PjJdfDA7Y1tsPj4yXT1uO2w9Y1toPj4yXXwwO249Y1tqPj4yXXwwO249bis0fDA7Y1tuPj4yXT1sO249aCs0fDA7bj1jW24+PjJdfDA7aD1jW2g+PjJdfDA7aD1oK258MDtuPWNbaj4+Ml18MDtuPW4rOHwwO2Nbbj4+Ml09aDtpPW07cmV0dXJufWZ1bmN0aW9uIEd2KGQsZSl7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MDtoPWk7aT1pKzE2fDA7aj1oKzh8MDtmPWgrNHwwO2c9aDtjW2o+PjJdPWQ7Y1tmPj4yXT1lO2NbZz4+Ml09Y1soY1tqPj4yXXwwKSs0NDA+PjJdO2lmKCEoY1tnPj4yXXwwKSl7aT1oO3JldHVybn1pZigoYlsoY1tnPj4yXXwwKSszND4+MV18MCk8MSl7aT1oO3JldHVybn1hWyhjWyhjW2c+PjJdfDApKzQ+PjJdfDApKygoYlsoY1tnPj4yXXwwKSszND4+MV18MCktMTw8NCkrMTI+PjBdPWNbZj4+Ml07aT1oO3JldHVybn1mdW5jdGlvbiBIdihlLGYsZyxoLGope2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO3ZhciBrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MDt5PWk7aT1pKzY0fDA7eD15Kzh8MDtrPXk7cz15KzU2fDA7dD15KzUyfDA7dT15KzQ4fDA7dj15KzQ0fDA7dz15KzQwfDA7cT15KzM2fDA7cD15KzMyfDA7bT15KzI4fDA7bD15KzI0fDA7bj15KzIwfDA7bz15KzE2fDA7cj15KzEyfDA7Y1tzPj4yXT1lO2NbdD4+Ml09ZjtjW3U+PjJdPWc7Y1t2Pj4yXT1oO2Nbdz4+Ml09ajtjW3E+PjJdPWNbKGNbcz4+Ml18MCkrNDQwPj4yXTtjW3A+PjJdPTA7Y1ttPj4yXT0tMTtpZighKGNbcT4+Ml18MCkpe3c9Y1tzPj4yXXwwO3c9Y1t3Pj4yXXwwO3g9Y1t0Pj4yXXwwO2V2KHcseCk7aT15O3JldHVybn1pZihkWyhjW3E+PjJdfDApKzQyPj4wXSY0KXt3PWNbcz4+Ml18MDtjW2s+PjJdPWNbY1txPj4yXT4+Ml07RWgodywzNjkwNyxrKTt3PWNbcz4+Ml18MDt3PWNbdz4+Ml18MDt4PWNbdD4+Ml18MDtldih3LHgpO2k9eTtyZXR1cm59az0oY1txPj4yXXwwKSs0MnwwO2Fbaz4+MF09ZFtrPj4wXXw0O2E6ZG8gaWYoIShjW3Q+PjJdfDApKXtjW20+PjJdPShiWyhjW3E+PjJdfDApKzM0Pj4xXXwwKS0xO2NbcD4+Ml09KGNbKGNbcT4+Ml18MCkrND4+Ml18MCkrKGNbbT4+Ml08PDQpO3I9KGNbcD4+Ml18MCkrMTV8MDthW3I+PjBdPWRbcj4+MF18MTtjW24+PjJdPTF9ZWxzZXtjW24+PjJdPWNbY1t0Pj4yXT4+Ml07Y1tsPj4yXT0wO3doaWxlKDEpe2lmKChjW2w+PjJdfDApPj0oY1tuPj4yXXwwKSlicmVhayBhO2Nbbz4+Ml09a3koY1soY1soY1t0Pj4yXXwwKSs0Pj4yXXwwKSsoKGNbbD4+Ml18MCkqMjB8MCk+PjJdfDApfDA7Q0goY1tvPj4yXXwwKTtiOmRvIGlmKChkW2Nbbz4+Ml0+PjBdfDApPT01NSl7Y1tyPj4yXT1jWyhjW28+PjJdfDApKzg+PjJdO2NbbT4+Ml09MDt3aGlsZSgxKXtpZigoY1ttPj4yXXwwKT49KGJbKGNbcT4+Ml18MCkrMzQ+PjFdfDApKWJyZWFrIGI7az0oaWcoY1tyPj4yXXwwLGNbKGNbKGNbcT4+Ml18MCkrND4+Ml18MCkrKGNbbT4+Ml08PDQpPj4yXXwwKXwwKT09MDtoPWNbbT4+Ml18MDtpZihrKWJyZWFrO2NbbT4+Ml09aCsxfWNbcD4+Ml09KGNbKGNbcT4+Ml18MCkrND4+Ml18MCkrKGg8PDQpO2s9KGNbcD4+Ml18MCkrMTV8MDthW2s+PjBdPWRbaz4+MF18MX13aGlsZSgwKTtjW2w+PjJdPShjW2w+PjJdfDApKzF9fXdoaWxlKDApO2lmKChjW24+PjJdfDApPT0xJihjW3A+PjJdfDApIT0wPyhyPShpZyh2aShjW3A+PjJdfDAsMTg0MDIpfDAsMTg3NTkpfDApPT0wLHImKGNbdz4+Ml18MCkhPTEpOjApe2JbKGNbcT4+Ml18MCkrMzI+PjFdPWNbbT4+Ml07YVsoY1txPj4yXXwwKSs0Mz4+MF09Y1t1Pj4yXTt4PShjW3E+PjJdfDApKzQyfDA7YVt4Pj4wXT1kW3g+PjBdfGNbdj4+Ml08PDM7aWYoIShjW3Q+PjJdfDApKXt3PWNbcz4+Ml18MDt3PWNbdz4+Ml18MDt4PWNbdD4+Ml18MDtldih3LHgpO2k9eTtyZXR1cm59YVsoY1tzPj4yXXwwKSs0MDg+PjBdPWFbKGNbKGNbdD4+Ml18MCkrND4+Ml18MCkrMTI+PjBdfDA7dz1jW3M+PjJdfDA7dz1jW3c+PjJdfDA7eD1jW3Q+PjJdfDA7ZXYodyx4KTtpPXk7cmV0dXJufWg9Y1tzPj4yXXwwO2lmKGNbdj4+Ml18MCl7RWgoaCwzNjk0OCx4KTt3PWNbcz4+Ml18MDt3PWNbdz4+Ml18MDt4PWNbdD4+Ml18MDtldih3LHgpO2k9eTtyZXR1cm59ZWxzZXtJdihoLDAsMCwwLGNbdD4+Ml18MCxjW3U+PjJdfDAsMCwwLGNbdz4+Ml18MCwwLDIpO2NbdD4+Ml09MDt3PWNbcz4+Ml18MDt3PWNbdz4+Ml18MDt4PWNbdD4+Ml18MDtldih3LHgpO2k9eTtyZXR1cm59fWZ1bmN0aW9uIEl2KGYsZyxoLGosayxsLG0sbixvLHAscSl7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7bD1sfDA7bT1tfDA7bj1ufDA7bz1vfDA7cD1wfDA7cT1xfDA7dmFyIHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MCxFPTAsRj0wLEc9MCxIPTAsST0wLEo9MCxLPTAsTD0wLE09MCxOPTAsTz0wLFA9MCxRPTAsUj0wLFM9MCxUPTAsVT0wLFY9MCxXPTAsWD0wLFk9MCxaPTAsXz0wLCQ9MCxhYT0wLGJhPTAsY2E9MCxkYT0wLGVhPTAsZmE9MCxnYT0wLGhhPTAsaWE9MCxqYT0wLGthPTAsbGE9MCxtYT0wLG5hPTAsb2E9MCxwYT0wLHFhPTAscmE9MCxzYT0wLHRhPTAsdWE9MCx2YT0wLHdhPTAseGE9MCx5YT0wLHphPTA7emE9aTtpPWkrMzUyfDA7Z2E9emErMTEyfDA7ZmE9emErODh8MDtlYT16YSs3MnwwO2RhPXphKzY0fDA7Y2E9emErNTZ8MDtDPXphKzQ4fDA7YmE9emErNDB8MDtCPXphKzMyfDA7QT16YSsyNHwwO0U9emErMTZ8MDtEPXphKzh8MDt6PXphO0c9emErMzMyfDA7cj16YSszMjh8MDtzPXphKzMyNHwwO3RhPXphKzMyMHwwO3VhPXphKzMxNnwwO25hPXphKzMxMnwwO0k9emErMzA4fDA7dmE9emErMzA0fDA7dD16YSszMDB8MDtKPXphKzI5NnwwO0g9emErMzM2fDA7cWE9emErMjkyfDA7eGE9emErMjg4fDA7eWE9emErMjg0fDA7Uz16YSsyODB8MDtLPXphKzI3NnwwO009emErMjcyfDA7eT16YSsyNDh8MDskPXphKzI0MHwwO3dhPXphKzIzNnwwO1Y9emErMjMyfDA7b2E9emErMjI4fDA7WT16YSsyMjR8MDtYPXphKzIyMHwwO1E9emErMjE2fDA7Uj16YSsyMTJ8MDtsYT16YSsyMDh8MDtaPXphKzIwNHwwO3U9emErMjAwfDA7dz16YSsxOTZ8MDtGPXphKzE5MnwwO3g9emErMTg0fDA7dj16YSsxODB8MDtUPXphKzE3NnwwO189emErMTcyfDA7a2E9emErMTY4fDA7VT16YSsxNjR8MDtQPXphKzE2MHwwO2hhPXphKzE1NnwwO1c9emErMTUyfDA7Tj16YSsxNDh8MDtpYT16YSsxNDR8MDtqYT16YSsxNDB8MDtwYT16YSsxMzZ8MDthYT16YSsxMzJ8MDttYT16YSsxMjh8MDtMPXphKzEyNHwwO089emErMTIwfDA7cmE9emErMTE2fDA7Y1tHPj4yXT1mO2Nbcj4+Ml09ZztjW3M+PjJdPWg7Y1t0YT4+Ml09ajtjW3VhPj4yXT1rO2NbbmE+PjJdPWw7Y1tJPj4yXT1tO2NbdmE+PjJdPW47Y1t0Pj4yXT1vO2NbSj4+Ml09cDthW0g+PjBdPXE7Y1txYT4+Ml09MDtjW3hhPj4yXT0wO2NbeWE+PjJdPTA7Y1t3YT4+Ml09Y1tjW0c+PjJdPj4yXTtjW1k+PjJdPTA7Y1tRPj4yXT0wO2NbbGE+PjJdPTA7Y1taPj4yXT0wO2E6ZG8gaWYoKGRbKGNbd2E+PjJdfDApKzY5Pj4wXXwwKT09MD8oY1soY1tHPj4yXXwwKSszNj4+Ml18MCk8PTA6MCl7aWYoKGRbKGNbRz4+Ml18MCkrNDEwPj4wXXwwKSE9MD8oZFtIPj4wXXwwKSE9MjowKWJyZWFrO2lmKCEoS3ooY1tHPj4yXXwwKXwwKSl7cT1jW0c+PjJdfDA7aWYoY1t0YT4+Ml18MCl7Y1tvYT4+Ml09T3oocSxjW3I+PjJdfDAsY1tzPj4yXXwwLFkpfDA7aWYoKGNbb2E+PjJdfDApPDApYnJlYWs7aWYoKChhWyhjW3dhPj4yXXwwKSsxNDgrNT4+MF18MCk9PTA/KGNbcWE+PjJdPWJDKGNbRz4+Ml18MCxjW3RhPj4yXXwwKXwwLChjW3FhPj4yXXwwKSE9MD8oY1soY1tzPj4yXXwwKSs0Pj4yXXwwKT09MDowKTowKT8oY1soY1txYT4+Ml18MCkrNjQ+PjJdfDApPT0oY1soY1soY1t3YT4+Ml18MCkrMTY+PjJdfDApKzE2KzEyPj4yXXwwKTowKWNbb2E+PjJdPTE7Y0MoeSxjW0c+PjJdfDAsY1tvYT4+Ml18MCwzMzE1OCxjW1k+PjJdfDApO2RDKHksY1t0YT4+Ml18MCl8MDtjW3FhPj4yXT1weChjW0c+PjJdfDAsMCwoY1t0YT4+Ml18MCkrOHwwKXwwO2lmKCEoY1txYT4+Ml18MCkpYnJlYWs7aWYoKGNbb2E+PjJdfDApPT0xPyhjWyhjWyhjW3dhPj4yXXwwKSsxNj4+Ml18MCkrKGNbb2E+PjJdPDw0KSsxMj4+Ml18MCkhPShjWyhjW3FhPj4yXXwwKSs2ND4+Ml18MCk6MCl7c2E9Y1tHPj4yXXwwO2Nbej4+Ml09Y1tjW3FhPj4yXT4+Ml07RWgoc2EsMzY0NzMseik7YnJlYWt9aWYoZFsoY1txYT4+Ml18MCkrNDI+PjBdJjMyKWNbWj4+Ml09SmooY1txYT4+Ml18MCl8MH1lbHNle2NbcWE+PjJdPWNbcSs0NDA+PjJdO2lmKCEoY1txYT4+Ml18MCkpYnJlYWs7Y1tvYT4+Ml09RmgoY1t3YT4+Ml18MCxjWyhjW3FhPj4yXXwwKSs2ND4+Ml18MCl8MH1jW1Y+PjJdPShjWyhjW3dhPj4yXXwwKSsxNj4+Ml18MCkrKGNbb2E+PjJdPDw0KTtpZigoKHpkKGNbY1txYT4+Ml0+PjJdfDAsMjc4NDQsNyl8MCk9PTA/KGRbKGNbd2E+PjJdfDApKzE0OCs1Pj4wXXwwKT09MDowKT8oemQoKGNbY1txYT4+Ml0+PjJdfDApKzd8MCwzNjUyMyw5KXwwKSE9MDowKXtzYT1jW0c+PjJdfDA7Y1tEPj4yXT1jW2NbcWE+PjJdPj4yXTtFaChzYSwzNjUzMyxEKTticmVha31pZihjWyhjW3FhPj4yXXwwKSsxMj4+Ml18MCl7RWgoY1tHPj4yXXwwLDM2NTYxLEUpO2JyZWFrfWlmKGRbKGNbcWE+PjJdfDApKzQyPj4wXSYxNil7RWgoY1tHPj4yXXwwLDM2NTg2LEEpO2JyZWFrfWlmKGNbWT4+Ml18MCl7Y1t5YT4+Ml09VHcoY1t3YT4+Ml18MCxjW1k+PjJdfDApfDA7aWYoIShjW3lhPj4yXXwwKSlicmVhaztpZihTeChjW0c+PjJdfDAsY1t5YT4+Ml18MCl8MClicmVhaztpZigoYVsoY1t3YT4+Ml18MCkrMTQ4KzU+PjBdfDApPT0wPyh0aShjW3dhPj4yXXwwLGNbeWE+PjJdfDAsMCl8MCkhPTA6MCl7c2E9Y1tHPj4yXXwwO2NbQj4+Ml09Y1t5YT4+Ml07RWgoc2EsMzY2MjAsQik7YnJlYWt9aWYoS2ooY1t3YT4+Ml18MCxjW3lhPj4yXXwwLGNbY1tWPj4yXT4+Ml18MCl8MCl7cT1jW0c+PjJdfDA7aWYoY1tKPj4yXXwwKXtzeChxLGNbb2E+PjJdfDApO2JyZWFrfWVsc2V7Y1tiYT4+Ml09Y1t5YT4+Ml07RWgocSwzNjY1NCxiYSk7YnJlYWt9fX1lbHNle2Nbdz4+Ml09Y1soY1txYT4+Ml18MCkrOD4+Ml07Y1t1Pj4yXT0xO3doaWxlKDEpe2lmKCEoY1t3Pj4yXXwwKSlicmVhaztjW3c+PjJdPWNbKGNbdz4+Ml18MCkrMjA+PjJdO2NbdT4+Ml09KGNbdT4+Ml18MCkrMX1iYT1jW3dhPj4yXXwwO0o9Y1t1Pj4yXXwwO2NbQz4+Ml09Y1tjW3FhPj4yXT4+Ml07Y1tDKzQ+PjJdPUo7Y1t5YT4+Ml09R2goYmEsMzY2NzgsQyl8MDtpZighKGNbeWE+PjJdfDApKWJyZWFrO2lmKGFbKGNbRz4+Ml18MCkrNDEwPj4wXXwwKXtiYT0oY1t5YT4+Ml18MCkrN3wwO2FbYmE+PjBdPShhW2JhPj4wXXwwKSsxPDwyND4+MjR9fWNbRj4+Ml09Y1tjW1Y+PjJdPj4yXTtpZigoYXgoY1tHPj4yXXwwLDE4LChjW29hPj4yXXwwKT09MT8xOTkwNToxOTkyNCwwLGNbRj4+Ml18MCl8MCk9PTA/KGNbSz4+Ml09MSxjW0s+PjJdPShjW29hPj4yXXwwKT09MT8zOjEsKGF4KGNbRz4+Ml18MCxjW0s+PjJdfDAsY1t5YT4+Ml18MCxjW2NbcWE+PjJdPj4yXXwwLGNbRj4+Ml18MCl8MCk9PTApOjApe2lmKCEoY1t1YT4+Ml18MCkpe1h5KHgsY1soY1soY1txYT4+Ml18MCkrND4+Ml18MCkrKChiWyhjW3FhPj4yXXwwKSszND4+MV18MCktMTw8NCk+PjJdfDApO2JhPWNbRz4+Ml18MDtjW3VhPj4yXT1UdihiYSwwLGp3KGNbd2E+PjJdfDAsNTUseCwwKXwwKXwwO2lmKCEoY1t1YT4+Ml18MCkpYnJlYWs7YXcoY1t1YT4+Ml18MCxjW3Q+PjJdfDApfWVsc2UgZHcoY1tHPj4yXXwwLGNbdWE+PjJdfDAsMzMxNTgpO2NbSz4+Ml09MDt3aGlsZSgxKXtpZigoY1tLPj4yXXwwKT49KGNbY1t1YT4+Ml0+PjJdfDApKWJyZWFrO2Nbdj4+Ml09Y1soY1soY1t1YT4+Ml18MCkrND4+Ml18MCkrKChjW0s+PjJdfDApKjIwfDApPj4yXTtpZigoZFtjW3Y+PjJdPj4wXXwwKT09NTMpe2JhPTErKEpmKGNbKGNbdj4+Ml18MCkrOD4+Ml18MCl8MCl8MDtjW1E+PjJdPShjW1E+PjJdfDApK2JhfWNbSz4+Ml09KGNbSz4+Ml18MCkrMX1jW1M+PjJdPUpmKGNbeWE+PjJdfDApfDA7aWYoY1taPj4yXXwwKXE9ZVsoY1taPj4yXXwwKSs1MD4+MV18MDtlbHNlIHE9MTtjW1I+PjJdPXE7Y1t4YT4+Ml09a0UoY1t3YT4+Ml18MCwoY1tjW3VhPj4yXT4+Ml18MCkrKGNbUj4+Ml18MCkmNjU1MzUsKGNbUz4+Ml18MCkrKGNbUT4+Ml18MCkrMXwwLGxhKXwwO2lmKCEoYVsoY1t3YT4+Ml18MCkrNjk+PjBdfDApKXtjW2NbeGE+PjJdPj4yXT1jW2xhPj4yXTtjW2xhPj4yXT0oY1tsYT4+Ml18MCkrKChjW1M+PjJdfDApKzEpO1RSKGNbY1t4YT4+Ml0+PjJdfDAsY1t5YT4+Ml18MCwoY1tTPj4yXXwwKSsxfDApfDA7Y1soY1t4YT4+Ml18MCkrMTI+PjJdPWNbcWE+PjJdO2FbKGNbeGE+PjJdfDApKzU0Pj4wXT1jW25hPj4yXTtiYT0oY1t4YT4+Ml18MCkrNTV8MDthW2JhPj4wXT1hW2JhPj4wXSYtOXwoKGNbbmE+PjJdfDApIT0wJjEpPDwzJjI1NTtiYT0oY1t4YT4+Ml18MCkrNTV8MDthW2JhPj4wXT1hW2JhPj4wXSYtNHxkW0g+PjBdJjM7Y1soY1t4YT4+Ml18MCkrMjQ+PjJdPWNbKGNbKGNbd2E+PjJdfDApKzE2Pj4yXXwwKSsoY1tvYT4+Ml08PDQpKzEyPj4yXTtiWyhjW3hhPj4yXXwwKSs1MD4+MV09Y1tjW3VhPj4yXT4+Ml07aWYoY1t2YT4+Ml18MCl7QkgoY1tHPj4yXXwwLGNbcWE+PjJdfDAsMixjW3ZhPj4yXXwwLDApO2NbKGNbeGE+PjJdfDApKzM2Pj4yXT1jW3ZhPj4yXTtjW3ZhPj4yXT0wfWlmKChkWyhjWyhjW1Y+PjJdfDApKzEyPj4yXXwwKSs3Nj4+MF18MCk+PTQpY1skPj4yXT0tMTtlbHNlIGNbJD4+Ml09MDtjW0s+PjJdPTA7Y1tYPj4yXT1jWyhjW3VhPj4yXXwwKSs0Pj4yXTt3aGlsZSgxKXtpZigoY1tLPj4yXXwwKT49KGNbY1t1YT4+Ml0+PjJdfDApKWJyZWFrO0NIKGNbY1tYPj4yXT4+Ml18MCk7QkgoY1tHPj4yXXwwLGNbcWE+PjJdfDAsMzIsY1tjW1g+PjJdPj4yXXwwLDApO2lmKGNbKGNbRz4+Ml18MCkrMzY+PjJdfDApYnJlYWsgYTtjW1Q+PjJdPWt5KGNbY1tYPj4yXT4+Ml18MCl8MDtpZigoZFtjW1Q+PjJdPj4wXXwwKSE9MTUyKXtpZigoY1txYT4+Ml18MCk9PShjWyhjW0c+PjJdfDApKzQ0MD4+Ml18MCkpe3NhPTY4O2JyZWFrfWRvIGlmKCEoY1soY1t4YT4+Ml18MCkrNDA+PjJdfDApKXtjW1U+PjJdPVF5KGNbd2E+PjJdfDAsY1t1YT4+Ml18MCwwKXwwO2NbKGNbeGE+PjJdfDApKzQwPj4yXT1jW1U+PjJdO2lmKGFbKGNbd2E+PjJdfDApKzY5Pj4wXXwwKWJyZWFrO2NbWD4+Ml09KGNbKGNbVT4+Ml18MCkrND4+Ml18MCkrKChjW0s+PjJdfDApKjIwfDApfXdoaWxlKDApO2NbTT4+Ml09LTI7YlsoY1soY1t4YT4+Ml18MCkrND4+Ml18MCkrKGNbSz4+Ml08PDEpPj4xXT0tMjtiYT0oY1t4YT4+Ml18MCkrNTV8MDthW2JhPj4wXT1hW2JhPj4wXSYtOX1lbHNle2NbTT4+Ml09YlsoY1tUPj4yXXwwKSszMj4+MV07ZG8gaWYoKGNbTT4+Ml18MCk8MCljW00+PjJdPWJbKGNbcWE+PjJdfDApKzMyPj4xXTtlbHNle2lmKGRbKGNbKGNbcWE+PjJdfDApKzQ+PjJdfDApKyhjW00+PjJdPDw0KSsxMj4+MF18MClicmVhaztiYT0oY1t4YT4+Ml18MCkrNTV8MDthW2JhPj4wXT1hW2JhPj4wXSYtOX13aGlsZSgwKTtiWyhjWyhjW3hhPj4yXXwwKSs0Pj4yXXwwKSsoY1tLPj4yXTw8MSk+PjFdPWNbTT4+Ml19Y1trYT4+Ml09MDtkbyBpZigoZFtjW2NbWD4+Ml0+PjJdPj4wXXwwKT09NTMpe2Nba2E+PjJdPWNbKGNbY1tYPj4yXT4+Ml18MCkrOD4+Ml07Y1tQPj4yXT0oSmYoY1trYT4+Ml18MCl8MCkrMTtUUihjW2xhPj4yXXwwLGNba2E+PjJdfDAsY1tQPj4yXXwwKXwwO2Nba2E+PjJdPWNbbGE+PjJdO2NbbGE+PjJdPShjW2xhPj4yXXwwKSsoY1tQPj4yXXwwKTtjW1E+PjJdPShjW1E+PjJdfDApLShjW1A+PjJdfDApfWVsc2V7aWYoKGNbTT4+Ml18MCk8MClicmVhaztjW2thPj4yXT1jWyhjWyhjW3FhPj4yXXwwKSs0Pj4yXXwwKSsoY1tNPj4yXTw8NCkrOD4+Ml19d2hpbGUoMCk7aWYoIShjW2thPj4yXXwwKSljW2thPj4yXT0zNDgzNDtpZigoYVsoY1t3YT4+Ml18MCkrMTQ4KzU+PjBdfDApPT0wPyhYeihjW0c+PjJdfDAsY1trYT4+Ml18MCl8MCk9PTA6MClicmVhayBhO2NbKGNbKGNbeGE+PjJdfDApKzMyPj4yXXwwKSsoY1tLPj4yXTw8Mik+PjJdPWNba2E+PjJdO2NbXz4+Ml09ZFsoY1tYPj4yXXwwKSsxMj4+MF0mY1skPj4yXTthWyhjWyhjW3hhPj4yXXwwKSsyOD4+Ml18MCkrKGNbSz4+Ml18MCk+PjBdPWNbXz4+Ml07Y1tLPj4yXT0oY1tLPj4yXXwwKSsxO2NbWD4+Ml09KGNbWD4+Ml18MCkrMjB9aWYoKHNhfDApPT02OCl7RWgoY1tHPj4yXXwwLDM2NzAxLGNhKTticmVha31iOmRvIGlmKGNbWj4+Ml18MCl7Y1tNPj4yXT0wO3doaWxlKDEpe2lmKChjW00+PjJdfDApPj0oZVsoY1taPj4yXXwwKSs1MD4+MV18MCkpYnJlYWsgYjtjW2hhPj4yXT1iWyhjWyhjW1o+PjJdfDApKzQ+PjJdfDApKyhjW00+PjJdPDwxKT4+MV07aWYoREgoY1soY1t4YT4+Ml18MCkrND4+Ml18MCxlWyhjW3hhPj4yXXwwKSs1MD4+MV18MCxjW2hhPj4yXXwwKXwwKXtsYT0oY1t4YT4+Ml18MCkrNTJ8MDtiW2xhPj4xXT0oYltsYT4+MV18MCkrLTE8PDE2Pj4xNn1lbHNle2JbKGNbKGNbeGE+PjJdfDApKzQ+PjJdfDApKyhjW0s+PjJdPDwxKT4+MV09Y1toYT4+Ml07Y1soY1soY1t4YT4+Ml18MCkrMzI+PjJdfDApKyhjW0s+PjJdPDwyKT4+Ml09Y1soY1soY1taPj4yXXwwKSszMj4+Ml18MCkrKGNbTT4+Ml08PDIpPj4yXTthWyhjWyhjW3hhPj4yXXwwKSsyOD4+Ml18MCkrKGNbSz4+Ml18MCk+PjBdPWFbKGNbKGNbWj4+Ml18MCkrMjg+PjJdfDApKyhjW00+PjJdfDApPj4wXXwwO2NbSz4+Ml09KGNbSz4+Ml18MCkrMX1jW00+PjJdPShjW00+PjJdfDApKzF9fWVsc2V7YlsoY1soY1t4YT4+Ml18MCkrND4+Ml18MCkrKGNbSz4+Ml08PDEpPj4xXT0tMTtjWyhjWyhjW3hhPj4yXXwwKSszMj4+Ml18MCkrKGNbSz4+Ml08PDIpPj4yXT0zNDgzNH13aGlsZSgwKTtJaihjW3hhPj4yXXwwKTtpZighKGNbKGNbRz4+Ml18MCkrNDQwPj4yXXwwKSlFSChjW3hhPj4yXXwwKTtjOmRvIGlmKGNbdGE+PjJdfDApe2lmKChlWyhjW3hhPj4yXXwwKSs1Mj4+MV18MCk8KGJbKGNbcWE+PjJdfDApKzM0Pj4xXXwwKSlicmVhaztsYT0oY1t4YT4+Ml18MCkrNTV8MDthW2xhPj4wXT1hW2xhPj4wXSYtMzN8MzI7Y1tNPj4yXT0wO3doaWxlKDEpe2lmKChjW00+PjJdfDApPj0oYlsoY1txYT4+Ml18MCkrMzQ+PjFdfDApKWJyZWFrIGM7aWYoKGNbTT4+Ml18MCkhPShiWyhjW3FhPj4yXXwwKSszMj4+MV18MCk/KChPQShjW3hhPj4yXXwwLGNbTT4+Ml0mNjU1MzUpfDApPDwxNj4+MTZ8MCk8MDowKWJyZWFrO2NbTT4+Ml09KGNbTT4+Ml18MCkrMX1sYT0oY1t4YT4+Ml18MCkrNTV8MDthW2xhPj4wXT1hW2xhPj4wXSYtMzN9d2hpbGUoMCk7ZDpkbyBpZigoY1txYT4+Ml18MCk9PShjWyhjW0c+PjJdfDApKzQ0MD4+Ml18MCkpe2NbVz4+Ml09Y1soY1txYT4+Ml18MCkrOD4+Ml07d2hpbGUoMSl7aWYoIShjW1c+PjJdfDApKWJyZWFrIGQ7aWYoKGVbKGNbVz4+Ml18MCkrNTA+PjFdfDApPT0oZVsoY1t4YT4+Ml18MCkrNTA+PjFdfDApKXtjW04+PjJdPTA7d2hpbGUoMSl7aWYoKGNbTj4+Ml18MCk+PShlWyhjW1c+PjJdfDApKzUwPj4xXXwwKSlicmVhaztpZigoYlsoY1soY1tXPj4yXXwwKSs0Pj4yXXwwKSsoY1tOPj4yXTw8MSk+PjFdfDApIT0oYlsoY1soY1t4YT4+Ml18MCkrND4+Ml18MCkrKGNbTj4+Ml08PDEpPj4xXXwwKSlicmVhaztjW2lhPj4yXT1jWyhjWyhjW1c+PjJdfDApKzMyPj4yXXwwKSsoY1tOPj4yXTw8Mik+PjJdO2NbamE+PjJdPWNbKGNbKGNbeGE+PjJdfDApKzMyPj4yXXwwKSsoY1tOPj4yXTw8Mik+PjJdO2lmKGlnKGNbaWE+PjJdfDAsY1tqYT4+Ml18MCl8MClicmVhaztjW04+PjJdPShjW04+PjJdfDApKzF9aWYoKGNbTj4+Ml18MCk9PShlWyhjW1c+PjJdfDApKzUwPj4xXXwwKSlicmVha31jW1c+PjJdPWNbKGNbVz4+Ml18MCkrMjA+PjJdfWRvIGlmKChkWyhjW1c+PjJdfDApKzU0Pj4wXXwwKSE9KGRbKGNbeGE+PjJdfDApKzU0Pj4wXXwwKSl7ZG8gaWYoKGRbKGNbVz4+Ml18MCkrNTQ+PjBdfDApIT0xMCl7aWYoKGRbKGNbeGE+PjJdfDApKzU0Pj4wXXwwKT09MTApYnJlYWs7c2E9Y1tHPj4yXXwwO2NbZGE+PjJdPTA7RWgoc2EsMzY3NjIsZGEpfXdoaWxlKDApO2lmKChkWyhjW1c+PjJdfDApKzU0Pj4wXXwwKSE9MTApYnJlYWs7YVsoY1tXPj4yXXwwKSs1ND4+MF09YVsoY1t4YT4+Ml18MCkrNTQ+PjBdfDB9d2hpbGUoMCk7aWYoKGRbSD4+MF18MCkhPTIpYnJlYWsgYTtzYT0oY1tXPj4yXXwwKSs1NXwwO2Fbc2E+PjBdPWFbc2E+PjBdJi00fGRbSD4+MF0mMzticmVhayBhfXdoaWxlKDApO2RvIGlmKGFbKGNbd2E+PjJdfDApKzE0OCs1Pj4wXXwwKXtjW3BhPj4yXT1VaigoY1soY1t4YT4+Ml18MCkrMjQ+PjJdfDApKzI0fDAsY1tjW3hhPj4yXT4+Ml18MCxjW3hhPj4yXXwwKXwwO3E9Y1t3YT4+Ml18MDtpZihjW3BhPj4yXXwwKXttaChxKTticmVhayBhfXBhPXErMjR8MDtjW3BhPj4yXT1jW3BhPj4yXXwyO2lmKCEoY1t0YT4+Ml18MCkpYnJlYWs7Y1soY1t4YT4+Ml18MCkrNDQ+PjJdPWNbKGNbd2E+PjJdfDApKzE0OD4+Ml19ZWxzZXtpZighKChjW3RhPj4yXXwwKSE9MD8xOihkWyhjW3FhPj4yXXwwKSs0Mj4+MF0mMzJ8MCk9PTApKWJyZWFrO2xhPShjW0c+PjJdfDApKzQ0fDA7cGE9KGNbbGE+PjJdfDApKzF8MDtjW2xhPj4yXT1wYTtjW0w+PjJdPXBhO2NbYWE+PjJdPWR4KGNbRz4+Ml18MCl8MDtpZighKGNbYWE+PjJdfDApKWJyZWFrIGE7cngoY1tHPj4yXXwwLDEsY1tvYT4+Ml18MCk7cGE9ZngoY1thYT4+Ml18MCwxNjEpfDA7Y1soY1t4YT4+Ml18MCkrNDQ+PjJdPXBhO2l4KGNbYWE+PjJdfDAsMTM0LGNbb2E+PjJdfDAsY1tMPj4yXXwwKXwwO2lmKGNbST4+Ml18MCl7Y1tPPj4yXT0oY1soY1tHPj4yXXwwKSszOTI+PjJdfDApLShjW2NbWT4+Ml0+PjJdfDApKyhjWyhjW0c+PjJdfDApKzM5Mis0Pj4yXXwwKTtpZigoYVsoY1tjW1k+PjJdPj4yXXwwKSsoKGNbTz4+Ml18MCktMSk+PjBdfDApPT01OSljW08+PjJdPShjW08+PjJdfDApKy0xO3BhPWNbd2E+PjJdfDA7a2E9Y1tPPj4yXXwwO2xhPWNbY1tZPj4yXT4+Ml18MDtjW2VhPj4yXT0oY1tuYT4+Ml18MCk9PTA/MTg0MDI6MzY4MDQ7Y1tlYSs0Pj4yXT1rYTtjW2VhKzg+PjJdPWxhO2NbbWE+PjJdPUdoKHBhLDM2ODEyLGVhKXwwfWVsc2UgY1ttYT4+Ml09MDtwYT1jW0c+PjJdfDA7aGE9KGNbb2E+PjJdfDApPT0xPzE5OTA1OjE5OTI0O2lhPWNbY1t4YT4+Ml0+PjJdfDA7amE9Y1tjW3FhPj4yXT4+Ml18MDtrYT1jW0w+PjJdfDA7bGE9Y1ttYT4+Ml18MDtjW2ZhPj4yXT1jWyhjWyhjW3dhPj4yXXwwKSsxNj4+Ml18MCkrKGNbb2E+PjJdPDw0KT4+Ml07Y1tmYSs0Pj4yXT1oYTtjW2ZhKzg+PjJdPWlhO2NbZmErMTI+PjJdPWphO2NbZmErMTY+PjJdPWthO2NbZmErMjA+PjJdPWxhO2N4KHBhLDM2ODMyLGZhKTtUZihjW3dhPj4yXXwwLGNbbWE+PjJdfDApO2lmKGNbdGE+PjJdfDApe21BKGNbRz4+Ml18MCxjW3hhPj4yXXwwLGNbTD4+Ml18MCk7ZXgoY1tHPj4yXXwwLGNbb2E+PjJdfDApO21hPWNbYWE+PjJdfDA7b2E9Y1tvYT4+Ml18MDtwYT1jW3dhPj4yXXwwO2NbZ2E+PjJdPWNbY1t4YT4+Ml0+PjJdO2d4KG1hLG9hLEdoKHBhLDM2ODgwLGdhKXwwKTtmeChjW2FhPj4yXXwwLDE1MCl8MH1aeihjW2FhPj4yXXwwLGNbKGNbeGE+PjJdfDApKzQ0Pj4yXXwwKX13aGlsZSgwKTtpZighKChjW3RhPj4yXXwwKT09MD8xOihkWyhjW3dhPj4yXXwwKSsxNDgrNT4+MF18MCkhPTApKWJyZWFrO2RvIGlmKChjW25hPj4yXXwwKSE9NSlzYT0xNDM7ZWxzZXtpZighKGNbKGNbcWE+PjJdfDApKzg+PjJdfDApKXtzYT0xNDM7YnJlYWt9aWYoKGRbKGNbKGNbcWE+PjJdfDApKzg+PjJdfDApKzU0Pj4wXXwwKT09NSl7c2E9MTQzO2JyZWFrfWNbcmE+PjJdPWNbKGNbcWE+PjJdfDApKzg+PjJdO3doaWxlKDEpe2lmKGNbKGNbcmE+PjJdfDApKzIwPj4yXXwwKXA9KGRbKGNbKGNbcmE+PjJdfDApKzIwPj4yXXwwKSs1ND4+MF18MCkhPTU7ZWxzZSBwPTA7cT1jWyhjW3JhPj4yXXwwKSsyMD4+Ml18MDtpZighcClicmVhaztjW3JhPj4yXT1xfWNbKGNbeGE+PjJdfDApKzIwPj4yXT1xO2NbKGNbcmE+PjJdfDApKzIwPj4yXT1jW3hhPj4yXX13aGlsZSgwKTtpZigoc2F8MCk9PTE0Myl7Y1soY1t4YT4+Ml18MCkrMjA+PjJdPWNbKGNbcWE+PjJdfDApKzg+PjJdO2NbKGNbcWE+PjJdfDApKzg+PjJdPWNbeGE+PjJdfWNbeGE+PjJdPTB9fX19d2hpbGUoMCk7aWYoIShjW3hhPj4yXXwwKSl7c2E9Y1t3YT4+Ml18MDt4YT1jW3ZhPj4yXXwwO2l2KHNhLHhhKTt4YT1jW3dhPj4yXXwwO3ZhPWNbdWE+PjJdfDA7ZXYoeGEsdmEpO3ZhPWNbd2E+PjJdfDA7eGE9Y1t0YT4+Ml18MDtodih2YSx4YSk7eGE9Y1t3YT4+Ml18MDt5YT1jW3lhPj4yXXwwO1RmKHhhLHlhKTtpPXphO3JldHVybn1GSChjW3dhPj4yXXwwLGNbeGE+PjJdfDApO3NhPWNbd2E+PjJdfDA7eGE9Y1t2YT4+Ml18MDtpdihzYSx4YSk7eGE9Y1t3YT4+Ml18MDt2YT1jW3VhPj4yXXwwO2V2KHhhLHZhKTt2YT1jW3dhPj4yXXwwO3hhPWNbdGE+PjJdfDA7aHYodmEseGEpO3hhPWNbd2E+PjJdfDA7eWE9Y1t5YT4+Ml18MDtUZih4YSx5YSk7aT16YTtyZXR1cm59ZnVuY3Rpb24gSnYoYixlKXtiPWJ8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MDtrPWk7aT1pKzE2fDA7Zj1rKzEyfDA7Zz1rKzh8MDtqPWsrNHwwO2g9aztjW2Y+PjJdPWI7Y1tnPj4yXT1lO2Nbaj4+Ml09Y1soY1tmPj4yXXwwKSs0NDA+PjJdO2NbaD4+Ml09Y1tjW2Y+PjJdPj4yXTtpZigoKGNbaj4+Ml18MCkhPTA/KGFbKGNbZj4+Ml18MCkrNDEwPj4wXXwwKT09MDowKT8oSmkoY1soY1soY1toPj4yXXwwKSsxNj4+Ml18MCkrKGRbKGNbaD4+Ml18MCkrMTQ4KzQ+PjBdPDw0KSs0Pj4yXXwwKXwwKT09MDowKXtiPVR2KGNbZj4+Ml18MCxjWyhjW2o+PjJdfDApKzI0Pj4yXXwwLGNbZz4+Ml18MCl8MDtjWyhjW2o+PjJdfDApKzI0Pj4yXT1iO2lmKCEoY1soY1tmPj4yXXwwKSs4NCs0Pj4yXXwwKSl7aT1rO3JldHVybn1VdihjW2Y+PjJdfDAsY1soY1tqPj4yXXwwKSsyND4+Ml18MCwoY1tmPj4yXXwwKSs4NHwwLDEpO2k9aztyZXR1cm59aXYoY1tjW2Y+PjJdPj4yXXwwLGNbZz4+Ml18MCk7aT1rO3JldHVybn1mdW5jdGlvbiBLdihlLGYsZyxoLGope2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO3ZhciBrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wLEU9MDtFPWk7aT1pKzk2fDA7Qj1FKzE2fDA7bz1FKzh8MDtuPUU7cD1FKzgwfDA7cT1FKzc2fDA7az1FKzcyfDA7cj1FKzY4fDA7cz1FKzY0fDA7dD1FKzYwfDA7ej1FKzU2fDA7QT1FKzUyfDA7eT1FKzQ4fDA7bT1FKzQ0fDA7dT1FKzQwfDA7eD1FKzM2fDA7Qz1FKzMyfDA7bD1FKzI4fDA7dj1FKzI0fDA7dz1FKzIwfDA7Y1twPj4yXT1lO2NbcT4+Ml09ZjtjW2s+PjJdPWc7Y1tyPj4yXT1oO2Nbcz4+Ml09ajtjW3Q+PjJdPWNbY1twPj4yXT4+Ml07Y1t6Pj4yXT0wO2NbeT4+Ml09Y1soY1twPj4yXXwwKSs0NDA+PjJdO2E6ZG8gaWYoKGNbeT4+Ml18MCkhPTA/KGRbKGNbcD4+Ml18MCkrNDEwPj4wXXwwKT09MDowKXtpZighKGNbcT4+Ml18MCkpe2NbbD4+Ml09KGJbKGNbeT4+Ml18MCkrMzQ+PjFdfDApLTE7aWYoKGNbbD4+Ml18MCk8MClicmVhaztpZigoY1tyPj4yXXwwKSE9MD8oY1tjW3I+PjJdPj4yXXwwKSE9MTowKXtEPWNbcD4+Ml18MDtDPWNbaz4+Ml18MDtjW24+PjJdPWNbKGNbKGNbeT4+Ml18MCkrND4+Ml18MCkrKGNbbD4+Ml08PDQpPj4yXTtjW24rND4+Ml09QztFaChELDM2MjcwLG4pO2JyZWFrfWNbeD4+Ml09MX1lbHNle2lmKChjW3I+PjJdfDApIT0wPyhjW2Nbcj4+Ml0+PjJdfDApIT0oY1tjW3E+PjJdPj4yXXwwKTowKXtFaChjW3A+PjJdfDAsMzYzMzMsbyk7YnJlYWt9Y1t4Pj4yXT1jW2NbcT4+Ml0+PjJdfWNbbT4+Ml09NDQrKChjW3g+PjJdfDApLTE8PDMpKyhjWyhjW2s+PjJdfDApKzQ+PjJdfDApKzE7YjpkbyBpZihjW3I+PjJdfDApe2NbdT4+Ml09MDt3aGlsZSgxKXtpZigoY1t1Pj4yXXwwKT49KGNbY1tyPj4yXT4+Ml18MCkpYnJlYWsgYjtvPShKZihjWyhjWyhjW3I+PjJdfDApKzQ+PjJdfDApKygoY1t1Pj4yXXwwKSoyMHwwKSs0Pj4yXXwwKXwwKSsxfDA7Y1ttPj4yXT0oY1ttPj4yXXwwKStvO2NbdT4+Ml09KGNbdT4+Ml18MCkrMX19d2hpbGUoMCk7bz1jW20+PjJdfDA7Y1t6Pj4yXT1zaChjW3Q+PjJdfDAsbywoKG98MCk8MCk8PDMxPj4zMSl8MDtpZihjW3o+PjJdfDApe2NbY1t6Pj4yXT4+Ml09Y1t5Pj4yXTtjWyhjW3o+PjJdfDApKzQ+PjJdPWNbKGNbeT4+Ml18MCkrMTY+PjJdO2NbQz4+Ml09KGNbej4+Ml18MCkrMzYrKGNbeD4+Ml08PDMpO2NbKGNbej4+Ml18MCkrOD4+Ml09Y1tDPj4yXTtUUihjW0M+PjJdfDAsY1tjW2s+PjJdPj4yXXwwLGNbKGNbaz4+Ml18MCkrND4+Ml18MCl8MDthWyhjW0M+PjJdfDApKyhjWyhjW2s+PjJdfDApKzQ+PjJdfDApPj4wXT0wO1p3KGNbQz4+Ml18MCk7Y1tDPj4yXT0oY1tDPj4yXXwwKSsoKGNbKGNbaz4+Ml18MCkrND4+Ml18MCkrMSk7Y1soY1t6Pj4yXXwwKSsyMD4+Ml09Y1t4Pj4yXTtjOmRvIGlmKCEoY1txPj4yXXwwKSljWyhjW3o+PjJdfDApKzM2Pj4yXT0oYlsoY1t5Pj4yXXwwKSszND4+MV18MCktMTtlbHNle2NbdT4+Ml09MDt3aGlsZSgxKXtpZigoY1t1Pj4yXXwwKT49KGNbeD4+Ml18MCkpYnJlYWsgYztjW3Y+PjJdPTA7d2hpbGUoMSl7aWYoKGNbdj4+Ml18MCk+PShiWyhjW3k+PjJdfDApKzM0Pj4xXXwwKSlicmVhaztvPShpZyhjWyhjWyhjW3k+PjJdfDApKzQ+PjJdfDApKyhjW3Y+PjJdPDw0KT4+Ml18MCxjWyhjWyhjW3E+PjJdfDApKzQ+PjJdfDApKygoY1t1Pj4yXXwwKSoyMHwwKSs0Pj4yXXwwKXwwKT09MDtrPWNbdj4+Ml18MDtpZihvKXtEPTI1O2JyZWFrfWNbdj4+Ml09aysxfWlmKChEfDApPT0yNSl7RD0wO2NbKGNbej4+Ml18MCkrMzYrKGNbdT4+Ml08PDMpPj4yXT1rfWlmKChjW3Y+PjJdfDApPj0oYlsoY1t5Pj4yXXwwKSszND4+MV18MCkpYnJlYWs7Y1t1Pj4yXT0oY1t1Pj4yXXwwKSsxfUQ9Y1twPj4yXXwwO2NbQj4+Ml09Y1soY1soY1txPj4yXXwwKSs0Pj4yXXwwKSsoKGNbdT4+Ml18MCkqMjB8MCkrND4+Ml07RWgoRCwzNjQyNyxCKTticmVhayBhfXdoaWxlKDApO2Q6ZG8gaWYoY1tyPj4yXXwwKXtjW3U+PjJdPTA7d2hpbGUoMSl7aWYoKGNbdT4+Ml18MCk+PShjW3g+PjJdfDApKWJyZWFrIGQ7Y1t3Pj4yXT1KZihjWyhjWyhjW3I+PjJdfDApKzQ+PjJdfDApKygoY1t1Pj4yXXwwKSoyMHwwKSs0Pj4yXXwwKXwwO2NbKGNbej4+Ml18MCkrMzYrKGNbdT4+Ml08PDMpKzQ+PjJdPWNbQz4+Ml07VFIoY1tDPj4yXXwwLGNbKGNbKGNbcj4+Ml18MCkrND4+Ml18MCkrKChjW3U+PjJdfDApKjIwfDApKzQ+PjJdfDAsY1t3Pj4yXXwwKXwwO2FbKGNbQz4+Ml18MCkrKGNbdz4+Ml18MCk+PjBdPTA7Y1tDPj4yXT0oY1tDPj4yXXwwKSsoKGNbdz4+Ml18MCkrMSk7Y1t1Pj4yXT0oY1t1Pj4yXXwwKSsxfX13aGlsZSgwKTthWyhjW3o+PjJdfDApKzI0Pj4wXT0wO2FbKGNbej4+Ml18MCkrMjU+PjBdPWNbcz4+Ml07YVsoY1t6Pj4yXXwwKSsyNSsxPj4wXT1jW3M+PjJdPj44O2NbQT4+Ml09VWooKGNbKGNbeT4+Ml18MCkrNjQ+PjJdfDApKzU2fDAsY1soY1t6Pj4yXXwwKSs4Pj4yXXwwLGNbej4+Ml18MCl8MDtpZigoY1tBPj4yXXwwKT09KGNbej4+Ml18MCkpe21oKGNbdD4+Ml18MCk7YnJlYWt9aWYoY1tBPj4yXXwwKXtjWyhjW3o+PjJdfDApKzEyPj4yXT1jW0E+PjJdO2NbKGNbQT4+Ml18MCkrMTY+PjJdPWNbej4+Ml19Y1soY1t5Pj4yXXwwKSsxNj4+Ml09Y1t6Pj4yXTtjW3o+PjJdPTB9fXdoaWxlKDApO1RmKGNbdD4+Ml18MCxjW3o+PjJdfDApO2V2KGNbdD4+Ml18MCxjW3E+PjJdfDApO2V2KGNbdD4+Ml18MCxjW3I+PjJdfDApO2k9RTtyZXR1cm59ZnVuY3Rpb24gTHYoYixkKXtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MDtoPWk7aT1pKzE2fDA7aj1oKzEyfDA7ZT1oKzh8MDtnPWgrNHwwO2Y9aDtjW2o+PjJdPWI7Y1tlPj4yXT1kO2I9Y1soY1tqPj4yXXwwKSs0NDA+PjJdfDA7Y1tnPj4yXT1iO2lmKCFiKXtpPWg7cmV0dXJufWo9Y1soY1tnPj4yXXwwKSsxNj4+Ml18MDtjW2Y+PjJdPWo7aWYoIWope2k9aDtyZXR1cm59YVsoY1tmPj4yXXwwKSsyND4+MF09Y1tlPj4yXTtpPWg7cmV0dXJufWZ1bmN0aW9uIE12KGEsZCl7YT1hfDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTA7bT1pO2k9aSszMnwwO2U9bSsyNHwwO2Y9bSsyMHwwO2o9bSsxNnwwO2g9bSsxMnwwO2w9bSs4fDA7Zz1tKzR8MDtrPW07Y1tlPj4yXT1hO2NbZj4+Ml09ZDtkPWNbKGNbZT4+Ml18MCkrNDQwPj4yXXwwO2Nbaj4+Ml09ZDtpZighZCl7aT1tO3JldHVybn1jW2g+PjJdPShiWyhjW2o+PjJdfDApKzM0Pj4xXXwwKS0xO2NbZz4+Ml09Y1tjW2U+PjJdPj4yXTtjW2w+PjJdPVR3KGNbZz4+Ml18MCxjW2Y+PjJdfDApfDA7aWYoIShjW2w+PjJdfDApKXtpPW07cmV0dXJufWQ9KFh6KGNbZT4+Ml18MCxjW2w+PjJdfDApfDApIT0wO2U9Y1tnPj4yXXwwO2lmKCFkKXtUZihlLGNbbD4+Ml18MCk7aT1tO3JldHVybn1UZihlLGNbKGNbKGNbaj4+Ml18MCkrND4+Ml18MCkrKGNbaD4+Ml08PDQpKzg+PjJdfDApO2NbKGNbKGNbaj4+Ml18MCkrND4+Ml18MCkrKGNbaD4+Ml08PDQpKzg+PjJdPWNbbD4+Ml07Y1trPj4yXT1jWyhjW2o+PjJdfDApKzg+PjJdO3doaWxlKDEpe2lmKCEoY1trPj4yXXwwKSlicmVhaztpZigoYltjWyhjW2s+PjJdfDApKzQ+PjJdPj4xXXwwKT09KGNbaD4+Ml18MCkpY1tjWyhjW2s+PjJdfDApKzMyPj4yXT4+Ml09Y1soY1soY1tqPj4yXXwwKSs0Pj4yXXwwKSsoY1toPj4yXTw8NCkrOD4+Ml07Y1trPj4yXT1jWyhjW2s+PjJdfDApKzIwPj4yXX1pPW07cmV0dXJufWZ1bmN0aW9uIE52KGIsZSxmLGcpe2I9YnwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO3ZhciBoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTA7eD1pO2k9aSs4MHwwO3Q9eCsxNnwwO3M9eCs4fDA7cj14O2g9eCs2NHwwO2o9eCs2MHwwO2s9eCs1NnwwO2w9eCs1MnwwO3A9eCs0OHwwO3E9eCs0NHwwO249eCs0MHwwO289eCszNnwwO209eCszMnwwO3c9eCsyOHwwO3Y9eCsyNHwwO3U9eCsyMHwwO2NbaD4+Ml09YjtjW2o+PjJdPWU7Y1trPj4yXT1mO2NbbD4+Ml09ZztjW24+PjJdPWNbY1toPj4yXT4+Ml07ZG8gaWYoKGFbKGNbbj4+Ml18MCkrNjk+PjBdfDApPT0wPyhLeihjW2g+PjJdfDApfDApPT0wOjApe2lmKGNbbD4+Ml18MCl7Yj0oY1tuPj4yXXwwKSs3M3wwO2FbYj4+MF09KGFbYj4+MF18MCkrMTw8MjQ+PjI0fWNbcD4+Ml09cHgoY1toPj4yXXwwLGNbaz4+Ml18MCwoY1tqPj4yXXwwKSs4fDApfDA7aWYoY1tsPj4yXXwwKXtiPShjW24+PjJdfDApKzczfDA7YVtiPj4wXT0oYVtiPj4wXXwwKSstMTw8MjQ+PjI0fWlmKCEoY1twPj4yXXwwKSl7aWYoIShjW2w+PjJdfDApKWJyZWFrO1pCKGNbaD4+Ml18MCxjWyhjW2o+PjJdfDApKzgrND4+Ml18MCk7YnJlYWt9Y1tvPj4yXT1GaChjW24+PjJdfDAsY1soY1twPj4yXXwwKSs2ND4+Ml18MCl8MDtpZigoZFsoY1twPj4yXXwwKSs0Mj4+MF0mMTZ8MCkhPTA/KFR4KGNbaD4+Ml18MCxjW3A+PjJdfDApfDApIT0wOjApYnJlYWs7Y1t3Pj4yXT0oY1tvPj4yXXwwKT09MT8xOTkwNToxOTkyNDtjW3Y+PjJdPWNbKGNbKGNbbj4+Ml18MCkrMTY+PjJdfDApKyhjW28+PjJdPDw0KT4+Ml07Y1t1Pj4yXT0wO2lmKCEoYXgoY1toPj4yXXwwLDksY1t3Pj4yXXwwLDAsY1t2Pj4yXXwwKXwwKSl7ZG8gaWYoY1trPj4yXXwwKWlmKChjW28+PjJdfDApPT0xKXtjW20+PjJdPTE1O2JyZWFrfWVsc2V7Y1ttPj4yXT0xNzticmVha31lbHNle2lmKGRbKGNbcD4+Ml18MCkrNDI+PjBdJjE2KXtjW20+PjJdPTMwO2NbdT4+Ml09Y1soY1soVXgoY1tuPj4yXXwwLGNbcD4+Ml18MCl8MCkrND4+Ml18MCkrND4+Ml07YnJlYWt9aWYoKGNbbz4+Ml18MCk9PTEpe2NbbT4+Ml09MTM7YnJlYWt9ZWxzZXtjW20+PjJdPTExO2JyZWFrfX13aGlsZSgwKTtpZigoYXgoY1toPj4yXXwwLGNbbT4+Ml18MCxjW2NbcD4+Ml0+PjJdfDAsY1t1Pj4yXXwwLGNbdj4+Ml18MCl8MCk9PTA/KGF4KGNbaD4+Ml18MCw5LGNbY1twPj4yXT4+Ml18MCwwLGNbdj4+Ml18MCl8MCk9PTA6MCl7aWYoKHpkKGNbY1twPj4yXT4+Ml18MCwyNzg0NCw3KXwwKT09MD8oemQoY1tjW3A+PjJdPj4yXXwwLDM2MDYzLDExKXwwKSE9MDowKXt3PWNbaD4+Ml18MDtjW3I+PjJdPWNbY1twPj4yXT4+Ml07RWgodywzNjA3NSxyKTticmVha31pZigoY1trPj4yXXwwKSE9MD8oY1soY1twPj4yXXwwKSsxMj4+Ml18MCk9PTA6MCl7dz1jW2g+PjJdfDA7Y1tzPj4yXT1jW2NbcD4+Ml0+PjJdO0VoKHcsMzYxMDMscyk7YnJlYWt9aWYoKGNbaz4+Ml18MCk9PTA/KGNbKGNbcD4+Ml18MCkrMTI+PjJdfDApIT0wOjApe3c9Y1toPj4yXXwwO2NbdD4+Ml09Y1tjW3A+PjJdPj4yXTtFaCh3LDM2MTM3LHQpO2JyZWFrfWNbcT4+Ml09ZHgoY1toPj4yXXwwKXwwO2lmKGNbcT4+Ml18MCl7cngoY1toPj4yXXwwLDEsY1tvPj4yXXwwKTtRQyhjW2g+PjJdfDAsY1tvPj4yXXwwLDMwODU4LGNbY1twPj4yXT4+Ml18MCk7d0goY1toPj4yXXwwLGNbaj4+Ml18MCxjW3A+PjJdfDApO3hIKGNbaD4+Ml18MCxjW3A+PjJdfDAsY1tvPj4yXXwwLGNbaz4+Ml18MCl9fX19d2hpbGUoMCk7aHYoY1tuPj4yXXwwLGNbaj4+Ml18MCk7aT14O3JldHVybn1mdW5jdGlvbiBPdihlLGYsZyxoLGosayxsLG0pe2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO2s9a3wwO2w9bHwwO209bXwwO3ZhciBuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wO0Q9aTtpPWkrOTZ8MDt3PUQrODh8MDtuPUQrODR8MDtvPUQrODB8MDtwPUQrNzZ8MDt4PUQrNzJ8MDt5PUQrNjh8MDtxPUQrNjR8MDtyPUQrNjB8MDt0PUQrNTZ8MDtBPUQrNTJ8MDtDPUQrNDh8MDtCPUQrNDB8MDt2PUQrMTZ8MDt1PUQrMTJ8MDtzPUQrOHwwO3o9RCs0fDA7Y1t3Pj4yXT1lO2Nbbj4+Ml09ZjtjW28+PjJdPWc7Y1twPj4yXT1oO2NbeD4+Ml09ajtjW3k+PjJdPWs7Y1txPj4yXT1sO2Nbcj4+Ml09bTtjW3U+PjJdPTA7Y1t6Pj4yXT1jW2Nbdz4+Ml0+PjJdO2w9Y1t3Pj4yXXwwO2lmKChiWyhjW3c+PjJdfDApKzQwMD4+MV18MCk8PTApe3p2KGwsY1tvPj4yXXwwLGNbcD4+Ml18MCxjW3E+PjJdfDAsMSwwLGNbcj4+Ml18MCk7Y1t0Pj4yXT1jWyhjW3c+PjJdfDApKzQ0MD4+Ml07aWYoKCgoY1t0Pj4yXXwwKSE9MD8oY1soY1t3Pj4yXXwwKSszNj4+Ml18MCk9PTA6MCk/KE96KGNbdz4+Ml18MCxjW28+PjJdfDAsY1twPj4yXXwwLHUpfDAsY1tzPj4yXT1GaChjW3o+PjJdfDAsY1soY1t0Pj4yXXwwKSs2ND4+Ml18MCl8MCxjQyh2LGNbdz4+Ml18MCxjW3M+PjJdfDAsMzYwNTgsY1t1Pj4yXXwwKSwoZUModixjW3k+PjJdfDApfDApPT0wKTowKT8odj1feChjW3o+PjJdfDAsY1t5Pj4yXXwwLDEpfDAsY1soY1t0Pj4yXXwwKSsxMj4+Ml09dix2PVF5KGNbej4+Ml18MCxjW3g+PjJdfDAsMSl8MCxjWyhjW3Q+PjJdfDApKzI0Pj4yXT12LChhWyhjW3o+PjJdfDApKzY5Pj4wXXwwKT09MCk6MCl7dj0oY1t3Pj4yXXwwKSszOTJ8MDtjW0I+PjJdPWNbdj4+Ml07Y1tCKzQ+PjJdPWNbdis0Pj4yXTtpZigoYVtjW0I+PjJdPj4wXXwwKSE9NTkpY1tCPj4yXT0oY1tCPj4yXXwwKSsoY1tCKzQ+PjJdfDApO2NbQis0Pj4yXT0wO2NbQT4+Ml09KGNbQj4+Ml18MCktKGNbY1tuPj4yXT4+Ml18MCk7Y1tDPj4yXT1jW2Nbbj4+Ml0+PjJdO3doaWxlKDEpe2w9Y1tBPj4yXXwwO2lmKCEoZFsxODQwMysoZFsoY1tDPj4yXXwwKSsoKGNbQT4+Ml18MCktMSk+PjBdfDApPj4wXSYxKSlicmVhaztjW0E+PjJdPWwrLTF9Y1tCPj4yXT0oY1tDPj4yXXwwKSsobC0xKTtjW0IrND4+Ml09MTtCdihjW3c+PjJdfDAsMCxCLDAsMCl9fWVsc2UgRWgobCwzNjAyMixEKTtmdihjW3o+PjJdfDAsY1t5Pj4yXXwwKTtldihjW3o+PjJdfDAsY1t4Pj4yXXwwKTtpPUQ7cmV0dXJufWZ1bmN0aW9uIFB2KGYsZyxoKXtmPWZ8MDtnPWd8MDtoPWh8MDt2YXIgaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTAsRT0wLEY9MCxHPTAsSD0wLEk9MCxKPTAsSz0wLEw9MCxNPTAsTj0wLE89MCxQPTAsUT0wLFI9MCxTPTAsVD0wLFU9MCxWPTAsVz0wLFg9MCxZPTAsWj0wLF89MCwkPTAsYWE9MCxiYT0wLGNhPTAsZGE9MCxlYT0wLGZhPTAsZ2E9MCxoYT0wLGlhPTAsamE9MCxrYT0wLGxhPTAsbWE9MCxuYT0wLG9hPTAscGE9MCxxYT0wLHJhPTAsc2E9MCx0YT0wLHVhPTAsdmE9MCx3YT0wLHhhPTAseWE9MCx6YT0wLEFhPTAsQmE9MCxDYT0wO0NhPWk7aT1pKzQzMnwwO3c9Q2E7Tj1DYSs0MTJ8MDtPPUNhKzQwOHwwO1A9Q2ErNDA0fDA7UT1DYSs0MDB8MDtfPUNhKzM5NnwwO2ZhPUNhKzM5MnwwO3BhPUNhKzM4OHwwO0JhPUNhKzM4NHwwO2w9Q2ErMzgwfDA7a2E9Q2ErMzc2fDA7b2E9Q2ErMzcyfDA7TD1DYSszNjh8MDtsYT1DYSszNjR8MDttYT1DYSszNjB8MDtyYT1DYSszNTZ8MDt4YT1DYSszNDR8MDt5YT1DYSszMTJ8MDt3YT1DYSsyNjR8MDtjYT1DYSsyNjB8MDtZPUNhKzI1NnwwO2RhPUNhKzI1MnwwO289Q2ErMjQ4fDA7cj1DYSsyNDR8MDttPUNhKzI0MHwwO3Q9Q2ErMjM2fDA7cD1DYSsyMzJ8MDtrPUNhKzIwOHwwO3M9Q2ErMjA0fDA7aj1DYSsyMDB8MDt2PUNhKzE5NnwwO249Q2ErMTkyfDA7dT1DYSsxODh8MDtxPUNhKzE4NHwwO3g9Q2ErNDE2fDA7TT1DYSsxNTJ8MDskPUNhKzE0OHwwO2JhPUNhKzE0NHwwO2VhPUNhKzE0MHwwO2FhPUNhKzEzNnwwO1o9Q2ErMTMyfDA7Uz1DYSsxMjh8MDtBYT1DYSsxMjR8MDt6YT1DYSsxMjB8MDtpYT1DYSsxMTZ8MDt6PUNhKzExMnwwO0E9Q2ErMTA4fDA7bmE9Q2ErMTA0fDA7Uj1DYSsxMDB8MDtUPUNhKzk2fDA7dGE9Q2ErOTJ8MDtWPUNhKzg4fDA7WD1DYSs4NHwwO1c9Q2ErODB8MDtVPUNhKzc2fDA7dmE9Q2ErNzJ8MDtzYT1DYSs2OHwwO3VhPUNhKzY0fDA7Z2E9Q2ErNjB8MDtoYT1DYSs1NnwwO2phPUNhKzUyfDA7cWE9Q2ErNDh8MDtHPUNhKzQ0fDA7Sz1DYSs0MHwwO0Q9Q2ErMzZ8MDtDPUNhKzMyfDA7SD1DYSsyOHwwO0k9Q2ErMjR8MDtGPUNhKzIwfDA7RT1DYSsxNnwwO0o9Q2ErMTJ8MDtCPUNhKzQxOHwwO2NbTz4+Ml09ZjtjW1A+PjJdPWc7Y1tRPj4yXT1oO2Nba2E+PjJdPTA7Y1tyYT4+Ml09MTtjW2RhPj4yXT1jWyhjW08+PjJdfDApKzQyMD4+Ml07aD0oY1tPPj4yXXwwKSs0MjR8MDtmPWNbaD4+Ml18MDtjW2g+PjJdPWYrMTtjWyhjW08+PjJdfDApKzQyMD4+Ml09ZjtjW1k+PjJdPWNbY1tPPj4yXT4+Ml07aWYoKChjW1A+PjJdfDApIT0wPyhkWyhjW1k+PjJdfDApKzY5Pj4wXXwwKT09MDowKT8oY1soY1tPPj4yXXwwKSszNj4+Ml18MCk9PTA6MCl7aWYoYXgoY1tPPj4yXXwwLDIxLDAsMCwwKXwwKXtjW04+PjJdPTE7QmE9Y1tOPj4yXXwwO2k9Q2E7cmV0dXJuIEJhfDB9Zz13YTtoPWcrNDh8MDtkb3tjW2c+PjJdPTA7Zz1nKzR8MH13aGlsZSgoZ3wwKTwoaHwwKSk7aWYoKGRbY1tRPj4yXT4+MF18MCk8PTgpe2V2KGNbWT4+Ml18MCxjWyhjW1A+PjJdfDApKzQ0Pj4yXXwwKTtjWyhjW1A+PjJdfDApKzQ0Pj4yXT0wO2Y9KGNbUD4+Ml18MCkrOHwwO2NbZj4+Ml09Y1tmPj4yXSYtMn1teShjW08+PjJdfDAsY1tQPj4yXXwwLDApO2NbeWE+PjJdPTA7Y1t5YSs0Pj4yXT0wO2NbeWErOD4+Ml09MDtjW3lhKzEyPj4yXT0wO2NbeWErMTY+PjJdPTA7Y1t5YSsyMD4+Ml09MDtjW3lhKzI0Pj4yXT0wO2NbeWErMjg+PjJdPTA7Y1t5YT4+Ml09Y1soY1tQPj4yXXwwKSs0ND4+Ml07Y1tvYT4+Ml09Y1soY1tQPj4yXXwwKSsyOD4+Ml07YTpkbyBpZigoY1soY1tPPj4yXXwwKSszNj4+Ml18MCk9PTA/KGRbKGNbWT4+Ml18MCkrNjk+PjBdfDApPT0wOjApe2NbbD4+Ml09KGNbKGNbUD4+Ml18MCkrOD4+Ml0mOHwwKSE9MCYxO2NbXz4+Ml09MDt3aGlsZSgxKXtpZihjWyhjW1A+PjJdfDApKzQ4Pj4yXXwwKWJyZWFrO2lmKChjW18+PjJdfDApPj0oY1tjW29hPj4yXT4+Ml18MCkpYnJlYWs7Y1tvPj4yXT0oY1tvYT4+Ml18MCkrOCsoKGNbXz4+Ml18MCkqNzJ8MCk7Y1tyPj4yXT1jWyhjW28+PjJdfDApKzIwPj4yXTtjW3Q+PjJdPWNbKGNbbz4+Ml18MCkrMTY+PjJdO2lmKGNbcj4+Ml18MCl7aWYoKGJbKGNbdD4+Ml18MCkrMzQ+PjFdfDApIT0oY1tjW2Nbcj4+Ml0+PjJdPj4yXXwwKSl7eT0xNjticmVha31jW20+PjJdPShjWyhjW3I+PjJdfDApKzg+PjJdJjh8MCkhPTAmMTtpZihFRyhjW08+PjJdfDAsY1tQPj4yXXwwLGNbXz4+Ml18MCxjW2w+PjJdfDAsY1ttPj4yXXwwKXwwKXtpZihjW20+PjJdfDApe2NbbD4+Ml09MTtmPShjW1A+PjJdfDApKzh8MDtjW2Y+PjJdPWNbZj4+Ml18OH1jW18+PjJdPS0xfWNbb2E+PjJdPWNbKGNbUD4+Ml18MCkrMjg+PjJdO2lmKGFbKGNbWT4+Ml18MCkrNjk+PjBdfDApYnJlYWsgYTtpZigoZFtjW1E+PjJdPj4wXXwwKT44KWNbeWE+PjJdPWNbKGNbUD4+Ml18MCkrNDQ+PjJdfWNbXz4+Ml09KGNbXz4+Ml18MCkrMX1pZigoeXwwKT09MTYpe0JhPWNbTz4+Ml18MDt6YT1jW2NbdD4+Ml0+PjJdfDA7QWE9Y1tjW2Nbcj4+Ml0+PjJdPj4yXXwwO2Nbdz4+Ml09YlsoY1t0Pj4yXXwwKSszND4+MV07Y1t3KzQ+PjJdPXphO2Nbdys4Pj4yXT1BYTtFaChCYSwzNTYwOSx3KTticmVha31jW0JhPj4yXT1keChjW08+PjJdfDApfDA7aWYoY1tCYT4+Ml18MCl7aWYoY1soY1tQPj4yXXwwKSs0OD4+Ml18MCl7Y1tyYT4+Ml09RkcoY1tPPj4yXXwwLGNbUD4+Ml18MCxjW1E+PjJdfDApfDA7Y1soY1tPPj4yXXwwKSs0MjA+PjJdPWNbZGE+PjJdO2NbTj4+Ml09Y1tyYT4+Ml07QmE9Y1tOPj4yXXwwO2k9Q2E7cmV0dXJuIEJhfDB9Y1tfPj4yXT0wO3doaWxlKDEpe2lmKChjW18+PjJdfDApPj0oY1tjW29hPj4yXT4+Ml18MCkpYnJlYWs7Y1twPj4yXT0oY1tvYT4+Ml18MCkrOCsoKGNbXz4+Ml18MCkqNzJ8MCk7Y1tzPj4yXT1jWyhjW3A+PjJdfDApKzIwPj4yXTtkbyBpZihjW3M+PjJdfDApe2lmKGNbKGNbcD4+Ml18MCkrMjQ+PjJdfDApe2lmKChkWyhjW3A+PjJdfDApKzM2KzE+PjBdfDApPj4+NCYxKWJyZWFrO2l4KGNbQmE+PjJdfDAsMTQsY1soY1twPj4yXXwwKSsyOD4+Ml18MCxjWyhjW3A+PjJdfDApKzI0Pj4yXXwwKXwwO2JyZWFrfXQ9R0coY1tQPj4yXXwwKXwwO3c9KGNbTz4+Ml18MCkrNDE2fDA7Y1t3Pj4yXT0oY1t3Pj4yXXwwKSt0O2lmKCEoZFsoY1twPj4yXXwwKSszNj4+MF0mMzIpKUhHKGNbWT4+Ml18MCxjW3M+PjJdfDAsY1soY1tQPj4yXXwwKSszMj4+Ml18MCxjWyhjW3A+PjJdfDApKzQ0Pj4yXXwwKXwwO2RvIGlmKCEoY1tfPj4yXXwwKSl7aWYoKGNbY1tvYT4+Ml0+PjJdfDApIT0xPyhkWyhjW29hPj4yXXwwKSs4KzcyKzM2Pj4wXSYxMHwwKT09MDowKXt5PTQyO2JyZWFrfWlmKGNbKGNbUD4+Ml18MCkrOD4+Ml0mMil7eT00MjticmVha31pZihlWyhjW1k+PjJdfDApKzY0Pj4xXSYyNTYpe3k9NDI7YnJlYWt9Y1tqPj4yXT0od3goY1tCYT4+Ml18MCl8MCkrMTt0PShjW08+PjJdfDApKzQ0fDA7dz0oY1t0Pj4yXXwwKSsxfDA7Y1t0Pj4yXT13O2NbKGNbcD4+Ml18MCkrMjg+PjJdPXc7angoY1tCYT4+Ml18MCwxNSxjWyhjW3A+PjJdfDApKzI4Pj4yXXwwLDAsY1tqPj4yXXwwKXwwO2NbKGNbcD4+Ml18MCkrMjQ+PjJdPWNbaj4+Ml07dkIoaywxMyxjWyhjW3A+PjJdfDApKzI4Pj4yXXwwKTthWyhjW3A+PjJdfDApKzQwPj4wXT1jWyhjW08+PjJdfDApKzQyND4+Ml07UHYoY1tPPj4yXXwwLGNbcz4+Ml18MCxrKXwwO2JbKGNbKGNbcD4+Ml18MCkrMTY+PjJdfDApKzM4Pj4xXT1iWyhjW3M+PjJdfDApKzY+PjFdfDA7dz0oY1twPj4yXXwwKSszNisxfDA7YVt3Pj4wXT1hW3c+PjBdJi0xN3wxNjtjWyhjW3A+PjJdfDApKzMyPj4yXT1jW2srMTI+PjJdO1lDKGNbQmE+PjJdfDAsY1soY1twPj4yXXwwKSsyOD4+Ml18MCk7WnooY1tCYT4+Ml18MCwoY1tqPj4yXXwwKS0xfDApO0lHKGNbTz4+Ml18MCl9ZWxzZSB5PTQyO3doaWxlKDApO2lmKCh5fDApPT00Mil7eT0wO2Nbbj4+Ml09MDt0PShjW08+PjJdfDApKzQ0fDA7dz0oY1t0Pj4yXXwwKSsxfDA7Y1t0Pj4yXT13O2NbKGNbcD4+Ml18MCkrMjg+PjJdPXc7Y1t2Pj4yXT1peChjW0JhPj4yXXwwLDc2LDAsY1soY1twPj4yXXwwKSsyOD4+Ml18MCl8MDtjWyhjW3A+PjJdfDApKzI0Pj4yXT0oY1t2Pj4yXXwwKSsxO2lmKCEoKGRbKGNbcD4+Ml18MCkrMzYrMT4+MF18MCk+Pj4zJjEpKWNbbj4+Ml09ZngoY1tCYT4+Ml18MCwyMCl8MDt2QihrLDEyLGNbKGNbcD4+Ml18MCkrNDQ+PjJdfDApO2FbKGNbcD4+Ml18MCkrNDA+PjBdPWNbKGNbTz4+Ml18MCkrNDI0Pj4yXTtQdihjW08+PjJdfDAsY1tzPj4yXXwwLGspfDA7YlsoY1soY1twPj4yXXwwKSsxNj4+Ml18MCkrMzg+PjFdPWJbKGNbcz4+Ml18MCkrNj4+MV18MDtpZihjW24+PjJdfDApWnooY1tCYT4+Ml18MCxjW24+PjJdfDApO2NbdT4+Ml09U3ooY1tCYT4+Ml18MCw3MixjWyhjW3A+PjJdfDApKzI4Pj4yXXwwKXwwO1lEKGNbQmE+PjJdfDAsY1t2Pj4yXXwwLGNbdT4+Ml18MCk7SUcoY1tPPj4yXXwwKX1pZihhWyhjW1k+PjJdfDApKzY5Pj4wXXwwKWJyZWFrIGE7dD1HRyhjW1A+PjJdfDApfDA7dz0oY1tPPj4yXXwwKSs0MTZ8MDtjW3c+PjJdPShjW3c+PjJdfDApLXR9d2hpbGUoMCk7Y1tfPj4yXT0oY1tfPj4yXXwwKSsxfWNba2E+PjJdPWNbY1tQPj4yXT4+Ml07Y1tMPj4yXT1jWyhjW1A+PjJdfDApKzMyPj4yXTtjW2xhPj4yXT1jWyhjW1A+PjJdfDApKzM2Pj4yXTtjW21hPj4yXT1jWyhjW1A+PjJdfDApKzQwPj4yXTthW3hhPj4wXT0oY1soY1tQPj4yXXwwKSs4Pj4yXSYxfDApIT0wO2lmKChjWyhjW1A+PjJdfDApKzg+PjJdJjl8MCk9PTE/KEx5KGNbeWE+PjJdfDAsY1trYT4+Ml18MCwtMSl8MCk9PTA6MCl7eT0oY1tQPj4yXXwwKSs4fDA7Y1t5Pj4yXT1jW3k+PjJdJi0yO3k9UXkoY1tZPj4yXXwwLGNba2E+PjJdfDAsMCl8MDtjWyhjW1A+PjJdfDApKzM2Pj4yXT15O2NbbGE+PjJdPXl9aWYoY1t5YT4+Ml18MCl7Y1txPj4yXT1KRyhjW08+PjJdfDAsY1t5YT4+Ml18MCwwLGNbY1trYT4+Ml0+PjJdfDApfDA7dz0oY1tPPj4yXXwwKSs0MHwwO3k9Y1t3Pj4yXXwwO2Nbdz4+Ml09eSsxO2NbeWErOD4+Ml09eTtjW3lhKzIwPj4yXT1teChjW0JhPj4yXXwwLDEwNyxjW3lhKzg+PjJdfDAsKGNbY1t5YT4+Ml0+PjJdfDApKzErKGNbY1trYT4+Ml0+PjJdfDApfDAsMCxjW3E+PjJdfDAsLTYpfDB9ZWxzZSBjW3lhKzIwPj4yXT0tMTtpZigoZFtjW1E+PjJdPj4wXXwwKT09MTIpaXgoY1tCYT4+Ml18MCwxMDcsY1soY1tRPj4yXXwwKSs4Pj4yXXwwLGNbY1trYT4+Ml0+PjJdfDApfDA7Y1tjYT4+Ml09V3ooY1tCYT4+Ml18MCl8MDtiWyhjW1A+PjJdfDApKzY+PjFdPTMyMDtLRyhjW08+PjJdfDAsY1tQPj4yXXwwLGNbY2E+PjJdfDApO2lmKChjWyhjW1A+PjJdfDApKzEyPj4yXXwwKT09MD8oY1t5YSsyMD4+Ml18MCk+PTA6MCl7TEcoY1tCYT4+Ml18MCxjW3lhKzIwPj4yXXwwLDEwOCk7eT15YSsyOHwwO2FbeT4+MF09ZFt5Pj4wXXwxfWlmKGNbKGNbUD4+Ml18MCkrOD4+Ml0mMSl7eT0oY1tPPj4yXXwwKSs0MHwwO3c9Y1t5Pj4yXXwwO2NbeT4+Ml09dysxO2NbeGErND4+Ml09dzt3PWNbQmE+PjJdfDA7eT1jW3hhKzQ+PjJdfDA7Y1t4YSs4Pj4yXT1teCh3LDEwNyx5LDAsMCxKRyhjW08+PjJdfDAsY1tjW1A+PjJdPj4yXXwwLDAsMCl8MCwtNil8MDtKaChjW0JhPj4yXXwwLDgpO2FbeGErMT4+MF09M31lbHNlIGFbeGErMT4+MF09MDtpZigoY1tsPj4yXXwwKT09MCYoY1tsYT4+Ml18MCk9PTApe2JbeD4+MV09KGRbeGE+PjBdfDApIT0wPzI1NjowO2JbeD4+MV09ZVt4Pj4xXXxjWyhjW1A+PjJdfDApKzg+PjJdJjE2Mzg0O2NbcGE+PjJdPXFEKGNbTz4+Ml18MCxjW29hPj4yXXwwLGNbTD4+Ml18MCxjW3lhPj4yXXwwLGNbY1tQPj4yXT4+Ml18MCxiW3g+PjFdfDAsYlsoY1tQPj4yXXwwKSs2Pj4xXXwwKXwwO2lmKCEoY1twYT4+Ml18MCkpYnJlYWs7QWE9KE1HKGNbcGE+PjJdfDApfDApPDwxNj4+MTY7aWYoKEFhfDApPChiWyhjW1A+PjJdfDApKzY+PjFdfDApKXtBYT1NRyhjW3BhPj4yXXwwKXwwO2JbKGNbUD4+Ml18MCkrNj4+MV09QWF9ZG8gaWYoZFt4YT4+MF18MCl7aWYoIShORyhjW3BhPj4yXXwwKXwwKSlicmVhazthW3hhKzE+PjBdPU5HKGNbcGE+PjJdfDApfDB9d2hpbGUoMCk7ZG8gaWYoY1t5YT4+Ml18MCl7Y1t5YSs0Pj4yXT1PRyhjW3BhPj4yXXwwKXwwO2FbeWErMjk+PjBdPVBHKGNbcGE+PjJdfDApfDA7aWYoKGNbeWErND4+Ml18MCkhPShjW2NbeWE+PjJdPj4yXXwwKSlicmVhaztjW3lhPj4yXT0wfXdoaWxlKDApO2RvIGlmKChjW3lhKzIwPj4yXXwwKT49MCl7aWYoY1t5YT4+Ml18MClicmVhaztIQShjW0JhPj4yXXwwLGNbeWErMjA+PjJdfDApfDB9d2hpbGUoMCk7dGE9Y1tPPj4yXXwwO3VhPWNbUD4+Ml18MDt2YT1jW2thPj4yXXwwO3phPWNbUT4+Ml18MDtBYT1RRyhjW3BhPj4yXXwwKXwwO1NHKHRhLHVhLHZhLC0xLHlhLHhhLHphLEFhLFJHKGNbcGE+PjJdfDApfDApO3JEKGNbcGE+PjJdfDApfWVsc2V7Y1tBYT4+Ml09MDtjW3phPj4yXT0wO2NbaWE+PjJdPTA7Zz1jW1A+PjJdfDA7ZG8gaWYoY1tsYT4+Ml18MCl7Y1t6Pj4yXT1jW2NbZz4+Ml0+PjJdO2NbQT4+Ml09Y1soY1tjW1A+PjJdPj4yXXwwKSs0Pj4yXTt3aGlsZSgxKXtpZigoY1t6Pj4yXXwwKTw9MClicmVhaztiWyhjW0E+PjJdfDApKzE2KzI+PjFdPTA7Y1t6Pj4yXT0oY1t6Pj4yXXwwKSstMTtjW0E+PjJdPShjW0E+PjJdfDApKzIwfWNbej4+Ml09Y1tjW2xhPj4yXT4+Ml07Y1tBPj4yXT1jWyhjW2xhPj4yXXwwKSs0Pj4yXTt3aGlsZSgxKXtpZigoY1t6Pj4yXXwwKTw9MClicmVhaztiWyhjW0E+PjJdfDApKzE2KzI+PjFdPTA7Y1t6Pj4yXT0oY1t6Pj4yXXwwKSstMTtjW0E+PjJdPShjW0E+PjJdfDApKzIwfWlmKChiWyhjW1A+PjJdfDApKzY+PjFdfDApPD02NilicmVhaztiWyhjW1A+PjJdfDApKzY+PjFdPTY2fWVsc2UgYltnKzY+PjFdPTA7d2hpbGUoMCk7aWYoIShMeShjW2xhPj4yXXwwLGNbeWE+PjJdfDAsLTEpfDApKWNbaWE+PjJdPTE7Y1tTPj4yXT1XeihjW0JhPj4yXXwwKXwwO2NbTT4+Ml09MDtjW00rND4+Ml09MDtjW00rOD4+Ml09MDtjW00rMTI+PjJdPTA7Y1tNKzE2Pj4yXT0wO2NbTSsyMD4+Ml09MDtjW00rMjQ+PjJdPTA7Y1tNKzI4Pj4yXT0wO2NbTT4+Ml09Y1tPPj4yXTtjW00rND4+Ml09Y1tvYT4+Ml07Y1tNKzEyPj4yXT13YTtjW3dhKzE2Pj4yXT0oY1soY1tPPj4yXXwwKSs0ND4+Ml18MCkrMTtpZihjW2xhPj4yXXwwKWc9Y1tjW2xhPj4yXT4+Ml18MDtlbHNlIGc9MDtjW3dhKzEyPj4yXT1nO2Nbd2ErMjQ+PjJdPWNbbGE+PjJdO1RHKE0sY1trYT4+Ml18MCk7VEcoTSxjW3lhPj4yXXwwKTtpZihjW21hPj4yXXwwKVVHKE0sY1ttYT4+Ml18MCk7Y1t3YSszNj4+Ml09Y1t3YSszMj4+Ml07Y1tfPj4yXT0wO3doaWxlKDEpe2lmKChjW18+PjJdfDApPj0oY1t3YSs0ND4+Ml18MCkpYnJlYWs7QT1NKzI4fDA7YltBPj4xXT1lW0E+PjFdfDg7VEcoTSxjWyhjWyhjW3dhKzQwPj4yXXwwKSsoY1tfPj4yXTw8NCk+PjJdfDApKzIwPj4yXXwwKTtBPU0rMjh8MDtiW0E+PjFdPWVbQT4+MV0mLTk7Y1tfPj4yXT0oY1tfPj4yXXwwKSsxfWNbd2ErMjA+PjJdPWNbKGNbTz4+Ml18MCkrNDQ+PjJdO2lmKGFbKGNbWT4+Ml18MCkrNjk+PjBdfDApYnJlYWs7aWYoY1tsYT4+Ml18MCl7Sz0oY1tPPj4yXXwwKSs0MHwwO009Y1tLPj4yXXwwO2NbSz4+Ml09TSsxO2Nbd2ErND4+Ml09TTtjW25hPj4yXT1KRyhjW08+PjJdfDAsY1tsYT4+Ml18MCwwLGNbd2ErMzI+PjJdfDApfDA7Y1tXPj4yXT1teChjW0JhPj4yXXwwLDEwOCxjW3dhKzQ+PjJdfDAsY1t3YSsxMj4+Ml18MCwwLGNbbmE+PjJdfDAsLTYpfDA7TT0oY1tPPj4yXXwwKSs0NHwwO0s9KGNbTT4+Ml18MCkrMXwwO2NbTT4+Ml09SztjW2VhPj4yXT1LO0s9KGNbTz4+Ml18MCkrNDR8MDtNPShjW0s+PjJdfDApKzF8MDtjW0s+PjJdPU07Y1thYT4+Ml09TTtNPShjW08+PjJdfDApKzQ0fDA7Sz0oY1tNPj4yXXwwKSsxfDA7Y1tNPj4yXT1LO2NbdGE+PjJdPUs7Y1tUPj4yXT1XeihjW0JhPj4yXXwwKXwwO0s9KGNbTz4+Ml18MCkrNDR8MDtNPShjW0s+PjJdfDApKzF8MDtjW0s+PjJdPU07Y1t2YT4+Ml09TTtjW1U+PjJdPVd6KGNbQmE+PjJdfDApfDA7Y1skPj4yXT0oY1soY1tPPj4yXXwwKSs0ND4+Ml18MCkrMTtNPShjW08+PjJdfDApKzQ0fDA7Y1tNPj4yXT0oY1tNPj4yXXwwKSsoY1tjW2xhPj4yXT4+Ml18MCk7Y1tiYT4+Ml09KGNbKGNbTz4+Ml18MCkrNDQ+PjJdfDApKzE7TT0oY1tPPj4yXXwwKSs0NHwwO2NbTT4+Ml09KGNbTT4+Ml18MCkrKGNbY1tsYT4+Ml0+PjJdfDApO2l4KGNbQmE+PjJdfDAsNzYsMCxjW2FhPj4yXXwwKXwwO2l4KGNbQmE+PjJdfDAsNzYsMCxjW2VhPj4yXXwwKXwwO2p4KGNbQmE+PjJdfDAsNzksMCxjWyQ+PjJdfDAsKGNbJD4+Ml18MCkrKGNbY1tsYT4+Ml0+PjJdfDApLTF8MCl8MDtpeChjW0JhPj4yXXwwLDE0LGNbdmE+PjJdfDAsY1tVPj4yXXwwKXwwO2NbcGE+PjJdPXFEKGNbTz4+Ml18MCxjW29hPj4yXXwwLGNbTD4+Ml18MCxjW2xhPj4yXXwwLDAsKDY0fCgoY1tpYT4+Ml18MCkhPTA/NTEyOjApKSY2NTUzNSwwKXwwO2lmKCEoY1twYT4+Ml18MCkpYnJlYWs7TT1PRyhjW3BhPj4yXXwwKXwwO2lmKChNfDApPT0oY1tjW2xhPj4yXT4+Ml18MCkpY1taPj4yXT0wO2Vsc2V7aWYoZFt4YT4+MF18MClnPShjWyhjW1A+PjJdfDApKzg+PjJdJjF8MCk9PTA7ZWxzZSBnPTA7VkcoY1tPPj4yXXwwLGc/MzU2NDk6MzU2NTgpO2NbWj4+Ml09MTtjW2hhPj4yXT1jW2NbbGE+PjJdPj4yXTtjW2dhPj4yXT1jW2hhPj4yXTtjW2ZhPj4yXT1jW2hhPj4yXTtjW18+PjJdPTA7d2hpbGUoMSl7aWYoKGNbXz4+Ml18MCk+PShjW3dhKzMyPj4yXXwwKSlicmVhaztpZigoY1soY1t3YSsyOD4+Ml18MCkrKChjW18+PjJdfDApKjI0fDApKzEyPj4yXXwwKT49KGNbZmE+PjJdfDApKXtjW2dhPj4yXT0oY1tnYT4+Ml18MCkrMTtjW2ZhPj4yXT0oY1tmYT4+Ml18MCkrMX1jW18+PjJdPShjW18+PjJdfDApKzF9Y1tzYT4+Ml09Q0EoY1tPPj4yXXwwLGNbZ2E+PjJdfDApfDA7RUMoY1tPPj4yXXwwKTthQihjW08+PjJdfDAsY1tsYT4+Ml18MCxjW3NhPj4yXXwwLDAsMCl8MDtjW2ZhPj4yXT1jW2hhPj4yXTtjW18+PjJdPTA7d2hpbGUoMSl7aWYoKGNbXz4+Ml18MCk+PShjW3dhKzMyPj4yXXwwKSlicmVhaztjW2phPj4yXT0oY1t3YSsyOD4+Ml18MCkrKChjW18+PjJdfDApKjI0fDApO2lmKChjWyhjW2phPj4yXXwwKSsxMj4+Ml18MCk+PShjW2ZhPj4yXXwwKSl7Y1txYT4+Ml09KGNbZmE+PjJdfDApKyhjW3NhPj4yXXwwKTtYRChjW08+PjJdfDAsY1tjW2phPj4yXT4+Ml18MCxjWyhjW2phPj4yXXwwKSs4Pj4yXXwwLGNbKGNbamE+PjJdfDApKzQ+PjJdfDAsY1txYT4+Ml18MCk7Y1tmYT4+Ml09KGNbZmE+PjJdfDApKzF9Y1tfPj4yXT0oY1tfPj4yXXwwKSsxfWNbdWE+PjJdPXZ4KGNbTz4+Ml18MCl8MDtqeChjW0JhPj4yXXwwLDk5LGNbc2E+PjJdfDAsY1tnYT4+Ml18MCxjW3VhPj4yXXwwKXwwO2l4KGNbQmE+PjJdfDAsMTI1LGNbd2ErND4+Ml18MCxjW3VhPj4yXXwwKXwwO3h4KGNbTz4+Ml18MCxjW3VhPj4yXXwwKTtGQShjW08+PjJdfDAsY1tzYT4+Ml18MCxjW2dhPj4yXXwwKTtyRChjW3BhPj4yXXwwKTtzYT0oY1tPPj4yXXwwKSs0MHwwO3VhPWNbc2E+PjJdfDA7Y1tzYT4+Ml09dWErMTtjW0FhPj4yXT11YTtjW3dhKzg+PjJdPXVhO2NbemE+PjJdPXZ4KGNbTz4+Ml18MCl8MDtqeChjW0JhPj4yXXwwLDExMCxjW0FhPj4yXXwwLGNbemE+PjJdfDAsY1tnYT4+Ml18MCl8MDtpeChjW0JhPj4yXXwwLDU1LGNbd2ErND4+Ml18MCxjW1M+PjJdfDApfDA7YVt3YSsxPj4wXT0xO0VDKGNbTz4+Ml18MCl9ZG8gaWYoY1tpYT4+Ml18MCl7aWYoZVsoY1tZPj4yXXwwKSs2ND4+MV0mNClicmVhaztpZigoY1taPj4yXXwwKT09MD8oV0coY1twYT4+Ml18MCl8MCk9PTA6MClicmVhaztjW3lhPj4yXT0wO0hBKGNbQmE+PjJdfDAsY1t5YSsyMD4+Ml18MCl8MH13aGlsZSgwKTtjW1g+PjJdPXd4KGNbQmE+PjJdfDApfDA7RUMoY1tPPj4yXXwwKTtpZihjW1o+PjJdfDApangoY1tCYT4+Ml18MCwxMjAsY1t3YSs0Pj4yXXwwLGNbemE+PjJdfDAsY1tBYT4+Ml18MCl8MDtjW2ZhPj4yXT0wO3doaWxlKDEpe2lmKChjW2ZhPj4yXXwwKT49KGNbY1tsYT4+Ml0+PjJdfDApKWJyZWFrO2lmKGNbWj4+Ml18MClqeChjW0JhPj4yXXwwLDk2LGNbQWE+PjJdfDAsY1tmYT4+Ml18MCwoY1tiYT4+Ml18MCkrKGNbZmE+PjJdfDApfDApfDA7ZWxzZXthW3dhPj4wXT0xO1JBKGNbTz4+Ml18MCxjWyhjWyhjW2xhPj4yXXwwKSs0Pj4yXXwwKSsoKGNbZmE+PjJdfDApKjIwfDApPj4yXXwwLChjW2JhPj4yXXwwKSsoY1tmYT4+Ml18MCl8MCl9Y1tmYT4+Ml09KGNbZmE+PjJdfDApKzF9c2E9Y1tCYT4+Ml18MDt1YT1jWyQ+PjJdfDA7emE9Y1tiYT4+Ml18MDtBYT1jW2NbbGE+PjJdPj4yXXwwO214KHNhLDk1LHVhLHphLEFhLG5BKGNbbmE+PjJdfDApfDAsLTYpfDA7Y1tSPj4yXT13eChjW0JhPj4yXXwwKXwwO2p4KGNbQmE+PjJdfDAsMTgsKGNbUj4+Ml18MCkrMXwwLDAsKGNbUj4+Ml18MCkrMXwwKXwwO1hHKGNbTz4+Ml18MCxjW2JhPj4yXXwwLGNbJD4+Ml18MCxjW2NbbGE+PjJdPj4yXXwwKTtpeChjW0JhPj4yXXwwLDE0LGNbdGE+PjJdfDAsY1tUPj4yXXwwKXwwO2l4KGNbQmE+PjJdfDAsNjYsY1thYT4+Ml18MCxjW1M+PjJdfDApfDA7aXgoY1tCYT4+Ml18MCwxNCxjW3ZhPj4yXXwwLGNbVT4+Ml18MCl8MDtaeihjW0JhPj4yXXwwLGNbUj4+Ml18MCk7WUcoY1tPPj4yXXwwLHdhKTtpeChjW0JhPj4yXXwwLDc2LDEsY1tlYT4+Ml18MCl8MDtpZihjW1o+PjJdfDApaXgoY1tCYT4+Ml18MCwzLGNbd2ErND4+Ml18MCxjW1g+PjJdfDApfDA7ZWxzZXtyRChjW3BhPj4yXXwwKTtIQShjW0JhPj4yXXwwLGNbVz4+Ml18MCl8MH1peChjW0JhPj4yXXwwLDE0LGNbdGE+PjJdfDAsY1tUPj4yXXwwKXwwO1l6KGNbQmE+PjJdfDAsY1tTPj4yXXwwKXwwO2NbVj4+Ml09d3goY1tCYT4+Ml18MCl8MDtpeChjW0JhPj4yXXwwLDc2LDEsY1thYT4+Ml18MCl8MDtTeihjW0JhPj4yXXwwLDcyLGNbdGE+PjJdfDApfDA7X3ooY1tCYT4+Ml18MCxjW1Q+PjJdfDApO2NbVD4+Ml09d3goY1tCYT4+Ml18MCl8MDtpeChjW0JhPj4yXXwwLDY2LGNbZWE+PjJdfDAsKGNbVD4+Ml18MCkrMnwwKXwwO1N6KGNbQmE+PjJdfDAsNzIsY1t0YT4+Ml18MCl8MDtaRyhjW08+PjJdfDAsd2EpO2lCKGNbTz4+Ml18MCxjW21hPj4yXXwwLChjW1Q+PjJdfDApKzF8MCwxNik7U0coY1tPPj4yXXwwLGNbUD4+Ml18MCxjW2NbUD4+Ml0+PjJdfDAsLTEseWEseGEsY1tRPj4yXXwwLChjW1Q+PjJdfDApKzF8MCxjW1Y+PjJdfDApO1N6KGNbQmE+PjJdfDAsNzIsY1t0YT4+Ml18MCl8MDtfeihjW0JhPj4yXXwwLGNbVT4+Ml18MCk7X0coY1tPPj4yXXwwLHdhKTtTeihjW0JhPj4yXXwwLDcyLGNbdmE+PjJdfDApfDB9ZWxzZXtjW0c+PjJdPTA7QWE9JEcoY1tQPj4yXXwwLHdhKXwwO2NbSz4+Ml09QWE7aWYoQWEpe2NbRD4+Ml09RmgoY1tjW08+PjJdPj4yXXwwLGNbKGNbSz4+Ml18MCkrNjQ+PjJdfDApfDA7emE9KGNbTz4+Ml18MCkrNDB8MDtBYT1jW3phPj4yXXwwO2NbemE+PjJdPUFhKzE7Y1tDPj4yXT1BYTtjW0k+PjJdPTA7Y1tGPj4yXT0wO2NbRT4+Ml09Y1soY1tLPj4yXXwwKSsyOD4+Ml07c3goY1tPPj4yXXwwLGNbRD4+Ml18MCk7VHooY1tPPj4yXXwwLGNbRD4+Ml18MCxjWyhjW0s+PjJdfDApKzI4Pj4yXXwwLDAsY1tjW0s+PjJdPj4yXXwwKTtpZihkWyhjW0s+PjJdfDApKzQyPj4wXSYzMiljW0Y+PjJdPUpqKGNbSz4+Ml18MCl8MDtjW0g+PjJdPWNbKGNbSz4+Ml18MCkrOD4+Ml07d2hpbGUoMSl7aWYoIShjW0g+PjJdfDApKWJyZWFrO2RvIGlmKCEoKGRbKGNbSD4+Ml18MCkrNTU+PjBdfDApPj4+MiYxKSl7aWYoKGJbKGNbSD4+Ml18MCkrNDg+PjFdfDApPj0oYlsoY1tLPj4yXXwwKSs0MD4+MV18MCkpYnJlYWs7aWYoY1soY1tIPj4yXXwwKSszNj4+Ml18MClicmVhaztpZigoY1tGPj4yXXwwKSE9MD8oYlsoY1tIPj4yXXwwKSs0OD4+MV18MCk+PShiWyhjW0Y+PjJdfDApKzQ4Pj4xXXwwKTowKWJyZWFrO2NbRj4+Ml09Y1tIPj4yXX13aGlsZSgwKTtjW0g+PjJdPWNbKGNbSD4+Ml18MCkrMjA+PjJdfWlmKGNbRj4+Ml18MCl7Y1tFPj4yXT1jWyhjW0Y+PjJdfDApKzQ0Pj4yXTtjW0k+PjJdPWhBKGNbTz4+Ml18MCxjW0Y+PjJdfDApfDB9SWgoY1tCYT4+Ml18MCwxMDQsY1tDPj4yXXwwLGNbRT4+Ml18MCxjW0Q+PjJdfDAsMSl8MDtpZihjW0k+PjJdfDApTWgoY1tCYT4+Ml18MCwtMSxjW0k+PjJdfDAsLTYpO2l4KGNbQmE+PjJdfDAsMTAwLGNbQz4+Ml18MCxjWyhjW3dhKzQwPj4yXXwwKSs4Pj4yXXwwKXwwO1N6KGNbQmE+PjJdfDAsMTExLGNbQz4+Ml18MCl8MDthSChjW08+PjJdfDAsY1tLPj4yXXwwLGNbRj4+Ml18MCl9ZWxzZXtjW0o+PjJdPTA7YVtCPj4wXT0wO2lmKCEoY1soY1tQPj4yXXwwKSs0MD4+Ml18MCkpYVtCPj4wXT1iSCh3YSxKKXwwO2RvIGlmKGFbQj4+MF18MCl7Y1tKPj4yXT1ReShjW1k+PjJdfDAsY1tKPj4yXXwwLDApfDA7Y1tHPj4yXT1jW0o+PjJdO2lmKGFbKGNbWT4+Ml18MCkrNjk+PjBdfDApYnJlYWs7YVsoY1soY1tKPj4yXXwwKSs0Pj4yXXwwKSsxMj4+MF09KGRbQj4+MF18MCkhPTE/MTowO2FbY1tjWyhjW0o+PjJdfDApKzQ+PjJdPj4yXT4+MF09LTEwNH13aGlsZSgwKTtfRyhjW08+PjJdfDAsd2EpO2NbcGE+PjJdPXFEKGNbTz4+Ml18MCxjW29hPj4yXXwwLGNbTD4+Ml18MCxjW0o+PjJdfDAsMCxkW0I+PjBdfDAsMCl8MDtpZighKGNbcGE+PjJdfDApKXtldihjW1k+PjJdfDAsY1tHPj4yXXwwKTticmVha31ZRyhjW08+PjJdfDAsd2EpO2lmKChPRyhjW3BhPj4yXXwwKXwwKT4wKXtBYT1jW0JhPj4yXXwwO1l6KEFhLFJHKGNbcGE+PjJdfDApfDApfDB9ckQoY1twYT4+Ml18MCk7WkcoY1tPPj4yXXwwLHdhKX1jW3lhPj4yXT0wO2lCKGNbTz4+Ml18MCxjW21hPj4yXXwwLGNbUz4+Ml18MCwxNik7U0coY1tPPj4yXXwwLGNbUD4+Ml18MCxjW2NbUD4+Ml0+PjJdfDAsLTEsMCwwLGNbUT4+Ml18MCxjW1M+PjJdfDAsY1tTPj4yXXwwKTtldihjW1k+PjJdfDAsY1tHPj4yXXwwKX1feihjW0JhPj4yXXwwLGNbUz4+Ml18MCl9aWYoKGRbeGErMT4+MF18MCk9PTMpVkcoY1tPPj4yXXwwLDM1NjQ5KTtpZihjW3lhPj4yXXwwKXtWRyhjW08+PjJdfDAsKGNbeWErND4+Ml18MCk+MD8zNTY2NzozNTY5MCk7Y0goY1tPPj4yXXwwLGNbUD4+Ml18MCx5YSxjW2Nba2E+PjJdPj4yXXwwLGNbUT4+Ml18MCl9X3ooY1tCYT4+Ml18MCxjW2NhPj4yXXwwKTtjW3JhPj4yXT0oY1soY1tPPj4yXXwwKSszNj4+Ml18MCk+MCYxfX13aGlsZSgwKTtjWyhjW08+PjJdfDApKzQyMD4+Ml09Y1tkYT4+Ml07aWYoKGNbcmE+PjJdfDApPT0wPyhkW2NbUT4+Ml0+PjBdfDApPT05OjApZEgoY1tPPj4yXXwwLGNbb2E+PjJdfDAsY1trYT4+Ml18MCk7VGYoY1tZPj4yXXwwLGNbd2ErMjg+PjJdfDApO1RmKGNbWT4+Ml18MCxjW3dhKzQwPj4yXXwwKTtjW04+PjJdPWNbcmE+PjJdO0JhPWNbTj4+Ml18MDtpPUNhO3JldHVybiBCYXwwfWNbTj4+Ml09MTtCYT1jW04+PjJdfDA7aT1DYTtyZXR1cm4gQmF8MH1mdW5jdGlvbiBRdihhLGIpe2E9YXwwO2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wO2w9aTtpPWkrMzJ8MDtrPWw7ZD1sKzI0fDA7ZT1sKzIwfDA7aj1sKzE2fDA7aD1sKzEyfDA7Zz1sKzh8MDtmPWwrNHwwO2NbZD4+Ml09YTtjW2U+PjJdPWI7aWYoIShjWyhjW2U+PjJdfDApKzQ4Pj4yXXwwKSl7aT1sO3JldHVybn1jW2o+PjJdPTA7Y1tmPj4yXT0wO2NbaD4+Ml09Y1tlPj4yXTt3aGlsZSgxKXtpZighKGNbaD4+Ml18MCkpYnJlYWs7Y1soY1toPj4yXXwwKSs1Mj4+Ml09Y1tqPj4yXTthPShjW2g+PjJdfDApKzh8MDtjW2E+PjJdPWNbYT4+Ml18MjU2O2Nbaj4+Ml09Y1toPj4yXTtjW2g+PjJdPWNbKGNbaD4+Ml18MCkrNDg+PjJdO2NbZj4+Ml09KGNbZj4+Ml18MCkrMX1pZihjWyhjW2U+PjJdfDApKzg+PjJdJjEwMjQpe2k9bDtyZXR1cm59YT1jWyhjW2NbZD4+Ml0+PjJdfDApKzk2KzE2Pj4yXXwwO2NbZz4+Ml09YTtpZigoYXwwKTw9MCl7aT1sO3JldHVybn1pZigoY1tmPj4yXXwwKTw9KGNbZz4+Ml18MCkpe2k9bDtyZXR1cm59RWgoY1tkPj4yXXwwLDM1NTc1LGspO2k9bDtyZXR1cm59ZnVuY3Rpb24gUnYoYSxiLGQsZSxmLGcsaCxqKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDt2YXIgaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MDt4PWk7aT1pKzQ4fDA7dj14O2s9eCs0NHwwO2w9eCs0MHwwO209eCszNnwwO249eCszMnwwO289eCsyOHwwO3A9eCsyNHwwO3E9eCsyMHwwO3I9eCsxNnwwO3M9eCsxMnwwO3U9eCs4fDA7dD14KzR8MDtjW2w+PjJdPWE7Y1ttPj4yXT1iO2Nbbj4+Ml09ZDtjW28+PjJdPWU7Y1twPj4yXT1mO2NbcT4+Ml09ZztjW3I+PjJdPWg7Y1tzPj4yXT1qO2NbdD4+Ml09Y1tjW2w+PjJdPj4yXTtpZigoY1ttPj4yXXwwKT09MD8oY1tyPj4yXXwwKSE9MHwoY1tzPj4yXXwwKSE9MDowKXtqPWNbbD4+Ml18MDtjW3Y+PjJdPShjW3I+PjJdfDApIT0wPzM1NTMwOjM1NTMzO0VoKGosMzU1Mzksdil9ZWxzZSB3PTQ7aWYoKCh3fDApPT00PyhjW20+PjJdPV92KGNbdD4+Ml18MCxjW20+PjJdfDAsY1tuPj4yXXwwLGNbbz4+Ml18MCl8MCwoY1ttPj4yXXwwKSE9MCk6MCk/KGNbY1ttPj4yXT4+Ml18MCkhPTA6MCl7Y1t1Pj4yXT0oY1ttPj4yXXwwKSs4KygoKGNbY1ttPj4yXT4+Ml18MCktMXwwKSo3MnwwKTtpZihjWyhjW3A+PjJdfDApKzQ+PjJdfDApe3c9VHcoY1t0Pj4yXXwwLGNbcD4+Ml18MCl8MDtjWyhjW3U+PjJdfDApKzEyPj4yXT13fWNbKGNbdT4+Ml18MCkrMjA+PjJdPWNbcT4+Ml07Y1soY1t1Pj4yXXwwKSs0OD4+Ml09Y1tyPj4yXTtjWyhjW3U+PjJdfDApKzUyPj4yXT1jW3M+PjJdO2Nbaz4+Ml09Y1ttPj4yXTt3PWNbaz4+Ml18MDtpPXg7cmV0dXJuIHd8MH1pdihjW3Q+PjJdfDAsY1tyPj4yXXwwKTtrdihjW3Q+PjJdfDAsY1tzPj4yXXwwKTtmdihjW3Q+PjJdfDAsY1txPj4yXXwwKTtjW2s+PjJdPTA7dz1jW2s+PjJdfDA7aT14O3JldHVybiB3fDB9ZnVuY3Rpb24gU3YoZCxlLGYsZyxoLGosayxsLG0sbil7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7bD1sfDA7bT1tfDA7bj1ufDA7dmFyIG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTA7Qj1pO2k9aSsxMjh8MDtvPUIrMTEyfDA7cD1CKzEwOHwwO3E9QisxMDR8MDtyPUIrMTAwfDA7cz1CKzk2fDA7dD1CKzkyfDA7dT1CKzg4fDA7dj1CKzg0fDA7dz1CKzgwfDA7eD1CKzc2fDA7ej1CKzcyfDA7QT1CKzR8MDt5PUI7Y1tvPj4yXT1kO2NbcD4+Ml09ZTtjW3E+PjJdPWY7Y1tyPj4yXT1nO2Nbcz4+Ml09aDtjW3Q+PjJdPWo7Y1t1Pj4yXT1rO2Nbdj4+Ml09bDtjW3c+PjJdPW07Y1t4Pj4yXT1uO2NbeT4+Ml09Y1tjW28+PjJdPj4yXTtsPVZ3KGNbeT4+Ml18MCw2OCwwKXwwO2Nbej4+Ml09bDtjW3o+PjJdPShjW3o+PjJdfDApPT0wP0E6bDtpZighKGNbcD4+Ml18MCkpe2w9Y1tvPj4yXXwwO2NbcD4+Ml09VHYobCwwLFd2KGNbeT4+Ml18MCwxNjAsMCl8MCl8MH1jW2Nbej4+Ml0+PjJdPWNbcD4+Ml07YVsoY1t6Pj4yXXwwKSs0Pj4wXT0xMTk7Y1soY1t6Pj4yXXwwKSs4Pj4yXT1jW3Y+PjJdO2NbKGNbej4+Ml18MCkrMTI+PjJdPTA7Y1soY1t6Pj4yXXwwKSsxNj4+Ml09MDtjWyhjW3o+PjJdfDApKzIwPj4yXT0tMTtjWyhjW3o+PjJdfDApKzIwKzQ+PjJdPS0xO2JbKGNbej4+Ml18MCkrNj4+MV09MDtpZighKGNbcT4+Ml18MCkpY1txPj4yXT1zaChjW3k+PjJdfDAsODAsMCl8MDtjWyhjW3o+PjJdfDApKzI4Pj4yXT1jW3E+PjJdO2NbKGNbej4+Ml18MCkrMzI+PjJdPWNbcj4+Ml07Y1soY1t6Pj4yXXwwKSszNj4+Ml09Y1tzPj4yXTtjWyhjW3o+PjJdfDApKzQwPj4yXT1jW3Q+PjJdO2NbKGNbej4+Ml18MCkrNDQ+PjJdPWNbdT4+Ml07Y1soY1t6Pj4yXXwwKSs0OD4+Ml09MDtjWyhjW3o+PjJdfDApKzUyPj4yXT0wO2NbKGNbej4+Ml18MCkrNTY+PjJdPWNbdz4+Ml07Y1soY1t6Pj4yXXwwKSs2MD4+Ml09Y1t4Pj4yXTtjWyhjW3o+PjJdfDApKzY0Pj4yXT0wO2lmKCEoYVsoY1t5Pj4yXXwwKSs2OT4+MF18MCkpe0E9Y1t6Pj4yXXwwO2k9QjtyZXR1cm4gQXwwfWd2KGNbeT4+Ml18MCxjW3o+PjJdfDAsKGNbej4+Ml18MCkhPShBfDApJjEpO2Nbej4+Ml09MDtBPWNbej4+Ml18MDtpPUI7cmV0dXJuIEF8MH1mdW5jdGlvbiBUdihhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTA7bD1pO2k9aSszMnwwO2Y9bCsyNHwwO209bCsyMHwwO2c9bCsxNnwwO2g9bCsxMnwwO2o9bCs4fDA7ZT1sKzR8MDtrPWw7Y1ttPj4yXT1hO2NbZz4+Ml09YjtjW2g+PjJdPWQ7Y1tqPj4yXT1jW2NbbT4+Ml0+PjJdO2lmKCEoY1tnPj4yXXwwKSl7Y1tnPj4yXT1WdyhjW2o+PjJdfDAsOCwwKXwwO2lmKChjW2c+PjJdfDApIT0wPyhjW2NbZz4+Ml0+PjJdPTAsbT1WdyhjW2o+PjJdfDAsMjAsMCl8MCxjWyhjW2c+PjJdfDApKzQ+PjJdPW0sKGNbKGNbZz4+Ml18MCkrND4+Ml18MCkhPTApOjApZT03O2Vsc2UgZT04fWVsc2UgaWYoIShjW2NbZz4+Ml0+PjJdJihjW2NbZz4+Ml0+PjJdfDApLTEpKXtjW2U+PjJdPVV3KGNbaj4+Ml18MCxjWyhjW2c+PjJdfDApKzQ+PjJdfDAsKGNbY1tnPj4yXT4+Ml08PDEpKjIwfDAsMCl8MDtpZighKGNbZT4+Ml18MCkpZT04O2Vsc2V7Y1soY1tnPj4yXXwwKSs0Pj4yXT1jW2U+PjJdO2U9N319ZWxzZSBlPTc7aWYoKGV8MCk9PTcpe2o9Y1tnPj4yXXwwO209Y1tqPj4yXXwwO2Nbaj4+Ml09bSsxO2Nbaz4+Ml09KGNbKGNbZz4+Ml18MCkrND4+Ml18MCkrKG0qMjB8MCk7bT1jW2s+PjJdfDA7Y1ttPj4yXT0wO2NbbSs0Pj4yXT0wO2NbbSs4Pj4yXT0wO2NbbSsxMj4+Ml09MDtjW20rMTY+PjJdPTA7Y1tjW2s+PjJdPj4yXT1jW2g+PjJdO2NbZj4+Ml09Y1tnPj4yXTttPWNbZj4+Ml18MDtpPWw7cmV0dXJuIG18MH1lbHNlIGlmKChlfDApPT04KXtpdihjW2o+PjJdfDAsY1toPj4yXXwwKTtldihjW2o+PjJdfDAsY1tnPj4yXXwwKTtjW2Y+PjJdPTA7bT1jW2Y+PjJdfDA7aT1sO3JldHVybiBtfDB9cmV0dXJuIDB9ZnVuY3Rpb24gVXYoYSxiLGQsZSl7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wO2w9aTtpPWkrMzJ8MDtmPWwrMTZ8MDtnPWwrMTJ8MDtoPWwrOHwwO2o9bCs0fDA7az1sO2NbZj4+Ml09YTtjW2c+PjJdPWI7Y1toPj4yXT1kO2Nbaj4+Ml09ZTtpZighKGNbZz4+Ml18MCkpe2k9bDtyZXR1cm59Y1trPj4yXT0oY1soY1tnPj4yXXwwKSs0Pj4yXXwwKSsoKChjW2NbZz4+Ml0+PjJdfDApLTF8MCkqMjB8MCk7YT1ZdyhjW2NbZj4+Ml0+PjJdfDAsY1tjW2g+PjJdPj4yXXwwLGNbKGNbaD4+Ml18MCkrND4+Ml18MCwwKXwwO2NbKGNbaz4+Ml18MCkrND4+Ml09YTtpZighKGNbaj4+Ml18MCkpe2k9bDtyZXR1cm59WncoY1soY1trPj4yXXwwKSs0Pj4yXXwwKTtpPWw7cmV0dXJufWZ1bmN0aW9uIFZ2KGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTA7aj1pO2k9aSszMnwwO2s9aisxNnwwO2U9aisxMnwwO2Y9ais4fDA7Zz1qKzR8MDtoPWo7Y1trPj4yXT1hO2NbZT4+Ml09YjtjW2Y+PjJdPWQ7Y1tnPj4yXT1jW2Nbaz4+Ml0+PjJdO2lmKCEoY1tlPj4yXXwwKSl7aT1qO3JldHVybn1jW2g+PjJdPShjWyhjW2U+PjJdfDApKzQ+PjJdfDApKygoKGNbY1tlPj4yXT4+Ml18MCktMXwwKSoyMHwwKTtUZihjW2c+PjJdfDAsY1soY1toPj4yXXwwKSs4Pj4yXXwwKTtrPShjWyhjW2Y+PjJdfDApKzg+PjJdfDApLShjWyhjW2Y+PjJdfDApKzQ+PjJdfDApfDA7az1ZdyhjW2c+PjJdfDAsY1soY1tmPj4yXXwwKSs0Pj4yXXwwLGssKChrfDApPDApPDwzMT4+MzEpfDA7Y1soY1toPj4yXXwwKSs4Pj4yXT1rO2k9ajtyZXR1cm59ZnVuY3Rpb24gV3YoYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wO2o9aTtpPWkrMzJ8MDtmPWorMTZ8MDtnPWorMTJ8MDtlPWorOHwwO2g9ajtjW2Y+PjJdPWE7Y1tnPj4yXT1iO2NbZT4+Ml09ZDtjW2g+PjJdPWNbZT4+Ml07aWYoY1tlPj4yXXwwKWU9SmYoY1tlPj4yXXwwKXwwO2Vsc2UgZT0wO2NbaCs0Pj4yXT1lO2g9ancoY1tmPj4yXXwwLGNbZz4+Ml18MCxoLDApfDA7aT1qO3JldHVybiBofDB9ZnVuY3Rpb24gWHYoYil7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wO2Y9aTtpPWkrMTZ8MDtkPWYrNHwwO2U9ZjtjW2Q+PjJdPWI7aWYoIShjW2Q+PjJdfDApKXtpPWY7cmV0dXJufWNbZT4+Ml09KGNbY1tkPj4yXT4+Ml18MCktMTt3aGlsZSgxKXtpZigoY1tlPj4yXXwwKTw9MClicmVhazthWyhjW2Q+PjJdfDApKzgrKChjW2U+PjJdfDApKjcyfDApKzM2Pj4wXT1hWyhjW2Q+PjJdfDApKzgrKCgoY1tlPj4yXXwwKS0xfDApKjcyfDApKzM2Pj4wXXwwO2NbZT4+Ml09KGNbZT4+Ml18MCkrLTF9YVsoY1tkPj4yXXwwKSs4KzM2Pj4wXT0wO2k9ZjtyZXR1cm59ZnVuY3Rpb24gWXYoYixkLGUpe2I9YnwwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wO2s9aTtpPWkrMTZ8MDtmPWsrMTJ8MDtnPWsrOHwwO2g9ays0fDA7aj1rO2NbZj4+Ml09YjtjW2c+PjJdPWQ7Y1toPj4yXT1lO2lmKCEoY1tnPj4yXXwwKSl7aT1rO3JldHVybn1pZigoY1tjW2c+PjJdPj4yXXwwKTw9MCl7aT1rO3JldHVybn1jW2o+PjJdPShjW2c+PjJdfDApKzgrKCgoY1tjW2c+PjJdPj4yXXwwKS0xfDApKjcyfDApO2lmKChjWyhjW2g+PjJdfDApKzQ+PjJdfDApPT0xPyhjW2NbaD4+Ml0+PjJdfDApPT0wOjApe2I9KGNbaj4+Ml18MCkrMzYrMXwwO2FbYj4+MF09YVtiPj4wXSYtMnwxO2k9aztyZXR1cm59Yj1UdyhjW2NbZj4+Ml0+PjJdfDAsY1toPj4yXXwwKXwwO2NbKGNbaj4+Ml18MCkrNjQ+PjJdPWI7Yj0oY1tqPj4yXXwwKSszNisxfDA7YVtiPj4wXT1hW2I+PjBdJi0zfCgoY1soY1tqPj4yXXwwKSs2ND4+Ml18MCkhPTAmMSk8PDEmMjU1O2k9aztyZXR1cm59ZnVuY3Rpb24gWnYoYixkLGUpe2I9YnwwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wO2s9aTtpPWkrMTZ8MDtmPWsrMTJ8MDtnPWsrOHwwO2g9ays0fDA7aj1rO2NbZj4+Ml09YjtjW2c+PjJdPWQ7Y1toPj4yXT1lO2lmKGNbZz4+Ml18MCl7Y1tqPj4yXT0oY1tnPj4yXXwwKSs4KygoKGNbY1tnPj4yXT4+Ml18MCktMXwwKSo3MnwwKTtjWyhjW2o+PjJdfDApKzY0Pj4yXT1jW2g+PjJdO2I9KGNbaj4+Ml18MCkrMzYrMXwwO2FbYj4+MF09YVtiPj4wXSYtNXw0O2k9aztyZXR1cm59ZWxzZXtldihjW2NbZj4+Ml0+PjJdfDAsY1toPj4yXXwwKTtpPWs7cmV0dXJufX1mdW5jdGlvbiBfdihiLGQsZSxmKXtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MDtvPWk7aT1pKzMyfDA7Zz1vKzI0fDA7aD1vKzIwfDA7aj1vKzE2fDA7az1vKzEyfDA7bD1vKzh8MDttPW8rNHwwO249bztjW2g+PjJdPWI7Y1tqPj4yXT1kO2Nbaz4+Ml09ZTtjW2w+PjJdPWY7ZG8gaWYoIShjW2o+PjJdfDApKXtjW2o+PjJdPVZ3KGNbaD4+Ml18MCw4MCwwKXwwO2lmKGNbaj4+Ml18MCl7Y1soY1tqPj4yXXwwKSs0Pj4yXT0xO2NbY1tqPj4yXT4+Ml09MDticmVha31jW2c+PjJdPTA7bj1jW2c+PjJdfDA7aT1vO3JldHVybiBufDB9d2hpbGUoMCk7Y1tqPj4yXT1ERyhjW2g+PjJdfDAsY1tqPj4yXXwwLDEsY1tjW2o+PjJdPj4yXXwwKXwwO2lmKGFbKGNbaD4+Ml18MCkrNjk+PjBdfDApe2h2KGNbaD4+Ml18MCxjW2o+PjJdfDApO2NbZz4+Ml09MDtuPWNbZz4+Ml18MDtpPW87cmV0dXJuIG58MH1jW20+PjJdPShjW2o+PjJdfDApKzgrKCgoY1tjW2o+PjJdPj4yXXwwKS0xfDApKjcyfDApO2lmKChjW2w+PjJdfDApIT0wPyhjW2NbbD4+Ml0+PjJdfDApPT0wOjApY1tsPj4yXT0wO2lmKGNbbD4+Ml18MCl7Y1tuPj4yXT1jW2w+PjJdO2NbbD4+Ml09Y1trPj4yXTtjW2s+PjJdPWNbbj4+Ml19bj1UdyhjW2g+PjJdfDAsY1trPj4yXXwwKXwwO2NbKGNbbT4+Ml18MCkrOD4+Ml09bjtuPVR3KGNbaD4+Ml18MCxjW2w+PjJdfDApfDA7Y1soY1ttPj4yXXwwKSs0Pj4yXT1uO2NbZz4+Ml09Y1tqPj4yXTtuPWNbZz4+Ml18MDtpPW87cmV0dXJuIG58MH1mdW5jdGlvbiAkdihhLGIsZSxmKXthPWF8MDtiPWJ8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MDt1PWk7aT1pKzgwfDA7cj11KzE2fDA7cT11O2c9dSs2NHwwO2g9dSs2MHwwO2o9dSs1NnwwO2s9dSs1MnwwO289dSs0OHwwO2w9dSszNnwwO3A9dSszMnwwO209dSsyOHwwO249dSsyNHwwO3M9dSsyMHwwO2NbZz4+Ml09YTtjW2g+PjJdPWI7Y1tqPj4yXT1lO2Nbaz4+Ml09ZjtjW28+PjJdPTA7Y1tsPj4yXT1jW2g+PjJdO2NbbCs0Pj4yXT1jW2o+PjJdO2NbbCs4Pj4yXT1jW2s+PjJdO2NbbT4+Ml09MDt3aGlsZSgxKXtpZigoY1ttPj4yXXwwKT49MylicmVhaztpZighKGNbbCsoY1ttPj4yXTw8Mik+PjJdfDApKWJyZWFrO2NbcD4+Ml09Y1tsKyhjW20+PjJdPDwyKT4+Ml07Y1tuPj4yXT0wO3doaWxlKDEpe2lmKChjW24+PjJdfDApPj03KWJyZWFrO2lmKChjWyhjW3A+PjJdfDApKzQ+PjJdfDApPT0oZFszNTM3NCsoKGNbbj4+Ml18MCkqM3wwKSsxPj4wXXwwfDApPyh6ZChjW2NbcD4+Ml0+PjJdfDAsMzUzOTUrKGRbMzUzNzQrKChjW24+PjJdfDApKjN8MCk+PjBdfDApfDAsY1soY1twPj4yXXwwKSs0Pj4yXXwwKXwwKT09MDowKXt0PTg7YnJlYWt9Y1tuPj4yXT0oY1tuPj4yXXwwKSsxfWlmKCh0fDApPT04KXt0PTA7Y1tvPj4yXT1jW28+PjJdfChkWzM1Mzc0KygoY1tuPj4yXXwwKSozfDApKzI+PjBdfDApfWlmKChjW24+PjJdfDApPj03KXt0PTExO2JyZWFrfWNbbT4+Ml09KGNbbT4+Ml18MCkrMX1pZigodHwwKT09MTEpY1tvPj4yXT1jW28+PjJdfDY0O2lmKChjW28+PjJdJjMzfDApIT0zMz8oY1tvPj4yXSY2NHwwKT09MDowKXtpZighKGNbbz4+Ml0mMzIpKXt0PWNbbz4+Ml18MDtpPXU7cmV0dXJuIHR8MH1pZigoY1tvPj4yXSYyNHwwKT09OCl7dD1jW28+PjJdfDA7aT11O3JldHVybiB0fDB9RWgoY1tnPj4yXXwwLDM1NDc1LHIpO2Nbbz4+Ml09MTt0PWNbbz4+Ml18MDtpPXU7cmV0dXJuIHR8MH1jW3M+PjJdPTM1NDI5O2lmKCEoY1trPj4yXXwwKSljW3M+PjJdPShjW3M+PjJdfDApKzE7dD1jW2c+PjJdfDA7YT1jW2o+PjJdfDA7cj1jW3M+PjJdfDA7cz1jW2s+PjJdfDA7Y1txPj4yXT1jW2g+PjJdO2NbcSs0Pj4yXT1hO2NbcSs4Pj4yXT1yO2NbcSsxMj4+Ml09cztFaCh0LDM1NDMxLHEpO2Nbbz4+Ml09MTt0PWNbbz4+Ml18MDtpPXU7cmV0dXJuIHR8MH1mdW5jdGlvbiBhdyhiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MDtnPWk7aT1pKzE2fDA7ZT1nKzR8MDtmPWc7Y1tlPj4yXT1iO2NbZj4+Ml09ZDtpZigoY1tlPj4yXXwwKT09MHwoY1tmPj4yXXwwKTwwKXtpPWc7cmV0dXJufWFbKGNbKGNbZT4+Ml18MCkrND4+Ml18MCkrKCgoY1tjW2U+PjJdPj4yXXwwKS0xfDApKjIwfDApKzEyPj4wXT1jW2Y+PjJdO2k9ZztyZXR1cm59ZnVuY3Rpb24gYncoYixkLGUpe2I9YnwwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTA7aj1pO2k9aSsxNnwwO2Y9ais0fDA7Zz1qO2g9ais4fDA7Y1tmPj4yXT1iO2NbZz4+Ml09ZDthW2g+PjBdPWU7aWYoIShjW2c+PjJdfDApKXtpPWo7cmV0dXJufWNbKGNbZz4+Ml18MCkrND4+Ml09Y1soY1tmPj4yXXwwKSs0NzI+PjJdO2NbKGNbZj4+Ml18MCkrNDcyPj4yXT1jW2c+PjJdO2lmKCEoYVtoPj4wXXwwKSl7aT1qO3JldHVybn1jWyhjW2Y+PjJdfDApKzQ3Nj4+Ml09Y1tnPj4yXTtpPWo7cmV0dXJufWZ1bmN0aW9uIGN3KGYsZyxoKXtmPWZ8MDtnPWd8MDtoPWh8MDt2YXIgaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTAsRT0wLEY9MCxHPTAsSD0wLEk9MCxKPTAsSz0wLEw9MCxNPTAsTj0wLE89MCxQPTAsUT0wLFI9MCxTPTAsVD0wLFU9MCxWPTAsVz0wLFg9MDtYPWk7aT1pKzE5MnwwO0c9WCsxNzZ8MDtIPVgrMTcyfDA7ST1YKzE2OHwwO1c9WCsxNjR8MDtVPVgrMTYwfDA7TT1YKzE1NnwwO0Y9WCsxNTJ8MDtTPVgrMTQ4fDA7bj1YKzE0NHwwO049WCsxNDB8MDtQPVgrMTM2fDA7bz1YKzEzMnwwO0w9WCsxMjh8MDtWPVgrMTIwfDA7cj1YKzg4fDA7bD1YKzg0fDA7Uj1YKzgwfDA7cT1YKzc2fDA7eT1YKzcyfDA7dj1YKzY0fDA7Sj1YKzYwfDA7VD1YKzU2fDA7bT1YKzUyfDA7cD1YKzE4NHwwO0E9WCs0OHwwO0M9WCsxODJ8MDtPPVgrNDR8MDtCPVgrNDB8MDt1PVgrMzZ8MDtLPVgrMzJ8MDtqPVgrMjh8MDt3PVgrMjR8MDtRPVgrMjB8MDtEPVgrMTZ8MDtzPVgrMTgwfDA7az1YKzEyfDA7RT1YKzh8MDt4PVgrNHwwO3o9WDtjW0c+PjJdPWY7Y1tIPj4yXT1nO2NbST4+Ml09aDtjW04+PjJdPTA7Y1tQPj4yXT0wO2NbUj4+Ml09LTE7Y1tKPj4yXT0wO2NbbT4+Ml09MDtiW3A+PjFdPTE7Y1tPPj4yXT0wO2NbQj4+Ml09MDtjW3U+PjJdPTA7Y1tLPj4yXT0wO2Nbaj4+Ml09MDtjW1Y+PjJdPTA7Y1tWKzQ+PjJdPTA7Y1tMPj4yXT1jW2NbRz4+Ml0+PjJdO2E6ZG8gaWYoKChjWyhjW0c+PjJdfDApKzM2Pj4yXXwwKT09MD8oZFsoY1tMPj4yXXwwKSs2OT4+MF18MCk9PTA6MCk/KGNbVT4+Ml09YkMoY1tHPj4yXXwwLGNbSD4+Ml18MCl8MCwoY1tVPj4yXXwwKSE9MCk6MCl7Y1tEPj4yXT1UQyhjW0c+PjJdfDAsY1tVPj4yXXwwLDEwOSwwLDApfDA7Y1tRPj4yXT0oY1soY1tVPj4yXXwwKSsxMj4+Ml18MCkhPTAmMTtpZihjW0Q+PjJdfDApZj0xO2Vsc2UgZj0obEYoY1tHPj4yXXwwLGNbVT4+Ml18MCwwLDApfDApIT0wO2Nbdz4+Ml09ZiYxO2lmKCgoVHgoY1tHPj4yXXwwLGNbVT4+Ml18MCl8MCk9PTA/KFVDKGNbRz4+Ml18MCxjW1U+PjJdfDAsKGNbRD4+Ml18MCkhPTA/MTowKXwwKT09MDowKT8oY1tsPj4yXT1GaChjW0w+PjJdfDAsY1soY1tVPj4yXXwwKSs2ND4+Ml18MCl8MCxjW3E+PjJdPWF4KGNbRz4+Ml18MCw5LGNbY1tVPj4yXT4+Ml18MCwwLGNbKGNbKGNbTD4+Ml18MCkrMTY+PjJdfDApKyhjW2w+PjJdPDw0KT4+Ml18MCl8MCwoY1txPj4yXXwwKSE9MSk6MCl7Zz0oY1tHPj4yXXwwKSs0MHwwO2g9Y1tnPj4yXXwwO2NbZz4+Ml09aCsxO2NbKGNbSD4+Ml18MCkrOCs0ND4+Ml09aDtjW24+PjJdPWg7Y1tvPj4yXT0wO2NbUz4+Ml09Y1soY1tVPj4yXXwwKSs4Pj4yXTt3aGlsZSgxKXtpZighKGNbUz4+Ml18MCkpYnJlYWs7aD0oY1tHPj4yXXwwKSs0MHwwO2NbaD4+Ml09KGNbaD4+Ml18MCkrMTtjW1M+PjJdPWNbKGNbUz4+Ml18MCkrMjA+PjJdO2Nbbz4+Ml09KGNbbz4+Ml18MCkrMX1pZihjW1E+PjJdfDApeUcoY1tHPj4yXXwwLFYsY1tjW1U+PjJdPj4yXXwwKTtjW1c+PjJdPWR4KGNbRz4+Ml18MCl8MDtpZihjW1c+PjJdfDApe2lmKCEoZFsoY1tHPj4yXXwwKSsxOD4+MF18MCkpVkMoY1tXPj4yXXwwKTtyeChjW0c+PjJdfDAsMSxjW2w+PjJdfDApO2lmKGNbUT4+Ml18MCl7ekcoY1tHPj4yXXwwLGNbVT4+Ml18MCxjW0k+PjJdfDAsY1tuPj4yXXwwKTtoPWNbbj4+Ml18MDtjW1A+PjJdPWg7Y1tOPj4yXT1ofTtjW3I+PjJdPTA7Y1tyKzQ+PjJdPTA7Y1tyKzg+PjJdPTA7Y1tyKzEyPj4yXT0wO2NbcisxNj4+Ml09MDtjW3IrMjA+PjJdPTA7Y1tyKzI0Pj4yXT0wO2NbcisyOD4+Ml09MDtjW3I+PjJdPWNbRz4+Ml07Y1tyKzQ+PjJdPWNbSD4+Ml07aWYoIShBeShyLGNbST4+Ml18MCl8MCkpe2lmKGNbKGNbTD4+Ml18MCkrMjQ+PjJdJjEyOCl7Zz0oY1tHPj4yXXwwKSs0NHwwO2g9KGNbZz4+Ml18MCkrMXwwO2NbZz4+Ml09aDtjW1I+PjJdPWg7aXgoY1tXPj4yXXwwLDc2LDAsY1tSPj4yXXwwKXwwfWI6ZG8gaWYoISgoY1txPj4yXXwwKT09MCYoY1tJPj4yXXwwKT09MF4xfChjW3c+PjJdfDApIT0wKT8oZFsoY1tVPj4yXXwwKSs0Mj4+MF0mMTZ8MCk9PTA6MCl7VHooY1tHPj4yXXwwLGNbbD4+Ml18MCxjWyhjW1U+PjJdfDApKzI4Pj4yXXwwLDEsY1tjW1U+PjJdPj4yXXwwKTtpZighKGRbKGNbVT4+Ml18MCkrNDI+PjBdJjMyKSlteChjW1c+PjJdfDAsMTMxLGNbKGNbVT4+Ml18MCkrMjg+PjJdfDAsY1tsPj4yXXwwLGNbUj4+Ml18MCxjW2NbVT4+Ml0+PjJdfDAsLTIpfDA7Y1tTPj4yXT1jWyhjW1U+PjJdfDApKzg+PjJdO3doaWxlKDEpe2lmKCEoY1tTPj4yXXwwKSlicmVhayBiO2l4KGNbVz4+Ml18MCwxMzEsY1soY1tTPj4yXXwwKSs0ND4+Ml18MCxjW2w+PjJdfDApfDA7Y1tTPj4yXT1jWyhjW1M+PjJdfDApKzIwPj4yXX19ZWxzZSB0PTI5O3doaWxlKDApO2M6ZG8gaWYoKHR8MCk9PTI5KXtiW3M+PjFdPTEwNDQ7aWYoZVtyKzI4Pj4xXSY2NCljW3c+PjJdPTE7YltzPj4xXT1lW3M+PjFdfCgoY1t3Pj4yXXwwKSE9MD8wOjgpO2lmKCEoZFsoY1tVPj4yXXwwKSs0Mj4+MF0mMzIpKXtjW1Q+PjJdPTA7YltwPj4xXT0xO3I9KGNbRz4+Ml18MCkrNDR8MDt0PShjW3I+PjJdfDApKzF8MDtjW3I+PjJdPXQ7Y1tCPj4yXT10O2l4KGNbVz4+Ml18MCw3OSwwLGNbQj4+Ml18MCl8MH1lbHNle2NbVD4+Ml09SmooY1tVPj4yXXwwKXwwO2JbcD4+MV09YlsoY1tUPj4yXXwwKSs1MD4+MV18MDtjW20+PjJdPShjWyhjW0c+PjJdfDApKzQ0Pj4yXXwwKSsxO3I9KGNbRz4+Ml18MCkrNDR8MDtjW3I+PjJdPShjW3I+PjJdfDApKyhiW3A+PjFdfDApO3I9KGNbRz4+Ml18MCkrNDB8MDt0PWNbcj4+Ml18MDtjW3I+PjJdPXQrMTtjW08+PjJdPXQ7Y1tqPj4yXT1peChjW1c+PjJdfDAsMTA3LGNbTz4+Ml18MCxiW3A+PjFdfDApfDA7VnooY1tHPj4yXXwwLGNbVD4+Ml18MCl9Y1tGPj4yXT1xRChjW0c+PjJdfDAsY1tIPj4yXXwwLGNbST4+Ml18MCwwLDAsYltzPj4xXXwwLChjW24+PjJdfDApKzF8MCl8MDtpZighKGNbRj4+Ml18MCkpYnJlYWsgYTtjW3k+PjJdPUJHKGNbRj4+Ml18MCx2KXwwO2lmKGNbKGNbTD4+Ml18MCkrMjQ+PjJdJjEyOClpeChjW1c+PjJdfDAsOTEsY1tSPj4yXXwwLDEpfDA7ZG8gaWYoY1tUPj4yXXwwKXtjW00+PjJdPTA7d2hpbGUoMSl7aWYoKGNbTT4+Ml18MCk+PShiW3A+PjFdfDApKWJyZWFrO05BKGNbVz4+Ml18MCxjW1U+PjJdfDAsY1tuPj4yXXwwLGJbKGNbKGNbVD4+Ml18MCkrND4+Ml18MCkrKGNbTT4+Ml08PDEpPj4xXXwwLChjW20+PjJdfDApKyhjW00+PjJdfDApfDApO2NbTT4+Ml09KGNbTT4+Ml18MCkrMX1jW0E+PjJdPWNbbT4+Ml19ZWxzZXtjW0E+PjJdPShjWyhjW0c+PjJdfDApKzQ0Pj4yXXwwKSsxO2NbQT4+Ml09VEEoY1tHPj4yXXwwLGNbVT4+Ml18MCwtMSxjW24+PjJdfDAsY1tBPj4yXXwwLDApfDA7aWYoKGNbQT4+Ml18MCk8PShjWyhjW0c+PjJdfDApKzQ0Pj4yXXwwKSlicmVhaztjWyhjW0c+PjJdfDApKzQ0Pj4yXT1jW0E+PjJdfXdoaWxlKDApO2RvIGlmKCEoY1t5Pj4yXXwwKSlpZihjW1Q+PjJdfDApe3E9KGNbRz4+Ml18MCkrNDR8MDtvPShjW3E+PjJdfDApKzF8MDtjW3E+PjJdPW87Y1tBPj4yXT1vO2JbQz4+MV09MDtvPWNbVz4+Ml18MDtxPWNbbT4+Ml18MDtyPWJbcD4+MV18MDtzPWNbQT4+Ml18MDt0PUNDKGNbY1tHPj4yXT4+Ml18MCxjW1Q+PjJdfDApfDA7bXgobyw5OSxxLHIscyx0LGJbcD4+MV18MCl8MDtpeChjW1c+PjJdfDAsMTI2LGNbTz4+Ml18MCxjW0E+PjJdfDApfDA7YnJlYWt9ZWxzZXtiW0M+PjFdPTE7aXgoY1tXPj4yXXwwLDE0MixjW0I+PjJdfDAsY1tBPj4yXXwwKXwwO2JyZWFrfWVsc2V7YltDPj4xXT1iW3A+PjFdfDA7dD0oY1tvPj4yXXwwKSsyfDA7Y1tKPj4yXT1WdyhjW0w+PjJdfDAsdCwoKHR8MCk8MCk8PDMxPj4zMSl8MDtpZighKGNbSj4+Ml18MCkpe3JEKGNbRj4+Ml18MCk7YnJlYWsgYX1WUihjW0o+PjJdfDAsMSwoY1tvPj4yXXwwKSsxfDApfDA7YVsoY1tKPj4yXXwwKSsoKGNbbz4+Ml18MCkrMSk+PjBdPTA7aWYoKGNbdj4+Ml18MCk+PTApYVsoY1tKPj4yXXwwKSsoKGNbdj4+Ml18MCktKGNbbj4+Ml18MCkpPj4wXT0wO2lmKChjW3YrND4+Ml18MCk+PTApYVsoY1tKPj4yXXwwKSsoKGNbdis0Pj4yXXwwKS0oY1tuPj4yXXwwKSk+PjBdPTA7aWYoIShjW2o+PjJdfDApKWJyZWFrO0hBKGNbVz4+Ml18MCxjW2o+PjJdfDApfDB9d2hpbGUoMCk7aWYoY1t5Pj4yXXwwKWNbdT4+Ml09V3ooY1tXPj4yXXwwKXwwO2Vsc2UgckQoY1tGPj4yXXwwKTtkbyBpZighKGNbUT4+Ml18MCkpe2Nbaz4+Ml09MDtpZigoY1t5Pj4yXXwwKT09MiljW2s+PjJdPWZ4KGNbVz4+Ml18MCwyMCl8MDtGQyhjW0c+PjJdfDAsY1tVPj4yXXwwLDEwNSw4LGNbbj4+Ml18MCxjW0o+PjJdfDAsTixQKXwwO2lmKChjW3k+PjJdfDApIT0yKWJyZWFrO1p6KGNbVz4+Ml18MCxjW2s+PjJdfDApfXdoaWxlKDApO2RvIGlmKCEoY1t5Pj4yXXwwKSl7Zj1jW1c+PjJdfDA7aWYoY1tUPj4yXXwwKXtjW0s+PjJdPVN6KGYsNTcsY1tPPj4yXXwwKXwwO2l4KGNbVz4+Ml18MCwxMjEsY1tPPj4yXXwwLGNbQT4+Ml18MCl8MDticmVha31lbHNle2NbSz4+Ml09angoZiw2MixjW0I+PjJdfDAsMCxjW0E+PjJdfDApfDA7YnJlYWt9fWVsc2V7aWYoZFsoY1tVPj4yXXwwKSs0Mj4+MF0mMTYpYnJlYWs7aWYoIShkWyhjW0o+PjJdfDApKygoY1tOPj4yXXwwKS0oY1tuPj4yXXwwKSk+PjBdfDApKWJyZWFrO0loKGNbVz4+Ml18MCwzMCxjW04+PjJdfDAsY1t1Pj4yXXwwLGNbQT4+Ml18MCxiW0M+PjFdfDApfDB9d2hpbGUoMCk7ZG8gaWYoZFsoY1tVPj4yXXwwKSs0Mj4+MF0mMTYpe2NbRT4+Ml09VXgoY1tMPj4yXXwwLGNbVT4+Ml18MCl8MDtkRChjW0c+PjJdfDAsY1tVPj4yXXwwKTtteChjW1c+PjJdfDAsMTIsMCwxLGNbQT4+Ml18MCxjW0U+PjJdfDAsLTEwKXwwO0poKGNbVz4+Ml18MCwyKTtWeChjW0c+PjJdfDApO2lmKChjW3k+PjJdfDApIT0xKWJyZWFrO2lmKGNbKGNbRz4+Ml18MCkrMTI0Pj4yXXwwKWJyZWFrO2FbKGNbRz4+Ml18MCkrMjA+PjBdPTB9ZWxzZXtjW3g+PjJdPShkWyhjW0c+PjJdfDApKzE4Pj4wXXwwKT09MCYxO2Nbej4+Ml09LTE7ZG8gaWYoIShjW3c+PjJdfDApKXtpZigoY1t2KzQ+PjJdfDApPT0oY1tOPj4yXXwwKSlicmVhaztjW3o+PjJdPWNbdis0Pj4yXX13aGlsZSgwKTtuRihjW0c+PjJdfDAsY1tVPj4yXXwwLGNbRD4+Ml18MCxjW04+PjJdfDAsY1tQPj4yXXwwLGNbQT4+Ml18MCxiW0M+PjFdfDAsY1t4Pj4yXSYyNTUsMTAsY1t5Pj4yXSYyNTUsY1t6Pj4yXXwwKX13aGlsZSgwKTtkbyBpZighKGNbeT4+Ml18MCkpe2Y9Y1tXPj4yXXwwO2lmKGNbVD4+Ml18MCl7aXgoZiw3LGNbTz4+Ml18MCwoY1tLPj4yXXwwKSsxfDApfDA7WnooY1tXPj4yXXwwLGNbSz4+Ml18MCk7YnJlYWt9ZWxzZXtZeihmLGNbSz4+Ml18MCl8MDtaeihjW1c+PjJdfDAsY1tLPj4yXXwwKTticmVha319ZWxzZXtfeihjW1c+PjJdfDAsY1t1Pj4yXXwwKTtyRChjW0Y+PjJdfDApfXdoaWxlKDApO2lmKGNbUT4+Ml18MClicmVhaztpZihkWyhjW1U+PjJdfDApKzQyPj4wXSYxNilicmVhaztpZighKGNbVD4+Ml18MCkpU3ooY1tXPj4yXXwwLDExMSxjW04+PjJdfDApfDA7Y1tNPj4yXT0wO2NbUz4+Ml09Y1soY1tVPj4yXXwwKSs4Pj4yXTt3aGlsZSgxKXtpZighKGNbUz4+Ml18MCkpYnJlYWsgYztTeihjW1c+PjJdfDAsMTExLChjW1A+PjJdfDApKyhjW00+PjJdfDApfDApfDA7Y1tNPj4yXT0oY1tNPj4yXXwwKSsxO2NbUz4+Ml09Y1soY1tTPj4yXXwwKSsyMD4+Ml19fXdoaWxlKDApO2lmKChkWyhjW0c+PjJdfDApKzE4Pj4wXXwwKT09MD8oY1soY1tHPj4yXXwwKSsxMjg+PjJdfDApPT0wOjApaEQoY1tHPj4yXXwwKTtpZigoKGNbKGNbTD4+Ml18MCkrMjQ+PjJdJjEyOHwwKSE9MD8oYVsoY1tHPj4yXXwwKSsxOD4+MF18MCk9PTA6MCk/KGNbKGNbRz4+Ml18MCkrMTI4Pj4yXXwwKT09MDowKXtpeChjW1c+PjJdfDAsODcsY1tSPj4yXXwwLDEpfDA7bUMoY1tXPj4yXXwwLDEpO25DKGNbVz4+Ml18MCwwLDAsMzUzNjEsMCl8MH19fX19d2hpbGUoMCk7Q0coVik7aHYoY1tMPj4yXXwwLGNbSD4+Ml18MCk7aXYoY1tMPj4yXXwwLGNbST4+Ml18MCk7VGYoY1tMPj4yXXwwLGNbSj4+Ml18MCk7aT1YO3JldHVybn1mdW5jdGlvbiBkdyhhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wO2s9aTtpPWkrMzJ8MDtqPWs7ZT1rKzE2fDA7Zj1rKzEyfDA7Zz1rKzh8MDtoPWsrNHwwO2NbZT4+Ml09YTtjW2Y+PjJdPWI7Y1tnPj4yXT1kO2NbaD4+Ml09Y1soY1tjW2U+PjJdPj4yXXwwKSs5Nis4Pj4yXTtpZighKGNbZj4+Ml18MCkpe2k9aztyZXR1cm59aWYoKGNbY1tmPj4yXT4+Ml18MCk8PShjW2g+PjJdfDApKXtpPWs7cmV0dXJufWQ9Y1tlPj4yXXwwO2Nbaj4+Ml09Y1tnPj4yXTtFaChkLDM1MzM4LGopO2k9aztyZXR1cm59ZnVuY3Rpb24gZXcoZixnLGgsaixrKXtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDtrPWt8MDt2YXIgbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wLEU9MCxGPTAsRz0wLEg9MCxJPTAsSj0wLEs9MCxMPTAsTT0wLE49MCxPPTAsUD0wLFE9MCxSPTAsUz0wLFQ9MCxVPTAsVj0wLFc9MCxYPTAsWT0wLFo9MCxfPTAsJD0wLGFhPTAsYmE9MCxjYT0wLGRhPTAsZWE9MCxmYT0wLGdhPTAsaGE9MCxpYT0wLGphPTAsa2E9MCxsYT0wLG1hPTAsbmE9MCxvYT0wO29hPWk7aT1pKzI1NnwwO3E9b2E7WD1vYSsyNDR8MDtZPW9hKzI0MHwwO1o9b2ErMjM2fDA7Xz1vYSsyMzJ8MDtLPW9hKzIyOHwwO2RhPW9hKzIyNHwwO0M9b2ErMjIwfDA7a2E9b2ErMjE2fDA7YmE9b2ErMjEyfDA7eD1vYSsyMDh8MDtuYT1vYSsyMDR8MDtpYT1vYSsyMDB8MDtqYT1vYSsxOTZ8MDt2PW9hKzE5MnwwO3Q9b2ErMTg4fDA7ZWE9b2ErMTg0fDA7Z2E9b2ErMTgwfDA7Y2E9b2ErMTc2fDA7TD1vYSsxNzJ8MDthYT1vYSsxNjh8MDskPW9hKzE2NHwwO3k9b2ErMjU0fDA7Qj1vYSsyNTN8MDtPPW9hKzI1MnwwO3o9b2ErMTYwfDA7bWE9b2ErMTUyfDA7cD1vYSsxMjB8MDtsPW9hKzExMnwwO1I9b2ErMTA4fDA7UD1vYSsxMDR8MDtoYT1vYSsxMDB8MDtXPW9hKzk2fDA7SD1vYSs5MnwwO1M9b2ErODh8MDtHPW9hKzg0fDA7RD1vYSs4MHwwO2ZhPW9hKzc2fDA7UT1vYSs3MnwwO3M9b2ErNjR8MDtsYT1vYSs1NnwwO1Y9b2ErNTJ8MDtVPW9hKzQ4fDA7ST1vYSs0NHwwO0Y9b2ErNDB8MDtBPW9hKzM2fDA7VD1vYSszMnwwO249b2ErMjh8MDtvPW9hKzI0fDA7bT1vYSsyNTB8MDt1PW9hKzIwfDA7dz1vYSsyNDh8MDtyPW9hKzE2fDA7RT1vYSsxMnwwO009b2ErOHwwO049b2ErNHwwO2NbWD4+Ml09ZjtjW1k+PjJdPWc7Y1taPj4yXT1oO2NbXz4+Ml09ajtjW0s+PjJdPWs7Y1tiYT4+Ml09MDtjW0w+PjJdPTA7Y1thYT4+Ml09MDtjW3o+PjJdPTA7Y1tmYT4+Ml09MDtjW1E+PjJdPTA7Y1tsYT4+Ml09MDtjW1Y+PjJdPTA7Y1tVPj4yXT0wO2NbST4+Ml09MDtjW0Y+PjJdPTA7Y1tBPj4yXT0wO2NbVD4+Ml09MDtjW21hPj4yXT0wO2NbbWErND4+Ml09MDtjW2NhPj4yXT1jW2NbWD4+Ml0+PjJdO2lmKGNbKGNbWD4+Ml18MCkrMzY+PjJdfDApe0NHKG1hKTtuYT1jW2NhPj4yXXwwO21hPWNbYWE+PjJdfDA7VGYobmEsbWEpO21hPWNbY2E+PjJdfDA7bmE9Y1tZPj4yXXwwO2h2KG1hLG5hKTtuYT1jW2NhPj4yXXwwO21hPWNbWj4+Ml18MDtldihuYSxtYSk7bWE9Y1tjYT4+Ml18MDtuYT1jW18+PjJdfDA7aXYobWEsbmEpO2k9b2E7cmV0dXJufWlmKGRbKGNbY2E+PjJdfDApKzY5Pj4wXXwwKXtDRyhtYSk7bmE9Y1tjYT4+Ml18MDttYT1jW2FhPj4yXXwwO1RmKG5hLG1hKTttYT1jW2NhPj4yXXwwO25hPWNbWT4+Ml18MDtodihtYSxuYSk7bmE9Y1tjYT4+Ml18MDttYT1jW1o+PjJdfDA7ZXYobmEsbWEpO21hPWNbY2E+PjJdfDA7bmE9Y1tfPj4yXXwwO2l2KG1hLG5hKTtpPW9hO3JldHVybn1jW2thPj4yXT1iQyhjW1g+PjJdfDAsY1tZPj4yXXwwKXwwO2lmKCEoY1trYT4+Ml18MCkpe0NHKG1hKTtuYT1jW2NhPj4yXXwwO21hPWNbYWE+PjJdfDA7VGYobmEsbWEpO21hPWNbY2E+PjJdfDA7bmE9Y1tZPj4yXXwwO2h2KG1hLG5hKTtuYT1jW2NhPj4yXXwwO21hPWNbWj4+Ml18MDtldihuYSxtYSk7bWE9Y1tjYT4+Ml18MDtuYT1jW18+PjJdfDA7aXYobWEsbmEpO2k9b2E7cmV0dXJufWNbbD4+Ml09RmgoY1tjW1g+PjJdPj4yXXwwLGNbKGNba2E+PjJdfDApKzY0Pj4yXXwwKXwwO2NbUz4+Ml09VEMoY1tYPj4yXXwwLGNba2E+PjJdfDAsMTEwLGNbWj4+Ml18MCxHKXwwO2NbSD4+Ml09KGNbKGNba2E+PjJdfDApKzEyPj4yXXwwKSE9MCYxO2lmKFR4KGNbWD4+Ml18MCxjW2thPj4yXXwwKXwwKXtDRyhtYSk7bmE9Y1tjYT4+Ml18MDttYT1jW2FhPj4yXXwwO1RmKG5hLG1hKTttYT1jW2NhPj4yXXwwO25hPWNbWT4+Ml18MDtodihtYSxuYSk7bmE9Y1tjYT4+Ml18MDttYT1jW1o+PjJdfDA7ZXYobmEsbWEpO21hPWNbY2E+PjJdfDA7bmE9Y1tfPj4yXXwwO2l2KG1hLG5hKTtpPW9hO3JldHVybn1pZihVQyhjW1g+PjJdfDAsY1trYT4+Ml18MCxjW0c+PjJdfDApfDApe0NHKG1hKTtuYT1jW2NhPj4yXXwwO21hPWNbYWE+PjJdfDA7VGYobmEsbWEpO21hPWNbY2E+PjJdfDA7bmE9Y1tZPj4yXXwwO2h2KG1hLG5hKTtuYT1jW2NhPj4yXXwwO21hPWNbWj4+Ml18MDtldihuYSxtYSk7bWE9Y1tjYT4+Ml18MDtuYT1jW18+PjJdfDA7aXYobWEsbmEpO2k9b2E7cmV0dXJufWc9KGNbWD4+Ml18MCkrNDB8MDtqPWNbZz4+Ml18MDtjW2c+PjJdPWorMTtjW2VhPj4yXT1qO2NbdD4+Ml09ajtjWyhjW1k+PjJdfDApKzgrNDQ+PjJdPWo7Y1tnYT4+Ml09KGNbZWE+PjJdfDApKzE7aWYoIShkWyhjW2thPj4yXXwwKSs0Mj4+MF0mMzIpKWs9MDtlbHNlIGs9SmooY1trYT4+Ml18MCl8MDtjW2phPj4yXT1rO2Nbdj4+Ml09MDtjW2lhPj4yXT1jWyhjW2thPj4yXXwwKSs4Pj4yXTt3aGlsZSgxKXtpZighKGNbaWE+PjJdfDApKWJyZWFrO2lmKChjW2phPj4yXXwwKSE9MD8oYVsoY1tpYT4+Ml18MCkrNTU+PjBdJjN8MCk9PTI6MCl7Y1tlYT4+Ml09Y1soY1tYPj4yXXwwKSs0MD4+Ml07Y1soY1tZPj4yXXwwKSs4KzQ0Pj4yXT1jW2VhPj4yXX1qPShjW1g+PjJdfDApKzQwfDA7Y1tqPj4yXT0oY1tqPj4yXXwwKSsxO2NbaWE+PjJdPWNbKGNbaWE+PjJdfDApKzIwPj4yXTtjW3Y+PjJdPShjW3Y+PjJdfDApKzF9Y1thYT4+Ml09VncoY1tjYT4+Ml18MCwoKGJbKGNba2E+PjJdfDApKzM0Pj4xXXwwKSsoY1t2Pj4yXXwwKTw8MikrKGNbdj4+Ml18MCkrMnwwLDApfDA7aWYoIShjW2FhPj4yXXwwKSl7Q0cobWEpO25hPWNbY2E+PjJdfDA7bWE9Y1thYT4+Ml18MDtUZihuYSxtYSk7bWE9Y1tjYT4+Ml18MDtuYT1jW1k+PjJdfDA7aHYobWEsbmEpO25hPWNbY2E+PjJdfDA7bWE9Y1taPj4yXXwwO2V2KG5hLG1hKTttYT1jW2NhPj4yXXwwO25hPWNbXz4+Ml18MDtpdihtYSxuYSk7aT1vYTtyZXR1cm59Y1tMPj4yXT0oY1thYT4+Ml18MCkrKGJbKGNba2E+PjJdfDApKzM0Pj4xXTw8Mik7Y1skPj4yXT0oY1tMPj4yXXwwKSsoY1t2Pj4yXTw8Mik7VlIoY1skPj4yXXwwLDEsKGNbdj4+Ml18MCkrMXwwKXwwO2FbKGNbJD4+Ml18MCkrKChjW3Y+PjJdfDApKzEpPj4wXT0wO2NbZGE+PjJdPTA7d2hpbGUoMSl7aWYoKGNbZGE+PjJdfDApPj0oYlsoY1trYT4+Ml18MCkrMzQ+PjFdfDApKWJyZWFrO2NbKGNbYWE+PjJdfDApKyhjW2RhPj4yXTw8Mik+PjJdPS0xO2NbZGE+PjJdPShjW2RhPj4yXXwwKSsxfWNbcD4+Ml09MDtjW3ArND4+Ml09MDtjW3ArOD4+Ml09MDtjW3ArMTI+PjJdPTA7Y1twKzE2Pj4yXT0wO2NbcCsyMD4+Ml09MDtjW3ArMjQ+PjJdPTA7Y1twKzI4Pj4yXT0wO2NbcD4+Ml09Y1tYPj4yXTtjW3ArND4+Ml09Y1tZPj4yXTthW3k+PjBdPTA7YVtCPj4wXT0wO2NbZGE+PjJdPTA7d2hpbGUoMSl7aWYoKGNbZGE+PjJdfDApPj0oY1tjW1o+PjJdPj4yXXwwKSl7Sj00MTticmVha31pZihBeShwLGNbKGNbKGNbWj4+Ml18MCkrND4+Ml18MCkrKChjW2RhPj4yXXwwKSoyMHwwKT4+Ml18MCl8MCl7Sj0xODU7YnJlYWt9Y1tDPj4yXT0wO3doaWxlKDEpe2lmKChjW0M+PjJdfDApPj0oYlsoY1trYT4+Ml18MCkrMzQ+PjFdfDApKWJyZWFrO2o9KGlnKGNbKGNbKGNba2E+PjJdfDApKzQ+PjJdfDApKyhjW0M+PjJdPDw0KT4+Ml18MCxjWyhjWyhjW1o+PjJdfDApKzQ+PjJdfDApKygoY1tkYT4+Ml18MCkqMjB8MCkrND4+Ml18MCl8MCk9PTA7az1jW0M+PjJdfDA7aWYoail7Sj0yMzticmVha31jW0M+PjJdPWsrMX1pZigoSnwwKT09MjMpe0o9MDtpZigoa3wwKSE9KGJbKGNba2E+PjJdfDApKzMyPj4xXXwwKSl7aWYoKGNbamE+PjJdfDApIT0wPyhkWyhjWyhjW2thPj4yXXwwKSs0Pj4yXXwwKSsoY1tDPj4yXTw8NCkrMTU+PjBdJjF8MCkhPTA6MClhW3k+PjBdPTF9ZWxzZXthW0I+PjBdPTE7Y1t6Pj4yXT1jWyhjWyhjW1o+PjJdfDApKzQ+PjJdfDApKygoY1tkYT4+Ml18MCkqMjB8MCk+PjJdfWNbKGNbYWE+PjJdfDApKyhjW0M+PjJdPDwyKT4+Ml09Y1tkYT4+Ml19aWYoKGNbQz4+Ml18MCk+PShiWyhjW2thPj4yXXwwKSszND4+MV18MCkpe2lmKGNbamE+PjJdfDApe0o9MzQ7YnJlYWt9aWYoISh1aShjWyhjWyhjW1o+PjJdfDApKzQ+PjJdfDApKygoY1tkYT4+Ml18MCkqMjB8MCkrND4+Ml18MCl8MCkpe0o9MzQ7YnJlYWt9Y1tDPj4yXT0tMTthW0I+PjBdPTE7Y1t6Pj4yXT1jWyhjWyhjW1o+PjJdfDApKzQ+PjJdfDApKygoY1tkYT4+Ml18MCkqMjB8MCk+PjJdfWlmKChjW0M+PjJdfDApPDApaz0xOTg5NTtlbHNlIGs9Y1soY1soY1trYT4+Ml18MCkrND4+Ml18MCkrKGNbQz4+Ml08PDQpPj4yXXwwO2Nbbj4+Ml09YXgoY1tYPj4yXXwwLDIzLGNbY1trYT4+Ml0+PjJdfDAsayxjWyhjWyhjW2NhPj4yXXwwKSsxNj4+Ml18MCkrKGNbbD4+Ml08PDQpPj4yXXwwKXwwO2lmKChjW24+PjJdfDApPT0xKXtKPTE4NTticmVha31pZigoY1tuPj4yXXwwKT09MiljWyhjW2FhPj4yXXwwKSsoY1tDPj4yXTw8Mik+PjJdPS0xO2NbZGE+PjJdPShjW2RhPj4yXXwwKSsxfWlmKChKfDApPT0zNCl7bmE9Y1tYPj4yXXwwO2NbcT4+Ml09Y1soY1soY1taPj4yXXwwKSs0Pj4yXXwwKSsoKGNbZGE+PjJdfDApKjIwfDApKzQ+PjJdO0VoKG5hLDI0MTQ0LHEpO2FbKGNbWD4+Ml18MCkrMTc+PjBdPTE7Q0cobWEpO25hPWNbY2E+PjJdfDA7bWE9Y1thYT4+Ml18MDtUZihuYSxtYSk7bWE9Y1tjYT4+Ml18MDtuYT1jW1k+PjJdfDA7aHYobWEsbmEpO25hPWNbY2E+PjJdfDA7bWE9Y1taPj4yXXwwO2V2KG5hLG1hKTttYT1jW2NhPj4yXXwwO25hPWNbXz4+Ml18MDtpdihtYSxuYSk7aT1vYTtyZXR1cm59ZWxzZSBpZigoSnwwKT09NDEpe2FbTz4+MF09KGRbQj4+MF18MCkrKGRbeT4+MF18MCk7bj0oZFsoY1trYT4+Ml18MCkrNDI+PjBdJjE2fDApIT0wO3E9KGNbWT4+Ml18MCkrOCs1NnwwO2NbcT4+Ml09bj8tMTowO2NbcSs0Pj4yXT1uPy0xOjA7Y1tQPj4yXT1sRihjW1g+PjJdfDAsY1trYT4+Ml18MCxjW2FhPj4yXXwwLGRbTz4+MF18MCl8MDtjW0M+PjJdPTA7Y1tpYT4+Ml09Y1soY1trYT4+Ml18MCkrOD4+Ml07d2hpbGUoMSl7aWYoIShjW2lhPj4yXXwwKSlicmVhazthOmRvIGlmKCghKChkW08+PjBdfDApIT0wfChjW1A+PjJdfDApIT0wKT8oY1soY1tpYT4+Ml18MCkrMzY+PjJdfDApPT0wOjApPyhjW2lhPj4yXXwwKSE9KGNbamE+PjJdfDApOjApe2Nbbz4+Ml09MDtjW2RhPj4yXT0wO3doaWxlKDEpe2lmKChjW2RhPj4yXXwwKT49KGVbKGNbaWE+PjJdfDApKzUwPj4xXXwwKSlicmVhayBhO2JbbT4+MV09YlsoY1soY1tpYT4+Ml18MCkrND4+Ml18MCkrKGNbZGE+PjJdPDwxKT4+MV18MDtpZigoYlttPj4xXXwwKTwwKWJyZWFrO2lmKChjWyhjW2FhPj4yXXwwKSsoYlttPj4xXTw8Mik+PjJdfDApPj0wKWJyZWFrO2NbZGE+PjJdPShjW2RhPj4yXXwwKSsxfW49KGNbWD4+Ml18MCkrNDR8MDtxPShjW24+PjJdfDApKzF8MDtjW24+PjJdPXE7Y1tvPj4yXT1xfWVsc2UgSj00Njt3aGlsZSgwKTtpZigoSnwwKT09NDYpe0o9MDtuPShjW1g+PjJdfDApKzQ0fDA7cT0oY1tuPj4yXXwwKSsxfDA7Y1tuPj4yXT1xO2Nbbz4+Ml09cX1pZighKGNbbz4+Ml18MCkpYVsoY1skPj4yXXwwKSsoKGNbQz4+Ml18MCkrMSk+PjBdPTA7Y1soY1tMPj4yXXwwKSsoY1tDPj4yXTw8Mik+PjJdPWNbbz4+Ml07Y1tpYT4+Ml09Y1soY1tpYT4+Ml18MCkrMjA+PjJdO2NbQz4+Ml09KGNbQz4+Ml18MCkrMX1jW25hPj4yXT1keChjW1g+PjJdfDApfDA7aWYoIShjW25hPj4yXXwwKSl7Q0cobWEpO25hPWNbY2E+PjJdfDA7bWE9Y1thYT4+Ml18MDtUZihuYSxtYSk7bWE9Y1tjYT4+Ml18MDtuYT1jW1k+PjJdfDA7aHYobWEsbmEpO25hPWNbY2E+PjJdfDA7bWE9Y1taPj4yXXwwO2V2KG5hLG1hKTttYT1jW2NhPj4yXXwwO25hPWNbXz4+Ml18MDtpdihtYSxuYSk7aT1vYTtyZXR1cm59aWYoIShkWyhjW1g+PjJdfDApKzE4Pj4wXXwwKSlWQyhjW25hPj4yXXwwKTtyeChjW1g+PjJdfDAsMSxjW2w+PjJdfDApO2lmKCEoZFsoY1trYT4+Ml18MCkrNDI+PjBdJjE2KSl7cT0oY1tYPj4yXXwwKSs0NHwwO289KGNbcT4+Ml18MCkrMXwwO2NbcT4+Ml09bztjW0E+PjJdPW87bz0oY1tYPj4yXXwwKSs0NHwwO3E9KGNbbz4+Ml18MCkrMXwwO2Nbbz4+Ml09cTtjW1U+PjJdPXE7Y1tWPj4yXT1xO2lmKChkW3k+PjBdfDApIT0wfChjW1M+PjJdfDApIT0wfChjW1A+PjJdfDApIT0wKXtjW0Y+PjJdPShjWyhjW1g+PjJdfDApKzQ0Pj4yXXwwKSsxO3E9KGNbWD4+Ml18MCkrNDR8MDtjW3E+PjJdPShjW3E+PjJdfDApKyhiWyhjW2thPj4yXXwwKSszND4+MV18MCl9aWYoKGRbTz4+MF18MCkhPTB8KGNbUz4+Ml18MCkhPTB8KGNbUD4+Ml18MCkhPTApe289KGNbWD4+Ml18MCkrNDR8MDtxPShjW28+PjJdfDApKzF8MDtjW28+PjJdPXE7Y1tVPj4yXT1xfWNbST4+Ml09KGNbKGNbWD4+Ml18MCkrNDQ+PjJdfDApKzE7cT0oY1tYPj4yXXwwKSs0NHwwO2NbcT4+Ml09KGNbcT4+Ml18MCkrKGJbKGNba2E+PjJdfDApKzM0Pj4xXXwwKX1pZihjW0g+PjJdfDApeUcoY1tYPj4yXXwwLG1hLGNbY1trYT4+Ml0+PjJdfDApO2lmKGNbSD4+Ml18MCl6RyhjW1g+PjJdfDAsY1trYT4+Ml18MCxjW18+PjJdfDAsY1tlYT4+Ml18MCk7aWYoQXkocCxjW18+PjJdfDApfDApe0NHKG1hKTtuYT1jW2NhPj4yXXwwO21hPWNbYWE+PjJdfDA7VGYobmEsbWEpO21hPWNbY2E+PjJdfDA7bmE9Y1tZPj4yXXwwO2h2KG1hLG5hKTtuYT1jW2NhPj4yXXwwO21hPWNbWj4+Ml18MDtldihuYSxtYSk7bWE9Y1tjYT4+Ml18MDtuYT1jW18+PjJdfDA7aXYobWEsbmEpO2k9b2E7cmV0dXJufWlmKGRbKGNba2E+PjJdfDApKzQyPj4wXSYxNil7QUcoY1tYPj4yXXwwLGNbWT4+Ml18MCxjW2thPj4yXXwwLGNbWj4+Ml18MCxjW3o+PjJdfDAsY1thYT4+Ml18MCxjW18+PjJdfDAsY1tLPj4yXXwwKTtDRyhtYSk7bmE9Y1tjYT4+Ml18MDttYT1jW2FhPj4yXXwwO1RmKG5hLG1hKTttYT1jW2NhPj4yXXwwO25hPWNbWT4+Ml18MDtodihtYSxuYSk7bmE9Y1tjYT4+Ml18MDttYT1jW1o+PjJdfDA7ZXYobmEsbWEpO21hPWNbY2E+PjJdfDA7bmE9Y1tfPj4yXXwwO2l2KG1hLG5hKTtpPW9hO3JldHVybn1pZighKGRbKGNba2E+PjJdfDApKzQyPj4wXSYzMikpe2p4KGNbbmE+PjJdfDAsNzksMCxjW0E+PjJdfDAsY1tWPj4yXXwwKXwwO2NbeD4+Ml09cUQoY1tYPj4yXXwwLGNbWT4+Ml18MCxjW18+PjJdfDAsMCwwLDEwMjgsY1tnYT4+Ml18MCl8MDtpZighKGNbeD4+Ml18MCkpe0NHKG1hKTtuYT1jW2NhPj4yXXwwO21hPWNbYWE+PjJdfDA7VGYobmEsbWEpO21hPWNbY2E+PjJdfDA7bmE9Y1tZPj4yXXwwO2h2KG1hLG5hKTtuYT1jW2NhPj4yXXwwO21hPWNbWj4+Ml18MDtldihuYSxtYSk7bWE9Y1tjYT4+Ml18MDtuYT1jW18+PjJdfDA7aXYobWEsbmEpO2k9b2E7cmV0dXJufWNbUj4+Ml09QkcoY1t4Pj4yXXwwLHMpfDA7aXgoY1tuYT4+Ml18MCwxMjMsY1tlYT4+Ml18MCxjW1Y+PjJdfDApfDA7aWYoIShjW1I+PjJdfDApKWl4KGNbbmE+PjJdfDAsMTQyLGNbQT4+Ml18MCxjW1Y+PjJdfDApfDA7ckQoY1t4Pj4yXXwwKX1lbHNle2Jbdz4+MV09YlsoY1tqYT4+Ml18MCkrNTA+PjFdfDA7Y1t1Pj4yXT0oY1soY1tYPj4yXXwwKSs0ND4+Ml18MCkrMTtxPShjW1g+PjJdfDApKzQ0fDA7Y1txPj4yXT0oY1txPj4yXXwwKSsoYlt3Pj4xXXwwKTtxPShjW1g+PjJdfDApKzQ0fDA7cD0oY1txPj4yXXwwKSsxfDA7Y1txPj4yXT1wO2NbVD4+Ml09cDtwPShjW1g+PjJdfDApKzQwfDA7cT1jW3A+PjJdfDA7Y1twPj4yXT1xKzE7Y1tmYT4+Ml09cTtpeChjW25hPj4yXXwwLDc5LDAsY1t1Pj4yXXwwKXwwO2Nbcj4+Ml09aXgoY1tuYT4+Ml18MCwxMDcsY1tmYT4+Ml18MCxiW3c+PjFdfDApfDA7VnooY1tYPj4yXXwwLGNbamE+PjJdfDApO2NbeD4+Ml09cUQoY1tYPj4yXXwwLGNbWT4+Ml18MCxjW18+PjJdfDAsMCwwLDQsY1tnYT4+Ml18MCl8MDtpZighKGNbeD4+Ml18MCkpe0NHKG1hKTtuYT1jW2NhPj4yXXwwO21hPWNbYWE+PjJdfDA7VGYobmEsbWEpO21hPWNbY2E+PjJdfDA7bmE9Y1tZPj4yXXwwO2h2KG1hLG5hKTtuYT1jW2NhPj4yXXwwO21hPWNbWj4+Ml18MDtldihuYSxtYSk7bWE9Y1tjYT4+Ml18MDtuYT1jW18+PjJdfDA7aXYobWEsbmEpO2k9b2E7cmV0dXJufWNbUj4+Ml09QkcoY1t4Pj4yXXwwLHMpfDA7Y1tkYT4+Ml09MDt3aGlsZSgxKXtpZigoY1tkYT4+Ml18MCk+PShiW3c+PjFdfDApKWJyZWFrO05BKGNbbmE+PjJdfDAsY1trYT4+Ml18MCxjW2VhPj4yXXwwLGJbKGNbKGNbamE+PjJdfDApKzQ+PjJdfDApKyhjW2RhPj4yXTw8MSk+PjFdfDAsKGNbdT4+Ml18MCkrKGNbZGE+PjJdfDApfDApO2NbZGE+PjJdPShjW2RhPj4yXXwwKSsxfWs9Y1tuYT4+Ml18MDtpZihjW1I+PjJdfDApe0hBKGssY1tyPj4yXXwwKXwwO2NbUT4+Ml09Ylt3Pj4xXTtjW1Q+PjJdPWNbdT4+Ml19ZWxzZXtwPWNbdT4+Ml18MDtxPWJbdz4+MV18MDtyPWNbVD4+Ml18MDt1PUNDKGNbY2E+PjJdfDAsY1tqYT4+Ml18MCl8MDtteChrLDk5LHAscSxyLHUsYlt3Pj4xXXwwKXwwO2l4KGNbbmE+PjJdfDAsMTI2LGNbZmE+PjJdfDAsY1tUPj4yXXwwKXwwfXJEKGNbeD4+Ml18MCl9aWYoKGNbKGNbY2E+PjJdfDApKzI0Pj4yXSYxMjh8MCkhPTA/KGNbKGNbWD4+Ml18MCkrMTI4Pj4yXXwwKT09MDowKXt3PShjW1g+PjJdfDApKzQ0fDA7eD0oY1t3Pj4yXXwwKSsxfDA7Y1t3Pj4yXT14O2NbbGE+PjJdPXg7aXgoY1tuYT4+Ml18MCw3NiwwLGNbbGE+PjJdfDApfDB9Y1toYT4+Ml09V3ooY1tuYT4+Ml18MCl8MDtpZighKGNbSD4+Ml18MCkpe2I6ZG8gaWYoKGNbSz4+Ml18MCk9PTUpVlIoY1skPj4yXXwwLDEsKGNbdj4+Ml18MCkrMXwwKXwwO2Vsc2V7Y1tpYT4+Ml09Y1soY1trYT4+Ml18MCkrOD4+Ml07d2hpbGUoMSl7aWYoIShjW2lhPj4yXXwwKSlicmVhayBiO2lmKChkWyhjW2lhPj4yXXwwKSs1ND4+MF18MCk9PTUpYnJlYWs7Y1tpYT4+Ml09Y1soY1tpYT4+Ml18MCkrMjA+PjJdfVZSKGNbJD4+Ml18MCwxLChjW3Y+PjJdfDApKzF8MCl8MH13aGlsZSgwKTtkbyBpZihjW1I+PjJdfDApe2lmKChjW3M+PjJdfDApPj0wKWFbKGNbJD4+Ml18MCkrKChjW3M+PjJdfDApLShjW3Q+PjJdfDApKT4+MF09MDtpZigoY1tzKzQ+PjJdfDApPDApYnJlYWs7YVsoY1skPj4yXXwwKSsoKGNbcys0Pj4yXXwwKS0oY1t0Pj4yXXwwKSk+PjBdPTB9d2hpbGUoMCk7RkMoY1tYPj4yXXwwLGNba2E+PjJdfDAsMTA1LDAsY1t0Pj4yXXwwLGNbJD4+Ml18MCwwLDApfDB9ZG8gaWYoIShjW1I+PjJdfDApKXtrPWNbbmE+PjJdfDA7aWYoY1tqYT4+Ml18MCl7Y1tXPj4yXT1XeihrKXwwO2l4KGNbbmE+PjJdfDAsNTcsY1tmYT4+Ml18MCxjW2hhPj4yXXwwKXwwO2NbYmE+PjJdPWl4KGNbbmE+PjJdfDAsMTIxLGNbZmE+PjJdfDAsY1tUPj4yXXwwKXwwO0loKGNbbmE+PjJdfDAsMzAsY1tlYT4+Ml18MCxjW1c+PjJdfDAsY1tUPj4yXXwwLDApfDA7YnJlYWt9ZWxzZXtjW1c+PjJdPWp4KGssNjIsY1tBPj4yXXwwLGNbaGE+PjJdfDAsY1tWPj4yXXwwKXwwO2p4KGNbbmE+PjJdfDAsMzMsY1tlYT4+Ml18MCxjW1c+PjJdfDAsY1tWPj4yXXwwKXwwO2JyZWFrfX1lbHNle2lmKCEoKGNbSD4+Ml18MCkhPTA/MTooZFsoY1skPj4yXXwwKSsoKGNbZWE+PjJdfDApLShjW3Q+PjJdfDApKT4+MF18MCk9PTApKUloKGNbbmE+PjJdfDAsMzAsY1tlYT4+Ml18MCxjW2hhPj4yXXwwLGNbVD4+Ml18MCxjW1E+PjJdfDApfDA7Y1tXPj4yXT1jW2hhPj4yXTtpeChjW25hPj4yXXwwLDM0LChjW2phPj4yXXwwKSE9MD9jW1Q+PjJdfDA6Y1tWPj4yXXwwLGNbaGE+PjJdfDApfDB9d2hpbGUoMCk7aWYoYVtCPj4wXXwwKXtSQShjW1g+PjJdfDAsY1t6Pj4yXXwwLGNbVT4+Ml18MCk7U3ooY1tuYT4+Ml18MCwxNyxjW1U+PjJdfDApfDB9ZG8gaWYoKGRbeT4+MF18MCkhPTB8KGNbUD4+Ml18MCkhPTB8KGNbUz4+Ml18MCkhPTApe2lmKGNbUD4+Ml18MClrPXFGKGNbWD4+Ml18MCxjW2thPj4yXXwwKXwwO2Vsc2Ugaz0wO2NbRT4+Ml09aztBPXBGKGNbWD4+Ml18MCxjW1M+PjJdfDAsY1taPj4yXXwwLDAsMyxjW2thPj4yXXwwLGNbSz4+Ml18MCl8MDtjW0U+PjJdPWNbRT4+Ml18QTtjW2RhPj4yXT0wO3doaWxlKDEpe2lmKChjW2RhPj4yXXwwKT49KGJbKGNba2E+PjJdfDApKzM0Pj4xXXwwKSlicmVhaztkbyBpZigoY1tFPj4yXXwwKT09LTEpSj0xMjA7ZWxzZXtpZigoY1tkYT4+Ml18MCk8MzI/KGNbRT4+Ml0mMTw8Y1tkYT4+Ml18MCkhPTA6MCl7Sj0xMjA7YnJlYWt9aWYoZFsoY1soY1trYT4+Ml18MCkrND4+Ml18MCkrKGNbZGE+PjJdPDw0KSsxNT4+MF0mMSl7Sj0xMjA7YnJlYWt9aXgoY1tuYT4+Ml18MCw3OSwwLChjW0Y+PjJdfDApKyhjW2RhPj4yXXwwKXwwKXwwfXdoaWxlKDApO2lmKChKfDApPT0xMjApe0o9MDtOQShjW25hPj4yXXwwLGNba2E+PjJdfDAsY1tlYT4+Ml18MCxjW2RhPj4yXXwwLChjW0Y+PjJdfDApKyhjW2RhPj4yXXwwKXwwKX1jW2RhPj4yXT0oY1tkYT4+Ml18MCkrMX1pZighKChkW0I+PjBdfDApPT0wJihjW2phPj4yXXwwKT09MCkpYnJlYWs7aXgoY1tuYT4+Ml18MCw4NCxjW1Y+PjJdfDAsY1tVPj4yXXwwKXwwfXdoaWxlKDApO2NbRD4+Ml09cEYoY1tYPj4yXXwwLGNbUz4+Ml18MCxjW1o+PjJdfDAsMSwxLGNba2E+PjJdfDAsY1tLPj4yXXwwKXwwO2NbZGE+PjJdPTA7d2hpbGUoMSl7aWYoKGNbZGE+PjJdfDApPj0oYlsoY1trYT4+Ml18MCkrMzQ+PjFdfDApKWJyZWFrO2M6ZG8gaWYoKGNbZGE+PjJdfDApPT0oYlsoY1trYT4+Ml18MCkrMzI+PjFdfDApKWl4KGNbbmE+PjJdfDAsNzksMCwoY1tJPj4yXXwwKSsoY1tkYT4+Ml18MCl8MCl8MDtlbHNle2NbQz4+Ml09Y1soY1thYT4+Ml18MCkrKGNbZGE+PjJdPDwyKT4+Ml07aWYoKGNbQz4+Ml18MCk+PTApe1JBKGNbWD4+Ml18MCxjWyhjWyhjW1o+PjJdfDApKzQ+PjJdfDApKygoY1tDPj4yXXwwKSoyMHwwKT4+Ml18MCwoY1tJPj4yXXwwKSsoY1tkYT4+Ml18MCl8MCk7YnJlYWt9ZG8gaWYoISgoY1tkYT4+Ml18MCk+MzE/MTowPT0oY1tHPj4yXSYxfDApKSl7aWYoY1tEPj4yXSYxPDxjW2RhPj4yXSlicmVhaztpeChjW25hPj4yXXwwLDc5LDAsKGNbST4+Ml18MCkrKGNbZGE+PjJdfDApfDApfDA7YnJlYWsgY313aGlsZSgwKTtYRChjW1g+PjJdfDAsY1trYT4+Ml18MCxjW2RhPj4yXXwwLGNbZWE+PjJdfDAsKGNbST4+Ml18MCkrKGNbZGE+PjJdfDApfDApfXdoaWxlKDApO2NbZGE+PjJdPShjW2RhPj4yXXwwKSsxfWQ6ZG8gaWYoY1tHPj4yXSYxKXskQyhjW25hPj4yXXwwLGNba2E+PjJdfDAsY1tJPj4yXXwwKTthRChjW1g+PjJdfDAsY1tTPj4yXXwwLDExMCxjW1o+PjJdfDAsMSxjW2thPj4yXXwwLGNbVj4+Ml18MCxjW0s+PjJdfDAsY1tXPj4yXXwwKTtrPWNbbmE+PjJdfDA7aD1jW2VhPj4yXXwwO2Y9Y1tXPj4yXXwwO2lmKGNbamE+PjJdfDApSWgoaywzMCxoLGYsY1tUPj4yXXwwLGNbUT4+Ml18MCl8MDtlbHNlIGp4KGssMzMsaCxmLGNbVj4+Ml18MCl8MDtjW2RhPj4yXT0wO3doaWxlKDEpe2lmKChjW2RhPj4yXXwwKT49KGJbKGNba2E+PjJdfDApKzM0Pj4xXXwwKSlicmVhayBkO2RvIGlmKChjWyhjW2FhPj4yXXwwKSsoY1tkYT4+Ml08PDIpPj4yXXwwKTwwKXtpZigoY1tkYT4+Ml18MCk9PShiWyhjW2thPj4yXXwwKSszMj4+MV18MCkpYnJlYWs7TkEoY1tuYT4+Ml18MCxjW2thPj4yXXwwLGNbZWE+PjJdfDAsY1tkYT4+Ml18MCwoY1tJPj4yXXwwKSsoY1tkYT4+Ml18MCl8MCl9d2hpbGUoMCk7Y1tkYT4+Ml09KGNbZGE+PjJdfDApKzF9fXdoaWxlKDApO2RvIGlmKCEoY1tIPj4yXXwwKSl7Y1tNPj4yXT0wO2NbTj4+Ml09MDtlRChjW1g+PjJdfDAsY1trYT4+Ml18MCxjW0w+PjJdfDAsY1tlYT4+Ml18MCxjW2dhPj4yXXwwLGNbVT4+Ml18MCxjW1Y+PjJdfDAsYVtPPj4wXXwwLGNbSz4+Ml0mMjU1LGNbVz4+Ml18MCxOLGNbYWE+PjJdfDApO2lmKGNbUD4+Ml18MClmRChjW1g+PjJdfDAsY1trYT4+Ml18MCxjW1Y+PjJdfDAsMCxjW2FhPj4yXXwwLGRbTz4+MF18MCk7aWYoISgoY1tOPj4yXXwwKT09MD8oZFtPPj4wXXwwKT09MDowKSlKPTE1MTtkbyBpZigoSnwwKT09MTUxKXtrPWNbbmE+PjJdfDA7aD1jW2VhPj4yXXwwO2lmKGNbamE+PjJdfDApe2NbTT4+Ml09SWgoaywzMCxoLDAsY1tUPj4yXXwwLGNbUT4+Ml18MCl8MDticmVha31lbHNle2NbTT4+Ml09angoaywzMyxoLDAsY1tWPj4yXXwwKXwwO2JyZWFrfX13aGlsZSgwKTtvRihjW1g+PjJdfDAsY1trYT4+Ml18MCxjW2VhPj4yXXwwLGNbZ2E+PjJdfDAsY1tMPj4yXXwwLC0xKTtpZighKChjW1A+PjJdfDApPT0wPyEoKGRbTz4+MF18MCkhPTB8KGNbamE+PjJdfDApIT0wKTowKSlpeChjW25hPj4yXXwwLDExNyxjW2VhPj4yXXwwLDApfDA7aWYoISgoY1tOPj4yXXwwKT09MD8oZFtPPj4wXXwwKT09MDowKSlaeihjW25hPj4yXXwwLGNbTT4+Ml18MCk7aWYoY1tQPj4yXXwwKWZEKGNbWD4+Ml18MCxjW2thPj4yXXwwLDAsY1tVPj4yXXwwLGNbYWE+PjJdfDAsZFtPPj4wXXwwKTtnRChjW1g+PjJdfDAsY1trYT4+Ml18MCxjW2VhPj4yXXwwLGNbZ2E+PjJdfDAsY1tVPj4yXXwwLGNbTD4+Ml18MCwxLDAsMCk7aWYoIShjW1A+PjJdfDApKWJyZWFrO3JGKGNbWD4+Ml18MCxjW2thPj4yXXwwLGNbWj4+Ml18MCxjW1Y+PjJdfDAsY1thYT4+Ml18MCxkW08+PjBdfDApfXdoaWxlKDApO2RvIGlmKGNbKGNbY2E+PjJdfDApKzI0Pj4yXSYxMjgpe2lmKGNbKGNbWD4+Ml18MCkrMTI4Pj4yXXwwKWJyZWFrO2l4KGNbbmE+PjJdfDAsOTEsY1tsYT4+Ml18MCwxKXwwfXdoaWxlKDApO2FEKGNbWD4+Ml18MCxjW1M+PjJdfDAsMTEwLGNbWj4+Ml18MCwyLGNba2E+PjJdfDAsY1tWPj4yXXwwLGNbSz4+Ml18MCxjW1c+PjJdfDApO2RvIGlmKCEoY1tSPj4yXXwwKSl7aD1jW25hPj4yXXwwO2s9Y1tXPj4yXXwwO2lmKGNbamE+PjJdfDApe196KGgsayk7aXgoY1tuYT4+Ml18MCw3LGNbZmE+PjJdfDAsY1tiYT4+Ml18MCl8MDticmVha31lbHNle1l6KGgsayl8MDticmVha319d2hpbGUoMCk7X3ooY1tuYT4+Ml18MCxjW2hhPj4yXXwwKTtjW2RhPj4yXT0wO2NbaWE+PjJdPWNbKGNba2E+PjJdfDApKzg+PjJdO3doaWxlKDEpe2lmKCEoY1tpYT4+Ml18MCkpYnJlYWs7aWYoYVsoY1skPj4yXXwwKSsoKGNbZGE+PjJdfDApKzEpPj4wXXwwKWl4KGNbbmE+PjJdfDAsMTExLChjW2dhPj4yXXwwKSsoY1tkYT4+Ml18MCl8MCwwKXwwO2NbaWE+PjJdPWNbKGNbaWE+PjJdfDApKzIwPj4yXTtjW2RhPj4yXT0oY1tkYT4+Ml18MCkrMX1pZigoY1tlYT4+Ml18MCk8KGNbZ2E+PjJdfDApKWl4KGNbbmE+PjJdfDAsMTExLGNbZWE+PjJdfDAsMCl8MDtkbyBpZighKGRbKGNbWD4+Ml18MCkrMTg+PjBdfDApKXtpZihjWyhjW1g+PjJdfDApKzEyOD4+Ml18MClicmVhaztoRChjW1g+PjJdfDApfXdoaWxlKDApO2lmKCEoY1soY1tjYT4+Ml18MCkrMjQ+PjJdJjEyOCkpe0NHKG1hKTtuYT1jW2NhPj4yXXwwO21hPWNbYWE+PjJdfDA7VGYobmEsbWEpO21hPWNbY2E+PjJdfDA7bmE9Y1tZPj4yXXwwO2h2KG1hLG5hKTtuYT1jW2NhPj4yXXwwO21hPWNbWj4+Ml18MDtldihuYSxtYSk7bWE9Y1tjYT4+Ml18MDtuYT1jW18+PjJdfDA7aXYobWEsbmEpO2k9b2E7cmV0dXJufWlmKGNbKGNbWD4+Ml18MCkrMTI4Pj4yXXwwKXtDRyhtYSk7bmE9Y1tjYT4+Ml18MDttYT1jW2FhPj4yXXwwO1RmKG5hLG1hKTttYT1jW2NhPj4yXXwwO25hPWNbWT4+Ml18MDtodihtYSxuYSk7bmE9Y1tjYT4+Ml18MDttYT1jW1o+PjJdfDA7ZXYobmEsbWEpO21hPWNbY2E+PjJdfDA7bmE9Y1tfPj4yXXwwO2l2KG1hLG5hKTtpPW9hO3JldHVybn1pZihhWyhjW1g+PjJdfDApKzE4Pj4wXXwwKXtDRyhtYSk7bmE9Y1tjYT4+Ml18MDttYT1jW2FhPj4yXXwwO1RmKG5hLG1hKTttYT1jW2NhPj4yXXwwO25hPWNbWT4+Ml18MDtodihtYSxuYSk7bmE9Y1tjYT4+Ml18MDttYT1jW1o+PjJdfDA7ZXYobmEsbWEpO21hPWNbY2E+PjJdfDA7bmE9Y1tfPj4yXXwwO2l2KG1hLG5hKTtpPW9hO3JldHVybn1peChjW25hPj4yXXwwLDg3LGNbbGE+PjJdfDAsMSl8MDttQyhjW25hPj4yXXwwLDEpO25DKGNbbmE+PjJdfDAsMCwwLDM1MzI1LDApfDA7Q0cobWEpO25hPWNbY2E+PjJdfDA7bWE9Y1thYT4+Ml18MDtUZihuYSxtYSk7bWE9Y1tjYT4+Ml18MDtuYT1jW1k+PjJdfDA7aHYobWEsbmEpO25hPWNbY2E+PjJdfDA7bWE9Y1taPj4yXXwwO2V2KG5hLG1hKTttYT1jW2NhPj4yXXwwO25hPWNbXz4+Ml18MDtpdihtYSxuYSk7aT1vYTtyZXR1cm59ZWxzZSBpZigoSnwwKT09MTg1KXtDRyhtYSk7bmE9Y1tjYT4+Ml18MDttYT1jW2FhPj4yXXwwO1RmKG5hLG1hKTttYT1jW2NhPj4yXXwwO25hPWNbWT4+Ml18MDtodihtYSxuYSk7bmE9Y1tjYT4+Ml18MDttYT1jW1o+PjJdfDA7ZXYobmEsbWEpO21hPWNbY2E+PjJdfDA7bmE9Y1tfPj4yXXwwO2l2KG1hLG5hKTtpPW9hO3JldHVybn19ZnVuY3Rpb24gZncoYSxiLGUsZil7YT1hfDA7Yj1ifDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTA7cj1pO2k9aSs0OHwwO3E9cjtnPXIrNDB8MDtoPXIrMzZ8MDtqPXIrMzJ8MDtrPXIrMjh8MDtsPXIrMjR8MDtvPXIrMjB8MDttPXIrMTZ8MDtuPXIrMTJ8MDtwPXIrOHwwO2NbZz4+Ml09YTtjW2g+PjJdPWI7Y1tqPj4yXT1lO2Nbaz4+Ml09ZjtjW2w+PjJdPWNbY1tnPj4yXT4+Ml07aWYoY1toPj4yXXwwKWU9Y1tjW2g+PjJdPj4yXXwwO2Vsc2UgZT0wO2Nbbj4+Ml09ZTtkbyBpZighKChjW2o+PjJdfDApPT0wfChjW2s+PjJdfDApPT0wKSl7Y1tvPj4yXT1jeihjW2s+PjJdfDApfDA7aWYoKGNbKGNbaj4+Ml18MCkrND4+Ml18MCkhPShjW28+PjJdfDApKXtwPWNbZz4+Ml18MDtvPWNbbz4+Ml18MDtjW3E+PjJdPWNbKGNbaj4+Ml18MCkrND4+Ml07Y1txKzQ+PjJdPW87RWgocCwzNTI5NSxxKTticmVha31jW20+PjJdPTA7d2hpbGUoMSl7aWYoKGNbbT4+Ml18MCk+PShjW28+PjJdfDApKWJyZWFrO2NbcD4+Ml09Y0YoY1tnPj4yXXwwLGNbaz4+Ml18MCxjW20+PjJdfDApfDA7Y1toPj4yXT1UdihjW2c+PjJdfDAsY1toPj4yXXwwLGNbcD4+Ml18MCl8MDtpZihjW2g+PjJdfDApe2NbKGNbKGNbaD4+Ml18MCkrND4+Ml18MCkrKCgoY1tjW2g+PjJdPj4yXXwwKS0xfDApKjIwfDApKzQ+PjJdPWNbKGNbY1tqPj4yXT4+Ml18MCkrKGNbbT4+Ml08PDMpPj4yXTtjWyhjW2Nbaj4+Ml0+PjJdfDApKyhjW20+PjJdPDwzKT4+Ml09MH1jW20+PjJdPShjW20+PjJdfDApKzF9aWYoKChjW2g+PjJdfDApIT0wPyhkW2Nbaz4+Ml0+PjBdfDB8MCk9PTExOTowKT8oY1soY1soY1toPj4yXXwwKSs0Pj4yXXwwKSsoKGNbbj4+Ml18MCkqMjB8MCk+PjJdfDApIT0wOjApe2NbKGNbKGNbKGNbaD4+Ml18MCkrND4+Ml18MCkrKChjW24+PjJdfDApKjIwfDApPj4yXXwwKSsxNj4+Ml09Y1trPj4yXTtjW2s+PjJdPTB9fXdoaWxlKDApO2l2KGNbbD4+Ml18MCxjW2s+PjJdfDApO2t2KGNbbD4+Ml18MCxjW2o+PjJdfDApO2k9cjtyZXR1cm4gY1toPj4yXXwwfVxuZnVuY3Rpb24gU0goYixlLGYsZyxoLGosayl7Yj1ifDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7dmFyIGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MCxFPTAsRj0wLEc9MCxIPTAsST0wO0k9aTtpPWkrNTc2fDA7Rz1JKzE2fDA7cz1JKzh8MDtuPUk7Qz1JKzU3MnwwO3U9SSs1Njh8MDtwPUkrNTY0fDA7dj1JKzU2MHwwO2w9SSs1NTZ8MDt3PUkrNTUyfDA7cT1JKzU0OHwwO0g9SSs1NDR8MDtFPUkrNTQwfDA7eD1JKzUzNnwwO0Y9SSs1NnwwO209SSs0OHwwO289SSs0NHwwO3Q9SSs0MHwwO3I9SSszNnwwO3k9SSszMnwwO3o9SSsyOHwwO0E9SSsyNHwwO0Q9SSsyMHwwO2NbQz4+Ml09YjtjW3U+PjJdPWU7Y1twPj4yXT1mO2Nbdj4+Ml09ZztjW2w+PjJdPWg7Y1t3Pj4yXT1qO2NbcT4+Ml09aztjW0g+PjJdPTA7Y1tFPj4yXT0wO1ZSKEZ8MCwwLDE1Mil8MDtiPUYrNDAwfDA7Zj1iKzgwfDA7ZG97YVtiPj4wXT0wO2I9YisxfDB9d2hpbGUoKGJ8MCk8KGZ8MCkpO2NbRis0MzI+PjJdPWNbbD4+Ml07Y1t4Pj4yXT0wO3doaWxlKDEpe2lmKChjW3g+PjJdfDApPj0oY1soY1tDPj4yXXwwKSsyMD4+Ml18MCkpYnJlYWs7Y1ttPj4yXT1jWyhjWyhjW0M+PjJdfDApKzE2Pj4yXXwwKSsoY1t4Pj4yXTw8NCkrND4+Ml07aWYoKGNbbT4+Ml18MCkhPTA/KGNbRT4+Ml09VEgoY1ttPj4yXXwwKXwwLChjW0U+PjJdfDApIT0wKTowKXtCPTU7YnJlYWt9Y1t4Pj4yXT0oY1t4Pj4yXXwwKSsxfWlmKChCfDApPT01KXtjW28+PjJdPWNbKGNbKGNbQz4+Ml18MCkrMTY+PjJdfDApKyhjW3g+PjJdPDw0KT4+Ml07SD1jW0M+PjJdfDA7Rz1jW0U+PjJdfDA7Y1tuPj4yXT1jW28+PjJdO2pnKEgsRywzOTU5MSxuKTtQaChGKTtHPWNbQz4+Ml18MDtIPWNbRT4+Ml18MDtIPVVnKEcsSCl8MDtjW0U+PjJdPUg7SD1jW0U+PjJdfDA7aT1JO3JldHVybiBIfDB9dXUoY1tDPj4yXXwwKTtjW0Y+PjJdPWNbQz4+Ml07ZG8gaWYoKGNbcD4+Ml18MCk+PTApe2lmKChjW3A+PjJdfDApIT0wPyhhWyhjW3U+PjJdfDApKygoY1twPj4yXXwwKS0xKT4+MF18MCk9PTA6MCl7Qj0xNTticmVha31jW3I+PjJdPWNbKGNbQz4+Ml18MCkrOTYrND4+Ml07Yj1jW0M+PjJdfDA7aWYoKGNbcD4+Ml18MCk+KGNbcj4+Ml18MCkpe2pnKGIsMTgsMzk2MjEscyk7Y1tFPj4yXT1VZyhjW0M+PjJdfDAsMTgpfDA7UGgoRik7Rz1jW0M+PjJdfDA7SD1jW0U+PjJdfDA7SD1VZyhHLEgpfDA7Y1tFPj4yXT1IO0g9Y1tFPj4yXXwwO2k9STtyZXR1cm4gSHwwfXM9Y1twPj4yXXwwO2NbdD4+Ml09WXcoYixjW3U+PjJdfDAscywoKHN8MCk8MCk8PDMxPj4zMSl8MDtpZihjW3Q+PjJdfDApe1loKEYsY1t0Pj4yXXwwLEgpfDA7Y1tGKzQzNj4+Ml09KGNbdT4+Ml18MCkrKChjW0YrNDM2Pj4yXXwwKS0oY1t0Pj4yXXwwKSk7VGYoY1tDPj4yXXwwLGNbdD4+Ml18MCk7YnJlYWt9ZWxzZXtjW0YrNDM2Pj4yXT0oY1t1Pj4yXXwwKSsoY1twPj4yXXwwKTticmVha319ZWxzZSBCPTE1O3doaWxlKDApO2lmKChCfDApPT0xNSlZaChGLGNbdT4+Ml18MCxIKXwwO2lmKChjW0YrMTI+PjJdfDApPT0xMDEpY1tGKzEyPj4yXT0wO2lmKGFbRisxNz4+MF18MClVSChGKTtpZihhWyhjW0M+PjJdfDApKzY5Pj4wXXwwKWNbRisxMj4+Ml09NztpZihjW3E+PjJdfDApY1tjW3E+PjJdPj4yXT1jW0YrNDM2Pj4yXTtjW0U+PjJdPWNbRisxMj4+Ml07YTpkbyBpZigoKGNbRT4+Ml18MCk9PTA/KGNbRis4Pj4yXXwwKSE9MDowKT8oZFtGKzQwOT4+MF18MCkhPTA6MCl7Yj1jW0YrOD4+Ml18MDtpZigoZFtGKzQwOT4+MF18MCk9PTIpe21DKGIsNCk7Y1t5Pj4yXT04O2Nbej4+Ml09MTJ9ZWxzZXttQyhiLDgpO2NbeT4+Ml09MDtjW3o+PjJdPTh9Y1t4Pj4yXT1jW3k+PjJdO3doaWxlKDEpe2lmKChjW3g+PjJdfDApPj0oY1t6Pj4yXXwwKSlicmVhayBhO25DKGNbRis4Pj4yXXwwLChjW3g+PjJdfDApLShjW3k+PjJdfDApfDAsMCxjWzU1MjQrKGNbeD4+Ml08PDIpPj4yXXwwLDApfDA7Y1t4Pj4yXT0oY1t4Pj4yXXwwKSsxfX13aGlsZSgwKTtpZighKGRbKGNbQz4+Ml18MCkrMTQ4KzU+PjBdfDApKXtjW0E+PjJdPWNbRis4Pj4yXTtWSChjW0E+PjJdfDAsY1t1Pj4yXXwwLChjW0YrNDM2Pj4yXXwwKS0oY1t1Pj4yXXwwKXwwLGNbdj4+Ml18MCl9ZG8gaWYoY1tGKzg+PjJdfDApe2lmKChjW0U+PjJdfDApPT0wPyhkWyhjW0M+PjJdfDApKzY5Pj4wXXwwKT09MDowKXtCPTM5O2JyZWFrfVRnKGNbRis4Pj4yXXwwKXwwfWVsc2UgQj0zOTt3aGlsZSgwKTtpZigoQnwwKT09MzkpY1tjW3c+PjJdPj4yXT1jW0YrOD4+Ml07Yj1jW0M+PjJdfDA7Zj1jW0U+PjJdfDA7aWYoY1tIPj4yXXwwKXtjW0c+PjJdPWNbSD4+Ml07amcoYixmLDE4MzkxLEcpO1RmKGNbQz4+Ml18MCxjW0g+PjJdfDApfWVsc2UgbGcoYixmKTt3aGlsZSgxKXtpZighKGNbRis0Njg+PjJdfDApKWJyZWFrO2NbRD4+Ml09Y1tGKzQ2OD4+Ml07Y1tGKzQ2OD4+Ml09Y1soY1tEPj4yXXwwKSs0Pj4yXTtUZihjW0M+PjJdfDAsY1tEPj4yXXwwKX1QaChGKTtHPWNbQz4+Ml18MDtIPWNbRT4+Ml18MDtIPVVnKEcsSCl8MDtjW0U+PjJdPUg7SD1jW0U+PjJdfDA7aT1JO3JldHVybiBIfDB9ZnVuY3Rpb24gVEgoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wO2Q9aTtpPWkrMTZ8MDtlPWQrNHwwO2I9ZDtjW2U+PjJdPWE7bWcoY1tlPj4yXXwwKTtjW2I+PjJdPVdIKGNbZT4+Ml18MCwxLDEpfDA7aT1kO3JldHVybiBjW2I+PjJdfDB9ZnVuY3Rpb24gVUgoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTA7az1pO2k9aSszMnwwO2I9aysyNHwwO2U9aysyMHwwO2Y9aysxNnwwO2o9aysxMnwwO2Q9ays4fDA7Zz1rKzR8MDtoPWs7Y1tiPj4yXT1hO2NbZT4+Ml09Y1tjW2I+PjJdPj4yXTtjW2Y+PjJdPTA7d2hpbGUoMSl7aWYoKGNbZj4+Ml18MCk+PShjWyhjW2U+PjJdfDApKzIwPj4yXXwwKSl7Yj0xNDticmVha31jW2c+PjJdPTA7Y1toPj4yXT1jWyhjWyhjW2U+PjJdfDApKzE2Pj4yXXwwKSsoY1tmPj4yXTw8NCkrND4+Ml07aWYoY1toPj4yXXwwKXtpZighKG9nKGNbaD4+Ml18MCl8MCkpe2Nbaj4+Ml09cGcoY1toPj4yXXwwLDApfDA7aWYoKGNbaj4+Ml18MCk9PTd8KGNbaj4+Ml18MCk9PTMwODIpbWgoY1tlPj4yXXwwKTtpZihjW2o+PjJdfDApe2I9MTQ7YnJlYWt9Y1tnPj4yXT0xfXJnKGNbaD4+Ml18MCwxLGQpO2lmKChjW2Q+PjJdfDApIT0oY1tjWyhjWyhjW2U+PjJdfDApKzE2Pj4yXXwwKSsoY1tmPj4yXTw8NCkrMTI+PjJdPj4yXXwwKSl7d2ooY1tlPj4yXXwwLGNbZj4+Ml18MCk7Y1soY1tiPj4yXXwwKSsxMj4+Ml09MTd9aWYoY1tnPj4yXXwwKUdqKGNbaD4+Ml18MCl8MH1jW2Y+PjJdPShjW2Y+PjJdfDApKzF9aWYoKGJ8MCk9PTE0KXtpPWs7cmV0dXJufX1mdW5jdGlvbiBWSChhLGQsZSxmKXthPWF8MDtkPWR8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MDtsPWk7aT1pKzE2fDA7Zz1sKzEyfDA7aD1sKzh8MDtqPWwrNHwwO2s9bDtjW2c+PjJdPWE7Y1toPj4yXT1kO2Nbaj4+Ml09ZTtjW2s+PjJdPWY7aWYoIShjW2c+PjJdfDApKXtpPWw7cmV0dXJufWQ9Y1tqPj4yXXwwO2Q9WXcoY1tjW2c+PjJdPj4yXXwwLGNbaD4+Ml18MCxkLCgoZHwwKTwwKTw8MzE+PjMxKXwwO2NbKGNbZz4+Ml18MCkrMTc2Pj4yXT1kO2Q9KGNbZz4+Ml18MCkrMTQ0fDA7YltkPj4xXT1iW2Q+PjFdJi01MTN8KGNbaz4+Ml0mMSk8PDkmNjU1MzU7aT1sO3JldHVybn1mdW5jdGlvbiBXSChmLGcsaCl7Zj1mfDA7Zz1nfDA7aD1ofDA7dmFyIGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTA7cT1pO2k9aSszMnwwO2o9cSsxNnwwO2s9cSsxMnwwO2w9cSs4fDA7bT1xKzIwfDA7bj1xKzR8MDtvPXE7Y1trPj4yXT1mO2NbbD4+Ml09ZzthW20+PjBdPWg7Y1tuPj4yXT1jWyhjW2s+PjJdfDApKzQ+PjJdO2lmKCEoYVsoY1trPj4yXXwwKSs5Pj4wXXwwKSl7Y1tqPj4yXT0wO3A9Y1tqPj4yXXwwO2k9cTtyZXR1cm4gcHwwfWlmKChjWyhjW24+PjJdfDApKzc2Pj4yXXwwKSE9KGNbaz4+Ml18MCk/KGVbKGNbbj4+Ml18MCkrMjI+PjFdJjMyfDApIT0wOjApe2Nbaj4+Ml09MjYyO3A9Y1tqPj4yXXwwO2k9cTtyZXR1cm4gcHwwfWNbbz4+Ml09Y1soY1tuPj4yXXwwKSs3Mj4+Ml07d2hpbGUoMSl7aWYoIShjW28+PjJdfDApKXtwPTE1O2JyZWFrfWlmKCgoY1tjW28+PjJdPj4yXXwwKSE9KGNbaz4+Ml18MCk/KGNbKGNbbz4+Ml18MCkrND4+Ml18MCk9PShjW2w+PjJdfDApOjApPyhkWyhjW28+PjJdfDApKzg+PjBdfDApIT0oZFttPj4wXXwwKTowKWJyZWFrO2Nbbz4+Ml09Y1soY1tvPj4yXXwwKSsxMj4+Ml19aWYoKHB8MCk9PTE1KXtjW2o+PjJdPTA7cD1jW2o+PjJdfDA7aT1xO3JldHVybiBwfDB9aWYoKGRbbT4+MF18MCk9PTIpe3A9KGNbbj4+Ml18MCkrMjJ8MDtiW3A+PjFdPWVbcD4+MV18NjR9Y1tqPj4yXT0yNjI7cD1jW2o+PjJdfDA7aT1xO3JldHVybiBwfDB9ZnVuY3Rpb24gWEgoYixlLGYpe2I9YnwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wLG09MDtsPWk7aT1pKzMyfDA7Zz1sKzE2fDA7bT1sKzEyfDA7aD1sKzh8MDtqPWwrNHwwO2s9bDtjW20+PjJdPWI7Y1toPj4yXT1lO2Nbaj4+Ml09ZjtjW2s+PjJdPWNbKGNbbT4+Ml18MCkrOD4+Ml07d2hpbGUoMSl7aWYoIShjW2s+PjJdfDApKWJyZWFrO2lmKChjW2s+PjJdfDApIT0oY1tqPj4yXXwwKSl7aWYoIShjW2g+PjJdfDApKWJyZWFrO2lmKChjWyhjW2s+PjJdfDApKzUyPj4yXXwwKT09KGNbaD4+Ml18MCkpYnJlYWt9Y1trPj4yXT1jWyhjW2s+PjJdfDApKzg+PjJdfWlmKGNbaz4+Ml18MCl7Y1tnPj4yXT1ZSChjW2s+PjJdfDAsY1toPj4yXXwwLGNbaj4+Ml18MCl8MDttPWNbZz4+Ml18MDtpPWw7cmV0dXJuIG18MH1pZihjW2o+PjJdfDApe209KGNbaj4+Ml18MCkrNjR8MDthW20+PjBdPShkW20+PjBdfDApJi0zM31jW2c+PjJdPTA7bT1jW2c+PjJdfDA7aT1sO3JldHVybiBtfDB9ZnVuY3Rpb24gWUgoYSxiLGUpe2E9YXwwO2I9YnwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MDtsPWk7aT1pKzMyfDA7aj1sKzE2fDA7Zj1sKzEyfDA7Zz1sKzh8MDtoPWwrNHwwO2s9bDtjW2Y+PjJdPWE7Y1tnPj4yXT1iO2NbaD4+Ml09ZTthOndoaWxlKDEpe2RvIGlmKChjW2Y+PjJdfDApIT0oY1toPj4yXXwwKSl7aWYoMCE9KGNbZz4+Ml18MCk/KGNbKGNbZj4+Ml18MCkrNTI+PjJdfDApIT0oY1tnPj4yXXwwKTowKWJyZWFrO2lmKChkWyhjW2Y+PjJdfDApKzY2Pj4wXXwwfDApIT0xPyhkWyhjW2Y+PjJdfDApKzY2Pj4wXXwwfDApIT0yOjApe19IKGNbZj4+Ml18MCk7YnJlYWt9Y1trPj4yXT1aSChjW2Y+PjJdfDApfDA7aWYoY1trPj4yXXwwKXtmPTg7YnJlYWsgYX19d2hpbGUoMCk7Y1tmPj4yXT1jWyhjW2Y+PjJdfDApKzg+PjJdO2lmKCEoY1tmPj4yXXwwKSl7Zj0xMTticmVha319aWYoKGZ8MCk9PTgpe2Nbaj4+Ml09Y1trPj4yXTtrPWNbaj4+Ml18MDtpPWw7cmV0dXJuIGt8MH1lbHNlIGlmKChmfDApPT0xMSl7Y1tqPj4yXT0wO2s9Y1tqPj4yXXwwO2k9bDtyZXR1cm4ga3wwfXJldHVybiAwfWZ1bmN0aW9uIFpIKGIpe2I9YnwwO3ZhciBlPTAsZj0wLGc9MDtnPWk7aT1pKzE2fDA7ZT1nKzR8MDtmPWc7Y1tlPj4yXT1iO2I9Y1tlPj4yXXwwO2lmKChkWyhjW2U+PjJdfDApKzY2Pj4wXXwwfDApPT0yKWFbYis2Nj4+MF09MTtlbHNlIGNbYis2MD4+Ml09MDtjW2Y+PjJdPSRIKGNbZT4+Ml18MCl8MDtpZighKGNbZj4+Ml18MCkpe19IKGNbZT4+Ml18MCk7YVsoY1tlPj4yXXwwKSs2Nj4+MF09M31lPShjW2U+PjJdfDApKzY0fDA7YVtlPj4wXT0oZFtlPj4wXXwwKSYtMTU7aT1nO3JldHVybiBjW2Y+PjJdfDB9ZnVuY3Rpb24gX0goYil7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wO2Y9aTtpPWkrMTZ8MDtkPWYrNHwwO2U9ZjtjW2Q+PjJdPWI7Y1tlPj4yXT0wO3doaWxlKDEpe2lmKChjW2U+PjJdfDApPihhWyhjW2Q+PjJdfDApKzY4Pj4wXXwwKSlicmVhaztRQihjWyhjW2Q+PjJdfDApKzEyMCsoY1tlPj4yXTw8Mik+PjJdfDApO2NbKGNbZD4+Ml18MCkrMTIwKyhjW2U+PjJdPDwyKT4+Ml09MDtjW2U+PjJdPShjW2U+PjJdfDApKzF9YVsoY1tkPj4yXXwwKSs2OD4+MF09LTE7aT1mO3JldHVybn1mdW5jdGlvbiAkSChiKXtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MDtnPWk7aT1pKzE2fDA7ZT1nKzh8MDtmPWcrNHwwO2Q9ZztjW2U+PjJdPWI7Y1tmPj4yXT0wO2I9Y1tlPj4yXXwwO2lmKGFbKGNbZT4+Ml18MCkrNjk+PjBdfDApe2Q9YUkoYil8MDtlPShjW2U+PjJdfDApKzQwfDA7Y1tlPj4yXT1kO2NbZSs0Pj4yXT1DO2Y9Y1tmPj4yXXwwO2k9ZztyZXR1cm4gZnwwfWg9YkkoYil8MDtiPShjW2U+PjJdfDApKzQwfDA7Y1tiPj4yXT1oO2NbYis0Pj4yXT0wO2I9KGNbZT4+Ml18MCkrNDB8MDtjW2Q+PjJdPSRmKGNbYj4+Ml18MCxjW2IrND4+Ml18MCl8MDtpZighKGNbZD4+Ml18MCkpe2NbZj4+Ml09NztoPWNbZj4+Ml18MDtpPWc7cmV0dXJuIGh8MH1jW2Y+PjJdPWNJKGNbZT4+Ml18MCwwLGNbKGNbZT4+Ml18MCkrNDA+PjJdfDAsY1tkPj4yXXwwKXwwO2I9Y1tkPj4yXXwwO2lmKCEoY1tmPj4yXXwwKSl7Y1soY1tlPj4yXXwwKSs0OD4+Ml09YjtoPWNbZj4+Ml18MDtpPWc7cmV0dXJuIGh8MH1lbHNle0tkKGIpO2g9Y1tmPj4yXXwwO2k9ZztyZXR1cm4gaHwwfXJldHVybiAwfWZ1bmN0aW9uIGFJKGEpe2E9YXwwO3ZhciBiPTAsZD0wO2I9aTtpPWkrMTZ8MDtkPWI7Y1tkPj4yXT1hO1NGKGNbZD4+Ml18MCk7YT0oY1tkPj4yXXwwKSsxNnwwO0M9Y1thKzQ+PjJdfDA7aT1iO3JldHVybiBjW2E+PjJdfDB9ZnVuY3Rpb24gYkkoYSl7YT1hfDA7dmFyIGI9MCxkPTA7ZD1pO2k9aSsxNnwwO2I9ZDtjW2I+PjJdPWE7U0YoY1tiPj4yXXwwKTtpPWQ7cmV0dXJuIGNbKGNbYj4+Ml18MCkrMTYrMTI+PjJdfDB9ZnVuY3Rpb24gY0koYSxiLGQsZSl7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTA7Zj1pO2k9aSsxNnwwO2s9ZisxMnwwO2o9Zis4fDA7aD1mKzR8MDtnPWY7Y1trPj4yXT1hO2Nbaj4+Ml09YjtjW2g+PjJdPWQ7Y1tnPj4yXT1lO2E9UkYoY1trPj4yXXwwLGNbaj4+Ml18MCxjW2g+PjJdfDAsY1tnPj4yXXwwLDApfDA7aT1mO3JldHVybiBhfDB9ZnVuY3Rpb24gZEkoYSl7YT1hfDA7dmFyIGI9MCxkPTA7Yj1pO2k9aSsxNnwwO2Q9YjtjW2Q+PjJdPWE7bWcoY1tjW2Q+PjJdPj4yXXwwKTtpPWI7cmV0dXJufWZ1bmN0aW9uIGVJKGIpe2I9YnwwO3ZhciBlPTAsZj0wO2U9aTtpPWkrMTZ8MDtmPWU7Y1tmPj4yXT1iO2I9KGNbZj4+Ml18MCkrNjR8MDthW2I+PjBdPWRbYj4+MF18MHwxNjthWyhjW2NbZj4+Ml0+PjJdfDApKzExPj4wXT0xO2k9ZTtyZXR1cm59ZnVuY3Rpb24gZkkoYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTA7aD1pO2k9aSsxNnwwO2U9aCs4fDA7Zj1oKzR8MDtnPWg7Y1tlPj4yXT1hO2NbZj4+Ml09YjtjW2c+PjJdPWQ7aWYoY1tmPj4yXXwwKXtnPWNbZj4+Ml18MDtpPWg7cmV0dXJuIGd8MH1jW2c+PjJdPShjW2c+PjJdfDApKzcmLTg7ZD1jW2c+PjJdfDA7YT1jW2U+PjJdfDA7aWYoKGNbZz4+Ml18MCk8PShjWyhjW2U+PjJdfDApKzQ+PjJdfDApKXtnPWErNHwwO2NbZz4+Ml09KGNbZz4+Ml18MCktZDtjW2Y+PjJdPShjW2NbZT4+Ml0+PjJdfDApKyhjWyhjW2U+PjJdfDApKzQ+PjJdfDApO2c9Y1tmPj4yXXwwO2k9aDtyZXR1cm4gZ3wwfWVsc2V7Zz1hKzh8MDtjW2c+PjJdPShjW2c+PjJdfDApK2Q7Zz1jW2Y+PjJdfDA7aT1oO3JldHVybiBnfDB9cmV0dXJuIDB9ZnVuY3Rpb24gZ0koYixkLGUsZil7Yj1ifDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTA7bD1pO2k9aSsxNnwwO2c9bCsxMnwwO2g9bCs4fDA7aj1sKzR8MDtrPWw7Y1tnPj4yXT1iO2NbaD4+Ml09ZDtjW2o+PjJdPWU7Y1trPj4yXT1mO2lmKGFbKGNbaD4+Ml18MCkrMT4+MF18MCl7SUEoY1tjW2c+PjJdPj4yXXwwLGFbKGNbaD4+Ml18MCkrMT4+MF18MCxjWyhjW2g+PjJdfDApKzE2Pj4yXXwwKTthWyhjW2g+PjJdfDApKzE+PjBdPTA7Y1soY1toPj4yXXwwKSsxNj4+Ml09MH1pZigoY1trPj4yXXwwKTwwKXtNaChjW2c+PjJdfDAsKChjW2g+PjJdfDApLShjWyhjW2c+PjJdfDApKzg4Pj4yXXwwKXwwKS8yMHwwLGNbaj4+Ml18MCxjW2s+PjJdfDApO2k9bDtyZXR1cm59aWYoIShjW2s+PjJdfDApKWNbaz4+Ml09SmYoY1tqPj4yXXwwKXwwO2U9Y1trPj4yXXwwO2U9WXcoY1tjW2c+PjJdPj4yXXwwLGNbaj4+Ml18MCxlLCgoZXwwKTwwKTw8MzE+PjMxKXwwO2NbKGNbaD4+Ml18MCkrMTY+PjJdPWU7YVsoY1toPj4yXXwwKSsxPj4wXT0tMTtpPWw7cmV0dXJufWZ1bmN0aW9uIGhJKGEpe2E9YXwwO3ZhciBiPTAsZD0wO2I9aTtpPWkrMTZ8MDtkPWI7Y1tkPj4yXT1hO2E9KGNbZD4+Ml18MCkrMTJ8MDtjW2E+PjJdPShjW2E+PjJdfDApKzE7aT1iO3JldHVybn1mdW5jdGlvbiBpSShhKXthPWF8MDt2YXIgYj0wLGU9MDtlPWk7aT1pKzE2fDA7Yj1lO2NbYj4+Ml09YTtpPWU7cmV0dXJuIGRbKGNbYj4+Ml18MCkrOT4+MF18MHwwfWZ1bmN0aW9uIGpJKGUsZil7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MDtxPWk7aT1pKzQ4fDA7bz1xO2c9cSszMnwwO2g9cSsyOHwwO2o9cSsyNHwwO2w9cSsyMHwwO209cSsxNnwwO3A9cSsxMnwwO249cSs4fDA7az1xKzR8MDtjW2g+PjJdPWU7Y1tqPj4yXT1mO2NbbD4+Ml09Y1tjW2o+PjJdPj4yXTtjW3A+PjJdPTA7Y1trPj4yXT1jW2NbaD4+Ml0+PjJdO2lmKGNbKGNbaj4+Ml18MCkrMTY+PjJdfDApe2NbZz4+Ml09MTtwPWNbZz4+Ml18MDtpPXE7cmV0dXJuIHB8MH1pZigoY1soY1tsPj4yXXwwKSs0Pj4yXXwwKSE9MD8oY1soY1tsPj4yXXwwKSs0Pj4yXXwwKSE9KGNbKGNbbD4+Ml18MCkrOD4+Ml18MCk6MCl7Y1tnPj4yXT0wO3A9Y1tnPj4yXXwwO2k9cTtyZXR1cm4gcHwwfWNbbT4+Ml09c2goY1trPj4yXXwwLDcyLDApfDA7aWYoIShjW20+PjJdfDApKXtjW2c+PjJdPTA7cD1jW2c+PjJdfDA7aT1xO3JldHVybiBwfDB9ZT1xaChjW2s+PjJdfDAsY1soY1tqPj4yXXwwKSs0Pj4yXXwwKXwwO2NbY1ttPj4yXT4+Ml09ZTtpZighKGNbY1ttPj4yXT4+Ml18MCkpe1RmKGNbaz4+Ml18MCxjW20+PjJdfDApO2NbZz4+Ml09MDtwPWNbZz4+Ml18MDtpPXE7cmV0dXJuIHB8MH1jWyhjW2o+PjJdfDApKzE2Pj4yXT1jW20+PjJdO2JbKGNbbT4+Ml18MCkrMzY+PjFdPTE7Y1soY1ttPj4yXXwwKSs2ND4+Ml09Y1soY1soY1trPj4yXXwwKSsxNj4+Ml18MCkrMTI+PjJdO2U9KGNbbT4+Ml18MCkrNDJ8MDthW2U+PjBdPWRbZT4+MF18MHwxNjtjWyhjW20+PjJdfDApKzQ4Pj4yXT0wO2JbKGNbbT4+Ml18MCkrMzI+PjFdPS0xO2U9Y1trPj4yXXwwO2Y9Y1ttPj4yXXwwOyR3KGUsZixxaChjW2s+PjJdfDAsY1tjW20+PjJdPj4yXXwwKXwwKTskdyhjW2s+PjJdfDAsY1ttPj4yXXwwLDApO2Y9Y1trPj4yXXwwO2U9Y1ttPj4yXXwwOyR3KGYsZSxxaChjW2s+PjJdfDAsY1tjW20+PjJdPj4yXXwwKXwwKTtjW24+PjJdPUp6KGNbaz4+Ml18MCxjW20+PjJdfDAsY1tqPj4yXXwwLGNbKGNbbD4+Ml18MCkrOD4+Ml18MCxwKXwwO2lmKGNbbj4+Ml18MCl7bj1jW2g+PjJdfDA7Y1tvPj4yXT1jW3A+PjJdO0VoKG4sMTgzOTEsbyk7VGYoY1trPj4yXXwwLGNbcD4+Ml18MCk7a0koY1trPj4yXXwwLGNbaj4+Ml18MCk7Y1tnPj4yXT0wO3A9Y1tnPj4yXXwwO2k9cTtyZXR1cm4gcHwwfWVsc2V7Y1tnPj4yXT0xO3A9Y1tnPj4yXXwwO2k9cTtyZXR1cm4gcHwwfXJldHVybiAwfWZ1bmN0aW9uIGtJKGIsZSl7Yj1ifDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MDtqPWk7aT1pKzE2fDA7Zj1qKzh8MDtnPWorNHwwO2g9ajtjW2Y+PjJdPWI7Y1tnPj4yXT1lO2NbaD4+Ml09Y1soY1tnPj4yXXwwKSsxNj4+Ml07aWYoIShjW2g+PjJdfDApKXtpPWo7cmV0dXJufWU9KGNbaD4+Ml18MCkrNDJ8MDthW2U+PjBdPWRbZT4+MF18MHwyO1JmKGNbZj4+Ml18MCxjW2g+PjJdfDApO2NbKGNbZz4+Ml18MCkrMTY+PjJdPTA7aT1qO3JldHVybn1mdW5jdGlvbiBsSShiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTA7bD1pO2k9aSszMnwwO2U9bCsxNnwwO2Y9bCsxMnwwO2o9bCs4fDA7aD1sKzR8MDtnPWw7Y1tlPj4yXT1iO2NbZj4+Ml09ZDtjW2g+PjJdPTA7Y1tjW2Y+PjJdPj4yXT0wO3doaWxlKDEpe2lmKCEoYVtjW2U+PjJdPj4wXXwwKSl7az02O2JyZWFrfWNbZz4+Ml09JHUoY1tlPj4yXXwwLGopfDA7ZD1jW2c+PjJdfDA7aWYoKGNbaj4+Ml18MCk9PTEzNSlicmVhaztjW2g+PjJdPShjW2g+PjJdfDApK2Q7Y1tlPj4yXT0oY1tlPj4yXXwwKSsoY1tnPj4yXXwwKX1pZigoa3wwKT09Nil7az1jW2g+PjJdfDA7aT1sO3JldHVybiBrfDB9Y1tjW2Y+PjJdPj4yXT1kO2s9Y1toPj4yXXwwO2k9bDtyZXR1cm4ga3wwfWZ1bmN0aW9uIG1JKGEsZCl7YT1hfDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wO2c9aTtpPWkrMTZ8MDtlPWcrNHwwO2Y9ZztjW2U+PjJdPWE7Y1tmPj4yXT1kO1hnKGNbZT4+Ml18MCk7ZD1jW2U+PjJdfDA7YT1jW2Y+PjJdfDA7ZT1kKzQwfDA7ZG97Y1tkPj4yXT1jW2E+PjJdO2Q9ZCs0fDA7YT1hKzR8MH13aGlsZSgoZHwwKTwoZXwwKSk7YlsoY1tmPj4yXXwwKSs4Pj4xXT0xO2NbKGNbZj4+Ml18MCkrMjQ+PjJdPTA7aT1nO3JldHVybn1mdW5jdGlvbiBuSSgpe3JldHVybiAzMjB9ZnVuY3Rpb24gb0koYSxkKXthPWF8MDtkPWR8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTA7Zj1pO2k9aSsyMjR8MDtnPWYrMjIwfDA7aD1mKzIxNnwwO2w9ZjtrPWYrMjEyfDA7aj1mKzIwOHwwO2NbZz4+Ml09YTtjW2g+PjJdPWQ7VFIobHwwLGNbZz4+Ml18MCwyMDgpfDA7VFIoY1tnPj4yXXwwLGNbaD4+Ml18MCwyMDgpfDA7VFIoY1toPj4yXXwwLGx8MCwyMDgpfDA7Y1trPj4yXT1jWyhjW2c+PjJdfDApKzg+PjJdO2NbKGNbZz4+Ml18MCkrOD4+Ml09Y1soY1toPj4yXXwwKSs4Pj4yXTtjWyhjW2g+PjJdfDApKzg+PjJdPWNbaz4+Ml07Y1trPj4yXT1jWyhjW2c+PjJdfDApKzQ+PjJdO2NbKGNbZz4+Ml18MCkrND4+Ml09Y1soY1toPj4yXXwwKSs0Pj4yXTtjWyhjW2g+PjJdfDApKzQ+PjJdPWNbaz4+Ml07Y1tqPj4yXT1jWyhjW2c+PjJdfDApKzE3Nj4+Ml07Y1soY1tnPj4yXXwwKSsxNzY+PjJdPWNbKGNbaD4+Ml18MCkrMTc2Pj4yXTtjWyhjW2g+PjJdfDApKzE3Nj4+Ml09Y1tqPj4yXTtkPShjW2g+PjJdfDApKzE0NHwwO2JbZD4+MV09YltkPj4xXSYtNTEzfCgoZVsoY1tnPj4yXXwwKSsxNDQ+PjFdfDApPj4+OSYxKTw8OSY2NTUzNTtpPWY7cmV0dXJufWZ1bmN0aW9uIHBJKGEpe2E9YXwwO3ZhciBiPTAsZD0wO2I9aTtpPWkrMTZ8MDtkPWI7Y1tkPj4yXT1hO2NbKGNbZD4+Ml18MCkrNDA+PjJdPTA7aT1iO3JldHVybn1mdW5jdGlvbiBxSShhLGIpe2E9YXwwO2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaj0wLGs9MC4wO2o9aTtpPWkrMzJ8MDtkPWorMTZ8MDtlPWorMTJ8MDtnPWorOHwwO2Y9ajtjW2Q+PjJdPWE7Y1tlPj4yXT1iO2lmKChjW2NbZD4+Ml0+PjJdfDApPj0yPyhjWyhjW2Q+PjJdfDApKzcyPj4yXXwwKSE9MDowKXtjW2c+PjJdPVliW2NbKGNbZD4+Ml18MCkrNzI+PjJdJjI1NV0oY1tkPj4yXXwwLGNbZT4+Ml18MCl8MDtnPWNbZz4+Ml18MDtpPWo7cmV0dXJuIGd8MH1jW2c+PjJdPVliW2NbKGNbZD4+Ml18MCkrNjQ+PjJdJjI1NV0oY1tkPj4yXXwwLGYpfDA7az0raFtmPj4zXSo4NjQuMGU1O2E9K04oayk+PTEuMD8oaz4wLjA/fn4rJCgrTShrLzQyOTQ5NjcyOTYuMCksNDI5NDk2NzI5NS4wKT4+PjA6fn4rWigoay0rKH5+az4+PjApKS80Mjk0OTY3Mjk2LjApPj4+MCk6MDtmPWNbZT4+Ml18MDtjW2Y+PjJdPX5+az4+PjA7Y1tmKzQ+PjJdPWE7Zz1jW2c+PjJdfDA7aT1qO3JldHVybiBnfDB9ZnVuY3Rpb24gckkoZil7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MDt5PWk7aT1pKzgwfDA7dz15Kzh8MDtxPXk7cj15KzY4fDA7cz15KzY0fDA7bj15KzYwfDA7bz15KzU2fDA7Zz15KzUyfDA7cD15KzQ4fDA7aD15KzQ0fDA7aj15KzQwfDA7dj15KzM2fDA7dD15KzMyfDA7eD15KzI4fDA7dT15KzI0fDA7az15KzIwfDA7bT15KzE2fDA7bD15KzEyfDA7Y1tzPj4yXT1mO2Nbbz4+Ml09MDtjW2c+PjJdPTA7Y1twPj4yXT0wO2NbaD4+Ml09Y1tjW3M+PjJdPj4yXTtjW3Y+PjJdPTA7Y1t0Pj4yXT0oY1soY1tzPj4yXXwwKSs5Mj4+Ml18MCkrNDA7T0MoY1t0Pj4yXXwwLDgpO2NbKGNbcz4+Ml18MCkrMTA0Pj4yXT0wO2lmKChjWyhjW3M+PjJdfDApKzQwPj4yXXwwKT09Nyl7bWgoY1toPj4yXXwwKTtjW3I+PjJdPTE7eD1jW3I+PjJdfDA7aT15O3JldHVybiB4fDB9Y1tuPj4yXT1jWyhjW3M+PjJdfDApKzEzNj4+Ml07YTpkbyBpZigoKGVbKGNbcz4+Ml18MCkrMTQ0Pj4xXXwwKT4+PjImM3wwKT09MSl7Y1twPj4yXT0oY1soY1tzPj4yXXwwKSs5Mj4+Ml18MCkrMzYwO2lmKGVbKGNbcD4+Ml18MCkrOD4+MV0mMTYpe2Nbbz4+Ml09KChjWyhjW3A+PjJdfDApKzEyPj4yXXwwKT4+PjApLzR8MDtjW2c+PjJdPWNbKGNbcD4+Ml18MCkrMTY+PjJdfWNbaj4+Ml09MDt3aGlsZSgxKXtpZigoY1tqPj4yXXwwKT49KGNbbz4+Ml18MCkpYnJlYWsgYTtjW24+PjJdPShjW24+PjJdfDApKyhjWyhjWyhjW2c+PjJdfDApKyhjW2o+PjJdPDwyKT4+Ml18MCkrND4+Ml18MCk7Y1tqPj4yXT0oY1tqPj4yXXwwKSsxfX13aGlsZSgwKTtkb3t6PShjW3M+PjJdfDApKzM2fDA7Zj1jW3o+PjJdfDA7Y1t6Pj4yXT1mKzE7Y1tqPj4yXT1mO2lmKChjW2o+PjJdfDApPj0oY1tuPj4yXXwwKSlicmVhaztpZigoKGVbKGNbcz4+Ml18MCkrMTQ0Pj4xXXwwKT4+PjImM3wwKSE9MilicmVha313aGlsZSgoZFsoY1soY1tzPj4yXXwwKSs4OD4+Ml18MCkrKChjW2o+PjJdfDApKjIwfDApPj4wXXwwKSE9MTYyKTtkbyBpZigoY1tqPj4yXXwwKT49KGNbbj4+Ml18MCkpe2NbKGNbcz4+Ml18MCkrNDA+PjJdPTA7Y1t2Pj4yXT0xMDF9ZWxzZXtpZihjWyhjW2g+PjJdfDApKzI0OD4+Ml18MCl7Y1soY1tzPj4yXXwwKSs0MD4+Ml09OTtjW3Y+PjJdPTE7ej1jW3M+PjJdfDA7QUkoeixsaChjWyhjW3M+PjJdfDApKzQwPj4yXXwwKXwwLHEpO2JyZWFrfWlmKChjW2o+PjJdfDApPChjWyhjW3M+PjJdfDApKzEzNj4+Ml18MCkpY1t1Pj4yXT0oY1soY1tzPj4yXXwwKSs4OD4+Ml18MCkrKChjW2o+PjJdfDApKjIwfDApO2Vsc2V7Y1tqPj4yXT0oY1tqPj4yXXwwKS0oY1soY1tzPj4yXXwwKSsxMzY+PjJdfDApO2Nbaz4+Ml09MDt3aGlsZSgxKXtpZigoY1tqPj4yXXwwKTwoY1soY1soY1tnPj4yXXwwKSsoY1trPj4yXTw8Mik+PjJdfDApKzQ+PjJdfDApKWJyZWFrO2Nbaj4+Ml09KGNbaj4+Ml18MCktKGNbKGNbKGNbZz4+Ml18MCkrKGNbaz4+Ml08PDIpPj4yXXwwKSs0Pj4yXXwwKTtjW2s+PjJdPShjW2s+PjJdfDApKzF9Y1t1Pj4yXT0oY1tjWyhjW2c+PjJdfDApKyhjW2s+PjJdPDwyKT4+Ml0+PjJdfDApKygoY1tqPj4yXXwwKSoyMHwwKX1pZigoKGVbKGNbcz4+Ml18MCkrMTQ0Pj4xXXwwKT4+PjImM3wwKT09MT8oYlsoY1t0Pj4yXXwwKSs4Pj4xXT00LHE9Y1tqPj4yXXwwLHo9Y1t0Pj4yXXwwLGNbej4+Ml09cSxjW3orND4+Ml09KChxfDApPDApPDwzMT4+MzEsY1t0Pj4yXT0oY1t0Pj4yXXwwKSs0MCxiWyhjW3Q+PjJdfDApKzg+PjFdPTI1NjIsej1STShkW2NbdT4+Ml0+PjBdfDApfDAsY1soY1t0Pj4yXXwwKSsxNj4+Ml09eix6PUpmKGNbKGNbdD4+Ml18MCkrMTY+PjJdfDApfDAsY1soY1t0Pj4yXXwwKSsxMj4+Ml09eixhWyhjW3Q+PjJdfDApKzEwPj4wXT0xLGNbdD4+Ml09KGNbdD4+Ml18MCkrNDAsKGFbKGNbdT4+Ml18MCkrMT4+MF18MCk9PS0xOCk6MCl7Y1ttPj4yXT0oY1tvPj4yXXwwKSsxPDwyO2NbbD4+Ml09MDt3aGlsZSgxKXtpZigoY1tsPj4yXXwwKT49KGNbbz4+Ml18MCkpYnJlYWs7aWYoKGNbKGNbZz4+Ml18MCkrKGNbbD4+Ml08PDIpPj4yXXwwKT09KGNbKGNbdT4+Ml18MCkrMTY+PjJdfDApKWJyZWFrO2NbbD4+Ml09KGNbbD4+Ml18MCkrMX1pZigoY1tsPj4yXXwwKT09KGNbbz4+Ml18MCk/MD09KE94KGNbcD4+Ml18MCxjW20+PjJdfDAsKGNbbz4+Ml18MCkhPTAmMSl8MCk6MCl7Y1tnPj4yXT1jWyhjW3A+PjJdfDApKzE2Pj4yXTtxPWNbKGNbdT4+Ml18MCkrMTY+PjJdfDA7ej1jW28+PjJdfDA7Y1tvPj4yXT16KzE7Y1soY1tnPj4yXXwwKSsoejw8Mik+PjJdPXE7ej0oY1twPj4yXXwwKSs4fDA7Ylt6Pj4xXT1lW3o+PjFdfDE2O2NbKGNbcD4+Ml18MCkrMTI+PjJdPWNbbz4+Ml08PDJ9fWJbKGNbdD4+Ml18MCkrOD4+MV09NDtxPWNbKGNbdT4+Ml18MCkrND4+Ml18MDt6PWNbdD4+Ml18MDtjW3o+PjJdPXE7Y1t6KzQ+PjJdPSgocXwwKTwwKTw8MzE+PjMxO2NbdD4+Ml09KGNbdD4+Ml18MCkrNDA7YlsoY1t0Pj4yXXwwKSs4Pj4xXT00O3o9Y1soY1t1Pj4yXXwwKSs4Pj4yXXwwO3E9Y1t0Pj4yXXwwO2NbcT4+Ml09ejtjW3ErND4+Ml09KCh6fDApPDApPDwzMT4+MzE7Y1t0Pj4yXT0oY1t0Pj4yXXwwKSs0MDtiWyhjW3Q+PjJdfDApKzg+PjFdPTQ7cT1jWyhjW3U+PjJdfDApKzEyPj4yXXwwO3o9Y1t0Pj4yXXwwO2Nbej4+Ml09cTtjW3orND4+Ml09KChxfDApPDApPDwzMT4+MzE7Y1t0Pj4yXT0oY1t0Pj4yXXwwKSs0MDtpZihOeChjW3Q+PjJdfDAsMTAwKXwwKXtjW3I+PjJdPTE7ej1jW3I+PjJdfDA7aT15O3JldHVybiB6fDB9YlsoY1t0Pj4yXXwwKSs4Pj4xXT01MTQ7Y1t4Pj4yXT1TTShjW3U+PjJdfDAsY1soY1t0Pj4yXXwwKSsxNj4+Ml18MCxjWyhjW3Q+PjJdfDApKzI0Pj4yXXwwKXwwO2c9Y1t0Pj4yXXwwO2lmKChjW3g+PjJdfDApIT0oY1soY1t0Pj4yXXwwKSsxNj4+Ml18MCkpe2NbZysxMj4+Ml09MDtnaChjW3Q+PjJdfDAsY1t4Pj4yXXwwLC0xLDEsMCl8MH1lbHNle3o9SmYoY1tnKzE2Pj4yXXwwKXwwO2NbKGNbdD4+Ml18MCkrMTI+PjJdPXo7YVsoY1t0Pj4yXXwwKSsxMD4+MF09MX1jW3Q+PjJdPShjW3Q+PjJdfDApKzQwO2RvIGlmKCgoZVsoY1tzPj4yXXwwKSsxNDQ+PjFdfDApPj4+MiYzfDApPT0xKXtpZighKE54KGNbdD4+Ml18MCw0KXwwKSl7YlsoY1t0Pj4yXXwwKSs4Pj4xXT01MTQ7Y1soY1t0Pj4yXXwwKSsxMj4+Ml09Mjt6PWNbKGNbdD4+Ml18MCkrMTY+PjJdfDA7Y1t3Pj4yXT1kWyhjW3U+PjJdfDApKzM+PjBdO1FkKDMseiw0MTkxMCx3KXwwO2FbKGNbdD4+Ml18MCkrMTA+PjBdPTE7Y1t0Pj4yXT0oY1t0Pj4yXXwwKSs0MDtiWyhjW3Q+PjJdfDApKzg+PjFdPTE7YnJlYWt9Y1tyPj4yXT0xO3o9Y1tyPj4yXXwwO2k9eTtyZXR1cm4genwwfXdoaWxlKDApO2JbKGNbcz4+Ml18MCkrMTQwPj4xXT04LSgoKGVbKGNbcz4+Ml18MCkrMTQ0Pj4xXXwwKT4+PjImMyktMTw8Mik7Y1soY1tzPj4yXXwwKSsxMDQ+PjJdPShjWyhjW3M+PjJdfDApKzkyPj4yXXwwKSs0MDtjWyhjW3M+PjJdfDApKzQwPj4yXT0wO2Nbdj4+Ml09MTAwfXdoaWxlKDApO2Nbcj4+Ml09Y1t2Pj4yXTt6PWNbcj4+Ml18MDtpPXk7cmV0dXJuIHp8MH1mdW5jdGlvbiBzSShmKXtmPWZ8MDt2YXIgZz0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxEPTAsRT0wLEY9MCxHPTAsSD0wLEk9MCxKPTAsSz0wLEw9MCxPPTAsUD0wLFE9MCxSPTAsUz0wLFQ9MCxVPTAsVj0wLFc9MCxYPTAsWT0wLF89MCxhYT0wLGJhPTAsY2E9MCxkYT0wLGVhPTAsZmE9MCxnYT0wLGhhPTAsaWE9MCxqYT0wLGthPTAsbGE9MCxtYT0wLG5hPTAsb2E9MCxwYT0wLHFhPTAscmE9MCxzYT0wLHRhPTAsdWE9MCx2YT0wLHdhPTAseGE9MCx5YT0wLHphPTAsQWE9MCxCYT0wLENhPTAsRGE9MCxFYT0wLEZhPTAsR2E9MCxIYT0wLElhPTAsSmE9MCxLYT0wLExhPTAsTWE9MCxOYT0wLE9hPTAsUGE9MCxRYT0wLFJhPTAsU2E9MCxUYT0wLFVhPTAsVmE9MCxXYT0wLFhhPTAsWWE9MCxaYT0wLF9hPTAsJGE9MCxhYj0wLGJiPTAsY2I9MCxkYj0wLGViPTAsZmI9MCxnYj0wLGhiPTAsaWI9MCxqYj0wLGtiPTAsbGI9MCxtYj0wLG5iPTAsb2I9MCxwYj0wLHFiPTAscmI9MCxzYj0wLHRiPTAsdWI9MCx2Yj0wLHdiPTAseGI9MCx5Yj0wLHpiPTAsQWI9MCxCYj0wLENiPTAsRGI9MCxFYj0wLEZiPTAsR2I9MCxIYj0wLEliPTAsSmI9MCxLYj0wLExiPTAsTWI9MCxOYj0wLFBiPTAsUWI9MCxTYj0wLFZiPTAsX2I9MCwkYj0wLGFjPTAsYmM9MCxjYz0wLGRjPTAsZWM9MCxmYz0wLGdjPTAsaGM9MCxpYz0wLGpjPTAsa2M9MCxsYz0wLG1jPTAsbmM9MCxvYz0wLHBjPTAscWM9MCxyYz0wLHNjPTAsdGM9MCx1Yz0wLHZjPTAsd2M9MCx4Yz0wLHljPTAsemM9MCxBYz0wLEJjPTAsQ2M9MCxEYz0wLEVjPTAsRmM9MCxHYz0wLEhjPTAsSWM9MCxKYz0wLEtjPTAsTGM9MCxNYz0wLE5jPTAsT2M9MCxQYz0wLFFjPTAsUmM9MCxTYz0wLFRjPTAsVWM9MCxWYz0wLFdjPTAsWGM9MCxZYz0wLFpjPTAsX2M9MCwkYz0wLGFkPTAsYmQ9MCxjZD0wLGRkPTAsZWQ9MCxmZD0wLGdkPTAsaGQ9MCxpZD0wLGpkPTAsa2Q9MCxsZD0wLG1kPTAsbmQ9MCxvZD0wLHBkPTAscWQ9MCxyZD0wLHNkPTAsdGQ9MCx1ZD0wLHZkPTAsd2Q9MCx4ZD0wLHlkPTAsemQ9MCxBZD0wLEJkPTAsQ2Q9MCxEZD0wLEVkPTAsRmQ9MCxHZD0wLEhkPTAsSWQ9MCxKZD0wLExkPTAsTWQ9MCxOZD0wLE9kPTAsUGQ9MCxRZD0wLFRkPTAsVWQ9MCxWZD0wLFdkPTAsWGQ9MCxZZD0wLFpkPTAsX2Q9MCxhZT0wLGJlPTAsY2U9MCxkZT0wLGVlPTAsZmU9MCxnZT0wLGhlPTAsaWU9MCxqZT0wLGtlPTAsbGU9MCxtZT0wLG5lPTAsb2U9MCxwZT0wLHFlPTAscmU9MCxzZT0wLHRlPTAsdWU9MCx2ZT0wLHdlPTAseGU9MCx5ZT0wLHplPTAsQWU9MCxCZT0wLENlPTAsRGU9MCxFZT0wLEZlPTAsR2U9MCxIZT0wLEllPTAsSmU9MCxLZT0wLExlPTAsTWU9MCxOZT0wLE9lPTAsUGU9MCxRZT0wLFJlPTAsU2U9MCxUZT0wLFVlPTAsVmU9MCxXZT0wLFhlPTAsWWU9MCxaZT0wLF9lPTAsYWY9MCxiZj0wLGNmPTAsZGY9MCxlZj0wLGZmPTAsZ2Y9MCxoZj0wLGpmPTAsa2Y9MCxsZj0wLG1mPTAsbmY9MCxvZj0wLHBmPTAscWY9MCxyZj0wLHNmPTAsdGY9MCx1Zj0wLHZmPTAsd2Y9MCx4Zj0wLjAseWY9MDt2Zj1pO2k9aSsxODcyfDA7SWU9dmYrNTM2fDA7SGU9dmYrNTI4fDA7R2U9dmYrNTIwfDA7amY9dmYrNTA0fDA7aGY9dmYrNDk2fDA7RmU9dmYrNDg4fDA7RWU9dmYrNDgwfDA7RGU9dmYrNDcyfDA7Q2U9dmYrNDY0fDA7QmU9dmYrNDU2fDA7QWU9dmYrNDQwfDA7Z2Y9dmYrNDMyfDA7emU9dmYrNDI0fDA7eWU9dmYrNDE2fDA7eGU9dmYrNDA4fDA7d2U9dmYrNDAwfDA7dmU9dmYrMzkyfDA7b2Y9dmYrMzc2fDA7bmY9dmYrMzY4fDA7bWY9dmYrMzYwfDA7bGY9dmYrMzUyfDA7cWY9dmYrMTY1NnwwO2VmPXZmKzE2NTJ8MDtwZj12ZisxNjQ4fDA7dWY9dmYrMTY0NHwwO3JmPXZmKzE2NDB8MDtmZj12ZisxODYyfDA7Rz12ZisxODYxfDA7ZWE9dmYrMTYzNnwwO3RmPXZmKzE2MzJ8MDtfYT12ZisxNjI4fDA7bD12ZisxNjI0fDA7SmM9dmYrMTYyMHwwO0tjPXZmKzE2MTZ8MDtMYz12ZisxNjEyfDA7ZGQ9dmYrMTYwOHwwO249dmYrMTYwNHwwO3NmPXZmKzM0NHwwO2c9dmYrMTYwMHwwO19iPXZmKzE1OTZ8MDtDZD12ZisxNTkyfDA7QmM9dmYrMTU4OHwwO2tmPXZmKzE1ODR8MDtBPXZmKzE1ODB8MDtkYj12ZisxNjcwfDA7c2Q9dmYrMTU3NnwwO0VhPXZmKzE1NzJ8MDtrYj12ZisxNTY4fDA7b2I9dmYrMTU2NHwwO0ZhPXZmKzE1NjB8MDtSYz12ZisxNTU2fDA7UT12ZisxNTUyfDA7TWE9dmYrMzM2fDA7dz12ZisxODYwfDA7Sz12ZisxNjY4fDA7bmU9dmYrMTY2NnwwO29lPXZmKzE2NjR8MDthYT12ZiszMjh8MDtjYT12ZiszMjB8MDtMZD12ZiszMTJ8MDtNZD12ZiszMDR8MDtHYT12ZisxNTQ4fDA7aGM9dmYrMTU0NHwwO1c9dmYrMTU0MHwwO2ljPXZmKzE1MzZ8MDtiYT12ZisyOTZ8MDtwZT12ZisyODh8MDtkYT12ZisyODB8MDtoYj12ZisxODU5fDA7TmQ9dmYrMTUzMnwwO1FkPXZmKzE1Mjh8MDtyPXZmKzE4NTh8MDtMPXZmKzE2NjJ8MDtPPXZmKzE2NjB8MDtJYT12ZisxNTI0fDA7WD12ZisxNTIwfDA7bmI9dmYrMTUxNnwwO3BiPXZmKzE1MTJ8MDtOYz12ZisxNTA4fDA7dWE9dmYrMTUwNHwwOyRiPXZmKzE1MDB8MDt4PXZmKzE0OTZ8MDtyZT12ZisxNDkyfDA7c2U9dmYrMTQ4OHwwO3k9dmYrMTQ4NHwwO3FiPXZmKzE0ODB8MDt4Yj12ZisxNDc2fDA7YWM9dmYrMTQ3MnwwO209dmYrMTQ2OHwwO0NhPXZmKzE0NjR8MDtTPXZmKzE0NjB8MDt5Yz12ZisxNDU2fDA7ZmU9dmYrMjQwfDA7VGU9dmYrMTQ1MnwwO1llPXZmKzE0NDh8MDtXZT12ZisxNDQ0fDA7ZmI9dmYrMTQ0MHwwO2diPXZmKzIzMnwwO3Y9dmYrMTQzNnwwO2plPXZmKzE0MzJ8MDtpZD12ZisxNDI4fDA7UmU9dmYrMTQyNHwwO3o9dmYrMTg1N3wwO2FmPXZmKzE0MjB8MDtoZD12ZisxNDE2fDA7UWE9dmYrMjI0fDA7V2E9dmYrMTQxMnwwO05hPXZmKzIxNnwwO2JiPXZmKzIwOHwwO2FiPXZmKzE0MDh8MDtpZT12ZisxNDA0fDA7dWM9dmYrMTQwMHwwO1FjPXZmKzEzOTZ8MDtUYT12ZisxMzkyfDA7U2U9dmYrMTM4OHwwO0o9dmYrMTM4NHwwO1Y9dmYrMTM4MHwwO0JhPXZmKzEzNzZ8MDtEYT12ZisxMzcyfDA7UmE9dmYrMjAwfDA7YmM9dmYrMTM2OHwwO21iPXZmKzEzNjR8MDtfZT12ZisxMzYwfDA7WmE9dmYrMTM1NnwwO2NkPXZmKzEzNTJ8MDtrZD12ZisxMzQ4fDA7b2Q9dmYrMTM0NHwwO3NhPXZmKzEzNDB8MDt2YT12ZisxMzM2fDA7emE9dmYrMTMzMnwwO3lhPXZmKzEzMjh8MDtEPXZmKzEzMjR8MDtyYT12ZisxMzIwfDA7dGI9dmYrMTMxNnwwO25hPXZmKzEzMTJ8MDtrYT12ZisxMzA4fDA7b2E9dmYrMTMwNHwwO2dhPXZmKzEzMDB8MDtmYT12ZisxMjk2fDA7dmM9dmYrMTI5MnwwO1VhPXZmKzEyODh8MDtPYz12ZisxMjg0fDA7cmI9dmYrMTI4MHwwO2hhPXZmKzEyNzZ8MDtLZT12ZisxMjcyfDA7QWQ9dmYrMTI2OHwwO2xjPXZmKzEyNjR8MDt3Yz12ZisxMjYwfDA7cWM9dmYrMTI1NnwwO1BjPXZmKzEyNTJ8MDtEZD12ZisxMjQ4fDA7cmM9dmYrMTI0NHwwO3liPXZmKzEyNDB8MDtzYz12ZisxMjM2fDA7VGQ9dmYrMTIzMnwwO2ViPXZmKzEyMjh8MDt6Yj12ZisxMjI0fDA7R2Q9dmYrMTIwOHwwO1ZhPXZmKzEyMDB8MDtsYT12ZisxOTJ8MDtIPXZmKzExOTZ8MDtzPXZmKzExOTJ8MDttZT12ZisxMTg4fDA7d2E9dmYrMTE4NHwwO0FiPXZmKzExODB8MDtVZD12ZisxMTc2fDA7R2M9dmYrMTE3MnwwO0hjPXZmKzExNjh8MDtIZD12ZisxMTUyfDA7cT12ZisxNjc0fDA7QmI9dmYrMTE0OHwwO2NjPXZmKzExNDR8MDtWZD12ZisxMTQwfDA7bWE9dmYrMTg0fDA7cWU9dmYrMTc2fDA7Q2I9dmYrMTEzNnwwO1dkPXZmKzExMzJ8MDtCPXZmKzExMjh8MDtTYz12ZisxMTI0fDA7Q2M9dmYrMTEyMHwwO3RjPXZmKzExMTZ8MDtNYz12ZisxMTEyfDA7RGI9dmYrMTEwOHwwO2hlPXZmKzExMDR8MDtVZT12ZisxMTAwfDA7bGQ9dmYrMTA5NnwwO2liPXZmKzEwOTJ8MDtMZT12ZisxNDR8MDtFYj12ZisxMDg4fDA7VmU9dmYrMTA4NHwwO21kPXZmKzEwODB8MDtqYj12ZisxMDc2fDA7RmI9dmYrMTA3MnwwO1hkPXZmKzEwNjh8MDtYYT12ZisxMDY0fDA7R2I9dmYrMTA2MHwwO0hiPXZmKzEwNTZ8MDtkYz12ZisxMDUyfDA7SGE9dmYrMTA0OHwwO0liPXZmKzEwNDR8MDt0ZT12ZisxMzZ8MDt0ZD12ZisxMDQwfDA7WGM9dmYrMTAzNnwwO0piPXZmKzEwMzJ8MDtLYj12ZisxMDI4fDA7ZWM9dmYrMTAyNHwwO1lkPXZmKzEwMjB8MDtMYj12ZisxMDE2fDA7ZmM9dmYrMTAxMnwwO1pkPXZmKzEwMDh8MDtNYj12ZisxMDA0fDA7X2Q9dmYrMWUzfDA7TmI9dmYrOTk2fDA7TmU9dmYrMTA0fDA7UGI9dmYrOTkyfDA7Z2M9dmYrOTg4fDA7YWU9dmYrOTg0fDA7SWQ9dmYrOTY4fDA7UWI9dmYrOTY0fDA7bmQ9dmYrOTYwfDA7Y2U9dmYrOTZ8MDtTYj12Zis5NTZ8MDtiZT12Zis5NTJ8MDtKZD12Zis5MzZ8MDtwYT12Zis5MzJ8MDtpYT12Zis5Mjh8MDtQYT12Zis5MjR8MDtWYj12Zis5MjB8MDtFZD12Zis5MTZ8MDtQPXZmKzkxMnwwO3hjPXZmKzkwOHwwO2phPXZmKzkwNHwwO1plPXZmKzkwMHwwO2JmPXZmKzg5NnwwO3hhPXZmKzg4MHwwOyRhPXZmKzg3MnwwO3A9dmYrODY4fDA7U2E9dmYrODY0fDA7T2U9dmYrODYwfDA7RmQ9dmYrODU2fDA7dWU9dmYrODh8MDt0YT12Zis4NTJ8MDtJPXZmKzg0OHwwO1lhPXZmKzg0NHwwO09hPXZmKzg0MHwwO2pkPXZmKzgzNnwwO1RjPXZmKzgzMnwwO0FjPXZmKzgyOHwwO0RjPXZmKzgyNHwwO2ZkPXZmKzgyMHwwO2tlPXZmKzgxNnwwO0VjPXZmKzgxMnwwO0ljPXZmKzgwOHwwO0ZjPXZmKzgwNHwwO0phPXZmKzgwMHwwO2pjPXZmKzc5NnwwO1k9dmYrNzkyfDA7a2M9dmYrNzg4fDA7VWM9dmYrNzg0fDA7bGU9dmYrNDh8MDtWYz12Zis3ODB8MDtfPXZmKzc3NnwwO289dmYrNzY0fDA7V2M9dmYrNzYwfDA7dmI9dmYrNzU2fDA7ZWQ9dmYrNzUyfDA7RT12Zis3NDh8MDtGPXZmKzc0NHwwO1hlPXZmKzc0MHwwO3diPXZmKzczNnwwO0FhPXZmKzE2NzN8MDtsYj12Zis3MzJ8MDtQZT12Zis3Mjh8MDtyZD12Zis3MjR8MDtnZT12Zis4fDA7Y2Y9dmYrNzIwfDA7bWM9dmYrNzE2fDA7cGQ9dmYrNzEyfDA7dWQ9dmYrNzA4fDA7WWM9dmYrNzA0fDA7S2E9dmYrNzAwfDA7cWE9dmYrNjk2fDA7WmM9dmYrNjkyfDA7Z2Q9dmYrNjg4fDA7c2I9dmYrNjg0fDA7cWQ9dmYrNjgwfDA7dmQ9dmYrNjc2fDA7bmM9dmYrNjcyfDA7T2Q9dmYrNjY4fDA7Uj12Zis2NjR8MDt0PXZmKzY2MHwwO3dkPXZmKzY1NnwwO19jPXZmKzY1MnwwO3pjPXZmKzY0OHwwO2VlPXZmKzYxNnwwO29jPXZmKzYxMnwwO3hkPXZmKzYwOHwwOyRjPXZmKzYwNHwwO1BkPXZmKzYwMHwwO3BjPXZmKzU5NnwwO3lkPXZmKzU5MnwwO2JkPXZmKzU4OHwwO3pkPXZmKzU4NHwwO2FkPXZmKzU4MHwwO0xhPXZmKzU3NnwwO1Q9dmYrNTcyfDA7ZGU9dmY7dT12Zis1Njh8MDtCZD12Zis1NjR8MDtKZT12ZisxNjcyfDA7Y2I9dmYrNTYwfDA7dWI9dmYrNTU2fDA7ZGY9dmYrNTUyfDA7VT12Zis1NDh8MDtNZT12Zis1NDR8MDtRZT12Zis1NDB8MDtjW3FmPj4yXT1mO2NbZWY+PjJdPWNbKGNbcWY+PjJdfDApKzg4Pj4yXTtjW3BmPj4yXT1jW2VmPj4yXTtjW3VmPj4yXT0wO2NbcmY+PjJdPWNbY1txZj4+Ml0+PjJdO2FbZmY+PjBdPTA7YVtHPj4wXT1hWyhjW3JmPj4yXXwwKSs2Nj4+MF18MDtjW2VhPj4yXT0wO2NbdGY+PjJdPTA7Y1tfYT4+Ml09MDtjW2w+PjJdPWNbKGNbcWY+PjJdfDApKzkyPj4yXTtjW0pjPj4yXT0wO2NbS2M+PjJdPTA7Y1tMYz4+Ml09MDtjW2RkPj4yXT0wO2Nbbj4+Ml09MDt3Zj0oY1tyZj4+Ml18MCkrMzJ8MDtmPWNbd2YrND4+Ml18MDtqPXNmO2Nbaj4+Ml09Y1t3Zj4+Ml07Y1tqKzQ+PjJdPWY7eEkoY1txZj4+Ml18MCk7YTpkbyBpZigoY1soY1txZj4+Ml18MCkrNDA+PjJdfDApPT03KWs9ODg5O2Vsc2V7Y1soY1txZj4+Ml18MCkrNDA+PjJdPTA7d2Y9KGNbcWY+PjJdfDApKzU2fDA7Y1t3Zj4+Ml09MDtjW3dmKzQ+PjJdPTA7Y1soY1txZj4+Ml18MCkrMTA0Pj4yXT0wO2NbKGNbcmY+PjJdfDApKzM4MCs4Pj4yXT0wO2I6ZG8gaWYoIShjWyhjW3JmPj4yXXwwKSsyNDg+PjJdfDApKXtpZihjWyhjW3JmPj4yXXwwKSszMDQ+PjJdfDApe2NbZz4+Ml09Y1soY1txZj4+Ml18MCkrMTU2KzE2Pj4yXTtjW19hPj4yXT0oY1soY1tyZj4+Ml18MCkrMzEyPj4yXXwwKS0oKChjW2c+PjJdfDApPj4+MCklKChjWyhjW3JmPj4yXXwwKSszMTI+PjJdfDApPj4+MCl8MCl9Y1twZj4+Ml09KGNbZWY+PjJdfDApKygoY1soY1txZj4+Ml18MCkrMzY+PjJdfDApKjIwfDApO2M6d2hpbGUoMSl7Y1t0Zj4+Ml09KGNbdGY+PjJdfDApKzE7ZDpkbyBzd2l0Y2goZFtjW3BmPj4yXT4+MF18MCl7Y2FzZSA4Nzp7az02NDticmVhayBjfWNhc2UgMTp7az0zOTM7YnJlYWsgY31jYXNlIDEzOntrPTc7YnJlYWt9Y2FzZSAxNDp7Y1tKYz4+Ml09KGNbbD4+Ml18MCkrKChjWyhjW3BmPj4yXXwwKSs0Pj4yXXwwKSo0MHwwKTtiWyhjW0pjPj4yXXwwKSs4Pj4xXT00O3dmPSgoY1twZj4+Ml18MCktKGNbZWY+PjJdfDApfDApLzIwfDA7az1jW0pjPj4yXXwwO2Nbaz4+Ml09d2Y7Y1trKzQ+PjJdPSgod2Z8MCk8MCk8PDMxPj4zMTtrPTE0O2JyZWFrfWNhc2UgNzI6e2NbSmM+PjJdPShjW2w+PjJdfDApKygoY1soY1twZj4+Ml18MCkrND4+Ml18MCkqNDB8MCk7Y1twZj4+Ml09KGNbZWY+PjJdfDApKygoY1tjW0pjPj4yXT4+Ml18MCkqMjB8MCk7YlsoY1tKYz4+Ml18MCkrOD4+MV09MTI4O2JyZWFrfWNhc2UgMTU6e2NbZGQ+PjJdPShjW2w+PjJdfDApKygoY1soY1twZj4+Ml18MCkrND4+Ml18MCkqNDB8MCk7aj0oY1soY1twZj4+Ml18MCkrMTI+PjJdfDApLTF8MDt3Zj1jW2RkPj4yXXwwO2Nbd2Y+PjJdPWo7Y1t3Zis0Pj4yXT0oKGp8MCk8MCk8PDMxPj4zMTtiWyhjW2RkPj4yXXwwKSs4Pj4xXT00O2lmKGNbKGNbcGY+PjJdfDApKzg+PjJdfDApaz0xNDticmVha31jYXNlIDczOntjW0pjPj4yXT0oY1tsPj4yXXwwKSsoKGNbKGNbcGY+PjJdfDApKzQ+PjJdfDApKjQwfDApO2NbX2I+PjJdPShjW2VmPj4yXXwwKSsoKGNbY1tKYz4+Ml0+PjJdfDApKjIwfDApO2NbcGY+PjJdPShjW2VmPj4yXXwwKSsoKChjWyhjW19iPj4yXXwwKSs4Pj4yXXwwKS0xfDApKjIwfDApO2JbKGNbSmM+PjJdfDApKzg+PjFdPTEyODticmVha31jYXNlIDE2OntjW0pjPj4yXT0oY1tsPj4yXXwwKSsoKGNbKGNbcGY+PjJdfDApKzQ+PjJdfDApKjQwfDApO2JbKGNbSmM+PjJdfDApKzg+PjFdPTQ7Y1tDZD4+Ml09Y1tjW0pjPj4yXT4+Ml07aj0oKGNbcGY+PjJdfDApLShjW2VmPj4yXXwwKXwwKS8yMHwwO3dmPWNbSmM+PjJdfDA7Y1t3Zj4+Ml09ajtjW3dmKzQ+PjJdPSgoanwwKTwwKTw8MzE+PjMxO2NbcGY+PjJdPShjW2VmPj4yXXwwKSsoKGNbQ2Q+PjJdfDApKjIwfDApO2JyZWFrfWNhc2UgNzQ6e2NbTGM+PjJdPShjW2w+PjJdfDApKygoY1soY1twZj4+Ml18MCkrMTI+PjJdfDApKjQwfDApO2lmKGVbKGNbTGM+PjJdfDApKzg+PjFdJjEpaz0yMDticmVha31jYXNlIDc1OntrPTIwO2JyZWFrfWNhc2UgNzY6e2NbZGQ+PjJdPUNJKGNbcWY+PjJdfDAsY1twZj4+Ml18MCl8MDtqPWNbKGNbcGY+PjJdfDApKzQ+PjJdfDA7d2Y9Y1tkZD4+Ml18MDtjW3dmPj4yXT1qO2Nbd2YrND4+Ml09KChqfDApPDApPDwzMT4+MzE7YnJlYWt9Y2FzZSA3Nzp7Y1tkZD4+Ml09Q0koY1txZj4+Ml18MCxjW3BmPj4yXXwwKXwwO2Y9Y1soY1twZj4+Ml18MCkrMTY+PjJdfDA7aj1jW2YrND4+Ml18MDt3Zj1jW2RkPj4yXXwwO2Nbd2Y+PjJdPWNbZj4+Ml07Y1t3Zis0Pj4yXT1qO2JyZWFrfWNhc2UgMTMyOntjW2RkPj4yXT1DSShjW3FmPj4yXXwwLGNbcGY+PjJdfDApfDA7YlsoY1tkZD4+Ml18MCkrOD4+MV09ODtoW2NbZGQ+PjJdPj4zXT0raFtjWyhjW3BmPj4yXXwwKSsxNj4+Ml0+PjNdO2JyZWFrfWNhc2UgOTc6e2NbZGQ+PjJdPUNJKGNbcWY+PjJdfDAsY1twZj4+Ml18MCl8MDthW2NbcGY+PjJdPj4wXT03ODt3Zj1KZihjWyhjW3BmPj4yXXwwKSsxNj4+Ml18MCl8MDtjWyhjW3BmPj4yXXwwKSs0Pj4yXT13ZjtpZigoZFtHPj4wXXwwKSE9MSl7Y1t1Zj4+Ml09Z2goY1tkZD4+Ml18MCxjWyhjW3BmPj4yXXwwKSsxNj4+Ml18MCwtMSwxLDApfDA7aWYoaXUoY1tkZD4+Ml18MCxkW0c+PjBdfDApfDApe2s9ODg5O2JyZWFrIGF9Y1soY1tkZD4+Ml18MCkrMjQ+PjJdPTA7d2Y9KGNbZGQ+PjJdfDApKzh8MDtiW3dmPj4xXT1lW3dmPj4xXXwyMDQ4O2lmKChhWyhjW3BmPj4yXXwwKSsxPj4wXXwwKT09LTEpVGYoY1tyZj4+Ml18MCxjWyhjW3BmPj4yXXwwKSsxNj4+Ml18MCk7YVsoY1twZj4+Ml18MCkrMT4+MF09LTE7Y1soY1twZj4+Ml18MCkrMTY+PjJdPWNbKGNbZGQ+PjJdfDApKzE2Pj4yXTtjWyhjW3BmPj4yXXwwKSs0Pj4yXT1jWyhjW2RkPj4yXXwwKSsxMj4+Ml19aWYoKGNbKGNbcGY+PjJdfDApKzQ+PjJdfDApPihjWyhjW3JmPj4yXXwwKSs5Nj4+Ml18MCkpe2s9ODg4O2JyZWFrIGN9ZWxzZSBrPTQzO2JyZWFrfWNhc2UgNzg6e2s9NDM7YnJlYWt9Y2FzZSA3OTp7Y1tkZD4+Ml09Q0koY1txZj4+Ml18MCxjW3BmPj4yXXwwKXwwO2NbQT4+Ml09KGNbKGNbcGY+PjJdfDApKzEyPj4yXXwwKS0oY1soY1twZj4+Ml18MCkrOD4+Ml18MCk7d2Y9KChjWyhjW3BmPj4yXXwwKSs0Pj4yXXwwKSE9MD8yNTc6MSkmNjU1MzU7YltkYj4+MV09d2Y7YlsoY1tkZD4+Ml18MCkrOD4+MV09d2Y7Y1soY1tkZD4+Ml18MCkrMTI+PjJdPTA7d2hpbGUoMSl7aWYoKGNbQT4+Ml18MCk8PTApYnJlYWsgZDtjW2RkPj4yXT0oY1tkZD4+Ml18MCkrNDA7aWgoY1tkZD4+Ml18MCk7YlsoY1tkZD4+Ml18MCkrOD4+MV09YltkYj4+MV18MDtjWyhjW2RkPj4yXXwwKSsxMj4+Ml09MDtjW0E+PjJdPShjW0E+PjJdfDApKy0xfX1jYXNlIDgwOntjW2RkPj4yXT0oY1tsPj4yXXwwKSsoKGNbKGNbcGY+PjJdfDApKzQ+PjJdfDApKjQwfDApO2JbKGNbZGQ+PjJdfDApKzg+PjFdPShlWyhjW2RkPj4yXXwwKSs4Pj4xXXwxKSYtMTI5O2JyZWFrfWNhc2UgODE6e2NbZGQ+PjJdPUNJKGNbcWY+PjJdfDAsY1twZj4+Ml18MCl8MDtnaChjW2RkPj4yXXwwLGNbKGNbcGY+PjJdfDApKzE2Pj4yXXwwLGNbKGNbcGY+PjJdfDApKzQ+PjJdfDAsMCwwKXwwO2FbKGNbZGQ+PjJdfDApKzEwPj4wXT1hW0c+PjBdfDA7YnJlYWt9Y2FzZSA4Mjp7Y1tzZD4+Ml09KGNbKGNbcWY+PjJdfDApKzExNj4+Ml18MCkrKCgoY1soY1twZj4+Ml18MCkrND4+Ml18MCktMXwwKSo0MHwwKTtpZihESShjW3NkPj4yXXwwKXwwKXtrPTg4ODticmVhayBjfWNbZGQ+PjJdPUNJKGNbcWY+PjJdfDAsY1twZj4+Ml18MCl8MDtrRyhjW2RkPj4yXXwwLGNbc2Q+PjJdfDAsMjA0OCk7YnJlYWt9Y2FzZSA4Mzp7Y1tFYT4+Ml09Y1soY1twZj4+Ml18MCkrMTI+PjJdO2Nba2I+PjJdPWNbKGNbcGY+PjJdfDApKzQ+PjJdO2Nbb2I+PjJdPWNbKGNbcGY+PjJdfDApKzg+PjJdO2NbSmM+PjJdPShjW2w+PjJdfDApKygoY1trYj4+Ml18MCkqNDB8MCk7Y1tkZD4+Ml09KGNbbD4+Ml18MCkrKChjW29iPj4yXXwwKSo0MHwwKTtkb3ttSShjW2RkPj4yXXwwLGNbSmM+PjJdfDApO2lmKChlWyhjW2RkPj4yXXwwKSs4Pj4xXSY0MDk2fDApIT0wPyhiaChjW2RkPj4yXXwwKXwwKSE9MDowKXtrPTg4OTticmVhayBhfWNbSmM+PjJdPShjW0pjPj4yXXwwKSs0MDtjW2RkPj4yXT0oY1tkZD4+Ml18MCkrNDA7d2Y9KGNbRWE+PjJdfDApKy0xfDA7Y1tFYT4+Ml09d2Z9d2hpbGUoKHdmfDApIT0wKTticmVha31jYXNlIDg0OntjW0ZhPj4yXT1jWyhjW3BmPj4yXXwwKSsxMj4+Ml07Y1tKYz4+Ml09KGNbbD4+Ml18MCkrKChjWyhjW3BmPj4yXXwwKSs0Pj4yXXwwKSo0MHwwKTtjW2RkPj4yXT0oY1tsPj4yXXwwKSsoKGNbKGNbcGY+PjJdfDApKzg+PjJdfDApKjQwfDApO3doaWxlKDEpe2tHKGNbZGQ+PjJdfDAsY1tKYz4+Ml18MCw0MDk2KTtpZigoZVsoY1tkZD4+Ml18MCkrOD4+MV0mNDA5NnwwKSE9MD8oYmgoY1tkZD4+Ml18MCl8MCkhPTA6MCl7az04ODk7YnJlYWsgYX13Zj1jW0ZhPj4yXXwwO2NbRmE+PjJdPXdmKy0xO2lmKCF3ZilicmVhayBkO2NbZGQ+PjJdPShjW2RkPj4yXXwwKSs0MDtjW0pjPj4yXT0oY1tKYz4+Ml18MCkrNDB9fWNhc2UgODU6e2NbSmM+PjJdPShjW2w+PjJdfDApKygoY1soY1twZj4+Ml18MCkrND4+Ml18MCkqNDB8MCk7Y1tkZD4+Ml09KGNbbD4+Ml18MCkrKChjWyhjW3BmPj4yXXwwKSs4Pj4yXXwwKSo0MHwwKTtrRyhjW2RkPj4yXXwwLGNbSmM+PjJdfDAsNDA5Nik7YnJlYWt9Y2FzZSA4Njp7Y1tKYz4+Ml09KGNbbD4+Ml18MCkrKChjWyhjW3BmPj4yXXwwKSs0Pj4yXXwwKSo0MHwwKTtjW2RkPj4yXT0oY1tsPj4yXXwwKSsoKGNbKGNbcGY+PjJdfDApKzg+PjJdfDApKjQwfDApO3dmPWNbSmM+PjJdfDA7aGgoY1tkZD4+Ml18MCxjW3dmPj4yXXwwLGNbd2YrND4+Ml18MCk7YnJlYWt9Y2FzZSA1Mjp7Y1tKYz4+Ml09KGNbbD4+Ml18MCkrKChjWyhjW3BmPj4yXXwwKSs0Pj4yXXwwKSo0MHwwKTtjW0tjPj4yXT0oY1tsPj4yXXwwKSsoKGNbKGNbcGY+PjJdfDApKzg+PjJdfDApKjQwfDApO2NbZGQ+PjJdPShjW2w+PjJdfDApKygoY1soY1twZj4+Ml18MCkrMTI+PjJdfDApKjQwfDApO2lmKChlWyhjW0pjPj4yXXwwKSs4Pj4xXXxlWyhjW0tjPj4yXXwwKSs4Pj4xXSkmMSl7aWgoY1tkZD4+Ml18MCk7YnJlYWsgZH1pZigoZVsoY1tKYz4+Ml18MCkrOD4+MV0mMTYzODR8MCkhPTA/KFlnKGNbSmM+PjJdfDApfDApIT0wOjApe2s9ODg5O2JyZWFrIGF9aWYoKGVbKGNbS2M+PjJdfDApKzg+PjFdJjE2Mzg0fDApIT0wPyhZZyhjW0tjPj4yXXwwKXwwKSE9MDowKXtrPTg4OTticmVhayBhfWlmKChlWyhjW0pjPj4yXXwwKSs4Pj4xXSYxOHwwKT09MD8oTXgoY1tKYz4+Ml18MCxhW0c+PjBdfDAsMCl8MCkhPTA6MCl7az04ODk7YnJlYWsgYX1pZigoZVsoY1tLYz4+Ml18MCkrOD4+MV0mMTh8MCk9PTA/KE14KGNbS2M+PjJdfDAsYVtHPj4wXXwwLDApfDApIT0wOjApe2s9ODg5O2JyZWFrIGF9Zz0oY1soY1tKYz4+Ml18MCkrMTI+PjJdfDApKyhjWyhjW0tjPj4yXXwwKSsxMj4+Ml18MCl8MDtqPU1hO2Nbaj4+Ml09ZztjW2orND4+Ml09KChnfDApPDApPDwzMT4+MzE7aj1NYTtnPWNbais0Pj4yXXwwO3dmPWNbKGNbcmY+PjJdfDApKzk2Pj4yXXwwO2Y9KCh3ZnwwKTwwKTw8MzE+PjMxO2lmKChnfDApPihmfDApfCgoZ3wwKT09KGZ8MCk/KGNbaj4+Ml18MCk+Pj4wPndmPj4+MDowKSl7az04ODg7YnJlYWsgY31pZihPeChjW2RkPj4yXXwwLChjW01hPj4yXXwwKSsyfDAsKGNbZGQ+PjJdfDApPT0oY1tLYz4+Ml18MCkmMSl8MCl7az04ODk7YnJlYWsgYX1iWyhjW2RkPj4yXXwwKSs4Pj4xXT1lWyhjW2RkPj4yXXwwKSs4Pj4xXSYtNDk2NjR8MjtpZigoY1tkZD4+Ml18MCkhPShjW0tjPj4yXXwwKSlUUihjWyhjW2RkPj4yXXwwKSsxNj4+Ml18MCxjWyhjW0tjPj4yXXwwKSsxNj4+Ml18MCxjWyhjW0tjPj4yXXwwKSsxMj4+Ml18MCl8MDtUUigoY1soY1tkZD4+Ml18MCkrMTY+PjJdfDApKyhjWyhjW0tjPj4yXXwwKSsxMj4+Ml18MCl8MCxjWyhjW0pjPj4yXXwwKSsxNj4+Ml18MCxjWyhjW0pjPj4yXXwwKSsxMj4+Ml18MCl8MDthWyhjWyhjW2RkPj4yXXwwKSsxNj4+Ml18MCkrKGNbTWE+PjJdfDApPj4wXT0wO3dmPU1hO3dmPVJSKGNbd2Y+PjJdfDAsY1t3Zis0Pj4yXXwwLDEsMCl8MDthWyhjWyhjW2RkPj4yXXwwKSsxNj4+Ml18MCkrd2Y+PjBdPTA7d2Y9KGNbZGQ+PjJdfDApKzh8MDtiW3dmPj4xXT1lW3dmPj4xXXw1MTI7Y1soY1tkZD4+Ml18MCkrMTI+PjJdPWNbTWE+PjJdO2FbKGNbZGQ+PjJdfDApKzEwPj4wXT1hW0c+PjBdfDA7YnJlYWt9Y2FzZSA1MTpjYXNlIDUwOmNhc2UgNDk6Y2FzZSA0ODpjYXNlIDQ3OntjW0pjPj4yXT0oY1tsPj4yXXwwKSsoKGNbKGNbcGY+PjJdfDApKzQ+PjJdfDApKjQwfDApO2JbbmU+PjFdPUhJKGNbSmM+PjJdfDApfDA7Y1tLYz4+Ml09KGNbbD4+Ml18MCkrKChjWyhjW3BmPj4yXXwwKSs4Pj4yXXwwKSo0MHwwKTtiW29lPj4xXT1ISShjW0tjPj4yXXwwKXwwO2NbZGQ+PjJdPShjW2w+PjJdfDApKygoY1soY1twZj4+Ml18MCkrMTI+PjJdfDApKjQwfDApO2JbSz4+MV09ZVsoY1tKYz4+Ml18MCkrOD4+MV18ZVsoY1tLYz4+Ml18MCkrOD4+MV07ZTpkbyBpZighKGVbSz4+MV0mMSkpe2Y6ZG8gaWYoZVtuZT4+MV0mZVtvZT4+MV0mNCl7d2Y9Y1tKYz4+Ml18MDtqPWNbd2YrND4+Ml18MDtmPWFhO2NbZj4+Ml09Y1t3Zj4+Ml07Y1tmKzQ+PjJdPWo7Zj1jW0tjPj4yXXwwO2o9Y1tmKzQ+PjJdfDA7d2Y9Y2E7Y1t3Zj4+Ml09Y1tmPj4yXTtjW3dmKzQ+PjJdPWo7YVt3Pj4wXT0xO3N3aXRjaChkW2NbcGY+PjJdPj4wXXwwKXtjYXNlIDQ3Ont3Zj1hYTtpZihJSShjYSxjW3dmPj4yXXwwLGNbd2YrND4+Ml18MCl8MClicmVhayBmO2JyZWFrfWNhc2UgNDg6e3dmPWFhO2lmKEpJKGNhLGNbd2Y+PjJdfDAsY1t3Zis0Pj4yXXwwKXwwKWJyZWFrIGY7YnJlYWt9Y2FzZSA0OTp7d2Y9YWE7aWYoS0koY2EsY1t3Zj4+Ml18MCxjW3dmKzQ+PjJdfDApfDApYnJlYWsgZjticmVha31jYXNlIDUwOnt3Zj1hYTtpZigoY1t3Zj4+Ml18MCk9PTAmKGNbd2YrND4+Ml18MCk9PTApYnJlYWsgZTtqPWFhO3dmPWNhO2lmKCgoY1tqPj4yXXwwKT09LTE/KGNbais0Pj4yXXwwKT09LTE6MCkmKChjW3dmPj4yXXwwKT09MD8oY1t3Zis0Pj4yXXwwKT09LTIxNDc0ODM2NDg6MCkpYnJlYWsgZjtqPWFhO2Y9Y2E7d2Y9Y2E7Y1t3Zj4+Ml09X1IoY1tmPj4yXXwwLGNbZis0Pj4yXXwwLGNbaj4+Ml18MCxjW2orND4+Ml18MCl8MDtjW3dmKzQ+PjJdPUM7YnJlYWt9ZGVmYXVsdDp7d2Y9YWE7aWYoKGNbd2Y+PjJdfDApPT0wJihjW3dmKzQ+PjJdfDApPT0wKWJyZWFrIGU7d2Y9YWE7aWYoKGNbd2Y+PjJdfDApPT0tMT8oY1t3Zis0Pj4yXXwwKT09LTE6MCl7d2Y9YWE7Y1t3Zj4+Ml09MTtjW3dmKzQ+PjJdPTB9aj1hYTtmPWNhO3dmPWNhO2Nbd2Y+PjJdPSRSKGNbZj4+Ml18MCxjW2YrND4+Ml18MCxjW2o+PjJdfDAsY1tqKzQ+PjJdfDApfDA7Y1t3Zis0Pj4yXT1DfX1mPWNhO2o9Y1tmKzQ+PjJdfDA7d2Y9Y1tkZD4+Ml18MDtjW3dmPj4yXT1jW2Y+PjJdO2Nbd2YrND4+Ml09ajtiWyhjW2RkPj4yXXwwKSs4Pj4xXT1lWyhjW2RkPj4yXXwwKSs4Pj4xXSYtNDk2NjR8NDticmVhayBkfWVsc2UgYVt3Pj4wXT0wO3doaWxlKDApO2hbTGQ+PjNdPSskZyhjW0pjPj4yXXwwKTtoW01kPj4zXT0rJGcoY1tLYz4+Ml18MCk7c3dpdGNoKGRbY1twZj4+Ml0+PjBdfDApe2Nhc2UgNDc6e2hbTWQ+PjNdPStoW01kPj4zXSsgK2hbTGQ+PjNdO2JyZWFrfWNhc2UgNDg6e2hbTWQ+PjNdPStoW01kPj4zXS0raFtMZD4+M107YnJlYWt9Y2FzZSA0OTp7aFtNZD4+M109K2hbTWQ+PjNdKitoW0xkPj4zXTticmVha31jYXNlIDUwOntpZigraFtMZD4+M109PTAuMClicmVhayBlO2hbTWQ+PjNdPStoW01kPj4zXS8raFtMZD4+M107YnJlYWt9ZGVmYXVsdDp7eGY9K2hbTGQ+PjNdO3dmPStOKHhmKT49MS4wPyh4Zj4wLjA/fn4rJCgrTSh4Zi80Mjk0OTY3Mjk2LjApLDQyOTQ5NjcyOTUuMCk+Pj4wOn5+K1ooKHhmLSsofn54Zj4+PjApKS80Mjk0OTY3Mjk2LjApPj4+MCk6MDtqPWFhO2Nbaj4+Ml09fn54Zj4+PjA7Y1tqKzQ+PjJdPXdmO3hmPStoW01kPj4zXTtqPStOKHhmKT49MS4wPyh4Zj4wLjA/fn4rJCgrTSh4Zi80Mjk0OTY3Mjk2LjApLDQyOTQ5NjcyOTUuMCk+Pj4wOn5+K1ooKHhmLSsofn54Zj4+PjApKS80Mjk0OTY3Mjk2LjApPj4+MCk6MDt3Zj1jYTtjW3dmPj4yXT1+fnhmPj4+MDtjW3dmKzQ+PjJdPWo7d2Y9YWE7aWYoKGNbd2Y+PjJdfDApPT0wJihjW3dmKzQ+PjJdfDApPT0wKWJyZWFrIGU7d2Y9YWE7aWYoKGNbd2Y+PjJdfDApPT0tMT8oY1t3Zis0Pj4yXXwwKT09LTE6MCl7d2Y9YWE7Y1t3Zj4+Ml09MTtjW3dmKzQ+PjJdPTB9aj1jYTt3Zj1hYTtoW01kPj4zXT0rKCgkUihjW2o+PjJdfDAsY1tqKzQ+PjJdfDAsY1t3Zj4+Ml18MCxjW3dmKzQ+PjJdfDApfDApPj4+MCkrNDI5NDk2NzI5Ni4wKisoQ3wwKX19aWYoIShxRygraFtNZD4+M10pfDApKXtoW2NbZGQ+PjJdPj4zXT0raFtNZD4+M107YlsoY1tkZD4+Ml18MCkrOD4+MV09ZVsoY1tkZD4+Ml18MCkrOD4+MV0mLTQ5NjY0fDg7aWYoKGFbdz4+MF18MCkhPTA/MTooKGVbbmU+PjFdfGVbb2U+PjFdKSY4fDApIT0wKWJyZWFrIGQ7SngoY1tkZD4+Ml18MCk7YnJlYWsgZH19d2hpbGUoMCk7aWgoY1tkZD4+Ml18MCk7YnJlYWt9Y2FzZSA4ODp7aWYoY1soY1twZj4+Ml18MCkrND4+Ml18MCloaCgoY1tsPj4yXXwwKSsoKGNbKGNbcGY+PjJdfDApKzQ+PjJdfDApKjQwfDApfDAsMCwwKTticmVha31jYXNlIDg5OntjW0dhPj4yXT1kWyhjW3BmPj4yXXwwKSszPj4wXTtjW2hjPj4yXT1WdyhjW3JmPj4yXXwwLDMyKygoY1tHYT4+Ml18MCktMTw8Mil8MCwwKXwwO2lmKCEoY1toYz4+Ml18MCkpe2s9ODg5O2JyZWFrIGF9Y1tjW2hjPj4yXT4+Ml09MDtjWyhjW2hjPj4yXXwwKSs0Pj4yXT1jWyhjW3BmPj4yXXwwKSsxNj4+Ml07Y1soY1toYz4+Ml18MCkrMTY+PjJdPSgoY1twZj4+Ml18MCktKGNbZWY+PjJdfDApfDApLzIwfDA7Y1soY1toYz4+Ml18MCkrMTI+PjJdPWNbcWY+PjJdO2FbKGNbaGM+PjJdfDApKzI2Pj4wXT1jW0dhPj4yXTthWyhjW3BmPj4yXXwwKSsxPj4wXT0tMjE7Y1soY1twZj4+Ml18MCkrMTY+PjJdPWNbaGM+PjJdO2FbY1twZj4+Ml0+PjBdPTkwO2s9MTI2O2JyZWFrfWNhc2UgOTA6e2s9MTI2O2JyZWFrfWNhc2UgNDY6Y2FzZSA0NTpjYXNlIDQ0OmNhc2UgNDM6e2NbSmM+PjJdPShjW2w+PjJdfDApKygoY1soY1twZj4+Ml18MCkrND4+Ml18MCkqNDB8MCk7Y1tLYz4+Ml09KGNbbD4+Ml18MCkrKChjWyhjW3BmPj4yXXwwKSs4Pj4yXXwwKSo0MHwwKTtjW2RkPj4yXT0oY1tsPj4yXXwwKSsoKGNbKGNbcGY+PjJdfDApKzEyPj4yXXwwKSo0MHwwKTtpZigoZVsoY1tKYz4+Ml18MCkrOD4+MV18ZVsoY1tLYz4+Ml18MCkrOD4+MV0pJjEpe2loKGNbZGQ+PjJdfDApO2JyZWFrIGR9d2Y9YWgoY1tLYz4+Ml18MCl8MDtqPWJhO2Nbaj4+Ml09d2Y7Y1tqKzQ+PjJdPUM7aj1haChjW0pjPj4yXXwwKXwwO3dmPWRhO2Nbd2Y+PjJdPWo7Y1t3Zis0Pj4yXT1DO2FbaGI+PjBdPWFbY1twZj4+Ml0+PjBdfDA7ZG8gaWYoKGRbaGI+PjBdfDApIT00Myl7Zj1kYTtnPWNbZj4+Ml18MDtmPWNbZis0Pj4yXXwwO2lmKChkW2hiPj4wXXwwKT09NDQpe3lmPWJhO2o9Y1t5Zis0Pj4yXXxmO3dmPWJhO2Nbd2Y+PjJdPWNbeWY+PjJdfGc7Y1t3Zis0Pj4yXT1qO2JyZWFrfWlmKChnfDApIT0wfChmfDApIT0wKXtpZigoY1tkYSs0Pj4yXXwwKTwwKXthW2hiPj4wXT05MS0oZFtoYj4+MF18MCk7d2Y9ZGE7aj1jW3dmKzQ+PjJdfDA7d2Y9KGp8MCk+LTF8KGp8MCk9PS0xJihjW3dmPj4yXXwwKT4+PjA+NDI5NDk2NzIzMjtqPWRhO2o9UVIoMCwwLGNbaj4+Ml18MCxjW2orND4+Ml18MCl8MDt5Zj1kYTtjW3lmPj4yXT13Zj9qOjY0O2NbeWYrND4+Ml09d2Y/QzowfXlmPWRhO3dmPWNbeWYrND4+Ml18MDtpZigod2Z8MCk+MHwod2Z8MCk9PTAmKGNbeWY+PjJdfDApPj4+MD49NjQpe3lmPWJhO3dmPWNbeWYrND4+Ml18MDtpZigod2Z8MCk+MHwod2Z8MCk9PTAmKGNbeWY+PjJdfDApPj4+MD49MClnPTE7ZWxzZSBnPShkW2hiPj4wXXwwKT09NDU7d2Y9Zz8wOi0xO3lmPWJhO2NbeWY+PjJdPXdmO2NbeWYrND4+Ml09KCh3ZnwwKTwwKTw8MzE+PjMxO2JyZWFrfTtjW3BlPj4yXT1jW2JhPj4yXTtjW3BlKzQ+PjJdPWNbYmErND4+Ml07Zz1jW2RhPj4yXXwwO2o9cGU7Zj1jW2o+PjJdfDA7aj1jW2orND4+Ml18MDtpZigoZFtoYj4+MF18MCkhPTQ1KXt3Zj1TUihmfDAsanwwLGd8MCl8MDt5Zj1wZTtjW3lmPj4yXT13ZjtjW3lmKzQ+PjJdPUM7aWYoKGNbYmErND4+Ml18MCk8MCl7aj1kYTtqPVFSKDY0LDAsY1tqPj4yXXwwLGNbais0Pj4yXXwwKXwwO2o9V1IoLTEsLTEsanwwKXwwO2Y9cGU7d2Y9Y1tmKzQ+PjJdfEM7eWY9cGU7Y1t5Zj4+Ml09Y1tmPj4yXXxqO2NbeWYrND4+Ml09d2Z9fWVsc2V7d2Y9V1IoZnwwLGp8MCxnfDApfDA7eWY9cGU7Y1t5Zj4+Ml09d2Y7Y1t5Zis0Pj4yXT1DfTtjW2JhPj4yXT1jW3BlPj4yXTtjW2JhKzQ+PjJdPWNbcGUrND4+Ml19fWVsc2V7aj1kYTtmPWJhO3dmPWNbZis0Pj4yXSZjW2orND4+Ml07eWY9YmE7Y1t5Zj4+Ml09Y1tmPj4yXSZjW2o+PjJdO2NbeWYrND4+Ml09d2Z9d2hpbGUoMCk7aj1iYTt3Zj1jW2orND4+Ml18MDt5Zj1jW2RkPj4yXXwwO2NbeWY+PjJdPWNbaj4+Ml07Y1t5Zis0Pj4yXT13ZjtiWyhjW2RkPj4yXXwwKSs4Pj4xXT1lWyhjW2RkPj4yXXwwKSs4Pj4xXSYtNDk2NjR8NDticmVha31jYXNlIDkxOntjW0pjPj4yXT0oY1tsPj4yXXwwKSsoKGNbKGNbcGY+PjJdfDApKzQ+PjJdfDApKjQwfDApO1F4KGNbSmM+PjJdfDApfDA7d2Y9Y1soY1twZj4+Ml18MCkrOD4+Ml18MDt5Zj1jW0pjPj4yXXwwO2o9eWY7d2Y9UlIoY1tqPj4yXXwwLGNbais0Pj4yXXwwLHdmfDAsKCh3ZnwwKTwwKTw8MzE+PjMxfDApfDA7Y1t5Zj4+Ml09d2Y7Y1t5Zis0Pj4yXT1DO2JyZWFrfWNhc2UgMTc6e2NbSmM+PjJdPShjW2w+PjJdfDApKygoY1soY1twZj4+Ml18MCkrND4+Ml18MCkqNDB8MCk7aWYoKGVbKGNbSmM+PjJdfDApKzg+PjFdJjR8MCk9PTA/KEx4KGNbSmM+PjJdfDAsNjcsYVtHPj4wXXwwKSwoZVsoY1tKYz4+Ml18MCkrOD4+MV0mNHwwKT09MCk6MClpZighKGNbKGNbcGY+PjJdfDApKzg+PjJdfDApKXtrPTE1OTticmVhayBjfWVsc2V7az0xNDticmVhayBkfWJbKGNbSmM+PjJdfDApKzg+PjFdPWVbKGNbSmM+PjJdfDApKzg+PjFdJi00OTY2NHw0O2JyZWFrfWNhc2UgOTI6e2NbSmM+PjJdPShjW2w+PjJdfDApKygoY1soY1twZj4+Ml18MCkrND4+Ml18MCkqNDB8MCk7aWYoZVsoY1tKYz4+Ml18MCkrOD4+MV0mNClSeChjW0pjPj4yXXwwKXwwO2JyZWFrfWNhc2UgOTM6e2NbSmM+PjJdPShjW2w+PjJdfDApKygoY1soY1twZj4+Ml18MCkrND4+Ml18MCkqNDB8MCk7aWYoZVsoY1tKYz4+Ml18MCkrOD4+MV0mMTYzODQpZz1ZZyhjW0pjPj4yXXwwKXwwO2Vsc2UgZz0wO2NbdWY+PjJdPWc7RXgoY1tKYz4+Ml18MCxjWyhjW3BmPj4yXXwwKSs4Pj4yXSYyNTUsYVtHPj4wXXwwKTtpZihjW3VmPj4yXXwwKWJyZWFrIGE7YnJlYWt9Y2FzZSA0MTpjYXNlIDM4OmNhc2UgMzk6Y2FzZSA0MDpjYXNlIDM2OmNhc2UgMzc6e2NbSmM+PjJdPShjW2w+PjJdfDApKygoY1soY1twZj4+Ml18MCkrND4+Ml18MCkqNDB8MCk7Y1tMYz4+Ml09KGNbbD4+Ml18MCkrKChjWyhjW3BmPj4yXXwwKSsxMj4+Ml18MCkqNDB8MCk7YltMPj4xXT1iWyhjW0pjPj4yXXwwKSs4Pj4xXXwwO2JbTz4+MV09YlsoY1tMYz4+Ml18MCkrOD4+MV18MDtnPWRbKGNbcGY+PjJdfDApKzM+PjBdfDA7ZG8gaWYoKGVbTD4+MV18ZVtPPj4xXSkmMSl7aWYoIShnJjEyOCkpe2c9Y1twZj4+Ml18MDtpZighKGRbKGNbcGY+PjJdfDApKzM+PjBdJjMyKSlpZihkW2crMz4+MF0mMTYpe2s9MTQ7YnJlYWsgZH1lbHNlIGJyZWFrIGQ7ZWxzZXtjW2RkPj4yXT0oY1tsPj4yXXwwKSsoKGNbZys4Pj4yXXwwKSo0MHwwKTtjW2VhPj4yXT0xO2JbKGNbZGQ+PjJdfDApKzg+PjFdPWVbKGNbZGQ+PjJdfDApKzg+PjFdJi00OTY2NHwxO2JyZWFrIGR9fWlmKCgoZVtMPj4xXSYxfDApIT0wPyhlW08+PjFdJjF8MCkhPTA6MCk/KGVbTz4+MV0mMjU2fDApPT0wOjApe2NbTmQ+PjJdPTA7YnJlYWt9Y1tOZD4+Ml09MX1lbHNle2Fbcj4+MF09ZyY3MTtpZigoYVtyPj4wXXwwKT49Njcpe2lmKChlW0w+PjFdfGVbTz4+MV0pJjIpe2lmKChlW0w+PjFdJjE0fDApPT0yKXtCaChjW0pjPj4yXXwwLDApO2JbTz4+MV09YlsoY1tMYz4+Ml18MCkrOD4+MV18MH1pZigoZVtPPj4xXSYxNHwwKT09MilCaChjW0xjPj4yXXwwLDApfWlmKGVbKGNbSmM+PjJdfDApKzg+PjFdJmVbKGNbTGM+PjJdfDApKzg+PjFdJjQpe3dmPWNbTGM+PjJdfDA7Zj1jW3dmKzQ+PjJdfDA7eWY9Y1tKYz4+Ml18MDtqPWNbeWYrND4+Ml18MDtpZigoZnwwKT4oanwwKXwoKGZ8MCk9PShqfDApPyhjW3dmPj4yXXwwKT4+PjA+KGNbeWY+PjJdfDApPj4+MDowKSl7Y1tOZD4+Ml09MTticmVha313Zj1jW0xjPj4yXXwwO2Y9Y1t3Zis0Pj4yXXwwO3lmPWNbSmM+PjJdfDA7aj1jW3lmKzQ+PjJdfDA7aWYoKGZ8MCk8KGp8MCl8KChmfDApPT0oanwwKT8oY1t3Zj4+Ml18MCk+Pj4wPChjW3lmPj4yXXwwKT4+PjA6MCkpe2NbTmQ+PjJdPS0xO2JyZWFrfWVsc2V7Y1tOZD4+Ml09MDticmVha319fWVsc2UgaWYoKGFbcj4+MF18MCk9PTY2KXtpZigoZVtMPj4xXSYyfDApPT0wPyhlW0w+PjFdJjEyfDApIT0wOjApe014KGNbSmM+PjJdfDAsYVtHPj4wXXwwLDEpfDA7YltMPj4xXT1lWyhjW0pjPj4yXXwwKSs4Pj4xXSYtMzMyODB8ZVtMPj4xXSYzMzI3OX1pZigoZVtPPj4xXSYyfDApPT0wPyhlW08+PjFdJjEyfDApIT0wOjApe014KGNbTGM+PjJdfDAsYVtHPj4wXXwwLDEpfDA7YltPPj4xXT1lWyhjW0xjPj4yXXwwKSs4Pj4xXSYtMzMyODB8ZVtPPj4xXSYzMzI3OX19Y1tOZD4+Ml09TUkoY1tMYz4+Ml18MCxjW0pjPj4yXXwwLGNbKGNbcGY+PjJdfDApKzE2Pj4yXXwwKXwwfXdoaWxlKDApO3N3aXRjaChkW2NbcGY+PjJdPj4wXXwwKXtjYXNlIDM3OntjW1FkPj4yXT0oY1tOZD4+Ml18MCk9PTAmMTticmVha31jYXNlIDM2OntjW1FkPj4yXT1jW05kPj4yXTticmVha31jYXNlIDQwOntjW1FkPj4yXT0oY1tOZD4+Ml18MCk8MCYxO2JyZWFrfWNhc2UgMzk6e2NbUWQ+PjJdPShjW05kPj4yXXwwKTw9MCYxO2JyZWFrfWNhc2UgMzg6e2NbUWQ+PjJdPShjW05kPj4yXXwwKT4wJjE7YnJlYWt9ZGVmYXVsdDpjW1FkPj4yXT0oY1tOZD4+Ml18MCk+PTAmMX1iWyhjW0pjPj4yXXwwKSs4Pj4xXT1iW0w+PjFdfDA7YlsoY1tMYz4+Ml18MCkrOD4+MV09YltPPj4xXXwwO2lmKCEoZFsoY1twZj4+Ml18MCkrMz4+MF0mMzIpKWlmKGNbUWQ+PjJdfDApe2s9MTQ7YnJlYWsgZH1lbHNlIGJyZWFrIGQ7Y1tkZD4+Ml09KGNbbD4+Ml18MCkrKChjWyhjW3BmPj4yXXwwKSs4Pj4yXXwwKSo0MHwwKTtjW2VhPj4yXT1jW05kPj4yXTtjW1FkPj4yXT0oY1tRZD4+Ml18MCkhPTAmMTtpZigoZFsoY1twZj4+Ml18MCkrMz4+MF0mOHwwKSE9MD8oKGRbY1twZj4+Ml0+PjBdfDApPT0zN3wwKT09KGNbUWQ+PjJdfDApOjApYnJlYWsgZDtiWyhjW2RkPj4yXXwwKSs4Pj4xXT1lWyhjW2RkPj4yXXwwKSs4Pj4xXSYtNDk2NjR8NDt3Zj1jW1FkPj4yXXwwO3lmPWNbZGQ+PjJdfDA7Y1t5Zj4+Ml09d2Y7Y1t5Zis0Pj4yXT0oKHdmfDApPDApPDwzMT4+MzE7YnJlYWt9Y2FzZSA0Mjp7aWYoY1tlYT4+Ml18MClrPTE0O2JyZWFrfWNhc2UgOTQ6e2Nbbj4+Ml09KGNbKGNbcGY+PjJdfDApKzE2Pj4yXXwwKSs0O2JyZWFrfWNhc2UgOTU6e2lmKCEoZFsoY1twZj4+Ml18MCkrMz4+MF0mMSkpY1tuPj4yXT0wO2NbSWE+PjJdPWNbKGNbcGY+PjJdfDApKzEyPj4yXTtjW05jPj4yXT1jWyhjW3BmPj4yXXwwKSsxNj4+Ml07Y1tuYj4+Ml09Y1soY1twZj4+Ml18MCkrND4+Ml07Y1twYj4+Ml09Y1soY1twZj4+Ml18MCkrOD4+Ml07Y1tYPj4yXT0wO3doaWxlKDEpe2lmKChjW1g+PjJdfDApPj0oY1tJYT4+Ml18MCkpYnJlYWs7Zz1jW1g+PjJdfDA7aWYoY1tuPj4yXXwwKWc9Y1soY1tuPj4yXXwwKSsoZzw8Mik+PjJdfDA7Y1t1YT4+Ml09ZztjWyRiPj4yXT1jWyhjW05jPj4yXXwwKSsyMCsoY1tYPj4yXTw8Mik+PjJdO2NbeD4+Ml09ZFsoY1soY1tOYz4+Ml18MCkrMTY+PjJdfDApKyhjW1g+PjJdfDApPj4wXTtjW2VhPj4yXT1NSSgoY1tsPj4yXXwwKSsoKChjW25iPj4yXXwwKSsoY1t1YT4+Ml18MCl8MCkqNDB8MCl8MCwoY1tsPj4yXXwwKSsoKChjW3BiPj4yXXwwKSsoY1t1YT4+Ml18MCl8MCkqNDB8MCl8MCxjWyRiPj4yXXwwKXwwO2lmKGNbZWE+PjJdfDApe2s9MjE3O2JyZWFrfWNbWD4+Ml09KGNbWD4+Ml18MCkrMX1pZigoa3wwKT09MjE3PyhrPTAsKGNbeD4+Ml18MCkhPTApOjApY1tlYT4+Ml09MC0oY1tlYT4+Ml18MCk7Y1tuPj4yXT0wO2JyZWFrfWNhc2UgMTg6e2lmKChjW2VhPj4yXXwwKTwwKXtjW3BmPj4yXT0oY1tlZj4+Ml18MCkrKCgoY1soY1twZj4+Ml18MCkrND4+Ml18MCktMXwwKSoyMHwwKTticmVhayBkfWc9Y1twZj4+Ml18MDtpZighKGNbZWE+PjJdfDApKXtjW3BmPj4yXT0oY1tlZj4+Ml18MCkrKCgoY1tnKzg+PjJdfDApLTF8MCkqMjB8MCk7YnJlYWsgZH1lbHNle2NbcGY+PjJdPShjW2VmPj4yXXwwKSsoKChjW2crMTI+PjJdfDApLTF8MCkqMjB8MCk7YnJlYWsgZH19Y2FzZSAyNzpjYXNlIDI4OntjW0pjPj4yXT0oY1tsPj4yXXwwKSsoKGNbKGNbcGY+PjJdfDApKzQ+PjJdfDApKjQwfDApO2lmKGVbKGNbSmM+PjJdfDApKzg+PjFdJjEpY1tyZT4+Ml09MjtlbHNle3lmPWFoKGNbSmM+PjJdfDApfDA7Y1tyZT4+Ml09KCh5ZnwwKSE9MHwoQ3wwKSE9MCkmMX1jW0tjPj4yXT0oY1tsPj4yXXwwKSsoKGNbKGNbcGY+PjJdfDApKzg+PjJdfDApKjQwfDApO2lmKGVbKGNbS2M+PjJdfDApKzg+PjFdJjEpY1tzZT4+Ml09MjtlbHNle3lmPWFoKGNbS2M+PjJdfDApfDA7Y1tzZT4+Ml09KCh5ZnwwKSE9MHwoQ3wwKSE9MCkmMX1nPSgoY1tyZT4+Ml18MCkqM3wwKSsoY1tzZT4+Ml18MCl8MDtpZigoZFtjW3BmPj4yXT4+MF18MCk9PTI4KWNbcmU+PjJdPWRbMzk5MjUrZz4+MF07ZWxzZSBjW3JlPj4yXT1kWzM5OTM0K2c+PjBdO2NbZGQ+PjJdPShjW2w+PjJdfDApKygoY1soY1twZj4+Ml18MCkrMTI+PjJdfDApKjQwfDApO2lmKChjW3JlPj4yXXwwKT09Mil7YlsoY1tkZD4+Ml18MCkrOD4+MV09ZVsoY1tkZD4+Ml18MCkrOD4+MV0mLTQ5NjY0fDE7YnJlYWsgZH1lbHNle3dmPWNbcmU+PjJdfDA7eWY9Y1tkZD4+Ml18MDtjW3lmPj4yXT13ZjtjW3lmKzQ+PjJdPSgod2Z8MCk8MCk8PDMxPj4zMTtiWyhjW2RkPj4yXXwwKSs4Pj4xXT1lWyhjW2RkPj4yXXwwKSs4Pj4xXSYtNDk2NjR8NDticmVhayBkfX1jYXNlIDE5OntjW0pjPj4yXT0oY1tsPj4yXXwwKSsoKGNbKGNbcGY+PjJdfDApKzQ+PjJdfDApKjQwfDApO2NbZGQ+PjJdPShjW2w+PjJdfDApKygoY1soY1twZj4+Ml18MCkrOD4+Ml18MCkqNDB8MCk7aWgoY1tkZD4+Ml18MCk7aWYoIShlWyhjW0pjPj4yXXwwKSs4Pj4xXSYxKSl7YlsoY1tkZD4+Ml18MCkrOD4+MV09NDt3Zj1haChjW0pjPj4yXXwwKXwwO3dmPSgoKHdmfDApIT0wfChDfDApIT0wKV4xKSYxO3lmPWNbZGQ+PjJdfDA7Y1t5Zj4+Ml09d2Y7Y1t5Zis0Pj4yXT0oKHdmfDApPDApPDwzMT4+MzF9YnJlYWt9Y2FzZSA1NDp7Y1tKYz4+Ml09KGNbbD4+Ml18MCkrKChjWyhjW3BmPj4yXXwwKSs0Pj4yXXwwKSo0MHwwKTtjW2RkPj4yXT0oY1tsPj4yXXwwKSsoKGNbKGNbcGY+PjJdfDApKzg+PjJdfDApKjQwfDApO2loKGNbZGQ+PjJdfDApO2lmKCEoZVsoY1tKYz4+Ml18MCkrOD4+MV0mMSkpe2JbKGNbZGQ+PjJdfDApKzg+PjFdPTQ7d2Y9YWgoY1tKYz4+Ml18MCl8MDt5Zj1jW2RkPj4yXXwwO2NbeWY+PjJdPX53ZjtjW3lmKzQ+PjJdPX5DfWJyZWFrfWNhc2UgMjA6e2lmKChjWyhjWyhjW3FmPj4yXXwwKSs4OD4+Ml18MCkrND4+Ml18MCk9PShjWyhjW3BmPj4yXXwwKSs0Pj4yXXwwKSlrPTE0O2Vsc2UgY1soY1twZj4+Ml18MCkrND4+Ml09Y1soY1soY1txZj4+Ml18MCkrODg+PjJdfDApKzQ+PjJdO2JyZWFrfWNhc2UgMjI6Y2FzZSAyMTp7Y1tKYz4+Ml09KGNbbD4+Ml18MCkrKChjWyhjW3BmPj4yXXwwKSs0Pj4yXXwwKSo0MHwwKTtpZighKGVbKGNbSmM+PjJdfDApKzg+PjFdJjEpKXtjW3k+PjJdPSskZyhjW0pjPj4yXXwwKSE9MC4wJjE7aWYoKGRbY1twZj4+Ml0+PjBdfDApPT0yMiljW3k+PjJdPSgoY1t5Pj4yXXwwKSE9MF4xKSYxfWVsc2UgY1t5Pj4yXT1jWyhjW3BmPj4yXXwwKSsxMj4+Ml07aWYoY1t5Pj4yXXwwKWs9MTQ7YnJlYWt9Y2FzZSAzNDp7Y1tKYz4+Ml09KGNbbD4+Ml18MCkrKChjWyhjW3BmPj4yXXwwKSs0Pj4yXXwwKSo0MHwwKTtpZihlWyhjW0pjPj4yXXwwKSs4Pj4xXSYxKWs9MTQ7YnJlYWt9Y2FzZSAzNTp7Y1tKYz4+Ml09KGNbbD4+Ml18MCkrKChjWyhjW3BmPj4yXXwwKSs0Pj4yXXwwKSo0MHwwKTtpZighKGVbKGNbSmM+PjJdfDApKzg+PjFdJjEpKWs9MTQ7YnJlYWt9Y2FzZSA5Njp7Y1t4Yj4+Ml09Y1soY1soY1txZj4+Ml18MCkrMTEyPj4yXXwwKSsoY1soY1twZj4+Ml18MCkrND4+Ml08PDIpPj4yXTtjW3FiPj4yXT1jWyhjW3BmPj4yXXwwKSs4Pj4yXTtjW3VmPj4yXT1OSSh4YixxYil8MDtpZihjW3VmPj4yXXwwKWJyZWFrIGE7Y1t5Yz4+Ml09KGNbbD4+Ml18MCkrKChjWyhjW3BmPj4yXXwwKSsxMj4+Ml18MCkqNDB8MCk7Y1ttPj4yXT1jWyhjW3hiPj4yXXwwKSs3Nj4+Ml07Y1thYz4+Ml09Y1soY1t4Yj4+Ml18MCkrMTY+PjJdO2RvIGlmKChjWyhjW3hiPj4yXXwwKSs1Nj4+Ml18MCkhPShjWyhjW3FmPj4yXXwwKSszMj4+Ml18MCkpe2RvIGlmKGFbKGNbeGI+PjJdfDApKzI+PjBdfDApaWYoKGRbY1t4Yj4+Ml0+PjBdfDApPT0zKXtjW2lkPj4yXT0oY1tsPj4yXXwwKSsoKGNbKGNbeGI+PjJdfDApKzE2Pj4yXXwwKSo0MHwwKTt5Zj1jWyhjW2lkPj4yXXwwKSsxMj4+Ml18MDtjW3Y+PjJdPXlmO2NbKGNbeGI+PjJdfDApKzY0Pj4yXT15ZjtjWyhjW3hiPj4yXXwwKSs2MD4+Ml09eWY7Y1soY1t4Yj4+Ml18MCkrNzI+PjJdPWNbKGNbaWQ+PjJdfDApKzE2Pj4yXTticmVha31lbHNle2loKGNbeWM+PjJdfDApO2JyZWFrIGR9ZWxzZXtnPWJJKGNbYWM+PjJdfDApfDA7Y1soY1t4Yj4+Ml18MCkrNjA+PjJdPWc7Zz1PSShjW2FjPj4yXXwwLHYpfDA7Y1soY1t4Yj4+Ml18MCkrNzI+PjJdPWc7Zz1jWyhjW3hiPj4yXXwwKSs2MD4+Ml18MDtpZigoY1soY1t4Yj4+Ml18MCkrNjA+PjJdfDApPj4+MDw9KGNbdj4+Ml18MCk+Pj4wKXtjWyhjW3hiPj4yXXwwKSs2ND4+Ml09ZzticmVha31pZihnPj4+MD4oY1soY1tyZj4+Ml18MCkrOTY+PjJdfDApPj4+MCl7az04ODg7YnJlYWsgY31jWyhjW3hiPj4yXXwwKSs2ND4+Ml09Y1t2Pj4yXX13aGlsZSgwKTtjWyhjW3hiPj4yXXwwKSs1Nj4+Ml09Y1soY1txZj4+Ml18MCkrMzI+PjJdO2c9Y1soY1t4Yj4+Ml18MCkrNzI+PjJdfDA7aWYoKGRbY1soY1t4Yj4+Ml18MCkrNzI+PjJdPj4wXXwwKTwxMjgpe2NbZmI+PjJdPWRbZz4+MF07Zz0xfWVsc2UgZz0oYkcoZyxmYil8MCkmMjU1O2NbKGNbeGI+PjJdfDApKzY4Pj4yXT1nJjI1NTtiWyhjW3hiPj4yXXwwKSsxND4+MV09MDtjW2NbbT4+Ml0+PjJdPWNbZmI+PjJdO2lmKChjW3Y+PjJdfDApPj4+MDwoY1tmYj4+Ml18MCk+Pj4wKXtjWyhjW3hiPj4yXXwwKSs3Mj4+Ml09MDtjWyhjW3hiPj4yXXwwKSs2ND4+Ml09MDtpZigoY1tmYj4+Ml18MCk+Pj4wPjk4MzA3KXtrPTI2NzticmVhayBjfWlmKChjW2ZiPj4yXXwwKT4+PjA+KGNbKGNbeGI+PjJdfDApKzYwPj4yXXwwKT4+PjApe2s9MjY3O2JyZWFrIGN9ZWxzZXtrPTI3MDticmVha319ZWxzZXtpZigoY1tmYj4+Ml18MCk+Pj4wPD0wKXtrPTI3MDticmVha31jW1RlPj4yXT1jWyhjW3hiPj4yXXwwKSs3Mj4+Ml07az0yNzY7YnJlYWt9fWVsc2Ugaz0yNzA7d2hpbGUoMCk7ZG8gaWYoKGt8MCk9PTI3MCl7az0wO2lmKChlWyhjW3hiPj4yXXwwKSsxND4+MV18MCk+KGNbcWI+PjJdfDApKXtjW2plPj4yXT1jWyhjW3hiPj4yXXwwKSs4MCsoY1txYj4+Ml08PDIpPj4yXTticmVha31pZigoY1soY1t4Yj4+Ml18MCkrNjg+PjJdfDApPj4+MD49KGNbY1ttPj4yXT4+Ml18MCk+Pj4wKXtjW2plPj4yXT0wO2s9MjkyO2JyZWFrfWlmKGNbKGNbeGI+PjJdfDApKzcyPj4yXXwwKXtjW1RlPj4yXT1jWyhjW3hiPj4yXXwwKSs3Mj4+Ml07az0yNzY7YnJlYWt9Zz1mZTtmPWcrNDB8MDtkb3tjW2c+PjJdPTA7Zz1nKzR8MH13aGlsZSgoZ3wwKTwoZnwwKSk7Y1t1Zj4+Ml09UEkoY1thYz4+Ml18MCwwLGNbY1ttPj4yXT4+Ml18MCwoKGFbKGNbeGI+PjJdfDApKzQ+PjBdfDApIT0wXjEpJjEsZmUpfDA7aWYoY1t1Zj4+Ml18MClicmVhayBhO2NbVGU+PjJdPWNbZmUrMTY+PjJdO2s9Mjc2fXdoaWxlKDApO2lmKChrfDApPT0yNzYpe2NbUz4+Ml09ZVsoY1t4Yj4+Ml18MCkrMTQ+PjFdO3lmPWdiO2NbeWY+PjJdPWNbKGNbbT4+Ml18MCkrKGNbUz4+Ml08PDIpPj4yXTtjW3lmKzQ+PjJdPTA7Y1tZZT4+Ml09KGNbVGU+PjJdfDApKyhjWyhjW3hiPj4yXXwwKSs2OD4+Ml18MCk7Y1tXZT4+Ml09KGNbVGU+PjJdfDApKyhjW2NbbT4+Ml0+PjJdfDApO2Rve3lmPWRbY1tZZT4+Ml0+PjBdfDA7Y1tqZT4+Ml09eWY7Zz1jW1llPj4yXXwwO2lmKHlmPj4+MDwxMjgpe2NbWWU+PjJdPWcrMTt3Zj0oUUkoY1tqZT4+Ml0mMjU1KXwwKSYyNTU7eWY9Z2I7d2Y9UlIoY1t5Zj4+Ml18MCxjW3lmKzQ+PjJdfDAsd2Z8MCwwKXwwO3lmPWdiO2NbeWY+PjJdPXdmO2NbeWYrND4+Ml09Q31lbHNle3dmPShiRyhnLGplKXwwKSYyNTU7Y1tZZT4+Ml09KGNbWWU+PjJdfDApK3dmO3dmPWNHKGNbamU+PjJdfDApfDA7eWY9Z2I7d2Y9UlIoY1t5Zj4+Ml18MCxjW3lmKzQ+PjJdfDAsd2Z8MCwwKXwwO3lmPWdiO2NbeWY+PjJdPXdmO2NbeWYrND4+Ml09Q313Zj1jW2plPj4yXXwwO3lmPWNbUz4+Ml18MDtjW1M+PjJdPXlmKzE7Y1soY1t4Yj4+Ml18MCkrODArKHlmPDwyKT4+Ml09d2Y7Y1soY1ttPj4yXXwwKSsoY1tTPj4yXTw8Mik+PjJdPWNbZ2I+PjJdO2lmKChjW1M+PjJdfDApPihjW3FiPj4yXXwwKSlicmVha313aGlsZSgoY1tZZT4+Ml18MCk+Pj4wPChjW1dlPj4yXXwwKT4+PjApO2lmKChjW1llPj4yXXwwKT4+PjA+PShjW1dlPj4yXXwwKT4+PjApe2lmKChjW1llPj4yXXwwKT4+PjA+KGNbV2U+PjJdfDApPj4+MCl7az0yODY7YnJlYWsgY315Zj1nYjtpZigoY1t5Zis0Pj4yXXwwKSE9MD8xOihjW3lmPj4yXXwwKSE9KGNbKGNbeGI+PjJdfDApKzYwPj4yXXwwKSl7az0yODY7YnJlYWsgY319eWY9Z2I7d2Y9Y1t5Zis0Pj4yXXwwO2lmKHdmPj4+MD4wfCgod2Z8MCk9PTA/KGNbeWY+PjJdfDApPj4+MD4oY1soY1t4Yj4+Ml18MCkrNjA+PjJdfDApPj4+MDowKSl7az0yODY7YnJlYWsgY31iWyhjW3hiPj4yXXwwKSsxND4+MV09Y1tTPj4yXTtjWyhjW3hiPj4yXXwwKSs2OD4+Ml09KGNbWWU+PjJdfDApLShjW1RlPj4yXXwwKTtpZighKGNbKGNbeGI+PjJdfDApKzcyPj4yXXwwKSl7WGcoZmUpO2s9MjkyfWVsc2Ugaz0yOTJ9aWYoKGt8MCk9PTI5Mj8oaz0wLChlWyhjW3hiPj4yXXwwKSsxND4+MV18MCk8PShjW3FiPj4yXXwwKSk6MCl7Zz1jW3ljPj4yXXwwO2lmKChhWyhjW3BmPj4yXXwwKSsxPj4wXXwwKT09LTgpe2tHKGcsY1soY1twZj4+Ml18MCkrMTY+PjJdfDAsMjA0OCk7YnJlYWsgZH1lbHNle2loKGcpO2JyZWFrIGR9fWlmKGVbKGNbeWM+PjJdfDApKzg+PjFdJjkzMTIpaWgoY1t5Yz4+Ml18MCk7aWYoKGNbKGNbeGI+PjJdfDApKzY0Pj4yXXwwKT4+PjA+PShjWyhjW20+PjJdfDApKygoY1txYj4+Ml18MCkrMTw8Mik+PjJdfDApPj4+MCl7Y1tUZT4+Ml09KGNbKGNbeGI+PjJdfDApKzcyPj4yXXwwKSsoY1soY1ttPj4yXXwwKSsoY1txYj4+Ml08PDIpPj4yXXwwKTtpZigoY1tqZT4+Ml18MCk+Pj4wPDEyKXtkRyhjW1RlPj4yXXwwLGNbamU+PjJdfDAsY1t5Yz4+Ml18MCl8MDticmVhayBkfWc9KCgoY1tqZT4+Ml18MCktMTJ8MCk+Pj4wKS8yfDA7Y1tDYT4+Ml09ZztjWyhjW3ljPj4yXXwwKSsxMj4+Ml09ZzthWyhjW3ljPj4yXXwwKSsxMD4+MF09YVtHPj4wXXwwO2c9Y1t5Yz4+Ml18MDtpZigoY1soY1t5Yz4+Ml18MCkrMjQ+PjJdfDApPCgoY1tDYT4+Ml18MCkrMnwwKSl7YltnKzg+PjFdPTE7aWYoT3goY1t5Yz4+Ml18MCwoY1tDYT4+Ml18MCkrMnwwLDApfDApe2s9ODg5O2JyZWFrIGF9fWVsc2UgY1soY1t5Yz4+Ml18MCkrMTY+PjJdPWNbZysyMD4+Ml07VFIoY1soY1t5Yz4+Ml18MCkrMTY+PjJdfDAsY1tUZT4+Ml18MCxjW0NhPj4yXXwwKXwwO2FbKGNbKGNbeWM+PjJdfDApKzE2Pj4yXXwwKSsoY1tDYT4+Ml18MCk+PjBdPTA7YVsoY1soY1t5Yz4+Ml18MCkrMTY+PjJdfDApKygoY1tDYT4+Ml18MCkrMSk+PjBdPTA7YlsoY1t5Yz4+Ml18MCkrOD4+MV09YlsxNjQxOCsoKGNbamU+PjJdJjEpPDwxKT4+MV18MDticmVhayBkfWFbKGNbeWM+PjJdfDApKzEwPj4wXT1hW0c+PjBdfDA7ZG8gaWYoZFsoY1twZj4+Ml18MCkrMz4+MF0mMTkyKXtpZigoY1tqZT4+Ml18MCk+Pj4wPj0xMj8oY1tqZT4+Ml0mMXwwKT09MDowKWJyZWFrO2lmKCEoZFsoY1twZj4+Ml18MCkrMz4+MF0mMTI4KSlrPTMxMH1lbHNlIGs9MzEwO3doaWxlKDApO2lmKChrfDApPT0zMTA/KGs9MCx5Zj1jRyhjW2plPj4yXXwwKXwwLGNbQ2E+PjJdPXlmLCh5ZnwwKSE9MCk6MCl7Y1t1Zj4+Ml09UEkoY1thYz4+Ml18MCxjWyhjW20+PjJdfDApKyhjW3FiPj4yXTw8Mik+PjJdfDAsY1tDYT4+Ml18MCwoKGFbKGNbeGI+PjJdfDApKzQ+PjBdfDApIT0wXjEpJjEsY1t5Yz4+Ml18MCl8MDtpZihjW3VmPj4yXXwwKWJyZWFrIGE7ZEcoY1soY1t5Yz4+Ml18MCkrMTY+PjJdfDAsY1tqZT4+Ml18MCxjW3ljPj4yXXwwKXwwO3lmPShjW3ljPj4yXXwwKSs4fDA7Ylt5Zj4+MV09ZVt5Zj4+MV0mLTQwOTc7YnJlYWsgZH1kRygzOTk0MyxjW2plPj4yXXwwLGNbeWM+PjJdfDApfDA7YnJlYWt9Y2FzZSA5ODp7Y1tSZT4+Ml09Y1soY1twZj4+Ml18MCkrMTY+PjJdO2NbSmM+PjJdPShjW2w+PjJdfDApKygoY1soY1twZj4+Ml18MCkrND4+Ml18MCkqNDB8MCk7d2hpbGUoMSl7eWY9Y1tSZT4+Ml18MDtjW1JlPj4yXT15ZisxO3lmPWFbeWY+PjBdfDA7YVt6Pj4wXT15ZjtpZighKHlmPDwyND4+MjQpKWJyZWFrIGQ7THgoY1tKYz4+Ml18MCxhW3o+PjBdfDAsYVtHPj4wXXwwKTtjW0pjPj4yXT0oY1tKYz4+Ml18MCkrNDB9fWNhc2UgOTk6e3lmPVFhO2NbeWY+PjJdPTA7Y1t5Zis0Pj4yXT0wO2NbV2E+PjJdPTA7eWY9YmI7Y1t5Zj4+Ml09MDtjW3lmKzQ+PjJdPTA7Y1tUYT4+Ml09Y1soY1twZj4+Ml18MCkrND4+Ml07Y1tTZT4+Ml09Y1soY1twZj4+Ml18MCkrMTY+PjJdO2NbdWM+PjJdPShjW2w+PjJdfDApKygoY1tUYT4+Ml18MCkqNDB8MCk7Y1tUYT4+Ml09Y1soY1twZj4+Ml18MCkrOD4+Ml07Y1tRYz4+Ml09KGNbdWM+PjJdfDApKygoKGNbVGE+PjJdfDApLTF8MCkqNDB8MCk7Y1tKPj4yXT1kWyhjW3FmPj4yXXwwKSsxNDM+PjBdO2NbZGQ+PjJdPShjW2w+PjJdfDApKygoY1soY1twZj4+Ml18MCkrMTI+PjJdfDApKjQwfDApO2lmKGNbU2U+PjJdfDApe2NbaGQ+PjJdPWNbdWM+PjJdO2Rve3dmPWNbaGQ+PjJdfDA7Y1toZD4+Ml09d2YrNDA7eWY9Y1tTZT4+Ml18MDtjW1NlPj4yXT15ZisxO0x4KHdmLGFbeWY+PjBdfDAsYVtHPj4wXXwwKX13aGlsZSgoYVtjW1NlPj4yXT4+MF18MCkhPTApfWNbaGQ+PjJdPWNbUWM+PjJdO3doaWxlKDEpe3lmPVJJKGNbaGQ+PjJdfDAsY1tKPj4yXXwwLERhKXwwO2NbaWU+PjJdPXlmO2NbKGNbaGQ+PjJdfDApKzI4Pj4yXT15ZjtkbyBpZihlWyhjW2hkPj4yXXwwKSs4Pj4xXSYxNjM4NCl7eWY9UWE7Zz1jW2hkPj4yXXwwO2lmKChjW3lmPj4yXXwwKSE9MHwoY1t5Zis0Pj4yXXwwKSE9MClpZihZZyhnKXwwKXtrPTg4OTticmVhayBhfWVsc2UgYnJlYWs7ZWxzZXt3Zj1jW2c+PjJdfDA7eWY9YmI7d2Y9UlIoY1t5Zj4+Ml18MCxjW3lmKzQ+PjJdfDAsd2Z8MCwoKHdmfDApPDApPDwzMT4+MzF8MCl8MDt5Zj1iYjtjW3lmPj4yXT13ZjtjW3lmKzQ+PjJdPUM7Y1tEYT4+Ml09KGNbRGE+PjJdfDApLShjW2NbaGQ+PjJdPj4yXXwwKTticmVha319d2hpbGUoMCk7d2Y9UWE7d2Y9UlIoY1t3Zj4+Ml18MCxjW3dmKzQ+PjJdfDAsY1tEYT4+Ml18MCwwKXwwO3lmPVFhO2NbeWY+PjJdPXdmO2NbeWYrND4+Ml09QztpZigoY1tpZT4+Ml18MCk+Pj4wPD0xMjcpZz0xO2Vsc2UgZz1pRyhjW2llPj4yXXwwLDApfDA7Y1tXYT4+Ml09KGNbV2E+PjJdfDApK2c7aWYoKGNbaGQ+PjJdfDApPT0oY1t1Yz4+Ml18MCkpYnJlYWs7Y1toZD4+Ml09KGNbaGQ+PjJdfDApKy00MH1nPWNbV2E+PjJdfDA7aWYoKGNbV2E+PjJdfDApPjEyNil7Y1thYj4+Ml09aUcoZywoKGd8MCk8MCk8PDMxPj4zMSl8MDtjW1dhPj4yXT0oY1tXYT4+Ml18MCkrKGNbYWI+PjJdfDApO3dmPWNbYWI+PjJdfDA7eWY9Y1tXYT4+Ml18MDtpZigod2Z8MCk8KGlHKHlmLCgoeWZ8MCk8MCk8PDMxPj4zMSl8MCkpY1tXYT4+Ml09KGNbV2E+PjJdfDApKzF9ZWxzZSBjW1dhPj4yXT1nKzE7Zj1jW1dhPj4yXXwwO3dmPVFhO3dmPVJSKGZ8MCwoKGZ8MCk8MCk8PDMxPj4zMXwwLGNbd2Y+PjJdfDAsY1t3Zis0Pj4yXXwwKXwwO2Y9TmE7Y1tmPj4yXT13ZjtjW2YrND4+Ml09QztmPU5hO3dmPWJiO3dmPVJSKGNbZj4+Ml18MCxjW2YrND4+Ml18MCxjW3dmPj4yXXwwLGNbd2YrND4+Ml18MCl8MDtmPUM7eWY9Y1soY1tyZj4+Ml18MCkrOTY+PjJdfDA7aj0oKHlmfDApPDApPDwzMT4+MzE7aWYoKGZ8MCk+KGp8MCl8KGZ8MCk9PShqfDApJndmPj4+MD55Zj4+PjApe2s9ODg4O2JyZWFrIGN9aWYoTngoY1tkZD4+Ml18MCxjW05hPj4yXXwwKXwwKXtrPTg4OTticmVhayBhfWNbYWY+PjJdPWNbKGNbZGQ+PjJdfDApKzE2Pj4yXTtpZigoY1tXYT4+Ml18MCk+Pj4wPDEyOCl7YVtjW2FmPj4yXT4+MF09Y1tXYT4+Ml07Zz0xfWVsc2V7Zz1jW1dhPj4yXXwwO2c9U0koY1thZj4+Ml18MCxnLCgoZ3wwKTwwKTw8MzE+PjMxKXwwfWNbVj4+Ml09ZyYyNTU7Y1tCYT4+Ml09Y1tXYT4+Ml07Y1toZD4+Ml09Y1t1Yz4+Ml07ZG97Y1tpZT4+Ml09Y1soY1toZD4+Ml18MCkrMjg+PjJdO2lmKChjW2llPj4yXXwwKT4+PjA8MTI4KXthWyhjW2FmPj4yXXwwKSsoY1tWPj4yXXwwKT4+MF09Y1tpZT4+Ml07Zz0xfWVsc2UgZz1TSSgoY1thZj4+Ml18MCkrKGNbVj4+Ml18MCl8MCxjW2llPj4yXXwwLDApfDA7Y1tWPj4yXT0oY1tWPj4yXXwwKSsoZyYyNTUpO3lmPVRJKChjW2FmPj4yXXwwKSsoY1tCYT4+Ml18MCl8MCxjW2hkPj4yXXwwLGNbaWU+PjJdfDApfDA7Y1tCYT4+Ml09KGNbQmE+PjJdfDApK3lmO3lmPShjW2hkPj4yXXwwKSs0MHwwO2NbaGQ+PjJdPXlmfXdoaWxlKHlmPj4+MDw9KGNbUWM+PjJdfDApPj4+MCk7Y1soY1tkZD4+Ml18MCkrMTI+PjJdPWNbTmE+PjJdO2JbKGNbZGQ+PjJdfDApKzg+PjFdPTE2O3lmPWJiO2lmKChjW3lmPj4yXXwwKSE9MHwoY1t5Zis0Pj4yXXwwKSE9MCl7Y1tjW2RkPj4yXT4+Ml09Y1tiYj4+Ml07eWY9KGNbZGQ+PjJdfDApKzh8MDtiW3lmPj4xXT1lW3lmPj4xXXwxNjM4NH1hWyhjW2RkPj4yXXwwKSsxMD4+MF09MTticmVha31jYXNlIDEwMDp7Y1tiYz4+Ml09Y1soY1soY1soY1txZj4+Ml18MCkrMTEyPj4yXXwwKSsoY1soY1twZj4+Ml18MCkrND4+Ml08PDIpPj4yXXwwKSsxNj4+Ml07eWY9UmE7Y1t5Zj4+Ml09MDtjW3lmKzQ+PjJdPTA7Y1t1Zj4+Ml09VUkoY1tiYz4+Ml18MCxSYSl8MDtpZihjW3VmPj4yXXwwKWJyZWFrIGE7Y1tkZD4+Ml09Q0koY1txZj4+Ml18MCxjW3BmPj4yXXwwKXwwO2o9UmE7d2Y9Y1tqKzQ+PjJdfDA7eWY9Y1tkZD4+Ml18MDtjW3lmPj4yXT1jW2o+PjJdO2NbeWYrND4+Ml09d2Y7YnJlYWt9Y2FzZSAwOntjW21iPj4yXT1jWyhjW3BmPj4yXXwwKSs0Pj4yXTtjW19lPj4yXT1jWyhjW3BmPj4yXXwwKSsxNj4+Ml07ZG8gaWYoIShjW21iPj4yXXwwKSl7aWYoKGNbKGNbcmY+PjJdfDApKzE2ND4+Ml18MCk+MCl7QUkoY1txZj4+Ml18MCwzOTk1MSx3ZSk7Y1t1Zj4+Ml09NTticmVha31jW1phPj4yXT1KZihjW19lPj4yXXwwKXwwO2NbdWY+PjJdPVZJKGNbcmY+PjJdfDAsMCwoY1soY1tyZj4+Ml18MCkrNDM2Pj4yXXwwKSsoY1soY1tyZj4+Ml18MCkrNDMyPj4yXXwwKXwwKXwwO2lmKGNbdWY+PjJdfDApYnJlYWsgYTtjW2NkPj4yXT1WdyhjW3JmPj4yXXwwLDMyKyhjW1phPj4yXXwwKSsxfDAsMCl8MDtpZihjW2NkPj4yXXwwKXtjW2NbY2Q+PjJdPj4yXT0oY1tjZD4+Ml18MCkrMzI7VFIoY1tjW2NkPj4yXT4+Ml18MCxjW19lPj4yXXwwLChjW1phPj4yXXwwKSsxfDApfDA7Zz1jW3JmPj4yXXwwO2lmKGFbKGNbcmY+PjJdfDApKzY3Pj4wXXwwKXthW2crNjc+PjBdPTA7YVsoY1tyZj4+Ml18MCkrNzU+PjBdPTF9ZWxzZXt5Zj1nKzQzMnwwO2NbeWY+PjJdPShjW3lmPj4yXXwwKSsxfWNbKGNbY2Q+PjJdfDApKzI0Pj4yXT1jWyhjW3JmPj4yXXwwKSs0MjQ+PjJdO2NbKGNbcmY+PjJdfDApKzQyND4+Ml09Y1tjZD4+Ml07eWY9KGNbcmY+PjJdfDApKzQ0MHwwO3dmPWNbeWYrND4+Ml18MDtqPShjW2NkPj4yXXwwKSs4fDA7Y1tqPj4yXT1jW3lmPj4yXTtjW2orND4+Ml09d2Y7aj0oY1tyZj4+Ml18MCkrNDQ4fDA7d2Y9Y1tqKzQ+PjJdfDA7eWY9KGNbY2Q+PjJdfDApKzE2fDA7Y1t5Zj4+Ml09Y1tqPj4yXTtjW3lmKzQ+PjJdPXdmfX1lbHNle2Nbc2E+PjJdPTA7Y1trZD4+Ml09Y1soY1tyZj4+Ml18MCkrNDI0Pj4yXTt3aGlsZSgxKXtpZighKGNba2Q+PjJdfDApKWJyZWFrO2lmKCEoaWcoY1tjW2tkPj4yXT4+Ml18MCxjW19lPj4yXXwwKXwwKSlicmVhaztjW3NhPj4yXT0oY1tzYT4+Ml18MCkrMTtjW2tkPj4yXT1jWyhjW2tkPj4yXXwwKSsyND4+Ml19aWYoIShjW2tkPj4yXXwwKSl7eWY9Y1txZj4+Ml18MDtjW3hlPj4yXT1jW19lPj4yXTtBSSh5Ziw0MDAwMix4ZSk7Y1t1Zj4+Ml09MTticmVha31pZigoY1ttYj4+Ml18MCk9PTE/KGNbKGNbcmY+PjJdfDApKzE2ND4+Ml18MCk+MDowKXtBSShjW3FmPj4yXXwwLDQwMDI0LHllKTtjW3VmPj4yXT01O2JyZWFrfWlmKCEoY1soY1trZD4+Ml18MCkrMjQ+PjJdfDApKWc9KGRbKGNbcmY+PjJdfDApKzc1Pj4wXXwwKSE9MDtlbHNlIGc9MDtjW3phPj4yXT1nJjE7aWYoISgoY1t6YT4+Ml18MCkhPTAmKGNbbWI+PjJdfDApPT0xKSl7Y1tzYT4+Ml09KGNbKGNbcmY+PjJdfDApKzQzMj4+Ml18MCktKGNbc2E+PjJdfDApLTE7ZzpkbyBpZigoY1ttYj4+Ml18MCk9PTIpe2NbeWE+PjJdPShjWyhjW3JmPj4yXXwwKSsyND4+Ml0mMnwwKSE9MCYxO2NbdmE+PjJdPTA7d2hpbGUoMSl7aWYoKGNbdmE+PjJdfDApPj0oY1soY1tyZj4+Ml18MCkrMjA+PjJdfDApKWJyZWFrIGc7Y1t1Zj4+Ml09V0koY1soY1soY1tyZj4+Ml18MCkrMTY+PjJdfDApKyhjW3ZhPj4yXTw8NCkrND4+Ml18MCw1MTYsKGNbeWE+PjJdfDApPT0wJjEpfDA7aWYoY1t1Zj4+Ml18MClicmVhayBhO2NbdmE+PjJdPShjW3ZhPj4yXXwwKSsxfX1lbHNlIGNbeWE+PjJdPTA7d2hpbGUoMCk7Y1t2YT4+Ml09MDt3aGlsZSgxKXtpZigoY1t2YT4+Ml18MCk+PShjWyhjW3JmPj4yXXwwKSsyMD4+Ml18MCkpYnJlYWs7Y1t1Zj4+Ml09WEkoY1soY1soY1tyZj4+Ml18MCkrMTY+PjJdfDApKyhjW3ZhPj4yXTw8NCkrND4+Ml18MCxjW21iPj4yXXwwLGNbc2E+PjJdfDApfDA7aWYoY1t1Zj4+Ml18MClicmVhayBhO2NbdmE+PjJdPShjW3ZhPj4yXXwwKSsxfWlmKGNbeWE+PjJdfDApe1NoKGNbcmY+PjJdfDApO0NnKGNbcmY+PjJdfDApO2NbKGNbcmY+PjJdfDApKzI0Pj4yXT1jWyhjW3JmPj4yXXwwKSsyND4+Ml18Mn19ZWxzZXt5Zj1FSShjW3FmPj4yXXwwLDEpfDA7Y1t1Zj4+Ml09eWY7aWYoeWYpe2s9ODg3O2JyZWFrIGN9YVsoY1tyZj4+Ml18MCkrNjc+PjBdPTE7aWYoKEJJKGNbcWY+PjJdfDApfDApPT01KXtrPTM3MDticmVhayBjfWFbKGNbcmY+PjJdfDApKzc1Pj4wXT0wO2NbdWY+PjJdPWNbKGNbcWY+PjJdfDApKzQwPj4yXX13aGlsZSgxKXtpZigoY1soY1tyZj4+Ml18MCkrNDI0Pj4yXXwwKT09KGNba2Q+PjJdfDApKWJyZWFrO2Nbb2Q+PjJdPWNbKGNbcmY+PjJdfDApKzQyND4+Ml07Y1soY1tyZj4+Ml18MCkrNDI0Pj4yXT1jWyhjW29kPj4yXXwwKSsyND4+Ml07VGYoY1tyZj4+Ml18MCxjW29kPj4yXXwwKTt5Zj0oY1tyZj4+Ml18MCkrNDMyfDA7Y1t5Zj4+Ml09KGNbeWY+PjJdfDApKy0xfWc9Y1trZD4+Ml18MDtpZigoY1ttYj4+Ml18MCk9PTEpe2NbKGNbcmY+PjJdfDApKzQyND4+Ml09Y1tnKzI0Pj4yXTtUZihjW3JmPj4yXXwwLGNba2Q+PjJdfDApO2lmKCEoY1t6YT4+Ml18MCkpe3lmPShjW3JmPj4yXXwwKSs0MzJ8MDtjW3lmPj4yXT0oY1t5Zj4+Ml18MCkrLTF9fWVsc2V7eWY9Zys4fDA7d2Y9Y1t5Zis0Pj4yXXwwO2o9KGNbcmY+PjJdfDApKzQ0MHwwO2Nbaj4+Ml09Y1t5Zj4+Ml07Y1tqKzQ+PjJdPXdmO2o9KGNba2Q+PjJdfDApKzE2fDA7d2Y9Y1tqKzQ+PjJdfDA7eWY9KGNbcmY+PjJdfDApKzQ0OHwwO2NbeWY+PjJdPWNbaj4+Ml07Y1t5Zis0Pj4yXT13Zn1pZigoY1t6YT4+Ml18MCk9PTB8KGNbbWI+PjJdfDApPT0yKXtjW3VmPj4yXT1WSShjW3JmPj4yXXwwLGNbbWI+PjJdfDAsY1tzYT4+Ml18MCl8MDtpZigoY1t1Zj4+Ml18MCkhPTB8KGNbdWY+PjJdfDApIT0wKWJyZWFrIGE7ZWxzZSBicmVhayBkfX13aGlsZSgwKTtpZihjW3VmPj4yXXwwKWJyZWFrIGE7YnJlYWt9Y2FzZSAyOntpZigoY1soY1twZj4+Ml18MCkrOD4+Ml18MCkhPTA/KGNbKGNbcmY+PjJdfDApKzI0Pj4yXSY2NzEwODg2NHwwKSE9MDowKXtrPTQxMTticmVhayBjfWNbdGI+PjJdPWNbKGNbKGNbcmY+PjJdfDApKzE2Pj4yXXwwKSsoY1soY1twZj4+Ml18MCkrND4+Ml08PDQpKzQ+PjJdO2lmKGNbdGI+PjJdfDApe2NbdWY+PjJdPXBnKGNbdGI+PjJdfDAsY1soY1twZj4+Ml18MCkrOD4+Ml18MCl8MDtpZihjW3VmPj4yXXwwKXtrPTQxNDticmVhayBjfWRvIGlmKChjWyhjW3BmPj4yXXwwKSs4Pj4yXXwwKSE9MD8oKGVbKGNbcWY+PjJdfDApKzE0ND4+MV18MCk+Pj42JjF8MCkhPTA6MCl7aWYoKGRbKGNbcmY+PjJdfDApKzY3Pj4wXXwwKSE9MD8oY1soY1tyZj4+Ml18MCkrMTYwPj4yXXwwKTw9MTowKWJyZWFrO2lmKCEoY1soY1txZj4+Ml18MCkrNDg+PjJdfDApKXt5Zj0oY1tyZj4+Ml18MCkrNDM2fDA7Y1t5Zj4+Ml09KGNbeWY+PjJdfDApKzE7Y1soY1txZj4+Ml18MCkrNDg+PjJdPShjWyhjW3JmPj4yXXwwKSs0MzI+PjJdfDApKyhjWyhjW3JmPj4yXXwwKSs0MzY+PjJdfDApfWNbdWY+PjJdPVZJKGNbcmY+PjJdfDAsMCwoY1soY1txZj4+Ml18MCkrNDg+PjJdfDApLTF8MCl8MDtpZighKGNbdWY+PjJdfDApKWNbdWY+PjJdPV9JKGNbdGI+PjJdfDAsY1soY1txZj4+Ml18MCkrNDg+PjJdfDApfDA7eWY9KGNbcmY+PjJdfDApKzQ0MHwwO3dmPWNbeWYrND4+Ml18MDtqPShjW3FmPj4yXXwwKSs3MnwwO2Nbaj4+Ml09Y1t5Zj4+Ml07Y1tqKzQ+PjJdPXdmO2o9KGNbcmY+PjJdfDApKzQ0OHwwO3dmPWNbais0Pj4yXXwwO3lmPShjW3FmPj4yXXwwKSs4MHwwO2NbeWY+PjJdPWNbaj4+Ml07Y1t5Zis0Pj4yXT13Zn13aGlsZSgwKTtyZyhjW3RiPj4yXXwwLDEsbmEpO2Nba2E+PjJdPWNbKGNbKGNbKGNbcmY+PjJdfDApKzE2Pj4yXXwwKSsoY1soY1twZj4+Ml18MCkrND4+Ml08PDQpKzEyPj4yXXwwKSs0Pj4yXX1lbHNle2NbbmE+PjJdPTA7Y1trYT4+Ml09MH1kbyBpZihkWyhjW3BmPj4yXXwwKSszPj4wXXwwKXtpZigoY1tuYT4+Ml18MCk9PShjWyhjW3BmPj4yXXwwKSsxMj4+Ml18MCk/KGNba2E+PjJdfDApPT0oY1soY1twZj4+Ml18MCkrMTY+PjJdfDApOjApYnJlYWs7VGYoY1tyZj4+Ml18MCxjWyhjW3FmPj4yXXwwKSsxMDg+PjJdfDApO3lmPXFoKGNbcmY+PjJdfDAsNDAyNjUpfDA7Y1soY1txZj4+Ml18MCkrMTA4Pj4yXT15ZjtpZigoY1tjWyhjWyhjW3JmPj4yXXwwKSsxNj4+Ml18MCkrKGNbKGNbcGY+PjJdfDApKzQ+PjJdPDw0KSsxMj4+Ml0+PjJdfDApIT0oY1tuYT4+Ml18MCkpd2ooY1tyZj4+Ml18MCxjWyhjW3BmPj4yXXwwKSs0Pj4yXXwwKTt5Zj0oY1txZj4+Ml18MCkrMTQ0fDA7Ylt5Zj4+MV09Ylt5Zj4+MV0mLTJ8MTtjW3VmPj4yXT0xN313aGlsZSgwKTtpZihjW3VmPj4yXXwwKWJyZWFrIGE7YnJlYWt9Y2FzZSAxMDE6e2NbZ2E+PjJdPWNbKGNbcGY+PjJdfDApKzQ+PjJdO2NbZmE+PjJdPWNbKGNbcGY+PjJdfDApKzEyPj4yXTtyZyhjWyhjWyhjW3JmPj4yXXwwKSsxNj4+Ml18MCkrKGNbZ2E+PjJdPDw0KSs0Pj4yXXwwLGNbZmE+PjJdfDAsb2EpO2NbZGQ+PjJdPUNJKGNbcWY+PjJdfDAsY1twZj4+Ml18MCl8MDt3Zj1jW29hPj4yXXwwO3lmPWNbZGQ+PjJdfDA7Y1t5Zj4+Ml09d2Y7Y1t5Zis0Pj4yXT0oKHdmfDApPDApPDwzMT4+MzE7YnJlYWt9Y2FzZSAxMDI6e2NbdmM+PjJdPShjWyhjW3JmPj4yXXwwKSsxNj4+Ml18MCkrKGNbKGNbcGY+PjJdfDApKzQ+PjJdPDw0KTtjW3VmPj4yXT1CZyhjWyhjW3ZjPj4yXXwwKSs0Pj4yXXwwLGNbKGNbcGY+PjJdfDApKzg+PjJdfDAsY1soY1twZj4+Ml18MCkrMTI+PjJdfDApfDA7Zz1jW3BmPj4yXXwwO2lmKChjWyhjW3BmPj4yXXwwKSs4Pj4yXXwwKSE9MSl7aWYoKGNbZys4Pj4yXXwwKT09MilhWyhjWyhjW3ZjPj4yXXwwKSsxMj4+Ml18MCkrNzY+PjBdPWNbKGNbcGY+PjJdfDApKzEyPj4yXX1lbHNle2NbY1soY1t2Yz4+Ml18MCkrMTI+PjJdPj4yXT1jW2crMTI+PjJdO3lmPShjW3JmPj4yXXwwKSsyNHwwO2NbeWY+PjJdPWNbeWY+PjJdfDJ9aWYoKGNbKGNbcGY+PjJdfDApKzQ+PjJdfDApPT0xKXtTaChjW3JmPj4yXXwwKTt5Zj0oY1txZj4+Ml18MCkrMTQ0fDA7Ylt5Zj4+MV09Ylt5Zj4+MV0mLTJ9aWYoY1t1Zj4+Ml18MClicmVhayBhO2JyZWFrfWNhc2UgMTAzOntjW2xjPj4yXT1jWyhjWyhjW3FmPj4yXXwwKSsxMTI+PjJdfDApKyhjWyhjW3BmPj4yXXwwKSs0Pj4yXTw8Mik+PjJdO2lmKChjW2xjPj4yXXwwKSE9MD8oY1soY1tsYz4+Ml18MCkrOD4+Ml18MCk9PShjWyhjW3BmPj4yXXwwKSs4Pj4yXXwwKTowKWs9NDU4O2Vsc2Ugaz00NDQ7YnJlYWt9Y2FzZSAxMDU6Y2FzZSAxMDQ6e2s9NDQ0O2JyZWFrfWNhc2UgMTA3OmNhc2UgMTA2OntjW3FjPj4yXT0kSShjW3FmPj4yXXwwLGNbKGNbcGY+PjJdfDApKzQ+PjJdfDAsY1soY1twZj4+Ml18MCkrOD4+Ml18MCwtMSwwKXwwO2lmKCEoY1txYz4+Ml18MCkpe2s9ODg5O2JyZWFrIGF9YVsoY1txYz4+Ml18MCkrMj4+MF09MTt5Zj0oY1txYz4+Ml18MCkrNXwwO2FbeWY+PjBdPWFbeWY+PjBdJi0yfDE7Y1t1Zj4+Ml09YmsoY1tjW3JmPj4yXT4+Ml18MCwwLGNbcmY+PjJdfDAsKGNbcWM+PjJdfDApKzIwfDAsNXxkWyhjW3BmPj4yXXwwKSszPj4wXSwxMDU0KXwwO2lmKCEoY1t1Zj4+Ml18MCkpY1t1Zj4+Ml09cGcoY1soY1txYz4+Ml18MCkrMjA+PjJdfDAsMSl8MDtkbyBpZighKGNbdWY+PjJdfDApKXt5Zj1jWyhjW3BmPj4yXXwwKSsxNj4+Ml18MDtjW1BjPj4yXT15ZjtnPWNbKGNbcWM+PjJdfDApKzIwPj4yXXwwO2lmKCF5Zil7Y1t1Zj4+Ml09YUooZywxLDQsMCxjWyhjW3FjPj4yXXwwKSsxNj4+Ml18MCl8MDthWyhjW3FjPj4yXXwwKSs0Pj4wXT0xO2JyZWFrfWNbdWY+PjJdPWNKKGcsRGQsMnxkWyhjW3BmPj4yXXwwKSszPj4wXSl8MDtpZighKGNbdWY+PjJdfDApKXtjWyhjW3FjPj4yXXwwKSsyND4+Ml09Y1tQYz4+Ml07Y1t1Zj4+Ml09YUooY1soY1txYz4+Ml18MCkrMjA+PjJdfDAsY1tEZD4+Ml18MCw0LGNbUGM+PjJdfDAsY1soY1txYz4+Ml18MCkrMTY+PjJdfDApfDB9YVsoY1txYz4+Ml18MCkrND4+MF09MH13aGlsZSgwKTtpZihjW3VmPj4yXXwwKWJyZWFrIGE7eWY9KGNbcWM+PjJdfDApKzV8MDthW3lmPj4wXT1hW3lmPj4wXSYtNXwoKGRbKGNbcGY+PjJdfDApKzM+PjBdfDApIT04JjEpPDwyJjI1NTticmVha31jYXNlIDEwODp7Y1tyYz4+Ml09JEkoY1txZj4+Ml18MCxjWyhjW3BmPj4yXXwwKSs0Pj4yXXwwLGNbKGNbcGY+PjJdfDApKzg+PjJdfDAsLTEsMSl8MDtpZighKGNbcmM+PjJdfDApKXtrPTg4OTticmVhayBhfWNbKGNbcmM+PjJdfDApKzI0Pj4yXT1jWyhjW3BmPj4yXXwwKSsxNj4+Ml07Y1t1Zj4+Ml09ZEooY1tyZj4+Ml18MCxjWyhjW3BmPj4yXXwwKSsxMj4+Ml18MCxjW3JjPj4yXXwwKXwwO2lmKGNbdWY+PjJdfDApYnJlYWsgYTticmVha31jYXNlIDEwOTp7Y1t5Yj4+Ml09Y1soY1soY1txZj4+Ml18MCkrMTEyPj4yXXwwKSsoY1soY1twZj4+Ml18MCkrND4+Ml08PDIpPj4yXTtqPShjW3liPj4yXXwwKSszMnwwO3lmPWo7d2Y9Y1t5Zj4+Ml18MDt5Zj1jW3lmKzQ+PjJdfDA7Zj1SUih3ZnwwLHlmfDAsMSwwKXwwO2Nbaj4+Ml09ZjtjW2orND4+Ml09QztpZigod2Z8MCk9PTAmKHlmfDApPT0wKWs9MTQ7YnJlYWt9Y2FzZSAxMTA6e2Nbc2M+PjJdPSRJKGNbcWY+PjJdfDAsY1soY1twZj4+Ml18MCkrND4+Ml18MCxjWyhjW3BmPj4yXXwwKSsxMj4+Ml18MCwtMSwzKXwwO2lmKCEoY1tzYz4+Ml18MCkpe2s9ODg5O2JyZWFrIGF9YVsoY1tzYz4+Ml18MCkrMj4+MF09MTtjWyhjW3NjPj4yXXwwKSsxNj4+Ml09Y1soY1twZj4+Ml18MCkrOD4+Ml07YVsoY1tzYz4+Ml18MCkrND4+MF09MTticmVha31jYXNlIDExMTp7ZUooY1txZj4+Ml18MCxjWyhjWyhjW3FmPj4yXXwwKSsxMTI+PjJdfDApKyhjWyhjW3BmPj4yXXwwKSs0Pj4yXTw8Mik+PjJdfDApO2NbKGNbKGNbcWY+PjJdfDApKzExMj4+Ml18MCkrKGNbKGNbcGY+PjJdfDApKzQ+PjJdPDwyKT4+Ml09MDticmVha31jYXNlIDI2OmNhc2UgMjU6Y2FzZSAyNDpjYXNlIDIzOntjW3piPj4yXT1jWyhjWyhjW3FmPj4yXXwwKSsxMTI+PjJdfDApKyhjWyhjW3BmPj4yXXwwKSs0Pj4yXTw8Mik+PjJdO2NbZWI+PjJdPWRbY1twZj4+Ml0+PjBdO2NbSD4+Ml09MDthWyhjW3piPj4yXXwwKSsyPj4wXT0wO2lmKGFbKGNbemI+PjJdfDApKzQ+PjBdfDApe2NbTGM+PjJdPShjW2w+PjJdfDApKygoY1soY1twZj4+Ml18MCkrMTI+PjJdfDApKjQwfDApO2lmKChlWyhjW0xjPj4yXXwwKSs4Pj4xXSYxNHwwKT09MilCaChjW0xjPj4yXXwwLDApO3dmPWFoKGNbTGM+PjJdfDApfDA7eWY9bGE7Y1t5Zj4+Ml09d2Y7Y1t5Zis0Pj4yXT1DO2RvIGlmKCEoZVsoY1tMYz4+Ml18MCkrOD4+MV0mNCkpe2lmKCEoZVsoY1tMYz4+Ml18MCkrOD4+MV0mOCkpe2s9MTQ7YnJlYWsgZH15Zj1sYTtpZigraFtjW0xjPj4yXT4+M108KygoY1t5Zj4+Ml18MCk+Pj4wKSs0Mjk0OTY3Mjk2LjAqKyhjW3lmKzQ+PjJdfDApKXtpZihjW2ViPj4yXSYxKWJyZWFrO2NbZWI+PjJdPShjW2ViPj4yXXwwKSstMTticmVha315Zj1sYTtpZigraFtjW0xjPj4yXT4+M10+KygoY1t5Zj4+Ml18MCk+Pj4wKSs0Mjk0OTY3Mjk2LjAqKyhjW3lmKzQ+PjJdfDApPyhjW2ViPj4yXSYxfDApPT0xOjApY1tlYj4+Ml09KGNbZWI+PjJdfDApKzF9d2hpbGUoMCk7aj1sYTtjW3VmPj4yXT1PRihjWyhjW3piPj4yXXwwKSsxNj4+Ml18MCwwLGNbaj4+Ml18MCxjW2orND4+Ml18MCwwLFRkKXwwO2o9bGE7d2Y9Y1tqKzQ+PjJdfDA7eWY9KGNbemI+PjJdfDApKzQwfDA7Y1t5Zj4+Ml09Y1tqPj4yXTtjW3lmKzQ+PjJdPXdmO2lmKGNbdWY+PjJdfDApYnJlYWsgYTtlbHNlIGs9NDkzfWVsc2V7aWYoZkooY1soY1t6Yj4+Ml18MCkrMTY+PjJdfDAsMil8MCljW0g+PjJdPTE7Y1tWYT4+Ml09Y1soY1twZj4+Ml18MCkrMTY+PjJdO2NbR2Q+PjJdPWNbKGNbemI+PjJdfDApKzI0Pj4yXTtiW0dkKzg+PjFdPWNbVmE+PjJdO2FbR2QrMTA+PjBdPSgxJihjW2ViPj4yXXwwKS0yM3wwKSE9MD8tMToxO2NbR2QrND4+Ml09KGNbbD4+Ml18MCkrKChjWyhjW3BmPj4yXXwwKSsxMj4+Ml18MCkqNDB8MCk7YVtHZCsxND4+MF09MDtjW3VmPj4yXT1PRihjWyhjW3piPj4yXXwwKSsxNj4+Ml18MCxHZCwwLDAsMCxUZCl8MDtpZihjW3VmPj4yXXwwKWJyZWFrIGE7aWYoISgoY1tIPj4yXXwwKSE9MD8oZFtHZCsxND4+MF18MCk9PTA6MCkpaz00OTN9ZG8gaWYoKGt8MCk9PTQ5Myl7az0wO2FbKGNbemI+PjJdfDApKzM+PjBdPTA7Y1soY1t6Yj4+Ml18MCkrNTY+PjJdPTA7Zz1jW1RkPj4yXXwwO2lmKChjW2ViPj4yXXwwKT49MjUpe2lmKChnfDApPj0wPyEoKGNbVGQ+PjJdfDApPT0wJihjW2ViPj4yXXwwKT09MjYpOjApe2NbVGQ+PjJdPTA7YnJlYWt9Y1tUZD4+Ml09MDtjW3VmPj4yXT1CRihjWyhjW3piPj4yXXwwKSsxNj4+Ml18MCxUZCl8MDtpZihjW3VmPj4yXXwwKWJyZWFrIGE7ZWxzZSBicmVha31lbHNle2lmKChnfDApPD0wPyEoKGNbVGQ+PjJdfDApPT0wJihjW2ViPj4yXXwwKT09MjMpOjApe2NbVGQ+PjJdPWdKKGNbKGNbemI+PjJdfDApKzE2Pj4yXXwwKXwwO2JyZWFrfWNbVGQ+PjJdPTA7Y1t1Zj4+Ml09Q0YoY1soY1t6Yj4+Ml18MCkrMTY+PjJdfDAsVGQpfDA7aWYoY1t1Zj4+Ml18MClicmVhayBhO2Vsc2UgYnJlYWt9fXdoaWxlKDApO2lmKCEoY1tUZD4+Ml18MCkpe2lmKGNbSD4+Ml18MCljW3BmPj4yXT0oY1twZj4+Ml18MCkrMjB9ZWxzZSBrPTE0O2JyZWFrfWNhc2UgMzE6Y2FzZSAzMDpjYXNlIDI5OntjW0FiPj4yXT1jWyhjWyhjW3FmPj4yXXwwKSsxMTI+PjJdfDApKyhjWyhjW3BmPj4yXXwwKSs0Pj4yXTw8Mik+PjJdO2NbTGM+PjJdPShjW2w+PjJdfDApKygoY1soY1twZj4+Ml18MCkrMTI+PjJdfDApKjQwfDApO2NbR2M+PjJdPTA7Zz1jWyhjW0FiPj4yXXwwKSsyND4+Ml18MDtpZigoY1soY1twZj4+Ml18MCkrMTY+PjJdfDApPjApe2NbSGQ+PjJdPWc7YltIZCs4Pj4xXT1jWyhjW3BmPj4yXXwwKSsxNj4+Ml07Y1tIZCs0Pj4yXT1jW0xjPj4yXTtjW0hjPj4yXT1IZH1lbHNle2NbSGM+PjJdPU1GKGcscSwxODMsR2MpfDA7aWYoIShjW0hjPj4yXXwwKSl7az04ODk7YnJlYWsgYX1pZihlWyhjW0xjPj4yXXwwKSs4Pj4xXSYxNjM4NClZZyhjW0xjPj4yXXwwKXwwO05GKGNbKGNbQWI+PjJdfDApKzI0Pj4yXXwwLGNbKGNbTGM+PjJdfDApKzEyPj4yXXwwLGNbKGNbTGM+PjJdfDApKzE2Pj4yXXwwLGNbSGM+PjJdfDApfWFbKGNbSGM+PjJdfDApKzEwPj4wXT0wO2NbbWU+PjJdPTA7aDpkbyBpZigoZFtjW3BmPj4yXT4+MF18MCk9PTI5KXtjW3dhPj4yXT0wO3doaWxlKDEpe2lmKChjW3dhPj4yXXwwKT49KGVbKGNbSGM+PjJdfDApKzg+PjFdfDApKWJyZWFrIGg7aWYoZVsoY1soY1tIYz4+Ml18MCkrND4+Ml18MCkrKChjW3dhPj4yXXwwKSo0MHwwKSs4Pj4xXSYxKWJyZWFrO2Nbd2E+PjJdPShjW3dhPj4yXXwwKSsxfWNbbWU+PjJdPTF9d2hpbGUoMCk7Y1t1Zj4+Ml09T0YoY1soY1tBYj4+Ml18MCkrMTY+PjJdfDAsY1tIYz4+Ml18MCwwLDAsMCxVZCl8MDtUZihjW3JmPj4yXXwwLGNbR2M+PjJdfDApO2lmKGNbdWY+PjJdfDApYnJlYWsgYTtjWyhjW0FiPj4yXXwwKSsyOD4+Ml09Y1tVZD4+Ml07Y1tzPj4yXT0oY1tVZD4+Ml18MCk9PTAmMTthWyhjW0FiPj4yXXwwKSsyPj4wXT0xLShjW3M+PjJdfDApO2FbKGNbQWI+PjJdfDApKzM+PjBdPTA7Y1soY1tBYj4+Ml18MCkrNTY+PjJdPTA7aWYoKGRbY1twZj4+Ml0+PjBdfDApPT0zMSlpZihjW3M+PjJdfDApe2s9MTQ7YnJlYWsgZH1lbHNlIGJyZWFrIGQ7ZWxzZSBpZigoY1ttZT4+Ml18MCk9PTAmKGNbcz4+Ml18MCkhPTApYnJlYWsgZDtlbHNle2s9MTQ7YnJlYWsgZH19Y2FzZSAzMjp7Y1tMYz4+Ml09KGNbbD4+Ml18MCkrKChjWyhjW3BmPj4yXXwwKSsxMj4+Ml18MCkqNDB8MCk7aWYoKGVbKGNbTGM+PjJdfDApKzg+PjFdJjR8MCk9PTA/KEx4KGNbTGM+PjJdfDAsNjcsYVtHPj4wXXwwKSwoZVsoY1tMYz4+Ml18MCkrOD4+MV0mNHwwKT09MCk6MClrPTE0O2Vsc2Ugaz01MjM7YnJlYWt9Y2FzZSAzMzp7az01MjM7YnJlYWt9Y2FzZSAxMTM6e2NbZGQ+PjJdPUNJKGNbcWY+PjJdfDAsY1twZj4+Ml18MCl8MDt5Zj0oY1soY1soY1txZj4+Ml18MCkrMTEyPj4yXXwwKSsoY1soY1twZj4+Ml18MCkrND4+Ml08PDIpPj4yXXwwKSszMnwwO3dmPXlmO2o9Y1t3Zj4+Ml18MDt3Zj1jW3dmKzQ+PjJdfDA7Zj1SUihqfDAsd2Z8MCwxLDApfDA7Y1t5Zj4+Ml09ZjtjW3lmKzQ+PjJdPUM7eWY9Y1tkZD4+Ml18MDtjW3lmPj4yXT1qO2NbeWYrND4+Ml09d2Y7YnJlYWt9Y2FzZSAxMTQ6e3lmPXFlO2NbeWY+PjJdPTA7Y1t5Zis0Pj4yXT0wO2NbV2Q+PjJdPTA7Y1tkZD4+Ml09Q0koY1txZj4+Ml18MCxjW3BmPj4yXXwwKXwwO2NbQ2I+PjJdPWNbKGNbKGNbcWY+PjJdfDApKzExMj4+Ml18MCkrKGNbKGNbcGY+PjJdfDApKzQ+PjJdPDwyKT4+Ml07ZG8gaWYoISgoZFsoY1tDYj4+Ml18MCkrNT4+MF18MCk+Pj4xJjEpKXtjW3VmPj4yXT1oSihjWyhjW0NiPj4yXXwwKSsxNj4+Ml18MCxXZCl8MDtpZihjW3VmPj4yXXwwKWJyZWFrIGE7aWYoY1tXZD4+Ml18MCl7eWY9cWU7Y1t5Zj4+Ml09MTtjW3lmKzQ+PjJdPTA7YnJlYWt9d2Y9YUkoY1soY1tDYj4+Ml18MCkrMTY+PjJdfDApfDA7eWY9cWU7Y1t5Zj4+Ml09d2Y7Y1t5Zis0Pj4yXT1DO3lmPXFlO3dmPWNbeWYrND4+Ml18MDtpZigod2Z8MCk+MjE0NzQ4MzY0N3wod2Z8MCk9PTIxNDc0ODM2NDcmKGNbeWY+PjJdfDApPj4+MD49NDI5NDk2NzI5NSl7eWY9KGNbQ2I+PjJdfDApKzV8MDthW3lmPj4wXT1hW3lmPj4wXSYtM3wyO2JyZWFrfWVsc2V7d2Y9cWU7d2Y9UlIoY1t3Zj4+Ml18MCxjW3dmKzQ+PjJdfDAsMSwwKXwwO3lmPXFlO2NbeWY+PjJdPXdmO2NbeWYrND4+Ml09QzticmVha319d2hpbGUoMCk7aWYoY1soY1twZj4+Ml18MCkrMTI+PjJdfDApe2lmKGNbKGNbcWY+PjJdfDApKzE4ND4+Ml18MCl7Y1tDYz4+Ml09Y1soY1txZj4+Ml18MCkrMTg0Pj4yXTt3aGlsZSgxKXtpZighKGNbKGNbQ2M+PjJdfDApKzQ+PjJdfDApKWJyZWFrO2NbQ2M+PjJdPWNbKGNbQ2M+PjJdfDApKzQ+PjJdfWNbU2M+PjJdPShjWyhjW0NjPj4yXXwwKSsxNj4+Ml18MCkrKChjWyhjW3BmPj4yXXwwKSsxMj4+Ml18MCkqNDB8MCl9ZWxzZSBjW1NjPj4yXT0oY1tsPj4yXXwwKSsoKGNbKGNbcGY+PjJdfDApKzEyPj4yXXwwKSo0MHwwKTtReChjW1NjPj4yXXwwKXwwO3lmPWNbU2M+PjJdfDA7aWYoKGNbeWY+PjJdfDApPT0tMT8oY1t5Zis0Pj4yXXwwKT09MjE0NzQ4MzY0NzowKXtrPTU0NDticmVhayBjfWlmKChkWyhjW0NiPj4yXXwwKSs1Pj4wXXwwKT4+PjEmMSl7az01NDQ7YnJlYWsgY31mPXFlO3dmPWNbZj4+Ml18MDtmPWNbZis0Pj4yXXwwO3lmPWNbU2M+PjJdfDA7eWY9UlIoY1t5Zj4+Ml18MCxjW3lmKzQ+PjJdfDAsMSwwKXwwO2o9QztpZigoZnwwKTwoanwwKXwoZnwwKT09KGp8MCkmd2Y+Pj4wPHlmPj4+MCl7d2Y9Y1tTYz4+Ml18MDt3Zj1SUihjW3dmPj4yXXwwLGNbd2YrND4+Ml18MCwxLDApfDA7eWY9cWU7Y1t5Zj4+Ml09d2Y7Y1t5Zis0Pj4yXT1DfWo9cWU7d2Y9Y1tqKzQ+PjJdfDA7eWY9Y1tTYz4+Ml18MDtjW3lmPj4yXT1jW2o+PjJdO2NbeWYrND4+Ml09d2Z9aWYoKGRbKGNbQ2I+PjJdfDApKzU+PjBdfDApPj4+MSYxKXtjW0I+PjJdPTA7ZG97U2QoOCxxZSk7aj1xZTt5Zj1jW2orND4+Ml0mMTA3Mzc0MTgyMzt3Zj1xZTtjW3dmPj4yXT1jW2o+PjJdO2Nbd2YrND4+Ml09eWY7d2Y9cWU7d2Y9UlIoY1t3Zj4+Ml18MCxjW3dmKzQ+PjJdfDAsMSwwKXwwO3lmPXFlO2NbeWY+PjJdPXdmO2NbeWYrND4+Ml09Qzt5Zj1xZTt5Zj1PRihjWyhjW0NiPj4yXXwwKSsxNj4+Ml18MCwwLGNbeWY+PjJdfDAsY1t5Zis0Pj4yXXwwLDAsV2QpfDA7Y1t1Zj4+Ml09eWY7aWYoISgoeWZ8MCk9PTAmKGNbV2Q+PjJdfDApPT0wKSlicmVhazt5Zj0oY1tCPj4yXXwwKSsxfDA7Y1tCPj4yXT15Zn13aGlsZSgoeWZ8MCk8MTAwKTtpZihjW3VmPj4yXXwwKWJyZWFrIGE7aWYoIShjW1dkPj4yXXwwKSl7az01NTQ7YnJlYWsgY319YVsoY1tDYj4+Ml18MCkrMz4+MF09MDtjWyhjW0NiPj4yXXwwKSs1Nj4+Ml09MDtqPXFlO3dmPWNbais0Pj4yXXwwO3lmPWNbZGQ+PjJdfDA7Y1t5Zj4+Ml09Y1tqPj4yXTtjW3lmKzQ+PjJdPXdmO2JyZWFrfWNhc2UgMTE2OmNhc2UgMTE1OntjW2liPj4yXT0wO2NbdGM+PjJdPShjW2w+PjJdfDApKygoY1soY1twZj4+Ml18MCkrOD4+Ml18MCkqNDB8MCk7Y1tEYj4+Ml09Y1soY1soY1txZj4+Ml18MCkrMTEyPj4yXXwwKSsoY1soY1twZj4+Ml18MCkrND4+Ml08PDIpPj4yXTtnPWNbKGNbcGY+PjJdfDApKzEyPj4yXXwwO2lmKChkW2NbcGY+PjJdPj4wXXwwKT09MTE1KXtjW01jPj4yXT0oY1tsPj4yXXwwKSsoZyo0MHwwKTtqPWNbTWM+PjJdfDA7d2Y9Y1tqKzQ+PjJdfDA7eWY9TGUrOHwwO2NbeWY+PjJdPWNbaj4+Ml07Y1t5Zis0Pj4yXT13Zn1lbHNle3lmPUxlKzh8MDtjW3lmPj4yXT1nO2NbeWYrND4+Ml09KChnfDApPDApPDwzMT4+MzF9aWYoKGFbKGNbcGY+PjJdfDApKzE+PjBdfDApPT0tMjA/KGNbKGNbcmY+PjJdfDApKzIyMD4+Ml18MCkhPTA6MCl7Y1tVZT4+Ml09Y1soY1soY1tyZj4+Ml18MCkrMTY+PjJdfDApKyhhWyhjW0RiPj4yXXwwKSsxPj4wXTw8NCk+PjJdO2NbbGQ+PjJdPWNbKGNbcGY+PjJdfDApKzE2Pj4yXTtjW2liPj4yXT0oZFsoY1twZj4+Ml18MCkrMz4+MF0mNHwwKSE9MD8yMzoxOH1lbHNle2NbbGQ+PjJdPTA7Y1tVZT4+Ml09MH1pZihkWyhjW3BmPj4yXXwwKSszPj4wXSYxKXt5Zj0oY1txZj4+Ml18MCkrNDR8MDtjW3lmPj4yXT0oY1t5Zj4+Ml18MCkrMX1pZihkWyhjW3BmPj4yXXwwKSszPj4wXSYyKXt3Zj1MZSs4fDA7aj1jW3dmPj4yXXwwO3dmPWNbd2YrND4+Ml18MDt5Zj1zZjtjW3lmPj4yXT1qO2NbeWYrND4+Ml09d2Y7eWY9KGNbcmY+PjJdfDApKzMyfDA7Y1t5Zj4+Ml09ajtjW3lmKzQ+PjJdPXdmfWlmKGVbKGNbdGM+PjJdfDApKzg+PjFdJjEpe2NbTGUrMTY+PjJdPTA7Y1tMZSsyMD4+Ml09MH1lbHNle2NbTGUrMTY+PjJdPWNbKGNbdGM+PjJdfDApKzE2Pj4yXTtjW0xlKzIwPj4yXT1jWyhjW3RjPj4yXXwwKSsxMj4+Ml19aWYoZFsoY1twZj4+Ml18MCkrMz4+MF0mMTYpZz1jWyhjW0RiPj4yXXwwKSsyOD4+Ml18MDtlbHNlIGc9MDtjW2hlPj4yXT1nO2lmKGVbKGNbdGM+PjJdfDApKzg+PjFdJjE2Mzg0KWNbTGUrMjQ+PjJdPWNbY1t0Yz4+Ml0+PjJdO2Vsc2UgY1tMZSsyND4+Ml09MDtjW0xlPj4yXT0wO2NbdWY+PjJdPWlKKGNbKGNbRGI+PjJdfDApKzE2Pj4yXXwwLExlLChkWyhjW3BmPj4yXXwwKSszPj4wXSY4fDApIT0wJjEsY1toZT4+Ml18MCl8MDthWyhjW0RiPj4yXXwwKSszPj4wXT0wO2NbKGNbRGI+PjJdfDApKzU2Pj4yXT0wO2lmKGNbdWY+PjJdfDApYnJlYWsgYTtpZigoY1tpYj4+Ml18MCkhPTA/KGNbKGNbcmY+PjJdfDApKzIyMD4+Ml18MCkhPTA6MCl7eWY9TGUrOHwwO1hiW2NbKGNbcmY+PjJdfDApKzIyMD4+Ml0mMjU1XShjWyhjW3JmPj4yXXwwKSsyMTY+PjJdfDAsY1tpYj4+Ml18MCxjW1VlPj4yXXwwLGNbY1tsZD4+Ml0+PjJdfDAsY1t5Zj4+Ml18MCxjW3lmKzQ+PjJdfDApfWJyZWFrfWNhc2UgMTE3OntjW2piPj4yXT1jWyhjW3BmPj4yXXwwKSs4Pj4yXTtjW0ViPj4yXT1jWyhjWyhjW3FmPj4yXXwwKSsxMTI+PjJdfDApKyhjWyhjW3BmPj4yXXwwKSs0Pj4yXTw8Mik+PjJdO2lmKChhWyhjW3BmPj4yXXwwKSsxPj4wXXwwKT09LTIwPyhjWyhjW3JmPj4yXXwwKSsyMjA+PjJdfDApIT0wOjApe2NbVmU+PjJdPWNbKGNbKGNbcmY+PjJdfDApKzE2Pj4yXXwwKSsoYVsoY1tFYj4+Ml18MCkrMT4+MF08PDQpPj4yXTtjW21kPj4yXT1jWyhjW3BmPj4yXXwwKSsxNj4+Ml07aWYoKGRbKGNbcGY+PjJdfDApKzM+PjBdJjJ8MCkhPTA/KGRbKGNbRWI+PjJdfDApKzQ+PjBdfDApIT0wOjApe3dmPWFJKGNbKGNbRWI+PjJdfDApKzE2Pj4yXXwwKXwwO3lmPShjW0ViPj4yXXwwKSs0MHwwO2NbeWY+PjJdPXdmO2NbeWYrND4+Ml09Q319ZWxzZXtjW1ZlPj4yXT0wO2NbbWQ+PjJdPTB9Y1t1Zj4+Ml09akooY1soY1tFYj4+Ml18MCkrMTY+PjJdfDAsYVsoY1twZj4+Ml18MCkrMz4+MF18MCl8MDtjWyhjW0ViPj4yXXwwKSs1Nj4+Ml09MDtpZihjW3VmPj4yXXwwKWJyZWFrIGE7aWYoKChjW2piPj4yXSYxfDApIT0wPyh5Zj0oY1txZj4+Ml18MCkrNDR8MCxjW3lmPj4yXT0oY1t5Zj4+Ml18MCkrMSwoY1soY1tyZj4+Ml18MCkrMjIwPj4yXXwwKSE9MCk6MCk/KGRbKGNbbWQ+PjJdfDApKzQyPj4wXSYzMnwwKT09MDowKXt5Zj0oY1tFYj4+Ml18MCkrNDB8MDtYYltjWyhjW3JmPj4yXXwwKSsyMjA+PjJdJjI1NV0oY1soY1tyZj4+Ml18MCkrMjE2Pj4yXXwwLDksY1tWZT4+Ml18MCxjW2NbbWQ+PjJdPj4yXXwwLGNbeWY+PjJdfDAsY1t5Zis0Pj4yXXwwKX1icmVha31jYXNlIDExODp7eUkoY1tyZj4+Ml18MCxjWyhjW3FmPj4yXXwwKSs0ND4+Ml18MCk7Y1soY1txZj4+Ml18MCkrNDQ+PjJdPTA7YnJlYWt9Y2FzZSAxMTk6e2NbRmI+PjJdPWNbKGNbKGNbcWY+PjJdfDApKzExMj4+Ml18MCkrKGNbKGNbcGY+PjJdfDApKzQ+PjJdPDwyKT4+Ml07Y1tMYz4+Ml09KGNbbD4+Ml18MCkrKChjWyhjW3BmPj4yXXwwKSsxMj4+Ml18MCkqNDB8MCk7Y1tYYT4+Ml09Y1soY1twZj4+Ml18MCkrMTY+PjJdO2NbWGQ+PjJdPTA7Y1t1Zj4+Ml09a0ooY1tGYj4+Ml18MCxjW0xjPj4yXXwwLGNbWGE+PjJdfDAsWGQpfDA7aWYoY1t1Zj4+Ml18MClicmVhayBhO2lmKGNbWGQ+PjJdfDApaz0xNDticmVha31jYXNlIDEyMDp7Y1tkZD4+Ml09KGNbbD4+Ml18MCkrKChjWyhjW3BmPj4yXXwwKSs4Pj4yXXwwKSo0MHwwKTtjW0diPj4yXT1jWyhjWyhjW3FmPj4yXXwwKSsxMTI+PjJdfDApKyhjWyhjW3BmPj4yXXwwKSs0Pj4yXTw8Mik+PjJdO2NbdWY+PjJdPWxKKGNbR2I+PjJdfDAsY1tkZD4+Ml18MCl8MDtpZihjW3VmPj4yXXwwKWJyZWFrIGE7Y1soY1soY1soY1txZj4+Ml18MCkrMTEyPj4yXXwwKSsoY1soY1twZj4+Ml18MCkrMTI+PjJdPDwyKT4+Ml18MCkrNTY+PjJdPTA7YnJlYWt9Y2FzZSAxMjI6Y2FzZSAxMjE6e2NbZGQ+PjJdPShjW2w+PjJdfDApKygoY1soY1twZj4+Ml18MCkrOD4+Ml18MCkqNDB8MCk7Y1tIYj4+Ml09Y1soY1soY1txZj4+Ml18MCkrMTEyPj4yXXwwKSsoY1soY1twZj4+Ml18MCkrND4+Ml08PDIpPj4yXTtjW2RjPj4yXT1jWyhjW0hiPj4yXXwwKSsxNj4+Ml07Y1tIYT4+Ml09YkkoY1tkYz4+Ml18MCl8MDtpZigoY1tIYT4+Ml18MCk+Pj4wPihjWyhjW3JmPj4yXXwwKSs5Nj4+Ml18MCk+Pj4wKXtrPTg4ODticmVhayBjfWlmKE54KGNbZGQ+PjJdfDAsKGNbSGE+PjJdfDApPj4+MD4zMj9jW0hhPj4yXXwwOjMyKXwwKXtrPTg4OTticmVhayBhfWNbKGNbZGQ+PjJdfDApKzEyPj4yXT1jW0hhPj4yXTtiWyhjW2RkPj4yXXwwKSs4Pj4xXT1lWyhjW2RkPj4yXXwwKSs4Pj4xXSYtNDk2NjR8MTY7Zz1jW2RjPj4yXXwwO2Y9Y1tIYT4+Ml18MDtqPWNbKGNbZGQ+PjJdfDApKzE2Pj4yXXwwO2lmKCEoZFsoY1tIYj4+Ml18MCkrND4+MF18MCkpY1t1Zj4+Ml09Y0koZywwLGYsail8MDtlbHNlIGNbdWY+PjJdPVFoKGcsMCxmLGopfDA7aWYoY1t1Zj4+Ml18MClicmVhayBhO2FbKGNbZGQ+PjJdfDApKzEwPj4wXT0xO2JyZWFrfWNhc2UgMTIzOntjW2RkPj4yXT1DSShjW3FmPj4yXXwwLGNbcGY+PjJdfDApfDA7Y1tJYj4+Ml09Y1soY1soY1txZj4+Ml18MCkrMTEyPj4yXXwwKSsoY1soY1twZj4+Ml18MCkrND4+Ml08PDIpPj4yXTtpZihhWyhjW0liPj4yXXwwKSsyPj4wXXwwKXtiWyhjW2RkPj4yXXwwKSs4Pj4xXT0xO2JyZWFrIGR9Zz1jW0liPj4yXXwwO2RvIGlmKCEoYVsoY1tJYj4+Ml18MCkrMz4+MF18MCkpe2Y9Y1tJYj4+Ml18MDtpZigoZFtnPj4wXXwwKT09Mil7Y1t0ZD4+Ml09Y1tjW2YrMTY+PjJdPj4yXTtjW1hjPj4yXT1jW2NbdGQ+PjJdPj4yXTtjW3VmPj4yXT1ZYltjWyhjW1hjPj4yXXwwKSs0OD4+Ml0mMjU1XShjWyhjW0liPj4yXXwwKSsxNj4+Ml18MCx0ZSl8MDttSihjW3FmPj4yXXwwLGNbdGQ+PjJdfDApO2lmKGNbdWY+PjJdfDApYnJlYWsgYTtlbHNlIGJyZWFrfWNbdWY+PjJdPW5KKGYpfDA7aWYoY1t1Zj4+Ml18MClicmVhayBhO2lmKGFbKGNbSWI+PjJdfDApKzI+PjBdfDApe2JbKGNbZGQ+PjJdfDApKzg+PjFdPTE7YnJlYWsgZH1lbHNle3dmPWFJKGNbKGNbSWI+PjJdfDApKzE2Pj4yXXwwKXwwO3lmPXRlO2NbeWY+PjJdPXdmO2NbeWYrND4+Ml09QzticmVha319ZWxzZXtqPWcrNDB8MDt3Zj1jW2orND4+Ml18MDt5Zj10ZTtjW3lmPj4yXT1jW2o+PjJdO2NbeWYrND4+Ml09d2Z9d2hpbGUoMCk7aj10ZTt3Zj1jW2orND4+Ml18MDt5Zj1jW2RkPj4yXXwwO2NbeWY+PjJdPWNbaj4+Ml07Y1t5Zis0Pj4yXT13ZjticmVha31jYXNlIDEyNDp7Y1tKYj4+Ml09Y1soY1soY1txZj4+Ml18MCkrMTEyPj4yXXwwKSsoY1soY1twZj4+Ml18MCkrND4+Ml08PDIpPj4yXTthWyhjW0piPj4yXXwwKSsyPj4wXT0xO2NbKGNbSmI+PjJdfDApKzU2Pj4yXT0wO2lmKCEoZFtjW0piPj4yXT4+MF18MCkpUEIoY1soY1tKYj4+Ml18MCkrMTY+PjJdfDApO2JyZWFrfWNhc2UgNTM6e2NbS2I+PjJdPWNbKGNbKGNbcWY+PjJdfDApKzExMj4+Ml18MCkrKGNbKGNbcGY+PjJdfDApKzQ+PjJdPDwyKT4+Ml07Y1tlYz4+Ml09Y1soY1tLYj4+Ml18MCkrMTY+PjJdO2NbWWQ+PjJdPTA7Y1t1Zj4+Ml09aEooY1tlYz4+Ml18MCxZZCl8MDthWyhjW0tiPj4yXXwwKSsyPj4wXT1jW1lkPj4yXTthWyhjW0tiPj4yXXwwKSszPj4wXT0wO2NbKGNbS2I+PjJdfDApKzU2Pj4yXT0wO2NbKGNbS2I+PjJdfDApKzI4Pj4yXT1jWyhjW3BmPj4yXXwwKSsxMj4+Ml07aWYoY1t1Zj4+Ml18MClicmVhayBhO2lmKChjW1lkPj4yXXwwKSE9MD8oY1soY1twZj4+Ml18MCkrOD4+Ml18MCk+MDowKWs9MTQ7YnJlYWt9Y2FzZSA1NjpjYXNlIDU1OntrPShjW3FmPj4yXXwwKSsxNTYrOHwwO2Nbaz4+Ml09KGNbaz4+Ml18MCkrMTtrPTYxNzticmVha31jYXNlIDU3OntrPTYxNzticmVha31jYXNlIDM6e2NbTWI+PjJdPWNbKGNbKGNbcWY+PjJdfDApKzExMj4+Ml18MCkrKGNbKGNbcGY+PjJdfDApKzQ+PjJdPDwyKT4+Ml07Y1tfZD4+Ml09MDtjW3VmPj4yXT1xSihjW3JmPj4yXXwwLGNbTWI+PjJdfDAsX2QpfDA7az02MjU7YnJlYWt9Y2FzZSA1OmNhc2UgNDp7aWYoY1soY1soY1txZj4+Ml18MCkrMTEyPj4yXXwwKSsoY1soY1twZj4+Ml18MCkrND4+Ml08PDIpPj4yXXwwKWs9NjI0O2JyZWFrfWNhc2UgNzpjYXNlIDY6e2s9NjI0O2JyZWFrfWNhc2UgMTI2OmNhc2UgMTI1OntjW05iPj4yXT1jWyhjWyhjW3FmPj4yXXwwKSsxMTI+PjJdfDApKyhjWyhjW3BmPj4yXXwwKSs0Pj4yXTw8Mik+PjJdO2NbS2M+PjJdPShjW2w+PjJdfDApKygoY1soY1twZj4+Ml18MCkrOD4+Ml18MCkqNDB8MCk7aWYoZFsoY1twZj4+Ml18MCkrMz4+MF0mMSl7eWY9KGNbcWY+PjJdfDApKzQ0fDA7Y1t5Zj4+Ml09KGNbeWY+PjJdfDApKzF9aWYoZVsoY1tLYz4+Ml18MCkrOD4+MV0mMTYzODQpZz1ZZyhjW0tjPj4yXXwwKXwwO2Vsc2UgZz0wO2NbdWY+PjJdPWc7aWYoY1t1Zj4+Ml18MClicmVhayBhO2lmKChkW2NbcGY+PjJdPj4wXXwwKT09MTI1KWNbdWY+PjJdPXJKKGNbTmI+PjJdfDAsY1tLYz4+Ml18MCl8MDtlbHNle3dmPWNbKGNbS2M+PjJdfDApKzEyPj4yXXwwO3lmPU5lKzh8MDtjW3lmPj4yXT13ZjtjW3lmKzQ+PjJdPSgod2Z8MCk8MCk8PDMxPj4zMTtjW05lPj4yXT1jWyhjW0tjPj4yXXwwKSsxNj4+Ml07aWYoZFsoY1twZj4+Ml18MCkrMz4+MF0mMTYpZz1jWyhjW05iPj4yXXwwKSsyOD4+Ml18MDtlbHNlIGc9MDtjW3VmPj4yXT1pSihjWyhjW05iPj4yXXwwKSsxNj4+Ml18MCxOZSxjWyhjW3BmPj4yXXwwKSsxMj4+Ml18MCxnKXwwO2NbKGNbTmI+PjJdfDApKzU2Pj4yXT0wfWlmKGNbdWY+PjJdfDApYnJlYWsgYTticmVha31jYXNlIDEyNzp7Y1tQYj4+Ml09Y1soY1soY1txZj4+Ml18MCkrMTEyPj4yXXwwKSsoY1soY1twZj4+Ml18MCkrND4+Ml08PDIpPj4yXTtjW2djPj4yXT1jWyhjW1BiPj4yXXwwKSsxNj4+Ml07Y1tJZD4+Ml09Y1soY1tQYj4+Ml18MCkrMjQ+PjJdO2JbSWQrOD4+MV09Y1soY1twZj4+Ml18MCkrMTI+PjJdO2FbSWQrMTA+PjBdPTA7Y1tJZCs0Pj4yXT0oY1tsPj4yXXwwKSsoKGNbKGNbcGY+PjJdfDApKzg+PjJdfDApKjQwfDApO2NbdWY+PjJdPU9GKGNbZ2M+PjJdfDAsSWQsMCwwLDAsYWUpfDA7aWYoY1t1Zj4+Ml18MClicmVhayBhO2lmKChjW2FlPj4yXXwwKT09MD8oY1t1Zj4+Ml09akooY1tnYz4+Ml18MCw0KXwwLChjW3VmPj4yXXwwKSE9MCk6MClicmVhayBhO2NbKGNbUGI+PjJdfDApKzU2Pj4yXT0wO2JyZWFrfWNhc2UgMTI5OmNhc2UgMTI4OntjW1FiPj4yXT1jWyhjWyhjW3FmPj4yXXwwKSsxMTI+PjJdfDApKyhjWyhjW3BmPj4yXXwwKSs0Pj4yXTw8Mik+PjJdO2NbdWY+PjJdPW5KKGNbUWI+PjJdfDApfDA7aWYoY1t1Zj4+Ml18MClicmVhayBhO2lmKGFbKGNbUWI+PjJdfDApKzI+PjBdfDApe2loKChjW2w+PjJdfDApKygoY1soY1twZj4+Ml18MCkrOD4+Ml18MCkqNDB8MCl8MCk7YnJlYWsgZH15Zj1jZTtjW3lmPj4yXT0wO2NbeWYrND4+Ml09MDtjW3VmPj4yXT1zSihjW3JmPj4yXXwwLGNbKGNbUWI+PjJdfDApKzE2Pj4yXXwwLGNlKXwwO2lmKGNbdWY+PjJdfDApYnJlYWsgYTtpZigoZFtjW3BmPj4yXT4+MF18MCk9PTEyOCl7Y1tuZD4+Ml09Y1soY1soY1txZj4+Ml18MCkrMTEyPj4yXXwwKSsoY1soY1twZj4+Ml18MCkrMTI+PjJdPDwyKT4+Ml07YVsoY1tuZD4+Ml18MCkrMj4+MF09MDtqPWNlO3dmPWNbais0Pj4yXXwwO3lmPShjW25kPj4yXXwwKSs0MHwwO2NbeWY+PjJdPWNbaj4+Ml07Y1t5Zis0Pj4yXT13ZjthWyhjW25kPj4yXXwwKSszPj4wXT0xO2NbKGNbbmQ+PjJdfDApKzUyPj4yXT1jWyhjW3BmPj4yXXwwKSsxNj4+Ml07Y1soY1tuZD4+Ml18MCkrNDg+PjJdPWNbUWI+PjJdO2JyZWFrIGR9ZWxzZXtjW2RkPj4yXT1DSShjW3FmPj4yXXwwLGNbcGY+PjJdfDApfDA7aj1jZTt3Zj1jW2orND4+Ml18MDt5Zj1jW2RkPj4yXXwwO2NbeWY+PjJdPWNbaj4+Ml07Y1t5Zis0Pj4yXT13ZjtiWyhjW2RkPj4yXXwwKSs4Pj4xXT00O2JyZWFrIGR9fWNhc2UgNjE6Y2FzZSA2MDpjYXNlIDU5OmNhc2UgNTg6e2NbU2I+PjJdPWNbKGNbKGNbcWY+PjJdfDApKzExMj4+Ml18MCkrKGNbKGNbcGY+PjJdfDApKzQ+PjJdPDwyKT4+Ml07Y1tKZD4+Ml09Y1soY1tTYj4+Ml18MCkrMjQ+PjJdO2JbSmQrOD4+MV09Y1soY1twZj4+Ml18MCkrMTY+PjJdO2c9SmQrMTB8MDtpZigoZFtjW3BmPj4yXT4+MF18MCk8NjApYVtnPj4wXT0tMTtlbHNlIGFbZz4+MF09MDtjW0pkKzQ+PjJdPShjW2w+PjJdfDApKygoY1soY1twZj4+Ml18MCkrMTI+PjJdfDApKjQwfDApO2NbYmU+PjJdPTA7Y1t1Zj4+Ml09dEooY1tyZj4+Ml18MCxjW1NiPj4yXXwwLEpkLGJlKXwwO2c9Y1tiZT4+Ml18MDtpZighKGRbY1twZj4+Ml0+PjBdJjEpKWNbYmU+PjJdPTAtZztlbHNlIGNbYmU+PjJdPWcrMTtpZihjW3VmPj4yXXwwKWJyZWFrIGE7aWYoKGNbYmU+PjJdfDApPjApaz0xNDticmVha31jYXNlIDEzMDp7Y1tkZD4+Ml09Q0koY1txZj4+Ml18MCxjW3BmPj4yXXwwKXwwO2JbKGNbZGQ+PjJdfDApKzg+PjFdPTE7aWYoKGNbKGNbcmY+PjJdfDApKzE2MD4+Ml18MCk+KChjWyhjW3JmPj4yXXwwKSsxNzI+PjJdfDApKzF8MCkpe2s9NjYwO2JyZWFrIGN9Y1tpYT4+Ml09Y1soY1twZj4+Ml18MCkrMTI+PjJdO2NbcGE+PjJdPTA7Y1t1Zj4+Ml09dUooY1soY1soY1tyZj4+Ml18MCkrMTY+PjJdfDApKyhjW2lhPj4yXTw8NCkrND4+Ml18MCxjWyhjW3BmPj4yXXwwKSs0Pj4yXXwwLHBhKXwwO2JbKGNbZGQ+PjJdfDApKzg+PjFdPTQ7d2Y9Y1twYT4+Ml18MDt5Zj1jW2RkPj4yXXwwO2NbeWY+PjJdPXdmO2NbeWYrND4+Ml09KCh3ZnwwKTwwKTw8MzE+PjMxO2lmKGNbdWY+PjJdfDApYnJlYWsgYTtpZihjW3BhPj4yXXwwKXt2SihjW3JmPj4yXXwwLGNbaWE+PjJdfDAsY1twYT4+Ml18MCxjWyhjW3BmPj4yXXwwKSs0Pj4yXXwwKTthW2ZmPj4wXT0oY1tpYT4+Ml18MCkrMX1icmVha31jYXNlIDEzMTp7Y1tQYT4+Ml09MDtjW3VmPj4yXT13SihjWyhjWyhjW3JmPj4yXXwwKSsxNj4+Ml18MCkrKGNbKGNbcGY+PjJdfDApKzg+PjJdPDw0KSs0Pj4yXXwwLGNbKGNbcGY+PjJdfDApKzQ+PjJdfDAsKGNbKGNbcGY+PjJdfDApKzEyPj4yXXwwKSE9MD9QYTowKXwwO2lmKChjWyhjW3BmPj4yXXwwKSsxMj4+Ml18MCkhPTA/KHlmPShjW3FmPj4yXXwwKSs0NHwwLGNbeWY+PjJdPShjW3lmPj4yXXwwKSsoY1tQYT4+Ml18MCksKGNbKGNbcGY+PjJdfDApKzEyPj4yXXwwKT4wKTowKXt3Zj1jW1BhPj4yXXwwO3lmPShjW2w+PjJdfDApKygoY1soY1twZj4+Ml18MCkrMTI+PjJdfDApKjQwfDApfDA7aj15Zjt3Zj1SUihjW2o+PjJdfDAsY1tqKzQ+PjJdfDAsd2Z8MCwoKHdmfDApPDApPDwzMT4+MzF8MCl8MDtjW3lmPj4yXT13ZjtjW3lmKzQ+PjJdPUN9aWYoY1t1Zj4+Ml18MClicmVhayBhO2JyZWFrfWNhc2UgMTMzOntjW1ZiPj4yXT1jWyhjWyhjW3FmPj4yXXwwKSsxMTI+PjJdfDApKyhjWyhjW3BmPj4yXXwwKSs0Pj4yXTw8Mik+PjJdO2lmKChkW2NbVmI+PjJdPj4wXXwwKSE9MSl7Y1t1Zj4+Ml09eUooY1soY1tWYj4+Ml18MCkrMTY+PjJdfDApfDA7aWYoY1t1Zj4+Ml18MClicmVhayBhO2Vsc2UgYnJlYWsgZH1lbHNle3hKKGNbcmY+PjJdfDAsY1soY1tWYj4+Ml18MCkrMTY+PjJdfDApO2JyZWFrIGR9fWNhc2UgMTM1OmNhc2UgMTM0OntjW2RkPj4yXT1DSShjW3FmPj4yXXwwLGNbcGY+PjJdfDApfDA7Y1tFZD4+Ml09MDtjW3hjPj4yXT0oY1soY1tyZj4+Ml18MCkrMTY+PjJdfDApKyhjWyhjW3BmPj4yXXwwKSs0Pj4yXTw8NCk7aWYoKGRbY1twZj4+Ml0+PjBdfDApPT0xMzUpY1tQPj4yXT0xO2Vsc2UgY1tQPj4yXT0yO2NbdWY+PjJdPWNKKGNbKGNbeGM+PjJdfDApKzQ+PjJdfDAsRWQsY1tQPj4yXXwwKXwwO2lmKGNbdWY+PjJdfDApYnJlYWsgYTt3Zj1jW0VkPj4yXXwwO3lmPWNbZGQ+PjJdfDA7Y1t5Zj4+Ml09d2Y7Y1t5Zis0Pj4yXT0oKHdmfDApPDApPDwzMT4+MzE7YnJlYWt9Y2FzZSAxMzY6e2NbamE+PjJdPWNbKGNbcGY+PjJdfDApKzQ+PjJdO2NbWmU+PjJdPShjW2phPj4yXXwwKT09MT8xOTkwNToxOTkyNDtjW3hhPj4yXT1jW3JmPj4yXTtjW3hhKzg+PjJdPWNbKGNbcGY+PjJdfDApKzQ+PjJdO2NbeGErND4+Ml09KGNbcWY+PjJdfDApKzEwODt5Zj1jW3JmPj4yXXwwO2o9Y1taZT4+Ml18MDt3Zj1jWyhjW3BmPj4yXXwwKSsxNj4+Ml18MDtjW0FlPj4yXT1jWyhjWyhjW3JmPj4yXXwwKSsxNj4+Ml18MCkrKGNbamE+PjJdPDw0KT4+Ml07Y1tBZSs0Pj4yXT1qO2NbQWUrOD4+Ml09d2Y7Y1tiZj4+Ml09R2goeWYsNDAyOTMsQWUpfDA7aWYoIShjW2JmPj4yXXwwKSljW3VmPj4yXT03O2Vsc2V7YVsoY1tyZj4+Ml18MCkrMTQ4KzU+PjBdPTE7Y1t4YSsxMj4+Ml09MDtjW3VmPj4yXT0kZShjW3JmPj4yXXwwLGNbYmY+PjJdfDAsMTQwLHhhLDApfDA7aWYoIShjW3VmPj4yXXwwKSljW3VmPj4yXT1jW3hhKzEyPj4yXTtUZihjW3JmPj4yXXwwLGNbYmY+PjJdfDApO2FbKGNbcmY+PjJdfDApKzE0OCs1Pj4wXT0wfWlmKGNbdWY+PjJdfDApe2s9NjgyO2JyZWFrIGN9YnJlYWt9Y2FzZSAxMzc6e2NbdWY+PjJdPUZqKGNbcmY+PjJdfDAsY1soY1twZj4+Ml18MCkrND4+Ml18MCl8MDtpZihjW3VmPj4yXXwwKWJyZWFrIGE7YnJlYWt9Y2FzZSAxMzg6e3pKKGNbcmY+PjJdfDAsY1soY1twZj4+Ml18MCkrND4+Ml18MCxjWyhjW3BmPj4yXXwwKSsxNj4+Ml18MCk7YnJlYWt9Y2FzZSAxMzk6e0FKKGNbcmY+PjJdfDAsY1soY1twZj4+Ml18MCkrND4+Ml18MCxjWyhjW3BmPj4yXXwwKSsxNj4+Ml18MCk7YnJlYWt9Y2FzZSAxNDA6e0JKKGNbcmY+PjJdfDAsY1soY1twZj4+Ml18MCkrND4+Ml18MCxjWyhjW3BmPj4yXXwwKSsxNj4+Ml18MCk7YnJlYWt9Y2FzZSAxNDE6e2NbJGE+PjJdPWNbKGNbcGY+PjJdfDApKzg+PjJdO2NbcD4+Ml09Y1soY1twZj4+Ml18MCkrMTY+PjJdO2NbRmQ+PjJdPShjW2w+PjJdfDApKygoY1soY1twZj4+Ml18MCkrMTI+PjJdfDApKjQwfDApO2NbSmM+PjJdPShjW2w+PjJdfDApKygoY1soY1twZj4+Ml18MCkrND4+Ml18MCkqNDB8MCk7Y1tPZT4+Ml09Q0ooY1soY1soY1tyZj4+Ml18MCkrMTY+PjJdfDApKyhkWyhjW3BmPj4yXXwwKSszPj4wXTw8NCkrND4+Ml18MCxjW3A+PjJdfDAsY1skYT4+Ml18MCxjW2NbRmQ+PjJdPj4yXXwwLFNhKXwwO3dmPWNbU2E+PjJdfDA7eWY9Y1tGZD4+Ml18MDtqPXlmO3dmPVFSKGNbaj4+Ml18MCxjW2orND4+Ml18MCx3ZnwwLCgod2Z8MCk8MCk8PDMxPj4zMXwwKXwwO2NbeWY+PjJdPXdmO2NbeWYrND4+Ml09QztpaChjW0pjPj4yXXwwKTtpZihjW1NhPj4yXXwwKXtpZighKGNbT2U+PjJdfDApKXtrPTg4OTticmVhayBhfWdoKGNbSmM+PjJdfDAsY1tPZT4+Ml18MCwtMSwxLDE0OCl8MH1pdShjW0pjPj4yXXwwLGRbRz4+MF18MCl8MDticmVha31jYXNlIDE0Mjp7Y1tKYz4+Ml09KGNbbD4+Ml18MCkrKChjWyhjW3BmPj4yXXwwKSs0Pj4yXXwwKSo0MHwwKTtjW0tjPj4yXT0oY1tsPj4yXXwwKSsoKGNbKGNbcGY+PjJdfDApKzg+PjJdfDApKjQwfDApO2lmKChlWyhjW0pjPj4yXXwwKSs4Pj4xXSYzMnwwKT09MD8oREooY1tKYz4+Ml18MCksKGVbKGNbSmM+PjJdfDApKzg+PjFdJjMyfDApPT0wKTowKXtrPTg4OTticmVhayBhfXlmPWNbS2M+PjJdfDA7RUooY1tjW0pjPj4yXT4+Ml18MCxjW3lmPj4yXXwwLGNbeWYrND4+Ml18MCk7YnJlYWt9Y2FzZSA2Mjp7Y1tKYz4+Ml09KGNbbD4+Ml18MCkrKChjWyhjW3BmPj4yXXwwKSs0Pj4yXXwwKSo0MHwwKTtpZigoZVsoY1tKYz4+Ml18MCkrOD4+MV0mMzJ8MCkhPTA/KEZKKGNbY1tKYz4+Ml0+PjJdfDAsdWUpfDApIT0wOjApe2s9dWU7aGgoKGNbbD4+Ml18MCkrKChjWyhjW3BmPj4yXXwwKSsxMj4+Ml18MCkqNDB8MCl8MCxjW2s+PjJdfDAsY1trKzQ+PjJdfDApO2s9ODticmVhayBkfWloKGNbSmM+PjJdfDApO2s9NzticmVha31jYXNlIDYzOntjW0pjPj4yXT0oY1tsPj4yXXwwKSsoKGNbKGNbcGY+PjJdfDApKzQ+PjJdfDApKjQwfDApO2NbTGM+PjJdPShjW2w+PjJdfDApKygoY1soY1twZj4+Ml18MCkrMTI+PjJdfDApKjQwfDApO2NbdGE+PjJdPWNbKGNbcGY+PjJdfDApKzE2Pj4yXTtpZigoZVsoY1tKYz4+Ml18MCkrOD4+MV0mMzJ8MCk9PTA/KERKKGNbSmM+PjJdfDApLChlWyhjW0pjPj4yXXwwKSs4Pj4xXSYzMnwwKT09MCk6MCl7az04ODk7YnJlYWsgYX1pZigoY1t0YT4+Ml18MCkhPTA/KHlmPWNbTGM+PjJdfDAsY1tJPj4yXT1HSihjW2NbSmM+PjJdPj4yXXwwLGNbdGE+PjJdfDAsY1t5Zj4+Ml18MCxjW3lmKzQ+PjJdfDApfDAsKGNbST4+Ml18MCkhPTApOjApe2s9MTQ7YnJlYWsgZH1pZigoY1t0YT4+Ml18MCk+PTApe3lmPWNbTGM+PjJdfDA7RUooY1tjW0pjPj4yXT4+Ml18MCxjW3lmPj4yXXwwLGNbeWYrND4+Ml18MCl9YnJlYWt9Y2FzZSA2NDp7Y1tmZD4+Ml09Y1soY1twZj4+Ml18MCkrMTY+PjJdO2NbamQ+PjJdPShjW2w+PjJdfDApKygoY1soY1twZj4+Ml18MCkrMTI+PjJdfDApKjQwfDApO2lmKGFbKGNbcGY+PjJdfDApKzM+PjBdfDApe2Nba2U+PjJdPWNbKGNbZmQ+PjJdfDApKzE2Pj4yXTtjW0RjPj4yXT1jWyhjW3FmPj4yXXwwKSsxODQ+PjJdO3doaWxlKDEpe2lmKCEoY1tEYz4+Ml18MCkpYnJlYWs7aWYoKGNbKGNbRGM+PjJdfDApKzI0Pj4yXXwwKT09KGNba2U+PjJdfDApKWJyZWFrO2NbRGM+PjJdPWNbKGNbRGM+PjJdfDApKzQ+PjJdfWlmKGNbRGM+PjJdfDApYnJlYWsgZH1pZigoY1soY1txZj4+Ml18MCkrMTkyPj4yXXwwKT49KGNbKGNbcmY+PjJdfDApKzk2KzQwPj4yXXwwKSl7az03MTE7YnJlYWsgY31pOmRvIGlmKCEoZVsoY1tqZD4+Ml18MCkrOD4+MV0mNjQpKXtjW1lhPj4yXT0oY1soY1tmZD4+Ml18MCkrOD4+Ml18MCkrKGNbKGNbZmQ+PjJdfDApKzEyPj4yXXwwKTtpZighKGNbKGNbZmQ+PjJdfDApKzEyPj4yXXwwKSljW1lhPj4yXT0oY1tZYT4+Ml18MCkrMTtjW09hPj4yXT04MCsoKGNbWWE+PjJdfDApKjQwfDApKyhjWyhjW2ZkPj4yXXwwKSsxMj4+Ml08PDIpO3lmPWNbT2E+PjJdfDA7Y1tEYz4+Ml09c2goY1tyZj4+Ml18MCx5ZiwoKHlmfDApPDApPDwzMT4+MzEpfDA7aWYoIShjW0RjPj4yXXwwKSl7az04ODk7YnJlYWsgYX1YZyhjW2pkPj4yXXwwKTtiWyhjW2pkPj4yXXwwKSs4Pj4xXT02NDtjW2NbamQ+PjJdPj4yXT1jW0RjPj4yXTtjW2NbRGM+PjJdPj4yXT1jW3FmPj4yXTtjWyhjW0RjPj4yXXwwKSs2MD4+Ml09Y1tZYT4+Ml07Y1soY1tEYz4+Ml18MCkrNjQ+PjJdPWNbKGNbZmQ+PjJdfDApKzEyPj4yXTtjWyhjW0RjPj4yXXwwKSs0OD4+Ml09KChjW3BmPj4yXXwwKS0oY1tlZj4+Ml18MCl8MCkvMjB8MDtjWyhjW0RjPj4yXXwwKSsxNj4+Ml09Y1soY1txZj4+Ml18MCkrOTI+PjJdO2NbKGNbRGM+PjJdfDApKzU2Pj4yXT1jWyhjW3FmPj4yXXwwKSsyND4+Ml07Y1soY1tEYz4+Ml18MCkrMjA+PjJdPWNbKGNbcWY+PjJdfDApKzExMj4+Ml07Y1soY1tEYz4+Ml18MCkrNDQ+PjJdPWNbKGNbcWY+PjJdfDApKzI4Pj4yXTtjWyhjW0RjPj4yXXwwKSs4Pj4yXT1jWyhjW3FmPj4yXXwwKSs4OD4+Ml07Y1soY1tEYz4+Ml18MCkrNTI+PjJdPWNbKGNbcWY+PjJdfDApKzEzNj4+Ml07Y1soY1tEYz4+Ml18MCkrMjQ+PjJdPWNbKGNbZmQ+PjJdfDApKzE2Pj4yXTtjW0FjPj4yXT0oY1tEYz4+Ml18MCkrODArKChjWyhjW0RjPj4yXXwwKSs2MD4+Ml18MCkqNDB8MCk7Y1tUYz4+Ml09KGNbRGM+PjJdfDApKzgwO3doaWxlKDEpe2lmKChjW1RjPj4yXXwwKT09KGNbQWM+PjJdfDApKWJyZWFrIGk7YlsoY1tUYz4+Ml18MCkrOD4+MV09MTI4O2NbKGNbVGM+PjJdfDApKzMyPj4yXT1jW3JmPj4yXTtjW1RjPj4yXT0oY1tUYz4+Ml18MCkrNDB9fWVsc2UgY1tEYz4+Ml09Y1tjW2pkPj4yXT4+Ml07d2hpbGUoMCk7aj0oY1txZj4+Ml18MCkrMTkyfDA7Y1tqPj4yXT0oY1tqPj4yXXwwKSsxO2NbKGNbRGM+PjJdfDApKzQ+PjJdPWNbKGNbcWY+PjJdfDApKzE4ND4+Ml07aj1zZjt3Zj1jW2orND4+Ml18MDt5Zj0oY1tEYz4+Ml18MCkrMzJ8MDtjW3lmPj4yXT1jW2o+PjJdO2NbeWYrND4+Ml09d2Y7Y1soY1tEYz4+Ml18MCkrNjg+PjJdPWNbKGNbcWY+PjJdfDApKzQ0Pj4yXTtjWyhjW0RjPj4yXXwwKSs3Mj4+Ml09Y1soY1tjW3FmPj4yXT4+Ml18MCkrODg+PjJdO2NbKGNbRGM+PjJdfDApKzQwPj4yXT1jWyhjW3FmPj4yXXwwKSsyMDQ+PjJdO2NbKGNbcWY+PjJdfDApKzIwND4+Ml09MDtjWyhjW3FmPj4yXXwwKSs0ND4+Ml09MDtjWyhjW3FmPj4yXXwwKSsxODQ+PjJdPWNbRGM+PjJdO3lmPShjW0RjPj4yXXwwKSs4MHwwO2NbbD4+Ml09eWY7Y1soY1txZj4+Ml18MCkrOTI+PjJdPXlmO2NbKGNbcWY+PjJdfDApKzI0Pj4yXT1jWyhjW0RjPj4yXXwwKSs2MD4+Ml07Y1soY1txZj4+Ml18MCkrMjg+PjJdPWNbKGNbRGM+PjJdfDApKzY0Pj4yXSY2NTUzNTtjWyhjW3FmPj4yXXwwKSsxMTI+PjJdPShjW2w+PjJdfDApKygoY1soY1txZj4+Ml18MCkrMjQ+PjJdfDApKjQwfDApO3lmPWNbY1tmZD4+Ml0+PjJdfDA7Y1tlZj4+Ml09eWY7Y1soY1txZj4+Ml18MCkrODg+PjJdPXlmO2NbKGNbcWY+PjJdfDApKzEzNj4+Ml09Y1soY1tmZD4+Ml18MCkrND4+Ml07Y1twZj4+Ml09KGNbZWY+PjJdfDApKy0yMDticmVha31jYXNlIDE0Mzp7Y1tkZD4+Ml09Q0koY1txZj4+Ml18MCxjW3BmPj4yXXwwKXwwO2NbRWM+PjJdPWNbKGNbcWY+PjJdfDApKzE4ND4+Ml07Y1tJYz4+Ml09KGNbKGNbRWM+PjJdfDApKzE2Pj4yXXwwKSsoKChjWyhjW3BmPj4yXXwwKSs0Pj4yXXwwKSsoY1soY1soY1tFYz4+Ml18MCkrOD4+Ml18MCkrKChjWyhjW0VjPj4yXXwwKSs0OD4+Ml18MCkqMjB8MCkrND4+Ml18MCl8MCkqNDB8MCk7a0coY1tkZD4+Ml18MCxjW0ljPj4yXXwwLDQwOTYpO2JyZWFrfWNhc2UgMTQ0OntnPWNbcGY+PjJdfDA7aWYoY1soY1tyZj4+Ml18MCkrMjQ+PjJdJjMzNTU0NDMyKXt3Zj1jW2crOD4+Ml18MDt5Zj0oY1tyZj4+Ml18MCkrNDQ4fDA7aj15Zjt3Zj1SUihjW2o+PjJdfDAsY1tqKzQ+PjJdfDAsd2Z8MCwoKHdmfDApPDApPDwzMT4+MzF8MCl8MDtjW3lmPj4yXT13ZjtjW3lmKzQ+PjJdPUM7YnJlYWsgZH1mPWNbKGNbcGY+PjJdfDApKzg+PjJdfDA7aj0oKGZ8MCk8MCk8PDMxPj4zMTtpZihjW2crND4+Ml18MCl7eWY9KGNbcmY+PjJdfDApKzQ0MHwwO3dmPXlmO3dmPVJSKGNbd2Y+PjJdfDAsY1t3Zis0Pj4yXXwwLGZ8MCxqfDApfDA7Y1t5Zj4+Ml09d2Y7Y1t5Zis0Pj4yXT1DO2JyZWFrIGR9ZWxzZXt5Zj0oY1txZj4+Ml18MCkrNjR8MDt3Zj15Zjt3Zj1SUihjW3dmPj4yXXwwLGNbd2YrND4+Ml18MCxmfDAsanwwKXwwO2NbeWY+PjJdPXdmO2NbeWYrND4+Ml09QzticmVhayBkfX1jYXNlIDY1OmlmKGNbKGNbcGY+PjJdfDApKzQ+PjJdfDApe3lmPShjW3JmPj4yXXwwKSs0NDB8MDtpZighKChjW3lmPj4yXXwwKT09MCYoY1t5Zis0Pj4yXXwwKT09MCkpYnJlYWsgZDt5Zj0oY1tyZj4+Ml18MCkrNDQ4fDA7aWYoKGNbeWY+PjJdfDApPT0wJihjW3lmKzQ+PjJdfDApPT0wKXtrPTE0O2JyZWFrIGR9ZWxzZSBicmVhayBkfWVsc2V7eWY9KGNbcWY+PjJdfDApKzY0fDA7aWYoISgoY1t5Zj4+Ml18MCk9PTAmKGNbeWYrND4+Ml18MCk9PTApKWJyZWFrIGQ7eWY9KGNbcmY+PjJdfDApKzQ0OHwwO2lmKChjW3lmPj4yXXwwKT09MCYoY1t5Zis0Pj4yXXwwKT09MCl7az0xNDticmVhayBkfWVsc2UgYnJlYWsgZH1jYXNlIDE0NTp7aWYoY1soY1txZj4+Ml18MCkrMTg0Pj4yXXwwKXtjW0ZjPj4yXT1jWyhjW3FmPj4yXXwwKSsxODQ+PjJdO3doaWxlKDEpe2lmKCEoY1soY1tGYz4+Ml18MCkrND4+Ml18MCkpYnJlYWs7Y1tGYz4+Ml09Y1soY1tGYz4+Ml18MCkrND4+Ml19Y1tKYz4+Ml09KGNbKGNbRmM+PjJdfDApKzE2Pj4yXXwwKSsoKGNbKGNbcGY+PjJdfDApKzQ+PjJdfDApKjQwfDApfWVsc2UgY1tKYz4+Ml09KGNbbD4+Ml18MCkrKChjWyhjW3BmPj4yXXwwKSs0Pj4yXXwwKSo0MHwwKTtReChjW0pjPj4yXXwwKXwwO2NbS2M+PjJdPShjW2w+PjJdfDApKygoY1soY1twZj4+Ml18MCkrOD4+Ml18MCkqNDB8MCk7UXgoY1tLYz4+Ml18MCl8MDt3Zj1jW0pjPj4yXXwwO2Y9Y1t3Zis0Pj4yXXwwO3lmPWNbS2M+PjJdfDA7aj1jW3lmKzQ+PjJdfDA7aWYoKGZ8MCk8KGp8MCl8KChmfDApPT0oanwwKT8oY1t3Zj4+Ml18MCk+Pj4wPChjW3lmPj4yXXwwKT4+PjA6MCkpe2o9Y1tLYz4+Ml18MDt3Zj1jW2orND4+Ml18MDt5Zj1jW0pjPj4yXXwwO2NbeWY+PjJdPWNbaj4+Ml07Y1t5Zis0Pj4yXT13Zn1icmVha31jYXNlIDY2OntjW0pjPj4yXT0oY1tsPj4yXXwwKSsoKGNbKGNbcGY+PjJdfDApKzQ+PjJdfDApKjQwfDApO3lmPWNbSmM+PjJdfDA7d2Y9Y1t5Zis0Pj4yXXwwO2lmKCh3ZnwwKT4wfCh3ZnwwKT09MCYoY1t5Zj4+Ml18MCk+Pj4wPjApe3lmPWNbKGNbcGY+PjJdfDApKzEyPj4yXXwwO2s9Y1tKYz4+Ml18MDt3Zj1rO3lmPVFSKGNbd2Y+PjJdfDAsY1t3Zis0Pj4yXXwwLHlmfDAsKCh5ZnwwKTwwKTw8MzE+PjMxfDApfDA7Y1trPj4yXT15ZjtjW2srND4+Ml09QztrPTE0fWJyZWFrfWNhc2UgMTQ2OntjW0pjPj4yXT0oY1tsPj4yXXwwKSsoKGNbKGNbcGY+PjJdfDApKzQ+PjJdfDApKjQwfDApO2NbTGM+PjJdPShjW2w+PjJdfDApKygoY1soY1twZj4+Ml18MCkrMTI+PjJdfDApKjQwfDApO2NbZGQ+PjJdPUNJKGNbcWY+PjJdfDAsY1twZj4+Ml18MCl8MDt5Zj1jW0pjPj4yXXwwO3dmPWNbeWYrND4+Ml18MDtpZigod2Z8MCk8MHwod2Z8MCk9PTAmKGNbeWY+PjJdfDApPj4+MDw9MCl7Zz0tMTtmPS0xfWVsc2V7Zz1jW0pjPj4yXXwwO3lmPWNbTGM+PjJdfDA7d2Y9Y1t5Zis0Pj4yXXwwO2lmKCh3ZnwwKT4wfCh3ZnwwKT09MCYoY1t5Zj4+Ml18MCk+Pj4wPjApe2o9Y1tMYz4+Ml18MDtmPWNbaj4+Ml18MDtqPWNbais0Pj4yXXwwfWVsc2V7Zj0wO2o9MH1nPVJSKGNbZz4+Ml18MCxjW2crND4+Ml18MCxmfDAsanwwKXwwO2Y9Q315Zj1jW2RkPj4yXXwwO2NbeWY+PjJdPWc7Y1t5Zis0Pj4yXT1mO2JyZWFrfWNhc2UgNjc6e2NbSmM+PjJdPShjW2w+PjJdfDApKygoY1soY1twZj4+Ml18MCkrND4+Ml18MCkqNDB8MCk7eWY9Y1tKYz4+Ml18MDtpZigoY1t5Zj4+Ml18MCkhPTB8KGNbeWYrND4+Ml18MCkhPTApe3lmPWNbKGNbcGY+PjJdfDApKzEyPj4yXXwwO2s9Y1tKYz4+Ml18MDt3Zj1rO3lmPVFSKGNbd2Y+PjJdfDAsY1t3Zis0Pj4yXXwwLHlmfDAsKCh5ZnwwKTwwKTw8MzE+PjMxfDApfDA7Y1trPj4yXT15ZjtjW2srND4+Ml09QztrPTE0fWJyZWFrfWNhc2UgNjg6e2NbSmM+PjJdPShjW2w+PjJdfDApKygoY1soY1twZj4+Ml18MCkrND4+Ml18MCkqNDB8MCk7eWY9Y1tKYz4+Ml18MDt3Zj15Zjt3Zj1SUihjW3dmPj4yXXwwLGNbd2YrND4+Ml18MCwtMSwtMSl8MDtjW3lmPj4yXT13ZjtjW3lmKzQ+PjJdPUM7eWY9Y1tKYz4+Ml18MDtpZigoY1t5Zj4+Ml18MCk9PTAmKGNbeWYrND4+Ml18MCk9PTApaz0xNDticmVha31jYXNlIDE0Nzp7Y1tKYT4+Ml09ZFsoY1twZj4+Ml18MCkrMz4+MF07Y1tqYz4+Ml09VncoY1tyZj4+Ml18MCwzMisoKGNbSmE+PjJdfDApLTE8PDIpfDAsMCl8MDtpZighKGNbamM+PjJdfDApKXtrPTg4OTticmVhayBhfWNbKGNbamM+PjJdfDApKzg+PjJdPTA7Y1soY1tqYz4+Ml18MCkrND4+Ml09Y1soY1twZj4+Ml18MCkrMTY+PjJdO2NbKGNbamM+PjJdfDApKzE2Pj4yXT0oKGNbcGY+PjJdfDApLShjW2VmPj4yXXwwKXwwKS8yMHwwO2NbKGNbamM+PjJdfDApKzEyPj4yXT1jW3FmPj4yXTthWyhjW2pjPj4yXXwwKSsyNj4+MF09Y1tKYT4+Ml07YVsoY1twZj4+Ml18MCkrMT4+MF09LTIxO2NbKGNbcGY+PjJdfDApKzE2Pj4yXT1jW2pjPj4yXTthW2NbcGY+PjJdPj4wXT0tMTA4O2s9NzUyO2JyZWFrfWNhc2UgMTQ4OntrPTc1MjticmVha31jYXNlIDE0OTp7Y1tWYz4+Ml09KGNbbD4+Ml18MCkrKChjWyhjW3BmPj4yXXwwKSs0Pj4yXXwwKSo0MHwwKTtjW3VmPj4yXT1uRyhjW1ZjPj4yXXwwLGNbKGNbcGY+PjJdfDApKzE2Pj4yXXwwKXwwO2lmKGNbdWY+PjJdfDApe2s9NzY0O2JyZWFrIGN9aXUoY1tWYz4+Ml18MCxkW0c+PjBdfDApfDA7aWYoREkoY1tWYz4+Ml18MCl8MCl7az04ODg7YnJlYWsgY31icmVha31jYXNlIDg6e2Nbbz4+Ml09MDtjW28rOD4+Ml09LTE7Y1tvKzQ+PjJdPS0xO2NbdWY+PjJdPW9pKGNbcmY+PjJdfDAsY1soY1twZj4+Ml18MCkrND4+Ml18MCxjWyhjW3BmPj4yXXwwKSs4Pj4yXXwwLG8rNHwwLG8rOHwwKXwwO2lmKGNbdWY+PjJdfDApe2lmKChjW3VmPj4yXXwwKSE9NSlicmVhayBhO2NbdWY+PjJdPTA7Y1tvPj4yXT0xfWNbXz4+Ml09MDtjW1djPj4yXT0oY1tsPj4yXXwwKSsoKGNbKGNbcGY+PjJdfDApKzEyPj4yXXwwKSo0MHwwKTt3aGlsZSgxKXtpZigoY1tfPj4yXXwwKT49MylicmVhayBkO3lmPWNbbysoY1tfPj4yXTw8Mik+PjJdfDA7aGgoY1tXYz4+Ml18MCx5ZiwoKHlmfDApPDApPDwzMT4+MzEpO2NbXz4+Ml09KGNbXz4+Ml18MCkrMTtjW1djPj4yXT0oY1tXYz4+Ml18MCkrNDB9fWNhc2UgOTp7Y1tkZD4+Ml09Q0koY1txZj4+Ml18MCxjW3BmPj4yXXwwKXwwO2NbRT4+Ml09Y1soY1twZj4+Ml18MCkrMTI+PjJdO2NbdmI+PjJdPWNbKGNbKGNbcmY+PjJdfDApKzE2Pj4yXXwwKSsoY1soY1twZj4+Ml18MCkrND4+Ml08PDQpKzQ+PjJdO2NbZWQ+PjJdPVBmKGNbdmI+PjJdfDApfDA7Y1tGPj4yXT10ZyhjW2VkPj4yXXwwKXwwO2lmKChjW0U+PjJdfDApPT0tMSljW0U+PjJdPWNbRj4+Ml07aWYoIShISihjW2VkPj4yXXwwKXwwKSljW0U+PjJdPWNbRj4+Ml07Y1tYZT4+Ml09S2koY1tlZD4+Ml18MCwxKXwwO2RvIGlmKChjW0U+PjJdfDApPT01KXtpZigoSmYoY1tYZT4+Ml18MCl8MCkhPTA/KElKKGNbZWQ+PjJdfDApfDApIT0wOjApYnJlYWs7Y1tFPj4yXT1jW0Y+PjJdfXdoaWxlKDApO2lmKChjW0U+PjJdfDApIT0oY1tGPj4yXXwwKT8oY1tGPj4yXXwwKT09NXwoY1tFPj4yXXwwKT09NTowKXtpZighKGFbKGNbcmY+PjJdfDApKzY3Pj4wXXwwKSl7az03ODQ7YnJlYWsgY31pZigoY1soY1tyZj4+Ml18MCkrMTYwPj4yXXwwKT4xKXtrPTc4NDticmVhayBjfWlmKChjW0Y+PjJdfDApPT01KXtjW3VmPj4yXT1KSihjW2VkPj4yXXwwKXwwO2lmKCEoY1t1Zj4+Ml18MCkpS0ooY1tlZD4+Ml18MCxjW0U+PjJdfDApfDB9ZWxzZSBpZigoY1tGPj4yXXwwKT09NClLSihjW2VkPj4yXXwwLDIpfDA7aWYoIShjW3VmPj4yXXwwKSljW3VmPj4yXT1EZyhjW3ZiPj4yXXwwLChjW0U+PjJdfDApPT01PzI6MSl8MH1pZihjW3VmPj4yXXwwKWNbRT4+Ml09Y1tGPj4yXTtjW0U+PjJdPUtKKGNbZWQ+PjJdfDAsY1tFPj4yXXwwKXwwO2JbKGNbZGQ+PjJdfDApKzg+PjFdPTI1NjI7eWY9cEMoY1tFPj4yXXwwKXwwO2NbKGNbZGQ+PjJdfDApKzE2Pj4yXT15Zjt5Zj1KZihjWyhjW2RkPj4yXXwwKSsxNj4+Ml18MCl8MDtjWyhjW2RkPj4yXXwwKSsxMj4+Ml09eWY7YVsoY1tkZD4+Ml18MCkrMTA+PjBdPTE7aXUoY1tkZD4+Ml18MCxkW0c+PjBdfDApfDA7aWYoY1t1Zj4+Ml18MClicmVhayBhO2JyZWFrfWNhc2UgMTA6e2NbdWY+PjJdPUxKKChjW3FmPj4yXXwwKSsxMDh8MCxjW3JmPj4yXXwwLGNbKGNbcGY+PjJdfDApKzQ+PjJdfDApfDA7aWYoY1t1Zj4+Ml18MClicmVhayBhO2JyZWFrfWNhc2UgNjk6e2Nbd2I+PjJdPWNbKGNbKGNbcmY+PjJdfDApKzE2Pj4yXXwwKSsoY1soY1twZj4+Ml18MCkrND4+Ml08PDQpKzQ+PjJdO2NbdWY+PjJdPU1KKGNbd2I+PjJdfDApfDA7aWYoY1t1Zj4+Ml18MCl7aWYoKGNbdWY+PjJdfDApIT0xMDEpYnJlYWsgYTtjW3VmPj4yXT0wO2s9MTR9YnJlYWt9Y2FzZSAxNTA6aWYoY1soY1twZj4+Ml18MCkrND4+Ml18MCl7eWY9KGNbcWY+PjJdfDApKzE0NHwwO2JbeWY+PjFdPWJbeWY+PjFdJi0yfDE7YnJlYWsgZH1lbHNle1NoKGNbcmY+PjJdfDApO2JyZWFrIGR9Y2FzZSAxNTE6e2FbQWE+PjBdPWNbKGNbcGY+PjJdfDApKzEyPj4yXTtpZigoZFtBYT4+MF18MCk9PTA/MCE9KGNbKGNbcmY+PjJdfDApKzI0Pj4yXSYxNjM4NHwwKTowKWJyZWFrIGQ7Y1tsYj4+Ml09Y1soY1twZj4+Ml18MCkrND4+Ml07Y1t1Zj4+Ml09TkooY1soY1soY1tyZj4+Ml18MCkrMTY+PjJdfDApKyhjW2xiPj4yXTw8NCkrND4+Ml18MCxjWyhjW3BmPj4yXXwwKSs4Pj4yXXwwLGFbQWE+PjBdfDApfDA7aWYoY1t1Zj4+Ml18MCl7az04MDU7YnJlYWsgY31icmVha31jYXNlIDE1Mjp7Y1tyZD4+Ml09Y1soY1twZj4+Ml18MCkrMTY+PjJdO2NbdWY+PjJdPU9KKGNbcmY+PjJdfDAsY1tyZD4+Ml18MCl8MDtpZihjW3JkPj4yXXwwKW1KKGNbcWY+PjJdfDAsY1soY1tyZD4+Ml18MCkrOD4+Ml18MCk7aWYoY1t1Zj4+Ml18MClicmVhayBhO2JyZWFrfWNhc2UgMTUzOntnPWdlO2Y9Zys0MHwwO2Rve2NbZz4+Ml09MDtnPWcrNHwwfXdoaWxlKChnfDApPChmfDApKTtjW2dlKzMyPj4yXT1jW3JmPj4yXTtjW3VmPj4yXT1qaChnZSwoY1tsPj4yXXwwKSsoKGNbKGNbcGY+PjJdfDApKzg+PjJdfDApKjQwfDApfDApfDA7Y1tjZj4+Ml09JGQoZ2UpfDA7aWYoY1tjZj4+Ml18MCljW3VmPj4yXT1QSihjW3JmPj4yXXwwLGNbKGNbcGY+PjJdfDApKzQ+PjJdfDAsY1tjZj4+Ml18MCwoY1txZj4+Ml18MCkrMTA4fDApfDA7WGcoZ2UpO2lmKGNbdWY+PjJdfDApYnJlYWsgYTticmVha31jYXNlIDE1NDp7eWY9KGNbcmY+PjJdfDApKzE3MnwwO2NbeWY+PjJdPShjW3lmPj4yXXwwKSsxO2NbdWY+PjJdPVFKKGNbcmY+PjJdfDAsY1soY1twZj4+Ml18MCkrND4+Ml18MCxjWyhjW3BmPj4yXXwwKSsxNj4+Ml18MCl8MDt5Zj0oY1tyZj4+Ml18MCkrMTcyfDA7Y1t5Zj4+Ml09KGNbeWY+PjJdfDApKy0xO2lmKGNbdWY+PjJdfDApYnJlYWsgYTticmVha31jYXNlIDE1NTp7Y1ttYz4+Ml09MDtjW3BkPj4yXT0wO2NbdWQ+PjJdPWNbKGNbKGNbcGY+PjJdfDApKzE2Pj4yXXwwKSs4Pj4yXTtpZighKGNbdWQ+PjJdfDApKXtrPTgxNjticmVhayBjfWlmKCEoY1tjW3VkPj4yXT4+Ml18MCkpe2s9ODE2O2JyZWFrIGN9Y1tZYz4+Ml09Y1tjW3VkPj4yXT4+Ml07Y1t1Zj4+Ml09WWJbY1soY1tZYz4+Ml18MCkrMjQ+PjJdJjI1NV0oY1t1ZD4+Ml18MCxwZCl8MDttSihjW3FmPj4yXXwwLGNbdWQ+PjJdfDApO2lmKGNbdWY+PjJdfDApYnJlYWsgYTtjW2NbcGQ+PjJdPj4yXT1jW3VkPj4yXTtjW21jPj4yXT0kSShjW3FmPj4yXXwwLGNbKGNbcGY+PjJdfDApKzQ+PjJdfDAsMCwtMSwyKXwwO2lmKCEoY1ttYz4+Ml18MCkpe2s9ODIwO2JyZWFrIGN9Y1soY1ttYz4+Ml18MCkrMTY+PjJdPWNbcGQ+PjJdO3lmPShjW3VkPj4yXXwwKSs0fDA7Y1t5Zj4+Ml09KGNbeWY+PjJdfDApKzE7YnJlYWt9Y2FzZSAxMTp7Y1tnZD4+Ml09KGNbbD4+Ml18MCkrKChjWyhjW3BmPj4yXXwwKSsxMj4+Ml18MCkqNDB8MCk7Y1tzYj4+Ml09KGNbZ2Q+PjJdfDApKzQwO2NbbmM+PjJdPWNbKGNbKGNbcWY+PjJdfDApKzExMj4+Ml18MCkrKGNbKGNbcGY+PjJdfDApKzQ+PjJdPDwyKT4+Ml07Y1txZD4+Ml09Y1soY1tuYz4+Ml18MCkrMTY+PjJdO2NbdmQ+PjJdPWNbY1txZD4+Ml0+PjJdO2NbWmM+PjJdPWNbY1t2ZD4+Ml0+PjJdO2NbS2E+PjJdPWNbY1tzYj4+Ml0+PjJdO2NbcWE+PjJdPWNbY1tnZD4+Ml0+PjJdO2NbT2Q+PjJdPTA7Y1t0Pj4yXT1jWyhjW3FmPj4yXXwwKSs5Nj4+Ml07Y1tSPj4yXT0wO3doaWxlKDEpe2lmKChjW1I+PjJdfDApPj0oY1tLYT4+Ml18MCkpYnJlYWs7Y1soY1t0Pj4yXXwwKSsoY1tSPj4yXTw8Mik+PjJdPShjW3NiPj4yXXwwKSsoKChjW1I+PjJdfDApKzF8MCkqNDB8MCk7Y1tSPj4yXT0oY1tSPj4yXXwwKSsxfWNbdWY+PjJdPVpiW2NbKGNbWmM+PjJdfDApKzMyPj4yXSYyNTVdKGNbcWQ+PjJdfDAsY1txYT4+Ml18MCxjWyhjW3BmPj4yXXwwKSsxNj4+Ml18MCxjW0thPj4yXXwwLGNbdD4+Ml18MCl8MDttSihjW3FmPj4yXXwwLGNbdmQ+PjJdfDApO2lmKGNbdWY+PjJdfDApYnJlYWsgYTtjW09kPj4yXT1UYltjWyhjW1pjPj4yXXwwKSs0MD4+Ml0mMjU1XShjW3FkPj4yXXwwKXwwO2FbKGNbbmM+PjJdfDApKzI+PjBdPTA7aWYoY1tPZD4+Ml18MClrPTE0O2JyZWFrfWNhc2UgMTU2OntjW29jPj4yXT1jWyhjWyhjW3FmPj4yXXwwKSsxMTI+PjJdfDApKyhjWyhjW3BmPj4yXXwwKSs0Pj4yXTw8Mik+PjJdO2NbemM+PjJdPShjW2w+PjJdfDApKygoY1soY1twZj4+Ml18MCkrMTI+PjJdfDApKjQwfDApO2lmKGFbKGNbb2M+PjJdfDApKzI+PjBdfDApe2loKGNbemM+PjJdfDApO2JyZWFrIGR9Y1t3ZD4+Ml09Y1tjWyhjW29jPj4yXXwwKSsxNj4+Ml0+PjJdO2NbX2M+PjJdPWNbY1t3ZD4+Ml0+PjJdO2NbZWU+PjJdPTA7Y1tlZSs0Pj4yXT0wO2NbZWUrOD4+Ml09MDtjW2VlKzEyPj4yXT0wO2NbZWUrMTY+PjJdPTA7Y1tlZSsyMD4+Ml09MDtjW2VlKzI0Pj4yXT0wO2NbZWUrMjg+PjJdPTA7Y1tlZT4+Ml09Y1t6Yz4+Ml07YlsoY1t6Yz4+Ml18MCkrOD4+MV09ZVsoY1t6Yz4+Ml18MCkrOD4+MV0mLTQ5NjY0fDE7Y1t1Zj4+Ml09T2JbY1soY1tfYz4+Ml18MCkrNDQ+PjJdJjI1NV0oY1soY1tvYz4+Ml18MCkrMTY+PjJdfDAsZWUsY1soY1twZj4+Ml18MCkrOD4+Ml18MCl8MDttSihjW3FmPj4yXXwwLGNbd2Q+PjJdfDApO2lmKGNbZWUrMjA+PjJdfDApY1t1Zj4+Ml09Y1tlZSsyMD4+Ml07aXUoY1t6Yz4+Ml18MCxkW0c+PjBdfDApfDA7aWYoREkoY1t6Yz4+Ml18MCl8MCl7az04ODg7YnJlYWsgY31pZihjW3VmPj4yXXwwKWJyZWFrIGE7YnJlYWt9Y2FzZSA3MDp7Y1tQZD4+Ml09MDtjW3BjPj4yXT1jWyhjWyhjW3FmPj4yXXwwKSsxMTI+PjJdfDApKyhjWyhjW3BmPj4yXXwwKSs0Pj4yXTw8Mik+PjJdO2lmKCEoYVsoY1twYz4+Ml18MCkrMj4+MF18MCkpe2NbeGQ+PjJdPWNbY1soY1twYz4+Ml18MCkrMTY+PjJdPj4yXTtjWyRjPj4yXT1jW2NbeGQ+PjJdPj4yXTtjW3VmPj4yXT1UYltjWyhjWyRjPj4yXXwwKSszNj4+Ml0mMjU1XShjWyhjW3BjPj4yXXwwKSsxNj4+Ml18MCl8MDttSihjW3FmPj4yXXwwLGNbeGQ+PjJdfDApO2lmKGNbdWY+PjJdfDApYnJlYWsgYTtjW1BkPj4yXT1UYltjWyhjWyRjPj4yXXwwKSs0MD4+Ml0mMjU1XShjWyhjW3BjPj4yXXwwKSsxNj4+Ml18MCl8MDtpZihjW1BkPj4yXXwwKWs9ODtlbHNlIGs9N31icmVha31jYXNlIDE1Nzp7Y1t5ZD4+Ml09Y1soY1soY1twZj4+Ml18MCkrMTY+PjJdfDApKzg+PjJdO2NbYmQ+PjJdPShjW2w+PjJdfDApKygoY1soY1twZj4+Ml18MCkrND4+Ml18MCkqNDB8MCk7Y1t1Zj4+Ml09aXUoY1tiZD4+Ml18MCwxKXwwO2lmKGNbdWY+PjJdfDApYnJlYWsgYTtjW3VmPj4yXT1ZYltjWyhjW2NbeWQ+PjJdPj4yXXwwKSs3Nj4+Ml0mMjU1XShjW3lkPj4yXXwwLGNbKGNbYmQ+PjJdfDApKzE2Pj4yXXwwKXwwO21KKGNbcWY+PjJdfDAsY1t5ZD4+Ml18MCk7eWY9KGNbcWY+PjJdfDApKzE0NHwwO2JbeWY+PjFdPWJbeWY+PjFdJi0yO2lmKGNbdWY+PjJdfDApYnJlYWsgYTticmVha31jYXNlIDEyOntjW3pkPj4yXT1jWyhjWyhjW3BmPj4yXXwwKSsxNj4+Ml18MCkrOD4+Ml07aWYoIShjW3pkPj4yXXwwKSl7az04Mzk7YnJlYWsgY31pZighKGNbY1t6ZD4+Ml0+PjJdfDApKXtrPTgzOTticmVhayBjfWNbYWQ+PjJdPWNbY1t6ZD4+Ml0+PjJdO2NbTGE+PjJdPWNbKGNbcGY+PjJdfDApKzg+PjJdO2lmKGNbKGNbYWQ+PjJdfDApKzUyPj4yXXwwKXthW0plPj4wXT1hWyhjW3JmPj4yXXwwKSs3ND4+MF18MDtjW3U+PjJdPWNbKGNbcWY+PjJdfDApKzk2Pj4yXTtjW0JkPj4yXT0oY1tsPj4yXXwwKSsoKGNbKGNbcGY+PjJdfDApKzEyPj4yXXwwKSo0MHwwKTtjW1Q+PjJdPTA7d2hpbGUoMSl7aWYoKGNbVD4+Ml18MCk+PShjW0xhPj4yXXwwKSlicmVhaztjWyhjW3U+PjJdfDApKyhjW1Q+PjJdPDwyKT4+Ml09Y1tCZD4+Ml07Y1tCZD4+Ml09KGNbQmQ+PjJdfDApKzQwO2NbVD4+Ml09KGNbVD4+Ml18MCkrMX1hWyhjW3JmPj4yXXwwKSs3ND4+MF09YVsoY1twZj4+Ml18MCkrMz4+MF18MDtjW3VmPj4yXT1XYltjWyhjW2FkPj4yXXwwKSs1Mj4+Ml0mMjU1XShjW3pkPj4yXXwwLGNbTGE+PjJdfDAsY1t1Pj4yXXwwLGRlKXwwO2FbKGNbcmY+PjJdfDApKzc0Pj4wXT1hW0plPj4wXXwwO21KKGNbcWY+PjJdfDAsY1t6ZD4+Ml18MCk7aWYoKGNbdWY+PjJdfDApPT0wPyhjWyhjW3BmPj4yXXwwKSs0Pj4yXXwwKSE9MDowKXt3Zj1kZTtqPWNbd2Y+PjJdfDA7d2Y9Y1t3Zis0Pj4yXXwwO3lmPXNmO2NbeWY+PjJdPWo7Y1t5Zis0Pj4yXT13Zjt5Zj0oY1tyZj4+Ml18MCkrMzJ8MDtjW3lmPj4yXT1qO2NbeWYrND4+Ml09d2Z9ZG8gaWYoKGNbdWY+PjJdJjI1NXwwKT09MTk/KGRbKGNbKGNbcGY+PjJdfDApKzE2Pj4yXXwwKSsxNj4+MF18MCkhPTA6MCl7aWYoKGRbKGNbcGY+PjJdfDApKzM+PjBdfDApPT00KXtjW3VmPj4yXT0wO2JyZWFrfWlmKChkWyhjW3BmPj4yXXwwKSszPj4wXXwwKT09NSlnPTI7ZWxzZSBnPWRbKGNbcGY+PjJdfDApKzM+PjBdfDA7YVsoY1txZj4+Ml18MCkrMTQyPj4wXT1nfWVsc2Ugaz04NTQ7d2hpbGUoMCk7aWYoKGt8MCk9PTg1NCl7az0wO3lmPShjW3FmPj4yXXwwKSs0NHwwO2NbeWY+PjJdPShjW3lmPj4yXXwwKSsxfWlmKGNbdWY+PjJdfDApYnJlYWsgYX1icmVha31jYXNlIDE1ODp7Y1tkZD4+Ml09Q0koY1txZj4+Ml18MCxjW3BmPj4yXXwwKXwwO3dmPXVnKGNbKGNbKGNbcmY+PjJdfDApKzE2Pj4yXXwwKSsoY1soY1twZj4+Ml18MCkrND4+Ml08PDQpKzQ+PjJdfDApfDA7eWY9Y1tkZD4+Ml18MDtjW3lmPj4yXT13ZjtjW3lmKzQ+PjJdPTA7YnJlYWt9Y2FzZSAxNTk6e2NbZGQ+PjJdPUNJKGNbcWY+PjJdfDAsY1twZj4+Ml18MCl8MDtjW3ViPj4yXT1jWyhjWyhjW3JmPj4yXXwwKSsxNj4+Ml18MCkrKGNbKGNbcGY+PjJdfDApKzQ+PjJdPDw0KSs0Pj4yXTtjW2NiPj4yXT0wO2lmKChjWyhjW3BmPj4yXXwwKSsxMj4+Ml18MCkhPTA/KGNbY2I+PjJdPXVnKGNbdWI+PjJdfDApfDAsKGNbY2I+PjJdfDApPj4+MDwoY1soY1twZj4+Ml18MCkrMTI+PjJdfDApPj4+MCk6MCljW2NiPj4yXT1jWyhjW3BmPj4yXXwwKSsxMj4+Ml07d2Y9UkooY1t1Yj4+Ml18MCxjW2NiPj4yXXwwKXwwO3lmPWNbZGQ+PjJdfDA7Y1t5Zj4+Ml09d2Y7Y1t5Zis0Pj4yXT0oKHdmfDApPDApPDwzMT4+MzE7YnJlYWt9Y2FzZSA3MTp7ZG8gaWYoKGRbKGNbcmY+PjJdfDApKzc2Pj4wXSYxMjl8MCkhPTA/KChlWyhjW3FmPj4yXXwwKSsxNDQ+PjFdfDApPj4+MSYxfDApPT0wOjApe2lmKGNbKGNbcGY+PjJdfDApKzE2Pj4yXXwwKWc9Y1soY1twZj4+Ml18MCkrMTY+PjJdfDA7ZWxzZSBnPWNbKGNbcWY+PjJdfDApKzE3Nj4+Ml18MDtjW2RmPj4yXT1nO2lmKGcpe2c9Y1soY1tyZj4+Ml18MCkrMTg0Pj4yXXwwO2lmKGRbKGNbcmY+PjJdfDApKzc2Pj4wXSYxMjgpe2NbTWU+PjJdPWc7Y1tRZT4+Ml09QWgoY1txZj4+Ml18MCxjW2RmPj4yXXwwKXwwO1JiW2NbTWU+PjJdJjI1NV0oY1soY1tyZj4+Ml18MCkrMTg4Pj4yXXwwLGNbUWU+PjJdfDApO0tkKGNbUWU+PjJdfDApO2JyZWFrfWVsc2V7V2JbZyYyNTVdKDEsY1soY1tyZj4+Ml18MCkrMTg4Pj4yXXwwLGNbcWY+PjJdfDAsY1tkZj4+Ml18MCl8MDticmVha319fXdoaWxlKDApO2lmKChjWyhjW3BmPj4yXXwwKSs0Pj4yXXwwKT49KGNbNzBdfDApKXtjW1U+PjJdPTE7d2hpbGUoMSl7aWYoKGNbVT4+Ml18MCk+PShjWyhjW3FmPj4yXXwwKSsxMzY+PjJdfDApKWJyZWFrO2lmKChkWyhjWyhjW3FmPj4yXXwwKSs4OD4+Ml18MCkrKChjW1U+PjJdfDApKjIwfDApPj4wXXwwKT09MjApY1soY1soY1txZj4+Ml18MCkrODg+PjJdfDApKygoY1tVPj4yXXwwKSoyMHwwKSs0Pj4yXT0wO2NbVT4+Ml09KGNbVT4+Ml18MCkrMX1jWyhjW3BmPj4yXXwwKSs0Pj4yXT0wfWs9KGNbcGY+PjJdfDApKzR8MDtjW2s+PjJdPShjW2s+PjJdfDApKzE7az0xNDticmVha31kZWZhdWx0Ont9fXdoaWxlKDApO2RvIGlmKChrfDApPT0yMCl7az0wO2Nba2Y+PjJdPSgoY1twZj4+Ml18MCktKGNbZWY+PjJdfDApfDApLzIwfDA7aWYoY1soY1twZj4+Ml18MCkrND4+Ml18MCl7az0yNTticmVhayBjfWlmKCEoY1soY1txZj4+Ml18MCkrMTg0Pj4yXXwwKSl7az0yNTticmVhayBjfWNbQmM+PjJdPWNbKGNbcWY+PjJdfDApKzE4ND4+Ml07Y1soY1txZj4+Ml18MCkrMTg0Pj4yXT1jWyhjW0JjPj4yXXwwKSs0Pj4yXTtqPShjW3FmPj4yXXwwKSsxOTJ8MDtjW2o+PjJdPShjW2o+PjJdfDApKy0xO3lJKGNbcmY+PjJdfDAsY1soY1txZj4+Ml18MCkrNDQ+PjJdfDApO2Nba2Y+PjJdPXpJKGNbQmM+PjJdfDApfDA7aj0oY1tyZj4+Ml18MCkrMzJ8MDt3Zj1jW2orND4+Ml18MDt5Zj1zZjtjW3lmPj4yXT1jW2o+PjJdO2NbeWYrND4+Ml09d2Y7aWYoKGNbKGNbcGY+PjJdfDApKzg+PjJdfDApPT00KWNba2Y+PjJdPShjWyhjWyhjW3FmPj4yXXwwKSs4OD4+Ml18MCkrKChjW2tmPj4yXXwwKSoyMHwwKSs4Pj4yXXwwKS0xO2NbZWY+PjJdPWNbKGNbcWY+PjJdfDApKzg4Pj4yXTtjW2w+PjJdPWNbKGNbcWY+PjJdfDApKzkyPj4yXTtjW3BmPj4yXT0oY1tlZj4+Ml18MCkrKChjW2tmPj4yXXwwKSoyMHwwKX1lbHNlIGlmKChrfDApPT00Myl7az0wO2NbZGQ+PjJdPUNJKGNbcWY+PjJdfDAsY1twZj4+Ml18MCl8MDtiWyhjW2RkPj4yXXwwKSs4Pj4xXT0yNTYyO2NbKGNbZGQ+PjJdfDApKzE2Pj4yXT1jWyhjW3BmPj4yXXwwKSsxNj4+Ml07Y1soY1tkZD4+Ml18MCkrMTI+PjJdPWNbKGNbcGY+PjJdfDApKzQ+PjJdO2FbKGNbZGQ+PjJdfDApKzEwPj4wXT1hW0c+PjBdfDA7aWYoKGNbKGNbcGY+PjJdfDApKzEyPj4yXXwwKT4wPyhjW0xjPj4yXT0oY1tsPj4yXXwwKSsoKGNbKGNbcGY+PjJdfDApKzEyPj4yXXwwKSo0MHwwKSx5Zj1jW0xjPj4yXXwwLChjW3lmKzQ+PjJdfDApPT0wPyhjW3lmPj4yXXwwKT09KGRbKGNbcGY+PjJdfDApKzM+PjBdfDApOjApOjApYlsoY1tkZD4+Ml18MCkrOD4+MV09MjU3Nn1lbHNlIGlmKChrfDApPT0xMjYpe2s9MDtjW2ljPj4yXT1jWyhjW3BmPj4yXXwwKSsxNj4+Ml07Y1tkZD4+Ml09KGNbbD4+Ml18MCkrKChjWyhjW3BmPj4yXXwwKSsxMj4+Ml18MCkqNDB8MCk7ajpkbyBpZigoY1tjW2ljPj4yXT4+Ml18MCkhPShjW2RkPj4yXXwwKSl7Y1tjW2ljPj4yXT4+Ml09Y1tkZD4+Ml07Y1tXPj4yXT0oZFsoY1tpYz4+Ml18MCkrMjY+PjBdfDApLTE7d2hpbGUoMSl7aWYoKGNbVz4+Ml18MCk8MClicmVhayBqO2NbKGNbaWM+PjJdfDApKzI4KyhjW1c+PjJdPDwyKT4+Ml09KGNbbD4+Ml18MCkrKCgoY1soY1twZj4+Ml18MCkrOD4+Ml18MCkrKGNbVz4+Ml18MCl8MCkqNDB8MCk7Y1tXPj4yXT0oY1tXPj4yXXwwKSstMX19d2hpbGUoMCk7YlsoY1tjW2ljPj4yXT4+Ml18MCkrOD4+MV09ZVsoY1tjW2ljPj4yXT4+Ml18MCkrOD4+MV0mLTQ5NjY0fDE7YVsoY1tpYz4+Ml18MCkrMjU+PjBdPTA7eWY9c2Y7d2Y9Y1t5Zis0Pj4yXXwwO2o9KGNbcmY+PjJdfDApKzMyfDA7Y1tqPj4yXT1jW3lmPj4yXTtjW2orND4+Ml09d2Y7VWJbY1soY1soY1tpYz4+Ml18MCkrND4+Ml18MCkrMTI+PjJdJjI1NV0oY1tpYz4+Ml18MCxkWyhjW2ljPj4yXXwwKSsyNj4+MF18MCwoY1tpYz4+Ml18MCkrMjh8MCk7aj0oY1tyZj4+Ml18MCkrMzJ8MDt3Zj1jW2orND4+Ml18MDt5Zj1zZjtjW3lmPj4yXT1jW2o+PjJdO2NbeWYrND4+Ml09d2Y7aWYoYVsoY1tpYz4+Ml18MCkrMjU+PjBdfDApe2lmKGNbKGNbaWM+PjJdfDApKzIwPj4yXXwwKXt5Zj1jW3FmPj4yXXwwO2NbdmU+PjJdPSRkKGNbY1tpYz4+Ml0+PjJdfDApfDA7QUkoeWYsMTgzOTEsdmUpO2NbdWY+PjJdPWNbKGNbaWM+PjJdfDApKzIwPj4yXX1MSShjW3JmPj4yXXwwLChjW3FmPj4yXXwwKSsyMDR8MCxjWyhjW2ljPj4yXXwwKSsxNj4+Ml18MCxjWyhjW3BmPj4yXXwwKSs0Pj4yXXwwKTtpZihjW3VmPj4yXXwwKWJyZWFrIGF9aWYoKGVbKGNbZGQ+PjJdfDApKzg+PjFdJjE4fDApIT0wPyhpdShjW2NbaWM+PjJdPj4yXXwwLGRbRz4+MF18MCl8MCwoREkoY1tjW2ljPj4yXT4+Ml18MCl8MCkhPTApOjApe2s9ODg4O2JyZWFrIGN9fWVsc2UgaWYoKGt8MCk9PTQ0NCl7aWYoYlsoY1txZj4+Ml18MCkrMTQ0Pj4xXSYxKXtrPTQ0NTticmVhayBjfWNbVWE+PjJdPTA7Y1tPYz4+Ml09MDtjW3JiPj4yXT1jWyhjW3BmPj4yXXwwKSs4Pj4yXTtjW2hhPj4yXT1jWyhjW3BmPj4yXXwwKSsxMj4+Ml07Y1t3Yz4+Ml09KGNbKGNbcmY+PjJdfDApKzE2Pj4yXXwwKSsoY1toYT4+Ml08PDQpO2NbQWQ+PjJdPWNbKGNbd2M+PjJdfDApKzQ+PjJdO2lmKChkW2NbcGY+PjJdPj4wXXwwKT09MTA1KXtjW0tlPj4yXT00fGRbKGNbcGY+PjJdfDApKzM+PjBdJjg7aWYoKGRbKGNbKGNbd2M+PjJdfDApKzEyPj4yXXwwKSs3Nj4+MF18MCk8KGRbKGNbcWY+PjJdfDApKzE0Mz4+MF18MCkpYVsoY1txZj4+Ml18MCkrMTQzPj4wXT1hWyhjWyhjW3djPj4yXXwwKSsxMj4+Ml18MCkrNzY+PjBdfDB9ZWxzZSBjW0tlPj4yXT0wO2lmKGRbKGNbcGY+PjJdfDApKzM+PjBdJjE2KXtjW0tjPj4yXT0oY1tsPj4yXXwwKSsoKGNbcmI+PjJdfDApKjQwfDApO1F4KGNbS2M+PjJdfDApfDA7Y1tyYj4+Ml09Y1tjW0tjPj4yXT4+Ml19Zz1jW3BmPj4yXXwwO2lmKChhWyhjW3BmPj4yXXwwKSsxPj4wXXwwKSE9LTYpe2lmKChhW2crMT4+MF18MCk9PS0xNCljW1VhPj4yXT1jWyhjW3BmPj4yXXwwKSsxNj4+Ml19ZWxzZXtjW09jPj4yXT1jW2crMTY+PjJdO2NbVWE+PjJdPShlWyhjW09jPj4yXXwwKSs2Pj4xXXwwKSsoZVsoY1tPYz4+Ml18MCkrOD4+MV18MCl9Y1tsYz4+Ml09JEkoY1txZj4+Ml18MCxjWyhjW3BmPj4yXXwwKSs0Pj4yXXwwLGNbVWE+PjJdfDAsY1toYT4+Ml18MCwwKXwwO2lmKCEoY1tsYz4+Ml18MCkpe2s9ODg5O2JyZWFrIGF9YVsoY1tsYz4+Ml18MCkrMj4+MF09MTtrPShjW2xjPj4yXXwwKSs1fDA7YVtrPj4wXT1hW2s+PjBdJi01fDQ7Y1soY1tsYz4+Ml18MCkrOD4+Ml09Y1tyYj4+Ml07Y1t1Zj4+Ml09YUooY1tBZD4+Ml18MCxjW3JiPj4yXXwwLGNbS2U+PjJdfDAsY1tPYz4+Ml18MCxjWyhjW2xjPj4yXXwwKSsxNj4+Ml18MCl8MDtjWyhjW2xjPj4yXXwwKSsyND4+Ml09Y1tPYz4+Ml07YVsoY1tsYz4+Ml18MCkrND4+MF09KGFbKGNbcGY+PjJdfDApKzE+PjBdfDApIT0tNjtrPTQ1OH1lbHNlIGlmKChrfDApPT01MjMpe2s9MDtjW0xjPj4yXT0oY1tsPj4yXXwwKSsoKGNbKGNbcGY+PjJdfDApKzEyPj4yXXwwKSo0MHwwKTtjW0JiPj4yXT1jWyhjWyhjW3FmPj4yXXwwKSsxMTI+PjJdfDApKyhjWyhjW3BmPj4yXXwwKSs0Pj4yXTw8Mik+PjJdO2NbY2M+PjJdPWNbKGNbQmI+PjJdfDApKzE2Pj4yXTtjW1ZkPj4yXT0wO3lmPWNbTGM+PjJdfDA7d2Y9Y1t5Zis0Pj4yXXwwO2o9bWE7Y1tqPj4yXT1jW3lmPj4yXTtjW2orND4+Ml09d2Y7aj1tYTtjW3VmPj4yXT1PRihjW2NjPj4yXXwwLDAsY1tqPj4yXXwwLGNbais0Pj4yXXwwLDAsVmQpfDA7aj1tYTt3Zj1jW2orND4+Ml18MDt5Zj0oY1tCYj4+Ml18MCkrNDB8MDtjW3lmPj4yXT1jW2o+PjJdO2NbeWYrND4+Ml09d2Y7YVsoY1tCYj4+Ml18MCkrMj4+MF09MDtjWyhjW0JiPj4yXXwwKSs1Nj4+Ml09MDthWyhjW0JiPj4yXXwwKSszPj4wXT0wO2NbKGNbQmI+PjJdfDApKzI4Pj4yXT1jW1ZkPj4yXTtpZihjW1ZkPj4yXXwwKXtpZihjWyhjW3BmPj4yXXwwKSs4Pj4yXXwwKXtrPTE0O2JyZWFrfWNbdWY+PjJdPVFqKDgxNDU4KXwwfWlmKGNbdWY+PjJdfDApYnJlYWsgYX1lbHNlIGlmKChrfDApPT02MTcpe2s9MDtjW0xiPj4yXT1jWyhjWyhjW3FmPj4yXXwwKSsxMTI+PjJdfDApKyhjWyhjW3BmPj4yXXwwKSs0Pj4yXTw8Mik+PjJdO2NbWmQ+PjJdPTE7Zz1jW0xiPj4yXXwwO2lmKChkW2NbTGI+PjJdPj4wXXwwKT09MSljW3VmPj4yXT1vSihnLFpkKXwwO2Vsc2V7Y1tmYz4+Ml09Y1tnKzE2Pj4yXTtjW3VmPj4yXT1wSihjW2ZjPj4yXXwwLFpkKXwwO2FbKGNbTGI+PjJdfDApKzM+PjBdPTA7Y1soY1tMYj4+Ml18MCkrNTY+PjJdPTB9aWYoY1t1Zj4+Ml18MClicmVhayBhO2FbKGNbTGI+PjJdfDApKzI+PjBdPWNbWmQ+PjJdO2lmKGNbWmQ+PjJdfDApaz0xNH1lbHNlIGlmKChrfDApPT02MjQpe2NbTWI+PjJdPWNbKGNbKGNbcWY+PjJdfDApKzExMj4+Ml18MCkrKGNbKGNbcGY+PjJdfDApKzQ+PjJdPDwyKT4+Ml07Y1tfZD4+Ml09Y1soY1twZj4+Ml18MCkrMTI+PjJdO2NbdWY+PjJdPVliW2NbKGNbcGY+PjJdfDApKzE2Pj4yXSYyNTVdKGNbKGNbTWI+PjJdfDApKzE2Pj4yXXwwLF9kKXwwO2s9NjI1fWVsc2UgaWYoKGt8MCk9PTc1Mil7az0wO2Nba2M+PjJdPWNbKGNbcGY+PjJdfDApKzE2Pj4yXTtjW1VjPj4yXT0oY1tsPj4yXXwwKSsoKGNbKGNbcGY+PjJdfDApKzEyPj4yXXwwKSo0MHwwKTtrOmRvIGlmKChjWyhjW2tjPj4yXXwwKSs4Pj4yXXwwKSE9KGNbVWM+PjJdfDApKXtjWyhjW2tjPj4yXXwwKSs4Pj4yXT1jW1VjPj4yXTtjW1k+PjJdPShkWyhjW2tjPj4yXXwwKSsyNj4+MF18MCktMTt3aGlsZSgxKXtpZigoY1tZPj4yXXwwKTwwKWJyZWFrIGs7Y1soY1trYz4+Ml18MCkrMjgrKGNbWT4+Ml08PDIpPj4yXT0oY1tsPj4yXXwwKSsoKChjWyhjW3BmPj4yXXwwKSs4Pj4yXXwwKSsoY1tZPj4yXXwwKXwwKSo0MHwwKTtjW1k+PjJdPShjW1k+PjJdfDApKy0xfX13aGlsZSgwKTt5Zj0oY1tVYz4+Ml18MCkrMTJ8MDtjW3lmPj4yXT0oY1t5Zj4+Ml18MCkrMTtqRyhsZSxjW3JmPj4yXXwwLDEpO2NbY1trYz4+Ml0+PjJdPWxlO2FbKGNba2M+PjJdfDApKzI1Pj4wXT0wO2FbKGNba2M+PjJdfDApKzI0Pj4wXT0wO1ViW2NbKGNbKGNba2M+PjJdfDApKzQ+PjJdfDApKzEyPj4yXSYyNTVdKGNba2M+PjJdfDAsZFsoY1trYz4+Ml18MCkrMjY+PjBdfDAsKGNba2M+PjJdfDApKzI4fDApO2lmKGFbKGNba2M+PjJdfDApKzI1Pj4wXXwwKXtpZihjWyhjW2tjPj4yXXwwKSsyMD4+Ml18MCl7eWY9Y1txZj4+Ml18MDtjW0NlPj4yXT0kZChsZSl8MDtBSSh5ZiwxODM5MSxDZSk7Y1t1Zj4+Ml09Y1soY1trYz4+Ml18MCkrMjA+PjJdfVhnKGxlKTtpZihjW3VmPj4yXXwwKWJyZWFrIGF9aWYoKGFbKGNba2M+PjJdfDApKzI0Pj4wXXwwKSE9MD8oY1tZPj4yXT1jWyhjW3BmPj4yXXwwKSstMjArND4+Ml0sKGNbWT4+Ml18MCkhPTApOjApaGgoKGNbbD4+Ml18MCkrKChjW1k+PjJdfDApKjQwfDApfDAsMSwwKX13aGlsZSgwKTtkbyBpZigoa3wwKT09MTQpe2s9MDtjW3BmPj4yXT0oY1tlZj4+Ml18MCkrKCgoY1soY1twZj4+Ml18MCkrOD4+Ml18MCktMXwwKSoyMHwwKX1lbHNlIGlmKChrfDApPT00NTgpe2s9MDtiSihjWyhjW2xjPj4yXXwwKSsxNj4+Ml18MCxkWyhjW3BmPj4yXXwwKSszPj4wXSYzKTtpZihjW3VmPj4yXXwwKWJyZWFrIGF9ZWxzZSBpZigoa3wwKT09NjI1KXtrPTA7Y1soY1tNYj4+Ml18MCkrNTY+PjJdPTA7aWYoY1t1Zj4+Ml18MClicmVhayBhO2c9KGNbTWI+PjJdfDApKzJ8MDtpZighKGNbX2Q+PjJdfDApKXthW2c+PjBdPTA7az0oY1txZj4+Ml18MCkrMTU2KyhkWyhjW3BmPj4yXXwwKSszPj4wXTw8Mil8MDtjW2s+PjJdPShjW2s+PjJdfDApKzE7az03O2JyZWFrfWVsc2V7YVtnPj4wXT0xO2s9ODticmVha319d2hpbGUoMCk7aWYoKGt8MCk9PTcpe2NbcGY+PjJdPShjW2VmPj4yXXwwKSsoKChjWyhjW3BmPj4yXXwwKSs4Pj4yXXwwKS0xfDApKjIwfDApO2s9OH1pZigoa3wwKT09OCl7az0wO2lmKGNbKGNbcmY+PjJdfDApKzI0OD4+Ml18MClicmVhayBiO2lmKCgoY1soY1tyZj4+Ml18MCkrMzA0Pj4yXXwwKSE9MD8oY1t0Zj4+Ml18MCk+Pj4wPj0oY1tfYT4+Ml18MCk+Pj4wOjApPyhjW19hPj4yXT0oY1t0Zj4+Ml18MCkrKGNbKGNbcmY+PjJdfDApKzMxMj4+Ml18MCktKCgoY1t0Zj4+Ml18MCk+Pj4wKSUoKGNbKGNbcmY+PjJdfDApKzMxMj4+Ml18MCk+Pj4wKXwwKSwoVGJbY1soY1tyZj4+Ml18MCkrMzA0Pj4yXSYyNTVdKGNbKGNbcmY+PjJdfDApKzMwOD4+Ml18MCl8MCkhPTApOjApe2s9MTI7YnJlYWt9fWNbcGY+PjJdPShjW3BmPj4yXXwwKSsyMH1zd2l0Y2goa3wwKXtjYXNlIDEyOntjW3VmPj4yXT05O2JyZWFrIGF9Y2FzZSAyNTp7Y1soY1txZj4+Ml18MCkrNDA+PjJdPWNbKGNbcGY+PjJdfDApKzQ+PjJdO2FbKGNbcWY+PjJdfDApKzE0Mj4+MF09Y1soY1twZj4+Ml18MCkrOD4+Ml07Y1soY1txZj4+Ml18MCkrMzY+PjJdPWNba2Y+PjJdO2lmKGNbKGNbcWY+PjJdfDApKzQwPj4yXXwwKXtnPWNbcWY+PjJdfDA7Zj1jW3BmPj4yXXwwO2lmKGFbKGNbcGY+PjJdfDApKzM+PjBdfDApe2NbbGY+PjJdPWNbNTU3MisoKGRbZiszPj4wXXwwKS0xPDwyKT4+Ml07QUkoZywzOTg3MyxsZik7aWYoY1soY1twZj4+Ml18MCkrMTY+PjJdfDApe3lmPWNbcmY+PjJdfDA7d2Y9Y1soY1twZj4+Ml18MCkrMTY+PjJdfDA7Y1ttZj4+Ml09Y1soY1txZj4+Ml18MCkrMTA4Pj4yXTtjW21mKzQ+PjJdPXdmO3lmPUdoKHlmLDM5ODk0LG1mKXwwO2NbKGNbcWY+PjJdfDApKzEwOD4+Ml09eWZ9fWVsc2V7Y1tuZj4+Ml09Y1tmKzE2Pj4yXTtBSShnLDE4MzkxLG5mKX15Zj1jWyhjW3BmPj4yXXwwKSs0Pj4yXXwwO3BmPWNbKGNbcWY+PjJdfDApKzE3Nj4+Ml18MDt3Zj1jWyhjW3FmPj4yXXwwKSsxMDg+PjJdfDA7Y1tvZj4+Ml09Y1trZj4+Ml07Y1tvZis0Pj4yXT1wZjtjW29mKzg+PjJdPXdmO1JkKHlmLDM5OTAxLG9mKX1jW3VmPj4yXT1CSShjW3FmPj4yXXwwKXwwO2c9KGNbcWY+PjJdfDApKzQwfDA7aWYoKGNbdWY+PjJdfDApPT01KXtjW2c+PjJdPTU7eWY9c2Y7cGY9eWY7cGY9Y1twZj4+Ml18MDt5Zj15Zis0fDA7eWY9Y1t5Zj4+Ml18MDt3Zj1jW3JmPj4yXXwwO3dmPXdmKzMyfDA7c2Y9d2Y7Y1tzZj4+Ml09cGY7d2Y9d2YrNHwwO2Nbd2Y+PjJdPXlmO3dmPWNbdGY+PjJdfDA7eWY9Y1txZj4+Ml18MDt5Zj15ZisxNTZ8MDt5Zj15ZisxNnwwO3RmPWNbeWY+PjJdfDA7d2Y9dGYrd2Z8MDtjW3lmPj4yXT13Zjt5Zj1jW3VmPj4yXXwwO2k9dmY7cmV0dXJuIHlmfDB9ZWxzZXtjW3VmPj4yXT0oY1tnPj4yXXwwKSE9MD8xOjEwMTt5Zj1zZjtwZj15ZjtwZj1jW3BmPj4yXXwwO3lmPXlmKzR8MDt5Zj1jW3lmPj4yXXwwO3dmPWNbcmY+PjJdfDA7d2Y9d2YrMzJ8MDtzZj13ZjtjW3NmPj4yXT1wZjt3Zj13Zis0fDA7Y1t3Zj4+Ml09eWY7d2Y9Y1t0Zj4+Ml18MDt5Zj1jW3FmPj4yXXwwO3lmPXlmKzE1NnwwO3lmPXlmKzE2fDA7dGY9Y1t5Zj4+Ml18MDt3Zj10Zit3ZnwwO2NbeWY+PjJdPXdmO3lmPWNbdWY+PjJdfDA7aT12ZjtyZXR1cm4geWZ8MH19Y2FzZSA2NDp7aWYoKChjWyhjW3JmPj4yXXwwKSszMDQ+PjJdfDApIT0wPyhjW3RmPj4yXXwwKT4+PjA+PShjW19hPj4yXXwwKT4+PjA6MCk/KFRiW2NbKGNbcmY+PjJdfDApKzMwND4+Ml0mMjU1XShjWyhjW3JmPj4yXXwwKSszMDg+PjJdfDApfDApIT0wOjApe2NbdWY+PjJdPTk7YnJlYWsgYX15Zj1FSShjW3FmPj4yXXwwLDApfDA7Y1t1Zj4+Ml09eWY7aWYoeWYpYnJlYWsgYTtjW3VmPj4yXT1GSShjW3FmPj4yXXwwLDEpfDA7Y1soY1txZj4+Ml18MCkrMzI+PjJdPShjWyhjW3FmPj4yXXwwKSszMj4+Ml18MCkrMnwxO3lmPShjW2w+PjJdfDApKygoY1soY1twZj4+Ml18MCkrND4+Ml18MCkqNDB8MCl8MDtjWyhjW3FmPj4yXXwwKSsxMDQ+PjJdPXlmO2NbUmM+PjJdPXlmO2NbUT4+Ml09MDt3aGlsZSgxKXtpZigoY1tRPj4yXXwwKT49KGNbKGNbcGY+PjJdfDApKzg+PjJdfDApKWJyZWFrO2lmKChlWyhjW1JjPj4yXXwwKSsoKGNbUT4+Ml18MCkqNDB8MCkrOD4+MV0mNDA5NnwwKSE9MD8oYmgoKGNbUmM+PjJdfDApKygoY1tRPj4yXXwwKSo0MHwwKXwwKXwwKSE9MDowKXtrPTg4OTticmVhayBhfUdJKChjW1JjPj4yXXwwKSsoKGNbUT4+Ml18MCkqNDB8MCl8MCl8MDtjW1E+PjJdPShjW1E+PjJdfDApKzF9aWYoYVsoY1tyZj4+Ml18MCkrNjk+PjBdfDApe2s9ODg5O2JyZWFrIGF9aWYoZFsoY1tyZj4+Ml18MCkrNzY+PjBdJjQpV2JbY1soY1tyZj4+Ml18MCkrMTg0Pj4yXSYyNTVdKDQsY1soY1tyZj4+Ml18MCkrMTg4Pj4yXXwwLGNbcWY+PjJdfDAsMCl8MDtjWyhjW3FmPj4yXXwwKSszNj4+Ml09KCgoY1twZj4+Ml18MCktKGNbZWY+PjJdfDApfDApLzIwfDApKzE7Y1t1Zj4+Ml09MTAwO3lmPXNmO3BmPXlmO3BmPWNbcGY+PjJdfDA7eWY9eWYrNHwwO3lmPWNbeWY+PjJdfDA7d2Y9Y1tyZj4+Ml18MDt3Zj13ZiszMnwwO3NmPXdmO2Nbc2Y+PjJdPXBmO3dmPXdmKzR8MDtjW3dmPj4yXT15Zjt3Zj1jW3RmPj4yXXwwO3lmPWNbcWY+PjJdfDA7eWY9eWYrMTU2fDA7eWY9eWYrMTZ8MDt0Zj1jW3lmPj4yXXwwO3dmPXRmK3dmfDA7Y1t5Zj4+Ml09d2Y7eWY9Y1t1Zj4+Ml18MDtpPXZmO3JldHVybiB5ZnwwfWNhc2UgMTU5OntjW3VmPj4yXT0yMDticmVhayBhfWNhc2UgMjY3OntjW3VmPj4yXT1Raig3OTgzNSl8MDticmVhayBhfWNhc2UgMjg2OntpZighKGNbKGNbeGI+PjJdfDApKzcyPj4yXXwwKSlYZyhmZSk7Y1t1Zj4+Ml09UWooNzk4OTQpfDA7YnJlYWsgYX1jYXNlIDM3MDp7Y1soY1txZj4+Ml18MCkrMzY+PjJdPSgoY1twZj4+Ml18MCktKGNbZWY+PjJdfDApfDApLzIwfDA7YVsoY1tyZj4+Ml18MCkrNjc+PjBdPTA7Y1t1Zj4+Ml09NTtjWyhjW3FmPj4yXXwwKSs0MD4+Ml09NTt5Zj1zZjtwZj15ZjtwZj1jW3BmPj4yXXwwO3lmPXlmKzR8MDt5Zj1jW3lmPj4yXXwwO3dmPWNbcmY+PjJdfDA7d2Y9d2YrMzJ8MDtzZj13ZjtjW3NmPj4yXT1wZjt3Zj13Zis0fDA7Y1t3Zj4+Ml09eWY7d2Y9Y1t0Zj4+Ml18MDt5Zj1jW3FmPj4yXXwwO3lmPXlmKzE1NnwwO3lmPXlmKzE2fDA7dGY9Y1t5Zj4+Ml18MDt3Zj10Zit3ZnwwO2NbeWY+PjJdPXdmO3lmPWNbdWY+PjJdfDA7aT12ZjtyZXR1cm4geWZ8MH1jYXNlIDM5Mzp7Y1tEPj4yXT1jWyhjW3BmPj4yXXwwKSs0Pj4yXTtjW3JhPj4yXT1jWyhjW3BmPj4yXXwwKSs4Pj4yXTtpZigoY1tEPj4yXXwwKT09KGRbKGNbcmY+PjJdfDApKzY3Pj4wXXwwKSl7aWYoY1tEPj4yXXwwKWc9KGNbcmE+PjJdfDApIT0wPzQwMTMzOjQwMTc2O2Vsc2UgZz00MDIxNztBSShjW3FmPj4yXXwwLGcsZ2YpO2NbdWY+PjJdPTE7YnJlYWsgYX1kbyBpZighKGNbcmE+PjJdfDApKXtpZigoY1tEPj4yXXwwKSE9MD8oY1soY1tyZj4+Ml18MCkrMTY0Pj4yXXwwKT4wOjApe0FJKGNbcWY+PjJdfDAsNDAwNzgsemUpO2NbdWY+PjJdPTU7YnJlYWsgYX15Zj1FSShjW3FmPj4yXXwwLDEpfDA7Y1t1Zj4+Ml09eWY7aWYoeWYpe3lmPXNmO3BmPXlmO3BmPWNbcGY+PjJdfDA7eWY9eWYrNHwwO3lmPWNbeWY+PjJdfDA7d2Y9Y1tyZj4+Ml18MDt3Zj13ZiszMnwwO3NmPXdmO2Nbc2Y+PjJdPXBmO3dmPXdmKzR8MDtjW3dmPj4yXT15Zjt3Zj1jW3RmPj4yXXwwO3lmPWNbcWY+PjJdfDA7eWY9eWYrMTU2fDA7eWY9eWYrMTZ8MDt0Zj1jW3lmPj4yXXwwO3dmPXRmK3dmfDA7Y1t5Zj4+Ml09d2Y7eWY9Y1t1Zj4+Ml18MDtpPXZmO3JldHVybiB5ZnwwfWVsc2V7YVsoY1tyZj4+Ml18MCkrNjc+PjBdPWNbRD4+Ml07YnJlYWt9fWVsc2V7WUkoY1tyZj4+Ml18MCw1MTYpO2FbKGNbcmY+PjJdfDApKzY3Pj4wXT0xfXdoaWxlKDApO2lmKChCSShjW3FmPj4yXXwwKXwwKT09NSl7Y1soY1txZj4+Ml18MCkrMzY+PjJdPSgoY1twZj4+Ml18MCktKGNbZWY+PjJdfDApfDApLzIwfDA7YVsoY1tyZj4+Ml18MCkrNjc+PjBdPTEtKGNbRD4+Ml18MCk7Y1t1Zj4+Ml09NTtjWyhjW3FmPj4yXXwwKSs0MD4+Ml09NTt5Zj1zZjtwZj15ZjtwZj1jW3BmPj4yXXwwO3lmPXlmKzR8MDt5Zj1jW3lmPj4yXXwwO3dmPWNbcmY+PjJdfDA7d2Y9d2YrMzJ8MDtzZj13ZjtjW3NmPj4yXT1wZjt3Zj13Zis0fDA7Y1t3Zj4+Ml09eWY7d2Y9Y1t0Zj4+Ml18MDt5Zj1jW3FmPj4yXXwwO3lmPXlmKzE1NnwwO3lmPXlmKzE2fDA7dGY9Y1t5Zj4+Ml18MDt3Zj10Zit3ZnwwO2NbeWY+PjJdPXdmO3lmPWNbdWY+PjJdfDA7aT12ZjtyZXR1cm4geWZ8MH1aSShjW3JmPj4yXXwwKTtpZighKGNbKGNbcWY+PjJdfDApKzQwPj4yXXwwKSl7Y1t1Zj4+Ml09MTAxO3lmPXNmO3BmPXlmO3BmPWNbcGY+PjJdfDA7eWY9eWYrNHwwO3lmPWNbeWY+PjJdfDA7d2Y9Y1tyZj4+Ml18MDt3Zj13ZiszMnwwO3NmPXdmO2Nbc2Y+PjJdPXBmO3dmPXdmKzR8MDtjW3dmPj4yXT15Zjt3Zj1jW3RmPj4yXXwwO3lmPWNbcWY+PjJdfDA7eWY9eWYrMTU2fDA7eWY9eWYrMTZ8MDt0Zj1jW3lmPj4yXXwwO3dmPXRmK3dmfDA7Y1t5Zj4+Ml09d2Y7eWY9Y1t1Zj4+Ml18MDtpPXZmO3JldHVybiB5ZnwwfWVsc2V7Y1t1Zj4+Ml09MTt5Zj1zZjtwZj15ZjtwZj1jW3BmPj4yXXwwO3lmPXlmKzR8MDt5Zj1jW3lmPj4yXXwwO3dmPWNbcmY+PjJdfDA7d2Y9d2YrMzJ8MDtzZj13ZjtjW3NmPj4yXT1wZjt3Zj13Zis0fDA7Y1t3Zj4+Ml09eWY7d2Y9Y1t0Zj4+Ml18MDt5Zj1jW3FmPj4yXXwwO3lmPXlmKzE1NnwwO3lmPXlmKzE2fDA7dGY9Y1t5Zj4+Ml18MDt3Zj10Zit3ZnwwO2NbeWY+PjJdPXdmO3lmPWNbdWY+PjJdfDA7aT12ZjtyZXR1cm4geWZ8MH19Y2FzZSA0MTE6e2NbdWY+PjJdPTg7YnJlYWsgYX1jYXNlIDQxNDp7aWYoKGNbdWY+PjJdJjI1NXwwKSE9NSlicmVhayBhO2NbKGNbcWY+PjJdfDApKzM2Pj4yXT0oKGNbcGY+PjJdfDApLShjW2VmPj4yXXwwKXwwKS8yMHwwO2NbKGNbcWY+PjJdfDApKzQwPj4yXT1jW3VmPj4yXTt5Zj1zZjtwZj15ZjtwZj1jW3BmPj4yXXwwO3lmPXlmKzR8MDt5Zj1jW3lmPj4yXXwwO3dmPWNbcmY+PjJdfDA7d2Y9d2YrMzJ8MDtzZj13ZjtjW3NmPj4yXT1wZjt3Zj13Zis0fDA7Y1t3Zj4+Ml09eWY7d2Y9Y1t0Zj4+Ml18MDt5Zj1jW3FmPj4yXXwwO3lmPXlmKzE1NnwwO3lmPXlmKzE2fDA7dGY9Y1t5Zj4+Ml18MDt3Zj10Zit3ZnwwO2NbeWY+PjJdPXdmO3lmPWNbdWY+PjJdfDA7aT12ZjtyZXR1cm4geWZ8MH1jYXNlIDQ0NTp7Y1t1Zj4+Ml09NTE2O2JyZWFrIGF9Y2FzZSA1NDQ6e2NbdWY+PjJdPTEzO2JyZWFrIGF9Y2FzZSA1NTQ6e2NbdWY+PjJdPTEzO2JyZWFrIGF9Y2FzZSA2NjA6e2NbdWY+PjJdPTY7YVsoY1txZj4+Ml18MCkrMTQyPj4wXT0yO2JyZWFrIGF9Y2FzZSA2ODI6e0NnKGNbcmY+PjJdfDApO2lmKChjW3VmPj4yXXwwKT09Nyl7az04ODk7YnJlYWsgYX1lbHNlIGJyZWFrIGF9Y2FzZSA3MTE6e2NbdWY+PjJdPTE7QUkoY1txZj4+Ml18MCw0MDM1NyxCZSk7YnJlYWsgYX1jYXNlIDc2NDp7eWY9Y1txZj4+Ml18MDtjW0RlPj4yXT0kZChjW1ZjPj4yXXwwKXwwO0FJKHlmLDE4MzkxLERlKTticmVhayBhfWNhc2UgNzg0OntjW3VmPj4yXT0xO3lmPWNbcWY+PjJdfDA7Y1tFZT4+Ml09KGNbRT4+Ml18MCk9PTU/NDAzOTQ6NDAzOTk7QUkoeWYsNDA0MDYsRWUpO2JyZWFrIGF9Y2FzZSA4MDU6e2lmKChjW3VmPj4yXSYyNTV8MCkhPTYpYnJlYWsgYTtjW1BlPj4yXT1jWyhjW3BmPj4yXXwwKSsxNj4+Ml07eWY9Y1txZj4+Ml18MDtjW0ZlPj4yXT1jW1BlPj4yXTtBSSh5Ziw0MDQ1OCxGZSk7YnJlYWsgYX1jYXNlIDgxNjp7Y1t1Zj4+Ml09NjticmVhayBhfWNhc2UgODIwOntUYltjWyhjW1ljPj4yXXwwKSsyOD4+Ml0mMjU1XShjW3BkPj4yXXwwKXwwO2s9ODg5O2JyZWFrIGF9Y2FzZSA4Mzk6e2NbdWY+PjJdPTY7YnJlYWsgYX1jYXNlIDg4Nzp7eWY9c2Y7cGY9eWY7cGY9Y1twZj4+Ml18MDt5Zj15Zis0fDA7eWY9Y1t5Zj4+Ml18MDt3Zj1jW3JmPj4yXXwwO3dmPXdmKzMyfDA7c2Y9d2Y7Y1tzZj4+Ml09cGY7d2Y9d2YrNHwwO2Nbd2Y+PjJdPXlmO3dmPWNbdGY+PjJdfDA7eWY9Y1txZj4+Ml18MDt5Zj15ZisxNTZ8MDt5Zj15ZisxNnwwO3RmPWNbeWY+PjJdfDA7d2Y9dGYrd2Z8MDtjW3lmPj4yXT13Zjt5Zj1jW3VmPj4yXXwwO2k9dmY7cmV0dXJuIHlmfDB9Y2FzZSA4ODg6e0FJKGNbcWY+PjJdfDAsMTgxNzAsR2UpO2NbdWY+PjJdPTE4O2JyZWFrIGF9fX13aGlsZSgwKTtjW3VmPj4yXT0oZFsoY1tyZj4+Ml18MCkrNjk+PjBdfDApIT0wPzc6OTtjWyhjW3FmPj4yXXwwKSs0MD4+Ml09Y1t1Zj4+Ml07eWY9Y1txZj4+Ml18MDtjW0llPj4yXT1saChjW3VmPj4yXXwwKXwwO0FJKHlmLDE4MzkxLEllKX13aGlsZSgwKTtpZigoa3wwKT09ODg5KXttaChjW3JmPj4yXXwwKTtBSShjW3FmPj4yXXwwLDI1MDE2LEhlKTtjW3VmPj4yXT03fWlmKGFbKGNbcmY+PjJdfDApKzY5Pj4wXXwwKWNbdWY+PjJdPTc7aWYoKGNbdWY+PjJdfDApIT0zMDgyPyhjWyhjW3FmPj4yXXwwKSsxMDg+PjJdfDApPT0wOjApe3lmPWNbcWY+PjJdfDA7Y1toZj4+Ml09bGgoY1t1Zj4+Ml18MCl8MDtBSSh5ZiwxODM5MSxoZil9Y1soY1txZj4+Ml18MCkrNDA+PjJdPWNbdWY+PjJdO1NKKGNbcmY+PjJdfDAsY1t1Zj4+Ml18MCk7eWY9Y1t1Zj4+Ml18MDtvZj1jWyhjW3FmPj4yXXwwKSsxNzY+PjJdfDA7d2Y9Y1soY1txZj4+Ml18MCkrMTA4Pj4yXXwwO2NbamY+PjJdPSgoY1twZj4+Ml18MCktKGNbZWY+PjJdfDApfDApLzIwfDA7Y1tqZis0Pj4yXT1vZjtjW2pmKzg+PjJdPXdmO1JkKHlmLDQwNDg3LGpmKTtCSShjW3FmPj4yXXwwKXwwO2lmKChjW3VmPj4yXXwwKT09MzA4MiltaChjW3JmPj4yXXwwKTtjW3VmPj4yXT0xO2lmKChkW2ZmPj4wXXwwKTw9MCl7eWY9c2Y7cGY9eWY7cGY9Y1twZj4+Ml18MDt5Zj15Zis0fDA7eWY9Y1t5Zj4+Ml18MDt3Zj1jW3JmPj4yXXwwO3dmPXdmKzMyfDA7c2Y9d2Y7Y1tzZj4+Ml09cGY7d2Y9d2YrNHwwO2Nbd2Y+PjJdPXlmO3dmPWNbdGY+PjJdfDA7eWY9Y1txZj4+Ml18MDt5Zj15ZisxNTZ8MDt5Zj15ZisxNnwwO3RmPWNbeWY+PjJdfDA7d2Y9dGYrd2Z8MDtjW3lmPj4yXT13Zjt5Zj1jW3VmPj4yXXwwO2k9dmY7cmV0dXJuIHlmfDB9d2ooY1tyZj4+Ml18MCwoZFtmZj4+MF18MCktMXwwKTt5Zj1zZjtwZj15ZjtwZj1jW3BmPj4yXXwwO3lmPXlmKzR8MDt5Zj1jW3lmPj4yXXwwO3dmPWNbcmY+PjJdfDA7d2Y9d2YrMzJ8MDtzZj13ZjtjW3NmPj4yXT1wZjt3Zj13Zis0fDA7Y1t3Zj4+Ml09eWY7d2Y9Y1t0Zj4+Ml18MDt5Zj1jW3FmPj4yXXwwO3lmPXlmKzE1NnwwO3lmPXlmKzE2fDA7dGY9Y1t5Zj4+Ml18MDt3Zj10Zit3ZnwwO2NbeWY+PjJdPXdmO3lmPWNbdWY+PjJdfDA7aT12ZjtyZXR1cm4geWZ8MH1mdW5jdGlvbiB0SShhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTAsZj0wLGc9MCxoPTA7aD1pO2k9aSszMnwwO2I9aCsxNnwwO2c9aCsxMnwwO2Q9aCs4fDA7Zj1oKzR8MDtlPWg7Y1tiPj4yXT1hO2NbZz4+Ml09MDtjW2Q+PjJdPTA7d2hpbGUoMSl7aWYoKGNbZD4+Ml18MCk+PShjWyhjW2I+PjJdfDApKzIwPj4yXXwwKSlicmVhaztjW2Y+PjJdPWNbKGNbKGNbYj4+Ml18MCkrMTY+PjJdfDApKyhjW2Q+PjJdPDw0KSs0Pj4yXTtpZigoY1tmPj4yXXwwKSE9MD8obWcoY1tmPj4yXXwwKSxjW2U+PjJdPXZJKFBmKGNbZj4+Ml18MCl8MCl8MCwoKGNbZT4+Ml18MCk+MD8oY1soY1tiPj4yXXwwKSsyMjQ+PjJdfDApIT0wOjApJihjW2c+PjJdfDApPT0wKTowKWNbZz4+Ml09V2JbY1soY1tiPj4yXXwwKSsyMjQ+PjJdJjI1NV0oY1soY1tiPj4yXXwwKSsyMjg+PjJdfDAsY1tiPj4yXXwwLGNbKGNbKGNbYj4+Ml18MCkrMTY+PjJdfDApKyhjW2Q+PjJdPDw0KT4+Ml18MCxjW2U+PjJdfDApfDA7Y1tkPj4yXT0oY1tkPj4yXXwwKSsxfWk9aDtyZXR1cm4gY1tnPj4yXXwwfWZ1bmN0aW9uIHVJKGIpe2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTA7Zz1pO2k9aSsxNnwwO2Q9Zys4fDA7ZT1nKzR8MDtmPWc7Y1tkPj4yXT1iO2NbZT4+Ml09Y1tjW2Q+PjJdPj4yXTtjW2Y+PjJdPWNbKGNbZD4+Ml18MCkrNDA+PjJdO2I9Y1tlPj4yXXwwO2lmKCEoY1soY1tkPj4yXXwwKSsxMDg+PjJdfDApKXtsZyhiLGNbZj4+Ml18MCk7Zj1jW2Y+PjJdfDA7aT1nO3JldHVybiBmfDB9Yj1iKzcwfDA7YVtiPj4wXT0oYVtiPj4wXXwwKSsxPDwyND4+MjQ7WWooKTtpZighKGNbKGNbZT4+Ml18MCkrMjQ0Pj4yXXwwKSl7Yj1aaChjW2U+PjJdfDApfDA7Y1soY1tlPj4yXXwwKSsyNDQ+PjJdPWJ9X2goY1soY1tlPj4yXXwwKSsyNDQ+PjJdfDAsLTEsY1soY1tkPj4yXXwwKSsxMDg+PjJdfDAsMSwtMSk7WmooKTtkPShjW2U+PjJdfDApKzcwfDA7YVtkPj4wXT0oYVtkPj4wXXwwKSstMTw8MjQ+PjI0O2NbKGNbZT4+Ml18MCkrNTI+PjJdPWNbZj4+Ml07Zj1jW2Y+PjJdfDA7aT1nO3JldHVybiBmfDB9ZnVuY3Rpb24gdkkoYSl7YT1hfDA7dmFyIGI9MCxkPTA7Yj1pO2k9aSsxNnwwO2Q9YjtjW2Q+PjJdPWE7YT13SShjWyhjW2Q+PjJdfDApKzIxNj4+Ml18MCl8MDtpPWI7cmV0dXJuIGF8MH1mdW5jdGlvbiB3SShhKXthPWF8MDt2YXIgYj0wLGQ9MCxlPTA7ZT1pO2k9aSsxNnwwO2I9ZSs0fDA7ZD1lO2NbYj4+Ml09YTtjW2Q+PjJdPTA7aWYoIShjW2I+PjJdfDApKXtkPWNbZD4+Ml18MDtpPWU7cmV0dXJuIGR8MH1jW2Q+PjJdPWNbKGNbYj4+Ml18MCkrMTI+PjJdO2NbKGNbYj4+Ml18MCkrMTI+PjJdPTA7ZD1jW2Q+PjJdfDA7aT1lO3JldHVybiBkfDB9ZnVuY3Rpb24geEkoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MCxnPTAsaD0wO2g9aTtpPWkrMzJ8MDtiPWgrMTZ8MDtmPWgrMTJ8MDtlPWgrOHwwO2Q9aCs0fDA7Zz1oO2NbYj4+Ml09YTtpZighKGNbKGNbYj4+Ml18MCkrMTUyPj4yXXwwKSl7aT1oO3JldHVybn1jW2U+PjJdPWNbY1tiPj4yXT4+Ml07Y1tkPj4yXT1jWyhjW2U+PjJdfDApKzE2Pj4yXTtjW2c+PjJdPWNbKGNbZT4+Ml18MCkrMjA+PjJdO2NbZj4+Ml09MDt3aGlsZSgxKXtpZigoY1tmPj4yXXwwKT49KGNbZz4+Ml18MCkpYnJlYWs7aWYoKChjW2Y+PjJdfDApIT0xPyhjWyhjW2I+PjJdfDApKzE1Mj4+Ml0mMTw8Y1tmPj4yXXwwKSE9MDowKT8oY1soY1tkPj4yXXwwKSsoY1tmPj4yXTw8NCkrND4+Ml18MCkhPTA6MCltZyhjWyhjW2Q+PjJdfDApKyhjW2Y+PjJdPDw0KSs0Pj4yXXwwKTtjW2Y+PjJdPShjW2Y+PjJdfDApKzF9aT1oO3JldHVybn1mdW5jdGlvbiB5SShhLGIpe2E9YXwwO2I9YnwwO3ZhciBkPTAsZT0wLGY9MDtkPWk7aT1pKzE2fDA7Zj1kKzR8MDtlPWQ7Y1tmPj4yXT1hO2NbZT4+Ml09YjtjWyhjW2Y+PjJdfDApKzg4Pj4yXT1jW2U+PjJdO2I9KGNbZj4+Ml18MCkrOTJ8MDtjW2I+PjJdPShjW2I+PjJdfDApKyhjW2U+PjJdfDApO2k9ZDtyZXR1cm59ZnVuY3Rpb24gekkoYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wLGY9MCxnPTA7ZD1pO2k9aSsxNnwwO2I9ZCs0fDA7ZT1kO2NbYj4+Ml09YTtjW2U+PjJdPWNbY1tiPj4yXT4+Ml07UE0oY1tlPj4yXXwwKTtjWyhjW2U+PjJdfDApKzg4Pj4yXT1jWyhjW2I+PjJdfDApKzg+PjJdO2NbKGNbZT4+Ml18MCkrMTM2Pj4yXT1jWyhjW2I+PjJdfDApKzUyPj4yXTtjWyhjW2U+PjJdfDApKzkyPj4yXT1jWyhjW2I+PjJdfDApKzE2Pj4yXTtjWyhjW2U+PjJdfDApKzI0Pj4yXT1jWyhjW2I+PjJdfDApKzU2Pj4yXTtjWyhjW2U+PjJdfDApKzExMj4+Ml09Y1soY1tiPj4yXXwwKSsyMD4+Ml07Y1soY1tlPj4yXXwwKSsyOD4+Ml09Y1soY1tiPj4yXXwwKSs0ND4+Ml07Zz0oY1tiPj4yXXwwKSszMnwwO2Y9Y1tnKzQ+PjJdfDA7YT0oY1tjW2U+PjJdPj4yXXwwKSszMnwwO2NbYT4+Ml09Y1tnPj4yXTtjW2ErND4+Ml09ZjtjWyhjW2U+PjJdfDApKzQ0Pj4yXT1jWyhjW2I+PjJdfDApKzY4Pj4yXTtjWyhjW2NbZT4+Ml0+PjJdfDApKzg4Pj4yXT1jWyhjW2I+PjJdfDApKzcyPj4yXTtMSShjW2NbZT4+Ml0+PjJdfDAsKGNbZT4+Ml18MCkrMjA0fDAsLTEsMCk7Y1soY1tlPj4yXXwwKSsyMDQ+PjJdPWNbKGNbYj4+Ml18MCkrNDA+PjJdO2NbKGNbYj4+Ml18MCkrNDA+PjJdPTA7aT1kO3JldHVybiBjWyhjW2I+PjJdfDApKzQ4Pj4yXXwwfWZ1bmN0aW9uIEFJKGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wO2U9aTtpPWkrMzJ8MDtmPWUrMjB8MDtoPWUrMTZ8MDtnPWU7Y1tmPj4yXT1hO2NbaD4+Ml09YjtUZihjW2NbZj4+Ml0+PjJdfDAsY1soY1tmPj4yXXwwKSsxMDg+PjJdfDApO2NbZz4+Ml09ZDtiPW94KGNbY1tmPj4yXT4+Ml18MCxjW2g+PjJdfDAsZyl8MDtjWyhjW2Y+PjJdfDApKzEwOD4+Ml09YjtpPWU7cmV0dXJufWZ1bmN0aW9uIEJJKGIpe2I9YnwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MDtvPWk7aT1pKzMyfDA7az1vKzI0fDA7bD1vKzIwfDA7aD1vKzE2fDA7bT1vKzEyfDA7Zz1vKzh8MDtuPW8rNHwwO2Y9bztjW2w+PjJdPWI7Y1ttPj4yXT1jW2NbbD4+Ml0+PjJdO2lmKGFbKGNbbT4+Ml18MCkrNjk+PjBdfDApY1soY1tsPj4yXXwwKSs0MD4+Ml09NztKTShjW2w+PjJdfDApO2lmKChjWyhjW2w+PjJdfDApKzIwPj4yXXwwKSE9NzcwODM3OTIzKXtjW2s+PjJdPTA7bj1jW2s+PjJdfDA7aT1vO3JldHVybiBufDB9aWYoKGNbKGNbbD4+Ml18MCkrMzY+PjJdfDApPj0wPygoZVsoY1tsPj4yXXwwKSsxNDQ+PjFdfDApPj4+OCYxfDApIT0wOjApe2Nbbj4+Ml09MDt4SShjW2w+PjJdfDApO2NbZz4+Ml09Y1soY1tsPj4yXXwwKSs0MD4+Ml0mMjU1O2lmKChjW2c+PjJdfDApPT03fChjW2c+PjJdfDApPT0xMHwoY1tnPj4yXXwwKT09OSliPTE7ZWxzZSBiPShjW2c+PjJdfDApPT0xMztjW2Y+PjJdPWImMTtkbyBpZigoY1tmPj4yXXwwKSE9MD8oKGNbZz4+Ml18MCkhPTk/MTooKGVbKGNbbD4+Ml18MCkrMTQ0Pj4xXXwwKT4+PjcmMXwwKT09MCk6MCl7aWYoKGNbZz4+Ml18MCk9PTd8KGNbZz4+Ml18MCk9PTEzPygoZVsoY1tsPj4yXXwwKSsxNDQ+PjFdfDApPj4+NiYxfDApIT0wOjApe2Nbbj4+Ml09MjticmVha31ZSShjW20+PjJdfDAsNTE2KTtaSShjW20+PjJdfDApO2FbKGNbbT4+Ml18MCkrNjc+PjBdPTE7Y1soY1tsPj4yXXwwKSs0ND4+Ml09MH13aGlsZSgwKTtpZighKGNbKGNbbD4+Ml18MCkrNDA+PjJdfDApKUVJKGNbbD4+Ml18MCwwKXwwO2lmKChjWyhjW20+PjJdfDApKzMxNj4+Ml18MCk+MD8oY1soY1ttPj4yXXwwKSszNDA+PjJdfDApPT0wOjApaj0zNjtlbHNlIGlmKChkWyhjW20+PjJdfDApKzY3Pj4wXXwwKSE9MD8oY1soY1ttPj4yXXwwKSsxNjQ+PjJdfDApPT0oKChlWyhjW2w+PjJdfDApKzE0ND4+MV18MCk+Pj43JjF8MCk9PTB8MCk6MCl7aWYoKGNbKGNbbD4+Ml18MCkrNDA+PjJdfDApIT0wPygoY1tmPj4yXXwwKSE9MD8xOihkWyhjW2w+PjJdfDApKzE0Mj4+MF18MCkhPTMpOjApe1lJKGNbbT4+Ml18MCwwKTtjWyhjW2w+PjJdfDApKzQ0Pj4yXT0wfWVsc2Ugaj0yMztkbyBpZigoanwwKT09MjMpe2NbaD4+Ml09RUkoY1tsPj4yXXwwLDEpfDA7ZG8gaWYoY1toPj4yXXwwKXtpZighKChlWyhjW2w+PjJdfDApKzE0ND4+MV18MCk+Pj43JjEpKXtjW2g+PjJdPTc4NzticmVha31jW2s+PjJdPTE7bj1jW2s+PjJdfDA7aT1vO3JldHVybiBufDB9ZWxzZSBjW2g+PjJdPUtNKGNbbT4+Ml18MCxjW2w+PjJdfDApfDA7d2hpbGUoMCk7aWYoKGNbaD4+Ml18MCk9PTU/KChlWyhjW2w+PjJdfDApKzE0ND4+MV18MCk+Pj43JjF8MCkhPTA6MCl7Y1trPj4yXT01O249Y1trPj4yXXwwO2k9bztyZXR1cm4gbnwwfWlmKGNbaD4+Ml18MCl7Y1soY1tsPj4yXXwwKSs0MD4+Ml09Y1toPj4yXTtZSShjW20+PjJdfDAsMCk7Y1soY1tsPj4yXXwwKSs0ND4+Ml09MDticmVha31lbHNle2c9KGNbbT4+Ml18MCkrNDQwfDA7Y1tnPj4yXT0wO2NbZys0Pj4yXT0wO2c9KGNbbT4+Ml18MCkrNDQ4fDA7Y1tnPj4yXT0wO2NbZys0Pj4yXT0wO2c9KGNbbT4+Ml18MCkrMjR8MDtjW2c+PjJdPWNbZz4+Ml0mLTMzNTU0NDMzO3hqKGNbbT4+Ml18MCk7YnJlYWt9fXdoaWxlKDApO2NbKGNbbT4+Ml18MCkrNDM2Pj4yXT0wfWVsc2Ugaj0zNjtkbyBpZigoanwwKT09MzY/KGNbbj4+Ml18MCk9PTA6MCl7aWYoKGNbKGNbbD4+Ml18MCkrNDA+PjJdfDApIT0wPyhkWyhjW2w+PjJdfDApKzE0Mj4+MF18MCkhPTM6MClpZigoZFsoY1tsPj4yXXwwKSsxNDI+PjBdfDApPT0yKXtjW24+PjJdPTI7YnJlYWt9ZWxzZXtZSShjW20+PjJdfDAsNTE2KTtaSShjW20+PjJdfDApO2FbKGNbbT4+Ml18MCkrNjc+PjBdPTE7Y1soY1tsPj4yXXwwKSs0ND4+Ml09MDticmVha31jW24+PjJdPTF9d2hpbGUoMCk7aWYoKGNbbj4+Ml18MCkhPTA/KGNbaD4+Ml09RkkoY1tsPj4yXXwwLGNbbj4+Ml18MCl8MCwoY1toPj4yXXwwKSE9MCk6MCl7aWYoISgoY1soY1tsPj4yXXwwKSs0MD4+Ml18MCkhPTA/KGNbKGNbbD4+Ml18MCkrNDA+PjJdJjI1NXwwKSE9MTk6MCkpe2NbKGNbbD4+Ml18MCkrNDA+PjJdPWNbaD4+Ml07VGYoY1ttPj4yXXwwLGNbKGNbbD4+Ml18MCkrMTA4Pj4yXXwwKTtjWyhjW2w+PjJdfDApKzEwOD4+Ml09MH1ZSShjW20+PjJdfDAsNTE2KTtaSShjW20+PjJdfDApO2FbKGNbbT4+Ml18MCkrNjc+PjBdPTE7Y1soY1tsPj4yXXwwKSs0ND4+Ml09MH1pZigoZVsoY1tsPj4yXXwwKSsxNDQ+PjFdfDApPj4+NCYxKXtiPWNbbT4+Ml18MDtpZigoY1tuPj4yXXwwKSE9Mil5SShiLGNbKGNbbD4+Ml18MCkrNDQ+PjJdfDApO2Vsc2UgeUkoYiwwKTtjWyhjW2w+PjJdfDApKzQ0Pj4yXT0wfX1pZigoY1soY1tsPj4yXXwwKSszNj4+Ml18MCk+PTApe249KGNbbT4+Ml18MCkrMTU2fDA7Y1tuPj4yXT0oY1tuPj4yXXwwKSstMTtpZighKChlWyhjW2w+PjJdfDApKzE0ND4+MV18MCk+Pj43JjEpKXtuPShjW20+PjJdfDApKzE2NHwwO2Nbbj4+Ml09KGNbbj4+Ml18MCkrLTF9aWYoKGVbKGNbbD4+Ml18MCkrMTQ0Pj4xXXwwKT4+PjgmMSl7bj0oY1ttPj4yXXwwKSsxNjB8MDtjW24+PjJdPShjW24+PjJdfDApKy0xfX1jWyhjW2w+PjJdfDApKzIwPj4yXT04MzIzMTc4MTE7aWYoYVsoY1ttPj4yXXwwKSs2OT4+MF18MCljWyhjW2w+PjJdfDApKzQwPj4yXT03O2Nbaz4+Ml09KGNbKGNbbD4+Ml18MCkrNDA+PjJdfDApPT01PzU6MDtuPWNbaz4+Ml18MDtpPW87cmV0dXJuIG58MH1mdW5jdGlvbiBDSShhLGQpe2E9YXwwO2Q9ZHwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wO2g9aTtpPWkrMTZ8MDtmPWgrMTJ8MDtrPWgrOHwwO2o9aCs0fDA7Zz1oO2Nbaz4+Ml09YTtjW2o+PjJdPWQ7Y1tnPj4yXT0oY1soY1trPj4yXXwwKSs5Mj4+Ml18MCkrKChjWyhjW2o+PjJdfDApKzg+PjJdfDApKjQwfDApO2E9Y1tnPj4yXXwwO2lmKChlWyhjW2c+PjJdfDApKzg+PjFdfDApJjkzMTIpe2NbZj4+Ml09SU0oYSl8MDtrPWNbZj4+Ml18MDtpPWg7cmV0dXJuIGt8MH1lbHNle2JbYSs4Pj4xXT00O2NbZj4+Ml09Y1tnPj4yXTtrPWNbZj4+Ml18MDtpPWg7cmV0dXJuIGt8MH1yZXR1cm4gMH1mdW5jdGlvbiBESShhKXthPWF8MDt2YXIgYj0wLGQ9MCxmPTAsZz0wO2c9aTtpPWkrMTZ8MDtiPWcrOHwwO2Q9Zys0fDA7Zj1nO2NbZD4+Ml09YTtpZighKChlWyhjW2Q+PjJdfDApKzg+PjFdfDApJjE4KSl7Y1tiPj4yXT0wO2E9Y1tiPj4yXXwwO2k9ZztyZXR1cm4gYXwwfWNbZj4+Ml09Y1soY1tkPj4yXXwwKSsxMj4+Ml07aWYoKGVbKGNbZD4+Ml18MCkrOD4+MV18MCkmMTYzODQpY1tmPj4yXT0oY1tmPj4yXXwwKSsoY1tjW2Q+PjJdPj4yXXwwKTtjW2I+PjJdPShjW2Y+PjJdfDApPihjWyhjWyhjW2Q+PjJdfDApKzMyPj4yXXwwKSs5Nj4+Ml18MCkmMTthPWNbYj4+Ml18MDtpPWc7cmV0dXJuIGF8MH1mdW5jdGlvbiBFSShiLGQpe2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTA7bD1pO2k9aSszMnwwO2o9bDtlPWwrMTZ8MDtmPWwrMTJ8MDtnPWwrOHwwO2g9bCs0fDA7Y1tmPj4yXT1iO2NbZz4+Ml09ZDtjW2g+PjJdPWNbY1tmPj4yXT4+Ml07aWYoISgoY1tnPj4yXXwwKSE9MD8oZD0oY1toPj4yXXwwKSs0NDB8MCxiPShjW2g+PjJdfDApKzQ0OHwwLGI9UlIoY1tkPj4yXXwwLGNbZCs0Pj4yXXwwLGNbYj4+Ml18MCxjW2IrND4+Ml18MCl8MCxkPUMsKGR8MCk+MHwoZHwwKT09MCZiPj4+MD4wKTowKSlrPTM7ZG8gaWYoKGt8MCk9PTMpe2lmKChjW2c+PjJdfDApPT0wPyhrPShjW2Y+PjJdfDApKzY0fDAsYj1jW2srND4+Ml18MCwoYnwwKT4wfChifDApPT0wJihjW2s+PjJdfDApPj4+MD4wKTowKWJyZWFrO2NbZT4+Ml09MDtrPWNbZT4+Ml18MDtpPWw7cmV0dXJuIGt8MH13aGlsZSgwKTtjWyhjW2Y+PjJdfDApKzQwPj4yXT03ODc7YVsoY1tmPj4yXXwwKSsxNDI+PjBdPTI7QUkoY1tmPj4yXXwwLDM1MTg5LGopO2NbZT4+Ml09MTtrPWNbZT4+Ml18MDtpPWw7cmV0dXJuIGt8MH1mdW5jdGlvbiBGSShhLGIpe2E9YXwwO2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MDttPWk7aT1pKzMyfDA7ZD1tKzI4fDA7ZT1tKzI0fDA7Zj1tKzIwfDA7az1tKzE2fDA7Zz1tKzEyfDA7aD1tKzh8MDtsPW0rNHwwO2o9bTtjW2Q+PjJdPWE7Y1tlPj4yXT1iO2NbZj4+Ml09Y1tjW2Q+PjJdPj4yXTtjW2s+PjJdPTA7aWYoIShjWyhjW2Y+PjJdfDApKzQzNj4+Ml18MCkpe2w9Y1trPj4yXXwwO2k9bTtyZXR1cm4gbHwwfWlmKCEoY1soY1tkPj4yXXwwKSs0OD4+Ml18MCkpe2w9Y1trPj4yXXwwO2k9bTtyZXR1cm4gbHwwfWNbaD4+Ml09KGNbKGNbZD4+Ml18MCkrNDg+PjJdfDApLTE7Y1tnPj4yXT0wO3doaWxlKDEpe2lmKChjW2c+PjJdfDApPj0oY1soY1tmPj4yXXwwKSsyMD4+Ml18MCkpYnJlYWs7Y1tsPj4yXT0wO2Nbaj4+Ml09Y1soY1soY1tmPj4yXXwwKSsxNj4+Ml18MCkrKGNbZz4+Ml08PDQpKzQ+PjJdO2lmKGNbaj4+Ml18MCl7aWYoKGNbZT4+Ml18MCk9PTIpY1tsPj4yXT1YSShjW2o+PjJdfDAsMixjW2g+PjJdfDApfDA7aWYoIShjW2w+PjJdfDApKWNbbD4+Ml09WEkoY1tqPj4yXXwwLDEsY1toPj4yXXwwKXwwO2lmKCEoY1trPj4yXXwwKSljW2s+PjJdPWNbbD4+Ml19Y1tnPj4yXT0oY1tnPj4yXXwwKSsxfWw9KGNbZj4+Ml18MCkrNDM2fDA7Y1tsPj4yXT0oY1tsPj4yXXwwKSstMTtjWyhjW2Q+PjJdfDApKzQ4Pj4yXT0wO2lmKCEoY1trPj4yXXwwKSl7aWYoKGNbZT4+Ml18MCk9PTIpY1trPj4yXT1WSShjW2Y+PjJdfDAsMixjW2g+PjJdfDApfDA7aWYoIShjW2s+PjJdfDApKWNbaz4+Ml09VkkoY1tmPj4yXXwwLDEsY1toPj4yXXwwKXwwfWlmKChjW2U+PjJdfDApIT0yKXtsPWNbaz4+Ml18MDtpPW07cmV0dXJuIGx8MH1sPShjW2Q+PjJdfDApKzcyfDA7aj1jW2wrND4+Ml18MDthPShjW2Y+PjJdfDApKzQ0MHwwO2NbYT4+Ml09Y1tsPj4yXTtjW2ErND4+Ml09ajthPShjW2Q+PjJdfDApKzgwfDA7aj1jW2ErND4+Ml18MDtsPShjW2Y+PjJdfDApKzQ0OHwwO2NbbD4+Ml09Y1thPj4yXTtjW2wrND4+Ml09ajtsPWNbaz4+Ml18MDtpPW07cmV0dXJuIGx8MH1mdW5jdGlvbiBHSShhKXthPWF8MDt2YXIgYj0wLGQ9MCxmPTA7Zj1pO2k9aSsxNnwwO2I9Zis0fDA7ZD1mO2NbZD4+Ml09YTtpZigoKGVbKGNbZD4+Ml18MCkrOD4+MV18MCkmNTE0fDApIT0yKXtjW2I+PjJdPTA7YT1jW2I+PjJdfDA7aT1mO3JldHVybiBhfDB9ZWxzZXtjW2I+PjJdPUhNKGNbZD4+Ml18MCl8MDthPWNbYj4+Ml18MDtpPWY7cmV0dXJuIGF8MH1yZXR1cm4gMH1mdW5jdGlvbiBISShhKXthPWF8MDt2YXIgZD0wLGY9MCxnPTA7Zz1pO2k9aSsxNnwwO2Q9Zys0fDA7Zj1nO2NbZj4+Ml09YTthPWVbKGNbZj4+Ml18MCkrOD4+MV18MDtkbyBpZighKChlWyhjW2Y+PjJdfDApKzg+PjFdfDApJjEyKSlpZihhJjE4KXtiW2Q+PjFdPUdNKGNbZj4+Ml18MCl8MDticmVha31lbHNle2JbZD4+MV09MDticmVha31lbHNlIGJbZD4+MV09YSYxMjt3aGlsZSgwKTtpPWc7cmV0dXJuIGJbZD4+MV18MH1mdW5jdGlvbiBJSShhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wO2o9aTtpPWkrMzJ8MDtlPWorMjB8MDtmPWorMTZ8MDtnPWorOHwwO2g9ajtjW2Y+PjJdPWE7az1nO2Nbaz4+Ml09YjtjW2srND4+Ml09ZDtiPWNbZj4+Ml18MDtrPWNbYis0Pj4yXXwwO2E9aDtjW2E+PjJdPWNbYj4+Ml07Y1thKzQ+PjJdPWs7YT1nO2s9Y1thKzQ+PjJdfDA7Yj1oO2Q9Y1tiKzQ+PjJdfDA7aWYoKGt8MCk+MHwoa3wwKT09MCYoY1thPj4yXXwwKT4+PjA+PTApe2lmKChkfDApPjB8KGR8MCk9PTAmKGNbYj4+Ml18MCk+Pj4wPjA/KGgsaD1RUigtMSwyMTQ3NDgzNjQ3LGNbaD4+Ml18MCxjW2grND4+Ml18MCl8MCxkPUMsaz1nLGE9Y1trKzQ+PjJdfDAsKGR8MCk8KGF8MCl8KChkfDApPT0oYXwwKT9oPj4+MDwoY1trPj4yXXwwKT4+PjA6MCkpOjApe2NbZT4+Ml09MTtrPWNbZT4+Ml18MDtpPWo7cmV0dXJuIGt8MH19ZWxzZSBpZigoZHwwKTwwPyhoLGg9UlIoY1toPj4yXXwwLGNbaCs0Pj4yXXwwLC0xLDIxNDc0ODM2NDcpfDAsaD1RUigwLDAsaHwwLEN8MCl8MCxkPUMsaz1nLGs9UlIoY1trPj4yXXwwLGNbays0Pj4yXXwwLDEsMCl8MCxhPUMsKGR8MCk+KGF8MCl8KGR8MCk9PShhfDApJmg+Pj4wPms+Pj4wKTowKXtjW2U+PjJdPTE7az1jW2U+PjJdfDA7aT1qO3JldHVybiBrfDB9aD1nO2s9Y1tmPj4yXXwwO2c9aztoPVJSKGNbZz4+Ml18MCxjW2crND4+Ml18MCxjW2g+PjJdfDAsY1toKzQ+PjJdfDApfDA7Y1trPj4yXT1oO2Nbays0Pj4yXT1DO2NbZT4+Ml09MDtrPWNbZT4+Ml18MDtpPWo7cmV0dXJuIGt8MH1mdW5jdGlvbiBKSShhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MDtoPWk7aT1pKzE2fDA7ZT1oKzEyfDA7Zj1oKzh8MDtnPWg7Y1tmPj4yXT1hO2E9ZztjW2E+PjJdPWI7Y1thKzQ+PjJdPWQ7YT1nO2I9Y1tmPj4yXXwwO2lmKCEoKGNbYT4+Ml18MCk9PTA/KGNbYSs0Pj4yXXwwKT09LTIxNDc0ODM2NDg6MCkpe2c9UVIoMCwwLGNbZz4+Ml18MCxjW2crND4+Ml18MCl8MDtjW2U+PjJdPUlJKGIsZyxDKXwwO2c9Y1tlPj4yXXwwO2k9aDtyZXR1cm4gZ3wwfWE9YjtkPWNbYSs0Pj4yXXwwO2lmKChkfDApPjB8KGR8MCk9PTAmKGNbYT4+Ml18MCk+Pj4wPj0wKXtjW2U+PjJdPTE7Zz1jW2U+PjJdfDA7aT1oO3JldHVybiBnfDB9ZWxzZXthPWc7Zz1jW2Y+PjJdfDA7Zj1nO2Y9UVIoY1tmPj4yXXwwLGNbZis0Pj4yXXwwLGNbYT4+Ml18MCxjW2ErND4+Ml18MCl8MDtjW2c+PjJdPWY7Y1tnKzQ+PjJdPUM7Y1tlPj4yXT0wO2c9Y1tlPj4yXXwwO2k9aDtyZXR1cm4gZ3wwfXJldHVybiAwfWZ1bmN0aW9uIEtJKGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTA7aj1pO2k9aSszMnwwO2U9aisyMHwwO2Y9aisxNnwwO2c9ais4fDA7aD1qO2NbZj4+Ml09YTthPWc7Y1thPj4yXT1iO2NbYSs0Pj4yXT1kO2I9Y1tmPj4yXXwwO2Q9Y1tiKzQ+PjJdfDA7YT1oO2NbYT4+Ml09Y1tiPj4yXTtjW2ErND4+Ml09ZDthPWc7ZD1jW2ErND4+Ml18MDtkbyBpZigoZHwwKT4wfChkfDApPT0wJihjW2E+PjJdfDApPj4+MD4wKXtrPWg7ZD1jW2s+PjJdfDA7az1jW2srND4+Ml18MDthPWc7YT1fUigtMSwyMTQ3NDgzNjQ3LGNbYT4+Ml18MCxjW2ErND4+Ml18MCl8MDtiPUM7aWYoKGt8MCk+KGJ8MCl8KGt8MCk9PShifDApJmQ+Pj4wPmE+Pj4wKXtjW2U+PjJdPTE7az1jW2U+PjJdfDA7aT1qO3JldHVybiBrfDB9Yj1oO2E9Y1tiPj4yXXwwO2I9Y1tiKzQ+PjJdfDA7az1nO2s9X1IoMCwtMjE0NzQ4MzY0OCxjW2s+PjJdfDAsY1trKzQ+PjJdfDApfDA7ZD1DO2lmKChifDApPChkfDApfChifDApPT0oZHwwKSZhPj4+MDxrPj4+MCl7Y1tlPj4yXT0xO2s9Y1tlPj4yXXwwO2k9ajtyZXR1cm4ga3wwfX1lbHNlIGlmKChjW2crND4+Ml18MCk8MCl7az1oO2E9Y1trKzQ+PjJdfDA7aWYoKGF8MCk+MHwoYXwwKT09MCYoY1trPj4yXXwwKT4+PjA+MCl7Yj1nO2E9Y1tiPj4yXXwwO2I9Y1tiKzQ+PjJdfDA7az1oO2s9X1IoMCwtMjE0NzQ4MzY0OCxjW2s+PjJdfDAsY1trKzQ+PjJdfDApfDA7ZD1DO2lmKCEoKGJ8MCk8KGR8MCl8KGJ8MCk9PShkfDApJmE+Pj4wPGs+Pj4wKSlicmVhaztjW2U+PjJdPTE7az1jW2U+PjJdfDA7aT1qO3JldHVybiBrfDB9aWYoKGNbaCs0Pj4yXXwwKTwwKXtrPWc7aWYoKGNbaz4+Ml18MCk9PTA/KGNbays0Pj4yXXwwKT09LTIxNDc0ODM2NDg6MCl7Y1tlPj4yXT0xO2s9Y1tlPj4yXXwwO2k9ajtyZXR1cm4ga3wwfWs9aDtpZigoY1trPj4yXXwwKT09MD8oY1trKzQ+PjJdfDApPT0tMjE0NzQ4MzY0ODowKXtjW2U+PjJdPTE7az1jW2U+PjJdfDA7aT1qO3JldHVybiBrfDB9YT1oO2E9UVIoMCwwLGNbYT4+Ml18MCxjW2ErND4+Ml18MCl8MDtiPUM7az1nO2s9UVIoMCwwLGNbaz4+Ml18MCxjW2srND4+Ml18MCl8MDtrPV9SKC0xLDIxNDc0ODM2NDcsa3wwLEN8MCl8MDtkPUM7aWYoKGJ8MCk+KGR8MCl8KGJ8MCk9PShkfDApJmE+Pj4wPms+Pj4wKXtjW2U+PjJdPTE7az1jW2U+PjJdfDA7aT1qO3JldHVybiBrfDB9fX13aGlsZSgwKTtrPWg7YT1nO2E9YVMoY1trPj4yXXwwLGNbays0Pj4yXXwwLGNbYT4+Ml18MCxjW2ErND4+Ml18MCl8MDtrPWNbZj4+Ml18MDtjW2s+PjJdPWE7Y1trKzQ+PjJdPUM7Y1tlPj4yXT0wO2s9Y1tlPj4yXXwwO2k9ajtyZXR1cm4ga3wwfWZ1bmN0aW9uIExJKGEsYixkLGUpe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MDtsPWk7aT1pKzMyfDA7Zj1sKzE2fDA7Zz1sKzEyfDA7aD1sKzh8MDtqPWwrNHwwO2s9bDtjW2Y+PjJdPWE7Y1tnPj4yXT1iO2NbaD4+Ml09ZDtjW2o+PjJdPWU7YTp3aGlsZSgxKXtpZighKGNbY1tnPj4yXT4+Ml18MCkpYnJlYWs7Y1trPj4yXT1jW2NbZz4+Ml0+PjJdO2RvIGlmKChjW2g+PjJdfDApPj0wKXtpZigoY1tjW2s+PjJdPj4yXXwwKT09KGNbaD4+Ml18MCkpe2lmKChjWyhjW2s+PjJdfDApKzQ+PjJdfDApPjMxKWJyZWFrO2lmKCEoY1tqPj4yXSYxPDxjWyhjW2s+PjJdfDApKzQ+PjJdKSlicmVha31jW2c+PjJdPShjW2s+PjJdfDApKzE2O2NvbnRpbnVlIGF9d2hpbGUoMCk7aWYoY1soY1trPj4yXXwwKSsxMj4+Ml18MClRYltjWyhjW2s+PjJdfDApKzEyPj4yXSYyNTVdKGNbKGNbaz4+Ml18MCkrOD4+Ml18MCk7Y1tjW2c+PjJdPj4yXT1jWyhjW2s+PjJdfDApKzE2Pj4yXTtUZihjW2Y+PjJdfDAsY1trPj4yXXwwKX1pPWw7cmV0dXJufWZ1bmN0aW9uIE1JKGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZj0wLGc9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MDtvPWk7aT1pKzMyfDA7Zj1vKzI0fDA7Zz1vKzIwfDA7aj1vKzE2fDA7az1vKzEyfDA7bT1vKzh8MDtuPW8rNHwwO2w9bztjW2c+PjJdPWE7Y1tqPj4yXT1iO2Nbaz4+Ml09ZDtjW20+PjJdPWVbKGNbZz4+Ml18MCkrOD4+MV07Y1tuPj4yXT1lWyhjW2o+PjJdfDApKzg+PjFdO2NbbD4+Ml09Y1ttPj4yXXxjW24+PjJdO2RvIGlmKCEoY1tsPj4yXSYxKSl7aWYoIShjW2w+PjJdJjEyKSl7aWYoY1tsPj4yXSYyKXtpZighKGNbbT4+Ml0mMikpe2NbZj4+Ml09MTticmVha31pZighKGNbbj4+Ml0mMikpe2NbZj4+Ml09LTE7YnJlYWt9aWYoY1trPj4yXXwwKXtjW2Y+PjJdPWdHKGNbZz4+Ml18MCxjW2o+PjJdfDAsY1trPj4yXXwwLDApfDA7YnJlYWt9fWNbZj4+Ml09Rk0oY1tnPj4yXXwwLGNbaj4+Ml18MCl8MDticmVha31pZihjW20+PjJdJmNbbj4+Ml0mNCl7YT1jW2c+PjJdfDA7bj1jW2ErND4+Ml18MDtiPWNbaj4+Ml18MDtkPWNbYis0Pj4yXXwwO2lmKChufDApPChkfDApfCgobnwwKT09KGR8MCk/KGNbYT4+Ml18MCk+Pj4wPChjW2I+PjJdfDApPj4+MDowKSl7Y1tmPj4yXT0tMTticmVha31hPWNbZz4+Ml18MDtuPWNbYSs0Pj4yXXwwO2I9Y1tqPj4yXXwwO2Q9Y1tiKzQ+PjJdfDA7aWYoKG58MCk+KGR8MCl8KChufDApPT0oZHwwKT8oY1thPj4yXXwwKT4+PjA+KGNbYj4+Ml18MCk+Pj4wOjApKXtjW2Y+PjJdPTE7YnJlYWt9ZWxzZXtjW2Y+PjJdPTA7YnJlYWt9fWlmKGNbbT4+Ml0mY1tuPj4yXSY4KXtpZigraFtjW2c+PjJdPj4zXTwraFtjW2o+PjJdPj4zXSl7Y1tmPj4yXT0tMTticmVha31pZigraFtjW2c+PjJdPj4zXT4raFtjW2o+PjJdPj4zXSl7Y1tmPj4yXT0xO2JyZWFrfWVsc2V7Y1tmPj4yXT0wO2JyZWFrfX1pZihjW20+PjJdJjQpaWYoY1tuPj4yXSY4KXtiPWNbZz4+Ml18MDtjW2Y+PjJdPWVHKGNbYj4+Ml18MCxjW2IrND4+Ml18MCwraFtjW2o+PjJdPj4zXSl8MDticmVha31lbHNle2NbZj4+Ml09LTE7YnJlYWt9aWYoIShjW20+PjJdJjgpKXtjW2Y+PjJdPTE7YnJlYWt9aWYoY1tuPj4yXSY0KXtiPWNbaj4+Ml18MDtjW2Y+PjJdPTAtKGVHKGNbYj4+Ml18MCxjW2IrND4+Ml18MCwraFtjW2c+PjJdPj4zXSl8MCk7YnJlYWt9ZWxzZXtjW2Y+PjJdPS0xO2JyZWFrfX1lbHNlIGNbZj4+Ml09KGNbbj4+Ml0mMSktKGNbbT4+Ml0mMSk7d2hpbGUoMCk7aT1vO3JldHVybiBjW2Y+PjJdfDB9ZnVuY3Rpb24gTkkoYixlKXtiPWJ8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTA7bD1pO2k9aSszMnwwO2Y9bCsxNnwwO2c9bCsxMnwwO2g9bCs4fDA7az1sKzR8MDtqPWw7Y1tnPj4yXT1iO2NbaD4+Ml09ZTtjW2s+PjJdPWNbY1tnPj4yXT4+Ml07ZG8gaWYoIShkW2Nbaz4+Ml0+PjBdfDApKXtlPWNbaz4+Ml18MDtpZighKGFbKGNbaz4+Ml18MCkrMz4+MF18MCkpe2lmKCEoVUwoY1tlKzE2Pj4yXXwwKXwwKSlicmVhaztjW2Y+PjJdPVZMKGNbaz4+Ml18MCl8MDtrPWNbZj4+Ml18MDtpPWw7cmV0dXJuIGt8MH1pZigoY1tlKzUyPj4yXXwwKSE9MD8oYj1jWyhjWyhjW2s+PjJdfDApKzUyPj4yXXwwKSsoMSsoY1tjW2g+PjJdPj4yXXwwKTw8Mik+PjJdfDAsY1tqPj4yXT1iLChifDApPjApOjApe2NbY1tnPj4yXT4+Ml09Y1soY1trPj4yXXwwKSs0OD4+Ml07Y1tjW2g+PjJdPj4yXT0oY1tqPj4yXXwwKS0xO2NbZj4+Ml09MDtrPWNbZj4+Ml18MDtpPWw7cmV0dXJuIGt8MH1jW2Y+PjJdPUVNKGNbaz4+Ml18MCl8MDtrPWNbZj4+Ml18MDtpPWw7cmV0dXJuIGt8MH13aGlsZSgwKTtjW2Y+PjJdPTA7az1jW2Y+PjJdfDA7aT1sO3JldHVybiBrfDB9ZnVuY3Rpb24gT0koYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTA7ZD1pO2k9aSsxNnwwO2Y9ZCs0fDA7ZT1kO2NbZj4+Ml09YTtjW2U+PjJdPWI7YT1ETShjW2Y+PjJdfDAsY1tlPj4yXXwwKXwwO2k9ZDtyZXR1cm4gYXwwfWZ1bmN0aW9uIFBJKGEsZCxlLGYsZyl7YT1hfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7dmFyIGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wO3A9aTtpPWkrMzJ8MDtoPXArMjh8MDtqPXArMjR8MDtrPXArMjB8MDtsPXArMTZ8MDttPXArMTJ8MDtvPXArOHwwO3E9cCs0fDA7bj1wO2NbaD4+Ml09YTtjW2o+PjJdPWQ7Y1trPj4yXT1lO2NbbD4+Ml09ZjtjW20+PjJdPWc7Y1txPj4yXT0wO2Nbbj4+Ml09MDtjW28+PjJdPU9JKGNbaD4+Ml18MCxxKXwwO2lmKCgoY1tqPj4yXXwwKSsoY1trPj4yXXwwKXwwKT4+PjA8PShjW3E+PjJdfDApPj4+MCl7Y1soY1ttPj4yXXwwKSsxNj4+Ml09KGNbbz4+Ml18MCkrKGNbaj4+Ml18MCk7YlsoY1ttPj4yXXwwKSs4Pj4xXT00MTEyO2NbKGNbbT4+Ml18MCkrMTI+PjJdPWNbaz4+Ml07cT1jW24+PjJdfDA7aT1wO3JldHVybiBxfDB9ZWxzZXtjW24+PjJdPUNNKGNbaD4+Ml18MCxjW2o+PjJdfDAsY1trPj4yXXwwLGNbbD4+Ml18MCxjW20+PjJdfDApfDA7cT1jW24+PjJdfDA7aT1wO3JldHVybiBxfDB9cmV0dXJuIDB9ZnVuY3Rpb24gUUkoYil7Yj1ifDA7dmFyIGM9MCxlPTA7ZT1pO2k9aSsxNnwwO2M9ZTthW2M+PjBdPWI7aT1lO3JldHVybiBhWzM1MDYxKyhkW2M+PjBdfDApPj4wXXwwfWZ1bmN0aW9uIFJJKGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTA7bz1pO2k9aSs0OHwwO249byszNnwwO2Y9byszMnwwO2s9bysyOHwwO2o9bysyNHwwO2c9bysyMHwwO2g9bysxNnwwO2w9bys4fDA7bT1vO2NbZj4+Ml09YTtjW2s+PjJdPWI7Y1tqPj4yXT1kO2NbZz4+Ml09ZVsoY1tmPj4yXXwwKSs4Pj4xXTtpZihjW2c+PjJdJjEpe2NbY1tqPj4yXT4+Ml09MDtjW24+PjJdPTA7bj1jW24+PjJdfDA7aT1vO3JldHVybiBufDB9aWYoIShjW2c+PjJdJjQpKXtpZihjW2c+PjJdJjgpe2NbY1tqPj4yXT4+Ml09ODtjW24+PjJdPTc7bj1jW24+PjJdfDA7aT1vO3JldHVybiBufDB9Y1toPj4yXT1jWyhjW2Y+PjJdfDApKzEyPj4yXTtpZihjW2c+PjJdJjE2Mzg0KWNbaD4+Ml09KGNbaD4+Ml18MCkrKGNbY1tmPj4yXT4+Ml18MCk7Y1tjW2o+PjJdPj4yXT1jW2g+PjJdO2Nbbj4+Ml09KGNbaD4+Ml08PDEpKzEyKygoY1tnPj4yXSYyfDApIT0wJjEpO249Y1tuPj4yXXwwO2k9bztyZXR1cm4gbnwwfWE9Y1tmPj4yXXwwO2Y9Y1thKzQ+PjJdfDA7Yj1sO2NbYj4+Ml09Y1thPj4yXTtjW2IrND4+Ml09ZjtiPWw7Zj1jW2I+PjJdfDA7Yj1jW2IrND4+Ml18MDtpZigoY1tsKzQ+PjJdfDApPDApe2E9bTtjW2E+PjJdPX5mO2NbYSs0Pj4yXT1+Yn1lbHNle2E9bTtjW2E+PjJdPWY7Y1thKzQ+PjJdPWJ9YT1tO2Q9Y1thKzQ+PjJdfDA7aWYoZD4+PjA8MHwoZHwwKT09MCYoY1thPj4yXXwwKT4+PjA8PTEyNyl7YT1sO2Y9Y1tqPj4yXXwwO2lmKCgwPT0oY1thKzQ+PjJdfDApPyhjW2w+PjJdJjF8MCk9PShjW2E+PjJdfDApOjApJihjW2s+PjJdfDApPj00KXtjW2Y+PjJdPTA7Y1tuPj4yXT04KyhjW20+PjJdfDApO249Y1tuPj4yXXwwO2k9bztyZXR1cm4gbnwwfWVsc2V7Y1tmPj4yXT0xO2Nbbj4+Ml09MTtuPWNbbj4+Ml18MDtpPW87cmV0dXJuIG58MH19bD1tO2s9Y1tsKzQ+PjJdfDA7aWYoaz4+PjA8MHwoa3wwKT09MCYoY1tsPj4yXXwwKT4+PjA8PTMyNzY3KXtjW2Nbaj4+Ml0+PjJdPTI7Y1tuPj4yXT0yO249Y1tuPj4yXXwwO2k9bztyZXR1cm4gbnwwfWw9bTtrPWNbbCs0Pj4yXXwwO2lmKGs+Pj4wPDB8KGt8MCk9PTAmKGNbbD4+Ml18MCk+Pj4wPD04Mzg4NjA3KXtjW2Nbaj4+Ml0+PjJdPTM7Y1tuPj4yXT0zO249Y1tuPj4yXXwwO2k9bztyZXR1cm4gbnwwfWw9bTtrPWNbbCs0Pj4yXXwwO2lmKGs+Pj4wPDB8KGt8MCk9PTAmKGNbbD4+Ml18MCk+Pj4wPD0yMTQ3NDgzNjQ3KXtjW2Nbaj4+Ml0+PjJdPTQ7Y1tuPj4yXT00O249Y1tuPj4yXXwwO2k9bztyZXR1cm4gbnwwfWw9Y1ttKzQ+PjJdfDA7Zj1jW2o+PjJdfDA7aWYobD4+PjA8MzI3Njd8KGx8MCk9PTMyNzY3JihjW20+PjJdfDApPj4+MDw9NDI5NDk2NzI5NSl7Y1tmPj4yXT02O2Nbbj4+Ml09NTtuPWNbbj4+Ml18MDtpPW87cmV0dXJuIG58MH1lbHNle2NbZj4+Ml09ODtjW24+PjJdPTY7bj1jW24+PjJdfDA7aT1vO3JldHVybiBufDB9cmV0dXJuIDB9ZnVuY3Rpb24gU0koYixkLGUpe2I9YnwwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wO2o9aTtpPWkrMTZ8MDtmPWorMTJ8MDtnPWorOHwwO2g9ajtjW2c+PjJdPWI7Yj1oO2NbYj4+Ml09ZDtjW2IrND4+Ml09ZTtiPWg7az1jW2IrND4+Ml18MDtlPWg7ZD1jW2U+PjJdfDA7ZT1jW2UrND4+Ml18MDtpZihrPj4+MDwwfChrfDApPT0wJihjW2I+PjJdfDApPj4+MDw9MTI3KXthW2NbZz4+Ml0+PjBdPWQmMTI3O2NbZj4+Ml09MTtrPWNbZj4+Ml18MDtpPWo7cmV0dXJuIGt8MH1pZihlPj4+MDwwfChlfDApPT0wJmQ+Pj4wPD0xNjM4Myl7az1oO2s9U1IoY1trPj4yXXwwLGNbays0Pj4yXXwwLDcpfDA7YVtjW2c+PjJdPj4wXT1rJjEyN3wxMjg7YVsoY1tnPj4yXXwwKSsxPj4wXT1jW2g+PjJdJjEyNztjW2Y+PjJdPTI7az1jW2Y+PjJdfDA7aT1qO3JldHVybiBrfDB9ZWxzZXtrPWg7Y1tmPj4yXT1CTShjW2c+PjJdfDAsY1trPj4yXXwwLGNbays0Pj4yXXwwKXwwO2s9Y1tmPj4yXXwwO2k9ajtyZXR1cm4ga3wwfXJldHVybiAwfWZ1bmN0aW9uIFRJKGIsZSxmKXtiPWJ8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MDtvPWk7aT1pKzMyfDA7Zz1vKzI4fDA7aD1vKzI0fDA7aj1vKzIwfDA7az1vKzE2fDA7bT1vKzEyfDA7bj1vO2w9bys4fDA7Y1toPj4yXT1iO2Nbaj4+Ml09ZTtjW2s+PjJdPWY7Yj1jW2s+PjJdfDA7aWYoKGNbaz4+Ml18MCk+Pj4wPD03JihjW2s+PjJdfDApPj4+MD4wKXtpZigoYnwwKT09Nyl7aj1jW2o+PjJdfDA7Y1tuPj4yXT1jW2o+PjJdO2Nbbis0Pj4yXT1jW2orND4+Ml19ZWxzZXtlPWNbaj4+Ml18MDtmPWNbZSs0Pj4yXXwwO2o9bjtjW2o+PjJdPWNbZT4+Ml07Y1tqKzQ+PjJdPWZ9az1kWzM1MDYxKyhjW2s+PjJdfDApPj4wXXwwO2NbbD4+Ml09aztjW20+PjJdPWs7ZG97az1jW24+PjJdJjI1NTtqPShjW2w+PjJdfDApKy0xfDA7Y1tsPj4yXT1qO2FbKGNbaD4+Ml18MCkraj4+MF09aztqPW47aj1TUihjW2o+PjJdfDAsY1tqKzQ+PjJdfDAsOCl8MDtrPW47Y1trPj4yXT1qO2Nbays0Pj4yXT1DfXdoaWxlKChjW2w+PjJdfDApIT0wKTtjW2c+PjJdPWNbbT4+Ml07bj1jW2c+PjJdfDA7aT1vO3JldHVybiBufDB9ZWxzZXtpZihiPj4+MDwxMil7Y1tnPj4yXT0wO249Y1tnPj4yXXwwO2k9bztyZXR1cm4gbnwwfWNbbT4+Ml09Y1soY1tqPj4yXXwwKSsxMj4+Ml07aWYoKGNbbT4+Ml18MCk+Pj4wPjApVFIoY1toPj4yXXwwLGNbKGNbaj4+Ml18MCkrMTY+PjJdfDAsY1ttPj4yXXwwKXwwO2NbZz4+Ml09Y1ttPj4yXTtuPWNbZz4+Ml18MDtpPW87cmV0dXJuIG58MH1yZXR1cm4gMH1mdW5jdGlvbiBVSShmLGcpe2Y9ZnwwO2c9Z3wwO3ZhciBoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wO3A9aTtpPWkrMzJ8MDtrPXArMjh8MDtsPXArMjR8MDttPXArMjB8MDtuPXA7bz1wKzE2fDA7aD1wKzEyfDA7aj1wKzh8MDtjW2w+PjJdPWY7Y1ttPj4yXT1nO2c9bjtjW2c+PjJdPTA7Y1tnKzQ+PjJdPTA7aWYoIShjWyhjW2w+PjJdfDApKzUyPj4yXXwwKSl7bz1jW20+PjJdfDA7Y1tvPj4yXT0wO2Nbbys0Pj4yXT0wO2Nbaz4+Ml09MDtvPWNbaz4+Ml18MDtpPXA7cmV0dXJuIG98MH1jW28+PjJdPVFGKGNbbD4+Ml18MCl8MDthOndoaWxlKDEpe2lmKGNbbz4+Ml18MCl7Zj0xNjticmVha31jW2o+PjJdPWNbKGNbbD4+Ml18MCkrMTIwKyhhWyhjW2w+PjJdfDApKzY4Pj4wXTw8Mik+PjJdO2lmKCEoKGRbKGNbaj4+Ml18MCkrND4+MF18MCk9PTA/KGFbKGNbaj4+Ml18MCkrMj4+MF18MCkhPTA6MCkpe2Y9bjtmPVJSKGNbZj4+Ml18MCxjW2YrND4+Ml18MCxlWyhjW2o+PjJdfDApKzE4Pj4xXXwwLDApfDA7Zz1uO2NbZz4+Ml09ZjtjW2crND4+Ml09Q31pZihhWyhjW2o+PjJdfDApKzQ+PjBdfDApe2Rve2lmKCEoYVsoY1tsPj4yXXwwKSs2OD4+MF18MCkpe2Y9MTA7YnJlYWsgYX1IRihjW2w+PjJdfDApfXdoaWxlKChlWyhjW2w+PjJdfDApKzgwKyhhWyhjW2w+PjJdfDApKzY4Pj4wXTw8MSk+PjFdfDApPj0oZVsoY1soY1tsPj4yXXwwKSsxMjArKGFbKGNbbD4+Ml18MCkrNjg+PjBdPDwyKT4+Ml18MCkrMTg+PjFdfDApKTtnPShjW2w+PjJdfDApKzgwKyhhWyhjW2w+PjJdfDApKzY4Pj4wXTw8MSl8MDtiW2c+PjFdPShiW2c+PjFdfDApKzE8PDE2Pj4xNjtjW2o+PjJdPWNbKGNbbD4+Ml18MCkrMTIwKyhhWyhjW2w+PjJdfDApKzY4Pj4wXTw8Mik+PjJdfWNbaD4+Ml09ZVsoY1tsPj4yXXwwKSs4MCsoYVsoY1tsPj4yXXwwKSs2OD4+MF08PDEpPj4xXTtmPWNbbD4+Ml18MDtnPWNbaj4+Ml18MDtpZigoY1toPj4yXXwwKT09KGVbKGNbaj4+Ml18MCkrMTg+PjFdfDApKXtjW28+PjJdPUZGKGYsZ3IoKGNbKGNbaj4+Ml18MCkrNTY+PjJdfDApKygoZFtnKzU+PjBdfDApKzgpfDApfDApfDA7Y29udGludWV9ZWxzZXtjW28+PjJdPUZGKGYsZ3IoKGNbZys1Nj4+Ml18MCkrKGVbKGNbaj4+Ml18MCkrMjA+PjFdJihkWyhjWyhjW2o+PjJdfDApKzY0Pj4yXXwwKSsoY1toPj4yXTw8MSk+PjBdPDw4fGRbKGNbKGNbaj4+Ml18MCkrNjQ+PjJdfDApKyhjW2g+PjJdPDwxKSsxPj4wXSkpfDApfDApfDA7Y29udGludWV9fWlmKChmfDApPT0xMCl7aj1uO249Y1tqKzQ+PjJdfDA7bz1jW20+PjJdfDA7Y1tvPj4yXT1jW2o+PjJdO2Nbbys0Pj4yXT1uO2Nbaz4+Ml09UUYoY1tsPj4yXXwwKXwwO289Y1trPj4yXXwwO2k9cDtyZXR1cm4gb3wwfWVsc2UgaWYoKGZ8MCk9PTE2KXtjW2s+PjJdPWNbbz4+Ml07bz1jW2s+PjJdfDA7aT1wO3JldHVybiBvfDB9cmV0dXJuIDB9ZnVuY3Rpb24gVkkoYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MDtuPWk7aT1pKzMyfDA7ZT1uKzI4fDA7Zj1uKzI0fDA7Zz1uKzIwfDA7bT1uKzE2fDA7aD1uKzEyfDA7az1uKzh8MDtqPW4rNHwwO2w9bjtjW2U+PjJdPWE7Y1tmPj4yXT1iO2NbZz4+Ml09ZDtjW20+PjJdPTA7aWYoIShjWyhjW2U+PjJdfDApKzM0MD4+Ml18MCkpe209Y1ttPj4yXXwwO2k9bjtyZXR1cm4gbXwwfWNbaD4+Ml09MDt3aGlsZSgxKXtpZihjW20+PjJdfDApe2U9MTU7YnJlYWt9aWYoKGNbaD4+Ml18MCk+PShjWyhjW2U+PjJdfDApKzMxNj4+Ml18MCkpe2U9MTU7YnJlYWt9Y1trPj4yXT1jWyhjWyhjW2U+PjJdfDApKzM0MD4+Ml18MCkrKGNbaD4+Ml08PDIpPj4yXTtjW2o+PjJdPWNbY1soY1trPj4yXXwwKSs0Pj4yXT4+Ml07aWYoKGNbKGNbaz4+Ml18MCkrOD4+Ml18MCkhPTA/KGNbY1tqPj4yXT4+Ml18MCk+PTI6MCl7c3dpdGNoKGNbZj4+Ml18MCl7Y2FzZSAwOntjW2w+PjJdPWNbKGNbaj4+Ml18MCkrODA+PjJdO2NbKGNbaz4+Ml18MCkrMjA+PjJdPShjW2c+PjJdfDApKzE7YnJlYWt9Y2FzZSAyOntjW2w+PjJdPWNbKGNbaj4+Ml18MCkrODg+PjJdO2JyZWFrfWRlZmF1bHQ6Y1tsPj4yXT1jWyhjW2o+PjJdfDApKzg0Pj4yXX1pZigoY1tsPj4yXXwwKSE9MD8oY1soY1trPj4yXXwwKSsyMD4+Ml18MCk+KGNbZz4+Ml18MCk6MCljW20+PjJdPVliW2NbbD4+Ml0mMjU1XShjWyhjW2s+PjJdfDApKzg+PjJdfDAsY1tnPj4yXXwwKXwwfWNbaD4+Ml09KGNbaD4+Ml18MCkrMX1pZigoZXwwKT09MTUpe209Y1ttPj4yXXwwO2k9bjtyZXR1cm4gbXwwfXJldHVybiAwfWZ1bmN0aW9uIFdJKGIsZSxmKXtiPWJ8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MDtvPWk7aT1pKzMyfDA7Zz1vKzIwfDA7aD1vKzE2fDA7aj1vKzEyfDA7bD1vKzh8MDttPW8rNHwwO2s9bztjW2c+PjJdPWI7Y1toPj4yXT1lO2Nbaj4+Ml09ZjtjW20+PjJdPTA7aWYoIShjW2c+PjJdfDApKXtuPWNbbT4+Ml18MDtpPW87cmV0dXJuIG58MH1tZyhjW2c+PjJdfDApO2NbbD4+Ml09Y1soY1soY1tnPj4yXXwwKSs0Pj4yXXwwKSs4Pj4yXTthOndoaWxlKDEpe2lmKCEoY1tsPj4yXXwwKSl7bj0xNTticmVha31kbyBpZigoY1tqPj4yXXwwKSE9MD8oZFsoY1tsPj4yXXwwKSs2ND4+MF0mMXwwKT09MDowKXtpZigoZFsoY1tsPj4yXXwwKSs2Nj4+MF18MCkhPTE/KGRbKGNbbD4+Ml18MCkrNjY+PjBdfDApIT0yOjApYnJlYWs7Y1ttPj4yXT1aSChjW2w+PjJdfDApfDA7aWYoY1ttPj4yXXwwKWJyZWFrIGF9ZWxzZSBuPTEwO3doaWxlKDApO2lmKChufDApPT0xMCl7bj0wO1BCKGNbbD4+Ml18MCk7YVsoY1tsPj4yXXwwKSs2Nj4+MF09NDtjWyhjW2w+PjJdfDApKzYwPj4yXT1jW2g+PjJdfWNbaz4+Ml09MDt3aGlsZSgxKXtpZigoY1trPj4yXXwwKT4oYVsoY1tsPj4yXXwwKSs2OD4+MF18MCkpYnJlYWs7UUIoY1soY1tsPj4yXXwwKSsxMjArKGNbaz4+Ml08PDIpPj4yXXwwKTtjWyhjW2w+PjJdfDApKzEyMCsoY1trPj4yXTw8Mik+PjJdPTA7Y1trPj4yXT0oY1trPj4yXXwwKSsxfWNbbD4+Ml09Y1soY1tsPj4yXXwwKSs4Pj4yXX1pZigobnwwKT09MTUpe249Y1ttPj4yXXwwO2k9bztyZXR1cm4gbnwwfVdJKGNbZz4+Ml18MCxjW20+PjJdfDAsMCl8MDtuPWNbbT4+Ml18MDtpPW87cmV0dXJuIG58MH1mdW5jdGlvbiBYSShhLGIsZil7YT1hfDA7Yj1ifDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wO209aTtpPWkrMzJ8MDtnPW0rMTZ8MDtoPW0rMTJ8MDtqPW0rOHwwO2w9bSs0fDA7az1tO2NbZz4+Ml09YTtjW2g+PjJdPWI7Y1tqPj4yXT1mO2NbbD4+Ml09MDtpZighKGNbZz4+Ml18MCkpe2w9Y1tsPj4yXXwwO2k9bTtyZXR1cm4gbHwwfWlmKChkWyhjW2c+PjJdfDApKzg+PjBdfDB8MCkhPTIpe2w9Y1tsPj4yXXwwO2k9bTtyZXR1cm4gbHwwfWNbaz4+Ml09Y1soY1tnPj4yXXwwKSs0Pj4yXTttZyhjW2c+PjJdfDApO2NbbD4+Ml09VnIoY1tjW2s+PjJdPj4yXXwwLGNbaD4+Ml18MCxjW2o+PjJdfDApfDA7aWYoY1tsPj4yXXwwKXtsPWNbbD4+Ml18MDtpPW07cmV0dXJuIGx8MH1pZigoY1tqPj4yXXwwKTwwPygoZVsoY1trPj4yXXwwKSsyMj4+MV18MCkmOHwwKSE9MDowKWNbKGNbaz4+Ml18MCkrNDQ+PjJdPTA7Y1tsPj4yXT1BTShjW2s+PjJdfDApfDA7YT1ncigoY1soY1soY1trPj4yXXwwKSsxMj4+Ml18MCkrNTY+PjJdfDApKzI4fDApfDA7Y1soY1trPj4yXXwwKSs0ND4+Ml09YTtsPWNbbD4+Ml18MDtpPW07cmV0dXJuIGx8MH1mdW5jdGlvbiBZSShiLGUpe2I9YnwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTA7bT1pO2k9aSszMnwwO2Y9bSsyMHwwO2c9bSsxNnwwO2g9bSsxMnwwO2o9bSs4fDA7bD1tKzR8MDtrPW07Y1tmPj4yXT1iO2NbZz4+Ml09ZTtjW2o+PjJdPTA7WWooKTtPZihjW2Y+PjJdfDApO2lmKGNbKGNbZj4+Ml18MCkrMjQ+PjJdJjIpYj0oZFsoY1tmPj4yXXwwKSsxNDgrNT4+MF18MCk9PTA7ZWxzZSBiPTA7Y1tsPj4yXT1iJjE7Y1toPj4yXT0wO3doaWxlKDEpe2lmKChjW2g+PjJdfDApPj0oY1soY1tmPj4yXXwwKSsyMD4+Ml18MCkpYnJlYWs7Y1trPj4yXT1jWyhjWyhjW2Y+PjJdfDApKzE2Pj4yXXwwKSsoY1toPj4yXTw8NCkrND4+Ml07aWYoY1trPj4yXXwwKXtpZihmaShjW2s+PjJdfDApfDApY1tqPj4yXT0xO1BnKGNbaz4+Ml18MCxjW2c+PjJdfDAsKChjW2w+PjJdfDApIT0wXjEpJjEpfDB9Y1toPj4yXT0oY1toPj4yXXwwKSsxfW91KGNbZj4+Ml18MCl8MDtaaigpO2lmKChjWyhjW2Y+PjJdfDApKzI0Pj4yXSYyfDApIT0wPyhkWyhjW2Y+PjJdfDApKzE0OCs1Pj4wXXwwKT09MDowKXtTaChjW2Y+PjJdfDApO0NnKGNbZj4+Ml18MCl9bD0oY1tmPj4yXXwwKSs0NDB8MDtjW2w+PjJdPTA7Y1tsKzQ+PjJdPTA7bD0oY1tmPj4yXXwwKSs0NDh8MDtjW2w+PjJdPTA7Y1tsKzQ+PjJdPTA7bD0oY1tmPj4yXXwwKSsyNHwwO2NbbD4+Ml09Y1tsPj4yXSYtMzM1NTQ0MzM7aWYoIShjWyhjW2Y+PjJdfDApKzIxMj4+Ml18MCkpe2k9bTtyZXR1cm59aWYoKGNbaj4+Ml18MCk9PTA/KGFbKGNbZj4+Ml18MCkrNjc+PjBdfDApIT0wOjApe2k9bTtyZXR1cm59UWJbY1soY1tmPj4yXXwwKSsyMTI+PjJdJjI1NV0oY1soY1tmPj4yXXwwKSsyMDg+PjJdfDApO2k9bTtyZXR1cm59ZnVuY3Rpb24gWkkoYil7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wO2Y9aTtpPWkrMTZ8MDtkPWYrNHwwO2U9ZjtjW2Q+PjJdPWI7d2hpbGUoMSl7Yj1jW2Q+PjJdfDA7aWYoIShjWyhjW2Q+PjJdfDApKzQyND4+Ml18MCkpYnJlYWs7Y1tlPj4yXT1jW2IrNDI0Pj4yXTtjWyhjW2Q+PjJdfDApKzQyND4+Ml09Y1soY1tlPj4yXXwwKSsyND4+Ml07VGYoY1tkPj4yXXwwLGNbZT4+Ml18MCl9Y1tiKzQzMj4+Ml09MDtjWyhjW2Q+PjJdfDApKzQzNj4+Ml09MDthWyhjW2Q+PjJdfDApKzc1Pj4wXT0wO2k9ZjtyZXR1cm59ZnVuY3Rpb24gX0koYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MDtlPWk7aT1pKzE2fDA7aD1lKzEyfDA7Zj1lKzh8MDtkPWUrNHwwO2c9ZTtjW2g+PjJdPWE7Y1tmPj4yXT1iO2NbZz4+Ml09Y1soY1toPj4yXXwwKSs0Pj4yXTttZyhjW2g+PjJdfDApO2NbZD4+Ml09eE0oY1tjW2c+PjJdPj4yXXwwLGNbZj4+Ml18MCl8MDtpPWU7cmV0dXJuIGNbZD4+Ml18MH1mdW5jdGlvbiAkSShlLGYsZyxoLGope2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO3ZhciBrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MDtzPWk7aT1pKzMyfDA7az1zKzI0fDA7bD1zKzIwfDA7bj1zKzE2fDA7bz1zKzEyfDA7cD1zKzI4fDA7cj1zKzh8MDttPXMrNHwwO3E9cztjW2s+PjJdPWU7Y1tsPj4yXT1mO2Nbbj4+Ml09ZztjW28+PjJdPWg7YVtwPj4wXT1qO2o9Y1trPj4yXXwwO2lmKChjW2w+PjJdfDApPjApaj0oY1soY1trPj4yXXwwKSs5Mj4+Ml18MCkrKCgoY1tqKzI0Pj4yXXwwKS0oY1tsPj4yXXwwKXwwKSo0MHwwKXwwO2Vsc2Ugaj1jW2orOTI+PjJdfDA7Y1tyPj4yXT1qO2NbcT4+Ml09MDtqPTg4KyhjW24+PjJdPDwzKXwwO2lmKCEoZFtwPj4wXXwwKSlmPXZNKCl8MDtlbHNlIGY9MDtjW20+PjJdPWorZjtpZihjWyhjWyhjW2s+PjJdfDApKzExMj4+Ml18MCkrKGNbbD4+Ml08PDIpPj4yXXwwKXtlSihjW2s+PjJdfDAsY1soY1soY1trPj4yXXwwKSsxMTI+PjJdfDApKyhjW2w+PjJdPDwyKT4+Ml18MCk7Y1soY1soY1trPj4yXXwwKSsxMTI+PjJdfDApKyhjW2w+PjJdPDwyKT4+Ml09MH1pZihOeChjW3I+PjJdfDAsY1ttPj4yXXwwKXwwKXtyPWNbcT4+Ml18MDtpPXM7cmV0dXJuIHJ8MH1qPWNbKGNbcj4+Ml18MCkrMTY+PjJdfDA7Y1txPj4yXT1qO2NbKGNbKGNbaz4+Ml18MCkrMTEyPj4yXXwwKSsoY1tsPj4yXTw8Mik+PjJdPWo7aj1jW3E+PjJdfDA7Zj1qKzg4fDA7ZG97Y1tqPj4yXT0wO2o9ais0fDB9d2hpbGUoKGp8MCk8KGZ8MCkpO2FbY1txPj4yXT4+MF09YVtwPj4wXXwwO2FbKGNbcT4+Ml18MCkrMT4+MF09Y1tvPj4yXTtiWyhjW3E+PjJdfDApKzEyPj4xXT1jW24+PjJdO2NbKGNbcT4+Ml18MCkrNzY+PjJdPShjW3E+PjJdfDApKzgwKyhjW24+PjJdPDwyKTtpZihkW3A+PjBdfDApe3I9Y1txPj4yXXwwO2k9cztyZXR1cm4gcnwwfWNbKGNbcT4+Ml18MCkrMTY+PjJdPShjWyhjW3I+PjJdfDApKzE2Pj4yXXwwKSsoODgrKGNbbj4+Ml08PDMpKTt3TShjWyhjW3E+PjJdfDApKzE2Pj4yXXwwKTtyPWNbcT4+Ml18MDtpPXM7cmV0dXJuIHJ8MH1mdW5jdGlvbiBhSihhLGIsZCxlLGYpe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTA7bj1pO2k9aSszMnwwO2c9bisyMHwwO2g9bisxNnwwO2o9bisxMnwwO2s9bis4fDA7bD1uKzR8MDttPW47Y1tnPj4yXT1hO2NbaD4+Ml09YjtjW2o+PjJdPWQ7Y1trPj4yXT1lO2NbbD4+Ml09ZjtpZigoY1toPj4yXXwwKTwxKXtjW20+PjJdPVFqKDYyNDEwKXwwO2Q9Y1ttPj4yXXwwO2k9bjtyZXR1cm4gZHwwfWVsc2V7bWcoY1tnPj4yXXwwKTtjW20+PjJdPXRNKGNbZz4+Ml18MCxjW2g+PjJdfDAsY1tqPj4yXXwwLGNbaz4+Ml18MCxjW2w+PjJdfDApfDA7ZD1jW20+PjJdfDA7aT1uO3JldHVybiBkfDB9cmV0dXJuIDB9ZnVuY3Rpb24gYkooYixkKXtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTA7ZT1pO2k9aSsxNnwwO2Y9ZSs0fDA7Zz1lO2NbZj4+Ml09YjtjW2c+PjJdPWQ7YVsoY1tmPj4yXXwwKSs2Nz4+MF09Y1tnPj4yXTtpPWU7cmV0dXJufWZ1bmN0aW9uIGNKKGEsYixkKXthPWF8MDtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MDtmPWk7aT1pKzE2fDA7aj1mKzEyfDA7aD1mKzh8MDtnPWYrNHwwO2U9ZjtjW2o+PjJdPWE7Y1toPj4yXT1iO2NbZz4+Ml09ZDttZyhjW2o+PjJdfDApO2NbZT4+Ml09c00oY1tqPj4yXXwwLGNbaD4+Ml18MCxjW2c+PjJdfDApfDA7aT1mO3JldHVybiBjW2U+PjJdfDB9ZnVuY3Rpb24gZEooZixnLGgpe2Y9ZnwwO2c9Z3wwO2g9aHwwO3ZhciBqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wO3c9aTtpPWkrNjR8MDtyPXcrNTJ8MDtqPXcrNDh8MDtrPXcrNDR8MDt1PXcrNDB8MDtsPXcrMzZ8MDt0PXcrMzJ8MDtzPXcrMjh8MDtvPXcrMjR8MDtuPXcrMjB8MDt2PXcrMTZ8MDttPXcrMTJ8MDtxPXc7cD13Kzh8MDtjW3I+PjJdPWY7Y1tqPj4yXT1nO2Nbaz4+Ml09aDtjW3Y+PjJdPTA7Y1tvPj4yXT0yNCsoKGVbKGNbKGNbaz4+Ml18MCkrMjQ+PjJdfDApKzY+PjFdfDApLTE8PDIpO2Nbbj4+Ml09MTM2O2g9KGNbbj4+Ml18MCkrKGNbbz4+Ml18MCl8MDtjW3Q+PjJdPXNoKGNbcj4+Ml18MCxoLCgoaHwwKTwwKTw8MzE+PjMxKXwwO2NbKGNbaz4+Ml18MCkrMTY+PjJdPWNbdD4+Ml07aWYoIShjW3Q+PjJdfDApKXtjW3Y+PjJdPTc7dj1jW3Y+PjJdfDA7aT13O3JldHVybiB2fDB9bj0oY1t0Pj4yXXwwKSsoY1tuPj4yXXwwKXwwO2Nbcz4+Ml09bjtjWyhjW3Q+PjJdfDApKzI4Pj4yXT1uO1RSKGNbcz4+Ml18MCxjWyhjW2s+PjJdfDApKzI0Pj4yXXwwLGNbbz4+Ml18MCl8MDtjWyhjW3M+PjJdfDApKzEyPj4yXT0wO2lmKGNbaj4+Ml18MCl7bz0oY1tzPj4yXXwwKSs4fDA7YltvPj4xXT0oZVtvPj4xXXwwKSsoKGVbKGNbcz4+Ml18MCkrNj4+MV18MCktKGNbaj4+Ml18MCkpO2JbKGNbcz4+Ml18MCkrNj4+MV09Y1tqPj4yXX1vPXNnKGNbKGNbKGNbcj4+Ml18MCkrMTY+PjJdfDApKzQ+PjJdfDApfDA7Y1t1Pj4yXT1vO2NbKGNbdD4+Ml18MCkrMTI+PjJdPW87YVsoY1t0Pj4yXXwwKSs1OT4+MF09MTthWyhjW3Q+PjJdfDApKzU4Pj4wXT0tMTthWyhjW3Q+PjJdfDApKzU3Pj4wXT0oZFsoY1t0Pj4yXXwwKSs1OT4+MF18MHwwKT4xO2NbKGNbdD4+Ml18MCkrMjQ+PjJdPWNbcj4+Ml07Y1tsPj4yXT0wO3doaWxlKDEpe2lmKChjW2w+PjJdfDApPj0oZFsoY1t0Pj4yXXwwKSs1OT4+MF18MHwwKSlicmVhaztjW20+PjJdPShjW3Q+PjJdfDApKzY0KygoY1tsPj4yXXwwKSo3MnwwKTtjWyhjW20+PjJdfDApKzg+PjJdPWNbdD4+Ml07Y1tsPj4yXT0oY1tsPj4yXXwwKSsxfWlmKCEoWnEoY1tyPj4yXXwwKXwwKSl7Y1twPj4yXT1jWzU4XTtqPV8oY1twPj4yXXwwLGNbdT4+Ml18MCl8MDtjW2NbdD4+Ml0+PjJdPWo7aj1jWyhjWyhjWyhjW3I+PjJdfDApKzE2Pj4yXXwwKSsxMj4+Ml18MCkrODA+PjJdfDA7az1xO2Nbaz4+Ml09ajtjW2srND4+Ml09KChqfDApPDApPDwzMT4+MzE7az1xO2o9Y1trPj4yXXwwO2s9Y1trKzQ+PjJdfDA7aWYoKGNbcSs0Pj4yXXwwKTwwKXtvPWFTKGp8MCxrfDAsLTEwMjQsLTEpfDA7cD1xO2NbcD4+Ml09bztjW3ArND4+Ml09Q31lbHNle289Y1t1Pj4yXXwwO289YVMoanwwLGt8MCxvfDAsKChvfDApPDApPDwzMT4+MzF8MCl8MDtwPXE7Y1twPj4yXT1vO2NbcCs0Pj4yXT1DfW09cTtuPWNbbSs0Pj4yXXwwO209KG58MCk8MHwobnwwKT09MCYoY1ttPj4yXXwwKT4+PjA8NTM2ODcwOTEyO249cTtvPW0/Y1tuKzQ+PjJdfDA6MDtwPXE7Y1twPj4yXT1tP2Nbbj4+Ml18MDo1MzY4NzA5MTI7Y1twKzQ+PjJdPW87aWYoKGNbY1t0Pj4yXT4+Ml18MCk+KGNbcT4+Ml18MCkpaj1jW2NbdD4+Ml0+PjJdfDA7ZWxzZSBqPWNbcT4+Ml18MDtjWyhjW3Q+PjJdfDApKzQ+PjJdPWo7aWYoKGNbNTBdfDApPT0wPyhjWyhjW3Q+PjJdfDApKzUyPj4yXT1jW3U+PjJdLHU9Y1t1Pj4yXXwwLHU9JGYodSwoKHV8MCk8MCk8PDMxPj4zMSl8MCxjWyhjW3Q+PjJdfDApKzM2KzQ+PjJdPXUsKGNbKGNbdD4+Ml18MCkrMzYrND4+Ml18MCk9PTApOjApY1t2Pj4yXT03fWlmKCgoZVsoY1tzPj4yXXwwKSs2Pj4xXXwwKSsoZVsoY1tzPj4yXXwwKSs4Pj4xXXwwKXwwKT49MTMpe3Y9Y1t2Pj4yXXwwO2k9dztyZXR1cm4gdnwwfWlmKChjWyhjW3M+PjJdfDApKzIwPj4yXXwwKSE9MD8oY1soY1tzPj4yXXwwKSsyMD4+Ml18MCkhPShjWyhjW3I+PjJdfDApKzg+PjJdfDApOjApe3Y9Y1t2Pj4yXXwwO2k9dztyZXR1cm4gdnwwfWFbKGNbdD4+Ml18MCkrNjA+PjBdPTM7dj1jW3Y+PjJdfDA7aT13O3JldHVybiB2fDB9ZnVuY3Rpb24gZUooYSxiKXthPWF8MDtiPWJ8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MDtqPWk7aT1pKzE2fDA7ZT1qKzEyfDA7aD1qKzh8MDtnPWorNHwwO2Y9ajtjW2U+PjJdPWE7Y1toPj4yXT1iO2lmKCEoY1toPj4yXXwwKSl7aT1qO3JldHVybn1zd2l0Y2goZFtjW2g+PjJdPj4wXXwwfDApe2Nhc2UgMTp7ck0oY1tjW2U+PjJdPj4yXXwwLGNbaD4+Ml18MCk7aT1qO3JldHVybn1jYXNlIDA6e2U9Y1toPj4yXXwwO2lmKGNbKGNbaD4+Ml18MCkrMjA+PjJdfDApe0xCKGNbZSsyMD4+Ml18MCl8MDtpPWo7cmV0dXJufWVsc2V7TkIoY1tlKzE2Pj4yXXwwKXwwO2k9ajtyZXR1cm59fWNhc2UgMjp7Y1tnPj4yXT1jWyhjW2g+PjJdfDApKzE2Pj4yXTtjW2Y+PjJdPWNbY1tjW2c+PjJdPj4yXT4+Ml07aD0oY1tjW2c+PjJdPj4yXXwwKSs0fDA7Y1toPj4yXT0oY1toPj4yXXwwKSstMTtUYltjWyhjW2Y+PjJdfDApKzI4Pj4yXSYyNTVdKGNbZz4+Ml18MCl8MDtpPWo7cmV0dXJufWRlZmF1bHQ6e2k9ajtyZXR1cm59fX1mdW5jdGlvbiBmSihhLGIpe2E9YXwwO2I9YnwwO3ZhciBlPTAsZj0wLGc9MDtnPWk7aT1pKzE2fDA7Zj1nKzR8MDtlPWc7Y1tmPj4yXT1hO2NbZT4+Ml09YjtpPWc7cmV0dXJuICgoZFsoY1tmPj4yXXwwKSs2Nz4+MF18MCkmY1tlPj4yXXwwKSE9MHwwfWZ1bmN0aW9uIGdKKGEpe2E9YXwwO3ZhciBiPTAsZT0wO2U9aTtpPWkrMTZ8MDtiPWU7Y1tiPj4yXT1hO2k9ZTtyZXR1cm4gMSE9KGRbKGNbYj4+Ml18MCkrNjY+PjBdfDB8MCl8MH1mdW5jdGlvbiBoSihiLGUpe2I9YnwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wO2s9aTtpPWkrMTZ8MDtoPWsrMTJ8MDtnPWsrOHwwO2Y9ays0fDA7aj1rO2NbZz4+Ml09YjtjW2Y+PjJdPWU7aWYoMT09KGRbKGNbZz4+Ml18MCkrNjY+PjBdfDB8MCk/KChkWyhjW2c+PjJdfDApKzY0Pj4wXXwwKSY4fDApIT0wOjApe2NbaD4+Ml09MDtqPWNbaD4+Ml18MDtpPWs7cmV0dXJuIGp8MH1jW2o+PjJdPVFGKGNbZz4+Ml18MCl8MDtkbyBpZighKGNbaj4+Ml18MCkpe2Y9Y1tmPj4yXXwwO2lmKCEoZFsoY1tnPj4yXXwwKSs2Nj4+MF18MCkpe2NbZj4+Ml09MTticmVha31jW2Y+PjJdPTA7Y1tqPj4yXT1HRihjW2c+PjJdfDApfDA7Zj0oY1tnPj4yXXwwKSs2NHwwO2I9ZFtmPj4wXXwwO2lmKCEoY1tqPj4yXXwwKSl7YVtmPj4wXT1ifDg7YnJlYWt9ZWxzZXthW2Y+PjBdPWImLTk7YnJlYWt9fXdoaWxlKDApO2NbaD4+Ml09Y1tqPj4yXTtqPWNbaD4+Ml18MDtpPWs7cmV0dXJuIGp8MH1mdW5jdGlvbiBpSihmLGcsaCxqKXtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDt2YXIgaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wO3k9aTtpPWkrNjR8MDtrPXkrNTJ8MDtsPXkrNDh8MDttPXkrNDR8MDtuPXkrNDB8MDt6PXkrMzZ8MDt2PXkrMzJ8MDtwPXkrMjh8MDt3PXkrMjR8MDtvPXkrMjB8MDt1PXkrMTZ8MDtzPXkrMTJ8MDt0PXkrOHwwO3I9eSs0fDA7cT15O3g9eSs1NnwwO2NbbD4+Ml09ZjtjW20+PjJdPWc7Y1tuPj4yXT1oO2Nbej4+Ml09ajtjW3A+PjJdPWNbej4+Ml07Y1t3Pj4yXT0wO2Nbcz4+Ml09Y1tjW2w+PjJdPj4yXTtjW3Q+PjJdPWNbKGNbcz4+Ml18MCkrND4+Ml07Y1txPj4yXT0wO2g9Y1tsPj4yXXwwO2lmKChkWyhjW2w+PjJdfDApKzY2Pj4wXXwwKT09NCl7Y1trPj4yXT1jW2grNjA+PjJdO3o9Y1trPj4yXXwwO2k9eTtyZXR1cm4genwwfWlmKChkW2grNjQ+PjBdJjMyfDApIT0wPyhjW3Y+PjJdPVhIKGNbdD4+Ml18MCxjWyhjW2w+PjJdfDApKzUyPj4yXXwwLGNbbD4+Ml18MCl8MCwoY1t2Pj4yXXwwKSE9MCk6MCl7Y1trPj4yXT1jW3Y+PjJdO3o9Y1trPj4yXXwwO2k9eTtyZXR1cm4genwwfWRvIGlmKCEoY1soY1tsPj4yXXwwKSs3Mj4+Ml18MCkpe3o9KGNbbT4+Ml18MCkrOHwwO1pLKGNbcz4+Ml18MCxjW3o+PjJdfDAsY1t6KzQ+PjJdfDAsMCk7aWYoKChkWyhjW2w+PjJdfDApKzY0Pj4wXSYyfDApIT0wPyh6PShjW20+PjJdfDApKzh8MCxzPWNbeis0Pj4yXXwwLChzfDApPjB8KHN8MCk9PTAmKGNbej4+Ml18MCk+Pj4wPjApOjApPyh6PShjW2w+PjJdfDApKzE2fDAsaj1jW3o+PjJdfDAsej1jW3orND4+Ml18MCxzPShjW20+PjJdfDApKzh8MCxzPVFSKGNbcz4+Ml18MCxjW3MrND4+Ml18MCwxLDApfDAsKGp8MCk9PShzfDApJih6fDApPT0oQ3wwKSk6MCl7Y1twPj4yXT0tMTticmVha31pZigoY1twPj4yXXwwKT09MD8oej0oY1ttPj4yXXwwKSs4fDAsY1t2Pj4yXT1PRihjW2w+PjJdfDAsMCxjW3o+PjJdfDAsY1t6KzQ+PjJdfDAsY1tuPj4yXXwwLHApfDAsKGNbdj4+Ml18MCkhPTApOjApe2Nbaz4+Ml09Y1t2Pj4yXTt6PWNbaz4+Ml18MDtpPXk7cmV0dXJuIHp8MH19ZWxzZSBpZigoY1twPj4yXXwwKT09MD8oej0oY1ttPj4yXXwwKSs4fDAsY1t2Pj4yXT1MRihjW2w+PjJdfDAsY1tjW20+PjJdPj4yXXwwLGNbej4+Ml18MCxjW3orND4+Ml18MCxjW24+PjJdfDAscCl8MCwoY1t2Pj4yXXwwKSE9MCk6MCl7Y1trPj4yXT1jW3Y+PjJdO3o9Y1trPj4yXXwwO2k9eTtyZXR1cm4genwwfXdoaWxlKDApO2NbdT4+Ml09Y1soY1tsPj4yXXwwKSsxMjArKGFbKGNbbD4+Ml18MCkrNjg+PjBdPDwyKT4+Ml07Y1txPj4yXT1jWyhjW3Q+PjJdfDApKzgwPj4yXTtjW3Y+PjJdPXFNKGNbdT4+Ml18MCxjW3E+PjJdfDAsY1ttPj4yXXwwLHcpfDA7ZG8gaWYoIShjW3Y+PjJdfDApKXtjW28+PjJdPWVbKGNbbD4+Ml18MCkrODArKGFbKGNbbD4+Ml18MCkrNjg+PjBdPDwxKT4+MV07aWYoIShjW3A+PjJdfDApKXtjW3Y+PjJdPUdnKGNbKGNbdT4+Ml18MCkrNzI+PjJdfDApfDA7aWYoY1t2Pj4yXXwwKWJyZWFrO2Nbcj4+Ml09KGNbKGNbdT4+Ml18MCkrNTY+PjJdfDApKyhlWyhjW3U+PjJdfDApKzIwPj4xXSYoZFsoY1soY1t1Pj4yXXwwKSs2ND4+Ml18MCkrKGNbbz4+Ml08PDEpPj4wXTw8OHxkWyhjWyhjW3U+PjJdfDApKzY0Pj4yXXwwKSsoY1tvPj4yXTw8MSkrMT4+MF0pKTtpZighKGFbKGNbdT4+Ml18MCkrND4+MF18MCkpe3o9Y1txPj4yXXwwO3Q9Y1tyPj4yXXwwO2Fbej4+MF09YVt0Pj4wXXwwO2FbeisxPj4wXT1hW3QrMT4+MF18MDthW3orMj4+MF09YVt0KzI+PjBdfDA7YVt6KzM+PjBdPWFbdCszPj4wXXwwfWNbdj4+Ml09JEsoY1t1Pj4yXXwwLGNbcj4+Ml18MCx4KXwwO1lMKGNbdT4+Ml18MCxjW28+PjJdfDAsZVt4Pj4xXXwwLHYpO2lmKGNbdj4+Ml18MClicmVha31lbHNlIGlmKChjW3A+PjJdfDApPDA/KGVbKGNbdT4+Ml18MCkrMTg+PjFdfDApPjA6MCl7eD0oY1tsPj4yXXwwKSs4MCsoYVsoY1tsPj4yXXwwKSs2OD4+MF08PDEpfDA7ej0oYlt4Pj4xXXwwKSsxPDwxNj4+MTY7Ylt4Pj4xXT16O2Nbbz4+Ml09eiY2NTUzNX1aTChjW3U+PjJdfDAsY1tvPj4yXXwwLGNbcT4+Ml18MCxjW3c+PjJdfDAsMCwwLHYpO2JbKGNbbD4+Ml18MCkrMTYrMTg+PjFdPTA7aWYoYVsoY1t1Pj4yXXwwKSsxPj4wXXwwKXt6PShjW2w+PjJdfDApKzY0fDA7YVt6Pj4wXT1kW3o+PjBdJi0zO2Nbdj4+Ml09X0woY1tsPj4yXXwwKXwwO2FbKGNbKGNbbD4+Ml18MCkrMTIwKyhhWyhjW2w+PjJdfDApKzY4Pj4wXTw8Mik+PjJdfDApKzE+PjBdPTA7YVsoY1tsPj4yXXwwKSs2Nj4+MF09MH19d2hpbGUoMCk7Y1trPj4yXT1jW3Y+PjJdO3o9Y1trPj4yXXwwO2k9eTtyZXR1cm4genwwfWZ1bmN0aW9uIGpKKGYsZyl7Zj1mfDA7Zz1nfDA7dmFyIGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MDt6PWk7aT1pKzY0fDA7dD16KzU2fDA7dT16KzUyfDA7QT16KzYzfDA7bD16KzQ4fDA7bT16KzQ0fDA7eT16KzQwfDA7eD16KzM2fDA7bj16KzMyfDA7dz16KzI4fDA7dj16KzI0fDA7cT16KzYwfDA7cz16KzIwfDA7cj16KzYyfDA7az16KzE2fDA7bz16KzEyfDA7aj16Kzh8MDtoPXorNHwwO3A9ejtjW3U+PjJdPWY7YVtBPj4wXT1nO2NbbD4+Ml09Y1tjW3U+PjJdPj4yXTtjW20+PjJdPWNbKGNbbD4+Ml18MCkrND4+Ml07Y1tzPj4yXT0wO2Fbcj4+MF09ZFtBPj4wXSYyO2Nbdj4+Ml09YVsoY1t1Pj4yXXwwKSs2OD4+MF07Y1t3Pj4yXT1lWyhjW3U+PjJdfDApKzgwKyhjW3Y+PjJdPDwxKT4+MV07Y1t4Pj4yXT1jWyhjW3U+PjJdfDApKzEyMCsoY1t2Pj4yXTw8Mik+PjJdO2Nbbj4+Ml09KGNbKGNbeD4+Ml18MCkrNTY+PjJdfDApKyhlWyhjW3g+PjJdfDApKzIwPj4xXSYoZFsoY1soY1t4Pj4yXXwwKSs2ND4+Ml18MCkrKGNbdz4+Ml08PDEpPj4wXTw8OHxkWyhjWyhjW3g+PjJdfDApKzY0Pj4yXXwwKSsoY1t3Pj4yXTw8MSkrMT4+MF0pKTtkbyBpZihhW3I+PjBdfDApe2lmKChhWyhjW3g+PjJdfDApKzQ+PjBdfDApIT0wPyhBPWVbKGNbeD4+Ml18MCkrMTY+PjFdfDAsQT1BKygoWXQoY1t4Pj4yXXwwLGNbbj4+Ml18MCl8MCkmNjU1MzUpKzJ8MCwoQXwwKTw9KChjWyhjW20+PjJdfDApKzM2Pj4yXTw8MT4+PjApLzN8MHwwKSk6MCl7Y1tzPj4yXT0xO2JyZWFrfWNbeT4+Ml09JEgoY1t1Pj4yXXwwKXwwO2lmKGNbeT4+Ml18MCl7Y1t0Pj4yXT1jW3k+PjJdO0E9Y1t0Pj4yXXwwO2k9ejtyZXR1cm4gQXwwfX13aGlsZSgwKTtpZigoYVsoY1t4Pj4yXXwwKSs0Pj4wXXwwKT09MD8oY1trPj4yXT0wLGNbeT4+Ml09Q0YoY1t1Pj4yXXwwLGspfDAsKGNbeT4+Ml18MCkhPTApOjApe2NbdD4+Ml09Y1t5Pj4yXTtBPWNbdD4+Ml18MDtpPXo7cmV0dXJuIEF8MH1pZigoZFsoY1t1Pj4yXXwwKSs2ND4+MF0mMzJ8MCkhPTA/KGNbeT4+Ml09WEgoY1ttPj4yXXwwLGNbKGNbdT4+Ml18MCkrNTI+PjJdfDAsY1t1Pj4yXXwwKXwwLChjW3k+PjJdfDApIT0wKTowKXtjW3Q+PjJdPWNbeT4+Ml07QT1jW3Q+PjJdfDA7aT16O3JldHVybiBBfDB9aWYoIShjWyhjW3U+PjJdfDApKzcyPj4yXXwwKSl7QT0oY1t1Pj4yXXwwKSsxNnwwO1pLKGNbbD4+Ml18MCxjW0E+PjJdfDAsY1tBKzQ+PjJdfDAsMCl9Y1t5Pj4yXT1HZyhjWyhjW3g+PjJdfDApKzcyPj4yXXwwKXwwO2lmKGNbeT4+Ml18MCl7Y1t0Pj4yXT1jW3k+PjJdO0E9Y1t0Pj4yXXwwO2k9ejtyZXR1cm4gQXwwfWNbeT4+Ml09JEsoY1t4Pj4yXXwwLGNbbj4+Ml18MCxxKXwwO1lMKGNbeD4+Ml18MCxjW3c+PjJdfDAsZVtxPj4xXXwwLHkpO2lmKGNbeT4+Ml18MCl7Y1t0Pj4yXT1jW3k+PjJdO0E9Y1t0Pj4yXXwwO2k9ejtyZXR1cm4gQXwwfWlmKCEoYVsoY1t4Pj4yXXwwKSs0Pj4wXXwwKSl7Y1tvPj4yXT1jWyhjW3U+PjJdfDApKzEyMCsoYVsoY1t1Pj4yXXwwKSs2OD4+MF08PDIpPj4yXTtjW2g+PjJdPWNbKGNbKGNbdT4+Ml18MCkrMTIwKygoY1t2Pj4yXXwwKSsxPDwyKT4+Ml18MCkrODQ+PjJdO2Nbbj4+Ml09KGNbKGNbbz4+Ml18MCkrNTY+PjJdfDApKyhlWyhjW28+PjJdfDApKzIwPj4xXSYoZFsoY1soY1tvPj4yXXwwKSs2ND4+Ml18MCkrKChlWyhjW28+PjJdfDApKzE4Pj4xXXwwKS0xPDwxKT4+MF08PDh8ZFsoY1soY1tvPj4yXXwwKSs2ND4+Ml18MCkrKChlWyhjW28+PjJdfDApKzE4Pj4xXXwwKS0xPDwxKSsxPj4wXSkpO2lmKChjW24+PjJdfDApPj4+MDwoKGNbKGNbbz4+Ml18MCkrNTY+PjJdfDApKzR8MCk+Pj4wKXtjW3Q+PjJdPVFqKDY2NDQ5KXwwO0E9Y1t0Pj4yXXwwO2k9ejtyZXR1cm4gQXwwfWNbaj4+Ml09KFliW2NbKGNbbz4+Ml18MCkrNzY+PjJdJjI1NV0oY1tvPj4yXXwwLGNbbj4+Ml18MCl8MCkmNjU1MzU7Y1twPj4yXT1jWyhjW20+PjJdfDApKzgwPj4yXTtjW3k+PjJdPUdnKGNbKGNbbz4+Ml18MCkrNzI+PjJdfDApfDA7aWYoIShjW3k+PjJdfDApKVpMKGNbeD4+Ml18MCxjW3c+PjJdfDAsKGNbbj4+Ml18MCkrLTR8MCwoY1tqPj4yXXwwKSs0fDAsY1twPj4yXXwwLGNbaD4+Ml18MCx5KTtZTChjW28+PjJdfDAsKGVbKGNbbz4+Ml18MCkrMTg+PjFdfDApLTF8MCxjW2o+PjJdfDAseSk7aWYoY1t5Pj4yXXwwKXtjW3Q+PjJdPWNbeT4+Ml07QT1jW3Q+PjJdfDA7aT16O3JldHVybiBBfDB9fWNbeT4+Ml09X0woY1t1Pj4yXXwwKXwwO2lmKChjW3k+PjJdfDApPT0wPyhhWyhjW3U+PjJdfDApKzY4Pj4wXXwwKT4oY1t2Pj4yXXwwKTowKXt3aGlsZSgxKXtnPWNbdT4+Ml18MDtpZigoYVsoY1t1Pj4yXXwwKSs2OD4+MF18MCk8PShjW3Y+PjJdfDApKWJyZWFrO3E9Zys2OHwwO0E9YVtxPj4wXXwwO2FbcT4+MF09QSstMTw8MjQ+PjI0O1FCKGNbKGNbdT4+Ml18MCkrMTIwKyhBPDwyND4+MjQ8PDIpPj4yXXwwKX1jW3k+PjJdPV9MKGcpfDB9ZG8gaWYoIShjW3k+PjJdfDApKXtnPWNbdT4+Ml18MDtpZighKGNbcz4+Ml18MCkpe2NbeT4+Ml09UUYoZyl8MDtpZighKGFbcj4+MF18MCkpYnJlYWs7YVsoY1t1Pj4yXXwwKSs2Nj4+MF09MzticmVha31hW2crNjY+PjBdPTI7Zz0oY1t1Pj4yXXwwKSs2MHwwO2lmKChjW3c+PjJdfDApPj0oZVsoY1t4Pj4yXXwwKSsxOD4+MV18MCkpe2NbZz4+Ml09LTE7YlsoY1t1Pj4yXXwwKSs4MCsoY1t2Pj4yXTw8MSk+PjFdPShlWyhjW3g+PjJdfDApKzE4Pj4xXXwwKS0xO2JyZWFrfWVsc2V7Y1tnPj4yXT0xO2JyZWFrfX13aGlsZSgwKTtjW3Q+PjJdPWNbeT4+Ml07QT1jW3Q+PjJdfDA7aT16O3JldHVybiBBfDB9ZnVuY3Rpb24ga0ooYSxkLGYsZyl7YT1hfDA7ZD1kfDA7Zj1mfDA7Zz1nfDA7dmFyIGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wO3M9aTtpPWkrNDh8MDtvPXMrNDR8MDt0PXMrNDB8MDtwPXMrMzZ8MDtoPXMrMzJ8MDtxPXMrMjh8MDtuPXMrMjR8MDtyPXMrMjB8MDttPXMrMTZ8MDtqPXMrMTJ8MDtsPXMrOHwwO2s9cys0fDA7Y1t0Pj4yXT1hO2NbcD4+Ml09ZDtjW2g+PjJdPWY7Y1txPj4yXT1nO2Nbbj4+Ml09Y1soY1t0Pj4yXXwwKSsxNj4+Ml07Y1tyPj4yXT1jWyhjW24+PjJdfDApKzMyPj4yXTtjW20+PjJdPWNbKGNbdD4+Ml18MCkrMjQ+PjJdO2RvIGlmKCEoY1tyPj4yXXwwKSl7dD1NRihjW20+PjJdfDAsMCwwLHMpfDA7Y1soY1tuPj4yXXwwKSszMj4+Ml09dDtjW3I+PjJdPXQ7aWYoY1tyPj4yXXwwKXtiWyhjW3I+PjJdfDApKzg+PjFdPWNbaD4+Ml07YnJlYWt9Y1tvPj4yXT03O3Q9Y1tvPj4yXXwwO2k9cztyZXR1cm4gdHwwfXdoaWxlKDApO2NbbD4+Ml09WEwoY1tuPj4yXXwwLGspfDA7TkYoY1ttPj4yXXwwLGNbaz4+Ml18MCxjW2w+PjJdfDAsY1tyPj4yXXwwKTtjW2o+PjJdPTA7d2hpbGUoMSl7aWYoKGNbaj4+Ml18MCk+PShjW2g+PjJdfDApKXtoPTEwO2JyZWFrfWlmKChlWyhjWyhjW3I+PjJdfDApKzQ+PjJdfDApKygoY1tqPj4yXXwwKSo0MHwwKSs4Pj4xXXwwKSYxKXtoPTg7YnJlYWt9Y1tqPj4yXT0oY1tqPj4yXXwwKSsxfWlmKChofDApPT04KXtjW2NbcT4+Ml0+PjJdPS0xO2Nbbz4+Ml09MDt0PWNbbz4+Ml18MDtpPXM7cmV0dXJuIHR8MH1lbHNlIGlmKChofDApPT0xMCl7dD0kRihjWyhjW3A+PjJdfDApKzEyPj4yXXwwLGNbKGNbcD4+Ml18MCkrMTY+PjJdfDAsY1tyPj4yXXwwKXwwO2NbY1txPj4yXT4+Ml09dDtjW28+PjJdPTA7dD1jW28+PjJdfDA7aT1zO3JldHVybiB0fDB9cmV0dXJuIDB9ZnVuY3Rpb24gbEooYSxkKXthPWF8MDtkPWR8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wO2s9aTtpPWkrMzJ8MDtmPWsrMjB8MDttPWsrMTZ8MDtnPWsrMTJ8MDtsPWsrOHwwO2o9ays0fDA7aD1rO2NbbT4+Ml09YTtjW2c+PjJdPWQ7Y1tsPj4yXT1jWyhjW20+PjJdfDApKzE2Pj4yXTtjW2o+PjJdPVhMKGNbbD4+Ml18MCxoKXwwO2lmKE54KGNbZz4+Ml18MCxjW2g+PjJdfDApfDApe2NbZj4+Ml09NzttPWNbZj4+Ml18MDtpPWs7cmV0dXJuIG18MH1lbHNle2NbKGNbZz4+Ml18MCkrMTI+PjJdPWNbaD4+Ml07YlsoY1tnPj4yXXwwKSs4Pj4xXT0oZVsoY1tnPj4yXXwwKSs4Pj4xXXwwKSYtNDk2NjR8MTY7VFIoY1soY1tnPj4yXXwwKSsxNj4+Ml18MCxjW2o+PjJdfDAsY1toPj4yXXwwKXwwO2NbZj4+Ml09MDttPWNbZj4+Ml18MDtpPWs7cmV0dXJuIG18MH1yZXR1cm4gMH1mdW5jdGlvbiBtSihhLGIpe2E9YXwwO2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTA7Zz1pO2k9aSsxNnwwO2Q9Zys4fDA7ZT1nKzR8MDtmPWc7Y1tkPj4yXT1hO2NbZT4+Ml09YjtpZighKGNbKGNbZT4+Ml18MCkrOD4+Ml18MCkpe2k9ZztyZXR1cm59Y1tmPj4yXT1jW2NbZD4+Ml0+PjJdO1RmKGNbZj4+Ml18MCxjWyhjW2Q+PjJdfDApKzEwOD4+Ml18MCk7Yj1xaChjW2Y+PjJdfDAsY1soY1tlPj4yXXwwKSs4Pj4yXXwwKXwwO2NbKGNbZD4+Ml18MCkrMTA4Pj4yXT1iO0tkKGNbKGNbZT4+Ml18MCkrOD4+Ml18MCk7Y1soY1tlPj4yXXwwKSs4Pj4yXT0wO2k9ZztyZXR1cm59ZnVuY3Rpb24gbkooYSl7YT1hfDA7dmFyIGI9MCxkPTAsZT0wO2U9aTtpPWkrMTZ8MDtiPWUrNHwwO2Q9ZTtjW2Q+PjJdPWE7aWYoVUwoY1soY1tkPj4yXXwwKSsxNj4+Ml18MCl8MCl7Y1tiPj4yXT1WTChjW2Q+PjJdfDApfDA7YT1jW2I+PjJdfDA7aT1lO3JldHVybiBhfDB9ZWxzZXtjW2I+PjJdPTA7YT1jW2I+PjJdfDA7aT1lO3JldHVybiBhfDB9cmV0dXJuIDB9ZnVuY3Rpb24gb0ooYSxiKXthPWF8MDtiPWJ8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTA7aj1pO2k9aSszMnwwO2Y9aisxNnwwO2s9aisxMnwwO2U9ais4fDA7Zz1qKzR8MDtoPWo7Y1trPj4yXT1hO2NbZT4+Ml09YjtjW2g+PjJdPTA7Y1tnPj4yXT1jWyhjW2s+PjJdfDApKzE2Pj4yXTtiPWNbZz4+Ml18MDtpZihkWyhjW2c+PjJdfDApKzU2Pj4wXXwwKXtjW2g+PjJdPWpMKGIpfDA7Y1toPj4yXT1jW2g+PjJdO2lmKCEoY1toPj4yXXwwKSl7Y1toPj4yXT1JTChjW2c+PjJdfDApfDA7Y1tjW2U+PjJdPj4yXT0wfWNbZj4+Ml09Y1toPj4yXTtrPWNbZj4+Ml18MDtpPWo7cmV0dXJuIGt8MH1hPWNbZT4+Ml18MDtpZihjW2IrMzY+PjJdfDApe2NbYT4+Ml09MDtjW2g+PjJdPW1MKChjW2c+PjJdfDApKzY0fDAsKGNbZz4+Ml18MCkrMzZ8MCl8MH1lbHNlIGNbYT4+Ml09MTtjW2Y+PjJdPWNbaD4+Ml07az1jW2Y+PjJdfDA7aT1qO3JldHVybiBrfDB9ZnVuY3Rpb24gcEooYSxiKXthPWF8MDtiPWJ8MDt2YXIgZT0wLGY9MCxnPTAsaD0wO2g9aTtpPWkrMTZ8MDtmPWgrOHwwO2U9aCs0fDA7Zz1oO2NbZj4+Ml09YTtjW2U+PjJdPWI7Y1tnPj4yXT1RRihjW2Y+PjJdfDApfDA7ZG8gaWYoIShjW2c+PjJdfDApKXtlPWNbZT4+Ml18MDtpZighKGRbKGNbZj4+Ml18MCkrNjY+PjBdfDApKXtjW2U+PjJdPTE7YnJlYWt9ZWxzZXtjW2U+PjJdPTA7Y1tnPj4yXT1zRyhjW2Y+PjJdfDApfDA7YnJlYWt9fXdoaWxlKDApO2k9aDtyZXR1cm4gY1tnPj4yXXwwfWZ1bmN0aW9uIHFKKGIsZCxlKXtiPWJ8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wO2w9aTtpPWkrMzJ8MDtmPWwrMjB8MDttPWwrMTZ8MDtnPWwrMTJ8MDtqPWwrOHwwO2s9bCs0fDA7aD1sO2NbZj4+Ml09YjtjW20+PjJdPWQ7Y1tnPj4yXT1lO2Nbaj4+Ml09Y1soY1ttPj4yXXwwKSsxNj4+Ml07Yj1jW2o+PjJdfDA7aWYoYVsoY1tqPj4yXXwwKSs1Nj4+MF18MCl7Y1trPj4yXT16TChjW2IrMjA+PjJdfDAsY1tnPj4yXXwwKXwwO209Y1trPj4yXXwwO2k9bDtyZXR1cm4gbXwwfWNbaD4+Ml09Y1tiKzM2Pj4yXTtjWyhjW2o+PjJdfDApKzM2Pj4yXT1jWyhjW2g+PjJdfDApKzQ+PjJdO2NbKGNbaD4+Ml18MCkrND4+Ml09MDtpZighKGNbKGNbaj4+Ml18MCkrMzYrND4+Ml18MCkpVksoY1tmPj4yXXwwLGNbaD4+Ml18MCk7Y1tjW2c+PjJdPj4yXT0oKGNbKGNbaj4+Ml18MCkrMzY+PjJdfDApIT0wXjEpJjE7Y1trPj4yXT0wO209Y1trPj4yXXwwO2k9bDtyZXR1cm4gbXwwfWZ1bmN0aW9uIHJKKGIsZSl7Yj1ifDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wO3Q9aTtpPWkrNjR8MDtqPXQrNTJ8MDt1PXQrNDh8MDtrPXQrNDR8MDtyPXQrNDB8MDtzPXQrMzZ8MDtxPXQrMzJ8MDtnPXQrMjh8MDtwPXQrMjR8MDtoPXQrMjB8MDtmPXQrMTZ8MDtuPXQrMTJ8MDtsPXQrOHwwO209dCs0fDA7bz10O2NbdT4+Ml09YjtjW2s+PjJdPWU7Y1tzPj4yXT0wO2Nbcj4+Ml09Y1soY1t1Pj4yXXwwKSsxNj4+Ml07Yj0oY1soY1trPj4yXXwwKSsxNj4+Ml18MCkrMXwwO2lmKChkWyhjWyhjW2s+PjJdfDApKzE2Pj4yXXwwKSsxPj4wXXwwfDApPDEyOCljW2Y+PjJdPWRbYj4+MF07ZWxzZSBiRyhiLGYpfDA7ZG8gaWYoKGNbZj4+Ml18MCk+MCYoY1tmPj4yXXwwKTwxMCYoY1tmPj4yXXwwKSE9Nyl7dT0oY1tyPj4yXXwwKSs2MHwwO2FbdT4+MF09KGRbdT4+MF18MCkmMX1lbHNle2lmKChjW2Y+PjJdfDApPjEwPyhjW2Y+PjJdJjF8MCkhPTA6MCl7dT0oY1tyPj4yXXwwKSs2MHwwO2FbdT4+MF09KGRbdT4+MF18MCkmMjticmVha31hWyhjW3I+PjJdfDApKzYwPj4wXT0wfXdoaWxlKDApO2NbcD4+Ml09KGNbKGNbaz4+Ml18MCkrMTI+PjJdfDApKzg7Zj1jWyhjW2s+PjJdfDApKzEyPj4yXXwwO3U9Y1soY1trPj4yXXwwKSsxMj4+Ml18MDtjW2g+PjJdPWYrKGlHKHUsKCh1fDApPDApPDwzMT4+MzEpfDApO2lmKGNbKGNbcj4+Ml18MCkrND4+Ml18MCl7Yj1jW3I+PjJdfDA7aWYoY1soY1tyPj4yXXwwKSszNis0Pj4yXXwwKXtpZihjW2IrNDg+PjJdfDApYj0oKGNbKGNbcj4+Ml18MCkrNDg+PjJdfDApKyhjW3A+PjJdfDApfDApPihjWyhjW3I+PjJdfDApKzQ+PjJdfDApO2Vsc2UgYj0wO2NbZz4+Ml09YiYxfWVsc2V7aWYoKGNbYiszNis4Pj4yXXwwKTw9KGNbKGNbcj4+Ml18MCkrND4+Ml18MCkpaWYoKGNbKGNbcj4+Ml18MCkrMzYrOD4+Ml18MCk+KGNbY1tyPj4yXT4+Ml18MCkpYj0oU3UoKXwwKSE9MDtlbHNlIGI9MDtlbHNlIGI9MTtjW2c+PjJdPWImMX1pZihjW2c+PjJdfDApe2Nbcz4+Ml09akwoY1tyPj4yXXwwKXwwO2NbKGNbcj4+Ml18MCkrMzYrOD4+Ml09MDtjWyhjW3I+PjJdfDApKzQ4Pj4yXT0wfX11PShjW3I+PjJdfDApKzM2Kzh8MDtjW3U+PjJdPShjW3U+PjJdfDApKyhjW2g+PjJdfDApO2lmKChjW2g+PjJdfDApPihjWyhjW3I+PjJdfDApKzg+PjJdfDApKWNbKGNbcj4+Ml18MCkrOD4+Ml09Y1toPj4yXTtkbyBpZihjWyhjW3I+PjJdfDApKzM2KzQ+PjJdfDApe2Nbbj4+Ml09KGNbKGNbcj4+Ml18MCkrNDg+PjJdfDApKyhjW3A+PjJdfDApO2RvIGlmKChjW24+PjJdfDApPihjWyhjW3I+PjJdfDApKzUyPj4yXXwwKSl7Y1ttPj4yXT0oY1soY1tyPj4yXXwwKSszNj4+Ml18MCktKGNbKGNbcj4+Ml18MCkrMzYrND4+Ml18MCk7Y1tvPj4yXT1jWyhjW3I+PjJdfDApKzUyPj4yXTw8MTt3aGlsZSgxKXtiPWNbbz4+Ml18MDtpZigoY1tvPj4yXXwwKT49KGNbbj4+Ml18MCkpYnJlYWs7Y1tvPj4yXT1iPDwxfWlmKChifDApPihjWyhjW3I+PjJdfDApKzQ+PjJdfDApKWNbbz4+Ml09Y1soY1tyPj4yXXwwKSs0Pj4yXTtpZigoY1tvPj4yXXwwKTwoY1tuPj4yXXwwKSljW28+PjJdPWNbbj4+Ml07dT1jW28+PjJdfDA7Y1tsPj4yXT1jZyhjWyhjW3I+PjJdfDApKzM2KzQ+PjJdfDAsdSwoKHV8MCk8MCk8PDMxPj4zMSl8MDtpZihjW2w+PjJdfDApe2NbKGNbcj4+Ml18MCkrMzY+PjJdPShjW2w+PjJdfDApKyhjW20+PjJdfDApO2NbKGNbcj4+Ml18MCkrMzYrND4+Ml09Y1tsPj4yXTtjWyhjW3I+PjJdfDApKzUyPj4yXT1jW28+PjJdO2JyZWFrfWNbaj4+Ml09Nzt1PWNbaj4+Ml18MDtpPXQ7cmV0dXJuIHV8MH13aGlsZSgwKTtjW3E+PjJdPShjWyhjW3I+PjJdfDApKzM2KzQ+PjJdfDApKyhjWyhjW3I+PjJdfDApKzQ4Pj4yXXwwKTt1PShjW3I+PjJdfDApKzQ4fDA7Y1t1Pj4yXT0oY1t1Pj4yXXwwKSsoKGNbcD4+Ml18MCkrNyYtOCk7aWYoY1soY1tyPj4yXXwwKSszNj4+Ml18MCljWyhjW3E+PjJdfDApKzQ+PjJdPShjWyhjW3I+PjJdfDApKzM2Pj4yXXwwKS0oY1soY1tyPj4yXXwwKSszNis0Pj4yXXwwKX1lbHNle3U9Y1twPj4yXXwwO2NbcT4+Ml09JGYodSwoKHV8MCk8MCk8PDMxPj4zMSl8MDtpZihjW3E+PjJdfDApe2NbKGNbcT4+Ml18MCkrND4+Ml09Y1soY1tyPj4yXXwwKSszNj4+Ml07YnJlYWt9Y1tqPj4yXT03O3U9Y1tqPj4yXXwwO2k9dDtyZXR1cm4gdXwwfXdoaWxlKDApO1RSKChjW3E+PjJdfDApKzh8MCxjWyhjW2s+PjJdfDApKzE2Pj4yXXwwLGNbKGNbaz4+Ml18MCkrMTI+PjJdfDApfDA7Y1tjW3E+PjJdPj4yXT1jWyhjW2s+PjJdfDApKzEyPj4yXTtjWyhjW3I+PjJdfDApKzM2Pj4yXT1jW3E+PjJdO2Nbaj4+Ml09Y1tzPj4yXTt1PWNbaj4+Ml18MDtpPXQ7cmV0dXJuIHV8MH1mdW5jdGlvbiBzSihhLGIsZSl7YT1hfDA7Yj1ifDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wO289aTtpPWkrMTI4fDA7Zz1vKzExNnwwO3I9bysxMTJ8MDtxPW8rMTA4fDA7aD1vKzEwNHwwO3A9bys4MHwwO2Y9bysxMDB8MDtsPW8rOTZ8MDttPW8rOTJ8MDtqPW8rODh8MDtrPW8rNDB8MDtuPW87Y1tyPj4yXT1hO2NbcT4+Ml09YjtjW2g+PjJdPWU7ZT1wO2NbZT4+Ml09MDtjW2UrND4+Ml09MDtlPXA7Y1tlPj4yXT1iSShjW3E+PjJdfDApfDA7Y1tlKzQ+PjJdPTA7akcoayxjW3I+PjJdfDAsMCk7Y1tmPj4yXT1QSShjW3E+PjJdfDAsMCxjW3A+PjJdfDAsMSxrKXwwO2lmKGNbZj4+Ml18MCl7Y1tnPj4yXT1jW2Y+PjJdO3I9Y1tnPj4yXXwwO2k9bztyZXR1cm4gcnwwfWE9Y1trKzE2Pj4yXXwwO2lmKChkW2NbaysxNj4+Ml0+PjBdfDB8MCk8MTI4KWNbbD4+Ml09ZFthPj4wXTtlbHNlIGJHKGEsbCl8MDtpZigoY1tsPj4yXXwwKT4+PjA+PTM/KGNbbD4+Ml18MCk8PShjW2srMTI+PjJdfDApOjApe2E9KGNbaysxNj4+Ml18MCkrKChjW2w+PjJdfDApLTEpfDA7aWYoKGRbKGNbaysxNj4+Ml18MCkrKChjW2w+PjJdfDApLTEpPj4wXXwwfDApPDEyOCljW20+PjJdPWRbYT4+MF07ZWxzZSBiRyhhLG0pfDA7aWYoISgoY1ttPj4yXXwwKT4+PjA8MXwoY1ttPj4yXXwwKT4+PjA+OXwoY1ttPj4yXXwwKT09Nyk/KGNbaj4+Ml09ZFszNTA2MSsoY1ttPj4yXXwwKT4+MF0sKGNbaysxMj4+Ml18MCk+Pj4wPj0oKGNbbD4+Ml18MCkrKGNbaj4+Ml18MCl8MCk+Pj4wKTowKXtkRygoY1trKzE2Pj4yXXwwKSsoKGNbaysxMj4+Ml18MCktKGNbaj4+Ml18MCkpfDAsY1ttPj4yXXwwLG4pfDA7cD1uO3E9Y1twKzQ+PjJdfDA7cj1jW2g+PjJdfDA7Y1tyPj4yXT1jW3A+PjJdO2Nbcis0Pj4yXT1xO1hnKGspO2NbZz4+Ml09MDtyPWNbZz4+Ml18MDtpPW87cmV0dXJuIHJ8MH19WGcoayk7Y1tnPj4yXT1Raig3NDg5MCl8MDtyPWNbZz4+Ml18MDtpPW87cmV0dXJuIHJ8MH1mdW5jdGlvbiB0SihhLGIsZCxlKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wO289aTtpPWkrODB8MDtmPW8rNzJ8MDtnPW8rNjh8MDtwPW8rNjR8MDtoPW8rNjB8MDtqPW8rNTZ8MDtsPW8rNDB8MDtuPW8rNTJ8MDttPW8rNDh8MDtrPW87Y1tnPj4yXT1hO2NbcD4+Ml09YjtjW2g+PjJdPWQ7Y1tqPj4yXT1lO2I9bDtjW2I+PjJdPTA7Y1tiKzQ+PjJdPTA7Y1ttPj4yXT1jWyhjW3A+PjJdfDApKzE2Pj4yXTtiPWw7Y1tiPj4yXT1iSShjW20+PjJdfDApfDA7Y1tiKzQ+PjJdPTA7Yj1sO2E9Y1tiKzQ+PjJdfDA7ZT1sO2Q9Y1tlKzQ+PjJdfDA7aWYoKGF8MCk8MHwoYXwwKT09MCYoY1tiPj4yXXwwKT4+PjA8PTB8KChkfDApPjB8KGR8MCk9PTAmKGNbZT4+Ml18MCk+Pj4wPjIxNDc0ODM2NDcpKXtjW2Nbaj4+Ml0+PjJdPTA7Y1tmPj4yXT1Raig3NDkyMyl8MDtwPWNbZj4+Ml18MDtpPW87cmV0dXJuIHB8MH1qRyhrLGNbZz4+Ml18MCwwKTtjW24+PjJdPVBJKGNbbT4+Ml18MCwwLGNbbD4+Ml18MCwxLGspfDA7aWYoY1tuPj4yXXwwKXtjW2Y+PjJdPWNbbj4+Ml07cD1jW2Y+PjJdfDA7aT1vO3JldHVybiBwfDB9ZWxzZXtwPSRGKGNbaysxMj4+Ml18MCxjW2srMTY+PjJdfDAsY1toPj4yXXwwKXwwO2NbY1tqPj4yXT4+Ml09cDtYZyhrKTtjW2Y+PjJdPTA7cD1jW2Y+PjJdfDA7aT1vO3JldHVybiBwfDB9cmV0dXJuIDB9ZnVuY3Rpb24gdUooYSxiLGQpe2E9YXwwO2I9YnwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wO2Y9aTtpPWkrMTZ8MDtqPWYrMTJ8MDtoPWYrOHwwO2c9Zis0fDA7ZT1mO2Nbaj4+Ml09YTtjW2g+PjJdPWI7Y1tnPj4yXT1kO21nKGNbaj4+Ml18MCk7Y1tlPj4yXT1pTChjW2o+PjJdfDAsY1toPj4yXXwwLGNbZz4+Ml18MCl8MDtpPWY7cmV0dXJuIGNbZT4+Ml18MH1cbmZ1bmN0aW9uIGtEKGUsZixnLGgsaixrLGwsbSxuKXtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDtrPWt8MDtsPWx8MDttPW18MDtuPW58MDt2YXIgbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wLEU9MCxGPTAsRz0wLEg9MCxJPTAsSj0wLEs9MDtLPWk7aT1pKzk2fDA7bz1LKzg0fDA7cD1LKzgwfDA7cT1LKzc2fDA7cj1LKzcyfDA7cz1LKzY4fDA7dD1LKzY0fDA7dT1LKzYwfDA7dj1LKzU2fDA7dz1LKzUyfDA7eD1LKzQ4fDA7Sj1LKzQ0fDA7ej1LKzQwfDA7Qz1LKzM2fDA7RT1LKzMyfDA7Qj1LKzI4fDA7SD1LKzI0fDA7Rj1LKzIwfDA7ST1LKzE2fDA7Rz1LKzEyfDA7QT1LKzh8MDt5PUsrNHwwO0Q9SztjW28+PjJdPWU7Y1twPj4yXT1mO2NbcT4+Ml09ZztjW3I+PjJdPWg7Y1tzPj4yXT1qO2NbdD4+Ml09aztjW3U+PjJdPWw7Y1t2Pj4yXT1tO2Nbdz4+Ml09bjtjW0o+PjJdPWR4KGNbbz4+Ml18MCl8MDtjW3o+PjJdPShjWyhjW28+PjJdfDApKzQwPj4yXXwwKS0xO2NbQz4+Ml09V3ooY1tKPj4yXXwwKXwwO2lmKChjW3Y+PjJdfDApPDApaXgoY1tKPj4yXXwwLDY1LGRbKGNbcz4+Ml18MCkrMjQ+PjBdfDAsY1tDPj4yXXwwKXwwO2NbeD4+Ml09MDt3aGlsZSgxKXtpZigoY1t4Pj4yXXwwKT49KGNbKGNbcz4+Ml18MCkrMjA+PjJdfDApKWJyZWFrO2NbRT4+Ml09KGNbKGNbdD4+Ml18MCkrKGNbeD4+Ml08PDIpPj4yXXwwKSsoY1t1Pj4yXXwwKSsxO2l4KGNbSj4+Ml18MCwzNCxjW0U+PjJdfDAsY1tDPj4yXXwwKXwwO2NbeD4+Ml09KGNbeD4+Ml18MCkrMX1kbyBpZighKGNbdz4+Ml18MCkpe2lmKCEoY1tyPj4yXXwwKSl7Y1tIPj4yXT12eChjW28+PjJdfDApfDA7aXgoY1tKPj4yXXwwLDg1LChjW2NbdD4+Ml0+PjJdfDApKzErKGNbdT4+Ml18MCl8MCxjW0g+PjJdfDApfDA7Y1tCPj4yXT1peChjW0o+PjJdfDAsMTcsY1tIPj4yXXwwLDApfDA7aWYoKGNbdj4+Ml18MCk9PTE/KGNbcT4+Ml18MCk9PShjW2Nbcz4+Ml0+PjJdfDApOjApe2p4KGNbSj4+Ml18MCwzNyxjW3U+PjJdfDAsY1tDPj4yXXwwLGNbSD4+Ml18MCl8MDtKaChjW0o+PjJdfDAsLTExMil9VXooY1tvPj4yXXwwLGNbej4+Ml18MCxjW3A+PjJdfDAsY1txPj4yXXwwLDEwNCk7angoY1tKPj4yXXwwLDMzLGNbej4+Ml18MCwwLGNbSD4+Ml18MCl8MDtZeihjW0o+PjJdfDAsY1tDPj4yXXwwKXwwO0k9Y1tKPj4yXXwwO1p6KEksKHd4KGNbSj4+Ml18MCl8MCktMnwwKTtaeihjW0o+PjJdfDAsY1tCPj4yXXwwKTt4eChjW28+PjJdfDAsY1tIPj4yXXwwKTticmVha31jW0Y+PjJdPWNbKGNbcz4+Ml18MCkrMjA+PjJdO2NbST4+Ml09Q0EoY1tvPj4yXXwwLGNbRj4+Ml18MCl8MDtjW0c+PjJdPXZ4KGNbbz4+Ml18MCl8MDtqeChjW0o+PjJdfDAsMTA0LGNbej4+Ml18MCxjWyhjW3I+PjJdfDApKzQ0Pj4yXXwwLGNbcD4+Ml18MCl8MDtWeihjW28+PjJdfDAsY1tyPj4yXXwwKTtjW3g+PjJdPTA7d2hpbGUoMSl7aWYoKGNbeD4+Ml18MCk+PShjW0Y+PjJdfDApKWJyZWFrO2l4KGNbSj4+Ml18MCw4NCwoY1soY1t0Pj4yXXwwKSsoY1t4Pj4yXTw8Mik+PjJdfDApKzErKGNbdT4+Ml18MCl8MCwoY1tJPj4yXXwwKSsoY1t4Pj4yXXwwKXwwKXwwO2NbeD4+Ml09KGNbeD4+Ml18MCkrMX1pZigoY1t2Pj4yXXwwKT09MT8oY1txPj4yXXwwKT09KGNbY1tzPj4yXT4+Ml18MCk6MCl7SD13eChjW0o+PjJdfDApfDA7Y1tBPj4yXT1IKyhjW0Y+PjJdfDApKzE7Y1t4Pj4yXT0wO3doaWxlKDEpe2lmKChjW3g+PjJdfDApPj0oY1tGPj4yXXwwKSlicmVhaztjW3k+PjJdPShjWyhjW3Q+PjJdfDApKyhjW3g+PjJdPDwyKT4+Ml18MCkrMSsoY1t1Pj4yXXwwKTtjW0Q+PjJdPShiWyhjWyhjW3I+PjJdfDApKzQ+PjJdfDApKyhjW3g+PjJdPDwxKT4+MV18MCkrMSsoY1t1Pj4yXXwwKTtpZigoYlsoY1soY1tyPj4yXXwwKSs0Pj4yXXwwKSsoY1t4Pj4yXTw8MSk+PjFdfDApPT0oYlsoY1txPj4yXXwwKSszMj4+MV18MCkpY1tEPj4yXT1jW3U+PjJdO2p4KGNbSj4+Ml18MCwzNixjW3k+PjJdfDAsY1tBPj4yXXwwLGNbRD4+Ml18MCl8MDtKaChjW0o+PjJdfDAsMTYpO2NbeD4+Ml09KGNbeD4+Ml18MCkrMX1ZeihjW0o+PjJdfDAsY1tDPj4yXXwwKXwwfWg9Y1tKPj4yXXwwO2U9Y1tJPj4yXXwwO2c9Y1tGPj4yXXwwO2w9Y1tHPj4yXXwwO0g9Q0MoY1tjW28+PjJdPj4yXXwwLGNbcj4+Ml18MCl8MDtteChoLDk5LGUsZyxsLEgsY1tGPj4yXXwwKXwwO0loKGNbSj4+Ml18MCwzMSxjW3o+PjJdfDAsY1tDPj4yXXwwLGNbRz4+Ml18MCwwKXwwO3h4KGNbbz4+Ml18MCxjW0c+PjJdfDApO0ZBKGNbbz4+Ml18MCxjW0k+PjJdfDAsY1tGPj4yXXwwKX13aGlsZSgwKTtpZigoKChhWyhjW3M+PjJdfDApKzI0Pj4wXXwwKT09MD8oY1soY1tjW28+PjJdPj4yXXwwKSsyND4+Ml0mMzM1NTQ0MzJ8MCk9PTA6MCk/KGNbKGNbbz4+Ml18MCkrMTI0Pj4yXXwwKT09MDowKT8oYVsoY1tvPj4yXXwwKSsyMD4+MF18MCk9PTA6MCl7dEEoY1tvPj4yXXwwLDc4NywyLDAsLTIsNCk7SD1jW0o+PjJdfDA7ST1jW0M+PjJdfDA7X3ooSCxJKTtJPWNbSj4+Ml18MDtKPWNbej4+Ml18MDtTeihJLDExMSxKKXwwO2k9SztyZXR1cm59aWYoKGNbdj4+Ml18MCk+MD8oZFsoY1tzPj4yXXwwKSsyND4+MF18MCk9PTA6MClWeChjW28+PjJdfDApO2l4KGNbSj4+Ml18MCwxNDQsZFsoY1tzPj4yXXwwKSsyND4+MF18MCxjW3Y+PjJdfDApfDA7SD1jW0o+PjJdfDA7ST1jW0M+PjJdfDA7X3ooSCxJKTtJPWNbSj4+Ml18MDtKPWNbej4+Ml18MDtTeihJLDExMSxKKXwwO2k9SztyZXR1cm59ZnVuY3Rpb24gbEQoYSxiKXthPWF8MDtiPWJ8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTA7aj1pO2k9aSszMnwwO2U9aisxNnwwO2s9aisxMnwwO2Y9ais4fDA7aD1qKzR8MDtnPWo7Y1trPj4yXT1hO2NbZj4+Ml09YjtiPWNbaz4+Ml18MDtpZihjWyhjW2s+PjJdfDApKzEyND4+Ml18MCliPWNbYisxMjQ+PjJdfDA7Y1toPj4yXT1iO2RvIGlmKGNbKGNbaD4+Ml18MCkrNDY4Pj4yXXwwKXtjW2c+PjJdPWNbY1soY1toPj4yXXwwKSs0Njg+PjJdPj4yXTtpZighKChjW2c+PjJdfDApPT0oY1soY1tmPj4yXXwwKSsyOD4+Ml18MCk/KGRbKGNbZj4+Ml18MCkrMjU+PjBdfDB8MCk9PTc6MCkpe2lmKChjW2c+PjJdfDApIT0oY1soY1tmPj4yXXwwKSsyOCs0Pj4yXXwwKSlicmVhaztpZigoZFsoY1tmPj4yXXwwKSsyNSsxPj4wXXwwfDApIT03KWJyZWFrfWNbZT4+Ml09MTtrPWNbZT4+Ml18MDtpPWo7cmV0dXJuIGt8MH13aGlsZSgwKTtjW2U+PjJdPTA7az1jW2U+PjJdfDA7aT1qO3JldHVybiBrfDB9ZnVuY3Rpb24gbUQoYSxlLGYsZyl7YT1hfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7dmFyIGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTA7cz1pO2k9aSs0OHwwO2g9cyszMnwwO2o9cysyOHwwO2s9cysyNHwwO2w9cysyMHwwO209cysxNnwwO249cysxMnwwO3E9cys4fDA7bz1zKzR8MDtwPXM7Y1tqPj4yXT1hO2Nbaz4+Ml09ZTtjW2w+PjJdPWY7Y1ttPj4yXT1nO2Nbbj4+Ml09MDthOndoaWxlKDEpe2lmKChjW24+PjJdfDApPj0oY1soY1trPj4yXXwwKSsyMD4+Ml18MCkpe3I9MTQ7YnJlYWt9Y1txPj4yXT1jWyhjW2s+PjJdfDApKzM2KyhjW24+PjJdPDwzKSs0Pj4yXTtjW28+PjJdPTA7d2hpbGUoMSl7aWYoKGNbbz4+Ml18MCk+PShiWyhjW2o+PjJdfDApKzM0Pj4xXXwwKSlicmVhaztpZighKChjWyhjW2w+PjJdfDApKyhjW28+PjJdPDwyKT4+Ml18MCk8MD8hKChjW20+PjJdfDApIT0wPyhjW28+PjJdfDApPT0oYlsoY1tqPj4yXXwwKSszMj4+MV18MCk6MCk6MCkpcj03O2RvIGlmKChyfDApPT03KXtyPTA7Y1twPj4yXT0oY1soY1tqPj4yXXwwKSs0Pj4yXXwwKSsoY1tvPj4yXTw8NCk7Zj1jW3A+PjJdfDA7aWYoY1txPj4yXXwwKWlmKCEoaWcoY1tmPj4yXXwwLGNbcT4+Ml18MCl8MCkpe3I9OTticmVhayBhfWVsc2UgYnJlYWs7ZWxzZSBpZihkW2YrMTU+PjBdJjEpe3I9MTE7YnJlYWsgYX1lbHNlIGJyZWFrfXdoaWxlKDApO2Nbbz4+Ml09KGNbbz4+Ml18MCkrMX1jW24+PjJdPShjW24+PjJdfDApKzF9aWYoKHJ8MCk9PTkpe2NbaD4+Ml09MTtyPWNbaD4+Ml18MDtpPXM7cmV0dXJuIHJ8MH1lbHNlIGlmKChyfDApPT0xMSl7Y1toPj4yXT0xO3I9Y1toPj4yXXwwO2k9cztyZXR1cm4gcnwwfWVsc2UgaWYoKHJ8MCk9PTE0KXtjW2g+PjJdPTA7cj1jW2g+PjJdfDA7aT1zO3JldHVybiByfDB9cmV0dXJuIDB9ZnVuY3Rpb24gbkQoYSxmLGcsaCxqLGssbCxtKXthPWF8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDtrPWt8MDtsPWx8MDttPW18MDt2YXIgbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MCxFPTAsRj0wLEc9MCxIPTAsST0wLEo9MCxLPTAsTD0wLE09MCxOPTAsTz0wO089aTtpPWkrMTQ0fDA7bj1PKzEyOHwwO289TysxMjR8MDtwPU8rMTIwfDA7cT1PKzExNnwwO3I9TysxMTJ8MDtzPU8rMTA4fDA7dD1PKzEwNHwwO3U9TysxMDB8MDt2PU8rOTZ8MDt3PU8rOTJ8MDtLPU8rODh8MDtMPU8rNTZ8MDtKPU8rNDh8MDt6PU8rNDR8MDtNPU8rNDB8MDtEPU8rMzZ8MDtIPU8rMzJ8MDtCPU8rMjh8MDt4PU8rMTM0fDA7Tj1PKzI0fDA7Rj1PKzIwfDA7RT1PKzE2fDA7ST1PKzEyfDA7Qz1PKzh8MDtBPU8rNHwwO0c9Tzt5PU8rMTMyfDA7Y1tuPj4yXT1hO2Nbbz4+Ml09ZjtjW3A+PjJdPWc7Y1txPj4yXT1oO2Nbcj4+Ml09ajtjW3M+PjJdPWs7Y1t0Pj4yXT1sO2NbdT4+Ml09bTtjW3Y+PjJdPWNbY1tuPj4yXT4+Ml07Y1tLPj4yXT0wO2Nbej4+Ml09MDtjW00+PjJdPWR4KGNbbj4+Ml18MCl8MDtpZigoY1t1Pj4yXXwwKTwwKWNbej4+Ml09aXgoY1tNPj4yXXwwLDY1LGRbKGNbcj4+Ml18MCkrMjQ+PjBdfDAsMCl8MDtjW3c+PjJdPTA7d2hpbGUoMSl7aWYoKGNbdz4+Ml18MCk+PShjWyhjW3I+PjJdfDApKzIwPj4yXXwwKSlicmVhaztpZihjW3E+PjJdfDApaz1iWyhjWyhjW3E+PjJdfDApKzQ+PjJdfDApKyhjW3c+PjJdPDwxKT4+MV18MDtlbHNlIGs9LTE7Ylt4Pj4xXT1rO2NbRD4+Ml09b0QoY1tuPj4yXXwwLGNbcD4+Ml18MCxjW3Q+PjJdfDAsYlt4Pj4xXXwwKXwwO2lmKGNbcz4+Ml18MClrPWNbKGNbcz4+Ml18MCkrKGNbdz4+Ml08PDIpPj4yXXwwO2Vsc2Ugaz1jWyhjW3I+PjJdfDApKzM2Pj4yXXwwO2JbeD4+MV09aztjW04+PjJdPWNbKGNbKGNbY1tyPj4yXT4+Ml18MCkrND4+Ml18MCkrKGJbeD4+MV08PDQpPj4yXTtjW0g+PjJdPVd2KGNbdj4+Ml18MCw1NSxjW04+PjJdfDApfDA7Y1tCPj4yXT1FdihjW24+PjJdfDAsMzcsY1tEPj4yXXwwLGNbSD4+Ml18MCwwKXwwO2NbSz4+Ml09d3ooY1t2Pj4yXXwwLGNbSz4+Ml18MCxjW0I+PjJdfDApfDA7Y1t3Pj4yXT0oY1t3Pj4yXXwwKSsxfWlmKChjW3U+PjJdfDApPjA/KGNbcD4+Ml18MCk9PShjW2Nbcj4+Ml0+PjJdfDApOjApe2lmKCEoZFsoY1twPj4yXXwwKSs0Mj4+MF0mMzIpKXtjW0U+PjJdPW9EKGNbbj4+Ml18MCxjW3A+PjJdfDAsY1t0Pj4yXXwwLC0xKXwwO2NbST4+Ml09cEQoY1t2Pj4yXXwwLGNbcD4+Ml18MCxjWyhjW28+PjJdfDApKzgrNDQ+PjJdfDAsLTEpfDA7Y1tGPj4yXT1FdihjW24+PjJdfDAsMzYsY1tFPj4yXXwwLGNbST4+Ml18MCwwKXwwfWVsc2V7Y1tBPj4yXT0wO2NbRz4+Ml09SmooY1twPj4yXXwwKXwwO2Nbdz4+Ml09MDt3aGlsZSgxKXtpZigoY1t3Pj4yXXwwKT49KGVbKGNbRz4+Ml18MCkrNTA+PjFdfDApKWJyZWFrO2JbeT4+MV09YlsoY1soY1txPj4yXXwwKSs0Pj4yXXwwKSsoY1t3Pj4yXTw8MSk+PjFdfDA7Y1tFPj4yXT1vRChjW24+PjJdfDAsY1twPj4yXXwwLGNbdD4+Ml18MCxiW3k+PjFdfDApfDA7Y1tJPj4yXT1wRChjW3Y+PjJdfDAsY1twPj4yXXwwLGNbKGNbbz4+Ml18MCkrOCs0ND4+Ml18MCxiW3k+PjFdfDApfDA7Y1tDPj4yXT1FdihjW24+PjJdfDAsMzcsY1tFPj4yXXwwLGNbST4+Ml18MCwwKXwwO2NbQT4+Ml09d3ooY1t2Pj4yXXwwLGNbQT4+Ml18MCxjW0M+PjJdfDApfDA7Y1t3Pj4yXT0oY1t3Pj4yXXwwKSsxfWNbRj4+Ml09RXYoY1tuPj4yXXwwLDE5LGNbQT4+Ml18MCwwLDApfDB9Y1tLPj4yXT13eihjW3Y+PjJdfDAsY1tLPj4yXXwwLGNbRj4+Ml18MCl8MH07Y1tMPj4yXT0wO2NbTCs0Pj4yXT0wO2NbTCs4Pj4yXT0wO2NbTCsxMj4+Ml09MDtjW0wrMTY+PjJdPTA7Y1tMKzIwPj4yXT0wO2NbTCsyND4+Ml09MDtjW0wrMjg+PjJdPTA7Y1tMKzQ+PjJdPWNbbz4+Ml07Y1tMPj4yXT1jW24+PjJdO0F5KEwsY1tLPj4yXXwwKXwwO2NbSj4+Ml09cUQoY1tuPj4yXXwwLGNbbz4+Ml18MCxjW0s+PjJdfDAsMCwwLDAsMCl8MDtpeChjW00+PjJdfDAsMTQ0LGRbKGNbcj4+Ml18MCkrMjQ+PjBdfDAsY1t1Pj4yXXwwKXwwO2lmKGNbSj4+Ml18MClyRChjW0o+PjJdfDApO2l2KGNbdj4+Ml18MCxjW0s+PjJdfDApO2lmKCEoY1t6Pj4yXXwwKSl7aT1PO3JldHVybn1aeihjW00+PjJdfDAsY1t6Pj4yXXwwKTtpPU87cmV0dXJufWZ1bmN0aW9uIG9EKGQsZSxmLGcpe2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO3ZhciBoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MDtxPWk7aT1pKzMyfDA7aD1xKzI0fDA7aj1xKzIwfDA7az1xKzE2fDA7bD1xKzI4fDA7bz1xKzEyfDA7bj1xKzh8MDtwPXErNHwwO209cTtjW2g+PjJdPWQ7Y1tqPj4yXT1lO2Nbaz4+Ml09ZjtiW2w+PjFdPWc7Y1ttPj4yXT1jW2NbaD4+Ml0+PjJdO2Nbbz4+Ml09V3YoY1ttPj4yXXwwLDE1NywwKXwwO2lmKCEoY1tvPj4yXXwwKSl7cD1jW28+PjJdfDA7aT1xO3JldHVybiBwfDB9aWYoKGJbbD4+MV18MCk+PTA/KGJbbD4+MV18MCkhPShiWyhjW2o+PjJdfDApKzMyPj4xXXwwKTowKXtjW24+PjJdPShjWyhjW2o+PjJdfDApKzQ+PjJdfDApKyhiW2w+PjFdPDw0KTtjWyhjW28+PjJdfDApKzI4Pj4yXT0oY1trPj4yXXwwKSsoYltsPj4xXXwwKSsxO2FbKGNbbz4+Ml18MCkrMT4+MF09YVsoY1tuPj4yXXwwKSsxMz4+MF18MDtjW3A+PjJdPWNbKGNbbj4+Ml18MCkrOD4+Ml07aWYoIShjW3A+PjJdfDApKWNbcD4+Ml09Y1tjWyhjW20+PjJdfDApKzg+PjJdPj4yXTtjW28+PjJdPVd5KGNbaD4+Ml18MCxjW28+PjJdfDAsY1twPj4yXXwwKXwwO3A9Y1tvPj4yXXwwO2k9cTtyZXR1cm4gcHwwfWNbKGNbbz4+Ml18MCkrMjg+PjJdPWNbaz4+Ml07YVsoY1tvPj4yXXwwKSsxPj4wXT02ODtwPWNbbz4+Ml18MDtpPXE7cmV0dXJuIHB8MH1mdW5jdGlvbiBwRChhLGQsZSxmKXthPWF8MDtkPWR8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTA7bD1pO2k9aSszMnwwO209bCsxMnwwO2c9bCs4fDA7aD1sKzR8MDtqPWwrMTZ8MDtrPWw7Y1ttPj4yXT1hO2NbZz4+Ml09ZDtjW2g+PjJdPWU7YltqPj4xXT1mO2Nbaz4+Ml09V3YoY1ttPj4yXXwwLDE1MiwwKXwwO2lmKCEoY1trPj4yXXwwKSl7bT1jW2s+PjJdfDA7aT1sO3JldHVybiBtfDB9Y1soY1trPj4yXXwwKSs0ND4+Ml09Y1tnPj4yXTtjWyhjW2s+PjJdfDApKzI4Pj4yXT1jW2g+PjJdO2JbKGNbaz4+Ml18MCkrMzI+PjFdPWJbaj4+MV18MDttPWNbaz4+Ml18MDtpPWw7cmV0dXJuIG18MH1mdW5jdGlvbiBxRChmLGcsaCxqLGssbCxtKXtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDtrPWt8MDtsPWx8MDttPW18MDt2YXIgbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsRD0wLEU9MCxGPTAsRz0wLEg9MCxJPTAsSj0wLEs9MCxMPTAsTT0wLE49MCxPPTAsUD0wLFE9MCxSPTAsUz0wLFQ9MCxVPTAsVj0wLFc9MCxYPTAsWT0wLFo9MCxfPTAsJD0wLGFhPTAsYmE9MCxjYT0wO2NhPWk7aT1pKzE5MnwwO249Y2ErMjR8MDtxPWNhKzE4MHwwO3I9Y2ErMTc2fDA7cz1jYSsxNzJ8MDtvPWNhKzE2OHwwO3Q9Y2ErMTY0fDA7dT1jYSsxNjB8MDt2PWNhKzE4NHwwO3c9Y2ErMTU2fDA7cD1jYSsxNTJ8MDtJPWNhKzE0OHwwO1c9Y2ErMTQ0fDA7Xz1jYSsxNDB8MDtKPWNhKzE2fDA7WT1jYSsxMjB8MDtSPWNhKzExNnwwO1A9Y2ErMTEyfDA7UT1jYSsxMDh8MDtHPWNhKzEwNHwwO0I9Y2ErMTAwfDA7WD1jYSs5NnwwO3o9Y2ErMTg2fDA7Wj1jYSs4fDA7VT1jYSs5MnwwO009Y2ErODh8MDskPWNhKzg0fDA7QT1jYSs4MHwwO1M9Y2ErNzZ8MDtFPWNhKzcyfDA7VD1jYSs2OHwwO1Y9Y2ErNjR8MDtEPWNhKzYwfDA7Sz1jYSs1NnwwO3k9Y2E7SD1jYSs1MnwwO049Y2ErNDh8MDtGPWNhKzQ0fDA7TD1jYSs0MHwwO089Y2ErMzZ8MDt4PWNhKzMyfDA7YWE9Y2ErMjh8MDtjW3I+PjJdPWY7Y1tzPj4yXT1nO2Nbbz4+Ml09aDtjW3Q+PjJdPWo7Y1t1Pj4yXT1rO2Jbdj4+MV09bDtjW3c+PjJdPW07Y1tfPj4yXT1jWyhjW3I+PjJdfDApKzg+PjJdO2Fbej4+MF09MDtjW0I+PjJdPWNbY1tyPj4yXT4+Ml07Y1tZPj4yXT0wO2NbWSs0Pj4yXT0wO2NbWSs4Pj4yXT0wO2NbWSsxMj4+Ml09MDtjW1krMTY+PjJdPTA7aWYoKGNbdD4+Ml18MCkhPTA/KGNbY1t0Pj4yXT4+Ml18MCk+PTY0OjApY1t0Pj4yXT0wO2NbWSs4Pj4yXT1jW3Q+PjJdO2lmKGVbKGNbQj4+Ml18MCkrNjQ+PjFdJjMyKWJbdj4+MV09ZVt2Pj4xXSYtMjU3O2lmKChjW2Nbcz4+Ml0+PjJdfDApPjY0KXtiYT1jW3I+PjJdfDA7Y1tuPj4yXT02NDtFaChiYSwzNDQwNCxuKTtjW3E+PjJdPTA7YmE9Y1txPj4yXXwwO2k9Y2E7cmV0dXJuIGJhfDB9aWYoZVt2Pj4xXSYzMiltPTE7ZWxzZSBtPWNbY1tzPj4yXT4+Ml18MDtjW0k+PjJdPW07Y1twPj4yXT04MzIrKCgoY1tJPj4yXXwwKS0xfDApKjgwfDApKzcmLTg7Y1tXPj4yXT1WdyhjW0I+PjJdfDAsKGNbcD4+Ml18MCkrNzJ8MCwwKXwwO2E6ZG8gaWYoIShhWyhjW0I+PjJdfDApKzY5Pj4wXXwwKSl7Y1tjW1c+PjJdPj4yXT1jW3I+PjJdO2NbKGNbVz4+Ml18MCkrND4+Ml09Y1tzPj4yXTtjWyhjW1c+PjJdfDApKzg+PjJdPWNbdD4+Ml07Y1soY1tXPj4yXXwwKSsxMj4+Ml09Y1t1Pj4yXTtjWyhjW1c+PjJdfDApKzIwKzQ+PjJdPS0xO2NbKGNbVz4+Ml18MCkrMjA+PjJdPS0xO2FbKGNbVz4+Ml18MCkrNDI+PjBdPWNbST4+Ml07bT1XeihjW18+PjJdfDApfDA7Y1soY1tXPj4yXXwwKSsyOD4+Ml09bTtjWyhjW1c+PjJdfDApKzMyPj4yXT1tO2JbKGNbVz4+Ml18MCkrNDA+PjFdPWJbdj4+MV18MDtiWyhjW1c+PjJdfDApKzE2Pj4xXT1jW3c+PjJdO2NbKGNbVz4+Ml18MCkrMzY+PjJdPWNbKGNbcj4+Ml18MCkrMTM2Pj4yXTttPShjW1c+PjJdfDApKzQzfDA7az1tKzM3fDA7ZG97YVttPj4wXT0wO209bSsxfDB9d2hpbGUoKG18MCk8KGt8MCkpO1ZSKChjW1c+PjJdfDApKzc1MnwwLDAsNzIrKChjW0k+PjJdfDApKjgwfDApfDApfDA7Y1tSPj4yXT0oY1tXPj4yXXwwKSs0ODg7Y1tZPj4yXT1jW1c+PjJdO2NbWSs0Pj4yXT0oY1tXPj4yXXwwKSs4MDtjW1krMTI+PjJdPShjW1c+PjJdfDApKyhjW3A+PjJdfDApO3lEKGNbWSsxMj4+Ml18MCk7Y1tjW1I+PjJdPj4yXT0wO0JEKChjW1c+PjJdfDApKzgwfDAsY1tXPj4yXXwwKTtDRCgoY1tXPj4yXXwwKSs4MHwwLGNbbz4+Ml18MCwyOCk7Y1tHPj4yXT0wO3doaWxlKDEpe209KGNbST4+Ml18MCk9PTA7aWYoKGNbRz4+Ml18MCk+PShjWyhjW1krND4+Ml18MCkrMTI+PjJdfDApKWJyZWFrO2lmKCEoIW0/KEJCKGNbKGNbKGNbWSs0Pj4yXXwwKSsyMD4+Ml18MCkrKChjW0c+PjJdfDApKjQ4fDApPj4yXXwwKXwwKT09MDowKSl7aUIoY1tyPj4yXXwwLGNbKGNbKGNbWSs0Pj4yXXwwKSsyMD4+Ml18MCkrKChjW0c+PjJdfDApKjQ4fDApPj4yXXwwLGNbKGNbVz4+Ml18MCkrMzI+PjJdfDAsMTYpO3A9KGNbKGNbWSs0Pj4yXXwwKSsyMD4+Ml18MCkrKChjW0c+PjJdfDApKjQ4fDApKzEwfDA7YltwPj4xXT1lW3A+PjFdfDR9Y1tHPj4yXT0oY1tHPj4yXXwwKSsxfWlmKG0pe2lmKGNbdD4+Ml18MClhWyhjW1c+PjJdfDApKzQzPj4wXT1jW2NbdD4+Ml0+PjJdO2lmKGVbdj4+MV0mMjU2KWFbKGNbVz4+Ml18MCkrNDc+PjBdPTF9Y1tHPj4yXT0wO3doaWxlKDEpe2lmKChjW0c+PjJdfDApPj0oY1tjW3M+PjJdPj4yXXwwKSlicmVhaztERChjW1I+PjJdfDAsY1soY1tzPj4yXXwwKSs4KygoY1tHPj4yXXwwKSo3MnwwKSs0ND4+Ml18MCk7RUQoY1tyPj4yXXwwLChjW3M+PjJdfDApKzgrKChjW0c+PjJdfDApKjcyfDApfDAsKGNbVz4+Ml18MCkrODB8MCk7Y1tHPj4yXT0oY1tHPj4yXXwwKSsxfUZEKGNbcz4+Ml18MCwoY1tXPj4yXXwwKSs4MHwwKTtpZighKGFbKGNbQj4+Ml18MCkrNjk+PjBdfDApKXtkbyBpZihlW3Y+PjFdJjI1Nil7aWYoR0QoY1tyPj4yXXwwLGNbcz4+Ml18MCwoY1tXPj4yXXwwKSs4MHwwLGNbdT4+Ml18MCl8MCl7YVsoY1tXPj4yXXwwKSs0Nz4+MF09MTticmVha31pZighKGNbdD4+Ml18MCkpe3Q9KGNbVz4+Ml18MCkrNDB8MDtiW3Q+PjFdPWVbdD4+MV18MTI4O2NbKGNbVz4+Ml18MCkrOD4+Ml09Y1t1Pj4yXX19d2hpbGUoMCk7aWYoISgoY1tJPj4yXXwwKT09MT8oSEQoWSl8MCkhPTA6MCkpe2NbWD4+Ml09SUQoWSl8MDtpZihjW1g+PjJdfDApYnJlYWs7SkQoY1tXPj4yXXwwLDApfDA7aWYoYVsoY1tCPj4yXXwwKSs2OT4+MF18MClicmVhaztpZigoY1soY1tXPj4yXXwwKSs4Pj4yXXwwKSE9MD8oSkQoY1tXPj4yXXwwLChiWyhjW1c+PjJdfDApKzcyPj4xXXwwKSsxJjY1NTM1KXwwLChhWyhjW0I+PjJdfDApKzY5Pj4wXXwwKSE9MCk6MClicmVha31pZigoY1soY1tXPj4yXXwwKSs4Pj4yXXwwKT09MD8oY1soY1tCPj4yXXwwKSsyND4+Ml0mMTMxMDcyfDApIT0wOjApe1g9KGNbVz4+Ml18MCkrNjR8MDtjW1g+PjJdPS0xO2NbWCs0Pj4yXT0tMX1pZigoY1soY1tyPj4yXXwwKSszNj4+Ml18MCk9PTA/KGRbKGNbQj4+Ml18MCkrNjk+PjBdfDApPT0wOjApe2I6ZG8gaWYoKChjW3U+PjJdfDApIT0wPyhkWyhjW1c+PjJdfDApKzQyPj4wXXwwKT49MjowKT8oZVsoY1tCPj4yXXwwKSs2ND4+MV0mMTAyNHwwKT09MDowKXt1PUtEKGNbUj4+Ml18MCxjW3U+PjJdfDApfDA7WD1aO2NbWD4+Ml09dTtjW1grND4+Ml09QztpZihjW1krOD4+Ml18MCl7dT1LRChjW1I+PjJdfDAsY1tZKzg+PjJdfDApfDA7dD1aO1I9Y1t0KzQ+PjJdfEM7WD1aO2NbWD4+Ml09Y1t0Pj4yXXx1O2NbWCs0Pj4yXT1SfXdoaWxlKDEpe2lmKChkWyhjW1c+PjJdfDApKzQyPj4wXXwwKTwyKWJyZWFrIGI7Y1tRPj4yXT1jWyhjW1c+PjJdfDApKzc1MisoKChkWyhjW1c+PjJdfDApKzQyPj4wXXwwKS0xfDApKjgwfDApKzY0Pj4yXTtpZighKGRbKGNbKGNbVz4+Ml18MCkrND4+Ml18MCkrOCsoKGRbKGNbUT4+Ml18MCkrMTY+PjBdfDApKjcyfDApKzM2Pj4wXSY4KSlicmVhayBiO2lmKChlW3Y+PjFdJjI1NnwwKT09MD8oY1soY1tRPj4yXXwwKSszNj4+Ml0mNDA5NnwwKT09MDowKWJyZWFrIGI7Uj1aO1g9KGNbUT4+Ml18MCkrOHwwO2lmKChjW1I+PjJdJmNbWD4+Ml18MCkhPTA/MTooY1tSKzQ+PjJdJmNbWCs0Pj4yXXwwKSE9MClicmVhayBiO2NbTT4+Ml09KGNbKGNbWSs0Pj4yXXwwKSsyMD4+Ml18MCkrKChjWyhjW1krND4+Ml18MCkrMTI+PjJdfDApKjQ4fDApO2NbVT4+Ml09Y1soY1tZKzQ+PjJdfDApKzIwPj4yXTt3aGlsZSgxKXtpZigoY1tVPj4yXXwwKT4+PjA+PShjW00+PjJdfDApPj4+MClicmVhaztSPShjW1U+PjJdfDApKzQwfDA7WD0oY1tRPj4yXXwwKSs4fDA7aWYoKChjW1I+PjJdJmNbWD4+Ml18MCkhPTA/MTooY1tSKzQ+PjJdJmNbWCs0Pj4yXXwwKSE9MCk/KGNbKGNbY1tVPj4yXT4+Ml18MCkrND4+Ml0mMXwwKT09MDowKWJyZWFrO2NbVT4+Ml09KGNbVT4+Ml18MCkrNDh9aWYoKGNbVT4+Ml18MCk+Pj4wPChjW00+PjJdfDApPj4+MClicmVhayBiO1g9KGNbVz4+Ml18MCkrNDJ8MDthW1g+PjBdPShhW1g+PjBdfDApKy0xPDwyND4+MjQ7Y1tJPj4yXT0oY1tJPj4yXXwwKSstMX19d2hpbGUoMCk7Wj0oY1tjW1c+PjJdPj4yXXwwKSsxMzZ8MDtjW1o+PjJdPShjW1o+PjJdfDApKyhiWyhjW1c+PjJdfDApKzcyPj4xXXwwKTtkbyBpZihlW3Y+PjFdJjQpe2NbJD4+Ml09Y1soY1soY1tXPj4yXXwwKSs3NTIrNjQ+PjJdfDApKzM2Pj4yXTtjW0E+PjJdPShjWyQ+PjJdJjQwOTZ8MCkhPTAmMTtpZighKGNbQT4+Ml18MCkpe2lmKCEoZVt2Pj4xXSY4KSlicmVhaztpZihjWyQ+PjJdJjEwMjQpYnJlYWt9YVsoY1tXPj4yXXwwKSs0NT4+MF09KGNbQT4+Ml18MCkhPTA/MToyO2lmKChkWyhjWyhjW3M+PjJdfDApKzgrMTY+PjJdfDApKzQyPj4wXSYzMnwwKT09MD8oY1skPj4yXSY2NHwwKSE9MDowKXtpZihlW3Y+PjFdJjgpYVt6Pj4wXT04O2NbKGNbKGNbVz4+Ml18MCkrNzUyKzY0Pj4yXXwwKSszNj4+Ml09Y1skPj4yXSYtNjV9fXdoaWxlKDApO2NbRz4+Ml09MDtjW1A+PjJdPShjW1c+PjJdfDApKzc1Mjt3aGlsZSgxKXtpZigoY1tHPj4yXXwwKT49KGNbST4+Ml18MCkpYnJlYWs7Y1tUPj4yXT0oY1tzPj4yXXwwKSs4KygoZFsoY1tQPj4yXXwwKSs0ND4+MF18MCkqNzJ8MCk7Y1tTPj4yXT1jWyhjW1Q+PjJdfDApKzE2Pj4yXTtjW0U+PjJdPUZoKGNbQj4+Ml18MCxjWyhjW1M+PjJdfDApKzY0Pj4yXXwwKXwwO2NbUT4+Ml09Y1soY1tQPj4yXXwwKSs2ND4+Ml07YzpkbyBpZigoZFsoY1tTPj4yXXwwKSs0Mj4+MF0mMnwwKT09MD8oY1soY1tTPj4yXXwwKSsxMj4+Ml18MCk9PTA6MCl7aWYoY1soY1tRPj4yXXwwKSszNj4+Ml0mMTAyNCl7Y1tWPj4yXT1VeChjW0I+PjJdfDAsY1tTPj4yXXwwKXwwO2NbRD4+Ml09Y1soY1tUPj4yXXwwKSs0ND4+Ml07bXgoY1tfPj4yXXwwLDE1NSxjW0Q+PjJdfDAsMCwwLGNbVj4+Ml18MCwtMTApfDA7YnJlYWt9aWYoZFsoY1tTPj4yXXwwKSs0Mj4+MF0mMTYpYnJlYWs7ZG8gaWYoIShjWyhjW1E+PjJdfDApKzM2Pj4yXSY2NCkpe2lmKGVbdj4+MV0mMzIpYnJlYWs7Y1tLPj4yXT0xMDQ7aWYoZFsoY1tXPj4yXXwwKSs0NT4+MF18MCl7Y1tLPj4yXT0xMDU7Y1soY1tXPj4yXXwwKSsyMD4+Ml09Y1soY1tUPj4yXXwwKSs0ND4+Ml19VXooY1tyPj4yXXwwLGNbKGNbVD4+Ml18MCkrNDQ+PjJdfDAsY1tFPj4yXXwwLGNbUz4+Ml18MCxjW0s+PjJdfDApO2RvIGlmKCEoZFsoY1tXPj4yXXwwKSs0NT4+MF18MCkpe2lmKChiWyhjW1M+PjJdfDApKzM0Pj4xXXwwKT49NjQpYnJlYWs7aWYoZFsoY1tTPj4yXXwwKSs0Mj4+MF0mMzIpYnJlYWs7WT0oY1tUPj4yXXwwKSs1NnwwO1o9Y1tZKzQ+PjJdfDA7JD15O2NbJD4+Ml09Y1tZPj4yXTtjWyQrND4+Ml09WjtjW0g+PjJdPTA7d2hpbGUoMSl7JD15O2lmKCEoKGNbJD4+Ml18MCkhPTB8KGNbJCs0Pj4yXXwwKSE9MCkpYnJlYWs7Wj15O1o9U1IoY1taPj4yXXwwLGNbWis0Pj4yXXwwLDEpfDA7JD15O2NbJD4+Ml09WjtjWyQrND4+Ml09QztjW0g+PjJdPShjW0g+PjJdfDApKzF9TWgoY1tfPj4yXXwwLC0xLGNbSD4+Ml18MCwtMTQpfXdoaWxlKDApO0poKGNbXz4+Ml18MCxhW3o+PjBdfDApO2JyZWFrIGN9d2hpbGUoMCk7VHooY1tyPj4yXXwwLGNbRT4+Ml18MCxjWyhjW1M+PjJdfDApKzI4Pj4yXXwwLDAsY1tjW1M+PjJdPj4yXXwwKX13aGlsZSgwKTtkbyBpZihjWyhjW1E+PjJdfDApKzM2Pj4yXSY1MTIpe2NbTj4+Ml09Y1soY1tRPj4yXXwwKSsyNCs4Pj4yXTtjW0w+PjJdPTEwNDtkbyBpZighKGRbKGNbUz4+Ml18MCkrNDI+PjBdJjMyKSliYT05MztlbHNle2lmKChhWyhjW04+PjJdfDApKzU1Pj4wXSYzfDApIT0yKXtiYT05MzticmVha31pZighKGVbdj4+MV0mMzIpKXtiYT05MzticmVha31jW0Y+PjJdPWNbKGNbUD4+Ml18MCkrND4+Ml07Y1tMPj4yXT0wfXdoaWxlKDApO2Q6ZG8gaWYoKGJhfDApPT05Myl7YmE9MDtpZighKGRbKGNbVz4+Ml18MCkrNDU+PjBdfDApKXtkbyBpZihjW3c+PjJdfDApe2lmKCEoZVt2Pj4xXSYzMikpYnJlYWs7Y1tGPj4yXT1jW3c+PjJdO2NbTD4+Ml09MTAzO2JyZWFrIGR9d2hpbGUoMCk7Wj0oY1tyPj4yXXwwKSs0MHwwOyQ9Y1taPj4yXXwwO2NbWj4+Ml09JCsxO2NbRj4+Ml09JDticmVha31jW08+PjJdPWNbKGNbKGNbVD4+Ml18MCkrMTY+PjJdfDApKzg+PjJdO2NbRj4+Ml09Y1t3Pj4yXTt3aGlsZSgxKXtpZighKGNbTz4+Ml18MCkpYnJlYWs7aWYoKGNbTz4+Ml18MCk9PShjW04+PjJdfDApKWJyZWFrO2NbRj4+Ml09KGNbRj4+Ml18MCkrMTtjW08+PjJdPWNbKGNbTz4+Ml18MCkrMjA+PjJdfWNbTD4+Ml09MTA1O2NbKGNbVz4+Ml18MCkrMjArND4+Ml09Y1tGPj4yXX13aGlsZSgwKTtjWyhjW1A+PjJdfDApKzg+PjJdPWNbRj4+Ml07aWYoIShjW0w+PjJdfDApKWJyZWFrO2p4KGNbXz4+Ml18MCxjW0w+PjJdfDAsY1tGPj4yXXwwLGNbKGNbTj4+Ml18MCkrNDQ+PjJdfDAsY1tFPj4yXXwwKXwwO1Z6KGNbcj4+Ml18MCxjW04+PjJdfDApO2lmKCEoY1soY1tRPj4yXXwwKSszNj4+Ml0mMTUpKWJyZWFrO2lmKGNbKGNbUT4+Ml18MCkrMzY+PjJdJjMyNzcwKWJyZWFrO2lmKGVbKGNbVz4+Ml18MCkrNDA+PjFdJjEpYnJlYWs7SmgoY1tfPj4yXXwwLDIpfXdoaWxlKDApO2lmKChjW0U+PjJdfDApPj0wKXN4KGNbcj4+Ml18MCxjW0U+PjJdfDApO2NbRz4+Ml09KGNbRz4+Ml18MCkrMTtjW1A+PjJdPShjW1A+PjJdfDApKzgwfWJhPXd4KGNbXz4+Ml18MCl8MDtjWyhjW1c+PjJdfDApKzUyPj4yXT1iYTtpZighKGFbKGNbQj4+Ml18MCkrNjk+PjBdfDApKXtiYT1KO2NbYmE+PjJdPS0xO2NbYmErND4+Ml09LTE7Y1tHPj4yXT0wO3doaWxlKDEpe2lmKChjW0c+PjJdfDApPj0oY1tJPj4yXXwwKSlicmVhaztjW1A+PjJdPShjW1c+PjJdfDApKzc1MisoKGNbRz4+Ml18MCkqODB8MCk7Y1thYT4+Ml09Y1soY1soY1tQPj4yXXwwKSs2ND4+Ml18MCkrMzY+PjJdO2lmKChjWyhjWyhjW1A+PjJdfDApKzY0Pj4yXXwwKSszNj4+Ml0mMTYzODR8MCkhPTA/KGJhPUosTEQoY1tyPj4yXXwwLChjW1c+PjJdfDApKzgwfDAsKGNbcz4+Ml18MCkrOCsoKGRbKGNbUD4+Ml18MCkrNDQ+PjBdfDApKjcyfDApfDAsY1tiYT4+Ml18MCxjW2JhKzQ+PjJdfDAsY1tQPj4yXXwwKSwoYVsoY1tCPj4yXXwwKSs2OT4+MF18MCkhPTApOjApYnJlYWsgYTtjW3g+PjJdPU1EKGNbcj4+Ml18MCxjW3M+PjJdfDAsY1tQPj4yXXwwLGNbRz4+Ml18MCxkWyhjW1A+PjJdfDApKzQ0Pj4wXXwwLGJbdj4+MV18MCl8MDskPXd4KGNbXz4+Ml18MCl8MDtjWyhjW1A+PjJdfDApKzMyPj4yXT0kOyQ9SjskPU5EKGNbVz4+Ml18MCxjW0c+PjJdfDAsY1skPj4yXXwwLGNbJCs0Pj4yXXwwKXwwO2JhPUo7Y1tiYT4+Ml09JDtjW2JhKzQ+PjJdPUM7Y1soY1tXPj4yXXwwKSsyOD4+Ml09Y1soY1tQPj4yXXwwKSsyND4+Ml07ZG8gaWYoKGNbYWE+PjJdJjgxOTJ8MCk9PTA/KGVbdj4+MV0mMzJ8MCkhPTA6MClicmVhazt3aGlsZSgwKTtjW0c+PjJdPShjW0c+PjJdfDApKzF9Y1txPj4yXT1jW1c+PjJdO2JhPWNbcT4+Ml18MDtpPWNhO3JldHVybiBiYXwwfX19fWVsc2V7VGYoY1tCPj4yXXwwLGNbVz4+Ml18MCk7Y1tXPj4yXT0wfXdoaWxlKDApO2lmKGNbVz4+Ml18MCl7Y1soY1tyPj4yXXwwKSsxMzY+PjJdPWNbKGNbVz4+Ml18MCkrMzY+PjJdO3REKGNbQj4+Ml18MCxjW1c+PjJdfDApfWNbcT4+Ml09MDtiYT1jW3E+PjJdfDA7aT1jYTtyZXR1cm4gYmF8MH1mdW5jdGlvbiByRChmKXtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MCxFPTA7RT1pO2k9aSs5NnwwO209RSs4MHwwO3Y9RSs3NnwwO0E9RSs3MnwwO289RSs2OHwwO3M9RSs2NHwwO3Q9RSs2MHwwO3o9RSs1NnwwO249RSs1MnwwO2g9RSs0OHwwO2s9RSs0NHwwO2o9RSs0MHwwO2w9RSszNnwwO3A9RSszMnwwO3E9RSsyOHwwO3U9RSsyNHwwO3I9RSsyMHwwO3k9RSsxNnwwO3g9RSsxMnwwO0I9RSs4fDA7Qz1FKzR8MDt3PUU7Y1ttPj4yXT1mO2Nbdj4+Ml09Y1tjW20+PjJdPj4yXTtjW0E+PjJdPWNbKGNbdj4+Ml18MCkrOD4+Ml07Y1t6Pj4yXT1jWyhjW20+PjJdfDApKzQ+PjJdO2Nbbj4+Ml09Y1tjW3Y+PjJdPj4yXTtFQyhjW3Y+PjJdfDApO2Nbbz4+Ml09KGRbKGNbbT4+Ml18MCkrNDI+PjBdfDApLTE7d2hpbGUoMSl7aWYoKGNbbz4+Ml18MCk8MClicmVhaztjW3M+PjJdPShjW20+PjJdfDApKzc1MisoKGNbbz4+Ml18MCkqODB8MCk7Y1t0Pj4yXT1jWyhjW3M+PjJdfDApKzY0Pj4yXTtfeihjW0E+PjJdfDAsY1soY1tzPj4yXXwwKSsyND4+Ml18MCk7aWYoKGRbKGNbcz4+Ml18MCkrNDU+PjBdfDApIT0xNjEpe2p4KGNbQT4+Ml18MCxkWyhjW3M+PjJdfDApKzQ1Pj4wXXwwLGNbKGNbcz4+Ml18MCkrNDg+PjJdfDAsY1soY1tzPj4yXXwwKSs1Mj4+Ml18MCxkWyhjW3M+PjJdfDApKzQ2Pj4wXXwwKXwwO0poKGNbQT4+Ml18MCxhWyhjW3M+PjJdfDApKzQ3Pj4wXXwwKX1hOmRvIGlmKChjWyhjW3Q+PjJdfDApKzM2Pj4yXSYyMDQ4fDApIT0wPyhjWyhjW3M+PjJdfDApKzU2Pj4yXXwwKT4wOjApe196KGNbQT4+Ml18MCxjWyhjW3M+PjJdfDApKzE2Pj4yXXwwKTtjW2o+PjJdPWNbKGNbcz4+Ml18MCkrNTY+PjJdO2Nbaz4+Ml09KGNbKGNbcz4+Ml18MCkrNTYrND4+Ml18MCkrKCgoY1tqPj4yXXwwKS0xfDApKjEyfDApO3doaWxlKDEpe2lmKChjW2o+PjJdfDApPD0wKWJyZWFrIGE7WnooY1tBPj4yXXwwLChjWyhjW2s+PjJdfDApKzQ+PjJdfDApKzF8MCk7aWYoKGRbKGNbaz4+Ml18MCkrOD4+MF18MCkhPTE2MSlpeChjW0E+PjJdfDAsZFsoY1trPj4yXXwwKSs4Pj4wXXwwLGNbY1trPj4yXT4+Ml18MCxjWyhjW2s+PjJdfDApKzQ+PjJdfDApfDA7WnooY1tBPj4yXXwwLChjWyhjW2s+PjJdfDApKzQ+PjJdfDApLTF8MCk7Y1tqPj4yXT0oY1tqPj4yXXwwKSstMTtjW2s+PjJdPShjW2s+PjJdfDApKy0xMn19d2hpbGUoMCk7X3ooY1tBPj4yXXwwLGNbKGNbcz4+Ml18MCkrMTI+PjJdfDApO2lmKGNbKGNbcz4+Ml18MCkrMjA+PjJdfDApe1l6KGNbQT4+Ml18MCxjWyhjW3M+PjJdfDApKzIwPj4yXXwwKXwwO1p6KGNbQT4+Ml18MCxjWyhjW3M+PjJdfDApKzIwPj4yXXwwKTtaeihjW0E+PjJdfDAsKGNbKGNbcz4+Ml18MCkrMjA+PjJdfDApLTJ8MCl9aWYoY1soY1tzPj4yXXwwKSs0MD4+Ml18MClpeChjW0E+PjJdfDAsNjgsKGNbKGNbcz4+Ml18MCkrMzY+PjJdfDApPj4+MSxjWyhjW3M+PjJdfDApKzQwPj4yXXwwKXwwO2lmKGNbY1tzPj4yXT4+Ml18MCl7Y1tsPj4yXT1jWyhjW3Q+PjJdfDApKzM2Pj4yXTtjW2g+PjJdPVN6KGNbQT4+Ml18MCw2NixjW2Nbcz4+Ml0+PjJdfDApfDA7aWYoIShjW2w+PjJdJjY0KSlTeihjW0E+PjJdfDAsMTI0LGNbKGNbej4+Ml18MCkrOCsoKGNbbz4+Ml18MCkqNzJ8MCkrNDQ+PjJdfDApfDA7aWYoIShjW2w+PjJdJjUxMikpe2lmKChjW2w+PjJdJjgxOTJ8MCkhPTA/KGNbKGNbcz4+Ml18MCkrNTY+PjJdfDApIT0wOjApRD0yMn1lbHNlIEQ9MjI7aWYoKER8MCk9PTIyKXtEPTA7U3ooY1tBPj4yXXwwLDEyNCxjWyhjW3M+PjJdfDApKzg+PjJdfDApfDB9Zj1jW0E+PjJdfDA7Zz1jW3M+PjJdfDA7aWYoKGRbKGNbcz4+Ml18MCkrNDU+PjBdfDApPT03MilpeChmLDE0LGNbZys0OD4+Ml18MCxjWyhjW3M+PjJdfDApKzI4Pj4yXXwwKXwwO2Vsc2UgWXooZixjW2crMjg+PjJdfDApfDA7WnooY1tBPj4yXXwwLGNbaD4+Ml18MCl9Y1tvPj4yXT0oY1tvPj4yXXwwKSstMX1feihjW0E+PjJdfDAsY1soY1ttPj4yXXwwKSszMj4+Ml18MCk7Y1tvPj4yXT0wO2Nbcz4+Ml09KGNbbT4+Ml18MCkrNzUyO3doaWxlKDEpe2lmKChjW28+PjJdfDApPj0oZFsoY1ttPj4yXXwwKSs0Mj4+MF18MCkpYnJlYWs7Y1tyPj4yXT0wO2NbeT4+Ml09KGNbej4+Ml18MCkrOCsoKGRbKGNbcz4+Ml18MCkrNDQ+PjBdfDApKjcyfDApO2NbeD4+Ml09Y1soY1t5Pj4yXXwwKSsxNj4+Ml07Y1t0Pj4yXT1jWyhjW3M+PjJdfDApKzY0Pj4yXTtpZigoKGRbKGNbeT4+Ml18MCkrMzYrMT4+MF18MCk+Pj40JjF8MCkhPTA/KGFbKGNbbj4+Ml18MCkrNjk+PjBdfDApPT0wOjApc0QoY1tBPj4yXXwwLGNbKGNbcz4+Ml18MCkrMzI+PjJdfDAsY1soY1tzPj4yXXwwKSs0Pj4yXXwwLGNbKGNbeT4+Ml18MCkrMzI+PjJdfDAsMCk7ZWxzZSBEPTMzO2I6ZG8gaWYoKER8MCk9PTMzKXtEPTA7aWYoKChkWyhjW3g+PjJdfDApKzQyPj4wXSYyfDApPT0wPyhjWyhjW3g+PjJdfDApKzEyPj4yXXwwKT09MDowKT8oZVsoY1ttPj4yXXwwKSs0MD4+MV0mMzJ8MCk9PTA6MCl7Y1tCPj4yXT1jWyhjW3Q+PjJdfDApKzM2Pj4yXTtpZigoZFsoY1ttPj4yXXwwKSs0NT4+MF18MCk9PTA/KGNbQj4+Ml0mNjR8MCk9PTA6MClTeihjW0E+PjJdfDAsMTExLGNbKGNbeT4+Ml18MCkrNDQ+PjJdfDApfDA7aWYoKChjW0I+PjJdJjUxMnwwKSE9MD8oY1tCPj4yXSYxNjY0MHwwKT09MDowKT8oY1soY1tzPj4yXXwwKSs4Pj4yXXwwKSE9KGNbKGNbbT4+Ml18MCkrMjArND4+Ml18MCk6MClTeihjW0E+PjJdfDAsMTExLGNbKGNbcz4+Ml18MCkrOD4+Ml18MCl8MH1mPWNbdD4+Ml18MDtpZighKGNbKGNbdD4+Ml18MCkrMzY+PjJdJjU3Nikpe2lmKGNbZiszNj4+Ml0mODE5MiljW3I+PjJdPWNbKGNbcz4+Ml18MCkrNTY+PjJdfWVsc2UgY1tyPj4yXT1jW2YrMjQrOD4+Ml07aWYoY1tyPj4yXXwwKXtpZigoZFsoY1ttPj4yXXwwKSs0NT4+MF18MCkhPTA/KGRbKGNbKGNbcj4+Ml18MCkrMTI+PjJdfDApKzQyPj4wXSYzMnwwKT09MDowKWJyZWFrO2lmKCEoYVsoY1tuPj4yXXwwKSs2OT4+MF18MCkpe2NbcT4+Ml09d3goY1tBPj4yXXwwKXwwO2NbcD4+Ml09Y1soY1tzPj4yXXwwKSszMj4+Ml07Y1t1Pj4yXT1lQShjW0E+PjJdfDAsY1twPj4yXXwwKXwwO3doaWxlKDEpe2lmKChjW3A+PjJdfDApPj0oY1txPj4yXXwwKSlicmVhayBiO2RvIGlmKChjWyhjW3U+PjJdfDApKzQ+PjJdfDApPT0oY1soY1tzPj4yXXwwKSs0Pj4yXXwwKSl7Zj1jW3U+PjJdfDA7aWYoKGRbY1t1Pj4yXT4+MF18MCkhPTk2KXtpZigoZFtmPj4wXXwwKSE9MTIzKWJyZWFrO2NbKGNbdT4+Ml18MCkrND4+Ml09Y1soY1tzPj4yXXwwKSs4Pj4yXTthW2NbdT4+Ml0+PjBdPS0xMjc7YnJlYWt9Y1tDPj4yXT1jW2YrOD4+Ml07aWYoZFsoY1t4Pj4yXXwwKSs0Mj4+MF0mMzIpe2Nbdz4+Ml09SmooY1t4Pj4yXXwwKXwwO2NbQz4+Ml09YlsoY1soY1t3Pj4yXXwwKSs0Pj4yXXwwKSsoY1tDPj4yXTw8MSk+PjFdfWNbQz4+Ml09KE9BKGNbcj4+Ml18MCxjW0M+PjJdJjY1NTM1KXwwKTw8MTY+PjE2O2lmKChjW0M+PjJdfDApPj0wKXtjWyhjW3U+PjJdfDApKzg+PjJdPWNbQz4+Ml07Y1soY1t1Pj4yXXwwKSs0Pj4yXT1jWyhjW3M+PjJdfDApKzg+PjJdfX13aGlsZSgwKTtjW3A+PjJdPShjW3A+PjJdfDApKzE7Y1t1Pj4yXT0oY1t1Pj4yXXwwKSsyMH19fX13aGlsZSgwKTtjW28+PjJdPShjW28+PjJdfDApKzE7Y1tzPj4yXT0oY1tzPj4yXXwwKSs4MH1jWyhjW3Y+PjJdfDApKzEzNj4+Ml09Y1soY1ttPj4yXXwwKSszNj4+Ml07dEQoY1tuPj4yXXwwLGNbbT4+Ml18MCk7aT1FO3JldHVybn1mdW5jdGlvbiBzRChiLGUsZixnLGgpe2I9YnwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO3ZhciBqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wO3A9aTtpPWkrMzJ8MDtxPXArMjR8MDtqPXArMjB8MDtrPXArMTZ8MDtsPXArMTJ8MDttPXArOHwwO289cCs0fDA7bj1wO2NbcT4+Ml09YjtjW2o+PjJdPWU7Y1trPj4yXT1mO2NbbD4+Ml09ZztjW20+PjJdPWg7Y1tvPj4yXT1lQShjW3E+PjJdfDAsY1tqPj4yXXwwKXwwO2Nbbj4+Ml09d3goY1txPj4yXXwwKXwwO3doaWxlKDEpe2lmKChjW2o+PjJdfDApPj0oY1tuPj4yXXwwKSlicmVhaztkbyBpZigoY1soY1tvPj4yXXwwKSs0Pj4yXXwwKT09KGNbaz4+Ml18MCkpe2g9Y1tvPj4yXXwwO2lmKChkW2Nbbz4+Ml0+PjBdfDB8MCk9PTk2KXthW2g+PjBdPTg0O2NbKGNbbz4+Ml18MCkrND4+Ml09KGNbKGNbbz4+Ml18MCkrOD4+Ml18MCkrKGNbbD4+Ml18MCk7Y1soY1tvPj4yXXwwKSs4Pj4yXT1jWyhjW28+PjJdfDApKzEyPj4yXTtjWyhjW28+PjJdfDApKzEyPj4yXT0wO2JyZWFrfWlmKChkW2g+PjBdfDB8MCk9PTEyMyl7aD1jW28+PjJdfDA7aWYoY1ttPj4yXXwwKXthW2g+PjBdPTkxO2NbKGNbbz4+Ml18MCkrND4+Ml09Y1soY1tvPj4yXXwwKSs4Pj4yXTtjWyhjW28+PjJdfDApKzg+PjJdPTE7YnJlYWt9ZWxzZXthW2g+PjBdPTc5O2NbKGNbbz4+Ml18MCkrND4+Ml09MDtjWyhjW28+PjJdfDApKzEyPj4yXT0wO2JyZWFrfX19d2hpbGUoMCk7Y1tqPj4yXT0oY1tqPj4yXXwwKSsxO2Nbbz4+Ml09KGNbbz4+Ml18MCkrMjB9aT1wO3JldHVybn1mdW5jdGlvbiB0RChhLGIpe2E9YXwwO2I9YnwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MDtrPWk7aT1pKzMyfDA7ZT1rKzE2fDA7Zj1rKzEyfDA7Zz1rKzh8MDtqPWsrNHwwO2g9aztjW2U+PjJdPWE7Y1tmPj4yXT1iO2lmKCEoY1tmPj4yXXwwKSl7aT1rO3JldHVybn1jW2c+PjJdPTA7d2hpbGUoMSl7aWYoKGNbZz4+Ml18MCk+PShkWyhjW2Y+PjJdfDApKzQyPj4wXXwwfDApKWJyZWFrO2Nbaj4+Ml09KGNbZj4+Ml18MCkrNzUyKygoY1tnPj4yXXwwKSo4MHwwKTtpZigoY1soY1tqPj4yXXwwKSs2ND4+Ml18MCkhPTA/KGNbKGNbKGNbaj4+Ml18MCkrNjQ+PjJdfDApKzM2Pj4yXSYyMDQ4fDApIT0wOjApVGYoY1tlPj4yXXwwLGNbKGNbaj4+Ml18MCkrNTYrND4+Ml18MCk7Y1tnPj4yXT0oY1tnPj4yXXwwKSsxfXVEKChjW2Y+PjJdfDApKzgwfDApO3doaWxlKDEpe2lmKCEoY1soY1tmPj4yXXwwKSs1Nj4+Ml18MCkpYnJlYWs7Y1toPj4yXT1jWyhjW2Y+PjJdfDApKzU2Pj4yXTtjWyhjW2Y+PjJdfDApKzU2Pj4yXT1jWyhjW2g+PjJdfDApKzUyPj4yXTt2RChjW2U+PjJdfDAsY1toPj4yXXwwKX1UZihjW2U+PjJdfDAsY1tmPj4yXXwwKTtpPWs7cmV0dXJufWZ1bmN0aW9uIHVEKGEpe2E9YXwwO3ZhciBiPTAsZD0wLGY9MCxnPTAsaD0wO2g9aTtpPWkrMTZ8MDtiPWgrMTJ8MDtnPWgrOHwwO2Q9aCs0fDA7Zj1oO2NbYj4+Ml09YTtjW2Y+PjJdPWNbY1tjW2NbYj4+Ml0+PjJdPj4yXT4+Ml07Y1tnPj4yXT0oY1soY1tiPj4yXXwwKSsxMj4+Ml18MCktMTtjW2Q+PjJdPWNbKGNbYj4+Ml18MCkrMjA+PjJdO3doaWxlKDEpe2lmKChjW2c+PjJdfDApPDApYnJlYWs7aWYoKGVbKGNbZD4+Ml18MCkrMTA+PjFdfDApJjEpaXYoY1tmPj4yXXwwLGNbY1tkPj4yXT4+Ml18MCk7aWYoISgoZVsoY1tkPj4yXXwwKSsxMD4+MV18MCkmMTYpKXtpZigoZVsoY1tkPj4yXXwwKSsxMD4+MV18MCkmMzIpQUQoY1tmPj4yXXwwLGNbKGNbZD4+Ml18MCkrMjg+PjJdfDApfWVsc2UgekQoY1tmPj4yXXwwLGNbKGNbZD4+Ml18MCkrMjg+PjJdfDApO2NbZz4+Ml09KGNbZz4+Ml18MCkrLTE7Y1tkPj4yXT0oY1tkPj4yXXwwKSs0OH1pZigoY1soY1tiPj4yXXwwKSsyMD4+Ml18MCk9PSgoY1tiPj4yXXwwKSsyNHwwKSl7aT1oO3JldHVybn1UZihjW2Y+PjJdfDAsY1soY1tiPj4yXXwwKSsyMD4+Ml18MCk7aT1oO3JldHVybn1mdW5jdGlvbiB2RChhLGIpe2E9YXwwO2I9YnwwO3ZhciBkPTAsZT0wLGY9MDtkPWk7aT1pKzE2fDA7Zj1kKzR8MDtlPWQ7Y1tmPj4yXT1hO2NbZT4+Ml09Yjt3RChjW2Y+PjJdfDAsY1tlPj4yXXwwKTtUZihjW2Y+PjJdfDAsY1tlPj4yXXwwKTtpPWQ7cmV0dXJufWZ1bmN0aW9uIHdEKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wO2Y9aTtpPWkrMTZ8MDtkPWYrNHwwO2U9ZjtjW2Q+PjJdPWE7Y1tlPj4yXT1iO2lmKChjWyhjW2U+PjJdfDApKzQ4Pj4yXXwwKSE9KChjW2U+PjJdfDApKzU2fDApKVRmKGNbZD4+Ml18MCxjWyhjW2U+PjJdfDApKzQ4Pj4yXXwwKTt4RChjW2Q+PjJdfDAsY1tlPj4yXXwwKTt5RChjW2U+PjJdfDApO2k9ZjtyZXR1cm59ZnVuY3Rpb24geEQoYixlKXtiPWJ8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTA7aD1pO2k9aSsxNnwwO2Y9aCs0fDA7Zz1oO2NbZj4+Ml09YjtjW2c+PjJdPWU7aWYoIShjWyhjW2c+PjJdfDApKzM2Pj4yXSYxNzQwOCkpe2k9aDtyZXR1cm59aWYoKGNbKGNbZz4+Ml18MCkrMzY+PjJdJjEwMjR8MCkhPTA/KGRbKGNbZz4+Ml18MCkrMjQrND4+MF18MHwwKSE9MDowKXtLZChjWyhjW2c+PjJdfDApKzI0Kzg+PjJdfDApO2FbKGNbZz4+Ml18MCkrMjQrND4+MF09MDtjWyhjW2c+PjJdfDApKzI0Kzg+PjJdPTA7aT1oO3JldHVybn1pZighKGNbKGNbZz4+Ml18MCkrMzY+PjJdJjE2Mzg0KSl7aT1oO3JldHVybn1pZighKGNbKGNbZz4+Ml18MCkrMjQrOD4+Ml18MCkpe2k9aDtyZXR1cm59VGYoY1tmPj4yXXwwLGNbKGNbKGNbZz4+Ml18MCkrMjQrOD4+Ml18MCkrMTY+PjJdfDApO1RmKGNbZj4+Ml18MCxjWyhjW2c+PjJdfDApKzI0Kzg+PjJdfDApO2NbKGNbZz4+Ml18MCkrMjQrOD4+Ml09MDtpPWg7cmV0dXJufWZ1bmN0aW9uIHlEKGEpe2E9YXwwO3ZhciBkPTAsZT0wO2Q9aTtpPWkrMTZ8MDtlPWQ7Y1tlPj4yXT1hO2NbKGNbZT4+Ml18MCkrNDg+PjJdPShjW2U+PjJdfDApKzU2O2JbKGNbZT4+Ml18MCkrNDA+PjFdPTA7YlsoY1tlPj4yXXwwKSs0ND4+MV09MztjWyhjW2U+PjJdfDApKzM2Pj4yXT0wO2k9ZDtyZXR1cm59ZnVuY3Rpb24gekQoYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTA7ZD1pO2k9aSsxNnwwO2Y9ZCs0fDA7ZT1kO2NbZj4+Ml09YTtjW2U+PjJdPWI7dUQoY1tlPj4yXXwwKTtUZihjW2Y+PjJdfDAsY1tlPj4yXXwwKTtpPWQ7cmV0dXJufWZ1bmN0aW9uIEFEKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wO2Q9aTtpPWkrMTZ8MDtmPWQrNHwwO2U9ZDtjW2Y+PjJdPWE7Y1tlPj4yXT1iO3VEKGNbZT4+Ml18MCk7VGYoY1tmPj4yXXwwLGNbZT4+Ml18MCk7aT1kO3JldHVybn1mdW5jdGlvbiBCRChhLGIpe2E9YXwwO2I9YnwwO3ZhciBkPTAsZT0wLGY9MDtkPWk7aT1pKzE2fDA7ZT1kKzR8MDtmPWQ7Y1tlPj4yXT1hO2NbZj4+Ml09YjtjW2NbZT4+Ml0+PjJdPWNbZj4+Ml07Y1soY1tlPj4yXXwwKSs0Pj4yXT0wO2NbKGNbZT4+Ml18MCkrMTI+PjJdPTA7Y1soY1tlPj4yXXwwKSsxNj4+Ml09ODtjWyhjW2U+PjJdfDApKzIwPj4yXT0oY1tlPj4yXXwwKSsyNDtpPWQ7cmV0dXJufWZ1bmN0aW9uIENEKGIsZSxmKXtiPWJ8MDtlPWV8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MDtsPWk7aT1pKzE2fDA7Zz1sKzh8MDtoPWwrNHwwO2o9bCsxMnwwO2s9bDtjW2c+PjJdPWI7Y1toPj4yXT1lO2Fbaj4+MF09ZjtjW2s+PjJdPWt5KGNbaD4+Ml18MCl8MDthWyhjW2c+PjJdfDApKzg+PjBdPWFbaj4+MF18MDtpZighKGNbaz4+Ml18MCkpe2k9bDtyZXR1cm59Zj1jW2c+PjJdfDA7aWYoKGRbY1trPj4yXT4+MF18MHwwKSE9KGRbaj4+MF18MHwwKSl7V0UoZixjW2g+PjJdfDAsMCl8MDtpPWw7cmV0dXJufWVsc2V7Q0QoZixjWyhjW2s+PjJdfDApKzEyPj4yXXwwLGFbaj4+MF18MCk7Q0QoY1tnPj4yXXwwLGNbKGNbaz4+Ml18MCkrMTY+PjJdfDAsYVtqPj4wXXwwKTtpPWw7cmV0dXJufX1mdW5jdGlvbiBERChhLGIpe2E9YXwwO2I9YnwwO3ZhciBkPTAsZT0wLGY9MDtkPWk7aT1pKzE2fDA7ZT1kKzR8MDtmPWQ7Y1tlPj4yXT1hO2NbZj4+Ml09YjtiPWNbZj4+Ml18MDtmPWNbZT4+Ml18MDthPWNbZj4+Ml18MDtjW2Y+PjJdPWErMTtjWyhjW2U+PjJdfDApKzQrKGE8PDIpPj4yXT1iO2k9ZDtyZXR1cm59ZnVuY3Rpb24gRUQoYSxlLGYpe2E9YXwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wO3I9aTtpPWkrNDh8MDtxPXI7Zz1yKzQwfDA7aD1yKzM2fDA7aj1yKzMyfDA7cD1yKzI4fDA7bz1yKzI0fDA7az1yKzIwfDA7bD1yKzE2fDA7bT1yKzEyfDA7bj1yKzh8MDtjW2c+PjJdPWE7Y1toPj4yXT1lO2Nbaj4+Ml09ZjtpZighKChkWyhjW2g+PjJdfDApKzM2KzE+PjBdfDApPj4+MiYxKSl7aT1yO3JldHVybn1jW3A+PjJdPWNbKGNbaD4+Ml18MCkrMTY+PjJdO2NbbD4+Ml09Y1soY1toPj4yXXwwKSs2ND4+Ml07aWYoIShjW2w+PjJdfDApKXtpPXI7cmV0dXJufWNbaz4+Ml09MDtjW28+PjJdPTA7d2hpbGUoMSl7aWYoKGNbbz4+Ml18MCk+PShjW2NbbD4+Ml0+PjJdfDApKXtlPTEzO2JyZWFrfXdoaWxlKDEpe2lmKChjW2s+PjJdfDApPChiWyhjW3A+PjJdfDApKzM0Pj4xXXwwKSllPShkWyhjWyhjW3A+PjJdfDApKzQ+PjJdfDApKyhjW2s+PjJdPDw0KSsxNT4+MF0mMnwwKT09MDtlbHNlIGU9MDthPWNbaz4+Ml18MDtpZighZSlicmVhaztjW2s+PjJdPWErMX1mPWNbZz4+Ml18MDtpZigoYXwwKT49KGJbKGNbcD4+Ml18MCkrMzQ+PjFdfDApKXtlPTEwO2JyZWFrfWNbbT4+Ml09ancoY1tmPj4yXXwwLDE1MiwwLDApfDA7aWYoIShjW20+PjJdfDApKXtlPTEzO2JyZWFrfWNbKGNbbT4+Ml18MCkrMjg+PjJdPWNbKGNbaD4+Ml18MCkrNDQ+PjJdO2E9Y1trPj4yXXwwO2Nbaz4+Ml09YSsxO2JbKGNbbT4+Ml18MCkrMzI+PjFdPWE7Y1soY1ttPj4yXXwwKSs0ND4+Ml09Y1twPj4yXTthPWNbZz4+Ml18MDtmPWNbbT4+Ml18MDtjW24+PjJdPUV2KGEsMzcsZixJeShjW2NbZz4+Ml0+PjJdfDAsY1soY1soY1tsPj4yXXwwKSs0Pj4yXXwwKSsoKGNbbz4+Ml18MCkqMjB8MCk+PjJdfDAsMCl8MCwwKXwwO1dFKGNbaj4+Ml18MCxjW24+PjJdfDAsMSl8MDtjW28+PjJdPShjW28+PjJdfDApKzF9aWYoKGV8MCk9PTEwKXtvPWNbbz4+Ml18MDtjW3E+PjJdPWNbY1twPj4yXT4+Ml07Y1txKzQ+PjJdPW87RWgoZiwzNDg0OCxxKTtpPXI7cmV0dXJufWVsc2UgaWYoKGV8MCk9PTEzKXtpPXI7cmV0dXJufX1mdW5jdGlvbiBGRChhLGIpe2E9YXwwO2I9YnwwO3ZhciBkPTAsZT0wLGY9MCxnPTA7Zz1pO2k9aSsxNnwwO2Q9Zys4fDA7ZT1nKzR8MDtmPWc7Y1tkPj4yXT1hO2NbZT4+Ml09YjtjW2Y+PjJdPShjWyhjW2U+PjJdfDApKzEyPj4yXXwwKS0xO3doaWxlKDEpe2lmKChjW2Y+PjJdfDApPDApYnJlYWs7U0UoY1tkPj4yXXwwLGNbZT4+Ml18MCxjW2Y+PjJdfDApO2NbZj4+Ml09KGNbZj4+Ml18MCkrLTF9aT1nO3JldHVybn1mdW5jdGlvbiBHRChhLGYsZyxoKXthPWF8MDtmPWZ8MDtnPWd8MDtoPWh8MDt2YXIgaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTA7dT1pO2k9aSs0OHwwO2o9dSszNnwwO2s9dSszMnwwO2w9dSsyOHwwO209dSsyNHwwO249dSsyMHwwO3M9dSsxNnwwO3I9dSsxMnwwO289dSs4fDA7cD11KzR8MDtxPXU7Y1trPj4yXT1hO2NbbD4+Ml09ZjtjW20+PjJdPWc7Y1tuPj4yXT1oO2lmKChjW2NbbD4+Ml0+PjJdfDApIT0xKXtjW2o+PjJdPTA7dD1jW2o+PjJdfDA7aT11O3JldHVybiB0fDB9Y1twPj4yXT1jWyhjW2w+PjJdfDApKzgrNDQ+PjJdO2Nbcz4+Ml09Y1soY1tsPj4yXXwwKSs4KzE2Pj4yXTtjW28+PjJdPTA7d2hpbGUoMSl7aWYoKGNbbz4+Ml18MCk+PShjW2Nbbj4+Ml0+PjJdfDApKWJyZWFrO2NbcT4+Ml09a3koY1soY1soY1tuPj4yXXwwKSs0Pj4yXXwwKSsoKGNbbz4+Ml18MCkqMjB8MCk+PjJdfDApfDA7aWYoKChkW2NbcT4+Ml0+PjBdfDApPT0xNTI/KGNbKGNbcT4+Ml18MCkrMjg+PjJdfDApPT0oY1twPj4yXXwwKTowKT8oYlsoY1txPj4yXXwwKSszMj4+MV18MCk8MDowKXt0PTg7YnJlYWt9Y1tvPj4yXT0oY1tvPj4yXXwwKSsxfWlmKCh0fDApPT04KXtjW2o+PjJdPTE7dD1jW2o+PjJdfDA7aT11O3JldHVybiB0fDB9Y1tyPj4yXT1jWyhjW3M+PjJdfDApKzg+PjJdO3doaWxlKDEpe2lmKCEoY1tyPj4yXXwwKSl7dD0yMjticmVha31pZihkWyhjW3I+PjJdfDApKzU0Pj4wXXwwKXtjW28+PjJdPTA7d2hpbGUoMSl7aWYoKGNbbz4+Ml18MCk+PShlWyhjW3I+PjJdfDApKzUwPj4xXXwwKSlicmVhaztpZighKFpEKGNbbT4+Ml18MCxjW3A+PjJdfDAsY1tvPj4yXXwwLC0xLC0xLDIsY1tyPj4yXXwwKXwwKSl7aWYoKFJFKGNbaz4+Ml18MCxjW24+PjJdfDAsY1twPj4yXXwwLGNbcj4+Ml18MCxjW28+PjJdfDApfDApPDApYnJlYWs7aWYoIShIRShjW3I+PjJdfDAsY1tvPj4yXXwwKXwwKSlicmVha31jW28+PjJdPShjW28+PjJdfDApKzF9aWYoKGNbbz4+Ml18MCk9PShlWyhjW3I+PjJdfDApKzUwPj4xXXwwKSl7dD0yMDticmVha319Y1tyPj4yXT1jWyhjW3I+PjJdfDApKzIwPj4yXX1pZigodHwwKT09MjApe2Nbaj4+Ml09MTt0PWNbaj4+Ml18MDtpPXU7cmV0dXJuIHR8MH1lbHNlIGlmKCh0fDApPT0yMil7Y1tqPj4yXT0wO3Q9Y1tqPj4yXXwwO2k9dTtyZXR1cm4gdHwwfXJldHVybiAwfWZ1bmN0aW9uIEhEKGYpe2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTA7dD1pO2k9aSs0OHwwO2c9dCs0NHwwO2g9dCs0MHwwO3M9dCszNnwwO249dCszMnwwO3I9dCsyOHwwO3E9dCsyNHwwO289dCsyMHwwO2o9dCsxNnwwO2s9dCsxMnwwO3A9dCs4fDA7bT10KzR8MDtsPXQ7Y1toPj4yXT1mO2Nbcz4+Ml09Y1tjW2g+PjJdPj4yXTtpZigoZVsoY1tzPj4yXXwwKSs0MD4+MV18MCkmMzIpe2NbZz4+Ml09MDtzPWNbZz4+Ml18MDtpPXQ7cmV0dXJuIHN8MH1jW24+PjJdPShjWyhjW3M+PjJdfDApKzQ+PjJdfDApKzg7Y1twPj4yXT1jWyhjW24+PjJdfDApKzE2Pj4yXTtpZigoZFsoY1twPj4yXXwwKSs0Mj4+MF18MCkmMTYpe2NbZz4+Ml09MDtzPWNbZz4+Ml18MDtpPXQ7cmV0dXJuIHN8MH1pZigoZFsoY1tuPj4yXXwwKSszNisxPj4wXXwwKT4+PjEmMSl7Y1tnPj4yXT0wO3M9Y1tnPj4yXXwwO2k9dDtyZXR1cm4gc3wwfWNbaj4+Ml09Y1soY1tuPj4yXXwwKSs0ND4+Ml07Y1tyPj4yXT0oY1tzPj4yXXwwKSs4MDtjW28+PjJdPWNbKGNbaD4+Ml18MCkrMTI+PjJdO2NbKGNbbz4+Ml18MCkrMzY+PjJdPTA7YlsoY1tvPj4yXXwwKSs0Mj4+MV09MDtjW3E+PjJdPVpEKGNbcj4+Ml18MCxjW2o+PjJdfDAsLTEsMCwwLDEzMCwwKXwwO2E6ZG8gaWYoY1txPj4yXXwwKXtjWyhjW28+PjJdfDApKzM2Pj4yXT00MzUzO2NbY1soY1tvPj4yXXwwKSs0OD4+Ml0+PjJdPWNbcT4+Ml07YlsoY1tvPj4yXXwwKSs0MD4+MV09MTtiWyhjW28+PjJdfDApKzI0Pj4xXT0xO2JbKGNbbz4+Ml18MCkrMjA+PjFdPTMzfWVsc2V7Y1ttPj4yXT1jWyhjW3A+PjJdfDApKzg+PjJdO3doaWxlKDEpe2lmKCEoY1ttPj4yXXwwKSlicmVhayBhO2lmKCgoZFsoY1ttPj4yXXwwKSs1ND4+MF18MHwwKSE9MD8oY1soY1ttPj4yXXwwKSszNj4+Ml18MCk9PTA6MCk/KGVbKGNbbT4+Ml18MCkrNTA+PjFdfDB8MCk8PTM6MCl7Y1tsPj4yXT0oKGRbKGNbbT4+Ml18MCkrNTU+PjBdfDApPj4+MyYxfDApIT0wPzEzMDoyO2Nbaz4+Ml09MDt3aGlsZSgxKXtpZigoY1trPj4yXXwwKT49KGVbKGNbbT4+Ml18MCkrNTA+PjFdfDB8MCkpYnJlYWs7Y1txPj4yXT1aRChjW3I+PjJdfDAsY1tqPj4yXXwwLGNbaz4+Ml18MCwwLDAsY1tsPj4yXXwwLGNbbT4+Ml18MCl8MDtpZighKGNbcT4+Ml18MCkpYnJlYWs7Y1soY1soY1tvPj4yXXwwKSs0OD4+Ml18MCkrKGNbaz4+Ml08PDIpPj4yXT1jW3E+PjJdO2Nbaz4+Ml09KGNbaz4+Ml18MCkrMX1pZigoY1trPj4yXXwwKT09KGVbKGNbbT4+Ml18MCkrNTA+PjFdfDB8MCkpYnJlYWt9Y1ttPj4yXT1jWyhjW20+PjJdfDApKzIwPj4yXX1jWyhjW28+PjJdfDApKzM2Pj4yXT00NjA5O2lmKCEoKChkWyhjW20+PjJdfDApKzU1Pj4wXXwwKT4+PjUmMXwwKT09MD8ocj0oY1tuPj4yXXwwKSs1NnwwLHA9Y1tyPj4yXXwwLHI9Y1tyKzQ+PjJdfDAscT1FRShjW20+PjJdfDApfDAsISgocCZ+cXwwKT09MCYociZ+Q3wwKT09MCkpOjApKXtyPShjW28+PjJdfDApKzM2fDA7Y1tyPj4yXT1jW3I+PjJdfDY0fWJbKGNbbz4+Ml18MCkrNDA+PjFdPWNbaz4+Ml07YlsoY1tvPj4yXXwwKSsyND4+MV09Y1trPj4yXTtjWyhjW28+PjJdfDApKzI0Kzg+PjJdPWNbbT4+Ml07YlsoY1tvPj4yXXwwKSsyMD4+MV09Mzl9d2hpbGUoMCk7aWYoIShjWyhjW28+PjJdfDApKzM2Pj4yXXwwKSl7Y1tnPj4yXT0wO3M9Y1tnPj4yXXwwO2k9dDtyZXR1cm4gc3wwfWJbKGNbbz4+Ml18MCkrMjI+PjFdPTE7Y1soY1tzPj4yXXwwKSs3NTIrNjQ+PjJdPWNbbz4+Ml07cT1PRCgoY1tzPj4yXXwwKSs0ODh8MCxjW2o+PjJdfDApfDA7cj0oY1tvPj4yXXwwKSs4fDA7Y1tyPj4yXT1xO2Nbcis0Pj4yXT1DO2NbKGNbcz4+Ml18MCkrNzUyKzQ+PjJdPWNbaj4+Ml07YlsoY1tzPj4yXXwwKSs3Mj4+MV09MTtpZihjWyhjW3M+PjJdfDApKzg+PjJdfDApYVsoY1tzPj4yXXwwKSs0Mz4+MF09Y1tjWyhjW3M+PjJdfDApKzg+PjJdPj4yXTtpZigoZVsoY1tzPj4yXXwwKSs0MD4+MV18MCkmMjU2KWFbKGNbcz4+Ml18MCkrNDc+PjBdPTE7Y1tnPj4yXT0xO3M9Y1tnPj4yXXwwO2k9dDtyZXR1cm4gc3wwfWZ1bmN0aW9uIElEKGIpe2I9YnwwO3ZhciBlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wO3M9aTtpPWkrODB8MDtlPXMrNjB8MDtuPXMrNTZ8MDtnPXMrMTZ8MDtoPXMrOHwwO2Y9cys1MnwwO3Q9cys0OHwwO209cys0NHwwO2w9cys0MHwwO3A9cyszNnwwO3I9cyszMnwwO3E9cysyOHwwO289cys2NHwwO2o9cztrPXMrMjR8MDtjW2U+PjJdPWI7Y1tuPj4yXT1jW2NbZT4+Ml0+PjJdO2I9ZztjW2I+PjJdPTA7Y1tiKzQ+PjJdPTA7Yj1oO2NbYj4+Ml09MDtjW2IrND4+Ml09MDtjW3Q+PjJdPWNbKGNbbj4+Ml18MCkrND4+Ml07Y1tsPj4yXT0oY1t0Pj4yXXwwKSs4KygoZFsoY1tuPj4yXXwwKSs0Mj4+MF18MCkqNzJ8MCk7Y1twPj4yXT1jW2NbY1tuPj4yXT4+Ml0+PjJdO2Nbcj4+Ml09MDthW28+PjBdPTA7Y1txPj4yXT1jWyhjW2U+PjJdfDApKzEyPj4yXTt5RChjW3E+PjJdfDApO2NbZj4+Ml09MDtjW20+PjJdPShjW3Q+PjJdfDApKzg7d2hpbGUoMSl7aWYoKGNbbT4+Ml18MCk+Pj4wPj0oY1tsPj4yXXwwKT4+PjApe2U9MTk7YnJlYWt9Yj1qO2NbYj4+Ml09MDtjW2IrND4+Ml09MDthWyhjW3E+PjJdfDApKzE2Pj4wXT1jW2Y+PjJdO2I9T0QoKGNbbj4+Ml18MCkrNDg4fDAsY1soY1ttPj4yXXwwKSs0ND4+Ml18MCl8MDt0PShjW3E+PjJdfDApKzh8MDtjW3Q+PjJdPWI7Y1t0KzQ+PjJdPUM7aWYoKGRbKGNbbT4+Ml18MCkrMzY+PjBdfDB8KGRbbz4+MF18MCkpJjEwKXt1PWg7Yj1jW3UrND4+Ml18MDt0PWc7Y1t0Pj4yXT1jW3U+PjJdO2NbdCs0Pj4yXT1ifWFbbz4+MF09YVsoY1ttPj4yXXwwKSszNj4+MF18MDtpZigoZFsoY1soY1ttPj4yXXwwKSsxNj4+Ml18MCkrNDI+PjBdfDApJjE2KXtjW2s+PjJdPShjW20+PjJdfDApKzcyO3doaWxlKDEpe2lmKChjW2s+PjJdfDApPj4+MD49KGNbbD4+Ml18MCk+Pj4wKWJyZWFrO3U9ajtpZighKCEoKGNbdT4+Ml18MCkhPTB8KGNbdSs0Pj4yXXwwKSE9MCk/KChkWyhjW2s+PjJdfDApKzM2Pj4wXXwwKSYxMHwwKT09MDowKSl7Yj1PRCgoY1tuPj4yXXwwKSs0ODh8MCxjWyhjW2s+PjJdfDApKzQ0Pj4yXXwwKXwwO3Y9ajt0PWNbdis0Pj4yXXxDO3U9ajtjW3U+PjJdPWNbdj4+Ml18YjtjW3UrND4+Ml09dH1jW2s+PjJdPShjW2s+PjJdfDApKzcyfXU9Zzt2PWo7Y1tyPj4yXT1yRShjW2U+PjJdfDAsY1t1Pj4yXXwwLGNbdSs0Pj4yXXwwLGNbdj4+Ml18MCxjW3YrND4+Ml18MCl8MH1lbHNle3Y9ZztjW3I+PjJdPXNFKGNbZT4+Ml18MCxjW3Y+PjJdfDAsY1t2KzQ+PjJdfDApfDB9aWYoIShjW3I+PjJdfDApKXt1PWc7dj1qO2Nbcj4+Ml09dEUoY1tlPj4yXXwwLGNbdT4+Ml18MCxjW3UrND4+Ml18MCxjW3Y+PjJdfDAsY1t2KzQ+PjJdfDApfDB9dD0oY1txPj4yXXwwKSs4fDA7Yj1oO3U9Y1tiKzQ+PjJdfGNbdCs0Pj4yXTt2PWg7Y1t2Pj4yXT1jW2I+PjJdfGNbdD4+Ml07Y1t2KzQ+PjJdPXU7aWYoY1tyPj4yXXwwKXtlPTE5O2JyZWFrfWlmKGRbKGNbcD4+Ml18MCkrNjk+PjBdfDApe2U9MTk7YnJlYWt9Y1tmPj4yXT0oY1tmPj4yXXwwKSsxO2NbbT4+Ml09KGNbbT4+Ml18MCkrNzJ9aWYoKGV8MCk9PTE5KXt3RChjW3A+PjJdfDAsY1txPj4yXXwwKTtpPXM7cmV0dXJuIGNbcj4+Ml18MH1yZXR1cm4gMH1mdW5jdGlvbiBKRChmLGcpe2Y9ZnwwO2c9Z3wwO3ZhciBoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTAsRT0wLEY9MCxHPTAsSD0wLEk9MCxKPTAsSz0wLEw9MCxNPTAsTj0wLE89MCxQPTAsUT0wLFI9MCxTPTAsVD0wLFU9MCxWPTAsVz0wLFg9MDtYPWk7aT1pKzE3NnwwO0U9WCs0MHwwO009WCsxNDh8MDtOPVgrMTQ0fDA7Rz1YKzE2MnwwO3I9WCsxNDB8MDtRPVgrMTM2fDA7ej1YKzEzMnwwO089WCsxMjh8MDtIPVgrMTI0fDA7bj1YKzEyMHwwO3A9WCsxMTZ8MDt0PVgrMTEyfDA7dz1YKzEwOHwwO3M9WCsxNjB8MDt1PVgrMTU4fDA7eT1YKzEwNHwwO3Y9WCsxMDB8MDtrPVgrOTZ8MDttPVgrOTJ8MDtTPVgrODh8MDtBPVgrODR8MDtLPVgrODB8MDtqPVgrNzZ8MDtsPVgrNzJ8MDtUPVgrNjh8MDtoPVgrNjR8MDt4PVgrMTU2fDA7Qj1YKzE1NHwwO0M9WCsxNTJ8MDtvPVgrMTY0fDA7cT1YKzMyfDA7RD1YKzI0fDA7Sj1YKzYwfDA7ST1YKzE2fDA7TD1YKzU2fDA7Vz1YKzUyfDA7UD1YKzh8MDtVPVgrNDh8MDtWPVg7Uj1YKzQ0fDA7Y1tOPj4yXT1mO2JbRz4+MV09ZztjW3Q+PjJdPTA7YltzPj4xXT0wO2JbdT4+MV09MDtjW2w+PjJdPTA7Y1t6Pj4yXT1jW2NbTj4+Ml0+PjJdO2NbTz4+Ml09Y1tjW3o+PjJdPj4yXTtjW1E+PjJdPWRbKGNbTj4+Ml18MCkrNDI+PjBdO2lmKChjW1E+PjJdfDApPD0xKWc9MTtlbHNlIGc9KGNbUT4+Ml18MCk9PTI/NToxMDtjW3I+PjJdPWc7aWYoKGNbKGNbTj4+Ml18MCkrOD4+Ml18MCkhPTA/KGJbRz4+MV18MCkhPTA6MCljW3c+PjJdPWNbY1soY1tOPj4yXXwwKSs4Pj4yXT4+Ml07ZWxzZSBjW3c+PjJdPTA7Y1toPj4yXT0oXygzMisoY1tRPj4yXTw8Mil8MCxjW3I+PjJdfDApfDApPDwxO2NbaD4+Ml09KGNbaD4+Ml18MCkrKGNbdz4+Ml08PDEpO2g9Y1toPj4yXXwwO2NbVD4+Ml09VncoY1tPPj4yXXwwLGgsKChofDApPDApPDwzMT4+MzEpfDA7aWYoIShjW1Q+PjJdfDApKXtjW00+PjJdPTc7Vz1jW00+PjJdfDA7aT1YO3JldHVybiBXfDB9Y1ttPj4yXT1jW1Q+PjJdO2Nbaz4+Ml09KGNbbT4+Ml18MCkrKGNbcj4+Ml08PDUpO2g9Y1trPj4yXXwwO2NbaD4+Ml09MDtjW2grND4+Ml09MDtjW2grOD4+Ml09MDtjW2grMTI+PjJdPTA7Y1toKzE2Pj4yXT0wO2NbaCsyMD4+Ml09MDtjW2grMjQ+PjJdPTA7Y1toKzI4Pj4yXT0wO2Nbaj4+Ml09KGNbaz4+Ml18MCkrKGNbcj4+Ml08PDUpO2Nbbj4+Ml09Y1tyPj4yXTw8MTtjW1M+PjJdPWNbbT4+Ml07d2hpbGUoMSl7aWYoKGNbbj4+Ml18MCk8PTApYnJlYWs7Y1soY1tTPj4yXXwwKSsyND4+Ml09Y1tqPj4yXTtjW24+PjJdPShjW24+PjJdfDApKy0xO2NbUz4+Ml09KGNbUz4+Ml18MCkrMzI7Y1tqPj4yXT0oY1tqPj4yXXwwKSsoY1tRPj4yXTw8Mil9aWYoY1t3Pj4yXXwwKXtjW2w+PjJdPWNbaj4+Ml07VlIoY1tsPj4yXXwwLDAsY1t3Pj4yXTw8MXwwKXwwfWlmKChjWyhjW3o+PjJdfDApKzEzNj4+Ml18MCk+Pj4wPDQ4KWc9Y1soY1t6Pj4yXXwwKSsxMzY+PjJdfDA7ZWxzZSBnPTQ4O2JbKGNbaz4+Ml18MCkrMTY+PjFdPWc7Y1t2Pj4yXT0xO2lmKGNbdz4+Ml18MClhWyhjW2s+PjJdfDApKzIyPj4wXT0oY1tRPj4yXXwwKT4wPy0xOmNbdz4+Ml18MDtjW0g+PjJdPTA7d2hpbGUoMSl7aWYoKGNbSD4+Ml18MCk+PShjW1E+PjJdfDApKWJyZWFrO2NbeT4+Ml09MDtjW24+PjJdPTA7Y1tTPj4yXT1jW2s+PjJdO3doaWxlKDEpe2lmKChjW24+PjJdfDApPj0oY1t2Pj4yXXwwKSlicmVhaztjW0s+PjJdPWNbKGNbTj4+Ml18MCkrNTY+PjJdO3doaWxlKDEpe2lmKCEoY1tLPj4yXXwwKSlicmVhazthW28+PjBdPWFbKGNbUz4+Ml18MCkrMjI+PjBdfDA7aD1EO2NbaD4+Ml09MDtjW2grND4+Ml09MDtoPWNbSz4+Ml18MDtqPWNbUz4+Ml18MDthOmRvIGlmKCEoKGNbaD4+Ml0mfmNbaj4+Ml18MCkhPTA/MTooY1toKzQ+PjJdJn5jW2orND4+Ml18MCkhPTApPyhoPShjW0s+PjJdfDApKzh8MCxqPWNbUz4+Ml18MCwhKChjW2g+PjJdJmNbaj4+Ml18MCkhPTA/MTooY1toKzQ+PjJdJmNbais0Pj4yXXwwKSE9MCkpOjApe2lmKChjWyhjW0s+PjJdfDApKzM2Pj4yXSYxNjM4NHwwKSE9MD8oYlsoY1tTPj4yXXwwKSsxNj4+MV18MCk8MTA6MClicmVhaztiW0M+PjFdPW5FKGJbKGNbSz4+Ml18MCkrMTg+PjFdfDAsKGJbKGNbSz4+Ml18MCkrMjA+PjFdfDApKyhiWyhjW1M+PjJdfDApKzE2Pj4xXXwwKSY2NTUzNSl8MDtiW0M+PjFdPW5FKGJbQz4+MV18MCxiWyhjW1M+PjJdfDApKzIwPj4xXXwwKXwwO2JbeD4+MV09KGJbKGNbUz4+Ml18MCkrMTY+PjFdfDApKyhiWyhjW0s+PjJdfDApKzIyPj4xXXwwKTtnPWNbUz4+Ml18MDtmPShjW0s+PjJdfDApKzh8MDtoPWNbZys0Pj4yXXxjW2YrND4+Ml07aj1xO2Nbaj4+Ml09Y1tnPj4yXXxjW2Y+PjJdO2Nbais0Pj4yXT1oO2lmKChhW28+PjBdfDApPDApYVtvPj4wXT1vRShjW04+PjJdfDAsY1soY1tOPj4yXXwwKSs4Pj4yXXwwLGNbUz4+Ml18MCxiWyhjW04+PjJdfDApKzQwPj4xXXwwLGNbSD4+Ml0mNjU1MzUsY1tLPj4yXXwwLEQpfDA7ZWxzZXtmPShjW1M+PjJdfDApKzh8MDtoPWNbZis0Pj4yXXwwO2o9RDtjW2o+PjJdPWNbZj4+Ml07Y1tqKzQ+PjJdPWh9aWYoKGFbbz4+MF18MCk+PTA/KGFbbz4+MF18MCk8KGNbdz4+Ml18MCk6MCl7aWYoIShiWyhjW2w+PjJdfDApKyhhW28+PjBdPDwxKT4+MV18MCkpe2o9cEUoY1tOPj4yXXwwLGJbRz4+MV18MCxjW3c+PjJdfDAsYVtvPj4wXXwwKXwwO2JbKGNbbD4+Ml18MCkrKGFbbz4+MF08PDEpPj4xXT1qfWJbQj4+MV09bkUoYltDPj4xXXwwLGJbKGNbbD4+Ml18MCkrKGFbbz4+MF08PDEpPj4xXXwwKXwwfWVsc2UgYltCPj4xXT1iW0M+PjFdfDA7Y1twPj4yXT0wO2NbQT4+Ml09Y1ttPj4yXTt3aGlsZSgxKXtpZigoY1twPj4yXXwwKT49KGNbeT4+Ml18MCkpYnJlYWs7aD1jW0E+PjJdfDA7aj1xO2lmKCgoY1toPj4yXXwwKT09KGNbaj4+Ml18MCk/KGNbaCs0Pj4yXXwwKT09KGNbais0Pj4yXXwwKTowKT8oKGFbKGNbQT4+Ml18MCkrMjI+PjBdXmFbbz4+MF0pJjEyOHwwKT09MDowKWJyZWFrO2NbcD4+Ml09KGNbcD4+Ml18MCkrMTtjW0E+PjJdPShjW0E+PjJdfDApKzMyfWRvIGlmKChjW3A+PjJdfDApPChjW3k+PjJdfDApKXtpZigoYlsoY1tBPj4yXXwwKSsxOD4+MV18MCk8KGJbQj4+MV18MCkpYnJlYWsgYTtpZigoYlsoY1tBPj4yXXwwKSsxOD4+MV18MCkhPShiW0I+PjFdfDApKWJyZWFrO2lmKChiWyhjW0E+PjJdfDApKzE2Pj4xXXwwKTw9KGJbeD4+MV18MCkpYnJlYWsgYX1lbHNle2RvIGlmKChjW3k+PjJdfDApPj0oY1tyPj4yXXwwKSl7aWYoKGJbQj4+MV18MCk+KGJbcz4+MV18MCkpYnJlYWsgYTtpZigoYltCPj4xXXwwKSE9KGJbcz4+MV18MCkpYnJlYWs7aWYoKGJbQz4+MV18MCk+PShiW3U+PjFdfDApKWJyZWFrIGF9d2hpbGUoMCk7aWYoKGNbeT4+Ml18MCk8KGNbcj4+Ml18MCkpe2o9Y1t5Pj4yXXwwO2NbeT4+Ml09aisxO2NbcD4+Ml09an1lbHNlIGNbcD4+Ml09Y1t0Pj4yXTtjW0E+PjJdPShjW20+PjJdfDApKyhjW3A+PjJdPDw1KX13aGlsZSgwKTtnPWNbUz4+Ml18MDtqPShjW0s+PjJdfDApKzh8MDtoPWNbZys0Pj4yXXxjW2orND4+Ml07Zj1jW0E+PjJdfDA7Y1tmPj4yXT1jW2c+PjJdfGNbaj4+Ml07Y1tmKzQ+PjJdPWg7Zj1EO2g9Y1tmKzQ+PjJdfDA7aj0oY1tBPj4yXXwwKSs4fDA7Y1tqPj4yXT1jW2Y+PjJdO2Nbais0Pj4yXT1oO2JbKGNbQT4+Ml18MCkrMTY+PjFdPWJbeD4+MV18MDtiWyhjW0E+PjJdfDApKzE4Pj4xXT1iW0I+PjFdfDA7YlsoY1tBPj4yXXwwKSsyMD4+MV09YltDPj4xXXwwO2FbKGNbQT4+Ml18MCkrMjI+PjBdPWFbbz4+MF18MDtUUihjWyhjW0E+PjJdfDApKzI0Pj4yXXwwLGNbKGNbUz4+Ml18MCkrMjQ+PjJdfDAsY1tIPj4yXTw8MnwwKXwwO2NbKGNbKGNbQT4+Ml18MCkrMjQ+PjJdfDApKyhjW0g+PjJdPDwyKT4+Ml09Y1tLPj4yXTtpZigoY1t5Pj4yXXwwKT49KGNbcj4+Ml18MCkpe2NbdD4+Ml09MDtiW3M+PjFdPWJbKGNbbT4+Ml18MCkrMTg+PjFdfDA7Ylt1Pj4xXT1iWyhjW20+PjJdfDApKzE2Pj4xXXwwO2NbcD4+Ml09MTtjW0E+PjJdPShjW20+PjJdfDApKzMyO3doaWxlKDEpe2lmKChjW3A+PjJdfDApPj0oY1tyPj4yXXwwKSlicmVhayBhO2RvIGlmKChiWyhjW0E+PjJdfDApKzE4Pj4xXXwwKTw9KGJbcz4+MV18MCkpe2lmKChiWyhjW0E+PjJdfDApKzE4Pj4xXXwwKSE9KGJbcz4+MV18MCkpYnJlYWs7aWYoKGJbKGNbQT4+Ml18MCkrMjA+PjFdfDApPihiW3U+PjFdfDApKUY9NjB9ZWxzZSBGPTYwO3doaWxlKDApO2lmKChGfDApPT02MCl7Rj0wO2Jbcz4+MV09YlsoY1tBPj4yXXwwKSsxOD4+MV18MDtiW3U+PjFdPWJbKGNbQT4+Ml18MCkrMjA+PjFdfDA7Y1t0Pj4yXT1jW3A+PjJdfWNbcD4+Ml09KGNbcD4+Ml18MCkrMTtjW0E+PjJdPShjW0E+PjJdfDApKzMyfX19d2hpbGUoMCk7Y1tLPj4yXT1jWyhjW0s+PjJdfDApKzUyPj4yXX1jW24+PjJdPShjW24+PjJdfDApKzE7Y1tTPj4yXT0oY1tTPj4yXXwwKSszMn1jW1M+PjJdPWNbbT4+Ml07Y1ttPj4yXT1jW2s+PjJdO2Nbaz4+Ml09Y1tTPj4yXTtjW3Y+PjJdPWNbeT4+Ml07Y1tIPj4yXT0oY1tIPj4yXXwwKSsxfWlmKCEoY1t2Pj4yXXwwKSl7RWgoY1t6Pj4yXXwwLDM0NzU2LEUpO1RmKGNbTz4+Ml18MCxjW1Q+PjJdfDApO2NbTT4+Ml09MTtXPWNbTT4+Ml18MDtpPVg7cmV0dXJuIFd8MH1jW1M+PjJdPWNbaz4+Ml07Y1tuPj4yXT0xO3doaWxlKDEpe2lmKChjW24+PjJdfDApPj0oY1t2Pj4yXXwwKSlicmVhaztpZigoYlsoY1tTPj4yXXwwKSsxOD4+MV18MCk+KGJbKGNbaz4+Ml18MCkrKGNbbj4+Ml08PDUpKzE4Pj4xXXwwKSljW1M+PjJdPShjW2s+PjJdfDApKyhjW24+PjJdPDw1KTtjW24+PjJdPShjW24+PjJdfDApKzF9Y1tIPj4yXT0wO3doaWxlKDEpe2c9Y1tOPj4yXXwwO2lmKChjW0g+PjJdfDApPj0oY1tRPj4yXXwwKSlicmVhaztjW0o+PjJdPWcrNzUyKygoY1tIPj4yXXwwKSo4MHwwKTtGPWNbKGNbKGNbUz4+Ml18MCkrMjQ+PjJdfDApKyhjW0g+PjJdPDwyKT4+Ml18MDtjW0s+PjJdPUY7Y1soY1tKPj4yXXwwKSs2ND4+Ml09RjthWyhjW0o+PjJdfDApKzQ0Pj4wXT1hWyhjW0s+PjJdfDApKzE2Pj4wXXwwO2NbKGNbSj4+Ml18MCkrND4+Ml09Y1soY1soY1tOPj4yXXwwKSs0Pj4yXXwwKSs4KygoZFsoY1tKPj4yXXwwKSs0ND4+MF18MCkqNzJ8MCkrNDQ+PjJdO2NbSD4+Ml09KGNbSD4+Ml18MCkrMX1pZigoKCgoZVtnKzQwPj4xXSYyNTZ8MCkhPTA/KGVbKGNbTj4+Ml18MCkrNDA+PjFdJjEyOHwwKT09MDowKT8oZFsoY1tOPj4yXXwwKSs0Nz4+MF18MCk9PTA6MCk/KGJbRz4+MV18MCkhPTA6MCk/KGNbTD4+Ml09KG9FKGNbTj4+Ml18MCxjWyhjW04+PjJdfDApKzEyPj4yXXwwLGNbUz4+Ml18MCwxMjgsKGNbUT4+Ml18MCktMSY2NTUzNSxjWyhjWyhjW1M+PjJdfDApKzI0Pj4yXXwwKSsoKGNbUT4+Ml18MCktMTw8Mik+PjJdfDAsSSl8MCk8PDI0Pj4yNCwoY1tMPj4yXXwwKT09KGNbY1soY1tOPj4yXXwwKSsxMj4+Ml0+PjJdfDApKTowKWFbKGNbTj4+Ml18MCkrNDc+PjBdPTI7aWYoY1soY1tOPj4yXXwwKSs4Pj4yXXwwKXtnPWFbKGNbUz4+Ml18MCkrMjI+PjBdfDA7aWYoZVsoY1tOPj4yXXwwKSs0MD4+MV0mMTI4KXtpZigoZzw8MjQ+PjI0fDApPT0oY1tjWyhjW04+PjJdfDApKzg+PjJdPj4yXXwwKSlhWyhjW04+PjJdfDApKzQ3Pj4wXT0yfWVsc2V7YVsoY1tOPj4yXXwwKSs0Mz4+MF09ZztKPShjW1M+PjJdfDApKzh8MDtLPWNbSis0Pj4yXXwwO0w9KGNbTj4+Ml18MCkrNjR8MDtjW0w+PjJdPWNbSj4+Ml07Y1tMKzQ+PjJdPUs7aWYoKCgoKGFbKGNbTj4+Ml18MCkrNDM+PjBdfDApPD0wPyhhWyhjW04+PjJdfDApKzQzPj4wXT0wLChjW1E+PjJdfDApPjApOjApPyhjW1c+PjJdPWNbKGNbKGNbKGNbUz4+Ml18MCkrMjQ+PjJdfDApKygoY1tRPj4yXXwwKS0xPDwyKT4+Ml18MCkrMzY+PjJdLChjW1c+PjJdJjQwOTZ8MCk9PTApOjApPyhjW1c+PjJdJjI2MHwwKSE9MjYwOjApPyhXPVAsY1tXPj4yXT0wLGNbVys0Pj4yXT0wLGNbVT4+Ml09KG9FKGNbTj4+Ml18MCxjWyhjW04+PjJdfDApKzg+PjJdfDAsY1tTPj4yXXwwLDIwNDgsKGNbUT4+Ml18MCktMSY2NTUzNSxjWyhjWyhjW1M+PjJdfDApKzI0Pj4yXXwwKSsoKGNbUT4+Ml18MCktMTw8Mik+PjJdfDAsUCl8MCk8PDI0Pj4yNCwoY1tVPj4yXXwwKT09KGNbY1soY1tOPj4yXXwwKSs4Pj4yXT4+Ml18MCkpOjApe2FbKGNbTj4+Ml18MCkrNDg+PjBdPTE7VT1jW1ArND4+Ml18MDtXPShjW04+PjJdfDApKzY0fDA7Y1tXPj4yXT1jW1A+PjJdO2NbVys0Pj4yXT1VfX1pZigoKGVbKGNbTj4+Ml18MCkrNDA+PjFdJjUxMnwwKSE9MD8oKGNbUT4+Ml18MCk+MD8oYVsoY1tOPj4yXXwwKSs0Mz4+MF18MCk9PShjW2NbKGNbTj4+Ml18MCkrOD4+Ml0+PjJdfDApOjApOjApPyhXPVYsY1tXPj4yXT0wLGNbVys0Pj4yXT0wLGNbUj4+Ml09KG9FKGNbTj4+Ml18MCxjWyhjW04+PjJdfDApKzg+PjJdfDAsY1tTPj4yXXwwLDAsKGNbUT4+Ml18MCktMSY2NTUzNSxjWyhjWyhjW1M+PjJdfDApKzI0Pj4yXXwwKSsoKGNbUT4+Ml18MCktMTw8Mik+PjJdfDAsVil8MCk8PDI0Pj4yNCwoY1tSPj4yXXwwKT09KGNbY1soY1tOPj4yXXwwKSs4Pj4yXT4+Ml18MCkpOjApe2FbKGNbTj4+Ml18MCkrNDQ+PjBdPTE7VT1WO1Y9Y1tVKzQ+PjJdfDA7Vz0oY1tOPj4yXXwwKSs2NHwwO2NbVz4+Ml09Y1tVPj4yXTtjW1crND4+Ml09Vn19YlsoY1tOPj4yXXwwKSs3Mj4+MV09YlsoY1tTPj4yXXwwKSsxNj4+MV18MDtUZihjW08+PjJdfDAsY1tUPj4yXXwwKTtjW00+PjJdPTA7Vz1jW00+PjJdfDA7aT1YO3JldHVybiBXfDB9ZnVuY3Rpb24gS0QoYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wO2g9aTtpPWkrMzJ8MDtkPWgrMTZ8MDtlPWgrMTJ8MDtmPWgrOHwwO2c9aDtjW2Q+PjJdPWE7Y1tlPj4yXT1iO2E9ZztjW2E+PjJdPTA7Y1thKzQ+PjJdPTA7aWYoIShjW2U+PjJdfDApKXtiPWc7YT1iO2E9Y1thPj4yXXwwO2I9Yis0fDA7Yj1jW2I+PjJdfDA7Qz1iO2k9aDtyZXR1cm4gYXwwfWNbZj4+Ml09MDt3aGlsZSgxKXtpZigoY1tmPj4yXXwwKT49KGNbY1tlPj4yXT4+Ml18MCkpYnJlYWs7aj1sRShjW2Q+PjJdfDAsY1soY1soY1tlPj4yXXwwKSs0Pj4yXXwwKSsoKGNbZj4+Ml18MCkqMjB8MCk+PjJdfDApfDA7az1nO2I9Y1trKzQ+PjJdfEM7YT1nO2NbYT4+Ml09Y1trPj4yXXxqO2NbYSs0Pj4yXT1iO2NbZj4+Ml09KGNbZj4+Ml18MCkrMX1qPWc7az1qO2s9Y1trPj4yXXwwO2o9ais0fDA7aj1jW2o+PjJdfDA7Qz1qO2k9aDtyZXR1cm4ga3wwfWZ1bmN0aW9uIExEKGYsZyxoLGosayxsKXtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDtrPWt8MDtsPWx8MDt2YXIgbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEQ9MCxFPTAsRj0wLEc9MCxIPTAsST0wLEo9MCxLPTAsTD0wLE09MCxOPTAsTz0wLFA9MCxRPTAsUj0wLFM9MCxUPTAsVT0wLFY9MCxXPTAsWD0wLFk9MDtZPWk7aT1pKzE3NnwwO3E9WSs0MHwwO049WSsxNjB8MDt0PVkrMTU2fDA7dT1ZKzE1MnwwO3Y9WSszMnwwO089WSsxNDh8MDtFPVkrMTQ0fDA7Sj1ZKzE0MHwwO0s9WSsxMzZ8MDtHPVkrMTMyfDA7WD1ZKzEyOHwwO1E9WSsxMjR8MDtJPVkrMTIwfDA7Uj1ZKzExNnwwO1c9WSsxMTJ8MDtTPVkrMTA4fDA7eT1ZKzEwNHwwO0Q9WSsxMDB8MDtGPVkrOTZ8MDtIPVkrOTJ8MDtzPVkrODh8MDtCPVkrMjR8MDt4PVkrMTZ8MDtwPVkrMTY0fDA7VD1ZKzg0fDA7QT1ZKzgwfDA7VT1ZKzc2fDA7UD1ZKzcyfDA7Vj1ZKzY4fDA7bz1ZKzY0fDA7bj1ZKzYwfDA7bT1ZKzh8MDt6PVkrNTZ8MDt3PVk7TD1ZKzUyfDA7TT1ZKzQ4fDA7Y1tOPj4yXT1mO2NbdD4+Ml09ZztjW3U+PjJdPWg7Zz12O2NbZz4+Ml09ajtjW2crND4+Ml09aztjW08+PjJdPWw7YVtwPj4wXT0wO2NbVD4+Ml09MDtjW0E+PjJdPTA7Y1tQPj4yXT0wO2NbWD4+Ml09Y1soY1tOPj4yXXwwKSs4Pj4yXTtjW1E+PjJdPWZ4KGNbWD4+Ml18MCwyMCl8MDtjW0U+PjJdPTA7Y1tJPj4yXT1jWyhjW3U+PjJdfDApKzE2Pj4yXTtjW0s+PjJdPShjWyhjW3Q+PjJdfDApKzIwPj4yXXwwKSsoKGNbKGNbdD4+Ml18MCkrMTI+PjJdfDApKjQ4fDApO2NbSD4+Ml09Y1soY1tPPj4yXXwwKSs2ND4+Ml07Zz1CO2NbZz4+Ml09MDtjW2crND4+Ml09MDtjW0o+PjJdPWNbKGNbdD4+Ml18MCkrMjA+PjJdO3doaWxlKDEpe2lmKChjW0o+PjJdfDApPj4+MD49KGNbSz4+Ml18MCk+Pj4wKWJyZWFrO2Nbbz4+Ml09Y1tjW0o+PjJdPj4yXTtnPWNbSD4+Ml18MDtpZigoKChjW2c+PjJdfDApPT0wJihjW2crND4+Ml18MCk9PTA/KGVbKGNbSj4+Ml18MCkrMTA+PjFdJjJ8MCk9PTA6MCk/KGNbKGNbbz4+Ml18MCkrND4+Ml0mMXwwKT09MDowKT8oaEUoY1tvPj4yXXwwLGNbKGNbdT4+Ml18MCkrNDQ+PjJdfDApfDApIT0wOjApe2g9Y1tjW04+PjJdPj4yXXwwO2c9Y1tUPj4yXXwwO2NbVD4+Ml09d3ooaCxnLEl5KGNbY1tOPj4yXT4+Ml18MCxjW28+PjJdfDAsMCl8MCl8MH1nPXY7aWYoaUUoY1tKPj4yXXwwLGNbdT4+Ml18MCxjW2c+PjJdfDAsY1tnKzQ+PjJdfDApfDApe2Nbbj4+Ml09Y1soY1tKPj4yXXwwKSsyOD4+Ml07aWYoKGNbbj4+Ml18MCk+PTY0KXtqPTA7az0tMjE0NzQ4MzY0OH1lbHNle2o9V1IoMSwwLGNbbj4+Ml18MCl8MDtrPUN9Zz1tO2NbZz4+Ml09ajtjW2crND4+Ml09aztpZighKGFbcD4+MF18MCkpe2c9Y1soY1soY1tJPj4yXXwwKSs0Pj4yXXwwKSsoY1tuPj4yXTw8NCk+PjJdfDA7Y1txPj4yXT1jW2NbST4+Ml0+PjJdO2NbcSs0Pj4yXT1nO1JkKDI4NCwzNDcxOSxxKTthW3A+PjBdPTF9aD1CO2c9bTtpZigoY1toPj4yXSZjW2c+PjJdfDApPT0wPyhjW2grND4+Ml0mY1tnKzQ+PjJdfDApPT0wOjApe2lmKGpFKGNbY1tOPj4yXT4+Ml18MCxjW0g+PjJdfDAsKGNbRT4+Ml18MCkrMXwwKXwwKXtyPTU3O2JyZWFrfWw9Y1tKPj4yXXwwO2Y9Y1tFPj4yXXwwO2NbRT4+Ml09ZisxO2NbKGNbKGNbSD4+Ml18MCkrNDg+PjJdfDApKyhmPDwyKT4+Ml09bDtmPW07bD1CO2g9Y1tsKzQ+PjJdfGNbZis0Pj4yXTtnPUI7Y1tnPj4yXT1jW2w+PjJdfGNbZj4+Ml07Y1tnKzQ+PjJdPWh9fWNbSj4+Ml09KGNbSj4+Ml18MCkrNDh9aWYoKHJ8MCk9PTU3KXtXPWNbTj4+Ml18MDtXPWNbVz4+Ml18MDtYPWNbVD4+Ml18MDtpdihXLFgpO2k9WTtyZXR1cm59bz1jW0U+PjJdJjY1NTM1O2JbKGNbSD4+Ml18MCkrNDA+PjFdPW87YlsoY1tIPj4yXXwwKSsyND4+MV09bztjWyhjW0g+PjJdfDApKzM2Pj4yXT0xNjk2MTtvPShjW3U+PjJdfDApKzU2fDA7cD1CO3E9Y1tvKzQ+PjJdJih+Y1twKzQ+PjJdfC0yMTQ3NDgzNjQ4KTtyPXg7Y1tyPj4yXT1jW28+PjJdJn5jW3A+PjJdO2Nbcis0Pj4yXT1xO2lmKDYzPChiWyhjW0k+PjJdfDApKzM0Pj4xXXwwKSlqPTYzO2Vsc2Ugaj1iWyhjW0k+PjJdfDApKzM0Pj4xXXwwO2NbRD4+Ml09ajtjW3k+PjJdPTA7d2hpbGUoMSl7aWYoKGNbeT4+Ml18MCk+PShjW0Q+PjJdfDApKWJyZWFrO3I9eDtwPWNbcj4+Ml18MDtyPWNbcis0Pj4yXXwwO3E9V1IoMSwwLGNbeT4+Ml18MCl8MDtpZigocCZxfDApIT0wfChyJkN8MCkhPTApY1tFPj4yXT0oY1tFPj4yXXwwKSsxO2NbeT4+Ml09KGNbeT4+Ml18MCkrMX1pZigwIT0wPzE6KGNbKGNbdT4+Ml18MCkrNTYrND4+Ml0mLTIxNDc0ODM2NDh8MCkhPTApY1tFPj4yXT0oY1tFPj4yXXwwKSsoKGJbKGNbST4+Ml18MCkrMzQ+PjFdfDApLTY0KzEpO2NbRz4+Ml09a0UoY1tjW04+PjJdPj4yXXwwLChjW0U+PjJdfDApKzEmNjU1MzUsMCxzKXwwO2lmKCEoY1tHPj4yXXwwKSl7Vz1jW04+PjJdfDA7Vz1jW1c+PjJdfDA7WD1jW1Q+PjJdfDA7aXYoVyxYKTtpPVk7cmV0dXJufWNbKGNbSD4+Ml18MCkrMjQrOD4+Ml09Y1tHPj4yXTtjW2NbRz4+Ml0+PjJdPTM0NzQ1O2NbKGNbRz4+Ml18MCkrMTI+PjJdPWNbST4+Ml07Y1tTPj4yXT0wO3M9QjtjW3M+PjJdPTA7Y1tzKzQ+PjJdPTA7Y1tKPj4yXT1jWyhjW3Q+PjJdfDApKzIwPj4yXTt3aGlsZSgxKXtpZigoY1tKPj4yXXwwKT4+PjA+PShjW0s+PjJdfDApPj4+MClicmVhaztzPXY7aWYoaUUoY1tKPj4yXXwwLGNbdT4+Ml18MCxjW3M+PjJdfDAsY1tzKzQ+PjJdfDApfDApe2Nbej4+Ml09Y1soY1tKPj4yXXwwKSsyOD4+Ml07aWYoKGNbej4+Ml18MCk+PTY0KXtqPTA7az0tMjE0NzQ4MzY0OH1lbHNle2o9V1IoMSwwLGNbej4+Ml18MCl8MDtrPUN9cj13O2Nbcj4+Ml09ajtjW3IrND4+Ml09aztyPUI7cz13O2lmKChjW3I+PjJdJmNbcz4+Ml18MCk9PTA/KGNbcis0Pj4yXSZjW3MrND4+Ml18MCk9PTA6MCl7Y1tMPj4yXT1jW2NbSj4+Ml0+PjJdO3E9dztwPUI7cj1jW3ArND4+Ml18Y1txKzQ+PjJdO3M9QjtjW3M+PjJdPWNbcD4+Ml18Y1txPj4yXTtjW3MrND4+Ml09cjtiWyhjWyhjW0c+PjJdfDApKzQ+PjJdfDApKyhjW1M+PjJdPDwxKT4+MV09Y1soY1tKPj4yXXwwKSsyOD4+Ml07Y1tGPj4yXT1zQihjW04+PjJdfDAsY1soY1tMPj4yXXwwKSsxMj4+Ml18MCxjWyhjW0w+PjJdfDApKzE2Pj4yXXwwKXwwO2lmKGNbRj4+Ml18MClqPWNbY1tGPj4yXT4+Ml18MDtlbHNlIGo9MzQ4MzQ7Y1soY1soY1tHPj4yXXwwKSszMj4+Ml18MCkrKGNbUz4+Ml08PDIpPj4yXT1qO2NbUz4+Ml09KGNbUz4+Ml18MCkrMX19Y1tKPj4yXT0oY1tKPj4yXXwwKSs0OH1jW3k+PjJdPTA7d2hpbGUoMSl7aWYoKGNbeT4+Ml18MCk+PShjW0Q+PjJdfDApKWJyZWFrO0w9eDtKPWNbTD4+Ml18MDtMPWNbTCs0Pj4yXXwwO0s9V1IoMSwwLGNbeT4+Ml18MCl8MDtpZigoSiZLfDApIT0wfChMJkN8MCkhPTApe2JbKGNbKGNbRz4+Ml18MCkrND4+Ml18MCkrKGNbUz4+Ml08PDEpPj4xXT1jW3k+PjJdO2NbKGNbKGNbRz4+Ml18MCkrMzI+PjJdfDApKyhjW1M+PjJdPDwyKT4+Ml09MzQ4MzQ7Y1tTPj4yXT0oY1tTPj4yXXwwKSsxfWNbeT4+Ml09KGNbeT4+Ml18MCkrMX1hOmRvIGlmKDAhPTA/MTooY1soY1t1Pj4yXXwwKSs1Nis0Pj4yXSYtMjE0NzQ4MzY0OHwwKSE9MCl7Y1t5Pj4yXT02Mzt3aGlsZSgxKXtpZigoY1t5Pj4yXXwwKT49KGJbKGNbST4+Ml18MCkrMzQ+PjFdfDApKWJyZWFrIGE7YlsoY1soY1tHPj4yXXwwKSs0Pj4yXXwwKSsoY1tTPj4yXTw8MSk+PjFdPWNbeT4+Ml07Y1soY1soY1tHPj4yXXwwKSszMj4+Ml18MCkrKGNbUz4+Ml08PDIpPj4yXT0zNDgzNDtjW1M+PjJdPShjW1M+PjJdfDApKzE7Y1t5Pj4yXT0oY1t5Pj4yXXwwKSsxfX13aGlsZSgwKTtiWyhjWyhjW0c+PjJdfDApKzQ+PjJdfDApKyhjW1M+PjJdPDwxKT4+MV09LTE7Y1soY1soY1tHPj4yXXwwKSszMj4+Ml18MCkrKGNbUz4+Ml08PDIpPj4yXT0zNDgzNDtLPShjW04+PjJdfDApKzQwfDA7TD1jW0s+PjJdfDA7Y1tLPj4yXT1MKzE7Y1soY1tPPj4yXXwwKSs4Pj4yXT1MO2l4KGNbWD4+Ml18MCwxMDYsY1soY1tPPj4yXXwwKSs4Pj4yXXwwLChjW0U+PjJdfDApKzF8MCl8MDtWeihjW04+PjJdfDAsY1tHPj4yXXwwKTtBQShjW04+PjJdfDApO2NbVT4+Ml09KGNbKGNbY1t0Pj4yXT4+Ml18MCkrND4+Ml18MCkrOCsoKGRbKGNbTz4+Ml18MCkrNDQ+PjBdfDApKjcyfDApO2lmKChkWyhjW1U+PjJdfDApKzM2KzE+PjBdfDApPj4+NCYxKXtjW00+PjJdPWNbKGNbVT4+Ml18MCkrMjg+PjJdO2NbUD4+Ml09aXgoY1tYPj4yXXwwLDc2LDAsMCl8MDtqeChjW1g+PjJdfDAsMTUsY1tNPj4yXXwwLDAsY1soY1tVPj4yXXwwKSsyND4+Ml18MCl8MDtjW1I+PjJdPVN6KGNbWD4+Ml18MCwxNixjW00+PjJdfDApfDB9ZWxzZSBjW1I+PjJdPVN6KGNbWD4+Ml18MCw1NyxjWyhjW08+PjJdfDApKzQ+PjJdfDApfDA7aWYoY1tUPj4yXXwwKXtjW0E+PjJdPVd6KGNbWD4+Ml18MCl8MDtpQihjW04+PjJdfDAsY1tUPj4yXXwwLGNbQT4+Ml18MCwxNik7TT0oY1tIPj4yXXwwKSszNnwwO2NbTT4+Ml09Y1tNPj4yXXwxMzEwNzJ9Y1tXPj4yXT12eChjW04+PjJdfDApfDA7Y1tWPj4yXT1vQShjW04+PjJdfDAsY1tHPj4yXXwwLGNbKGNbTz4+Ml18MCkrND4+Ml18MCxjW1c+PjJdfDAsMCwwLDAsMCl8MDtpeChjW1g+PjJdfDAsMTI2LGNbKGNbTz4+Ml18MCkrOD4+Ml18MCxjW1c+PjJdfDApfDA7SmgoY1tYPj4yXXwwLDE2KTtpZihjW1Q+PjJdfDApX3ooY1tYPj4yXXwwLGNbQT4+Ml18MCk7aj1jW1g+PjJdfDA7aWYoKGRbKGNbVT4+Ml18MCkrMzYrMT4+MF18MCk+Pj40JjEpe2RBKGosY1tQPj4yXXwwLChjW1Y+PjJdfDApKyhjW1M+PjJdfDApfDApO3NEKGNbWD4+Ml18MCxjW1I+PjJdfDAsY1soY1tPPj4yXXwwKSs0Pj4yXXwwLGNbKGNbVT4+Ml18MCkrMzI+PjJdfDAsMSk7WXooY1tYPj4yXXwwLGNbUj4+Ml18MCl8MDtWPShjW1U+PjJdfDApKzM2KzF8MDthW1Y+PjBdPWFbVj4+MF0mLTE3fWVsc2UgaXgoaiw3LGNbKGNbTz4+Ml18MCkrND4+Ml18MCwoY1tSPj4yXXwwKSsxfDApfDA7SmgoY1tYPj4yXXwwLDMpO1p6KGNbWD4+Ml18MCxjW1I+PjJdfDApO3h4KGNbTj4+Ml18MCxjW1c+PjJdfDApO3lBKGNbTj4+Ml18MCk7WnooY1tYPj4yXXwwLGNbUT4+Ml18MCk7Vz1jW04+PjJdfDA7Vz1jW1c+PjJdfDA7WD1jW1Q+PjJdfDA7aXYoVyxYKTtpPVk7cmV0dXJufWZ1bmN0aW9uIE1EKGYsZyxoLGosayxsKXtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDtrPWt8MDtsPWx8MDt2YXIgbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTAsRT0wLEY9MCxHPTAsSD0wLEk9MCxKPTAsSz0wLEw9MCxNPTAsTj0wLE89MDtPPWk7aT1pKzI1NnwwO0g9Tys0MHwwO0c9TyszMnwwO0o9TysyNHwwO0k9TysxNnwwO0Y9Tys4fDA7RT1PO3M9TysxNDR8MDttPU8rMTQwfDA7bj1PKzEzNnwwO289TysxMzJ8MDt0PU8rMTI4fDA7dT1PKzEyNHwwO3A9TysxNDh8MDtCPU8rMTIwfDA7ej1PKzExNnwwO0Q9TysxMTJ8MDtxPU8rMTA4fDA7dz1PKzEwNHwwO3g9TysxMDB8MDtBPU8rOTZ8MDt2PU8rOTJ8MDtMPU8rODh8MDtDPU8rNjB8MDtyPU8rMTUyfDA7Sz1PKzU2fDA7eT1PKzUyfDA7TT1PKzQ4fDA7Y1ttPj4yXT1mO2Nbbj4+Ml09ZztjW28+PjJdPWg7Y1t0Pj4yXT1qO2NbdT4+Ml09aztiW3A+PjFdPWw7Y1tCPj4yXT0wO2RvIGlmKChkWyhjW20+PjJdfDApKzQwOT4+MF18MHwwKT09Mil7Y1t6Pj4yXT0oY1tuPj4yXXwwKSs4KygoZFsoY1tvPj4yXXwwKSs0ND4+MF18MCkqNzJ8MCk7Y1tEPj4yXT1jWyhjW20+PjJdfDApKzg+PjJdO2NbcT4+Ml09Y1tjW20+PjJdPj4yXTtjW3c+PjJdPWNbKGNbbT4+Ml18MCkrNDIwPj4yXTtjW0E+PjJdPWNbKGNbbz4+Ml18MCkrNjQ+PjJdO2Nbdj4+Ml09Y1soY1tBPj4yXXwwKSszNj4+Ml07aWYoKGNbdj4+Ml0mODE5MnwwKT09MD8oKGVbcD4+MV18MCkmMzJ8MCk9PTA6MCl7ZG8gaWYoY1t2Pj4yXSY0OCltPTE7ZWxzZXtpZigoY1t2Pj4yXSYxMDI0fDApPT0wPyhlWyhjW0E+PjJdfDApKzI0Pj4xXXwwfDApPjA6MCl7bT0xO2JyZWFrfW09KChlW3A+PjFdfDApJjN8MCkhPTB9d2hpbGUoMCk7Y1t4Pj4yXT1tJjE7ZGcoQyxjW3E+PjJdfDAsciwxMDAsMWU5KTtkRShDLChjW3g+PjJdfDApIT0wPzM0NDUyOjM0NDU5KTttPWNbej4+Ml18MDtpZihjWyhjW3o+PjJdfDApKzIwPj4yXXwwKXtjW0U+PjJdPWRbbSs0MD4+MF07ckEoQywzNDQ2NCxFKX1lbHNle2NbRj4+Ml09Y1ttKzg+PjJdO3JBKEMsMzQ0NzcsRil9aWYoY1soY1t6Pj4yXXwwKSsxMj4+Ml18MCl7Y1tJPj4yXT1jWyhjW3o+PjJdfDApKzEyPj4yXTtyQShDLDM0NDg3LEkpfWRvIGlmKCEoY1t2Pj4yXSYxMjgwKSl7Y1tLPj4yXT0wO2NbeT4+Ml09Y1soY1tBPj4yXXwwKSsyNCs4Pj4yXTtpZigoKGRbKGNbKGNbej4+Ml18MCkrMTY+PjJdfDApKzQyPj4wXXwwKSYzMnwwKSE9MD8oYVsoY1t5Pj4yXXwwKSs1NT4+MF0mM3wwKT09MjowKXtpZihjW3g+PjJdfDApY1tLPj4yXT0zNDQ5NH1lbHNlIE49MTk7ZG8gaWYoKE58MCk9PTE5KXtpZihjW3Y+PjJdJjEzMTA3Mil7Y1tLPj4yXT0zNDUwNjticmVha31pZihjW3Y+PjJdJjE2Mzg0KXtjW0s+PjJdPTM0NTM5O2JyZWFrfWlmKGNbdj4+Ml0mNjQpe2NbSz4+Ml09MzQ1NjQ7YnJlYWt9ZWxzZXtjW0s+PjJdPTM0NTgyO2JyZWFrfX13aGlsZSgwKTtpZihjW0s+PjJdfDApe3NBKEMsMzQ1OTEsNyk7Tj1jW0s+PjJdfDA7Y1tKPj4yXT1jW2NbeT4+Ml0+PjJdO3JBKEMsTixKKTtlRShDLGNbQT4+Ml18MCl9fWVsc2V7aWYoKGNbdj4+Ml0mMjU2fDApIT0wPyhjW3Y+PjJdJjE1fDApIT0wOjApe2RvIGlmKCEoY1t2Pj4yXSY1KSl7aWYoKGNbdj4+Ml0mNDh8MCk9PTQ4KXtjW00+PjJdPTM0NjAxO2JyZWFrfWlmKGNbdj4+Ml0mMzIpe2NbTT4+Ml09MzQ2MTU7YnJlYWt9ZWxzZXtjW00+PjJdPTM0NjE3O2JyZWFrfX1lbHNlIGNbTT4+Ml09MzQ1OTk7d2hpbGUoMCk7Y1tHPj4yXT1jW00+PjJdO3JBKEMsMzQ2MTksRyk7YnJlYWt9aWYoY1t2Pj4yXSYxMDI0KXtOPWNbKGNbQT4+Ml18MCkrMjQrOD4+Ml18MDtjW0g+PjJdPWNbKGNbQT4+Ml18MCkrMjQ+PjJdO2NbSCs0Pj4yXT1OO3JBKEMsMzQ2NTcsSCl9fXdoaWxlKDApO2NbTD4+Ml09ZmcoQyl8MDtjW0I+PjJdPW14KGNbRD4+Ml18MCwxNjIsY1t3Pj4yXXwwLGNbdD4+Ml18MCxjW3U+PjJdfDAsY1tMPj4yXXwwLC0xKXwwO2JyZWFrfWNbcz4+Ml09MDtOPWNbcz4+Ml18MDtpPU87cmV0dXJuIE58MH13aGlsZSgwKTtjW3M+PjJdPWNbQj4+Ml07Tj1jW3M+PjJdfDA7aT1PO3JldHVybiBOfDB9ZnVuY3Rpb24gTkQoZixnLGgsail7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7dmFyIGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEQ9MCxFPTAsRj0wLEc9MCxIPTAsST0wLEo9MCxLPTAsTD0wLE09MCxOPTAsTz0wLFA9MCxRPTAsUj0wLFM9MCxUPTAsVT0wLFY9MCxXPTAsWD0wLFk9MCxaPTAsXz0wLCQ9MCxhYT0wLGJhPTAsY2E9MCxkYT0wLGVhPTAsZmE9MCxnYT0wLGhhPTAsaWE9MCxqYT0wLGthPTAsbGE9MCxtYT0wLG5hPTAsb2E9MCxwYT0wLHFhPTAscmE9MCxzYT0wLHRhPTAsdWE9MCx2YT0wLHdhPTAseGE9MCx5YT0wLHphPTAsQWE9MCxCYT0wLENhPTAsRGE9MCxFYT0wLEZhPTAsR2E9MCxIYT0wLElhPTAsSmE9MCxLYT0wLExhPTAsTWE9MCxOYT0wLE9hPTAsUGE9MCxRYT0wLFJhPTAsU2E9MCxUYT0wLFVhPTAsVmE9MCxXYT0wLFhhPTAsWWE9MCxaYT0wLF9hPTAsJGE9MCxhYj0wLGJiPTAsY2I9MCxkYj0wLGViPTAsZmI9MCxnYj0wLGhiPTA7aGI9aTtpPWkrNDQ4fDA7U2E9aGIrOHwwO1RhPWhiKzQzMnwwO009aGIrNDI4fDA7VWE9aGI7WGE9aGIrNDI0fDA7UmE9aGIrNDIwfDA7V2E9aGIrNDE2fDA7cmE9aGIrNDEyfDA7emE9aGIrNDA4fDA7UGE9aGIrNDA0fDA7JGE9aGIrNDAwfDA7T2E9aGIrMzk2fDA7Y2I9aGIrMzkyfDA7YmI9aGIrMzg4fDA7YWI9aGIrMzg0fDA7UWE9aGIrMzgwfDA7ZmI9aGIrMzc2fDA7SD1oYiszNzJ8MDtHPWhiKzM2OHwwO1ZhPWhiKzM2NHwwO05hPWhiKzM2MHwwO289aGIrMzU2fDA7az1oYiszNTJ8MDtuPWhiKzM0OHwwO2w9aGIrMzQ0fDA7cT1oYiszNDB8MDttPWhiKzMzNnwwO3A9aGIrMzMyfDA7dD1oYiszMjh8MDtyPWhiKzMyNHwwO3U9aGIrMzIwfDA7cz1oYiszMTZ8MDtGPWhiKzMxMnwwO0U9aGIrMzA4fDA7dj1oYiszMDR8MDt5PWhiKzMwMHwwO3g9aGIrMjk2fDA7ej1oYisyOTJ8MDtCPWhiKzI4OHwwO0Q9aGIrMjg0fDA7dz1oYisyODB8MDtBPWhiKzI3NnwwO3hhPWhiKzQ0MnwwO3ZhPWhiKzQ0MHwwO3lhPWhiKzQzOHwwO0hhPWhiKzI3MnwwO0VhPWhiKzI2OHwwO0RhPWhiKzI2NHwwO0lhPWhiKzI2MHwwO3VhPWhiKzI1NnwwO0phPWhiKzI1MnwwO3dhPWhiKzI0OHwwO0JhPWhiKzI0NHwwO01hPWhiKzI0MHwwO0k9aGIrMjM2fDA7QWE9aGIrMjMyfDA7TGE9aGIrMjI4fDA7S2E9aGIrMjI0fDA7c2E9aGIrNDQ3fDA7dGE9aGIrNDQ2fDA7Sj1oYisyMjB8MDtLPWhiKzQ0NXwwO0w9aGIrNDQ0fDA7RmE9aGIrMjE2fDA7R2E9aGIrMjEyfDA7Q2E9aGIrMjA4fDA7ZWE9aGIrMjA0fDA7Y2E9aGIrMjAwfDA7JD1oYisxOTZ8MDtQPWhiKzE5MnwwO2xhPWhiKzE4OHwwO25hPWhiKzE4NHwwO21hPWhiKzE4MHwwO1E9aGIrMTc2fDA7Uz1oYisxNzJ8MDtvYT1oYisxNjh8MDtWPWhiKzE2NHwwO3BhPWhiKzQzNnwwO189aGIrMTYwfDA7amE9aGIrMTU2fDA7WD1oYisxNTJ8MDtaPWhiKzE0OHwwO2dhPWhiKzE0NHwwO1U9aGIrMTQwfDA7YWE9aGIrMTM2fDA7ZGE9aGIrMTMyfDA7aWE9aGIrMTI4fDA7YmE9aGIrMTI0fDA7Vz1oYisxMjB8MDtoYT1oYisxMTZ8MDtOPWhiKzExMnwwO2thPWhiKzEwOHwwO1Q9aGIrMTA0fDA7ZmE9aGIrMTAwfDA7WT1oYis5NnwwO1I9aGIrOTJ8MDtPPWhiKzg4fDA7WmE9aGIrODR8MDtlYj1oYis4MHwwO2diPWhiKzc2fDA7X2E9aGIrNzJ8MDtkYj1oYisyNHwwO1lhPWhiKzE2fDA7Y1tUYT4+Ml09ZjtjW00+PjJdPWc7Zz1VYTtjW2c+PjJdPWg7Y1tnKzQ+PjJdPWo7Y1tOYT4+Ml09MDtjW28+PjJdPTA7Y1thYj4+Ml09Y1tjW1RhPj4yXT4+Ml07Y1tmYj4+Ml09Y1soY1thYj4+Ml18MCkrOD4+Ml07Y1tjYj4+Ml09KGNbVGE+PjJdfDApKzgwO2NbUWE+PjJdPWNbY1thYj4+Ml0+PjJdO2NbJGE+PjJdPShjW1RhPj4yXXwwKSs3NTIrKChjW00+PjJdfDApKjgwfDApO2NbT2E+PjJdPWNbKGNbJGE+PjJdfDApKzY0Pj4yXTtjW0g+PjJdPShjWyhjW1RhPj4yXXwwKSs0Pj4yXXwwKSs4KygoZFsoY1skYT4+Ml18MCkrNDQ+PjBdfDApKjcyfDApO2NbV2E+PjJdPWNbKGNbSD4+Ml18MCkrNDQ+PjJdO2c9VWE7aD1jW2c+PjJdfDA7Zz1jW2crND4+Ml18MDtqPU9EKChjW1RhPj4yXXwwKSs0ODh8MCxjW1dhPj4yXXwwKXwwO2Y9KGNbJGE+PjJdfDApKzcyfDA7Y1tmPj4yXT1oJn5qO2NbZis0Pj4yXT1nJn5DO2Y9KGNbVGE+PjJdfDApKzY0fDA7Zj1TUihjW2Y+PjJdfDAsY1tmKzQ+PjJdfDAsY1tNPj4yXXwwKXwwO2NbUGE+PjJdPWYmMTtpZihjWyhjW09hPj4yXXwwKSszNj4+Ml0mNjQpaD0oZVsoY1tUYT4+Ml18MCkrNDA+PjFdJjMyfDApPT0wO2Vsc2UgaD0wO2NbemE+PjJdPWgmMTtmPVd6KGNbZmI+PjJdfDApfDA7Y1soY1skYT4+Ml18MCkrMTY+PjJdPWY7Y1soY1skYT4+Ml18MCkrMTI+PjJdPWY7Y1tHPj4yXT1mO2Y9V3ooY1tmYj4+Ml18MCl8MDtjWyhjWyRhPj4yXXwwKSsyND4+Ml09ZjtjW1ZhPj4yXT1mO2lmKChkWyhjWyRhPj4yXXwwKSs0ND4+MF18MCk+MD8oZFsoY1tIPj4yXXwwKSszNj4+MF0mOHwwKSE9MDowKXtnPShjW2FiPj4yXXwwKSs0NHwwO2Y9KGNbZz4+Ml18MCkrMXwwO2NbZz4+Ml09ZjtjW2NbJGE+PjJdPj4yXT1mO2l4KGNbZmI+PjJdfDAsNzYsMCxjW2NbJGE+PjJdPj4yXXwwKXwwfWRvIGlmKChkWyhjW0g+PjJdfDApKzM2KzE+PjBdfDApPj4+NCYxKXtjW2s+PjJdPWNbKGNbSD4+Ml18MCkrMjg+PjJdO2p4KGNbZmI+PjJdfDAsMTUsY1trPj4yXXwwLDAsY1soY1tIPj4yXXwwKSsyND4+Ml18MCl8MDtSYT1peChjW2ZiPj4yXXwwLDE2LGNbaz4+Ml18MCxjW0c+PjJdfDApfDA7Y1soY1skYT4+Ml18MCkrNTI+PjJdPVJhO2FbKGNbJGE+PjJdfDApKzQ1Pj4wXT0xM31lbHNle2g9Y1tPYT4+Ml18MDtpZihjWyhjW09hPj4yXXwwKSszNj4+Ml0mMTAyNCl7Y1txPj4yXT1lW2grNDA+PjFdO0FBKGNbYWI+PjJdfDApO2Nbbj4+Ml09Q0EoY1thYj4+Ml18MCwoY1txPj4yXXwwKSsyfDApfDA7Y1tsPj4yXT1jWyhjWyRhPj4yXXwwKSsxMj4+Ml07Y1tYYT4+Ml09MDt3aGlsZSgxKXtpZigoY1tYYT4+Ml18MCk+PShjW3E+PjJdfDApKWJyZWFrO2NbcD4+Ml09KGNbbj4+Ml18MCkrKGNbWGE+PjJdfDApKzI7Y1tiYj4+Ml09Y1soY1soY1tPYT4+Ml18MCkrNDg+PjJdfDApKyhjW1hhPj4yXTw8Mik+PjJdO2RvIGlmKGNbYmI+PjJdfDApaWYoZVsoY1tiYj4+Ml18MCkrMTI+PjFdJjEpe1BEKGNbYWI+PjJdfDAsY1tiYj4+Ml18MCxjWyRhPj4yXXwwLGNbWGE+PjJdfDAsY1tQYT4+Ml18MCxjW3A+PjJdfDApfDA7Y1tsPj4yXT1jWyhjWyRhPj4yXXwwKSsxNj4+Ml07YnJlYWt9ZWxzZXtjW3Q+PjJdPWNbKGNbY1tiYj4+Ml0+PjJdfDApKzE2Pj4yXTtRRChjW2FiPj4yXXwwLGNbdD4+Ml18MCxjW3A+PjJdfDAsMSk7YnJlYWt9d2hpbGUoMCk7Y1tYYT4+Ml09KGNbWGE+PjJdfDApKzF9aXgoY1tmYj4+Ml18MCw3NixjWyhjW09hPj4yXXwwKSsyND4+Ml18MCxjW24+PjJdfDApfDA7aXgoY1tmYj4+Ml18MCw3NixjW3E+PjJdfDAsKGNbbj4+Ml18MCkrMXwwKXwwO214KGNbZmI+PjJdfDAsMTEsY1tXYT4+Ml18MCxjW2w+PjJdfDAsY1tuPj4yXXwwLGNbKGNbT2E+PjJdfDApKzI0Kzg+PjJdfDAsKGRbKGNbT2E+PjJdfDApKzI0KzQ+PjBdfDApIT0wPy0xMTotMil8MDthWyhjW09hPj4yXXwwKSsyNCs0Pj4wXT0wO2NbKGNbJGE+PjJdfDApKzQ4Pj4yXT1jW1dhPj4yXTthWyhjWyRhPj4yXXwwKSs0NT4+MF09KGRbKGNbVGE+PjJdfDApKzQ1Pj4wXXwwKSE9MD8xNjE6NzA7UmE9d3goY1tmYj4+Ml18MCl8MDtjWyhjWyRhPj4yXXwwKSs1Mj4+Ml09UmE7Y1ttPj4yXT1jWyhjWyRhPj4yXXwwKSs1Nj4+Ml07Y1tYYT4+Ml09KGNbcT4+Ml18MCktMTt3aGlsZSgxKXtpZigoY1tYYT4+Ml18MCk8MClicmVhaztjW2JiPj4yXT1jWyhjWyhjW09hPj4yXXwwKSs0OD4+Ml18MCkrKGNbWGE+PjJdPDwyKT4+Ml07aWYoKGNbWGE+PjJdfDApPDE2PyhlWyhjW09hPj4yXXwwKSsyNCs2Pj4xXT4+Y1tYYT4+Ml0mMXwwKSE9MDowKVJEKGNbJGE+PjJdfDAsY1tiYj4+Ml18MCk7ZWxzZSBxYT0yMTtpZigocWF8MCk9PTIxPyhxYT0wLChlWyhjW2JiPj4yXXwwKSsxMj4+MV0mMXwwKSE9MCk6MCl7aWYoIShhWyhjW1FhPj4yXXwwKSs2OT4+MF18MCkpe1BhPWNbZmI+PjJdfDA7UmE9KGNbbT4+Ml18MCkrLTF8MDtjW20+PjJdPVJhO2Nbcz4+Ml09ZUEoUGEsY1soY1soY1skYT4+Ml18MCkrNTYrND4+Ml18MCkrKFJhKjEyfDApKzQ+PjJdfDApfDA7angoY1tmYj4+Ml18MCxkW2Nbcz4+Ml0+PjBdfDAsY1soY1tzPj4yXXwwKSs0Pj4yXXwwLGNbKGNbcz4+Ml18MCkrOD4+Ml18MCxjWyhjW3M+PjJdfDApKzEyPj4yXXwwKXwwfWNbcj4+Ml09RXYoY1thYj4+Ml18MCwzNywwLDAsMCl8MDtpZihjW3I+PjJdfDApe2NbKGNbcj4+Ml18MCkrMTI+PjJdPWNbKGNbY1tiYj4+Ml0+PjJdfDApKzEyPj4yXTtSYT1XdihjW1FhPj4yXXwwLDE1NywwKXwwO2NbdT4+Ml09UmE7Y1soY1tyPj4yXXwwKSsxNj4+Ml09UmE7aWYoY1t1Pj4yXXwwKXtjWyhjW3U+PjJdfDApKzI4Pj4yXT0oY1tuPj4yXXwwKSsoY1tYYT4+Ml18MCkrMjtpQihjW2FiPj4yXXwwLGNbcj4+Ml18MCxjWyhjWyRhPj4yXXwwKSsyND4+Ml18MCwwKX1jWyhjW3I+PjJdfDApKzEyPj4yXT0wO2l2KGNbUWE+PjJdfDAsY1tyPj4yXXwwKX19Y1tYYT4+Ml09KGNbWGE+PjJdfDApKy0xfXlBKGNbYWI+PjJdfDApO2JyZWFrfWlmKChjW2grMzY+PjJdJjI1NnwwKSE9MD8oY1soY1tPYT4+Ml18MCkrMzY+PjJdJjV8MCkhPTA6MCl7Y1tiYj4+Ml09Y1tjWyhjW09hPj4yXXwwKSs0OD4+Ml0+PjJdO1FhPShjW2FiPj4yXXwwKSs0NHwwO1JhPShjW1FhPj4yXXwwKSsxfDA7Y1tRYT4+Ml09UmE7Y1tvPj4yXT1SYTtjW05hPj4yXT1QRChjW2FiPj4yXXwwLGNbYmI+PjJdfDAsY1skYT4+Ml18MCwwLGNbUGE+PjJdfDAsY1tvPj4yXXwwKXwwO2lmKChjW05hPj4yXXwwKSE9KGNbbz4+Ml18MCkpeHgoY1thYj4+Ml18MCxjW28+PjJdfDApO2NbcmE+PjJdPWNbKGNbJGE+PjJdfDApKzE2Pj4yXTtqeChjW2ZiPj4yXXwwLDMyLGNbV2E+PjJdfDAsY1tyYT4+Ml18MCxjW05hPj4yXXwwKXwwO1dBKGNbYWI+PjJdfDAsY1tOYT4+Ml18MCwxKTtHQihjW2FiPj4yXXwwLGNbV2E+PjJdfDAsLTEsY1tOYT4+Ml18MCk7YVsoY1skYT4+Ml18MCkrNDU+PjBdPS05NTticmVha31pZigoY1soY1tPYT4+Ml18MCkrMzY+PjJdJjI1NnwwKSE9MD8oY1soY1tPYT4+Ml18MCkrMzY+PjJdJjJ8MCkhPTA6MCl7Y1tGPj4yXT0xNjE7Y1t2Pj4yXT0wO2NbWGE+PjJdPTA7Y1t4Pj4yXT0wO2NbeT4+Ml09MDtpZihjWyhjW09hPj4yXXwwKSszNj4+Ml0mMzIpe1JhPWNbWGE+PjJdfDA7Y1tYYT4+Ml09UmErMTtjW3k+PjJdPWNbKGNbKGNbT2E+PjJdfDApKzQ4Pj4yXXwwKSsoUmE8PDIpPj4yXX1pZihjWyhjW09hPj4yXXwwKSszNj4+Ml0mMTYpe1JhPWNbWGE+PjJdfDA7Y1tYYT4+Ml09UmErMTtjW3g+PjJdPWNbKGNbKGNbT2E+PjJdfDApKzQ4Pj4yXXwwKSsoUmE8PDIpPj4yXX1pZihjW1BhPj4yXXwwKXtjW2JiPj4yXT1jW3k+PjJdO2NbeT4+Ml09Y1t4Pj4yXTtjW3g+PjJdPWNbYmI+PjJdfWlmKGNbeT4+Ml18MCl7Y1t6Pj4yXT1jW2NbeT4+Ml0+PjJdO1JhPShYQShjWyhjW3o+PjJdfDApKzE2Pj4yXXwwKXwwKSE9MDtoPWNbYWI+PjJdfDA7aWYoUmEpe1JhPXZ4KGgpfDA7Y1tEPj4yXT1SYTtjW0I+PjJdPVJhO1FEKGNbYWI+PjJdfDAsY1soY1t6Pj4yXXwwKSsxNj4+Ml18MCxjW0I+PjJdfDAsMSk7Y1t3Pj4yXT1kWzM0NDMyKygoZFtjW3o+PjJdPj4wXXwwKS0zOHwxKT4+MF19ZWxzZXtjW0I+PjJdPVpBKGgsY1soY1t6Pj4yXXwwKSsxNj4+Ml18MCxEKXwwO1JEKGNbJGE+PjJdfDAsY1t5Pj4yXXwwKTtjW3c+PjJdPWRbMzQ0MzIrKChkW2Nbej4+Ml0+PjBdfDApLTM4KT4+MF19angoY1tmYj4+Ml18MCxjW3c+PjJdfDAsY1tXYT4+Ml18MCxjW0c+PjJdfDAsY1tCPj4yXXwwKXwwO1dBKGNbYWI+PjJdfDAsY1tCPj4yXXwwLDEpO3h4KGNbYWI+PjJdfDAsY1tEPj4yXXwwKX1lbHNlIGl4KGNbZmI+PjJdfDAsKGNbUGE+PjJdfDApIT0wPzUzOjU3LGNbV2E+PjJdfDAsY1tHPj4yXXwwKXwwO2lmKGNbeD4+Ml18MCl7Y1tBPj4yXT1jW2NbeD4+Ml0+PjJdO1FhPShjW2FiPj4yXXwwKSs0NHwwO1JhPShjW1FhPj4yXXwwKSsxfDA7Y1tRYT4+Ml09UmE7Y1t2Pj4yXT1SYTtRRChjW2FiPj4yXXwwLGNbKGNbQT4+Ml18MCkrMTY+PjJdfDAsY1t2Pj4yXXwwLDEpO2RvIGlmKCEoWEEoY1soY1tBPj4yXXwwKSsxNj4+Ml18MCl8MCkpe2lmKChkW2NbQT4+Ml0+PjBdfDApIT00MD8oZFtjW0E+PjJdPj4wXXwwKSE9Mzg6MCl7cWE9NTQ7YnJlYWt9Y1tGPj4yXT0oY1tQYT4+Ml18MCkhPTA/Mzk6NDF9ZWxzZSBxYT01NDt3aGlsZSgwKTtpZigocWF8MCk9PTU0KWNbRj4+Ml09KGNbUGE+PjJdfDApIT0wPzQwOjM4O2lmKCEoWEEoY1soY1tBPj4yXXwwKSsxNj4+Ml18MCl8MCkpUkQoY1skYT4+Ml18MCxjW3g+PjJdfDApfWNbRT4+Ml09d3goY1tmYj4+Ml18MCl8MDthWyhjWyRhPj4yXXwwKSs0NT4+MF09KGNbUGE+PjJdfDApIT0wPzY6NztjWyhjWyRhPj4yXXwwKSs0OD4+Ml09Y1tXYT4+Ml07Y1soY1skYT4+Ml18MCkrNTI+PjJdPWNbRT4+Ml07aWYoKGNbRj4+Ml18MCk9PTE2MSlicmVhaztRYT0oY1thYj4+Ml18MCkrNDR8MDtSYT0oY1tRYT4+Ml18MCkrMXwwO2NbUWE+PjJdPVJhO2NbTmE+PjJdPVJhO2l4KGNbZmI+PjJdfDAsMTIzLGNbV2E+PjJdfDAsY1tOYT4+Ml18MCl8MDtHQihjW2FiPj4yXXwwLGNbV2E+PjJdfDAsLTEsY1tOYT4+Ml18MCk7angoY1tmYj4+Ml18MCxjW0Y+PjJdfDAsY1t2Pj4yXXwwLGNbRz4+Ml18MCxjW05hPj4yXXwwKXwwO0poKGNbZmI+PjJdfDAsODMpO2JyZWFrfWg9Y1tPYT4+Ml18MDtpZighKGNbKGNbT2E+PjJdfDApKzM2Pj4yXSY1MTIpKXtpZighKGNbaCszNj4+Ml0mODE5MikpaWYoKGRbKGNbSD4+Ml18MCkrMzYrMT4+MF18MCk+Pj41JjEpe2FbKGNbJGE+PjJdfDApKzQ1Pj4wXT0tOTU7YnJlYWt9ZWxzZXthWyhjWyRhPj4yXXwwKSs0NT4+MF09YVszNDQ0OCsoY1tQYT4+Ml18MCk+PjBdfDA7Y1soY1skYT4+Ml18MCkrNDg+PjJdPWNbV2E+PjJdO1JhPTErKGl4KGNbZmI+PjJdfDAsZFszNDQ1MCsoY1tQYT4+Ml18MCk+PjBdfDAsY1tXYT4+Ml18MCxjW0c+PjJdfDApfDApfDA7Y1soY1skYT4+Ml18MCkrNTI+PjJdPVJhO2FbKGNbJGE+PjJdfDApKzQ3Pj4wXT0xO2JyZWFrfWNbJD4+Ml09MDtoPShjW2FiPj4yXXwwKSs0MHwwO1BhPWNbaD4+Ml18MDtjW2g+PjJdPVBhKzE7Y1tQPj4yXT1QYTtQYT0oY1thYj4+Ml18MCkrNDR8MDtoPShjW1BhPj4yXXwwKSsxfDA7Y1tQYT4+Ml09aDtjW2xhPj4yXT1oO2NbbmE+PjJdPTA7Y1ttYT4+Ml09MDtjW1E+PjJdPVd6KGNbZmI+PjJdfDApfDA7Y1tvYT4+Ml09MDtjW18+PjJdPTA7Y1tqYT4+Ml09Y1soY1tIPj4yXXwwKSsxNj4+Ml07Y1tiYj4+Ml09Y1tjWyhjW09hPj4yXXwwKSs0OD4+Ml0+PjJdO2NbZWE+PjJdPWNbKGNbYmI+PjJdfDApKzI4Pj4yXTthWyhjWyRhPj4yXXwwKSs0NT4+MF09NzI7Y1soY1skYT4+Ml18MCkrNDg+PjJdPWNbbGE+PjJdO2g9Y1tUYT4+Ml18MDthOmRvIGlmKChkWyhjW1RhPj4yXXwwKSs0Mj4+MF18MCk+MSl7Y1tYPj4yXT0oZFtoKzQyPj4wXXwwKS0oY1tNPj4yXXwwKS0xO2NbY2E+PjJdPUNoKGNbUWE+PjJdfDAsODArKChjW1g+PjJdfDApKjcyfDApfDAsMCl8MDtpZighKGNbY2E+PjJdfDApKXtlYj1VYTtnYj1jW2ViKzQ+PjJdfDA7ZmI9U2E7Y1tmYj4+Ml09Y1tlYj4+Ml07Y1tmYis0Pj4yXT1nYjtmYj1TYTtnYj1mYjtnYj1jW2diPj4yXXwwO2ZiPWZiKzR8MDtmYj1jW2ZiPj4yXXwwO0M9ZmI7aT1oYjtyZXR1cm4gZ2J8MH1jWyhjW2NhPj4yXXwwKSs0Pj4yXT0oY1tYPj4yXXwwKSsxJjI1NTtjW2NbY2E+PjJdPj4yXT1jWyhjW2NhPj4yXXwwKSs0Pj4yXTtnPShjW2NhPj4yXXwwKSs4fDA7aD1jW0g+PjJdfDA7aj1nKzcyfDA7ZG97Y1tnPj4yXT1jW2g+PjJdO2c9Zys0fDA7aD1oKzR8MH13aGlsZSgoZ3wwKTwoanwwKSk7Y1taPj4yXT0oY1soY1tUYT4+Ml18MCkrND4+Ml18MCkrODtjW1JhPj4yXT0xO3doaWxlKDEpe2lmKChjW1JhPj4yXXwwKT4oY1tYPj4yXXwwKSlicmVhayBhO2c9KGNbY2E+PjJdfDApKzgrKChjW1JhPj4yXXwwKSo3MnwwKXwwO2g9KGNbWj4+Ml18MCkrKChkWyhjWyRhPj4yXXwwKSsoKGNbUmE+PjJdfDApKjgwfDApKzQ0Pj4wXXwwKSo3MnwwKXwwO2o9Zys3MnwwO2Rve2NbZz4+Ml09Y1toPj4yXTtnPWcrNHwwO2g9aCs0fDB9d2hpbGUoKGd8MCk8KGp8MCkpO2NbUmE+PjJdPShjW1JhPj4yXXwwKSsxfX1lbHNlIGNbY2E+PjJdPWNbaCs0Pj4yXTt3aGlsZSgwKTtpZighKGVbKGNbVGE+PjJdfDApKzQwPj4xXSYxNikpe2lmKCEoZFsoY1tqYT4+Ml18MCkrNDI+PjBdJjMyKSl7UGE9KGNbYWI+PjJdfDApKzQ0fDA7UmE9KGNbUGE+PjJdfDApKzF8MDtjW1BhPj4yXT1SYTtjW25hPj4yXT1SYTtpeChjW2ZiPj4yXXwwLDc5LDAsY1tuYT4+Ml18MCl8MH1lbHNle2NbZ2E+PjJdPUpqKGNbamE+PjJdfDApfDA7UGE9KGNbYWI+PjJdfDApKzQwfDA7UmE9Y1tQYT4+Ml18MDtjW1BhPj4yXT1SYSsxO2NbbmE+PjJdPVJhO2l4KGNbZmI+PjJdfDAsMTA3LGNbbmE+PjJdfDAsZVsoY1tnYT4+Ml18MCkrNTA+PjFdfDApfDA7VnooY1thYj4+Ml18MCxjW2dhPj4yXXwwKX1QYT0oY1thYj4+Ml18MCkrNDR8MDtSYT0oY1tQYT4+Ml18MCkrMXwwO2NbUGE+PjJdPVJhO2NbbWE+PjJdPVJhfWNbUz4+Ml09aXgoY1tmYj4+Ml18MCw3NiwwLGNbbGE+PjJdfDApfDA7aWYoKGNbKGNbY2I+PjJdfDApKzEyPj4yXXwwKT4xKXtjW1U+PjJdPTA7d2hpbGUoMSl7aWYoKGNbVT4+Ml18MCk+PShjWyhjW2NiPj4yXXwwKSsxMj4+Ml18MCkpYnJlYWs7Y1thYT4+Ml09Y1soY1soY1tjYj4+Ml18MCkrMjA+PjJdfDApKygoY1tVPj4yXXwwKSo0OHwwKT4+Ml07ZG8gaWYoKCgoY1soY1tjYj4+Ml18MCkrMjA+PjJdfDApKygoY1tVPj4yXXwwKSo0OHwwKXwwKSE9KGNbYmI+PjJdfDApPyhjWyhjW2FhPj4yXXwwKSs0Pj4yXSYxfDApPT0wOjApPyhlWyhjWyhjW2NiPj4yXXwwKSsyMD4+Ml18MCkrKChjW1U+PjJdfDApKjQ4fDApKzEwPj4xXSY2fDApPT0wOjApe2lmKCEoZVsoY1soY1tjYj4+Ml18MCkrMjA+PjJdfDApKygoY1tVPj4yXXwwKSo0OHwwKSsxMj4+MV0mODE5MSkpYnJlYWs7Y1thYT4+Ml09SXkoY1tRYT4+Ml18MCxjW2FhPj4yXXwwLDApfDA7Y1tfPj4yXT13eihjW1FhPj4yXXwwLGNbXz4+Ml18MCxjW2FhPj4yXXwwKXwwfXdoaWxlKDApO2NbVT4+Ml09KGNbVT4+Ml18MCkrMX1pZihjW18+PjJdfDApY1tfPj4yXT1FdihjW2FiPj4yXXwwLDI4NCwwLGNbXz4+Ml18MCwwKXwwfWJbcGE+PjFdPTMyfGVbKGNbVGE+PjJdfDApKzQwPj4xXSYxMDI0O2NbVj4+Ml09MDt3aGlsZSgxKXtpZigoY1tWPj4yXXwwKT49KGNbKGNbZWE+PjJdfDApKzEyPj4yXXwwKSlicmVhaztjW2RhPj4yXT0oY1soY1tlYT4+Ml18MCkrMjA+PjJdfDApKygoY1tWPj4yXXwwKSo0OHwwKTtpZighKChjWyhjW2RhPj4yXXwwKSsyMD4+Ml18MCkhPShjW1dhPj4yXXwwKT8oZVsoY1tkYT4+Ml18MCkrMTI+PjFdJjEwMjR8MCk9PTA6MCkpe2NbYmE+PjJdPWNbY1tkYT4+Ml0+PjJdO2NbVz4+Ml09MDtpZigoY1tfPj4yXXwwKSE9MD8oY1soY1tiYT4+Ml18MCkrND4+Ml0mMXwwKT09MDowKXtjWyhjW18+PjJdfDApKzEyPj4yXT1jW2JhPj4yXTtjW2JhPj4yXT1jW18+PjJdfWNbaWE+PjJdPXFEKGNbYWI+PjJdfDAsY1tjYT4+Ml18MCxjW2JhPj4yXXwwLDAsMCxiW3BhPj4xXXwwLGNbUD4+Ml18MCl8MDtpZihjW2lhPj4yXXwwKXtjW04+PjJdPU1EKGNbYWI+PjJdfDAsY1tjYT4+Ml18MCwoY1tpYT4+Ml18MCkrNzUyfDAsY1tNPj4yXXwwLGRbKGNbJGE+PjJdfDApKzQ0Pj4wXXwwLDApfDA7ZG8gaWYoIShlWyhjW1RhPj4yXXwwKSs0MD4+MV0mMTYpKXtjW1Q+PjJdPShjW1Y+PjJdfDApPT0oKGNbKGNbZWE+PjJdfDApKzEyPj4yXXwwKS0xfDApPy0xOmNbVj4+Ml18MDtpZighKGRbKGNbamE+PjJdfDApKzQyPj4wXSYzMikpe2Nba2E+PjJdPVRBKGNbYWI+PjJdfDAsY1tqYT4+Ml18MCwtMSxjW1dhPj4yXXwwLGNbbWE+PjJdfDAsMCl8MDtjW1c+PjJdPUloKGNbZmI+PjJdfDAsNjMsY1tuYT4+Ml18MCwwLGNba2E+PjJdfDAsY1tUPj4yXXwwKXwwO2JyZWFrfWNbZmE+PjJdPUpqKGNbamE+PjJdfDApfDA7Y1tZPj4yXT1lWyhjW2ZhPj4yXXwwKSs1MD4+MV07Y1trYT4+Ml09Q0EoY1thYj4+Ml18MCxjW1k+PjJdfDApfDA7Y1tSPj4yXT0wO3doaWxlKDEpe2lmKChjW1I+PjJdfDApPj0oY1tZPj4yXXwwKSlicmVhaztjW08+PjJdPWJbKGNbKGNbZmE+PjJdfDApKzQ+PjJdfDApKyhjW1I+PjJdPDwxKT4+MV07WEQoY1thYj4+Ml18MCxjW2phPj4yXXwwLGNbTz4+Ml18MCxjW1dhPj4yXXwwLChjW2thPj4yXXwwKSsoY1tSPj4yXXwwKXwwKTtjW1I+PjJdPShjW1I+PjJdfDApKzF9aWYoY1tUPj4yXXwwKWNbVz4+Ml09SWgoY1tmYj4+Ml18MCwzMSxjW25hPj4yXXwwLDAsY1trYT4+Ml18MCxjW1k+PjJdfDApfDA7ZG8gaWYoKGNbVD4+Ml18MCk+PTApe2p4KGNbZmI+PjJdfDAsOTksY1trYT4+Ml18MCxjW1k+PjJdfDAsY1ttYT4+Ml18MCl8MDtqeChjW2ZiPj4yXXwwLDEyNixjW25hPj4yXXwwLGNbbWE+PjJdfDAsMCl8MDtpZighKGNbVD4+Ml18MCkpYnJlYWs7SmgoY1tmYj4+Ml18MCwxNil9d2hpbGUoMCk7RkEoY1thYj4+Ml18MCxjW2thPj4yXXwwLGNbWT4+Ml18MCl9d2hpbGUoMCk7aXgoY1tmYj4+Ml18MCwxNCxjW2xhPj4yXXwwLGNbUT4+Ml18MCl8MDtpZihjW1c+PjJdfDApWnooY1tmYj4+Ml18MCxjW1c+PjJdfDApO2lmKGFbKGNbaWE+PjJdfDApKzQ2Pj4wXXwwKWNbb2E+PjJdPTE7Y1toYT4+Ml09Y1soY1tpYT4+Ml18MCkrNzUyKzY0Pj4yXTtkbyBpZihjWyhjW2hhPj4yXXwwKSszNj4+Ml0mNTEyKXtpZigoY1tWPj4yXXwwKSE9MD8oY1soY1toYT4+Ml18MCkrMjQrOD4+Ml18MCkhPShjWyQ+PjJdfDApOjApe3FhPTE5MzticmVha31pZigoZFsoY1tqYT4+Ml18MCkrNDI+PjBdJjMyfDApIT0wPyhhWyhjWyhjW2hhPj4yXXwwKSsyNCs4Pj4yXXwwKSs1NT4+MF0mM3wwKT09MjowKXtxYT0xOTM7YnJlYWt9Y1skPj4yXT1jWyhjW2hhPj4yXXwwKSsyNCs4Pj4yXX1lbHNlIHFhPTE5Mzt3aGlsZSgwKTtpZigocWF8MCk9PTE5Myl7cWE9MDtjWyQ+PjJdPTB9ckQoY1tpYT4+Ml18MCl9fWNbVj4+Ml09KGNbVj4+Ml18MCkrMX1jWyhjWyRhPj4yXXwwKSs1Nj4+Ml09Y1skPj4yXTtpZihjWyQ+PjJdfDApY1soY1skYT4+Ml18MCkrOD4+Ml09Y1tQPj4yXTtpZihjW18+PjJdfDApe2NbKGNbXz4+Ml18MCkrMTI+PjJdPTA7aXYoY1tRYT4+Ml18MCxjW18+PjJdfDApfVBhPWNbZmI+PjJdfDA7UmE9Y1tTPj4yXXwwO1lEKFBhLFJhLHd4KGNbZmI+PjJdfDApfDApO1l6KGNbZmI+PjJdfDAsY1soY1skYT4+Ml18MCkrMTI+PjJdfDApfDA7X3ooY1tmYj4+Ml18MCxjW1E+PjJdfDApO2lmKChkWyhjW1RhPj4yXXwwKSs0Mj4+MF18MCk+MSlUZihjW1FhPj4yXXwwLGNbY2E+PjJdfDApO2lmKGNbb2E+PjJdfDApYnJlYWs7UkQoY1skYT4+Ml18MCxjW2JiPj4yXXwwKTticmVha31iW3hhPj4xXT1iW2grMjQ+PjFdfDA7Ylt2YT4+MV09YlsoY1tPYT4+Ml18MCkrMjQrMj4+MV18MDtiW3lhPj4xXT1iWyhjW09hPj4yXXwwKSsyNCs0Pj4xXXwwO2NbRWE+PjJdPTA7Y1tEYT4+Ml09MDtjW0k+PjJdPTA7Y1tLYT4+Ml09MDthW3NhPj4wXT0wO2FbdGE+PjBdPTA7Y1tCYT4+Ml09Y1soY1tPYT4+Ml18MCkrMjQrOD4+Ml07Y1tNYT4+Ml09Y1soY1skYT4+Ml18MCkrOD4+Ml07aWYoKChlWyhjW1RhPj4yXXwwKSs0MD4+MV0mMXwwKSE9MD8oYVsoY1tUYT4+Ml18MCkrNDM+PjBdfDApPjA6MCk/KGVbKGNbQmE+PjJdfDApKzUwPj4xXXwwKT4oZVt4YT4+MV18MCk6MCl7YVtzYT4+MF09MTtjW0k+PjJdPTF9Y1tYYT4+Ml09ZVt4YT4+MV07aWYoY1soY1tPYT4+Ml18MCkrMzY+PjJdJjMyKXtxYT1jW1hhPj4yXXwwO2NbWGE+PjJdPXFhKzE7Y1tFYT4+Ml09Y1soY1soY1tPYT4+Ml18MCkrNDg+PjJdfDApKyhxYTw8Mik+PjJdO2lmKChjW0k+PjJdfDApPihlWyhjW09hPj4yXXwwKSsyNCsyPj4xXXwwKSloPWNbST4+Ml18MDtlbHNlIGg9ZVsoY1tPYT4+Ml18MCkrMjQrMj4+MV18MDtjW0k+PjJdPWh9ZG8gaWYoY1soY1tPYT4+Ml18MCkrMzY+PjJdJjE2KXtxYT1jW1hhPj4yXXwwO2NbWGE+PjJdPXFhKzE7Y1tEYT4+Ml09Y1soY1soY1tPYT4+Ml18MCkrNDg+PjJdfDApKyhxYTw8Mik+PjJdO2lmKChjW0k+PjJdfDApPihlWyhjW09hPj4yXXwwKSsyNCs0Pj4xXXwwKSloPWNbST4+Ml18MDtlbHNlIGg9ZVsoY1tPYT4+Ml18MCkrMjQrND4+MV18MDtjW0k+PjJdPWg7aWYoZVsoY1tEYT4+Ml18MCkrMTA+PjFdJjI1Nil7cGE9KGNbYWI+PjJdfDApKzQ0fDA7cWE9KGNbcGE+PjJdfDApKzF8MDtjW3BhPj4yXT1xYTtjWyhjWyRhPj4yXXwwKSszNj4+Ml09cWE7aXgoY1tmYj4+Ml18MCw3NiwxLGNbKGNbJGE+PjJdfDApKzM2Pj4yXXwwKXwwO3FhPXd4KGNbZmI+PjJdfDApfDA7Y1soY1skYT4+Ml18MCkrNDA+PjJdPXFhO3FhPShjWyRhPj4yXXwwKSszNnwwO2NbcWE+PjJdPWNbcWE+PjJdPDwxO3FhPShjWyRhPj4yXXwwKSszNnwwO2NbcWE+PjJdPWNbcWE+PjJdfGNbUGE+PjJdXihkWyhjWyhjW0JhPj4yXXwwKSsyOD4+Ml18MCkrKGVbeGE+PjFdfDApPj4wXXwwKT09MX1pZighKGNbRWE+PjJdfDApKXtjW1hhPj4yXT1iWyhjWyhjW0JhPj4yXXwwKSs0Pj4yXXwwKSsoZVt4YT4+MV08PDEpPj4xXTtoPWNbWGE+PjJdfDA7aWYoKGNbWGE+PjJdfDApPj0wKXtpZighKChjW1hhPj4yXXwwKT09LTI/MTooZFsoY1soY1soY1tCYT4+Ml18MCkrMTI+PjJdfDApKzQ+PjJdfDApKyhoPDw0KSsxMj4+MF18MCk9PTApKWJyZWFrfWVsc2UgaWYoKGh8MCkhPS0yKWJyZWFrO2Fbc2E+PjBdPTF9fXdoaWxlKDApO2lmKChlW3hhPj4xXXwwKTwoZVsoY1tCYT4+Ml18MCkrNTA+PjFdfDApPyhjW1BhPj4yXXwwKT09KChkWyhjWyhjW0JhPj4yXXwwKSsyOD4+Ml18MCkrKGVbeGE+PjFdfDApPj4wXXwwKT09MHwwKTowKXFhPTg0O2Vsc2UgcWE9ODI7aWYoKChxYXwwKT09ODI/KGNbUGE+PjJdfDApIT0wOjApPyhlWyhjW0JhPj4yXXwwKSs1MD4+MV18MCk9PShlW3hhPj4xXXwwKTowKXFhPTg0O2lmKChxYXwwKT09ODQpe2NbSj4+Ml09Y1tEYT4+Ml07Y1tEYT4+Ml09Y1tFYT4+Ml07Y1tFYT4+Ml09Y1tKPj4yXTthW0s+PjBdPWFbc2E+PjBdfDA7YVtzYT4+MF09YVt0YT4+MF18MDthW3RhPj4wXT1hW0s+PjBdfDA7YVtMPj4wXT1iW3ZhPj4xXTtiW3ZhPj4xXT1iW3lhPj4xXXwwO2JbeWE+PjFdPWRbTD4+MF18MH1jW0hhPj4yXT1TRChjW2FiPj4yXXwwLGNbJGE+PjJdfDAsY1tQYT4+Ml18MCxjW0k+PjJdfDAsTGEpfDA7aWYoKGNbTGE+PjJdfDApIT0wPyhlW3lhPj4xXXwwKSE9MDowKWNbS2E+PjJdPXFoKGNbUWE+PjJdfDAsKGNbTGE+PjJdfDApKyhlW3hhPj4xXXwwKXwwKXwwO2NbcmE+PjJdPWNbKGNbJGE+PjJdfDApKzE2Pj4yXTtpZihjW0VhPj4yXXwwKWg9KGVbKGNbRWE+PjJdfDApKzEyPj4xXSY0MHwwKSE9MDtlbHNlIGg9MTtjW0lhPj4yXT1oJjE7aWYoY1tEYT4+Ml18MCloPShlWyhjW0RhPj4yXXwwKSsxMj4+MV0mNDB8MCkhPTA7ZWxzZSBoPTE7Y1t1YT4+Ml09aCYxO2lmKGNbRWE+PjJdfDApaD0xO2Vsc2UgaD0oZVt4YT4+MV18MCk+MDtjW0phPj4yXT1oJjE7Y1t3YT4+Ml09ZVt4YT4+MV07aWYoIShjW0VhPj4yXXwwKSl7aWYoYVtzYT4+MF18MCl7aXgoY1tmYj4+Ml18MCw3OSwwLChjW0hhPj4yXXwwKSsoZVt4YT4+MV18MCl8MCl8MDtjW3dhPj4yXT0oY1t3YT4+Ml18MCkrMTtjW0lhPj4yXT0wO2NbSmE+PjJdPTF9fWVsc2V7Y1tGYT4+Ml09Y1soY1tjW0VhPj4yXT4+Ml18MCkrMTY+PjJdO1FEKGNbYWI+PjJdfDAsY1tGYT4+Ml18MCwoY1tIYT4+Ml18MCkrKGVbeGE+PjFdfDApfDAsZVt2YT4+MV18MCk7VEQoY1tmYj4+Ml18MCxjWyRhPj4yXXwwLGNbRWE+PjJdfDApO2RvIGlmKCEoZVsoY1tFYT4+Ml18MCkrMTA+PjFdJjApKXtpZighKG9CKGNbRmE+PjJdfDApfDApKWJyZWFrO2l4KGNbZmI+PjJdfDAsMzQsKGNbSGE+PjJdfDApKyhlW3hhPj4xXXwwKXwwLGNbcmE+PjJdfDApfDB9d2hpbGUoMCk7aWYoY1tMYT4+Ml18MClVRChjW0ZhPj4yXXwwLGVbdmE+PjFdfDAsKGNbTGE+PjJdfDApKyhlW3hhPj4xXXwwKXwwKTtjW3dhPj4yXT0oY1t3YT4+Ml18MCkrKGVbdmE+PjFdfDApO2lmKCEoWEEoY1tGYT4+Ml18MCl8MCkpUkQoY1skYT4+Ml18MCxjW0VhPj4yXXwwKTtlbHNlIGNbSWE+PjJdPTE7YVtzYT4+MF09MH1WRChjW2FiPj4yXXwwLGNbSGE+PjJdfDAsKGNbd2E+PjJdfDApLShkW3NhPj4wXXwwKXwwLGNbTGE+PjJdfDApO2lmKCEoKGVbKGNbT2E+PjJdfDApKzQyPj4xXXwwKT4wPyhjW3dhPj4yXXwwKT09KGVbKGNbT2E+PjJdfDApKzQyPj4xXXwwKTowKSl7Y1tBYT4+Ml09ZFszNDQzNisoKGNbSmE+PjJdPDwyKSsoY1tJYT4+Ml08PDEpKyhjW1BhPj4yXXwwKSk+PjBdO0loKGNbZmI+PjJdfDAsY1tBYT4+Ml18MCxjW01hPj4yXXwwLGNbcmE+PjJdfDAsY1tIYT4+Ml18MCxjW3dhPj4yXXwwKXwwfWNbd2E+PjJdPWVbeGE+PjFdO2RvIGlmKGNbRGE+PjJdfDApe2NbR2E+PjJdPWNbKGNbY1tEYT4+Ml0+PjJdfDApKzE2Pj4yXTtHQShjW2FiPj4yXXwwLChjW0hhPj4yXXwwKSsoZVt4YT4+MV18MCl8MCwxKTtRRChjW2FiPj4yXXwwLGNbR2E+PjJdfDAsKGNbSGE+PjJdfDApKyhlW3hhPj4xXXwwKXwwLGVbeWE+PjFdfDApO1REKGNbZmI+PjJdfDAsY1skYT4+Ml18MCxjW0RhPj4yXXwwKTtkbyBpZighKGVbKGNbRGE+PjJdfDApKzEwPj4xXSYwKSl7aWYoIShvQihjW0dhPj4yXXwwKXwwKSlicmVhaztpeChjW2ZiPj4yXXwwLDM0LChjW0hhPj4yXXwwKSsoZVt4YT4+MV18MCl8MCxjW3JhPj4yXXwwKXwwfXdoaWxlKDApO2lmKGNbS2E+PjJdfDApe1VEKGNbR2E+PjJdfDAsZVt5YT4+MV18MCxjW0thPj4yXXwwKTtWRChjW2FiPj4yXXwwLChjW0hhPj4yXXwwKSsoZVt4YT4+MV18MCl8MCxlW3lhPj4xXXwwLGNbS2E+PjJdfDApfWNbd2E+PjJdPShjW3dhPj4yXXwwKSsoZVt5YT4+MV18MCk7aWYoIShYQShjW0dhPj4yXXwwKXwwKSl7UkQoY1skYT4+Ml18MCxjW0RhPj4yXXwwKTticmVha31lbHNle2NbdWE+PjJdPTE7YnJlYWt9fWVsc2V7aWYoIShhW3RhPj4wXXwwKSlicmVhaztpeChjW2ZiPj4yXXwwLDc5LDAsKGNbSGE+PjJdfDApKyhlW3hhPj4xXXwwKXwwKXwwO2NbdWE+PjJdPTA7Y1t3YT4+Ml09KGNbd2E+PjJdfDApKzF9d2hpbGUoMCk7VGYoY1tRYT4+Ml18MCxjW0xhPj4yXXwwKTtUZihjW1FhPj4yXXwwLGNbS2E+PjJdfDApO1FhPXd4KGNbZmI+PjJdfDApfDA7Y1soY1skYT4+Ml18MCkrNTI+PjJdPVFhO2lmKGNbd2E+PjJdfDApe2NbQWE+PjJdPWRbMzQ0NDQrKChjW1BhPj4yXTw8MSkrKGNbdWE+PjJdfDApKT4+MF07SWgoY1tmYj4+Ml18MCxjW0FhPj4yXXwwLGNbTWE+PjJdfDAsY1tyYT4+Ml18MCxjW0hhPj4yXXwwLGNbd2E+PjJdfDApfDB9ZG8gaWYoIShjW3phPj4yXXwwKSl7aWYoIShkWyhjWyhjW0JhPj4yXXwwKSsxMj4+Ml18MCkrNDI+PjBdJjMyKSlpZihlWyhjW1RhPj4yXXwwKSs0MD4+MV0mMTAyNCl7UWE9KGNbYWI+PjJdfDApKzQ0fDA7UmE9KGNbUWE+PjJdfDApKzF8MDtjW1FhPj4yXT1SYTtjW05hPj4yXT1SYTtpeChjW2ZiPj4yXXwwLDEyOSxjW01hPj4yXXwwLGNbTmE+PjJdfDApfDA7R0IoY1thYj4+Ml18MCxjW1dhPj4yXXwwLC0xLGNbTmE+PjJdfDApO2p4KGNbZmI+PjJdfDAsMzMsY1tXYT4+Ml18MCwwLGNbTmE+PjJdfDApfDA7YnJlYWt9ZWxzZXtXRChjW1RhPj4yXXwwLGNbQmE+PjJdfDAsY1tXYT4+Ml18MCxjW01hPj4yXXwwKTticmVha31pZigoY1tXYT4+Ml18MCk9PShjW01hPj4yXXwwKSlicmVhaztjW0NhPj4yXT1KaihjWyhjW0JhPj4yXXwwKSsxMj4+Ml18MCl8MDtjW05hPj4yXT1DQShjW2FiPj4yXXwwLGVbKGNbQ2E+PjJdfDApKzUwPj4xXXwwKXwwO2NbWGE+PjJdPTA7d2hpbGUoMSl7aWYoKGNbWGE+PjJdfDApPj0oZVsoY1tDYT4+Ml18MCkrNTA+PjFdfDApKWJyZWFrO2NbUmE+PjJdPShPQShjW0JhPj4yXXwwLGJbKGNbKGNbQ2E+PjJdfDApKzQ+PjJdfDApKyhjW1hhPj4yXTw8MSk+PjFdfDApfDApPDwxNj4+MTY7angoY1tmYj4+Ml18MCw5NixjW01hPj4yXXwwLGNbUmE+PjJdfDAsKGNbTmE+PjJdfDApKyhjW1hhPj4yXXwwKXwwKXwwO2NbWGE+PjJdPShjW1hhPj4yXXwwKSsxfUloKGNbZmI+PjJdfDAsMzAsY1tXYT4+Ml18MCxjW1ZhPj4yXXwwLGNbTmE+PjJdfDAsZVsoY1tDYT4+Ml18MCkrNTA+PjFdfDApfDB9d2hpbGUoMCk7ZG8gaWYoIShjWyhjW09hPj4yXXwwKSszNj4+Ml0mNDA5Nikpe2g9KGNbJGE+PjJdfDApKzQ1fDA7aWYoY1tQYT4+Ml18MCl7YVtoPj4wXT02O2JyZWFrfWVsc2V7YVtoPj4wXT03O2JyZWFrfX1lbHNlIGFbKGNbJGE+PjJdfDApKzQ1Pj4wXT0tOTU7d2hpbGUoMCk7Y1soY1skYT4+Ml18MCkrNDg+PjJdPWNbTWE+PjJdO2FbKGNbJGE+PjJdfDApKzQ2Pj4wXT0oY1soY1tPYT4+Ml18MCkrMzY+PjJdJjY1NTM2fDApIT0wPzE6MDtpZihjWyhjW09hPj4yXXwwKSszNj4+Ml0mMTUpYnJlYWs7YVsoY1skYT4+Ml18MCkrNDc+PjBdPTF9d2hpbGUoMCk7Y1tiYj4+Ml09Y1soY1tjYj4+Ml18MCkrMjA+PjJdO2NbWGE+PjJdPWNbKGNbY2I+PjJdfDApKzEyPj4yXTt3aGlsZSgxKXtpZigoY1tYYT4+Ml18MCk8PTApYnJlYWs7Y1tlYj4+Ml09MDtkbyBpZighKGVbKGNbYmI+PjJdfDApKzEwPj4xXSY2KSl7UWE9KGNbYmI+PjJdfDApKzQwfDA7UmE9KGNbJGE+PjJdfDApKzcyfDA7aWYoKGNbUWE+PjJdJmNbUmE+PjJdfDApIT0wPzE6KGNbUWErND4+Ml0mY1tSYSs0Pj4yXXwwKSE9MCl7YVsoY1tUYT4+Ml18MCkrNDY+PjBdPTE7YnJlYWt9Y1taYT4+Ml09Y1tjW2JiPj4yXT4+Ml07aWYoKGNbY1skYT4+Ml0+PjJdfDApIT0wPyhjWyhjW1phPj4yXXwwKSs0Pj4yXSYxfDApPT0wOjApYnJlYWs7aWYoZVsoY1tiYj4+Ml18MCkrMTA+PjFdJjUxMil7Y1tnYj4+Ml09Y1soY1skYT4+Ml18MCkrMzY+PjJdO2NbZWI+PjJdPVN6KGNbZmI+PjJdfDAsKGNbZ2I+PjJdJjF8MCkhPTA/MjI6MjEsKGNbZ2I+PjJdfDApPj4+MSl8MH1pQihjW2FiPj4yXXwwLGNbWmE+PjJdfDAsY1tWYT4+Ml18MCwxNik7aWYoY1tlYj4+Ml18MClaeihjW2ZiPj4yXXwwLGNbZWI+PjJdfDApO1JhPShjW2JiPj4yXXwwKSsxMHwwO2JbUmE+PjFdPWVbUmE+PjFdfDR9d2hpbGUoMCk7Y1tYYT4+Ml09KGNbWGE+PjJdfDApKy0xO2NbYmI+PjJdPShjW2JiPj4yXXwwKSs0OH1jW2JiPj4yXT1jWyhjW2NiPj4yXXwwKSsyMD4+Ml07Y1tYYT4+Ml09Y1soY1tjYj4+Ml18MCkrMTI+PjJdO3doaWxlKDEpe2lmKChjW1hhPj4yXXwwKTw9MClicmVhaztpZigoKCgoKChlWyhjW2JiPj4yXXwwKSsxMD4+MV0mNnwwKT09MD8oZVsoY1tiYj4+Ml18MCkrMTI+PjFdJjEzMHwwKSE9MDowKT8oZVsoY1tiYj4+Ml18MCkrMTI+PjFdJjIwNDh8MCkhPTA6MCk/KGNbKGNbYmI+PjJdfDApKzIwPj4yXXwwKT09KGNbV2E+PjJdfDApOjApPyhjW2NbJGE+PjJdPj4yXXwwKT09MDowKT8oY1tfYT4+Ml09Y1tjW2JiPj4yXT4+Ml0sZ2I9VWEsY1tZYT4+Ml09WkQoY1tjYj4+Ml18MCxjW1dhPj4yXXwwLGNbKGNbYmI+PjJdfDApKzI4Pj4yXXwwLGNbZ2I+PjJdfDAsY1tnYis0Pj4yXXwwLDEzMSwwKXwwLChjW1lhPj4yXXwwKSE9MCk6MCk/KGVbKGNbWWE+PjJdfDApKzEwPj4xXSY0fDApPT0wOjApe2c9ZGI7aD1jW2NbWWE+PjJdPj4yXXwwO2o9Zys0OHwwO2Rve2NbZz4+Ml09Y1toPj4yXTtnPWcrNHwwO2g9aCs0fDB9d2hpbGUoKGd8MCk8KGp8MCkpO2NbZGIrMTI+PjJdPWNbKGNbX2E+PjJdfDApKzEyPj4yXTtpQihjW2FiPj4yXXwwLGRiLGNbVmE+PjJdfDAsMTYpfWNbWGE+PjJdPShjW1hhPj4yXXwwKSstMTtjW2JiPj4yXT0oY1tiYj4+Ml18MCkrNDh9YjpkbyBpZihjW2NbJGE+PjJdPj4yXXwwKXtnYj13eChjW2ZiPj4yXXwwKXwwO2NbKGNbJGE+PjJdfDApKzI4Pj4yXT1nYjtpeChjW2ZiPj4yXXwwLDc2LDEsY1tjWyRhPj4yXT4+Ml18MCl8MDtFQyhjW2FiPj4yXXwwKTtjW2JiPj4yXT1jWyhjW2NiPj4yXXwwKSsyMD4+Ml07Y1tYYT4+Ml09MDt3aGlsZSgxKXtpZigoY1tYYT4+Ml18MCk+PShjWyhjW2NiPj4yXXwwKSsxMj4+Ml18MCkpYnJlYWsgYjtpZigoZVsoY1tiYj4+Ml18MCkrMTA+PjFdJjZ8MCk9PTA/KGZiPShjW2JiPj4yXXwwKSs0MHwwLGdiPShjWyRhPj4yXXwwKSs3MnwwLCEoKGNbZmI+PjJdJmNbZ2I+PjJdfDApIT0wPzE6KGNbZmIrND4+Ml0mY1tnYis0Pj4yXXwwKSE9MCkpOjApe2lCKGNbYWI+PjJdfDAsY1tjW2JiPj4yXT4+Ml18MCxjW1ZhPj4yXXwwLDE2KTtnYj0oY1tiYj4+Ml18MCkrMTB8MDtiW2diPj4xXT1lW2diPj4xXXw0fWNbWGE+PjJdPShjW1hhPj4yXXwwKSsxO2NbYmI+PjJdPShjW2JiPj4yXXwwKSs0OH19d2hpbGUoMCk7ZWI9KGNbJGE+PjJdfDApKzcyfDA7Z2I9Y1tlYis0Pj4yXXwwO2ZiPVNhO2NbZmI+PjJdPWNbZWI+PjJdO2NbZmIrND4+Ml09Z2I7ZmI9U2E7Z2I9ZmI7Z2I9Y1tnYj4+Ml18MDtmYj1mYis0fDA7ZmI9Y1tmYj4+Ml18MDtDPWZiO2k9aGI7cmV0dXJuIGdifDB9ZnVuY3Rpb24gT0QoYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTAsZz0wLGg9MDtoPWk7aT1pKzMyfDA7Zz1oO2Q9aCsxNnwwO2U9aCsxMnwwO2Y9aCs4fDA7Y1tkPj4yXT1hO2NbZT4+Ml09YjtjW2Y+PjJdPTA7d2hpbGUoMSl7aWYoKGNbZj4+Ml18MCk+PShjW2NbZD4+Ml0+PjJdfDApKXtiPTY7YnJlYWt9YT1jW2Y+PjJdfDA7aWYoKGNbKGNbZD4+Ml18MCkrNCsoY1tmPj4yXTw8Mik+PjJdfDApPT0oY1tlPj4yXXwwKSl7Yj00O2JyZWFrfWNbZj4+Ml09YSsxfWlmKChifDApPT00KXtlPVdSKDEsMCxhfDApfDA7Zj1nO2NbZj4+Ml09ZTtjW2YrND4+Ml09QztmPWc7Zz1mO2c9Y1tnPj4yXXwwO2Y9Zis0fDA7Zj1jW2Y+PjJdfDA7Qz1mO2k9aDtyZXR1cm4gZ3wwfWVsc2UgaWYoKGJ8MCk9PTYpe2Y9ZztjW2Y+PjJdPTA7Y1tmKzQ+PjJdPTA7Zj1nO2c9ZjtnPWNbZz4+Ml18MDtmPWYrNHwwO2Y9Y1tmPj4yXXwwO0M9ZjtpPWg7cmV0dXJuIGd8MH1yZXR1cm4gMH1mdW5jdGlvbiBQRChmLGcsaCxqLGssbCl7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7bD1sfDA7dmFyIG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wLEU9MCxGPTAsRz0wLEg9MCxJPTAsSj0wLEs9MCxMPTAsTT0wLE49MCxPPTAsUD0wLFE9MCxSPTAsUz0wO1M9aTtpPWkrMTI4fDA7ej1TKzEyMHwwO0E9UysxMTZ8MDtCPVMrMTEyfDA7Qz1TKzEwOHwwO0Q9UysxMDR8MDtFPVMrMTAwfDA7bT1TKzk2fDA7UD1TKzkyfDA7UT1TKzg4fDA7TD1TKzg0fDA7Rz1TKzgwfDA7TT1TKzc2fDA7Tj1TKzcyfDA7Tz1TKzY4fDA7SD1TKzY0fDA7cz1TKzYwfDA7Rj1TKzU2fDA7eT1TKzUyfDA7bj1TKzQ4fDA7dz1TKzQ0fDA7dj1TKzQwfDA7eD1TKzM2fDA7dT1TKzMyfDA7bz1TKzI4fDA7cT1TKzI0fDA7cD1TKzIwfDA7dD1TKzE2fDA7cj1TKzEyfDA7Sj1TKzh8MDtLPVMrNHwwO0k9UztjW0E+PjJdPWY7Y1tCPj4yXT1nO2NbQz4+Ml09aDtjW0Q+PjJdPWo7Y1tFPj4yXT1rO2NbbT4+Ml09bDtjW1A+PjJdPWNbY1tCPj4yXT4+Ml07Y1tRPj4yXT1jWyhjW0E+PjJdfDApKzg+PjJdO2RvIGlmKChkW2NbUD4+Ml0+PjBdfDApIT0zNz8oZFtjW1A+PjJdPj4wXXwwKSE9Mjk6MCl7aWYoKGRbY1tQPj4yXT4+MF18MCk9PTM0KXtjW0w+PjJdPWNbbT4+Ml07aXgoY1tRPj4yXXwwLDc5LDAsY1tMPj4yXXwwKXwwO2JyZWFrfWNbRz4+Ml09NTtjW08+PjJdPWNbKGNbQz4+Ml18MCkrNjQ+PjJdO2Nbcz4+Ml09MDtjW0Y+PjJdPTA7aWYoKChjWyhjW08+PjJdfDApKzM2Pj4yXSYxMDI0fDApPT0wPyhjWyhjW08+PjJdfDApKzI0Kzg+PjJdfDApIT0wOjApPyhkWyhjWyhjWyhjW08+PjJdfDApKzI0Kzg+PjJdfDApKzI4Pj4yXXwwKSsoY1tEPj4yXXwwKT4+MF18MCkhPTA6MCljW0U+PjJdPSgoY1tFPj4yXXwwKSE9MF4xKSYxO2NbTD4+Ml09Y1ttPj4yXTtjW0g+PjJdPTA7d2hpbGUoMSl7aWYoKGNbSD4+Ml18MCk+PShjW0Q+PjJdfDApKWJyZWFrO2lmKChjWyhjWyhjW08+PjJdfDApKzQ4Pj4yXXwwKSsoY1tIPj4yXTw8Mik+PjJdfDApIT0wPyhjW2NbKGNbKGNbTz4+Ml18MCkrNDg+PjJdfDApKyhjW0g+PjJdPDwyKT4+Ml0+PjJdfDApPT0oY1tQPj4yXXwwKTowKXtSPTE0O2JyZWFrfWNbSD4+Ml09KGNbSD4+Ml18MCkrMX1pZigoUnwwKT09MTQpe1JEKGNbQz4+Ml18MCxjW0I+PjJdfDApO2Nbej4+Ml09Y1ttPj4yXTtSPWNbej4+Ml18MDtpPVM7cmV0dXJuIFJ8MH1jW0g+PjJdPWNbRD4+Ml07d2hpbGUoMSl7aWYoKGNbSD4+Ml18MCk+PShlWyhjW08+PjJdfDApKzQwPj4xXXwwKSlicmVhaztpZigoY1soY1soY1tPPj4yXXwwKSs0OD4+Ml18MCkrKGNbSD4+Ml08PDIpPj4yXXwwKSE9MD8oY1tjWyhjWyhjW08+PjJdfDApKzQ4Pj4yXXwwKSsoY1tIPj4yXTw8Mik+PjJdPj4yXXwwKT09KGNbUD4+Ml18MCk6MCljW3M+PjJdPShjW3M+PjJdfDApKzE7Y1tIPj4yXT0oY1tIPj4yXXwwKSsxfWlmKChjWyhjW1A+PjJdfDApKzQ+PjJdJjIwNDh8MCkhPTA/KGNbY1tjWyhjW1A+PjJdfDApKzIwPj4yXT4+Ml0+PjJdfDApIT0xOjApe2NbeT4+Ml09Y1soY1tQPj4yXXwwKSsyMD4+Ml07Y1tuPj4yXT1jW2NbQT4+Ml0+PjJdO2Nbdz4+Ml09Y1tjW3k+PjJdPj4yXTtjW3Y+PjJdPWNbKGNbKGNbUD4+Ml18MCkrMTI+PjJdfDApKzIwPj4yXTtjW3g+PjJdPTA7Y1t1Pj4yXT0wO2NbSD4+Ml09Y1tEPj4yXTt3aGlsZSgxKXtpZigoY1tIPj4yXXwwKT49KGVbKGNbTz4+Ml18MCkrNDA+PjFdfDApKWJyZWFrO2lmKChjW2NbKGNbKGNbTz4+Ml18MCkrNDg+PjJdfDApKyhjW0g+PjJdPDwyKT4+Ml0+PjJdfDApPT0oY1tQPj4yXXwwKSl7Y1tvPj4yXT0oY1soY1soY1soY1tPPj4yXXwwKSs0OD4+Ml18MCkrKGNbSD4+Ml08PDIpPj4yXXwwKSsyND4+Ml18MCktMTtjW3E+PjJdPUl5KGNbbj4+Ml18MCxjWyhjWyhjW3c+PjJdfDApKzQ+PjJdfDApKygoY1tvPj4yXXwwKSoyMHwwKT4+Ml18MCwwKXwwO2NbcD4+Ml09SXkoY1tuPj4yXXwwLGNbKGNbKGNbdj4+Ml18MCkrND4+Ml18MCkrKChjW28+PjJdfDApKjIwfDApPj4yXXwwLDApfDA7Y1t4Pj4yXT1UdihjW0E+PjJdfDAsY1t4Pj4yXXwwLGNbcT4+Ml18MCl8MDtjW3U+PjJdPVR2KGNbQT4+Ml18MCxjW3U+PjJdfDAsY1twPj4yXXwwKXwwfWNbSD4+Ml09KGNbSD4+Ml18MCkrMX1pZighKGFbKGNbbj4+Ml18MCkrNjk+PjBdfDApKXtjW3Q+PjJdPWNbKGNbUD4+Ml18MCkrMTI+PjJdO2E6ZG8gaWYoY1soY1t5Pj4yXXwwKSs0ND4+Ml18MCl7Y1tyPj4yXT1jWyhjW3k+PjJdfDApKzQ0Pj4yXTtjW0g+PjJdPTA7d2hpbGUoMSl7aWYoKGNbSD4+Ml18MCk+PShjW2Nbcj4+Ml0+PjJdfDApKWJyZWFrIGE7YlsoY1soY1tyPj4yXXwwKSs0Pj4yXXwwKSsoKGNbSD4+Ml18MCkqMjB8MCkrMTY+PjFdPTA7Y1tIPj4yXT0oY1tIPj4yXXwwKSsxfX13aGlsZSgwKTttPWNbdT4+Ml18MDtpZigoY1tjW3U+PjJdPj4yXXwwKT09MSljWyhjW1A+PjJdfDApKzEyPj4yXT1jW2NbbSs0Pj4yXT4+Ml07ZWxzZXtjWyhjW3Q+PjJdfDApKzIwPj4yXT1tO2NbRj4+Ml09c2goY1tjW0E+PjJdPj4yXXwwLGNbcz4+Ml08PDIsMCl8MH1jW2NbeT4+Ml0+PjJdPWNbeD4+Ml07Y1tHPj4yXT1uQihjW0E+PjJdfDAsY1tQPj4yXXwwLDQsMCxjW0Y+PjJdfDApfDA7Y1tjW3k+PjJdPj4yXT1jW3c+PjJdO2NbKGNbdD4+Ml18MCkrMjA+PjJdPWNbdj4+Ml07Y1soY1tQPj4yXXwwKSsxMj4+Ml09Y1t0Pj4yXX1ldihjW2NbQT4+Ml0+PjJdfDAsY1t1Pj4yXXwwKTtldihjW2NbQT4+Ml0+PjJdfDAsY1t4Pj4yXXwwKX1lbHNlIGNbRz4+Ml09bkIoY1tBPj4yXXwwLGNbUD4+Ml18MCw0LDAsMCl8MDtpZigoY1tHPj4yXXwwKT09NCljW0U+PjJdPSgoY1tFPj4yXXwwKSE9MF4xKSYxO2NbTT4+Ml09Y1soY1tQPj4yXXwwKSsyOD4+Ml07aXgoY1tRPj4yXXwwLChjW0U+PjJdfDApIT0wPzUzOjU3LGNbTT4+Ml18MCwwKXwwO3k9KGNbTz4+Ml18MCkrMzZ8MDtjW3k+PjJdPWNbeT4+Ml18MjA0ODtpZighKGNbKGNbQz4+Ml18MCkrNTY+PjJdfDApKXt5PVd6KGNbUT4+Ml18MCl8MDtjWyhjW0M+PjJdfDApKzE2Pj4yXT15fWNbSD4+Ml09Y1soY1tDPj4yXXwwKSs1Nj4+Ml07eT0oY1tDPj4yXXwwKSs1NnwwO2NbeT4+Ml09KGNbeT4+Ml18MCkrKGNbcz4+Ml18MCk7eT1QeChjW2NbQT4+Ml0+PjJdfDAsY1soY1tDPj4yXXwwKSs1Nis0Pj4yXXwwLChjWyhjW0M+PjJdfDApKzU2Pj4yXXwwKSoxMnwwLDApfDA7Y1soY1tDPj4yXXwwKSs1Nis0Pj4yXT15O2NbTj4+Ml09Y1soY1tDPj4yXXwwKSs1Nis0Pj4yXTtiOmRvIGlmKGNbTj4+Ml18MCl7Y1tKPj4yXT0wO2NbTj4+Ml09KGNbTj4+Ml18MCkrKChjW0g+PjJdfDApKjEyfDApO2NbSD4+Ml09Y1tEPj4yXTt3aGlsZSgxKXtpZigoY1tIPj4yXXwwKT49KGVbKGNbTz4+Ml18MCkrNDA+PjFdfDApKWJyZWFrIGI7aWYoKGNbY1soY1soY1tPPj4yXXwwKSs0OD4+Ml18MCkrKGNbSD4+Ml08PDIpPj4yXT4+Ml18MCk9PShjW1A+PjJdfDApKXtjW0s+PjJdPShjW0w+PjJdfDApKyhjW0g+PjJdfDApLShjW0Q+PjJdfDApO2lmKChjW0c+PjJdfDApPT0xKXt5PWl4KGNbUT4+Ml18MCwxMjMsY1tNPj4yXXwwLGNbSz4+Ml18MCl8MDtjWyhjW04+PjJdfDApKzQ+PjJdPXl9ZWxzZXtpZihjW0Y+PjJdfDApe209Y1tKPj4yXXwwO2NbSj4+Ml09bSsxO209Y1soY1tGPj4yXXwwKSsobTw8Mik+PjJdfDB9ZWxzZSBtPTA7Y1tJPj4yXT1tO3k9angoY1tRPj4yXXwwLDk2LGNbTT4+Ml18MCxjW0k+PjJdfDAsY1tLPj4yXXwwKXwwO2NbKGNbTj4+Ml18MCkrND4+Ml09eX1TeihjW1E+PjJdfDAsMzQsY1tLPj4yXXwwKXwwO2lmKChjW0g+PjJdfDApPT0oY1tEPj4yXXwwKSl7Y1tjW04+PjJdPj4yXT1jW00+PjJdO2FbKGNbTj4+Ml18MCkrOD4+MF09KGNbRT4+Ml18MCkhPTA/NDo1fWVsc2UgYVsoY1tOPj4yXXwwKSs4Pj4wXT0tOTU7Y1tOPj4yXT0oY1tOPj4yXXwwKSsxMn1jW0g+PjJdPShjW0g+PjJdfDApKzF9fWVsc2UgY1soY1tDPj4yXXwwKSs1Nj4+Ml09MDt3aGlsZSgwKTtUZihjW2NbQT4+Ml0+PjJdfDAsY1tGPj4yXXwwKX1lbHNlIFI9Mzt3aGlsZSgwKTtpZigoUnwwKT09MyljW0w+PjJdPVNBKGNbQT4+Ml18MCxjWyhjW1A+PjJdfDApKzE2Pj4yXXwwLGNbbT4+Ml18MCl8MDtSRChjW0M+PjJdfDAsY1tCPj4yXXwwKTtjW3o+PjJdPWNbTD4+Ml07Uj1jW3o+PjJdfDA7aT1TO3JldHVybiBSfDB9ZnVuY3Rpb24gUUQoYSxiLGQsZSl7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wO289aTtpPWkrMzJ8MDtmPW8rMjh8MDtnPW8rMjR8MDtoPW8rMjB8MDtqPW8rMTZ8MDtuPW8rMTJ8MDtsPW8rOHwwO2s9bys0fDA7bT1vO2NbZj4+Ml09YTtjW2c+PjJdPWI7Y1toPj4yXT1kO2Nbaj4+Ml09ZTtpZighKFhBKGNbZz4+Ml18MCl8MCkpe1JBKGNbZj4+Ml18MCxjW2c+PjJdfDAsY1toPj4yXXwwKTtpPW87cmV0dXJufWlmKGNbKGNbZz4+Ml18MCkrND4+Ml0mMjA0OCl7Y1tuPj4yXT1jWyhjW2Y+PjJdfDApKzg+PjJdO2NbbD4+Ml09ZEIoY1tmPj4yXXwwLGNbZz4+Ml18MCwwLDApfDA7angoY1tuPj4yXXwwLDg0LGNbbD4+Ml18MCxjW2g+PjJdfDAsKGNbaj4+Ml18MCktMXwwKXwwO2k9bztyZXR1cm59Y1ttPj4yXT1jWyhjW2c+PjJdfDApKzIwPj4yXTtjW2s+PjJdPTA7d2hpbGUoMSl7aWYoKGNbaz4+Ml18MCk+PShjW2o+PjJdfDApKWJyZWFrO1JBKGNbZj4+Ml18MCxjWyhjWyhjW20+PjJdfDApKzQ+PjJdfDApKygoY1trPj4yXXwwKSoyMHwwKT4+Ml18MCwoY1toPj4yXXwwKSsoY1trPj4yXXwwKXwwKTtjW2s+PjJdPShjW2s+PjJdfDApKzF9aT1vO3JldHVybn1mdW5jdGlvbiBSRChmLGcpe2Y9ZnwwO2c9Z3wwO3ZhciBoPTAsaj0wLGs9MCxsPTA7bD1pO2k9aSsxNnwwO2g9bCs4fDA7aj1sKzR8MDtrPWw7Y1toPj4yXT1mO2Nbaj4+Ml09ZztjW2s+PjJdPTA7d2hpbGUoMSl7aWYoIShjW2o+PjJdfDApKXtoPTE0O2JyZWFrfWlmKChlWyhjW2o+PjJdfDApKzEwPj4xXXwwKSY0KXtoPTE0O2JyZWFrfWlmKChjW2NbaD4+Ml0+PjJdfDApIT0wPyhjWyhjW2Nbaj4+Ml0+PjJdfDApKzQ+PjJdJjF8MCk9PTA6MCl7aD0xNDticmVha31mPShjW2g+PjJdfDApKzcyfDA7Zz0oY1tqPj4yXXwwKSs0MHwwO2lmKCEoKGNbZj4+Ml0mY1tnPj4yXXwwKT09MD8oY1tmKzQ+PjJdJmNbZys0Pj4yXXwwKT09MDowKSl7aD0xNDticmVha31pZigoY1trPj4yXXwwKSE9MD8oKGVbKGNbaj4+Ml18MCkrMTA+PjFdfDApJjEwMjR8MCkhPTA6MCl7Zz0oY1tqPj4yXXwwKSsxMHwwO2JbZz4+MV09ZVtnPj4xXXwwfDUxMn1lbHNle2c9KGNbaj4+Ml18MCkrMTB8MDtiW2c+PjFdPWVbZz4+MV18MHw0fWlmKChjWyhjW2o+PjJdfDApKzE2Pj4yXXwwKTwwKXtoPTE0O2JyZWFrfWNbaj4+Ml09KGNbKGNbKGNbaj4+Ml18MCkrND4+Ml18MCkrMjA+PjJdfDApKygoY1soY1tqPj4yXXwwKSsxNj4+Ml18MCkqNDh8MCk7Zz0oY1tqPj4yXXwwKSsxNHwwO2FbZz4+MF09KGFbZz4+MF18MCkrLTE8PDI0Pj4yNDtpZihkWyhjW2o+PjJdfDApKzE0Pj4wXXwwKXtoPTE0O2JyZWFrfWNbaz4+Ml09KGNbaz4+Ml18MCkrMX1pZigoaHwwKT09MTQpe2k9bDtyZXR1cm59fWZ1bmN0aW9uIFNEKGQsZixnLGgsail7ZD1kfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7dmFyIGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MDtBPWk7aT1pKzgwfDA7bT1BKzYwfDA7bj1BKzU2fDA7bz1BKzUyfDA7Qz1BKzQ4fDA7cD1BKzQ0fDA7cj1BKzY2fDA7bD1BKzY0fDA7eT1BKzQwfDA7Qj1BKzM2fDA7dj1BKzMyfDA7dD1BKzI4fDA7cT1BKzI0fDA7eD1BKzIwfDA7cz1BKzE2fDA7ej1BKzEyfDA7az1BKzh8MDt3PUErNHwwO3U9QTtjW20+PjJdPWQ7Y1tuPj4yXT1mO2Nbbz4+Ml09ZztjW0M+PjJdPWg7Y1twPj4yXT1qO2NbeT4+Ml09Y1soY1ttPj4yXXwwKSs4Pj4yXTtjW3Q+PjJdPWNbKGNbbj4+Ml18MCkrNjQ+PjJdO2Jbcj4+MV09YlsoY1t0Pj4yXXwwKSsyND4+MV18MDtiW2w+PjFdPWJbKGNbdD4+Ml18MCkrNDI+PjFdfDA7Y1tCPj4yXT1jWyhjW3Q+PjJdfDApKzI0Kzg+PjJdO2NbeD4+Ml09KGNbKGNbbT4+Ml18MCkrNDQ+PjJdfDApKzE7Y1tzPj4yXT0oZVsoY1t0Pj4yXXwwKSsyND4+MV18MCkrKGNbQz4+Ml18MCk7aj0oY1ttPj4yXXwwKSs0NHwwO2Nbaj4+Ml09KGNbaj4+Ml18MCkrKGNbcz4+Ml18MCk7aj1jW2NbbT4+Ml0+PjJdfDA7Y1t6Pj4yXT1xaChqLENDKGNbY1ttPj4yXT4+Ml18MCxjW0I+PjJdfDApfDApfDA7YTpkbyBpZihiW2w+PjFdfDApe2Nbaz4+Ml09Y1soY1tuPj4yXXwwKSs4Pj4yXTtTeihjW3k+PjJdfDAsKGNbbz4+Ml18MCkhPTA/NTM6NTcsY1trPj4yXXwwKXwwO2NbcT4+Ml09ZngoY1t5Pj4yXXwwLDEzKXwwO0M9SWgoY1t5Pj4yXXwwLChjW28+PjJdfDApIT0wPzIzOjI2LGNbaz4+Ml18MCwwLGNbeD4+Ml18MCxlW2w+PjFdfDApfDA7Y1soY1tuPj4yXXwwKSsyMD4+Ml09QztaeihjW3k+PjJdfDAsY1txPj4yXXwwKTtjW3E+PjJdPTA7d2hpbGUoMSl7aWYoKGNbcT4+Ml18MCk+PShlW2w+PjFdfDApKWJyZWFrIGE7angoY1t5Pj4yXXwwLDk2LGNbaz4+Ml18MCxjW3E+PjJdfDAsKGNbeD4+Ml18MCkrKGNbcT4+Ml18MCl8MCl8MDtjW3E+PjJdPShjW3E+PjJdfDApKzF9fXdoaWxlKDApO2NbcT4+Ml09ZVtsPj4xXTt3aGlsZSgxKXtpZigoY1txPj4yXXwwKT49KGVbcj4+MV18MCkpYnJlYWs7Y1t2Pj4yXT1jWyhjWyhjW3Q+PjJdfDApKzQ4Pj4yXXwwKSsoY1txPj4yXTw8Mik+PjJdO2Nbdz4+Ml09UEQoY1ttPj4yXXwwLGNbdj4+Ml18MCxjW24+PjJdfDAsY1txPj4yXXwwLGNbbz4+Ml18MCwoY1t4Pj4yXXwwKSsoY1txPj4yXXwwKXwwKXwwO2RvIGlmKChjW3c+PjJdfDApIT0oKGNbeD4+Ml18MCkrKGNbcT4+Ml18MCl8MCkpaWYoKGNbcz4+Ml18MCk9PTEpe3h4KGNbbT4+Ml18MCxjW3g+PjJdfDApO2NbeD4+Ml09Y1t3Pj4yXTticmVha31lbHNle2l4KGNbeT4+Ml18MCw4NSxjW3c+PjJdfDAsKGNbeD4+Ml18MCkrKGNbcT4+Ml18MCl8MCl8MDticmVha313aGlsZSgwKTtnPWNbdj4+Ml18MDtpZihlWyhjW3Y+PjJdfDApKzEyPj4xXSYxKXtpZigoY1t6Pj4yXXwwKSE9MD8oY1soY1tnPj4yXXwwKSs0Pj4yXSYyMDQ4fDApIT0wOjApYVsoY1t6Pj4yXXwwKSsoY1txPj4yXXwwKT4+MF09NjV9ZWxzZSBpZighKGVbZysxMj4+MV0mMjU2KSl7Y1t1Pj4yXT1jWyhjW2Nbdj4+Ml0+PjJdfDApKzE2Pj4yXTtpZigoZVsoY1t2Pj4yXXwwKSsxMD4+MV0mMjA0OHwwKT09MD8ob0IoY1t1Pj4yXXwwKXwwKSE9MDowKWl4KGNbeT4+Ml18MCwzNCwoY1t4Pj4yXXwwKSsoY1txPj4yXXwwKXwwLGNbKGNbbj4+Ml18MCkrMTI+PjJdfDApfDA7aWYoY1t6Pj4yXXwwKXtpZigoKHJCKGNbdT4+Ml18MCxhWyhjW3o+PjJdfDApKyhjW3E+PjJdfDApPj4wXXwwKXwwKTw8MjQ+PjI0fDApPT02NSlhWyhjW3o+PjJdfDApKyhjW3E+PjJdfDApPj4wXT02NTtpZihjRShjW3U+PjJdfDAsYVsoY1t6Pj4yXXwwKSsoY1txPj4yXXwwKT4+MF18MCl8MClhWyhjW3o+PjJdfDApKyhjW3E+PjJdfDApPj4wXT02NX19Y1txPj4yXT0oY1txPj4yXXwwKSsxfWNbY1twPj4yXT4+Ml09Y1t6Pj4yXTtpPUE7cmV0dXJuIGNbeD4+Ml18MH1mdW5jdGlvbiBURChiLGQsZil7Yj1ifDA7ZD1kfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTA7az1pO2k9aSsxNnwwO2c9aysxMnwwO2g9ays4fDA7bD1rKzR8MDtqPWs7Y1tnPj4yXT1iO2NbaD4+Ml09ZDtjW2w+PjJdPWY7aWYoISgoZVsoY1tsPj4yXXwwKSsxMD4+MV18MCkmMjU2KSl7aT1rO3JldHVybn1jW2o+PjJdPWVBKGNbZz4+Ml18MCwtMSl8MDtjWyhjW2o+PjJdfDApKzEyPj4yXT0oY1soY1toPj4yXXwwKSszNj4+Ml18MCk+Pj4xO2FbKGNbaj4+Ml18MCkrMz4+MF09Y1soY1toPj4yXXwwKSszNj4+Ml0mMTtpPWs7cmV0dXJufWZ1bmN0aW9uIFVEKGIsZCxlKXtiPWJ8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTA7bD1pO2k9aSszMnwwO2Y9bCsxNnwwO2c9bCsxMnwwO2g9bCs4fDA7aj1sKzR8MDtrPWw7Y1tmPj4yXT1iO2NbZz4+Ml09ZDtjW2g+PjJdPWU7Y1tqPj4yXT0wO3doaWxlKDEpe2lmKChjW2o+PjJdfDApPj0oY1tnPj4yXXwwKSlicmVhaztjW2s+PjJdPXBCKGNbZj4+Ml18MCxjW2o+PjJdfDApfDA7aWYoISgoKHJCKGNbaz4+Ml18MCxhWyhjW2g+PjJdfDApKyhjW2o+PjJdfDApPj4wXXwwKXwwKTw8MjQ+PjI0fDApIT02NT8oY0UoY1trPj4yXXwwLGFbKGNbaD4+Ml18MCkrKGNbaj4+Ml18MCk+PjBdfDApfDApPT0wOjApKWFbKGNbaD4+Ml18MCkrKGNbaj4+Ml18MCk+PjBdPTY1O2Nbaj4+Ml09KGNbaj4+Ml18MCkrMX1pPWw7cmV0dXJufWZ1bmN0aW9uIFZEKGIsZCxlLGYpe2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wLG09MDttPWk7aT1pKzMyfDA7Zz1tKzE2fDA7aD1tKzEyfDA7aj1tKzh8MDtrPW0rNHwwO2w9bTtjW2c+PjJdPWI7Y1toPj4yXT1kO2Nbaj4+Ml09ZTtjW2s+PjJdPWY7Y1tsPj4yXT1jWyhjW2c+PjJdfDApKzg+PjJdO2lmKCEoY1trPj4yXXwwKSl7aT1tO3JldHVybn13aGlsZSgxKXtpZigoY1tqPj4yXXwwKTw9MClicmVhaztpZigoYVtjW2s+PjJdPj4wXXwwKSE9NjUpYnJlYWs7Y1tqPj4yXT0oY1tqPj4yXXwwKSstMTtjW2g+PjJdPShjW2g+PjJdfDApKzE7Y1trPj4yXT0oY1trPj4yXXwwKSsxfXdoaWxlKDEpe2lmKChjW2o+PjJdfDApPjEpZT0oYVsoY1trPj4yXXwwKSsoKGNbaj4+Ml18MCktMSk+PjBdfDApPT02NTtlbHNlIGU9MDtkPWNbaj4+Ml18MDtpZighZSlicmVhaztjW2o+PjJdPWQrLTF9aWYoKGR8MCk8PTApe2k9bTtyZXR1cm59bXgoY1tsPj4yXXwwLDk4LGNbaD4+Ml18MCxjW2o+PjJdfDAsMCxjW2s+PjJdfDAsY1tqPj4yXXwwKXwwO1dBKGNbZz4+Ml18MCxjW2g+PjJdfDAsY1tqPj4yXXwwKTtpPW07cmV0dXJufWZ1bmN0aW9uIFdEKGEsZCxmLGcpe2E9YXwwO2Q9ZHwwO2Y9ZnwwO2c9Z3wwO3ZhciBoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTA7bz1pO2k9aSs0OHwwO3A9byszMnwwO2g9bysyOHwwO3E9bysyNHwwO3I9bysyMHwwO2w9bysxNnwwO249bysxMnwwO2s9bys4fDA7bT1vKzR8MDtqPW87Y1twPj4yXT1hO2NbaD4+Ml09ZDtjW3E+PjJdPWY7Y1tyPj4yXT1nO2NbbD4+Ml09Y1tjW3A+PjJdPj4yXTtjW24+PjJdPWNbKGNbbD4+Ml18MCkrOD4+Ml07angoY1tuPj4yXXwwLDEyOCxjW3I+PjJdfDAsMCxjW3E+PjJdfDApfDA7aWYoIShlWyhjW3A+PjJdfDApKzQwPj4xXSYzMikpe2k9bztyZXR1cm59Zj1jW2w+PjJdfDA7aWYoY1soY1tsPj4yXXwwKSsxMjQ+PjJdfDApZj1jW2YrMTI0Pj4yXXwwO2lmKGNbZis5Mj4+Ml18MCl7aT1vO3JldHVybn1jW20+PjJdPWNbKGNbaD4+Ml18MCkrMTI+PjJdO2Nbaj4+Ml09c2goY1tjW2w+PjJdPj4yXXwwLChiWyhjW20+PjJdfDApKzM0Pj4xXXwwKSsxPDwyLDApfDA7aWYoIShjW2o+PjJdfDApKXtpPW87cmV0dXJufWNbY1tqPj4yXT4+Ml09YlsoY1ttPj4yXXwwKSszND4+MV07Y1trPj4yXT0wO3doaWxlKDEpe2lmKChjW2s+PjJdfDApPj0oKGVbKGNbaD4+Ml18MCkrNTI+PjFdfDApLTF8MCkpYnJlYWs7aWYoKGJbKGNbKGNbaD4+Ml18MCkrND4+Ml18MCkrKGNbaz4+Ml08PDEpPj4xXXwwKT49MCljWyhjW2o+PjJdfDApKygoYlsoY1soY1toPj4yXXwwKSs0Pj4yXXwwKSsoY1trPj4yXTw8MSk+PjFdfDApKzE8PDIpPj4yXT0oY1trPj4yXXwwKSsxO2Nbaz4+Ml09KGNbaz4+Ml18MCkrMX1NaChjW24+PjJdfDAsLTEsY1tqPj4yXXwwLC0xNSk7aT1vO3JldHVybn1mdW5jdGlvbiBYRChhLGIsZCxlLGYpe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTA7az1pO2k9aSszMnwwO2c9aysyMHwwO249aysxNnwwO209aysxMnwwO2w9ays4fDA7aD1rKzR8MDtqPWs7Y1tnPj4yXT1hO2Nbbj4+Ml09YjtjW20+PjJdPWQ7Y1tsPj4yXT1lO2NbaD4+Ml09ZjtjW2o+PjJdPVRBKGNbZz4+Ml18MCxjW24+PjJdfDAsY1ttPj4yXXwwLGNbbD4+Ml18MCxjW2g+PjJdfDAsMCl8MDtpZigoY1tqPj4yXXwwKT09KGNbaD4+Ml18MCkpe2k9aztyZXR1cm59aXgoY1soY1tnPj4yXXwwKSs4Pj4yXXwwLDg1LGNbaj4+Ml18MCxjW2g+PjJdfDApfDA7aT1rO3JldHVybn1mdW5jdGlvbiBZRChhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MDtlPWk7aT1pKzE2fDA7Zz1lKzh8MDtmPWUrNHwwO2g9ZTtjW2c+PjJdPWE7Y1tmPj4yXT1iO2NbaD4+Ml09ZDtkPWNbaD4+Ml18MDtjWyhlQShjW2c+PjJdfDAsY1tmPj4yXXwwKXwwKSs0Pj4yXT1kO2k9ZTtyZXR1cm59ZnVuY3Rpb24gWkQoYSxiLGQsZixnLGgsail7YT1hfDA7Yj1ifDA7ZD1kfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7dmFyIGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTA7cT1pO2k9aSsxNDR8MDtuPXErMTMyfDA7dT1xKzEyOHwwO3Q9cSsxMjR8MDtzPXErMTIwfDA7az1xO2w9cSsxMTZ8MDtyPXErMTEyfDA7cD1xKzEwOHwwO289cSsxMDR8MDttPXErOHwwO2NbdT4+Ml09YTtjW3Q+PjJdPWI7Y1tzPj4yXT1kO2E9aztjW2E+PjJdPWY7Y1thKzQ+PjJdPWc7Y1tsPj4yXT1oO2Nbcj4+Ml09ajtjW3A+PjJdPTA7Y1tvPj4yXT1fRChtLGNbdT4+Ml18MCxjW3Q+PjJdfDAsY1tzPj4yXXwwLGNbbD4+Ml18MCxjW3I+PjJdfDApfDA7Y1tsPj4yXT1jW2w+PjJdJjEzMDt3aGlsZSgxKXtpZighKGNbbz4+Ml18MCkpe2Y9MTA7YnJlYWt9dD0oY1tvPj4yXXwwKSszMnwwO3U9aztpZigoY1t0Pj4yXSZjW3U+PjJdfDApPT0wPyhjW3QrND4+Ml0mY1t1KzQ+PjJdfDApPT0wOjApe3U9KGNbbz4+Ml18MCkrMzJ8MDtpZigoY1t1Pj4yXXwwKT09MCYoY1t1KzQ+PjJdfDApPT0wPygoZVsoY1tvPj4yXXwwKSsxMj4+MV18MCkmY1tsPj4yXXwwKSE9MDowKXtmPTY7YnJlYWt9aWYoIShjW3A+PjJdfDApKWNbcD4+Ml09Y1tvPj4yXX1jW28+PjJdPSREKG0pfDB9aWYoKGZ8MCk9PTYpe2Nbbj4+Ml09Y1tvPj4yXTt1PWNbbj4+Ml18MDtpPXE7cmV0dXJuIHV8MH1lbHNlIGlmKChmfDApPT0xMCl7Y1tuPj4yXT1jW3A+PjJdO3U9Y1tuPj4yXXwwO2k9cTtyZXR1cm4gdXwwfXJldHVybiAwfWZ1bmN0aW9uIF9EKGQsZSxmLGcsaCxqKXtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDt2YXIgaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MDtxPWk7aT1pKzMyfDA7az1xKzI0fDA7cj1xKzIwfDA7bD1xKzE2fDA7bT1xKzEyfDA7bj1xKzh8MDtvPXErNHwwO3A9cTtjW2s+PjJdPWQ7Y1tyPj4yXT1lO2NbbD4+Ml09ZjtjW20+PjJdPWc7Y1tuPj4yXT1oO2Nbbz4+Ml09ajtjW3A+PjJdPTA7Y1tjW2s+PjJdPj4yXT1jW3I+PjJdO2NbKGNbaz4+Ml18MCkrND4+Ml09Y1tyPj4yXTtjWyhjW2s+PjJdfDApKzEyPj4yXT0wO2lmKGNbbz4+Ml18MCl7Y1twPj4yXT1jW20+PjJdO2NbbT4+Ml09YlsoY1soY1tvPj4yXXwwKSs0Pj4yXXwwKSsoY1twPj4yXTw8MSk+PjFdO2lmKChjW20+PjJdfDApPT0tMiljWyhjW2s+PjJdfDApKzEyPj4yXT1jWyhjWyhjWyhjW28+PjJdfDApKzQwPj4yXXwwKSs0Pj4yXXwwKSsoKGNbcD4+Ml18MCkqMjB8MCk+PjJdO2lmKChjW20+PjJdfDApPT0oYlsoY1soY1tvPj4yXXwwKSsxMj4+Ml18MCkrMzI+PjFdfDApKWNbbT4+Ml09LTF9aWYoKGNbbz4+Ml18MCkhPTAmKGNbbT4+Ml18MCk+PTApe2FbKGNbaz4+Ml18MCkrMTY+PjBdPWFbKGNbKGNbKGNbbz4+Ml18MCkrMTI+PjJdfDApKzQ+PjJdfDApKyhjW20+PjJdPDw0KSsxMz4+MF18MDtjWyhjW2s+PjJdfDApKzg+PjJdPWNbKGNbKGNbbz4+Ml18MCkrMzI+PjJdfDApKyhjW3A+PjJdPDwyKT4+Ml19ZWxzZXthWyhjW2s+PjJdfDApKzE2Pj4wXT0wO2NbKGNbaz4+Ml18MCkrOD4+Ml09MH1jWyhjW2s+PjJdfDApKzIwPj4yXT1jW24+PjJdO2NbKGNbaz4+Ml18MCkrMjQ+PjJdPTA7Y1soY1trPj4yXXwwKSsyOD4+Ml09Y1tsPj4yXTtiWyhjW2s+PjJdfDApKzcyPj4xXT1jW20+PjJdO2FbKGNbaz4+Ml18MCkrMTc+PjBdPTE7YVsoY1trPj4yXXwwKSsxOD4+MF09MTtyPSREKGNbaz4+Ml18MCl8MDtpPXE7cmV0dXJuIHJ8MH1mdW5jdGlvbiAkRChmKXtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTA7cz1pO2k9aSs0OHwwO289cyszNnwwO3A9cyszMnwwO2g9cysyOHwwO2c9cys0MHwwO249cysyNHwwO209cysyMHwwO3I9cysxNnwwO3E9cysxMnwwO2o9cys4fDA7az1zKzR8MDtsPXM7Y1twPj4yXT1mO2NbcT4+Ml09Y1soY1twPj4yXXwwKSsyND4+Ml07YTp3aGlsZSgxKXtpZigoZFsoY1twPj4yXXwwKSsxOD4+MF18MCk+KGRbKGNbcD4+Ml18MCkrMTc+PjBdfDApKXtnPTQwO2JyZWFrfWNbaD4+Ml09Y1soY1twPj4yXXwwKSsyOCsoKGRbKGNbcD4+Ml18MCkrMTg+PjBdfDApLTE8PDIpPj4yXTtiW2c+PjFdPWJbKGNbcD4+Ml18MCkrNzIrKChkWyhjW3A+PjJdfDApKzE4Pj4wXXwwKS0xPDwxKT4+MV18MDtpZigoYltnPj4xXXwwKT09LTI/KGNbKGNbcD4+Ml18MCkrMTI+PjJdfDApPT0wOjApe2c9NTticmVha313aGlsZSgxKXtmPWNbKGNbcD4+Ml18MCkrND4+Ml18MDtjW20+PjJdPWY7aWYoIWYpYnJlYWs7Y1tyPj4yXT0oY1soY1ttPj4yXXwwKSsyMD4+Ml18MCkrKChjW3E+PjJdfDApKjQ4fDApO3doaWxlKDEpe2lmKChjW3E+PjJdfDApPj0oY1soY1ttPj4yXXwwKSsxMj4+Ml18MCkpYnJlYWs7ZG8gaWYoKGNbKGNbcj4+Ml18MCkrMjA+PjJdfDApPT0oY1toPj4yXXwwKT8oY1soY1tyPj4yXXwwKSsyOD4+Ml18MCk9PShiW2c+PjFdfDApOjApe2lmKChiW2c+PjFdfDApPT0tMj8oS3koY1soY1tjW3I+PjJdPj4yXXwwKSsxMj4+Ml18MCxjWyhjW3A+PjJdfDApKzEyPj4yXXwwLGNbaD4+Ml18MCl8MCkhPTA6MClicmVhaztpZigoZFsoY1twPj4yXXwwKSsxOD4+MF18MCk+MT8oY1soY1tjW3I+PjJdPj4yXXwwKSs0Pj4yXSYxfDApIT0wOjApYnJlYWs7aWYoKChlWyhjW3I+PjJdfDApKzEyPj4xXSYyMDQ4fDApIT0wPyhkWyhjW3A+PjJdfDApKzE3Pj4wXXwwKTwxMTowKT8oZj1reShjWyhjW2Nbcj4+Ml0+PjJdfDApKzE2Pj4yXXwwKXwwLGNbbj4+Ml09ZiwoZFtmPj4wXXwwKT09MTUyKTowKXtjW2o+PjJdPTA7d2hpbGUoMSl7aWYoKGNbaj4+Ml18MCk+PShkWyhjW3A+PjJdfDApKzE3Pj4wXXwwKSlicmVhaztpZigoY1soY1twPj4yXXwwKSsyOCsoY1tqPj4yXTw8Mik+PjJdfDApPT0oY1soY1tuPj4yXXwwKSsyOD4+Ml18MCk/KGJbKGNbcD4+Ml18MCkrNzIrKGNbaj4+Ml08PDEpPj4xXXwwKT09KGJbKGNbbj4+Ml18MCkrMzI+PjFdfDApOjApYnJlYWs7Y1tqPj4yXT0oY1tqPj4yXXwwKSsxfWlmKChjW2o+PjJdfDApPT0oZFsoY1twPj4yXXwwKSsxNz4+MF18MCkpe2NbKGNbcD4+Ml18MCkrMjgrKGNbaj4+Ml08PDIpPj4yXT1jWyhjW24+PjJdfDApKzI4Pj4yXTtiWyhjW3A+PjJdfDApKzcyKyhjW2o+PjJdPDwxKT4+MV09YlsoY1tuPj4yXXwwKSszMj4+MV18MDtmPShjW3A+PjJdfDApKzE3fDA7YVtmPj4wXT0oYVtmPj4wXXwwKSsxPDwyND4+MjR9fWlmKGVbKGNbcj4+Ml18MCkrMTI+PjFdJmNbKGNbcD4+Ml18MCkrMjA+PjJdKXtpZigoY1soY1twPj4yXXwwKSs4Pj4yXXwwKSE9MD8oZVsoY1tyPj4yXXwwKSsxMj4+MV0mMjU2fDApPT0wOjApe2NbbD4+Ml09Y1tjW2NbbT4+Ml0+PjJdPj4yXTtjW24+PjJdPWNbY1tyPj4yXT4+Ml07aWYoIShhRShjW24+PjJdfDAsYVsoY1twPj4yXXwwKSsxNj4+MF18MCl8MCkpYnJlYWs7Y1trPj4yXT1zQihjW2w+PjJdfDAsY1soY1tuPj4yXXwwKSsxMj4+Ml18MCxjWyhjW24+PjJdfDApKzE2Pj4yXXwwKXwwO2lmKCEoY1trPj4yXXwwKSljW2s+PjJdPWNbKGNbY1tsPj4yXT4+Ml18MCkrOD4+Ml07aWYoaWcoY1tjW2s+PjJdPj4yXXwwLGNbKGNbcD4+Ml18MCkrOD4+Ml18MCl8MClicmVha31pZighKGVbKGNbcj4+Ml18MCkrMTI+PjFdJjEzMCkpe2c9MzY7YnJlYWsgYX1mPWNbKGNbY1tyPj4yXT4+Ml18MCkrMTY+PjJdfDA7Y1tuPj4yXT1mO2lmKChkW2Y+PjBdfDApIT0xNTIpe2c9MzY7YnJlYWsgYX1pZigoY1soY1tuPj4yXXwwKSsyOD4+Ml18MCkhPShjWyhjW3A+PjJdfDApKzI4Pj4yXXwwKSl7Zz0zNjticmVhayBhfWlmKChiWyhjW24+PjJdfDApKzMyPj4xXXwwKSE9KGJbKGNbcD4+Ml18MCkrNzI+PjFdfDApKXtnPTM2O2JyZWFrIGF9fX13aGlsZSgwKTtjW3E+PjJdPShjW3E+PjJdfDApKzE7Y1tyPj4yXT0oY1tyPj4yXXwwKSs0OH1jWyhjW3A+PjJdfDApKzQ+PjJdPWNbKGNbKGNbcD4+Ml18MCkrND4+Ml18MCkrND4+Ml07Y1txPj4yXT0wfWNbKGNbcD4+Ml18MCkrND4+Ml09Y1tjW3A+PjJdPj4yXTtjW3E+PjJdPTA7Zj0oY1twPj4yXXwwKSsxOHwwO2FbZj4+MF09KGFbZj4+MF18MCkrMTw8MjQ+PjI0fWlmKChnfDApPT01KXtjW28+PjJdPTA7cj1jW28+PjJdfDA7aT1zO3JldHVybiByfDB9ZWxzZSBpZigoZ3wwKT09MzYpe2NbKGNbcD4+Ml18MCkrMjQ+PjJdPShjW3E+PjJdfDApKzE7Y1tvPj4yXT1jW3I+PjJdO3I9Y1tvPj4yXXwwO2k9cztyZXR1cm4gcnwwfWVsc2UgaWYoKGd8MCk9PTQwKXtjW28+PjJdPTA7cj1jW28+PjJdfDA7aT1zO3JldHVybiByfDB9cmV0dXJuIDB9ZnVuY3Rpb24gYUUoYixkKXtiPWJ8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MDtnPWk7aT1pKzE2fDA7ZT1nKzR8MDtqPWc7Zj1nKzl8MDtoPWcrOHwwO2Nbaj4+Ml09YjthW2Y+PjBdPWQ7YVtoPj4wXT1iRShjW2o+PjJdfDApfDA7c3dpdGNoKGFbaD4+MF18MCl7Y2FzZSA2NTp7Y1tlPj4yXT0xO2JyZWFrfWNhc2UgNjY6e2NbZT4+Ml09KGFbZj4+MF18MCk9PTY2JjE7YnJlYWt9ZGVmYXVsdDpjW2U+PjJdPShhW2Y+PjBdfDApPj02NyYxfWk9ZztyZXR1cm4gY1tlPj4yXXwwfWZ1bmN0aW9uIGJFKGIpe2I9YnwwO3ZhciBkPTAsZT0wLGY9MDtmPWk7aT1pKzE2fDA7ZD1mO2U9Zis0fDA7Y1tkPj4yXT1iO2FbZT4+MF09ZXkoY1soY1tkPj4yXXwwKSsxMj4+Ml18MCl8MDtiPWNbZD4+Ml18MDtpZihjWyhjW2Q+PjJdfDApKzE2Pj4yXXwwKXthW2U+PjBdPXJCKGNbYisxNj4+Ml18MCxhW2U+PjBdfDApfDA7ZT1hW2U+PjBdfDA7aT1mO3JldHVybiBlfDB9aWYoY1tiKzQ+PjJdJjIwNDgpe2FbZT4+MF09ckIoY1tjWyhjW2NbKGNbZD4+Ml18MCkrMjA+PjJdPj4yXXwwKSs0Pj4yXT4+Ml18MCxhW2U+PjBdfDApfDA7ZT1hW2U+PjBdfDA7aT1mO3JldHVybiBlfDB9aWYoYVtlPj4wXXwwKXtlPWFbZT4+MF18MDtpPWY7cmV0dXJuIGV8MH1hW2U+PjBdPTY1O2U9YVtlPj4wXXwwO2k9ZjtyZXR1cm4gZXwwfWZ1bmN0aW9uIGNFKGUsZil7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTA7bD1pO2k9aSsxNnwwO2s9bCs0fDA7Zz1sO2g9bCs5fDA7aj1sKzh8MDtjW2c+PjJdPWU7YVtoPj4wXT1mO2E6ZG8gaWYoKGFbaD4+MF18MCk9PTY1KWNbaz4+Ml09MTtlbHNle3doaWxlKDEpe2lmKChkW2NbZz4+Ml0+PjBdfDApPT0xNTYpZT0xO2Vsc2UgZT0oZFtjW2c+PjJdPj4wXXwwKT09MTU1O2Y9Y1tnPj4yXXwwO2lmKCFlKWJyZWFrO2NbZz4+Ml09Y1tmKzEyPj4yXX1hW2o+PjBdPWFbZj4+MF18MDtpZigoZFtqPj4wXXwwKT09MTU3KWFbaj4+MF09YVsoY1tnPj4yXXwwKSszOD4+MF18MDtzd2l0Y2goZFtqPj4wXXwwKXtjYXNlIDEzNDp7aWYoKGFbaD4+MF18MCk9PTY4KWY9MTtlbHNlIGY9KGFbaD4+MF18MCk9PTY3O2Nbaz4+Ml09ZiYxO2JyZWFrIGF9Y2FzZSAxMzI6e2lmKChhW2g+PjBdfDApPT02OSlmPTE7ZWxzZSBmPShhW2g+PjBdfDApPT02NztjW2s+PjJdPWYmMTticmVhayBhfWNhc2UgOTc6e2Nbaz4+Ml09KGFbaD4+MF18MCk9PTY2JjE7YnJlYWsgYX1jYXNlIDEzMzp7Y1trPj4yXT0xO2JyZWFrIGF9Y2FzZSAxNTI6e2lmKChiWyhjW2c+PjJdfDApKzMyPj4xXXwwKTwwKWlmKChhW2g+PjBdfDApPT02OClmPTE7ZWxzZSBmPShhW2g+PjBdfDApPT02NztlbHNlIGY9MDtjW2s+PjJdPWYmMTticmVhayBhfWRlZmF1bHQ6e2Nbaz4+Ml09MDticmVhayBhfX19d2hpbGUoMCk7aT1sO3JldHVybiBjW2s+PjJdfDB9ZnVuY3Rpb24gZEUoYSxiKXthPWF8MDtiPWJ8MDt2YXIgZD0wLGU9MCxmPTA7ZD1pO2k9aSsxNnwwO2Y9ZCs0fDA7ZT1kO2NbZj4+Ml09YTtjW2U+PjJdPWI7YT1jW2Y+PjJdfDA7Yj1jW2U+PjJdfDA7c0EoYSxiLEpmKGNbZT4+Ml18MCl8MCk7aT1kO3JldHVybn1mdW5jdGlvbiBlRShhLGQpe2E9YXwwO2Q9ZHwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTA7cD1pO2k9aSszMnwwO249cDtmPXArMjR8MDtnPXArMjB8MDttPXArMTZ8MDtrPXArMzB8MDtsPXArMjh8MDtoPXArMTJ8MDtqPXArOHwwO289cCs0fDA7Y1tmPj4yXT1hO2NbZz4+Ml09ZDtjW20+PjJdPWNbKGNbZz4+Ml18MCkrMjQrOD4+Ml07YltrPj4xXT1iWyhjW2c+PjJdfDApKzI0Pj4xXXwwO2JbbD4+MV09YlsoY1tnPj4yXXwwKSs0Mj4+MV18MDtpZigoZVtrPj4xXXwwfDApPT0wPyhjWyhjW2c+PjJdfDApKzM2Pj4yXSY0OHwwKT09MDowKXtpPXA7cmV0dXJufXNBKGNbZj4+Ml18MCwzNDY4NCwyKTtjW2g+PjJdPTA7d2hpbGUoMSl7aWYoKGNbaD4+Ml18MCk+PShlW2s+PjFdfDB8MCkpYnJlYWs7Y1tvPj4yXT1mRShjW20+PjJdfDAsY1toPj4yXXwwKXwwO2lmKGNbaD4+Ml18MClzQShjW2Y+PjJdfDAsMzQ2ODcsNSk7ZD1jW2Y+PjJdfDA7YT0oY1toPj4yXXwwKT49KGVbbD4+MV18MHwwKT8zNDY5MzozNDY5ODtjW24+PjJdPWNbbz4+Ml07ckEoZCxhLG4pO2NbaD4+Ml09KGNbaD4+Ml18MCkrMX1jW2o+PjJdPWNbaD4+Ml07aWYoY1soY1tnPj4yXXwwKSszNj4+Ml0mMzIpe2dFKGNbZj4+Ml18MCxjW20+PjJdfDAsZVsoY1tnPj4yXXwwKSsyNCsyPj4xXXwwLGNbaj4+Ml18MCxjW2g+PjJdfDAsMzQ2MTUpO2NbaD4+Ml09MX1pZihjWyhjW2c+PjJdfDApKzM2Pj4yXSYxNilnRShjW2Y+PjJdfDAsY1ttPj4yXXwwLGVbKGNbZz4+Ml18MCkrMjQrND4+MV18MCxjW2o+PjJdfDAsY1toPj4yXXwwLDM0NjE3KTtzQShjW2Y+PjJdfDAsMzQ3MDYsMSk7aT1wO3JldHVybn1mdW5jdGlvbiBmRShhLGQpe2E9YXwwO2Q9ZHwwO3ZhciBlPTAsZj0wLGc9MCxoPTA7aD1pO2k9aSsxNnwwO2U9aCs4fDA7Zj1oKzR8MDtnPWg7Y1tmPj4yXT1hO2NbZz4+Ml09ZDtjW2c+PjJdPWJbKGNbKGNbZj4+Ml18MCkrND4+Ml18MCkrKGNbZz4+Ml08PDEpPj4xXTtpZigoY1tnPj4yXXwwKT09LTIpe2NbZT4+Ml09MzQ3MTI7YT1jW2U+PjJdfDA7aT1oO3JldHVybiBhfDB9aWYoKGNbZz4+Ml18MCk9PS0xKXtjW2U+PjJdPTI0NzQ1O2E9Y1tlPj4yXXwwO2k9aDtyZXR1cm4gYXwwfWVsc2V7Y1tlPj4yXT1jWyhjWyhjWyhjW2Y+PjJdfDApKzEyPj4yXXwwKSs0Pj4yXXwwKSsoY1tnPj4yXTw8NCk+PjJdO2E9Y1tlPj4yXXwwO2k9aDtyZXR1cm4gYXwwfXJldHVybiAwfWZ1bmN0aW9uIGdFKGEsYixkLGUsZixnKXthPWF8MDtiPWJ8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDt2YXIgaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MDtvPWk7aT1pKzMyfDA7aD1vKzI0fDA7aj1vKzIwfDA7az1vKzE2fDA7bD1vKzEyfDA7cD1vKzh8MDttPW8rNHwwO249bztjW2g+PjJdPWE7Y1tqPj4yXT1iO2Nbaz4+Ml09ZDtjW2w+PjJdPWU7Y1twPj4yXT1mO2NbbT4+Ml09ZztpZihjW3A+PjJdfDApc0EoY1toPj4yXXwwLDM0Njg3LDUpO2lmKChjW2s+PjJdfDApPjEpc0EoY1toPj4yXXwwLDM0NzA4LDEpO2Nbbj4+Ml09MDt3aGlsZSgxKXtpZigoY1tuPj4yXXwwKT49KGNbaz4+Ml18MCkpYnJlYWs7aWYoY1tuPj4yXXwwKXNBKGNbaD4+Ml18MCwzNDcxMCwxKTtwPWNbaD4+Ml18MDtkRShwLGZFKGNbaj4+Ml18MCwoY1tsPj4yXXwwKSsoY1tuPj4yXXwwKXwwKXwwKTtjW24+PjJdPShjW24+PjJdfDApKzF9aWYoKGNbaz4+Ml18MCk+MSlzQShjW2g+PjJdfDAsMzQ3MDYsMSk7c0EoY1toPj4yXXwwLGNbbT4+Ml18MCwxKTtpZigoY1trPj4yXXwwKT4xKXNBKGNbaD4+Ml18MCwzNDcwOCwxKTtjW24+PjJdPTA7d2hpbGUoMSl7aWYoKGNbbj4+Ml18MCk+PShjW2s+PjJdfDApKWJyZWFrO2lmKGNbbj4+Ml18MClzQShjW2g+PjJdfDAsMzQ3MTAsMSk7c0EoY1toPj4yXXwwLDIwMjc1LDEpO2Nbbj4+Ml09KGNbbj4+Ml18MCkrMX1pZigoY1trPj4yXXwwKTw9MSl7aT1vO3JldHVybn1zQShjW2g+PjJdfDAsMzQ3MDYsMSk7aT1vO3JldHVybn1mdW5jdGlvbiBoRShhLGIpe2E9YXwwO2I9YnwwO3ZhciBkPTAsZT0wLGY9MDtkPWk7aT1pKzE2fDA7Zj1kKzR8MDtlPWQ7Y1tmPj4yXT1hO2NbZT4+Ml09YjthPXhCKGNbZj4+Ml18MCwzLGNbZT4+Ml18MCl8MDtpPWQ7cmV0dXJuIGF8MH1mdW5jdGlvbiBpRShiLGQsZixnKXtiPWJ8MDtkPWR8MDtmPWZ8MDtnPWd8MDt2YXIgaD0wLGo9MCxrPTAsbD0wLG09MCxuPTA7bj1pO2k9aSszMnwwO2g9bisxNnwwO2o9bisxMnwwO2s9bis4fDA7bD1uO209bisyMHwwO2Nbaj4+Ml09YjtjW2s+PjJdPWQ7Yj1sO2NbYj4+Ml09ZjtjW2IrND4+Ml09ZztpZigoY1soY1tqPj4yXXwwKSsyMD4+Ml18MCkhPShjWyhjW2s+PjJdfDApKzQ0Pj4yXXwwKSl7Y1toPj4yXT0wO2I9Y1toPj4yXXwwO2k9bjtyZXR1cm4gYnwwfWlmKCEoKGVbKGNbaj4+Ml18MCkrMTI+PjFdfDApJjEzMCkpe2NbaD4+Ml09MDtiPWNbaD4+Ml18MDtpPW47cmV0dXJuIGJ8MH1kPShjW2o+PjJdfDApKzMyfDA7Yj1sO2lmKChjW2Q+PjJdJmNbYj4+Ml18MCkhPTA/MTooY1tkKzQ+PjJdJmNbYis0Pj4yXXwwKSE9MCl7Y1toPj4yXT0wO2I9Y1toPj4yXXwwO2k9bjtyZXR1cm4gYnwwfWlmKChjWyhjW2o+PjJdfDApKzI4Pj4yXXwwKTwwKXtjW2g+PjJdPTA7Yj1jW2g+PjJdfDA7aT1uO3JldHVybiBifDB9YVttPj4wXT1hWyhjWyhjWyhjW2s+PjJdfDApKzE2Pj4yXXwwKSs0Pj4yXXwwKSsoY1soY1tqPj4yXXwwKSsyOD4+Ml08PDQpKzEzPj4wXXwwO2lmKGFFKGNbY1tqPj4yXT4+Ml18MCxhW20+PjBdfDApfDApe2NbaD4+Ml09MTtiPWNbaD4+Ml18MDtpPW47cmV0dXJuIGJ8MH1lbHNle2NbaD4+Ml09MDtiPWNbaD4+Ml18MDtpPW47cmV0dXJuIGJ8MH1yZXR1cm4gMH1mdW5jdGlvbiBqRShhLGQsZil7YT1hfDA7ZD1kfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wO209aTtpPWkrMzJ8MDtnPW0rMTZ8MDtoPW0rMTJ8MDtqPW0rOHwwO2s9bSs0fDA7bD1tO2NbaD4+Ml09YTtjW2o+PjJdPWQ7Y1trPj4yXT1mO2lmKChlWyhjW2o+PjJdfDApKzQ0Pj4xXXwwfDApPj0oY1trPj4yXXwwKSl7Y1tnPj4yXT0wO2w9Y1tnPj4yXXwwO2k9bTtyZXR1cm4gbHwwfWNbaz4+Ml09KGNbaz4+Ml18MCkrNyYtODtjW2w+PjJdPVZ3KGNbaD4+Ml18MCxjW2s+PjJdPDwyLDApfDA7aWYoIShjW2w+PjJdfDApKXtjW2c+PjJdPTc7bD1jW2c+PjJdfDA7aT1tO3JldHVybiBsfDB9VFIoY1tsPj4yXXwwLGNbKGNbaj4+Ml18MCkrNDg+PjJdfDAsKGVbKGNbaj4+Ml18MCkrNDQ+PjFdfDApPDwyfDApfDA7aWYoKGNbKGNbaj4+Ml18MCkrNDg+PjJdfDApIT0oKGNbaj4+Ml18MCkrNTZ8MCkpVGYoY1toPj4yXXwwLGNbKGNbaj4+Ml18MCkrNDg+PjJdfDApO2NbKGNbaj4+Ml18MCkrNDg+PjJdPWNbbD4+Ml07YlsoY1tqPj4yXXwwKSs0ND4+MV09Y1trPj4yXTtjW2c+PjJdPTA7bD1jW2c+PjJdfDA7aT1tO3JldHVybiBsfDB9ZnVuY3Rpb24ga0UoYSxkLGUsZil7YT1hfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wLG49MCxvPTA7bT1pO2k9aSszMnwwO249bSsyMHwwO2c9bSsyNHwwO289bSsxNnwwO2g9bSsxMnwwO2s9bSs4fDA7aj1tKzR8MDtsPW07Y1tuPj4yXT1hO2JbZz4+MV09ZDtjW28+PjJdPWU7Y1toPj4yXT1mO2Nbaj4+Ml09NTYrKChiW2c+PjFdPDwyKSs3Ji04KSsoKChiW2c+PjFdfDApKzE8PDEpKyhiW2c+PjFdPDwxKSsoYltnPj4xXXwwKSs3Ji04KTtmPShjW2o+PjJdfDApKyhjW28+PjJdfDApfDA7Y1trPj4yXT1zaChjW24+PjJdfDAsZiwoKGZ8MCk8MCk8PDMxPj4zMSl8MDtpZighKGNbaz4+Ml18MCkpe289Y1trPj4yXXwwO2k9bTtyZXR1cm4gb3wwfWNbbD4+Ml09KGNbaz4+Ml18MCkrNTY7Y1soY1trPj4yXXwwKSszMj4+Ml09Y1tsPj4yXTtjW2w+PjJdPShjW2w+PjJdfDApKygoYltnPj4xXTw8MikrNyYtOCk7Y1soY1trPj4yXXwwKSs4Pj4yXT1jW2w+PjJdO2NbbD4+Ml09KGNbbD4+Ml18MCkrKChiW2c+PjFdfDApKzE8PDEpO2NbKGNbaz4+Ml18MCkrND4+Ml09Y1tsPj4yXTtjW2w+PjJdPShjW2w+PjJdfDApKyhiW2c+PjFdPDwxKTtjWyhjW2s+PjJdfDApKzI4Pj4yXT1jW2w+PjJdO2JbKGNbaz4+Ml18MCkrNTI+PjFdPWJbZz4+MV18MDtiWyhjW2s+PjJdfDApKzUwPj4xXT0oYltnPj4xXXwwKS0xO2NbY1toPj4yXT4+Ml09KGNbaz4+Ml18MCkrKGNbaj4+Ml18MCk7bz1jW2s+PjJdfDA7aT1tO3JldHVybiBvfDB9ZnVuY3Rpb24gbEUoYSxiKXthPWF8MDtiPWJ8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wO2o9aTtpPWkrMzJ8MDtlPWorOHwwO2Y9aisyMHwwO2c9aisxNnwwO2g9ajtjW2Y+PjJdPWE7Y1tnPj4yXT1iO2lmKCEoY1tnPj4yXXwwKSl7Zz1lO2NbZz4+Ml09MDtjW2crND4+Ml09MDtnPWU7aD1nO2g9Y1toPj4yXXwwO2c9Zys0fDA7Zz1jW2c+PjJdfDA7Qz1nO2k9ajtyZXR1cm4gaHwwfWlmKChkW2NbZz4+Ml0+PjBdfDB8MCk9PTE1Mil7Zz1PRChjW2Y+PjJdfDAsY1soY1tnPj4yXXwwKSsyOD4+Ml18MCl8MDtmPWg7Y1tmPj4yXT1nO2NbZis0Pj4yXT1DO2Y9aDtoPWNbZis0Pj4yXXwwO2c9ZTtjW2c+PjJdPWNbZj4+Ml07Y1tnKzQ+PjJdPWg7Zz1lO2g9ZztoPWNbaD4+Ml18MDtnPWcrNHwwO2c9Y1tnPj4yXXwwO0M9ZztpPWo7cmV0dXJuIGh8MH1pZihjWyhjW2c+PjJdfDApKzE2Pj4yXXwwKXtiPWxFKGNbZj4+Ml18MCxjWyhjW2c+PjJdfDApKzE2Pj4yXXwwKXwwO2E9Q31lbHNle2I9MDthPTB9az1oO2Nbaz4+Ml09YjtjW2srND4+Ml09YTtpZihjWyhjW2c+PjJdfDApKzEyPj4yXXwwKXtiPWxFKGNbZj4+Ml18MCxjWyhjW2c+PjJdfDApKzEyPj4yXXwwKXwwO2w9aDthPWNbbCs0Pj4yXXxDO2s9aDtjW2s+PjJdPWNbbD4+Ml18YjtjW2srND4+Ml09YX1pZighKGNbKGNbZz4+Ml18MCkrND4+Ml0mMjA0OCkpe2lmKGNbKGNbZz4+Ml18MCkrMjA+PjJdfDApe2c9S0QoY1tmPj4yXXwwLGNbKGNbZz4+Ml18MCkrMjA+PjJdfDApfDA7Zj1oO2s9Y1tmKzQ+PjJdfEM7bD1oO2NbbD4+Ml09Y1tmPj4yXXxnO2NbbCs0Pj4yXT1rfX1lbHNle2c9bUUoY1tmPj4yXXwwLGNbKGNbZz4+Ml18MCkrMjA+PjJdfDApfDA7Zj1oO2s9Y1tmKzQ+PjJdfEM7bD1oO2NbbD4+Ml09Y1tmPj4yXXxnO2NbbCs0Pj4yXT1rfWw9Y1toKzQ+PjJdfDA7az1lO2Nbaz4+Ml09Y1toPj4yXTtjW2srND4+Ml09bDtrPWU7bD1rO2w9Y1tsPj4yXXwwO2s9ays0fDA7az1jW2s+PjJdfDA7Qz1rO2k9ajtyZXR1cm4gbHwwfWZ1bmN0aW9uIG1FKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTA7aj1pO2k9aSszMnwwO2Q9aisyMHwwO2U9aisxNnwwO2c9ajtoPWorMTJ8MDtmPWorOHwwO2NbZD4+Ml09YTtjW2U+PjJdPWI7Yj1nO2NbYj4+Ml09MDtjW2IrND4+Ml09MDt3aGlsZSgxKXtpZighKGNbZT4+Ml18MCkpYnJlYWs7Y1toPj4yXT1jWyhjW2U+PjJdfDApKzI4Pj4yXTtrPUtEKGNbZD4+Ml18MCxjW2NbZT4+Ml0+PjJdfDApfDA7bD1nO2E9Y1tsKzQ+PjJdfEM7Yj1nO2NbYj4+Ml09Y1tsPj4yXXxrO2NbYis0Pj4yXT1hO2I9S0QoY1tkPj4yXXwwLGNbKGNbZT4+Ml18MCkrMzY+PjJdfDApfDA7YT1nO2s9Y1thKzQ+PjJdfEM7bD1nO2NbbD4+Ml09Y1thPj4yXXxiO2NbbCs0Pj4yXT1rO2w9S0QoY1tkPj4yXXwwLGNbKGNbZT4+Ml18MCkrNDQ+PjJdfDApfDA7az1nO2I9Y1trKzQ+PjJdfEM7YT1nO2NbYT4+Ml09Y1trPj4yXXxsO2NbYSs0Pj4yXT1iO2E9bEUoY1tkPj4yXXwwLGNbKGNbZT4+Ml18MCkrMzI+PjJdfDApfDA7Yj1nO2w9Y1tiKzQ+PjJdfEM7az1nO2Nbaz4+Ml09Y1tiPj4yXXxhO2Nbays0Pj4yXT1sO2s9bEUoY1tkPj4yXXwwLGNbKGNbZT4+Ml18MCkrNDA+PjJdfDApfDA7bD1nO2E9Y1tsKzQ+PjJdfEM7Yj1nO2NbYj4+Ml09Y1tsPj4yXXxrO2NbYis0Pj4yXT1hO2E6ZG8gaWYoY1toPj4yXXwwKXtjW2Y+PjJdPTA7d2hpbGUoMSl7aWYoKGNbZj4+Ml18MCk+PShjW2NbaD4+Ml0+PjJdfDApKWJyZWFrIGE7az1tRShjW2Q+PjJdfDAsY1soY1toPj4yXXwwKSs4KygoY1tmPj4yXXwwKSo3MnwwKSsyMD4+Ml18MCl8MDtsPWc7YT1jW2wrND4+Ml18QztiPWc7Y1tiPj4yXT1jW2w+PjJdfGs7Y1tiKzQ+PjJdPWE7Yj1sRShjW2Q+PjJdfDAsY1soY1toPj4yXXwwKSs4KygoY1tmPj4yXXwwKSo3MnwwKSs0OD4+Ml18MCl8MDthPWc7az1jW2ErND4+Ml18QztsPWc7Y1tsPj4yXT1jW2E+PjJdfGI7Y1tsKzQ+PjJdPWs7Y1tmPj4yXT0oY1tmPj4yXXwwKSsxfX13aGlsZSgwKTtjW2U+PjJdPWNbKGNbZT4+Ml18MCkrNDg+PjJdfWw9ZztDPWNbbCs0Pj4yXXwwO2k9ajtyZXR1cm4gY1tsPj4yXXwwfWZ1bmN0aW9uIG5FKGEsYyl7YT1hfDA7Yz1jfDA7dmFyIGU9MCxmPTAsZz0wLGg9MDtoPWk7aT1pKzE2fDA7ZT1oKzR8MDtmPWgrMnwwO2c9aDtiW2Y+PjFdPWE7YltnPj4xXT1jO2lmKChiW2Y+PjFdfDApPj0oYltnPj4xXXwwKSl7YT1iW2Y+PjFdfDA7aWYoKGJbZj4+MV18MCk+KChiW2c+PjFdfDApKzQ5fDApKXtiW2U+PjFdPWE7Zz1iW2U+PjFdfDA7aT1oO3JldHVybiBnfDB9Yz1iW2Y+PjFdfDA7aWYoKGE8PDE2Pj4xNnwwKT4oKGJbZz4+MV18MCkrMzF8MCkpe2JbZT4+MV09YysxO2c9YltlPj4xXXwwO2k9aDtyZXR1cm4gZ3wwfWVsc2V7YltlPj4xXT1jKyhkWzM0Nzc0KygoYltmPj4xXXwwKS0oYltnPj4xXXwwKSk+PjBdfDApO2c9YltlPj4xXXwwO2k9aDtyZXR1cm4gZ3wwfX1lbHNle2E9YltnPj4xXXwwO2lmKChiW2c+PjFdfDApPigoYltmPj4xXXwwKSs0OXwwKSl7YltlPj4xXT1hO2c9YltlPj4xXXwwO2k9aDtyZXR1cm4gZ3wwfWM9YltnPj4xXXwwO2lmKChhPDwxNj4+MTZ8MCk+KChiW2Y+PjFdfDApKzMxfDApKXtiW2U+PjFdPWMrMTtnPWJbZT4+MV18MDtpPWg7cmV0dXJuIGd8MH1lbHNle2JbZT4+MV09YysoZFszNDc3NCsoKGJbZz4+MV18MCktKGJbZj4+MV18MCkpPj4wXXwwKTtnPWJbZT4+MV18MDtpPWg7cmV0dXJuIGd8MH19cmV0dXJuIDB9ZnVuY3Rpb24gb0UoZixnLGgsaixrLGwsbSl7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7az1rfDA7bD1sfDA7bT1tfDA7dmFyIG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEQ9MCxFPTAsRj0wLEc9MCxIPTAsST0wLEo9MCxLPTAsTD0wLE09MCxOPTAsTz0wLFA9MCxRPTAsUj0wLFM9MCxUPTAsVT0wLFY9MCxXPTAsWD0wLFk9MCxaPTAsXz0wLCQ9MCxhYT0wLGJhPTAsY2E9MDtjYT1pO2k9aSsxNjB8MDtaPWNhKzE0OXwwO249Y2ErMTI0fDA7bz1jYSsxMjB8MDtwPWNhKzExNnwwO3E9Y2ErMTQwfDA7cj1jYSsxMzh8MDtzPWNhKzExMnwwO3Q9Y2ErMTA4fDA7Vz1jYSsxNDh8MDtVPWNhKzE0N3wwO1Y9Y2ErMTQ2fDA7RT1jYSsxNDV8MDt3PWNhKzE0NHwwO0Q9Y2ErMTQzfDA7eT1jYSsxMzZ8MDtJPWNhKzEzNHwwO0g9Y2ErMTMyfDA7Sj1jYSsxMzB8MDtCPWNhKzEwNHwwO189Y2ErMTAwfDA7Rj1jYSs5NnwwO0E9Y2ErOTJ8MDt6PWNhKzg4fDA7UD1jYSs4NHwwO1I9Y2ErODB8MDtRPWNhKzc2fDA7Tj1jYSs3MnwwO089Y2ErNjh8MDt2PWNhKzY0fDA7YWE9Y2ErNDB8MDtLPWNhKzMyfDA7TD1jYSsyNHwwO1Q9Y2ErMTZ8MDtYPWNhKzYwfDA7WT1jYSs1NnwwO3U9Y2ErMTQyfDA7eD1jYSsxMjh8MDtTPWNhKzUyfDA7TT1jYSs0OHwwO0c9Y2ErOHwwOyQ9Y2E7Y1tuPj4yXT1mO2Nbbz4+Ml09ZztjW3A+PjJdPWg7YltxPj4xXT1qO2Jbcj4+MV09aztjW3M+PjJdPWw7Y1t0Pj4yXT1tO2NbUD4+Ml09MDtjW3Y+PjJdPWNbY1tjW24+PjJdPj4yXT4+Ml07aj1hYTtjW2o+PjJdPTA7Y1tqKzQ+PjJdPTA7aWYoKGVbcj4+MV18MCkhPTA/KGVbKGNbdj4+Ml18MCkrNjQ+PjFdJjEyOHwwKSE9MDowKXthW1o+PjBdPTA7YmE9YVtaPj4wXXwwO2k9Y2E7cmV0dXJuIGJhfDB9YltKPj4xXT1jW2Nbbz4+Ml0+PjJdO2lmKChlW0o+PjFdfDApPjYzKXthW1o+PjBdPTA7YmE9YVtaPj4wXXwwO2k9Y2E7cmV0dXJuIGJhfDB9YVtFPj4wXT0xO2Y9V1IoMSwwLGVbSj4+MV18MCl8MDtmPVFSKGZ8MCxDfDAsMSwwKXwwO2o9SztjW2o+PjJdPWY7Y1tqKzQ+PjJdPUM7aj1MO2Nbaj4+Ml09MDtjW2orND4+Ml09MDtqPVQ7Y1tqPj4yXT0wO2Nbais0Pj4yXT0wO2JbeT4+MV09Mzg2O2lmKGVbcT4+MV0mMjA0OCliW3k+PjFdPWVbeT4+MV18MTtjW0I+PjJdPTA7YTp3aGlsZSgxKXtpZighKGRbRT4+MF18MCkpYnJlYWs7Zj1hYTtoPWNbZis0Pj4yXXwwO2o9SzttPWNbais0Pj4yXXwwO2lmKCEoaD4+PjA8bT4+PjB8KChofDApPT0obXwwKT8oY1tmPj4yXXwwKT4+PjA8KGNbaj4+Ml18MCk+Pj4wOjApKSlicmVhaztpZigoY1tCPj4yXXwwKT4oZVtyPj4xXXwwKSlicmVhaztpZigoY1tCPj4yXXwwKT4wKXttPShjW1A+PjJdfDApKzh8MDtoPVQ7Zj1jW2grND4+Ml18Y1ttKzQ+PjJdO2o9VDtjW2o+PjJdPWNbaD4+Ml18Y1ttPj4yXTtjW2orND4+Ml09Zn1pZigoY1tCPj4yXXwwKTwoZVtyPj4xXXwwKSl7Y1tQPj4yXT1jWyhjWyhjW3A+PjJdfDApKzI0Pj4yXXwwKSsoY1tCPj4yXTw8Mik+PjJdO2lmKCEoZVtxPj4xXSYyMDQ4KSliYT0xN31lbHNle2NbUD4+Ml09Y1tzPj4yXTtiYT0xN31iOmRvIGlmKChiYXwwKT09MTcpe2JhPTA7az1jW1A+PjJdfDA7aWYoY1soY1tQPj4yXXwwKSszNj4+Ml0mMTAyNCl7YmE9MTg7YnJlYWsgYX1jW0E+PjJdPWNbKGNbKGNbbj4+Ml18MCkrND4+Ml18MCkrOCsoKGRbaysxNj4+MF18MCkqNzJ8MCkrNDQ+PjJdO2NbXz4+Ml09MDt3aGlsZSgxKXtpZigoY1tfPj4yXXwwKT49KGVbSj4+MV18MCkpYnJlYWs7Zj1XUigxLDAsY1tfPj4yXXwwKXwwO2o9YWE7YzpkbyBpZigoKCEoKGYmY1tqPj4yXXwwKSE9MD8xOihDJmNbais0Pj4yXXwwKSE9MCk/KGNbUT4+Ml09a3koY1soY1soY1tvPj4yXXwwKSs0Pj4yXXwwKSsoKGNbXz4+Ml18MCkqMjB8MCk+PjJdfDApfDAsKGRbY1tRPj4yXT4+MF18MCk9PTE1Mik6MCk/KGNbKGNbUT4+Ml18MCkrMjg+PjJdfDApPT0oY1tBPj4yXXwwKTowKT8oaj1ULGNbUj4+Ml09WkQoKGNbbj4+Ml18MCkrODB8MCxjW0E+PjJdfDAsYlsoY1tRPj4yXXwwKSszMj4+MV18MCx+Y1tqPj4yXSx+Y1tqKzQ+PjJdLGVbeT4+MV18MCwwKXwwLChjW1I+PjJdfDApIT0wKTowKXtpZigoZVsoY1tSPj4yXXwwKSsxMj4+MV18MCk9PTEpe2NbRj4+Ml09MDt3aGlsZSgxKXtpZigoY1tGPj4yXXwwKT49KGVbKGNbUD4+Ml18MCkrNDA+PjFdfDApKWJyZWFrO2lmKChjW1I+PjJdfDApPT0oY1soY1soY1tQPj4yXXwwKSs0OD4+Ml18MCkrKGNbRj4+Ml08PDIpPj4yXXwwKSlicmVhaztjW0Y+PjJdPShjW0Y+PjJdfDApKzF9aWYoKGNbRj4+Ml18MCk+PShlWyhjW1A+PjJdfDApKzQwPj4xXXwwKSlicmVha31kbyBpZihlWyhjW1I+PjJdfDApKzEyPj4xXSYxMzApe2lmKChiWyhjW1E+PjJdfDApKzMyPj4xXXwwKTwwKWJyZWFrO2NbTj4+Ml09ZnkoY1tjW24+PjJdPj4yXXwwLGNbKGNbKGNbbz4+Ml18MCkrND4+Ml18MCkrKChjW18+PjJdfDApKjIwfDApPj4yXXwwKXwwO2lmKCEoY1tOPj4yXXwwKSljW04+PjJdPWNbKGNbdj4+Ml18MCkrOD4+Ml07Y1tYPj4yXT1jW2NbTj4+Ml0+PjJdO2NbTj4+Ml09ZnkoY1tjW24+PjJdPj4yXXwwLGNbY1tSPj4yXT4+Ml18MCl8MDtpZighKGNbTj4+Ml18MCkpY1tOPj4yXT1jWyhjW3Y+PjJdfDApKzg+PjJdO2NbWT4+Ml09Y1tjW04+PjJdPj4yXTtpZihpZyhjW1g+PjJdfDAsY1tZPj4yXXwwKXwwKWJyZWFrIGN9d2hpbGUoMCk7bT1XUigxLDAsY1tfPj4yXXwwKXwwO2g9YWE7Zj1jW2grND4+Ml18QztqPWFhO2Nbaj4+Ml09Y1toPj4yXXxtO2Nbais0Pj4yXT1mfXdoaWxlKDApO2NbXz4+Ml09KGNbXz4+Ml18MCkrMX1pZighKGNbKGNbUD4+Ml18MCkrMzY+PjJdJjQwOTYpKXtpZihjWyhjW1A+PjJdfDApKzM2Pj4yXSYyNTYpe2NbTz4+Ml09MDtiW0k+PjFdPTA7YltIPj4xXT0xfWVsc2V7aj1jWyhjW1A+PjJdfDApKzI0Kzg+PjJdfDA7Y1tPPj4yXT1qO2lmKCFqKXtiYT00NjticmVhayBhfWlmKChkWyhjW08+PjJdfDApKzU1Pj4wXXwwKT4+PjImMSl7YmE9NDY7YnJlYWsgYX1iW0k+PjFdPWJbKGNbTz4+Ml18MCkrNTA+PjFdfDA7YltIPj4xXT1iWyhjW08+PjJdfDApKzUyPj4xXXwwO2FbRT4+MF09KGRbKGNbTz4+Ml18MCkrNTQ+PjBdfDApIT0wfWFbVz4+MF09MDthW1U+PjBdPTA7YVt3Pj4wXT0wO2NbRj4+Ml09MDt3aGlsZSgxKXtpZigoY1tGPj4yXXwwKT49KGVbSD4+MV18MCkpYnJlYWs7YVt1Pj4wXT0xO2Q6ZG8gaWYoKGNbRj4+Ml18MCk8KGVbKGNbUD4+Ml18MCkrMjQ+PjFdfDApPyhjW0Y+PjJdfDApPj0oZVsoY1tQPj4yXXwwKSs0Mj4+MV18MCk6MCl7Ylt4Pj4xXT1iWyhjWyhjWyhjW1A+PjJdfDApKzQ4Pj4yXXwwKSsoY1tGPj4yXTw8Mik+PjJdfDApKzEyPj4xXXwwO2s9ZVt4Pj4xXXwwO2lmKGVbeD4+MV0mZVt5Pj4xXSl7aWYoIShrJjI1NikpYnJlYWs7YVtFPj4wXT0wO2JyZWFrfWlmKCEoayYxKSl7YmE9NjE7YnJlYWt9Y1tTPj4yXT1jW2NbKGNbKGNbUD4+Ml18MCkrNDg+PjJdfDApKyhjW0Y+PjJdPDwyKT4+Ml0+PjJdO2NbXz4+Ml09KGNbRj4+Ml18MCkrMTt3aGlsZSgxKXtpZigoY1tfPj4yXXwwKT49KGVbKGNbUD4+Ml18MCkrMjQ+PjFdfDApKXtiYT02MTticmVhayBkfWlmKChjW2NbKGNbKGNbUD4+Ml18MCkrNDg+PjJdfDApKyhjW18+PjJdPDwyKT4+Ml0+PjJdfDApPT0oY1tTPj4yXXwwKSlicmVhaztjW18+PjJdPShjW18+PjJdfDApKzF9YVt1Pj4wXT0wO2JhPTYxfWVsc2UgYmE9NjE7d2hpbGUoMCk7aWYoKGJhfDApPT02MSl7YmE9MDtkbyBpZihjW08+PjJdfDApe2Nbej4+Ml09YlsoY1soY1tPPj4yXXwwKSs0Pj4yXXwwKSsoY1tGPj4yXTw8MSk+PjFdO2FbVj4+MF09YVsoY1soY1tPPj4yXXwwKSsyOD4+Ml18MCkrKGNbRj4+Ml18MCk+PjBdfDA7aWYoKGNbej4+Ml18MCkhPShiWyhjWyhjW08+PjJdfDApKzEyPj4yXXwwKSszMj4+MV18MCkpYnJlYWs7Y1t6Pj4yXT0tMX1lbHNle2Nbej4+Ml09LTE7YVtWPj4wXT0wfXdoaWxlKDApO2RvIGlmKChkW0U+PjBdfDApIT0wJihjW3o+PjJdfDApPj0wKXtpZigoY1tGPj4yXXwwKTwoZVsoY1tQPj4yXXwwKSsyND4+MV18MCkpYnJlYWs7aWYoZFsoY1soY1soY1tPPj4yXXwwKSsxMj4+Ml18MCkrND4+Ml18MCkrKGNbej4+Ml08PDQpKzEyPj4wXXwwKWJyZWFrO2FbRT4+MF09MH13aGlsZSgwKTthW0Q+PjBdPTA7Y1tfPj4yXT0wO2U6d2hpbGUoMSl7aWYoIShkW3U+PjBdfDApKWJyZWFrO2lmKChjW18+PjJdfDApPj0oZVtKPj4xXXwwKSlicmVhaztmPVdSKDEsMCxjW18+PjJdfDApfDA7aj1hYTtkbyBpZighKChmJmNbaj4+Ml18MCkhPTA/MTooQyZjW2orND4+Ml18MCkhPTApKXtjW1E+PjJdPWt5KGNbKGNbKGNbbz4+Ml18MCkrND4+Ml18MCkrKChjW18+PjJdfDApKjIwfDApPj4yXXwwKXwwO2lmKCEoZVtxPj4xXSYxOTIpKWFbdT4+MF09MDtrPWNbUT4+Ml18MDtpZigoY1t6Pj4yXXwwKT49LTEpe2lmKChkW2s+PjBdfDApIT0xNTIpYnJlYWs7aWYoKGNbKGNbUT4+Ml18MCkrMjg+PjJdfDApIT0oY1tBPj4yXXwwKSlicmVhaztpZigoYlsoY1tRPj4yXXwwKSszMj4+MV18MCkhPShjW3o+PjJdfDApKWJyZWFrfWVsc2UgaWYoS3koayxjWyhjWyhjWyhjW08+PjJdfDApKzQwPj4yXXwwKSs0Pj4yXXwwKSsoKGNbRj4+Ml18MCkqMjB8MCk+PjJdfDAsY1tBPj4yXXwwKXwwKWJyZWFrO2lmKChjW3o+PjJdfDApPDApe2JhPTg0O2JyZWFrIGV9Y1tOPj4yXT1meShjW2Nbbj4+Ml0+PjJdfDAsY1soY1soY1tvPj4yXXwwKSs0Pj4yXXwwKSsoKGNbXz4+Ml18MCkqMjB8MCk+PjJdfDApfDA7aWYoIShjW04+PjJdfDApKWNbTj4+Ml09Y1soY1t2Pj4yXXwwKSs4Pj4yXTtpZighKGlnKGNbY1tOPj4yXT4+Ml18MCxjWyhjWyhjW08+PjJdfDApKzMyPj4yXXwwKSsoY1tGPj4yXTw8Mik+PjJdfDApfDApKXtiYT04NDticmVhayBlfX13aGlsZSgwKTtjW18+PjJdPShjW18+PjJdfDApKzF9aWYoKGJhfDApPT04NCl7YmE9MDthW0Q+PjBdPTF9ZG8gaWYoZFtEPj4wXXwwKXtpZihlW3E+PjFdJjY0KWJyZWFrO2lmKGFbVz4+MF18MCl7aWYoKGRbVT4+MF1eZFtWPj4wXXwwKT09KGRbKGNbKGNbbz4+Ml18MCkrND4+Ml18MCkrKChjW18+PjJdfDApKjIwfDApKzEyPj4wXXwwKSlicmVhazthW0Q+PjBdPTA7YnJlYWt9YVtVPj4wXT1kW1Y+PjBdXmRbKGNbKGNbbz4+Ml18MCkrND4+Ml18MCkrKChjW18+PjJdfDApKjIwfDApKzEyPj4wXTtpZihhW1U+PjBdfDApe209V1IoMSwwLGNbQj4+Ml18MCl8MDtqPWNbdD4+Ml18MDtoPWo7Zj1jW2grND4+Ml18QztjW2o+PjJdPWNbaD4+Ml18bTtjW2orND4+Ml09Zn1hW1c+PjBdPTF9d2hpbGUoMCk7aWYoIShhW0Q+PjBdfDApKXtiYT05ODticmVha31pZigoY1t6Pj4yXXwwKT09LTEpYVt3Pj4wXT0xO209V1IoMSwwLGNbXz4+Ml18MCl8MDtoPWFhO2Y9Y1toKzQ+PjJdfEM7aj1hYTtjW2o+PjJdPWNbaD4+Ml18bTtjW2orND4+Ml09Zn1jW0Y+PjJdPShjW0Y+PjJdfDApKzF9ZG8gaWYoKGJhfDApPT05OCl7YmE9MDtpZigoY1tGPj4yXXwwKSE9MD8oY1tGPj4yXXwwKT49KGVbST4+MV18MCk6MClicmVhazthW0U+PjBdPTB9d2hpbGUoMCk7aWYoYVt3Pj4wXXwwKWFbRT4+MF09MX1pZihhW0U+PjBdfDApe209KGNbUD4+Ml18MCkrOHwwO2g9TDtmPWNbaCs0Pj4yXXxjW20rND4+Ml07aj1MO2Nbaj4+Ml09Y1toPj4yXXxjW20+PjJdO2Nbais0Pj4yXT1mO2NbXz4+Ml09MDt3aGlsZSgxKXtpZigoY1tfPj4yXXwwKT49KGVbSj4+MV18MCkpYnJlYWsgYjtmPVdSKDEsMCxjW18+PjJdfDApfDA7aj1hYTtkbyBpZighKChmJmNbaj4+Ml18MCkhPTA/MTooQyZjW2orND4+Ml18MCkhPTApKXtjW00+PjJdPWNbKGNbKGNbbz4+Ml18MCkrND4+Ml18MCkrKChjW18+PjJdfDApKjIwfDApPj4yXTtmPWxFKChjW24+PjJdfDApKzQ4OHwwLGNbTT4+Ml18MCl8MDtqPUc7Y1tqPj4yXT1mO2Nbais0Pj4yXT1DO2o9RztpZigoY1tqPj4yXXwwKT09MCYoY1tqKzQ+PjJdfDApPT0wPygkQShjW00+PjJdfDApfDApPT0wOjApYnJlYWs7Zj1HO2o9TDtpZigoY1tmPj4yXSZ+Y1tqPj4yXXwwKT09MD8oY1tmKzQ+PjJdJn5jW2orND4+Ml18MCk9PTA6MCl7bT1XUigxLDAsY1tfPj4yXXwwKXwwO2g9YWE7Zj1jW2grND4+Ml18QztqPWFhO2Nbaj4+Ml09Y1toPj4yXXxtO2Nbais0Pj4yXT1mfX13aGlsZSgwKTtjW18+PjJdPShjW18+PjJdfDApKzF9fX13aGlsZSgwKTtjW0I+PjJdPShjW0I+PjJdfDApKzF9aWYoKGJhfDApPT0xOCl7aWYoYVtrKzI0KzU+PjBdfDApe1g9SztZPWNbWCs0Pj4yXXwwO2JhPWFhO2NbYmE+PjJdPWNbWD4+Ml07Y1tiYSs0Pj4yXT1ZfX1lbHNlIGlmKChiYXwwKT09NDYpe2FbWj4+MF09MDtiYT1hW1o+PjBdfDA7aT1jYTtyZXR1cm4gYmF8MH1ZPWFhO2JhPUs7aWYoKGNbWT4+Ml18MCk9PShjW2JhPj4yXXwwKT8oY1tZKzQ+PjJdfDApPT0oY1tiYSs0Pj4yXXwwKTowKXthW1o+PjBdPWJbSj4+MV07YmE9YVtaPj4wXXwwO2k9Y2E7cmV0dXJuIGJhfDB9aWYoYVtFPj4wXXwwKXthW1o+PjBdPS0xO2JhPWFbWj4+MF18MDtpPWNhO3JldHVybiBiYXwwfWNbXz4+Ml09KGVbSj4+MV18MCktMTt3aGlsZSgxKXtpZigoY1tfPj4yXXwwKTw9MCl7YmE9MTIyO2JyZWFrfVk9V1IoMSwwLGNbXz4+Ml18MCl8MDtZPVFSKFl8MCxDfDAsMSwwKXwwO1g9JDtjW1g+PjJdPVk7Y1tYKzQ+PjJdPUM7WD1hYTtZPSQ7YmE9JDtrPWNbXz4+Ml18MDtpZigoY1tYPj4yXSZjW1k+PjJdfDApPT0oY1tiYT4+Ml18MCk/KGNbWCs0Pj4yXSZjW1krND4+Ml18MCk9PShjW2JhKzQ+PjJdfDApOjApe2JhPTEyMDticmVha31jW18+PjJdPWsrLTF9aWYoKGJhfDApPT0xMjApe2FbWj4+MF09aztiYT1hW1o+PjBdfDA7aT1jYTtyZXR1cm4gYmF8MH1lbHNlIGlmKChiYXwwKT09MTIyKXthW1o+PjBdPTA7YmE9YVtaPj4wXXwwO2k9Y2E7cmV0dXJuIGJhfDB9cmV0dXJuIDB9ZnVuY3Rpb24gcEUoYSxkLGYsZyl7YT1hfDA7ZD1kfDA7Zj1mfDA7Zz1nfDA7dmFyIGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MDtsPWk7aT1pKzMyfDA7aD1sKzh8MDtqPWwrMTZ8MDtuPWwrNHwwO289bDttPWwrMTR8MDtrPWwrMTJ8MDtjW2g+PjJdPWE7YltqPj4xXT1kO2Nbbj4+Ml09ZjtjW28+PjJdPWc7YT0oKChjW24+PjJdfDApLShjW28+PjJdfDApfDApKjEwMHwwKS8oY1tuPj4yXXwwKXwwO2JbbT4+MV09KChNaihhLCgoYXwwKTwwKTw8MzE+PjMxKXwwKTw8MTY+PjE2KS02NjtiW2s+PjFdPShiW2o+PjFdfDApKyhiW20+PjFdfDApKzE2O2lmKChlWyhjW2g+PjJdfDApKzQwPj4xXSYxNjM4NHwwKSE9MD8oYlsoY1toPj4yXXwwKSsxNj4+MV18MCk8KGJbaj4+MV18MCk6MCliW2o+PjFdPWJbKGNbaD4+Ml18MCkrMTY+PjFdfDA7bz0ocUUoYltqPj4xXXwwKXwwKTw8MTY+PjE2O2Jbaz4+MV09KGJbaz4+MV18MCkrbztpPWw7cmV0dXJuIGJbaz4+MV18MH1mdW5jdGlvbiBxRShhKXthPWF8MDt2YXIgYz0wLGQ9MDtkPWk7aT1pKzE2fDA7Yz1kO2JbYz4+MV09YTtpZigoYltjPj4xXXwwKTw9MTApe2E9MDthPWEmNjU1MzU7aT1kO3JldHVybiBhfDB9YT1iW2M+PjFdfDA7YT0oKE1qKGEsKChhfDApPDApPDwzMT4+MzEpfDApPDwxNj4+MTYpLTMzfDA7YT1hJjY1NTM1O2k9ZDtyZXR1cm4gYXwwfWZ1bmN0aW9uIHJFKGUsZixnLGgsail7ZT1lfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7aj1qfDA7dmFyIGs9MCxsPTAsbT0wLG49MCxvPTAscD0wLHE9MCxyPTAscz0wLHQ9MCx1PTAsdj0wLHc9MCx4PTAseT0wLHo9MCxBPTAsQj0wLEM9MCxEPTAsRT0wLEY9MCxHPTA7RD1pO2k9aSsxMjh8MDtrPUQrMTA4fDA7bD1EKzEwNHwwO209RCs0OHwwO0Y9RCs0MHwwO0E9RCsxMDB8MDtHPUQrOTZ8MDt5PUQrOTJ8MDt6PUQrODh8MDtFPUQrODR8MDt3PUQrODB8MDt2PUQrNzZ8MDtuPUQrNzJ8MDt4PUQrNjh8MDtwPUQrMzJ8MDtzPUQrMTEyfDA7Qj1EKzY0fDA7Qz1EKzYwfDA7dD1EKzI0fDA7cT1EKzE2fDA7bz1EKzU2fDA7cj1EKzh8MDt1PUQ7Y1tsPj4yXT1lO2U9bTtjW2U+PjJdPWY7Y1tlKzQ+PjJdPWc7ZT1GO2NbZT4+Ml09aDtjW2UrND4+Ml09ajtjW0E+PjJdPTA7Y1tHPj4yXT1jW2NbbD4+Ml0+PjJdO2NbeT4+Ml09Y1tjW0c+PjJdPj4yXTtjW3o+PjJdPWNbKGNbbD4+Ml18MCkrND4+Ml07Y1t4Pj4yXT1jWyhjW2w+PjJdfDApKzEyPj4yXTtjW0U+PjJdPShjWyhjW0c+PjJdfDApKzQ+PjJdfDApKzgrKChkWyhjW3g+PjJdfDApKzE2Pj4wXXwwKSo3MnwwKTtlPUY7Y1t3Pj4yXT1ORShjW3k+PjJdfDAsY1t6Pj4yXXwwLGNbZT4+Ml18MCxjW2UrND4+Ml18MCxjW0U+PjJdfDAsY1soY1tsPj4yXXwwKSs4Pj4yXXwwLHMpfDA7aWYoIShjW3c+PjJdfDApKXtjW2s+PjJdPTc7Rz1jW2s+PjJdfDA7aT1EO3JldHVybiBHfDB9YlsoY1t4Pj4yXXwwKSsxOD4+MV09MDtjWyhjW3g+PjJdfDApKzM2Pj4yXT0xMDI0O2JbKGNbeD4+Ml18MCkrNDA+PjFdPTA7YVsoY1t4Pj4yXXwwKSsyNCs0Pj4wXT0wO2Nbdj4+Ml09Y1tjW3c+PjJdPj4yXTtpZihqRShjW2NbeT4+Ml0+PjJdfDAsY1t4Pj4yXXwwLGNbdj4+Ml18MCl8MCl7VGYoY1tjW3k+PjJdPj4yXXwwLGNbdz4+Ml18MCk7Y1trPj4yXT03O0c9Y1trPj4yXXwwO2k9RDtyZXR1cm4gR3wwfUc9bTtjW0E+PjJdPU9FKGNbbD4+Ml18MCxjW0c+PjJdfDAsY1tHKzQ+PjJdfDAsLTEsLTEsMCxjW3c+PjJdfDAsYltzPj4xXXwwLG4pfDA7aWYoKGNbQT4+Ml18MCk9PTA/KEU9Y1t4Pj4yXXwwLEc9bSxGPWNbRT4+Ml0mfmNbRz4+Ml0sRz1jW0UrND4+Ml0mfmNbRys0Pj4yXSxFPXAsY1tFPj4yXT1GLGNbRSs0Pj4yXT1HLChGfDApIT0wfChHfDApIT0wKTowKXtjW0I+PjJdPTA7Y1tDPj4yXT0wO0c9dDtjW0c+PjJdPTA7Y1tHKzQ+PjJdPTA7Rz1xO2NbRz4+Ml09MDtjW0crND4+Ml09MDtpZigoY1tuPj4yXXwwKSE9MD8oZT1tLGNbQT4+Ml09T0UoY1tsPj4yXXwwLGNbZT4+Ml18MCxjW2UrND4+Ml18MCwtMSwtMSwxLGNbdz4+Ml18MCxiW3M+PjFdfDAsbil8MCxlPWNbeD4+Ml18MCxFPW0sRj1jW2UrND4+Ml0mfmNbRSs0Pj4yXSxHPXEsY1tHPj4yXT1jW2U+PjJdJn5jW0U+PjJdLGNbRys0Pj4yXT1GLEc9cSwoY1tHPj4yXXwwKT09MCYoY1tHKzQ+PjJdfDApPT0wKTowKXtjW0I+PjJdPTE7Y1tDPj4yXT0xfXdoaWxlKDEpe2lmKGNbQT4+Ml18MClicmVhaztHPXI7Y1tHPj4yXT0tMTtjW0crND4+Ml09LTE7Y1tvPj4yXT0wO3doaWxlKDEpe2lmKChjW28+PjJdfDApPj0oY1t2Pj4yXXwwKSlicmVhaztFPShjWyhjW3o+PjJdfDApKzIwPj4yXXwwKSsoKGNbKGNbKGNbdz4+Ml18MCkrND4+Ml18MCkrKChjW28+PjJdfDApKjEyfDApKzg+PjJdfDApKjQ4fDApKzMyfDA7Rz1tO2U9Y1tFKzQ+PjJdJn5jW0crND4+Ml07Rj11O2NbRj4+Ml09Y1tFPj4yXSZ+Y1tHPj4yXTtjW0YrND4+Ml09ZTtGPXU7ZT1jW0YrND4+Ml18MDtHPXQ7RT1jW0crND4+Ml18MDtpZihlPj4+MD5FPj4+MHwoKGV8MCk9PShFfDApPyhjW0Y+PjJdfDApPj4+MD4oY1tHPj4yXXwwKT4+PjA6MCk/KEY9dSxlPWNbRis0Pj4yXXwwLEc9cixFPWNbRys0Pj4yXXwwLGU+Pj4wPEU+Pj4wfCgoZXwwKT09KEV8MCk/KGNbRj4+Ml18MCk+Pj4wPChjW0c+PjJdfDApPj4+MDowKSk6MCl7RT11O0Y9Y1tFKzQ+PjJdfDA7Rz1yO2NbRz4+Ml09Y1tFPj4yXTtjW0crND4+Ml09Rn1jW28+PjJdPShjW28+PjJdfDApKzF9RT1yO0Y9Y1tFKzQ+PjJdfDA7Rz10O2NbRz4+Ml09Y1tFPj4yXTtjW0crND4+Ml09RjtHPXI7aWYoKGNbRz4+Ml18MCk9PS0xPyhjW0crND4+Ml18MCk9PS0xOjApYnJlYWs7Rj1yO0c9cDtpZigoY1tGPj4yXXwwKT09KGNbRz4+Ml18MCk/KGNbRis0Pj4yXXwwKT09KGNbRys0Pj4yXXwwKTowKWNvbnRpbnVlO0Y9cjtHPXE7aWYoKGNbRj4+Ml18MCk9PShjW0c+PjJdfDApPyhjW0YrND4+Ml18MCk9PShjW0crND4+Ml18MCk6MCljb250aW51ZTtFPW07Rz1yO0Y9bTtjW0E+PjJdPU9FKGNbbD4+Ml18MCxjW0U+PjJdfDAsY1tFKzQ+PjJdfDAsY1tHPj4yXXxjW0Y+PjJdLGNbRys0Pj4yXXxjW0YrND4+Ml0sMCxjW3c+PjJdfDAsYltzPj4xXXwwLG4pfDA7Rj1jW3g+PjJdfDA7Rz1tO2lmKCEoKGNbRj4+Ml18MCk9PShjW0c+PjJdfDApPyhjW0YrND4+Ml18MCk9PShjW0crND4+Ml18MCk6MCkpY29udGludWU7Y1tCPj4yXT0xO2lmKGNbbj4+Ml18MCljb250aW51ZTtjW0M+PjJdPTF9aWYoKGNbQT4+Ml18MCk9PTAmKGNbQj4+Ml18MCk9PTA/KEY9bSxHPW0sY1tBPj4yXT1PRShjW2w+PjJdfDAsY1tGPj4yXXwwLGNbRis0Pj4yXXwwLGNbRz4+Ml18MCxjW0crND4+Ml18MCwwLGNbdz4+Ml18MCxiW3M+PjFdfDAsbil8MCwoY1tuPj4yXXwwKT09MCk6MCljW0M+PjJdPTE7aWYoKGNbQT4+Ml18MCk9PTAmKGNbQz4+Ml18MCk9PTApe0Y9bTtHPW07Y1tBPj4yXT1PRShjW2w+PjJdfDAsY1tGPj4yXXwwLGNbRis0Pj4yXXwwLGNbRz4+Ml18MCxjW0crND4+Ml18MCwxLGNbdz4+Ml18MCxiW3M+PjFdfDAsbil8MH19aWYoY1soY1t3Pj4yXXwwKSsyOD4+Ml18MClLZChjWyhjW3c+PjJdfDApKzI0Pj4yXXwwKTtUZihjW2NbeT4+Ml0+PjJdfDAsY1t3Pj4yXXwwKTtjW2s+PjJdPWNbQT4+Ml07Rz1jW2s+PjJdfDA7aT1EO3JldHVybiBHfDB9ZnVuY3Rpb24gc0UoZixnLGgpe2Y9ZnwwO2c9Z3wwO2g9aHwwO3ZhciBqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsRD0wLEU9MCxGPTAsRz0wLEg9MCxJPTAsSj0wLEs9MDtKPWk7aT1pKzE2MHwwO2o9SisxNDR8MDtrPUorOHwwO0U9SisxNDB8MDt2PUorMTM2fDA7SD1KKzgwfDA7bT1KKzE1NnwwO2w9SisxNTR8MDtLPUorNzJ8MDt3PUorNjh8MDt1PUorNjR8MDtJPUorNjB8MDtwPUorNTZ8MDtuPUorNTJ8MDtHPUorMTUyfDA7Rj1KKzE1MHwwO0E9Sis0OHwwO3g9Sis0NHwwO3Q9Sis0MHwwO3k9SiszNnwwO0Q9SiszMnwwO3I9SjtzPUorMTQ4fDA7cT1KKzI4fDA7bz1KKzI0fDA7Qj1KKzIwfDA7ej1KKzE2fDA7Y1tqPj4yXT1mO2Y9aztjW2Y+PjJdPWc7Y1tmKzQ+PjJdPWg7YltsPj4xXT0tMTtjW0k+PjJdPTA7Y1twPj4yXT0xO2NbdT4+Ml09Y1soY1tqPj4yXXwwKSsxMj4+Ml07Y1tFPj4yXT1jW2Nbaj4+Ml0+PjJdO2NbSz4+Ml09Y1soY1tFPj4yXXwwKSs0Pj4yXTtjW3c+PjJdPShjW0s+PjJdfDApKzgrKChkWyhjW3U+PjJdfDApKzE2Pj4wXXwwKSo3MnwwKTtjW3g+PjJdPWNbKGNbdz4+Ml18MCkrMTY+PjJdO2NbQT4+Ml09Y1soY1tqPj4yXXwwKSs0Pj4yXTtkbyBpZihjWyhjW3c+PjJdfDApKzY4Pj4yXXwwKWNbdj4+Ml09Y1soY1t3Pj4yXXwwKSs2OD4+Ml07ZWxzZXtpZihkWyhjW3g+PjJdfDApKzQyPj4wXSYzMil7Y1t2Pj4yXT1jWyhjW3g+PjJdfDApKzg+PjJdO2JyZWFrfWc9SDtoPWcrNTZ8MDtkb3tjW2c+PjJdPTA7Zz1nKzR8MH13aGlsZSgoZ3wwKTwoaHwwKSk7YltIKzUwPj4xXT0xO2JbSCs1Mj4+MV09MTtjW0grND4+Ml09bDtjW0grOD4+Ml09bTthW0grNTQ+PjBdPTU7Y1tIKzEyPj4yXT1jW3g+PjJdO2JbSCs0OD4+MV09YlsoY1t4Pj4yXXwwKSs0MD4+MV18MDtiW20+PjFdPWJbKGNbeD4+Ml18MCkrMzg+PjFdfDA7YlttKzI+PjFdPTA7Y1t0Pj4yXT1jWyhjWyhjW3c+PjJdfDApKzE2Pj4yXXwwKSs4Pj4yXTtpZighKGFbKGNbdz4+Ml18MCkrMzYrMT4+MF0mMSkpY1tIKzIwPj4yXT1jW3Q+PjJdO2Nbdj4+Ml09SH13aGlsZSgwKTtiW0c+PjFdPWJbKGNbeD4+Ml18MCkrMzg+PjFdfDA7YltGPj4xXT1xRShiW0c+PjFdfDApfDA7YTpkbyBpZigoKCgoKCgoY1soY1tqPj4yXXwwKSsxNj4+Ml18MCk9PTA/KGVbKGNbRT4+Ml18MCkrNDA+PjFdJjMyfDApPT0wOjApPyhjWyhjW2NbY1tFPj4yXT4+Ml0+PjJdfDApKzI0Pj4yXSYxMDQ4NTc2fDApIT0wOjApPyhjWyhjW3c+PjJdfDApKzY4Pj4yXXwwKT09MDowKT8oYVsoY1t3Pj4yXXwwKSszNisxPj4wXSYxfDApPT0wOjApPyhkWyhjW3g+PjJdfDApKzQyPj4wXSYzMnwwKT09MDowKT8oKGRbKGNbdz4+Ml18MCkrMzYrMT4+MF18MCk+Pj4zJjF8MCk9PTA6MCk/KChkWyhjW3c+PjJdfDApKzM2KzE+PjBdfDApPj4+NSYxfDApPT0wOjApe2NbRD4+Ml09KGNbKGNbQT4+Ml18MCkrMjA+PjJdfDApKygoY1soY1tBPj4yXXwwKSsxMj4+Ml18MCkqNDh8MCk7Y1t5Pj4yXT1jWyhjW0E+PjJdfDApKzIwPj4yXTt3aGlsZSgxKXtpZihjW0k+PjJdfDApYnJlYWsgYTtpZigoY1t5Pj4yXXwwKT4+PjA+PShjW0Q+PjJdfDApPj4+MClicmVhayBhO0g9KGNbeT4+Ml18MCkrMzJ8MDtLPShjW3U+PjJdfDApKzh8MDtpZighKChjW0g+PjJdJmNbSz4+Ml18MCkhPTA/MTooY1tIKzQ+PjJdJmNbSys0Pj4yXXwwKSE9MCk/KGlFKGNbeT4+Ml18MCxjW3c+PjJdfDAsMCwwKXwwKSE9MDowKXtiWyhjW3U+PjJdfDApKzI0Pj4xXT0xO2JbKGNbdT4+Ml18MCkrNDI+PjFdPTA7Y1soY1t1Pj4yXXwwKSsyNCs4Pj4yXT0wO2JbKGNbdT4+Ml18MCkrNDA+PjFdPTE7Y1tjWyhjW3U+PjJdfDApKzQ4Pj4yXT4+Ml09Y1t5Pj4yXTtiWyhjW3U+PjJdfDApKzE4Pj4xXT0oYltGPj4xXXwwKSsoYltHPj4xXXwwKSs0O2lmKChjWyhjW3g+PjJdfDApKzEyPj4yXXwwKT09MD8oZFsoY1t4Pj4yXXwwKSs0Mj4+MF0mMnwwKT09MDowKXtLPShjW3U+PjJdfDApKzE4fDA7YltLPj4xXT0oYltLPj4xXXwwKSsyNH1pZigoYlsoY1t1Pj4yXXwwKSsxOD4+MV18MCk8MCliWyhjW3U+PjJdfDApKzE4Pj4xXT0wO2JbKGNbdT4+Ml18MCkrMjI+PjFdPTQzO209bkUoYltGPj4xXXwwLGJbKGNbdT4+Ml18MCkrMjI+PjFdfDApfDA7YlsoY1t1Pj4yXXwwKSsyMD4+MV09bTtjWyhjW3U+PjJdfDApKzM2Pj4yXT0xNjM4NDttPWs7dD0oY1t5Pj4yXXwwKSszMnwwO0g9Y1ttKzQ+PjJdfGNbdCs0Pj4yXTtLPWNbdT4+Ml18MDtjW0s+PjJdPWNbbT4+Ml18Y1t0Pj4yXTtjW0srND4+Ml09SDtjW0k+PjJdPXdFKGNbaj4+Ml18MCxjW3U+PjJdfDApfDB9Y1t5Pj4yXT0oY1t5Pj4yXXwwKSs0OH19d2hpbGUoMCk7Yjp3aGlsZSgxKXtpZighKChjW0k+PjJdfDApPT0wPyhjW3Y+PjJdfDApIT0wOjApKXtnPTU3O2JyZWFrfWlmKCEoKGNbKGNbdj4+Ml18MCkrMzY+PjJdfDApIT0wPyhCRShjWyhjW3c+PjJdfDApKzQ0Pj4yXXwwLGNbQT4+Ml18MCxjWyhjW3Y+PjJdfDApKzM2Pj4yXXwwKXwwKT09MDowKSl7YltHPj4xXT1iW2NbKGNbdj4+Ml18MCkrOD4+Ml0+PjFdfDA7YlsoY1t1Pj4yXXwwKSsyND4+MV09MDtiWyhjW3U+PjJdfDApKzI0KzI+PjFdPTA7YlsoY1t1Pj4yXXwwKSsyNCs0Pj4xXT0wO2JbKGNbdT4+Ml18MCkrNDI+PjFdPTA7YlsoY1t1Pj4yXXwwKSs0MD4+MV09MDthWyhjW3U+PjJdfDApKzE3Pj4wXT0wO2JbKGNbdT4+Ml18MCkrMTg+PjFdPTA7Rj1rO0g9Y1tGKzQ+PjJdfDA7Sz1jW3U+PjJdfDA7Y1tLPj4yXT1jW0Y+PjJdO2NbSys0Pj4yXT1IO2JbKGNbdT4+Ml18MCkrMjI+PjFdPWJbRz4+MV18MDtjWyhjW3U+PjJdfDApKzI0Kzg+PjJdPWNbdj4+Ml07Y1tuPj4yXT1DRShjW2o+PjJdfDAsY1t2Pj4yXXwwLGNbKGNbdz4+Ml18MCkrNDQ+PjJdfDApfDA7ZG8gaWYoKGNbKGNbdj4+Ml18MCkrNDQ+PjJdfDApPD0wKXtjWyhjW3U+PjJdfDApKzM2Pj4yXT0yNTY7YVsoY1t1Pj4yXXwwKSsxNz4+MF09KGNbbj4+Ml18MCkhPTA/Y1twPj4yXXwwOjA7YlsoY1t1Pj4yXXwwKSsyMD4+MV09KGJbRz4+MV18MCkrMTY7REUoY1tBPj4yXXwwLGNbdT4+Ml18MCxiW0c+PjFdfDApO2NbST4+Ml09d0UoY1tqPj4yXXwwLGNbdT4+Ml18MCl8MDtiWyhjW3U+PjJdfDApKzIyPj4xXT1iW0c+PjFdfDA7aWYoY1tJPj4yXXwwKXtnPTU3O2JyZWFrIGJ9fWVsc2V7aWYoKGRbKGNbdj4+Ml18MCkrNTU+PjBdfDApPj4+NSYxKXtjWyhjW3U+PjJdfDApKzM2Pj4yXT01NzY7Sz1yO2NbSz4+Ml09MDtjW0srND4+Ml09MH1lbHNle0g9KGNbdz4+Ml18MCkrNTZ8MDtEPWNbSD4+Ml18MDtIPWNbSCs0Pj4yXXwwO0Y9RUUoY1t2Pj4yXXwwKXwwO0s9cjtjW0s+PjJdPUQmfkY7Y1tLKzQ+PjJdPUgmfkM7Sz1yO2NbKGNbdT4+Ml18MCkrMzY+PjJdPShjW0s+PjJdfDApPT0wJihjW0srND4+Ml18MCk9PTA/NTc2OjUxMn1pZigoKGNbbj4+Ml18MCk9PTA/KGRbKGNbeD4+Ml18MCkrNDI+PjBdJjMyfDApPT0wOjApPyhjWyhjW3Y+PjJdfDApKzM2Pj4yXXwwKT09MDowKXtLPXI7aWYoISgoY1tLPj4yXXwwKT09MCYoY1tLKzQ+PjJdfDApPT0wKSlicmVhaztpZigoZFsoY1t2Pj4yXXwwKSs1NT4+MF18MCk+Pj4yJjEpYnJlYWs7aWYoKGJbKGNbdj4+Ml18MCkrNDg+PjFdfDApPj0oYlsoY1t4Pj4yXXwwKSs0MD4+MV18MCkpYnJlYWs7aWYoISgoY1s2XXwwKSE9MD8oZVsoY1tFPj4yXXwwKSs0MD4+MV0mNHwwKT09MDowKSlicmVhaztpZihlWyhjW2NbY1tFPj4yXT4+Ml0+PjJdfDApKzY0Pj4xXSY2NClicmVha31hWyhjW3U+PjJdfDApKzE3Pj4wXT0oY1tuPj4yXXwwKSE9MD9jW3A+PjJdfDA6MDtiWyhjW3U+PjJdfDApKzIwPj4xXT0oYltHPj4xXXwwKSsxKygoKGJbKGNbdj4+Ml18MCkrNDg+PjFdfDApKjE1fDApLyhiWyhjW3g+PjJdfDApKzQwPj4xXXwwKXwwKTtLPXI7aWYoKGNbSz4+Ml18MCkhPTB8KGNbSys0Pj4yXXwwKSE9MCl7YltzPj4xXT0oYltHPj4xXXwwKSsxNjtjW28+PjJdPWNbKGNbdz4+Ml18MCkrNDQ+PjJdO2NbQj4+Ml09KGNbRT4+Ml18MCkrODA7Y1txPj4yXT0wO3doaWxlKDEpe2lmKChjW3E+PjJdfDApPj0oY1soY1tCPj4yXXwwKSsxMj4+Ml18MCkpYnJlYWs7Y1t6Pj4yXT0oY1soY1tCPj4yXXwwKSsyMD4+Ml18MCkrKChjW3E+PjJdfDApKjQ4fDApO2lmKCEoRkUoY1tjW3o+PjJdPj4yXXwwLGNbbz4+Ml18MCxjW3Y+PjJdfDApfDApKWJyZWFrO2lmKChiWyhjW3o+PjJdfDApKzg+PjFdfDApPjApe2Jbcz4+MV09KGJbcz4+MV18MCkrLTE8PDE2Pj4xNjtpZihlWyhjW3o+PjJdfDApKzEyPj4xXSYxMzApYltzPj4xXT0oYltzPj4xXXwwKS0xOX1lbHNlIGJbcz4+MV09KGJbcz4+MV18MCkrKGJbKGNbej4+Ml18MCkrOD4+MV18MCk7Y1txPj4yXT0oY1txPj4yXXwwKSsxfUs9bkUoYlsoY1t1Pj4yXXwwKSsyMD4+MV18MCxiW3M+PjFdfDApfDA7YlsoY1t1Pj4yXXwwKSsyMD4+MV09S31ERShjW0E+PjJdfDAsY1t1Pj4yXXwwLGJbRz4+MV18MCk7Y1tJPj4yXT13RShjW2o+PjJdfDAsY1t1Pj4yXXwwKXwwO2JbKGNbdT4+Ml18MCkrMjI+PjFdPWJbRz4+MV18MDtpZihjW0k+PjJdfDApe2c9NTc7YnJlYWsgYn19d2hpbGUoMCk7Y1tJPj4yXT1HRShjW2o+PjJdfDAsY1t3Pj4yXXwwLGNbdj4+Ml18MCwwKXwwO2lmKGNbKGNbdz4+Ml18MCkrNjg+PjJdfDApe2c9NTc7YnJlYWt9fWNbdj4+Ml09Y1soY1t2Pj4yXXwwKSsyMD4+Ml07Y1twPj4yXT0oY1twPj4yXXwwKSsxfWlmKChnfDApPT01Nyl7aT1KO3JldHVybiBjW0k+PjJdfDB9cmV0dXJuIDB9ZnVuY3Rpb24gdEUoZixnLGgsaixrKXtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDtrPWt8MDt2YXIgbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wLEU9MCxGPTAsRz0wLEg9MCxJPTA7ST1pO2k9aSs2NzJ8MDttPUkrNjY4fDA7bj1JKzU4NHwwO289SSs1NzZ8MDtsPUkrNjY0fDA7ej1JKzY2MHwwO3U9SSs2NTZ8MDt5PUkrNjUyfDA7QT1JKzY0OHwwO0I9SSs2NDR8MDtxPUkrNjQwfDA7Rz1JKzE2OHwwO0U9SSs2MjB8MDtGPUkrMTEyfDA7Qz1JKzU2fDA7dD1JKzYxNnwwO3c9SSs2MTJ8MDt4PUkrNjA4fDA7dj1JKzYwNHwwO3M9SSs2MDB8MDtwPUkrNTk2fDA7cj1JKzU5MnwwO0Q9STtjW20+PjJdPWY7Zj1uO2NbZj4+Ml09ZztjW2YrND4+Ml09aDtnPW87Y1tnPj4yXT1qO2NbZys0Pj4yXT1rO2NbbD4+Ml09Y1tjW20+PjJdPj4yXTtjW0I+PjJdPTA7Y1t6Pj4yXT1jWyhjW20+PjJdfDApKzQ+PjJdO2NbQT4+Ml09KGNbKGNbej4+Ml18MCkrMjA+PjJdfDApKygoY1soY1t6Pj4yXXwwKSsxMj4+Ml18MCkqNDh8MCk7Y1t1Pj4yXT1jWyhjW20+PjJdfDApKzEyPj4yXTtnPUY7aD1nKzU2fDA7ZG97Y1tnPj4yXT0wO2c9Zys0fDB9d2hpbGUoKGd8MCk8KGh8MCkpO2NbdD4+Ml09KGNbKGNbbD4+Ml18MCkrND4+Ml18MCkrOCsoKGRbKGNbdT4+Ml18MCkrMTY+PjBdfDApKjcyfDApO2NbcT4+Ml09Y1soY1t0Pj4yXXwwKSs0ND4+Ml07Y1t5Pj4yXT1jWyhjW3o+PjJdfDApKzIwPj4yXTt3aGlsZSgxKXtpZighKChjW3k+PjJdfDApPj4+MDwoY1tBPj4yXXwwKT4+PjA/KGNbQj4+Ml18MCk9PTA6MCkpYnJlYWs7YTpkbyBpZigoZVsoY1t5Pj4yXXwwKSsxMj4+MV0mNTEyfDApIT0wPyhmPShjWyhjW3k+PjJdfDApKzI4Pj4yXXwwKSs0MDh8MCxsPShjW3U+PjJdfDApKzh8MCwoY1tmPj4yXSZjW2w+PjJdfDApIT0wPzE6KGNbZis0Pj4yXSZjW2wrND4+Ml18MCkhPTApOjApe2Nbdz4+Ml09Y1soY1t5Pj4yXXwwKSsyOD4+Ml07Y1t4Pj4yXT0oY1soY1t3Pj4yXXwwKSsyMD4+Ml18MCkrKChjWyhjW3c+PjJdfDApKzEyPj4yXXwwKSo0OHwwKTtjW3M+PjJdPTE7bD1jW20+PjJdfDA7Y1tFPj4yXT1jW2w+PjJdO2NbRSs0Pj4yXT1jW2wrND4+Ml07Y1tFKzg+PjJdPWNbbCs4Pj4yXTtjW0UrMTI+PjJdPWNbbCsxMj4+Ml07Y1tFKzE2Pj4yXT1jW2wrMTY+PjJdO2NbRSs4Pj4yXT0wO2NbRSsxNj4+Ml09QztjW3Y+PjJdPWNbKGNbdz4+Ml18MCkrMjA+PjJdO2I6d2hpbGUoMSl7aWYoKGNbdj4+Ml18MCk+Pj4wPj0oY1t4Pj4yXXwwKT4+PjApYnJlYWs7Zz1jW3Y+PjJdfDA7aWYoIShlWyhjW3Y+PjJdfDApKzEyPj4xXSYxMDI0KSl7aWYoKGNbZysyMD4+Ml18MCk9PShjW3E+PjJdfDApKXtjW0c+PjJdPWNbY1t6Pj4yXT4+Ml07Y1tHKzQ+PjJdPWNbej4+Ml07YVtHKzg+PjBdPTI4O2NbRysxMj4+Ml09MTtjW0crMjA+PjJdPWNbdj4+Ml07Y1tFKzQ+PjJdPUc7SD0xMX19ZWxzZXtjW0UrND4+Ml09Y1tnKzI4Pj4yXTtIPTExfWM6ZG8gaWYoKEh8MCk9PTExKXtIPTA7YltDPj4xXT0wO2g9bjtnPWNbaD4+Ml18MDtoPWNbaCs0Pj4yXXwwO2lmKGRbKGNbKGNbdD4+Ml18MCkrMTY+PjJdfDApKzQyPj4wXSYxNil7bD1vO2NbQj4+Ml09ckUoRSxnLGgsY1tsPj4yXXwwLGNbbCs0Pj4yXXwwKXwwfWVsc2UgY1tCPj4yXT1zRShFLGcsaCl8MDtpZighKGNbQj4+Ml18MCkpe2Y9bjtsPW87Y1tCPj4yXT10RShFLGNbZj4+Ml18MCxjW2YrND4+Ml18MCxjW2w+PjJdfDAsY1tsKzQ+PjJdfDApfDB9aWYoIShlW0M+PjFdfDApKXtIPTE3O2JyZWFrIGJ9aWYoY1tzPj4yXXwwKXt1RShGLEMpO2Nbcz4+Ml09MDticmVha311RShELEYpO2JbRj4+MV09MDtjW3A+PjJdPTA7d2hpbGUoMSl7aWYoKGNbcD4+Ml18MCk+PShlW0Q+PjFdfDApKWJyZWFrIGM7Y1tyPj4yXT0wO3doaWxlKDEpe2c9Y1twPj4yXXwwO2lmKChjW3I+PjJdfDApPj0oZVtDPj4xXXwwKSlicmVhaztsPUQrOCsoZzw8NCl8MDtmPUMrOCsoY1tyPj4yXTw8NCl8MDtrPWNbbD4+Ml18Y1tmPj4yXTtmPWNbbCs0Pj4yXXxjW2YrND4+Ml07bD1uRShiW0QrOCsoY1twPj4yXTw8NCkrOD4+MV18MCxiW0MrOCsoY1tyPj4yXTw8NCkrOD4+MV18MCl8MDt2RShGLGssZixsLG5FKGJbRCs4KyhjW3A+PjJdPDw0KSsxMD4+MV18MCxiW0MrOCsoY1tyPj4yXTw8NCkrMTA+PjFdfDApfDApfDA7Y1tyPj4yXT0oY1tyPj4yXXwwKSsxfWNbcD4+Ml09ZysxfX13aGlsZSgwKTtjW3Y+PjJdPShjW3Y+PjJdfDApKzQ4fWlmKChIfDApPT0xNyl7SD0wO2JbRj4+MV09MH1iWyhjW3U+PjJdfDApKzQwPj4xXT0xO2NbY1soY1t1Pj4yXXwwKSs0OD4+Ml0+PjJdPWNbeT4+Ml07Y1soY1t1Pj4yXXwwKSszNj4+Ml09ODE5MjtiWyhjW3U+PjJdfDApKzE4Pj4xXT0wO2FbKGNbdT4+Ml18MCkrMTc+PjBdPTA7bD0oY1t1Pj4yXXwwKSsyNHwwO2NbbD4+Ml09MDtjW2wrND4+Ml09MDtjW2wrOD4+Ml09MDtjW3A+PjJdPTA7d2hpbGUoMSl7aWYoY1tCPj4yXXwwKWJyZWFrIGE7aWYoKGNbcD4+Ml18MCk+PShlW0Y+PjFdfDApKWJyZWFrIGE7YlsoY1t1Pj4yXXwwKSsyMD4+MV09KGJbRis4KyhjW3A+PjJdPDw0KSs4Pj4xXXwwKSsxO2JbKGNbdT4+Ml18MCkrMjI+PjFdPWJbRis4KyhjW3A+PjJdPDw0KSsxMD4+MV18MDtrPUYrOCsoY1twPj4yXTw8NCl8MDtmPWNbays0Pj4yXXwwO2w9Y1t1Pj4yXXwwO2NbbD4+Ml09Y1trPj4yXTtjW2wrND4+Ml09ZjtjW0I+PjJdPXdFKGNbbT4+Ml18MCxjW3U+PjJdfDApfDA7Y1twPj4yXT0oY1twPj4yXXwwKSsxfX13aGlsZSgwKTtjW3k+PjJdPShjW3k+PjJdfDApKzQ4fWk9STtyZXR1cm4gY1tCPj4yXXwwfWZ1bmN0aW9uIHVFKGEsZCl7YT1hfDA7ZD1kfDA7dmFyIGY9MCxnPTAsaD0wO2Y9aTtpPWkrMTZ8MDtnPWYrNHwwO2g9ZjtjW2c+PjJdPWE7Y1toPj4yXT1kO2JbY1tnPj4yXT4+MV09YltjW2g+PjJdPj4xXXwwO1RSKChjW2c+PjJdfDApKzh8MCwoY1toPj4yXXwwKSs4fDAsKGVbY1tnPj4yXT4+MV18MCk8PDR8MCl8MDtpPWY7cmV0dXJufWZ1bmN0aW9uIHZFKGEsZCxmLGcsaCl7YT1hfDA7ZD1kfDA7Zj1mfDA7Zz1nfDA7aD1ofDA7dmFyIGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wO3I9aTtpPWkrMzJ8MDtrPXIrMTZ8MDtsPXIrMTJ8MDttPXI7bj1yKzI0fDA7bz1yKzIyfDA7cD1yKzIwfDA7cT1yKzh8MDtjW2w+PjJdPWE7YT1tO2NbYT4+Ml09ZDtjW2ErND4+Ml09ZjtiW24+PjFdPWc7YltvPj4xXT1oO2JbcD4+MV09YltjW2w+PjJdPj4xXXwwO2NbcT4+Ml09KGNbbD4+Ml18MCkrODt3aGlsZSgxKXtpZigoZVtwPj4xXXwwKTw9MCl7aj05O2JyZWFrfWlmKChiW24+PjFdfDApPD0oYlsoY1txPj4yXXwwKSs4Pj4xXXwwKT8oaD1tLGE9Y1txPj4yXXwwLGc9bSwoY1toPj4yXSZjW2E+PjJdfDApPT0oY1tnPj4yXXwwKT8oY1toKzQ+PjJdJmNbYSs0Pj4yXXwwKT09KGNbZys0Pj4yXXwwKTowKTowKWJyZWFrO2lmKChiWyhjW3E+PjJdfDApKzg+PjFdfDApPD0oYltuPj4xXXwwKT8oaD1jW3E+PjJdfDAsYT1tLGc9Y1txPj4yXXwwLChjW2g+PjJdJmNbYT4+Ml18MCk9PShjW2c+PjJdfDApPyhjW2grND4+Ml0mY1thKzQ+PjJdfDApPT0oY1tnKzQ+PjJdfDApOjApOjApe2o9NzticmVha31iW3A+PjFdPShiW3A+PjFdfDApKy0xPDwxNj4+MTY7Y1txPj4yXT0oY1txPj4yXXwwKSsxNn1pZigoanwwKT09Nyl7Y1trPj4yXT0wO3E9Y1trPj4yXXwwO2k9cjtyZXR1cm4gcXwwfWRvIGlmKChqfDApPT05KXtkPWNbbD4+Ml18MDtpZigoZVtjW2w+PjJdPj4xXXwwKTwzKXtwPWJbZD4+MV18MDtiW2Q+PjFdPXArMTw8MTY+PjE2O2NbcT4+Ml09KGNbbD4+Ml18MCkrOCsoKHAmNjU1MzUpPDw0KTtiWyhjW3E+PjJdfDApKzEwPj4xXT1iW28+PjFdfDA7YnJlYWt9Y1txPj4yXT1kKzg7YltwPj4xXT0xO3doaWxlKDEpe2Q9YlsoY1txPj4yXXwwKSs4Pj4xXXwwO2lmKChlW3A+PjFdfDApPj0oZVtjW2w+PjJdPj4xXXwwKSlicmVhaztpZigoZHwwKT4oYlsoY1tsPj4yXXwwKSs4KyhlW3A+PjFdPDw0KSs4Pj4xXXwwKSljW3E+PjJdPShjW2w+PjJdfDApKzgrKGVbcD4+MV08PDQpO2JbcD4+MV09KGJbcD4+MV18MCkrMTw8MTY+PjE2fWlmKChkfDApPD0oYltuPj4xXXwwKSl7Y1trPj4yXT0wO3E9Y1trPj4yXXwwO2k9cjtyZXR1cm4gcXwwfX13aGlsZSgwKTtsPW07bT1jW2wrND4+Ml18MDtwPWNbcT4+Ml18MDtjW3A+PjJdPWNbbD4+Ml07Y1twKzQ+PjJdPW07YlsoY1txPj4yXXwwKSs4Pj4xXT1iW24+PjFdfDA7aWYoKGJbKGNbcT4+Ml18MCkrMTA+PjFdfDApPihiW28+PjFdfDApKWJbKGNbcT4+Ml18MCkrMTA+PjFdPWJbbz4+MV18MDtjW2s+PjJdPTE7cT1jW2s+PjJdfDA7aT1yO3JldHVybiBxfDB9ZnVuY3Rpb24gd0UoYSxkKXthPWF8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTA7cT1pO2k9aSs0OHwwO2U9cSs0MHwwO2Y9cSszNnwwO2c9cSszMnwwO249cSsyOHwwO2o9cSsyNHwwO209cSsyMHwwO2g9cSsxNnwwO3A9cSsxMnwwO289cSs4fDA7bD1xKzR8MDtrPXE7Y1tmPj4yXT1hO2NbZz4+Ml09ZDtjW20+PjJdPWNbY1tmPj4yXT4+Ml07Y1toPj4yXT1jW2NbY1ttPj4yXT4+Ml0+PjJdO2lmKGNbKGNbZj4+Ml18MCkrMTY+PjJdfDApe2lmKGJbKGNbZz4+Ml18MCkrNDA+PjFdfDApe3A9Y1tnPj4yXXwwO3ZFKGNbKGNbZj4+Ml18MCkrMTY+PjJdfDAsY1twPj4yXXwwLGNbcCs0Pj4yXXwwLGJbKGNbZz4+Ml18MCkrMjA+PjFdfDAsYlsoY1tnPj4yXXwwKSsyMj4+MV18MCl8MH1jW2U+PjJdPTA7cD1jW2U+PjJdfDA7aT1xO3JldHVybiBwfDB9eEUoY1soY1ttPj4yXXwwKSs1Nj4+Ml18MCxjW2c+PjJdfDApO2Nbbj4+Ml09eUUoKGNbbT4+Ml18MCkrNTZ8MCxjW2c+PjJdfDApfDA7aWYoIShjW24+PjJdfDApKXtjW2U+PjJdPTA7cD1jW2U+PjJdfDA7aT1xO3JldHVybiBwfDB9Y1tqPj4yXT1jW2Nbbj4+Ml0+PjJdO2E6ZG8gaWYoIShjW2o+PjJdfDApKXtvPVZ3KGNbaD4+Ml18MCw3MiwwKXwwO2Nbaj4+Ml09bztjW2Nbbj4+Ml0+PjJdPW87aWYoY1tqPj4yXXwwKXt5RChjW2o+PjJdfDApO2NbKGNbaj4+Ml18MCkrNTI+PjJdPTA7YnJlYWt9Y1tlPj4yXT03O3A9Y1tlPj4yXXwwO2k9cTtyZXR1cm4gcHwwfWVsc2V7Y1tvPj4yXT0oY1tqPj4yXXwwKSs1Mjt3aGlsZSgxKXtpZighKGNbY1tvPj4yXT4+Ml18MCkpYnJlYWsgYTtjW28+PjJdPXlFKGNbbz4+Ml18MCxjW2c+PjJdfDApfDA7aWYoIShjW28+PjJdfDApKWJyZWFrIGE7Y1tsPj4yXT1jW2Nbbz4+Ml0+PjJdO2lmKCEoY1tsPj4yXXwwKSlicmVhayBhO2NbY1tvPj4yXT4+Ml09Y1soY1tsPj4yXXwwKSs1Mj4+Ml07dkQoY1toPj4yXXwwLGNbbD4+Ml18MCl9fXdoaWxlKDApO2NbcD4+Ml09ekUoY1toPj4yXXwwLGNbaj4+Ml18MCxjW2c+PjJdfDApfDA7aWYoKChjWyhjW2o+PjJdfDApKzM2Pj4yXSYxMDI0fDApPT0wPyhjW2s+PjJdPWNbKGNbaj4+Ml18MCkrMjQrOD4+Ml0sKGNbaz4+Ml18MCkhPTApOjApPyhjWyhjW2s+PjJdfDApKzQ0Pj4yXXwwKT09MDowKWNbKGNbaj4+Ml18MCkrMjQrOD4+Ml09MDtjW2U+PjJdPWNbcD4+Ml07cD1jW2U+PjJdfDA7aT1xO3JldHVybiBwfDB9ZnVuY3Rpb24geEUoYSxlKXthPWF8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTA7aD1pO2k9aSsxNnwwO2Y9aCs0fDA7Zz1oO2NbZj4+Ml09YTtjW2c+PjJdPWU7aWYoISgoY1tmPj4yXXwwKSE9MD8oY1soY1tnPj4yXXwwKSszNj4+Ml0mNTEyfDApIT0wOjApKXtpPWg7cmV0dXJufWRve2RvIGlmKChkWyhjW2Y+PjJdfDApKzE2Pj4wXXwwKT09KGRbKGNbZz4+Ml18MCkrMTY+PjBdfDApPyhjWyhjW2Y+PjJdfDApKzM2Pj4yXSY1MTJ8MCkhPTA6MCl7aWYoQUUoY1tmPj4yXXwwLGNbZz4+Ml18MCl8MCl7YlsoY1tnPj4yXXwwKSsyMD4+MV09YlsoY1tmPj4yXXwwKSsyMD4+MV18MDtiWyhjW2c+PjJdfDApKzIyPj4xXT0oYlsoY1tmPj4yXXwwKSsyMj4+MV18MCktMTticmVha31pZihBRShjW2c+PjJdfDAsY1tmPj4yXXwwKXwwKXtiWyhjW2c+PjJdfDApKzIwPj4xXT1iWyhjW2Y+PjJdfDApKzIwPj4xXXwwO2JbKGNbZz4+Ml18MCkrMjI+PjFdPShiWyhjW2Y+PjJdfDApKzIyPj4xXXwwKSsxfX13aGlsZSgwKTtjW2Y+PjJdPWNbKGNbZj4+Ml18MCkrNTI+PjJdfXdoaWxlKChjW2Y+PjJdfDApIT0wKTtpPWg7cmV0dXJufWZ1bmN0aW9uIHlFKGEsZil7YT1hfDA7Zj1mfDA7dmFyIGc9MCxoPTAsaj0wLGs9MCxsPTAsbT0wO2w9aTtpPWkrMTZ8MDtqPWwrMTJ8MDtrPWwrOHwwO2c9bCs0fDA7aD1sO2Nbaz4+Ml09YTtjW2c+PjJdPWY7Y1toPj4yXT1jW2Nbaz4+Ml0+PjJdO3doaWxlKDEpe2lmKCEoY1toPj4yXXwwKSl7Zz0xOTticmVha31pZigoZFsoY1toPj4yXXwwKSsxNj4+MF18MCk9PShkWyhjW2c+PjJdfDApKzE2Pj4wXXwwKT8oZFsoY1toPj4yXXwwKSsxNz4+MF18MCk9PShkWyhjW2c+PjJdfDApKzE3Pj4wXXwwKTowKXtpZigoKCgoY1soY1toPj4yXXwwKSszNj4+Ml0mMTYzODR8MCkhPTA/KGVbKGNbZz4+Ml18MCkrNDI+PjFdfDApPT0wOjApPyhjWyhjW2c+PjJdfDApKzM2Pj4yXSY1MTJ8MCkhPTA6MCk/KGNbKGNbZz4+Ml18MCkrMzY+PjJdJjF8MCkhPTA6MCk/KG09Y1toPj4yXXwwLGY9Y1tnPj4yXXwwLGE9Y1tnPj4yXXwwLChjW20+PjJdJmNbZj4+Ml18MCk9PShjW2E+PjJdfDApPyhjW20rND4+Ml0mY1tmKzQ+PjJdfDApPT0oY1thKzQ+PjJdfDApOjApOjApe2c9MTk7YnJlYWt9Zj1jW2g+PjJdfDA7YT1jW2c+PjJdfDA7bT1jW2g+PjJdfDA7aWYoKCgoKGNbZj4+Ml0mY1thPj4yXXwwKT09KGNbbT4+Ml18MCk/KGNbZis0Pj4yXSZjW2ErND4+Ml18MCk9PShjW20rND4+Ml18MCk6MCk/KGJbKGNbaD4+Ml18MCkrMTg+PjFdfDApPD0oYlsoY1tnPj4yXXwwKSsxOD4+MV18MCk6MCk/KGJbKGNbaD4+Ml18MCkrMjA+PjFdfDApPD0oYlsoY1tnPj4yXXwwKSsyMD4+MV18MCk6MCk/KGJbKGNbaD4+Ml18MCkrMjI+PjFdfDApPD0oYlsoY1tnPj4yXXwwKSsyMj4+MV18MCk6MCl7Zz0xNDticmVha31mPWNbaD4+Ml18MDthPWNbZz4+Ml18MDttPWNbZz4+Ml18MDtpZigoKChjW2Y+PjJdJmNbYT4+Ml18MCk9PShjW20+PjJdfDApPyhjW2YrND4+Ml0mY1thKzQ+PjJdfDApPT0oY1ttKzQ+PjJdfDApOjApPyhiWyhjW2g+PjJdfDApKzIwPj4xXXwwKT49KGJbKGNbZz4+Ml18MCkrMjA+PjFdfDApOjApPyhiWyhjW2g+PjJdfDApKzIyPj4xXXwwKT49KGJbKGNbZz4+Ml18MCkrMjI+PjFdfDApOjApe2c9MTk7YnJlYWt9fWNbaz4+Ml09KGNbaD4+Ml18MCkrNTI7Y1toPj4yXT1jW2Nbaz4+Ml0+PjJdfWlmKChnfDApPT0xNCl7Y1tqPj4yXT0wO209Y1tqPj4yXXwwO2k9bDtyZXR1cm4gbXwwfWVsc2UgaWYoKGd8MCk9PTE5KXtjW2o+PjJdPWNbaz4+Ml07bT1jW2o+PjJdfDA7aT1sO3JldHVybiBtfDB9cmV0dXJuIDB9ZnVuY3Rpb24gekUoYixkLGYpe2I9YnwwO2Q9ZHwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wO2s9aTtpPWkrMTZ8MDtoPWsrMTJ8MDtsPWsrOHwwO2c9ays0fDA7aj1rO2NbbD4+Ml09YjtjW2c+PjJdPWQ7Y1tqPj4yXT1mO3hEKGNbbD4+Ml18MCxjW2c+PjJdfDApO2Q9KGpFKGNbbD4+Ml18MCxjW2c+PjJdfDAsZVsoY1tqPj4yXXwwKSs0MD4+MV18MCl8MCkhPTA7Yj1jW2c+PjJdfDA7aWYoZCl7bD1iKzI0fDA7Y1tsPj4yXT0wO2NbbCs0Pj4yXT0wO2NbbCs4Pj4yXT0wO2NbaD4+Ml09NztsPWNbaD4+Ml18MDtpPWs7cmV0dXJuIGx8MH1mPWNbaj4+Ml18MDtkPWIrNDR8MDtkb3tjW2I+PjJdPWNbZj4+Ml07Yj1iKzR8MDtmPWYrNHwwfXdoaWxlKChifDApPChkfDApKTtUUihjWyhjW2c+PjJdfDApKzQ4Pj4yXXwwLGNbKGNbaj4+Ml18MCkrNDg+PjJdfDAsKGVbKGNbZz4+Ml18MCkrNDA+PjFdfDApPDwyfDApfDA7Yj1jW2o+PjJdfDA7aWYoIShjWyhjW2o+PjJdfDApKzM2Pj4yXSYxMDI0KSl7aWYoY1tiKzM2Pj4yXSYxNjM4NCljWyhjW2o+PjJdfDApKzI0Kzg+PjJdPTB9ZWxzZSBhW2IrMjQrND4+MF09MDtjW2g+PjJdPTA7bD1jW2g+PjJdfDA7aT1rO3JldHVybiBsfDB9ZnVuY3Rpb24gQUUoYSxkKXthPWF8MDtkPWR8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MCxsPTA7bD1pO2k9aSszMnwwO2s9bCsxNnwwO2Y9bCsxMnwwO2c9bCs4fDA7aD1sKzR8MDtqPWw7Y1tmPj4yXT1hO2NbZz4+Ml09ZDtpZigoKGVbKGNbZj4+Ml18MCkrNDA+PjFdfDApLShlWyhjW2Y+PjJdfDApKzQyPj4xXXwwKXwwKT49KChlWyhjW2c+PjJdfDApKzQwPj4xXXwwKS0oZVsoY1tnPj4yXXwwKSs0Mj4+MV18MCl8MCkpe2Nbaz4+Ml09MDtrPWNbaz4+Ml18MDtpPWw7cmV0dXJuIGt8MH1pZigoZVsoY1tnPj4yXXwwKSs0Mj4+MV18MCk+KGVbKGNbZj4+Ml18MCkrNDI+PjFdfDApKXtjW2s+PjJdPTA7az1jW2s+PjJdfDA7aT1sO3JldHVybiBrfDB9aWYoKGJbKGNbZj4+Ml18MCkrMjA+PjFdfDApPj0oYlsoY1tnPj4yXXwwKSsyMD4+MV18MCkpe2lmKChiWyhjW2Y+PjJdfDApKzIwPj4xXXwwKT4oYlsoY1tnPj4yXXwwKSsyMD4+MV18MCkpe2Nbaz4+Ml09MDtrPWNbaz4+Ml18MDtpPWw7cmV0dXJuIGt8MH1pZigoYlsoY1tmPj4yXXwwKSsyMj4+MV18MCk+KGJbKGNbZz4+Ml18MCkrMjI+PjFdfDApKXtjW2s+PjJdPTA7az1jW2s+PjJdfDA7aT1sO3JldHVybiBrfDB9fWNbaD4+Ml09KGVbKGNbZj4+Ml18MCkrNDA+PjFdfDApLTE7d2hpbGUoMSl7aWYoKGNbaD4+Ml18MCk8MCl7Zj0yMDticmVha31pZihjWyhjWyhjW2Y+PjJdfDApKzQ4Pj4yXXwwKSsoY1toPj4yXTw8Mik+PjJdfDApe2Nbaj4+Ml09KGVbKGNbZz4+Ml18MCkrNDA+PjFdfDApLTE7d2hpbGUoMSl7aWYoKGNbaj4+Ml18MCk8MClicmVhaztpZigoY1soY1soY1tnPj4yXXwwKSs0OD4+Ml18MCkrKGNbaj4+Ml08PDIpPj4yXXwwKT09KGNbKGNbKGNbZj4+Ml18MCkrNDg+PjJdfDApKyhjW2g+PjJdPDwyKT4+Ml18MCkpYnJlYWs7Y1tqPj4yXT0oY1tqPj4yXXwwKSstMX1pZigoY1tqPj4yXXwwKTwwKXtmPTE4O2JyZWFrfX1jW2g+PjJdPShjW2g+PjJdfDApKy0xfWlmKChmfDApPT0xOCl7Y1trPj4yXT0wO2s9Y1trPj4yXXwwO2k9bDtyZXR1cm4ga3wwfWVsc2UgaWYoKGZ8MCk9PTIwKXtjW2s+PjJdPTE7az1jW2s+PjJdfDA7aT1sO3JldHVybiBrfDB9cmV0dXJuIDB9ZnVuY3Rpb24gQkUoYSxlLGYpe2E9YXwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MDtwPWk7aT1pKzMyfDA7Zz1wKzI0fDA7aD1wKzIwfDA7aj1wKzE2fDA7az1wKzEyfDA7bD1wKzh8MDtuPXArNHwwO209cDtjW2g+PjJdPWE7Y1tqPj4yXT1lO2Nbaz4+Ml09Zjt3aGlsZSgxKXtpZigoZFtjW2s+PjJdPj4wXXwwKSE9MjgpYnJlYWs7aWYoIShCRShjW2g+PjJdfDAsY1tqPj4yXXwwLGNbKGNbaz4+Ml18MCkrMTI+PjJdfDApfDApKXtvPTQ7YnJlYWt9Y1trPj4yXT1jWyhjW2s+PjJdfDApKzE2Pj4yXX1pZigob3wwKT09NCl7Y1tnPj4yXT0wO289Y1tnPj4yXXwwO2k9cDtyZXR1cm4gb3wwfWNbbD4+Ml09MDtjW24+PjJdPWNbKGNbaj4+Ml18MCkrMjA+PjJdO3doaWxlKDEpe2lmKChjW2w+PjJdfDApPj0oY1soY1tqPj4yXXwwKSsxMj4+Ml18MCkpe289MTM7YnJlYWt9Y1ttPj4yXT1jW2Nbbj4+Ml0+PjJdO2lmKE1FKGNbbT4+Ml18MCxjW2s+PjJdfDAsY1toPj4yXXwwKXwwKXtpZighKGNbKGNbbT4+Ml18MCkrND4+Ml0mMSkpe289MTE7YnJlYWt9aWYoKGJbKGNbbT4+Ml18MCkrMzY+PjFdfDApPT0oY1toPj4yXXwwKSl7bz0xMTticmVha319Y1tsPj4yXT0oY1tsPj4yXXwwKSsxO2Nbbj4+Ml09KGNbbj4+Ml18MCkrNDh9aWYoKG98MCk9PTExKXtjW2c+PjJdPTE7bz1jW2c+PjJdfDA7aT1wO3JldHVybiBvfDB9ZWxzZSBpZigob3wwKT09MTMpe2NbZz4+Ml09MDtvPWNbZz4+Ml18MDtpPXA7cmV0dXJuIG98MH1yZXR1cm4gMH1mdW5jdGlvbiBDRShhLGYsZyl7YT1hfDA7Zj1mfDA7Zz1nfDA7dmFyIGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTA7cz1pO2k9aSs0OHwwO2g9cyszMnwwO2o9cysyOHwwO2s9cysyNHwwO2w9cysyMHwwO3E9cysxNnwwO209cysxMnwwO249cys4fDA7bz1zKzR8MDtwPXM7Y1tqPj4yXT1hO2Nbaz4+Ml09ZjtjW2w+PjJdPWc7aWYoKGRbKGNbaz4+Ml18MCkrNTU+PjBdfDApPj4+MiYxKXtjW2g+PjJdPTA7cj1jW2g+PjJdfDA7aT1zO3JldHVybiByfDB9Zj1jWyhjW2Nbaj4+Ml0+PjJdfDApKzg+PjJdfDA7Y1txPj4yXT1mO2lmKCFmKXtjW2g+PjJdPTA7cj1jW2g+PjJdfDA7aT1zO3JldHVybiByfDB9Y1tuPj4yXT0wO2E6d2hpbGUoMSl7aWYoKGNbbj4+Ml18MCk+PShjW2NbcT4+Ml0+PjJdfDApKXtyPTI0O2JyZWFrfWNbcD4+Ml09a3koY1soY1soY1txPj4yXXwwKSs0Pj4yXXwwKSsoKGNbbj4+Ml18MCkqMjB8MCk+PjJdfDApfDA7YjpkbyBpZigoZFtjW3A+PjJdPj4wXXwwKT09MTUyPyhjWyhjW3A+PjJdfDApKzI4Pj4yXXwwKT09KGNbbD4+Ml18MCk6MCl7aWYoKGJbKGNbcD4+Ml18MCkrMzI+PjFdfDApPDApe3I9MTA7YnJlYWsgYX1jW28+PjJdPTA7d2hpbGUoMSl7aWYoKGNbbz4+Ml18MCk+PShlWyhjW2s+PjJdfDApKzUwPj4xXXwwKSlicmVhayBiO2lmKChiWyhjW3A+PjJdfDApKzMyPj4xXXwwKT09KGJbKGNbKGNbaz4+Ml18MCkrND4+Ml18MCkrKGNbbz4+Ml08PDEpPj4xXXwwKSl7cj0xNDticmVhayBhfWNbbz4+Ml09KGNbbz4+Ml18MCkrMX19ZWxzZSByPTE2O3doaWxlKDApO2M6ZG8gaWYoKHJ8MCk9PTE2PyhyPTAsZj1jWyhjW2s+PjJdfDApKzQwPj4yXXwwLGNbbT4+Ml09ZiwoZnwwKSE9MCk6MCl7Y1tvPj4yXT0wO3doaWxlKDEpe2lmKChjW28+PjJdfDApPj0oZVsoY1trPj4yXXwwKSs1MD4+MV18MCkpYnJlYWsgYztpZigoYlsoY1soY1trPj4yXXwwKSs0Pj4yXXwwKSsoY1tvPj4yXTw8MSk+PjFdfDApPT0tMj8oS3koY1twPj4yXXwwLGNbKGNbKGNbbT4+Ml18MCkrND4+Ml18MCkrKChjW28+PjJdfDApKjIwfDApPj4yXXwwLGNbbD4+Ml18MCl8MCk9PTA6MCl7cj0yMTticmVhayBhfWNbbz4+Ml09KGNbbz4+Ml18MCkrMX19d2hpbGUoMCk7Y1tuPj4yXT0oY1tuPj4yXXwwKSsxfWlmKChyfDApPT0xMCl7Y1toPj4yXT0xO3I9Y1toPj4yXXwwO2k9cztyZXR1cm4gcnwwfWVsc2UgaWYoKHJ8MCk9PTE0KXtjW2g+PjJdPTE7cj1jW2g+PjJdfDA7aT1zO3JldHVybiByfDB9ZWxzZSBpZigocnwwKT09MjEpe2NbaD4+Ml09MTtyPWNbaD4+Ml18MDtpPXM7cmV0dXJuIHJ8MH1lbHNlIGlmKChyfDApPT0yNCl7Y1toPj4yXT0wO3I9Y1toPj4yXXwwO2k9cztyZXR1cm4gcnwwfXJldHVybiAwfWZ1bmN0aW9uIERFKGEsZCxmKXthPWF8MDtkPWR8MDtmPWZ8MDt2YXIgZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wO3M9aTtpPWkrNDh8MDtnPXMrMzZ8MDtoPXMrMzJ8MDtqPXMrNDJ8MDtxPXMrMjh8MDtyPXMrMjR8MDtvPXM7az1zKzIwfDA7bT1zKzE2fDA7bj1zKzEyfDA7bD1zKzQwfDA7cD1zKzh8MDtjW2c+PjJdPWE7Y1toPj4yXT1kO2Jbaj4+MV09Zjt0PWNbaD4+Ml18MDtmPShjW2g+PjJdfDApKzh8MDtkPX4oY1t0KzQ+PjJdfGNbZis0Pj4yXSk7YT1vO2NbYT4+Ml09fihjW3Q+PjJdfGNbZj4+Ml0pO2NbYSs0Pj4yXT1kO2JbbD4+MV09MDtjW2s+PjJdPWNbKGNbZz4+Ml18MCkrMTI+PjJdO2NbcT4+Ml09Y1soY1tnPj4yXXwwKSsyMD4+Ml07d2hpbGUoMSl7aWYoKGNbaz4+Ml18MCk8PTApYnJlYWs7aWYoZVsoY1txPj4yXXwwKSsxMD4+MV0mMilicmVhazthPShjW3E+PjJdfDApKzQwfDA7dD0oY1toPj4yXXwwKSs4fDA7ZG8gaWYoISgoY1thPj4yXSZjW3Q+PjJdfDApPT0wPyhjW2ErND4+Ml0mY1t0KzQ+PjJdfDApPT0wOjApPyhhPShjW3E+PjJdfDApKzQwfDAsdD1vLCEoKGNbYT4+Ml0mY1t0Pj4yXXwwKSE9MD8xOihjW2ErND4+Ml0mY1t0KzQ+PjJdfDApIT0wKSk6MCl7Y1ttPj4yXT0oZVsoY1toPj4yXXwwKSs0MD4+MV18MCktMTt3aGlsZSgxKXtpZigoY1ttPj4yXXwwKTwwKWJyZWFrO2Nbcj4+Ml09Y1soY1soY1toPj4yXXwwKSs0OD4+Ml18MCkrKGNbbT4+Ml08PDIpPj4yXTtpZihjW3I+PjJdfDApe2lmKChjW3I+PjJdfDApPT0oY1txPj4yXXwwKSlicmVhaztpZigoY1soY1tyPj4yXXwwKSsxNj4+Ml18MCk+PTA/KChjWyhjW2c+PjJdfDApKzIwPj4yXXwwKSsoKGNbKGNbcj4+Ml18MCkrMTY+PjJdfDApKjQ4fDApfDApPT0oY1txPj4yXXwwKTowKWJyZWFrfWNbbT4+Ml09KGNbbT4+Ml18MCkrLTF9aWYoKGNbbT4+Ml18MCk8MCl7aWYoKGJbKGNbcT4+Ml18MCkrOD4+MV18MCk8PTApe3Q9KGNbaD4+Ml18MCkrMjJ8MDtiW3Q+PjFdPShiW3Q+PjFdfDApKyhiWyhjW3E+PjJdfDApKzg+PjFdfDApO2JyZWFrfXQ9KGNbaD4+Ml18MCkrMjJ8MDtiW3Q+PjFdPShiW3Q+PjFdfDApKy0xPDwxNj4+MTY7aWYoZVsoY1txPj4yXXwwKSsxMj4+MV0mMTMwKXtjW3A+PjJdPWNbKGNbY1txPj4yXT4+Ml18MCkrMTY+PjJdO3Q9KEZ5KGNbcD4+Ml18MCxuKXwwKSE9MDtpZih0JihjW24+PjJdfDApPj0tMSYoY1tuPj4yXXwwKTw9MSljW24+PjJdPTEwO2Vsc2UgY1tuPj4yXT0yMDtpZigoYltsPj4xXXwwKTwoY1tuPj4yXXwwKSliW2w+PjFdPWNbbj4+Ml19fX13aGlsZSgwKTtjW2s+PjJdPShjW2s+PjJdfDApKy0xO2NbcT4+Ml09KGNbcT4+Ml18MCkrNDh9aWYoKGJbKGNbaD4+Ml18MCkrMjI+PjFdfDApPD0oKGJbaj4+MV18MCktKGJbbD4+MV18MCl8MCkpe2k9cztyZXR1cm59YlsoY1toPj4yXXwwKSsyMj4+MV09KGJbaj4+MV18MCktKGJbbD4+MV18MCk7aT1zO3JldHVybn1mdW5jdGlvbiBFRShhKXthPWF8MDt2YXIgZD0wLGY9MCxnPTAsaD0wLGo9MCxrPTAsbD0wLG09MDtqPWk7aT1pKzMyfDA7ZD1qKzE2fDA7Zz1qO2Y9aisxMnwwO2g9ais4fDA7Y1tkPj4yXT1hO2E9ZztjW2E+PjJdPTA7Y1thKzQ+PjJdPTA7Y1tmPj4yXT0oZVsoY1tkPj4yXXwwKSs1Mj4+MV18MCktMTt3aGlsZSgxKXtpZigoY1tmPj4yXXwwKTwwKWJyZWFrO2NbaD4+Ml09YlsoY1soY1tkPj4yXXwwKSs0Pj4yXXwwKSsoY1tmPj4yXTw8MSk+PjFdO2lmKChjW2g+PjJdfDApPj0wJihjW2g+PjJdfDApPDYzKXtsPVdSKDEsMCxjW2g+PjJdfDApfDA7bT1nO2s9Y1ttKzQ+PjJdfEM7YT1nO2NbYT4+Ml09Y1ttPj4yXXxsO2NbYSs0Pj4yXT1rfWNbZj4+Ml09KGNbZj4+Ml18MCkrLTF9bT1nO0M9Y1ttKzQ+PjJdfDA7aT1qO3JldHVybiBjW20+PjJdfDB9ZnVuY3Rpb24gRkUoYixkLGUpe2I9YnwwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MDtnPWk7aT1pKzQ4fDA7aD1nKzQ0fDA7bD1nKzQwfDA7az1nKzM2fDA7Zj1nKzh8MDtqPWc7Y1toPj4yXT1iO2NbbD4+Ml09ZDtjW2s+PjJdPWU7Y1tmPj4yXT0wO2NbZis0Pj4yXT0wO2NbZis4Pj4yXT0wO2NbZisxMj4+Ml09MDtjW2YrMTY+PjJdPTA7Y1tmKzIwPj4yXT0wO2NbZisyND4+Ml09MDtjW2orND4+Ml09Y1tsPj4yXTtjW2o+PjJdPWNbaz4+Ml07Y1tmKzQ+PjJdPTE5OTtjW2YrMjQ+PjJdPWo7d3koZixjW2g+PjJdfDApfDA7aT1nO3JldHVybiAoKGFbZisyMD4+MF18MCkhPTBeMSkmMXwwfWZ1bmN0aW9uIEdFKGYsZyxoLGope2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO3ZhciBrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wLEU9MCxGPTAsRz0wLEg9MCxJPTAsSj0wLEs9MCxMPTAsTT0wLE49MCxPPTAsUD0wLFE9MCxSPTAsUz0wO1I9aTtpPWkrMjI0fDA7bD1SKzE4MHwwO209UisxNzZ8MDtuPVIrMTcyfDA7bz1SKzE2OHwwO3A9UisyMDh8MDtTPVIrMTY0fDA7Qj1SKzE2MHwwO3E9UisxNTZ8MDtBPVIrMTUyfDA7Qz1SKzE0OHwwO2s9UisxNDR8MDtRPVIrNDh8MDtPPVI7Sz1SKzIwNnwwO0o9UisyMDR8MDtJPVIrMjAyfDA7Tj1SKzIwMHwwO009UisxOTh8MDtQPVIrNDB8MDtMPVIrMTk2fDA7SD1SKzM2fDA7Rz1SKzE5NHwwO0Y9UisxOTJ8MDtEPVIrMzJ8MDt5PVIrMjh8MDtyPVIrMTkwfDA7RT1SKzE4OHwwO3g9UisxODZ8MDt2PVIrMjR8MDt6PVIrMjB8MDtzPVIrMTZ8MDt0PVIrMTJ8MDt1PVIrOHwwO3c9UisxODR8MDtjW20+PjJdPWY7Y1tuPj4yXT1nO2Nbbz4+Ml09aDtiW3A+PjFdPWo7Y1tTPj4yXT1jW2NbbT4+Ml0+PjJdO2NbQj4+Ml09Y1tjW1M+PjJdPj4yXTtjW3E+PjJdPWNbY1tCPj4yXT4+Ml07Y1tIPj4yXT0wO2NbRD4+Ml09MDtjW3k+PjJdPTA7Y1tBPj4yXT1jWyhjW20+PjJdfDApKzEyPj4yXTtpZihhWyhjW3E+PjJdfDApKzY5Pj4wXXwwKXtjW2w+PjJdPTc7Uz1jW2w+PjJdfDA7aT1SO3JldHVybiBTfDB9aWYoY1soY1tBPj4yXXwwKSszNj4+Ml0mMzIpY1trPj4yXT0yNDtlbHNlIGNbaz4+Ml09NDQ3O2lmKChkWyhjW28+PjJdfDApKzU1Pj4wXXwwKT4+PjImMSljW2s+PjJdPWNbaz4+Ml0mLTYxO2JbSj4+MV09YlsoY1tBPj4yXXwwKSsyND4+MV18MDtiW0k+PjFdPWJbKGNbQT4+Ml18MCkrMjQrMj4+MV18MDtiW04+PjFdPWJbKGNbQT4+Ml18MCkrMjQrND4+MV18MDtiW00+PjFdPWJbKGNbQT4+Ml18MCkrNDI+PjFdfDA7YltLPj4xXT1iWyhjW0E+PjJdfDApKzQwPj4xXXwwO2NbUD4+Ml09Y1soY1tBPj4yXXwwKSszNj4+Ml07aD1jW0E+PjJdfDA7Zz1jW2grND4+Ml18MDtTPU87Y1tTPj4yXT1jW2g+PjJdO2NbUys0Pj4yXT1nO2JbTD4+MV09YlsoY1tBPj4yXXwwKSsyMj4+MV18MDtjW0M+PjJdPV9EKFEsY1soY1ttPj4yXXwwKSs0Pj4yXXwwLGNbKGNbbj4+Ml18MCkrNDQ+PjJdfDAsZVtKPj4xXXwwLGNbaz4+Ml18MCxjW28+PjJdfDApfDA7YlsoY1tBPj4yXXwwKSsxOD4+MV09MDtiW0c+PjFdPWJbY1soY1tvPj4yXXwwKSs4Pj4yXT4+MV18MDtiW0Y+PjFdPXFFKGJbRz4+MV18MCl8MDthOndoaWxlKDEpe2lmKCEoKGNbSD4+Ml18MCk9PTA/KGNbQz4+Ml18MCkhPTA6MCkpYnJlYWs7YltyPj4xXT1iWyhjW0M+PjJdfDApKzEyPj4xXXwwO2Nbdj4+Ml09MDtpZigoZVtyPj4xXXwwKSE9MjU2PyhlWyhjW0M+PjJdfDApKzEwPj4xXSYwfDApPT0wOjApaj0xMztlbHNlIGo9MTI7aWYoKGp8MCk9PTEyPyhqPTAsKEhFKGNbbz4+Ml18MCxlW0o+PjFdfDApfDApPT0wKTowKWo9MTM7ZG8gaWYoKGp8MCk9PTEzPygwLGc9KGNbQz4+Ml18MCkrMzJ8MCxTPShjW0E+PjJdfDApKzh8MCwhKChjW2c+PjJdJmNbUz4+Ml18MCkhPTA/MTooY1tnKzQ+PjJdJmNbUys0Pj4yXXwwKSE9MCkpOjApe2lmKChlWyhjW0M+PjJdfDApKzEwPj4xXSYyNTZ8MCkhPTA/KGVbKGNbQz4+Ml18MCkrMTI+PjFdfDApPT0xNjowKWJyZWFrO2lmKCgoZFsoY1tuPj4yXXwwKSszNj4+MF0mOHwwKSE9MD8oY1soY1tjW0M+PjJdPj4yXXwwKSs0Pj4yXSYxfDApPT0wOjApPyhlW3I+PjFdJjM4NHwwKSE9MDowKWJyZWFrO2NbKGNbQT4+Ml18MCkrMzY+PjJdPWNbUD4+Ml07YlsoY1tBPj4yXXwwKSsyND4+MV09YltKPj4xXXwwO2JbKGNbQT4+Ml18MCkrMjQrMj4+MV09YltJPj4xXXwwO2JbKGNbQT4+Ml18MCkrMjQrND4+MV09YltOPj4xXXwwO2JbKGNbQT4+Ml18MCkrNDA+PjFdPWJbSz4+MV18MDtpZihqRShjW3E+PjJdfDAsY1tBPj4yXXwwLChlWyhjW0E+PjJdfDApKzQwPj4xXXwwKSsxfDApfDApYnJlYWsgYTtmPWNbQz4+Ml18MDtoPShjW0E+PjJdfDApKzQwfDA7az1iW2g+PjFdfDA7YltoPj4xXT1rKzE8PDE2Pj4xNjtjWyhjWyhjW0E+PjJdfDApKzQ4Pj4yXXwwKSsoKGsmNjU1MzUpPDwyKT4+Ml09ZjtrPU87Zj0oY1tDPj4yXXwwKSszMnwwO2g9KGNbQT4+Ml18MCkrOHwwO2c9KGNbays0Pj4yXXxjW2YrND4+Ml0pJn5jW2grND4+Ml07Uz1jW0E+PjJdfDA7Y1tTPj4yXT0oY1trPj4yXXxjW2Y+PjJdKSZ+Y1toPj4yXTtjW1MrND4+Ml09ZztiOmRvIGlmKCEoZVtyPj4xXSYxKSl7aWYoZVtyPj4xXSYxMzApe2NbdD4+Ml09YlsoY1soY1tvPj4yXXwwKSs0Pj4yXXwwKSsoZVtKPj4xXTw8MSk+PjFdO1M9KGNbQT4+Ml18MCkrMzZ8MDtjW1M+PjJdPWNbUz4+Ml18MTtpZigoY1t0Pj4yXXwwKSE9LTEpe2lmKChjW3Q+PjJdfDApPD0wKWJyZWFrO2lmKGJbcD4+MV18MClicmVhaztpZigoZVtKPj4xXXwwKSE9KChlWyhjW28+PjJdfDApKzUwPj4xXXwwKS0xfDApKWJyZWFrfWlmKChjW3Q+PjJdfDApPj0wPygoZFsoY1tvPj4yXXwwKSs1NT4+MF18MCk+Pj4zJjF8MCk9PTA6MCl7Uz0oY1tBPj4yXXwwKSszNnwwO2NbUz4+Ml09Y1tTPj4yXXw2NTUzNjticmVha31TPShjW0E+PjJdfDApKzM2fDA7Y1tTPj4yXT1jW1M+PjJdfDQwOTY7YnJlYWt9aWYoZVtyPj4xXSYyNTYpe1M9KGNbQT4+Ml18MCkrMzZ8MDtjW1M+PjJdPWNbUz4+Ml18ODticmVha31qPShjW0E+PjJdfDApKzM2fDA7az1jW2o+PjJdfDA7aWYoZVtyPj4xXSYzNil7Y1tqPj4yXT1rfDM0O1M9KElFKGNbQj4+Ml18MCxjWyhjW24+PjJdfDApKzQ0Pj4yXXwwLGNbbz4+Ml18MCxlW0o+PjFdfDAsY1tDPj4yXXwwKXwwKSY2NTUzNTtiWyhjW0E+PjJdfDApKzI0KzI+PjFdPVM7Y1t5Pj4yXT1jW0M+PjJdO2NbRD4+Ml09MDtpZighKGVbKGNbQz4+Ml18MCkrMTA+PjFdJjI1NikpYnJlYWs7Y1tEPj4yXT0oY1tDPj4yXXwwKSs0ODtpZihqRShjW3E+PjJdfDAsY1tBPj4yXXwwLChlWyhjW0E+PjJdfDApKzQwPj4xXXwwKSsxfDApfDApYnJlYWsgYTtnPWNbRD4+Ml18MDtoPShjW0E+PjJdfDApKzQwfDA7Uz1iW2g+PjFdfDA7YltoPj4xXT1TKzE8PDE2Pj4xNjtjWyhjWyhjW0E+PjJdfDApKzQ4Pj4yXXwwKSsoKFMmNjU1MzUpPDwyKT4+Ml09ZztTPShjW0E+PjJdfDApKzM2fDA7Y1tTPj4yXT1jW1M+PjJdfDE2O2JbKGNbQT4+Ml18MCkrMjQrND4+MV09MTticmVha31lbHNle2Nbaj4+Ml09a3wxODtTPShJRShjW0I+PjJdfDAsY1soY1tuPj4yXXwwKSs0ND4+Ml18MCxjW28+PjJdfDAsZVtKPj4xXXwwLGNbQz4+Ml18MCl8MCkmNjU1MzU7YlsoY1tBPj4yXXwwKSsyNCs0Pj4xXT1TO2NbRD4+Ml09Y1tDPj4yXTtpZihjWyhjW0E+PjJdfDApKzM2Pj4yXSYzMilqPWNbKGNbKGNbQT4+Ml18MCkrNDg+PjJdfDApKygoZVsoY1tBPj4yXXwwKSs0MD4+MV18MCktMjw8Mik+PjJdfDA7ZWxzZSBqPTA7Y1t5Pj4yXT1qO2JyZWFrfX1lbHNle2Nbej4+Ml09Y1tjW0M+PjJdPj4yXTtTPShjW0E+PjJdfDApKzM2fDA7Y1tTPj4yXT1jW1M+PjJdfDQ7aWYoIShjWyhjW3o+PjJdfDApKzQ+PjJdJjIwNDgpKXtpZighKGNbKGNbej4+Ml18MCkrMjA+PjJdfDApKWJyZWFrO2lmKCEoY1tjWyhjW3o+PjJdfDApKzIwPj4yXT4+Ml18MCkpYnJlYWs7Uz1jW2NbKGNbej4+Ml18MCkrMjA+PjJdPj4yXXwwO2Nbdj4+Ml09KE1qKFMsKChTfDApPDApPDwzMT4+MzEpfDApPDwxNj4+MTY7YnJlYWt9Y1t2Pj4yXT00NjtjW3M+PjJdPTA7d2hpbGUoMSl7aWYoKGNbcz4+Ml18MCk+PSgoZVsoY1tBPj4yXXwwKSs0MD4+MV18MCktMXwwKSlicmVhayBiO2lmKChjWyhjWyhjW0E+PjJdfDApKzQ4Pj4yXXwwKSsoY1tzPj4yXTw8Mik+PjJdfDApIT0wPyhjW2NbKGNbKGNbQT4+Ml18MCkrNDg+PjJdfDApKyhjW3M+PjJdPDwyKT4+Ml0+PjJdfDApPT0oY1t6Pj4yXXwwKTowKWNbdj4+Ml09MDtjW3M+PjJdPShjW3M+PjJdfDApKzF9fXdoaWxlKDApO2RvIGlmKCEoY1soY1tBPj4yXXwwKSszNj4+Ml0mMikpe2c9KGNbQT4+Ml18MCkrMjR8MDtTPShiW2c+PjFdfDApKzE8PDE2Pj4xNjtiW2c+PjFdPVM7Y1t1Pj4yXT1TJjY1NTM1O2lmKChiWyhjW0M+PjJdfDApKzg+PjFdfDApPD0wPyhiWyhjWyhjW28+PjJdfDApKzQ+PjJdfDApKyhlW0o+PjFdPDwxKT4+MV18MCk+PTA6MCl7Uz0oY1tBPj4yXXwwKSsyMnwwO2JbUz4+MV09KGJbUz4+MV18MCkrKGJbKGNbQz4+Ml18MCkrOD4+MV18MCk7Uz0oY1tBPj4yXXwwKSsyMnwwO2JbUz4+MV09KGJbUz4+MV18MCktKGNbdj4+Ml18MCk7YnJlYWt9Uz0oY1tBPj4yXXwwKSsyMnwwO2JbUz4+MV09KGJbUz4+MV18MCkrKChiWyhjWyhjW28+PjJdfDApKzg+PjJdfDApKyhjW3U+PjJdPDwxKT4+MV18MCktKGJbKGNbKGNbbz4+Ml18MCkrOD4+Ml18MCkrKChjW3U+PjJdfDApLTE8PDEpPj4xXXwwKSk7aWYoZVtyPj4xXSYyNTYpe1M9KGNbQT4+Ml18MCkrMjJ8MDtiW1M+PjFdPShiW1M+PjFdfDApKzEwfX1lbHNlIEpFKGNbQj4+Ml18MCxjW20+PjJdfDAsY1t5Pj4yXXwwLGNbRD4+Ml18MCxjW0E+PjJdfDApfDA7d2hpbGUoMCk7YltFPj4xXT0oYlsoY1tBPj4yXXwwKSsyMj4+MV18MCkrMSsoKChiWyhjW28+PjJdfDApKzQ4Pj4xXXwwKSoxNXwwKS8oYlsoY1soY1tuPj4yXXwwKSsxNj4+Ml18MCkrNDA+PjFdfDApfDApO1M9bkUoYltGPj4xXXwwLGJbRT4+MV18MCl8MDtiWyhjW0E+PjJdfDApKzIwPj4xXT1TO2lmKCEoY1soY1tBPj4yXXwwKSszNj4+Ml0mMzIwKSl7Uz1uRShiWyhjW0E+PjJdfDApKzIwPj4xXXwwLChiWyhjW0E+PjJdfDApKzIyPj4xXXwwKSsxNiY2NTUzNSl8MDtiWyhjW0E+PjJdfDApKzIwPj4xXT1TfWJbeD4+MV09YlsoY1tBPj4yXXwwKSsyMj4+MV18MDtTPShjW0E+PjJdfDApKzIwfDA7YltTPj4xXT0oYltTPj4xXXwwKSsoKGJbcD4+MV18MCkrKGNbdj4+Ml18MCkpO1M9KGNbQT4+Ml18MCkrMjJ8MDtiW1M+PjFdPShiW1M+PjFdfDApKygoYltwPj4xXXwwKSsoY1t2Pj4yXXwwKSk7REUoY1soY1ttPj4yXXwwKSs0Pj4yXXwwLGNbQT4+Ml18MCxiW0c+PjFdfDApO2NbSD4+Ml09d0UoY1ttPj4yXXwwLGNbQT4+Ml18MCl8MDtpZihjWyhjW0E+PjJdfDApKzM2Pj4yXSYyKWJbKGNbQT4+Ml18MCkrMjI+PjFdPWJbTD4+MV18MDtlbHNlIGJbKGNbQT4+Ml18MCkrMjI+PjFdPWJbeD4+MV18MDtpZigoY1soY1tBPj4yXXwwKSszNj4+Ml0mMTZ8MCk9PTA/KGVbKGNbQT4+Ml18MCkrMjQ+PjFdfDApPChlWyhjW28+PjJdfDApKzUyPj4xXXwwKTowKUdFKGNbbT4+Ml18MCxjW24+PjJdfDAsY1tvPj4yXXwwLChiW3A+PjFdfDApKyhjW3Y+PjJdfDApJjY1NTM1KXwwO2JbKGNbQT4+Ml18MCkrMjI+PjFdPWJbTD4+MV18MH13aGlsZSgwKTtjW0M+PjJdPSREKFEpfDB9UT1jW08rND4+Ml18MDtTPWNbQT4+Ml18MDtjW1M+PjJdPWNbTz4+Ml07Y1tTKzQ+PjJdPVE7YlsoY1tBPj4yXXwwKSsyND4+MV09YltKPj4xXXwwO2JbKGNbQT4+Ml18MCkrMjQrMj4+MV09YltJPj4xXXwwO2JbKGNbQT4+Ml18MCkrMjQrND4+MV09YltOPj4xXXwwO2JbKGNbQT4+Ml18MCkrNDI+PjFdPWJbTT4+MV18MDtjWyhjW0E+PjJdfDApKzM2Pj4yXT1jW1A+PjJdO2JbKGNbQT4+Ml18MCkrMjI+PjFdPWJbTD4+MV18MDtiWyhjW0E+PjJdfDApKzQwPj4xXT1iW0s+PjFdfDA7aWYoKCgoKGVbSj4+MV18MCk9PShlW00+PjFdfDApPygoZVtKPj4xXXwwKSsxfDApPChlWyhjW28+PjJdfDApKzUwPj4xXXwwKTowKT8oKGRbKGNbbz4+Ml18MCkrNTU+PjBdfDApPj4+NiYxfDApPT0wOjApPyhiWyhjWyhjW28+PjJdfDApKzg+PjJdfDApKygoZVtKPj4xXXwwKSsxPDwxKT4+MV18MCk+PTQyOjApPyhTPWpFKGNbcT4+Ml18MCxjW0E+PjJdfDAsKGVbKGNbQT4+Ml18MCkrNDA+PjFdfDApKzF8MCl8MCxjW0g+PjJdPVMsKFN8MCk9PTApOjApe1E9KGNbQT4+Ml18MCkrMjR8MDtiW1E+PjFdPShiW1E+PjFdfDApKzE8PDE2Pj4xNjtRPShjW0E+PjJdfDApKzQyfDA7YltRPj4xXT0oYltRPj4xXXwwKSsxPDwxNj4+MTY7UT0oY1tBPj4yXXwwKSs0MHwwO1M9YltRPj4xXXwwO2JbUT4+MV09UysxPDwxNj4+MTY7Y1soY1soY1tBPj4yXXwwKSs0OD4+Ml18MCkrKChTJjY1NTM1KTw8Mik+PjJdPTA7Uz0oY1tBPj4yXXwwKSszNnwwO2NbUz4+Ml09Y1tTPj4yXXwzMjc2ODtiW3c+PjFdPShiWyhjWyhjW28+PjJdfDApKzg+PjJdfDApKyhlW0o+PjFdPDwxKT4+MV18MCktKGJbKGNbKGNbbz4+Ml18MCkrOD4+Ml18MCkrKChlW0o+PjFdfDApKzE8PDEpPj4xXXwwKTtTPShjW0E+PjJdfDApKzIyfDA7YltTPj4xXT0oYltTPj4xXXwwKS0oYlt3Pj4xXXwwKTtiW3c+PjFdPShiW3c+PjFdfDApKzU7R0UoY1ttPj4yXXwwLGNbbj4+Ml18MCxjW28+PjJdfDAsKGJbdz4+MV18MCkrKGJbcD4+MV18MCkmNjU1MzUpfDA7YlsoY1tBPj4yXXwwKSsyMj4+MV09YltMPj4xXXwwO2JbKGNbQT4+Ml18MCkrMjQ+PjFdPWJbSj4+MV18MDtiWyhjW0E+PjJdfDApKzQyPj4xXT1iW00+PjFdfDA7Y1soY1tBPj4yXXwwKSszNj4+Ml09Y1tQPj4yXX1jW2w+PjJdPWNbSD4+Ml07Uz1jW2w+PjJdfDA7aT1SO3JldHVybiBTfDB9ZnVuY3Rpb24gSEUoYSxlKXthPWF8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MDtoPWk7aT1pKzE2fDA7Zj1oKzEyfDA7Zz1oKzh8MDtrPWgrNHwwO2o9aDtjW2c+PjJdPWE7Y1trPj4yXT1lO2Nbaj4+Ml09YlsoY1soY1tnPj4yXXwwKSs0Pj4yXXwwKSsoY1trPj4yXTw8MSk+PjFdO2U9Y1tqPj4yXXwwO2lmKChjW2o+PjJdfDApPj0wKXtjW2Y+PjJdPWRbKGNbKGNbKGNbZz4+Ml18MCkrMTI+PjJdfDApKzQ+PjJdfDApKyhlPDw0KSsxMj4+MF07az1jW2Y+PjJdfDA7aT1oO3JldHVybiBrfDB9aWYoKGV8MCk9PS0xKXtjW2Y+PjJdPTE7az1jW2Y+PjJdfDA7aT1oO3JldHVybiBrfDB9ZWxzZXtjW2Y+PjJdPTA7az1jW2Y+PjJdfDA7aT1oO3JldHVybiBrfDB9cmV0dXJuIDB9ZnVuY3Rpb24gSUUoZixnLGgsaixrKXtmPWZ8MDtnPWd8MDtoPWh8MDtqPWp8MDtrPWt8MDt2YXIgbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wO3g9aTtpPWkrNDh8MDtsPXgrMzZ8MDttPXgrMzJ8MDtuPXgrMjh8MDtvPXgrMjR8MDtwPXgrMjB8MDtzPXgrMTZ8MDt3PXgrMTJ8MDtxPXgrNDF8MDtyPXgrNDB8MDt0PXgrOHwwO3U9eCs0fDA7dj14O2NbbD4+Ml09ZjtjW20+PjJdPWc7Y1tuPj4yXT1oO2Nbbz4+Ml09ajtjW3A+PjJdPWs7Y1tzPj4yXT1jeihjWyhjW2NbcD4+Ml0+PjJdfDApKzEyPj4yXXwwKXwwO2lmKChjW3M+PjJdfDApPCgoZVsoY1tuPj4yXXwwKSs1Mj4+MV18MCktKGNbbz4+Ml18MCl8MCkpZz1jW3M+PjJdfDA7ZWxzZSBnPShlWyhjW24+PjJdfDApKzUyPj4xXXwwKS0oY1tvPj4yXXwwKXwwO2Nbcz4+Ml09ZztjW3c+PjJdPTE7d2hpbGUoMSl7aWYoKGNbdz4+Ml18MCk+PShjW3M+PjJdfDApKXtnPTE3O2JyZWFrfWFbcj4+MF09MDtjW3U+PjJdPWNbKGNbKGNbKGNbKGNbY1twPj4yXT4+Ml18MCkrMTI+PjJdfDApKzIwPj4yXXwwKSs0Pj4yXXwwKSsoKGNbdz4+Ml18MCkqMjB8MCk+PjJdO2Nbdj4+Ml09Y1soY1tjW3A+PjJdPj4yXXwwKSsxNj4+Ml07Zz1jW3c+PjJdfDA7aj0oY1t2Pj4yXXwwKSsyMHwwO2lmKGNbKGNbdj4+Ml18MCkrND4+Ml0mMjA0OCljW3Y+PjJdPWNbKGNbKGNbY1tqPj4yXT4+Ml18MCkrND4+Ml18MCkrKGcqMjB8MCk+PjJdO2Vsc2UgY1t2Pj4yXT1jWyhjWyhjW2o+PjJdfDApKzQ+PjJdfDApKyhnKjIwfDApPj4yXTtpZigoZFtjW3U+PjJdPj4wXXwwKSE9MTUyKXtnPTE3O2JyZWFrfWlmKChjWyhjW3U+PjJdfDApKzI4Pj4yXXwwKSE9KGNbbT4+Ml18MCkpe2c9MTc7YnJlYWt9aWYoKGJbKGNbdT4+Ml18MCkrMzI+PjFdfDApIT0oYlsoY1soY1tuPj4yXXwwKSs0Pj4yXXwwKSsoKGNbdz4+Ml18MCkrKGNbbz4+Ml18MCk8PDEpPj4xXXwwKSl7Zz0xNzticmVha31pZigoZFsoY1soY1tuPj4yXXwwKSsyOD4+Ml18MCkrKChjW3c+PjJdfDApKyhjW28+PjJdfDApKT4+MF18MCkhPShkWyhjWyhjW24+PjJdfDApKzI4Pj4yXXwwKSsoY1tvPj4yXXwwKT4+MF18MCkpe2c9MTc7YnJlYWt9az1jW3Y+PjJdfDA7YVtxPj4wXT1yQihrLGV5KGNbdT4+Ml18MCl8MCl8MDthW3I+PjBdPWx5KGNbKGNbbj4+Ml18MCkrMTI+PjJdfDAsYlsoY1t1Pj4yXXwwKSszMj4+MV18MCl8MDtpZigoYVtxPj4wXXwwKSE9KGFbcj4+MF18MCkpe2c9MTc7YnJlYWt9Y1t0Pj4yXT1zQihjW2w+PjJdfDAsY1t1Pj4yXXwwLGNbdj4+Ml18MCl8MDtpZighKGNbdD4+Ml18MCkpe2c9MTc7YnJlYWt9aWYoaWcoY1tjW3Q+PjJdPj4yXXwwLGNbKGNbKGNbbj4+Ml18MCkrMzI+PjJdfDApKygoY1t3Pj4yXXwwKSsoY1tvPj4yXXwwKTw8Mik+PjJdfDApfDApe2c9MTc7YnJlYWt9Y1t3Pj4yXT0oY1t3Pj4yXXwwKSsxfWlmKChnfDApPT0xNyl7aT14O3JldHVybiBjW3c+PjJdfDB9cmV0dXJuIDB9ZnVuY3Rpb24gSkUoYSxkLGUsZixnKXthPWF8MDtkPWR8MDtlPWV8MDtmPWZ8MDtnPWd8MDt2YXIgaD0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wO289aTtpPWkrMzJ8MDtoPW8rMTZ8MDtqPW8rMTJ8MDtrPW8rOHwwO249bys0fDA7bT1vO2w9bysyOHwwO2NbbysyND4+Ml09YTtjW28rMjA+PjJdPWQ7Y1toPj4yXT1lO2Nbaj4+Ml09ZjtjW2s+PjJdPWc7Y1tuPj4yXT0wO2NbbT4+Ml09YlsoY1trPj4yXXwwKSsyMj4+MV07YltsPj4xXT1LRShjW2g+PjJdfDAsY1ttPj4yXSY2NTUzNSl8MDtiW2w+PjFdPUtFKGNbaj4+Ml18MCxiW2w+PjFdfDApfDA7aWYoKChjW2g+PjJdfDApIT0wPygoY1tqPj4yXXwwKSE9MD8oYlsoY1toPj4yXXwwKSs4Pj4xXXwwKT4wOjApOjApPyhiWyhjW2o+PjJdfDApKzg+PjFdfDApPjA6MCliW2w+PjFdPShiW2w+PjFdfDApLTIwO2NbbT4+Ml09KGNbbT4+Ml18MCktKCgoY1toPj4yXXwwKSE9MCYxKSsoKGNbaj4+Ml18MCkhPTAmMSkpO2lmKChiW2w+PjFdfDApPDEwKWJbbD4+MV09MTA7aWYoKGJbbD4+MV18MCk+PShjW20+PjJdfDApKXthPWNbbT4+Ml18MDthPWEmNjU1MzU7Zj1jW2s+PjJdfDA7Zj1mKzIyfDA7YltmPj4xXT1hO249Y1tuPj4yXXwwO2k9bztyZXR1cm4gbnwwfWNbbT4+Ml09YltsPj4xXTthPWNbbT4+Ml18MDthPWEmNjU1MzU7Zj1jW2s+PjJdfDA7Zj1mKzIyfDA7YltmPj4xXT1hO249Y1tuPj4yXXwwO2k9bztyZXR1cm4gbnwwfWZ1bmN0aW9uIEtFKGEsZCl7YT1hfDA7ZD1kfDA7dmFyIGY9MCxnPTAsaD0wLGo9MDtoPWk7aT1pKzE2fDA7Zj1oO2o9aCs2fDA7Zz1oKzR8MDtjW2Y+PjJdPWE7YltqPj4xXT1kO2JbZz4+MV09YltqPj4xXXwwO2RvIGlmKGNbZj4+Ml18MCl7ZD1jW2Y+PjJdfDA7aWYoKGJbKGNbZj4+Ml18MCkrOD4+MV18MCk8PTApe2JbZz4+MV09KGJbZz4+MV18MCkrKGJbZCs4Pj4xXXwwKTticmVha31pZighKGVbZCsxMD4+MV0mMCkpYltnPj4xXT0oYltnPj4xXXwwKS0yMH13aGlsZSgwKTtpPWg7cmV0dXJuIGJbZz4+MV18MH1mdW5jdGlvbiBMRShlLGYpe2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGo9MCxrPTA7az1pO2k9aSsxNnwwO2c9ays4fDA7aD1rKzR8MDtqPWs7Y1toPj4yXT1lO2Nbaj4+Ml09ZjtpZigoKGRbY1tqPj4yXT4+MF18MHwwKT09MTUyPyhjWyhjW2o+PjJdfDApKzI4Pj4yXXwwKT09KGNbKGNbKGNbaD4+Ml18MCkrMjQ+PjJdfDApKzQ+PjJdfDApOjApPygoT0EoY1tjWyhjW2g+PjJdfDApKzI0Pj4yXT4+Ml18MCxiWyhjW2o+PjJdfDApKzMyPj4xXXwwKXwwKTw8MTY+PjE2fDApPDA6MCl7YVsoY1toPj4yXXwwKSsyMD4+MF09MTtjW2c+PjJdPTI7ZT1jW2c+PjJdfDA7aT1rO3JldHVybiBlfDB9Y1tnPj4yXT0wO2U9Y1tnPj4yXXwwO2k9aztyZXR1cm4gZXwwfWZ1bmN0aW9uIE1FKGEsYixlKXthPWF8MDtiPWJ8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaj0wLGs9MDtrPWk7aT1pKzE2fDA7Zj1rKzEyfDA7Zz1rKzh8MDtoPWsrNHwwO2o9aztjW2c+PjJdPWE7Y1toPj4yXT1iO2Nbaj4+Ml09ZTtpZighKEt5KGNbZz4+Ml18MCxjW2g+PjJdfDAsY1tqPj4yXXwwKXwwKSl7Y1tmPj4yXT0xO2I9Y1tmPj4yXXwwO2k9aztyZXR1cm4gYnwwfWRvIGlmKChkW2NbaD4+Ml0+PjBdfDB8MCk9PTI3KXtpZigoTUUoY1tnPj4yXXwwLGNbKGNbaD4+Ml18MCkrMTI+PjJdfDAsY1tqPj4yXXwwKXwwKT09MD8oTUUoY1tnPj4yXXwwLGNbKGNbaD4+Ml18MCkrMTY+PjJdfDAsY1tqPj4yXXwwKXwwKT09MDowKWJyZWFrO2NbZj4+Ml09MTtiPWNbZj4+Ml18MDtpPWs7cmV0dXJuIGJ8MH13aGlsZSgwKTtpZigoKChkW2NbaD4+Ml0+PjBdfDB8MCk9PTM1PyhLeShjWyhjW2c+PjJdfDApKzEyPj4yXXwwLGNbKGNbaD4+Ml18MCkrMTI+PjJdfDAsY1tqPj4yXXwwKXwwKT09MDowKT8oZFtjW2c+PjJdPj4wXXwwfDApIT0zNDowKT8oZFtjW2c+PjJdPj4wXXwwfDApIT0yOTowKXtjW2Y+PjJdPTE7Yj1jW2Y+PjJdfDA7aT1rO3JldHVybiBifDB9Y1tmPj4yXT0wO2I9Y1tmPj4yXXwwO2k9aztyZXR1cm4gYnwwfWZ1bmN0aW9uIE5FKGYsZyxoLGosayxsLG0pe2Y9ZnwwO2c9Z3wwO2g9aHwwO2o9anwwO2s9a3wwO2w9bHwwO209bXwwO3ZhciBuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTAsdT0wLHY9MCx3PTAseD0wLHk9MCx6PTAsQT0wLEI9MCxDPTAsRD0wLEU9MCxGPTAsRz0wLEg9MCxJPTAsSj0wO0o9aTtpPWkrOTZ8MDtJPUorOHwwO249Sis4MHwwO289Sis3NnwwO3A9Sis3MnwwO3E9SjtyPUorNjh8MDtzPUorNjR8MDt0PUorNjB8MDt1PUorNTZ8MDt2PUorNTJ8MDt6PUorNDh8MDtEPUorNDR8MDtGPUorNDB8MDtIPUorMzZ8MDtHPUorMzJ8MDt5PUorMjh8MDtFPUorMjR8MDt3PUorODR8MDt4PUorMjB8MDtCPUorMTZ8MDtBPUorODZ8MDtDPUorMTJ8MDtjW28+PjJdPWY7Y1twPj4yXT1nO2c9cTtjW2c+PjJdPWg7Y1tnKzQ+PjJdPWo7Y1tyPj4yXT1rO2Nbcz4+Ml09bDtjW3Q+PjJdPW07Ylt3Pj4xXT0wO2Nbej4+Ml09MDtjW3U+PjJdPTA7Y1tHPj4yXT1jWyhjW3A+PjJdfDApKzIwPj4yXTt3aGlsZSgxKXtpZigoY1t1Pj4yXXwwKT49KGNbKGNbcD4+Ml18MCkrMTI+PjJdfDApKWJyZWFrO2lmKCgoKGNbKGNbRz4+Ml18MCkrMjA+PjJdfDApPT0oY1soY1tyPj4yXXwwKSs0ND4+Ml18MCk/KGc9KGNbRz4+Ml18MCkrMzJ8MCxtPXEsISgoY1tnPj4yXSZjW20+PjJdfDApIT0wPzE6KGNbZys0Pj4yXSZjW20rND4+Ml18MCkhPTApKTowKT8oZVsoY1tHPj4yXXwwKSsxMj4+MV0mLTI0MzN8MCkhPTA6MCk/KGVbKGNbRz4+Ml18MCkrMTA+PjFdJjB8MCk9PTA6MCljW3o+PjJdPShjW3o+PjJdfDApKzE7Y1t1Pj4yXT0oY1t1Pj4yXXwwKSsxO2NbRz4+Ml09KGNbRz4+Ml18MCkrNDh9Y1t5Pj4yXT0wO2lmKGNbcz4+Ml18MCl7Y1t4Pj4yXT1jW2Nbcz4+Ml0+PjJdO2NbdT4+Ml09MDt3aGlsZSgxKXtpZigoY1t1Pj4yXXwwKT49KGNbeD4+Ml18MCkpYnJlYWs7Y1tCPj4yXT1jWyhjWyhjW3M+PjJdfDApKzQ+PjJdfDApKygoY1t1Pj4yXXwwKSoyMHwwKT4+Ml07aWYoKGRbY1tCPj4yXT4+MF18MCkhPTE1MilicmVhaztpZigoY1soY1tCPj4yXXwwKSsyOD4+Ml18MCkhPShjWyhjW3I+PjJdfDApKzQ0Pj4yXXwwKSlicmVhaztjW3U+PjJdPShjW3U+PjJdfDApKzF9aWYoKGNbdT4+Ml18MCk9PShjW3g+PjJdfDApKWNbeT4+Ml09Y1t4Pj4yXX1jW0U+PjJdPXNoKGNbY1tvPj4yXT4+Ml18MCw3MisoKGNbej4+Ml18MCkqMjB8MCkrKGNbeT4+Ml08PDMpfDAsMCl8MDtpZighKGNbRT4+Ml18MCkpe0VoKGNbbz4+Ml18MCwyNTAxNixJKTtjW24+PjJdPTA7ST1jW24+PjJdfDA7aT1KO3JldHVybiBJfDB9Y1tEPj4yXT0oY1tFPj4yXXwwKSs3MjtjW0Y+PjJdPShjW0Q+PjJdfDApKygoY1t6Pj4yXXwwKSoxMnwwKTtjW0g+PjJdPShjW0Y+PjJdfDApKyhjW3k+PjJdPDwzKTtjW2NbRT4+Ml0+PjJdPWNbej4+Ml07Y1soY1tFPj4yXXwwKSs4Pj4yXT1jW3k+PjJdO2NbKGNbRT4+Ml18MCkrND4+Ml09Y1tEPj4yXTtjWyhjW0U+PjJdfDApKzEyPj4yXT1jW0Y+PjJdO2NbKGNbRT4+Ml18MCkrMTY+PjJdPWNbSD4+Ml07Y1t2Pj4yXT0wO2NbdT4+Ml09MDtjW0c+PjJdPWNbKGNbcD4+Ml18MCkrMjA+PjJdO3doaWxlKDEpe2lmKChjW3U+PjJdfDApPj0oY1soY1twPj4yXXwwKSsxMj4+Ml18MCkpYnJlYWs7aWYoKCgoY1soY1tHPj4yXXwwKSsyMD4+Ml18MCk9PShjWyhjW3I+PjJdfDApKzQ0Pj4yXXwwKT8obT0oY1tHPj4yXXwwKSszMnwwLEk9cSwhKChjW20+PjJdJmNbST4+Ml18MCkhPTA/MTooY1ttKzQ+PjJdJmNbSSs0Pj4yXXwwKSE9MCkpOjApPyhlWyhjW0c+PjJdfDApKzEyPj4xXSYtMjQzM3wwKSE9MDowKT8oZVsoY1tHPj4yXXwwKSsxMD4+MV0mMHwwKT09MDowKXtjWyhjW0Q+PjJdfDApKygoY1t2Pj4yXXwwKSoxMnwwKT4+Ml09Y1soY1tHPj4yXXwwKSsyOD4+Ml07Y1soY1tEPj4yXXwwKSsoKGNbdj4+Ml18MCkqMTJ8MCkrOD4+Ml09Y1t1Pj4yXTtJPWJbKGNbRz4+Ml18MCkrMTI+PjFdJjI1NTthW0E+PjBdPUk7YVtBPj4wXT0oZFtBPj4wXXwwKT09MT8yOkk7aWYoKGRbQT4+MF18MCk9PTY0KWFbQT4+MF09YVsoY1tHPj4yXXwwKSsxNT4+MF18MDthWyhjW0Q+PjJdfDApKygoY1t2Pj4yXXwwKSoxMnwwKSs0Pj4wXT1hW0E+PjBdfDA7aWYoKGRbQT4+MF0mNjB8MCkhPTA/KFhBKGNbKGNbY1tHPj4yXT4+Ml18MCkrMTY+PjJdfDApfDApIT0wOjApe2lmKChjW3U+PjJdfDApPDE2KWJbdz4+MV09ZVt3Pj4xXXwxPDxjW3U+PjJdO2lmKChkW0E+PjBdfDApPT0xNilhWyhjW0Q+PjJdfDApKygoY1t2Pj4yXXwwKSoxMnwwKSs0Pj4wXT04O2lmKChkW0E+PjBdfDApPT00KWFbKGNbRD4+Ml18MCkrKChjW3Y+PjJdfDApKjEyfDApKzQ+PjBdPTMyfWNbdj4+Ml09KGNbdj4+Ml18MCkrMX1jW3U+PjJdPShjW3U+PjJdfDApKzE7Y1tHPj4yXT0oY1tHPj4yXXwwKSs0OH1jW3U+PjJdPTA7d2hpbGUoMSl7aWYoKGNbdT4+Ml18MCk+PShjW3k+PjJdfDApKWJyZWFrO2NbQz4+Ml09Y1soY1soY1tzPj4yXXwwKSs0Pj4yXXwwKSsoKGNbdT4+Ml18MCkqMjB8MCk+PjJdO2NbKGNbRj4+Ml18MCkrKGNbdT4+Ml08PDMpPj4yXT1iWyhjW0M+PjJdfDApKzMyPj4xXTthWyhjW0Y+PjJdfDApKyhjW3U+PjJdPDwzKSs0Pj4wXT1hWyhjWyhjW3M+PjJdfDApKzQ+PjJdfDApKygoY1t1Pj4yXXwwKSoyMHwwKSsxMj4+MF18MDtjW3U+PjJdPShjW3U+PjJdfDApKzF9YltjW3Q+PjJdPj4xXT1iW3c+PjFdfDA7Y1tuPj4yXT1jW0U+PjJdO0k9Y1tuPj4yXXwwO2k9SjtyZXR1cm4gSXwwfWZ1bmN0aW9uIE9FKGYsZyxqLGssbCxtLG4sbyxwKXtmPWZ8MDtnPWd8MDtqPWp8MDtrPWt8MDtsPWx8MDttPW18MDtuPW58MDtvPW98MDtwPXB8MDt2YXIgcT0wLHI9MCxzPTAsdD0wLHU9MCx2PTAsdz0wLHg9MCx5PTAsej0wLEE9MCxCPTAsQz0wLEQ9MCxFPTAsRj0wLEc9MCxIPTAsST0wLEo9MCxLPTAsTD0wLE09MCxOPTAsTz0wO049aTtpPWkrOTZ8MDtHPU4rMTZ8MDtJPU4rODh8MDtKPU4rODR8MDtPPU4rOHwwO3M9Tjt0PU4rOTR8MDtLPU4rODB8MDtxPU4rOTJ8MDtyPU4rNzZ8MDtGPU4rNzJ8MDt6PU4rNjh8MDtFPU4rNjR8MDt1PU4rNjB8MDt4PU4rNTZ8MDtNPU4rNTJ8MDtMPU4rNDh8MDtBPU4rNDR8MDtCPU4rNDB8MDt5PU4rMzZ8MDtDPU4rMzJ8MDt2PU4rMjh8MDtEPU4rMjR8MDt3PU4rMjB8MDtjW0o+PjJdPWY7Zj1PO2NbZj4+Ml09ZztjW2YrND4+Ml09ajtmPXM7Y1tmPj4yXT1rO2NbZis0Pj4yXT1sO2JbdD4+MV09bTtjW0s+PjJdPW47YltxPj4xXT1vO2Nbcj4+Ml09cDtjW0Y+PjJdPWNbKGNbSj4+Ml18MCkrND4+Ml07Y1tFPj4yXT1jWyhjW0s+PjJdfDApKzE2Pj4yXTtjW00+PjJdPTA7Y1tMPj4yXT1jWyhjW0o+PjJdfDApKzEyPj4yXTtjW0E+PjJdPWNbY1tjW0o+PjJdPj4yXT4+Ml07Y1tCPj4yXT0oY1soY1tjW0o+PjJdPj4yXXwwKSs0Pj4yXXwwKSs4KygoZFsoY1tMPj4yXXwwKSsxNj4+MF18MCkqNzJ8MCk7Y1t5Pj4yXT1jW2NbSz4+Ml0+PjJdO2NbY1tyPj4yXT4+Ml09MDtmPU87bj1jW2YrND4+Ml18MDtwPWNbTD4+Ml18MDtjW3A+PjJdPWNbZj4+Ml07Y1twKzQ+PjJdPW47Y1t6Pj4yXT1jWyhjW0s+PjJdfDApKzQ+PjJdO2NbdT4+Ml09MDt3aGlsZSgxKXtpZigoY1t1Pj4yXXwwKT49KGNbeT4+Ml18MCkpYnJlYWs7Y1tDPj4yXT0oY1soY1tGPj4yXXwwKSsyMD4+Ml18MCkrKChjWyhjW3o+PjJdfDApKzg+PjJdfDApKjQ4fDApO2FbKGNbej4+Ml18MCkrNT4+MF09MDtuPShjW0M+PjJdfDApKzMyfDA7cD1zO089KGNbQz4+Ml18MCkrMzJ8MDtpZigoKGNbbj4+Ml0mY1twPj4yXXwwKT09KGNbTz4+Ml18MCk/KGNbbis0Pj4yXSZjW3ArND4+Ml18MCk9PShjW08rND4+Ml18MCk6MCk/KGVbKGNbQz4+Ml18MCkrMTI+PjFdJmVbdD4+MV18MCk9PTA6MClhWyhjW3o+PjJdfDApKzU+PjBdPTE7Y1t1Pj4yXT0oY1t1Pj4yXXwwKSsxO2Nbej4+Ml09KGNbej4+Ml18MCkrMTJ9VlIoY1tFPj4yXXwwLDAsY1t5Pj4yXTw8M3wwKXwwO2NbKGNbSz4+Ml18MCkrMjQ+PjJdPTA7Y1soY1tLPj4yXXwwKSsyMD4+Ml09MDtjWyhjW0s+PjJdfDApKzMyPj4yXT0wO2hbKGNbSz4+Ml18MCkrNDA+PjNdPTUuZSs5ODtDPShjW0s+PjJdfDApKzQ4fDA7Y1tDPj4yXT0yNTtjW0MrND4+Ml09MDtjWyhjW0s+PjJdfDApKzU2Pj4yXT0wO0M9KGNbQj4+Ml18MCkrNTZ8MDtwPWNbQys0Pj4yXXwwO089KGNbSz4+Ml18MCkrNjR8MDtjW08+PjJdPWNbQz4+Ml07Y1tPKzQ+PjJdPXA7Y1tNPj4yXT1QRShjW0E+PjJdfDAsY1soY1tCPj4yXXwwKSsxNj4+Ml18MCxjW0s+PjJdfDApfDA7aWYoY1tNPj4yXXwwKXtjW0k+PjJdPWNbTT4+Ml07Tz1jW0k+PjJdfDA7aT1OO3JldHVybiBPfDB9Y1t4Pj4yXT0tMTtjW3U+PjJdPTA7d2hpbGUoMSl7aWYoKGNbdT4+Ml18MCk+PShjW3k+PjJdfDApKWJyZWFrO2NbKGNbKGNbTD4+Ml18MCkrNDg+PjJdfDApKyhjW3U+PjJdPDwyKT4+Ml09MDtjW3U+PjJdPShjW3U+PjJdfDApKzF9YlsoY1tMPj4yXXwwKSsyNCs2Pj4xXT0wO2Nbej4+Ml09Y1soY1tLPj4yXXwwKSs0Pj4yXTtjW3U+PjJdPTA7d2hpbGUoMSl7aWYoKGNbdT4+Ml18MCk+PShjW3k+PjJdfDApKWJyZWFrO089KGNbKGNbRT4+Ml18MCkrKGNbdT4+Ml08PDMpPj4yXXwwKS0xfDA7Y1t2Pj4yXT1PO2lmKChPfDApPj0wKXtjW3c+PjJdPWNbKGNbej4+Ml18MCkrOD4+Ml07aWYoKGNbdz4+Ml18MCk8MD8xOihjW3Y+PjJdfDApPj0oY1t5Pj4yXXwwKSl7SD0xOTticmVha31pZigoY1t3Pj4yXXwwKT49KGNbKGNbRj4+Ml18MCkrMTI+PjJdfDApKXtIPTE5O2JyZWFrfWlmKGNbKGNbKGNbTD4+Ml18MCkrNDg+PjJdfDApKyhjW3Y+PjJdPDwyKT4+Ml18MCl7SD0xOTticmVha31pZighKGRbKGNbej4+Ml18MCkrNT4+MF18MCkpe0g9MTk7YnJlYWt9Y1tEPj4yXT0oY1soY1tGPj4yXXwwKSsyMD4+Ml18MCkrKChjW3c+PjJdfDApKjQ4fDApO0M9KGNbRD4+Ml18MCkrMzJ8MDtPPWNbTD4+Ml18MDtuPU87cD1jW24rND4+Ml18Y1tDKzQ+PjJdO2NbTz4+Ml09Y1tuPj4yXXxjW0M+PjJdO2NbTys0Pj4yXT1wO2NbKGNbKGNbTD4+Ml18MCkrNDg+PjJdfDApKyhjW3Y+PjJdPDwyKT4+Ml09Y1tEPj4yXTtpZigoY1t2Pj4yXXwwKT4oY1t4Pj4yXXwwKSljW3g+PjJdPWNbdj4+Ml07aWYoKGNbdj4+Ml18MCk8MTY/KGRbKGNbRT4+Ml18MCkrKGNbdT4+Ml08PDMpKzQ+PjBdfDApIT0wOjApe089KGNbTD4+Ml18MCkrMjQrNnwwO2JbTz4+MV09ZVtPPj4xXXwxPDxjW3Y+PjJdfWlmKGVbKGNbRD4+Ml18MCkrMTI+PjFdJjEpe2NbKGNbSz4+Ml18MCkrMzI+PjJdPTA7Tz0oY1tLPj4yXXwwKSs1NnwwO2NbTz4+Ml09Y1tPPj4yXSYtMjtjW2Nbcj4+Ml0+PjJdPTF9fWNbdT4+Ml09KGNbdT4+Ml18MCkrMTtjW3o+PjJdPShjW3o+PjJdfDApKzEyfWlmKChIfDApPT0xOSl7Y1tNPj4yXT0xO089Y1tBPj4yXXwwO2NbRz4+Ml09Y1tjWyhjW0I+PjJdfDApKzE2Pj4yXT4+Ml07RWgoTywzNDgwNixHKTtjW0k+PjJdPWNbTT4+Ml07Tz1jW0k+PjJdfDA7aT1OO3JldHVybiBPfDB9Tz0oY1tMPj4yXXwwKSsyNCs2fDA7YltPPj4xXT1lW08+PjFdJn5lW3E+PjFdO2JbKGNbTD4+Ml18MCkrNDA+PjFdPShjW3g+PjJdfDApKzE7Y1soY1tMPj4yXXwwKSsyND4+Ml09Y1soY1tLPj4yXXwwKSsyMD4+Ml07YVsoY1tMPj4yXXwwKSsyNCs0Pj4wXT1jWyhjW0s+PjJdfDApKzI4Pj4yXTtjWyhjW0s+PjJdfDApKzI4Pj4yXT0wO2NbKGNbTD4+Ml18MCkrMjQrOD4+Ml09Y1soY1tLPj4yXXwwKSsyND4+Ml07aWYoY1soY1tLPj4yXXwwKSszMj4+Ml18MClnPWNbKGNbSz4+Ml18MCkrOD4+Ml18MDtlbHNlIGc9MDthWyhjW0w+PjJdfDApKzI0KzU+PjBdPWc7YlsoY1tMPj4yXXwwKSsxOD4+MV09MDtnPVFFKCtoWyhjW0s+PjJdfDApKzQwPj4zXSl8MDtiWyhjW0w+PjJdfDApKzIwPj4xXT1nO2c9KGNbSz4+Ml18MCkrNDh8MDtnPU1qKGNbZz4+Ml18MCxjW2crND4+Ml18MCl8MDtiWyhjW0w+PjJdfDApKzIyPj4xXT1nO2c9KGNbTD4+Ml18MCkrMzZ8MDtqPWNbZz4+Ml18MDtpZihjWyhjW0s+PjJdfDApKzU2Pj4yXSYxKWNbZz4+Ml09anw0MDk2O2Vsc2UgY1tnPj4yXT1qJi00MDk3O2NbTT4+Ml09d0UoY1tKPj4yXXwwLGNbTD4+Ml18MCl8MDtpZihhWyhjW0w+PjJdfDApKzI0KzQ+PjBdfDApe0tkKGNbKGNbTD4+Ml18MCkrMjQrOD4+Ml18MCk7YVsoY1tMPj4yXXwwKSsyNCs0Pj4wXT0wfWNbST4+Ml09Y1tNPj4yXTtPPWNbST4+Ml18MDtpPU47cmV0dXJuIE98MH1mdW5jdGlvbiBQRShhLGIsZCl7YT1hfDA7Yj1ifDA7ZD1kfDA7dmFyIGU9MCxmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MCxtPTA7az1pO2k9aSszMnwwO2o9ays4fDA7aD1rO2U9aysyOHwwO209aysyNHwwO2w9aysyMHwwO2Y9aysxNnwwO2c9aysxMnwwO2NbZT4+Ml09YTtjW20+PjJdPWI7Y1tsPj4yXT1kO2NbZj4+Ml09Y1soVXgoY1tjW2U+PjJdPj4yXXwwLGNbbT4+Ml18MCl8MCkrOD4+Ml07Y1tnPj4yXT1ZYltjWyhjW2NbZj4+Ml0+PjJdfDApKzEyPj4yXSYyNTVdKGNbZj4+Ml18MCxjW2w+PjJdfDApfDA7ZG8gaWYoY1tnPj4yXXwwKXtpZigoY1tnPj4yXXwwKT09Nyl7bWgoY1tjW2U+PjJdPj4yXXwwKTticmVha31kPWNbZT4+Ml18MDtpZihjWyhjW2Y+PjJdfDApKzg+PjJdfDApe2Nbaj4+Ml09Y1soY1tmPj4yXXwwKSs4Pj4yXTtFaChkLDE4MzkxLGopO2JyZWFrfWVsc2V7Y1toPj4yXT1saChjW2c+PjJdfDApfDA7RWgoZCwxODM5MSxoKTticmVha319d2hpbGUoMCk7S2QoY1soY1tmPj4yXXwwKSs4Pj4yXXwwKTtjWyhjW2Y+PjJdfDApKzg+PjJdPTA7aT1rO3JldHVybiBjWyhjW2U+PjJdfDApKzM2Pj4yXXwwfWZ1bmN0aW9uIFFFKGEpe2E9K2E7dmFyIGQ9MCxlPTAsZj0wLGc9MCxqPTA7aj1pO2k9aSszMnwwO2Q9aisxOHwwO2U9ais4fDA7Zj1qO2c9aisxNnwwO2hbZT4+M109YTtpZigraFtlPj4zXTw9MS4wKXtiW2Q+PjFdPTA7Zz1iW2Q+PjFdfDA7aT1qO3JldHVybiBnfDB9aWYoK2hbZT4+M108PTIuMGU5KXthPStoW2U+PjNdO2JbZD4+MV09TWoofn5hPj4+MCwrTihhKT49MS4wPyhhPjAuMD9+fiskKCtNKGEvNDI5NDk2NzI5Ni4wKSw0Mjk0OTY3Mjk1LjApPj4+MDp+fitaKChhLSsofn5hPj4+MCkpLzQyOTQ5NjcyOTYuMCk+Pj4wKTowKXwwO2c9YltkPj4xXXwwO2k9ajtyZXR1cm4gZ3wwfWVsc2V7Y1tmPj4yXT1jW2U+PjJdO2NbZis0Pj4yXT1jW2UrND4+Ml07Zj1TUihjW2Y+PjJdfDAsY1tmKzQ+PjJdfDAsNTIpfDA7Zj1RUihmfDAsQ3wwLDEwMjIsMCl8MDtiW2c+PjFdPWY7YltkPj4xXT0oYltnPj4xXXwwKSoxMDtnPWJbZD4+MV18MDtpPWo7cmV0dXJuIGd8MH1yZXR1cm4gMH1mdW5jdGlvbiBSRShhLGUsZixnLGgpe2E9YXwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO2g9aHwwO3ZhciBqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTAscT0wLHI9MCxzPTAsdD0wO3Q9aTtpPWkrNDh8MDtyPXQrMzZ8MDtqPXQrMzJ8MDtrPXQrMjh8MDtsPXQrMjR8MDttPXQrMjB8MDtuPXQrMTZ8MDtzPXQrMTJ8MDtxPXQrOHwwO289dCs0fDA7cD10O2Nbaj4+Ml09YTtjW2s+PjJdPWU7Y1tsPj4yXT1mO2NbbT4+Ml09ZztjW24+PjJdPWg7Y1txPj4yXT1jWyhjWyhjW20+PjJdfDApKzMyPj4yXXwwKSsoY1tuPj4yXTw8Mik+PjJdO2Nbcz4+Ml09MDt3aGlsZSgxKXtpZigoY1tzPj4yXXwwKT49KGNbY1trPj4yXT4+Ml18MCkpe2o9MTA7YnJlYWt9Y1tvPj4yXT1reShjWyhjWyhjW2s+PjJdfDApKzQ+PjJdfDApKygoY1tzPj4yXXwwKSoyMHwwKT4+Ml18MCl8MDtpZigoKCgoZFtjW28+PjJdPj4wXXwwKT09MTUyPyhiWyhjW28+PjJdfDApKzMyPj4xXXwwKT09KGJbKGNbKGNbbT4+Ml18MCkrND4+Ml18MCkrKGNbbj4+Ml08PDEpPj4xXXwwKTowKT8oY1soY1tvPj4yXXwwKSsyOD4+Ml18MCk9PShjW2w+PjJdfDApOjApPyhjW3A+PjJdPWZ5KGNbaj4+Ml18MCxjWyhjWyhjW2s+PjJdfDApKzQ+PjJdfDApKygoY1tzPj4yXXwwKSoyMHwwKT4+Ml18MCl8MCwoY1twPj4yXXwwKSE9MCk6MCk/MD09KGlnKGNbY1twPj4yXT4+Ml18MCxjW3E+PjJdfDApfDApOjApe2o9ODticmVha31jW3M+PjJdPShjW3M+PjJdfDApKzF9aWYoKGp8MCk9PTgpe2Nbcj4+Ml09Y1tzPj4yXTtzPWNbcj4+Ml18MDtpPXQ7cmV0dXJuIHN8MH1lbHNlIGlmKChqfDApPT0xMCl7Y1tyPj4yXT0tMTtzPWNbcj4+Ml18MDtpPXQ7cmV0dXJuIHN8MH1yZXR1cm4gMH1cbmZ1bmN0aW9uIE9SKGEsYil7YT1hfDA7Yj1ifDA7dmFyIGQ9MCxlPTAsZj0wLGc9MCxoPTAsaT0wLGo9MCxrPTAsbD0wLG09MCxuPTAsbz0wLHA9MCxxPTAscj0wLHM9MCx0PTA7cT1hK2J8MDtkPWNbYSs0Pj4yXXwwO2RvIGlmKCEoZCYxKSl7az1jW2E+PjJdfDA7aWYoIShkJjMpKXJldHVybjtuPWErKDAtayl8MDttPWsrYnwwO2o9Y1syMjYxXXwwO2lmKG4+Pj4wPGo+Pj4wKU1hKCk7aWYoKG58MCk9PShjWzIyNjJdfDApKXtlPWErKGIrNCl8MDtkPWNbZT4+Ml18MDtpZigoZCYzfDApIT0zKXt0PW47aD1tO2JyZWFrfWNbMjI1OV09bTtjW2U+PjJdPWQmLTI7Y1thKyg0LWspPj4yXT1tfDE7Y1txPj4yXT1tO3JldHVybn1nPWs+Pj4zO2lmKGs+Pj4wPDI1Nil7Zj1jW2ErKDgtayk+PjJdfDA7ZT1jW2ErKDEyLWspPj4yXXwwO2Q9OTA2OCsoZzw8MTw8Mil8MDtpZigoZnwwKSE9KGR8MCkpe2lmKGY+Pj4wPGo+Pj4wKU1hKCk7aWYoKGNbZisxMj4+Ml18MCkhPShufDApKU1hKCl9aWYoKGV8MCk9PShmfDApKXtjWzIyNTddPWNbMjI1N10mfigxPDxnKTt0PW47aD1tO2JyZWFrfWlmKChlfDApIT0oZHwwKSl7aWYoZT4+PjA8aj4+PjApTWEoKTtkPWUrOHwwO2lmKChjW2Q+PjJdfDApPT0obnwwKSlpPWQ7ZWxzZSBNYSgpfWVsc2UgaT1lKzh8MDtjW2YrMTI+PjJdPWU7Y1tpPj4yXT1mO3Q9bjtoPW07YnJlYWt9aT1jW2ErKDI0LWspPj4yXXwwO2Y9Y1thKygxMi1rKT4+Ml18MDtkbyBpZigoZnwwKT09KG58MCkpe2Y9MTYta3wwO2U9YSsoZis0KXwwO2Q9Y1tlPj4yXXwwO2lmKCFkKXtlPWErZnwwO2Q9Y1tlPj4yXXwwO2lmKCFkKXtsPTA7YnJlYWt9fXdoaWxlKDEpe2Y9ZCsyMHwwO2c9Y1tmPj4yXXwwO2lmKGcpe2Q9ZztlPWY7Y29udGludWV9Zj1kKzE2fDA7Zz1jW2Y+PjJdfDA7aWYoIWcpYnJlYWs7ZWxzZXtkPWc7ZT1mfX1pZihlPj4+MDxqPj4+MClNYSgpO2Vsc2V7Y1tlPj4yXT0wO2w9ZDticmVha319ZWxzZXtnPWNbYSsoOC1rKT4+Ml18MDtpZihnPj4+MDxqPj4+MClNYSgpO2Q9ZysxMnwwO2lmKChjW2Q+PjJdfDApIT0obnwwKSlNYSgpO2U9Zis4fDA7aWYoKGNbZT4+Ml18MCk9PShufDApKXtjW2Q+PjJdPWY7Y1tlPj4yXT1nO2w9ZjticmVha31lbHNlIE1hKCl9d2hpbGUoMCk7aWYoaSl7ZD1jW2ErKDI4LWspPj4yXXwwO2U9OTMzMisoZDw8Mil8MDtpZigobnwwKT09KGNbZT4+Ml18MCkpe2NbZT4+Ml09bDtpZighbCl7Y1syMjU4XT1jWzIyNThdJn4oMTw8ZCk7dD1uO2g9bTticmVha319ZWxzZXtpZihpPj4+MDwoY1syMjYxXXwwKT4+PjApTWEoKTtkPWkrMTZ8MDtpZigoY1tkPj4yXXwwKT09KG58MCkpY1tkPj4yXT1sO2Vsc2UgY1tpKzIwPj4yXT1sO2lmKCFsKXt0PW47aD1tO2JyZWFrfX1mPWNbMjI2MV18MDtpZihsPj4+MDxmPj4+MClNYSgpO2NbbCsyND4+Ml09aTtkPTE2LWt8MDtlPWNbYStkPj4yXXwwO2RvIGlmKGUpaWYoZT4+PjA8Zj4+PjApTWEoKTtlbHNle2NbbCsxNj4+Ml09ZTtjW2UrMjQ+PjJdPWw7YnJlYWt9d2hpbGUoMCk7ZD1jW2ErKGQrNCk+PjJdfDA7aWYoZClpZihkPj4+MDwoY1syMjYxXXwwKT4+PjApTWEoKTtlbHNle2NbbCsyMD4+Ml09ZDtjW2QrMjQ+PjJdPWw7dD1uO2g9bTticmVha31lbHNle3Q9bjtoPW19fWVsc2V7dD1uO2g9bX19ZWxzZXt0PWE7aD1ifXdoaWxlKDApO2o9Y1syMjYxXXwwO2lmKHE+Pj4wPGo+Pj4wKU1hKCk7ZD1hKyhiKzQpfDA7ZT1jW2Q+PjJdfDA7aWYoIShlJjIpKXtpZigocXwwKT09KGNbMjI2M118MCkpe3M9KGNbMjI2MF18MCkraHwwO2NbMjI2MF09cztjWzIyNjNdPXQ7Y1t0KzQ+PjJdPXN8MTtpZigodHwwKSE9KGNbMjI2Ml18MCkpcmV0dXJuO2NbMjI2Ml09MDtjWzIyNTldPTA7cmV0dXJufWlmKChxfDApPT0oY1syMjYyXXwwKSl7cz0oY1syMjU5XXwwKStofDA7Y1syMjU5XT1zO2NbMjI2Ml09dDtjW3QrND4+Ml09c3wxO2NbdCtzPj4yXT1zO3JldHVybn1oPShlJi04KStofDA7Zz1lPj4+MztkbyBpZihlPj4+MD49MjU2KXtpPWNbYSsoYisyNCk+PjJdfDA7Zj1jW2ErKGIrMTIpPj4yXXwwO2RvIGlmKChmfDApPT0ocXwwKSl7ZT1hKyhiKzIwKXwwO2Q9Y1tlPj4yXXwwO2lmKCFkKXtlPWErKGIrMTYpfDA7ZD1jW2U+PjJdfDA7aWYoIWQpe3A9MDticmVha319d2hpbGUoMSl7Zj1kKzIwfDA7Zz1jW2Y+PjJdfDA7aWYoZyl7ZD1nO2U9Zjtjb250aW51ZX1mPWQrMTZ8MDtnPWNbZj4+Ml18MDtpZighZylicmVhaztlbHNle2Q9ZztlPWZ9fWlmKGU+Pj4wPGo+Pj4wKU1hKCk7ZWxzZXtjW2U+PjJdPTA7cD1kO2JyZWFrfX1lbHNle2c9Y1thKyhiKzgpPj4yXXwwO2lmKGc+Pj4wPGo+Pj4wKU1hKCk7ZD1nKzEyfDA7aWYoKGNbZD4+Ml18MCkhPShxfDApKU1hKCk7ZT1mKzh8MDtpZigoY1tlPj4yXXwwKT09KHF8MCkpe2NbZD4+Ml09ZjtjW2U+PjJdPWc7cD1mO2JyZWFrfWVsc2UgTWEoKX13aGlsZSgwKTtpZihpKXtkPWNbYSsoYisyOCk+PjJdfDA7ZT05MzMyKyhkPDwyKXwwO2lmKChxfDApPT0oY1tlPj4yXXwwKSl7Y1tlPj4yXT1wO2lmKCFwKXtjWzIyNThdPWNbMjI1OF0mfigxPDxkKTticmVha319ZWxzZXtpZihpPj4+MDwoY1syMjYxXXwwKT4+PjApTWEoKTtkPWkrMTZ8MDtpZigoY1tkPj4yXXwwKT09KHF8MCkpY1tkPj4yXT1wO2Vsc2UgY1tpKzIwPj4yXT1wO2lmKCFwKWJyZWFrfWU9Y1syMjYxXXwwO2lmKHA+Pj4wPGU+Pj4wKU1hKCk7Y1twKzI0Pj4yXT1pO2Q9Y1thKyhiKzE2KT4+Ml18MDtkbyBpZihkKWlmKGQ+Pj4wPGU+Pj4wKU1hKCk7ZWxzZXtjW3ArMTY+PjJdPWQ7Y1tkKzI0Pj4yXT1wO2JyZWFrfXdoaWxlKDApO2Q9Y1thKyhiKzIwKT4+Ml18MDtpZihkKWlmKGQ+Pj4wPChjWzIyNjFdfDApPj4+MClNYSgpO2Vsc2V7Y1twKzIwPj4yXT1kO2NbZCsyND4+Ml09cDticmVha319fWVsc2V7Zj1jW2ErKGIrOCk+PjJdfDA7ZT1jW2ErKGIrMTIpPj4yXXwwO2Q9OTA2OCsoZzw8MTw8Mil8MDtpZigoZnwwKSE9KGR8MCkpe2lmKGY+Pj4wPGo+Pj4wKU1hKCk7aWYoKGNbZisxMj4+Ml18MCkhPShxfDApKU1hKCl9aWYoKGV8MCk9PShmfDApKXtjWzIyNTddPWNbMjI1N10mfigxPDxnKTticmVha31pZigoZXwwKSE9KGR8MCkpe2lmKGU+Pj4wPGo+Pj4wKU1hKCk7ZD1lKzh8MDtpZigoY1tkPj4yXXwwKT09KHF8MCkpbz1kO2Vsc2UgTWEoKX1lbHNlIG89ZSs4fDA7Y1tmKzEyPj4yXT1lO2Nbbz4+Ml09Zn13aGlsZSgwKTtjW3QrND4+Ml09aHwxO2NbdCtoPj4yXT1oO2lmKCh0fDApPT0oY1syMjYyXXwwKSl7Y1syMjU5XT1oO3JldHVybn19ZWxzZXtjW2Q+PjJdPWUmLTI7Y1t0KzQ+PjJdPWh8MTtjW3QraD4+Ml09aH1kPWg+Pj4zO2lmKGg+Pj4wPDI1Nil7ZT1kPDwxO2c9OTA2OCsoZTw8Mil8MDtmPWNbMjI1N118MDtkPTE8PGQ7aWYoZiZkKXtkPTkwNjgrKGUrMjw8Mil8MDtlPWNbZD4+Ml18MDtpZihlPj4+MDwoY1syMjYxXXwwKT4+PjApTWEoKTtlbHNle3I9ZDtzPWV9fWVsc2V7Y1syMjU3XT1mfGQ7cj05MDY4KyhlKzI8PDIpfDA7cz1nfWNbcj4+Ml09dDtjW3MrMTI+PjJdPXQ7Y1t0Kzg+PjJdPXM7Y1t0KzEyPj4yXT1nO3JldHVybn1kPWg+Pj44O2lmKGQpaWYoaD4+PjA+MTY3NzcyMTUpZz0zMTtlbHNle3I9KGQrMTA0ODMyMHwwKT4+PjE2Jjg7cz1kPDxyO3E9KHMrNTIwMTkyfDApPj4+MTYmNDtzPXM8PHE7Zz0ocysyNDU3NjB8MCk+Pj4xNiYyO2c9MTQtKHF8cnxnKSsoczw8Zz4+PjE1KXwwO2c9aD4+PihnKzd8MCkmMXxnPDwxfWVsc2UgZz0wO2Q9OTMzMisoZzw8Mil8MDtjW3QrMjg+PjJdPWc7Y1t0KzIwPj4yXT0wO2NbdCsxNj4+Ml09MDtlPWNbMjI1OF18MDtmPTE8PGc7aWYoIShlJmYpKXtjWzIyNThdPWV8ZjtjW2Q+PjJdPXQ7Y1t0KzI0Pj4yXT1kO2NbdCsxMj4+Ml09dDtjW3QrOD4+Ml09dDtyZXR1cm59ZD1jW2Q+PjJdfDA7YTpkbyBpZigoY1tkKzQ+PjJdJi04fDApIT0oaHwwKSl7Zz1oPDwoKGd8MCk9PTMxPzA6MjUtKGc+Pj4xKXwwKTt3aGlsZSgxKXtlPWQrMTYrKGc+Pj4zMTw8Mil8MDtmPWNbZT4+Ml18MDtpZighZilicmVhaztpZigoY1tmKzQ+PjJdJi04fDApPT0oaHwwKSl7ZD1mO2JyZWFrIGF9ZWxzZXtnPWc8PDE7ZD1mfX1pZihlPj4+MDwoY1syMjYxXXwwKT4+PjApTWEoKTtjW2U+PjJdPXQ7Y1t0KzI0Pj4yXT1kO2NbdCsxMj4+Ml09dDtjW3QrOD4+Ml09dDtyZXR1cm59d2hpbGUoMCk7ZT1kKzh8MDtmPWNbZT4+Ml18MDtzPWNbMjI2MV18MDtpZighKGY+Pj4wPj1zPj4+MCZkPj4+MD49cz4+PjApKU1hKCk7Y1tmKzEyPj4yXT10O2NbZT4+Ml09dDtjW3QrOD4+Ml09ZjtjW3QrMTI+PjJdPWQ7Y1t0KzI0Pj4yXT0wO3JldHVybn1mdW5jdGlvbiBQUigpe31mdW5jdGlvbiBRUihhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtkPWItZC0oYz4+PjA+YT4+PjB8MCk+Pj4wO3JldHVybiAoQz1kLGEtYz4+PjB8MCl8MH1mdW5jdGlvbiBSUihhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtjPWErYz4+PjA7cmV0dXJuIChDPWIrZCsoYz4+PjA8YT4+PjB8MCk+Pj4wLGN8MCl8MH1mdW5jdGlvbiBTUihhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7aWYoKGN8MCk8MzIpe0M9Yj4+PmM7cmV0dXJuIGE+Pj5jfChiJigxPDxjKS0xKTw8MzItY31DPTA7cmV0dXJuIGI+Pj5jLTMyfDB9ZnVuY3Rpb24gVFIoYixkLGUpe2I9YnwwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTA7aWYoKGV8MCk+PTQwOTYpcmV0dXJuIGxiKGJ8MCxkfDAsZXwwKXwwO2Y9YnwwO2lmKChiJjMpPT0oZCYzKSl7d2hpbGUoYiYzKXtpZighZSlyZXR1cm4gZnwwO2FbYj4+MF09YVtkPj4wXXwwO2I9YisxfDA7ZD1kKzF8MDtlPWUtMXwwfXdoaWxlKChlfDApPj00KXtjW2I+PjJdPWNbZD4+Ml07Yj1iKzR8MDtkPWQrNHwwO2U9ZS00fDB9fXdoaWxlKChlfDApPjApe2FbYj4+MF09YVtkPj4wXXwwO2I9YisxfDA7ZD1kKzF8MDtlPWUtMXwwfXJldHVybiBmfDB9ZnVuY3Rpb24gVVIoYixjLGQpe2I9YnwwO2M9Y3wwO2Q9ZHwwO3ZhciBlPTA7aWYoKGN8MCk8KGJ8MCkmKGJ8MCk8KGMrZHwwKSl7ZT1iO2M9YytkfDA7Yj1iK2R8MDt3aGlsZSgoZHwwKT4wKXtiPWItMXwwO2M9Yy0xfDA7ZD1kLTF8MDthW2I+PjBdPWFbYz4+MF18MH1iPWV9ZWxzZSBUUihiLGMsZCl8MDtyZXR1cm4gYnwwfWZ1bmN0aW9uIFZSKGIsZCxlKXtiPWJ8MDtkPWR8MDtlPWV8MDt2YXIgZj0wLGc9MCxoPTAsaT0wO2Y9YitlfDA7aWYoKGV8MCk+PTIwKXtkPWQmMjU1O2g9YiYzO2k9ZHxkPDw4fGQ8PDE2fGQ8PDI0O2c9ZiZ+MztpZihoKXtoPWIrNC1ofDA7d2hpbGUoKGJ8MCk8KGh8MCkpe2FbYj4+MF09ZDtiPWIrMXwwfX13aGlsZSgoYnwwKTwoZ3wwKSl7Y1tiPj4yXT1pO2I9Yis0fDB9fXdoaWxlKChifDApPChmfDApKXthW2I+PjBdPWQ7Yj1iKzF8MH1yZXR1cm4gYi1lfDB9ZnVuY3Rpb24gV1IoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO2lmKChjfDApPDMyKXtDPWI8PGN8KGEmKDE8PGMpLTE8PDMyLWMpPj4+MzItYztyZXR1cm4gYTw8Y31DPWE8PGMtMzI7cmV0dXJuIDB9ZnVuY3Rpb24gWFIoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO2lmKChjfDApPDMyKXtDPWI+PmM7cmV0dXJuIGE+Pj5jfChiJigxPDxjKS0xKTw8MzItY31DPShifDApPDA/LTE6MDtyZXR1cm4gYj4+Yy0zMnwwfWZ1bmN0aW9uIFlSKGIpe2I9YnwwO3ZhciBjPTA7Yz1hW20rKGImMjU1KT4+MF18MDtpZigoY3wwKTw4KXJldHVybiBjfDA7Yz1hW20rKGI+PjgmMjU1KT4+MF18MDtpZigoY3wwKTw4KXJldHVybiBjKzh8MDtjPWFbbSsoYj4+MTYmMjU1KT4+MF18MDtpZigoY3wwKTw4KXJldHVybiBjKzE2fDA7cmV0dXJuIChhW20rKGI+Pj4yNCk+PjBdfDApKzI0fDB9ZnVuY3Rpb24gWlIoYSxiKXthPWF8MDtiPWJ8MDt2YXIgYz0wLGQ9MCxlPTAsZj0wO2Y9YSY2NTUzNTtlPWImNjU1MzU7Yz1fKGUsZil8MDtkPWE+Pj4xNjthPShjPj4+MTYpKyhfKGUsZCl8MCl8MDtlPWI+Pj4xNjtiPV8oZSxmKXwwO3JldHVybiAoQz0oYT4+PjE2KSsoXyhlLGQpfDApKygoKGEmNjU1MzUpK2J8MCk+Pj4xNil8MCxhK2I8PDE2fGMmNjU1MzV8MCl8MH1mdW5jdGlvbiBfUihhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDt2YXIgZT0wLGY9MCxnPTAsaD0wLGk9MCxqPTA7aj1iPj4zMXwoKGJ8MCk8MD8tMTowKTw8MTtpPSgoYnwwKTwwPy0xOjApPj4zMXwoKGJ8MCk8MD8tMTowKTw8MTtmPWQ+PjMxfCgoZHwwKTwwPy0xOjApPDwxO2U9KChkfDApPDA/LTE6MCk+PjMxfCgoZHwwKTwwPy0xOjApPDwxO2g9UVIoal5hLGleYixqLGkpfDA7Zz1DO2E9Zl5qO2I9ZV5pO3JldHVybiBRUigoZFMoaCxnLFFSKGZeYyxlXmQsZixlKXwwLEMsMCl8MCleYSxDXmIsYSxiKXwwfWZ1bmN0aW9uICRSKGEsYixkLGUpe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO3ZhciBmPTAsZz0wLGg9MCxqPTAsaz0wLGw9MDtmPWk7aT1pKzE2fDA7aj1mfDA7aD1iPj4zMXwoKGJ8MCk8MD8tMTowKTw8MTtnPSgoYnwwKTwwPy0xOjApPj4zMXwoKGJ8MCk8MD8tMTowKTw8MTtsPWU+PjMxfCgoZXwwKTwwPy0xOjApPDwxO2s9KChlfDApPDA/LTE6MCk+PjMxfCgoZXwwKTwwPy0xOjApPDwxO2E9UVIoaF5hLGdeYixoLGcpfDA7Yj1DO2RTKGEsYixRUihsXmQsa15lLGwsayl8MCxDLGopfDA7ZT1RUihjW2o+PjJdXmgsY1tqKzQ+PjJdXmcsaCxnKXwwO2Q9QztpPWY7cmV0dXJuIChDPWQsZSl8MH1mdW5jdGlvbiBhUyhhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDt2YXIgZT0wLGY9MDtlPWE7Zj1jO2M9WlIoZSxmKXwwO2E9QztyZXR1cm4gKEM9KF8oYixmKXwwKSsoXyhkLGUpfDApK2F8YSYwLGN8MHwwKXwwfWZ1bmN0aW9uIGJTKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3JldHVybiBkUyhhLGIsYyxkLDApfDB9ZnVuY3Rpb24gY1MoYSxiLGQsZSl7YT1hfDA7Yj1ifDA7ZD1kfDA7ZT1lfDA7dmFyIGY9MCxnPTA7Zz1pO2k9aSsxNnwwO2Y9Z3wwO2RTKGEsYixkLGUsZil8MDtpPWc7cmV0dXJuIChDPWNbZis0Pj4yXXwwLGNbZj4+Ml18MCl8MH1mdW5jdGlvbiBkUyhhLGIsZCxlLGYpe2E9YXwwO2I9YnwwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3ZhciBnPTAsaD0wLGk9MCxqPTAsaz0wLGw9MCxtPTAsbj0wLG89MCxwPTA7bD1hO2o9YjtrPWo7aD1kO249ZTtpPW47aWYoIWspe2c9KGZ8MCkhPTA7aWYoIWkpe2lmKGcpe2NbZj4+Ml09KGw+Pj4wKSUoaD4+PjApO2NbZis0Pj4yXT0wfW49MDtmPShsPj4+MCkvKGg+Pj4wKT4+PjA7cmV0dXJuIChDPW4sZil8MH1lbHNle2lmKCFnKXtuPTA7Zj0wO3JldHVybiAoQz1uLGYpfDB9Y1tmPj4yXT1hfDA7Y1tmKzQ+PjJdPWImMDtuPTA7Zj0wO3JldHVybiAoQz1uLGYpfDB9fWc9KGl8MCk9PTA7ZG8gaWYoaCl7aWYoIWcpe2c9KGFhKGl8MCl8MCktKGFhKGt8MCl8MCl8MDtpZihnPj4+MDw9MzEpe209ZysxfDA7aT0zMS1nfDA7Yj1nLTMxPj4zMTtoPW07YT1sPj4+KG0+Pj4wKSZifGs8PGk7Yj1rPj4+KG0+Pj4wKSZiO2c9MDtpPWw8PGk7YnJlYWt9aWYoIWYpe249MDtmPTA7cmV0dXJuIChDPW4sZil8MH1jW2Y+PjJdPWF8MDtjW2YrND4+Ml09anxiJjA7bj0wO2Y9MDtyZXR1cm4gKEM9bixmKXwwfWc9aC0xfDA7aWYoZyZoKXtpPShhYShofDApfDApKzMzLShhYShrfDApfDApfDA7cD02NC1pfDA7bT0zMi1pfDA7aj1tPj4zMTtvPWktMzJ8MDtiPW8+PjMxO2g9aTthPW0tMT4+MzEmaz4+PihvPj4+MCl8KGs8PG18bD4+PihpPj4+MCkpJmI7Yj1iJms+Pj4oaT4+PjApO2c9bDw8cCZqO2k9KGs8PHB8bD4+PihvPj4+MCkpJmp8bDw8bSZpLTMzPj4zMTticmVha31pZihmKXtjW2Y+PjJdPWcmbDtjW2YrND4+Ml09MH1pZigoaHwwKT09MSl7bz1qfGImMDtwPWF8MHwwO3JldHVybiAoQz1vLHApfDB9ZWxzZXtwPVlSKGh8MCl8MDtvPWs+Pj4ocD4+PjApfDA7cD1rPDwzMi1wfGw+Pj4ocD4+PjApfDA7cmV0dXJuIChDPW8scCl8MH19ZWxzZXtpZihnKXtpZihmKXtjW2Y+PjJdPShrPj4+MCklKGg+Pj4wKTtjW2YrND4+Ml09MH1vPTA7cD0oaz4+PjApLyhoPj4+MCk+Pj4wO3JldHVybiAoQz1vLHApfDB9aWYoIWwpe2lmKGYpe2NbZj4+Ml09MDtjW2YrND4+Ml09KGs+Pj4wKSUoaT4+PjApfW89MDtwPShrPj4+MCkvKGk+Pj4wKT4+PjA7cmV0dXJuIChDPW8scCl8MH1nPWktMXwwO2lmKCEoZyZpKSl7aWYoZil7Y1tmPj4yXT1hfDA7Y1tmKzQ+PjJdPWcma3xiJjB9bz0wO3A9az4+PigoWVIoaXwwKXwwKT4+PjApO3JldHVybiAoQz1vLHApfDB9Zz0oYWEoaXwwKXwwKS0oYWEoa3wwKXwwKXwwO2lmKGc+Pj4wPD0zMCl7Yj1nKzF8MDtpPTMxLWd8MDtoPWI7YT1rPDxpfGw+Pj4oYj4+PjApO2I9az4+PihiPj4+MCk7Zz0wO2k9bDw8aTticmVha31pZighZil7bz0wO3A9MDtyZXR1cm4gKEM9byxwKXwwfWNbZj4+Ml09YXwwO2NbZis0Pj4yXT1qfGImMDtvPTA7cD0wO3JldHVybiAoQz1vLHApfDB9d2hpbGUoMCk7aWYoIWgpe2s9aTtqPTA7aT0wfWVsc2V7bT1kfDB8MDtsPW58ZSYwO2s9UlIobXwwLGx8MCwtMSwtMSl8MDtkPUM7aj1pO2k9MDtkb3tlPWo7aj1nPj4+MzF8ajw8MTtnPWl8Zzw8MTtlPWE8PDF8ZT4+PjMxfDA7bj1hPj4+MzF8Yjw8MXwwO1FSKGssZCxlLG4pfDA7cD1DO289cD4+MzF8KChwfDApPDA/LTE6MCk8PDE7aT1vJjE7YT1RUihlLG4sbyZtLCgoKHB8MCk8MD8tMTowKT4+MzF8KChwfDApPDA/LTE6MCk8PDEpJmwpfDA7Yj1DO2g9aC0xfDB9d2hpbGUoKGh8MCkhPTApO2s9ajtqPTB9aD0wO2lmKGYpe2NbZj4+Ml09YTtjW2YrND4+Ml09Yn1vPShnfDApPj4+MzF8KGt8aCk8PDF8KGg8PDF8Zz4+PjMxKSYwfGo7cD0oZzw8MXwwPj4+MzEpJi0yfGk7cmV0dXJuIChDPW8scCl8MH1mdW5jdGlvbiBlUyhhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtyZXR1cm4gT2JbYSYyNTVdKGJ8MCxjfDAsZHwwKXwwfWZ1bmN0aW9uIGZTKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtyZXR1cm4gZWEoMCxhfDAsYnwwLGN8MCl8MH1mdW5jdGlvbiBnUyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7cmV0dXJuIGVhKDEsYXwwLGJ8MCxjfDApfDB9ZnVuY3Rpb24gaFMoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3JldHVybiBlYSgyLGF8MCxifDAsY3wwKXwwfWZ1bmN0aW9uIGlTKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtyZXR1cm4gZWEoMyxhfDAsYnwwLGN8MCl8MH1mdW5jdGlvbiBqUyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7cmV0dXJuIGVhKDQsYXwwLGJ8MCxjfDApfDB9ZnVuY3Rpb24ga1MoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3JldHVybiBlYSg1LGF8MCxifDAsY3wwKXwwfWZ1bmN0aW9uIGxTKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtyZXR1cm4gZWEoNixhfDAsYnwwLGN8MCl8MH1mdW5jdGlvbiBtUyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7cmV0dXJuIGVhKDcsYXwwLGJ8MCxjfDApfDB9ZnVuY3Rpb24gblMoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3JldHVybiBlYSg4LGF8MCxifDAsY3wwKXwwfWZ1bmN0aW9uIG9TKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtyZXR1cm4gZWEoOSxhfDAsYnwwLGN8MCl8MH1mdW5jdGlvbiBwUyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7cmV0dXJuIGVhKDEwLGF8MCxifDAsY3wwKXwwfWZ1bmN0aW9uIHFTKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtyZXR1cm4gZWEoMTEsYXwwLGJ8MCxjfDApfDB9ZnVuY3Rpb24gclMoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3JldHVybiBlYSgxMixhfDAsYnwwLGN8MCl8MH1mdW5jdGlvbiBzUyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7cmV0dXJuIGVhKDEzLGF8MCxifDAsY3wwKXwwfWZ1bmN0aW9uIHRTKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtyZXR1cm4gZWEoMTQsYXwwLGJ8MCxjfDApfDB9ZnVuY3Rpb24gdVMoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3JldHVybiBlYSgxNSxhfDAsYnwwLGN8MCl8MH1mdW5jdGlvbiB2UyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7cmV0dXJuIGVhKDE2LGF8MCxifDAsY3wwKXwwfWZ1bmN0aW9uIHdTKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtyZXR1cm4gZWEoMTcsYXwwLGJ8MCxjfDApfDB9ZnVuY3Rpb24geFMoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3JldHVybiBlYSgxOCxhfDAsYnwwLGN8MCl8MH1mdW5jdGlvbiB5UyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7cmV0dXJuIGVhKDE5LGF8MCxifDAsY3wwKXwwfWZ1bmN0aW9uIHpTKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtyZXR1cm4gZWEoMjAsYXwwLGJ8MCxjfDApfDB9ZnVuY3Rpb24gQVMoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3JldHVybiBlYSgyMSxhfDAsYnwwLGN8MCl8MH1mdW5jdGlvbiBCUyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7cmV0dXJuIGVhKDIyLGF8MCxifDAsY3wwKXwwfWZ1bmN0aW9uIENTKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtyZXR1cm4gZWEoMjMsYXwwLGJ8MCxjfDApfDB9ZnVuY3Rpb24gRFMoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3JldHVybiBlYSgyNCxhfDAsYnwwLGN8MCl8MH1mdW5jdGlvbiBFUyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7cmV0dXJuIGVhKDI1LGF8MCxifDAsY3wwKXwwfWZ1bmN0aW9uIEZTKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtyZXR1cm4gZWEoMjYsYXwwLGJ8MCxjfDApfDB9ZnVuY3Rpb24gR1MoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3JldHVybiBlYSgyNyxhfDAsYnwwLGN8MCl8MH1mdW5jdGlvbiBIUyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7cmV0dXJuIGVhKDI4LGF8MCxifDAsY3wwKXwwfWZ1bmN0aW9uIElTKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtyZXR1cm4gZWEoMjksYXwwLGJ8MCxjfDApfDB9ZnVuY3Rpb24gSlMoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3JldHVybiBlYSgzMCxhfDAsYnwwLGN8MCl8MH1mdW5jdGlvbiBLUyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7cmV0dXJuIGVhKDMxLGF8MCxifDAsY3wwKXwwfWZ1bmN0aW9uIExTKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtyZXR1cm4gZWEoMzIsYXwwLGJ8MCxjfDApfDB9ZnVuY3Rpb24gTVMoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3JldHVybiBlYSgzMyxhfDAsYnwwLGN8MCl8MH1mdW5jdGlvbiBOUyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7cmV0dXJuIGVhKDM0LGF8MCxifDAsY3wwKXwwfWZ1bmN0aW9uIE9TKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtyZXR1cm4gZWEoMzUsYXwwLGJ8MCxjfDApfDB9ZnVuY3Rpb24gUFMoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3JldHVybiBlYSgzNixhfDAsYnwwLGN8MCl8MH1mdW5jdGlvbiBRUyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7cmV0dXJuIGVhKDM3LGF8MCxifDAsY3wwKXwwfWZ1bmN0aW9uIFJTKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtyZXR1cm4gZWEoMzgsYXwwLGJ8MCxjfDApfDB9ZnVuY3Rpb24gU1MoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3JldHVybiBlYSgzOSxhfDAsYnwwLGN8MCl8MH1mdW5jdGlvbiBUUyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7cmV0dXJuIGVhKDQwLGF8MCxifDAsY3wwKXwwfWZ1bmN0aW9uIFVTKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtyZXR1cm4gZWEoNDEsYXwwLGJ8MCxjfDApfDB9ZnVuY3Rpb24gVlMoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3JldHVybiBlYSg0MixhfDAsYnwwLGN8MCl8MH1mdW5jdGlvbiBXUyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7cmV0dXJuIGVhKDQzLGF8MCxifDAsY3wwKXwwfWZ1bmN0aW9uIFhTKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtyZXR1cm4gZWEoNDQsYXwwLGJ8MCxjfDApfDB9ZnVuY3Rpb24gWVMoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3JldHVybiBlYSg0NSxhfDAsYnwwLGN8MCl8MH1mdW5jdGlvbiBaUyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7cmV0dXJuIGVhKDQ2LGF8MCxifDAsY3wwKXwwfWZ1bmN0aW9uIF9TKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtyZXR1cm4gZWEoNDcsYXwwLGJ8MCxjfDApfDB9ZnVuY3Rpb24gJFMoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3JldHVybiBlYSg0OCxhfDAsYnwwLGN8MCl8MH1mdW5jdGlvbiBhVChhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7cmV0dXJuIGVhKDQ5LGF8MCxifDAsY3wwKXwwfWZ1bmN0aW9uIGJUKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtyZXR1cm4gZWEoNTAsYXwwLGJ8MCxjfDApfDB9ZnVuY3Rpb24gY1QoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3JldHVybiBlYSg1MSxhfDAsYnwwLGN8MCl8MH1mdW5jdGlvbiBkVChhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7cmV0dXJuIGVhKDUyLGF8MCxifDAsY3wwKXwwfWZ1bmN0aW9uIGVUKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtyZXR1cm4gZWEoNTMsYXwwLGJ8MCxjfDApfDB9ZnVuY3Rpb24gZlQoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3JldHVybiBlYSg1NCxhfDAsYnwwLGN8MCl8MH1mdW5jdGlvbiBnVChhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7cmV0dXJuIGVhKDU1LGF8MCxifDAsY3wwKXwwfWZ1bmN0aW9uIGhUKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtyZXR1cm4gZWEoNTYsYXwwLGJ8MCxjfDApfDB9ZnVuY3Rpb24gaVQoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3JldHVybiBlYSg1NyxhfDAsYnwwLGN8MCl8MH1mdW5jdGlvbiBqVChhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7cmV0dXJuIGVhKDU4LGF8MCxifDAsY3wwKXwwfWZ1bmN0aW9uIGtUKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtyZXR1cm4gZWEoNTksYXwwLGJ8MCxjfDApfDB9ZnVuY3Rpb24gbFQoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3JldHVybiBlYSg2MCxhfDAsYnwwLGN8MCl8MH1mdW5jdGlvbiBtVChhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7cmV0dXJuIGVhKDYxLGF8MCxifDAsY3wwKXwwfWZ1bmN0aW9uIG5UKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtyZXR1cm4gZWEoNjIsYXwwLGJ8MCxjfDApfDB9ZnVuY3Rpb24gb1QoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3JldHVybiBlYSg2MyxhfDAsYnwwLGN8MCl8MH1mdW5jdGlvbiBwVChhKXthPWF8MDtyZXR1cm4gUGJbYSYyNTVdKCl8MH1mdW5jdGlvbiBxVCgpe3JldHVybiBnYSgwKXwwfWZ1bmN0aW9uIHJUKCl7cmV0dXJuIGdhKDEpfDB9ZnVuY3Rpb24gc1QoKXtyZXR1cm4gZ2EoMil8MH1mdW5jdGlvbiB0VCgpe3JldHVybiBnYSgzKXwwfWZ1bmN0aW9uIHVUKCl7cmV0dXJuIGdhKDQpfDB9ZnVuY3Rpb24gdlQoKXtyZXR1cm4gZ2EoNSl8MH1mdW5jdGlvbiB3VCgpe3JldHVybiBnYSg2KXwwfWZ1bmN0aW9uIHhUKCl7cmV0dXJuIGdhKDcpfDB9ZnVuY3Rpb24geVQoKXtyZXR1cm4gZ2EoOCl8MH1mdW5jdGlvbiB6VCgpe3JldHVybiBnYSg5KXwwfWZ1bmN0aW9uIEFUKCl7cmV0dXJuIGdhKDEwKXwwfWZ1bmN0aW9uIEJUKCl7cmV0dXJuIGdhKDExKXwwfWZ1bmN0aW9uIENUKCl7cmV0dXJuIGdhKDEyKXwwfWZ1bmN0aW9uIERUKCl7cmV0dXJuIGdhKDEzKXwwfWZ1bmN0aW9uIEVUKCl7cmV0dXJuIGdhKDE0KXwwfWZ1bmN0aW9uIEZUKCl7cmV0dXJuIGdhKDE1KXwwfWZ1bmN0aW9uIEdUKCl7cmV0dXJuIGdhKDE2KXwwfWZ1bmN0aW9uIEhUKCl7cmV0dXJuIGdhKDE3KXwwfWZ1bmN0aW9uIElUKCl7cmV0dXJuIGdhKDE4KXwwfWZ1bmN0aW9uIEpUKCl7cmV0dXJuIGdhKDE5KXwwfWZ1bmN0aW9uIEtUKCl7cmV0dXJuIGdhKDIwKXwwfWZ1bmN0aW9uIExUKCl7cmV0dXJuIGdhKDIxKXwwfWZ1bmN0aW9uIE1UKCl7cmV0dXJuIGdhKDIyKXwwfWZ1bmN0aW9uIE5UKCl7cmV0dXJuIGdhKDIzKXwwfWZ1bmN0aW9uIE9UKCl7cmV0dXJuIGdhKDI0KXwwfWZ1bmN0aW9uIFBUKCl7cmV0dXJuIGdhKDI1KXwwfWZ1bmN0aW9uIFFUKCl7cmV0dXJuIGdhKDI2KXwwfWZ1bmN0aW9uIFJUKCl7cmV0dXJuIGdhKDI3KXwwfWZ1bmN0aW9uIFNUKCl7cmV0dXJuIGdhKDI4KXwwfWZ1bmN0aW9uIFRUKCl7cmV0dXJuIGdhKDI5KXwwfWZ1bmN0aW9uIFVUKCl7cmV0dXJuIGdhKDMwKXwwfWZ1bmN0aW9uIFZUKCl7cmV0dXJuIGdhKDMxKXwwfWZ1bmN0aW9uIFdUKCl7cmV0dXJuIGdhKDMyKXwwfWZ1bmN0aW9uIFhUKCl7cmV0dXJuIGdhKDMzKXwwfWZ1bmN0aW9uIFlUKCl7cmV0dXJuIGdhKDM0KXwwfWZ1bmN0aW9uIFpUKCl7cmV0dXJuIGdhKDM1KXwwfWZ1bmN0aW9uIF9UKCl7cmV0dXJuIGdhKDM2KXwwfWZ1bmN0aW9uICRUKCl7cmV0dXJuIGdhKDM3KXwwfWZ1bmN0aW9uIGFVKCl7cmV0dXJuIGdhKDM4KXwwfWZ1bmN0aW9uIGJVKCl7cmV0dXJuIGdhKDM5KXwwfWZ1bmN0aW9uIGNVKCl7cmV0dXJuIGdhKDQwKXwwfWZ1bmN0aW9uIGRVKCl7cmV0dXJuIGdhKDQxKXwwfWZ1bmN0aW9uIGVVKCl7cmV0dXJuIGdhKDQyKXwwfWZ1bmN0aW9uIGZVKCl7cmV0dXJuIGdhKDQzKXwwfWZ1bmN0aW9uIGdVKCl7cmV0dXJuIGdhKDQ0KXwwfWZ1bmN0aW9uIGhVKCl7cmV0dXJuIGdhKDQ1KXwwfWZ1bmN0aW9uIGlVKCl7cmV0dXJuIGdhKDQ2KXwwfWZ1bmN0aW9uIGpVKCl7cmV0dXJuIGdhKDQ3KXwwfWZ1bmN0aW9uIGtVKCl7cmV0dXJuIGdhKDQ4KXwwfWZ1bmN0aW9uIGxVKCl7cmV0dXJuIGdhKDQ5KXwwfWZ1bmN0aW9uIG1VKCl7cmV0dXJuIGdhKDUwKXwwfWZ1bmN0aW9uIG5VKCl7cmV0dXJuIGdhKDUxKXwwfWZ1bmN0aW9uIG9VKCl7cmV0dXJuIGdhKDUyKXwwfWZ1bmN0aW9uIHBVKCl7cmV0dXJuIGdhKDUzKXwwfWZ1bmN0aW9uIHFVKCl7cmV0dXJuIGdhKDU0KXwwfWZ1bmN0aW9uIHJVKCl7cmV0dXJuIGdhKDU1KXwwfWZ1bmN0aW9uIHNVKCl7cmV0dXJuIGdhKDU2KXwwfWZ1bmN0aW9uIHRVKCl7cmV0dXJuIGdhKDU3KXwwfWZ1bmN0aW9uIHVVKCl7cmV0dXJuIGdhKDU4KXwwfWZ1bmN0aW9uIHZVKCl7cmV0dXJuIGdhKDU5KXwwfWZ1bmN0aW9uIHdVKCl7cmV0dXJuIGdhKDYwKXwwfWZ1bmN0aW9uIHhVKCl7cmV0dXJuIGdhKDYxKXwwfWZ1bmN0aW9uIHlVKCl7cmV0dXJuIGdhKDYyKXwwfWZ1bmN0aW9uIHpVKCl7cmV0dXJuIGdhKDYzKXwwfWZ1bmN0aW9uIEFVKGEsYil7YT1hfDA7Yj1ifDA7UWJbYSYyNTVdKGJ8MCl9ZnVuY3Rpb24gQlUoYSl7YT1hfDA7aWEoMCxhfDApfWZ1bmN0aW9uIENVKGEpe2E9YXwwO2lhKDEsYXwwKX1mdW5jdGlvbiBEVShhKXthPWF8MDtpYSgyLGF8MCl9ZnVuY3Rpb24gRVUoYSl7YT1hfDA7aWEoMyxhfDApfWZ1bmN0aW9uIEZVKGEpe2E9YXwwO2lhKDQsYXwwKX1mdW5jdGlvbiBHVShhKXthPWF8MDtpYSg1LGF8MCl9ZnVuY3Rpb24gSFUoYSl7YT1hfDA7aWEoNixhfDApfWZ1bmN0aW9uIElVKGEpe2E9YXwwO2lhKDcsYXwwKX1mdW5jdGlvbiBKVShhKXthPWF8MDtpYSg4LGF8MCl9ZnVuY3Rpb24gS1UoYSl7YT1hfDA7aWEoOSxhfDApfWZ1bmN0aW9uIExVKGEpe2E9YXwwO2lhKDEwLGF8MCl9ZnVuY3Rpb24gTVUoYSl7YT1hfDA7aWEoMTEsYXwwKX1mdW5jdGlvbiBOVShhKXthPWF8MDtpYSgxMixhfDApfWZ1bmN0aW9uIE9VKGEpe2E9YXwwO2lhKDEzLGF8MCl9ZnVuY3Rpb24gUFUoYSl7YT1hfDA7aWEoMTQsYXwwKX1mdW5jdGlvbiBRVShhKXthPWF8MDtpYSgxNSxhfDApfWZ1bmN0aW9uIFJVKGEpe2E9YXwwO2lhKDE2LGF8MCl9ZnVuY3Rpb24gU1UoYSl7YT1hfDA7aWEoMTcsYXwwKX1mdW5jdGlvbiBUVShhKXthPWF8MDtpYSgxOCxhfDApfWZ1bmN0aW9uIFVVKGEpe2E9YXwwO2lhKDE5LGF8MCl9ZnVuY3Rpb24gVlUoYSl7YT1hfDA7aWEoMjAsYXwwKX1mdW5jdGlvbiBXVShhKXthPWF8MDtpYSgyMSxhfDApfWZ1bmN0aW9uIFhVKGEpe2E9YXwwO2lhKDIyLGF8MCl9ZnVuY3Rpb24gWVUoYSl7YT1hfDA7aWEoMjMsYXwwKX1mdW5jdGlvbiBaVShhKXthPWF8MDtpYSgyNCxhfDApfWZ1bmN0aW9uIF9VKGEpe2E9YXwwO2lhKDI1LGF8MCl9ZnVuY3Rpb24gJFUoYSl7YT1hfDA7aWEoMjYsYXwwKX1mdW5jdGlvbiBhVihhKXthPWF8MDtpYSgyNyxhfDApfWZ1bmN0aW9uIGJWKGEpe2E9YXwwO2lhKDI4LGF8MCl9ZnVuY3Rpb24gY1YoYSl7YT1hfDA7aWEoMjksYXwwKX1mdW5jdGlvbiBkVihhKXthPWF8MDtpYSgzMCxhfDApfWZ1bmN0aW9uIGVWKGEpe2E9YXwwO2lhKDMxLGF8MCl9ZnVuY3Rpb24gZlYoYSl7YT1hfDA7aWEoMzIsYXwwKX1mdW5jdGlvbiBnVihhKXthPWF8MDtpYSgzMyxhfDApfWZ1bmN0aW9uIGhWKGEpe2E9YXwwO2lhKDM0LGF8MCl9ZnVuY3Rpb24gaVYoYSl7YT1hfDA7aWEoMzUsYXwwKX1mdW5jdGlvbiBqVihhKXthPWF8MDtpYSgzNixhfDApfWZ1bmN0aW9uIGtWKGEpe2E9YXwwO2lhKDM3LGF8MCl9ZnVuY3Rpb24gbFYoYSl7YT1hfDA7aWEoMzgsYXwwKX1mdW5jdGlvbiBtVihhKXthPWF8MDtpYSgzOSxhfDApfWZ1bmN0aW9uIG5WKGEpe2E9YXwwO2lhKDQwLGF8MCl9ZnVuY3Rpb24gb1YoYSl7YT1hfDA7aWEoNDEsYXwwKX1mdW5jdGlvbiBwVihhKXthPWF8MDtpYSg0MixhfDApfWZ1bmN0aW9uIHFWKGEpe2E9YXwwO2lhKDQzLGF8MCl9ZnVuY3Rpb24gclYoYSl7YT1hfDA7aWEoNDQsYXwwKX1mdW5jdGlvbiBzVihhKXthPWF8MDtpYSg0NSxhfDApfWZ1bmN0aW9uIHRWKGEpe2E9YXwwO2lhKDQ2LGF8MCl9ZnVuY3Rpb24gdVYoYSl7YT1hfDA7aWEoNDcsYXwwKX1mdW5jdGlvbiB2VihhKXthPWF8MDtpYSg0OCxhfDApfWZ1bmN0aW9uIHdWKGEpe2E9YXwwO2lhKDQ5LGF8MCl9ZnVuY3Rpb24geFYoYSl7YT1hfDA7aWEoNTAsYXwwKX1mdW5jdGlvbiB5VihhKXthPWF8MDtpYSg1MSxhfDApfWZ1bmN0aW9uIHpWKGEpe2E9YXwwO2lhKDUyLGF8MCl9ZnVuY3Rpb24gQVYoYSl7YT1hfDA7aWEoNTMsYXwwKX1mdW5jdGlvbiBCVihhKXthPWF8MDtpYSg1NCxhfDApfWZ1bmN0aW9uIENWKGEpe2E9YXwwO2lhKDU1LGF8MCl9ZnVuY3Rpb24gRFYoYSl7YT1hfDA7aWEoNTYsYXwwKX1mdW5jdGlvbiBFVihhKXthPWF8MDtpYSg1NyxhfDApfWZ1bmN0aW9uIEZWKGEpe2E9YXwwO2lhKDU4LGF8MCl9ZnVuY3Rpb24gR1YoYSl7YT1hfDA7aWEoNTksYXwwKX1mdW5jdGlvbiBIVihhKXthPWF8MDtpYSg2MCxhfDApfWZ1bmN0aW9uIElWKGEpe2E9YXwwO2lhKDYxLGF8MCl9ZnVuY3Rpb24gSlYoYSl7YT1hfDA7aWEoNjIsYXwwKX1mdW5jdGlvbiBLVihhKXthPWF8MDtpYSg2MyxhfDApfWZ1bmN0aW9uIExWKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtSYlthJjI1NV0oYnwwLGN8MCl9ZnVuY3Rpb24gTVYoYSxiKXthPWF8MDtiPWJ8MDtrYSgwLGF8MCxifDApfWZ1bmN0aW9uIE5WKGEsYil7YT1hfDA7Yj1ifDA7a2EoMSxhfDAsYnwwKX1mdW5jdGlvbiBPVihhLGIpe2E9YXwwO2I9YnwwO2thKDIsYXwwLGJ8MCl9ZnVuY3Rpb24gUFYoYSxiKXthPWF8MDtiPWJ8MDtrYSgzLGF8MCxifDApfWZ1bmN0aW9uIFFWKGEsYil7YT1hfDA7Yj1ifDA7a2EoNCxhfDAsYnwwKX1mdW5jdGlvbiBSVihhLGIpe2E9YXwwO2I9YnwwO2thKDUsYXwwLGJ8MCl9ZnVuY3Rpb24gU1YoYSxiKXthPWF8MDtiPWJ8MDtrYSg2LGF8MCxifDApfWZ1bmN0aW9uIFRWKGEsYil7YT1hfDA7Yj1ifDA7a2EoNyxhfDAsYnwwKX1mdW5jdGlvbiBVVihhLGIpe2E9YXwwO2I9YnwwO2thKDgsYXwwLGJ8MCl9ZnVuY3Rpb24gVlYoYSxiKXthPWF8MDtiPWJ8MDtrYSg5LGF8MCxifDApfWZ1bmN0aW9uIFdWKGEsYil7YT1hfDA7Yj1ifDA7a2EoMTAsYXwwLGJ8MCl9ZnVuY3Rpb24gWFYoYSxiKXthPWF8MDtiPWJ8MDtrYSgxMSxhfDAsYnwwKX1mdW5jdGlvbiBZVihhLGIpe2E9YXwwO2I9YnwwO2thKDEyLGF8MCxifDApfWZ1bmN0aW9uIFpWKGEsYil7YT1hfDA7Yj1ifDA7a2EoMTMsYXwwLGJ8MCl9ZnVuY3Rpb24gX1YoYSxiKXthPWF8MDtiPWJ8MDtrYSgxNCxhfDAsYnwwKX1mdW5jdGlvbiAkVihhLGIpe2E9YXwwO2I9YnwwO2thKDE1LGF8MCxifDApfWZ1bmN0aW9uIGFXKGEsYil7YT1hfDA7Yj1ifDA7a2EoMTYsYXwwLGJ8MCl9ZnVuY3Rpb24gYlcoYSxiKXthPWF8MDtiPWJ8MDtrYSgxNyxhfDAsYnwwKX1mdW5jdGlvbiBjVyhhLGIpe2E9YXwwO2I9YnwwO2thKDE4LGF8MCxifDApfWZ1bmN0aW9uIGRXKGEsYil7YT1hfDA7Yj1ifDA7a2EoMTksYXwwLGJ8MCl9ZnVuY3Rpb24gZVcoYSxiKXthPWF8MDtiPWJ8MDtrYSgyMCxhfDAsYnwwKX1mdW5jdGlvbiBmVyhhLGIpe2E9YXwwO2I9YnwwO2thKDIxLGF8MCxifDApfWZ1bmN0aW9uIGdXKGEsYil7YT1hfDA7Yj1ifDA7a2EoMjIsYXwwLGJ8MCl9ZnVuY3Rpb24gaFcoYSxiKXthPWF8MDtiPWJ8MDtrYSgyMyxhfDAsYnwwKX1mdW5jdGlvbiBpVyhhLGIpe2E9YXwwO2I9YnwwO2thKDI0LGF8MCxifDApfWZ1bmN0aW9uIGpXKGEsYil7YT1hfDA7Yj1ifDA7a2EoMjUsYXwwLGJ8MCl9ZnVuY3Rpb24ga1coYSxiKXthPWF8MDtiPWJ8MDtrYSgyNixhfDAsYnwwKX1mdW5jdGlvbiBsVyhhLGIpe2E9YXwwO2I9YnwwO2thKDI3LGF8MCxifDApfWZ1bmN0aW9uIG1XKGEsYil7YT1hfDA7Yj1ifDA7a2EoMjgsYXwwLGJ8MCl9ZnVuY3Rpb24gblcoYSxiKXthPWF8MDtiPWJ8MDtrYSgyOSxhfDAsYnwwKX1mdW5jdGlvbiBvVyhhLGIpe2E9YXwwO2I9YnwwO2thKDMwLGF8MCxifDApfWZ1bmN0aW9uIHBXKGEsYil7YT1hfDA7Yj1ifDA7a2EoMzEsYXwwLGJ8MCl9ZnVuY3Rpb24gcVcoYSxiKXthPWF8MDtiPWJ8MDtrYSgzMixhfDAsYnwwKX1mdW5jdGlvbiByVyhhLGIpe2E9YXwwO2I9YnwwO2thKDMzLGF8MCxifDApfWZ1bmN0aW9uIHNXKGEsYil7YT1hfDA7Yj1ifDA7a2EoMzQsYXwwLGJ8MCl9ZnVuY3Rpb24gdFcoYSxiKXthPWF8MDtiPWJ8MDtrYSgzNSxhfDAsYnwwKX1mdW5jdGlvbiB1VyhhLGIpe2E9YXwwO2I9YnwwO2thKDM2LGF8MCxifDApfWZ1bmN0aW9uIHZXKGEsYil7YT1hfDA7Yj1ifDA7a2EoMzcsYXwwLGJ8MCl9ZnVuY3Rpb24gd1coYSxiKXthPWF8MDtiPWJ8MDtrYSgzOCxhfDAsYnwwKX1mdW5jdGlvbiB4VyhhLGIpe2E9YXwwO2I9YnwwO2thKDM5LGF8MCxifDApfWZ1bmN0aW9uIHlXKGEsYil7YT1hfDA7Yj1ifDA7a2EoNDAsYXwwLGJ8MCl9ZnVuY3Rpb24gelcoYSxiKXthPWF8MDtiPWJ8MDtrYSg0MSxhfDAsYnwwKX1mdW5jdGlvbiBBVyhhLGIpe2E9YXwwO2I9YnwwO2thKDQyLGF8MCxifDApfWZ1bmN0aW9uIEJXKGEsYil7YT1hfDA7Yj1ifDA7a2EoNDMsYXwwLGJ8MCl9ZnVuY3Rpb24gQ1coYSxiKXthPWF8MDtiPWJ8MDtrYSg0NCxhfDAsYnwwKX1mdW5jdGlvbiBEVyhhLGIpe2E9YXwwO2I9YnwwO2thKDQ1LGF8MCxifDApfWZ1bmN0aW9uIEVXKGEsYil7YT1hfDA7Yj1ifDA7a2EoNDYsYXwwLGJ8MCl9ZnVuY3Rpb24gRlcoYSxiKXthPWF8MDtiPWJ8MDtrYSg0NyxhfDAsYnwwKX1mdW5jdGlvbiBHVyhhLGIpe2E9YXwwO2I9YnwwO2thKDQ4LGF8MCxifDApfWZ1bmN0aW9uIEhXKGEsYil7YT1hfDA7Yj1ifDA7a2EoNDksYXwwLGJ8MCl9ZnVuY3Rpb24gSVcoYSxiKXthPWF8MDtiPWJ8MDtrYSg1MCxhfDAsYnwwKX1mdW5jdGlvbiBKVyhhLGIpe2E9YXwwO2I9YnwwO2thKDUxLGF8MCxifDApfWZ1bmN0aW9uIEtXKGEsYil7YT1hfDA7Yj1ifDA7a2EoNTIsYXwwLGJ8MCl9ZnVuY3Rpb24gTFcoYSxiKXthPWF8MDtiPWJ8MDtrYSg1MyxhfDAsYnwwKX1mdW5jdGlvbiBNVyhhLGIpe2E9YXwwO2I9YnwwO2thKDU0LGF8MCxifDApfWZ1bmN0aW9uIE5XKGEsYil7YT1hfDA7Yj1ifDA7a2EoNTUsYXwwLGJ8MCl9ZnVuY3Rpb24gT1coYSxiKXthPWF8MDtiPWJ8MDtrYSg1NixhfDAsYnwwKX1mdW5jdGlvbiBQVyhhLGIpe2E9YXwwO2I9YnwwO2thKDU3LGF8MCxifDApfWZ1bmN0aW9uIFFXKGEsYil7YT1hfDA7Yj1ifDA7a2EoNTgsYXwwLGJ8MCl9ZnVuY3Rpb24gUlcoYSxiKXthPWF8MDtiPWJ8MDtrYSg1OSxhfDAsYnwwKX1mdW5jdGlvbiBTVyhhLGIpe2E9YXwwO2I9YnwwO2thKDYwLGF8MCxifDApfWZ1bmN0aW9uIFRXKGEsYil7YT1hfDA7Yj1ifDA7a2EoNjEsYXwwLGJ8MCl9ZnVuY3Rpb24gVVcoYSxiKXthPWF8MDtiPWJ8MDtrYSg2MixhfDAsYnwwKX1mdW5jdGlvbiBWVyhhLGIpe2E9YXwwO2I9YnwwO2thKDYzLGF8MCxifDApfWZ1bmN0aW9uIFdXKGEsYixjLGQsZSxmLGcpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2c9Z3wwO3JldHVybiBTYlthJjI1NV0oYnwwLGN8MCxkfDAsZXwwLGZ8MCxnfDApfDB9ZnVuY3Rpb24gWFcoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3JldHVybiBtYSgwLGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKXwwfWZ1bmN0aW9uIFlXKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtyZXR1cm4gbWEoMSxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCl8MH1mdW5jdGlvbiBaVyhhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7cmV0dXJuIG1hKDIsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfDB9ZnVuY3Rpb24gX1coYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3JldHVybiBtYSgzLGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKXwwfWZ1bmN0aW9uICRXKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtyZXR1cm4gbWEoNCxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCl8MH1mdW5jdGlvbiBhWChhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7cmV0dXJuIG1hKDUsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfDB9ZnVuY3Rpb24gYlgoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3JldHVybiBtYSg2LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKXwwfWZ1bmN0aW9uIGNYKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtyZXR1cm4gbWEoNyxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCl8MH1mdW5jdGlvbiBkWChhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7cmV0dXJuIG1hKDgsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfDB9ZnVuY3Rpb24gZVgoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3JldHVybiBtYSg5LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKXwwfWZ1bmN0aW9uIGZYKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtyZXR1cm4gbWEoMTAsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfDB9ZnVuY3Rpb24gZ1goYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3JldHVybiBtYSgxMSxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCl8MH1mdW5jdGlvbiBoWChhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7cmV0dXJuIG1hKDEyLGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKXwwfWZ1bmN0aW9uIGlYKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtyZXR1cm4gbWEoMTMsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfDB9ZnVuY3Rpb24galgoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3JldHVybiBtYSgxNCxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCl8MH1mdW5jdGlvbiBrWChhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7cmV0dXJuIG1hKDE1LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKXwwfWZ1bmN0aW9uIGxYKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtyZXR1cm4gbWEoMTYsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfDB9ZnVuY3Rpb24gbVgoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3JldHVybiBtYSgxNyxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCl8MH1mdW5jdGlvbiBuWChhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7cmV0dXJuIG1hKDE4LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKXwwfWZ1bmN0aW9uIG9YKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtyZXR1cm4gbWEoMTksYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfDB9ZnVuY3Rpb24gcFgoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3JldHVybiBtYSgyMCxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCl8MH1mdW5jdGlvbiBxWChhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7cmV0dXJuIG1hKDIxLGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKXwwfWZ1bmN0aW9uIHJYKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtyZXR1cm4gbWEoMjIsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfDB9ZnVuY3Rpb24gc1goYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3JldHVybiBtYSgyMyxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCl8MH1mdW5jdGlvbiB0WChhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7cmV0dXJuIG1hKDI0LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKXwwfWZ1bmN0aW9uIHVYKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtyZXR1cm4gbWEoMjUsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfDB9ZnVuY3Rpb24gdlgoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3JldHVybiBtYSgyNixhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCl8MH1mdW5jdGlvbiB3WChhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7cmV0dXJuIG1hKDI3LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKXwwfWZ1bmN0aW9uIHhYKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtyZXR1cm4gbWEoMjgsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfDB9ZnVuY3Rpb24geVgoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3JldHVybiBtYSgyOSxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCl8MH1mdW5jdGlvbiB6WChhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7cmV0dXJuIG1hKDMwLGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKXwwfWZ1bmN0aW9uIEFYKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtyZXR1cm4gbWEoMzEsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfDB9ZnVuY3Rpb24gQlgoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3JldHVybiBtYSgzMixhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCl8MH1mdW5jdGlvbiBDWChhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7cmV0dXJuIG1hKDMzLGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKXwwfWZ1bmN0aW9uIERYKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtyZXR1cm4gbWEoMzQsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfDB9ZnVuY3Rpb24gRVgoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3JldHVybiBtYSgzNSxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCl8MH1mdW5jdGlvbiBGWChhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7cmV0dXJuIG1hKDM2LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKXwwfWZ1bmN0aW9uIEdYKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtyZXR1cm4gbWEoMzcsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfDB9ZnVuY3Rpb24gSFgoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3JldHVybiBtYSgzOCxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCl8MH1mdW5jdGlvbiBJWChhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7cmV0dXJuIG1hKDM5LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKXwwfWZ1bmN0aW9uIEpYKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtyZXR1cm4gbWEoNDAsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfDB9ZnVuY3Rpb24gS1goYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3JldHVybiBtYSg0MSxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCl8MH1mdW5jdGlvbiBMWChhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7cmV0dXJuIG1hKDQyLGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKXwwfWZ1bmN0aW9uIE1YKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtyZXR1cm4gbWEoNDMsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfDB9ZnVuY3Rpb24gTlgoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3JldHVybiBtYSg0NCxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCl8MH1mdW5jdGlvbiBPWChhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7cmV0dXJuIG1hKDQ1LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKXwwfWZ1bmN0aW9uIFBYKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtyZXR1cm4gbWEoNDYsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfDB9ZnVuY3Rpb24gUVgoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3JldHVybiBtYSg0NyxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCl8MH1mdW5jdGlvbiBSWChhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7cmV0dXJuIG1hKDQ4LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKXwwfWZ1bmN0aW9uIFNYKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtyZXR1cm4gbWEoNDksYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfDB9ZnVuY3Rpb24gVFgoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3JldHVybiBtYSg1MCxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCl8MH1mdW5jdGlvbiBVWChhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7cmV0dXJuIG1hKDUxLGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKXwwfWZ1bmN0aW9uIFZYKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtyZXR1cm4gbWEoNTIsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfDB9ZnVuY3Rpb24gV1goYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3JldHVybiBtYSg1MyxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCl8MH1mdW5jdGlvbiBYWChhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7cmV0dXJuIG1hKDU0LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKXwwfWZ1bmN0aW9uIFlYKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtyZXR1cm4gbWEoNTUsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfDB9ZnVuY3Rpb24gWlgoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3JldHVybiBtYSg1NixhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCl8MH1mdW5jdGlvbiBfWChhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7cmV0dXJuIG1hKDU3LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKXwwfWZ1bmN0aW9uICRYKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtyZXR1cm4gbWEoNTgsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfDB9ZnVuY3Rpb24gYVkoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3JldHVybiBtYSg1OSxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCl8MH1mdW5jdGlvbiBiWShhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7cmV0dXJuIG1hKDYwLGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKXwwfWZ1bmN0aW9uIGNZKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDtyZXR1cm4gbWEoNjEsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfDB9ZnVuY3Rpb24gZFkoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3JldHVybiBtYSg2MixhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCl8MH1mdW5jdGlvbiBlWShhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7cmV0dXJuIG1hKDYzLGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKXwwfWZ1bmN0aW9uIGZZKGEsYil7YT1hfDA7Yj1ifDA7cmV0dXJuIFRiW2EmMjU1XShifDApfDB9ZnVuY3Rpb24gZ1koYSl7YT1hfDA7cmV0dXJuIG9hKDAsYXwwKXwwfWZ1bmN0aW9uIGhZKGEpe2E9YXwwO3JldHVybiBvYSgxLGF8MCl8MH1mdW5jdGlvbiBpWShhKXthPWF8MDtyZXR1cm4gb2EoMixhfDApfDB9ZnVuY3Rpb24galkoYSl7YT1hfDA7cmV0dXJuIG9hKDMsYXwwKXwwfWZ1bmN0aW9uIGtZKGEpe2E9YXwwO3JldHVybiBvYSg0LGF8MCl8MH1mdW5jdGlvbiBsWShhKXthPWF8MDtyZXR1cm4gb2EoNSxhfDApfDB9ZnVuY3Rpb24gbVkoYSl7YT1hfDA7cmV0dXJuIG9hKDYsYXwwKXwwfWZ1bmN0aW9uIG5ZKGEpe2E9YXwwO3JldHVybiBvYSg3LGF8MCl8MH1mdW5jdGlvbiBvWShhKXthPWF8MDtyZXR1cm4gb2EoOCxhfDApfDB9ZnVuY3Rpb24gcFkoYSl7YT1hfDA7cmV0dXJuIG9hKDksYXwwKXwwfWZ1bmN0aW9uIHFZKGEpe2E9YXwwO3JldHVybiBvYSgxMCxhfDApfDB9ZnVuY3Rpb24gclkoYSl7YT1hfDA7cmV0dXJuIG9hKDExLGF8MCl8MH1mdW5jdGlvbiBzWShhKXthPWF8MDtyZXR1cm4gb2EoMTIsYXwwKXwwfWZ1bmN0aW9uIHRZKGEpe2E9YXwwO3JldHVybiBvYSgxMyxhfDApfDB9ZnVuY3Rpb24gdVkoYSl7YT1hfDA7cmV0dXJuIG9hKDE0LGF8MCl8MH1mdW5jdGlvbiB2WShhKXthPWF8MDtyZXR1cm4gb2EoMTUsYXwwKXwwfWZ1bmN0aW9uIHdZKGEpe2E9YXwwO3JldHVybiBvYSgxNixhfDApfDB9ZnVuY3Rpb24geFkoYSl7YT1hfDA7cmV0dXJuIG9hKDE3LGF8MCl8MH1mdW5jdGlvbiB5WShhKXthPWF8MDtyZXR1cm4gb2EoMTgsYXwwKXwwfWZ1bmN0aW9uIHpZKGEpe2E9YXwwO3JldHVybiBvYSgxOSxhfDApfDB9ZnVuY3Rpb24gQVkoYSl7YT1hfDA7cmV0dXJuIG9hKDIwLGF8MCl8MH1mdW5jdGlvbiBCWShhKXthPWF8MDtyZXR1cm4gb2EoMjEsYXwwKXwwfWZ1bmN0aW9uIENZKGEpe2E9YXwwO3JldHVybiBvYSgyMixhfDApfDB9ZnVuY3Rpb24gRFkoYSl7YT1hfDA7cmV0dXJuIG9hKDIzLGF8MCl8MH1mdW5jdGlvbiBFWShhKXthPWF8MDtyZXR1cm4gb2EoMjQsYXwwKXwwfWZ1bmN0aW9uIEZZKGEpe2E9YXwwO3JldHVybiBvYSgyNSxhfDApfDB9ZnVuY3Rpb24gR1koYSl7YT1hfDA7cmV0dXJuIG9hKDI2LGF8MCl8MH1mdW5jdGlvbiBIWShhKXthPWF8MDtyZXR1cm4gb2EoMjcsYXwwKXwwfWZ1bmN0aW9uIElZKGEpe2E9YXwwO3JldHVybiBvYSgyOCxhfDApfDB9ZnVuY3Rpb24gSlkoYSl7YT1hfDA7cmV0dXJuIG9hKDI5LGF8MCl8MH1mdW5jdGlvbiBLWShhKXthPWF8MDtyZXR1cm4gb2EoMzAsYXwwKXwwfWZ1bmN0aW9uIExZKGEpe2E9YXwwO3JldHVybiBvYSgzMSxhfDApfDB9ZnVuY3Rpb24gTVkoYSl7YT1hfDA7cmV0dXJuIG9hKDMyLGF8MCl8MH1mdW5jdGlvbiBOWShhKXthPWF8MDtyZXR1cm4gb2EoMzMsYXwwKXwwfWZ1bmN0aW9uIE9ZKGEpe2E9YXwwO3JldHVybiBvYSgzNCxhfDApfDB9ZnVuY3Rpb24gUFkoYSl7YT1hfDA7cmV0dXJuIG9hKDM1LGF8MCl8MH1mdW5jdGlvbiBRWShhKXthPWF8MDtyZXR1cm4gb2EoMzYsYXwwKXwwfWZ1bmN0aW9uIFJZKGEpe2E9YXwwO3JldHVybiBvYSgzNyxhfDApfDB9ZnVuY3Rpb24gU1koYSl7YT1hfDA7cmV0dXJuIG9hKDM4LGF8MCl8MH1mdW5jdGlvbiBUWShhKXthPWF8MDtyZXR1cm4gb2EoMzksYXwwKXwwfWZ1bmN0aW9uIFVZKGEpe2E9YXwwO3JldHVybiBvYSg0MCxhfDApfDB9ZnVuY3Rpb24gVlkoYSl7YT1hfDA7cmV0dXJuIG9hKDQxLGF8MCl8MH1mdW5jdGlvbiBXWShhKXthPWF8MDtyZXR1cm4gb2EoNDIsYXwwKXwwfWZ1bmN0aW9uIFhZKGEpe2E9YXwwO3JldHVybiBvYSg0MyxhfDApfDB9ZnVuY3Rpb24gWVkoYSl7YT1hfDA7cmV0dXJuIG9hKDQ0LGF8MCl8MH1mdW5jdGlvbiBaWShhKXthPWF8MDtyZXR1cm4gb2EoNDUsYXwwKXwwfWZ1bmN0aW9uIF9ZKGEpe2E9YXwwO3JldHVybiBvYSg0NixhfDApfDB9ZnVuY3Rpb24gJFkoYSl7YT1hfDA7cmV0dXJuIG9hKDQ3LGF8MCl8MH1mdW5jdGlvbiBhWihhKXthPWF8MDtyZXR1cm4gb2EoNDgsYXwwKXwwfWZ1bmN0aW9uIGJaKGEpe2E9YXwwO3JldHVybiBvYSg0OSxhfDApfDB9ZnVuY3Rpb24gY1ooYSl7YT1hfDA7cmV0dXJuIG9hKDUwLGF8MCl8MH1mdW5jdGlvbiBkWihhKXthPWF8MDtyZXR1cm4gb2EoNTEsYXwwKXwwfWZ1bmN0aW9uIGVaKGEpe2E9YXwwO3JldHVybiBvYSg1MixhfDApfDB9ZnVuY3Rpb24gZlooYSl7YT1hfDA7cmV0dXJuIG9hKDUzLGF8MCl8MH1mdW5jdGlvbiBnWihhKXthPWF8MDtyZXR1cm4gb2EoNTQsYXwwKXwwfWZ1bmN0aW9uIGhaKGEpe2E9YXwwO3JldHVybiBvYSg1NSxhfDApfDB9ZnVuY3Rpb24gaVooYSl7YT1hfDA7cmV0dXJuIG9hKDU2LGF8MCl8MH1mdW5jdGlvbiBqWihhKXthPWF8MDtyZXR1cm4gb2EoNTcsYXwwKXwwfWZ1bmN0aW9uIGtaKGEpe2E9YXwwO3JldHVybiBvYSg1OCxhfDApfDB9ZnVuY3Rpb24gbFooYSl7YT1hfDA7cmV0dXJuIG9hKDU5LGF8MCl8MH1mdW5jdGlvbiBtWihhKXthPWF8MDtyZXR1cm4gb2EoNjAsYXwwKXwwfWZ1bmN0aW9uIG5aKGEpe2E9YXwwO3JldHVybiBvYSg2MSxhfDApfDB9ZnVuY3Rpb24gb1ooYSl7YT1hfDA7cmV0dXJuIG9hKDYyLGF8MCl8MH1mdW5jdGlvbiBwWihhKXthPWF8MDtyZXR1cm4gb2EoNjMsYXwwKXwwfWZ1bmN0aW9uIHFaKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO1ViW2EmMjU1XShifDAsY3wwLGR8MCl9ZnVuY3Rpb24gclooYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3FhKDAsYXwwLGJ8MCxjfDApfWZ1bmN0aW9uIHNaKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtxYSgxLGF8MCxifDAsY3wwKX1mdW5jdGlvbiB0WihhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7cWEoMixhfDAsYnwwLGN8MCl9ZnVuY3Rpb24gdVooYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3FhKDMsYXwwLGJ8MCxjfDApfWZ1bmN0aW9uIHZaKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtxYSg0LGF8MCxifDAsY3wwKX1mdW5jdGlvbiB3WihhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7cWEoNSxhfDAsYnwwLGN8MCl9ZnVuY3Rpb24geFooYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3FhKDYsYXwwLGJ8MCxjfDApfWZ1bmN0aW9uIHlaKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtxYSg3LGF8MCxifDAsY3wwKX1mdW5jdGlvbiB6WihhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7cWEoOCxhfDAsYnwwLGN8MCl9ZnVuY3Rpb24gQVooYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3FhKDksYXwwLGJ8MCxjfDApfWZ1bmN0aW9uIEJaKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtxYSgxMCxhfDAsYnwwLGN8MCl9ZnVuY3Rpb24gQ1ooYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3FhKDExLGF8MCxifDAsY3wwKX1mdW5jdGlvbiBEWihhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7cWEoMTIsYXwwLGJ8MCxjfDApfWZ1bmN0aW9uIEVaKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtxYSgxMyxhfDAsYnwwLGN8MCl9ZnVuY3Rpb24gRlooYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3FhKDE0LGF8MCxifDAsY3wwKX1mdW5jdGlvbiBHWihhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7cWEoMTUsYXwwLGJ8MCxjfDApfWZ1bmN0aW9uIEhaKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtxYSgxNixhfDAsYnwwLGN8MCl9ZnVuY3Rpb24gSVooYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3FhKDE3LGF8MCxifDAsY3wwKX1mdW5jdGlvbiBKWihhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7cWEoMTgsYXwwLGJ8MCxjfDApfWZ1bmN0aW9uIEtaKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtxYSgxOSxhfDAsYnwwLGN8MCl9ZnVuY3Rpb24gTFooYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3FhKDIwLGF8MCxifDAsY3wwKX1mdW5jdGlvbiBNWihhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7cWEoMjEsYXwwLGJ8MCxjfDApfWZ1bmN0aW9uIE5aKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtxYSgyMixhfDAsYnwwLGN8MCl9ZnVuY3Rpb24gT1ooYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3FhKDIzLGF8MCxifDAsY3wwKX1mdW5jdGlvbiBQWihhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7cWEoMjQsYXwwLGJ8MCxjfDApfWZ1bmN0aW9uIFFaKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtxYSgyNSxhfDAsYnwwLGN8MCl9ZnVuY3Rpb24gUlooYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3FhKDI2LGF8MCxifDAsY3wwKX1mdW5jdGlvbiBTWihhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7cWEoMjcsYXwwLGJ8MCxjfDApfWZ1bmN0aW9uIFRaKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtxYSgyOCxhfDAsYnwwLGN8MCl9ZnVuY3Rpb24gVVooYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3FhKDI5LGF8MCxifDAsY3wwKX1mdW5jdGlvbiBWWihhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7cWEoMzAsYXwwLGJ8MCxjfDApfWZ1bmN0aW9uIFdaKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtxYSgzMSxhfDAsYnwwLGN8MCl9ZnVuY3Rpb24gWFooYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3FhKDMyLGF8MCxifDAsY3wwKX1mdW5jdGlvbiBZWihhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7cWEoMzMsYXwwLGJ8MCxjfDApfWZ1bmN0aW9uIFpaKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtxYSgzNCxhfDAsYnwwLGN8MCl9ZnVuY3Rpb24gX1ooYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3FhKDM1LGF8MCxifDAsY3wwKX1mdW5jdGlvbiAkWihhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7cWEoMzYsYXwwLGJ8MCxjfDApfWZ1bmN0aW9uIGFfKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtxYSgzNyxhfDAsYnwwLGN8MCl9ZnVuY3Rpb24gYl8oYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3FhKDM4LGF8MCxifDAsY3wwKX1mdW5jdGlvbiBjXyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7cWEoMzksYXwwLGJ8MCxjfDApfWZ1bmN0aW9uIGRfKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtxYSg0MCxhfDAsYnwwLGN8MCl9ZnVuY3Rpb24gZV8oYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3FhKDQxLGF8MCxifDAsY3wwKX1mdW5jdGlvbiBmXyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7cWEoNDIsYXwwLGJ8MCxjfDApfWZ1bmN0aW9uIGdfKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtxYSg0MyxhfDAsYnwwLGN8MCl9ZnVuY3Rpb24gaF8oYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3FhKDQ0LGF8MCxifDAsY3wwKX1mdW5jdGlvbiBpXyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7cWEoNDUsYXwwLGJ8MCxjfDApfWZ1bmN0aW9uIGpfKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtxYSg0NixhfDAsYnwwLGN8MCl9ZnVuY3Rpb24ga18oYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3FhKDQ3LGF8MCxifDAsY3wwKX1mdW5jdGlvbiBsXyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7cWEoNDgsYXwwLGJ8MCxjfDApfWZ1bmN0aW9uIG1fKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtxYSg0OSxhfDAsYnwwLGN8MCl9ZnVuY3Rpb24gbl8oYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3FhKDUwLGF8MCxifDAsY3wwKX1mdW5jdGlvbiBvXyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7cWEoNTEsYXwwLGJ8MCxjfDApfWZ1bmN0aW9uIHBfKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtxYSg1MixhfDAsYnwwLGN8MCl9ZnVuY3Rpb24gcV8oYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3FhKDUzLGF8MCxifDAsY3wwKX1mdW5jdGlvbiByXyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7cWEoNTQsYXwwLGJ8MCxjfDApfWZ1bmN0aW9uIHNfKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtxYSg1NSxhfDAsYnwwLGN8MCl9ZnVuY3Rpb24gdF8oYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3FhKDU2LGF8MCxifDAsY3wwKX1mdW5jdGlvbiB1XyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7cWEoNTcsYXwwLGJ8MCxjfDApfWZ1bmN0aW9uIHZfKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtxYSg1OCxhfDAsYnwwLGN8MCl9ZnVuY3Rpb24gd18oYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3FhKDU5LGF8MCxifDAsY3wwKX1mdW5jdGlvbiB4XyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7cWEoNjAsYXwwLGJ8MCxjfDApfWZ1bmN0aW9uIHlfKGEsYixjKXthPWF8MDtiPWJ8MDtjPWN8MDtxYSg2MSxhfDAsYnwwLGN8MCl9ZnVuY3Rpb24gel8oYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3FhKDYyLGF8MCxifDAsY3wwKX1mdW5jdGlvbiBBXyhhLGIsYyl7YT1hfDA7Yj1ifDA7Yz1jfDA7cWEoNjMsYXwwLGJ8MCxjfDApfWZ1bmN0aW9uIEJfKGEpe2E9YXwwO1ZiW2EmMjU1XSgpfWZ1bmN0aW9uIENfKCl7c2EoMCl9ZnVuY3Rpb24gRF8oKXtzYSgxKX1mdW5jdGlvbiBFXygpe3NhKDIpfWZ1bmN0aW9uIEZfKCl7c2EoMyl9ZnVuY3Rpb24gR18oKXtzYSg0KX1mdW5jdGlvbiBIXygpe3NhKDUpfWZ1bmN0aW9uIElfKCl7c2EoNil9ZnVuY3Rpb24gSl8oKXtzYSg3KX1mdW5jdGlvbiBLXygpe3NhKDgpfWZ1bmN0aW9uIExfKCl7c2EoOSl9ZnVuY3Rpb24gTV8oKXtzYSgxMCl9ZnVuY3Rpb24gTl8oKXtzYSgxMSl9ZnVuY3Rpb24gT18oKXtzYSgxMil9ZnVuY3Rpb24gUF8oKXtzYSgxMyl9ZnVuY3Rpb24gUV8oKXtzYSgxNCl9ZnVuY3Rpb24gUl8oKXtzYSgxNSl9ZnVuY3Rpb24gU18oKXtzYSgxNil9ZnVuY3Rpb24gVF8oKXtzYSgxNyl9ZnVuY3Rpb24gVV8oKXtzYSgxOCl9ZnVuY3Rpb24gVl8oKXtzYSgxOSl9ZnVuY3Rpb24gV18oKXtzYSgyMCl9ZnVuY3Rpb24gWF8oKXtzYSgyMSl9ZnVuY3Rpb24gWV8oKXtzYSgyMil9ZnVuY3Rpb24gWl8oKXtzYSgyMyl9ZnVuY3Rpb24gX18oKXtzYSgyNCl9ZnVuY3Rpb24gJF8oKXtzYSgyNSl9ZnVuY3Rpb24gYSQoKXtzYSgyNil9ZnVuY3Rpb24gYiQoKXtzYSgyNyl9ZnVuY3Rpb24gYyQoKXtzYSgyOCl9ZnVuY3Rpb24gZCQoKXtzYSgyOSl9ZnVuY3Rpb24gZSQoKXtzYSgzMCl9ZnVuY3Rpb24gZiQoKXtzYSgzMSl9ZnVuY3Rpb24gZyQoKXtzYSgzMil9ZnVuY3Rpb24gaCQoKXtzYSgzMyl9ZnVuY3Rpb24gaSQoKXtzYSgzNCl9ZnVuY3Rpb24gaiQoKXtzYSgzNSl9ZnVuY3Rpb24gayQoKXtzYSgzNil9ZnVuY3Rpb24gbCQoKXtzYSgzNyl9ZnVuY3Rpb24gbSQoKXtzYSgzOCl9ZnVuY3Rpb24gbiQoKXtzYSgzOSl9ZnVuY3Rpb24gbyQoKXtzYSg0MCl9ZnVuY3Rpb24gcCQoKXtzYSg0MSl9ZnVuY3Rpb24gcSQoKXtzYSg0Mil9ZnVuY3Rpb24gciQoKXtzYSg0Myl9ZnVuY3Rpb24gcyQoKXtzYSg0NCl9ZnVuY3Rpb24gdCQoKXtzYSg0NSl9ZnVuY3Rpb24gdSQoKXtzYSg0Nil9ZnVuY3Rpb24gdiQoKXtzYSg0Nyl9ZnVuY3Rpb24gdyQoKXtzYSg0OCl9ZnVuY3Rpb24geCQoKXtzYSg0OSl9ZnVuY3Rpb24geSQoKXtzYSg1MCl9ZnVuY3Rpb24geiQoKXtzYSg1MSl9ZnVuY3Rpb24gQSQoKXtzYSg1Mil9ZnVuY3Rpb24gQiQoKXtzYSg1Myl9ZnVuY3Rpb24gQyQoKXtzYSg1NCl9ZnVuY3Rpb24gRCQoKXtzYSg1NSl9ZnVuY3Rpb24gRSQoKXtzYSg1Nil9ZnVuY3Rpb24gRiQoKXtzYSg1Nyl9ZnVuY3Rpb24gRyQoKXtzYSg1OCl9ZnVuY3Rpb24gSCQoKXtzYSg1OSl9ZnVuY3Rpb24gSSQoKXtzYSg2MCl9ZnVuY3Rpb24gSiQoKXtzYSg2MSl9ZnVuY3Rpb24gSyQoKXtzYSg2Mil9ZnVuY3Rpb24gTCQoKXtzYSg2Myl9ZnVuY3Rpb24gTSQoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtyZXR1cm4gV2JbYSYyNTVdKGJ8MCxjfDAsZHwwLGV8MCl8MH1mdW5jdGlvbiBOJChhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtyZXR1cm4gdWEoMCxhfDAsYnwwLGN8MCxkfDApfDB9ZnVuY3Rpb24gTyQoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7cmV0dXJuIHVhKDEsYXwwLGJ8MCxjfDAsZHwwKXwwfWZ1bmN0aW9uIFAkKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3JldHVybiB1YSgyLGF8MCxifDAsY3wwLGR8MCl8MH1mdW5jdGlvbiBRJChhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtyZXR1cm4gdWEoMyxhfDAsYnwwLGN8MCxkfDApfDB9ZnVuY3Rpb24gUiQoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7cmV0dXJuIHVhKDQsYXwwLGJ8MCxjfDAsZHwwKXwwfWZ1bmN0aW9uIFMkKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3JldHVybiB1YSg1LGF8MCxifDAsY3wwLGR8MCl8MH1mdW5jdGlvbiBUJChhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtyZXR1cm4gdWEoNixhfDAsYnwwLGN8MCxkfDApfDB9ZnVuY3Rpb24gVSQoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7cmV0dXJuIHVhKDcsYXwwLGJ8MCxjfDAsZHwwKXwwfWZ1bmN0aW9uIFYkKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3JldHVybiB1YSg4LGF8MCxifDAsY3wwLGR8MCl8MH1mdW5jdGlvbiBXJChhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtyZXR1cm4gdWEoOSxhfDAsYnwwLGN8MCxkfDApfDB9ZnVuY3Rpb24gWCQoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7cmV0dXJuIHVhKDEwLGF8MCxifDAsY3wwLGR8MCl8MH1mdW5jdGlvbiBZJChhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtyZXR1cm4gdWEoMTEsYXwwLGJ8MCxjfDAsZHwwKXwwfWZ1bmN0aW9uIFokKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3JldHVybiB1YSgxMixhfDAsYnwwLGN8MCxkfDApfDB9ZnVuY3Rpb24gXyQoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7cmV0dXJuIHVhKDEzLGF8MCxifDAsY3wwLGR8MCl8MH1mdW5jdGlvbiAkJChhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtyZXR1cm4gdWEoMTQsYXwwLGJ8MCxjfDAsZHwwKXwwfWZ1bmN0aW9uIGEwKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3JldHVybiB1YSgxNSxhfDAsYnwwLGN8MCxkfDApfDB9ZnVuY3Rpb24gYjAoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7cmV0dXJuIHVhKDE2LGF8MCxifDAsY3wwLGR8MCl8MH1mdW5jdGlvbiBjMChhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtyZXR1cm4gdWEoMTcsYXwwLGJ8MCxjfDAsZHwwKXwwfWZ1bmN0aW9uIGQwKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3JldHVybiB1YSgxOCxhfDAsYnwwLGN8MCxkfDApfDB9ZnVuY3Rpb24gZTAoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7cmV0dXJuIHVhKDE5LGF8MCxifDAsY3wwLGR8MCl8MH1mdW5jdGlvbiBmMChhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtyZXR1cm4gdWEoMjAsYXwwLGJ8MCxjfDAsZHwwKXwwfWZ1bmN0aW9uIGcwKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3JldHVybiB1YSgyMSxhfDAsYnwwLGN8MCxkfDApfDB9ZnVuY3Rpb24gaDAoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7cmV0dXJuIHVhKDIyLGF8MCxifDAsY3wwLGR8MCl8MH1mdW5jdGlvbiBpMChhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtyZXR1cm4gdWEoMjMsYXwwLGJ8MCxjfDAsZHwwKXwwfWZ1bmN0aW9uIGowKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3JldHVybiB1YSgyNCxhfDAsYnwwLGN8MCxkfDApfDB9ZnVuY3Rpb24gazAoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7cmV0dXJuIHVhKDI1LGF8MCxifDAsY3wwLGR8MCl8MH1mdW5jdGlvbiBsMChhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtyZXR1cm4gdWEoMjYsYXwwLGJ8MCxjfDAsZHwwKXwwfWZ1bmN0aW9uIG0wKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3JldHVybiB1YSgyNyxhfDAsYnwwLGN8MCxkfDApfDB9ZnVuY3Rpb24gbjAoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7cmV0dXJuIHVhKDI4LGF8MCxifDAsY3wwLGR8MCl8MH1mdW5jdGlvbiBvMChhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtyZXR1cm4gdWEoMjksYXwwLGJ8MCxjfDAsZHwwKXwwfWZ1bmN0aW9uIHAwKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3JldHVybiB1YSgzMCxhfDAsYnwwLGN8MCxkfDApfDB9ZnVuY3Rpb24gcTAoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7cmV0dXJuIHVhKDMxLGF8MCxifDAsY3wwLGR8MCl8MH1mdW5jdGlvbiByMChhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtyZXR1cm4gdWEoMzIsYXwwLGJ8MCxjfDAsZHwwKXwwfWZ1bmN0aW9uIHMwKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3JldHVybiB1YSgzMyxhfDAsYnwwLGN8MCxkfDApfDB9ZnVuY3Rpb24gdDAoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7cmV0dXJuIHVhKDM0LGF8MCxifDAsY3wwLGR8MCl8MH1mdW5jdGlvbiB1MChhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtyZXR1cm4gdWEoMzUsYXwwLGJ8MCxjfDAsZHwwKXwwfWZ1bmN0aW9uIHYwKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3JldHVybiB1YSgzNixhfDAsYnwwLGN8MCxkfDApfDB9ZnVuY3Rpb24gdzAoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7cmV0dXJuIHVhKDM3LGF8MCxifDAsY3wwLGR8MCl8MH1mdW5jdGlvbiB4MChhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtyZXR1cm4gdWEoMzgsYXwwLGJ8MCxjfDAsZHwwKXwwfWZ1bmN0aW9uIHkwKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3JldHVybiB1YSgzOSxhfDAsYnwwLGN8MCxkfDApfDB9ZnVuY3Rpb24gejAoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7cmV0dXJuIHVhKDQwLGF8MCxifDAsY3wwLGR8MCl8MH1mdW5jdGlvbiBBMChhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtyZXR1cm4gdWEoNDEsYXwwLGJ8MCxjfDAsZHwwKXwwfWZ1bmN0aW9uIEIwKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3JldHVybiB1YSg0MixhfDAsYnwwLGN8MCxkfDApfDB9ZnVuY3Rpb24gQzAoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7cmV0dXJuIHVhKDQzLGF8MCxifDAsY3wwLGR8MCl8MH1mdW5jdGlvbiBEMChhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtyZXR1cm4gdWEoNDQsYXwwLGJ8MCxjfDAsZHwwKXwwfWZ1bmN0aW9uIEUwKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3JldHVybiB1YSg0NSxhfDAsYnwwLGN8MCxkfDApfDB9ZnVuY3Rpb24gRjAoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7cmV0dXJuIHVhKDQ2LGF8MCxifDAsY3wwLGR8MCl8MH1mdW5jdGlvbiBHMChhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtyZXR1cm4gdWEoNDcsYXwwLGJ8MCxjfDAsZHwwKXwwfWZ1bmN0aW9uIEgwKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3JldHVybiB1YSg0OCxhfDAsYnwwLGN8MCxkfDApfDB9ZnVuY3Rpb24gSTAoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7cmV0dXJuIHVhKDQ5LGF8MCxifDAsY3wwLGR8MCl8MH1mdW5jdGlvbiBKMChhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtyZXR1cm4gdWEoNTAsYXwwLGJ8MCxjfDAsZHwwKXwwfWZ1bmN0aW9uIEswKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3JldHVybiB1YSg1MSxhfDAsYnwwLGN8MCxkfDApfDB9ZnVuY3Rpb24gTDAoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7cmV0dXJuIHVhKDUyLGF8MCxifDAsY3wwLGR8MCl8MH1mdW5jdGlvbiBNMChhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtyZXR1cm4gdWEoNTMsYXwwLGJ8MCxjfDAsZHwwKXwwfWZ1bmN0aW9uIE4wKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3JldHVybiB1YSg1NCxhfDAsYnwwLGN8MCxkfDApfDB9ZnVuY3Rpb24gTzAoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7cmV0dXJuIHVhKDU1LGF8MCxifDAsY3wwLGR8MCl8MH1mdW5jdGlvbiBQMChhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtyZXR1cm4gdWEoNTYsYXwwLGJ8MCxjfDAsZHwwKXwwfWZ1bmN0aW9uIFEwKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3JldHVybiB1YSg1NyxhfDAsYnwwLGN8MCxkfDApfDB9ZnVuY3Rpb24gUjAoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7cmV0dXJuIHVhKDU4LGF8MCxifDAsY3wwLGR8MCl8MH1mdW5jdGlvbiBTMChhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtyZXR1cm4gdWEoNTksYXwwLGJ8MCxjfDAsZHwwKXwwfWZ1bmN0aW9uIFQwKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3JldHVybiB1YSg2MCxhfDAsYnwwLGN8MCxkfDApfDB9ZnVuY3Rpb24gVTAoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7cmV0dXJuIHVhKDYxLGF8MCxifDAsY3wwLGR8MCl8MH1mdW5jdGlvbiBWMChhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtyZXR1cm4gdWEoNjIsYXwwLGJ8MCxjfDAsZHwwKXwwfWZ1bmN0aW9uIFcwKGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO3JldHVybiB1YSg2MyxhfDAsYnwwLGN8MCxkfDApfDB9ZnVuY3Rpb24gWDAoYSxiLGMsZCxlLGYsZyl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7Zz1nfDA7WGJbYSYyNTVdKGJ8MCxjfDAsZHwwLGV8MCxmfDAsZ3wwKX1mdW5jdGlvbiBZMChhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7d2EoMCxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCl9ZnVuY3Rpb24gWjAoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3dhKDEsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfWZ1bmN0aW9uIF8wKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDt3YSgyLGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKX1mdW5jdGlvbiAkMChhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7d2EoMyxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCl9ZnVuY3Rpb24gYTEoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3dhKDQsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfWZ1bmN0aW9uIGIxKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDt3YSg1LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKX1mdW5jdGlvbiBjMShhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7d2EoNixhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCl9ZnVuY3Rpb24gZDEoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3dhKDcsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfWZ1bmN0aW9uIGUxKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDt3YSg4LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKX1mdW5jdGlvbiBmMShhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7d2EoOSxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCl9ZnVuY3Rpb24gZzEoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3dhKDEwLGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKX1mdW5jdGlvbiBoMShhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7d2EoMTEsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfWZ1bmN0aW9uIGkxKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDt3YSgxMixhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCl9ZnVuY3Rpb24gajEoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3dhKDEzLGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKX1mdW5jdGlvbiBrMShhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7d2EoMTQsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfWZ1bmN0aW9uIGwxKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDt3YSgxNSxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCl9ZnVuY3Rpb24gbTEoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3dhKDE2LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKX1mdW5jdGlvbiBuMShhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7d2EoMTcsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfWZ1bmN0aW9uIG8xKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDt3YSgxOCxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCl9ZnVuY3Rpb24gcDEoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3dhKDE5LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKX1mdW5jdGlvbiBxMShhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7d2EoMjAsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfWZ1bmN0aW9uIHIxKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDt3YSgyMSxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCl9ZnVuY3Rpb24gczEoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3dhKDIyLGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKX1mdW5jdGlvbiB0MShhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7d2EoMjMsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfWZ1bmN0aW9uIHUxKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDt3YSgyNCxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCl9ZnVuY3Rpb24gdjEoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3dhKDI1LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKX1mdW5jdGlvbiB3MShhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7d2EoMjYsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfWZ1bmN0aW9uIHgxKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDt3YSgyNyxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCl9ZnVuY3Rpb24geTEoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3dhKDI4LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKX1mdW5jdGlvbiB6MShhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7d2EoMjksYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfWZ1bmN0aW9uIEExKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDt3YSgzMCxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCl9ZnVuY3Rpb24gQjEoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3dhKDMxLGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKX1mdW5jdGlvbiBDMShhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7d2EoMzIsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfWZ1bmN0aW9uIEQxKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDt3YSgzMyxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCl9ZnVuY3Rpb24gRTEoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3dhKDM0LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKX1mdW5jdGlvbiBGMShhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7d2EoMzUsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfWZ1bmN0aW9uIEcxKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDt3YSgzNixhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCl9ZnVuY3Rpb24gSDEoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3dhKDM3LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKX1mdW5jdGlvbiBJMShhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7d2EoMzgsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfWZ1bmN0aW9uIEoxKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDt3YSgzOSxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCl9ZnVuY3Rpb24gSzEoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3dhKDQwLGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKX1mdW5jdGlvbiBMMShhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7d2EoNDEsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfWZ1bmN0aW9uIE0xKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDt3YSg0MixhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCl9ZnVuY3Rpb24gTjEoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3dhKDQzLGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKX1mdW5jdGlvbiBPMShhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7d2EoNDQsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfWZ1bmN0aW9uIFAxKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDt3YSg0NSxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCl9ZnVuY3Rpb24gUTEoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3dhKDQ2LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKX1mdW5jdGlvbiBSMShhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7d2EoNDcsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfWZ1bmN0aW9uIFMxKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDt3YSg0OCxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCl9ZnVuY3Rpb24gVDEoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3dhKDQ5LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKX1mdW5jdGlvbiBVMShhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7d2EoNTAsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfWZ1bmN0aW9uIFYxKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDt3YSg1MSxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCl9ZnVuY3Rpb24gVzEoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3dhKDUyLGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKX1mdW5jdGlvbiBYMShhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7d2EoNTMsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfWZ1bmN0aW9uIFkxKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDt3YSg1NCxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCl9ZnVuY3Rpb24gWjEoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3dhKDU1LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKX1mdW5jdGlvbiBfMShhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7d2EoNTYsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfWZ1bmN0aW9uICQxKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDt3YSg1NyxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCl9ZnVuY3Rpb24gYTIoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3dhKDU4LGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKX1mdW5jdGlvbiBiMihhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7d2EoNTksYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfWZ1bmN0aW9uIGMyKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDt3YSg2MCxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCl9ZnVuY3Rpb24gZDIoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3dhKDYxLGF8MCxifDAsY3wwLGR8MCxlfDAsZnwwKX1mdW5jdGlvbiBlMihhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7d2EoNjIsYXwwLGJ8MCxjfDAsZHwwLGV8MCxmfDApfWZ1bmN0aW9uIGYyKGEsYixjLGQsZSxmKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtmPWZ8MDt3YSg2MyxhfDAsYnwwLGN8MCxkfDAsZXwwLGZ8MCl9ZnVuY3Rpb24gZzIoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO3JldHVybiBZYlthJjI1NV0oYnwwLGN8MCl8MH1mdW5jdGlvbiBoMihhLGIpe2E9YXwwO2I9YnwwO3JldHVybiB5YSgwLGF8MCxifDApfDB9ZnVuY3Rpb24gaTIoYSxiKXthPWF8MDtiPWJ8MDtyZXR1cm4geWEoMSxhfDAsYnwwKXwwfWZ1bmN0aW9uIGoyKGEsYil7YT1hfDA7Yj1ifDA7cmV0dXJuIHlhKDIsYXwwLGJ8MCl8MH1mdW5jdGlvbiBrMihhLGIpe2E9YXwwO2I9YnwwO3JldHVybiB5YSgzLGF8MCxifDApfDB9ZnVuY3Rpb24gbDIoYSxiKXthPWF8MDtiPWJ8MDtyZXR1cm4geWEoNCxhfDAsYnwwKXwwfWZ1bmN0aW9uIG0yKGEsYil7YT1hfDA7Yj1ifDA7cmV0dXJuIHlhKDUsYXwwLGJ8MCl8MH1mdW5jdGlvbiBuMihhLGIpe2E9YXwwO2I9YnwwO3JldHVybiB5YSg2LGF8MCxifDApfDB9ZnVuY3Rpb24gbzIoYSxiKXthPWF8MDtiPWJ8MDtyZXR1cm4geWEoNyxhfDAsYnwwKXwwfWZ1bmN0aW9uIHAyKGEsYil7YT1hfDA7Yj1ifDA7cmV0dXJuIHlhKDgsYXwwLGJ8MCl8MH1mdW5jdGlvbiBxMihhLGIpe2E9YXwwO2I9YnwwO3JldHVybiB5YSg5LGF8MCxifDApfDB9ZnVuY3Rpb24gcjIoYSxiKXthPWF8MDtiPWJ8MDtyZXR1cm4geWEoMTAsYXwwLGJ8MCl8MH1mdW5jdGlvbiBzMihhLGIpe2E9YXwwO2I9YnwwO3JldHVybiB5YSgxMSxhfDAsYnwwKXwwfWZ1bmN0aW9uIHQyKGEsYil7YT1hfDA7Yj1ifDA7cmV0dXJuIHlhKDEyLGF8MCxifDApfDB9ZnVuY3Rpb24gdTIoYSxiKXthPWF8MDtiPWJ8MDtyZXR1cm4geWEoMTMsYXwwLGJ8MCl8MH1mdW5jdGlvbiB2MihhLGIpe2E9YXwwO2I9YnwwO3JldHVybiB5YSgxNCxhfDAsYnwwKXwwfWZ1bmN0aW9uIHcyKGEsYil7YT1hfDA7Yj1ifDA7cmV0dXJuIHlhKDE1LGF8MCxifDApfDB9ZnVuY3Rpb24geDIoYSxiKXthPWF8MDtiPWJ8MDtyZXR1cm4geWEoMTYsYXwwLGJ8MCl8MH1mdW5jdGlvbiB5MihhLGIpe2E9YXwwO2I9YnwwO3JldHVybiB5YSgxNyxhfDAsYnwwKXwwfWZ1bmN0aW9uIHoyKGEsYil7YT1hfDA7Yj1ifDA7cmV0dXJuIHlhKDE4LGF8MCxifDApfDB9ZnVuY3Rpb24gQTIoYSxiKXthPWF8MDtiPWJ8MDtyZXR1cm4geWEoMTksYXwwLGJ8MCl8MH1mdW5jdGlvbiBCMihhLGIpe2E9YXwwO2I9YnwwO3JldHVybiB5YSgyMCxhfDAsYnwwKXwwfWZ1bmN0aW9uIEMyKGEsYil7YT1hfDA7Yj1ifDA7cmV0dXJuIHlhKDIxLGF8MCxifDApfDB9ZnVuY3Rpb24gRDIoYSxiKXthPWF8MDtiPWJ8MDtyZXR1cm4geWEoMjIsYXwwLGJ8MCl8MH1mdW5jdGlvbiBFMihhLGIpe2E9YXwwO2I9YnwwO3JldHVybiB5YSgyMyxhfDAsYnwwKXwwfWZ1bmN0aW9uIEYyKGEsYil7YT1hfDA7Yj1ifDA7cmV0dXJuIHlhKDI0LGF8MCxifDApfDB9ZnVuY3Rpb24gRzIoYSxiKXthPWF8MDtiPWJ8MDtyZXR1cm4geWEoMjUsYXwwLGJ8MCl8MH1mdW5jdGlvbiBIMihhLGIpe2E9YXwwO2I9YnwwO3JldHVybiB5YSgyNixhfDAsYnwwKXwwfWZ1bmN0aW9uIEkyKGEsYil7YT1hfDA7Yj1ifDA7cmV0dXJuIHlhKDI3LGF8MCxifDApfDB9ZnVuY3Rpb24gSjIoYSxiKXthPWF8MDtiPWJ8MDtyZXR1cm4geWEoMjgsYXwwLGJ8MCl8MH1mdW5jdGlvbiBLMihhLGIpe2E9YXwwO2I9YnwwO3JldHVybiB5YSgyOSxhfDAsYnwwKXwwfWZ1bmN0aW9uIEwyKGEsYil7YT1hfDA7Yj1ifDA7cmV0dXJuIHlhKDMwLGF8MCxifDApfDB9ZnVuY3Rpb24gTTIoYSxiKXthPWF8MDtiPWJ8MDtyZXR1cm4geWEoMzEsYXwwLGJ8MCl8MH1mdW5jdGlvbiBOMihhLGIpe2E9YXwwO2I9YnwwO3JldHVybiB5YSgzMixhfDAsYnwwKXwwfWZ1bmN0aW9uIE8yKGEsYil7YT1hfDA7Yj1ifDA7cmV0dXJuIHlhKDMzLGF8MCxifDApfDB9ZnVuY3Rpb24gUDIoYSxiKXthPWF8MDtiPWJ8MDtyZXR1cm4geWEoMzQsYXwwLGJ8MCl8MH1mdW5jdGlvbiBRMihhLGIpe2E9YXwwO2I9YnwwO3JldHVybiB5YSgzNSxhfDAsYnwwKXwwfWZ1bmN0aW9uIFIyKGEsYil7YT1hfDA7Yj1ifDA7cmV0dXJuIHlhKDM2LGF8MCxifDApfDB9ZnVuY3Rpb24gUzIoYSxiKXthPWF8MDtiPWJ8MDtyZXR1cm4geWEoMzcsYXwwLGJ8MCl8MH1mdW5jdGlvbiBUMihhLGIpe2E9YXwwO2I9YnwwO3JldHVybiB5YSgzOCxhfDAsYnwwKXwwfWZ1bmN0aW9uIFUyKGEsYil7YT1hfDA7Yj1ifDA7cmV0dXJuIHlhKDM5LGF8MCxifDApfDB9ZnVuY3Rpb24gVjIoYSxiKXthPWF8MDtiPWJ8MDtyZXR1cm4geWEoNDAsYXwwLGJ8MCl8MH1mdW5jdGlvbiBXMihhLGIpe2E9YXwwO2I9YnwwO3JldHVybiB5YSg0MSxhfDAsYnwwKXwwfWZ1bmN0aW9uIFgyKGEsYil7YT1hfDA7Yj1ifDA7cmV0dXJuIHlhKDQyLGF8MCxifDApfDB9ZnVuY3Rpb24gWTIoYSxiKXthPWF8MDtiPWJ8MDtyZXR1cm4geWEoNDMsYXwwLGJ8MCl8MH1mdW5jdGlvbiBaMihhLGIpe2E9YXwwO2I9YnwwO3JldHVybiB5YSg0NCxhfDAsYnwwKXwwfWZ1bmN0aW9uIF8yKGEsYil7YT1hfDA7Yj1ifDA7cmV0dXJuIHlhKDQ1LGF8MCxifDApfDB9ZnVuY3Rpb24gJDIoYSxiKXthPWF8MDtiPWJ8MDtyZXR1cm4geWEoNDYsYXwwLGJ8MCl8MH1mdW5jdGlvbiBhMyhhLGIpe2E9YXwwO2I9YnwwO3JldHVybiB5YSg0NyxhfDAsYnwwKXwwfWZ1bmN0aW9uIGIzKGEsYil7YT1hfDA7Yj1ifDA7cmV0dXJuIHlhKDQ4LGF8MCxifDApfDB9ZnVuY3Rpb24gYzMoYSxiKXthPWF8MDtiPWJ8MDtyZXR1cm4geWEoNDksYXwwLGJ8MCl8MH1mdW5jdGlvbiBkMyhhLGIpe2E9YXwwO2I9YnwwO3JldHVybiB5YSg1MCxhfDAsYnwwKXwwfWZ1bmN0aW9uIGUzKGEsYil7YT1hfDA7Yj1ifDA7cmV0dXJuIHlhKDUxLGF8MCxifDApfDB9ZnVuY3Rpb24gZjMoYSxiKXthPWF8MDtiPWJ8MDtyZXR1cm4geWEoNTIsYXwwLGJ8MCl8MH1mdW5jdGlvbiBnMyhhLGIpe2E9YXwwO2I9YnwwO3JldHVybiB5YSg1MyxhfDAsYnwwKXwwfWZ1bmN0aW9uIGgzKGEsYil7YT1hfDA7Yj1ifDA7cmV0dXJuIHlhKDU0LGF8MCxifDApfDB9ZnVuY3Rpb24gaTMoYSxiKXthPWF8MDtiPWJ8MDtyZXR1cm4geWEoNTUsYXwwLGJ8MCl8MH1mdW5jdGlvbiBqMyhhLGIpe2E9YXwwO2I9YnwwO3JldHVybiB5YSg1NixhfDAsYnwwKXwwfWZ1bmN0aW9uIGszKGEsYil7YT1hfDA7Yj1ifDA7cmV0dXJuIHlhKDU3LGF8MCxifDApfDB9ZnVuY3Rpb24gbDMoYSxiKXthPWF8MDtiPWJ8MDtyZXR1cm4geWEoNTgsYXwwLGJ8MCl8MH1mdW5jdGlvbiBtMyhhLGIpe2E9YXwwO2I9YnwwO3JldHVybiB5YSg1OSxhfDAsYnwwKXwwfWZ1bmN0aW9uIG4zKGEsYil7YT1hfDA7Yj1ifDA7cmV0dXJuIHlhKDYwLGF8MCxifDApfDB9ZnVuY3Rpb24gbzMoYSxiKXthPWF8MDtiPWJ8MDtyZXR1cm4geWEoNjEsYXwwLGJ8MCl8MH1mdW5jdGlvbiBwMyhhLGIpe2E9YXwwO2I9YnwwO3JldHVybiB5YSg2MixhfDAsYnwwKXwwfWZ1bmN0aW9uIHEzKGEsYil7YT1hfDA7Yj1ifDA7cmV0dXJuIHlhKDYzLGF8MCxifDApfDB9ZnVuY3Rpb24gcjMoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO3JldHVybiBaYlthJjI1NV0oYnwwLGN8MCxkfDAsZXwwLGZ8MCl8MH1mdW5jdGlvbiBzMyhhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3JldHVybiBBYSgwLGF8MCxifDAsY3wwLGR8MCxlfDApfDB9ZnVuY3Rpb24gdDMoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtyZXR1cm4gQWEoMSxhfDAsYnwwLGN8MCxkfDAsZXwwKXwwfWZ1bmN0aW9uIHUzKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7cmV0dXJuIEFhKDIsYXwwLGJ8MCxjfDAsZHwwLGV8MCl8MH1mdW5jdGlvbiB2MyhhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3JldHVybiBBYSgzLGF8MCxifDAsY3wwLGR8MCxlfDApfDB9ZnVuY3Rpb24gdzMoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtyZXR1cm4gQWEoNCxhfDAsYnwwLGN8MCxkfDAsZXwwKXwwfWZ1bmN0aW9uIHgzKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7cmV0dXJuIEFhKDUsYXwwLGJ8MCxjfDAsZHwwLGV8MCl8MH1mdW5jdGlvbiB5MyhhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3JldHVybiBBYSg2LGF8MCxifDAsY3wwLGR8MCxlfDApfDB9ZnVuY3Rpb24gejMoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtyZXR1cm4gQWEoNyxhfDAsYnwwLGN8MCxkfDAsZXwwKXwwfWZ1bmN0aW9uIEEzKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7cmV0dXJuIEFhKDgsYXwwLGJ8MCxjfDAsZHwwLGV8MCl8MH1mdW5jdGlvbiBCMyhhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3JldHVybiBBYSg5LGF8MCxifDAsY3wwLGR8MCxlfDApfDB9ZnVuY3Rpb24gQzMoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtyZXR1cm4gQWEoMTAsYXwwLGJ8MCxjfDAsZHwwLGV8MCl8MH1mdW5jdGlvbiBEMyhhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3JldHVybiBBYSgxMSxhfDAsYnwwLGN8MCxkfDAsZXwwKXwwfWZ1bmN0aW9uIEUzKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7cmV0dXJuIEFhKDEyLGF8MCxifDAsY3wwLGR8MCxlfDApfDB9ZnVuY3Rpb24gRjMoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtyZXR1cm4gQWEoMTMsYXwwLGJ8MCxjfDAsZHwwLGV8MCl8MH1mdW5jdGlvbiBHMyhhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3JldHVybiBBYSgxNCxhfDAsYnwwLGN8MCxkfDAsZXwwKXwwfWZ1bmN0aW9uIEgzKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7cmV0dXJuIEFhKDE1LGF8MCxifDAsY3wwLGR8MCxlfDApfDB9ZnVuY3Rpb24gSTMoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtyZXR1cm4gQWEoMTYsYXwwLGJ8MCxjfDAsZHwwLGV8MCl8MH1mdW5jdGlvbiBKMyhhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3JldHVybiBBYSgxNyxhfDAsYnwwLGN8MCxkfDAsZXwwKXwwfWZ1bmN0aW9uIEszKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7cmV0dXJuIEFhKDE4LGF8MCxifDAsY3wwLGR8MCxlfDApfDB9ZnVuY3Rpb24gTDMoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtyZXR1cm4gQWEoMTksYXwwLGJ8MCxjfDAsZHwwLGV8MCl8MH1mdW5jdGlvbiBNMyhhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3JldHVybiBBYSgyMCxhfDAsYnwwLGN8MCxkfDAsZXwwKXwwfWZ1bmN0aW9uIE4zKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7cmV0dXJuIEFhKDIxLGF8MCxifDAsY3wwLGR8MCxlfDApfDB9ZnVuY3Rpb24gTzMoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtyZXR1cm4gQWEoMjIsYXwwLGJ8MCxjfDAsZHwwLGV8MCl8MH1mdW5jdGlvbiBQMyhhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3JldHVybiBBYSgyMyxhfDAsYnwwLGN8MCxkfDAsZXwwKXwwfWZ1bmN0aW9uIFEzKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7cmV0dXJuIEFhKDI0LGF8MCxifDAsY3wwLGR8MCxlfDApfDB9ZnVuY3Rpb24gUjMoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtyZXR1cm4gQWEoMjUsYXwwLGJ8MCxjfDAsZHwwLGV8MCl8MH1mdW5jdGlvbiBTMyhhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3JldHVybiBBYSgyNixhfDAsYnwwLGN8MCxkfDAsZXwwKXwwfWZ1bmN0aW9uIFQzKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7cmV0dXJuIEFhKDI3LGF8MCxifDAsY3wwLGR8MCxlfDApfDB9ZnVuY3Rpb24gVTMoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtyZXR1cm4gQWEoMjgsYXwwLGJ8MCxjfDAsZHwwLGV8MCl8MH1mdW5jdGlvbiBWMyhhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3JldHVybiBBYSgyOSxhfDAsYnwwLGN8MCxkfDAsZXwwKXwwfWZ1bmN0aW9uIFczKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7cmV0dXJuIEFhKDMwLGF8MCxifDAsY3wwLGR8MCxlfDApfDB9ZnVuY3Rpb24gWDMoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtyZXR1cm4gQWEoMzEsYXwwLGJ8MCxjfDAsZHwwLGV8MCl8MH1mdW5jdGlvbiBZMyhhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3JldHVybiBBYSgzMixhfDAsYnwwLGN8MCxkfDAsZXwwKXwwfWZ1bmN0aW9uIFozKGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7cmV0dXJuIEFhKDMzLGF8MCxifDAsY3wwLGR8MCxlfDApfDB9ZnVuY3Rpb24gXzMoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtyZXR1cm4gQWEoMzQsYXwwLGJ8MCxjfDAsZHwwLGV8MCl8MH1mdW5jdGlvbiAkMyhhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3JldHVybiBBYSgzNSxhfDAsYnwwLGN8MCxkfDAsZXwwKXwwfWZ1bmN0aW9uIGE0KGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7cmV0dXJuIEFhKDM2LGF8MCxifDAsY3wwLGR8MCxlfDApfDB9ZnVuY3Rpb24gYjQoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtyZXR1cm4gQWEoMzcsYXwwLGJ8MCxjfDAsZHwwLGV8MCl8MH1mdW5jdGlvbiBjNChhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3JldHVybiBBYSgzOCxhfDAsYnwwLGN8MCxkfDAsZXwwKXwwfWZ1bmN0aW9uIGQ0KGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7cmV0dXJuIEFhKDM5LGF8MCxifDAsY3wwLGR8MCxlfDApfDB9ZnVuY3Rpb24gZTQoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtyZXR1cm4gQWEoNDAsYXwwLGJ8MCxjfDAsZHwwLGV8MCl8MH1mdW5jdGlvbiBmNChhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3JldHVybiBBYSg0MSxhfDAsYnwwLGN8MCxkfDAsZXwwKXwwfWZ1bmN0aW9uIGc0KGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7cmV0dXJuIEFhKDQyLGF8MCxifDAsY3wwLGR8MCxlfDApfDB9ZnVuY3Rpb24gaDQoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtyZXR1cm4gQWEoNDMsYXwwLGJ8MCxjfDAsZHwwLGV8MCl8MH1mdW5jdGlvbiBpNChhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3JldHVybiBBYSg0NCxhfDAsYnwwLGN8MCxkfDAsZXwwKXwwfWZ1bmN0aW9uIGo0KGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7cmV0dXJuIEFhKDQ1LGF8MCxifDAsY3wwLGR8MCxlfDApfDB9ZnVuY3Rpb24gazQoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtyZXR1cm4gQWEoNDYsYXwwLGJ8MCxjfDAsZHwwLGV8MCl8MH1mdW5jdGlvbiBsNChhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3JldHVybiBBYSg0NyxhfDAsYnwwLGN8MCxkfDAsZXwwKXwwfWZ1bmN0aW9uIG00KGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7cmV0dXJuIEFhKDQ4LGF8MCxifDAsY3wwLGR8MCxlfDApfDB9ZnVuY3Rpb24gbjQoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtyZXR1cm4gQWEoNDksYXwwLGJ8MCxjfDAsZHwwLGV8MCl8MH1mdW5jdGlvbiBvNChhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3JldHVybiBBYSg1MCxhfDAsYnwwLGN8MCxkfDAsZXwwKXwwfWZ1bmN0aW9uIHA0KGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7cmV0dXJuIEFhKDUxLGF8MCxifDAsY3wwLGR8MCxlfDApfDB9ZnVuY3Rpb24gcTQoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtyZXR1cm4gQWEoNTIsYXwwLGJ8MCxjfDAsZHwwLGV8MCl8MH1mdW5jdGlvbiByNChhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3JldHVybiBBYSg1MyxhfDAsYnwwLGN8MCxkfDAsZXwwKXwwfWZ1bmN0aW9uIHM0KGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7cmV0dXJuIEFhKDU0LGF8MCxifDAsY3wwLGR8MCxlfDApfDB9ZnVuY3Rpb24gdDQoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtyZXR1cm4gQWEoNTUsYXwwLGJ8MCxjfDAsZHwwLGV8MCl8MH1mdW5jdGlvbiB1NChhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3JldHVybiBBYSg1NixhfDAsYnwwLGN8MCxkfDAsZXwwKXwwfWZ1bmN0aW9uIHY0KGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7cmV0dXJuIEFhKDU3LGF8MCxifDAsY3wwLGR8MCxlfDApfDB9ZnVuY3Rpb24gdzQoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtyZXR1cm4gQWEoNTgsYXwwLGJ8MCxjfDAsZHwwLGV8MCl8MH1mdW5jdGlvbiB4NChhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3JldHVybiBBYSg1OSxhfDAsYnwwLGN8MCxkfDAsZXwwKXwwfWZ1bmN0aW9uIHk0KGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7cmV0dXJuIEFhKDYwLGF8MCxifDAsY3wwLGR8MCxlfDApfDB9ZnVuY3Rpb24gejQoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtyZXR1cm4gQWEoNjEsYXwwLGJ8MCxjfDAsZHwwLGV8MCl8MH1mdW5jdGlvbiBBNChhLGIsYyxkLGUpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO3JldHVybiBBYSg2MixhfDAsYnwwLGN8MCxkfDAsZXwwKXwwfWZ1bmN0aW9uIEI0KGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7cmV0dXJuIEFhKDYzLGF8MCxifDAsY3wwLGR8MCxlfDApfDB9ZnVuY3Rpb24gQzQoYSxiLGMsZCxlKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtlPWV8MDtfYlthJjI1NV0oYnwwLGN8MCxkfDAsZXwwKX1mdW5jdGlvbiBENChhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtDYSgwLGF8MCxifDAsY3wwLGR8MCl9ZnVuY3Rpb24gRTQoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7Q2EoMSxhfDAsYnwwLGN8MCxkfDApfWZ1bmN0aW9uIEY0KGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO0NhKDIsYXwwLGJ8MCxjfDAsZHwwKX1mdW5jdGlvbiBHNChhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtDYSgzLGF8MCxifDAsY3wwLGR8MCl9ZnVuY3Rpb24gSDQoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7Q2EoNCxhfDAsYnwwLGN8MCxkfDApfWZ1bmN0aW9uIEk0KGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO0NhKDUsYXwwLGJ8MCxjfDAsZHwwKX1mdW5jdGlvbiBKNChhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtDYSg2LGF8MCxifDAsY3wwLGR8MCl9ZnVuY3Rpb24gSzQoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7Q2EoNyxhfDAsYnwwLGN8MCxkfDApfWZ1bmN0aW9uIEw0KGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO0NhKDgsYXwwLGJ8MCxjfDAsZHwwKX1mdW5jdGlvbiBNNChhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtDYSg5LGF8MCxifDAsY3wwLGR8MCl9ZnVuY3Rpb24gTjQoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7Q2EoMTAsYXwwLGJ8MCxjfDAsZHwwKX1mdW5jdGlvbiBPNChhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtDYSgxMSxhfDAsYnwwLGN8MCxkfDApfWZ1bmN0aW9uIFA0KGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO0NhKDEyLGF8MCxifDAsY3wwLGR8MCl9ZnVuY3Rpb24gUTQoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7Q2EoMTMsYXwwLGJ8MCxjfDAsZHwwKX1mdW5jdGlvbiBSNChhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtDYSgxNCxhfDAsYnwwLGN8MCxkfDApfWZ1bmN0aW9uIFM0KGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO0NhKDE1LGF8MCxifDAsY3wwLGR8MCl9ZnVuY3Rpb24gVDQoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7Q2EoMTYsYXwwLGJ8MCxjfDAsZHwwKX1mdW5jdGlvbiBVNChhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtDYSgxNyxhfDAsYnwwLGN8MCxkfDApfWZ1bmN0aW9uIFY0KGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO0NhKDE4LGF8MCxifDAsY3wwLGR8MCl9ZnVuY3Rpb24gVzQoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7Q2EoMTksYXwwLGJ8MCxjfDAsZHwwKX1mdW5jdGlvbiBYNChhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtDYSgyMCxhfDAsYnwwLGN8MCxkfDApfWZ1bmN0aW9uIFk0KGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO0NhKDIxLGF8MCxifDAsY3wwLGR8MCl9ZnVuY3Rpb24gWjQoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7Q2EoMjIsYXwwLGJ8MCxjfDAsZHwwKX1mdW5jdGlvbiBfNChhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtDYSgyMyxhfDAsYnwwLGN8MCxkfDApfWZ1bmN0aW9uICQ0KGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO0NhKDI0LGF8MCxifDAsY3wwLGR8MCl9ZnVuY3Rpb24gYTUoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7Q2EoMjUsYXwwLGJ8MCxjfDAsZHwwKX1mdW5jdGlvbiBiNShhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtDYSgyNixhfDAsYnwwLGN8MCxkfDApfWZ1bmN0aW9uIGM1KGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO0NhKDI3LGF8MCxifDAsY3wwLGR8MCl9ZnVuY3Rpb24gZDUoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7Q2EoMjgsYXwwLGJ8MCxjfDAsZHwwKX1mdW5jdGlvbiBlNShhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtDYSgyOSxhfDAsYnwwLGN8MCxkfDApfWZ1bmN0aW9uIGY1KGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO0NhKDMwLGF8MCxifDAsY3wwLGR8MCl9ZnVuY3Rpb24gZzUoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7Q2EoMzEsYXwwLGJ8MCxjfDAsZHwwKX1mdW5jdGlvbiBoNShhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtDYSgzMixhfDAsYnwwLGN8MCxkfDApfWZ1bmN0aW9uIGk1KGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO0NhKDMzLGF8MCxifDAsY3wwLGR8MCl9ZnVuY3Rpb24gajUoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7Q2EoMzQsYXwwLGJ8MCxjfDAsZHwwKX1mdW5jdGlvbiBrNShhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtDYSgzNSxhfDAsYnwwLGN8MCxkfDApfWZ1bmN0aW9uIGw1KGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO0NhKDM2LGF8MCxifDAsY3wwLGR8MCl9ZnVuY3Rpb24gbTUoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7Q2EoMzcsYXwwLGJ8MCxjfDAsZHwwKX1mdW5jdGlvbiBuNShhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtDYSgzOCxhfDAsYnwwLGN8MCxkfDApfWZ1bmN0aW9uIG81KGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO0NhKDM5LGF8MCxifDAsY3wwLGR8MCl9ZnVuY3Rpb24gcDUoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7Q2EoNDAsYXwwLGJ8MCxjfDAsZHwwKX1mdW5jdGlvbiBxNShhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtDYSg0MSxhfDAsYnwwLGN8MCxkfDApfWZ1bmN0aW9uIHI1KGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO0NhKDQyLGF8MCxifDAsY3wwLGR8MCl9ZnVuY3Rpb24gczUoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7Q2EoNDMsYXwwLGJ8MCxjfDAsZHwwKX1mdW5jdGlvbiB0NShhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtDYSg0NCxhfDAsYnwwLGN8MCxkfDApfWZ1bmN0aW9uIHU1KGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO0NhKDQ1LGF8MCxifDAsY3wwLGR8MCl9ZnVuY3Rpb24gdjUoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7Q2EoNDYsYXwwLGJ8MCxjfDAsZHwwKX1mdW5jdGlvbiB3NShhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtDYSg0NyxhfDAsYnwwLGN8MCxkfDApfWZ1bmN0aW9uIHg1KGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO0NhKDQ4LGF8MCxifDAsY3wwLGR8MCl9ZnVuY3Rpb24geTUoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7Q2EoNDksYXwwLGJ8MCxjfDAsZHwwKX1mdW5jdGlvbiB6NShhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtDYSg1MCxhfDAsYnwwLGN8MCxkfDApfWZ1bmN0aW9uIEE1KGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO0NhKDUxLGF8MCxifDAsY3wwLGR8MCl9ZnVuY3Rpb24gQjUoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7Q2EoNTIsYXwwLGJ8MCxjfDAsZHwwKX1mdW5jdGlvbiBDNShhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtDYSg1MyxhfDAsYnwwLGN8MCxkfDApfWZ1bmN0aW9uIEQ1KGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO0NhKDU0LGF8MCxifDAsY3wwLGR8MCl9ZnVuY3Rpb24gRTUoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7Q2EoNTUsYXwwLGJ8MCxjfDAsZHwwKX1mdW5jdGlvbiBGNShhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtDYSg1NixhfDAsYnwwLGN8MCxkfDApfWZ1bmN0aW9uIEc1KGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO0NhKDU3LGF8MCxifDAsY3wwLGR8MCl9ZnVuY3Rpb24gSDUoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7Q2EoNTgsYXwwLGJ8MCxjfDAsZHwwKX1mdW5jdGlvbiBJNShhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtDYSg1OSxhfDAsYnwwLGN8MCxkfDApfWZ1bmN0aW9uIEo1KGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO0NhKDYwLGF8MCxifDAsY3wwLGR8MCl9ZnVuY3Rpb24gSzUoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7Q2EoNjEsYXwwLGJ8MCxjfDAsZHwwKX1mdW5jdGlvbiBMNShhLGIsYyxkKXthPWF8MDtiPWJ8MDtjPWN8MDtkPWR8MDtDYSg2MixhfDAsYnwwLGN8MCxkfDApfWZ1bmN0aW9uIE01KGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO0NhKDYzLGF8MCxifDAsY3wwLGR8MCl9ZnVuY3Rpb24gTjUoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO2JhKDApO3JldHVybiAwfWZ1bmN0aW9uIE81KCl7YmEoMSk7cmV0dXJuIDB9ZnVuY3Rpb24gUDUoYSl7YT1hfDA7YmEoMil9ZnVuY3Rpb24gUTUoYSxiKXthPWF8MDtiPWJ8MDtiYSgzKX1mdW5jdGlvbiBSNShhLGIsYyxkLGUsZil7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7Zj1mfDA7YmEoNCk7cmV0dXJuIDB9ZnVuY3Rpb24gUzUoYSl7YT1hfDA7YmEoNSk7cmV0dXJuIDB9ZnVuY3Rpb24gVDUoYSxiLGMpe2E9YXwwO2I9YnwwO2M9Y3wwO2JhKDYpfWZ1bmN0aW9uIFU1KCl7YmEoNyl9ZnVuY3Rpb24gVjUoYSxiLGMsZCl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7YmEoOCk7cmV0dXJuIDB9ZnVuY3Rpb24gVzUoYSxiLGMsZCxlLGYpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2U9ZXwwO2Y9ZnwwO2JhKDkpfWZ1bmN0aW9uIFg1KGEsYil7YT1hfDA7Yj1ifDA7YmEoMTApO3JldHVybiAwfWZ1bmN0aW9uIFk1KGEsYixjLGQsZSl7YT1hfDA7Yj1ifDA7Yz1jfDA7ZD1kfDA7ZT1lfDA7YmEoMTEpO3JldHVybiAwfWZ1bmN0aW9uIFo1KGEsYixjLGQpe2E9YXwwO2I9YnwwO2M9Y3wwO2Q9ZHwwO2JhKDEyKX1cblxuLy8gRU1TQ1JJUFRFTl9FTkRfRlVOQ1NcbnZhciBPYj1bTjUsTjUsZlMsTjUsZ1MsTjUsaFMsTjUsaVMsTjUsalMsTjUsa1MsTjUsbFMsTjUsbVMsTjUsblMsTjUsb1MsTjUscFMsTjUscVMsTjUsclMsTjUsc1MsTjUsdFMsTjUsdVMsTjUsdlMsTjUsd1MsTjUseFMsTjUseVMsTjUselMsTjUsQVMsTjUsQlMsTjUsQ1MsTjUsRFMsTjUsRVMsTjUsRlMsTjUsR1MsTjUsSFMsTjUsSVMsTjUsSlMsTjUsS1MsTjUsTFMsTjUsTVMsTjUsTlMsTjUsT1MsTjUsUFMsTjUsUVMsTjUsUlMsTjUsU1MsTjUsVFMsTjUsVVMsTjUsVlMsTjUsV1MsTjUsWFMsTjUsWVMsTjUsWlMsTjUsX1MsTjUsJFMsTjUsYVQsTjUsYlQsTjUsY1QsTjUsZFQsTjUsZVQsTjUsZlQsTjUsZ1QsTjUsaFQsTjUsaVQsTjUsalQsTjUsa1QsTjUsbFQsTjUsbVQsTjUsblQsTjUsb1QsTjUsd04sek4sQ04sRU4sWmssemssZXEsdXEsSnEsTXEsUHIseXUsQnUsTE4sUk4sZE8sRFEsd1IsQlIscFIseFIsYlIsJFEsUm4sTW0sUG0sTm4sTG4sVm4sYW8sWkYsX0YsJEYsYVIsTjUsTjUsTjUsTjUsTjUsTjUsTjUsTjUsTjUsTjUsTjUsTjUsTjUsTjUsTjUsTjUsTjUsTjUsTjUsTjUsTjUsTjUsTjUsTjUsTjUsTjUsTjUsTjUsTjUsTjUsTjUsTjUsTjUsTjUsTjUsTjUsTjUsTjUsTjUsTjUsTjUsTjUsTjUsTjUsTjUsTjUsTjUsTjUsTjUsTjUsTjUsTjUsTjUsTjUsTjUsTjUsTjUsTjUsTjUsTjUsTjUsTjUsTjUsTjUsTjUsTjUsTjUsTjUsTjUsTjUsTjUsTjUsTjUsTjUsTjUsTjUsTjUsTjUsTjUsTjUsTjUsTjUsTjUsTjUsTjUsTjUsTjUsTjUsTjUsTjUsTjUsTjVdO3ZhciBQYj1bTzUsTzUscVQsTzUsclQsTzUsc1QsTzUsdFQsTzUsdVQsTzUsdlQsTzUsd1QsTzUseFQsTzUseVQsTzUselQsTzUsQVQsTzUsQlQsTzUsQ1QsTzUsRFQsTzUsRVQsTzUsRlQsTzUsR1QsTzUsSFQsTzUsSVQsTzUsSlQsTzUsS1QsTzUsTFQsTzUsTVQsTzUsTlQsTzUsT1QsTzUsUFQsTzUsUVQsTzUsUlQsTzUsU1QsTzUsVFQsTzUsVVQsTzUsVlQsTzUsV1QsTzUsWFQsTzUsWVQsTzUsWlQsTzUsX1QsTzUsJFQsTzUsYVUsTzUsYlUsTzUsY1UsTzUsZFUsTzUsZVUsTzUsZlUsTzUsZ1UsTzUsaFUsTzUsaVUsTzUsalUsTzUsa1UsTzUsbFUsTzUsbVUsTzUsblUsTzUsb1UsTzUscFUsTzUscVUsTzUsclUsTzUsc1UsTzUsdFUsTzUsdVUsTzUsdlUsTzUsd1UsTzUseFUsTzUseVUsTzUselUsTzUsdFIsZk8sTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzUsTzVdO3ZhciBRYj1bUDUsUDUsQlUsUDUsQ1UsUDUsRFUsUDUsRVUsUDUsRlUsUDUsR1UsUDUsSFUsUDUsSVUsUDUsSlUsUDUsS1UsUDUsTFUsUDUsTVUsUDUsTlUsUDUsT1UsUDUsUFUsUDUsUVUsUDUsUlUsUDUsU1UsUDUsVFUsUDUsVVUsUDUsVlUsUDUsV1UsUDUsWFUsUDUsWVUsUDUsWlUsUDUsX1UsUDUsJFUsUDUsYVYsUDUsYlYsUDUsY1YsUDUsZFYsUDUsZVYsUDUsZlYsUDUsZ1YsUDUsaFYsUDUsaVYsUDUsalYsUDUsa1YsUDUsbFYsUDUsbVYsUDUsblYsUDUsb1YsUDUscFYsUDUscVYsUDUsclYsUDUsc1YsUDUsdFYsUDUsdVYsUDUsdlYsUDUsd1YsUDUseFYsUDUseVYsUDUselYsUDUsQVYsUDUsQlYsUDUsQ1YsUDUsRFYsUDUsRVYsUDUsRlYsUDUsR1YsUDUsSFYsUDUsSVYsUDUsSlYsUDUsS1YsUDUsV2MsWGMsWmMsX2MsJGMsYWQseHUsRnUsR3UsVXUsWnUsVk4saVAsSFAsSVAsSlAsTFAsTlAsS2QsJHEseWosbmssUW4sZ0EsQ1IsUDUsUDUsUDUsUDUsUDUsUDUsUDUsUDUsUDUsUDUsUDUsUDUsUDUsUDUsUDUsUDUsUDUsUDUsUDUsUDUsUDUsUDUsUDUsUDUsUDUsUDUsUDUsUDUsUDUsUDUsUDUsUDUsUDUsUDUsUDUsUDUsUDUsUDUsUDUsUDUsUDUsUDUsUDUsUDUsUDUsUDUsUDUsUDUsUDUsUDUsUDUsUDUsUDUsUDUsUDUsUDUsUDUsUDUsUDUsUDUsUDUsUDUsUDUsUDUsUDUsUDUsUDUsUDUsUDUsUDUsUDUsUDUsUDUsUDUsUDUsUDUsUDUsUDUsUDUsUDUsUDUsUDUsUDUsUDUsUDUsUDUsUDUsUDUsUDUsUDUsUDUsUDUsUDUsUDUsUDUsUDUsUDUsUDUsUDUsUDUsUDVdO3ZhciBSYj1bUTUsUTUsTVYsUTUsTlYsUTUsT1YsUTUsUFYsUTUsUVYsUTUsUlYsUTUsU1YsUTUsVFYsUTUsVVYsUTUsVlYsUTUsV1YsUTUsWFYsUTUsWVYsUTUsWlYsUTUsX1YsUTUsJFYsUTUsYVcsUTUsYlcsUTUsY1csUTUsZFcsUTUsZVcsUTUsZlcsUTUsZ1csUTUsaFcsUTUsaVcsUTUsalcsUTUsa1csUTUsbFcsUTUsbVcsUTUsblcsUTUsb1csUTUscFcsUTUscVcsUTUsclcsUTUsc1csUTUsdFcsUTUsdVcsUTUsdlcsUTUsd1csUTUseFcsUTUseVcsUTUselcsUTUsQVcsUTUsQlcsUTUsQ1csUTUsRFcsUTUsRVcsUTUsRlcsUTUsR1csUTUsSFcsUTUsSVcsUTUsSlcsUTUsS1csUTUsTFcsUTUsTVcsUTUsTlcsUTUsT1csUTUsUFcsUTUsUVcsUTUsUlcsUTUsU1csUTUsVFcsUTUsVVcsUTUsVlcsUTUsenUsRXUsbHoscXksUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTUsUTVdO3ZhciBTYj1bUjUsUjUsWFcsUjUsWVcsUjUsWlcsUjUsX1csUjUsJFcsUjUsYVgsUjUsYlgsUjUsY1gsUjUsZFgsUjUsZVgsUjUsZlgsUjUsZ1gsUjUsaFgsUjUsaVgsUjUsalgsUjUsa1gsUjUsbFgsUjUsbVgsUjUsblgsUjUsb1gsUjUscFgsUjUscVgsUjUsclgsUjUsc1gsUjUsdFgsUjUsdVgsUjUsdlgsUjUsd1gsUjUseFgsUjUseVgsUjUselgsUjUsQVgsUjUsQlgsUjUsQ1gsUjUsRFgsUjUsRVgsUjUsRlgsUjUsR1gsUjUsSFgsUjUsSVgsUjUsSlgsUjUsS1gsUjUsTFgsUjUsTVgsUjUsTlgsUjUsT1gsUjUsUFgsUjUsUVgsUjUsUlgsUjUsU1gsUjUsVFgsUjUsVVgsUjUsVlgsUjUsV1gsUjUsWFgsUjUsWVgsUjUsWlgsUjUsX1gsUjUsJFgsUjUsYVksUjUsYlksUjUsY1ksUjUsZFksUjUsZVksUjUsUGssUWsscmssaXEseXEsQnEsUXEsUlEsdUwsdkwsd0wsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjUsUjVdO3ZhciBUYj1bUzUsUzUsZ1ksUzUsaFksUzUsaVksUzUsalksUzUsa1ksUzUsbFksUzUsbVksUzUsblksUzUsb1ksUzUscFksUzUscVksUzUsclksUzUsc1ksUzUsdFksUzUsdVksUzUsdlksUzUsd1ksUzUseFksUzUseVksUzUselksUzUsQVksUzUsQlksUzUsQ1ksUzUsRFksUzUsRVksUzUsRlksUzUsR1ksUzUsSFksUzUsSVksUzUsSlksUzUsS1ksUzUsTFksUzUsTVksUzUsTlksUzUsT1ksUzUsUFksUzUsUVksUzUsUlksUzUsU1ksUzUsVFksUzUsVVksUzUsVlksUzUsV1ksUzUsWFksUzUsWVksUzUsWlksUzUsX1ksUzUsJFksUzUsYVosUzUsYlosUzUsY1osUzUsZFosUzUsZVosUzUsZlosUzUsZ1osUzUsaFosUzUsaVosUzUsalosUzUsa1osUzUsbFosUzUsbVosUzUsblosUzUsb1osUzUscFosUzUsU2ssVGssVmssWGssWWssYWwsYmwsY2wsZGwsdGssdmsseGsseWssZnEsaHEsdnEseHEsRHEsRnEsSHEsSXEsTnEsUHEsTXIsd3UsQXUsVHUsV3UsWHUsWXUsSU4sU04sVE4sb1IsQVIseVIsd08sSE8sX1EsJGQsYWcsZHIsbXEsbnEscnEsUzUsUzUsUzUsUzUsUzUsUzUsUzUsUzUsUzUsUzUsUzUsUzUsUzUsUzUsUzUsUzUsUzUsUzUsUzUsUzUsUzUsUzUsUzUsUzUsUzUsUzUsUzUsUzUsUzUsUzUsUzUsUzUsUzUsUzUsUzUsUzUsUzUsUzUsUzUsUzUsUzUsUzUsUzUsUzUsUzUsUzUsUzUsUzUsUzUsUzUsUzUsUzUsUzUsUzUsUzUsUzUsUzUsUzUsUzUsUzUsUzUsUzUsUzUsUzUsUzUsUzUsUzUsUzUsUzUsUzUsUzUsUzUsUzUsUzUsUzUsUzUsUzUsUzUsUzUsUzUsUzVdO3ZhciBVYj1bVDUsVDUsclosVDUsc1osVDUsdFosVDUsdVosVDUsdlosVDUsd1osVDUseFosVDUseVosVDUselosVDUsQVosVDUsQlosVDUsQ1osVDUsRFosVDUsRVosVDUsRlosVDUsR1osVDUsSFosVDUsSVosVDUsSlosVDUsS1osVDUsTFosVDUsTVosVDUsTlosVDUsT1osVDUsUFosVDUsUVosVDUsUlosVDUsU1osVDUsVFosVDUsVVosVDUsVlosVDUsV1osVDUsWFosVDUsWVosVDUsWlosVDUsX1osVDUsJFosVDUsYV8sVDUsYl8sVDUsY18sVDUsZF8sVDUsZV8sVDUsZl8sVDUsZ18sVDUsaF8sVDUsaV8sVDUsal8sVDUsa18sVDUsbF8sVDUsbV8sVDUsbl8sVDUsb18sVDUscF8sVDUscV8sVDUscl8sVDUsc18sVDUsdF8sVDUsdV8sVDUsdl8sVDUsd18sVDUseF8sVDUseV8sVDUsel8sVDUsQV8sVDUsamMsa2MsbGMsbWMsbmMsb2MscGMscWMscmMsc2MsdGMsdWMsdmMsd2MseGMseWMsemMsQWMsQmMsQ2MsRGMsRWMsRmMsR2MsSGMsSWMsSmMsS2MsTGMsTWMsTmMsT2MsUGMsUWMsUmMsU2MsVGMsVWMsVmMsWWMscm0sc20sdG0sdW0sQ3UsZkEsYkEsYUEsS0IsVEIsY1AsZFAsZVAsZlAsZ1AsaFAsalAsa1AsbFAsbVAsblAsb1AscFAscVAsclAsc1AsdFAsdVAsdlAsd1AseFAseVAselAsQVAsQlAsQ1AsRFAsRVAsRlAsR1AsS1AsTVAsSEMsUlAsU1AsVFAsVVAsVlAsV1AsWFAsWVAsblEsb1EscFEsbGksX3AsWnQsJHQsYXUsVDUsVDUsVDUsVDUsVDUsVDUsVDUsVDUsVDUsVDUsVDUsVDUsVDUsVDUsVDUsVDUsVDUsVDUsVDUsVDUsVDUsVDUsVDUsVDUsVDUsVDUsVDVdO3ZhciBWYj1bVTUsVTUsQ18sVTUsRF8sVTUsRV8sVTUsRl8sVTUsR18sVTUsSF8sVTUsSV8sVTUsSl8sVTUsS18sVTUsTF8sVTUsTV8sVTUsTl8sVTUsT18sVTUsUF8sVTUsUV8sVTUsUl8sVTUsU18sVTUsVF8sVTUsVV8sVTUsVl8sVTUsV18sVTUsWF8sVTUsWV8sVTUsWl8sVTUsX18sVTUsJF8sVTUsYSQsVTUsYiQsVTUsYyQsVTUsZCQsVTUsZSQsVTUsZiQsVTUsZyQsVTUsaCQsVTUsaSQsVTUsaiQsVTUsayQsVTUsbCQsVTUsbSQsVTUsbiQsVTUsbyQsVTUscCQsVTUscSQsVTUsciQsVTUscyQsVTUsdCQsVTUsdSQsVTUsdiQsVTUsdyQsVTUseCQsVTUseSQsVTUseiQsVTUsQSQsVTUsQiQsVTUsQyQsVTUsRCQsVTUsRSQsVTUsRiQsVTUsRyQsVTUsSCQsVTUsSSQsVTUsSiQsVTUsSyQsVTUsTCQsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTUsVTVdO3ZhciBXYj1bVjUsVjUsTiQsVjUsTyQsVjUsUCQsVjUsUSQsVjUsUiQsVjUsUyQsVjUsVCQsVjUsVSQsVjUsViQsVjUsVyQsVjUsWCQsVjUsWSQsVjUsWiQsVjUsXyQsVjUsJCQsVjUsYTAsVjUsYjAsVjUsYzAsVjUsZDAsVjUsZTAsVjUsZjAsVjUsZzAsVjUsaDAsVjUsaTAsVjUsajAsVjUsazAsVjUsbDAsVjUsbTAsVjUsbjAsVjUsbzAsVjUscDAsVjUscTAsVjUscjAsVjUsczAsVjUsdDAsVjUsdTAsVjUsdjAsVjUsdzAsVjUseDAsVjUseTAsVjUsejAsVjUsQTAsVjUsQjAsVjUsQzAsVjUsRDAsVjUsRTAsVjUsRjAsVjUsRzAsVjUsSDAsVjUsSTAsVjUsSjAsVjUsSzAsVjUsTDAsVjUsTTAsVjUsTjAsVjUsTzAsVjUsUDAsVjUsUTAsVjUsUjAsVjUsUzAsVjUsVDAsVjUsVTAsVjUsVjAsVjUsVzAsVjUseE4seU4sJGssZ3Esd3EsT3EsVU4sWU4sUWgsbWksQmosSGosS2ssTGssVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjUsVjVdO3ZhciBYYj1bVzUsVzUsWTAsVzUsWjAsVzUsXzAsVzUsJDAsVzUsYTEsVzUsYjEsVzUsYzEsVzUsZDEsVzUsZTEsVzUsZjEsVzUsZzEsVzUsaDEsVzUsaTEsVzUsajEsVzUsazEsVzUsbDEsVzUsbTEsVzUsbjEsVzUsbzEsVzUscDEsVzUscTEsVzUscjEsVzUsczEsVzUsdDEsVzUsdTEsVzUsdjEsVzUsdzEsVzUseDEsVzUseTEsVzUsejEsVzUsQTEsVzUsQjEsVzUsQzEsVzUsRDEsVzUsRTEsVzUsRjEsVzUsRzEsVzUsSDEsVzUsSTEsVzUsSjEsVzUsSzEsVzUsTDEsVzUsTTEsVzUsTjEsVzUsTzEsVzUsUDEsVzUsUTEsVzUsUjEsVzUsUzEsVzUsVDEsVzUsVTEsVzUsVjEsVzUsVzEsVzUsWDEsVzUsWTEsVzUsWjEsVzUsXzEsVzUsJDEsVzUsYTIsVzUsYjIsVzUsYzIsVzUsZDIsVzUsZTIsVzUsZjIsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzUsVzVdO3ZhciBZYj1bWDUsWDUsaDIsWDUsaTIsWDUsajIsWDUsazIsWDUsbDIsWDUsbTIsWDUsbjIsWDUsbzIsWDUscDIsWDUscTIsWDUscjIsWDUsczIsWDUsdDIsWDUsdTIsWDUsdjIsWDUsdzIsWDUseDIsWDUseTIsWDUsejIsWDUsQTIsWDUsQjIsWDUsQzIsWDUsRDIsWDUsRTIsWDUsRjIsWDUsRzIsWDUsSDIsWDUsSTIsWDUsSjIsWDUsSzIsWDUsTDIsWDUsTTIsWDUsTjIsWDUsTzIsWDUsUDIsWDUsUTIsWDUsUjIsWDUsUzIsWDUsVDIsWDUsVTIsWDUsVjIsWDUsVzIsWDUsWDIsWDUsWTIsWDUsWjIsWDUsXzIsWDUsJDIsWDUsYTMsWDUsYjMsWDUsYzMsWDUsZDMsWDUsZTMsWDUsZjMsWDUsZzMsWDUsaDMsWDUsaTMsWDUsajMsWDUsazMsWDUsbDMsWDUsbTMsWDUsbjMsWDUsbzMsWDUscDMsWDUscTMsWDUsQU4sQk4sRE4sRk4sR04sUmssVWssX2ssZmwsZ2wsaGwsaWwsc2ssdWssQWssQ3EsRXEsS3EsUXIsUnIsVnUsVE8sdk8sSE4sTU4sTk4sT04sUE4sUU4sV04sblIsc1IsWFEsVVEsclIsVFEsZU8sV1EsU1EsVlEseE8seU8sek8sSU8sSk8sS08sa2QsbGQsaWksJGYsTWssTmssT2wsUGwsU2wscW0sdXQseXMsWXQsX3Qscnksanosa3oseXksenksWXksZHoseUIsekIsTEUsd0csQkYsQ0YsaEgsaUgsWDUsWDUsWDUsWDUsWDUsWDUsWDUsWDUsWDUsWDUsWDUsWDUsWDUsWDUsWDUsWDUsWDUsWDUsWDUsWDUsWDUsWDUsWDUsWDUsWDUsWDUsWDUsWDUsWDUsWDUsWDUsWDUsWDUsWDUsWDUsWDUsWDUsWDUsWDUsWDUsWDUsWDUsWDUsWDUsWDUsWDUsWDUsWDUsWDUsWDUsWDVdO3ZhciBaYj1bWTUsWTUsczMsWTUsdDMsWTUsdTMsWTUsdjMsWTUsdzMsWTUseDMsWTUseTMsWTUsejMsWTUsQTMsWTUsQjMsWTUsQzMsWTUsRDMsWTUsRTMsWTUsRjMsWTUsRzMsWTUsSDMsWTUsSTMsWTUsSjMsWTUsSzMsWTUsTDMsWTUsTTMsWTUsTjMsWTUsTzMsWTUsUDMsWTUsUTMsWTUsUjMsWTUsUzMsWTUsVDMsWTUsVTMsWTUsVjMsWTUsVzMsWTUsWDMsWTUsWTMsWTUsWjMsWTUsXzMsWTUsJDMsWTUsYTQsWTUsYjQsWTUsYzQsWTUsZDQsWTUsZTQsWTUsZjQsWTUsZzQsWTUsaDQsWTUsaTQsWTUsajQsWTUsazQsWTUsbDQsWTUsbTQsWTUsbjQsWTUsbzQsWTUscDQsWTUscTQsWTUscjQsWTUsczQsWTUsdDQsWTUsdTQsWTUsdjQsWTUsdzQsWTUseDQsWTUseTQsWTUsejQsWTUsQTQsWTUsQjQsWTUsdk4sV2ssZWwsd2ssR3EsTnIsT3IsSk4sS04sWE4sTE8sX2osJGosWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTUsWTVdO3ZhciBfYj1bWjUsWjUsRDQsWjUsRTQsWjUsRjQsWjUsRzQsWjUsSDQsWjUsSTQsWjUsSjQsWjUsSzQsWjUsTDQsWjUsTTQsWjUsTjQsWjUsTzQsWjUsUDQsWjUsUTQsWjUsUjQsWjUsUzQsWjUsVDQsWjUsVTQsWjUsVjQsWjUsVzQsWjUsWDQsWjUsWTQsWjUsWjQsWjUsXzQsWjUsJDQsWjUsYTUsWjUsYjUsWjUsYzUsWjUsZDUsWjUsZTUsWjUsZjUsWjUsZzUsWjUsaDUsWjUsaTUsWjUsajUsWjUsazUsWjUsbDUsWjUsbTUsWjUsbjUsWjUsbzUsWjUscDUsWjUscTUsWjUscjUsWjUsczUsWjUsdDUsWjUsdTUsWjUsdjUsWjUsdzUsWjUseDUsWjUseTUsWjUsejUsWjUsQTUsWjUsQjUsWjUsQzUsWjUsRDUsWjUsRTUsWjUsRjUsWjUsRzUsWjUsSDUsWjUsSTUsWjUsSjUsWjUsSzUsWjUsTDUsWjUsTTUsWjUsRHUsdmQseGQsaUIsakIsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjUsWjVdO3JldHVybntfc3FsaXRlM192YWx1ZV9ibG9iOl9kLF9zcWxpdGUzX2NvbHVtbl9uYW1lOkhlLF9zcWxpdGUzX3Jlc2V0OllkLF9zcWxpdGUzX2NvbHVtbl90eXBlOkdlLF9zcWxpdGUzX2V4ZWM6JGUsX3NxbGl0ZTNfcmVzdWx0X251bGw6bGUsX3NxbGl0ZTNfc3RlcDp0ZSxfYml0c2hpZnQ2NExzaHI6U1IsX3NxbGl0ZTNfcHJlcGFyZV92MjphZixfc3FsaXRlM19jbG9zZV92Mjp0Zixfc3FsaXRlM19vcGVuOkZmLF9iaXRzaGlmdDY0U2hsOldSLF9zcWxpdGUzX3Jlc3VsdF90ZXh0Om1lLF9mZmx1c2g6Y1IsX3NxbGl0ZTNfY29sdW1uX2J5dGVzOkFlLF9zcWxpdGUzX2JpbmRfaW50OktlLF9zcWxpdGUzX2JpbmRfYmxvYjpJZSxfbWVtc2V0OlZSLF9zcWxpdGUzX3ZhbHVlX2RvdWJsZTpiZSxfbWVtY3B5OlRSLF9zcWxpdGUzX3Jlc3VsdF9kb3VibGU6aGUsX3NxbGl0ZTNfdmFsdWVfdGV4dDokZCxfc3FsaXRlM19jaGFuZ2VzOnFmLF9zcWxpdGUzX2NvbHVtbl9ibG9iOnplLF9zcWxpdGUzX2JpbmRfcGFyYW1ldGVyX2luZGV4OlJlLF9zcWxpdGUzX3ZhbHVlX3R5cGU6ZWUsX2k2NFN1YnRyYWN0OlFSLF9zcWxpdGUzX2NvbHVtbl90ZXh0OkVlLF9pNjRBZGQ6UlIsX3NxbGl0ZTNfdmFsdWVfYnl0ZXM6YWUsX3NxbGl0ZTNfZmluYWxpemU6WGQsX3NxbGl0ZTNfY29sdW1uX2RvdWJsZTpCZSxfc3FsaXRlM19jcmVhdGVfZnVuY3Rpb25fdjI6eGYsX3NxbGl0ZTNfZnJlZTpLZCxfc3FsaXRlM192YWx1ZV9pbnQ6Y2UsX3NxbGl0ZTNfZGF0YV9jb3VudDp5ZSxfc3FsaXRlM19iaW5kX3RleHQ6TmUsX3NxbGl0ZTNfYmluZF9kb3VibGU6SmUsX19fZXJybm9fbG9jYXRpb246QlEsX1JlZ2lzdGVyRXh0ZW5zaW9uRnVuY3Rpb25zOmljLF9mcmVlOktSLF9tZW1tb3ZlOlVSLF9zcWxpdGUzX2Vycm1zZzpiZixfc3FsaXRlM19jbGVhcl9iaW5kaW5nczpaZCxfbWFsbG9jOkpSLHJ1blBvc3RTZXRzOlBSLHN0YWNrQWxsb2M6JGIsc3RhY2tTYXZlOmFjLHN0YWNrUmVzdG9yZTpiYyxlc3RhYmxpc2hTdGFja1NwYWNlOmNjLHNldFRocmV3OmRjLHNldFRlbXBSZXQwOmdjLGdldFRlbXBSZXQwOmhjLGR5bkNhbGxfaWlpaTplUyxkeW5DYWxsX2k6cFQsZHluQ2FsbF92aTpBVSxkeW5DYWxsX3ZpaTpMVixkeW5DYWxsX2lpaWlpaWk6V1csZHluQ2FsbF9paTpmWSxkeW5DYWxsX3ZpaWk6cVosZHluQ2FsbF92OkJfLGR5bkNhbGxfaWlpaWk6TSQsZHluQ2FsbF92aWlpaWlpOlgwLGR5bkNhbGxfaWlpOmcyLGR5bkNhbGxfaWlpaWlpOnIzLGR5bkNhbGxfdmlpaWk6QzR9fSlcblxuXG4vLyBFTVNDUklQVEVOX0VORF9BU01cbihmLm1iLGYubmIsYnVmZmVyKTtmLl9zcWxpdGUzX3ZhbHVlX2Jsb2I9Vy5fc3FsaXRlM192YWx1ZV9ibG9iO2YuX3NxbGl0ZTNfY29sdW1uX25hbWU9Vy5fc3FsaXRlM19jb2x1bW5fbmFtZTtmLl9zcWxpdGUzX3Jlc2V0PVcuX3NxbGl0ZTNfcmVzZXQ7Zi5fc3FsaXRlM19jb2x1bW5fdHlwZT1XLl9zcWxpdGUzX2NvbHVtbl90eXBlO2YuX3NxbGl0ZTNfZXhlYz1XLl9zcWxpdGUzX2V4ZWM7Zi5fc3FsaXRlM19yZXN1bHRfbnVsbD1XLl9zcWxpdGUzX3Jlc3VsdF9udWxsO2YuX3NxbGl0ZTNfc3RlcD1XLl9zcWxpdGUzX3N0ZXA7dmFyIFRjPWYuX2JpdHNoaWZ0NjRMc2hyPVcuX2JpdHNoaWZ0NjRMc2hyO2YuX3NxbGl0ZTNfcHJlcGFyZV92Mj1XLl9zcWxpdGUzX3ByZXBhcmVfdjI7Zi5fc3FsaXRlM19jbG9zZV92Mj1XLl9zcWxpdGUzX2Nsb3NlX3YyO2YuX3NxbGl0ZTNfb3Blbj1XLl9zcWxpdGUzX29wZW47XG52YXIgYmQ9Zi5fYml0c2hpZnQ2NFNobD1XLl9iaXRzaGlmdDY0U2hsO2YuX3NxbGl0ZTNfcmVzdWx0X3RleHQ9Vy5fc3FsaXRlM19yZXN1bHRfdGV4dDtmLl9mZmx1c2g9Vy5fZmZsdXNoO2YuX3NxbGl0ZTNfY29sdW1uX2J5dGVzPVcuX3NxbGl0ZTNfY29sdW1uX2J5dGVzO2YuX3NxbGl0ZTNfYmluZF9pbnQ9Vy5fc3FsaXRlM19iaW5kX2ludDtmLl9zcWxpdGUzX2JpbmRfYmxvYj1XLl9zcWxpdGUzX2JpbmRfYmxvYjt2YXIgYWQ9Zi5fbWVtc2V0PVcuX21lbXNldDtmLl9zcWxpdGUzX3ZhbHVlX2RvdWJsZT1XLl9zcWxpdGUzX3ZhbHVlX2RvdWJsZTt2YXIgWWM9Zi5fbWVtY3B5PVcuX21lbWNweTtmLl9zcWxpdGUzX3Jlc3VsdF9kb3VibGU9Vy5fc3FsaXRlM19yZXN1bHRfZG91YmxlO2YuX3NxbGl0ZTNfdmFsdWVfdGV4dD1XLl9zcWxpdGUzX3ZhbHVlX3RleHQ7Zi5fc3FsaXRlM19jaGFuZ2VzPVcuX3NxbGl0ZTNfY2hhbmdlcztmLl9zcWxpdGUzX2NvbHVtbl9ibG9iPVcuX3NxbGl0ZTNfY29sdW1uX2Jsb2I7XG5mLl9zcWxpdGUzX2JpbmRfcGFyYW1ldGVyX2luZGV4PVcuX3NxbGl0ZTNfYmluZF9wYXJhbWV0ZXJfaW5kZXg7Zi5fc3FsaXRlM192YWx1ZV90eXBlPVcuX3NxbGl0ZTNfdmFsdWVfdHlwZTt2YXIgemI9Zi5faTY0U3VidHJhY3Q9Vy5faTY0U3VidHJhY3Q7Zi5fc3FsaXRlM19jb2x1bW5fdGV4dD1XLl9zcWxpdGUzX2NvbHVtbl90ZXh0O3ZhciBBYj1mLl9pNjRBZGQ9Vy5faTY0QWRkO2YuX3NxbGl0ZTNfdmFsdWVfYnl0ZXM9Vy5fc3FsaXRlM192YWx1ZV9ieXRlcztmLl9zcWxpdGUzX2ZpbmFsaXplPVcuX3NxbGl0ZTNfZmluYWxpemU7Zi5fc3FsaXRlM19jb2x1bW5fZG91YmxlPVcuX3NxbGl0ZTNfY29sdW1uX2RvdWJsZTtmLl9zcWxpdGUzX2NyZWF0ZV9mdW5jdGlvbl92Mj1XLl9zcWxpdGUzX2NyZWF0ZV9mdW5jdGlvbl92MjtmLl9zcWxpdGUzX2ZyZWU9Vy5fc3FsaXRlM19mcmVlO2YuX3NxbGl0ZTNfdmFsdWVfaW50PVcuX3NxbGl0ZTNfdmFsdWVfaW50O1xuZi5fc3FsaXRlM19kYXRhX2NvdW50PVcuX3NxbGl0ZTNfZGF0YV9jb3VudDtmLl9zcWxpdGUzX2JpbmRfdGV4dD1XLl9zcWxpdGUzX2JpbmRfdGV4dDtmLl9zcWxpdGUzX2JpbmRfZG91YmxlPVcuX3NxbGl0ZTNfYmluZF9kb3VibGU7Zi5fX19lcnJub19sb2NhdGlvbj1XLl9fX2Vycm5vX2xvY2F0aW9uO2YuX1JlZ2lzdGVyRXh0ZW5zaW9uRnVuY3Rpb25zPVcuX1JlZ2lzdGVyRXh0ZW5zaW9uRnVuY3Rpb25zO3ZhciBQYT1mLl9mcmVlPVcuX2ZyZWU7Zi5ydW5Qb3N0U2V0cz1XLnJ1blBvc3RTZXRzO3ZhciBaYz1mLl9tZW1tb3ZlPVcuX21lbW1vdmU7Zi5fc3FsaXRlM19lcnJtc2c9Vy5fc3FsaXRlM19lcnJtc2c7Zi5fc3FsaXRlM19jbGVhcl9iaW5kaW5ncz1XLl9zcWxpdGUzX2NsZWFyX2JpbmRpbmdzO3ZhciBHYT1mLl9tYWxsb2M9Vy5fbWFsbG9jO2YuZHluQ2FsbF9paWlpPVcuZHluQ2FsbF9paWlpO2YuZHluQ2FsbF9pPVcuZHluQ2FsbF9pO2YuZHluQ2FsbF92aT1XLmR5bkNhbGxfdmk7XG5mLmR5bkNhbGxfdmlpPVcuZHluQ2FsbF92aWk7Zi5keW5DYWxsX2lpaWlpaWk9Vy5keW5DYWxsX2lpaWlpaWk7Zi5keW5DYWxsX2lpPVcuZHluQ2FsbF9paTtmLmR5bkNhbGxfdmlpaT1XLmR5bkNhbGxfdmlpaTtmLmR5bkNhbGxfdj1XLmR5bkNhbGxfdjtmLmR5bkNhbGxfaWlpaWk9Vy5keW5DYWxsX2lpaWlpO2YuZHluQ2FsbF92aWlpaWlpPVcuZHluQ2FsbF92aWlpaWlpO2YuZHluQ2FsbF9paWk9Vy5keW5DYWxsX2lpaTtmLmR5bkNhbGxfaWlpaWlpPVcuZHluQ2FsbF9paWlpaWk7Zi5keW5DYWxsX3ZpaWlpPVcuZHluQ2FsbF92aWlpaTtsLlI9Vy5zdGFja0FsbG9jO2wucWE9Vy5zdGFja1NhdmU7bC5nYT1XLnN0YWNrUmVzdG9yZTtsLndlPVcuZXN0YWJsaXNoU3RhY2tTcGFjZTtsLlFiPVcuc2V0VGVtcFJldDA7bC5BYj1XLmdldFRlbXBSZXQwO1xuZnVuY3Rpb24ga2EoYSl7dGhpcy5uYW1lPVwiRXhpdFN0YXR1c1wiO3RoaXMubWVzc2FnZT1cIlByb2dyYW0gdGVybWluYXRlZCB3aXRoIGV4aXQoXCIrYStcIilcIjt0aGlzLnN0YXR1cz1hfWthLnByb3RvdHlwZT1FcnJvcigpO2thLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1rYTt2YXIgVmQ9bnVsbCx2Yj1mdW5jdGlvbiBXZCgpe2YuY2FsbGVkUnVufHxYZCgpO2YuY2FsbGVkUnVufHwodmI9V2QpfTtcbmYuY2FsbE1haW49Zi50ZT1mdW5jdGlvbihhKXtmdW5jdGlvbiBiKCl7Zm9yKHZhciBhPTA7Mz5hO2ErKylkLnB1c2goMCl9YXNzZXJ0KDA9PXRiLFwiY2Fubm90IGNhbGwgbWFpbiB3aGVuIGFzeW5jIGRlcGVuZGVuY2llcyByZW1haW4hIChsaXN0ZW4gb24gX19BVE1BSU5fXylcIik7YXNzZXJ0KDA9PWJiLmxlbmd0aCxcImNhbm5vdCBjYWxsIG1haW4gd2hlbiBwcmVSdW4gZnVuY3Rpb25zIHJlbWFpbiB0byBiZSBjYWxsZWRcIik7YT1hfHxbXTtKYXx8KEphPSEwLGFiKGNiKSk7dmFyIGM9YS5sZW5ndGgrMSxkPVt6KEIoZi50aGlzUHJvZ3JhbSksXCJpOFwiLDApXTtiKCk7Zm9yKHZhciBlPTA7ZTxjLTE7ZSs9MSlkLnB1c2goeihCKGFbZV0pLFwiaThcIiwwKSksYigpO2QucHVzaCgwKTtkPXooZCxcImkzMlwiLDApO3RyeXt2YXIgZz1mLl9tYWluKGMsZCwwKTtZZChnLCEwKX1jYXRjaChoKXtpZighKGggaW5zdGFuY2VvZiBrYSkpaWYoXCJTaW11bGF0ZUluZmluaXRlTG9vcFwiPT1oKWYubm9FeGl0UnVudGltZT1cbiEwO2Vsc2UgdGhyb3cgaCYmXCJvYmplY3RcIj09PXR5cGVvZiBoJiZoLnN0YWNrJiZmLmZhKFwiZXhjZXB0aW9uIHRocm93bjogXCIrW2gsaC5zdGFja10pLGg7fWZpbmFsbHl7fX07XG5mdW5jdGlvbiBYZChhKXtmdW5jdGlvbiBiKCl7aWYoIWYuY2FsbGVkUnVuJiYoZi5jYWxsZWRSdW49ITAsIW9hKSl7SmF8fChKYT0hMCxhYihjYikpO2FiKGRiKTtpZihmLm9uUnVudGltZUluaXRpYWxpemVkKWYub25SdW50aW1lSW5pdGlhbGl6ZWQoKTtmLl9tYWluJiZaZCYmZi5jYWxsTWFpbihhKTtpZihmLnBvc3RSdW4pZm9yKFwiZnVuY3Rpb25cIj09dHlwZW9mIGYucG9zdFJ1biYmKGYucG9zdFJ1bj1bZi5wb3N0UnVuXSk7Zi5wb3N0UnVuLmxlbmd0aDspaGIoZi5wb3N0UnVuLnNoaWZ0KCkpO2FiKGZiKX19YT1hfHxmLmFyZ3VtZW50cztudWxsPT09VmQmJihWZD1EYXRlLm5vdygpKTtpZighKDA8dGIpKXtpZihmLnByZVJ1bilmb3IoXCJmdW5jdGlvblwiPT10eXBlb2YgZi5wcmVSdW4mJihmLnByZVJ1bj1bZi5wcmVSdW5dKTtmLnByZVJ1bi5sZW5ndGg7KWdiKGYucHJlUnVuLnNoaWZ0KCkpO2FiKGJiKTswPHRifHxmLmNhbGxlZFJ1bnx8KGYuc2V0U3RhdHVzPyhmLnNldFN0YXR1cyhcIlJ1bm5pbmcuLi5cIiksXG5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7c2V0VGltZW91dChmdW5jdGlvbigpe2Yuc2V0U3RhdHVzKFwiXCIpfSwxKTtiKCl9LDEpKTpiKCkpfX1mLnJ1bj1mLnJ1bj1YZDtmdW5jdGlvbiBZZChhLGIpe2lmKCFifHwhZi5ub0V4aXRSdW50aW1lKXtpZighZi5ub0V4aXRSdW50aW1lJiYob2E9ITAsaz12b2lkIDAsYWIoZWIpLGYub25FeGl0KSlmLm9uRXhpdChhKTtlYT8ocHJvY2Vzcy5zdGRvdXQub25jZShcImRyYWluXCIsZnVuY3Rpb24oKXtwcm9jZXNzLmV4aXQoYSl9KSxjb25zb2xlLmxvZyhcIiBcIiksc2V0VGltZW91dChmdW5jdGlvbigpe3Byb2Nlc3MuZXhpdChhKX0sNTAwKSk6ZmEmJlwiZnVuY3Rpb25cIj09PXR5cGVvZiBxdWl0JiZxdWl0KGEpO3Rocm93IG5ldyBrYShhKTt9fWYuZXhpdD1mLmV4aXQ9WWQ7dmFyICRkPVtdO1xuZnVuY3Rpb24gcChhKXt2b2lkIDAhPT1hPyhmLnByaW50KGEpLGYuZmEoYSksYT1KU09OLnN0cmluZ2lmeShhKSk6YT1cIlwiO29hPSEwO3ZhciBiPVwiYWJvcnQoXCIrYStcIikgYXQgXCIrUWEoKStcIlxcbklmIHRoaXMgYWJvcnQoKSBpcyB1bmV4cGVjdGVkLCBidWlsZCB3aXRoIC1zIEFTU0VSVElPTlM9MSB3aGljaCBjYW4gZ2l2ZSBtb3JlIGluZm9ybWF0aW9uLlwiOyRkJiYkZC5mb3JFYWNoKGZ1bmN0aW9uKGMpe2I9YyhiLGEpfSk7dGhyb3cgYjt9Zi5hYm9ydD1mLmFib3J0PXA7aWYoZi5wcmVJbml0KWZvcihcImZ1bmN0aW9uXCI9PXR5cGVvZiBmLnByZUluaXQmJihmLnByZUluaXQ9W2YucHJlSW5pdF0pOzA8Zi5wcmVJbml0Lmxlbmd0aDspZi5wcmVJbml0LnBvcCgpKCk7dmFyIFpkPSEwO2Yubm9Jbml0aWFsUnVuJiYoWmQ9ITEpO1hkKCk7XG52YXIgRGF0YWJhc2UsYWUsYmUsWCxjZSxaLGRlLGVlLGZlLGdlLGhlLGllLGplLGtlLGxlLG1lLG5lLG9lLHBlLHFlLHJlLHNlLHRlLHVlLHZlLHdlLHhlLHllLHplLEFlLEJlLENlLERlLEVlLEZlLEdlLEhlLEllLEplLEtlLGw9Zi5SdW50aW1lO1o9bC5SKDQpO1g9e307XG5jZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGEoYSxjKXt0aGlzLnU9YTt0aGlzLmRiPWM7dGhpcy5LPTE7dGhpcy52YT1bXX1hLnByb3RvdHlwZS5iaW5kPWZ1bmN0aW9uKGEpe2lmKCF0aGlzLnUpdGhyb3dcIlN0YXRlbWVudCBjbG9zZWRcIjt0aGlzLnJlc2V0KCk7cmV0dXJuIEFycmF5LmlzQXJyYXkoYSk/dGhpcy5wYihhKTp0aGlzLnFiKGEpfTthLnByb3RvdHlwZS5zdGVwPWZ1bmN0aW9uKCl7dmFyIGE7aWYoIXRoaXMudSl0aHJvd1wiU3RhdGVtZW50IGNsb3NlZFwiO3RoaXMuSz0xO3N3aXRjaChhPUVlKHRoaXMudSkpe2Nhc2UgWC5oYjpyZXR1cm4hMDtjYXNlIFguRE9ORTpyZXR1cm4hMTtkZWZhdWx0OnJldHVybiB0aGlzLmRiLmhhbmRsZUVycm9yKGEpfX07YS5wcm90b3R5cGUueWI9ZnVuY3Rpb24oYSl7bnVsbD09YSYmKGE9dGhpcy5LKyspO3JldHVybiBvZSh0aGlzLnUsYSl9O2EucHJvdG90eXBlLnpiPWZ1bmN0aW9uKGEpe251bGw9PWEmJihhPXRoaXMuSysrKTtyZXR1cm4gcWUodGhpcy51LFxuYSl9O2EucHJvdG90eXBlLmdldEJsb2I9ZnVuY3Rpb24oYSl7dmFyIGMsZCxlLGc7bnVsbD09YSYmKGE9dGhpcy5LKyspO2c9bmUodGhpcy51LGEpO2Q9bWUodGhpcy51LGEpO2U9bmV3IFVpbnQ4QXJyYXkoZyk7Zm9yKGE9Yz0wOzA8PWc/YzxnOmM+ZzthPTA8PWc/KytjOi0tYyllW2FdPXVbZCthXTtyZXR1cm4gZX07YS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKGEpe3ZhciBjLGQsZTtudWxsIT1hJiZ0aGlzLmJpbmQoYSkmJnRoaXMuc3RlcCgpO2U9W107YT1jPTA7Zm9yKGQ9dGUodGhpcy51KTswPD1kP2M8ZDpjPmQ7YT0wPD1kPysrYzotLWMpc3dpdGNoKHJlKHRoaXMudSxhKSl7Y2FzZSBYLmdiOmNhc2UgWC5GTE9BVDplLnB1c2godGhpcy55YihhKSk7YnJlYWs7Y2FzZSBYLmliOmUucHVzaCh0aGlzLnpiKGEpKTticmVhaztjYXNlIFguY2I6ZS5wdXNoKHRoaXMuZ2V0QmxvYihhKSk7YnJlYWs7ZGVmYXVsdDplLnB1c2gobnVsbCl9cmV0dXJuIGV9O2EucHJvdG90eXBlLmdldENvbHVtbk5hbWVzPVxuZnVuY3Rpb24oKXt2YXIgYSxjLGQsZTtlPVtdO2E9Yz0wO2ZvcihkPXRlKHRoaXMudSk7MDw9ZD9jPGQ6Yz5kO2E9MDw9ZD8rK2M6LS1jKWUucHVzaChwZSh0aGlzLnUsYSkpO3JldHVybiBlfTthLnByb3RvdHlwZS5nZXRBc09iamVjdD1mdW5jdGlvbihhKXt2YXIgYyxkLGUsZyxoLG07bT10aGlzLmdldChhKTtnPXRoaXMuZ2V0Q29sdW1uTmFtZXMoKTtoPXt9O2E9Yz0wO2ZvcihkPWcubGVuZ3RoO2M8ZDthPSsrYyllPWdbYV0saFtlXT1tW2FdO3JldHVybiBofTthLnByb3RvdHlwZS5ydW49ZnVuY3Rpb24oYSl7bnVsbCE9YSYmdGhpcy5iaW5kKGEpO3RoaXMuc3RlcCgpO3JldHVybiB0aGlzLnJlc2V0KCl9O2EucHJvdG90eXBlLnRiPWZ1bmN0aW9uKGEsYyl7dmFyIGQsZTtudWxsPT1jJiYoYz10aGlzLksrKyk7ZD1CKGEpO3RoaXMudmEucHVzaChlPXooZCxcImk4XCIsMCkpO3RoaXMuZGIuaGFuZGxlRXJyb3IoaWUodGhpcy51LGMsZSxkLmxlbmd0aC0xLDApKX07YS5wcm90b3R5cGUub2I9XG5mdW5jdGlvbihhLGMpe3ZhciBkO251bGw9PWMmJihjPXRoaXMuSysrKTt0aGlzLnZhLnB1c2goZD16KGEsXCJpOFwiLDApKTt0aGlzLmRiLmhhbmRsZUVycm9yKGVlKHRoaXMudSxjLGQsYS5sZW5ndGgsMCkpfTthLnByb3RvdHlwZS5zYj1mdW5jdGlvbihhLGMpe251bGw9PWMmJihjPXRoaXMuSysrKTt0aGlzLmRiLmhhbmRsZUVycm9yKChhPT09KGF8MCk/Z2U6ZmUpKHRoaXMudSxjLGEpKX07YS5wcm90b3R5cGUucmI9ZnVuY3Rpb24oYSl7bnVsbD09YSYmKGE9dGhpcy5LKyspO2VlKHRoaXMudSxhLDAsMCwwKX07YS5wcm90b3R5cGUuTmE9ZnVuY3Rpb24oYSxjKXtudWxsPT1jJiYoYz10aGlzLksrKyk7c3dpdGNoKHR5cGVvZiBhKXtjYXNlIFwic3RyaW5nXCI6dGhpcy50YihhLGMpO2JyZWFrO2Nhc2UgXCJudW1iZXJcIjpjYXNlIFwiYm9vbGVhblwiOnRoaXMuc2IoYSswLGMpO2JyZWFrO2Nhc2UgXCJvYmplY3RcIjppZihudWxsPT09YSl7dGhpcy5yYihjKTticmVha31pZihudWxsIT1hLmxlbmd0aCl7dGhpcy5vYihhLFxuYyk7YnJlYWt9dGhyb3dcIldyb25nIEFQSSB1c2UgOiB0cmllZCB0byBiaW5kIGEgdmFsdWUgb2YgYW4gdW5rbm93biB0eXBlIChcIithK1wiKS5cIjt9fTthLnByb3RvdHlwZS5xYj1mdW5jdGlvbihhKXt2YXIgYyxkLGU7Zm9yKGMgaW4gYSllPWFbY10sZD1oZSh0aGlzLnUsYyksMCE9PWQmJnRoaXMuTmEoZSxkKTtyZXR1cm4hMH07YS5wcm90b3R5cGUucGI9ZnVuY3Rpb24oYSl7dmFyIGMsZCxlLGc7ZT1jPTA7Zm9yKGQ9YS5sZW5ndGg7YzxkO2U9KytjKWc9YVtlXSx0aGlzLk5hKGcsZSsxKTtyZXR1cm4hMH07YS5wcm90b3R5cGUucmVzZXQ9ZnVuY3Rpb24oKXt0aGlzLmZyZWVtZW0oKTtyZXR1cm4ga2UodGhpcy51KT09PVgua2EmJkFlKHRoaXMudSk9PT1YLmthfTthLnByb3RvdHlwZS5mcmVlbWVtPWZ1bmN0aW9uKCl7Zm9yKHZhciBhO2E9dGhpcy52YS5wb3AoKTspUGEoYSk7cmV0dXJuIG51bGx9O2EucHJvdG90eXBlLmZyZWU9ZnVuY3Rpb24oKXt2YXIgYTt0aGlzLmZyZWVtZW0oKTtcbmE9d2UodGhpcy51KT09PVgua2E7ZGVsZXRlIHRoaXMuZGIucmFbdGhpcy51XTt0aGlzLnU9YWU7cmV0dXJuIGF9O3JldHVybiBhfSgpO1xuRGF0YWJhc2U9ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGEpe3RoaXMuZmlsZW5hbWU9XCJkYmZpbGVfXCIrKDQyOTQ5NjcyOTUqTWF0aC5yYW5kb20oKT4+PjApO251bGwhPWEmJkdjKFwiL1wiLHRoaXMuZmlsZW5hbWUsYSwhMCwhMCk7dGhpcy5oYW5kbGVFcnJvcih4ZSh0aGlzLmZpbGVuYW1lLFopKTt0aGlzLmRiPXkoWixcImkzMlwiKTtiZSh0aGlzLmRiKTt0aGlzLnJhPXt9fWEucHJvdG90eXBlLnJ1bj1mdW5jdGlvbihhLGMpe3ZhciBkO2lmKCF0aGlzLmRiKXRocm93XCJEYXRhYmFzZSBjbG9zZWRcIjtjPyhkPXRoaXMucHJlcGFyZShhLGMpLGQuc3RlcCgpLGQuZnJlZSgpKTp0aGlzLmhhbmRsZUVycm9yKHZlKHRoaXMuZGIsYSwwLDAsWikpO3JldHVybiB0aGlzfTthLnByb3RvdHlwZS5leGVjPWZ1bmN0aW9uKGEpe3ZhciBjLGQsZSxnLGg7aWYoIXRoaXMuZGIpdGhyb3dcIkRhdGFiYXNlIGNsb3NlZFwiO2c9bC5xYSgpO2Q9bC5SKGEubGVuZ3RoPDwzKTt3YShhLGQpO2E9bC5SKDQpO2ZvcihlPVxuW107eShkLFwiaThcIikhPT1hZTspaWYoeWEoWiwwLFwiaTMyXCIpLHlhKGEsMCxcImkzMlwiKSx0aGlzLmhhbmRsZUVycm9yKHplKHRoaXMuZGIsZCwtMSxaLGEpKSxjPXkoWixcImkzMlwiKSxkPXkoYSxcImkzMlwiKSxjIT09YWUpe2g9bmV3IGNlKGMsdGhpcyk7Zm9yKGM9bnVsbDtoLnN0ZXAoKTspbnVsbD09PWMmJihjPXtjb2x1bW5zOmguZ2V0Q29sdW1uTmFtZXMoKSx2YWx1ZXM6W119LGUucHVzaChjKSksYy52YWx1ZXMucHVzaChoLmdldCgpKTtoLmZyZWUoKX1sLmdhKGcpO3JldHVybiBlfTthLnByb3RvdHlwZS5lYWNoPWZ1bmN0aW9uKGEsYyxkLGUpe1wiZnVuY3Rpb25cIj09PXR5cGVvZiBjJiYoZT1kLGQ9YyxjPXZvaWQgMCk7Zm9yKGE9dGhpcy5wcmVwYXJlKGEsYyk7YS5zdGVwKCk7KWQoYS5nZXRBc09iamVjdCgpKTthLmZyZWUoKTtpZihcImZ1bmN0aW9uXCI9PT10eXBlb2YgZSlyZXR1cm4gZSgpfTthLnByb3RvdHlwZS5wcmVwYXJlPWZ1bmN0aW9uKGEsYyl7dmFyIGQsZTt5YShaLDAsXCJpMzJcIik7XG50aGlzLmhhbmRsZUVycm9yKHllKHRoaXMuZGIsYSwtMSxaLGFlKSk7ZD15KFosXCJpMzJcIik7aWYoZD09PWFlKXRocm93XCJOb3RoaW5nIHRvIHByZXBhcmVcIjtlPW5ldyBjZShkLHRoaXMpO251bGwhPWMmJmUuYmluZChjKTtyZXR1cm4gdGhpcy5yYVtkXT1lfTthLnByb3RvdHlwZVtcImV4cG9ydFwiXT1mdW5jdGlvbigpe3ZhciBhLGMsZCxlO2Q9dGhpcy5yYTtmb3IoYSBpbiBkKWU9ZFthXSxlLmZyZWUoKTt0aGlzLmhhbmRsZUVycm9yKGxlKHRoaXMuZGIpKTtlPXRoaXMuZmlsZW5hbWU7YT1hPXtlbmNvZGluZzpcImJpbmFyeVwifTthLmZsYWdzPWEuZmxhZ3N8fFwiclwiO2EuZW5jb2Rpbmc9YS5lbmNvZGluZ3x8XCJiaW5hcnlcIjtpZihcInV0ZjhcIiE9PWEuZW5jb2RpbmcmJlwiYmluYXJ5XCIhPT1hLmVuY29kaW5nKXRocm93IEVycm9yKCdJbnZhbGlkIGVuY29kaW5nIHR5cGUgXCInK2EuZW5jb2RpbmcrJ1wiJyk7ZD13YyhlLGEuZmxhZ3MpO2U9cmMoZSkuc2l6ZTt2YXIgZz1uZXcgVWludDhBcnJheShlKTtcbkFjKGQsZywwLGUsMCk7XCJ1dGY4XCI9PT1hLmVuY29kaW5nP2M9TGEoZywwKTpcImJpbmFyeVwiPT09YS5lbmNvZGluZyYmKGM9Zyk7eWMoZCk7dGhpcy5oYW5kbGVFcnJvcih4ZSh0aGlzLmZpbGVuYW1lLFopKTt0aGlzLmRiPXkoWixcImkzMlwiKTtyZXR1cm4gY307YS5wcm90b3R5cGUuY2xvc2U9ZnVuY3Rpb24oKXt2YXIgYSxjLGQ7Yz10aGlzLnJhO2ZvcihhIGluIGMpZD1jW2FdLGQuZnJlZSgpO3RoaXMuaGFuZGxlRXJyb3IobGUodGhpcy5kYikpO3FjKFwiL1wiK3RoaXMuZmlsZW5hbWUpO3JldHVybiB0aGlzLmRiPW51bGx9O2EucHJvdG90eXBlLmhhbmRsZUVycm9yPWZ1bmN0aW9uKGEpe2lmKGE9PT1YLmthKXJldHVybiBudWxsO2E9dWUodGhpcy5kYik7dGhyb3cgRXJyb3IoYSk7fTthLnByb3RvdHlwZS5nZXRSb3dzTW9kaWZpZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gamUodGhpcy5kYil9O2EucHJvdG90eXBlLmNyZWF0ZV9mdW5jdGlvbj1mdW5jdGlvbihhLGMpe3ZhciBkO2Q9bC5MYShmdW5jdGlvbihhLFxuYixkKXt2YXIgbSx0LHIseCx2O3Q9W107Zm9yKG09cj0wOzA8PWI/cjw9YjpyPj1iO209MDw9Yj8rK3I6LS1yKXg9eShkKzQqbSxcImkzMlwiKSx2PUtlKHgpLG09ZnVuY3Rpb24oKXtzd2l0Y2goITEpe2Nhc2UgMSE9PXY6cmV0dXJuIEllO2Nhc2UgMiE9PXY6cmV0dXJuIEhlO2Nhc2UgMyE9PXY6cmV0dXJuIEplO2Nhc2UgNCE9PXY6cmV0dXJuIGZ1bmN0aW9uKGEpe3ZhciBiLGMsZCxlO2U9R2UoYSk7Yj1GZShhKTthPW5ldyBVaW50OEFycmF5KGUpO2ZvcihjPWQ9MDswPD1lP2Q8ZTpkPmU7Yz0wPD1lPysrZDotLWQpYVtjXT11W2IrY107cmV0dXJuIGF9O2RlZmF1bHQ6cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9fX0oKSxtPW0oeCksdC5wdXNoKG0pO2lmKGI9Yy5hcHBseShudWxsLHQpKXN3aXRjaCh0eXBlb2YgYil7Y2FzZSBcIm51bWJlclwiOnJldHVybiBCZShhLGIpO2Nhc2UgXCJzdHJpbmdcIjpyZXR1cm4gRGUoYSxiLC0xLC0xKX1lbHNlIHJldHVybiBDZShhKX0pO3RoaXMuaGFuZGxlRXJyb3Ioc2UodGhpcy5kYixcbmEsYy5sZW5ndGgsWC5qYiwwLGQsMCwwLDApKTtyZXR1cm4gdGhpc307cmV0dXJuIGF9KCk7eGU9Zi5jd3JhcChcInNxbGl0ZTNfb3BlblwiLFwibnVtYmVyXCIsW1wic3RyaW5nXCIsXCJudW1iZXJcIl0pO2xlPWYuY3dyYXAoXCJzcWxpdGUzX2Nsb3NlX3YyXCIsXCJudW1iZXJcIixbXCJudW1iZXJcIl0pO3ZlPWYuY3dyYXAoXCJzcWxpdGUzX2V4ZWNcIixcIm51bWJlclwiLFtcIm51bWJlclwiLFwic3RyaW5nXCIsXCJudW1iZXJcIixcIm51bWJlclwiLFwibnVtYmVyXCJdKTtmLmN3cmFwKFwic3FsaXRlM19mcmVlXCIsXCJcIixbXCJudW1iZXJcIl0pO2plPWYuY3dyYXAoXCJzcWxpdGUzX2NoYW5nZXNcIixcIm51bWJlclwiLFtcIm51bWJlclwiXSk7eWU9Zi5jd3JhcChcInNxbGl0ZTNfcHJlcGFyZV92MlwiLFwibnVtYmVyXCIsW1wibnVtYmVyXCIsXCJzdHJpbmdcIixcIm51bWJlclwiLFwibnVtYmVyXCIsXCJudW1iZXJcIl0pO3plPWYuY3dyYXAoXCJzcWxpdGUzX3ByZXBhcmVfdjJcIixcIm51bWJlclwiLFtcIm51bWJlclwiLFwibnVtYmVyXCIsXCJudW1iZXJcIixcIm51bWJlclwiLFwibnVtYmVyXCJdKTtcbmllPWYuY3dyYXAoXCJzcWxpdGUzX2JpbmRfdGV4dFwiLFwibnVtYmVyXCIsW1wibnVtYmVyXCIsXCJudW1iZXJcIixcIm51bWJlclwiLFwibnVtYmVyXCIsXCJudW1iZXJcIl0pO2VlPWYuY3dyYXAoXCJzcWxpdGUzX2JpbmRfYmxvYlwiLFwibnVtYmVyXCIsW1wibnVtYmVyXCIsXCJudW1iZXJcIixcIm51bWJlclwiLFwibnVtYmVyXCIsXCJudW1iZXJcIl0pO2ZlPWYuY3dyYXAoXCJzcWxpdGUzX2JpbmRfZG91YmxlXCIsXCJudW1iZXJcIixbXCJudW1iZXJcIixcIm51bWJlclwiLFwibnVtYmVyXCJdKTtnZT1mLmN3cmFwKFwic3FsaXRlM19iaW5kX2ludFwiLFwibnVtYmVyXCIsW1wibnVtYmVyXCIsXCJudW1iZXJcIixcIm51bWJlclwiXSk7aGU9Zi5jd3JhcChcInNxbGl0ZTNfYmluZF9wYXJhbWV0ZXJfaW5kZXhcIixcIm51bWJlclwiLFtcIm51bWJlclwiLFwic3RyaW5nXCJdKTtFZT1mLmN3cmFwKFwic3FsaXRlM19zdGVwXCIsXCJudW1iZXJcIixbXCJudW1iZXJcIl0pO3VlPWYuY3dyYXAoXCJzcWxpdGUzX2Vycm1zZ1wiLFwic3RyaW5nXCIsW1wibnVtYmVyXCJdKTtcbnRlPWYuY3dyYXAoXCJzcWxpdGUzX2RhdGFfY291bnRcIixcIm51bWJlclwiLFtcIm51bWJlclwiXSk7b2U9Zi5jd3JhcChcInNxbGl0ZTNfY29sdW1uX2RvdWJsZVwiLFwibnVtYmVyXCIsW1wibnVtYmVyXCIsXCJudW1iZXJcIl0pO3FlPWYuY3dyYXAoXCJzcWxpdGUzX2NvbHVtbl90ZXh0XCIsXCJzdHJpbmdcIixbXCJudW1iZXJcIixcIm51bWJlclwiXSk7bWU9Zi5jd3JhcChcInNxbGl0ZTNfY29sdW1uX2Jsb2JcIixcIm51bWJlclwiLFtcIm51bWJlclwiLFwibnVtYmVyXCJdKTtuZT1mLmN3cmFwKFwic3FsaXRlM19jb2x1bW5fYnl0ZXNcIixcIm51bWJlclwiLFtcIm51bWJlclwiLFwibnVtYmVyXCJdKTtyZT1mLmN3cmFwKFwic3FsaXRlM19jb2x1bW5fdHlwZVwiLFwibnVtYmVyXCIsW1wibnVtYmVyXCIsXCJudW1iZXJcIl0pO3BlPWYuY3dyYXAoXCJzcWxpdGUzX2NvbHVtbl9uYW1lXCIsXCJzdHJpbmdcIixbXCJudW1iZXJcIixcIm51bWJlclwiXSk7QWU9Zi5jd3JhcChcInNxbGl0ZTNfcmVzZXRcIixcIm51bWJlclwiLFtcIm51bWJlclwiXSk7XG5rZT1mLmN3cmFwKFwic3FsaXRlM19jbGVhcl9iaW5kaW5nc1wiLFwibnVtYmVyXCIsW1wibnVtYmVyXCJdKTt3ZT1mLmN3cmFwKFwic3FsaXRlM19maW5hbGl6ZVwiLFwibnVtYmVyXCIsW1wibnVtYmVyXCJdKTtzZT1mLmN3cmFwKFwic3FsaXRlM19jcmVhdGVfZnVuY3Rpb25fdjJcIixcIm51bWJlclwiLFwibnVtYmVyIHN0cmluZyBudW1iZXIgbnVtYmVyIG51bWJlciBudW1iZXIgbnVtYmVyIG51bWJlciBudW1iZXJcIi5zcGxpdChcIiBcIikpO0tlPWYuY3dyYXAoXCJzcWxpdGUzX3ZhbHVlX3R5cGVcIixcIm51bWJlclwiLFtcIm51bWJlclwiXSk7R2U9Zi5jd3JhcChcInNxbGl0ZTNfdmFsdWVfYnl0ZXNcIixcIm51bWJlclwiLFtcIm51bWJlclwiXSk7SmU9Zi5jd3JhcChcInNxbGl0ZTNfdmFsdWVfdGV4dFwiLFwic3RyaW5nXCIsW1wibnVtYmVyXCJdKTtJZT1mLmN3cmFwKFwic3FsaXRlM192YWx1ZV9pbnRcIixcIm51bWJlclwiLFtcIm51bWJlclwiXSk7RmU9Zi5jd3JhcChcInNxbGl0ZTNfdmFsdWVfYmxvYlwiLFwibnVtYmVyXCIsW1wibnVtYmVyXCJdKTtcbkhlPWYuY3dyYXAoXCJzcWxpdGUzX3ZhbHVlX2RvdWJsZVwiLFwibnVtYmVyXCIsW1wibnVtYmVyXCJdKTtCZT1mLmN3cmFwKFwic3FsaXRlM19yZXN1bHRfZG91YmxlXCIsXCJcIixbXCJudW1iZXJcIixcIm51bWJlclwiXSk7Q2U9Zi5jd3JhcChcInNxbGl0ZTNfcmVzdWx0X251bGxcIixcIlwiLFtcIm51bWJlclwiXSk7RGU9Zi5jd3JhcChcInNxbGl0ZTNfcmVzdWx0X3RleHRcIixcIlwiLFtcIm51bWJlclwiLFwic3RyaW5nXCIsXCJudW1iZXJcIixcIm51bWJlclwiXSk7YmU9Zi5jd3JhcChcIlJlZ2lzdGVyRXh0ZW5zaW9uRnVuY3Rpb25zXCIsXCJudW1iZXJcIixbXCJudW1iZXJcIl0pO3RoaXMuU1FMPXtEYXRhYmFzZTpEYXRhYmFzZX07Zm9yKGRlIGluIHRoaXMuU1FMKWZbZGVdPXRoaXMuU1FMW2RlXTthZT0wO1gua2E9MDtYLkVSUk9SPTE7WC4kZD0yO1guamU9MztYLlViPTQ7WC5XYj01O1guY2U9NjtYLk5PTUVNPTc7WC5tZT04O1guYWU9OTtYLmJlPTEwO1guWmI9MTE7WC5OT1RGT1VORD0xMjtYLllkPTEzO1guWGI9MTQ7WC5rZT0xNTtcblguRU1QVFk9MTY7WC5uZT0xNztYLnBlPTE4O1guWWI9MTk7WC5kZT0yMDtYLmVlPTIxO1guZmU9MjI7WC5WYj0yMztYLlhkPTI0O1gubGU9MjU7WC5nZT0yNjtYLmhlPTI3O1gucWU9Mjg7WC5oYj0xMDA7WC5ET05FPTEwMTtYLmdiPTE7WC5GTE9BVD0yO1guaWI9MztYLmNiPTQ7WC5pZT01O1guamI9MTtcblxucmV0dXJuIHRoaXNbJ1NRTCddO1xufSkoKTtcbmlmICh0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJykgbW9kdWxlLmV4cG9ydHMgPSBTUUw7XG5pZiAodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJykgZGVmaW5lKFNRTCk7XG4iLCIvLyBDb3B5cmlnaHQgSm95ZW50LCBJbmMuIGFuZCBvdGhlciBOb2RlIGNvbnRyaWJ1dG9ycy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZVxuLy8gXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nXG4vLyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsXG4vLyBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0XG4vLyBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGVcbi8vIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkXG4vLyBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTXG4vLyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GXG4vLyBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOXG4vLyBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSxcbi8vIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUlxuLy8gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRVxuLy8gVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cblxubW9kdWxlLmV4cG9ydHMgPSBTdHJlYW07XG5cbnZhciBFRSA9IHJlcXVpcmUoJ2V2ZW50cycpLkV2ZW50RW1pdHRlcjtcbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJyk7XG5cbmluaGVyaXRzKFN0cmVhbSwgRUUpO1xuU3RyZWFtLlJlYWRhYmxlID0gcmVxdWlyZSgncmVhZGFibGUtc3RyZWFtL3JlYWRhYmxlLmpzJyk7XG5TdHJlYW0uV3JpdGFibGUgPSByZXF1aXJlKCdyZWFkYWJsZS1zdHJlYW0vd3JpdGFibGUuanMnKTtcblN0cmVhbS5EdXBsZXggPSByZXF1aXJlKCdyZWFkYWJsZS1zdHJlYW0vZHVwbGV4LmpzJyk7XG5TdHJlYW0uVHJhbnNmb3JtID0gcmVxdWlyZSgncmVhZGFibGUtc3RyZWFtL3RyYW5zZm9ybS5qcycpO1xuU3RyZWFtLlBhc3NUaHJvdWdoID0gcmVxdWlyZSgncmVhZGFibGUtc3RyZWFtL3Bhc3N0aHJvdWdoLmpzJyk7XG5cbi8vIEJhY2t3YXJkcy1jb21wYXQgd2l0aCBub2RlIDAuNC54XG5TdHJlYW0uU3RyZWFtID0gU3RyZWFtO1xuXG5cblxuLy8gb2xkLXN0eWxlIHN0cmVhbXMuICBOb3RlIHRoYXQgdGhlIHBpcGUgbWV0aG9kICh0aGUgb25seSByZWxldmFudFxuLy8gcGFydCBvZiB0aGlzIGNsYXNzKSBpcyBvdmVycmlkZGVuIGluIHRoZSBSZWFkYWJsZSBjbGFzcy5cblxuZnVuY3Rpb24gU3RyZWFtKCkge1xuICBFRS5jYWxsKHRoaXMpO1xufVxuXG5TdHJlYW0ucHJvdG90eXBlLnBpcGUgPSBmdW5jdGlvbihkZXN0LCBvcHRpb25zKSB7XG4gIHZhciBzb3VyY2UgPSB0aGlzO1xuXG4gIGZ1bmN0aW9uIG9uZGF0YShjaHVuaykge1xuICAgIGlmIChkZXN0LndyaXRhYmxlKSB7XG4gICAgICBpZiAoZmFsc2UgPT09IGRlc3Qud3JpdGUoY2h1bmspICYmIHNvdXJjZS5wYXVzZSkge1xuICAgICAgICBzb3VyY2UucGF1c2UoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBzb3VyY2Uub24oJ2RhdGEnLCBvbmRhdGEpO1xuXG4gIGZ1bmN0aW9uIG9uZHJhaW4oKSB7XG4gICAgaWYgKHNvdXJjZS5yZWFkYWJsZSAmJiBzb3VyY2UucmVzdW1lKSB7XG4gICAgICBzb3VyY2UucmVzdW1lKCk7XG4gICAgfVxuICB9XG5cbiAgZGVzdC5vbignZHJhaW4nLCBvbmRyYWluKTtcblxuICAvLyBJZiB0aGUgJ2VuZCcgb3B0aW9uIGlzIG5vdCBzdXBwbGllZCwgZGVzdC5lbmQoKSB3aWxsIGJlIGNhbGxlZCB3aGVuXG4gIC8vIHNvdXJjZSBnZXRzIHRoZSAnZW5kJyBvciAnY2xvc2UnIGV2ZW50cy4gIE9ubHkgZGVzdC5lbmQoKSBvbmNlLlxuICBpZiAoIWRlc3QuX2lzU3RkaW8gJiYgKCFvcHRpb25zIHx8IG9wdGlvbnMuZW5kICE9PSBmYWxzZSkpIHtcbiAgICBzb3VyY2Uub24oJ2VuZCcsIG9uZW5kKTtcbiAgICBzb3VyY2Uub24oJ2Nsb3NlJywgb25jbG9zZSk7XG4gIH1cblxuICB2YXIgZGlkT25FbmQgPSBmYWxzZTtcbiAgZnVuY3Rpb24gb25lbmQoKSB7XG4gICAgaWYgKGRpZE9uRW5kKSByZXR1cm47XG4gICAgZGlkT25FbmQgPSB0cnVlO1xuXG4gICAgZGVzdC5lbmQoKTtcbiAgfVxuXG5cbiAgZnVuY3Rpb24gb25jbG9zZSgpIHtcbiAgICBpZiAoZGlkT25FbmQpIHJldHVybjtcbiAgICBkaWRPbkVuZCA9IHRydWU7XG5cbiAgICBpZiAodHlwZW9mIGRlc3QuZGVzdHJveSA9PT0gJ2Z1bmN0aW9uJykgZGVzdC5kZXN0cm95KCk7XG4gIH1cblxuICAvLyBkb24ndCBsZWF2ZSBkYW5nbGluZyBwaXBlcyB3aGVuIHRoZXJlIGFyZSBlcnJvcnMuXG4gIGZ1bmN0aW9uIG9uZXJyb3IoZXIpIHtcbiAgICBjbGVhbnVwKCk7XG4gICAgaWYgKEVFLmxpc3RlbmVyQ291bnQodGhpcywgJ2Vycm9yJykgPT09IDApIHtcbiAgICAgIHRocm93IGVyOyAvLyBVbmhhbmRsZWQgc3RyZWFtIGVycm9yIGluIHBpcGUuXG4gICAgfVxuICB9XG5cbiAgc291cmNlLm9uKCdlcnJvcicsIG9uZXJyb3IpO1xuICBkZXN0Lm9uKCdlcnJvcicsIG9uZXJyb3IpO1xuXG4gIC8vIHJlbW92ZSBhbGwgdGhlIGV2ZW50IGxpc3RlbmVycyB0aGF0IHdlcmUgYWRkZWQuXG4gIGZ1bmN0aW9uIGNsZWFudXAoKSB7XG4gICAgc291cmNlLnJlbW92ZUxpc3RlbmVyKCdkYXRhJywgb25kYXRhKTtcbiAgICBkZXN0LnJlbW92ZUxpc3RlbmVyKCdkcmFpbicsIG9uZHJhaW4pO1xuXG4gICAgc291cmNlLnJlbW92ZUxpc3RlbmVyKCdlbmQnLCBvbmVuZCk7XG4gICAgc291cmNlLnJlbW92ZUxpc3RlbmVyKCdjbG9zZScsIG9uY2xvc2UpO1xuXG4gICAgc291cmNlLnJlbW92ZUxpc3RlbmVyKCdlcnJvcicsIG9uZXJyb3IpO1xuICAgIGRlc3QucmVtb3ZlTGlzdGVuZXIoJ2Vycm9yJywgb25lcnJvcik7XG5cbiAgICBzb3VyY2UucmVtb3ZlTGlzdGVuZXIoJ2VuZCcsIGNsZWFudXApO1xuICAgIHNvdXJjZS5yZW1vdmVMaXN0ZW5lcignY2xvc2UnLCBjbGVhbnVwKTtcblxuICAgIGRlc3QucmVtb3ZlTGlzdGVuZXIoJ2Nsb3NlJywgY2xlYW51cCk7XG4gIH1cblxuICBzb3VyY2Uub24oJ2VuZCcsIGNsZWFudXApO1xuICBzb3VyY2Uub24oJ2Nsb3NlJywgY2xlYW51cCk7XG5cbiAgZGVzdC5vbignY2xvc2UnLCBjbGVhbnVwKTtcblxuICBkZXN0LmVtaXQoJ3BpcGUnLCBzb3VyY2UpO1xuXG4gIC8vIEFsbG93IGZvciB1bml4LWxpa2UgdXNhZ2U6IEEucGlwZShCKS5waXBlKEMpXG4gIHJldHVybiBkZXN0O1xufTtcbiIsIlxudmFyIFByb21pc2UgPSByZXF1aXJlKCdhbnktcHJvbWlzZScpXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKHN0cmVhbSwgZG9uZSkge1xuICBpZiAoIXN0cmVhbSkge1xuICAgIC8vIG5vIGFyZ3VtZW50cywgbWVhbmluZyBzdHJlYW0gPSB0aGlzXG4gICAgc3RyZWFtID0gdGhpc1xuICB9IGVsc2UgaWYgKHR5cGVvZiBzdHJlYW0gPT09ICdmdW5jdGlvbicpIHtcbiAgICAvLyBzdHJlYW0gPSB0aGlzLCBjYWxsYmFjayBwYXNzZWRcbiAgICBkb25lID0gc3RyZWFtXG4gICAgc3RyZWFtID0gdGhpc1xuICB9XG5cbiAgdmFyIGRlZmVycmVkXG4gIGlmICghc3RyZWFtLnJlYWRhYmxlKSBkZWZlcnJlZCA9IFByb21pc2UucmVzb2x2ZShbXSlcbiAgZWxzZSBkZWZlcnJlZCA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAvLyBzdHJlYW0gaXMgYWxyZWFkeSBlbmRlZFxuICAgIGlmICghc3RyZWFtLnJlYWRhYmxlKSByZXR1cm4gcmVzb2x2ZShbXSlcblxuICAgIHZhciBhcnIgPSBbXVxuXG4gICAgc3RyZWFtLm9uKCdkYXRhJywgb25EYXRhKVxuICAgIHN0cmVhbS5vbignZW5kJywgb25FbmQpXG4gICAgc3RyZWFtLm9uKCdlcnJvcicsIG9uRW5kKVxuICAgIHN0cmVhbS5vbignY2xvc2UnLCBvbkNsb3NlKVxuXG4gICAgZnVuY3Rpb24gb25EYXRhKGRvYykge1xuICAgICAgYXJyLnB1c2goZG9jKVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIG9uRW5kKGVycikge1xuICAgICAgaWYgKGVycikgcmVqZWN0KGVycilcbiAgICAgIGVsc2UgcmVzb2x2ZShhcnIpXG4gICAgICBjbGVhbnVwKClcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBvbkNsb3NlKCkge1xuICAgICAgcmVzb2x2ZShhcnIpXG4gICAgICBjbGVhbnVwKClcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjbGVhbnVwKCkge1xuICAgICAgYXJyID0gbnVsbFxuICAgICAgc3RyZWFtLnJlbW92ZUxpc3RlbmVyKCdkYXRhJywgb25EYXRhKVxuICAgICAgc3RyZWFtLnJlbW92ZUxpc3RlbmVyKCdlbmQnLCBvbkVuZClcbiAgICAgIHN0cmVhbS5yZW1vdmVMaXN0ZW5lcignZXJyb3InLCBvbkVuZClcbiAgICAgIHN0cmVhbS5yZW1vdmVMaXN0ZW5lcignY2xvc2UnLCBvbkNsb3NlKVxuICAgIH1cbiAgfSlcblxuICBpZiAodHlwZW9mIGRvbmUgPT09ICdmdW5jdGlvbicpIHtcbiAgICBkZWZlcnJlZC50aGVuKGZ1bmN0aW9uIChhcnIpIHtcbiAgICAgIHByb2Nlc3MubmV4dFRpY2soZnVuY3Rpb24oKSB7XG4gICAgICAgIGRvbmUobnVsbCwgYXJyKVxuICAgICAgfSlcbiAgICB9LCBkb25lKVxuICB9XG5cbiAgcmV0dXJuIGRlZmVycmVkXG59XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBCdWZmZXIgPSByZXF1aXJlKCdidWZmZXInKS5CdWZmZXI7XG52YXIgYnVmZmVyU2hpbSA9IHJlcXVpcmUoJ2J1ZmZlci1zaGltcycpO1xuXG52YXIgaXNFbmNvZGluZyA9IEJ1ZmZlci5pc0VuY29kaW5nIHx8IGZ1bmN0aW9uIChlbmNvZGluZykge1xuICBlbmNvZGluZyA9ICcnICsgZW5jb2Rpbmc7XG4gIHN3aXRjaCAoZW5jb2RpbmcgJiYgZW5jb2RpbmcudG9Mb3dlckNhc2UoKSkge1xuICAgIGNhc2UgJ2hleCc6Y2FzZSAndXRmOCc6Y2FzZSAndXRmLTgnOmNhc2UgJ2FzY2lpJzpjYXNlICdiaW5hcnknOmNhc2UgJ2Jhc2U2NCc6Y2FzZSAndWNzMic6Y2FzZSAndWNzLTInOmNhc2UgJ3V0ZjE2bGUnOmNhc2UgJ3V0Zi0xNmxlJzpjYXNlICdyYXcnOlxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgfVxufTtcblxuZnVuY3Rpb24gX25vcm1hbGl6ZUVuY29kaW5nKGVuYykge1xuICBpZiAoIWVuYykgcmV0dXJuICd1dGY4JztcbiAgdmFyIHJldHJpZWQ7XG4gIHdoaWxlICh0cnVlKSB7XG4gICAgc3dpdGNoIChlbmMpIHtcbiAgICAgIGNhc2UgJ3V0ZjgnOlxuICAgICAgY2FzZSAndXRmLTgnOlxuICAgICAgICByZXR1cm4gJ3V0ZjgnO1xuICAgICAgY2FzZSAndWNzMic6XG4gICAgICBjYXNlICd1Y3MtMic6XG4gICAgICBjYXNlICd1dGYxNmxlJzpcbiAgICAgIGNhc2UgJ3V0Zi0xNmxlJzpcbiAgICAgICAgcmV0dXJuICd1dGYxNmxlJztcbiAgICAgIGNhc2UgJ2xhdGluMSc6XG4gICAgICBjYXNlICdiaW5hcnknOlxuICAgICAgICByZXR1cm4gJ2xhdGluMSc7XG4gICAgICBjYXNlICdiYXNlNjQnOlxuICAgICAgY2FzZSAnYXNjaWknOlxuICAgICAgY2FzZSAnaGV4JzpcbiAgICAgICAgcmV0dXJuIGVuYztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGlmIChyZXRyaWVkKSByZXR1cm47IC8vIHVuZGVmaW5lZFxuICAgICAgICBlbmMgPSAoJycgKyBlbmMpLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIHJldHJpZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxufTtcblxuLy8gRG8gbm90IGNhY2hlIGBCdWZmZXIuaXNFbmNvZGluZ2Agd2hlbiBjaGVja2luZyBlbmNvZGluZyBuYW1lcyBhcyBzb21lXG4vLyBtb2R1bGVzIG1vbmtleS1wYXRjaCBpdCB0byBzdXBwb3J0IGFkZGl0aW9uYWwgZW5jb2RpbmdzXG5mdW5jdGlvbiBub3JtYWxpemVFbmNvZGluZyhlbmMpIHtcbiAgdmFyIG5lbmMgPSBfbm9ybWFsaXplRW5jb2RpbmcoZW5jKTtcbiAgaWYgKHR5cGVvZiBuZW5jICE9PSAnc3RyaW5nJyAmJiAoQnVmZmVyLmlzRW5jb2RpbmcgPT09IGlzRW5jb2RpbmcgfHwgIWlzRW5jb2RpbmcoZW5jKSkpIHRocm93IG5ldyBFcnJvcignVW5rbm93biBlbmNvZGluZzogJyArIGVuYyk7XG4gIHJldHVybiBuZW5jIHx8IGVuYztcbn1cblxuLy8gU3RyaW5nRGVjb2RlciBwcm92aWRlcyBhbiBpbnRlcmZhY2UgZm9yIGVmZmljaWVudGx5IHNwbGl0dGluZyBhIHNlcmllcyBvZlxuLy8gYnVmZmVycyBpbnRvIGEgc2VyaWVzIG9mIEpTIHN0cmluZ3Mgd2l0aG91dCBicmVha2luZyBhcGFydCBtdWx0aS1ieXRlXG4vLyBjaGFyYWN0ZXJzLlxuZXhwb3J0cy5TdHJpbmdEZWNvZGVyID0gU3RyaW5nRGVjb2RlcjtcbmZ1bmN0aW9uIFN0cmluZ0RlY29kZXIoZW5jb2RpbmcpIHtcbiAgdGhpcy5lbmNvZGluZyA9IG5vcm1hbGl6ZUVuY29kaW5nKGVuY29kaW5nKTtcbiAgdmFyIG5iO1xuICBzd2l0Y2ggKHRoaXMuZW5jb2RpbmcpIHtcbiAgICBjYXNlICd1dGYxNmxlJzpcbiAgICAgIHRoaXMudGV4dCA9IHV0ZjE2VGV4dDtcbiAgICAgIHRoaXMuZW5kID0gdXRmMTZFbmQ7XG4gICAgICBuYiA9IDQ7XG4gICAgICBicmVhaztcbiAgICBjYXNlICd1dGY4JzpcbiAgICAgIHRoaXMuZmlsbExhc3QgPSB1dGY4RmlsbExhc3Q7XG4gICAgICBuYiA9IDQ7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdiYXNlNjQnOlxuICAgICAgdGhpcy50ZXh0ID0gYmFzZTY0VGV4dDtcbiAgICAgIHRoaXMuZW5kID0gYmFzZTY0RW5kO1xuICAgICAgbmIgPSAzO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIHRoaXMud3JpdGUgPSBzaW1wbGVXcml0ZTtcbiAgICAgIHRoaXMuZW5kID0gc2ltcGxlRW5kO1xuICAgICAgcmV0dXJuO1xuICB9XG4gIHRoaXMubGFzdE5lZWQgPSAwO1xuICB0aGlzLmxhc3RUb3RhbCA9IDA7XG4gIHRoaXMubGFzdENoYXIgPSBidWZmZXJTaGltLmFsbG9jVW5zYWZlKG5iKTtcbn1cblxuU3RyaW5nRGVjb2Rlci5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbiAoYnVmKSB7XG4gIGlmIChidWYubGVuZ3RoID09PSAwKSByZXR1cm4gJyc7XG4gIHZhciByO1xuICB2YXIgaTtcbiAgaWYgKHRoaXMubGFzdE5lZWQpIHtcbiAgICByID0gdGhpcy5maWxsTGFzdChidWYpO1xuICAgIGlmIChyID09PSB1bmRlZmluZWQpIHJldHVybiAnJztcbiAgICBpID0gdGhpcy5sYXN0TmVlZDtcbiAgICB0aGlzLmxhc3ROZWVkID0gMDtcbiAgfSBlbHNlIHtcbiAgICBpID0gMDtcbiAgfVxuICBpZiAoaSA8IGJ1Zi5sZW5ndGgpIHJldHVybiByID8gciArIHRoaXMudGV4dChidWYsIGkpIDogdGhpcy50ZXh0KGJ1ZiwgaSk7XG4gIHJldHVybiByIHx8ICcnO1xufTtcblxuU3RyaW5nRGVjb2Rlci5wcm90b3R5cGUuZW5kID0gdXRmOEVuZDtcblxuLy8gUmV0dXJucyBvbmx5IGNvbXBsZXRlIGNoYXJhY3RlcnMgaW4gYSBCdWZmZXJcblN0cmluZ0RlY29kZXIucHJvdG90eXBlLnRleHQgPSB1dGY4VGV4dDtcblxuLy8gQXR0ZW1wdHMgdG8gY29tcGxldGUgYSBwYXJ0aWFsIG5vbi1VVEYtOCBjaGFyYWN0ZXIgdXNpbmcgYnl0ZXMgZnJvbSBhIEJ1ZmZlclxuU3RyaW5nRGVjb2Rlci5wcm90b3R5cGUuZmlsbExhc3QgPSBmdW5jdGlvbiAoYnVmKSB7XG4gIGlmICh0aGlzLmxhc3ROZWVkIDw9IGJ1Zi5sZW5ndGgpIHtcbiAgICBidWYuY29weSh0aGlzLmxhc3RDaGFyLCB0aGlzLmxhc3RUb3RhbCAtIHRoaXMubGFzdE5lZWQsIDAsIHRoaXMubGFzdE5lZWQpO1xuICAgIHJldHVybiB0aGlzLmxhc3RDaGFyLnRvU3RyaW5nKHRoaXMuZW5jb2RpbmcsIDAsIHRoaXMubGFzdFRvdGFsKTtcbiAgfVxuICBidWYuY29weSh0aGlzLmxhc3RDaGFyLCB0aGlzLmxhc3RUb3RhbCAtIHRoaXMubGFzdE5lZWQsIDAsIGJ1Zi5sZW5ndGgpO1xuICB0aGlzLmxhc3ROZWVkIC09IGJ1Zi5sZW5ndGg7XG59O1xuXG4vLyBDaGVja3MgdGhlIHR5cGUgb2YgYSBVVEYtOCBieXRlLCB3aGV0aGVyIGl0J3MgQVNDSUksIGEgbGVhZGluZyBieXRlLCBvciBhXG4vLyBjb250aW51YXRpb24gYnl0ZS5cbmZ1bmN0aW9uIHV0ZjhDaGVja0J5dGUoYnl0ZSkge1xuICBpZiAoYnl0ZSA8PSAweDdGKSByZXR1cm4gMDtlbHNlIGlmIChieXRlID4+IDUgPT09IDB4MDYpIHJldHVybiAyO2Vsc2UgaWYgKGJ5dGUgPj4gNCA9PT0gMHgwRSkgcmV0dXJuIDM7ZWxzZSBpZiAoYnl0ZSA+PiAzID09PSAweDFFKSByZXR1cm4gNDtcbiAgcmV0dXJuIC0xO1xufVxuXG4vLyBDaGVja3MgYXQgbW9zdCAzIGJ5dGVzIGF0IHRoZSBlbmQgb2YgYSBCdWZmZXIgaW4gb3JkZXIgdG8gZGV0ZWN0IGFuXG4vLyBpbmNvbXBsZXRlIG11bHRpLWJ5dGUgVVRGLTggY2hhcmFjdGVyLiBUaGUgdG90YWwgbnVtYmVyIG9mIGJ5dGVzICgyLCAzLCBvciA0KVxuLy8gbmVlZGVkIHRvIGNvbXBsZXRlIHRoZSBVVEYtOCBjaGFyYWN0ZXIgKGlmIGFwcGxpY2FibGUpIGFyZSByZXR1cm5lZC5cbmZ1bmN0aW9uIHV0ZjhDaGVja0luY29tcGxldGUoc2VsZiwgYnVmLCBpKSB7XG4gIHZhciBqID0gYnVmLmxlbmd0aCAtIDE7XG4gIGlmIChqIDwgaSkgcmV0dXJuIDA7XG4gIHZhciBuYiA9IHV0ZjhDaGVja0J5dGUoYnVmW2pdKTtcbiAgaWYgKG5iID49IDApIHtcbiAgICBpZiAobmIgPiAwKSBzZWxmLmxhc3ROZWVkID0gbmIgLSAxO1xuICAgIHJldHVybiBuYjtcbiAgfVxuICBpZiAoLS1qIDwgaSkgcmV0dXJuIDA7XG4gIG5iID0gdXRmOENoZWNrQnl0ZShidWZbal0pO1xuICBpZiAobmIgPj0gMCkge1xuICAgIGlmIChuYiA+IDApIHNlbGYubGFzdE5lZWQgPSBuYiAtIDI7XG4gICAgcmV0dXJuIG5iO1xuICB9XG4gIGlmICgtLWogPCBpKSByZXR1cm4gMDtcbiAgbmIgPSB1dGY4Q2hlY2tCeXRlKGJ1ZltqXSk7XG4gIGlmIChuYiA+PSAwKSB7XG4gICAgaWYgKG5iID4gMCkge1xuICAgICAgaWYgKG5iID09PSAyKSBuYiA9IDA7ZWxzZSBzZWxmLmxhc3ROZWVkID0gbmIgLSAzO1xuICAgIH1cbiAgICByZXR1cm4gbmI7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vIFZhbGlkYXRlcyBhcyBtYW55IGNvbnRpbnVhdGlvbiBieXRlcyBmb3IgYSBtdWx0aS1ieXRlIFVURi04IGNoYXJhY3RlciBhc1xuLy8gbmVlZGVkIG9yIGFyZSBhdmFpbGFibGUuIElmIHdlIHNlZSBhIG5vbi1jb250aW51YXRpb24gYnl0ZSB3aGVyZSB3ZSBleHBlY3Rcbi8vIG9uZSwgd2UgXCJyZXBsYWNlXCIgdGhlIHZhbGlkYXRlZCBjb250aW51YXRpb24gYnl0ZXMgd2UndmUgc2VlbiBzbyBmYXIgd2l0aFxuLy8gVVRGLTggcmVwbGFjZW1lbnQgY2hhcmFjdGVycyAoJ1xcdWZmZmQnKSwgdG8gbWF0Y2ggdjgncyBVVEYtOCBkZWNvZGluZ1xuLy8gYmVoYXZpb3IuIFRoZSBjb250aW51YXRpb24gYnl0ZSBjaGVjayBpcyBpbmNsdWRlZCB0aHJlZSB0aW1lcyBpbiB0aGUgY2FzZVxuLy8gd2hlcmUgYWxsIG9mIHRoZSBjb250aW51YXRpb24gYnl0ZXMgZm9yIGEgY2hhcmFjdGVyIGV4aXN0IGluIHRoZSBzYW1lIGJ1ZmZlci5cbi8vIEl0IGlzIGFsc28gZG9uZSB0aGlzIHdheSBhcyBhIHNsaWdodCBwZXJmb3JtYW5jZSBpbmNyZWFzZSBpbnN0ZWFkIG9mIHVzaW5nIGFcbi8vIGxvb3AuXG5mdW5jdGlvbiB1dGY4Q2hlY2tFeHRyYUJ5dGVzKHNlbGYsIGJ1ZiwgcCkge1xuICBpZiAoKGJ1ZlswXSAmIDB4QzApICE9PSAweDgwKSB7XG4gICAgc2VsZi5sYXN0TmVlZCA9IDA7XG4gICAgcmV0dXJuICdcXHVmZmZkJy5yZXBlYXQocCk7XG4gIH1cbiAgaWYgKHNlbGYubGFzdE5lZWQgPiAxICYmIGJ1Zi5sZW5ndGggPiAxKSB7XG4gICAgaWYgKChidWZbMV0gJiAweEMwKSAhPT0gMHg4MCkge1xuICAgICAgc2VsZi5sYXN0TmVlZCA9IDE7XG4gICAgICByZXR1cm4gJ1xcdWZmZmQnLnJlcGVhdChwICsgMSk7XG4gICAgfVxuICAgIGlmIChzZWxmLmxhc3ROZWVkID4gMiAmJiBidWYubGVuZ3RoID4gMikge1xuICAgICAgaWYgKChidWZbMl0gJiAweEMwKSAhPT0gMHg4MCkge1xuICAgICAgICBzZWxmLmxhc3ROZWVkID0gMjtcbiAgICAgICAgcmV0dXJuICdcXHVmZmZkJy5yZXBlYXQocCArIDIpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vLyBBdHRlbXB0cyB0byBjb21wbGV0ZSBhIG11bHRpLWJ5dGUgVVRGLTggY2hhcmFjdGVyIHVzaW5nIGJ5dGVzIGZyb20gYSBCdWZmZXIuXG5mdW5jdGlvbiB1dGY4RmlsbExhc3QoYnVmKSB7XG4gIHZhciBwID0gdGhpcy5sYXN0VG90YWwgLSB0aGlzLmxhc3ROZWVkO1xuICB2YXIgciA9IHV0ZjhDaGVja0V4dHJhQnl0ZXModGhpcywgYnVmLCBwKTtcbiAgaWYgKHIgIT09IHVuZGVmaW5lZCkgcmV0dXJuIHI7XG4gIGlmICh0aGlzLmxhc3ROZWVkIDw9IGJ1Zi5sZW5ndGgpIHtcbiAgICBidWYuY29weSh0aGlzLmxhc3RDaGFyLCBwLCAwLCB0aGlzLmxhc3ROZWVkKTtcbiAgICByZXR1cm4gdGhpcy5sYXN0Q2hhci50b1N0cmluZyh0aGlzLmVuY29kaW5nLCAwLCB0aGlzLmxhc3RUb3RhbCk7XG4gIH1cbiAgYnVmLmNvcHkodGhpcy5sYXN0Q2hhciwgcCwgMCwgYnVmLmxlbmd0aCk7XG4gIHRoaXMubGFzdE5lZWQgLT0gYnVmLmxlbmd0aDtcbn1cblxuLy8gUmV0dXJucyBhbGwgY29tcGxldGUgVVRGLTggY2hhcmFjdGVycyBpbiBhIEJ1ZmZlci4gSWYgdGhlIEJ1ZmZlciBlbmRlZCBvbiBhXG4vLyBwYXJ0aWFsIGNoYXJhY3RlciwgdGhlIGNoYXJhY3RlcidzIGJ5dGVzIGFyZSBidWZmZXJlZCB1bnRpbCB0aGUgcmVxdWlyZWRcbi8vIG51bWJlciBvZiBieXRlcyBhcmUgYXZhaWxhYmxlLlxuZnVuY3Rpb24gdXRmOFRleHQoYnVmLCBpKSB7XG4gIHZhciB0b3RhbCA9IHV0ZjhDaGVja0luY29tcGxldGUodGhpcywgYnVmLCBpKTtcbiAgaWYgKCF0aGlzLmxhc3ROZWVkKSByZXR1cm4gYnVmLnRvU3RyaW5nKCd1dGY4JywgaSk7XG4gIHRoaXMubGFzdFRvdGFsID0gdG90YWw7XG4gIHZhciBlbmQgPSBidWYubGVuZ3RoIC0gKHRvdGFsIC0gdGhpcy5sYXN0TmVlZCk7XG4gIGJ1Zi5jb3B5KHRoaXMubGFzdENoYXIsIDAsIGVuZCk7XG4gIHJldHVybiBidWYudG9TdHJpbmcoJ3V0ZjgnLCBpLCBlbmQpO1xufVxuXG4vLyBGb3IgVVRGLTgsIGEgcmVwbGFjZW1lbnQgY2hhcmFjdGVyIGZvciBlYWNoIGJ1ZmZlcmVkIGJ5dGUgb2YgYSAocGFydGlhbClcbi8vIGNoYXJhY3RlciBuZWVkcyB0byBiZSBhZGRlZCB0byB0aGUgb3V0cHV0LlxuZnVuY3Rpb24gdXRmOEVuZChidWYpIHtcbiAgdmFyIHIgPSBidWYgJiYgYnVmLmxlbmd0aCA/IHRoaXMud3JpdGUoYnVmKSA6ICcnO1xuICBpZiAodGhpcy5sYXN0TmVlZCkgcmV0dXJuIHIgKyAnXFx1ZmZmZCcucmVwZWF0KHRoaXMubGFzdFRvdGFsIC0gdGhpcy5sYXN0TmVlZCk7XG4gIHJldHVybiByO1xufVxuXG4vLyBVVEYtMTZMRSB0eXBpY2FsbHkgbmVlZHMgdHdvIGJ5dGVzIHBlciBjaGFyYWN0ZXIsIGJ1dCBldmVuIGlmIHdlIGhhdmUgYW4gZXZlblxuLy8gbnVtYmVyIG9mIGJ5dGVzIGF2YWlsYWJsZSwgd2UgbmVlZCB0byBjaGVjayBpZiB3ZSBlbmQgb24gYSBsZWFkaW5nL2hpZ2hcbi8vIHN1cnJvZ2F0ZS4gSW4gdGhhdCBjYXNlLCB3ZSBuZWVkIHRvIHdhaXQgZm9yIHRoZSBuZXh0IHR3byBieXRlcyBpbiBvcmRlciB0b1xuLy8gZGVjb2RlIHRoZSBsYXN0IGNoYXJhY3RlciBwcm9wZXJseS5cbmZ1bmN0aW9uIHV0ZjE2VGV4dChidWYsIGkpIHtcbiAgaWYgKChidWYubGVuZ3RoIC0gaSkgJSAyID09PSAwKSB7XG4gICAgdmFyIHIgPSBidWYudG9TdHJpbmcoJ3V0ZjE2bGUnLCBpKTtcbiAgICBpZiAocikge1xuICAgICAgdmFyIGMgPSByLmNoYXJDb2RlQXQoci5sZW5ndGggLSAxKTtcbiAgICAgIGlmIChjID49IDB4RDgwMCAmJiBjIDw9IDB4REJGRikge1xuICAgICAgICB0aGlzLmxhc3ROZWVkID0gMjtcbiAgICAgICAgdGhpcy5sYXN0VG90YWwgPSA0O1xuICAgICAgICB0aGlzLmxhc3RDaGFyWzBdID0gYnVmW2J1Zi5sZW5ndGggLSAyXTtcbiAgICAgICAgdGhpcy5sYXN0Q2hhclsxXSA9IGJ1ZltidWYubGVuZ3RoIC0gMV07XG4gICAgICAgIHJldHVybiByLnNsaWNlKDAsIC0xKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHI7XG4gIH1cbiAgdGhpcy5sYXN0TmVlZCA9IDE7XG4gIHRoaXMubGFzdFRvdGFsID0gMjtcbiAgdGhpcy5sYXN0Q2hhclswXSA9IGJ1ZltidWYubGVuZ3RoIC0gMV07XG4gIHJldHVybiBidWYudG9TdHJpbmcoJ3V0ZjE2bGUnLCBpLCBidWYubGVuZ3RoIC0gMSk7XG59XG5cbi8vIEZvciBVVEYtMTZMRSB3ZSBkbyBub3QgZXhwbGljaXRseSBhcHBlbmQgc3BlY2lhbCByZXBsYWNlbWVudCBjaGFyYWN0ZXJzIGlmIHdlXG4vLyBlbmQgb24gYSBwYXJ0aWFsIGNoYXJhY3Rlciwgd2Ugc2ltcGx5IGxldCB2OCBoYW5kbGUgdGhhdC5cbmZ1bmN0aW9uIHV0ZjE2RW5kKGJ1Zikge1xuICB2YXIgciA9IGJ1ZiAmJiBidWYubGVuZ3RoID8gdGhpcy53cml0ZShidWYpIDogJyc7XG4gIGlmICh0aGlzLmxhc3ROZWVkKSB7XG4gICAgdmFyIGVuZCA9IHRoaXMubGFzdFRvdGFsIC0gdGhpcy5sYXN0TmVlZDtcbiAgICByZXR1cm4gciArIHRoaXMubGFzdENoYXIudG9TdHJpbmcoJ3V0ZjE2bGUnLCAwLCBlbmQpO1xuICB9XG4gIHJldHVybiByO1xufVxuXG5mdW5jdGlvbiBiYXNlNjRUZXh0KGJ1ZiwgaSkge1xuICB2YXIgbiA9IChidWYubGVuZ3RoIC0gaSkgJSAzO1xuICBpZiAobiA9PT0gMCkgcmV0dXJuIGJ1Zi50b1N0cmluZygnYmFzZTY0JywgaSk7XG4gIHRoaXMubGFzdE5lZWQgPSAzIC0gbjtcbiAgdGhpcy5sYXN0VG90YWwgPSAzO1xuICBpZiAobiA9PT0gMSkge1xuICAgIHRoaXMubGFzdENoYXJbMF0gPSBidWZbYnVmLmxlbmd0aCAtIDFdO1xuICB9IGVsc2Uge1xuICAgIHRoaXMubGFzdENoYXJbMF0gPSBidWZbYnVmLmxlbmd0aCAtIDJdO1xuICAgIHRoaXMubGFzdENoYXJbMV0gPSBidWZbYnVmLmxlbmd0aCAtIDFdO1xuICB9XG4gIHJldHVybiBidWYudG9TdHJpbmcoJ2Jhc2U2NCcsIGksIGJ1Zi5sZW5ndGggLSBuKTtcbn1cblxuZnVuY3Rpb24gYmFzZTY0RW5kKGJ1Zikge1xuICB2YXIgciA9IGJ1ZiAmJiBidWYubGVuZ3RoID8gdGhpcy53cml0ZShidWYpIDogJyc7XG4gIGlmICh0aGlzLmxhc3ROZWVkKSByZXR1cm4gciArIHRoaXMubGFzdENoYXIudG9TdHJpbmcoJ2Jhc2U2NCcsIDAsIDMgLSB0aGlzLmxhc3ROZWVkKTtcbiAgcmV0dXJuIHI7XG59XG5cbi8vIFBhc3MgYnl0ZXMgb24gdGhyb3VnaCBmb3Igc2luZ2xlLWJ5dGUgZW5jb2RpbmdzIChlLmcuIGFzY2lpLCBsYXRpbjEsIGhleClcbmZ1bmN0aW9uIHNpbXBsZVdyaXRlKGJ1Zikge1xuICByZXR1cm4gYnVmLnRvU3RyaW5nKHRoaXMuZW5jb2RpbmcpO1xufVxuXG5mdW5jdGlvbiBzaW1wbGVFbmQoYnVmKSB7XG4gIHJldHVybiBidWYgJiYgYnVmLmxlbmd0aCA/IHRoaXMud3JpdGUoYnVmKSA6ICcnO1xufSIsInZhciBUSU5GX09LID0gMDtcbnZhciBUSU5GX0RBVEFfRVJST1IgPSAtMztcblxuZnVuY3Rpb24gVHJlZSgpIHtcbiAgdGhpcy50YWJsZSA9IG5ldyBVaW50MTZBcnJheSgxNik7ICAgLyogdGFibGUgb2YgY29kZSBsZW5ndGggY291bnRzICovXG4gIHRoaXMudHJhbnMgPSBuZXcgVWludDE2QXJyYXkoMjg4KTsgIC8qIGNvZGUgLT4gc3ltYm9sIHRyYW5zbGF0aW9uIHRhYmxlICovXG59XG5cbmZ1bmN0aW9uIERhdGEoc291cmNlLCBkZXN0KSB7XG4gIHRoaXMuc291cmNlID0gc291cmNlO1xuICB0aGlzLnNvdXJjZUluZGV4ID0gMDtcbiAgdGhpcy50YWcgPSAwO1xuICB0aGlzLmJpdGNvdW50ID0gMDtcbiAgXG4gIHRoaXMuZGVzdCA9IGRlc3Q7XG4gIHRoaXMuZGVzdExlbiA9IDA7XG4gIFxuICB0aGlzLmx0cmVlID0gbmV3IFRyZWUoKTsgIC8qIGR5bmFtaWMgbGVuZ3RoL3N5bWJvbCB0cmVlICovXG4gIHRoaXMuZHRyZWUgPSBuZXcgVHJlZSgpOyAgLyogZHluYW1pYyBkaXN0YW5jZSB0cmVlICovXG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqXG4gKiAtLSB1bmluaXRpYWxpemVkIGdsb2JhbCBkYXRhIChzdGF0aWMgc3RydWN0dXJlcykgLS0gKlxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbnZhciBzbHRyZWUgPSBuZXcgVHJlZSgpO1xudmFyIHNkdHJlZSA9IG5ldyBUcmVlKCk7XG5cbi8qIGV4dHJhIGJpdHMgYW5kIGJhc2UgdGFibGVzIGZvciBsZW5ndGggY29kZXMgKi9cbnZhciBsZW5ndGhfYml0cyA9IG5ldyBVaW50OEFycmF5KDMwKTtcbnZhciBsZW5ndGhfYmFzZSA9IG5ldyBVaW50MTZBcnJheSgzMCk7XG5cbi8qIGV4dHJhIGJpdHMgYW5kIGJhc2UgdGFibGVzIGZvciBkaXN0YW5jZSBjb2RlcyAqL1xudmFyIGRpc3RfYml0cyA9IG5ldyBVaW50OEFycmF5KDMwKTtcbnZhciBkaXN0X2Jhc2UgPSBuZXcgVWludDE2QXJyYXkoMzApO1xuXG4vKiBzcGVjaWFsIG9yZGVyaW5nIG9mIGNvZGUgbGVuZ3RoIGNvZGVzICovXG52YXIgY2xjaWR4ID0gbmV3IFVpbnQ4QXJyYXkoW1xuICAxNiwgMTcsIDE4LCAwLCA4LCA3LCA5LCA2LFxuICAxMCwgNSwgMTEsIDQsIDEyLCAzLCAxMywgMixcbiAgMTQsIDEsIDE1XG5dKTtcblxuLyogdXNlZCBieSB0aW5mX2RlY29kZV90cmVlcywgYXZvaWRzIGFsbG9jYXRpb25zIGV2ZXJ5IGNhbGwgKi9cbnZhciBjb2RlX3RyZWUgPSBuZXcgVHJlZSgpO1xudmFyIGxlbmd0aHMgPSBuZXcgVWludDhBcnJheSgyODggKyAzMik7XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICpcbiAqIC0tIHV0aWxpdHkgZnVuY3Rpb25zIC0tICpcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbi8qIGJ1aWxkIGV4dHJhIGJpdHMgYW5kIGJhc2UgdGFibGVzICovXG5mdW5jdGlvbiB0aW5mX2J1aWxkX2JpdHNfYmFzZShiaXRzLCBiYXNlLCBkZWx0YSwgZmlyc3QpIHtcbiAgdmFyIGksIHN1bTtcblxuICAvKiBidWlsZCBiaXRzIHRhYmxlICovXG4gIGZvciAoaSA9IDA7IGkgPCBkZWx0YTsgKytpKSBiaXRzW2ldID0gMDtcbiAgZm9yIChpID0gMDsgaSA8IDMwIC0gZGVsdGE7ICsraSkgYml0c1tpICsgZGVsdGFdID0gaSAvIGRlbHRhIHwgMDtcblxuICAvKiBidWlsZCBiYXNlIHRhYmxlICovXG4gIGZvciAoc3VtID0gZmlyc3QsIGkgPSAwOyBpIDwgMzA7ICsraSkge1xuICAgIGJhc2VbaV0gPSBzdW07XG4gICAgc3VtICs9IDEgPDwgYml0c1tpXTtcbiAgfVxufVxuXG4vKiBidWlsZCB0aGUgZml4ZWQgaHVmZm1hbiB0cmVlcyAqL1xuZnVuY3Rpb24gdGluZl9idWlsZF9maXhlZF90cmVlcyhsdCwgZHQpIHtcbiAgdmFyIGk7XG5cbiAgLyogYnVpbGQgZml4ZWQgbGVuZ3RoIHRyZWUgKi9cbiAgZm9yIChpID0gMDsgaSA8IDc7ICsraSkgbHQudGFibGVbaV0gPSAwO1xuXG4gIGx0LnRhYmxlWzddID0gMjQ7XG4gIGx0LnRhYmxlWzhdID0gMTUyO1xuICBsdC50YWJsZVs5XSA9IDExMjtcblxuICBmb3IgKGkgPSAwOyBpIDwgMjQ7ICsraSkgbHQudHJhbnNbaV0gPSAyNTYgKyBpO1xuICBmb3IgKGkgPSAwOyBpIDwgMTQ0OyArK2kpIGx0LnRyYW5zWzI0ICsgaV0gPSBpO1xuICBmb3IgKGkgPSAwOyBpIDwgODsgKytpKSBsdC50cmFuc1syNCArIDE0NCArIGldID0gMjgwICsgaTtcbiAgZm9yIChpID0gMDsgaSA8IDExMjsgKytpKSBsdC50cmFuc1syNCArIDE0NCArIDggKyBpXSA9IDE0NCArIGk7XG5cbiAgLyogYnVpbGQgZml4ZWQgZGlzdGFuY2UgdHJlZSAqL1xuICBmb3IgKGkgPSAwOyBpIDwgNTsgKytpKSBkdC50YWJsZVtpXSA9IDA7XG5cbiAgZHQudGFibGVbNV0gPSAzMjtcblxuICBmb3IgKGkgPSAwOyBpIDwgMzI7ICsraSkgZHQudHJhbnNbaV0gPSBpO1xufVxuXG4vKiBnaXZlbiBhbiBhcnJheSBvZiBjb2RlIGxlbmd0aHMsIGJ1aWxkIGEgdHJlZSAqL1xudmFyIG9mZnMgPSBuZXcgVWludDE2QXJyYXkoMTYpO1xuXG5mdW5jdGlvbiB0aW5mX2J1aWxkX3RyZWUodCwgbGVuZ3Rocywgb2ZmLCBudW0pIHtcbiAgdmFyIGksIHN1bTtcblxuICAvKiBjbGVhciBjb2RlIGxlbmd0aCBjb3VudCB0YWJsZSAqL1xuICBmb3IgKGkgPSAwOyBpIDwgMTY7ICsraSkgdC50YWJsZVtpXSA9IDA7XG5cbiAgLyogc2NhbiBzeW1ib2wgbGVuZ3RocywgYW5kIHN1bSBjb2RlIGxlbmd0aCBjb3VudHMgKi9cbiAgZm9yIChpID0gMDsgaSA8IG51bTsgKytpKSB0LnRhYmxlW2xlbmd0aHNbb2ZmICsgaV1dKys7XG5cbiAgdC50YWJsZVswXSA9IDA7XG5cbiAgLyogY29tcHV0ZSBvZmZzZXQgdGFibGUgZm9yIGRpc3RyaWJ1dGlvbiBzb3J0ICovXG4gIGZvciAoc3VtID0gMCwgaSA9IDA7IGkgPCAxNjsgKytpKSB7XG4gICAgb2Zmc1tpXSA9IHN1bTtcbiAgICBzdW0gKz0gdC50YWJsZVtpXTtcbiAgfVxuXG4gIC8qIGNyZWF0ZSBjb2RlLT5zeW1ib2wgdHJhbnNsYXRpb24gdGFibGUgKHN5bWJvbHMgc29ydGVkIGJ5IGNvZGUpICovXG4gIGZvciAoaSA9IDA7IGkgPCBudW07ICsraSkge1xuICAgIGlmIChsZW5ndGhzW29mZiArIGldKSB0LnRyYW5zW29mZnNbbGVuZ3Roc1tvZmYgKyBpXV0rK10gPSBpO1xuICB9XG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKlxuICogLS0gZGVjb2RlIGZ1bmN0aW9ucyAtLSAqXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbi8qIGdldCBvbmUgYml0IGZyb20gc291cmNlIHN0cmVhbSAqL1xuZnVuY3Rpb24gdGluZl9nZXRiaXQoZCkge1xuICAvKiBjaGVjayBpZiB0YWcgaXMgZW1wdHkgKi9cbiAgaWYgKCFkLmJpdGNvdW50LS0pIHtcbiAgICAvKiBsb2FkIG5leHQgdGFnICovXG4gICAgZC50YWcgPSBkLnNvdXJjZVtkLnNvdXJjZUluZGV4KytdO1xuICAgIGQuYml0Y291bnQgPSA3O1xuICB9XG5cbiAgLyogc2hpZnQgYml0IG91dCBvZiB0YWcgKi9cbiAgdmFyIGJpdCA9IGQudGFnICYgMTtcbiAgZC50YWcgPj4+PSAxO1xuXG4gIHJldHVybiBiaXQ7XG59XG5cbi8qIHJlYWQgYSBudW0gYml0IHZhbHVlIGZyb20gYSBzdHJlYW0gYW5kIGFkZCBiYXNlICovXG5mdW5jdGlvbiB0aW5mX3JlYWRfYml0cyhkLCBudW0sIGJhc2UpIHtcbiAgaWYgKCFudW0pXG4gICAgcmV0dXJuIGJhc2U7XG5cbiAgd2hpbGUgKGQuYml0Y291bnQgPCAyNCkge1xuICAgIGQudGFnIHw9IGQuc291cmNlW2Quc291cmNlSW5kZXgrK10gPDwgZC5iaXRjb3VudDtcbiAgICBkLmJpdGNvdW50ICs9IDg7XG4gIH1cblxuICB2YXIgdmFsID0gZC50YWcgJiAoMHhmZmZmID4+PiAoMTYgLSBudW0pKTtcbiAgZC50YWcgPj4+PSBudW07XG4gIGQuYml0Y291bnQgLT0gbnVtO1xuICByZXR1cm4gdmFsICsgYmFzZTtcbn1cblxuLyogZ2l2ZW4gYSBkYXRhIHN0cmVhbSBhbmQgYSB0cmVlLCBkZWNvZGUgYSBzeW1ib2wgKi9cbmZ1bmN0aW9uIHRpbmZfZGVjb2RlX3N5bWJvbChkLCB0KSB7XG4gIHdoaWxlIChkLmJpdGNvdW50IDwgMjQpIHtcbiAgICBkLnRhZyB8PSBkLnNvdXJjZVtkLnNvdXJjZUluZGV4KytdIDw8IGQuYml0Y291bnQ7XG4gICAgZC5iaXRjb3VudCArPSA4O1xuICB9XG4gIFxuICB2YXIgc3VtID0gMCwgY3VyID0gMCwgbGVuID0gMDtcbiAgdmFyIHRhZyA9IGQudGFnO1xuXG4gIC8qIGdldCBtb3JlIGJpdHMgd2hpbGUgY29kZSB2YWx1ZSBpcyBhYm92ZSBzdW0gKi9cbiAgZG8ge1xuICAgIGN1ciA9IDIgKiBjdXIgKyAodGFnICYgMSk7XG4gICAgdGFnID4+Pj0gMTtcbiAgICArK2xlbjtcblxuICAgIHN1bSArPSB0LnRhYmxlW2xlbl07XG4gICAgY3VyIC09IHQudGFibGVbbGVuXTtcbiAgfSB3aGlsZSAoY3VyID49IDApO1xuICBcbiAgZC50YWcgPSB0YWc7XG4gIGQuYml0Y291bnQgLT0gbGVuO1xuXG4gIHJldHVybiB0LnRyYW5zW3N1bSArIGN1cl07XG59XG5cbi8qIGdpdmVuIGEgZGF0YSBzdHJlYW0sIGRlY29kZSBkeW5hbWljIHRyZWVzIGZyb20gaXQgKi9cbmZ1bmN0aW9uIHRpbmZfZGVjb2RlX3RyZWVzKGQsIGx0LCBkdCkge1xuICB2YXIgaGxpdCwgaGRpc3QsIGhjbGVuO1xuICB2YXIgaSwgbnVtLCBsZW5ndGg7XG5cbiAgLyogZ2V0IDUgYml0cyBITElUICgyNTctMjg2KSAqL1xuICBobGl0ID0gdGluZl9yZWFkX2JpdHMoZCwgNSwgMjU3KTtcblxuICAvKiBnZXQgNSBiaXRzIEhESVNUICgxLTMyKSAqL1xuICBoZGlzdCA9IHRpbmZfcmVhZF9iaXRzKGQsIDUsIDEpO1xuXG4gIC8qIGdldCA0IGJpdHMgSENMRU4gKDQtMTkpICovXG4gIGhjbGVuID0gdGluZl9yZWFkX2JpdHMoZCwgNCwgNCk7XG5cbiAgZm9yIChpID0gMDsgaSA8IDE5OyArK2kpIGxlbmd0aHNbaV0gPSAwO1xuXG4gIC8qIHJlYWQgY29kZSBsZW5ndGhzIGZvciBjb2RlIGxlbmd0aCBhbHBoYWJldCAqL1xuICBmb3IgKGkgPSAwOyBpIDwgaGNsZW47ICsraSkge1xuICAgIC8qIGdldCAzIGJpdHMgY29kZSBsZW5ndGggKDAtNykgKi9cbiAgICB2YXIgY2xlbiA9IHRpbmZfcmVhZF9iaXRzKGQsIDMsIDApO1xuICAgIGxlbmd0aHNbY2xjaWR4W2ldXSA9IGNsZW47XG4gIH1cblxuICAvKiBidWlsZCBjb2RlIGxlbmd0aCB0cmVlICovXG4gIHRpbmZfYnVpbGRfdHJlZShjb2RlX3RyZWUsIGxlbmd0aHMsIDAsIDE5KTtcblxuICAvKiBkZWNvZGUgY29kZSBsZW5ndGhzIGZvciB0aGUgZHluYW1pYyB0cmVlcyAqL1xuICBmb3IgKG51bSA9IDA7IG51bSA8IGhsaXQgKyBoZGlzdDspIHtcbiAgICB2YXIgc3ltID0gdGluZl9kZWNvZGVfc3ltYm9sKGQsIGNvZGVfdHJlZSk7XG5cbiAgICBzd2l0Y2ggKHN5bSkge1xuICAgICAgY2FzZSAxNjpcbiAgICAgICAgLyogY29weSBwcmV2aW91cyBjb2RlIGxlbmd0aCAzLTYgdGltZXMgKHJlYWQgMiBiaXRzKSAqL1xuICAgICAgICB2YXIgcHJldiA9IGxlbmd0aHNbbnVtIC0gMV07XG4gICAgICAgIGZvciAobGVuZ3RoID0gdGluZl9yZWFkX2JpdHMoZCwgMiwgMyk7IGxlbmd0aDsgLS1sZW5ndGgpIHtcbiAgICAgICAgICBsZW5ndGhzW251bSsrXSA9IHByZXY7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDE3OlxuICAgICAgICAvKiByZXBlYXQgY29kZSBsZW5ndGggMCBmb3IgMy0xMCB0aW1lcyAocmVhZCAzIGJpdHMpICovXG4gICAgICAgIGZvciAobGVuZ3RoID0gdGluZl9yZWFkX2JpdHMoZCwgMywgMyk7IGxlbmd0aDsgLS1sZW5ndGgpIHtcbiAgICAgICAgICBsZW5ndGhzW251bSsrXSA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDE4OlxuICAgICAgICAvKiByZXBlYXQgY29kZSBsZW5ndGggMCBmb3IgMTEtMTM4IHRpbWVzIChyZWFkIDcgYml0cykgKi9cbiAgICAgICAgZm9yIChsZW5ndGggPSB0aW5mX3JlYWRfYml0cyhkLCA3LCAxMSk7IGxlbmd0aDsgLS1sZW5ndGgpIHtcbiAgICAgICAgICBsZW5ndGhzW251bSsrXSA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICAvKiB2YWx1ZXMgMC0xNSByZXByZXNlbnQgdGhlIGFjdHVhbCBjb2RlIGxlbmd0aHMgKi9cbiAgICAgICAgbGVuZ3Roc1tudW0rK10gPSBzeW07XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIC8qIGJ1aWxkIGR5bmFtaWMgdHJlZXMgKi9cbiAgdGluZl9idWlsZF90cmVlKGx0LCBsZW5ndGhzLCAwLCBobGl0KTtcbiAgdGluZl9idWlsZF90cmVlKGR0LCBsZW5ndGhzLCBobGl0LCBoZGlzdCk7XG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICpcbiAqIC0tIGJsb2NrIGluZmxhdGUgZnVuY3Rpb25zIC0tICpcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbi8qIGdpdmVuIGEgc3RyZWFtIGFuZCB0d28gdHJlZXMsIGluZmxhdGUgYSBibG9jayBvZiBkYXRhICovXG5mdW5jdGlvbiB0aW5mX2luZmxhdGVfYmxvY2tfZGF0YShkLCBsdCwgZHQpIHtcbiAgd2hpbGUgKDEpIHtcbiAgICB2YXIgc3ltID0gdGluZl9kZWNvZGVfc3ltYm9sKGQsIGx0KTtcblxuICAgIC8qIGNoZWNrIGZvciBlbmQgb2YgYmxvY2sgKi9cbiAgICBpZiAoc3ltID09PSAyNTYpIHtcbiAgICAgIHJldHVybiBUSU5GX09LO1xuICAgIH1cblxuICAgIGlmIChzeW0gPCAyNTYpIHtcbiAgICAgIGQuZGVzdFtkLmRlc3RMZW4rK10gPSBzeW07XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBsZW5ndGgsIGRpc3QsIG9mZnM7XG4gICAgICB2YXIgaTtcblxuICAgICAgc3ltIC09IDI1NztcblxuICAgICAgLyogcG9zc2libHkgZ2V0IG1vcmUgYml0cyBmcm9tIGxlbmd0aCBjb2RlICovXG4gICAgICBsZW5ndGggPSB0aW5mX3JlYWRfYml0cyhkLCBsZW5ndGhfYml0c1tzeW1dLCBsZW5ndGhfYmFzZVtzeW1dKTtcblxuICAgICAgZGlzdCA9IHRpbmZfZGVjb2RlX3N5bWJvbChkLCBkdCk7XG5cbiAgICAgIC8qIHBvc3NpYmx5IGdldCBtb3JlIGJpdHMgZnJvbSBkaXN0YW5jZSBjb2RlICovXG4gICAgICBvZmZzID0gZC5kZXN0TGVuIC0gdGluZl9yZWFkX2JpdHMoZCwgZGlzdF9iaXRzW2Rpc3RdLCBkaXN0X2Jhc2VbZGlzdF0pO1xuXG4gICAgICAvKiBjb3B5IG1hdGNoICovXG4gICAgICBmb3IgKGkgPSBvZmZzOyBpIDwgb2ZmcyArIGxlbmd0aDsgKytpKSB7XG4gICAgICAgIGQuZGVzdFtkLmRlc3RMZW4rK10gPSBkLmRlc3RbaV07XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8qIGluZmxhdGUgYW4gdW5jb21wcmVzc2VkIGJsb2NrIG9mIGRhdGEgKi9cbmZ1bmN0aW9uIHRpbmZfaW5mbGF0ZV91bmNvbXByZXNzZWRfYmxvY2soZCkge1xuICB2YXIgbGVuZ3RoLCBpbnZsZW5ndGg7XG4gIHZhciBpO1xuICBcbiAgLyogdW5yZWFkIGZyb20gYml0YnVmZmVyICovXG4gIHdoaWxlIChkLmJpdGNvdW50ID4gOCkge1xuICAgIGQuc291cmNlSW5kZXgtLTtcbiAgICBkLmJpdGNvdW50IC09IDg7XG4gIH1cblxuICAvKiBnZXQgbGVuZ3RoICovXG4gIGxlbmd0aCA9IGQuc291cmNlW2Quc291cmNlSW5kZXggKyAxXTtcbiAgbGVuZ3RoID0gMjU2ICogbGVuZ3RoICsgZC5zb3VyY2VbZC5zb3VyY2VJbmRleF07XG5cbiAgLyogZ2V0IG9uZSdzIGNvbXBsZW1lbnQgb2YgbGVuZ3RoICovXG4gIGludmxlbmd0aCA9IGQuc291cmNlW2Quc291cmNlSW5kZXggKyAzXTtcbiAgaW52bGVuZ3RoID0gMjU2ICogaW52bGVuZ3RoICsgZC5zb3VyY2VbZC5zb3VyY2VJbmRleCArIDJdO1xuXG4gIC8qIGNoZWNrIGxlbmd0aCAqL1xuICBpZiAobGVuZ3RoICE9PSAofmludmxlbmd0aCAmIDB4MDAwMGZmZmYpKVxuICAgIHJldHVybiBUSU5GX0RBVEFfRVJST1I7XG5cbiAgZC5zb3VyY2VJbmRleCArPSA0O1xuXG4gIC8qIGNvcHkgYmxvY2sgKi9cbiAgZm9yIChpID0gbGVuZ3RoOyBpOyAtLWkpXG4gICAgZC5kZXN0W2QuZGVzdExlbisrXSA9IGQuc291cmNlW2Quc291cmNlSW5kZXgrK107XG5cbiAgLyogbWFrZSBzdXJlIHdlIHN0YXJ0IG5leHQgYmxvY2sgb24gYSBieXRlIGJvdW5kYXJ5ICovXG4gIGQuYml0Y291bnQgPSAwO1xuXG4gIHJldHVybiBUSU5GX09LO1xufVxuXG4vKiBpbmZsYXRlIHN0cmVhbSBmcm9tIHNvdXJjZSB0byBkZXN0ICovXG5mdW5jdGlvbiB0aW5mX3VuY29tcHJlc3Moc291cmNlLCBkZXN0KSB7XG4gIHZhciBkID0gbmV3IERhdGEoc291cmNlLCBkZXN0KTtcbiAgdmFyIGJmaW5hbCwgYnR5cGUsIHJlcztcblxuICBkbyB7XG4gICAgLyogcmVhZCBmaW5hbCBibG9jayBmbGFnICovXG4gICAgYmZpbmFsID0gdGluZl9nZXRiaXQoZCk7XG5cbiAgICAvKiByZWFkIGJsb2NrIHR5cGUgKDIgYml0cykgKi9cbiAgICBidHlwZSA9IHRpbmZfcmVhZF9iaXRzKGQsIDIsIDApO1xuXG4gICAgLyogZGVjb21wcmVzcyBibG9jayAqL1xuICAgIHN3aXRjaCAoYnR5cGUpIHtcbiAgICAgIGNhc2UgMDpcbiAgICAgICAgLyogZGVjb21wcmVzcyB1bmNvbXByZXNzZWQgYmxvY2sgKi9cbiAgICAgICAgcmVzID0gdGluZl9pbmZsYXRlX3VuY29tcHJlc3NlZF9ibG9jayhkKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDE6XG4gICAgICAgIC8qIGRlY29tcHJlc3MgYmxvY2sgd2l0aCBmaXhlZCBodWZmbWFuIHRyZWVzICovXG4gICAgICAgIHJlcyA9IHRpbmZfaW5mbGF0ZV9ibG9ja19kYXRhKGQsIHNsdHJlZSwgc2R0cmVlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI6XG4gICAgICAgIC8qIGRlY29tcHJlc3MgYmxvY2sgd2l0aCBkeW5hbWljIGh1ZmZtYW4gdHJlZXMgKi9cbiAgICAgICAgdGluZl9kZWNvZGVfdHJlZXMoZCwgZC5sdHJlZSwgZC5kdHJlZSk7XG4gICAgICAgIHJlcyA9IHRpbmZfaW5mbGF0ZV9ibG9ja19kYXRhKGQsIGQubHRyZWUsIGQuZHRyZWUpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJlcyA9IFRJTkZfREFUQV9FUlJPUjtcbiAgICB9XG5cbiAgICBpZiAocmVzICE9PSBUSU5GX09LKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdEYXRhIGVycm9yJyk7XG5cbiAgfSB3aGlsZSAoIWJmaW5hbCk7XG5cbiAgaWYgKGQuZGVzdExlbiA8IGQuZGVzdC5sZW5ndGgpIHtcbiAgICBpZiAodHlwZW9mIGQuZGVzdC5zbGljZSA9PT0gJ2Z1bmN0aW9uJylcbiAgICAgIHJldHVybiBkLmRlc3Quc2xpY2UoMCwgZC5kZXN0TGVuKTtcbiAgICBlbHNlXG4gICAgICByZXR1cm4gZC5kZXN0LnN1YmFycmF5KDAsIGQuZGVzdExlbik7XG4gIH1cbiAgXG4gIHJldHVybiBkLmRlc3Q7XG59XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tICpcbiAqIC0tIGluaXRpYWxpemF0aW9uIC0tICpcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbi8qIGJ1aWxkIGZpeGVkIGh1ZmZtYW4gdHJlZXMgKi9cbnRpbmZfYnVpbGRfZml4ZWRfdHJlZXMoc2x0cmVlLCBzZHRyZWUpO1xuXG4vKiBidWlsZCBleHRyYSBiaXRzIGFuZCBiYXNlIHRhYmxlcyAqL1xudGluZl9idWlsZF9iaXRzX2Jhc2UobGVuZ3RoX2JpdHMsIGxlbmd0aF9iYXNlLCA0LCAzKTtcbnRpbmZfYnVpbGRfYml0c19iYXNlKGRpc3RfYml0cywgZGlzdF9iYXNlLCAyLCAxKTtcblxuLyogZml4IGEgc3BlY2lhbCBjYXNlICovXG5sZW5ndGhfYml0c1syOF0gPSAwO1xubGVuZ3RoX2Jhc2VbMjhdID0gMjU4O1xuXG5tb2R1bGUuZXhwb3J0cyA9IHRpbmZfdW5jb21wcmVzcztcbiIsIi8qIVxuICogdHlwZS1kZXRlY3RcbiAqIENvcHlyaWdodChjKSAyMDEzIGpha2UgbHVlciA8amFrZUBhbG9naWNhbHBhcmFkb3guY29tPlxuICogTUlUIExpY2Vuc2VkXG4gKi9cblxuLyohXG4gKiBQcmltYXJ5IEV4cG9ydHNcbiAqL1xuXG52YXIgZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzID0gZ2V0VHlwZTtcblxuLyoqXG4gKiAjIyMgdHlwZU9mIChvYmopXG4gKlxuICogVXNlIHNldmVyYWwgZGlmZmVyZW50IHRlY2huaXF1ZXMgdG8gZGV0ZXJtaW5lXG4gKiB0aGUgdHlwZSBvZiBvYmplY3QgYmVpbmcgdGVzdGVkLlxuICpcbiAqXG4gKiBAcGFyYW0ge01peGVkfSBvYmplY3RcbiAqIEByZXR1cm4ge1N0cmluZ30gb2JqZWN0IHR5cGVcbiAqIEBhcGkgcHVibGljXG4gKi9cbnZhciBvYmplY3RUeXBlUmVnZXhwID0gL15cXFtvYmplY3QgKC4qKVxcXSQvO1xuXG5mdW5jdGlvbiBnZXRUeXBlKG9iaikge1xuICB2YXIgdHlwZSA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvYmopLm1hdGNoKG9iamVjdFR5cGVSZWdleHApWzFdLnRvTG93ZXJDYXNlKCk7XG4gIC8vIExldCBcIm5ldyBTdHJpbmcoJycpXCIgcmV0dXJuICdvYmplY3QnXG4gIGlmICh0eXBlb2YgUHJvbWlzZSA9PT0gJ2Z1bmN0aW9uJyAmJiBvYmogaW5zdGFuY2VvZiBQcm9taXNlKSByZXR1cm4gJ3Byb21pc2UnO1xuICAvLyBQaGFudG9tSlMgaGFzIHR5cGUgXCJET01XaW5kb3dcIiBmb3IgbnVsbFxuICBpZiAob2JqID09PSBudWxsKSByZXR1cm4gJ251bGwnO1xuICAvLyBQaGFudG9tSlMgaGFzIHR5cGUgXCJET01XaW5kb3dcIiBmb3IgdW5kZWZpbmVkXG4gIGlmIChvYmogPT09IHVuZGVmaW5lZCkgcmV0dXJuICd1bmRlZmluZWQnO1xuICByZXR1cm4gdHlwZTtcbn1cblxuZXhwb3J0cy5MaWJyYXJ5ID0gTGlicmFyeTtcblxuLyoqXG4gKiAjIyMgTGlicmFyeVxuICpcbiAqIENyZWF0ZSBhIHJlcG9zaXRvcnkgZm9yIGN1c3RvbSB0eXBlIGRldGVjdGlvbi5cbiAqXG4gKiBgYGBqc1xuICogdmFyIGxpYiA9IG5ldyB0eXBlLkxpYnJhcnk7XG4gKiBgYGBcbiAqXG4gKi9cblxuZnVuY3Rpb24gTGlicmFyeSgpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIExpYnJhcnkpKSByZXR1cm4gbmV3IExpYnJhcnkoKTtcbiAgdGhpcy50ZXN0cyA9IHt9O1xufVxuXG4vKipcbiAqICMjIyMgLm9mIChvYmopXG4gKlxuICogRXhwb3NlIHJlcGxhY2VtZW50IGB0eXBlb2ZgIGRldGVjdGlvbiB0byB0aGUgbGlicmFyeS5cbiAqXG4gKiBgYGBqc1xuICogaWYgKCdzdHJpbmcnID09PSBsaWIub2YoJ2hlbGxvIHdvcmxkJykpIHtcbiAqICAgLy8gLi4uXG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0ge01peGVkfSBvYmplY3QgdG8gdGVzdFxuICogQHJldHVybiB7U3RyaW5nfSB0eXBlXG4gKi9cblxuTGlicmFyeS5wcm90b3R5cGUub2YgPSBnZXRUeXBlO1xuXG4vKipcbiAqICMjIyMgLmRlZmluZSAodHlwZSwgdGVzdClcbiAqXG4gKiBBZGQgYSB0ZXN0IHRvIGZvciB0aGUgYC50ZXN0KClgIGFzc2VydGlvbi5cbiAqXG4gKiBDYW4gYmUgZGVmaW5lZCBhcyBhIHJlZ3VsYXIgZXhwcmVzc2lvbjpcbiAqXG4gKiBgYGBqc1xuICogbGliLmRlZmluZSgnaW50JywgL15bMC05XSskLyk7XG4gKiBgYGBcbiAqXG4gKiAuLi4gb3IgYXMgYSBmdW5jdGlvbjpcbiAqXG4gKiBgYGBqc1xuICogbGliLmRlZmluZSgnYmxuJywgZnVuY3Rpb24gKG9iaikge1xuICogICBpZiAoJ2Jvb2xlYW4nID09PSBsaWIub2Yob2JqKSkgcmV0dXJuIHRydWU7XG4gKiAgIHZhciBibG5zID0gWyAneWVzJywgJ25vJywgJ3RydWUnLCAnZmFsc2UnLCAxLCAwIF07XG4gKiAgIGlmICgnc3RyaW5nJyA9PT0gbGliLm9mKG9iaikpIG9iaiA9IG9iai50b0xvd2VyQ2FzZSgpO1xuICogICByZXR1cm4gISEgfmJsbnMuaW5kZXhPZihvYmopO1xuICogfSk7XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gdHlwZVxuICogQHBhcmFtIHtSZWdFeHB8RnVuY3Rpb259IHRlc3RcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuTGlicmFyeS5wcm90b3R5cGUuZGVmaW5lID0gZnVuY3Rpb24odHlwZSwgdGVzdCkge1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMSkgcmV0dXJuIHRoaXMudGVzdHNbdHlwZV07XG4gIHRoaXMudGVzdHNbdHlwZV0gPSB0ZXN0O1xuICByZXR1cm4gdGhpcztcbn07XG5cbi8qKlxuICogIyMjIyAudGVzdCAob2JqLCB0ZXN0KVxuICpcbiAqIEFzc2VydCB0aGF0IGFuIG9iamVjdCBpcyBvZiB0eXBlLiBXaWxsIGZpcnN0XG4gKiBjaGVjayBuYXRpdmVzLCBhbmQgaWYgdGhhdCBkb2VzIG5vdCBwYXNzIGl0IHdpbGxcbiAqIHVzZSB0aGUgdXNlciBkZWZpbmVkIGN1c3RvbSB0ZXN0cy5cbiAqXG4gKiBgYGBqc1xuICogYXNzZXJ0KGxpYi50ZXN0KCcxJywgJ2ludCcpKTtcbiAqIGFzc2VydChsaWIudGVzdCgneWVzJywgJ2JsbicpKTtcbiAqIGBgYFxuICpcbiAqIEBwYXJhbSB7TWl4ZWR9IG9iamVjdFxuICogQHBhcmFtIHtTdHJpbmd9IHR5cGVcbiAqIEByZXR1cm4ge0Jvb2xlYW59IHJlc3VsdFxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5MaWJyYXJ5LnByb3RvdHlwZS50ZXN0ID0gZnVuY3Rpb24ob2JqLCB0eXBlKSB7XG4gIGlmICh0eXBlID09PSBnZXRUeXBlKG9iaikpIHJldHVybiB0cnVlO1xuICB2YXIgdGVzdCA9IHRoaXMudGVzdHNbdHlwZV07XG5cbiAgaWYgKHRlc3QgJiYgJ3JlZ2V4cCcgPT09IGdldFR5cGUodGVzdCkpIHtcbiAgICByZXR1cm4gdGVzdC50ZXN0KG9iaik7XG4gIH0gZWxzZSBpZiAodGVzdCAmJiAnZnVuY3Rpb24nID09PSBnZXRUeXBlKHRlc3QpKSB7XG4gICAgcmV0dXJuIHRlc3Qob2JqKTtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoJ1R5cGUgdGVzdCBcIicgKyB0eXBlICsgJ1wiIG5vdCBkZWZpbmVkIG9yIGludmFsaWQuJyk7XG4gIH1cbn07XG4iLCJ2YXIgdW5kZWZpbmVkID0gKHZvaWQgMCk7IC8vIFBhcmFub2lhXG5cbi8vIEJleW9uZCB0aGlzIHZhbHVlLCBpbmRleCBnZXR0ZXJzL3NldHRlcnMgKGkuZS4gYXJyYXlbMF0sIGFycmF5WzFdKSBhcmUgc28gc2xvdyB0b1xuLy8gY3JlYXRlLCBhbmQgY29uc3VtZSBzbyBtdWNoIG1lbW9yeSwgdGhhdCB0aGUgYnJvd3NlciBhcHBlYXJzIGZyb3plbi5cbnZhciBNQVhfQVJSQVlfTEVOR1RIID0gMWU1O1xuXG4vLyBBcHByb3hpbWF0aW9ucyBvZiBpbnRlcm5hbCBFQ01BU2NyaXB0IGNvbnZlcnNpb24gZnVuY3Rpb25zXG52YXIgRUNNQVNjcmlwdCA9IChmdW5jdGlvbigpIHtcbiAgLy8gU3Rhc2ggYSBjb3B5IGluIGNhc2Ugb3RoZXIgc2NyaXB0cyBtb2RpZnkgdGhlc2VcbiAgdmFyIG9wdHMgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLFxuICAgICAgb3Bob3AgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xuXG4gIHJldHVybiB7XG4gICAgLy8gQ2xhc3MgcmV0dXJucyBpbnRlcm5hbCBbW0NsYXNzXV0gcHJvcGVydHksIHVzZWQgdG8gYXZvaWQgY3Jvc3MtZnJhbWUgaW5zdGFuY2VvZiBpc3N1ZXM6XG4gICAgQ2xhc3M6IGZ1bmN0aW9uKHYpIHsgcmV0dXJuIG9wdHMuY2FsbCh2KS5yZXBsYWNlKC9eXFxbb2JqZWN0ICp8XFxdJC9nLCAnJyk7IH0sXG4gICAgSGFzUHJvcGVydHk6IGZ1bmN0aW9uKG8sIHApIHsgcmV0dXJuIHAgaW4gbzsgfSxcbiAgICBIYXNPd25Qcm9wZXJ0eTogZnVuY3Rpb24obywgcCkgeyByZXR1cm4gb3Bob3AuY2FsbChvLCBwKTsgfSxcbiAgICBJc0NhbGxhYmxlOiBmdW5jdGlvbihvKSB7IHJldHVybiB0eXBlb2YgbyA9PT0gJ2Z1bmN0aW9uJzsgfSxcbiAgICBUb0ludDMyOiBmdW5jdGlvbih2KSB7IHJldHVybiB2ID4+IDA7IH0sXG4gICAgVG9VaW50MzI6IGZ1bmN0aW9uKHYpIHsgcmV0dXJuIHYgPj4+IDA7IH1cbiAgfTtcbn0oKSk7XG5cbi8vIFNuYXBzaG90IGludHJpbnNpY3NcbnZhciBMTjIgPSBNYXRoLkxOMixcbiAgICBhYnMgPSBNYXRoLmFicyxcbiAgICBmbG9vciA9IE1hdGguZmxvb3IsXG4gICAgbG9nID0gTWF0aC5sb2csXG4gICAgbWluID0gTWF0aC5taW4sXG4gICAgcG93ID0gTWF0aC5wb3csXG4gICAgcm91bmQgPSBNYXRoLnJvdW5kO1xuXG4vLyBFUzU6IGxvY2sgZG93biBvYmplY3QgcHJvcGVydGllc1xuZnVuY3Rpb24gY29uZmlndXJlUHJvcGVydGllcyhvYmopIHtcbiAgaWYgKGdldE93blByb3BOYW1lcyAmJiBkZWZpbmVQcm9wKSB7XG4gICAgdmFyIHByb3BzID0gZ2V0T3duUHJvcE5hbWVzKG9iaiksIGk7XG4gICAgZm9yIChpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICBkZWZpbmVQcm9wKG9iaiwgcHJvcHNbaV0sIHtcbiAgICAgICAgdmFsdWU6IG9ialtwcm9wc1tpXV0sXG4gICAgICAgIHdyaXRhYmxlOiBmYWxzZSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2VcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuXG4vLyBlbXVsYXRlIEVTNSBnZXR0ZXIvc2V0dGVyIEFQSSB1c2luZyBsZWdhY3kgQVBJc1xuLy8gaHR0cDovL2Jsb2dzLm1zZG4uY29tL2IvaWUvYXJjaGl2ZS8yMDEwLzA5LzA3L3RyYW5zaXRpb25pbmctZXhpc3RpbmctY29kZS10by10aGUtZXM1LWdldHRlci1zZXR0ZXItYXBpcy5hc3B4XG4vLyAoc2Vjb25kIGNsYXVzZSB0ZXN0cyBmb3IgT2JqZWN0LmRlZmluZVByb3BlcnR5KCkgaW4gSUU8OSB0aGF0IG9ubHkgc3VwcG9ydHMgZXh0ZW5kaW5nIERPTSBwcm90b3R5cGVzLCBidXRcbi8vIG5vdGUgdGhhdCBJRTw5IGRvZXMgbm90IHN1cHBvcnQgX19kZWZpbmVHZXR0ZXJfXyBvciBfX2RlZmluZVNldHRlcl9fIHNvIGl0IGp1c3QgcmVuZGVycyB0aGUgbWV0aG9kIGhhcm1sZXNzKVxudmFyIGRlZmluZVByb3BcbmlmIChPYmplY3QuZGVmaW5lUHJvcGVydHkgJiYgKGZ1bmN0aW9uKCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCAneCcsIHt9KTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9KSgpKSB7XG4gIGRlZmluZVByb3AgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG59IGVsc2Uge1xuICBkZWZpbmVQcm9wID0gZnVuY3Rpb24obywgcCwgZGVzYykge1xuICAgIGlmICghbyA9PT0gT2JqZWN0KG8pKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiT2JqZWN0LmRlZmluZVByb3BlcnR5IGNhbGxlZCBvbiBub24tb2JqZWN0XCIpO1xuICAgIGlmIChFQ01BU2NyaXB0Lkhhc1Byb3BlcnR5KGRlc2MsICdnZXQnKSAmJiBPYmplY3QucHJvdG90eXBlLl9fZGVmaW5lR2V0dGVyX18pIHsgT2JqZWN0LnByb3RvdHlwZS5fX2RlZmluZUdldHRlcl9fLmNhbGwobywgcCwgZGVzYy5nZXQpOyB9XG4gICAgaWYgKEVDTUFTY3JpcHQuSGFzUHJvcGVydHkoZGVzYywgJ3NldCcpICYmIE9iamVjdC5wcm90b3R5cGUuX19kZWZpbmVTZXR0ZXJfXykgeyBPYmplY3QucHJvdG90eXBlLl9fZGVmaW5lU2V0dGVyX18uY2FsbChvLCBwLCBkZXNjLnNldCk7IH1cbiAgICBpZiAoRUNNQVNjcmlwdC5IYXNQcm9wZXJ0eShkZXNjLCAndmFsdWUnKSkgeyBvW3BdID0gZGVzYy52YWx1ZTsgfVxuICAgIHJldHVybiBvO1xuICB9O1xufVxuXG52YXIgZ2V0T3duUHJvcE5hbWVzID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMgfHwgZnVuY3Rpb24gKG8pIHtcbiAgaWYgKG8gIT09IE9iamVjdChvKSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIk9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzIGNhbGxlZCBvbiBub24tb2JqZWN0XCIpO1xuICB2YXIgcHJvcHMgPSBbXSwgcDtcbiAgZm9yIChwIGluIG8pIHtcbiAgICBpZiAoRUNNQVNjcmlwdC5IYXNPd25Qcm9wZXJ0eShvLCBwKSkge1xuICAgICAgcHJvcHMucHVzaChwKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHByb3BzO1xufTtcblxuLy8gRVM1OiBNYWtlIG9ialtpbmRleF0gYW4gYWxpYXMgZm9yIG9iai5fZ2V0dGVyKGluZGV4KS9vYmouX3NldHRlcihpbmRleCwgdmFsdWUpXG4vLyBmb3IgaW5kZXggaW4gMCAuLi4gb2JqLmxlbmd0aFxuZnVuY3Rpb24gbWFrZUFycmF5QWNjZXNzb3JzKG9iaikge1xuICBpZiAoIWRlZmluZVByb3ApIHsgcmV0dXJuOyB9XG5cbiAgaWYgKG9iai5sZW5ndGggPiBNQVhfQVJSQVlfTEVOR1RIKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcihcIkFycmF5IHRvbyBsYXJnZSBmb3IgcG9seWZpbGxcIik7XG5cbiAgZnVuY3Rpb24gbWFrZUFycmF5QWNjZXNzb3IoaW5kZXgpIHtcbiAgICBkZWZpbmVQcm9wKG9iaiwgaW5kZXgsIHtcbiAgICAgICdnZXQnOiBmdW5jdGlvbigpIHsgcmV0dXJuIG9iai5fZ2V0dGVyKGluZGV4KTsgfSxcbiAgICAgICdzZXQnOiBmdW5jdGlvbih2KSB7IG9iai5fc2V0dGVyKGluZGV4LCB2KTsgfSxcbiAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICBjb25maWd1cmFibGU6IGZhbHNlXG4gICAgfSk7XG4gIH1cblxuICB2YXIgaTtcbiAgZm9yIChpID0gMDsgaSA8IG9iai5sZW5ndGg7IGkgKz0gMSkge1xuICAgIG1ha2VBcnJheUFjY2Vzc29yKGkpO1xuICB9XG59XG5cbi8vIEludGVybmFsIGNvbnZlcnNpb24gZnVuY3Rpb25zOlxuLy8gICAgcGFjazxUeXBlPigpICAgLSB0YWtlIGEgbnVtYmVyIChpbnRlcnByZXRlZCBhcyBUeXBlKSwgb3V0cHV0IGEgYnl0ZSBhcnJheVxuLy8gICAgdW5wYWNrPFR5cGU+KCkgLSB0YWtlIGEgYnl0ZSBhcnJheSwgb3V0cHV0IGEgVHlwZS1saWtlIG51bWJlclxuXG5mdW5jdGlvbiBhc19zaWduZWQodmFsdWUsIGJpdHMpIHsgdmFyIHMgPSAzMiAtIGJpdHM7IHJldHVybiAodmFsdWUgPDwgcykgPj4gczsgfVxuZnVuY3Rpb24gYXNfdW5zaWduZWQodmFsdWUsIGJpdHMpIHsgdmFyIHMgPSAzMiAtIGJpdHM7IHJldHVybiAodmFsdWUgPDwgcykgPj4+IHM7IH1cblxuZnVuY3Rpb24gcGFja0k4KG4pIHsgcmV0dXJuIFtuICYgMHhmZl07IH1cbmZ1bmN0aW9uIHVucGFja0k4KGJ5dGVzKSB7IHJldHVybiBhc19zaWduZWQoYnl0ZXNbMF0sIDgpOyB9XG5cbmZ1bmN0aW9uIHBhY2tVOChuKSB7IHJldHVybiBbbiAmIDB4ZmZdOyB9XG5mdW5jdGlvbiB1bnBhY2tVOChieXRlcykgeyByZXR1cm4gYXNfdW5zaWduZWQoYnl0ZXNbMF0sIDgpOyB9XG5cbmZ1bmN0aW9uIHBhY2tVOENsYW1wZWQobikgeyBuID0gcm91bmQoTnVtYmVyKG4pKTsgcmV0dXJuIFtuIDwgMCA/IDAgOiBuID4gMHhmZiA/IDB4ZmYgOiBuICYgMHhmZl07IH1cblxuZnVuY3Rpb24gcGFja0kxNihuKSB7IHJldHVybiBbKG4gPj4gOCkgJiAweGZmLCBuICYgMHhmZl07IH1cbmZ1bmN0aW9uIHVucGFja0kxNihieXRlcykgeyByZXR1cm4gYXNfc2lnbmVkKGJ5dGVzWzBdIDw8IDggfCBieXRlc1sxXSwgMTYpOyB9XG5cbmZ1bmN0aW9uIHBhY2tVMTYobikgeyByZXR1cm4gWyhuID4+IDgpICYgMHhmZiwgbiAmIDB4ZmZdOyB9XG5mdW5jdGlvbiB1bnBhY2tVMTYoYnl0ZXMpIHsgcmV0dXJuIGFzX3Vuc2lnbmVkKGJ5dGVzWzBdIDw8IDggfCBieXRlc1sxXSwgMTYpOyB9XG5cbmZ1bmN0aW9uIHBhY2tJMzIobikgeyByZXR1cm4gWyhuID4+IDI0KSAmIDB4ZmYsIChuID4+IDE2KSAmIDB4ZmYsIChuID4+IDgpICYgMHhmZiwgbiAmIDB4ZmZdOyB9XG5mdW5jdGlvbiB1bnBhY2tJMzIoYnl0ZXMpIHsgcmV0dXJuIGFzX3NpZ25lZChieXRlc1swXSA8PCAyNCB8IGJ5dGVzWzFdIDw8IDE2IHwgYnl0ZXNbMl0gPDwgOCB8IGJ5dGVzWzNdLCAzMik7IH1cblxuZnVuY3Rpb24gcGFja1UzMihuKSB7IHJldHVybiBbKG4gPj4gMjQpICYgMHhmZiwgKG4gPj4gMTYpICYgMHhmZiwgKG4gPj4gOCkgJiAweGZmLCBuICYgMHhmZl07IH1cbmZ1bmN0aW9uIHVucGFja1UzMihieXRlcykgeyByZXR1cm4gYXNfdW5zaWduZWQoYnl0ZXNbMF0gPDwgMjQgfCBieXRlc1sxXSA8PCAxNiB8IGJ5dGVzWzJdIDw8IDggfCBieXRlc1szXSwgMzIpOyB9XG5cbmZ1bmN0aW9uIHBhY2tJRUVFNzU0KHYsIGViaXRzLCBmYml0cykge1xuXG4gIHZhciBiaWFzID0gKDEgPDwgKGViaXRzIC0gMSkpIC0gMSxcbiAgICAgIHMsIGUsIGYsIGxuLFxuICAgICAgaSwgYml0cywgc3RyLCBieXRlcztcblxuICBmdW5jdGlvbiByb3VuZFRvRXZlbihuKSB7XG4gICAgdmFyIHcgPSBmbG9vcihuKSwgZiA9IG4gLSB3O1xuICAgIGlmIChmIDwgMC41KVxuICAgICAgcmV0dXJuIHc7XG4gICAgaWYgKGYgPiAwLjUpXG4gICAgICByZXR1cm4gdyArIDE7XG4gICAgcmV0dXJuIHcgJSAyID8gdyArIDEgOiB3O1xuICB9XG5cbiAgLy8gQ29tcHV0ZSBzaWduLCBleHBvbmVudCwgZnJhY3Rpb25cbiAgaWYgKHYgIT09IHYpIHtcbiAgICAvLyBOYU5cbiAgICAvLyBodHRwOi8vZGV2LnczLm9yZy8yMDA2L3dlYmFwaS9XZWJJREwvI2VzLXR5cGUtbWFwcGluZ1xuICAgIGUgPSAoMSA8PCBlYml0cykgLSAxOyBmID0gcG93KDIsIGZiaXRzIC0gMSk7IHMgPSAwO1xuICB9IGVsc2UgaWYgKHYgPT09IEluZmluaXR5IHx8IHYgPT09IC1JbmZpbml0eSkge1xuICAgIGUgPSAoMSA8PCBlYml0cykgLSAxOyBmID0gMDsgcyA9ICh2IDwgMCkgPyAxIDogMDtcbiAgfSBlbHNlIGlmICh2ID09PSAwKSB7XG4gICAgZSA9IDA7IGYgPSAwOyBzID0gKDEgLyB2ID09PSAtSW5maW5pdHkpID8gMSA6IDA7XG4gIH0gZWxzZSB7XG4gICAgcyA9IHYgPCAwO1xuICAgIHYgPSBhYnModik7XG5cbiAgICBpZiAodiA+PSBwb3coMiwgMSAtIGJpYXMpKSB7XG4gICAgICBlID0gbWluKGZsb29yKGxvZyh2KSAvIExOMiksIDEwMjMpO1xuICAgICAgZiA9IHJvdW5kVG9FdmVuKHYgLyBwb3coMiwgZSkgKiBwb3coMiwgZmJpdHMpKTtcbiAgICAgIGlmIChmIC8gcG93KDIsIGZiaXRzKSA+PSAyKSB7XG4gICAgICAgIGUgPSBlICsgMTtcbiAgICAgICAgZiA9IDE7XG4gICAgICB9XG4gICAgICBpZiAoZSA+IGJpYXMpIHtcbiAgICAgICAgLy8gT3ZlcmZsb3dcbiAgICAgICAgZSA9ICgxIDw8IGViaXRzKSAtIDE7XG4gICAgICAgIGYgPSAwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gTm9ybWFsaXplZFxuICAgICAgICBlID0gZSArIGJpYXM7XG4gICAgICAgIGYgPSBmIC0gcG93KDIsIGZiaXRzKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gRGVub3JtYWxpemVkXG4gICAgICBlID0gMDtcbiAgICAgIGYgPSByb3VuZFRvRXZlbih2IC8gcG93KDIsIDEgLSBiaWFzIC0gZmJpdHMpKTtcbiAgICB9XG4gIH1cblxuICAvLyBQYWNrIHNpZ24sIGV4cG9uZW50LCBmcmFjdGlvblxuICBiaXRzID0gW107XG4gIGZvciAoaSA9IGZiaXRzOyBpOyBpIC09IDEpIHsgYml0cy5wdXNoKGYgJSAyID8gMSA6IDApOyBmID0gZmxvb3IoZiAvIDIpOyB9XG4gIGZvciAoaSA9IGViaXRzOyBpOyBpIC09IDEpIHsgYml0cy5wdXNoKGUgJSAyID8gMSA6IDApOyBlID0gZmxvb3IoZSAvIDIpOyB9XG4gIGJpdHMucHVzaChzID8gMSA6IDApO1xuICBiaXRzLnJldmVyc2UoKTtcbiAgc3RyID0gYml0cy5qb2luKCcnKTtcblxuICAvLyBCaXRzIHRvIGJ5dGVzXG4gIGJ5dGVzID0gW107XG4gIHdoaWxlIChzdHIubGVuZ3RoKSB7XG4gICAgYnl0ZXMucHVzaChwYXJzZUludChzdHIuc3Vic3RyaW5nKDAsIDgpLCAyKSk7XG4gICAgc3RyID0gc3RyLnN1YnN0cmluZyg4KTtcbiAgfVxuICByZXR1cm4gYnl0ZXM7XG59XG5cbmZ1bmN0aW9uIHVucGFja0lFRUU3NTQoYnl0ZXMsIGViaXRzLCBmYml0cykge1xuXG4gIC8vIEJ5dGVzIHRvIGJpdHNcbiAgdmFyIGJpdHMgPSBbXSwgaSwgaiwgYiwgc3RyLFxuICAgICAgYmlhcywgcywgZSwgZjtcblxuICBmb3IgKGkgPSBieXRlcy5sZW5ndGg7IGk7IGkgLT0gMSkge1xuICAgIGIgPSBieXRlc1tpIC0gMV07XG4gICAgZm9yIChqID0gODsgajsgaiAtPSAxKSB7XG4gICAgICBiaXRzLnB1c2goYiAlIDIgPyAxIDogMCk7IGIgPSBiID4+IDE7XG4gICAgfVxuICB9XG4gIGJpdHMucmV2ZXJzZSgpO1xuICBzdHIgPSBiaXRzLmpvaW4oJycpO1xuXG4gIC8vIFVucGFjayBzaWduLCBleHBvbmVudCwgZnJhY3Rpb25cbiAgYmlhcyA9ICgxIDw8IChlYml0cyAtIDEpKSAtIDE7XG4gIHMgPSBwYXJzZUludChzdHIuc3Vic3RyaW5nKDAsIDEpLCAyKSA/IC0xIDogMTtcbiAgZSA9IHBhcnNlSW50KHN0ci5zdWJzdHJpbmcoMSwgMSArIGViaXRzKSwgMik7XG4gIGYgPSBwYXJzZUludChzdHIuc3Vic3RyaW5nKDEgKyBlYml0cyksIDIpO1xuXG4gIC8vIFByb2R1Y2UgbnVtYmVyXG4gIGlmIChlID09PSAoMSA8PCBlYml0cykgLSAxKSB7XG4gICAgcmV0dXJuIGYgIT09IDAgPyBOYU4gOiBzICogSW5maW5pdHk7XG4gIH0gZWxzZSBpZiAoZSA+IDApIHtcbiAgICAvLyBOb3JtYWxpemVkXG4gICAgcmV0dXJuIHMgKiBwb3coMiwgZSAtIGJpYXMpICogKDEgKyBmIC8gcG93KDIsIGZiaXRzKSk7XG4gIH0gZWxzZSBpZiAoZiAhPT0gMCkge1xuICAgIC8vIERlbm9ybWFsaXplZFxuICAgIHJldHVybiBzICogcG93KDIsIC0oYmlhcyAtIDEpKSAqIChmIC8gcG93KDIsIGZiaXRzKSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHMgPCAwID8gLTAgOiAwO1xuICB9XG59XG5cbmZ1bmN0aW9uIHVucGFja0Y2NChiKSB7IHJldHVybiB1bnBhY2tJRUVFNzU0KGIsIDExLCA1Mik7IH1cbmZ1bmN0aW9uIHBhY2tGNjQodikgeyByZXR1cm4gcGFja0lFRUU3NTQodiwgMTEsIDUyKTsgfVxuZnVuY3Rpb24gdW5wYWNrRjMyKGIpIHsgcmV0dXJuIHVucGFja0lFRUU3NTQoYiwgOCwgMjMpOyB9XG5mdW5jdGlvbiBwYWNrRjMyKHYpIHsgcmV0dXJuIHBhY2tJRUVFNzU0KHYsIDgsIDIzKTsgfVxuXG5cbi8vXG4vLyAzIFRoZSBBcnJheUJ1ZmZlciBUeXBlXG4vL1xuXG4oZnVuY3Rpb24oKSB7XG5cbiAgLyoqIEBjb25zdHJ1Y3RvciAqL1xuICB2YXIgQXJyYXlCdWZmZXIgPSBmdW5jdGlvbiBBcnJheUJ1ZmZlcihsZW5ndGgpIHtcbiAgICBsZW5ndGggPSBFQ01BU2NyaXB0LlRvSW50MzIobGVuZ3RoKTtcbiAgICBpZiAobGVuZ3RoIDwgMCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0FycmF5QnVmZmVyIHNpemUgaXMgbm90IGEgc21hbGwgZW5vdWdoIHBvc2l0aXZlIGludGVnZXInKTtcblxuICAgIHRoaXMuYnl0ZUxlbmd0aCA9IGxlbmd0aDtcbiAgICB0aGlzLl9ieXRlcyA9IFtdO1xuICAgIHRoaXMuX2J5dGVzLmxlbmd0aCA9IGxlbmd0aDtcblxuICAgIHZhciBpO1xuICAgIGZvciAoaSA9IDA7IGkgPCB0aGlzLmJ5dGVMZW5ndGg7IGkgKz0gMSkge1xuICAgICAgdGhpcy5fYnl0ZXNbaV0gPSAwO1xuICAgIH1cblxuICAgIGNvbmZpZ3VyZVByb3BlcnRpZXModGhpcyk7XG4gIH07XG5cbiAgZXhwb3J0cy5BcnJheUJ1ZmZlciA9IGV4cG9ydHMuQXJyYXlCdWZmZXIgfHwgQXJyYXlCdWZmZXI7XG5cbiAgLy9cbiAgLy8gNCBUaGUgQXJyYXlCdWZmZXJWaWV3IFR5cGVcbiAgLy9cblxuICAvLyBOT1RFOiB0aGlzIGNvbnN0cnVjdG9yIGlzIG5vdCBleHBvcnRlZFxuICAvKiogQGNvbnN0cnVjdG9yICovXG4gIHZhciBBcnJheUJ1ZmZlclZpZXcgPSBmdW5jdGlvbiBBcnJheUJ1ZmZlclZpZXcoKSB7XG4gICAgLy90aGlzLmJ1ZmZlciA9IG51bGw7XG4gICAgLy90aGlzLmJ5dGVPZmZzZXQgPSAwO1xuICAgIC8vdGhpcy5ieXRlTGVuZ3RoID0gMDtcbiAgfTtcblxuICAvL1xuICAvLyA1IFRoZSBUeXBlZCBBcnJheSBWaWV3IFR5cGVzXG4gIC8vXG5cbiAgZnVuY3Rpb24gbWFrZUNvbnN0cnVjdG9yKGJ5dGVzUGVyRWxlbWVudCwgcGFjaywgdW5wYWNrKSB7XG4gICAgLy8gRWFjaCBUeXBlZEFycmF5IHR5cGUgcmVxdWlyZXMgYSBkaXN0aW5jdCBjb25zdHJ1Y3RvciBpbnN0YW5jZSB3aXRoXG4gICAgLy8gaWRlbnRpY2FsIGxvZ2ljLCB3aGljaCB0aGlzIHByb2R1Y2VzLlxuXG4gICAgdmFyIGN0b3I7XG4gICAgY3RvciA9IGZ1bmN0aW9uKGJ1ZmZlciwgYnl0ZU9mZnNldCwgbGVuZ3RoKSB7XG4gICAgICB2YXIgYXJyYXksIHNlcXVlbmNlLCBpLCBzO1xuXG4gICAgICBpZiAoIWFyZ3VtZW50cy5sZW5ndGggfHwgdHlwZW9mIGFyZ3VtZW50c1swXSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgLy8gQ29uc3RydWN0b3IodW5zaWduZWQgbG9uZyBsZW5ndGgpXG4gICAgICAgIHRoaXMubGVuZ3RoID0gRUNNQVNjcmlwdC5Ub0ludDMyKGFyZ3VtZW50c1swXSk7XG4gICAgICAgIGlmIChsZW5ndGggPCAwKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignQXJyYXlCdWZmZXJWaWV3IHNpemUgaXMgbm90IGEgc21hbGwgZW5vdWdoIHBvc2l0aXZlIGludGVnZXInKTtcblxuICAgICAgICB0aGlzLmJ5dGVMZW5ndGggPSB0aGlzLmxlbmd0aCAqIHRoaXMuQllURVNfUEVSX0VMRU1FTlQ7XG4gICAgICAgIHRoaXMuYnVmZmVyID0gbmV3IEFycmF5QnVmZmVyKHRoaXMuYnl0ZUxlbmd0aCk7XG4gICAgICAgIHRoaXMuYnl0ZU9mZnNldCA9IDA7XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiBhcmd1bWVudHNbMF0gPT09ICdvYmplY3QnICYmIGFyZ3VtZW50c1swXS5jb25zdHJ1Y3RvciA9PT0gY3Rvcikge1xuICAgICAgICAvLyBDb25zdHJ1Y3RvcihUeXBlZEFycmF5IGFycmF5KVxuICAgICAgICBhcnJheSA9IGFyZ3VtZW50c1swXTtcblxuICAgICAgICB0aGlzLmxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcbiAgICAgICAgdGhpcy5ieXRlTGVuZ3RoID0gdGhpcy5sZW5ndGggKiB0aGlzLkJZVEVTX1BFUl9FTEVNRU5UO1xuICAgICAgICB0aGlzLmJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcih0aGlzLmJ5dGVMZW5ndGgpO1xuICAgICAgICB0aGlzLmJ5dGVPZmZzZXQgPSAwO1xuXG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICAgICAgdGhpcy5fc2V0dGVyKGksIGFycmF5Ll9nZXR0ZXIoaSkpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiBhcmd1bWVudHNbMF0gPT09ICdvYmplY3QnICYmXG4gICAgICAgICAgICAgICAgICEoYXJndW1lbnRzWzBdIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIgfHwgRUNNQVNjcmlwdC5DbGFzcyhhcmd1bWVudHNbMF0pID09PSAnQXJyYXlCdWZmZXInKSkge1xuICAgICAgICAvLyBDb25zdHJ1Y3RvcihzZXF1ZW5jZTx0eXBlPiBhcnJheSlcbiAgICAgICAgc2VxdWVuY2UgPSBhcmd1bWVudHNbMF07XG5cbiAgICAgICAgdGhpcy5sZW5ndGggPSBFQ01BU2NyaXB0LlRvVWludDMyKHNlcXVlbmNlLmxlbmd0aCk7XG4gICAgICAgIHRoaXMuYnl0ZUxlbmd0aCA9IHRoaXMubGVuZ3RoICogdGhpcy5CWVRFU19QRVJfRUxFTUVOVDtcbiAgICAgICAgdGhpcy5idWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIodGhpcy5ieXRlTGVuZ3RoKTtcbiAgICAgICAgdGhpcy5ieXRlT2Zmc2V0ID0gMDtcblxuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICAgIHMgPSBzZXF1ZW5jZVtpXTtcbiAgICAgICAgICB0aGlzLl9zZXR0ZXIoaSwgTnVtYmVyKHMpKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgYXJndW1lbnRzWzBdID09PSAnb2JqZWN0JyAmJlxuICAgICAgICAgICAgICAgICAoYXJndW1lbnRzWzBdIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIgfHwgRUNNQVNjcmlwdC5DbGFzcyhhcmd1bWVudHNbMF0pID09PSAnQXJyYXlCdWZmZXInKSkge1xuICAgICAgICAvLyBDb25zdHJ1Y3RvcihBcnJheUJ1ZmZlciBidWZmZXIsXG4gICAgICAgIC8vICAgICAgICAgICAgIG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgYnl0ZU9mZnNldCwgb3B0aW9uYWwgdW5zaWduZWQgbG9uZyBsZW5ndGgpXG4gICAgICAgIHRoaXMuYnVmZmVyID0gYnVmZmVyO1xuXG4gICAgICAgIHRoaXMuYnl0ZU9mZnNldCA9IEVDTUFTY3JpcHQuVG9VaW50MzIoYnl0ZU9mZnNldCk7XG4gICAgICAgIGlmICh0aGlzLmJ5dGVPZmZzZXQgPiB0aGlzLmJ1ZmZlci5ieXRlTGVuZ3RoKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJieXRlT2Zmc2V0IG91dCBvZiByYW5nZVwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmJ5dGVPZmZzZXQgJSB0aGlzLkJZVEVTX1BFUl9FTEVNRU5UKSB7XG4gICAgICAgICAgLy8gVGhlIGdpdmVuIGJ5dGVPZmZzZXQgbXVzdCBiZSBhIG11bHRpcGxlIG9mIHRoZSBlbGVtZW50XG4gICAgICAgICAgLy8gc2l6ZSBvZiB0aGUgc3BlY2lmaWMgdHlwZSwgb3RoZXJ3aXNlIGFuIGV4Y2VwdGlvbiBpcyByYWlzZWQuXG4gICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJBcnJheUJ1ZmZlciBsZW5ndGggbWludXMgdGhlIGJ5dGVPZmZzZXQgaXMgbm90IGEgbXVsdGlwbGUgb2YgdGhlIGVsZW1lbnQgc2l6ZS5cIik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA8IDMpIHtcbiAgICAgICAgICB0aGlzLmJ5dGVMZW5ndGggPSB0aGlzLmJ1ZmZlci5ieXRlTGVuZ3RoIC0gdGhpcy5ieXRlT2Zmc2V0O1xuXG4gICAgICAgICAgaWYgKHRoaXMuYnl0ZUxlbmd0aCAlIHRoaXMuQllURVNfUEVSX0VMRU1FTlQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKFwibGVuZ3RoIG9mIGJ1ZmZlciBtaW51cyBieXRlT2Zmc2V0IG5vdCBhIG11bHRpcGxlIG9mIHRoZSBlbGVtZW50IHNpemVcIik7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMubGVuZ3RoID0gdGhpcy5ieXRlTGVuZ3RoIC8gdGhpcy5CWVRFU19QRVJfRUxFTUVOVDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmxlbmd0aCA9IEVDTUFTY3JpcHQuVG9VaW50MzIobGVuZ3RoKTtcbiAgICAgICAgICB0aGlzLmJ5dGVMZW5ndGggPSB0aGlzLmxlbmd0aCAqIHRoaXMuQllURVNfUEVSX0VMRU1FTlQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoKHRoaXMuYnl0ZU9mZnNldCArIHRoaXMuYnl0ZUxlbmd0aCkgPiB0aGlzLmJ1ZmZlci5ieXRlTGVuZ3RoKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJieXRlT2Zmc2V0IGFuZCBsZW5ndGggcmVmZXJlbmNlIGFuIGFyZWEgYmV5b25kIHRoZSBlbmQgb2YgdGhlIGJ1ZmZlclwiKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlVuZXhwZWN0ZWQgYXJndW1lbnQgdHlwZShzKVwiKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5jb25zdHJ1Y3RvciA9IGN0b3I7XG5cbiAgICAgIGNvbmZpZ3VyZVByb3BlcnRpZXModGhpcyk7XG4gICAgICBtYWtlQXJyYXlBY2Nlc3NvcnModGhpcyk7XG4gICAgfTtcblxuICAgIGN0b3IucHJvdG90eXBlID0gbmV3IEFycmF5QnVmZmVyVmlldygpO1xuICAgIGN0b3IucHJvdG90eXBlLkJZVEVTX1BFUl9FTEVNRU5UID0gYnl0ZXNQZXJFbGVtZW50O1xuICAgIGN0b3IucHJvdG90eXBlLl9wYWNrID0gcGFjaztcbiAgICBjdG9yLnByb3RvdHlwZS5fdW5wYWNrID0gdW5wYWNrO1xuICAgIGN0b3IuQllURVNfUEVSX0VMRU1FTlQgPSBieXRlc1BlckVsZW1lbnQ7XG5cbiAgICAvLyBnZXR0ZXIgdHlwZSAodW5zaWduZWQgbG9uZyBpbmRleCk7XG4gICAgY3Rvci5wcm90b3R5cGUuX2dldHRlciA9IGZ1bmN0aW9uKGluZGV4KSB7XG4gICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA8IDEpIHRocm93IG5ldyBTeW50YXhFcnJvcihcIk5vdCBlbm91Z2ggYXJndW1lbnRzXCIpO1xuXG4gICAgICBpbmRleCA9IEVDTUFTY3JpcHQuVG9VaW50MzIoaW5kZXgpO1xuICAgICAgaWYgKGluZGV4ID49IHRoaXMubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICB9XG5cbiAgICAgIHZhciBieXRlcyA9IFtdLCBpLCBvO1xuICAgICAgZm9yIChpID0gMCwgbyA9IHRoaXMuYnl0ZU9mZnNldCArIGluZGV4ICogdGhpcy5CWVRFU19QRVJfRUxFTUVOVDtcbiAgICAgICAgICAgaSA8IHRoaXMuQllURVNfUEVSX0VMRU1FTlQ7XG4gICAgICAgICAgIGkgKz0gMSwgbyArPSAxKSB7XG4gICAgICAgIGJ5dGVzLnB1c2godGhpcy5idWZmZXIuX2J5dGVzW29dKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLl91bnBhY2soYnl0ZXMpO1xuICAgIH07XG5cbiAgICAvLyBOT05TVEFOREFSRDogY29udmVuaWVuY2UgYWxpYXMgZm9yIGdldHRlcjogdHlwZSBnZXQodW5zaWduZWQgbG9uZyBpbmRleCk7XG4gICAgY3Rvci5wcm90b3R5cGUuZ2V0ID0gY3Rvci5wcm90b3R5cGUuX2dldHRlcjtcblxuICAgIC8vIHNldHRlciB2b2lkICh1bnNpZ25lZCBsb25nIGluZGV4LCB0eXBlIHZhbHVlKTtcbiAgICBjdG9yLnByb3RvdHlwZS5fc2V0dGVyID0gZnVuY3Rpb24oaW5kZXgsIHZhbHVlKSB7XG4gICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA8IDIpIHRocm93IG5ldyBTeW50YXhFcnJvcihcIk5vdCBlbm91Z2ggYXJndW1lbnRzXCIpO1xuXG4gICAgICBpbmRleCA9IEVDTUFTY3JpcHQuVG9VaW50MzIoaW5kZXgpO1xuICAgICAgaWYgKGluZGV4ID49IHRoaXMubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICB9XG5cbiAgICAgIHZhciBieXRlcyA9IHRoaXMuX3BhY2sodmFsdWUpLCBpLCBvO1xuICAgICAgZm9yIChpID0gMCwgbyA9IHRoaXMuYnl0ZU9mZnNldCArIGluZGV4ICogdGhpcy5CWVRFU19QRVJfRUxFTUVOVDtcbiAgICAgICAgICAgaSA8IHRoaXMuQllURVNfUEVSX0VMRU1FTlQ7XG4gICAgICAgICAgIGkgKz0gMSwgbyArPSAxKSB7XG4gICAgICAgIHRoaXMuYnVmZmVyLl9ieXRlc1tvXSA9IGJ5dGVzW2ldO1xuICAgICAgfVxuICAgIH07XG5cbiAgICAvLyB2b2lkIHNldChUeXBlZEFycmF5IGFycmF5LCBvcHRpb25hbCB1bnNpZ25lZCBsb25nIG9mZnNldCk7XG4gICAgLy8gdm9pZCBzZXQoc2VxdWVuY2U8dHlwZT4gYXJyYXksIG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgb2Zmc2V0KTtcbiAgICBjdG9yLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbihpbmRleCwgdmFsdWUpIHtcbiAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoIDwgMSkgdGhyb3cgbmV3IFN5bnRheEVycm9yKFwiTm90IGVub3VnaCBhcmd1bWVudHNcIik7XG4gICAgICB2YXIgYXJyYXksIHNlcXVlbmNlLCBvZmZzZXQsIGxlbixcbiAgICAgICAgICBpLCBzLCBkLFxuICAgICAgICAgIGJ5dGVPZmZzZXQsIGJ5dGVMZW5ndGgsIHRtcDtcblxuICAgICAgaWYgKHR5cGVvZiBhcmd1bWVudHNbMF0gPT09ICdvYmplY3QnICYmIGFyZ3VtZW50c1swXS5jb25zdHJ1Y3RvciA9PT0gdGhpcy5jb25zdHJ1Y3Rvcikge1xuICAgICAgICAvLyB2b2lkIHNldChUeXBlZEFycmF5IGFycmF5LCBvcHRpb25hbCB1bnNpZ25lZCBsb25nIG9mZnNldCk7XG4gICAgICAgIGFycmF5ID0gYXJndW1lbnRzWzBdO1xuICAgICAgICBvZmZzZXQgPSBFQ01BU2NyaXB0LlRvVWludDMyKGFyZ3VtZW50c1sxXSk7XG5cbiAgICAgICAgaWYgKG9mZnNldCArIGFycmF5Lmxlbmd0aCA+IHRoaXMubGVuZ3RoKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJPZmZzZXQgcGx1cyBsZW5ndGggb2YgYXJyYXkgaXMgb3V0IG9mIHJhbmdlXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgYnl0ZU9mZnNldCA9IHRoaXMuYnl0ZU9mZnNldCArIG9mZnNldCAqIHRoaXMuQllURVNfUEVSX0VMRU1FTlQ7XG4gICAgICAgIGJ5dGVMZW5ndGggPSBhcnJheS5sZW5ndGggKiB0aGlzLkJZVEVTX1BFUl9FTEVNRU5UO1xuXG4gICAgICAgIGlmIChhcnJheS5idWZmZXIgPT09IHRoaXMuYnVmZmVyKSB7XG4gICAgICAgICAgdG1wID0gW107XG4gICAgICAgICAgZm9yIChpID0gMCwgcyA9IGFycmF5LmJ5dGVPZmZzZXQ7IGkgPCBieXRlTGVuZ3RoOyBpICs9IDEsIHMgKz0gMSkge1xuICAgICAgICAgICAgdG1wW2ldID0gYXJyYXkuYnVmZmVyLl9ieXRlc1tzXTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZm9yIChpID0gMCwgZCA9IGJ5dGVPZmZzZXQ7IGkgPCBieXRlTGVuZ3RoOyBpICs9IDEsIGQgKz0gMSkge1xuICAgICAgICAgICAgdGhpcy5idWZmZXIuX2J5dGVzW2RdID0gdG1wW2ldO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBmb3IgKGkgPSAwLCBzID0gYXJyYXkuYnl0ZU9mZnNldCwgZCA9IGJ5dGVPZmZzZXQ7XG4gICAgICAgICAgICAgICBpIDwgYnl0ZUxlbmd0aDsgaSArPSAxLCBzICs9IDEsIGQgKz0gMSkge1xuICAgICAgICAgICAgdGhpcy5idWZmZXIuX2J5dGVzW2RdID0gYXJyYXkuYnVmZmVyLl9ieXRlc1tzXTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGFyZ3VtZW50c1swXSA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIGFyZ3VtZW50c1swXS5sZW5ndGggIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIC8vIHZvaWQgc2V0KHNlcXVlbmNlPHR5cGU+IGFycmF5LCBvcHRpb25hbCB1bnNpZ25lZCBsb25nIG9mZnNldCk7XG4gICAgICAgIHNlcXVlbmNlID0gYXJndW1lbnRzWzBdO1xuICAgICAgICBsZW4gPSBFQ01BU2NyaXB0LlRvVWludDMyKHNlcXVlbmNlLmxlbmd0aCk7XG4gICAgICAgIG9mZnNldCA9IEVDTUFTY3JpcHQuVG9VaW50MzIoYXJndW1lbnRzWzFdKTtcblxuICAgICAgICBpZiAob2Zmc2V0ICsgbGVuID4gdGhpcy5sZW5ndGgpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihcIk9mZnNldCBwbHVzIGxlbmd0aCBvZiBhcnJheSBpcyBvdXQgb2YgcmFuZ2VcIik7XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpICs9IDEpIHtcbiAgICAgICAgICBzID0gc2VxdWVuY2VbaV07XG4gICAgICAgICAgdGhpcy5fc2V0dGVyKG9mZnNldCArIGksIE51bWJlcihzKSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJVbmV4cGVjdGVkIGFyZ3VtZW50IHR5cGUocylcIik7XG4gICAgICB9XG4gICAgfTtcblxuICAgIC8vIFR5cGVkQXJyYXkgc3ViYXJyYXkobG9uZyBiZWdpbiwgb3B0aW9uYWwgbG9uZyBlbmQpO1xuICAgIGN0b3IucHJvdG90eXBlLnN1YmFycmF5ID0gZnVuY3Rpb24oc3RhcnQsIGVuZCkge1xuICAgICAgZnVuY3Rpb24gY2xhbXAodiwgbWluLCBtYXgpIHsgcmV0dXJuIHYgPCBtaW4gPyBtaW4gOiB2ID4gbWF4ID8gbWF4IDogdjsgfVxuXG4gICAgICBzdGFydCA9IEVDTUFTY3JpcHQuVG9JbnQzMihzdGFydCk7XG4gICAgICBlbmQgPSBFQ01BU2NyaXB0LlRvSW50MzIoZW5kKTtcblxuICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPCAxKSB7IHN0YXJ0ID0gMDsgfVxuICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPCAyKSB7IGVuZCA9IHRoaXMubGVuZ3RoOyB9XG5cbiAgICAgIGlmIChzdGFydCA8IDApIHsgc3RhcnQgPSB0aGlzLmxlbmd0aCArIHN0YXJ0OyB9XG4gICAgICBpZiAoZW5kIDwgMCkgeyBlbmQgPSB0aGlzLmxlbmd0aCArIGVuZDsgfVxuXG4gICAgICBzdGFydCA9IGNsYW1wKHN0YXJ0LCAwLCB0aGlzLmxlbmd0aCk7XG4gICAgICBlbmQgPSBjbGFtcChlbmQsIDAsIHRoaXMubGVuZ3RoKTtcblxuICAgICAgdmFyIGxlbiA9IGVuZCAtIHN0YXJ0O1xuICAgICAgaWYgKGxlbiA8IDApIHtcbiAgICAgICAgbGVuID0gMDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG5ldyB0aGlzLmNvbnN0cnVjdG9yKFxuICAgICAgICB0aGlzLmJ1ZmZlciwgdGhpcy5ieXRlT2Zmc2V0ICsgc3RhcnQgKiB0aGlzLkJZVEVTX1BFUl9FTEVNRU5ULCBsZW4pO1xuICAgIH07XG5cbiAgICByZXR1cm4gY3RvcjtcbiAgfVxuXG4gIHZhciBJbnQ4QXJyYXkgPSBtYWtlQ29uc3RydWN0b3IoMSwgcGFja0k4LCB1bnBhY2tJOCk7XG4gIHZhciBVaW50OEFycmF5ID0gbWFrZUNvbnN0cnVjdG9yKDEsIHBhY2tVOCwgdW5wYWNrVTgpO1xuICB2YXIgVWludDhDbGFtcGVkQXJyYXkgPSBtYWtlQ29uc3RydWN0b3IoMSwgcGFja1U4Q2xhbXBlZCwgdW5wYWNrVTgpO1xuICB2YXIgSW50MTZBcnJheSA9IG1ha2VDb25zdHJ1Y3RvcigyLCBwYWNrSTE2LCB1bnBhY2tJMTYpO1xuICB2YXIgVWludDE2QXJyYXkgPSBtYWtlQ29uc3RydWN0b3IoMiwgcGFja1UxNiwgdW5wYWNrVTE2KTtcbiAgdmFyIEludDMyQXJyYXkgPSBtYWtlQ29uc3RydWN0b3IoNCwgcGFja0kzMiwgdW5wYWNrSTMyKTtcbiAgdmFyIFVpbnQzMkFycmF5ID0gbWFrZUNvbnN0cnVjdG9yKDQsIHBhY2tVMzIsIHVucGFja1UzMik7XG4gIHZhciBGbG9hdDMyQXJyYXkgPSBtYWtlQ29uc3RydWN0b3IoNCwgcGFja0YzMiwgdW5wYWNrRjMyKTtcbiAgdmFyIEZsb2F0NjRBcnJheSA9IG1ha2VDb25zdHJ1Y3Rvcig4LCBwYWNrRjY0LCB1bnBhY2tGNjQpO1xuXG4gIGV4cG9ydHMuSW50OEFycmF5ID0gZXhwb3J0cy5JbnQ4QXJyYXkgfHwgSW50OEFycmF5O1xuICBleHBvcnRzLlVpbnQ4QXJyYXkgPSBleHBvcnRzLlVpbnQ4QXJyYXkgfHwgVWludDhBcnJheTtcbiAgZXhwb3J0cy5VaW50OENsYW1wZWRBcnJheSA9IGV4cG9ydHMuVWludDhDbGFtcGVkQXJyYXkgfHwgVWludDhDbGFtcGVkQXJyYXk7XG4gIGV4cG9ydHMuSW50MTZBcnJheSA9IGV4cG9ydHMuSW50MTZBcnJheSB8fCBJbnQxNkFycmF5O1xuICBleHBvcnRzLlVpbnQxNkFycmF5ID0gZXhwb3J0cy5VaW50MTZBcnJheSB8fCBVaW50MTZBcnJheTtcbiAgZXhwb3J0cy5JbnQzMkFycmF5ID0gZXhwb3J0cy5JbnQzMkFycmF5IHx8IEludDMyQXJyYXk7XG4gIGV4cG9ydHMuVWludDMyQXJyYXkgPSBleHBvcnRzLlVpbnQzMkFycmF5IHx8IFVpbnQzMkFycmF5O1xuICBleHBvcnRzLkZsb2F0MzJBcnJheSA9IGV4cG9ydHMuRmxvYXQzMkFycmF5IHx8IEZsb2F0MzJBcnJheTtcbiAgZXhwb3J0cy5GbG9hdDY0QXJyYXkgPSBleHBvcnRzLkZsb2F0NjRBcnJheSB8fCBGbG9hdDY0QXJyYXk7XG59KCkpO1xuXG4vL1xuLy8gNiBUaGUgRGF0YVZpZXcgVmlldyBUeXBlXG4vL1xuXG4oZnVuY3Rpb24oKSB7XG4gIGZ1bmN0aW9uIHIoYXJyYXksIGluZGV4KSB7XG4gICAgcmV0dXJuIEVDTUFTY3JpcHQuSXNDYWxsYWJsZShhcnJheS5nZXQpID8gYXJyYXkuZ2V0KGluZGV4KSA6IGFycmF5W2luZGV4XTtcbiAgfVxuXG4gIHZhciBJU19CSUdfRU5ESUFOID0gKGZ1bmN0aW9uKCkge1xuICAgIHZhciB1MTZhcnJheSA9IG5ldyhleHBvcnRzLlVpbnQxNkFycmF5KShbMHgxMjM0XSksXG4gICAgICAgIHU4YXJyYXkgPSBuZXcoZXhwb3J0cy5VaW50OEFycmF5KSh1MTZhcnJheS5idWZmZXIpO1xuICAgIHJldHVybiByKHU4YXJyYXksIDApID09PSAweDEyO1xuICB9KCkpO1xuXG4gIC8vIENvbnN0cnVjdG9yKEFycmF5QnVmZmVyIGJ1ZmZlcixcbiAgLy8gICAgICAgICAgICAgb3B0aW9uYWwgdW5zaWduZWQgbG9uZyBieXRlT2Zmc2V0LFxuICAvLyAgICAgICAgICAgICBvcHRpb25hbCB1bnNpZ25lZCBsb25nIGJ5dGVMZW5ndGgpXG4gIC8qKiBAY29uc3RydWN0b3IgKi9cbiAgdmFyIERhdGFWaWV3ID0gZnVuY3Rpb24gRGF0YVZpZXcoYnVmZmVyLCBieXRlT2Zmc2V0LCBieXRlTGVuZ3RoKSB7XG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgIGJ1ZmZlciA9IG5ldyBleHBvcnRzLkFycmF5QnVmZmVyKDApO1xuICAgIH0gZWxzZSBpZiAoIShidWZmZXIgaW5zdGFuY2VvZiBleHBvcnRzLkFycmF5QnVmZmVyIHx8IEVDTUFTY3JpcHQuQ2xhc3MoYnVmZmVyKSA9PT0gJ0FycmF5QnVmZmVyJykpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJUeXBlRXJyb3JcIik7XG4gICAgfVxuXG4gICAgdGhpcy5idWZmZXIgPSBidWZmZXIgfHwgbmV3IGV4cG9ydHMuQXJyYXlCdWZmZXIoMCk7XG5cbiAgICB0aGlzLmJ5dGVPZmZzZXQgPSBFQ01BU2NyaXB0LlRvVWludDMyKGJ5dGVPZmZzZXQpO1xuICAgIGlmICh0aGlzLmJ5dGVPZmZzZXQgPiB0aGlzLmJ1ZmZlci5ieXRlTGVuZ3RoKSB7XG4gICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihcImJ5dGVPZmZzZXQgb3V0IG9mIHJhbmdlXCIpO1xuICAgIH1cblxuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoIDwgMykge1xuICAgICAgdGhpcy5ieXRlTGVuZ3RoID0gdGhpcy5idWZmZXIuYnl0ZUxlbmd0aCAtIHRoaXMuYnl0ZU9mZnNldDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5ieXRlTGVuZ3RoID0gRUNNQVNjcmlwdC5Ub1VpbnQzMihieXRlTGVuZ3RoKTtcbiAgICB9XG5cbiAgICBpZiAoKHRoaXMuYnl0ZU9mZnNldCArIHRoaXMuYnl0ZUxlbmd0aCkgPiB0aGlzLmJ1ZmZlci5ieXRlTGVuZ3RoKSB7XG4gICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihcImJ5dGVPZmZzZXQgYW5kIGxlbmd0aCByZWZlcmVuY2UgYW4gYXJlYSBiZXlvbmQgdGhlIGVuZCBvZiB0aGUgYnVmZmVyXCIpO1xuICAgIH1cblxuICAgIGNvbmZpZ3VyZVByb3BlcnRpZXModGhpcyk7XG4gIH07XG5cbiAgZnVuY3Rpb24gbWFrZUdldHRlcihhcnJheVR5cGUpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24oYnl0ZU9mZnNldCwgbGl0dGxlRW5kaWFuKSB7XG5cbiAgICAgIGJ5dGVPZmZzZXQgPSBFQ01BU2NyaXB0LlRvVWludDMyKGJ5dGVPZmZzZXQpO1xuXG4gICAgICBpZiAoYnl0ZU9mZnNldCArIGFycmF5VHlwZS5CWVRFU19QRVJfRUxFTUVOVCA+IHRoaXMuYnl0ZUxlbmd0aCkge1xuICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihcIkFycmF5IGluZGV4IG91dCBvZiByYW5nZVwiKTtcbiAgICAgIH1cbiAgICAgIGJ5dGVPZmZzZXQgKz0gdGhpcy5ieXRlT2Zmc2V0O1xuXG4gICAgICB2YXIgdWludDhBcnJheSA9IG5ldyBleHBvcnRzLlVpbnQ4QXJyYXkodGhpcy5idWZmZXIsIGJ5dGVPZmZzZXQsIGFycmF5VHlwZS5CWVRFU19QRVJfRUxFTUVOVCksXG4gICAgICAgICAgYnl0ZXMgPSBbXSwgaTtcbiAgICAgIGZvciAoaSA9IDA7IGkgPCBhcnJheVR5cGUuQllURVNfUEVSX0VMRU1FTlQ7IGkgKz0gMSkge1xuICAgICAgICBieXRlcy5wdXNoKHIodWludDhBcnJheSwgaSkpO1xuICAgICAgfVxuXG4gICAgICBpZiAoQm9vbGVhbihsaXR0bGVFbmRpYW4pID09PSBCb29sZWFuKElTX0JJR19FTkRJQU4pKSB7XG4gICAgICAgIGJ5dGVzLnJldmVyc2UoKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHIobmV3IGFycmF5VHlwZShuZXcgZXhwb3J0cy5VaW50OEFycmF5KGJ5dGVzKS5idWZmZXIpLCAwKTtcbiAgICB9O1xuICB9XG5cbiAgRGF0YVZpZXcucHJvdG90eXBlLmdldFVpbnQ4ID0gbWFrZUdldHRlcihleHBvcnRzLlVpbnQ4QXJyYXkpO1xuICBEYXRhVmlldy5wcm90b3R5cGUuZ2V0SW50OCA9IG1ha2VHZXR0ZXIoZXhwb3J0cy5JbnQ4QXJyYXkpO1xuICBEYXRhVmlldy5wcm90b3R5cGUuZ2V0VWludDE2ID0gbWFrZUdldHRlcihleHBvcnRzLlVpbnQxNkFycmF5KTtcbiAgRGF0YVZpZXcucHJvdG90eXBlLmdldEludDE2ID0gbWFrZUdldHRlcihleHBvcnRzLkludDE2QXJyYXkpO1xuICBEYXRhVmlldy5wcm90b3R5cGUuZ2V0VWludDMyID0gbWFrZUdldHRlcihleHBvcnRzLlVpbnQzMkFycmF5KTtcbiAgRGF0YVZpZXcucHJvdG90eXBlLmdldEludDMyID0gbWFrZUdldHRlcihleHBvcnRzLkludDMyQXJyYXkpO1xuICBEYXRhVmlldy5wcm90b3R5cGUuZ2V0RmxvYXQzMiA9IG1ha2VHZXR0ZXIoZXhwb3J0cy5GbG9hdDMyQXJyYXkpO1xuICBEYXRhVmlldy5wcm90b3R5cGUuZ2V0RmxvYXQ2NCA9IG1ha2VHZXR0ZXIoZXhwb3J0cy5GbG9hdDY0QXJyYXkpO1xuXG4gIGZ1bmN0aW9uIG1ha2VTZXR0ZXIoYXJyYXlUeXBlKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKGJ5dGVPZmZzZXQsIHZhbHVlLCBsaXR0bGVFbmRpYW4pIHtcblxuICAgICAgYnl0ZU9mZnNldCA9IEVDTUFTY3JpcHQuVG9VaW50MzIoYnl0ZU9mZnNldCk7XG4gICAgICBpZiAoYnl0ZU9mZnNldCArIGFycmF5VHlwZS5CWVRFU19QRVJfRUxFTUVOVCA+IHRoaXMuYnl0ZUxlbmd0aCkge1xuICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihcIkFycmF5IGluZGV4IG91dCBvZiByYW5nZVwiKTtcbiAgICAgIH1cblxuICAgICAgLy8gR2V0IGJ5dGVzXG4gICAgICB2YXIgdHlwZUFycmF5ID0gbmV3IGFycmF5VHlwZShbdmFsdWVdKSxcbiAgICAgICAgICBieXRlQXJyYXkgPSBuZXcgZXhwb3J0cy5VaW50OEFycmF5KHR5cGVBcnJheS5idWZmZXIpLFxuICAgICAgICAgIGJ5dGVzID0gW10sIGksIGJ5dGVWaWV3O1xuXG4gICAgICBmb3IgKGkgPSAwOyBpIDwgYXJyYXlUeXBlLkJZVEVTX1BFUl9FTEVNRU5UOyBpICs9IDEpIHtcbiAgICAgICAgYnl0ZXMucHVzaChyKGJ5dGVBcnJheSwgaSkpO1xuICAgICAgfVxuXG4gICAgICAvLyBGbGlwIGlmIG5lY2Vzc2FyeVxuICAgICAgaWYgKEJvb2xlYW4obGl0dGxlRW5kaWFuKSA9PT0gQm9vbGVhbihJU19CSUdfRU5ESUFOKSkge1xuICAgICAgICBieXRlcy5yZXZlcnNlKCk7XG4gICAgICB9XG5cbiAgICAgIC8vIFdyaXRlIHRoZW1cbiAgICAgIGJ5dGVWaWV3ID0gbmV3IGV4cG9ydHMuVWludDhBcnJheSh0aGlzLmJ1ZmZlciwgYnl0ZU9mZnNldCwgYXJyYXlUeXBlLkJZVEVTX1BFUl9FTEVNRU5UKTtcbiAgICAgIGJ5dGVWaWV3LnNldChieXRlcyk7XG4gICAgfTtcbiAgfVxuXG4gIERhdGFWaWV3LnByb3RvdHlwZS5zZXRVaW50OCA9IG1ha2VTZXR0ZXIoZXhwb3J0cy5VaW50OEFycmF5KTtcbiAgRGF0YVZpZXcucHJvdG90eXBlLnNldEludDggPSBtYWtlU2V0dGVyKGV4cG9ydHMuSW50OEFycmF5KTtcbiAgRGF0YVZpZXcucHJvdG90eXBlLnNldFVpbnQxNiA9IG1ha2VTZXR0ZXIoZXhwb3J0cy5VaW50MTZBcnJheSk7XG4gIERhdGFWaWV3LnByb3RvdHlwZS5zZXRJbnQxNiA9IG1ha2VTZXR0ZXIoZXhwb3J0cy5JbnQxNkFycmF5KTtcbiAgRGF0YVZpZXcucHJvdG90eXBlLnNldFVpbnQzMiA9IG1ha2VTZXR0ZXIoZXhwb3J0cy5VaW50MzJBcnJheSk7XG4gIERhdGFWaWV3LnByb3RvdHlwZS5zZXRJbnQzMiA9IG1ha2VTZXR0ZXIoZXhwb3J0cy5JbnQzMkFycmF5KTtcbiAgRGF0YVZpZXcucHJvdG90eXBlLnNldEZsb2F0MzIgPSBtYWtlU2V0dGVyKGV4cG9ydHMuRmxvYXQzMkFycmF5KTtcbiAgRGF0YVZpZXcucHJvdG90eXBlLnNldEZsb2F0NjQgPSBtYWtlU2V0dGVyKGV4cG9ydHMuRmxvYXQ2NEFycmF5KTtcblxuICBleHBvcnRzLkRhdGFWaWV3ID0gZXhwb3J0cy5EYXRhVmlldyB8fCBEYXRhVmlldztcblxufSgpKTtcbiIsIlxuLyoqXG4gKiBNb2R1bGUgZXhwb3J0cy5cbiAqL1xuXG5tb2R1bGUuZXhwb3J0cyA9IGRlcHJlY2F0ZTtcblxuLyoqXG4gKiBNYXJrIHRoYXQgYSBtZXRob2Qgc2hvdWxkIG5vdCBiZSB1c2VkLlxuICogUmV0dXJucyBhIG1vZGlmaWVkIGZ1bmN0aW9uIHdoaWNoIHdhcm5zIG9uY2UgYnkgZGVmYXVsdC5cbiAqXG4gKiBJZiBgbG9jYWxTdG9yYWdlLm5vRGVwcmVjYXRpb24gPSB0cnVlYCBpcyBzZXQsIHRoZW4gaXQgaXMgYSBuby1vcC5cbiAqXG4gKiBJZiBgbG9jYWxTdG9yYWdlLnRocm93RGVwcmVjYXRpb24gPSB0cnVlYCBpcyBzZXQsIHRoZW4gZGVwcmVjYXRlZCBmdW5jdGlvbnNcbiAqIHdpbGwgdGhyb3cgYW4gRXJyb3Igd2hlbiBpbnZva2VkLlxuICpcbiAqIElmIGBsb2NhbFN0b3JhZ2UudHJhY2VEZXByZWNhdGlvbiA9IHRydWVgIGlzIHNldCwgdGhlbiBkZXByZWNhdGVkIGZ1bmN0aW9uc1xuICogd2lsbCBpbnZva2UgYGNvbnNvbGUudHJhY2UoKWAgaW5zdGVhZCBvZiBgY29uc29sZS5lcnJvcigpYC5cbiAqXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmbiAtIHRoZSBmdW5jdGlvbiB0byBkZXByZWNhdGVcbiAqIEBwYXJhbSB7U3RyaW5nfSBtc2cgLSB0aGUgc3RyaW5nIHRvIHByaW50IHRvIHRoZSBjb25zb2xlIHdoZW4gYGZuYCBpcyBpbnZva2VkXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IGEgbmV3IFwiZGVwcmVjYXRlZFwiIHZlcnNpb24gb2YgYGZuYFxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5mdW5jdGlvbiBkZXByZWNhdGUgKGZuLCBtc2cpIHtcbiAgaWYgKGNvbmZpZygnbm9EZXByZWNhdGlvbicpKSB7XG4gICAgcmV0dXJuIGZuO1xuICB9XG5cbiAgdmFyIHdhcm5lZCA9IGZhbHNlO1xuICBmdW5jdGlvbiBkZXByZWNhdGVkKCkge1xuICAgIGlmICghd2FybmVkKSB7XG4gICAgICBpZiAoY29uZmlnKCd0aHJvd0RlcHJlY2F0aW9uJykpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1zZyk7XG4gICAgICB9IGVsc2UgaWYgKGNvbmZpZygndHJhY2VEZXByZWNhdGlvbicpKSB7XG4gICAgICAgIGNvbnNvbGUudHJhY2UobXNnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnNvbGUud2Fybihtc2cpO1xuICAgICAgfVxuICAgICAgd2FybmVkID0gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gIH1cblxuICByZXR1cm4gZGVwcmVjYXRlZDtcbn1cblxuLyoqXG4gKiBDaGVja3MgYGxvY2FsU3RvcmFnZWAgZm9yIGJvb2xlYW4gdmFsdWVzIGZvciB0aGUgZ2l2ZW4gYG5hbWVgLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBuYW1lXG4gKiBAcmV0dXJucyB7Qm9vbGVhbn1cbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIGNvbmZpZyAobmFtZSkge1xuICAvLyBhY2Nlc3NpbmcgZ2xvYmFsLmxvY2FsU3RvcmFnZSBjYW4gdHJpZ2dlciBhIERPTUV4Y2VwdGlvbiBpbiBzYW5kYm94ZWQgaWZyYW1lc1xuICB0cnkge1xuICAgIGlmICghZ2xvYmFsLmxvY2FsU3RvcmFnZSkgcmV0dXJuIGZhbHNlO1xuICB9IGNhdGNoIChfKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHZhciB2YWwgPSBnbG9iYWwubG9jYWxTdG9yYWdlW25hbWVdO1xuICBpZiAobnVsbCA9PSB2YWwpIHJldHVybiBmYWxzZTtcbiAgcmV0dXJuIFN0cmluZyh2YWwpLnRvTG93ZXJDYXNlKCkgPT09ICd0cnVlJztcbn1cbiIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaXNCdWZmZXIoYXJnKSB7XG4gIHJldHVybiBhcmcgJiYgdHlwZW9mIGFyZyA9PT0gJ29iamVjdCdcbiAgICAmJiB0eXBlb2YgYXJnLmNvcHkgPT09ICdmdW5jdGlvbidcbiAgICAmJiB0eXBlb2YgYXJnLmZpbGwgPT09ICdmdW5jdGlvbidcbiAgICAmJiB0eXBlb2YgYXJnLnJlYWRVSW50OCA9PT0gJ2Z1bmN0aW9uJztcbn0iLCIvLyBDb3B5cmlnaHQgSm95ZW50LCBJbmMuIGFuZCBvdGhlciBOb2RlIGNvbnRyaWJ1dG9ycy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZVxuLy8gXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nXG4vLyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsXG4vLyBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0XG4vLyBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGVcbi8vIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkXG4vLyBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTXG4vLyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GXG4vLyBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOXG4vLyBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSxcbi8vIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUlxuLy8gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRVxuLy8gVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cblxudmFyIGZvcm1hdFJlZ0V4cCA9IC8lW3NkaiVdL2c7XG5leHBvcnRzLmZvcm1hdCA9IGZ1bmN0aW9uKGYpIHtcbiAgaWYgKCFpc1N0cmluZyhmKSkge1xuICAgIHZhciBvYmplY3RzID0gW107XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIG9iamVjdHMucHVzaChpbnNwZWN0KGFyZ3VtZW50c1tpXSkpO1xuICAgIH1cbiAgICByZXR1cm4gb2JqZWN0cy5qb2luKCcgJyk7XG4gIH1cblxuICB2YXIgaSA9IDE7XG4gIHZhciBhcmdzID0gYXJndW1lbnRzO1xuICB2YXIgbGVuID0gYXJncy5sZW5ndGg7XG4gIHZhciBzdHIgPSBTdHJpbmcoZikucmVwbGFjZShmb3JtYXRSZWdFeHAsIGZ1bmN0aW9uKHgpIHtcbiAgICBpZiAoeCA9PT0gJyUlJykgcmV0dXJuICclJztcbiAgICBpZiAoaSA+PSBsZW4pIHJldHVybiB4O1xuICAgIHN3aXRjaCAoeCkge1xuICAgICAgY2FzZSAnJXMnOiByZXR1cm4gU3RyaW5nKGFyZ3NbaSsrXSk7XG4gICAgICBjYXNlICclZCc6IHJldHVybiBOdW1iZXIoYXJnc1tpKytdKTtcbiAgICAgIGNhc2UgJyVqJzpcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoYXJnc1tpKytdKTtcbiAgICAgICAgfSBjYXRjaCAoXykge1xuICAgICAgICAgIHJldHVybiAnW0NpcmN1bGFyXSc7XG4gICAgICAgIH1cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB4O1xuICAgIH1cbiAgfSk7XG4gIGZvciAodmFyIHggPSBhcmdzW2ldOyBpIDwgbGVuOyB4ID0gYXJnc1srK2ldKSB7XG4gICAgaWYgKGlzTnVsbCh4KSB8fCAhaXNPYmplY3QoeCkpIHtcbiAgICAgIHN0ciArPSAnICcgKyB4O1xuICAgIH0gZWxzZSB7XG4gICAgICBzdHIgKz0gJyAnICsgaW5zcGVjdCh4KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHN0cjtcbn07XG5cblxuLy8gTWFyayB0aGF0IGEgbWV0aG9kIHNob3VsZCBub3QgYmUgdXNlZC5cbi8vIFJldHVybnMgYSBtb2RpZmllZCBmdW5jdGlvbiB3aGljaCB3YXJucyBvbmNlIGJ5IGRlZmF1bHQuXG4vLyBJZiAtLW5vLWRlcHJlY2F0aW9uIGlzIHNldCwgdGhlbiBpdCBpcyBhIG5vLW9wLlxuZXhwb3J0cy5kZXByZWNhdGUgPSBmdW5jdGlvbihmbiwgbXNnKSB7XG4gIC8vIEFsbG93IGZvciBkZXByZWNhdGluZyB0aGluZ3MgaW4gdGhlIHByb2Nlc3Mgb2Ygc3RhcnRpbmcgdXAuXG4gIGlmIChpc1VuZGVmaW5lZChnbG9iYWwucHJvY2VzcykpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gZXhwb3J0cy5kZXByZWNhdGUoZm4sIG1zZykuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICB9O1xuICB9XG5cbiAgaWYgKHByb2Nlc3Mubm9EZXByZWNhdGlvbiA9PT0gdHJ1ZSkge1xuICAgIHJldHVybiBmbjtcbiAgfVxuXG4gIHZhciB3YXJuZWQgPSBmYWxzZTtcbiAgZnVuY3Rpb24gZGVwcmVjYXRlZCgpIHtcbiAgICBpZiAoIXdhcm5lZCkge1xuICAgICAgaWYgKHByb2Nlc3MudGhyb3dEZXByZWNhdGlvbikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IobXNnKTtcbiAgICAgIH0gZWxzZSBpZiAocHJvY2Vzcy50cmFjZURlcHJlY2F0aW9uKSB7XG4gICAgICAgIGNvbnNvbGUudHJhY2UobXNnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IobXNnKTtcbiAgICAgIH1cbiAgICAgIHdhcm5lZCA9IHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICB9XG5cbiAgcmV0dXJuIGRlcHJlY2F0ZWQ7XG59O1xuXG5cbnZhciBkZWJ1Z3MgPSB7fTtcbnZhciBkZWJ1Z0Vudmlyb247XG5leHBvcnRzLmRlYnVnbG9nID0gZnVuY3Rpb24oc2V0KSB7XG4gIGlmIChpc1VuZGVmaW5lZChkZWJ1Z0Vudmlyb24pKVxuICAgIGRlYnVnRW52aXJvbiA9IHByb2Nlc3MuZW52Lk5PREVfREVCVUcgfHwgJyc7XG4gIHNldCA9IHNldC50b1VwcGVyQ2FzZSgpO1xuICBpZiAoIWRlYnVnc1tzZXRdKSB7XG4gICAgaWYgKG5ldyBSZWdFeHAoJ1xcXFxiJyArIHNldCArICdcXFxcYicsICdpJykudGVzdChkZWJ1Z0Vudmlyb24pKSB7XG4gICAgICB2YXIgcGlkID0gcHJvY2Vzcy5waWQ7XG4gICAgICBkZWJ1Z3Nbc2V0XSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgbXNnID0gZXhwb3J0cy5mb3JtYXQuYXBwbHkoZXhwb3J0cywgYXJndW1lbnRzKTtcbiAgICAgICAgY29uc29sZS5lcnJvcignJXMgJWQ6ICVzJywgc2V0LCBwaWQsIG1zZyk7XG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICBkZWJ1Z3Nbc2V0XSA9IGZ1bmN0aW9uKCkge307XG4gICAgfVxuICB9XG4gIHJldHVybiBkZWJ1Z3Nbc2V0XTtcbn07XG5cblxuLyoqXG4gKiBFY2hvcyB0aGUgdmFsdWUgb2YgYSB2YWx1ZS4gVHJ5cyB0byBwcmludCB0aGUgdmFsdWUgb3V0XG4gKiBpbiB0aGUgYmVzdCB3YXkgcG9zc2libGUgZ2l2ZW4gdGhlIGRpZmZlcmVudCB0eXBlcy5cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqIFRoZSBvYmplY3QgdG8gcHJpbnQgb3V0LlxuICogQHBhcmFtIHtPYmplY3R9IG9wdHMgT3B0aW9uYWwgb3B0aW9ucyBvYmplY3QgdGhhdCBhbHRlcnMgdGhlIG91dHB1dC5cbiAqL1xuLyogbGVnYWN5OiBvYmosIHNob3dIaWRkZW4sIGRlcHRoLCBjb2xvcnMqL1xuZnVuY3Rpb24gaW5zcGVjdChvYmosIG9wdHMpIHtcbiAgLy8gZGVmYXVsdCBvcHRpb25zXG4gIHZhciBjdHggPSB7XG4gICAgc2VlbjogW10sXG4gICAgc3R5bGl6ZTogc3R5bGl6ZU5vQ29sb3JcbiAgfTtcbiAgLy8gbGVnYWN5Li4uXG4gIGlmIChhcmd1bWVudHMubGVuZ3RoID49IDMpIGN0eC5kZXB0aCA9IGFyZ3VtZW50c1syXTtcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPj0gNCkgY3R4LmNvbG9ycyA9IGFyZ3VtZW50c1szXTtcbiAgaWYgKGlzQm9vbGVhbihvcHRzKSkge1xuICAgIC8vIGxlZ2FjeS4uLlxuICAgIGN0eC5zaG93SGlkZGVuID0gb3B0cztcbiAgfSBlbHNlIGlmIChvcHRzKSB7XG4gICAgLy8gZ290IGFuIFwib3B0aW9uc1wiIG9iamVjdFxuICAgIGV4cG9ydHMuX2V4dGVuZChjdHgsIG9wdHMpO1xuICB9XG4gIC8vIHNldCBkZWZhdWx0IG9wdGlvbnNcbiAgaWYgKGlzVW5kZWZpbmVkKGN0eC5zaG93SGlkZGVuKSkgY3R4LnNob3dIaWRkZW4gPSBmYWxzZTtcbiAgaWYgKGlzVW5kZWZpbmVkKGN0eC5kZXB0aCkpIGN0eC5kZXB0aCA9IDI7XG4gIGlmIChpc1VuZGVmaW5lZChjdHguY29sb3JzKSkgY3R4LmNvbG9ycyA9IGZhbHNlO1xuICBpZiAoaXNVbmRlZmluZWQoY3R4LmN1c3RvbUluc3BlY3QpKSBjdHguY3VzdG9tSW5zcGVjdCA9IHRydWU7XG4gIGlmIChjdHguY29sb3JzKSBjdHguc3R5bGl6ZSA9IHN0eWxpemVXaXRoQ29sb3I7XG4gIHJldHVybiBmb3JtYXRWYWx1ZShjdHgsIG9iaiwgY3R4LmRlcHRoKTtcbn1cbmV4cG9ydHMuaW5zcGVjdCA9IGluc3BlY3Q7XG5cblxuLy8gaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BTlNJX2VzY2FwZV9jb2RlI2dyYXBoaWNzXG5pbnNwZWN0LmNvbG9ycyA9IHtcbiAgJ2JvbGQnIDogWzEsIDIyXSxcbiAgJ2l0YWxpYycgOiBbMywgMjNdLFxuICAndW5kZXJsaW5lJyA6IFs0LCAyNF0sXG4gICdpbnZlcnNlJyA6IFs3LCAyN10sXG4gICd3aGl0ZScgOiBbMzcsIDM5XSxcbiAgJ2dyZXknIDogWzkwLCAzOV0sXG4gICdibGFjaycgOiBbMzAsIDM5XSxcbiAgJ2JsdWUnIDogWzM0LCAzOV0sXG4gICdjeWFuJyA6IFszNiwgMzldLFxuICAnZ3JlZW4nIDogWzMyLCAzOV0sXG4gICdtYWdlbnRhJyA6IFszNSwgMzldLFxuICAncmVkJyA6IFszMSwgMzldLFxuICAneWVsbG93JyA6IFszMywgMzldXG59O1xuXG4vLyBEb24ndCB1c2UgJ2JsdWUnIG5vdCB2aXNpYmxlIG9uIGNtZC5leGVcbmluc3BlY3Quc3R5bGVzID0ge1xuICAnc3BlY2lhbCc6ICdjeWFuJyxcbiAgJ251bWJlcic6ICd5ZWxsb3cnLFxuICAnYm9vbGVhbic6ICd5ZWxsb3cnLFxuICAndW5kZWZpbmVkJzogJ2dyZXknLFxuICAnbnVsbCc6ICdib2xkJyxcbiAgJ3N0cmluZyc6ICdncmVlbicsXG4gICdkYXRlJzogJ21hZ2VudGEnLFxuICAvLyBcIm5hbWVcIjogaW50ZW50aW9uYWxseSBub3Qgc3R5bGluZ1xuICAncmVnZXhwJzogJ3JlZCdcbn07XG5cblxuZnVuY3Rpb24gc3R5bGl6ZVdpdGhDb2xvcihzdHIsIHN0eWxlVHlwZSkge1xuICB2YXIgc3R5bGUgPSBpbnNwZWN0LnN0eWxlc1tzdHlsZVR5cGVdO1xuXG4gIGlmIChzdHlsZSkge1xuICAgIHJldHVybiAnXFx1MDAxYlsnICsgaW5zcGVjdC5jb2xvcnNbc3R5bGVdWzBdICsgJ20nICsgc3RyICtcbiAgICAgICAgICAgJ1xcdTAwMWJbJyArIGluc3BlY3QuY29sb3JzW3N0eWxlXVsxXSArICdtJztcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gc3RyO1xuICB9XG59XG5cblxuZnVuY3Rpb24gc3R5bGl6ZU5vQ29sb3Ioc3RyLCBzdHlsZVR5cGUpIHtcbiAgcmV0dXJuIHN0cjtcbn1cblxuXG5mdW5jdGlvbiBhcnJheVRvSGFzaChhcnJheSkge1xuICB2YXIgaGFzaCA9IHt9O1xuXG4gIGFycmF5LmZvckVhY2goZnVuY3Rpb24odmFsLCBpZHgpIHtcbiAgICBoYXNoW3ZhbF0gPSB0cnVlO1xuICB9KTtcblxuICByZXR1cm4gaGFzaDtcbn1cblxuXG5mdW5jdGlvbiBmb3JtYXRWYWx1ZShjdHgsIHZhbHVlLCByZWN1cnNlVGltZXMpIHtcbiAgLy8gUHJvdmlkZSBhIGhvb2sgZm9yIHVzZXItc3BlY2lmaWVkIGluc3BlY3QgZnVuY3Rpb25zLlxuICAvLyBDaGVjayB0aGF0IHZhbHVlIGlzIGFuIG9iamVjdCB3aXRoIGFuIGluc3BlY3QgZnVuY3Rpb24gb24gaXRcbiAgaWYgKGN0eC5jdXN0b21JbnNwZWN0ICYmXG4gICAgICB2YWx1ZSAmJlxuICAgICAgaXNGdW5jdGlvbih2YWx1ZS5pbnNwZWN0KSAmJlxuICAgICAgLy8gRmlsdGVyIG91dCB0aGUgdXRpbCBtb2R1bGUsIGl0J3MgaW5zcGVjdCBmdW5jdGlvbiBpcyBzcGVjaWFsXG4gICAgICB2YWx1ZS5pbnNwZWN0ICE9PSBleHBvcnRzLmluc3BlY3QgJiZcbiAgICAgIC8vIEFsc28gZmlsdGVyIG91dCBhbnkgcHJvdG90eXBlIG9iamVjdHMgdXNpbmcgdGhlIGNpcmN1bGFyIGNoZWNrLlxuICAgICAgISh2YWx1ZS5jb25zdHJ1Y3RvciAmJiB2YWx1ZS5jb25zdHJ1Y3Rvci5wcm90b3R5cGUgPT09IHZhbHVlKSkge1xuICAgIHZhciByZXQgPSB2YWx1ZS5pbnNwZWN0KHJlY3Vyc2VUaW1lcywgY3R4KTtcbiAgICBpZiAoIWlzU3RyaW5nKHJldCkpIHtcbiAgICAgIHJldCA9IGZvcm1hdFZhbHVlKGN0eCwgcmV0LCByZWN1cnNlVGltZXMpO1xuICAgIH1cbiAgICByZXR1cm4gcmV0O1xuICB9XG5cbiAgLy8gUHJpbWl0aXZlIHR5cGVzIGNhbm5vdCBoYXZlIHByb3BlcnRpZXNcbiAgdmFyIHByaW1pdGl2ZSA9IGZvcm1hdFByaW1pdGl2ZShjdHgsIHZhbHVlKTtcbiAgaWYgKHByaW1pdGl2ZSkge1xuICAgIHJldHVybiBwcmltaXRpdmU7XG4gIH1cblxuICAvLyBMb29rIHVwIHRoZSBrZXlzIG9mIHRoZSBvYmplY3QuXG4gIHZhciBrZXlzID0gT2JqZWN0LmtleXModmFsdWUpO1xuICB2YXIgdmlzaWJsZUtleXMgPSBhcnJheVRvSGFzaChrZXlzKTtcblxuICBpZiAoY3R4LnNob3dIaWRkZW4pIHtcbiAgICBrZXlzID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModmFsdWUpO1xuICB9XG5cbiAgLy8gSUUgZG9lc24ndCBtYWtlIGVycm9yIGZpZWxkcyBub24tZW51bWVyYWJsZVxuICAvLyBodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvaWUvZHd3NTJzYnQodj12cy45NCkuYXNweFxuICBpZiAoaXNFcnJvcih2YWx1ZSlcbiAgICAgICYmIChrZXlzLmluZGV4T2YoJ21lc3NhZ2UnKSA+PSAwIHx8IGtleXMuaW5kZXhPZignZGVzY3JpcHRpb24nKSA+PSAwKSkge1xuICAgIHJldHVybiBmb3JtYXRFcnJvcih2YWx1ZSk7XG4gIH1cblxuICAvLyBTb21lIHR5cGUgb2Ygb2JqZWN0IHdpdGhvdXQgcHJvcGVydGllcyBjYW4gYmUgc2hvcnRjdXR0ZWQuXG4gIGlmIChrZXlzLmxlbmd0aCA9PT0gMCkge1xuICAgIGlmIChpc0Z1bmN0aW9uKHZhbHVlKSkge1xuICAgICAgdmFyIG5hbWUgPSB2YWx1ZS5uYW1lID8gJzogJyArIHZhbHVlLm5hbWUgOiAnJztcbiAgICAgIHJldHVybiBjdHguc3R5bGl6ZSgnW0Z1bmN0aW9uJyArIG5hbWUgKyAnXScsICdzcGVjaWFsJyk7XG4gICAgfVxuICAgIGlmIChpc1JlZ0V4cCh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiBjdHguc3R5bGl6ZShSZWdFeHAucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsdWUpLCAncmVnZXhwJyk7XG4gICAgfVxuICAgIGlmIChpc0RhdGUodmFsdWUpKSB7XG4gICAgICByZXR1cm4gY3R4LnN0eWxpemUoRGF0ZS5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh2YWx1ZSksICdkYXRlJyk7XG4gICAgfVxuICAgIGlmIChpc0Vycm9yKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIGZvcm1hdEVycm9yKHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICB2YXIgYmFzZSA9ICcnLCBhcnJheSA9IGZhbHNlLCBicmFjZXMgPSBbJ3snLCAnfSddO1xuXG4gIC8vIE1ha2UgQXJyYXkgc2F5IHRoYXQgdGhleSBhcmUgQXJyYXlcbiAgaWYgKGlzQXJyYXkodmFsdWUpKSB7XG4gICAgYXJyYXkgPSB0cnVlO1xuICAgIGJyYWNlcyA9IFsnWycsICddJ107XG4gIH1cblxuICAvLyBNYWtlIGZ1bmN0aW9ucyBzYXkgdGhhdCB0aGV5IGFyZSBmdW5jdGlvbnNcbiAgaWYgKGlzRnVuY3Rpb24odmFsdWUpKSB7XG4gICAgdmFyIG4gPSB2YWx1ZS5uYW1lID8gJzogJyArIHZhbHVlLm5hbWUgOiAnJztcbiAgICBiYXNlID0gJyBbRnVuY3Rpb24nICsgbiArICddJztcbiAgfVxuXG4gIC8vIE1ha2UgUmVnRXhwcyBzYXkgdGhhdCB0aGV5IGFyZSBSZWdFeHBzXG4gIGlmIChpc1JlZ0V4cCh2YWx1ZSkpIHtcbiAgICBiYXNlID0gJyAnICsgUmVnRXhwLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHZhbHVlKTtcbiAgfVxuXG4gIC8vIE1ha2UgZGF0ZXMgd2l0aCBwcm9wZXJ0aWVzIGZpcnN0IHNheSB0aGUgZGF0ZVxuICBpZiAoaXNEYXRlKHZhbHVlKSkge1xuICAgIGJhc2UgPSAnICcgKyBEYXRlLnByb3RvdHlwZS50b1VUQ1N0cmluZy5jYWxsKHZhbHVlKTtcbiAgfVxuXG4gIC8vIE1ha2UgZXJyb3Igd2l0aCBtZXNzYWdlIGZpcnN0IHNheSB0aGUgZXJyb3JcbiAgaWYgKGlzRXJyb3IodmFsdWUpKSB7XG4gICAgYmFzZSA9ICcgJyArIGZvcm1hdEVycm9yKHZhbHVlKTtcbiAgfVxuXG4gIGlmIChrZXlzLmxlbmd0aCA9PT0gMCAmJiAoIWFycmF5IHx8IHZhbHVlLmxlbmd0aCA9PSAwKSkge1xuICAgIHJldHVybiBicmFjZXNbMF0gKyBiYXNlICsgYnJhY2VzWzFdO1xuICB9XG5cbiAgaWYgKHJlY3Vyc2VUaW1lcyA8IDApIHtcbiAgICBpZiAoaXNSZWdFeHAodmFsdWUpKSB7XG4gICAgICByZXR1cm4gY3R4LnN0eWxpemUoUmVnRXhwLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHZhbHVlKSwgJ3JlZ2V4cCcpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gY3R4LnN0eWxpemUoJ1tPYmplY3RdJywgJ3NwZWNpYWwnKTtcbiAgICB9XG4gIH1cblxuICBjdHguc2Vlbi5wdXNoKHZhbHVlKTtcblxuICB2YXIgb3V0cHV0O1xuICBpZiAoYXJyYXkpIHtcbiAgICBvdXRwdXQgPSBmb3JtYXRBcnJheShjdHgsIHZhbHVlLCByZWN1cnNlVGltZXMsIHZpc2libGVLZXlzLCBrZXlzKTtcbiAgfSBlbHNlIHtcbiAgICBvdXRwdXQgPSBrZXlzLm1hcChmdW5jdGlvbihrZXkpIHtcbiAgICAgIHJldHVybiBmb3JtYXRQcm9wZXJ0eShjdHgsIHZhbHVlLCByZWN1cnNlVGltZXMsIHZpc2libGVLZXlzLCBrZXksIGFycmF5KTtcbiAgICB9KTtcbiAgfVxuXG4gIGN0eC5zZWVuLnBvcCgpO1xuXG4gIHJldHVybiByZWR1Y2VUb1NpbmdsZVN0cmluZyhvdXRwdXQsIGJhc2UsIGJyYWNlcyk7XG59XG5cblxuZnVuY3Rpb24gZm9ybWF0UHJpbWl0aXZlKGN0eCwgdmFsdWUpIHtcbiAgaWYgKGlzVW5kZWZpbmVkKHZhbHVlKSlcbiAgICByZXR1cm4gY3R4LnN0eWxpemUoJ3VuZGVmaW5lZCcsICd1bmRlZmluZWQnKTtcbiAgaWYgKGlzU3RyaW5nKHZhbHVlKSkge1xuICAgIHZhciBzaW1wbGUgPSAnXFwnJyArIEpTT04uc3RyaW5naWZ5KHZhbHVlKS5yZXBsYWNlKC9eXCJ8XCIkL2csICcnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoLycvZywgXCJcXFxcJ1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcXFxcIi9nLCAnXCInKSArICdcXCcnO1xuICAgIHJldHVybiBjdHguc3R5bGl6ZShzaW1wbGUsICdzdHJpbmcnKTtcbiAgfVxuICBpZiAoaXNOdW1iZXIodmFsdWUpKVxuICAgIHJldHVybiBjdHguc3R5bGl6ZSgnJyArIHZhbHVlLCAnbnVtYmVyJyk7XG4gIGlmIChpc0Jvb2xlYW4odmFsdWUpKVxuICAgIHJldHVybiBjdHguc3R5bGl6ZSgnJyArIHZhbHVlLCAnYm9vbGVhbicpO1xuICAvLyBGb3Igc29tZSByZWFzb24gdHlwZW9mIG51bGwgaXMgXCJvYmplY3RcIiwgc28gc3BlY2lhbCBjYXNlIGhlcmUuXG4gIGlmIChpc051bGwodmFsdWUpKVxuICAgIHJldHVybiBjdHguc3R5bGl6ZSgnbnVsbCcsICdudWxsJyk7XG59XG5cblxuZnVuY3Rpb24gZm9ybWF0RXJyb3IodmFsdWUpIHtcbiAgcmV0dXJuICdbJyArIEVycm9yLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHZhbHVlKSArICddJztcbn1cblxuXG5mdW5jdGlvbiBmb3JtYXRBcnJheShjdHgsIHZhbHVlLCByZWN1cnNlVGltZXMsIHZpc2libGVLZXlzLCBrZXlzKSB7XG4gIHZhciBvdXRwdXQgPSBbXTtcbiAgZm9yICh2YXIgaSA9IDAsIGwgPSB2YWx1ZS5sZW5ndGg7IGkgPCBsOyArK2kpIHtcbiAgICBpZiAoaGFzT3duUHJvcGVydHkodmFsdWUsIFN0cmluZyhpKSkpIHtcbiAgICAgIG91dHB1dC5wdXNoKGZvcm1hdFByb3BlcnR5KGN0eCwgdmFsdWUsIHJlY3Vyc2VUaW1lcywgdmlzaWJsZUtleXMsXG4gICAgICAgICAgU3RyaW5nKGkpLCB0cnVlKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dHB1dC5wdXNoKCcnKTtcbiAgICB9XG4gIH1cbiAga2V5cy5mb3JFYWNoKGZ1bmN0aW9uKGtleSkge1xuICAgIGlmICgha2V5Lm1hdGNoKC9eXFxkKyQvKSkge1xuICAgICAgb3V0cHV0LnB1c2goZm9ybWF0UHJvcGVydHkoY3R4LCB2YWx1ZSwgcmVjdXJzZVRpbWVzLCB2aXNpYmxlS2V5cyxcbiAgICAgICAgICBrZXksIHRydWUpKTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gb3V0cHV0O1xufVxuXG5cbmZ1bmN0aW9uIGZvcm1hdFByb3BlcnR5KGN0eCwgdmFsdWUsIHJlY3Vyc2VUaW1lcywgdmlzaWJsZUtleXMsIGtleSwgYXJyYXkpIHtcbiAgdmFyIG5hbWUsIHN0ciwgZGVzYztcbiAgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodmFsdWUsIGtleSkgfHwgeyB2YWx1ZTogdmFsdWVba2V5XSB9O1xuICBpZiAoZGVzYy5nZXQpIHtcbiAgICBpZiAoZGVzYy5zZXQpIHtcbiAgICAgIHN0ciA9IGN0eC5zdHlsaXplKCdbR2V0dGVyL1NldHRlcl0nLCAnc3BlY2lhbCcpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdHIgPSBjdHguc3R5bGl6ZSgnW0dldHRlcl0nLCAnc3BlY2lhbCcpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBpZiAoZGVzYy5zZXQpIHtcbiAgICAgIHN0ciA9IGN0eC5zdHlsaXplKCdbU2V0dGVyXScsICdzcGVjaWFsJyk7XG4gICAgfVxuICB9XG4gIGlmICghaGFzT3duUHJvcGVydHkodmlzaWJsZUtleXMsIGtleSkpIHtcbiAgICBuYW1lID0gJ1snICsga2V5ICsgJ10nO1xuICB9XG4gIGlmICghc3RyKSB7XG4gICAgaWYgKGN0eC5zZWVuLmluZGV4T2YoZGVzYy52YWx1ZSkgPCAwKSB7XG4gICAgICBpZiAoaXNOdWxsKHJlY3Vyc2VUaW1lcykpIHtcbiAgICAgICAgc3RyID0gZm9ybWF0VmFsdWUoY3R4LCBkZXNjLnZhbHVlLCBudWxsKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN0ciA9IGZvcm1hdFZhbHVlKGN0eCwgZGVzYy52YWx1ZSwgcmVjdXJzZVRpbWVzIC0gMSk7XG4gICAgICB9XG4gICAgICBpZiAoc3RyLmluZGV4T2YoJ1xcbicpID4gLTEpIHtcbiAgICAgICAgaWYgKGFycmF5KSB7XG4gICAgICAgICAgc3RyID0gc3RyLnNwbGl0KCdcXG4nKS5tYXAoZnVuY3Rpb24obGluZSkge1xuICAgICAgICAgICAgcmV0dXJuICcgICcgKyBsaW5lO1xuICAgICAgICAgIH0pLmpvaW4oJ1xcbicpLnN1YnN0cigyKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzdHIgPSAnXFxuJyArIHN0ci5zcGxpdCgnXFxuJykubWFwKGZ1bmN0aW9uKGxpbmUpIHtcbiAgICAgICAgICAgIHJldHVybiAnICAgJyArIGxpbmU7XG4gICAgICAgICAgfSkuam9pbignXFxuJyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgc3RyID0gY3R4LnN0eWxpemUoJ1tDaXJjdWxhcl0nLCAnc3BlY2lhbCcpO1xuICAgIH1cbiAgfVxuICBpZiAoaXNVbmRlZmluZWQobmFtZSkpIHtcbiAgICBpZiAoYXJyYXkgJiYga2V5Lm1hdGNoKC9eXFxkKyQvKSkge1xuICAgICAgcmV0dXJuIHN0cjtcbiAgICB9XG4gICAgbmFtZSA9IEpTT04uc3RyaW5naWZ5KCcnICsga2V5KTtcbiAgICBpZiAobmFtZS5tYXRjaCgvXlwiKFthLXpBLVpfXVthLXpBLVpfMC05XSopXCIkLykpIHtcbiAgICAgIG5hbWUgPSBuYW1lLnN1YnN0cigxLCBuYW1lLmxlbmd0aCAtIDIpO1xuICAgICAgbmFtZSA9IGN0eC5zdHlsaXplKG5hbWUsICduYW1lJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5hbWUgPSBuYW1lLnJlcGxhY2UoLycvZywgXCJcXFxcJ1wiKVxuICAgICAgICAgICAgICAgICAucmVwbGFjZSgvXFxcXFwiL2csICdcIicpXG4gICAgICAgICAgICAgICAgIC5yZXBsYWNlKC8oXlwifFwiJCkvZywgXCInXCIpO1xuICAgICAgbmFtZSA9IGN0eC5zdHlsaXplKG5hbWUsICdzdHJpbmcnKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbmFtZSArICc6ICcgKyBzdHI7XG59XG5cblxuZnVuY3Rpb24gcmVkdWNlVG9TaW5nbGVTdHJpbmcob3V0cHV0LCBiYXNlLCBicmFjZXMpIHtcbiAgdmFyIG51bUxpbmVzRXN0ID0gMDtcbiAgdmFyIGxlbmd0aCA9IG91dHB1dC5yZWR1Y2UoZnVuY3Rpb24ocHJldiwgY3VyKSB7XG4gICAgbnVtTGluZXNFc3QrKztcbiAgICBpZiAoY3VyLmluZGV4T2YoJ1xcbicpID49IDApIG51bUxpbmVzRXN0Kys7XG4gICAgcmV0dXJuIHByZXYgKyBjdXIucmVwbGFjZSgvXFx1MDAxYlxcW1xcZFxcZD9tL2csICcnKS5sZW5ndGggKyAxO1xuICB9LCAwKTtcblxuICBpZiAobGVuZ3RoID4gNjApIHtcbiAgICByZXR1cm4gYnJhY2VzWzBdICtcbiAgICAgICAgICAgKGJhc2UgPT09ICcnID8gJycgOiBiYXNlICsgJ1xcbiAnKSArXG4gICAgICAgICAgICcgJyArXG4gICAgICAgICAgIG91dHB1dC5qb2luKCcsXFxuICAnKSArXG4gICAgICAgICAgICcgJyArXG4gICAgICAgICAgIGJyYWNlc1sxXTtcbiAgfVxuXG4gIHJldHVybiBicmFjZXNbMF0gKyBiYXNlICsgJyAnICsgb3V0cHV0LmpvaW4oJywgJykgKyAnICcgKyBicmFjZXNbMV07XG59XG5cblxuLy8gTk9URTogVGhlc2UgdHlwZSBjaGVja2luZyBmdW5jdGlvbnMgaW50ZW50aW9uYWxseSBkb24ndCB1c2UgYGluc3RhbmNlb2ZgXG4vLyBiZWNhdXNlIGl0IGlzIGZyYWdpbGUgYW5kIGNhbiBiZSBlYXNpbHkgZmFrZWQgd2l0aCBgT2JqZWN0LmNyZWF0ZSgpYC5cbmZ1bmN0aW9uIGlzQXJyYXkoYXIpIHtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkoYXIpO1xufVxuZXhwb3J0cy5pc0FycmF5ID0gaXNBcnJheTtcblxuZnVuY3Rpb24gaXNCb29sZWFuKGFyZykge1xuICByZXR1cm4gdHlwZW9mIGFyZyA9PT0gJ2Jvb2xlYW4nO1xufVxuZXhwb3J0cy5pc0Jvb2xlYW4gPSBpc0Jvb2xlYW47XG5cbmZ1bmN0aW9uIGlzTnVsbChhcmcpIHtcbiAgcmV0dXJuIGFyZyA9PT0gbnVsbDtcbn1cbmV4cG9ydHMuaXNOdWxsID0gaXNOdWxsO1xuXG5mdW5jdGlvbiBpc051bGxPclVuZGVmaW5lZChhcmcpIHtcbiAgcmV0dXJuIGFyZyA9PSBudWxsO1xufVxuZXhwb3J0cy5pc051bGxPclVuZGVmaW5lZCA9IGlzTnVsbE9yVW5kZWZpbmVkO1xuXG5mdW5jdGlvbiBpc051bWJlcihhcmcpIHtcbiAgcmV0dXJuIHR5cGVvZiBhcmcgPT09ICdudW1iZXInO1xufVxuZXhwb3J0cy5pc051bWJlciA9IGlzTnVtYmVyO1xuXG5mdW5jdGlvbiBpc1N0cmluZyhhcmcpIHtcbiAgcmV0dXJuIHR5cGVvZiBhcmcgPT09ICdzdHJpbmcnO1xufVxuZXhwb3J0cy5pc1N0cmluZyA9IGlzU3RyaW5nO1xuXG5mdW5jdGlvbiBpc1N5bWJvbChhcmcpIHtcbiAgcmV0dXJuIHR5cGVvZiBhcmcgPT09ICdzeW1ib2wnO1xufVxuZXhwb3J0cy5pc1N5bWJvbCA9IGlzU3ltYm9sO1xuXG5mdW5jdGlvbiBpc1VuZGVmaW5lZChhcmcpIHtcbiAgcmV0dXJuIGFyZyA9PT0gdm9pZCAwO1xufVxuZXhwb3J0cy5pc1VuZGVmaW5lZCA9IGlzVW5kZWZpbmVkO1xuXG5mdW5jdGlvbiBpc1JlZ0V4cChyZSkge1xuICByZXR1cm4gaXNPYmplY3QocmUpICYmIG9iamVjdFRvU3RyaW5nKHJlKSA9PT0gJ1tvYmplY3QgUmVnRXhwXSc7XG59XG5leHBvcnRzLmlzUmVnRXhwID0gaXNSZWdFeHA7XG5cbmZ1bmN0aW9uIGlzT2JqZWN0KGFyZykge1xuICByZXR1cm4gdHlwZW9mIGFyZyA9PT0gJ29iamVjdCcgJiYgYXJnICE9PSBudWxsO1xufVxuZXhwb3J0cy5pc09iamVjdCA9IGlzT2JqZWN0O1xuXG5mdW5jdGlvbiBpc0RhdGUoZCkge1xuICByZXR1cm4gaXNPYmplY3QoZCkgJiYgb2JqZWN0VG9TdHJpbmcoZCkgPT09ICdbb2JqZWN0IERhdGVdJztcbn1cbmV4cG9ydHMuaXNEYXRlID0gaXNEYXRlO1xuXG5mdW5jdGlvbiBpc0Vycm9yKGUpIHtcbiAgcmV0dXJuIGlzT2JqZWN0KGUpICYmXG4gICAgICAob2JqZWN0VG9TdHJpbmcoZSkgPT09ICdbb2JqZWN0IEVycm9yXScgfHwgZSBpbnN0YW5jZW9mIEVycm9yKTtcbn1cbmV4cG9ydHMuaXNFcnJvciA9IGlzRXJyb3I7XG5cbmZ1bmN0aW9uIGlzRnVuY3Rpb24oYXJnKSB7XG4gIHJldHVybiB0eXBlb2YgYXJnID09PSAnZnVuY3Rpb24nO1xufVxuZXhwb3J0cy5pc0Z1bmN0aW9uID0gaXNGdW5jdGlvbjtcblxuZnVuY3Rpb24gaXNQcmltaXRpdmUoYXJnKSB7XG4gIHJldHVybiBhcmcgPT09IG51bGwgfHxcbiAgICAgICAgIHR5cGVvZiBhcmcgPT09ICdib29sZWFuJyB8fFxuICAgICAgICAgdHlwZW9mIGFyZyA9PT0gJ251bWJlcicgfHxcbiAgICAgICAgIHR5cGVvZiBhcmcgPT09ICdzdHJpbmcnIHx8XG4gICAgICAgICB0eXBlb2YgYXJnID09PSAnc3ltYm9sJyB8fCAgLy8gRVM2IHN5bWJvbFxuICAgICAgICAgdHlwZW9mIGFyZyA9PT0gJ3VuZGVmaW5lZCc7XG59XG5leHBvcnRzLmlzUHJpbWl0aXZlID0gaXNQcmltaXRpdmU7XG5cbmV4cG9ydHMuaXNCdWZmZXIgPSByZXF1aXJlKCcuL3N1cHBvcnQvaXNCdWZmZXInKTtcblxuZnVuY3Rpb24gb2JqZWN0VG9TdHJpbmcobykge1xuICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG8pO1xufVxuXG5cbmZ1bmN0aW9uIHBhZChuKSB7XG4gIHJldHVybiBuIDwgMTAgPyAnMCcgKyBuLnRvU3RyaW5nKDEwKSA6IG4udG9TdHJpbmcoMTApO1xufVxuXG5cbnZhciBtb250aHMgPSBbJ0phbicsICdGZWInLCAnTWFyJywgJ0FwcicsICdNYXknLCAnSnVuJywgJ0p1bCcsICdBdWcnLCAnU2VwJyxcbiAgICAgICAgICAgICAgJ09jdCcsICdOb3YnLCAnRGVjJ107XG5cbi8vIDI2IEZlYiAxNjoxOTozNFxuZnVuY3Rpb24gdGltZXN0YW1wKCkge1xuICB2YXIgZCA9IG5ldyBEYXRlKCk7XG4gIHZhciB0aW1lID0gW3BhZChkLmdldEhvdXJzKCkpLFxuICAgICAgICAgICAgICBwYWQoZC5nZXRNaW51dGVzKCkpLFxuICAgICAgICAgICAgICBwYWQoZC5nZXRTZWNvbmRzKCkpXS5qb2luKCc6Jyk7XG4gIHJldHVybiBbZC5nZXREYXRlKCksIG1vbnRoc1tkLmdldE1vbnRoKCldLCB0aW1lXS5qb2luKCcgJyk7XG59XG5cblxuLy8gbG9nIGlzIGp1c3QgYSB0aGluIHdyYXBwZXIgdG8gY29uc29sZS5sb2cgdGhhdCBwcmVwZW5kcyBhIHRpbWVzdGFtcFxuZXhwb3J0cy5sb2cgPSBmdW5jdGlvbigpIHtcbiAgY29uc29sZS5sb2coJyVzIC0gJXMnLCB0aW1lc3RhbXAoKSwgZXhwb3J0cy5mb3JtYXQuYXBwbHkoZXhwb3J0cywgYXJndW1lbnRzKSk7XG59O1xuXG5cbi8qKlxuICogSW5oZXJpdCB0aGUgcHJvdG90eXBlIG1ldGhvZHMgZnJvbSBvbmUgY29uc3RydWN0b3IgaW50byBhbm90aGVyLlxuICpcbiAqIFRoZSBGdW5jdGlvbi5wcm90b3R5cGUuaW5oZXJpdHMgZnJvbSBsYW5nLmpzIHJld3JpdHRlbiBhcyBhIHN0YW5kYWxvbmVcbiAqIGZ1bmN0aW9uIChub3Qgb24gRnVuY3Rpb24ucHJvdG90eXBlKS4gTk9URTogSWYgdGhpcyBmaWxlIGlzIHRvIGJlIGxvYWRlZFxuICogZHVyaW5nIGJvb3RzdHJhcHBpbmcgdGhpcyBmdW5jdGlvbiBuZWVkcyB0byBiZSByZXdyaXR0ZW4gdXNpbmcgc29tZSBuYXRpdmVcbiAqIGZ1bmN0aW9ucyBhcyBwcm90b3R5cGUgc2V0dXAgdXNpbmcgbm9ybWFsIEphdmFTY3JpcHQgZG9lcyBub3Qgd29yayBhc1xuICogZXhwZWN0ZWQgZHVyaW5nIGJvb3RzdHJhcHBpbmcgKHNlZSBtaXJyb3IuanMgaW4gcjExNDkwMykuXG4gKlxuICogQHBhcmFtIHtmdW5jdGlvbn0gY3RvciBDb25zdHJ1Y3RvciBmdW5jdGlvbiB3aGljaCBuZWVkcyB0byBpbmhlcml0IHRoZVxuICogICAgIHByb3RvdHlwZS5cbiAqIEBwYXJhbSB7ZnVuY3Rpb259IHN1cGVyQ3RvciBDb25zdHJ1Y3RvciBmdW5jdGlvbiB0byBpbmhlcml0IHByb3RvdHlwZSBmcm9tLlxuICovXG5leHBvcnRzLmluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcblxuZXhwb3J0cy5fZXh0ZW5kID0gZnVuY3Rpb24ob3JpZ2luLCBhZGQpIHtcbiAgLy8gRG9uJ3QgZG8gYW55dGhpbmcgaWYgYWRkIGlzbid0IGFuIG9iamVjdFxuICBpZiAoIWFkZCB8fCAhaXNPYmplY3QoYWRkKSkgcmV0dXJuIG9yaWdpbjtcblxuICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKGFkZCk7XG4gIHZhciBpID0ga2V5cy5sZW5ndGg7XG4gIHdoaWxlIChpLS0pIHtcbiAgICBvcmlnaW5ba2V5c1tpXV0gPSBhZGRba2V5c1tpXV07XG4gIH1cbiAgcmV0dXJuIG9yaWdpbjtcbn07XG5cbmZ1bmN0aW9uIGhhc093blByb3BlcnR5KG9iaiwgcHJvcCkge1xuICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCk7XG59XG4iLCJ2YXIgaW5kZXhPZiA9IHJlcXVpcmUoJ2luZGV4b2YnKTtcblxudmFyIE9iamVjdF9rZXlzID0gZnVuY3Rpb24gKG9iaikge1xuICAgIGlmIChPYmplY3Qua2V5cykgcmV0dXJuIE9iamVjdC5rZXlzKG9iailcbiAgICBlbHNlIHtcbiAgICAgICAgdmFyIHJlcyA9IFtdO1xuICAgICAgICBmb3IgKHZhciBrZXkgaW4gb2JqKSByZXMucHVzaChrZXkpXG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxufTtcblxudmFyIGZvckVhY2ggPSBmdW5jdGlvbiAoeHMsIGZuKSB7XG4gICAgaWYgKHhzLmZvckVhY2gpIHJldHVybiB4cy5mb3JFYWNoKGZuKVxuICAgIGVsc2UgZm9yICh2YXIgaSA9IDA7IGkgPCB4cy5sZW5ndGg7IGkrKykge1xuICAgICAgICBmbih4c1tpXSwgaSwgeHMpO1xuICAgIH1cbn07XG5cbnZhciBkZWZpbmVQcm9wID0gKGZ1bmN0aW9uKCkge1xuICAgIHRyeSB7XG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwgJ18nLCB7fSk7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbihvYmosIG5hbWUsIHZhbHVlKSB7XG4gICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBuYW1lLCB7XG4gICAgICAgICAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZVxuICAgICAgICAgICAgfSlcbiAgICAgICAgfTtcbiAgICB9IGNhdGNoKGUpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKG9iaiwgbmFtZSwgdmFsdWUpIHtcbiAgICAgICAgICAgIG9ialtuYW1lXSA9IHZhbHVlO1xuICAgICAgICB9O1xuICAgIH1cbn0oKSk7XG5cbnZhciBnbG9iYWxzID0gWydBcnJheScsICdCb29sZWFuJywgJ0RhdGUnLCAnRXJyb3InLCAnRXZhbEVycm9yJywgJ0Z1bmN0aW9uJyxcbidJbmZpbml0eScsICdKU09OJywgJ01hdGgnLCAnTmFOJywgJ051bWJlcicsICdPYmplY3QnLCAnUmFuZ2VFcnJvcicsXG4nUmVmZXJlbmNlRXJyb3InLCAnUmVnRXhwJywgJ1N0cmluZycsICdTeW50YXhFcnJvcicsICdUeXBlRXJyb3InLCAnVVJJRXJyb3InLFxuJ2RlY29kZVVSSScsICdkZWNvZGVVUklDb21wb25lbnQnLCAnZW5jb2RlVVJJJywgJ2VuY29kZVVSSUNvbXBvbmVudCcsICdlc2NhcGUnLFxuJ2V2YWwnLCAnaXNGaW5pdGUnLCAnaXNOYU4nLCAncGFyc2VGbG9hdCcsICdwYXJzZUludCcsICd1bmRlZmluZWQnLCAndW5lc2NhcGUnXTtcblxuZnVuY3Rpb24gQ29udGV4dCgpIHt9XG5Db250ZXh0LnByb3RvdHlwZSA9IHt9O1xuXG52YXIgU2NyaXB0ID0gZXhwb3J0cy5TY3JpcHQgPSBmdW5jdGlvbiBOb2RlU2NyaXB0IChjb2RlKSB7XG4gICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFNjcmlwdCkpIHJldHVybiBuZXcgU2NyaXB0KGNvZGUpO1xuICAgIHRoaXMuY29kZSA9IGNvZGU7XG59O1xuXG5TY3JpcHQucHJvdG90eXBlLnJ1bkluQ29udGV4dCA9IGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gICAgaWYgKCEoY29udGV4dCBpbnN0YW5jZW9mIENvbnRleHQpKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJuZWVkcyBhICdjb250ZXh0JyBhcmd1bWVudC5cIik7XG4gICAgfVxuICAgIFxuICAgIHZhciBpZnJhbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpZnJhbWUnKTtcbiAgICBpZiAoIWlmcmFtZS5zdHlsZSkgaWZyYW1lLnN0eWxlID0ge307XG4gICAgaWZyYW1lLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgXG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpZnJhbWUpO1xuICAgIFxuICAgIHZhciB3aW4gPSBpZnJhbWUuY29udGVudFdpbmRvdztcbiAgICB2YXIgd0V2YWwgPSB3aW4uZXZhbCwgd0V4ZWNTY3JpcHQgPSB3aW4uZXhlY1NjcmlwdDtcblxuICAgIGlmICghd0V2YWwgJiYgd0V4ZWNTY3JpcHQpIHtcbiAgICAgICAgLy8gd2luLmV2YWwoKSBtYWdpY2FsbHkgYXBwZWFycyB3aGVuIHRoaXMgaXMgY2FsbGVkIGluIElFOlxuICAgICAgICB3RXhlY1NjcmlwdC5jYWxsKHdpbiwgJ251bGwnKTtcbiAgICAgICAgd0V2YWwgPSB3aW4uZXZhbDtcbiAgICB9XG4gICAgXG4gICAgZm9yRWFjaChPYmplY3Rfa2V5cyhjb250ZXh0KSwgZnVuY3Rpb24gKGtleSkge1xuICAgICAgICB3aW5ba2V5XSA9IGNvbnRleHRba2V5XTtcbiAgICB9KTtcbiAgICBmb3JFYWNoKGdsb2JhbHMsIGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgaWYgKGNvbnRleHRba2V5XSkge1xuICAgICAgICAgICAgd2luW2tleV0gPSBjb250ZXh0W2tleV07XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBcbiAgICB2YXIgd2luS2V5cyA9IE9iamVjdF9rZXlzKHdpbik7XG5cbiAgICB2YXIgcmVzID0gd0V2YWwuY2FsbCh3aW4sIHRoaXMuY29kZSk7XG4gICAgXG4gICAgZm9yRWFjaChPYmplY3Rfa2V5cyh3aW4pLCBmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgIC8vIEF2b2lkIGNvcHlpbmcgY2lyY3VsYXIgb2JqZWN0cyBsaWtlIGB0b3BgIGFuZCBgd2luZG93YCBieSBvbmx5XG4gICAgICAgIC8vIHVwZGF0aW5nIGV4aXN0aW5nIGNvbnRleHQgcHJvcGVydGllcyBvciBuZXcgcHJvcGVydGllcyBpbiB0aGUgYHdpbmBcbiAgICAgICAgLy8gdGhhdCB3YXMgb25seSBpbnRyb2R1Y2VkIGFmdGVyIHRoZSBldmFsLlxuICAgICAgICBpZiAoa2V5IGluIGNvbnRleHQgfHwgaW5kZXhPZih3aW5LZXlzLCBrZXkpID09PSAtMSkge1xuICAgICAgICAgICAgY29udGV4dFtrZXldID0gd2luW2tleV07XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIGZvckVhY2goZ2xvYmFscywgZnVuY3Rpb24gKGtleSkge1xuICAgICAgICBpZiAoIShrZXkgaW4gY29udGV4dCkpIHtcbiAgICAgICAgICAgIGRlZmluZVByb3AoY29udGV4dCwga2V5LCB3aW5ba2V5XSk7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBcbiAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGlmcmFtZSk7XG4gICAgXG4gICAgcmV0dXJuIHJlcztcbn07XG5cblNjcmlwdC5wcm90b3R5cGUucnVuSW5UaGlzQ29udGV4dCA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gZXZhbCh0aGlzLmNvZGUpOyAvLyBtYXliZS4uLlxufTtcblxuU2NyaXB0LnByb3RvdHlwZS5ydW5Jbk5ld0NvbnRleHQgPSBmdW5jdGlvbiAoY29udGV4dCkge1xuICAgIHZhciBjdHggPSBTY3JpcHQuY3JlYXRlQ29udGV4dChjb250ZXh0KTtcbiAgICB2YXIgcmVzID0gdGhpcy5ydW5JbkNvbnRleHQoY3R4KTtcblxuICAgIGZvckVhY2goT2JqZWN0X2tleXMoY3R4KSwgZnVuY3Rpb24gKGtleSkge1xuICAgICAgICBjb250ZXh0W2tleV0gPSBjdHhba2V5XTtcbiAgICB9KTtcblxuICAgIHJldHVybiByZXM7XG59O1xuXG5mb3JFYWNoKE9iamVjdF9rZXlzKFNjcmlwdC5wcm90b3R5cGUpLCBmdW5jdGlvbiAobmFtZSkge1xuICAgIGV4cG9ydHNbbmFtZV0gPSBTY3JpcHRbbmFtZV0gPSBmdW5jdGlvbiAoY29kZSkge1xuICAgICAgICB2YXIgcyA9IFNjcmlwdChjb2RlKTtcbiAgICAgICAgcmV0dXJuIHNbbmFtZV0uYXBwbHkocywgW10uc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpKTtcbiAgICB9O1xufSk7XG5cbmV4cG9ydHMuY3JlYXRlU2NyaXB0ID0gZnVuY3Rpb24gKGNvZGUpIHtcbiAgICByZXR1cm4gZXhwb3J0cy5TY3JpcHQoY29kZSk7XG59O1xuXG5leHBvcnRzLmNyZWF0ZUNvbnRleHQgPSBTY3JpcHQuY3JlYXRlQ29udGV4dCA9IGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gICAgdmFyIGNvcHkgPSBuZXcgQ29udGV4dCgpO1xuICAgIGlmKHR5cGVvZiBjb250ZXh0ID09PSAnb2JqZWN0Jykge1xuICAgICAgICBmb3JFYWNoKE9iamVjdF9rZXlzKGNvbnRleHQpLCBmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgICAgICBjb3B5W2tleV0gPSBjb250ZXh0W2tleV07XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gY29weTtcbn07XG4iLCJ2YXIgYnVuZGxlRm4gPSBhcmd1bWVudHNbM107XG52YXIgc291cmNlcyA9IGFyZ3VtZW50c1s0XTtcbnZhciBjYWNoZSA9IGFyZ3VtZW50c1s1XTtcblxudmFyIHN0cmluZ2lmeSA9IEpTT04uc3RyaW5naWZ5O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChmbiwgb3B0aW9ucykge1xuICAgIHZhciB3a2V5O1xuICAgIHZhciBjYWNoZUtleXMgPSBPYmplY3Qua2V5cyhjYWNoZSk7XG5cbiAgICBmb3IgKHZhciBpID0gMCwgbCA9IGNhY2hlS2V5cy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgdmFyIGtleSA9IGNhY2hlS2V5c1tpXTtcbiAgICAgICAgdmFyIGV4cCA9IGNhY2hlW2tleV0uZXhwb3J0cztcbiAgICAgICAgLy8gVXNpbmcgYmFiZWwgYXMgYSB0cmFuc3BpbGVyIHRvIHVzZSBlc21vZHVsZSwgdGhlIGV4cG9ydCB3aWxsIGFsd2F5c1xuICAgICAgICAvLyBiZSBhbiBvYmplY3Qgd2l0aCB0aGUgZGVmYXVsdCBleHBvcnQgYXMgYSBwcm9wZXJ0eSBvZiBpdC4gVG8gZW5zdXJlXG4gICAgICAgIC8vIHRoZSBleGlzdGluZyBhcGkgYW5kIGJhYmVsIGVzbW9kdWxlIGV4cG9ydHMgYXJlIGJvdGggc3VwcG9ydGVkIHdlXG4gICAgICAgIC8vIGNoZWNrIGZvciBib3RoXG4gICAgICAgIGlmIChleHAgPT09IGZuIHx8IGV4cCAmJiBleHAuZGVmYXVsdCA9PT0gZm4pIHtcbiAgICAgICAgICAgIHdrZXkgPSBrZXk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlmICghd2tleSkge1xuICAgICAgICB3a2V5ID0gTWF0aC5mbG9vcihNYXRoLnBvdygxNiwgOCkgKiBNYXRoLnJhbmRvbSgpKS50b1N0cmluZygxNik7XG4gICAgICAgIHZhciB3Y2FjaGUgPSB7fTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIGwgPSBjYWNoZUtleXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgICAgICB2YXIga2V5ID0gY2FjaGVLZXlzW2ldO1xuICAgICAgICAgICAgd2NhY2hlW2tleV0gPSBrZXk7XG4gICAgICAgIH1cbiAgICAgICAgc291cmNlc1t3a2V5XSA9IFtcbiAgICAgICAgICAgIEZ1bmN0aW9uKFsncmVxdWlyZScsJ21vZHVsZScsJ2V4cG9ydHMnXSwgJygnICsgZm4gKyAnKShzZWxmKScpLFxuICAgICAgICAgICAgd2NhY2hlXG4gICAgICAgIF07XG4gICAgfVxuICAgIHZhciBza2V5ID0gTWF0aC5mbG9vcihNYXRoLnBvdygxNiwgOCkgKiBNYXRoLnJhbmRvbSgpKS50b1N0cmluZygxNik7XG5cbiAgICB2YXIgc2NhY2hlID0ge307IHNjYWNoZVt3a2V5XSA9IHdrZXk7XG4gICAgc291cmNlc1tza2V5XSA9IFtcbiAgICAgICAgRnVuY3Rpb24oWydyZXF1aXJlJ10sIChcbiAgICAgICAgICAgIC8vIHRyeSB0byBjYWxsIGRlZmF1bHQgaWYgZGVmaW5lZCB0byBhbHNvIHN1cHBvcnQgYmFiZWwgZXNtb2R1bGVcbiAgICAgICAgICAgIC8vIGV4cG9ydHNcbiAgICAgICAgICAgICd2YXIgZiA9IHJlcXVpcmUoJyArIHN0cmluZ2lmeSh3a2V5KSArICcpOycgK1xuICAgICAgICAgICAgJyhmLmRlZmF1bHQgPyBmLmRlZmF1bHQgOiBmKShzZWxmKTsnXG4gICAgICAgICkpLFxuICAgICAgICBzY2FjaGVcbiAgICBdO1xuXG4gICAgdmFyIHdvcmtlclNvdXJjZXMgPSB7fTtcbiAgICByZXNvbHZlU291cmNlcyhza2V5KTtcblxuICAgIGZ1bmN0aW9uIHJlc29sdmVTb3VyY2VzKGtleSkge1xuICAgICAgICB3b3JrZXJTb3VyY2VzW2tleV0gPSB0cnVlO1xuXG4gICAgICAgIGZvciAodmFyIGRlcFBhdGggaW4gc291cmNlc1trZXldWzFdKSB7XG4gICAgICAgICAgICB2YXIgZGVwS2V5ID0gc291cmNlc1trZXldWzFdW2RlcFBhdGhdO1xuICAgICAgICAgICAgaWYgKCF3b3JrZXJTb3VyY2VzW2RlcEtleV0pIHtcbiAgICAgICAgICAgICAgICByZXNvbHZlU291cmNlcyhkZXBLZXkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgdmFyIHNyYyA9ICcoJyArIGJ1bmRsZUZuICsgJykoeydcbiAgICAgICAgKyBPYmplY3Qua2V5cyh3b3JrZXJTb3VyY2VzKS5tYXAoZnVuY3Rpb24gKGtleSkge1xuICAgICAgICAgICAgcmV0dXJuIHN0cmluZ2lmeShrZXkpICsgJzpbJ1xuICAgICAgICAgICAgICAgICsgc291cmNlc1trZXldWzBdXG4gICAgICAgICAgICAgICAgKyAnLCcgKyBzdHJpbmdpZnkoc291cmNlc1trZXldWzFdKSArICddJ1xuICAgICAgICAgICAgO1xuICAgICAgICB9KS5qb2luKCcsJylcbiAgICAgICAgKyAnfSx7fSxbJyArIHN0cmluZ2lmeShza2V5KSArICddKSdcbiAgICA7XG5cbiAgICB2YXIgVVJMID0gd2luZG93LlVSTCB8fCB3aW5kb3cud2Via2l0VVJMIHx8IHdpbmRvdy5tb3pVUkwgfHwgd2luZG93Lm1zVVJMO1xuXG4gICAgdmFyIGJsb2IgPSBuZXcgQmxvYihbc3JjXSwgeyB0eXBlOiAndGV4dC9qYXZhc2NyaXB0JyB9KTtcbiAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLmJhcmUpIHsgcmV0dXJuIGJsb2I7IH1cbiAgICB2YXIgd29ya2VyVXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcbiAgICB2YXIgd29ya2VyID0gbmV3IFdvcmtlcih3b3JrZXJVcmwpO1xuICAgIHdvcmtlci5vYmplY3RVUkwgPSB3b3JrZXJVcmw7XG4gICAgcmV0dXJuIHdvcmtlcjtcbn07XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHdoaWNoXG53aGljaC5zeW5jID0gd2hpY2hTeW5jXG5cbnZhciBpc1dpbmRvd3MgPSBwcm9jZXNzLnBsYXRmb3JtID09PSAnd2luMzInIHx8XG4gICAgcHJvY2Vzcy5lbnYuT1NUWVBFID09PSAnY3lnd2luJyB8fFxuICAgIHByb2Nlc3MuZW52Lk9TVFlQRSA9PT0gJ21zeXMnXG5cbnZhciBwYXRoID0gcmVxdWlyZSgncGF0aCcpXG52YXIgQ09MT04gPSBpc1dpbmRvd3MgPyAnOycgOiAnOidcbnZhciBpc2V4ZSA9IHJlcXVpcmUoJ2lzZXhlJylcblxuZnVuY3Rpb24gZ2V0Tm90Rm91bmRFcnJvciAoY21kKSB7XG4gIHZhciBlciA9IG5ldyBFcnJvcignbm90IGZvdW5kOiAnICsgY21kKVxuICBlci5jb2RlID0gJ0VOT0VOVCdcblxuICByZXR1cm4gZXJcbn1cblxuZnVuY3Rpb24gZ2V0UGF0aEluZm8gKGNtZCwgb3B0KSB7XG4gIHZhciBjb2xvbiA9IG9wdC5jb2xvbiB8fCBDT0xPTlxuICB2YXIgcGF0aEVudiA9IG9wdC5wYXRoIHx8IHByb2Nlc3MuZW52LlBBVEggfHwgJydcbiAgdmFyIHBhdGhFeHQgPSBbJyddXG5cbiAgcGF0aEVudiA9IHBhdGhFbnYuc3BsaXQoY29sb24pXG5cbiAgdmFyIHBhdGhFeHRFeGUgPSAnJ1xuICBpZiAoaXNXaW5kb3dzKSB7XG4gICAgcGF0aEVudi51bnNoaWZ0KHByb2Nlc3MuY3dkKCkpXG4gICAgcGF0aEV4dEV4ZSA9IChvcHQucGF0aEV4dCB8fCBwcm9jZXNzLmVudi5QQVRIRVhUIHx8ICcuRVhFOy5DTUQ7LkJBVDsuQ09NJylcbiAgICBwYXRoRXh0ID0gcGF0aEV4dEV4ZS5zcGxpdChjb2xvbilcblxuXG4gICAgLy8gQWx3YXlzIHRlc3QgdGhlIGNtZCBpdHNlbGYgZmlyc3QuICBpc2V4ZSB3aWxsIGNoZWNrIHRvIG1ha2Ugc3VyZVxuICAgIC8vIGl0J3MgZm91bmQgaW4gdGhlIHBhdGhFeHQgc2V0LlxuICAgIGlmIChjbWQuaW5kZXhPZignLicpICE9PSAtMSAmJiBwYXRoRXh0WzBdICE9PSAnJylcbiAgICAgIHBhdGhFeHQudW5zaGlmdCgnJylcbiAgfVxuXG4gIC8vIElmIGl0IGhhcyBhIHNsYXNoLCB0aGVuIHdlIGRvbid0IGJvdGhlciBzZWFyY2hpbmcgdGhlIHBhdGhlbnYuXG4gIC8vIGp1c3QgY2hlY2sgdGhlIGZpbGUgaXRzZWxmLCBhbmQgdGhhdCdzIGl0LlxuICBpZiAoY21kLm1hdGNoKC9cXC8vKSB8fCBpc1dpbmRvd3MgJiYgY21kLm1hdGNoKC9cXFxcLykpXG4gICAgcGF0aEVudiA9IFsnJ11cblxuICByZXR1cm4ge1xuICAgIGVudjogcGF0aEVudixcbiAgICBleHQ6IHBhdGhFeHQsXG4gICAgZXh0RXhlOiBwYXRoRXh0RXhlXG4gIH1cbn1cblxuZnVuY3Rpb24gd2hpY2ggKGNtZCwgb3B0LCBjYikge1xuICBpZiAodHlwZW9mIG9wdCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGNiID0gb3B0XG4gICAgb3B0ID0ge31cbiAgfVxuXG4gIHZhciBpbmZvID0gZ2V0UGF0aEluZm8oY21kLCBvcHQpXG4gIHZhciBwYXRoRW52ID0gaW5mby5lbnZcbiAgdmFyIHBhdGhFeHQgPSBpbmZvLmV4dFxuICB2YXIgcGF0aEV4dEV4ZSA9IGluZm8uZXh0RXhlXG4gIHZhciBmb3VuZCA9IFtdXG5cbiAgOyhmdW5jdGlvbiBGIChpLCBsKSB7XG4gICAgaWYgKGkgPT09IGwpIHtcbiAgICAgIGlmIChvcHQuYWxsICYmIGZvdW5kLmxlbmd0aClcbiAgICAgICAgcmV0dXJuIGNiKG51bGwsIGZvdW5kKVxuICAgICAgZWxzZVxuICAgICAgICByZXR1cm4gY2IoZ2V0Tm90Rm91bmRFcnJvcihjbWQpKVxuICAgIH1cblxuICAgIHZhciBwYXRoUGFydCA9IHBhdGhFbnZbaV1cbiAgICBpZiAocGF0aFBhcnQuY2hhckF0KDApID09PSAnXCInICYmIHBhdGhQYXJ0LnNsaWNlKC0xKSA9PT0gJ1wiJylcbiAgICAgIHBhdGhQYXJ0ID0gcGF0aFBhcnQuc2xpY2UoMSwgLTEpXG5cbiAgICB2YXIgcCA9IHBhdGguam9pbihwYXRoUGFydCwgY21kKVxuICAgIGlmICghcGF0aFBhcnQgJiYgKC9eXFwuW1xcXFxcXC9dLykudGVzdChjbWQpKSB7XG4gICAgICBwID0gY21kLnNsaWNlKDAsIDIpICsgcFxuICAgIH1cbiAgICA7KGZ1bmN0aW9uIEUgKGlpLCBsbCkge1xuICAgICAgaWYgKGlpID09PSBsbCkgcmV0dXJuIEYoaSArIDEsIGwpXG4gICAgICB2YXIgZXh0ID0gcGF0aEV4dFtpaV1cbiAgICAgIGlzZXhlKHAgKyBleHQsIHsgcGF0aEV4dDogcGF0aEV4dEV4ZSB9LCBmdW5jdGlvbiAoZXIsIGlzKSB7XG4gICAgICAgIGlmICghZXIgJiYgaXMpIHtcbiAgICAgICAgICBpZiAob3B0LmFsbClcbiAgICAgICAgICAgIGZvdW5kLnB1c2gocCArIGV4dClcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICByZXR1cm4gY2IobnVsbCwgcCArIGV4dClcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gRShpaSArIDEsIGxsKVxuICAgICAgfSlcbiAgICB9KSgwLCBwYXRoRXh0Lmxlbmd0aClcbiAgfSkoMCwgcGF0aEVudi5sZW5ndGgpXG59XG5cbmZ1bmN0aW9uIHdoaWNoU3luYyAoY21kLCBvcHQpIHtcbiAgb3B0ID0gb3B0IHx8IHt9XG5cbiAgdmFyIGluZm8gPSBnZXRQYXRoSW5mbyhjbWQsIG9wdClcbiAgdmFyIHBhdGhFbnYgPSBpbmZvLmVudlxuICB2YXIgcGF0aEV4dCA9IGluZm8uZXh0XG4gIHZhciBwYXRoRXh0RXhlID0gaW5mby5leHRFeGVcbiAgdmFyIGZvdW5kID0gW11cblxuICBmb3IgKHZhciBpID0gMCwgbCA9IHBhdGhFbnYubGVuZ3RoOyBpIDwgbDsgaSArKykge1xuICAgIHZhciBwYXRoUGFydCA9IHBhdGhFbnZbaV1cbiAgICBpZiAocGF0aFBhcnQuY2hhckF0KDApID09PSAnXCInICYmIHBhdGhQYXJ0LnNsaWNlKC0xKSA9PT0gJ1wiJylcbiAgICAgIHBhdGhQYXJ0ID0gcGF0aFBhcnQuc2xpY2UoMSwgLTEpXG5cbiAgICB2YXIgcCA9IHBhdGguam9pbihwYXRoUGFydCwgY21kKVxuICAgIGlmICghcGF0aFBhcnQgJiYgL15cXC5bXFxcXFxcL10vLnRlc3QoY21kKSkge1xuICAgICAgcCA9IGNtZC5zbGljZSgwLCAyKSArIHBcbiAgICB9XG4gICAgZm9yICh2YXIgaiA9IDAsIGxsID0gcGF0aEV4dC5sZW5ndGg7IGogPCBsbDsgaiArKykge1xuICAgICAgdmFyIGN1ciA9IHAgKyBwYXRoRXh0W2pdXG4gICAgICB2YXIgaXNcbiAgICAgIHRyeSB7XG4gICAgICAgIGlzID0gaXNleGUuc3luYyhjdXIsIHsgcGF0aEV4dDogcGF0aEV4dEV4ZSB9KVxuICAgICAgICBpZiAoaXMpIHtcbiAgICAgICAgICBpZiAob3B0LmFsbClcbiAgICAgICAgICAgIGZvdW5kLnB1c2goY3VyKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIHJldHVybiBjdXJcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXgpIHt9XG4gICAgfVxuICB9XG5cbiAgaWYgKG9wdC5hbGwgJiYgZm91bmQubGVuZ3RoKVxuICAgIHJldHVybiBmb3VuZFxuXG4gIHRocm93IGdldE5vdEZvdW5kRXJyb3IoY21kKVxufVxuIiwibW9kdWxlLmV4cG9ydHMgPSBCaW5hcnlSZWFkZXI7XHJcblxyXG5mdW5jdGlvbiBCaW5hcnlSZWFkZXIoYnVmZmVyLCBpc0JpZ0VuZGlhbikge1xyXG4gICAgdGhpcy5idWZmZXIgPSBidWZmZXI7XHJcbiAgICB0aGlzLnBvc2l0aW9uID0gMDtcclxuICAgIHRoaXMuaXNCaWdFbmRpYW4gPSBpc0JpZ0VuZGlhbiB8fCBmYWxzZTtcclxufVxyXG5cclxuZnVuY3Rpb24gX3JlYWQocmVhZExFLCByZWFkQkUsIHNpemUpIHtcclxuICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdmFyIHZhbHVlO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5pc0JpZ0VuZGlhbilcclxuICAgICAgICAgICAgdmFsdWUgPSByZWFkQkUuY2FsbCh0aGlzLmJ1ZmZlciwgdGhpcy5wb3NpdGlvbik7XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICB2YWx1ZSA9IHJlYWRMRS5jYWxsKHRoaXMuYnVmZmVyLCB0aGlzLnBvc2l0aW9uKTtcclxuXHJcbiAgICAgICAgdGhpcy5wb3NpdGlvbiArPSBzaXplO1xyXG5cclxuICAgICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICB9O1xyXG59XHJcblxyXG5CaW5hcnlSZWFkZXIucHJvdG90eXBlLnJlYWRVSW50OCA9IF9yZWFkKEJ1ZmZlci5wcm90b3R5cGUucmVhZFVJbnQ4LCBCdWZmZXIucHJvdG90eXBlLnJlYWRVSW50OCwgMSk7XHJcbkJpbmFyeVJlYWRlci5wcm90b3R5cGUucmVhZFVJbnQxNiA9IF9yZWFkKEJ1ZmZlci5wcm90b3R5cGUucmVhZFVJbnQxNkxFLCBCdWZmZXIucHJvdG90eXBlLnJlYWRVSW50MTZCRSwgMik7XHJcbkJpbmFyeVJlYWRlci5wcm90b3R5cGUucmVhZFVJbnQzMiA9IF9yZWFkKEJ1ZmZlci5wcm90b3R5cGUucmVhZFVJbnQzMkxFLCBCdWZmZXIucHJvdG90eXBlLnJlYWRVSW50MzJCRSwgNCk7XHJcbkJpbmFyeVJlYWRlci5wcm90b3R5cGUucmVhZEludDggPSBfcmVhZChCdWZmZXIucHJvdG90eXBlLnJlYWRJbnQ4LCBCdWZmZXIucHJvdG90eXBlLnJlYWRJbnQ4LCAxKTtcclxuQmluYXJ5UmVhZGVyLnByb3RvdHlwZS5yZWFkSW50MTYgPSBfcmVhZChCdWZmZXIucHJvdG90eXBlLnJlYWRJbnQxNkxFLCBCdWZmZXIucHJvdG90eXBlLnJlYWRJbnQxNkJFLCAyKTtcclxuQmluYXJ5UmVhZGVyLnByb3RvdHlwZS5yZWFkSW50MzIgPSBfcmVhZChCdWZmZXIucHJvdG90eXBlLnJlYWRJbnQzMkxFLCBCdWZmZXIucHJvdG90eXBlLnJlYWRJbnQzMkJFLCA0KTtcclxuQmluYXJ5UmVhZGVyLnByb3RvdHlwZS5yZWFkRmxvYXQgPSBfcmVhZChCdWZmZXIucHJvdG90eXBlLnJlYWRGbG9hdExFLCBCdWZmZXIucHJvdG90eXBlLnJlYWRGbG9hdEJFLCA0KTtcclxuQmluYXJ5UmVhZGVyLnByb3RvdHlwZS5yZWFkRG91YmxlID0gX3JlYWQoQnVmZmVyLnByb3RvdHlwZS5yZWFkRG91YmxlTEUsIEJ1ZmZlci5wcm90b3R5cGUucmVhZERvdWJsZUJFLCA4KTtcclxuXHJcbkJpbmFyeVJlYWRlci5wcm90b3R5cGUucmVhZFZhckludCA9IGZ1bmN0aW9uICgpIHtcclxuICAgIHZhciBuZXh0Qnl0ZSxcclxuICAgICAgICByZXN1bHQgPSAwLFxyXG4gICAgICAgIGJ5dGVzUmVhZCA9IDA7XHJcblxyXG4gICAgZG8ge1xyXG4gICAgICAgIG5leHRCeXRlID0gdGhpcy5idWZmZXJbdGhpcy5wb3NpdGlvbiArIGJ5dGVzUmVhZF07XHJcbiAgICAgICAgcmVzdWx0ICs9IChuZXh0Qnl0ZSAmIDB4N0YpIDw8ICg3ICogYnl0ZXNSZWFkKTtcclxuICAgICAgICBieXRlc1JlYWQrKztcclxuICAgIH0gd2hpbGUgKG5leHRCeXRlID49IDB4ODApO1xyXG5cclxuICAgIHRoaXMucG9zaXRpb24gKz0gYnl0ZXNSZWFkO1xyXG5cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbn07XHJcbiIsIm1vZHVsZS5leHBvcnRzID0gQmluYXJ5V3JpdGVyO1xyXG5cclxuZnVuY3Rpb24gQmluYXJ5V3JpdGVyKHNpemUsIGFsbG93UmVzaXplKSB7XHJcbiAgICB0aGlzLmJ1ZmZlciA9IG5ldyBCdWZmZXIoc2l6ZSk7XHJcbiAgICB0aGlzLnBvc2l0aW9uID0gMDtcclxuICAgIHRoaXMuYWxsb3dSZXNpemUgPSBhbGxvd1Jlc2l6ZTtcclxufVxyXG5cclxuZnVuY3Rpb24gX3dyaXRlKHdyaXRlLCBzaXplKSB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKHZhbHVlLCBub0Fzc2VydCkge1xyXG4gICAgICAgIHRoaXMuZW5zdXJlU2l6ZShzaXplKTtcclxuXHJcbiAgICAgICAgd3JpdGUuY2FsbCh0aGlzLmJ1ZmZlciwgdmFsdWUsIHRoaXMucG9zaXRpb24sIG5vQXNzZXJ0KTtcclxuICAgICAgICB0aGlzLnBvc2l0aW9uICs9IHNpemU7XHJcbiAgICB9O1xyXG59XHJcblxyXG5CaW5hcnlXcml0ZXIucHJvdG90eXBlLndyaXRlVUludDggPSBfd3JpdGUoQnVmZmVyLnByb3RvdHlwZS53cml0ZVVJbnQ4LCAxKTtcclxuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZVVJbnQxNkxFID0gX3dyaXRlKEJ1ZmZlci5wcm90b3R5cGUud3JpdGVVSW50MTZMRSwgMik7XHJcbkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVVSW50MTZCRSA9IF93cml0ZShCdWZmZXIucHJvdG90eXBlLndyaXRlVUludDE2QkUsIDIpO1xyXG5CaW5hcnlXcml0ZXIucHJvdG90eXBlLndyaXRlVUludDMyTEUgPSBfd3JpdGUoQnVmZmVyLnByb3RvdHlwZS53cml0ZVVJbnQzMkxFLCA0KTtcclxuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZVVJbnQzMkJFID0gX3dyaXRlKEJ1ZmZlci5wcm90b3R5cGUud3JpdGVVSW50MzJCRSwgNCk7XHJcbkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVJbnQ4ID0gX3dyaXRlKEJ1ZmZlci5wcm90b3R5cGUud3JpdGVJbnQ4LCAxKTtcclxuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZUludDE2TEUgPSBfd3JpdGUoQnVmZmVyLnByb3RvdHlwZS53cml0ZUludDE2TEUsIDIpO1xyXG5CaW5hcnlXcml0ZXIucHJvdG90eXBlLndyaXRlSW50MTZCRSA9IF93cml0ZShCdWZmZXIucHJvdG90eXBlLndyaXRlSW50MTZCRSwgMik7XHJcbkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVJbnQzMkxFID0gX3dyaXRlKEJ1ZmZlci5wcm90b3R5cGUud3JpdGVJbnQzMkxFLCA0KTtcclxuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZUludDMyQkUgPSBfd3JpdGUoQnVmZmVyLnByb3RvdHlwZS53cml0ZUludDMyQkUsIDQpO1xyXG5CaW5hcnlXcml0ZXIucHJvdG90eXBlLndyaXRlRmxvYXRMRSA9IF93cml0ZShCdWZmZXIucHJvdG90eXBlLndyaXRlRmxvYXRMRSwgNCk7XHJcbkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVGbG9hdEJFID0gX3dyaXRlKEJ1ZmZlci5wcm90b3R5cGUud3JpdGVGbG9hdEJFLCA0KTtcclxuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZURvdWJsZUxFID0gX3dyaXRlKEJ1ZmZlci5wcm90b3R5cGUud3JpdGVEb3VibGVMRSwgOCk7XHJcbkJpbmFyeVdyaXRlci5wcm90b3R5cGUud3JpdGVEb3VibGVCRSA9IF93cml0ZShCdWZmZXIucHJvdG90eXBlLndyaXRlRG91YmxlQkUsIDgpO1xyXG5cclxuQmluYXJ5V3JpdGVyLnByb3RvdHlwZS53cml0ZUJ1ZmZlciA9IGZ1bmN0aW9uIChidWZmZXIpIHtcclxuICAgIHRoaXMuZW5zdXJlU2l6ZShidWZmZXIubGVuZ3RoKTtcclxuXHJcbiAgICBidWZmZXIuY29weSh0aGlzLmJ1ZmZlciwgdGhpcy5wb3NpdGlvbiwgMCwgYnVmZmVyLmxlbmd0aCk7XHJcbiAgICB0aGlzLnBvc2l0aW9uICs9IGJ1ZmZlci5sZW5ndGg7XHJcbn07XHJcblxyXG5CaW5hcnlXcml0ZXIucHJvdG90eXBlLndyaXRlVmFySW50ID0gZnVuY3Rpb24gKHZhbHVlKSB7XHJcbiAgICB2YXIgbGVuZ3RoID0gMTtcclxuXHJcbiAgICB3aGlsZSAoKHZhbHVlICYgMHhGRkZGRkY4MCkgIT09IDApIHtcclxuICAgICAgICB0aGlzLndyaXRlVUludDgoKHZhbHVlICYgMHg3RikgfCAweDgwKTtcclxuICAgICAgICB2YWx1ZSA+Pj49IDc7XHJcbiAgICAgICAgbGVuZ3RoKys7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy53cml0ZVVJbnQ4KHZhbHVlICYgMHg3Rik7XHJcblxyXG4gICAgcmV0dXJuIGxlbmd0aDtcclxufTtcclxuXHJcbkJpbmFyeVdyaXRlci5wcm90b3R5cGUuZW5zdXJlU2l6ZSA9IGZ1bmN0aW9uIChzaXplKSB7XHJcbiAgICBpZiAodGhpcy5idWZmZXIubGVuZ3RoIDwgdGhpcy5wb3NpdGlvbiArIHNpemUpIHtcclxuICAgICAgICBpZiAodGhpcy5hbGxvd1Jlc2l6ZSkge1xyXG4gICAgICAgICAgICB2YXIgdGVtcEJ1ZmZlciA9IG5ldyBCdWZmZXIodGhpcy5wb3NpdGlvbiArIHNpemUpO1xyXG4gICAgICAgICAgICB0aGlzLmJ1ZmZlci5jb3B5KHRlbXBCdWZmZXIsIDAsIDAsIHRoaXMuYnVmZmVyLmxlbmd0aCk7XHJcbiAgICAgICAgICAgIHRoaXMuYnVmZmVyID0gdGVtcEJ1ZmZlcjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdpbmRleCBvdXQgb2YgcmFuZ2UnKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn07XHJcbiIsIm1vZHVsZS5leHBvcnRzID0gR2VvbWV0cnk7XHJcblxyXG52YXIgVHlwZXMgPSByZXF1aXJlKCcuL3R5cGVzJyk7XHJcbnZhciBQb2ludCA9IHJlcXVpcmUoJy4vcG9pbnQnKTtcclxudmFyIExpbmVTdHJpbmcgPSByZXF1aXJlKCcuL2xpbmVzdHJpbmcnKTtcclxudmFyIFBvbHlnb24gPSByZXF1aXJlKCcuL3BvbHlnb24nKTtcclxudmFyIE11bHRpUG9pbnQgPSByZXF1aXJlKCcuL211bHRpcG9pbnQnKTtcclxudmFyIE11bHRpTGluZVN0cmluZyA9IHJlcXVpcmUoJy4vbXVsdGlsaW5lc3RyaW5nJyk7XHJcbnZhciBNdWx0aVBvbHlnb24gPSByZXF1aXJlKCcuL211bHRpcG9seWdvbicpO1xyXG52YXIgR2VvbWV0cnlDb2xsZWN0aW9uID0gcmVxdWlyZSgnLi9nZW9tZXRyeWNvbGxlY3Rpb24nKTtcclxudmFyIEJpbmFyeVJlYWRlciA9IHJlcXVpcmUoJy4vYmluYXJ5cmVhZGVyJyk7XHJcbnZhciBCaW5hcnlXcml0ZXIgPSByZXF1aXJlKCcuL2JpbmFyeXdyaXRlcicpO1xyXG52YXIgV2t0UGFyc2VyID0gcmVxdWlyZSgnLi93a3RwYXJzZXInKTtcclxudmFyIFppZ1phZyA9IHJlcXVpcmUoJy4vemlnemFnLmpzJyk7XHJcblxyXG5mdW5jdGlvbiBHZW9tZXRyeSgpIHtcclxuICAgIHRoaXMuc3JpZCA9IHVuZGVmaW5lZDtcclxuICAgIHRoaXMuaGFzWiA9IGZhbHNlO1xyXG4gICAgdGhpcy5oYXNNID0gZmFsc2U7XHJcbn1cclxuXHJcbkdlb21ldHJ5LnBhcnNlID0gZnVuY3Rpb24gKHZhbHVlLCBvcHRpb25zKSB7XHJcbiAgICB2YXIgdmFsdWVUeXBlID0gdHlwZW9mIHZhbHVlO1xyXG5cclxuICAgIGlmICh2YWx1ZVR5cGUgPT09ICdzdHJpbmcnIHx8IHZhbHVlIGluc3RhbmNlb2YgV2t0UGFyc2VyKVxyXG4gICAgICAgIHJldHVybiBHZW9tZXRyeS5fcGFyc2VXa3QodmFsdWUpO1xyXG4gICAgZWxzZSBpZiAoQnVmZmVyLmlzQnVmZmVyKHZhbHVlKSB8fCB2YWx1ZSBpbnN0YW5jZW9mIEJpbmFyeVJlYWRlcilcclxuICAgICAgICByZXR1cm4gR2VvbWV0cnkuX3BhcnNlV2tiKHZhbHVlLCBvcHRpb25zKTtcclxuICAgIGVsc2VcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2ZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYSBzdHJpbmcgb3IgQnVmZmVyJyk7XHJcbn07XHJcblxyXG5HZW9tZXRyeS5fcGFyc2VXa3QgPSBmdW5jdGlvbiAodmFsdWUpIHtcclxuICAgIHZhciB3a3RQYXJzZXIsXHJcbiAgICAgICAgc3JpZDtcclxuXHJcbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBXa3RQYXJzZXIpXHJcbiAgICAgICAgd2t0UGFyc2VyID0gdmFsdWU7XHJcbiAgICBlbHNlXHJcbiAgICAgICAgd2t0UGFyc2VyID0gbmV3IFdrdFBhcnNlcih2YWx1ZSk7XHJcblxyXG4gICAgdmFyIG1hdGNoID0gd2t0UGFyc2VyLm1hdGNoUmVnZXgoWy9eU1JJRD0oXFxkKyk7L10pO1xyXG4gICAgaWYgKG1hdGNoKVxyXG4gICAgICAgIHNyaWQgPSBwYXJzZUludChtYXRjaFsxXSwgMTApO1xyXG5cclxuICAgIHZhciBnZW9tZXRyeVR5cGUgPSB3a3RQYXJzZXIubWF0Y2hUeXBlKCk7XHJcbiAgICB2YXIgZGltZW5zaW9uID0gd2t0UGFyc2VyLm1hdGNoRGltZW5zaW9uKCk7XHJcblxyXG4gICAgdmFyIG9wdGlvbnMgPSB7XHJcbiAgICAgICAgc3JpZDogc3JpZCxcclxuICAgICAgICBoYXNaOiBkaW1lbnNpb24uaGFzWixcclxuICAgICAgICBoYXNNOiBkaW1lbnNpb24uaGFzTVxyXG4gICAgfTtcclxuXHJcbiAgICBzd2l0Y2ggKGdlb21ldHJ5VHlwZSkge1xyXG4gICAgY2FzZSBUeXBlcy53a3QuUG9pbnQ6XHJcbiAgICAgICAgcmV0dXJuIFBvaW50Ll9wYXJzZVdrdCh3a3RQYXJzZXIsIG9wdGlvbnMpO1xyXG4gICAgY2FzZSBUeXBlcy53a3QuTGluZVN0cmluZzpcclxuICAgICAgICByZXR1cm4gTGluZVN0cmluZy5fcGFyc2VXa3Qod2t0UGFyc2VyLCBvcHRpb25zKTtcclxuICAgIGNhc2UgVHlwZXMud2t0LlBvbHlnb246XHJcbiAgICAgICAgcmV0dXJuIFBvbHlnb24uX3BhcnNlV2t0KHdrdFBhcnNlciwgb3B0aW9ucyk7XHJcbiAgICBjYXNlIFR5cGVzLndrdC5NdWx0aVBvaW50OlxyXG4gICAgICAgIHJldHVybiBNdWx0aVBvaW50Ll9wYXJzZVdrdCh3a3RQYXJzZXIsIG9wdGlvbnMpO1xyXG4gICAgY2FzZSBUeXBlcy53a3QuTXVsdGlMaW5lU3RyaW5nOlxyXG4gICAgICAgIHJldHVybiBNdWx0aUxpbmVTdHJpbmcuX3BhcnNlV2t0KHdrdFBhcnNlciwgb3B0aW9ucyk7XHJcbiAgICBjYXNlIFR5cGVzLndrdC5NdWx0aVBvbHlnb246XHJcbiAgICAgICAgcmV0dXJuIE11bHRpUG9seWdvbi5fcGFyc2VXa3Qod2t0UGFyc2VyLCBvcHRpb25zKTtcclxuICAgIGNhc2UgVHlwZXMud2t0Lkdlb21ldHJ5Q29sbGVjdGlvbjpcclxuICAgICAgICByZXR1cm4gR2VvbWV0cnlDb2xsZWN0aW9uLl9wYXJzZVdrdCh3a3RQYXJzZXIsIG9wdGlvbnMpO1xyXG4gICAgfVxyXG59O1xyXG5cclxuR2VvbWV0cnkuX3BhcnNlV2tiID0gZnVuY3Rpb24gKHZhbHVlLCBwYXJlbnRPcHRpb25zKSB7XHJcbiAgICB2YXIgYmluYXJ5UmVhZGVyLFxyXG4gICAgICAgIHdrYlR5cGUsXHJcbiAgICAgICAgZ2VvbWV0cnlUeXBlLFxyXG4gICAgICAgIG9wdGlvbnMgPSB7fTtcclxuXHJcbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBCaW5hcnlSZWFkZXIpXHJcbiAgICAgICAgYmluYXJ5UmVhZGVyID0gdmFsdWU7XHJcbiAgICBlbHNlXHJcbiAgICAgICAgYmluYXJ5UmVhZGVyID0gbmV3IEJpbmFyeVJlYWRlcih2YWx1ZSk7XHJcblxyXG4gICAgYmluYXJ5UmVhZGVyLmlzQmlnRW5kaWFuID0gIWJpbmFyeVJlYWRlci5yZWFkSW50OCgpO1xyXG5cclxuICAgIHdrYlR5cGUgPSBiaW5hcnlSZWFkZXIucmVhZFVJbnQzMigpO1xyXG5cclxuICAgIG9wdGlvbnMuaGFzU3JpZCA9ICh3a2JUeXBlICYgMHgyMDAwMDAwMCkgPT09IDB4MjAwMDAwMDA7XHJcbiAgICBvcHRpb25zLmlzRXdrYiA9ICh3a2JUeXBlICYgMHgyMDAwMDAwMCkgfHwgKHdrYlR5cGUgJiAweDQwMDAwMDAwKSB8fCAod2tiVHlwZSAmIDB4ODAwMDAwMDApO1xyXG4gICAgXHJcbiAgICBpZiAob3B0aW9ucy5oYXNTcmlkKVxyXG4gICAgICAgIG9wdGlvbnMuc3JpZCA9IGJpbmFyeVJlYWRlci5yZWFkVUludDMyKCk7XHJcblxyXG4gICAgb3B0aW9ucy5oYXNaID0gZmFsc2U7XHJcbiAgICBvcHRpb25zLmhhc00gPSBmYWxzZTtcclxuXHJcbiAgICBpZiAoIW9wdGlvbnMuaXNFd2tiICYmICghcGFyZW50T3B0aW9ucyB8fCAhcGFyZW50T3B0aW9ucy5pc0V3a2IpKSB7XHJcbiAgICAgICAgaWYgKHdrYlR5cGUgPj0gMTAwMCAmJiB3a2JUeXBlIDwgMjAwMCkge1xyXG4gICAgICAgICAgICBvcHRpb25zLmhhc1ogPSB0cnVlO1xyXG4gICAgICAgICAgICBnZW9tZXRyeVR5cGUgPSB3a2JUeXBlIC0gMTAwMDtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAod2tiVHlwZSA+PSAyMDAwICYmIHdrYlR5cGUgPCAzMDAwKSB7XHJcbiAgICAgICAgICAgIG9wdGlvbnMuaGFzTSA9IHRydWU7XHJcbiAgICAgICAgICAgIGdlb21ldHJ5VHlwZSA9IHdrYlR5cGUgLSAyMDAwO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICh3a2JUeXBlID49IDMwMDAgJiYgd2tiVHlwZSA8IDQwMDApIHtcclxuICAgICAgICAgICAgb3B0aW9ucy5oYXNaID0gdHJ1ZTtcclxuICAgICAgICAgICAgb3B0aW9ucy5oYXNNID0gdHJ1ZTtcclxuICAgICAgICAgICAgZ2VvbWV0cnlUeXBlID0gd2tiVHlwZSAtIDMwMDA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBnZW9tZXRyeVR5cGUgPSB3a2JUeXBlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGlmICh3a2JUeXBlICYgMHg4MDAwMDAwMClcclxuICAgICAgICAgICAgb3B0aW9ucy5oYXNaID0gdHJ1ZTtcclxuICAgICAgICBpZiAod2tiVHlwZSAmIDB4NDAwMDAwMDApXHJcbiAgICAgICAgICAgIG9wdGlvbnMuaGFzTSA9IHRydWU7XHJcblxyXG4gICAgICAgIGdlb21ldHJ5VHlwZSA9IHdrYlR5cGUgJiAweEY7XHJcbiAgICB9XHJcblxyXG4gICAgc3dpdGNoIChnZW9tZXRyeVR5cGUpIHtcclxuICAgIGNhc2UgVHlwZXMud2tiLlBvaW50OlxyXG4gICAgICAgIHJldHVybiBQb2ludC5fcGFyc2VXa2IoYmluYXJ5UmVhZGVyLCBvcHRpb25zKTtcclxuICAgIGNhc2UgVHlwZXMud2tiLkxpbmVTdHJpbmc6XHJcbiAgICAgICAgcmV0dXJuIExpbmVTdHJpbmcuX3BhcnNlV2tiKGJpbmFyeVJlYWRlciwgb3B0aW9ucyk7XHJcbiAgICBjYXNlIFR5cGVzLndrYi5Qb2x5Z29uOlxyXG4gICAgICAgIHJldHVybiBQb2x5Z29uLl9wYXJzZVdrYihiaW5hcnlSZWFkZXIsIG9wdGlvbnMpO1xyXG4gICAgY2FzZSBUeXBlcy53a2IuTXVsdGlQb2ludDpcclxuICAgICAgICByZXR1cm4gTXVsdGlQb2ludC5fcGFyc2VXa2IoYmluYXJ5UmVhZGVyLCBvcHRpb25zKTtcclxuICAgIGNhc2UgVHlwZXMud2tiLk11bHRpTGluZVN0cmluZzpcclxuICAgICAgICByZXR1cm4gTXVsdGlMaW5lU3RyaW5nLl9wYXJzZVdrYihiaW5hcnlSZWFkZXIsIG9wdGlvbnMpO1xyXG4gICAgY2FzZSBUeXBlcy53a2IuTXVsdGlQb2x5Z29uOlxyXG4gICAgICAgIHJldHVybiBNdWx0aVBvbHlnb24uX3BhcnNlV2tiKGJpbmFyeVJlYWRlciwgb3B0aW9ucyk7XHJcbiAgICBjYXNlIFR5cGVzLndrYi5HZW9tZXRyeUNvbGxlY3Rpb246XHJcbiAgICAgICAgcmV0dXJuIEdlb21ldHJ5Q29sbGVjdGlvbi5fcGFyc2VXa2IoYmluYXJ5UmVhZGVyLCBvcHRpb25zKTtcclxuICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdHZW9tZXRyeVR5cGUgJyArIGdlb21ldHJ5VHlwZSArICcgbm90IHN1cHBvcnRlZCcpO1xyXG4gICAgfVxyXG59O1xyXG5cclxuR2VvbWV0cnkucGFyc2VUd2tiID0gZnVuY3Rpb24gKHZhbHVlKSB7XHJcbiAgICB2YXIgYmluYXJ5UmVhZGVyLFxyXG4gICAgICAgIG9wdGlvbnMgPSB7fTtcclxuXHJcbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBCaW5hcnlSZWFkZXIpXHJcbiAgICAgICAgYmluYXJ5UmVhZGVyID0gdmFsdWU7XHJcbiAgICBlbHNlXHJcbiAgICAgICAgYmluYXJ5UmVhZGVyID0gbmV3IEJpbmFyeVJlYWRlcih2YWx1ZSk7XHJcblxyXG4gICAgdmFyIHR5cGUgPSBiaW5hcnlSZWFkZXIucmVhZFVJbnQ4KCk7XHJcbiAgICB2YXIgbWV0YWRhdGFIZWFkZXIgPSBiaW5hcnlSZWFkZXIucmVhZFVJbnQ4KCk7XHJcblxyXG4gICAgdmFyIGdlb21ldHJ5VHlwZSA9IHR5cGUgJiAweDBGO1xyXG4gICAgb3B0aW9ucy5wcmVjaXNpb24gPSBaaWdaYWcuZGVjb2RlKHR5cGUgPj4gNCk7XHJcbiAgICBvcHRpb25zLnByZWNpc2lvbkZhY3RvciA9IE1hdGgucG93KDEwLCBvcHRpb25zLnByZWNpc2lvbik7XHJcblxyXG4gICAgb3B0aW9ucy5oYXNCb3VuZGluZ0JveCA9IG1ldGFkYXRhSGVhZGVyID4+IDAgJiAxO1xyXG4gICAgb3B0aW9ucy5oYXNTaXplQXR0cmlidXRlID0gbWV0YWRhdGFIZWFkZXIgPj4gMSAmIDE7XHJcbiAgICBvcHRpb25zLmhhc0lkTGlzdCA9IG1ldGFkYXRhSGVhZGVyID4+IDIgJiAxO1xyXG4gICAgb3B0aW9ucy5oYXNFeHRlbmRlZFByZWNpc2lvbiA9IG1ldGFkYXRhSGVhZGVyID4+IDMgJiAxO1xyXG4gICAgb3B0aW9ucy5pc0VtcHR5ID0gbWV0YWRhdGFIZWFkZXIgPj4gNCAmIDE7XHJcblxyXG4gICAgaWYgKG9wdGlvbnMuaGFzRXh0ZW5kZWRQcmVjaXNpb24pIHtcclxuICAgICAgICB2YXIgZXh0ZW5kZWRQcmVjaXNpb24gPSBiaW5hcnlSZWFkZXIucmVhZFVJbnQ4KCk7XHJcbiAgICAgICAgb3B0aW9ucy5oYXNaID0gKGV4dGVuZGVkUHJlY2lzaW9uICYgMHgwMSkgPT09IDB4MDE7XHJcbiAgICAgICAgb3B0aW9ucy5oYXNNID0gKGV4dGVuZGVkUHJlY2lzaW9uICYgMHgwMikgPT09IDB4MDI7XHJcblxyXG4gICAgICAgIG9wdGlvbnMuelByZWNpc2lvbiA9IFppZ1phZy5kZWNvZGUoKGV4dGVuZGVkUHJlY2lzaW9uICYgMHgxQykgPj4gMik7XHJcbiAgICAgICAgb3B0aW9ucy56UHJlY2lzaW9uRmFjdG9yID0gTWF0aC5wb3coMTAsIG9wdGlvbnMuelByZWNpc2lvbik7XHJcblxyXG4gICAgICAgIG9wdGlvbnMubVByZWNpc2lvbiA9IFppZ1phZy5kZWNvZGUoKGV4dGVuZGVkUHJlY2lzaW9uICYgMHhFMCkgPj4gNSk7XHJcbiAgICAgICAgb3B0aW9ucy5tUHJlY2lzaW9uRmFjdG9yID0gTWF0aC5wb3coMTAsIG9wdGlvbnMubVByZWNpc2lvbik7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICBvcHRpb25zLmhhc1ogPSBmYWxzZTtcclxuICAgICAgICBvcHRpb25zLmhhc00gPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAob3B0aW9ucy5oYXNTaXplQXR0cmlidXRlKVxyXG4gICAgICAgIGJpbmFyeVJlYWRlci5yZWFkVmFySW50KCk7XHJcbiAgICBpZiAob3B0aW9ucy5oYXNCb3VuZGluZ0JveCkge1xyXG4gICAgICAgIHZhciBkaW1lbnNpb25zID0gMjtcclxuXHJcbiAgICAgICAgaWYgKG9wdGlvbnMuaGFzWilcclxuICAgICAgICAgICAgZGltZW5zaW9ucysrO1xyXG4gICAgICAgIGlmIChvcHRpb25zLmhhc00pXHJcbiAgICAgICAgICAgIGRpbWVuc2lvbnMrKztcclxuXHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkaW1lbnNpb25zOyBpKyspIHtcclxuICAgICAgICAgICAgYmluYXJ5UmVhZGVyLnJlYWRWYXJJbnQoKTtcclxuICAgICAgICAgICAgYmluYXJ5UmVhZGVyLnJlYWRWYXJJbnQoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgc3dpdGNoIChnZW9tZXRyeVR5cGUpIHtcclxuICAgIGNhc2UgVHlwZXMud2tiLlBvaW50OlxyXG4gICAgICAgIHJldHVybiBQb2ludC5fcGFyc2VUd2tiKGJpbmFyeVJlYWRlciwgb3B0aW9ucyk7XHJcbiAgICBjYXNlIFR5cGVzLndrYi5MaW5lU3RyaW5nOlxyXG4gICAgICAgIHJldHVybiBMaW5lU3RyaW5nLl9wYXJzZVR3a2IoYmluYXJ5UmVhZGVyLCBvcHRpb25zKTtcclxuICAgIGNhc2UgVHlwZXMud2tiLlBvbHlnb246XHJcbiAgICAgICAgcmV0dXJuIFBvbHlnb24uX3BhcnNlVHdrYihiaW5hcnlSZWFkZXIsIG9wdGlvbnMpO1xyXG4gICAgY2FzZSBUeXBlcy53a2IuTXVsdGlQb2ludDpcclxuICAgICAgICByZXR1cm4gTXVsdGlQb2ludC5fcGFyc2VUd2tiKGJpbmFyeVJlYWRlciwgb3B0aW9ucyk7XHJcbiAgICBjYXNlIFR5cGVzLndrYi5NdWx0aUxpbmVTdHJpbmc6XHJcbiAgICAgICAgcmV0dXJuIE11bHRpTGluZVN0cmluZy5fcGFyc2VUd2tiKGJpbmFyeVJlYWRlciwgb3B0aW9ucyk7XHJcbiAgICBjYXNlIFR5cGVzLndrYi5NdWx0aVBvbHlnb246XHJcbiAgICAgICAgcmV0dXJuIE11bHRpUG9seWdvbi5fcGFyc2VUd2tiKGJpbmFyeVJlYWRlciwgb3B0aW9ucyk7XHJcbiAgICBjYXNlIFR5cGVzLndrYi5HZW9tZXRyeUNvbGxlY3Rpb246XHJcbiAgICAgICAgcmV0dXJuIEdlb21ldHJ5Q29sbGVjdGlvbi5fcGFyc2VUd2tiKGJpbmFyeVJlYWRlciwgb3B0aW9ucyk7XHJcbiAgICBkZWZhdWx0OlxyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcignR2VvbWV0cnlUeXBlICcgKyBnZW9tZXRyeVR5cGUgKyAnIG5vdCBzdXBwb3J0ZWQnKTtcclxuICAgIH1cclxufTtcclxuXHJcbkdlb21ldHJ5LnBhcnNlR2VvSlNPTiA9IGZ1bmN0aW9uICh2YWx1ZSkge1xyXG4gICAgdmFyIGdlb21ldHJ5O1xyXG5cclxuICAgIHN3aXRjaCAodmFsdWUudHlwZSkge1xyXG4gICAgY2FzZSBUeXBlcy5nZW9KU09OLlBvaW50OlxyXG4gICAgICAgIGdlb21ldHJ5ID0gUG9pbnQuX3BhcnNlR2VvSlNPTih2YWx1ZSk7IGJyZWFrO1xyXG4gICAgY2FzZSBUeXBlcy5nZW9KU09OLkxpbmVTdHJpbmc6XHJcbiAgICAgICAgZ2VvbWV0cnkgPSBMaW5lU3RyaW5nLl9wYXJzZUdlb0pTT04odmFsdWUpOyBicmVhaztcclxuICAgIGNhc2UgVHlwZXMuZ2VvSlNPTi5Qb2x5Z29uOlxyXG4gICAgICAgIGdlb21ldHJ5ID0gUG9seWdvbi5fcGFyc2VHZW9KU09OKHZhbHVlKTsgYnJlYWs7XHJcbiAgICBjYXNlIFR5cGVzLmdlb0pTT04uTXVsdGlQb2ludDpcclxuICAgICAgICBnZW9tZXRyeSA9IE11bHRpUG9pbnQuX3BhcnNlR2VvSlNPTih2YWx1ZSk7IGJyZWFrO1xyXG4gICAgY2FzZSBUeXBlcy5nZW9KU09OLk11bHRpTGluZVN0cmluZzpcclxuICAgICAgICBnZW9tZXRyeSA9IE11bHRpTGluZVN0cmluZy5fcGFyc2VHZW9KU09OKHZhbHVlKTsgYnJlYWs7XHJcbiAgICBjYXNlIFR5cGVzLmdlb0pTT04uTXVsdGlQb2x5Z29uOlxyXG4gICAgICAgIGdlb21ldHJ5ID0gTXVsdGlQb2x5Z29uLl9wYXJzZUdlb0pTT04odmFsdWUpOyBicmVhaztcclxuICAgIGNhc2UgVHlwZXMuZ2VvSlNPTi5HZW9tZXRyeUNvbGxlY3Rpb246XHJcbiAgICAgICAgZ2VvbWV0cnkgPSBHZW9tZXRyeUNvbGxlY3Rpb24uX3BhcnNlR2VvSlNPTih2YWx1ZSk7IGJyZWFrO1xyXG4gICAgZGVmYXVsdDpcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0dlb21ldHJ5VHlwZSAnICsgdmFsdWUudHlwZSArICcgbm90IHN1cHBvcnRlZCcpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh2YWx1ZS5jcnMgJiYgdmFsdWUuY3JzLnR5cGUgJiYgdmFsdWUuY3JzLnR5cGUgPT09ICduYW1lJyAmJiB2YWx1ZS5jcnMucHJvcGVydGllcyAmJiB2YWx1ZS5jcnMucHJvcGVydGllcy5uYW1lKSB7XHJcbiAgICAgICAgdmFyIGNycyA9IHZhbHVlLmNycy5wcm9wZXJ0aWVzLm5hbWU7XHJcblxyXG4gICAgICAgIGlmIChjcnMuaW5kZXhPZignRVBTRzonKSA9PT0gMClcclxuICAgICAgICAgICAgZ2VvbWV0cnkuc3JpZCA9IHBhcnNlSW50KGNycy5zdWJzdHJpbmcoNSkpO1xyXG4gICAgICAgIGVsc2UgaWYgKGNycy5pbmRleE9mKCd1cm46b2djOmRlZjpjcnM6RVBTRzo6JykgPT09IDApXHJcbiAgICAgICAgICAgIGdlb21ldHJ5LnNyaWQgPSBwYXJzZUludChjcnMuc3Vic3RyaW5nKDIyKSk7XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIGNyczogJyArIGNycyk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGdlb21ldHJ5O1xyXG59O1xyXG5cclxuR2VvbWV0cnkucHJvdG90eXBlLnRvRXdrdCA9IGZ1bmN0aW9uICgpIHtcclxuICAgIHJldHVybiAnU1JJRD0nICsgdGhpcy5zcmlkICsgJzsnICsgdGhpcy50b1drdCgpO1xyXG59O1xyXG5cclxuR2VvbWV0cnkucHJvdG90eXBlLnRvRXdrYiA9IGZ1bmN0aW9uICgpIHtcclxuICAgIHZhciBld2tiID0gbmV3IEJpbmFyeVdyaXRlcih0aGlzLl9nZXRXa2JTaXplKCkgKyA0KTtcclxuICAgIHZhciB3a2IgPSB0aGlzLnRvV2tiKCk7XHJcblxyXG4gICAgZXdrYi53cml0ZUludDgoMSk7XHJcbiAgICBld2tiLndyaXRlVUludDMyTEUod2tiLnNsaWNlKDEsIDUpLnJlYWRVSW50MzJMRSgwKSB8IDB4MjAwMDAwMDAsIHRydWUpO1xyXG4gICAgZXdrYi53cml0ZVVJbnQzMkxFKHRoaXMuc3JpZCk7XHJcblxyXG4gICAgZXdrYi53cml0ZUJ1ZmZlcih3a2Iuc2xpY2UoNSkpO1xyXG5cclxuICAgIHJldHVybiBld2tiLmJ1ZmZlcjtcclxufTtcclxuXHJcbkdlb21ldHJ5LnByb3RvdHlwZS5fZ2V0V2t0VHlwZSA9IGZ1bmN0aW9uICh3a3RUeXBlLCBpc0VtcHR5KSB7XHJcbiAgICB2YXIgd2t0ID0gd2t0VHlwZTtcclxuXHJcbiAgICBpZiAodGhpcy5oYXNaICYmIHRoaXMuaGFzTSlcclxuICAgICAgICB3a3QgKz0gJyBaTSAnO1xyXG4gICAgZWxzZSBpZiAodGhpcy5oYXNaKVxyXG4gICAgICAgIHdrdCArPSAnIFogJztcclxuICAgIGVsc2UgaWYgKHRoaXMuaGFzTSlcclxuICAgICAgICB3a3QgKz0gJyBNICc7XHJcblxyXG4gICAgaWYgKGlzRW1wdHkgJiYgIXRoaXMuaGFzWiAmJiAhdGhpcy5oYXNNKVxyXG4gICAgICAgIHdrdCArPSAnICc7XHJcblxyXG4gICAgaWYgKGlzRW1wdHkpXHJcbiAgICAgICAgd2t0ICs9ICdFTVBUWSc7XHJcblxyXG4gICAgcmV0dXJuIHdrdDtcclxufTtcclxuXHJcbkdlb21ldHJ5LnByb3RvdHlwZS5fZ2V0V2t0Q29vcmRpbmF0ZSA9IGZ1bmN0aW9uIChwb2ludCkge1xyXG4gICAgdmFyIGNvb3JkaW5hdGVzID0gcG9pbnQueCArICcgJyArIHBvaW50Lnk7XHJcblxyXG4gICAgaWYgKHRoaXMuaGFzWilcclxuICAgICAgICBjb29yZGluYXRlcyArPSAnICcgKyBwb2ludC56O1xyXG4gICAgaWYgKHRoaXMuaGFzTSlcclxuICAgICAgICBjb29yZGluYXRlcyArPSAnICcgKyBwb2ludC5tO1xyXG5cclxuICAgIHJldHVybiBjb29yZGluYXRlcztcclxufTtcclxuXHJcbkdlb21ldHJ5LnByb3RvdHlwZS5fd3JpdGVXa2JUeXBlID0gZnVuY3Rpb24gKHdrYiwgZ2VvbWV0cnlUeXBlLCBwYXJlbnRPcHRpb25zKSB7XHJcbiAgICB2YXIgZGltZW5zaW9uVHlwZSA9IDA7XHJcblxyXG4gICAgaWYgKHR5cGVvZiB0aGlzLnNyaWQgPT09ICd1bmRlZmluZWQnICYmICghcGFyZW50T3B0aW9ucyB8fCB0eXBlb2YgcGFyZW50T3B0aW9ucy5zcmlkID09PSAndW5kZWZpbmVkJykpIHtcclxuICAgICAgICBpZiAodGhpcy5oYXNaICYmIHRoaXMuaGFzTSlcclxuICAgICAgICAgICAgZGltZW5zaW9uVHlwZSArPSAzMDAwO1xyXG4gICAgICAgIGVsc2UgaWYodGhpcy5oYXNaKVxyXG4gICAgICAgICAgICBkaW1lbnNpb25UeXBlICs9IDEwMDA7XHJcbiAgICAgICAgZWxzZSBpZih0aGlzLmhhc00pXHJcbiAgICAgICAgICAgIGRpbWVuc2lvblR5cGUgKz0gMjAwMDtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGlmICh0aGlzLmhhc1opXHJcbiAgICAgICAgICAgIGRpbWVuc2lvblR5cGUgfD0gMHg4MDAwMDAwMDtcclxuICAgICAgICBpZiAodGhpcy5oYXNNKVxyXG4gICAgICAgICAgICBkaW1lbnNpb25UeXBlIHw9IDB4NDAwMDAwMDA7XHJcbiAgICB9XHJcblxyXG4gICAgd2tiLndyaXRlVUludDMyTEUoZGltZW5zaW9uVHlwZSArIGdlb21ldHJ5VHlwZSwgdHJ1ZSk7XHJcbn07XHJcblxyXG5HZW9tZXRyeS5nZXRUd2tiUHJlY2lzaW9uID0gZnVuY3Rpb24gKHh5UHJlY2lzaW9uLCB6UHJlY2lzaW9uLCBtUHJlY2lzaW9uKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIHh5OiB4eVByZWNpc2lvbixcclxuICAgICAgICB6OiB6UHJlY2lzaW9uLFxyXG4gICAgICAgIG06IG1QcmVjaXNpb24sXHJcbiAgICAgICAgeHlGYWN0b3I6IE1hdGgucG93KDEwLCB4eVByZWNpc2lvbiksXHJcbiAgICAgICAgekZhY3RvcjogTWF0aC5wb3coMTAsIHpQcmVjaXNpb24pLFxyXG4gICAgICAgIG1GYWN0b3I6IE1hdGgucG93KDEwLCBtUHJlY2lzaW9uKVxyXG4gICAgfTtcclxufTtcclxuXHJcbkdlb21ldHJ5LnByb3RvdHlwZS5fd3JpdGVUd2tiSGVhZGVyID0gZnVuY3Rpb24gKHR3a2IsIGdlb21ldHJ5VHlwZSwgcHJlY2lzaW9uLCBpc0VtcHR5KSB7XHJcbiAgICB2YXIgdHlwZSA9IChaaWdaYWcuZW5jb2RlKHByZWNpc2lvbi54eSkgPDwgNCkgKyBnZW9tZXRyeVR5cGU7XHJcbiAgICB2YXIgbWV0YWRhdGFIZWFkZXIgPSAodGhpcy5oYXNaIHx8IHRoaXMuaGFzTSkgPDwgMztcclxuICAgIG1ldGFkYXRhSGVhZGVyICs9IGlzRW1wdHkgPDwgNDtcclxuXHJcbiAgICB0d2tiLndyaXRlVUludDgodHlwZSk7XHJcbiAgICB0d2tiLndyaXRlVUludDgobWV0YWRhdGFIZWFkZXIpO1xyXG5cclxuICAgIGlmICh0aGlzLmhhc1ogfHwgdGhpcy5oYXNNKSB7XHJcbiAgICAgICAgdmFyIGV4dGVuZGVkUHJlY2lzaW9uID0gMDtcclxuICAgICAgICBpZiAodGhpcy5oYXNaKVxyXG4gICAgICAgICAgICBleHRlbmRlZFByZWNpc2lvbiB8PSAweDE7XHJcbiAgICAgICAgaWYgKHRoaXMuaGFzTSlcclxuICAgICAgICAgICAgZXh0ZW5kZWRQcmVjaXNpb24gfD0gMHgyO1xyXG5cclxuICAgICAgICB0d2tiLndyaXRlVUludDgoZXh0ZW5kZWRQcmVjaXNpb24pO1xyXG4gICAgfVxyXG59O1xyXG5cclxuR2VvbWV0cnkucHJvdG90eXBlLnRvR2VvSlNPTiA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XHJcbiAgICB2YXIgZ2VvSlNPTiA9IHt9O1xyXG5cclxuICAgIGlmICh0aGlzLnNyaWQpIHtcclxuICAgICAgICBpZiAob3B0aW9ucykge1xyXG4gICAgICAgICAgICBpZiAob3B0aW9ucy5zaG9ydENycykge1xyXG4gICAgICAgICAgICAgICAgZ2VvSlNPTi5jcnMgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogJ25hbWUnLFxyXG4gICAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ0VQU0c6JyArIHRoaXMuc3JpZFxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAob3B0aW9ucy5sb25nQ3JzKSB7XHJcbiAgICAgICAgICAgICAgICBnZW9KU09OLmNycyA9IHtcclxuICAgICAgICAgICAgICAgICAgICB0eXBlOiAnbmFtZScsXHJcbiAgICAgICAgICAgICAgICAgICAgcHJvcGVydGllczoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAndXJuOm9nYzpkZWY6Y3JzOkVQU0c6OicgKyB0aGlzLnNyaWRcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBnZW9KU09OO1xyXG59O1xyXG4iLCJtb2R1bGUuZXhwb3J0cyA9IEdlb21ldHJ5Q29sbGVjdGlvbjtcclxuXHJcbnZhciB1dGlsID0gcmVxdWlyZSgndXRpbCcpO1xyXG5cclxudmFyIFR5cGVzID0gcmVxdWlyZSgnLi90eXBlcycpO1xyXG52YXIgR2VvbWV0cnkgPSByZXF1aXJlKCcuL2dlb21ldHJ5Jyk7XHJcbnZhciBCaW5hcnlXcml0ZXIgPSByZXF1aXJlKCcuL2JpbmFyeXdyaXRlcicpO1xyXG5cclxuZnVuY3Rpb24gR2VvbWV0cnlDb2xsZWN0aW9uKGdlb21ldHJpZXMpIHtcclxuICAgIEdlb21ldHJ5LmNhbGwodGhpcyk7XHJcblxyXG4gICAgdGhpcy5nZW9tZXRyaWVzID0gZ2VvbWV0cmllcyB8fCBbXTtcclxuXHJcbiAgICBpZiAodGhpcy5nZW9tZXRyaWVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICB0aGlzLmhhc1ogPSB0aGlzLmdlb21ldHJpZXNbMF0uaGFzWjtcclxuICAgICAgICB0aGlzLmhhc00gPSB0aGlzLmdlb21ldHJpZXNbMF0uaGFzTTtcclxuICAgIH1cclxufVxyXG5cclxudXRpbC5pbmhlcml0cyhHZW9tZXRyeUNvbGxlY3Rpb24sIEdlb21ldHJ5KTtcclxuXHJcbkdlb21ldHJ5Q29sbGVjdGlvbi5aID0gZnVuY3Rpb24gKGdlb21ldHJpZXMpIHtcclxuICAgIHZhciBnZW9tZXRyeUNvbGxlY3Rpb24gPSBuZXcgR2VvbWV0cnlDb2xsZWN0aW9uKGdlb21ldHJpZXMpO1xyXG4gICAgZ2VvbWV0cnlDb2xsZWN0aW9uLmhhc1ogPSB0cnVlO1xyXG4gICAgcmV0dXJuIGdlb21ldHJ5Q29sbGVjdGlvbjtcclxufTtcclxuXHJcbkdlb21ldHJ5Q29sbGVjdGlvbi5NID0gZnVuY3Rpb24gKGdlb21ldHJpZXMpIHtcclxuICAgIHZhciBnZW9tZXRyeUNvbGxlY3Rpb24gPSBuZXcgR2VvbWV0cnlDb2xsZWN0aW9uKGdlb21ldHJpZXMpO1xyXG4gICAgZ2VvbWV0cnlDb2xsZWN0aW9uLmhhc00gPSB0cnVlO1xyXG4gICAgcmV0dXJuIGdlb21ldHJ5Q29sbGVjdGlvbjtcclxufTtcclxuXHJcbkdlb21ldHJ5Q29sbGVjdGlvbi5aTSA9IGZ1bmN0aW9uIChnZW9tZXRyaWVzKSB7XHJcbiAgICB2YXIgZ2VvbWV0cnlDb2xsZWN0aW9uID0gbmV3IEdlb21ldHJ5Q29sbGVjdGlvbihnZW9tZXRyaWVzKTtcclxuICAgIGdlb21ldHJ5Q29sbGVjdGlvbi5oYXNaID0gdHJ1ZTtcclxuICAgIGdlb21ldHJ5Q29sbGVjdGlvbi5oYXNNID0gdHJ1ZTtcclxuICAgIHJldHVybiBnZW9tZXRyeUNvbGxlY3Rpb247XHJcbn07XHJcblxyXG5HZW9tZXRyeUNvbGxlY3Rpb24uX3BhcnNlV2t0ID0gZnVuY3Rpb24gKHZhbHVlLCBvcHRpb25zKSB7XHJcbiAgICB2YXIgZ2VvbWV0cnlDb2xsZWN0aW9uID0gbmV3IEdlb21ldHJ5Q29sbGVjdGlvbigpO1xyXG4gICAgZ2VvbWV0cnlDb2xsZWN0aW9uLnNyaWQgPSBvcHRpb25zLnNyaWQ7XHJcbiAgICBnZW9tZXRyeUNvbGxlY3Rpb24uaGFzWiA9IG9wdGlvbnMuaGFzWjtcclxuICAgIGdlb21ldHJ5Q29sbGVjdGlvbi5oYXNNID0gb3B0aW9ucy5oYXNNO1xyXG5cclxuICAgIGlmICh2YWx1ZS5pc01hdGNoKFsnRU1QVFknXSkpXHJcbiAgICAgICAgcmV0dXJuIGdlb21ldHJ5Q29sbGVjdGlvbjtcclxuXHJcbiAgICB2YWx1ZS5leHBlY3RHcm91cFN0YXJ0KCk7XHJcblxyXG4gICAgZG8ge1xyXG4gICAgICAgIGdlb21ldHJ5Q29sbGVjdGlvbi5nZW9tZXRyaWVzLnB1c2goR2VvbWV0cnkucGFyc2UodmFsdWUpKTtcclxuICAgIH0gd2hpbGUgKHZhbHVlLmlzTWF0Y2goWycsJ10pKTtcclxuXHJcbiAgICB2YWx1ZS5leHBlY3RHcm91cEVuZCgpO1xyXG5cclxuICAgIHJldHVybiBnZW9tZXRyeUNvbGxlY3Rpb247XHJcbn07XHJcblxyXG5HZW9tZXRyeUNvbGxlY3Rpb24uX3BhcnNlV2tiID0gZnVuY3Rpb24gKHZhbHVlLCBvcHRpb25zKSB7XHJcbiAgICB2YXIgZ2VvbWV0cnlDb2xsZWN0aW9uID0gbmV3IEdlb21ldHJ5Q29sbGVjdGlvbigpO1xyXG4gICAgZ2VvbWV0cnlDb2xsZWN0aW9uLnNyaWQgPSBvcHRpb25zLnNyaWQ7XHJcbiAgICBnZW9tZXRyeUNvbGxlY3Rpb24uaGFzWiA9IG9wdGlvbnMuaGFzWjtcclxuICAgIGdlb21ldHJ5Q29sbGVjdGlvbi5oYXNNID0gb3B0aW9ucy5oYXNNO1xyXG5cclxuICAgIHZhciBnZW9tZXRyeUNvdW50ID0gdmFsdWUucmVhZFVJbnQzMigpO1xyXG5cclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZ2VvbWV0cnlDb3VudDsgaSsrKVxyXG4gICAgICAgIGdlb21ldHJ5Q29sbGVjdGlvbi5nZW9tZXRyaWVzLnB1c2goR2VvbWV0cnkucGFyc2UodmFsdWUsIG9wdGlvbnMpKTtcclxuXHJcbiAgICByZXR1cm4gZ2VvbWV0cnlDb2xsZWN0aW9uO1xyXG59O1xyXG5cclxuR2VvbWV0cnlDb2xsZWN0aW9uLl9wYXJzZVR3a2IgPSBmdW5jdGlvbiAodmFsdWUsIG9wdGlvbnMpIHtcclxuICAgIHZhciBnZW9tZXRyeUNvbGxlY3Rpb24gPSBuZXcgR2VvbWV0cnlDb2xsZWN0aW9uKCk7XHJcbiAgICBnZW9tZXRyeUNvbGxlY3Rpb24uaGFzWiA9IG9wdGlvbnMuaGFzWjtcclxuICAgIGdlb21ldHJ5Q29sbGVjdGlvbi5oYXNNID0gb3B0aW9ucy5oYXNNO1xyXG5cclxuICAgIGlmIChvcHRpb25zLmlzRW1wdHkpXHJcbiAgICAgICAgcmV0dXJuIGdlb21ldHJ5Q29sbGVjdGlvbjtcclxuXHJcbiAgICB2YXIgZ2VvbWV0cnlDb3VudCA9IHZhbHVlLnJlYWRWYXJJbnQoKTtcclxuXHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGdlb21ldHJ5Q291bnQ7IGkrKylcclxuICAgICAgICBnZW9tZXRyeUNvbGxlY3Rpb24uZ2VvbWV0cmllcy5wdXNoKEdlb21ldHJ5LnBhcnNlVHdrYih2YWx1ZSkpO1xyXG5cclxuICAgIHJldHVybiBnZW9tZXRyeUNvbGxlY3Rpb247XHJcbn07XHJcblxyXG5HZW9tZXRyeUNvbGxlY3Rpb24uX3BhcnNlR2VvSlNPTiA9IGZ1bmN0aW9uICh2YWx1ZSkge1xyXG4gICAgdmFyIGdlb21ldHJ5Q29sbGVjdGlvbiA9IG5ldyBHZW9tZXRyeUNvbGxlY3Rpb24oKTtcclxuXHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHZhbHVlLmdlb21ldHJpZXMubGVuZ3RoOyBpKyspXHJcbiAgICAgICAgZ2VvbWV0cnlDb2xsZWN0aW9uLmdlb21ldHJpZXMucHVzaChHZW9tZXRyeS5wYXJzZUdlb0pTT04odmFsdWUuZ2VvbWV0cmllc1tpXSkpO1xyXG5cclxuICAgIGlmIChnZW9tZXRyeUNvbGxlY3Rpb24uZ2VvbWV0cmllcy5sZW5ndGggPiAwKVxyXG4gICAgICAgIGdlb21ldHJ5Q29sbGVjdGlvbi5oYXNaID0gZ2VvbWV0cnlDb2xsZWN0aW9uLmdlb21ldHJpZXNbMF0uaGFzWjtcclxuXHJcbiAgICByZXR1cm4gZ2VvbWV0cnlDb2xsZWN0aW9uO1xyXG59O1xyXG5cclxuR2VvbWV0cnlDb2xsZWN0aW9uLnByb3RvdHlwZS50b1drdCA9IGZ1bmN0aW9uICgpIHtcclxuICAgIGlmICh0aGlzLmdlb21ldHJpZXMubGVuZ3RoID09PSAwKVxyXG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRXa3RUeXBlKFR5cGVzLndrdC5HZW9tZXRyeUNvbGxlY3Rpb24sIHRydWUpO1xyXG5cclxuICAgIHZhciB3a3QgPSB0aGlzLl9nZXRXa3RUeXBlKFR5cGVzLndrdC5HZW9tZXRyeUNvbGxlY3Rpb24sIGZhbHNlKSArICcoJztcclxuXHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuZ2VvbWV0cmllcy5sZW5ndGg7IGkrKylcclxuICAgICAgICB3a3QgKz0gdGhpcy5nZW9tZXRyaWVzW2ldLnRvV2t0KCkgKyAnLCc7XHJcblxyXG4gICAgd2t0ID0gd2t0LnNsaWNlKDAsIC0xKTtcclxuICAgIHdrdCArPSAnKSc7XHJcblxyXG4gICAgcmV0dXJuIHdrdDtcclxufTtcclxuXHJcbkdlb21ldHJ5Q29sbGVjdGlvbi5wcm90b3R5cGUudG9Xa2IgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICB2YXIgd2tiID0gbmV3IEJpbmFyeVdyaXRlcih0aGlzLl9nZXRXa2JTaXplKCkpO1xyXG5cclxuICAgIHdrYi53cml0ZUludDgoMSk7XHJcblxyXG4gICAgdGhpcy5fd3JpdGVXa2JUeXBlKHdrYiwgVHlwZXMud2tiLkdlb21ldHJ5Q29sbGVjdGlvbik7XHJcbiAgICB3a2Iud3JpdGVVSW50MzJMRSh0aGlzLmdlb21ldHJpZXMubGVuZ3RoKTtcclxuXHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuZ2VvbWV0cmllcy5sZW5ndGg7IGkrKylcclxuICAgICAgICB3a2Iud3JpdGVCdWZmZXIodGhpcy5nZW9tZXRyaWVzW2ldLnRvV2tiKHsgc3JpZDogdGhpcy5zcmlkIH0pKTtcclxuXHJcbiAgICByZXR1cm4gd2tiLmJ1ZmZlcjtcclxufTtcclxuXHJcbkdlb21ldHJ5Q29sbGVjdGlvbi5wcm90b3R5cGUudG9Ud2tiID0gZnVuY3Rpb24gKCkge1xyXG4gICAgdmFyIHR3a2IgPSBuZXcgQmluYXJ5V3JpdGVyKDAsIHRydWUpO1xyXG5cclxuICAgIHZhciBwcmVjaXNpb24gPSBHZW9tZXRyeS5nZXRUd2tiUHJlY2lzaW9uKDUsIDAsIDApO1xyXG4gICAgdmFyIGlzRW1wdHkgPSB0aGlzLmdlb21ldHJpZXMubGVuZ3RoID09PSAwO1xyXG5cclxuICAgIHRoaXMuX3dyaXRlVHdrYkhlYWRlcih0d2tiLCBUeXBlcy53a2IuR2VvbWV0cnlDb2xsZWN0aW9uLCBwcmVjaXNpb24sIGlzRW1wdHkpO1xyXG5cclxuICAgIGlmICh0aGlzLmdlb21ldHJpZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHR3a2Iud3JpdGVWYXJJbnQodGhpcy5nZW9tZXRyaWVzLmxlbmd0aCk7XHJcblxyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5nZW9tZXRyaWVzLmxlbmd0aDsgaSsrKVxyXG4gICAgICAgICAgICB0d2tiLndyaXRlQnVmZmVyKHRoaXMuZ2VvbWV0cmllc1tpXS50b1R3a2IoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHR3a2IuYnVmZmVyO1xyXG59O1xyXG5cclxuR2VvbWV0cnlDb2xsZWN0aW9uLnByb3RvdHlwZS5fZ2V0V2tiU2l6ZSA9IGZ1bmN0aW9uICgpIHtcclxuICAgIHZhciBzaXplID0gMSArIDQgKyA0O1xyXG5cclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5nZW9tZXRyaWVzLmxlbmd0aDsgaSsrKVxyXG4gICAgICAgIHNpemUgKz0gdGhpcy5nZW9tZXRyaWVzW2ldLl9nZXRXa2JTaXplKCk7XHJcblxyXG4gICAgcmV0dXJuIHNpemU7XHJcbn07XHJcblxyXG5HZW9tZXRyeUNvbGxlY3Rpb24ucHJvdG90eXBlLnRvR2VvSlNPTiA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XHJcbiAgICB2YXIgZ2VvSlNPTiA9IEdlb21ldHJ5LnByb3RvdHlwZS50b0dlb0pTT04uY2FsbCh0aGlzLCBvcHRpb25zKTtcclxuICAgIGdlb0pTT04udHlwZSA9IFR5cGVzLmdlb0pTT04uR2VvbWV0cnlDb2xsZWN0aW9uO1xyXG4gICAgZ2VvSlNPTi5nZW9tZXRyaWVzID0gW107XHJcblxyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmdlb21ldHJpZXMubGVuZ3RoOyBpKyspXHJcbiAgICAgICAgZ2VvSlNPTi5nZW9tZXRyaWVzLnB1c2godGhpcy5nZW9tZXRyaWVzW2ldLnRvR2VvSlNPTigpKTtcclxuXHJcbiAgICByZXR1cm4gZ2VvSlNPTjtcclxufTtcclxuIiwibW9kdWxlLmV4cG9ydHMgPSBMaW5lU3RyaW5nO1xyXG5cclxudmFyIHV0aWwgPSByZXF1aXJlKCd1dGlsJyk7XHJcblxyXG52YXIgR2VvbWV0cnkgPSByZXF1aXJlKCcuL2dlb21ldHJ5Jyk7XHJcbnZhciBUeXBlcyA9IHJlcXVpcmUoJy4vdHlwZXMnKTtcclxudmFyIFBvaW50ID0gcmVxdWlyZSgnLi9wb2ludCcpO1xyXG52YXIgQmluYXJ5V3JpdGVyID0gcmVxdWlyZSgnLi9iaW5hcnl3cml0ZXInKTtcclxuXHJcbmZ1bmN0aW9uIExpbmVTdHJpbmcocG9pbnRzKSB7XHJcbiAgICBHZW9tZXRyeS5jYWxsKHRoaXMpO1xyXG5cclxuICAgIHRoaXMucG9pbnRzID0gcG9pbnRzIHx8IFtdO1xyXG5cclxuICAgIGlmICh0aGlzLnBvaW50cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGhpcy5oYXNaID0gdGhpcy5wb2ludHNbMF0uaGFzWjtcclxuICAgICAgICB0aGlzLmhhc00gPSB0aGlzLnBvaW50c1swXS5oYXNNO1xyXG4gICAgfVxyXG59XHJcblxyXG51dGlsLmluaGVyaXRzKExpbmVTdHJpbmcsIEdlb21ldHJ5KTtcclxuXHJcbkxpbmVTdHJpbmcuWiA9IGZ1bmN0aW9uIChwb2ludHMpIHtcclxuICAgIHZhciBsaW5lU3RyaW5nID0gbmV3IExpbmVTdHJpbmcocG9pbnRzKTtcclxuICAgIGxpbmVTdHJpbmcuaGFzWiA9IHRydWU7XHJcbiAgICByZXR1cm4gbGluZVN0cmluZztcclxufTtcclxuXHJcbkxpbmVTdHJpbmcuTSA9IGZ1bmN0aW9uIChwb2ludHMpIHtcclxuICAgIHZhciBsaW5lU3RyaW5nID0gbmV3IExpbmVTdHJpbmcocG9pbnRzKTtcclxuICAgIGxpbmVTdHJpbmcuaGFzTSA9IHRydWU7XHJcbiAgICByZXR1cm4gbGluZVN0cmluZztcclxufTtcclxuXHJcbkxpbmVTdHJpbmcuWk0gPSBmdW5jdGlvbiAocG9pbnRzKSB7XHJcbiAgICB2YXIgbGluZVN0cmluZyA9IG5ldyBMaW5lU3RyaW5nKHBvaW50cyk7XHJcbiAgICBsaW5lU3RyaW5nLmhhc1ogPSB0cnVlO1xyXG4gICAgbGluZVN0cmluZy5oYXNNID0gdHJ1ZTtcclxuICAgIHJldHVybiBsaW5lU3RyaW5nO1xyXG59O1xyXG5cclxuTGluZVN0cmluZy5fcGFyc2VXa3QgPSBmdW5jdGlvbiAodmFsdWUsIG9wdGlvbnMpIHtcclxuICAgIHZhciBsaW5lU3RyaW5nID0gbmV3IExpbmVTdHJpbmcoKTtcclxuICAgIGxpbmVTdHJpbmcuc3JpZCA9IG9wdGlvbnMuc3JpZDtcclxuICAgIGxpbmVTdHJpbmcuaGFzWiA9IG9wdGlvbnMuaGFzWjtcclxuICAgIGxpbmVTdHJpbmcuaGFzTSA9IG9wdGlvbnMuaGFzTTtcclxuXHJcbiAgICBpZiAodmFsdWUuaXNNYXRjaChbJ0VNUFRZJ10pKVxyXG4gICAgICAgIHJldHVybiBsaW5lU3RyaW5nO1xyXG5cclxuICAgIHZhbHVlLmV4cGVjdEdyb3VwU3RhcnQoKTtcclxuICAgIGxpbmVTdHJpbmcucG9pbnRzLnB1c2guYXBwbHkobGluZVN0cmluZy5wb2ludHMsIHZhbHVlLm1hdGNoQ29vcmRpbmF0ZXMob3B0aW9ucykpO1xyXG4gICAgdmFsdWUuZXhwZWN0R3JvdXBFbmQoKTtcclxuXHJcbiAgICByZXR1cm4gbGluZVN0cmluZztcclxufTtcclxuXHJcbkxpbmVTdHJpbmcuX3BhcnNlV2tiID0gZnVuY3Rpb24gKHZhbHVlLCBvcHRpb25zKSB7XHJcbiAgICB2YXIgbGluZVN0cmluZyA9IG5ldyBMaW5lU3RyaW5nKCk7XHJcbiAgICBsaW5lU3RyaW5nLnNyaWQgPSBvcHRpb25zLnNyaWQ7XHJcbiAgICBsaW5lU3RyaW5nLmhhc1ogPSBvcHRpb25zLmhhc1o7XHJcbiAgICBsaW5lU3RyaW5nLmhhc00gPSBvcHRpb25zLmhhc007XHJcblxyXG4gICAgdmFyIHBvaW50Q291bnQgPSB2YWx1ZS5yZWFkVUludDMyKCk7XHJcblxyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwb2ludENvdW50OyBpKyspXHJcbiAgICAgICAgbGluZVN0cmluZy5wb2ludHMucHVzaChQb2ludC5fcmVhZFdrYlBvaW50KHZhbHVlLCBvcHRpb25zKSk7XHJcblxyXG4gICAgcmV0dXJuIGxpbmVTdHJpbmc7XHJcbn07XHJcblxyXG5MaW5lU3RyaW5nLl9wYXJzZVR3a2IgPSBmdW5jdGlvbiAodmFsdWUsIG9wdGlvbnMpIHtcclxuICAgIHZhciBsaW5lU3RyaW5nID0gbmV3IExpbmVTdHJpbmcoKTtcclxuICAgIGxpbmVTdHJpbmcuaGFzWiA9IG9wdGlvbnMuaGFzWjtcclxuICAgIGxpbmVTdHJpbmcuaGFzTSA9IG9wdGlvbnMuaGFzTTtcclxuXHJcbiAgICBpZiAob3B0aW9ucy5pc0VtcHR5KVxyXG4gICAgICAgIHJldHVybiBsaW5lU3RyaW5nO1xyXG5cclxuICAgIHZhciBwcmV2aW91c1BvaW50ID0gbmV3IFBvaW50KDAsIDAsIG9wdGlvbnMuaGFzWiA/IDAgOiB1bmRlZmluZWQsIG9wdGlvbnMuaGFzTSA/IDAgOiB1bmRlZmluZWQpO1xyXG4gICAgdmFyIHBvaW50Q291bnQgPSB2YWx1ZS5yZWFkVmFySW50KCk7XHJcblxyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwb2ludENvdW50OyBpKyspXHJcbiAgICAgICAgbGluZVN0cmluZy5wb2ludHMucHVzaChQb2ludC5fcmVhZFR3a2JQb2ludCh2YWx1ZSwgb3B0aW9ucywgcHJldmlvdXNQb2ludCkpO1xyXG5cclxuICAgIHJldHVybiBsaW5lU3RyaW5nO1xyXG59O1xyXG5cclxuTGluZVN0cmluZy5fcGFyc2VHZW9KU09OID0gZnVuY3Rpb24gKHZhbHVlKSB7XHJcbiAgICB2YXIgbGluZVN0cmluZyA9IG5ldyBMaW5lU3RyaW5nKCk7XHJcblxyXG4gICAgaWYgKHZhbHVlLmNvb3JkaW5hdGVzLmxlbmd0aCA+IDApXHJcbiAgICAgICAgbGluZVN0cmluZy5oYXNaID0gdmFsdWUuY29vcmRpbmF0ZXNbMF0ubGVuZ3RoID4gMjtcclxuXHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHZhbHVlLmNvb3JkaW5hdGVzLmxlbmd0aDsgaSsrKVxyXG4gICAgICAgIGxpbmVTdHJpbmcucG9pbnRzLnB1c2goUG9pbnQuX3JlYWRHZW9KU09OUG9pbnQodmFsdWUuY29vcmRpbmF0ZXNbaV0pKTtcclxuXHJcbiAgICByZXR1cm4gbGluZVN0cmluZztcclxufTtcclxuXHJcbkxpbmVTdHJpbmcucHJvdG90eXBlLnRvV2t0ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgaWYgKHRoaXMucG9pbnRzLmxlbmd0aCA9PT0gMClcclxuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0V2t0VHlwZShUeXBlcy53a3QuTGluZVN0cmluZywgdHJ1ZSk7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuX2dldFdrdFR5cGUoVHlwZXMud2t0LkxpbmVTdHJpbmcsIGZhbHNlKSArIHRoaXMuX3RvSW5uZXJXa3QoKTtcclxufTtcclxuXHJcbkxpbmVTdHJpbmcucHJvdG90eXBlLl90b0lubmVyV2t0ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgdmFyIGlubmVyV2t0ID0gJygnO1xyXG5cclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5wb2ludHMubGVuZ3RoOyBpKyspXHJcbiAgICAgICAgaW5uZXJXa3QgKz0gdGhpcy5fZ2V0V2t0Q29vcmRpbmF0ZSh0aGlzLnBvaW50c1tpXSkgKyAnLCc7XHJcblxyXG4gICAgaW5uZXJXa3QgPSBpbm5lcldrdC5zbGljZSgwLCAtMSk7XHJcbiAgICBpbm5lcldrdCArPSAnKSc7XHJcblxyXG4gICAgcmV0dXJuIGlubmVyV2t0O1xyXG59O1xyXG5cclxuTGluZVN0cmluZy5wcm90b3R5cGUudG9Xa2IgPSBmdW5jdGlvbiAocGFyZW50T3B0aW9ucykge1xyXG4gICAgdmFyIHdrYiA9IG5ldyBCaW5hcnlXcml0ZXIodGhpcy5fZ2V0V2tiU2l6ZSgpKTtcclxuXHJcbiAgICB3a2Iud3JpdGVJbnQ4KDEpO1xyXG5cclxuICAgIHRoaXMuX3dyaXRlV2tiVHlwZSh3a2IsIFR5cGVzLndrYi5MaW5lU3RyaW5nLCBwYXJlbnRPcHRpb25zKTtcclxuICAgIHdrYi53cml0ZVVJbnQzMkxFKHRoaXMucG9pbnRzLmxlbmd0aCk7XHJcblxyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLnBvaW50cy5sZW5ndGg7IGkrKylcclxuICAgICAgICB0aGlzLnBvaW50c1tpXS5fd3JpdGVXa2JQb2ludCh3a2IpO1xyXG5cclxuICAgIHJldHVybiB3a2IuYnVmZmVyO1xyXG59O1xyXG5cclxuTGluZVN0cmluZy5wcm90b3R5cGUudG9Ud2tiID0gZnVuY3Rpb24gKCkge1xyXG4gICAgdmFyIHR3a2IgPSBuZXcgQmluYXJ5V3JpdGVyKDAsIHRydWUpO1xyXG5cclxuICAgIHZhciBwcmVjaXNpb24gPSBHZW9tZXRyeS5nZXRUd2tiUHJlY2lzaW9uKDUsIDAsIDApO1xyXG4gICAgdmFyIGlzRW1wdHkgPSB0aGlzLnBvaW50cy5sZW5ndGggPT09IDA7XHJcblxyXG4gICAgdGhpcy5fd3JpdGVUd2tiSGVhZGVyKHR3a2IsIFR5cGVzLndrYi5MaW5lU3RyaW5nLCBwcmVjaXNpb24sIGlzRW1wdHkpO1xyXG5cclxuICAgIGlmICh0aGlzLnBvaW50cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdHdrYi53cml0ZVZhckludCh0aGlzLnBvaW50cy5sZW5ndGgpO1xyXG5cclxuICAgICAgICB2YXIgcHJldmlvdXNQb2ludCA9IG5ldyBQb2ludCgwLCAwLCAwLCAwKTtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMucG9pbnRzLmxlbmd0aDsgaSsrKVxyXG4gICAgICAgICAgICB0aGlzLnBvaW50c1tpXS5fd3JpdGVUd2tiUG9pbnQodHdrYiwgcHJlY2lzaW9uLCBwcmV2aW91c1BvaW50KTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdHdrYi5idWZmZXI7XHJcbn07XHJcblxyXG5MaW5lU3RyaW5nLnByb3RvdHlwZS5fZ2V0V2tiU2l6ZSA9IGZ1bmN0aW9uICgpIHtcclxuICAgIHZhciBjb29yZGluYXRlU2l6ZSA9IDE2O1xyXG5cclxuICAgIGlmICh0aGlzLmhhc1opXHJcbiAgICAgICAgY29vcmRpbmF0ZVNpemUgKz0gODtcclxuICAgIGlmICh0aGlzLmhhc00pXHJcbiAgICAgICAgY29vcmRpbmF0ZVNpemUgKz0gODtcclxuXHJcbiAgICByZXR1cm4gMSArIDQgKyA0ICsgKHRoaXMucG9pbnRzLmxlbmd0aCAqIGNvb3JkaW5hdGVTaXplKTtcclxufTtcclxuXHJcbkxpbmVTdHJpbmcucHJvdG90eXBlLnRvR2VvSlNPTiA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XHJcbiAgICB2YXIgZ2VvSlNPTiA9IEdlb21ldHJ5LnByb3RvdHlwZS50b0dlb0pTT04uY2FsbCh0aGlzLCBvcHRpb25zKTtcclxuICAgIGdlb0pTT04udHlwZSA9IFR5cGVzLmdlb0pTT04uTGluZVN0cmluZztcclxuICAgIGdlb0pTT04uY29vcmRpbmF0ZXMgPSBbXTtcclxuXHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMucG9pbnRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuaGFzWilcclxuICAgICAgICAgICAgZ2VvSlNPTi5jb29yZGluYXRlcy5wdXNoKFt0aGlzLnBvaW50c1tpXS54LCB0aGlzLnBvaW50c1tpXS55LCB0aGlzLnBvaW50c1tpXS56XSk7XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICBnZW9KU09OLmNvb3JkaW5hdGVzLnB1c2goW3RoaXMucG9pbnRzW2ldLngsIHRoaXMucG9pbnRzW2ldLnldKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZ2VvSlNPTjtcclxufTtcclxuIiwibW9kdWxlLmV4cG9ydHMgPSBNdWx0aUxpbmVTdHJpbmc7XHJcblxyXG52YXIgdXRpbCA9IHJlcXVpcmUoJ3V0aWwnKTtcclxuXHJcbnZhciBUeXBlcyA9IHJlcXVpcmUoJy4vdHlwZXMnKTtcclxudmFyIEdlb21ldHJ5ID0gcmVxdWlyZSgnLi9nZW9tZXRyeScpO1xyXG52YXIgUG9pbnQgPSByZXF1aXJlKCcuL3BvaW50Jyk7XHJcbnZhciBMaW5lU3RyaW5nID0gcmVxdWlyZSgnLi9saW5lc3RyaW5nJyk7XHJcbnZhciBCaW5hcnlXcml0ZXIgPSByZXF1aXJlKCcuL2JpbmFyeXdyaXRlcicpO1xyXG5cclxuZnVuY3Rpb24gTXVsdGlMaW5lU3RyaW5nKGxpbmVTdHJpbmdzKSB7XHJcbiAgICBHZW9tZXRyeS5jYWxsKHRoaXMpO1xyXG5cclxuICAgIHRoaXMubGluZVN0cmluZ3MgPSBsaW5lU3RyaW5ncyB8fCBbXTtcclxuXHJcbiAgICBpZiAodGhpcy5saW5lU3RyaW5ncy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGhpcy5oYXNaID0gdGhpcy5saW5lU3RyaW5nc1swXS5oYXNaO1xyXG4gICAgICAgIHRoaXMuaGFzTSA9IHRoaXMubGluZVN0cmluZ3NbMF0uaGFzTTtcclxuICAgIH1cclxufVxyXG5cclxudXRpbC5pbmhlcml0cyhNdWx0aUxpbmVTdHJpbmcsIEdlb21ldHJ5KTtcclxuXHJcbk11bHRpTGluZVN0cmluZy5aID0gZnVuY3Rpb24gKGxpbmVTdHJpbmdzKSB7XHJcbiAgICB2YXIgbXVsdGlMaW5lU3RyaW5nID0gbmV3IE11bHRpTGluZVN0cmluZyhsaW5lU3RyaW5ncyk7XHJcbiAgICBtdWx0aUxpbmVTdHJpbmcuaGFzWiA9IHRydWU7XHJcbiAgICByZXR1cm4gbXVsdGlMaW5lU3RyaW5nO1xyXG59O1xyXG5cclxuTXVsdGlMaW5lU3RyaW5nLk0gPSBmdW5jdGlvbiAobGluZVN0cmluZ3MpIHtcclxuICAgIHZhciBtdWx0aUxpbmVTdHJpbmcgPSBuZXcgTXVsdGlMaW5lU3RyaW5nKGxpbmVTdHJpbmdzKTtcclxuICAgIG11bHRpTGluZVN0cmluZy5oYXNNID0gdHJ1ZTtcclxuICAgIHJldHVybiBtdWx0aUxpbmVTdHJpbmc7XHJcbn07XHJcblxyXG5NdWx0aUxpbmVTdHJpbmcuWk0gPSBmdW5jdGlvbiAobGluZVN0cmluZ3MpIHtcclxuICAgIHZhciBtdWx0aUxpbmVTdHJpbmcgPSBuZXcgTXVsdGlMaW5lU3RyaW5nKGxpbmVTdHJpbmdzKTtcclxuICAgIG11bHRpTGluZVN0cmluZy5oYXNaID0gdHJ1ZTtcclxuICAgIG11bHRpTGluZVN0cmluZy5oYXNNID0gdHJ1ZTtcclxuICAgIHJldHVybiBtdWx0aUxpbmVTdHJpbmc7XHJcbn07XHJcblxyXG5NdWx0aUxpbmVTdHJpbmcuX3BhcnNlV2t0ID0gZnVuY3Rpb24gKHZhbHVlLCBvcHRpb25zKSB7XHJcbiAgICB2YXIgbXVsdGlMaW5lU3RyaW5nID0gbmV3IE11bHRpTGluZVN0cmluZygpO1xyXG4gICAgbXVsdGlMaW5lU3RyaW5nLnNyaWQgPSBvcHRpb25zLnNyaWQ7XHJcbiAgICBtdWx0aUxpbmVTdHJpbmcuaGFzWiA9IG9wdGlvbnMuaGFzWjtcclxuICAgIG11bHRpTGluZVN0cmluZy5oYXNNID0gb3B0aW9ucy5oYXNNO1xyXG5cclxuICAgIGlmICh2YWx1ZS5pc01hdGNoKFsnRU1QVFknXSkpXHJcbiAgICAgICAgcmV0dXJuIG11bHRpTGluZVN0cmluZztcclxuXHJcbiAgICB2YWx1ZS5leHBlY3RHcm91cFN0YXJ0KCk7XHJcblxyXG4gICAgZG8ge1xyXG4gICAgICAgIHZhbHVlLmV4cGVjdEdyb3VwU3RhcnQoKTtcclxuICAgICAgICBtdWx0aUxpbmVTdHJpbmcubGluZVN0cmluZ3MucHVzaChuZXcgTGluZVN0cmluZyh2YWx1ZS5tYXRjaENvb3JkaW5hdGVzKG9wdGlvbnMpKSk7XHJcbiAgICAgICAgdmFsdWUuZXhwZWN0R3JvdXBFbmQoKTtcclxuICAgIH0gd2hpbGUgKHZhbHVlLmlzTWF0Y2goWycsJ10pKTtcclxuXHJcbiAgICB2YWx1ZS5leHBlY3RHcm91cEVuZCgpO1xyXG5cclxuICAgIHJldHVybiBtdWx0aUxpbmVTdHJpbmc7XHJcbn07XHJcblxyXG5NdWx0aUxpbmVTdHJpbmcuX3BhcnNlV2tiID0gZnVuY3Rpb24gKHZhbHVlLCBvcHRpb25zKSB7XHJcbiAgICB2YXIgbXVsdGlMaW5lU3RyaW5nID0gbmV3IE11bHRpTGluZVN0cmluZygpO1xyXG4gICAgbXVsdGlMaW5lU3RyaW5nLnNyaWQgPSBvcHRpb25zLnNyaWQ7XHJcbiAgICBtdWx0aUxpbmVTdHJpbmcuaGFzWiA9IG9wdGlvbnMuaGFzWjtcclxuICAgIG11bHRpTGluZVN0cmluZy5oYXNNID0gb3B0aW9ucy5oYXNNO1xyXG5cclxuICAgIHZhciBsaW5lU3RyaW5nQ291bnQgPSB2YWx1ZS5yZWFkVUludDMyKCk7XHJcblxyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaW5lU3RyaW5nQ291bnQ7IGkrKylcclxuICAgICAgICBtdWx0aUxpbmVTdHJpbmcubGluZVN0cmluZ3MucHVzaChHZW9tZXRyeS5wYXJzZSh2YWx1ZSwgb3B0aW9ucykpO1xyXG5cclxuICAgIHJldHVybiBtdWx0aUxpbmVTdHJpbmc7XHJcbn07XHJcblxyXG5NdWx0aUxpbmVTdHJpbmcuX3BhcnNlVHdrYiA9IGZ1bmN0aW9uICh2YWx1ZSwgb3B0aW9ucykge1xyXG4gICAgdmFyIG11bHRpTGluZVN0cmluZyA9IG5ldyBNdWx0aUxpbmVTdHJpbmcoKTtcclxuICAgIG11bHRpTGluZVN0cmluZy5oYXNaID0gb3B0aW9ucy5oYXNaO1xyXG4gICAgbXVsdGlMaW5lU3RyaW5nLmhhc00gPSBvcHRpb25zLmhhc007XHJcblxyXG4gICAgaWYgKG9wdGlvbnMuaXNFbXB0eSlcclxuICAgICAgICByZXR1cm4gbXVsdGlMaW5lU3RyaW5nO1xyXG5cclxuICAgIHZhciBwcmV2aW91c1BvaW50ID0gbmV3IFBvaW50KDAsIDAsIG9wdGlvbnMuaGFzWiA/IDAgOiB1bmRlZmluZWQsIG9wdGlvbnMuaGFzTSA/IDAgOiB1bmRlZmluZWQpO1xyXG4gICAgdmFyIGxpbmVTdHJpbmdDb3VudCA9IHZhbHVlLnJlYWRWYXJJbnQoKTtcclxuXHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxpbmVTdHJpbmdDb3VudDsgaSsrKSB7XHJcbiAgICAgICAgdmFyIGxpbmVTdHJpbmcgPSBuZXcgTGluZVN0cmluZygpO1xyXG4gICAgICAgIGxpbmVTdHJpbmcuaGFzWiA9IG9wdGlvbnMuaGFzWjtcclxuICAgICAgICBsaW5lU3RyaW5nLmhhc00gPSBvcHRpb25zLmhhc007XHJcblxyXG4gICAgICAgIHZhciBwb2ludENvdW50ID0gdmFsdWUucmVhZFZhckludCgpO1xyXG5cclxuICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHBvaW50Q291bnQ7IGorKylcclxuICAgICAgICAgICAgbGluZVN0cmluZy5wb2ludHMucHVzaChQb2ludC5fcmVhZFR3a2JQb2ludCh2YWx1ZSwgb3B0aW9ucywgcHJldmlvdXNQb2ludCkpO1xyXG5cclxuICAgICAgICBtdWx0aUxpbmVTdHJpbmcubGluZVN0cmluZ3MucHVzaChsaW5lU3RyaW5nKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gbXVsdGlMaW5lU3RyaW5nO1xyXG59O1xyXG5cclxuTXVsdGlMaW5lU3RyaW5nLl9wYXJzZUdlb0pTT04gPSBmdW5jdGlvbiAodmFsdWUpIHtcclxuICAgIHZhciBtdWx0aUxpbmVTdHJpbmcgPSBuZXcgTXVsdGlMaW5lU3RyaW5nKCk7XHJcblxyXG4gICAgaWYgKHZhbHVlLmNvb3JkaW5hdGVzLmxlbmd0aCA+IDAgJiYgdmFsdWUuY29vcmRpbmF0ZXNbMF0ubGVuZ3RoID4gMClcclxuICAgICAgICBtdWx0aUxpbmVTdHJpbmcuaGFzWiA9IHZhbHVlLmNvb3JkaW5hdGVzWzBdWzBdLmxlbmd0aCA+IDI7XHJcblxyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB2YWx1ZS5jb29yZGluYXRlcy5sZW5ndGg7IGkrKylcclxuICAgICAgICBtdWx0aUxpbmVTdHJpbmcubGluZVN0cmluZ3MucHVzaChMaW5lU3RyaW5nLl9wYXJzZUdlb0pTT04oeyBjb29yZGluYXRlczogdmFsdWUuY29vcmRpbmF0ZXNbaV0gfSkpO1xyXG5cclxuICAgIHJldHVybiBtdWx0aUxpbmVTdHJpbmc7XHJcbn07XHJcblxyXG5NdWx0aUxpbmVTdHJpbmcucHJvdG90eXBlLnRvV2t0ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgaWYgKHRoaXMubGluZVN0cmluZ3MubGVuZ3RoID09PSAwKVxyXG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRXa3RUeXBlKFR5cGVzLndrdC5NdWx0aUxpbmVTdHJpbmcsIHRydWUpO1xyXG5cclxuICAgIHZhciB3a3QgPSB0aGlzLl9nZXRXa3RUeXBlKFR5cGVzLndrdC5NdWx0aUxpbmVTdHJpbmcsIGZhbHNlKSArICcoJztcclxuXHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGluZVN0cmluZ3MubGVuZ3RoOyBpKyspXHJcbiAgICAgICAgd2t0ICs9IHRoaXMubGluZVN0cmluZ3NbaV0uX3RvSW5uZXJXa3QoKSArICcsJztcclxuXHJcbiAgICB3a3QgPSB3a3Quc2xpY2UoMCwgLTEpO1xyXG4gICAgd2t0ICs9ICcpJztcclxuXHJcbiAgICByZXR1cm4gd2t0O1xyXG59O1xyXG5cclxuTXVsdGlMaW5lU3RyaW5nLnByb3RvdHlwZS50b1drYiA9IGZ1bmN0aW9uICgpIHtcclxuICAgIHZhciB3a2IgPSBuZXcgQmluYXJ5V3JpdGVyKHRoaXMuX2dldFdrYlNpemUoKSk7XHJcblxyXG4gICAgd2tiLndyaXRlSW50OCgxKTtcclxuXHJcbiAgICB0aGlzLl93cml0ZVdrYlR5cGUod2tiLCBUeXBlcy53a2IuTXVsdGlMaW5lU3RyaW5nKTtcclxuICAgIHdrYi53cml0ZVVJbnQzMkxFKHRoaXMubGluZVN0cmluZ3MubGVuZ3RoKTtcclxuXHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGluZVN0cmluZ3MubGVuZ3RoOyBpKyspXHJcbiAgICAgICAgd2tiLndyaXRlQnVmZmVyKHRoaXMubGluZVN0cmluZ3NbaV0udG9Xa2IoeyBzcmlkOiB0aGlzLnNyaWQgfSkpO1xyXG5cclxuICAgIHJldHVybiB3a2IuYnVmZmVyO1xyXG59O1xyXG5cclxuTXVsdGlMaW5lU3RyaW5nLnByb3RvdHlwZS50b1R3a2IgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICB2YXIgdHdrYiA9IG5ldyBCaW5hcnlXcml0ZXIoMCwgdHJ1ZSk7XHJcblxyXG4gICAgdmFyIHByZWNpc2lvbiA9IEdlb21ldHJ5LmdldFR3a2JQcmVjaXNpb24oNSwgMCwgMCk7XHJcbiAgICB2YXIgaXNFbXB0eSA9IHRoaXMubGluZVN0cmluZ3MubGVuZ3RoID09PSAwO1xyXG5cclxuICAgIHRoaXMuX3dyaXRlVHdrYkhlYWRlcih0d2tiLCBUeXBlcy53a2IuTXVsdGlMaW5lU3RyaW5nLCBwcmVjaXNpb24sIGlzRW1wdHkpO1xyXG5cclxuICAgIGlmICh0aGlzLmxpbmVTdHJpbmdzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICB0d2tiLndyaXRlVmFySW50KHRoaXMubGluZVN0cmluZ3MubGVuZ3RoKTtcclxuXHJcbiAgICAgICAgdmFyIHByZXZpb3VzUG9pbnQgPSBuZXcgUG9pbnQoMCwgMCwgMCwgMCk7XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxpbmVTdHJpbmdzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIHR3a2Iud3JpdGVWYXJJbnQodGhpcy5saW5lU3RyaW5nc1tpXS5wb2ludHMubGVuZ3RoKTtcclxuXHJcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgdGhpcy5saW5lU3RyaW5nc1tpXS5wb2ludHMubGVuZ3RoOyBqKyspXHJcbiAgICAgICAgICAgICAgICB0aGlzLmxpbmVTdHJpbmdzW2ldLnBvaW50c1tqXS5fd3JpdGVUd2tiUG9pbnQodHdrYiwgcHJlY2lzaW9uLCBwcmV2aW91c1BvaW50KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHR3a2IuYnVmZmVyO1xyXG59O1xyXG5cclxuTXVsdGlMaW5lU3RyaW5nLnByb3RvdHlwZS5fZ2V0V2tiU2l6ZSA9IGZ1bmN0aW9uICgpIHtcclxuICAgIHZhciBzaXplID0gMSArIDQgKyA0O1xyXG5cclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5saW5lU3RyaW5ncy5sZW5ndGg7IGkrKylcclxuICAgICAgICBzaXplICs9IHRoaXMubGluZVN0cmluZ3NbaV0uX2dldFdrYlNpemUoKTtcclxuXHJcbiAgICByZXR1cm4gc2l6ZTtcclxufTtcclxuXHJcbk11bHRpTGluZVN0cmluZy5wcm90b3R5cGUudG9HZW9KU09OID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcclxuICAgIHZhciBnZW9KU09OID0gR2VvbWV0cnkucHJvdG90eXBlLnRvR2VvSlNPTi5jYWxsKHRoaXMsIG9wdGlvbnMpO1xyXG4gICAgZ2VvSlNPTi50eXBlID0gVHlwZXMuZ2VvSlNPTi5NdWx0aUxpbmVTdHJpbmc7XHJcbiAgICBnZW9KU09OLmNvb3JkaW5hdGVzID0gW107XHJcblxyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxpbmVTdHJpbmdzLmxlbmd0aDsgaSsrKVxyXG4gICAgICAgIGdlb0pTT04uY29vcmRpbmF0ZXMucHVzaCh0aGlzLmxpbmVTdHJpbmdzW2ldLnRvR2VvSlNPTigpLmNvb3JkaW5hdGVzKTtcclxuXHJcbiAgICByZXR1cm4gZ2VvSlNPTjtcclxufTtcclxuIiwibW9kdWxlLmV4cG9ydHMgPSBNdWx0aVBvaW50O1xyXG5cclxudmFyIHV0aWwgPSByZXF1aXJlKCd1dGlsJyk7XHJcblxyXG52YXIgVHlwZXMgPSByZXF1aXJlKCcuL3R5cGVzJyk7XHJcbnZhciBHZW9tZXRyeSA9IHJlcXVpcmUoJy4vZ2VvbWV0cnknKTtcclxudmFyIFBvaW50ID0gcmVxdWlyZSgnLi9wb2ludCcpO1xyXG52YXIgQmluYXJ5V3JpdGVyID0gcmVxdWlyZSgnLi9iaW5hcnl3cml0ZXInKTtcclxuXHJcbmZ1bmN0aW9uIE11bHRpUG9pbnQocG9pbnRzKSB7XHJcbiAgICBHZW9tZXRyeS5jYWxsKHRoaXMpO1xyXG5cclxuICAgIHRoaXMucG9pbnRzID0gcG9pbnRzIHx8IFtdO1xyXG5cclxuICAgIGlmICh0aGlzLnBvaW50cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGhpcy5oYXNaID0gdGhpcy5wb2ludHNbMF0uaGFzWjtcclxuICAgICAgICB0aGlzLmhhc00gPSB0aGlzLnBvaW50c1swXS5oYXNNO1xyXG4gICAgfVxyXG59XHJcblxyXG51dGlsLmluaGVyaXRzKE11bHRpUG9pbnQsIEdlb21ldHJ5KTtcclxuXHJcbk11bHRpUG9pbnQuWiA9IGZ1bmN0aW9uIChwb2ludHMpIHtcclxuICAgIHZhciBtdWx0aVBvaW50ID0gbmV3IE11bHRpUG9pbnQocG9pbnRzKTtcclxuICAgIG11bHRpUG9pbnQuaGFzWiA9IHRydWU7XHJcbiAgICByZXR1cm4gbXVsdGlQb2ludDtcclxufTtcclxuXHJcbk11bHRpUG9pbnQuTSA9IGZ1bmN0aW9uIChwb2ludHMpIHtcclxuICAgIHZhciBtdWx0aVBvaW50ID0gbmV3IE11bHRpUG9pbnQocG9pbnRzKTtcclxuICAgIG11bHRpUG9pbnQuaGFzTSA9IHRydWU7XHJcbiAgICByZXR1cm4gbXVsdGlQb2ludDtcclxufTtcclxuXHJcbk11bHRpUG9pbnQuWk0gPSBmdW5jdGlvbiAocG9pbnRzKSB7XHJcbiAgICB2YXIgbXVsdGlQb2ludCA9IG5ldyBNdWx0aVBvaW50KHBvaW50cyk7XHJcbiAgICBtdWx0aVBvaW50Lmhhc1ogPSB0cnVlO1xyXG4gICAgbXVsdGlQb2ludC5oYXNNID0gdHJ1ZTtcclxuICAgIHJldHVybiBtdWx0aVBvaW50O1xyXG59O1xyXG5cclxuTXVsdGlQb2ludC5fcGFyc2VXa3QgPSBmdW5jdGlvbiAodmFsdWUsIG9wdGlvbnMpIHtcclxuICAgIHZhciBtdWx0aVBvaW50ID0gbmV3IE11bHRpUG9pbnQoKTtcclxuICAgIG11bHRpUG9pbnQuc3JpZCA9IG9wdGlvbnMuc3JpZDtcclxuICAgIG11bHRpUG9pbnQuaGFzWiA9IG9wdGlvbnMuaGFzWjtcclxuICAgIG11bHRpUG9pbnQuaGFzTSA9IG9wdGlvbnMuaGFzTTtcclxuXHJcbiAgICBpZiAodmFsdWUuaXNNYXRjaChbJ0VNUFRZJ10pKVxyXG4gICAgICAgIHJldHVybiBtdWx0aVBvaW50O1xyXG5cclxuICAgIHZhbHVlLmV4cGVjdEdyb3VwU3RhcnQoKTtcclxuICAgIG11bHRpUG9pbnQucG9pbnRzLnB1c2guYXBwbHkobXVsdGlQb2ludC5wb2ludHMsIHZhbHVlLm1hdGNoQ29vcmRpbmF0ZXMob3B0aW9ucykpO1xyXG4gICAgdmFsdWUuZXhwZWN0R3JvdXBFbmQoKTtcclxuXHJcbiAgICByZXR1cm4gbXVsdGlQb2ludDtcclxufTtcclxuXHJcbk11bHRpUG9pbnQuX3BhcnNlV2tiID0gZnVuY3Rpb24gKHZhbHVlLCBvcHRpb25zKSB7XHJcbiAgICB2YXIgbXVsdGlQb2ludCA9IG5ldyBNdWx0aVBvaW50KCk7XHJcbiAgICBtdWx0aVBvaW50LnNyaWQgPSBvcHRpb25zLnNyaWQ7XHJcbiAgICBtdWx0aVBvaW50Lmhhc1ogPSBvcHRpb25zLmhhc1o7XHJcbiAgICBtdWx0aVBvaW50Lmhhc00gPSBvcHRpb25zLmhhc007XHJcblxyXG4gICAgdmFyIHBvaW50Q291bnQgPSB2YWx1ZS5yZWFkVUludDMyKCk7XHJcblxyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwb2ludENvdW50OyBpKyspXHJcbiAgICAgICAgbXVsdGlQb2ludC5wb2ludHMucHVzaChHZW9tZXRyeS5wYXJzZSh2YWx1ZSwgb3B0aW9ucykpO1xyXG5cclxuICAgIHJldHVybiBtdWx0aVBvaW50O1xyXG59O1xyXG5cclxuTXVsdGlQb2ludC5fcGFyc2VUd2tiID0gZnVuY3Rpb24gKHZhbHVlLCBvcHRpb25zKSB7XHJcbiAgICB2YXIgbXVsdGlQb2ludCA9IG5ldyBNdWx0aVBvaW50KCk7XHJcbiAgICBtdWx0aVBvaW50Lmhhc1ogPSBvcHRpb25zLmhhc1o7XHJcbiAgICBtdWx0aVBvaW50Lmhhc00gPSBvcHRpb25zLmhhc007XHJcblxyXG4gICAgaWYgKG9wdGlvbnMuaXNFbXB0eSlcclxuICAgICAgICByZXR1cm4gbXVsdGlQb2ludDtcclxuXHJcbiAgICB2YXIgcHJldmlvdXNQb2ludCA9IG5ldyBQb2ludCgwLCAwLCBvcHRpb25zLmhhc1ogPyAwIDogdW5kZWZpbmVkLCBvcHRpb25zLmhhc00gPyAwIDogdW5kZWZpbmVkKTtcclxuICAgIHZhciBwb2ludENvdW50ID0gdmFsdWUucmVhZFZhckludCgpO1xyXG5cclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcG9pbnRDb3VudDsgaSsrKVxyXG4gICAgICAgIG11bHRpUG9pbnQucG9pbnRzLnB1c2goUG9pbnQuX3JlYWRUd2tiUG9pbnQodmFsdWUsIG9wdGlvbnMsIHByZXZpb3VzUG9pbnQpKTtcclxuXHJcbiAgICByZXR1cm4gbXVsdGlQb2ludDtcclxufTtcclxuXHJcbk11bHRpUG9pbnQuX3BhcnNlR2VvSlNPTiA9IGZ1bmN0aW9uICh2YWx1ZSkge1xyXG4gICAgdmFyIG11bHRpUG9pbnQgPSBuZXcgTXVsdGlQb2ludCgpO1xyXG5cclxuICAgIGlmICh2YWx1ZS5jb29yZGluYXRlcy5sZW5ndGggPiAwKVxyXG4gICAgICAgIG11bHRpUG9pbnQuaGFzWiA9IHZhbHVlLmNvb3JkaW5hdGVzWzBdLmxlbmd0aCA+IDI7XHJcblxyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB2YWx1ZS5jb29yZGluYXRlcy5sZW5ndGg7IGkrKylcclxuICAgICAgICBtdWx0aVBvaW50LnBvaW50cy5wdXNoKFBvaW50Ll9wYXJzZUdlb0pTT04oeyBjb29yZGluYXRlczogdmFsdWUuY29vcmRpbmF0ZXNbaV0gfSkpO1xyXG5cclxuICAgIHJldHVybiBtdWx0aVBvaW50O1xyXG59O1xyXG5cclxuTXVsdGlQb2ludC5wcm90b3R5cGUudG9Xa3QgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICBpZiAodGhpcy5wb2ludHMubGVuZ3RoID09PSAwKVxyXG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRXa3RUeXBlKFR5cGVzLndrdC5NdWx0aVBvaW50LCB0cnVlKTtcclxuXHJcbiAgICB2YXIgd2t0ID0gdGhpcy5fZ2V0V2t0VHlwZShUeXBlcy53a3QuTXVsdGlQb2ludCwgZmFsc2UpICsgJygnO1xyXG5cclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5wb2ludHMubGVuZ3RoOyBpKyspXHJcbiAgICAgICAgd2t0ICs9IHRoaXMuX2dldFdrdENvb3JkaW5hdGUodGhpcy5wb2ludHNbaV0pICsgJywnO1xyXG5cclxuICAgIHdrdCA9IHdrdC5zbGljZSgwLCAtMSk7XHJcbiAgICB3a3QgKz0gJyknO1xyXG5cclxuICAgIHJldHVybiB3a3Q7XHJcbn07XHJcblxyXG5NdWx0aVBvaW50LnByb3RvdHlwZS50b1drYiA9IGZ1bmN0aW9uICgpIHtcclxuICAgIHZhciB3a2IgPSBuZXcgQmluYXJ5V3JpdGVyKHRoaXMuX2dldFdrYlNpemUoKSk7XHJcblxyXG4gICAgd2tiLndyaXRlSW50OCgxKTtcclxuXHJcbiAgICB0aGlzLl93cml0ZVdrYlR5cGUod2tiLCBUeXBlcy53a2IuTXVsdGlQb2ludCk7XHJcbiAgICB3a2Iud3JpdGVVSW50MzJMRSh0aGlzLnBvaW50cy5sZW5ndGgpO1xyXG5cclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5wb2ludHMubGVuZ3RoOyBpKyspXHJcbiAgICAgICAgd2tiLndyaXRlQnVmZmVyKHRoaXMucG9pbnRzW2ldLnRvV2tiKHsgc3JpZDogdGhpcy5zcmlkIH0pKTtcclxuXHJcbiAgICByZXR1cm4gd2tiLmJ1ZmZlcjtcclxufTtcclxuXHJcbk11bHRpUG9pbnQucHJvdG90eXBlLnRvVHdrYiA9IGZ1bmN0aW9uICgpIHtcclxuICAgIHZhciB0d2tiID0gbmV3IEJpbmFyeVdyaXRlcigwLCB0cnVlKTtcclxuXHJcbiAgICB2YXIgcHJlY2lzaW9uID0gR2VvbWV0cnkuZ2V0VHdrYlByZWNpc2lvbig1LCAwLCAwKTtcclxuICAgIHZhciBpc0VtcHR5ID0gdGhpcy5wb2ludHMubGVuZ3RoID09PSAwO1xyXG5cclxuICAgIHRoaXMuX3dyaXRlVHdrYkhlYWRlcih0d2tiLCBUeXBlcy53a2IuTXVsdGlQb2ludCwgcHJlY2lzaW9uLCBpc0VtcHR5KTtcclxuXHJcbiAgICBpZiAodGhpcy5wb2ludHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHR3a2Iud3JpdGVWYXJJbnQodGhpcy5wb2ludHMubGVuZ3RoKTtcclxuXHJcbiAgICAgICAgdmFyIHByZXZpb3VzUG9pbnQgPSBuZXcgUG9pbnQoMCwgMCwgMCwgMCk7XHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLnBvaW50cy5sZW5ndGg7IGkrKylcclxuICAgICAgICAgICAgdGhpcy5wb2ludHNbaV0uX3dyaXRlVHdrYlBvaW50KHR3a2IsIHByZWNpc2lvbiwgcHJldmlvdXNQb2ludCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHR3a2IuYnVmZmVyO1xyXG59O1xyXG5cclxuTXVsdGlQb2ludC5wcm90b3R5cGUuX2dldFdrYlNpemUgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICB2YXIgY29vcmRpbmF0ZVNpemUgPSAxNjtcclxuXHJcbiAgICBpZiAodGhpcy5oYXNaKVxyXG4gICAgICAgIGNvb3JkaW5hdGVTaXplICs9IDg7XHJcbiAgICBpZiAodGhpcy5oYXNNKVxyXG4gICAgICAgIGNvb3JkaW5hdGVTaXplICs9IDg7XHJcblxyXG4gICAgY29vcmRpbmF0ZVNpemUgKz0gNTtcclxuXHJcbiAgICByZXR1cm4gMSArIDQgKyA0ICsgKHRoaXMucG9pbnRzLmxlbmd0aCAqIGNvb3JkaW5hdGVTaXplKTtcclxufTtcclxuXHJcbk11bHRpUG9pbnQucHJvdG90eXBlLnRvR2VvSlNPTiA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XHJcbiAgICB2YXIgZ2VvSlNPTiA9IEdlb21ldHJ5LnByb3RvdHlwZS50b0dlb0pTT04uY2FsbCh0aGlzLCBvcHRpb25zKTtcclxuICAgIGdlb0pTT04udHlwZSA9IFR5cGVzLmdlb0pTT04uTXVsdGlQb2ludDtcclxuICAgIGdlb0pTT04uY29vcmRpbmF0ZXMgPSBbXTtcclxuXHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMucG9pbnRzLmxlbmd0aDsgaSsrKVxyXG4gICAgICAgIGdlb0pTT04uY29vcmRpbmF0ZXMucHVzaCh0aGlzLnBvaW50c1tpXS50b0dlb0pTT04oKS5jb29yZGluYXRlcyk7XHJcblxyXG4gICAgcmV0dXJuIGdlb0pTT047XHJcbn07XHJcbiIsIm1vZHVsZS5leHBvcnRzID0gTXVsdGlQb2x5Z29uO1xyXG5cclxudmFyIHV0aWwgPSByZXF1aXJlKCd1dGlsJyk7XHJcblxyXG52YXIgVHlwZXMgPSByZXF1aXJlKCcuL3R5cGVzJyk7XHJcbnZhciBHZW9tZXRyeSA9IHJlcXVpcmUoJy4vZ2VvbWV0cnknKTtcclxudmFyIFBvaW50ID0gcmVxdWlyZSgnLi9wb2ludCcpO1xyXG52YXIgUG9seWdvbiA9IHJlcXVpcmUoJy4vcG9seWdvbicpO1xyXG52YXIgQmluYXJ5V3JpdGVyID0gcmVxdWlyZSgnLi9iaW5hcnl3cml0ZXInKTtcclxuXHJcbmZ1bmN0aW9uIE11bHRpUG9seWdvbihwb2x5Z29ucykge1xyXG4gICAgR2VvbWV0cnkuY2FsbCh0aGlzKTtcclxuXHJcbiAgICB0aGlzLnBvbHlnb25zID0gcG9seWdvbnMgfHwgW107XHJcblxyXG4gICAgaWYgKHRoaXMucG9seWdvbnMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHRoaXMuaGFzWiA9IHRoaXMucG9seWdvbnNbMF0uaGFzWjtcclxuICAgICAgICB0aGlzLmhhc00gPSB0aGlzLnBvbHlnb25zWzBdLmhhc007XHJcbiAgICB9XHJcbn1cclxuXHJcbnV0aWwuaW5oZXJpdHMoTXVsdGlQb2x5Z29uLCBHZW9tZXRyeSk7XHJcblxyXG5NdWx0aVBvbHlnb24uWiA9IGZ1bmN0aW9uIChwb2x5Z29ucykge1xyXG4gICAgdmFyIG11bHRpUG9seWdvbiA9IG5ldyBNdWx0aVBvbHlnb24ocG9seWdvbnMpO1xyXG4gICAgbXVsdGlQb2x5Z29uLmhhc1ogPSB0cnVlO1xyXG4gICAgcmV0dXJuIG11bHRpUG9seWdvbjtcclxufTtcclxuXHJcbk11bHRpUG9seWdvbi5NID0gZnVuY3Rpb24gKHBvbHlnb25zKSB7XHJcbiAgICB2YXIgbXVsdGlQb2x5Z29uID0gbmV3IE11bHRpUG9seWdvbihwb2x5Z29ucyk7XHJcbiAgICBtdWx0aVBvbHlnb24uaGFzTSA9IHRydWU7XHJcbiAgICByZXR1cm4gbXVsdGlQb2x5Z29uO1xyXG59O1xyXG5cclxuTXVsdGlQb2x5Z29uLlpNID0gZnVuY3Rpb24gKHBvbHlnb25zKSB7XHJcbiAgICB2YXIgbXVsdGlQb2x5Z29uID0gbmV3IE11bHRpUG9seWdvbihwb2x5Z29ucyk7XHJcbiAgICBtdWx0aVBvbHlnb24uaGFzWiA9IHRydWU7XHJcbiAgICBtdWx0aVBvbHlnb24uaGFzTSA9IHRydWU7XHJcbiAgICByZXR1cm4gbXVsdGlQb2x5Z29uO1xyXG59O1xyXG5cclxuTXVsdGlQb2x5Z29uLl9wYXJzZVdrdCA9IGZ1bmN0aW9uICh2YWx1ZSwgb3B0aW9ucykge1xyXG4gICAgdmFyIG11bHRpUG9seWdvbiA9IG5ldyBNdWx0aVBvbHlnb24oKTtcclxuICAgIG11bHRpUG9seWdvbi5zcmlkID0gb3B0aW9ucy5zcmlkO1xyXG4gICAgbXVsdGlQb2x5Z29uLmhhc1ogPSBvcHRpb25zLmhhc1o7XHJcbiAgICBtdWx0aVBvbHlnb24uaGFzTSA9IG9wdGlvbnMuaGFzTTtcclxuXHJcbiAgICBpZiAodmFsdWUuaXNNYXRjaChbJ0VNUFRZJ10pKVxyXG4gICAgICAgIHJldHVybiBtdWx0aVBvbHlnb247XHJcblxyXG4gICAgdmFsdWUuZXhwZWN0R3JvdXBTdGFydCgpO1xyXG5cclxuICAgIGRvIHtcclxuICAgICAgICB2YWx1ZS5leHBlY3RHcm91cFN0YXJ0KCk7XHJcblxyXG4gICAgICAgIHZhciBleHRlcmlvclJpbmcgPSBbXTtcclxuICAgICAgICB2YXIgaW50ZXJpb3JSaW5ncyA9IFtdO1xyXG5cclxuICAgICAgICB2YWx1ZS5leHBlY3RHcm91cFN0YXJ0KCk7XHJcbiAgICAgICAgZXh0ZXJpb3JSaW5nLnB1c2guYXBwbHkoZXh0ZXJpb3JSaW5nLCB2YWx1ZS5tYXRjaENvb3JkaW5hdGVzKG9wdGlvbnMpKTtcclxuICAgICAgICB2YWx1ZS5leHBlY3RHcm91cEVuZCgpO1xyXG5cclxuICAgICAgICB3aGlsZSAodmFsdWUuaXNNYXRjaChbJywnXSkpIHtcclxuICAgICAgICAgICAgdmFsdWUuZXhwZWN0R3JvdXBTdGFydCgpO1xyXG4gICAgICAgICAgICBpbnRlcmlvclJpbmdzLnB1c2godmFsdWUubWF0Y2hDb29yZGluYXRlcyhvcHRpb25zKSk7XHJcbiAgICAgICAgICAgIHZhbHVlLmV4cGVjdEdyb3VwRW5kKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBtdWx0aVBvbHlnb24ucG9seWdvbnMucHVzaChuZXcgUG9seWdvbihleHRlcmlvclJpbmcsIGludGVyaW9yUmluZ3MpKTtcclxuXHJcbiAgICAgICAgdmFsdWUuZXhwZWN0R3JvdXBFbmQoKTtcclxuXHJcbiAgICB9IHdoaWxlICh2YWx1ZS5pc01hdGNoKFsnLCddKSk7XHJcblxyXG4gICAgdmFsdWUuZXhwZWN0R3JvdXBFbmQoKTtcclxuXHJcbiAgICByZXR1cm4gbXVsdGlQb2x5Z29uO1xyXG59O1xyXG5cclxuTXVsdGlQb2x5Z29uLl9wYXJzZVdrYiA9IGZ1bmN0aW9uICh2YWx1ZSwgb3B0aW9ucykge1xyXG4gICAgdmFyIG11bHRpUG9seWdvbiA9IG5ldyBNdWx0aVBvbHlnb24oKTtcclxuICAgIG11bHRpUG9seWdvbi5zcmlkID0gb3B0aW9ucy5zcmlkO1xyXG4gICAgbXVsdGlQb2x5Z29uLmhhc1ogPSBvcHRpb25zLmhhc1o7XHJcbiAgICBtdWx0aVBvbHlnb24uaGFzTSA9IG9wdGlvbnMuaGFzTTtcclxuXHJcbiAgICB2YXIgcG9seWdvbkNvdW50ID0gdmFsdWUucmVhZFVJbnQzMigpO1xyXG5cclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcG9seWdvbkNvdW50OyBpKyspXHJcbiAgICAgICAgbXVsdGlQb2x5Z29uLnBvbHlnb25zLnB1c2goR2VvbWV0cnkucGFyc2UodmFsdWUsIG9wdGlvbnMpKTtcclxuXHJcbiAgICByZXR1cm4gbXVsdGlQb2x5Z29uO1xyXG59O1xyXG5cclxuTXVsdGlQb2x5Z29uLl9wYXJzZVR3a2IgPSBmdW5jdGlvbiAodmFsdWUsIG9wdGlvbnMpIHtcclxuICAgIHZhciBtdWx0aVBvbHlnb24gPSBuZXcgTXVsdGlQb2x5Z29uKCk7XHJcbiAgICBtdWx0aVBvbHlnb24uaGFzWiA9IG9wdGlvbnMuaGFzWjtcclxuICAgIG11bHRpUG9seWdvbi5oYXNNID0gb3B0aW9ucy5oYXNNO1xyXG5cclxuICAgIGlmIChvcHRpb25zLmlzRW1wdHkpXHJcbiAgICAgICAgcmV0dXJuIG11bHRpUG9seWdvbjtcclxuXHJcbiAgICB2YXIgcHJldmlvdXNQb2ludCA9IG5ldyBQb2ludCgwLCAwLCBvcHRpb25zLmhhc1ogPyAwIDogdW5kZWZpbmVkLCBvcHRpb25zLmhhc00gPyAwIDogdW5kZWZpbmVkKTtcclxuICAgIHZhciBwb2x5Z29uQ291bnQgPSB2YWx1ZS5yZWFkVmFySW50KCk7XHJcblxyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwb2x5Z29uQ291bnQ7IGkrKykge1xyXG4gICAgICAgIHZhciBwb2x5Z29uID0gbmV3IFBvbHlnb24oKTtcclxuICAgICAgICBwb2x5Z29uLmhhc1ogPSBvcHRpb25zLmhhc1o7XHJcbiAgICAgICAgcG9seWdvbi5oYXNNID0gb3B0aW9ucy5oYXNNO1xyXG5cclxuICAgICAgICB2YXIgcmluZ0NvdW50ID0gdmFsdWUucmVhZFZhckludCgpO1xyXG4gICAgICAgIHZhciBleHRlcmlvclJpbmdDb3VudCA9IHZhbHVlLnJlYWRWYXJJbnQoKTtcclxuXHJcbiAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBleHRlcmlvclJpbmdDb3VudDsgaisrKVxyXG4gICAgICAgICAgICBwb2x5Z29uLmV4dGVyaW9yUmluZy5wdXNoKFBvaW50Ll9yZWFkVHdrYlBvaW50KHZhbHVlLCBvcHRpb25zLCBwcmV2aW91c1BvaW50KSk7XHJcblxyXG4gICAgICAgIGZvciAoaiA9IDE7IGogPCByaW5nQ291bnQ7IGorKykge1xyXG4gICAgICAgICAgICB2YXIgaW50ZXJpb3JSaW5nID0gW107XHJcblxyXG4gICAgICAgICAgICB2YXIgaW50ZXJpb3JSaW5nQ291bnQgPSB2YWx1ZS5yZWFkVmFySW50KCk7XHJcblxyXG4gICAgICAgICAgICBmb3IgKHZhciBrID0gMDsgayA8IGludGVyaW9yUmluZ0NvdW50OyBrKyspXHJcbiAgICAgICAgICAgICAgICBpbnRlcmlvclJpbmcucHVzaChQb2ludC5fcmVhZFR3a2JQb2ludCh2YWx1ZSwgb3B0aW9ucywgcHJldmlvdXNQb2ludCkpO1xyXG5cclxuICAgICAgICAgICAgcG9seWdvbi5pbnRlcmlvclJpbmdzLnB1c2goaW50ZXJpb3JSaW5nKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIG11bHRpUG9seWdvbi5wb2x5Z29ucy5wdXNoKHBvbHlnb24pO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBtdWx0aVBvbHlnb247XHJcbn07XHJcblxyXG5NdWx0aVBvbHlnb24uX3BhcnNlR2VvSlNPTiA9IGZ1bmN0aW9uICh2YWx1ZSkge1xyXG4gICAgdmFyIG11bHRpUG9seWdvbiA9IG5ldyBNdWx0aVBvbHlnb24oKTtcclxuXHJcbiAgICBpZiAodmFsdWUuY29vcmRpbmF0ZXMubGVuZ3RoID4gMCAmJiB2YWx1ZS5jb29yZGluYXRlc1swXS5sZW5ndGggPiAwICYmIHZhbHVlLmNvb3JkaW5hdGVzWzBdWzBdLmxlbmd0aCA+IDApXHJcbiAgICAgICAgbXVsdGlQb2x5Z29uLmhhc1ogPSB2YWx1ZS5jb29yZGluYXRlc1swXVswXVswXS5sZW5ndGggPiAyO1xyXG5cclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdmFsdWUuY29vcmRpbmF0ZXMubGVuZ3RoOyBpKyspXHJcbiAgICAgICAgbXVsdGlQb2x5Z29uLnBvbHlnb25zLnB1c2goUG9seWdvbi5fcGFyc2VHZW9KU09OKHsgY29vcmRpbmF0ZXM6IHZhbHVlLmNvb3JkaW5hdGVzW2ldIH0pKTtcclxuXHJcbiAgICByZXR1cm4gbXVsdGlQb2x5Z29uO1xyXG59O1xyXG5cclxuTXVsdGlQb2x5Z29uLnByb3RvdHlwZS50b1drdCA9IGZ1bmN0aW9uICgpIHtcclxuICAgIGlmICh0aGlzLnBvbHlnb25zLmxlbmd0aCA9PT0gMClcclxuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0V2t0VHlwZShUeXBlcy53a3QuTXVsdGlQb2x5Z29uLCB0cnVlKTtcclxuXHJcbiAgICB2YXIgd2t0ID0gdGhpcy5fZ2V0V2t0VHlwZShUeXBlcy53a3QuTXVsdGlQb2x5Z29uLCBmYWxzZSkgKyAnKCc7XHJcblxyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLnBvbHlnb25zLmxlbmd0aDsgaSsrKVxyXG4gICAgICAgIHdrdCArPSB0aGlzLnBvbHlnb25zW2ldLl90b0lubmVyV2t0KCkgKyAnLCc7XHJcblxyXG4gICAgd2t0ID0gd2t0LnNsaWNlKDAsIC0xKTtcclxuICAgIHdrdCArPSAnKSc7XHJcblxyXG4gICAgcmV0dXJuIHdrdDtcclxufTtcclxuXHJcbk11bHRpUG9seWdvbi5wcm90b3R5cGUudG9Xa2IgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICB2YXIgd2tiID0gbmV3IEJpbmFyeVdyaXRlcih0aGlzLl9nZXRXa2JTaXplKCkpO1xyXG5cclxuICAgIHdrYi53cml0ZUludDgoMSk7XHJcblxyXG4gICAgdGhpcy5fd3JpdGVXa2JUeXBlKHdrYiwgVHlwZXMud2tiLk11bHRpUG9seWdvbik7XHJcbiAgICB3a2Iud3JpdGVVSW50MzJMRSh0aGlzLnBvbHlnb25zLmxlbmd0aCk7XHJcblxyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLnBvbHlnb25zLmxlbmd0aDsgaSsrKVxyXG4gICAgICAgIHdrYi53cml0ZUJ1ZmZlcih0aGlzLnBvbHlnb25zW2ldLnRvV2tiKHsgc3JpZDogdGhpcy5zcmlkIH0pKTtcclxuXHJcbiAgICByZXR1cm4gd2tiLmJ1ZmZlcjtcclxufTtcclxuXHJcbk11bHRpUG9seWdvbi5wcm90b3R5cGUudG9Ud2tiID0gZnVuY3Rpb24gKCkge1xyXG4gICAgdmFyIHR3a2IgPSBuZXcgQmluYXJ5V3JpdGVyKDAsIHRydWUpO1xyXG5cclxuICAgIHZhciBwcmVjaXNpb24gPSBHZW9tZXRyeS5nZXRUd2tiUHJlY2lzaW9uKDUsIDAsIDApO1xyXG4gICAgdmFyIGlzRW1wdHkgPSB0aGlzLnBvbHlnb25zLmxlbmd0aCA9PT0gMDtcclxuXHJcbiAgICB0aGlzLl93cml0ZVR3a2JIZWFkZXIodHdrYiwgVHlwZXMud2tiLk11bHRpUG9seWdvbiwgcHJlY2lzaW9uLCBpc0VtcHR5KTtcclxuXHJcbiAgICBpZiAodGhpcy5wb2x5Z29ucy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdHdrYi53cml0ZVZhckludCh0aGlzLnBvbHlnb25zLmxlbmd0aCk7XHJcblxyXG4gICAgICAgIHZhciBwcmV2aW91c1BvaW50ID0gbmV3IFBvaW50KDAsIDAsIDAsIDApO1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5wb2x5Z29ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICB0d2tiLndyaXRlVmFySW50KDEgKyB0aGlzLnBvbHlnb25zW2ldLmludGVyaW9yUmluZ3MubGVuZ3RoKTtcclxuXHJcbiAgICAgICAgICAgIHR3a2Iud3JpdGVWYXJJbnQodGhpcy5wb2x5Z29uc1tpXS5leHRlcmlvclJpbmcubGVuZ3RoKTtcclxuXHJcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgdGhpcy5wb2x5Z29uc1tpXS5leHRlcmlvclJpbmcubGVuZ3RoOyBqKyspXHJcbiAgICAgICAgICAgICAgICB0aGlzLnBvbHlnb25zW2ldLmV4dGVyaW9yUmluZ1tqXS5fd3JpdGVUd2tiUG9pbnQodHdrYiwgcHJlY2lzaW9uLCBwcmV2aW91c1BvaW50KTtcclxuXHJcbiAgICAgICAgICAgIGZvciAoaiA9IDA7IGogPCB0aGlzLnBvbHlnb25zW2ldLmludGVyaW9yUmluZ3MubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICAgICAgICAgIHR3a2Iud3JpdGVWYXJJbnQodGhpcy5wb2x5Z29uc1tpXS5pbnRlcmlvclJpbmdzW2pdLmxlbmd0aCk7XHJcblxyXG4gICAgICAgICAgICAgICAgZm9yICh2YXIgayA9IDA7IGsgPCB0aGlzLnBvbHlnb25zW2ldLmludGVyaW9yUmluZ3Nbal0ubGVuZ3RoOyBrKyspXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wb2x5Z29uc1tpXS5pbnRlcmlvclJpbmdzW2pdW2tdLl93cml0ZVR3a2JQb2ludCh0d2tiLCBwcmVjaXNpb24sIHByZXZpb3VzUG9pbnQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0d2tiLmJ1ZmZlcjtcclxufTtcclxuXHJcbk11bHRpUG9seWdvbi5wcm90b3R5cGUuX2dldFdrYlNpemUgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICB2YXIgc2l6ZSA9IDEgKyA0ICsgNDtcclxuXHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMucG9seWdvbnMubGVuZ3RoOyBpKyspXHJcbiAgICAgICAgc2l6ZSArPSB0aGlzLnBvbHlnb25zW2ldLl9nZXRXa2JTaXplKCk7XHJcblxyXG4gICAgcmV0dXJuIHNpemU7XHJcbn07XHJcblxyXG5NdWx0aVBvbHlnb24ucHJvdG90eXBlLnRvR2VvSlNPTiA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XHJcbiAgICB2YXIgZ2VvSlNPTiA9IEdlb21ldHJ5LnByb3RvdHlwZS50b0dlb0pTT04uY2FsbCh0aGlzLCBvcHRpb25zKTtcclxuICAgIGdlb0pTT04udHlwZSA9IFR5cGVzLmdlb0pTT04uTXVsdGlQb2x5Z29uO1xyXG4gICAgZ2VvSlNPTi5jb29yZGluYXRlcyA9IFtdO1xyXG5cclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5wb2x5Z29ucy5sZW5ndGg7IGkrKylcclxuICAgICAgICBnZW9KU09OLmNvb3JkaW5hdGVzLnB1c2godGhpcy5wb2x5Z29uc1tpXS50b0dlb0pTT04oKS5jb29yZGluYXRlcyk7XHJcblxyXG4gICAgcmV0dXJuIGdlb0pTT047XHJcbn07XHJcbiIsIm1vZHVsZS5leHBvcnRzID0gUG9pbnQ7XHJcblxyXG52YXIgdXRpbCA9IHJlcXVpcmUoJ3V0aWwnKTtcclxuXHJcbnZhciBHZW9tZXRyeSA9IHJlcXVpcmUoJy4vZ2VvbWV0cnknKTtcclxudmFyIFR5cGVzID0gcmVxdWlyZSgnLi90eXBlcycpO1xyXG52YXIgQmluYXJ5V3JpdGVyID0gcmVxdWlyZSgnLi9iaW5hcnl3cml0ZXInKTtcclxudmFyIFppZ1phZyA9IHJlcXVpcmUoJy4vemlnemFnLmpzJyk7XHJcblxyXG5mdW5jdGlvbiBQb2ludCh4LCB5LCB6LCBtKSB7XHJcbiAgICBHZW9tZXRyeS5jYWxsKHRoaXMpO1xyXG5cclxuICAgIHRoaXMueCA9IHg7XHJcbiAgICB0aGlzLnkgPSB5O1xyXG4gICAgdGhpcy56ID0gejtcclxuICAgIHRoaXMubSA9IG07XHJcblxyXG4gICAgdGhpcy5oYXNaID0gdHlwZW9mIHRoaXMueiAhPT0gJ3VuZGVmaW5lZCc7XHJcbiAgICB0aGlzLmhhc00gPSB0eXBlb2YgdGhpcy5tICE9PSAndW5kZWZpbmVkJztcclxufVxyXG5cclxudXRpbC5pbmhlcml0cyhQb2ludCwgR2VvbWV0cnkpO1xyXG5cclxuUG9pbnQuWiA9IGZ1bmN0aW9uICh4LCB5LCB6KSB7XHJcbiAgICB2YXIgcG9pbnQgPSBuZXcgUG9pbnQoeCwgeSwgeik7XHJcbiAgICBwb2ludC5oYXNaID0gdHJ1ZTtcclxuICAgIHJldHVybiBwb2ludDtcclxufTtcclxuXHJcblBvaW50Lk0gPSBmdW5jdGlvbiAoeCwgeSwgbSkge1xyXG4gICAgdmFyIHBvaW50ID0gbmV3IFBvaW50KHgsIHksIHVuZGVmaW5lZCwgbSk7XHJcbiAgICBwb2ludC5oYXNNID0gdHJ1ZTtcclxuICAgIHJldHVybiBwb2ludDtcclxufTtcclxuXHJcblBvaW50LlpNID0gZnVuY3Rpb24gKHgsIHksIHosIG0pIHtcclxuICAgIHZhciBwb2ludCA9IG5ldyBQb2ludCh4LCB5LCB6LCBtKTtcclxuICAgIHBvaW50Lmhhc1ogPSB0cnVlO1xyXG4gICAgcG9pbnQuaGFzTSA9IHRydWU7XHJcbiAgICByZXR1cm4gcG9pbnQ7XHJcbn07XHJcblxyXG5Qb2ludC5fcGFyc2VXa3QgPSBmdW5jdGlvbiAodmFsdWUsIG9wdGlvbnMpIHtcclxuICAgIHZhciBwb2ludCA9IG5ldyBQb2ludCgpO1xyXG4gICAgcG9pbnQuc3JpZCA9IG9wdGlvbnMuc3JpZDtcclxuICAgIHBvaW50Lmhhc1ogPSBvcHRpb25zLmhhc1o7XHJcbiAgICBwb2ludC5oYXNNID0gb3B0aW9ucy5oYXNNO1xyXG5cclxuICAgIGlmICh2YWx1ZS5pc01hdGNoKFsnRU1QVFknXSkpXHJcbiAgICAgICAgcmV0dXJuIHBvaW50O1xyXG5cclxuICAgIHZhbHVlLmV4cGVjdEdyb3VwU3RhcnQoKTtcclxuXHJcbiAgICB2YXIgY29vcmRpbmF0ZSA9IHZhbHVlLm1hdGNoQ29vcmRpbmF0ZShvcHRpb25zKTtcclxuXHJcbiAgICBwb2ludC54ID0gY29vcmRpbmF0ZS54O1xyXG4gICAgcG9pbnQueSA9IGNvb3JkaW5hdGUueTtcclxuICAgIHBvaW50LnogPSBjb29yZGluYXRlLno7XHJcbiAgICBwb2ludC5tID0gY29vcmRpbmF0ZS5tO1xyXG5cclxuICAgIHZhbHVlLmV4cGVjdEdyb3VwRW5kKCk7XHJcblxyXG4gICAgcmV0dXJuIHBvaW50O1xyXG59O1xyXG5cclxuUG9pbnQuX3BhcnNlV2tiID0gZnVuY3Rpb24gKHZhbHVlLCBvcHRpb25zKSB7XHJcbiAgICB2YXIgcG9pbnQgPSBQb2ludC5fcmVhZFdrYlBvaW50KHZhbHVlLCBvcHRpb25zKTtcclxuICAgIHBvaW50LnNyaWQgPSBvcHRpb25zLnNyaWQ7XHJcbiAgICByZXR1cm4gcG9pbnQ7XHJcbn07XHJcblxyXG5Qb2ludC5fcmVhZFdrYlBvaW50ID0gZnVuY3Rpb24gKHZhbHVlLCBvcHRpb25zKSB7XHJcbiAgICByZXR1cm4gbmV3IFBvaW50KHZhbHVlLnJlYWREb3VibGUoKSwgdmFsdWUucmVhZERvdWJsZSgpLFxyXG4gICAgICAgIG9wdGlvbnMuaGFzWiA/IHZhbHVlLnJlYWREb3VibGUoKSA6IHVuZGVmaW5lZCxcclxuICAgICAgICBvcHRpb25zLmhhc00gPyB2YWx1ZS5yZWFkRG91YmxlKCkgOiB1bmRlZmluZWQpO1xyXG59O1xyXG5cclxuUG9pbnQuX3BhcnNlVHdrYiA9IGZ1bmN0aW9uICh2YWx1ZSwgb3B0aW9ucykge1xyXG4gICAgdmFyIHBvaW50ID0gbmV3IFBvaW50KCk7XHJcbiAgICBwb2ludC5oYXNaID0gb3B0aW9ucy5oYXNaO1xyXG4gICAgcG9pbnQuaGFzTSA9IG9wdGlvbnMuaGFzTTtcclxuXHJcbiAgICBpZiAob3B0aW9ucy5pc0VtcHR5KVxyXG4gICAgICAgIHJldHVybiBwb2ludDtcclxuXHJcbiAgICBwb2ludC54ID0gWmlnWmFnLmRlY29kZSh2YWx1ZS5yZWFkVmFySW50KCkpIC8gb3B0aW9ucy5wcmVjaXNpb25GYWN0b3I7XHJcbiAgICBwb2ludC55ID0gWmlnWmFnLmRlY29kZSh2YWx1ZS5yZWFkVmFySW50KCkpIC8gb3B0aW9ucy5wcmVjaXNpb25GYWN0b3I7XHJcbiAgICBwb2ludC56ID0gb3B0aW9ucy5oYXNaID8gWmlnWmFnLmRlY29kZSh2YWx1ZS5yZWFkVmFySW50KCkpIC8gb3B0aW9ucy56UHJlY2lzaW9uRmFjdG9yIDogdW5kZWZpbmVkO1xyXG4gICAgcG9pbnQubSA9IG9wdGlvbnMuaGFzTSA/IFppZ1phZy5kZWNvZGUodmFsdWUucmVhZFZhckludCgpKSAvIG9wdGlvbnMubVByZWNpc2lvbkZhY3RvciA6IHVuZGVmaW5lZDtcclxuXHJcbiAgICByZXR1cm4gcG9pbnQ7XHJcbn07XHJcblxyXG5Qb2ludC5fcmVhZFR3a2JQb2ludCA9IGZ1bmN0aW9uICh2YWx1ZSwgb3B0aW9ucywgcHJldmlvdXNQb2ludCkge1xyXG4gICAgcHJldmlvdXNQb2ludC54ICs9IFppZ1phZy5kZWNvZGUodmFsdWUucmVhZFZhckludCgpKSAvIG9wdGlvbnMucHJlY2lzaW9uRmFjdG9yO1xyXG4gICAgcHJldmlvdXNQb2ludC55ICs9IFppZ1phZy5kZWNvZGUodmFsdWUucmVhZFZhckludCgpKSAvIG9wdGlvbnMucHJlY2lzaW9uRmFjdG9yO1xyXG5cclxuICAgIGlmIChvcHRpb25zLmhhc1opXHJcbiAgICAgICAgcHJldmlvdXNQb2ludC56ICs9IFppZ1phZy5kZWNvZGUodmFsdWUucmVhZFZhckludCgpKSAvIG9wdGlvbnMuelByZWNpc2lvbkZhY3RvcjtcclxuICAgIGlmIChvcHRpb25zLmhhc00pXHJcbiAgICAgICAgcHJldmlvdXNQb2ludC5tICs9IFppZ1phZy5kZWNvZGUodmFsdWUucmVhZFZhckludCgpKSAvIG9wdGlvbnMubVByZWNpc2lvbkZhY3RvcjtcclxuXHJcbiAgICByZXR1cm4gbmV3IFBvaW50KHByZXZpb3VzUG9pbnQueCwgcHJldmlvdXNQb2ludC55LCBwcmV2aW91c1BvaW50LnosIHByZXZpb3VzUG9pbnQubSk7XHJcbn07XHJcblxyXG5Qb2ludC5fcGFyc2VHZW9KU09OID0gZnVuY3Rpb24gKHZhbHVlKSB7XHJcbiAgICByZXR1cm4gUG9pbnQuX3JlYWRHZW9KU09OUG9pbnQodmFsdWUuY29vcmRpbmF0ZXMpO1xyXG59O1xyXG5cclxuUG9pbnQuX3JlYWRHZW9KU09OUG9pbnQgPSBmdW5jdGlvbiAoY29vcmRpbmF0ZXMpIHtcclxuICAgIGlmIChjb29yZGluYXRlcy5sZW5ndGggPT09IDApXHJcbiAgICAgICAgcmV0dXJuIG5ldyBQb2ludCgpO1xyXG5cclxuICAgIGlmIChjb29yZGluYXRlcy5sZW5ndGggPiAyKVxyXG4gICAgICAgIHJldHVybiBuZXcgUG9pbnQoY29vcmRpbmF0ZXNbMF0sIGNvb3JkaW5hdGVzWzFdLCBjb29yZGluYXRlc1syXSk7XHJcblxyXG4gICAgcmV0dXJuIG5ldyBQb2ludChjb29yZGluYXRlc1swXSwgY29vcmRpbmF0ZXNbMV0pO1xyXG59O1xyXG5cclxuUG9pbnQucHJvdG90eXBlLnRvV2t0ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgaWYgKHR5cGVvZiB0aGlzLnggPT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiB0aGlzLnkgPT09ICd1bmRlZmluZWQnICYmXHJcbiAgICAgICAgdHlwZW9mIHRoaXMueiA9PT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIHRoaXMubSA9PT0gJ3VuZGVmaW5lZCcpXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldFdrdFR5cGUoVHlwZXMud2t0LlBvaW50LCB0cnVlKTtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5fZ2V0V2t0VHlwZShUeXBlcy53a3QuUG9pbnQsIGZhbHNlKSArICcoJyArIHRoaXMuX2dldFdrdENvb3JkaW5hdGUodGhpcykgKyAnKSc7XHJcbn07XHJcblxyXG5Qb2ludC5wcm90b3R5cGUudG9Xa2IgPSBmdW5jdGlvbiAocGFyZW50T3B0aW9ucykge1xyXG4gICAgdmFyIHdrYiA9IG5ldyBCaW5hcnlXcml0ZXIodGhpcy5fZ2V0V2tiU2l6ZSgpKTtcclxuXHJcbiAgICB3a2Iud3JpdGVJbnQ4KDEpO1xyXG4gICAgdGhpcy5fd3JpdGVXa2JUeXBlKHdrYiwgVHlwZXMud2tiLlBvaW50LCBwYXJlbnRPcHRpb25zKTtcclxuXHJcbiAgICBpZiAodHlwZW9mIHRoaXMueCA9PT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIHRoaXMueSA9PT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgICB3a2Iud3JpdGVEb3VibGVMRShOYU4pO1xyXG4gICAgICAgIHdrYi53cml0ZURvdWJsZUxFKE5hTik7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmhhc1opXHJcbiAgICAgICAgICAgIHdrYi53cml0ZURvdWJsZUxFKE5hTik7XHJcbiAgICAgICAgaWYgKHRoaXMuaGFzTSlcclxuICAgICAgICAgICAgd2tiLndyaXRlRG91YmxlTEUoTmFOKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIHRoaXMuX3dyaXRlV2tiUG9pbnQod2tiKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gd2tiLmJ1ZmZlcjtcclxufTtcclxuXHJcblBvaW50LnByb3RvdHlwZS5fd3JpdGVXa2JQb2ludCA9IGZ1bmN0aW9uICh3a2IpIHtcclxuICAgIHdrYi53cml0ZURvdWJsZUxFKHRoaXMueCk7XHJcbiAgICB3a2Iud3JpdGVEb3VibGVMRSh0aGlzLnkpO1xyXG5cclxuICAgIGlmICh0aGlzLmhhc1opXHJcbiAgICAgICAgd2tiLndyaXRlRG91YmxlTEUodGhpcy56KTtcclxuICAgIGlmICh0aGlzLmhhc00pXHJcbiAgICAgICAgd2tiLndyaXRlRG91YmxlTEUodGhpcy5tKTtcclxufTtcclxuXHJcblBvaW50LnByb3RvdHlwZS50b1R3a2IgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICB2YXIgdHdrYiA9IG5ldyBCaW5hcnlXcml0ZXIoMCwgdHJ1ZSk7XHJcblxyXG4gICAgdmFyIHByZWNpc2lvbiA9IEdlb21ldHJ5LmdldFR3a2JQcmVjaXNpb24oNSwgMCwgMCk7XHJcbiAgICB2YXIgaXNFbXB0eSA9IHR5cGVvZiB0aGlzLnggPT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiB0aGlzLnkgPT09ICd1bmRlZmluZWQnO1xyXG5cclxuICAgIHRoaXMuX3dyaXRlVHdrYkhlYWRlcih0d2tiLCBUeXBlcy53a2IuUG9pbnQsIHByZWNpc2lvbiwgaXNFbXB0eSk7XHJcblxyXG4gICAgaWYgKCFpc0VtcHR5KVxyXG4gICAgICAgIHRoaXMuX3dyaXRlVHdrYlBvaW50KHR3a2IsIHByZWNpc2lvbiwgbmV3IFBvaW50KDAsIDAsIDAsIDApKTtcclxuXHJcbiAgICByZXR1cm4gdHdrYi5idWZmZXI7XHJcbn07XHJcblxyXG5Qb2ludC5wcm90b3R5cGUuX3dyaXRlVHdrYlBvaW50ID0gZnVuY3Rpb24gKHR3a2IsIHByZWNpc2lvbiwgcHJldmlvdXNQb2ludCkge1xyXG4gICAgdmFyIHggPSB0aGlzLnggKiBwcmVjaXNpb24ueHlGYWN0b3I7XHJcbiAgICB2YXIgeSA9IHRoaXMueSAqIHByZWNpc2lvbi54eUZhY3RvcjtcclxuICAgIHZhciB6ID0gdGhpcy56ICogcHJlY2lzaW9uLnpGYWN0b3I7XHJcbiAgICB2YXIgbSA9IHRoaXMubSAqIHByZWNpc2lvbi5tRmFjdG9yO1xyXG5cclxuICAgIHR3a2Iud3JpdGVWYXJJbnQoWmlnWmFnLmVuY29kZSh4IC0gcHJldmlvdXNQb2ludC54KSk7XHJcbiAgICB0d2tiLndyaXRlVmFySW50KFppZ1phZy5lbmNvZGUoeSAtIHByZXZpb3VzUG9pbnQueSkpO1xyXG4gICAgaWYgKHRoaXMuaGFzWilcclxuICAgICAgICB0d2tiLndyaXRlVmFySW50KFppZ1phZy5lbmNvZGUoeiAtIHByZXZpb3VzUG9pbnQueikpO1xyXG4gICAgaWYgKHRoaXMuaGFzTSlcclxuICAgICAgICB0d2tiLndyaXRlVmFySW50KFppZ1phZy5lbmNvZGUobSAtIHByZXZpb3VzUG9pbnQubSkpO1xyXG5cclxuICAgIHByZXZpb3VzUG9pbnQueCA9IHg7XHJcbiAgICBwcmV2aW91c1BvaW50LnkgPSB5O1xyXG4gICAgcHJldmlvdXNQb2ludC56ID0gejtcclxuICAgIHByZXZpb3VzUG9pbnQubSA9IG07XHJcbn07XHJcblxyXG5Qb2ludC5wcm90b3R5cGUuX2dldFdrYlNpemUgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICB2YXIgc2l6ZSA9IDEgKyA0ICsgOCArIDg7XHJcblxyXG4gICAgaWYgKHRoaXMuaGFzWilcclxuICAgICAgICBzaXplICs9IDg7XHJcbiAgICBpZiAodGhpcy5oYXNNKVxyXG4gICAgICAgIHNpemUgKz0gODtcclxuXHJcbiAgICByZXR1cm4gc2l6ZTtcclxufTtcclxuXHJcblBvaW50LnByb3RvdHlwZS50b0dlb0pTT04gPSBmdW5jdGlvbiAob3B0aW9ucykge1xyXG4gICAgdmFyIGdlb0pTT04gPSBHZW9tZXRyeS5wcm90b3R5cGUudG9HZW9KU09OLmNhbGwodGhpcywgb3B0aW9ucyk7XHJcbiAgICBnZW9KU09OLnR5cGUgPSBUeXBlcy5nZW9KU09OLlBvaW50O1xyXG5cclxuICAgIGlmICh0eXBlb2YgdGhpcy54ID09PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgdGhpcy55ID09PSAndW5kZWZpbmVkJylcclxuICAgICAgICBnZW9KU09OLmNvb3JkaW5hdGVzID0gW107XHJcbiAgICBlbHNlIGlmICh0eXBlb2YgdGhpcy56ICE9PSAndW5kZWZpbmVkJylcclxuICAgICAgICBnZW9KU09OLmNvb3JkaW5hdGVzID0gW3RoaXMueCwgdGhpcy55LCB0aGlzLnpdO1xyXG4gICAgZWxzZVxyXG4gICAgICAgIGdlb0pTT04uY29vcmRpbmF0ZXMgPSBbdGhpcy54LCB0aGlzLnldO1xyXG5cclxuICAgIHJldHVybiBnZW9KU09OO1xyXG59O1xyXG4iLCJtb2R1bGUuZXhwb3J0cyA9IFBvbHlnb247XHJcblxyXG52YXIgdXRpbCA9IHJlcXVpcmUoJ3V0aWwnKTtcclxuXHJcbnZhciBHZW9tZXRyeSA9IHJlcXVpcmUoJy4vZ2VvbWV0cnknKTtcclxudmFyIFR5cGVzID0gcmVxdWlyZSgnLi90eXBlcycpO1xyXG52YXIgUG9pbnQgPSByZXF1aXJlKCcuL3BvaW50Jyk7XHJcbnZhciBCaW5hcnlXcml0ZXIgPSByZXF1aXJlKCcuL2JpbmFyeXdyaXRlcicpO1xyXG5cclxuZnVuY3Rpb24gUG9seWdvbihleHRlcmlvclJpbmcsIGludGVyaW9yUmluZ3MpIHtcclxuICAgIEdlb21ldHJ5LmNhbGwodGhpcyk7XHJcblxyXG4gICAgdGhpcy5leHRlcmlvclJpbmcgPSBleHRlcmlvclJpbmcgfHwgW107XHJcbiAgICB0aGlzLmludGVyaW9yUmluZ3MgPSBpbnRlcmlvclJpbmdzIHx8IFtdO1xyXG5cclxuICAgIGlmICh0aGlzLmV4dGVyaW9yUmluZy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGhpcy5oYXNaID0gdGhpcy5leHRlcmlvclJpbmdbMF0uaGFzWjtcclxuICAgICAgICB0aGlzLmhhc00gPSB0aGlzLmV4dGVyaW9yUmluZ1swXS5oYXNNO1xyXG4gICAgfVxyXG59XHJcblxyXG51dGlsLmluaGVyaXRzKFBvbHlnb24sIEdlb21ldHJ5KTtcclxuXHJcblBvbHlnb24uWiA9IGZ1bmN0aW9uIChleHRlcmlvclJpbmcsIGludGVyaW9yUmluZ3MpIHtcclxuICAgIHZhciBwb2x5Z29uID0gbmV3IFBvbHlnb24oZXh0ZXJpb3JSaW5nLCBpbnRlcmlvclJpbmdzKTtcclxuICAgIHBvbHlnb24uaGFzWiA9IHRydWU7XHJcbiAgICByZXR1cm4gcG9seWdvbjtcclxufTtcclxuXHJcblBvbHlnb24uTSA9IGZ1bmN0aW9uIChleHRlcmlvclJpbmcsIGludGVyaW9yUmluZ3MpIHtcclxuICAgIHZhciBwb2x5Z29uID0gbmV3IFBvbHlnb24oZXh0ZXJpb3JSaW5nLCBpbnRlcmlvclJpbmdzKTtcclxuICAgIHBvbHlnb24uaGFzTSA9IHRydWU7XHJcbiAgICByZXR1cm4gcG9seWdvbjtcclxufTtcclxuXHJcblBvbHlnb24uWk0gPSBmdW5jdGlvbiAoZXh0ZXJpb3JSaW5nLCBpbnRlcmlvclJpbmdzKSB7XHJcbiAgICB2YXIgcG9seWdvbiA9IG5ldyBQb2x5Z29uKGV4dGVyaW9yUmluZywgaW50ZXJpb3JSaW5ncyk7XHJcbiAgICBwb2x5Z29uLmhhc1ogPSB0cnVlO1xyXG4gICAgcG9seWdvbi5oYXNNID0gdHJ1ZTtcclxuICAgIHJldHVybiBwb2x5Z29uO1xyXG59O1xyXG5cclxuUG9seWdvbi5fcGFyc2VXa3QgPSBmdW5jdGlvbiAodmFsdWUsIG9wdGlvbnMpIHtcclxuICAgIHZhciBwb2x5Z29uID0gbmV3IFBvbHlnb24oKTtcclxuICAgIHBvbHlnb24uc3JpZCA9IG9wdGlvbnMuc3JpZDtcclxuICAgIHBvbHlnb24uaGFzWiA9IG9wdGlvbnMuaGFzWjtcclxuICAgIHBvbHlnb24uaGFzTSA9IG9wdGlvbnMuaGFzTTtcclxuXHJcbiAgICBpZiAodmFsdWUuaXNNYXRjaChbJ0VNUFRZJ10pKVxyXG4gICAgICAgIHJldHVybiBwb2x5Z29uO1xyXG5cclxuICAgIHZhbHVlLmV4cGVjdEdyb3VwU3RhcnQoKTtcclxuXHJcbiAgICB2YWx1ZS5leHBlY3RHcm91cFN0YXJ0KCk7XHJcbiAgICBwb2x5Z29uLmV4dGVyaW9yUmluZy5wdXNoLmFwcGx5KHBvbHlnb24uZXh0ZXJpb3JSaW5nLCB2YWx1ZS5tYXRjaENvb3JkaW5hdGVzKG9wdGlvbnMpKTtcclxuICAgIHZhbHVlLmV4cGVjdEdyb3VwRW5kKCk7XHJcblxyXG4gICAgd2hpbGUgKHZhbHVlLmlzTWF0Y2goWycsJ10pKSB7XHJcbiAgICAgICAgdmFsdWUuZXhwZWN0R3JvdXBTdGFydCgpO1xyXG4gICAgICAgIHBvbHlnb24uaW50ZXJpb3JSaW5ncy5wdXNoKHZhbHVlLm1hdGNoQ29vcmRpbmF0ZXMob3B0aW9ucykpO1xyXG4gICAgICAgIHZhbHVlLmV4cGVjdEdyb3VwRW5kKCk7XHJcbiAgICB9XHJcblxyXG4gICAgdmFsdWUuZXhwZWN0R3JvdXBFbmQoKTtcclxuXHJcbiAgICByZXR1cm4gcG9seWdvbjtcclxufTtcclxuXHJcblBvbHlnb24uX3BhcnNlV2tiID0gZnVuY3Rpb24gKHZhbHVlLCBvcHRpb25zKSB7XHJcbiAgICB2YXIgcG9seWdvbiA9IG5ldyBQb2x5Z29uKCk7XHJcbiAgICBwb2x5Z29uLnNyaWQgPSBvcHRpb25zLnNyaWQ7XHJcbiAgICBwb2x5Z29uLmhhc1ogPSBvcHRpb25zLmhhc1o7XHJcbiAgICBwb2x5Z29uLmhhc00gPSBvcHRpb25zLmhhc007XHJcblxyXG4gICAgdmFyIHJpbmdDb3VudCA9IHZhbHVlLnJlYWRVSW50MzIoKTtcclxuXHJcbiAgICBpZiAocmluZ0NvdW50ID4gMCkge1xyXG4gICAgICAgIHZhciBleHRlcmlvclJpbmdDb3VudCA9IHZhbHVlLnJlYWRVSW50MzIoKTtcclxuXHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBleHRlcmlvclJpbmdDb3VudDsgaSsrKVxyXG4gICAgICAgICAgICBwb2x5Z29uLmV4dGVyaW9yUmluZy5wdXNoKFBvaW50Ll9yZWFkV2tiUG9pbnQodmFsdWUsIG9wdGlvbnMpKTtcclxuXHJcbiAgICAgICAgZm9yIChpID0gMTsgaSA8IHJpbmdDb3VudDsgaSsrKSB7XHJcbiAgICAgICAgICAgIHZhciBpbnRlcmlvclJpbmcgPSBbXTtcclxuXHJcbiAgICAgICAgICAgIHZhciBpbnRlcmlvclJpbmdDb3VudCA9IHZhbHVlLnJlYWRVSW50MzIoKTtcclxuXHJcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgaW50ZXJpb3JSaW5nQ291bnQ7IGorKylcclxuICAgICAgICAgICAgICAgIGludGVyaW9yUmluZy5wdXNoKFBvaW50Ll9yZWFkV2tiUG9pbnQodmFsdWUsIG9wdGlvbnMpKTtcclxuXHJcbiAgICAgICAgICAgIHBvbHlnb24uaW50ZXJpb3JSaW5ncy5wdXNoKGludGVyaW9yUmluZyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBwb2x5Z29uO1xyXG59O1xyXG5cclxuUG9seWdvbi5fcGFyc2VUd2tiID0gZnVuY3Rpb24gKHZhbHVlLCBvcHRpb25zKSB7XHJcbiAgICB2YXIgcG9seWdvbiA9IG5ldyBQb2x5Z29uKCk7XHJcbiAgICBwb2x5Z29uLmhhc1ogPSBvcHRpb25zLmhhc1o7XHJcbiAgICBwb2x5Z29uLmhhc00gPSBvcHRpb25zLmhhc007XHJcblxyXG4gICAgaWYgKG9wdGlvbnMuaXNFbXB0eSlcclxuICAgICAgICByZXR1cm4gcG9seWdvbjtcclxuXHJcbiAgICB2YXIgcHJldmlvdXNQb2ludCA9IG5ldyBQb2ludCgwLCAwLCBvcHRpb25zLmhhc1ogPyAwIDogdW5kZWZpbmVkLCBvcHRpb25zLmhhc00gPyAwIDogdW5kZWZpbmVkKTtcclxuICAgIHZhciByaW5nQ291bnQgPSB2YWx1ZS5yZWFkVmFySW50KCk7XHJcbiAgICB2YXIgZXh0ZXJpb3JSaW5nQ291bnQgPSB2YWx1ZS5yZWFkVmFySW50KCk7XHJcblxyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBleHRlcmlvclJpbmdDb3VudDsgaSsrKVxyXG4gICAgICAgIHBvbHlnb24uZXh0ZXJpb3JSaW5nLnB1c2goUG9pbnQuX3JlYWRUd2tiUG9pbnQodmFsdWUsIG9wdGlvbnMsIHByZXZpb3VzUG9pbnQpKTtcclxuXHJcbiAgICBmb3IgKGkgPSAxOyBpIDwgcmluZ0NvdW50OyBpKyspIHtcclxuICAgICAgICB2YXIgaW50ZXJpb3JSaW5nID0gW107XHJcblxyXG4gICAgICAgIHZhciBpbnRlcmlvclJpbmdDb3VudCA9IHZhbHVlLnJlYWRWYXJJbnQoKTtcclxuXHJcbiAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBpbnRlcmlvclJpbmdDb3VudDsgaisrKVxyXG4gICAgICAgICAgICBpbnRlcmlvclJpbmcucHVzaChQb2ludC5fcmVhZFR3a2JQb2ludCh2YWx1ZSwgb3B0aW9ucywgcHJldmlvdXNQb2ludCkpO1xyXG5cclxuICAgICAgICBwb2x5Z29uLmludGVyaW9yUmluZ3MucHVzaChpbnRlcmlvclJpbmcpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBwb2x5Z29uO1xyXG59O1xyXG5cclxuUG9seWdvbi5fcGFyc2VHZW9KU09OID0gZnVuY3Rpb24gKHZhbHVlKSB7XHJcbiAgICB2YXIgcG9seWdvbiA9IG5ldyBQb2x5Z29uKCk7XHJcblxyXG4gICAgaWYgKHZhbHVlLmNvb3JkaW5hdGVzLmxlbmd0aCA+IDAgJiYgdmFsdWUuY29vcmRpbmF0ZXNbMF0ubGVuZ3RoID4gMClcclxuICAgICAgICBwb2x5Z29uLmhhc1ogPSB2YWx1ZS5jb29yZGluYXRlc1swXVswXS5sZW5ndGggPiAyO1xyXG5cclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdmFsdWUuY29vcmRpbmF0ZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBpZiAoaSA+IDApXHJcbiAgICAgICAgICAgIHBvbHlnb24uaW50ZXJpb3JSaW5ncy5wdXNoKFtdKTtcclxuXHJcbiAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogIDwgdmFsdWUuY29vcmRpbmF0ZXNbaV0ubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICAgICAgaWYgKGkgPT09IDApXHJcbiAgICAgICAgICAgICAgICBwb2x5Z29uLmV4dGVyaW9yUmluZy5wdXNoKFBvaW50Ll9yZWFkR2VvSlNPTlBvaW50KHZhbHVlLmNvb3JkaW5hdGVzW2ldW2pdKSk7XHJcbiAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgIHBvbHlnb24uaW50ZXJpb3JSaW5nc1tpIC0gMV0ucHVzaChQb2ludC5fcmVhZEdlb0pTT05Qb2ludCh2YWx1ZS5jb29yZGluYXRlc1tpXVtqXSkpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcG9seWdvbjtcclxufTtcclxuXHJcblBvbHlnb24ucHJvdG90eXBlLnRvV2t0ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgaWYgKHRoaXMuZXh0ZXJpb3JSaW5nLmxlbmd0aCA9PT0gMClcclxuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0V2t0VHlwZShUeXBlcy53a3QuUG9seWdvbiwgdHJ1ZSk7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuX2dldFdrdFR5cGUoVHlwZXMud2t0LlBvbHlnb24sIGZhbHNlKSArIHRoaXMuX3RvSW5uZXJXa3QoKTtcclxufTtcclxuXHJcblBvbHlnb24ucHJvdG90eXBlLl90b0lubmVyV2t0ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgdmFyIGlubmVyV2t0ID0gJygoJztcclxuXHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuZXh0ZXJpb3JSaW5nLmxlbmd0aDsgaSsrKVxyXG4gICAgICAgIGlubmVyV2t0ICs9IHRoaXMuX2dldFdrdENvb3JkaW5hdGUodGhpcy5leHRlcmlvclJpbmdbaV0pICsgJywnO1xyXG5cclxuICAgIGlubmVyV2t0ID0gaW5uZXJXa3Quc2xpY2UoMCwgLTEpO1xyXG4gICAgaW5uZXJXa3QgKz0gJyknO1xyXG5cclxuICAgIGZvciAoaSA9IDA7IGkgPCB0aGlzLmludGVyaW9yUmluZ3MubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBpbm5lcldrdCArPSAnLCgnO1xyXG5cclxuICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHRoaXMuaW50ZXJpb3JSaW5nc1tpXS5sZW5ndGg7IGorKykge1xyXG4gICAgICAgICAgICBpbm5lcldrdCArPSB0aGlzLl9nZXRXa3RDb29yZGluYXRlKHRoaXMuaW50ZXJpb3JSaW5nc1tpXVtqXSkgKyAnLCc7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpbm5lcldrdCA9IGlubmVyV2t0LnNsaWNlKDAsIC0xKTtcclxuICAgICAgICBpbm5lcldrdCArPSAnKSc7XHJcbiAgICB9XHJcblxyXG4gICAgaW5uZXJXa3QgKz0gJyknO1xyXG5cclxuICAgIHJldHVybiBpbm5lcldrdDtcclxufTtcclxuXHJcblBvbHlnb24ucHJvdG90eXBlLnRvV2tiID0gZnVuY3Rpb24gKHBhcmVudE9wdGlvbnMpIHtcclxuICAgIHZhciB3a2IgPSBuZXcgQmluYXJ5V3JpdGVyKHRoaXMuX2dldFdrYlNpemUoKSk7XHJcblxyXG4gICAgd2tiLndyaXRlSW50OCgxKTtcclxuXHJcbiAgICB0aGlzLl93cml0ZVdrYlR5cGUod2tiLCBUeXBlcy53a2IuUG9seWdvbiwgcGFyZW50T3B0aW9ucyk7XHJcblxyXG4gICAgaWYgKHRoaXMuZXh0ZXJpb3JSaW5nLmxlbmd0aCA+IDApIHtcclxuICAgICAgICB3a2Iud3JpdGVVSW50MzJMRSgxICsgdGhpcy5pbnRlcmlvclJpbmdzLmxlbmd0aCk7XHJcbiAgICAgICAgd2tiLndyaXRlVUludDMyTEUodGhpcy5leHRlcmlvclJpbmcubGVuZ3RoKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIHdrYi53cml0ZVVJbnQzMkxFKDApO1xyXG4gICAgfVxyXG5cclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5leHRlcmlvclJpbmcubGVuZ3RoOyBpKyspXHJcbiAgICAgICAgdGhpcy5leHRlcmlvclJpbmdbaV0uX3dyaXRlV2tiUG9pbnQod2tiKTtcclxuXHJcbiAgICBmb3IgKGkgPSAwOyBpIDwgdGhpcy5pbnRlcmlvclJpbmdzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgd2tiLndyaXRlVUludDMyTEUodGhpcy5pbnRlcmlvclJpbmdzW2ldLmxlbmd0aCk7XHJcblxyXG4gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgdGhpcy5pbnRlcmlvclJpbmdzW2ldLmxlbmd0aDsgaisrKVxyXG4gICAgICAgICAgICB0aGlzLmludGVyaW9yUmluZ3NbaV1bal0uX3dyaXRlV2tiUG9pbnQod2tiKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gd2tiLmJ1ZmZlcjtcclxufTtcclxuXHJcblBvbHlnb24ucHJvdG90eXBlLnRvVHdrYiA9IGZ1bmN0aW9uICgpIHtcclxuICAgIHZhciB0d2tiID0gbmV3IEJpbmFyeVdyaXRlcigwLCB0cnVlKTtcclxuXHJcbiAgICB2YXIgcHJlY2lzaW9uID0gR2VvbWV0cnkuZ2V0VHdrYlByZWNpc2lvbig1LCAwLCAwKTtcclxuICAgIHZhciBpc0VtcHR5ID0gdGhpcy5leHRlcmlvclJpbmcubGVuZ3RoID09PSAwO1xyXG5cclxuICAgIHRoaXMuX3dyaXRlVHdrYkhlYWRlcih0d2tiLCBUeXBlcy53a2IuUG9seWdvbiwgcHJlY2lzaW9uLCBpc0VtcHR5KTtcclxuXHJcbiAgICBpZiAodGhpcy5leHRlcmlvclJpbmcubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHR3a2Iud3JpdGVWYXJJbnQoMSArIHRoaXMuaW50ZXJpb3JSaW5ncy5sZW5ndGgpO1xyXG5cclxuICAgICAgICB0d2tiLndyaXRlVmFySW50KHRoaXMuZXh0ZXJpb3JSaW5nLmxlbmd0aCk7XHJcblxyXG4gICAgICAgIHZhciBwcmV2aW91c1BvaW50ID0gbmV3IFBvaW50KDAsIDAsIDAsIDApO1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5leHRlcmlvclJpbmcubGVuZ3RoOyBpKyspXHJcbiAgICAgICAgICAgIHRoaXMuZXh0ZXJpb3JSaW5nW2ldLl93cml0ZVR3a2JQb2ludCh0d2tiLCBwcmVjaXNpb24sIHByZXZpb3VzUG9pbnQpO1xyXG5cclxuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgdGhpcy5pbnRlcmlvclJpbmdzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIHR3a2Iud3JpdGVWYXJJbnQodGhpcy5pbnRlcmlvclJpbmdzW2ldLmxlbmd0aCk7XHJcblxyXG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHRoaXMuaW50ZXJpb3JSaW5nc1tpXS5sZW5ndGg7IGorKylcclxuICAgICAgICAgICAgICAgIHRoaXMuaW50ZXJpb3JSaW5nc1tpXVtqXS5fd3JpdGVUd2tiUG9pbnQodHdrYiwgcHJlY2lzaW9uLCBwcmV2aW91c1BvaW50KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHR3a2IuYnVmZmVyO1xyXG59O1xyXG5cclxuUG9seWdvbi5wcm90b3R5cGUuX2dldFdrYlNpemUgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICB2YXIgY29vcmRpbmF0ZVNpemUgPSAxNjtcclxuXHJcbiAgICBpZiAodGhpcy5oYXNaKVxyXG4gICAgICAgIGNvb3JkaW5hdGVTaXplICs9IDg7XHJcbiAgICBpZiAodGhpcy5oYXNNKVxyXG4gICAgICAgIGNvb3JkaW5hdGVTaXplICs9IDg7XHJcblxyXG4gICAgdmFyIHNpemUgPSAxICsgNCArIDQ7XHJcblxyXG4gICAgaWYgKHRoaXMuZXh0ZXJpb3JSaW5nLmxlbmd0aCA+IDApXHJcbiAgICAgICAgc2l6ZSArPSA0ICsgKHRoaXMuZXh0ZXJpb3JSaW5nLmxlbmd0aCAqIGNvb3JkaW5hdGVTaXplKTtcclxuXHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuaW50ZXJpb3JSaW5ncy5sZW5ndGg7IGkrKylcclxuICAgICAgICBzaXplICs9IDQgKyAodGhpcy5pbnRlcmlvclJpbmdzW2ldLmxlbmd0aCAqIGNvb3JkaW5hdGVTaXplKTtcclxuXHJcbiAgICByZXR1cm4gc2l6ZTtcclxufTtcclxuXHJcblBvbHlnb24ucHJvdG90eXBlLnRvR2VvSlNPTiA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XHJcbiAgICB2YXIgZ2VvSlNPTiA9IEdlb21ldHJ5LnByb3RvdHlwZS50b0dlb0pTT04uY2FsbCh0aGlzLCBvcHRpb25zKTtcclxuICAgIGdlb0pTT04udHlwZSA9IFR5cGVzLmdlb0pTT04uUG9seWdvbjtcclxuICAgIGdlb0pTT04uY29vcmRpbmF0ZXMgPSBbXTtcclxuXHJcbiAgICBpZiAodGhpcy5leHRlcmlvclJpbmcubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHZhciBleHRlcmlvclJpbmcgPSBbXTtcclxuXHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmV4dGVyaW9yUmluZy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5oYXNaKVxyXG4gICAgICAgICAgICAgICAgZXh0ZXJpb3JSaW5nLnB1c2goW3RoaXMuZXh0ZXJpb3JSaW5nW2ldLngsIHRoaXMuZXh0ZXJpb3JSaW5nW2ldLnksIHRoaXMuZXh0ZXJpb3JSaW5nW2ldLnpdKTtcclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgZXh0ZXJpb3JSaW5nLnB1c2goW3RoaXMuZXh0ZXJpb3JSaW5nW2ldLngsIHRoaXMuZXh0ZXJpb3JSaW5nW2ldLnldKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGdlb0pTT04uY29vcmRpbmF0ZXMucHVzaChleHRlcmlvclJpbmcpO1xyXG4gICAgfVxyXG5cclxuICAgIGZvciAodmFyIGogPSAwOyBqIDwgdGhpcy5pbnRlcmlvclJpbmdzLmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgdmFyIGludGVyaW9yUmluZyA9IFtdO1xyXG5cclxuICAgICAgICBmb3IgKHZhciBrID0gMDsgayA8IHRoaXMuaW50ZXJpb3JSaW5nc1tqXS5sZW5ndGg7IGsrKykge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5oYXNaKVxyXG4gICAgICAgICAgICAgICAgaW50ZXJpb3JSaW5nLnB1c2goW3RoaXMuaW50ZXJpb3JSaW5nc1tqXVtrXS54LCB0aGlzLmludGVyaW9yUmluZ3Nbal1ba10ueSwgdGhpcy5pbnRlcmlvclJpbmdzW2pdW2tdLnpdKTtcclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgaW50ZXJpb3JSaW5nLnB1c2goW3RoaXMuaW50ZXJpb3JSaW5nc1tqXVtrXS54LCB0aGlzLmludGVyaW9yUmluZ3Nbal1ba10ueV0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZ2VvSlNPTi5jb29yZGluYXRlcy5wdXNoKGludGVyaW9yUmluZyk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGdlb0pTT047XHJcbn07XHJcbiIsIm1vZHVsZS5leHBvcnRzID0ge1xyXG4gICAgd2t0OiB7XHJcbiAgICAgICAgUG9pbnQ6ICdQT0lOVCcsXHJcbiAgICAgICAgTGluZVN0cmluZzogJ0xJTkVTVFJJTkcnLFxyXG4gICAgICAgIFBvbHlnb246ICdQT0xZR09OJyxcclxuICAgICAgICBNdWx0aVBvaW50OiAnTVVMVElQT0lOVCcsXHJcbiAgICAgICAgTXVsdGlMaW5lU3RyaW5nOiAnTVVMVElMSU5FU1RSSU5HJyxcclxuICAgICAgICBNdWx0aVBvbHlnb246ICdNVUxUSVBPTFlHT04nLFxyXG4gICAgICAgIEdlb21ldHJ5Q29sbGVjdGlvbjogJ0dFT01FVFJZQ09MTEVDVElPTidcclxuICAgIH0sXHJcbiAgICB3a2I6IHtcclxuICAgICAgICBQb2ludDogMSxcclxuICAgICAgICBMaW5lU3RyaW5nOiAyLFxyXG4gICAgICAgIFBvbHlnb246IDMsXHJcbiAgICAgICAgTXVsdGlQb2ludDogNCxcclxuICAgICAgICBNdWx0aUxpbmVTdHJpbmc6IDUsXHJcbiAgICAgICAgTXVsdGlQb2x5Z29uOiA2LFxyXG4gICAgICAgIEdlb21ldHJ5Q29sbGVjdGlvbjogN1xyXG4gICAgfSxcclxuICAgIGdlb0pTT046IHtcclxuICAgICAgICBQb2ludDogJ1BvaW50JyxcclxuICAgICAgICBMaW5lU3RyaW5nOiAnTGluZVN0cmluZycsXHJcbiAgICAgICAgUG9seWdvbjogJ1BvbHlnb24nLFxyXG4gICAgICAgIE11bHRpUG9pbnQ6ICdNdWx0aVBvaW50JyxcclxuICAgICAgICBNdWx0aUxpbmVTdHJpbmc6ICdNdWx0aUxpbmVTdHJpbmcnLFxyXG4gICAgICAgIE11bHRpUG9seWdvbjogJ011bHRpUG9seWdvbicsXHJcbiAgICAgICAgR2VvbWV0cnlDb2xsZWN0aW9uOiAnR2VvbWV0cnlDb2xsZWN0aW9uJ1xyXG4gICAgfVxyXG59O1xyXG4iLCJtb2R1bGUuZXhwb3J0cyA9IFdrdFBhcnNlcjtcclxuXHJcbnZhciBUeXBlcyA9IHJlcXVpcmUoJy4vdHlwZXMnKTtcclxudmFyIFBvaW50ID0gcmVxdWlyZSgnLi9wb2ludCcpO1xyXG5cclxuZnVuY3Rpb24gV2t0UGFyc2VyKHZhbHVlKSB7XHJcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XHJcbiAgICB0aGlzLnBvc2l0aW9uID0gMDtcclxufVxyXG5cclxuV2t0UGFyc2VyLnByb3RvdHlwZS5tYXRjaCA9IGZ1bmN0aW9uICh0b2tlbnMpIHtcclxuICAgIHRoaXMuc2tpcFdoaXRlc3BhY2VzKCk7XHJcblxyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0b2tlbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBpZiAodGhpcy52YWx1ZS5zdWJzdHJpbmcodGhpcy5wb3NpdGlvbikuaW5kZXhPZih0b2tlbnNbaV0pID09PSAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMucG9zaXRpb24gKz0gdG9rZW5zW2ldLmxlbmd0aDtcclxuICAgICAgICAgICAgcmV0dXJuIHRva2Vuc1tpXTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG51bGw7XHJcbn07XHJcblxyXG5Xa3RQYXJzZXIucHJvdG90eXBlLm1hdGNoUmVnZXggPSBmdW5jdGlvbiAodG9rZW5zKSB7XHJcbiAgICB0aGlzLnNraXBXaGl0ZXNwYWNlcygpO1xyXG5cclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdG9rZW5zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgdmFyIG1hdGNoID0gdGhpcy52YWx1ZS5zdWJzdHJpbmcodGhpcy5wb3NpdGlvbikubWF0Y2godG9rZW5zW2ldKTtcclxuXHJcbiAgICAgICAgaWYgKG1hdGNoKSB7XHJcbiAgICAgICAgICAgIHRoaXMucG9zaXRpb24gKz0gbWF0Y2hbMF0ubGVuZ3RoO1xyXG4gICAgICAgICAgICByZXR1cm4gbWF0Y2g7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBudWxsO1xyXG59O1xyXG5cclxuV2t0UGFyc2VyLnByb3RvdHlwZS5pc01hdGNoID0gZnVuY3Rpb24gKHRva2Vucykge1xyXG4gICAgdGhpcy5za2lwV2hpdGVzcGFjZXMoKTtcclxuXHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRva2Vucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGlmICh0aGlzLnZhbHVlLnN1YnN0cmluZyh0aGlzLnBvc2l0aW9uKS5pbmRleE9mKHRva2Vuc1tpXSkgPT09IDApIHtcclxuICAgICAgICAgICAgdGhpcy5wb3NpdGlvbiArPSB0b2tlbnNbaV0ubGVuZ3RoO1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG59O1xyXG5cclxuV2t0UGFyc2VyLnByb3RvdHlwZS5tYXRjaFR5cGUgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICB2YXIgZ2VvbWV0cnlUeXBlID0gdGhpcy5tYXRjaChbVHlwZXMud2t0LlBvaW50LCBUeXBlcy53a3QuTGluZVN0cmluZywgVHlwZXMud2t0LlBvbHlnb24sIFR5cGVzLndrdC5NdWx0aVBvaW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGVzLndrdC5NdWx0aUxpbmVTdHJpbmcsIFR5cGVzLndrdC5NdWx0aVBvbHlnb24sIFR5cGVzLndrdC5HZW9tZXRyeUNvbGxlY3Rpb25dKTtcclxuXHJcbiAgICBpZiAoIWdlb21ldHJ5VHlwZSlcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0V4cGVjdGVkIGdlb21ldHJ5IHR5cGUnKTtcclxuXHJcbiAgICByZXR1cm4gZ2VvbWV0cnlUeXBlO1xyXG59O1xyXG5cclxuV2t0UGFyc2VyLnByb3RvdHlwZS5tYXRjaERpbWVuc2lvbiA9IGZ1bmN0aW9uICgpIHtcclxuICAgIHZhciBkaW1lbnNpb24gPSB0aGlzLm1hdGNoKFsnWk0nLCAnWicsICdNJ10pO1xyXG5cclxuICAgIHN3aXRjaCAoZGltZW5zaW9uKSB7XHJcbiAgICAgICAgY2FzZSAnWk0nOiByZXR1cm4geyBoYXNaOiB0cnVlLCBoYXNNOiB0cnVlIH07XHJcbiAgICAgICAgY2FzZSAnWic6IHJldHVybiB7IGhhc1o6IHRydWUsIGhhc006IGZhbHNlIH07XHJcbiAgICAgICAgY2FzZSAnTSc6IHJldHVybiB7IGhhc1o6IGZhbHNlLCBoYXNNOiB0cnVlIH07XHJcbiAgICAgICAgZGVmYXVsdDogcmV0dXJuIHsgaGFzWjogZmFsc2UsIGhhc006IGZhbHNlIH07XHJcbiAgICB9XHJcbn07XHJcblxyXG5Xa3RQYXJzZXIucHJvdG90eXBlLmV4cGVjdEdyb3VwU3RhcnQgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICBpZiAoIXRoaXMuaXNNYXRjaChbJygnXSkpXHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdFeHBlY3RlZCBncm91cCBzdGFydCcpO1xyXG59O1xyXG5cclxuV2t0UGFyc2VyLnByb3RvdHlwZS5leHBlY3RHcm91cEVuZCA9IGZ1bmN0aW9uICgpIHtcclxuICAgIGlmICghdGhpcy5pc01hdGNoKFsnKSddKSlcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0V4cGVjdGVkIGdyb3VwIGVuZCcpO1xyXG59O1xyXG5cclxuV2t0UGFyc2VyLnByb3RvdHlwZS5tYXRjaENvb3JkaW5hdGUgPSBmdW5jdGlvbiAob3B0aW9ucykge1xyXG4gICAgdmFyIG1hdGNoO1xyXG5cclxuICAgIGlmIChvcHRpb25zLmhhc1ogJiYgb3B0aW9ucy5oYXNNKVxyXG4gICAgICAgIG1hdGNoID0gdGhpcy5tYXRjaFJlZ2V4KFsvXigtP1xcZCtcXC4/XFxkKilcXHMrKC0/XFxkK1xcLj9cXGQqKVxccysoLT9cXGQrXFwuP1xcZCopXFxzKygtP1xcZCtcXC4/XFxkKikvXSk7XHJcbiAgICBlbHNlIGlmIChvcHRpb25zLmhhc1ogfHwgb3B0aW9ucy5oYXNNKVxyXG4gICAgICAgIG1hdGNoID0gdGhpcy5tYXRjaFJlZ2V4KFsvXigtP1xcZCtcXC4/XFxkKilcXHMrKC0/XFxkK1xcLj9cXGQqKVxccysoLT9cXGQrXFwuP1xcZCopL10pO1xyXG4gICAgZWxzZVxyXG4gICAgICAgIG1hdGNoID0gdGhpcy5tYXRjaFJlZ2V4KFsvXigtP1xcZCtcXC4/XFxkKilcXHMrKC0/XFxkK1xcLj9cXGQqKS9dKTtcclxuXHJcbiAgICBpZiAoIW1hdGNoKVxyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcignRXhwZWN0ZWQgY29vcmRpbmF0ZXMnKTtcclxuXHJcbiAgICBpZiAob3B0aW9ucy5oYXNaICYmIG9wdGlvbnMuaGFzTSlcclxuICAgICAgICByZXR1cm4gbmV3IFBvaW50KHBhcnNlRmxvYXQobWF0Y2hbMV0pLCBwYXJzZUZsb2F0KG1hdGNoWzJdKSwgcGFyc2VGbG9hdChtYXRjaFszXSksIHBhcnNlRmxvYXQobWF0Y2hbNF0pKTtcclxuICAgIGVsc2UgaWYgKG9wdGlvbnMuaGFzWilcclxuICAgICAgICByZXR1cm4gbmV3IFBvaW50KHBhcnNlRmxvYXQobWF0Y2hbMV0pLCBwYXJzZUZsb2F0KG1hdGNoWzJdKSwgcGFyc2VGbG9hdChtYXRjaFszXSkpO1xyXG4gICAgZWxzZSBpZiAob3B0aW9ucy5oYXNNKVxyXG4gICAgICAgIHJldHVybiBuZXcgUG9pbnQocGFyc2VGbG9hdChtYXRjaFsxXSksIHBhcnNlRmxvYXQobWF0Y2hbMl0pLCB1bmRlZmluZWQsIHBhcnNlRmxvYXQobWF0Y2hbM10pKTtcclxuICAgIGVsc2VcclxuICAgICAgICByZXR1cm4gbmV3IFBvaW50KHBhcnNlRmxvYXQobWF0Y2hbMV0pLCBwYXJzZUZsb2F0KG1hdGNoWzJdKSk7XHJcbn07XHJcblxyXG5Xa3RQYXJzZXIucHJvdG90eXBlLm1hdGNoQ29vcmRpbmF0ZXMgPSBmdW5jdGlvbiAob3B0aW9ucykge1xyXG4gICAgdmFyIGNvb3JkaW5hdGVzID0gW107XHJcblxyXG4gICAgZG8ge1xyXG4gICAgICAgIHZhciBzdGFydHNXaXRoQnJhY2tldCA9IHRoaXMuaXNNYXRjaChbJygnXSk7XHJcblxyXG4gICAgICAgIGNvb3JkaW5hdGVzLnB1c2godGhpcy5tYXRjaENvb3JkaW5hdGUob3B0aW9ucykpO1xyXG5cclxuICAgICAgICBpZiAoc3RhcnRzV2l0aEJyYWNrZXQpXHJcbiAgICAgICAgICAgIHRoaXMuZXhwZWN0R3JvdXBFbmQoKTtcclxuICAgIH0gd2hpbGUgKHRoaXMuaXNNYXRjaChbJywnXSkpO1xyXG5cclxuICAgIHJldHVybiBjb29yZGluYXRlcztcclxufTtcclxuXHJcbldrdFBhcnNlci5wcm90b3R5cGUuc2tpcFdoaXRlc3BhY2VzID0gZnVuY3Rpb24gKCkge1xyXG4gICAgd2hpbGUgKHRoaXMucG9zaXRpb24gPCB0aGlzLnZhbHVlLmxlbmd0aCAmJiB0aGlzLnZhbHVlW3RoaXMucG9zaXRpb25dID09PSAnICcpXHJcbiAgICAgICAgdGhpcy5wb3NpdGlvbisrO1xyXG59O1xyXG4iLCJleHBvcnRzLlR5cGVzID0gcmVxdWlyZSgnLi90eXBlcycpO1xyXG5leHBvcnRzLkdlb21ldHJ5ID0gcmVxdWlyZSgnLi9nZW9tZXRyeScpO1xyXG5leHBvcnRzLlBvaW50ID0gcmVxdWlyZSgnLi9wb2ludCcpO1xyXG5leHBvcnRzLkxpbmVTdHJpbmcgPSByZXF1aXJlKCcuL2xpbmVzdHJpbmcnKTtcclxuZXhwb3J0cy5Qb2x5Z29uID0gcmVxdWlyZSgnLi9wb2x5Z29uJyk7XHJcbmV4cG9ydHMuTXVsdGlQb2ludCA9IHJlcXVpcmUoJy4vbXVsdGlwb2ludCcpO1xyXG5leHBvcnRzLk11bHRpTGluZVN0cmluZyA9IHJlcXVpcmUoJy4vbXVsdGlsaW5lc3RyaW5nJyk7XHJcbmV4cG9ydHMuTXVsdGlQb2x5Z29uID0gcmVxdWlyZSgnLi9tdWx0aXBvbHlnb24nKTtcclxuZXhwb3J0cy5HZW9tZXRyeUNvbGxlY3Rpb24gPSByZXF1aXJlKCcuL2dlb21ldHJ5Y29sbGVjdGlvbicpOyIsIm1vZHVsZS5leHBvcnRzID0ge1xyXG4gICAgZW5jb2RlOiBmdW5jdGlvbiAodmFsdWUpIHtcclxuICAgICAgICByZXR1cm4gKHZhbHVlIDw8IDEpIF4gKHZhbHVlID4+IDMxKTtcclxuICAgIH0sXHJcbiAgICBkZWNvZGU6IGZ1bmN0aW9uICh2YWx1ZSkge1xyXG4gICAgICAgIHJldHVybiAodmFsdWUgPj4gMSkgXiAoLSh2YWx1ZSAmIDEpKTtcclxuICAgIH1cclxufTtcclxuIiwidmFyIEZlYXR1cmVDb2x1bW4gPSByZXF1aXJlKCcuLi8uLi9saWIvZmVhdHVyZXMvdXNlci9mZWF0dXJlQ29sdW1uJylcbiAgLCBGZWF0dXJlVGFibGUgPSByZXF1aXJlKCcuLi8uLi9saWIvZmVhdHVyZXMvdXNlci9mZWF0dXJlVGFibGUnKVxuICAsIEdlb21ldHJ5Q29sdW1ucyA9IHJlcXVpcmUoJy4uLy4uL2xpYi9mZWF0dXJlcy9jb2x1bW5zJykuR2VvbWV0cnlDb2x1bW5zXG4gICwgRGF0YVR5cGVzID0gcmVxdWlyZSgnLi4vLi4vbGliL2RiL2RhdGFUeXBlcycpO1xuXG5tb2R1bGUuZXhwb3J0cy5idWlsZEZlYXR1cmVUYWJsZSA9IGZ1bmN0aW9uKHRhYmxlTmFtZSwgZ2VvbWV0cnlDb2x1bW4sIGdlb21ldHJ5VHlwZSkge1xuICB2YXIgY29sdW1ucyA9IFtdO1xuXG4gIGNvbHVtbnMucHVzaChGZWF0dXJlQ29sdW1uLmNyZWF0ZVByaW1hcnlLZXlDb2x1bW5XaXRoSW5kZXhBbmROYW1lKDAsICdpZCcpKTtcbiAgY29sdW1ucy5wdXNoKEZlYXR1cmVDb2x1bW4uY3JlYXRlQ29sdW1uV2l0aEluZGV4QW5kTWF4KDcsICd0ZXN0X3RleHRfbGltaXRlZCcsIERhdGFUeXBlcy5HUEtHRGF0YVR5cGUuR1BLR19EVF9URVhULCA1LCBmYWxzZSwgbnVsbCkpO1xuICBjb2x1bW5zLnB1c2goRmVhdHVyZUNvbHVtbi5jcmVhdGVDb2x1bW5XaXRoSW5kZXhBbmRNYXgoOCwgJ3Rlc3RfYmxvYl9saW1pdGVkJywgRGF0YVR5cGVzLkdQS0dEYXRhVHlwZS5HUEtHX0RUX0JMT0IsIDcsIGZhbHNlLCBudWxsKSk7XG4gIGNvbHVtbnMucHVzaChGZWF0dXJlQ29sdW1uLmNyZWF0ZUdlb21ldHJ5Q29sdW1uKDEsIGdlb21ldHJ5Q29sdW1uLCBnZW9tZXRyeVR5cGUsIGZhbHNlLCBudWxsKSk7XG4gIGNvbHVtbnMucHVzaChGZWF0dXJlQ29sdW1uLmNyZWF0ZUNvbHVtbldpdGhJbmRleCgyLCAndGVzdF90ZXh0JywgRGF0YVR5cGVzLkdQS0dEYXRhVHlwZS5HUEtHX0RUX1RFWFQsIGZhbHNlLCBcIlwiKSk7XG4gIGNvbHVtbnMucHVzaChGZWF0dXJlQ29sdW1uLmNyZWF0ZUNvbHVtbldpdGhJbmRleCgzLCAndGVzdF9yZWFsJywgRGF0YVR5cGVzLkdQS0dEYXRhVHlwZS5HUEtHX0RUX1JFQUwsIGZhbHNlLCBudWxsKSk7XG4gIGNvbHVtbnMucHVzaChGZWF0dXJlQ29sdW1uLmNyZWF0ZUNvbHVtbldpdGhJbmRleCg0LCAndGVzdF9ib29sZWFuJywgRGF0YVR5cGVzLkdQS0dEYXRhVHlwZS5HUEtHX0RUX0JPT0xFQU4sIGZhbHNlLCBudWxsKSk7XG4gIGNvbHVtbnMucHVzaChGZWF0dXJlQ29sdW1uLmNyZWF0ZUNvbHVtbldpdGhJbmRleCg1LCAndGVzdF9ibG9iJywgRGF0YVR5cGVzLkdQS0dEYXRhVHlwZS5HUEtHX0RUX0JMT0IsIGZhbHNlLCBudWxsKSk7XG4gIGNvbHVtbnMucHVzaChGZWF0dXJlQ29sdW1uLmNyZWF0ZUNvbHVtbldpdGhJbmRleCg2LCAndGVzdF9pbnRlZ2VyJywgRGF0YVR5cGVzLkdQS0dEYXRhVHlwZS5HUEtHX0RUX0lOVEVHRVIsIGZhbHNlLCBcIlwiKSk7XG5cbiAgcmV0dXJuIG5ldyBGZWF0dXJlVGFibGUodGFibGVOYW1lLCBjb2x1bW5zKTtcbn1cblxubW9kdWxlLmV4cG9ydHMuYnVpbGRHZW9tZXRyeUNvbHVtbnMgPSBmdW5jdGlvbih0YWJsZU5hbWUsIGdlb21ldHJ5Q29sdW1uLCBnZW9tZXRyeVR5cGUpIHtcbiAgdmFyIGdlb21ldHJ5Q29sdW1ucyA9IG5ldyBHZW9tZXRyeUNvbHVtbnMoKTtcbiAgZ2VvbWV0cnlDb2x1bW5zLnRhYmxlX25hbWUgPSB0YWJsZU5hbWU7XG4gIGdlb21ldHJ5Q29sdW1ucy5jb2x1bW5fbmFtZSA9IGdlb21ldHJ5Q29sdW1uO1xuICBnZW9tZXRyeUNvbHVtbnMuZ2VvbWV0cnlfdHlwZV9uYW1lID0gZ2VvbWV0cnlUeXBlO1xuICBnZW9tZXRyeUNvbHVtbnMueiA9IDA7XG4gIGdlb21ldHJ5Q29sdW1ucy5tID0gMDtcbiAgcmV0dXJuIGdlb21ldHJ5Q29sdW1ucztcbn1cbiIsInZhciBmcyA9IHJlcXVpcmUoJ2ZzJylcbiAgLCBhc3luYyA9IHJlcXVpcmUoJ2FzeW5jJylcbiAgLCBwYXRoID0gcmVxdWlyZSgncGF0aCcpXG4gICwgVGFibGVDcmVhdG9yID0gcmVxdWlyZSgnLi4vLi4vbGliL2RiL3RhYmxlQ3JlYXRvcicpXG4gICwgR2VvUGFja2FnZSA9IHJlcXVpcmUoJy4uLy4uL2xpYi9nZW9QYWNrYWdlJylcbiAgLCBHZW9QYWNrYWdlQ29ubmVjdGlvbiA9IHJlcXVpcmUoJy4uLy4uL2xpYi9kYi9nZW9QYWNrYWdlQ29ubmVjdGlvbicpO1xuXG5tb2R1bGUuZXhwb3J0cy5jcmVhdGVHZW9QYWNrYWdlID0gZnVuY3Rpb24oZ3BwYXRoLCBjYWxsYmFjaykge1xuICBhc3luYy5zZXJpZXMoW1xuICAgIGZ1bmN0aW9uKGNhbGxiYWNrKSB7XG4gICAgICBpZiAodHlwZW9mKHByb2Nlc3MpICE9PSAndW5kZWZpbmVkJyAmJiBwcm9jZXNzLnZlcnNpb24pIHtcbiAgICAgICAgZnMubWtkaXIocGF0aC5kaXJuYW1lKGdwcGF0aCksIGZ1bmN0aW9uKCkge1xuICAgICAgICAgIGZzLm9wZW4oZ3BwYXRoLCAndycsIGNhbGxiYWNrKTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjYWxsYmFjaygpO1xuICAgICAgfVxuICAgIH1cbiAgXSwgZnVuY3Rpb24oKSB7XG4gICAgR2VvUGFja2FnZUNvbm5lY3Rpb24uY29ubmVjdChncHBhdGgsIGZ1bmN0aW9uKGVyciwgY29ubmVjdGlvbikge1xuICAgICAgdmFyIGdlb3BhY2thZ2UgPSBuZXcgR2VvUGFja2FnZShwYXRoLmJhc2VuYW1lKGdwcGF0aCksIGdwcGF0aCwgY29ubmVjdGlvbik7XG4gICAgICB2YXIgdGMgPSBuZXcgVGFibGVDcmVhdG9yKGdlb3BhY2thZ2UpO1xuICAgICAgdGMuY3JlYXRlUmVxdWlyZWQoZnVuY3Rpb24oKSB7XG4gICAgICAgIGNhbGxiYWNrKG51bGwsIGdlb3BhY2thZ2UpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xufVxuXG5tb2R1bGUuZXhwb3J0cy5jcmVhdGVCYXJlR2VvUGFja2FnZSA9IGZ1bmN0aW9uKGdwcGF0aCwgY2FsbGJhY2spIHtcbiAgYXN5bmMuc2VyaWVzKFtcbiAgICBmdW5jdGlvbihjYWxsYmFjaykge1xuICAgICAgaWYgKHR5cGVvZihwcm9jZXNzKSAhPT0gJ3VuZGVmaW5lZCcgJiYgcHJvY2Vzcy52ZXJzaW9uKSB7XG4gICAgICAgIGZzLm1rZGlyKHBhdGguZGlybmFtZShncHBhdGgpLCBmdW5jdGlvbigpIHtcbiAgICAgICAgICBmcy5vcGVuKGdwcGF0aCwgJ3cnLCBjYWxsYmFjayk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2FsbGJhY2soKTtcbiAgICAgIH1cbiAgICB9XG4gIF0sIGZ1bmN0aW9uKCkge1xuICAgIEdlb1BhY2thZ2VDb25uZWN0aW9uLmNvbm5lY3QoZ3BwYXRoLCBmdW5jdGlvbihlcnIsIGNvbm5lY3Rpb24pIHtcbiAgICAgIHZhciBnZW9wYWNrYWdlID0gbmV3IEdlb1BhY2thZ2UocGF0aC5iYXNlbmFtZShncHBhdGgpLCBncHBhdGgsIGNvbm5lY3Rpb24pO1xuICAgICAgY2FsbGJhY2sobnVsbCwgZ2VvcGFja2FnZSk7XG4gICAgfSk7XG4gIH0pO1xufVxuXG5tb2R1bGUuZXhwb3J0cy5kZWxldGVHZW9QYWNrYWdlID0gZnVuY3Rpb24oZ3BwYXRoLCBjYWxsYmFjaykge1xuICBpZiAodHlwZW9mKHByb2Nlc3MpICE9PSAndW5kZWZpbmVkJyAmJiBwcm9jZXNzLnZlcnNpb24pIHtcbiAgICBmcy51bmxpbmsoZ3BwYXRoLCBjYWxsYmFjayk7XG4gIH0gZWxzZSB7XG4gICAgY2FsbGJhY2soKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cy5sb2FkVGlsZSA9IGZ1bmN0aW9uKHRpbGVQYXRoLCBjYWxsYmFjaykge1xuICBpZiAodHlwZW9mKHByb2Nlc3MpICE9PSAndW5kZWZpbmVkJyAmJiBwcm9jZXNzLnZlcnNpb24pIHtcbiAgICBmcy5yZWFkRmlsZSh0aWxlUGF0aCwgY2FsbGJhY2spO1xuICB9IGVsc2Uge1xuICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcbiAgICB4aHIub3BlbignR0VUJywgdGlsZVBhdGgsIHRydWUpO1xuICAgIHhoci5yZXNwb25zZVR5cGUgPSAnYXJyYXlidWZmZXInO1xuXG4gICAgeGhyLm9ubG9hZCA9IGZ1bmN0aW9uKGUpIHtcbiAgICAgIGlmICh4aHIuc3RhdHVzICE9PSAyMDApIHtcbiAgICAgICAgcmV0dXJuIGNhbGxiYWNrKCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gY2FsbGJhY2sobnVsbCwgbmV3IEJ1ZmZlcih0aGlzLnJlc3BvbnNlKSk7XG4gICAgfTtcbiAgICB4aHIub25lcnJvciA9IGZ1bmN0aW9uKGUpIHtcbiAgICAgIHJldHVybiBjYWxsYmFjaygpO1xuICAgIH07XG4gICAgeGhyLnNlbmQoKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cy5kaWZmSW1hZ2VzID0gZnVuY3Rpb24oYWN0dWFsVGlsZSwgZXhwZWN0ZWRUaWxlUGF0aCwgY2FsbGJhY2spIHtcbiAgbW9kdWxlLmV4cG9ydHMuZGlmZkltYWdlc1dpdGhEaW1lbnNpb25zKGFjdHVhbFRpbGUsIGV4cGVjdGVkVGlsZVBhdGgsIDI1NiwgMjU2LCBjYWxsYmFjayk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cy5kaWZmSW1hZ2VzV2l0aERpbWVuc2lvbnMgPSBmdW5jdGlvbihhY3R1YWxUaWxlLCBleHBlY3RlZFRpbGVQYXRoLCB3aWR0aCwgaGVpZ2h0LCBjYWxsYmFjaykge1xuICBpZiAodHlwZW9mKHByb2Nlc3MpICE9PSAndW5kZWZpbmVkJyAmJiBwcm9jZXNzLnZlcnNpb24pIHtcbiAgICBmcy53cml0ZUZpbGVTeW5jKCcvdG1wL2dwdGlsZS5wbmcnLCBhY3R1YWxUaWxlKTtcbiAgICB2YXIgaW1hZ2VEaWZmID0gcmVxdWlyZSgnaW1hZ2UtZGlmZicpO1xuICAgIGltYWdlRGlmZih7XG4gICAgICBhY3R1YWxJbWFnZTogJy90bXAvZ3B0aWxlLnBuZycsXG4gICAgICBleHBlY3RlZEltYWdlOiBleHBlY3RlZFRpbGVQYXRoLFxuICAgICAgZGlmZkltYWdlOiAnL3RtcC9kaWZmLnBuZycsXG4gICAgfSwgZnVuY3Rpb24gKGVyciwgaW1hZ2VzQXJlU2FtZSkge1xuICAgICAgZnMudW5saW5rU3luYygnL3RtcC9ncHRpbGUucG5nJyk7XG4gICAgICBjYWxsYmFjayhlcnIsIGltYWdlc0FyZVNhbWUpO1xuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIHZhciBDYW52YXNJbWFnZURpZmYgPSByZXF1aXJlKCdpbWFnZWRpZmYnKTtcblxuICAgIHZhciBhY3R1YWwgPSBDYW52YXNJbWFnZURpZmYuY3JlYXRlQ2FudmFzKHdpZHRoLCBoZWlnaHQpO1xuICAgIHZhciBjdHggPSBhY3R1YWwuZ2V0Q29udGV4dCgnMmQnKTtcblxuICAgIHZhciBpbWFnZSA9IG5ldyBJbWFnZSgpO1xuICAgIGltYWdlLm9ubG9hZCA9IGZ1bmN0aW9uKCkge1xuICAgICAgY3R4LmRyYXdJbWFnZShpbWFnZSwgMCwgMCk7XG4gICAgICBtb2R1bGUuZXhwb3J0cy5sb2FkVGlsZShleHBlY3RlZFRpbGVQYXRoLCBmdW5jdGlvbihlcnIsIGV4cGVjdGVkVGlsZSkge1xuICAgICAgICB2YXIgZXhwZWN0ZWRCYXNlNjQgPSBuZXcgQnVmZmVyKGV4cGVjdGVkVGlsZSkudG9TdHJpbmcoJ2Jhc2U2NCcpO1xuXG4gICAgICAgIHZhciBleHBlY3RlZCA9IENhbnZhc0ltYWdlRGlmZi5jcmVhdGVDYW52YXMod2lkdGgsIGhlaWdodCk7XG4gICAgICAgIHZhciBjdHgyID0gZXhwZWN0ZWQuZ2V0Q29udGV4dCgnMmQnKTtcbiAgICAgICAgdmFyIGltYWdlMiA9IG5ldyBJbWFnZSgpO1xuICAgICAgICBpbWFnZTIub25sb2FkID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgY3R4Mi5kcmF3SW1hZ2UoaW1hZ2UyLCAwLCAwKTtcbiAgICAgICAgICB2YXIgZXF1YWwgPSBDYW52YXNJbWFnZURpZmYuZXF1YWwoYWN0dWFsLCBleHBlY3RlZCwgMik7XG5cbiAgICAgICAgICBpZiAoIWVxdWFsKSB7XG4gICAgICAgICAgICB2YXIgZGlmZiA9IENhbnZhc0ltYWdlRGlmZi5kaWZmKGFjdHVhbCwgZXhwZWN0ZWQpO1xuICAgICAgICAgICAgdmFyIGRpZmZDYW52YXMgPSBDYW52YXNJbWFnZURpZmYuY3JlYXRlQ2FudmFzKGRpZmYud2lkdGgsIGRpZmYuaGVpZ2h0KTtcbiAgICAgICAgICAgIGNvbnRleHQgPSBkaWZmQ2FudmFzLmdldENvbnRleHQoJzJkJyk7XG4gICAgICAgICAgICBjb250ZXh0LnB1dEltYWdlRGF0YShkaWZmLCAwLCAwKTtcbiAgICAgICAgICAgIHZhciBoMVRhZ3MgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaDEnKTtcbiAgICAgICAgICAgIHZhciBoMlRhZ3MgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnbGknKTtcbiAgICAgICAgICAgIHZhciBjdXJyZW50VGFnO1xuICAgICAgICAgICAgaWYgKGgyVGFncy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgY3VycmVudFRhZyA9IGgxVGFncy5pdGVtKGgxVGFncy5sZW5ndGggLSAxKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGN1cnJlbnRUYWcgPSBoMlRhZ3MuaXRlbShoMlRhZ3MubGVuZ3RoIC0xKS5wYXJlbnROb2RlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICAgICAgdmFyIHNwYW4xID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICAgICAgICAgICAgc3BhbjEuc3R5bGUud2lkdGggPSB3aWR0aCArICdweCc7XG4gICAgICAgICAgICBzcGFuMS5zdHlsZS5kaXNwbGF5ID0gJ2lubGluZS1ibG9jayc7XG4gICAgICAgICAgICBzcGFuMS5pbm5lckhUTUwgPSAnQWN0dWFsJztcbiAgICAgICAgICAgIHZhciBzcGFuMiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcbiAgICAgICAgICAgIHNwYW4yLnN0eWxlLndpZHRoID0gd2lkdGggKyAncHgnO1xuICAgICAgICAgICAgc3BhbjIuc3R5bGUuZGlzcGxheSA9ICdpbmxpbmUtYmxvY2snO1xuICAgICAgICAgICAgc3BhbjIuaW5uZXJIVE1MID0gJ0V4cGVjdGVkJztcbiAgICAgICAgICAgIHZhciBzcGFuMyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcbiAgICAgICAgICAgIHNwYW4zLnN0eWxlLndpZHRoID0gd2lkdGggKyAncHgnO1xuICAgICAgICAgICAgc3BhbjMuc3R5bGUuZGlzcGxheSA9ICdpbmxpbmUtYmxvY2snO1xuICAgICAgICAgICAgc3BhbjMuaW5uZXJIVE1MID0gJ0RpZmYnO1xuXG4gICAgICAgICAgICBkaXYuYXBwZW5kQ2hpbGQoc3BhbjEpO1xuICAgICAgICAgICAgZGl2LmFwcGVuZENoaWxkKHNwYW4yKTtcbiAgICAgICAgICAgIGRpdi5hcHBlbmRDaGlsZChzcGFuMyk7XG4gICAgICAgICAgICBjdXJyZW50VGFnLmFwcGVuZENoaWxkKGRpdik7XG4gICAgICAgICAgICBjdXJyZW50VGFnLmFwcGVuZENoaWxkKGFjdHVhbCk7XG4gICAgICAgICAgICBjdXJyZW50VGFnLmFwcGVuZENoaWxkKGV4cGVjdGVkKTtcbiAgICAgICAgICAgIGN1cnJlbnRUYWcuYXBwZW5kQ2hpbGQoZGlmZkNhbnZhcyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNhbGxiYWNrKG51bGwsIGVxdWFsKTtcbiAgICAgICAgfVxuICAgICAgICBpbWFnZTIuc3JjID0gJ2RhdGE6aW1hZ2UvcG5nO2Jhc2U2NCwnICsgZXhwZWN0ZWRCYXNlNjQ7XG4gICAgICB9KTtcbiAgICB9O1xuICAgIGltYWdlLnNyYyA9IGFjdHVhbFRpbGU7XG4gIH1cblxufVxuIiwidmFyIHNob3VsZCA9IHJlcXVpcmUoJ2NoYWknKS5zaG91bGQoKTtcblxubW9kdWxlLmV4cG9ydHMuY29tcGFyZVByb3BlcnRpZXMgPSBmdW5jdGlvbihvMSwgbzIpIHtcbiAgbzIuc2hvdWxkLmhhdmUuYWxsLmtleXMoT2JqZWN0LmtleXMobzEpKTtcbiAgbzEuc2hvdWxkLmhhdmUuYWxsLmtleXMoT2JqZWN0LmtleXMobzIpKTtcbiAgZm9yICh2YXIga2V5IGluIG8xKSB7XG4gICAgaWYgKG8xLmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgIG8xW2tleV0uc2hvdWxkLmJlLmVxdWFsKG8yW2tleV0pO1xuICAgIH1cbiAgfVxufVxuIiwidmFyIGFzeW5jID0gcmVxdWlyZSgnYXN5bmMnKTtcblxubW9kdWxlLmV4cG9ydHMudmVyaWZ5U1JTID0gZnVuY3Rpb24oZ2VvcGFja2FnZSwgZG9uZSkge1xuICBnZW9wYWNrYWdlLmdldERhdGFiYXNlKCkuZ2V0KFwiU0VMRUNUIG5hbWUgRlJPTSBzcWxpdGVfbWFzdGVyIFdIRVJFIHR5cGU9J3RhYmxlJyBBTkQgbmFtZT0/XCIsIFsnZ3BrZ19zcGF0aWFsX3JlZl9zeXMnXSwgZnVuY3Rpb24oZXJyLCByZXN1bHRzKSB7XG4gICAgaWYoIXJlc3VsdHMpIHtcbiAgICAgIHJldHVybiBkb25lKG5ldyBFcnJvcignVGFibGUgZ3BrZ19zcGF0aWFsX3JlZl9zeXMgZG9lcyBub3QgZXhpc3QnKSwgZmFsc2UpO1xuICAgIH1cbiAgICBnZW9wYWNrYWdlLmdldERhdGFiYXNlKCkuZ2V0KFwiU0VMRUNUIG5hbWUgRlJPTSBzcWxpdGVfbWFzdGVyIFdIRVJFIHR5cGU9J3ZpZXcnIEFORCBuYW1lPT9cIiwgWydzdF9zcGF0aWFsX3JlZl9zeXMnXSwgZnVuY3Rpb24oZXJyLCByZXN1bHRzKSB7XG4gICAgICBpZighcmVzdWx0cykge1xuICAgICAgICByZXR1cm4gZG9uZShuZXcgRXJyb3IoJ1ZpZXcgc3Rfc3BhdGlhbF9yZWZfc3lzIGRvZXMgbm90IGV4aXN0JyksIGZhbHNlKTtcbiAgICAgIH1cbiAgICAgIGdlb3BhY2thZ2UuZ2V0RGF0YWJhc2UoKS5nZXQoXCJTRUxFQ1QgbmFtZSBGUk9NIHNxbGl0ZV9tYXN0ZXIgV0hFUkUgdHlwZT0ndmlldycgQU5EIG5hbWU9P1wiLCBbJ3NwYXRpYWxfcmVmX3N5cyddLCBmdW5jdGlvbihlcnIsIHJlc3VsdHMpIHtcbiAgICAgICAgaWYoIXJlc3VsdHMpIHtcbiAgICAgICAgICByZXR1cm4gZG9uZShuZXcgRXJyb3IoJ1ZpZXcgc3BhdGlhbF9yZWZfc3lzIGRvZXMgbm90IGV4aXN0JyksIGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgICBkb25lKCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG59XG5cbm1vZHVsZS5leHBvcnRzLnZlcmlmeUNvbnRlbnRzID0gZnVuY3Rpb24oZ2VvcGFja2FnZSwgZG9uZSkge1xuICBnZW9wYWNrYWdlLmdldERhdGFiYXNlKCkuZ2V0KFwiU0VMRUNUIG5hbWUgRlJPTSBzcWxpdGVfbWFzdGVyIFdIRVJFIHR5cGU9J3RhYmxlJyBBTkQgbmFtZT0/XCIsIFsnZ3BrZ19jb250ZW50cyddLCBmdW5jdGlvbihlcnIsIHJlc3VsdHMpIHtcbiAgICBpZighcmVzdWx0cykge1xuICAgICAgcmV0dXJuIGRvbmUobmV3IEVycm9yKCdUYWJsZSBncGtnX2NvbnRlbnRzIGRvZXMgbm90IGV4aXN0JyksIGZhbHNlKTtcbiAgICB9XG4gICAgZG9uZSgpO1xuICB9KTtcbn1cblxubW9kdWxlLmV4cG9ydHMudmVyaWZ5Q29udGVudHNGb3JUYWJsZSA9IGZ1bmN0aW9uKGdlb3BhY2thZ2UsIHRhYmxlTmFtZSwgZG9uZSkge1xuICBtb2R1bGUuZXhwb3J0cy52ZXJpZnlDb250ZW50cyhnZW9wYWNrYWdlLCBmdW5jdGlvbihlcnIsIHJlc3VsdHMpIHtcbiAgICBpZihlcnIpIHtcbiAgICAgIHJldHVybiBkb25lKGVyciwgZmFsc2UpO1xuICAgIH1cbiAgICBnZW9wYWNrYWdlLmdldERhdGFiYXNlKCkuZ2V0KFwiU0VMRUNUICogZnJvbSBncGtnX2NvbnRlbnRzIHdoZXJlIHRhYmxlX25hbWUgPSA/XCIsIFt0YWJsZU5hbWVdLCBmdW5jdGlvbihlcnIsIHJlc3VsdHMpIHtcbiAgICAgIGlmICghcmVzdWx0cykge1xuICAgICAgICByZXR1cm4gZG9uZShuZXcgRXJyb3IoJ0NvbnRlbnRzIGRvIG5vdCBleGlzdCBmb3IgdGhlIHRhYmxlIFwiJyArIHRhYmxlTmFtZSArICdcIicpLCBmYWxzZSk7XG4gICAgICB9XG4gICAgICBkb25lKCk7XG4gICAgfSk7XG4gIH0pO1xufVxuXG5tb2R1bGUuZXhwb3J0cy52ZXJpZnlHZW9tZXRyeUNvbHVtbnMgPSBmdW5jdGlvbihnZW9wYWNrYWdlLCBkb25lKSB7XG4gIGdlb3BhY2thZ2UuZ2V0RGF0YWJhc2UoKS5nZXQoXCJTRUxFQ1QgbmFtZSBGUk9NIHNxbGl0ZV9tYXN0ZXIgV0hFUkUgdHlwZT0ndGFibGUnIEFORCBuYW1lPT9cIiwgWydncGtnX2dlb21ldHJ5X2NvbHVtbnMnXSwgZnVuY3Rpb24oZXJyLCByZXN1bHRzKSB7XG4gICAgaWYoIXJlc3VsdHMpIHtcbiAgICAgIHJldHVybiBkb25lKG5ldyBFcnJvcignVGFibGUgZ3BrZ19nZW9tZXRyeV9jb2x1bW5zIGRvZXMgbm90IGV4aXN0JyksIGZhbHNlKTtcbiAgICB9XG4gICAgZ2VvcGFja2FnZS5nZXREYXRhYmFzZSgpLmdldChcIlNFTEVDVCBuYW1lIEZST00gc3FsaXRlX21hc3RlciBXSEVSRSB0eXBlPSd2aWV3JyBBTkQgbmFtZT0/XCIsIFsnc3RfZ2VvbWV0cnlfY29sdW1ucyddLCBmdW5jdGlvbihlcnIsIHJlc3VsdHMpIHtcbiAgICAgIGlmKCFyZXN1bHRzKSB7XG4gICAgICAgIHJldHVybiBkb25lKG5ldyBFcnJvcignVmlldyBzdF9nZW9tZXRyeV9jb2x1bW5zIGRvZXMgbm90IGV4aXN0JyksIGZhbHNlKTtcbiAgICAgIH1cbiAgICAgIGdlb3BhY2thZ2UuZ2V0RGF0YWJhc2UoKS5nZXQoXCJTRUxFQ1QgbmFtZSBGUk9NIHNxbGl0ZV9tYXN0ZXIgV0hFUkUgdHlwZT0ndmlldycgQU5EIG5hbWU9P1wiLCBbJ2dlb21ldHJ5X2NvbHVtbnMnXSwgZnVuY3Rpb24oZXJyLCByZXN1bHRzKSB7XG4gICAgICAgIGlmKCFyZXN1bHRzKSB7XG4gICAgICAgICAgcmV0dXJuIGRvbmUobmV3IEVycm9yKCdWaWV3IGdlb21ldHJ5X2NvbHVtbnMgZG9lcyBub3QgZXhpc3QnKSwgZmFsc2UpO1xuICAgICAgICB9XG4gICAgICAgIGRvbmUoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcbn1cblxubW9kdWxlLmV4cG9ydHMudmVyaWZ5R2VvbWV0cnlDb2x1bW5zRm9yVGFibGUgPSBmdW5jdGlvbihnZW9wYWNrYWdlLCB0YWJsZU5hbWUsIGRvbmUpIHtcbiAgbW9kdWxlLmV4cG9ydHMudmVyaWZ5R2VvbWV0cnlDb2x1bW5zKGdlb3BhY2thZ2UsIGZ1bmN0aW9uKGVycikge1xuICAgIGlmIChlcnIpIHJldHVybiBkb25lKGVyciwgZmFsc2UpO1xuICAgIGdlb3BhY2thZ2UuZ2V0RGF0YWJhc2UoKS5nZXQoXCJTRUxFQ1QgKiBmcm9tIGdwa2dfZ2VvbWV0cnlfY29sdW1ucyB3aGVyZSB0YWJsZV9uYW1lID0gP1wiLCBbdGFibGVOYW1lXSwgZnVuY3Rpb24oZXJyLCByZXN1bHRzKSB7XG4gICAgICBpZiAoIXJlc3VsdHMpIHtcbiAgICAgICAgcmV0dXJuIGRvbmUobmV3IEVycm9yKCdHZW9tZXRyeSBDb2x1bW5zIGRvIG5vdCBleGlzdCBmb3IgdGhlIHRhYmxlXCInICsgdGFibGVOYW1lICsgJ1wiJyksIGZhbHNlKTtcbiAgICAgIH1cbiAgICAgIGRvbmUoKTtcbiAgICB9KTtcbiAgfSk7XG59XG5cblxubW9kdWxlLmV4cG9ydHMudmVyaWZ5VGlsZU1hdHJpeFNldCA9IGZ1bmN0aW9uKGdlb3BhY2thZ2UsIGRvbmUpIHtcbiAgZ2VvcGFja2FnZS5nZXREYXRhYmFzZSgpLmdldChcIlNFTEVDVCBuYW1lIEZST00gc3FsaXRlX21hc3RlciBXSEVSRSB0eXBlPSd0YWJsZScgQU5EIG5hbWU9P1wiLCBbJ2dwa2dfdGlsZV9tYXRyaXhfc2V0J10sIGZ1bmN0aW9uKGVyciwgcmVzdWx0cykge1xuICAgIGlmKCFyZXN1bHRzKSB7XG4gICAgICByZXR1cm4gZG9uZShuZXcgRXJyb3IoJ1RhYmxlIGdwa2dfdGlsZV9tYXRyaXhfc2V0IGRvZXMgbm90IGV4aXN0JyksIGZhbHNlKTtcbiAgICB9XG4gICAgZG9uZSgpO1xuICB9KTtcbn1cblxubW9kdWxlLmV4cG9ydHMudmVyaWZ5VGlsZU1hdHJpeCA9IGZ1bmN0aW9uKGdlb3BhY2thZ2UsIGRvbmUpIHtcbiAgZ2VvcGFja2FnZS5nZXREYXRhYmFzZSgpLmdldChcIlNFTEVDVCBuYW1lIEZST00gc3FsaXRlX21hc3RlciBXSEVSRSB0eXBlPSd0YWJsZScgQU5EIG5hbWU9P1wiLCBbJ2dwa2dfdGlsZV9tYXRyaXgnXSwgZnVuY3Rpb24oZXJyLCByZXN1bHRzKSB7XG4gICAgaWYoIXJlc3VsdHMpIHtcbiAgICAgIHJldHVybiBkb25lKG5ldyBFcnJvcignVGFibGUgZ3BrZ190aWxlX21hdHJpeCBkb2VzIG5vdCBleGlzdCcpLCBmYWxzZSk7XG4gICAgfVxuICAgIGFzeW5jLmVhY2hTZXJpZXMoWydncGtnX3RpbGVfbWF0cml4X3pvb21fbGV2ZWxfaW5zZXJ0JyxcbiAgICAnZ3BrZ190aWxlX21hdHJpeF96b29tX2xldmVsX3VwZGF0ZScsXG4gICAgJ2dwa2dfdGlsZV9tYXRyaXhfbWF0cml4X3dpZHRoX2luc2VydCcsXG4gICAgJ2dwa2dfdGlsZV9tYXRyaXhfbWF0cml4X3dpZHRoX3VwZGF0ZScsXG4gICAgJ2dwa2dfdGlsZV9tYXRyaXhfbWF0cml4X2hlaWdodF9pbnNlcnQnLFxuICAgICdncGtnX3RpbGVfbWF0cml4X21hdHJpeF9oZWlnaHRfdXBkYXRlJyxcbiAgICAnZ3BrZ190aWxlX21hdHJpeF9waXhlbF94X3NpemVfaW5zZXJ0JyxcbiAgICAnZ3BrZ190aWxlX21hdHJpeF9waXhlbF94X3NpemVfdXBkYXRlJyxcbiAgICAnZ3BrZ190aWxlX21hdHJpeF9waXhlbF95X3NpemVfaW5zZXJ0JyxcbiAgICAnZ3BrZ190aWxlX21hdHJpeF9waXhlbF95X3NpemVfdXBkYXRlJ1xuICBdLCBmdW5jdGlvbih0cmlnZ2VyLCBjYWxsYmFjaykge1xuICAgICAgZ2VvcGFja2FnZS5nZXREYXRhYmFzZSgpLmdldChcIlNFTEVDVCBuYW1lIEZST00gc3FsaXRlX21hc3RlciBXSEVSRSB0eXBlPSd0cmlnZ2VyJyBBTkQgbmFtZT0/XCIsIFt0cmlnZ2VyXSwgZnVuY3Rpb24oZXJyLCByZXN1bHRzKSB7XG4gICAgICAgIGlmKCFyZXN1bHRzKSB7XG4gICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKG5ldyBFcnJvcignVHJpZ2dlciAnICsgdHJpZ2dlciArICcgZG9lcyBub3QgZXhpc3QnKSwgZmFsc2UpO1xuICAgICAgICB9XG4gICAgICAgIGNhbGxiYWNrKCk7XG4gICAgICB9KTtcbiAgICB9LCBkb25lKTtcbiAgfSk7XG59XG5cbm1vZHVsZS5leHBvcnRzLnZlcmlmeURhdGFDb2x1bW5zID0gZnVuY3Rpb24oZ2VvcGFja2FnZSwgZG9uZSkge1xuICBnZW9wYWNrYWdlLmdldERhdGFiYXNlKCkuZ2V0KFwiU0VMRUNUIG5hbWUgRlJPTSBzcWxpdGVfbWFzdGVyIFdIRVJFIHR5cGU9J3RhYmxlJyBBTkQgbmFtZT0/XCIsIFsnZ3BrZ19kYXRhX2NvbHVtbnMnXSwgZnVuY3Rpb24oZXJyLCByZXN1bHRzKSB7XG4gICAgaWYoIXJlc3VsdHMpIHtcbiAgICAgIHJldHVybiBkb25lKG5ldyBFcnJvcignVGFibGUgZ3BrZ19kYXRhX2NvbHVtbnMgZG9lcyBub3QgZXhpc3QnKSwgZmFsc2UpO1xuICAgIH1cbiAgICBkb25lKCk7XG4gIH0pO1xufVxuXG5tb2R1bGUuZXhwb3J0cy52ZXJpZnlEYXRhQ29sdW1uQ29uc3RyYWludHMgPSBmdW5jdGlvbihnZW9wYWNrYWdlLCBkb25lKSB7XG4gIGdlb3BhY2thZ2UuZ2V0RGF0YWJhc2UoKS5nZXQoXCJTRUxFQ1QgbmFtZSBGUk9NIHNxbGl0ZV9tYXN0ZXIgV0hFUkUgdHlwZT0ndGFibGUnIEFORCBuYW1lPT9cIiwgWydncGtnX2RhdGFfY29sdW1uX2NvbnN0cmFpbnRzJ10sIGZ1bmN0aW9uKGVyciwgcmVzdWx0cykge1xuICAgIGlmKCFyZXN1bHRzKSB7XG4gICAgICByZXR1cm4gZG9uZShuZXcgRXJyb3IoJ1RhYmxlIGdwa2dfZGF0YV9jb2x1bW5fY29uc3RyYWludHMgZG9lcyBub3QgZXhpc3QnKSwgZmFsc2UpO1xuICAgIH1cbiAgICBkb25lKCk7XG4gIH0pO1xufVxuXG5tb2R1bGUuZXhwb3J0cy52ZXJpZnlNZXRhZGF0YSA9IGZ1bmN0aW9uKGdlb3BhY2thZ2UsIGRvbmUpIHtcbiAgZ2VvcGFja2FnZS5nZXREYXRhYmFzZSgpLmdldChcIlNFTEVDVCBuYW1lIEZST00gc3FsaXRlX21hc3RlciBXSEVSRSB0eXBlPSd0YWJsZScgQU5EIG5hbWU9P1wiLCBbJ2dwa2dfbWV0YWRhdGEnXSwgZnVuY3Rpb24oZXJyLCByZXN1bHRzKSB7XG4gICAgaWYoIXJlc3VsdHMpIHtcbiAgICAgIHJldHVybiBkb25lKG5ldyBFcnJvcignVGFibGUgZ3BrZ19tZXRhZGF0YSBkb2VzIG5vdCBleGlzdCcpLCBmYWxzZSk7XG4gICAgfVxuICAgIGdlb3BhY2thZ2UuZ2V0RGF0YWJhc2UoKS5nZXQoXCJTRUxFQ1QgbmFtZSBGUk9NIHNxbGl0ZV9tYXN0ZXIgV0hFUkUgdHlwZT0ndHJpZ2dlcicgQU5EIG5hbWU9P1wiLCBbJ2dwa2dfbWV0YWRhdGFfbWRfc2NvcGVfaW5zZXJ0J10sIGZ1bmN0aW9uKGVyciwgcmVzdWx0cykge1xuICAgICAgaWYoIXJlc3VsdHMpIHtcbiAgICAgICAgcmV0dXJuIGRvbmUobmV3IEVycm9yKCdUcmlnZ2VyIGdwa2dfbWV0YWRhdGFfbWRfc2NvcGVfaW5zZXJ0IGRvZXMgbm90IGV4aXN0JyksIGZhbHNlKTtcbiAgICAgIH1cbiAgICAgIGdlb3BhY2thZ2UuZ2V0RGF0YWJhc2UoKS5nZXQoXCJTRUxFQ1QgbmFtZSBGUk9NIHNxbGl0ZV9tYXN0ZXIgV0hFUkUgdHlwZT0ndHJpZ2dlcicgQU5EIG5hbWU9P1wiLCBbJ2dwa2dfbWV0YWRhdGFfbWRfc2NvcGVfdXBkYXRlJ10sIGZ1bmN0aW9uKGVyciwgcmVzdWx0cykge1xuICAgICAgICBpZighcmVzdWx0cykge1xuICAgICAgICAgIHJldHVybiBkb25lKG5ldyBFcnJvcignVHJpZ2dlciBncGtnX21ldGFkYXRhX21kX3Njb3BlX3VwZGF0ZSBkb2VzIG5vdCBleGlzdCcpLCBmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgZG9uZSgpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xufVxuXG5tb2R1bGUuZXhwb3J0cy52ZXJpZnlNZXRhZGF0YVJlZmVyZW5jZSA9IGZ1bmN0aW9uKGdlb3BhY2thZ2UsIGRvbmUpIHtcbiAgZ2VvcGFja2FnZS5nZXREYXRhYmFzZSgpLmdldChcIlNFTEVDVCBuYW1lIEZST00gc3FsaXRlX21hc3RlciBXSEVSRSB0eXBlPSd0YWJsZScgQU5EIG5hbWU9P1wiLCBbJ2dwa2dfbWV0YWRhdGFfcmVmZXJlbmNlJ10sIGZ1bmN0aW9uKGVyciwgcmVzdWx0cykge1xuICAgIGlmKCFyZXN1bHRzKSB7XG4gICAgICByZXR1cm4gZG9uZShuZXcgRXJyb3IoJ1RhYmxlIGdwa2dfbWV0YWRhdGFfcmVmZXJlbmNlIGRvZXMgbm90IGV4aXN0JyksIGZhbHNlKTtcbiAgICB9XG4gICAgYXN5bmMuZWFjaFNlcmllcyhbJ2dwa2dfbWV0YWRhdGFfcmVmZXJlbmNlX3JlZmVyZW5jZV9zY29wZV9pbnNlcnQnLFxuICAgICdncGtnX21ldGFkYXRhX3JlZmVyZW5jZV9yZWZlcmVuY2Vfc2NvcGVfdXBkYXRlJyxcbiAgICAnZ3BrZ19tZXRhZGF0YV9yZWZlcmVuY2VfY29sdW1uX25hbWVfaW5zZXJ0JyxcbiAgICAnZ3BrZ19tZXRhZGF0YV9yZWZlcmVuY2VfY29sdW1uX25hbWVfdXBkYXRlJyxcbiAgICAnZ3BrZ19tZXRhZGF0YV9yZWZlcmVuY2Vfcm93X2lkX3ZhbHVlX2luc2VydCcsXG4gICAgJ2dwa2dfbWV0YWRhdGFfcmVmZXJlbmNlX3Jvd19pZF92YWx1ZV91cGRhdGUnLFxuICAgICdncGtnX21ldGFkYXRhX3JlZmVyZW5jZV90aW1lc3RhbXBfaW5zZXJ0JyxcbiAgICAnZ3BrZ19tZXRhZGF0YV9yZWZlcmVuY2VfdGltZXN0YW1wX3VwZGF0ZSdcbiAgXSwgZnVuY3Rpb24odHJpZ2dlciwgY2FsbGJhY2spIHtcbiAgICAgIGdlb3BhY2thZ2UuZ2V0RGF0YWJhc2UoKS5nZXQoXCJTRUxFQ1QgbmFtZSBGUk9NIHNxbGl0ZV9tYXN0ZXIgV0hFUkUgdHlwZT0ndHJpZ2dlcicgQU5EIG5hbWU9P1wiLCBbdHJpZ2dlcl0sIGZ1bmN0aW9uKGVyciwgcmVzdWx0cykge1xuICAgICAgICBpZighcmVzdWx0cykge1xuICAgICAgICAgIHJldHVybiBjYWxsYmFjayhuZXcgRXJyb3IoJ1RyaWdnZXIgJyArIHRyaWdnZXIgKyAnIGRvZXMgbm90IGV4aXN0JyksIGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgICBjYWxsYmFjaygpO1xuICAgICAgfSk7XG4gICAgfSwgZG9uZSk7XG4gIH0pO1xufVxuXG5tb2R1bGUuZXhwb3J0cy52ZXJpZnlFeHRlbnNpb25zID0gZnVuY3Rpb24oZ2VvcGFja2FnZSwgZG9uZSkge1xuICBnZW9wYWNrYWdlLmdldERhdGFiYXNlKCkuZ2V0KFwiU0VMRUNUIG5hbWUgRlJPTSBzcWxpdGVfbWFzdGVyIFdIRVJFIHR5cGU9J3RhYmxlJyBBTkQgbmFtZT0/XCIsIFsnZ3BrZ19leHRlbnNpb25zJ10sIGZ1bmN0aW9uKGVyciwgcmVzdWx0cykge1xuICAgIGlmKCFyZXN1bHRzKSB7XG4gICAgICByZXR1cm4gZG9uZShuZXcgRXJyb3IoJ1RhYmxlIGdwa2dfZXh0ZW5zaW9ucyBkb2VzIG5vdCBleGlzdCcpLCBmYWxzZSk7XG4gICAgfVxuICAgIGRvbmUoKTtcbiAgfSk7XG59XG5cbm1vZHVsZS5leHBvcnRzLnZlcmlmeVRhYmxlSW5kZXggPSBmdW5jdGlvbihnZW9wYWNrYWdlLCBkb25lKSB7XG4gIGdlb3BhY2thZ2UuZ2V0RGF0YWJhc2UoKS5nZXQoXCJTRUxFQ1QgbmFtZSBGUk9NIHNxbGl0ZV9tYXN0ZXIgV0hFUkUgdHlwZT0ndGFibGUnIEFORCBuYW1lPT9cIiwgWyduZ2FfdGFibGVfaW5kZXgnXSwgZnVuY3Rpb24oZXJyLCByZXN1bHRzKSB7XG4gICAgaWYoIXJlc3VsdHMpIHtcbiAgICAgIHJldHVybiBkb25lKG5ldyBFcnJvcignVGFibGUgbmdhX3RhYmxlX2luZGV4IGRvZXMgbm90IGV4aXN0JyksIGZhbHNlKTtcbiAgICB9XG4gICAgZG9uZSgpO1xuICB9KTtcbn1cblxubW9kdWxlLmV4cG9ydHMudmVyaWZ5R2VvbWV0cnlJbmRleCA9IGZ1bmN0aW9uKGdlb3BhY2thZ2UsIGRvbmUpIHtcbiAgZ2VvcGFja2FnZS5nZXREYXRhYmFzZSgpLmdldChcIlNFTEVDVCBuYW1lIEZST00gc3FsaXRlX21hc3RlciBXSEVSRSB0eXBlPSd0YWJsZScgQU5EIG5hbWU9P1wiLCBbJ25nYV9nZW9tZXRyeV9pbmRleCddLCBmdW5jdGlvbihlcnIsIHJlc3VsdHMpIHtcbiAgICBpZighcmVzdWx0cykge1xuICAgICAgcmV0dXJuIGRvbmUobmV3IEVycm9yKCdUYWJsZSBuZ2FfZ2VvbWV0cnlfaW5kZXggZG9lcyBub3QgZXhpc3QnKSwgZmFsc2UpO1xuICAgIH1cbiAgICBkb25lKCk7XG4gIH0pO1xufVxuXG5tb2R1bGUuZXhwb3J0cy52ZXJpZnlGZWF0dXJlVGlsZUxpbmsgPSBmdW5jdGlvbihnZW9wYWNrYWdlLCBkb25lKSB7XG4gIGdlb3BhY2thZ2UuZ2V0RGF0YWJhc2UoKS5nZXQoXCJTRUxFQ1QgbmFtZSBGUk9NIHNxbGl0ZV9tYXN0ZXIgV0hFUkUgdHlwZT0ndGFibGUnIEFORCBuYW1lPT9cIiwgWyduZ2FfZmVhdHVyZV90aWxlX2xpbmsnXSwgZnVuY3Rpb24oZXJyLCByZXN1bHRzKSB7XG4gICAgaWYoIXJlc3VsdHMpIHtcbiAgICAgIHJldHVybiBkb25lKG5ldyBFcnJvcignVGFibGUgbmdhX2ZlYXR1cmVfdGlsZV9saW5rIGRvZXMgbm90IGV4aXN0JyksIGZhbHNlKTtcbiAgICB9XG4gICAgZG9uZSgpO1xuICB9KTtcbn1cblxubW9kdWxlLmV4cG9ydHMudmVyaWZ5VGFibGVFeGlzdHMgPSBmdW5jdGlvbihnZW9wYWNrYWdlLCB0YWJsZSwgZG9uZSkge1xuICBnZW9wYWNrYWdlLmdldERhdGFiYXNlKCkuZ2V0KFwiU0VMRUNUIG5hbWUgRlJPTSBzcWxpdGVfbWFzdGVyIFdIRVJFIHR5cGU9J3RhYmxlJyBBTkQgbmFtZT0/XCIsIFt0YWJsZV0sIGZ1bmN0aW9uKGVyciwgcmVzdWx0cykge1xuICAgIGlmKCFyZXN1bHRzKSB7XG4gICAgICByZXR1cm4gZG9uZShuZXcgRXJyb3IoJ1RhYmxlICcgKyB0YWJsZSArICcgZG9lcyBub3QgZXhpc3QnKSwgZmFsc2UpO1xuICAgIH1cbiAgICBkb25lKCk7XG4gIH0pO1xufVxuIiwidmFyIEdlb1BhY2thZ2VNYW5hZ2VyID0gcmVxdWlyZSgnLi4vLi4vLi4vLi4vbGliL2dlb1BhY2thZ2VNYW5hZ2VyJylcbiAgLCBDb250ZW50c0RhbyA9IHJlcXVpcmUoJy4uLy4uLy4uLy4uL2xpYi9jb3JlL2NvbnRlbnRzJykuQ29udGVudHNEYW9cbiAgLCBDb250ZW50cyA9IHJlcXVpcmUoJy4uLy4uLy4uLy4uL2xpYi9jb3JlL2NvbnRlbnRzJykuQ29udGVudHNcbiAgLCBUaWxlTWF0cml4ID0gcmVxdWlyZSgnLi4vLi4vLi4vLi4vbGliL3RpbGVzL21hdHJpeCcpLlRpbGVNYXRyaXhcbiAgLCBzaG91bGQgPSByZXF1aXJlKCdjaGFpJykuc2hvdWxkKClcbiAgLCBwYXRoID0gcmVxdWlyZSgncGF0aCcpO1xuXG5kZXNjcmliZSgnQ29udGVudHMgdGVzdHMnLCBmdW5jdGlvbigpIHtcblxuICB2YXIgZ2VvUGFja2FnZTtcbiAgdmFyIGNvbnRlbnRzRGFvXG5cbiAgYmVmb3JlRWFjaCgnc2hvdWxkIG9wZW4gdGhlIGdlb3BhY2thZ2UnLCBmdW5jdGlvbihkb25lKSB7XG4gICAgdmFyIGZpbGVuYW1lID0gcGF0aC5qb2luKF9fZGlybmFtZSwgJy4uJywgJy4uJywgJy4uJywgJ2ZpeHR1cmVzJywgJ3JpdmVycy5ncGtnJyk7XG4gICAgR2VvUGFja2FnZU1hbmFnZXIub3BlbihmaWxlbmFtZSwgZnVuY3Rpb24oZXJyLCBncCkge1xuICAgICAgZ2VvUGFja2FnZSA9IGdwO1xuICAgICAgc2hvdWxkLm5vdC5leGlzdChlcnIpO1xuICAgICAgc2hvdWxkLmV4aXN0KGdwKTtcbiAgICAgIHNob3VsZC5leGlzdChncC5nZXREYXRhYmFzZSgpLmdldERCQ29ubmVjdGlvbigpKTtcbiAgICAgIGdwLmdldFBhdGgoKS5zaG91bGQuYmUuZXF1YWwoZmlsZW5hbWUpO1xuICAgICAgY29udGVudHNEYW8gPSBuZXcgQ29udGVudHNEYW8oZ3AuZ2V0RGF0YWJhc2UoKSk7XG4gICAgICBkb25lKCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGFmdGVyRWFjaCgnc2hvdWxkIGNsb3NlIHRoZSBnZW9wYWNrYWdlJywgZnVuY3Rpb24oKXtcbiAgICBnZW9QYWNrYWdlLmNsb3NlKCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZ2V0IHRoZSBjb250ZW50cycsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICBjb250ZW50c0Rhby5xdWVyeUZvckFsbChmdW5jdGlvbihlcnIsIGNvbnRlbnRzKSB7XG4gICAgICBzaG91bGQuZXhpc3QoY29udGVudHMpO1xuICAgICAgc2hvdWxkLm5vdC5leGlzdChlcnIpO1xuICAgICAgY29udGVudHMuc2hvdWxkLmhhdmUucHJvcGVydHkoJ2xlbmd0aCcsIDIpO1xuICAgICAgY29udGVudHNbMF0uc2hvdWxkLmhhdmUucHJvcGVydHkoJ3RhYmxlX25hbWUnLCAnVElMRVNvc21kcycpO1xuICAgICAgY29udGVudHNbMF0uc2hvdWxkLmhhdmUucHJvcGVydHkoJ2RhdGFfdHlwZScsICd0aWxlcycpO1xuICAgICAgY29udGVudHNbMF0uc2hvdWxkLmhhdmUucHJvcGVydHkoJ2lkZW50aWZpZXInLCAnVElMRVNvc21kcycpO1xuICAgICAgY29udGVudHNbMF0uc2hvdWxkLmhhdmUucHJvcGVydHkoJ2Rlc2NyaXB0aW9uJywgbnVsbCk7XG4gICAgICBjb250ZW50c1swXS5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnbGFzdF9jaGFuZ2UnLCAnMjAxNS0xMi0wNFQxNToyODo1My44NzFaJyk7XG4gICAgICBjb250ZW50c1swXS5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnbWluX3gnLCAtMTgwKTtcbiAgICAgIGNvbnRlbnRzWzBdLnNob3VsZC5oYXZlLnByb3BlcnR5KCdtaW5feScsIC04NS4wNTExMjg3Nzk4MDY2KTtcbiAgICAgIGNvbnRlbnRzWzBdLnNob3VsZC5oYXZlLnByb3BlcnR5KCdtYXhfeCcsIDE4MCk7XG4gICAgICBjb250ZW50c1swXS5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnbWF4X3knLCA4NS4wNTExMjg3Nzk4MDY2KTtcbiAgICAgIGNvbnRlbnRzWzBdLnNob3VsZC5oYXZlLnByb3BlcnR5KCdzcnNfaWQnLCA0MzI2KTtcblxuICAgICAgY29udGVudHNbMV0uc2hvdWxkLmhhdmUucHJvcGVydHkoJ3RhYmxlX25hbWUnLCAnRkVBVFVSRVNyaXZlcnNkcycpO1xuICAgICAgY29udGVudHNbMV0uc2hvdWxkLmhhdmUucHJvcGVydHkoJ2RhdGFfdHlwZScsICdmZWF0dXJlcycpO1xuICAgICAgY29udGVudHNbMV0uc2hvdWxkLmhhdmUucHJvcGVydHkoJ2lkZW50aWZpZXInLCAnRkVBVFVSRVNyaXZlcnNkcycpO1xuICAgICAgY29udGVudHNbMV0uc2hvdWxkLmhhdmUucHJvcGVydHkoJ2Rlc2NyaXB0aW9uJywgbnVsbCk7XG4gICAgICBjb250ZW50c1sxXS5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnbGFzdF9jaGFuZ2UnLCAnMjAxNS0xMi0wNFQxNToyODo1OS4xMjJaJyk7XG4gICAgICBjb250ZW50c1sxXS5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnbWluX3gnLCAtMjAwMzc1MDguMzQyNzg5MjQ0KTtcbiAgICAgIGNvbnRlbnRzWzFdLnNob3VsZC5oYXZlLnByb3BlcnR5KCdtaW5feScsIC0xOTk3MTg2OC44ODA0MDg1Nyk7XG4gICAgICBjb250ZW50c1sxXS5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnbWF4X3gnLCAyMDAzNzUwOC4zNDI3ODkyNDQpO1xuICAgICAgY29udGVudHNbMV0uc2hvdWxkLmhhdmUucHJvcGVydHkoJ21heF95JywgMTk5NzE4NjguODgwNDA4NTYzKTtcbiAgICAgIGNvbnRlbnRzWzFdLnNob3VsZC5oYXZlLnByb3BlcnR5KCdzcnNfaWQnLCAzODU3KTtcbiAgICAgIGRvbmUoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBnZXQgdGhlIGNvbnRlbnRzIGZyb20gdGhlIElEIFRJTEVTb3NtZHMnLCBmdW5jdGlvbihkb25lKSB7XG4gICAgY29udGVudHNEYW8ucXVlcnlGb3JJZE9iamVjdCgnVElMRVNvc21kcycsIGZ1bmN0aW9uKGVyciwgY29udGVudHMpIHtcbiAgICAgIHNob3VsZC5leGlzdChjb250ZW50cyk7XG4gICAgICBzaG91bGQubm90LmV4aXN0KGVycik7XG4gICAgICBjb250ZW50cy5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgndGFibGVfbmFtZScsICdUSUxFU29zbWRzJyk7XG4gICAgICBjb250ZW50cy5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnZGF0YV90eXBlJywgJ3RpbGVzJyk7XG4gICAgICBjb250ZW50cy5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnaWRlbnRpZmllcicsICdUSUxFU29zbWRzJyk7XG4gICAgICBjb250ZW50cy5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnZGVzY3JpcHRpb24nLCBudWxsKTtcbiAgICAgIGNvbnRlbnRzLnNob3VsZC5oYXZlLnByb3BlcnR5KCdsYXN0X2NoYW5nZScsICcyMDE1LTEyLTA0VDE1OjI4OjUzLjg3MVonKTtcbiAgICAgIGNvbnRlbnRzLnNob3VsZC5oYXZlLnByb3BlcnR5KCdtaW5feCcsIC0xODApO1xuICAgICAgY29udGVudHMuc2hvdWxkLmhhdmUucHJvcGVydHkoJ21pbl95JywgLTg1LjA1MTEyODc3OTgwNjYpO1xuICAgICAgY29udGVudHMuc2hvdWxkLmhhdmUucHJvcGVydHkoJ21heF94JywgMTgwKTtcbiAgICAgIGNvbnRlbnRzLnNob3VsZC5oYXZlLnByb3BlcnR5KCdtYXhfeScsIDg1LjA1MTEyODc3OTgwNjYpO1xuICAgICAgY29udGVudHMuc2hvdWxkLmhhdmUucHJvcGVydHkoJ3Nyc19pZCcsIDQzMjYpO1xuICAgICAgZG9uZSgpO1xuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGdldCB0aGUgY29udGVudHMgZnJvbSB0aGUgSUQgRkVBVFVSRVNyaXZlcnNkcycsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICBjb250ZW50c0Rhby5xdWVyeUZvcklkT2JqZWN0KCdGRUFUVVJFU3JpdmVyc2RzJywgZnVuY3Rpb24oZXJyLCBjb250ZW50cykge1xuICAgICAgc2hvdWxkLmV4aXN0KGNvbnRlbnRzKTtcbiAgICAgIHNob3VsZC5ub3QuZXhpc3QoZXJyKTtcbiAgICAgIGNvbnRlbnRzLnNob3VsZC5oYXZlLnByb3BlcnR5KCd0YWJsZV9uYW1lJywgJ0ZFQVRVUkVTcml2ZXJzZHMnKTtcbiAgICAgIGNvbnRlbnRzLnNob3VsZC5oYXZlLnByb3BlcnR5KCdkYXRhX3R5cGUnLCAnZmVhdHVyZXMnKTtcbiAgICAgIGNvbnRlbnRzLnNob3VsZC5oYXZlLnByb3BlcnR5KCdpZGVudGlmaWVyJywgJ0ZFQVRVUkVTcml2ZXJzZHMnKTtcbiAgICAgIGNvbnRlbnRzLnNob3VsZC5oYXZlLnByb3BlcnR5KCdkZXNjcmlwdGlvbicsIG51bGwpO1xuICAgICAgY29udGVudHMuc2hvdWxkLmhhdmUucHJvcGVydHkoJ2xhc3RfY2hhbmdlJywgJzIwMTUtMTItMDRUMTU6Mjg6NTkuMTIyWicpO1xuICAgICAgY29udGVudHMuc2hvdWxkLmhhdmUucHJvcGVydHkoJ21pbl94JywgLTIwMDM3NTA4LjM0Mjc4OTI0NCk7XG4gICAgICBjb250ZW50cy5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnbWluX3knLCAtMTk5NzE4NjguODgwNDA4NTcpO1xuICAgICAgY29udGVudHMuc2hvdWxkLmhhdmUucHJvcGVydHkoJ21heF94JywgMjAwMzc1MDguMzQyNzg5MjQ0KTtcbiAgICAgIGNvbnRlbnRzLnNob3VsZC5oYXZlLnByb3BlcnR5KCdtYXhfeScsIDE5OTcxODY4Ljg4MDQwODU2Myk7XG4gICAgICBjb250ZW50cy5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnc3JzX2lkJywgMzg1Nyk7XG4gICAgICBkb25lKCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZ2V0IHRoZSBwcm9qZWN0aW9uIGZyb20gdGhlIElEIFRJTEVTb3NtZHMnLCBmdW5jdGlvbihkb25lKSB7XG4gICAgY29udGVudHNEYW8ucXVlcnlGb3JJZE9iamVjdCgnVElMRVNvc21kcycsIGZ1bmN0aW9uKGVyciwgY29udGVudHMpIHtcbiAgICAgIHNob3VsZC5leGlzdChjb250ZW50cyk7XG4gICAgICBzaG91bGQubm90LmV4aXN0KGVycik7XG4gICAgICBjb250ZW50c0Rhby5nZXRQcm9qZWN0aW9uKGNvbnRlbnRzLCBmdW5jdGlvbihlcnIsIHByb2plY3Rpb24pIHtcbiAgICAgICAgc2hvdWxkLm5vdC5leGlzdChlcnIpO1xuICAgICAgICBzaG91bGQuZXhpc3QocHJvamVjdGlvbik7XG4gICAgICAgIGRvbmUoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGdldCB0aGUgcHJvamVjdGlvbiBmcm9tIHRoZSBJRCBGRUFUVVJFU3JpdmVyc2RzJywgZnVuY3Rpb24oZG9uZSkge1xuICAgIGNvbnRlbnRzRGFvLnF1ZXJ5Rm9ySWRPYmplY3QoJ0ZFQVRVUkVTcml2ZXJzZHMnLCBmdW5jdGlvbihlcnIsIGNvbnRlbnRzKSB7XG4gICAgICBzaG91bGQuZXhpc3QoY29udGVudHMpO1xuICAgICAgc2hvdWxkLm5vdC5leGlzdChlcnIpO1xuICAgICAgY29udGVudHNEYW8uZ2V0UHJvamVjdGlvbihjb250ZW50cywgZnVuY3Rpb24oZXJyLCBwcm9qZWN0aW9uKSB7XG4gICAgICAgIHNob3VsZC5ub3QuZXhpc3QoZXJyKTtcbiAgICAgICAgc2hvdWxkLmV4aXN0KHByb2plY3Rpb24pO1xuICAgICAgICBkb25lKCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBnZXQgdGhlIEdlb21ldHJ5Q29sdW1ucyBmcm9tIHRoZSBJRCBUSUxFU29zbWRzJywgZnVuY3Rpb24oZG9uZSkge1xuICAgIGNvbnRlbnRzRGFvLnF1ZXJ5Rm9ySWRPYmplY3QoJ1RJTEVTb3NtZHMnLCBmdW5jdGlvbihlcnIsIGNvbnRlbnRzKSB7XG4gICAgICBzaG91bGQuZXhpc3QoY29udGVudHMpO1xuICAgICAgc2hvdWxkLm5vdC5leGlzdChlcnIpO1xuICAgICAgY29udGVudHNEYW8uZ2V0R2VvbWV0cnlDb2x1bW5zKGNvbnRlbnRzLCBmdW5jdGlvbihlcnIsIGNvbHVtbnMpIHtcbiAgICAgICAgc2hvdWxkLm5vdC5leGlzdChlcnIpO1xuICAgICAgICBzaG91bGQubm90LmV4aXN0KGNvbHVtbnMpO1xuICAgICAgICBkb25lKCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBnZXQgdGhlIEdlb21ldHJ5Q29sdW1ucyBmcm9tIHRoZSBJRCBGRUFUVVJFU3JpdmVyc2RzJywgZnVuY3Rpb24oZG9uZSkge1xuICAgIGNvbnRlbnRzRGFvLnF1ZXJ5Rm9ySWRPYmplY3QoJ0ZFQVRVUkVTcml2ZXJzZHMnLCBmdW5jdGlvbihlcnIsIGNvbnRlbnRzKSB7XG4gICAgICBzaG91bGQuZXhpc3QoY29udGVudHMpO1xuICAgICAgc2hvdWxkLm5vdC5leGlzdChlcnIpO1xuICAgICAgY29udGVudHNEYW8uZ2V0R2VvbWV0cnlDb2x1bW5zKGNvbnRlbnRzLCBmdW5jdGlvbihlcnIsIGNvbHVtbnMpIHtcbiAgICAgICAgc2hvdWxkLm5vdC5leGlzdChlcnIpO1xuICAgICAgICBzaG91bGQuZXhpc3QoY29sdW1ucyk7XG4gICAgICAgIGNvbHVtbnMuc2hvdWxkLmhhdmUucHJvcGVydHkoJ3RhYmxlX25hbWUnLCAnRkVBVFVSRVNyaXZlcnNkcycpO1xuICAgICAgICBjb2x1bW5zLnNob3VsZC5oYXZlLnByb3BlcnR5KCdjb2x1bW5fbmFtZScsICdnZW9tJyk7XG4gICAgICAgIGNvbHVtbnMuc2hvdWxkLmhhdmUucHJvcGVydHkoJ2dlb21ldHJ5X3R5cGVfbmFtZScsICdHRU9NRVRSWScpO1xuICAgICAgICBjb2x1bW5zLnNob3VsZC5oYXZlLnByb3BlcnR5KCdzcnNfaWQnLCAzODU3KTtcbiAgICAgICAgY29sdW1ucy5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgneicsIDApO1xuICAgICAgICBjb2x1bW5zLnNob3VsZC5oYXZlLnByb3BlcnR5KCdtJywgMCk7XG4gICAgICAgIGRvbmUoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGdldCB0aGUgVGlsZU1hdHJpeFNldCBmcm9tIHRoZSBJRCBUSUxFU29zbWRzJywgZnVuY3Rpb24oZG9uZSkge1xuICAgIGNvbnRlbnRzRGFvLnF1ZXJ5Rm9ySWRPYmplY3QoJ1RJTEVTb3NtZHMnLCBmdW5jdGlvbihlcnIsIGNvbnRlbnRzKSB7XG4gICAgICBzaG91bGQuZXhpc3QoY29udGVudHMpO1xuICAgICAgc2hvdWxkLm5vdC5leGlzdChlcnIpO1xuICAgICAgY29udGVudHNEYW8uZ2V0VGlsZU1hdHJpeFNldChjb250ZW50cywgZnVuY3Rpb24oZXJyLCBtYXRyaXhTZXQpIHtcbiAgICAgICAgc2hvdWxkLm5vdC5leGlzdChlcnIpO1xuICAgICAgICBzaG91bGQuZXhpc3QobWF0cml4U2V0KTtcbiAgICAgICAgbWF0cml4U2V0LnNob3VsZC5oYXZlLnByb3BlcnR5KCd0YWJsZV9uYW1lJywgJ1RJTEVTb3NtZHMnKTtcbiAgICAgICAgbWF0cml4U2V0LnNob3VsZC5oYXZlLnByb3BlcnR5KCdzcnNfaWQnLCAzODU3KTtcbiAgICAgICAgbWF0cml4U2V0LnNob3VsZC5oYXZlLnByb3BlcnR5KCdtaW5feCcsIC0yMDAzNzUwOC4zNDI3ODkyNDQpO1xuICAgICAgICBtYXRyaXhTZXQuc2hvdWxkLmhhdmUucHJvcGVydHkoJ21pbl95JywgLTIwMDM3NTA4LjM0Mjc4OTI0NCk7XG4gICAgICAgIG1hdHJpeFNldC5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnbWF4X3gnLCAyMDAzNzUwOC4zNDI3ODkyNDQpO1xuICAgICAgICBtYXRyaXhTZXQuc2hvdWxkLmhhdmUucHJvcGVydHkoJ21heF95JywgMjAwMzc1MDguMzQyNzg5MjQ0KTtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZ2V0IHRoZSBUaWxlTWF0cml4U2V0IGZyb20gdGhlIElEIEZFQVRVUkVTcml2ZXJzZHMnLCBmdW5jdGlvbihkb25lKSB7XG4gICAgY29udGVudHNEYW8ucXVlcnlGb3JJZE9iamVjdCgnRkVBVFVSRVNyaXZlcnNkcycsIGZ1bmN0aW9uKGVyciwgY29udGVudHMpIHtcbiAgICAgIHNob3VsZC5leGlzdChjb250ZW50cyk7XG4gICAgICBzaG91bGQubm90LmV4aXN0KGVycik7XG4gICAgICBjb250ZW50c0Rhby5nZXRUaWxlTWF0cml4U2V0KGNvbnRlbnRzLCBmdW5jdGlvbihlcnIsIG1hdHJpeFNldCkge1xuICAgICAgICBzaG91bGQubm90LmV4aXN0KGVycik7XG4gICAgICAgIHNob3VsZC5ub3QuZXhpc3QobWF0cml4U2V0KTtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZ2V0IHRoZSBUaWxlTWF0cml4IGZyb20gdGhlIElEIFRJTEVTb3NtZHMnLCBmdW5jdGlvbihkb25lKSB7XG4gICAgY29udGVudHNEYW8ucXVlcnlGb3JJZE9iamVjdCgnVElMRVNvc21kcycsIGZ1bmN0aW9uKGVyciwgY29udGVudHMpIHtcbiAgICAgIHNob3VsZC5leGlzdChjb250ZW50cyk7XG4gICAgICBzaG91bGQubm90LmV4aXN0KGVycik7XG4gICAgICBjb250ZW50c0Rhby5nZXRUaWxlTWF0cml4KGNvbnRlbnRzLCBmdW5jdGlvbihlcnIsIG1hdHJpeCkge1xuICAgICAgICBzaG91bGQubm90LmV4aXN0KGVycik7XG4gICAgICAgIHNob3VsZC5leGlzdChtYXRyaXgpO1xuICAgICAgICBtYXRyaXguc2hvdWxkLmhhdmUucHJvcGVydHkoJ2xlbmd0aCcsIDQpO1xuXG4gICAgICAgIHZhciB0bSA9IG5ldyBUaWxlTWF0cml4KCk7XG4gICAgICAgIHRtLnRhYmxlX25hbWUgPSdUSUxFU29zbWRzJztcbiAgICAgICAgdG0uem9vbV9sZXZlbCA9IDA7XG4gICAgICAgIHRtLm1hdHJpeF93aWR0aCA9IDE7XG4gICAgICAgIHRtLm1hdHJpeF9oZWlnaHQgPSAxO1xuICAgICAgICB0bS50aWxlX3dpZHRoID0gMjU2O1xuICAgICAgICB0bS50aWxlX2hlaWdodCA9IDI1NjtcbiAgICAgICAgdG0ucGl4ZWxfeF9zaXplID0gMTU2NTQzLjAzMzkyODA0MDk3O1xuICAgICAgICB0bS5waXhlbF95X3NpemUgPSAxNTY1NDMuMDMzOTI4MDQxO1xuXG4gICAgICAgIG1hdHJpeFswXS5zaG91bGQuYmUuZGVlcC5lcXVhbCh0bSk7XG4gICAgICAgIGRvbmUoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGdldCB0aGUgVGlsZU1hdHJpeCBmcm9tIHRoZSBJRCBGRUFUVVJFU3JpdmVyc2RzJywgZnVuY3Rpb24oZG9uZSkge1xuICAgIGNvbnRlbnRzRGFvLnF1ZXJ5Rm9ySWRPYmplY3QoJ0ZFQVRVUkVTcml2ZXJzZHMnLCBmdW5jdGlvbihlcnIsIGNvbnRlbnRzKSB7XG4gICAgICBzaG91bGQuZXhpc3QoY29udGVudHMpO1xuICAgICAgc2hvdWxkLm5vdC5leGlzdChlcnIpO1xuICAgICAgY29udGVudHNEYW8uZ2V0VGlsZU1hdHJpeChjb250ZW50cywgZnVuY3Rpb24oZXJyLCBtYXRyaXgpIHtcbiAgICAgICAgc2hvdWxkLm5vdC5leGlzdChlcnIpO1xuICAgICAgICBzaG91bGQubm90LmV4aXN0KG1hdHJpeCk7XG4gICAgICAgIGRvbmUoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxufSk7XG4iLCJ2YXIgR2VvUGFja2FnZU1hbmFnZXIgPSByZXF1aXJlKCcuLi8uLi8uLi8uLi9saWIvZ2VvUGFja2FnZU1hbmFnZXInKVxuICAsIFNwYXRpYWxSZWZlcmVuY2VTeXN0ZW1EYW8gPSByZXF1aXJlKCcuLi8uLi8uLi8uLi9saWIvY29yZS9zcnMnKS5TcGF0aWFsUmVmZXJlbmNlU3lzdGVtRGFvXG4gICwgc2hvdWxkID0gcmVxdWlyZSgnY2hhaScpLnNob3VsZCgpXG4gICwgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKTtcblxuZGVzY3JpYmUoJ1NwYXRpYWxSZWZlcmVuY2VTeXN0ZW0gdGVzdHMnLCBmdW5jdGlvbigpIHtcblxuICB2YXIgZ2VvUGFja2FnZTtcblxuICBiZWZvcmVFYWNoKCdzaG91bGQgb3BlbiB0aGUgZ2VvcGFja2FnZScsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICB2YXIgZmlsZW5hbWUgPSBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4nLCAnLi4nLCAnLi4nLCAnZml4dHVyZXMnLCAnZ2RhbF9zYW1wbGUuZ3BrZycpO1xuICAgIEdlb1BhY2thZ2VNYW5hZ2VyLm9wZW4oZmlsZW5hbWUsIGZ1bmN0aW9uKGVyciwgZ3ApIHtcbiAgICAgIGdlb1BhY2thZ2UgPSBncDtcbiAgICAgIHNob3VsZC5ub3QuZXhpc3QoZXJyKTtcbiAgICAgIHNob3VsZC5leGlzdChncCk7XG4gICAgICBzaG91bGQuZXhpc3QoZ3AuZ2V0RGF0YWJhc2UoKS5nZXREQkNvbm5lY3Rpb24oKSk7XG4gICAgICBncC5nZXRQYXRoKCkuc2hvdWxkLmJlLmVxdWFsKGZpbGVuYW1lKTtcbiAgICAgIGRvbmUoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgYWZ0ZXJFYWNoKCdzaG91bGQgY2xvc2UgdGhlIGdlb3BhY2thZ2UnLCBmdW5jdGlvbigpe1xuICAgIGdlb1BhY2thZ2UuY2xvc2UoKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBnZXQgdGhlIDQzMjYgU1JTJywgZnVuY3Rpb24oZG9uZSkge1xuICAgIGdlb1BhY2thZ2UuZ2V0U3BhdGlhbFJlZmVyZW5jZVN5c3RlbURhbygpLmdldEJ5U3JzSWQoNDMyNiwgZnVuY3Rpb24oZXJyLCBzcnMpIHtcbiAgICAgIHNob3VsZC5leGlzdChzcnMpO1xuICAgICAgc3JzLnNob3VsZC5oYXZlLnByb3BlcnR5KCdzcnNfbmFtZScpXG4gICAgICBzcnMuc2hvdWxkLmhhdmUucHJvcGVydHkoJ3Nyc19pZCcpO1xuICAgICAgc3JzLnNob3VsZC5oYXZlLnByb3BlcnR5KCdvcmdhbml6YXRpb24nKTtcbiAgICAgIHNycy5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnb3JnYW5pemF0aW9uX2Nvb3Jkc3lzX2lkJywgNDMyNik7XG4gICAgICBzcnMuc2hvdWxkLmhhdmUucHJvcGVydHkoJ2RlZmluaXRpb24nKTtcbiAgICAgIHNob3VsZC5ub3QuZXhpc3QoZXJyKTtcbiAgICAgIGRvbmUoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBnZXQgdGhlIDAgU1JTJywgZnVuY3Rpb24oZG9uZSkge1xuICAgIGdlb1BhY2thZ2UuZ2V0U3BhdGlhbFJlZmVyZW5jZVN5c3RlbURhbygpLmdldEJ5U3JzSWQoMCwgZnVuY3Rpb24oZXJyLCBzcnMpIHtcbiAgICAgIHNob3VsZC5ub3QuZXhpc3QoZXJyKTtcbiAgICAgIHNob3VsZC5leGlzdChzcnMpO1xuICAgICAgc3JzLnNob3VsZC5oYXZlLnByb3BlcnR5KCdzcnNfbmFtZScpXG4gICAgICBzcnMuc2hvdWxkLmhhdmUucHJvcGVydHkoJ3Nyc19pZCcpO1xuICAgICAgc3JzLnNob3VsZC5oYXZlLnByb3BlcnR5KCdvcmdhbml6YXRpb24nKTtcbiAgICAgIHNycy5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnb3JnYW5pemF0aW9uX2Nvb3Jkc3lzX2lkJywgMCk7XG4gICAgICBzcnMuc2hvdWxkLmhhdmUucHJvcGVydHkoJ2RlZmluaXRpb24nKTtcbiAgICAgIGRvbmUoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBmYWlsIHRvIGdldCBhbiBTUlMgdGhhdCBkb2VzIG5vdCBleGlzdCcsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICBnZW9QYWNrYWdlLmdldFNwYXRpYWxSZWZlcmVuY2VTeXN0ZW1EYW8oKS5nZXRCeVNyc0lkKC0yLCBmdW5jdGlvbihlcnIsIHNycykge1xuICAgICAgc2hvdWxkLm5vdC5leGlzdChlcnIpO1xuICAgICAgc2hvdWxkLm5vdC5leGlzdChzcnMpO1xuICAgICAgZG9uZSgpO1xuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGdldCBhbGwgZGVmaW5lZCBTUlMnLCBmdW5jdGlvbihkb25lKSB7XG4gICAgZ2VvUGFja2FnZS5nZXRTcGF0aWFsUmVmZXJlbmNlU3lzdGVtRGFvKCkucXVlcnlGb3JBbGwoZnVuY3Rpb24oZXJyLCBzcnMpIHtcbiAgICAgIHNob3VsZC5ub3QuZXhpc3QoZXJyKTtcbiAgICAgIHNob3VsZC5leGlzdChzcnMpO1xuICAgICAgc3JzLnNob3VsZC5oYXZlLnByb3BlcnR5KCdsZW5ndGgnLCA0KTtcbiAgICAgIGRvbmUoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBnZXQgdGhlIDQzMjYgU1JTJywgZnVuY3Rpb24oZG9uZSkge1xuICAgIGdlb1BhY2thZ2UuZ2V0U3BhdGlhbFJlZmVyZW5jZVN5c3RlbURhbygpLmdldEJ5U3JzSWQoNDMyNiwgZnVuY3Rpb24oZXJyLCBzcnMpIHtcbiAgICAgIHNob3VsZC5leGlzdChzcnMpO1xuICAgICAgdmFyIHByb2plY3Rpb24gPSBnZW9QYWNrYWdlLmdldFNwYXRpYWxSZWZlcmVuY2VTeXN0ZW1EYW8oKS5nZXRQcm9qZWN0aW9uKHNycyk7XG4gICAgICBzaG91bGQuZXhpc3QocHJvamVjdGlvbik7XG4gICAgICBkb25lKCk7XG4gICAgfSk7XG4gIH0pO1xuXG59KTtcbiIsInZhciBEYXRhQ29sdW1uc0RhbyA9IHJlcXVpcmUoJy4uLy4uLy4uL2xpYi9kYXRhQ29sdW1ucycpLkRhdGFDb2x1bW5zRGFvXG4gICwgRGF0YUNvbHVtbnMgPSByZXF1aXJlKCcuLi8uLi8uLi9saWIvZGF0YUNvbHVtbnMnKS5EYXRhQ29sdW1uc1xuICAsIERhdGFDb2x1bW5Db25zdHJhaW50c0RhbyA9IHJlcXVpcmUoJy4uLy4uLy4uL2xpYi9kYXRhQ29sdW1uQ29uc3RyYWludHMnKS5EYXRhQ29sdW1uQ29uc3RyYWludHNEYW9cbiAgLCBEYXRhQ29sdW1uQ29uc3RyYWludHMgPSByZXF1aXJlKCcuLi8uLi8uLi9saWIvZGF0YUNvbHVtbkNvbnN0cmFpbnRzJykuRGF0YUNvbHVtbkNvbnN0cmFpbnRzXG4gICwgR2VvUGFja2FnZUNvbm5lY3Rpb24gPSByZXF1aXJlKCcuLi8uLi8uLi9saWIvZGIvZ2VvUGFja2FnZUNvbm5lY3Rpb24nKVxuICAsIFRhYmxlQ3JlYXRvciA9IHJlcXVpcmUoJy4uLy4uLy4uL2xpYi9kYi90YWJsZUNyZWF0b3InKVxuICAsIHBhdGggPSByZXF1aXJlKCdwYXRoJylcbiAgLCBmcyA9IHJlcXVpcmUoJ2ZzJylcbiAgLCBzaG91bGQgPSByZXF1aXJlKCdjaGFpJykuc2hvdWxkKCk7XG5cbmRlc2NyaWJlKCdEYXRhIENvbHVtbnMgdGVzdHMnLCBmdW5jdGlvbigpIHtcblxuICB2YXIgY29ubmVjdGlvbjtcblxuICB2YXIgb3JpZ2luYWxGaWxlbmFtZSA9IHBhdGguam9pbihfX2Rpcm5hbWUsICcuLicsICcuLicsICdmaXh0dXJlcycsICdyaXZlcnMuZ3BrZycpO1xuICB2YXIgZmlsZW5hbWUgPSBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4nLCAnLi4nLCAnZml4dHVyZXMnLCAndG1wJywgJ3JpdmVycy5ncGtnJyk7XG5cbiAgZnVuY3Rpb24gY29weUdlb3BhY2thZ2Uob3JpZ25hbCwgY29weSwgY2FsbGJhY2spIHtcbiAgICBpZiAodHlwZW9mKHByb2Nlc3MpICE9PSAndW5kZWZpbmVkJyAmJiBwcm9jZXNzLnZlcnNpb24pIHtcbiAgICAgIHZhciBmc0V4dHJhID0gcmVxdWlyZSgnZnMtZXh0cmEnKTtcbiAgICAgIGZzRXh0cmEuY29weShvcmlnaW5hbEZpbGVuYW1lLCBmaWxlbmFtZSwgY2FsbGJhY2spO1xuICAgIH0gZWxzZSB7XG4gICAgICBmaWxlbmFtZSA9IG9yaWdpbmFsRmlsZW5hbWU7XG4gICAgICBjYWxsYmFjaygpO1xuICAgIH1cbiAgfVxuXG4gIGJlZm9yZUVhY2goJ2NyZWF0ZSB0aGUgR2VvUGFja2FnZSBjb25uZWN0aW9uJywgZnVuY3Rpb24oZG9uZSkge1xuICAgIGNvcHlHZW9wYWNrYWdlKG9yaWdpbmFsRmlsZW5hbWUsIGZpbGVuYW1lLCBmdW5jdGlvbihlcnIpIHtcbiAgICAgIEdlb1BhY2thZ2VDb25uZWN0aW9uLmNvbm5lY3QoZmlsZW5hbWUsIGZ1bmN0aW9uKGVyciwgZ2VvUGFja2FnZUNvbm5lY3Rpb24pIHtcbiAgICAgICAgY29ubmVjdGlvbiA9IGdlb1BhY2thZ2VDb25uZWN0aW9uO1xuICAgICAgICBzaG91bGQuZXhpc3QoY29ubmVjdGlvbik7XG4gICAgICAgIGRvbmUoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBhZnRlckVhY2goJ3Nob3VsZCBjbG9zZSB0aGUgZ2VvcGFja2FnZScsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICBjb25uZWN0aW9uLmNsb3NlKCk7XG4gICAgaWYgKHR5cGVvZihwcm9jZXNzKSAhPT0gJ3VuZGVmaW5lZCcgJiYgcHJvY2Vzcy52ZXJzaW9uKSB7XG4gICAgICBmcy51bmxpbmsoZmlsZW5hbWUsIGRvbmUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBkb25lKCk7XG4gICAgfVxuICB9KTtcblxuICBpdCgnc2hvdWxkIGdldCB0aGUgZGF0YSBjb2x1bW4gZm9yIHByb3BlcnR5XzAnLCBmdW5jdGlvbihkb25lKSB7XG4gICAgdmFyIGRjID0gbmV3IERhdGFDb2x1bW5zRGFvKGNvbm5lY3Rpb24pO1xuICAgIGRjLmdldERhdGFDb2x1bW5zKCdGRUFUVVJFU3JpdmVyc2RzJywgJ3Byb3BlcnR5XzAnLCBmdW5jdGlvbihlcnIsIGRhdGFDb2x1bW4pIHtcbiAgICAgIGRhdGFDb2x1bW4uc2hvdWxkLmJlLmRlZXAuZXF1YWwoe1xuICAgICAgICB0YWJsZV9uYW1lOiAnRkVBVFVSRVNyaXZlcnNkcycsXG4gICAgICAgIGNvbHVtbl9uYW1lOiAncHJvcGVydHlfMCcsXG4gICAgICAgIG5hbWU6ICdTY2FsZXJhbmsnLFxuICAgICAgICB0aXRsZTogJ1NjYWxlcmFuaycsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnU2NhbGVyYW5rJyxcbiAgICAgICAgbWltZV90eXBlOiBudWxsLFxuICAgICAgICBjb25zdHJhaW50X25hbWU6IG51bGxcbiAgICAgIH0pO1xuICAgICAgZG9uZSgpO1xuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGdldCB0aGUgY29udGVudHMgZm9yIHRoZSBkYXRhIGNvbHVtbiBmb3IgcHJvcGVydHlfMCcsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICB2YXIgZGMgPSBuZXcgRGF0YUNvbHVtbnNEYW8oY29ubmVjdGlvbik7XG4gICAgZGMuZ2V0RGF0YUNvbHVtbnMoJ0ZFQVRVUkVTcml2ZXJzZHMnLCAncHJvcGVydHlfMCcsIGZ1bmN0aW9uKGVyciwgZGF0YUNvbHVtbikge1xuICAgICAgZGMuZ2V0Q29udGVudHMoZGF0YUNvbHVtbiwgZnVuY3Rpb24oZXJyLCBjb250ZW50cykge1xuICAgICAgICBjb250ZW50cy5zaG91bGQuYmUuZGVlcC5lcXVhbCh7XG4gICAgICAgICAgdGFibGVfbmFtZTogJ0ZFQVRVUkVTcml2ZXJzZHMnLFxuICAgICAgICAgIGRhdGFfdHlwZTogJ2ZlYXR1cmVzJyxcbiAgICAgICAgICBpZGVudGlmaWVyOiAnRkVBVFVSRVNyaXZlcnNkcycsXG4gICAgICAgICAgZGVzY3JpcHRpb246IG51bGwsXG4gICAgICAgICAgbGFzdF9jaGFuZ2U6ICcyMDE1LTEyLTA0VDE1OjI4OjU5LjEyMlonLFxuICAgICAgICAgIG1pbl94OiAtMjAwMzc1MDguMzQyNzg5MjQ0LFxuICAgICAgICAgIG1pbl95OiAtMTk5NzE4NjguODgwNDA4NTcsXG4gICAgICAgICAgbWF4X3g6IDIwMDM3NTA4LjM0Mjc4OTI0NCxcbiAgICAgICAgICBtYXhfeTogMTk5NzE4NjguODgwNDA4NTYzLFxuICAgICAgICAgIHNyc19pZDogMzg1N1xuICAgICAgICB9KTtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZ2V0IHRoZSBkYXRhIGNvbHVtbiBmb3IgZ2VvbScsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICB2YXIgZGMgPSBuZXcgRGF0YUNvbHVtbnNEYW8oY29ubmVjdGlvbik7XG4gICAgZGMuZ2V0RGF0YUNvbHVtbnMoJ0ZFQVRVUkVTcml2ZXJzZHMnLCAnZ2VvbScsIGZ1bmN0aW9uKGVyciwgZGF0YUNvbHVtbikge1xuICAgICAgc2hvdWxkLm5vdC5leGlzdChlcnIpO1xuICAgICAgc2hvdWxkLm5vdC5leGlzdChkYXRhQ29sdW1uKTtcbiAgICAgIGRvbmUoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBjcmVhdGUgYSBkYXRhIGNvbHVtbicsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICB2YXIgZGFvID0gbmV3IERhdGFDb2x1bW5zRGFvKGNvbm5lY3Rpb24pO1xuICAgIHZhciBkYyA9IG5ldyBEYXRhQ29sdW1ucygpO1xuICAgIGRjLnRhYmxlX25hbWUgPSAnRkVBVFVSRVNyaXZlcnNkcyc7XG4gICAgZGMuY29sdW1uX25hbWUgPSAndGVzdCc7XG4gICAgZGMubmFtZSA9ICdUZXN0IE5hbWUnO1xuICAgIGRjLnRpdGxlID0gJ1Rlc3QnO1xuICAgIGRjLmRlc2NyaXB0aW9uID0gJ1Rlc3QgRGVzY3JpcHRpb24nO1xuICAgIGRjLm1pbWVfdHlwZSA9ICd0ZXh0L2h0bWwnO1xuICAgIGRjLmNvbnN0cmFpbnRfbmFtZSA9ICd0ZXN0IGNvbnN0cmFpbnQnO1xuICAgIGRhby5jcmVhdGUoZGMsIGZ1bmN0aW9uKGVyciwgcmVzdWx0KXtcbiAgICAgIGRhby5nZXREYXRhQ29sdW1ucygnRkVBVFVSRVNyaXZlcnNkcycsICd0ZXN0JywgZnVuY3Rpb24oZXJyLCBkYXRhQ29sdW1uKSB7XG4gICAgICAgIGRhdGFDb2x1bW4uc2hvdWxkLmJlLmRlZXAuZXF1YWwoe1xuICAgICAgICAgIHRhYmxlX25hbWU6ICdGRUFUVVJFU3JpdmVyc2RzJyxcbiAgICAgICAgICBjb2x1bW5fbmFtZTogJ3Rlc3QnLFxuICAgICAgICAgIG5hbWU6ICdUZXN0IE5hbWUnLFxuICAgICAgICAgIHRpdGxlOiAnVGVzdCcsXG4gICAgICAgICAgZGVzY3JpcHRpb246ICdUZXN0IERlc2NyaXB0aW9uJyxcbiAgICAgICAgICBtaW1lX3R5cGU6ICd0ZXh0L2h0bWwnLFxuICAgICAgICAgIGNvbnN0cmFpbnRfbmFtZTogJ3Rlc3QgY29uc3RyYWludCdcbiAgICAgICAgfSk7XG4gICAgICAgIGRvbmUoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHF1ZXJ5IGJ5IHRoZSBjb25zdHJhaW50IG5hbWUgdG8gcmV0cmlldmUgYSBkYXRhIGNvbHVtbicsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICB2YXIgZGFvID0gbmV3IERhdGFDb2x1bW5zRGFvKGNvbm5lY3Rpb24pO1xuICAgIHZhciBkYyA9IG5ldyBEYXRhQ29sdW1ucygpO1xuICAgIGRjLnRhYmxlX25hbWUgPSAnRkVBVFVSRVNyaXZlcnNkcyc7XG4gICAgZGMuY29sdW1uX25hbWUgPSAndGVzdCc7XG4gICAgZGMubmFtZSA9ICdUZXN0IE5hbWUnO1xuICAgIGRjLnRpdGxlID0gJ1Rlc3QnO1xuICAgIGRjLmRlc2NyaXB0aW9uID0gJ1Rlc3QgRGVzY3JpcHRpb24nO1xuICAgIGRjLm1pbWVfdHlwZSA9ICd0ZXh0L2h0bWwnO1xuICAgIGRjLmNvbnN0cmFpbnRfbmFtZSA9ICd0ZXN0IGNvbnN0cmFpbnQnO1xuICAgIGRhby5jcmVhdGUoZGMsIGZ1bmN0aW9uKGVyciwgcmVzdWx0KXtcbiAgICAgIGRhby5xdWVyeUJ5Q29uc3RyYWludE5hbWUoJ3Rlc3QgY29uc3RyYWludCcsIGZ1bmN0aW9uKGVyciwgZGF0YUNvbHVtbiwgcm93RG9uZSkge1xuICAgICAgICBkYXRhQ29sdW1uLnNob3VsZC5iZS5kZWVwLmVxdWFsKHtcbiAgICAgICAgICB0YWJsZV9uYW1lOiAnRkVBVFVSRVNyaXZlcnNkcycsXG4gICAgICAgICAgY29sdW1uX25hbWU6ICd0ZXN0JyxcbiAgICAgICAgICBuYW1lOiAnVGVzdCBOYW1lJyxcbiAgICAgICAgICB0aXRsZTogJ1Rlc3QnLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiAnVGVzdCBEZXNjcmlwdGlvbicsXG4gICAgICAgICAgbWltZV90eXBlOiAndGV4dC9odG1sJyxcbiAgICAgICAgICBjb25zdHJhaW50X25hbWU6ICd0ZXN0IGNvbnN0cmFpbnQnXG4gICAgICAgIH0pO1xuICAgICAgICByb3dEb25lKCk7XG4gICAgICB9LCBkb25lKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBjcmVhdGUgYSBkYXRhIGNvbHVtbiBjb25zdHJhaW50JywgZnVuY3Rpb24oZG9uZSkge1xuICAgIHZhciB0YyA9IG5ldyBUYWJsZUNyZWF0b3IoY29ubmVjdGlvbik7XG4gICAgdGMuY3JlYXRlRGF0YUNvbHVtbkNvbnN0cmFpbnRzKGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIGRhbyA9IG5ldyBEYXRhQ29sdW1uQ29uc3RyYWludHNEYW8oY29ubmVjdGlvbik7XG4gICAgICB2YXIgZGMgPSBuZXcgRGF0YUNvbHVtbkNvbnN0cmFpbnRzKCk7XG4gICAgICBkYy5jb25zdHJhaW50X25hbWUgPSAndGVzdCBjb25zdHJhaW50JztcbiAgICAgIGRjLmNvbnN0cmFpbnRfdHlwZSA9ICdyYW5nZSc7XG4gICAgICBkYy52YWx1ZSA9ICdOVUxMJztcbiAgICAgIGRjLm1pbiA9IDU7XG4gICAgICBkYy5taW5faXNfaW5jbHVzaXZlID0gdHJ1ZTtcbiAgICAgIGRjLm1heCA9IDY7XG4gICAgICBkYy5tYXhfaXNfaW5jbHVzaXZlID0gdHJ1ZTtcbiAgICAgIGRjLmRlc2NyaXB0aW9uID0gJ2NvbnN0cmFpbnQgZGVzY3JpcHRpb24nO1xuXG4gICAgICBkYW8uY3JlYXRlKGRjLCBmdW5jdGlvbihlcnIsIHJlc3VsdCkge1xuICAgICAgICBjb25zb2xlLmxvZygnZXJyJywgZXJyKTtcbiAgICAgICAgY29uc29sZS5sb2coJ3Jlc3VsdCcsIHJlc3VsdCk7XG4gICAgICAgIGRhby5xdWVyeUJ5Q29uc3RyYWludE5hbWUoJ3Rlc3QgY29uc3RyYWludCcsIGZ1bmN0aW9uKGVyciwgZGF0YUNvbHVtbkNvbnN0cmFpbnQsIHJvd0RvbmUpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZygnY29uc3RyYWludCBuYW1lIGVycicsIGVycik7XG4gICAgICAgICAgZGF0YUNvbHVtbkNvbnN0cmFpbnQuc2hvdWxkLmJlLmRlZXAuZXF1YWwoe1xuICAgICAgICAgICAgY29uc3RyYWludF9uYW1lOiAndGVzdCBjb25zdHJhaW50JyxcbiAgICAgICAgICAgIGNvbnN0cmFpbnRfdHlwZTogJ3JhbmdlJyxcbiAgICAgICAgICAgIHZhbHVlOiAnTlVMTCcsXG4gICAgICAgICAgICBtaW46IDUsXG4gICAgICAgICAgICBtaW5faXNfaW5jbHVzaXZlOiAxLFxuICAgICAgICAgICAgbWF4OiA2LFxuICAgICAgICAgICAgbWF4X2lzX2luY2x1c2l2ZTogMSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnY29uc3RyYWludCBkZXNjcmlwdGlvbidcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByb3dEb25lKCk7XG4gICAgICAgIH0sIGRvbmUpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgY3JlYXRlIGEgZGF0YSBjb2x1bW4gY29uc3RyYWludCBhbmQgcXVlcnkgdW5pcXVlJywgZnVuY3Rpb24oZG9uZSkge1xuICAgIHZhciB0YyA9IG5ldyBUYWJsZUNyZWF0b3IoY29ubmVjdGlvbik7XG4gICAgdGMuY3JlYXRlRGF0YUNvbHVtbkNvbnN0cmFpbnRzKGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIGRhbyA9IG5ldyBEYXRhQ29sdW1uQ29uc3RyYWludHNEYW8oY29ubmVjdGlvbik7XG4gICAgICB2YXIgZGMgPSBuZXcgRGF0YUNvbHVtbkNvbnN0cmFpbnRzKCk7XG4gICAgICBkYy5jb25zdHJhaW50X25hbWUgPSAndGVzdCBjb25zdHJhaW50JztcbiAgICAgIGRjLmNvbnN0cmFpbnRfdHlwZSA9ICdyYW5nZSc7XG4gICAgICBkYy52YWx1ZSA9ICdOVUxMJztcbiAgICAgIGRjLm1pbiA9IDU7XG4gICAgICBkYy5taW5faXNfaW5jbHVzaXZlID0gdHJ1ZTtcbiAgICAgIGRjLm1heCA9IDY7XG4gICAgICBkYy5tYXhfaXNfaW5jbHVzaXZlID0gdHJ1ZTtcbiAgICAgIGRjLmRlc2NyaXB0aW9uID0gJ2NvbnN0cmFpbnQgZGVzY3JpcHRpb24nO1xuXG4gICAgICBkYW8uY3JlYXRlKGRjLCBmdW5jdGlvbihlcnIsIHJlc3VsdCkge1xuICAgICAgICBkYW8ucXVlcnlVbmlxdWUoJ3Rlc3QgY29uc3RyYWludCcsICdyYW5nZScsICdOVUxMJywgZnVuY3Rpb24oZXJyLCBkYXRhQ29sdW1uQ29uc3RyYWludCkge1xuICAgICAgICAgIGRhdGFDb2x1bW5Db25zdHJhaW50LnNob3VsZC5iZS5kZWVwLmVxdWFsKHtcbiAgICAgICAgICAgIGNvbnN0cmFpbnRfbmFtZTogJ3Rlc3QgY29uc3RyYWludCcsXG4gICAgICAgICAgICBjb25zdHJhaW50X3R5cGU6ICdyYW5nZScsXG4gICAgICAgICAgICB2YWx1ZTogJ05VTEwnLFxuICAgICAgICAgICAgbWluOiA1LFxuICAgICAgICAgICAgbWluX2lzX2luY2x1c2l2ZTogMSxcbiAgICAgICAgICAgIG1heDogNixcbiAgICAgICAgICAgIG1heF9pc19pbmNsdXNpdmU6IDEsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogJ2NvbnN0cmFpbnQgZGVzY3JpcHRpb24nXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgZG9uZSgpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxufSk7XG4iLCJ2YXIgRGF0YVR5cGVzID0gcmVxdWlyZSgnLi4vLi4vLi4vbGliL2RiL2RhdGFUeXBlcy5qcycpO1xuXG5kZXNjcmliZSgnRGF0YVR5cGVzIHRlc3RzJywgZnVuY3Rpb24oKSB7XG5cbiAgaXQoJ2dldCB0aGUgZW51bSBuYW1lJywgZnVuY3Rpb24oKSB7XG4gICAgdmFyIG5hbWUgPSBEYXRhVHlwZXMubmFtZSgwKTtcbiAgICBuYW1lLnNob3VsZC5iZS5lcXVhbCgnQk9PTEVBTicpO1xuICAgIG5hbWUgPSBEYXRhVHlwZXMubmFtZSgxKTtcbiAgICBuYW1lLnNob3VsZC5iZS5lcXVhbCgnVElOWUlOVCcpO1xuICAgIG5hbWUgPSBEYXRhVHlwZXMubmFtZSgyKTtcbiAgICBuYW1lLnNob3VsZC5iZS5lcXVhbCgnU01BTExJTlQnKTtcbiAgICBuYW1lID0gRGF0YVR5cGVzLm5hbWUoMyk7XG4gICAgbmFtZS5zaG91bGQuYmUuZXF1YWwoJ01FRElVTUlOVCcpO1xuICAgIG5hbWUgPSBEYXRhVHlwZXMubmFtZSg0KTtcbiAgICBuYW1lLnNob3VsZC5iZS5lcXVhbCgnSU5UJyk7XG4gICAgbmFtZSA9IERhdGFUeXBlcy5uYW1lKDUpO1xuICAgIG5hbWUuc2hvdWxkLmJlLmVxdWFsKCdJTlRFR0VSJyk7XG4gICAgbmFtZSA9IERhdGFUeXBlcy5uYW1lKDYpO1xuICAgIG5hbWUuc2hvdWxkLmJlLmVxdWFsKCdGTE9BVCcpO1xuICAgIG5hbWUgPSBEYXRhVHlwZXMubmFtZSg3KTtcbiAgICBuYW1lLnNob3VsZC5iZS5lcXVhbCgnRE9VQkxFJyk7XG4gICAgbmFtZSA9IERhdGFUeXBlcy5uYW1lKDgpO1xuICAgIG5hbWUuc2hvdWxkLmJlLmVxdWFsKCdSRUFMJyk7XG4gICAgbmFtZSA9IERhdGFUeXBlcy5uYW1lKDkpO1xuICAgIG5hbWUuc2hvdWxkLmJlLmVxdWFsKCdURVhUJyk7XG4gICAgbmFtZSA9IERhdGFUeXBlcy5uYW1lKDEwKTtcbiAgICBuYW1lLnNob3VsZC5iZS5lcXVhbCgnQkxPQicpO1xuICAgIG5hbWUgPSBEYXRhVHlwZXMubmFtZSgxMSk7XG4gICAgbmFtZS5zaG91bGQuYmUuZXF1YWwoJ0RBVEUnKTtcbiAgICBuYW1lID0gRGF0YVR5cGVzLm5hbWUoMTIpO1xuICAgIG5hbWUuc2hvdWxkLmJlLmVxdWFsKCdEQVRFVElNRScpO1xuICAgIG5hbWUgPSBEYXRhVHlwZXMubmFtZSgxMyk7XG4gICAgbmFtZS5zaG91bGQuYmUuZXF1YWwoJ0dFT01FVFJZJyk7XG4gIH0pO1xuXG4gIGl0KCdnZXQgdGhlIGVudW0gdmFsdWVzJywgZnVuY3Rpb24oKSB7XG4gICAgdmFyIG5hbWUgPSBEYXRhVHlwZXMuZnJvbU5hbWUoJ0JPT0xFQU4nKTtcbiAgICBuYW1lLnNob3VsZC5iZS5lcXVhbCgwKTtcbiAgICBuYW1lID0gRGF0YVR5cGVzLmZyb21OYW1lKCdUSU5ZSU5UJyk7XG4gICAgbmFtZS5zaG91bGQuYmUuZXF1YWwoMSk7XG4gICAgbmFtZSA9IERhdGFUeXBlcy5mcm9tTmFtZSgnU01BTExJTlQnKTtcbiAgICBuYW1lLnNob3VsZC5iZS5lcXVhbCgyKTtcbiAgICBuYW1lID0gRGF0YVR5cGVzLmZyb21OYW1lKCdNRURJVU1JTlQnKTtcbiAgICBuYW1lLnNob3VsZC5iZS5lcXVhbCgzKTtcbiAgICBuYW1lID0gRGF0YVR5cGVzLmZyb21OYW1lKCdJTlQnKTtcbiAgICBuYW1lLnNob3VsZC5iZS5lcXVhbCg0KTtcbiAgICBuYW1lID0gRGF0YVR5cGVzLmZyb21OYW1lKCdJTlRFR0VSJyk7XG4gICAgbmFtZS5zaG91bGQuYmUuZXF1YWwoNSk7XG4gICAgbmFtZSA9IERhdGFUeXBlcy5mcm9tTmFtZSgnRkxPQVQnKTtcbiAgICBuYW1lLnNob3VsZC5iZS5lcXVhbCg2KTtcbiAgICBuYW1lID0gRGF0YVR5cGVzLmZyb21OYW1lKCdET1VCTEUnKTtcbiAgICBuYW1lLnNob3VsZC5iZS5lcXVhbCg3KTtcbiAgICBuYW1lID0gRGF0YVR5cGVzLmZyb21OYW1lKCdSRUFMJyk7XG4gICAgbmFtZS5zaG91bGQuYmUuZXF1YWwoOCk7XG4gICAgbmFtZSA9IERhdGFUeXBlcy5mcm9tTmFtZSgnVEVYVCcpO1xuICAgIG5hbWUuc2hvdWxkLmJlLmVxdWFsKDkpO1xuICAgIG5hbWUgPSBEYXRhVHlwZXMuZnJvbU5hbWUoJ0JMT0InKTtcbiAgICBuYW1lLnNob3VsZC5iZS5lcXVhbCgxMCk7XG4gICAgbmFtZSA9IERhdGFUeXBlcy5mcm9tTmFtZSgnREFURScpO1xuICAgIG5hbWUuc2hvdWxkLmJlLmVxdWFsKDExKTtcbiAgICBuYW1lID0gRGF0YVR5cGVzLmZyb21OYW1lKCdEQVRFVElNRScpO1xuICAgIG5hbWUuc2hvdWxkLmJlLmVxdWFsKDEyKTtcbiAgICBuYW1lID0gRGF0YVR5cGVzLmZyb21OYW1lKCdHRU9NRVRSWScpO1xuICAgIG5hbWUuc2hvdWxkLmJlLmVxdWFsKDEzKTtcbiAgfSk7XG5cbn0pO1xuIiwidmFyIEdlb1BhY2thZ2VDb25uZWN0aW9uID0gcmVxdWlyZSgnLi4vLi4vLi4vbGliL2RiL2dlb1BhY2thZ2VDb25uZWN0aW9uJylcbiAgLCBHZW9QYWNrYWdlID0gcmVxdWlyZSgnLi4vLi4vLi4vbGliL2dlb1BhY2thZ2UnKVxuICAsIFRhYmxlQ3JlYXRvciA9IHJlcXVpcmUoJy4uLy4uLy4uL2xpYi9kYi90YWJsZUNyZWF0b3InKVxuICAsIFRpbGVUYWJsZSA9IHJlcXVpcmUoJy4uLy4uLy4uL2xpYi90aWxlcy91c2VyL3RpbGVUYWJsZScpXG4gICwgVGlsZURhbyA9IHJlcXVpcmUoJy4uLy4uLy4uL2xpYi90aWxlcy91c2VyL3RpbGVEYW8nKVxuICAsIFNldHVwRmVhdHVyZVRhYmxlID0gcmVxdWlyZSgnLi4vLi4vZml4dHVyZXMvc2V0dXBGZWF0dXJlVGFibGUuanMnKVxuICAsIFZlcmlmaWNhdGlvbiA9IHJlcXVpcmUoJy4uLy4uL2ZpeHR1cmVzL3ZlcmlmaWNhdGlvbicpXG4gICwgdGVzdFNldHVwID0gcmVxdWlyZSgnLi4vLi4vZml4dHVyZXMvdGVzdFNldHVwJylcbiAgLCB3a3ggPSByZXF1aXJlKCd3a3gnKVxuICAsIHNob3VsZCA9IHJlcXVpcmUoJ2NoYWknKS5zaG91bGQoKVxuICAsIHBhdGggPSByZXF1aXJlKCdwYXRoJylcbiAgLCBhc3luYyA9IHJlcXVpcmUoJ2FzeW5jJyk7XG5cbmRlc2NyaWJlKCdUYWJsZUNyZWF0b3IgdGVzdHMnLCBmdW5jdGlvbigpIHtcblxuICB2YXIgdGVzdEdlb1BhY2thZ2UgPSBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4nLCAndG1wJywgJ3Rlc3QuZ3BrZycpO1xuICB2YXIgZ2VvcGFja2FnZTtcblxuICBiZWZvcmVFYWNoKGZ1bmN0aW9uKGRvbmUpIHtcbiAgICB0ZXN0U2V0dXAuZGVsZXRlR2VvUGFja2FnZSh0ZXN0R2VvUGFja2FnZSwgZnVuY3Rpb24oKSB7XG4gICAgICB0ZXN0U2V0dXAuY3JlYXRlQmFyZUdlb1BhY2thZ2UodGVzdEdlb1BhY2thZ2UsIGZ1bmN0aW9uKGVyciwgZ3ApIHtcbiAgICAgICAgZ2VvcGFja2FnZSA9IGdwO1xuICAgICAgICBkb25lKCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgYWZ0ZXJFYWNoKGZ1bmN0aW9uKGRvbmUpIHtcbiAgICBnZW9wYWNrYWdlLmNsb3NlKCk7XG4gICAgdGVzdFNldHVwLmRlbGV0ZUdlb1BhY2thZ2UodGVzdEdlb1BhY2thZ2UsIGRvbmUpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGNyZWF0ZSB0aGUgc3BhdGlhbCByZWZlcmVuY2Ugc3lzdGVtIHRhYmxlJywgZnVuY3Rpb24oZG9uZSkge1xuICAgIHZhciB0YyA9IG5ldyBUYWJsZUNyZWF0b3IoZ2VvcGFja2FnZSk7XG4gICAgdGMuY3JlYXRlU3BhdGlhbFJlZmVyZW5jZVN5c3RlbShmdW5jdGlvbihlcnIsIHJlc3VsdCkge1xuICAgICAgc2hvdWxkLm5vdC5leGlzdChlcnIpO1xuICAgICAgVmVyaWZpY2F0aW9uLnZlcmlmeVNSUyhnZW9wYWNrYWdlLCBkb25lKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBjcmVhdGUgdGhlIGNvbnRlbnRzIHRhYmxlJywgZnVuY3Rpb24oZG9uZSkge1xuICAgIHZhciB0YyA9IG5ldyBUYWJsZUNyZWF0b3IoZ2VvcGFja2FnZSk7XG4gICAgdGMuY3JlYXRlQ29udGVudHMoZnVuY3Rpb24oZXJyLCByZXN1bHQpIHtcbiAgICAgIHNob3VsZC5ub3QuZXhpc3QoZXJyKTtcbiAgICAgIFZlcmlmaWNhdGlvbi52ZXJpZnlDb250ZW50cyhnZW9wYWNrYWdlLCBkb25lKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBjcmVhdGUgdGhlIGdlb21ldHJ5IGNvbHVtbnMgdGFibGUnLCBmdW5jdGlvbihkb25lKSB7XG4gICAgdmFyIHRjID0gbmV3IFRhYmxlQ3JlYXRvcihnZW9wYWNrYWdlKTtcbiAgICB0Yy5jcmVhdGVHZW9tZXRyeUNvbHVtbnMoZnVuY3Rpb24oZXJyLCByZXN1bHQpIHtcbiAgICAgIHNob3VsZC5ub3QuZXhpc3QoZXJyKTtcbiAgICAgIFZlcmlmaWNhdGlvbi52ZXJpZnlHZW9tZXRyeUNvbHVtbnMoZ2VvcGFja2FnZSwgZG9uZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgY3JlYXRlIHRoZSB0aWxlIG1hdHJpeCBzZXQgdGFibGUnLCBmdW5jdGlvbihkb25lKSB7XG4gICAgdmFyIHRjID0gbmV3IFRhYmxlQ3JlYXRvcihnZW9wYWNrYWdlKTtcbiAgICB0Yy5jcmVhdGVUaWxlTWF0cml4U2V0KGZ1bmN0aW9uKGVyciwgcmVzdWx0KSB7XG4gICAgICBzaG91bGQubm90LmV4aXN0KGVycik7XG4gICAgICBWZXJpZmljYXRpb24udmVyaWZ5VGlsZU1hdHJpeFNldChnZW9wYWNrYWdlLCBkb25lKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBjcmVhdGUgdGhlIHRpbGUgbWF0cml4IHRhYmxlJywgZnVuY3Rpb24oZG9uZSkge1xuICAgIHZhciB0YyA9IG5ldyBUYWJsZUNyZWF0b3IoZ2VvcGFja2FnZSk7XG4gICAgdGMuY3JlYXRlVGlsZU1hdHJpeChmdW5jdGlvbihlcnIsIHJlc3VsdCkge1xuICAgICAgc2hvdWxkLm5vdC5leGlzdChlcnIpO1xuICAgICAgVmVyaWZpY2F0aW9uLnZlcmlmeVRpbGVNYXRyaXgoZ2VvcGFja2FnZSwgZG9uZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgY3JlYXRlIHRoZSBkYXRhIGNvbHVtbnMgdGFibGUnLCBmdW5jdGlvbihkb25lKSB7XG4gICAgdmFyIHRjID0gbmV3IFRhYmxlQ3JlYXRvcihnZW9wYWNrYWdlKTtcbiAgICB0Yy5jcmVhdGVEYXRhQ29sdW1ucyhmdW5jdGlvbihlcnIsIHJlc3VsdCkge1xuICAgICAgc2hvdWxkLm5vdC5leGlzdChlcnIpO1xuICAgICAgVmVyaWZpY2F0aW9uLnZlcmlmeURhdGFDb2x1bW5zKGdlb3BhY2thZ2UsIGRvbmUpO1xuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGNyZWF0ZSB0aGUgZGF0YSBjb2x1bW4gY29uc3RyYWludHMgdGFibGUnLCBmdW5jdGlvbihkb25lKSB7XG4gICAgdmFyIHRjID0gbmV3IFRhYmxlQ3JlYXRvcihnZW9wYWNrYWdlKTtcbiAgICB0Yy5jcmVhdGVEYXRhQ29sdW1uQ29uc3RyYWludHMoZnVuY3Rpb24oZXJyLCByZXN1bHQpIHtcbiAgICAgIHNob3VsZC5ub3QuZXhpc3QoZXJyKTtcbiAgICAgIFZlcmlmaWNhdGlvbi52ZXJpZnlEYXRhQ29sdW1uQ29uc3RyYWludHMoZ2VvcGFja2FnZSwgZG9uZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgY3JlYXRlIHRoZSBtZXRhZGF0YSB0YWJsZScsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICB2YXIgdGMgPSBuZXcgVGFibGVDcmVhdG9yKGdlb3BhY2thZ2UpO1xuICAgIHRjLmNyZWF0ZU1ldGFkYXRhKGZ1bmN0aW9uKGVyciwgcmVzdWx0KSB7XG4gICAgICBzaG91bGQubm90LmV4aXN0KGVycik7XG4gICAgICBWZXJpZmljYXRpb24udmVyaWZ5TWV0YWRhdGEoZ2VvcGFja2FnZSwgZG9uZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgY3JlYXRlIHRoZSBtZXRhZGF0YSByZWZlcmVuY2UnLCBmdW5jdGlvbihkb25lKSB7XG4gICAgdmFyIHRjID0gbmV3IFRhYmxlQ3JlYXRvcihnZW9wYWNrYWdlKTtcbiAgICB0Yy5jcmVhdGVNZXRhZGF0YVJlZmVyZW5jZShmdW5jdGlvbihlcnIsIHJlc3VsdCkge1xuICAgICAgc2hvdWxkLm5vdC5leGlzdChlcnIpO1xuICAgICAgVmVyaWZpY2F0aW9uLnZlcmlmeU1ldGFkYXRhUmVmZXJlbmNlKGdlb3BhY2thZ2UsIGRvbmUpO1xuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGNyZWF0ZSB0aGUgZXh0ZW5zaW9ucyB0YWJsZScsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICB2YXIgdGMgPSBuZXcgVGFibGVDcmVhdG9yKGdlb3BhY2thZ2UpO1xuICAgIHRjLmNyZWF0ZUV4dGVuc2lvbnMoZnVuY3Rpb24oZXJyLCByZXN1bHQpIHtcbiAgICAgIHNob3VsZC5ub3QuZXhpc3QoZXJyKTtcbiAgICAgIGNvbnNvbGUubG9nKCdyZXN1bHQnLCByZXN1bHQpO1xuICAgICAgVmVyaWZpY2F0aW9uLnZlcmlmeUV4dGVuc2lvbnMoZ2VvcGFja2FnZSwgZG9uZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgY3JlYXRlIHRoZSB0YWJsZSBpbmRleCB0YWJsZScsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICB2YXIgdGMgPSBuZXcgVGFibGVDcmVhdG9yKGdlb3BhY2thZ2UpO1xuICAgIHRjLmNyZWF0ZVRhYmxlSW5kZXgoZnVuY3Rpb24oZXJyLCByZXN1bHQpIHtcbiAgICAgIHNob3VsZC5ub3QuZXhpc3QoZXJyKTtcbiAgICAgIFZlcmlmaWNhdGlvbi52ZXJpZnlUYWJsZUluZGV4KGdlb3BhY2thZ2UsIGRvbmUpO1xuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGNyZWF0ZSB0aGUgZ2VvbWV0cnkgaW5kZXggdGFibGUnLCBmdW5jdGlvbihkb25lKSB7XG4gICAgdmFyIHRjID0gbmV3IFRhYmxlQ3JlYXRvcihnZW9wYWNrYWdlKTtcbiAgICB0Yy5jcmVhdGVHZW9tZXRyeUluZGV4KGZ1bmN0aW9uKGVyciwgcmVzdWx0KSB7XG4gICAgICBzaG91bGQubm90LmV4aXN0KGVycik7XG4gICAgICBWZXJpZmljYXRpb24udmVyaWZ5R2VvbWV0cnlJbmRleChnZW9wYWNrYWdlLCBkb25lKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBjcmVhdGUgdGhlIGZlYXR1cmUgdGlsZSBsaW5rIHRhYmxlJywgZnVuY3Rpb24oZG9uZSkge1xuICAgIHZhciB0YyA9IG5ldyBUYWJsZUNyZWF0b3IoZ2VvcGFja2FnZSk7XG4gICAgdGMuY3JlYXRlRmVhdHVyZVRpbGVMaW5rKGZ1bmN0aW9uKGVyciwgcmVzdWx0KSB7XG4gICAgICBzaG91bGQubm90LmV4aXN0KGVycik7XG4gICAgICBWZXJpZmljYXRpb24udmVyaWZ5RmVhdHVyZVRpbGVMaW5rKGdlb3BhY2thZ2UsIGRvbmUpO1xuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGNyZWF0ZSB0aGUgcmVxdWlyZWQgdGFibGVzJywgZnVuY3Rpb24oZG9uZSkge1xuICAgIHZhciB0YyA9IG5ldyBUYWJsZUNyZWF0b3IoZ2VvcGFja2FnZSk7XG4gICAgdGMuY3JlYXRlUmVxdWlyZWQoZnVuY3Rpb24oZXJyLCByZXN1bHQpIHtcbiAgICAgIGFzeW5jLnNlcmllcyhbXG4gICAgICAgIFZlcmlmaWNhdGlvbi52ZXJpZnlDb250ZW50cy5iaW5kKHRoaXMsIGdlb3BhY2thZ2UpLFxuICAgICAgICBWZXJpZmljYXRpb24udmVyaWZ5U1JTLmJpbmQodGhpcywgZ2VvcGFja2FnZSksXG4gICAgICAgIGZ1bmN0aW9uKGNhbGxiYWNrKSB7XG4gICAgICAgICAgZ2VvcGFja2FnZS5nZXREYXRhYmFzZSgpLmNvdW50KCdncGtnX3NwYXRpYWxfcmVmX3N5cycsIGZ1bmN0aW9uKGVyciwgY291bnQpIHtcbiAgICAgICAgICAgIGNvdW50LnNob3VsZC5iZS5lcXVhbCg0KTtcbiAgICAgICAgICAgIGNhbGxiYWNrKCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIF0sIGZ1bmN0aW9uKCkge1xuICAgICAgICBkb25lKCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBjcmVhdGUgYSB1c2VyIHRpbGUgdGFibGUnLCBmdW5jdGlvbihkb25lKSB7XG4gICAgdmFyIGNvbHVtbnMgPSBUaWxlVGFibGUuY3JlYXRlUmVxdWlyZWRDb2x1bW5zKCk7XG4gICAgdmFyIHRpbGVUYWJsZSA9IG5ldyBUaWxlVGFibGUoJ3Rlc3RfdGlsZXMnLCBjb2x1bW5zKTtcbiAgICB2YXIgdGMgPSBuZXcgVGFibGVDcmVhdG9yKGdlb3BhY2thZ2UpO1xuICAgIHRjLmNyZWF0ZVVzZXJUYWJsZSh0aWxlVGFibGUsIGZ1bmN0aW9uKGVyciwgcmVzdWx0KSB7XG4gICAgICBWZXJpZmljYXRpb24udmVyaWZ5VGFibGVFeGlzdHMoZ2VvcGFja2FnZSwgJ3Rlc3RfdGlsZXMnLCBkb25lKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBjcmVhdGUgYSB1c2VyIGZlYXR1cmUgdGFibGUnLCBmdW5jdGlvbihkb25lKSB7XG4gICAgdmFyIGZlYXR1cmVUYWJsZSA9IFNldHVwRmVhdHVyZVRhYmxlLmJ1aWxkRmVhdHVyZVRhYmxlKCd0ZXN0X2ZlYXR1cmVzJywgJ2dlb20nLCB3a3guVHlwZXMud2t0LlBvaW50KTtcbiAgICB2YXIgdGMgPSBuZXcgVGFibGVDcmVhdG9yKGdlb3BhY2thZ2UpO1xuICAgIHRjLmNyZWF0ZVVzZXJUYWJsZShmZWF0dXJlVGFibGUsIGZ1bmN0aW9uKGVyciwgcmVzdWx0KSB7XG4gICAgICBWZXJpZmljYXRpb24udmVyaWZ5VGFibGVFeGlzdHMoZ2VvcGFja2FnZSwgJ3Rlc3RfZmVhdHVyZXMnLCBkb25lKTtcbiAgICB9KTtcbiAgfSk7XG5cbn0pO1xuIiwidmFyIEdlb1BhY2thZ2VNYW5hZ2VyID0gcmVxdWlyZSgnLi4vLi4vLi4vLi4vbGliL2dlb1BhY2thZ2VNYW5hZ2VyJylcbiAgLCBHZW9QYWNrYWdlID0gcmVxdWlyZSgnLi4vLi4vLi4vLi4vbGliL2dlb1BhY2thZ2UnKVxuICAsIEZlYXR1cmVUYWJsZUluZGV4ID0gcmVxdWlyZSgnLi4vLi4vLi4vLi4vbGliL2V4dGVuc2lvbi9pbmRleC9mZWF0dXJlVGFibGVJbmRleCcpXG4gICwgc3FsaXRlUXVlcnlCdWlsZGVyID0gcmVxdWlyZSgnLi4vLi4vLi4vLi4vbGliL2RiL3NxbGl0ZVF1ZXJ5QnVpbGRlcicpXG4gICwgVmVyaWZpY2F0aW9uID0gcmVxdWlyZSgnLi4vLi4vLi4vZml4dHVyZXMvdmVyaWZpY2F0aW9uJylcbiAgLCB0ZXN0U2V0dXAgPSByZXF1aXJlKCcuLi8uLi8uLi9maXh0dXJlcy90ZXN0U2V0dXAnKVxuICAsIHNob3VsZCA9IHJlcXVpcmUoJ2NoYWknKS5zaG91bGQoKVxuICAsIGZzID0gcmVxdWlyZSgnZnMtZXh0cmEnKVxuICAsIHBhdGggPSByZXF1aXJlKCdwYXRoJylcbiAgLCBhc3luYyA9IHJlcXVpcmUoJ2FzeW5jJyk7XG5cbmRlc2NyaWJlKCdHZW9QYWNrYWdlIEZlYXR1cmUgVGFibGUgSW5kZXggRXh0ZW5zaW9uIHRlc3RzJywgZnVuY3Rpb24oKSB7XG5cbiAgZGVzY3JpYmUoJ0NyZWF0ZSBuZXcgaW5kZXgnLCBmdW5jdGlvbigpIHtcbiAgICB2YXIgZ2VvUGFja2FnZTtcbiAgICB2YXIgZmVhdHVyZURhbztcblxuICAgIHZhciBvcmlnaW5hbEZpbGVuYW1lID0gcGF0aC5qb2luKF9fZGlybmFtZSwgJy4uJywgJy4uJywgJy4uJywgJ2ZpeHR1cmVzJywgJ3JpdmVycy5ncGtnJyk7XG4gICAgdmFyIGZpbGVuYW1lID0gcGF0aC5qb2luKF9fZGlybmFtZSwgJy4uJywgJy4uJywgJy4uJywgJ2ZpeHR1cmVzJywgJ3RtcCcsICdyaXZlcnMuZ3BrZycpO1xuXG4gICAgYmVmb3JlRWFjaCgnc2hvdWxkIG9wZW4gdGhlIGdlb3BhY2thZ2UnLCBmdW5jdGlvbihkb25lKSB7XG4gICAgICBmcy5jb3B5KG9yaWdpbmFsRmlsZW5hbWUsIGZpbGVuYW1lLCBmdW5jdGlvbihlcnIpIHtcbiAgICAgICAgR2VvUGFja2FnZU1hbmFnZXIub3BlbihmaWxlbmFtZSwgZnVuY3Rpb24oZXJyLCBncCkge1xuICAgICAgICAgIGdlb1BhY2thZ2UgPSBncDtcbiAgICAgICAgICBzaG91bGQubm90LmV4aXN0KGVycik7XG4gICAgICAgICAgc2hvdWxkLmV4aXN0KGdwKTtcbiAgICAgICAgICBzaG91bGQuZXhpc3QoZ3AuZ2V0RGF0YWJhc2UoKS5nZXREQkNvbm5lY3Rpb24oKSk7XG4gICAgICAgICAgZ3AuZ2V0UGF0aCgpLnNob3VsZC5iZS5lcXVhbChmaWxlbmFtZSk7XG4gICAgICAgICAgZ2VvUGFja2FnZS5nZXRGZWF0dXJlRGFvV2l0aFRhYmxlTmFtZSgnRkVBVFVSRVNyaXZlcnNkcycsIGZ1bmN0aW9uKGVyciwgcml2ZXJGZWF0dXJlRGFvKSB7XG4gICAgICAgICAgICBmZWF0dXJlRGFvID0gcml2ZXJGZWF0dXJlRGFvO1xuICAgICAgICAgICAgZG9uZSgpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgYWZ0ZXJFYWNoKCdzaG91bGQgY2xvc2UgdGhlIGdlb3BhY2thZ2UnLCBmdW5jdGlvbihkb25lKSB7XG4gICAgICBnZW9QYWNrYWdlLmNsb3NlKCk7XG4gICAgICBmcy5yZW1vdmUoZmlsZW5hbWUsIGRvbmUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gdGhlIGluZGV4IHN0YXR1cyBvZiBmYWxzZScsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICAgIHZhciBmdGkgPSBuZXcgRmVhdHVyZVRhYmxlSW5kZXgoZ2VvUGFja2FnZS5nZXREYXRhYmFzZSgpLCBmZWF0dXJlRGFvKTtcbiAgICAgIGZ0aS5pc0luZGV4ZWQoZnVuY3Rpb24oZXJyLCBpbmRleGVkKXtcbiAgICAgICAgc2hvdWxkLm5vdC5leGlzdChlcnIpO1xuICAgICAgICBpbmRleGVkLnNob3VsZC5iZS5lcXVhbChmYWxzZSk7XG4gICAgICAgIGRvbmUoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBpbmRleCB0aGUgdGFibGUnLCBmdW5jdGlvbihkb25lKSB7XG4gICAgICB2YXIgZnRpID0gbmV3IEZlYXR1cmVUYWJsZUluZGV4KGdlb1BhY2thZ2UuZ2V0RGF0YWJhc2UoKSwgZmVhdHVyZURhbyk7XG4gICAgICBmdGkuZ2V0VGFibGVJbmRleChmdW5jdGlvbihlcnIsIHRhYmxlSW5kZXgpIHtcbiAgICAgICAgc2hvdWxkLm5vdC5leGlzdCh0YWJsZUluZGV4KTtcbiAgICAgICAgc2hvdWxkLm5vdC5leGlzdChlcnIpO1xuICAgICAgICBmdGkuaW5kZXgoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coJ3Byb2dyZXNzJywgYXJndW1lbnRzKTtcbiAgICAgICAgfSwgZnVuY3Rpb24oZXJyKSB7XG4gICAgICAgICAgc2hvdWxkLm5vdC5leGlzdChlcnIpO1xuICAgICAgICAgIC8vIGVuc3VyZSBpdCB3YXMgY3JlYXRlZFxuICAgICAgICAgIHZhciBmdGkyID0gbmV3IEZlYXR1cmVUYWJsZUluZGV4KGdlb1BhY2thZ2UuZ2V0RGF0YWJhc2UoKSwgZmVhdHVyZURhbyk7XG4gICAgICAgICAgZnRpMi5nZXRUYWJsZUluZGV4KGZ1bmN0aW9uKGVyciwgdGFibGVJbmRleCkge1xuICAgICAgICAgICAgc2hvdWxkLmV4aXN0KHRhYmxlSW5kZXgpO1xuICAgICAgICAgICAgc2hvdWxkLm5vdC5leGlzdChlcnIpO1xuICAgICAgICAgICAgc2hvdWxkLmV4aXN0KHRhYmxlSW5kZXgubGFzdF9pbmRleGVkKTtcbiAgICAgICAgICAgIGRvbmUoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ1Rlc3QgZXhpc3RpbmcgaW5kZXgnLCBmdW5jdGlvbigpIHtcblxuICAgIHZhciBnZW9QYWNrYWdlO1xuICAgIHZhciBmZWF0dXJlRGFvO1xuXG4gICAgdmFyIG9yaWdpbmFsRmlsZW5hbWUgPSBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4nLCAnLi4nLCAnLi4nLCAnZml4dHVyZXMnLCAncml2ZXJzX2luZGV4ZWQuZ3BrZycpO1xuICAgIHZhciBmaWxlbmFtZSA9IHBhdGguam9pbihfX2Rpcm5hbWUsICcuLicsICcuLicsICcuLicsICdmaXh0dXJlcycsICd0bXAnLCAncml2ZXJzX2luZGV4ZWQuZ3BrZycpO1xuXG4gICAgYmVmb3JlRWFjaCgnc2hvdWxkIG9wZW4gdGhlIGdlb3BhY2thZ2UnLCBmdW5jdGlvbihkb25lKSB7XG4gICAgICBmcy5jb3B5KG9yaWdpbmFsRmlsZW5hbWUsIGZpbGVuYW1lLCBmdW5jdGlvbihlcnIpIHtcbiAgICAgICAgR2VvUGFja2FnZU1hbmFnZXIub3BlbihmaWxlbmFtZSwgZnVuY3Rpb24oZXJyLCBncCkge1xuICAgICAgICAgIGdlb1BhY2thZ2UgPSBncDtcbiAgICAgICAgICBzaG91bGQubm90LmV4aXN0KGVycik7XG4gICAgICAgICAgc2hvdWxkLmV4aXN0KGdwKTtcbiAgICAgICAgICBzaG91bGQuZXhpc3QoZ3AuZ2V0RGF0YWJhc2UoKS5nZXREQkNvbm5lY3Rpb24oKSk7XG4gICAgICAgICAgZ3AuZ2V0UGF0aCgpLnNob3VsZC5iZS5lcXVhbChmaWxlbmFtZSk7XG4gICAgICAgICAgZ2VvUGFja2FnZS5nZXRGZWF0dXJlRGFvV2l0aFRhYmxlTmFtZSgncml2ZXJzJywgZnVuY3Rpb24oZXJyLCByaXZlckZlYXR1cmVEYW8pIHtcbiAgICAgICAgICAgIGZlYXR1cmVEYW8gPSByaXZlckZlYXR1cmVEYW87XG4gICAgICAgICAgICBkb25lKCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBhZnRlckVhY2goJ3Nob3VsZCBjbG9zZSB0aGUgZ2VvcGFja2FnZScsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICAgIGdlb1BhY2thZ2UuY2xvc2UoKTtcbiAgICAgIGZzLnJlbW92ZShmaWxlbmFtZSwgZG9uZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHF1ZXJ5IGZvciB0aGUgaW5kZXggcm93IHJpdmVycywgMzE1JywgZnVuY3Rpb24oZG9uZSkge1xuICAgICAgdmFyIHdoZXJlU3RyaW5nID0gJ3RhYmxlX25hbWUgPSA/IGFuZCBnZW9tX2lkID0gPyc7XG4gICAgICB2YXIgd2hlcmVBcmdzID0gWyAncml2ZXJzJywgMzE1IF07XG5cbiAgICAgIHZhciBxdWVyeSA9IHNxbGl0ZVF1ZXJ5QnVpbGRlci5idWlsZFF1ZXJ5KGZhbHNlLCBcIiduZ2FfZ2VvbWV0cnlfaW5kZXgnXCIsIHVuZGVmaW5lZCwgd2hlcmVTdHJpbmcpO1xuICAgICAgZ2VvUGFja2FnZS5nZXREYXRhYmFzZSgpLmdldChxdWVyeSwgd2hlcmVBcmdzLCBmdW5jdGlvbihlcnIsIHJlc3VsdCkge1xuICAgICAgICBzaG91bGQuZXhpc3QocmVzdWx0KTtcbiAgICAgICAgZG9uZShlcnIpO1xuICAgICAgfS5iaW5kKHRoaXMpKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZ2V0IHRoZSBleHRlbnNpb24gcm93JywgZnVuY3Rpb24oZG9uZSkge1xuICAgICAgdmFyIGZ0aSA9IG5ldyBGZWF0dXJlVGFibGVJbmRleChnZW9QYWNrYWdlLmdldERhdGFiYXNlKCksIGZlYXR1cmVEYW8pO1xuICAgICAgZnRpLmdldEZlYXR1cmVUYWJsZUluZGV4RXh0ZW5zaW9uKGZ1bmN0aW9uKGVyciwgZXh0ZW5zaW9uKXtcbiAgICAgICAgc2hvdWxkLm5vdC5leGlzdChlcnIpO1xuICAgICAgICBzaG91bGQuZXhpc3QoZXh0ZW5zaW9uKTtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJldHVybiB0aGUgaW5kZXggc3RhdHVzIG9mIHRydWUnLCBmdW5jdGlvbihkb25lKSB7XG4gICAgICB2YXIgZnRpID0gbmV3IEZlYXR1cmVUYWJsZUluZGV4KGdlb1BhY2thZ2UuZ2V0RGF0YWJhc2UoKSwgZmVhdHVyZURhbyk7XG4gICAgICBmdGkuaXNJbmRleGVkKGZ1bmN0aW9uKGVyciwgaW5kZXhlZCl7XG4gICAgICAgIHNob3VsZC5ub3QuZXhpc3QoZXJyKTtcbiAgICAgICAgaW5kZXhlZC5zaG91bGQuYmUuZXF1YWwodHJ1ZSk7XG4gICAgICAgIGRvbmUoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBmb3JjZSBpbmRleCB0aGUgdGFibGUnLCBmdW5jdGlvbihkb25lKSB7XG4gICAgICB2YXIgZnRpID0gbmV3IEZlYXR1cmVUYWJsZUluZGV4KGdlb1BhY2thZ2UuZ2V0RGF0YWJhc2UoKSwgZmVhdHVyZURhbyk7XG4gICAgICBmdGkuZ2V0VGFibGVJbmRleChmdW5jdGlvbihlcnIsIHRhYmxlSW5kZXgpIHtcbiAgICAgICAgdGFibGVJbmRleC5sYXN0X2luZGV4ZWQuc2hvdWxkLmJlLmVxdWFsKCcyMDE2LTA1LTAyVDEyOjA4OjE0LjE0NFonKTtcbiAgICAgICAgZnRpLmluZGV4V2l0aEZvcmNlKHRydWUsIGZ1bmN0aW9uKCkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKCdwcm9ncmVzcycsIGFyZ3VtZW50cyk7XG4gICAgICAgIH0sIGZ1bmN0aW9uKGVycikge1xuICAgICAgICAgIHNob3VsZC5ub3QuZXhpc3QoZXJyKTtcbiAgICAgICAgICAvLyBlbnN1cmUgaXQgd2FzIGNyZWF0ZWRcbiAgICAgICAgICB2YXIgZnRpMiA9IG5ldyBGZWF0dXJlVGFibGVJbmRleChnZW9QYWNrYWdlLmdldERhdGFiYXNlKCksIGZlYXR1cmVEYW8pO1xuICAgICAgICAgIGZ0aTIuZ2V0VGFibGVJbmRleChmdW5jdGlvbihlcnIsIHRhYmxlSW5kZXgpIHtcbiAgICAgICAgICAgIHNob3VsZC5leGlzdCh0YWJsZUluZGV4KTtcbiAgICAgICAgICAgIHNob3VsZC5ub3QuZXhpc3QoZXJyKTtcbiAgICAgICAgICAgIHRhYmxlSW5kZXgubGFzdF9pbmRleGVkLnNob3VsZC5ub3QuYmUuZXF1YWwoJzIwMTYtMDUtMDJUMTI6MDg6MTQuMTQ0WicpO1xuICAgICAgICAgICAgZG9uZSgpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIiwidmFyIEdlb1BhY2thZ2VDb25uZWN0aW9uID0gcmVxdWlyZSgnLi4vLi4vLi4vbGliL2RiL2dlb1BhY2thZ2VDb25uZWN0aW9uJylcbiAgLCBHZW9QYWNrYWdlID0gcmVxdWlyZSgnLi4vLi4vLi4vbGliL2dlb1BhY2thZ2UnKVxuICAsIFZlcmlmaWNhdGlvbiA9IHJlcXVpcmUoJy4uLy4uL2ZpeHR1cmVzL3ZlcmlmaWNhdGlvbicpXG4gICwgdGVzdFNldHVwID0gcmVxdWlyZSgnLi4vLi4vZml4dHVyZXMvdGVzdFNldHVwJylcbiAgLCBzaG91bGQgPSByZXF1aXJlKCdjaGFpJykuc2hvdWxkKClcbiAgLCBwYXRoID0gcmVxdWlyZSgncGF0aCcpXG4gICwgYXN5bmMgPSByZXF1aXJlKCdhc3luYycpO1xuXG5kZXNjcmliZSgnR2VvUGFja2FnZSBFeHRlbnNpb24gRGFvIHRlc3RzJywgZnVuY3Rpb24oKSB7XG4gIHZhciB0ZXN0R2VvUGFja2FnZSA9IHBhdGguam9pbihfX2Rpcm5hbWUsICcuLicsICd0bXAnLCAndGVzdC5ncGtnJyk7XG4gIHZhciB0YWJsZU5hbWUgPSAndGVzdF9mZWF0dXJlcy50ZXN0JztcbiAgdmFyIGdlb3BhY2thZ2U7XG5cbiAgYmVmb3JlRWFjaChmdW5jdGlvbihkb25lKSB7XG4gICAgdGVzdFNldHVwLmRlbGV0ZUdlb1BhY2thZ2UodGVzdEdlb1BhY2thZ2UsIGZ1bmN0aW9uKCkge1xuICAgICAgdGVzdFNldHVwLmNyZWF0ZUdlb1BhY2thZ2UodGVzdEdlb1BhY2thZ2UsIGZ1bmN0aW9uKGVyciwgZ3ApIHtcbiAgICAgICAgZ2VvcGFja2FnZSA9IGdwO1xuICAgICAgICBkb25lKCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgYWZ0ZXJFYWNoKGZ1bmN0aW9uKGRvbmUpIHtcbiAgICBnZW9wYWNrYWdlLmNsb3NlKCk7XG4gICAgdGVzdFNldHVwLmRlbGV0ZUdlb1BhY2thZ2UodGVzdEdlb1BhY2thZ2UsIGRvbmUpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGNyZWF0ZSBhbiBleHRlbnNpb25zIHRhYmxlJywgZnVuY3Rpb24oZG9uZSkge1xuICAgIHZhciBleHRlbnNpb25EYW8gPSBnZW9wYWNrYWdlLmdldEV4dGVuc2lvbkRhbygpO1xuICAgIGV4dGVuc2lvbkRhby5jcmVhdGVUYWJsZShmdW5jdGlvbihlcnIsIHRhYmxlKSB7XG4gICAgICBWZXJpZmljYXRpb24udmVyaWZ5RXh0ZW5zaW9ucyhnZW9wYWNrYWdlLCBkb25lKTtcbiAgICB9KTtcbiAgfSk7XG5cbn0pO1xuIiwidmFyIEdlb1BhY2thZ2VNYW5hZ2VyID0gcmVxdWlyZSgnLi4vLi4vLi4vLi4vbGliL2dlb1BhY2thZ2VNYW5hZ2VyJylcbiAgLCBHZW9tZXRyeUNvbHVtbnNEYW8gPSByZXF1aXJlKCcuLi8uLi8uLi8uLi9saWIvZmVhdHVyZXMvY29sdW1ucycpLkdlb21ldHJ5Q29sdW1uc0Rhb1xuICAsIEdlb1BhY2thZ2VDb25uZWN0aW9uID0gcmVxdWlyZSgnLi4vLi4vLi4vLi4vbGliL2RiL2dlb1BhY2thZ2VDb25uZWN0aW9uJylcbiAgLCBUZXN0VXRpbHMgPSByZXF1aXJlKCcuLi8uLi8uLi9maXh0dXJlcy90ZXN0VXRpbHMnKVxuICAsIHNob3VsZCA9IHJlcXVpcmUoJ2NoYWknKS5zaG91bGQoKVxuICAsIHBhdGggPSByZXF1aXJlKCdwYXRoJyk7XG5cbmRlc2NyaWJlKCdHZW9tZXRyeUNvbHVtbnMgdGVzdHMnLCBmdW5jdGlvbigpIHtcblxuICB2YXIgZGI7XG4gIHZhciBjb25uZWN0aW9uO1xuXG4gIGJlZm9yZUVhY2goJ3Nob3VsZCBvcGVuIHRoZSBnZW9wYWNrYWdlJywgZnVuY3Rpb24oZG9uZSkge1xuICAgIEdlb1BhY2thZ2VDb25uZWN0aW9uLmNvbm5lY3QocGF0aC5qb2luKF9fZGlybmFtZSwgJy4uJywgJy4uJywgJy4uJywgJ2ZpeHR1cmVzJywgJ2dkYWxfc2FtcGxlLmdwa2cnKSwgZnVuY3Rpb24oZXJyLCBncENvbm5lY3Rpb24pIHtcbiAgICAgIGNvbm5lY3Rpb24gPSBncENvbm5lY3Rpb247XG4gICAgICBkb25lKCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGFmdGVyRWFjaCgnc2hvdWxkIGNsb3NlIHRoZSBnZW9wYWNrYWdlJywgZnVuY3Rpb24oKSB7XG4gICAgY29ubmVjdGlvbi5jbG9zZSgpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGdldCB0aGUgZmVhdHVyZSB0YWJsZXMnLCBmdW5jdGlvbihkb25lKSB7XG4gICAgdmFyIGdjZCA9IG5ldyBHZW9tZXRyeUNvbHVtbnNEYW8oY29ubmVjdGlvbik7XG4gICAgZ2NkLmdldEZlYXR1cmVUYWJsZXMoZnVuY3Rpb24oZXJyLCB0YWJsZXMpIHtcbiAgICAgIHNob3VsZC5ub3QuZXhpc3QoZXJyKTtcbiAgICAgIHNob3VsZC5leGlzdCh0YWJsZXMpO1xuICAgICAgdGFibGVzLmxlbmd0aC5zaG91bGQuYmUuZXF1YWwoMTYpO1xuICAgICAgdGFibGVzLnNob3VsZC5oYXZlLm1lbWJlcnMoW1xuICAgICAgICAncG9pbnQyZCcsXG4gICAgICAgICAnbGluZXN0cmluZzJkJyxcbiAgICAgICAgICdwb2x5Z29uMmQnLFxuICAgICAgICAgJ211bHRpcG9pbnQyZCcsXG4gICAgICAgICAnbXVsdGlsaW5lc3RyaW5nMmQnLFxuICAgICAgICAgJ211bHRpcG9seWdvbjJkJyxcbiAgICAgICAgICdnZW9tY29sbGVjdGlvbjJkJyxcbiAgICAgICAgICdnZW9tZXRyeTJkJyxcbiAgICAgICAgICdwb2ludDNkJyxcbiAgICAgICAgICdsaW5lc3RyaW5nM2QnLFxuICAgICAgICAgJ3BvbHlnb24zZCcsXG4gICAgICAgICAnbXVsdGlwb2ludDNkJyxcbiAgICAgICAgICdtdWx0aWxpbmVzdHJpbmczZCcsXG4gICAgICAgICAnbXVsdGlwb2x5Z29uM2QnLFxuICAgICAgICAgJ2dlb21jb2xsZWN0aW9uM2QnLFxuICAgICAgICAgJ2dlb21ldHJ5M2QnXG4gICAgICBdKTtcbiAgICAgIGRvbmUoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBnZXQgdGhlIHRhYmxlJywgZnVuY3Rpb24oZG9uZSkge1xuICAgIHZhciBnY2QgPSBuZXcgR2VvbWV0cnlDb2x1bW5zRGFvKGNvbm5lY3Rpb24pO1xuICAgIGdjZC5xdWVyeUZvclRhYmxlTmFtZSgncG9pbnQyZCcsIGZ1bmN0aW9uKGVyciwgdGFibGUpIHtcbiAgICAgIHNob3VsZC5ub3QuZXhpc3QoZXJyKTtcbiAgICAgIHNob3VsZC5leGlzdCh0YWJsZSk7XG4gICAgICBUZXN0VXRpbHMuY29tcGFyZVByb3BlcnRpZXModGFibGUsIHtcbiAgICAgICAgY29sdW1uX25hbWU6ICdnZW9tJyxcbiAgICAgICAgdGFibGVfbmFtZTogJ3BvaW50MmQnLFxuICAgICAgICBnZW9tZXRyeV90eXBlX25hbWU6ICdQT0lOVCcsXG4gICAgICAgIHNyc19pZDogMCxcbiAgICAgICAgejogMCxcbiAgICAgICAgbTogMFxuICAgICAgfSk7XG4gICAgICBkb25lKCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZ2V0IG5vIHRhYmxlJywgZnVuY3Rpb24oZG9uZSkge1xuICAgIHZhciBnY2QgPSBuZXcgR2VvbWV0cnlDb2x1bW5zRGFvKGNvbm5lY3Rpb24pO1xuICAgIGdjZC5xdWVyeUZvclRhYmxlTmFtZSgnZG9lc25vdGV4aXN0JywgZnVuY3Rpb24oZXJyLCB0YWJsZSkge1xuICAgICAgc2hvdWxkLm5vdC5leGlzdChlcnIpO1xuICAgICAgc2hvdWxkLm5vdC5leGlzdCh0YWJsZSk7XG4gICAgICBkb25lKCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZ2V0IGFsbCB0aGUgdGFibGVzJywgZnVuY3Rpb24oZG9uZSl7XG4gICAgdmFyIGdjZCA9IG5ldyBHZW9tZXRyeUNvbHVtbnNEYW8oY29ubmVjdGlvbik7XG4gICAgZ2NkLnF1ZXJ5Rm9yQWxsKGZ1bmN0aW9uKGVyciwgcmVzdWx0cykge1xuICAgICAgc2hvdWxkLm5vdC5leGlzdChlcnIpO1xuICAgICAgc2hvdWxkLmV4aXN0KHJlc3VsdHMpO1xuICAgICAgcmVzdWx0cy5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnbGVuZ3RoJywgMTYpO1xuICAgICAgZG9uZSgpO1xuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGdldCB0aGUgdGFibGUnLCBmdW5jdGlvbihkb25lKSB7XG4gICAgdmFyIGdjZCA9IG5ldyBHZW9tZXRyeUNvbHVtbnNEYW8oY29ubmVjdGlvbik7XG4gICAgZ2NkLnF1ZXJ5Rm9yVGFibGVOYW1lKCdwb2ludDJkJywgZnVuY3Rpb24oZXJyLCB0YWJsZSkge1xuICAgICAgc2hvdWxkLm5vdC5leGlzdChlcnIpO1xuICAgICAgc2hvdWxkLmV4aXN0KHRhYmxlKTtcbiAgICAgIFRlc3RVdGlscy5jb21wYXJlUHJvcGVydGllcyh0YWJsZSwge1xuICAgICAgICB0YWJsZV9uYW1lOiAncG9pbnQyZCcsXG4gICAgICAgIGNvbHVtbl9uYW1lOiAnZ2VvbScsXG4gICAgICAgIGdlb21ldHJ5X3R5cGVfbmFtZTogJ1BPSU5UJyxcbiAgICAgICAgc3JzX2lkOiAwLFxuICAgICAgICB6OiAwLFxuICAgICAgICBtOiAwXG4gICAgICB9KTtcbiAgICAgIGRvbmUoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBnZXQgdGhlIHNycyBmcm9tIHRoZSB0YWJsZScsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICB2YXIgZ2NkID0gbmV3IEdlb21ldHJ5Q29sdW1uc0Rhbyhjb25uZWN0aW9uKTtcbiAgICBnY2QucXVlcnlGb3JUYWJsZU5hbWUoJ3BvaW50MmQnLCBmdW5jdGlvbihlcnIsIHRhYmxlKSB7XG4gICAgICBzaG91bGQubm90LmV4aXN0KGVycik7XG4gICAgICBzaG91bGQuZXhpc3QodGFibGUpO1xuICAgICAgVGVzdFV0aWxzLmNvbXBhcmVQcm9wZXJ0aWVzKHRhYmxlLCB7XG4gICAgICAgIHRhYmxlX25hbWU6ICdwb2ludDJkJyxcbiAgICAgICAgY29sdW1uX25hbWU6ICdnZW9tJyxcbiAgICAgICAgZ2VvbWV0cnlfdHlwZV9uYW1lOiAnUE9JTlQnLFxuICAgICAgICBzcnNfaWQ6IDAsXG4gICAgICAgIHo6IDAsXG4gICAgICAgIG06IDBcbiAgICAgIH0pO1xuICAgICAgZ2NkLmdldFNycyh0YWJsZSwgZnVuY3Rpb24oZXJyLCBzcnMpIHtcbiAgICAgICAgVGVzdFV0aWxzLmNvbXBhcmVQcm9wZXJ0aWVzKHNycywge1xuICAgICAgICAgIHNyc19uYW1lOiAnVW5kZWZpbmVkIGdlb2dyYXBoaWMgU1JTJyxcbiAgICAgICAgICBzcnNfaWQ6IDAsXG4gICAgICAgICAgb3JnYW5pemF0aW9uOiAnTk9ORScsXG4gICAgICAgICAgb3JnYW5pemF0aW9uX2Nvb3Jkc3lzX2lkOiAwLFxuICAgICAgICAgIGRlZmluaXRpb246ICd1bmRlZmluZWQnLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiAndW5kZWZpbmVkIGdlb2dyYXBoaWMgY29vcmRpbmF0ZSByZWZlcmVuY2Ugc3lzdGVtJ1xuICAgICAgICB9KTtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZ2V0IHRoZSBjb250ZW50cyBmcm9tIHRoZSB0YWJsZScsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICB2YXIgZ2NkID0gbmV3IEdlb21ldHJ5Q29sdW1uc0Rhbyhjb25uZWN0aW9uKTtcbiAgICBnY2QucXVlcnlGb3JUYWJsZU5hbWUoJ3BvaW50MmQnLCBmdW5jdGlvbihlcnIsIHRhYmxlKSB7XG4gICAgICBzaG91bGQubm90LmV4aXN0KGVycik7XG4gICAgICBzaG91bGQuZXhpc3QodGFibGUpO1xuICAgICAgVGVzdFV0aWxzLmNvbXBhcmVQcm9wZXJ0aWVzKHRhYmxlLCB7XG4gICAgICAgIHRhYmxlX25hbWU6ICdwb2ludDJkJyxcbiAgICAgICAgY29sdW1uX25hbWU6ICdnZW9tJyxcbiAgICAgICAgZ2VvbWV0cnlfdHlwZV9uYW1lOiAnUE9JTlQnLFxuICAgICAgICBzcnNfaWQ6IDAsXG4gICAgICAgIHo6IDAsXG4gICAgICAgIG06IDBcbiAgICAgIH0pO1xuICAgICAgZ2NkLmdldENvbnRlbnRzKHRhYmxlLCBmdW5jdGlvbihlcnIsIGNvbnRlbnRzKSB7XG4gICAgICAgIGNvbnRlbnRzLnNob3VsZC5iZS5kZWVwLmVxdWFsKHtcbiAgICAgICAgICB0YWJsZV9uYW1lOiAncG9pbnQyZCcsXG4gICAgICAgICAgZGF0YV90eXBlOiAnZmVhdHVyZXMnLFxuICAgICAgICAgIGlkZW50aWZpZXI6ICdwb2ludDJkJyxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogJycsXG4gICAgICAgICAgbGFzdF9jaGFuZ2U6ICcyMDE0LTA4LTI3VDE1OjM2OjQxLjAwMFonLFxuICAgICAgICAgIG1pbl94OiAxLFxuICAgICAgICAgIG1pbl95OiAyLFxuICAgICAgICAgIG1heF94OiAxLFxuICAgICAgICAgIG1heF95OiAyLFxuICAgICAgICAgIHNyc19pZDogMFxuICAgICAgICB9KTtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZ2V0IHRoZSBwcm9qZWN0aW9uIGZyb20gdGhlIHRhYmxlJywgZnVuY3Rpb24oZG9uZSkge1xuICAgIHZhciBnY2QgPSBuZXcgR2VvbWV0cnlDb2x1bW5zRGFvKGNvbm5lY3Rpb24pO1xuICAgIGdjZC5xdWVyeUZvclRhYmxlTmFtZSgncG9pbnQyZCcsIGZ1bmN0aW9uKGVyciwgdGFibGUpIHtcbiAgICAgIHNob3VsZC5ub3QuZXhpc3QoZXJyKTtcbiAgICAgIHNob3VsZC5leGlzdCh0YWJsZSk7XG4gICAgICBUZXN0VXRpbHMuY29tcGFyZVByb3BlcnRpZXModGFibGUsIHtcbiAgICAgICAgdGFibGVfbmFtZTogJ3BvaW50MmQnLFxuICAgICAgICBjb2x1bW5fbmFtZTogJ2dlb20nLFxuICAgICAgICBnZW9tZXRyeV90eXBlX25hbWU6ICdQT0lOVCcsXG4gICAgICAgIHNyc19pZDogMCxcbiAgICAgICAgejogMCxcbiAgICAgICAgbTogMFxuICAgICAgfSk7XG4gICAgICBnY2QuZ2V0UHJvamVjdGlvbih0YWJsZSwgZnVuY3Rpb24oZXJyLCBwcm9qZWN0aW9uKSB7XG4gICAgICAgIHNob3VsZC5ub3QuZXhpc3QoZXJyKTtcbiAgICAgICAgc2hvdWxkLmV4aXN0KHByb2plY3Rpb24pO1xuICAgICAgICBkb25lKCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbn0pO1xuIiwidmFyIEZlYXR1cmVEYW8gPSByZXF1aXJlKCcuLi8uLi8uLi8uLi9saWIvZmVhdHVyZXMvdXNlci9mZWF0dXJlRGFvLmpzJylcbiAgLCBHZW9QYWNrYWdlTWFuYWdlciA9IHJlcXVpcmUoJy4uLy4uLy4uLy4uL2xpYi9nZW9QYWNrYWdlTWFuYWdlci5qcycpXG4gICwgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKVxuICAsIHNob3VsZCA9IHJlcXVpcmUoJ2NoYWknKS5zaG91bGQoKTtcblxuZGVzY3JpYmUoJ0ZlYXR1cmVEYW8gdGVzdHMnLCBmdW5jdGlvbigpIHtcblxuICB2YXIgZ2VvUGFja2FnZTtcbiAgYmVmb3JlRWFjaCgnY3JlYXRlIHRoZSBHZW9QYWNrYWdlIGNvbm5lY3Rpb24nLCBmdW5jdGlvbihkb25lKSB7XG4gICAgdmFyIGZpbGVuYW1lID0gcGF0aC5qb2luKF9fZGlybmFtZSwgJy4uJywgJy4uJywgJy4uJywgJ2ZpeHR1cmVzJywgJ3JpdmVycy5ncGtnJyk7XG4gICAgR2VvUGFja2FnZU1hbmFnZXIub3BlbihmaWxlbmFtZSwgZnVuY3Rpb24oZXJyLCBncCkge1xuICAgICAgZ2VvUGFja2FnZSA9IGdwO1xuICAgICAgZG9uZSgpO1xuICAgIH0pO1xuICB9KTtcblxuICBhZnRlckVhY2goJ2Nsb3NlIHRoZSBnZW9wYWNrYWdlIGNvbm5lY3Rpb24nLCBmdW5jdGlvbigpIHtcbiAgICBnZW9QYWNrYWdlLmNsb3NlKCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcmVhZCB0aGUgZ2VvbWV0cnknLCBmdW5jdGlvbihkb25lKSB7XG4gICAgZ2VvUGFja2FnZS5nZXRGZWF0dXJlRGFvV2l0aFRhYmxlTmFtZSgnRkVBVFVSRVNyaXZlcnNkcycsIGZ1bmN0aW9uKGVyciwgZmVhdHVyZURhbykge1xuICAgICAgZmVhdHVyZURhby5nZXRTcnMoZnVuY3Rpb24oZXJyLCBzcnMpIHtcbiAgICAgICAgZmVhdHVyZURhby5xdWVyeUZvckVhY2goZnVuY3Rpb24oZXJyLCByb3csIHJvd0RvbmUpIHtcbiAgICAgICAgICB2YXIgY3VycmVudFJvdyA9IGZlYXR1cmVEYW8uZ2V0RmVhdHVyZVJvdyhyb3cpO1xuICAgICAgICAgIHZhciBnZW9tZXRyeSA9IGN1cnJlbnRSb3cuZ2V0R2VvbWV0cnkoKTtcbiAgICAgICAgICBzaG91bGQuZXhpc3QoZ2VvbWV0cnkpO1xuICAgICAgICAgIHJvd0RvbmUoKTtcbiAgICAgICAgfSwgZG9uZSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbn0pO1xuIiwidmFyIEZlYXR1cmVUYWJsZVJlYWRlciA9IHJlcXVpcmUoJy4uLy4uLy4uLy4uL2xpYi9mZWF0dXJlcy91c2VyL2ZlYXR1cmVUYWJsZVJlYWRlci5qcycpXG4gICwgR2VvbWV0cnlDb2x1bW5zRGFvID0gcmVxdWlyZSgnLi4vLi4vLi4vLi4vbGliL2ZlYXR1cmVzL2NvbHVtbnMnKS5HZW9tZXRyeUNvbHVtbnNEYW9cbiAgLCBHZW9QYWNrYWdlQ29ubmVjdGlvbiA9IHJlcXVpcmUoJy4uLy4uLy4uLy4uL2xpYi9kYi9nZW9QYWNrYWdlQ29ubmVjdGlvbi5qcycpXG4gICwgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKVxuICAsIHNob3VsZCA9IHJlcXVpcmUoJ2NoYWknKS5zaG91bGQoKTtcblxuZGVzY3JpYmUoJ0ZlYXR1cmVUYWJsZVJlYWRlciB0ZXN0cycsIGZ1bmN0aW9uKCkge1xuICB2YXIgY29ubmVjdGlvbjtcbiAgYmVmb3JlRWFjaCgnY3JlYXRlIHRoZSBHZW9QYWNrYWdlIGNvbm5lY3Rpb24nLCBmdW5jdGlvbihkb25lKSB7XG4gICAgR2VvUGFja2FnZUNvbm5lY3Rpb24uY29ubmVjdChwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4nLCAnLi4nLCAnLi4nLCAnZml4dHVyZXMnLCAnZ2RhbF9zYW1wbGUuZ3BrZycpLCBmdW5jdGlvbihlcnIsIGdlb1BhY2thZ2VDb25uZWN0aW9uKSB7XG4gICAgICBjb25uZWN0aW9uID0gZ2VvUGFja2FnZUNvbm5lY3Rpb247XG4gICAgICBzaG91bGQuZXhpc3QoY29ubmVjdGlvbik7XG4gICAgICBkb25lKCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGFmdGVyRWFjaCgnY2xvc2UgdGhlIGdlb3BhY2thZ2UgY29ubmVjdGlvbicsIGZ1bmN0aW9uKCkge1xuICAgIGNvbm5lY3Rpb24uY2xvc2UoKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCByZWFkIHRoZSB0YWJsZScsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICB2YXIgcmVhZGVyID0gbmV3IEZlYXR1cmVUYWJsZVJlYWRlcigncG9pbnQyZCcpO1xuICAgIHJlYWRlci5yZWFkRmVhdHVyZVRhYmxlKGNvbm5lY3Rpb24sIGZ1bmN0aW9uKGVyciwgdGFibGUpIHtcbiAgICAgIHRhYmxlLnRhYmxlX25hbWUuc2hvdWxkLmJlLmVxdWFsKCdwb2ludDJkJyk7XG4gICAgICB0YWJsZS5jb2x1bW5zLmxlbmd0aC5zaG91bGQuYmUuZXF1YWwoOCk7XG4gICAgICB0YWJsZS5jb2x1bW5zWzBdLm5hbWUuc2hvdWxkLmJlLmVxdWFsKCdmaWQnKTtcbiAgICAgIHRhYmxlLmNvbHVtbnNbMV0ubmFtZS5zaG91bGQuYmUuZXF1YWwoJ2dlb20nKTtcbiAgICAgIHRhYmxlLmNvbHVtbnNbMl0ubmFtZS5zaG91bGQuYmUuZXF1YWwoJ2ludGZpZWxkJyk7XG4gICAgICB0YWJsZS5jb2x1bW5zWzNdLm5hbWUuc2hvdWxkLmJlLmVxdWFsKCdzdHJmaWVsZCcpO1xuICAgICAgdGFibGUuY29sdW1uc1s0XS5uYW1lLnNob3VsZC5iZS5lcXVhbCgncmVhbGZpZWxkJyk7XG4gICAgICB0YWJsZS5jb2x1bW5zWzVdLm5hbWUuc2hvdWxkLmJlLmVxdWFsKCdkYXRldGltZWZpZWxkJyk7XG4gICAgICB0YWJsZS5jb2x1bW5zWzZdLm5hbWUuc2hvdWxkLmJlLmVxdWFsKCdkYXRlZmllbGQnKTtcbiAgICAgIHRhYmxlLmNvbHVtbnNbN10ubmFtZS5zaG91bGQuYmUuZXF1YWwoJ2JpbmFyeWZpZWxkJyk7XG5cbiAgICAgIHRhYmxlLmdldEdlb21ldHJ5Q29sdW1uKCkubmFtZS5zaG91bGQuYmUuZXF1YWwoJ2dlb20nKTtcblxuICAgICAgZG9uZSgpO1xuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHJlYWQgdGhlIHRhYmxlIHdpdGggZ2VvbWV0cnkgY29sdW1ucycsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICBuZXcgR2VvbWV0cnlDb2x1bW5zRGFvKGNvbm5lY3Rpb24pLnF1ZXJ5Rm9yVGFibGVOYW1lKCdwb2ludDJkJywgZnVuY3Rpb24oZXJyLCBnZW9tZXRyeUNvbHVtbnMpIHtcbiAgICAgIHZhciByZWFkZXIgPSBuZXcgRmVhdHVyZVRhYmxlUmVhZGVyKGdlb21ldHJ5Q29sdW1ucyk7XG5cbiAgICAgIHJlYWRlci5yZWFkRmVhdHVyZVRhYmxlKGNvbm5lY3Rpb24sIGZ1bmN0aW9uKGVyciwgdGFibGUpIHtcbiAgICAgICAgdGFibGUudGFibGVfbmFtZS5zaG91bGQuYmUuZXF1YWwoJ3BvaW50MmQnKTtcbiAgICAgICAgdGFibGUuY29sdW1ucy5sZW5ndGguc2hvdWxkLmJlLmVxdWFsKDgpO1xuICAgICAgICB0YWJsZS5jb2x1bW5zWzBdLm5hbWUuc2hvdWxkLmJlLmVxdWFsKCdmaWQnKTtcbiAgICAgICAgdGFibGUuY29sdW1uc1sxXS5uYW1lLnNob3VsZC5iZS5lcXVhbCgnZ2VvbScpO1xuICAgICAgICB0YWJsZS5jb2x1bW5zWzJdLm5hbWUuc2hvdWxkLmJlLmVxdWFsKCdpbnRmaWVsZCcpO1xuICAgICAgICB0YWJsZS5jb2x1bW5zWzNdLm5hbWUuc2hvdWxkLmJlLmVxdWFsKCdzdHJmaWVsZCcpO1xuICAgICAgICB0YWJsZS5jb2x1bW5zWzRdLm5hbWUuc2hvdWxkLmJlLmVxdWFsKCdyZWFsZmllbGQnKTtcbiAgICAgICAgdGFibGUuY29sdW1uc1s1XS5uYW1lLnNob3VsZC5iZS5lcXVhbCgnZGF0ZXRpbWVmaWVsZCcpO1xuICAgICAgICB0YWJsZS5jb2x1bW5zWzZdLm5hbWUuc2hvdWxkLmJlLmVxdWFsKCdkYXRlZmllbGQnKTtcbiAgICAgICAgdGFibGUuY29sdW1uc1s3XS5uYW1lLnNob3VsZC5iZS5lcXVhbCgnYmluYXJ5ZmllbGQnKTtcblxuICAgICAgICB0YWJsZS5nZXRHZW9tZXRyeUNvbHVtbigpLm5hbWUuc2hvdWxkLmJlLmVxdWFsKCdnZW9tJyk7XG5cbiAgICAgICAgZG9uZSgpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG59KTtcbiIsInZhciBHZW9tZXRyeURhdGEgPSByZXF1aXJlKCcuLi8uLi8uLi9saWIvZ2VvbS9nZW9tZXRyeURhdGEuanMnKTtcblxudmFyIHdreCA9IHJlcXVpcmUoJ3dreCcpO1xuXG5kZXNjcmliZSgnR2VvbWV0cnkgRGF0YSB0ZXN0cycsIGZ1bmN0aW9uKCkge1xuXG4gIHZhciBtYWdpYyA9IG5ldyBCdWZmZXIoMik7XG4gIG1hZ2ljLndyaXRlKCdHUCcsIDAsIDIsICdhc2NpaScpO1xuICB2YXIgdmVyc2lvbiA9IG5ldyBCdWZmZXIoMSk7XG4gIHZlcnNpb24ud3JpdGVVSW50OCgwKTtcbiAgdmFyIGZsYWdzID0gbmV3IEJ1ZmZlcigxKTtcbiAgZmxhZ3Mud3JpdGVVSW50OCgwKTtcbiAgdmFyIHNycyA9IG5ldyBCdWZmZXIoNCk7XG4gIHNycy53cml0ZVVJbnQzMkJFKDQzMjYpO1xuXG4gIHZhciByYXdQb2ludCA9IG5ldyB3a3guUG9pbnQoMSwgMik7XG4gIHZhciBwb2ludCA9IHJhd1BvaW50LnRvV2tiKCk7XG5cbiAgaXQoJ3Nob3VsZCBmYWlsIHRoZSBtYWdpYyBudW1iZXIgY2hlY2snLCBmdW5jdGlvbihkb25lKSB7XG4gICAgdmFyIGJ1ZmZlciA9IG5ldyBCdWZmZXIoJ0hJJyk7XG4gICAgKGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIGdlb21ldHJ5RGF0YSA9IG5ldyBHZW9tZXRyeURhdGEoYnVmZmVyKTtcbiAgICB9KS5zaG91bGQudGhyb3coJ1VuZXhwZWN0ZWQgR2VvUGFja2FnZSBHZW9tZXRyeSBtYWdpYyBudW1iZXI6IEhJLCBFeHBlY3RlZDogR1AnKTtcbiAgICBkb25lKCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZmFpbCB0aGUgdmVyc2lvbiBjaGVjaycsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICB2YXIgdmVyc2lvbiA9IG5ldyBCdWZmZXIoMSk7XG4gICAgdmVyc2lvbi53cml0ZVVJbnQ4KDEpO1xuICAgIHZhciBidWZmZXIgPSBCdWZmZXIuY29uY2F0KFttYWdpYywgdmVyc2lvbl0pO1xuICAgIChmdW5jdGlvbigpIHtcbiAgICAgIHZhciBnZW9tZXRyeURhdGEgPSBuZXcgR2VvbWV0cnlEYXRhKGJ1ZmZlcik7XG4gICAgfSkuc2hvdWxkLnRocm93KCdVbmV4cGVjdGVkIEdlb1BhY2thZ2UgR2VvbWV0cnkgdmVyc2lvbiAxLCBFeHBlY3RlZDogMCcpO1xuICAgIGRvbmUoKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCB0aHJvdyB1bmV4cGVjdGVkIGdlb21ldHJ5IGZsYWdzIHdoZXJlIDcgaXMgMSBhbmQgNiBpcyAxJywgZnVuY3Rpb24oZG9uZSkge1xuICAgIHZhciBmbGFncyA9IG5ldyBCdWZmZXIoMSk7XG4gICAgZmxhZ3Mud3JpdGVVSW50OCgyNTUpO1xuICAgIHZhciBidWZmZXIgPSBCdWZmZXIuY29uY2F0KFttYWdpYywgdmVyc2lvbiwgZmxhZ3NdKTtcbiAgICAoZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgZ2VvbWV0cnlEYXRhID0gbmV3IEdlb21ldHJ5RGF0YShidWZmZXIpO1xuICAgIH0pLnNob3VsZC50aHJvdygnVW5leHBlY3RlZCBHZW9QYWNrYWdlIEdlb21ldHJ5IGZsYWdzLiBGbGFnIGJpdCA3IGFuZCA2IHNob3VsZCBib3RoIGJlIDAsIDc9MSwgNj0xJyk7XG4gICAgZG9uZSgpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHRocm93IHVuZXhwZWN0ZWQgZ2VvbWV0cnkgZmxhZ3Mgd2hlcmUgNyBpcyAwIGFuZCA2IGlzIDEnLCBmdW5jdGlvbihkb25lKSB7XG4gICAgdmFyIGZsYWdzID0gbmV3IEJ1ZmZlcigxKTtcbiAgICBmbGFncy53cml0ZVVJbnQ4KDEyNyk7XG4gICAgdmFyIGJ1ZmZlciA9IEJ1ZmZlci5jb25jYXQoW21hZ2ljLCB2ZXJzaW9uLCBmbGFnc10pO1xuICAgIChmdW5jdGlvbigpIHtcbiAgICAgIHZhciBnZW9tZXRyeURhdGEgPSBuZXcgR2VvbWV0cnlEYXRhKGJ1ZmZlcik7XG4gICAgfSkuc2hvdWxkLnRocm93KCdVbmV4cGVjdGVkIEdlb1BhY2thZ2UgR2VvbWV0cnkgZmxhZ3MuIEZsYWcgYml0IDcgYW5kIDYgc2hvdWxkIGJvdGggYmUgMCwgNz0wLCA2PTEnKTtcbiAgICBkb25lKCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdGhyb3cgdW5leHBlY3RlZCBnZW9tZXRyeSBmbGFncyB3aGVyZSA3IGlzIDEgYW5kIDYgaXMgMCcsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICB2YXIgZmxhZ3MgPSBuZXcgQnVmZmVyKDEpO1xuICAgIGZsYWdzLndyaXRlVUludDgoMTI4KTtcbiAgICB2YXIgYnVmZmVyID0gQnVmZmVyLmNvbmNhdChbbWFnaWMsIHZlcnNpb24sIGZsYWdzXSk7XG4gICAgKGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIGdlb21ldHJ5RGF0YSA9IG5ldyBHZW9tZXRyeURhdGEoYnVmZmVyKTtcbiAgICB9KS5zaG91bGQudGhyb3coJ1VuZXhwZWN0ZWQgR2VvUGFja2FnZSBHZW9tZXRyeSBmbGFncy4gRmxhZyBiaXQgNyBhbmQgNiBzaG91bGQgYm90aCBiZSAwLCA3PTEsIDY9MCcpO1xuICAgIGRvbmUoKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBzZXQgZXh0ZW5kZWQgdG8gdHJ1ZScsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICB2YXIgZmxhZ3MgPSBuZXcgQnVmZmVyKDEpO1xuICAgIGZsYWdzLndyaXRlVUludDgoMzIpO1xuXG4gICAgdmFyIGJ1ZmZlciA9IEJ1ZmZlci5jb25jYXQoW21hZ2ljLCB2ZXJzaW9uLCBmbGFncywgc3JzLCBwb2ludF0pO1xuICAgIHZhciBnZW9tZXRyeURhdGEgPSBuZXcgR2VvbWV0cnlEYXRhKGJ1ZmZlcik7XG4gICAgZ2VvbWV0cnlEYXRhLmV4dGVuZGVkLnNob3VsZC5iZS5lcXVhbCh0cnVlKTtcbiAgICBkb25lKCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgc2V0IGJ5dGUgb3JkZXIgdG8gbGl0dGxlIGVuZGlhbicsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICB2YXIgZmxhZ3MgPSBuZXcgQnVmZmVyKDEpO1xuICAgIGZsYWdzLndyaXRlVUludDgoMSk7XG4gICAgdmFyIGJ1ZmZlciA9IEJ1ZmZlci5jb25jYXQoW21hZ2ljLCB2ZXJzaW9uLCBmbGFncywgc3JzLCBwb2ludF0pO1xuICAgIHZhciBnZW9tZXRyeURhdGEgPSBuZXcgR2VvbWV0cnlEYXRhKGJ1ZmZlcik7XG4gICAgZ2VvbWV0cnlEYXRhLmJ5dGVPcmRlci5zaG91bGQuYmUuZXF1YWwoMSk7XG4gICAgZG9uZSgpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHNldCBieXRlIG9yZGVyIHRvIGJpZyBlbmRpYW4nLCBmdW5jdGlvbihkb25lKSB7XG4gICAgdmFyIGZsYWdzID0gbmV3IEJ1ZmZlcigxKTtcbiAgICBmbGFncy53cml0ZVVJbnQ4KDApO1xuICAgIHZhciBidWZmZXIgPSBCdWZmZXIuY29uY2F0KFttYWdpYywgdmVyc2lvbiwgZmxhZ3MsIHNycywgcG9pbnRdKTtcbiAgICB2YXIgZ2VvbWV0cnlEYXRhID0gbmV3IEdlb21ldHJ5RGF0YShidWZmZXIpO1xuICAgIGdlb21ldHJ5RGF0YS5ieXRlT3JkZXIuc2hvdWxkLmJlLmVxdWFsKDApO1xuICAgIGRvbmUoKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBwYXJzZSB0aGUgYmlnIGVuZGlhbiBlbnZlbG9wZScsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICB2YXIgdGZsYWdzID0gbmV3IEJ1ZmZlcigxKTtcbiAgICB0ZmxhZ3Mud3JpdGVVSW50OCgyKTtcbiAgICB2YXIgZW52ZWxvcGUgPSBuZXcgQnVmZmVyKDMyKTtcbiAgICBlbnZlbG9wZS53cml0ZURvdWJsZUJFKE51bWJlcig1LjApLCAwKTtcbiAgICBlbnZlbG9wZS53cml0ZURvdWJsZUJFKE51bWJlcig3OC4wKSwgOCk7XG4gICAgZW52ZWxvcGUud3JpdGVEb3VibGVCRShOdW1iZXIoMjkuMCksIDE2KTtcbiAgICBlbnZlbG9wZS53cml0ZURvdWJsZUJFKE51bWJlcigxMi4wKSwgMjQpO1xuICAgIHZhciBidWZmZXIgPSBCdWZmZXIuY29uY2F0KFttYWdpYywgdmVyc2lvbiwgdGZsYWdzLCBzcnMsIGVudmVsb3BlLCBwb2ludF0pO1xuICAgIHZhciBnZW9tZXRyeURhdGEgPSBuZXcgR2VvbWV0cnlEYXRhKGJ1ZmZlcik7XG4gICAgZ2VvbWV0cnlEYXRhLmJ5dGVPcmRlci5zaG91bGQuYmUuZXF1YWwoMCk7XG4gICAgZ2VvbWV0cnlEYXRhLmVudmVsb3BlLm1pblguc2hvdWxkLmJlLmVxdWFsKDUuMCk7XG4gICAgZ2VvbWV0cnlEYXRhLmVudmVsb3BlLm1heFguc2hvdWxkLmJlLmVxdWFsKDc4LjApO1xuICAgIGdlb21ldHJ5RGF0YS5lbnZlbG9wZS5taW5ZLnNob3VsZC5iZS5lcXVhbCgyOS4wKTtcbiAgICBnZW9tZXRyeURhdGEuZW52ZWxvcGUubWF4WS5zaG91bGQuYmUuZXF1YWwoMTIuMCk7XG4gICAgZ2VvbWV0cnlEYXRhLmVudmVsb3BlLmhhc1ouc2hvdWxkLmJlLmVxdWFsKGZhbHNlKTtcbiAgICBnZW9tZXRyeURhdGEuZW52ZWxvcGUuaGFzTS5zaG91bGQuYmUuZXF1YWwoZmFsc2UpO1xuICAgIGdlb21ldHJ5RGF0YS5nZW9tZXRyeS54LnNob3VsZC5iZS5lcXVhbCgxKTtcbiAgICBnZW9tZXRyeURhdGEuZ2VvbWV0cnkueS5zaG91bGQuYmUuZXF1YWwoMik7XG4gICAgZG9uZSgpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHBhcnNlIHRoZSBiaWcgZW5kaWFuIGVudmVsb3BlIHdpdGggeicsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICB2YXIgdGZsYWdzID0gbmV3IEJ1ZmZlcigxKTtcbiAgICB0ZmxhZ3Mud3JpdGVVSW50OCg0KTtcbiAgICB2YXIgZW52ZWxvcGUgPSBuZXcgQnVmZmVyKDQ4KTtcbiAgICBlbnZlbG9wZS53cml0ZURvdWJsZUJFKE51bWJlcig1LjApLCAwKTtcbiAgICBlbnZlbG9wZS53cml0ZURvdWJsZUJFKE51bWJlcig3OC4wKSwgOCk7XG4gICAgZW52ZWxvcGUud3JpdGVEb3VibGVCRShOdW1iZXIoMjkuMCksIDE2KTtcbiAgICBlbnZlbG9wZS53cml0ZURvdWJsZUJFKE51bWJlcigxMi4wKSwgMjQpO1xuICAgIGVudmVsb3BlLndyaXRlRG91YmxlQkUoTnVtYmVyKDg3LjApLCAzMik7XG4gICAgZW52ZWxvcGUud3JpdGVEb3VibGVCRShOdW1iZXIoOTkuMCksIDQwKTtcbiAgICB2YXIgYnVmZmVyID0gQnVmZmVyLmNvbmNhdChbbWFnaWMsIHZlcnNpb24sIHRmbGFncywgc3JzLCBlbnZlbG9wZSwgcG9pbnRdKTtcbiAgICB2YXIgZ2VvbWV0cnlEYXRhID0gbmV3IEdlb21ldHJ5RGF0YShidWZmZXIpO1xuICAgIGdlb21ldHJ5RGF0YS5ieXRlT3JkZXIuc2hvdWxkLmJlLmVxdWFsKDApO1xuICAgIGdlb21ldHJ5RGF0YS5lbnZlbG9wZS5taW5YLnNob3VsZC5iZS5lcXVhbCg1LjApO1xuICAgIGdlb21ldHJ5RGF0YS5lbnZlbG9wZS5tYXhYLnNob3VsZC5iZS5lcXVhbCg3OC4wKTtcbiAgICBnZW9tZXRyeURhdGEuZW52ZWxvcGUubWluWS5zaG91bGQuYmUuZXF1YWwoMjkuMCk7XG4gICAgZ2VvbWV0cnlEYXRhLmVudmVsb3BlLm1heFkuc2hvdWxkLmJlLmVxdWFsKDEyLjApO1xuICAgIGdlb21ldHJ5RGF0YS5lbnZlbG9wZS5oYXNaLnNob3VsZC5iZS5lcXVhbCh0cnVlKTtcbiAgICBnZW9tZXRyeURhdGEuZW52ZWxvcGUubWluWi5zaG91bGQuYmUuZXF1YWwoODcuMCk7XG4gICAgZ2VvbWV0cnlEYXRhLmVudmVsb3BlLm1heFouc2hvdWxkLmJlLmVxdWFsKDk5LjApO1xuICAgIGdlb21ldHJ5RGF0YS5lbnZlbG9wZS5oYXNNLnNob3VsZC5iZS5lcXVhbChmYWxzZSk7XG4gICAgZ2VvbWV0cnlEYXRhLmdlb21ldHJ5Lnguc2hvdWxkLmJlLmVxdWFsKDEpO1xuICAgIGdlb21ldHJ5RGF0YS5nZW9tZXRyeS55LnNob3VsZC5iZS5lcXVhbCgyKTtcbiAgICBkb25lKCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcGFyc2UgdGhlIGJpZyBlbmRpYW4gZW52ZWxvcGUgd2l0aCBtJywgZnVuY3Rpb24oZG9uZSkge1xuICAgIHZhciB0ZmxhZ3MgPSBuZXcgQnVmZmVyKDEpO1xuICAgIHRmbGFncy53cml0ZVVJbnQ4KDYpO1xuICAgIHZhciBlbnZlbG9wZSA9IG5ldyBCdWZmZXIoNDgpO1xuICAgIGVudmVsb3BlLndyaXRlRG91YmxlQkUoTnVtYmVyKDUuMCksIDApO1xuICAgIGVudmVsb3BlLndyaXRlRG91YmxlQkUoTnVtYmVyKDc4LjApLCA4KTtcbiAgICBlbnZlbG9wZS53cml0ZURvdWJsZUJFKE51bWJlcigyOS4wKSwgMTYpO1xuICAgIGVudmVsb3BlLndyaXRlRG91YmxlQkUoTnVtYmVyKDEyLjApLCAyNCk7XG4gICAgZW52ZWxvcGUud3JpdGVEb3VibGVCRShOdW1iZXIoODcuMCksIDMyKTtcbiAgICBlbnZlbG9wZS53cml0ZURvdWJsZUJFKE51bWJlcig5OS4wKSwgNDApO1xuICAgIHZhciBidWZmZXIgPSBCdWZmZXIuY29uY2F0KFttYWdpYywgdmVyc2lvbiwgdGZsYWdzLCBzcnMsIGVudmVsb3BlLCBwb2ludF0pO1xuICAgIHZhciBnZW9tZXRyeURhdGEgPSBuZXcgR2VvbWV0cnlEYXRhKGJ1ZmZlcik7XG4gICAgZ2VvbWV0cnlEYXRhLmJ5dGVPcmRlci5zaG91bGQuYmUuZXF1YWwoMCk7XG4gICAgZ2VvbWV0cnlEYXRhLmVudmVsb3BlLm1pblguc2hvdWxkLmJlLmVxdWFsKDUuMCk7XG4gICAgZ2VvbWV0cnlEYXRhLmVudmVsb3BlLm1heFguc2hvdWxkLmJlLmVxdWFsKDc4LjApO1xuICAgIGdlb21ldHJ5RGF0YS5lbnZlbG9wZS5taW5ZLnNob3VsZC5iZS5lcXVhbCgyOS4wKTtcbiAgICBnZW9tZXRyeURhdGEuZW52ZWxvcGUubWF4WS5zaG91bGQuYmUuZXF1YWwoMTIuMCk7XG4gICAgZ2VvbWV0cnlEYXRhLmVudmVsb3BlLmhhc1ouc2hvdWxkLmJlLmVxdWFsKGZhbHNlKTtcbiAgICBnZW9tZXRyeURhdGEuZW52ZWxvcGUuaGFzTS5zaG91bGQuYmUuZXF1YWwodHJ1ZSk7XG4gICAgZ2VvbWV0cnlEYXRhLmVudmVsb3BlLm1pbk0uc2hvdWxkLmJlLmVxdWFsKDg3LjApO1xuICAgIGdlb21ldHJ5RGF0YS5lbnZlbG9wZS5tYXhNLnNob3VsZC5iZS5lcXVhbCg5OS4wKTtcbiAgICBnZW9tZXRyeURhdGEuZ2VvbWV0cnkueC5zaG91bGQuYmUuZXF1YWwoMSk7XG4gICAgZ2VvbWV0cnlEYXRhLmdlb21ldHJ5Lnkuc2hvdWxkLmJlLmVxdWFsKDIpO1xuICAgIGRvbmUoKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBwYXJzZSB0aGUgYmlnIGVuZGlhbiBlbnZlbG9wZSB3aXRoIG0gYW5kIHonLCBmdW5jdGlvbihkb25lKSB7XG4gICAgdmFyIHRmbGFncyA9IG5ldyBCdWZmZXIoMSk7XG4gICAgdGZsYWdzLndyaXRlVUludDgoOCk7XG4gICAgdmFyIGVudmVsb3BlID0gbmV3IEJ1ZmZlcig2NCk7XG4gICAgZW52ZWxvcGUud3JpdGVEb3VibGVCRShOdW1iZXIoNS4wKSwgMCk7XG4gICAgZW52ZWxvcGUud3JpdGVEb3VibGVCRShOdW1iZXIoNzguMCksIDgpO1xuICAgIGVudmVsb3BlLndyaXRlRG91YmxlQkUoTnVtYmVyKDI5LjApLCAxNik7XG4gICAgZW52ZWxvcGUud3JpdGVEb3VibGVCRShOdW1iZXIoMTIuMCksIDI0KTtcbiAgICBlbnZlbG9wZS53cml0ZURvdWJsZUJFKE51bWJlcig4Ny4wKSwgMzIpO1xuICAgIGVudmVsb3BlLndyaXRlRG91YmxlQkUoTnVtYmVyKDk5LjApLCA0MCk7XG4gICAgZW52ZWxvcGUud3JpdGVEb3VibGVCRShOdW1iZXIoNDUuMCksIDQ4KTtcbiAgICBlbnZlbG9wZS53cml0ZURvdWJsZUJFKE51bWJlcig1NS4wKSwgNTYpO1xuICAgIHZhciBidWZmZXIgPSBCdWZmZXIuY29uY2F0KFttYWdpYywgdmVyc2lvbiwgdGZsYWdzLCBzcnMsIGVudmVsb3BlLCBwb2ludF0pO1xuICAgIHZhciBnZW9tZXRyeURhdGEgPSBuZXcgR2VvbWV0cnlEYXRhKGJ1ZmZlcik7XG4gICAgZ2VvbWV0cnlEYXRhLmJ5dGVPcmRlci5zaG91bGQuYmUuZXF1YWwoMCk7XG4gICAgZ2VvbWV0cnlEYXRhLmVudmVsb3BlLm1pblguc2hvdWxkLmJlLmVxdWFsKDUuMCk7XG4gICAgZ2VvbWV0cnlEYXRhLmVudmVsb3BlLm1heFguc2hvdWxkLmJlLmVxdWFsKDc4LjApO1xuICAgIGdlb21ldHJ5RGF0YS5lbnZlbG9wZS5taW5ZLnNob3VsZC5iZS5lcXVhbCgyOS4wKTtcbiAgICBnZW9tZXRyeURhdGEuZW52ZWxvcGUubWF4WS5zaG91bGQuYmUuZXF1YWwoMTIuMCk7XG4gICAgZ2VvbWV0cnlEYXRhLmVudmVsb3BlLmhhc1ouc2hvdWxkLmJlLmVxdWFsKHRydWUpO1xuICAgIGdlb21ldHJ5RGF0YS5lbnZlbG9wZS5taW5aLnNob3VsZC5iZS5lcXVhbCg4Ny4wKTtcbiAgICBnZW9tZXRyeURhdGEuZW52ZWxvcGUubWF4Wi5zaG91bGQuYmUuZXF1YWwoOTkuMCk7XG4gICAgZ2VvbWV0cnlEYXRhLmVudmVsb3BlLmhhc00uc2hvdWxkLmJlLmVxdWFsKHRydWUpO1xuICAgIGdlb21ldHJ5RGF0YS5lbnZlbG9wZS5taW5NLnNob3VsZC5iZS5lcXVhbCg0NS4wKTtcbiAgICBnZW9tZXRyeURhdGEuZW52ZWxvcGUubWF4TS5zaG91bGQuYmUuZXF1YWwoNTUuMCk7XG4gICAgZ2VvbWV0cnlEYXRhLmdlb21ldHJ5Lnguc2hvdWxkLmJlLmVxdWFsKDEpO1xuICAgIGdlb21ldHJ5RGF0YS5nZW9tZXRyeS55LnNob3VsZC5iZS5lcXVhbCgyKTtcbiAgICBkb25lKCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcGFyc2UgdGhlIFVpbnQ4QXJyYXknLCBmdW5jdGlvbihkb25lKSB7XG4gICAgdmFyIHRmbGFncyA9IG5ldyBCdWZmZXIoMSk7XG4gICAgdGZsYWdzLndyaXRlVUludDgoOCk7XG4gICAgdmFyIGVudmVsb3BlID0gbmV3IEJ1ZmZlcig2NCk7XG4gICAgZW52ZWxvcGUud3JpdGVEb3VibGVCRShOdW1iZXIoNS4wKSwgMCk7XG4gICAgZW52ZWxvcGUud3JpdGVEb3VibGVCRShOdW1iZXIoNzguMCksIDgpO1xuICAgIGVudmVsb3BlLndyaXRlRG91YmxlQkUoTnVtYmVyKDI5LjApLCAxNik7XG4gICAgZW52ZWxvcGUud3JpdGVEb3VibGVCRShOdW1iZXIoMTIuMCksIDI0KTtcbiAgICBlbnZlbG9wZS53cml0ZURvdWJsZUJFKE51bWJlcig4Ny4wKSwgMzIpO1xuICAgIGVudmVsb3BlLndyaXRlRG91YmxlQkUoTnVtYmVyKDk5LjApLCA0MCk7XG4gICAgZW52ZWxvcGUud3JpdGVEb3VibGVCRShOdW1iZXIoNDUuMCksIDQ4KTtcbiAgICBlbnZlbG9wZS53cml0ZURvdWJsZUJFKE51bWJlcig1NS4wKSwgNTYpO1xuICAgIHZhciBidWZmZXIgPSBCdWZmZXIuY29uY2F0KFttYWdpYywgdmVyc2lvbiwgdGZsYWdzLCBzcnMsIGVudmVsb3BlLCBwb2ludF0pO1xuICAgIHZhciBhcnJheSA9IG5ldyBVaW50OEFycmF5KGJ1ZmZlcik7XG4gICAgdmFyIGdlb21ldHJ5RGF0YSA9IG5ldyBHZW9tZXRyeURhdGEoYXJyYXkpO1xuICAgIGdlb21ldHJ5RGF0YS5ieXRlT3JkZXIuc2hvdWxkLmJlLmVxdWFsKDApO1xuICAgIGdlb21ldHJ5RGF0YS5lbnZlbG9wZS5taW5YLnNob3VsZC5iZS5lcXVhbCg1LjApO1xuICAgIGdlb21ldHJ5RGF0YS5lbnZlbG9wZS5tYXhYLnNob3VsZC5iZS5lcXVhbCg3OC4wKTtcbiAgICBnZW9tZXRyeURhdGEuZW52ZWxvcGUubWluWS5zaG91bGQuYmUuZXF1YWwoMjkuMCk7XG4gICAgZ2VvbWV0cnlEYXRhLmVudmVsb3BlLm1heFkuc2hvdWxkLmJlLmVxdWFsKDEyLjApO1xuICAgIGdlb21ldHJ5RGF0YS5lbnZlbG9wZS5oYXNaLnNob3VsZC5iZS5lcXVhbCh0cnVlKTtcbiAgICBnZW9tZXRyeURhdGEuZW52ZWxvcGUubWluWi5zaG91bGQuYmUuZXF1YWwoODcuMCk7XG4gICAgZ2VvbWV0cnlEYXRhLmVudmVsb3BlLm1heFouc2hvdWxkLmJlLmVxdWFsKDk5LjApO1xuICAgIGdlb21ldHJ5RGF0YS5lbnZlbG9wZS5oYXNNLnNob3VsZC5iZS5lcXVhbCh0cnVlKTtcbiAgICBnZW9tZXRyeURhdGEuZW52ZWxvcGUubWluTS5zaG91bGQuYmUuZXF1YWwoNDUuMCk7XG4gICAgZ2VvbWV0cnlEYXRhLmVudmVsb3BlLm1heE0uc2hvdWxkLmJlLmVxdWFsKDU1LjApO1xuICAgIGdlb21ldHJ5RGF0YS5nZW9tZXRyeS54LnNob3VsZC5iZS5lcXVhbCgxKTtcbiAgICBnZW9tZXRyeURhdGEuZ2VvbWV0cnkueS5zaG91bGQuYmUuZXF1YWwoMik7XG4gICAgZG9uZSgpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHRocm93IHVuZXhwZWN0ZWQgZ2VvbWV0cnkgZmxhZ3MgZXJyb3InLCBmdW5jdGlvbihkb25lKSB7XG4gICAgdmFyIHRmbGFncyA9IG5ldyBCdWZmZXIoMSk7XG4gICAgdGZsYWdzLndyaXRlVUludDgoMTIpO1xuICAgIHZhciBidWZmZXIgPSBCdWZmZXIuY29uY2F0KFttYWdpYywgdmVyc2lvbiwgdGZsYWdzLCBzcnNdKTtcbiAgICAoZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgZ2VvbWV0cnlEYXRhID0gbmV3IEdlb21ldHJ5RGF0YShidWZmZXIpO1xuICAgIH0pLnNob3VsZC50aHJvdygnVW5leHBlY3RlZCBHZW9QYWNrYWdlIEdlb21ldHJ5IGZsYWdzLiBFbnZlbG9wZSBjb250ZW50cyBpbmRpY2F0b3IgbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDQuIEFjdHVhbDogNicpO1xuICAgIGRvbmUoKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBnZXQgdGhlIHBvaW50IG91dCcsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICB2YXIgYnVmZmVyID0gQnVmZmVyLmNvbmNhdChbbWFnaWMsIHZlcnNpb24sIGZsYWdzLCBzcnMsIHBvaW50XSk7XG4gICAgdmFyIGdlb21ldHJ5RGF0YSA9IG5ldyBHZW9tZXRyeURhdGEoYnVmZmVyKTtcbiAgICBnZW9tZXRyeURhdGEuYnl0ZU9yZGVyLnNob3VsZC5iZS5lcXVhbCgwKTtcbiAgICBkb25lKCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgY3JlYXRlIGEgcG9pbnQgZ2VvbWV0cnkgZGF0YSB3aXRoIGFuIGVudmVsb3BlJywgZnVuY3Rpb24oZG9uZSkge1xuICAgIHZhciBnZW9tZXRyeURhdGEgPSBuZXcgR2VvbWV0cnlEYXRhKCk7XG4gICAgZ2VvbWV0cnlEYXRhLmVtcHR5LnNob3VsZC5iZS5lcXVhbCh0cnVlKTtcbiAgICBnZW9tZXRyeURhdGEuc2V0U3JzSWQoNDMyNik7XG4gICAgZ2VvbWV0cnlEYXRhLnNldEdlb21ldHJ5KHJhd1BvaW50KTtcbiAgICBnZW9tZXRyeURhdGEuZW1wdHkuc2hvdWxkLmJlLmVxdWFsKGZhbHNlKTtcbiAgICBnZW9tZXRyeURhdGEuc2V0RW52ZWxvcGUoe1xuICAgICAgbWluWDogNS4wLFxuICAgICAgbWF4WDogNzguMCxcbiAgICAgIG1pblk6IDEyLjAsXG4gICAgICBtYXhZOiAyOS4wLFxuICAgICAgaGFzWjogdHJ1ZSxcbiAgICAgIG1pblo6IDg3LjAsXG4gICAgICBtYXhaOiA5OS4wLFxuICAgICAgaGFzTTogdHJ1ZSxcbiAgICAgIG1pbk06IDQ1LjAsXG4gICAgICBtYXhNOiA1NS4wXG4gICAgfSk7XG4gICAgdmFyIGJ1ZmZlciA9IGdlb21ldHJ5RGF0YS50b0RhdGEoKTtcbiAgICB2YXIgZ2VvbWV0cnlEYXRhMiA9IG5ldyBHZW9tZXRyeURhdGEoYnVmZmVyKTtcbiAgICBnZW9tZXRyeURhdGEyLmJ5dGVPcmRlci5zaG91bGQuYmUuZXF1YWwoMCk7XG4gICAgZ2VvbWV0cnlEYXRhMi5lbnZlbG9wZS5taW5YLnNob3VsZC5iZS5lcXVhbCg1LjApO1xuICAgIGdlb21ldHJ5RGF0YTIuZW52ZWxvcGUubWF4WC5zaG91bGQuYmUuZXF1YWwoNzguMCk7XG4gICAgZ2VvbWV0cnlEYXRhMi5lbnZlbG9wZS5taW5ZLnNob3VsZC5iZS5lcXVhbCgxMi4wKTtcbiAgICBnZW9tZXRyeURhdGEyLmVudmVsb3BlLm1heFkuc2hvdWxkLmJlLmVxdWFsKDI5LjApO1xuICAgIGdlb21ldHJ5RGF0YTIuZW52ZWxvcGUuaGFzWi5zaG91bGQuYmUuZXF1YWwodHJ1ZSk7XG4gICAgZ2VvbWV0cnlEYXRhMi5lbnZlbG9wZS5taW5aLnNob3VsZC5iZS5lcXVhbCg4Ny4wKTtcbiAgICBnZW9tZXRyeURhdGEyLmVudmVsb3BlLm1heFouc2hvdWxkLmJlLmVxdWFsKDk5LjApO1xuICAgIGdlb21ldHJ5RGF0YTIuZW52ZWxvcGUuaGFzTS5zaG91bGQuYmUuZXF1YWwodHJ1ZSk7XG4gICAgZ2VvbWV0cnlEYXRhMi5lbnZlbG9wZS5taW5NLnNob3VsZC5iZS5lcXVhbCg0NS4wKTtcbiAgICBnZW9tZXRyeURhdGEyLmVudmVsb3BlLm1heE0uc2hvdWxkLmJlLmVxdWFsKDU1LjApO1xuICAgIGdlb21ldHJ5RGF0YTIuZ2VvbWV0cnkueC5zaG91bGQuYmUuZXF1YWwoMSk7XG4gICAgZ2VvbWV0cnlEYXRhMi5nZW9tZXRyeS55LnNob3VsZC5iZS5lcXVhbCgyKTtcbiAgICBkb25lKCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgY3JlYXRlIGEgcG9pbnQgZ2VvbWV0cnkgZGF0YSB3aXRob3V0IGFuIGVudmVsb3BlJywgZnVuY3Rpb24oZG9uZSkge1xuICAgIHZhciBnZW9tZXRyeURhdGEgPSBuZXcgR2VvbWV0cnlEYXRhKCk7XG4gICAgZ2VvbWV0cnlEYXRhLnNldFNyc0lkKDQzMjYpO1xuICAgIGdlb21ldHJ5RGF0YS5zZXRHZW9tZXRyeShyYXdQb2ludCk7XG4gICAgdmFyIGJ1ZmZlciA9IGdlb21ldHJ5RGF0YS50b0RhdGEoKTtcbiAgICB2YXIgZ2VvbWV0cnlEYXRhMiA9IG5ldyBHZW9tZXRyeURhdGEoYnVmZmVyKTtcbiAgICBnZW9tZXRyeURhdGEyLmJ5dGVPcmRlci5zaG91bGQuYmUuZXF1YWwoMCk7XG4gICAgZ2VvbWV0cnlEYXRhMi5nZW9tZXRyeS54LnNob3VsZC5iZS5lcXVhbCgxKTtcbiAgICBnZW9tZXRyeURhdGEyLmdlb21ldHJ5Lnkuc2hvdWxkLmJlLmVxdWFsKDIpO1xuICAgIGRvbmUoKTtcbiAgfSk7XG5cbn0pO1xuIiwidmFyIEdlb1BhY2thZ2UgPSByZXF1aXJlKCcuLi8uLi8uLi9saWIvZ2VvUGFja2FnZScpXG4gICwgR2VvUGFja2FnZUNvbm5lY3Rpb24gPSByZXF1aXJlKCcuLi8uLi8uLi9saWIvZGIvZ2VvUGFja2FnZUNvbm5lY3Rpb24nKVxuICAsIEdlb1BhY2thZ2VUaWxlUmV0cmlldmVyID0gcmVxdWlyZSgnLi4vLi4vLi4vbGliL3RpbGVzL3JldHJpZXZlcicpO1xuXG52YXIgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKVxuICAsIHNob3VsZCA9IHJlcXVpcmUoJ2NoYWknKS5zaG91bGQoKTtcbi8vICwgcHJvajQgPSByZXF1aXJlKCdwcm9qNCcpO1xuXG5kZXNjcmliZSgnVGVzdHMgZm9yIGlzc3VlIDY4JywgZnVuY3Rpb24oKSB7XG5cbiAgaXQoJ3Nob3VsZCBnZXQgYSB0aWxlJywgZnVuY3Rpb24oZG9uZSkge1xuXG4gICAgLy8gdGhpcy50aW1lb3V0KDUwMDApO1xuICAgIEdlb1BhY2thZ2VDb25uZWN0aW9uLmNvbm5lY3QocGF0aC5qb2luKF9fZGlybmFtZSwgJy4uJywgJy4uJywgJ2ZpeHR1cmVzJywgJ2lzc3VlXzY4Lmdwa2cnKSwgZnVuY3Rpb24oZXJyLCBjb25uZWN0aW9uKSB7XG4gICAgICB2YXIgZ2VvUGFja2FnZSA9IG5ldyBHZW9QYWNrYWdlKCcnLCAnJywgY29ubmVjdGlvbik7XG4gICAgICAgZ2VvUGFja2FnZS5nZXRUaWxlVGFibGVzKGZ1bmN0aW9uKGVyciwgdGFibGVzKSB7XG4gICAgICAgIHRhYmxlc1swXS5zaG91bGQuYmUuZXF1YWwoJ3BhY2thZ2VfdGlsZXMnKTtcbiAgICAgICAgZ2VvUGFja2FnZS5nZXRUaWxlRGFvV2l0aFRhYmxlTmFtZSgncGFja2FnZV90aWxlcycsIGZ1bmN0aW9uKGVyciwgdGlsZURhbykge1xuICAgICAgICAgIGlmIChlcnIpIHJldHVybiBkb25lKGVycik7XG4gICAgICAgICAgc2hvdWxkLmV4aXN0KHRpbGVEYW8pO1xuICAgICAgICAgIGdlb1BhY2thZ2UuZ2V0SW5mb0ZvclRhYmxlKHRpbGVEYW8sIGZ1bmN0aW9uKGVyciwgaW5mbykge1xuICAgICAgICAgICAgaWYgKGVycikgcmV0dXJuIGRvbmUoZXJyKTtcbiAgICAgICAgICAgIHNob3VsZC5leGlzdChpbmZvKTtcbiAgICAgICAgICAgIGRvbmUoKTtcbiAgICAgICAgICAgIC8vIHZhciBncHIgPSBuZXcgR2VvUGFja2FnZVRpbGVSZXRyaWV2ZXIodGlsZURhbywgMjU2LCAyNTYpO1xuICAgICAgICAgICAgLy8gZ3ByLmdldFRpbGUoMTkyLDQwMSwxMCxmdW5jdGlvbihlcnIsIHRpbGUpIHtcbiAgICAvLyAgICAgICAgICAgaWYgKGVycikgcmV0dXJuIGRvbmUoZXJyKTtcbiAgICAvLyAgICAgICAgICAgc2hvdWxkLmV4aXN0KHRpbGUpO1xuICAgIC8vICAgICAgICAgICBkZWxldGUgdGlsZTtcbiAgICAvLyAgICAgICAgICAgZ2VvUGFja2FnZS5jbG9zZSgpO1xuICAgICAgICAgICAgICAvLyBkb25lKCk7XG4gICAgICAgICAgICAvLyB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbn0pO1xuIiwidmFyIGZzID0gcmVxdWlyZSgnZnMnKVxuICAsIHNob3VsZCA9IHJlcXVpcmUoJ2NoYWknKS5zaG91bGQoKVxuICAsIHBhdGggPSByZXF1aXJlKCdwYXRoJylcbiAgLCBhc3luYyA9IHJlcXVpcmUoJ2FzeW5jJylcbiAgLCBNZXRhZGF0YVJlZmVyZW5jZSA9IHJlcXVpcmUoJy4uLy4uLy4uLy4uL2xpYi9tZXRhZGF0YS9yZWZlcmVuY2UnKS5NZXRhZGF0YVJlZmVyZW5jZVxuICAsIE1ldGFkYXRhID0gcmVxdWlyZSgnLi4vLi4vLi4vLi4vbGliL21ldGFkYXRhJykuTWV0YWRhdGFcbiAgLCBHZW9QYWNrYWdlID0gcmVxdWlyZSgnLi4vLi4vLi4vLi4vbGliL2dlb1BhY2thZ2UnKVxuICAsIFRhYmxlQ3JlYXRvciA9IHJlcXVpcmUoJy4uLy4uLy4uLy4uL2xpYi9kYi90YWJsZUNyZWF0b3InKVxuICAsIFZlcmlmaWNhdGlvbiA9IHJlcXVpcmUoJy4uLy4uLy4uL2ZpeHR1cmVzL3ZlcmlmaWNhdGlvbicpXG4gICwgdGVzdFNldHVwID0gcmVxdWlyZSgnLi4vLi4vLi4vZml4dHVyZXMvdGVzdFNldHVwJyk7XG5cbmRlc2NyaWJlKCdNZXRhZGF0YSBSZWZlcmVuY2UgdGVzdHMnLCBmdW5jdGlvbigpIHtcbiAgdmFyIHRlc3RHZW9QYWNrYWdlID0gcGF0aC5qb2luKF9fZGlybmFtZSwgJy4uJywgJ3RtcCcsICd0ZXN0Lmdwa2cnKTtcbiAgdmFyIGdlb3BhY2thZ2U7XG5cbiAgYmVmb3JlRWFjaChmdW5jdGlvbihkb25lKSB7XG4gICAgdGVzdFNldHVwLmRlbGV0ZUdlb1BhY2thZ2UodGVzdEdlb1BhY2thZ2UsIGZ1bmN0aW9uKCkge1xuICAgICAgdGVzdFNldHVwLmNyZWF0ZUdlb1BhY2thZ2UodGVzdEdlb1BhY2thZ2UsIGZ1bmN0aW9uKGVyciwgZ3ApIHtcbiAgICAgICAgZ2VvcGFja2FnZSA9IGdwO1xuICAgICAgICBkb25lKCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgYWZ0ZXJFYWNoKGZ1bmN0aW9uKGRvbmUpIHtcbiAgICBnZW9wYWNrYWdlLmNsb3NlKCk7XG4gICAgdGVzdFNldHVwLmRlbGV0ZUdlb1BhY2thZ2UodGVzdEdlb1BhY2thZ2UsIGRvbmUpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGNyZWF0ZSBtZXRhZGF0YSBhbmQgcmVmZXJlbmNlJywgZnVuY3Rpb24oZG9uZSkge1xuXG4gICAgZ2VvcGFja2FnZS5jcmVhdGVNZXRhZGF0YVRhYmxlKGZ1bmN0aW9uKGVyciwgcmVzdWx0KSB7XG4gICAgICBnZW9wYWNrYWdlLmNyZWF0ZU1ldGFkYXRhUmVmZXJlbmNlVGFibGUoZnVuY3Rpb24oZXJyLCByZXN1bHQpIHtcbiAgICAgICAgVmVyaWZpY2F0aW9uLnZlcmlmeU1ldGFkYXRhUmVmZXJlbmNlKGdlb3BhY2thZ2UsIGZ1bmN0aW9uKGVyciwgcmVzdWx0KSB7XG4gICAgICAgICAgc2hvdWxkLm5vdC5leGlzdChlcnIpO1xuICAgICAgICAgIFZlcmlmaWNhdGlvbi52ZXJpZnlNZXRhZGF0YShnZW9wYWNrYWdlLCBmdW5jdGlvbihlcnIsIHJlc3VsdCkge1xuICAgICAgICAgICAgc2hvdWxkLm5vdC5leGlzdChlcnIpO1xuXG4gICAgICAgICAgICB2YXIgbWV0YWRhdGFEYW8gPSBnZW9wYWNrYWdlLmdldE1ldGFkYXRhRGFvKCk7XG4gICAgICAgICAgICB2YXIgbWV0YWRhdGFSZWZlcmVuY2VEYW8gPSBnZW9wYWNrYWdlLmdldE1ldGFkYXRhUmVmZXJlbmNlRGFvKCk7XG5cbiAgICAgICAgICAgIHZhciBtZXRhZGF0YTEgPSBuZXcgTWV0YWRhdGEoKTtcbiAgICAgICAgICAgIG1ldGFkYXRhMS5pZCA9IDE7XG4gICAgICAgICAgICBtZXRhZGF0YTEubWRfc2NvcGUgPSBNZXRhZGF0YS5EQVRBU0VUO1xuICAgICAgICAgICAgbWV0YWRhdGExLm1kX3N0YW5kYXJkX3VyaSA9IFwiVEVTVF9VUklfMVwiO1xuICAgICAgICAgICAgbWV0YWRhdGExLm1pbWVfdHlwZSA9ICd0ZXh0L3htbCc7XG4gICAgICAgICAgICBtZXRhZGF0YTEubWV0YWRhdGEgPSAnVEVTVCBNRVREQVRBIDEnO1xuXG4gICAgICAgICAgICB2YXIgbWV0YWRhdGEyID0gbmV3IE1ldGFkYXRhKCk7XG4gICAgICAgICAgICBtZXRhZGF0YTIuaWQgPSAyO1xuICAgICAgICAgICAgbWV0YWRhdGEyLm1kX3Njb3BlID0gTWV0YWRhdGEuRkVBVFVSRV9UWVBFO1xuICAgICAgICAgICAgbWV0YWRhdGEyLm1kX3N0YW5kYXJkX3VyaSA9IFwiVEVTVF9VUklfMlwiO1xuICAgICAgICAgICAgbWV0YWRhdGEyLm1pbWVfdHlwZSA9ICd0ZXh0L3htbCc7XG4gICAgICAgICAgICBtZXRhZGF0YTIubWV0YWRhdGEgPSAnVEVTVCBNRVREQVRBIDInO1xuXG4gICAgICAgICAgICB2YXIgbWV0YWRhdGEzID0gbmV3IE1ldGFkYXRhKCk7XG4gICAgICAgICAgICBtZXRhZGF0YTMuaWQgPSAzO1xuICAgICAgICAgICAgbWV0YWRhdGEzLm1kX3Njb3BlID0gTWV0YWRhdGEuVElMRTtcbiAgICAgICAgICAgIG1ldGFkYXRhMy5tZF9zdGFuZGFyZF91cmkgPSBcIlRFU1RfVVJJXzNcIjtcbiAgICAgICAgICAgIG1ldGFkYXRhMy5taW1lX3R5cGUgPSAndGV4dC94bWwnO1xuICAgICAgICAgICAgbWV0YWRhdGEzLm1ldGFkYXRhID0gJ1RFU1QgTUVUREFUQSAzJztcblxuICAgICAgICAgICAgYXN5bmMuZWFjaFNlcmllcyhbbWV0YWRhdGExLCBtZXRhZGF0YTIsIG1ldGFkYXRhM10sIGZ1bmN0aW9uKG1ldGFkYXRhLCBkb25lKSB7XG4gICAgICAgICAgICAgIG1ldGFkYXRhRGFvLmNyZWF0ZShtZXRhZGF0YSwgZnVuY3Rpb24oZXJyLCByZXN1bHQpIHtcbiAgICAgICAgICAgICAgICBzaG91bGQubm90LmV4aXN0KGVycik7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnNob3VsZC5iZS5lcXVhbChtZXRhZGF0YS5pZCk7XG4gICAgICAgICAgICAgICAgZG9uZSgpO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGVycikge1xuICAgICAgICAgICAgICB2YXIgcmVmMSA9IG5ldyBNZXRhZGF0YVJlZmVyZW5jZSgpO1xuICAgICAgICAgICAgICByZWYxLnNldFJlZmVyZW5jZVNjb3BlVHlwZShNZXRhZGF0YVJlZmVyZW5jZS5HRU9QQUNLQUdFKTtcbiAgICAgICAgICAgICAgcmVmMS50aW1lc3RhbXAgPSBuZXcgRGF0ZSgpO1xuICAgICAgICAgICAgICByZWYxLnNldE1ldGFkYXRhKG1ldGFkYXRhMSk7XG5cbiAgICAgICAgICAgICAgdmFyIHJlZjIgPSBuZXcgTWV0YWRhdGFSZWZlcmVuY2UoKTtcbiAgICAgICAgICAgICAgcmVmMi5zZXRSZWZlcmVuY2VTY29wZVR5cGUoTWV0YWRhdGFSZWZlcmVuY2UuVEFCTEUpO1xuICAgICAgICAgICAgICByZWYyLnRhYmxlX25hbWUgPSAnVEVTVF9UQUJMRV9OQU1FXzInO1xuICAgICAgICAgICAgICByZWYyLnRpbWVzdGFtcCA9IG5ldyBEYXRlKCk7XG4gICAgICAgICAgICAgIHJlZjIuc2V0TWV0YWRhdGEobWV0YWRhdGEyKTtcbiAgICAgICAgICAgICAgcmVmMi5zZXRQYXJlbnRNZXRhZGF0YShtZXRhZGF0YTEpO1xuXG4gICAgICAgICAgICAgIGFzeW5jLmVhY2hTZXJpZXMoW3JlZjEsIHJlZjJdLCBmdW5jdGlvbihyZWYsIGRvbmUpIHtcbiAgICAgICAgICAgICAgICBtZXRhZGF0YVJlZmVyZW5jZURhby5jcmVhdGUocmVmLCBmdW5jdGlvbihlcnIsIHJlc3VsdCkge1xuICAgICAgICAgICAgICAgICAgc2hvdWxkLm5vdC5leGlzdChlcnIpO1xuICAgICAgICAgICAgICAgICAgZG9uZSgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9LCBkb25lKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGNyZWF0ZSBtZXRhZGF0YSBhbmQgcmVmZXJlbmNlIHdpdGggYSBwYXJlbnQgYW5kIHRoZW4gcmVtb3ZlIGl0JywgZnVuY3Rpb24oZG9uZSkge1xuXG4gICAgZ2VvcGFja2FnZS5jcmVhdGVNZXRhZGF0YVRhYmxlKGZ1bmN0aW9uKGVyciwgcmVzdWx0KSB7XG4gICAgICBnZW9wYWNrYWdlLmNyZWF0ZU1ldGFkYXRhUmVmZXJlbmNlVGFibGUoZnVuY3Rpb24oZXJyLCByZXN1bHQpIHtcbiAgICAgICAgVmVyaWZpY2F0aW9uLnZlcmlmeU1ldGFkYXRhUmVmZXJlbmNlKGdlb3BhY2thZ2UsIGZ1bmN0aW9uKGVyciwgcmVzdWx0KSB7XG4gICAgICAgICAgc2hvdWxkLm5vdC5leGlzdChlcnIpO1xuICAgICAgICAgIFZlcmlmaWNhdGlvbi52ZXJpZnlNZXRhZGF0YShnZW9wYWNrYWdlLCBmdW5jdGlvbihlcnIsIHJlc3VsdCkge1xuICAgICAgICAgICAgc2hvdWxkLm5vdC5leGlzdChlcnIpO1xuXG4gICAgICAgICAgICB2YXIgbWV0YWRhdGFEYW8gPSBnZW9wYWNrYWdlLmdldE1ldGFkYXRhRGFvKCk7XG4gICAgICAgICAgICB2YXIgbWV0YWRhdGFSZWZlcmVuY2VEYW8gPSBnZW9wYWNrYWdlLmdldE1ldGFkYXRhUmVmZXJlbmNlRGFvKCk7XG5cbiAgICAgICAgICAgIHZhciBtZXRhZGF0YTEgPSBuZXcgTWV0YWRhdGEoKTtcbiAgICAgICAgICAgIG1ldGFkYXRhMS5pZCA9IDE7XG4gICAgICAgICAgICBtZXRhZGF0YTEubWRfc2NvcGUgPSBNZXRhZGF0YS5EQVRBU0VUO1xuICAgICAgICAgICAgbWV0YWRhdGExLm1kX3N0YW5kYXJkX3VyaSA9IFwiVEVTVF9VUklfMVwiO1xuICAgICAgICAgICAgbWV0YWRhdGExLm1pbWVfdHlwZSA9ICd0ZXh0L3htbCc7XG4gICAgICAgICAgICBtZXRhZGF0YTEubWV0YWRhdGEgPSAnVEVTVCBNRVREQVRBIDEnO1xuXG4gICAgICAgICAgICB2YXIgbWV0YWRhdGEyID0gbmV3IE1ldGFkYXRhKCk7XG4gICAgICAgICAgICBtZXRhZGF0YTIuaWQgPSAyO1xuICAgICAgICAgICAgbWV0YWRhdGEyLm1kX3Njb3BlID0gTWV0YWRhdGEuRkVBVFVSRV9UWVBFO1xuICAgICAgICAgICAgbWV0YWRhdGEyLm1kX3N0YW5kYXJkX3VyaSA9IFwiVEVTVF9VUklfMlwiO1xuICAgICAgICAgICAgbWV0YWRhdGEyLm1pbWVfdHlwZSA9ICd0ZXh0L3htbCc7XG4gICAgICAgICAgICBtZXRhZGF0YTIubWV0YWRhdGEgPSAnVEVTVCBNRVREQVRBIDInO1xuXG4gICAgICAgICAgICBhc3luYy5lYWNoU2VyaWVzKFttZXRhZGF0YTEsIG1ldGFkYXRhMl0sIGZ1bmN0aW9uKG1ldGFkYXRhLCBkb25lKSB7XG4gICAgICAgICAgICAgIG1ldGFkYXRhRGFvLmNyZWF0ZShtZXRhZGF0YSwgZnVuY3Rpb24oZXJyLCByZXN1bHQpIHtcbiAgICAgICAgICAgICAgICBzaG91bGQubm90LmV4aXN0KGVycik7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnNob3VsZC5iZS5lcXVhbChtZXRhZGF0YS5pZCk7XG4gICAgICAgICAgICAgICAgZG9uZSgpO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sIGZ1bmN0aW9uKGVycikge1xuICAgICAgICAgICAgICB2YXIgcmVmID0gbmV3IE1ldGFkYXRhUmVmZXJlbmNlKCk7XG4gICAgICAgICAgICAgIHJlZi5zZXRSZWZlcmVuY2VTY29wZVR5cGUoTWV0YWRhdGFSZWZlcmVuY2UuVEFCTEUpO1xuICAgICAgICAgICAgICByZWYudGFibGVfbmFtZSA9ICdURVNUX1RBQkxFX05BTUVfMic7XG4gICAgICAgICAgICAgIHJlZi50aW1lc3RhbXAgPSBuZXcgRGF0ZSgpO1xuICAgICAgICAgICAgICByZWYuc2V0TWV0YWRhdGEobWV0YWRhdGEyKTtcbiAgICAgICAgICAgICAgcmVmLnNldFBhcmVudE1ldGFkYXRhKG1ldGFkYXRhMSk7XG5cbiAgICAgICAgICAgICAgbWV0YWRhdGFSZWZlcmVuY2VEYW8uY3JlYXRlKHJlZiwgZnVuY3Rpb24oZXJyLCByZXN1bHQpIHtcbiAgICAgICAgICAgICAgICBzaG91bGQubm90LmV4aXN0KGVycik7XG4gICAgICAgICAgICAgICAgdmFyIGNvdW50ID0gMDtcbiAgICAgICAgICAgICAgICBtZXRhZGF0YVJlZmVyZW5jZURhby5xdWVyeUJ5TWV0YWRhdGFQYXJlbnQobWV0YWRhdGExLmlkLCBmdW5jdGlvbihlcnIsIHJvdywgcm93RG9uZSkge1xuICAgICAgICAgICAgICAgICAgY291bnQrKztcbiAgICAgICAgICAgICAgICAgIHJvd0RvbmUoKTtcbiAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbihlcnIpIHtcbiAgICAgICAgICAgICAgICAgIGNvdW50LnNob3VsZC5iZS5lcXVhbCgxKTtcbiAgICAgICAgICAgICAgICAgIG1ldGFkYXRhUmVmZXJlbmNlRGFvLnJlbW92ZU1ldGFkYXRhUGFyZW50KG1ldGFkYXRhMS5pZCwgZnVuY3Rpb24oZXJyLCByZXN1bHQpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGNvdW50ID0gMDtcbiAgICAgICAgICAgICAgICAgICAgbWV0YWRhdGFSZWZlcmVuY2VEYW8ucXVlcnlCeU1ldGFkYXRhUGFyZW50KG1ldGFkYXRhMS5pZCwgZnVuY3Rpb24oZXJyLCByb3csIHJvd0RvbmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICBjb3VudCsrO1xuICAgICAgICAgICAgICAgICAgICAgIHJvd0RvbmUoKTtcbiAgICAgICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgICAgY291bnQuc2hvdWxkLmJlLmVxdWFsKDApO1xuICAgICAgICAgICAgICAgICAgICAgIGRvbmUoKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBxdWVyeSBmb3IgbWV0YWRhdGFyZWZlcmVuY2UgYnkgbWV0YWRhdGEgYW5kIHBhcmVudCcsIGZ1bmN0aW9uKGRvbmUpIHtcblxuICAgIGdlb3BhY2thZ2UuY3JlYXRlTWV0YWRhdGFUYWJsZShmdW5jdGlvbihlcnIsIHJlc3VsdCkge1xuICAgICAgZ2VvcGFja2FnZS5jcmVhdGVNZXRhZGF0YVJlZmVyZW5jZVRhYmxlKGZ1bmN0aW9uKGVyciwgcmVzdWx0KSB7XG4gICAgICAgIFZlcmlmaWNhdGlvbi52ZXJpZnlNZXRhZGF0YVJlZmVyZW5jZShnZW9wYWNrYWdlLCBmdW5jdGlvbihlcnIsIHJlc3VsdCkge1xuICAgICAgICAgIHNob3VsZC5ub3QuZXhpc3QoZXJyKTtcbiAgICAgICAgICBWZXJpZmljYXRpb24udmVyaWZ5TWV0YWRhdGEoZ2VvcGFja2FnZSwgZnVuY3Rpb24oZXJyLCByZXN1bHQpIHtcbiAgICAgICAgICAgIHNob3VsZC5ub3QuZXhpc3QoZXJyKTtcblxuICAgICAgICAgICAgdmFyIG1ldGFkYXRhRGFvID0gZ2VvcGFja2FnZS5nZXRNZXRhZGF0YURhbygpO1xuICAgICAgICAgICAgdmFyIG1ldGFkYXRhUmVmZXJlbmNlRGFvID0gZ2VvcGFja2FnZS5nZXRNZXRhZGF0YVJlZmVyZW5jZURhbygpO1xuXG4gICAgICAgICAgICB2YXIgbWV0YWRhdGExID0gbmV3IE1ldGFkYXRhKCk7XG4gICAgICAgICAgICBtZXRhZGF0YTEuaWQgPSAxO1xuICAgICAgICAgICAgbWV0YWRhdGExLm1kX3Njb3BlID0gTWV0YWRhdGEuREFUQVNFVDtcbiAgICAgICAgICAgIG1ldGFkYXRhMS5tZF9zdGFuZGFyZF91cmkgPSBcIlRFU1RfVVJJXzFcIjtcbiAgICAgICAgICAgIG1ldGFkYXRhMS5taW1lX3R5cGUgPSAndGV4dC94bWwnO1xuICAgICAgICAgICAgbWV0YWRhdGExLm1ldGFkYXRhID0gJ1RFU1QgTUVUREFUQSAxJztcblxuICAgICAgICAgICAgdmFyIG1ldGFkYXRhMiA9IG5ldyBNZXRhZGF0YSgpO1xuICAgICAgICAgICAgbWV0YWRhdGEyLmlkID0gMjtcbiAgICAgICAgICAgIG1ldGFkYXRhMi5tZF9zY29wZSA9IE1ldGFkYXRhLkZFQVRVUkVfVFlQRTtcbiAgICAgICAgICAgIG1ldGFkYXRhMi5tZF9zdGFuZGFyZF91cmkgPSBcIlRFU1RfVVJJXzJcIjtcbiAgICAgICAgICAgIG1ldGFkYXRhMi5taW1lX3R5cGUgPSAndGV4dC94bWwnO1xuICAgICAgICAgICAgbWV0YWRhdGEyLm1ldGFkYXRhID0gJ1RFU1QgTUVUREFUQSAyJztcblxuICAgICAgICAgICAgdmFyIG1ldGFkYXRhMyA9IG5ldyBNZXRhZGF0YSgpO1xuICAgICAgICAgICAgbWV0YWRhdGEzLmlkID0gMztcbiAgICAgICAgICAgIG1ldGFkYXRhMy5tZF9zY29wZSA9IE1ldGFkYXRhLlRJTEU7XG4gICAgICAgICAgICBtZXRhZGF0YTMubWRfc3RhbmRhcmRfdXJpID0gXCJURVNUX1VSSV8zXCI7XG4gICAgICAgICAgICBtZXRhZGF0YTMubWltZV90eXBlID0gJ3RleHQveG1sJztcbiAgICAgICAgICAgIG1ldGFkYXRhMy5tZXRhZGF0YSA9ICdURVNUIE1FVERBVEEgMyc7XG5cbiAgICAgICAgICAgIGFzeW5jLmVhY2hTZXJpZXMoW21ldGFkYXRhMSwgbWV0YWRhdGEyLCBtZXRhZGF0YTNdLCBmdW5jdGlvbihtZXRhZGF0YSwgZG9uZSkge1xuICAgICAgICAgICAgICBtZXRhZGF0YURhby5jcmVhdGUobWV0YWRhdGEsIGZ1bmN0aW9uKGVyciwgcmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgc2hvdWxkLm5vdC5leGlzdChlcnIpO1xuICAgICAgICAgICAgICAgIHJlc3VsdC5zaG91bGQuYmUuZXF1YWwobWV0YWRhdGEuaWQpO1xuICAgICAgICAgICAgICAgIGRvbmUoKTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LCBmdW5jdGlvbihlcnIpIHtcbiAgICAgICAgICAgICAgdmFyIHJlZjEgPSBuZXcgTWV0YWRhdGFSZWZlcmVuY2UoKTtcbiAgICAgICAgICAgICAgcmVmMS5zZXRSZWZlcmVuY2VTY29wZVR5cGUoTWV0YWRhdGFSZWZlcmVuY2UuR0VPUEFDS0FHRSk7XG4gICAgICAgICAgICAgIHJlZjEudGltZXN0YW1wID0gbmV3IERhdGUoKTtcbiAgICAgICAgICAgICAgcmVmMS5zZXRNZXRhZGF0YShtZXRhZGF0YTEpO1xuXG4gICAgICAgICAgICAgIHZhciByZWYyID0gbmV3IE1ldGFkYXRhUmVmZXJlbmNlKCk7XG4gICAgICAgICAgICAgIHJlZjIuc2V0UmVmZXJlbmNlU2NvcGVUeXBlKE1ldGFkYXRhUmVmZXJlbmNlLlRBQkxFKTtcbiAgICAgICAgICAgICAgcmVmMi50YWJsZV9uYW1lID0gJ1RFU1RfVEFCTEVfTkFNRV8yJztcbiAgICAgICAgICAgICAgcmVmMi50aW1lc3RhbXAgPSBuZXcgRGF0ZSgpO1xuICAgICAgICAgICAgICByZWYyLnNldE1ldGFkYXRhKG1ldGFkYXRhMik7XG4gICAgICAgICAgICAgIHJlZjIuc2V0UGFyZW50TWV0YWRhdGEobWV0YWRhdGExKTtcblxuICAgICAgICAgICAgICBhc3luYy5lYWNoU2VyaWVzKFtyZWYxLCByZWYyXSwgZnVuY3Rpb24ocmVmLCBkb25lKSB7XG4gICAgICAgICAgICAgICAgbWV0YWRhdGFSZWZlcmVuY2VEYW8uY3JlYXRlKHJlZiwgZnVuY3Rpb24oZXJyLCByZXN1bHQpIHtcbiAgICAgICAgICAgICAgICAgIHNob3VsZC5ub3QuZXhpc3QoZXJyKTtcbiAgICAgICAgICAgICAgICAgIGRvbmUoKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfSwgZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgbWV0YWRhdGFSZWZlcmVuY2VEYW8ucXVlcnlCeU1ldGFkYXRhQW5kUGFyZW50KG1ldGFkYXRhMi5pZCwgbWV0YWRhdGExLmlkLCBmdW5jdGlvbihlcnIsIHJvdywgcm93RG9uZSkge1xuICAgICAgICAgICAgICAgICAgc2hvdWxkLm5vdC5leGlzdChlcnIpO1xuICAgICAgICAgICAgICAgICAgcm93LnRhYmxlX25hbWUuc2hvdWxkLmJlLmVxdWFsKCdURVNUX1RBQkxFX05BTUVfMicpO1xuICAgICAgICAgICAgICAgICAgcm93Lm1kX2ZpbGVfaWQuc2hvdWxkLmJlLmVxdWFsKG1ldGFkYXRhMi5pZCk7XG4gICAgICAgICAgICAgICAgICByb3cubWRfcGFyZW50X2lkLnNob3VsZC5iZS5lcXVhbChtZXRhZGF0YTEuaWQpO1xuICAgICAgICAgICAgICAgICAgcm93RG9uZSgpO1xuICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgZG9uZSgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHF1ZXJ5IGZvciBtZXRhZGF0YXJlZmVyZW5jZSBieSBtZXRhZGF0YScsIGZ1bmN0aW9uKGRvbmUpIHtcblxuICAgIGdlb3BhY2thZ2UuY3JlYXRlTWV0YWRhdGFUYWJsZShmdW5jdGlvbihlcnIsIHJlc3VsdCkge1xuICAgICAgZ2VvcGFja2FnZS5jcmVhdGVNZXRhZGF0YVJlZmVyZW5jZVRhYmxlKGZ1bmN0aW9uKGVyciwgcmVzdWx0KSB7XG4gICAgICAgIFZlcmlmaWNhdGlvbi52ZXJpZnlNZXRhZGF0YVJlZmVyZW5jZShnZW9wYWNrYWdlLCBmdW5jdGlvbihlcnIsIHJlc3VsdCkge1xuICAgICAgICAgIHNob3VsZC5ub3QuZXhpc3QoZXJyKTtcbiAgICAgICAgICBWZXJpZmljYXRpb24udmVyaWZ5TWV0YWRhdGEoZ2VvcGFja2FnZSwgZnVuY3Rpb24oZXJyLCByZXN1bHQpIHtcbiAgICAgICAgICAgIHNob3VsZC5ub3QuZXhpc3QoZXJyKTtcblxuICAgICAgICAgICAgdmFyIG1ldGFkYXRhRGFvID0gZ2VvcGFja2FnZS5nZXRNZXRhZGF0YURhbygpO1xuICAgICAgICAgICAgdmFyIG1ldGFkYXRhUmVmZXJlbmNlRGFvID0gZ2VvcGFja2FnZS5nZXRNZXRhZGF0YVJlZmVyZW5jZURhbygpO1xuXG4gICAgICAgICAgICB2YXIgbWV0YWRhdGExID0gbmV3IE1ldGFkYXRhKCk7XG4gICAgICAgICAgICBtZXRhZGF0YTEuaWQgPSAxO1xuICAgICAgICAgICAgbWV0YWRhdGExLm1kX3Njb3BlID0gTWV0YWRhdGEuREFUQVNFVDtcbiAgICAgICAgICAgIG1ldGFkYXRhMS5tZF9zdGFuZGFyZF91cmkgPSBcIlRFU1RfVVJJXzFcIjtcbiAgICAgICAgICAgIG1ldGFkYXRhMS5taW1lX3R5cGUgPSAndGV4dC94bWwnO1xuICAgICAgICAgICAgbWV0YWRhdGExLm1ldGFkYXRhID0gJ1RFU1QgTUVUREFUQSAxJztcblxuICAgICAgICAgICAgdmFyIG1ldGFkYXRhMiA9IG5ldyBNZXRhZGF0YSgpO1xuICAgICAgICAgICAgbWV0YWRhdGEyLmlkID0gMjtcbiAgICAgICAgICAgIG1ldGFkYXRhMi5tZF9zY29wZSA9IE1ldGFkYXRhLkZFQVRVUkVfVFlQRTtcbiAgICAgICAgICAgIG1ldGFkYXRhMi5tZF9zdGFuZGFyZF91cmkgPSBcIlRFU1RfVVJJXzJcIjtcbiAgICAgICAgICAgIG1ldGFkYXRhMi5taW1lX3R5cGUgPSAndGV4dC94bWwnO1xuICAgICAgICAgICAgbWV0YWRhdGEyLm1ldGFkYXRhID0gJ1RFU1QgTUVUREFUQSAyJztcblxuICAgICAgICAgICAgdmFyIG1ldGFkYXRhMyA9IG5ldyBNZXRhZGF0YSgpO1xuICAgICAgICAgICAgbWV0YWRhdGEzLmlkID0gMztcbiAgICAgICAgICAgIG1ldGFkYXRhMy5tZF9zY29wZSA9IE1ldGFkYXRhLlRJTEU7XG4gICAgICAgICAgICBtZXRhZGF0YTMubWRfc3RhbmRhcmRfdXJpID0gXCJURVNUX1VSSV8zXCI7XG4gICAgICAgICAgICBtZXRhZGF0YTMubWltZV90eXBlID0gJ3RleHQveG1sJztcbiAgICAgICAgICAgIG1ldGFkYXRhMy5tZXRhZGF0YSA9ICdURVNUIE1FVERBVEEgMyc7XG5cbiAgICAgICAgICAgIGFzeW5jLmVhY2hTZXJpZXMoW21ldGFkYXRhMSwgbWV0YWRhdGEyLCBtZXRhZGF0YTNdLCBmdW5jdGlvbihtZXRhZGF0YSwgZG9uZSkge1xuICAgICAgICAgICAgICBtZXRhZGF0YURhby5jcmVhdGUobWV0YWRhdGEsIGZ1bmN0aW9uKGVyciwgcmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgc2hvdWxkLm5vdC5leGlzdChlcnIpO1xuICAgICAgICAgICAgICAgIHJlc3VsdC5zaG91bGQuYmUuZXF1YWwobWV0YWRhdGEuaWQpO1xuICAgICAgICAgICAgICAgIGRvbmUoKTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9LCBmdW5jdGlvbihlcnIpIHtcbiAgICAgICAgICAgICAgdmFyIHJlZjEgPSBuZXcgTWV0YWRhdGFSZWZlcmVuY2UoKTtcbiAgICAgICAgICAgICAgcmVmMS5zZXRSZWZlcmVuY2VTY29wZVR5cGUoTWV0YWRhdGFSZWZlcmVuY2UuR0VPUEFDS0FHRSk7XG4gICAgICAgICAgICAgIHJlZjEudGltZXN0YW1wID0gbmV3IERhdGUoKTtcbiAgICAgICAgICAgICAgcmVmMS5zZXRNZXRhZGF0YShtZXRhZGF0YTIpO1xuXG4gICAgICAgICAgICAgIHZhciByZWYyID0gbmV3IE1ldGFkYXRhUmVmZXJlbmNlKCk7XG4gICAgICAgICAgICAgIHJlZjIuc2V0UmVmZXJlbmNlU2NvcGVUeXBlKE1ldGFkYXRhUmVmZXJlbmNlLlRBQkxFKTtcbiAgICAgICAgICAgICAgcmVmMi50YWJsZV9uYW1lID0gJ1RFU1RfVEFCTEVfTkFNRV8yJztcbiAgICAgICAgICAgICAgcmVmMi50aW1lc3RhbXAgPSBuZXcgRGF0ZSgpO1xuICAgICAgICAgICAgICByZWYyLnNldE1ldGFkYXRhKG1ldGFkYXRhMik7XG4gICAgICAgICAgICAgIHJlZjIuc2V0UGFyZW50TWV0YWRhdGEobWV0YWRhdGExKTtcblxuICAgICAgICAgICAgICBhc3luYy5lYWNoU2VyaWVzKFtyZWYxLCByZWYyXSwgZnVuY3Rpb24ocmVmLCBkb25lKSB7XG4gICAgICAgICAgICAgICAgbWV0YWRhdGFSZWZlcmVuY2VEYW8uY3JlYXRlKHJlZiwgZnVuY3Rpb24oZXJyLCByZXN1bHQpIHtcbiAgICAgICAgICAgICAgICAgIHNob3VsZC5ub3QuZXhpc3QoZXJyKTtcbiAgICAgICAgICAgICAgICAgIGRvbmUoKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfSwgZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgdmFyIGNvdW50ID0gMDtcbiAgICAgICAgICAgICAgICBtZXRhZGF0YVJlZmVyZW5jZURhby5xdWVyeUJ5TWV0YWRhdGEobWV0YWRhdGEyLmlkLCBmdW5jdGlvbihlcnIsIHJvdywgcm93RG9uZSkge1xuICAgICAgICAgICAgICAgICAgY291bnQrKztcbiAgICAgICAgICAgICAgICAgIHNob3VsZC5ub3QuZXhpc3QoZXJyKTtcbiAgICAgICAgICAgICAgICAgIHJvdy5tZF9maWxlX2lkLnNob3VsZC5iZS5lcXVhbChtZXRhZGF0YTIuaWQpO1xuICAgICAgICAgICAgICAgICAgcm93RG9uZSgpO1xuICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgY291bnQuc2hvdWxkLmJlLmVxdWFsKDIpO1xuICAgICAgICAgICAgICAgICAgZG9uZSgpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIiwidmFyIGZzID0gcmVxdWlyZSgnZnMnKVxuICAsIHNob3VsZCA9IHJlcXVpcmUoJ2NoYWknKS5zaG91bGQoKVxuICAsIHBhdGggPSByZXF1aXJlKCdwYXRoJylcbiAgLCBhc3luYyA9IHJlcXVpcmUoJ2FzeW5jJylcbiAgLCBNZXRhZGF0YSA9IHJlcXVpcmUoJy4uLy4uLy4uL2xpYi9tZXRhZGF0YScpLk1ldGFkYXRhO1xuXG5kZXNjcmliZSgnTWV0YWRhdGEgdGVzdHMnLCBmdW5jdGlvbigpIHtcblxuICBpdCgnc2hvdWxkIHRlc3QgZ2V0dGluZyBzY29wZSBpbmZvcm1hdGlvbicsIGZ1bmN0aW9uKCkge1xuICAgIHZhciBtMSA9IG5ldyBNZXRhZGF0YSgpO1xuICAgIHZhciBpbmZvO1xuICAgIGluZm8gPSBtMS5nZXRTY29wZUluZm9ybWF0aW9uKE1ldGFkYXRhLlVOREVGSU5FRCk7XG4gICAgaW5mby5uYW1lLnNob3VsZC5iZS5lcXVhbChNZXRhZGF0YS5VTkRFRklORUQpO1xuICAgIGluZm8uY29kZS5zaG91bGQuYmUuZXF1YWwoJ05BJyk7XG4gICAgaW5mby5kZWZpbml0aW9uLnNob3VsZC5iZS5lcXVhbCgnTWV0YWRhdGEgaW5mb3JtYXRpb24gc2NvcGUgaXMgdW5kZWZpbmVkJyk7XG5cbiAgICBpbmZvID0gbTEuZ2V0U2NvcGVJbmZvcm1hdGlvbihNZXRhZGF0YS5GSUVMRF9TRVNTSU9OKTtcbiAgICBpbmZvLm5hbWUuc2hvdWxkLmJlLmVxdWFsKE1ldGFkYXRhLkZJRUxEX1NFU1NJT04pO1xuICAgIGluZm8uY29kZS5zaG91bGQuYmUuZXF1YWwoJzAxMicpO1xuICAgIGluZm8uZGVmaW5pdGlvbi5zaG91bGQuYmUuZXF1YWwoJ0luZm9ybWF0aW9uIGFwcGxpZXMgdG8gdGhlIGZpZWxkIHNlc3Npb24nKTtcblxuICAgIGluZm8gPSBtMS5nZXRTY29wZUluZm9ybWF0aW9uKE1ldGFkYXRhLkNPTExFQ1RJT05fU0VTU0lPTik7XG4gICAgaW5mby5uYW1lLnNob3VsZC5iZS5lcXVhbChNZXRhZGF0YS5DT0xMRUNUSU9OX1NFU1NJT04pO1xuICAgIGluZm8uY29kZS5zaG91bGQuYmUuZXF1YWwoJzAwNCcpO1xuICAgIGluZm8uZGVmaW5pdGlvbi5zaG91bGQuYmUuZXF1YWwoJ0luZm9ybWF0aW9uIGFwcGxpZXMgdG8gdGhlIGNvbGxlY3Rpb24gc2Vzc2lvbicpO1xuXG4gICAgaW5mbyA9IG0xLmdldFNjb3BlSW5mb3JtYXRpb24oTWV0YWRhdGEuU0VSSUVTKTtcbiAgICBpbmZvLm5hbWUuc2hvdWxkLmJlLmVxdWFsKE1ldGFkYXRhLlNFUklFUyk7XG4gICAgaW5mby5jb2RlLnNob3VsZC5iZS5lcXVhbCgnMDA2Jyk7XG4gICAgaW5mby5kZWZpbml0aW9uLnNob3VsZC5iZS5lcXVhbCgnSW5mb3JtYXRpb24gYXBwbGllcyB0byB0aGUgKGRhdGFzZXQpIHNlcmllcycpO1xuXG4gICAgaW5mbyA9IG0xLmdldFNjb3BlSW5mb3JtYXRpb24oTWV0YWRhdGEuREFUQVNFVCk7XG4gICAgaW5mby5uYW1lLnNob3VsZC5iZS5lcXVhbChNZXRhZGF0YS5EQVRBU0VUKTtcbiAgICBpbmZvLmNvZGUuc2hvdWxkLmJlLmVxdWFsKCcwMDUnKTtcbiAgICBpbmZvLmRlZmluaXRpb24uc2hvdWxkLmJlLmVxdWFsKCdJbmZvcm1hdGlvbiBhcHBsaWVzIHRvIHRoZSAoZ2VvZ3JhcGhpYyBmZWF0dXJlKSBkYXRhc2V0Jyk7XG5cbiAgICBpbmZvID0gbTEuZ2V0U2NvcGVJbmZvcm1hdGlvbihNZXRhZGF0YS5GRUFUVVJFX1RZUEUpO1xuICAgIGluZm8ubmFtZS5zaG91bGQuYmUuZXF1YWwoTWV0YWRhdGEuRkVBVFVSRV9UWVBFKTtcbiAgICBpbmZvLmNvZGUuc2hvdWxkLmJlLmVxdWFsKCcwMTAnKTtcbiAgICBpbmZvLmRlZmluaXRpb24uc2hvdWxkLmJlLmVxdWFsKCdJbmZvcm1hdGlvbiBhcHBsaWVzIHRvIGEgZmVhdHVyZSB0eXBlIChjbGFzcyknKTtcblxuICAgIGluZm8gPSBtMS5nZXRTY29wZUluZm9ybWF0aW9uKE1ldGFkYXRhLkZFQVRVUkUpO1xuICAgIGluZm8ubmFtZS5zaG91bGQuYmUuZXF1YWwoTWV0YWRhdGEuRkVBVFVSRSk7XG4gICAgaW5mby5jb2RlLnNob3VsZC5iZS5lcXVhbCgnMDA5Jyk7XG4gICAgaW5mby5kZWZpbml0aW9uLnNob3VsZC5iZS5lcXVhbCgnSW5mb3JtYXRpb24gYXBwbGllcyB0byBhIGZlYXR1cmUgKGluc3RhbmNlKScpO1xuXG4gICAgaW5mbyA9IG0xLmdldFNjb3BlSW5mb3JtYXRpb24oTWV0YWRhdGEuQVRUUklCVVRFX1RZUEUpO1xuICAgIGluZm8ubmFtZS5zaG91bGQuYmUuZXF1YWwoTWV0YWRhdGEuQVRUUklCVVRFX1RZUEUpO1xuICAgIGluZm8uY29kZS5zaG91bGQuYmUuZXF1YWwoJzAwMicpO1xuICAgIGluZm8uZGVmaW5pdGlvbi5zaG91bGQuYmUuZXF1YWwoJ0luZm9ybWF0aW9uIGFwcGxpZXMgdG8gdGhlIGF0dHJpYnV0ZSBjbGFzcycpO1xuXG4gICAgaW5mbyA9IG0xLmdldFNjb3BlSW5mb3JtYXRpb24oTWV0YWRhdGEuQVRUUklCVVRFKTtcbiAgICBpbmZvLm5hbWUuc2hvdWxkLmJlLmVxdWFsKE1ldGFkYXRhLkFUVFJJQlVURSk7XG4gICAgaW5mby5jb2RlLnNob3VsZC5iZS5lcXVhbCgnMDAxJyk7XG4gICAgaW5mby5kZWZpbml0aW9uLnNob3VsZC5iZS5lcXVhbCgnSW5mb3JtYXRpb24gYXBwbGllcyB0byB0aGUgY2hhcmFjdGVyaXN0aWMgb2YgYSBmZWF0dXJlIChpbnN0YW5jZSknKTtcblxuICAgIGluZm8gPSBtMS5nZXRTY29wZUluZm9ybWF0aW9uKE1ldGFkYXRhLlRJTEUpO1xuICAgIGluZm8ubmFtZS5zaG91bGQuYmUuZXF1YWwoTWV0YWRhdGEuVElMRSk7XG4gICAgaW5mby5jb2RlLnNob3VsZC5iZS5lcXVhbCgnMDE2Jyk7XG4gICAgaW5mby5kZWZpbml0aW9uLnNob3VsZC5iZS5lcXVhbCgnSW5mb3JtYXRpb24gYXBwbGllcyB0byBhIHRpbGUsIGEgc3BhdGlhbCBzdWJzZXQgb2YgZ2VvZ3JhcGhpYyBkYXRhJyk7XG5cbiAgICBpbmZvID0gbTEuZ2V0U2NvcGVJbmZvcm1hdGlvbihNZXRhZGF0YS5NT0RFTCk7XG4gICAgaW5mby5uYW1lLnNob3VsZC5iZS5lcXVhbChNZXRhZGF0YS5NT0RFTCk7XG4gICAgaW5mby5jb2RlLnNob3VsZC5iZS5lcXVhbCgnMDE1Jyk7XG4gICAgaW5mby5kZWZpbml0aW9uLnNob3VsZC5iZS5lcXVhbCgnSW5mb3JtYXRpb24gYXBwbGllcyB0byBhIGNvcHkgb3IgaW1pdGF0aW9uIG9mIGFuIGV4aXN0aW5nIG9yIGh5cG90aGV0aWNhbCBvYmplY3QnKTtcblxuICAgIGluZm8gPSBtMS5nZXRTY29wZUluZm9ybWF0aW9uKE1ldGFkYXRhLkNBVEFMT0cpO1xuICAgIGluZm8ubmFtZS5zaG91bGQuYmUuZXF1YWwoTWV0YWRhdGEuQ0FUQUxPRyk7XG4gICAgaW5mby5jb2RlLnNob3VsZC5iZS5lcXVhbCgnTkEnKTtcbiAgICBpbmZvLmRlZmluaXRpb24uc2hvdWxkLmJlLmVxdWFsKCdNZXRhZGF0YSBhcHBsaWVzIHRvIGEgZmVhdHVyZSBjYXRhbG9nJyk7XG5cbiAgICBpbmZvID0gbTEuZ2V0U2NvcGVJbmZvcm1hdGlvbihNZXRhZGF0YS5TQ0hFTUEpO1xuICAgIGluZm8ubmFtZS5zaG91bGQuYmUuZXF1YWwoTWV0YWRhdGEuU0NIRU1BKTtcbiAgICBpbmZvLmNvZGUuc2hvdWxkLmJlLmVxdWFsKCdOQScpO1xuICAgIGluZm8uZGVmaW5pdGlvbi5zaG91bGQuYmUuZXF1YWwoJ01ldGFkYXRhIGFwcGxpZXMgdG8gYW4gYXBwbGljYXRpb24gc2NoZW1hJyk7XG5cbiAgICBpbmZvID0gbTEuZ2V0U2NvcGVJbmZvcm1hdGlvbihNZXRhZGF0YS5UQVhPTk9NWSk7XG4gICAgaW5mby5uYW1lLnNob3VsZC5iZS5lcXVhbChNZXRhZGF0YS5UQVhPTk9NWSk7XG4gICAgaW5mby5jb2RlLnNob3VsZC5iZS5lcXVhbCgnTkEnKTtcbiAgICBpbmZvLmRlZmluaXRpb24uc2hvdWxkLmJlLmVxdWFsKCdNZXRhZGF0YSBhcHBsaWVzIHRvIGEgdGF4b25vbXkgb3Iga25vd2xlZGdlIHN5c3RlbScpO1xuXG4gICAgaW5mbyA9IG0xLmdldFNjb3BlSW5mb3JtYXRpb24oTWV0YWRhdGEuU09GVFdBUkUpO1xuICAgIGluZm8ubmFtZS5zaG91bGQuYmUuZXF1YWwoTWV0YWRhdGEuU09GVFdBUkUpO1xuICAgIGluZm8uY29kZS5zaG91bGQuYmUuZXF1YWwoJzAxMycpO1xuICAgIGluZm8uZGVmaW5pdGlvbi5zaG91bGQuYmUuZXF1YWwoJ0luZm9ybWF0aW9uIGFwcGxpZXMgdG8gYSBjb21wdXRlciBwcm9ncmFtIG9yIHJvdXRpbmUnKTtcblxuICAgIGluZm8gPSBtMS5nZXRTY29wZUluZm9ybWF0aW9uKE1ldGFkYXRhLlNFUlZJQ0UpO1xuICAgIGluZm8ubmFtZS5zaG91bGQuYmUuZXF1YWwoTWV0YWRhdGEuU0VSVklDRSk7XG4gICAgaW5mby5jb2RlLnNob3VsZC5iZS5lcXVhbCgnMDE0Jyk7XG4gICAgaW5mby5kZWZpbml0aW9uLnNob3VsZC5iZS5lcXVhbCgnSW5mb3JtYXRpb24gYXBwbGllcyB0byBhIGNhcGFiaWxpdHkgd2hpY2ggYSBzZXJ2aWNlIHByb3ZpZGVyIGVudGl0eSBtYWtlcyBhdmFpbGFibGUgdG8gYSBzZXJ2aWNlIHVzZXIgZW50aXR5IHRocm91Z2ggYSBzZXQgb2YgaW50ZXJmYWNlcyB0aGF0IGRlZmluZSBhIGJlaGF2aW91ciwgc3VjaCBhcyBhIHVzZSBjYXNlJyk7XG5cbiAgICBpbmZvID0gbTEuZ2V0U2NvcGVJbmZvcm1hdGlvbihNZXRhZGF0YS5DT0xMRUNUSU9OX0hBUkRXQVJFKTtcbiAgICBpbmZvLm5hbWUuc2hvdWxkLmJlLmVxdWFsKE1ldGFkYXRhLkNPTExFQ1RJT05fSEFSRFdBUkUpO1xuICAgIGluZm8uY29kZS5zaG91bGQuYmUuZXF1YWwoJzAwMycpO1xuICAgIGluZm8uZGVmaW5pdGlvbi5zaG91bGQuYmUuZXF1YWwoJ0luZm9ybWF0aW9uIGFwcGxpZXMgdG8gdGhlIGNvbGxlY3Rpb24gaGFyZHdhcmUgY2xhc3MnKTtcblxuICAgIGluZm8gPSBtMS5nZXRTY29wZUluZm9ybWF0aW9uKE1ldGFkYXRhLk5PTl9HRU9HUkFQSElDX0RBVEFTRVQpO1xuICAgIGluZm8ubmFtZS5zaG91bGQuYmUuZXF1YWwoTWV0YWRhdGEuTk9OX0dFT0dSQVBISUNfREFUQVNFVCk7XG4gICAgaW5mby5jb2RlLnNob3VsZC5iZS5lcXVhbCgnMDA3Jyk7XG4gICAgaW5mby5kZWZpbml0aW9uLnNob3VsZC5iZS5lcXVhbCgnSW5mb3JtYXRpb24gYXBwbGllcyB0byBub24tZ2VvZ3JhcGhpYyBkYXRhJyk7XG5cbiAgICBpbmZvID0gbTEuZ2V0U2NvcGVJbmZvcm1hdGlvbihNZXRhZGF0YS5ESU1FTlNJT05fR1JPVVApO1xuICAgIGluZm8ubmFtZS5zaG91bGQuYmUuZXF1YWwoTWV0YWRhdGEuRElNRU5TSU9OX0dST1VQKTtcbiAgICBpbmZvLmNvZGUuc2hvdWxkLmJlLmVxdWFsKCcwMDgnKTtcbiAgICBpbmZvLmRlZmluaXRpb24uc2hvdWxkLmJlLmVxdWFsKCdJbmZvcm1hdGlvbiBhcHBsaWVzIHRvIGEgZGltZW5zaW9uIGdyb3VwJyk7XG4gIH0pO1xufSk7XG4iLCJ2YXIgQm91bmRpbmdCb3ggPSByZXF1aXJlKCcuLi8uLi9saWIvYm91bmRpbmdCb3guanMnKTtcblxuZGVzY3JpYmUoJ0JvdW5kaW5nQm94IHRlc3RzJywgZnVuY3Rpb24oKSB7XG5cbiAgaXQoJ3Nob3VsZCBjcmVhdGUgYSBCb3VuZGluZ0JveCcsIGZ1bmN0aW9uKCkge1xuICAgIHZhciBiYiA9IG5ldyBCb3VuZGluZ0JveCgwLCAxLCAyLCAzKTtcbiAgICBiYi5taW5Mb25naXR1ZGUuc2hvdWxkLmJlLmVxdWFsKDApO1xuICAgIGJiLm1heExvbmdpdHVkZS5zaG91bGQuYmUuZXF1YWwoMSk7XG4gICAgYmIubWluTGF0aXR1ZGUuc2hvdWxkLmJlLmVxdWFsKDIpO1xuICAgIGJiLm1heExhdGl0dWRlLnNob3VsZC5iZS5lcXVhbCgzKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBkdXBsaWNhdGUgYSBCb3VuZGluZ0JveCcsIGZ1bmN0aW9uKCkge1xuICAgIHZhciBiYiA9IG5ldyBCb3VuZGluZ0JveCgwLCAxLCAyLCAzKTtcbiAgICB2YXIgYmIyID0gbmV3IEJvdW5kaW5nQm94KGJiKTtcbiAgICBiYjIubWluTG9uZ2l0dWRlLnNob3VsZC5iZS5lcXVhbCgwKTtcbiAgICBiYjIubWF4TG9uZ2l0dWRlLnNob3VsZC5iZS5lcXVhbCgxKTtcbiAgICBiYjIubWluTGF0aXR1ZGUuc2hvdWxkLmJlLmVxdWFsKDIpO1xuICAgIGJiMi5tYXhMYXRpdHVkZS5zaG91bGQuYmUuZXF1YWwoMyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgYmUgZXF1YWwgdG8gYW5vdGhlciBCb3VuZGluZ0JveCcsIGZ1bmN0aW9uKCkge1xuICAgIHZhciBiYiA9IG5ldyBCb3VuZGluZ0JveCgwLCAxLCAyLCAzKTtcbiAgICB2YXIgYmIyID0gbmV3IEJvdW5kaW5nQm94KDAsIDEsIDIsIDMpO1xuICAgIGJiLmVxdWFscyhiYjIpLnNob3VsZC5iZS5lcXVhbCh0cnVlKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBub3QgYmUgZXF1YWwgdG8gYW5vdGhlciB1bmRlZmluZWQnLCBmdW5jdGlvbigpIHtcbiAgICB2YXIgYmIgPSBuZXcgQm91bmRpbmdCb3goMCwgMSwgMiwgMyk7XG4gICAgYmIuZXF1YWxzKHVuZGVmaW5lZCkuc2hvdWxkLmJlLmVxdWFsKGZhbHNlKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBiZSBlcXVhbCB0byBpdHNlbGYnLCBmdW5jdGlvbigpIHtcbiAgICB2YXIgYmIgPSBuZXcgQm91bmRpbmdCb3goMCwgMSwgMiwgMyk7XG4gICAgYmIuZXF1YWxzKGJiKS5zaG91bGQuYmUuZXF1YWwodHJ1ZSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgcHJvamVjdCB0aGUgQm91bmRpbmdCb3gnLCBmdW5jdGlvbigpIHtcbiAgICB2YXIgYmIgPSBuZXcgQm91bmRpbmdCb3goMCwgMSwgMiwgMyk7XG4gICAgdmFyIHByb2plY3RlZCA9IGJiLnByb2plY3RCb3VuZGluZ0JveCgnRVBTRzo0MzI2JywgJ0VQU0c6Mzg1NycpO1xuICAgIHByb2plY3RlZC5taW5Mb25naXR1ZGUuc2hvdWxkLmJlLmVxdWFsKDApO1xuICAgIHByb2plY3RlZC5tYXhMb25naXR1ZGUuc2hvdWxkLmJlLmVxdWFsKDExMTMxOS40OTA3OTMyNzM1Nyk7XG4gICAgcHJvamVjdGVkLm1pbkxhdGl0dWRlLnNob3VsZC5iZS5lcXVhbCgyMjI2ODQuMjA4NTA1NTQ0NTUpO1xuICAgIHByb2plY3RlZC5tYXhMYXRpdHVkZS5zaG91bGQuYmUuZXF1YWwoMzM0MTExLjE3MTQwMTk1OTcpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHJldHVybiB0aGUgQm91bmRpbmdCb3ggZHVlIHRvIG5vIHByb2plY3Rpb24nLCBmdW5jdGlvbigpIHtcbiAgICB2YXIgYmIgPSBuZXcgQm91bmRpbmdCb3goMCwgMSwgMiwgMyk7XG4gICAgdmFyIHByb2plY3RlZCA9IGJiLnByb2plY3RCb3VuZGluZ0JveCgnRVBTRzo0MzI2Jyk7XG4gICAgcHJvamVjdGVkLm1pbkxvbmdpdHVkZS5zaG91bGQuYmUuZXF1YWwoMCk7XG4gICAgcHJvamVjdGVkLm1heExvbmdpdHVkZS5zaG91bGQuYmUuZXF1YWwoMSk7XG4gICAgcHJvamVjdGVkLm1pbkxhdGl0dWRlLnNob3VsZC5iZS5lcXVhbCgyKTtcbiAgICBwcm9qZWN0ZWQubWF4TGF0aXR1ZGUuc2hvdWxkLmJlLmVxdWFsKDMpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGNvbnZlcnQnLCBmdW5jdGlvbigpIHtcbiAgIHZhciBiYiA9IG5ldyBCb3VuZGluZ0JveCgtMTI1MjM0NC4yNzE0MjQzMjc3LDI1MDQ2ODguNTQyODQ4NjU1NSwwLDM3NTcwMzIuODE0MjcyOTgzKTtcbiAgIHZhciBwcm9qZWN0ZWQgPSBiYi5wcm9qZWN0Qm91bmRpbmdCb3goJ0VQU0c6Mzg1NycsICdFUFNHOjQzMjYnKVxuICAgY29uc29sZS5sb2coJ3Byb2plY3RlZCcsIHByb2plY3RlZCk7XG4gIH0pO1xuXG59KTtcbiIsInZhciBHZW9QYWNrYWdlQ29ubmVjdGlvbiA9IHJlcXVpcmUoJy4uLy4uL2xpYi9kYi9nZW9QYWNrYWdlQ29ubmVjdGlvbicpXG4gICwgR2VvUGFja2FnZSA9IHJlcXVpcmUoJy4uLy4uL2xpYi9nZW9QYWNrYWdlJylcbiAgLCBGZWF0dXJlQ29sdW1uID0gcmVxdWlyZSgnLi4vLi4vbGliL2ZlYXR1cmVzL3VzZXIvZmVhdHVyZUNvbHVtbicpXG4gICwgVmVyaWZpY2F0aW9uID0gcmVxdWlyZSgnLi4vZml4dHVyZXMvdmVyaWZpY2F0aW9uJylcbiAgLCBUaWxlVGFibGUgPSByZXF1aXJlKCcuLi8uLi9saWIvdGlsZXMvdXNlci90aWxlVGFibGUnKVxuICAsIFNldHVwRmVhdHVyZVRhYmxlID0gcmVxdWlyZSgnLi4vZml4dHVyZXMvc2V0dXBGZWF0dXJlVGFibGUnKVxuICAsIFRhYmxlQ3JlYXRvciA9IHJlcXVpcmUoJy4uLy4uL2xpYi9kYi90YWJsZUNyZWF0b3InKVxuICAsIEJvdW5kaW5nQm94ID0gcmVxdWlyZSgnLi4vLi4vbGliL2JvdW5kaW5nQm94JylcbiAgLCBEYXRhVHlwZXMgPSByZXF1aXJlKCcuLi8uLi9saWIvZGIvZGF0YVR5cGVzJylcbiAgLCBHZW9tZXRyeURhdGEgPSByZXF1aXJlKCcuLi8uLi9saWIvZ2VvbS9nZW9tZXRyeURhdGEnKVxuICAsIFVzZXJUYWJsZVJlYWRlciA9IHJlcXVpcmUoJy4uLy4uL2xpYi91c2VyL3VzZXJUYWJsZVJlYWRlcicpXG4gICwgdGVzdFNldHVwID0gcmVxdWlyZSgnLi4vZml4dHVyZXMvdGVzdFNldHVwJylcbiAgLCBzaG91bGQgPSByZXF1aXJlKCdjaGFpJykuc2hvdWxkKClcbiAgLCB3a3ggPSByZXF1aXJlKCd3a3gnKVxuICAsIHBhdGggPSByZXF1aXJlKCdwYXRoJylcbiAgLCBhc3luYyA9IHJlcXVpcmUoJ2FzeW5jJyk7XG5cbmRlc2NyaWJlKCdHZW9QYWNrYWdlIEZlYXR1cmUgdGFibGUgY3JlYXRlIHRlc3RzJywgZnVuY3Rpb24oKSB7XG4gIHZhciB0ZXN0R2VvUGFja2FnZSA9IHBhdGguam9pbihfX2Rpcm5hbWUsICcuLicsICd0bXAnLCAndGVzdC5ncGtnJyk7XG4gIHZhciB0YWJsZU5hbWUgPSAndGVzdF9mZWF0dXJlcy50ZXN0JztcbiAgdmFyIGdlb3BhY2thZ2U7XG5cbiAgYmVmb3JlRWFjaChmdW5jdGlvbihkb25lKSB7XG4gICAgdGVzdFNldHVwLmRlbGV0ZUdlb1BhY2thZ2UodGVzdEdlb1BhY2thZ2UsIGZ1bmN0aW9uKCkge1xuICAgICAgdGVzdFNldHVwLmNyZWF0ZUdlb1BhY2thZ2UodGVzdEdlb1BhY2thZ2UsIGZ1bmN0aW9uKGVyciwgZ3ApIHtcbiAgICAgICAgZ2VvcGFja2FnZSA9IGdwO1xuICAgICAgICBkb25lKCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgYWZ0ZXJFYWNoKGZ1bmN0aW9uKGRvbmUpIHtcbiAgICBnZW9wYWNrYWdlLmNsb3NlKCk7XG4gICAgdGVzdFNldHVwLmRlbGV0ZUdlb1BhY2thZ2UodGVzdEdlb1BhY2thZ2UsIGRvbmUpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGNyZWF0ZSBhIGZlYXR1cmUgdGFibGUnLCBmdW5jdGlvbihkb25lKSB7XG4gICAgdmFyIGdlb21ldHJ5Q29sdW1ucyA9IFNldHVwRmVhdHVyZVRhYmxlLmJ1aWxkR2VvbWV0cnlDb2x1bW5zKHRhYmxlTmFtZSwgJ2dlb20udGVzdCcsIHdreC5UeXBlcy53a3QuUG9pbnQpO1xuICAgIHZhciBib3VuZGluZ0JveCA9IG5ldyBCb3VuZGluZ0JveCgtMTgwLCAxODAsIC04MCwgODApO1xuXG4gICAgdmFyIGNvbHVtbnMgPSBbXTtcblxuICAgIGNvbHVtbnMucHVzaChGZWF0dXJlQ29sdW1uLmNyZWF0ZVByaW1hcnlLZXlDb2x1bW5XaXRoSW5kZXhBbmROYW1lKDAsICdpZCcpKTtcbiAgICBjb2x1bW5zLnB1c2goRmVhdHVyZUNvbHVtbi5jcmVhdGVDb2x1bW5XaXRoSW5kZXhBbmRNYXgoNywgJ3Rlc3RfdGV4dF9saW1pdGVkLnRlc3QnLCBEYXRhVHlwZXMuR1BLR0RhdGFUeXBlLkdQS0dfRFRfVEVYVCwgNSwgZmFsc2UsIG51bGwpKTtcbiAgICBjb2x1bW5zLnB1c2goRmVhdHVyZUNvbHVtbi5jcmVhdGVDb2x1bW5XaXRoSW5kZXhBbmRNYXgoOCwgJ3Rlc3RfYmxvYl9saW1pdGVkLnRlc3QnLCBEYXRhVHlwZXMuR1BLR0RhdGFUeXBlLkdQS0dfRFRfQkxPQiwgNywgZmFsc2UsIG51bGwpKTtcbiAgICBjb2x1bW5zLnB1c2goRmVhdHVyZUNvbHVtbi5jcmVhdGVHZW9tZXRyeUNvbHVtbigxLCAnZ2VvbS50ZXN0Jywgd2t4LlR5cGVzLndrdC5Qb2ludCwgZmFsc2UsIG51bGwpKTtcbiAgICBjb2x1bW5zLnB1c2goRmVhdHVyZUNvbHVtbi5jcmVhdGVDb2x1bW5XaXRoSW5kZXgoMiwgJ3Rlc3RfdGV4dC50ZXN0JywgRGF0YVR5cGVzLkdQS0dEYXRhVHlwZS5HUEtHX0RUX1RFWFQsIGZhbHNlLCBcIlwiKSk7XG4gICAgY29sdW1ucy5wdXNoKEZlYXR1cmVDb2x1bW4uY3JlYXRlQ29sdW1uV2l0aEluZGV4KDMsICd0ZXN0X3JlYWwudGVzdCcsIERhdGFUeXBlcy5HUEtHRGF0YVR5cGUuR1BLR19EVF9SRUFMLCBmYWxzZSwgbnVsbCkpO1xuICAgIGNvbHVtbnMucHVzaChGZWF0dXJlQ29sdW1uLmNyZWF0ZUNvbHVtbldpdGhJbmRleCg0LCAndGVzdF9ib29sZWFuLnRlc3QnLCBEYXRhVHlwZXMuR1BLR0RhdGFUeXBlLkdQS0dfRFRfQk9PTEVBTiwgZmFsc2UsIG51bGwpKTtcbiAgICBjb2x1bW5zLnB1c2goRmVhdHVyZUNvbHVtbi5jcmVhdGVDb2x1bW5XaXRoSW5kZXgoNSwgJ3Rlc3RfYmxvYi50ZXN0JywgRGF0YVR5cGVzLkdQS0dEYXRhVHlwZS5HUEtHX0RUX0JMT0IsIGZhbHNlLCBudWxsKSk7XG4gICAgY29sdW1ucy5wdXNoKEZlYXR1cmVDb2x1bW4uY3JlYXRlQ29sdW1uV2l0aEluZGV4KDYsICd0ZXN0X2ludGVnZXIudGVzdCcsIERhdGFUeXBlcy5HUEtHRGF0YVR5cGUuR1BLR19EVF9JTlRFR0VSLCBmYWxzZSwgXCJcIikpO1xuXG4gICAgZ2VvcGFja2FnZS5jcmVhdGVGZWF0dXJlVGFibGVXaXRoR2VvbWV0cnlDb2x1bW5zKGdlb21ldHJ5Q29sdW1ucywgYm91bmRpbmdCb3gsIDQzMjYsIGNvbHVtbnMsIGZ1bmN0aW9uKGVyciwgcmVzdWx0KSB7XG4gICAgICBWZXJpZmljYXRpb24udmVyaWZ5R2VvbWV0cnlDb2x1bW5zKGdlb3BhY2thZ2UsIGZ1bmN0aW9uKGVycikge1xuICAgICAgICBpZiAoZXJyKSByZXR1cm4gZG9uZShlcnIpO1xuICAgICAgICBWZXJpZmljYXRpb24udmVyaWZ5VGFibGVFeGlzdHMoZ2VvcGFja2FnZSwgdGFibGVOYW1lLCBmdW5jdGlvbihlcnIpIHtcbiAgICAgICAgICBpZiAoZXJyKSByZXR1cm4gZG9uZShlcnIpO1xuICAgICAgICAgIFZlcmlmaWNhdGlvbi52ZXJpZnlDb250ZW50c0ZvclRhYmxlKGdlb3BhY2thZ2UsIHRhYmxlTmFtZSwgZnVuY3Rpb24oZXJyKSB7XG4gICAgICAgICAgICBpZiAoZXJyKSByZXR1cm4gZG9uZShlcnIpO1xuICAgICAgICAgICAgVmVyaWZpY2F0aW9uLnZlcmlmeUdlb21ldHJ5Q29sdW1uc0ZvclRhYmxlKGdlb3BhY2thZ2UsIHRhYmxlTmFtZSwgZnVuY3Rpb24oZXJyKSB7XG4gICAgICAgICAgICAgIGlmIChlcnIpIHJldHVybiBkb25lKGVycik7XG4gICAgICAgICAgICAgIGRvbmUoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGNyZWF0ZSBhIGZlYXR1cmUgdGFibGUgYW5kIHJlYWQgdGhlIGluZm9ybWF0aW9uIGFib3V0IGl0JywgZnVuY3Rpb24oZG9uZSkge1xuICAgIHZhciBnZW9tZXRyeUNvbHVtbnMgPSBTZXR1cEZlYXR1cmVUYWJsZS5idWlsZEdlb21ldHJ5Q29sdW1ucyh0YWJsZU5hbWUsICdnZW9tLnRlc3QnLCB3a3guVHlwZXMud2t0LlBvaW50KTtcbiAgICB2YXIgYm91bmRpbmdCb3ggPSBuZXcgQm91bmRpbmdCb3goLTE4MCwgMTgwLCAtODAsIDgwKTtcblxuICAgIHZhciBjb2x1bW5zID0gW107XG5cbiAgICBjb2x1bW5zLnB1c2goRmVhdHVyZUNvbHVtbi5jcmVhdGVQcmltYXJ5S2V5Q29sdW1uV2l0aEluZGV4QW5kTmFtZSgwLCAnaWQnKSk7XG4gICAgY29sdW1ucy5wdXNoKEZlYXR1cmVDb2x1bW4uY3JlYXRlQ29sdW1uV2l0aEluZGV4QW5kTWF4KDcsICd0ZXN0X3RleHRfbGltaXRlZC50ZXN0JywgRGF0YVR5cGVzLkdQS0dEYXRhVHlwZS5HUEtHX0RUX1RFWFQsIDUsIGZhbHNlLCBudWxsKSk7XG4gICAgY29sdW1ucy5wdXNoKEZlYXR1cmVDb2x1bW4uY3JlYXRlQ29sdW1uV2l0aEluZGV4QW5kTWF4KDgsICd0ZXN0X2Jsb2JfbGltaXRlZC50ZXN0JywgRGF0YVR5cGVzLkdQS0dEYXRhVHlwZS5HUEtHX0RUX0JMT0IsIDcsIGZhbHNlLCBudWxsKSk7XG4gICAgY29sdW1ucy5wdXNoKEZlYXR1cmVDb2x1bW4uY3JlYXRlR2VvbWV0cnlDb2x1bW4oMSwgJ2dlb20udGVzdCcsIHdreC5UeXBlcy53a3QuUG9pbnQsIGZhbHNlLCBudWxsKSk7XG4gICAgY29sdW1ucy5wdXNoKEZlYXR1cmVDb2x1bW4uY3JlYXRlQ29sdW1uV2l0aEluZGV4KDIsICd0ZXN0X3RleHQudGVzdCcsIERhdGFUeXBlcy5HUEtHRGF0YVR5cGUuR1BLR19EVF9URVhULCBmYWxzZSwgXCJkZWZhdWx0XCIpKTtcbiAgICBjb2x1bW5zLnB1c2goRmVhdHVyZUNvbHVtbi5jcmVhdGVDb2x1bW5XaXRoSW5kZXgoMywgJ3Rlc3RfcmVhbC50ZXN0JywgRGF0YVR5cGVzLkdQS0dEYXRhVHlwZS5HUEtHX0RUX1JFQUwsIGZhbHNlLCBudWxsKSk7XG4gICAgY29sdW1ucy5wdXNoKEZlYXR1cmVDb2x1bW4uY3JlYXRlQ29sdW1uV2l0aEluZGV4KDQsICd0ZXN0X2Jvb2xlYW4udGVzdCcsIERhdGFUeXBlcy5HUEtHRGF0YVR5cGUuR1BLR19EVF9CT09MRUFOLCBmYWxzZSwgbnVsbCkpO1xuICAgIGNvbHVtbnMucHVzaChGZWF0dXJlQ29sdW1uLmNyZWF0ZUNvbHVtbldpdGhJbmRleCg1LCAndGVzdF9ibG9iLnRlc3QnLCBEYXRhVHlwZXMuR1BLR0RhdGFUeXBlLkdQS0dfRFRfQkxPQiwgZmFsc2UsIG51bGwpKTtcbiAgICBjb2x1bW5zLnB1c2goRmVhdHVyZUNvbHVtbi5jcmVhdGVDb2x1bW5XaXRoSW5kZXgoNiwgJ3Rlc3RfaW50ZWdlci50ZXN0JywgRGF0YVR5cGVzLkdQS0dEYXRhVHlwZS5HUEtHX0RUX0lOVEVHRVIsIGZhbHNlLCA1KSk7XG5cbiAgICBnZW9wYWNrYWdlLmNyZWF0ZUZlYXR1cmVUYWJsZVdpdGhHZW9tZXRyeUNvbHVtbnMoZ2VvbWV0cnlDb2x1bW5zLCBib3VuZGluZ0JveCwgNDMyNiwgY29sdW1ucywgZnVuY3Rpb24oZXJyLCByZXN1bHQpIHtcbiAgICAgIHZhciByZWFkZXIgPSBuZXcgVXNlclRhYmxlUmVhZGVyKHRhYmxlTmFtZSk7XG4gICAgICByZWFkZXIucmVhZFRhYmxlKGdlb3BhY2thZ2UuY29ubmVjdGlvbiwgZnVuY3Rpb24oZXJyLCByZXN1bHQpIHtcbiAgICAgICAgdmFyIGNvbHVtbnMgPSByZXN1bHQuY29sdW1ucztcblxuICAgICAgICB2YXIgcGxhaW5PYmplY3QgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGNvbHVtbnMpKTtcbiAgICAgICAgcGxhaW5PYmplY3Quc2hvdWxkLmRlZXAuaW5jbHVkZS5tZW1iZXJzKFt7IGluZGV4OiAwLFxuICAgICAgICAgICBuYW1lOiAnaWQnLFxuICAgICAgICAgICBkYXRhVHlwZTogNSxcbiAgICAgICAgICAgbm90TnVsbDogdHJ1ZSxcbiAgICAgICAgICAgcHJpbWFyeUtleTogdHJ1ZSB9LFxuICAgICAgICAgeyBpbmRleDogMSxcbiAgICAgICAgICAgbmFtZTogJ2dlb20udGVzdCcsXG4gICAgICAgICAgIGRhdGFUeXBlOiAxMyxcbiAgICAgICAgICAgbm90TnVsbDogZmFsc2UsXG4gICAgICAgICAgIHByaW1hcnlLZXk6IGZhbHNlIH0sXG4gICAgICAgICB7IGluZGV4OiAyLFxuICAgICAgICAgICBuYW1lOiAndGVzdF90ZXh0LnRlc3QnLFxuICAgICAgICAgICBkYXRhVHlwZTogOSxcbiAgICAgICAgICAgbm90TnVsbDogZmFsc2UsXG4gICAgICAgICAgIGRlZmF1bHRWYWx1ZTogXCJcXCdkZWZhdWx0XFwnXCIsXG4gICAgICAgICAgIHByaW1hcnlLZXk6IGZhbHNlIH0sXG4gICAgICAgICB7IGluZGV4OiAzLFxuICAgICAgICAgICBuYW1lOiAndGVzdF9yZWFsLnRlc3QnLFxuICAgICAgICAgICBkYXRhVHlwZTogOCxcbiAgICAgICAgICAgbm90TnVsbDogZmFsc2UsXG4gICAgICAgICAgIHByaW1hcnlLZXk6IGZhbHNlIH0sXG4gICAgICAgICB7IGluZGV4OiA0LFxuICAgICAgICAgICBuYW1lOiAndGVzdF9ib29sZWFuLnRlc3QnLFxuICAgICAgICAgICBkYXRhVHlwZTogMCxcbiAgICAgICAgICAgbm90TnVsbDogZmFsc2UsXG4gICAgICAgICAgIHByaW1hcnlLZXk6IGZhbHNlIH0sXG4gICAgICAgICB7IGluZGV4OiA1LFxuICAgICAgICAgICBuYW1lOiAndGVzdF9ibG9iLnRlc3QnLFxuICAgICAgICAgICBkYXRhVHlwZTogMTAsXG4gICAgICAgICAgIG5vdE51bGw6IGZhbHNlLFxuICAgICAgICAgICBwcmltYXJ5S2V5OiBmYWxzZSB9LFxuICAgICAgICAgeyBpbmRleDogNixcbiAgICAgICAgICAgbmFtZTogJ3Rlc3RfaW50ZWdlci50ZXN0JyxcbiAgICAgICAgICAgZGF0YVR5cGU6IDUsXG4gICAgICAgICAgIG5vdE51bGw6IGZhbHNlLFxuICAgICAgICAgICBkZWZhdWx0VmFsdWU6ICc1JyxcbiAgICAgICAgICAgcHJpbWFyeUtleTogZmFsc2UgfSxcbiAgICAgICAgIHsgaW5kZXg6IDcsXG4gICAgICAgICAgIG5hbWU6ICd0ZXN0X3RleHRfbGltaXRlZC50ZXN0JyxcbiAgICAgICAgICAgZGF0YVR5cGU6IDksXG4gICAgICAgICAgIG1heDogNSxcbiAgICAgICAgICAgbm90TnVsbDogZmFsc2UsXG4gICAgICAgICAgIHByaW1hcnlLZXk6IGZhbHNlIH0sXG4gICAgICAgICB7IGluZGV4OiA4LFxuICAgICAgICAgICBuYW1lOiAndGVzdF9ibG9iX2xpbWl0ZWQudGVzdCcsXG4gICAgICAgICAgIGRhdGFUeXBlOiAxMCxcbiAgICAgICAgICAgbWF4OiA3LFxuICAgICAgICAgICBub3ROdWxsOiBmYWxzZSxcbiAgICAgICAgICAgcHJpbWFyeUtleTogZmFsc2UgfSBdKTtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdHZW9QYWNrYWdlIGZlYXR1cmUgQ1JVRCB0ZXN0cycsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICBiZWZvcmVFYWNoKGZ1bmN0aW9uKGRvbmUpIHtcbiAgICAgIHRlc3RTZXR1cC5kZWxldGVHZW9QYWNrYWdlKHRlc3RHZW9QYWNrYWdlLCBmdW5jdGlvbigpIHtcbiAgICAgICAgdGVzdFNldHVwLmNyZWF0ZUdlb1BhY2thZ2UodGVzdEdlb1BhY2thZ2UsIGZ1bmN0aW9uKGVyciwgZ3ApIHtcbiAgICAgICAgICBnZW9wYWNrYWdlID0gZ3A7XG5cbiAgICAgICAgICB2YXIgZ2VvbWV0cnlDb2x1bW5zID0gU2V0dXBGZWF0dXJlVGFibGUuYnVpbGRHZW9tZXRyeUNvbHVtbnModGFibGVOYW1lLCAnZ2VvbScsIHdreC5UeXBlcy53a3QuUG9pbnQpO1xuICAgICAgICAgIHZhciBib3VuZGluZ0JveCA9IG5ldyBCb3VuZGluZ0JveCgtMTgwLCAxODAsIC04MCwgODApO1xuXG4gICAgICAgICAgdmFyIGNvbHVtbnMgPSBbXTtcblxuICAgICAgICAgIGNvbHVtbnMucHVzaChGZWF0dXJlQ29sdW1uLmNyZWF0ZVByaW1hcnlLZXlDb2x1bW5XaXRoSW5kZXhBbmROYW1lKDAsICdpZCcpKTtcbiAgICAgICAgICBjb2x1bW5zLnB1c2goRmVhdHVyZUNvbHVtbi5jcmVhdGVDb2x1bW5XaXRoSW5kZXhBbmRNYXgoNywgJ3Rlc3RfdGV4dF9saW1pdGVkJywgRGF0YVR5cGVzLkdQS0dEYXRhVHlwZS5HUEtHX0RUX1RFWFQsIDUsIGZhbHNlLCBudWxsKSk7XG4gICAgICAgICAgY29sdW1ucy5wdXNoKEZlYXR1cmVDb2x1bW4uY3JlYXRlQ29sdW1uV2l0aEluZGV4QW5kTWF4KDgsICd0ZXN0X2Jsb2JfbGltaXRlZCcsIERhdGFUeXBlcy5HUEtHRGF0YVR5cGUuR1BLR19EVF9CTE9CLCA3LCBmYWxzZSwgbnVsbCkpO1xuICAgICAgICAgIGNvbHVtbnMucHVzaChGZWF0dXJlQ29sdW1uLmNyZWF0ZUdlb21ldHJ5Q29sdW1uKDEsICdnZW9tJywgd2t4LlR5cGVzLndrdC5Qb2ludCwgZmFsc2UsIG51bGwpKTtcbiAgICAgICAgICBjb2x1bW5zLnB1c2goRmVhdHVyZUNvbHVtbi5jcmVhdGVDb2x1bW5XaXRoSW5kZXgoMiwgJ3Rlc3RfdGV4dC50ZXN0JywgRGF0YVR5cGVzLkdQS0dEYXRhVHlwZS5HUEtHX0RUX1RFWFQsIGZhbHNlLCBcIlwiKSk7XG4gICAgICAgICAgY29sdW1ucy5wdXNoKEZlYXR1cmVDb2x1bW4uY3JlYXRlQ29sdW1uV2l0aEluZGV4KDMsICd0ZXN0X3JlYWwnLCBEYXRhVHlwZXMuR1BLR0RhdGFUeXBlLkdQS0dfRFRfUkVBTCwgZmFsc2UsIG51bGwpKTtcbiAgICAgICAgICBjb2x1bW5zLnB1c2goRmVhdHVyZUNvbHVtbi5jcmVhdGVDb2x1bW5XaXRoSW5kZXgoNCwgJ3Rlc3RfYm9vbGVhbicsIERhdGFUeXBlcy5HUEtHRGF0YVR5cGUuR1BLR19EVF9CT09MRUFOLCBmYWxzZSwgbnVsbCkpO1xuICAgICAgICAgIGNvbHVtbnMucHVzaChGZWF0dXJlQ29sdW1uLmNyZWF0ZUNvbHVtbldpdGhJbmRleCg1LCAndGVzdF9ibG9iJywgRGF0YVR5cGVzLkdQS0dEYXRhVHlwZS5HUEtHX0RUX0JMT0IsIGZhbHNlLCBudWxsKSk7XG4gICAgICAgICAgY29sdW1ucy5wdXNoKEZlYXR1cmVDb2x1bW4uY3JlYXRlQ29sdW1uV2l0aEluZGV4KDYsICd0ZXN0X2ludGVnZXInLCBEYXRhVHlwZXMuR1BLR0RhdGFUeXBlLkdQS0dfRFRfSU5URUdFUiwgZmFsc2UsIFwiXCIpKTtcblxuICAgICAgICAgIGdlb3BhY2thZ2UuY3JlYXRlRmVhdHVyZVRhYmxlV2l0aEdlb21ldHJ5Q29sdW1ucyhnZW9tZXRyeUNvbHVtbnMsIGJvdW5kaW5nQm94LCA0MzI2LCBjb2x1bW5zLCBmdW5jdGlvbihlcnIsIHJlc3VsdCkge1xuICAgICAgICAgICAgVmVyaWZpY2F0aW9uLnZlcmlmeUdlb21ldHJ5Q29sdW1ucyhnZW9wYWNrYWdlLCBmdW5jdGlvbihlcnIpIHtcbiAgICAgICAgICAgICAgaWYgKGVycikgcmV0dXJuIGRvbmUoZXJyKTtcbiAgICAgICAgICAgICAgVmVyaWZpY2F0aW9uLnZlcmlmeVRhYmxlRXhpc3RzKGdlb3BhY2thZ2UsIHRhYmxlTmFtZSwgZnVuY3Rpb24oZXJyKSB7XG4gICAgICAgICAgICAgICAgaWYgKGVycikgcmV0dXJuIGRvbmUoZXJyKTtcbiAgICAgICAgICAgICAgICBWZXJpZmljYXRpb24udmVyaWZ5Q29udGVudHNGb3JUYWJsZShnZW9wYWNrYWdlLCB0YWJsZU5hbWUsIGZ1bmN0aW9uKGVycikge1xuICAgICAgICAgICAgICAgICAgaWYgKGVycikgcmV0dXJuIGRvbmUoZXJyKTtcbiAgICAgICAgICAgICAgICAgIFZlcmlmaWNhdGlvbi52ZXJpZnlHZW9tZXRyeUNvbHVtbnNGb3JUYWJsZShnZW9wYWNrYWdlLCB0YWJsZU5hbWUsIGZ1bmN0aW9uKGVycikge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZXJyKSByZXR1cm4gZG9uZShlcnIpO1xuICAgICAgICAgICAgICAgICAgICBkb25lKCk7XG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgY3JlYXRlIGEgZmVhdHVyZScsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICAgIGdlb3BhY2thZ2UuZ2V0RmVhdHVyZURhb1dpdGhUYWJsZU5hbWUodGFibGVOYW1lLCBmdW5jdGlvbihlcnIsIGZlYXR1cmVEYW8pIHtcbiAgICAgICAgdmFyIGZlYXR1cmVSb3cgPSBmZWF0dXJlRGFvLm5ld1JvdygpO1xuICAgICAgICB2YXIgZ2VvbWV0cnlEYXRhID0gbmV3IEdlb21ldHJ5RGF0YSgpO1xuICAgICAgICBnZW9tZXRyeURhdGEuc2V0U3JzSWQoNDMyNik7XG4gICAgICAgIHZhciBwb2ludCA9IG5ldyB3a3guUG9pbnQoMSwgMik7XG4gICAgICAgIGdlb21ldHJ5RGF0YS5zZXRHZW9tZXRyeShwb2ludCk7XG4gICAgICAgIGZlYXR1cmVSb3cuc2V0R2VvbWV0cnkoZ2VvbWV0cnlEYXRhKTtcbiAgICAgICAgZmVhdHVyZVJvdy5zZXRWYWx1ZVdpdGhDb2x1bW5OYW1lKCd0ZXN0X3RleHQudGVzdCcsICdoZWxsbycpO1xuICAgICAgICBmZWF0dXJlUm93LnNldFZhbHVlV2l0aENvbHVtbk5hbWUoJ3Rlc3RfcmVhbCcsIDMuMCk7XG4gICAgICAgIGZlYXR1cmVSb3cuc2V0VmFsdWVXaXRoQ29sdW1uTmFtZSgndGVzdF9ib29sZWFuJywgdHJ1ZSk7XG4gICAgICAgIGZlYXR1cmVSb3cuc2V0VmFsdWVXaXRoQ29sdW1uTmFtZSgndGVzdF9ibG9iJywgbmV3IEJ1ZmZlcigndGVzdCcpKTtcbiAgICAgICAgZmVhdHVyZVJvdy5zZXRWYWx1ZVdpdGhDb2x1bW5OYW1lKCd0ZXN0X2ludGVnZXInLCA1KTtcbiAgICAgICAgZmVhdHVyZVJvdy5zZXRWYWx1ZVdpdGhDb2x1bW5OYW1lKCd0ZXN0X3RleHRfbGltaXRlZCcsICd0ZXN0dCcpO1xuICAgICAgICBmZWF0dXJlUm93LnNldFZhbHVlV2l0aENvbHVtbk5hbWUoJ3Rlc3RfYmxvYl9saW1pdGVkJywgbmV3IEJ1ZmZlcigndGVzdHRlcycpKTtcblxuICAgICAgICBmZWF0dXJlRGFvLmNyZWF0ZShmZWF0dXJlUm93LCBmdW5jdGlvbihlcnIsIHJlc3VsdCkge1xuICAgICAgICAgIGZlYXR1cmVEYW8uZ2V0Q291bnQoZnVuY3Rpb24oZXJyLCBjb3VudCkge1xuICAgICAgICAgICAgY291bnQuc2hvdWxkLmJlLmVxdWFsKDEpO1xuICAgICAgICAgICAgZmVhdHVyZURhby5xdWVyeUZvckFsbChmdW5jdGlvbihlcnIsIHJvd3MpIHtcbiAgICAgICAgICAgICAgdmFyIGZyID0gZmVhdHVyZURhby5nZXRGZWF0dXJlUm93KHJvd3NbMF0pO1xuICAgICAgICAgICAgICB2YXIgZ2VvbSA9IGZyLmdldEdlb21ldHJ5KCk7XG4gICAgICAgICAgICAgIGdlb20uZ2VvbWV0cnkueC5zaG91bGQuYmUuZXF1YWwoMSk7XG4gICAgICAgICAgICAgIGdlb20uZ2VvbWV0cnkueS5zaG91bGQuYmUuZXF1YWwoMik7XG4gICAgICAgICAgICAgIGZyLmdldFZhbHVlV2l0aENvbHVtbk5hbWUoJ3Rlc3RfdGV4dC50ZXN0Jykuc2hvdWxkLmJlLmVxdWFsKCdoZWxsbycpO1xuICAgICAgICAgICAgICBmci5nZXRWYWx1ZVdpdGhDb2x1bW5OYW1lKCd0ZXN0X3JlYWwnKS5zaG91bGQuYmUuZXF1YWwoMy4wKTtcbiAgICAgICAgICAgICAgZnIuZ2V0VmFsdWVXaXRoQ29sdW1uTmFtZSgndGVzdF9ib29sZWFuJykuc2hvdWxkLmJlLmVxdWFsKHRydWUpO1xuICAgICAgICAgICAgICBmci5nZXRWYWx1ZVdpdGhDb2x1bW5OYW1lKCd0ZXN0X2ludGVnZXInKS5zaG91bGQuYmUuZXF1YWwoNSk7XG4gICAgICAgICAgICAgIGZyLmdldFZhbHVlV2l0aENvbHVtbk5hbWUoJ3Rlc3RfYmxvYicpLnRvU3RyaW5nKCkuc2hvdWxkLmJlLmVxdWFsKCd0ZXN0Jyk7XG4gICAgICAgICAgICAgIGZyLmdldFZhbHVlV2l0aENvbHVtbk5hbWUoJ3Rlc3RfdGV4dF9saW1pdGVkJykuc2hvdWxkLmJlLmVxdWFsKCd0ZXN0dCcpO1xuICAgICAgICAgICAgICBmci5nZXRWYWx1ZVdpdGhDb2x1bW5OYW1lKCd0ZXN0X2Jsb2JfbGltaXRlZCcpLnRvU3RyaW5nKCkuc2hvdWxkLmJlLmVxdWFsKCd0ZXN0dGVzJyk7XG4gICAgICAgICAgICAgIGRvbmUoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ2RlbGV0ZSBmZWF0dXJlIHRlc3RzJywgZnVuY3Rpb24oZG9uZSkge1xuICAgICAgdmFyIGZlYXR1cmVEYW87XG5cbiAgICAgIGJlZm9yZUVhY2goZnVuY3Rpb24oZG9uZSkge1xuICAgICAgICBnZW9wYWNrYWdlLmdldEZlYXR1cmVEYW9XaXRoVGFibGVOYW1lKHRhYmxlTmFtZSwgZnVuY3Rpb24oZXJyLCBmZCkge1xuICAgICAgICAgIGZlYXR1cmVEYW8gPSBmZDtcbiAgICAgICAgICB2YXIgZmVhdHVyZVJvdyA9IGZlYXR1cmVEYW8ubmV3Um93KCk7XG4gICAgICAgICAgdmFyIGdlb21ldHJ5RGF0YSA9IG5ldyBHZW9tZXRyeURhdGEoKTtcbiAgICAgICAgICBnZW9tZXRyeURhdGEuc2V0U3JzSWQoNDMyNik7XG4gICAgICAgICAgdmFyIHBvaW50ID0gbmV3IHdreC5Qb2ludCgxLCAyKTtcbiAgICAgICAgICBnZW9tZXRyeURhdGEuc2V0R2VvbWV0cnkocG9pbnQpO1xuICAgICAgICAgIGZlYXR1cmVSb3cuc2V0R2VvbWV0cnkoZ2VvbWV0cnlEYXRhKTtcbiAgICAgICAgICBmZWF0dXJlUm93LnNldFZhbHVlV2l0aENvbHVtbk5hbWUoJ3Rlc3RfdGV4dC50ZXN0JywgJ2hlbGxvJyk7XG4gICAgICAgICAgZmVhdHVyZVJvdy5zZXRWYWx1ZVdpdGhDb2x1bW5OYW1lKCd0ZXN0X3JlYWwnLCAzLjApO1xuICAgICAgICAgIGZlYXR1cmVSb3cuc2V0VmFsdWVXaXRoQ29sdW1uTmFtZSgndGVzdF9ib29sZWFuJywgdHJ1ZSk7XG4gICAgICAgICAgZmVhdHVyZVJvdy5zZXRWYWx1ZVdpdGhDb2x1bW5OYW1lKCd0ZXN0X2Jsb2InLCBuZXcgQnVmZmVyKCd0ZXN0JykpO1xuICAgICAgICAgIGZlYXR1cmVSb3cuc2V0VmFsdWVXaXRoQ29sdW1uTmFtZSgndGVzdF9pbnRlZ2VyJywgNSk7XG4gICAgICAgICAgZmVhdHVyZVJvdy5zZXRWYWx1ZVdpdGhDb2x1bW5OYW1lKCd0ZXN0X3RleHRfbGltaXRlZCcsICd0ZXN0dCcpO1xuICAgICAgICAgIGZlYXR1cmVSb3cuc2V0VmFsdWVXaXRoQ29sdW1uTmFtZSgndGVzdF9ibG9iX2xpbWl0ZWQnLCBuZXcgQnVmZmVyKCd0ZXN0dGVzJykpO1xuXG4gICAgICAgICAgZmVhdHVyZURhby5jcmVhdGUoZmVhdHVyZVJvdywgZnVuY3Rpb24oZXJyLCByZXN1bHQpIHtcbiAgICAgICAgICAgIGZlYXR1cmVEYW8uZ2V0Q291bnQoZnVuY3Rpb24oZXJyLCBjb3VudCkge1xuICAgICAgICAgICAgICBjb3VudC5zaG91bGQuYmUuZXF1YWwoMSk7XG4gICAgICAgICAgICAgIGZlYXR1cmVEYW8ucXVlcnlGb3JBbGwoZnVuY3Rpb24oZXJyLCByb3dzKSB7XG4gICAgICAgICAgICAgICAgdmFyIGZyID0gZmVhdHVyZURhby5nZXRGZWF0dXJlUm93KHJvd3NbMF0pO1xuICAgICAgICAgICAgICAgIHZhciBnZW9tID0gZnIuZ2V0R2VvbWV0cnkoKTtcbiAgICAgICAgICAgICAgICBnZW9tLmdlb21ldHJ5Lnguc2hvdWxkLmJlLmVxdWFsKDEpO1xuICAgICAgICAgICAgICAgIGdlb20uZ2VvbWV0cnkueS5zaG91bGQuYmUuZXF1YWwoMik7XG4gICAgICAgICAgICAgICAgZnIuZ2V0VmFsdWVXaXRoQ29sdW1uTmFtZSgndGVzdF90ZXh0LnRlc3QnKS5zaG91bGQuYmUuZXF1YWwoJ2hlbGxvJyk7XG4gICAgICAgICAgICAgICAgZnIuZ2V0VmFsdWVXaXRoQ29sdW1uTmFtZSgndGVzdF9yZWFsJykuc2hvdWxkLmJlLmVxdWFsKDMuMCk7XG4gICAgICAgICAgICAgICAgZnIuZ2V0VmFsdWVXaXRoQ29sdW1uTmFtZSgndGVzdF9ib29sZWFuJykuc2hvdWxkLmJlLmVxdWFsKHRydWUpO1xuICAgICAgICAgICAgICAgIGZyLmdldFZhbHVlV2l0aENvbHVtbk5hbWUoJ3Rlc3RfaW50ZWdlcicpLnNob3VsZC5iZS5lcXVhbCg1KTtcbiAgICAgICAgICAgICAgICBmci5nZXRWYWx1ZVdpdGhDb2x1bW5OYW1lKCd0ZXN0X2Jsb2InKS50b1N0cmluZygpLnNob3VsZC5iZS5lcXVhbCgndGVzdCcpO1xuICAgICAgICAgICAgICAgIGZyLmdldFZhbHVlV2l0aENvbHVtbk5hbWUoJ3Rlc3RfdGV4dF9saW1pdGVkJykuc2hvdWxkLmJlLmVxdWFsKCd0ZXN0dCcpO1xuICAgICAgICAgICAgICAgIGZyLmdldFZhbHVlV2l0aENvbHVtbk5hbWUoJ3Rlc3RfYmxvYl9saW1pdGVkJykudG9TdHJpbmcoKS5zaG91bGQuYmUuZXF1YWwoJ3Rlc3R0ZXMnKTtcbiAgICAgICAgICAgICAgICBkb25lKCk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgZGVsZXRlIHRoZSBmZWF0dXJlJywgZnVuY3Rpb24oZG9uZSkge1xuICAgICAgICBmZWF0dXJlRGFvLmdldENvdW50KGZ1bmN0aW9uKGVyciwgY291bnQpIHtcbiAgICAgICAgICBjb3VudC5zaG91bGQuYmUuZXF1YWwoMSk7XG5cbiAgICAgICAgICBmZWF0dXJlRGFvLnF1ZXJ5Rm9yQWxsKGZ1bmN0aW9uKGVyciwgcm93cykge1xuICAgICAgICAgICAgdmFyIGZyID0gZmVhdHVyZURhby5nZXRGZWF0dXJlUm93KHJvd3NbMF0pO1xuICAgICAgICAgICAgZmVhdHVyZURhby5kZWxldGUoZnIsIGZ1bmN0aW9uKGVyciwgcmVzdWx0KSB7XG4gICAgICAgICAgICAgIGZlYXR1cmVEYW8uZ2V0Q291bnQoZnVuY3Rpb24oZXJyLCBjb3VudCkge1xuICAgICAgICAgICAgICAgIGNvdW50LnNob3VsZC5iZS5lcXVhbCgwKTtcbiAgICAgICAgICAgICAgICBkb25lKCk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG59KTtcbiIsInZhciBHZW9QYWNrYWdlID0gcmVxdWlyZSgnLi4vLi4vbGliL2dlb1BhY2thZ2UnKVxuICAsIEdlb1BhY2thZ2VDb25uZWN0aW9uID0gcmVxdWlyZSgnLi4vLi4vbGliL2RiL2dlb1BhY2thZ2VDb25uZWN0aW9uJylcbiAgLCBHZW9QYWNrYWdlVGlsZVJldHJpZXZlciA9IHJlcXVpcmUoJy4uLy4uL2xpYi90aWxlcy9yZXRyaWV2ZXInKVxuICAsIHByb2o0ID0gcmVxdWlyZSgncHJvajQnKVxuICAsIHNob3VsZCA9IHJlcXVpcmUoJ2NoYWknKS5zaG91bGQoKVxuICAsIHBhdGggPSByZXF1aXJlKCdwYXRoJylcbiAgLCBhc3luYyA9IHJlcXVpcmUoJ2FzeW5jJylcbiAgLCBmcyA9IHJlcXVpcmUoJ2ZzJyk7XG5cbmRlc2NyaWJlKCdHZW9QYWNrYWdlIHRlc3RzJywgZnVuY3Rpb24oKSB7XG5cbiAgaXQoJ3Nob3VsZCBnZXQgdGhlIGZlYXR1cmUgdGFibGUgbmFtZXMnLCBmdW5jdGlvbihkb25lKSB7XG4gICAgR2VvUGFja2FnZUNvbm5lY3Rpb24uY29ubmVjdChwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4nLCAnZml4dHVyZXMnLCAnZ2RhbF9zYW1wbGUuZ3BrZycpLCBmdW5jdGlvbihlcnIsIGNvbm5lY3Rpb24pIHtcbiAgICAgIHZhciBnZW9QYWNrYWdlID0gbmV3IEdlb1BhY2thZ2UoJycsICcnLCBjb25uZWN0aW9uKTtcbiAgICAgIGdlb1BhY2thZ2UuZ2V0RmVhdHVyZVRhYmxlcyhmdW5jdGlvbihlcnIsIHRhYmxlcykge1xuICAgICAgICBzaG91bGQubm90LmV4aXN0KGVycik7XG4gICAgICAgIHNob3VsZC5leGlzdCh0YWJsZXMpO1xuICAgICAgICB0YWJsZXMubGVuZ3RoLnNob3VsZC5iZS5lcXVhbCgxNik7XG4gICAgICAgIHRhYmxlcy5zaG91bGQuaGF2ZS5tZW1iZXJzKFtcbiAgICAgICAgICAgJ3BvaW50MmQnLFxuICAgICAgICAgICAnbGluZXN0cmluZzJkJyxcbiAgICAgICAgICAgJ3BvbHlnb24yZCcsXG4gICAgICAgICAgICdtdWx0aXBvaW50MmQnLFxuICAgICAgICAgICAnbXVsdGlsaW5lc3RyaW5nMmQnLFxuICAgICAgICAgICAnbXVsdGlwb2x5Z29uMmQnLFxuICAgICAgICAgICAnZ2VvbWNvbGxlY3Rpb24yZCcsXG4gICAgICAgICAgICdnZW9tZXRyeTJkJyxcbiAgICAgICAgICAgJ3BvaW50M2QnLFxuICAgICAgICAgICAnbGluZXN0cmluZzNkJyxcbiAgICAgICAgICAgJ3BvbHlnb24zZCcsXG4gICAgICAgICAgICdtdWx0aXBvaW50M2QnLFxuICAgICAgICAgICAnbXVsdGlsaW5lc3RyaW5nM2QnLFxuICAgICAgICAgICAnbXVsdGlwb2x5Z29uM2QnLFxuICAgICAgICAgICAnZ2VvbWNvbGxlY3Rpb24zZCcsXG4gICAgICAgICAgICdnZW9tZXRyeTNkJ1xuICAgICAgICBdKTtcbiAgICAgICAgY29ubmVjdGlvbi5jbG9zZSgpO1xuICAgICAgICBkb25lKCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBnZXQgdGhlIGZlYXR1cmVzJywgZnVuY3Rpb24oZG9uZSkge1xuICAgIEdlb1BhY2thZ2VDb25uZWN0aW9uLmNvbm5lY3QocGF0aC5qb2luKF9fZGlybmFtZSwgJy4uJywgJ2ZpeHR1cmVzJywgJ2dkYWxfc2FtcGxlLmdwa2cnKSwgZnVuY3Rpb24oZXJyLCBjb25uZWN0aW9uKSB7XG4gICAgICB2YXIgZ2VvUGFja2FnZSA9IG5ldyBHZW9QYWNrYWdlKCcnLCAnJywgY29ubmVjdGlvbik7XG4gICAgICBnZW9QYWNrYWdlLmdldEZlYXR1cmVEYW9XaXRoVGFibGVOYW1lKCdwb2ludDJkJywgZnVuY3Rpb24oZXJyLCBmZWF0dXJlRGFvKSB7XG4gICAgICAgIGZlYXR1cmVEYW8ucXVlcnlGb3JFYWNoKGZ1bmN0aW9uKGVyciwgcm93LCByb3dEb25lKSB7XG4gICAgICAgICAgdmFyIGN1cnJlbnRSb3cgPSBmZWF0dXJlRGFvLmdldEZlYXR1cmVSb3cocm93KTtcbiAgICAgICAgICB2YXIgZ2VvbWV0cnkgPSBjdXJyZW50Um93LmdldEdlb21ldHJ5KCk7XG4gICAgICAgICAgcm93RG9uZSgpO1xuICAgICAgICB9LCBmdW5jdGlvbihlcnIpIHtcbiAgICAgICAgICBjb25uZWN0aW9uLmNsb3NlKCk7XG4gICAgICAgICAgZG9uZSgpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGdldCB0aGUgZmVhdHVyZXMgZnJvbSBhbGwgdGFibGVzJywgZnVuY3Rpb24oZG9uZSkge1xuICAgIEdlb1BhY2thZ2VDb25uZWN0aW9uLmNvbm5lY3QocGF0aC5qb2luKF9fZGlybmFtZSwgJy4uJywgJ2ZpeHR1cmVzJywgJ2dkYWxfc2FtcGxlLmdwa2cnKSwgZnVuY3Rpb24oZXJyLCBjb25uZWN0aW9uKSB7XG4gICAgICB2YXIgZ2VvUGFja2FnZSA9IG5ldyBHZW9QYWNrYWdlKCcnLCAnJywgY29ubmVjdGlvbik7XG4gICAgICBnZW9QYWNrYWdlLmdldEZlYXR1cmVUYWJsZXMoZnVuY3Rpb24oZXJyLCB0YWJsZXMpIHtcbiAgICAgICAgYXN5bmMuZWFjaFNlcmllcyh0YWJsZXMsIGZ1bmN0aW9uKHRhYmxlLCBjYWxsYmFjaykge1xuICAgICAgICAgIGdlb1BhY2thZ2UuZ2V0RmVhdHVyZURhb1dpdGhUYWJsZU5hbWUodGFibGUsIGZ1bmN0aW9uKGVyciwgZmVhdHVyZURhbykge1xuICAgICAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soZXJyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZlYXR1cmVEYW8uZ2V0U3JzKGZ1bmN0aW9uKGVyciwgc3JzKSB7XG4gICAgICAgICAgICAgIGZlYXR1cmVEYW8ucXVlcnlGb3JFYWNoKGZ1bmN0aW9uKGVyciwgcm93LCByb3dEb25lKSB7XG4gICAgICAgICAgICAgICAgdmFyIGN1cnJlbnRSb3cgPSBmZWF0dXJlRGFvLmdldEZlYXR1cmVSb3cocm93KTtcbiAgICAgICAgICAgICAgICB2YXIgZ2VvbWV0cnkgPSBjdXJyZW50Um93LmdldEdlb21ldHJ5KCk7XG4gICAgICAgICAgICAgICAgaWYgKCFnZW9tZXRyeSkge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIHJvd0RvbmUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdmFyIGdlb20gPSBnZW9tZXRyeS5nZW9tZXRyeTtcbiAgICAgICAgICAgICAgICB2YXIgZ2VvSnNvbiA9IHByb2plY3RlZEpzb24gPSBnZW9tLnRvR2VvSlNPTigpO1xuICAgICAgICAgICAgICAgIHJvd0RvbmUoKTtcbiAgICAgICAgICAgICAgfSwgZnVuY3Rpb24oZXJyKSB7XG4gICAgICAgICAgICAgICAgY2FsbGJhY2soKTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSwgZnVuY3Rpb24oZXJyKSB7XG4gICAgICAgICAgY29ubmVjdGlvbi5jbG9zZSgpO1xuICAgICAgICAgIGRvbmUoZXJyKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBnZXQgdGhlIHRpbGUgdGFibGUgbmFtZXMnLCBmdW5jdGlvbihkb25lKSB7XG4gICAgR2VvUGFja2FnZUNvbm5lY3Rpb24uY29ubmVjdChwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4nLCAnZml4dHVyZXMnLCAncml2ZXJzLmdwa2cnKSwgZnVuY3Rpb24oZXJyLCBjb25uZWN0aW9uKSB7XG4gICAgICB2YXIgZ2VvUGFja2FnZSA9IG5ldyBHZW9QYWNrYWdlKCcnLCAnJywgY29ubmVjdGlvbik7XG4gICAgICBnZW9QYWNrYWdlLmdldFRpbGVUYWJsZXMoZnVuY3Rpb24oZXJyLCB0YWJsZXMpIHtcbiAgICAgICAgc2hvdWxkLm5vdC5leGlzdChlcnIpO1xuICAgICAgICBzaG91bGQuZXhpc3QodGFibGVzKTtcbiAgICAgICAgdGFibGVzLmxlbmd0aC5zaG91bGQuYmUuZXF1YWwoMSk7XG4gICAgICAgIHRhYmxlcy5zaG91bGQuaGF2ZS5tZW1iZXJzKFtcbiAgICAgICAgICAgJ1RJTEVTb3NtZHMnXG4gICAgICAgIF0pO1xuICAgICAgICBjb25uZWN0aW9uLmNsb3NlKCk7XG4gICAgICAgIGRvbmUoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGdldCB0aGUgc3JzIDM4NTcnLCBmdW5jdGlvbihkb25lKSB7XG4gICAgR2VvUGFja2FnZUNvbm5lY3Rpb24uY29ubmVjdChwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4nLCAnZml4dHVyZXMnLCAncml2ZXJzLmdwa2cnKSwgZnVuY3Rpb24oZXJyLCBjb25uZWN0aW9uKSB7XG4gICAgICB2YXIgZ2VvUGFja2FnZSA9IG5ldyBHZW9QYWNrYWdlKCcnLCAnJywgY29ubmVjdGlvbik7XG4gICAgICBnZW9QYWNrYWdlLmdldFNycygzODU3LCBmdW5jdGlvbihlcnIsIHNycykge1xuICAgICAgICBzaG91bGQubm90LmV4aXN0KGVycik7XG4gICAgICAgIHNob3VsZC5leGlzdChzcnMpO1xuICAgICAgICBzcnMuc3JzX2lkLnNob3VsZC5iZS5lcXVhbCgzODU3KTtcbiAgICAgICAgY29ubmVjdGlvbi5jbG9zZSgpO1xuICAgICAgICBkb25lKCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBnZXQgdGhlIGZlYXR1cmUgZGFvIGZyb20gdGhlIGNvbnRlbnRzJywgZnVuY3Rpb24oZG9uZSkge1xuICAgIEdlb1BhY2thZ2VDb25uZWN0aW9uLmNvbm5lY3QocGF0aC5qb2luKF9fZGlybmFtZSwgJy4uJywgJ2ZpeHR1cmVzJywgJ3JpdmVycy5ncGtnJyksIGZ1bmN0aW9uKGVyciwgY29ubmVjdGlvbikge1xuICAgICAgdmFyIGdlb1BhY2thZ2UgPSBuZXcgR2VvUGFja2FnZSgnJywgJycsIGNvbm5lY3Rpb24pO1xuICAgICAgdmFyIGRhbyA9IGdlb1BhY2thZ2UuZ2V0Q29udGVudHNEYW8oKTtcbiAgICAgIGRhby5xdWVyeUZvcklkT2JqZWN0KCdGRUFUVVJFU3JpdmVyc2RzJywgZnVuY3Rpb24oZXJyLCBjb250ZW50cykge1xuICAgICAgICBnZW9QYWNrYWdlLmdldEZlYXR1cmVEYW9XaXRoQ29udGVudHMoY29udGVudHMsIGZ1bmN0aW9uKGVyciwgZmVhdHVyZURhbykge1xuICAgICAgICAgIHNob3VsZC5ub3QuZXhpc3QoZXJyKTtcbiAgICAgICAgICBzaG91bGQuZXhpc3QoZmVhdHVyZURhbyk7XG4gICAgICAgICAgZmVhdHVyZURhby5nZXRHZW9tZXRyeVR5cGUoKS5zaG91bGQuYmUuZXF1YWwoJ0dFT01FVFJZJyk7XG4gICAgICAgICAgZmVhdHVyZURhby50YWJsZV9uYW1lLnNob3VsZC5iZS5lcXVhbCgnRkVBVFVSRVNyaXZlcnNkcycpO1xuICAgICAgICAgIGNvbm5lY3Rpb24uY2xvc2UoKTtcbiAgICAgICAgICBkb25lKCk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZ2V0IHRoZSBUSUxFIGRhbyBmcm9tIHRoZSBjb250ZW50cycsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICBHZW9QYWNrYWdlQ29ubmVjdGlvbi5jb25uZWN0KHBhdGguam9pbihfX2Rpcm5hbWUsICcuLicsICdmaXh0dXJlcycsICdyaXZlcnMuZ3BrZycpLCBmdW5jdGlvbihlcnIsIGNvbm5lY3Rpb24pIHtcbiAgICAgIHZhciBnZW9QYWNrYWdlID0gbmV3IEdlb1BhY2thZ2UoJycsICcnLCBjb25uZWN0aW9uKTtcbiAgICAgIHZhciBkYW8gPSBnZW9QYWNrYWdlLmdldENvbnRlbnRzRGFvKCk7XG4gICAgICBkYW8ucXVlcnlGb3JJZE9iamVjdCgnVElMRVNvc21kcycsIGZ1bmN0aW9uKGVyciwgY29udGVudHMpIHtcbiAgICAgICAgZ2VvUGFja2FnZS5nZXRUaWxlRGFvV2l0aENvbnRlbnRzKGNvbnRlbnRzLCBmdW5jdGlvbihlcnIsIHRpbGVEYW8pIHtcbiAgICAgICAgICBzaG91bGQubm90LmV4aXN0KGVycik7XG4gICAgICAgICAgc2hvdWxkLmV4aXN0KHRpbGVEYW8pO1xuICAgICAgICAgIHRpbGVEYW8udGFibGVfbmFtZS5zaG91bGQuYmUuZXF1YWwoJ1RJTEVTb3NtZHMnKTtcbiAgICAgICAgICBjb25uZWN0aW9uLmNsb3NlKCk7XG4gICAgICAgICAgZG9uZSgpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGdldCB0aGUgdGlsZXMnLCBmdW5jdGlvbihkb25lKSB7XG4gICAgR2VvUGFja2FnZUNvbm5lY3Rpb24uY29ubmVjdChwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4nLCAnZml4dHVyZXMnLCAncml2ZXJzLmdwa2cnKSwgZnVuY3Rpb24oZXJyLCBjb25uZWN0aW9uKSB7XG4gICAgICB2YXIgZ2VvUGFja2FnZSA9IG5ldyBHZW9QYWNrYWdlKCcnLCAnJywgY29ubmVjdGlvbik7XG4gICAgICBnZW9QYWNrYWdlLmdldFRpbGVUYWJsZXMoZnVuY3Rpb24oZXJyLCB0YWJsZXMpIHtcbiAgICAgICAgYXN5bmMuZWFjaFNlcmllcyh0YWJsZXMsIGZ1bmN0aW9uKHRhYmxlLCBjYWxsYmFjaykge1xuICAgICAgICAgIGdlb1BhY2thZ2UuZ2V0VGlsZURhb1dpdGhUYWJsZU5hbWUodGFibGUsIGZ1bmN0aW9uKGVyciwgdGlsZURhbykge1xuXG4gICAgICAgICAgICB2YXIgbWF4Wm9vbSA9IHRpbGVEYW8ubWF4Wm9vbTtcbiAgICAgICAgICAgIHZhciBtaW5ab29tID0gdGlsZURhby5taW5ab29tO1xuXG4gICAgICAgICAgICB2YXIgZ3ByID0gbmV3IEdlb1BhY2thZ2VUaWxlUmV0cmlldmVyKHRpbGVEYW8sIDI1NiwgMjU2KTtcbiAgICAgICAgICAgIGdwci5nZXRUaWxlKDAsIDAsIDEsIGZ1bmN0aW9uKGVyciwgdGlsZURhdGEpIHtcbiAgICAgICAgICAgICAgc2hvdWxkLmV4aXN0KHRpbGVEYXRhKTtcbiAgICAgICAgICAgICAgY2FsbGJhY2soKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9LCBmdW5jdGlvbihlcnIpIHtcbiAgICAgICAgICBjb25uZWN0aW9uLmNsb3NlKCk7XG4gICAgICAgICAgZG9uZShlcnIpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGdldCB0aGUgaW5mbyBmb3IgdGhlIHRhYmxlJywgZnVuY3Rpb24oZG9uZSkge1xuICAgIHRoaXMudGltZW91dCgzMDAwMCk7XG4gICAgR2VvUGFja2FnZUNvbm5lY3Rpb24uY29ubmVjdChwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4nLCAnZml4dHVyZXMnLCAncml2ZXJzLmdwa2cnKSwgZnVuY3Rpb24oZXJyLCBjb25uZWN0aW9uKSB7XG4gICAgICB2YXIgZ2VvUGFja2FnZSA9IG5ldyBHZW9QYWNrYWdlKCcnLCAnJywgY29ubmVjdGlvbik7XG4gICAgICBnZW9QYWNrYWdlLmdldEZlYXR1cmVEYW9XaXRoVGFibGVOYW1lKCdGRUFUVVJFU3JpdmVyc2RzJywgZnVuY3Rpb24oZXJyLCBkYW8pIHtcbiAgICAgICAgZ2VvUGFja2FnZS5nZXRJbmZvRm9yVGFibGUoZGFvLCBmdW5jdGlvbihlcnIsIGluZm8pIHtcbiAgICAgICAgICBzaG91bGQubm90LmV4aXN0KGVycik7XG4gICAgICAgICAgc2hvdWxkLmV4aXN0KGluZm8pO1xuICAgICAgICAgIGNvbm5lY3Rpb24uY2xvc2UoKTtcbiAgICAgICAgICBkb25lKGVycik7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZ2V0IHRoZSBpbmZvIGZvciB0aGUgSW1hZ2VyeSB0YWJsZScsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICBHZW9QYWNrYWdlQ29ubmVjdGlvbi5jb25uZWN0KHBhdGguam9pbihfX2Rpcm5hbWUsICcuLicsICdmaXh0dXJlcycsICczODU3Lmdwa2cnKSwgZnVuY3Rpb24oZXJyLCBjb25uZWN0aW9uKSB7XG4gICAgICB2YXIgZ2VvUGFja2FnZSA9IG5ldyBHZW9QYWNrYWdlKCcnLCAnJywgY29ubmVjdGlvbik7XG4gICAgICBnZW9QYWNrYWdlLmdldFRpbGVEYW9XaXRoVGFibGVOYW1lKCdpbWFnZXJ5JywgZnVuY3Rpb24oZXJyLCBkYW8pIHtcbiAgICAgICAgZ2VvUGFja2FnZS5nZXRJbmZvRm9yVGFibGUoZGFvLCBmdW5jdGlvbihlcnIsIGluZm8pIHtcbiAgICAgICAgICBzaG91bGQubm90LmV4aXN0KGVycik7XG4gICAgICAgICAgc2hvdWxkLmV4aXN0KGluZm8pO1xuICAgICAgICAgIGluZm8uc3JzLmlkLnNob3VsZC5iZS5lcXVhbCgzODU3KTtcbiAgICAgICAgICBjb25uZWN0aW9uLmNsb3NlKCk7XG4gICAgICAgICAgZG9uZShlcnIpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxufSk7XG4iLCJ2YXIgR2VvUGFja2FnZUNvbm5lY3Rpb24gPSByZXF1aXJlKCcuLi8uLi9saWIvZGIvZ2VvUGFja2FnZUNvbm5lY3Rpb24nKVxuICAsIEdlb1BhY2thZ2UgPSByZXF1aXJlKCcuLi8uLi9saWIvZ2VvUGFja2FnZScpXG4gICwgVmVyaWZpY2F0aW9uID0gcmVxdWlyZSgnLi4vZml4dHVyZXMvdmVyaWZpY2F0aW9uJylcbiAgLCBUaWxlVGFibGUgPSByZXF1aXJlKCcuLi8uLi9saWIvdGlsZXMvdXNlci90aWxlVGFibGUnKVxuICAsIFNldHVwRmVhdHVyZVRhYmxlID0gcmVxdWlyZSgnLi4vZml4dHVyZXMvc2V0dXBGZWF0dXJlVGFibGUnKVxuICAsIHRlc3RTZXR1cCA9IHJlcXVpcmUoJy4uL2ZpeHR1cmVzL3Rlc3RTZXR1cCcpXG4gICwgc2hvdWxkID0gcmVxdWlyZSgnY2hhaScpLnNob3VsZCgpXG4gICwgd2t4ID0gcmVxdWlyZSgnd2t4JylcbiAgLCBwYXRoID0gcmVxdWlyZSgncGF0aCcpXG4gICwgYXN5bmMgPSByZXF1aXJlKCdhc3luYycpO1xuXG5kZXNjcmliZSgnR2VvUGFja2FnZSBjcmVhdGUgdGVzdHMnLCBmdW5jdGlvbigpIHtcblxuICB2YXIgdGVzdEdlb1BhY2thZ2UgPSBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4nLCAndG1wJywgJ3Rlc3QuZ3BrZycpO1xuICB2YXIgZ2VvcGFja2FnZTtcblxuICBiZWZvcmVFYWNoKGZ1bmN0aW9uKGRvbmUpIHtcbiAgICB0ZXN0U2V0dXAuZGVsZXRlR2VvUGFja2FnZSh0ZXN0R2VvUGFja2FnZSwgZnVuY3Rpb24oKSB7XG4gICAgICB0ZXN0U2V0dXAuY3JlYXRlR2VvUGFja2FnZSh0ZXN0R2VvUGFja2FnZSwgZnVuY3Rpb24oZXJyLCBncCkge1xuICAgICAgICBnZW9wYWNrYWdlID0gZ3A7XG4gICAgICAgIGRvbmUoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBhZnRlckVhY2goZnVuY3Rpb24oZG9uZSkge1xuICAgIGdlb3BhY2thZ2UuY2xvc2UoKTtcbiAgICB0ZXN0U2V0dXAuZGVsZXRlR2VvUGFja2FnZSh0ZXN0R2VvUGFja2FnZSwgZG9uZSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgY3JlYXRlIHRoZSBnZW9tZXRyeSBjb2x1bW5zIHRhYmxlJywgZnVuY3Rpb24oZG9uZSkge1xuICAgIGdlb3BhY2thZ2UuY3JlYXRlR2VvbWV0cnlDb2x1bW5zVGFibGUoZnVuY3Rpb24oZXJyLCByZXN1bHQpIHtcbiAgICAgIHNob3VsZC5ub3QuZXhpc3QoZXJyKTtcbiAgICAgIFZlcmlmaWNhdGlvbi52ZXJpZnlHZW9tZXRyeUNvbHVtbnMoZ2VvcGFja2FnZSwgZG9uZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgbm90IGZhaWwgaWYgdGhlIGdlb21ldHJ5IGNvbHVtbnMgdGFibGUgYWxyZWFkeSBleGlzdHMnLCBmdW5jdGlvbihkb25lKSB7XG4gICAgZ2VvcGFja2FnZS5jcmVhdGVHZW9tZXRyeUNvbHVtbnNUYWJsZShmdW5jdGlvbihlcnIsIHJlc3VsdCkge1xuICAgICAgc2hvdWxkLm5vdC5leGlzdChlcnIpO1xuICAgICAgVmVyaWZpY2F0aW9uLnZlcmlmeUdlb21ldHJ5Q29sdW1ucyhnZW9wYWNrYWdlLCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgIGlmIChlcnIpIHJldHVybiBkb25lKGVycik7XG4gICAgICAgIGdlb3BhY2thZ2UuY3JlYXRlR2VvbWV0cnlDb2x1bW5zVGFibGUoZnVuY3Rpb24oZXJyLCByZXN1bHQpIHtcbiAgICAgICAgICBzaG91bGQubm90LmV4aXN0KGVycik7XG4gICAgICAgICAgVmVyaWZpY2F0aW9uLnZlcmlmeUdlb21ldHJ5Q29sdW1ucyhnZW9wYWNrYWdlLCBkb25lKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBjcmVhdGUgYSB1c2VyIGZlYXR1cmUgdGFibGUnLCBmdW5jdGlvbihkb25lKSB7XG4gICAgdmFyIGZlYXR1cmVUYWJsZSA9IFNldHVwRmVhdHVyZVRhYmxlLmJ1aWxkRmVhdHVyZVRhYmxlKCd0ZXN0X2ZlYXR1cmVzJywgJ2dlb20nLCB3a3guVHlwZXMud2t0LlBvaW50KTtcbiAgICBnZW9wYWNrYWdlLmNyZWF0ZUZlYXR1cmVUYWJsZShmZWF0dXJlVGFibGUsIGZ1bmN0aW9uKGVyciwgcmVzdWx0KSB7XG4gICAgICBWZXJpZmljYXRpb24udmVyaWZ5VGFibGVFeGlzdHMoZ2VvcGFja2FnZSwgJ3Rlc3RfZmVhdHVyZXMnLCBkb25lKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBjcmVhdGUgdGhlIHRpbGUgbWF0cml4IHNldCB0YWJsZScsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICBnZW9wYWNrYWdlLmNyZWF0ZVRpbGVNYXRyaXhTZXRUYWJsZShmdW5jdGlvbihlcnIsIHJlc3VsdCkge1xuICAgICAgc2hvdWxkLm5vdC5leGlzdChlcnIpO1xuICAgICAgVmVyaWZpY2F0aW9uLnZlcmlmeVRpbGVNYXRyaXhTZXQoZ2VvcGFja2FnZSwgZG9uZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgY3JlYXRlIHRoZSB0aWxlIG1hdHJpeCB0YWJsZScsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICBnZW9wYWNrYWdlLmNyZWF0ZVRpbGVNYXRyaXhUYWJsZShmdW5jdGlvbihlcnIsIHJlc3VsdCkge1xuICAgICAgc2hvdWxkLm5vdC5leGlzdChlcnIpO1xuICAgICAgVmVyaWZpY2F0aW9uLnZlcmlmeVRpbGVNYXRyaXgoZ2VvcGFja2FnZSwgZG9uZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgY3JlYXRlIGEgdXNlciB0aWxlIHRhYmxlJywgZnVuY3Rpb24oZG9uZSkge1xuICAgIHZhciBjb2x1bW5zID0gVGlsZVRhYmxlLmNyZWF0ZVJlcXVpcmVkQ29sdW1ucygpO1xuICAgIHZhciB0aWxlVGFibGUgPSBuZXcgVGlsZVRhYmxlKCd0ZXN0X3RpbGVzJywgY29sdW1ucyk7XG4gICAgZ2VvcGFja2FnZS5jcmVhdGVUaWxlVGFibGUodGlsZVRhYmxlLCBmdW5jdGlvbihlcnIsIHJlc3VsdCkge1xuICAgICAgVmVyaWZpY2F0aW9uLnZlcmlmeVRhYmxlRXhpc3RzKGdlb3BhY2thZ2UsICd0ZXN0X3RpbGVzJywgZG9uZSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgY3JlYXRlIHRoZSBkYXRhIGNvbHVtbnMgdGFibGUnLCBmdW5jdGlvbihkb25lKSB7XG4gICAgZ2VvcGFja2FnZS5jcmVhdGVEYXRhQ29sdW1ucyhmdW5jdGlvbihlcnIsIHJlc3VsdCkge1xuICAgICAgc2hvdWxkLm5vdC5leGlzdChlcnIpO1xuICAgICAgVmVyaWZpY2F0aW9uLnZlcmlmeURhdGFDb2x1bW5zKGdlb3BhY2thZ2UsIGRvbmUpO1xuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGNyZWF0ZSB0aGUgZGF0YSBjb2x1bW4gY29uc3RyYWludHMgdGFibGUnLCBmdW5jdGlvbihkb25lKSB7XG4gICAgZ2VvcGFja2FnZS5jcmVhdGVEYXRhQ29sdW1uQ29uc3RyYWludHNUYWJsZShmdW5jdGlvbihlcnIsIHJlc3VsdCkge1xuICAgICAgc2hvdWxkLm5vdC5leGlzdChlcnIpO1xuICAgICAgVmVyaWZpY2F0aW9uLnZlcmlmeURhdGFDb2x1bW5Db25zdHJhaW50cyhnZW9wYWNrYWdlLCBkb25lKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBjcmVhdGUgdGhlIG1ldGFkYXRhIHJlZmVyZW5jZSB0YWJsZScsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICBnZW9wYWNrYWdlLmNyZWF0ZU1ldGFkYXRhUmVmZXJlbmNlVGFibGUoZnVuY3Rpb24oZXJyLCByZXN1bHQpIHtcbiAgICAgIHNob3VsZC5ub3QuZXhpc3QoZXJyKTtcbiAgICAgIFZlcmlmaWNhdGlvbi52ZXJpZnlNZXRhZGF0YVJlZmVyZW5jZShnZW9wYWNrYWdlLCBkb25lKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBjcmVhdGUgdGhlIG1ldGFkYXRhIHRhYmxlJywgZnVuY3Rpb24oZG9uZSkge1xuICAgIGdlb3BhY2thZ2UuY3JlYXRlTWV0YWRhdGFUYWJsZShmdW5jdGlvbihlcnIsIHJlc3VsdCkge1xuICAgICAgc2hvdWxkLm5vdC5leGlzdChlcnIpO1xuICAgICAgVmVyaWZpY2F0aW9uLnZlcmlmeU1ldGFkYXRhKGdlb3BhY2thZ2UsIGRvbmUpO1xuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGNyZWF0ZSB0aGUgZXh0ZW5zaW9ucyB0YWJsZScsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICBnZW9wYWNrYWdlLmNyZWF0ZUV4dGVuc2lvblRhYmxlKGZ1bmN0aW9uKGVyciwgcmVzdWx0KSB7XG4gICAgICBzaG91bGQubm90LmV4aXN0KGVycik7XG4gICAgICBWZXJpZmljYXRpb24udmVyaWZ5RXh0ZW5zaW9ucyhnZW9wYWNrYWdlLCBkb25lKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBjcmVhdGUgdGhlIHRhYmxlIGluZGV4IHRhYmxlJywgZnVuY3Rpb24oZG9uZSkge1xuICAgIGdlb3BhY2thZ2UuY3JlYXRlVGFibGVJbmRleFRhYmxlKGZ1bmN0aW9uKGVyciwgcmVzdWx0KSB7XG4gICAgICBzaG91bGQubm90LmV4aXN0KGVycik7XG4gICAgICBWZXJpZmljYXRpb24udmVyaWZ5VGFibGVJbmRleChnZW9wYWNrYWdlLCBkb25lKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBjcmVhdGUgdGhlIGdlb21ldHJ5IGluZGV4IHRhYmxlJywgZnVuY3Rpb24oZG9uZSkge1xuICAgIGdlb3BhY2thZ2UuY3JlYXRlR2VvbWV0cnlJbmRleFRhYmxlKGZ1bmN0aW9uKGVyciwgcmVzdWx0KSB7XG4gICAgICBzaG91bGQubm90LmV4aXN0KGVycik7XG4gICAgICBWZXJpZmljYXRpb24udmVyaWZ5R2VvbWV0cnlJbmRleChnZW9wYWNrYWdlLCBkb25lKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgaXQuc2tpcCgnc2hvdWxkIGNyZWF0ZSB0aGUgZmVhdHVyZSB0aWxlIGxpbmsgdGFibGUnLCBmdW5jdGlvbihkb25lKSB7XG4gICAgZ2VvcGFja2FnZS5jcmVhdGVGZWF0dXJlVGlsZUxpbmtUYWJsZShmdW5jdGlvbihlcnIsIHJlc3VsdCkge1xuICAgICAgc2hvdWxkLm5vdC5leGlzdChlcnIpO1xuICAgICAgVmVyaWZpY2F0aW9uLnZlcmlmeUZlYXR1cmVUaWxlTGluayhnZW9wYWNrYWdlLCBkb25lKTtcbiAgICB9KTtcbiAgfSk7XG4gIC8vXG4gIC8vIGl0KCdzaG91bGQgY3JlYXRlIHRoZSByZXF1aXJlZCB0YWJsZXMnLCBmdW5jdGlvbihkb25lKSB7XG4gIC8vICAgdmFyIHRjID0gbmV3IFRhYmxlQ3JlYXRvcihnZW9wYWNrYWdlKTtcbiAgLy8gICB0Yy5jcmVhdGVSZXF1aXJlZChmdW5jdGlvbihlcnIsIHJlc3VsdCkge1xuICAvLyAgICAgYXN5bmMuc2VyaWVzKFtcbiAgLy8gICAgICAgVmVyaWZpY2F0aW9uLnZlcmlmeUNvbnRlbnRzLmJpbmQodGhpcywgZ2VvcGFja2FnZSksXG4gIC8vICAgICAgIFZlcmlmaWNhdGlvbi52ZXJpZnlTUlMuYmluZCh0aGlzLCBnZW9wYWNrYWdlKSxcbiAgLy8gICAgICAgZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAgLy8gICAgICAgICBnZW9wYWNrYWdlLmdldERhdGFiYXNlKCkuY291bnQoJ2dwa2dfc3BhdGlhbF9yZWZfc3lzJywgZnVuY3Rpb24oZXJyLCBjb3VudCkge1xuICAvLyAgICAgICAgICAgY291bnQuc2hvdWxkLmJlLmVxdWFsKDMpO1xuICAvLyAgICAgICAgICAgY2FsbGJhY2soKTtcbiAgLy8gICAgICAgICB9KTtcbiAgLy8gICAgICAgfVxuICAvLyAgICAgXSwgZnVuY3Rpb24oKSB7XG4gIC8vICAgICAgIGRvbmUoKTtcbiAgLy8gICAgIH0pO1xuICAvLyAgIH0pO1xuICAvLyB9KTtcbiAgLy9cblxuICAvL1xuXG5cbn0pO1xuIiwidmFyIEdlb1BhY2thZ2VNYW5hZ2VyID0gcmVxdWlyZSgnLi4vLi4vbGliL2dlb1BhY2thZ2VNYW5hZ2VyJylcbiAgLCBzaG91bGQgPSByZXF1aXJlKCdjaGFpJykuc2hvdWxkKClcbiAgLCBwYXRoID0gcmVxdWlyZSgncGF0aCcpO1xuXG5kZXNjcmliZSgnR2VvUGFja2FnZU1hbmFnZXIgdGVzdHMnLCBmdW5jdGlvbigpIHtcblxuICBpdCgnc2hvdWxkIG9wZW4gdGhlIGdlb3BhY2thZ2UnLCBmdW5jdGlvbihkb25lKSB7XG4gICAgdmFyIGZpbGVuYW1lID0gcGF0aC5qb2luKF9fZGlybmFtZSwgJy4uJywgJ2ZpeHR1cmVzJywgJ2dkYWxfc2FtcGxlLmdwa2cnKTtcbiAgICBHZW9QYWNrYWdlTWFuYWdlci5vcGVuKGZpbGVuYW1lLCBmdW5jdGlvbihlcnIsIGdwKSB7XG4gICAgICBzaG91bGQubm90LmV4aXN0KGVycik7XG4gICAgICBzaG91bGQuZXhpc3QoZ3ApO1xuICAgICAgc2hvdWxkLmV4aXN0KGdwLmdldERhdGFiYXNlKCkuZ2V0REJDb25uZWN0aW9uKCkpO1xuICAgICAgZ3AuZ2V0UGF0aCgpLnNob3VsZC5iZS5lcXVhbChmaWxlbmFtZSk7XG4gICAgICBncC5jbG9zZSgpO1xuICAgICAgZG9uZSgpO1xuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGZhaWwgdG8gb3BlbiB0aGUgZ2VvcGFja2FnZSBkdWUgdG8gdGhlIGV4dGVuc2lvbicsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICB2YXIgZmlsZW5hbWUgPSBwYXRoLmpvaW4oX19kaXJuYW1lLCBfX2ZpbGVuYW1lKTtcbiAgICBHZW9QYWNrYWdlTWFuYWdlci5vcGVuKGZpbGVuYW1lLCBmdW5jdGlvbihlcnIsIGdwKSB7XG4gICAgICBzaG91bGQuZXhpc3QoZXJyKTtcbiAgICAgIHNob3VsZC5ub3QuZXhpc3QoZ3ApO1xuICAgICAgZG9uZSgpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIiwidmFyIEdlb1BhY2thZ2VNYW5hZ2VyID0gcmVxdWlyZSgnLi4vLi4vbGliL2dlb1BhY2thZ2VNYW5hZ2VyJylcbiAgLCB0ZXN0U2V0dXAgPSByZXF1aXJlKCcuLi9maXh0dXJlcy90ZXN0U2V0dXAnKVxuICAsIHNob3VsZCA9IHJlcXVpcmUoJ2NoYWknKS5zaG91bGQoKVxuICAsIHBhdGggPSByZXF1aXJlKCdwYXRoJyk7XG5cbmRlc2NyaWJlKCdHZW9QYWNrYWdlTWFuYWdlciBDcmVhdGUgdGVzdHMnLCBmdW5jdGlvbigpIHtcblxuICB2YXIgdGVzdEdlb1BhY2thZ2UgPSBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4nLCAndG1wJywgJ3Rlc3QuZ3BrZycpO1xuICB2YXIgZ2VvcGFja2FnZTtcblxuICBiZWZvcmVFYWNoKGZ1bmN0aW9uKGRvbmUpIHtcbiAgICB0ZXN0U2V0dXAuZGVsZXRlR2VvUGFja2FnZSh0ZXN0R2VvUGFja2FnZSwgZnVuY3Rpb24oKSB7XG4gICAgICB0ZXN0U2V0dXAuY3JlYXRlR2VvUGFja2FnZSh0ZXN0R2VvUGFja2FnZSwgZnVuY3Rpb24oZXJyLCBncCkge1xuICAgICAgICBnZW9wYWNrYWdlID0gZ3A7XG4gICAgICAgIGRvbmUoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBhZnRlckVhY2goZnVuY3Rpb24oZG9uZSkge1xuICAgIGdlb3BhY2thZ2UuY2xvc2UoKTtcbiAgICB0ZXN0U2V0dXAuZGVsZXRlR2VvUGFja2FnZSh0ZXN0R2VvUGFja2FnZSwgZG9uZSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgbm90IGFsbG93IGEgZmlsZSB3aXRob3V0IGEgZ3BrZyBleHRlbnNpb24nLCBmdW5jdGlvbihkb25lKSB7XG4gICAgR2VvUGFja2FnZU1hbmFnZXIuY3JlYXRlKCcvdG1wL3Rlc3QuZycsIGZ1bmN0aW9uKGVyciwgZ2VvcGFja2FnZSkge1xuICAgICAgc2hvdWxkLmV4aXN0KGVycik7XG4gICAgICBzaG91bGQubm90LmV4aXN0KGdlb3BhY2thZ2UpO1xuICAgICAgZG9uZSgpO1xuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGNyZWF0ZSB0aGUgZ2VvcGFja2FnZSBmaWxlJywgZnVuY3Rpb24oZG9uZSkge1xuICAgIEdlb1BhY2thZ2VNYW5hZ2VyLmNyZWF0ZSh0ZXN0R2VvUGFja2FnZSwgZnVuY3Rpb24oZXJyLCBnZW9wYWNrYWdlKSB7XG4gICAgICBzaG91bGQubm90LmV4aXN0KGVycik7XG4gICAgICBzaG91bGQuZXhpc3QoZ2VvcGFja2FnZSk7XG4gICAgICBnZW9wYWNrYWdlLmdldEFwcGxpY2F0aW9uSWQoZnVuY3Rpb24oZXJyLCBhcHBsaWNhdGlvbklkKSB7XG4gICAgICAgIHZhciBidWZmID0gbmV3IEJ1ZmZlcig0KTtcbiAgICAgICAgYnVmZi53cml0ZVVJbnQzMkJFKGFwcGxpY2F0aW9uSWQpO1xuICAgICAgICB2YXIgaWRTdHJpbmcgPSBidWZmLnRvU3RyaW5nKCdhc2NpaScsIDAsIDQpO1xuICAgICAgICBpZFN0cmluZy5zaG91bGQuYmUuZXF1YWwoJ0dQMTAnKTtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG59KTtcbiIsInZhciBHZW9QYWNrYWdlQ29ubmVjdGlvbiA9IHJlcXVpcmUoJy4uLy4uL2xpYi9kYi9nZW9QYWNrYWdlQ29ubmVjdGlvbicpXG4gICwgR2VvUGFja2FnZSA9IHJlcXVpcmUoJy4uLy4uL2xpYi9nZW9QYWNrYWdlJylcbiAgLCBGZWF0dXJlQ29sdW1uID0gcmVxdWlyZSgnLi4vLi4vbGliL2ZlYXR1cmVzL3VzZXIvZmVhdHVyZUNvbHVtbicpXG4gICwgVmVyaWZpY2F0aW9uID0gcmVxdWlyZSgnLi4vZml4dHVyZXMvdmVyaWZpY2F0aW9uJylcbiAgLCBUaWxlVGFibGUgPSByZXF1aXJlKCcuLi8uLi9saWIvdGlsZXMvdXNlci90aWxlVGFibGUnKVxuICAsIFRpbGVCb3VuZGluZ0JveFV0aWxzID0gcmVxdWlyZSgnLi4vLi4vbGliL3RpbGVzL3RpbGVCb3VuZGluZ0JveFV0aWxzJylcbiAgLCBTZXR1cEZlYXR1cmVUYWJsZSA9IHJlcXVpcmUoJy4uL2ZpeHR1cmVzL3NldHVwRmVhdHVyZVRhYmxlJylcbiAgLCBUYWJsZUNyZWF0b3IgPSByZXF1aXJlKCcuLi8uLi9saWIvZGIvdGFibGVDcmVhdG9yJylcbiAgLCBCb3VuZGluZ0JveCA9IHJlcXVpcmUoJy4uLy4uL2xpYi9ib3VuZGluZ0JveCcpXG4gICwgRGF0YVR5cGVzID0gcmVxdWlyZSgnLi4vLi4vbGliL2RiL2RhdGFUeXBlcycpXG4gICwgR2VvbWV0cnlEYXRhID0gcmVxdWlyZSgnLi4vLi4vbGliL2dlb20vZ2VvbWV0cnlEYXRhJylcbiAgLCBzaG91bGQgPSByZXF1aXJlKCdjaGFpJykuc2hvdWxkKClcbiAgLCB3a3ggPSByZXF1aXJlKCd3a3gnKVxuICAsIHBhdGggPSByZXF1aXJlKCdwYXRoJylcbiAgLCBhc3luYyA9IHJlcXVpcmUoJ2FzeW5jJylcbiAgLCB0ZXN0U2V0dXAgPSByZXF1aXJlKCcuLi9maXh0dXJlcy90ZXN0U2V0dXAnKTtcblxuZGVzY3JpYmUoJ0dlb1BhY2thZ2UgVGlsZSB0YWJsZSBjcmVhdGUgdGVzdHMnLCBmdW5jdGlvbigpIHtcblxuICB2YXIgdGVzdEdlb1BhY2thZ2UgPSBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4nLCAndG1wJywgJ3Rlc3QuZ3BrZycpO1xuICB2YXIgdGFibGVOYW1lID0gJ3Rlc3RfdGlsZXMudGVzdCc7XG4gIHZhciBnZW9wYWNrYWdlO1xuXG4gIGJlZm9yZUVhY2goZnVuY3Rpb24oZG9uZSkge1xuICAgIHRlc3RTZXR1cC5kZWxldGVHZW9QYWNrYWdlKHRlc3RHZW9QYWNrYWdlLCBmdW5jdGlvbigpIHtcbiAgICAgIHRlc3RTZXR1cC5jcmVhdGVHZW9QYWNrYWdlKHRlc3RHZW9QYWNrYWdlLCBmdW5jdGlvbihlcnIsIGdwKSB7XG4gICAgICAgIGdlb3BhY2thZ2UgPSBncDtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGFmdGVyRWFjaChmdW5jdGlvbihkb25lKSB7XG4gICAgZ2VvcGFja2FnZS5jbG9zZSgpO1xuICAgIHRlc3RTZXR1cC5kZWxldGVHZW9QYWNrYWdlKHRlc3RHZW9QYWNrYWdlLCBkb25lKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBjcmVhdGUgYSB0aWxlIHRhYmxlJywgZnVuY3Rpb24oZG9uZSkge1xuXG4gICAgdmFyIHJlcXVpcmVkQ29sdW1ucyA9IFRpbGVUYWJsZS5jcmVhdGVSZXF1aXJlZENvbHVtbnMoKTtcbiAgICB2YXIgdGlsZVRhYmxlID0gbmV3IFRpbGVUYWJsZSh0YWJsZU5hbWUsIHJlcXVpcmVkQ29sdW1ucyk7XG5cbiAgICBnZW9wYWNrYWdlLmNyZWF0ZVRpbGVUYWJsZSh0aWxlVGFibGUsIGZ1bmN0aW9uKGVyciwgcmVzdWx0KSB7XG4gICAgICBWZXJpZmljYXRpb24udmVyaWZ5VGFibGVFeGlzdHMoZ2VvcGFja2FnZSwgdGFibGVOYW1lLCBmdW5jdGlvbihlcnIpIHtcbiAgICAgICAgaWYgKGVycikgcmV0dXJuIGRvbmUoZXJyKTtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgY3JlYXRlIGEgdGlsZSB0YWJsZSB3aXRoIHBhcmFtZXRlcnMnLCBmdW5jdGlvbihkb25lKSB7XG4gICAgdmFyIGNvbnRlbnRzQm91bmRpbmdCb3ggPSBuZXcgQm91bmRpbmdCb3goLTE4MCwgMTgwLCAtODAsIDgwKTtcbiAgICB2YXIgY29udGVudHNTcnNJZCA9IDQzMjY7XG4gICAgdmFyIHRpbGVNYXRyaXhTZXRCb3VuZGluZ0JveCA9IG5ldyBCb3VuZGluZ0JveCgtMTgwLCAxODAsIC04MCwgODApO1xuICAgIHZhciB0aWxlTWF0cml4U2V0U3JzSWQgPSA0MzI2O1xuICAgIGdlb3BhY2thZ2UuY3JlYXRlVGlsZVRhYmxlV2l0aFRhYmxlTmFtZSh0YWJsZU5hbWUsIGNvbnRlbnRzQm91bmRpbmdCb3gsIGNvbnRlbnRzU3JzSWQsIHRpbGVNYXRyaXhTZXRCb3VuZGluZ0JveCwgdGlsZU1hdHJpeFNldFNyc0lkLCBmdW5jdGlvbihlcnIsIHJlc3VsdCkge1xuICAgICAgVmVyaWZpY2F0aW9uLnZlcmlmeVRpbGVNYXRyaXhTZXQoZ2VvcGFja2FnZSwgZnVuY3Rpb24oZXJyKSB7XG4gICAgICAgIGlmIChlcnIpIHJldHVybiBkb25lKGVycik7XG4gICAgICAgIFZlcmlmaWNhdGlvbi52ZXJpZnlDb250ZW50c0ZvclRhYmxlKGdlb3BhY2thZ2UsIHRhYmxlTmFtZSwgZnVuY3Rpb24oZXJyKSB7XG4gICAgICAgICAgaWYgKGVycikgcmV0dXJuIGRvbmUoZXJyKTtcbiAgICAgICAgICBWZXJpZmljYXRpb24udmVyaWZ5VGFibGVFeGlzdHMoZ2VvcGFja2FnZSwgdGFibGVOYW1lLCBmdW5jdGlvbihlcnIpIHtcbiAgICAgICAgICAgIGRvbmUoZXJyKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ0dlb1BhY2thZ2UgdGlsZSBjcmVhdGUgdGlsZSBtYXRyaXggdGVzdHMnLCBmdW5jdGlvbihkb25lKSB7XG5cbiAgICB2YXIgdGlsZU1hdHJpeFNldDtcbiAgICB2YXIgdGlsZU1hdHJpeFNldEJvdW5kaW5nQm94ID0gbmV3IEJvdW5kaW5nQm94KC0yMDAzNzUwOC4zNDI3ODkyNDQsIDIwMDM3NTA4LjM0Mjc4OTI0NCwgLTIwMDM3NTA4LjM0Mjc4OTI0NCwgMjAwMzc1MDguMzQyNzg5MjQ0KTtcblxuICAgIGJlZm9yZUVhY2goZnVuY3Rpb24oZG9uZSkge1xuICAgICAgdmFyIGNvbnRlbnRzQm91bmRpbmdCb3ggPSBuZXcgQm91bmRpbmdCb3goLTE4MCwgMTgwLCAtODUuMDUxMTI4Nzc5ODA2NiwgODUuMDUxMTI4Nzc5ODA2Nik7XG4gICAgICB2YXIgY29udGVudHNTcnNJZCA9IDQzMjY7XG4gICAgICB2YXIgdGlsZU1hdHJpeFNldFNyc0lkID0gMzg1NztcbiAgICAgIGdlb3BhY2thZ2UuZ2V0U3BhdGlhbFJlZmVyZW5jZVN5c3RlbURhbygpLmNyZWF0ZVdlYk1lcmNhdG9yKGZ1bmN0aW9uKGVyciwgcmVzdWx0KSB7XG4gICAgICAgIGdlb3BhY2thZ2UuY3JlYXRlVGlsZVRhYmxlV2l0aFRhYmxlTmFtZSh0YWJsZU5hbWUsIGNvbnRlbnRzQm91bmRpbmdCb3gsIGNvbnRlbnRzU3JzSWQsIHRpbGVNYXRyaXhTZXRCb3VuZGluZ0JveCwgdGlsZU1hdHJpeFNldFNyc0lkLCBmdW5jdGlvbihlcnIsIHJlc3VsdCkge1xuICAgICAgICAgIHRpbGVNYXRyaXhTZXQgPSByZXN1bHQ7XG4gICAgICAgICAgVmVyaWZpY2F0aW9uLnZlcmlmeVRpbGVNYXRyaXhTZXQoZ2VvcGFja2FnZSwgZnVuY3Rpb24oZXJyKSB7XG4gICAgICAgICAgICBpZiAoZXJyKSByZXR1cm4gZG9uZShlcnIpO1xuICAgICAgICAgICAgVmVyaWZpY2F0aW9uLnZlcmlmeUNvbnRlbnRzRm9yVGFibGUoZ2VvcGFja2FnZSwgdGFibGVOYW1lLCBmdW5jdGlvbihlcnIpIHtcbiAgICAgICAgICAgICAgaWYgKGVycikgcmV0dXJuIGRvbmUoZXJyKTtcbiAgICAgICAgICAgICAgVmVyaWZpY2F0aW9uLnZlcmlmeVRhYmxlRXhpc3RzKGdlb3BhY2thZ2UsIHRhYmxlTmFtZSwgZnVuY3Rpb24oZXJyKSB7XG4gICAgICAgICAgICAgICAgZG9uZShlcnIpO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBjcmVhdGUgdGhlIHRpbGUgbWF0cml4IGZvciB0aGUgem9vbSBsZXZlbHMnLCBmdW5jdGlvbihkb25lKXtcblxuICAgICAgZ2VvcGFja2FnZS5jcmVhdGVTdGFuZGFyZFdlYk1lcmNhdG9yVGlsZU1hdHJpeCh0aWxlTWF0cml4U2V0Qm91bmRpbmdCb3gsIHRpbGVNYXRyaXhTZXQsIDAsIDMsIGZ1bmN0aW9uKGVyciwgcmVzdWx0KSB7XG4gICAgICAgIGRvbmUoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBhZGQgYWxsIG9mIHRoZSB0aWxlcyB0byB0aGUgdGlsZSBtYXRyaXgnLCBmdW5jdGlvbihkb25lKXtcblxuICAgICAgZ2VvcGFja2FnZS5jcmVhdGVTdGFuZGFyZFdlYk1lcmNhdG9yVGlsZU1hdHJpeCh0aWxlTWF0cml4U2V0Qm91bmRpbmdCb3gsIHRpbGVNYXRyaXhTZXQsIDAsIDMsIGZ1bmN0aW9uKGVyciwgcmVzdWx0KSB7XG5cbiAgICAgICAgYXN5bmMuZWFjaFNlcmllcyhbMCwgMSwgMiwgM10sIGZ1bmN0aW9uKHpvb20sIHpvb21Eb25lKSB7XG4gICAgICAgICAgdmFyIHRpbGVzID0gW107XG4gICAgICAgICAgdmFyIHRpbGVDb3VudCA9IE1hdGgucG93KDIsem9vbSk7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aWxlQ291bnQ7IGkrKykge1xuICAgICAgICAgICAgdGlsZXMucHVzaChpKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYXN5bmMuZWFjaFNlcmllcyh0aWxlcywgZnVuY3Rpb24oeFRpbGUsIHhEb25lKSB7XG4gICAgICAgICAgICBhc3luYy5lYWNoU2VyaWVzKHRpbGVzLCBmdW5jdGlvbih5VGlsZSwgeURvbmUpIHtcbiAgICAgICAgICAgICAgdGVzdFNldHVwLmxvYWRUaWxlKHBhdGguam9pbihfX2Rpcm5hbWUsICcuLicsICdmaXh0dXJlcycsICd0aWxlcycsIHpvb20udG9TdHJpbmcoKSwgeFRpbGUudG9TdHJpbmcoKSwgeVRpbGUudG9TdHJpbmcoKSsnLnBuZycpLCBmdW5jdGlvbihlcnIsIGltYWdlKSB7XG4gICAgICAgICAgICAgICAgZ2VvcGFja2FnZS5hZGRUaWxlKGltYWdlLCB0YWJsZU5hbWUsIHpvb20sIHlUaWxlLCB4VGlsZSwgZnVuY3Rpb24oZXJyLCByZXN1bHQpIHtcbiAgICAgICAgICAgICAgICAgIGRlbGV0ZSBpbWFnZTtcbiAgICAgICAgICAgICAgICAgIHlEb25lKCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSwgeERvbmUpO1xuICAgICAgICAgIH0sIHpvb21Eb25lKTtcbiAgICAgICAgfSwgZnVuY3Rpb24oZXJyKSB7XG4gICAgICAgICAgZ2VvcGFja2FnZS5nZXRUaWxlRGFvV2l0aFRhYmxlTmFtZSh0YWJsZU5hbWUsIGZ1bmN0aW9uKGVyciwgdGlsZURhbykge1xuICAgICAgICAgICAgdGlsZURhby5nZXRDb3VudChmdW5jdGlvbihlcnIsIHJlc3VsdCkge1xuICAgICAgICAgICAgICByZXN1bHQuc2hvdWxkLmJlLmVxdWFsKDg1KTtcbiAgICAgICAgICAgICAgZG9uZShlcnIpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdkZWxldGUgdGlsZSB0ZXN0cycsIGZ1bmN0aW9uKGRvbmUpIHtcblxuICAgIHZhciB0aWxlTWF0cml4U2V0O1xuICAgIHZhciB0aWxlTWF0cml4U2V0Qm91bmRpbmdCb3ggPSBuZXcgQm91bmRpbmdCb3goLTIwMDM3NTA4LjM0Mjc4OTI0NCwgMjAwMzc1MDguMzQyNzg5MjQ0LCAtMjAwMzc1MDguMzQyNzg5MjQ0LCAyMDAzNzUwOC4zNDI3ODkyNDQpO1xuXG4gICAgYmVmb3JlRWFjaChmdW5jdGlvbihkb25lKSB7XG4gICAgICB0aGlzLnRpbWVvdXQoNTAwMCk7XG4gICAgICB2YXIgY29udGVudHNCb3VuZGluZ0JveCA9IG5ldyBCb3VuZGluZ0JveCgtMTgwLCAxODAsIC04NS4wNTExMjg3Nzk4MDY2LCA4NS4wNTExMjg3Nzk4MDY2KTtcbiAgICAgIHZhciBjb250ZW50c1Nyc0lkID0gNDMyNjtcbiAgICAgIHZhciB0aWxlTWF0cml4U2V0U3JzSWQgPSAzODU3O1xuICAgICAgZ2VvcGFja2FnZS5nZXRTcGF0aWFsUmVmZXJlbmNlU3lzdGVtRGFvKCkuY3JlYXRlV2ViTWVyY2F0b3IoZnVuY3Rpb24oZXJyLCByZXN1bHQpIHtcbiAgICAgICAgZ2VvcGFja2FnZS5jcmVhdGVUaWxlVGFibGVXaXRoVGFibGVOYW1lKHRhYmxlTmFtZSwgY29udGVudHNCb3VuZGluZ0JveCwgY29udGVudHNTcnNJZCwgdGlsZU1hdHJpeFNldEJvdW5kaW5nQm94LCB0aWxlTWF0cml4U2V0U3JzSWQsIGZ1bmN0aW9uKGVyciwgcmVzdWx0KSB7XG4gICAgICAgICAgdGlsZU1hdHJpeFNldCA9IHJlc3VsdDtcbiAgICAgICAgICBWZXJpZmljYXRpb24udmVyaWZ5VGlsZU1hdHJpeFNldChnZW9wYWNrYWdlLCBmdW5jdGlvbihlcnIpIHtcbiAgICAgICAgICAgIGlmIChlcnIpIHJldHVybiBkb25lKGVycik7XG4gICAgICAgICAgICBWZXJpZmljYXRpb24udmVyaWZ5Q29udGVudHNGb3JUYWJsZShnZW9wYWNrYWdlLCB0YWJsZU5hbWUsIGZ1bmN0aW9uKGVycikge1xuICAgICAgICAgICAgICBpZiAoZXJyKSByZXR1cm4gZG9uZShlcnIpO1xuICAgICAgICAgICAgICBWZXJpZmljYXRpb24udmVyaWZ5VGFibGVFeGlzdHMoZ2VvcGFja2FnZSwgdGFibGVOYW1lLCBmdW5jdGlvbihlcnIpIHtcbiAgICAgICAgICAgICAgICBnZW9wYWNrYWdlLmNyZWF0ZVN0YW5kYXJkV2ViTWVyY2F0b3JUaWxlTWF0cml4KHRpbGVNYXRyaXhTZXRCb3VuZGluZ0JveCwgdGlsZU1hdHJpeFNldCwgMCwgMywgZnVuY3Rpb24oZXJyLCByZXN1bHQpIHtcblxuICAgICAgICAgICAgICAgICAgYXN5bmMuZWFjaFNlcmllcyhbMCwgMSwgMiwgM10sIGZ1bmN0aW9uKHpvb20sIHpvb21Eb25lKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB0aWxlcyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICB2YXIgdGlsZUNvdW50ID0gTWF0aC5wb3coMix6b29tKTtcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aWxlQ291bnQ7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICAgIHRpbGVzLnB1c2goaSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYXN5bmMuZWFjaFNlcmllcyh0aWxlcywgZnVuY3Rpb24oeFRpbGUsIHhEb25lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgYXN5bmMuZWFjaFNlcmllcyh0aWxlcywgZnVuY3Rpb24oeVRpbGUsIHlEb25lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXN0U2V0dXAubG9hZFRpbGUocGF0aC5qb2luKF9fZGlybmFtZSwgJy4uJywgJ2ZpeHR1cmVzJywgJ3RpbGVzJywgem9vbS50b1N0cmluZygpLCB4VGlsZS50b1N0cmluZygpLCB5VGlsZS50b1N0cmluZygpKycucG5nJyksIGZ1bmN0aW9uKGVyciwgaW1hZ2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ0FkZGluZyB0aWxlICVkLCAlZCwgJWQnLCB6b29tLCB4VGlsZSwgeVRpbGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBnZW9wYWNrYWdlLmFkZFRpbGUoaW1hZ2UsIHRhYmxlTmFtZSwgem9vbSwgeVRpbGUsIHhUaWxlLCBmdW5jdGlvbihlcnIsIHJlc3VsdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBpbWFnZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5RG9uZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgIH0sIHhEb25lKTtcbiAgICAgICAgICAgICAgICAgICAgfSwgem9vbURvbmUpO1xuICAgICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24oZXJyKSB7XG4gICAgICAgICAgICAgICAgICAgIGdlb3BhY2thZ2UuZ2V0VGlsZURhb1dpdGhUYWJsZU5hbWUodGFibGVOYW1lLCBmdW5jdGlvbihlcnIsIHRpbGVEYW8pIHtcbiAgICAgICAgICAgICAgICAgICAgICB0aWxlRGFvLmdldENvdW50KGZ1bmN0aW9uKGVyciwgcmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuc2hvdWxkLmJlLmVxdWFsKDg1KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRvbmUoZXJyKTtcbiAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZGVsZXRlIHRoZSB0aWxlcycsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICAgIGdlb3BhY2thZ2UuZ2V0VGlsZURhb1dpdGhUYWJsZU5hbWUodGFibGVOYW1lLCBmdW5jdGlvbihlcnIsIHRpbGVEYW8pIHtcbiAgICAgICAgdGlsZURhby5nZXRDb3VudChmdW5jdGlvbihlcnIsIHJlc3VsdCkge1xuICAgICAgICAgIHJlc3VsdC5zaG91bGQuYmUuZXF1YWwoODUpO1xuICAgICAgICAgIHRpbGVEYW8uZGVsZXRlVGlsZSgwLCAwLCAwLCBmdW5jdGlvbihlcnIsIHJlc3VsdCkge1xuICAgICAgICAgICAgcmVzdWx0LnNob3VsZC5iZS5lcXVhbCgxKTtcbiAgICAgICAgICAgIHRpbGVEYW8uZ2V0Q291bnQoZnVuY3Rpb24oZXJyLCByZXN1bHQpIHtcbiAgICAgICAgICAgICAgcmVzdWx0LnNob3VsZC5iZS5lcXVhbCg4NCk7XG4gICAgICAgICAgICAgIHRpbGVEYW8uZHJvcFRhYmxlKGZ1bmN0aW9uKGVyciwgcmVzdWx0KSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnNob3VsZC5iZS5lcXVhbCh0cnVlKTtcbiAgICAgICAgICAgICAgICB2YXIgdGlsZU1hdHJpeFNldERhbyA9IGdlb3BhY2thZ2UuZ2V0VGlsZU1hdHJpeFNldERhbygpO1xuICAgICAgICAgICAgICAgIHRpbGVNYXRyaXhTZXREYW8uZGVsZXRlKHRpbGVNYXRyaXhTZXQsIGZ1bmN0aW9uKGVyciwgcmVzdWx0cykge1xuICAgICAgICAgICAgICAgICAgcmVzdWx0cy5zaG91bGQuYmUuZXF1YWwoMSk7XG4gICAgICAgICAgICAgICAgICBkb25lKGVycik7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iLCJ2YXIgR2VvUGFja2FnZU1hbmFnZXIgPSByZXF1aXJlKCcuLi8uLi8uLi8uLi9saWIvZ2VvUGFja2FnZU1hbmFnZXInKVxuICAsIEZlYXR1cmVUaWxlcyA9IHJlcXVpcmUoJy4uLy4uLy4uLy4uL2xpYi90aWxlcy9mZWF0dXJlcycpXG4gICwgR2VvUGFja2FnZSA9IHJlcXVpcmUoJy4uLy4uLy4uLy4uJylcbiAgLCB0ZXN0U2V0dXAgPSByZXF1aXJlKCcuLi8uLi8uLi9maXh0dXJlcy90ZXN0U2V0dXAnKVxuICAsIGZzID0gcmVxdWlyZSgnZnMnKVxuICAsIGFzeW5jID0gcmVxdWlyZSgnYXN5bmMnKVxuICAsIHNob3VsZCA9IHJlcXVpcmUoJ2NoYWknKS5zaG91bGQoKVxuICAsIHBhdGggPSByZXF1aXJlKCdwYXRoJyk7XG5cbmRlc2NyaWJlKCdHZW9QYWNrYWdlIEZlYXR1cmVUaWxlcyB0ZXN0cycsIGZ1bmN0aW9uKCkge1xuXG4gIGRlc2NyaWJlKCdSaXZlcnMgR2VvUGFja2FnZSB0ZXN0cycsIGZ1bmN0aW9uKCkge1xuXG4gICAgdmFyIGdlb1BhY2thZ2U7XG4gICAgdmFyIGZlYXR1cmVEYW87XG5cbiAgICBiZWZvcmVFYWNoKCdzaG91bGQgb3BlbiB0aGUgZ2VvcGFja2FnZScsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICAgIHZhciBmaWxlbmFtZSA9IHBhdGguam9pbihfX2Rpcm5hbWUsICcuLicsICcuLicsICcuLicsICdmaXh0dXJlcycsICdyaXZlcnMuZ3BrZycpO1xuICAgICAgR2VvUGFja2FnZU1hbmFnZXIub3BlbihmaWxlbmFtZSwgZnVuY3Rpb24oZXJyLCBncCkge1xuICAgICAgICBnZW9QYWNrYWdlID0gZ3A7XG4gICAgICAgIHNob3VsZC5ub3QuZXhpc3QoZXJyKTtcbiAgICAgICAgc2hvdWxkLmV4aXN0KGdwKTtcbiAgICAgICAgc2hvdWxkLmV4aXN0KGdwLmdldERhdGFiYXNlKCkuZ2V0REJDb25uZWN0aW9uKCkpO1xuICAgICAgICBncC5nZXRQYXRoKCkuc2hvdWxkLmJlLmVxdWFsKGZpbGVuYW1lKTtcbiAgICAgICAgZ2VvUGFja2FnZS5nZXRGZWF0dXJlRGFvV2l0aFRhYmxlTmFtZSgnRkVBVFVSRVNyaXZlcnNkcycsIGZ1bmN0aW9uKGVyciwgcml2ZXJGZWF0dXJlRGFvKSB7XG4gICAgICAgICAgZmVhdHVyZURhbyA9IHJpdmVyRmVhdHVyZURhbztcbiAgICAgICAgICBkb25lKCk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBhZnRlckVhY2goJ3Nob3VsZCBjbG9zZSB0aGUgZ2VvcGFja2FnZScsIGZ1bmN0aW9uKCkge1xuICAgICAgZ2VvUGFja2FnZS5jbG9zZSgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBnZXQgdGhlIHg6IDEsIHk6IDAsIHo6IDEgdGlsZScsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICAgIHRoaXMudGltZW91dCgzMDAwMCk7XG4gICAgICB2YXIgZnQgPSBuZXcgRmVhdHVyZVRpbGVzKGZlYXR1cmVEYW8pO1xuICAgICAgZnQuZHJhd1RpbGUoMSwgMCwgMSwgZnVuY3Rpb24oZXJyLCBpbWFnZSkge1xuICAgICAgICB0ZXN0U2V0dXAuZGlmZkltYWdlcyhpbWFnZSwgcGF0aC5qb2luKF9fZGlybmFtZSwgJy4uJywnLi4nLCcuLicsICdmaXh0dXJlcycsJ2ZlYXR1cmV0aWxlcycsJzFfMV8wLnBuZycpLCBmdW5jdGlvbihlcnIsIGVxdWFsKSB7XG4gICAgICAgICAgZXF1YWwuc2hvdWxkLmJlLmVxdWFsKHRydWUpO1xuICAgICAgICAgIGRvbmUoKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZ2V0IHRoZSB4OiAxLCB5OiAwLCB6OiAxIHRpbGUgZnJvbSB0aGUgR2VvUGFja2FnZSBhcGknLCBmdW5jdGlvbihkb25lKSB7XG4gICAgICB0aGlzLnRpbWVvdXQoMzAwMDApO1xuICAgICAgY29uc29sZS50aW1lKCdHZW5lcmF0aW5nIG5vbiBpbmRleGVkIHRpbGVzJyk7XG4gICAgICBHZW9QYWNrYWdlLmdldEZlYXR1cmVUaWxlRnJvbVhZWihnZW9QYWNrYWdlLCAnRkVBVFVSRVNyaXZlcnNkcycsIDEsIDAsIDEsIDI1NiwgMjU2LCBmdW5jdGlvbihlcnIsIGRhdGEpIHtcbiAgICAgICAgaWYgKCFkYXRhKSByZXR1cm4gZG9uZShlcnIpO1xuICAgICAgICAvLyBmcy53cml0ZUZpbGUoJy90bXAvMV8xXzBfdW5pbmRleGVkLnBuZycsIGRhdGEsIGZ1bmN0aW9uKCkge1xuICAgICAgICAvLyAgIGRvbmUoZXJyKTtcbiAgICAgICAgLy8gfSk7XG4gICAgICAgIGNvbnNvbGUudGltZUVuZCgnR2VuZXJhdGluZyBub24gaW5kZXhlZCB0aWxlcycpO1xuICAgICAgICB0ZXN0U2V0dXAuZGlmZkltYWdlcyhkYXRhLCBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4nLCcuLicsJy4uJywnZml4dHVyZXMnLCdmZWF0dXJldGlsZXMnLCcxXzFfMC5wbmcnKSwgZnVuY3Rpb24oZXJyLCBlcXVhbCkge1xuICAgICAgICAgIGVxdWFsLnNob3VsZC5iZS5lcXVhbCh0cnVlKTtcbiAgICAgICAgICBkb25lKCk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGdldCB0aGUgeDogOCwgeTogMTIsIHo6IDUgdGlsZSBmcm9tIHRoZSBHZW9QYWNrYWdlIGFwaScsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICAgIHRoaXMudGltZW91dCgzMDAwMCk7XG4gICAgICBjb25zb2xlLnRpbWUoJ0dlbmVyYXRpbmcgbm9uIGluZGV4ZWQgdGlsZXMnKTtcbiAgICAgIEdlb1BhY2thZ2UuZ2V0RmVhdHVyZVRpbGVGcm9tWFlaKGdlb1BhY2thZ2UsICdGRUFUVVJFU3JpdmVyc2RzJywgOCwgMTIsIDUsIDI1NiwgMjU2LCBmdW5jdGlvbihlcnIsIGRhdGEpIHtcbiAgICAgICAgY29uc29sZS50aW1lRW5kKCdHZW5lcmF0aW5nIG5vbiBpbmRleGVkIHRpbGVzJyk7XG4gICAgICAgIGlmICghZGF0YSkgcmV0dXJuIGRvbmUoZXJyKTtcbiAgICAgICAgdGVzdFNldHVwLmRpZmZJbWFnZXMoZGF0YSwgcGF0aC5qb2luKF9fZGlybmFtZSwgJy4uJywnLi4nLCcuLicsJ2ZpeHR1cmVzJywnZmVhdHVyZXRpbGVzJywnNV84XzEyLnBuZycpLCBmdW5jdGlvbihlcnIsIGVxdWFsKSB7XG4gICAgICAgICAgZXF1YWwuc2hvdWxkLmJlLmVxdWFsKHRydWUpO1xuICAgICAgICAgIGRlbGV0ZSBkYXRhO1xuICAgICAgICAgIGRvbmUoKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ0luZGV4ZWQgUml2ZXJzIEdlb1BhY2thZ2UgdGVzdHMnLCBmdW5jdGlvbigpIHtcblxuICAgIHZhciBnZW9QYWNrYWdlO1xuICAgIHZhciBmZWF0dXJlRGFvO1xuXG4gICAgYmVmb3JlRWFjaCgnc2hvdWxkIG9wZW4gdGhlIGdlb3BhY2thZ2UnLCBmdW5jdGlvbihkb25lKSB7XG4gICAgICB2YXIgZmlsZW5hbWUgPSBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4nLCAnLi4nLCAnLi4nLCAnZml4dHVyZXMnLCAncml2ZXJzX2luZGV4ZWQuZ3BrZycpO1xuICAgICAgR2VvUGFja2FnZU1hbmFnZXIub3BlbihmaWxlbmFtZSwgZnVuY3Rpb24oZXJyLCBncCkge1xuICAgICAgICBnZW9QYWNrYWdlID0gZ3A7XG4gICAgICAgIHNob3VsZC5ub3QuZXhpc3QoZXJyKTtcbiAgICAgICAgc2hvdWxkLmV4aXN0KGdwKTtcbiAgICAgICAgc2hvdWxkLmV4aXN0KGdwLmdldERhdGFiYXNlKCkuZ2V0REJDb25uZWN0aW9uKCkpO1xuICAgICAgICBncC5nZXRQYXRoKCkuc2hvdWxkLmJlLmVxdWFsKGZpbGVuYW1lKTtcbiAgICAgICAgZ2VvUGFja2FnZS5nZXRGZWF0dXJlRGFvV2l0aFRhYmxlTmFtZSgncml2ZXJzJywgZnVuY3Rpb24oZXJyLCByaXZlckZlYXR1cmVEYW8pIHtcbiAgICAgICAgICBmZWF0dXJlRGFvID0gcml2ZXJGZWF0dXJlRGFvO1xuICAgICAgICAgIGRvbmUoKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGFmdGVyRWFjaCgnc2hvdWxkIGNsb3NlIHRoZSBnZW9wYWNrYWdlJywgZnVuY3Rpb24oKSB7XG4gICAgICBnZW9QYWNrYWdlLmNsb3NlKCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGdldCB0aGUgeDogMSwgeTogMCwgejogMSB0aWxlJywgZnVuY3Rpb24oZG9uZSkge1xuICAgICAgdGhpcy50aW1lb3V0KDMwMDAwKTtcbiAgICAgIHZhciBmdCA9IG5ldyBGZWF0dXJlVGlsZXMoZmVhdHVyZURhbyk7XG4gICAgICBmdC5kcmF3VGlsZSgxLCAwLCAxLCBmdW5jdGlvbihlcnIsIGltYWdlKSB7XG4gICAgICAgIHRlc3RTZXR1cC5kaWZmSW1hZ2VzKGltYWdlLCBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4nLCcuLicsJy4uJywnZml4dHVyZXMnLCdmZWF0dXJldGlsZXMnLCcxXzFfMC5wbmcnKSwgZnVuY3Rpb24oZXJyLCBlcXVhbCkge1xuICAgICAgICAgIGVxdWFsLnNob3VsZC5iZS5lcXVhbCh0cnVlKTtcbiAgICAgICAgICBkZWxldGUgaW1hZ2U7XG4gICAgICAgICAgZG9uZSgpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBnZXQgdGhlIHg6IDEsIHk6IDAsIHo6IDEgdGlsZSBmcm9tIHRoZSBHZW9QYWNrYWdlIGFwaScsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICAgIHRoaXMudGltZW91dCgzMDAwMCk7XG4gICAgICBjb25zb2xlLnRpbWUoJ2dlbmVyYXRpbmcgaW5kZXhlZCB0aWxlJyk7XG4gICAgICBHZW9QYWNrYWdlLmdldEZlYXR1cmVUaWxlRnJvbVhZWihnZW9QYWNrYWdlLCAncml2ZXJzJywgMSwgMCwgMSwgMjU2LCAyNTYsIGZ1bmN0aW9uKGVyciwgZGF0YSkge1xuICAgICAgICBjb25zb2xlLnRpbWVFbmQoJ2dlbmVyYXRpbmcgaW5kZXhlZCB0aWxlJyk7XG4gICAgICAgIGlmICghZGF0YSkgcmV0dXJuIGRvbmUoZXJyKTtcbiAgICAgICAgdGVzdFNldHVwLmRpZmZJbWFnZXMoZGF0YSwgcGF0aC5qb2luKF9fZGlybmFtZSwgJy4uJywnLi4nLCcuLicsJ2ZpeHR1cmVzJywnZmVhdHVyZXRpbGVzJywnMV8xXzAucG5nJyksIGZ1bmN0aW9uKGVyciwgZXF1YWwpIHtcbiAgICAgICAgICBlcXVhbC5zaG91bGQuYmUuZXF1YWwodHJ1ZSk7XG4gICAgICAgICAgZGVsZXRlIGRhdGE7XG4gICAgICAgICAgZG9uZSgpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBnZXQgdGhlIHg6IDAsIHk6IDAsIHo6IDAgdGlsZSBmcm9tIHRoZSBHZW9QYWNrYWdlIGFwaScsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICAgIHRoaXMudGltZW91dCgzMDAwMCk7XG4gICAgICBjb25zb2xlLnRpbWUoJ2dlbmVyYXRpbmcgaW5kZXhlZCB0aWxlJyk7XG4gICAgICBHZW9QYWNrYWdlLmdldEZlYXR1cmVUaWxlRnJvbVhZWihnZW9QYWNrYWdlLCAncml2ZXJzJywgMCwgMCwgMCwgMjU2LCAyNTYsIGZ1bmN0aW9uKGVyciwgZGF0YSkge1xuICAgICAgICBjb25zb2xlLnRpbWVFbmQoJ2dlbmVyYXRpbmcgaW5kZXhlZCB0aWxlJyk7XG4gICAgICAgIGlmICghZGF0YSkgcmV0dXJuIGRvbmUoZXJyKTtcbiAgICAgICAgLy8gZnMud3JpdGVGaWxlKCcvdG1wLzBfMF8wLnBuZycsIGRhdGEsIGZ1bmN0aW9uKCkge1xuICAgICAgICAvLyAgIGRvbmUoKTtcbiAgICAgICAgLy8gfSk7XG4gICAgICAgIHRlc3RTZXR1cC5kaWZmSW1hZ2VzKGRhdGEsIHBhdGguam9pbihfX2Rpcm5hbWUsICcuLicsJy4uJywnLi4nLCdmaXh0dXJlcycsJ2ZlYXR1cmV0aWxlcycsJzBfMF8wLnBuZycpLCBmdW5jdGlvbihlcnIsIGVxdWFsKSB7XG4gICAgICAgICAgZXF1YWwuc2hvdWxkLmJlLmVxdWFsKHRydWUpO1xuICAgICAgICAgIGRlbGV0ZSBkYXRhO1xuICAgICAgICAgIGRvbmUoKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZ2V0IHRoZSB4OiA4LCB5OiAxMiwgejogNSB0aWxlIGZyb20gdGhlIEdlb1BhY2thZ2UgYXBpJywgZnVuY3Rpb24oZG9uZSkge1xuICAgICAgdGhpcy50aW1lb3V0KDMwMDAwKTtcbiAgICAgIGNvbnNvbGUudGltZSgnZ2VuZXJhdGluZyBpbmRleGVkIHRpbGUnKTtcbiAgICAgIEdlb1BhY2thZ2UuZ2V0RmVhdHVyZVRpbGVGcm9tWFlaKGdlb1BhY2thZ2UsICdyaXZlcnMnLCA4LCAxMiwgNSwgMjU2LCAyNTYsIGZ1bmN0aW9uKGVyciwgZGF0YSkge1xuICAgICAgICBjb25zb2xlLnRpbWVFbmQoJ2dlbmVyYXRpbmcgaW5kZXhlZCB0aWxlJyk7XG4gICAgICAgIGlmICghZGF0YSkgcmV0dXJuIGRvbmUoZXJyKTtcbiAgICAgICAgdGVzdFNldHVwLmRpZmZJbWFnZXMoZGF0YSwgcGF0aC5qb2luKF9fZGlybmFtZSwgJy4uJywnLi4nLCcuLicsJ2ZpeHR1cmVzJywnZmVhdHVyZXRpbGVzJywnNV84XzEyLnBuZycpLCBmdW5jdGlvbihlcnIsIGVxdWFsKSB7XG4gICAgICAgICAgZXF1YWwuc2hvdWxkLmJlLmVxdWFsKHRydWUpO1xuICAgICAgICAgIGRlbGV0ZSBkYXRhO1xuICAgICAgICAgIGRvbmUoKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICB9KTtcbn0pO1xuIiwidmFyIEdlb1BhY2thZ2VNYW5hZ2VyID0gcmVxdWlyZSgnLi4vLi4vLi4vbGliL2dlb1BhY2thZ2VNYW5hZ2VyJylcbiAgLCBHZW9QYWNrYWdlVGlsZVJldHJpZXZlciA9IHJlcXVpcmUoJy4uLy4uLy4uL2xpYi90aWxlcy9yZXRyaWV2ZXInKVxuICAsIEdlb1BhY2thZ2UgPSByZXF1aXJlKCcuLi8uLi8uLicpXG4gICwgQm91bmRpbmdCb3ggPSByZXF1aXJlKCcuLi8uLi8uLi9saWIvYm91bmRpbmdCb3gnKVxuICAsIHRlc3RTZXR1cCA9IHJlcXVpcmUoJy4uLy4uL2ZpeHR1cmVzL3Rlc3RTZXR1cCcpXG4gICwgZnMgPSByZXF1aXJlKCdmcycpXG4gICwgYXN5bmMgPSByZXF1aXJlKCdhc3luYycpXG4gICwgc2hvdWxkID0gcmVxdWlyZSgnY2hhaScpLnNob3VsZCgpXG4gICwgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKTtcblxuZGVzY3JpYmUoJ0dlb1BhY2thZ2UgVGlsZSBSZXRyaWV2ZXIgdGVzdHMnLCBmdW5jdGlvbigpIHtcblxuICBkZXNjcmliZSgnUml2ZXJzIEdlb1BhY2thZ2UgdGVzdHMnLCBmdW5jdGlvbigpIHtcblxuICAgIHZhciBnZW9QYWNrYWdlO1xuICAgIHZhciB0aWxlRGFvO1xuXG4gICAgYmVmb3JlRWFjaCgnc2hvdWxkIG9wZW4gdGhlIGdlb3BhY2thZ2UnLCBmdW5jdGlvbihkb25lKSB7XG4gICAgICB2YXIgZmlsZW5hbWUgPSBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4nLCAnLi4nLCAnZml4dHVyZXMnLCAncml2ZXJzLmdwa2cnKTtcbiAgICAgIEdlb1BhY2thZ2VNYW5hZ2VyLm9wZW4oZmlsZW5hbWUsIGZ1bmN0aW9uKGVyciwgZ3ApIHtcbiAgICAgICAgZ2VvUGFja2FnZSA9IGdwO1xuICAgICAgICBzaG91bGQubm90LmV4aXN0KGVycik7XG4gICAgICAgIHNob3VsZC5leGlzdChncCk7XG4gICAgICAgIHNob3VsZC5leGlzdChncC5nZXREYXRhYmFzZSgpLmdldERCQ29ubmVjdGlvbigpKTtcbiAgICAgICAgZ3AuZ2V0UGF0aCgpLnNob3VsZC5iZS5lcXVhbChmaWxlbmFtZSk7XG4gICAgICAgIGdlb1BhY2thZ2UuZ2V0VGlsZURhb1dpdGhUYWJsZU5hbWUoJ1RJTEVTb3NtZHMnLCBmdW5jdGlvbihlcnIsIG9zbVRpbGVEYW8pIHtcbiAgICAgICAgICB0aWxlRGFvID0gb3NtVGlsZURhbztcbiAgICAgICAgICBkb25lKCk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBhZnRlckVhY2goJ3Nob3VsZCBjbG9zZSB0aGUgZ2VvcGFja2FnZScsIGZ1bmN0aW9uKCkge1xuICAgICAgZ2VvUGFja2FnZS5jbG9zZSgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBnZXQgdGhlIHdlYiBtZXJjYXRvciBib3VuZGluZyBib3gnLCBmdW5jdGlvbihkb25lKSB7XG4gICAgICB2YXIgZ3ByID0gbmV3IEdlb1BhY2thZ2VUaWxlUmV0cmlldmVyKHRpbGVEYW8sIDI1NiwgMjU2KTtcbiAgICAgIGdwci5nZXRXZWJNZXJjYXRvckJvdW5kaW5nQm94KGZ1bmN0aW9uKGVyciwgcmVzdWx0KSB7XG4gICAgICAgIHJlc3VsdC5taW5Mb25naXR1ZGUuc2hvdWxkLmJlLmVxdWFsKC0yMDAzNzUwOC4zNDI3ODkyNDQpO1xuICAgICAgICByZXN1bHQubWF4TG9uZ2l0dWRlLnNob3VsZC5iZS5lcXVhbCgyMDAzNzUwOC4zNDI3ODkyNDQpO1xuICAgICAgICByZXN1bHQubWluTGF0aXR1ZGUuc2hvdWxkLmJlLmVxdWFsKC0yMDAzNzUwOC4zNDI3ODkyNTUpO1xuICAgICAgICByZXN1bHQubWF4TGF0aXR1ZGUuc2hvdWxkLmJlLmVxdWFsKDIwMDM3NTA4LjM0Mjc4OTI0NCk7XG4gICAgICAgIGRvbmUoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBnZXQgYWxsIHRoZSB0aWxlcyBpbiB0aGUgYm91bmRpbmcgYm94JywgZnVuY3Rpb24oZG9uZSkge1xuICAgICAgR2VvUGFja2FnZS5nZXRUaWxlc0luQm91bmRpbmdCb3goZ2VvUGFja2FnZSwgJ1RJTEVTb3NtZHMnLCAxLCAtMTgwLCAxODAsIC04NSwgODUsIGZ1bmN0aW9uKGVyciwgdGlsZXMpIHtcbiAgICAgICAgdGlsZXMudGlsZXMubGVuZ3RoLnNob3VsZC5iZS5lcXVhbCg0KTtcbiAgICAgICAgZG9uZShlcnIpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGdldCB0aGUgeDogMiwgeTogMSwgejogMiB0aWxlJywgZnVuY3Rpb24oZG9uZSkge1xuICAgICAgdGhpcy50aW1lb3V0KDMwMDAwKTtcbiAgICAgIHZhciBncHIgPSBuZXcgR2VvUGFja2FnZVRpbGVSZXRyaWV2ZXIodGlsZURhbywgMjU2LCAyNTYpO1xuICAgICAgZ3ByLmdldFRpbGUoMiwxLDIsIGZ1bmN0aW9uKGVyciwgdGlsZSkge1xuICAgICAgICB0ZXN0U2V0dXAuZGlmZkltYWdlcyh0aWxlLCBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4nLCcuLicsJ2ZpeHR1cmVzJywndGlsZXMnLCcyJywnMicsJzEucG5nJyksIGZ1bmN0aW9uKGVyciwgZXF1YWwpIHtcbiAgICAgICAgICBlcXVhbC5zaG91bGQuYmUuZXF1YWwodHJ1ZSk7XG4gICAgICAgICAgZG9uZSgpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBwdWxsIGFsbCBvZiB0aGUgdGlsZXMgYW5kIGNvbXBhcmUgdGhlbScsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICAgIHRoaXMudGltZW91dCgzMDAwMCk7XG4gICAgICB2YXIgZ3ByID0gbmV3IEdlb1BhY2thZ2VUaWxlUmV0cmlldmVyKHRpbGVEYW8sIDI1NiwgMjU2KTtcblxuICAgICAgYXN5bmMuZWFjaFNlcmllcyhbMCwgMSwgMiwgM10sIGZ1bmN0aW9uKHpvb20sIHpvb21Eb25lKSB7XG4gICAgICAgIHZhciB0aWxlcyA9IFtdO1xuICAgICAgICB2YXIgdGlsZUNvdW50ID0gTWF0aC5wb3coMix6b29tKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aWxlQ291bnQ7IGkrKykge1xuICAgICAgICAgIHRpbGVzLnB1c2goaSk7XG4gICAgICAgIH1cbiAgICAgICAgYXN5bmMuZWFjaFNlcmllcyh0aWxlcywgZnVuY3Rpb24oeFRpbGUsIHhEb25lKSB7XG4gICAgICAgICAgYXN5bmMuZWFjaFNlcmllcyh0aWxlcywgZnVuY3Rpb24oeVRpbGUsIHlEb25lKSB7XG4gICAgICAgICAgICBncHIuZ2V0VGlsZSh4VGlsZSx5VGlsZSx6b29tLCBmdW5jdGlvbihlcnIsIHRpbGUpIHtcbiAgICAgICAgICAgICAgdGVzdFNldHVwLmRpZmZJbWFnZXModGlsZSwgcGF0aC5qb2luKF9fZGlybmFtZSwgJy4uJywgJy4uJywgJ2ZpeHR1cmVzJywgJ3RpbGVzJywgem9vbS50b1N0cmluZygpLCB4VGlsZS50b1N0cmluZygpLCB5VGlsZS50b1N0cmluZygpKycucG5nJyksIGZ1bmN0aW9uKGVyciwgZXF1YWwpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4nLCAnLi4nLCAnZml4dHVyZXMnLCAndGlsZXMnLCB6b29tLnRvU3RyaW5nKCksIHhUaWxlLnRvU3RyaW5nKCksIHlUaWxlLnRvU3RyaW5nKCkrJy5wbmcnKSArICcgcGFzc2VzPycsIGVxdWFsKTtcbiAgICAgICAgICAgICAgICBlcXVhbC5zaG91bGQuYmUuZXF1YWwodHJ1ZSk7XG4gICAgICAgICAgICAgICAgeURvbmUoKTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9LCB4RG9uZSk7XG4gICAgICAgIH0sIHpvb21Eb25lKTtcbiAgICAgIH0sIGZ1bmN0aW9uKGVycikge1xuICAgICAgICBkb25lKGVycik7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZ2V0IHRoZSB4OiAyLCB5OiAxLCB6OiAzIHRpbGUnLCBmdW5jdGlvbihkb25lKSB7XG4gICAgICB2YXIgbWF4Wm9vbSA9IHRpbGVEYW8ubWF4Wm9vbTtcbiAgICAgIHZhciBtaW5ab29tID0gdGlsZURhby5taW5ab29tO1xuXG4gICAgICB2YXIgZ3ByID0gbmV3IEdlb1BhY2thZ2VUaWxlUmV0cmlldmVyKHRpbGVEYW8sIDI1NiwgMjU2KTtcbiAgICAgIGdwci5nZXRUaWxlKDIsMSwzLCBmdW5jdGlvbihlcnIsIHRpbGUpIHtcbiAgICAgICAgc2hvdWxkLm5vdC5leGlzdChlcnIpO1xuICAgICAgICBzaG91bGQuZXhpc3QodGlsZSk7XG4gICAgICAgIGRvbmUoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBoYXZlIGEgdGlsZSBhdCBYWVogMCwgMCwgMScsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICAgIHZhciBtYXhab29tID0gdGlsZURhby5tYXhab29tO1xuICAgICAgdmFyIG1pblpvb20gPSB0aWxlRGFvLm1pblpvb207XG5cbiAgICAgIHZhciBncHIgPSBuZXcgR2VvUGFja2FnZVRpbGVSZXRyaWV2ZXIodGlsZURhbywgMjU2LCAyNTYpO1xuICAgICAgZ3ByLmhhc1RpbGUoMCwgMCwgMSwgZnVuY3Rpb24oZXJyLCBoYXNUaWxlKSB7XG4gICAgICAgIGhhc1RpbGUuc2hvdWxkLmJlLmVxdWFsKHRydWUpO1xuICAgICAgICBzaG91bGQubm90LmV4aXN0KGVycik7XG4gICAgICAgIGRvbmUoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBub3QgaGF2ZSBhIHRpbGUgYXQgLTEsIDAsIDAnLCBmdW5jdGlvbihkb25lKSB7XG4gICAgICB2YXIgbWF4Wm9vbSA9IHRpbGVEYW8ubWF4Wm9vbTtcbiAgICAgIHZhciBtaW5ab29tID0gdGlsZURhby5taW5ab29tO1xuXG4gICAgICB2YXIgZ3ByID0gbmV3IEdlb1BhY2thZ2VUaWxlUmV0cmlldmVyKHRpbGVEYW8sIDI1NiwgMjU2KTtcbiAgICAgIGdwci5oYXNUaWxlKC0xLCAwLCAwLCBmdW5jdGlvbihlcnIsIGhhc1RpbGUpIHtcbiAgICAgICAgaGFzVGlsZS5zaG91bGQuYmUuZXF1YWwoZmFsc2UpO1xuICAgICAgICBzaG91bGQubm90LmV4aXN0KGVycik7XG4gICAgICAgIGRvbmUoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBnZXQgYSB0aWxlIHNwZWNpZmllZCB3aXRoIHdnczg0IGNvb3JkaW5hdGVzJywgZnVuY3Rpb24oZG9uZSkge1xuICAgICAgdmFyIG1heFpvb20gPSB0aWxlRGFvLm1heFpvb207XG4gICAgICB2YXIgbWluWm9vbSA9IHRpbGVEYW8ubWluWm9vbTtcblxuICAgICAgdmFyIHdnczg0Qm91bmRpbmdCb3ggPSBuZXcgQm91bmRpbmdCb3goMCwgMTgwLCAwLCA4NS4wNTExMjg3Nzk4MDY1OSk7XG5cbiAgICAgIHZhciBncHIgPSBuZXcgR2VvUGFja2FnZVRpbGVSZXRyaWV2ZXIodGlsZURhbywgNTEyLCA1MTIpO1xuICAgICAgZ3ByLmdldFRpbGVXaXRoV2dzODRCb3VuZHMod2dzODRCb3VuZGluZ0JveCwgMiwgZnVuY3Rpb24oZXJyLCB0aWxlKSB7XG4gICAgICAgIHNob3VsZC5ub3QuZXhpc3QoZXJyKTtcbiAgICAgICAgc2hvdWxkLmV4aXN0KHRpbGUpO1xuICAgICAgICAvLyBmcy53cml0ZUZpbGVTeW5jKCcvdG1wL3dnczg0dGlsZS5wbmcnLCB0aWxlKTtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICAvLyBpdCgnc2hvdWxkIGdldCB0aGUgdGlsZSBtYXRyaXggZm9yIDEgdGlsZSBhbmQgbm8gem9vbSBzcGVjaWZpZWQnLCBmdW5jdGlvbihkb25lKSB7XG4gICAgLy8gICB2YXIgZ3ByID0gbmV3IEdlb1BhY2thZ2VUaWxlUmV0cmlldmVyKHRpbGVEYW8sIDI1NiwgMjU2KTtcbiAgICAvLyAgIHZhciB3Z3M4NEJvdW5kaW5nQm94ID0gbmV3IEJvdW5kaW5nQm94KDAsIDkwLCAwLCA2Ni41MTMyNjA0NDMxMTE4OCk7XG4gICAgLy8gICB2YXIgd2ViTWVyY2F0b3JCb3VuZGluZ0JveCA9IHdnczg0Qm91bmRpbmdCb3gucHJvamVjdEJvdW5kaW5nQm94KCdFUFNHOjQzMjYnLCAnRVBTRzozODU3Jyk7XG4gICAgLy9cbiAgICAvLyAgIGdwci5nZXRUaWxlTWF0cml4V2l0aFdlYk1lcmNhdG9yQm91bmRpbmdCb3god2ViTWVyY2F0b3JCb3VuZGluZ0JveCwgZnVuY3Rpb24oZXJyLCB0aWxlTWF0cml4KSB7XG4gICAgLy8gICAgIHNob3VsZC5ub3QuZXhpc3QoZXJyKTtcbiAgICAvLyAgICAgc2hvdWxkLmV4aXN0KHRpbGVNYXRyaXgpO1xuICAgIC8vICAgICB0aWxlTWF0cml4Lnpvb21MZXZlbC5zaG91bGQuYmUuZXF1YWwoMik7XG4gICAgLy8gICAgIGRvbmUoKTtcbiAgICAvLyAgIH0pO1xuICAgIC8vIH0pO1xuICAgIC8vXG4gICAgLy8gaXQoJ3Nob3VsZCBnZXQgdGhlIHRpbGUgbWF0cml4IGZvciAxIHRpbGUgYW5kIHpvb20gc3BlY2lmaWVkJywgZnVuY3Rpb24oZG9uZSkge1xuICAgIC8vICAgdmFyIGdwciA9IG5ldyBHZW9QYWNrYWdlVGlsZVJldHJpZXZlcih0aWxlRGFvLCA1MTIsIDUxMik7XG4gICAgLy8gICB2YXIgd2dzODRCb3VuZGluZ0JveCA9IG5ldyBCb3VuZGluZ0JveCgwLCA5MCwgMCwgNjYuNTEzMjYwNDQzMTExODgpO1xuICAgIC8vICAgdmFyIHdlYk1lcmNhdG9yQm91bmRpbmdCb3ggPSB3Z3M4NEJvdW5kaW5nQm94LnByb2plY3RCb3VuZGluZ0JveCgnRVBTRzo0MzI2JywgJ0VQU0c6Mzg1NycpO1xuICAgIC8vXG4gICAgLy8gICBncHIuZ2V0VGlsZU1hdHJpeFdpdGhXZWJNZXJjYXRvckJvdW5kaW5nQm94KHdlYk1lcmNhdG9yQm91bmRpbmdCb3gsIDMsIGZ1bmN0aW9uKGVyciwgdGlsZU1hdHJpeCkge1xuICAgIC8vICAgICBzaG91bGQubm90LmV4aXN0KGVycik7XG4gICAgLy8gICAgIHNob3VsZC5leGlzdCh0aWxlTWF0cml4KTtcbiAgICAvLyAgICAgdGlsZU1hdHJpeC56b29tTGV2ZWwuc2hvdWxkLmJlLmVxdWFsKDMpO1xuICAgIC8vICAgICBkb25lKCk7XG4gICAgLy8gICB9KTtcbiAgICAvLyB9KTtcblxuICB9KTtcblxuICBkZXNjcmliZSgnU2NhbGVkIGltYWdlcyBHZW9QYWNrYWdlIHRlc3RzJywgZnVuY3Rpb24oKSB7XG5cbiAgICB2YXIgZ2VvUGFja2FnZTtcbiAgICB2YXIgdGlsZURhbztcblxuICAgIGJlZm9yZUVhY2goJ3Nob3VsZCBvcGVuIHRoZSBnZW9wYWNrYWdlJywgZnVuY3Rpb24oZG9uZSkge1xuICAgICAgdmFyIGZpbGVuYW1lID0gcGF0aC5qb2luKF9fZGlybmFtZSwgJy4uJywgJy4uJywgJ2ZpeHR1cmVzJywgJzM4NTcuZ3BrZycpO1xuICAgICAgR2VvUGFja2FnZU1hbmFnZXIub3BlbihmaWxlbmFtZSwgZnVuY3Rpb24oZXJyLCBncCkge1xuICAgICAgICBnZW9QYWNrYWdlID0gZ3A7XG4gICAgICAgIHNob3VsZC5ub3QuZXhpc3QoZXJyKTtcbiAgICAgICAgc2hvdWxkLmV4aXN0KGdwKTtcbiAgICAgICAgc2hvdWxkLmV4aXN0KGdwLmdldERhdGFiYXNlKCkuZ2V0REJDb25uZWN0aW9uKCkpO1xuICAgICAgICBncC5nZXRQYXRoKCkuc2hvdWxkLmJlLmVxdWFsKGZpbGVuYW1lKTtcbiAgICAgICAgZ2VvUGFja2FnZS5nZXRUaWxlRGFvV2l0aFRhYmxlTmFtZSgnaW1hZ2VyeScsIGZ1bmN0aW9uKGVyciwgaW1hZ2VyeSkge1xuICAgICAgICAgIHRpbGVEYW8gPSBpbWFnZXJ5O1xuICAgICAgICAgIGRvbmUoKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZ2V0IHRoZSB4OiAwLCB5OiA0LCB6OiA0IHRpbGUnLCBmdW5jdGlvbihkb25lKSB7XG4gICAgICB0aGlzLnRpbWVvdXQoMCk7XG4gICAgICB2YXIgZ3ByID0gbmV3IEdlb1BhY2thZ2VUaWxlUmV0cmlldmVyKHRpbGVEYW8sIDI1NiwgMjU2KTtcbiAgICAgIGdwci5nZXRUaWxlKDAsIDQsIDQsIGZ1bmN0aW9uKGVyciwgdGlsZSkge1xuICAgICAgICB2YXIgZXhwZWN0ZWRQYXRoO1xuICAgICAgICBpZiAodHlwZW9mKHByb2Nlc3MpICE9PSAndW5kZWZpbmVkJyAmJiBwcm9jZXNzLnZlcnNpb24pIHtcbiAgICAgICAgICBleHBlY3RlZFBhdGggPSBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4nLCcuLicsJ2ZpeHR1cmVzJywndGlsZXMnLCdpbWFnZXJ5VGlsZS5wbmcnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBleHBlY3RlZFBhdGggPSBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4nLCcuLicsJ2ZpeHR1cmVzJywndGlsZXMnLCdpbWFnZXJ5VGlsZVdlYi5wbmcnKTtcbiAgICAgICAgfVxuICAgICAgICB0ZXN0U2V0dXAuZGlmZkltYWdlcyh0aWxlLCBleHBlY3RlZFBhdGgsIGZ1bmN0aW9uIChlcnIsIGltYWdlc0FyZVNhbWUpIHtcbiAgICAgICAgICBpbWFnZXNBcmVTYW1lLnNob3VsZC5iZS5lcXVhbCh0cnVlKTtcbiAgICAgICAgICBkb25lKGVycik7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGdldCB0aGUgeDogMCwgeTogNCwgejogNCB0aWxlIHdpdGhvdXQgc2NhbGluZycsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICAgIHRoaXMudGltZW91dCgwKTtcbiAgICAgIHZhciBncHIgPSBuZXcgR2VvUGFja2FnZVRpbGVSZXRyaWV2ZXIodGlsZURhbywgNDUwLCA0NTApO1xuICAgICAgZ3ByLmdldFRpbGUoMCwgNCwgNCwgZnVuY3Rpb24oZXJyLCB0aWxlKSB7XG4gICAgICAgIHRlc3RTZXR1cC5kaWZmSW1hZ2VzV2l0aERpbWVuc2lvbnModGlsZSwgcGF0aC5qb2luKF9fZGlybmFtZSwgJy4uJywnLi4nLCdmaXh0dXJlcycsJ3RpbGVzJywnNDUwdGlsZS5wbmcnKSwgNDUwLCA0NTAsIGZ1bmN0aW9uIChlcnIsIGltYWdlc0FyZVNhbWUpIHtcbiAgICAgICAgICBpbWFnZXNBcmVTYW1lLnNob3VsZC5iZS5lcXVhbCh0cnVlKTtcbiAgICAgICAgICBkb25lKGVycik7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCc0MzI2IHRpbGUgdGVzdHMnLCBmdW5jdGlvbigpIHtcbiAgICBiZWZvcmVFYWNoKCdzaG91bGQgb3BlbiB0aGUgZ2VvcGFja2FnZScsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICAgIHZhciBmaWxlbmFtZSA9IHBhdGguam9pbihfX2Rpcm5hbWUsICcuLicsICcuLicsICdmaXh0dXJlcycsICd3Z3M4NC5ncGtnJyk7XG4gICAgICBHZW9QYWNrYWdlTWFuYWdlci5vcGVuKGZpbGVuYW1lLCBmdW5jdGlvbihlcnIsIGdwKSB7XG4gICAgICAgIGdlb1BhY2thZ2UgPSBncDtcbiAgICAgICAgc2hvdWxkLm5vdC5leGlzdChlcnIpO1xuICAgICAgICBzaG91bGQuZXhpc3QoZ3ApO1xuICAgICAgICBzaG91bGQuZXhpc3QoZ3AuZ2V0RGF0YWJhc2UoKS5nZXREQkNvbm5lY3Rpb24oKSk7XG4gICAgICAgIGdwLmdldFBhdGgoKS5zaG91bGQuYmUuZXF1YWwoZmlsZW5hbWUpO1xuICAgICAgICBnZW9QYWNrYWdlLmdldFRpbGVEYW9XaXRoVGFibGVOYW1lKCdpbWFnZXJ5JywgZnVuY3Rpb24oZXJyLCBvc21UaWxlRGFvKSB7XG4gICAgICAgICAgdGlsZURhbyA9IG9zbVRpbGVEYW87XG4gICAgICAgICAgZG9uZSgpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBnZXQgdGhlIHdlYiBtZXJjYXRvciBib3VuZGluZyBib3gnLCBmdW5jdGlvbihkb25lKSB7XG4gICAgICB2YXIgZ3ByID0gbmV3IEdlb1BhY2thZ2VUaWxlUmV0cmlldmVyKHRpbGVEYW8sIDI1NiwgMjU2KTtcbiAgICAgIGdwci5nZXRXZWJNZXJjYXRvckJvdW5kaW5nQm94KGZ1bmN0aW9uKGVyciwgcmVzdWx0KSB7XG4gICAgICAgIHJlc3VsdC5taW5Mb25naXR1ZGUuc2hvdWxkLmJlLmVxdWFsKC0yMDAzNzUwOC4zNDI3ODkyNDQpO1xuICAgICAgICByZXN1bHQubWF4TG9uZ2l0dWRlLnNob3VsZC5iZS5lcXVhbCgtMTUwMjgxMzEuMjU3MDkxOTMyKTtcbiAgICAgICAgcmVzdWx0Lm1pbkxhdGl0dWRlLnNob3VsZC5iZS5lcXVhbCg1NjIxNTIxLjQ4NjE5MjA2Nik7XG4gICAgICAgIHJlc3VsdC5tYXhMYXRpdHVkZS5zaG91bGQuYmUuZXF1YWwoMjAwMzYwNTEuOTE5MzM2NzkpO1xuICAgICAgICBkb25lKCk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0LnNraXAoJ3Nob3VsZCBnZXQgdGhlIHg6IDAsIHk6IDAsIHo6IDQgdGlsZScsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICAgIHRoaXMudGltZW91dCgwKTtcbiAgICAgIHZhciBncHIgPSBuZXcgR2VvUGFja2FnZVRpbGVSZXRyaWV2ZXIodGlsZURhbywgMjU2LCAyNTYpO1xuICAgICAgZ3ByLmdldFRpbGUoMCwgMCwgNCwgZnVuY3Rpb24oZXJyLCB0aWxlKSB7XG4gICAgICAgIHZhciBleHBlY3RlZFBhdGg7XG4gICAgICAgIGlmICh0eXBlb2YocHJvY2VzcykgIT09ICd1bmRlZmluZWQnICYmIHByb2Nlc3MudmVyc2lvbikge1xuICAgICAgICAgIGV4cGVjdGVkUGF0aCA9IHBhdGguam9pbihfX2Rpcm5hbWUsICcuLicsJy4uJywnZml4dHVyZXMnLCd0aWxlcycsJ3JlcHJvamVjdFRpbGUucG5nJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZXhwZWN0ZWRQYXRoID0gcGF0aC5qb2luKF9fZGlybmFtZSwgJy4uJywnLi4nLCdmaXh0dXJlcycsJ3RpbGVzJywncmVwcm9qZWN0VGlsZVdlYi5wbmcnKTtcbiAgICAgICAgfVxuICAgICAgICB0ZXN0U2V0dXAuZGlmZkltYWdlcyh0aWxlLCBleHBlY3RlZFBhdGgsIGZ1bmN0aW9uIChlcnIsIGltYWdlc0FyZVNhbWUpIHtcbiAgICAgICAgICBpbWFnZXNBcmVTYW1lLnNob3VsZC5iZS5lcXVhbCh0cnVlKTtcbiAgICAgICAgICBkb25lKGVycik7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iLCJ2YXIgVGlsZUJvdW5kaW5nQm94VXRpbHMgPSByZXF1aXJlKCcuLi8uLi8uLi9saWIvdGlsZXMvdGlsZUJvdW5kaW5nQm94VXRpbHMnKVxuICAsIEJvdW5kaW5nQm94ID0gcmVxdWlyZSgnLi4vLi4vLi4vbGliL2JvdW5kaW5nQm94Jyk7XG5cbmRlc2NyaWJlKCdUaWxlQm91bmRpbmdCb3hVdGlscyB0ZXN0cycsIGZ1bmN0aW9uKCkge1xuXG4gIGl0KCdzaG91bGQgZ2V0IHRoZSBtYXggdGlsZSBjb2x1bW4gd2hlbiB0aGUgYm91bmRzIGFyZSBleGFjdGx5IG9uIGEgdGlsZSBib3JkZXInLCBmdW5jdGlvbihkb25lKSB7XG4gICAgdmFyIHRvdGFsQm94ID0gbmV3IEJvdW5kaW5nQm94KC0yMDAzNzUwOC4zNDI3ODkyNDQsIDIwMDM3NTA4LjM0Mjc4OTI0NCwgLTIwMDM3NTA4LjM0Mjc4OTI0NCwgMjAwMzc1MDguMzQyNzg5MjQ0KTtcbiAgICB2YXIgdGlsZU1hdHJpeFdpZHRoID0gNDtcbiAgICB2YXIgbG9uZ2l0dWRlID0gMTAwMTg3NTQuMTcxMzk0NjI7XG5cblxuICAgIHZhciBtYXhDb2x1bW4gPSBUaWxlQm91bmRpbmdCb3hVdGlscy5nZXRUaWxlQ29sdW1uV2l0aFRvdGFsQm91bmRpbmdCb3godG90YWxCb3gsIHRpbGVNYXRyaXhXaWR0aCwgbG9uZ2l0dWRlLCB0cnVlKTtcbiAgICBtYXhDb2x1bW4uc2hvdWxkLmJlLmVxdWFsKDIpO1xuICAgIGRvbmUoKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBnZXQgdGhlIG1heCB0aWxlIGNvbHVtbiB3aGVuIHRoZSBib3VuZHMgYXJlIG5vdCBleGFjdGx5IG9uIGEgdGlsZSBib3JkZXInLCBmdW5jdGlvbihkb25lKSB7XG4gICAgdmFyIHRvdGFsQm94ID0gbmV3IEJvdW5kaW5nQm94KC0yMDAzNzUwOC4zNDI3ODkyNDQsIDIwMDM3NTA4LjM0Mjc4OTI0NCwgLTIwMDM3NTA4LjM0Mjc4OTI0NCwgMjAwMzc1MDguMzQyNzg5MjQ0KTtcbiAgICB2YXIgdGlsZU1hdHJpeFdpZHRoID0gNDtcbiAgICB2YXIgbG9uZ2l0dWRlID0gMTAwMTg3NTUuMTcxMzk0NjI7XG5cblxuICAgIHZhciBtYXhDb2x1bW4gPSBUaWxlQm91bmRpbmdCb3hVdGlscy5nZXRUaWxlQ29sdW1uV2l0aFRvdGFsQm91bmRpbmdCb3godG90YWxCb3gsIHRpbGVNYXRyaXhXaWR0aCwgbG9uZ2l0dWRlLCB0cnVlKTtcbiAgICBtYXhDb2x1bW4uc2hvdWxkLmJlLmVxdWFsKDMpO1xuICAgIGRvbmUoKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBnZXQgdGhlIG1pbiB0aWxlIHJvdyB3aGVuIHRoZSBib3VuZHMgYXJlIGV4YWN0bHkgb24gYSB0aWxlIGJvcmRlcicsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICB2YXIgdG90YWxCb3ggPSBuZXcgQm91bmRpbmdCb3goLTIwMDM3NTA4LjM0Mjc4OTI0NCwgMjAwMzc1MDguMzQyNzg5MjQ0LCAtMjAwMzc1MDguMzQyNzg5MjQ0LCAyMDAzNzUwOC4zNDI3ODkyNDQpO1xuICAgIHZhciB0aWxlTWF0cml4SGVpZ2h0ID0gNDtcbiAgICB2YXIgbGF0aXR1ZGUgPSAxMDAxODc1NC4xNzEzOTQ2MjtcblxuXG4gICAgdmFyIG1pblJvdyA9IFRpbGVCb3VuZGluZ0JveFV0aWxzLmdldFRpbGVSb3dXaXRoVG90YWxCb3VuZGluZ0JveCh0b3RhbEJveCwgdGlsZU1hdHJpeEhlaWdodCwgbGF0aXR1ZGUsIHRydWUpO1xuICAgIG1pblJvdy5zaG91bGQuYmUuZXF1YWwoMSk7XG4gICAgZG9uZSgpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGdldCB0aGUgbWluIHRpbGUgcm93IHdoZW4gdGhlIGJvdW5kcyBhcmUgbm90IGV4YWN0bHkgb24gYSB0aWxlIGJvcmRlcicsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICB2YXIgdG90YWxCb3ggPSBuZXcgQm91bmRpbmdCb3goLTIwMDM3NTA4LjM0Mjc4OTI0NCwgMjAwMzc1MDguMzQyNzg5MjQ0LCAtMjAwMzc1MDguMzQyNzg5MjQ0LCAyMDAzNzUwOC4zNDI3ODkyNDQpO1xuICAgIHZhciB0aWxlTWF0cml4SGVpZ2h0ID0gNDtcbiAgICB2YXIgbGF0aXR1ZGUgPSAxMDAxODc1NS4xNzEzOTQ2MjtcblxuXG4gICAgdmFyIG1pblJvdyA9IFRpbGVCb3VuZGluZ0JveFV0aWxzLmdldFRpbGVSb3dXaXRoVG90YWxCb3VuZGluZ0JveCh0b3RhbEJveCwgdGlsZU1hdHJpeEhlaWdodCwgbGF0aXR1ZGUsIHRydWUpO1xuICAgIG1pblJvdy5zaG91bGQuYmUuZXF1YWwoMCk7XG4gICAgZG9uZSgpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGRldGVybWluZSB0aGUgcG9zaXRpb24gYW5kIHNjYWxlIGZvciBzYW1lIGJvdW5kcyBhbmQgMnggc2NhbGUnLCBmdW5jdGlvbigpIHtcbiAgICB2YXIgZ2VvUGFja2FnZUJvdW5kaW5nQm94ID0gbmV3IEJvdW5kaW5nQm94KC0xMzUuMCwgLTkwLCA0MC45NzksIDY2LjUxMyk7XG4gICAgdmFyIHRvdGFsQm91bmRpbmdCb3ggPSBuZXcgQm91bmRpbmdCb3goLTEzNS4wLCAtOTAsIDQwLjk3OSwgNjYuNTEzKTtcbiAgICB2YXIgdG90YWxIZWlnaHQgPSAyNTY7XG4gICAgdmFyIHRvdGFsV2lkdGggPSAyNTY7XG4gICAgdmFyIHRpbGVIZWlnaHQgPSA1MTI7XG4gICAgdmFyIHRpbGVXaWR0aCA9IDUxMjtcblxuICAgIHZhciBwID0gVGlsZUJvdW5kaW5nQm94VXRpbHMuZGV0ZXJtaW5lUG9zaXRpb25BbmRTY2FsZShnZW9QYWNrYWdlQm91bmRpbmdCb3gsIHRpbGVIZWlnaHQsIHRpbGVXaWR0aCwgdG90YWxCb3VuZGluZ0JveCwgdG90YWxIZWlnaHQsIHRvdGFsV2lkdGgpO1xuXG4gICAgcC54UG9zaXRpb25JbkZpbmFsVGlsZVN0YXJ0LnNob3VsZC5iZS5lcXVhbCgwKTtcbiAgICBwLnhQb3NpdGlvbkluRmluYWxUaWxlRW5kLnNob3VsZC5iZS5lcXVhbCgyNTYpO1xuICAgIHAueVBvc2l0aW9uSW5GaW5hbFRpbGVTdGFydC5zaG91bGQuYmUuZXF1YWwoMCk7XG4gICAgcC55UG9zaXRpb25JbkZpbmFsVGlsZUVuZC5zaG91bGQuYmUuZXF1YWwoMjU2KTtcbiAgICBwLnRpbGVDcm9wWFN0YXJ0LnNob3VsZC5iZS5lcXVhbCgwKTtcbiAgICBwLnRpbGVDcm9wWEVuZC5zaG91bGQuYmUuZXF1YWwoNTExKTtcbiAgICBwLnRpbGVDcm9wWVN0YXJ0LnNob3VsZC5iZS5lcXVhbCgwKTtcbiAgICBwLnRpbGVDcm9wWUVuZC5zaG91bGQuYmUuZXF1YWwoNTExKTtcblxuICAgIHAueVNjYWxlLnNob3VsZC5iZS5lcXVhbCguNSk7XG4gICAgcC54U2NhbGUuc2hvdWxkLmJlLmVxdWFsKC41KTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBkZXRlcm1pbmUgdGhlIHBvc2l0aW9uIGFuZCBzY2FsZSBmb3Igc2FtZSBzY2FsZSBhbmQgYm91bmRzJywgZnVuY3Rpb24oKSB7XG4gICAgdmFyIGdlb1BhY2thZ2VCb3VuZGluZ0JveCA9IG5ldyBCb3VuZGluZ0JveCgtMTM1LjAsIC05MCwgNDAuOTc5LCA2Ni41MTMpO1xuICAgIHZhciB0b3RhbEJvdW5kaW5nQm94ID0gbmV3IEJvdW5kaW5nQm94KC0xMzUuMCwgLTkwLCA0MC45NzksIDY2LjUxMyk7XG4gICAgdmFyIHRvdGFsSGVpZ2h0ID0gMjU2O1xuICAgIHZhciB0b3RhbFdpZHRoID0gMjU2O1xuICAgIHZhciB0aWxlSGVpZ2h0ID0gMjU2O1xuICAgIHZhciB0aWxlV2lkdGggPSAyNTY7XG5cbiAgICB2YXIgcCA9IFRpbGVCb3VuZGluZ0JveFV0aWxzLmRldGVybWluZVBvc2l0aW9uQW5kU2NhbGUoZ2VvUGFja2FnZUJvdW5kaW5nQm94LCB0aWxlSGVpZ2h0LCB0aWxlV2lkdGgsIHRvdGFsQm91bmRpbmdCb3gsIHRvdGFsSGVpZ2h0LCB0b3RhbFdpZHRoKTtcblxuICAgIHAueFBvc2l0aW9uSW5GaW5hbFRpbGVTdGFydC5zaG91bGQuYmUuZXF1YWwoMCk7XG4gICAgcC54UG9zaXRpb25JbkZpbmFsVGlsZUVuZC5zaG91bGQuYmUuZXF1YWwoMjU2KTtcbiAgICBwLnlQb3NpdGlvbkluRmluYWxUaWxlU3RhcnQuc2hvdWxkLmJlLmVxdWFsKDApO1xuICAgIHAueVBvc2l0aW9uSW5GaW5hbFRpbGVFbmQuc2hvdWxkLmJlLmVxdWFsKDI1Nik7XG4gICAgcC50aWxlQ3JvcFhTdGFydC5zaG91bGQuYmUuZXF1YWwoMCk7XG4gICAgcC50aWxlQ3JvcFhFbmQuc2hvdWxkLmJlLmVxdWFsKDI1NSk7XG4gICAgcC50aWxlQ3JvcFlTdGFydC5zaG91bGQuYmUuZXF1YWwoMCk7XG4gICAgcC50aWxlQ3JvcFlFbmQuc2hvdWxkLmJlLmVxdWFsKDI1NSk7XG5cbiAgICBwLnlTY2FsZS5zaG91bGQuYmUuZXF1YWwoMSk7XG4gICAgcC54U2NhbGUuc2hvdWxkLmJlLmVxdWFsKDEpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGRldGVybWluZSB0aGUgcG9zaXRpb24gYW5kIHNjYWxlIGZvciBzYW1lIHNjYWxlIGFuZCBsZWZ0IHNoaWZ0JywgZnVuY3Rpb24oKSB7XG4gICAgdmFyIGdlb1BhY2thZ2VCb3VuZGluZ0JveCA9IG5ldyBCb3VuZGluZ0JveCgtMTQwLjAsIC05NSwgNDAuOTc5LCA2Ni41MTMpO1xuICAgIHZhciB0b3RhbEJvdW5kaW5nQm94ID0gbmV3IEJvdW5kaW5nQm94KC0xMzUuMCwgLTkwLCA0MC45NzksIDY2LjUxMyk7XG4gICAgdmFyIHRvdGFsSGVpZ2h0ID0gMjU2O1xuICAgIHZhciB0b3RhbFdpZHRoID0gMjU2O1xuICAgIHZhciB0aWxlSGVpZ2h0ID0gMjU2O1xuICAgIHZhciB0aWxlV2lkdGggPSAyNTY7XG5cbiAgICB2YXIgcCA9IFRpbGVCb3VuZGluZ0JveFV0aWxzLmRldGVybWluZVBvc2l0aW9uQW5kU2NhbGUoZ2VvUGFja2FnZUJvdW5kaW5nQm94LCB0aWxlSGVpZ2h0LCB0aWxlV2lkdGgsIHRvdGFsQm91bmRpbmdCb3gsIHRvdGFsSGVpZ2h0LCB0b3RhbFdpZHRoKTtcblxuICAgIHAueFBvc2l0aW9uSW5GaW5hbFRpbGVTdGFydC5zaG91bGQuYmUuZXF1YWwoMCk7XG4gICAgcC54UG9zaXRpb25JbkZpbmFsVGlsZUVuZC5zaG91bGQuYmUubGVzc1RoYW4oMjU2KTtcbiAgICBwLnlQb3NpdGlvbkluRmluYWxUaWxlU3RhcnQuc2hvdWxkLmJlLmVxdWFsKDApO1xuICAgIHAueVBvc2l0aW9uSW5GaW5hbFRpbGVFbmQuc2hvdWxkLmJlLmVxdWFsKDI1Nik7XG4gICAgcC50aWxlQ3JvcFhTdGFydC5zaG91bGQuYmUuZ3JlYXRlclRoYW4oMCk7XG4gICAgcC50aWxlQ3JvcFhFbmQuc2hvdWxkLmJlLmVxdWFsKDI1NSk7XG4gICAgcC50aWxlQ3JvcFlTdGFydC5zaG91bGQuYmUuZXF1YWwoMCk7XG4gICAgcC50aWxlQ3JvcFlFbmQuc2hvdWxkLmJlLmVxdWFsKDI1NSk7XG5cbiAgICBwLnlTY2FsZS5zaG91bGQuYmUuZXF1YWwoMSk7XG4gICAgcC54U2NhbGUuc2hvdWxkLmJlLmVxdWFsKDEpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGRldGVybWluZSB0aGUgcG9zaXRpb24gYW5kIHNjYWxlIGZvciBzYW1lIHNjYWxlIGFuZCByaWdodCBzaGlmdCcsIGZ1bmN0aW9uKCkge1xuICAgIHZhciBnZW9QYWNrYWdlQm91bmRpbmdCb3ggPSBuZXcgQm91bmRpbmdCb3goLTEzMC4wLCAtODUsIDQwLjk3OSwgNjYuNTEzKTtcbiAgICB2YXIgdG90YWxCb3VuZGluZ0JveCA9IG5ldyBCb3VuZGluZ0JveCgtMTM1LjAsIC05MCwgNDAuOTc5LCA2Ni41MTMpO1xuICAgIHZhciB0b3RhbEhlaWdodCA9IDI1NjtcbiAgICB2YXIgdG90YWxXaWR0aCA9IDI1NjtcbiAgICB2YXIgdGlsZUhlaWdodCA9IDI1NjtcbiAgICB2YXIgdGlsZVdpZHRoID0gMjU2O1xuXG4gICAgdmFyIHAgPSBUaWxlQm91bmRpbmdCb3hVdGlscy5kZXRlcm1pbmVQb3NpdGlvbkFuZFNjYWxlKGdlb1BhY2thZ2VCb3VuZGluZ0JveCwgdGlsZUhlaWdodCwgdGlsZVdpZHRoLCB0b3RhbEJvdW5kaW5nQm94LCB0b3RhbEhlaWdodCwgdG90YWxXaWR0aCk7XG5cbiAgICBwLnhQb3NpdGlvbkluRmluYWxUaWxlU3RhcnQuc2hvdWxkLmJlLmdyZWF0ZXJUaGFuKDApO1xuICAgIHAueFBvc2l0aW9uSW5GaW5hbFRpbGVFbmQuc2hvdWxkLmJlLmVxdWFsKDI1Nik7XG4gICAgcC55UG9zaXRpb25JbkZpbmFsVGlsZVN0YXJ0LnNob3VsZC5iZS5lcXVhbCgwKTtcbiAgICBwLnlQb3NpdGlvbkluRmluYWxUaWxlRW5kLnNob3VsZC5iZS5lcXVhbCgyNTYpO1xuICAgIHAudGlsZUNyb3BYU3RhcnQuc2hvdWxkLmJlLmVxdWFsKDApO1xuICAgIHAudGlsZUNyb3BYRW5kLnNob3VsZC5iZS5sZXNzVGhhbigyNTUpO1xuICAgIHAudGlsZUNyb3BZU3RhcnQuc2hvdWxkLmJlLmVxdWFsKDApO1xuICAgIHAudGlsZUNyb3BZRW5kLnNob3VsZC5iZS5lcXVhbCgyNTUpO1xuXG4gICAgcC55U2NhbGUuc2hvdWxkLmJlLmVxdWFsKDEpO1xuICAgIHAueFNjYWxlLnNob3VsZC5iZS5lcXVhbCgxKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBkZXRlcm1pbmUgdGhlIHBvc2l0aW9uIGFuZCBzY2FsZSBmb3Igc2FtZSBzY2FsZSBhbmQgc2hpZnQgdXAnLCBmdW5jdGlvbigpIHtcbiAgICB2YXIgZ2VvUGFja2FnZUJvdW5kaW5nQm94ID0gbmV3IEJvdW5kaW5nQm94KC0xMzUuMCwgLTkwLCA0NS45NzksIDcxLjUxMyk7XG4gICAgdmFyIHRvdGFsQm91bmRpbmdCb3ggPSBuZXcgQm91bmRpbmdCb3goLTEzNS4wLCAtOTAsIDQwLjk3OSwgNjYuNTEzKTtcbiAgICB2YXIgdG90YWxIZWlnaHQgPSAyNTY7XG4gICAgdmFyIHRvdGFsV2lkdGggPSAyNTY7XG4gICAgdmFyIHRpbGVIZWlnaHQgPSAyNTY7XG4gICAgdmFyIHRpbGVXaWR0aCA9IDI1NjtcblxuICAgIHZhciBwID0gVGlsZUJvdW5kaW5nQm94VXRpbHMuZGV0ZXJtaW5lUG9zaXRpb25BbmRTY2FsZShnZW9QYWNrYWdlQm91bmRpbmdCb3gsIHRpbGVIZWlnaHQsIHRpbGVXaWR0aCwgdG90YWxCb3VuZGluZ0JveCwgdG90YWxIZWlnaHQsIHRvdGFsV2lkdGgpO1xuXG4gICAgcC54UG9zaXRpb25JbkZpbmFsVGlsZVN0YXJ0LnNob3VsZC5iZS5lcXVhbCgwKTtcbiAgICBwLnhQb3NpdGlvbkluRmluYWxUaWxlRW5kLnNob3VsZC5iZS5lcXVhbCgyNTYpO1xuICAgIHAueVBvc2l0aW9uSW5GaW5hbFRpbGVTdGFydC5zaG91bGQuYmUuZXF1YWwoMCk7XG4gICAgcC55UG9zaXRpb25JbkZpbmFsVGlsZUVuZC5zaG91bGQuYmUubGVzc1RoYW4oMjU2KTtcbiAgICBwLnRpbGVDcm9wWFN0YXJ0LnNob3VsZC5iZS5lcXVhbCgwKTtcbiAgICBwLnRpbGVDcm9wWEVuZC5zaG91bGQuYmUuZXF1YWwoMjU1KTtcbiAgICBwLnRpbGVDcm9wWVN0YXJ0LnNob3VsZC5iZS5ncmVhdGVyVGhhbigwKTtcbiAgICBwLnRpbGVDcm9wWUVuZC5zaG91bGQuYmUuZXF1YWwoMjU1KTtcblxuICAgIHAueVNjYWxlLnNob3VsZC5iZS5lcXVhbCgxKTtcbiAgICBwLnhTY2FsZS5zaG91bGQuYmUuZXF1YWwoMSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZGV0ZXJtaW5lIHRoZSBwb3NpdGlvbiBhbmQgc2NhbGUgZm9yIHNhbWUgc2NhbGUgYW5kIHNoaWZ0IGRvd24nLCBmdW5jdGlvbigpIHtcbiAgICB2YXIgZ2VvUGFja2FnZUJvdW5kaW5nQm94ID0gbmV3IEJvdW5kaW5nQm94KC0xMzUuMCwgLTkwLCAzNS45NzksIDYxLjUxMyk7XG4gICAgdmFyIHRvdGFsQm91bmRpbmdCb3ggPSBuZXcgQm91bmRpbmdCb3goLTEzNS4wLCAtOTAsIDQwLjk3OSwgNjYuNTEzKTtcbiAgICB2YXIgdG90YWxIZWlnaHQgPSAyNTY7XG4gICAgdmFyIHRvdGFsV2lkdGggPSAyNTY7XG4gICAgdmFyIHRpbGVIZWlnaHQgPSAyNTY7XG4gICAgdmFyIHRpbGVXaWR0aCA9IDI1NjtcblxuICAgIHZhciBwID0gVGlsZUJvdW5kaW5nQm94VXRpbHMuZGV0ZXJtaW5lUG9zaXRpb25BbmRTY2FsZShnZW9QYWNrYWdlQm91bmRpbmdCb3gsIHRpbGVIZWlnaHQsIHRpbGVXaWR0aCwgdG90YWxCb3VuZGluZ0JveCwgdG90YWxIZWlnaHQsIHRvdGFsV2lkdGgpO1xuXG4gICAgcC54UG9zaXRpb25JbkZpbmFsVGlsZVN0YXJ0LnNob3VsZC5iZS5lcXVhbCgwKTtcbiAgICBwLnhQb3NpdGlvbkluRmluYWxUaWxlRW5kLnNob3VsZC5iZS5lcXVhbCgyNTYpO1xuICAgIHAueVBvc2l0aW9uSW5GaW5hbFRpbGVTdGFydC5zaG91bGQuYmUuZ3JlYXRlclRoYW4oMCk7XG4gICAgcC55UG9zaXRpb25JbkZpbmFsVGlsZUVuZC5zaG91bGQuYmUuZXF1YWwoMjU2KTtcbiAgICBwLnRpbGVDcm9wWFN0YXJ0LnNob3VsZC5iZS5lcXVhbCgwKTtcbiAgICBwLnRpbGVDcm9wWEVuZC5zaG91bGQuYmUuZXF1YWwoMjU1KTtcbiAgICBwLnRpbGVDcm9wWVN0YXJ0LnNob3VsZC5iZS5lcXVhbCgwKTtcbiAgICBwLnRpbGVDcm9wWUVuZC5zaG91bGQuYmUubGVzc1RoYW4oMjU1KTtcblxuICAgIHAueVNjYWxlLnNob3VsZC5iZS5lcXVhbCgxKTtcbiAgICBwLnhTY2FsZS5zaG91bGQuYmUuZXF1YWwoMSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZGV0ZXJtaW5lIHRoZSBwb3NpdGlvbiBhbmQgc2NhbGUgZm9yIHNhbWUgc2NhbGUgYW5kIGJpZ2dlciBib3VuZHMnLCBmdW5jdGlvbigpIHtcbiAgICB2YXIgZ2VvUGFja2FnZUJvdW5kaW5nQm94ID0gbmV3IEJvdW5kaW5nQm94KC0xNDAuMCwgLTg1LCAzNS45NzksIDcxLjUxMyk7XG4gICAgdmFyIHRvdGFsQm91bmRpbmdCb3ggPSBuZXcgQm91bmRpbmdCb3goLTEzNS4wLCAtOTAsIDQwLjk3OSwgNjYuNTEzKTtcbiAgICB2YXIgdG90YWxIZWlnaHQgPSAyNTY7XG4gICAgdmFyIHRvdGFsV2lkdGggPSAyNTY7XG4gICAgdmFyIHRpbGVIZWlnaHQgPSAyNTY7XG4gICAgdmFyIHRpbGVXaWR0aCA9IDI1NjtcblxuICAgIHZhciBwID0gVGlsZUJvdW5kaW5nQm94VXRpbHMuZGV0ZXJtaW5lUG9zaXRpb25BbmRTY2FsZShnZW9QYWNrYWdlQm91bmRpbmdCb3gsIHRpbGVIZWlnaHQsIHRpbGVXaWR0aCwgdG90YWxCb3VuZGluZ0JveCwgdG90YWxIZWlnaHQsIHRvdGFsV2lkdGgpO1xuXG4gICAgcC54UG9zaXRpb25JbkZpbmFsVGlsZVN0YXJ0LnNob3VsZC5iZS5lcXVhbCgwKTtcbiAgICBwLnhQb3NpdGlvbkluRmluYWxUaWxlRW5kLnNob3VsZC5iZS5lcXVhbCgyNTYpO1xuICAgIHAueVBvc2l0aW9uSW5GaW5hbFRpbGVTdGFydC5zaG91bGQuYmUuZXF1YWwoMCk7XG4gICAgcC55UG9zaXRpb25JbkZpbmFsVGlsZUVuZC5zaG91bGQuYmUuZXF1YWwoMjU2KTtcbiAgICBwLnRpbGVDcm9wWFN0YXJ0LnNob3VsZC5iZS5ncmVhdGVyVGhhbigwKTtcbiAgICBwLnRpbGVDcm9wWEVuZC5zaG91bGQuYmUubGVzc1RoYW4oMjU1KTtcbiAgICBwLnRpbGVDcm9wWVN0YXJ0LnNob3VsZC5iZS5ncmVhdGVyVGhhbigwKTtcbiAgICBwLnRpbGVDcm9wWUVuZC5zaG91bGQuYmUubGVzc1RoYW4oMjU1KTtcblxuICAgIHAueVNjYWxlLnNob3VsZC5iZS5ncmVhdGVyVGhhbigxKTtcbiAgICBwLnhTY2FsZS5zaG91bGQuYmUuZ3JlYXRlclRoYW4oMSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZGV0ZXJtaW5lIHRoZSBwb3NpdGlvbiBhbmQgc2NhbGUgZm9yIHNhbWUgc2NhbGUgYW5kIHNtYWxsZXIgYm91bmRzJywgZnVuY3Rpb24oKSB7XG4gICAgdmFyIGdlb1BhY2thZ2VCb3VuZGluZ0JveCA9IG5ldyBCb3VuZGluZ0JveCgtMTMwLjAsIC05NSwgNDUuOTc5LCA2MS41MTMpO1xuICAgIHZhciB0b3RhbEJvdW5kaW5nQm94ID0gbmV3IEJvdW5kaW5nQm94KC0xMzUuMCwgLTkwLCA0MC45NzksIDY2LjUxMyk7XG4gICAgdmFyIHRvdGFsSGVpZ2h0ID0gMjU2O1xuICAgIHZhciB0b3RhbFdpZHRoID0gMjU2O1xuICAgIHZhciB0aWxlSGVpZ2h0ID0gMjU2O1xuICAgIHZhciB0aWxlV2lkdGggPSAyNTY7XG5cbiAgICB2YXIgcCA9IFRpbGVCb3VuZGluZ0JveFV0aWxzLmRldGVybWluZVBvc2l0aW9uQW5kU2NhbGUoZ2VvUGFja2FnZUJvdW5kaW5nQm94LCB0aWxlSGVpZ2h0LCB0aWxlV2lkdGgsIHRvdGFsQm91bmRpbmdCb3gsIHRvdGFsSGVpZ2h0LCB0b3RhbFdpZHRoKTtcblxuICAgIHAueFBvc2l0aW9uSW5GaW5hbFRpbGVTdGFydC5zaG91bGQuYmUuZ3JlYXRlclRoYW4oMCk7XG4gICAgcC54UG9zaXRpb25JbkZpbmFsVGlsZUVuZC5zaG91bGQuYmUubGVzc1RoYW4oMjU1KTtcbiAgICBwLnlQb3NpdGlvbkluRmluYWxUaWxlU3RhcnQuc2hvdWxkLmJlLmdyZWF0ZXJUaGFuKDApO1xuICAgIHAueVBvc2l0aW9uSW5GaW5hbFRpbGVFbmQuc2hvdWxkLmJlLmxlc3NUaGFuKDI1NSk7XG4gICAgcC50aWxlQ3JvcFhTdGFydC5zaG91bGQuYmUuZXF1YWwoMCk7XG4gICAgcC50aWxlQ3JvcFhFbmQuc2hvdWxkLmJlLmVxdWFsKDI1NSk7XG4gICAgcC50aWxlQ3JvcFlTdGFydC5zaG91bGQuYmUuZXF1YWwoMCk7XG4gICAgcC50aWxlQ3JvcFlFbmQuc2hvdWxkLmJlLmVxdWFsKDI1NSk7XG5cbiAgICBwLnlTY2FsZS5zaG91bGQuYmUubGVzc1RoYW4oMSk7XG4gICAgcC54U2NhbGUuc2hvdWxkLmJlLmxlc3NUaGFuKDEpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGRldGVybWluZSB0aGUgcG9zaXRpb24gYW5kIHNjYWxlIGZvciBzYW1lIHNjYWxlIGFuZCBub3QgY29udGFpbmVkIGluIHRoZSBib3VuZHMnLCBmdW5jdGlvbigpIHtcbiAgICB2YXIgZ2VvUGFja2FnZUJvdW5kaW5nQm94ID0gbmV3IEJvdW5kaW5nQm94KDkwLCAxMzUuMCwgLTY2LjUxMywgLTQwLjk3OSk7XG4gICAgdmFyIHRvdGFsQm91bmRpbmdCb3ggPSBuZXcgQm91bmRpbmdCb3goLTEzNS4wLCAtOTAsIDQwLjk3OSwgNjYuNTEzKTtcbiAgICB2YXIgdG90YWxIZWlnaHQgPSAyNTY7XG4gICAgdmFyIHRvdGFsV2lkdGggPSAyNTY7XG4gICAgdmFyIHRpbGVIZWlnaHQgPSAyNTY7XG4gICAgdmFyIHRpbGVXaWR0aCA9IDI1NjtcblxuICAgIHZhciBwID0gVGlsZUJvdW5kaW5nQm94VXRpbHMuZGV0ZXJtaW5lUG9zaXRpb25BbmRTY2FsZShnZW9QYWNrYWdlQm91bmRpbmdCb3gsIHRpbGVIZWlnaHQsIHRpbGVXaWR0aCwgdG90YWxCb3VuZGluZ0JveCwgdG90YWxIZWlnaHQsIHRvdGFsV2lkdGgpO1xuXG4gICAgcC54UG9zaXRpb25JbkZpbmFsVGlsZVN0YXJ0LnNob3VsZC5iZS5ncmVhdGVyVGhhbigyNTUpO1xuICAgIHAueFBvc2l0aW9uSW5GaW5hbFRpbGVFbmQuc2hvdWxkLmJlLmVxdWFsKDI1Nik7XG4gICAgcC55UG9zaXRpb25JbkZpbmFsVGlsZVN0YXJ0LnNob3VsZC5iZS5ncmVhdGVyVGhhbigyNTUpO1xuICAgIHAueVBvc2l0aW9uSW5GaW5hbFRpbGVFbmQuc2hvdWxkLmJlLmVxdWFsKDI1Nik7XG4gICAgcC50aWxlQ3JvcFhTdGFydC5zaG91bGQuYmUuZXF1YWwoMCk7XG4gICAgcC50aWxlQ3JvcFhFbmQuc2hvdWxkLmJlLmxlc3NUaGFuKDApO1xuICAgIHAudGlsZUNyb3BZU3RhcnQuc2hvdWxkLmJlLmVxdWFsKDApO1xuICAgIHAudGlsZUNyb3BZRW5kLnNob3VsZC5iZS5sZXNzVGhhbigwKTtcblxuICAgIHAueVNjYWxlLnNob3VsZC5iZS5lcXVhbCgxKTtcbiAgICBwLnhTY2FsZS5zaG91bGQuYmUuZXF1YWwoMSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZ2V0IHRoZSB3ZWIgbWVyY2F0b3IgdGlsZSBib3ggZm9yIGVhY2ggem9vbSBsZXZlbCcsIGZ1bmN0aW9uKCkge1xuICAgIHZhciB3ZWJNZXJjYXRvckJveCA9IG5ldyBCb3VuZGluZ0JveCgtMjAwMzc1MDguMzQyNzg5MjQ0LCAyMDAzNzUwOC4zNDI3ODkyNDQsIC0yMDAzNzUwOC4zNDI3ODkyNDQsIDIwMDM3NTA4LjM0Mjc4OTI0NCk7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8PSAxODsgaSsrKSB7XG4gICAgICB2YXIgYm94ID0gVGlsZUJvdW5kaW5nQm94VXRpbHMud2ViTWVyY2F0b3JUaWxlQm94KHdlYk1lcmNhdG9yQm94LCBpKTtcbiAgICAgIGJveC5taW5YLnNob3VsZC5iZS5lcXVhbCgwKTtcbiAgICAgIGJveC5taW5ZLnNob3VsZC5iZS5lcXVhbCgwKTtcbiAgICAgIGJveC5tYXhYLnNob3VsZC5iZS5lcXVhbChNYXRoLnBvdygyLCBpKS0xKTtcbiAgICAgIGJveC5tYXhZLnNob3VsZC5iZS5lcXVhbChNYXRoLnBvdygyLCBpKS0xKTtcbiAgICB9XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZ2V0IHRoZSB3ZWIgbWVyY2F0b3IgdGlsZSBib3ggZm9yIGVhY2ggem9vbSBsZXZlbCB3aXRoIHNtYWxsZXIgYm94JywgZnVuY3Rpb24oKSB7XG4gICAgdmFyIHdlYk1lcmNhdG9yQm94ID0gbmV3IEJvdW5kaW5nQm94KC0yMDAzNzUwOC4zNDI3ODkyNDQsIDIwMDM3NTA4LjM0Mjc4OTI0NCwgLTIwMDM3NTA4LjM0Mjc4OTI0LCAyMDAzNzUwOC4zNDI3ODkyNDQpO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPD0gMTg7IGkrKykge1xuICAgICAgdmFyIGJveCA9IFRpbGVCb3VuZGluZ0JveFV0aWxzLndlYk1lcmNhdG9yVGlsZUJveCh3ZWJNZXJjYXRvckJveCwgaSk7XG4gICAgICBib3gubWluWC5zaG91bGQuYmUuZXF1YWwoMCk7XG4gICAgICBib3gubWluWS5zaG91bGQuYmUuZXF1YWwoMCk7XG4gICAgICBib3gubWF4WC5zaG91bGQuYmUuZXF1YWwoTWF0aC5wb3coMiwgaSktMSk7XG4gICAgICBib3gubWF4WS5zaG91bGQuYmUuZXF1YWwoTWF0aC5wb3coMiwgaSktMSk7XG4gICAgfVxuICB9KTtcblxuICBpdCgnc2hvdWxkIGdldCB0aGUgd2ViIG1lcmNhdG9yIHRpbGUgYm94IGZvciBlYWNoIHpvb20gbGV2ZWwgZm9yIHRoZSBlYXN0ZXJuIGhlbWlzcGhlcmUnLCBmdW5jdGlvbigpIHtcbiAgICB2YXIgd2ViTWVyY2F0b3JCb3ggPSBuZXcgQm91bmRpbmdCb3goMCwgMjAwMzc1MDguMzQyNzg5MjQ0LCAtMjAwMzc1MDguMzQyNzg5MjQ0LCAyMDAzNzUwOC4zNDI3ODkyNDQpO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPD0gMTg7IGkrKykge1xuICAgICAgdmFyIGJveCA9IFRpbGVCb3VuZGluZ0JveFV0aWxzLndlYk1lcmNhdG9yVGlsZUJveCh3ZWJNZXJjYXRvckJveCwgaSk7XG4gICAgICBib3gubWluWC5zaG91bGQuYmUuZXF1YWwoTWF0aC5mbG9vcihNYXRoLnBvdygyLCBpKS8yKSk7XG4gICAgICBib3gubWluWS5zaG91bGQuYmUuZXF1YWwoMCk7XG4gICAgICBib3gubWF4WC5zaG91bGQuYmUuZXF1YWwoTWF0aC5wb3coMiwgaSktMSk7XG4gICAgICBib3gubWF4WS5zaG91bGQuYmUuZXF1YWwoTWF0aC5wb3coMiwgaSktMSk7XG4gICAgfVxuICB9KTtcblxuICBpdCgnc2hvdWxkIGdldCB0aGUgd2ViIG1lcmNhdG9yIHRpbGUgYm94IGZvciBlYWNoIHpvb20gbGV2ZWwgZm9yIHRoZSB3ZXN0ZXJuIGhlbWlzcGhlcmUnLCBmdW5jdGlvbigpIHtcbiAgICB2YXIgd2ViTWVyY2F0b3JCb3ggPSBuZXcgQm91bmRpbmdCb3goLTIwMDM3NTA4LjM0Mjc4OTI0NCwgMCwgLTIwMDM3NTA4LjM0Mjc4OTI0NCwgMjAwMzc1MDguMzQyNzg5MjQ0KTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDw9IDE4OyBpKyspIHtcbiAgICAgIHZhciBib3ggPSBUaWxlQm91bmRpbmdCb3hVdGlscy53ZWJNZXJjYXRvclRpbGVCb3god2ViTWVyY2F0b3JCb3gsIGkpO1xuICAgICAgYm94Lm1pblguc2hvdWxkLmJlLmVxdWFsKDApO1xuICAgICAgYm94Lm1pblkuc2hvdWxkLmJlLmVxdWFsKDApO1xuICAgICAgYm94Lm1heFguc2hvdWxkLmJlLmVxdWFsKE1hdGguZmxvb3IoKE1hdGgucG93KDIsIGkpLTEpLzIpKTtcbiAgICAgIGJveC5tYXhZLnNob3VsZC5iZS5lcXVhbChNYXRoLnBvdygyLCBpKS0xKTtcbiAgICB9XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZ2V0IHRoZSB3ZWIgbWVyY2F0b3IgdGlsZSBib3ggZm9yIGVhY2ggem9vbSBsZXZlbCBmb3IgdGhlIG5vcnRoZXJuIGhlbWlzcGhlcmUnLCBmdW5jdGlvbigpIHtcbiAgICB2YXIgd2ViTWVyY2F0b3JCb3ggPSBuZXcgQm91bmRpbmdCb3goLTIwMDM3NTA4LjM0Mjc4OTI0NCwgMjAwMzc1MDguMzQyNzg5MjQ0LCAwLCAyMDAzNzUwOC4zNDI3ODkyNDQpO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPD0gMTg7IGkrKykge1xuICAgICAgdmFyIGJveCA9IFRpbGVCb3VuZGluZ0JveFV0aWxzLndlYk1lcmNhdG9yVGlsZUJveCh3ZWJNZXJjYXRvckJveCwgaSk7XG4gICAgICBib3gubWluWC5zaG91bGQuYmUuZXF1YWwoMCk7XG4gICAgICBib3gubWluWS5zaG91bGQuYmUuZXF1YWwoMCk7XG4gICAgICBib3gubWF4WC5zaG91bGQuYmUuZXF1YWwoTWF0aC5wb3coMiwgaSktMSk7XG4gICAgICBib3gubWF4WS5zaG91bGQuYmUuZXF1YWwoTWF0aC5mbG9vcigoTWF0aC5wb3coMiwgaSktMSkvMikpO1xuICAgIH1cbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBnZXQgdGhlIHdlYiBtZXJjYXRvciB0aWxlIGJveCBmb3IgZWFjaCB6b29tIGxldmVsIGZvciB0aGUgc291dGhlcm4gaGVtaXNwaGVyZScsIGZ1bmN0aW9uKCkge1xuICAgIHZhciB3ZWJNZXJjYXRvckJveCA9IG5ldyBCb3VuZGluZ0JveCgtMjAwMzc1MDguMzQyNzg5MjQ0LCAyMDAzNzUwOC4zNDI3ODkyNDQsIC0yMDAzNzUwOC4zNDI3ODkyNDQsIDApO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPD0gMTg7IGkrKykge1xuICAgICAgdmFyIGJveCA9IFRpbGVCb3VuZGluZ0JveFV0aWxzLndlYk1lcmNhdG9yVGlsZUJveCh3ZWJNZXJjYXRvckJveCwgaSk7XG4gICAgICBib3gubWluWC5zaG91bGQuYmUuZXF1YWwoMCk7XG4gICAgICBib3gubWluWS5zaG91bGQuYmUuZXF1YWwoTWF0aC5mbG9vcihNYXRoLnBvdygyLCBpKS8yKSk7XG4gICAgICBib3gubWF4WC5zaG91bGQuYmUuZXF1YWwoTWF0aC5wb3coMiwgaSktMSk7XG4gICAgICBib3gubWF4WS5zaG91bGQuYmUuZXF1YWwoTWF0aC5wb3coMiwgaSktMSk7XG4gICAgfVxuICB9KTtcblxuXG59KTtcbiIsInZhciBHZW9QYWNrYWdlTWFuYWdlciA9IHJlcXVpcmUoJy4uLy4uLy4uL2xpYi9nZW9QYWNrYWdlTWFuYWdlcicpXG4gICwgVGlsZURhbyA9IHJlcXVpcmUoJy4uLy4uLy4uL2xpYi90aWxlcy91c2VyL3RpbGVEYW8nKVxuICAsIHNob3VsZCA9IHJlcXVpcmUoJ2NoYWknKS5zaG91bGQoKVxuICAsIHBhdGggPSByZXF1aXJlKCdwYXRoJylcbiAgLCBhc3luYyA9IHJlcXVpcmUoJ2FzeW5jJyk7XG5cbmRlc2NyaWJlKCdUaWxlRGFvIHRlc3RzJywgZnVuY3Rpb24oKSB7XG5cbiAgZGVzY3JpYmUoJ1JpdmVycyBHZW9QYWNrYWdlIHRlc3RzJywgZnVuY3Rpb24oKSB7XG5cbiAgICB2YXIgZ2VvUGFja2FnZTtcbiAgICB2YXIgdGlsZURhbztcblxuICAgIGJlZm9yZUVhY2goJ3Nob3VsZCBvcGVuIHRoZSBnZW9wYWNrYWdlJywgZnVuY3Rpb24oZG9uZSkge1xuICAgICAgdmFyIGZpbGVuYW1lID0gcGF0aC5qb2luKF9fZGlybmFtZSwgJy4uJywgJy4uJywgJ2ZpeHR1cmVzJywgJ3JpdmVycy5ncGtnJyk7XG4gICAgICBHZW9QYWNrYWdlTWFuYWdlci5vcGVuKGZpbGVuYW1lLCBmdW5jdGlvbihlcnIsIGdwKSB7XG4gICAgICAgIGdlb1BhY2thZ2UgPSBncDtcbiAgICAgICAgc2hvdWxkLm5vdC5leGlzdChlcnIpO1xuICAgICAgICBzaG91bGQuZXhpc3QoZ3ApO1xuICAgICAgICBzaG91bGQuZXhpc3QoZ3AuZ2V0RGF0YWJhc2UoKS5nZXREQkNvbm5lY3Rpb24oKSk7XG4gICAgICAgIGdwLmdldFBhdGgoKS5zaG91bGQuYmUuZXF1YWwoZmlsZW5hbWUpO1xuICAgICAgICBnZW9QYWNrYWdlLmdldFRpbGVEYW9XaXRoVGFibGVOYW1lKCdUSUxFU29zbWRzJywgZnVuY3Rpb24oZXJyLCByZXRyaWV2ZWRUaWxlRGFvKSB7XG4gICAgICAgICAgdGlsZURhbyA9IHJldHJpZXZlZFRpbGVEYW87XG4gICAgICAgICAgZG9uZSgpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgYWZ0ZXJFYWNoKCdzaG91bGQgY2xvc2UgdGhlIGdlb3BhY2thZ2UnLCBmdW5jdGlvbigpIHtcbiAgICAgIGdlb1BhY2thZ2UuY2xvc2UoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZ2V0IHRoZSB6b29tIGxldmVscycsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICAgIHRpbGVEYW8ubWluWm9vbS5zaG91bGQuYmUuZXF1YWwoMCk7XG4gICAgICB0aWxlRGFvLm1heFpvb20uc2hvdWxkLmJlLmVxdWFsKDMpO1xuICAgICAgZG9uZSgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBnZXQgdGhlIGJvdW5kaW5nIGJveCBmb3IgZWFjaCB6b29tIGxldmVsJywgZnVuY3Rpb24oZG9uZSkge1xuICAgICAgYXN5bmMuZWFjaFNlcmllcyhbMCwgMSwgMiwgMywgNF0sIGZ1bmN0aW9uKHpvb20sIGNhbGxiYWNrKSB7XG4gICAgICAgIHRpbGVEYW8uZ2V0Qm91bmRpbmdCb3hXaXRoWm9vbUxldmVsKHpvb20sIGZ1bmN0aW9uKGVyciwgYmIpIHtcbiAgICAgICAgICBpZiAoem9vbSA9PT0gNCkge1xuICAgICAgICAgICAgc2hvdWxkLm5vdC5leGlzdChiYik7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJiLm1pbkxvbmdpdHVkZS5zaG91bGQuYmUuZXF1YWwoLTIwMDM3NTA4LjM0Mjc4OTI0NCk7XG4gICAgICAgICAgICBiYi5tYXhMb25naXR1ZGUuc2hvdWxkLmJlLmVxdWFsKDIwMDM3NTA4LjM0Mjc4OTI0NCk7XG4gICAgICAgICAgICBiYi5taW5MYXRpdHVkZS5zaG91bGQuYmUuZXF1YWwoLTIwMDM3NTA4LjM0Mjc4OTI0NCk7XG4gICAgICAgICAgICBiYi5tYXhMYXRpdHVkZS5zaG91bGQuYmUuZXF1YWwoMjAwMzc1MDguMzQyNzg5MjQ0KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FsbGJhY2soKTtcbiAgICAgICAgfSk7XG4gICAgICB9LCBmdW5jdGlvbihlcnIpIHtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGdldCB0aGUgdGlsZSBncmlkIGZvciBlYWNoIHpvb20gbGV2ZWwnLCBmdW5jdGlvbihkb25lKSB7XG4gICAgICBhc3luYy5lYWNoU2VyaWVzKFswLCAxLCAyLCAzLCA0XSwgZnVuY3Rpb24oem9vbSwgY2FsbGJhY2spIHtcbiAgICAgICAgdmFyIGdyaWQgPSB0aWxlRGFvLmdldFRpbGVHcmlkV2l0aFpvb21MZXZlbCh6b29tKTtcbiAgICAgICAgaWYgKHpvb20gPT09IDQpIHtcbiAgICAgICAgICBzaG91bGQubm90LmV4aXN0KGdyaWQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGdyaWQubWluX3guc2hvdWxkLmJlLmVxdWFsKDApO1xuICAgICAgICAgIGdyaWQubWluX3kuc2hvdWxkLmJlLmVxdWFsKDApO1xuICAgICAgICAgIGdyaWQubWF4X3guc2hvdWxkLmJlLmVxdWFsKE1hdGgucG93KDIsIHpvb20pLTEpO1xuICAgICAgICAgIGdyaWQubWF4X3guc2hvdWxkLmJlLmVxdWFsKE1hdGgucG93KDIsIHpvb20pLTEpO1xuICAgICAgICB9XG4gICAgICAgIGNhbGxiYWNrKCk7XG4gICAgICB9LCBmdW5jdGlvbihlcnIpIHtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGdldCB0aGUgdGFibGUnLCBmdW5jdGlvbigpIHtcbiAgICAgIHZhciB0aWxlVGFibGUgPSB0aWxlRGFvLmdldFRpbGVUYWJsZSgpO1xuICAgICAgdGlsZVRhYmxlLnRhYmxlX25hbWUuc2hvdWxkLmJlLmVxdWFsKCdUSUxFU29zbWRzJyk7XG4gICAgICBzaG91bGQuZXhpc3QodGlsZVRhYmxlLmdldFRpbGVEYXRhQ29sdW1uKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcXVlcnkgZm9yIGEgdGlsZScsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICAgIHRpbGVEYW8ucXVlcnlGb3JUaWxlKDAsIDAsIDAsIGZ1bmN0aW9uKGVyciwgdGlsZVJvdykge1xuICAgICAgICB0aWxlUm93LmdldFpvb21MZXZlbCgpLnNob3VsZC5iZS5lcXVhbCgwKTtcbiAgICAgICAgdGlsZVJvdy5nZXRUaWxlQ29sdW1uKCkuc2hvdWxkLmJlLmVxdWFsKDApO1xuICAgICAgICB0aWxlUm93LmdldFRpbGVSb3coKS5zaG91bGQuYmUuZXF1YWwoMCk7XG4gICAgICAgIHZhciBkYXRhID0gdGlsZVJvdy5nZXRUaWxlRGF0YSgpO1xuICAgICAgICBzaG91bGQuZXhpc3QoZGF0YSk7XG4gICAgICAgIGRvbmUoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBxdWVyeSBmb3IgdGlsZXMgaW4gdGhlIHpvb20gbGV2ZWwnLCBmdW5jdGlvbihkb25lKSB7XG4gICAgICB0aWxlRGFvLnF1ZXJ5Rm9yVGlsZXNXaXRoWm9vbUxldmVsKDEsIGZ1bmN0aW9uKGVyciwgdGlsZVJvdywgdGlsZURvbmUpIHtcbiAgICAgICAgdGlsZVJvdy5nZXRab29tTGV2ZWwoKS5zaG91bGQuYmUuZXF1YWwoMSk7XG4gICAgICAgIHZhciBkYXRhID0gdGlsZVJvdy5nZXRUaWxlRGF0YSgpO1xuICAgICAgICBzaG91bGQuZXhpc3QoZGF0YSk7XG4gICAgICAgIHRpbGVEb25lKCk7XG4gICAgICB9LCBmdW5jdGlvbihlcnIsIGNvdW50KSB7XG4gICAgICAgIGNvdW50LnNob3VsZC5iZS5lcXVhbCg0KTtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHF1ZXJ5IGZvciB0aWxlcyBpbiB0aGUgem9vbSBsZXZlbCBkZXNjZW5kaW5nIG9yZGVyJywgZnVuY3Rpb24oZG9uZSkge1xuICAgICAgdGlsZURhby5xdWVyeUZvclRpbGVzRGVzY2VuZGluZygxLCBmdW5jdGlvbihlcnIsIHRpbGVSb3csIHRpbGVEb25lKSB7XG4gICAgICAgIHRpbGVSb3cuZ2V0Wm9vbUxldmVsKCkuc2hvdWxkLmJlLmVxdWFsKDEpO1xuICAgICAgICB2YXIgZGF0YSA9IHRpbGVSb3cuZ2V0VGlsZURhdGEoKTtcbiAgICAgICAgc2hvdWxkLmV4aXN0KGRhdGEpO1xuICAgICAgICB0aWxlRG9uZSgpO1xuICAgICAgfSwgZnVuY3Rpb24oZXJyLCBjb3VudCkge1xuICAgICAgICBjb3VudC5zaG91bGQuYmUuZXF1YWwoNCk7XG4gICAgICAgIGRvbmUoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBxdWVyeSBmb3IgdGlsZXMgaW4gdGhlIHpvb20gbGV2ZWwgYW5kIGNvbHVtbicsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICAgIHRpbGVEYW8ucXVlcnlGb3JUaWxlc0luQ29sdW1uKDEsIDEsIGZ1bmN0aW9uKGVyciwgdGlsZVJvdywgdGlsZURvbmUpIHtcbiAgICAgICAgdGlsZVJvdy5nZXRab29tTGV2ZWwoKS5zaG91bGQuYmUuZXF1YWwoMSk7XG4gICAgICAgIHRpbGVSb3cuZ2V0VGlsZUNvbHVtbigpLnNob3VsZC5iZS5lcXVhbCgxKTtcbiAgICAgICAgdmFyIGRhdGEgPSB0aWxlUm93LmdldFRpbGVEYXRhKCk7XG4gICAgICAgIHNob3VsZC5leGlzdChkYXRhKTtcbiAgICAgICAgdGlsZURvbmUoKTtcbiAgICAgIH0sIGZ1bmN0aW9uKGVyciwgY291bnQpIHtcbiAgICAgICAgY291bnQuc2hvdWxkLmJlLmVxdWFsKDIpO1xuICAgICAgICBkb25lKCk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcXVlcnkgZm9yIHRpbGVzIGluIHRoZSB6b29tIGxldmVsIGFuZCByb3cnLCBmdW5jdGlvbihkb25lKSB7XG4gICAgICB0aWxlRGFvLnF1ZXJ5Rm9yVGlsZXNJblJvdygxLCAxLCBmdW5jdGlvbihlcnIsIHRpbGVSb3csIHRpbGVEb25lKSB7XG4gICAgICAgIHRpbGVSb3cuZ2V0Wm9vbUxldmVsKCkuc2hvdWxkLmJlLmVxdWFsKDEpO1xuICAgICAgICB0aWxlUm93LmdldFRpbGVSb3coKS5zaG91bGQuYmUuZXF1YWwoMSk7XG4gICAgICAgIHZhciBkYXRhID0gdGlsZVJvdy5nZXRUaWxlRGF0YSgpO1xuICAgICAgICBzaG91bGQuZXhpc3QoZGF0YSk7XG4gICAgICAgIHRpbGVEb25lKCk7XG4gICAgICB9LCBmdW5jdGlvbihlcnIsIGNvdW50KSB7XG4gICAgICAgIGNvdW50LnNob3VsZC5iZS5lcXVhbCgyKTtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHF1ZXJ5IGZvciB0aWxlcyBpbiB0aGUgdGlsZSBncmlkJywgZnVuY3Rpb24oZG9uZSkge1xuICAgICAgdmFyIHRpbGVHcmlkID0ge1xuICAgICAgICBtaW5feDogMCxcbiAgICAgICAgbWF4X3g6IDEsXG4gICAgICAgIG1pbl95OiAwLFxuICAgICAgICBtYXhfeTogMFxuICAgICAgfTtcbiAgICAgIHRpbGVEYW8ucXVlcnlCeVRpbGVHcmlkKHRpbGVHcmlkLCAxLCBmdW5jdGlvbihlcnIsIHRpbGVSb3csIHRpbGVEb25lKSB7XG4gICAgICAgIHRpbGVSb3cuZ2V0Wm9vbUxldmVsKCkuc2hvdWxkLmJlLmVxdWFsKDEpO1xuICAgICAgICB0aWxlUm93LmdldFRpbGVSb3coKS5zaG91bGQuYmUuZXF1YWwoMCk7XG4gICAgICAgIHZhciBkYXRhID0gdGlsZVJvdy5nZXRUaWxlRGF0YSgpO1xuICAgICAgICBzaG91bGQuZXhpc3QoZGF0YSk7XG4gICAgICAgIHRpbGVEb25lKCk7XG4gICAgICB9LCBmdW5jdGlvbihlcnIsIGNvdW50KSB7XG4gICAgICAgIGNvdW50LnNob3VsZC5iZS5lcXVhbCgyKTtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlLnNraXAoJ0FsYXNrYSBHZW9QYWNrYWdlIHRlc3RzJywgZnVuY3Rpb24oKSB7XG5cbiAgICB2YXIgZ2VvUGFja2FnZTtcbiAgICB2YXIgdGlsZURhbztcblxuICAgIGJlZm9yZUVhY2goJ3Nob3VsZCBvcGVuIHRoZSBnZW9wYWNrYWdlJywgZnVuY3Rpb24oZG9uZSkge1xuICAgICAgdmFyIGZpbGVuYW1lID0gcGF0aC5qb2luKF9fZGlybmFtZSwgJy4uJywgJy4uJywgJ2ZpeHR1cmVzJywgJ3ByaXZhdGUnLCAnYWxhc2thLmdwa2cnKTtcbiAgICAgIEdlb1BhY2thZ2VNYW5hZ2VyLm9wZW4oZmlsZW5hbWUsIGZ1bmN0aW9uKGVyciwgZ3ApIHtcbiAgICAgICAgZ2VvUGFja2FnZSA9IGdwO1xuICAgICAgICBzaG91bGQubm90LmV4aXN0KGVycik7XG4gICAgICAgIHNob3VsZC5leGlzdChncCk7XG4gICAgICAgIHNob3VsZC5leGlzdChncC5nZXREYXRhYmFzZSgpLmdldERCQ29ubmVjdGlvbigpKTtcbiAgICAgICAgZ3AuZ2V0UGF0aCgpLnNob3VsZC5iZS5lcXVhbChmaWxlbmFtZSk7XG4gICAgICAgIGdlb1BhY2thZ2UuZ2V0VGlsZURhb1dpdGhUYWJsZU5hbWUoJ2FsYXNrYScsIGZ1bmN0aW9uKGVyciwgcmV0cmlldmVkVGlsZURhbykge1xuICAgICAgICAgIHRpbGVEYW8gPSByZXRyaWV2ZWRUaWxlRGFvO1xuICAgICAgICAgIGRvbmUoKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZ2V0IHRoZSB6b29tIGxldmVscycsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICAgIHRpbGVEYW8ubWluWm9vbS5zaG91bGQuYmUuZXF1YWwoNCk7XG4gICAgICB0aWxlRGFvLm1heFpvb20uc2hvdWxkLmJlLmVxdWFsKDQpO1xuICAgICAgZG9uZSgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBnZXQgdGhlIGJvdW5kaW5nIGJveCBmb3IgZWFjaCB6b29tIGxldmVsJywgZnVuY3Rpb24oZG9uZSkge1xuICAgICAgYXN5bmMuZWFjaFNlcmllcyhbNCwgNV0sIGZ1bmN0aW9uKHpvb20sIGNhbGxiYWNrKSB7XG4gICAgICAgIHRpbGVEYW8uZ2V0Qm91bmRpbmdCb3hXaXRoWm9vbUxldmVsKHpvb20sIGZ1bmN0aW9uKGVyciwgYmIpIHtcbiAgICAgICAgICBpZiAoem9vbSA9PT0gNSkge1xuICAgICAgICAgICAgc2hvdWxkLm5vdC5leGlzdChiYik7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJiLm1pbkxvbmdpdHVkZS5zaG91bGQuYmUuZXF1YWwoLTE4MCk7XG4gICAgICAgICAgICBiYi5tYXhMb25naXR1ZGUuc2hvdWxkLmJlLmVxdWFsKC0xNTcuNSk7XG4gICAgICAgICAgICBiYi5taW5MYXRpdHVkZS5zaG91bGQuYmUuZXF1YWwoNDUpO1xuICAgICAgICAgICAgYmIubWF4TGF0aXR1ZGUuc2hvdWxkLmJlLmVxdWFsKDY3LjUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYWxsYmFjaygpO1xuICAgICAgICB9KTtcbiAgICAgIH0sIGZ1bmN0aW9uKGVycikge1xuICAgICAgICBkb25lKCk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZ2V0IHRoZSB0aWxlIGdyaWQgZm9yIGVhY2ggem9vbSBsZXZlbCcsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICAgIGFzeW5jLmVhY2hTZXJpZXMoWzQsIDVdLCBmdW5jdGlvbih6b29tLCBjYWxsYmFjaykge1xuICAgICAgICB2YXIgZ3JpZCA9IHRpbGVEYW8uZ2V0VGlsZUdyaWRXaXRoWm9vbUxldmVsKHpvb20pO1xuICAgICAgICBpZiAoem9vbSA9PT0gNSkge1xuICAgICAgICAgIHNob3VsZC5ub3QuZXhpc3QoZ3JpZCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZ3JpZC5taW5YLnNob3VsZC5iZS5lcXVhbCgwKTtcbiAgICAgICAgICBncmlkLm1pblkuc2hvdWxkLmJlLmVxdWFsKDApO1xuICAgICAgICAgIGdyaWQubWF4WC5zaG91bGQuYmUuZXF1YWwoMyk7XG4gICAgICAgICAgZ3JpZC5tYXhYLnNob3VsZC5iZS5lcXVhbCgzKTtcbiAgICAgICAgfVxuICAgICAgICBjYWxsYmFjaygpO1xuICAgICAgfSwgZnVuY3Rpb24oZXJyKSB7XG4gICAgICAgIGRvbmUoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBnZXQgdGhlIHRhYmxlJywgZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgdGlsZVRhYmxlID0gdGlsZURhby5nZXRUaWxlVGFibGUoKTtcbiAgICAgIHRpbGVUYWJsZS50YWJsZU5hbWUuc2hvdWxkLmJlLmVxdWFsKCdhbGFza2EnKTtcbiAgICAgIHNob3VsZC5leGlzdCh0aWxlVGFibGUuZ2V0VGlsZURhdGFDb2x1bW4pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBxdWVyeSBmb3IgYSB0aWxlJywgZnVuY3Rpb24oZG9uZSkge1xuICAgICAgdGlsZURhby5xdWVyeUZvclRpbGUoMSwgMSwgNCwgZnVuY3Rpb24oZXJyLCB0aWxlUm93KSB7XG4gICAgICAgIHRpbGVSb3cuZ2V0Wm9vbUxldmVsKCkuc2hvdWxkLmJlLmVxdWFsKDQpO1xuICAgICAgICB0aWxlUm93LmdldFRpbGVDb2x1bW4oKS5zaG91bGQuYmUuZXF1YWwoMSk7XG4gICAgICAgIHRpbGVSb3cuZ2V0VGlsZVJvdygpLnNob3VsZC5iZS5lcXVhbCgxKTtcbiAgICAgICAgdmFyIGRhdGEgPSB0aWxlUm93LmdldFRpbGVEYXRhKCk7XG4gICAgICAgIHNob3VsZC5leGlzdChkYXRhKTtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHF1ZXJ5IGZvciB0aWxlcyBpbiB0aGUgem9vbSBsZXZlbCcsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICAgIHRpbGVEYW8ucXVlcnlGb3JUaWxlc1dpdGhab29tTGV2ZWwoNCwgZnVuY3Rpb24oZXJyLCB0aWxlUm93KSB7XG4gICAgICAgIHRpbGVSb3cuZ2V0Wm9vbUxldmVsKCkuc2hvdWxkLmJlLmVxdWFsKDQpO1xuICAgICAgICB2YXIgZGF0YSA9IHRpbGVSb3cuZ2V0VGlsZURhdGEoKTtcbiAgICAgICAgc2hvdWxkLmV4aXN0KGRhdGEpO1xuICAgICAgfSwgZnVuY3Rpb24oZXJyLCBjb3VudCkge1xuICAgICAgICBjb3VudC5zaG91bGQuYmUuZXF1YWwoMTYpO1xuICAgICAgICBkb25lKCk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcXVlcnkgZm9yIHRpbGVzIGluIHRoZSB6b29tIGxldmVsIGRlc2NlbmRpbmcgb3JkZXInLCBmdW5jdGlvbihkb25lKSB7XG4gICAgICB0aWxlRGFvLnF1ZXJ5Rm9yVGlsZXNEZXNjZW5kaW5nKDQsIGZ1bmN0aW9uKGVyciwgdGlsZVJvdykge1xuICAgICAgICB0aWxlUm93LmdldFpvb21MZXZlbCgpLnNob3VsZC5iZS5lcXVhbCg0KTtcbiAgICAgICAgdmFyIGRhdGEgPSB0aWxlUm93LmdldFRpbGVEYXRhKCk7XG4gICAgICAgIHNob3VsZC5leGlzdChkYXRhKTtcbiAgICAgIH0sIGZ1bmN0aW9uKGVyciwgY291bnQpIHtcbiAgICAgICAgY291bnQuc2hvdWxkLmJlLmVxdWFsKDE2KTtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHF1ZXJ5IGZvciB0aWxlcyBpbiB0aGUgem9vbSBsZXZlbCBhbmQgY29sdW1uJywgZnVuY3Rpb24oZG9uZSkge1xuICAgICAgdGlsZURhby5xdWVyeUZvclRpbGVzSW5Db2x1bW4oMSwgNCwgZnVuY3Rpb24oZXJyLCB0aWxlUm93KSB7XG4gICAgICAgIHRpbGVSb3cuZ2V0Wm9vbUxldmVsKCkuc2hvdWxkLmJlLmVxdWFsKDQpO1xuICAgICAgICB0aWxlUm93LmdldFRpbGVDb2x1bW4oKS5zaG91bGQuYmUuZXF1YWwoMSk7XG4gICAgICAgIHZhciBkYXRhID0gdGlsZVJvdy5nZXRUaWxlRGF0YSgpO1xuICAgICAgICBzaG91bGQuZXhpc3QoZGF0YSk7XG4gICAgICB9LCBmdW5jdGlvbihlcnIsIGNvdW50KSB7XG4gICAgICAgIGNvdW50LnNob3VsZC5iZS5lcXVhbCg0KTtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHF1ZXJ5IGZvciB0aWxlcyBpbiB0aGUgem9vbSBsZXZlbCBhbmQgcm93JywgZnVuY3Rpb24oZG9uZSkge1xuICAgICAgdGlsZURhby5xdWVyeUZvclRpbGVzSW5Sb3coMSwgNCwgZnVuY3Rpb24oZXJyLCB0aWxlUm93KSB7XG4gICAgICAgIHRpbGVSb3cuZ2V0Wm9vbUxldmVsKCkuc2hvdWxkLmJlLmVxdWFsKDQpO1xuICAgICAgICB0aWxlUm93LmdldFRpbGVSb3coKS5zaG91bGQuYmUuZXF1YWwoMSk7XG4gICAgICAgIHZhciBkYXRhID0gdGlsZVJvdy5nZXRUaWxlRGF0YSgpO1xuICAgICAgICBzaG91bGQuZXhpc3QoZGF0YSk7XG4gICAgICB9LCBmdW5jdGlvbihlcnIsIGNvdW50KSB7XG4gICAgICAgIGNvdW50LnNob3VsZC5iZS5lcXVhbCg0KTtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHF1ZXJ5IGZvciB0aWxlcyBpbiB0aGUgdGlsZSBncmlkJywgZnVuY3Rpb24oZG9uZSkge1xuICAgICAgdmFyIHRpbGVHcmlkID0ge1xuICAgICAgICBtaW5YOiAwLFxuICAgICAgICBtYXhYOiAxLFxuICAgICAgICBtaW5ZOiAwLFxuICAgICAgICBtYXhZOiAwXG4gICAgICB9O1xuICAgICAgdGlsZURhby5xdWVyeUJ5VGlsZUdyaWQodGlsZUdyaWQsIDQsIGZ1bmN0aW9uKGVyciwgdGlsZVJvdykge1xuICAgICAgICB0aWxlUm93LmdldFpvb21MZXZlbCgpLnNob3VsZC5iZS5lcXVhbCg0KTtcbiAgICAgICAgdGlsZVJvdy5nZXRUaWxlUm93KCkuc2hvdWxkLmJlLmVxdWFsKDApO1xuICAgICAgICB2YXIgZGF0YSA9IHRpbGVSb3cuZ2V0VGlsZURhdGEoKTtcbiAgICAgICAgc2hvdWxkLmV4aXN0KGRhdGEpO1xuICAgICAgfSwgZnVuY3Rpb24oZXJyLCBjb3VudCkge1xuICAgICAgICBjb3VudC5zaG91bGQuYmUuZXF1YWwoMik7XG4gICAgICAgIGRvbmUoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIiwidmFyIFRpbGVHcmlkID0gcmVxdWlyZSgnLi4vLi4vLi4vbGliL3RpbGVzL3RpbGVHcmlkLmpzJyk7XG5cbmRlc2NyaWJlKCdUaWxlR3JpZCB0ZXN0cycsIGZ1bmN0aW9uKCkge1xuXG4gIGl0KCdzaG91bGQgY291bnQgdGhlIHRpbGVzJywgZnVuY3Rpb24oKSB7XG4gICAgdmFyIHRnID0gbmV3IFRpbGVHcmlkKDAsIDEsIDAsIDEpO1xuICAgIHRnLmNvdW50KCkuc2hvdWxkLmJlLmVxdWFsKDQpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGJlIGVxdWFsJywgZnVuY3Rpb24oKSB7XG4gICAgdmFyIHRnID0gbmV3IFRpbGVHcmlkKDAsIDEsIDAsIDEpO1xuICAgIHZhciB0ZzIgPSBuZXcgVGlsZUdyaWQoMCwgMSwgMCwgMSk7XG4gICAgdGcuZXF1YWxzKHRnMikuc2hvdWxkLmJlLmVxdWFsKHRydWUpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIG5vdCBiZSBlcXVhbCcsIGZ1bmN0aW9uKCkge1xuICAgIHZhciB0ZyA9IG5ldyBUaWxlR3JpZCgwLCAxLCAwLCAxKTtcbiAgICB2YXIgdGcyID0gbmV3IFRpbGVHcmlkKDAsIDIsIDAsIDEpO1xuICAgIHRnLmVxdWFscyh0ZzIpLnNob3VsZC5iZS5lcXVhbChmYWxzZSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgbm90IGJlIGVxdWFsIHRvIHVuZGVmaW5lZCcsIGZ1bmN0aW9uKCkge1xuICAgIHZhciB0ZyA9IG5ldyBUaWxlR3JpZCgwLCAxLCAwLCAxKTtcbiAgICB0Zy5lcXVhbHMoKS5zaG91bGQuYmUuZXF1YWwoZmFsc2UpO1xuICB9KTtcblxufSk7XG4iLCJ2YXIgR2VvUGFja2FnZU1hbmFnZXIgPSByZXF1aXJlKCcuLi8uLi8uLi9saWIvZ2VvUGFja2FnZU1hbmFnZXInKVxuICAsIFRpbGVNYXRyaXhEYW8gPSByZXF1aXJlKCcuLi8uLi8uLi9saWIvdGlsZXMvbWF0cml4JykuVGlsZU1hdHJpeERhb1xuICAsIFRpbGVNYXRyaXggPSByZXF1aXJlKCcuLi8uLi8uLi9saWIvdGlsZXMvbWF0cml4JykuVGlsZU1hdHJpeFxuICAsIHNob3VsZCA9IHJlcXVpcmUoJ2NoYWknKS5zaG91bGQoKVxuICAsIHBhdGggPSByZXF1aXJlKCdwYXRoJyk7XG5cbmRlc2NyaWJlKCdUaWxlIE1hdHJpeCB0ZXN0cycsIGZ1bmN0aW9uKCkge1xuXG4gIHZhciBnZW9QYWNrYWdlO1xuICB2YXIgdGlsZU1hdHJpeERhbztcblxuICBiZWZvcmVFYWNoKCdzaG91bGQgb3BlbiB0aGUgZ2VvcGFja2FnZScsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICB2YXIgZmlsZW5hbWUgPSBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4nLCAnLi4nLCAnZml4dHVyZXMnLCAncml2ZXJzLmdwa2cnKTtcbiAgICBHZW9QYWNrYWdlTWFuYWdlci5vcGVuKGZpbGVuYW1lLCBmdW5jdGlvbihlcnIsIGdwKSB7XG4gICAgICBnZW9QYWNrYWdlID0gZ3A7XG4gICAgICBzaG91bGQubm90LmV4aXN0KGVycik7XG4gICAgICBzaG91bGQuZXhpc3QoZ3ApO1xuICAgICAgc2hvdWxkLmV4aXN0KGdwLmdldERhdGFiYXNlKCkuZ2V0REJDb25uZWN0aW9uKCkpO1xuICAgICAgZ3AuZ2V0UGF0aCgpLnNob3VsZC5iZS5lcXVhbChmaWxlbmFtZSk7XG4gICAgICB0aWxlTWF0cml4RGFvID0gbmV3IFRpbGVNYXRyaXhEYW8oZ3AuZ2V0RGF0YWJhc2UoKSk7XG4gICAgICBkb25lKCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGFmdGVyRWFjaCgnc2hvdWxkIGNsb3NlIHRoZSBnZW9wYWNrYWdlJywgZnVuY3Rpb24oKSB7XG4gICAgZ2VvUGFja2FnZS5jbG9zZSgpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGdldCB0aGUgdGlsZSBtYXRyaXhlcycsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICB0aWxlTWF0cml4RGFvLnF1ZXJ5Rm9yQWxsKGZ1bmN0aW9uKGVyciwgdGlsZU1hdHJpY2VzKSB7XG4gICAgICB0aWxlTWF0cmljZXMuc2hvdWxkLmhhdmUucHJvcGVydHkoJ2xlbmd0aCcsIDQpO1xuICAgICAgZG9uZSgpO1xuICAgIH0pXG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgdHJhbnNmb3JtIHRoZSB0aWxlIG1hdHJpeCByZXN1bHQgdG8gYSBUaWxlTWF0cml4JywgZnVuY3Rpb24oZG9uZSkge1xuICAgIHRpbGVNYXRyaXhEYW8ucXVlcnlGb3JBbGwoZnVuY3Rpb24oZXJyLCB0aWxlTWF0cmljZXMpIHtcbiAgICAgIHRpbGVNYXRyaWNlc1swXS5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgndGFibGVfbmFtZScsICdUSUxFU29zbWRzJyk7XG4gICAgICB0aWxlTWF0cmljZXNbMF0uc2hvdWxkLmhhdmUucHJvcGVydHkoJ3pvb21fbGV2ZWwnLCAwKTtcbiAgICAgIHRpbGVNYXRyaWNlc1swXS5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnbWF0cml4X3dpZHRoJywgMSk7XG4gICAgICB0aWxlTWF0cmljZXNbMF0uc2hvdWxkLmhhdmUucHJvcGVydHkoJ21hdHJpeF93aWR0aCcsIDEpO1xuICAgICAgdGlsZU1hdHJpY2VzWzBdLnNob3VsZC5oYXZlLnByb3BlcnR5KCd0aWxlX2hlaWdodCcsIDI1Nik7XG4gICAgICB0aWxlTWF0cmljZXNbMF0uc2hvdWxkLmhhdmUucHJvcGVydHkoJ3RpbGVfd2lkdGgnLCAyNTYpO1xuICAgICAgdGlsZU1hdHJpY2VzWzBdLnNob3VsZC5oYXZlLnByb3BlcnR5KCdwaXhlbF94X3NpemUnLCAxNTY1NDMuMDMzOTI4MDQwOTcpO1xuICAgICAgdGlsZU1hdHJpY2VzWzBdLnNob3VsZC5oYXZlLnByb3BlcnR5KCdwaXhlbF95X3NpemUnLCAxNTY1NDMuMDMzOTI4MDQxKTtcblxuICAgICAgdmFyIHRpbGVNYXRyaXggPSB0aWxlTWF0cml4RGFvLmNyZWF0ZU9iamVjdCgpO1xuICAgICAgdGlsZU1hdHJpeERhby5wb3B1bGF0ZU9iamVjdEZyb21SZXN1bHQodGlsZU1hdHJpeCwgdGlsZU1hdHJpY2VzWzBdKTtcbiAgICAgIHRpbGVNYXRyaXguc2hvdWxkLmhhdmUucHJvcGVydHkoJ21hdHJpeF93aWR0aCcsIDEpO1xuICAgICAgdGlsZU1hdHJpeC5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnbWF0cml4X2hlaWdodCcsIDEpO1xuICAgICAgdGlsZU1hdHJpeC5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnem9vbV9sZXZlbCcsIDApO1xuICAgICAgdGlsZU1hdHJpeC5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgndGFibGVfbmFtZScsICdUSUxFU29zbWRzJyk7XG4gICAgICB0aWxlTWF0cml4LnNob3VsZC5oYXZlLnByb3BlcnR5KCd0aWxlX3dpZHRoJywgMjU2KTtcbiAgICAgIHRpbGVNYXRyaXguc2hvdWxkLmhhdmUucHJvcGVydHkoJ3RpbGVfaGVpZ2h0JywgMjU2KTtcbiAgICAgIHRpbGVNYXRyaXguc2hvdWxkLmhhdmUucHJvcGVydHkoJ3BpeGVsX3hfc2l6ZScsIDE1NjU0My4wMzM5MjgwNDA5Nyk7XG4gICAgICB0aWxlTWF0cml4LnNob3VsZC5oYXZlLnByb3BlcnR5KCdwaXhlbF95X3NpemUnLCAxNTY1NDMuMDMzOTI4MDQxKTtcblxuICAgICAgZG9uZSgpO1xuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGdldCB0aGUgQ29udGVudHMgZnJvbSBhIFRpbGVNYXRyaXgnLCBmdW5jdGlvbihkb25lKSB7XG4gICAgdGlsZU1hdHJpeERhby5xdWVyeUZvckFsbChmdW5jdGlvbihlcnIsIHRpbGVNYXRyaWNlcykge1xuICAgICAgdmFyIHRpbGVNYXRyaXggPSB0aWxlTWF0cml4RGFvLmNyZWF0ZU9iamVjdCgpO1xuICAgICAgdGlsZU1hdHJpeERhby5wb3B1bGF0ZU9iamVjdEZyb21SZXN1bHQodGlsZU1hdHJpeCwgdGlsZU1hdHJpY2VzWzBdKTtcbiAgICAgIHRpbGVNYXRyaXhEYW8uZ2V0Q29udGVudHModGlsZU1hdHJpeCwgZnVuY3Rpb24oZXJyLCBjb250ZW50cykge1xuICAgICAgICBzaG91bGQubm90LmV4aXN0KGVycik7XG4gICAgICAgIHNob3VsZC5leGlzdChjb250ZW50cyk7XG4gICAgICAgIGNvbnRlbnRzLnNob3VsZC5oYXZlLnByb3BlcnR5KCd0YWJsZV9uYW1lJywgJ1RJTEVTb3NtZHMnKTtcbiAgICAgICAgY29udGVudHMuc2hvdWxkLmhhdmUucHJvcGVydHkoJ2RhdGFfdHlwZScsICd0aWxlcycpO1xuICAgICAgICBjb250ZW50cy5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnaWRlbnRpZmllcicsICdUSUxFU29zbWRzJyk7XG4gICAgICAgIGNvbnRlbnRzLnNob3VsZC5oYXZlLnByb3BlcnR5KCdkZXNjcmlwdGlvbicsIG51bGwpO1xuICAgICAgICBjb250ZW50cy5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnbGFzdF9jaGFuZ2UnLCAnMjAxNS0xMi0wNFQxNToyODo1My44NzFaJyk7XG4gICAgICAgIGNvbnRlbnRzLnNob3VsZC5oYXZlLnByb3BlcnR5KCdtaW5feCcsIC0xODApO1xuICAgICAgICBjb250ZW50cy5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnbWluX3knLCAtODUuMDUxMTI4Nzc5ODA2Nik7XG4gICAgICAgIGNvbnRlbnRzLnNob3VsZC5oYXZlLnByb3BlcnR5KCdtYXhfeCcsIDE4MCk7XG4gICAgICAgIGNvbnRlbnRzLnNob3VsZC5oYXZlLnByb3BlcnR5KCdtYXhfeScsIDg1LjA1MTEyODc3OTgwNjYpO1xuICAgICAgICBjb250ZW50cy5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnc3JzX2lkJywgNDMyNik7XG4gICAgICAgIGRvbmUoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGdldCB0aGUgVGlsZU1hdHJpeFNldCBmcm9tIGEgVGlsZU1hdHJpeCcsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICB0aWxlTWF0cml4RGFvLnF1ZXJ5Rm9yQWxsKGZ1bmN0aW9uKGVyciwgdGlsZU1hdHJpY2VzKSB7XG4gICAgICB2YXIgdGlsZU1hdHJpeCA9IHRpbGVNYXRyaXhEYW8uY3JlYXRlT2JqZWN0KCk7XG4gICAgICB0aWxlTWF0cml4RGFvLnBvcHVsYXRlT2JqZWN0RnJvbVJlc3VsdCh0aWxlTWF0cml4LCB0aWxlTWF0cmljZXNbMF0pO1xuICAgICAgdGlsZU1hdHJpeERhby5nZXRUaWxlTWF0cml4U2V0KHRpbGVNYXRyaXgsIGZ1bmN0aW9uKGVyciwgdGlsZU1hdHJpeFNldCkge1xuICAgICAgICBzaG91bGQuZXhpc3QodGlsZU1hdHJpeFNldCk7XG4gICAgICAgIHNob3VsZC5ub3QuZXhpc3QoZXJyKTtcbiAgICAgICAgdGlsZU1hdHJpeFNldC5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnc3JzX2lkJywgMzg1Nyk7XG4gICAgICAgIHRpbGVNYXRyaXhTZXQuc2hvdWxkLmhhdmUucHJvcGVydHkoJ3RhYmxlX25hbWUnLCAnVElMRVNvc21kcycpO1xuICAgICAgICB0aWxlTWF0cml4U2V0LnNob3VsZC5oYXZlLnByb3BlcnR5KCdtaW5feCcsIC0yMDAzNzUwOC4zNDI3ODkyNDQpO1xuICAgICAgICB0aWxlTWF0cml4U2V0LnNob3VsZC5oYXZlLnByb3BlcnR5KCdtaW5feScsIC0yMDAzNzUwOC4zNDI3ODkyNDQpO1xuICAgICAgICB0aWxlTWF0cml4U2V0LnNob3VsZC5oYXZlLnByb3BlcnR5KCdtYXhfeCcsIDIwMDM3NTA4LjM0Mjc4OTI0NCk7XG4gICAgICAgIHRpbGVNYXRyaXhTZXQuc2hvdWxkLmhhdmUucHJvcGVydHkoJ21heF95JywgMjAwMzc1MDguMzQyNzg5MjQ0KTtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG59KTtcbiIsInZhciBHZW9QYWNrYWdlTWFuYWdlciA9IHJlcXVpcmUoJy4uLy4uLy4uL2xpYi9nZW9QYWNrYWdlTWFuYWdlcicpXG4gICwgVGlsZU1hdHJpeFNldERhbyA9IHJlcXVpcmUoJy4uLy4uLy4uL2xpYi90aWxlcy9tYXRyaXhzZXQnKS5UaWxlTWF0cml4U2V0RGFvXG4gICwgVGlsZU1hdHJpeFNldCA9IHJlcXVpcmUoJy4uLy4uLy4uL2xpYi90aWxlcy9tYXRyaXhzZXQnKS5UaWxlTWF0cml4U2V0XG4gICwgQm91bmRpbmdCb3ggPSByZXF1aXJlKCcuLi8uLi8uLi9saWIvYm91bmRpbmdCb3gnKVxuICAsIHNob3VsZCA9IHJlcXVpcmUoJ2NoYWknKS5zaG91bGQoKVxuICAsIHBhdGggPSByZXF1aXJlKCdwYXRoJyk7XG5cbmRlc2NyaWJlKCdUaWxlIE1hdHJpeCBTZXQgdGVzdHMnLCBmdW5jdGlvbigpIHtcblxuICB2YXIgZ2VvUGFja2FnZTtcbiAgdmFyIHRpbGVNYXRyaXhEYW87XG5cbiAgYmVmb3JlRWFjaCgnc2hvdWxkIG9wZW4gdGhlIGdlb3BhY2thZ2UnLCBmdW5jdGlvbihkb25lKSB7XG4gICAgdmFyIGZpbGVuYW1lID0gcGF0aC5qb2luKF9fZGlybmFtZSwgJy4uJywgJy4uJywgJ2ZpeHR1cmVzJywgJ3JpdmVycy5ncGtnJyk7XG4gICAgR2VvUGFja2FnZU1hbmFnZXIub3BlbihmaWxlbmFtZSwgZnVuY3Rpb24oZXJyLCBncCkge1xuICAgICAgZ2VvUGFja2FnZSA9IGdwO1xuICAgICAgc2hvdWxkLm5vdC5leGlzdChlcnIpO1xuICAgICAgc2hvdWxkLmV4aXN0KGdwKTtcbiAgICAgIHNob3VsZC5leGlzdChncC5nZXREYXRhYmFzZSgpLmdldERCQ29ubmVjdGlvbigpKTtcbiAgICAgIGdwLmdldFBhdGgoKS5zaG91bGQuYmUuZXF1YWwoZmlsZW5hbWUpO1xuICAgICAgdGlsZU1hdHJpeFNldERhbyA9IG5ldyBUaWxlTWF0cml4U2V0RGFvKGdwLmdldERhdGFiYXNlKCkpO1xuICAgICAgZG9uZSgpO1xuICAgIH0pO1xuICB9KTtcblxuICBhZnRlckVhY2goJ3Nob3VsZCBjbG9zZSB0aGUgZ2VvcGFja2FnZScsIGZ1bmN0aW9uKCkge1xuICAgIGdlb1BhY2thZ2UuY2xvc2UoKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBnZXQgdGhlIHRpbGUgbWF0cml4ZXMnLCBmdW5jdGlvbihkb25lKSB7XG4gICAgdGlsZU1hdHJpeFNldERhby5xdWVyeUZvckFsbChmdW5jdGlvbihlcnIsIHRpbGVNYXRyaXhTZXRzKSB7XG4gICAgICB0aWxlTWF0cml4U2V0cy5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnbGVuZ3RoJywgMSk7XG4gICAgICBkb25lKCk7XG4gICAgfSlcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBnZXQgdGhlIFRpbGVNYXRyaXhTZXQgZnJvbSB0aGUgSUQnLCBmdW5jdGlvbihkb25lKSB7XG4gICAgdGlsZU1hdHJpeFNldERhby5xdWVyeUZvcklkT2JqZWN0KCdUSUxFU29zbWRzJywgZnVuY3Rpb24oZXJyLCB0aWxlTWF0cml4U2V0KSB7XG4gICAgICBzaG91bGQubm90LmV4aXN0KGVycik7XG4gICAgICBzaG91bGQuZXhpc3QodGlsZU1hdHJpeFNldCk7XG4gICAgICB0aWxlTWF0cml4U2V0LnNob3VsZC5oYXZlLnByb3BlcnR5KCd0YWJsZV9uYW1lJywgJ1RJTEVTb3NtZHMnKTtcbiAgICAgIHRpbGVNYXRyaXhTZXQuc2hvdWxkLmhhdmUucHJvcGVydHkoJ3Nyc19pZCcsIDM4NTcpO1xuICAgICAgdGlsZU1hdHJpeFNldC5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnbWluX3gnLCAtMjAwMzc1MDguMzQyNzg5MjQ0KTtcbiAgICAgIHRpbGVNYXRyaXhTZXQuc2hvdWxkLmhhdmUucHJvcGVydHkoJ21pbl95JywgLTIwMDM3NTA4LjM0Mjc4OTI0NCk7XG4gICAgICB0aWxlTWF0cml4U2V0LnNob3VsZC5oYXZlLnByb3BlcnR5KCdtYXhfeCcsIDIwMDM3NTA4LjM0Mjc4OTI0NCk7XG4gICAgICB0aWxlTWF0cml4U2V0LnNob3VsZC5oYXZlLnByb3BlcnR5KCdtYXhfeScsIDIwMDM3NTA4LjM0Mjc4OTI0NCk7XG4gICAgICBkb25lKCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZ2V0IHRoZSB0aWxlIHRhYmxlIG5hbWVzIGZyb20gdGhlIFRpbGVNYXRyaXhTZXQnLCBmdW5jdGlvbihkb25lKSB7XG4gICAgdGlsZU1hdHJpeFNldERhby5nZXRUaWxlVGFibGVzKGZ1bmN0aW9uKGVyciwgdGFibGVOYW1lcykge1xuICAgICAgc2hvdWxkLm5vdC5leGlzdChlcnIpO1xuICAgICAgc2hvdWxkLmV4aXN0KHRhYmxlTmFtZXMpO1xuICAgICAgdGFibGVOYW1lcy5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnbGVuZ3RoJywgMSk7XG4gICAgICB0YWJsZU5hbWVzWzBdLnNob3VsZC5iZS5lcXVhbCgnVElMRVNvc21kcycpO1xuICAgICAgZG9uZSgpO1xuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGdldCB0aGUgcHJvamVjdGlvbiBmcm9tIHRoZSBUaWxlTWF0cml4U2V0JywgZnVuY3Rpb24oZG9uZSkge1xuICAgIHRpbGVNYXRyaXhTZXREYW8ucXVlcnlGb3JJZE9iamVjdCgnVElMRVNvc21kcycsIGZ1bmN0aW9uKGVyciwgdGlsZU1hdHJpeFNldCkge1xuICAgICAgc2hvdWxkLm5vdC5leGlzdChlcnIpO1xuICAgICAgc2hvdWxkLmV4aXN0KHRpbGVNYXRyaXhTZXQpO1xuICAgICAgdGlsZU1hdHJpeFNldERhby5nZXRQcm9qZWN0aW9uKHRpbGVNYXRyaXhTZXQsIGZ1bmN0aW9uKGVyciwgcHJvamVjdGlvbikge1xuICAgICAgICBzaG91bGQuZXhpc3QocHJvamVjdGlvbik7XG4gICAgICAgIHNob3VsZC5ub3QuZXhpc3QoZXJyKTtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZ2V0IHRoZSBDb250ZW50cyBmcm9tIHRoZSBUaWxlTWF0cml4U2V0JywgZnVuY3Rpb24oZG9uZSkge1xuICAgIHRpbGVNYXRyaXhTZXREYW8ucXVlcnlGb3JJZE9iamVjdCgnVElMRVNvc21kcycsIGZ1bmN0aW9uKGVyciwgdGlsZU1hdHJpeFNldCkge1xuICAgICAgc2hvdWxkLm5vdC5leGlzdChlcnIpO1xuICAgICAgc2hvdWxkLmV4aXN0KHRpbGVNYXRyaXhTZXQpO1xuICAgICAgdGlsZU1hdHJpeFNldERhby5nZXRDb250ZW50cyh0aWxlTWF0cml4U2V0LCBmdW5jdGlvbihlcnIsIGNvbnRlbnRzKSB7XG4gICAgICAgIHNob3VsZC5leGlzdChjb250ZW50cyk7XG4gICAgICAgIHNob3VsZC5ub3QuZXhpc3QoZXJyKTtcbiAgICAgICAgY29udGVudHMuc2hvdWxkLmhhdmUucHJvcGVydHkoJ3RhYmxlX25hbWUnLCAnVElMRVNvc21kcycpO1xuICAgICAgICBjb250ZW50cy5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnZGF0YV90eXBlJywgJ3RpbGVzJyk7XG4gICAgICAgIGNvbnRlbnRzLnNob3VsZC5oYXZlLnByb3BlcnR5KCdpZGVudGlmaWVyJywgJ1RJTEVTb3NtZHMnKTtcbiAgICAgICAgY29udGVudHMuc2hvdWxkLmhhdmUucHJvcGVydHkoJ2Rlc2NyaXB0aW9uJywgbnVsbCk7XG4gICAgICAgIGNvbnRlbnRzLnNob3VsZC5oYXZlLnByb3BlcnR5KCdsYXN0X2NoYW5nZScsICcyMDE1LTEyLTA0VDE1OjI4OjUzLjg3MVonKTtcbiAgICAgICAgY29udGVudHMuc2hvdWxkLmhhdmUucHJvcGVydHkoJ21pbl94JywgLTE4MCk7XG4gICAgICAgIGNvbnRlbnRzLnNob3VsZC5oYXZlLnByb3BlcnR5KCdtaW5feScsIC04NS4wNTExMjg3Nzk4MDY2KTtcbiAgICAgICAgY29udGVudHMuc2hvdWxkLmhhdmUucHJvcGVydHkoJ21heF94JywgMTgwKTtcbiAgICAgICAgY29udGVudHMuc2hvdWxkLmhhdmUucHJvcGVydHkoJ21heF95JywgODUuMDUxMTI4Nzc5ODA2Nik7XG4gICAgICAgIGNvbnRlbnRzLnNob3VsZC5oYXZlLnByb3BlcnR5KCdzcnNfaWQnLCA0MzI2KTtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZ2V0IHRoZSBCb3VuZGluZ0JveCBmcm9tIHRoZSBUaWxlTWF0cml4U2V0JywgZnVuY3Rpb24oZG9uZSkge1xuICAgIHRpbGVNYXRyaXhTZXREYW8ucXVlcnlGb3JJZE9iamVjdCgnVElMRVNvc21kcycsIGZ1bmN0aW9uKGVyciwgdGlsZU1hdHJpeFNldCkge1xuICAgICAgc2hvdWxkLm5vdC5leGlzdChlcnIpO1xuICAgICAgc2hvdWxkLmV4aXN0KHRpbGVNYXRyaXhTZXQpO1xuICAgICAgdmFyIGJiID0gdGlsZU1hdHJpeFNldC5nZXRCb3VuZGluZ0JveCgpO1xuICAgICAgYmIubWluTG9uZ2l0dWRlLnNob3VsZC5iZS5lcXVhbCgtMjAwMzc1MDguMzQyNzg5MjQ0KTtcbiAgICAgIGJiLm1heExvbmdpdHVkZS5zaG91bGQuYmUuZXF1YWwoMjAwMzc1MDguMzQyNzg5MjQ0KTtcbiAgICAgIGJiLm1pbkxhdGl0dWRlLnNob3VsZC5iZS5lcXVhbCgtMjAwMzc1MDguMzQyNzg5MjQ0KTtcbiAgICAgIGJiLm1heExhdGl0dWRlLnNob3VsZC5iZS5lcXVhbCgyMDAzNzUwOC4zNDI3ODkyNDQpO1xuICAgICAgZG9uZSgpO1xuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHNldCB0aGUgQm91bmRpbmdCb3ggZnJvbSB0aGUgVGlsZU1hdHJpeFNldCcsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICB0aWxlTWF0cml4U2V0RGFvLnF1ZXJ5Rm9ySWRPYmplY3QoJ1RJTEVTb3NtZHMnLCBmdW5jdGlvbihlcnIsIHRpbGVNYXRyaXhTZXQpIHtcbiAgICAgIHNob3VsZC5ub3QuZXhpc3QoZXJyKTtcbiAgICAgIHNob3VsZC5leGlzdCh0aWxlTWF0cml4U2V0KTtcbiAgICAgIHZhciBiYiA9IG5ldyBCb3VuZGluZ0JveCgtMSwgMSwgLTEsIDEpO1xuICAgICAgdGlsZU1hdHJpeFNldC5zZXRCb3VuZGluZ0JveChiYik7XG4gICAgICB0aWxlTWF0cml4U2V0LnNob3VsZC5oYXZlLnByb3BlcnR5KCdtaW5feCcsIC0xKTtcbiAgICAgIHRpbGVNYXRyaXhTZXQuc2hvdWxkLmhhdmUucHJvcGVydHkoJ21pbl95JywgLTEpO1xuICAgICAgdGlsZU1hdHJpeFNldC5zaG91bGQuaGF2ZS5wcm9wZXJ0eSgnbWF4X3gnLCAxKTtcbiAgICAgIHRpbGVNYXRyaXhTZXQuc2hvdWxkLmhhdmUucHJvcGVydHkoJ21heF95JywgMSk7XG4gICAgICBkb25lKCk7XG4gICAgfSk7XG4gIH0pO1xuXG59KTtcbiIsInZhciBVc2VyVGFibGVSZWFkZXIgPSByZXF1aXJlKCcuLi8uLi8uLi9saWIvdXNlci91c2VyVGFibGVSZWFkZXIuanMnKVxuICAsIFVzZXJEYW8gPSByZXF1aXJlKCcuLi8uLi8uLi9saWIvdXNlci91c2VyRGFvJylcbiAgLCBHZW9QYWNrYWdlQ29ubmVjdGlvbiA9IHJlcXVpcmUoJy4uLy4uLy4uL2xpYi9kYi9nZW9QYWNrYWdlQ29ubmVjdGlvbi5qcycpXG4gICwgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKVxuICAsIHNob3VsZCA9IHJlcXVpcmUoJ2NoYWknKS5zaG91bGQoKTtcblxuZGVzY3JpYmUoJ1VzZXJUYWJsZVJlYWRlciB0ZXN0cycsIGZ1bmN0aW9uKCkge1xuICB2YXIgY29ubmVjdGlvbjtcbiAgYmVmb3JlRWFjaCgnY3JlYXRlIHRoZSBHZW9QYWNrYWdlIGNvbm5lY3Rpb24nLCBmdW5jdGlvbihkb25lKSB7XG4gICAgR2VvUGFja2FnZUNvbm5lY3Rpb24uY29ubmVjdChwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4nLCAnLi4nLCAnZml4dHVyZXMnLCAnZ2RhbF9zYW1wbGUuZ3BrZycpLCBmdW5jdGlvbihlcnIsIGdlb1BhY2thZ2VDb25uZWN0aW9uKSB7XG4gICAgICBjb25uZWN0aW9uID0gZ2VvUGFja2FnZUNvbm5lY3Rpb247XG4gICAgICBzaG91bGQuZXhpc3QoY29ubmVjdGlvbik7XG4gICAgICBkb25lKCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGFmdGVyRWFjaCgnY2xvc2UgdGhlIGdlb3BhY2thZ2UgY29ubmVjdGlvbicsIGZ1bmN0aW9uKCkge1xuICAgIGNvbm5lY3Rpb24uY2xvc2UoKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCByZWFkIHRoZSB0YWJsZScsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICB2YXIgcmVhZGVyID0gbmV3IFVzZXJUYWJsZVJlYWRlcigncG9pbnQyZCcpO1xuICAgIHJlYWRlci5yZWFkVGFibGUoY29ubmVjdGlvbiwgZnVuY3Rpb24oZXJyLCB0YWJsZSkge1xuICAgICAgdGFibGUudGFibGVfbmFtZS5zaG91bGQuYmUuZXF1YWwoJ3BvaW50MmQnKTtcbiAgICAgIHRhYmxlLmNvbHVtbnMubGVuZ3RoLnNob3VsZC5iZS5lcXVhbCg4KTtcbiAgICAgIHRhYmxlLmNvbHVtbnNbMF0ubmFtZS5zaG91bGQuYmUuZXF1YWwoJ2ZpZCcpO1xuICAgICAgdGFibGUuY29sdW1uc1sxXS5uYW1lLnNob3VsZC5iZS5lcXVhbCgnZ2VvbScpO1xuICAgICAgdGFibGUuY29sdW1uc1syXS5uYW1lLnNob3VsZC5iZS5lcXVhbCgnaW50ZmllbGQnKTtcbiAgICAgIHRhYmxlLmNvbHVtbnNbM10ubmFtZS5zaG91bGQuYmUuZXF1YWwoJ3N0cmZpZWxkJyk7XG4gICAgICB0YWJsZS5jb2x1bW5zWzRdLm5hbWUuc2hvdWxkLmJlLmVxdWFsKCdyZWFsZmllbGQnKTtcbiAgICAgIHRhYmxlLmNvbHVtbnNbNV0ubmFtZS5zaG91bGQuYmUuZXF1YWwoJ2RhdGV0aW1lZmllbGQnKTtcbiAgICAgIHRhYmxlLmNvbHVtbnNbNl0ubmFtZS5zaG91bGQuYmUuZXF1YWwoJ2RhdGVmaWVsZCcpO1xuICAgICAgdGFibGUuY29sdW1uc1s3XS5uYW1lLnNob3VsZC5iZS5lcXVhbCgnYmluYXJ5ZmllbGQnKTtcblxuICAgICAgZG9uZSgpO1xuICAgIH0pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHF1ZXJ5IHRoZSB0YWJsZScsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICB2YXIgcmVhZGVyID0gbmV3IFVzZXJUYWJsZVJlYWRlcigncG9pbnQyZCcpO1xuICAgIHJlYWRlci5yZWFkVGFibGUoY29ubmVjdGlvbiwgZnVuY3Rpb24oZXJyLCB0YWJsZSkge1xuICAgICAgdmFyIHVkID0gbmV3IFVzZXJEYW8oY29ubmVjdGlvbiwgdGFibGUpO1xuICAgICAgdWQucXVlcnlGb3JBbGwoZnVuY3Rpb24oZXJyLCByZXN1bHRzKSB7XG4gICAgICAgIHNob3VsZC5leGlzdChyZXN1bHRzKTtcbiAgICAgICAgc2hvdWxkLm5vdC5leGlzdChlcnIpO1xuICAgICAgICByZXN1bHRzLmxlbmd0aC5zaG91bGQuYmUuZXF1YWwoMik7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVzdWx0cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIHZhciB1ciA9IHVkLmdldFJvdyhyZXN1bHRzW2ldKTtcbiAgICAgICAgICB1ci5jb2x1bW5Db3VudCgpLnNob3VsZC5iZS5lcXVhbCg4KTtcbiAgICAgICAgICB2YXIgbmFtZXMgPSB1ci5nZXRDb2x1bW5OYW1lcygpXG4gICAgICAgICAgbmFtZXMuc2hvdWxkLmluY2x1ZGUoJ2ZpZCcpO1xuICAgICAgICAgIG5hbWVzLnNob3VsZC5pbmNsdWRlKCdnZW9tJyk7XG4gICAgICAgICAgbmFtZXMuc2hvdWxkLmluY2x1ZGUoJ2ludGZpZWxkJyk7XG4gICAgICAgICAgbmFtZXMuc2hvdWxkLmluY2x1ZGUoJ3N0cmZpZWxkJyk7XG4gICAgICAgICAgbmFtZXMuc2hvdWxkLmluY2x1ZGUoJ3JlYWxmaWVsZCcpO1xuICAgICAgICAgIG5hbWVzLnNob3VsZC5pbmNsdWRlKCdkYXRldGltZWZpZWxkJyk7XG4gICAgICAgICAgbmFtZXMuc2hvdWxkLmluY2x1ZGUoJ2RhdGVmaWVsZCcpO1xuICAgICAgICAgIG5hbWVzLnNob3VsZC5pbmNsdWRlKCdiaW5hcnlmaWVsZCcpO1xuICAgICAgICAgIHVyLmdldENvbHVtbk5hbWVXaXRoSW5kZXgoMCkuc2hvdWxkLmJlLmVxdWFsKCdmaWQnKTtcbiAgICAgICAgICB1ci5nZXRDb2x1bW5JbmRleFdpdGhDb2x1bW5OYW1lKCdmaWQnKS5zaG91bGQuYmUuZXF1YWwoMCk7XG4gICAgICAgICAgdXIuZ2V0VmFsdWVXaXRoSW5kZXgoMCkuc2hvdWxkLmJlLmVxdWFsKGkrMSk7XG4gICAgICAgICAgdXIuZ2V0VmFsdWVXaXRoQ29sdW1uTmFtZSgnZmlkJykuc2hvdWxkLmJlLmVxdWFsKGkrMSk7XG4gICAgICAgICAgdXIuZ2V0Um93Q29sdW1uVHlwZVdpdGhJbmRleCgwKS5zaG91bGQuYmUuZXF1YWwoNSk7XG4gICAgICAgICAgdXIuZ2V0Um93Q29sdW1uVHlwZVdpdGhDb2x1bW5OYW1lKCdmaWQnKS5zaG91bGQuYmUuZXF1YWwoNSk7XG4gICAgICAgICAgdXIuZ2V0Q29sdW1uV2l0aEluZGV4KDApLm5hbWUuc2hvdWxkLmJlLmVxdWFsKCdmaWQnKTtcbiAgICAgICAgICB1ci5nZXRDb2x1bW5XaXRoQ29sdW1uTmFtZSgnZmlkJykubmFtZS5zaG91bGQuYmUuZXF1YWwoJ2ZpZCcpO1xuICAgICAgICAgIHVyLmdldElkKCkuc2hvdWxkLmJlLmVxdWFsKGkrMSk7XG4gICAgICAgICAgdXIuZ2V0UGtDb2x1bW4oKS5uYW1lLnNob3VsZC5iZS5lcXVhbCgnZmlkJyk7XG4gICAgICAgICAgdXIuZ2V0Q29sdW1uV2l0aEluZGV4KDApLmdldFR5cGVOYW1lKCkuc2hvdWxkLmJlLmVxdWFsKCdJTlRFR0VSJyk7XG4gICAgICAgICAgc2hvdWxkLmV4aXN0KHVyLnZhbHVlcyk7XG4gICAgICAgIH1cbiAgICAgICAgZG9uZSgpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG59KTtcbiIsInZhciBHZW9QYWNrYWdlVmFsaWRhdGUgPSByZXF1aXJlKCcuLi8uLi8uLi9saWIvdmFsaWRhdGUvZ2VvUGFja2FnZVZhbGlkYXRlJylcbiAgLCBHZW9QYWNrYWdlID0gcmVxdWlyZSgnLi4vLi4vLi4vbGliL2dlb1BhY2thZ2UnKVxuICAsIEdlb1BhY2thZ2VDb25uZWN0aW9uID0gcmVxdWlyZSgnLi4vLi4vLi4vbGliL2RiL2dlb1BhY2thZ2VDb25uZWN0aW9uJylcbiAgLCBzaG91bGQgPSByZXF1aXJlKCdjaGFpJykuc2hvdWxkKClcbiAgLCBwYXRoID0gcmVxdWlyZSgncGF0aCcpO1xuXG5kZXNjcmliZSgnR2VvUGFja2FnZSBWYWxpZGF0ZSB0ZXN0cycsIGZ1bmN0aW9uKCkge1xuXG4gIGl0KCdzaG91bGQgaGF2ZSBhIGdlb3BhY2thZ2UgZXh0ZW5zaW9uIHdpdGggZ3BrZycsIGZ1bmN0aW9uKCkge1xuICAgIHZhciBoYXNHZW9QYWNrYWdlRXh0ZW5zaW9uID0gR2VvUGFja2FnZVZhbGlkYXRlLmhhc0dlb1BhY2thZ2VFeHRlbnNpb24oJ3Rlc3QuZ3BrZycpO1xuICAgIGhhc0dlb1BhY2thZ2VFeHRlbnNpb24uc2hvdWxkLmJlLmVxdWFsKHRydWUpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGhhdmUgYSBnZW9wYWNrYWdlIGV4dGVuc2lvbiB3aXRoIEdQS0cnLCBmdW5jdGlvbigpIHtcbiAgICB2YXIgaGFzR2VvUGFja2FnZUV4dGVuc2lvbiA9IEdlb1BhY2thZ2VWYWxpZGF0ZS5oYXNHZW9QYWNrYWdlRXh0ZW5zaW9uKCd0ZXN0LkdQS0cnKTtcbiAgICBoYXNHZW9QYWNrYWdlRXh0ZW5zaW9uLnNob3VsZC5iZS5lcXVhbCh0cnVlKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBoYXZlIGEgZ2VvcGFja2FnZSBleHRlbnNpb24gd2l0aCBncGt4JywgZnVuY3Rpb24oKSB7XG4gICAgdmFyIGhhc0dlb1BhY2thZ2VFeHRlbnNpb24gPSBHZW9QYWNrYWdlVmFsaWRhdGUuaGFzR2VvUGFja2FnZUV4dGVuc2lvbigndGVzdC5ncGt4Jyk7XG4gICAgaGFzR2VvUGFja2FnZUV4dGVuc2lvbi5zaG91bGQuYmUuZXF1YWwodHJ1ZSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgaGF2ZSBhIGdlb3BhY2thZ2UgZXh0ZW5zaW9uIHdpdGggR1BLWCcsIGZ1bmN0aW9uKCkge1xuICAgIHZhciBoYXNHZW9QYWNrYWdlRXh0ZW5zaW9uID0gR2VvUGFja2FnZVZhbGlkYXRlLmhhc0dlb1BhY2thZ2VFeHRlbnNpb24oJ3Rlc3QuR1BLWCcpO1xuICAgIGhhc0dlb1BhY2thZ2VFeHRlbnNpb24uc2hvdWxkLmJlLmVxdWFsKHRydWUpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIG5vdCBoYXZlIGEgZ2VvcGFja2FnZSBleHRlbnNpb24gd2l0aCBhc2RmJywgZnVuY3Rpb24oKSB7XG4gICAgdmFyIGhhc0dlb1BhY2thZ2VFeHRlbnNpb24gPSBHZW9QYWNrYWdlVmFsaWRhdGUuaGFzR2VvUGFja2FnZUV4dGVuc2lvbigndGVzdC5hc2RmJyk7XG4gICAgaGFzR2VvUGFja2FnZUV4dGVuc2lvbi5zaG91bGQuYmUuZXF1YWwoZmFsc2UpO1xuICB9KTtcblxuICAvLyBpdCgnc2hvdWxkIG5vdCBoYXZlIHRoZSByZXF1aXJlZCBtaW5pbXVtIHRhYmxlcycsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgLy8gICB2YXIgZGIgPSBuZXcgc3FsaXRlMy5EYXRhYmFzZSgnOm1lbW9yeTonLCBmdW5jdGlvbihlcnIpIHtcbiAgLy8gICAgIHZhciBnZW9QYWNrYWdlID0gbmV3IEdlb1BhY2thZ2UoJycsICcnLCBkYik7XG4gIC8vICAgICBHZW9QYWNrYWdlVmFsaWRhdGUuaGFzTWluaW11bVRhYmxlcyhnZW9QYWNrYWdlLCBmdW5jdGlvbihlcnIpIHtcbiAgLy8gICAgICAgc2hvdWxkLmV4aXN0KGVycik7XG4gIC8vICAgICAgIGRvbmUoKTtcbiAgLy8gICAgIH0pO1xuICAvLyAgIH0pO1xuICAvLyB9KTtcblxuICBpdCgnc2hvdWxkIG5vdCBoYXZlIHRoZSByZXF1aXJlZCBtaW5pbXVtIHRhYmxlcycsIGZ1bmN0aW9uKGRvbmUpIHtcbiAgICBHZW9QYWNrYWdlQ29ubmVjdGlvbi5jb25uZWN0KHBhdGguam9pbihfX2Rpcm5hbWUsICcuLicsICcuLicsICdmaXh0dXJlcycsICd0ZXN0Lmdwa2cnKSwgZnVuY3Rpb24oZXJyLCBjb25uZWN0aW9uKSB7XG4gICAgICB2YXIgZ2VvUGFja2FnZSA9IG5ldyBHZW9QYWNrYWdlKCcnLCAnJywgY29ubmVjdGlvbik7XG4gICAgICBHZW9QYWNrYWdlVmFsaWRhdGUuaGFzTWluaW11bVRhYmxlcyhnZW9QYWNrYWdlLCBmdW5jdGlvbihlcnIpIHtcbiAgICAgICAgc2hvdWxkLmV4aXN0KGVycik7XG4gICAgICAgIGNvbm5lY3Rpb24uY2xvc2UoKTtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgaGF2ZSB0aGUgcmVxdWlyZWQgbWluaW11bSB0YWJsZXMnLCBmdW5jdGlvbihkb25lKSB7XG4gICAgR2VvUGFja2FnZUNvbm5lY3Rpb24uY29ubmVjdChwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4nLCAnLi4nLCAnZml4dHVyZXMnLCAnZ2RhbF9zYW1wbGUuZ3BrZycpLCBmdW5jdGlvbihlcnIsIGNvbm5lY3Rpb24pIHtcbiAgICAgIHZhciBnZW9QYWNrYWdlID0gbmV3IEdlb1BhY2thZ2UoJycsICcnLCBjb25uZWN0aW9uKTtcbiAgICAgIEdlb1BhY2thZ2VWYWxpZGF0ZS5oYXNNaW5pbXVtVGFibGVzKGdlb1BhY2thZ2UsIGZ1bmN0aW9uKGVycikge1xuICAgICAgICBjb25uZWN0aW9uLmNsb3NlKCk7XG4gICAgICAgIHNob3VsZC5ub3QuZXhpc3QoZXJyKTtcbiAgICAgICAgZG9uZSgpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG59KTtcbiIsInZhciBXS0IgPSByZXF1aXJlKCcuLi8uLi8uLi9saWIvd2tiJyk7XG52YXIgd2t4ID0gcmVxdWlyZSgnd2t4Jyk7XG5cbmRlc2NyaWJlKCdXS0IgdGVzdHMnLCBmdW5jdGlvbigpIHtcblxuICBpdCgnc2hvdWxkIGdldCBhIGdlb21ldHJ5IGNvbGxlY3Rpb24gZnJvbSBhIEdFT01FVFJZIG5hbWUnLCBmdW5jdGlvbigpIHtcbiAgICB2YXIgd2tiID0gV0tCLmZyb21OYW1lKCdHRU9NRVRSWScpO1xuICAgIHdrYi5zaG91bGQuYmUuZXF1YWwod2t4LlR5cGVzLndrYi5HZW9tZXRyeUNvbGxlY3Rpb24pO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGdldCBhIHBvaW50IGZyb20gYSB3a3guVHlwZXMud2t0LlBvaW50IG5hbWUnLCBmdW5jdGlvbigpIHtcbiAgICB2YXIgd2tiID0gV0tCLmZyb21OYW1lKHdreC5UeXBlcy53a3QuUG9pbnQpO1xuICAgIHdrYi5zaG91bGQuYmUuZXF1YWwod2t4LlR5cGVzLndrYi5Qb2ludCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZ2V0IGEgTGluZVN0cmluZyBmcm9tIGEgd2t4LlR5cGVzLndrdC5MaW5lU3RyaW5nIG5hbWUnLCBmdW5jdGlvbigpIHtcbiAgICB2YXIgd2tiID0gV0tCLmZyb21OYW1lKHdreC5UeXBlcy53a3QuTGluZVN0cmluZyk7XG4gICAgd2tiLnNob3VsZC5iZS5lcXVhbCh3a3guVHlwZXMud2tiLkxpbmVTdHJpbmcpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGdldCBhIFBvbHlnb24gZnJvbSBhIHdreC5UeXBlcy53a3QuUG9seWdvbiBuYW1lJywgZnVuY3Rpb24oKSB7XG4gICAgdmFyIHdrYiA9IFdLQi5mcm9tTmFtZSh3a3guVHlwZXMud2t0LlBvbHlnb24pO1xuICAgIHdrYi5zaG91bGQuYmUuZXF1YWwod2t4LlR5cGVzLndrYi5Qb2x5Z29uKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBnZXQgYSBNdWx0aVBvaW50IGZyb20gYSB3a3guVHlwZXMud2t0Lk11bHRpUG9pbnQgbmFtZScsIGZ1bmN0aW9uKCkge1xuICAgIHZhciB3a2IgPSBXS0IuZnJvbU5hbWUod2t4LlR5cGVzLndrdC5NdWx0aVBvaW50KTtcbiAgICB3a2Iuc2hvdWxkLmJlLmVxdWFsKHdreC5UeXBlcy53a2IuTXVsdGlQb2ludCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZ2V0IGEgTXVsdGlMaW5lU3RyaW5nIGZyb20gYSB3a3guVHlwZXMud2t0Lk11bHRpTGluZVN0cmluZyBuYW1lJywgZnVuY3Rpb24oKSB7XG4gICAgdmFyIHdrYiA9IFdLQi5mcm9tTmFtZSh3a3guVHlwZXMud2t0Lk11bHRpTGluZVN0cmluZyk7XG4gICAgd2tiLnNob3VsZC5iZS5lcXVhbCh3a3guVHlwZXMud2tiLk11bHRpTGluZVN0cmluZyk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZ2V0IGEgTXVsdGlQb2x5Z29uIGZyb20gYSB3a3guVHlwZXMud2t0Lk11bHRpUG9seWdvbiBuYW1lJywgZnVuY3Rpb24oKSB7XG4gICAgdmFyIHdrYiA9IFdLQi5mcm9tTmFtZSh3a3guVHlwZXMud2t0Lk11bHRpUG9seWdvbik7XG4gICAgd2tiLnNob3VsZC5iZS5lcXVhbCh3a3guVHlwZXMud2tiLk11bHRpUG9seWdvbik7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgZ2V0IGEgR2VvbWV0cnlDb2xsZWN0aW9uIGZyb20gYSB3a3guVHlwZXMud2t0Lkdlb21ldHJ5Q29sbGVjdGlvbiBuYW1lJywgZnVuY3Rpb24oKSB7XG4gICAgdmFyIHdrYiA9IFdLQi5mcm9tTmFtZSh3a3guVHlwZXMud2t0Lkdlb21ldHJ5Q29sbGVjdGlvbik7XG4gICAgd2tiLnNob3VsZC5iZS5lcXVhbCh3a3guVHlwZXMud2tiLkdlb21ldHJ5Q29sbGVjdGlvbik7XG4gIH0pO1xufSk7XG4iLCJ2YXIgcG9seWZpbGwgPSByZXF1aXJlKCdiYWJlbC1wb2x5ZmlsbCcpO1xuXG5yZXF1aXJlKCdjaGFpJykuc2hvdWxkKCk7XG5cbnJlcXVpcmUoJy4vbGliL2NvcmUvY29udGVudHMvdGVzdENvbnRlbnRzJyk7XG5yZXF1aXJlKCcuL2xpYi9jb3JlL3Nycy90ZXN0U3BhdGlhbFJlZmVyZW5jZVN5c3RlbScpO1xucmVxdWlyZSgnLi9saWIvZGF0YUNvbHVtbnMvdGVzdERhdGFDb2x1bW5zJyk7XG5yZXF1aXJlKCcuL2xpYi9kYi90ZXN0RGF0YVR5cGVzJyk7XG5yZXF1aXJlKCcuL2xpYi9kYi90ZXN0VGFibGVDcmVhdG9yJyk7XG5yZXF1aXJlKCcuL2xpYi9mZWF0dXJlcy9jb2x1bW5zL3Rlc3RHZW9tZXRyeUNvbHVtbnMnKTtcbnJlcXVpcmUoJy4vbGliL2ZlYXR1cmVzL3VzZXIvdGVzdEZlYXR1cmVEYW8nKTtcbnJlcXVpcmUoJy4vbGliL2ZlYXR1cmVzL3VzZXIvdGVzdEZlYXR1cmVUYWJsZVJlYWRlcicpO1xucmVxdWlyZSgnLi9saWIvZ2VvbS90ZXN0R2VvbWV0cnlEYXRhJyk7XG5yZXF1aXJlKCcuL2xpYi9tZXRhZGF0YS9yZWZlcmVuY2UvdGVzdE1ldGFkYXRhUmVmZXJlbmNlLmpzJyk7XG5yZXF1aXJlKCcuL2xpYi9tZXRhZGF0YS90ZXN0TWV0YWRhdGEnKTtcbnJlcXVpcmUoJy4vbGliL3RpbGVzL3Rlc3RHZW9wYWNrYWdlVGlsZVJldHJpZXZlcicpO1xucmVxdWlyZSgnLi9saWIvdGlsZXMvdGVzdFRpbGVCb3VuZGluZ0JveFV0aWxzJyk7XG5yZXF1aXJlKCcuL2xpYi90aWxlcy90ZXN0VGlsZURhbycpO1xucmVxdWlyZSgnLi9saWIvdGlsZXMvdGVzdFRpbGVHcmlkJyk7XG5yZXF1aXJlKCcuL2xpYi90aWxlcy90ZXN0VGlsZU1hdHJpeCcpO1xucmVxdWlyZSgnLi9saWIvdGlsZXMvdGVzdFRpbGVNYXRyaXhTZXQnKTtcbnJlcXVpcmUoJy4vbGliL3VzZXIvdGVzdFVzZXJUYWJsZVJlYWRlcicpO1xucmVxdWlyZSgnLi9saWIvdmFsaWRhdGUvdGVzdEdlb1BhY2thZ2VWYWxpZGF0ZScpO1xucmVxdWlyZSgnLi9saWIvd2tiL3Rlc3RXa2InKTtcbnJlcXVpcmUoJy4vbGliL3Rlc3RCb3VuZGluZ0JveCcpO1xucmVxdWlyZSgnLi9saWIvd2tiL3Rlc3RXa2InKTtcbnJlcXVpcmUoJy4vbGliL3Rlc3RGZWF0dXJlQ3JlYXRlJyk7XG5yZXF1aXJlKCcuL2xpYi90ZXN0R2VvUGFja2FnZScpO1xucmVxdWlyZSgnLi9saWIvdGVzdEdlb1BhY2thZ2VDcmVhdGUnKTtcbnJlcXVpcmUoJy4vbGliL3Rlc3RHZW9QYWNrYWdlTWFuYWdlcicpO1xucmVxdWlyZSgnLi9saWIvdGVzdEdlb1BhY2thZ2VNYW5hZ2VyQ3JlYXRlJyk7XG5yZXF1aXJlKCcuL2xpYi90ZXN0VGlsZUNyZWF0ZScpO1xucmVxdWlyZSgnLi9saWIvaXNzdWVzL2lzc3VlNjguanMnKTtcbnJlcXVpcmUoJy4vbGliL3RpbGVzL2ZlYXR1cmVzL3Rlc3RGZWF0dXJlVGlsZXMnKTtcbnJlcXVpcmUoJy4vbGliL2V4dGVuc2lvbi9pbmRleC90ZXN0RmVhdHVyZVRhYmxlSW5kZXgnKTtcbnJlcXVpcmUoJy4vbGliL2V4dGVuc2lvbi90ZXN0RXh0ZW5zaW9uRGFvJyk7XG5cbmRlc2NyaWJlKCdBcnJheScsIGZ1bmN0aW9uKCkge1xuICBkZXNjcmliZSgnI2luZGV4T2YoKScsIGZ1bmN0aW9uKCkge1xuICAgIGl0KCdzaG91bGQgcmV0dXJuIC0xIHdoZW4gdGhlIHZhbHVlIGlzIG5vdCBwcmVzZW50JywgZnVuY3Rpb24oKSB7XG4gICAgICBbMSwyLDNdLmluZGV4T2YoNSkuc2hvdWxkLmJlLmVxdWFsKC0xKTtcbiAgICAgIFsxLDIsM10uaW5kZXhPZigwKS5zaG91bGQuYmUuZXF1YWwoLTEpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19 diff --git a/docs/gp.js b/docs/gp.js index 227845e62..646ecb547 100644 --- a/docs/gp.js +++ b/docs/gp.js @@ -44317,7 +44317,6 @@ var TileCreator = require('./index').TileCreator function CanvasTileCreator(width, height, tileMatrix, tileMatrixSet, tileBoundingBox, srs, projectionTo, canvas, callback) { TileCreator.apply(this, arguments); - this.canvas = canvas || document.createElement('canvas'); this.canvas.width = width; this.canvas.height = height; @@ -44467,7 +44466,9 @@ var proj4 = require('proj4') var TileBoundingBoxUtils = require('../tileBoundingBoxUtils'); module.exports.initialize = function(width, height, tileMatrix, tileMatrixSet, tileBoundingBox, srs, projectionTo, canvas, callback) { - if (typeof(process) !== 'undefined' && process.version) { + var isPhantom = !!(typeof window != 'undefined' && window.callPhantom && window._phantom); + var isNode = typeof(process) !== 'undefined' && process.version; + if (isNode && !isPhantom) { var LwipTileCreator = require('./lwip'); new LwipTileCreator(width, height, tileMatrix, tileMatrixSet, tileBoundingBox, srs, projectionTo, callback); } else { diff --git a/docs/index.html b/docs/index.html index dde4264a0..854340e6a 100644 --- a/docs/index.html +++ b/docs/index.html @@ -19,12 +19,7 @@ diff --git a/docs/leaflet/leaflet-geopackage.js b/docs/leaflet/leaflet-geopackage.js index 2198c8bc5..d356f88ae 100644 --- a/docs/leaflet/leaflet-geopackage.js +++ b/docs/leaflet/leaflet-geopackage.js @@ -47,7 +47,315 @@ tileLayer.on('load', function() { }).addTo(map); }); -},{"leaflet-geopackage":170}],2:[function(require,module,exports){ +},{"leaflet-geopackage":171}],2:[function(require,module,exports){ +'use strict'; + +var d2r = Math.PI / 180, + r2d = 180 / Math.PI; + +/** + * Get the bbox of a tile + * + * @name tileToBBOX + * @param {Array} tile + * @returns {Array} bbox + * @example + * var bbox = tileToBBOX([5, 10, 10]) + * //=bbox + */ +function tileToBBOX(tile) { + var e = tile2lon(tile[0] + 1, tile[2]); + var w = tile2lon(tile[0], tile[2]); + var s = tile2lat(tile[1] + 1, tile[2]); + var n = tile2lat(tile[1], tile[2]); + return [w, s, e, n]; +} + +/** + * Get a geojson representation of a tile + * + * @name tileToGeoJSON + * @param {Array} tile + * @returns {Feature} + * @example + * var poly = tileToGeoJSON([5, 10, 10]) + * //=poly + */ +function tileToGeoJSON(tile) { + var bbox = tileToBBOX(tile); + var poly = { + type: 'Polygon', + coordinates: [[ + [bbox[0], bbox[1]], + [bbox[0], bbox[3]], + [bbox[2], bbox[3]], + [bbox[2], bbox[1]], + [bbox[0], bbox[1]] + ]] + }; + return poly; +} + +function tile2lon(x, z) { + return x / Math.pow(2, z) * 360 - 180; +} + +function tile2lat(y, z) { + var n = Math.PI - 2 * Math.PI * y / Math.pow(2, z); + return r2d * Math.atan(0.5 * (Math.exp(n) - Math.exp(-n))); +} + +/** + * Get the tile for a point at a specified zoom level + * + * @name pointToTile + * @param {number} lon + * @param {number} lat + * @param {number} z + * @returns {Array} tile + * @example + * var tile = pointToTile(1, 1, 20) + * //=tile + */ +function pointToTile(lon, lat, z) { + var tile = pointToTileFraction(lon, lat, z); + tile[0] = Math.floor(tile[0]); + tile[1] = Math.floor(tile[1]); + return tile; +} + +/** + * Get the 4 tiles one zoom level higher + * + * @name getChildren + * @param {Array} tile + * @returns {Array>} tiles + * @example + * var tiles = getChildren([5, 10, 10]) + * //=tiles + */ +function getChildren(tile) { + return [ + [tile[0] * 2, tile[1] * 2, tile[2] + 1], + [tile[0] * 2 + 1, tile[1] * 2, tile[2 ] + 1], + [tile[0] * 2 + 1, tile[1] * 2 + 1, tile[2] + 1], + [tile[0] * 2, tile[1] * 2 + 1, tile[2] + 1] + ]; +} + +/** + * Get the tile one zoom level lower + * + * @name getParent + * @param {Array} tile + * @returns {Array} tile + * @example + * var tile = getParent([5, 10, 10]) + * //=tile + */ +function getParent(tile) { + // top left + if (tile[0] % 2 === 0 && tile[1] % 2 === 0) { + return [tile[0] / 2, tile[1] / 2, tile[2] - 1]; + } + // bottom left + if ((tile[0] % 2 === 0) && (!tile[1] % 2 === 0)) { + return [tile[0] / 2, (tile[1] - 1) / 2, tile[2] - 1]; + } + // top right + if ((!tile[0] % 2 === 0) && (tile[1] % 2 === 0)) { + return [(tile[0] - 1) / 2, (tile[1]) / 2, tile[2] - 1]; + } + // bottom right + return [(tile[0] - 1) / 2, (tile[1] - 1) / 2, tile[2] - 1]; +} + +function getSiblings(tile) { + return getChildren(getParent(tile)); +} + +/** + * Get the 3 sibling tiles for a tile + * + * @name getSiblings + * @param {Array} tile + * @returns {Array>} tiles + * @example + * var tiles = getSiblings([5, 10, 10]) + * //=tiles + */ +function hasSiblings(tile, tiles) { + var siblings = getSiblings(tile); + for (var i = 0; i < siblings.length; i++) { + if (!hasTile(tiles, siblings[i])) return false; + } + return true; +} + +/** + * Check to see if an array of tiles contains a particular tile + * + * @name hasTile + * @param {Array>} tiles + * @param {Array} tile + * @returns {boolean} + * @example + * var tiles = [ + * [0, 0, 5], + * [0, 1, 5], + * [1, 1, 5], + * [1, 0, 5] + * ] + * hasTile(tiles, [0, 0, 5]) + * //=boolean + */ +function hasTile(tiles, tile) { + for (var i = 0; i < tiles.length; i++) { + if (tilesEqual(tiles[i], tile)) return true; + } + return false; +} + +/** + * Check to see if two tiles are the same + * + * @name tilesEqual + * @param {Array} tile1 + * @param {Array} tile2 + * @returns {boolean} + * @example + * tilesEqual([0, 1, 5], [0, 0, 5]) + * //=boolean + */ +function tilesEqual(tile1, tile2) { + return ( + tile1[0] === tile2[0] && + tile1[1] === tile2[1] && + tile1[2] === tile2[2] + ); +} + +/** + * Get the quadkey for a tile + * + * @name tileToQuadkey + * @param {Array} tile + * @returns {string} quadkey + * @example + * var quadkey = tileToQuadkey([0, 1, 5]) + * //=quadkey + */ +function tileToQuadkey(tile) { + var index = ''; + for (var z = tile[2]; z > 0; z--) { + var b = 0; + var mask = 1 << (z - 1); + if ((tile[0] & mask) !== 0) b++; + if ((tile[1] & mask) !== 0) b += 2; + index += b.toString(); + } + return index; +} + +/** + * Get the tile for a quadkey + * + * @name quadkeyToTile + * @param {string} quadkey + * @returns {Array} tile + * @example + * var tile = quadkeyToTile('00001033') + * //=tile + */ +function quadkeyToTile(quadkey) { + var x = 0; + var y = 0; + var z = quadkey.length; + + for (var i = z; i > 0; i--) { + var mask = 1 << (i - 1); + var q = +quadkey[z - i]; + if (q === 1) x |= mask; + if (q === 2) y |= mask; + if (q === 3) { + x |= mask; + y |= mask; + } + } + return [x, y, z]; +} + +/** + * Get the smallest tile to cover a bbox + * + * @name bboxToTile + * @param {Array} bbox + * @returns {Array} tile + * @example + * var tile = bboxToTile([ -178, 84, -177, 85 ]) + * //=tile + */ +function bboxToTile(bboxCoords) { + var min = pointToTile(bboxCoords[0], bboxCoords[1], 32); + var max = pointToTile(bboxCoords[2], bboxCoords[3], 32); + var bbox = [min[0], min[1], max[0], max[1]]; + + var z = getBboxZoom(bbox); + if (z === 0) return [0, 0, 0]; + var x = bbox[0] >>> (32 - z); + var y = bbox[1] >>> (32 - z); + return [x, y, z]; +} + +function getBboxZoom(bbox) { + var MAX_ZOOM = 28; + for (var z = 0; z < MAX_ZOOM; z++) { + var mask = 1 << (32 - (z + 1)); + if (((bbox[0] & mask) !== (bbox[2] & mask)) || + ((bbox[1] & mask) !== (bbox[3] & mask))) { + return z; + } + } + + return MAX_ZOOM; +} + +/** + * Get the precise fractional tile location for a point at a zoom level + * + * @name pointToTileFraction + * @param {number} lon + * @param {number} lat + * @param {number} z + * @returns {Array} tile fraction + * var tile = pointToTileFraction(30.5, 50.5, 15) + * //=tile + */ +function pointToTileFraction(lon, lat, z) { + var sin = Math.sin(lat * d2r), + z2 = Math.pow(2, z), + x = z2 * (lon / 360 + 0.5), + y = z2 * (0.5 - 0.25 * Math.log((1 + sin) / (1 - sin)) / Math.PI); + return [x, y, z]; +} + +module.exports = { + tileToGeoJSON: tileToGeoJSON, + tileToBBOX: tileToBBOX, + getChildren: getChildren, + getParent: getParent, + getSiblings: getSiblings, + hasTile: hasTile, + hasSiblings: hasSiblings, + tilesEqual: tilesEqual, + tileToQuadkey: tileToQuadkey, + quadkeyToTile: quadkeyToTile, + pointToTile: pointToTile, + bboxToTile: bboxToTile, + pointToTileFraction: pointToTileFraction +}; + +},{}],3:[function(require,module,exports){ var each = require('@turf/meta').coordEach; /** @@ -84,7 +392,7 @@ module.exports = function (geojson) { return bbox; }; -},{"@turf/meta":3}],3:[function(require,module,exports){ +},{"@turf/meta":4}],4:[function(require,module,exports){ /** * Callback for coordEach * @@ -736,10 +1044,10 @@ function geomReduce(layer, callback, initialValue) { } module.exports.geomReduce = geomReduce; -},{}],4:[function(require,module,exports){ +},{}],5:[function(require,module,exports){ module.exports = require('./register')().Promise -},{"./register":6}],5:[function(require,module,exports){ +},{"./register":7}],6:[function(require,module,exports){ "use strict" // global key for user preferred registration var REGISTRATION_KEY = '@@any-promise/REGISTRATION', @@ -819,7 +1127,7 @@ module.exports = function(root, loadImplementation){ } } -},{}],6:[function(require,module,exports){ +},{}],7:[function(require,module,exports){ "use strict"; module.exports = require('./loader')(window, loadImplementation) @@ -839,7 +1147,7 @@ function loadImplementation(){ } } -},{"./loader":5}],7:[function(require,module,exports){ +},{"./loader":6}],8:[function(require,module,exports){ var asn1 = exports; asn1.bignum = require('bn.js'); @@ -850,7 +1158,7 @@ asn1.constants = require('./asn1/constants'); asn1.decoders = require('./asn1/decoders'); asn1.encoders = require('./asn1/encoders'); -},{"./asn1/api":8,"./asn1/base":10,"./asn1/constants":14,"./asn1/decoders":16,"./asn1/encoders":19,"bn.js":24}],8:[function(require,module,exports){ +},{"./asn1/api":9,"./asn1/base":11,"./asn1/constants":15,"./asn1/decoders":17,"./asn1/encoders":20,"bn.js":25}],9:[function(require,module,exports){ var asn1 = require('../asn1'); var inherits = require('inherits'); @@ -913,7 +1221,7 @@ Entity.prototype.encode = function encode(data, enc, /* internal */ reporter) { return this._getEncoder(enc).encode(data, reporter); }; -},{"../asn1":7,"inherits":164,"vm":292}],9:[function(require,module,exports){ +},{"../asn1":8,"inherits":165,"vm":295}],10:[function(require,module,exports){ var inherits = require('inherits'); var Reporter = require('../base').Reporter; var Buffer = require('buffer').Buffer; @@ -1031,7 +1339,7 @@ EncoderBuffer.prototype.join = function join(out, offset) { return out; }; -},{"../base":10,"buffer":57,"inherits":164}],10:[function(require,module,exports){ +},{"../base":11,"buffer":58,"inherits":165}],11:[function(require,module,exports){ var base = exports; base.Reporter = require('./reporter').Reporter; @@ -1039,7 +1347,7 @@ base.DecoderBuffer = require('./buffer').DecoderBuffer; base.EncoderBuffer = require('./buffer').EncoderBuffer; base.Node = require('./node'); -},{"./buffer":9,"./node":11,"./reporter":12}],11:[function(require,module,exports){ +},{"./buffer":10,"./node":12,"./reporter":13}],12:[function(require,module,exports){ var Reporter = require('../base').Reporter; var EncoderBuffer = require('../base').EncoderBuffer; var DecoderBuffer = require('../base').DecoderBuffer; @@ -1675,7 +1983,7 @@ Node.prototype._isPrintstr = function isPrintstr(str) { return /^[A-Za-z0-9 '\(\)\+,\-\.\/:=\?]*$/.test(str); }; -},{"../base":10,"minimalistic-assert":172}],12:[function(require,module,exports){ +},{"../base":11,"minimalistic-assert":173}],13:[function(require,module,exports){ var inherits = require('inherits'); function Reporter(options) { @@ -1798,7 +2106,7 @@ ReporterError.prototype.rethrow = function rethrow(msg) { return this; }; -},{"inherits":164}],13:[function(require,module,exports){ +},{"inherits":165}],14:[function(require,module,exports){ var constants = require('../constants'); exports.tagClass = { @@ -1842,7 +2150,7 @@ exports.tag = { }; exports.tagByName = constants._reverse(exports.tag); -},{"../constants":14}],14:[function(require,module,exports){ +},{"../constants":15}],15:[function(require,module,exports){ var constants = exports; // Helper @@ -1863,7 +2171,7 @@ constants._reverse = function reverse(map) { constants.der = require('./der'); -},{"./der":13}],15:[function(require,module,exports){ +},{"./der":14}],16:[function(require,module,exports){ var inherits = require('inherits'); var asn1 = require('../../asn1'); @@ -2189,13 +2497,13 @@ function derDecodeLen(buf, primitive, fail) { return len; } -},{"../../asn1":7,"inherits":164}],16:[function(require,module,exports){ +},{"../../asn1":8,"inherits":165}],17:[function(require,module,exports){ var decoders = exports; decoders.der = require('./der'); decoders.pem = require('./pem'); -},{"./der":15,"./pem":17}],17:[function(require,module,exports){ +},{"./der":16,"./pem":18}],18:[function(require,module,exports){ var inherits = require('inherits'); var Buffer = require('buffer').Buffer; @@ -2246,7 +2554,7 @@ PEMDecoder.prototype.decode = function decode(data, options) { return DERDecoder.prototype.decode.call(this, input, options); }; -},{"./der":15,"buffer":57,"inherits":164}],18:[function(require,module,exports){ +},{"./der":16,"buffer":58,"inherits":165}],19:[function(require,module,exports){ var inherits = require('inherits'); var Buffer = require('buffer').Buffer; @@ -2543,13 +2851,13 @@ function encodeTag(tag, primitive, cls, reporter) { return res; } -},{"../../asn1":7,"buffer":57,"inherits":164}],19:[function(require,module,exports){ +},{"../../asn1":8,"buffer":58,"inherits":165}],20:[function(require,module,exports){ var encoders = exports; encoders.der = require('./der'); encoders.pem = require('./pem'); -},{"./der":18,"./pem":20}],20:[function(require,module,exports){ +},{"./der":19,"./pem":21}],21:[function(require,module,exports){ var inherits = require('inherits'); var DEREncoder = require('./der'); @@ -2572,7 +2880,7 @@ PEMEncoder.prototype.encode = function encode(data, options) { return out.join('\n'); }; -},{"./der":18,"inherits":164}],21:[function(require,module,exports){ +},{"./der":19,"inherits":165}],22:[function(require,module,exports){ (function (global){ 'use strict'; @@ -3066,7 +3374,7 @@ var objectKeys = Object.keys || function (obj) { }; }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"util/":291}],22:[function(require,module,exports){ +},{"util/":294}],23:[function(require,module,exports){ (function (process,global){ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : @@ -8546,7 +8854,7 @@ Object.defineProperty(exports, '__esModule', { value: true }); }))); }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"_process":248}],23:[function(require,module,exports){ +},{"_process":249}],24:[function(require,module,exports){ 'use strict' exports.byteLength = byteLength @@ -8662,7 +8970,7 @@ function fromByteArray (uint8) { return parts.join('') } -},{}],24:[function(require,module,exports){ +},{}],25:[function(require,module,exports){ (function (module, exports) { 'use strict'; @@ -12091,7 +12399,7 @@ function fromByteArray (uint8) { }; })(typeof module === 'undefined' || module, this); -},{}],25:[function(require,module,exports){ +},{}],26:[function(require,module,exports){ var r; module.exports = function rand(len) { @@ -12158,9 +12466,9 @@ if (typeof self === 'object') { } } -},{"crypto":26}],26:[function(require,module,exports){ +},{"crypto":27}],27:[function(require,module,exports){ -},{}],27:[function(require,module,exports){ +},{}],28:[function(require,module,exports){ (function (Buffer){ // based on the aes implimentation in triple sec // https://github.com/keybase/triplesec @@ -12341,7 +12649,7 @@ AES.prototype._doCryptBlock = function (M, keySchedule, SUB_MIX, SBOX) { exports.AES = AES }).call(this,require("buffer").Buffer) -},{"buffer":57}],28:[function(require,module,exports){ +},{"buffer":58}],29:[function(require,module,exports){ (function (Buffer){ var aes = require('./aes') var Transform = require('cipher-base') @@ -12442,7 +12750,7 @@ function xorTest (a, b) { } }).call(this,require("buffer").Buffer) -},{"./aes":27,"./ghash":32,"buffer":57,"buffer-xor":56,"cipher-base":58,"inherits":164}],29:[function(require,module,exports){ +},{"./aes":28,"./ghash":33,"buffer":58,"buffer-xor":57,"cipher-base":59,"inherits":165}],30:[function(require,module,exports){ var ciphers = require('./encrypter') exports.createCipher = exports.Cipher = ciphers.createCipher exports.createCipheriv = exports.Cipheriv = ciphers.createCipheriv @@ -12455,7 +12763,7 @@ function getCiphers () { } exports.listCiphers = exports.getCiphers = getCiphers -},{"./decrypter":30,"./encrypter":31,"./modes":33}],30:[function(require,module,exports){ +},{"./decrypter":31,"./encrypter":32,"./modes":34}],31:[function(require,module,exports){ (function (Buffer){ var aes = require('./aes') var Transform = require('cipher-base') @@ -12596,7 +12904,7 @@ exports.createDecipher = createDecipher exports.createDecipheriv = createDecipheriv }).call(this,require("buffer").Buffer) -},{"./aes":27,"./authCipher":28,"./modes":33,"./modes/cbc":34,"./modes/cfb":35,"./modes/cfb1":36,"./modes/cfb8":37,"./modes/ctr":38,"./modes/ecb":39,"./modes/ofb":40,"./streamCipher":41,"buffer":57,"cipher-base":58,"evp_bytestokey":95,"inherits":164}],31:[function(require,module,exports){ +},{"./aes":28,"./authCipher":29,"./modes":34,"./modes/cbc":35,"./modes/cfb":36,"./modes/cfb1":37,"./modes/cfb8":38,"./modes/ctr":39,"./modes/ecb":40,"./modes/ofb":41,"./streamCipher":42,"buffer":58,"cipher-base":59,"evp_bytestokey":96,"inherits":165}],32:[function(require,module,exports){ (function (Buffer){ var aes = require('./aes') var Transform = require('cipher-base') @@ -12722,7 +13030,7 @@ exports.createCipheriv = createCipheriv exports.createCipher = createCipher }).call(this,require("buffer").Buffer) -},{"./aes":27,"./authCipher":28,"./modes":33,"./modes/cbc":34,"./modes/cfb":35,"./modes/cfb1":36,"./modes/cfb8":37,"./modes/ctr":38,"./modes/ecb":39,"./modes/ofb":40,"./streamCipher":41,"buffer":57,"cipher-base":58,"evp_bytestokey":95,"inherits":164}],32:[function(require,module,exports){ +},{"./aes":28,"./authCipher":29,"./modes":34,"./modes/cbc":35,"./modes/cfb":36,"./modes/cfb1":37,"./modes/cfb8":38,"./modes/ctr":39,"./modes/ecb":40,"./modes/ofb":41,"./streamCipher":42,"buffer":58,"cipher-base":59,"evp_bytestokey":96,"inherits":165}],33:[function(require,module,exports){ (function (Buffer){ var zeros = new Buffer(16) zeros.fill(0) @@ -12824,7 +13132,7 @@ function xor (a, b) { } }).call(this,require("buffer").Buffer) -},{"buffer":57}],33:[function(require,module,exports){ +},{"buffer":58}],34:[function(require,module,exports){ exports['aes-128-ecb'] = { cipher: 'AES', key: 128, @@ -12997,7 +13305,7 @@ exports['aes-256-gcm'] = { type: 'auth' } -},{}],34:[function(require,module,exports){ +},{}],35:[function(require,module,exports){ var xor = require('buffer-xor') exports.encrypt = function (self, block) { @@ -13016,7 +13324,7 @@ exports.decrypt = function (self, block) { return xor(out, pad) } -},{"buffer-xor":56}],35:[function(require,module,exports){ +},{"buffer-xor":57}],36:[function(require,module,exports){ (function (Buffer){ var xor = require('buffer-xor') @@ -13051,7 +13359,7 @@ function encryptStart (self, data, decrypt) { } }).call(this,require("buffer").Buffer) -},{"buffer":57,"buffer-xor":56}],36:[function(require,module,exports){ +},{"buffer":58,"buffer-xor":57}],37:[function(require,module,exports){ (function (Buffer){ function encryptByte (self, byteParam, decrypt) { var pad @@ -13089,7 +13397,7 @@ function shiftIn (buffer, value) { } }).call(this,require("buffer").Buffer) -},{"buffer":57}],37:[function(require,module,exports){ +},{"buffer":58}],38:[function(require,module,exports){ (function (Buffer){ function encryptByte (self, byteParam, decrypt) { var pad = self._cipher.encryptBlock(self._prev) @@ -13108,7 +13416,7 @@ exports.encrypt = function (self, chunk, decrypt) { } }).call(this,require("buffer").Buffer) -},{"buffer":57}],38:[function(require,module,exports){ +},{"buffer":58}],39:[function(require,module,exports){ (function (Buffer){ var xor = require('buffer-xor') @@ -13143,7 +13451,7 @@ exports.encrypt = function (self, chunk) { } }).call(this,require("buffer").Buffer) -},{"buffer":57,"buffer-xor":56}],39:[function(require,module,exports){ +},{"buffer":58,"buffer-xor":57}],40:[function(require,module,exports){ exports.encrypt = function (self, block) { return self._cipher.encryptBlock(block) } @@ -13151,7 +13459,7 @@ exports.decrypt = function (self, block) { return self._cipher.decryptBlock(block) } -},{}],40:[function(require,module,exports){ +},{}],41:[function(require,module,exports){ (function (Buffer){ var xor = require('buffer-xor') @@ -13171,7 +13479,7 @@ exports.encrypt = function (self, chunk) { } }).call(this,require("buffer").Buffer) -},{"buffer":57,"buffer-xor":56}],41:[function(require,module,exports){ +},{"buffer":58,"buffer-xor":57}],42:[function(require,module,exports){ (function (Buffer){ var aes = require('./aes') var Transform = require('cipher-base') @@ -13200,7 +13508,7 @@ StreamCipher.prototype._final = function () { } }).call(this,require("buffer").Buffer) -},{"./aes":27,"buffer":57,"cipher-base":58,"inherits":164}],42:[function(require,module,exports){ +},{"./aes":28,"buffer":58,"cipher-base":59,"inherits":165}],43:[function(require,module,exports){ var ebtk = require('evp_bytestokey') var aes = require('browserify-aes/browser') var DES = require('browserify-des') @@ -13275,7 +13583,7 @@ function getCiphers () { } exports.listCiphers = exports.getCiphers = getCiphers -},{"browserify-aes/browser":29,"browserify-aes/modes":33,"browserify-des":43,"browserify-des/modes":44,"evp_bytestokey":95}],43:[function(require,module,exports){ +},{"browserify-aes/browser":30,"browserify-aes/modes":34,"browserify-des":44,"browserify-des/modes":45,"evp_bytestokey":96}],44:[function(require,module,exports){ (function (Buffer){ var CipherBase = require('cipher-base') var des = require('des.js') @@ -13322,7 +13630,7 @@ DES.prototype._final = function () { } }).call(this,require("buffer").Buffer) -},{"buffer":57,"cipher-base":58,"des.js":68,"inherits":164}],44:[function(require,module,exports){ +},{"buffer":58,"cipher-base":59,"des.js":69,"inherits":165}],45:[function(require,module,exports){ exports['des-ecb'] = { key: 8, iv: 0 @@ -13348,7 +13656,7 @@ exports['des-ede'] = { iv: 0 } -},{}],45:[function(require,module,exports){ +},{}],46:[function(require,module,exports){ (function (Buffer){ var bn = require('bn.js'); var randomBytes = require('randombytes'); @@ -13392,10 +13700,10 @@ function getr(priv) { } }).call(this,require("buffer").Buffer) -},{"bn.js":24,"buffer":57,"randombytes":259}],46:[function(require,module,exports){ +},{"bn.js":25,"buffer":58,"randombytes":260}],47:[function(require,module,exports){ module.exports = require('./browser/algorithms.json') -},{"./browser/algorithms.json":47}],47:[function(require,module,exports){ +},{"./browser/algorithms.json":48}],48:[function(require,module,exports){ module.exports={ "sha224WithRSAEncryption": { "sign": "rsa", @@ -13549,7 +13857,7 @@ module.exports={ } } -},{}],48:[function(require,module,exports){ +},{}],49:[function(require,module,exports){ module.exports={ "1.3.132.0.10": "secp256k1", "1.3.132.0.33": "p224", @@ -13559,7 +13867,7 @@ module.exports={ "1.3.132.0.35": "p521" } -},{}],49:[function(require,module,exports){ +},{}],50:[function(require,module,exports){ (function (Buffer){ var createHash = require('create-hash') var stream = require('stream') @@ -13654,7 +13962,7 @@ module.exports = { } }).call(this,require("buffer").Buffer) -},{"./algorithms.json":47,"./sign":50,"./verify":51,"buffer":57,"create-hash":61,"inherits":164,"stream":283}],50:[function(require,module,exports){ +},{"./algorithms.json":48,"./sign":51,"./verify":52,"buffer":58,"create-hash":62,"inherits":165,"stream":286}],51:[function(require,module,exports){ (function (Buffer){ // much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js var createHmac = require('create-hmac') @@ -13803,7 +14111,7 @@ module.exports.getKey = getKey module.exports.makeKey = makeKey }).call(this,require("buffer").Buffer) -},{"./curves.json":48,"bn.js":24,"browserify-rsa":45,"buffer":57,"create-hmac":64,"elliptic":78,"parse-asn1":222}],51:[function(require,module,exports){ +},{"./curves.json":49,"bn.js":25,"browserify-rsa":46,"buffer":58,"create-hmac":65,"elliptic":79,"parse-asn1":223}],52:[function(require,module,exports){ (function (Buffer){ // much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js var BN = require('bn.js') @@ -13890,7 +14198,7 @@ function checkValue (b, q) { module.exports = verify }).call(this,require("buffer").Buffer) -},{"./curves.json":48,"bn.js":24,"buffer":57,"elliptic":78,"parse-asn1":222}],52:[function(require,module,exports){ +},{"./curves.json":49,"bn.js":25,"buffer":58,"elliptic":79,"parse-asn1":223}],53:[function(require,module,exports){ (function (process,Buffer){ var msg = require('pako/lib/zlib/messages'); var zstream = require('pako/lib/zlib/zstream'); @@ -14130,7 +14438,7 @@ Zlib.prototype._error = function(status) { exports.Zlib = Zlib; }).call(this,require('_process'),require("buffer").Buffer) -},{"_process":248,"buffer":57,"pako/lib/zlib/constants":209,"pako/lib/zlib/deflate.js":211,"pako/lib/zlib/inflate.js":213,"pako/lib/zlib/messages":215,"pako/lib/zlib/zstream":217}],53:[function(require,module,exports){ +},{"_process":249,"buffer":58,"pako/lib/zlib/constants":210,"pako/lib/zlib/deflate.js":212,"pako/lib/zlib/inflate.js":214,"pako/lib/zlib/messages":216,"pako/lib/zlib/zstream":218}],54:[function(require,module,exports){ (function (process,Buffer){ // Copyright Joyent, Inc. and other Node contributors. // @@ -14744,9 +15052,9 @@ util.inherits(InflateRaw, Zlib); util.inherits(Unzip, Zlib); }).call(this,require('_process'),require("buffer").Buffer) -},{"./binding":52,"_process":248,"_stream_transform":269,"assert":21,"buffer":57,"util":291}],54:[function(require,module,exports){ -arguments[4][26][0].apply(exports,arguments) -},{"dup":26}],55:[function(require,module,exports){ +},{"./binding":53,"_process":249,"_stream_transform":272,"assert":22,"buffer":58,"util":294}],55:[function(require,module,exports){ +arguments[4][27][0].apply(exports,arguments) +},{"dup":27}],56:[function(require,module,exports){ (function (global){ 'use strict'; @@ -14858,7 +15166,7 @@ exports.allocUnsafeSlow = function allocUnsafeSlow(size) { } }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"buffer":57}],56:[function(require,module,exports){ +},{"buffer":58}],57:[function(require,module,exports){ (function (Buffer){ module.exports = function xor (a, b) { var length = Math.min(a.length, b.length) @@ -14872,7 +15180,7 @@ module.exports = function xor (a, b) { } }).call(this,require("buffer").Buffer) -},{"buffer":57}],57:[function(require,module,exports){ +},{"buffer":58}],58:[function(require,module,exports){ /*! * The buffer module from node.js, for the browser. * @@ -15127,8 +15435,8 @@ function fromObject (obj) { } if (obj) { - if (ArrayBuffer.isView(obj) || 'length' in obj) { - if (typeof obj.length !== 'number' || isnan(obj.length)) { + if (isArrayBufferView(obj) || 'length' in obj) { + if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) { return createBuffer(0) } return fromArrayLike(obj) @@ -15239,7 +15547,7 @@ function byteLength (string, encoding) { if (Buffer.isBuffer(string)) { return string.length } - if (ArrayBuffer.isView(string) || string instanceof ArrayBuffer) { + if (isArrayBufferView(string) || string instanceof ArrayBuffer) { return string.byteLength } if (typeof string !== 'string') { @@ -15505,7 +15813,7 @@ function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) { byteOffset = -0x80000000 } byteOffset = +byteOffset // Coerce to Number. - if (isNaN(byteOffset)) { + if (numberIsNaN(byteOffset)) { // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer byteOffset = dir ? 0 : (buffer.length - 1) } @@ -15636,7 +15944,7 @@ function hexWrite (buf, string, offset, length) { } for (var i = 0; i < length; ++i) { var parsed = parseInt(string.substr(i * 2, 2), 16) - if (isNaN(parsed)) return i + if (numberIsNaN(parsed)) return i buf[offset + i] = parsed } return i @@ -16439,7 +16747,7 @@ var INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g function base64clean (str) { // Node strips out invalid characters like \n and \t from the string, base64-js does not - str = stringtrim(str).replace(INVALID_BASE64_RE, '') + str = str.trim().replace(INVALID_BASE64_RE, '') // Node converts strings with length < 2 to '' if (str.length < 2) return '' // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not @@ -16449,11 +16757,6 @@ function base64clean (str) { return str } -function stringtrim (str) { - if (str.trim) return str.trim() - return str.replace(/^\s+|\s+$/g, '') -} - function toHex (n) { if (n < 16) return '0' + n.toString(16) return n.toString(16) @@ -16576,11 +16879,16 @@ function blitBuffer (src, dst, offset, length) { return i } -function isnan (val) { - return val !== val // eslint-disable-line no-self-compare +// Node 0.10 supports `ArrayBuffer` but lacks `ArrayBuffer.isView` +function isArrayBufferView (obj) { + return (typeof ArrayBuffer.isView === 'function') && ArrayBuffer.isView(obj) +} + +function numberIsNaN (obj) { + return obj !== obj // eslint-disable-line no-self-compare } -},{"base64-js":23,"ieee754":162}],58:[function(require,module,exports){ +},{"base64-js":24,"ieee754":163}],59:[function(require,module,exports){ (function (Buffer){ var Transform = require('stream').Transform var inherits = require('inherits') @@ -16674,7 +16982,7 @@ CipherBase.prototype._toString = function (value, enc, fin) { } }).call(this,require("buffer").Buffer) -},{"buffer":57,"inherits":164,"stream":283,"string_decoder":285}],59:[function(require,module,exports){ +},{"buffer":58,"inherits":165,"stream":286,"string_decoder":288}],60:[function(require,module,exports){ (function (Buffer){ // Copyright Joyent, Inc. and other Node contributors. // @@ -16785,7 +17093,7 @@ function objectToString(o) { } }).call(this,{"isBuffer":require("../../is-buffer/index.js")}) -},{"../../is-buffer/index.js":165}],60:[function(require,module,exports){ +},{"../../is-buffer/index.js":166}],61:[function(require,module,exports){ (function (Buffer){ var elliptic = require('elliptic'); var BN = require('bn.js'); @@ -16911,7 +17219,7 @@ function formatReturnValue(bn, enc, len) { } }).call(this,require("buffer").Buffer) -},{"bn.js":24,"buffer":57,"elliptic":78}],61:[function(require,module,exports){ +},{"bn.js":25,"buffer":58,"elliptic":79}],62:[function(require,module,exports){ (function (Buffer){ 'use strict'; var inherits = require('inherits') @@ -16967,7 +17275,7 @@ module.exports = function createHash (alg) { } }).call(this,require("buffer").Buffer) -},{"./md5":63,"buffer":57,"cipher-base":58,"inherits":164,"ripemd160":272,"sha.js":274}],62:[function(require,module,exports){ +},{"./md5":64,"buffer":58,"cipher-base":59,"inherits":165,"ripemd160":275,"sha.js":277}],63:[function(require,module,exports){ (function (Buffer){ 'use strict'; var intSize = 4; @@ -17004,7 +17312,7 @@ function hash(buf, fn, hashSize, bigEndian) { } exports.hash = hash; }).call(this,require("buffer").Buffer) -},{"buffer":57}],63:[function(require,module,exports){ +},{"buffer":58}],64:[function(require,module,exports){ 'use strict'; /* * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message @@ -17161,7 +17469,7 @@ function bit_rol(num, cnt) module.exports = function md5(buf) { return helpers.hash(buf, core_md5, 16); }; -},{"./helpers":62}],64:[function(require,module,exports){ +},{"./helpers":63}],65:[function(require,module,exports){ (function (Buffer){ 'use strict'; var createHash = require('create-hash/browser'); @@ -17233,7 +17541,7 @@ module.exports = function createHmac(alg, key) { } }).call(this,require("buffer").Buffer) -},{"buffer":57,"create-hash/browser":61,"inherits":164,"stream":283}],65:[function(require,module,exports){ +},{"buffer":58,"create-hash/browser":62,"inherits":165,"stream":286}],66:[function(require,module,exports){ 'use strict' exports.randomBytes = exports.rng = exports.pseudoRandomBytes = exports.prng = require('randombytes') @@ -17312,7 +17620,7 @@ var publicEncrypt = require('public-encrypt') } }) -},{"browserify-cipher":42,"browserify-sign":49,"browserify-sign/algos":46,"create-ecdh":60,"create-hash":61,"create-hmac":64,"diffie-hellman":74,"pbkdf2":224,"public-encrypt":250,"randombytes":259}],66:[function(require,module,exports){ +},{"browserify-cipher":43,"browserify-sign":50,"browserify-sign/algos":47,"create-ecdh":61,"create-hash":62,"create-hmac":65,"diffie-hellman":75,"pbkdf2":225,"public-encrypt":251,"randombytes":260}],67:[function(require,module,exports){ // https://d3js.org/d3-array/ Version 1.1.1. Copyright 2017 Mike Bostock. (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : @@ -17792,7 +18100,7 @@ Object.defineProperty(exports, '__esModule', { value: true }); }))); -},{}],67:[function(require,module,exports){ +},{}],68:[function(require,module,exports){ // https://d3js.org/d3-geo/ Version 1.6.3. Copyright 2017 Mike Bostock. (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('d3-array')) : @@ -20748,7 +21056,7 @@ Object.defineProperty(exports, '__esModule', { value: true }); }))); -},{"d3-array":66}],68:[function(require,module,exports){ +},{"d3-array":67}],69:[function(require,module,exports){ 'use strict'; exports.utils = require('./des/utils'); @@ -20757,7 +21065,7 @@ exports.DES = require('./des/des'); exports.CBC = require('./des/cbc'); exports.EDE = require('./des/ede'); -},{"./des/cbc":69,"./des/cipher":70,"./des/des":71,"./des/ede":72,"./des/utils":73}],69:[function(require,module,exports){ +},{"./des/cbc":70,"./des/cipher":71,"./des/des":72,"./des/ede":73,"./des/utils":74}],70:[function(require,module,exports){ 'use strict'; var assert = require('minimalistic-assert'); @@ -20824,7 +21132,7 @@ proto._update = function _update(inp, inOff, out, outOff) { } }; -},{"inherits":164,"minimalistic-assert":172}],70:[function(require,module,exports){ +},{"inherits":165,"minimalistic-assert":173}],71:[function(require,module,exports){ 'use strict'; var assert = require('minimalistic-assert'); @@ -20967,7 +21275,7 @@ Cipher.prototype._finalDecrypt = function _finalDecrypt() { return this._unpad(out); }; -},{"minimalistic-assert":172}],71:[function(require,module,exports){ +},{"minimalistic-assert":173}],72:[function(require,module,exports){ 'use strict'; var assert = require('minimalistic-assert'); @@ -21112,7 +21420,7 @@ DES.prototype._decrypt = function _decrypt(state, lStart, rStart, out, off) { utils.rip(l, r, out, off); }; -},{"../des":68,"inherits":164,"minimalistic-assert":172}],72:[function(require,module,exports){ +},{"../des":69,"inherits":165,"minimalistic-assert":173}],73:[function(require,module,exports){ 'use strict'; var assert = require('minimalistic-assert'); @@ -21169,7 +21477,7 @@ EDE.prototype._update = function _update(inp, inOff, out, outOff) { EDE.prototype._pad = DES.prototype._pad; EDE.prototype._unpad = DES.prototype._unpad; -},{"../des":68,"inherits":164,"minimalistic-assert":172}],73:[function(require,module,exports){ +},{"../des":69,"inherits":165,"minimalistic-assert":173}],74:[function(require,module,exports){ 'use strict'; exports.readUInt32BE = function readUInt32BE(bytes, off) { @@ -21427,7 +21735,7 @@ exports.padSplit = function padSplit(num, size, group) { return out.join(' '); }; -},{}],74:[function(require,module,exports){ +},{}],75:[function(require,module,exports){ (function (Buffer){ var generatePrime = require('./lib/generatePrime') var primes = require('./lib/primes.json') @@ -21473,7 +21781,7 @@ exports.DiffieHellmanGroup = exports.createDiffieHellmanGroup = exports.getDiffi exports.createDiffieHellman = exports.DiffieHellman = createDiffieHellman }).call(this,require("buffer").Buffer) -},{"./lib/dh":75,"./lib/generatePrime":76,"./lib/primes.json":77,"buffer":57}],75:[function(require,module,exports){ +},{"./lib/dh":76,"./lib/generatePrime":77,"./lib/primes.json":78,"buffer":58}],76:[function(require,module,exports){ (function (Buffer){ var BN = require('bn.js'); var MillerRabin = require('miller-rabin'); @@ -21641,7 +21949,7 @@ function formatReturnValue(bn, enc) { } }).call(this,require("buffer").Buffer) -},{"./generatePrime":76,"bn.js":24,"buffer":57,"miller-rabin":171,"randombytes":259}],76:[function(require,module,exports){ +},{"./generatePrime":77,"bn.js":25,"buffer":58,"miller-rabin":172,"randombytes":260}],77:[function(require,module,exports){ var randomBytes = require('randombytes'); module.exports = findPrime; findPrime.simpleSieve = simpleSieve; @@ -21748,7 +22056,7 @@ function findPrime(bits, gen) { } -},{"bn.js":24,"miller-rabin":171,"randombytes":259}],77:[function(require,module,exports){ +},{"bn.js":25,"miller-rabin":172,"randombytes":260}],78:[function(require,module,exports){ module.exports={ "modp1": { "gen": "02", @@ -21783,7 +22091,7 @@ module.exports={ "prime": "ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dbe115974a3926f12fee5e438777cb6a932df8cd8bec4d073b931ba3bc832b68d9dd300741fa7bf8afc47ed2576f6936ba424663aab639c5ae4f5683423b4742bf1c978238f16cbe39d652de3fdb8befc848ad922222e04a4037c0713eb57a81a23f0c73473fc646cea306b4bcbc8862f8385ddfa9d4b7fa2c087e879683303ed5bdd3a062b3cf5b3a278a66d2a13f83f44f82ddf310ee074ab6a364597e899a0255dc164f31cc50846851df9ab48195ded7ea1b1d510bd7ee74d73faf36bc31ecfa268359046f4eb879f924009438b481c6cd7889a002ed5ee382bc9190da6fc026e479558e4475677e9aa9e3050e2765694dfc81f56e880b96e7160c980dd98edd3dfffffffffffffffff" } } -},{}],78:[function(require,module,exports){ +},{}],79:[function(require,module,exports){ 'use strict'; var elliptic = exports; @@ -21798,7 +22106,7 @@ elliptic.curves = require('./elliptic/curves'); elliptic.ec = require('./elliptic/ec'); elliptic.eddsa = require('./elliptic/eddsa'); -},{"../package.json":93,"./elliptic/curve":81,"./elliptic/curves":84,"./elliptic/ec":85,"./elliptic/eddsa":88,"./elliptic/utils":92,"brorand":25}],79:[function(require,module,exports){ +},{"../package.json":94,"./elliptic/curve":82,"./elliptic/curves":85,"./elliptic/ec":86,"./elliptic/eddsa":89,"./elliptic/utils":93,"brorand":26}],80:[function(require,module,exports){ 'use strict'; var BN = require('bn.js'); @@ -22175,7 +22483,7 @@ BasePoint.prototype.dblp = function dblp(k) { return r; }; -},{"../../elliptic":78,"bn.js":24}],80:[function(require,module,exports){ +},{"../../elliptic":79,"bn.js":25}],81:[function(require,module,exports){ 'use strict'; var curve = require('../curve'); @@ -22610,7 +22918,7 @@ Point.prototype.eqXToP = function eqXToP(x) { Point.prototype.toP = Point.prototype.normalize; Point.prototype.mixedAdd = Point.prototype.add; -},{"../../elliptic":78,"../curve":81,"bn.js":24,"inherits":164}],81:[function(require,module,exports){ +},{"../../elliptic":79,"../curve":82,"bn.js":25,"inherits":165}],82:[function(require,module,exports){ 'use strict'; var curve = exports; @@ -22620,7 +22928,7 @@ curve.short = require('./short'); curve.mont = require('./mont'); curve.edwards = require('./edwards'); -},{"./base":79,"./edwards":80,"./mont":82,"./short":83}],82:[function(require,module,exports){ +},{"./base":80,"./edwards":81,"./mont":83,"./short":84}],83:[function(require,module,exports){ 'use strict'; var curve = require('../curve'); @@ -22802,7 +23110,7 @@ Point.prototype.getX = function getX() { return this.x.fromRed(); }; -},{"../../elliptic":78,"../curve":81,"bn.js":24,"inherits":164}],83:[function(require,module,exports){ +},{"../../elliptic":79,"../curve":82,"bn.js":25,"inherits":165}],84:[function(require,module,exports){ 'use strict'; var curve = require('../curve'); @@ -23742,7 +24050,7 @@ JPoint.prototype.isInfinity = function isInfinity() { return this.z.cmpn(0) === 0; }; -},{"../../elliptic":78,"../curve":81,"bn.js":24,"inherits":164}],84:[function(require,module,exports){ +},{"../../elliptic":79,"../curve":82,"bn.js":25,"inherits":165}],85:[function(require,module,exports){ 'use strict'; var curves = exports; @@ -23949,7 +24257,7 @@ defineCurve('secp256k1', { ] }); -},{"../elliptic":78,"./precomputed/secp256k1":91,"hash.js":155}],85:[function(require,module,exports){ +},{"../elliptic":79,"./precomputed/secp256k1":92,"hash.js":156}],86:[function(require,module,exports){ 'use strict'; var BN = require('bn.js'); @@ -24191,7 +24499,7 @@ EC.prototype.getKeyRecoveryParam = function(e, signature, Q, enc) { throw new Error('Unable to find valid recovery factor'); }; -},{"../../elliptic":78,"./key":86,"./signature":87,"bn.js":24,"hmac-drbg":161}],86:[function(require,module,exports){ +},{"../../elliptic":79,"./key":87,"./signature":88,"bn.js":25,"hmac-drbg":162}],87:[function(require,module,exports){ 'use strict'; var BN = require('bn.js'); @@ -24312,7 +24620,7 @@ KeyPair.prototype.inspect = function inspect() { ' pub: ' + (this.pub && this.pub.inspect()) + ' >'; }; -},{"../../elliptic":78,"bn.js":24}],87:[function(require,module,exports){ +},{"../../elliptic":79,"bn.js":25}],88:[function(require,module,exports){ 'use strict'; var BN = require('bn.js'); @@ -24449,7 +24757,7 @@ Signature.prototype.toDER = function toDER(enc) { return utils.encode(res, enc); }; -},{"../../elliptic":78,"bn.js":24}],88:[function(require,module,exports){ +},{"../../elliptic":79,"bn.js":25}],89:[function(require,module,exports){ 'use strict'; var hash = require('hash.js'); @@ -24569,7 +24877,7 @@ EDDSA.prototype.isPoint = function isPoint(val) { return val instanceof this.pointClass; }; -},{"../../elliptic":78,"./key":89,"./signature":90,"hash.js":155}],89:[function(require,module,exports){ +},{"../../elliptic":79,"./key":90,"./signature":91,"hash.js":156}],90:[function(require,module,exports){ 'use strict'; var elliptic = require('../../elliptic'); @@ -24667,7 +24975,7 @@ KeyPair.prototype.getPublic = function getPublic(enc) { module.exports = KeyPair; -},{"../../elliptic":78}],90:[function(require,module,exports){ +},{"../../elliptic":79}],91:[function(require,module,exports){ 'use strict'; var BN = require('bn.js'); @@ -24735,7 +25043,7 @@ Signature.prototype.toHex = function toHex() { module.exports = Signature; -},{"../../elliptic":78,"bn.js":24}],91:[function(require,module,exports){ +},{"../../elliptic":79,"bn.js":25}],92:[function(require,module,exports){ module.exports = { doubles: { step: 4, @@ -25517,7 +25825,7 @@ module.exports = { } }; -},{}],92:[function(require,module,exports){ +},{}],93:[function(require,module,exports){ 'use strict'; var utils = exports; @@ -25639,7 +25947,7 @@ function intFromLE(bytes) { utils.intFromLE = intFromLE; -},{"bn.js":24,"minimalistic-assert":172,"minimalistic-crypto-utils":173}],93:[function(require,module,exports){ +},{"bn.js":25,"minimalistic-assert":173,"minimalistic-crypto-utils":174}],94:[function(require,module,exports){ module.exports={ "_args": [ [ @@ -25763,7 +26071,7 @@ module.exports={ "version": "6.4.0" } -},{}],94:[function(require,module,exports){ +},{}],95:[function(require,module,exports){ // Copyright Joyent, Inc. and other Node contributors. // // Permission is hereby granted, free of charge, to any person obtaining a @@ -26067,7 +26375,7 @@ function isUndefined(arg) { return arg === void 0; } -},{}],95:[function(require,module,exports){ +},{}],96:[function(require,module,exports){ (function (Buffer){ var md5 = require('create-hash/md5') module.exports = EVP_BytesToKey @@ -26139,7 +26447,7 @@ function EVP_BytesToKey (password, salt, keyLen, ivLen) { } }).call(this,require("buffer").Buffer) -},{"buffer":57,"create-hash/md5":63}],96:[function(require,module,exports){ +},{"buffer":58,"create-hash/md5":64}],97:[function(require,module,exports){ 'use strict'; module.exports = input => { const buf = new Uint8Array(input); @@ -26611,7 +26919,7 @@ module.exports = input => { return null; }; -},{}],97:[function(require,module,exports){ +},{}],98:[function(require,module,exports){ (function (process){ /** * GeoPackage module. @@ -26635,11 +26943,6 @@ var GeoPackageManager = require('./lib/geoPackageManager') , TileBoundingBoxUtils = require('./lib/tiles/tileBoundingBoxUtils') , FeatureTile = require('./lib/tiles/features'); -// module.exports.GeoJSONToGeoPackage = require('geojson-to-geopackage'); -// module.exports.ShapefileToGeoPackage = require('shapefile-to-geopackage'); -// module.exports.MBTilesToGeoPackage = require('mbtiles-to-geopackage'); -// module.exports.PBFToGeoPackage = require('pbf-to-geopackage'); - var proj4Defs = require('./lib/proj4Defs'); module.exports.proj4Defs = proj4Defs; module.exports.GeoPackageTileRetriever = GeoPackageTileRetriever; @@ -26951,7 +27254,6 @@ module.exports.getTilesInBoundingBox = function(geopackage, table, zoom, west, e var tms = tileDao.tileMatrixSet; var tm = tileDao.getTileMatrixWithZoomLevel(zoom); - var mapBounds = map.getBounds(); var mapBoundingBox = new BoundingBox(Math.max(-180, west), Math.min(east, 180), south, north); tiles.west = Math.max(-180, west).toFixed(2); tiles.east = Math.min(east, 180).toFixed(2); @@ -27042,7 +27344,7 @@ module.exports.drawXYZTileInCanvas = function(geopackage, table, x, y, z, width, }; }).call(this,require('_process')) -},{"./lib/boundingBox":98,"./lib/dataColumns":104,"./lib/db/dataTypes":105,"./lib/db/geoPackageConnection":106,"./lib/db/tableCreator":110,"./lib/features/columns":116,"./lib/features/user/featureColumn":117,"./lib/geoPackage":122,"./lib/geoPackageManager":124,"./lib/geom/geometryData":126,"./lib/proj4Defs":129,"./lib/tiles/creator/tileUtilities":133,"./lib/tiles/features":135,"./lib/tiles/retriever":138,"./lib/tiles/tileBoundingBoxUtils":139,"./lib/tiles/user/tileColumn":141,"_process":248,"async":22,"fs":54,"path":223,"reproject":271,"sql.js":282,"wkx":305}],98:[function(require,module,exports){ +},{"./lib/boundingBox":99,"./lib/dataColumns":105,"./lib/db/dataTypes":106,"./lib/db/geoPackageConnection":107,"./lib/db/tableCreator":111,"./lib/features/columns":117,"./lib/features/user/featureColumn":118,"./lib/geoPackage":123,"./lib/geoPackageManager":125,"./lib/geom/geometryData":127,"./lib/proj4Defs":130,"./lib/tiles/creator/tileUtilities":134,"./lib/tiles/features":136,"./lib/tiles/retriever":139,"./lib/tiles/tileBoundingBoxUtils":140,"./lib/tiles/user/tileColumn":142,"_process":249,"async":23,"fs":55,"path":224,"reproject":274,"sql.js":285,"wkx":309}],99:[function(require,module,exports){ var proj4 = require('proj4'); /** @@ -27174,7 +27476,7 @@ BoundingBox.prototype.projectBoundingBox = function (from, to) { // */ // -(struct GPKGBoundingBoxSize) sizeInMeters; -},{"proj4":249}],99:[function(require,module,exports){ +},{"proj4":250}],100:[function(require,module,exports){ /** * Contents module. * @module core/contents @@ -27413,7 +27715,7 @@ ContentsDao.prototype.idColumns = [ContentsDao.COLUMN_PK]; module.exports.ContentsDao = ContentsDao; module.exports.Contents = Contents; -},{"../../dao/dao":102,"../../features/columns":116,"../../tiles/matrix":136,"../../tiles/matrixset":137,"../srs":100,"util":291}],100:[function(require,module,exports){ +},{"../../dao/dao":103,"../../features/columns":117,"../../tiles/matrix":137,"../../tiles/matrixset":138,"../srs":101,"util":294}],101:[function(require,module,exports){ /** * SpatialReferenceSystem module. * @module dao/spatialReferenceSystem @@ -27723,7 +28025,7 @@ SpatialReferenceSystemDao.prototype.idColumns = [SpatialReferenceSystemDao.COLUM module.exports.SpatialReferenceSystemDao = SpatialReferenceSystemDao; module.exports.SpatialReferenceSystem = SpatialReferenceSystem; -},{"../../dao/dao":102,"proj4":249,"util":291}],101:[function(require,module,exports){ +},{"../../dao/dao":103,"proj4":250,"util":294}],102:[function(require,module,exports){ var ColumnValues = function() { this.values = {}; @@ -27745,7 +28047,7 @@ ColumnValues.prototype.getValue = function (column) { return this.values[column]; }; -},{}],102:[function(require,module,exports){ +},{}],103:[function(require,module,exports){ /** * Dao module. * @module dao/dao @@ -28111,7 +28413,7 @@ module.exports = Dao; * @param {Error} null if no error, otherwise describes the error */ -},{"../db/sqliteQueryBuilder":108,"./columnValues":101,"async":22}],103:[function(require,module,exports){ +},{"../db/sqliteQueryBuilder":109,"./columnValues":102,"async":23}],104:[function(require,module,exports){ /** * DataColumnConstraints module. * @module dataColumnConstraints @@ -28188,6 +28490,10 @@ var DataColumnConstraintsDao = function(connection) { util.inherits(DataColumnConstraintsDao, Dao); +DataColumnConstraintsDao.prototype.createObject = function () { + return new DataColumnConstraints(); +}; + /** * query by constraint name * @param {String} constraintName constraint name @@ -28230,7 +28536,7 @@ DataColumnConstraintsDao.prototype.idColumns = [DataColumnConstraintsDao.COLUMN_ module.exports.DataColumnConstraintsDao = DataColumnConstraintsDao; module.exports.DataColumnConstraints = DataColumnConstraints; -},{"../dao/dao":102,"util":291}],104:[function(require,module,exports){ +},{"../dao/dao":103,"util":294}],105:[function(require,module,exports){ /** * DataColumns module. * @module dataColumns @@ -28296,22 +28602,6 @@ var DataColumns = function() { this.constraint_name; } -/** - * Set the contents - * @param {Contents} contents the contents - */ -DataColumns.prototype.setContents = function (contents) { - -}; - -/** - * set the DataColumnConstraints - * @param {DataColumnConstraints} constraint constraints - */ -DataColumns.prototype.setConstraint = function (constraint) { - -}; - /** * Contents object. Provides identifying and descriptive information that an * application can display to a user in a menu of geospatial data that is @@ -28325,6 +28615,10 @@ var DataColumnsDao = function(connection) { util.inherits(DataColumnsDao, Dao); +DataColumnsDao.prototype.createObject = function () { + return new DataColumns(); +}; + /** * Get the Contents from the Data Columns * @param {DataColumns} dataColumns data columns @@ -28389,7 +28683,7 @@ DataColumnsDao.prototype.idColumns = [DataColumnsDao.COLUMN_PK1, DataColumnsDao. module.exports.DataColumnsDao = DataColumnsDao; module.exports.DataColumns = DataColumns; -},{"../core/contents":99,"../dao/dao":102,"util":291}],105:[function(require,module,exports){ +},{"../core/contents":100,"../dao/dao":103,"util":294}],106:[function(require,module,exports){ /** * Data Types module. * @module db/dataTypes @@ -28598,7 +28892,7 @@ module.exports.fromName = function(name) { // return class; // } -},{}],106:[function(require,module,exports){ +},{}],107:[function(require,module,exports){ (function (process,Buffer){ var GeoPackageConstants = require('../geoPackageConstants'); @@ -28746,7 +29040,7 @@ GeoPackageConnection.connectWithDatabase = function(db, callback) { } }).call(this,require('_process'),require("buffer").Buffer) -},{"../geoPackageConstants":123,"./sqliteAdapter":107,"./sqljsAdapter":109,"_process":248,"buffer":57}],107:[function(require,module,exports){ +},{"../geoPackageConstants":124,"./sqliteAdapter":108,"./sqljsAdapter":110,"_process":249,"buffer":58}],108:[function(require,module,exports){ var async = require('async') , fs = require('fs'); @@ -28838,7 +29132,7 @@ Adapter.prototype.count = function (tableName, callback) { }); }; -},{"async":22,"fs":54,"sqlite3":undefined}],108:[function(require,module,exports){ +},{"async":23,"fs":55,"sqlite3":undefined}],109:[function(require,module,exports){ /** * SQLite query builder module. * @module db/sqliteQueryBuilder @@ -29005,7 +29299,7 @@ function isEmpty(string) { return !string || string.length === 0; } -},{}],109:[function(require,module,exports){ +},{}],110:[function(require,module,exports){ var async = require('async'); var sqljs = require('sql.js/js/sql-memory-growth'); @@ -29168,7 +29462,7 @@ Adapter.prototype.count = function (tableName, callback) { }); }; -},{"async":22,"sql.js/js/sql-memory-growth":281}],110:[function(require,module,exports){ +},{"async":23,"sql.js/js/sql-memory-growth":284}],111:[function(require,module,exports){ var async = require('async'); var SpatialReferenceSystemDao = require('../core/srs').SpatialReferenceSystemDao @@ -29753,7 +30047,7 @@ var tableCreationScripts = { ] }; -},{"../core/srs":100,"./dataTypes":105,"./geoPackageConnection":106,"async":22}],111:[function(require,module,exports){ +},{"../core/srs":101,"./dataTypes":106,"./geoPackageConnection":107,"async":23}],112:[function(require,module,exports){ var Extension = require('./index').Extension , ExtensionDao = require('./index').ExtensionDao; /** @@ -29830,7 +30124,7 @@ BaseExtension.prototype.createExtension = function(extensionName, tableName, col this.extensionsDao.create(extension, callback); }; -},{"./index":112}],112:[function(require,module,exports){ +},{"./index":113}],113:[function(require,module,exports){ /** * Metadata module. * @module metadata @@ -29973,7 +30267,7 @@ ExtensionDao.prototype.idColumns = [ExtensionDao.COLUMN_TABLE_NAME, ExtensionDao module.exports.ExtensionDao = ExtensionDao; module.exports.Extension = Extension; -},{"../dao/columnValues":101,"../dao/dao":102,"../db/tableCreator":110,"util":291}],113:[function(require,module,exports){ +},{"../dao/columnValues":102,"../dao/dao":103,"../db/tableCreator":111,"util":294}],114:[function(require,module,exports){ var Extension = require('../index').Extension , ExtensionDao = require('../index').ExtensionDao @@ -30234,7 +30528,7 @@ FeatureTableIndex.EXTENSION_GEOMETRY_INDEX_DEFINITION = 'http://ngageoint.github module.exports = FeatureTableIndex; -},{"../../core/contents":99,"../../geom/envelopeBuilder":125,"../baseExtension":111,"../index":112,"./geometryIndex":114,"./tableIndex":115,"util":291}],114:[function(require,module,exports){ +},{"../../core/contents":100,"../../geom/envelopeBuilder":126,"../baseExtension":112,"../index":113,"./geometryIndex":115,"./tableIndex":116,"util":294}],115:[function(require,module,exports){ /** * GeometryIndexDao module. * @module geometryIndexDao @@ -30427,7 +30721,7 @@ GeometryIndexDao.prototype.idColumns = [GeometryIndexDao.COLUMN_TABLE_NAME, Geom module.exports.GeometryIndexDao = GeometryIndexDao; module.exports.GeometryIndex = GeometryIndex; -},{"../../dao/dao":102,"../../db/tableCreator":110,"./tableIndex":115,"util":291}],115:[function(require,module,exports){ +},{"../../dao/dao":103,"../../db/tableCreator":111,"./tableIndex":116,"util":294}],116:[function(require,module,exports){ /** * TableIndexDao module. * @module tableIndexDao @@ -30497,7 +30791,7 @@ TableIndexDao.prototype.idColumns = [TableIndexDao.COLUMN_TABLE_NAME]; module.exports.TableIndexDao = TableIndexDao; module.exports.TableIndex = TableIndex; -},{"../../dao/dao":102,"../../db/tableCreator":110,"util":291}],116:[function(require,module,exports){ +},{"../../dao/dao":103,"../../db/tableCreator":111,"util":294}],117:[function(require,module,exports){ /** * GeometryColumns module. * @module dao/geometryColumns @@ -30739,7 +31033,7 @@ GeometryColumns.M = "m"; module.exports.GeometryColumnsDao = GeometryColumnsDao; module.exports.GeometryColumns = GeometryColumns; -},{"../../core/contents":99,"../../core/srs":100,"../../dao/dao":102,"util":291}],117:[function(require,module,exports){ +},{"../../core/contents":100,"../../core/srs":101,"../../dao/dao":103,"util":294}],118:[function(require,module,exports){ /** * featureColumn module. * @module features/user/featureColumn @@ -30832,7 +31126,7 @@ FeatureColumn.prototype.isGeometry = function () { module.exports = FeatureColumn; -},{"../../db/dataTypes":105,"../../user/userColumn":147,"util":291}],118:[function(require,module,exports){ +},{"../../db/dataTypes":106,"../../user/userColumn":148,"util":294}],119:[function(require,module,exports){ /** * featureDao module. * @module features/user/featureDao @@ -30991,7 +31285,7 @@ FeatureDao.prototype.getBoundingBox = function () { module.exports = FeatureDao; -},{"../../core/contents":99,"../../extension/index/featureTableIndex":113,"../../user/userDao":148,"../columns":116,"./featureRow":119,"util":291}],119:[function(require,module,exports){ +},{"../../core/contents":100,"../../extension/index/featureTableIndex":114,"../../user/userDao":149,"../columns":117,"./featureRow":120,"util":294}],120:[function(require,module,exports){ /** * featureRow module. * @module features/user/featureRow @@ -31069,7 +31363,7 @@ FeatureRow.prototype.toDatabaseValue = function(columnName) { module.exports = FeatureRow; -},{"../../geom/geometryData":126,"../../user/userRow":149,"./featureColumn":117,"util":291}],120:[function(require,module,exports){ +},{"../../geom/geometryData":127,"../../user/userRow":150,"./featureColumn":118,"util":294}],121:[function(require,module,exports){ /** * featureTable module. * @module features/user/featureTable @@ -31118,7 +31412,7 @@ FeatureTable.prototype.getTableType = function() { */ module.exports = FeatureTable; -},{"../../user/userTable":150,"util":291}],121:[function(require,module,exports){ +},{"../../user/userTable":151,"util":294}],122:[function(require,module,exports){ /** * featureTableReader module. * @module features/user/featureTableReader @@ -31215,7 +31509,7 @@ FeatureTableReader.prototype.createColumnWithResults = function (results, index, */ module.exports = FeatureTableReader; -},{"../../db/dataTypes":105,"../../user/userTableReader":151,"../../wkb":153,"../columns":116,"./featureColumn":117,"./featureTable":120,"util":291}],122:[function(require,module,exports){ +},{"../../db/dataTypes":106,"../../user/userTableReader":152,"../../wkb":154,"../columns":117,"./featureColumn":118,"./featureTable":121,"util":294}],123:[function(require,module,exports){ /** * GeoPackage module. * @module geoPackage @@ -31862,7 +32156,7 @@ GeoPackage.prototype.getInfoForTable = function (tableDao, callback) { module.exports = GeoPackage; -},{"./core/contents":99,"./core/srs":100,"./dataColumnConstraints":103,"./dataColumns":104,"./db/dataTypes":105,"./db/tableCreator":110,"./extension":112,"./extension/index/geometryIndex":114,"./extension/index/tableIndex":115,"./features/columns":116,"./features/user/featureDao":118,"./features/user/featureTable":120,"./features/user/featureTableReader":121,"./metadata":127,"./metadata/reference":128,"./proj4Defs":129,"./tiles/matrix":136,"./tiles/matrixset":137,"./tiles/tileBoundingBoxUtils":139,"./tiles/user/tileDao":142,"./tiles/user/tileTable":145,"./tiles/user/tileTableReader":146,"./user/userTable":150,"async":22,"proj4":249,"stream-to-array":284}],123:[function(require,module,exports){ +},{"./core/contents":100,"./core/srs":101,"./dataColumnConstraints":104,"./dataColumns":105,"./db/dataTypes":106,"./db/tableCreator":111,"./extension":113,"./extension/index/geometryIndex":115,"./extension/index/tableIndex":116,"./features/columns":117,"./features/user/featureDao":119,"./features/user/featureTable":121,"./features/user/featureTableReader":122,"./metadata":128,"./metadata/reference":129,"./proj4Defs":130,"./tiles/matrix":137,"./tiles/matrixset":138,"./tiles/tileBoundingBoxUtils":140,"./tiles/user/tileDao":143,"./tiles/user/tileTable":146,"./tiles/user/tileTableReader":147,"./user/userTable":151,"async":23,"proj4":250,"stream-to-array":287}],124:[function(require,module,exports){ /** * GeoPackage Constants module. * @module dao/geoPackageConstants @@ -31885,7 +32179,7 @@ exports.GEOPACKAGE_GEOMETRY_VERSION_1 = 0; /** @constant {string} SQLITE_HEADER_PREFIX SQLite header string prefix */ exports.SQLITE_HEADER_PREFIX = 'SQLite format 3'; -},{}],124:[function(require,module,exports){ +},{}],125:[function(require,module,exports){ (function (process){ /** * GeoPackage Manager used to create and open GeoPackages @@ -31975,7 +32269,7 @@ module.exports.create = function(filePath, callback) { } }).call(this,require('_process')) -},{"./db/geoPackageConnection":106,"./geoPackage":122,"./validate/geoPackageValidate":152,"_process":248,"async":22,"fs":54,"path":223}],125:[function(require,module,exports){ +},{"./db/geoPackageConnection":107,"./geoPackage":123,"./validate/geoPackageValidate":153,"_process":249,"async":23,"fs":55,"path":224}],126:[function(require,module,exports){ var wkx = require('wkx'); var turfBbox = require('@turf/bbox'); @@ -31994,7 +32288,7 @@ module.exports.expandEnvelopeForGeometry = function(envelope, wkbGeometry) { } -},{"@turf/bbox":2,"wkx":305}],126:[function(require,module,exports){ +},{"@turf/bbox":3,"wkx":309}],127:[function(require,module,exports){ (function (Buffer){ /** * GeometryData module. @@ -32226,7 +32520,7 @@ GeometryData.prototype.readEnvelope = function (envelopeIndicator, buffer) { }; }).call(this,require("buffer").Buffer) -},{"../geoPackageConstants":123,"buffer":57,"wkx":305}],127:[function(require,module,exports){ +},{"../geoPackageConstants":124,"buffer":58,"wkx":309}],128:[function(require,module,exports){ /** * Metadata module. * @module metadata @@ -32442,7 +32736,7 @@ MetadataDao.prototype.idColumns = [MetadataDao.COLUMN_ID]; module.exports.MetadataDao = MetadataDao; module.exports.Metadata = Metadata; -},{"../dao/dao":102,"util":291}],128:[function(require,module,exports){ +},{"../dao/dao":103,"util":294}],129:[function(require,module,exports){ /** * MetadataReference module. * @module metadata/reference @@ -32629,7 +32923,7 @@ MetadataReferenceDao.prototype.idColumns = [MetadataReferenceDao.COLUMN_MD_FILE_ module.exports.MetadataReferenceDao = MetadataReferenceDao; module.exports.MetadataReference = MetadataReference; -},{"../../dao/columnValues":101,"../../dao/dao":102,"util":291}],129:[function(require,module,exports){ +},{"../../dao/columnValues":102,"../../dao/dao":103,"util":294}],130:[function(require,module,exports){ module.exports = { "EPSG:3819":'+proj=longlat +ellps=bessel +towgs84=595.48,121.69,515.35,4.115,-2.9383,0.853,-3.408 +no_defs ', "EPSG:3821":'+proj=longlat +ellps=aust_SA +no_defs ', @@ -36999,7 +37293,7 @@ module.exports = { "EPSG:32766":'+proj=tmerc +lat_0=0 +lon_0=36 +k=0.9996 +x_0=500000 +y_0=10000000 +datum=WGS84 +units=m +no_defs ' }; -},{}],130:[function(require,module,exports){ +},{}],131:[function(require,module,exports){ var util = require('util') , async = require('async') , fileType = require('file-type') @@ -37011,7 +37305,6 @@ var TileCreator = require('./index').TileCreator function CanvasTileCreator(width, height, tileMatrix, tileMatrixSet, tileBoundingBox, srs, projectionTo, canvas, callback) { TileCreator.apply(this, arguments); - this.canvas = canvas || document.createElement('canvas'); this.canvas.width = width; this.canvas.height = height; @@ -37153,7 +37446,7 @@ CanvasTileCreator.prototype.reproject = function (tileData, tilePieceBoundingBox module.exports = CanvasTileCreator; -},{"../tileBoundingBoxUtils":139,"./index":131,"./tileUtilities":133,"./tileWorker.js":134,"async":22,"file-type":96,"util":291,"webworkify":308}],131:[function(require,module,exports){ +},{"../tileBoundingBoxUtils":140,"./index":132,"./tileUtilities":134,"./tileWorker.js":135,"async":23,"file-type":97,"util":294,"webworkify":296}],132:[function(require,module,exports){ (function (process){ var proj4 = require('proj4') , async = require('async'); @@ -37161,7 +37454,9 @@ var proj4 = require('proj4') var TileBoundingBoxUtils = require('../tileBoundingBoxUtils'); module.exports.initialize = function(width, height, tileMatrix, tileMatrixSet, tileBoundingBox, srs, projectionTo, canvas, callback) { - if (typeof(process) !== 'undefined' && process.version) { + var isPhantom = !!(typeof window != 'undefined' && window.callPhantom && window._phantom); + var isNode = typeof(process) !== 'undefined' && process.version; + if (isNode && !isPhantom) { var LwipTileCreator = require('./lwip'); new LwipTileCreator(width, height, tileMatrix, tileMatrixSet, tileBoundingBox, srs, projectionTo, callback); } else { @@ -37287,7 +37582,7 @@ TileCreator.prototype.reproject = function (tileData, tilePieceBoundingBox, call }; }).call(this,require('_process')) -},{"../tileBoundingBoxUtils":139,"./canvas":130,"./lwip":132,"_process":248,"async":22,"proj4":249}],132:[function(require,module,exports){ +},{"../tileBoundingBoxUtils":140,"./canvas":131,"./lwip":133,"_process":249,"async":23,"proj4":250}],133:[function(require,module,exports){ var util = require('util') , async = require('async') , fileType = require('file-type'); @@ -37354,7 +37649,7 @@ LwipTileCreator.prototype.getCompleteTile = function (format, callback) { module.exports = LwipTileCreator; -},{"./index":131,"async":22,"file-type":96,"lwip":undefined,"util":291}],133:[function(require,module,exports){ +},{"./index":132,"async":23,"file-type":97,"lwip":undefined,"util":294}],134:[function(require,module,exports){ (function (process,Buffer){ var proj4 = require('proj4'); @@ -37433,7 +37728,7 @@ function createPNGLwip(width, height, redArray, greenArray, blueArray, alphaOrAr } }).call(this,require('_process'),require("buffer").Buffer) -},{"_process":248,"buffer":57,"lwip":undefined,"proj4":249}],134:[function(require,module,exports){ +},{"_process":249,"buffer":58,"lwip":undefined,"proj4":250}],135:[function(require,module,exports){ var proj4 = require('proj4') , async = require('async'); @@ -37544,7 +37839,7 @@ module.exports = function(self) { } }; -},{"../../proj4Defs":129,"./tileUtilities":133,"async":22,"proj4":249}],135:[function(require,module,exports){ +},{"../../proj4Defs":130,"./tileUtilities":134,"async":23,"proj4":250}],136:[function(require,module,exports){ var TileBoundingBoxUtils = require('../tileBoundingBoxUtils') , BoundingBox = require('../../boundingBox'); @@ -37554,7 +37849,8 @@ var d3geo = require('d3-geo') , async = require('async') , concat = require('concat-stream') , reproject = require('reproject') - , bbox = require('@turf/bbox'); + , bbox = require('@turf/bbox') + , tilebelt = require('@mapbox/tilebelt'); /** * Tiles drawn from or linked to features. Used to query features and optionally draw tiles @@ -37568,7 +37864,7 @@ var FeatureTiles = function(featureDao, tileWidth, tileHeight) { this.compressFormat = 'png'; this.pointRadius = 4.0; - this.lineStrokeWidth = 2.0; + this.lineStrokeWidth = 2; this.polygonStrokeWidth = 2.0; this.fillPolygon = false; @@ -37616,41 +37912,46 @@ FeatureTiles.prototype.drawTile = function (x, y, z, callback) { FeatureTiles.prototype.drawTileQueryIndex = function(x, y, z, callback) { var boundingBox = TileBoundingBoxUtils.getWebMercatorBoundingBoxFromXYZ(x, y, z); + var width = 256; + var height = 256; - // Create an expanded bounding box to handle features outside the tile that overlap - var minLongitude = TileBoundingBoxUtils.getLongitudeFromPixelWithWidth(this.tileWidth, boundingBox, 0-this.widthOverlap); - var maxLongitude = TileBoundingBoxUtils.getLongitudeFromPixelWithWidth(this.tileWidth, boundingBox, this.tileWidth + this.widthOverlap); + var positionAndScale = TileBoundingBoxUtils.determinePositionAndScale(boundingBox, height, width, new BoundingBox(-20037508.342789244, 20037508.342789244, -20037508.342789244, 20037508.342789244), height * (1 << z), width * (1 << z)); + var xTranslate = -positionAndScale.xPositionInFinalTileStart; + var yTranslate = -positionAndScale.yPositionInFinalTileStart; - var minLatitude = TileBoundingBoxUtils.getLatitudeFromPixelWithHeight(this.tileHeight, boundingBox, 0-this.heightOverlap); - var maxLatitude = TileBoundingBoxUtils.getLatitudeFromPixelWithHeight(this.tileHeight, boundingBox, this.tileHeight + this.heightOverlap); - var expandedQueryBoundingBox = new BoundingBox(minLongitude, maxLongitude, minLatitude, maxLatitude); - var width = 256;// + (this.widthOverlap*2); - var height = 256;// + (this.heightOverlap*2); var image = PureImage.make(width, height); var context = image.getContext('2d'); context.clearRect(0, 0, width, height); context.strokeStyle = 'blue'; - context.stokeWidth = 1; + context.lineWidth = this.lineStrokeWidth; var count = 0; + console.time('Creating image'); - this.featureDao.queryIndexedFeaturesWithWebMercatorBoundingBox(boundingBox, function(err, featureRow, rowDone) { - var gj = featureRow.getGeometry().geometry.toGeoJSON(); - gj = reproject.toWgs84(gj, 'EPSG:3857'); - this.addFeatureToBatch(gj, context, z); - count++; - rowDone(); - }.bind(this), function(err, results) { - console.log('count', count); - var writeStream = concat(function(buffer) { - callback(null, buffer); - }); - PureImage.encodePNG(image, writeStream, function(err) { - }); + this.featureDao.getSrs(function(err, srs){ + this.featureDao.queryIndexedFeaturesWithWebMercatorBoundingBox(boundingBox, function(err, featureRow, rowDone) { + var gj = featureRow.getGeometry().geometry.toGeoJSON(); + if (srs.organization !== 'EPSG' || srs.organization_coordsys_id !== 4326) { + gj = reproject.toWgs84(gj, srs.organization + ':' + srs.organization_coordsys_id); + } + this.addFeatureToBatch(gj, context, xTranslate, yTranslate, z); + count++; + rowDone(); + }.bind(this), function(err, results) { + console.log('count', count); + console.timeEnd('Creating image'); + + var writeStream = concat(function(buffer) { + callback(null, buffer); + }); + PureImage.encodePNG(image, writeStream, function(err) { + }); + }.bind(this)); }.bind(this)); } -FeatureTiles.prototype.drawTileQueryAll = function(x, y, z, callback) { - var boundingBox = TileBoundingBoxUtils.getWebMercatorBoundingBoxFromXYZ(x, y, z); +FeatureTiles.prototype.drawTileQueryAll = function(x, y, zoom, callback) { + var boundingBox = TileBoundingBoxUtils.getWebMercatorBoundingBoxFromXYZ(x, y, zoom); + this.featureDao.getCount(function(err, count) { var totalCount; if (this.maxFeaturesPerTile) { @@ -37666,40 +37967,47 @@ FeatureTiles.prototype.drawTileQueryAll = function(x, y, z, callback) { } FeatureTiles.prototype.drawTileWithBoundingBox = function(boundingBox, zoom, callback) { - var width = 256;// + (this.widthOverlap*2); - var height = 256;// + (this.heightOverlap*2); + var width = 256; + var height = 256; + var positionAndScale = TileBoundingBoxUtils.determinePositionAndScale(boundingBox, height, width, new BoundingBox(-20037508.342789244, 20037508.342789244, -20037508.342789244, 20037508.342789244), height * (1 << zoom), width * (1 << zoom)); + var xTranslate = -positionAndScale.xPositionInFinalTileStart; + var yTranslate = -positionAndScale.yPositionInFinalTileStart; + var image = PureImage.make(width, height); var context = image.getContext('2d'); context.clearRect(0, 0, width, height); context.strokeStyle = 'blue'; - context.stokeWidth = 1; + context.lineWidth = this.lineStrokeWidth; var featureDao = this.featureDao; - featureDao.queryForEach(function(err, row, rowDone){ - var fr = featureDao.getRow(row); - var gj = fr.getGeometry().geometry.toGeoJSON(); - gj = reproject.toWgs84(gj, 'EPSG:3857'); - this.addFeatureToBatch(gj, context, zoom); - rowDone(); - }.bind(this), function(err, results){ - var writeStream = concat(function(buffer) { - callback(null, buffer); - }); - PureImage.encodePNG(image, writeStream, function(err) { + featureDao.getSrs(function(err, srs){ + featureDao.queryForEach(function(err, row, rowDone){ + var fr = featureDao.getRow(row); + var gj = fr.getGeometry().geometry.toGeoJSON(); + if (srs.organization !== 'EPSG' || srs.organization_coordsys_id !== 4326) { + gj = reproject.toWgs84(gj, srs.organization + ':' + srs.organization_coordsys_id); + } + this.addFeatureToBatch(gj, context, xTranslate, yTranslate, zoom); + rowDone(); + }.bind(this), function(err, results){ + var writeStream = concat(function(buffer) { + callback(null, buffer); + }); + PureImage.encodePNG(image, writeStream, function(err) { + }); }); - }); + }.bind(this)); + } -FeatureTiles.prototype.addFeatureToBatch = function(geoJson, context, zoom) { - console.time('Creating image'); - var width = 256;// + (this.widthOverlap*2); - var height = 256;// + (this.heightOverlap*2); +FeatureTiles.prototype.addFeatureToBatch = function(geoJson, context, xTranslate, yTranslate, zoom) { + var width = 256; + var height = 256; var pi = Math.PI, tau = 2 * pi; - var drawProjection = d3geo.geoMercator() .scale((1 << zoom) * 256 / tau) - .translate([0, height]); - + .center([-180, 85.0511287798066]) + .translate([xTranslate, yTranslate]); var path = new d3geo.geoPath() .context(context) .projection(drawProjection); @@ -37708,51 +38016,7 @@ FeatureTiles.prototype.addFeatureToBatch = function(geoJson, context, zoom) { context.stroke(); } -FeatureTiles.prototype.addFeatureToBatch2 = function(geoJson, batch, boundingBox, callback) { - console.time('Creating image'); - console.time('Converting GeoJSON'); - var converter = geojson2svg({ - mapExtent: { - left: boundingBox.minLongitude, - right: boundingBox.maxLongitude, - bottom: boundingBox.minLatitude, - top: boundingBox.maxLatitude - }, - viewportSize: { - width: 256, - height: 256 - }, - output: 'path', - fitTo: 'width' - }); - - // console.log('boundingBox', boundingBox); - var t = converter.convert(geoJson); - console.timeEnd('Converting GeoJSON'); - for (var idx = 0; idx < t.length; idx++) { - console.time('Parsing path'); - var commandsArray = svgPathParser(t[idx]); - console.timeEnd('Parsing path'); - console.time('setting batch'); - for (var i = 0; i < commandsArray.length; i++) { - var x = ~~commandsArray[i].x; - var y = ~~commandsArray[i].y; - if (x < 0 || y < 0 || x > 255 || y > 255) continue; - // console.log('x: %d y: %d', x, y); - batch.setPixel(x, y, 'blue'); - } - console.timeEnd('setting batch'); - } - - console.timeEnd('Creating image'); - callback(); -} - -FeatureTiles.prototype.queryIndexedFeaturesWithWebMercatorBoundingBox = function(boundingBox, callback) { - -} - -},{"../../boundingBox":98,"../tileBoundingBoxUtils":139,"@turf/bbox":2,"async":22,"concat-stream":154,"d3-geo":67,"fs":54,"pureimage":256,"reproject":271}],136:[function(require,module,exports){ +},{"../../boundingBox":99,"../tileBoundingBoxUtils":140,"@mapbox/tilebelt":2,"@turf/bbox":3,"async":23,"concat-stream":155,"d3-geo":68,"fs":55,"pureimage":257,"reproject":274}],137:[function(require,module,exports){ /** * TileMatrix module. * @module tiles/matrix @@ -37893,7 +38157,7 @@ TileMatrixDao.prototype.columns = [TileMatrixDao.COLUMN_TABLE_NAME, TileMatrixDa module.exports.TileMatrixDao = TileMatrixDao; module.exports.TileMatrix = TileMatrix; -},{"../../core/contents":99,"../../dao/dao":102,"../matrixset":137,"util":291}],137:[function(require,module,exports){ +},{"../../core/contents":100,"../../dao/dao":103,"../matrixset":138,"util":294}],138:[function(require,module,exports){ /** * TileMatrixSet module. * @module tiles/matrixset @@ -38070,7 +38334,7 @@ TileMatrixSetDao.prototype.columnToPropertyMap[TileMatrixSetDao.COLUMN_MAX_Y] = module.exports.TileMatrixSetDao = TileMatrixSetDao; module.exports.TileMatrixSet = TileMatrixSet; -},{"../../boundingBox":98,"../../core/contents":99,"../../core/srs":100,"../../dao/dao":102,"util":291}],138:[function(require,module,exports){ +},{"../../boundingBox":99,"../../core/contents":100,"../../core/srs":101,"../../dao/dao":103,"util":294}],139:[function(require,module,exports){ var TileMatrixSetDao = require('../matrixset').TileMatrixSetDao , TileBoundingBoxUtils = require('../tileBoundingBoxUtils') , TileCreator = require('../creator'); @@ -38201,7 +38465,7 @@ GeoPackageTileRetriever.prototype.retrieveTileResults = function (tileMatrixProj } }; -},{"../creator":131,"../matrixset":137,"../tileBoundingBoxUtils":139,"async":22,"proj4":249}],139:[function(require,module,exports){ +},{"../creator":132,"../matrixset":138,"../tileBoundingBoxUtils":140,"async":23,"proj4":250}],140:[function(require,module,exports){ var BoundingBox = require('../boundingBox') , TileGrid = require('./tileGrid'); @@ -38210,26 +38474,6 @@ var proj4 = require('proj4'); var WEB_MERCATOR_HALF_WORLD_WIDTH = 20037508.342789244; -/** - * Get the overlapping bounding box between the two bounding boxes - * @param {BoundingBox} boundingBox bounding box - * @param {BoundingBox} boundingBox2 bounding box2 - * @return {BoundingBox} overlap - */ -module.exports.overlapWithBoundingBox = function(boundingBox, boundingBox2) { - var minLongitude = Math.max(boundingBox.minLongitude, boundingBox2.minLongitude); - var maxLongitude = Math.min(boundingBox.maxLongitude, boundingBox2.maxLongitude); - var minLatitude = Math.max(boundingBox.minLatitude, boundingBox2.minLatitude); - var maxLatitude = Math.min(boundingBox.maxLatitude, boundingBox2.maxLatitude); - - var overlap; - if (minLongitude < maxLongitude && minLatitude < maxLatitude) { - overlap = new BoundingBox(minLongitude, maxLongitude, minLatitude, maxLatitude); - } - - return overlap; -} - module.exports.webMercatorTileBox = function(webMercatorBoundingBox, zoom) { var totalBox = new BoundingBox(-20037508.342789244, 20037508.342789244, -20037508.342789244, 20037508.342789244); @@ -38587,7 +38831,7 @@ module.exports.getTileGridBoundingBox = function(matrixSetBoundingBox, tileMatri return new BoundingBox(minLon, maxLon, minLat, maxLat); } -},{"../boundingBox":98,"./tileGrid":140,"proj4":249}],140:[function(require,module,exports){ +},{"../boundingBox":99,"./tileGrid":141,"proj4":250}],141:[function(require,module,exports){ /** * Tile grid with x and y ranges @@ -38613,7 +38857,7 @@ TileGrid.prototype.equals = function (tileGrid) { module.exports = TileGrid; -},{}],141:[function(require,module,exports){ +},{}],142:[function(require,module,exports){ /** * tileColumn module. * @module tiles/user/tileColumn @@ -38688,7 +38932,7 @@ TileColumn.COLUMN_TILE_DATA = "tile_data"; module.exports = TileColumn; -},{"../../db/dataTypes":105,"../../user/userColumn":147,"util":291}],142:[function(require,module,exports){ +},{"../../db/dataTypes":106,"../../user/userColumn":148,"util":294}],143:[function(require,module,exports){ /** * tileDao module. * @module tiles/user/tileDao @@ -39058,7 +39302,7 @@ TileDao.prototype.getSrs = function(callback) { module.exports = TileDao; -},{"../../core/contents":99,"../../dao/columnValues":101,"../../user/userDao":148,"../matrixset":137,"../tileBoundingBoxUtils":139,"../tileGrid":140,"./tileColumn":141,"./tileDaoUtils":143,"./tileRow":144,"async":22,"proj4":249,"util":291}],143:[function(require,module,exports){ +},{"../../core/contents":100,"../../dao/columnValues":102,"../../user/userDao":149,"../matrixset":138,"../tileBoundingBoxUtils":140,"../tileGrid":141,"./tileColumn":142,"./tileDaoUtils":144,"./tileRow":145,"async":23,"proj4":250,"util":294}],144:[function(require,module,exports){ module.exports.adjustTileMatrixLengths = function(tileMatrixSet, tileMatrices) { var tileMatrixWidth = tileMatrixSet.maxX - tileMatrixSet.minX; @@ -39076,7 +39320,7 @@ module.exports.adjustTileMatrixLengths = function(tileMatrixSet, tileMatrices) { } } -},{}],144:[function(require,module,exports){ +},{}],145:[function(require,module,exports){ /** * tileRow module. * @module tiles/user/tileRow @@ -39273,7 +39517,7 @@ TileRow.prototype.getTileDataImage = function () { module.exports = TileRow; -},{"../../user/userRow":149,"util":291}],145:[function(require,module,exports){ +},{"../../user/userRow":150,"util":294}],146:[function(require,module,exports){ /** * tileTable module. * @module tiles/user/tileTable @@ -39380,7 +39624,7 @@ TileTable.createRequiredColumnsWithStartingIndex = function(startingIndex) { return columns; } -},{"../../user/userTable":150,"./tileColumn":141,"util":291}],146:[function(require,module,exports){ +},{"../../user/userTable":151,"./tileColumn":142,"util":294}],147:[function(require,module,exports){ /** * tileTableReader module. * @module tiles/user/tileTableReader @@ -39432,7 +39676,7 @@ TileTableReader.prototype.createColumnWithResults = function (results, index, na */ module.exports = TileTableReader; -},{"../../db/dataTypes":105,"../../user/userTableReader":151,"../matrixset":137,"./tileColumn":141,"./tileTable":145,"util":291}],147:[function(require,module,exports){ +},{"../../db/dataTypes":106,"../../user/userTableReader":152,"../matrixset":138,"./tileColumn":142,"./tileTable":146,"util":294}],148:[function(require,module,exports){ /** * userColumn module. * @module user/userColumn @@ -39471,7 +39715,7 @@ UserColumn.prototype.validateMax = function () { module.exports = UserColumn; -},{"../db/dataTypes":105}],148:[function(require,module,exports){ +},{"../db/dataTypes":106}],149:[function(require,module,exports){ /** * UserDao module. * @module user/userDao @@ -39574,7 +39818,7 @@ UserDao.prototype.getCount = function (callback) { module.exports = UserDao; -},{"../dao/dao":102,"./userRow":149,"util":291}],149:[function(require,module,exports){ +},{"../dao/dao":103,"./userRow":150,"util":294}],150:[function(require,module,exports){ (function (Buffer){ /** * UserRow module. @@ -39810,7 +40054,7 @@ UserRow.prototype.validateValueWithColumn = function (column, value, valueTypes) }; }).call(this,require("buffer").Buffer) -},{"../db/dataTypes":105,"buffer":57}],150:[function(require,module,exports){ +},{"../db/dataTypes":106,"buffer":58}],151:[function(require,module,exports){ /** * userTable module. * @module user/userTable @@ -39966,7 +40210,7 @@ UserTable.TILE_TABLE = 'TILE'; module.exports = UserTable; -},{}],151:[function(require,module,exports){ +},{}],152:[function(require,module,exports){ /** * userTableReader module. * @module user/userTableReader @@ -40047,7 +40291,7 @@ UserTableReader.prototype.createTableWithNameAndColumns = function (tableName, c */ module.exports = UserTableReader; -},{"../db/dataTypes":105,"./userColumn":147,"./userTable":150}],152:[function(require,module,exports){ +},{"../db/dataTypes":106,"./userColumn":148,"./userTable":151}],153:[function(require,module,exports){ /** * GeoPackageValidate module. * @module validate/geoPackageValidate @@ -40119,7 +40363,7 @@ exports.hasMinimumTables = function(geoPackage, callback) { * @param {Error} null if no error, otherwise describes the error */ -},{"../core/contents":99,"../core/srs":100,"../geoPackageConstants":123,"async":22,"path":223}],153:[function(require,module,exports){ +},{"../core/contents":100,"../core/srs":101,"../geoPackageConstants":124,"async":23,"path":224}],154:[function(require,module,exports){ /** * WKB module. * @module wkb @@ -40149,7 +40393,7 @@ module.exports.fromName = function(name) { return wktToEnum[name]; } -},{"wkx":305}],154:[function(require,module,exports){ +},{"wkx":309}],155:[function(require,module,exports){ (function (Buffer){ var Writable = require('readable-stream').Writable var inherits = require('inherits') @@ -40296,7 +40540,7 @@ function u8Concat (parts) { } }).call(this,require("buffer").Buffer) -},{"buffer":57,"inherits":164,"readable-stream":268,"typedarray":287}],155:[function(require,module,exports){ +},{"buffer":58,"inherits":165,"readable-stream":271,"typedarray":290}],156:[function(require,module,exports){ var hash = exports; hash.utils = require('./hash/utils'); @@ -40313,7 +40557,7 @@ hash.sha384 = hash.sha.sha384; hash.sha512 = hash.sha.sha512; hash.ripemd160 = hash.ripemd.ripemd160; -},{"./hash/common":156,"./hash/hmac":157,"./hash/ripemd":158,"./hash/sha":159,"./hash/utils":160}],156:[function(require,module,exports){ +},{"./hash/common":157,"./hash/hmac":158,"./hash/ripemd":159,"./hash/sha":160,"./hash/utils":161}],157:[function(require,module,exports){ var hash = require('../hash'); var utils = hash.utils; var assert = utils.assert; @@ -40406,7 +40650,7 @@ BlockHash.prototype._pad = function pad() { return res; }; -},{"../hash":155}],157:[function(require,module,exports){ +},{"../hash":156}],158:[function(require,module,exports){ var hmac = exports; var hash = require('../hash'); @@ -40456,7 +40700,7 @@ Hmac.prototype.digest = function digest(enc) { return this.outer.digest(enc); }; -},{"../hash":155}],158:[function(require,module,exports){ +},{"../hash":156}],159:[function(require,module,exports){ var hash = require('../hash'); var utils = hash.utils; @@ -40602,7 +40846,7 @@ var sh = [ 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11 ]; -},{"../hash":155}],159:[function(require,module,exports){ +},{"../hash":156}],160:[function(require,module,exports){ var hash = require('../hash'); var utils = hash.utils; var assert = utils.assert; @@ -41168,7 +41412,7 @@ function g1_512_lo(xh, xl) { return r; } -},{"../hash":155}],160:[function(require,module,exports){ +},{"../hash":156}],161:[function(require,module,exports){ var utils = exports; var inherits = require('inherits'); @@ -41427,7 +41671,7 @@ function shr64_lo(ah, al, num) { }; exports.shr64_lo = shr64_lo; -},{"inherits":164}],161:[function(require,module,exports){ +},{"inherits":165}],162:[function(require,module,exports){ 'use strict'; var hash = require('hash.js'); @@ -41443,7 +41687,7 @@ function HmacDRBG(options) { this.outLen = this.hash.outSize; this.minEntropy = options.minEntropy || this.hash.hmacStrength; - this.reseed = null; + this._reseed = null; this.reseedInterval = null; this.K = null; this.V = null; @@ -41468,7 +41712,7 @@ HmacDRBG.prototype._init = function init(entropy, nonce, pers) { } this._update(seed); - this.reseed = 1; + this._reseed = 1; this.reseedInterval = 0x1000000000000; // 2^48 }; @@ -41510,11 +41754,11 @@ HmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) { 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits'); this._update(entropy.concat(add || [])); - this.reseed = 1; + this._reseed = 1; }; HmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) { - if (this.reseed > this.reseedInterval) + if (this._reseed > this.reseedInterval) throw new Error('Reseed is required'); // Optional encoding @@ -41538,11 +41782,11 @@ HmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) { var res = temp.slice(0, len); this._update(add); - this.reseed++; + this._reseed++; return utils.encode(res, enc); }; -},{"hash.js":155,"minimalistic-assert":172,"minimalistic-crypto-utils":173}],162:[function(require,module,exports){ +},{"hash.js":156,"minimalistic-assert":173,"minimalistic-crypto-utils":174}],163:[function(require,module,exports){ exports.read = function (buffer, offset, isLE, mLen, nBytes) { var e, m var eLen = nBytes * 8 - mLen - 1 @@ -41628,7 +41872,7 @@ exports.write = function (buffer, value, offset, isLE, mLen, nBytes) { buffer[offset + i - d] |= s * 128 } -},{}],163:[function(require,module,exports){ +},{}],164:[function(require,module,exports){ var indexOf = [].indexOf; @@ -41639,7 +41883,7 @@ module.exports = function(arr, obj){ } return -1; }; -},{}],164:[function(require,module,exports){ +},{}],165:[function(require,module,exports){ if (typeof Object.create === 'function') { // implementation from standard node.js 'util' module module.exports = function inherits(ctor, superCtor) { @@ -41664,7 +41908,7 @@ if (typeof Object.create === 'function') { } } -},{}],165:[function(require,module,exports){ +},{}],166:[function(require,module,exports){ /*! * Determine if an object is a Buffer * @@ -41687,14 +41931,14 @@ function isSlowBuffer (obj) { return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0)) } -},{}],166:[function(require,module,exports){ +},{}],167:[function(require,module,exports){ var toString = {}.toString; module.exports = Array.isArray || function (arr) { return toString.call(arr) == '[object Array]'; }; -},{}],167:[function(require,module,exports){ +},{}],168:[function(require,module,exports){ var encode = require('./lib/encoder'), decode = require('./lib/decoder'); @@ -41703,7 +41947,7 @@ module.exports = { decode: decode }; -},{"./lib/decoder":168,"./lib/encoder":169}],168:[function(require,module,exports){ +},{"./lib/decoder":169,"./lib/encoder":170}],169:[function(require,module,exports){ (function (Buffer){ /* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- / /* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */ @@ -42695,7 +42939,7 @@ function decode(jpegData, useTArray) { } }).call(this,require("buffer").Buffer) -},{"buffer":57}],169:[function(require,module,exports){ +},{"buffer":58}],170:[function(require,module,exports){ (function (Buffer){ /* Copyright (c) 2008, Adobe Systems Incorporated @@ -43465,7 +43709,7 @@ function getImageDataFromImage(idOrElement){ } }).call(this,require("buffer").Buffer) -},{"buffer":57}],170:[function(require,module,exports){ +},{"buffer":58}],171:[function(require,module,exports){ var Promise = require('promise-polyfill'); if (!window.Promise) { window.Promise = Promise; @@ -43605,7 +43849,7 @@ L.geoPackageFeatureLayer = function(data, opts){ return new L.GeoPackageFeatureLayer(data, opts); } -},{"geopackage":97,"promise-polyfill":307}],171:[function(require,module,exports){ +},{"geopackage":98,"promise-polyfill":311}],172:[function(require,module,exports){ var bn = require('bn.js'); var brorand = require('brorand'); @@ -43720,7 +43964,7 @@ MillerRabin.prototype.getDivisor = function getDivisor(n, k) { return false; }; -},{"bn.js":24,"brorand":25}],172:[function(require,module,exports){ +},{"bn.js":25,"brorand":26}],173:[function(require,module,exports){ module.exports = assert; function assert(val, msg) { @@ -43733,7 +43977,7 @@ assert.equal = function assertEqual(l, r, msg) { throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r)); }; -},{}],173:[function(require,module,exports){ +},{}],174:[function(require,module,exports){ 'use strict'; var utils = exports; @@ -43793,7 +44037,7 @@ utils.encode = function encode(arr, enc) { return arr; }; -},{}],174:[function(require,module,exports){ +},{}],175:[function(require,module,exports){ // The Bounding Box object 'use strict'; @@ -43955,7 +44199,7 @@ BoundingBox.prototype.addQuad = function(x0, y0, x1, y1, x, y) { exports.BoundingBox = BoundingBox; -},{}],175:[function(require,module,exports){ +},{}],176:[function(require,module,exports){ // Run-time checking of preconditions. 'use strict'; @@ -43976,7 +44220,7 @@ exports.argument = function(predicate, message) { // If not, it will throw an error. exports.assert = exports.argument; -},{}],176:[function(require,module,exports){ +},{}],177:[function(require,module,exports){ // Drawing utility functions. 'use strict'; @@ -43991,7 +44235,7 @@ function line(ctx, x1, y1, x2, y2) { exports.line = line; -},{}],177:[function(require,module,exports){ +},{}],178:[function(require,module,exports){ // Glyph encoding 'use strict'; @@ -44274,7 +44518,7 @@ exports.CffEncoding = CffEncoding; exports.GlyphNames = GlyphNames; exports.addGlyphNames = addGlyphNames; -},{}],178:[function(require,module,exports){ +},{}],179:[function(require,module,exports){ // The Font object 'use strict'; @@ -44804,7 +45048,7 @@ Font.prototype.usWeightClasses = { exports.Font = Font; -},{"./encoding":177,"./glyphset":180,"./path":184,"./substitution":185,"./tables/sfnt":204,"./util":206,"fs":26}],179:[function(require,module,exports){ +},{"./encoding":178,"./glyphset":181,"./path":185,"./substitution":186,"./tables/sfnt":205,"./util":207,"fs":27}],180:[function(require,module,exports){ // The Glyph object 'use strict'; @@ -45147,7 +45391,7 @@ Glyph.prototype.drawMetrics = function(ctx, x, y, fontSize) { exports.Glyph = Glyph; -},{"./check":175,"./draw":176,"./path":184}],180:[function(require,module,exports){ +},{"./check":176,"./draw":177,"./path":185}],181:[function(require,module,exports){ // The GlyphSet object 'use strict'; @@ -45281,7 +45525,7 @@ exports.glyphLoader = glyphLoader; exports.ttfGlyphLoader = ttfGlyphLoader; exports.cffGlyphLoader = cffGlyphLoader; -},{"./glyph":179}],181:[function(require,module,exports){ +},{"./glyph":180}],182:[function(require,module,exports){ // The Layout object is the prototype of Substition objects, and provides utility methods to manipulate // common layout tables (GPOS, GSUB, GDEF...) @@ -45565,7 +45809,7 @@ Layout.prototype = { module.exports = Layout; -},{"./check":175}],182:[function(require,module,exports){ +},{"./check":176}],183:[function(require,module,exports){ // opentype.js // https://github.com/nodebox/opentype.js // (c) 2015 Frederik De Bleser @@ -45957,7 +46201,7 @@ exports.parse = parseBuffer; exports.load = load; exports.loadSync = loadSync; -},{"./bbox":174,"./encoding":177,"./font":178,"./glyph":179,"./parse":183,"./path":184,"./tables/cff":187,"./tables/cmap":188,"./tables/fvar":189,"./tables/glyf":190,"./tables/gpos":191,"./tables/gsub":192,"./tables/head":193,"./tables/hhea":194,"./tables/hmtx":195,"./tables/kern":196,"./tables/loca":197,"./tables/ltag":198,"./tables/maxp":199,"./tables/meta":200,"./tables/name":201,"./tables/os2":202,"./tables/post":203,"./util":206,"fs":26,"tiny-inflate":286}],183:[function(require,module,exports){ +},{"./bbox":175,"./encoding":178,"./font":179,"./glyph":180,"./parse":184,"./path":185,"./tables/cff":188,"./tables/cmap":189,"./tables/fvar":190,"./tables/glyf":191,"./tables/gpos":192,"./tables/gsub":193,"./tables/head":194,"./tables/hhea":195,"./tables/hmtx":196,"./tables/kern":197,"./tables/loca":198,"./tables/ltag":199,"./tables/maxp":200,"./tables/meta":201,"./tables/name":202,"./tables/os2":203,"./tables/post":204,"./util":207,"fs":27,"tiny-inflate":289}],184:[function(require,module,exports){ // Parsing utility functions 'use strict'; @@ -46408,7 +46652,7 @@ Parser.prototype.parseLookupList = function(lookupTableParsers) { exports.Parser = Parser; -},{"./check":175}],184:[function(require,module,exports){ +},{"./check":176}],185:[function(require,module,exports){ // Geometric objects 'use strict'; @@ -46726,7 +46970,7 @@ Path.prototype.toDOMElement = function(decimalPlaces) { exports.Path = Path; -},{"./bbox":174}],185:[function(require,module,exports){ +},{"./bbox":175}],186:[function(require,module,exports){ // The Substitution object provides utility methods to manipulate // the GSUB substitution table. @@ -47029,7 +47273,7 @@ Substitution.prototype.add = function(feature, sub, script, language) { module.exports = Substitution; -},{"./check":175,"./layout":181}],186:[function(require,module,exports){ +},{"./check":176,"./layout":182}],187:[function(require,module,exports){ // Table metadata 'use strict'; @@ -47231,7 +47475,7 @@ exports.ushortList = ushortList; exports.tableList = tableList; exports.recordList = recordList; -},{"./check":175,"./types":205}],187:[function(require,module,exports){ +},{"./check":176,"./types":206}],188:[function(require,module,exports){ // The `CFF` table contains the glyph outlines in PostScript format. // https://www.microsoft.com/typography/OTSPEC/cff.htm // http://download.microsoft.com/download/8/0/1/801a191c-029d-4af3-9642-555f6fe514ee/cff.pdf @@ -48345,7 +48589,7 @@ function makeCFFTable(glyphs, options) { exports.parse = parseCFFTable; exports.make = makeCFFTable; -},{"../encoding":177,"../glyphset":180,"../parse":183,"../path":184,"../table":186}],188:[function(require,module,exports){ +},{"../encoding":178,"../glyphset":181,"../parse":184,"../path":185,"../table":187}],189:[function(require,module,exports){ // The `cmap` table stores the mappings from characters to glyphs. // https://www.microsoft.com/typography/OTSPEC/cmap.htm @@ -48569,7 +48813,7 @@ function makeCmapTable(glyphs) { exports.parse = parseCmapTable; exports.make = makeCmapTable; -},{"../check":175,"../parse":183,"../table":186}],189:[function(require,module,exports){ +},{"../check":176,"../parse":184,"../table":187}],190:[function(require,module,exports){ // The `fvar` table stores font variation axes and instances. // https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6fvar.html @@ -48710,7 +48954,7 @@ function parseFvarTable(data, start, names) { exports.make = makeFvarTable; exports.parse = parseFvarTable; -},{"../check":175,"../parse":183,"../table":186}],190:[function(require,module,exports){ +},{"../check":176,"../parse":184,"../table":187}],191:[function(require,module,exports){ // The `glyf` table describes the glyphs in TrueType outline format. // http://www.microsoft.com/typography/otspec/glyf.htm @@ -49047,7 +49291,7 @@ function parseGlyfTable(data, start, loca, font) { exports.parse = parseGlyfTable; -},{"../check":175,"../glyphset":180,"../parse":183,"../path":184}],191:[function(require,module,exports){ +},{"../check":176,"../glyphset":181,"../parse":184,"../path":185}],192:[function(require,module,exports){ // The `GPOS` table contains kerning pairs, among other things. // https://www.microsoft.com/typography/OTSPEC/gpos.htm @@ -49286,7 +49530,7 @@ function parseGposTable(data, start, font) { exports.parse = parseGposTable; -},{"../check":175,"../parse":183}],192:[function(require,module,exports){ +},{"../check":176,"../parse":184}],193:[function(require,module,exports){ // The `GSUB` table contains ligatures, among other things. // https://www.microsoft.com/typography/OTSPEC/gsub.htm @@ -49546,7 +49790,7 @@ function makeGsubTable(gsub) { exports.parse = parseGsubTable; exports.make = makeGsubTable; -},{"../check":175,"../parse":183,"../table":186}],193:[function(require,module,exports){ +},{"../check":176,"../parse":184,"../table":187}],194:[function(require,module,exports){ // The `head` table contains global information about the font. // https://www.microsoft.com/typography/OTSPEC/head.htm @@ -49614,7 +49858,7 @@ function makeHeadTable(options) { exports.parse = parseHeadTable; exports.make = makeHeadTable; -},{"../check":175,"../parse":183,"../table":186}],194:[function(require,module,exports){ +},{"../check":176,"../parse":184,"../table":187}],195:[function(require,module,exports){ // The `hhea` table contains information for horizontal layout. // https://www.microsoft.com/typography/OTSPEC/hhea.htm @@ -49669,7 +49913,7 @@ function makeHheaTable(options) { exports.parse = parseHheaTable; exports.make = makeHheaTable; -},{"../parse":183,"../table":186}],195:[function(require,module,exports){ +},{"../parse":184,"../table":187}],196:[function(require,module,exports){ // The `hmtx` table contains the horizontal metrics for all glyphs. // https://www.microsoft.com/typography/OTSPEC/hmtx.htm @@ -49713,7 +49957,7 @@ function makeHmtxTable(glyphs) { exports.parse = parseHmtxTable; exports.make = makeHmtxTable; -},{"../parse":183,"../table":186}],196:[function(require,module,exports){ +},{"../parse":184,"../table":187}],197:[function(require,module,exports){ // The `kern` table contains kerning pairs. // Note that some fonts use the GPOS OpenType layout table to specify kerning. // https://www.microsoft.com/typography/OTSPEC/kern.htm @@ -49786,7 +50030,7 @@ function parseKernTable(data, start) { exports.parse = parseKernTable; -},{"../check":175,"../parse":183}],197:[function(require,module,exports){ +},{"../check":176,"../parse":184}],198:[function(require,module,exports){ // The `loca` table stores the offsets to the locations of the glyphs in the font. // https://www.microsoft.com/typography/OTSPEC/loca.htm @@ -49821,7 +50065,7 @@ function parseLocaTable(data, start, numGlyphs, shortVersion) { exports.parse = parseLocaTable; -},{"../parse":183}],198:[function(require,module,exports){ +},{"../parse":184}],199:[function(require,module,exports){ // The `ltag` table stores IETF BCP-47 language tags. It allows supporting // languages for which TrueType does not assign a numeric code. // https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6ltag.html @@ -49884,7 +50128,7 @@ function parseLtagTable(data, start) { exports.make = makeLtagTable; exports.parse = parseLtagTable; -},{"../check":175,"../parse":183,"../table":186}],199:[function(require,module,exports){ +},{"../check":176,"../parse":184,"../table":187}],200:[function(require,module,exports){ // The `maxp` table establishes the memory requirements for the font. // We need it just to get the number of glyphs in the font. // https://www.microsoft.com/typography/OTSPEC/maxp.htm @@ -49929,7 +50173,7 @@ function makeMaxpTable(numGlyphs) { exports.parse = parseMaxpTable; exports.make = makeMaxpTable; -},{"../parse":183,"../table":186}],200:[function(require,module,exports){ +},{"../parse":184,"../table":187}],201:[function(require,module,exports){ // The `GPOS` table contains kerning pairs, among other things. // https://www.microsoft.com/typography/OTSPEC/gpos.htm @@ -49992,7 +50236,7 @@ function makeMetaTable(tags) { exports.parse = parseMetaTable; exports.make = makeMetaTable; -},{"../check":175,"../parse":183,"../table":186,"../types":205}],201:[function(require,module,exports){ +},{"../check":176,"../parse":184,"../table":187,"../types":206}],202:[function(require,module,exports){ // The `name` naming table. // https://www.microsoft.com/typography/OTSPEC/name.htm @@ -50829,7 +51073,7 @@ function makeNameTable(names, ltag) { exports.parse = parseNameTable; exports.make = makeNameTable; -},{"../parse":183,"../table":186,"../types":205}],202:[function(require,module,exports){ +},{"../parse":184,"../table":187,"../types":206}],203:[function(require,module,exports){ // The `OS/2` table contains metrics required in OpenType fonts. // https://www.microsoft.com/typography/OTSPEC/os2.htm @@ -51085,7 +51329,7 @@ exports.getUnicodeRange = getUnicodeRange; exports.parse = parseOS2Table; exports.make = makeOS2Table; -},{"../parse":183,"../table":186}],203:[function(require,module,exports){ +},{"../parse":184,"../table":187}],204:[function(require,module,exports){ // The `post` table stores additional PostScript information, such as glyph names. // https://www.microsoft.com/typography/OTSPEC/post.htm @@ -51158,7 +51402,7 @@ function makePostTable() { exports.parse = parsePostTable; exports.make = makePostTable; -},{"../encoding":177,"../parse":183,"../table":186}],204:[function(require,module,exports){ +},{"../encoding":178,"../parse":184,"../table":187}],205:[function(require,module,exports){ // The `sfnt` wrapper provides organization for the tables in the font. // It is the top-level data structure in a font. // https://www.microsoft.com/typography/OTSPEC/otff.htm @@ -51502,7 +51746,7 @@ exports.computeCheckSum = computeCheckSum; exports.make = makeSfntTable; exports.fontToTable = fontToSfntTable; -},{"../check":175,"../table":186,"./cff":187,"./cmap":188,"./gsub":192,"./head":193,"./hhea":194,"./hmtx":195,"./ltag":198,"./maxp":199,"./meta":200,"./name":201,"./os2":202,"./post":203}],205:[function(require,module,exports){ +},{"../check":176,"../table":187,"./cff":188,"./cmap":189,"./gsub":193,"./head":194,"./hhea":195,"./hmtx":196,"./ltag":199,"./maxp":200,"./meta":201,"./name":202,"./os2":203,"./post":204}],206:[function(require,module,exports){ // Data types used in the OpenType font file. // All OpenType fonts use Motorola-style byte ordering (Big Endian) @@ -52369,7 +52613,7 @@ exports.decode = decode; exports.encode = encode; exports.sizeOf = sizeOf; -},{"./check":175}],206:[function(require,module,exports){ +},{"./check":176}],207:[function(require,module,exports){ (function (Buffer){ 'use strict'; @@ -52408,7 +52652,7 @@ exports.checkArgument = function(expression, message) { }; }).call(this,require("buffer").Buffer) -},{"buffer":57}],207:[function(require,module,exports){ +},{"buffer":58}],208:[function(require,module,exports){ 'use strict'; @@ -52512,7 +52756,7 @@ exports.setTyped = function (on) { exports.setTyped(TYPED_OK); -},{}],208:[function(require,module,exports){ +},{}],209:[function(require,module,exports){ 'use strict'; // Note: adler32 takes 12% for level 0 and 2% for level 6. @@ -52546,7 +52790,7 @@ function adler32(adler, buf, len, pos) { module.exports = adler32; -},{}],209:[function(require,module,exports){ +},{}],210:[function(require,module,exports){ 'use strict'; @@ -52598,7 +52842,7 @@ module.exports = { //Z_NULL: null // Use -1 or null inline, depending on var type }; -},{}],210:[function(require,module,exports){ +},{}],211:[function(require,module,exports){ 'use strict'; // Note: we can't get significant speed boost here. @@ -52641,7 +52885,7 @@ function crc32(crc, buf, len, pos) { module.exports = crc32; -},{}],211:[function(require,module,exports){ +},{}],212:[function(require,module,exports){ 'use strict'; var utils = require('../utils/common'); @@ -54498,7 +54742,7 @@ exports.deflatePrime = deflatePrime; exports.deflateTune = deflateTune; */ -},{"../utils/common":207,"./adler32":208,"./crc32":210,"./messages":215,"./trees":216}],212:[function(require,module,exports){ +},{"../utils/common":208,"./adler32":209,"./crc32":211,"./messages":216,"./trees":217}],213:[function(require,module,exports){ 'use strict'; // See state defs from inflate.js @@ -54826,7 +55070,7 @@ module.exports = function inflate_fast(strm, start) { return; }; -},{}],213:[function(require,module,exports){ +},{}],214:[function(require,module,exports){ 'use strict'; @@ -56366,7 +56610,7 @@ exports.inflateSyncPoint = inflateSyncPoint; exports.inflateUndermine = inflateUndermine; */ -},{"../utils/common":207,"./adler32":208,"./crc32":210,"./inffast":212,"./inftrees":214}],214:[function(require,module,exports){ +},{"../utils/common":208,"./adler32":209,"./crc32":211,"./inffast":213,"./inftrees":215}],215:[function(require,module,exports){ 'use strict'; @@ -56695,7 +56939,7 @@ module.exports = function inflate_table(type, lens, lens_index, codes, table, ta return 0; }; -},{"../utils/common":207}],215:[function(require,module,exports){ +},{"../utils/common":208}],216:[function(require,module,exports){ 'use strict'; module.exports = { @@ -56710,7 +56954,7 @@ module.exports = { '-6': 'incompatible version' /* Z_VERSION_ERROR (-6) */ }; -},{}],216:[function(require,module,exports){ +},{}],217:[function(require,module,exports){ 'use strict'; @@ -57914,7 +58158,7 @@ exports._tr_flush_block = _tr_flush_block; exports._tr_tally = _tr_tally; exports._tr_align = _tr_align; -},{"../utils/common":207}],217:[function(require,module,exports){ +},{"../utils/common":208}],218:[function(require,module,exports){ 'use strict'; @@ -57945,7 +58189,7 @@ function ZStream() { module.exports = ZStream; -},{}],218:[function(require,module,exports){ +},{}],219:[function(require,module,exports){ module.exports={"2.16.840.1.101.3.4.1.1": "aes-128-ecb", "2.16.840.1.101.3.4.1.2": "aes-128-cbc", "2.16.840.1.101.3.4.1.3": "aes-128-ofb", @@ -57959,7 +58203,7 @@ module.exports={"2.16.840.1.101.3.4.1.1": "aes-128-ecb", "2.16.840.1.101.3.4.1.43": "aes-256-ofb", "2.16.840.1.101.3.4.1.44": "aes-256-cfb" } -},{}],219:[function(require,module,exports){ +},{}],220:[function(require,module,exports){ // from https://github.com/indutny/self-signed/blob/gh-pages/lib/asn1.js // Fedor, you are amazing. 'use strict' @@ -58083,7 +58327,7 @@ exports.signature = asn1.define('signature', function () { ) }) -},{"./certificate":220,"asn1.js":7}],220:[function(require,module,exports){ +},{"./certificate":221,"asn1.js":8}],221:[function(require,module,exports){ // from https://github.com/Rantanen/node-dtls/blob/25a7dc861bda38cfeac93a723500eea4f0ac2e86/Certificate.js // thanks to @Rantanen @@ -58173,7 +58417,7 @@ var X509Certificate = asn.define('X509Certificate', function () { module.exports = X509Certificate -},{"asn1.js":7}],221:[function(require,module,exports){ +},{"asn1.js":8}],222:[function(require,module,exports){ (function (Buffer){ // adapted from https://github.com/apatil/pemstrip var findProc = /Proc-Type: 4,ENCRYPTED\n\r?DEK-Info: AES-((?:128)|(?:192)|(?:256))-CBC,([0-9A-H]+)\n\r?\n\r?([0-9A-z\n\r\+\/\=]+)\n\r?/m @@ -58207,7 +58451,7 @@ module.exports = function (okey, password) { } }).call(this,require("buffer").Buffer) -},{"browserify-aes":29,"buffer":57,"evp_bytestokey":95}],222:[function(require,module,exports){ +},{"browserify-aes":30,"buffer":58,"evp_bytestokey":96}],223:[function(require,module,exports){ (function (Buffer){ var asn1 = require('./asn1') var aesid = require('./aesid.json') @@ -58317,7 +58561,7 @@ function decrypt (data, password) { } }).call(this,require("buffer").Buffer) -},{"./aesid.json":218,"./asn1":219,"./fixProc":221,"browserify-aes":29,"buffer":57,"pbkdf2":224}],223:[function(require,module,exports){ +},{"./aesid.json":219,"./asn1":220,"./fixProc":222,"browserify-aes":30,"buffer":58,"pbkdf2":225}],224:[function(require,module,exports){ (function (process){ // Copyright Joyent, Inc. and other Node contributors. // @@ -58545,7 +58789,7 @@ var substr = 'ab'.substr(-1) === 'b' ; }).call(this,require('_process')) -},{"_process":248}],224:[function(require,module,exports){ +},{"_process":249}],225:[function(require,module,exports){ (function (process,Buffer){ var createHmac = require('create-hmac') var checkParameters = require('./precondition') @@ -58617,7 +58861,7 @@ exports.pbkdf2Sync = function (password, salt, iterations, keylen, digest) { } }).call(this,require('_process'),require("buffer").Buffer) -},{"./precondition":225,"_process":248,"buffer":57,"create-hmac":64}],225:[function(require,module,exports){ +},{"./precondition":226,"_process":249,"buffer":58,"create-hmac":65}],226:[function(require,module,exports){ var MAX_ALLOC = Math.pow(2, 30) - 1 // default in iojs module.exports = function (iterations, keylen) { if (typeof iterations !== 'number') { @@ -58637,7 +58881,7 @@ module.exports = function (iterations, keylen) { } } -},{}],226:[function(require,module,exports){ +},{}],227:[function(require,module,exports){ (function (Buffer){ 'use strict'; @@ -58838,7 +59082,7 @@ exports.dataToBitMap = function(data, bitmapInfo) { }; }).call(this,require("buffer").Buffer) -},{"./interlace":236,"buffer":57}],227:[function(require,module,exports){ +},{"./interlace":237,"buffer":58}],228:[function(require,module,exports){ (function (Buffer){ 'use strict'; @@ -58906,7 +59150,7 @@ module.exports = function(data, width, height, options) { }; }).call(this,require("buffer").Buffer) -},{"./constants":229,"buffer":57}],228:[function(require,module,exports){ +},{"./constants":230,"buffer":58}],229:[function(require,module,exports){ (function (process,Buffer){ 'use strict'; @@ -59119,7 +59363,7 @@ ChunkStream.prototype._process = function() { }; }).call(this,require('_process'),require("buffer").Buffer) -},{"_process":248,"buffer":57,"stream":283,"util":291}],229:[function(require,module,exports){ +},{"_process":249,"buffer":58,"stream":286,"util":294}],230:[function(require,module,exports){ 'use strict'; @@ -59155,7 +59399,7 @@ module.exports = { GAMMA_DIVISION: 100000 }; -},{}],230:[function(require,module,exports){ +},{}],231:[function(require,module,exports){ 'use strict'; var crcTable = []; @@ -59201,7 +59445,7 @@ CrcCalculator.crc32 = function(buf) { return crc ^ -1; }; -},{}],231:[function(require,module,exports){ +},{}],232:[function(require,module,exports){ (function (Buffer){ 'use strict'; @@ -59388,7 +59632,7 @@ module.exports = function(pxData, width, height, options, bpp) { }; }).call(this,require("buffer").Buffer) -},{"./paeth-predictor":240,"buffer":57}],232:[function(require,module,exports){ +},{"./paeth-predictor":241,"buffer":58}],233:[function(require,module,exports){ (function (Buffer){ 'use strict'; @@ -59417,7 +59661,7 @@ var FilterAsync = module.exports = function(bitmapInfo) { util.inherits(FilterAsync, ChunkStream); }).call(this,require("buffer").Buffer) -},{"./chunkstream":228,"./filter-parse":234,"buffer":57,"util":291}],233:[function(require,module,exports){ +},{"./chunkstream":229,"./filter-parse":235,"buffer":58,"util":294}],234:[function(require,module,exports){ (function (Buffer){ 'use strict'; @@ -59444,7 +59688,7 @@ exports.process = function(inBuffer, bitmapInfo) { return Buffer.concat(outBuffers); }; }).call(this,require("buffer").Buffer) -},{"./filter-parse":234,"./sync-reader":246,"buffer":57}],234:[function(require,module,exports){ +},{"./filter-parse":235,"./sync-reader":247,"buffer":58}],235:[function(require,module,exports){ (function (Buffer){ 'use strict'; @@ -59619,7 +59863,7 @@ Filter.prototype._reverseFilterLine = function(rawData) { }; }).call(this,require("buffer").Buffer) -},{"./interlace":236,"./paeth-predictor":240,"buffer":57}],235:[function(require,module,exports){ +},{"./interlace":237,"./paeth-predictor":241,"buffer":58}],236:[function(require,module,exports){ (function (Buffer){ 'use strict'; @@ -59712,7 +59956,7 @@ module.exports = function(indata, imageData) { }; }).call(this,require("buffer").Buffer) -},{"buffer":57}],236:[function(require,module,exports){ +},{"buffer":58}],237:[function(require,module,exports){ 'use strict'; // Adam 7 @@ -59800,7 +60044,7 @@ exports.getInterlaceIterator = function(width) { return (outerX * 4) + (outerY * width * 4); }; }; -},{}],237:[function(require,module,exports){ +},{}],238:[function(require,module,exports){ (function (Buffer){ 'use strict'; @@ -59849,7 +60093,7 @@ PackerAsync.prototype.pack = function(data, width, height, gamma) { }; }).call(this,require("buffer").Buffer) -},{"./constants":229,"./packer":239,"buffer":57,"stream":283,"util":291}],238:[function(require,module,exports){ +},{"./constants":230,"./packer":240,"buffer":58,"stream":286,"util":294}],239:[function(require,module,exports){ (function (Buffer){ 'use strict'; @@ -59898,7 +60142,7 @@ module.exports = function(metaData, opt) { }; }).call(this,require("buffer").Buffer) -},{"./constants":229,"./packer":239,"buffer":57,"zlib":53}],239:[function(require,module,exports){ +},{"./constants":230,"./packer":240,"buffer":58,"zlib":54}],240:[function(require,module,exports){ (function (Buffer){ 'use strict'; @@ -59993,7 +60237,7 @@ Packer.prototype.packIEND = function() { return this._packChunk(constants.TYPE_IEND, null); }; }).call(this,require("buffer").Buffer) -},{"./bitpacker":227,"./constants":229,"./crc":230,"./filter-pack":231,"buffer":57,"zlib":53}],240:[function(require,module,exports){ +},{"./bitpacker":228,"./constants":230,"./crc":231,"./filter-pack":232,"buffer":58,"zlib":54}],241:[function(require,module,exports){ 'use strict'; module.exports = function paethPredictor(left, above, upLeft) { @@ -60011,7 +60255,7 @@ module.exports = function paethPredictor(left, above, upLeft) { } return upLeft; }; -},{}],241:[function(require,module,exports){ +},{}],242:[function(require,module,exports){ 'use strict'; var util = require('util'); @@ -60123,7 +60367,7 @@ ParserAsync.prototype._complete = function(filteredData) { this.emit('parsed', normalisedBitmapData); }; -},{"./bitmapper":226,"./chunkstream":228,"./filter-parse-async":232,"./format-normaliser":235,"./parser":243,"util":291,"zlib":53}],242:[function(require,module,exports){ +},{"./bitmapper":227,"./chunkstream":229,"./filter-parse-async":233,"./format-normaliser":236,"./parser":244,"util":294,"zlib":54}],243:[function(require,module,exports){ (function (Buffer){ 'use strict'; @@ -60215,7 +60459,7 @@ module.exports = function(buffer, options) { }; }).call(this,require("buffer").Buffer) -},{"./bitmapper":226,"./filter-parse-sync":233,"./format-normaliser":235,"./parser":243,"./sync-reader":246,"buffer":57,"zlib":53}],243:[function(require,module,exports){ +},{"./bitmapper":227,"./filter-parse-sync":234,"./format-normaliser":236,"./parser":244,"./sync-reader":247,"buffer":58,"zlib":54}],244:[function(require,module,exports){ (function (Buffer){ 'use strict'; @@ -60509,7 +60753,7 @@ Parser.prototype._parseIEND = function(data) { }; }).call(this,require("buffer").Buffer) -},{"./constants":229,"./crc":230,"buffer":57}],244:[function(require,module,exports){ +},{"./constants":230,"./crc":231,"buffer":58}],245:[function(require,module,exports){ 'use strict'; @@ -60527,7 +60771,7 @@ exports.write = function(png) { return pack(png); }; -},{"./packer-sync":238,"./parser-sync":242}],245:[function(require,module,exports){ +},{"./packer-sync":239,"./parser-sync":243}],246:[function(require,module,exports){ (function (process,Buffer){ 'use strict'; @@ -60704,7 +60948,7 @@ PNG.prototype.adjustGamma = function() { }; }).call(this,require('_process'),require("buffer").Buffer) -},{"./packer-async":237,"./parser-async":241,"./png-sync":244,"_process":248,"buffer":57,"stream":283,"util":291}],246:[function(require,module,exports){ +},{"./packer-async":238,"./parser-async":242,"./png-sync":245,"_process":249,"buffer":58,"stream":286,"util":294}],247:[function(require,module,exports){ 'use strict'; var SyncReader = module.exports = function(buffer) { @@ -60757,7 +61001,7 @@ SyncReader.prototype.process = function() { }; -},{}],247:[function(require,module,exports){ +},{}],248:[function(require,module,exports){ (function (process){ 'use strict'; @@ -60804,7 +61048,7 @@ function nextTick(fn, arg1, arg2, arg3) { } }).call(this,require('_process')) -},{"_process":248}],248:[function(require,module,exports){ +},{"_process":249}],249:[function(require,module,exports){ // shim for using process in browser var process = module.exports = {}; @@ -60986,7 +61230,7 @@ process.chdir = function (dir) { }; process.umask = function() { return 0; }; -},{}],249:[function(require,module,exports){ +},{}],250:[function(require,module,exports){ (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : @@ -66905,7 +67149,7 @@ process.umask = function() { return 0; }; }))); -},{}],250:[function(require,module,exports){ +},{}],251:[function(require,module,exports){ exports.publicEncrypt = require('./publicEncrypt'); exports.privateDecrypt = require('./privateDecrypt'); @@ -66916,7 +67160,7 @@ exports.privateEncrypt = function privateEncrypt(key, buf) { exports.publicDecrypt = function publicDecrypt(key, buf) { return exports.privateDecrypt(key, buf, true); }; -},{"./privateDecrypt":252,"./publicEncrypt":253}],251:[function(require,module,exports){ +},{"./privateDecrypt":253,"./publicEncrypt":254}],252:[function(require,module,exports){ (function (Buffer){ var createHash = require('create-hash'); module.exports = function (seed, len) { @@ -66935,7 +67179,7 @@ function i2ops(c) { return out; } }).call(this,require("buffer").Buffer) -},{"buffer":57,"create-hash":61}],252:[function(require,module,exports){ +},{"buffer":58,"create-hash":62}],253:[function(require,module,exports){ (function (Buffer){ var parseKeys = require('parse-asn1'); var mgf = require('./mgf'); @@ -67046,7 +67290,7 @@ function compare(a, b){ return dif; } }).call(this,require("buffer").Buffer) -},{"./mgf":251,"./withPublic":254,"./xor":255,"bn.js":24,"browserify-rsa":45,"buffer":57,"create-hash":61,"parse-asn1":222}],253:[function(require,module,exports){ +},{"./mgf":252,"./withPublic":255,"./xor":256,"bn.js":25,"browserify-rsa":46,"buffer":58,"create-hash":62,"parse-asn1":223}],254:[function(require,module,exports){ (function (Buffer){ var parseKeys = require('parse-asn1'); var randomBytes = require('randombytes'); @@ -67144,7 +67388,7 @@ function nonZero(len, crypto) { return out; } }).call(this,require("buffer").Buffer) -},{"./mgf":251,"./withPublic":254,"./xor":255,"bn.js":24,"browserify-rsa":45,"buffer":57,"create-hash":61,"parse-asn1":222,"randombytes":259}],254:[function(require,module,exports){ +},{"./mgf":252,"./withPublic":255,"./xor":256,"bn.js":25,"browserify-rsa":46,"buffer":58,"create-hash":62,"parse-asn1":223,"randombytes":260}],255:[function(require,module,exports){ (function (Buffer){ var bn = require('bn.js'); function withPublic(paddedMsg, key) { @@ -67157,7 +67401,7 @@ function withPublic(paddedMsg, key) { module.exports = withPublic; }).call(this,require("buffer").Buffer) -},{"bn.js":24,"buffer":57}],255:[function(require,module,exports){ +},{"bn.js":25,"buffer":58}],256:[function(require,module,exports){ module.exports = function xor(a, b) { var len = a.length; var i = -1; @@ -67166,7 +67410,7 @@ module.exports = function xor(a, b) { } return a }; -},{}],256:[function(require,module,exports){ +},{}],257:[function(require,module,exports){ (function (Buffer){ // Pure Image uses existing libraries for font parsing, jpeg/png encode/decode // and borrowed code for transform management and unsigned integer manipulation @@ -67423,7 +67667,7 @@ function Bitmap4BBPContext(bitmap) { var lines = pathToLines(this.path); var ctx = this; lines.forEach(function(line){ - drawLine(ctx, line, ctx._strokeColor); + drawLine(ctx, line, ctx._strokeColor, ctx.lineWidth); }); } @@ -67817,29 +68061,45 @@ function calcSortedIntersections(lines,y) { return xlist.sort(function(a,b) { return a-b; }); } - - -//Bresenham's from Rosetta Code -// http://rosettacode.org/wiki/Bitmap/Bresenham's_line_algorithm#JavaScript -drawLine = function(image, line, color) { - var x0 = Math.floor(line.start.x); - var y0 = Math.floor(line.start.y); - var x1 = Math.floor(line.end.x); - var y1 = Math.floor(line.end.y); - var dx = Math.abs(x1 - x0), sx = x0 < x1 ? 1 : -1; - var dy = Math.abs(y1 - y0), sy = y0 < y1 ? 1 : -1; - var err = (dx>dy ? dx : -dy)/2; - - while (true) { - image.compositePixel(x0,y0,color); - if (x0 === x1 && y0 === y1) break; - var e2 = err; - if (e2 > -dx) { err -= dy; x0 += sx; } - if (e2 < dy) { err += dx; y0 += sy; } - } +// antialiased Bresenham's line with width +// http://members.chello.at/~easyfilter/bresenham.html +function drawLine(image, line, color, width) { + var x0 = Math.floor(line.start.x); + var y0 = Math.floor(line.start.y); + var x1 = Math.floor(line.end.x); + var y1 = Math.floor(line.end.y); + var dx = Math.abs(x1 - x0), sx = x0 < x1 ? 1 : -1; + var dy = Math.abs(y1 - y0), sy = y0 < y1 ? 1 : -1; + + var err = dx-dy, e2, x2, y2; + var ed = dx+dy == 0 ? 1 : Math.sqrt(dx*dx+dy*dy); + var rgb = uint32.and(color,0xFFFFFF00); + for (width = (width+1)/2; ; ) { + var alpha = ~~Math.max(0,255*(Math.abs(err-dx+dy)/ed-width+1)); + var pixelColor = uint32.or(rgb,255-alpha); + image.compositePixel(x0,y0,pixelColor); + e2 = err; x2 = x0; + if (2*e2 >= -dx) { + for (e2 += dy, y2 = y0; e2 < ed*width && (y1 != y2 || dx > dy); e2 += dx) { + var alpha = ~~Math.max(0,255*(Math.abs(e2)/ed-width+1)); + var pixelColor = uint32.or(rgb,255-alpha); + image.compositePixel(x0, y2 += sy, pixelColor); + } + if (x0 == x1) break; + e2 = err; err -= dy; x0 += sx; + } + if (2*e2 <= dy) { + for (e2 = dx-e2; e2 < ed*width && (x1 != x2 || dx < dy); e2 += dy) { + var alpha = ~~Math.max(0,255*(Math.abs(e2)/ed-width+1)); + var pixelColor = uint32.or(rgb,255-alpha); + image.compositePixel(x2 += sx, y0, pixelColor); + } + if (y0 == y1) break; + err += dx; y0 += sy; + } + } } - //composite pixel doubles the time. need to implement replace with a better thing exports.compositePixel = function(src,dst,omode) { if(omode == 'REPLACE') { @@ -67850,7 +68110,7 @@ exports.compositePixel = function(src,dst,omode) { var src_alpha = src_rgba[3]/255; var dst_alpha = dst_rgba[3]/255; - var final_a = src_rgba[3]; + var final_a = 255*(src_alpha + dst_alpha * (1-src_alpha)); var final_rgba = [ lerp(dst_rgba[0],src_rgba[0],src_alpha), @@ -67880,7 +68140,7 @@ var cache = { } }).call(this,require("buffer").Buffer) -},{"./transform":257,"./uint32":258,"buffer":57,"fs":54,"jpeg-js":167,"opentype.js":182,"pngjs":245}],257:[function(require,module,exports){ +},{"./transform":258,"./uint32":259,"buffer":58,"fs":55,"jpeg-js":168,"opentype.js":183,"pngjs":246}],258:[function(require,module,exports){ //transform code from https://github.com/kcmoot/transform-tracker/blob/master/transform-tracker.js @@ -68065,7 +68325,7 @@ function Transform(context) { exports.Transform = Transform; -},{}],258:[function(require,module,exports){ +},{}],259:[function(require,module,exports){ //from https://github.com/fxa/uint32.js @@ -68320,7 +68580,7 @@ exports.Transform = Transform; }) ((typeof module !== 'undefined') ? module.exports = {} : window.uint32 = {}); -},{}],259:[function(require,module,exports){ +},{}],260:[function(require,module,exports){ (function (process,global,Buffer){ 'use strict' @@ -68360,10 +68620,10 @@ function randomBytes (size, cb) { } }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer) -},{"_process":248,"buffer":57}],260:[function(require,module,exports){ -module.exports = require("./lib/_stream_duplex.js") +},{"_process":249,"buffer":58}],261:[function(require,module,exports){ +module.exports = require('./lib/_stream_duplex.js'); -},{"./lib/_stream_duplex.js":261}],261:[function(require,module,exports){ +},{"./lib/_stream_duplex.js":262}],262:[function(require,module,exports){ // a duplex stream is just a stream that is both readable and writable. // Since JS doesn't have multiple prototypal inheritance, this class // prototypally inherits from Readable, and then parasitically from @@ -68439,7 +68699,7 @@ function forEach(xs, f) { f(xs[i], i); } } -},{"./_stream_readable":263,"./_stream_writable":265,"core-util-is":59,"inherits":164,"process-nextick-args":247}],262:[function(require,module,exports){ +},{"./_stream_readable":264,"./_stream_writable":266,"core-util-is":60,"inherits":165,"process-nextick-args":248}],263:[function(require,module,exports){ // a passthrough stream. // basically just the most minimal sort of Transform stream. // Every written chunk gets output as-is. @@ -68466,7 +68726,7 @@ function PassThrough(options) { PassThrough.prototype._transform = function (chunk, encoding, cb) { cb(null, chunk); }; -},{"./_stream_transform":264,"core-util-is":59,"inherits":164}],263:[function(require,module,exports){ +},{"./_stream_transform":265,"core-util-is":60,"inherits":165}],264:[function(require,module,exports){ (function (process){ 'use strict'; @@ -68495,14 +68755,7 @@ var EElistenerCount = function (emitter, type) { /**/ /**/ -var Stream; -(function () { - try { - Stream = require('st' + 'ream'); - } catch (_) {} finally { - if (!Stream) Stream = require('events').EventEmitter; - } -})(); +var Stream = require('./internal/streams/stream'); /**/ var Buffer = require('buffer').Buffer; @@ -68530,6 +68783,8 @@ var StringDecoder; util.inherits(Readable, Stream); +var kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume']; + function prependListener(emitter, event, fn) { // Sadly this is not cacheable as some libraries bundle their own // event emitter implementation with them. @@ -69254,10 +69509,9 @@ Readable.prototype.wrap = function (stream) { } // proxy certain important events. - var events = ['error', 'close', 'destroy', 'pause', 'resume']; - forEach(events, function (ev) { - stream.on(ev, self.emit.bind(self, ev)); - }); + for (var n = 0; n < kProxyEvents.length; n++) { + stream.on(kProxyEvents[n], self.emit.bind(self, kProxyEvents[n])); + } // when we try to consume some more bytes, simply unpause the // underlying stream. @@ -69410,7 +69664,7 @@ function indexOf(xs, x) { return -1; } }).call(this,require('_process')) -},{"./_stream_duplex":261,"./internal/streams/BufferList":266,"_process":248,"buffer":57,"buffer-shims":55,"core-util-is":59,"events":94,"inherits":164,"isarray":166,"process-nextick-args":247,"string_decoder/":285,"util":26}],264:[function(require,module,exports){ +},{"./_stream_duplex":262,"./internal/streams/BufferList":267,"./internal/streams/stream":268,"_process":249,"buffer":58,"buffer-shims":56,"core-util-is":60,"events":95,"inherits":165,"isarray":167,"process-nextick-args":248,"string_decoder/":269,"util":27}],265:[function(require,module,exports){ // a transform stream is a readable/writable stream where you do // something with the data. Sometimes it's called a "filter", // but that's not a great name for it, since that implies a thing where @@ -69593,7 +69847,7 @@ function done(stream, er, data) { return stream.push(null); } -},{"./_stream_duplex":261,"core-util-is":59,"inherits":164}],265:[function(require,module,exports){ +},{"./_stream_duplex":262,"core-util-is":60,"inherits":165}],266:[function(require,module,exports){ (function (process){ // A bit simpler than readable streams. // Implement an async ._write(chunk, encoding, cb), and it'll handle all @@ -69629,14 +69883,7 @@ var internalUtil = { /**/ /**/ -var Stream; -(function () { - try { - Stream = require('st' + 'ream'); - } catch (_) {} finally { - if (!Stream) Stream = require('events').EventEmitter; - } -})(); +var Stream = require('./internal/streams/stream'); /**/ var Buffer = require('buffer').Buffer; @@ -70147,7 +70394,7 @@ function CorkedRequest(state) { }; } }).call(this,require('_process')) -},{"./_stream_duplex":261,"_process":248,"buffer":57,"buffer-shims":55,"core-util-is":59,"events":94,"inherits":164,"process-nextick-args":247,"util-deprecate":288}],266:[function(require,module,exports){ +},{"./_stream_duplex":262,"./internal/streams/stream":268,"_process":249,"buffer":58,"buffer-shims":56,"core-util-is":60,"inherits":165,"process-nextick-args":248,"util-deprecate":291}],267:[function(require,module,exports){ 'use strict'; var Buffer = require('buffer').Buffer; @@ -70212,36 +70459,302 @@ BufferList.prototype.concat = function (n) { } return ret; }; -},{"buffer":57,"buffer-shims":55}],267:[function(require,module,exports){ -module.exports = require("./lib/_stream_passthrough.js") +},{"buffer":58,"buffer-shims":56}],268:[function(require,module,exports){ +module.exports = require('events').EventEmitter; -},{"./lib/_stream_passthrough.js":262}],268:[function(require,module,exports){ -(function (process){ -var Stream = (function (){ - try { - return require('st' + 'ream'); // hack to fix a circular dependency issue when used with browserify - } catch(_){} -}()); +},{"events":95}],269:[function(require,module,exports){ +'use strict'; + +var Buffer = require('buffer').Buffer; +var bufferShim = require('buffer-shims'); + +var isEncoding = Buffer.isEncoding || function (encoding) { + encoding = '' + encoding; + switch (encoding && encoding.toLowerCase()) { + case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw': + return true; + default: + return false; + } +}; + +function _normalizeEncoding(enc) { + if (!enc) return 'utf8'; + var retried; + while (true) { + switch (enc) { + case 'utf8': + case 'utf-8': + return 'utf8'; + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return 'utf16le'; + case 'latin1': + case 'binary': + return 'latin1'; + case 'base64': + case 'ascii': + case 'hex': + return enc; + default: + if (retried) return; // undefined + enc = ('' + enc).toLowerCase(); + retried = true; + } + } +}; + +// Do not cache `Buffer.isEncoding` when checking encoding names as some +// modules monkey-patch it to support additional encodings +function normalizeEncoding(enc) { + var nenc = _normalizeEncoding(enc); + if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc); + return nenc || enc; +} + +// StringDecoder provides an interface for efficiently splitting a series of +// buffers into a series of JS strings without breaking apart multi-byte +// characters. +exports.StringDecoder = StringDecoder; +function StringDecoder(encoding) { + this.encoding = normalizeEncoding(encoding); + var nb; + switch (this.encoding) { + case 'utf16le': + this.text = utf16Text; + this.end = utf16End; + nb = 4; + break; + case 'utf8': + this.fillLast = utf8FillLast; + nb = 4; + break; + case 'base64': + this.text = base64Text; + this.end = base64End; + nb = 3; + break; + default: + this.write = simpleWrite; + this.end = simpleEnd; + return; + } + this.lastNeed = 0; + this.lastTotal = 0; + this.lastChar = bufferShim.allocUnsafe(nb); +} + +StringDecoder.prototype.write = function (buf) { + if (buf.length === 0) return ''; + var r; + var i; + if (this.lastNeed) { + r = this.fillLast(buf); + if (r === undefined) return ''; + i = this.lastNeed; + this.lastNeed = 0; + } else { + i = 0; + } + if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i); + return r || ''; +}; + +StringDecoder.prototype.end = utf8End; + +// Returns only complete characters in a Buffer +StringDecoder.prototype.text = utf8Text; + +// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer +StringDecoder.prototype.fillLast = function (buf) { + if (this.lastNeed <= buf.length) { + buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed); + return this.lastChar.toString(this.encoding, 0, this.lastTotal); + } + buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length); + this.lastNeed -= buf.length; +}; + +// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a +// continuation byte. +function utf8CheckByte(byte) { + if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4; + return -1; +} + +// Checks at most 3 bytes at the end of a Buffer in order to detect an +// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4) +// needed to complete the UTF-8 character (if applicable) are returned. +function utf8CheckIncomplete(self, buf, i) { + var j = buf.length - 1; + if (j < i) return 0; + var nb = utf8CheckByte(buf[j]); + if (nb >= 0) { + if (nb > 0) self.lastNeed = nb - 1; + return nb; + } + if (--j < i) return 0; + nb = utf8CheckByte(buf[j]); + if (nb >= 0) { + if (nb > 0) self.lastNeed = nb - 2; + return nb; + } + if (--j < i) return 0; + nb = utf8CheckByte(buf[j]); + if (nb >= 0) { + if (nb > 0) { + if (nb === 2) nb = 0;else self.lastNeed = nb - 3; + } + return nb; + } + return 0; +} + +// Validates as many continuation bytes for a multi-byte UTF-8 character as +// needed or are available. If we see a non-continuation byte where we expect +// one, we "replace" the validated continuation bytes we've seen so far with +// UTF-8 replacement characters ('\ufffd'), to match v8's UTF-8 decoding +// behavior. The continuation byte check is included three times in the case +// where all of the continuation bytes for a character exist in the same buffer. +// It is also done this way as a slight performance increase instead of using a +// loop. +function utf8CheckExtraBytes(self, buf, p) { + if ((buf[0] & 0xC0) !== 0x80) { + self.lastNeed = 0; + return '\ufffd'.repeat(p); + } + if (self.lastNeed > 1 && buf.length > 1) { + if ((buf[1] & 0xC0) !== 0x80) { + self.lastNeed = 1; + return '\ufffd'.repeat(p + 1); + } + if (self.lastNeed > 2 && buf.length > 2) { + if ((buf[2] & 0xC0) !== 0x80) { + self.lastNeed = 2; + return '\ufffd'.repeat(p + 2); + } + } + } +} + +// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer. +function utf8FillLast(buf) { + var p = this.lastTotal - this.lastNeed; + var r = utf8CheckExtraBytes(this, buf, p); + if (r !== undefined) return r; + if (this.lastNeed <= buf.length) { + buf.copy(this.lastChar, p, 0, this.lastNeed); + return this.lastChar.toString(this.encoding, 0, this.lastTotal); + } + buf.copy(this.lastChar, p, 0, buf.length); + this.lastNeed -= buf.length; +} + +// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a +// partial character, the character's bytes are buffered until the required +// number of bytes are available. +function utf8Text(buf, i) { + var total = utf8CheckIncomplete(this, buf, i); + if (!this.lastNeed) return buf.toString('utf8', i); + this.lastTotal = total; + var end = buf.length - (total - this.lastNeed); + buf.copy(this.lastChar, 0, end); + return buf.toString('utf8', i, end); +} + +// For UTF-8, a replacement character for each buffered byte of a (partial) +// character needs to be added to the output. +function utf8End(buf) { + var r = buf && buf.length ? this.write(buf) : ''; + if (this.lastNeed) return r + '\ufffd'.repeat(this.lastTotal - this.lastNeed); + return r; +} + +// UTF-16LE typically needs two bytes per character, but even if we have an even +// number of bytes available, we need to check if we end on a leading/high +// surrogate. In that case, we need to wait for the next two bytes in order to +// decode the last character properly. +function utf16Text(buf, i) { + if ((buf.length - i) % 2 === 0) { + var r = buf.toString('utf16le', i); + if (r) { + var c = r.charCodeAt(r.length - 1); + if (c >= 0xD800 && c <= 0xDBFF) { + this.lastNeed = 2; + this.lastTotal = 4; + this.lastChar[0] = buf[buf.length - 2]; + this.lastChar[1] = buf[buf.length - 1]; + return r.slice(0, -1); + } + } + return r; + } + this.lastNeed = 1; + this.lastTotal = 2; + this.lastChar[0] = buf[buf.length - 1]; + return buf.toString('utf16le', i, buf.length - 1); +} + +// For UTF-16LE we do not explicitly append special replacement characters if we +// end on a partial character, we simply let v8 handle that. +function utf16End(buf) { + var r = buf && buf.length ? this.write(buf) : ''; + if (this.lastNeed) { + var end = this.lastTotal - this.lastNeed; + return r + this.lastChar.toString('utf16le', 0, end); + } + return r; +} + +function base64Text(buf, i) { + var n = (buf.length - i) % 3; + if (n === 0) return buf.toString('base64', i); + this.lastNeed = 3 - n; + this.lastTotal = 3; + if (n === 1) { + this.lastChar[0] = buf[buf.length - 1]; + } else { + this.lastChar[0] = buf[buf.length - 2]; + this.lastChar[1] = buf[buf.length - 1]; + } + return buf.toString('base64', i, buf.length - n); +} + +function base64End(buf) { + var r = buf && buf.length ? this.write(buf) : ''; + if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed); + return r; +} + +// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex) +function simpleWrite(buf) { + return buf.toString(this.encoding); +} + +function simpleEnd(buf) { + return buf && buf.length ? this.write(buf) : ''; +} +},{"buffer":58,"buffer-shims":56}],270:[function(require,module,exports){ +module.exports = require('./readable').PassThrough + +},{"./readable":271}],271:[function(require,module,exports){ exports = module.exports = require('./lib/_stream_readable.js'); -exports.Stream = Stream || exports; +exports.Stream = exports; exports.Readable = exports; exports.Writable = require('./lib/_stream_writable.js'); exports.Duplex = require('./lib/_stream_duplex.js'); exports.Transform = require('./lib/_stream_transform.js'); exports.PassThrough = require('./lib/_stream_passthrough.js'); -if (!process.browser && process.env.READABLE_STREAM === 'disable' && Stream) { - module.exports = Stream; -} +},{"./lib/_stream_duplex.js":262,"./lib/_stream_passthrough.js":263,"./lib/_stream_readable.js":264,"./lib/_stream_transform.js":265,"./lib/_stream_writable.js":266}],272:[function(require,module,exports){ +module.exports = require('./readable').Transform -}).call(this,require('_process')) -},{"./lib/_stream_duplex.js":261,"./lib/_stream_passthrough.js":262,"./lib/_stream_readable.js":263,"./lib/_stream_transform.js":264,"./lib/_stream_writable.js":265,"_process":248}],269:[function(require,module,exports){ -module.exports = require("./lib/_stream_transform.js") +},{"./readable":271}],273:[function(require,module,exports){ +module.exports = require('./lib/_stream_writable.js'); -},{"./lib/_stream_transform.js":264}],270:[function(require,module,exports){ -module.exports = require("./lib/_stream_writable.js") - -},{"./lib/_stream_writable.js":265}],271:[function(require,module,exports){ +},{"./lib/_stream_writable.js":266}],274:[function(require,module,exports){ 'use strict'; var proj4 = require('proj4'); @@ -70378,7 +70891,7 @@ module.exports = { } }; -},{"proj4":249}],272:[function(require,module,exports){ +},{"proj4":250}],275:[function(require,module,exports){ (function (Buffer){ /* CryptoJS v3.1.2 @@ -70592,7 +71105,7 @@ function ripemd160 (message) { module.exports = ripemd160 }).call(this,require("buffer").Buffer) -},{"buffer":57}],273:[function(require,module,exports){ +},{"buffer":58}],276:[function(require,module,exports){ (function (Buffer){ // prototype class for hash functions function Hash (blockSize, finalSize) { @@ -70665,7 +71178,7 @@ Hash.prototype._update = function () { module.exports = Hash }).call(this,require("buffer").Buffer) -},{"buffer":57}],274:[function(require,module,exports){ +},{"buffer":58}],277:[function(require,module,exports){ var exports = module.exports = function SHA (algorithm) { algorithm = algorithm.toLowerCase() @@ -70682,7 +71195,7 @@ exports.sha256 = require('./sha256') exports.sha384 = require('./sha384') exports.sha512 = require('./sha512') -},{"./sha":275,"./sha1":276,"./sha224":277,"./sha256":278,"./sha384":279,"./sha512":280}],275:[function(require,module,exports){ +},{"./sha":278,"./sha1":279,"./sha224":280,"./sha256":281,"./sha384":282,"./sha512":283}],278:[function(require,module,exports){ (function (Buffer){ /* * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined @@ -70779,7 +71292,7 @@ Sha.prototype._hash = function () { module.exports = Sha }).call(this,require("buffer").Buffer) -},{"./hash":273,"buffer":57,"inherits":164}],276:[function(require,module,exports){ +},{"./hash":276,"buffer":58,"inherits":165}],279:[function(require,module,exports){ (function (Buffer){ /* * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined @@ -70881,7 +71394,7 @@ Sha1.prototype._hash = function () { module.exports = Sha1 }).call(this,require("buffer").Buffer) -},{"./hash":273,"buffer":57,"inherits":164}],277:[function(require,module,exports){ +},{"./hash":276,"buffer":58,"inherits":165}],280:[function(require,module,exports){ (function (Buffer){ /** * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined @@ -70937,7 +71450,7 @@ Sha224.prototype._hash = function () { module.exports = Sha224 }).call(this,require("buffer").Buffer) -},{"./hash":273,"./sha256":278,"buffer":57,"inherits":164}],278:[function(require,module,exports){ +},{"./hash":276,"./sha256":281,"buffer":58,"inherits":165}],281:[function(require,module,exports){ (function (Buffer){ /** * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined @@ -71075,7 +71588,7 @@ Sha256.prototype._hash = function () { module.exports = Sha256 }).call(this,require("buffer").Buffer) -},{"./hash":273,"buffer":57,"inherits":164}],279:[function(require,module,exports){ +},{"./hash":276,"buffer":58,"inherits":165}],282:[function(require,module,exports){ (function (Buffer){ var inherits = require('inherits') var SHA512 = require('./sha512') @@ -71135,7 +71648,7 @@ Sha384.prototype._hash = function () { module.exports = Sha384 }).call(this,require("buffer").Buffer) -},{"./hash":273,"./sha512":280,"buffer":57,"inherits":164}],280:[function(require,module,exports){ +},{"./hash":276,"./sha512":283,"buffer":58,"inherits":165}],283:[function(require,module,exports){ (function (Buffer){ var inherits = require('inherits') var Hash = require('./hash') @@ -71398,7 +71911,7 @@ Sha512.prototype._hash = function () { module.exports = Sha512 }).call(this,require("buffer").Buffer) -},{"./hash":273,"buffer":57,"inherits":164}],281:[function(require,module,exports){ +},{"./hash":276,"buffer":58,"inherits":165}],284:[function(require,module,exports){ (function (process,Buffer,__dirname){ // This prevents pollution of the global namespace var SQL = (function () { @@ -71908,7 +72421,7 @@ if (typeof module !== 'undefined') module.exports = SQL; if (typeof define === 'function') define(SQL); }).call(this,require('_process'),require("buffer").Buffer,"/node_modules/sql.js/js") -},{"_process":248,"buffer":57,"crypto":65,"fs":54,"path":223}],282:[function(require,module,exports){ +},{"_process":249,"buffer":58,"crypto":66,"fs":55,"path":224}],285:[function(require,module,exports){ (function (process,Buffer,__dirname){ // This prevents pollution of the global namespace var SQL = (function () { @@ -72417,7 +72930,7 @@ if (typeof module !== 'undefined') module.exports = SQL; if (typeof define === 'function') define(SQL); }).call(this,require('_process'),require("buffer").Buffer,"/node_modules/sql.js/js") -},{"_process":248,"buffer":57,"crypto":65,"fs":54,"path":223}],283:[function(require,module,exports){ +},{"_process":249,"buffer":58,"crypto":66,"fs":55,"path":224}],286:[function(require,module,exports){ // Copyright Joyent, Inc. and other Node contributors. // // Permission is hereby granted, free of charge, to any person obtaining a @@ -72546,7 +73059,7 @@ Stream.prototype.pipe = function(dest, options) { return dest; }; -},{"events":94,"inherits":164,"readable-stream/duplex.js":260,"readable-stream/passthrough.js":267,"readable-stream/readable.js":268,"readable-stream/transform.js":269,"readable-stream/writable.js":270}],284:[function(require,module,exports){ +},{"events":95,"inherits":165,"readable-stream/duplex.js":261,"readable-stream/passthrough.js":270,"readable-stream/readable.js":271,"readable-stream/transform.js":272,"readable-stream/writable.js":273}],287:[function(require,module,exports){ (function (process){ var Promise = require('any-promise') @@ -72610,7 +73123,7 @@ module.exports = function (stream, done) { } }).call(this,require('_process')) -},{"_process":248,"any-promise":4}],285:[function(require,module,exports){ +},{"_process":249,"any-promise":5}],288:[function(require,module,exports){ // Copyright Joyent, Inc. and other Node contributors. // // Permission is hereby granted, free of charge, to any person obtaining a @@ -72833,7 +73346,7 @@ function base64DetectIncompleteChar(buffer) { this.charLength = this.charReceived ? 3 : 0; } -},{"buffer":57}],286:[function(require,module,exports){ +},{"buffer":58}],289:[function(require,module,exports){ var TINF_OK = 0; var TINF_DATA_ERROR = -3; @@ -73210,7 +73723,7 @@ length_base[28] = 258; module.exports = tinf_uncompress; -},{}],287:[function(require,module,exports){ +},{}],290:[function(require,module,exports){ var undefined = (void 0); // Paranoia // Beyond this value, index getters/setters (i.e. array[0], array[1]) are so slow to @@ -73842,7 +74355,7 @@ function packF32(v) { return packIEEE754(v, 8, 23); } }()); -},{}],288:[function(require,module,exports){ +},{}],291:[function(require,module,exports){ (function (global){ /** @@ -73913,16 +74426,16 @@ function config (name) { } }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{}],289:[function(require,module,exports){ -arguments[4][164][0].apply(exports,arguments) -},{"dup":164}],290:[function(require,module,exports){ +},{}],292:[function(require,module,exports){ +arguments[4][165][0].apply(exports,arguments) +},{"dup":165}],293:[function(require,module,exports){ module.exports = function isBuffer(arg) { return arg && typeof arg === 'object' && typeof arg.copy === 'function' && typeof arg.fill === 'function' && typeof arg.readUInt8 === 'function'; } -},{}],291:[function(require,module,exports){ +},{}],294:[function(require,module,exports){ (function (process,global){ // Copyright Joyent, Inc. and other Node contributors. // @@ -74512,7 +75025,7 @@ function hasOwnProperty(obj, prop) { } }).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"./support/isBuffer":290,"_process":248,"inherits":289}],292:[function(require,module,exports){ +},{"./support/isBuffer":293,"_process":249,"inherits":292}],295:[function(require,module,exports){ var indexOf = require('indexof'); var Object_keys = function (obj) { @@ -74652,7 +75165,90 @@ exports.createContext = Script.createContext = function (context) { return copy; }; -},{"indexof":163}],293:[function(require,module,exports){ +},{"indexof":164}],296:[function(require,module,exports){ +var bundleFn = arguments[3]; +var sources = arguments[4]; +var cache = arguments[5]; + +var stringify = JSON.stringify; + +module.exports = function (fn, options) { + var wkey; + var cacheKeys = Object.keys(cache); + + for (var i = 0, l = cacheKeys.length; i < l; i++) { + var key = cacheKeys[i]; + var exp = cache[key].exports; + // Using babel as a transpiler to use esmodule, the export will always + // be an object with the default export as a property of it. To ensure + // the existing api and babel esmodule exports are both supported we + // check for both + if (exp === fn || exp && exp.default === fn) { + wkey = key; + break; + } + } + + if (!wkey) { + wkey = Math.floor(Math.pow(16, 8) * Math.random()).toString(16); + var wcache = {}; + for (var i = 0, l = cacheKeys.length; i < l; i++) { + var key = cacheKeys[i]; + wcache[key] = key; + } + sources[wkey] = [ + Function(['require','module','exports'], '(' + fn + ')(self)'), + wcache + ]; + } + var skey = Math.floor(Math.pow(16, 8) * Math.random()).toString(16); + + var scache = {}; scache[wkey] = wkey; + sources[skey] = [ + Function(['require'], ( + // try to call default if defined to also support babel esmodule + // exports + 'var f = require(' + stringify(wkey) + ');' + + '(f.default ? f.default : f)(self);' + )), + scache + ]; + + var workerSources = {}; + resolveSources(skey); + + function resolveSources(key) { + workerSources[key] = true; + + for (var depPath in sources[key][1]) { + var depKey = sources[key][1][depPath]; + if (!workerSources[depKey]) { + resolveSources(depKey); + } + } + } + + var src = '(' + bundleFn + ')({' + + Object.keys(workerSources).map(function (key) { + return stringify(key) + ':[' + + sources[key][0] + + ',' + stringify(sources[key][1]) + ']' + ; + }).join(',') + + '},{},[' + stringify(skey) + '])' + ; + + var URL = window.URL || window.webkitURL || window.mozURL || window.msURL; + + var blob = new Blob([src], { type: 'text/javascript' }); + if (options && options.bare) { return blob; } + var workerUrl = URL.createObjectURL(blob); + var worker = new Worker(workerUrl); + worker.objectURL = workerUrl; + return worker; +}; + +},{}],297:[function(require,module,exports){ (function (Buffer){ module.exports = BinaryReader; @@ -74703,7 +75299,7 @@ BinaryReader.prototype.readVarInt = function () { }; }).call(this,require("buffer").Buffer) -},{"buffer":57}],294:[function(require,module,exports){ +},{"buffer":58}],298:[function(require,module,exports){ (function (Buffer){ module.exports = BinaryWriter; @@ -74772,7 +75368,7 @@ BinaryWriter.prototype.ensureSize = function (size) { }; }).call(this,require("buffer").Buffer) -},{"buffer":57}],295:[function(require,module,exports){ +},{"buffer":58}],299:[function(require,module,exports){ (function (Buffer){ module.exports = Geometry; @@ -75153,7 +75749,7 @@ Geometry.prototype.toGeoJSON = function (options) { }; }).call(this,{"isBuffer":require("../../is-buffer/index.js")}) -},{"../../is-buffer/index.js":165,"./binaryreader":293,"./binarywriter":294,"./geometrycollection":296,"./linestring":297,"./multilinestring":298,"./multipoint":299,"./multipolygon":300,"./point":301,"./polygon":302,"./types":303,"./wktparser":304,"./zigzag.js":306}],296:[function(require,module,exports){ +},{"../../is-buffer/index.js":166,"./binaryreader":297,"./binarywriter":298,"./geometrycollection":300,"./linestring":301,"./multilinestring":302,"./multipoint":303,"./multipolygon":304,"./point":305,"./polygon":306,"./types":307,"./wktparser":308,"./zigzag.js":310}],300:[function(require,module,exports){ module.exports = GeometryCollection; var util = require('util'); @@ -75323,7 +75919,7 @@ GeometryCollection.prototype.toGeoJSON = function (options) { return geoJSON; }; -},{"./binarywriter":294,"./geometry":295,"./types":303,"util":291}],297:[function(require,module,exports){ +},{"./binarywriter":298,"./geometry":299,"./types":307,"util":294}],301:[function(require,module,exports){ module.exports = LineString; var util = require('util'); @@ -75502,7 +76098,7 @@ LineString.prototype.toGeoJSON = function (options) { return geoJSON; }; -},{"./binarywriter":294,"./geometry":295,"./point":301,"./types":303,"util":291}],298:[function(require,module,exports){ +},{"./binarywriter":298,"./geometry":299,"./point":305,"./types":307,"util":294}],302:[function(require,module,exports){ module.exports = MultiLineString; var util = require('util'); @@ -75692,7 +76288,7 @@ MultiLineString.prototype.toGeoJSON = function (options) { return geoJSON; }; -},{"./binarywriter":294,"./geometry":295,"./linestring":297,"./point":301,"./types":303,"util":291}],299:[function(require,module,exports){ +},{"./binarywriter":298,"./geometry":299,"./linestring":301,"./point":305,"./types":307,"util":294}],303:[function(require,module,exports){ module.exports = MultiPoint; var util = require('util'); @@ -75865,7 +76461,7 @@ MultiPoint.prototype.toGeoJSON = function (options) { return geoJSON; }; -},{"./binarywriter":294,"./geometry":295,"./point":301,"./types":303,"util":291}],300:[function(require,module,exports){ +},{"./binarywriter":298,"./geometry":299,"./point":305,"./types":307,"util":294}],304:[function(require,module,exports){ module.exports = MultiPolygon; var util = require('util'); @@ -76092,7 +76688,7 @@ MultiPolygon.prototype.toGeoJSON = function (options) { return geoJSON; }; -},{"./binarywriter":294,"./geometry":295,"./point":301,"./polygon":302,"./types":303,"util":291}],301:[function(require,module,exports){ +},{"./binarywriter":298,"./geometry":299,"./point":305,"./polygon":306,"./types":307,"util":294}],305:[function(require,module,exports){ module.exports = Point; var util = require('util'); @@ -76310,7 +76906,7 @@ Point.prototype.toGeoJSON = function (options) { return geoJSON; }; -},{"./binarywriter":294,"./geometry":295,"./types":303,"./zigzag.js":306,"util":291}],302:[function(require,module,exports){ +},{"./binarywriter":298,"./geometry":299,"./types":307,"./zigzag.js":310,"util":294}],306:[function(require,module,exports){ module.exports = Polygon; var util = require('util'); @@ -76599,7 +77195,7 @@ Polygon.prototype.toGeoJSON = function (options) { return geoJSON; }; -},{"./binarywriter":294,"./geometry":295,"./point":301,"./types":303,"util":291}],303:[function(require,module,exports){ +},{"./binarywriter":298,"./geometry":299,"./point":305,"./types":307,"util":294}],307:[function(require,module,exports){ module.exports = { wkt: { Point: 'POINT', @@ -76630,7 +77226,7 @@ module.exports = { } }; -},{}],304:[function(require,module,exports){ +},{}],308:[function(require,module,exports){ module.exports = WktParser; var Types = require('./types'); @@ -76756,7 +77352,7 @@ WktParser.prototype.skipWhitespaces = function () { this.position++; }; -},{"./point":301,"./types":303}],305:[function(require,module,exports){ +},{"./point":305,"./types":307}],309:[function(require,module,exports){ exports.Types = require('./types'); exports.Geometry = require('./geometry'); exports.Point = require('./point'); @@ -76766,7 +77362,7 @@ exports.MultiPoint = require('./multipoint'); exports.MultiLineString = require('./multilinestring'); exports.MultiPolygon = require('./multipolygon'); exports.GeometryCollection = require('./geometrycollection'); -},{"./geometry":295,"./geometrycollection":296,"./linestring":297,"./multilinestring":298,"./multipoint":299,"./multipolygon":300,"./point":301,"./polygon":302,"./types":303}],306:[function(require,module,exports){ +},{"./geometry":299,"./geometrycollection":300,"./linestring":301,"./multilinestring":302,"./multipoint":303,"./multipolygon":304,"./point":305,"./polygon":306,"./types":307}],310:[function(require,module,exports){ module.exports = { encode: function (value) { return (value << 1) ^ (value >> 31); @@ -76776,7 +77372,7 @@ module.exports = { } }; -},{}],307:[function(require,module,exports){ +},{}],311:[function(require,module,exports){ (function (root) { // Store setTimeout reference so promise-polyfill will be unaffected by @@ -77011,87 +77607,4 @@ module.exports = { })(this); -},{}],308:[function(require,module,exports){ -var bundleFn = arguments[3]; -var sources = arguments[4]; -var cache = arguments[5]; - -var stringify = JSON.stringify; - -module.exports = function (fn, options) { - var wkey; - var cacheKeys = Object.keys(cache); - - for (var i = 0, l = cacheKeys.length; i < l; i++) { - var key = cacheKeys[i]; - var exp = cache[key].exports; - // Using babel as a transpiler to use esmodule, the export will always - // be an object with the default export as a property of it. To ensure - // the existing api and babel esmodule exports are both supported we - // check for both - if (exp === fn || exp && exp.default === fn) { - wkey = key; - break; - } - } - - if (!wkey) { - wkey = Math.floor(Math.pow(16, 8) * Math.random()).toString(16); - var wcache = {}; - for (var i = 0, l = cacheKeys.length; i < l; i++) { - var key = cacheKeys[i]; - wcache[key] = key; - } - sources[wkey] = [ - Function(['require','module','exports'], '(' + fn + ')(self)'), - wcache - ]; - } - var skey = Math.floor(Math.pow(16, 8) * Math.random()).toString(16); - - var scache = {}; scache[wkey] = wkey; - sources[skey] = [ - Function(['require'], ( - // try to call default if defined to also support babel esmodule - // exports - 'var f = require(' + stringify(wkey) + ');' + - '(f.default ? f.default : f)(self);' - )), - scache - ]; - - var workerSources = {}; - resolveSources(skey); - - function resolveSources(key) { - workerSources[key] = true; - - for (var depPath in sources[key][1]) { - var depKey = sources[key][1][depPath]; - if (!workerSources[depKey]) { - resolveSources(depKey); - } - } - } - - var src = '(' + bundleFn + ')({' - + Object.keys(workerSources).map(function (key) { - return stringify(key) + ':[' - + sources[key][0] - + ',' + stringify(sources[key][1]) + ']' - ; - }).join(',') - + '},{},[' + stringify(skey) + '])' - ; - - var URL = window.URL || window.webkitURL || window.mozURL || window.msURL; - - var blob = new Blob([src], { type: 'text/javascript' }); - if (options && options.bare) { return blob; } - var workerUrl = URL.createObjectURL(blob); - var worker = new Worker(workerUrl); - worker.objectURL = workerUrl; - return worker; -}; - },{}]},{},[1]); diff --git a/karma.conf.js b/karma.conf.js index 64cc2b7c6..e44d4b76e 100644 --- a/karma.conf.js +++ b/karma.conf.js @@ -8,13 +8,14 @@ module.exports = function(config) { config.set({ plugins: [ - 'karma-coverage', - 'karma-mocha', - 'karma-chai', - 'karma-phantomjs-launcher', - 'karma-browserify', - 'karma-spec-reporter', - 'karma-ng-html2js-preprocessor' + "babel-plugin-transform-es2015-arrow-functions", + "karma-spec-reporter", + "karma-coverage", + "karma-mocha", + "karma-chai", + "karma-chrome-launcher", + "karma-phantomjs-launcher", + "karma-browserify" ], basePath: '', @@ -22,29 +23,24 @@ module.exports = function(config) { files: [ 'test/test.js', - 'test/**/*.js', - '**/*.html' + 'test/index.html' ], proxies: { '/node_modules/':'node_modules/' }, - exclude: ['node_modules'], - browserify: { watch: true, debug: true, - transform: [istanbul({ - ignore: [ 'test/**/*', '**/vendor/**/*'] - })] + transform: [["babelify", { "presets": ["env", "es2015"], "plugins": ["transform-es2015-arrow-functions"] }]] }, preprocessors: { - 'app/**/*.js': ['coverage'], - 'test/**/*.js': ['browserify'], - '**/*.html': ['ng-html2js'] + 'node_modules/file-type/index.js': ['browserify'], + 'test/test.js': ['browserify'] }, + reporters: ['spec', 'coverage'], coverageReporter: { @@ -57,16 +53,11 @@ module.exports = function(config) { ] }, - ngHtml2JsPreprocessor: { - stripPrefix: 'public/', - moduleName: 'ngTemplates' - }, - port: 9876, colors: true, - logLevel: config.LOG_INFO, + logLevel: config.LOG_DEBUG, autoWatch: false, - browsers: ['PhantomJS'], + browsers: ['Chrome'], singleRun: true, concurrency: Infinity }); diff --git a/lib/tiles/creator/canvas.js b/lib/tiles/creator/canvas.js index 03faa44b7..1a3be44e5 100644 --- a/lib/tiles/creator/canvas.js +++ b/lib/tiles/creator/canvas.js @@ -9,7 +9,6 @@ var TileCreator = require('./index').TileCreator function CanvasTileCreator(width, height, tileMatrix, tileMatrixSet, tileBoundingBox, srs, projectionTo, canvas, callback) { TileCreator.apply(this, arguments); - this.canvas = canvas || document.createElement('canvas'); this.canvas.width = width; this.canvas.height = height; diff --git a/lib/tiles/creator/index.js b/lib/tiles/creator/index.js index 8626b6a5f..901a9a438 100644 --- a/lib/tiles/creator/index.js +++ b/lib/tiles/creator/index.js @@ -4,7 +4,9 @@ var proj4 = require('proj4') var TileBoundingBoxUtils = require('../tileBoundingBoxUtils'); module.exports.initialize = function(width, height, tileMatrix, tileMatrixSet, tileBoundingBox, srs, projectionTo, canvas, callback) { - if (typeof(process) !== 'undefined' && process.version) { + var isPhantom = !!(typeof window != 'undefined' && window.callPhantom && window._phantom); + var isNode = typeof(process) !== 'undefined' && process.version; + if (isNode && !isPhantom) { var LwipTileCreator = require('./lwip'); new LwipTileCreator(width, height, tileMatrix, tileMatrixSet, tileBoundingBox, srs, projectionTo, callback); } else { diff --git a/package.json b/package.json index 9e1126080..282fb28f9 100644 --- a/package.json +++ b/package.json @@ -39,27 +39,18 @@ "wkx": "^0.4.1" }, "devDependencies": { + "babel-polyfill": "^6.23.0", "browserify": "^14.1.0", "browserify-css": "^0.10.0", - "browserify-istanbul": "^2.0.0", "browserify-shim": "^3.8.12", "chai": "^3.5.0", + "fs-extra": "^2.1.2", "image-diff": "^1.5.1", "imagediff": "^1.0.8", "ink-docstrap": "^1.1.4", "istanbul": "^0.4.2", "jsdoc": "^3.4.0", - "karma": "^0.13.22", - "karma-browserify": "^5.0.3", - "karma-chai": "^0.1.0", - "karma-chrome-launcher": "^0.2.2", - "karma-coverage": "^0.5.5", - "karma-mocha": "^0.2.1", - "karma-ng-html2js-preprocessor": "^0.2.0", - "karma-phantomjs-launcher": "^1.0.0", - "karma-spec-reporter": "0.0.23", "mocha": "^3.0.2", - "testling": "^1.7.1", "watchify": "^3.7.0", "webworkify": "^1.1.0" }, @@ -85,10 +76,10 @@ "scripts": { "test": "mocha", "coverage": "istanbul cover _mocha", - "mocha": "mocha", - "karma": "karma start", - "btest": "browserify ./test/test.js --standalone tests --exclude sqlite3 --exclude lwip --exclude inquirer -o bundle/test.bundle.js", - "btestwatch": "watchify ./test/test.js -d -v --standalone tests --exclude sqlite3 --exclude lwip --exclude inquirer -o bundle/test.bundle.js", + "build-browser-test": "browserify ./test/test.js --standalone tests --exclude sqlite3 --exclude lwip --exclude inquirer -o bundle/test.bundle.js -d", + "prebrowser-test": "browserify -t browserify-istanbul ./test/test.js --standalone tests --exclude sqlite3 --exclude lwip --exclude inquirer -o bundle/test.bundle.js -d", + "browser-test": "./test/cli", + "postbrowser-test": "istanbul report --dir coverage/browser --root coverage/browser lcov", "predoc": "rm -rf docs/jsdoc/*", "doc": "jsdoc --verbose -c jsdoc.conf", "build": "browserify -t browserify-css geopackage.js --standalone geopackage --exclude sqlite3 --exclude lwip --exclude inquirer -o static/geopackage.js", diff --git a/phantom_hooks.js b/phantom_hooks.js new file mode 100644 index 000000000..8adc654bd --- /dev/null +++ b/phantom_hooks.js @@ -0,0 +1,24 @@ + +module.exports = { + afterEnd: function(runner) { + var fs = require('fs'); + + var coverage = runner.page.evaluate(function() { + return window.__coverage__; + }); + + if (coverage) { + console.log('Writing coverage to coverage/browser/coverage.json'); + // fs.mkdir(path.join('.', 'coverage'), function(err) { + // console.log('arguments', arguments); + // console.log('made coverage directory'); + // fs.mkdirSync('./coverage/browser'); + fs.write('./coverage/browser/coverage.json', JSON.stringify(coverage), 'w', function(err) { + console.log('arguments', arguments); + }); + // }); + } else { + console.log('No coverage data generated'); + } + } +}; diff --git a/test/cli b/test/cli new file mode 100755 index 000000000..df5bc51a3 --- /dev/null +++ b/test/cli @@ -0,0 +1,26 @@ +#!/usr/bin/env node + +var spawn = require('child_process').spawn; +var path = require('path'); + +var child = spawn('node_modules/.bin/mocha-phantomjs', [ + 'http://localhost:8080/test/index.html', + '-p', path.join('.', 'node_modules', '.bin', 'phantomjs'), + '--timeout', '25000', + '--hooks', 'phantom_hooks.js' +]); + +child.stdout.on('data', function(data) { + console.log('stdout: ' + data); +}); + +child.stderr.on('data', function(data) { + console.log('stderr: ' + data); +}); + +child.on('close', function (code) { + console.log('Mocha process exited with code ' + code); + if (code > 0) { + process.exit(1); + } +}); diff --git a/test/fixtures/featuretiles/0_0_0.png b/test/fixtures/featuretiles/0_0_0.png new file mode 100644 index 000000000..ab434c4cd Binary files /dev/null and b/test/fixtures/featuretiles/0_0_0.png differ diff --git a/test/fixtures/featuretiles/5_8_12.png b/test/fixtures/featuretiles/5_8_12.png new file mode 100644 index 000000000..972cf3f2d Binary files /dev/null and b/test/fixtures/featuretiles/5_8_12.png differ diff --git a/test/fixtures/testSetup.js b/test/fixtures/testSetup.js index c915017e5..f83d1cd65 100644 --- a/test/fixtures/testSetup.js +++ b/test/fixtures/testSetup.js @@ -145,13 +145,6 @@ module.exports.diffImagesWithDimensions = function(actualTile, expectedTilePath, currentTag.appendChild(expected); currentTag.appendChild(diffCanvas); } - delete ctx; - delete ctx2; - delete image; - delete image2; - delete expected; - delete actual; - callback(null, equal); } image2.src = 'data:image/png;base64,' + expectedBase64; diff --git a/test/index.html b/test/index.html index 4a55fe0d0..8bedd2ea7 100644 --- a/test/index.html +++ b/test/index.html @@ -15,7 +15,11 @@ diff --git a/test/lib/issues/68.js b/test/lib/issues/issue68.js similarity index 64% rename from test/lib/issues/68.js rename to test/lib/issues/issue68.js index 8db79620b..1ff11b07c 100644 --- a/test/lib/issues/68.js +++ b/test/lib/issues/issue68.js @@ -3,16 +3,17 @@ var GeoPackage = require('../../../lib/geoPackage') , GeoPackageTileRetriever = require('../../../lib/tiles/retriever'); var path = require('path') -, should = require('chai').should() -, proj4 = require('proj4'); + , should = require('chai').should(); +// , proj4 = require('proj4'); describe('Tests for issue 68', function() { it('should get a tile', function(done) { - this.timeout(0); + + // this.timeout(5000); GeoPackageConnection.connect(path.join(__dirname, '..', '..', 'fixtures', 'issue_68.gpkg'), function(err, connection) { var geoPackage = new GeoPackage('', '', connection); - geoPackage.getTileTables(function(err, tables) { + geoPackage.getTileTables(function(err, tables) { tables[0].should.be.equal('package_tiles'); geoPackage.getTileDaoWithTableName('package_tiles', function(err, tileDao) { if (err) return done(err); @@ -20,14 +21,15 @@ describe('Tests for issue 68', function() { geoPackage.getInfoForTable(tileDao, function(err, info) { if (err) return done(err); should.exist(info); - var gpr = new GeoPackageTileRetriever(tileDao, 256, 256); - gpr.getTile(192,401,10,function(err, tile) { - if (err) return done(err); - should.exist(tile); - delete tile; - geoPackage.close(); - done(); - }); + done(); + // var gpr = new GeoPackageTileRetriever(tileDao, 256, 256); + // gpr.getTile(192,401,10,function(err, tile) { + // if (err) return done(err); + // should.exist(tile); + // delete tile; + // geoPackage.close(); + // done(); + // }); }); }); }); diff --git a/test/lib/tiles/testGeopackageTileRetriever.js b/test/lib/tiles/testGeopackageTileRetriever.js index f1e38c908..0247128c5 100644 --- a/test/lib/tiles/testGeopackageTileRetriever.js +++ b/test/lib/tiles/testGeopackageTileRetriever.js @@ -79,7 +79,6 @@ describe('GeoPackage Tile Retriever tests', function() { testSetup.diffImages(tile, path.join(__dirname, '..', '..', 'fixtures', 'tiles', zoom.toString(), xTile.toString(), yTile.toString()+'.png'), function(err, equal) { console.log(path.join(__dirname, '..', '..', 'fixtures', 'tiles', zoom.toString(), xTile.toString(), yTile.toString()+'.png') + ' passes?', equal); equal.should.be.equal(true); - delete tile; yDone(); }); }); @@ -201,7 +200,6 @@ describe('GeoPackage Tile Retriever tests', function() { } testSetup.diffImages(tile, expectedPath, function (err, imagesAreSame) { imagesAreSame.should.be.equal(true); - delete tile; done(err); }); }); @@ -213,7 +211,6 @@ describe('GeoPackage Tile Retriever tests', function() { gpr.getTile(0, 4, 4, function(err, tile) { testSetup.diffImagesWithDimensions(tile, path.join(__dirname, '..','..','fixtures','tiles','450tile.png'), 450, 450, function (err, imagesAreSame) { imagesAreSame.should.be.equal(true); - delete tile; done(err); }); }); @@ -259,7 +256,6 @@ describe('GeoPackage Tile Retriever tests', function() { } testSetup.diffImages(tile, expectedPath, function (err, imagesAreSame) { imagesAreSame.should.be.equal(true); - delete tile; done(err); }); }); diff --git a/test/test.js b/test/test.js index d7729874f..014671f06 100644 --- a/test/test.js +++ b/test/test.js @@ -1,3 +1,5 @@ +var polyfill = require('babel-polyfill'); + require('chai').should(); require('./lib/core/contents/testContents'); @@ -28,6 +30,10 @@ require('./lib/testGeoPackageCreate'); require('./lib/testGeoPackageManager'); require('./lib/testGeoPackageManagerCreate'); require('./lib/testTileCreate'); +require('./lib/issues/issue68.js'); +require('./lib/tiles/features/testFeatureTiles'); +require('./lib/extension/index/testFeatureTableIndex'); +require('./lib/extension/testExtensionDao'); describe('Array', function() { describe('#indexOf()', function() {